Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/Makefile.kmk	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/Makefile.kmk	(revision 16410)
@@ -0,0 +1,206 @@
+# $Id$
+## @file
+# Makefile for the Wine D3D related dlls for VirtualBox.
+#
+
+#
+# Copyright (C) 2009 Sun Microsystems, Inc.
+#
+# This file is part of VirtualBox Open Source Edition (OSE), as
+# available from http://www.virtualbox.org. This file is free software;
+# you can redistribute it and/or modify it under the terms of the GNU
+# General Public License (GPL) as published by the Free Software
+# Foundation, in version 2 as it comes in the "COPYING" file of the
+# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
+# Clara, CA 95054 USA or visit http://www.sun.com if you need
+# additional information or have any questions.
+#
+
+
+SUB_DEPTH = ../../../../../..
+include $(KBUILD_PATH)/subheader.kmk
+
+DLLS += libWine
+
+libWine_TEMPLATE     = VBOXGUESTR3NPDLL
+libWine_DEFS         = __WINESRC__ WINE_UNICODE_API="" _REENTRANT WINE_NOWINSOCK USE_WIN32_OPENGL __i386__ \
+    DLLDIR=\"\" \
+    BINDIR=\"\" \
+    LIB_TO_BINDIR=\"\" \
+    LIB_TO_DLLDIR=\"\" \
+    BIN_TO_DLLDIR=\"\" \
+    LIB_TO_DATADIR=\"\" \
+    BIN_TO_DATADIR=\"\"
+libWine_INCS         := $(PATH_SUB_CURRENT)/include
+libWine_SOURCES      := \
+    libWine/wine.def \
+    libWine/casemap.c \
+    libWine/collation.c \
+    libWine/compose.c \
+    libWine/config.c \
+    libWine/cptable.c \
+    libWine/debug.c \
+    libWine/fold.c \
+    libWine/ldt.c \
+    libWine/loader.c \
+    libWine/mbtowc.c \
+    libWine/mmap.c \
+    libWine/port.c \
+    libWine/sortkey.c \
+    libWine/string.c \
+    libWine/utf8.c \
+    libWine/wctomb.c \
+    libWine/wctype.c \
+    libWine/c_037.c \
+    libWine/c_424.c \
+    libWine/c_437.c \
+    libWine/c_500.c \
+    libWine/c_737.c \
+    libWine/c_775.c \
+    libWine/c_850.c \
+    libWine/c_852.c \
+    libWine/c_855.c \
+    libWine/c_856.c \
+    libWine/c_857.c \
+    libWine/c_860.c \
+    libWine/c_861.c \
+    libWine/c_862.c \
+    libWine/c_863.c \
+    libWine/c_864.c \
+    libWine/c_865.c \
+    libWine/c_866.c \
+    libWine/c_869.c \
+    libWine/c_874.c \
+    libWine/c_875.c \
+    libWine/c_878.c \
+    libWine/c_932.c \
+    libWine/c_936.c \
+    libWine/c_949.c \
+    libWine/c_950.c \
+    libWine/c_1006.c \
+    libWine/c_1026.c \
+    libWine/c_1250.c \
+    libWine/c_1251.c \
+    libWine/c_1252.c \
+    libWine/c_1253.c \
+    libWine/c_1254.c \
+    libWine/c_1255.c \
+    libWine/c_1256.c \
+    libWine/c_1257.c \
+    libWine/c_1258.c \
+    libWine/c_1361.c \
+    libWine/c_10000.c \
+    libWine/c_10006.c \
+    libWine/c_10007.c \
+    libWine/c_10029.c \
+    libWine/c_10079.c \
+    libWine/c_10081.c \
+    libWine/c_20127.c \
+    libWine/c_20866.c \
+    libWine/c_20932.c \
+    libWine/c_21866.c \
+    libWine/c_28591.c \
+    libWine/c_28592.c \
+    libWine/c_28593.c \
+    libWine/c_28594.c \
+    libWine/c_28595.c \
+    libWine/c_28596.c \
+    libWine/c_28597.c \
+    libWine/c_28598.c \
+    libWine/c_28599.c \
+    libWine/c_28600.c \
+    libWine/c_28603.c \
+    libWine/c_28604.c \
+    libWine/c_28605.c \
+    libWine/c_28606.c \
+    libWine/version.c
+
+DLLS += wined3d
+
+wined3d_TEMPLATE     = VBOXGUESTR3NPDLL
+wined3d_DEFS         = __WINESRC__ WINE_UNICODE_API="" _REENTRANT WINE_NOWINSOCK USE_WIN32_OPENGL __i386__ _USE_MATH_DEFINES\
+    DLLDIR=\"\" \
+    BINDIR=\"\" \
+    LIB_TO_BINDIR=\"\" \
+    LIB_TO_DLLDIR=\"\" \
+    BIN_TO_DLLDIR=\"\" \
+    LIB_TO_DATADIR=\"\" \
+    BIN_TO_DATADIR=\"\"
+wined3d_INCS         := $(PATH_SUB_CURRENT)/include
+wined3d_SOURCES      := \
+    wined3d/arb_program_shader.c \
+    wined3d/ati_fragment_shader.c \
+    wined3d/baseshader.c \
+    wined3d/basetexture.c \
+    wined3d/clipper.c \
+    wined3d/context.c \
+    wined3d/cubetexture.c \
+    wined3d/device.c \
+    wined3d/directx.c \
+    wined3d/drawprim.c \
+    wined3d/glsl_shader.c \
+    wined3d/indexbuffer.c \
+    wined3d/nvidia_texture_shader.c \
+    wined3d/palette.c \
+    wined3d/pixelshader.c \
+    wined3d/query.c \
+    wined3d/resource.c \
+    wined3d/state.c \
+    wined3d/stateblock.c \
+    wined3d/surface_base.c \
+    wined3d/surface.c \
+    wined3d/surface_gdi.c \
+    wined3d/swapchain.c \
+    wined3d/swapchain_gdi.c \
+    wined3d/swapchain_base.c \
+    wined3d/texture.c \
+    wined3d/utils.c \
+    wined3d/vertexbuffer.c \
+    wined3d/vertexdeclaration.c \
+    wined3d/vertexshader.c \
+    wined3d/volume.c \
+    wined3d/volumetexture.c \
+    wined3d/wined3d_main.c \
+    wined3d/wined3d.def
+wined3d_LIBS = \
+    $(PATH_LIB)/libWine$(VBOX_SUFF_LIB)
+
+DLLS += d3d8
+
+d3d8_TEMPLATE     = VBOXGUESTR3NPDLL
+d3d8_DEFS         = __WINESRC__ WINE_UNICODE_API="" _REENTRANT WINE_NOWINSOCK USE_WIN32_OPENGL __i386__ _USE_MATH_DEFINES\
+    DLLDIR=\"\" \
+    BINDIR=\"\" \
+    LIB_TO_BINDIR=\"\" \
+    LIB_TO_DLLDIR=\"\" \
+    BIN_TO_DLLDIR=\"\" \
+    LIB_TO_DATADIR=\"\" \
+    BIN_TO_DATADIR=\"\"
+d3d8_INCS         := $(PATH_SUB_CURRENT)/include
+d3d8_SOURCES      := \
+    d3d8/basetexture.c \
+    d3d8/cubetexture.c \
+    d3d8/d3d8_main.c \
+    d3d8/device.c \
+    d3d8/directx.c \
+    d3d8/indexbuffer.c \
+    d3d8/pixelshader.c \
+    d3d8/resource.c \
+    d3d8/stateblock.c \
+    d3d8/surface.c \
+    d3d8/swapchain.c \
+    d3d8/texture.c \
+    d3d8/vertexbuffer.c \
+    d3d8/vertexdeclaration.c \
+    d3d8/vertexshader.c \
+    d3d8/volume.c \
+    d3d8/volumetexture.c \
+    d3d8/d3d8.def
+d3d8_LIBS = \
+    $(PATH_LIB)/libWine$(VBOX_SUFF_LIB) \
+    $(PATH_LIB)/wined3d$(VBOX_SUFF_LIB)
+
+include $(KBUILD_PATH)/subfooter.kmk
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/basetexture.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/basetexture.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/basetexture.c	(revision 16410)
@@ -0,0 +1,164 @@
+/*
+ * IDirect3DBaseTexture8 implementation
+ *
+ * Copyright 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d8_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d8);
+
+/* IDirect3DBaseTexture8 IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DBaseTexture8Impl_QueryInterface(LPDIRECT3DBASETEXTURE8 iface, REFIID riid, LPVOID *ppobj) {
+    IDirect3DBaseTexture8Impl *This = (IDirect3DBaseTexture8Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DResource8)
+        || IsEqualGUID(riid, &IID_IDirect3DBaseTexture8)) {
+        IUnknown_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DBaseTexture8Impl_AddRef(LPDIRECT3DBASETEXTURE8 iface) {
+    IDirect3DBaseTexture8Impl *This = (IDirect3DBaseTexture8Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+    return ref;
+}
+
+static ULONG WINAPI IDirect3DBaseTexture8Impl_Release(LPDIRECT3DBASETEXTURE8 iface) {
+    IDirect3DBaseTexture8Impl *This = (IDirect3DBaseTexture8Impl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+        IWineD3DBaseTexture_Release(This->wineD3DBaseTexture);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+
+    return ref;
+}
+
+/* IDirect3DBaseTexture8 IDirect3DResource8 Interface follow: */
+static HRESULT WINAPI IDirect3DBaseTexture8Impl_GetDevice(LPDIRECT3DBASETEXTURE8 iface, IDirect3DDevice8 **ppDevice) {
+    IDirect3DBaseTexture8Impl *This = (IDirect3DBaseTexture8Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+
+    return IDirect3DResource8Impl_GetDevice((LPDIRECT3DRESOURCE8) This, ppDevice);
+}
+
+static HRESULT WINAPI IDirect3DBaseTexture8Impl_SetPrivateData(LPDIRECT3DBASETEXTURE8 iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) {
+    IDirect3DBaseTexture8Impl *This = (IDirect3DBaseTexture8Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+
+    return IWineD3DBaseTexture_SetPrivateData(This->wineD3DBaseTexture, refguid, pData, SizeOfData, Flags);
+}
+
+static HRESULT WINAPI IDirect3DBaseTexture8Impl_GetPrivateData(LPDIRECT3DBASETEXTURE8 iface, REFGUID refguid, void* pData, DWORD* pSizeOfData) {
+    IDirect3DBaseTexture8Impl *This = (IDirect3DBaseTexture8Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+
+    return IWineD3DBaseTexture_GetPrivateData(This->wineD3DBaseTexture, refguid, pData, pSizeOfData);
+}
+
+static HRESULT WINAPI IDirect3DBaseTexture8Impl_FreePrivateData(LPDIRECT3DBASETEXTURE8 iface, REFGUID refguid) {
+    IDirect3DBaseTexture8Impl *This = (IDirect3DBaseTexture8Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+
+    return IWineD3DBaseTexture_FreePrivateData(This->wineD3DBaseTexture, refguid);
+}
+
+static DWORD WINAPI IDirect3DBaseTexture8Impl_SetPriority(LPDIRECT3DBASETEXTURE8 iface, DWORD PriorityNew) {
+    IDirect3DBaseTexture8Impl *This = (IDirect3DBaseTexture8Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+
+    return IWineD3DBaseTexture_SetPriority(This->wineD3DBaseTexture, PriorityNew);
+}
+
+static DWORD WINAPI IDirect3DBaseTexture8Impl_GetPriority(LPDIRECT3DBASETEXTURE8 iface) {
+    IDirect3DBaseTexture8Impl *This = (IDirect3DBaseTexture8Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+
+    return IWineD3DBaseTexture_GetPriority(This->wineD3DBaseTexture);
+}
+
+static void WINAPI IDirect3DBaseTexture8Impl_PreLoad(LPDIRECT3DBASETEXTURE8 iface) {
+    IDirect3DBaseTexture8Impl *This = (IDirect3DBaseTexture8Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+
+    IWineD3DBaseTexture_PreLoad(This->wineD3DBaseTexture);
+    return;
+}
+
+static D3DRESOURCETYPE WINAPI IDirect3DBaseTexture8Impl_GetType(LPDIRECT3DBASETEXTURE8 iface) {
+    IDirect3DBaseTexture8Impl *This = (IDirect3DBaseTexture8Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+
+    return IWineD3DBaseTexture_GetType(This->wineD3DBaseTexture);
+}
+
+/* IDirect3DBaseTexture8 Interface follow: */
+static DWORD WINAPI IDirect3DBaseTexture8Impl_SetLOD(LPDIRECT3DBASETEXTURE8 iface, DWORD LODNew) {
+    IDirect3DBaseTexture8Impl *This = (IDirect3DBaseTexture8Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+
+    return IWineD3DBaseTexture_SetLOD(This->wineD3DBaseTexture, LODNew);
+}
+
+static DWORD WINAPI IDirect3DBaseTexture8Impl_GetLOD(LPDIRECT3DBASETEXTURE8 iface) {
+    IDirect3DBaseTexture8Impl *This = (IDirect3DBaseTexture8Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+
+    return IWineD3DBaseTexture_GetLOD(This->wineD3DBaseTexture);
+}
+
+static DWORD WINAPI IDirect3DBaseTexture8Impl_GetLevelCount(LPDIRECT3DBASETEXTURE8 iface) {
+    IDirect3DBaseTexture8Impl *This = (IDirect3DBaseTexture8Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+
+    return IWineD3DBaseTexture_GetLevelCount(This->wineD3DBaseTexture);
+}
+
+const IDirect3DBaseTexture8Vtbl Direct3DBaseTexture8_Vtbl =
+{
+    IDirect3DBaseTexture8Impl_QueryInterface,
+    IDirect3DBaseTexture8Impl_AddRef,
+    IDirect3DBaseTexture8Impl_Release,
+    IDirect3DBaseTexture8Impl_GetDevice,
+    IDirect3DBaseTexture8Impl_SetPrivateData,
+    IDirect3DBaseTexture8Impl_GetPrivateData,
+    IDirect3DBaseTexture8Impl_FreePrivateData,
+    IDirect3DBaseTexture8Impl_SetPriority,
+    IDirect3DBaseTexture8Impl_GetPriority,
+    IDirect3DBaseTexture8Impl_PreLoad,
+    IDirect3DBaseTexture8Impl_GetType,
+
+    IDirect3DBaseTexture8Impl_SetLOD,
+    IDirect3DBaseTexture8Impl_GetLOD,
+    IDirect3DBaseTexture8Impl_GetLevelCount
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/cubetexture.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/cubetexture.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/cubetexture.c	(revision 16410)
@@ -0,0 +1,291 @@
+/*
+ * IDirect3DCubeTexture8 implementation
+ *
+ * Copyright 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d8_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d8);
+
+/* IDirect3DCubeTexture8 IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DCubeTexture8Impl_QueryInterface(LPDIRECT3DCUBETEXTURE8 iface, REFIID riid, LPVOID *ppobj) {
+    IDirect3DCubeTexture8Impl *This = (IDirect3DCubeTexture8Impl *)iface;
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DResource8)
+        || IsEqualGUID(riid, &IID_IDirect3DBaseTexture8)
+        || IsEqualGUID(riid, &IID_IDirect3DCubeTexture8)) {
+        IUnknown_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DCubeTexture8Impl_AddRef(LPDIRECT3DCUBETEXTURE8 iface) {
+    IDirect3DCubeTexture8Impl *This = (IDirect3DCubeTexture8Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+    return ref;
+}
+
+static ULONG WINAPI IDirect3DCubeTexture8Impl_Release(LPDIRECT3DCUBETEXTURE8 iface) {
+    IDirect3DCubeTexture8Impl *This = (IDirect3DCubeTexture8Impl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+        TRACE("Releasing child %p\n", This->wineD3DCubeTexture);
+        EnterCriticalSection(&d3d8_cs);
+        IWineD3DCubeTexture_Destroy(This->wineD3DCubeTexture, D3D8CB_DestroySurface);
+        LeaveCriticalSection(&d3d8_cs);
+        IUnknown_Release(This->parentDevice);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+    return ref;
+}
+
+/* IDirect3DCubeTexture8 IDirect3DResource8 Interface follow: */
+static HRESULT WINAPI IDirect3DCubeTexture8Impl_GetDevice(LPDIRECT3DCUBETEXTURE8 iface, IDirect3DDevice8 **ppDevice) {
+    IDirect3DCubeTexture8Impl *This = (IDirect3DCubeTexture8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IDirect3DResource8Impl_GetDevice((LPDIRECT3DRESOURCE8) This, ppDevice);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DCubeTexture8Impl_SetPrivateData(LPDIRECT3DCUBETEXTURE8 iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) {
+    IDirect3DCubeTexture8Impl *This = (IDirect3DCubeTexture8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DCubeTexture_SetPrivateData(This->wineD3DCubeTexture,refguid,pData,SizeOfData,Flags);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DCubeTexture8Impl_GetPrivateData(LPDIRECT3DCUBETEXTURE8 iface, REFGUID refguid, void *pData, DWORD *pSizeOfData) {
+    IDirect3DCubeTexture8Impl *This = (IDirect3DCubeTexture8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DCubeTexture_GetPrivateData(This->wineD3DCubeTexture,refguid,pData,pSizeOfData);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DCubeTexture8Impl_FreePrivateData(LPDIRECT3DCUBETEXTURE8 iface, REFGUID refguid) {
+    IDirect3DCubeTexture8Impl *This = (IDirect3DCubeTexture8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DCubeTexture_FreePrivateData(This->wineD3DCubeTexture,refguid);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static DWORD WINAPI IDirect3DCubeTexture8Impl_SetPriority(LPDIRECT3DCUBETEXTURE8 iface, DWORD PriorityNew) {
+    IDirect3DCubeTexture8Impl *This = (IDirect3DCubeTexture8Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    ret = IWineD3DCubeTexture_SetPriority(This->wineD3DCubeTexture, PriorityNew);
+    LeaveCriticalSection(&d3d8_cs);
+    return ret;
+}
+
+static DWORD WINAPI IDirect3DCubeTexture8Impl_GetPriority(LPDIRECT3DCUBETEXTURE8 iface) {
+    IDirect3DCubeTexture8Impl *This = (IDirect3DCubeTexture8Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    ret =  IWineD3DCubeTexture_GetPriority(This->wineD3DCubeTexture);
+    LeaveCriticalSection(&d3d8_cs);
+    return ret;
+}
+
+static void WINAPI IDirect3DCubeTexture8Impl_PreLoad(LPDIRECT3DCUBETEXTURE8 iface) {
+    IDirect3DCubeTexture8Impl *This = (IDirect3DCubeTexture8Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    IWineD3DCubeTexture_PreLoad(This->wineD3DCubeTexture);
+    LeaveCriticalSection(&d3d8_cs);
+}
+
+static D3DRESOURCETYPE WINAPI IDirect3DCubeTexture8Impl_GetType(LPDIRECT3DCUBETEXTURE8 iface) {
+    IDirect3DCubeTexture8Impl *This = (IDirect3DCubeTexture8Impl *)iface;
+    D3DRESOURCETYPE type;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    type = IWineD3DCubeTexture_GetType(This->wineD3DCubeTexture);
+    LeaveCriticalSection(&d3d8_cs);
+    return type;
+}
+
+/* IDirect3DCubeTexture8 IDirect3DBaseTexture8 Interface follow: */
+static DWORD WINAPI IDirect3DCubeTexture8Impl_SetLOD(LPDIRECT3DCUBETEXTURE8 iface, DWORD LODNew) {
+    IDirect3DCubeTexture8Impl *This = (IDirect3DCubeTexture8Impl *)iface;
+    DWORD lod;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    lod = IWineD3DCubeTexture_SetLOD(This->wineD3DCubeTexture, LODNew);
+    LeaveCriticalSection(&d3d8_cs);
+    return lod;
+}
+
+static DWORD WINAPI IDirect3DCubeTexture8Impl_GetLOD(LPDIRECT3DCUBETEXTURE8 iface) {
+    IDirect3DCubeTexture8Impl *This = (IDirect3DCubeTexture8Impl *)iface;
+    DWORD lod;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    lod = IWineD3DCubeTexture_GetLOD((LPDIRECT3DBASETEXTURE8) This);
+    LeaveCriticalSection(&d3d8_cs);
+    return lod;
+}
+
+static DWORD WINAPI IDirect3DCubeTexture8Impl_GetLevelCount(LPDIRECT3DCUBETEXTURE8 iface) {
+    IDirect3DCubeTexture8Impl *This = (IDirect3DCubeTexture8Impl *)iface;
+    DWORD cnt;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    cnt = IWineD3DCubeTexture_GetLevelCount(This->wineD3DCubeTexture);
+    LeaveCriticalSection(&d3d8_cs);
+    return cnt;
+}
+
+/* IDirect3DCubeTexture8 Interface follow: */
+static HRESULT WINAPI IDirect3DCubeTexture8Impl_GetLevelDesc(LPDIRECT3DCUBETEXTURE8 iface, UINT Level, D3DSURFACE_DESC *pDesc) {
+    IDirect3DCubeTexture8Impl *This = (IDirect3DCubeTexture8Impl *)iface;
+    HRESULT hr;
+    WINED3DSURFACE_DESC    wined3ddesc;
+
+    TRACE("(%p) Relay\n", This);
+
+    /* As d3d8 and d3d9 structures differ, pass in ptrs to where data needs to go */
+    wined3ddesc.Format              = (WINED3DFORMAT *)&pDesc->Format;
+    wined3ddesc.Type                = (WINED3DRESOURCETYPE *)&pDesc->Type;
+    wined3ddesc.Usage               = &pDesc->Usage;
+    wined3ddesc.Pool                = (WINED3DPOOL *) &pDesc->Pool;
+    wined3ddesc.Size                = &pDesc->Size;
+    wined3ddesc.MultiSampleType     = (WINED3DMULTISAMPLE_TYPE *) &pDesc->MultiSampleType;
+    wined3ddesc.MultiSampleQuality  = NULL; /* DirectX9 only */
+    wined3ddesc.Width               = &pDesc->Width;
+    wined3ddesc.Height              = &pDesc->Height;
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DCubeTexture_GetLevelDesc(This->wineD3DCubeTexture, Level, &wined3ddesc);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DCubeTexture8Impl_GetCubeMapSurface(LPDIRECT3DCUBETEXTURE8 iface, D3DCUBEMAP_FACES FaceType, UINT Level, IDirect3DSurface8 **ppCubeMapSurface) {
+    IDirect3DCubeTexture8Impl *This = (IDirect3DCubeTexture8Impl *)iface;
+    HRESULT hrc = D3D_OK;
+    IWineD3DSurface *mySurface = NULL;
+
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hrc = IWineD3DCubeTexture_GetCubeMapSurface(This->wineD3DCubeTexture, (WINED3DCUBEMAP_FACES) FaceType, Level, &mySurface);
+    if (hrc == D3D_OK && NULL != ppCubeMapSurface) {
+       IWineD3DCubeTexture_GetParent(mySurface, (IUnknown **)ppCubeMapSurface);
+       IWineD3DCubeTexture_Release(mySurface);
+    }
+    LeaveCriticalSection(&d3d8_cs);
+    return hrc;
+}
+
+static HRESULT WINAPI IDirect3DCubeTexture8Impl_LockRect(LPDIRECT3DCUBETEXTURE8 iface, D3DCUBEMAP_FACES FaceType, UINT Level, D3DLOCKED_RECT* pLockedRect, CONST RECT *pRect, DWORD Flags) {
+    IDirect3DCubeTexture8Impl *This = (IDirect3DCubeTexture8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DCubeTexture_LockRect(This->wineD3DCubeTexture, (WINED3DCUBEMAP_FACES) FaceType, Level, (WINED3DLOCKED_RECT *) pLockedRect, pRect, Flags);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DCubeTexture8Impl_UnlockRect(LPDIRECT3DCUBETEXTURE8 iface, D3DCUBEMAP_FACES FaceType, UINT Level) {
+    IDirect3DCubeTexture8Impl *This = (IDirect3DCubeTexture8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DCubeTexture_UnlockRect(This->wineD3DCubeTexture, (WINED3DCUBEMAP_FACES) FaceType, Level);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DCubeTexture8Impl_AddDirtyRect(LPDIRECT3DCUBETEXTURE8 iface, D3DCUBEMAP_FACES FaceType, CONST RECT *pDirtyRect) {
+    IDirect3DCubeTexture8Impl *This = (IDirect3DCubeTexture8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DCubeTexture_AddDirtyRect(This->wineD3DCubeTexture, (WINED3DCUBEMAP_FACES) FaceType, pDirtyRect);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+
+const IDirect3DCubeTexture8Vtbl Direct3DCubeTexture8_Vtbl =
+{
+    /* IUnknown */
+    IDirect3DCubeTexture8Impl_QueryInterface,
+    IDirect3DCubeTexture8Impl_AddRef,
+    IDirect3DCubeTexture8Impl_Release,
+    /* IDirect3DResource8 */
+    IDirect3DCubeTexture8Impl_GetDevice,
+    IDirect3DCubeTexture8Impl_SetPrivateData,
+    IDirect3DCubeTexture8Impl_GetPrivateData,
+    IDirect3DCubeTexture8Impl_FreePrivateData,
+    IDirect3DCubeTexture8Impl_SetPriority,
+    IDirect3DCubeTexture8Impl_GetPriority,
+    IDirect3DCubeTexture8Impl_PreLoad,
+    IDirect3DCubeTexture8Impl_GetType,
+    /* IDirect3DBaseTexture8 */
+    IDirect3DCubeTexture8Impl_SetLOD,
+    IDirect3DCubeTexture8Impl_GetLOD,
+    IDirect3DCubeTexture8Impl_GetLevelCount,
+    /* IDirect3DCubeTexture8 */
+    IDirect3DCubeTexture8Impl_GetLevelDesc,
+    IDirect3DCubeTexture8Impl_GetCubeMapSurface,
+    IDirect3DCubeTexture8Impl_LockRect,
+    IDirect3DCubeTexture8Impl_UnlockRect,
+    IDirect3DCubeTexture8Impl_AddDirtyRect
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/d3d8.def
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/d3d8.def	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/d3d8.def	(revision 16410)
@@ -0,0 +1,10 @@
+; File generated automatically from ../../../dlls/d3d8/d3d8.spec; do not edit!
+
+LIBRARY d3d8.dll
+
+EXPORTS
+  D3D8GetSWInfo
+  DebugSetMute
+  Direct3DCreate8
+  ValidatePixelShader
+  ValidateVertexShader
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/d3d8.spec
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/d3d8.spec	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/d3d8.spec	(revision 16410)
@@ -0,0 +1,5 @@
+@ stdcall D3D8GetSWInfo()
+@ stdcall DebugSetMute()
+@ stdcall Direct3DCreate8(long)
+@ stdcall ValidatePixelShader(ptr long long ptr)
+@ stdcall ValidateVertexShader(ptr ptr ptr long ptr)
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/d3d8_main.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/d3d8_main.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/d3d8_main.c	(revision 16410)
@@ -0,0 +1,140 @@
+/*
+ * Direct3D 8
+ *
+ * Copyright 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#include "config.h"
+#include "initguid.h"
+#include "d3d8_private.h"
+#include "wine/debug.h"
+
+static CRITICAL_SECTION_DEBUG d3d8_cs_debug =
+{
+    0, 0, &d3d8_cs,
+    { &d3d8_cs_debug.ProcessLocksList,
+      &d3d8_cs_debug.ProcessLocksList },
+    0, 0, { (DWORD_PTR)(__FILE__ ": d3d8_cs") }
+};
+CRITICAL_SECTION d3d8_cs = { &d3d8_cs_debug, -1, 0, 0, 0, 0 };
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d8);
+
+HRESULT WINAPI D3D8GetSWInfo(void) {
+    FIXME("(void): stub\n");
+    return 0;
+}
+
+void WINAPI DebugSetMute(void) {
+    /* nothing to do */
+}
+
+IDirect3D8* WINAPI Direct3DCreate8(UINT SDKVersion) {
+    IDirect3D8Impl* object;
+    TRACE("SDKVersion = %x\n", SDKVersion);
+
+    EnterCriticalSection(&d3d8_cs);
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3D8Impl));
+
+    object->lpVtbl = &Direct3D8_Vtbl;
+    object->ref = 1;
+    object->WineD3D = WineDirect3DCreate(8, (IUnknown *)object);
+
+    TRACE("Created Direct3D object @ %p, WineObj @ %p\n", object, object->WineD3D);
+    LeaveCriticalSection(&d3d8_cs);
+
+    if (!object->WineD3D)
+    {
+        HeapFree( GetProcessHeap(), 0, object );
+        object = NULL;
+    }
+    return (IDirect3D8*) object;
+}
+
+/* At process attach */
+BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv)
+{
+    TRACE("fdwReason=%d\n", fdwReason);
+    if (fdwReason == DLL_PROCESS_ATTACH)
+        DisableThreadLibraryCalls(hInstDLL);
+
+    return TRUE;
+}
+
+/***********************************************************************
+ *		ValidateVertexShader (D3D8.@)
+ *
+ * I've seen reserved1 and reserved2 always passed as 0's
+ * bool seems always passed as 0 or 1, but other values work as well.... 
+ * toto       result?
+ */
+HRESULT WINAPI ValidateVertexShader(DWORD* vertexshader, DWORD* reserved1, DWORD* reserved2, BOOL bool, DWORD* toto)
+{ 
+  HRESULT ret;
+  FIXME("(%p %p %p %d %p): stub\n", vertexshader, reserved1, reserved2, bool, toto);
+
+  if (!vertexshader)
+      return E_FAIL;
+
+  if (reserved1 || reserved2)
+      return E_FAIL;
+
+  switch(*vertexshader) {
+        case 0xFFFE0101:
+        case 0xFFFE0100: 
+            ret=S_OK;
+            break;
+        default:
+            ERR("vertexshader version mismatch\n");
+            ret=E_FAIL;
+        }
+
+  return ret;
+}
+
+/***********************************************************************
+ *		ValidatePixelShader (D3D8.@)
+ *
+ * PARAMS
+ * toto       result?
+ */
+HRESULT WINAPI ValidatePixelShader(DWORD* pixelshader, DWORD* reserved1, BOOL bool, DWORD* toto)
+{
+  HRESULT ret;
+  FIXME("(%p %p %d %p): stub\n", pixelshader, reserved1, bool, toto);
+  
+  if (!pixelshader)
+      return E_FAIL;
+
+  if (reserved1)
+      return E_FAIL;   
+
+  switch(*pixelshader) {
+        case 0xFFFF0100:
+        case 0xFFFF0101:
+        case 0xFFFF0102:
+        case 0xFFFF0103:
+        case 0xFFFF0104:
+            ret=S_OK;
+            break;
+        default:
+            ERR("pixelshader version mismatch\n");
+            ret=E_FAIL;
+        }
+  return ret;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/d3d8_private.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/d3d8_private.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/d3d8_private.h	(revision 16410)
@@ -0,0 +1,671 @@
+/*
+ * Direct3D 8 private include file
+ *
+ * Copyright 2002-2004 Jason Edmeades
+ * Copyright 2003-2004 Raphael Junqueira
+ * Copyright 2004 Christian Costa
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_D3D8_PRIVATE_H
+#define __WINE_D3D8_PRIVATE_H
+
+#include <stdarg.h>
+
+#define NONAMELESSUNION
+#define NONAMELESSSTRUCT
+#define COBJMACROS
+#include "windef.h"
+#include "winbase.h"
+#include "wingdi.h"
+#include "wine/debug.h"
+#include "d3d8.h"
+#include "wine/wined3d.h"
+
+/* Device caps */
+#define INITIAL_SHADER_HANDLE_TABLE_SIZE        64
+
+/* CreateVertexShader can return > 0xFFFF */
+#define VS_HIGHESTFIXEDFXF 0xF0000000
+
+/* ===========================================================================
+    Macros
+   =========================================================================== */
+/* Not nice, but it lets wined3d support different versions of directx */
+#define WINECAPSTOD3D8CAPS(_pD3D8Caps, _pWineCaps) \
+    _pD3D8Caps->DeviceType                        = (D3DDEVTYPE) _pWineCaps->DeviceType; \
+    _pD3D8Caps->AdapterOrdinal                    = _pWineCaps->AdapterOrdinal; \
+    _pD3D8Caps->Caps                              = _pWineCaps->Caps; \
+    _pD3D8Caps->Caps2                             = _pWineCaps->Caps2; \
+    _pD3D8Caps->Caps3                             = _pWineCaps->Caps3; \
+    _pD3D8Caps->PresentationIntervals             = _pWineCaps->PresentationIntervals; \
+    _pD3D8Caps->CursorCaps                        = _pWineCaps->CursorCaps; \
+    _pD3D8Caps->DevCaps                           = _pWineCaps->DevCaps; \
+    _pD3D8Caps->PrimitiveMiscCaps                 = _pWineCaps->PrimitiveMiscCaps; \
+    _pD3D8Caps->RasterCaps                        = _pWineCaps->RasterCaps; \
+    _pD3D8Caps->ZCmpCaps                          = _pWineCaps->ZCmpCaps; \
+    _pD3D8Caps->SrcBlendCaps                      = _pWineCaps->SrcBlendCaps; \
+    _pD3D8Caps->DestBlendCaps                     = _pWineCaps->DestBlendCaps; \
+    _pD3D8Caps->AlphaCmpCaps                      = _pWineCaps->AlphaCmpCaps; \
+    _pD3D8Caps->ShadeCaps                         = _pWineCaps->ShadeCaps; \
+    _pD3D8Caps->TextureCaps                       = _pWineCaps->TextureCaps; \
+    _pD3D8Caps->TextureFilterCaps                 = _pWineCaps->TextureFilterCaps; \
+    _pD3D8Caps->CubeTextureFilterCaps             = _pWineCaps->CubeTextureFilterCaps; \
+    _pD3D8Caps->VolumeTextureFilterCaps           = _pWineCaps->VolumeTextureFilterCaps; \
+    _pD3D8Caps->TextureAddressCaps                = _pWineCaps->TextureAddressCaps; \
+    _pD3D8Caps->VolumeTextureAddressCaps          = _pWineCaps->VolumeTextureAddressCaps; \
+    _pD3D8Caps->LineCaps                          = _pWineCaps->LineCaps; \
+    _pD3D8Caps->MaxTextureWidth                   = _pWineCaps->MaxTextureWidth; \
+    _pD3D8Caps->MaxTextureHeight                  = _pWineCaps->MaxTextureHeight; \
+    _pD3D8Caps->MaxVolumeExtent                   = _pWineCaps->MaxVolumeExtent; \
+    _pD3D8Caps->MaxTextureRepeat                  = _pWineCaps->MaxTextureRepeat; \
+    _pD3D8Caps->MaxTextureAspectRatio             = _pWineCaps->MaxTextureAspectRatio; \
+    _pD3D8Caps->MaxAnisotropy                     = _pWineCaps->MaxAnisotropy; \
+    _pD3D8Caps->MaxVertexW                        = _pWineCaps->MaxVertexW; \
+    _pD3D8Caps->GuardBandLeft                     = _pWineCaps->GuardBandLeft; \
+    _pD3D8Caps->GuardBandTop                      = _pWineCaps->GuardBandTop; \
+    _pD3D8Caps->GuardBandRight                    = _pWineCaps->GuardBandRight; \
+    _pD3D8Caps->GuardBandBottom                   = _pWineCaps->GuardBandBottom; \
+    _pD3D8Caps->ExtentsAdjust                     = _pWineCaps->ExtentsAdjust; \
+    _pD3D8Caps->StencilCaps                       = _pWineCaps->StencilCaps; \
+    _pD3D8Caps->FVFCaps                           = _pWineCaps->FVFCaps; \
+    _pD3D8Caps->TextureOpCaps                     = _pWineCaps->TextureOpCaps; \
+    _pD3D8Caps->MaxTextureBlendStages             = _pWineCaps->MaxTextureBlendStages; \
+    _pD3D8Caps->MaxSimultaneousTextures           = _pWineCaps->MaxSimultaneousTextures; \
+    _pD3D8Caps->VertexProcessingCaps              = _pWineCaps->VertexProcessingCaps; \
+    _pD3D8Caps->MaxActiveLights                   = _pWineCaps->MaxActiveLights; \
+    _pD3D8Caps->MaxUserClipPlanes                 = _pWineCaps->MaxUserClipPlanes; \
+    _pD3D8Caps->MaxVertexBlendMatrices            = _pWineCaps->MaxVertexBlendMatrices; \
+    _pD3D8Caps->MaxVertexBlendMatrixIndex         = _pWineCaps->MaxVertexBlendMatrixIndex; \
+    _pD3D8Caps->MaxPointSize                      = _pWineCaps->MaxPointSize; \
+    _pD3D8Caps->MaxPrimitiveCount                 = _pWineCaps->MaxPrimitiveCount; \
+    _pD3D8Caps->MaxVertexIndex                    = _pWineCaps->MaxVertexIndex; \
+    _pD3D8Caps->MaxStreams                        = _pWineCaps->MaxStreams; \
+    _pD3D8Caps->MaxStreamStride                   = _pWineCaps->MaxStreamStride; \
+    _pD3D8Caps->VertexShaderVersion               = _pWineCaps->VertexShaderVersion; \
+    _pD3D8Caps->MaxVertexShaderConst              = _pWineCaps->MaxVertexShaderConst; \
+    _pD3D8Caps->PixelShaderVersion                = _pWineCaps->PixelShaderVersion; \
+    _pD3D8Caps->MaxPixelShaderValue               = _pWineCaps->PixelShader1xMaxValue;
+
+/* Direct3D8 Interfaces: */
+typedef struct IDirect3DBaseTexture8Impl IDirect3DBaseTexture8Impl;
+typedef struct IDirect3DVolumeTexture8Impl IDirect3DVolumeTexture8Impl;
+typedef struct IDirect3D8Impl IDirect3D8Impl;
+typedef struct IDirect3DDevice8Impl IDirect3DDevice8Impl;
+typedef struct IDirect3DTexture8Impl IDirect3DTexture8Impl;
+typedef struct IDirect3DCubeTexture8Impl IDirect3DCubeTexture8Impl;
+typedef struct IDirect3DIndexBuffer8Impl IDirect3DIndexBuffer8Impl;
+typedef struct IDirect3DSurface8Impl IDirect3DSurface8Impl;
+typedef struct IDirect3DSwapChain8Impl IDirect3DSwapChain8Impl;
+typedef struct IDirect3DResource8Impl IDirect3DResource8Impl;
+typedef struct IDirect3DVolume8Impl IDirect3DVolume8Impl;
+typedef struct IDirect3DVertexBuffer8Impl IDirect3DVertexBuffer8Impl;
+
+/** Private Interfaces: */
+typedef struct IDirect3DStateBlockImpl IDirect3DStateBlockImpl;
+typedef struct IDirect3DVertexShaderImpl IDirect3DVertexShaderImpl;
+typedef struct IDirect3DPixelShaderImpl IDirect3DPixelShaderImpl;
+typedef struct IDirect3DVertexShaderDeclarationImpl IDirect3DVertexShaderDeclarationImpl;
+
+/* Advance declaration of structures to satisfy compiler */
+typedef struct IDirect3DVertexShader8Impl IDirect3DVertexShader8Impl;
+
+/* Global critical section */
+extern CRITICAL_SECTION d3d8_cs;
+
+/* ===========================================================================
+    The interfaces themselves
+   =========================================================================== */
+
+/* ---------- */
+/* IDirect3D8 */
+/* ---------- */
+
+/*****************************************************************************
+ * Predeclare the interface implementation structures
+ */
+extern const IDirect3D8Vtbl Direct3D8_Vtbl;
+
+/*****************************************************************************
+ * IDirect3D implementation structure
+ */
+struct IDirect3D8Impl
+{
+    /* IUnknown fields */
+    const IDirect3D8Vtbl   *lpVtbl;
+    LONG                    ref;
+
+    /* The WineD3D device */
+    IWineD3D               *WineD3D;
+};
+
+/* ---------------- */
+/* IDirect3DDevice8 */
+/* ---------------- */
+
+/*****************************************************************************
+ * Predeclare the interface implementation structures
+ */
+extern const IDirect3DDevice8Vtbl Direct3DDevice8_Vtbl;
+
+/*****************************************************************************
+ * IDirect3DDevice8 implementation structure
+ */
+
+typedef void * shader_handle;
+
+struct FvfToDecl
+{
+    DWORD fvf;
+    IWineD3DVertexDeclaration *decl;
+};
+
+struct IDirect3DDevice8Impl
+{
+    /* IUnknown fields */
+    const IDirect3DDevice8Vtbl   *lpVtbl;
+    LONG                         ref;
+/* But what about baseVertexIndex in state blocks? hmm... it may be a better idea to pass this to wined3d */
+    IWineD3DDevice               *WineD3DDevice;
+    DWORD                         shader_handle_table_size;
+    DWORD                         allocated_shader_handles;
+    shader_handle                *shader_handles;
+    shader_handle                *free_shader_handles;
+
+    /* FVF management */
+    struct FvfToDecl       *decls;
+    UINT                    numConvertedDecls, declArraySize;
+
+    /* Avoids recursion with nested ReleaseRef to 0 */
+    BOOL                          inDestruction;
+};
+
+/* ---------------- */
+/* IDirect3DVolume8 */
+/* ---------------- */
+
+/*****************************************************************************
+ * IDirect3DVolume8 implementation structure
+ */
+struct IDirect3DVolume8Impl
+{
+    /* IUnknown fields */
+    const IDirect3DVolume8Vtbl *lpVtbl;
+    LONG                        ref;
+
+    /* IDirect3DVolume8 fields */
+    IWineD3DVolume             *wineD3DVolume;
+
+    /* The volume container */
+    IUnknown                    *container;
+
+    /* If set forward refcounting to this object */
+    IUnknown                    *forwardReference;
+};
+
+/* ------------------- */
+/* IDirect3DSwapChain8 */
+/* ------------------- */
+
+/*****************************************************************************
+ * Predeclare the interface implementation structures
+ */
+extern const IDirect3DSwapChain8Vtbl Direct3DSwapChain8_Vtbl;
+
+/*****************************************************************************
+ * IDirect3DSwapChain8 implementation structure
+ */
+struct IDirect3DSwapChain8Impl
+{
+    /* IUnknown fields */
+    const IDirect3DSwapChain8Vtbl *lpVtbl;
+    LONG                           ref;
+
+    /* IDirect3DSwapChain8 fields */
+    IWineD3DSwapChain             *wineD3DSwapChain;
+
+    /* Parent reference */
+    LPDIRECT3DDEVICE8              parentDevice;
+};
+
+/* ----------------- */
+/* IDirect3DSurface8 */
+/* ----------------- */
+
+/*****************************************************************************
+ * Predeclare the interface implementation structures
+ */
+extern const IDirect3DSurface8Vtbl Direct3DSurface8_Vtbl;
+
+/*****************************************************************************
+ * IDirect3DSurface8 implementation structure
+ */
+struct IDirect3DSurface8Impl
+{
+    /* IUnknown fields */
+    const IDirect3DSurface8Vtbl *lpVtbl;
+    LONG                         ref;
+
+    /* IDirect3DSurface8 fields */
+    IWineD3DSurface             *wineD3DSurface;
+
+    /* Parent reference */
+    LPDIRECT3DDEVICE8                  parentDevice;
+
+    /* The surface container */
+    IUnknown                    *container;
+
+    /* If set forward refcounting to this object */
+    IUnknown                    *forwardReference;
+
+    /* Flags an implicit surface */
+    BOOL                        isImplicit;
+};
+
+/* ------------------ */
+/* IDirect3DResource8 */
+/* ------------------ */
+
+/*****************************************************************************
+ * Predeclare the interface implementation structures
+ */
+extern const IDirect3DResource8Vtbl Direct3DResource8_Vtbl;
+
+/*****************************************************************************
+ * IDirect3DResource8 implementation structure
+ */
+struct IDirect3DResource8Impl
+{
+    /* IUnknown fields */
+    const IDirect3DResource8Vtbl *lpVtbl;
+    LONG                          ref;
+
+    /* IDirect3DResource8 fields */
+    IWineD3DResource             *wineD3DResource;
+};
+extern HRESULT WINAPI IDirect3DResource8Impl_GetDevice(LPDIRECT3DRESOURCE8 iface, IDirect3DDevice8** ppDevice);
+
+/* ---------------------- */
+/* IDirect3DVertexBuffer8 */
+/* ---------------------- */
+
+/*****************************************************************************
+ * Predeclare the interface implementation structures
+ */
+extern const IDirect3DVertexBuffer8Vtbl Direct3DVertexBuffer8_Vtbl;
+
+/*****************************************************************************
+ * IDirect3DVertexBuffer8 implementation structure
+ */
+struct IDirect3DVertexBuffer8Impl
+{
+    /* IUnknown fields */
+    const IDirect3DVertexBuffer8Vtbl *lpVtbl;
+    LONG                              ref;
+
+    /* IDirect3DResource8 fields */
+    IWineD3DVertexBuffer             *wineD3DVertexBuffer;
+
+    /* Parent reference */
+    LPDIRECT3DDEVICE8                 parentDevice;
+};
+
+/* --------------------- */
+/* IDirect3DIndexBuffer8 */
+/* --------------------- */
+
+/*****************************************************************************
+ * Predeclare the interface implementation structures
+ */
+extern const IDirect3DIndexBuffer8Vtbl Direct3DIndexBuffer8_Vtbl;
+
+/*****************************************************************************
+ * IDirect3DIndexBuffer8 implementation structure
+ */
+struct IDirect3DIndexBuffer8Impl
+{
+    /* IUnknown fields */
+    const IDirect3DIndexBuffer8Vtbl *lpVtbl;
+    LONG                             ref;
+
+    /* IDirect3DResource8 fields */
+    IWineD3DIndexBuffer             *wineD3DIndexBuffer;
+
+    /* Parent reference */
+    LPDIRECT3DDEVICE8                parentDevice;
+};
+
+/* --------------------- */
+/* IDirect3DBaseTexture8 */
+/* --------------------- */
+
+/*****************************************************************************
+ * IDirect3DBaseTexture8 implementation structure
+ */
+struct IDirect3DBaseTexture8Impl
+{
+    /* IUnknown fields */
+    const IDirect3DBaseTexture8Vtbl *lpVtbl;
+    LONG                   ref;
+
+    /* IDirect3DResource8 fields */
+    IWineD3DBaseTexture             *wineD3DBaseTexture;
+};
+
+/* --------------------- */
+/* IDirect3DCubeTexture8 */
+/* --------------------- */
+
+/*****************************************************************************
+ * Predeclare the interface implementation structures
+ */
+extern const IDirect3DCubeTexture8Vtbl Direct3DCubeTexture8_Vtbl;
+
+/*****************************************************************************
+ * IDirect3DCubeTexture8 implementation structure
+ */
+struct IDirect3DCubeTexture8Impl
+{
+    /* IUnknown fields */
+    const IDirect3DCubeTexture8Vtbl *lpVtbl;
+    LONG                   ref;
+
+    /* IDirect3DResource8 fields */
+    IWineD3DCubeTexture             *wineD3DCubeTexture;
+
+    /* Parent reference */
+    LPDIRECT3DDEVICE8                parentDevice;
+};
+
+/* ----------------- */
+/* IDirect3DTexture8 */
+/* ----------------- */
+
+/*****************************************************************************
+ * Predeclare the interface implementation structures
+ */
+extern const IDirect3DTexture8Vtbl Direct3DTexture8_Vtbl;
+
+/*****************************************************************************
+ * IDirect3DTexture8 implementation structure
+ */
+struct IDirect3DTexture8Impl
+{
+    /* IUnknown fields */
+    const IDirect3DTexture8Vtbl *lpVtbl;
+    LONG                   ref;
+
+    /* IDirect3DResourc8 fields */
+    IWineD3DTexture             *wineD3DTexture;
+
+    /* Parent reference */
+    LPDIRECT3DDEVICE8            parentDevice;
+};
+
+/* ----------------------- */
+/* IDirect3DVolumeTexture8 */
+/* ----------------------- */
+
+/*****************************************************************************
+ * Predeclare the interface implementation structures
+ */
+extern const IDirect3DVolumeTexture8Vtbl Direct3DVolumeTexture8_Vtbl;
+
+/*****************************************************************************
+ * IDirect3DVolumeTexture8 implementation structure
+ */
+struct IDirect3DVolumeTexture8Impl
+{
+    /* IUnknown fields */
+    const IDirect3DVolumeTexture8Vtbl *lpVtbl;
+    LONG                   ref;
+
+    /* IDirect3DResource8 fields */
+    IWineD3DVolumeTexture             *wineD3DVolumeTexture;
+
+    /* Parent reference */
+    LPDIRECT3DDEVICE8                  parentDevice;
+};
+
+/* ----------------------- */
+/* IDirect3DStateBlockImpl */
+/* ----------------------- */
+
+/* TODO: Generate a valid GUIDs */
+/* {83B073CE-6F30-11d9-C687-00046142C14F} */
+DEFINE_GUID(IID_IDirect3DStateBlock8, 
+0x83b073ce, 0x6f30, 0x11d9, 0xc6, 0x87, 0x0, 0x4, 0x61, 0x42, 0xc1, 0x4f);
+
+DEFINE_GUID(IID_IDirect3DVertexDeclaration8,
+0x5dd7478d, 0xcbf3, 0x41a6, 0x8c, 0xfd, 0xfd, 0x19, 0x2b, 0x11, 0xc7, 0x90);
+
+DEFINE_GUID(IID_IDirect3DVertexShader8,
+0xefc5557e, 0x6265, 0x4613, 0x8a, 0x94, 0x43, 0x85, 0x78, 0x89, 0xeb, 0x36);
+
+DEFINE_GUID(IID_IDirect3DPixelShader8,
+0x6d3bdbdc, 0x5b02, 0x4415, 0xb8, 0x52, 0xce, 0x5e, 0x8b, 0xcc, 0xb2, 0x89);
+
+
+/*****************************************************************************
+ * IDirect3DStateBlock8 interface
+ */
+#define INTERFACE IDirect3DStateBlock8
+DECLARE_INTERFACE_(IDirect3DStateBlock8, IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DStateBlock9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8** ppDevice) PURE;
+    STDMETHOD(Capture)(THIS) PURE;
+    STDMETHOD(Apply)(THIS) PURE;
+};
+#undef INTERFACE
+
+/*** IUnknown methods ***/
+#define IDirect3DStateBlock8_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DStateBlock8_AddRef(p)              (p)->lpVtbl->AddRef(p)
+#define IDirect3DStateBlock8_Release(p)             (p)->lpVtbl->Release(p)
+/*** IDirect3DStateBlock9 methods ***/
+#define IDirect3DStateBlock8_GetDevice(p,a)         (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DStateBlock8_Capture(p)             (p)->lpVtbl->Capture(p)
+#define IDirect3DStateBlock8_Apply(p)               (p)->lpVtbl->Apply(p)
+
+/*****************************************************************************
+ * Predeclare the interface implementation structures
+ */
+extern const IDirect3DStateBlock8Vtbl Direct3DStateBlock8_Vtbl;
+
+/*****************************************************************************
+ * IDirect3DStateBlock implementation structure
+ */
+typedef struct  IDirect3DStateBlock8Impl {
+    /* IUnknown fields */
+    const IDirect3DStateBlock8Vtbl *lpVtbl;
+    LONG                   ref;
+
+    /* IDirect3DResource8 fields */
+    IWineD3DStateBlock             *wineD3DStateBlock;
+} IDirect3DStateBlock8Impl;
+
+/*****************************************************************************
+ * IDirect3DVertexDeclaration8 interface
+ */
+#define INTERFACE IDirect3DVertexDeclaration8
+DECLARE_INTERFACE_(IDirect3DVertexDeclaration8, IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** obj_ptr) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+};
+#undef INTERFACE
+
+/*** IUnknown methods ***/
+#define IDirect3DVertexDeclaration8_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVertexDeclaration8_AddRef(p)              (p)->lpVtbl->AddRef(p)
+#define IDirect3DVertexDeclaration8_Release(p)             (p)->lpVtbl->Release(p)
+
+/*** Implementation ***/
+extern const IDirect3DVertexDeclaration8Vtbl Direct3DVertexDeclaration8_Vtbl;
+
+typedef struct {
+    const IDirect3DVertexDeclaration8Vtbl *lpVtbl;
+    LONG ref_count;
+
+    DWORD *elements;
+    DWORD elements_size; /* Size of elements, in bytes */
+
+    IWineD3DVertexDeclaration *wined3d_vertex_declaration;
+} IDirect3DVertexDeclaration8Impl;
+
+
+/*****************************************************************************
+ * IDirect3DVertexShader9 interface
+ */
+#define INTERFACE IDirect3DVertexShader8
+DECLARE_INTERFACE_(IDirect3DVertexShader8, IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DVertexShader9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8** ppDevice) PURE;
+    STDMETHOD(GetFunction)(THIS_ void*, UINT* pSizeOfData) PURE;
+};
+#undef INTERFACE
+
+/*** IUnknown methods ***/
+#define IDirect3DVertexShader8_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVertexShader8_AddRef(p)              (p)->lpVtbl->AddRef(p)
+#define IDirect3DVertexShader8_Release(p)             (p)->lpVtbl->Release(p)
+/*** IDirect3DVertexShader8 methods ***/
+#define IDirect3DVertexShader8_GetDevice(p,a)         (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DVertexShader8_GetFunction(p,a,b)     (p)->lpVtbl->GetFunction(p,a,b)
+
+/* ------------------------- */
+/* IDirect3DVertexShader8Impl */
+/* ------------------------- */
+
+/*****************************************************************************
+ * IDirect3DPixelShader9 interface
+ */
+#define INTERFACE IDirect3DPixelShader8
+DECLARE_INTERFACE_(IDirect3DPixelShader8,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DPixelShader8 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8** ppDevice) PURE;
+    STDMETHOD(GetFunction)(THIS_ void*, UINT* pSizeOfData) PURE;
+};
+#undef INTERFACE
+
+/*** IUnknown methods ***/
+#define IDirect3DPixelShader8_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DPixelShader8_AddRef(p)              (p)->lpVtbl->AddRef(p)
+#define IDirect3DPixelShader8_Release(p)             (p)->lpVtbl->Release(p)
+/*** IDirect3DPixelShader8 methods ***/
+#define IDirect3DPixelShader8_GetDevice(p,a)         (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DPixelShader8_GetFunction(p,a,b)     (p)->lpVtbl->GetFunction(p,a,b)
+
+
+/*****************************************************************************
+ * Predeclare the interface implementation structures
+ */
+extern const IDirect3DVertexShader8Vtbl Direct3DVertexShader8_Vtbl;
+
+/*****************************************************************************
+ * IDirect3DVertexShader implementation structure
+ */
+
+struct IDirect3DVertexShader8Impl {
+  const IDirect3DVertexShader8Vtbl *lpVtbl;
+  LONG ref;
+
+  DWORD                             handle;
+  IDirect3DVertexDeclaration8      *vertex_declaration;
+  IWineD3DVertexShader             *wineD3DVertexShader;
+};
+
+
+/* ------------------------ */
+/* IDirect3DPixelShaderImpl */
+/* ------------------------ */
+
+
+/*****************************************************************************
+ * Predeclare the interface implementation structures
+ */
+extern const IDirect3DPixelShader8Vtbl Direct3DPixelShader8_Vtbl;
+
+/*****************************************************************************
+ * IDirect3DPixelShader implementation structure
+ */
+typedef struct IDirect3DPixelShader8Impl {
+    const IDirect3DPixelShader8Vtbl *lpVtbl;
+    LONG                             ref;
+
+    DWORD                            handle;
+    /* The device, to be replaced by an IDirect3DDeviceImpl */
+    IWineD3DPixelShader             *wineD3DPixelShader;
+} IDirect3DPixelShader8Impl;
+
+/**
+ * Internals functions
+ *
+ * to see how not defined it here
+ */
+void load_local_constants(const DWORD *d3d8_elements, IWineD3DVertexShader *wined3d_vertex_shader);
+UINT convert_to_wined3d_declaration(const DWORD *d3d8_elements, DWORD *d3d8_elements_size, WINED3DVERTEXELEMENT **wined3d_elements);
+size_t parse_token(const DWORD* pToken);
+
+/* Callbacks */
+extern HRESULT WINAPI D3D8CB_CreateSurface(IUnknown *device, IUnknown *pSuperior, UINT Width, UINT Height,
+                                         WINED3DFORMAT Format, DWORD Usage, WINED3DPOOL Pool, UINT Level,
+                                         WINED3DCUBEMAP_FACES Face, IWineD3DSurface** ppSurface,
+                                         HANDLE* pSharedHandle);
+
+extern HRESULT WINAPI D3D8CB_CreateVolume(IUnknown  *pDevice, IUnknown *pSuperior, UINT Width, UINT Height, UINT Depth,
+                                          WINED3DFORMAT  Format, WINED3DPOOL Pool, DWORD Usage,
+                                          IWineD3DVolume **ppVolume,
+                                          HANDLE   * pSharedHandle);
+
+extern HRESULT WINAPI D3D8CB_CreateDepthStencilSurface(IUnknown *device, IUnknown *pSuperior, UINT Width, UINT Height,
+                                         WINED3DFORMAT Format, WINED3DMULTISAMPLE_TYPE MultiSample,
+                                         DWORD MultisampleQuality, BOOL Discard,
+                                         IWineD3DSurface** ppSurface, HANDLE* pSharedHandle);
+
+extern HRESULT WINAPI D3D8CB_CreateRenderTarget(IUnknown *device, IUnknown *pSuperior, UINT Width, UINT Height,
+                                         WINED3DFORMAT Format, WINED3DMULTISAMPLE_TYPE MultiSample,
+                                         DWORD MultisampleQuality, BOOL Lockable,
+                                         IWineD3DSurface** ppSurface, HANDLE* pSharedHandle);
+
+extern ULONG WINAPI D3D8CB_DestroySwapChain (IWineD3DSwapChain *pSwapChain);
+
+extern ULONG WINAPI D3D8CB_DestroyDepthStencilSurface (IWineD3DSurface *pSurface);
+
+extern ULONG WINAPI D3D8CB_DestroyRenderTarget (IWineD3DSurface *pSurface);
+
+extern ULONG WINAPI D3D8CB_DestroySurface(IWineD3DSurface *pSurface);
+
+extern ULONG WINAPI D3D8CB_DestroyVolume(IWineD3DVolume *pVolume);
+
+#endif /* __WINE_D3DX8_PRIVATE_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/device.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/device.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/device.c	(revision 16410)
@@ -0,0 +1,2246 @@
+/*
+ * IDirect3DDevice8 implementation
+ *
+ * Copyright 2002-2004 Jason Edmeades
+ * Copyright 2004 Christian Costa
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+
+#include <math.h>
+#include <stdarg.h>
+
+#define NONAMELESSUNION
+#define NONAMELESSSTRUCT
+#include "windef.h"
+#include "winbase.h"
+#include "winuser.h"
+#include "wingdi.h"
+#include "wine/debug.h"
+
+#include "d3d8_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d8);
+
+/* Shader handle functions */
+static shader_handle *alloc_shader_handle(IDirect3DDevice8Impl *This) {
+    if (This->free_shader_handles) {
+        /* Use a free handle */
+        shader_handle *handle = This->free_shader_handles;
+        This->free_shader_handles = *handle;
+        return handle;
+    }
+    if (!(This->allocated_shader_handles < This->shader_handle_table_size)) {
+        /* Grow the table */
+        DWORD new_size = This->shader_handle_table_size + (This->shader_handle_table_size >> 1);
+        shader_handle *new_handles = HeapReAlloc(GetProcessHeap(), 0, This->shader_handles, new_size * sizeof(shader_handle));
+        if (!new_handles) return NULL;
+        This->shader_handles = new_handles;
+        This->shader_handle_table_size = new_size;
+    }
+
+    return &This->shader_handles[This->allocated_shader_handles++];
+}
+
+static void free_shader_handle(IDirect3DDevice8Impl *This, shader_handle *handle) {
+    *handle = This->free_shader_handles;
+    This->free_shader_handles = handle;
+}
+
+/* IDirect3D IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DDevice8Impl_QueryInterface(LPDIRECT3DDEVICE8 iface,REFIID riid,LPVOID *ppobj)
+{
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DDevice8)) {
+        IUnknown_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DDevice8Impl_AddRef(LPDIRECT3DDEVICE8 iface) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+    return ref;
+}
+
+static ULONG WINAPI IDirect3DDevice8Impl_Release(LPDIRECT3DDEVICE8 iface) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    ULONG ref;
+
+    if (This->inDestruction) return 0;
+    ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+        unsigned i;
+
+        TRACE("Releasing wined3d device %p\n", This->WineD3DDevice);
+        EnterCriticalSection(&d3d8_cs);
+        This->inDestruction = TRUE;
+
+        for(i = 0; i < This->numConvertedDecls; i++) {
+            IWineD3DVertexDeclaration_Release(This->decls[i].decl);
+        }
+        HeapFree(GetProcessHeap(), 0, This->decls);
+
+        IWineD3DDevice_Uninit3D(This->WineD3DDevice, D3D8CB_DestroyDepthStencilSurface, D3D8CB_DestroySwapChain);
+        IWineD3DDevice_Release(This->WineD3DDevice);
+        HeapFree(GetProcessHeap(), 0, This->shader_handles);
+        HeapFree(GetProcessHeap(), 0, This);
+        LeaveCriticalSection(&d3d8_cs);
+    }
+    return ref;
+}
+
+/* IDirect3DDevice Interface follow: */
+static HRESULT WINAPI IDirect3DDevice8Impl_TestCooperativeLevel(LPDIRECT3DDEVICE8 iface) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+
+    TRACE("(%p) : Relay\n", This);
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_TestCooperativeLevel(This->WineD3DDevice);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static UINT WINAPI  IDirect3DDevice8Impl_GetAvailableTextureMem(LPDIRECT3DDEVICE8 iface) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+
+    TRACE("(%p) Relay\n", This);
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_GetAvailableTextureMem(This->WineD3DDevice);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_ResourceManagerDiscardBytes(LPDIRECT3DDEVICE8 iface, DWORD Bytes) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+
+    TRACE("(%p) : Relay bytes(%d)\n", This, Bytes);
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_EvictManagedResources(This->WineD3DDevice);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_GetDirect3D(LPDIRECT3DDEVICE8 iface, IDirect3D8** ppD3D8) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr = D3D_OK;
+    IWineD3D* pWineD3D;
+
+    TRACE("(%p) Relay\n", This);
+
+    if (NULL == ppD3D8) {
+        return D3DERR_INVALIDCALL;
+    }
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_GetDirect3D(This->WineD3DDevice, &pWineD3D);
+    if (hr == D3D_OK && pWineD3D != NULL)
+    {
+        IWineD3D_GetParent(pWineD3D,(IUnknown **)ppD3D8);
+        IWineD3D_Release(pWineD3D);
+    } else {
+        FIXME("Call to IWineD3DDevice_GetDirect3D failed\n");
+        *ppD3D8 = NULL;
+    }
+    TRACE("(%p) returning %p\n",This , *ppD3D8);
+    LeaveCriticalSection(&d3d8_cs);
+
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_GetDeviceCaps(LPDIRECT3DDEVICE8 iface, D3DCAPS8* pCaps) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hrc = D3D_OK;
+    WINED3DCAPS *pWineCaps;
+
+    TRACE("(%p) : Relay pCaps %p\n", This, pCaps);
+    if(NULL == pCaps){
+        return D3DERR_INVALIDCALL;
+    }
+    pWineCaps = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WINED3DCAPS));
+    if(pWineCaps == NULL){
+        return D3DERR_INVALIDCALL; /* well this is what MSDN says to return */
+    }
+
+    EnterCriticalSection(&d3d8_cs);
+    hrc = IWineD3DDevice_GetDeviceCaps(This->WineD3DDevice, pWineCaps);
+    LeaveCriticalSection(&d3d8_cs);
+    WINECAPSTOD3D8CAPS(pCaps, pWineCaps)
+    HeapFree(GetProcessHeap(), 0, pWineCaps);
+
+    /* D3D8 doesn't support SM 2.0 or higher, so clamp to 1.x */
+    if(pCaps->PixelShaderVersion > D3DPS_VERSION(1,4)){
+        pCaps->PixelShaderVersion = D3DPS_VERSION(1,4);
+    }
+    if(pCaps->VertexShaderVersion > D3DVS_VERSION(1,1)){
+        pCaps->VertexShaderVersion = D3DVS_VERSION(1,1);
+    }
+
+    TRACE("Returning %p %p\n", This, pCaps);
+    return hrc;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_GetDisplayMode(LPDIRECT3DDEVICE8 iface, D3DDISPLAYMODE* pMode) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_GetDisplayMode(This->WineD3DDevice, 0, (WINED3DDISPLAYMODE *) pMode);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_GetCreationParameters(LPDIRECT3DDEVICE8 iface, D3DDEVICE_CREATION_PARAMETERS *pParameters) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_GetCreationParameters(This->WineD3DDevice, (WINED3DDEVICE_CREATION_PARAMETERS *) pParameters);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_SetCursorProperties(LPDIRECT3DDEVICE8 iface, UINT XHotSpot, UINT YHotSpot, IDirect3DSurface8* pCursorBitmap) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    IDirect3DSurface8Impl *pSurface = (IDirect3DSurface8Impl*)pCursorBitmap;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+    if(!pCursorBitmap) {
+        WARN("No cursor bitmap, returning WINED3DERR_INVALIDCALL\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_SetCursorProperties(This->WineD3DDevice,XHotSpot,YHotSpot,pSurface->wineD3DSurface);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static void WINAPI IDirect3DDevice8Impl_SetCursorPosition(LPDIRECT3DDEVICE8 iface, UINT XScreenSpace, UINT YScreenSpace, DWORD Flags) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    IWineD3DDevice_SetCursorPosition(This->WineD3DDevice, XScreenSpace, YScreenSpace, Flags);
+    LeaveCriticalSection(&d3d8_cs);
+}
+
+static BOOL WINAPI IDirect3DDevice8Impl_ShowCursor(LPDIRECT3DDEVICE8 iface, BOOL bShow) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    BOOL ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    ret = IWineD3DDevice_ShowCursor(This->WineD3DDevice, bShow);
+    LeaveCriticalSection(&d3d8_cs);
+    return ret;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_CreateAdditionalSwapChain(LPDIRECT3DDEVICE8 iface, D3DPRESENT_PARAMETERS* pPresentationParameters, IDirect3DSwapChain8** pSwapChain) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    IDirect3DSwapChain8Impl* object;
+    HRESULT hrc = D3D_OK;
+    WINED3DPRESENT_PARAMETERS localParameters;
+
+    TRACE("(%p) Relay\n", This);
+
+    /* Fix the back buffer count */
+    if(pPresentationParameters->BackBufferCount == 0) {
+        pPresentationParameters->BackBufferCount = 1;
+    }
+
+    object = HeapAlloc(GetProcessHeap(),  HEAP_ZERO_MEMORY, sizeof(*object));
+    if (NULL == object) {
+        FIXME("Allocation of memory failed\n");
+        *pSwapChain = NULL;
+        return D3DERR_OUTOFVIDEOMEMORY;
+    }
+    object->ref = 1;
+    object->lpVtbl = &Direct3DSwapChain8_Vtbl;
+
+    /* Allocate an associated WineD3DDevice object */
+    localParameters.BackBufferWidth                             = pPresentationParameters->BackBufferWidth;
+    localParameters.BackBufferHeight                            = pPresentationParameters->BackBufferHeight;
+    localParameters.BackBufferFormat                            = pPresentationParameters->BackBufferFormat;
+    localParameters.BackBufferCount                             = pPresentationParameters->BackBufferCount;
+    localParameters.MultiSampleType                             = pPresentationParameters->MultiSampleType;
+    localParameters.MultiSampleQuality                          = 0; /* d3d9 only */
+    localParameters.SwapEffect                                  = pPresentationParameters->SwapEffect;
+    localParameters.hDeviceWindow                               = pPresentationParameters->hDeviceWindow;
+    localParameters.Windowed                                    = pPresentationParameters->Windowed;
+    localParameters.EnableAutoDepthStencil                      = pPresentationParameters->EnableAutoDepthStencil;
+    localParameters.AutoDepthStencilFormat                      = pPresentationParameters->AutoDepthStencilFormat;
+    localParameters.Flags                                       = pPresentationParameters->Flags;
+    localParameters.FullScreen_RefreshRateInHz                  = pPresentationParameters->FullScreen_RefreshRateInHz;
+    localParameters.PresentationInterval                        = pPresentationParameters->FullScreen_PresentationInterval;
+    localParameters.AutoRestoreDisplayMode                      = TRUE;
+
+    EnterCriticalSection(&d3d8_cs);
+    hrc = IWineD3DDevice_CreateSwapChain(This->WineD3DDevice, &localParameters, &object->wineD3DSwapChain, (IUnknown*)object, D3D8CB_CreateRenderTarget, D3D8CB_CreateDepthStencilSurface, SURFACE_OPENGL);
+    LeaveCriticalSection(&d3d8_cs);
+
+    pPresentationParameters->BackBufferWidth                    = localParameters.BackBufferWidth;
+    pPresentationParameters->BackBufferHeight                   = localParameters.BackBufferHeight;
+    pPresentationParameters->BackBufferFormat                   = localParameters.BackBufferFormat;
+    pPresentationParameters->BackBufferCount                    = localParameters.BackBufferCount;
+    pPresentationParameters->MultiSampleType                    = localParameters.MultiSampleType;
+    pPresentationParameters->SwapEffect                         = localParameters.SwapEffect;
+    pPresentationParameters->hDeviceWindow                      = localParameters.hDeviceWindow;
+    pPresentationParameters->Windowed                           = localParameters.Windowed;
+    pPresentationParameters->EnableAutoDepthStencil             = localParameters.EnableAutoDepthStencil;
+    pPresentationParameters->AutoDepthStencilFormat             = localParameters.AutoDepthStencilFormat;
+    pPresentationParameters->Flags                              = localParameters.Flags;
+    pPresentationParameters->FullScreen_RefreshRateInHz         = localParameters.FullScreen_RefreshRateInHz;
+    pPresentationParameters->FullScreen_PresentationInterval    = localParameters.PresentationInterval;
+
+    if (hrc != D3D_OK) {
+        FIXME("(%p) call to IWineD3DDevice_CreateSwapChain failed\n", This);
+        HeapFree(GetProcessHeap(), 0 , object);
+        *pSwapChain = NULL;
+    }else{
+        IUnknown_AddRef(iface);
+        object->parentDevice = iface;
+        *pSwapChain = (IDirect3DSwapChain8 *)object;
+    }
+    TRACE("(%p) returning %p\n", This, *pSwapChain);
+    return hrc;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_Reset(LPDIRECT3DDEVICE8 iface, D3DPRESENT_PARAMETERS* pPresentationParameters) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    WINED3DPRESENT_PARAMETERS localParameters;
+    HRESULT hr;
+
+    TRACE("(%p) Relay pPresentationParameters(%p)\n", This, pPresentationParameters);
+
+    localParameters.BackBufferWidth                             = pPresentationParameters->BackBufferWidth;
+    localParameters.BackBufferHeight                            = pPresentationParameters->BackBufferHeight;
+    localParameters.BackBufferFormat                            = pPresentationParameters->BackBufferFormat;
+    localParameters.BackBufferCount                             = pPresentationParameters->BackBufferCount;
+    localParameters.MultiSampleType                             = pPresentationParameters->MultiSampleType;
+    localParameters.MultiSampleQuality                          = 0; /* d3d9 only */
+    localParameters.SwapEffect                                  = pPresentationParameters->SwapEffect;
+    localParameters.hDeviceWindow                               = pPresentationParameters->hDeviceWindow;
+    localParameters.Windowed                                    = pPresentationParameters->Windowed;
+    localParameters.EnableAutoDepthStencil                      = pPresentationParameters->EnableAutoDepthStencil;
+    localParameters.AutoDepthStencilFormat                      = pPresentationParameters->AutoDepthStencilFormat;
+    localParameters.Flags                                       = pPresentationParameters->Flags;
+    localParameters.FullScreen_RefreshRateInHz                  = pPresentationParameters->FullScreen_RefreshRateInHz;
+    localParameters.PresentationInterval                        = pPresentationParameters->FullScreen_PresentationInterval;
+    localParameters.AutoRestoreDisplayMode                      = TRUE;
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_Reset(This->WineD3DDevice, &localParameters);
+    LeaveCriticalSection(&d3d8_cs);
+
+    pPresentationParameters->BackBufferWidth                    = localParameters.BackBufferWidth;
+    pPresentationParameters->BackBufferHeight                   = localParameters.BackBufferHeight;
+    pPresentationParameters->BackBufferFormat                   = localParameters.BackBufferFormat;
+    pPresentationParameters->BackBufferCount                    = localParameters.BackBufferCount;
+    pPresentationParameters->MultiSampleType                    = localParameters.MultiSampleType;
+    pPresentationParameters->SwapEffect                         = localParameters.SwapEffect;
+    pPresentationParameters->hDeviceWindow                      = localParameters.hDeviceWindow;
+    pPresentationParameters->Windowed                           = localParameters.Windowed;
+    pPresentationParameters->EnableAutoDepthStencil             = localParameters.EnableAutoDepthStencil;
+    pPresentationParameters->AutoDepthStencilFormat             = localParameters.AutoDepthStencilFormat;
+    pPresentationParameters->Flags                              = localParameters.Flags;
+    pPresentationParameters->FullScreen_RefreshRateInHz         = localParameters.FullScreen_RefreshRateInHz;
+    pPresentationParameters->FullScreen_PresentationInterval    = localParameters.PresentationInterval;
+
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_Present(LPDIRECT3DDEVICE8 iface, CONST RECT* pSourceRect,CONST RECT* pDestRect,HWND hDestWindowOverride,CONST RGNDATA* pDirtyRegion) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_Present(This->WineD3DDevice, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_GetBackBuffer(LPDIRECT3DDEVICE8 iface, UINT BackBuffer, D3DBACKBUFFER_TYPE Type, IDirect3DSurface8** ppBackBuffer) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    IWineD3DSurface *retSurface = NULL;
+    HRESULT rc = D3D_OK;
+
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    rc = IWineD3DDevice_GetBackBuffer(This->WineD3DDevice, 0, BackBuffer, (WINED3DBACKBUFFER_TYPE) Type, &retSurface);
+    if (rc == D3D_OK && NULL != retSurface && NULL != ppBackBuffer) {
+        IWineD3DSurface_GetParent(retSurface, (IUnknown **)ppBackBuffer);
+        IWineD3DSurface_Release(retSurface);
+    }
+    LeaveCriticalSection(&d3d8_cs);
+    return rc;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_GetRasterStatus(LPDIRECT3DDEVICE8 iface, D3DRASTER_STATUS* pRasterStatus) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_GetRasterStatus(This->WineD3DDevice, 0, (WINED3DRASTER_STATUS *) pRasterStatus);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static void WINAPI IDirect3DDevice8Impl_SetGammaRamp(LPDIRECT3DDEVICE8 iface, DWORD Flags, CONST D3DGAMMARAMP* pRamp) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+
+    /* Note: D3DGAMMARAMP is compatible with WINED3DGAMMARAMP */
+    EnterCriticalSection(&d3d8_cs);
+    IWineD3DDevice_SetGammaRamp(This->WineD3DDevice, 0, Flags, (CONST WINED3DGAMMARAMP *) pRamp);
+    LeaveCriticalSection(&d3d8_cs);
+}
+
+static void WINAPI IDirect3DDevice8Impl_GetGammaRamp(LPDIRECT3DDEVICE8 iface, D3DGAMMARAMP* pRamp) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+
+    /* Note: D3DGAMMARAMP is compatible with WINED3DGAMMARAMP */
+    EnterCriticalSection(&d3d8_cs);
+    IWineD3DDevice_GetGammaRamp(This->WineD3DDevice, 0, (WINED3DGAMMARAMP *) pRamp);
+    LeaveCriticalSection(&d3d8_cs);
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_CreateTexture(LPDIRECT3DDEVICE8 iface, UINT Width, UINT Height, UINT Levels, DWORD Usage,
+                                                    D3DFORMAT Format, D3DPOOL Pool, IDirect3DTexture8 **ppTexture) {
+    IDirect3DTexture8Impl *object;
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hrc = D3D_OK;
+
+    TRACE("(%p) : W(%d) H(%d), Lvl(%d) d(%d), Fmt(%u), Pool(%d)\n", This, Width, Height, Levels, Usage, Format,  Pool);
+
+    /* Allocate the storage for the device */
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DTexture8Impl));
+
+    if (NULL == object) {
+        FIXME("Allocation of memory failed\n");
+/*        *ppTexture = NULL; */
+        return D3DERR_OUTOFVIDEOMEMORY;
+    }
+
+    object->lpVtbl = &Direct3DTexture8_Vtbl;
+    object->ref = 1;
+    EnterCriticalSection(&d3d8_cs);
+    hrc = IWineD3DDevice_CreateTexture(This->WineD3DDevice, Width, Height, Levels, Usage & WINED3DUSAGE_MASK,
+                                 (WINED3DFORMAT)Format, (WINED3DPOOL) Pool, &object->wineD3DTexture, NULL, (IUnknown *)object, D3D8CB_CreateSurface);
+    LeaveCriticalSection(&d3d8_cs);
+
+    if (FAILED(hrc)) {
+        /* free up object */ 
+        FIXME("(%p) call to IWineD3DDevice_CreateTexture failed\n", This);
+        HeapFree(GetProcessHeap(), 0, object);
+/*      *ppTexture = NULL; */
+   } else {
+        IUnknown_AddRef(iface);
+        object->parentDevice = iface;
+        *ppTexture = (LPDIRECT3DTEXTURE8) object;
+        TRACE("(%p) Created Texture %p, %p\n",This,object,object->wineD3DTexture);
+   }
+
+   return hrc;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_CreateVolumeTexture(LPDIRECT3DDEVICE8 iface, 
+                                                          UINT Width, UINT Height, UINT Depth, UINT Levels, DWORD Usage, 
+                                                          D3DFORMAT Format, D3DPOOL Pool, IDirect3DVolumeTexture8** ppVolumeTexture) {
+
+    IDirect3DVolumeTexture8Impl *object;
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hrc = D3D_OK;
+
+    TRACE("(%p) Relay\n", This);
+
+    /* Allocate the storage for the device */
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DVolumeTexture8Impl));
+    if (NULL == object) {
+        FIXME("(%p) allocation of memory failed\n", This);
+        *ppVolumeTexture = NULL;
+        return D3DERR_OUTOFVIDEOMEMORY;
+    }
+
+    object->lpVtbl = &Direct3DVolumeTexture8_Vtbl;
+    object->ref = 1;
+    EnterCriticalSection(&d3d8_cs);
+    hrc = IWineD3DDevice_CreateVolumeTexture(This->WineD3DDevice, Width, Height, Depth, Levels, Usage & WINED3DUSAGE_MASK,
+                                 (WINED3DFORMAT)Format, (WINED3DPOOL) Pool, &object->wineD3DVolumeTexture, NULL,
+                                 (IUnknown *)object, D3D8CB_CreateVolume);
+    LeaveCriticalSection(&d3d8_cs);
+
+    if (hrc != D3D_OK) {
+
+        /* free up object */
+        FIXME("(%p) call to IWineD3DDevice_CreateVolumeTexture failed\n", This);
+        HeapFree(GetProcessHeap(), 0, object);
+        *ppVolumeTexture = NULL;
+    } else {
+        IUnknown_AddRef(iface);
+        object->parentDevice = iface;
+        *ppVolumeTexture = (LPDIRECT3DVOLUMETEXTURE8) object;
+    }
+    TRACE("(%p)  returning %p\n", This , *ppVolumeTexture);
+    return hrc;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_CreateCubeTexture(LPDIRECT3DDEVICE8 iface, UINT EdgeLength, UINT Levels, DWORD Usage, 
+                                                        D3DFORMAT Format, D3DPOOL Pool, IDirect3DCubeTexture8** ppCubeTexture) {
+
+    IDirect3DCubeTexture8Impl *object;
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr = D3D_OK;
+
+    TRACE("(%p) : ELen(%d) Lvl(%d) Usage(%d) fmt(%u), Pool(%d)\n" , This, EdgeLength, Levels, Usage, Format, Pool);
+
+    /* Allocate the storage for the device */
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object));
+
+    if (NULL == object) {
+        FIXME("(%p) allocation of CubeTexture failed\n", This);
+        *ppCubeTexture = NULL;
+        return D3DERR_OUTOFVIDEOMEMORY;
+    }
+
+    object->lpVtbl = &Direct3DCubeTexture8_Vtbl;
+    object->ref = 1;
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_CreateCubeTexture(This->WineD3DDevice, EdgeLength, Levels, Usage & WINED3DUSAGE_MASK,
+                                 (WINED3DFORMAT)Format, (WINED3DPOOL) Pool, &object->wineD3DCubeTexture, NULL, (IUnknown*)object,
+                                 D3D8CB_CreateSurface);
+    LeaveCriticalSection(&d3d8_cs);
+
+    if (hr != D3D_OK){
+
+        /* free up object */
+        FIXME("(%p) call to IWineD3DDevice_CreateCubeTexture failed\n", This);
+        HeapFree(GetProcessHeap(), 0, object);
+        *ppCubeTexture = NULL;
+    } else {
+        IUnknown_AddRef(iface);
+        object->parentDevice = iface;
+        *ppCubeTexture = (LPDIRECT3DCUBETEXTURE8) object;
+    }
+
+    TRACE("(%p) returning %p\n",This, *ppCubeTexture);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_CreateVertexBuffer(LPDIRECT3DDEVICE8 iface, UINT Size, DWORD Usage, DWORD FVF, D3DPOOL Pool, IDirect3DVertexBuffer8** ppVertexBuffer) {
+    IDirect3DVertexBuffer8Impl *object;
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hrc = D3D_OK;
+
+    TRACE("(%p) Relay\n", This);
+    /* Allocate the storage for the device */
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DVertexBuffer8Impl));
+    if (NULL == object) {
+        FIXME("Allocation of memory failed\n");
+        *ppVertexBuffer = NULL;
+        return D3DERR_OUTOFVIDEOMEMORY;
+    }
+
+    object->lpVtbl = &Direct3DVertexBuffer8_Vtbl;
+    object->ref = 1;
+    EnterCriticalSection(&d3d8_cs);
+    hrc = IWineD3DDevice_CreateVertexBuffer(This->WineD3DDevice, Size, Usage & WINED3DUSAGE_MASK, FVF, (WINED3DPOOL) Pool, &(object->wineD3DVertexBuffer), NULL, (IUnknown *)object);
+    LeaveCriticalSection(&d3d8_cs);
+
+    if (D3D_OK != hrc) {
+
+        /* free up object */
+        FIXME("(%p) call to IWineD3DDevice_CreateVertexBuffer failed\n", This);
+        HeapFree(GetProcessHeap(), 0, object);
+        *ppVertexBuffer = NULL;
+    } else {
+        IUnknown_AddRef(iface);
+        object->parentDevice = iface;
+        *ppVertexBuffer = (LPDIRECT3DVERTEXBUFFER8) object;
+    }
+    return hrc;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_CreateIndexBuffer(LPDIRECT3DDEVICE8 iface, UINT Length, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DIndexBuffer8** ppIndexBuffer) {
+    IDirect3DIndexBuffer8Impl *object;
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hrc = D3D_OK;
+
+    TRACE("(%p) Relay\n", This);
+    /* Allocate the storage for the device */
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object));
+    if (NULL == object) {
+        FIXME("Allocation of memory failed\n");
+        *ppIndexBuffer = NULL;
+        return D3DERR_OUTOFVIDEOMEMORY;
+    }
+
+    object->lpVtbl = &Direct3DIndexBuffer8_Vtbl;
+    object->ref = 1;
+    TRACE("Calling wined3d create index buffer\n");
+    EnterCriticalSection(&d3d8_cs);
+    hrc = IWineD3DDevice_CreateIndexBuffer(This->WineD3DDevice, Length, Usage & WINED3DUSAGE_MASK, Format, (WINED3DPOOL) Pool, &object->wineD3DIndexBuffer, NULL, (IUnknown *)object);
+    LeaveCriticalSection(&d3d8_cs);
+
+    if (D3D_OK != hrc) {
+
+        /* free up object */
+        FIXME("(%p) call to IWineD3DDevice_CreateIndexBuffer failed\n", This);
+        HeapFree(GetProcessHeap(), 0, object);
+        *ppIndexBuffer = NULL;
+    } else {
+        IUnknown_AddRef(iface);
+        object->parentDevice = iface;
+        *ppIndexBuffer = (LPDIRECT3DINDEXBUFFER8)object;
+    }
+    return hrc;
+}
+
+static HRESULT IDirect3DDevice8Impl_CreateSurface(LPDIRECT3DDEVICE8 iface, UINT Width, UINT Height, D3DFORMAT Format, BOOL Lockable, BOOL Discard, UINT Level, IDirect3DSurface8 **ppSurface,D3DRESOURCETYPE Type, UINT Usage,D3DPOOL Pool, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality)  {
+    HRESULT hrc;
+    IDirect3DSurface8Impl *object;
+    IDirect3DDevice8Impl  *This = (IDirect3DDevice8Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+
+    if(MultisampleQuality > 0){
+        FIXME("MultisampleQuality set to %d, substituting 0\n" , MultisampleQuality);
+        /*
+        MultisampleQuality
+        [in] Quality level. The valid range is between zero and one less than the level returned by pQualityLevels used by IDirect3D8::CheckDeviceMultiSampleType. Passing a larger value returns the error D3DERR_INVALIDCALL. The MultisampleQuality values of paired render targets, depth stencil surfaces, and the MultiSample type must all match.
+        */
+        MultisampleQuality=0;
+    }
+    /*FIXME: Check MAX bounds of MultisampleQuality*/
+
+    /* Allocate the storage for the device */
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DSurface8Impl));
+    if (NULL == object) {
+        FIXME("Allocation of memory failed\n");
+        *ppSurface = NULL;
+        return D3DERR_OUTOFVIDEOMEMORY;
+    }
+
+    object->lpVtbl = &Direct3DSurface8_Vtbl;
+    object->ref = 1;
+
+    TRACE("(%p) : w(%d) h(%d) fmt(%d) surf@%p\n", This, Width, Height, Format, *ppSurface);
+
+    /* Not called from the VTable, no locking needed */
+    hrc = IWineD3DDevice_CreateSurface(This->WineD3DDevice, Width, Height, Format, Lockable, Discard, Level,  &object->wineD3DSurface, Type, Usage & WINED3DUSAGE_MASK, (WINED3DPOOL) Pool,MultiSample,MultisampleQuality, NULL, SURFACE_OPENGL, (IUnknown *)object);
+    if (hrc != D3D_OK || NULL == object->wineD3DSurface) {
+       /* free up object */
+        FIXME("(%p) call to IWineD3DDevice_CreateSurface failed\n", This);
+        HeapFree(GetProcessHeap(), 0, object);
+        *ppSurface = NULL;
+    } else {
+        IUnknown_AddRef(iface);
+        object->parentDevice = iface;
+        *ppSurface = (LPDIRECT3DSURFACE8) object;
+    }
+    return hrc;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_CreateRenderTarget(LPDIRECT3DDEVICE8 iface, UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, BOOL Lockable, IDirect3DSurface8** ppSurface) {
+    HRESULT hr;
+    TRACE("Relay\n");
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IDirect3DDevice8Impl_CreateSurface(iface, Width, Height, Format, Lockable, FALSE /* Discard */, 0 /* Level */ , ppSurface, D3DRTYPE_SURFACE, D3DUSAGE_RENDERTARGET, D3DPOOL_DEFAULT, MultiSample, 0);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_CreateDepthStencilSurface(LPDIRECT3DDEVICE8 iface, UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, IDirect3DSurface8** ppSurface) {
+    HRESULT hr;
+    TRACE("Relay\n");
+
+    /* TODO: Verify that Discard is false */
+    EnterCriticalSection(&d3d8_cs);
+    hr = IDirect3DDevice8Impl_CreateSurface(iface, Width, Height, Format, TRUE /* Lockable */, FALSE, 0 /* Level */
+                                               ,ppSurface, D3DRTYPE_SURFACE, D3DUSAGE_DEPTHSTENCIL,
+                                                D3DPOOL_DEFAULT, MultiSample, 0);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+/*  IDirect3DDevice8Impl::CreateImageSurface returns surface with pool type SYSTEMMEM */
+static HRESULT WINAPI IDirect3DDevice8Impl_CreateImageSurface(LPDIRECT3DDEVICE8 iface, UINT Width, UINT Height, D3DFORMAT Format, IDirect3DSurface8** ppSurface) {
+    HRESULT hr;
+    TRACE("Relay\n");
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IDirect3DDevice8Impl_CreateSurface(iface, Width, Height, Format, TRUE /* Loackable */ , FALSE /*Discard*/ , 0 /* Level */ , ppSurface,
+                                            D3DRTYPE_SURFACE, 0 /* Usage (undefined/none) */ , D3DPOOL_SYSTEMMEM, D3DMULTISAMPLE_NONE, 0 /* MultisampleQuality */);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_CopyRects(LPDIRECT3DDEVICE8 iface, IDirect3DSurface8 *pSourceSurface, CONST RECT *pSourceRects, UINT cRects, IDirect3DSurface8 *pDestinationSurface, CONST POINT *pDestPoints) {
+    IDirect3DSurface8Impl *Source = (IDirect3DSurface8Impl *) pSourceSurface;
+    IDirect3DSurface8Impl *Dest = (IDirect3DSurface8Impl *) pDestinationSurface;
+
+    HRESULT              hr = WINED3D_OK;
+    WINED3DFORMAT        srcFormat, destFormat;
+    UINT                 srcWidth,  destWidth;
+    UINT                 srcHeight, destHeight;
+    UINT                 srcSize;
+    WINED3DSURFACE_DESC  winedesc;
+
+    TRACE("(%p) pSrcSur=%p, pSourceRects=%p, cRects=%d, pDstSur=%p, pDestPtsArr=%p\n", iface,
+          pSourceSurface, pSourceRects, cRects, pDestinationSurface, pDestPoints);
+
+
+    /* Check that the source texture is in WINED3DPOOL_SYSTEMMEM and the destination texture is in WINED3DPOOL_DEFAULT */
+    memset(&winedesc, 0, sizeof(winedesc));
+
+    winedesc.Format = &srcFormat;
+    winedesc.Width  = &srcWidth;
+    winedesc.Height = &srcHeight;
+    winedesc.Size   = &srcSize;
+    IWineD3DSurface_GetDesc(Source->wineD3DSurface, &winedesc);
+
+    winedesc.Format = &destFormat;
+    winedesc.Width  = &destWidth;
+    winedesc.Height = &destHeight;
+    winedesc.Size   = NULL;
+    EnterCriticalSection(&d3d8_cs);
+    IWineD3DSurface_GetDesc(Dest->wineD3DSurface, &winedesc);
+
+    /* Check that the source and destination formats match */
+    if (srcFormat != destFormat && WINED3DFMT_UNKNOWN != destFormat) {
+        WARN("(%p) source %p format must match the dest %p format, returning WINED3DERR_INVALIDCALL\n", iface, pSourceSurface, pDestinationSurface);
+        LeaveCriticalSection(&d3d8_cs);
+        return WINED3DERR_INVALIDCALL;
+    } else if (WINED3DFMT_UNKNOWN == destFormat) {
+        TRACE("(%p) : Converting destination surface from WINED3DFMT_UNKNOWN to the source format\n", iface);
+        IWineD3DSurface_SetFormat(Dest->wineD3DSurface, srcFormat);
+        destFormat = srcFormat;
+    }
+
+    /* Quick if complete copy ... */
+    if (cRects == 0 && pSourceRects == NULL && pDestPoints == NULL) {
+        IWineD3DSurface_BltFast(Dest->wineD3DSurface, 0, 0, Source->wineD3DSurface, NULL, WINEDDBLTFAST_NOCOLORKEY);
+    } else {
+        unsigned int i;
+        /* Copy rect by rect */
+        if (NULL != pSourceRects && NULL != pDestPoints) {
+            for (i = 0; i < cRects; ++i) {
+                IWineD3DSurface_BltFast(Dest->wineD3DSurface, pDestPoints[i].x, pDestPoints[i].y, Source->wineD3DSurface, (RECT *) &pSourceRects[i], WINEDDBLTFAST_NOCOLORKEY);
+            }
+        } else {
+            for (i = 0; i < cRects; ++i) {
+                IWineD3DSurface_BltFast(Dest->wineD3DSurface, 0, 0, Source->wineD3DSurface, (RECT *) &pSourceRects[i], WINEDDBLTFAST_NOCOLORKEY);
+            }
+        }
+    }
+    LeaveCriticalSection(&d3d8_cs);
+
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_UpdateTexture(LPDIRECT3DDEVICE8 iface, IDirect3DBaseTexture8* pSourceTexture, IDirect3DBaseTexture8* pDestinationTexture) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_UpdateTexture(This->WineD3DDevice,  ((IDirect3DBaseTexture8Impl *)pSourceTexture)->wineD3DBaseTexture, ((IDirect3DBaseTexture8Impl *)pDestinationTexture)->wineD3DBaseTexture);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_GetFrontBuffer(LPDIRECT3DDEVICE8 iface, IDirect3DSurface8* pDestSurface) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    IDirect3DSurface8Impl *destSurface = (IDirect3DSurface8Impl *)pDestSurface;
+    HRESULT hr;
+
+    TRACE("(%p) Relay\n" , This);
+
+    if (pDestSurface == NULL) {
+        WARN("(%p) : Caller passed NULL as pDestSurface returning D3DERR_INVALIDCALL\n", This);
+        return D3DERR_INVALIDCALL;
+    }
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_GetFrontBufferData(This->WineD3DDevice, 0, destSurface->wineD3DSurface);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_SetRenderTarget(LPDIRECT3DDEVICE8 iface, IDirect3DSurface8* pRenderTarget, IDirect3DSurface8* pNewZStencil) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    IDirect3DSurface8Impl *pSurface = (IDirect3DSurface8Impl *)pRenderTarget;
+    IDirect3DSurface8Impl *pZSurface = (IDirect3DSurface8Impl *)pNewZStencil;
+    IWineD3DSurface *original_ds = NULL;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d8_cs);
+
+    hr = IWineD3DDevice_GetDepthStencilSurface(This->WineD3DDevice, &original_ds);
+    if (hr == WINED3D_OK || hr == WINED3DERR_NOTFOUND)
+    {
+        hr = IWineD3DDevice_SetDepthStencilSurface(This->WineD3DDevice, pZSurface ? pZSurface->wineD3DSurface : NULL);
+        if (SUCCEEDED(hr) && pSurface)
+            hr = IWineD3DDevice_SetRenderTarget(This->WineD3DDevice, 0, pSurface->wineD3DSurface);
+        if (FAILED(hr)) IWineD3DDevice_SetDepthStencilSurface(This->WineD3DDevice, original_ds);
+    }
+    if (original_ds) IWineD3DSurface_Release(original_ds);
+
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice8Impl_GetRenderTarget(LPDIRECT3DDEVICE8 iface, IDirect3DSurface8** ppRenderTarget) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr = D3D_OK;
+    IWineD3DSurface *pRenderTarget;
+
+    TRACE("(%p) Relay\n" , This);
+
+    if (ppRenderTarget == NULL) {
+        return D3DERR_INVALIDCALL;
+    }
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_GetRenderTarget(This->WineD3DDevice, 0, &pRenderTarget);
+
+    if (hr == D3D_OK && pRenderTarget != NULL) {
+        IWineD3DSurface_GetParent(pRenderTarget,(IUnknown**)ppRenderTarget);
+        IWineD3DSurface_Release(pRenderTarget);
+    } else {
+        FIXME("Call to IWineD3DDevice_GetRenderTarget failed\n");
+        *ppRenderTarget = NULL;
+    }
+    LeaveCriticalSection(&d3d8_cs);
+
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice8Impl_GetDepthStencilSurface(LPDIRECT3DDEVICE8 iface, IDirect3DSurface8** ppZStencilSurface) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr = D3D_OK;
+    IWineD3DSurface *pZStencilSurface;
+
+    TRACE("(%p) Relay\n" , This);
+    if(ppZStencilSurface == NULL){
+        return D3DERR_INVALIDCALL;
+    }
+
+    EnterCriticalSection(&d3d8_cs);
+    hr=IWineD3DDevice_GetDepthStencilSurface(This->WineD3DDevice,&pZStencilSurface);
+    if (hr == WINED3D_OK) {
+        IWineD3DSurface_GetParent(pZStencilSurface,(IUnknown**)ppZStencilSurface);
+        IWineD3DSurface_Release(pZStencilSurface);
+    }else{
+        if (hr != WINED3DERR_NOTFOUND)
+                FIXME("Call to IWineD3DDevice_GetDepthStencilSurface failed with 0x%08x\n", hr);
+        *ppZStencilSurface = NULL;
+    }
+    LeaveCriticalSection(&d3d8_cs);
+
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_BeginScene(LPDIRECT3DDEVICE8 iface) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_BeginScene(This->WineD3DDevice);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_EndScene(LPDIRECT3DDEVICE8 iface) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_EndScene(This->WineD3DDevice);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_Clear(LPDIRECT3DDEVICE8 iface, DWORD Count, CONST D3DRECT* pRects, DWORD Flags, D3DCOLOR Color, float Z, DWORD Stencil) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    /* Note: D3DRECT is compatible with WINED3DRECT */
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_Clear(This->WineD3DDevice, Count, (CONST WINED3DRECT*) pRects, Flags, Color, Z, Stencil);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_SetTransform(LPDIRECT3DDEVICE8 iface, D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX* lpMatrix) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    /* Note: D3DMATRIX is compatible with WINED3DMATRIX */
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_SetTransform(This->WineD3DDevice, State, (CONST WINED3DMATRIX*) lpMatrix);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_GetTransform(LPDIRECT3DDEVICE8 iface, D3DTRANSFORMSTATETYPE State,D3DMATRIX* pMatrix) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    /* Note: D3DMATRIX is compatible with WINED3DMATRIX */
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_GetTransform(This->WineD3DDevice, State, (WINED3DMATRIX*) pMatrix);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_MultiplyTransform(LPDIRECT3DDEVICE8 iface, D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX* pMatrix) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    /* Note: D3DMATRIX is compatible with WINED3DMATRIX */
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_MultiplyTransform(This->WineD3DDevice, State, (CONST WINED3DMATRIX*) pMatrix);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_SetViewport(LPDIRECT3DDEVICE8 iface, CONST D3DVIEWPORT8* pViewport) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    /* Note: D3DVIEWPORT8 is compatible with WINED3DVIEWPORT */
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_SetViewport(This->WineD3DDevice, (const WINED3DVIEWPORT *)pViewport);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_GetViewport(LPDIRECT3DDEVICE8 iface, D3DVIEWPORT8* pViewport) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    /* Note: D3DVIEWPORT8 is compatible with WINED3DVIEWPORT */
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_GetViewport(This->WineD3DDevice, (WINED3DVIEWPORT *)pViewport);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_SetMaterial(LPDIRECT3DDEVICE8 iface, CONST D3DMATERIAL8* pMaterial) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    /* Note: D3DMATERIAL8 is compatible with WINED3DMATERIAL */
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_SetMaterial(This->WineD3DDevice, (const WINED3DMATERIAL *)pMaterial);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_GetMaterial(LPDIRECT3DDEVICE8 iface, D3DMATERIAL8* pMaterial) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    /* Note: D3DMATERIAL8 is compatible with WINED3DMATERIAL */
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_GetMaterial(This->WineD3DDevice, (WINED3DMATERIAL *)pMaterial);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_SetLight(LPDIRECT3DDEVICE8 iface, DWORD Index, CONST D3DLIGHT8* pLight) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+ 
+    /* Note: D3DLIGHT8 is compatible with WINED3DLIGHT */
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_SetLight(This->WineD3DDevice, Index, (const WINED3DLIGHT *)pLight);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_GetLight(LPDIRECT3DDEVICE8 iface, DWORD Index,D3DLIGHT8* pLight) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    /* Note: D3DLIGHT8 is compatible with WINED3DLIGHT */
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_GetLight(This->WineD3DDevice, Index, (WINED3DLIGHT *)pLight);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_LightEnable(LPDIRECT3DDEVICE8 iface, DWORD Index,BOOL Enable) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_SetLightEnable(This->WineD3DDevice, Index, Enable);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_GetLightEnable(LPDIRECT3DDEVICE8 iface, DWORD Index,BOOL* pEnable) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_GetLightEnable(This->WineD3DDevice, Index, pEnable);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_SetClipPlane(LPDIRECT3DDEVICE8 iface, DWORD Index,CONST float* pPlane) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_SetClipPlane(This->WineD3DDevice, Index, pPlane);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_GetClipPlane(LPDIRECT3DDEVICE8 iface, DWORD Index,float* pPlane) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_GetClipPlane(This->WineD3DDevice, Index, pPlane);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_SetRenderState(LPDIRECT3DDEVICE8 iface, D3DRENDERSTATETYPE State,DWORD Value) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_SetRenderState(This->WineD3DDevice, State, Value);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_GetRenderState(LPDIRECT3DDEVICE8 iface, D3DRENDERSTATETYPE State,DWORD* pValue) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_GetRenderState(This->WineD3DDevice, State, pValue);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_BeginStateBlock(LPDIRECT3DDEVICE8 iface) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p)\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_BeginStateBlock(This->WineD3DDevice);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_EndStateBlock(LPDIRECT3DDEVICE8 iface, DWORD* pToken) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    IWineD3DStateBlock* wineD3DStateBlock;
+    IDirect3DStateBlock8Impl* object;
+
+    TRACE("(%p) Relay\n", This);
+
+    /* Tell wineD3D to endstateblock before anything else (in case we run out
+     * of memory later and cause locking problems)
+     */
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_EndStateBlock(This->WineD3DDevice , &wineD3DStateBlock);
+    if (hr != D3D_OK) {
+        FIXME("IWineD3DDevice_EndStateBlock returned an error\n");
+        LeaveCriticalSection(&d3d8_cs);
+        return hr;
+    }
+
+    /* allocate a new IDirectD3DStateBlock */
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY ,sizeof(IDirect3DStateBlock8Impl));
+    object->ref = 1;
+    object->lpVtbl = &Direct3DStateBlock8_Vtbl;
+
+    object->wineD3DStateBlock = wineD3DStateBlock;
+
+    *pToken = (DWORD)object;
+    TRACE("(%p)Returning %p %p\n", This, object, wineD3DStateBlock);
+
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_ApplyStateBlock(LPDIRECT3DDEVICE8 iface, DWORD Token) {
+    IDirect3DStateBlock8Impl *pSB  = (IDirect3DStateBlock8Impl*) Token;
+    IDirect3DDevice8Impl     *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+
+    TRACE("(%p) %p Relay\n", This, pSB);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DStateBlock_Apply(pSB->wineD3DStateBlock);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_CaptureStateBlock(LPDIRECT3DDEVICE8 iface, DWORD Token) {
+    IDirect3DStateBlock8Impl* pSB = (IDirect3DStateBlock8Impl *)Token;
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+
+    TRACE("(%p) %p Relay\n", This, pSB);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DStateBlock_Capture(pSB->wineD3DStateBlock);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_DeleteStateBlock(LPDIRECT3DDEVICE8 iface, DWORD Token) {
+    IDirect3DStateBlock8Impl* pSB = (IDirect3DStateBlock8Impl *)Token;
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    while(IUnknown_Release((IUnknown *)pSB));
+    LeaveCriticalSection(&d3d8_cs);
+
+    return D3D_OK;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_CreateStateBlock(LPDIRECT3DDEVICE8 iface, D3DSTATEBLOCKTYPE Type, DWORD* pToken) {
+   IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+   IDirect3DStateBlock8Impl *object;
+   HRESULT hrc = D3D_OK;
+
+   TRACE("(%p) Relay\n", This);
+
+   if(Type != D3DSBT_ALL         && Type != D3DSBT_PIXELSTATE &&
+      Type != D3DSBT_VERTEXSTATE                              ) {
+       WARN("Unexpected stateblock type, returning D3DERR_INVALIDCALL\n");
+       return D3DERR_INVALIDCALL;
+   }
+
+   object  = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DStateBlock8Impl));
+   if (NULL == object) {
+      *pToken = 0;
+      return E_OUTOFMEMORY;
+   }
+   object->lpVtbl = &Direct3DStateBlock8_Vtbl;
+   object->ref = 1;
+
+   EnterCriticalSection(&d3d8_cs);
+   hrc = IWineD3DDevice_CreateStateBlock(This->WineD3DDevice, (WINED3DSTATEBLOCKTYPE)Type, &object->wineD3DStateBlock, (IUnknown *)object);
+   LeaveCriticalSection(&d3d8_cs);
+   if(D3D_OK != hrc){
+       FIXME("(%p) Call to IWineD3DDevice_CreateStateBlock failed.\n", This);
+       HeapFree(GetProcessHeap(), 0, object);
+       *pToken = 0;
+   } else {
+       *pToken = (DWORD)object;
+       TRACE("(%p) returning token (ptr to stateblock) of %p\n", This, object);
+   }
+
+   return hrc;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_SetClipStatus(LPDIRECT3DDEVICE8 iface, CONST D3DCLIPSTATUS8* pClipStatus) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+/* FIXME: Verify that D3DCLIPSTATUS8 ~= WINED3DCLIPSTATUS */
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_SetClipStatus(This->WineD3DDevice, (const WINED3DCLIPSTATUS *)pClipStatus);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_GetClipStatus(LPDIRECT3DDEVICE8 iface, D3DCLIPSTATUS8* pClipStatus) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_GetClipStatus(This->WineD3DDevice, (WINED3DCLIPSTATUS *)pClipStatus);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_GetTexture(LPDIRECT3DDEVICE8 iface, DWORD Stage,IDirect3DBaseTexture8** ppTexture) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    IWineD3DBaseTexture *retTexture = NULL;
+    HRESULT rc = D3D_OK;
+
+    TRACE("(%p) Relay\n" , This);
+
+    if(ppTexture == NULL){
+        return D3DERR_INVALIDCALL;
+    }
+
+    EnterCriticalSection(&d3d8_cs);
+    rc = IWineD3DDevice_GetTexture(This->WineD3DDevice, Stage, &retTexture);
+    if (rc == D3D_OK && NULL != retTexture) {
+        IWineD3DBaseTexture_GetParent(retTexture, (IUnknown **)ppTexture);
+        IWineD3DBaseTexture_Release(retTexture);
+    } else {
+        FIXME("Call to get texture  (%d) failed (%p)\n", Stage, retTexture);
+        *ppTexture = NULL;
+    }
+    LeaveCriticalSection(&d3d8_cs);
+
+    return rc;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_SetTexture(LPDIRECT3DDEVICE8 iface, DWORD Stage, IDirect3DBaseTexture8* pTexture) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay %d %p\n" , This, Stage, pTexture);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_SetTexture(This->WineD3DDevice, Stage,
+                                   pTexture==NULL ? NULL : ((IDirect3DBaseTexture8Impl *)pTexture)->wineD3DBaseTexture);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice8Impl_GetTextureStageState(LPDIRECT3DDEVICE8 iface, DWORD Stage,D3DTEXTURESTAGESTATETYPE Type,DWORD* pValue) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    switch(Type) {
+    case D3DTSS_ADDRESSU:
+        Type = WINED3DSAMP_ADDRESSU;
+        break;
+    case D3DTSS_ADDRESSV:
+        Type = WINED3DSAMP_ADDRESSV;
+        break;
+    case D3DTSS_ADDRESSW:
+        Type = WINED3DSAMP_ADDRESSW;
+        break;
+    case D3DTSS_BORDERCOLOR:
+        Type = WINED3DSAMP_BORDERCOLOR;
+        break;
+    case D3DTSS_MAGFILTER:
+        Type = WINED3DSAMP_MAGFILTER;
+        break;
+    case D3DTSS_MAXANISOTROPY:
+        Type = WINED3DSAMP_MAXANISOTROPY;
+        break;
+    case D3DTSS_MAXMIPLEVEL:
+        Type = WINED3DSAMP_MAXMIPLEVEL;
+        break;
+    case D3DTSS_MINFILTER:
+        Type = WINED3DSAMP_MINFILTER;
+        break;
+    case D3DTSS_MIPFILTER:
+        Type = WINED3DSAMP_MIPFILTER;
+        break;
+    case D3DTSS_MIPMAPLODBIAS:
+        Type = WINED3DSAMP_MIPMAPLODBIAS;
+        break;
+    default:
+        EnterCriticalSection(&d3d8_cs);
+        hr = IWineD3DDevice_GetTextureStageState(This->WineD3DDevice, Stage, Type, pValue);
+        LeaveCriticalSection(&d3d8_cs);
+        return hr;
+    }
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_GetSamplerState(This->WineD3DDevice, Stage, Type, pValue);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_SetTextureStageState(LPDIRECT3DDEVICE8 iface, DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    switch(Type) {
+    case D3DTSS_ADDRESSU:
+        Type = WINED3DSAMP_ADDRESSU;
+        break;
+    case D3DTSS_ADDRESSV:
+        Type = WINED3DSAMP_ADDRESSV;
+        break;
+    case D3DTSS_ADDRESSW:
+        Type = WINED3DSAMP_ADDRESSW;
+        break;
+    case D3DTSS_BORDERCOLOR:
+        Type = WINED3DSAMP_BORDERCOLOR;
+        break;
+    case D3DTSS_MAGFILTER:
+        Type = WINED3DSAMP_MAGFILTER;
+        break;
+    case D3DTSS_MAXANISOTROPY:
+        Type = WINED3DSAMP_MAXANISOTROPY;
+        break;
+    case D3DTSS_MAXMIPLEVEL:
+        Type = WINED3DSAMP_MAXMIPLEVEL;
+        break;
+    case D3DTSS_MINFILTER:
+        Type = WINED3DSAMP_MINFILTER;
+        break;
+    case D3DTSS_MIPFILTER:
+        Type = WINED3DSAMP_MIPFILTER;
+        break;
+    case D3DTSS_MIPMAPLODBIAS:
+        Type = WINED3DSAMP_MIPMAPLODBIAS;
+        break;
+    default:
+        EnterCriticalSection(&d3d8_cs);
+        hr = IWineD3DDevice_SetTextureStageState(This->WineD3DDevice, Stage, Type, Value);
+        LeaveCriticalSection(&d3d8_cs);
+        return hr;
+    }
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_SetSamplerState(This->WineD3DDevice, Stage, Type, Value);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_ValidateDevice(LPDIRECT3DDEVICE8 iface, DWORD* pNumPasses) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_ValidateDevice(This->WineD3DDevice, pNumPasses);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_GetInfo(LPDIRECT3DDEVICE8 iface, DWORD DevInfoID, void* pDevInfoStruct, DWORD DevInfoStructSize) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    FIXME("(%p) : stub\n", This);
+    return D3D_OK;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_SetPaletteEntries(LPDIRECT3DDEVICE8 iface, UINT PaletteNumber, CONST PALETTEENTRY* pEntries) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_SetPaletteEntries(This->WineD3DDevice, PaletteNumber, pEntries);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_GetPaletteEntries(LPDIRECT3DDEVICE8 iface, UINT PaletteNumber, PALETTEENTRY* pEntries) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_GetPaletteEntries(This->WineD3DDevice, PaletteNumber, pEntries);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_SetCurrentTexturePalette(LPDIRECT3DDEVICE8 iface, UINT PaletteNumber) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_SetCurrentTexturePalette(This->WineD3DDevice, PaletteNumber);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice8Impl_GetCurrentTexturePalette(LPDIRECT3DDEVICE8 iface, UINT *PaletteNumber) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_GetCurrentTexturePalette(This->WineD3DDevice, PaletteNumber);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_DrawPrimitive(LPDIRECT3DDEVICE8 iface, D3DPRIMITIVETYPE PrimitiveType, UINT StartVertex, UINT PrimitiveCount) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface; 
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_DrawPrimitive(This->WineD3DDevice, PrimitiveType, StartVertex, PrimitiveCount);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_DrawIndexedPrimitive(LPDIRECT3DDEVICE8 iface, D3DPRIMITIVETYPE PrimitiveType,
+                                                           UINT MinVertexIndex,UINT NumVertices,UINT startIndex,UINT primCount) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_DrawIndexedPrimitive(This->WineD3DDevice, PrimitiveType, MinVertexIndex, NumVertices, startIndex, primCount);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_DrawPrimitiveUP(LPDIRECT3DDEVICE8 iface, D3DPRIMITIVETYPE PrimitiveType,UINT PrimitiveCount,CONST void* pVertexStreamZeroData,UINT VertexStreamZeroStride) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_DrawPrimitiveUP(This->WineD3DDevice, PrimitiveType, PrimitiveCount, pVertexStreamZeroData, VertexStreamZeroStride);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_DrawIndexedPrimitiveUP(LPDIRECT3DDEVICE8 iface, D3DPRIMITIVETYPE PrimitiveType,UINT MinVertexIndex,
+                                                             UINT NumVertexIndices,UINT PrimitiveCount,CONST void* pIndexData,
+                                                             D3DFORMAT IndexDataFormat,CONST void* pVertexStreamZeroData,
+                                                             UINT VertexStreamZeroStride) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_DrawIndexedPrimitiveUP(This->WineD3DDevice, PrimitiveType, MinVertexIndex, NumVertexIndices, PrimitiveCount,
+                                               pIndexData, IndexDataFormat, pVertexStreamZeroData, VertexStreamZeroStride);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_ProcessVertices(LPDIRECT3DDEVICE8 iface, UINT SrcStartIndex,UINT DestIndex,UINT VertexCount,IDirect3DVertexBuffer8* pDestBuffer,DWORD Flags) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_ProcessVertices(This->WineD3DDevice,SrcStartIndex, DestIndex, VertexCount, ((IDirect3DVertexBuffer8Impl *)pDestBuffer)->wineD3DVertexBuffer, NULL, Flags);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT IDirect3DDevice8Impl_CreateVertexDeclaration(IDirect3DDevice8 *iface, CONST DWORD *declaration, IDirect3DVertexDeclaration8 **decl_ptr) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    IDirect3DVertexDeclaration8Impl *object;
+    WINED3DVERTEXELEMENT *wined3d_elements;
+    UINT wined3d_element_count;
+    HRESULT hr = D3D_OK;
+
+    TRACE("(%p) : declaration %p\n", This, declaration);
+
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object));
+    if (!object) {
+        ERR("Memory allocation failed\n");
+        *decl_ptr = NULL;
+        return D3DERR_OUTOFVIDEOMEMORY;
+    }
+
+    object->ref_count = 1;
+    object->lpVtbl = &Direct3DVertexDeclaration8_Vtbl;
+
+    wined3d_element_count = convert_to_wined3d_declaration(declaration, &object->elements_size, &wined3d_elements);
+    object->elements = HeapAlloc(GetProcessHeap(), 0, object->elements_size);
+    if (!object->elements) {
+        ERR("Memory allocation failed\n");
+        HeapFree(GetProcessHeap(), 0, wined3d_elements);
+        HeapFree(GetProcessHeap(), 0, object);
+        *decl_ptr = NULL;
+        return D3DERR_OUTOFVIDEOMEMORY;
+    }
+
+    CopyMemory(object->elements, declaration, object->elements_size);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_CreateVertexDeclaration(This->WineD3DDevice, &object->wined3d_vertex_declaration,
+            (IUnknown *)object, wined3d_elements, wined3d_element_count);
+    LeaveCriticalSection(&d3d8_cs);
+    HeapFree(GetProcessHeap(), 0, wined3d_elements);
+
+    if (FAILED(hr)) {
+        ERR("(%p) : IWineD3DDevice_CreateVertexDeclaration call failed\n", This);
+        HeapFree(GetProcessHeap(), 0, object->elements);
+        HeapFree(GetProcessHeap(), 0, object);
+    } else {
+        *decl_ptr = (IDirect3DVertexDeclaration8 *)object;
+        TRACE("(%p) : Created vertex declaration %p\n", This, object);
+    }
+
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_CreateVertexShader(LPDIRECT3DDEVICE8 iface, CONST DWORD* pDeclaration, CONST DWORD* pFunction, DWORD* ppShader, DWORD Usage) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hrc = D3D_OK;
+    IDirect3DVertexShader8Impl *object;
+    IWineD3DVertexDeclaration *wined3d_vertex_declaration;
+    const DWORD *token = pDeclaration;
+
+    /* Test if the vertex declaration is valid */
+    while (D3DVSD_END() != *token) {
+        D3DVSD_TOKENTYPE token_type = ((*token & D3DVSD_TOKENTYPEMASK) >> D3DVSD_TOKENTYPESHIFT);
+
+        if (token_type == D3DVSD_TOKEN_STREAMDATA && !(token_type & 0x10000000)) {
+            DWORD type = ((*token & D3DVSD_DATATYPEMASK) >> D3DVSD_DATATYPESHIFT);
+            DWORD reg  = ((*token & D3DVSD_VERTEXREGMASK) >> D3DVSD_VERTEXREGSHIFT);
+
+            if(reg == D3DVSDE_NORMAL && type != D3DVSDT_FLOAT3 && !pFunction) {
+                WARN("Attempt to use a non-FLOAT3 normal with the fixed function function\n");
+                return D3DERR_INVALIDCALL;
+            }
+        }
+        token += parse_token(token);
+    }
+
+    /* Setup a stub object for now */
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object));
+    TRACE("(%p) : pFunction(%p), ppShader(%p)\n", This, pFunction, ppShader);
+    if (NULL == object) {
+        FIXME("Allocation of memory failed\n");
+        *ppShader = 0;
+        return D3DERR_OUTOFVIDEOMEMORY;
+    }
+
+    object->ref = 1;
+    object->lpVtbl = &Direct3DVertexShader8_Vtbl;
+
+    EnterCriticalSection(&d3d8_cs);
+    hrc = IDirect3DDevice8Impl_CreateVertexDeclaration(iface, pDeclaration, &object->vertex_declaration);
+    if (FAILED(hrc)) {
+        ERR("(%p) : IDirect3DDeviceImpl_CreateVertexDeclaration call failed\n", This);
+        LeaveCriticalSection(&d3d8_cs);
+        HeapFree(GetProcessHeap(), 0, object);
+        *ppShader = 0;
+        return D3DERR_INVALIDCALL;
+    }
+    wined3d_vertex_declaration = ((IDirect3DVertexDeclaration8Impl *)object->vertex_declaration)->wined3d_vertex_declaration;
+
+    /* Usage is missing ... Use SetRenderState to set the sw vp render state in SetVertexShader */
+    hrc = IWineD3DDevice_CreateVertexShader(This->WineD3DDevice, wined3d_vertex_declaration, pFunction, &object->wineD3DVertexShader, (IUnknown *)object);
+
+    if (FAILED(hrc)) {
+        /* free up object */
+        FIXME("Call to IWineD3DDevice_CreateVertexShader failed\n");
+        HeapFree(GetProcessHeap(), 0, object);
+        *ppShader = 0;
+    } else {
+        /* TODO: Store the VS declarations locally so that they can be dereferenced with a value higher than VS_HIGHESTFIXEDFXF */
+        shader_handle *handle = alloc_shader_handle(This);
+        if (!handle) {
+            ERR("Failed to allocate shader handle\n");
+            IDirect3DVertexShader8_Release((IUnknown *)object);
+            hrc = E_OUTOFMEMORY;
+        } else {
+            *handle = object;
+            object->handle = (handle - This->shader_handles) + VS_HIGHESTFIXEDFXF + 1;
+            *ppShader = object->handle;
+
+            load_local_constants(pDeclaration, object->wineD3DVertexShader);
+            TRACE("(%p) : returning %p (handle %#x)\n", This, object, *ppShader);
+        }
+    }
+    LeaveCriticalSection(&d3d8_cs);
+
+    return hrc;
+}
+
+static IWineD3DVertexDeclaration *IDirect3DDevice8Impl_FindDecl(IDirect3DDevice8Impl *This, DWORD fvf)
+{
+    HRESULT hr;
+    IWineD3DVertexDeclaration* pDecl = NULL;
+    int p, low, high; /* deliberately signed */
+    struct FvfToDecl *convertedDecls = This->decls;
+
+    TRACE("Searching for declaration for fvf %08x... ", fvf);
+
+    low = 0;
+    high = This->numConvertedDecls - 1;
+    while(low <= high) {
+        p = (low + high) >> 1;
+        TRACE("%d ", p);
+        if(convertedDecls[p].fvf == fvf) {
+            TRACE("found %p\n", convertedDecls[p].decl);
+            return convertedDecls[p].decl;
+        } else if(convertedDecls[p].fvf < fvf) {
+            low = p + 1;
+        } else {
+            high = p - 1;
+        }
+    }
+    TRACE("not found. Creating and inserting at position %d.\n", low);
+
+    hr = IWineD3DDevice_CreateVertexDeclarationFromFVF(This->WineD3DDevice,
+                                                       &pDecl,
+                                                       (IUnknown *) This,
+                                                       fvf);
+    if (FAILED(hr)) return NULL;
+
+    if(This->declArraySize == This->numConvertedDecls) {
+        int grow = This->declArraySize / 2;
+        convertedDecls = HeapReAlloc(GetProcessHeap(), 0, convertedDecls,
+                                     sizeof(convertedDecls[0]) * (This->numConvertedDecls + grow));
+        if(!convertedDecls) {
+            /* This will destroy it */
+            IWineD3DVertexDeclaration_Release(pDecl);
+            return NULL;
+        }
+        This->decls = convertedDecls;
+        This->declArraySize += grow;
+    }
+
+    memmove(convertedDecls + low + 1, convertedDecls + low, sizeof(convertedDecls[0]) * (This->numConvertedDecls - low));
+    convertedDecls[low].decl = pDecl;
+    convertedDecls[low].fvf = fvf;
+    This->numConvertedDecls++;
+
+    TRACE("Returning %p. %d decls in array\n", pDecl, This->numConvertedDecls);
+    return pDecl;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_SetVertexShader(LPDIRECT3DDEVICE8 iface, DWORD pShader) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hrc = D3D_OK;
+
+    TRACE("(%p) : Relay\n", This);
+    EnterCriticalSection(&d3d8_cs);
+    if (VS_HIGHESTFIXEDFXF >= pShader) {
+        TRACE("Setting FVF, %d %d\n", VS_HIGHESTFIXEDFXF, pShader);
+        IWineD3DDevice_SetFVF(This->WineD3DDevice, pShader);
+        IWineD3DDevice_SetVertexDeclaration(This->WineD3DDevice, IDirect3DDevice8Impl_FindDecl(This, pShader));
+        IWineD3DDevice_SetVertexShader(This->WineD3DDevice, NULL);
+    } else {
+        TRACE("Setting shader\n");
+        if (This->allocated_shader_handles <= pShader - (VS_HIGHESTFIXEDFXF + 1)) {
+            FIXME("(%p) : Number of shaders exceeds the maximum number of possible shaders\n", This);
+            hrc = D3DERR_INVALIDCALL;
+        } else {
+            IDirect3DVertexShader8Impl *shader = This->shader_handles[pShader - (VS_HIGHESTFIXEDFXF + 1)];
+            IWineD3DDevice_SetVertexDeclaration(This->WineD3DDevice,
+                    shader ? ((IDirect3DVertexDeclaration8Impl *)shader->vertex_declaration)->wined3d_vertex_declaration : NULL);
+            hrc = IWineD3DDevice_SetVertexShader(This->WineD3DDevice, 0 == shader ? NULL : shader->wineD3DVertexShader);
+        }
+    }
+    TRACE("(%p) : returning hr(%u)\n", This, hrc);
+    LeaveCriticalSection(&d3d8_cs);
+
+    return hrc;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_GetVertexShader(LPDIRECT3DDEVICE8 iface, DWORD* ppShader) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    IWineD3DVertexShader *pShader;
+    HRESULT hrc = D3D_OK;
+
+    TRACE("(%p) : Relay  device@%p\n", This, This->WineD3DDevice);
+    EnterCriticalSection(&d3d8_cs);
+    hrc = IWineD3DDevice_GetVertexShader(This->WineD3DDevice, &pShader);
+    if (D3D_OK == hrc) {
+        if(0 != pShader) {
+            IDirect3DVertexShader8Impl *d3d8_shader;
+            hrc = IWineD3DVertexShader_GetParent(pShader, (IUnknown **)&d3d8_shader);
+            IWineD3DVertexShader_Release(pShader);
+            *ppShader = d3d8_shader->handle;
+        } else {
+            *ppShader = 0;
+            hrc = D3D_OK;
+        }
+    } else {
+        WARN("(%p) : Call to IWineD3DDevice_GetVertexShader failed %u (device %p)\n", This, hrc, This->WineD3DDevice);
+    }
+    TRACE("(%p) : returning %#x\n", This, *ppShader);
+    LeaveCriticalSection(&d3d8_cs);
+
+    return hrc;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice8Impl_DeleteVertexShader(LPDIRECT3DDEVICE8 iface, DWORD pShader) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+
+    TRACE("(%p) : pShader %#x\n", This, pShader);
+
+    EnterCriticalSection(&d3d8_cs);
+    if (pShader <= VS_HIGHESTFIXEDFXF || This->allocated_shader_handles <= pShader - (VS_HIGHESTFIXEDFXF + 1)) {
+        ERR("(%p) : Trying to delete an invalid handle\n", This);
+        LeaveCriticalSection(&d3d8_cs);
+        return D3DERR_INVALIDCALL;
+    } else {
+        IWineD3DVertexShader *cur = NULL;
+        shader_handle *handle = &This->shader_handles[pShader - (VS_HIGHESTFIXEDFXF + 1)];
+        IDirect3DVertexShader8Impl *shader = *handle;
+
+        IWineD3DDevice_GetVertexShader(This->WineD3DDevice, &cur);
+        if(cur) {
+            if(cur == shader->wineD3DVertexShader) IDirect3DDevice8_SetVertexShader(iface, 0);
+            IWineD3DVertexShader_Release(cur);
+        }
+
+        while(IUnknown_Release((IUnknown *)shader));
+        free_shader_handle(This, handle);
+    }
+    LeaveCriticalSection(&d3d8_cs);
+
+    return D3D_OK;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_SetVertexShaderConstant(LPDIRECT3DDEVICE8 iface, DWORD Register, CONST void* pConstantData, DWORD ConstantCount) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) : Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_SetVertexShaderConstantF(This->WineD3DDevice, Register, (CONST float *)pConstantData, ConstantCount);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_GetVertexShaderConstant(LPDIRECT3DDEVICE8 iface, DWORD Register, void* pConstantData, DWORD ConstantCount) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) : Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_GetVertexShaderConstantF(This->WineD3DDevice, Register, (float *)pConstantData, ConstantCount);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_GetVertexShaderDeclaration(LPDIRECT3DDEVICE8 iface, DWORD pVertexShader, void* pData, DWORD* pSizeOfData) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    IDirect3DVertexDeclaration8Impl *declaration;
+    IDirect3DVertexShader8Impl *shader = NULL;
+
+    TRACE("(%p) : pVertexShader 0x%08x, pData %p, *pSizeOfData %u\n", This, pVertexShader, pData, *pSizeOfData);
+
+    EnterCriticalSection(&d3d8_cs);
+    if (pVertexShader <= VS_HIGHESTFIXEDFXF || This->allocated_shader_handles <= pVertexShader - (VS_HIGHESTFIXEDFXF + 1)) {
+        ERR("Passed an invalid shader handle.\n");
+        LeaveCriticalSection(&d3d8_cs);
+        return D3DERR_INVALIDCALL;
+    }
+
+    shader = This->shader_handles[pVertexShader - (VS_HIGHESTFIXEDFXF + 1)];
+    declaration = (IDirect3DVertexDeclaration8Impl *)shader->vertex_declaration;
+
+    /* If pData is NULL, we just return the required size of the buffer. */
+    if (!pData) {
+        *pSizeOfData = declaration->elements_size;
+        LeaveCriticalSection(&d3d8_cs);
+        return D3D_OK;
+    }
+
+    /* MSDN claims that if *pSizeOfData is smaller than the required size
+     * we should write the required size and return D3DERR_MOREDATA.
+     * That's not actually true. */
+    if (*pSizeOfData < declaration->elements_size) {
+        LeaveCriticalSection(&d3d8_cs);
+        return D3DERR_INVALIDCALL;
+    }
+
+    CopyMemory(pData, declaration->elements, declaration->elements_size);
+    LeaveCriticalSection(&d3d8_cs);
+
+    return D3D_OK;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_GetVertexShaderFunction(LPDIRECT3DDEVICE8 iface, DWORD pVertexShader, void* pData, DWORD* pSizeOfData) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    IDirect3DVertexShader8Impl *shader = NULL;
+    HRESULT hr;
+
+    TRACE("(%p) : pVertexShader %#x, pData %p, pSizeOfData %p\n", This, pVertexShader, pData, pSizeOfData);
+
+    EnterCriticalSection(&d3d8_cs);
+    if (pVertexShader <= VS_HIGHESTFIXEDFXF || This->allocated_shader_handles <= pVertexShader - (VS_HIGHESTFIXEDFXF + 1)) {
+        ERR("Passed an invalid shader handle.\n");
+        LeaveCriticalSection(&d3d8_cs);
+        return D3DERR_INVALIDCALL;
+    }
+
+    shader = This->shader_handles[pVertexShader - (VS_HIGHESTFIXEDFXF + 1)];
+    hr = IWineD3DVertexShader_GetFunction(shader->wineD3DVertexShader, pData, pSizeOfData);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_SetIndices(LPDIRECT3DDEVICE8 iface, IDirect3DIndexBuffer8* pIndexData, UINT baseVertexIndex) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    /* WineD3D takes an INT(due to d3d9), but d3d8 uses UINTs. Do I have to add a check here that
+     * the UINT doesn't cause an overflow in the INT? It seems rather unlikely because such large
+     * vertex buffers can't be created to address them with an index that requires the 32nd bit
+     * (4 Byte minimum vertex size * 2^31-1 -> 8 gb buffer. The index sign would be the least
+     * problem)
+     */
+    IWineD3DDevice_SetBaseVertexIndex(This->WineD3DDevice, baseVertexIndex);
+    hr = IWineD3DDevice_SetIndices(This->WineD3DDevice,
+            pIndexData ? ((IDirect3DIndexBuffer8Impl *)pIndexData)->wineD3DIndexBuffer : NULL);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_GetIndices(LPDIRECT3DDEVICE8 iface, IDirect3DIndexBuffer8** ppIndexData,UINT* pBaseVertexIndex) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    IWineD3DIndexBuffer *retIndexData = NULL;
+    HRESULT rc = D3D_OK;
+
+    TRACE("(%p) Relay\n", This);
+
+    if(ppIndexData == NULL){
+        return D3DERR_INVALIDCALL;
+    }
+
+    EnterCriticalSection(&d3d8_cs);
+    /* The case from UINT to INT is safe because d3d8 will never set negative values */
+    IWineD3DDevice_GetBaseVertexIndex(This->WineD3DDevice, (INT *) pBaseVertexIndex);
+    rc = IWineD3DDevice_GetIndices(This->WineD3DDevice, &retIndexData);
+    if (SUCCEEDED(rc) && retIndexData) {
+        IWineD3DIndexBuffer_GetParent(retIndexData, (IUnknown **)ppIndexData);
+        IWineD3DIndexBuffer_Release(retIndexData);
+    } else {
+        if (FAILED(rc)) FIXME("Call to GetIndices failed\n");
+        *ppIndexData = NULL;
+    }
+    LeaveCriticalSection(&d3d8_cs);
+
+    return rc;
+}
+static HRESULT WINAPI IDirect3DDevice8Impl_CreatePixelShader(LPDIRECT3DDEVICE8 iface, CONST DWORD* pFunction, DWORD* ppShader) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    IDirect3DPixelShader8Impl *object;
+    HRESULT hrc = D3D_OK;
+
+    TRACE("(%p) : pFunction(%p), ppShader(%p)\n", This, pFunction, ppShader);
+
+    if (NULL == ppShader) {
+        TRACE("(%p) Invalid call\n", This);
+        return D3DERR_INVALIDCALL;
+    }
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object));
+
+    if (NULL == object) {
+        return E_OUTOFMEMORY;
+    } else {
+        EnterCriticalSection(&d3d8_cs);
+
+        object->ref    = 1;
+        object->lpVtbl = &Direct3DPixelShader8_Vtbl;
+        hrc = IWineD3DDevice_CreatePixelShader(This->WineD3DDevice, pFunction, &object->wineD3DPixelShader , (IUnknown *)object);
+        if (D3D_OK != hrc) {
+            FIXME("(%p) call to IWineD3DDevice_CreatePixelShader failed\n", This);
+            HeapFree(GetProcessHeap(), 0 , object);
+            *ppShader = 0;
+        } else {
+            shader_handle *handle = alloc_shader_handle(This);
+            if (!handle) {
+                ERR("Failed to allocate shader handle\n");
+                IDirect3DVertexShader8_Release((IUnknown *)object);
+                hrc = E_OUTOFMEMORY;
+            } else {
+                *handle = object;
+                object->handle = (handle - This->shader_handles) + VS_HIGHESTFIXEDFXF + 1;
+                *ppShader = object->handle;
+                TRACE("(%p) : returning %p (handle %#x)\n", This, object, *ppShader);
+            }
+        }
+        LeaveCriticalSection(&d3d8_cs);
+    }
+
+    return hrc;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_SetPixelShader(LPDIRECT3DDEVICE8 iface, DWORD pShader) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    IDirect3DPixelShader8Impl *shader = NULL;
+    HRESULT hr;
+
+    TRACE("(%p) : pShader %#x\n", This, pShader);
+
+    EnterCriticalSection(&d3d8_cs);
+    if (pShader > VS_HIGHESTFIXEDFXF && This->allocated_shader_handles > pShader - (VS_HIGHESTFIXEDFXF + 1)) {
+        shader = This->shader_handles[pShader - (VS_HIGHESTFIXEDFXF + 1)];
+    } else if (pShader) {
+        ERR("Trying to set an invalid handle.\n");
+    }
+
+    TRACE("(%p) : Setting shader %p\n", This, shader);
+    hr = IWineD3DDevice_SetPixelShader(This->WineD3DDevice, shader == NULL ? NULL :shader->wineD3DPixelShader);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_GetPixelShader(LPDIRECT3DDEVICE8 iface, DWORD* ppShader) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    IWineD3DPixelShader *object;
+
+    HRESULT hrc = D3D_OK;
+    TRACE("(%p) Relay\n", This);
+    if (NULL == ppShader) {
+        TRACE("(%p) Invalid call\n", This);
+        return D3DERR_INVALIDCALL;
+    }
+
+    EnterCriticalSection(&d3d8_cs);
+    hrc = IWineD3DDevice_GetPixelShader(This->WineD3DDevice, &object);
+    if (D3D_OK == hrc && NULL != object) {
+        IDirect3DPixelShader8Impl *d3d8_shader;
+        hrc = IWineD3DPixelShader_GetParent(object, (IUnknown **)&d3d8_shader);
+        IWineD3DPixelShader_Release(object);
+        *ppShader = d3d8_shader->handle;
+    } else {
+        *ppShader = 0;
+    }
+
+    TRACE("(%p) : returning %#x\n", This, *ppShader);
+    LeaveCriticalSection(&d3d8_cs);
+    return hrc;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_DeletePixelShader(LPDIRECT3DDEVICE8 iface, DWORD pShader) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+
+    TRACE("(%p) : pShader %#x\n", This, pShader);
+
+    EnterCriticalSection(&d3d8_cs);
+    if (pShader <= VS_HIGHESTFIXEDFXF || This->allocated_shader_handles <= pShader - (VS_HIGHESTFIXEDFXF + 1)) {
+        ERR("(%p) : Trying to delete an invalid handle\n", This);
+        LeaveCriticalSection(&d3d8_cs);
+        return D3DERR_INVALIDCALL;
+    } else {
+        IWineD3DPixelShader *cur = NULL;
+        shader_handle *handle = &This->shader_handles[pShader - (VS_HIGHESTFIXEDFXF + 1)];
+        IDirect3DPixelShader8Impl *shader = *handle;
+
+        IWineD3DDevice_GetPixelShader(This->WineD3DDevice, &cur);
+        if(cur) {
+            if(cur == shader->wineD3DPixelShader) IDirect3DDevice8_SetPixelShader(iface, 0);
+            IWineD3DPixelShader_Release(cur);
+        }
+
+        while(IUnknown_Release((IUnknown *)shader));
+        free_shader_handle(This, handle);
+    }
+    LeaveCriticalSection(&d3d8_cs);
+
+    return D3D_OK;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice8Impl_SetPixelShaderConstant(LPDIRECT3DDEVICE8 iface, DWORD Register, CONST void* pConstantData, DWORD ConstantCount) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_SetPixelShaderConstantF(This->WineD3DDevice, Register, (CONST float *)pConstantData, ConstantCount);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_GetPixelShaderConstant(LPDIRECT3DDEVICE8 iface, DWORD Register, void* pConstantData, DWORD ConstantCount) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_GetPixelShaderConstantF(This->WineD3DDevice, Register, (float *)pConstantData, ConstantCount);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_GetPixelShaderFunction(LPDIRECT3DDEVICE8 iface, DWORD pPixelShader, void* pData, DWORD* pSizeOfData) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    IDirect3DPixelShader8Impl *shader = NULL;
+    HRESULT hr;
+
+    TRACE("(%p) : pPixelShader %#x, pData %p, pSizeOfData %p\n", This, pPixelShader, pData, pSizeOfData);
+
+    EnterCriticalSection(&d3d8_cs);
+    if (pPixelShader <= VS_HIGHESTFIXEDFXF || This->allocated_shader_handles <= pPixelShader - (VS_HIGHESTFIXEDFXF + 1)) {
+        ERR("Passed an invalid shader handle.\n");
+        LeaveCriticalSection(&d3d8_cs);
+        return D3DERR_INVALIDCALL;
+    }
+
+    shader = This->shader_handles[pPixelShader - (VS_HIGHESTFIXEDFXF + 1)];
+    hr = IWineD3DPixelShader_GetFunction(shader->wineD3DPixelShader, pData, pSizeOfData);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_DrawRectPatch(LPDIRECT3DDEVICE8 iface, UINT Handle,CONST float* pNumSegs,CONST D3DRECTPATCH_INFO* pRectPatchInfo) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_DrawRectPatch(This->WineD3DDevice, Handle, pNumSegs, (CONST WINED3DRECTPATCH_INFO *)pRectPatchInfo);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_DrawTriPatch(LPDIRECT3DDEVICE8 iface, UINT Handle,CONST float* pNumSegs,CONST D3DTRIPATCH_INFO* pTriPatchInfo) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_DrawTriPatch(This->WineD3DDevice, Handle, pNumSegs, (CONST WINED3DTRIPATCH_INFO *)pTriPatchInfo);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_DeletePatch(LPDIRECT3DDEVICE8 iface, UINT Handle) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_DeletePatch(This->WineD3DDevice, Handle);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_SetStreamSource(LPDIRECT3DDEVICE8 iface, UINT StreamNumber,IDirect3DVertexBuffer8* pStreamData,UINT Stride) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DDevice_SetStreamSource(This->WineD3DDevice, StreamNumber,
+                                        NULL == pStreamData ? NULL : ((IDirect3DVertexBuffer8Impl *)pStreamData)->wineD3DVertexBuffer,
+                                        0/* Offset in bytes */, Stride);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice8Impl_GetStreamSource(LPDIRECT3DDEVICE8 iface, UINT StreamNumber,IDirect3DVertexBuffer8** pStream,UINT* pStride) {
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
+    IWineD3DVertexBuffer *retStream = NULL;
+    HRESULT rc = D3D_OK;
+
+    TRACE("(%p) Relay\n" , This);
+
+    if(pStream == NULL){
+        return D3DERR_INVALIDCALL;
+    }
+
+    EnterCriticalSection(&d3d8_cs);
+    rc = IWineD3DDevice_GetStreamSource(This->WineD3DDevice, StreamNumber, &retStream, 0 /* Offset in bytes */, pStride);
+    if (rc == D3D_OK  && NULL != retStream) {
+        IWineD3DVertexBuffer_GetParent(retStream, (IUnknown **)pStream);
+        IWineD3DVertexBuffer_Release(retStream);
+    }else{
+        if (rc != D3D_OK){
+            FIXME("Call to GetStreamSource failed %p\n",  pStride);
+        }
+        *pStream = NULL;
+    }
+    LeaveCriticalSection(&d3d8_cs);
+
+    return rc;
+}
+
+
+const IDirect3DDevice8Vtbl Direct3DDevice8_Vtbl =
+{
+    IDirect3DDevice8Impl_QueryInterface,
+    IDirect3DDevice8Impl_AddRef,
+    IDirect3DDevice8Impl_Release,
+    IDirect3DDevice8Impl_TestCooperativeLevel,
+    IDirect3DDevice8Impl_GetAvailableTextureMem,
+    IDirect3DDevice8Impl_ResourceManagerDiscardBytes,
+    IDirect3DDevice8Impl_GetDirect3D,
+    IDirect3DDevice8Impl_GetDeviceCaps,
+    IDirect3DDevice8Impl_GetDisplayMode,
+    IDirect3DDevice8Impl_GetCreationParameters,
+    IDirect3DDevice8Impl_SetCursorProperties,
+    IDirect3DDevice8Impl_SetCursorPosition,
+    IDirect3DDevice8Impl_ShowCursor,
+    IDirect3DDevice8Impl_CreateAdditionalSwapChain,
+    IDirect3DDevice8Impl_Reset,
+    IDirect3DDevice8Impl_Present,
+    IDirect3DDevice8Impl_GetBackBuffer,
+    IDirect3DDevice8Impl_GetRasterStatus,
+    IDirect3DDevice8Impl_SetGammaRamp,
+    IDirect3DDevice8Impl_GetGammaRamp,
+    IDirect3DDevice8Impl_CreateTexture,
+    IDirect3DDevice8Impl_CreateVolumeTexture,
+    IDirect3DDevice8Impl_CreateCubeTexture,
+    IDirect3DDevice8Impl_CreateVertexBuffer,
+    IDirect3DDevice8Impl_CreateIndexBuffer,
+    IDirect3DDevice8Impl_CreateRenderTarget,
+    IDirect3DDevice8Impl_CreateDepthStencilSurface,
+    IDirect3DDevice8Impl_CreateImageSurface,
+    IDirect3DDevice8Impl_CopyRects,
+    IDirect3DDevice8Impl_UpdateTexture,
+    IDirect3DDevice8Impl_GetFrontBuffer,
+    IDirect3DDevice8Impl_SetRenderTarget,
+    IDirect3DDevice8Impl_GetRenderTarget,
+    IDirect3DDevice8Impl_GetDepthStencilSurface,
+    IDirect3DDevice8Impl_BeginScene,
+    IDirect3DDevice8Impl_EndScene,
+    IDirect3DDevice8Impl_Clear,
+    IDirect3DDevice8Impl_SetTransform,
+    IDirect3DDevice8Impl_GetTransform,
+    IDirect3DDevice8Impl_MultiplyTransform,
+    IDirect3DDevice8Impl_SetViewport,
+    IDirect3DDevice8Impl_GetViewport,
+    IDirect3DDevice8Impl_SetMaterial,
+    IDirect3DDevice8Impl_GetMaterial,
+    IDirect3DDevice8Impl_SetLight,
+    IDirect3DDevice8Impl_GetLight,
+    IDirect3DDevice8Impl_LightEnable,
+    IDirect3DDevice8Impl_GetLightEnable,
+    IDirect3DDevice8Impl_SetClipPlane,
+    IDirect3DDevice8Impl_GetClipPlane,
+    IDirect3DDevice8Impl_SetRenderState,
+    IDirect3DDevice8Impl_GetRenderState,
+    IDirect3DDevice8Impl_BeginStateBlock,
+    IDirect3DDevice8Impl_EndStateBlock,
+    IDirect3DDevice8Impl_ApplyStateBlock,
+    IDirect3DDevice8Impl_CaptureStateBlock,
+    IDirect3DDevice8Impl_DeleteStateBlock,
+    IDirect3DDevice8Impl_CreateStateBlock,
+    IDirect3DDevice8Impl_SetClipStatus,
+    IDirect3DDevice8Impl_GetClipStatus,
+    IDirect3DDevice8Impl_GetTexture,
+    IDirect3DDevice8Impl_SetTexture,
+    IDirect3DDevice8Impl_GetTextureStageState,
+    IDirect3DDevice8Impl_SetTextureStageState,
+    IDirect3DDevice8Impl_ValidateDevice,
+    IDirect3DDevice8Impl_GetInfo,
+    IDirect3DDevice8Impl_SetPaletteEntries,
+    IDirect3DDevice8Impl_GetPaletteEntries,
+    IDirect3DDevice8Impl_SetCurrentTexturePalette,
+    IDirect3DDevice8Impl_GetCurrentTexturePalette,
+    IDirect3DDevice8Impl_DrawPrimitive,
+    IDirect3DDevice8Impl_DrawIndexedPrimitive,
+    IDirect3DDevice8Impl_DrawPrimitiveUP,
+    IDirect3DDevice8Impl_DrawIndexedPrimitiveUP,
+    IDirect3DDevice8Impl_ProcessVertices,
+    IDirect3DDevice8Impl_CreateVertexShader,
+    IDirect3DDevice8Impl_SetVertexShader,
+    IDirect3DDevice8Impl_GetVertexShader,
+    IDirect3DDevice8Impl_DeleteVertexShader,
+    IDirect3DDevice8Impl_SetVertexShaderConstant,
+    IDirect3DDevice8Impl_GetVertexShaderConstant,
+    IDirect3DDevice8Impl_GetVertexShaderDeclaration,
+    IDirect3DDevice8Impl_GetVertexShaderFunction,
+    IDirect3DDevice8Impl_SetStreamSource,
+    IDirect3DDevice8Impl_GetStreamSource,
+    IDirect3DDevice8Impl_SetIndices,
+    IDirect3DDevice8Impl_GetIndices,
+    IDirect3DDevice8Impl_CreatePixelShader,
+    IDirect3DDevice8Impl_SetPixelShader,
+    IDirect3DDevice8Impl_GetPixelShader,
+    IDirect3DDevice8Impl_DeletePixelShader,
+    IDirect3DDevice8Impl_SetPixelShaderConstant,
+    IDirect3DDevice8Impl_GetPixelShaderConstant,
+    IDirect3DDevice8Impl_GetPixelShaderFunction,
+    IDirect3DDevice8Impl_DrawRectPatch,
+    IDirect3DDevice8Impl_DrawTriPatch,
+    IDirect3DDevice8Impl_DeletePatch
+};
+
+/* Internal function called back during the CreateDevice to create a render target  */
+HRESULT WINAPI D3D8CB_CreateSurface(IUnknown *device, IUnknown *pSuperior, UINT Width, UINT Height,
+                                         WINED3DFORMAT Format, DWORD Usage, WINED3DPOOL Pool, UINT Level,
+                                         WINED3DCUBEMAP_FACES Face, IWineD3DSurface **ppSurface,
+                                         HANDLE *pSharedHandle) {
+
+    HRESULT res = D3D_OK;
+    IDirect3DSurface8Impl *d3dSurface = NULL;
+    BOOL Lockable = TRUE;
+
+    if((WINED3DPOOL_DEFAULT == Pool && WINED3DUSAGE_DYNAMIC != Usage))
+        Lockable = FALSE;
+
+    TRACE("relay\n");
+    res = IDirect3DDevice8Impl_CreateSurface((IDirect3DDevice8 *)device, Width, Height, (D3DFORMAT)Format, Lockable, FALSE/*Discard*/, Level,  (IDirect3DSurface8 **)&d3dSurface, D3DRTYPE_SURFACE, Usage, Pool, D3DMULTISAMPLE_NONE, 0 /* MultisampleQuality */);
+
+    if (SUCCEEDED(res)) {
+        *ppSurface = d3dSurface->wineD3DSurface;
+        d3dSurface->container = pSuperior;
+        IUnknown_Release(d3dSurface->parentDevice);
+        d3dSurface->parentDevice = NULL;
+        d3dSurface->forwardReference = pSuperior;
+    } else {
+        FIXME("(%p) IDirect3DDevice8_CreateSurface failed\n", device);
+    }
+    return res;
+}
+
+ULONG WINAPI D3D8CB_DestroySurface(IWineD3DSurface *pSurface) {
+    IDirect3DSurface8Impl* surfaceParent;
+    TRACE("(%p) call back\n", pSurface);
+
+    IWineD3DSurface_GetParent(pSurface, (IUnknown **) &surfaceParent);
+    /* GetParent's AddRef was forwarded to an object in destruction.
+     * Releasing it here again would cause an endless recursion. */
+    surfaceParent->forwardReference = NULL;
+    return IDirect3DSurface8_Release((IDirect3DSurface8*) surfaceParent);
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/directx.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/directx.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/directx.c	(revision 16410)
@@ -0,0 +1,508 @@
+/*
+ * IDirect3D8 implementation
+ *
+ * Copyright 2002-2004 Jason Edmeades
+ * Copyright 2003-2004 Raphael Junqueira
+ * Copyright 2004 Christian Costa
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+
+#include <stdarg.h>
+
+#define NONAMELESSUNION
+#define NONAMELESSSTRUCT
+#include "windef.h"
+#include "winbase.h"
+#include "wingdi.h"
+#include "winuser.h"
+#include "wine/debug.h"
+#include "wine/unicode.h"
+
+#include "d3d8_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d8);
+
+/* IDirect3D IUnknown parts follow: */
+static HRESULT WINAPI IDirect3D8Impl_QueryInterface(LPDIRECT3D8 iface, REFIID riid,LPVOID *ppobj)
+{
+    IDirect3D8Impl *This = (IDirect3D8Impl *)iface;
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3D8)) {
+        IUnknown_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid),ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3D8Impl_AddRef(LPDIRECT3D8 iface) {
+    IDirect3D8Impl *This = (IDirect3D8Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+    return ref;
+}
+
+static ULONG WINAPI IDirect3D8Impl_Release(LPDIRECT3D8 iface) {
+    IDirect3D8Impl *This = (IDirect3D8Impl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+        TRACE("Releasing wined3d %p\n", This->WineD3D);
+        IWineD3D_Release(This->WineD3D);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+
+    return ref;
+}
+
+/* IDirect3D8 Interface follow: */
+static HRESULT WINAPI IDirect3D8Impl_RegisterSoftwareDevice (LPDIRECT3D8 iface, void* pInitializeFunction) {
+    IDirect3D8Impl *This = (IDirect3D8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p)->(%p)\n", This, pInitializeFunction);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3D_RegisterSoftwareDevice(This->WineD3D, pInitializeFunction);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static UINT WINAPI IDirect3D8Impl_GetAdapterCount (LPDIRECT3D8 iface) {
+    IDirect3D8Impl *This = (IDirect3D8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p)\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3D_GetAdapterCount(This->WineD3D);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3D8Impl_GetAdapterIdentifier       (LPDIRECT3D8 iface,
+                                                            UINT Adapter, DWORD Flags, D3DADAPTER_IDENTIFIER8* pIdentifier) {
+    IDirect3D8Impl *This = (IDirect3D8Impl *)iface;
+    WINED3DADAPTER_IDENTIFIER adapter_id;
+    HRESULT hr;
+
+    TRACE("(%p)->(%d,%08x, %p\n", This, Adapter, Flags, pIdentifier);
+    EnterCriticalSection(&d3d8_cs);
+    /* dx8 and dx9 have different structures to be filled in, with incompatible 
+       layouts so pass in pointers to the places to be filled via an internal 
+       structure                                                                */
+    adapter_id.Driver           = pIdentifier->Driver;
+    adapter_id.Description      = pIdentifier->Description;
+    adapter_id.DeviceName       = NULL; /* d3d9 only */
+    adapter_id.DriverVersion    = &pIdentifier->DriverVersion;
+    adapter_id.VendorId         = &pIdentifier->VendorId;
+    adapter_id.DeviceId         = &pIdentifier->DeviceId;
+    adapter_id.SubSysId         = &pIdentifier->SubSysId;
+    adapter_id.Revision         = &pIdentifier->Revision;
+    adapter_id.DeviceIdentifier = &pIdentifier->DeviceIdentifier;
+    adapter_id.WHQLLevel        = &pIdentifier->WHQLLevel;
+
+    hr = IWineD3D_GetAdapterIdentifier(This->WineD3D, Adapter, Flags, &adapter_id);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static UINT WINAPI IDirect3D8Impl_GetAdapterModeCount (LPDIRECT3D8 iface,UINT Adapter) {
+    IDirect3D8Impl *This = (IDirect3D8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p)->(%d)\n", This, Adapter);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3D_GetAdapterModeCount(This->WineD3D, Adapter, 0 /* format */);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3D8Impl_EnumAdapterModes (LPDIRECT3D8 iface, UINT Adapter, UINT Mode, D3DDISPLAYMODE* pMode) {
+    IDirect3D8Impl *This = (IDirect3D8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p)->(%d, %d, %p)\n", This, Adapter, Mode, pMode);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3D_EnumAdapterModes(This->WineD3D, Adapter, WINED3DFMT_UNKNOWN, Mode, (WINED3DDISPLAYMODE *) pMode);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3D8Impl_GetAdapterDisplayMode (LPDIRECT3D8 iface, UINT Adapter, D3DDISPLAYMODE* pMode) {
+    IDirect3D8Impl *This = (IDirect3D8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p)->(%d,%p)\n", This, Adapter, pMode);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3D_GetAdapterDisplayMode(This->WineD3D, Adapter, (WINED3DDISPLAYMODE *) pMode);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3D8Impl_CheckDeviceType            (LPDIRECT3D8 iface,
+                                                            UINT Adapter, D3DDEVTYPE CheckType, D3DFORMAT DisplayFormat,
+                                                            D3DFORMAT BackBufferFormat, BOOL Windowed) {
+    IDirect3D8Impl *This = (IDirect3D8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p)->(%d, %d, %d, %d, %s)\n", This, Adapter, CheckType, DisplayFormat, BackBufferFormat, Windowed ? "true" : "false");
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3D_CheckDeviceType(This->WineD3D, Adapter, CheckType, DisplayFormat,
+                                    BackBufferFormat, Windowed);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3D8Impl_CheckDeviceFormat          (LPDIRECT3D8 iface,
+                                                            UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat,
+                                                            DWORD Usage, D3DRESOURCETYPE RType, D3DFORMAT CheckFormat) {
+    IDirect3D8Impl *This = (IDirect3D8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p)->(%d, %d, %d, %08x, %d, %d)\n", This, Adapter, DeviceType, AdapterFormat, Usage, RType, CheckFormat);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3D_CheckDeviceFormat(This->WineD3D, Adapter, DeviceType, AdapterFormat,
+                                    Usage, RType, CheckFormat, SURFACE_OPENGL);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3D8Impl_CheckDeviceMultiSampleType(LPDIRECT3D8 iface,
+							   UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SurfaceFormat,
+							   BOOL Windowed, D3DMULTISAMPLE_TYPE MultiSampleType) {
+    IDirect3D8Impl *This = (IDirect3D8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p)-<(%d, %d, %d, %s, %d)\n", This, Adapter, DeviceType, SurfaceFormat, Windowed ? "true" : "false", MultiSampleType);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3D_CheckDeviceMultiSampleType(This->WineD3D, Adapter, DeviceType, SurfaceFormat,
+                                               Windowed, (WINED3DMULTISAMPLE_TYPE) MultiSampleType, NULL);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3D8Impl_CheckDepthStencilMatch(LPDIRECT3D8 iface, 
+						       UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat,
+						       D3DFORMAT RenderTargetFormat, D3DFORMAT DepthStencilFormat) {
+    IDirect3D8Impl *This = (IDirect3D8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p)-<(%d, %d, %d, %d, %d)\n", This, Adapter, DeviceType, AdapterFormat, RenderTargetFormat, DepthStencilFormat);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3D_CheckDepthStencilMatch(This->WineD3D, Adapter, DeviceType, AdapterFormat,
+                                           RenderTargetFormat, DepthStencilFormat);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3D8Impl_GetDeviceCaps(LPDIRECT3D8 iface, UINT Adapter, D3DDEVTYPE DeviceType, D3DCAPS8* pCaps) {
+    IDirect3D8Impl *This = (IDirect3D8Impl *)iface;
+    HRESULT hrc = D3D_OK;
+    WINED3DCAPS *pWineCaps;
+
+    TRACE("(%p) Relay %d %u %p\n", This, Adapter, DeviceType, pCaps);
+
+    if(NULL == pCaps){
+        return D3DERR_INVALIDCALL;
+    }
+    pWineCaps = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WINED3DCAPS));
+    if(pWineCaps == NULL){
+        return D3DERR_INVALIDCALL; /*well this is what MSDN says to return*/
+    }
+    EnterCriticalSection(&d3d8_cs);
+    hrc = IWineD3D_GetDeviceCaps(This->WineD3D, Adapter, DeviceType, pWineCaps);
+    LeaveCriticalSection(&d3d8_cs);
+    WINECAPSTOD3D8CAPS(pCaps, pWineCaps)
+    HeapFree(GetProcessHeap(), 0, pWineCaps);
+
+    /* D3D8 doesn't support SM 2.0 or higher, so clamp to 1.x */
+    if(pCaps->PixelShaderVersion > D3DPS_VERSION(1,4)){
+        pCaps->PixelShaderVersion = D3DPS_VERSION(1,4);
+    }
+    if(pCaps->VertexShaderVersion > D3DVS_VERSION(1,1)){
+        pCaps->VertexShaderVersion = D3DVS_VERSION(1,1);
+    }
+
+    TRACE("(%p) returning %p\n", This, pCaps);
+    return hrc;
+}
+
+static HMONITOR WINAPI  IDirect3D8Impl_GetAdapterMonitor(LPDIRECT3D8 iface, UINT Adapter) {
+    IDirect3D8Impl *This = (IDirect3D8Impl *)iface;
+    HMONITOR ret;
+    TRACE("(%p)->(%d)\n", This, Adapter);
+
+    EnterCriticalSection(&d3d8_cs);
+    ret = IWineD3D_GetAdapterMonitor(This->WineD3D, Adapter);
+    LeaveCriticalSection(&d3d8_cs);
+    return ret;
+}
+
+/* Internal function called back during the CreateDevice to create a render target */
+HRESULT WINAPI D3D8CB_CreateRenderTarget(IUnknown *device, IUnknown *pSuperior, UINT Width, UINT Height,
+                                         WINED3DFORMAT Format, WINED3DMULTISAMPLE_TYPE MultiSample,
+                                         DWORD MultisampleQuality, BOOL Lockable,
+                                         IWineD3DSurface** ppSurface, HANDLE* pSharedHandle) {
+    HRESULT res = D3D_OK;
+    IDirect3DSurface8Impl *d3dSurface = NULL;
+
+    TRACE("(%p) call back\n", device);
+    res = IDirect3DDevice8_CreateRenderTarget((IDirect3DDevice8 *)device, Width, Height, 
+                                         (D3DFORMAT)Format, MultiSample, Lockable, 
+                                         (IDirect3DSurface8 **)&d3dSurface);
+
+    if (SUCCEEDED(res)) {
+        *ppSurface = d3dSurface->wineD3DSurface;
+        d3dSurface->container = device;
+        d3dSurface->isImplicit = TRUE;
+        /* Implicit surfaces are created with an refcount of 0 */
+        IUnknown_Release((IUnknown *)d3dSurface);
+    } else {
+        *ppSurface = NULL;
+    }
+    return res;
+}
+
+ULONG WINAPI D3D8CB_DestroyRenderTarget(IWineD3DSurface *pSurface) {
+    IDirect3DSurface8Impl* surfaceParent;
+    TRACE("(%p) call back\n", pSurface);
+
+    IWineD3DSurface_GetParent(pSurface, (IUnknown **) &surfaceParent);
+    surfaceParent->isImplicit = FALSE;
+    /* Surface had refcount of 0 GetParent addrefed to 1, so 1 Release is enough */
+    return IDirect3DSurface8_Release((IDirect3DSurface8*) surfaceParent);
+}
+
+/* Callback for creating the implicit swapchain when the device is created */
+static HRESULT WINAPI D3D8CB_CreateAdditionalSwapChain(IUnknown *device,
+                                                WINED3DPRESENT_PARAMETERS* pPresentationParameters,
+                                                IWineD3DSwapChain ** ppSwapChain){
+    HRESULT res = D3D_OK;
+    IDirect3DSwapChain8Impl *d3dSwapChain = NULL;
+    D3DPRESENT_PARAMETERS localParameters;
+    TRACE("(%p) call back\n", device);
+
+    /* Copy the presentation parameters */
+    localParameters.BackBufferWidth                             = pPresentationParameters->BackBufferWidth;
+    localParameters.BackBufferHeight                            = pPresentationParameters->BackBufferHeight;
+    localParameters.BackBufferFormat                            = pPresentationParameters->BackBufferFormat;
+    localParameters.BackBufferCount                             = pPresentationParameters->BackBufferCount;
+    localParameters.MultiSampleType                             = pPresentationParameters->MultiSampleType;
+    localParameters.SwapEffect                                  = pPresentationParameters->SwapEffect;
+    localParameters.hDeviceWindow                               = pPresentationParameters->hDeviceWindow;
+    localParameters.Windowed                                    = pPresentationParameters->Windowed;
+    localParameters.EnableAutoDepthStencil                      = pPresentationParameters->EnableAutoDepthStencil;
+    localParameters.AutoDepthStencilFormat                      = pPresentationParameters->AutoDepthStencilFormat;
+    localParameters.Flags                                       = pPresentationParameters->Flags;
+    localParameters.FullScreen_RefreshRateInHz                  = pPresentationParameters->FullScreen_RefreshRateInHz;
+    localParameters.FullScreen_PresentationInterval             = pPresentationParameters->PresentationInterval;
+
+    res = IDirect3DDevice8_CreateAdditionalSwapChain((IDirect3DDevice8 *)device, &localParameters, (IDirect3DSwapChain8 **)&d3dSwapChain);
+
+    /* Copy back the presentation parameters */
+    pPresentationParameters->BackBufferWidth                    = localParameters.BackBufferWidth;
+    pPresentationParameters->BackBufferHeight                   = localParameters.BackBufferHeight;
+    pPresentationParameters->BackBufferFormat                   = localParameters.BackBufferFormat;
+    pPresentationParameters->BackBufferCount                    = localParameters.BackBufferCount;
+    pPresentationParameters->MultiSampleType                    = localParameters.MultiSampleType;
+    pPresentationParameters->SwapEffect                         = localParameters.SwapEffect;
+    pPresentationParameters->hDeviceWindow                      = localParameters.hDeviceWindow;
+    pPresentationParameters->Windowed                           = localParameters.Windowed;
+    pPresentationParameters->EnableAutoDepthStencil             = localParameters.EnableAutoDepthStencil;
+    pPresentationParameters->AutoDepthStencilFormat             = localParameters.AutoDepthStencilFormat;
+    pPresentationParameters->Flags                              = localParameters.Flags;
+    pPresentationParameters->FullScreen_RefreshRateInHz         = localParameters.FullScreen_RefreshRateInHz;
+    pPresentationParameters->PresentationInterval               = localParameters.FullScreen_PresentationInterval;
+
+    if (SUCCEEDED(res)) {
+        *ppSwapChain = d3dSwapChain->wineD3DSwapChain;
+        IUnknown_Release(d3dSwapChain->parentDevice);
+        d3dSwapChain->parentDevice = NULL;
+    } else {
+        *ppSwapChain = NULL;
+    }
+
+    return res;
+}
+
+ULONG WINAPI D3D8CB_DestroySwapChain(IWineD3DSwapChain *pSwapChain) {
+    IUnknown* swapChainParent;
+    TRACE("(%p) call back\n", pSwapChain);
+
+    IWineD3DSwapChain_GetParent(pSwapChain, &swapChainParent);
+    IUnknown_Release(swapChainParent);
+    return IUnknown_Release(swapChainParent);
+}
+
+/* Internal function called back during the CreateDevice to create a render target */
+HRESULT WINAPI D3D8CB_CreateDepthStencilSurface(IUnknown *device, IUnknown *pSuperior, UINT Width, UINT Height,
+                                         WINED3DFORMAT Format, WINED3DMULTISAMPLE_TYPE MultiSample,
+                                         DWORD MultisampleQuality, BOOL Discard,
+                                         IWineD3DSurface** ppSurface, HANDLE* pSharedHandle) {
+    HRESULT res = D3D_OK;
+    IDirect3DSurface8Impl *d3dSurface = NULL;
+    TRACE("(%p) call back\n", device);
+
+    res = IDirect3DDevice8_CreateDepthStencilSurface((IDirect3DDevice8 *)device, Width, Height, 
+                                         (D3DFORMAT)Format, MultiSample, (IDirect3DSurface8 **)&d3dSurface);
+    if (SUCCEEDED(res)) {
+        *ppSurface = d3dSurface->wineD3DSurface;
+        d3dSurface->container = device;
+        d3dSurface->isImplicit = TRUE;
+        /* Implicit surfaces are created with an refcount of 0 */
+        IUnknown_Release((IUnknown *)d3dSurface);
+    }
+    return res;
+}
+
+ULONG WINAPI D3D8CB_DestroyDepthStencilSurface(IWineD3DSurface *pSurface) {
+    IDirect3DSurface8Impl* surfaceParent;
+    TRACE("(%p) call back\n", pSurface);
+
+    IWineD3DSurface_GetParent(pSurface, (IUnknown **) &surfaceParent);
+    surfaceParent->isImplicit = FALSE;
+    /* Surface had refcount of 0 GetParent addrefed to 1, so 1 Release is enough */
+    return IDirect3DSurface8_Release((IDirect3DSurface8*) surfaceParent);
+}
+
+static HRESULT WINAPI IDirect3D8Impl_CreateDevice(LPDIRECT3D8 iface, UINT Adapter, D3DDEVTYPE DeviceType, HWND hFocusWindow,
+                                            DWORD BehaviourFlags, D3DPRESENT_PARAMETERS* pPresentationParameters,
+                                            IDirect3DDevice8** ppReturnedDeviceInterface) {
+
+    IDirect3D8Impl       *This   = (IDirect3D8Impl *)iface;
+    IDirect3DDevice8Impl *object = NULL;
+    WINED3DPRESENT_PARAMETERS localParameters;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    /* Check the validity range of the adapter parameter */
+    if (Adapter >= IDirect3D8Impl_GetAdapterCount(iface)) {
+        *ppReturnedDeviceInterface = NULL;
+        return D3DERR_INVALIDCALL;
+    }
+
+    /* Allocate the storage for the device object */
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DDevice8Impl));
+    if (NULL == object) {
+        FIXME("Allocation of memory failed\n");
+        *ppReturnedDeviceInterface = NULL;
+        return D3DERR_OUTOFVIDEOMEMORY;
+    }
+
+    object->lpVtbl = &Direct3DDevice8_Vtbl;
+    object->ref = 1;
+    object->shader_handles = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, INITIAL_SHADER_HANDLE_TABLE_SIZE * sizeof(shader_handle));
+    object->shader_handle_table_size = INITIAL_SHADER_HANDLE_TABLE_SIZE;
+    *ppReturnedDeviceInterface = (IDirect3DDevice8 *)object;
+
+    /* Allocate an associated WineD3DDevice object */
+    EnterCriticalSection(&d3d8_cs);
+    hr =IWineD3D_CreateDevice(This->WineD3D, Adapter, DeviceType, hFocusWindow, BehaviourFlags, &object->WineD3DDevice, (IUnknown *)object);
+
+    if (hr != D3D_OK) {
+        HeapFree(GetProcessHeap(), 0, object);
+        *ppReturnedDeviceInterface = NULL;
+        LeaveCriticalSection(&d3d8_cs);
+        return hr;
+    }
+
+    TRACE("(%p) : Created Device %p\n", This, object);
+
+    localParameters.BackBufferWidth                             = pPresentationParameters->BackBufferWidth;
+    localParameters.BackBufferHeight                            = pPresentationParameters->BackBufferHeight;
+    localParameters.BackBufferFormat                            = pPresentationParameters->BackBufferFormat;
+    localParameters.BackBufferCount                             = pPresentationParameters->BackBufferCount;
+    localParameters.MultiSampleType                             = pPresentationParameters->MultiSampleType;
+    localParameters.MultiSampleQuality                          = 0; /* d3d9 only */
+    localParameters.SwapEffect                                  = pPresentationParameters->SwapEffect;
+    localParameters.hDeviceWindow                               = pPresentationParameters->hDeviceWindow;
+    localParameters.Windowed                                    = pPresentationParameters->Windowed;
+    localParameters.EnableAutoDepthStencil                      = pPresentationParameters->EnableAutoDepthStencil;
+    localParameters.AutoDepthStencilFormat                      = pPresentationParameters->AutoDepthStencilFormat;
+    localParameters.Flags                                       = pPresentationParameters->Flags;
+    localParameters.FullScreen_RefreshRateInHz                  = pPresentationParameters->FullScreen_RefreshRateInHz;
+    localParameters.PresentationInterval                        = pPresentationParameters->FullScreen_PresentationInterval;
+    localParameters.AutoRestoreDisplayMode                      = TRUE;
+
+    if(BehaviourFlags & D3DCREATE_MULTITHREADED) {
+        IWineD3DDevice_SetMultithreaded(object->WineD3DDevice);
+    }
+
+    hr = IWineD3DDevice_Init3D(object->WineD3DDevice, &localParameters, D3D8CB_CreateAdditionalSwapChain);
+    LeaveCriticalSection(&d3d8_cs);
+
+    pPresentationParameters->BackBufferWidth                    = localParameters.BackBufferWidth;
+    pPresentationParameters->BackBufferHeight                   = localParameters.BackBufferHeight;
+    pPresentationParameters->BackBufferFormat                   = localParameters.BackBufferFormat;
+    pPresentationParameters->BackBufferCount                    = localParameters.BackBufferCount;
+    pPresentationParameters->MultiSampleType                    = localParameters.MultiSampleType;
+    pPresentationParameters->SwapEffect                         = localParameters.SwapEffect;
+    pPresentationParameters->hDeviceWindow                      = localParameters.hDeviceWindow;
+    pPresentationParameters->Windowed                           = localParameters.Windowed;
+    pPresentationParameters->EnableAutoDepthStencil             = localParameters.EnableAutoDepthStencil;
+    pPresentationParameters->AutoDepthStencilFormat             = localParameters.AutoDepthStencilFormat;
+    pPresentationParameters->Flags                              = localParameters.Flags;
+    pPresentationParameters->FullScreen_RefreshRateInHz         = localParameters.FullScreen_RefreshRateInHz;
+    pPresentationParameters->FullScreen_PresentationInterval    = localParameters.PresentationInterval;
+
+    if (hr != D3D_OK) {
+        FIXME("(%p) D3D Initialization failed for WineD3DDevice %p\n", This, object->WineD3DDevice);
+        HeapFree(GetProcessHeap(), 0, object);
+        *ppReturnedDeviceInterface = NULL;
+    }
+
+    object->declArraySize = 16;
+    object->decls = HeapAlloc(GetProcessHeap(), 0, object->declArraySize * sizeof(*object->decls));
+    if(!object->decls) {
+        ERR("Out of memory\n");
+        IWineD3DDevice_Release(object->WineD3DDevice);
+        HeapFree(GetProcessHeap(), 0, object);
+        *ppReturnedDeviceInterface = NULL;
+        hr = E_OUTOFMEMORY;
+    }
+    return hr;
+}
+
+const IDirect3D8Vtbl Direct3D8_Vtbl =
+{
+    /* IUnknown */
+    IDirect3D8Impl_QueryInterface,
+    IDirect3D8Impl_AddRef,
+    IDirect3D8Impl_Release,
+    /* IDirect3D8 */
+    IDirect3D8Impl_RegisterSoftwareDevice,
+    IDirect3D8Impl_GetAdapterCount,
+    IDirect3D8Impl_GetAdapterIdentifier,
+    IDirect3D8Impl_GetAdapterModeCount,
+    IDirect3D8Impl_EnumAdapterModes,
+    IDirect3D8Impl_GetAdapterDisplayMode,
+    IDirect3D8Impl_CheckDeviceType,
+    IDirect3D8Impl_CheckDeviceFormat,
+    IDirect3D8Impl_CheckDeviceMultiSampleType,
+    IDirect3D8Impl_CheckDepthStencilMatch,
+    IDirect3D8Impl_GetDeviceCaps,
+    IDirect3D8Impl_GetAdapterMonitor,
+    IDirect3D8Impl_CreateDevice
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/indexbuffer.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/indexbuffer.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/indexbuffer.c	(revision 16410)
@@ -0,0 +1,209 @@
+/*
+ * IDirect3DIndexBuffer8 implementation
+ *
+ * Copyright 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d8_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d8);
+
+/* IDirect3DIndexBuffer8 IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DIndexBuffer8Impl_QueryInterface(LPDIRECT3DINDEXBUFFER8 iface, REFIID riid, LPVOID *ppobj) {
+    IDirect3DIndexBuffer8Impl *This = (IDirect3DIndexBuffer8Impl *)iface;
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DResource8)
+        || IsEqualGUID(riid, &IID_IDirect3DIndexBuffer8)) {
+        IUnknown_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DIndexBuffer8Impl_AddRef(LPDIRECT3DINDEXBUFFER8 iface) {
+    IDirect3DIndexBuffer8Impl *This = (IDirect3DIndexBuffer8Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+    return ref;
+}
+
+static ULONG WINAPI IDirect3DIndexBuffer8Impl_Release(LPDIRECT3DINDEXBUFFER8 iface) {
+    IDirect3DIndexBuffer8Impl *This = (IDirect3DIndexBuffer8Impl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+        EnterCriticalSection(&d3d8_cs);
+        IWineD3DIndexBuffer_Release(This->wineD3DIndexBuffer);
+        LeaveCriticalSection(&d3d8_cs);
+        IUnknown_Release(This->parentDevice);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+    return ref;
+}
+
+/* IDirect3DIndexBuffer8 IDirect3DResource8 Interface follow: */
+static HRESULT WINAPI IDirect3DIndexBuffer8Impl_GetDevice(LPDIRECT3DINDEXBUFFER8 iface, IDirect3DDevice8 **ppDevice) {
+    IDirect3DIndexBuffer8Impl *This = (IDirect3DIndexBuffer8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IDirect3DResource8Impl_GetDevice((LPDIRECT3DRESOURCE8) This, ppDevice);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DIndexBuffer8Impl_SetPrivateData(LPDIRECT3DINDEXBUFFER8 iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) {
+    IDirect3DIndexBuffer8Impl *This = (IDirect3DIndexBuffer8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DIndexBuffer_SetPrivateData(This->wineD3DIndexBuffer, refguid, pData, SizeOfData, Flags);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DIndexBuffer8Impl_GetPrivateData(LPDIRECT3DINDEXBUFFER8 iface, REFGUID refguid, void *pData, DWORD *pSizeOfData) {
+    IDirect3DIndexBuffer8Impl *This = (IDirect3DIndexBuffer8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DIndexBuffer_GetPrivateData(This->wineD3DIndexBuffer, refguid, pData, pSizeOfData);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DIndexBuffer8Impl_FreePrivateData(LPDIRECT3DINDEXBUFFER8 iface, REFGUID refguid) {
+    IDirect3DIndexBuffer8Impl *This = (IDirect3DIndexBuffer8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DIndexBuffer_FreePrivateData(This->wineD3DIndexBuffer, refguid);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static DWORD WINAPI IDirect3DIndexBuffer8Impl_SetPriority(LPDIRECT3DINDEXBUFFER8 iface, DWORD PriorityNew) {
+    IDirect3DIndexBuffer8Impl *This = (IDirect3DIndexBuffer8Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    ret = IWineD3DIndexBuffer_SetPriority(This->wineD3DIndexBuffer, PriorityNew);
+    LeaveCriticalSection(&d3d8_cs);
+    return ret;
+}
+
+static DWORD WINAPI IDirect3DIndexBuffer8Impl_GetPriority(LPDIRECT3DINDEXBUFFER8 iface) {
+    IDirect3DIndexBuffer8Impl *This = (IDirect3DIndexBuffer8Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    ret = IWineD3DIndexBuffer_GetPriority(This->wineD3DIndexBuffer);
+    LeaveCriticalSection(&d3d8_cs);
+    return ret;
+}
+
+static void WINAPI IDirect3DIndexBuffer8Impl_PreLoad(LPDIRECT3DINDEXBUFFER8 iface) {
+    IDirect3DIndexBuffer8Impl *This = (IDirect3DIndexBuffer8Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    IWineD3DIndexBuffer_PreLoad(This->wineD3DIndexBuffer);
+    LeaveCriticalSection(&d3d8_cs);
+}
+
+static D3DRESOURCETYPE WINAPI IDirect3DIndexBuffer8Impl_GetType(LPDIRECT3DINDEXBUFFER8 iface) {
+    IDirect3DIndexBuffer8Impl *This = (IDirect3DIndexBuffer8Impl *)iface;
+    D3DRESOURCETYPE type;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    type = IWineD3DIndexBuffer_GetType(This->wineD3DIndexBuffer);
+    LeaveCriticalSection(&d3d8_cs);
+    return type;
+}
+
+/* IDirect3DIndexBuffer8 Interface follow: */
+static HRESULT WINAPI IDirect3DIndexBuffer8Impl_Lock(LPDIRECT3DINDEXBUFFER8 iface, UINT OffsetToLock, UINT SizeToLock, BYTE **ppbData, DWORD Flags) {
+    IDirect3DIndexBuffer8Impl *This = (IDirect3DIndexBuffer8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DIndexBuffer_Lock(This->wineD3DIndexBuffer, OffsetToLock, SizeToLock, ppbData, Flags);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DIndexBuffer8Impl_Unlock(LPDIRECT3DINDEXBUFFER8 iface) {
+    IDirect3DIndexBuffer8Impl *This = (IDirect3DIndexBuffer8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DIndexBuffer_Unlock(This->wineD3DIndexBuffer);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DIndexBuffer8Impl_GetDesc(LPDIRECT3DINDEXBUFFER8 iface, D3DINDEXBUFFER_DESC *pDesc) {
+    IDirect3DIndexBuffer8Impl *This = (IDirect3DIndexBuffer8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DIndexBuffer_GetDesc(This->wineD3DIndexBuffer, (WINED3DINDEXBUFFER_DESC *) pDesc);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+
+const IDirect3DIndexBuffer8Vtbl Direct3DIndexBuffer8_Vtbl =
+{
+    /* IUnknown */
+    IDirect3DIndexBuffer8Impl_QueryInterface,
+    IDirect3DIndexBuffer8Impl_AddRef,
+    IDirect3DIndexBuffer8Impl_Release,
+    /* IDirect3DResource8 */
+    IDirect3DIndexBuffer8Impl_GetDevice,
+    IDirect3DIndexBuffer8Impl_SetPrivateData,
+    IDirect3DIndexBuffer8Impl_GetPrivateData,
+    IDirect3DIndexBuffer8Impl_FreePrivateData,
+    IDirect3DIndexBuffer8Impl_SetPriority,
+    IDirect3DIndexBuffer8Impl_GetPriority,
+    IDirect3DIndexBuffer8Impl_PreLoad,
+    IDirect3DIndexBuffer8Impl_GetType,
+    /* IDirect3DIndexBuffer8 */
+    IDirect3DIndexBuffer8Impl_Lock,
+    IDirect3DIndexBuffer8Impl_Unlock,
+    IDirect3DIndexBuffer8Impl_GetDesc
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/pixelshader.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/pixelshader.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/pixelshader.c	(revision 16410)
@@ -0,0 +1,95 @@
+/*
+ * IDirect3DPixelShader8 implementation
+ *
+ * Copyright 2002-2003 Jason Edmeades
+ *                     Raphael Junqueira
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d8_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d8);
+
+/* IDirect3DPixelShader8 IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DPixelShader8Impl_QueryInterface(IDirect3DPixelShader8 *iface, REFIID riid, LPVOID *ppobj) {
+    IDirect3DPixelShader8Impl *This = (IDirect3DPixelShader8Impl *)iface;
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DPixelShader8)) {
+        IUnknown_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DPixelShader8Impl_AddRef(IDirect3DPixelShader8 *iface) {
+    IDirect3DPixelShader8Impl *This = (IDirect3DPixelShader8Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+    return ref;
+}
+
+static ULONG WINAPI IDirect3DPixelShader8Impl_Release(IDirect3DPixelShader8 * iface) {
+    IDirect3DPixelShader8Impl *This = (IDirect3DPixelShader8Impl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+        IWineD3DPixelShader_Release(This->wineD3DPixelShader);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+    return ref;
+}
+
+/* IDirect3DPixelShader8 Interface follow: */
+static HRESULT WINAPI IDirect3DPixelShader8Impl_GetDevice(IDirect3DPixelShader8 *iface, IDirect3DDevice8 **ppDevice) {
+    IDirect3DPixelShader8Impl *This = (IDirect3DPixelShader8Impl *)iface;
+    IWineD3DDevice *myDevice = NULL;
+
+    TRACE("(%p) : Relay\n", This);
+
+    IWineD3DPixelShader_GetDevice(This->wineD3DPixelShader, &myDevice);
+    IWineD3DDevice_GetParent(myDevice, (IUnknown **)ppDevice);
+    IWineD3DDevice_Release(myDevice);
+    TRACE("(%p) returning (%p)\n", This, *ppDevice);
+    return D3D_OK;
+}
+
+static HRESULT WINAPI IDirect3DPixelShader8Impl_GetFunction(IDirect3DPixelShader8 *iface, VOID *pData, UINT *pSizeOfData) {
+    IDirect3DPixelShader8Impl *This = (IDirect3DPixelShader8Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DPixelShader_GetFunction(This->wineD3DPixelShader, pData, pSizeOfData);
+}
+
+
+const IDirect3DPixelShader8Vtbl Direct3DPixelShader8_Vtbl =
+{
+    /* IUnknown */
+    IDirect3DPixelShader8Impl_QueryInterface,
+    IDirect3DPixelShader8Impl_AddRef,
+    IDirect3DPixelShader8Impl_Release,
+    /* IDirect3DPixelShader8 */
+    IDirect3DPixelShader8Impl_GetDevice,
+    IDirect3DPixelShader8Impl_GetFunction
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/resource.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/resource.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/resource.c	(revision 16410)
@@ -0,0 +1,133 @@
+/*
+ * IDirect3DResource8 implementation
+ *
+ * Copyright 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d8_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d8);
+
+/* IDirect3DResource8 IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DResource8Impl_QueryInterface(LPDIRECT3DRESOURCE8 iface, REFIID riid, LPVOID* ppobj) {
+    IDirect3DResource8Impl *This = (IDirect3DResource8Impl *)iface;
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DResource8)) {
+        IUnknown_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DResource8Impl_AddRef(LPDIRECT3DRESOURCE8 iface) {
+    IDirect3DResource8Impl *This = (IDirect3DResource8Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+    return ref;
+}
+
+static ULONG WINAPI IDirect3DResource8Impl_Release(LPDIRECT3DRESOURCE8 iface) {
+    IDirect3DResource8Impl *This = (IDirect3DResource8Impl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+        IWineD3DResource_Release(This->wineD3DResource);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+    return ref;
+}
+
+/* IDirect3DResource8 Interface follow: */
+HRESULT WINAPI IDirect3DResource8Impl_GetDevice(LPDIRECT3DRESOURCE8 iface, IDirect3DDevice8** ppDevice) {
+    IDirect3DResource8Impl *This = (IDirect3DResource8Impl *)iface;
+    IWineD3DDevice *myDevice = NULL;
+
+    TRACE("(%p) Relay\n", This);
+
+    IWineD3DResource_GetDevice(This->wineD3DResource, &myDevice);
+    IWineD3DDevice_GetParent(myDevice, (IUnknown **)ppDevice);
+    IWineD3DDevice_Release(myDevice);
+    return D3D_OK;
+}
+
+static HRESULT WINAPI IDirect3DResource8Impl_SetPrivateData(LPDIRECT3DRESOURCE8 iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) {
+    IDirect3DResource8Impl *This = (IDirect3DResource8Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DResource_SetPrivateData(This->wineD3DResource, refguid, pData, SizeOfData, Flags);
+}
+
+static HRESULT WINAPI IDirect3DResource8Impl_GetPrivateData(LPDIRECT3DRESOURCE8 iface, REFGUID refguid, void* pData, DWORD* pSizeOfData) {
+    IDirect3DResource8Impl *This = (IDirect3DResource8Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DResource_GetPrivateData(This->wineD3DResource, refguid, pData, pSizeOfData);
+}
+
+static HRESULT WINAPI IDirect3DResource8Impl_FreePrivateData(LPDIRECT3DRESOURCE8 iface, REFGUID refguid) {
+    IDirect3DResource8Impl *This = (IDirect3DResource8Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DResource_FreePrivateData(This->wineD3DResource, refguid);
+}
+
+static DWORD  WINAPI IDirect3DResource8Impl_SetPriority(LPDIRECT3DRESOURCE8 iface, DWORD PriorityNew) {
+    IDirect3DResource8Impl *This = (IDirect3DResource8Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DResource_SetPriority(This->wineD3DResource, PriorityNew);
+}
+
+static DWORD WINAPI IDirect3DResource8Impl_GetPriority(LPDIRECT3DRESOURCE8 iface) {
+    IDirect3DResource8Impl *This = (IDirect3DResource8Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DResource_GetPriority(This->wineD3DResource);
+}
+
+static void WINAPI IDirect3DResource8Impl_PreLoad(LPDIRECT3DRESOURCE8 iface) {
+    IDirect3DResource8Impl *This = (IDirect3DResource8Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    IWineD3DResource_PreLoad(This->wineD3DResource);
+    return;
+}
+
+static D3DRESOURCETYPE WINAPI IDirect3DResource8Impl_GetType(LPDIRECT3DRESOURCE8 iface) {
+    IDirect3DResource8Impl *This = (IDirect3DResource8Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DResource_GetType(This->wineD3DResource);
+}
+
+const IDirect3DResource8Vtbl Direct3DResource8_Vtbl =
+{
+    IDirect3DResource8Impl_QueryInterface,
+    IDirect3DResource8Impl_AddRef,
+    IDirect3DResource8Impl_Release,
+    IDirect3DResource8Impl_GetDevice,
+    IDirect3DResource8Impl_SetPrivateData,
+    IDirect3DResource8Impl_GetPrivateData,
+    IDirect3DResource8Impl_FreePrivateData,
+    IDirect3DResource8Impl_SetPriority,
+    IDirect3DResource8Impl_GetPriority,
+    IDirect3DResource8Impl_PreLoad,
+    IDirect3DResource8Impl_GetType
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/stateblock.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/stateblock.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/stateblock.c	(revision 16410)
@@ -0,0 +1,96 @@
+/*
+ * IDirect3DStateBlock8 implementation
+ *
+ * Copyright 2002-2003 Raphael Junqueira
+ * Copyright 2002-2003 Jason Edmeades
+ * Copyright 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d8_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d8);
+
+/* NOTE: DirectX8 doesn't export an IDirect3DStateBlock8, the interface is used internally to keep d3d8 and d3d9 as similar as possible */
+/* IDirect3DStateBlock8 IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DStateBlock8Impl_QueryInterface(IDirect3DStateBlock8 *iface, REFIID riid, LPVOID *ppobj) {
+    IDirect3DStateBlock8Impl *This = (IDirect3DStateBlock8Impl *)iface;
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DStateBlock8)) {
+        IUnknown_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DStateBlock8Impl_AddRef(IDirect3DStateBlock8 *iface) {
+    IDirect3DStateBlock8Impl *This = (IDirect3DStateBlock8Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+    return ref;
+}
+
+static ULONG WINAPI IDirect3DStateBlock8Impl_Release(IDirect3DStateBlock8 *iface) {
+    IDirect3DStateBlock8Impl *This = (IDirect3DStateBlock8Impl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+        IWineD3DStateBlock_Release(This->wineD3DStateBlock);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+    return ref;
+}
+
+/* IDirect3DStateBlock8 Interface follow: */
+static HRESULT WINAPI IDirect3DStateBlock8Impl_GetDevice(IDirect3DStateBlock8 *iface, IDirect3DDevice8 **ppDevice) {
+    IDirect3DStateBlock8Impl *This = (IDirect3DStateBlock8Impl *)iface;
+    TRACE("(%p) Relay\n", This); 
+    return IDirect3DResource8Impl_GetDevice((LPDIRECT3DRESOURCE8) This, ppDevice);
+}
+
+static HRESULT WINAPI IDirect3DStateBlock8Impl_Capture(IDirect3DStateBlock8 *iface) {
+    IDirect3DStateBlock8Impl *This = (IDirect3DStateBlock8Impl *)iface;
+    TRACE("(%p) Relay\n", This); 
+    return IWineD3DStateBlock_Capture(This->wineD3DStateBlock);
+}
+
+static HRESULT WINAPI IDirect3DStateBlock8Impl_Apply(IDirect3DStateBlock8 *iface) {
+    IDirect3DStateBlock8Impl *This = (IDirect3DStateBlock8Impl *)iface;
+    TRACE("(%p) Relay\n", This); 
+    return IWineD3DStateBlock_Apply(This->wineD3DStateBlock);
+}
+
+const IDirect3DStateBlock8Vtbl Direct3DStateBlock8_Vtbl =
+{
+    /* IUnknown */
+    IDirect3DStateBlock8Impl_QueryInterface,
+    IDirect3DStateBlock8Impl_AddRef,
+    IDirect3DStateBlock8Impl_Release,
+    /* IDirect3DStateBlock8 */
+    IDirect3DStateBlock8Impl_GetDevice,
+    IDirect3DStateBlock8Impl_Capture,
+    IDirect3DStateBlock8Impl_Apply
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/surface.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/surface.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/surface.c	(revision 16410)
@@ -0,0 +1,228 @@
+/*
+ * IDirect3DSurface8 implementation
+ *
+ * Copyright 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d8_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d8);
+
+/* IDirect3DSurface8 IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DSurface8Impl_QueryInterface(LPDIRECT3DSURFACE8 iface, REFIID riid, LPVOID *ppobj) {
+    IDirect3DSurface8Impl *This = (IDirect3DSurface8Impl *)iface;
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DResource8)
+        || IsEqualGUID(riid, &IID_IDirect3DSurface8)) {
+        IUnknown_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DSurface8Impl_AddRef(LPDIRECT3DSURFACE8 iface) {
+    IDirect3DSurface8Impl *This = (IDirect3DSurface8Impl *)iface;
+
+    TRACE("(%p)\n", This);
+
+    if (This->forwardReference) {
+        /* Forward refcounting */
+        TRACE("(%p) : Forwarding to %p\n", This, This->forwardReference);
+        return IUnknown_AddRef(This->forwardReference);
+    } else {
+        /* No container, handle our own refcounting */
+        ULONG ref = InterlockedIncrement(&This->ref);
+        if(ref == 1 && This->parentDevice) IUnknown_AddRef(This->parentDevice);
+        TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+        return ref;
+    }
+}
+
+static ULONG WINAPI IDirect3DSurface8Impl_Release(LPDIRECT3DSURFACE8 iface) {
+    IDirect3DSurface8Impl *This = (IDirect3DSurface8Impl *)iface;
+
+    TRACE("(%p)\n", This);
+
+    if (This->forwardReference) {
+        /* Forward refcounting */
+        TRACE("(%p) : Forwarding to %p\n", This, This->forwardReference);
+        return IUnknown_Release(This->forwardReference);
+    } else {
+        /* No container, handle our own refcounting */
+        ULONG ref = InterlockedDecrement(&This->ref);
+        TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+        if (ref == 0) {
+            if (This->parentDevice) IUnknown_Release(This->parentDevice);
+            /* Implicit surfaces are destroyed with the device, not if refcount reaches 0. */
+            if (!This->isImplicit) {
+                EnterCriticalSection(&d3d8_cs);
+                IWineD3DSurface_Release(This->wineD3DSurface);
+                LeaveCriticalSection(&d3d8_cs);
+                HeapFree(GetProcessHeap(), 0, This);
+            }
+        }
+
+        return ref;
+    }
+}
+
+/* IDirect3DSurface8 IDirect3DResource8 Interface follow: */
+static HRESULT WINAPI IDirect3DSurface8Impl_GetDevice(LPDIRECT3DSURFACE8 iface, IDirect3DDevice8 **ppDevice) {
+    IDirect3DSurface8Impl *This = (IDirect3DSurface8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p)->(%p)\n", This, ppDevice);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IDirect3DResource8Impl_GetDevice((LPDIRECT3DRESOURCE8) This, ppDevice);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DSurface8Impl_SetPrivateData(LPDIRECT3DSURFACE8 iface, REFGUID refguid, CONST void *pData, DWORD SizeOfData, DWORD Flags) {
+    IDirect3DSurface8Impl *This = (IDirect3DSurface8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DSurface_SetPrivateData(This->wineD3DSurface, refguid, pData, SizeOfData, Flags);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DSurface8Impl_GetPrivateData(LPDIRECT3DSURFACE8 iface, REFGUID refguid, void *pData, DWORD *pSizeOfData) {
+    IDirect3DSurface8Impl *This = (IDirect3DSurface8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DSurface_GetPrivateData(This->wineD3DSurface, refguid, pData, pSizeOfData);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DSurface8Impl_FreePrivateData(LPDIRECT3DSURFACE8 iface, REFGUID refguid) {
+    IDirect3DSurface8Impl *This = (IDirect3DSurface8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DSurface_FreePrivateData(This->wineD3DSurface, refguid);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+/* IDirect3DSurface8 Interface follow: */
+static HRESULT WINAPI IDirect3DSurface8Impl_GetContainer(LPDIRECT3DSURFACE8 iface, REFIID riid, void **ppContainer) {
+    IDirect3DSurface8Impl *This = (IDirect3DSurface8Impl *)iface;
+    HRESULT res;
+
+    TRACE("(%p) Relay\n", This);
+
+    if (!This->container) return E_NOINTERFACE;
+
+    res = IUnknown_QueryInterface(This->container, riid, ppContainer);
+
+    TRACE("(%p) : returning %p\n", This, *ppContainer);
+    return res;
+}
+
+static HRESULT WINAPI IDirect3DSurface8Impl_GetDesc(LPDIRECT3DSURFACE8 iface, D3DSURFACE_DESC *pDesc) {
+    IDirect3DSurface8Impl *This = (IDirect3DSurface8Impl *)iface;
+    WINED3DSURFACE_DESC    wined3ddesc;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    /* As d3d8 and d3d9 structures differ, pass in ptrs to where data needs to go */
+    memset(&wined3ddesc, 0, sizeof(wined3ddesc));
+    wined3ddesc.Format              = (WINED3DFORMAT *)&pDesc->Format;
+    wined3ddesc.Type                = (WINED3DRESOURCETYPE *)&pDesc->Type;
+    wined3ddesc.Usage               = &pDesc->Usage;
+    wined3ddesc.Pool                = (WINED3DPOOL *) &pDesc->Pool;
+    wined3ddesc.Size                = &pDesc->Size;
+    wined3ddesc.MultiSampleType     = (WINED3DMULTISAMPLE_TYPE *) &pDesc->MultiSampleType;
+    wined3ddesc.Width               = &pDesc->Width;
+    wined3ddesc.Height              = &pDesc->Height;
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DSurface_GetDesc(This->wineD3DSurface, &wined3ddesc);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DSurface8Impl_LockRect(LPDIRECT3DSURFACE8 iface, D3DLOCKED_RECT *pLockedRect, CONST RECT *pRect, DWORD Flags) {
+    IDirect3DSurface8Impl *This = (IDirect3DSurface8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+    TRACE("(%p) calling IWineD3DSurface_LockRect %p %p %p %d\n", This, This->wineD3DSurface, pLockedRect, pRect, Flags);
+
+    EnterCriticalSection(&d3d8_cs);
+    if (pRect) {
+        D3DSURFACE_DESC desc;
+        IDirect3DSurface8_GetDesc(iface, &desc);
+
+        if ((pRect->left < 0)
+                || (pRect->top < 0)
+                || (pRect->left >= pRect->right)
+                || (pRect->top >= pRect->bottom)
+                || (pRect->right > desc.Width)
+                || (pRect->bottom > desc.Height)) {
+            WARN("Trying to lock an invalid rectangle, returning D3DERR_INVALIDCALL\n");
+            LeaveCriticalSection(&d3d8_cs);
+            return D3DERR_INVALIDCALL;
+        }
+    }
+
+    hr = IWineD3DSurface_LockRect(This->wineD3DSurface, (WINED3DLOCKED_RECT *) pLockedRect, pRect, Flags);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DSurface8Impl_UnlockRect(LPDIRECT3DSURFACE8 iface) {
+    IDirect3DSurface8Impl *This = (IDirect3DSurface8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DSurface_UnlockRect(This->wineD3DSurface);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+const IDirect3DSurface8Vtbl Direct3DSurface8_Vtbl =
+{
+    /* IUnknown */
+    IDirect3DSurface8Impl_QueryInterface,
+    IDirect3DSurface8Impl_AddRef,
+    IDirect3DSurface8Impl_Release,
+    /* IDirect3DResource8 */
+    IDirect3DSurface8Impl_GetDevice,
+    IDirect3DSurface8Impl_SetPrivateData,
+    IDirect3DSurface8Impl_GetPrivateData,
+    IDirect3DSurface8Impl_FreePrivateData,
+    /* IDirect3DSurface8 */
+    IDirect3DSurface8Impl_GetContainer,
+    IDirect3DSurface8Impl_GetDesc,
+    IDirect3DSurface8Impl_LockRect,
+    IDirect3DSurface8Impl_UnlockRect
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/swapchain.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/swapchain.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/swapchain.c	(revision 16410)
@@ -0,0 +1,104 @@
+/*
+ * IDirect3DSwapChain8 implementation
+ *
+ * Copyright 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d8_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d8);
+
+/* IDirect3DSwapChain IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DSwapChain8Impl_QueryInterface(LPDIRECT3DSWAPCHAIN8 iface, REFIID riid, LPVOID* ppobj)
+{
+    IDirect3DSwapChain8Impl *This = (IDirect3DSwapChain8Impl *)iface;
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DSwapChain8)) {
+        IUnknown_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DSwapChain8Impl_AddRef(LPDIRECT3DSWAPCHAIN8 iface) {
+    IDirect3DSwapChain8Impl *This = (IDirect3DSwapChain8Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+    return ref;
+}
+
+static ULONG WINAPI IDirect3DSwapChain8Impl_Release(LPDIRECT3DSWAPCHAIN8 iface) {
+    IDirect3DSwapChain8Impl *This = (IDirect3DSwapChain8Impl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+        EnterCriticalSection(&d3d8_cs);
+        IWineD3DSwapChain_Destroy(This->wineD3DSwapChain, D3D8CB_DestroyRenderTarget);
+        LeaveCriticalSection(&d3d8_cs);
+        if (This->parentDevice) IUnknown_Release(This->parentDevice);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+    return ref;
+}
+
+/* IDirect3DSwapChain8 parts follow: */
+static HRESULT WINAPI IDirect3DSwapChain8Impl_Present(LPDIRECT3DSWAPCHAIN8 iface, CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride, CONST RGNDATA *pDirtyRegion) {
+    IDirect3DSwapChain8Impl *This = (IDirect3DSwapChain8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DSwapChain_Present(This->wineD3DSwapChain, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion, 0);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DSwapChain8Impl_GetBackBuffer(LPDIRECT3DSWAPCHAIN8 iface, UINT iBackBuffer, D3DBACKBUFFER_TYPE Type, IDirect3DSurface8** ppBackBuffer) {
+    IDirect3DSwapChain8Impl *This = (IDirect3DSwapChain8Impl *)iface;
+    HRESULT hrc = D3D_OK;
+    IWineD3DSurface *mySurface = NULL;
+
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hrc = IWineD3DSwapChain_GetBackBuffer(This->wineD3DSwapChain, iBackBuffer, (WINED3DBACKBUFFER_TYPE )Type, &mySurface);
+    if (hrc == D3D_OK && NULL != mySurface) {
+       IWineD3DSurface_GetParent(mySurface, (IUnknown **)ppBackBuffer);
+       IWineD3DSurface_Release(mySurface);
+    }
+    LeaveCriticalSection(&d3d8_cs);
+    return hrc;
+}
+
+const IDirect3DSwapChain8Vtbl Direct3DSwapChain8_Vtbl =
+{
+    IDirect3DSwapChain8Impl_QueryInterface,
+    IDirect3DSwapChain8Impl_AddRef,
+    IDirect3DSwapChain8Impl_Release,
+    IDirect3DSwapChain8Impl_Present,
+    IDirect3DSwapChain8Impl_GetBackBuffer
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/texture.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/texture.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/texture.c	(revision 16410)
@@ -0,0 +1,288 @@
+/*
+ * IDirect3DTexture8 implementation
+ *
+ * Copyright 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d8_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d8);
+
+/* IDirect3DTexture8 IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DTexture8Impl_QueryInterface(LPDIRECT3DTEXTURE8 iface, REFIID riid, LPVOID *ppobj) {
+    IDirect3DTexture8Impl *This = (IDirect3DTexture8Impl *)iface;
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DResource8)
+        || IsEqualGUID(riid, &IID_IDirect3DBaseTexture8)
+        || IsEqualGUID(riid, &IID_IDirect3DTexture8)) {
+        IUnknown_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p) not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DTexture8Impl_AddRef(LPDIRECT3DTEXTURE8 iface) {
+    IDirect3DTexture8Impl *This = (IDirect3DTexture8Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+    return ref;
+}
+
+static ULONG WINAPI IDirect3DTexture8Impl_Release(LPDIRECT3DTEXTURE8 iface) {
+    IDirect3DTexture8Impl *This = (IDirect3DTexture8Impl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+        EnterCriticalSection(&d3d8_cs);
+        IWineD3DTexture_Destroy(This->wineD3DTexture, D3D8CB_DestroySurface);
+        LeaveCriticalSection(&d3d8_cs);
+        IUnknown_Release(This->parentDevice);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+    return ref;
+}
+
+/* IDirect3DTexture8 IDirect3DResource8 Interface follow: */
+static HRESULT WINAPI IDirect3DTexture8Impl_GetDevice(LPDIRECT3DTEXTURE8 iface, IDirect3DDevice8 **ppDevice) {
+    IDirect3DTexture8Impl *This = (IDirect3DTexture8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+    EnterCriticalSection(&d3d8_cs);
+    hr = IDirect3DResource8Impl_GetDevice((LPDIRECT3DRESOURCE8) This, ppDevice);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DTexture8Impl_SetPrivateData(LPDIRECT3DTEXTURE8 iface, REFGUID refguid, CONST void *pData, DWORD SizeOfData, DWORD Flags) {
+    IDirect3DTexture8Impl *This = (IDirect3DTexture8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DTexture_SetPrivateData(This->wineD3DTexture, refguid, pData, SizeOfData, Flags);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DTexture8Impl_GetPrivateData(LPDIRECT3DTEXTURE8 iface, REFGUID refguid, void *pData, DWORD* pSizeOfData) {
+    IDirect3DTexture8Impl *This = (IDirect3DTexture8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DTexture_GetPrivateData(This->wineD3DTexture, refguid, pData, pSizeOfData);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DTexture8Impl_FreePrivateData(LPDIRECT3DTEXTURE8 iface, REFGUID refguid) {
+    IDirect3DTexture8Impl *This = (IDirect3DTexture8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DTexture_FreePrivateData(This->wineD3DTexture, refguid);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static DWORD WINAPI IDirect3DTexture8Impl_SetPriority(LPDIRECT3DTEXTURE8 iface, DWORD PriorityNew) {
+    IDirect3DTexture8Impl *This = (IDirect3DTexture8Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    ret = IWineD3DTexture_SetPriority(This->wineD3DTexture, PriorityNew);
+    LeaveCriticalSection(&d3d8_cs);
+    return ret;
+}
+
+static DWORD WINAPI IDirect3DTexture8Impl_GetPriority(LPDIRECT3DTEXTURE8 iface) {
+    IDirect3DTexture8Impl *This = (IDirect3DTexture8Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    ret = IWineD3DTexture_GetPriority(This->wineD3DTexture);
+    LeaveCriticalSection(&d3d8_cs);
+    return ret;
+}
+
+static void WINAPI IDirect3DTexture8Impl_PreLoad(LPDIRECT3DTEXTURE8 iface) {
+    IDirect3DTexture8Impl *This = (IDirect3DTexture8Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    IWineD3DTexture_PreLoad(This->wineD3DTexture);
+    LeaveCriticalSection(&d3d8_cs);
+}
+
+static D3DRESOURCETYPE WINAPI IDirect3DTexture8Impl_GetType(LPDIRECT3DTEXTURE8 iface) {
+    IDirect3DTexture8Impl *This = (IDirect3DTexture8Impl *)iface;
+    D3DRESOURCETYPE type;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    type = IWineD3DTexture_GetType(This->wineD3DTexture);
+    LeaveCriticalSection(&d3d8_cs);
+    return type;
+}
+
+/* IDirect3DTexture8 IDirect3DBaseTexture8 Interface follow: */
+static DWORD WINAPI IDirect3DTexture8Impl_SetLOD(LPDIRECT3DTEXTURE8 iface, DWORD LODNew) {
+    IDirect3DTexture8Impl *This = (IDirect3DTexture8Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    ret = IWineD3DTexture_SetLOD(This->wineD3DTexture, LODNew);
+    LeaveCriticalSection(&d3d8_cs);
+    return ret;
+}
+
+static DWORD WINAPI IDirect3DTexture8Impl_GetLOD(LPDIRECT3DTEXTURE8 iface) {
+    IDirect3DTexture8Impl *This = (IDirect3DTexture8Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    ret = IWineD3DTexture_GetLOD(This->wineD3DTexture);
+    LeaveCriticalSection(&d3d8_cs);
+    return ret;
+}
+
+static DWORD WINAPI IDirect3DTexture8Impl_GetLevelCount(LPDIRECT3DTEXTURE8 iface) {
+    IDirect3DTexture8Impl *This = (IDirect3DTexture8Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    ret = IWineD3DTexture_GetLevelCount(This->wineD3DTexture);
+    LeaveCriticalSection(&d3d8_cs);
+    return ret;
+}
+
+/* IDirect3DTexture8 Interface follow: */
+static HRESULT WINAPI IDirect3DTexture8Impl_GetLevelDesc(LPDIRECT3DTEXTURE8 iface, UINT Level, D3DSURFACE_DESC *pDesc) {
+    IDirect3DTexture8Impl *This = (IDirect3DTexture8Impl *)iface;
+    HRESULT hr;
+
+    WINED3DSURFACE_DESC    wined3ddesc;
+    TRACE("(%p) Relay\n", This);
+
+    /* As d3d8 and d3d9 structures differ, pass in ptrs to where data needs to go */
+    memset(&wined3ddesc, 0, sizeof(wined3ddesc));
+    wined3ddesc.Format              = (WINED3DFORMAT *)&pDesc->Format;
+    wined3ddesc.Type                = (WINED3DRESOURCETYPE *)&pDesc->Type;
+    wined3ddesc.Usage               = &pDesc->Usage;
+    wined3ddesc.Pool                = (WINED3DPOOL *) &pDesc->Pool;
+    wined3ddesc.Size                = &pDesc->Size;
+    wined3ddesc.MultiSampleType     = (WINED3DMULTISAMPLE_TYPE *) &pDesc->MultiSampleType;
+    wined3ddesc.Width               = &pDesc->Width;
+    wined3ddesc.Height              = &pDesc->Height;
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DTexture_GetLevelDesc(This->wineD3DTexture, Level, &wined3ddesc);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DTexture8Impl_GetSurfaceLevel(LPDIRECT3DTEXTURE8 iface, UINT Level, IDirect3DSurface8 **ppSurfaceLevel) {
+    IDirect3DTexture8Impl *This = (IDirect3DTexture8Impl *)iface;
+    HRESULT hrc = D3D_OK;
+    IWineD3DSurface *mySurface = NULL;
+
+    TRACE("(%p) Relay\n", This);
+    EnterCriticalSection(&d3d8_cs);
+    hrc = IWineD3DTexture_GetSurfaceLevel(This->wineD3DTexture, Level, &mySurface);
+    if (hrc == D3D_OK && NULL != ppSurfaceLevel) {
+       IWineD3DSurface_GetParent(mySurface, (IUnknown **)ppSurfaceLevel);
+       IWineD3DSurface_Release(mySurface);
+    }
+    LeaveCriticalSection(&d3d8_cs);
+    return hrc;
+}
+
+static HRESULT WINAPI IDirect3DTexture8Impl_LockRect(LPDIRECT3DTEXTURE8 iface, UINT Level, D3DLOCKED_RECT *pLockedRect, CONST RECT *pRect, DWORD Flags) {
+    IDirect3DTexture8Impl *This = (IDirect3DTexture8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DTexture_LockRect(This->wineD3DTexture, Level, (WINED3DLOCKED_RECT *) pLockedRect, pRect, Flags);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DTexture8Impl_UnlockRect(LPDIRECT3DTEXTURE8 iface, UINT Level) {
+    IDirect3DTexture8Impl *This = (IDirect3DTexture8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DTexture_UnlockRect(This->wineD3DTexture, Level);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DTexture8Impl_AddDirtyRect(LPDIRECT3DTEXTURE8 iface, CONST RECT *pDirtyRect) {
+    IDirect3DTexture8Impl *This = (IDirect3DTexture8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DTexture_AddDirtyRect(This->wineD3DTexture, pDirtyRect);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+const IDirect3DTexture8Vtbl Direct3DTexture8_Vtbl =
+{
+    /* IUnknown */
+    IDirect3DTexture8Impl_QueryInterface,
+    IDirect3DTexture8Impl_AddRef,
+    IDirect3DTexture8Impl_Release,
+     /* IDirect3DResource8 */
+    IDirect3DTexture8Impl_GetDevice,
+    IDirect3DTexture8Impl_SetPrivateData,
+    IDirect3DTexture8Impl_GetPrivateData,
+    IDirect3DTexture8Impl_FreePrivateData,
+    IDirect3DTexture8Impl_SetPriority,
+    IDirect3DTexture8Impl_GetPriority,
+    IDirect3DTexture8Impl_PreLoad,
+    IDirect3DTexture8Impl_GetType,
+    /* IDirect3dBaseTexture8 */
+    IDirect3DTexture8Impl_SetLOD,
+    IDirect3DTexture8Impl_GetLOD,
+    IDirect3DTexture8Impl_GetLevelCount,
+    /* IDirect3DTexture8 */
+    IDirect3DTexture8Impl_GetLevelDesc,
+    IDirect3DTexture8Impl_GetSurfaceLevel,
+    IDirect3DTexture8Impl_LockRect,
+    IDirect3DTexture8Impl_UnlockRect,
+    IDirect3DTexture8Impl_AddDirtyRect
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/version.rc
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/version.rc	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/version.rc	(revision 16410)
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2001 Ove Kaaven
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define WINE_FILEDESCRIPTION_STR "Wine Direct3D"
+#define WINE_FILENAME_STR "d3d8.dll"
+#define WINE_FILEVERSION 5,3,1,904
+#define WINE_FILEVERSION_STR "5.3.1.904"
+#define WINE_PRODUCTVERSION 5,3,1,904
+#define WINE_PRODUCTVERSION_STR "5.3.1.904"
+
+#include "wine/wine_common_ver.rc"
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/vertexbuffer.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/vertexbuffer.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/vertexbuffer.c	(revision 16410)
@@ -0,0 +1,210 @@
+/*
+ * IDirect3DVertexBuffer8 implementation
+ *
+ * Copyright 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d8_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d8);
+
+/* IDirect3DVertexBuffer8 IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DVertexBuffer8Impl_QueryInterface(LPDIRECT3DVERTEXBUFFER8 iface, REFIID riid, LPVOID *ppobj) {
+    IDirect3DVertexBuffer8Impl *This = (IDirect3DVertexBuffer8Impl *)iface;
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DResource8)
+        || IsEqualGUID(riid, &IID_IDirect3DVertexBuffer8)) {
+        IUnknown_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DVertexBuffer8Impl_AddRef(LPDIRECT3DVERTEXBUFFER8 iface) {
+    IDirect3DVertexBuffer8Impl *This = (IDirect3DVertexBuffer8Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+    return ref;
+}
+
+static ULONG WINAPI IDirect3DVertexBuffer8Impl_Release(LPDIRECT3DVERTEXBUFFER8 iface) {
+    IDirect3DVertexBuffer8Impl *This = (IDirect3DVertexBuffer8Impl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+        EnterCriticalSection(&d3d8_cs);
+        IWineD3DVertexBuffer_Release(This->wineD3DVertexBuffer);
+        LeaveCriticalSection(&d3d8_cs);
+        IUnknown_Release(This->parentDevice);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+
+    return ref;
+}
+
+/* IDirect3DVertexBuffer8 IDirect3DResource8 Interface follow: */
+static HRESULT WINAPI IDirect3DVertexBuffer8Impl_GetDevice(LPDIRECT3DVERTEXBUFFER8 iface, IDirect3DDevice8 **ppDevice) {
+    IDirect3DVertexBuffer8Impl *This = (IDirect3DVertexBuffer8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IDirect3DResource8Impl_GetDevice((LPDIRECT3DRESOURCE8) This, ppDevice);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DVertexBuffer8Impl_SetPrivateData(LPDIRECT3DVERTEXBUFFER8 iface, REFGUID refguid, CONST void *pData, DWORD SizeOfData, DWORD Flags) {
+    IDirect3DVertexBuffer8Impl *This = (IDirect3DVertexBuffer8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DVertexBuffer_SetPrivateData(This->wineD3DVertexBuffer, refguid, pData, SizeOfData, Flags);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DVertexBuffer8Impl_GetPrivateData(LPDIRECT3DVERTEXBUFFER8 iface, REFGUID refguid, void *pData, DWORD *pSizeOfData) {
+    IDirect3DVertexBuffer8Impl *This = (IDirect3DVertexBuffer8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DVertexBuffer_GetPrivateData(This->wineD3DVertexBuffer, refguid, pData, pSizeOfData);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DVertexBuffer8Impl_FreePrivateData(LPDIRECT3DVERTEXBUFFER8 iface, REFGUID refguid) {
+    IDirect3DVertexBuffer8Impl *This = (IDirect3DVertexBuffer8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DVertexBuffer_FreePrivateData(This->wineD3DVertexBuffer, refguid);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static DWORD WINAPI IDirect3DVertexBuffer8Impl_SetPriority(LPDIRECT3DVERTEXBUFFER8 iface, DWORD PriorityNew) {
+    IDirect3DVertexBuffer8Impl *This = (IDirect3DVertexBuffer8Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    ret = IWineD3DVertexBuffer_SetPriority(This->wineD3DVertexBuffer, PriorityNew);
+    LeaveCriticalSection(&d3d8_cs);
+    return ret;
+}
+
+static DWORD WINAPI IDirect3DVertexBuffer8Impl_GetPriority(LPDIRECT3DVERTEXBUFFER8 iface) {
+    IDirect3DVertexBuffer8Impl *This = (IDirect3DVertexBuffer8Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    ret = IWineD3DVertexBuffer_GetPriority(This->wineD3DVertexBuffer);
+    LeaveCriticalSection(&d3d8_cs);
+    return ret;
+}
+
+static void WINAPI IDirect3DVertexBuffer8Impl_PreLoad(LPDIRECT3DVERTEXBUFFER8 iface) {
+    IDirect3DVertexBuffer8Impl *This = (IDirect3DVertexBuffer8Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    IWineD3DVertexBuffer_PreLoad(This->wineD3DVertexBuffer);
+    LeaveCriticalSection(&d3d8_cs);
+}
+
+static D3DRESOURCETYPE WINAPI IDirect3DVertexBuffer8Impl_GetType(LPDIRECT3DVERTEXBUFFER8 iface) {
+    IDirect3DVertexBuffer8Impl *This = (IDirect3DVertexBuffer8Impl *)iface;
+    D3DRESOURCETYPE type;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    type = IWineD3DVertexBuffer_GetType(This->wineD3DVertexBuffer);
+    LeaveCriticalSection(&d3d8_cs);
+    return type;
+}
+
+/* IDirect3DVertexBuffer8 Interface follow: */
+static HRESULT WINAPI IDirect3DVertexBuffer8Impl_Lock(LPDIRECT3DVERTEXBUFFER8 iface, UINT OffsetToLock, UINT SizeToLock, BYTE **ppbData, DWORD Flags) {
+    IDirect3DVertexBuffer8Impl *This = (IDirect3DVertexBuffer8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DVertexBuffer_Lock(This->wineD3DVertexBuffer, OffsetToLock, SizeToLock, ppbData, Flags);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DVertexBuffer8Impl_Unlock(LPDIRECT3DVERTEXBUFFER8 iface) {
+    IDirect3DVertexBuffer8Impl *This = (IDirect3DVertexBuffer8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DVertexBuffer_Unlock(This->wineD3DVertexBuffer);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DVertexBuffer8Impl_GetDesc(LPDIRECT3DVERTEXBUFFER8 iface, D3DVERTEXBUFFER_DESC *pDesc) {
+    IDirect3DVertexBuffer8Impl *This = (IDirect3DVertexBuffer8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DVertexBuffer_GetDesc(This->wineD3DVertexBuffer, (WINED3DVERTEXBUFFER_DESC *) pDesc);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+const IDirect3DVertexBuffer8Vtbl Direct3DVertexBuffer8_Vtbl =
+{
+    /* IUnknown */
+    IDirect3DVertexBuffer8Impl_QueryInterface,
+    IDirect3DVertexBuffer8Impl_AddRef,
+    IDirect3DVertexBuffer8Impl_Release,
+    /* IDirect3DResource8 */
+    IDirect3DVertexBuffer8Impl_GetDevice,
+    IDirect3DVertexBuffer8Impl_SetPrivateData,
+    IDirect3DVertexBuffer8Impl_GetPrivateData,
+    IDirect3DVertexBuffer8Impl_FreePrivateData,
+    IDirect3DVertexBuffer8Impl_SetPriority,
+    IDirect3DVertexBuffer8Impl_GetPriority,
+    IDirect3DVertexBuffer8Impl_PreLoad,
+    IDirect3DVertexBuffer8Impl_GetType,
+    /* IDirect3DVertexBuffer8 */
+    IDirect3DVertexBuffer8Impl_Lock,
+    IDirect3DVertexBuffer8Impl_Unlock,
+    IDirect3DVertexBuffer8Impl_GetDesc
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/vertexdeclaration.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/vertexdeclaration.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/vertexdeclaration.c	(revision 16410)
@@ -0,0 +1,340 @@
+/*
+ * IDirect3DVertexDeclaration8 implementation
+ *
+ * Copyright 2007 Henri Verbeet
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/* IDirect3DVertexDeclaration8 is internal to our implementation.
+ * It's not visible in the API. */
+
+#include "config.h"
+#include "d3d8_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d8);
+
+/* IUnknown */
+static HRESULT WINAPI IDirect3DVertexDeclaration8Impl_QueryInterface(IDirect3DVertexDeclaration8 *iface, REFIID riid, void **obj_ptr)
+{
+    TRACE("(%p)->(%s, %p)\n", iface, debugstr_guid(riid), obj_ptr);
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+            || IsEqualGUID(riid, &IID_IDirect3DVertexDeclaration8))
+    {
+        IUnknown_AddRef(iface);
+        *obj_ptr = iface;
+        return S_OK;
+    }
+
+    *obj_ptr = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DVertexDeclaration8Impl_AddRef(IDirect3DVertexDeclaration8 *iface)
+{
+    IDirect3DVertexDeclaration8Impl *This = (IDirect3DVertexDeclaration8Impl *)iface;
+
+    ULONG ref_count = InterlockedIncrement(&This->ref_count);
+    TRACE("(%p) : AddRef increasing to %d\n", This, ref_count);
+
+    return ref_count;
+}
+
+static ULONG WINAPI IDirect3DVertexDeclaration8Impl_Release(IDirect3DVertexDeclaration8 *iface)
+{
+    IDirect3DVertexDeclaration8Impl *This = (IDirect3DVertexDeclaration8Impl *)iface;
+
+    ULONG ref_count = InterlockedDecrement(&This->ref_count);
+    TRACE("(%p) : Releasing to %d\n", This, ref_count);
+
+    if (!ref_count) {
+        IWineD3DVertexDeclaration_Release(This->wined3d_vertex_declaration);
+        HeapFree(GetProcessHeap(), 0, This->elements);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+
+    return ref_count;
+}
+
+static const char *debug_d3dvsdt_type(D3DVSDT_TYPE d3dvsdt_type)
+{
+    switch (d3dvsdt_type)
+    {
+#define D3DVSDT_TYPE_TO_STR(u) case u: return #u
+        D3DVSDT_TYPE_TO_STR(D3DVSDT_FLOAT1);
+        D3DVSDT_TYPE_TO_STR(D3DVSDT_FLOAT2);
+        D3DVSDT_TYPE_TO_STR(D3DVSDT_FLOAT3);
+        D3DVSDT_TYPE_TO_STR(D3DVSDT_FLOAT4);
+        D3DVSDT_TYPE_TO_STR(D3DVSDT_D3DCOLOR);
+        D3DVSDT_TYPE_TO_STR(D3DVSDT_UBYTE4);
+        D3DVSDT_TYPE_TO_STR(D3DVSDT_SHORT2);
+        D3DVSDT_TYPE_TO_STR(D3DVSDT_SHORT4);
+#undef D3DVSDT_TYPE_TO_STR
+        default:
+            FIXME("Unrecognized D3DVSDT_TYPE %#x\n", d3dvsdt_type);
+            return "unrecognized";
+    }
+}
+
+static const char *debug_d3dvsde_register(D3DVSDE_REGISTER d3dvsde_register)
+{
+    switch (d3dvsde_register)
+    {
+#define D3DVSDE_REGISTER_TO_STR(u) case u: return #u
+        D3DVSDE_REGISTER_TO_STR(D3DVSDE_POSITION);
+        D3DVSDE_REGISTER_TO_STR(D3DVSDE_BLENDWEIGHT);
+        D3DVSDE_REGISTER_TO_STR(D3DVSDE_BLENDINDICES);
+        D3DVSDE_REGISTER_TO_STR(D3DVSDE_NORMAL);
+        D3DVSDE_REGISTER_TO_STR(D3DVSDE_PSIZE);
+        D3DVSDE_REGISTER_TO_STR(D3DVSDE_DIFFUSE);
+        D3DVSDE_REGISTER_TO_STR(D3DVSDE_SPECULAR);
+        D3DVSDE_REGISTER_TO_STR(D3DVSDE_TEXCOORD0);
+        D3DVSDE_REGISTER_TO_STR(D3DVSDE_TEXCOORD1);
+        D3DVSDE_REGISTER_TO_STR(D3DVSDE_TEXCOORD2);
+        D3DVSDE_REGISTER_TO_STR(D3DVSDE_TEXCOORD3);
+        D3DVSDE_REGISTER_TO_STR(D3DVSDE_TEXCOORD4);
+        D3DVSDE_REGISTER_TO_STR(D3DVSDE_TEXCOORD5);
+        D3DVSDE_REGISTER_TO_STR(D3DVSDE_TEXCOORD6);
+        D3DVSDE_REGISTER_TO_STR(D3DVSDE_TEXCOORD7);
+        D3DVSDE_REGISTER_TO_STR(D3DVSDE_POSITION2);
+        D3DVSDE_REGISTER_TO_STR(D3DVSDE_NORMAL2);
+#undef D3DVSDE_REGISTER_TO_STR
+        default:
+            FIXME("Unrecognized D3DVSDE_REGISTER %#x\n", d3dvsde_register);
+            return "unrecognized";
+    }
+}
+
+size_t parse_token(const DWORD* pToken)
+{
+    const DWORD token = *pToken;
+    size_t tokenlen = 1;
+
+    switch ((token & D3DVSD_TOKENTYPEMASK) >> D3DVSD_TOKENTYPESHIFT) { /* maybe a macro to inverse ... */
+        case D3DVSD_TOKEN_NOP:
+            TRACE(" 0x%08x NOP()\n", token);
+            break;
+
+        case D3DVSD_TOKEN_STREAM:
+            if (token & D3DVSD_STREAMTESSMASK)
+            {
+                TRACE(" 0x%08x STREAM_TESS()\n", token);
+            } else {
+                TRACE(" 0x%08x STREAM(%u)\n", token, ((token & D3DVSD_STREAMNUMBERMASK) >> D3DVSD_STREAMNUMBERSHIFT));
+            }
+            break;
+
+        case D3DVSD_TOKEN_STREAMDATA:
+            if (token & 0x10000000)
+            {
+                TRACE(" 0x%08x SKIP(%u)\n", token, ((token & D3DVSD_SKIPCOUNTMASK) >> D3DVSD_SKIPCOUNTSHIFT));
+            } else {
+                DWORD type = ((token & D3DVSD_DATATYPEMASK)  >> D3DVSD_DATATYPESHIFT);
+                DWORD reg = ((token & D3DVSD_VERTEXREGMASK) >> D3DVSD_VERTEXREGSHIFT);
+                TRACE(" 0x%08x REG(%s, %s)\n", token, debug_d3dvsde_register(reg), debug_d3dvsdt_type(type));
+            }
+            break;
+
+        case D3DVSD_TOKEN_TESSELLATOR:
+            if (token & 0x10000000)
+            {
+                DWORD type = ((token & D3DVSD_DATATYPEMASK)  >> D3DVSD_DATATYPESHIFT);
+                DWORD reg = ((token & D3DVSD_VERTEXREGMASK) >> D3DVSD_VERTEXREGSHIFT);
+                TRACE(" 0x%08x TESSUV(%s) as %s\n", token, debug_d3dvsde_register(reg), debug_d3dvsdt_type(type));
+            } else {
+                DWORD type = ((token & D3DVSD_DATATYPEMASK)    >> D3DVSD_DATATYPESHIFT);
+                DWORD regout = ((token & D3DVSD_VERTEXREGMASK)   >> D3DVSD_VERTEXREGSHIFT);
+                DWORD regin = ((token & D3DVSD_VERTEXREGINMASK) >> D3DVSD_VERTEXREGINSHIFT);
+                TRACE(" 0x%08x TESSNORMAL(%s, %s) as %s\n", token, debug_d3dvsde_register(regin),
+                        debug_d3dvsde_register(regout), debug_d3dvsdt_type(type));
+            }
+            break;
+
+        case D3DVSD_TOKEN_CONSTMEM:
+            {
+                DWORD count = ((token & D3DVSD_CONSTCOUNTMASK)   >> D3DVSD_CONSTCOUNTSHIFT);
+                tokenlen = (4 * count) + 1;
+            }
+            break;
+
+        case D3DVSD_TOKEN_EXT:
+            {
+                DWORD count = ((token & D3DVSD_CONSTCOUNTMASK) >> D3DVSD_CONSTCOUNTSHIFT);
+                DWORD extinfo = ((token & D3DVSD_EXTINFOMASK)    >> D3DVSD_EXTINFOSHIFT);
+                TRACE(" 0x%08x EXT(%u, %u)\n", token, count, extinfo);
+                /* todo ... print extension */
+                tokenlen = count + 1;
+            }
+            break;
+
+        case D3DVSD_TOKEN_END:
+            TRACE(" 0x%08x END()\n", token);
+            break;
+
+        default:
+            TRACE(" 0x%08x UNKNOWN\n", token);
+            /* argg error */
+    }
+
+    return tokenlen;
+}
+
+void load_local_constants(const DWORD *d3d8_elements, IWineD3DVertexShader *wined3d_vertex_shader)
+{
+    const DWORD *token = d3d8_elements;
+
+    while (*token != D3DVSD_END())
+    {
+        if (((*token & D3DVSD_TOKENTYPEMASK) >> D3DVSD_TOKENTYPESHIFT) == D3DVSD_TOKEN_CONSTMEM)
+        {
+            DWORD count = ((*token & D3DVSD_CONSTCOUNTMASK) >> D3DVSD_CONSTCOUNTSHIFT);
+            DWORD constant_idx = ((*token & D3DVSD_CONSTADDRESSMASK) >> D3DVSD_CONSTADDRESSSHIFT);
+            HRESULT hr;
+
+            if (TRACE_ON(d3d8))
+            {
+                DWORD i;
+                for (i = 0; i < count; ++i)
+                {
+                    TRACE("c[%u] = (%8f, %8f, %8f, %8f)\n",
+                            constant_idx,
+                            *(const float *)(token + i * 4 + 1),
+                            *(const float *)(token + i * 4 + 2),
+                            *(const float *)(token + i * 4 + 3),
+                            *(const float *)(token + i * 4 + 4));
+                }
+            }
+            hr = IWineD3DVertexShader_SetLocalConstantsF(wined3d_vertex_shader, constant_idx, (const float *)token+1, count);
+            if (FAILED(hr)) ERR("Failed setting shader constants\n");
+        }
+
+        token += parse_token(token);
+    }
+}
+
+/* NOTE: Make sure these are in the correct numerical order. (see /include/wined3d_types.h) */
+static const size_t wined3d_type_sizes[WINED3DDECLTYPE_UNUSED] = {
+    /*WINED3DDECLTYPE_FLOAT1*/    1 * sizeof(float),
+    /*WINED3DDECLTYPE_FLOAT2*/    2 * sizeof(float),
+    /*WINED3DDECLTYPE_FLOAT3*/    3 * sizeof(float),
+    /*WINED3DDECLTYPE_FLOAT4*/    4 * sizeof(float),
+    /*WINED3DDECLTYPE_D3DCOLOR*/  4 * sizeof(BYTE),
+    /*WINED3DDECLTYPE_UBYTE4*/    4 * sizeof(BYTE),
+    /*WINED3DDECLTYPE_SHORT2*/    2 * sizeof(short int),
+    /*WINED3DDECLTYPE_SHORT4*/    4 * sizeof(short int),
+    /*WINED3DDECLTYPE_UBYTE4N*/   4 * sizeof(BYTE),
+    /*WINED3DDECLTYPE_SHORT2N*/   2 * sizeof(short int),
+    /*WINED3DDECLTYPE_SHORT4N*/   4 * sizeof(short int),
+    /*WINED3DDECLTYPE_USHORT2N*/  2 * sizeof(short int),
+    /*WINED3DDECLTYPE_USHORT4N*/  4 * sizeof(short int),
+    /*WINED3DDECLTYPE_UDEC3*/     3 * sizeof(short int),
+    /*WINED3DDECLTYPE_DEC3N*/     3 * sizeof(short int),
+    /*WINED3DDECLTYPE_FLOAT16_2*/ 2 * sizeof(short int),
+    /*WINED3DDECLTYPE_FLOAT16_4*/ 4 * sizeof(short int)
+};
+
+typedef struct {
+    BYTE usage;
+    BYTE usage_idx;
+} wined3d_usage_t;
+
+static const wined3d_usage_t wined3d_usage_lookup[] = {
+    /*D3DVSDE_POSITION*/     {WINED3DDECLUSAGE_POSITION,     0},
+    /*D3DVSDE_BLENDWEIGHT*/  {WINED3DDECLUSAGE_BLENDWEIGHT,  0},
+    /*D3DVSDE_BLENDINDICES*/ {WINED3DDECLUSAGE_BLENDINDICES, 0},
+    /*D3DVSDE_NORMAL*/       {WINED3DDECLUSAGE_NORMAL,       0},
+    /*D3DVSDE_PSIZE*/        {WINED3DDECLUSAGE_PSIZE,        0},
+    /*D3DVSDE_DIFFUSE*/      {WINED3DDECLUSAGE_COLOR,        0},
+    /*D3DVSDE_SPECULAR*/     {WINED3DDECLUSAGE_COLOR,        1},
+    /*D3DVSDE_TEXCOORD0*/    {WINED3DDECLUSAGE_TEXCOORD,     0},
+    /*D3DVSDE_TEXCOORD1*/    {WINED3DDECLUSAGE_TEXCOORD,     1},
+    /*D3DVSDE_TEXCOORD2*/    {WINED3DDECLUSAGE_TEXCOORD,     2},
+    /*D3DVSDE_TEXCOORD3*/    {WINED3DDECLUSAGE_TEXCOORD,     3},
+    /*D3DVSDE_TEXCOORD4*/    {WINED3DDECLUSAGE_TEXCOORD,     4},
+    /*D3DVSDE_TEXCOORD5*/    {WINED3DDECLUSAGE_TEXCOORD,     5},
+    /*D3DVSDE_TEXCOORD6*/    {WINED3DDECLUSAGE_TEXCOORD,     6},
+    /*D3DVSDE_TEXCOORD7*/    {WINED3DDECLUSAGE_TEXCOORD,     7},
+    /*D3DVSDE_POSITION2*/    {WINED3DDECLUSAGE_POSITION,     1},
+    /*D3DVSDE_NORMAL2*/      {WINED3DDECLUSAGE_NORMAL,       1},
+};
+
+/* TODO: find out where rhw (or positionT) is for declaration8 */
+UINT convert_to_wined3d_declaration(const DWORD *d3d8_elements, DWORD *d3d8_elements_size, WINED3DVERTEXELEMENT **wined3d_elements)
+{
+    const DWORD *token = d3d8_elements;
+    WINED3DVERTEXELEMENT *element;
+    D3DVSD_TOKENTYPE token_type;
+    unsigned int element_count = 0;
+    DWORD stream = 0;
+    int offset = 0;
+
+    TRACE("d3d8_elements %p, wined3d_elements %p\n", d3d8_elements, wined3d_elements);
+
+    /* 128 should be enough for anyone... */
+    *wined3d_elements = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, 128 * sizeof(WINED3DVERTEXELEMENT));
+    while (D3DVSD_END() != *token)
+    {
+        token_type = ((*token & D3DVSD_TOKENTYPEMASK) >> D3DVSD_TOKENTYPESHIFT);
+
+        if (token_type == D3DVSD_TOKEN_STREAM && !(*token & D3DVSD_STREAMTESSMASK))
+        {
+            stream = ((*token & D3DVSD_STREAMNUMBERMASK) >> D3DVSD_STREAMNUMBERSHIFT);
+            offset = 0;
+        } else if (token_type == D3DVSD_TOKEN_STREAMDATA && !(token_type & 0x10000000)) {
+            DWORD type = ((*token & D3DVSD_DATATYPEMASK) >> D3DVSD_DATATYPESHIFT);
+            DWORD reg  = ((*token & D3DVSD_VERTEXREGMASK) >> D3DVSD_VERTEXREGSHIFT);
+
+            TRACE("Adding element %d:\n", element_count);
+
+            element = *wined3d_elements + element_count++;
+            element->Stream = stream;
+            element->Method = WINED3DDECLMETHOD_DEFAULT;
+            element->Usage = wined3d_usage_lookup[reg].usage;
+            element->UsageIndex = wined3d_usage_lookup[reg].usage_idx;
+            element->Type = type;
+            element->Offset = offset;
+            element->Reg = reg;
+
+            offset += wined3d_type_sizes[type];
+        } else if (token_type == D3DVSD_TOKEN_STREAMDATA && (token_type & 0x10000000)) {
+            TRACE(" 0x%08x SKIP(%u)\n", token_type, ((token_type & D3DVSD_SKIPCOUNTMASK) >> D3DVSD_SKIPCOUNTSHIFT));
+            offset += sizeof(DWORD) * ((token_type & D3DVSD_SKIPCOUNTMASK) >> D3DVSD_SKIPCOUNTSHIFT);
+        }
+
+        if (element_count >= 127) {
+            ERR("More than 127 elements?\n");
+            break;
+        }
+
+        token += parse_token(token);
+    }
+
+    /* END */
+    element = *wined3d_elements + element_count++;
+    element->Stream = 0xFF;
+    element->Type = WINED3DDECLTYPE_UNUSED;
+
+    *d3d8_elements_size = (++token - d3d8_elements) * sizeof(DWORD);
+
+    return element_count;
+}
+
+const IDirect3DVertexDeclaration8Vtbl Direct3DVertexDeclaration8_Vtbl =
+{
+    IDirect3DVertexDeclaration8Impl_QueryInterface,
+    IDirect3DVertexDeclaration8Impl_AddRef,
+    IDirect3DVertexDeclaration8Impl_Release
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/vertexshader.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/vertexshader.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/vertexshader.c	(revision 16410)
@@ -0,0 +1,101 @@
+/*
+ * IDirect3DVertexShader8 implementation
+ *
+ * Copyright 2002-2003 Jason Edmeades
+ *                     Raphael Junqueira
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d8_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d8);
+
+/* IDirect3DVertexShader8 IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DVertexShader8Impl_QueryInterface(IDirect3DVertexShader8 *iface, REFIID riid, LPVOID* ppobj) {
+    IDirect3DVertexShader8Impl *This = (IDirect3DVertexShader8Impl *)iface;
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DVertexShader8)) {
+        IUnknown_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DVertexShader8Impl_AddRef(IDirect3DVertexShader8 *iface) {
+    IDirect3DVertexShader8Impl *This = (IDirect3DVertexShader8Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+    return ref;
+}
+
+static ULONG WINAPI IDirect3DVertexShader8Impl_Release(IDirect3DVertexShader8 *iface) {
+    IDirect3DVertexShader8Impl *This = (IDirect3DVertexShader8Impl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+        IDirect3DVertexDeclaration8_Release(This->vertex_declaration);
+        IWineD3DVertexShader_Release(This->wineD3DVertexShader);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+    return ref;
+}
+
+/* IDirect3DVertexShader8 Interface follow: */
+static HRESULT WINAPI IDirect3DVertexShader8Impl_GetDevice(IDirect3DVertexShader8 *iface, IDirect3DDevice8** ppDevice) {
+    IDirect3DVertexShader8Impl *This = (IDirect3DVertexShader8Impl *)iface;
+    IWineD3DDevice *myDevice = NULL;
+    HRESULT hr;
+    TRACE("(%p) : Relay\n", This);
+
+    hr = IWineD3DVertexShader_GetDevice(This->wineD3DVertexShader, &myDevice);
+    if (WINED3D_OK == hr && myDevice != NULL) {
+        hr = IWineD3DDevice_GetParent(myDevice, (IUnknown **)ppDevice);
+        IWineD3DDevice_Release(myDevice);
+    } else {
+        *ppDevice = NULL;
+    }
+    TRACE("(%p) returning (%p)\n", This, *ppDevice);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DVertexShader8Impl_GetFunction(IDirect3DVertexShader8 *iface, VOID* pData, UINT* pSizeOfData) {
+    IDirect3DVertexShader8Impl *This = (IDirect3DVertexShader8Impl *)iface;
+
+    TRACE("(%p) : Relay\n", This);
+    return IWineD3DVertexShader_GetFunction(This->wineD3DVertexShader, pData, pSizeOfData);
+}
+
+
+const IDirect3DVertexShader8Vtbl Direct3DVertexShader8_Vtbl =
+{
+    /* IUnknown */
+    IDirect3DVertexShader8Impl_QueryInterface,
+    IDirect3DVertexShader8Impl_AddRef,
+    IDirect3DVertexShader8Impl_Release,
+    /* IDirect3DVertexShader8 */
+    IDirect3DVertexShader8Impl_GetDevice,
+    IDirect3DVertexShader8Impl_GetFunction
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/volume.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/volume.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/volume.c	(revision 16410)
@@ -0,0 +1,256 @@
+/*
+ * IDirect3DVolume8 implementation
+ *
+ * Copyright 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d8_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d8);
+
+/* IDirect3DVolume8 IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DVolume8Impl_QueryInterface(LPDIRECT3DVOLUME8 iface, REFIID riid, LPVOID *ppobj) {
+    IDirect3DVolume8Impl *This = (IDirect3DVolume8Impl *)iface;
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DVolume8)) {
+        IUnknown_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DVolume8Impl_AddRef(LPDIRECT3DVOLUME8 iface) {
+    IDirect3DVolume8Impl *This = (IDirect3DVolume8Impl *)iface;
+
+    TRACE("(%p)\n", This);
+
+    if (This->forwardReference) {
+        /* Forward to the containerParent */
+        TRACE("(%p) : Forwarding to %p\n", This, This->forwardReference);
+        return IUnknown_AddRef(This->forwardReference);
+    } else {
+        /* No container, handle our own refcounting */
+        ULONG ref = InterlockedIncrement(&This->ref);
+        TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+        return ref;
+    }
+}
+
+static ULONG WINAPI IDirect3DVolume8Impl_Release(LPDIRECT3DVOLUME8 iface) {
+    IDirect3DVolume8Impl *This = (IDirect3DVolume8Impl *)iface;
+
+    TRACE("(%p)\n", This);
+
+    if (This->forwardReference) {
+        /* Forward to the containerParent */
+        TRACE("(%p) : Forwarding to %p\n", This, This->forwardReference);
+        return IUnknown_Release(This->forwardReference);
+    }
+    else {
+        /* No container, handle our own refcounting */
+        ULONG ref = InterlockedDecrement(&This->ref);
+        TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+        if (ref == 0) {
+            EnterCriticalSection(&d3d8_cs);
+            IWineD3DVolume_Release(This->wineD3DVolume);
+            LeaveCriticalSection(&d3d8_cs);
+            HeapFree(GetProcessHeap(), 0, This);
+        }
+
+        return ref;
+    }
+}
+
+/* IDirect3DVolume8 Interface follow: */
+static HRESULT WINAPI IDirect3DVolume8Impl_GetDevice(LPDIRECT3DVOLUME8 iface, IDirect3DDevice8 **ppDevice) {
+    IDirect3DVolume8Impl *This = (IDirect3DVolume8Impl *)iface;
+    IWineD3DDevice       *myDevice = NULL;
+
+    EnterCriticalSection(&d3d8_cs);
+    IWineD3DVolume_GetDevice(This->wineD3DVolume, &myDevice);
+    IWineD3DDevice_GetParent(myDevice, (IUnknown **)ppDevice);
+    IWineD3DDevice_Release(myDevice);
+    LeaveCriticalSection(&d3d8_cs);
+    return D3D_OK;
+}
+
+static HRESULT WINAPI IDirect3DVolume8Impl_SetPrivateData(LPDIRECT3DVOLUME8 iface, REFGUID refguid, CONST void *pData, DWORD SizeOfData, DWORD Flags) {
+    IDirect3DVolume8Impl *This = (IDirect3DVolume8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DVolume_SetPrivateData(This->wineD3DVolume, refguid, pData, SizeOfData, Flags);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DVolume8Impl_GetPrivateData(LPDIRECT3DVOLUME8 iface, REFGUID  refguid, void *pData, DWORD* pSizeOfData) {
+    IDirect3DVolume8Impl *This = (IDirect3DVolume8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DVolume_GetPrivateData(This->wineD3DVolume, refguid, pData, pSizeOfData);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DVolume8Impl_FreePrivateData(LPDIRECT3DVOLUME8 iface, REFGUID refguid) {
+    IDirect3DVolume8Impl *This = (IDirect3DVolume8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DVolume_FreePrivateData(This->wineD3DVolume, refguid);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DVolume8Impl_GetContainer(LPDIRECT3DVOLUME8 iface, REFIID riid, void **ppContainer) {
+    IDirect3DVolume8Impl *This = (IDirect3DVolume8Impl *)iface;
+    HRESULT res;
+
+    TRACE("(This %p, riid %s, ppContainer %p)\n", This, debugstr_guid(riid), ppContainer);
+
+    if (!This->container) return E_NOINTERFACE;
+
+    if (!ppContainer) {
+        ERR("Called without a valid ppContainer.\n");
+    }
+
+    res = IUnknown_QueryInterface(This->container, riid, ppContainer);
+
+    TRACE("Returning ppContainer %p, *ppContainer %p\n", ppContainer, *ppContainer);
+
+    return res;
+}
+
+static HRESULT WINAPI IDirect3DVolume8Impl_GetDesc(LPDIRECT3DVOLUME8 iface, D3DVOLUME_DESC *pDesc) {
+    IDirect3DVolume8Impl *This = (IDirect3DVolume8Impl *)iface;
+    HRESULT hr;
+    WINED3DVOLUME_DESC     wined3ddesc;
+
+    TRACE("(%p) Relay\n", This);
+
+    /* As d3d8 and d3d9 structures differ, pass in ptrs to where data needs to go */
+    wined3ddesc.Format              = (WINED3DFORMAT *)&pDesc->Format;
+    wined3ddesc.Type                = (WINED3DRESOURCETYPE *)&pDesc->Type;
+    wined3ddesc.Usage               = &pDesc->Usage;
+    wined3ddesc.Pool                = (WINED3DPOOL *) &pDesc->Pool;
+    wined3ddesc.Size                = &pDesc->Size;
+    wined3ddesc.Width               = &pDesc->Width;
+    wined3ddesc.Height              = &pDesc->Height;
+    wined3ddesc.Depth               = &pDesc->Depth;
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DVolume_GetDesc(This->wineD3DVolume, &wined3ddesc);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DVolume8Impl_LockBox(LPDIRECT3DVOLUME8 iface, D3DLOCKED_BOX *pLockedVolume, CONST D3DBOX *pBox, DWORD Flags) {
+    IDirect3DVolume8Impl *This = (IDirect3DVolume8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) relay %p %p %p %d\n", This, This->wineD3DVolume, pLockedVolume, pBox, Flags);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DVolume_LockBox(This->wineD3DVolume, (WINED3DLOCKED_BOX *) pLockedVolume, (CONST WINED3DBOX *) pBox, Flags);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DVolume8Impl_UnlockBox(LPDIRECT3DVOLUME8 iface) {
+    IDirect3DVolume8Impl *This = (IDirect3DVolume8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) relay %p\n", This, This->wineD3DVolume);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DVolume_UnlockBox(This->wineD3DVolume);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static const IDirect3DVolume8Vtbl Direct3DVolume8_Vtbl =
+{
+    /* IUnknown */
+    IDirect3DVolume8Impl_QueryInterface,
+    IDirect3DVolume8Impl_AddRef,
+    IDirect3DVolume8Impl_Release,
+    /* IDirect3DVolume8 */
+    IDirect3DVolume8Impl_GetDevice,
+    IDirect3DVolume8Impl_SetPrivateData,
+    IDirect3DVolume8Impl_GetPrivateData,
+    IDirect3DVolume8Impl_FreePrivateData,
+    IDirect3DVolume8Impl_GetContainer,
+    IDirect3DVolume8Impl_GetDesc,
+    IDirect3DVolume8Impl_LockBox,
+    IDirect3DVolume8Impl_UnlockBox
+};
+
+
+/* Internal function called back during the CreateVolumeTexture */
+HRESULT WINAPI D3D8CB_CreateVolume(IUnknown  *pDevice, IUnknown *pSuperior, UINT Width, UINT Height, UINT Depth,
+                                   WINED3DFORMAT  Format, WINED3DPOOL Pool, DWORD Usage,
+                                   IWineD3DVolume **ppVolume,
+                                   HANDLE   * pSharedHandle) {
+    IDirect3DVolume8Impl *object;
+    IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)pDevice;
+    HRESULT hrc = D3D_OK;
+
+    /* Allocate the storage for the device */
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DVolume8Impl));
+    if (NULL == object) {
+        FIXME("Allocation of memory failed\n");
+        *ppVolume = NULL;
+        return D3DERR_OUTOFVIDEOMEMORY;
+    }
+
+    object->lpVtbl = &Direct3DVolume8_Vtbl;
+    object->ref = 1;
+    hrc = IWineD3DDevice_CreateVolume(This->WineD3DDevice, Width, Height, Depth, Usage, Format, 
+                                       Pool, &object->wineD3DVolume, pSharedHandle, (IUnknown *)object);
+    if (hrc != D3D_OK) {
+        /* free up object */ 
+        FIXME("(%p) call to IWineD3DDevice_CreateVolume failed\n", This);
+        HeapFree(GetProcessHeap(), 0, object);
+        *ppVolume = NULL;
+    } else {
+        *ppVolume = object->wineD3DVolume;
+        object->container = pSuperior;
+        object->forwardReference = pSuperior;
+    }
+    TRACE("(%p) Created volume %p\n", This, *ppVolume);
+    return hrc;
+}
+
+ULONG WINAPI D3D8CB_DestroyVolume(IWineD3DVolume *pVolume) {
+    IDirect3DVolume8Impl* volumeParent;
+
+    IWineD3DVolume_GetParent(pVolume, (IUnknown **) &volumeParent);
+    /* GetParent's AddRef was forwarded to an object in destruction.
+     * Releasing it here again would cause an endless recursion. */
+    volumeParent->forwardReference = NULL;
+    return IDirect3DVolume8_Release((IDirect3DVolume8*) volumeParent);
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/volumetexture.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/volumetexture.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d8/volumetexture.c	(revision 16410)
@@ -0,0 +1,291 @@
+/*
+ * IDirect3DVolumeTexture8 implementation
+ *
+ * Copyright 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d8_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d8);
+
+/* IDirect3DVolumeTexture8 IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DVolumeTexture8Impl_QueryInterface(LPDIRECT3DVOLUMETEXTURE8 iface, REFIID riid, LPVOID *ppobj) {
+    IDirect3DVolumeTexture8Impl *This = (IDirect3DVolumeTexture8Impl *)iface;
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+    || IsEqualGUID(riid, &IID_IDirect3DResource8)
+    || IsEqualGUID(riid, &IID_IDirect3DBaseTexture8)
+    || IsEqualGUID(riid, &IID_IDirect3DVolumeTexture8)) {
+        IUnknown_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DVolumeTexture8Impl_AddRef(LPDIRECT3DVOLUMETEXTURE8 iface) {
+    IDirect3DVolumeTexture8Impl *This = (IDirect3DVolumeTexture8Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+    return ref;
+}
+
+static ULONG WINAPI IDirect3DVolumeTexture8Impl_Release(LPDIRECT3DVOLUMETEXTURE8 iface) {
+    IDirect3DVolumeTexture8Impl *This = (IDirect3DVolumeTexture8Impl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+        EnterCriticalSection(&d3d8_cs);
+        IWineD3DVolumeTexture_Destroy(This->wineD3DVolumeTexture, D3D8CB_DestroyVolume);
+        LeaveCriticalSection(&d3d8_cs);
+        IUnknown_Release(This->parentDevice);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+    return ref;
+}
+
+/* IDirect3DVolumeTexture8 IDirect3DResource8 Interface follow: */
+static HRESULT WINAPI IDirect3DVolumeTexture8Impl_GetDevice(LPDIRECT3DVOLUMETEXTURE8 iface, IDirect3DDevice8 **ppDevice) {
+    IDirect3DVolumeTexture8Impl *This = (IDirect3DVolumeTexture8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IDirect3DResource8Impl_GetDevice((LPDIRECT3DRESOURCE8) This, ppDevice);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DVolumeTexture8Impl_SetPrivateData(LPDIRECT3DVOLUMETEXTURE8 iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) {
+    IDirect3DVolumeTexture8Impl *This = (IDirect3DVolumeTexture8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DVolumeTexture_SetPrivateData(This->wineD3DVolumeTexture, refguid, pData, SizeOfData, Flags);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DVolumeTexture8Impl_GetPrivateData(LPDIRECT3DVOLUMETEXTURE8 iface, REFGUID refguid, void *pData, DWORD *pSizeOfData) {
+    IDirect3DVolumeTexture8Impl *This = (IDirect3DVolumeTexture8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DVolumeTexture_GetPrivateData(This->wineD3DVolumeTexture, refguid, pData, pSizeOfData);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DVolumeTexture8Impl_FreePrivateData(LPDIRECT3DVOLUMETEXTURE8 iface, REFGUID refguid) {
+    IDirect3DVolumeTexture8Impl *This = (IDirect3DVolumeTexture8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DVolumeTexture_FreePrivateData(This->wineD3DVolumeTexture, refguid);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static DWORD WINAPI IDirect3DVolumeTexture8Impl_SetPriority(LPDIRECT3DVOLUMETEXTURE8 iface, DWORD PriorityNew) {
+    IDirect3DVolumeTexture8Impl *This = (IDirect3DVolumeTexture8Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    ret = IWineD3DVolumeTexture_SetPriority(This->wineD3DVolumeTexture, PriorityNew);
+    LeaveCriticalSection(&d3d8_cs);
+    return ret;
+}
+
+static DWORD WINAPI IDirect3DVolumeTexture8Impl_GetPriority(LPDIRECT3DVOLUMETEXTURE8 iface) {
+    IDirect3DVolumeTexture8Impl *This = (IDirect3DVolumeTexture8Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    ret = IWineD3DVolumeTexture_GetPriority(This->wineD3DVolumeTexture);
+    LeaveCriticalSection(&d3d8_cs);
+    return ret;
+}
+
+static void WINAPI IDirect3DVolumeTexture8Impl_PreLoad(LPDIRECT3DVOLUMETEXTURE8 iface) {
+    IDirect3DVolumeTexture8Impl *This = (IDirect3DVolumeTexture8Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    IWineD3DVolumeTexture_PreLoad(This->wineD3DVolumeTexture);
+    LeaveCriticalSection(&d3d8_cs);
+}
+
+static D3DRESOURCETYPE WINAPI IDirect3DVolumeTexture8Impl_GetType(LPDIRECT3DVOLUMETEXTURE8 iface) {
+    IDirect3DVolumeTexture8Impl *This = (IDirect3DVolumeTexture8Impl *)iface;
+    D3DRESOURCETYPE type;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    type = IWineD3DVolumeTexture_GetType(This->wineD3DVolumeTexture);
+    LeaveCriticalSection(&d3d8_cs);
+    return type;
+}
+
+/* IDirect3DVolumeTexture8 IDirect3DBaseTexture8 Interface follow: */
+static DWORD WINAPI IDirect3DVolumeTexture8Impl_SetLOD(LPDIRECT3DVOLUMETEXTURE8 iface, DWORD LODNew) {
+    IDirect3DVolumeTexture8Impl *This = (IDirect3DVolumeTexture8Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    ret = IWineD3DVolumeTexture_SetLOD(This->wineD3DVolumeTexture, LODNew);
+    LeaveCriticalSection(&d3d8_cs);
+    return ret;
+}
+
+static DWORD WINAPI IDirect3DVolumeTexture8Impl_GetLOD(LPDIRECT3DVOLUMETEXTURE8 iface) {
+    IDirect3DVolumeTexture8Impl *This = (IDirect3DVolumeTexture8Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    ret = IWineD3DVolumeTexture_GetLOD(This->wineD3DVolumeTexture);
+    LeaveCriticalSection(&d3d8_cs);
+    return ret;
+}
+
+static DWORD WINAPI IDirect3DVolumeTexture8Impl_GetLevelCount(LPDIRECT3DVOLUMETEXTURE8 iface) {
+    IDirect3DVolumeTexture8Impl *This = (IDirect3DVolumeTexture8Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    ret = IWineD3DVolumeTexture_GetLevelCount(This->wineD3DVolumeTexture);
+    LeaveCriticalSection(&d3d8_cs);
+    return ret;
+}
+
+/* IDirect3DVolumeTexture8 Interface follow: */
+static HRESULT WINAPI IDirect3DVolumeTexture8Impl_GetLevelDesc(LPDIRECT3DVOLUMETEXTURE8 iface, UINT Level, D3DVOLUME_DESC* pDesc) {
+    IDirect3DVolumeTexture8Impl *This = (IDirect3DVolumeTexture8Impl *)iface;
+    WINED3DVOLUME_DESC     wined3ddesc;
+    UINT                   tmpInt = -1;
+    HRESULT hr;
+
+    TRACE("(%p) Relay\n", This);
+
+    /* As d3d8 and d3d8 structures differ, pass in ptrs to where data needs to go */
+    wined3ddesc.Format              = (WINED3DFORMAT *)&pDesc->Format;
+    wined3ddesc.Type                = (WINED3DRESOURCETYPE *)&pDesc->Type;
+    wined3ddesc.Usage               = &pDesc->Usage;
+    wined3ddesc.Pool                = (WINED3DPOOL *) &pDesc->Pool;
+    wined3ddesc.Size                = &tmpInt;
+    wined3ddesc.Width               = &pDesc->Width;
+    wined3ddesc.Height              = &pDesc->Height;
+    wined3ddesc.Depth               = &pDesc->Depth;
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DVolumeTexture_GetLevelDesc(This->wineD3DVolumeTexture, Level, &wined3ddesc);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DVolumeTexture8Impl_GetVolumeLevel(LPDIRECT3DVOLUMETEXTURE8 iface, UINT Level, IDirect3DVolume8 **ppVolumeLevel) {
+    IDirect3DVolumeTexture8Impl *This = (IDirect3DVolumeTexture8Impl *)iface;
+    HRESULT hrc = D3D_OK;
+    IWineD3DVolume *myVolume = NULL;
+
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hrc = IWineD3DVolumeTexture_GetVolumeLevel(This->wineD3DVolumeTexture, Level, &myVolume);
+    if (hrc == D3D_OK && NULL != ppVolumeLevel) {
+       IWineD3DVolumeTexture_GetParent(myVolume, (IUnknown **)ppVolumeLevel);
+       IWineD3DVolumeTexture_Release(myVolume);
+    }
+    LeaveCriticalSection(&d3d8_cs);
+    return hrc;
+}
+
+static HRESULT WINAPI IDirect3DVolumeTexture8Impl_LockBox(LPDIRECT3DVOLUMETEXTURE8 iface, UINT Level, D3DLOCKED_BOX *pLockedVolume, CONST D3DBOX *pBox, DWORD Flags) {
+    IDirect3DVolumeTexture8Impl *This = (IDirect3DVolumeTexture8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay %p %p %p %d\n", This, This->wineD3DVolumeTexture, pLockedVolume, pBox,Flags);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DVolumeTexture_LockBox(This->wineD3DVolumeTexture, Level, (WINED3DLOCKED_BOX *) pLockedVolume, (CONST WINED3DBOX *) pBox, Flags);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DVolumeTexture8Impl_UnlockBox(LPDIRECT3DVOLUMETEXTURE8 iface, UINT Level) {
+    IDirect3DVolumeTexture8Impl *This = (IDirect3DVolumeTexture8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay %p %d\n", This, This->wineD3DVolumeTexture, Level);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DVolumeTexture_UnlockBox(This->wineD3DVolumeTexture, Level);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DVolumeTexture8Impl_AddDirtyBox(LPDIRECT3DVOLUMETEXTURE8 iface, CONST D3DBOX *pDirtyBox) {
+    IDirect3DVolumeTexture8Impl *This = (IDirect3DVolumeTexture8Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d8_cs);
+    hr = IWineD3DVolumeTexture_AddDirtyBox(This->wineD3DVolumeTexture, (CONST WINED3DBOX *) pDirtyBox);
+    LeaveCriticalSection(&d3d8_cs);
+    return hr;
+}
+
+
+const IDirect3DVolumeTexture8Vtbl Direct3DVolumeTexture8_Vtbl =
+{
+    /* IUnknown */
+    IDirect3DVolumeTexture8Impl_QueryInterface,
+    IDirect3DVolumeTexture8Impl_AddRef,
+    IDirect3DVolumeTexture8Impl_Release,
+    /* IDirect3DResource8 */
+    IDirect3DVolumeTexture8Impl_GetDevice,
+    IDirect3DVolumeTexture8Impl_SetPrivateData,
+    IDirect3DVolumeTexture8Impl_GetPrivateData,
+    IDirect3DVolumeTexture8Impl_FreePrivateData,
+    IDirect3DVolumeTexture8Impl_SetPriority,
+    IDirect3DVolumeTexture8Impl_GetPriority,
+    IDirect3DVolumeTexture8Impl_PreLoad,
+    IDirect3DVolumeTexture8Impl_GetType,
+    /* IDirect3DBaseTexture8 */
+    IDirect3DVolumeTexture8Impl_SetLOD,
+    IDirect3DVolumeTexture8Impl_GetLOD,
+    IDirect3DVolumeTexture8Impl_GetLevelCount,
+    /* IDirect3DVolumeTexture8 */
+    IDirect3DVolumeTexture8Impl_GetLevelDesc,
+    IDirect3DVolumeTexture8Impl_GetVolumeLevel,
+    IDirect3DVolumeTexture8Impl_LockBox,
+    IDirect3DVolumeTexture8Impl_UnlockBox,
+    IDirect3DVolumeTexture8Impl_AddDirtyBox
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/basetexture.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/basetexture.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/basetexture.c	(revision 16410)
@@ -0,0 +1,172 @@
+/*
+ * IDirect3DBaseTexture9 implementation
+ *
+ * Copyright 2002-2004 Jason Edmeades
+ *                     Raphael Junqueira
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d9_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d9);
+
+/* IDirect3DBaseTexture9 IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DBaseTexture9Impl_QueryInterface(LPDIRECT3DBASETEXTURE9 iface, REFIID riid, LPVOID* ppobj) {
+    IDirect3DBaseTexture9Impl *This = (IDirect3DBaseTexture9Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DResource9)
+        || IsEqualGUID(riid, &IID_IDirect3DBaseTexture9)) {
+        IDirect3DBaseTexture9_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DBaseTexture9Impl_AddRef(LPDIRECT3DBASETEXTURE9 iface) {
+    IDirect3DBaseTexture9Impl *This = (IDirect3DBaseTexture9Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+    return ref;
+}
+
+static ULONG WINAPI IDirect3DBaseTexture9Impl_Release(LPDIRECT3DBASETEXTURE9 iface) {
+    IDirect3DBaseTexture9Impl *This = (IDirect3DBaseTexture9Impl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+        IWineD3DBaseTexture_Release(This->wineD3DBaseTexture);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+    return ref;
+}
+
+/* IDirect3DBaseTexture9 IDirect3DResource9 Interface follow: */
+static HRESULT WINAPI IDirect3DBaseTexture9Impl_GetDevice(LPDIRECT3DBASETEXTURE9 iface, IDirect3DDevice9** ppDevice) {
+    IDirect3DBaseTexture9Impl *This = (IDirect3DBaseTexture9Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+    return IDirect3DResource9Impl_GetDevice((LPDIRECT3DRESOURCE9) This, ppDevice);
+}
+
+static HRESULT WINAPI IDirect3DBaseTexture9Impl_SetPrivateData(LPDIRECT3DBASETEXTURE9 iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) {
+    IDirect3DBaseTexture9Impl *This = (IDirect3DBaseTexture9Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+    return IWineD3DBaseTexture_SetPrivateData(This->wineD3DBaseTexture, refguid, pData, SizeOfData, Flags);
+}
+
+static HRESULT WINAPI IDirect3DBaseTexture9Impl_GetPrivateData(LPDIRECT3DBASETEXTURE9 iface, REFGUID refguid, void* pData, DWORD* pSizeOfData) {
+    IDirect3DBaseTexture9Impl *This = (IDirect3DBaseTexture9Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+    return IWineD3DBaseTexture_GetPrivateData(This->wineD3DBaseTexture, refguid, pData, pSizeOfData);
+}
+
+static HRESULT WINAPI IDirect3DBaseTexture9Impl_FreePrivateData(LPDIRECT3DBASETEXTURE9 iface, REFGUID refguid) {
+    IDirect3DBaseTexture9Impl *This = (IDirect3DBaseTexture9Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+    return IWineD3DBaseTexture_FreePrivateData(This->wineD3DBaseTexture, refguid);
+}
+
+static DWORD WINAPI IDirect3DBaseTexture9Impl_SetPriority(LPDIRECT3DBASETEXTURE9 iface, DWORD PriorityNew) {
+    IDirect3DBaseTexture9Impl *This = (IDirect3DBaseTexture9Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+    return IWineD3DBaseTexture_SetPriority(This->wineD3DBaseTexture, PriorityNew);
+}
+
+static DWORD WINAPI IDirect3DBaseTexture9Impl_GetPriority(LPDIRECT3DBASETEXTURE9 iface) {
+    IDirect3DBaseTexture9Impl *This = (IDirect3DBaseTexture9Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+    return IWineD3DBaseTexture_GetPriority(This->wineD3DBaseTexture);
+}
+
+static void WINAPI IDirect3DBaseTexture9Impl_PreLoad(LPDIRECT3DBASETEXTURE9 iface) {
+    IDirect3DBaseTexture9Impl *This = (IDirect3DBaseTexture9Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+    IWineD3DBaseTexture_PreLoad(This->wineD3DBaseTexture);
+    return ;
+}
+
+static D3DRESOURCETYPE WINAPI IDirect3DBaseTexture9Impl_GetType(LPDIRECT3DBASETEXTURE9 iface) {
+    IDirect3DBaseTexture9Impl *This = (IDirect3DBaseTexture9Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+    return IWineD3DBaseTexture_GetType(This->wineD3DBaseTexture);
+}
+
+/* IDirect3DBaseTexture9 Interface follow: */
+static DWORD  WINAPI IDirect3DBaseTexture9Impl_SetLOD(LPDIRECT3DBASETEXTURE9 iface, DWORD LODNew) {
+    IDirect3DBaseTexture9Impl *This = (IDirect3DBaseTexture9Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+    return IWineD3DBaseTexture_SetLOD(This->wineD3DBaseTexture, LODNew);
+}
+
+DWORD WINAPI IDirect3DBaseTexture9Impl_GetLOD(LPDIRECT3DBASETEXTURE9 iface) {
+    IDirect3DBaseTexture9Impl *This = (IDirect3DBaseTexture9Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+    return IWineD3DBaseTexture_GetLOD(This->wineD3DBaseTexture);
+}
+
+static DWORD WINAPI IDirect3DBaseTexture9Impl_GetLevelCount(LPDIRECT3DBASETEXTURE9 iface) {
+    IDirect3DBaseTexture9Impl *This = (IDirect3DBaseTexture9Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+    return IWineD3DBaseTexture_GetLevelCount(This->wineD3DBaseTexture);
+}
+
+static HRESULT WINAPI IDirect3DBaseTexture9Impl_SetAutoGenFilterType(LPDIRECT3DBASETEXTURE9 iface, D3DTEXTUREFILTERTYPE FilterType) {
+    IDirect3DBaseTexture9Impl *This = (IDirect3DBaseTexture9Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+    return IWineD3DBaseTexture_SetAutoGenFilterType(This->wineD3DBaseTexture, (WINED3DTEXTUREFILTERTYPE) FilterType);
+}
+
+static D3DTEXTUREFILTERTYPE WINAPI IDirect3DBaseTexture9Impl_GetAutoGenFilterType(LPDIRECT3DBASETEXTURE9 iface) {
+    IDirect3DBaseTexture9Impl *This = (IDirect3DBaseTexture9Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+    return (D3DTEXTUREFILTERTYPE) IWineD3DBaseTexture_GetAutoGenFilterType(This->wineD3DBaseTexture);
+}
+
+static void WINAPI IDirect3DBaseTexture9Impl_GenerateMipSubLevels(LPDIRECT3DBASETEXTURE9 iface) {
+    IDirect3DBaseTexture9Impl *This = (IDirect3DBaseTexture9Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+    IWineD3DBaseTexture_GenerateMipSubLevels(This->wineD3DBaseTexture);
+}
+
+const IDirect3DBaseTexture9Vtbl Direct3DBaseTexture9_Vtbl =
+{
+    IDirect3DBaseTexture9Impl_QueryInterface,
+    IDirect3DBaseTexture9Impl_AddRef,
+    IDirect3DBaseTexture9Impl_Release,
+    IDirect3DBaseTexture9Impl_GetDevice,
+    IDirect3DBaseTexture9Impl_SetPrivateData,
+    IDirect3DBaseTexture9Impl_GetPrivateData,
+    IDirect3DBaseTexture9Impl_FreePrivateData,
+    IDirect3DBaseTexture9Impl_SetPriority,
+    IDirect3DBaseTexture9Impl_GetPriority,
+    IDirect3DBaseTexture9Impl_PreLoad,
+    IDirect3DBaseTexture9Impl_GetType,
+    IDirect3DBaseTexture9Impl_SetLOD,
+    IDirect3DBaseTexture9Impl_GetLOD,
+    IDirect3DBaseTexture9Impl_GetLevelCount,
+    IDirect3DBaseTexture9Impl_SetAutoGenFilterType,
+    IDirect3DBaseTexture9Impl_GetAutoGenFilterType,
+    IDirect3DBaseTexture9Impl_GenerateMipSubLevels   
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/cubetexture.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/cubetexture.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/cubetexture.c	(revision 16410)
@@ -0,0 +1,376 @@
+/*
+ * IDirect3DCubeTexture9 implementation
+ *
+ * Copyright 2002-2005 Jason Edmeades
+ * Copyright 2002-2005 Raphael Junqueira
+ * Copyright 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d9_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d9);
+
+
+/* IDirect3DCubeTexture9 IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DCubeTexture9Impl_QueryInterface(LPDIRECT3DCUBETEXTURE9 iface, REFIID riid, LPVOID* ppobj) {
+    IDirect3DCubeTexture9Impl *This = (IDirect3DCubeTexture9Impl *)iface;
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DResource9)
+        || IsEqualGUID(riid, &IID_IDirect3DBaseTexture9)
+        || IsEqualGUID(riid, &IID_IDirect3DCubeTexture9)) {
+        IDirect3DCubeTexture9_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DCubeTexture9Impl_AddRef(LPDIRECT3DCUBETEXTURE9 iface) {
+    IDirect3DCubeTexture9Impl *This = (IDirect3DCubeTexture9Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+    return ref;
+}
+
+static ULONG WINAPI IDirect3DCubeTexture9Impl_Release(LPDIRECT3DCUBETEXTURE9 iface) {
+    IDirect3DCubeTexture9Impl *This = (IDirect3DCubeTexture9Impl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+        TRACE("Releasing child %p\n", This->wineD3DCubeTexture);
+
+        EnterCriticalSection(&d3d9_cs);
+        IWineD3DCubeTexture_Destroy(This->wineD3DCubeTexture, D3D9CB_DestroySurface);
+        IDirect3DDevice9Ex_Release(This->parentDevice);
+        LeaveCriticalSection(&d3d9_cs);
+
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+    return ref;
+}
+
+/* IDirect3DCubeTexture9 IDirect3DResource9 Interface follow: */
+static HRESULT WINAPI IDirect3DCubeTexture9Impl_GetDevice(LPDIRECT3DCUBETEXTURE9 iface, IDirect3DDevice9** ppDevice) {
+    IDirect3DCubeTexture9Impl *This = (IDirect3DCubeTexture9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IDirect3DResource9Impl_GetDevice((LPDIRECT3DRESOURCE9) This, ppDevice);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DCubeTexture9Impl_SetPrivateData(LPDIRECT3DCUBETEXTURE9 iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) {
+    IDirect3DCubeTexture9Impl *This = (IDirect3DCubeTexture9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DCubeTexture_SetPrivateData(This->wineD3DCubeTexture,refguid,pData,SizeOfData,Flags);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DCubeTexture9Impl_GetPrivateData(LPDIRECT3DCUBETEXTURE9 iface, REFGUID refguid, void* pData, DWORD* pSizeOfData) {
+    IDirect3DCubeTexture9Impl *This = (IDirect3DCubeTexture9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DCubeTexture_GetPrivateData(This->wineD3DCubeTexture,refguid,pData,pSizeOfData);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DCubeTexture9Impl_FreePrivateData(LPDIRECT3DCUBETEXTURE9 iface, REFGUID refguid) {
+    IDirect3DCubeTexture9Impl *This = (IDirect3DCubeTexture9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DCubeTexture_FreePrivateData(This->wineD3DCubeTexture,refguid);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static DWORD WINAPI IDirect3DCubeTexture9Impl_SetPriority(LPDIRECT3DCUBETEXTURE9 iface, DWORD PriorityNew) {
+    IDirect3DCubeTexture9Impl *This = (IDirect3DCubeTexture9Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    ret = IWineD3DCubeTexture_SetPriority(This->wineD3DCubeTexture, PriorityNew);
+    LeaveCriticalSection(&d3d9_cs);
+    return ret;
+}
+
+static DWORD WINAPI IDirect3DCubeTexture9Impl_GetPriority(LPDIRECT3DCUBETEXTURE9 iface) {
+    IDirect3DCubeTexture9Impl *This = (IDirect3DCubeTexture9Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    ret = IWineD3DCubeTexture_GetPriority(This->wineD3DCubeTexture);
+    LeaveCriticalSection(&d3d9_cs);
+    return ret;
+}
+
+static void WINAPI IDirect3DCubeTexture9Impl_PreLoad(LPDIRECT3DCUBETEXTURE9 iface) {
+    IDirect3DCubeTexture9Impl *This = (IDirect3DCubeTexture9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    IWineD3DCubeTexture_PreLoad(This->wineD3DCubeTexture);
+    LeaveCriticalSection(&d3d9_cs);
+}
+
+static D3DRESOURCETYPE WINAPI IDirect3DCubeTexture9Impl_GetType(LPDIRECT3DCUBETEXTURE9 iface) {
+    IDirect3DCubeTexture9Impl *This = (IDirect3DCubeTexture9Impl *)iface;
+    D3DRESOURCETYPE ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    ret = IWineD3DCubeTexture_GetType(This->wineD3DCubeTexture);
+    LeaveCriticalSection(&d3d9_cs);
+    return ret;
+}
+
+/* IDirect3DCubeTexture9 IDirect3DBaseTexture9 Interface follow: */
+static DWORD WINAPI IDirect3DCubeTexture9Impl_SetLOD(LPDIRECT3DCUBETEXTURE9 iface, DWORD LODNew) {
+    IDirect3DCubeTexture9Impl *This = (IDirect3DCubeTexture9Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    ret = IWineD3DCubeTexture_SetLOD(This->wineD3DCubeTexture, LODNew);
+    LeaveCriticalSection(&d3d9_cs);
+    return ret;
+}
+
+static DWORD WINAPI IDirect3DCubeTexture9Impl_GetLOD(LPDIRECT3DCUBETEXTURE9 iface) {
+    IDirect3DCubeTexture9Impl *This = (IDirect3DCubeTexture9Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    ret = IDirect3DBaseTexture9Impl_GetLOD((LPDIRECT3DBASETEXTURE9) This);
+    LeaveCriticalSection(&d3d9_cs);
+    return ret;
+}
+
+static DWORD WINAPI IDirect3DCubeTexture9Impl_GetLevelCount(LPDIRECT3DCUBETEXTURE9 iface) {
+    IDirect3DCubeTexture9Impl *This = (IDirect3DCubeTexture9Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    ret = IWineD3DCubeTexture_GetLevelCount(This->wineD3DCubeTexture);
+    LeaveCriticalSection(&d3d9_cs);
+    return ret;
+}
+
+static HRESULT WINAPI IDirect3DCubeTexture9Impl_SetAutoGenFilterType(LPDIRECT3DCUBETEXTURE9 iface, D3DTEXTUREFILTERTYPE FilterType) {
+    IDirect3DCubeTexture9Impl *This = (IDirect3DCubeTexture9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DCubeTexture_SetAutoGenFilterType(This->wineD3DCubeTexture, (WINED3DTEXTUREFILTERTYPE) FilterType);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static D3DTEXTUREFILTERTYPE WINAPI IDirect3DCubeTexture9Impl_GetAutoGenFilterType(LPDIRECT3DCUBETEXTURE9 iface) {
+    IDirect3DCubeTexture9Impl *This = (IDirect3DCubeTexture9Impl *)iface;
+    D3DTEXTUREFILTERTYPE ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    ret = (D3DTEXTUREFILTERTYPE) IWineD3DCubeTexture_GetAutoGenFilterType(This->wineD3DCubeTexture);
+    LeaveCriticalSection(&d3d9_cs);
+    return ret;
+}
+
+static void WINAPI IDirect3DCubeTexture9Impl_GenerateMipSubLevels(LPDIRECT3DCUBETEXTURE9 iface) {
+    IDirect3DCubeTexture9Impl *This = (IDirect3DCubeTexture9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    IWineD3DCubeTexture_GenerateMipSubLevels(This->wineD3DCubeTexture);
+    LeaveCriticalSection(&d3d9_cs);
+}
+
+/* IDirect3DCubeTexture9 Interface follow: */
+static HRESULT WINAPI IDirect3DCubeTexture9Impl_GetLevelDesc(LPDIRECT3DCUBETEXTURE9 iface, UINT Level, D3DSURFACE_DESC* pDesc) {
+    IDirect3DCubeTexture9Impl *This = (IDirect3DCubeTexture9Impl *)iface;
+    WINED3DSURFACE_DESC    wined3ddesc;
+    UINT                   tmpInt = -1;
+    HRESULT hr;
+
+    TRACE("(%p) Relay\n", This);
+
+    /* As d3d8 and d3d9 structures differ, pass in ptrs to where data needs to go */
+    wined3ddesc.Format              = (WINED3DFORMAT *)&pDesc->Format;
+    wined3ddesc.Type                = (WINED3DRESOURCETYPE *) &pDesc->Type;
+    wined3ddesc.Usage               = &pDesc->Usage;
+    wined3ddesc.Pool                = (WINED3DPOOL *) &pDesc->Pool;
+    wined3ddesc.Size                = &tmpInt;
+    wined3ddesc.MultiSampleType     = (WINED3DMULTISAMPLE_TYPE *) &pDesc->MultiSampleType;
+    wined3ddesc.MultiSampleQuality  = &pDesc->MultiSampleQuality;
+    wined3ddesc.Width               = &pDesc->Width;
+    wined3ddesc.Height              = &pDesc->Height;
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DCubeTexture_GetLevelDesc(This->wineD3DCubeTexture, Level, &wined3ddesc);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DCubeTexture9Impl_GetCubeMapSurface(LPDIRECT3DCUBETEXTURE9 iface, D3DCUBEMAP_FACES FaceType, UINT Level, IDirect3DSurface9** ppCubeMapSurface) {
+    IDirect3DCubeTexture9Impl *This = (IDirect3DCubeTexture9Impl *)iface;
+    HRESULT hrc = D3D_OK;
+    IWineD3DSurface *mySurface = NULL;
+
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hrc = IWineD3DCubeTexture_GetCubeMapSurface(This->wineD3DCubeTexture, (WINED3DCUBEMAP_FACES) FaceType, Level, &mySurface);
+    if (hrc == D3D_OK && NULL != ppCubeMapSurface) {
+       IWineD3DCubeTexture_GetParent(mySurface, (IUnknown **)ppCubeMapSurface);
+       IWineD3DCubeTexture_Release(mySurface);
+    }
+    LeaveCriticalSection(&d3d9_cs);
+    return hrc;
+}
+
+static HRESULT WINAPI IDirect3DCubeTexture9Impl_LockRect(LPDIRECT3DCUBETEXTURE9 iface, D3DCUBEMAP_FACES FaceType, UINT Level, D3DLOCKED_RECT* pLockedRect, CONST RECT* pRect, DWORD Flags) {
+    IDirect3DCubeTexture9Impl *This = (IDirect3DCubeTexture9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DCubeTexture_LockRect(This->wineD3DCubeTexture, (WINED3DCUBEMAP_FACES) FaceType, Level, (WINED3DLOCKED_RECT *) pLockedRect, pRect, Flags);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DCubeTexture9Impl_UnlockRect(LPDIRECT3DCUBETEXTURE9 iface, D3DCUBEMAP_FACES FaceType, UINT Level) {
+    IDirect3DCubeTexture9Impl *This = (IDirect3DCubeTexture9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DCubeTexture_UnlockRect(This->wineD3DCubeTexture, (WINED3DCUBEMAP_FACES) FaceType, Level);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI IDirect3DCubeTexture9Impl_AddDirtyRect(LPDIRECT3DCUBETEXTURE9 iface, D3DCUBEMAP_FACES FaceType, CONST RECT* pDirtyRect) {
+    IDirect3DCubeTexture9Impl *This = (IDirect3DCubeTexture9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DCubeTexture_AddDirtyRect(This->wineD3DCubeTexture, (WINED3DCUBEMAP_FACES) FaceType, pDirtyRect);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+
+static const IDirect3DCubeTexture9Vtbl Direct3DCubeTexture9_Vtbl =
+{
+    /* IUnknown */
+    IDirect3DCubeTexture9Impl_QueryInterface,
+    IDirect3DCubeTexture9Impl_AddRef,
+    IDirect3DCubeTexture9Impl_Release,
+    /* IDirect3DResource9 */
+    IDirect3DCubeTexture9Impl_GetDevice,
+    IDirect3DCubeTexture9Impl_SetPrivateData,
+    IDirect3DCubeTexture9Impl_GetPrivateData,
+    IDirect3DCubeTexture9Impl_FreePrivateData,
+    IDirect3DCubeTexture9Impl_SetPriority,
+    IDirect3DCubeTexture9Impl_GetPriority,
+    IDirect3DCubeTexture9Impl_PreLoad,
+    IDirect3DCubeTexture9Impl_GetType,
+    /* IDirect3DBaseTexture9 */
+    IDirect3DCubeTexture9Impl_SetLOD,
+    IDirect3DCubeTexture9Impl_GetLOD,
+    IDirect3DCubeTexture9Impl_GetLevelCount,
+    IDirect3DCubeTexture9Impl_SetAutoGenFilterType,
+    IDirect3DCubeTexture9Impl_GetAutoGenFilterType,
+    IDirect3DCubeTexture9Impl_GenerateMipSubLevels,
+    IDirect3DCubeTexture9Impl_GetLevelDesc,
+    IDirect3DCubeTexture9Impl_GetCubeMapSurface,
+    IDirect3DCubeTexture9Impl_LockRect,
+    IDirect3DCubeTexture9Impl_UnlockRect,
+    IDirect3DCubeTexture9Impl_AddDirtyRect
+};
+
+
+
+
+/* IDirect3DDevice9 IDirect3DCubeTexture9 Methods follow: */
+HRESULT  WINAPI  IDirect3DDevice9Impl_CreateCubeTexture(LPDIRECT3DDEVICE9EX iface,
+                                                        UINT EdgeLength, UINT Levels, DWORD Usage,
+                                                        D3DFORMAT Format, D3DPOOL Pool,
+                                                        IDirect3DCubeTexture9** ppCubeTexture, HANDLE* pSharedHandle) {
+
+    IDirect3DCubeTexture9Impl *object;
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr = D3D_OK;
+
+    TRACE("(%p) : ELen(%d) Lvl(%d) Usage(%d) fmt(%u), Pool(%d)  Shared(%p)\n", This, EdgeLength, Levels, Usage, Format, Pool, pSharedHandle);
+
+    /* Allocate the storage for the device */
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object));
+
+    if (NULL == object) {
+        FIXME("(%p) allocation of CubeTexture failed\n", This);
+        return D3DERR_OUTOFVIDEOMEMORY;
+    }
+    object->lpVtbl = &Direct3DCubeTexture9_Vtbl;
+    object->ref = 1;
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_CreateCubeTexture(This->WineD3DDevice, EdgeLength, Levels, Usage,
+                                 (WINED3DFORMAT)Format, (WINED3DPOOL) Pool, &object->wineD3DCubeTexture, pSharedHandle, (IUnknown*)object,
+                                 D3D9CB_CreateSurface);
+    LeaveCriticalSection(&d3d9_cs);
+
+    if (hr != D3D_OK){
+
+        /* free up object */
+        FIXME("(%p) call to IWineD3DDevice_CreateCubeTexture failed\n", This);
+        HeapFree(GetProcessHeap(), 0, object);
+    } else {
+        IDirect3DDevice9Ex_AddRef(iface);
+        object->parentDevice = iface;
+        *ppCubeTexture = (LPDIRECT3DCUBETEXTURE9) object;
+        TRACE("(%p) : Created cube texture %p\n", This, object);
+    }
+
+    TRACE("(%p) returning %p\n",This, *ppCubeTexture);
+    return hr;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/d3d9.def
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/d3d9.def	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/d3d9.def	(revision 16410)
@@ -0,0 +1,16 @@
+; File generated automatically from ../../../dlls/d3d9/d3d9.spec; do not edit!
+
+LIBRARY d3d9.dll
+
+EXPORTS
+  Direct3DShaderValidatorCreate9@0 @1
+  D3DPERF_BeginEvent@8 @4
+  D3DPERF_EndEvent@0 @5
+  D3DPERF_GetStatus@0 @6
+  D3DPERF_QueryRepeatFrame@0 @7
+  D3DPERF_SetMarker@8 @8
+  D3DPERF_SetOptions@4 @9
+  D3DPERF_SetRegion@8 @10
+  DebugSetMute@0 @12
+  Direct3DCreate9@4 @13
+  Direct3DCreate9Ex@8 @14
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/d3d9.spec
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/d3d9.spec	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/d3d9.spec	(revision 16410)
@@ -0,0 +1,14 @@
+@ stdcall Direct3DShaderValidatorCreate9()
+@ stub PSGPError
+@ stub PSGPSampleTexture
+@ stdcall D3DPERF_BeginEvent(long wstr)
+@ stdcall D3DPERF_EndEvent()
+@ stdcall D3DPERF_GetStatus()
+@ stdcall D3DPERF_QueryRepeatFrame()
+@ stdcall D3DPERF_SetMarker(long wstr)
+@ stdcall D3DPERF_SetOptions(long)
+@ stdcall D3DPERF_SetRegion(long wstr)
+@ stub DebugSetLevel
+@ stdcall DebugSetMute()
+@ stdcall Direct3DCreate9(long)
+@ stdcall Direct3DCreate9Ex(long ptr)
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/d3d9_main.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/d3d9_main.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/d3d9_main.c	(revision 16410)
@@ -0,0 +1,163 @@
+/*
+ * Direct3D 9
+ *
+ * Copyright 2002-2003 Jason Edmeades
+ * Copyright 2002-2003 Raphael Junqueira
+ * Copyright 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#include "config.h"
+#include "initguid.h"
+#include "d3d9_private.h"
+
+static CRITICAL_SECTION_DEBUG d3d9_cs_debug =
+{
+    0, 0, &d3d9_cs,
+    { &d3d9_cs_debug.ProcessLocksList,
+    &d3d9_cs_debug.ProcessLocksList },
+    0, 0, { (DWORD_PTR)(__FILE__ ": d3d9_cs") }
+};
+CRITICAL_SECTION d3d9_cs = { &d3d9_cs_debug, -1, 0, 0, 0, 0 };
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d9);
+
+static int D3DPERF_event_level = 0;
+
+void WINAPI DebugSetMute(void) {
+    /* nothing to do */
+}
+
+IDirect3D9* WINAPI Direct3DCreate9(UINT SDKVersion) {
+    IDirect3D9Impl* object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3D9Impl));
+
+    object->lpVtbl = &Direct3D9_Vtbl;
+    object->ref = 1;
+    EnterCriticalSection(&d3d9_cs);
+    object->WineD3D = WineDirect3DCreate(9, (IUnknown *)object);
+    LeaveCriticalSection(&d3d9_cs);
+
+    TRACE("SDKVersion = %x, Created Direct3D object @ %p, WineObj @ %p\n", SDKVersion, object, object->WineD3D);
+
+    if (!object->WineD3D)
+    {
+        HeapFree( GetProcessHeap(), 0, object );
+        object = NULL;
+    }
+    return (IDirect3D9*) object;
+}
+
+HRESULT WINAPI Direct3DCreate9Ex(UINT SDKVersion, IDirect3D9Ex **direct3d9ex) {
+    IDirect3D9 *ret;
+    IDirect3D9Impl* object;
+
+    TRACE("Calling Direct3DCreate9\n");
+    ret = Direct3DCreate9(SDKVersion);
+    if(!ret) {
+        *direct3d9ex = NULL;
+        return D3DERR_NOTAVAILABLE;
+    }
+
+    object = (IDirect3D9Impl *) ret;
+    object->extended = TRUE; /* Enables QI for extended interfaces */
+    *direct3d9ex = (IDirect3D9Ex *) object;
+    return D3D_OK;
+}
+
+/*******************************************************************
+ *       Direct3DShaderValidatorCreate9 (D3D9.@)
+ *
+ * No documentation available for this function.
+ * SDK only says it is internal and shouldn't be used.
+ */
+void* WINAPI Direct3DShaderValidatorCreate9(void)
+{
+    FIXME("stub\n");
+    return NULL;
+}
+
+/*******************************************************************
+ *       DllMain
+ */
+BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv)
+{
+    /* At process attach */
+    TRACE("fdwReason=%d\n", fdwReason);
+    if (fdwReason == DLL_PROCESS_ATTACH)
+        DisableThreadLibraryCalls(hInstDLL);
+
+    return TRUE;
+}
+
+/***********************************************************************
+ *              D3DPERF_BeginEvent (D3D9.@)
+ */
+int WINAPI D3DPERF_BeginEvent(D3DCOLOR color, LPCWSTR name) {
+    FIXME("(color %#x, name %s) : stub\n", color, debugstr_w(name));
+
+    return D3DPERF_event_level++;
+}
+
+/***********************************************************************
+ *              D3DPERF_EndEvent (D3D9.@)
+ */
+int WINAPI D3DPERF_EndEvent(void) {
+    FIXME("(void) : stub\n");
+
+    return --D3DPERF_event_level;
+}
+
+/***********************************************************************
+ *              D3DPERF_GetStatus (D3D9.@)
+ */
+DWORD WINAPI D3DPERF_GetStatus(void) {
+    FIXME("(void) : stub\n");
+
+    return 0;
+}
+
+/***********************************************************************
+ *              D3DPERF_SetOptions (D3D9.@)
+ *
+ */
+void WINAPI D3DPERF_SetOptions(DWORD options)
+{
+  FIXME("(%#x) : stub\n", options);
+}
+
+/***********************************************************************
+ *              D3DPERF_QueryRepeatFrame (D3D9.@)
+ */
+BOOL WINAPI D3DPERF_QueryRepeatFrame(void) {
+    FIXME("(void) : stub\n");
+
+    return FALSE;
+}
+
+/***********************************************************************
+ *              D3DPERF_SetMarker (D3D9.@)
+ */
+void WINAPI D3DPERF_SetMarker(D3DCOLOR color, LPCWSTR name) {
+    FIXME("(color %#x, name %s) : stub\n", color, debugstr_w(name));
+}
+
+/***********************************************************************
+ *              D3DPERF_SetRegion (D3D9.@)
+ */
+void WINAPI D3DPERF_SetRegion(D3DCOLOR color, LPCWSTR name) {
+    FIXME("(color %#x, name %s) : stub\n", color, debugstr_w(name));
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/d3d9_private.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/d3d9_private.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/d3d9_private.h	(revision 16410)
@@ -0,0 +1,584 @@
+/*
+ * Direct3D 9 private include file
+ *
+ * Copyright 2002-2003 Jason Edmeades
+ * Copyright 2002-2003 Raphael Junqueira
+ * Copyright 2005 Oliver Stieber 
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_D3D9_PRIVATE_H
+#define __WINE_D3D9_PRIVATE_H
+
+#include <stdarg.h>
+
+#define NONAMELESSUNION
+#define NONAMELESSSTRUCT
+#define COBJMACROS
+#include "windef.h"
+#include "winbase.h"
+#include "wingdi.h"
+#include "winuser.h"
+#include "wine/debug.h"
+#include "wine/unicode.h"
+
+#include "d3d9.h"
+#include "wine/wined3d.h"
+
+/* ===========================================================================
+   Internal use
+   =========================================================================== */
+extern HRESULT vdecl_convert_fvf(
+    DWORD FVF,
+    D3DVERTEXELEMENT9** ppVertexElements);
+extern CRITICAL_SECTION d3d9_cs;
+
+/* ===========================================================================
+    Macros
+   =========================================================================== */
+/* Not nice, but it lets wined3d support different versions of directx */
+#define WINECAPSTOD3D9CAPS(_pD3D9Caps, _pWineCaps) \
+    _pD3D9Caps->DeviceType                        = (D3DDEVTYPE) _pWineCaps->DeviceType; \
+    _pD3D9Caps->AdapterOrdinal                    = _pWineCaps->AdapterOrdinal; \
+    _pD3D9Caps->Caps                              = _pWineCaps->Caps; \
+    _pD3D9Caps->Caps2                             = _pWineCaps->Caps2; \
+    _pD3D9Caps->Caps3                             = _pWineCaps->Caps3; \
+    _pD3D9Caps->PresentationIntervals             = _pWineCaps->PresentationIntervals; \
+    _pD3D9Caps->CursorCaps                        = _pWineCaps->CursorCaps; \
+    _pD3D9Caps->DevCaps                           = _pWineCaps->DevCaps; \
+    _pD3D9Caps->PrimitiveMiscCaps                 = _pWineCaps->PrimitiveMiscCaps; \
+    _pD3D9Caps->RasterCaps                        = _pWineCaps->RasterCaps; \
+    _pD3D9Caps->ZCmpCaps                          = _pWineCaps->ZCmpCaps; \
+    _pD3D9Caps->SrcBlendCaps                      = _pWineCaps->SrcBlendCaps; \
+    _pD3D9Caps->DestBlendCaps                     = _pWineCaps->DestBlendCaps; \
+    _pD3D9Caps->AlphaCmpCaps                      = _pWineCaps->AlphaCmpCaps; \
+    _pD3D9Caps->ShadeCaps                         = _pWineCaps->ShadeCaps; \
+    _pD3D9Caps->TextureCaps                       = _pWineCaps->TextureCaps; \
+    _pD3D9Caps->TextureFilterCaps                 = _pWineCaps->TextureFilterCaps; \
+    _pD3D9Caps->CubeTextureFilterCaps             = _pWineCaps->CubeTextureFilterCaps; \
+    _pD3D9Caps->VolumeTextureFilterCaps           = _pWineCaps->VolumeTextureFilterCaps; \
+    _pD3D9Caps->TextureAddressCaps                = _pWineCaps->TextureAddressCaps; \
+    _pD3D9Caps->VolumeTextureAddressCaps          = _pWineCaps->VolumeTextureAddressCaps; \
+    _pD3D9Caps->LineCaps                          = _pWineCaps->LineCaps; \
+    _pD3D9Caps->MaxTextureWidth                   = _pWineCaps->MaxTextureWidth; \
+    _pD3D9Caps->MaxTextureHeight                  = _pWineCaps->MaxTextureHeight; \
+    _pD3D9Caps->MaxVolumeExtent                   = _pWineCaps->MaxVolumeExtent; \
+    _pD3D9Caps->MaxTextureRepeat                  = _pWineCaps->MaxTextureRepeat; \
+    _pD3D9Caps->MaxTextureAspectRatio             = _pWineCaps->MaxTextureAspectRatio; \
+    _pD3D9Caps->MaxAnisotropy                     = _pWineCaps->MaxAnisotropy; \
+    _pD3D9Caps->MaxVertexW                        = _pWineCaps->MaxVertexW; \
+    _pD3D9Caps->GuardBandLeft                     = _pWineCaps->GuardBandLeft; \
+    _pD3D9Caps->GuardBandTop                      = _pWineCaps->GuardBandTop; \
+    _pD3D9Caps->GuardBandRight                    = _pWineCaps->GuardBandRight; \
+    _pD3D9Caps->GuardBandBottom                   = _pWineCaps->GuardBandBottom; \
+    _pD3D9Caps->ExtentsAdjust                     = _pWineCaps->ExtentsAdjust; \
+    _pD3D9Caps->StencilCaps                       = _pWineCaps->StencilCaps; \
+    _pD3D9Caps->FVFCaps                           = _pWineCaps->FVFCaps; \
+    _pD3D9Caps->TextureOpCaps                     = _pWineCaps->TextureOpCaps; \
+    _pD3D9Caps->MaxTextureBlendStages             = _pWineCaps->MaxTextureBlendStages; \
+    _pD3D9Caps->MaxSimultaneousTextures           = _pWineCaps->MaxSimultaneousTextures; \
+    _pD3D9Caps->VertexProcessingCaps              = _pWineCaps->VertexProcessingCaps; \
+    _pD3D9Caps->MaxActiveLights                   = _pWineCaps->MaxActiveLights; \
+    _pD3D9Caps->MaxUserClipPlanes                 = _pWineCaps->MaxUserClipPlanes; \
+    _pD3D9Caps->MaxVertexBlendMatrices            = _pWineCaps->MaxVertexBlendMatrices; \
+    _pD3D9Caps->MaxVertexBlendMatrixIndex         = _pWineCaps->MaxVertexBlendMatrixIndex; \
+    _pD3D9Caps->MaxPointSize                      = _pWineCaps->MaxPointSize; \
+    _pD3D9Caps->MaxPrimitiveCount                 = _pWineCaps->MaxPrimitiveCount; \
+    _pD3D9Caps->MaxVertexIndex                    = _pWineCaps->MaxVertexIndex; \
+    _pD3D9Caps->MaxStreams                        = _pWineCaps->MaxStreams; \
+    _pD3D9Caps->MaxStreamStride                   = _pWineCaps->MaxStreamStride; \
+    _pD3D9Caps->VertexShaderVersion               = _pWineCaps->VertexShaderVersion; \
+    _pD3D9Caps->MaxVertexShaderConst              = _pWineCaps->MaxVertexShaderConst; \
+    _pD3D9Caps->PixelShaderVersion                = _pWineCaps->PixelShaderVersion; \
+    _pD3D9Caps->PixelShader1xMaxValue             = _pWineCaps->PixelShader1xMaxValue; \
+    _pD3D9Caps->DevCaps2                          = _pWineCaps->DevCaps2; \
+    _pD3D9Caps->MaxNpatchTessellationLevel        = _pWineCaps->MaxNpatchTessellationLevel; \
+    _pD3D9Caps->MasterAdapterOrdinal              = _pWineCaps->MasterAdapterOrdinal; \
+    _pD3D9Caps->AdapterOrdinalInGroup             = _pWineCaps->AdapterOrdinalInGroup; \
+    _pD3D9Caps->NumberOfAdaptersInGroup           = _pWineCaps->NumberOfAdaptersInGroup; \
+    _pD3D9Caps->DeclTypes                         = _pWineCaps->DeclTypes; \
+    _pD3D9Caps->NumSimultaneousRTs                = _pWineCaps->NumSimultaneousRTs; \
+    _pD3D9Caps->StretchRectFilterCaps             = _pWineCaps->StretchRectFilterCaps; \
+    _pD3D9Caps->VS20Caps.Caps                     = _pWineCaps->VS20Caps.Caps; \
+    _pD3D9Caps->VS20Caps.DynamicFlowControlDepth  = _pWineCaps->VS20Caps.DynamicFlowControlDepth; \
+    _pD3D9Caps->VS20Caps.NumTemps                 = _pWineCaps->VS20Caps.NumTemps; \
+    _pD3D9Caps->VS20Caps.NumTemps                 = _pWineCaps->VS20Caps.NumTemps; \
+    _pD3D9Caps->VS20Caps.StaticFlowControlDepth   = _pWineCaps->VS20Caps.StaticFlowControlDepth; \
+    _pD3D9Caps->PS20Caps.Caps                     = _pWineCaps->PS20Caps.Caps; \
+    _pD3D9Caps->PS20Caps.DynamicFlowControlDepth  = _pWineCaps->PS20Caps.DynamicFlowControlDepth; \
+    _pD3D9Caps->PS20Caps.NumTemps                 = _pWineCaps->PS20Caps.NumTemps; \
+    _pD3D9Caps->PS20Caps.StaticFlowControlDepth   = _pWineCaps->PS20Caps.StaticFlowControlDepth; \
+    _pD3D9Caps->PS20Caps.NumInstructionSlots      = _pWineCaps->PS20Caps.NumInstructionSlots; \
+    _pD3D9Caps->VertexTextureFilterCaps           = _pWineCaps->VertexTextureFilterCaps; \
+    _pD3D9Caps->MaxVShaderInstructionsExecuted    = _pWineCaps->MaxVShaderInstructionsExecuted; \
+    _pD3D9Caps->MaxPShaderInstructionsExecuted    = _pWineCaps->MaxPShaderInstructionsExecuted; \
+    _pD3D9Caps->MaxVertexShader30InstructionSlots = _pWineCaps->MaxVertexShader30InstructionSlots; \
+    _pD3D9Caps->MaxPixelShader30InstructionSlots  = _pWineCaps->MaxPixelShader30InstructionSlots;
+
+/* ===========================================================================
+    D3D9 interfaces
+   =========================================================================== */
+
+/* ---------- */
+/* IDirect3D9 */
+/* ---------- */
+
+/*****************************************************************************
+ * Predeclare the interface implementation structures
+ */
+extern const IDirect3D9ExVtbl Direct3D9_Vtbl;
+
+/*****************************************************************************
+ * IDirect3D implementation structure
+ */
+typedef struct IDirect3D9Impl
+{
+    /* IUnknown fields */
+    const IDirect3D9ExVtbl   *lpVtbl;
+    LONG                    ref;
+
+    /* The WineD3D device */
+    IWineD3D               *WineD3D;
+
+    /* Created via Direct3DCreate9Ex? Can QI extended interfaces */
+    BOOL                    extended;
+} IDirect3D9Impl;
+
+void filter_caps(D3DCAPS9* pCaps);
+
+/* ---------------- */
+/* IDirect3DDevice9 */
+/* ---------------- */
+
+/*****************************************************************************
+ * Predeclare the interface implementation structures
+ */
+extern const IDirect3DDevice9ExVtbl Direct3DDevice9_Vtbl;
+
+/*****************************************************************************
+ * IDirect3DDevice9 implementation structure
+ */
+typedef struct IDirect3DDevice9Impl
+{
+    /* IUnknown fields */
+    const IDirect3DDevice9ExVtbl   *lpVtbl;
+    LONG                          ref;
+
+    /* IDirect3DDevice9 fields */
+    IWineD3DDevice               *WineD3DDevice;
+
+    /* Avoids recursion with nested ReleaseRef to 0 */
+    BOOL                          inDestruction;
+
+    IDirect3DVertexDeclaration9  **convertedDecls;
+    unsigned int                 numConvertedDecls, declArraySize;
+
+    BOOL                          notreset;
+} IDirect3DDevice9Impl;
+
+
+/* IDirect3DDevice9: */
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_CreateAdditionalSwapChain(LPDIRECT3DDEVICE9EX iface, D3DPRESENT_PARAMETERS* pPresentationParameters, IDirect3DSwapChain9** pSwapChain);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_GetSwapChain(LPDIRECT3DDEVICE9EX iface, UINT iSwapChain, IDirect3DSwapChain9** pSwapChain);
+extern UINT     WINAPI  IDirect3DDevice9Impl_GetNumberOfSwapChains(LPDIRECT3DDEVICE9EX iface);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_CreateTexture(LPDIRECT3DDEVICE9EX iface, UINT Width, UINT Height, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DTexture9** ppTexture, HANDLE* pSharedHandle);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_CreateVolumeTexture(LPDIRECT3DDEVICE9EX iface, UINT Width, UINT Height, UINT Depth, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DVolumeTexture9** ppVolumeTexture, HANDLE* pSharedHandle);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_CreateCubeTexture(LPDIRECT3DDEVICE9EX iface, UINT EdgeLength, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DCubeTexture9** ppCubeTexture, HANDLE* pSharedHandle);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_CreateVertexBuffer(LPDIRECT3DDEVICE9EX iface, UINT Length, DWORD Usage, DWORD FVF, D3DPOOL Pool, IDirect3DVertexBuffer9** ppVertexBuffer, HANDLE* pSharedHandle);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_CreateIndexBuffer(LPDIRECT3DDEVICE9EX iface, UINT Length, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DIndexBuffer9** ppIndexBuffer, HANDLE* pSharedHandle);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_CreateStateBlock(LPDIRECT3DDEVICE9EX iface, D3DSTATEBLOCKTYPE Type, IDirect3DStateBlock9** ppSB);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_BeginStateBlock(LPDIRECT3DDEVICE9EX iface);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_EndStateBlock(LPDIRECT3DDEVICE9EX iface, IDirect3DStateBlock9** ppSB);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_CreateVertexDeclaration(LPDIRECT3DDEVICE9EX iface, CONST D3DVERTEXELEMENT9* pVertexElements, IDirect3DVertexDeclaration9** ppDecl);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_SetVertexDeclaration(LPDIRECT3DDEVICE9EX iface, IDirect3DVertexDeclaration9* pDecl);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_GetVertexDeclaration(LPDIRECT3DDEVICE9EX iface, IDirect3DVertexDeclaration9** ppDecl);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_CreateVertexShader(LPDIRECT3DDEVICE9EX iface, CONST DWORD* pFunction, IDirect3DVertexShader9** ppShader);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_SetVertexShader(LPDIRECT3DDEVICE9EX iface, IDirect3DVertexShader9* pShader);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_GetVertexShader(LPDIRECT3DDEVICE9EX iface, IDirect3DVertexShader9** ppShader);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_SetVertexShaderConstantF(LPDIRECT3DDEVICE9EX iface, UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_GetVertexShaderConstantF(LPDIRECT3DDEVICE9EX iface, UINT StartRegister, float* pConstantData, UINT Vector4fCount);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_SetVertexShaderConstantI(LPDIRECT3DDEVICE9EX iface, UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_GetVertexShaderConstantI(LPDIRECT3DDEVICE9EX iface, UINT StartRegister, int* pConstantData, UINT Vector4iCount);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_SetVertexShaderConstantB(LPDIRECT3DDEVICE9EX iface, UINT StartRegister, CONST BOOL* pConstantData, UINT BoolCount);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_GetVertexShaderConstantB(LPDIRECT3DDEVICE9EX iface, UINT StartRegister, BOOL* pConstantData, UINT BoolCount);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_CreatePixelShader(LPDIRECT3DDEVICE9EX iface, CONST DWORD* pFunction, IDirect3DPixelShader9** ppShader);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_SetPixelShader(LPDIRECT3DDEVICE9EX iface, IDirect3DPixelShader9* pShader);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_GetPixelShader(LPDIRECT3DDEVICE9EX iface, IDirect3DPixelShader9** ppShader);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_SetPixelShaderConstantF(LPDIRECT3DDEVICE9EX iface, UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_GetPixelShaderConstantF(LPDIRECT3DDEVICE9EX iface, UINT StartRegister, float* pConstantData, UINT Vector4fCount);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_SetPixelShaderConstantI(LPDIRECT3DDEVICE9EX iface, UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_GetPixelShaderConstantI(LPDIRECT3DDEVICE9EX iface, UINT StartRegister, int* pConstantData, UINT Vector4iCount);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_SetPixelShaderConstantB(LPDIRECT3DDEVICE9EX iface, UINT StartRegister, CONST BOOL* pConstantData, UINT BoolCount);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_GetPixelShaderConstantB(LPDIRECT3DDEVICE9EX iface, UINT StartRegister, BOOL* pConstantData, UINT BoolCount);
+extern HRESULT  WINAPI  IDirect3DDevice9Impl_CreateQuery(LPDIRECT3DDEVICE9EX iface, D3DQUERYTYPE Type, IDirect3DQuery9** ppQuery);
+
+
+/* ---------------- */
+/* IDirect3DVolume9 */
+/* ---------------- */
+
+/*****************************************************************************
+ * IDirect3DVolume9 implementation structure
+ */
+typedef struct IDirect3DVolume9Impl
+{
+    /* IUnknown fields */
+    const IDirect3DVolume9Vtbl *lpVtbl;
+    LONG                    ref;
+
+    /* IDirect3DVolume9 fields */
+    IWineD3DVolume         *wineD3DVolume;
+
+    /* The volume container */
+    IUnknown                    *container;
+
+    /* If set forward refcounting to this object */
+    IUnknown                    *forwardReference;
+} IDirect3DVolume9Impl;
+
+/* ------------------- */
+/* IDirect3DSwapChain9 */
+/* ------------------- */
+
+/*****************************************************************************
+ * IDirect3DSwapChain9 implementation structure
+ */
+typedef struct IDirect3DSwapChain9Impl
+{
+    /* IUnknown fields */
+    const IDirect3DSwapChain9Vtbl *lpVtbl;
+    LONG                    ref;
+
+    /* IDirect3DSwapChain9 fields */
+    IWineD3DSwapChain      *wineD3DSwapChain;
+
+    /* Parent reference */
+    LPDIRECT3DDEVICE9EX       parentDevice;
+
+    /* Flags an implicit swap chain */
+    BOOL                        isImplicit;
+} IDirect3DSwapChain9Impl;
+
+/* ------------------ */
+/* IDirect3DResource9 */
+/* ------------------ */
+
+/*****************************************************************************
+ * IDirect3DResource9 implementation structure
+ */
+typedef struct IDirect3DResource9Impl
+{
+    /* IUnknown fields */
+    const IDirect3DResource9Vtbl *lpVtbl;
+    LONG                    ref;
+
+    /* IDirect3DResource9 fields */
+    IWineD3DResource       *wineD3DResource;
+} IDirect3DResource9Impl;
+
+extern HRESULT  WINAPI        IDirect3DResource9Impl_GetDevice(LPDIRECT3DRESOURCE9 iface, IDirect3DDevice9** ppDevice);
+
+
+/* ----------------- */
+/* IDirect3DSurface9 */
+/* ----------------- */
+
+/*****************************************************************************
+ * Predeclare the interface implementation structures
+ */
+extern const IDirect3DSurface9Vtbl Direct3DSurface9_Vtbl;
+
+/*****************************************************************************
+ * IDirect3DSurface9 implementation structure
+ */
+typedef struct IDirect3DSurface9Impl
+{
+    /* IUnknown fields */
+    const IDirect3DSurface9Vtbl *lpVtbl;
+    LONG                    ref;
+
+    /* IDirect3DResource9 fields */
+    IWineD3DSurface        *wineD3DSurface;
+
+    /* Parent reference */
+    LPDIRECT3DDEVICE9EX       parentDevice;
+
+    /* The surface container */
+    IUnknown                    *container;
+
+    /* If set forward refcounting to this object */
+    IUnknown                    *forwardReference;
+
+    /* Flags an implicit surface */
+    BOOL                        isImplicit;
+} IDirect3DSurface9Impl;
+
+/* ---------------------- */
+/* IDirect3DVertexBuffer9 */
+/* ---------------------- */
+
+/*****************************************************************************
+ * IDirect3DVertexBuffer9 implementation structure
+ */
+typedef struct IDirect3DVertexBuffer9Impl
+{
+    /* IUnknown fields */
+    const IDirect3DVertexBuffer9Vtbl *lpVtbl;
+    LONG                    ref;
+
+    /* IDirect3DResource9 fields */
+    IWineD3DVertexBuffer   *wineD3DVertexBuffer;
+
+    /* Parent reference */
+    LPDIRECT3DDEVICE9EX       parentDevice;
+} IDirect3DVertexBuffer9Impl;
+
+/* --------------------- */
+/* IDirect3DIndexBuffer9 */
+/* --------------------- */
+
+/*****************************************************************************
+ * IDirect3DIndexBuffer9 implementation structure
+ */
+typedef struct IDirect3DIndexBuffer9Impl
+{
+    /* IUnknown fields */
+    const IDirect3DIndexBuffer9Vtbl *lpVtbl;
+    LONG                    ref;
+
+    /* IDirect3DResource9 fields */
+    IWineD3DIndexBuffer    *wineD3DIndexBuffer;
+
+    /* Parent reference */
+    LPDIRECT3DDEVICE9EX       parentDevice;
+} IDirect3DIndexBuffer9Impl;
+
+/* --------------------- */
+/* IDirect3DBaseTexture9 */
+/* --------------------- */
+
+/*****************************************************************************
+ * IDirect3DBaseTexture9 implementation structure
+ */
+typedef struct IDirect3DBaseTexture9Impl
+{
+    /* IUnknown fields */
+    const IDirect3DBaseTexture9Vtbl *lpVtbl;
+    LONG                    ref;
+
+    /* IDirect3DResource9 fields */
+    IWineD3DBaseTexture    *wineD3DBaseTexture;
+    
+} IDirect3DBaseTexture9Impl;
+
+extern DWORD    WINAPI        IDirect3DBaseTexture9Impl_GetLOD(LPDIRECT3DBASETEXTURE9 iface);
+
+/* --------------------- */
+/* IDirect3DCubeTexture9 */
+/* --------------------- */
+
+/*****************************************************************************
+ * IDirect3DCubeTexture9 implementation structure
+ */
+typedef struct IDirect3DCubeTexture9Impl
+{
+    /* IUnknown fields */
+    const IDirect3DCubeTexture9Vtbl *lpVtbl;
+    LONG                    ref;
+
+    /* IDirect3DResource9 fields */
+    IWineD3DCubeTexture    *wineD3DCubeTexture;
+
+    /* Parent reference */
+    LPDIRECT3DDEVICE9EX       parentDevice;
+}  IDirect3DCubeTexture9Impl;
+
+
+/* ----------------- */
+/* IDirect3DTexture9 */
+/* ----------------- */
+
+/*****************************************************************************
+ * IDirect3DTexture9 implementation structure
+ */
+typedef struct IDirect3DTexture9Impl
+{
+    /* IUnknown fields */
+    const IDirect3DTexture9Vtbl *lpVtbl;
+    LONG                    ref;
+
+    /* IDirect3DResource9 fields */
+    IWineD3DTexture        *wineD3DTexture;
+
+    /* Parent reference */
+    LPDIRECT3DDEVICE9EX       parentDevice;
+} IDirect3DTexture9Impl;
+
+/* ----------------------- */
+/* IDirect3DVolumeTexture9 */
+/* ----------------------- */
+
+/*****************************************************************************
+ * IDirect3DVolumeTexture9 implementation structure
+ */
+typedef struct IDirect3DVolumeTexture9Impl
+{
+    /* IUnknown fields */
+    const IDirect3DVolumeTexture9Vtbl *lpVtbl;
+    LONG                    ref;
+
+    /* IDirect3DResource9 fields */
+    IWineD3DVolumeTexture  *wineD3DVolumeTexture;
+
+    /* Parent reference */
+    LPDIRECT3DDEVICE9EX       parentDevice;
+} IDirect3DVolumeTexture9Impl;
+
+/* ----------------------- */
+/* IDirect3DStateBlock9 */
+/* ----------------------- */
+
+/*****************************************************************************
+ * IDirect3DStateBlock9 implementation structure
+ */
+typedef struct  IDirect3DStateBlock9Impl {
+    /* IUnknown fields */
+    const IDirect3DStateBlock9Vtbl *lpVtbl;
+    LONG                    ref;
+
+    /* IDirect3DStateBlock9 fields */
+    IWineD3DStateBlock     *wineD3DStateBlock;
+
+    /* Parent reference */
+    LPDIRECT3DDEVICE9EX       parentDevice;
+} IDirect3DStateBlock9Impl;
+
+
+/* --------------------------- */
+/* IDirect3DVertexDeclaration9 */
+/* --------------------------- */
+
+/*****************************************************************************
+ * IDirect3DVertexDeclaration implementation structure
+ */
+typedef struct IDirect3DVertexDeclaration9Impl {
+  /* IUnknown fields */
+  const IDirect3DVertexDeclaration9Vtbl *lpVtbl;
+  LONG    ref;
+
+  D3DVERTEXELEMENT9 *elements;
+  UINT element_count;
+
+  /* IDirect3DVertexDeclaration9 fields */
+  IWineD3DVertexDeclaration *wineD3DVertexDeclaration;
+  DWORD convFVF;
+
+  /* Parent reference */
+  LPDIRECT3DDEVICE9EX parentDevice;
+} IDirect3DVertexDeclaration9Impl;
+
+void IDirect3DVertexDeclaration9Impl_Destroy(LPDIRECT3DVERTEXDECLARATION9 iface);
+
+/* ---------------------- */
+/* IDirect3DVertexShader9 */
+/* ---------------------- */
+
+/*****************************************************************************
+ * IDirect3DVertexShader implementation structure
+ */
+typedef struct IDirect3DVertexShader9Impl {
+  /* IUnknown fields */
+  const IDirect3DVertexShader9Vtbl *lpVtbl;
+  LONG  ref;
+
+  /* IDirect3DVertexShader9 fields */
+  IWineD3DVertexShader *wineD3DVertexShader;
+
+  /* Parent reference */
+  LPDIRECT3DDEVICE9EX parentDevice;
+} IDirect3DVertexShader9Impl;
+
+/* --------------------- */
+/* IDirect3DPixelShader9 */
+/* --------------------- */
+
+/*****************************************************************************
+ * IDirect3DPixelShader implementation structure
+ */
+typedef struct IDirect3DPixelShader9Impl {
+  /* IUnknown fields */
+    const IDirect3DPixelShader9Vtbl *lpVtbl;
+    LONG                    ref;
+
+    /* IDirect3DPixelShader9 fields */
+    IWineD3DPixelShader    *wineD3DPixelShader;
+
+    /* Parent reference */
+    LPDIRECT3DDEVICE9EX       parentDevice;
+} IDirect3DPixelShader9Impl;
+
+/* --------------- */
+/* IDirect3DQuery9 */
+/* --------------- */
+
+/*****************************************************************************
+ * IDirect3DPixelShader implementation structure
+ */
+typedef struct IDirect3DQuery9Impl {
+    /* IUnknown fields */
+    const IDirect3DQuery9Vtbl *lpVtbl;
+    LONG                 ref;
+
+    /* IDirect3DQuery9 fields */
+    IWineD3DQuery       *wineD3DQuery;
+
+    /* Parent reference */
+    LPDIRECT3DDEVICE9EX    parentDevice;
+} IDirect3DQuery9Impl;
+
+
+/* Callbacks */
+extern HRESULT WINAPI D3D9CB_CreateSurface(IUnknown *device, IUnknown *pSuperior, UINT Width, UINT Height,
+                                         WINED3DFORMAT Format, DWORD Usage, WINED3DPOOL Pool, UINT Level,
+                                         WINED3DCUBEMAP_FACES Face, IWineD3DSurface** ppSurface,
+                                         HANDLE* pSharedHandle);
+
+extern HRESULT WINAPI D3D9CB_CreateVolume(IUnknown  *pDevice, IUnknown *pSuperior, UINT Width, UINT Height, UINT Depth,
+                                          WINED3DFORMAT  Format, WINED3DPOOL Pool, DWORD Usage,
+                                          IWineD3DVolume **ppVolume,
+                                          HANDLE   * pSharedHandle);
+
+extern HRESULT WINAPI D3D9CB_CreateDepthStencilSurface(IUnknown *device, IUnknown *pSuperior, UINT Width, UINT Height,
+                                         WINED3DFORMAT Format, WINED3DMULTISAMPLE_TYPE MultiSample,
+                                         DWORD MultisampleQuality, BOOL Discard,
+                                         IWineD3DSurface** ppSurface, HANDLE* pSharedHandle);
+
+extern HRESULT WINAPI D3D9CB_CreateRenderTarget(IUnknown *device, IUnknown *pSuperior, UINT Width, UINT Height,
+                                         WINED3DFORMAT Format, WINED3DMULTISAMPLE_TYPE MultiSample,
+                                         DWORD MultisampleQuality, BOOL Lockable,
+                                         IWineD3DSurface** ppSurface, HANDLE* pSharedHandle);
+
+extern ULONG WINAPI D3D9CB_DestroySwapChain (IWineD3DSwapChain *pSwapChain);
+
+extern ULONG WINAPI D3D9CB_DestroyDepthStencilSurface (IWineD3DSurface *pSurface);
+
+extern ULONG WINAPI D3D9CB_DestroyRenderTarget (IWineD3DSurface *pSurface);
+
+extern ULONG WINAPI D3D9CB_DestroySurface(IWineD3DSurface *pSurface);
+
+extern ULONG WINAPI D3D9CB_DestroyVolume(IWineD3DVolume *pVolume);
+
+#endif /* __WINE_D3D9_PRIVATE_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/device.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/device.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/device.c	(revision 16410)
@@ -0,0 +1,1737 @@
+/*
+ * IDirect3DDevice9 implementation
+ *
+ * Copyright 2002-2005 Jason Edmeades
+ * Copyright 2002-2005 Raphael Junqueira
+ * Copyright 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d9_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d9);
+
+
+/* IDirect3D IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DDevice9Impl_QueryInterface(LPDIRECT3DDEVICE9EX iface, REFIID riid, LPVOID* ppobj) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    IDirect3D9 *d3d;
+    IDirect3D9Impl *d3dimpl;
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DDevice9)) {
+        IDirect3DDevice9Ex_AddRef(iface);
+        *ppobj = This;
+        TRACE("Returning IDirect3DDevice9 interface at %p\n", *ppobj);
+        return S_OK;
+    } else if(IsEqualGUID(riid, &IID_IDirect3DDevice9Ex)) {
+        /* Find out if the creating d3d9 interface was created with Direct3DCreate9Ex.
+         * It doesn't matter with which function the device was created.
+         */
+        IDirect3DDevice9_GetDirect3D(iface, &d3d);
+        d3dimpl = (IDirect3D9Impl *) d3d;
+
+        if(d3dimpl->extended) {
+            *ppobj = iface;
+            IDirect3DDevice9Ex_AddRef((IDirect3DDevice9Ex *) *ppobj);
+            IDirect3D9_Release(d3d);
+            TRACE("Returning IDirect3DDevice9Ex interface at %p\n", *ppobj);
+            return S_OK;
+        } else {
+            WARN("IDirect3D9 instance wasn't created with CreateDirect3D9Ex, returning E_NOINTERFACE\n");
+            IDirect3D9_Release(d3d);
+            *ppobj = NULL;
+            return E_NOINTERFACE;
+        }
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DDevice9Impl_AddRef(LPDIRECT3DDEVICE9EX iface) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+    return ref;
+}
+
+static ULONG WINAPI IDirect3DDevice9Impl_Release(LPDIRECT3DDEVICE9EX iface) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    ULONG ref;
+
+    if (This->inDestruction) return 0;
+    ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+      unsigned i;
+      This->inDestruction = TRUE;
+
+      EnterCriticalSection(&d3d9_cs);
+      for(i = 0; i < This->numConvertedDecls; i++) {
+          /* Unless Wine is buggy or the app has a bug the refcount will be 0, because decls hold a reference to the
+           * device
+           */
+          IDirect3DVertexDeclaration9Impl_Destroy(This->convertedDecls[i]);
+      }
+      HeapFree(GetProcessHeap(), 0, This->convertedDecls);
+
+      IWineD3DDevice_Uninit3D(This->WineD3DDevice, D3D9CB_DestroyDepthStencilSurface, D3D9CB_DestroySwapChain);
+      IWineD3DDevice_Release(This->WineD3DDevice);
+      LeaveCriticalSection(&d3d9_cs);
+      HeapFree(GetProcessHeap(), 0, This);
+    }
+    return ref;
+}
+
+/* IDirect3DDevice Interface follow: */
+static HRESULT  WINAPI  IDirect3DDevice9Impl_TestCooperativeLevel(LPDIRECT3DDEVICE9EX iface) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p)\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_TestCooperativeLevel(This->WineD3DDevice);
+    LeaveCriticalSection(&d3d9_cs);
+    if(hr == WINED3D_OK && This->notreset) {
+        TRACE("D3D9 Device is marked not reset\n");
+        hr = D3DERR_DEVICENOTRESET;
+    }
+
+    return hr;
+}
+
+static UINT     WINAPI  IDirect3DDevice9Impl_GetAvailableTextureMem(LPDIRECT3DDEVICE9EX iface) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_GetAvailableTextureMem(This->WineD3DDevice);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_EvictManagedResources(LPDIRECT3DDEVICE9EX iface) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) : Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_EvictManagedResources(This->WineD3DDevice);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice9Impl_GetDirect3D(LPDIRECT3DDEVICE9EX iface, IDirect3D9** ppD3D9) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr = D3D_OK;
+    IWineD3D* pWineD3D;
+
+    TRACE("(%p) Relay\n", This);
+
+    if (NULL == ppD3D9) {
+        return D3DERR_INVALIDCALL;
+    }
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_GetDirect3D(This->WineD3DDevice, &pWineD3D);
+    if (hr == D3D_OK && pWineD3D != NULL)
+    {
+        IWineD3D_GetParent(pWineD3D,(IUnknown **)ppD3D9);
+        IWineD3D_Release(pWineD3D);
+    } else {
+        FIXME("Call to IWineD3DDevice_GetDirect3D failed\n");
+        *ppD3D9 = NULL;
+    }
+    TRACE("(%p) returning %p\n", This, *ppD3D9);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_GetDeviceCaps(LPDIRECT3DDEVICE9EX iface, D3DCAPS9* pCaps) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hrc = D3D_OK;
+    WINED3DCAPS *pWineCaps;
+
+    TRACE("(%p) : Relay pCaps %p\n", This, pCaps);
+    if(NULL == pCaps){
+        return D3DERR_INVALIDCALL;
+    }
+    pWineCaps = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WINED3DCAPS));
+    if(pWineCaps == NULL){
+        return D3DERR_INVALIDCALL; /* well this is what MSDN says to return */
+    }
+
+    memset(pCaps, 0, sizeof(*pCaps));
+    EnterCriticalSection(&d3d9_cs);
+    hrc = IWineD3DDevice_GetDeviceCaps(This->WineD3DDevice, pWineCaps);
+    LeaveCriticalSection(&d3d9_cs);
+    WINECAPSTOD3D9CAPS(pCaps, pWineCaps)
+    HeapFree(GetProcessHeap(), 0, pWineCaps);
+
+    /* Some functionality is implemented in d3d9.dll, not wined3d.dll. Add the needed caps */
+    pCaps->DevCaps2 |= D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES;
+
+    filter_caps(pCaps);
+
+    TRACE("Returning %p %p\n", This, pCaps);
+    return hrc;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_GetDisplayMode(LPDIRECT3DDEVICE9EX iface, UINT iSwapChain, D3DDISPLAYMODE* pMode) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_GetDisplayMode(This->WineD3DDevice, iSwapChain, (WINED3DDISPLAYMODE *) pMode);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_GetCreationParameters(LPDIRECT3DDEVICE9EX iface, D3DDEVICE_CREATION_PARAMETERS *pParameters) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_GetCreationParameters(This->WineD3DDevice, (WINED3DDEVICE_CREATION_PARAMETERS *) pParameters);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_SetCursorProperties(LPDIRECT3DDEVICE9EX iface, UINT XHotSpot, UINT YHotSpot, IDirect3DSurface9* pCursorBitmap) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    IDirect3DSurface9Impl *pSurface = (IDirect3DSurface9Impl*)pCursorBitmap;
+    HRESULT hr;
+
+    TRACE("(%p) Relay\n", This);
+    if(!pCursorBitmap) {
+        WARN("No cursor bitmap, returning WINED3DERR_INVALIDCALL\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetCursorProperties(This->WineD3DDevice, XHotSpot, YHotSpot, pSurface->wineD3DSurface);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static void     WINAPI  IDirect3DDevice9Impl_SetCursorPosition(LPDIRECT3DDEVICE9EX iface, int XScreenSpace, int YScreenSpace, DWORD Flags) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    IWineD3DDevice_SetCursorPosition(This->WineD3DDevice, XScreenSpace, YScreenSpace, Flags);
+    LeaveCriticalSection(&d3d9_cs);
+}
+
+static BOOL     WINAPI  IDirect3DDevice9Impl_ShowCursor(LPDIRECT3DDEVICE9EX iface, BOOL bShow) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    BOOL ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    ret = IWineD3DDevice_ShowCursor(This->WineD3DDevice, bShow);
+    LeaveCriticalSection(&d3d9_cs);
+    return ret;
+}
+
+static HRESULT WINAPI reset_enum_callback(IWineD3DResource *resource, void *data) {
+    BOOL *resources_ok = (BOOL *) data;
+    WINED3DRESOURCETYPE type;
+    HRESULT ret = S_OK;
+    WINED3DSURFACE_DESC surface_desc;
+    WINED3DVOLUME_DESC volume_desc;
+    WINED3DINDEXBUFFER_DESC index_desc;
+    WINED3DVERTEXBUFFER_DESC vertex_desc;
+    WINED3DFORMAT dummy_format;
+    WINED3DMULTISAMPLE_TYPE dummy_multisampletype;
+    DWORD dummy_dword;
+    WINED3DPOOL pool = WINED3DPOOL_SCRATCH; /* a harmless pool */
+    IUnknown *parent;
+
+    type = IWineD3DResource_GetType(resource);
+    switch(type) {
+        case WINED3DRTYPE_SURFACE:
+            surface_desc.Format = &dummy_format;
+            surface_desc.Type = &type;
+            surface_desc.Usage = &dummy_dword;
+            surface_desc.Pool = &pool;
+            surface_desc.Size = &dummy_dword;
+            surface_desc.MultiSampleType = &dummy_multisampletype;
+            surface_desc.MultiSampleQuality = &dummy_dword;
+            surface_desc.Width = &dummy_dword;
+            surface_desc.Height = &dummy_dword;
+
+            IWineD3DSurface_GetDesc((IWineD3DSurface *) resource, &surface_desc);
+            break;
+
+        case WINED3DRTYPE_VOLUME:
+            volume_desc.Format = &dummy_format;
+            volume_desc.Type = &type;
+            volume_desc.Usage = &dummy_dword;
+            volume_desc.Pool = &pool;
+            volume_desc.Size = &dummy_dword;
+            volume_desc.Width = &dummy_dword;
+            volume_desc.Height = &dummy_dword;
+            volume_desc.Depth = &dummy_dword;
+            IWineD3DVolume_GetDesc((IWineD3DVolume *) resource, &volume_desc);
+            break;
+
+        case WINED3DRTYPE_INDEXBUFFER:
+            IWineD3DIndexBuffer_GetDesc((IWineD3DIndexBuffer *) resource, &index_desc);
+            pool = index_desc.Pool;
+            break;
+
+        case WINED3DRTYPE_VERTEXBUFFER:
+            IWineD3DVertexBuffer_GetDesc((IWineD3DVertexBuffer *) resource, &vertex_desc);
+            pool = vertex_desc.Pool;
+            break;
+
+        /* No need to check for textures. If there is a D3DPOOL_DEFAULT texture, there
+         * is a D3DPOOL_DEFAULT surface or volume as well
+         */
+        default:
+            break;
+    }
+
+    if(pool == WINED3DPOOL_DEFAULT) {
+        IWineD3DResource_GetParent(resource, &parent);
+        if(IUnknown_Release(parent) == 0) {
+            TRACE("Parent %p is an implicit resource with ref 0\n", parent);
+        } else {
+            WARN("Resource %p(wineD3D %p) with pool D3DPOOL_DEFAULT blocks the Reset call\n", parent, resource);
+            ret = S_FALSE;
+            *resources_ok = FALSE;
+        }
+    }
+    IWineD3DResource_Release(resource);
+
+    return ret;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_Reset(LPDIRECT3DDEVICE9EX iface, D3DPRESENT_PARAMETERS* pPresentationParameters) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    WINED3DPRESENT_PARAMETERS localParameters;
+    HRESULT hr;
+    BOOL resources_ok = TRUE;
+    UINT i;
+
+    TRACE("(%p) Relay pPresentationParameters(%p)\n", This, pPresentationParameters);
+
+    /* Reset states that hold a COM object. WineD3D holds an internal reference to set objects, because
+     * such objects can still be used for rendering after their external d3d9 object has been destroyed.
+     * These objects must not be enumerated. Unsetting them tells WineD3D that the application will not
+     * make use of the hidden reference and destroys the objects.
+     *
+     * Unsetting them is no problem, because the states are supposed to be reset anyway. If the validation
+     * below fails, the device is considered "lost", and _Reset and _Release are the only allowed calls
+     */
+    IWineD3DDevice_SetIndices(This->WineD3DDevice, NULL);
+    for(i = 0; i < 16; i++) {
+        IWineD3DDevice_SetStreamSource(This->WineD3DDevice, i, NULL, 0, 0);
+    }
+    for(i = 0; i < 16; i++) {
+        IWineD3DDevice_SetTexture(This->WineD3DDevice, i, NULL);
+    }
+
+    IWineD3DDevice_EnumResources(This->WineD3DDevice, reset_enum_callback, &resources_ok);
+    if(!resources_ok) {
+        WARN("The application is holding D3DPOOL_DEFAULT resources, rejecting reset\n");
+        This->notreset = TRUE;
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    localParameters.BackBufferWidth                     = pPresentationParameters->BackBufferWidth;
+    localParameters.BackBufferHeight                    = pPresentationParameters->BackBufferHeight;
+    localParameters.BackBufferFormat                    = pPresentationParameters->BackBufferFormat;
+    localParameters.BackBufferCount                     = pPresentationParameters->BackBufferCount;
+    localParameters.MultiSampleType                     = pPresentationParameters->MultiSampleType;
+    localParameters.MultiSampleQuality                  = pPresentationParameters->MultiSampleQuality;
+    localParameters.SwapEffect                          = pPresentationParameters->SwapEffect;
+    localParameters.hDeviceWindow                       = pPresentationParameters->hDeviceWindow;
+    localParameters.Windowed                            = pPresentationParameters->Windowed;
+    localParameters.EnableAutoDepthStencil              = pPresentationParameters->EnableAutoDepthStencil;
+    localParameters.AutoDepthStencilFormat              = pPresentationParameters->AutoDepthStencilFormat;
+    localParameters.Flags                               = pPresentationParameters->Flags;
+    localParameters.FullScreen_RefreshRateInHz          = pPresentationParameters->FullScreen_RefreshRateInHz;
+    localParameters.PresentationInterval                = pPresentationParameters->PresentationInterval;
+    localParameters.AutoRestoreDisplayMode              = TRUE;
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_Reset(This->WineD3DDevice, &localParameters);
+    LeaveCriticalSection(&d3d9_cs);
+    if(FAILED(hr)) {
+        This->notreset = TRUE;
+
+        pPresentationParameters->BackBufferWidth            = localParameters.BackBufferWidth;
+        pPresentationParameters->BackBufferHeight           = localParameters.BackBufferHeight;
+        pPresentationParameters->BackBufferFormat           = localParameters.BackBufferFormat;
+        pPresentationParameters->BackBufferCount            = localParameters.BackBufferCount;
+        pPresentationParameters->MultiSampleType            = localParameters.MultiSampleType;
+        pPresentationParameters->MultiSampleQuality         = localParameters.MultiSampleQuality;
+        pPresentationParameters->SwapEffect                 = localParameters.SwapEffect;
+        pPresentationParameters->hDeviceWindow              = localParameters.hDeviceWindow;
+        pPresentationParameters->Windowed                   = localParameters.Windowed;
+        pPresentationParameters->EnableAutoDepthStencil     = localParameters.EnableAutoDepthStencil;
+        pPresentationParameters->AutoDepthStencilFormat     = localParameters.AutoDepthStencilFormat;
+        pPresentationParameters->Flags                      = localParameters.Flags;
+        pPresentationParameters->FullScreen_RefreshRateInHz = localParameters.FullScreen_RefreshRateInHz;
+        pPresentationParameters->PresentationInterval       = localParameters.PresentationInterval;
+    } else {
+        This->notreset = FALSE;
+    }
+
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_Present(LPDIRECT3DDEVICE9EX iface, CONST RECT* pSourceRect,CONST RECT* pDestRect,HWND hDestWindowOverride,CONST RGNDATA*
+ pDirtyRegion) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_Present(This->WineD3DDevice, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+ }
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_GetBackBuffer(LPDIRECT3DDEVICE9EX iface, UINT iSwapChain, UINT BackBuffer, D3DBACKBUFFER_TYPE Type, IDirect3DSurface9 ** ppBackBuffer) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    IWineD3DSurface *retSurface = NULL;
+    HRESULT rc = D3D_OK;
+
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    rc = IWineD3DDevice_GetBackBuffer(This->WineD3DDevice, iSwapChain, BackBuffer, (WINED3DBACKBUFFER_TYPE) Type, &retSurface);
+    if (rc == D3D_OK && NULL != retSurface && NULL != ppBackBuffer) {
+        IWineD3DSurface_GetParent(retSurface, (IUnknown **)ppBackBuffer);
+        IWineD3DSurface_Release(retSurface);
+    }
+    LeaveCriticalSection(&d3d9_cs);
+    return rc;
+}
+static HRESULT  WINAPI  IDirect3DDevice9Impl_GetRasterStatus(LPDIRECT3DDEVICE9EX iface, UINT iSwapChain, D3DRASTER_STATUS* pRasterStatus) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_GetRasterStatus(This->WineD3DDevice, iSwapChain, (WINED3DRASTER_STATUS *) pRasterStatus);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice9Impl_SetDialogBoxMode(LPDIRECT3DDEVICE9EX iface, BOOL bEnableDialogs) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetDialogBoxMode(This->WineD3DDevice, bEnableDialogs);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static void WINAPI IDirect3DDevice9Impl_SetGammaRamp(LPDIRECT3DDEVICE9EX iface, UINT iSwapChain, DWORD Flags, CONST D3DGAMMARAMP* pRamp) {
+    
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    /* Note: D3DGAMMARAMP is compatible with WINED3DGAMMARAMP */
+    IWineD3DDevice_SetGammaRamp(This->WineD3DDevice, iSwapChain, Flags, (CONST WINED3DGAMMARAMP *)pRamp);
+    LeaveCriticalSection(&d3d9_cs);
+}
+
+static void WINAPI IDirect3DDevice9Impl_GetGammaRamp(LPDIRECT3DDEVICE9EX iface, UINT iSwapChain, D3DGAMMARAMP* pRamp) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    /* Note: D3DGAMMARAMP is compatible with WINED3DGAMMARAMP */
+    IWineD3DDevice_GetGammaRamp(This->WineD3DDevice, iSwapChain, (WINED3DGAMMARAMP *) pRamp);
+    LeaveCriticalSection(&d3d9_cs);
+}
+
+
+static HRESULT IDirect3DDevice9Impl_CreateSurface(LPDIRECT3DDEVICE9EX iface, UINT Width, UINT Height, D3DFORMAT Format, BOOL Lockable, BOOL Discard, UINT Level, IDirect3DSurface9 **ppSurface,D3DRESOURCETYPE Type, UINT Usage, D3DPOOL Pool, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality,HANDLE* pSharedHandle )  {
+    HRESULT hrc;
+    IDirect3DSurface9Impl *object;
+    IDirect3DDevice9Impl  *This = (IDirect3DDevice9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    
+    if(MultisampleQuality > 0){
+        FIXME("MultisampleQuality set to %d, bstituting 0\n", MultisampleQuality);
+    /*
+    MultisampleQuality
+ [in] Quality level. The valid range is between zero and one less than the level returned by pQualityLevels used by IDirect3D9::CheckDeviceMultiSampleType. Passing a larger value returns the error D3DERR_INVALIDCALL. The MultisampleQuality values of paired render targets, depth stencil surfaces, and the MultiSample type must all match.
+ */
+ 
+        MultisampleQuality=0;
+    }
+    /*FIXME: Check MAX bounds of MultisampleQuality*/
+
+    /* Allocate the storage for the device */
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DSurface9Impl));
+    if (NULL == object) {
+        FIXME("Allocation of memory failed\n");
+        return D3DERR_OUTOFVIDEOMEMORY;
+    }
+
+    object->lpVtbl = &Direct3DSurface9_Vtbl;
+    object->ref = 1;
+    
+    TRACE("(%p) : w(%d) h(%d) fmt(%d) surf@%p\n", This, Width, Height, Format, *ppSurface);
+           
+    hrc = IWineD3DDevice_CreateSurface(This->WineD3DDevice, Width, Height, Format, Lockable, Discard, Level,  &object->wineD3DSurface, Type, Usage & WINED3DUSAGE_MASK, (WINED3DPOOL) Pool,MultiSample,MultisampleQuality,pSharedHandle,SURFACE_OPENGL,(IUnknown *)object);
+    
+    if (hrc != D3D_OK || NULL == object->wineD3DSurface) {
+
+       /* free up object */
+        FIXME("(%p) call to IWineD3DDevice_CreateSurface failed\n", This);
+        HeapFree(GetProcessHeap(), 0, object);
+    } else {
+        IDirect3DDevice9Ex_AddRef(iface);
+        object->parentDevice = iface;
+        TRACE("(%p) : Created surface %p\n", This, object);
+        *ppSurface = (LPDIRECT3DSURFACE9) object;
+    }
+    return hrc;
+}
+
+
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_CreateRenderTarget(LPDIRECT3DDEVICE9EX iface, UINT Width, UINT Height,
+                                                         D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, 
+                                                         DWORD MultisampleQuality, BOOL Lockable, 
+                                                         IDirect3DSurface9 **ppSurface, HANDLE* pSharedHandle) {
+    HRESULT hr;
+    TRACE("Relay\n");
+
+   /* Is this correct? */
+   EnterCriticalSection(&d3d9_cs);
+   hr = IDirect3DDevice9Impl_CreateSurface(iface,Width,Height,Format,Lockable,FALSE/*Discard*/, 0/*Level*/, ppSurface,D3DRTYPE_SURFACE,D3DUSAGE_RENDERTARGET,D3DPOOL_DEFAULT,MultiSample,MultisampleQuality,pSharedHandle);
+   LeaveCriticalSection(&d3d9_cs);
+   return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_CreateDepthStencilSurface(LPDIRECT3DDEVICE9EX iface, UINT Width, UINT Height,
+                                                                D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample,
+                                                                DWORD MultisampleQuality, BOOL Discard,
+                                                                IDirect3DSurface9 **ppSurface, HANDLE* pSharedHandle) {
+    HRESULT hr;
+    TRACE("Relay\n");
+
+     EnterCriticalSection(&d3d9_cs);
+     hr = IDirect3DDevice9Impl_CreateSurface(iface,Width,Height,Format,TRUE/* Lockable */,Discard, 0/* Level */
+                                               ,ppSurface,D3DRTYPE_SURFACE,D3DUSAGE_DEPTHSTENCIL,
+                                                D3DPOOL_DEFAULT,MultiSample,MultisampleQuality,pSharedHandle);
+     LeaveCriticalSection(&d3d9_cs);
+     return hr;
+}
+
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_UpdateSurface(LPDIRECT3DDEVICE9EX iface, IDirect3DSurface9* pSourceSurface, CONST RECT* pSourceRect, IDirect3DSurface9* pDestinationSurface, CONST POINT* pDestPoint) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_UpdateSurface(This->WineD3DDevice, ((IDirect3DSurface9Impl *)pSourceSurface)->wineD3DSurface, pSourceRect, ((IDirect3DSurface9Impl *)pDestinationSurface)->wineD3DSurface, pDestPoint);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_UpdateTexture(LPDIRECT3DDEVICE9EX iface, IDirect3DBaseTexture9* pSourceTexture, IDirect3DBaseTexture9* pDestinationTexture) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_UpdateTexture(This->WineD3DDevice,  ((IDirect3DBaseTexture9Impl *)pSourceTexture)->wineD3DBaseTexture, ((IDirect3DBaseTexture9Impl *)pDestinationTexture)->wineD3DBaseTexture);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_GetRenderTargetData(LPDIRECT3DDEVICE9EX iface, IDirect3DSurface9* pRenderTarget, IDirect3DSurface9* pDestSurface) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    IDirect3DSurface9Impl *renderTarget = (IDirect3DSurface9Impl *)pRenderTarget;
+    IDirect3DSurface9Impl *destSurface = (IDirect3DSurface9Impl *)pDestSurface;
+    HRESULT hr;
+    TRACE("(%p)->(%p,%p)\n" , This, renderTarget, destSurface);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DSurface_BltFast(destSurface->wineD3DSurface, 0, 0, renderTarget->wineD3DSurface, NULL, WINEDDBLTFAST_NOCOLORKEY);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_GetFrontBufferData(LPDIRECT3DDEVICE9EX iface, UINT iSwapChain, IDirect3DSurface9* pDestSurface) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    IDirect3DSurface9Impl *destSurface = (IDirect3DSurface9Impl *)pDestSurface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_GetFrontBufferData(This->WineD3DDevice, iSwapChain, destSurface->wineD3DSurface);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_StretchRect(LPDIRECT3DDEVICE9EX iface, IDirect3DSurface9* pSourceSurface, CONST RECT* pSourceRect, IDirect3DSurface9* pDestSurface, CONST RECT* pDestRect, D3DTEXTUREFILTERTYPE Filter) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    IDirect3DSurface9Impl *src = (IDirect3DSurface9Impl *) pSourceSurface;
+    IDirect3DSurface9Impl *dst = (IDirect3DSurface9Impl *) pDestSurface;
+    HRESULT hr;
+
+    TRACE("(%p)->(%p,%p,%p,%p,%d)\n" , This, src, pSourceRect, dst, pDestRect, Filter);
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DSurface_Blt(dst->wineD3DSurface, (RECT *) pDestRect, src->wineD3DSurface, (RECT *) pSourceRect, 0, NULL, Filter);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_ColorFill(LPDIRECT3DDEVICE9EX iface, IDirect3DSurface9* pSurface, CONST RECT* pRect, D3DCOLOR color) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    IDirect3DSurface9Impl *surface = (IDirect3DSurface9Impl *)pSurface;
+    WINED3DPOOL pool;
+    WINED3DRESOURCETYPE restype;
+    DWORD usage;
+    WINED3DSURFACE_DESC desc;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    memset(&desc, 0, sizeof(desc));
+    desc.Usage = &usage;
+    desc.Pool = &pool;
+    desc.Type = &restype;
+    IWineD3DSurface_GetDesc(surface->wineD3DSurface, &desc);
+
+    /* This method is only allowed with surfaces that are render targets, or offscreen plain surfaces
+     * in D3DPOOL_DEFAULT
+     */
+    if(!(usage & WINED3DUSAGE_RENDERTARGET) && (pool != D3DPOOL_DEFAULT || restype != D3DRTYPE_SURFACE)) {
+        WARN("Surface is not a render target, or not a stand-alone D3DPOOL_DEFAULT surface\n");
+        return D3DERR_INVALIDCALL;
+    }
+
+    /* Colorfill can only be used on rendertarget surfaces, or offscreen plain surfaces in D3DPOOL_DEFAULT */
+    /* Note: D3DRECT is compatible with WINED3DRECT */
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_ColorFill(This->WineD3DDevice, surface->wineD3DSurface, (CONST WINED3DRECT*)pRect, color);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_CreateOffscreenPlainSurface(LPDIRECT3DDEVICE9EX iface, UINT Width, UINT Height, D3DFORMAT Format, D3DPOOL Pool, IDirect3DSurface9 **ppSurface, HANDLE* pSharedHandle) {
+    HRESULT hr;
+    TRACE("Relay\n");
+    if(Pool == D3DPOOL_MANAGED ){
+        FIXME("Attempting to create a managed offscreen plain surface\n");
+        return D3DERR_INVALIDCALL;
+    }    
+        /*
+        'Off-screen plain surfaces are always lockable, regardless of their pool types.'
+        but then...
+        D3DPOOL_DEFAULT is the appropriate pool for use with the IDirect3DDevice9::StretchRect and IDirect3DDevice9::ColorFill.
+        Why, their always lockable?
+        should I change the usage to dynamic?        
+        */
+    EnterCriticalSection(&d3d9_cs);
+    hr = IDirect3DDevice9Impl_CreateSurface(iface,Width,Height,Format,TRUE/*Loackable*/,FALSE/*Discard*/,0/*Level*/ , ppSurface,D3DRTYPE_SURFACE, 0/*Usage (undefined/none)*/,(WINED3DPOOL) Pool,D3DMULTISAMPLE_NONE,0/*MultisampleQuality*/,pSharedHandle);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+/* TODO: move to wineD3D */
+static HRESULT  WINAPI  IDirect3DDevice9Impl_SetRenderTarget(LPDIRECT3DDEVICE9EX iface, DWORD RenderTargetIndex, IDirect3DSurface9* pRenderTarget) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    IDirect3DSurface9Impl *pSurface = (IDirect3DSurface9Impl*)pRenderTarget;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetRenderTarget(This->WineD3DDevice, RenderTargetIndex, pSurface ? pSurface->wineD3DSurface : NULL);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_GetRenderTarget(LPDIRECT3DDEVICE9EX iface, DWORD RenderTargetIndex, IDirect3DSurface9 **ppRenderTarget) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr = D3D_OK;
+    IWineD3DSurface *pRenderTarget;
+
+    TRACE("(%p) Relay\n" , This);
+
+    if (ppRenderTarget == NULL) {
+        return D3DERR_INVALIDCALL;
+    }
+
+    EnterCriticalSection(&d3d9_cs);
+    hr=IWineD3DDevice_GetRenderTarget(This->WineD3DDevice,RenderTargetIndex,&pRenderTarget);
+
+    if (hr == D3D_OK && pRenderTarget != NULL) {
+        IWineD3DSurface_GetParent(pRenderTarget,(IUnknown**)ppRenderTarget);
+        IWineD3DSurface_Release(pRenderTarget);
+    } else {
+        FIXME("Call to IWineD3DDevice_GetRenderTarget failed\n");
+        *ppRenderTarget = NULL;
+    }
+    LeaveCriticalSection(&d3d9_cs);
+
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_SetDepthStencilSurface(LPDIRECT3DDEVICE9EX iface, IDirect3DSurface9* pZStencilSurface) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    IDirect3DSurface9Impl *pSurface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    pSurface = (IDirect3DSurface9Impl*)pZStencilSurface;
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetDepthStencilSurface(This->WineD3DDevice, NULL==pSurface ? NULL : pSurface->wineD3DSurface);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_GetDepthStencilSurface(LPDIRECT3DDEVICE9EX iface, IDirect3DSurface9 **ppZStencilSurface) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr = D3D_OK;
+    IWineD3DSurface *pZStencilSurface;
+
+    TRACE("(%p) Relay\n" , This);
+    if(ppZStencilSurface == NULL){
+        return D3DERR_INVALIDCALL;
+    }
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_GetDepthStencilSurface(This->WineD3DDevice,&pZStencilSurface);
+    if (hr == WINED3D_OK) {
+        IWineD3DSurface_GetParent(pZStencilSurface,(IUnknown**)ppZStencilSurface);
+        IWineD3DSurface_Release(pZStencilSurface);
+    } else {
+        if (hr != WINED3DERR_NOTFOUND)
+                WARN("Call to IWineD3DDevice_GetDepthStencilSurface failed with 0x%08x\n", hr);
+        *ppZStencilSurface = NULL;
+    }
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_BeginScene(LPDIRECT3DDEVICE9EX iface) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_BeginScene(This->WineD3DDevice);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_EndScene(LPDIRECT3DDEVICE9EX iface) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_EndScene(This->WineD3DDevice);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_Clear(LPDIRECT3DDEVICE9EX iface, DWORD Count, CONST D3DRECT* pRects, DWORD Flags, D3DCOLOR Color, float Z, DWORD Stencil) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    /* Note: D3DRECT is compatible with WINED3DRECT */
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_Clear(This->WineD3DDevice, Count, (CONST WINED3DRECT*) pRects, Flags, Color, Z, Stencil);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_SetTransform(LPDIRECT3DDEVICE9EX iface, D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX* lpMatrix) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    /* Note: D3DMATRIX is compatible with WINED3DMATRIX */
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetTransform(This->WineD3DDevice, State, (CONST WINED3DMATRIX*) lpMatrix);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_GetTransform(LPDIRECT3DDEVICE9EX iface, D3DTRANSFORMSTATETYPE State, D3DMATRIX* pMatrix) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    TRACE("(%p) Relay\n" , This);
+
+    /* Note: D3DMATRIX is compatible with WINED3DMATRIX */
+    return IWineD3DDevice_GetTransform(This->WineD3DDevice, State, (WINED3DMATRIX*) pMatrix);
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_MultiplyTransform(LPDIRECT3DDEVICE9EX iface, D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX* pMatrix) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    /* Note: D3DMATRIX is compatible with WINED3DMATRIX */
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_MultiplyTransform(This->WineD3DDevice, State, (CONST WINED3DMATRIX*) pMatrix);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_SetViewport(LPDIRECT3DDEVICE9EX iface, CONST D3DVIEWPORT9* pViewport) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    /* Note: D3DVIEWPORT9 is compatible with WINED3DVIEWPORT */
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetViewport(This->WineD3DDevice, (const WINED3DVIEWPORT *)pViewport);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_GetViewport(LPDIRECT3DDEVICE9EX iface, D3DVIEWPORT9* pViewport) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    /* Note: D3DVIEWPORT9 is compatible with WINED3DVIEWPORT */
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_GetViewport(This->WineD3DDevice, (WINED3DVIEWPORT *)pViewport);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_SetMaterial(LPDIRECT3DDEVICE9EX iface, CONST D3DMATERIAL9* pMaterial) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    /* Note: D3DMATERIAL9 is compatible with WINED3DMATERIAL */
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetMaterial(This->WineD3DDevice, (const WINED3DMATERIAL *)pMaterial);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_GetMaterial(LPDIRECT3DDEVICE9EX iface, D3DMATERIAL9* pMaterial) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    /* Note: D3DMATERIAL9 is compatible with WINED3DMATERIAL */
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_GetMaterial(This->WineD3DDevice, (WINED3DMATERIAL *)pMaterial);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_SetLight(LPDIRECT3DDEVICE9EX iface, DWORD Index, CONST D3DLIGHT9* pLight) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    /* Note: D3DLIGHT9 is compatible with WINED3DLIGHT */
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetLight(This->WineD3DDevice, Index, (const WINED3DLIGHT *)pLight);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_GetLight(LPDIRECT3DDEVICE9EX iface, DWORD Index, D3DLIGHT9* pLight) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    /* Note: D3DLIGHT9 is compatible with WINED3DLIGHT */
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_GetLight(This->WineD3DDevice, Index, (WINED3DLIGHT *)pLight);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_LightEnable(LPDIRECT3DDEVICE9EX iface, DWORD Index, BOOL Enable) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetLightEnable(This->WineD3DDevice, Index, Enable);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_GetLightEnable(LPDIRECT3DDEVICE9EX iface, DWORD Index, BOOL* pEnable) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_GetLightEnable(This->WineD3DDevice, Index, pEnable);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_SetClipPlane(LPDIRECT3DDEVICE9EX iface, DWORD Index, CONST float* pPlane) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetClipPlane(This->WineD3DDevice, Index, pPlane);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_GetClipPlane(LPDIRECT3DDEVICE9EX iface, DWORD Index, float* pPlane) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_GetClipPlane(This->WineD3DDevice, Index, pPlane);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_SetRenderState(LPDIRECT3DDEVICE9EX iface, D3DRENDERSTATETYPE State, DWORD Value) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetRenderState(This->WineD3DDevice, State, Value);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_GetRenderState(LPDIRECT3DDEVICE9EX iface, D3DRENDERSTATETYPE State, DWORD* pValue) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_GetRenderState(This->WineD3DDevice, State, pValue);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_SetClipStatus(LPDIRECT3DDEVICE9EX iface, CONST D3DCLIPSTATUS9* pClipStatus) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetClipStatus(This->WineD3DDevice, (const WINED3DCLIPSTATUS *)pClipStatus);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_GetClipStatus(LPDIRECT3DDEVICE9EX iface, D3DCLIPSTATUS9* pClipStatus) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_GetClipStatus(This->WineD3DDevice, (WINED3DCLIPSTATUS *)pClipStatus);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_GetTexture(LPDIRECT3DDEVICE9EX iface, DWORD Stage, IDirect3DBaseTexture9 **ppTexture) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    IWineD3DBaseTexture *retTexture = NULL;
+    HRESULT rc = D3D_OK;
+
+    TRACE("(%p) Relay\n" , This);
+
+    if(ppTexture == NULL){
+        return D3DERR_INVALIDCALL;
+    }
+
+    EnterCriticalSection(&d3d9_cs);
+    rc = IWineD3DDevice_GetTexture(This->WineD3DDevice, Stage, &retTexture);
+    if (SUCCEEDED(rc) && NULL != retTexture) {
+        IWineD3DBaseTexture_GetParent(retTexture, (IUnknown **)ppTexture);
+        IWineD3DBaseTexture_Release(retTexture);
+    } else {
+        if(FAILED(rc)) {
+            WARN("Call to get texture  (%d) failed (%p)\n", Stage, retTexture);
+        }
+        *ppTexture = NULL;
+    }
+    LeaveCriticalSection(&d3d9_cs);
+
+    return rc;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_SetTexture(LPDIRECT3DDEVICE9EX iface, DWORD Stage, IDirect3DBaseTexture9* pTexture) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay %d %p\n" , This, Stage, pTexture);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetTexture(This->WineD3DDevice, Stage,
+                                   pTexture==NULL ? NULL:((IDirect3DBaseTexture9Impl *)pTexture)->wineD3DBaseTexture);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_GetTextureStageState(LPDIRECT3DDEVICE9EX iface, DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD* pValue) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_GetTextureStageState(This->WineD3DDevice, Stage, Type, pValue);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_SetTextureStageState(LPDIRECT3DDEVICE9EX iface, DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetTextureStageState(This->WineD3DDevice, Stage, Type, Value);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_GetSamplerState(LPDIRECT3DDEVICE9EX iface, DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD* pValue) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;    
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_GetSamplerState(This->WineD3DDevice, Sampler, Type, pValue);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_SetSamplerState(LPDIRECT3DDEVICE9EX iface, DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD Value) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetSamplerState(This->WineD3DDevice, Sampler, Type, Value);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_ValidateDevice(LPDIRECT3DDEVICE9EX iface, DWORD* pNumPasses) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_ValidateDevice(This->WineD3DDevice, pNumPasses);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_SetPaletteEntries(LPDIRECT3DDEVICE9EX iface, UINT PaletteNumber, CONST PALETTEENTRY* pEntries) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;    
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetPaletteEntries(This->WineD3DDevice, PaletteNumber, pEntries);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_GetPaletteEntries(LPDIRECT3DDEVICE9EX iface, UINT PaletteNumber, PALETTEENTRY* pEntries) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_GetPaletteEntries(This->WineD3DDevice, PaletteNumber, pEntries);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_SetCurrentTexturePalette(LPDIRECT3DDEVICE9EX iface, UINT PaletteNumber) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetCurrentTexturePalette(This->WineD3DDevice, PaletteNumber);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_GetCurrentTexturePalette(LPDIRECT3DDEVICE9EX iface, UINT* PaletteNumber) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_GetCurrentTexturePalette(This->WineD3DDevice, PaletteNumber);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_SetScissorRect(LPDIRECT3DDEVICE9EX iface, CONST RECT* pRect) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetScissorRect(This->WineD3DDevice, pRect);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_GetScissorRect(LPDIRECT3DDEVICE9EX iface, RECT* pRect) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_GetScissorRect(This->WineD3DDevice, pRect);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_SetSoftwareVertexProcessing(LPDIRECT3DDEVICE9EX iface, BOOL bSoftware) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetSoftwareVertexProcessing(This->WineD3DDevice, bSoftware);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static BOOL     WINAPI  IDirect3DDevice9Impl_GetSoftwareVertexProcessing(LPDIRECT3DDEVICE9EX iface) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    BOOL ret;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    ret = IWineD3DDevice_GetSoftwareVertexProcessing(This->WineD3DDevice);
+    LeaveCriticalSection(&d3d9_cs);
+    return ret;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_SetNPatchMode(LPDIRECT3DDEVICE9EX iface, float nSegments) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetNPatchMode(This->WineD3DDevice, nSegments);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static float    WINAPI  IDirect3DDevice9Impl_GetNPatchMode(LPDIRECT3DDEVICE9EX iface) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    float ret;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    ret = IWineD3DDevice_GetNPatchMode(This->WineD3DDevice);
+    LeaveCriticalSection(&d3d9_cs);
+    return ret;
+}
+
+static HRESULT WINAPI IDirect3DDevice9Impl_DrawPrimitive(LPDIRECT3DDEVICE9EX iface, D3DPRIMITIVETYPE PrimitiveType, UINT StartVertex, UINT PrimitiveCount) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;    
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_DrawPrimitive(This->WineD3DDevice, PrimitiveType, StartVertex, PrimitiveCount);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_DrawIndexedPrimitive(LPDIRECT3DDEVICE9EX iface, D3DPRIMITIVETYPE PrimitiveType,
+                                                           INT BaseVertexIndex, UINT MinVertexIndex, UINT NumVertices, UINT startIndex, UINT primCount) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    /* D3D8 passes the baseVertexIndex in SetIndices, and due to the stateblock functions wined3d has to work that way */
+    EnterCriticalSection(&d3d9_cs);
+    IWineD3DDevice_SetBaseVertexIndex(This->WineD3DDevice, BaseVertexIndex);
+    hr = IWineD3DDevice_DrawIndexedPrimitive(This->WineD3DDevice, PrimitiveType, MinVertexIndex, NumVertices, startIndex, primCount);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_DrawPrimitiveUP(LPDIRECT3DDEVICE9EX iface, D3DPRIMITIVETYPE PrimitiveType, UINT PrimitiveCount, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;    
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_DrawPrimitiveUP(This->WineD3DDevice, PrimitiveType, PrimitiveCount, pVertexStreamZeroData, VertexStreamZeroStride);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_DrawIndexedPrimitiveUP(LPDIRECT3DDEVICE9EX iface, D3DPRIMITIVETYPE PrimitiveType, UINT MinVertexIndex,
+                                                             UINT NumVertexIndices, UINT PrimitiveCount, CONST void* pIndexData,
+                                                             D3DFORMAT IndexDataFormat, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_DrawIndexedPrimitiveUP(This->WineD3DDevice, PrimitiveType, MinVertexIndex, NumVertexIndices, PrimitiveCount,
+                                                 pIndexData, IndexDataFormat, pVertexStreamZeroData, VertexStreamZeroStride);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_ProcessVertices(LPDIRECT3DDEVICE9EX iface, UINT SrcStartIndex, UINT DestIndex, UINT VertexCount, IDirect3DVertexBuffer9* pDestBuffer, IDirect3DVertexDeclaration9* pVertexDecl, DWORD Flags) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    IDirect3DVertexDeclaration9Impl *Decl = (IDirect3DVertexDeclaration9Impl *) pVertexDecl;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_ProcessVertices(This->WineD3DDevice,SrcStartIndex, DestIndex, VertexCount, ((IDirect3DVertexBuffer9Impl *)pDestBuffer)->wineD3DVertexBuffer, Decl ? Decl->wineD3DVertexDeclaration : NULL, Flags);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static IDirect3DVertexDeclaration9 *getConvertedDecl(IDirect3DDevice9Impl *This, DWORD fvf) {
+    HRESULT hr;
+    D3DVERTEXELEMENT9* elements = NULL;
+    IDirect3DVertexDeclaration9* pDecl = NULL;
+    int p, low, high; /* deliberately signed */
+    IDirect3DVertexDeclaration9  **convertedDecls = This->convertedDecls;
+
+    TRACE("Searching for declaration for fvf %08x... ", fvf);
+
+    low = 0;
+    high = This->numConvertedDecls - 1;
+    while(low <= high) {
+        p = (low + high) >> 1;
+        TRACE("%d ", p);
+        if(((IDirect3DVertexDeclaration9Impl *) convertedDecls[p])->convFVF == fvf) {
+            TRACE("found %p\n", convertedDecls[p]);
+            return convertedDecls[p];
+        } else if(((IDirect3DVertexDeclaration9Impl *) convertedDecls[p])->convFVF < fvf) {
+            low = p + 1;
+        } else {
+            high = p - 1;
+        }
+    }
+    TRACE("not found. Creating and inserting at position %d.\n", low);
+
+    hr = vdecl_convert_fvf(fvf, &elements);
+    if (hr != S_OK) return NULL;
+
+    hr = IDirect3DDevice9Impl_CreateVertexDeclaration((IDirect3DDevice9Ex *) This, elements, &pDecl);
+    HeapFree(GetProcessHeap(), 0, elements); /* CreateVertexDeclaration makes a copy */
+    if (hr != S_OK) return NULL;
+
+    if(This->declArraySize == This->numConvertedDecls) {
+        int grow = max(This->declArraySize / 2, 8);
+        convertedDecls = HeapReAlloc(GetProcessHeap(), 0, convertedDecls,
+                                     sizeof(convertedDecls[0]) * (This->numConvertedDecls + grow));
+        if(!convertedDecls) {
+            /* This will destroy it */
+            IDirect3DVertexDeclaration9_Release(pDecl);
+            return NULL;
+        }
+        This->convertedDecls = convertedDecls;
+        This->declArraySize += grow;
+    }
+
+    memmove(convertedDecls + low + 1, convertedDecls + low, sizeof(IDirect3DVertexDeclaration9Impl *) * (This->numConvertedDecls - low));
+    convertedDecls[low] = pDecl;
+    This->numConvertedDecls++;
+
+    /* Will prevent the decl from being destroyed */
+    ((IDirect3DVertexDeclaration9Impl *) pDecl)->convFVF = fvf;
+    IDirect3DVertexDeclaration9_Release(pDecl); /* Does not destroy now */
+
+    TRACE("Returning %p. %d decls in array\n", pDecl, This->numConvertedDecls);
+    return pDecl;
+}
+
+static HRESULT WINAPI IDirect3DDevice9Impl_SetFVF(LPDIRECT3DDEVICE9EX iface, DWORD FVF) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    if (0 != FVF) {
+         IDirect3DVertexDeclaration9* pDecl = getConvertedDecl(This, FVF);
+
+         if(!pDecl) {
+             /* Any situation when this should happen, except out of memory? */
+             ERR("Failed to create a converted vertex declaration\n");
+             LeaveCriticalSection(&d3d9_cs);
+             return D3DERR_DRIVERINTERNALERROR;
+         }
+
+         hr = IDirect3DDevice9Impl_SetVertexDeclaration(iface, pDecl);
+         if (hr != S_OK) {
+             LeaveCriticalSection(&d3d9_cs);
+             return hr;
+         }
+    }
+    hr = IWineD3DDevice_SetFVF(This->WineD3DDevice, FVF);
+    LeaveCriticalSection(&d3d9_cs);
+
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice9Impl_GetFVF(LPDIRECT3DDEVICE9EX iface, DWORD* pFVF) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_GetFVF(This->WineD3DDevice, pFVF);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice9Impl_SetStreamSource(LPDIRECT3DDEVICE9EX iface, UINT StreamNumber, IDirect3DVertexBuffer9* pStreamData, UINT OffsetInBytes, UINT Stride) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetStreamSource(This->WineD3DDevice, StreamNumber,
+                                          pStreamData==NULL ? NULL:((IDirect3DVertexBuffer9Impl *)pStreamData)->wineD3DVertexBuffer, 
+                                          OffsetInBytes, Stride);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DDevice9Impl_GetStreamSource(LPDIRECT3DDEVICE9EX iface, UINT StreamNumber, IDirect3DVertexBuffer9 **pStream, UINT* OffsetInBytes, UINT* pStride) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    IWineD3DVertexBuffer *retStream = NULL;
+    HRESULT rc = D3D_OK;
+
+    TRACE("(%p) Relay\n" , This);
+
+    if(pStream == NULL){
+        return D3DERR_INVALIDCALL;
+    }
+
+    EnterCriticalSection(&d3d9_cs);
+    rc = IWineD3DDevice_GetStreamSource(This->WineD3DDevice, StreamNumber, &retStream, OffsetInBytes, pStride);
+    if (rc == D3D_OK  && NULL != retStream) {
+        IWineD3DVertexBuffer_GetParent(retStream, (IUnknown **)pStream);
+        IWineD3DVertexBuffer_Release(retStream);
+    }else{
+        if (rc != D3D_OK){
+            FIXME("Call to GetStreamSource failed %p %p\n", OffsetInBytes, pStride);
+        }
+        *pStream = NULL;
+    }
+    LeaveCriticalSection(&d3d9_cs);
+
+    return rc;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_SetStreamSourceFreq(LPDIRECT3DDEVICE9EX iface, UINT StreamNumber, UINT Divider) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;    
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetStreamSourceFreq(This->WineD3DDevice, StreamNumber, Divider);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_GetStreamSourceFreq(LPDIRECT3DDEVICE9EX iface, UINT StreamNumber, UINT* Divider) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n" , This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_GetStreamSourceFreq(This->WineD3DDevice, StreamNumber, Divider);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_SetIndices(LPDIRECT3DDEVICE9EX iface, IDirect3DIndexBuffer9* pIndexData) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetIndices(This->WineD3DDevice,
+            pIndexData ? ((IDirect3DIndexBuffer9Impl *)pIndexData)->wineD3DIndexBuffer : NULL);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_GetIndices(LPDIRECT3DDEVICE9EX iface, IDirect3DIndexBuffer9 **ppIndexData) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    IWineD3DIndexBuffer *retIndexData = NULL;
+    HRESULT rc = D3D_OK;
+
+    TRACE("(%p) Relay\n", This);
+
+    if(ppIndexData == NULL){
+        return D3DERR_INVALIDCALL;
+    }
+
+    EnterCriticalSection(&d3d9_cs);
+    rc = IWineD3DDevice_GetIndices(This->WineD3DDevice, &retIndexData);
+    if (SUCCEEDED(rc) && retIndexData) {
+        IWineD3DIndexBuffer_GetParent(retIndexData, (IUnknown **)ppIndexData);
+        IWineD3DIndexBuffer_Release(retIndexData);
+    } else {
+        if (FAILED(rc)) FIXME("Call to GetIndices failed\n");
+        *ppIndexData = NULL;
+    }
+    LeaveCriticalSection(&d3d9_cs);
+    return rc;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_DrawRectPatch(LPDIRECT3DDEVICE9EX iface, UINT Handle, CONST float* pNumSegs, CONST D3DRECTPATCH_INFO* pRectPatchInfo) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_DrawRectPatch(This->WineD3DDevice, Handle, pNumSegs, (CONST WINED3DRECTPATCH_INFO *)pRectPatchInfo);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_DrawTriPatch(LPDIRECT3DDEVICE9EX iface, UINT Handle, CONST float* pNumSegs, CONST D3DTRIPATCH_INFO* pTriPatchInfo) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_DrawTriPatch(This->WineD3DDevice, Handle, pNumSegs, (CONST WINED3DTRIPATCH_INFO *)pTriPatchInfo);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9Impl_DeletePatch(LPDIRECT3DDEVICE9EX iface, UINT Handle) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_DeletePatch(This->WineD3DDevice, Handle);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9ExImpl_SetConvolutionMonoKernel(LPDIRECT3DDEVICE9EX iface, UINT width, UINT height, float *rows, float *columns) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *) iface;
+    FIXME("(%p)->(%d, %d, %p, %p) Stub!\n", This, width, height, rows, columns);
+    return WINED3DERR_INVALIDCALL;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9ExImpl_ComposeRects(LPDIRECT3DDEVICE9EX iface, IDirect3DSurface9 *pSrc, IDirect3DDevice9 *pDst, IDirect3DVertexBuffer9 *pSrcRectDescs, UINT NumRects, IDirect3DVertexBuffer9 *pDstRectDescs, D3DCOMPOSERECTSOP Operation, int Xoffset, int Yoffset) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *) iface;
+    FIXME("(%p)->(%p, %p, %p, %d, %p, %d, %d, %d) Stub!\n", This, pSrc, pDst, pSrcRectDescs, NumRects, pDstRectDescs, Operation, Xoffset, Yoffset);
+    return WINED3DERR_INVALIDCALL;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9ExImpl_PresentEx(LPDIRECT3DDEVICE9EX iface, CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride, CONST RGNDATA *pDirtyRegion, DWORD dwFlags) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *) iface;
+    FIXME("(%p= -> (%p), %p, %p, %p, 0x%08x) Stub!\n", This, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion, dwFlags);
+    return WINED3DERR_INVALIDCALL;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9ExImpl_GetGPUThreadPriority(LPDIRECT3DDEVICE9EX iface, INT *pPriority) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *) iface;
+    FIXME("(%p)->(%p) Stub!\n", This, pPriority);
+    return WINED3DERR_INVALIDCALL;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9ExImpl_SetGPUThreadPriority(LPDIRECT3DDEVICE9EX iface, INT Priority) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *) iface;
+    FIXME("(%p)->(%d) Stub!\n", This, Priority);
+    return WINED3DERR_INVALIDCALL;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9ExImpl_WaitForVBlank(LPDIRECT3DDEVICE9EX iface, UINT iSwapChain) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *) iface;
+    FIXME("(%p)->(%d) Stub!\n", This, iSwapChain);
+    return WINED3DERR_INVALIDCALL;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9ExImpl_CheckresourceResidency(LPDIRECT3DDEVICE9EX iface, IDirect3DResource9 ** pResourceArray, UINT32 Numresources) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *) iface;
+    FIXME("(%p)->(%p, %d) Stub!\n", This, pResourceArray, Numresources);
+    return WINED3DERR_INVALIDCALL;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9ExImpl_SetMaximumFrameLatency(LPDIRECT3DDEVICE9EX iface, UINT MaxLatency) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *) iface;
+    FIXME("(%p)->(%d) Stub!\n", This, MaxLatency);
+    return WINED3DERR_INVALIDCALL;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9ExImpl_GetMaximumFrameLatency(LPDIRECT3DDEVICE9EX iface, UINT *pMaxLatency) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *) iface;
+    FIXME("(%p)->(%p) Stub!\n", This, pMaxLatency);
+    *pMaxLatency = 2;
+    return WINED3DERR_INVALIDCALL;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9ExImpl_CheckdeviceState(LPDIRECT3DDEVICE9EX iface, HWND hDestinationWindow) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *) iface;
+    FIXME("(%p)->(%p) Stub!\n", This, hDestinationWindow);
+    return WINED3DERR_INVALIDCALL;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9ExImpl_CreateRenderTargetEx(LPDIRECT3DDEVICE9EX iface, UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultiSampleQuality, BOOL Lockable, IDirect3DSurface9 ** ppSurface, HANDLE *pSharedHandle, DWORD Usage) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *) iface;
+    FIXME("(%p)->(%d, %d, %d, %d, %d, %s, %p, %p, 0x%08x) Stub!\n", This, Width, Height, Format, MultiSample, MultiSampleQuality, Lockable ? "true" : "false", ppSurface, pSharedHandle, Usage);
+    return WINED3DERR_INVALIDCALL;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9ExImpl_CreateOffscreenPlainSurfaceEx(LPDIRECT3DDEVICE9EX iface, UINT Width, UINT Height, D3DFORMAT Format, D3DPOOL Pool, IDirect3DSurface9 **ppSurface, HANDLE *pSharedHandle, DWORD Usage) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *) iface;
+    FIXME("(%p)->(%d, %d, %d, %d, %p, %p, 0x%08x) Stub!\n", This, Width, Height, Format, Pool, ppSurface, pSharedHandle, Usage);
+    return WINED3DERR_INVALIDCALL;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9ExImpl_CreateDepthStencilSurfaceEx(LPDIRECT3DDEVICE9EX iface, UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultiSampleQuality, BOOL Discard, IDirect3DSurface9 **ppSurface, HANDLE *pSharedHandle, DWORD Usage) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *) iface;
+    FIXME("(%p)->(%d, %d, %d, %d, %d, %s, %p, %p, 0x%08x) Stub!\n", This, Width, Height, Format, MultiSample, MultiSampleQuality, Discard ? "true" : "false", ppSurface, pSharedHandle, Usage);
+    return WINED3DERR_INVALIDCALL;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9ExImpl_ResetEx(LPDIRECT3DDEVICE9EX iface, D3DPRESENT_PARAMETERS *pPresentationParameters, D3DDISPLAYMODEEX *pFullscreenDisplayMode) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *) iface;
+    FIXME("(%p)->(%p) Stub!\n", This, pPresentationParameters);
+    return WINED3DERR_INVALIDCALL;
+}
+
+static HRESULT  WINAPI  IDirect3DDevice9ExImpl_GetDisplayModeEx(LPDIRECT3DDEVICE9EX iface, UINT iSwapChain, D3DDISPLAYMODEEX *pMode, D3DDISPLAYROTATION *pRotation) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *) iface;
+    FIXME("(%p)->(%d, %p, %p) Stub!\n", This, iSwapChain, pMode, pRotation);
+    return WINED3DERR_INVALIDCALL;
+}
+
+const IDirect3DDevice9ExVtbl Direct3DDevice9_Vtbl =
+{
+    /* IUnknown */
+    IDirect3DDevice9Impl_QueryInterface,
+    IDirect3DDevice9Impl_AddRef,
+    IDirect3DDevice9Impl_Release,
+    /* IDirect3DDevice9 */
+    IDirect3DDevice9Impl_TestCooperativeLevel,
+    IDirect3DDevice9Impl_GetAvailableTextureMem,
+    IDirect3DDevice9Impl_EvictManagedResources,
+    IDirect3DDevice9Impl_GetDirect3D,
+    IDirect3DDevice9Impl_GetDeviceCaps,
+    IDirect3DDevice9Impl_GetDisplayMode,
+    IDirect3DDevice9Impl_GetCreationParameters,
+    IDirect3DDevice9Impl_SetCursorProperties,
+    IDirect3DDevice9Impl_SetCursorPosition,
+    IDirect3DDevice9Impl_ShowCursor,
+    IDirect3DDevice9Impl_CreateAdditionalSwapChain,
+    IDirect3DDevice9Impl_GetSwapChain,
+    IDirect3DDevice9Impl_GetNumberOfSwapChains,
+    IDirect3DDevice9Impl_Reset,
+    IDirect3DDevice9Impl_Present,
+    IDirect3DDevice9Impl_GetBackBuffer,
+    IDirect3DDevice9Impl_GetRasterStatus,
+    IDirect3DDevice9Impl_SetDialogBoxMode,
+    IDirect3DDevice9Impl_SetGammaRamp,
+    IDirect3DDevice9Impl_GetGammaRamp,
+    IDirect3DDevice9Impl_CreateTexture,
+    IDirect3DDevice9Impl_CreateVolumeTexture,
+    IDirect3DDevice9Impl_CreateCubeTexture,
+    IDirect3DDevice9Impl_CreateVertexBuffer,
+    IDirect3DDevice9Impl_CreateIndexBuffer,
+    IDirect3DDevice9Impl_CreateRenderTarget,
+    IDirect3DDevice9Impl_CreateDepthStencilSurface,
+    IDirect3DDevice9Impl_UpdateSurface,
+    IDirect3DDevice9Impl_UpdateTexture,
+    IDirect3DDevice9Impl_GetRenderTargetData,
+    IDirect3DDevice9Impl_GetFrontBufferData,
+    IDirect3DDevice9Impl_StretchRect,
+    IDirect3DDevice9Impl_ColorFill,
+    IDirect3DDevice9Impl_CreateOffscreenPlainSurface,
+    IDirect3DDevice9Impl_SetRenderTarget,
+    IDirect3DDevice9Impl_GetRenderTarget,
+    IDirect3DDevice9Impl_SetDepthStencilSurface,
+    IDirect3DDevice9Impl_GetDepthStencilSurface,
+    IDirect3DDevice9Impl_BeginScene,
+    IDirect3DDevice9Impl_EndScene,
+    IDirect3DDevice9Impl_Clear,
+    IDirect3DDevice9Impl_SetTransform,
+    IDirect3DDevice9Impl_GetTransform,
+    IDirect3DDevice9Impl_MultiplyTransform,
+    IDirect3DDevice9Impl_SetViewport,
+    IDirect3DDevice9Impl_GetViewport,
+    IDirect3DDevice9Impl_SetMaterial,
+    IDirect3DDevice9Impl_GetMaterial,
+    IDirect3DDevice9Impl_SetLight,
+    IDirect3DDevice9Impl_GetLight,
+    IDirect3DDevice9Impl_LightEnable,
+    IDirect3DDevice9Impl_GetLightEnable,
+    IDirect3DDevice9Impl_SetClipPlane,
+    IDirect3DDevice9Impl_GetClipPlane,
+    IDirect3DDevice9Impl_SetRenderState,
+    IDirect3DDevice9Impl_GetRenderState,
+    IDirect3DDevice9Impl_CreateStateBlock,
+    IDirect3DDevice9Impl_BeginStateBlock,
+    IDirect3DDevice9Impl_EndStateBlock,
+    IDirect3DDevice9Impl_SetClipStatus,
+    IDirect3DDevice9Impl_GetClipStatus,
+    IDirect3DDevice9Impl_GetTexture,
+    IDirect3DDevice9Impl_SetTexture,
+    IDirect3DDevice9Impl_GetTextureStageState,
+    IDirect3DDevice9Impl_SetTextureStageState,
+    IDirect3DDevice9Impl_GetSamplerState,
+    IDirect3DDevice9Impl_SetSamplerState,
+    IDirect3DDevice9Impl_ValidateDevice,
+    IDirect3DDevice9Impl_SetPaletteEntries,
+    IDirect3DDevice9Impl_GetPaletteEntries,
+    IDirect3DDevice9Impl_SetCurrentTexturePalette,
+    IDirect3DDevice9Impl_GetCurrentTexturePalette,
+    IDirect3DDevice9Impl_SetScissorRect,
+    IDirect3DDevice9Impl_GetScissorRect,
+    IDirect3DDevice9Impl_SetSoftwareVertexProcessing,
+    IDirect3DDevice9Impl_GetSoftwareVertexProcessing,
+    IDirect3DDevice9Impl_SetNPatchMode,
+    IDirect3DDevice9Impl_GetNPatchMode,
+    IDirect3DDevice9Impl_DrawPrimitive,
+    IDirect3DDevice9Impl_DrawIndexedPrimitive,
+    IDirect3DDevice9Impl_DrawPrimitiveUP,
+    IDirect3DDevice9Impl_DrawIndexedPrimitiveUP,
+    IDirect3DDevice9Impl_ProcessVertices,
+    IDirect3DDevice9Impl_CreateVertexDeclaration,
+    IDirect3DDevice9Impl_SetVertexDeclaration,
+    IDirect3DDevice9Impl_GetVertexDeclaration,
+    IDirect3DDevice9Impl_SetFVF,
+    IDirect3DDevice9Impl_GetFVF,
+    IDirect3DDevice9Impl_CreateVertexShader,
+    IDirect3DDevice9Impl_SetVertexShader,
+    IDirect3DDevice9Impl_GetVertexShader,
+    IDirect3DDevice9Impl_SetVertexShaderConstantF,
+    IDirect3DDevice9Impl_GetVertexShaderConstantF,
+    IDirect3DDevice9Impl_SetVertexShaderConstantI,
+    IDirect3DDevice9Impl_GetVertexShaderConstantI,
+    IDirect3DDevice9Impl_SetVertexShaderConstantB,
+    IDirect3DDevice9Impl_GetVertexShaderConstantB,
+    IDirect3DDevice9Impl_SetStreamSource,
+    IDirect3DDevice9Impl_GetStreamSource,
+    IDirect3DDevice9Impl_SetStreamSourceFreq,
+    IDirect3DDevice9Impl_GetStreamSourceFreq,
+    IDirect3DDevice9Impl_SetIndices,
+    IDirect3DDevice9Impl_GetIndices,
+    IDirect3DDevice9Impl_CreatePixelShader,
+    IDirect3DDevice9Impl_SetPixelShader,
+    IDirect3DDevice9Impl_GetPixelShader,
+    IDirect3DDevice9Impl_SetPixelShaderConstantF,
+    IDirect3DDevice9Impl_GetPixelShaderConstantF,
+    IDirect3DDevice9Impl_SetPixelShaderConstantI,
+    IDirect3DDevice9Impl_GetPixelShaderConstantI,
+    IDirect3DDevice9Impl_SetPixelShaderConstantB,
+    IDirect3DDevice9Impl_GetPixelShaderConstantB,
+    IDirect3DDevice9Impl_DrawRectPatch,
+    IDirect3DDevice9Impl_DrawTriPatch,
+    IDirect3DDevice9Impl_DeletePatch,
+    IDirect3DDevice9Impl_CreateQuery,
+    /* IDirect3DDevice9Ex */
+    IDirect3DDevice9ExImpl_SetConvolutionMonoKernel,
+    IDirect3DDevice9ExImpl_ComposeRects,
+    IDirect3DDevice9ExImpl_PresentEx,
+    IDirect3DDevice9ExImpl_GetGPUThreadPriority,
+    IDirect3DDevice9ExImpl_SetGPUThreadPriority,
+    IDirect3DDevice9ExImpl_WaitForVBlank,
+    IDirect3DDevice9ExImpl_CheckresourceResidency,
+    IDirect3DDevice9ExImpl_SetMaximumFrameLatency,
+    IDirect3DDevice9ExImpl_GetMaximumFrameLatency,
+    IDirect3DDevice9ExImpl_CheckdeviceState,
+    IDirect3DDevice9ExImpl_CreateRenderTargetEx,
+    IDirect3DDevice9ExImpl_CreateOffscreenPlainSurfaceEx,
+    IDirect3DDevice9ExImpl_CreateDepthStencilSurfaceEx,
+    IDirect3DDevice9ExImpl_ResetEx,
+    IDirect3DDevice9ExImpl_GetDisplayModeEx
+};
+
+
+/* Internal function called back during the CreateDevice to create a render target  */
+HRESULT WINAPI D3D9CB_CreateSurface(IUnknown *device, IUnknown *pSuperior, UINT Width, UINT Height,
+                                         WINED3DFORMAT Format, DWORD Usage, WINED3DPOOL Pool, UINT Level,
+                                         WINED3DCUBEMAP_FACES Face,IWineD3DSurface** ppSurface,
+                                         HANDLE* pSharedHandle) {
+
+    HRESULT res = D3D_OK;
+    IDirect3DSurface9Impl *d3dSurface = NULL;
+    BOOL Lockable = TRUE;
+    
+    if((Pool == D3DPOOL_DEFAULT &&  Usage != D3DUSAGE_DYNAMIC)) 
+        Lockable = FALSE;
+        
+    TRACE("relay\n");
+    res = IDirect3DDevice9Impl_CreateSurface((IDirect3DDevice9Ex *)device, Width, Height, (D3DFORMAT)Format,
+                Lockable, FALSE/*Discard*/, Level,  (IDirect3DSurface9 **)&d3dSurface, D3DRTYPE_SURFACE,
+                Usage, (D3DPOOL) Pool, D3DMULTISAMPLE_NONE, 0 /* MultisampleQuality */, pSharedHandle);  
+
+    if (SUCCEEDED(res)) {
+        *ppSurface = d3dSurface->wineD3DSurface;
+        d3dSurface->container = pSuperior;
+        IDirect3DDevice9Ex_Release(d3dSurface->parentDevice);
+        d3dSurface->parentDevice = NULL;
+        d3dSurface->forwardReference = pSuperior;
+    } else {
+        FIXME("(%p) IDirect3DDevice9_CreateSurface failed\n", device);
+    }
+    return res;
+}
+
+ULONG WINAPI D3D9CB_DestroySurface(IWineD3DSurface *pSurface) {
+    IDirect3DSurface9Impl* surfaceParent;
+    TRACE("(%p) call back\n", pSurface);
+
+    IWineD3DSurface_GetParent(pSurface, (IUnknown **) &surfaceParent);
+    /* GetParent's AddRef was forwarded to an object in destruction.
+     * Releasing it here again would cause an endless recursion. */
+    surfaceParent->forwardReference = NULL;
+    return IDirect3DSurface9_Release((IDirect3DSurface9*) surfaceParent);
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/directx.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/directx.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/directx.c	(revision 16410)
@@ -0,0 +1,616 @@
+/*
+ * IDirect3D9 implementation
+ *
+ * Copyright 2002 Jason Edmeades
+ * Copyright 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d9_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d9);
+
+/* IDirect3D9 IUnknown parts follow: */
+static HRESULT WINAPI IDirect3D9Impl_QueryInterface(LPDIRECT3D9EX iface, REFIID riid, LPVOID* ppobj)
+{
+    IDirect3D9Impl *This = (IDirect3D9Impl *)iface;
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3D9)) {
+        IDirect3D9Ex_AddRef(iface);
+        *ppobj = This;
+        TRACE("Returning IDirect3D9 interface at %p\n", *ppobj);
+        return S_OK;
+    } else if(IsEqualGUID(riid, &IID_IDirect3D9Ex)) {
+        if(This->extended) {
+            *ppobj = (IDirect3D9Ex *) This;
+            TRACE("Returning IDirect3D9Ex interface at %p\n", *ppobj);
+            IDirect3D9Ex_AddRef((IDirect3D9Ex *)*ppobj);
+        } else {
+            WARN("Application asks for IDirect3D9Ex, but this instance wasn't created with Direct3DCreate9Ex\n");
+            WARN("Returning E_NOINTERFACE\n");
+            *ppobj = NULL;
+            return E_NOINTERFACE;
+        }
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3D9Impl_AddRef(LPDIRECT3D9EX iface) {
+    IDirect3D9Impl *This = (IDirect3D9Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+    return ref;
+}
+
+static ULONG WINAPI IDirect3D9Impl_Release(LPDIRECT3D9EX iface) {
+    IDirect3D9Impl *This = (IDirect3D9Impl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+        EnterCriticalSection(&d3d9_cs);
+        IWineD3D_Release(This->WineD3D);
+        LeaveCriticalSection(&d3d9_cs);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+
+    return ref;
+}
+
+/* IDirect3D9 Interface follow: */
+static HRESULT  WINAPI  IDirect3D9Impl_RegisterSoftwareDevice(LPDIRECT3D9EX iface, void* pInitializeFunction) {
+    IDirect3D9Impl *This = (IDirect3D9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p)->(%p)\n", This, pInitializeFunction);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3D_RegisterSoftwareDevice(This->WineD3D, pInitializeFunction);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static UINT     WINAPI  IDirect3D9Impl_GetAdapterCount(LPDIRECT3D9EX iface) {
+    IDirect3D9Impl *This = (IDirect3D9Impl *)iface;
+    HRESULT hr;
+    TRACE("%p\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3D_GetAdapterCount(This->WineD3D);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3D9Impl_GetAdapterIdentifier(LPDIRECT3D9EX iface, UINT Adapter, DWORD Flags, D3DADAPTER_IDENTIFIER9* pIdentifier) {
+    IDirect3D9Impl *This = (IDirect3D9Impl *)iface;
+    WINED3DADAPTER_IDENTIFIER adapter_id;
+    HRESULT hr;
+
+    /* dx8 and dx9 have different structures to be filled in, with incompatible 
+       layouts so pass in pointers to the places to be filled via an internal 
+       structure                                                                */
+    adapter_id.Driver           = pIdentifier->Driver;          
+    adapter_id.Description      = pIdentifier->Description;     
+    adapter_id.DeviceName       = pIdentifier->DeviceName;      
+    adapter_id.DriverVersion    = &pIdentifier->DriverVersion;   
+    adapter_id.VendorId         = &pIdentifier->VendorId;        
+    adapter_id.DeviceId         = &pIdentifier->DeviceId;        
+    adapter_id.SubSysId         = &pIdentifier->SubSysId;        
+    adapter_id.Revision         = &pIdentifier->Revision;        
+    adapter_id.DeviceIdentifier = &pIdentifier->DeviceIdentifier;
+    adapter_id.WHQLLevel        = &pIdentifier->WHQLLevel;       
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3D_GetAdapterIdentifier(This->WineD3D, Adapter, Flags, &adapter_id);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static UINT WINAPI IDirect3D9Impl_GetAdapterModeCount(LPDIRECT3D9EX iface, UINT Adapter, D3DFORMAT Format) {
+    IDirect3D9Impl *This = (IDirect3D9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p)->(%d, %d\n", This, Adapter, Format);
+
+    /* Others than that not supported by d3d9, but reported by wined3d for ddraw. Filter them out */
+    if(Format != D3DFMT_X8R8G8B8 && Format != D3DFMT_R5G6B5) {
+        return 0;
+    }
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3D_GetAdapterModeCount(This->WineD3D, Adapter, Format);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3D9Impl_EnumAdapterModes(LPDIRECT3D9EX iface, UINT Adapter, D3DFORMAT Format, UINT Mode, D3DDISPLAYMODE* pMode) {
+    IDirect3D9Impl *This = (IDirect3D9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p)->(%d, %d, %d, %p)\n", This, Adapter, Format, Mode, pMode);
+    /* We can't pass this to WineD3D, otherwise it'll think it came from D3D8 or DDraw.
+       It's supposed to fail anyway, so no harm returning failure. */
+    if(Format != WINED3DFMT_X8R8G8B8 && Format != WINED3DFMT_R5G6B5)
+        return D3DERR_INVALIDCALL;
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3D_EnumAdapterModes(This->WineD3D, Adapter, Format, Mode, (WINED3DDISPLAYMODE *) pMode);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3D9Impl_GetAdapterDisplayMode(LPDIRECT3D9EX iface, UINT Adapter, D3DDISPLAYMODE* pMode) {
+    IDirect3D9Impl *This = (IDirect3D9Impl *)iface;
+    return IWineD3D_GetAdapterDisplayMode(This->WineD3D, Adapter, (WINED3DDISPLAYMODE *) pMode);
+}
+
+static HRESULT WINAPI IDirect3D9Impl_CheckDeviceType(LPDIRECT3D9EX iface,
+					      UINT Adapter, D3DDEVTYPE CheckType, D3DFORMAT DisplayFormat,
+					      D3DFORMAT BackBufferFormat, BOOL Windowed) {
+    IDirect3D9Impl *This = (IDirect3D9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p)->(%d, %d, %d, %d, %s\n", This, Adapter, CheckType, DisplayFormat,
+          BackBufferFormat, Windowed ? "true" : "false");
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3D_CheckDeviceType(This->WineD3D, Adapter, CheckType, DisplayFormat,
+                                    BackBufferFormat, Windowed);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3D9Impl_CheckDeviceFormat(LPDIRECT3D9EX iface,
+						  UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat,
+						  DWORD Usage, D3DRESOURCETYPE RType, D3DFORMAT CheckFormat) {
+    IDirect3D9Impl *This = (IDirect3D9Impl *)iface;
+    HRESULT hr;
+    TRACE("%p\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3D_CheckDeviceFormat(This->WineD3D, Adapter, DeviceType, AdapterFormat,
+                                    Usage, RType, CheckFormat, SURFACE_OPENGL);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3D9Impl_CheckDeviceMultiSampleType(LPDIRECT3D9EX iface,
+							   UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SurfaceFormat,
+							   BOOL Windowed, D3DMULTISAMPLE_TYPE MultiSampleType, DWORD* pQualityLevels) {
+    IDirect3D9Impl *This = (IDirect3D9Impl *)iface;
+    HRESULT hr;
+    TRACE("%p\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3D_CheckDeviceMultiSampleType(This->WineD3D, Adapter, DeviceType, SurfaceFormat,
+                                               Windowed, MultiSampleType, pQualityLevels);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3D9Impl_CheckDepthStencilMatch(LPDIRECT3D9EX iface,
+						       UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat,
+						       D3DFORMAT RenderTargetFormat, D3DFORMAT DepthStencilFormat) {
+    IDirect3D9Impl *This = (IDirect3D9Impl *)iface;
+    HRESULT hr;
+    TRACE("%p\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3D_CheckDepthStencilMatch(This->WineD3D, Adapter, DeviceType, AdapterFormat,
+                                           RenderTargetFormat, DepthStencilFormat);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3D9Impl_CheckDeviceFormatConversion(LPDIRECT3D9EX iface, UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SourceFormat, D3DFORMAT TargetFormat) {
+    IDirect3D9Impl *This = (IDirect3D9Impl *)iface;
+    HRESULT hr;
+    TRACE("%p\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3D_CheckDeviceFormatConversion(This->WineD3D, Adapter, DeviceType, SourceFormat,
+                                                TargetFormat);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+void filter_caps(D3DCAPS9* pCaps)
+{
+
+    DWORD textureFilterCaps =
+        D3DPTFILTERCAPS_MINFPOINT      | D3DPTFILTERCAPS_MINFLINEAR    | D3DPTFILTERCAPS_MINFANISOTROPIC |
+        D3DPTFILTERCAPS_MINFPYRAMIDALQUAD                              | D3DPTFILTERCAPS_MINFGAUSSIANQUAD|
+        D3DPTFILTERCAPS_MIPFPOINT      | D3DPTFILTERCAPS_MIPFLINEAR    | D3DPTFILTERCAPS_MAGFPOINT       |
+        D3DPTFILTERCAPS_MAGFLINEAR     |D3DPTFILTERCAPS_MAGFANISOTROPIC|D3DPTFILTERCAPS_MAGFPYRAMIDALQUAD|
+        D3DPTFILTERCAPS_MAGFGAUSSIANQUAD;
+    pCaps->TextureFilterCaps &= textureFilterCaps;
+    pCaps->CubeTextureFilterCaps &= textureFilterCaps;
+    pCaps->VolumeTextureFilterCaps &= textureFilterCaps;
+
+    pCaps->DevCaps &=
+        D3DDEVCAPS_EXECUTESYSTEMMEMORY | D3DDEVCAPS_EXECUTEVIDEOMEMORY | D3DDEVCAPS_TLVERTEXSYSTEMMEMORY |
+        D3DDEVCAPS_TLVERTEXVIDEOMEMORY | D3DDEVCAPS_TEXTURESYSTEMMEMORY| D3DDEVCAPS_TEXTUREVIDEOMEMORY   |
+        D3DDEVCAPS_DRAWPRIMTLVERTEX    | D3DDEVCAPS_CANRENDERAFTERFLIP | D3DDEVCAPS_TEXTURENONLOCALVIDMEM|
+        D3DDEVCAPS_DRAWPRIMITIVES2     | D3DDEVCAPS_SEPARATETEXTUREMEMORIES                              |
+        D3DDEVCAPS_DRAWPRIMITIVES2EX   | D3DDEVCAPS_HWTRANSFORMANDLIGHT| D3DDEVCAPS_CANBLTSYSTONONLOCAL  |
+        D3DDEVCAPS_HWRASTERIZATION     | D3DDEVCAPS_PUREDEVICE         | D3DDEVCAPS_QUINTICRTPATCHES     |
+        D3DDEVCAPS_RTPATCHES           | D3DDEVCAPS_RTPATCHHANDLEZERO  | D3DDEVCAPS_NPATCHES;
+
+    pCaps->ShadeCaps &=
+        D3DPSHADECAPS_COLORGOURAUDRGB  | D3DPSHADECAPS_SPECULARGOURAUDRGB |
+        D3DPSHADECAPS_ALPHAGOURAUDBLEND | D3DPSHADECAPS_FOGGOURAUD;
+
+    pCaps->RasterCaps &=
+        D3DPRASTERCAPS_DITHER          | D3DPRASTERCAPS_ZTEST          | D3DPRASTERCAPS_FOGVERTEX        |
+        D3DPRASTERCAPS_FOGTABLE        | D3DPRASTERCAPS_MIPMAPLODBIAS  | D3DPRASTERCAPS_ZBUFFERLESSHSR   |
+        D3DPRASTERCAPS_FOGRANGE        | D3DPRASTERCAPS_ANISOTROPY     | D3DPRASTERCAPS_WBUFFER          |
+        D3DPRASTERCAPS_WFOG            | D3DPRASTERCAPS_ZFOG           | D3DPRASTERCAPS_COLORPERSPECTIVE |
+        D3DPRASTERCAPS_SCISSORTEST     | D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS                              |
+        D3DPRASTERCAPS_DEPTHBIAS       | D3DPRASTERCAPS_MULTISAMPLE_TOGGLE;
+
+    pCaps->DevCaps2 &=
+        D3DDEVCAPS2_STREAMOFFSET       | D3DDEVCAPS2_DMAPNPATCH        | D3DDEVCAPS2_ADAPTIVETESSRTPATCH |
+        D3DDEVCAPS2_ADAPTIVETESSNPATCH | D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES                       |
+        D3DDEVCAPS2_PRESAMPLEDDMAPNPATCH| D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET;
+
+    pCaps->Caps2 &=
+        D3DCAPS2_FULLSCREENGAMMA       | D3DCAPS2_CANCALIBRATEGAMMA    | D3DCAPS2_RESERVED               |
+        D3DCAPS2_CANMANAGERESOURCE     | D3DCAPS2_DYNAMICTEXTURES      | D3DCAPS2_CANAUTOGENMIPMAP;
+
+    pCaps->VertexProcessingCaps &=
+        D3DVTXPCAPS_TEXGEN             | D3DVTXPCAPS_MATERIALSOURCE7   | D3DVTXPCAPS_DIRECTIONALLIGHTS   |
+        D3DVTXPCAPS_POSITIONALLIGHTS   | D3DVTXPCAPS_LOCALVIEWER       | D3DVTXPCAPS_TWEENING            |
+        D3DVTXPCAPS_TEXGEN_SPHEREMAP   | D3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER;
+
+    pCaps->TextureCaps &=
+        D3DPTEXTURECAPS_PERSPECTIVE    | D3DPTEXTURECAPS_POW2          | D3DPTEXTURECAPS_ALPHA           |
+        D3DPTEXTURECAPS_SQUAREONLY     | D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE                        |
+        D3DPTEXTURECAPS_ALPHAPALETTE   | D3DPTEXTURECAPS_NONPOW2CONDITIONAL                              |
+        D3DPTEXTURECAPS_PROJECTED      | D3DPTEXTURECAPS_CUBEMAP       | D3DPTEXTURECAPS_VOLUMEMAP       |
+        D3DPTEXTURECAPS_MIPMAP         | D3DPTEXTURECAPS_MIPVOLUMEMAP  | D3DPTEXTURECAPS_MIPCUBEMAP      |
+        D3DPTEXTURECAPS_CUBEMAP_POW2   | D3DPTEXTURECAPS_VOLUMEMAP_POW2| D3DPTEXTURECAPS_NOPROJECTEDBUMPENV;
+}
+
+static HRESULT WINAPI IDirect3D9Impl_GetDeviceCaps(LPDIRECT3D9EX iface, UINT Adapter, D3DDEVTYPE DeviceType, D3DCAPS9* pCaps) {
+    IDirect3D9Impl *This = (IDirect3D9Impl *)iface;
+    HRESULT hrc = D3D_OK;
+    WINED3DCAPS *pWineCaps;
+
+    TRACE("(%p) Relay %d %u %p\n", This, Adapter, DeviceType, pCaps);
+
+    if(NULL == pCaps){
+        return D3DERR_INVALIDCALL;
+    }
+    pWineCaps = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WINED3DCAPS));
+    if(pWineCaps == NULL){
+        return D3DERR_INVALIDCALL; /*well this is what MSDN says to return*/
+    }
+    memset(pCaps, 0, sizeof(*pCaps));
+    EnterCriticalSection(&d3d9_cs);
+    hrc = IWineD3D_GetDeviceCaps(This->WineD3D, Adapter, DeviceType, pWineCaps);
+    LeaveCriticalSection(&d3d9_cs);
+    WINECAPSTOD3D9CAPS(pCaps, pWineCaps)
+    HeapFree(GetProcessHeap(), 0, pWineCaps);
+
+    /* Some functionality is implemented in d3d9.dll, not wined3d.dll. Add the needed caps */
+    pCaps->DevCaps2 |= D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES;
+
+    filter_caps(pCaps);
+
+    TRACE("(%p) returning %p\n", This, pCaps);
+    return hrc;
+}
+
+static HMONITOR WINAPI IDirect3D9Impl_GetAdapterMonitor(LPDIRECT3D9EX iface, UINT Adapter) {
+    IDirect3D9Impl *This = (IDirect3D9Impl *)iface;
+    HMONITOR ret;
+    TRACE("%p\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    ret = IWineD3D_GetAdapterMonitor(This->WineD3D, Adapter);
+    LeaveCriticalSection(&d3d9_cs);
+    return ret;
+}
+
+/* Internal function called back during the CreateDevice to create a render target */
+HRESULT WINAPI D3D9CB_CreateRenderTarget(IUnknown *device, IUnknown *pSuperior, UINT Width, UINT Height,
+                                         WINED3DFORMAT Format, WINED3DMULTISAMPLE_TYPE MultiSample,
+                                         DWORD MultisampleQuality, BOOL Lockable,
+                                         IWineD3DSurface** ppSurface, HANDLE* pSharedHandle) {
+    HRESULT res = D3D_OK;
+    IDirect3DSurface9Impl *d3dSurface = NULL;
+    TRACE("(%p) call back\n", device);
+    res = IDirect3DDevice9_CreateRenderTarget((IDirect3DDevice9 *)device, Width, Height, 
+                                         (D3DFORMAT)Format, MultiSample, MultisampleQuality, Lockable,
+                                         (IDirect3DSurface9 **)&d3dSurface, pSharedHandle);
+
+    if (SUCCEEDED(res)) {
+        *ppSurface = d3dSurface->wineD3DSurface;
+        d3dSurface->container = pSuperior;
+        d3dSurface->isImplicit = TRUE;
+        /* Implicit surfaces are created with an refcount of 0 */
+        IDirect3DSurface9_Release((IDirect3DSurface9 *)d3dSurface);
+    } else {
+        *ppSurface = NULL;
+    }
+    return res;
+}
+
+ULONG WINAPI D3D9CB_DestroyRenderTarget(IWineD3DSurface *pSurface) {
+    IDirect3DSurface9Impl* surfaceParent;
+    TRACE("(%p) call back\n", pSurface);
+
+    IWineD3DSurface_GetParent(pSurface, (IUnknown **) &surfaceParent);
+    surfaceParent->isImplicit = FALSE;
+    /* Surface had refcount of 0 GetParent addrefed to 1, so 1 Release is enough */
+    return IDirect3DSurface9_Release((IDirect3DSurface9*) surfaceParent);
+}
+
+static HRESULT WINAPI D3D9CB_CreateAdditionalSwapChain(IUnknown *device,
+                                                       WINED3DPRESENT_PARAMETERS* pPresentationParameters,
+                                                       IWineD3DSwapChain ** ppSwapChain) {
+    HRESULT res = D3D_OK;
+    IDirect3DSwapChain9Impl *d3dSwapChain = NULL;
+    D3DPRESENT_PARAMETERS localParameters;
+    TRACE("(%p) call back\n", device);
+
+    /* Copy the presentation parameters */
+    localParameters.BackBufferWidth                     = pPresentationParameters->BackBufferWidth;
+    localParameters.BackBufferHeight                    = pPresentationParameters->BackBufferHeight;
+    localParameters.BackBufferFormat                    = pPresentationParameters->BackBufferFormat;
+    localParameters.BackBufferCount                     = pPresentationParameters->BackBufferCount;
+    localParameters.MultiSampleType                     = pPresentationParameters->MultiSampleType;
+    localParameters.MultiSampleQuality                  = pPresentationParameters->MultiSampleQuality;
+    localParameters.SwapEffect                          = pPresentationParameters->SwapEffect;
+    localParameters.hDeviceWindow                       = pPresentationParameters->hDeviceWindow;
+    localParameters.Windowed                            = pPresentationParameters->Windowed;
+    localParameters.EnableAutoDepthStencil              = pPresentationParameters->EnableAutoDepthStencil;
+    localParameters.AutoDepthStencilFormat              = pPresentationParameters->AutoDepthStencilFormat;
+    localParameters.Flags                               = pPresentationParameters->Flags;
+    localParameters.FullScreen_RefreshRateInHz          = pPresentationParameters->FullScreen_RefreshRateInHz;
+    localParameters.PresentationInterval                = pPresentationParameters->PresentationInterval;
+
+    res = IDirect3DDevice9_CreateAdditionalSwapChain((IDirect3DDevice9 *)device, &localParameters, (IDirect3DSwapChain9 **)&d3dSwapChain);
+
+    if (SUCCEEDED(res)) {
+        *ppSwapChain = d3dSwapChain->wineD3DSwapChain;
+        d3dSwapChain->isImplicit = TRUE;
+        /* Implicit swap chains are created with an refcount of 0 */
+        IDirect3DSwapChain9_Release((IDirect3DSwapChain9 *)d3dSwapChain);
+    } else {
+        *ppSwapChain = NULL;
+    }
+
+    /* Copy back the presentation parameters */
+    pPresentationParameters->BackBufferWidth            = localParameters.BackBufferWidth;
+    pPresentationParameters->BackBufferHeight           = localParameters.BackBufferHeight;
+    pPresentationParameters->BackBufferFormat           = localParameters.BackBufferFormat;
+    pPresentationParameters->BackBufferCount            = localParameters.BackBufferCount;
+    pPresentationParameters->MultiSampleType            = localParameters.MultiSampleType;
+    pPresentationParameters->MultiSampleQuality         = localParameters.MultiSampleQuality;
+    pPresentationParameters->SwapEffect                 = localParameters.SwapEffect;
+    pPresentationParameters->hDeviceWindow              = localParameters.hDeviceWindow;
+    pPresentationParameters->Windowed                   = localParameters.Windowed;
+    pPresentationParameters->EnableAutoDepthStencil     = localParameters.EnableAutoDepthStencil;
+    pPresentationParameters->AutoDepthStencilFormat     = localParameters.AutoDepthStencilFormat;
+    pPresentationParameters->Flags                      = localParameters.Flags;
+    pPresentationParameters->FullScreen_RefreshRateInHz = localParameters.FullScreen_RefreshRateInHz;
+    pPresentationParameters->PresentationInterval       = localParameters.PresentationInterval;
+
+    return res;
+}
+
+ULONG WINAPI D3D9CB_DestroySwapChain(IWineD3DSwapChain *pSwapChain) {
+    IDirect3DSwapChain9Impl* swapChainParent;
+    TRACE("(%p) call back\n", pSwapChain);
+
+    IWineD3DSwapChain_GetParent(pSwapChain,(IUnknown **) &swapChainParent);
+    swapChainParent->isImplicit = FALSE;
+    /* Swap chain had refcount of 0 GetParent addrefed to 1, so 1 Release is enough */
+    return IDirect3DSwapChain9_Release((IDirect3DSwapChain9*) swapChainParent);
+}
+
+/* Internal function called back during the CreateDevice to create a render target */
+HRESULT WINAPI D3D9CB_CreateDepthStencilSurface(IUnknown *device, IUnknown *pSuperior, UINT Width, UINT Height,
+                                         WINED3DFORMAT Format, WINED3DMULTISAMPLE_TYPE MultiSample,
+                                         DWORD MultisampleQuality, BOOL Discard,
+                                         IWineD3DSurface** ppSurface, HANDLE* pSharedHandle) {
+    HRESULT res = D3D_OK;
+    IDirect3DSurface9Impl *d3dSurface = NULL;
+    TRACE("(%p) call back\n", device);
+
+    res = IDirect3DDevice9_CreateDepthStencilSurface((IDirect3DDevice9 *)device, Width, Height, 
+                                         (D3DFORMAT)Format, MultiSample, MultisampleQuality, Discard, 
+                                         (IDirect3DSurface9 **)&d3dSurface, pSharedHandle);
+    if (SUCCEEDED(res)) {
+        *ppSurface = d3dSurface->wineD3DSurface;
+        d3dSurface->container = device;
+        d3dSurface->isImplicit = TRUE;
+        /* Implicit surfaces are created with an refcount of 0 */
+        IDirect3DSurface9_Release((IDirect3DSurface9 *)d3dSurface);
+    }
+    return res;
+}
+
+ULONG WINAPI D3D9CB_DestroyDepthStencilSurface(IWineD3DSurface *pSurface) {
+    IDirect3DSurface9Impl* surfaceParent;
+    TRACE("(%p) call back\n", pSurface);
+
+    IWineD3DSurface_GetParent(pSurface, (IUnknown **) &surfaceParent);
+    surfaceParent->isImplicit = FALSE;
+    /* Surface had refcount of 0 GetParent addrefed to 1, so 1 Release is enough */
+    return IDirect3DSurface9_Release((IDirect3DSurface9*) surfaceParent);
+}
+
+static HRESULT WINAPI IDirect3D9Impl_CreateDevice(LPDIRECT3D9EX iface, UINT Adapter, D3DDEVTYPE DeviceType,
+                                                  HWND hFocusWindow, DWORD BehaviourFlags,
+                                                  D3DPRESENT_PARAMETERS* pPresentationParameters,
+                                                  IDirect3DDevice9** ppReturnedDeviceInterface) {
+
+    IDirect3D9Impl       *This   = (IDirect3D9Impl *)iface;
+    IDirect3DDevice9Impl *object = NULL;
+    WINED3DPRESENT_PARAMETERS localParameters;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    /* Check the validity range of the adapter parameter */
+    if (Adapter >= IDirect3D9Impl_GetAdapterCount(iface)) {
+        *ppReturnedDeviceInterface = NULL;
+        return D3DERR_INVALIDCALL;
+    }
+
+    /* Allocate the storage for the device object */
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DDevice9Impl));
+    if (NULL == object) {
+        FIXME("Allocation of memory failed\n");
+        *ppReturnedDeviceInterface = NULL;
+        return D3DERR_OUTOFVIDEOMEMORY;
+    }
+
+    object->lpVtbl = &Direct3DDevice9_Vtbl;
+    object->ref = 1;
+    *ppReturnedDeviceInterface = (IDirect3DDevice9 *)object;
+
+    /* Allocate an associated WineD3DDevice object */
+    EnterCriticalSection(&d3d9_cs);
+    hr =IWineD3D_CreateDevice(This->WineD3D, Adapter, DeviceType, hFocusWindow, BehaviourFlags, &object->WineD3DDevice, (IUnknown *)object);
+
+    if (hr != D3D_OK) {
+        HeapFree(GetProcessHeap(), 0, object);
+        *ppReturnedDeviceInterface = NULL;
+        LeaveCriticalSection(&d3d9_cs);
+        return hr;
+    }
+
+    TRACE("(%p) : Created Device %p\n", This, object);
+
+    localParameters.BackBufferWidth                     = pPresentationParameters->BackBufferWidth;
+    localParameters.BackBufferHeight                    = pPresentationParameters->BackBufferHeight;
+    localParameters.BackBufferFormat                    = pPresentationParameters->BackBufferFormat;
+    localParameters.BackBufferCount                     = pPresentationParameters->BackBufferCount;
+    localParameters.MultiSampleType                     = pPresentationParameters->MultiSampleType;
+    localParameters.MultiSampleQuality                  = pPresentationParameters->MultiSampleQuality;
+    localParameters.SwapEffect                          = pPresentationParameters->SwapEffect;
+    localParameters.hDeviceWindow                       = pPresentationParameters->hDeviceWindow;
+    localParameters.Windowed                            = pPresentationParameters->Windowed;
+    localParameters.EnableAutoDepthStencil              = pPresentationParameters->EnableAutoDepthStencil;
+    localParameters.AutoDepthStencilFormat              = pPresentationParameters->AutoDepthStencilFormat;
+    localParameters.Flags                               = pPresentationParameters->Flags;
+    localParameters.FullScreen_RefreshRateInHz          = pPresentationParameters->FullScreen_RefreshRateInHz;
+    localParameters.PresentationInterval                = pPresentationParameters->PresentationInterval;
+    localParameters.AutoRestoreDisplayMode              = TRUE;
+
+    if(BehaviourFlags & D3DCREATE_MULTITHREADED) {
+        IWineD3DDevice_SetMultithreaded(object->WineD3DDevice);
+    }
+
+    hr = IWineD3DDevice_Init3D(object->WineD3DDevice, &localParameters, D3D9CB_CreateAdditionalSwapChain);
+
+    pPresentationParameters->BackBufferWidth            = localParameters.BackBufferWidth;
+    pPresentationParameters->BackBufferHeight           = localParameters.BackBufferHeight;
+    pPresentationParameters->BackBufferFormat           = localParameters.BackBufferFormat;
+    pPresentationParameters->BackBufferCount            = localParameters.BackBufferCount;
+    pPresentationParameters->MultiSampleType            = localParameters.MultiSampleType;
+    pPresentationParameters->MultiSampleQuality         = localParameters.MultiSampleQuality;
+    pPresentationParameters->SwapEffect                 = localParameters.SwapEffect;
+    pPresentationParameters->hDeviceWindow              = localParameters.hDeviceWindow;
+    pPresentationParameters->Windowed                   = localParameters.Windowed;
+    pPresentationParameters->EnableAutoDepthStencil     = localParameters.EnableAutoDepthStencil;
+    pPresentationParameters->AutoDepthStencilFormat     = localParameters.AutoDepthStencilFormat;
+    pPresentationParameters->Flags                      = localParameters.Flags;
+    pPresentationParameters->FullScreen_RefreshRateInHz = localParameters.FullScreen_RefreshRateInHz;
+    pPresentationParameters->PresentationInterval       = localParameters.PresentationInterval;
+
+    if (hr != D3D_OK) {
+        FIXME("(%p) D3D Initialization failed for WineD3DDevice %p\n", This, object->WineD3DDevice);
+        HeapFree(GetProcessHeap(), 0, object);
+        *ppReturnedDeviceInterface = NULL;
+    }
+
+    /* Initialize the converted declaration array. This creates a valid pointer and when adding decls HeapReAlloc
+     * can be used without further checking
+     */
+    object->convertedDecls = HeapAlloc(GetProcessHeap(), 0, 0);
+    LeaveCriticalSection(&d3d9_cs);
+
+    return hr;
+}
+
+static UINT WINAPI IDirect3D9ExImpl_GetAdapterModeCountEx(IDirect3D9Ex *iface, UINT Adapter, CONST D3DDISPLAYMODEFILTER *pFilter) {
+    IDirect3D9Impl *This = (IDirect3D9Impl *)iface;
+    FIXME("(%p)->(%d, %p): Stub!\n", This, Adapter, pFilter);
+    return D3DERR_DRIVERINTERNALERROR;
+}
+
+static HRESULT WINAPI IDirect3D9ExImpl_EnumAdapterModesEx(IDirect3D9Ex *iface, UINT Adapter, CONST D3DDISPLAYMODEFILTER *pFilter, UINT Mode, D3DDISPLAYMODEEX* pMode) {
+    IDirect3D9Impl *This = (IDirect3D9Impl *)iface;
+    FIXME("(%p)->(%d, %p, %p): Stub!\n", This, Adapter, pFilter, pMode);
+    return D3DERR_DRIVERINTERNALERROR;
+}
+
+static HRESULT WINAPI IDirect3D9ExImpl_GetAdapterDisplayModeEx(IDirect3D9Ex *iface, UINT Adapter, D3DDISPLAYMODEEX *pMode, D3DDISPLAYROTATION *pRotation) {
+    IDirect3D9Impl *This = (IDirect3D9Impl *)iface;
+    FIXME("(%p)->(%d, %p, %p): Stub!\n", This, Adapter, pMode, pRotation);
+    return D3DERR_DRIVERINTERNALERROR;
+}
+
+static HRESULT WINAPI IDirect3D9ExImpl_CreateDeviceEx(IDirect3D9Ex *iface, UINT Adapter, D3DDEVTYPE DeviceType, HWND hFocusWindow, DWORD BehaviorFlags, D3DPRESENT_PARAMETERS* pPresentationParameters, D3DDISPLAYMODEEX* pFullscreenDisplayMode, struct IDirect3DDevice9Ex **ppReturnedDeviceInterface) {
+    IDirect3D9Impl *This = (IDirect3D9Impl *)iface;
+    FIXME("(%p)->(%d, %d, %p, 0x%08x, %p, %p, %p): Stub!\n", This, Adapter, DeviceType, hFocusWindow, BehaviorFlags, pPresentationParameters, pFullscreenDisplayMode, ppReturnedDeviceInterface);
+    *ppReturnedDeviceInterface = NULL;
+    return D3DERR_DRIVERINTERNALERROR;
+}
+
+static HRESULT WINAPI IDirect3D9ExImpl_GetAdapterLUID(IDirect3D9Ex *iface, UINT Adapter, LUID *pLUID) {
+    IDirect3D9Impl *This = (IDirect3D9Impl *)iface;
+    FIXME("(%p)->(%d, %p)\n", This, Adapter, pLUID);
+    return D3DERR_DRIVERINTERNALERROR;
+}
+
+
+const IDirect3D9ExVtbl Direct3D9_Vtbl =
+{
+    /* IUnknown */
+    IDirect3D9Impl_QueryInterface,
+    IDirect3D9Impl_AddRef,
+    IDirect3D9Impl_Release,
+    /* IDirect3D9 */
+    IDirect3D9Impl_RegisterSoftwareDevice,
+    IDirect3D9Impl_GetAdapterCount,
+    IDirect3D9Impl_GetAdapterIdentifier,
+    IDirect3D9Impl_GetAdapterModeCount,
+    IDirect3D9Impl_EnumAdapterModes,
+    IDirect3D9Impl_GetAdapterDisplayMode,
+    IDirect3D9Impl_CheckDeviceType,
+    IDirect3D9Impl_CheckDeviceFormat,
+    IDirect3D9Impl_CheckDeviceMultiSampleType,
+    IDirect3D9Impl_CheckDepthStencilMatch,
+    IDirect3D9Impl_CheckDeviceFormatConversion,
+    IDirect3D9Impl_GetDeviceCaps,
+    IDirect3D9Impl_GetAdapterMonitor,
+    IDirect3D9Impl_CreateDevice,
+    /* IDirect3D9Ex */
+    IDirect3D9ExImpl_GetAdapterModeCountEx,
+    IDirect3D9ExImpl_EnumAdapterModesEx,
+    IDirect3D9ExImpl_GetAdapterDisplayModeEx,
+    IDirect3D9ExImpl_CreateDeviceEx,
+    IDirect3D9ExImpl_GetAdapterLUID
+
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/indexbuffer.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/indexbuffer.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/indexbuffer.c	(revision 16410)
@@ -0,0 +1,246 @@
+/*
+ * IDirect3DIndexBuffer9 implementation
+ *
+ * Copyright 2002-2004 Jason Edmeades
+ *                     Raphael Junqueira
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d9_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d9);
+
+/* IDirect3DIndexBuffer9 IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DIndexBuffer9Impl_QueryInterface(LPDIRECT3DINDEXBUFFER9 iface, REFIID riid, LPVOID* ppobj) {
+    IDirect3DIndexBuffer9Impl *This = (IDirect3DIndexBuffer9Impl *)iface;
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DResource9)
+        || IsEqualGUID(riid, &IID_IDirect3DIndexBuffer9)) {
+        IDirect3DIndexBuffer9_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DIndexBuffer9Impl_AddRef(LPDIRECT3DINDEXBUFFER9 iface) {
+    IDirect3DIndexBuffer9Impl *This = (IDirect3DIndexBuffer9Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+    return ref;
+}
+
+static ULONG WINAPI IDirect3DIndexBuffer9Impl_Release(LPDIRECT3DINDEXBUFFER9 iface) {
+    IDirect3DIndexBuffer9Impl *This = (IDirect3DIndexBuffer9Impl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+        EnterCriticalSection(&d3d9_cs);
+        IWineD3DIndexBuffer_Release(This->wineD3DIndexBuffer);
+        LeaveCriticalSection(&d3d9_cs);
+        IDirect3DDevice9Ex_Release(This->parentDevice);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+    return ref;
+}
+
+/* IDirect3DIndexBuffer9 IDirect3DResource9 Interface follow: */
+static HRESULT WINAPI IDirect3DIndexBuffer9Impl_GetDevice(LPDIRECT3DINDEXBUFFER9 iface, IDirect3DDevice9** ppDevice) {
+    IDirect3DIndexBuffer9Impl *This = (IDirect3DIndexBuffer9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IDirect3DResource9Impl_GetDevice((LPDIRECT3DRESOURCE9) This, ppDevice);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DIndexBuffer9Impl_SetPrivateData(LPDIRECT3DINDEXBUFFER9 iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) {
+    IDirect3DIndexBuffer9Impl *This = (IDirect3DIndexBuffer9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DIndexBuffer_SetPrivateData(This->wineD3DIndexBuffer, refguid, pData, SizeOfData, Flags);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DIndexBuffer9Impl_GetPrivateData(LPDIRECT3DINDEXBUFFER9 iface, REFGUID refguid, void* pData, DWORD* pSizeOfData) {
+    IDirect3DIndexBuffer9Impl *This = (IDirect3DIndexBuffer9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DIndexBuffer_GetPrivateData(This->wineD3DIndexBuffer, refguid, pData, pSizeOfData);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DIndexBuffer9Impl_FreePrivateData(LPDIRECT3DINDEXBUFFER9 iface, REFGUID refguid) {
+    IDirect3DIndexBuffer9Impl *This = (IDirect3DIndexBuffer9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DIndexBuffer_FreePrivateData(This->wineD3DIndexBuffer, refguid);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static DWORD WINAPI IDirect3DIndexBuffer9Impl_SetPriority(LPDIRECT3DINDEXBUFFER9 iface, DWORD PriorityNew) {
+    IDirect3DIndexBuffer9Impl *This = (IDirect3DIndexBuffer9Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    ret = IWineD3DIndexBuffer_SetPriority(This->wineD3DIndexBuffer, PriorityNew);
+    LeaveCriticalSection(&d3d9_cs);
+    return ret;
+}
+
+static DWORD WINAPI IDirect3DIndexBuffer9Impl_GetPriority(LPDIRECT3DINDEXBUFFER9 iface) {
+    IDirect3DIndexBuffer9Impl *This = (IDirect3DIndexBuffer9Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    ret = IWineD3DIndexBuffer_GetPriority(This->wineD3DIndexBuffer);
+    LeaveCriticalSection(&d3d9_cs);
+    return ret;
+}
+
+static void WINAPI IDirect3DIndexBuffer9Impl_PreLoad(LPDIRECT3DINDEXBUFFER9 iface) {
+    IDirect3DIndexBuffer9Impl *This = (IDirect3DIndexBuffer9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    IWineD3DIndexBuffer_PreLoad(This->wineD3DIndexBuffer);
+    LeaveCriticalSection(&d3d9_cs);
+}
+
+static D3DRESOURCETYPE WINAPI IDirect3DIndexBuffer9Impl_GetType(LPDIRECT3DINDEXBUFFER9 iface) {
+    IDirect3DIndexBuffer9Impl *This = (IDirect3DIndexBuffer9Impl *)iface;
+    D3DRESOURCETYPE ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    ret = IWineD3DIndexBuffer_GetType(This->wineD3DIndexBuffer);
+    LeaveCriticalSection(&d3d9_cs);
+    return ret;
+}
+
+/* IDirect3DIndexBuffer9 Interface follow: */
+static HRESULT WINAPI IDirect3DIndexBuffer9Impl_Lock(LPDIRECT3DINDEXBUFFER9 iface, UINT OffsetToLock, UINT SizeToLock, void** ppbData, DWORD Flags) {
+    IDirect3DIndexBuffer9Impl *This = (IDirect3DIndexBuffer9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DIndexBuffer_Lock(This->wineD3DIndexBuffer, OffsetToLock, SizeToLock, (BYTE **)ppbData, Flags);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DIndexBuffer9Impl_Unlock(LPDIRECT3DINDEXBUFFER9 iface) {
+    IDirect3DIndexBuffer9Impl *This = (IDirect3DIndexBuffer9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DIndexBuffer_Unlock(This->wineD3DIndexBuffer);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT  WINAPI        IDirect3DIndexBuffer9Impl_GetDesc(LPDIRECT3DINDEXBUFFER9 iface, D3DINDEXBUFFER_DESC *pDesc) {
+    IDirect3DIndexBuffer9Impl *This = (IDirect3DIndexBuffer9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DIndexBuffer_GetDesc(This->wineD3DIndexBuffer, (WINED3DINDEXBUFFER_DESC *) pDesc);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+
+static const IDirect3DIndexBuffer9Vtbl Direct3DIndexBuffer9_Vtbl =
+{
+    /* IUnknown */
+    IDirect3DIndexBuffer9Impl_QueryInterface,
+    IDirect3DIndexBuffer9Impl_AddRef,
+    IDirect3DIndexBuffer9Impl_Release,
+    /* IDirect3DResource9 */
+    IDirect3DIndexBuffer9Impl_GetDevice,
+    IDirect3DIndexBuffer9Impl_SetPrivateData,
+    IDirect3DIndexBuffer9Impl_GetPrivateData,
+    IDirect3DIndexBuffer9Impl_FreePrivateData,
+    IDirect3DIndexBuffer9Impl_SetPriority,
+    IDirect3DIndexBuffer9Impl_GetPriority,
+    IDirect3DIndexBuffer9Impl_PreLoad,
+    IDirect3DIndexBuffer9Impl_GetType,
+    /* IDirect3DIndexBuffer9 */
+    IDirect3DIndexBuffer9Impl_Lock,
+    IDirect3DIndexBuffer9Impl_Unlock,
+    IDirect3DIndexBuffer9Impl_GetDesc
+};
+
+
+/* IDirect3DDevice9 IDirect3DIndexBuffer9 Methods follow: */
+HRESULT WINAPI IDirect3DDevice9Impl_CreateIndexBuffer(LPDIRECT3DDEVICE9EX iface,
+                              UINT Length, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool,
+                              IDirect3DIndexBuffer9** ppIndexBuffer, HANDLE* pSharedHandle) {
+    
+    IDirect3DIndexBuffer9Impl *object;
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hrc = D3D_OK;
+    
+    TRACE("(%p) Relay\n", This);
+    /* Allocate the storage for the device */
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object));
+    if (NULL == object) {
+        FIXME("Allocation of memory failed, returning D3DERR_OUTOFVIDEOMEMORY\n");
+        return D3DERR_OUTOFVIDEOMEMORY;
+    }
+
+    object->lpVtbl = &Direct3DIndexBuffer9_Vtbl;
+    object->ref = 1;
+    TRACE("Calling wined3d create index buffer\n");
+    hrc = IWineD3DDevice_CreateIndexBuffer(This->WineD3DDevice, Length, Usage & WINED3DUSAGE_MASK, Format, (WINED3DPOOL) Pool, &object->wineD3DIndexBuffer, pSharedHandle, (IUnknown *)object);
+    if (hrc != D3D_OK) {
+
+        /* free up object */
+        FIXME("(%p) call to IWineD3DDevice_CreateIndexBuffer failed\n", This);
+        HeapFree(GetProcessHeap(), 0, object);
+    } else {
+        IDirect3DDevice9Ex_AddRef(iface);
+        object->parentDevice = iface;
+        *ppIndexBuffer = (LPDIRECT3DINDEXBUFFER9) object;
+        TRACE("(%p) : Created index buffer %p\n", This, object);
+    }
+    return hrc;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/pixelshader.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/pixelshader.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/pixelshader.c	(revision 16410)
@@ -0,0 +1,244 @@
+/*
+ * IDirect3DPixelShader9 implementation
+ *
+ * Copyright 2002-2003 Jason Edmeades
+ *                     Raphael Junqueira
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d9_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d9);
+
+/* IDirect3DPixelShader9 IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DPixelShader9Impl_QueryInterface(LPDIRECT3DPIXELSHADER9 iface, REFIID riid, LPVOID* ppobj) {
+    IDirect3DPixelShader9Impl *This = (IDirect3DPixelShader9Impl *)iface;
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DPixelShader9)) {
+        IDirect3DPixelShader9_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DPixelShader9Impl_AddRef(LPDIRECT3DPIXELSHADER9 iface) {
+    IDirect3DPixelShader9Impl *This = (IDirect3DPixelShader9Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+    return ref;
+}
+
+static ULONG WINAPI IDirect3DPixelShader9Impl_Release(LPDIRECT3DPIXELSHADER9 iface) {
+    IDirect3DPixelShader9Impl *This = (IDirect3DPixelShader9Impl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+        EnterCriticalSection(&d3d9_cs);
+        IWineD3DPixelShader_Release(This->wineD3DPixelShader);
+        LeaveCriticalSection(&d3d9_cs);
+        IDirect3DDevice9Ex_Release(This->parentDevice);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+    return ref;
+}
+
+/* IDirect3DPixelShader9 Interface follow: */
+static HRESULT WINAPI IDirect3DPixelShader9Impl_GetDevice(LPDIRECT3DPIXELSHADER9 iface, IDirect3DDevice9** ppDevice) {
+    IDirect3DPixelShader9Impl *This = (IDirect3DPixelShader9Impl *)iface;
+    IWineD3DDevice *myDevice = NULL;
+
+    TRACE("(%p) : Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    IWineD3DPixelShader_GetDevice(This->wineD3DPixelShader, &myDevice);
+    IWineD3DDevice_GetParent(myDevice, (IUnknown **)ppDevice);
+    IWineD3DDevice_Release(myDevice);
+    LeaveCriticalSection(&d3d9_cs);
+    TRACE("(%p) returning (%p)\n", This, *ppDevice);
+    return D3D_OK;
+}
+
+static HRESULT WINAPI IDirect3DPixelShader9Impl_GetFunction(LPDIRECT3DPIXELSHADER9 iface, VOID* pData, UINT* pSizeOfData) {
+    IDirect3DPixelShader9Impl *This = (IDirect3DPixelShader9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DPixelShader_GetFunction(This->wineD3DPixelShader, pData, pSizeOfData);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+
+static const IDirect3DPixelShader9Vtbl Direct3DPixelShader9_Vtbl =
+{
+    /* IUnknown */
+    IDirect3DPixelShader9Impl_QueryInterface,
+    IDirect3DPixelShader9Impl_AddRef,
+    IDirect3DPixelShader9Impl_Release,
+    /* IDirect3DPixelShader9 */
+    IDirect3DPixelShader9Impl_GetDevice,
+    IDirect3DPixelShader9Impl_GetFunction
+};
+
+
+/* IDirect3DDevice9 IDirect3DPixelShader9 Methods follow:  */
+HRESULT WINAPI IDirect3DDevice9Impl_CreatePixelShader(LPDIRECT3DDEVICE9EX iface, CONST DWORD* pFunction, IDirect3DPixelShader9** ppShader) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    IDirect3DPixelShader9Impl *object;
+    HRESULT hrc = D3D_OK;
+
+    TRACE("(%p) Relay\n", This);
+
+    if (ppShader == NULL) {
+        TRACE("(%p) Invalid call\n", This);
+        return D3DERR_INVALIDCALL;
+    }
+
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object));
+
+    if (NULL == object) {
+        FIXME("Allocation of memory failed, returning D3DERR_OUTOFVIDEOMEMORY\n");
+        return E_OUTOFMEMORY;
+    }
+
+    object->ref    = 1;
+    object->lpVtbl = &Direct3DPixelShader9_Vtbl;
+    EnterCriticalSection(&d3d9_cs);
+    hrc = IWineD3DDevice_CreatePixelShader(This->WineD3DDevice, pFunction, &object->wineD3DPixelShader , (IUnknown *)object);
+    LeaveCriticalSection(&d3d9_cs);
+    if (hrc != D3D_OK) {
+
+        /* free up object */
+        FIXME("(%p) call to IWineD3DDevice_CreatePixelShader failed\n", This);
+        HeapFree(GetProcessHeap(), 0 , object);
+    } else {
+        IDirect3DDevice9Ex_AddRef(iface);
+        object->parentDevice = iface;
+        *ppShader = (IDirect3DPixelShader9*) object;
+        TRACE("(%p) : Created pixel shader %p\n", This, object);
+    }
+
+    TRACE("(%p) : returning %p\n", This, *ppShader);
+    return hrc;
+}
+
+HRESULT WINAPI IDirect3DDevice9Impl_SetPixelShader(LPDIRECT3DDEVICE9EX iface, IDirect3DPixelShader9* pShader) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    IDirect3DPixelShader9Impl *shader = (IDirect3DPixelShader9Impl *)pShader;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    IWineD3DDevice_SetPixelShader(This->WineD3DDevice, shader == NULL ? NULL :shader->wineD3DPixelShader);
+    LeaveCriticalSection(&d3d9_cs);
+    return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Impl_GetPixelShader(LPDIRECT3DDEVICE9EX iface, IDirect3DPixelShader9** ppShader) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    IWineD3DPixelShader *object;
+
+    HRESULT hrc = D3D_OK;
+    TRACE("(%p) Relay\n", This);
+    if (ppShader == NULL) {
+        TRACE("(%p) Invalid call\n", This);
+        return D3DERR_INVALIDCALL;
+    }
+
+    EnterCriticalSection(&d3d9_cs);
+    hrc = IWineD3DDevice_GetPixelShader(This->WineD3DDevice, &object);
+    if (hrc == D3D_OK && object != NULL) {
+       hrc = IWineD3DPixelShader_GetParent(object, (IUnknown **)ppShader);
+       IWineD3DPixelShader_Release(object);
+    } else {
+        *ppShader = NULL;
+    }
+    LeaveCriticalSection(&d3d9_cs);
+
+    TRACE("(%p) : returning %p\n", This, *ppShader);
+    return hrc;
+}
+
+HRESULT WINAPI IDirect3DDevice9Impl_SetPixelShaderConstantF(LPDIRECT3DDEVICE9EX iface, UINT Register, CONST float* pConstantData, UINT Vector4fCount) {
+   IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);   
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetPixelShaderConstantF(This->WineD3DDevice, Register, pConstantData, Vector4fCount);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+HRESULT WINAPI IDirect3DDevice9Impl_GetPixelShaderConstantF(LPDIRECT3DDEVICE9EX iface, UINT Register, float* pConstantData, UINT Vector4fCount) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DDevice_GetPixelShaderConstantF(This->WineD3DDevice, Register, pConstantData, Vector4fCount);
+}
+
+HRESULT WINAPI IDirect3DDevice9Impl_SetPixelShaderConstantI(LPDIRECT3DDEVICE9EX iface, UINT Register, CONST int* pConstantData, UINT Vector4iCount) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetPixelShaderConstantI(This->WineD3DDevice, Register, pConstantData, Vector4iCount);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+HRESULT WINAPI IDirect3DDevice9Impl_GetPixelShaderConstantI(LPDIRECT3DDEVICE9EX iface, UINT Register, int* pConstantData, UINT Vector4iCount) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_GetPixelShaderConstantI(This->WineD3DDevice, Register, pConstantData, Vector4iCount);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+HRESULT WINAPI IDirect3DDevice9Impl_SetPixelShaderConstantB(LPDIRECT3DDEVICE9EX iface, UINT Register, CONST BOOL* pConstantData, UINT BoolCount) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetPixelShaderConstantB(This->WineD3DDevice, Register, pConstantData, BoolCount);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+HRESULT WINAPI IDirect3DDevice9Impl_GetPixelShaderConstantB(LPDIRECT3DDEVICE9EX iface, UINT Register, BOOL* pConstantData, UINT BoolCount) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_GetPixelShaderConstantB(This->WineD3DDevice, Register, pConstantData, BoolCount);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/query.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/query.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/query.c	(revision 16410)
@@ -0,0 +1,189 @@
+/*
+ * IDirect3DQuery9 implementation
+ *
+ * Copyright 2002-2003 Raphael Junqueira
+ * Copyright 2002-2003 Jason Edmeades
+ * Copyright 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d9_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d9);
+
+/* IDirect3DQuery9 IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DQuery9Impl_QueryInterface(LPDIRECT3DQUERY9 iface, REFIID riid, LPVOID* ppobj) {
+    IDirect3DQuery9Impl *This = (IDirect3DQuery9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DQuery9)) {
+        IDirect3DQuery9_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DQuery9Impl_AddRef(LPDIRECT3DQUERY9 iface) {
+    IDirect3DQuery9Impl *This = (IDirect3DQuery9Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+    return ref;
+}
+
+static ULONG WINAPI IDirect3DQuery9Impl_Release(LPDIRECT3DQUERY9 iface) {
+    IDirect3DQuery9Impl *This = (IDirect3DQuery9Impl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+        EnterCriticalSection(&d3d9_cs);
+        IWineD3DQuery_Release(This->wineD3DQuery);
+        LeaveCriticalSection(&d3d9_cs);
+        IDirect3DDevice9Ex_Release(This->parentDevice);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+    return ref;
+}
+
+/* IDirect3DQuery9 Interface follow: */
+static HRESULT WINAPI IDirect3DQuery9Impl_GetDevice(LPDIRECT3DQUERY9 iface, IDirect3DDevice9** ppDevice) {
+    IDirect3DQuery9Impl *This = (IDirect3DQuery9Impl *)iface;
+    IWineD3DDevice* pDevice;
+    HRESULT hr;
+
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DQuery_GetDevice(This->wineD3DQuery, &pDevice);
+    if(hr != D3D_OK){
+        *ppDevice = NULL;
+    }else{
+        hr = IWineD3DDevice_GetParent(pDevice, (IUnknown **)ppDevice);
+        IWineD3DDevice_Release(pDevice);
+    }
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static D3DQUERYTYPE WINAPI IDirect3DQuery9Impl_GetType(LPDIRECT3DQUERY9 iface) {
+    IDirect3DQuery9Impl *This = (IDirect3DQuery9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DQuery_GetType(This->wineD3DQuery);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static DWORD WINAPI IDirect3DQuery9Impl_GetDataSize(LPDIRECT3DQUERY9 iface) {
+    IDirect3DQuery9Impl *This = (IDirect3DQuery9Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    ret = IWineD3DQuery_GetDataSize(This->wineD3DQuery);
+    LeaveCriticalSection(&d3d9_cs);
+    return ret;
+}
+
+static HRESULT WINAPI IDirect3DQuery9Impl_Issue(LPDIRECT3DQUERY9 iface, DWORD dwIssueFlags) {
+    IDirect3DQuery9Impl *This = (IDirect3DQuery9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DQuery_Issue(This->wineD3DQuery, dwIssueFlags);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DQuery9Impl_GetData(LPDIRECT3DQUERY9 iface, void* pData, DWORD dwSize, DWORD dwGetDataFlags) {
+    IDirect3DQuery9Impl *This = (IDirect3DQuery9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DQuery_GetData(This->wineD3DQuery, pData, dwSize, dwGetDataFlags);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+
+static const IDirect3DQuery9Vtbl Direct3DQuery9_Vtbl =
+{
+    IDirect3DQuery9Impl_QueryInterface,
+    IDirect3DQuery9Impl_AddRef,
+    IDirect3DQuery9Impl_Release,
+    IDirect3DQuery9Impl_GetDevice,
+    IDirect3DQuery9Impl_GetType,
+    IDirect3DQuery9Impl_GetDataSize,
+    IDirect3DQuery9Impl_Issue,
+    IDirect3DQuery9Impl_GetData
+};
+
+
+/* IDirect3DDevice9 IDirect3DQuery9 Methods follow: */
+HRESULT WINAPI IDirect3DDevice9Impl_CreateQuery(LPDIRECT3DDEVICE9EX iface, D3DQUERYTYPE Type, IDirect3DQuery9** ppQuery) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    IDirect3DQuery9Impl *object = NULL;
+    HRESULT hr = D3D_OK;
+
+    TRACE("(%p) Relay\n", This);
+
+    if (!ppQuery)
+    {
+        EnterCriticalSection(&d3d9_cs);
+        hr = IWineD3DDevice_CreateQuery(This->WineD3DDevice, Type, NULL, NULL);
+        LeaveCriticalSection(&d3d9_cs);
+        return hr;
+    }
+
+    /* Allocate the storage for the device */
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DQuery9Impl));
+    if (NULL == object) {
+        FIXME("Allocation of memory failed, returning D3DERR_OUTOFVIDEOMEMORY\n");
+        return D3DERR_OUTOFVIDEOMEMORY;
+    }
+
+    object->lpVtbl = &Direct3DQuery9_Vtbl;
+    object->ref = 1;
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_CreateQuery(This->WineD3DDevice, Type, &object->wineD3DQuery, (IUnknown *)object);
+    LeaveCriticalSection(&d3d9_cs);
+
+    if (FAILED(hr)) {
+
+        /* free up object */
+        FIXME("(%p) call to IWineD3DDevice_CreateQuery failed\n", This);
+        HeapFree(GetProcessHeap(), 0, object);
+    } else {
+        IDirect3DDevice9Ex_AddRef(iface);
+        object->parentDevice = iface;
+        *ppQuery = (LPDIRECT3DQUERY9) object;
+        TRACE("(%p) : Created query %p\n", This , object);
+    }
+    TRACE("(%p) : returning %x\n", This, hr);
+    return hr;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/resource.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/resource.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/resource.c	(revision 16410)
@@ -0,0 +1,135 @@
+/*
+ * IDirect3DResource9 implementation
+ *
+ * Copyright 2002-2004 Jason Edmeades
+ *                     Raphael Junqueira
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d9_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d9);
+
+/* IDirect3DResource9 IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DResource9Impl_QueryInterface(LPDIRECT3DRESOURCE9 iface, REFIID riid, LPVOID* ppobj) {
+    IDirect3DResource9Impl *This = (IDirect3DResource9Impl *)iface;
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DResource9)) {
+        IDirect3DResource9_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DResource9Impl_AddRef(LPDIRECT3DRESOURCE9 iface) {
+    IDirect3DResource9Impl *This = (IDirect3DResource9Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+    return ref;
+}
+
+static ULONG WINAPI IDirect3DResource9Impl_Release(LPDIRECT3DRESOURCE9 iface) {
+    IDirect3DResource9Impl *This = (IDirect3DResource9Impl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+        IWineD3DResource_Release(This->wineD3DResource);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+    return ref;
+}
+
+/* IDirect3DResource9 Interface follow: */
+HRESULT WINAPI IDirect3DResource9Impl_GetDevice(LPDIRECT3DRESOURCE9 iface, IDirect3DDevice9** ppDevice) {
+    IDirect3DResource9Impl *This = (IDirect3DResource9Impl *)iface;
+    IWineD3DDevice *myDevice = NULL;
+
+    TRACE("(%p) Relay\n", This);
+
+    IWineD3DResource_GetDevice(This->wineD3DResource, &myDevice);
+    IWineD3DDevice_GetParent(myDevice, (IUnknown **)ppDevice);
+    IWineD3DDevice_Release(myDevice);
+    return D3D_OK;
+}
+
+static HRESULT WINAPI IDirect3DResource9Impl_SetPrivateData(LPDIRECT3DRESOURCE9 iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) {
+    IDirect3DResource9Impl *This = (IDirect3DResource9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DResource_SetPrivateData(This->wineD3DResource, refguid, pData, SizeOfData, Flags);
+}
+
+static HRESULT WINAPI IDirect3DResource9Impl_GetPrivateData(LPDIRECT3DRESOURCE9 iface, REFGUID refguid, void* pData, DWORD* pSizeOfData) {
+    IDirect3DResource9Impl *This = (IDirect3DResource9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DResource_GetPrivateData(This->wineD3DResource, refguid, pData, pSizeOfData);
+}
+
+static HRESULT WINAPI IDirect3DResource9Impl_FreePrivateData(LPDIRECT3DRESOURCE9 iface, REFGUID refguid) {
+    IDirect3DResource9Impl *This = (IDirect3DResource9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DResource_FreePrivateData(This->wineD3DResource, refguid);
+}
+
+static DWORD  WINAPI IDirect3DResource9Impl_SetPriority(LPDIRECT3DRESOURCE9 iface, DWORD PriorityNew) {
+    IDirect3DResource9Impl *This = (IDirect3DResource9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DResource_SetPriority(This->wineD3DResource, PriorityNew);
+}
+
+static DWORD WINAPI IDirect3DResource9Impl_GetPriority(LPDIRECT3DRESOURCE9 iface) {
+    IDirect3DResource9Impl *This = (IDirect3DResource9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DResource_GetPriority(This->wineD3DResource);
+}
+
+static void WINAPI IDirect3DResource9Impl_PreLoad(LPDIRECT3DRESOURCE9 iface) {
+    IDirect3DResource9Impl *This = (IDirect3DResource9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    IWineD3DResource_PreLoad(This->wineD3DResource);
+    return;
+}
+
+static D3DRESOURCETYPE WINAPI IDirect3DResource9Impl_GetType(LPDIRECT3DRESOURCE9 iface) {
+    IDirect3DResource9Impl *This = (IDirect3DResource9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DResource_GetType(This->wineD3DResource);
+}
+
+
+const IDirect3DResource9Vtbl Direct3DResource9_Vtbl =
+{
+    IDirect3DResource9Impl_QueryInterface,
+    IDirect3DResource9Impl_AddRef,
+    IDirect3DResource9Impl_Release,
+    IDirect3DResource9Impl_GetDevice,
+    IDirect3DResource9Impl_SetPrivateData,
+    IDirect3DResource9Impl_GetPrivateData,
+    IDirect3DResource9Impl_FreePrivateData,
+    IDirect3DResource9Impl_SetPriority,
+    IDirect3DResource9Impl_GetPriority,
+    IDirect3DResource9Impl_PreLoad,
+    IDirect3DResource9Impl_GetType
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/stateblock.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/stateblock.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/stateblock.c	(revision 16410)
@@ -0,0 +1,193 @@
+/*
+ * IDirect3DStateBlock9 implementation
+ *
+ * Copyright 2002-2003 Raphael Junqueira
+ * Copyright 2002-2003 Jason Edmeades
+ * Copyright 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d9_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d9);
+
+/* IDirect3DStateBlock9 IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DStateBlock9Impl_QueryInterface(LPDIRECT3DSTATEBLOCK9 iface, REFIID riid, LPVOID* ppobj) {
+    IDirect3DStateBlock9Impl *This = (IDirect3DStateBlock9Impl *)iface;
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DStateBlock9)) {
+        IDirect3DStateBlock9_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DStateBlock9Impl_AddRef(LPDIRECT3DSTATEBLOCK9 iface) {
+    IDirect3DStateBlock9Impl *This = (IDirect3DStateBlock9Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+    return ref;
+}
+
+static ULONG WINAPI IDirect3DStateBlock9Impl_Release(LPDIRECT3DSTATEBLOCK9 iface) {
+    IDirect3DStateBlock9Impl *This = (IDirect3DStateBlock9Impl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+        EnterCriticalSection(&d3d9_cs);
+        IWineD3DStateBlock_Release(This->wineD3DStateBlock);
+        LeaveCriticalSection(&d3d9_cs);
+        IDirect3DDevice9Ex_Release(This->parentDevice);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+    return ref;
+}
+
+/* IDirect3DStateBlock9 Interface follow: */
+static HRESULT WINAPI IDirect3DStateBlock9Impl_GetDevice(LPDIRECT3DSTATEBLOCK9 iface, IDirect3DDevice9** ppDevice) {
+    IDirect3DStateBlock9Impl *This = (IDirect3DStateBlock9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IDirect3DResource9Impl_GetDevice((LPDIRECT3DRESOURCE9) This, ppDevice);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DStateBlock9Impl_Capture(LPDIRECT3DSTATEBLOCK9 iface) {
+    IDirect3DStateBlock9Impl *This = (IDirect3DStateBlock9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This); 
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DStateBlock_Capture(This->wineD3DStateBlock);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DStateBlock9Impl_Apply(LPDIRECT3DSTATEBLOCK9 iface) {
+    IDirect3DStateBlock9Impl *This = (IDirect3DStateBlock9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DStateBlock_Apply(This->wineD3DStateBlock);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+
+static const IDirect3DStateBlock9Vtbl Direct3DStateBlock9_Vtbl =
+{
+    /* IUnknown */
+    IDirect3DStateBlock9Impl_QueryInterface,
+    IDirect3DStateBlock9Impl_AddRef,
+    IDirect3DStateBlock9Impl_Release,
+    /* IDirect3DStateBlock9 */
+    IDirect3DStateBlock9Impl_GetDevice,
+    IDirect3DStateBlock9Impl_Capture,
+    IDirect3DStateBlock9Impl_Apply
+};
+
+
+/* IDirect3DDevice9 IDirect3DStateBlock9 Methods follow: */
+HRESULT WINAPI IDirect3DDevice9Impl_CreateStateBlock(LPDIRECT3DDEVICE9EX iface, D3DSTATEBLOCKTYPE Type, IDirect3DStateBlock9** ppStateBlock) {
+   IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+   IDirect3DStateBlock9Impl* object;
+   HRESULT hrc = D3D_OK;
+   
+   TRACE("(%p) Relay\n", This);
+
+   if(Type != D3DSBT_ALL         && Type != D3DSBT_PIXELSTATE &&
+      Type != D3DSBT_VERTEXSTATE                              ) {
+       WARN("Unexpected stateblock type, returning D3DERR_INVALIDCALL\n");
+       return D3DERR_INVALIDCALL;
+   }
+   
+   object  = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DStateBlock9Impl));
+   if (NULL == object) return E_OUTOFMEMORY;
+   object->lpVtbl = &Direct3DStateBlock9_Vtbl;
+   object->ref = 1;
+   
+   EnterCriticalSection(&d3d9_cs);
+   hrc = IWineD3DDevice_CreateStateBlock(This->WineD3DDevice, (WINED3DSTATEBLOCKTYPE)Type, &object->wineD3DStateBlock, (IUnknown*)object);
+   LeaveCriticalSection(&d3d9_cs);
+   if(hrc != D3D_OK){
+       FIXME("(%p) Call to IWineD3DDevice_CreateStateBlock failed.\n", This);
+       HeapFree(GetProcessHeap(), 0, object);
+   } else {
+        IDirect3DDevice9Ex_AddRef(iface);
+        object->parentDevice = iface;
+        *ppStateBlock = (IDirect3DStateBlock9*)object;
+        TRACE("(%p) : Created stateblock %p\n", This, object);
+   }
+   TRACE("(%p) returning token (ptr to stateblock) of %p\n", This, object);
+   return hrc;
+}
+
+HRESULT  WINAPI  IDirect3DDevice9Impl_BeginStateBlock(LPDIRECT3DDEVICE9EX iface) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;    
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_BeginStateBlock(This->WineD3DDevice);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+HRESULT  WINAPI  IDirect3DDevice9Impl_EndStateBlock(LPDIRECT3DDEVICE9EX iface, IDirect3DStateBlock9** ppSB) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;   
+    HRESULT hr;
+    IWineD3DStateBlock* wineD3DStateBlock;    
+    IDirect3DStateBlock9Impl* object;
+
+    TRACE("(%p) Relay\n", This); 
+    
+    /* Tell wineD3D to endstateblock before anything else (in case we run out
+     * of memory later and cause locking problems)
+     */
+    EnterCriticalSection(&d3d9_cs);
+    hr=IWineD3DDevice_EndStateBlock(This->WineD3DDevice,&wineD3DStateBlock);
+    LeaveCriticalSection(&d3d9_cs);
+    if(hr!= D3D_OK){
+       FIXME("IWineD3DDevice_EndStateBlock returned an error\n");
+       return hr;
+    }    
+    /* allocate a new IDirectD3DStateBlock */
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY ,sizeof(IDirect3DStateBlock9Impl));      
+    if (!object) return E_OUTOFMEMORY;
+    object->ref = 1;
+    object->lpVtbl = &Direct3DStateBlock9_Vtbl;
+    object->wineD3DStateBlock = wineD3DStateBlock;
+
+    IDirect3DDevice9Ex_AddRef(iface);
+    object->parentDevice = iface;
+    *ppSB=(IDirect3DStateBlock9*)object;
+    TRACE("(%p)Returning %p %p\n", This, *ppSB, wineD3DStateBlock);
+    return D3D_OK;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/surface.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/surface.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/surface.c	(revision 16410)
@@ -0,0 +1,292 @@
+/*
+ * IDirect3DSurface9 implementation
+ *
+ * Copyright 2002-2005 Jason Edmeades
+ *                     Raphael Junqueira
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d9_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d9);
+
+/* IDirect3DSurface9 IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DSurface9Impl_QueryInterface(LPDIRECT3DSURFACE9 iface, REFIID riid, LPVOID* ppobj) {
+    IDirect3DSurface9Impl *This = (IDirect3DSurface9Impl *)iface;
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DResource9)
+        || IsEqualGUID(riid, &IID_IDirect3DSurface9)) {
+        IDirect3DSurface9_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DSurface9Impl_AddRef(LPDIRECT3DSURFACE9 iface) {
+    IDirect3DSurface9Impl *This = (IDirect3DSurface9Impl *)iface;
+
+    TRACE("(%p)\n", This);
+
+    if (This->forwardReference) {
+        /* Forward refcounting */
+        TRACE("(%p) : Forwarding to %p\n", This, This->forwardReference);
+        return IUnknown_AddRef(This->forwardReference);
+    } else {
+        /* No container, handle our own refcounting */
+        ULONG ref = InterlockedIncrement(&This->ref);
+        if(ref == 1 && This->parentDevice) IDirect3DDevice9Ex_AddRef(This->parentDevice);
+        TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+        return ref;
+    }
+
+}
+
+static ULONG WINAPI IDirect3DSurface9Impl_Release(LPDIRECT3DSURFACE9 iface) {
+    IDirect3DSurface9Impl *This = (IDirect3DSurface9Impl *)iface;
+
+    TRACE("(%p)\n", This);
+
+    if (This->forwardReference) {
+        /* Forward to the containerParent */
+        TRACE("(%p) : Forwarding to %p\n", This, This->forwardReference);
+        return IUnknown_Release(This->forwardReference);
+    } else {
+        /* No container, handle our own refcounting */
+        ULONG ref = InterlockedDecrement(&This->ref);
+        TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+        if (ref == 0) {
+            if (This->parentDevice) IDirect3DDevice9Ex_Release(This->parentDevice);
+            if (!This->isImplicit) {
+                EnterCriticalSection(&d3d9_cs);
+                IWineD3DSurface_Release(This->wineD3DSurface);
+                LeaveCriticalSection(&d3d9_cs);
+                HeapFree(GetProcessHeap(), 0, This);
+            }
+        }
+
+        return ref;
+    }
+}
+
+/* IDirect3DSurface9 IDirect3DResource9 Interface follow: */
+static HRESULT WINAPI IDirect3DSurface9Impl_GetDevice(LPDIRECT3DSURFACE9 iface, IDirect3DDevice9** ppDevice) {
+    IDirect3DSurface9Impl *This = (IDirect3DSurface9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p)->(%p)\n", This, ppDevice);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IDirect3DResource9Impl_GetDevice((LPDIRECT3DRESOURCE9) This, ppDevice);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DSurface9Impl_SetPrivateData(LPDIRECT3DSURFACE9 iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) {
+    IDirect3DSurface9Impl *This = (IDirect3DSurface9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DSurface_SetPrivateData(This->wineD3DSurface, refguid, pData, SizeOfData, Flags);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DSurface9Impl_GetPrivateData(LPDIRECT3DSURFACE9 iface, REFGUID refguid, void* pData, DWORD* pSizeOfData) {
+    IDirect3DSurface9Impl *This = (IDirect3DSurface9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DSurface_GetPrivateData(This->wineD3DSurface, refguid, pData, pSizeOfData);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DSurface9Impl_FreePrivateData(LPDIRECT3DSURFACE9 iface, REFGUID refguid) {
+    IDirect3DSurface9Impl *This = (IDirect3DSurface9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DSurface_FreePrivateData(This->wineD3DSurface, refguid);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static DWORD WINAPI IDirect3DSurface9Impl_SetPriority(LPDIRECT3DSURFACE9 iface, DWORD PriorityNew) {
+    IDirect3DSurface9Impl *This = (IDirect3DSurface9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DSurface_SetPriority(This->wineD3DSurface, PriorityNew);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static DWORD WINAPI IDirect3DSurface9Impl_GetPriority(LPDIRECT3DSURFACE9 iface) {
+    IDirect3DSurface9Impl *This = (IDirect3DSurface9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DSurface_GetPriority(This->wineD3DSurface);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static void WINAPI IDirect3DSurface9Impl_PreLoad(LPDIRECT3DSURFACE9 iface) {
+    IDirect3DSurface9Impl *This = (IDirect3DSurface9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    IWineD3DSurface_PreLoad(This->wineD3DSurface);
+    LeaveCriticalSection(&d3d9_cs);
+    return ;
+}
+
+static D3DRESOURCETYPE WINAPI IDirect3DSurface9Impl_GetType(LPDIRECT3DSURFACE9 iface) {
+    IDirect3DSurface9Impl *This = (IDirect3DSurface9Impl *)iface;
+    D3DRESOURCETYPE ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    ret = IWineD3DSurface_GetType(This->wineD3DSurface);
+    LeaveCriticalSection(&d3d9_cs);
+    return ret;
+}
+
+/* IDirect3DSurface9 Interface follow: */
+static HRESULT WINAPI IDirect3DSurface9Impl_GetContainer(LPDIRECT3DSURFACE9 iface, REFIID riid, void** ppContainer) {
+    IDirect3DSurface9Impl *This = (IDirect3DSurface9Impl *)iface;
+    HRESULT res;
+
+    TRACE("(This %p, riid %s, ppContainer %p)\n", This, debugstr_guid(riid), ppContainer);
+
+    if (!This->container) return E_NOINTERFACE;
+
+    if (!ppContainer) {
+        ERR("Called without a valid ppContainer\n");
+    }
+
+    res = IUnknown_QueryInterface(This->container, riid, ppContainer);
+
+    TRACE("Returning ppContainer %p, *ppContainer %p\n", ppContainer, *ppContainer);
+
+    return res;
+}
+
+static HRESULT WINAPI IDirect3DSurface9Impl_GetDesc(LPDIRECT3DSURFACE9 iface, D3DSURFACE_DESC* pDesc) {
+    IDirect3DSurface9Impl *This = (IDirect3DSurface9Impl *)iface;
+    WINED3DSURFACE_DESC    wined3ddesc;
+    UINT                   tmpInt = -1;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    /* As d3d8 and d3d9 structures differ, pass in ptrs to where data needs to go */
+    wined3ddesc.Format              = (WINED3DFORMAT *)&pDesc->Format;
+    wined3ddesc.Type                = (WINED3DRESOURCETYPE *)&pDesc->Type;
+    wined3ddesc.Usage               = &pDesc->Usage;
+    wined3ddesc.Pool                = (WINED3DPOOL *) &pDesc->Pool;
+    wined3ddesc.Size                = &tmpInt;
+    wined3ddesc.MultiSampleType     = (WINED3DMULTISAMPLE_TYPE *) &pDesc->MultiSampleType;
+    wined3ddesc.MultiSampleQuality  = &pDesc->MultiSampleQuality;
+    wined3ddesc.Width               = &pDesc->Width;
+    wined3ddesc.Height              = &pDesc->Height;
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DSurface_GetDesc(This->wineD3DSurface, &wined3ddesc);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DSurface9Impl_LockRect(LPDIRECT3DSURFACE9 iface, D3DLOCKED_RECT* pLockedRect, CONST RECT* pRect, DWORD Flags) {
+    IDirect3DSurface9Impl *This = (IDirect3DSurface9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    TRACE("(%p) calling IWineD3DSurface_LockRect %p %p %p %d\n", This, This->wineD3DSurface, pLockedRect, pRect, Flags);
+    hr = IWineD3DSurface_LockRect(This->wineD3DSurface, (WINED3DLOCKED_RECT *) pLockedRect, pRect, Flags);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DSurface9Impl_UnlockRect(LPDIRECT3DSURFACE9 iface) {
+    IDirect3DSurface9Impl *This = (IDirect3DSurface9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DSurface_UnlockRect(This->wineD3DSurface);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DSurface9Impl_GetDC(LPDIRECT3DSURFACE9 iface, HDC* phdc) {
+    IDirect3DSurface9Impl *This = (IDirect3DSurface9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DSurface_GetDC(This->wineD3DSurface, phdc);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DSurface9Impl_ReleaseDC(LPDIRECT3DSURFACE9 iface, HDC hdc) {
+    IDirect3DSurface9Impl *This = (IDirect3DSurface9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DSurface_ReleaseDC(This->wineD3DSurface, hdc);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+
+const IDirect3DSurface9Vtbl Direct3DSurface9_Vtbl =
+{
+    /* IUnknown */
+    IDirect3DSurface9Impl_QueryInterface,
+    IDirect3DSurface9Impl_AddRef,
+    IDirect3DSurface9Impl_Release,
+    /* IDirect3DResource9 */
+    IDirect3DSurface9Impl_GetDevice,
+    IDirect3DSurface9Impl_SetPrivateData,
+    IDirect3DSurface9Impl_GetPrivateData,
+    IDirect3DSurface9Impl_FreePrivateData,
+    IDirect3DSurface9Impl_SetPriority,
+    IDirect3DSurface9Impl_GetPriority,
+    IDirect3DSurface9Impl_PreLoad,
+    IDirect3DSurface9Impl_GetType,
+    /* IDirect3DSurface9 */
+    IDirect3DSurface9Impl_GetContainer,
+    IDirect3DSurface9Impl_GetDesc,
+    IDirect3DSurface9Impl_LockRect,
+    IDirect3DSurface9Impl_UnlockRect,
+    IDirect3DSurface9Impl_GetDC,
+    IDirect3DSurface9Impl_ReleaseDC
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/swapchain.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/swapchain.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/swapchain.c	(revision 16410)
@@ -0,0 +1,291 @@
+/*
+ * IDirect3DSwapChain9 implementation
+ *
+ * Copyright 2002-2003 Jason Edmeades
+ *                     Raphael Junqueira
+ * Copyright 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d9_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d9);
+
+/* IDirect3DSwapChain IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DSwapChain9Impl_QueryInterface(LPDIRECT3DSWAPCHAIN9 iface, REFIID riid, LPVOID* ppobj)
+{
+    IDirect3DSwapChain9Impl *This = (IDirect3DSwapChain9Impl *)iface;
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DSwapChain9)) {
+        IDirect3DSwapChain9_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DSwapChain9Impl_AddRef(LPDIRECT3DSWAPCHAIN9 iface) {
+    IDirect3DSwapChain9Impl *This = (IDirect3DSwapChain9Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+    if(ref == 1 && This->parentDevice) IDirect3DDevice9Ex_AddRef(This->parentDevice);
+
+    return ref;
+}
+
+static ULONG WINAPI IDirect3DSwapChain9Impl_Release(LPDIRECT3DSWAPCHAIN9 iface) {
+    IDirect3DSwapChain9Impl *This = (IDirect3DSwapChain9Impl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+        if (This->parentDevice) IDirect3DDevice9Ex_Release(This->parentDevice);
+        if (!This->isImplicit) {
+            EnterCriticalSection(&d3d9_cs);
+            IWineD3DSwapChain_Destroy(This->wineD3DSwapChain, D3D9CB_DestroyRenderTarget);
+            LeaveCriticalSection(&d3d9_cs);
+            HeapFree(GetProcessHeap(), 0, This);
+        }
+    }
+    return ref;
+}
+
+/* IDirect3DSwapChain9 parts follow: */
+static HRESULT WINAPI IDirect3DSwapChain9Impl_Present(LPDIRECT3DSWAPCHAIN9 iface, CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion, DWORD dwFlags) {
+    IDirect3DSwapChain9Impl *This = (IDirect3DSwapChain9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DSwapChain_Present(This->wineD3DSwapChain, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion, dwFlags);
+}
+
+static HRESULT WINAPI IDirect3DSwapChain9Impl_GetFrontBufferData(LPDIRECT3DSWAPCHAIN9 iface, IDirect3DSurface9* pDestSurface) {
+    IDirect3DSwapChain9Impl *This = (IDirect3DSwapChain9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DSwapChain_GetFrontBufferData(This->wineD3DSwapChain,  ((IDirect3DSurface9Impl *)pDestSurface)->wineD3DSurface);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DSwapChain9Impl_GetBackBuffer(LPDIRECT3DSWAPCHAIN9 iface, UINT iBackBuffer, D3DBACKBUFFER_TYPE Type, IDirect3DSurface9** ppBackBuffer) {
+    IDirect3DSwapChain9Impl *This = (IDirect3DSwapChain9Impl *)iface;
+    HRESULT hrc = D3D_OK;
+    IWineD3DSurface *mySurface = NULL;
+
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hrc = IWineD3DSwapChain_GetBackBuffer(This->wineD3DSwapChain, iBackBuffer, (WINED3DBACKBUFFER_TYPE) Type, &mySurface);
+    if (hrc == D3D_OK && NULL != mySurface) {
+       IWineD3DSurface_GetParent(mySurface, (IUnknown **)ppBackBuffer);
+       IWineD3DSurface_Release(mySurface);
+    }
+    LeaveCriticalSection(&d3d9_cs);
+    /* Do not touch the **ppBackBuffer pointer otherwise! (see device test) */
+    return hrc;
+}
+
+static HRESULT WINAPI IDirect3DSwapChain9Impl_GetRasterStatus(LPDIRECT3DSWAPCHAIN9 iface, D3DRASTER_STATUS* pRasterStatus) {
+    IDirect3DSwapChain9Impl *This = (IDirect3DSwapChain9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DSwapChain_GetRasterStatus(This->wineD3DSwapChain, (WINED3DRASTER_STATUS *) pRasterStatus);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DSwapChain9Impl_GetDisplayMode(LPDIRECT3DSWAPCHAIN9 iface, D3DDISPLAYMODE* pMode) {
+    IDirect3DSwapChain9Impl *This = (IDirect3DSwapChain9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DSwapChain_GetDisplayMode(This->wineD3DSwapChain, (WINED3DDISPLAYMODE *) pMode);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DSwapChain9Impl_GetDevice(LPDIRECT3DSWAPCHAIN9 iface, IDirect3DDevice9** ppDevice) {
+    IDirect3DSwapChain9Impl *This = (IDirect3DSwapChain9Impl *)iface;
+    HRESULT hrc = D3D_OK;
+    IWineD3DDevice *device = NULL;
+
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hrc = IWineD3DSwapChain_GetDevice(This->wineD3DSwapChain, &device);
+    if (hrc == D3D_OK && NULL != device) {
+       IWineD3DDevice_GetParent(device, (IUnknown **)ppDevice);
+       IWineD3DDevice_Release(device);
+    }
+    LeaveCriticalSection(&d3d9_cs);
+    return hrc;
+}
+
+static HRESULT WINAPI IDirect3DSwapChain9Impl_GetPresentParameters(LPDIRECT3DSWAPCHAIN9 iface, D3DPRESENT_PARAMETERS* pPresentationParameters) {
+    IDirect3DSwapChain9Impl *This = (IDirect3DSwapChain9Impl *)iface;
+    WINED3DPRESENT_PARAMETERS winePresentParameters;
+    HRESULT hr;
+
+    TRACE("(%p)->(%p): Relay\n", This, pPresentationParameters);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DSwapChain_GetPresentParameters(This->wineD3DSwapChain, &winePresentParameters);
+    LeaveCriticalSection(&d3d9_cs);
+
+    pPresentationParameters->BackBufferWidth            = winePresentParameters.BackBufferWidth;
+    pPresentationParameters->BackBufferHeight           = winePresentParameters.BackBufferHeight;
+    pPresentationParameters->BackBufferFormat           = winePresentParameters.BackBufferFormat;
+    pPresentationParameters->BackBufferCount            = winePresentParameters.BackBufferCount;
+    pPresentationParameters->MultiSampleType            = winePresentParameters.MultiSampleType;
+    pPresentationParameters->MultiSampleQuality         = winePresentParameters.MultiSampleQuality;
+    pPresentationParameters->SwapEffect                 = winePresentParameters.SwapEffect;
+    pPresentationParameters->hDeviceWindow              = winePresentParameters.hDeviceWindow;
+    pPresentationParameters->Windowed                   = winePresentParameters.Windowed;
+    pPresentationParameters->EnableAutoDepthStencil     = winePresentParameters.EnableAutoDepthStencil;
+    pPresentationParameters->Flags                      = winePresentParameters.Flags;
+    pPresentationParameters->FullScreen_RefreshRateInHz = winePresentParameters.FullScreen_RefreshRateInHz;
+    pPresentationParameters->PresentationInterval       = winePresentParameters.PresentationInterval;
+
+    return hr;
+}
+
+
+static const IDirect3DSwapChain9Vtbl Direct3DSwapChain9_Vtbl =
+{
+    IDirect3DSwapChain9Impl_QueryInterface,
+    IDirect3DSwapChain9Impl_AddRef,
+    IDirect3DSwapChain9Impl_Release,
+    IDirect3DSwapChain9Impl_Present,
+    IDirect3DSwapChain9Impl_GetFrontBufferData,
+    IDirect3DSwapChain9Impl_GetBackBuffer,
+    IDirect3DSwapChain9Impl_GetRasterStatus,
+    IDirect3DSwapChain9Impl_GetDisplayMode,
+    IDirect3DSwapChain9Impl_GetDevice,
+    IDirect3DSwapChain9Impl_GetPresentParameters
+};
+
+
+/* IDirect3DDevice9 IDirect3DSwapChain9 Methods follow: */
+HRESULT  WINAPI  IDirect3DDevice9Impl_CreateAdditionalSwapChain(LPDIRECT3DDEVICE9EX iface, D3DPRESENT_PARAMETERS* pPresentationParameters, IDirect3DSwapChain9** pSwapChain) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    IDirect3DSwapChain9Impl* object;
+    HRESULT hrc = D3D_OK;
+    WINED3DPRESENT_PARAMETERS localParameters;
+
+    TRACE("(%p) Relay\n", This);
+
+    object = HeapAlloc(GetProcessHeap(),  HEAP_ZERO_MEMORY, sizeof(*object));
+    if (NULL == object) {
+        FIXME("Allocation of memory failed, returning D3DERR_OUTOFVIDEOMEMORY\n");
+        return D3DERR_OUTOFVIDEOMEMORY;
+    }
+    object->ref = 1;
+    object->lpVtbl = &Direct3DSwapChain9_Vtbl;
+
+    /* The back buffer count is set to one if it's 0 */
+    if(pPresentationParameters->BackBufferCount == 0) {
+        pPresentationParameters->BackBufferCount = 1;
+    }
+
+    /* Allocate an associated WineD3DDevice object */
+    localParameters.BackBufferWidth                     = pPresentationParameters->BackBufferWidth;
+    localParameters.BackBufferHeight                    = pPresentationParameters->BackBufferHeight;
+    localParameters.BackBufferFormat                    = pPresentationParameters->BackBufferFormat;
+    localParameters.BackBufferCount                     = pPresentationParameters->BackBufferCount;
+    localParameters.MultiSampleType                     = pPresentationParameters->MultiSampleType;
+    localParameters.MultiSampleQuality                  = pPresentationParameters->MultiSampleQuality;
+    localParameters.SwapEffect                          = pPresentationParameters->SwapEffect;
+    localParameters.hDeviceWindow                       = pPresentationParameters->hDeviceWindow;
+    localParameters.Windowed                            = pPresentationParameters->Windowed;
+    localParameters.EnableAutoDepthStencil              = pPresentationParameters->EnableAutoDepthStencil;
+    localParameters.AutoDepthStencilFormat              = pPresentationParameters->AutoDepthStencilFormat;
+    localParameters.Flags                               = pPresentationParameters->Flags;
+    localParameters.FullScreen_RefreshRateInHz          = pPresentationParameters->FullScreen_RefreshRateInHz;
+    localParameters.PresentationInterval                = pPresentationParameters->PresentationInterval;
+
+    EnterCriticalSection(&d3d9_cs);
+    hrc = IWineD3DDevice_CreateSwapChain(This->WineD3DDevice, &localParameters, &object->wineD3DSwapChain, (IUnknown*)object, D3D9CB_CreateRenderTarget, D3D9CB_CreateDepthStencilSurface, SURFACE_OPENGL);
+    LeaveCriticalSection(&d3d9_cs);
+
+    pPresentationParameters->BackBufferWidth            = localParameters.BackBufferWidth;
+    pPresentationParameters->BackBufferHeight           = localParameters.BackBufferHeight;
+    pPresentationParameters->BackBufferFormat           = localParameters.BackBufferFormat;
+    pPresentationParameters->BackBufferCount            = localParameters.BackBufferCount;
+    pPresentationParameters->MultiSampleType            = localParameters.MultiSampleType;
+    pPresentationParameters->MultiSampleQuality         = localParameters.MultiSampleQuality;
+    pPresentationParameters->SwapEffect                 = localParameters.SwapEffect;
+    pPresentationParameters->hDeviceWindow              = localParameters.hDeviceWindow;
+    pPresentationParameters->Windowed                   = localParameters.Windowed;
+    pPresentationParameters->EnableAutoDepthStencil     = localParameters.EnableAutoDepthStencil;
+    pPresentationParameters->AutoDepthStencilFormat     = localParameters.AutoDepthStencilFormat;
+    pPresentationParameters->Flags                      = localParameters.Flags;
+    pPresentationParameters->FullScreen_RefreshRateInHz = localParameters.FullScreen_RefreshRateInHz;
+    pPresentationParameters->PresentationInterval       = localParameters.PresentationInterval;
+
+    if (hrc != D3D_OK) {
+        FIXME("(%p) call to IWineD3DDevice_CreateSwapChain failed\n", This);
+        HeapFree(GetProcessHeap(), 0 , object);
+    } else {
+        IDirect3DDevice9Ex_AddRef(iface);
+        object->parentDevice = iface;
+        *pSwapChain = (IDirect3DSwapChain9 *)object;
+        TRACE("(%p) : Created swapchain %p\n", This, *pSwapChain);
+    }
+    TRACE("(%p) returning %p\n", This, *pSwapChain);
+    return hrc;
+}
+
+HRESULT  WINAPI  IDirect3DDevice9Impl_GetSwapChain(LPDIRECT3DDEVICE9EX iface, UINT iSwapChain, IDirect3DSwapChain9** pSwapChain) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hrc = D3D_OK;
+    IWineD3DSwapChain *swapchain = NULL;
+
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hrc = IWineD3DDevice_GetSwapChain(This->WineD3DDevice, iSwapChain, &swapchain);
+    if (hrc == D3D_OK && NULL != swapchain) {
+       IWineD3DSwapChain_GetParent(swapchain, (IUnknown **)pSwapChain);
+       IWineD3DSwapChain_Release(swapchain);
+    } else {
+        *pSwapChain = NULL;
+    }
+    LeaveCriticalSection(&d3d9_cs);
+    return hrc;
+}
+
+UINT     WINAPI  IDirect3DDevice9Impl_GetNumberOfSwapChains(LPDIRECT3DDEVICE9EX iface) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    UINT ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    ret = IWineD3DDevice_GetNumberOfSwapChains(This->WineD3DDevice);
+    LeaveCriticalSection(&d3d9_cs);
+    return ret;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/texture.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/texture.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/texture.c	(revision 16410)
@@ -0,0 +1,366 @@
+/*
+ * IDirect3DTexture9 implementation
+ *
+ * Copyright 2002-2005 Jason Edmeades
+ * Copyright 2002-2005 Raphael Junqueira
+ * Copyright 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d9_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d9);
+
+/* IDirect3DTexture9 IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DTexture9Impl_QueryInterface(LPDIRECT3DTEXTURE9 iface, REFIID riid, LPVOID* ppobj) {
+    IDirect3DTexture9Impl *This = (IDirect3DTexture9Impl *)iface;
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DResource9)
+        || IsEqualGUID(riid, &IID_IDirect3DBaseTexture9)
+        || IsEqualGUID(riid, &IID_IDirect3DTexture9)) {
+        IDirect3DTexture9_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p) not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DTexture9Impl_AddRef(LPDIRECT3DTEXTURE9 iface) {
+    IDirect3DTexture9Impl *This = (IDirect3DTexture9Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+    return ref;
+}
+
+static ULONG WINAPI IDirect3DTexture9Impl_Release(LPDIRECT3DTEXTURE9 iface) {
+    IDirect3DTexture9Impl *This = (IDirect3DTexture9Impl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+        EnterCriticalSection(&d3d9_cs);
+        IWineD3DTexture_Destroy(This->wineD3DTexture, D3D9CB_DestroySurface);
+        LeaveCriticalSection(&d3d9_cs);
+        IDirect3DDevice9Ex_Release(This->parentDevice);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+    return ref;
+}
+
+/* IDirect3DTexture9 IDirect3DResource9 Interface follow: */
+static HRESULT WINAPI IDirect3DTexture9Impl_GetDevice(LPDIRECT3DTEXTURE9 iface, IDirect3DDevice9** ppDevice) {
+    IDirect3DTexture9Impl *This = (IDirect3DTexture9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IDirect3DResource9Impl_GetDevice((LPDIRECT3DRESOURCE9) This, ppDevice);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DTexture9Impl_SetPrivateData(LPDIRECT3DTEXTURE9 iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) {
+    IDirect3DTexture9Impl *This = (IDirect3DTexture9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DTexture_SetPrivateData(This->wineD3DTexture, refguid, pData, SizeOfData, Flags);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DTexture9Impl_GetPrivateData(LPDIRECT3DTEXTURE9 iface, REFGUID refguid, void* pData, DWORD* pSizeOfData) {
+    IDirect3DTexture9Impl *This = (IDirect3DTexture9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DTexture_GetPrivateData(This->wineD3DTexture, refguid, pData, pSizeOfData);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DTexture9Impl_FreePrivateData(LPDIRECT3DTEXTURE9 iface, REFGUID refguid) {
+    IDirect3DTexture9Impl *This = (IDirect3DTexture9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DTexture_FreePrivateData(This->wineD3DTexture, refguid);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static DWORD WINAPI IDirect3DTexture9Impl_SetPriority(LPDIRECT3DTEXTURE9 iface, DWORD PriorityNew) {
+    IDirect3DTexture9Impl *This = (IDirect3DTexture9Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    ret = IWineD3DTexture_SetPriority(This->wineD3DTexture, PriorityNew);
+    LeaveCriticalSection(&d3d9_cs);
+    return ret;
+}
+
+static DWORD WINAPI IDirect3DTexture9Impl_GetPriority(LPDIRECT3DTEXTURE9 iface) {
+    IDirect3DTexture9Impl *This = (IDirect3DTexture9Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    ret = IWineD3DTexture_GetPriority(This->wineD3DTexture);
+    LeaveCriticalSection(&d3d9_cs);
+    return ret;
+}
+
+static void WINAPI IDirect3DTexture9Impl_PreLoad(LPDIRECT3DTEXTURE9 iface) {
+    IDirect3DTexture9Impl *This = (IDirect3DTexture9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    IWineD3DTexture_PreLoad(This->wineD3DTexture);
+    LeaveCriticalSection(&d3d9_cs);
+}
+
+static D3DRESOURCETYPE WINAPI IDirect3DTexture9Impl_GetType(LPDIRECT3DTEXTURE9 iface) {
+    IDirect3DTexture9Impl *This = (IDirect3DTexture9Impl *)iface;
+    HRESULT ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    ret = IWineD3DTexture_GetType(This->wineD3DTexture);
+    LeaveCriticalSection(&d3d9_cs);
+    return ret;
+}
+
+/* IDirect3DTexture9 IDirect3DBaseTexture9 Interface follow: */
+static DWORD WINAPI IDirect3DTexture9Impl_SetLOD(LPDIRECT3DTEXTURE9 iface, DWORD LODNew) {
+    IDirect3DTexture9Impl *This = (IDirect3DTexture9Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    ret = IWineD3DTexture_SetLOD(This->wineD3DTexture, LODNew);
+    LeaveCriticalSection(&d3d9_cs);
+    return ret;
+}
+
+static DWORD WINAPI IDirect3DTexture9Impl_GetLOD(LPDIRECT3DTEXTURE9 iface) {
+    IDirect3DTexture9Impl *This = (IDirect3DTexture9Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    ret = IWineD3DTexture_GetLOD(This->wineD3DTexture);
+    LeaveCriticalSection(&d3d9_cs);
+    return ret;
+}
+
+static DWORD WINAPI IDirect3DTexture9Impl_GetLevelCount(LPDIRECT3DTEXTURE9 iface) {
+    IDirect3DTexture9Impl *This = (IDirect3DTexture9Impl *)iface;
+    DWORD ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    ret = IWineD3DTexture_GetLevelCount(This->wineD3DTexture);
+    LeaveCriticalSection(&d3d9_cs);
+    return ret;
+}
+
+static HRESULT WINAPI IDirect3DTexture9Impl_SetAutoGenFilterType(LPDIRECT3DTEXTURE9 iface, D3DTEXTUREFILTERTYPE FilterType) {
+    IDirect3DTexture9Impl *This = (IDirect3DTexture9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DTexture_SetAutoGenFilterType(This->wineD3DTexture, (WINED3DTEXTUREFILTERTYPE) FilterType);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static D3DTEXTUREFILTERTYPE WINAPI IDirect3DTexture9Impl_GetAutoGenFilterType(LPDIRECT3DTEXTURE9 iface) {
+    IDirect3DTexture9Impl *This = (IDirect3DTexture9Impl *)iface;
+    D3DTEXTUREFILTERTYPE ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    ret = (D3DTEXTUREFILTERTYPE) IWineD3DTexture_GetAutoGenFilterType(This->wineD3DTexture);
+    LeaveCriticalSection(&d3d9_cs);
+    return ret;
+}
+
+static void WINAPI IDirect3DTexture9Impl_GenerateMipSubLevels(LPDIRECT3DTEXTURE9 iface) {
+    IDirect3DTexture9Impl *This = (IDirect3DTexture9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    IWineD3DTexture_GenerateMipSubLevels(This->wineD3DTexture);
+    LeaveCriticalSection(&d3d9_cs);
+}
+
+/* IDirect3DTexture9 Interface follow: */
+static HRESULT WINAPI IDirect3DTexture9Impl_GetLevelDesc(LPDIRECT3DTEXTURE9 iface, UINT Level, D3DSURFACE_DESC* pDesc) {
+    IDirect3DTexture9Impl *This = (IDirect3DTexture9Impl *)iface;
+
+    WINED3DSURFACE_DESC    wined3ddesc;
+    UINT                   tmpInt = -1;
+    HRESULT                hr;
+    TRACE("(%p) Relay\n", This);
+
+    /* As d3d8 and d3d9 structures differ, pass in ptrs to where data needs to go */
+    wined3ddesc.Format              = (WINED3DFORMAT *)&pDesc->Format;
+    wined3ddesc.Type                = (WINED3DRESOURCETYPE *)&pDesc->Type;
+    wined3ddesc.Usage               = &pDesc->Usage;
+    wined3ddesc.Pool                = (WINED3DPOOL *) &pDesc->Pool;
+    wined3ddesc.Size                = &tmpInt; /* required for d3d8 */
+    wined3ddesc.MultiSampleType     = (WINED3DMULTISAMPLE_TYPE *) &pDesc->MultiSampleType;
+    wined3ddesc.MultiSampleQuality  = &pDesc->MultiSampleQuality;
+    wined3ddesc.Width               = &pDesc->Width;
+    wined3ddesc.Height              = &pDesc->Height;
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DTexture_GetLevelDesc(This->wineD3DTexture, Level, &wined3ddesc);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DTexture9Impl_GetSurfaceLevel(LPDIRECT3DTEXTURE9 iface, UINT Level, IDirect3DSurface9** ppSurfaceLevel) {
+    IDirect3DTexture9Impl *This = (IDirect3DTexture9Impl *)iface;
+    HRESULT hrc = D3D_OK;
+    IWineD3DSurface *mySurface = NULL;
+
+    TRACE("(%p) Relay\n", This);
+    EnterCriticalSection(&d3d9_cs);
+    hrc = IWineD3DTexture_GetSurfaceLevel(This->wineD3DTexture, Level, &mySurface);
+    if (hrc == D3D_OK && NULL != ppSurfaceLevel) {
+       IWineD3DSurface_GetParent(mySurface, (IUnknown **)ppSurfaceLevel);
+       IWineD3DSurface_Release(mySurface);
+    }
+    LeaveCriticalSection(&d3d9_cs);
+    return hrc;
+}
+
+static HRESULT WINAPI IDirect3DTexture9Impl_LockRect(LPDIRECT3DTEXTURE9 iface, UINT Level, D3DLOCKED_RECT* pLockedRect, CONST RECT* pRect, DWORD Flags) {
+    IDirect3DTexture9Impl *This = (IDirect3DTexture9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DTexture_LockRect(This->wineD3DTexture, Level, (WINED3DLOCKED_RECT *) pLockedRect, pRect, Flags);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DTexture9Impl_UnlockRect(LPDIRECT3DTEXTURE9 iface, UINT Level) {
+    IDirect3DTexture9Impl *This = (IDirect3DTexture9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DTexture_UnlockRect(This->wineD3DTexture, Level);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DTexture9Impl_AddDirtyRect(LPDIRECT3DTEXTURE9 iface, CONST RECT* pDirtyRect) {
+    IDirect3DTexture9Impl *This = (IDirect3DTexture9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DTexture_AddDirtyRect(This->wineD3DTexture, pDirtyRect);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static const IDirect3DTexture9Vtbl Direct3DTexture9_Vtbl =
+{
+    /* IUnknown */
+    IDirect3DTexture9Impl_QueryInterface,
+    IDirect3DTexture9Impl_AddRef,
+    IDirect3DTexture9Impl_Release,
+     /* IDirect3DResource9 */
+    IDirect3DTexture9Impl_GetDevice,
+    IDirect3DTexture9Impl_SetPrivateData,
+    IDirect3DTexture9Impl_GetPrivateData,
+    IDirect3DTexture9Impl_FreePrivateData,
+    IDirect3DTexture9Impl_SetPriority,
+    IDirect3DTexture9Impl_GetPriority,
+    IDirect3DTexture9Impl_PreLoad,
+    IDirect3DTexture9Impl_GetType,
+    /* IDirect3dBaseTexture9 */
+    IDirect3DTexture9Impl_SetLOD,
+    IDirect3DTexture9Impl_GetLOD,
+    IDirect3DTexture9Impl_GetLevelCount,
+    IDirect3DTexture9Impl_SetAutoGenFilterType,
+    IDirect3DTexture9Impl_GetAutoGenFilterType,
+    IDirect3DTexture9Impl_GenerateMipSubLevels,
+    /* IDirect3DTexture9 */
+    IDirect3DTexture9Impl_GetLevelDesc,
+    IDirect3DTexture9Impl_GetSurfaceLevel,
+    IDirect3DTexture9Impl_LockRect,
+    IDirect3DTexture9Impl_UnlockRect,
+    IDirect3DTexture9Impl_AddDirtyRect
+};
+
+
+/* IDirect3DDevice9 IDirect3DTexture9 Methods follow: */
+HRESULT  WINAPI  IDirect3DDevice9Impl_CreateTexture(LPDIRECT3DDEVICE9EX iface, UINT Width, UINT Height, UINT Levels, DWORD Usage,
+                                                    D3DFORMAT Format, D3DPOOL Pool, IDirect3DTexture9** ppTexture, HANDLE* pSharedHandle) {
+    IDirect3DTexture9Impl *object;
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hrc = D3D_OK;
+    
+    TRACE("(%p) : W(%d) H(%d), Lvl(%d) d(%d), Fmt(%#x), Pool(%d)\n", This, Width, Height, Levels, Usage, Format,  Pool);
+
+    /* Allocate the storage for the device */
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DTexture9Impl));
+
+    if (NULL == object) {
+        FIXME("Allocation of memory failed, returning D3DERR_OUTOFVIDEOMEMORY\n");
+        return D3DERR_OUTOFVIDEOMEMORY;
+    }
+
+    object->lpVtbl = &Direct3DTexture9_Vtbl;
+    object->ref = 1;
+    EnterCriticalSection(&d3d9_cs);
+    hrc = IWineD3DDevice_CreateTexture(This->WineD3DDevice, Width, Height, Levels, Usage & WINED3DUSAGE_MASK,
+                                 (WINED3DFORMAT)Format, (WINED3DPOOL) Pool, &object->wineD3DTexture, pSharedHandle, (IUnknown *)object, D3D9CB_CreateSurface);
+    LeaveCriticalSection(&d3d9_cs);
+
+    if (FAILED(hrc)) {
+
+        /* free up object */
+        FIXME("(%p) call to IWineD3DDevice_CreateTexture failed\n", This);
+        HeapFree(GetProcessHeap(), 0, object);
+   } else {
+        IDirect3DDevice9Ex_AddRef(iface);
+        object->parentDevice = iface;
+        *ppTexture= (LPDIRECT3DTEXTURE9) object;
+        TRACE("(%p) Created Texture %p, %p\n", This, object, object->wineD3DTexture);
+   }
+
+   return hrc;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/version.rc
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/version.rc	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/version.rc	(revision 16410)
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2001 Ove Kaaven
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define WINE_FILEDESCRIPTION_STR "Wine Direct3D"
+#define WINE_FILENAME_STR "d3d9.dll"
+#define WINE_FILEVERSION 5,3,1,904
+#define WINE_FILEVERSION_STR "5.3.1.904"
+#define WINE_PRODUCTVERSION 5,3,1,904
+#define WINE_PRODUCTVERSION_STR "5.3.1.904"
+
+#include "wine/wine_common_ver.rc"
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/vertexbuffer.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/vertexbuffer.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/vertexbuffer.c	(revision 16410)
@@ -0,0 +1,243 @@
+/*
+ * IDirect3DVertexBuffer9 implementation
+ *
+ * Copyright 2002-2004 Jason Edmeades
+ * Copyright 2002-2004 Raphael Junqueira
+ * Copyright 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d9_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d9);
+
+/* IDirect3DVertexBuffer9 IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DVertexBuffer9Impl_QueryInterface(LPDIRECT3DVERTEXBUFFER9 iface, REFIID riid, LPVOID* ppobj) {
+    IDirect3DVertexBuffer9Impl *This = (IDirect3DVertexBuffer9Impl *)iface;
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DResource9)
+        || IsEqualGUID(riid, &IID_IDirect3DVertexBuffer9)) {
+        IDirect3DVertexBuffer9_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DVertexBuffer9Impl_AddRef(LPDIRECT3DVERTEXBUFFER9 iface) {
+    IDirect3DVertexBuffer9Impl *This = (IDirect3DVertexBuffer9Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+    return ref;
+}
+
+static ULONG WINAPI IDirect3DVertexBuffer9Impl_Release(LPDIRECT3DVERTEXBUFFER9 iface) {
+    IDirect3DVertexBuffer9Impl *This = (IDirect3DVertexBuffer9Impl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+        EnterCriticalSection(&d3d9_cs);
+        IWineD3DVertexBuffer_Release(This->wineD3DVertexBuffer);
+        LeaveCriticalSection(&d3d9_cs);
+        IDirect3DDevice9Ex_Release(This->parentDevice);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+    return ref;
+}
+
+/* IDirect3DVertexBuffer9 IDirect3DResource9 Interface follow: */
+static HRESULT WINAPI IDirect3DVertexBuffer9Impl_GetDevice(LPDIRECT3DVERTEXBUFFER9 iface, IDirect3DDevice9** ppDevice) {
+    IDirect3DVertexBuffer9Impl *This = (IDirect3DVertexBuffer9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IDirect3DResource9Impl_GetDevice((LPDIRECT3DRESOURCE9) This, ppDevice);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DVertexBuffer9Impl_SetPrivateData(LPDIRECT3DVERTEXBUFFER9 iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) {
+    IDirect3DVertexBuffer9Impl *This = (IDirect3DVertexBuffer9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DVertexBuffer_SetPrivateData(This->wineD3DVertexBuffer, refguid, pData, SizeOfData, Flags);
+}
+
+static HRESULT WINAPI IDirect3DVertexBuffer9Impl_GetPrivateData(LPDIRECT3DVERTEXBUFFER9 iface, REFGUID refguid, void* pData, DWORD* pSizeOfData) {
+    IDirect3DVertexBuffer9Impl *This = (IDirect3DVertexBuffer9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DVertexBuffer_GetPrivateData(This->wineD3DVertexBuffer, refguid, pData, pSizeOfData);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DVertexBuffer9Impl_FreePrivateData(LPDIRECT3DVERTEXBUFFER9 iface, REFGUID refguid) {
+    IDirect3DVertexBuffer9Impl *This = (IDirect3DVertexBuffer9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DVertexBuffer_FreePrivateData(This->wineD3DVertexBuffer, refguid);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static DWORD WINAPI IDirect3DVertexBuffer9Impl_SetPriority(LPDIRECT3DVERTEXBUFFER9 iface, DWORD PriorityNew) {
+    IDirect3DVertexBuffer9Impl *This = (IDirect3DVertexBuffer9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DVertexBuffer_SetPriority(This->wineD3DVertexBuffer, PriorityNew);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static DWORD WINAPI IDirect3DVertexBuffer9Impl_GetPriority(LPDIRECT3DVERTEXBUFFER9 iface) {
+    IDirect3DVertexBuffer9Impl *This = (IDirect3DVertexBuffer9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DVertexBuffer_GetPriority(This->wineD3DVertexBuffer);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static void WINAPI IDirect3DVertexBuffer9Impl_PreLoad(LPDIRECT3DVERTEXBUFFER9 iface) {
+    IDirect3DVertexBuffer9Impl *This = (IDirect3DVertexBuffer9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    IWineD3DVertexBuffer_PreLoad(This->wineD3DVertexBuffer);
+    LeaveCriticalSection(&d3d9_cs);
+    return ;
+}
+
+static D3DRESOURCETYPE WINAPI IDirect3DVertexBuffer9Impl_GetType(LPDIRECT3DVERTEXBUFFER9 iface) {
+    IDirect3DVertexBuffer9Impl *This = (IDirect3DVertexBuffer9Impl *)iface;
+    D3DRESOURCETYPE ret;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    ret = IWineD3DVertexBuffer_GetType(This->wineD3DVertexBuffer);
+    LeaveCriticalSection(&d3d9_cs);
+    return ret;
+}
+
+/* IDirect3DVertexBuffer9 Interface follow: */
+static HRESULT WINAPI IDirect3DVertexBuffer9Impl_Lock(LPDIRECT3DVERTEXBUFFER9 iface, UINT OffsetToLock, UINT SizeToLock, void** ppbData, DWORD Flags) {
+    IDirect3DVertexBuffer9Impl *This = (IDirect3DVertexBuffer9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DVertexBuffer_Lock(This->wineD3DVertexBuffer, OffsetToLock, SizeToLock, (BYTE **)ppbData, Flags);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DVertexBuffer9Impl_Unlock(LPDIRECT3DVERTEXBUFFER9 iface) {
+    IDirect3DVertexBuffer9Impl *This = (IDirect3DVertexBuffer9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DVertexBuffer_Unlock(This->wineD3DVertexBuffer);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DVertexBuffer9Impl_GetDesc(LPDIRECT3DVERTEXBUFFER9 iface, D3DVERTEXBUFFER_DESC* pDesc) {
+    IDirect3DVertexBuffer9Impl *This = (IDirect3DVertexBuffer9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DVertexBuffer_GetDesc(This->wineD3DVertexBuffer, (WINED3DVERTEXBUFFER_DESC *) pDesc);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static const IDirect3DVertexBuffer9Vtbl Direct3DVertexBuffer9_Vtbl =
+{
+    /* IUnknown */
+    IDirect3DVertexBuffer9Impl_QueryInterface,
+    IDirect3DVertexBuffer9Impl_AddRef,
+    IDirect3DVertexBuffer9Impl_Release,
+    /* IDirect3DResource9 */
+    IDirect3DVertexBuffer9Impl_GetDevice,
+    IDirect3DVertexBuffer9Impl_SetPrivateData,
+    IDirect3DVertexBuffer9Impl_GetPrivateData,
+    IDirect3DVertexBuffer9Impl_FreePrivateData,
+    IDirect3DVertexBuffer9Impl_SetPriority,
+    IDirect3DVertexBuffer9Impl_GetPriority,
+    IDirect3DVertexBuffer9Impl_PreLoad,
+    IDirect3DVertexBuffer9Impl_GetType,
+    /* IDirect3DVertexBuffer9 */
+    IDirect3DVertexBuffer9Impl_Lock,
+    IDirect3DVertexBuffer9Impl_Unlock,
+    IDirect3DVertexBuffer9Impl_GetDesc
+};
+
+
+/* IDirect3DDevice9 IDirect3DVertexBuffer9 Methods follow: */
+HRESULT WINAPI IDirect3DDevice9Impl_CreateVertexBuffer(LPDIRECT3DDEVICE9EX iface,
+                                UINT Size, DWORD Usage, DWORD FVF, D3DPOOL Pool,
+                                IDirect3DVertexBuffer9** ppVertexBuffer, HANDLE* pSharedHandle) {
+    
+    IDirect3DVertexBuffer9Impl *object;
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hrc = D3D_OK;
+
+    /* Allocate the storage for the device */
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DVertexBuffer9Impl));
+    if (NULL == object) {
+        FIXME("Allocation of memory failed, returning D3DERR_OUTOFVIDEOMEMORY\n");
+        return D3DERR_OUTOFVIDEOMEMORY;
+    }
+
+    object->lpVtbl = &Direct3DVertexBuffer9_Vtbl;
+    object->ref = 1;
+    EnterCriticalSection(&d3d9_cs);
+    hrc = IWineD3DDevice_CreateVertexBuffer(This->WineD3DDevice, Size, Usage & WINED3DUSAGE_MASK, FVF, (WINED3DPOOL) Pool, &(object->wineD3DVertexBuffer), pSharedHandle, (IUnknown *)object);
+    LeaveCriticalSection(&d3d9_cs);
+    
+    if (hrc != D3D_OK) {
+
+        /* free up object */
+        WARN("(%p) call to IWineD3DDevice_CreateVertexBuffer failed\n", This);
+        HeapFree(GetProcessHeap(), 0, object);
+    } else {
+        IDirect3DDevice9Ex_AddRef(iface);
+        object->parentDevice = iface;
+        TRACE("(%p) : Created vertex buffer %p\n", This, object);
+        *ppVertexBuffer = (LPDIRECT3DVERTEXBUFFER9) object;
+    }
+    return hrc;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/vertexdeclaration.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/vertexdeclaration.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/vertexdeclaration.c	(revision 16410)
@@ -0,0 +1,427 @@
+/*
+ * IDirect3DVertexDeclaration9 implementation
+ *
+ * Copyright 2002-2003 Raphael Junqueira
+ *                     Jason Edmeades
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d9_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d9);
+
+typedef struct _D3DDECLTYPE_INFO {
+    D3DDECLTYPE d3dType;
+    int         size;
+    int         typesize;
+} D3DDECLTYPE_INFO;
+
+static D3DDECLTYPE_INFO const d3d_dtype_lookup[D3DDECLTYPE_UNUSED] = {
+   {D3DDECLTYPE_FLOAT1,    1, sizeof(float)},
+   {D3DDECLTYPE_FLOAT2,    2, sizeof(float)},
+   {D3DDECLTYPE_FLOAT3,    3, sizeof(float)},
+   {D3DDECLTYPE_FLOAT4,    4, sizeof(float)},
+   {D3DDECLTYPE_D3DCOLOR,  4, sizeof(BYTE)},
+   {D3DDECLTYPE_UBYTE4,    4, sizeof(BYTE)},
+   {D3DDECLTYPE_SHORT2,    2, sizeof(short int)},
+   {D3DDECLTYPE_SHORT4,    4, sizeof(short int)},
+   {D3DDECLTYPE_UBYTE4N,   4, sizeof(BYTE)},
+   {D3DDECLTYPE_SHORT2N,   2, sizeof(short int)},
+   {D3DDECLTYPE_SHORT4N,   4, sizeof(short int)},
+   {D3DDECLTYPE_USHORT2N,  2, sizeof(short int)},
+   {D3DDECLTYPE_USHORT4N,  4, sizeof(short int)},
+   {D3DDECLTYPE_UDEC3,     3, sizeof(short int)},
+   {D3DDECLTYPE_DEC3N,     3, sizeof(short int)},
+   {D3DDECLTYPE_FLOAT16_2, 2, sizeof(short int)},
+   {D3DDECLTYPE_FLOAT16_4, 4, sizeof(short int)}};
+
+#define D3D_DECL_SIZE(type)          d3d_dtype_lookup[type].size
+#define D3D_DECL_TYPESIZE(type)      d3d_dtype_lookup[type].typesize
+
+HRESULT vdecl_convert_fvf(
+    DWORD fvf,
+    D3DVERTEXELEMENT9** ppVertexElements) {
+
+    unsigned int idx, idx2;
+    unsigned int offset;
+    BOOL has_pos = (fvf & D3DFVF_POSITION_MASK) != 0;
+    BOOL has_blend = (fvf & D3DFVF_XYZB5) > D3DFVF_XYZRHW;
+    BOOL has_blend_idx = has_blend &&
+       (((fvf & D3DFVF_XYZB5) == D3DFVF_XYZB5) ||
+        (fvf & D3DFVF_LASTBETA_D3DCOLOR) ||
+        (fvf & D3DFVF_LASTBETA_UBYTE4));
+    BOOL has_normal = (fvf & D3DFVF_NORMAL) != 0;
+    BOOL has_psize = (fvf & D3DFVF_PSIZE) != 0;
+
+    BOOL has_diffuse = (fvf & D3DFVF_DIFFUSE) != 0;
+    BOOL has_specular = (fvf & D3DFVF_SPECULAR) !=0;
+
+    DWORD num_textures = (fvf & D3DFVF_TEXCOUNT_MASK) >> D3DFVF_TEXCOUNT_SHIFT;
+    DWORD texcoords = (fvf & 0xFFFF0000) >> 16;
+
+    D3DVERTEXELEMENT9 end_element = D3DDECL_END();
+    D3DVERTEXELEMENT9 *elements = NULL;
+
+    unsigned int size;
+    DWORD num_blends = 1 + (((fvf & D3DFVF_XYZB5) - D3DFVF_XYZB1) >> 1);
+    if (has_blend_idx) num_blends--;
+
+    /* Compute declaration size */
+    size = has_pos + (has_blend && num_blends > 0) + has_blend_idx + has_normal +
+           has_psize + has_diffuse + has_specular + num_textures + 1;
+
+    /* convert the declaration */
+    elements = HeapAlloc(GetProcessHeap(), 0, size * sizeof(D3DVERTEXELEMENT9));
+    if (!elements) 
+        return D3DERR_OUTOFVIDEOMEMORY;
+
+    elements[size-1] = end_element;
+    idx = 0;
+    if (has_pos) {
+        if (!has_blend && (fvf & D3DFVF_XYZRHW)) {
+            elements[idx].Type = D3DDECLTYPE_FLOAT4;
+            elements[idx].Usage = D3DDECLUSAGE_POSITIONT;
+        }
+        else {
+            elements[idx].Type = D3DDECLTYPE_FLOAT3;
+            elements[idx].Usage = D3DDECLUSAGE_POSITION;
+        }
+        elements[idx].UsageIndex = 0;
+        idx++;
+    }
+    if (has_blend && (num_blends > 0)) {
+        if (((fvf & D3DFVF_XYZB5) == D3DFVF_XYZB2) && (fvf & D3DFVF_LASTBETA_D3DCOLOR))
+            elements[idx].Type = D3DDECLTYPE_D3DCOLOR;
+        else {
+            switch(num_blends) {
+                case 1: elements[idx].Type = D3DDECLTYPE_FLOAT1; break;
+                case 2: elements[idx].Type = D3DDECLTYPE_FLOAT2; break;
+                case 3: elements[idx].Type = D3DDECLTYPE_FLOAT3; break;
+                case 4: elements[idx].Type = D3DDECLTYPE_FLOAT4; break;
+                default:
+                    ERR("Unexpected amount of blend values: %u\n", num_blends);
+            }
+        }
+        elements[idx].Usage = D3DDECLUSAGE_BLENDWEIGHT;
+        elements[idx].UsageIndex = 0;
+        idx++;
+    }
+    if (has_blend_idx) {
+        if (fvf & D3DFVF_LASTBETA_UBYTE4 ||
+            (((fvf & D3DFVF_XYZB5) == D3DFVF_XYZB2) && (fvf & D3DFVF_LASTBETA_D3DCOLOR)))
+            elements[idx].Type = D3DDECLTYPE_UBYTE4;
+        else if (fvf & D3DFVF_LASTBETA_D3DCOLOR)
+            elements[idx].Type = D3DDECLTYPE_D3DCOLOR;
+        else
+            elements[idx].Type = D3DDECLTYPE_FLOAT1;
+        elements[idx].Usage = D3DDECLUSAGE_BLENDINDICES;
+        elements[idx].UsageIndex = 0;
+        idx++;
+    }
+    if (has_normal) {
+        elements[idx].Type = D3DDECLTYPE_FLOAT3;
+        elements[idx].Usage = D3DDECLUSAGE_NORMAL;
+        elements[idx].UsageIndex = 0;
+        idx++;
+    }
+    if (has_psize) {
+        elements[idx].Type = D3DDECLTYPE_FLOAT1;
+        elements[idx].Usage = D3DDECLUSAGE_PSIZE;
+        elements[idx].UsageIndex = 0;
+        idx++;
+    }
+    if (has_diffuse) {
+        elements[idx].Type = D3DDECLTYPE_D3DCOLOR;
+        elements[idx].Usage = D3DDECLUSAGE_COLOR;
+        elements[idx].UsageIndex = 0;
+        idx++;
+    }
+    if (has_specular) {
+        elements[idx].Type = D3DDECLTYPE_D3DCOLOR;
+        elements[idx].Usage = D3DDECLUSAGE_COLOR;
+        elements[idx].UsageIndex = 1;
+        idx++;
+    }
+    for (idx2 = 0; idx2 < num_textures; idx2++) {
+        unsigned int numcoords = (texcoords >> (idx2*2)) & 0x03;
+        switch (numcoords) {
+            case D3DFVF_TEXTUREFORMAT1:
+                elements[idx].Type = D3DDECLTYPE_FLOAT1;
+                break;
+            case D3DFVF_TEXTUREFORMAT2:
+                elements[idx].Type = D3DDECLTYPE_FLOAT2;
+                break;
+            case D3DFVF_TEXTUREFORMAT3:
+                elements[idx].Type = D3DDECLTYPE_FLOAT3;
+                break;
+            case D3DFVF_TEXTUREFORMAT4:
+                elements[idx].Type = D3DDECLTYPE_FLOAT4;
+                break;
+        }
+        elements[idx].Usage = D3DDECLUSAGE_TEXCOORD;
+        elements[idx].UsageIndex = idx2;
+        idx++;
+    }
+
+    /* Now compute offsets, and initialize the rest of the fields */
+    for (idx = 0, offset = 0; idx < size-1; idx++) {
+        elements[idx].Stream = 0;
+        elements[idx].Method = D3DDECLMETHOD_DEFAULT;
+        elements[idx].Offset = offset;
+        offset += D3D_DECL_SIZE(elements[idx].Type) * D3D_DECL_TYPESIZE(elements[idx].Type);
+    }
+
+    *ppVertexElements = elements;
+    return D3D_OK;
+}
+
+/* IDirect3DVertexDeclaration9 IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DVertexDeclaration9Impl_QueryInterface(LPDIRECT3DVERTEXDECLARATION9 iface, REFIID riid, LPVOID* ppobj) {
+    IDirect3DVertexDeclaration9Impl *This = (IDirect3DVertexDeclaration9Impl *)iface;
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DVertexDeclaration9)) {
+        IDirect3DVertexDeclaration9_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DVertexDeclaration9Impl_AddRef(LPDIRECT3DVERTEXDECLARATION9 iface) {
+    IDirect3DVertexDeclaration9Impl *This = (IDirect3DVertexDeclaration9Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+    if(ref == 1) {
+        IDirect3DDevice9Ex_AddRef(This->parentDevice);
+    }
+
+    return ref;
+}
+
+void IDirect3DVertexDeclaration9Impl_Destroy(LPDIRECT3DVERTEXDECLARATION9 iface) {
+    IDirect3DVertexDeclaration9Impl *This = (IDirect3DVertexDeclaration9Impl *)iface;
+
+    if(This->ref != 0) {
+        /* Should not happen unless wine has a bug or the application releases references it does not own */
+        ERR("Destroying vdecl with ref != 0\n");
+    }
+    EnterCriticalSection(&d3d9_cs);
+    IWineD3DVertexDeclaration_Release(This->wineD3DVertexDeclaration);
+    LeaveCriticalSection(&d3d9_cs);
+    HeapFree(GetProcessHeap(), 0, This->elements);
+    HeapFree(GetProcessHeap(), 0, This);
+}
+
+static ULONG WINAPI IDirect3DVertexDeclaration9Impl_Release(LPDIRECT3DVERTEXDECLARATION9 iface) {
+    IDirect3DVertexDeclaration9Impl *This = (IDirect3DVertexDeclaration9Impl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+        IDirect3DDevice9Ex *parentDevice = This->parentDevice;
+
+        if(!This->convFVF) {
+            IDirect3DVertexDeclaration9Impl_Release(iface);
+        }
+        IDirect3DDevice9Ex_Release(parentDevice);
+    }
+    return ref;
+}
+
+/* IDirect3DVertexDeclaration9 Interface follow: */
+static HRESULT WINAPI IDirect3DVertexDeclaration9Impl_GetDevice(LPDIRECT3DVERTEXDECLARATION9 iface, IDirect3DDevice9** ppDevice) {
+    IDirect3DVertexDeclaration9Impl *This = (IDirect3DVertexDeclaration9Impl *)iface;
+    IWineD3DDevice *myDevice = NULL;
+    HRESULT hr = D3D_OK;
+
+    TRACE("(%p) : Relay\n", iface);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DVertexDeclaration_GetDevice(This->wineD3DVertexDeclaration, &myDevice);
+    if (hr == D3D_OK && myDevice != NULL) {
+        hr = IWineD3DDevice_GetParent(myDevice, (IUnknown **)ppDevice);
+        IWineD3DDevice_Release(myDevice);
+    }
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DVertexDeclaration9Impl_GetDeclaration(LPDIRECT3DVERTEXDECLARATION9 iface, D3DVERTEXELEMENT9* pDecl, UINT* pNumElements) {
+    IDirect3DVertexDeclaration9Impl *This = (IDirect3DVertexDeclaration9Impl *)iface;
+
+    TRACE("(%p) : pDecl %p, pNumElements %p)\n", This, pDecl, pNumElements);
+
+    *pNumElements = This->element_count;
+
+    /* Passing a NULL pDecl is used to just retrieve the number of elements */
+    if (!pDecl) {
+        TRACE("NULL pDecl passed. Returning D3D_OK.\n");
+        return D3D_OK;
+    }
+
+    TRACE("Copying %p to %p\n", This->elements, pDecl);
+    CopyMemory(pDecl, This->elements, This->element_count * sizeof(D3DVERTEXELEMENT9));
+
+    return D3D_OK;
+}
+
+static const IDirect3DVertexDeclaration9Vtbl Direct3DVertexDeclaration9_Vtbl =
+{
+    /* IUnknown */
+    IDirect3DVertexDeclaration9Impl_QueryInterface,
+    IDirect3DVertexDeclaration9Impl_AddRef,
+    IDirect3DVertexDeclaration9Impl_Release,
+    /* IDirect3DVertexDeclaration9 */
+    IDirect3DVertexDeclaration9Impl_GetDevice,
+    IDirect3DVertexDeclaration9Impl_GetDeclaration
+};
+
+static UINT convert_to_wined3d_declaration(const D3DVERTEXELEMENT9* d3d9_elements, WINED3DVERTEXELEMENT **wined3d_elements) {
+    const D3DVERTEXELEMENT9* element;
+    UINT element_count = 1;
+    UINT i;
+
+    TRACE("d3d9_elements %p, wined3d_elements %p\n", d3d9_elements, wined3d_elements);
+
+    element = d3d9_elements;
+    while (element++->Stream != 0xff && element_count++ < 128);
+
+    if (element_count == 128) {
+        return 0;
+    }
+
+    *wined3d_elements = HeapAlloc(GetProcessHeap(), 0, element_count * sizeof(WINED3DVERTEXELEMENT));
+    if (!*wined3d_elements) {
+        FIXME("Memory allocation failed\n");
+        return 0;
+    }
+
+    for (i = 0; i < element_count; ++i) {
+        CopyMemory(*wined3d_elements + i, d3d9_elements + i, sizeof(D3DVERTEXELEMENT9));
+        (*wined3d_elements)[i].Reg = -1;
+    }
+
+    return element_count;
+}
+
+/* IDirect3DDevice9 IDirect3DVertexDeclaration9 Methods follow: */
+HRESULT  WINAPI  IDirect3DDevice9Impl_CreateVertexDeclaration(LPDIRECT3DDEVICE9EX iface, CONST D3DVERTEXELEMENT9* pVertexElements, IDirect3DVertexDeclaration9** ppDecl) {
+    
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    IDirect3DVertexDeclaration9Impl *object = NULL;
+    WINED3DVERTEXELEMENT* wined3d_elements;
+    UINT element_count;
+    HRESULT hr = D3D_OK;
+
+    TRACE("(%p) : Relay\n", iface);
+    if (NULL == ppDecl) {
+        WARN("(%p) : Caller passed NULL As ppDecl, returning D3DERR_INVALIDCALL\n",This);
+        return D3DERR_INVALIDCALL;
+    }
+
+    element_count = convert_to_wined3d_declaration(pVertexElements, &wined3d_elements);
+    if (!element_count) {
+        FIXME("(%p) : Error parsing vertex declaration\n", This);
+        return D3DERR_INVALIDCALL;
+    }
+
+    /* Allocate the storage for the device */
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DVertexDeclaration9Impl));
+    if (NULL == object) {
+        HeapFree(GetProcessHeap(), 0, wined3d_elements);
+        FIXME("Allocation of memory failed, returning D3DERR_OUTOFVIDEOMEMORY\n");
+        return D3DERR_OUTOFVIDEOMEMORY;
+    }
+
+    object->lpVtbl = &Direct3DVertexDeclaration9_Vtbl;
+    object->ref = 0;
+
+    object->elements = HeapAlloc(GetProcessHeap(), 0, element_count * sizeof(D3DVERTEXELEMENT9));
+    if (!object->elements) {
+        HeapFree(GetProcessHeap(), 0, wined3d_elements);
+        HeapFree(GetProcessHeap(), 0, object);
+        ERR("Memory allocation failed\n");
+        return D3DERR_OUTOFVIDEOMEMORY;
+    }
+    CopyMemory(object->elements, pVertexElements, element_count * sizeof(D3DVERTEXELEMENT9));
+    object->element_count = element_count;
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_CreateVertexDeclaration(This->WineD3DDevice, &object->wineD3DVertexDeclaration, (IUnknown *)object, wined3d_elements, element_count);
+    LeaveCriticalSection(&d3d9_cs);
+
+    HeapFree(GetProcessHeap(), 0, wined3d_elements);
+
+    if (FAILED(hr)) {
+
+        /* free up object */
+        WARN("(%p) call to IWineD3DDevice_CreateVertexDeclaration failed\n", This);
+        HeapFree(GetProcessHeap(), 0, object->elements);
+        HeapFree(GetProcessHeap(), 0, object);
+    } else {
+        object->parentDevice = iface;
+        *ppDecl = (LPDIRECT3DVERTEXDECLARATION9) object;
+        IDirect3DVertexDeclaration9_AddRef(*ppDecl);
+         TRACE("(%p) : Created vertex declaration %p\n", This, object);
+    }
+    return hr;
+}
+
+HRESULT  WINAPI  IDirect3DDevice9Impl_SetVertexDeclaration(LPDIRECT3DDEVICE9EX iface, IDirect3DVertexDeclaration9* pDecl) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    IDirect3DVertexDeclaration9Impl *pDeclImpl = (IDirect3DVertexDeclaration9Impl *)pDecl;
+    HRESULT hr = D3D_OK;
+
+    TRACE("(%p) : Relay\n", iface);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetVertexDeclaration(This->WineD3DDevice, pDeclImpl == NULL ? NULL : pDeclImpl->wineD3DVertexDeclaration);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+HRESULT  WINAPI  IDirect3DDevice9Impl_GetVertexDeclaration(LPDIRECT3DDEVICE9EX iface, IDirect3DVertexDeclaration9** ppDecl) {
+    IDirect3DDevice9Impl* This = (IDirect3DDevice9Impl*) iface;
+    IWineD3DVertexDeclaration* pTest = NULL;
+    HRESULT hr = D3D_OK;
+
+    TRACE("(%p) : Relay+\n", iface);
+
+    if (NULL == ppDecl) {
+      return D3DERR_INVALIDCALL;
+    }
+
+    *ppDecl = NULL;
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_GetVertexDeclaration(This->WineD3DDevice, &pTest);
+    if (hr == D3D_OK && NULL != pTest) {
+        IWineD3DVertexDeclaration_GetParent(pTest, (IUnknown **)ppDecl);
+        IWineD3DVertexDeclaration_Release(pTest);
+    } else {
+        *ppDecl = NULL;
+    }
+    LeaveCriticalSection(&d3d9_cs);
+    TRACE("(%p) : returning %p\n", This, *ppDecl);
+    return hr;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/vertexshader.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/vertexshader.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/vertexshader.c	(revision 16410)
@@ -0,0 +1,244 @@
+/*
+ * IDirect3DVertexShader9 implementation
+ *
+ * Copyright 2002-2003 Jason Edmeades
+ *                     Raphael Junqueira
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d9_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d9);
+
+/* IDirect3DVertexShader9 IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DVertexShader9Impl_QueryInterface(LPDIRECT3DVERTEXSHADER9 iface, REFIID riid, LPVOID* ppobj) {
+    IDirect3DVertexShader9Impl *This = (IDirect3DVertexShader9Impl *)iface;
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DVertexShader9)) {
+        IDirect3DVertexShader9_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DVertexShader9Impl_AddRef(LPDIRECT3DVERTEXSHADER9 iface) {
+    IDirect3DVertexShader9Impl *This = (IDirect3DVertexShader9Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+    return ref;
+}
+
+static ULONG WINAPI IDirect3DVertexShader9Impl_Release(LPDIRECT3DVERTEXSHADER9 iface) {
+    IDirect3DVertexShader9Impl *This = (IDirect3DVertexShader9Impl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+        EnterCriticalSection(&d3d9_cs);
+        IWineD3DVertexShader_Release(This->wineD3DVertexShader);
+        LeaveCriticalSection(&d3d9_cs);
+        IDirect3DDevice9Ex_Release(This->parentDevice);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+    return ref;
+}
+
+/* IDirect3DVertexShader9 Interface follow: */
+static HRESULT WINAPI IDirect3DVertexShader9Impl_GetDevice(LPDIRECT3DVERTEXSHADER9 iface, IDirect3DDevice9** ppDevice) {
+    IDirect3DVertexShader9Impl *This = (IDirect3DVertexShader9Impl *)iface;
+    IWineD3DDevice *myDevice = NULL;
+    HRESULT hr;
+    TRACE("(%p) : Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DVertexShader_GetDevice(This->wineD3DVertexShader, &myDevice);
+    if (WINED3D_OK == hr && myDevice != NULL) {
+        hr = IWineD3DDevice_GetParent(myDevice, (IUnknown **)ppDevice);
+        IWineD3DDevice_Release(myDevice);
+    } else {
+        *ppDevice = NULL;
+    }
+    LeaveCriticalSection(&d3d9_cs);
+    TRACE("(%p) returning (%p)\n", This, *ppDevice);
+    return hr;
+}
+
+static HRESULT WINAPI IDirect3DVertexShader9Impl_GetFunction(LPDIRECT3DVERTEXSHADER9 iface, VOID* pData, UINT* pSizeOfData) {
+    IDirect3DVertexShader9Impl *This = (IDirect3DVertexShader9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) : Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DVertexShader_GetFunction(This->wineD3DVertexShader, pData, pSizeOfData);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+
+static const IDirect3DVertexShader9Vtbl Direct3DVertexShader9_Vtbl =
+{
+    /* IUnknown */
+    IDirect3DVertexShader9Impl_QueryInterface,
+    IDirect3DVertexShader9Impl_AddRef,
+    IDirect3DVertexShader9Impl_Release,
+    /* IDirect3DVertexShader9 */
+    IDirect3DVertexShader9Impl_GetDevice,
+    IDirect3DVertexShader9Impl_GetFunction
+};
+
+
+/* IDirect3DDevice9 IDirect3DVertexShader9 Methods follow: */
+HRESULT WINAPI IDirect3DDevice9Impl_CreateVertexShader(LPDIRECT3DDEVICE9EX iface, CONST DWORD* pFunction, IDirect3DVertexShader9** ppShader) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hrc = D3D_OK;
+    IDirect3DVertexShader9Impl *object;
+
+    /* Setup a stub object for now */
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object));
+    TRACE("(%p) : pFunction(%p), ppShader(%p)\n", This, pFunction, ppShader);
+    if (NULL == object) {
+        FIXME("Allocation of memory failed, returning D3DERR_OUTOFVIDEOMEMORY\n");
+        return D3DERR_OUTOFVIDEOMEMORY;
+    }
+
+    object->ref = 1;
+    object->lpVtbl = &Direct3DVertexShader9_Vtbl;
+    EnterCriticalSection(&d3d9_cs);
+    hrc= IWineD3DDevice_CreateVertexShader(This->WineD3DDevice, NULL /* declaration */, pFunction, &object->wineD3DVertexShader, (IUnknown *)object);
+    LeaveCriticalSection(&d3d9_cs);
+
+    if (FAILED(hrc)) {
+
+        /* free up object */
+        FIXME("Call to IWineD3DDevice_CreateVertexShader failed\n");
+        HeapFree(GetProcessHeap(), 0, object);
+    }else{
+        IDirect3DDevice9Ex_AddRef(iface);
+        object->parentDevice = iface;
+        *ppShader = (IDirect3DVertexShader9 *)object;
+        TRACE("(%p) : Created vertex shader %p\n", This, object);
+    }
+
+    TRACE("(%p) : returning %p\n", This, *ppShader);
+    return hrc;
+}
+
+HRESULT WINAPI IDirect3DDevice9Impl_SetVertexShader(LPDIRECT3DDEVICE9EX iface, IDirect3DVertexShader9* pShader) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hrc = D3D_OK;
+
+    TRACE("(%p) : Relay\n", This);
+    EnterCriticalSection(&d3d9_cs);
+    hrc =  IWineD3DDevice_SetVertexShader(This->WineD3DDevice, pShader==NULL?NULL:((IDirect3DVertexShader9Impl *)pShader)->wineD3DVertexShader);
+    LeaveCriticalSection(&d3d9_cs);
+
+    TRACE("(%p) : returning hr(%u)\n", This, hrc);
+    return hrc;
+}
+
+HRESULT WINAPI IDirect3DDevice9Impl_GetVertexShader(LPDIRECT3DDEVICE9EX iface, IDirect3DVertexShader9** ppShader) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    IWineD3DVertexShader *pShader;
+    HRESULT hrc = D3D_OK;
+
+    TRACE("(%p) : Relay  device@%p\n", This, This->WineD3DDevice);
+    EnterCriticalSection(&d3d9_cs);
+    hrc = IWineD3DDevice_GetVertexShader(This->WineD3DDevice, &pShader);
+    if(hrc == D3D_OK && pShader != NULL){
+       hrc = IWineD3DVertexShader_GetParent(pShader, (IUnknown **)ppShader);
+       IWineD3DVertexShader_Release(pShader);
+    } else {
+        WARN("(%p) : Call to IWineD3DDevice_GetVertexShader failed %u (device %p)\n", This, hrc, This->WineD3DDevice);
+    }
+    LeaveCriticalSection(&d3d9_cs);
+    TRACE("(%p) : returning %p\n", This, *ppShader);
+    return hrc;
+}
+
+HRESULT WINAPI IDirect3DDevice9Impl_SetVertexShaderConstantF(LPDIRECT3DDEVICE9EX iface, UINT Register, CONST float* pConstantData, UINT Vector4fCount) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) : Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetVertexShaderConstantF(This->WineD3DDevice, Register, pConstantData, Vector4fCount);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+HRESULT WINAPI IDirect3DDevice9Impl_GetVertexShaderConstantF(LPDIRECT3DDEVICE9EX iface, UINT Register, float* pConstantData, UINT Vector4fCount) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+
+    TRACE("(%p) : Relay\n", This);
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_GetVertexShaderConstantF(This->WineD3DDevice, Register, pConstantData, Vector4fCount);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+HRESULT WINAPI IDirect3DDevice9Impl_SetVertexShaderConstantI(LPDIRECT3DDEVICE9EX iface, UINT Register, CONST int* pConstantData, UINT Vector4iCount) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) : Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetVertexShaderConstantI(This->WineD3DDevice, Register, pConstantData, Vector4iCount);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+HRESULT WINAPI IDirect3DDevice9Impl_GetVertexShaderConstantI(LPDIRECT3DDEVICE9EX iface, UINT Register, int* pConstantData, UINT Vector4iCount) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) : Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_GetVertexShaderConstantI(This->WineD3DDevice, Register, pConstantData, Vector4iCount);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+HRESULT WINAPI IDirect3DDevice9Impl_SetVertexShaderConstantB(LPDIRECT3DDEVICE9EX iface, UINT Register, CONST BOOL* pConstantData, UINT BoolCount) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) : Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_SetVertexShaderConstantB(This->WineD3DDevice, Register, pConstantData, BoolCount);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
+
+HRESULT WINAPI IDirect3DDevice9Impl_GetVertexShaderConstantB(LPDIRECT3DDEVICE9EX iface, UINT Register, BOOL* pConstantData, UINT BoolCount) {
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hr;
+    TRACE("(%p) : Relay\n", This);
+
+    EnterCriticalSection(&d3d9_cs);
+    hr = IWineD3DDevice_GetVertexShaderConstantB(This->WineD3DDevice, Register, pConstantData, BoolCount);
+    LeaveCriticalSection(&d3d9_cs);
+    return hr;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/volume.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/volume.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/volume.c	(revision 16410)
@@ -0,0 +1,224 @@
+/*
+ * IDirect3DVolume9 implementation
+ *
+ * Copyright 2002-2005 Jason Edmeades
+ *                     Raphael Junqueira
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d9_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d9);
+
+/* IDirect3DVolume9 IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DVolume9Impl_QueryInterface(LPDIRECT3DVOLUME9 iface, REFIID riid, LPVOID* ppobj) {
+    IDirect3DVolume9Impl *This = (IDirect3DVolume9Impl *)iface;
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IDirect3DVolume9)) {
+        IDirect3DVolume9_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DVolume9Impl_AddRef(LPDIRECT3DVOLUME9 iface) {
+    IDirect3DVolume9Impl *This = (IDirect3DVolume9Impl *)iface;
+
+    TRACE("(%p)\n", This);
+
+    if (This->forwardReference) {
+        /* Forward refcounting */
+        TRACE("(%p) : Forwarding to %p\n", This, This->forwardReference);
+        return IUnknown_AddRef(This->forwardReference);
+    } else {
+        /* No container, handle our own refcounting */
+        ULONG ref = InterlockedIncrement(&This->ref);
+        TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+        return ref;
+    }
+}
+
+static ULONG WINAPI IDirect3DVolume9Impl_Release(LPDIRECT3DVOLUME9 iface) {
+    IDirect3DVolume9Impl *This = (IDirect3DVolume9Impl *)iface;
+
+    TRACE("(%p)\n", This);
+
+    if (This->forwardReference) {
+        /* Forward refcounting */
+        TRACE("(%p) : Forwarding to %p\n", This, This->forwardReference);
+        return IUnknown_Release(This->forwardReference);
+    } else {
+        /* No container, handle our own refcounting */
+        ULONG ref = InterlockedDecrement(&This->ref);
+        TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+        if (ref == 0) {
+            IWineD3DVolume_Release(This->wineD3DVolume);
+            HeapFree(GetProcessHeap(), 0, This);
+        }
+
+        return ref;
+    }
+}
+
+/* IDirect3DVolume9 Interface follow: */
+static HRESULT WINAPI IDirect3DVolume9Impl_GetDevice(LPDIRECT3DVOLUME9 iface, IDirect3DDevice9** ppDevice) {
+    IDirect3DVolume9Impl *This = (IDirect3DVolume9Impl *)iface;
+    IWineD3DDevice       *myDevice = NULL;
+
+    IWineD3DVolume_GetDevice(This->wineD3DVolume, &myDevice);
+    IWineD3DDevice_GetParent(myDevice, (IUnknown **)ppDevice);
+    IWineD3DDevice_Release(myDevice);
+    return D3D_OK;
+}
+
+static HRESULT WINAPI IDirect3DVolume9Impl_SetPrivateData(LPDIRECT3DVOLUME9 iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) {
+    IDirect3DVolume9Impl *This = (IDirect3DVolume9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DVolume_SetPrivateData(This->wineD3DVolume, refguid, pData, SizeOfData, Flags);
+}
+
+static HRESULT WINAPI IDirect3DVolume9Impl_GetPrivateData(LPDIRECT3DVOLUME9 iface, REFGUID  refguid, void* pData, DWORD* pSizeOfData) {
+    IDirect3DVolume9Impl *This = (IDirect3DVolume9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DVolume_GetPrivateData(This->wineD3DVolume, refguid, pData, pSizeOfData);
+}
+
+static HRESULT WINAPI IDirect3DVolume9Impl_FreePrivateData(LPDIRECT3DVOLUME9 iface, REFGUID refguid) {
+    IDirect3DVolume9Impl *This = (IDirect3DVolume9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DVolume_FreePrivateData(This->wineD3DVolume, refguid);
+}
+
+static HRESULT WINAPI IDirect3DVolume9Impl_GetContainer(LPDIRECT3DVOLUME9 iface, REFIID riid, void** ppContainer) {
+    IDirect3DVolume9Impl *This = (IDirect3DVolume9Impl *)iface;
+    HRESULT res;
+
+    TRACE("(This %p, riid %s, ppContainer %p)\n", This, debugstr_guid(riid), ppContainer);
+
+    if (!This->container) return E_NOINTERFACE;
+
+    if (!ppContainer) {
+        ERR("Called without a valid ppContainer.\n");
+    }
+
+    res = IUnknown_QueryInterface(This->container, riid, ppContainer);
+
+    TRACE("Returning ppContainer %p, *ppContainer %p\n", ppContainer, *ppContainer);
+
+    return res;
+}
+
+static HRESULT WINAPI IDirect3DVolume9Impl_GetDesc(LPDIRECT3DVOLUME9 iface, D3DVOLUME_DESC* pDesc) {
+    IDirect3DVolume9Impl *This = (IDirect3DVolume9Impl *)iface;
+    WINED3DVOLUME_DESC     wined3ddesc;
+    UINT                   tmpInt = -1;
+
+    TRACE("(%p) Relay\n", This);
+
+    /* As d3d8 and d3d9 structures differ, pass in ptrs to where data needs to go */
+    wined3ddesc.Format              = (WINED3DFORMAT *)&pDesc->Format;
+    wined3ddesc.Type                = (WINED3DRESOURCETYPE *)&pDesc->Type;
+    wined3ddesc.Usage               = &pDesc->Usage;
+    wined3ddesc.Pool                = (WINED3DPOOL *) &pDesc->Pool;
+    wined3ddesc.Size                = &tmpInt;
+    wined3ddesc.Width               = &pDesc->Width;
+    wined3ddesc.Height              = &pDesc->Height;
+    wined3ddesc.Depth               = &pDesc->Depth;
+
+    return IWineD3DVolume_GetDesc(This->wineD3DVolume, &wined3ddesc);
+}
+
+static HRESULT WINAPI IDirect3DVolume9Impl_LockBox(LPDIRECT3DVOLUME9 iface, D3DLOCKED_BOX* pLockedVolume, CONST D3DBOX* pBox, DWORD Flags) {
+    IDirect3DVolume9Impl *This = (IDirect3DVolume9Impl *)iface;
+    TRACE("(%p) relay %p %p %p %d\n", This, This->wineD3DVolume, pLockedVolume, pBox, Flags);
+    return IWineD3DVolume_LockBox(This->wineD3DVolume, (WINED3DLOCKED_BOX *)pLockedVolume, (CONST WINED3DBOX *)pBox, Flags);
+}
+
+static HRESULT WINAPI IDirect3DVolume9Impl_UnlockBox(LPDIRECT3DVOLUME9 iface) {
+    IDirect3DVolume9Impl *This = (IDirect3DVolume9Impl *)iface;
+    TRACE("(%p) relay %p\n", This, This->wineD3DVolume);
+    return IWineD3DVolume_UnlockBox(This->wineD3DVolume);
+}
+
+static const IDirect3DVolume9Vtbl Direct3DVolume9_Vtbl =
+{
+    /* IUnknown */
+    IDirect3DVolume9Impl_QueryInterface,
+    IDirect3DVolume9Impl_AddRef,
+    IDirect3DVolume9Impl_Release,
+    /* IDirect3DVolume9 */
+    IDirect3DVolume9Impl_GetDevice,
+    IDirect3DVolume9Impl_SetPrivateData,
+    IDirect3DVolume9Impl_GetPrivateData,
+    IDirect3DVolume9Impl_FreePrivateData,
+    IDirect3DVolume9Impl_GetContainer,
+    IDirect3DVolume9Impl_GetDesc,
+    IDirect3DVolume9Impl_LockBox,
+    IDirect3DVolume9Impl_UnlockBox
+};
+
+
+/* Internal function called back during the CreateVolumeTexture */
+HRESULT WINAPI D3D9CB_CreateVolume(IUnknown  *pDevice, IUnknown *pSuperior, UINT Width, UINT Height, UINT Depth,
+                                   WINED3DFORMAT  Format, WINED3DPOOL Pool, DWORD Usage,
+                                   IWineD3DVolume **ppVolume,
+                                   HANDLE   * pSharedHandle) {
+    IDirect3DVolume9Impl *object;
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)pDevice;
+    HRESULT hrc = D3D_OK;
+    
+    /* Allocate the storage for the device */
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DVolume9Impl));
+    if (NULL == object) {
+        FIXME("Allocation of memory failed\n");
+        *ppVolume = NULL;
+        return D3DERR_OUTOFVIDEOMEMORY;
+    }
+
+    object->lpVtbl = &Direct3DVolume9_Vtbl;
+    object->ref = 1;
+    hrc = IWineD3DDevice_CreateVolume(This->WineD3DDevice, Width, Height, Depth, Usage & WINED3DUSAGE_MASK, Format, 
+                                       Pool, &object->wineD3DVolume, pSharedHandle, (IUnknown *)object);
+    if (hrc != D3D_OK) {
+        /* free up object */ 
+        FIXME("(%p) call to IWineD3DDevice_CreateVolume failed\n", This);
+        HeapFree(GetProcessHeap(), 0, object);
+        *ppVolume = NULL;
+    } else {
+        *ppVolume = object->wineD3DVolume;
+        object->container = pSuperior;
+        object->forwardReference = pSuperior;
+    }
+    TRACE("(%p) Created volume %p\n", This, *ppVolume);
+    return hrc;
+}
+
+ULONG WINAPI D3D9CB_DestroyVolume(IWineD3DVolume *pVolume) {
+    IDirect3DVolume9Impl* volumeParent;
+
+    IWineD3DVolume_GetParent(pVolume, (IUnknown **) &volumeParent);
+    /* GetParent's AddRef was forwarded to an object in destruction.
+     * Releasing it here again would cause an endless recursion. */
+    volumeParent->forwardReference = NULL;
+    return IDirect3DVolume9_Release((IDirect3DVolume9*) volumeParent);
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/volumetexture.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/volumetexture.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/volumetexture.c	(revision 16410)
@@ -0,0 +1,279 @@
+/*
+ * IDirect3DVolumeTexture9 implementation
+ *
+ * Copyright 2002-2005 Jason Edmeades
+ *                     Raphael Junqueira
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "d3d9_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d9);
+
+/* IDirect3DVolumeTexture9 IUnknown parts follow: */
+static HRESULT WINAPI IDirect3DVolumeTexture9Impl_QueryInterface(LPDIRECT3DVOLUMETEXTURE9 iface, REFIID riid, LPVOID* ppobj) {
+    IDirect3DVolumeTexture9Impl *This = (IDirect3DVolumeTexture9Impl *)iface;
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+    || IsEqualGUID(riid, &IID_IDirect3DResource9)
+    || IsEqualGUID(riid, &IID_IDirect3DBaseTexture9)
+    || IsEqualGUID(riid, &IID_IDirect3DVolumeTexture9)) {
+        IDirect3DVolumeTexture9_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirect3DVolumeTexture9Impl_AddRef(LPDIRECT3DVOLUMETEXTURE9 iface) {
+    IDirect3DVolumeTexture9Impl *This = (IDirect3DVolumeTexture9Impl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef from %d\n", This, ref - 1);
+
+    return ref;
+}
+
+static ULONG WINAPI IDirect3DVolumeTexture9Impl_Release(LPDIRECT3DVOLUMETEXTURE9 iface) {
+    IDirect3DVolumeTexture9Impl *This = (IDirect3DVolumeTexture9Impl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : ReleaseRef to %d\n", This, ref);
+
+    if (ref == 0) {
+        IWineD3DVolumeTexture_Destroy(This->wineD3DVolumeTexture, D3D9CB_DestroyVolume);
+        IDirect3DDevice9Ex_Release(This->parentDevice);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+    return ref;
+}
+
+/* IDirect3DVolumeTexture9 IDirect3DResource9 Interface follow: */
+static HRESULT WINAPI IDirect3DVolumeTexture9Impl_GetDevice(LPDIRECT3DVOLUMETEXTURE9 iface, IDirect3DDevice9** ppDevice) {
+    IDirect3DVolumeTexture9Impl *This = (IDirect3DVolumeTexture9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IDirect3DResource9Impl_GetDevice((LPDIRECT3DRESOURCE9) This, ppDevice);
+}
+
+static HRESULT WINAPI IDirect3DVolumeTexture9Impl_SetPrivateData(LPDIRECT3DVOLUMETEXTURE9 iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) {
+    IDirect3DVolumeTexture9Impl *This = (IDirect3DVolumeTexture9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DVolumeTexture_SetPrivateData(This->wineD3DVolumeTexture, refguid, pData, SizeOfData, Flags);
+}
+
+static HRESULT WINAPI IDirect3DVolumeTexture9Impl_GetPrivateData(LPDIRECT3DVOLUMETEXTURE9 iface, REFGUID refguid, void* pData, DWORD* pSizeOfData) {
+    IDirect3DVolumeTexture9Impl *This = (IDirect3DVolumeTexture9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DVolumeTexture_GetPrivateData(This->wineD3DVolumeTexture, refguid, pData, pSizeOfData);
+}
+
+static HRESULT WINAPI IDirect3DVolumeTexture9Impl_FreePrivateData(LPDIRECT3DVOLUMETEXTURE9 iface, REFGUID refguid) {
+    IDirect3DVolumeTexture9Impl *This = (IDirect3DVolumeTexture9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DVolumeTexture_FreePrivateData(This->wineD3DVolumeTexture, refguid);
+}
+
+static DWORD WINAPI IDirect3DVolumeTexture9Impl_SetPriority(LPDIRECT3DVOLUMETEXTURE9 iface, DWORD PriorityNew) {
+    IDirect3DVolumeTexture9Impl *This = (IDirect3DVolumeTexture9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DVolumeTexture_SetPriority(This->wineD3DVolumeTexture, PriorityNew);
+}
+
+static DWORD WINAPI IDirect3DVolumeTexture9Impl_GetPriority(LPDIRECT3DVOLUMETEXTURE9 iface) {
+    IDirect3DVolumeTexture9Impl *This = (IDirect3DVolumeTexture9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DVolumeTexture_GetPriority(This->wineD3DVolumeTexture);
+}
+
+static void WINAPI IDirect3DVolumeTexture9Impl_PreLoad(LPDIRECT3DVOLUMETEXTURE9 iface) {
+    IDirect3DVolumeTexture9Impl *This = (IDirect3DVolumeTexture9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    IWineD3DVolumeTexture_PreLoad(This->wineD3DVolumeTexture);
+}
+
+static D3DRESOURCETYPE WINAPI IDirect3DVolumeTexture9Impl_GetType(LPDIRECT3DVOLUMETEXTURE9 iface) {
+    IDirect3DVolumeTexture9Impl *This = (IDirect3DVolumeTexture9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DVolumeTexture_GetType(This->wineD3DVolumeTexture);
+}
+
+/* IDirect3DVolumeTexture9 IDirect3DBaseTexture9 Interface follow: */
+static DWORD WINAPI IDirect3DVolumeTexture9Impl_SetLOD(LPDIRECT3DVOLUMETEXTURE9 iface, DWORD LODNew) {
+    IDirect3DVolumeTexture9Impl *This = (IDirect3DVolumeTexture9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DVolumeTexture_SetLOD(This->wineD3DVolumeTexture, LODNew);
+}
+
+static DWORD WINAPI IDirect3DVolumeTexture9Impl_GetLOD(LPDIRECT3DVOLUMETEXTURE9 iface) {
+    IDirect3DVolumeTexture9Impl *This = (IDirect3DVolumeTexture9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DVolumeTexture_GetLOD(This->wineD3DVolumeTexture);
+}
+
+static DWORD WINAPI IDirect3DVolumeTexture9Impl_GetLevelCount(LPDIRECT3DVOLUMETEXTURE9 iface) {
+    IDirect3DVolumeTexture9Impl *This = (IDirect3DVolumeTexture9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DVolumeTexture_GetLevelCount(This->wineD3DVolumeTexture);
+}
+
+static HRESULT WINAPI IDirect3DVolumeTexture9Impl_SetAutoGenFilterType(LPDIRECT3DVOLUMETEXTURE9 iface, D3DTEXTUREFILTERTYPE FilterType) {
+    IDirect3DVolumeTexture9Impl *This = (IDirect3DVolumeTexture9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DVolumeTexture_SetAutoGenFilterType(This->wineD3DVolumeTexture, (WINED3DTEXTUREFILTERTYPE) FilterType);
+}
+
+static D3DTEXTUREFILTERTYPE WINAPI IDirect3DVolumeTexture9Impl_GetAutoGenFilterType(LPDIRECT3DVOLUMETEXTURE9 iface) {
+    IDirect3DVolumeTexture9Impl *This = (IDirect3DVolumeTexture9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return (D3DTEXTUREFILTERTYPE) IWineD3DVolumeTexture_GetAutoGenFilterType(This->wineD3DVolumeTexture);
+}
+
+static void WINAPI IDirect3DVolumeTexture9Impl_GenerateMipSubLevels(LPDIRECT3DVOLUMETEXTURE9 iface) {
+    IDirect3DVolumeTexture9Impl *This = (IDirect3DVolumeTexture9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    IWineD3DVolumeTexture_GenerateMipSubLevels(This->wineD3DVolumeTexture);
+}
+
+/* IDirect3DVolumeTexture9 Interface follow: */
+static HRESULT WINAPI IDirect3DVolumeTexture9Impl_GetLevelDesc(LPDIRECT3DVOLUMETEXTURE9 iface, UINT Level, D3DVOLUME_DESC* pDesc) {
+    IDirect3DVolumeTexture9Impl *This = (IDirect3DVolumeTexture9Impl *)iface;
+    WINED3DVOLUME_DESC     wined3ddesc;
+    UINT                   tmpInt = -1;
+
+    TRACE("(%p) Relay\n", This);
+
+    /* As d3d8 and d3d9 structures differ, pass in ptrs to where data needs to go */
+    wined3ddesc.Format              = (WINED3DFORMAT *)&pDesc->Format;
+    wined3ddesc.Type                = (WINED3DRESOURCETYPE *)&pDesc->Type;
+    wined3ddesc.Usage               = &pDesc->Usage;
+    wined3ddesc.Pool                = (WINED3DPOOL *) &pDesc->Pool;
+    wined3ddesc.Size                = &tmpInt;
+    wined3ddesc.Width               = &pDesc->Width;
+    wined3ddesc.Height              = &pDesc->Height;
+    wined3ddesc.Depth               = &pDesc->Depth;
+
+    return IWineD3DVolumeTexture_GetLevelDesc(This->wineD3DVolumeTexture, Level, &wined3ddesc);
+}
+
+static HRESULT WINAPI IDirect3DVolumeTexture9Impl_GetVolumeLevel(LPDIRECT3DVOLUMETEXTURE9 iface, UINT Level, IDirect3DVolume9** ppVolumeLevel) {
+    IDirect3DVolumeTexture9Impl *This = (IDirect3DVolumeTexture9Impl *)iface;
+    HRESULT hrc = D3D_OK;
+    IWineD3DVolume *myVolume = NULL;
+
+    TRACE("(%p) Relay\n", This);
+
+    hrc = IWineD3DVolumeTexture_GetVolumeLevel(This->wineD3DVolumeTexture, Level, &myVolume);
+    if (hrc == D3D_OK && NULL != ppVolumeLevel) {
+       IWineD3DVolumeTexture_GetParent(myVolume, (IUnknown **)ppVolumeLevel);
+       IWineD3DVolumeTexture_Release(myVolume);
+    }
+    return hrc;
+}
+
+static HRESULT WINAPI IDirect3DVolumeTexture9Impl_LockBox(LPDIRECT3DVOLUMETEXTURE9 iface, UINT Level, D3DLOCKED_BOX* pLockedVolume, CONST D3DBOX* pBox, DWORD Flags) {
+    IDirect3DVolumeTexture9Impl *This = (IDirect3DVolumeTexture9Impl *)iface;
+    TRACE("(%p) Relay %p %p %p %d\n", This, This->wineD3DVolumeTexture, pLockedVolume, pBox,Flags);
+    return IWineD3DVolumeTexture_LockBox(This->wineD3DVolumeTexture, Level, (WINED3DLOCKED_BOX *)pLockedVolume, (CONST WINED3DBOX *)pBox, Flags);
+}
+
+static HRESULT WINAPI IDirect3DVolumeTexture9Impl_UnlockBox(LPDIRECT3DVOLUMETEXTURE9 iface, UINT Level) {
+    IDirect3DVolumeTexture9Impl *This = (IDirect3DVolumeTexture9Impl *)iface;
+    TRACE("(%p) Relay %p %d\n", This, This->wineD3DVolumeTexture, Level);
+    return IWineD3DVolumeTexture_UnlockBox(This->wineD3DVolumeTexture, Level);
+}
+
+static HRESULT WINAPI IDirect3DVolumeTexture9Impl_AddDirtyBox(LPDIRECT3DVOLUMETEXTURE9 iface, CONST D3DBOX* pDirtyBox) {
+    IDirect3DVolumeTexture9Impl *This = (IDirect3DVolumeTexture9Impl *)iface;
+    TRACE("(%p) Relay\n", This);
+    return IWineD3DVolumeTexture_AddDirtyBox(This->wineD3DVolumeTexture, (CONST WINED3DBOX *)pDirtyBox);
+}
+
+
+static const IDirect3DVolumeTexture9Vtbl Direct3DVolumeTexture9_Vtbl =
+{
+    /* IUnknown */
+    IDirect3DVolumeTexture9Impl_QueryInterface,
+    IDirect3DVolumeTexture9Impl_AddRef,
+    IDirect3DVolumeTexture9Impl_Release,
+    /* IDirect3DResource9 */
+    IDirect3DVolumeTexture9Impl_GetDevice,
+    IDirect3DVolumeTexture9Impl_SetPrivateData,
+    IDirect3DVolumeTexture9Impl_GetPrivateData,
+    IDirect3DVolumeTexture9Impl_FreePrivateData,
+    IDirect3DVolumeTexture9Impl_SetPriority,
+    IDirect3DVolumeTexture9Impl_GetPriority,
+    IDirect3DVolumeTexture9Impl_PreLoad,
+    IDirect3DVolumeTexture9Impl_GetType,
+    /* IDirect3DBaseTexture9 */
+    IDirect3DVolumeTexture9Impl_SetLOD,
+    IDirect3DVolumeTexture9Impl_GetLOD,
+    IDirect3DVolumeTexture9Impl_GetLevelCount,
+    IDirect3DVolumeTexture9Impl_SetAutoGenFilterType,
+    IDirect3DVolumeTexture9Impl_GetAutoGenFilterType,
+    IDirect3DVolumeTexture9Impl_GenerateMipSubLevels,
+    /* IDirect3DVolumeTexture9 */
+    IDirect3DVolumeTexture9Impl_GetLevelDesc,
+    IDirect3DVolumeTexture9Impl_GetVolumeLevel,
+    IDirect3DVolumeTexture9Impl_LockBox,
+    IDirect3DVolumeTexture9Impl_UnlockBox,
+    IDirect3DVolumeTexture9Impl_AddDirtyBox
+};
+
+
+/* IDirect3DDevice9 IDirect3DVolumeTexture9 Methods follow: */
+HRESULT  WINAPI  IDirect3DDevice9Impl_CreateVolumeTexture(LPDIRECT3DDEVICE9EX iface,
+                                                          UINT Width, UINT Height, UINT Depth, UINT Levels, DWORD Usage, 
+                                                          D3DFORMAT Format, D3DPOOL Pool, 
+                                                          IDirect3DVolumeTexture9** ppVolumeTexture, HANDLE* pSharedHandle) {
+
+    IDirect3DVolumeTexture9Impl *object;
+    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
+    HRESULT hrc = D3D_OK;
+
+    TRACE("(%p) Relay\n", This);
+
+    /* Allocate the storage for the device */
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DVolumeTexture9Impl));
+    if (NULL == object) {
+        FIXME("(%p) allocation of memory failed, returning D3DERR_OUTOFVIDEOMEMORY\n", This);
+        return D3DERR_OUTOFVIDEOMEMORY;
+    }
+
+    object->lpVtbl = &Direct3DVolumeTexture9_Vtbl;
+    object->ref = 1;
+    hrc = IWineD3DDevice_CreateVolumeTexture(This->WineD3DDevice, Width, Height, Depth, Levels, Usage & WINED3DUSAGE_MASK,
+                                 (WINED3DFORMAT)Format, (WINED3DPOOL) Pool, &object->wineD3DVolumeTexture, pSharedHandle,
+                                 (IUnknown *)object, D3D9CB_CreateVolume);
+
+
+    if (hrc != D3D_OK) {
+
+        /* free up object */
+        FIXME("(%p) call to IWineD3DDevice_CreateVolumeTexture failed\n", This);
+        HeapFree(GetProcessHeap(), 0, object);
+    } else {
+        IDirect3DDevice9Ex_AddRef(iface);
+        object->parentDevice = iface;
+        *ppVolumeTexture = (LPDIRECT3DVOLUMETEXTURE9) object;
+        TRACE("(%p) : Created volume texture %p\n", This, object);
+    }
+    TRACE("(%p)  returning %p\n", This , *ppVolumeTexture);
+    return hrc;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/Makefile.in
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/Makefile.in	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/Makefile.in	(revision 16410)
@@ -0,0 +1,511 @@
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ..
+SRCDIR    = @srcdir@
+VPATH	  = @srcdir@
+MODULE	  = none
+
+PRIVATE_IDL_H_SRCS = \
+	wine/wined3d.idl
+
+PUBLIC_IDL_H_SRCS = \
+	activaut.idl \
+	activdbg.idl \
+	activscp.idl \
+	amstream.idl \
+	amvideo.idl \
+	austream.idl \
+	bits.idl \
+	bits1_5.idl \
+	comcat.idl \
+	control.idl \
+	d3d10.idl \
+	ddstream.idl \
+	dimm.idl \
+	dispex.idl \
+	docobj.idl \
+	downloadmgr.idl \
+	dxgi.idl \
+	dxgitype.idl \
+	exdisp.idl \
+	fusion.idl \
+	hlink.idl \
+	htiframe.idl \
+	iads.idl \
+	icftypes.idl \
+	imnact.idl \
+	imnxport.idl \
+	indexsrv.idl \
+	mediaobj.idl \
+	mimeinfo.idl \
+	mimeole.idl \
+	mlang.idl \
+	mmstream.idl \
+	mscoree.idl \
+	mshtmhst.idl \
+	mshtml.idl \
+	msinkaut.idl \
+	mstask.idl \
+	msxml.idl \
+	msxml2.idl \
+	netfw.idl \
+	oaidl.idl \
+	objidl.idl \
+	objsafe.idl \
+	ocidl.idl \
+	ocmm.idl \
+	oleacc.idl \
+	oledb.idl \
+	oleidl.idl \
+	optary.idl \
+	propidl.idl \
+	pstore.idl \
+	qedit.idl \
+	richole.idl \
+	sensevts.idl \
+	servprov.idl \
+	shldisp.idl \
+	shobjidl.idl \
+	shtypes.idl \
+	strmif.idl \
+	tom.idl \
+	unknwn.idl \
+	urlhist.idl \
+	urlmon.idl \
+	vmr9.idl \
+	wine/itss.idl \
+	wine/svcctl.idl \
+	wtypes.idl \
+	xmldom.idl \
+	xmldso.idl
+
+IDL_TLB_SRCS = \
+	stdole2.idl
+
+SRCDIR_INCLUDES = \
+	$(IDL_TLB_SRCS) \
+	$(PUBLIC_IDL_H_SRCS) \
+	accctrl.h \
+	aclapi.h \
+	adshlp.h \
+	advpub.h \
+	appmgmt.h \
+	audevcod.h \
+	aviriff.h \
+	axcore.idl \
+	axextend.idl \
+	basetsd.h \
+	basetyps.h \
+	bcrypt.h \
+	bitsmsg.h \
+	cderr.h \
+	cfgmgr32.h \
+	cguid.h \
+	cierror.h \
+	clusapi.h \
+	commctrl.h \
+	commctrl.rh \
+	commdlg.h \
+	compobj.h \
+	cor.h \
+	corerror.h \
+	corhdr.h \
+	cpl.h \
+	cryptdlg.h \
+	cryptuiapi.h \
+	custcntl.h \
+	cvconst.h \
+	d3d.h \
+	d3d10misc.h \
+	d3d8.h \
+	d3d8caps.h \
+	d3d8types.h \
+	d3d9.h \
+	d3d9caps.h \
+	d3d9types.h \
+	d3dcaps.h \
+	d3dhal.h \
+	d3drm.h \
+	d3drmdef.h \
+	d3drmobj.h \
+	d3dtypes.h \
+	d3dvec.inl \
+	d3dx8.h \
+	d3dx8core.h \
+	d3dx8math.h \
+	d3dx8math.inl \
+	d3dx8mesh.h \
+	d3dx9.h \
+	d3dx9core.h \
+	d3dx9math.h \
+	d3dx9math.inl \
+	d3dx9shader.h \
+	d3dx9tex.h \
+	dbghelp.h \
+	dbinit.idl \
+	dbprop.idl \
+	dbs.idl \
+	dbt.h \
+	dciddi.h \
+	dciman.h \
+	dde.h \
+	ddeml.h \
+	ddk/compstui.h \
+	ddk/hidsdi.h \
+	ddk/imm.h \
+	ddk/mountmgr.h \
+	ddk/ntddcdvd.h \
+	ddk/ntddk.h \
+	ddk/ntddser.h \
+	ddk/ntddtape.h \
+	ddk/usb.h \
+	ddk/usb100.h \
+	ddk/usb200.h \
+	ddk/usbdlib.h \
+	ddk/wdm.h \
+	ddk/winddiui.h \
+	ddk/winsplp.h \
+	ddraw.h \
+	ddrawi.h \
+	devenum.idl \
+	devguid.h \
+	digitalv.h \
+	dinput.h \
+	dispdib.h \
+	dlgs.h \
+	dls1.h \
+	dls2.h \
+	dmdls.h \
+	dmerror.h \
+	dmo.h \
+	dmoreg.h \
+	dmort.h \
+	dmplugin.h \
+	dmusbuff.h \
+	dmusicc.h \
+	dmusicf.h \
+	dmusici.h \
+	dmusics.h \
+	dpaddr.h \
+	dplay.h \
+	dplay8.h \
+	dplobby.h \
+	dplobby8.h \
+	dpnathlp.h \
+	dsconf.h \
+	dsdriver.h \
+	dsgetdc.h \
+	dshow.h \
+	dsound.h \
+	dsrole.h \
+	dvdmedia.h \
+	dwmapi.h \
+	dxdiag.h \
+	dxerr8.h \
+	dxerr9.h \
+	dxfile.h \
+	dyngraph.idl \
+	errorrep.h \
+	errors.h \
+	evcode.h \
+	evntrace.h \
+	excpt.h \
+	exdispid.h \
+	fci.h \
+	fdi.h \
+	gdiplus.h \
+	gdipluscolor.h \
+	gdipluscolormatrix.h \
+	gdiplusenums.h \
+	gdiplusflat.h \
+	gdiplusgpstubs.h \
+	gdiplusimaging.h \
+	gdiplusinit.h \
+	gdiplusmem.h \
+	gdiplusmetaheader.h \
+	gdipluspixelformats.h \
+	gdiplustypes.h \
+	guiddef.h \
+	hlguids.h \
+	htmlhelp.h \
+	i_cryptasn1tls.h \
+	icm.h \
+	icmpapi.h \
+	idispids.h \
+	imagehlp.h \
+	imm.h \
+	initguid.h \
+	intshcut.h \
+	ipexport.h \
+	iphlpapi.h \
+	ipifcons.h \
+	iprtrmib.h \
+	iptypes.h \
+	isguids.h \
+	ks.h \
+	ksguid.h \
+	ksmedia.h \
+	lm.h \
+	lmaccess.h \
+	lmapibuf.h \
+	lmbrowsr.h \
+	lmcons.h \
+	lmerr.h \
+	lmjoin.h \
+	lmmsg.h \
+	lmserver.h \
+	lmshare.h \
+	lmstats.h \
+	lmuse.h \
+	lmuseflg.h \
+	lmwksta.h \
+	lzexpand.h \
+	mapi.h \
+	mapicode.h \
+	mapidefs.h \
+	mapiform.h \
+	mapiguid.h \
+	mapitags.h \
+	mapiutil.h \
+	mapival.h \
+	mapix.h \
+	mciavi.h \
+	mcx.h \
+	mediaerr.h \
+	midles.h \
+	minmax.h \
+	mmddk.h \
+	mmreg.h \
+	mmsystem.h \
+	mprapi.h \
+	msacm.h \
+	msacmdlg.h \
+	msacmdrv.h \
+	mscat.h \
+	mshtmcid.h \
+	mshtmdid.h \
+	msi.h \
+	msidefs.h \
+	msiquery.h \
+	mssip.h \
+	msvcrt/conio.h \
+	msvcrt/crtdbg.h \
+	msvcrt/ctype.h \
+	msvcrt/direct.h \
+	msvcrt/dirent.h \
+	msvcrt/dos.h \
+	msvcrt/eh.h \
+	msvcrt/errno.h \
+	msvcrt/fcntl.h \
+	msvcrt/float.h \
+	msvcrt/io.h \
+	msvcrt/limits.h \
+	msvcrt/locale.h \
+	msvcrt/malloc.h \
+	msvcrt/math.h \
+	msvcrt/mbctype.h \
+	msvcrt/mbstring.h \
+	msvcrt/process.h \
+	msvcrt/search.h \
+	msvcrt/setjmp.h \
+	msvcrt/share.h \
+	msvcrt/signal.h \
+	msvcrt/stddef.h \
+	msvcrt/stdio.h \
+	msvcrt/stdlib.h \
+	msvcrt/string.h \
+	msvcrt/sys/locking.h \
+	msvcrt/sys/stat.h \
+	msvcrt/sys/timeb.h \
+	msvcrt/sys/types.h \
+	msvcrt/sys/unistd.h \
+	msvcrt/sys/utime.h \
+	msvcrt/time.h \
+	msvcrt/unistd.h \
+	msvcrt/wchar.h \
+	msvcrt/wctype.h \
+	mswsock.h \
+	msxml2did.h \
+	msxmldid.h \
+	nb30.h \
+	ndrtypes.h \
+	npapi.h \
+	nspapi.h \
+	ntddcdrm.h \
+	ntddscsi.h \
+	ntddstor.h \
+	ntdsapi.h \
+	ntquery.h \
+	ntsecapi.h \
+	ntsecpkg.h \
+	ntstatus.h \
+	objbase.h \
+	objsel.h \
+	odbcinst.h \
+	ole2.h \
+	ole2ver.h \
+	oleauto.h \
+	olectl.h \
+	oledlg.h \
+	pdh.h \
+	pdhmsg.h \
+	pktdef.h \
+	poppack.h \
+	powrprof.h \
+	profinfo.h \
+	propvarutil.h \
+	prsht.h \
+	psapi.h \
+	pshpack1.h \
+	pshpack2.h \
+	pshpack4.h \
+	pshpack8.h \
+	ras.h \
+	raserror.h \
+	reason.h \
+	regstr.h \
+	richedit.h \
+	rmxfguid.h \
+	rpc.h \
+	rpcasync.h \
+	rpcdce.h \
+	rpcdcep.h \
+	rpcndr.h \
+	rpcnterr.h \
+	rpcproxy.h \
+	scarderr.h \
+	schannel.h \
+	schemadef.h \
+	schnlsp.h \
+	sddl.h \
+	secext.h \
+	security.h \
+	sensapi.h \
+	setupapi.h \
+	sfc.h \
+	shdispid.h \
+	shellapi.h \
+	shlguid.h \
+	shlobj.h \
+	shlwapi.h \
+	sipbase.h \
+	slerror.h \
+	slpublic.h \
+	snmp.h \
+	softpub.h \
+	sql.h \
+	sqlext.h \
+	sqltypes.h \
+	srrestoreptapi.h \
+	sspi.h \
+	storage.h \
+	svrapi.h \
+	tapi.h \
+	tchar.h \
+	textserv.h \
+	tlhelp32.h \
+	tmschema.h \
+	twain.h \
+	userenv.h \
+	usp10.h \
+	uuids.h \
+	uxtheme.h \
+	vdmdbg.h \
+	ver.h \
+	vfw.h \
+	vfwmsgs.h \
+	vmrender.idl \
+	wfext.h \
+	winbase.h \
+	wincon.h \
+	wincred.h \
+	wincrypt.h \
+	windef.h \
+	windns.h \
+	windows.h \
+	windowsx.h \
+	wine/debug.h \
+	wine/exception.h \
+	wine/library.h \
+	wine/unicode.h \
+	winerror.h \
+	wingdi.h \
+	winhttp.h \
+	wininet.h \
+	winineti.h \
+	winioctl.h \
+	winldap.h \
+	winnetwk.h \
+	winnls.h \
+	winnls32.h \
+	winnt.h \
+	winperf.h \
+	winreg.h \
+	winresrc.h \
+	winscard.h \
+	winsmcrd.h \
+	winsock.h \
+	winsock2.h \
+	winspool.h \
+	winsvc.h \
+	wintab.h \
+	wintabx.h \
+	winternl.h \
+	wintrust.h \
+	winuser.h \
+	winuser.rh \
+	winver.h \
+	wmistr.h \
+	wnaspi32.h \
+	wownt32.h \
+	ws2spi.h \
+	ws2tcpip.h \
+	wshisotp.h \
+	wsipx.h \
+	wsnwlink.h \
+	wtsapi32.h \
+	xcmc.h \
+	xinput.h \
+	xmldomdid.h \
+	xmldsodid.h \
+	zmouse.h
+
+EXTRASUBDIRS = ddk msvcrt msvcrt/sys wine
+
+INSTALLDIRS = \
+	$(DESTDIR)$(includedir)/windows/ddk \
+	$(DESTDIR)$(includedir)/windows \
+	$(DESTDIR)$(includedir)/msvcrt/sys \
+	$(DESTDIR)$(includedir)/msvcrt \
+	$(DESTDIR)$(includedir)
+
+IDL_H_SRCS = $(PUBLIC_IDL_H_SRCS) $(PRIVATE_IDL_H_SRCS)
+
+@MAKE_RULES@
+
+OBJDIR_INCLUDES = $(PUBLIC_IDL_H_SRCS:.idl=.h) $(IDL_TLB_SRCS:.idl=.tlb)
+
+all: $(IDL_H_SRCS:.idl=.h) $(IDL_TLB_SRCS:.idl=.tlb)
+
+install install-dev:: $(OBJDIR_INCLUDES) $(INSTALLDIRS)
+	for f in $(SRCDIR_INCLUDES); do case $$f in \
+	  wine/*)   $(INSTALL_DATA) $(SRCDIR)/$$f $(DESTDIR)$(includedir)/`expr $$f : 'wine/\(.*\)'` ;; \
+	  msvcrt/*) $(INSTALL_DATA) $(SRCDIR)/$$f $(DESTDIR)$(includedir)/$$f ;; \
+	  *)        $(INSTALL_DATA) $(SRCDIR)/$$f $(DESTDIR)$(includedir)/windows/$$f ;; \
+	esac; done
+	for f in $(OBJDIR_INCLUDES); do case $$f in \
+	  wine/*)   $(INSTALL_DATA) $$f $(DESTDIR)$(includedir)/`expr $$f : 'wine/\(.*\)'` ;; \
+	  msvcrt/*) $(INSTALL_DATA) $$f $(DESTDIR)$(includedir)/$$f ;; \
+	  *)        $(INSTALL_DATA) $$f $(DESTDIR)$(includedir)/windows/$$f ;; \
+	esac; done
+
+# Don't just do a rm -rf on $(includedir) -- don't want to wipe out
+# anything extra the user may have put there.
+uninstall::
+	for f in $(SRCDIR_INCLUDES) $(OBJDIR_INCLUDES); do case $$f in \
+	  wine/*)   $(RM) $(DESTDIR)$(includedir)/`expr $$f : 'wine/\(.*\)'` ;; \
+	  msvcrt/*) $(RM) $(DESTDIR)$(includedir)/$$f ;; \
+	  *)        $(RM) $(DESTDIR)$(includedir)/windows/$$f ;; \
+	esac; done
+	-rmdir $(INSTALLDIRS)
+
+@DEPENDENCIES@  # everything below this line is overwritten by make depend
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/accctrl.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/accctrl.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/accctrl.h	(revision 16410)
@@ -0,0 +1,451 @@
+/*
+ * Copyright (C) 2002 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_ACCCTRL_H
+#define __WINE_ACCCTRL_H
+
+#include <wtypes.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum _SE_OBJECT_TYPE
+{
+    SE_UNKNOWN_OBJECT_TYPE = 0,
+    SE_FILE_OBJECT,
+    SE_SERVICE,
+    SE_PRINTER,
+    SE_REGISTRY_KEY,
+    SE_LMSHARE,
+    SE_KERNEL_OBJECT,
+    SE_WINDOW_OBJECT,
+    SE_DS_OBJECT,
+    SE_DS_OBJECT_ALL,
+    SE_PROVIDER_DEFINED_OBJECT,
+    SE_WMIGUID_OBJECT,
+    SE_REGISTRY_WOW64_32KEY
+} SE_OBJECT_TYPE;
+
+typedef enum _TRUSTEE_TYPE
+{
+    TRUSTEE_IS_UNKNOWN,
+    TRUSTEE_IS_USER,
+    TRUSTEE_IS_GROUP,
+    TRUSTEE_IS_DOMAIN,
+    TRUSTEE_IS_ALIAS,
+    TRUSTEE_IS_WELL_KNOWN_GROUP,
+    TRUSTEE_IS_DELETED,
+    TRUSTEE_IS_INVALID,
+    TRUSTEE_IS_COMPUTER
+} TRUSTEE_TYPE;
+
+typedef enum _TRUSTEE_FORM
+{
+    TRUSTEE_IS_SID,
+    TRUSTEE_IS_NAME,
+    TRUSTEE_BAD_FORM,
+    TRUSTEE_IS_OBJECTS_AND_SID,
+    TRUSTEE_IS_OBJECTS_AND_NAME
+} TRUSTEE_FORM;
+
+typedef enum _MULTIPLE_TRUSTEE_OPERATION
+{
+    NO_MULTIPLE_TRUSTEE,
+    TRUSTEE_IS_IMPERSONATE,
+} MULTIPLE_TRUSTEE_OPERATION;
+
+typedef struct  _OBJECTS_AND_SID
+{
+    DWORD   ObjectsPresent;
+    GUID    ObjectTypeGuid;
+    GUID    InheritedObjectTypeGuid;
+    SID    *pSid;
+} OBJECTS_AND_SID, *POBJECTS_AND_SID;
+
+typedef struct  _OBJECTS_AND_NAME_A
+{
+    DWORD          ObjectsPresent;
+    SE_OBJECT_TYPE ObjectType;
+    LPSTR          ObjectTypeName;
+    LPSTR          InheritedObjectTypeName;
+    LPSTR          ptstrName;
+} OBJECTS_AND_NAME_A, *POBJECTS_AND_NAME_A;
+
+typedef struct  _OBJECTS_AND_NAME_W
+{
+    DWORD          ObjectsPresent;
+    SE_OBJECT_TYPE ObjectType;
+    LPWSTR         ObjectTypeName;
+    LPWSTR         InheritedObjectTypeName;
+    LPWSTR         ptstrName;
+} OBJECTS_AND_NAME_W, *POBJECTS_AND_NAME_W;
+
+DECL_WINELIB_TYPE_AW(OBJECTS_AND_NAME_)
+DECL_WINELIB_TYPE_AW(POBJECTS_AND_NAME_)
+
+typedef struct _TRUSTEE_A
+{
+    struct _TRUSTEE_A          *pMultipleTrustee;
+    MULTIPLE_TRUSTEE_OPERATION  MultipleTrusteeOperation;
+    TRUSTEE_FORM                TrusteeForm;
+    TRUSTEE_TYPE                TrusteeType;
+    LPSTR                       ptstrName;
+} TRUSTEE_A, *PTRUSTEE_A, TRUSTEEA, *PTRUSTEEA;
+
+typedef struct _TRUSTEE_W
+{
+    struct _TRUSTEE_W          *pMultipleTrustee;
+    MULTIPLE_TRUSTEE_OPERATION  MultipleTrusteeOperation;
+    TRUSTEE_FORM                TrusteeForm;
+    TRUSTEE_TYPE                TrusteeType;
+    LPWSTR                      ptstrName;
+} TRUSTEE_W, *PTRUSTEE_W, TRUSTEEW, *PTRUSTEEW;
+
+DECL_WINELIB_TYPE_AW(TRUSTEE_)
+DECL_WINELIB_TYPE_AW(PTRUSTEE_)
+DECL_WINELIB_TYPE_AW(TRUSTEE)
+DECL_WINELIB_TYPE_AW(PTRUSTEE)
+
+typedef enum _ACCESS_MODE
+{
+    NOT_USED_ACCESS = 0,
+    GRANT_ACCESS,
+    SET_ACCESS,
+    DENY_ACCESS,
+    REVOKE_ACCESS,
+    SET_AUDIT_SUCCESS,
+    SET_AUDIT_FAILURE
+} ACCESS_MODE;
+
+#define NO_INHERITANCE                      0x0
+#define SUB_OBJECTS_ONLY_INHERIT            0x1
+#define SUB_CONTAINERS_ONLY_INHERIT         0x2
+#define SUB_CONTAINERS_AND_OBJECTS_INHERIT  0x3
+#define INHERIT_NO_PROPAGATE                0x4
+#define INHERIT_ONLY                        0x8
+#define INHERITED_ACCESS_ENTRY              0x10
+#define INHERITED_PARENT                    0x10000000
+#define INHERITED_GRANDPARENT               0x20000000
+
+typedef struct _EXPLICIT_ACCESS_A
+{
+    DWORD        grfAccessPermissions;
+    ACCESS_MODE  grfAccessMode;
+    DWORD        grfInheritance;
+    TRUSTEE_A    Trustee;
+} EXPLICIT_ACCESS_A, *PEXPLICIT_ACCESS_A, EXPLICIT_ACCESSA, *PEXPLICIT_ACCESSA;
+
+typedef struct _EXPLICIT_ACCESS_W
+{
+    DWORD        grfAccessPermissions;
+    ACCESS_MODE  grfAccessMode;
+    DWORD        grfInheritance;
+    TRUSTEE_W    Trustee;
+} EXPLICIT_ACCESS_W, *PEXPLICIT_ACCESS_W, EXPLICIT_ACCESSW, *PEXPLICIT_ACCESSW;
+
+DECL_WINELIB_TYPE_AW(EXPLICIT_ACCESS_)
+DECL_WINELIB_TYPE_AW(PEXPLICIT_ACCESS_)
+DECL_WINELIB_TYPE_AW(EXPLICIT_ACCESS)
+DECL_WINELIB_TYPE_AW(PEXPLICIT_ACCESS)
+
+typedef ULONG ACCESS_RIGHTS, *PACCESS_RIGHTS;
+typedef ULONG INHERIT_FLAGS, *PINHERIT_FLAGS;
+
+typedef struct _ACTRL_ACCESS_ENTRYA
+{
+    TRUSTEE_A     Trustee;
+    ULONG         fAccessFlags;
+    ACCESS_RIGHTS Access;
+    ACCESS_RIGHTS ProvSpecificAccess;
+    INHERIT_FLAGS Inheritance;
+    LPSTR         lpInheritProperty;
+} ACTRL_ACCESS_ENTRYA, *PACTRL_ACCESS_ENTRYA;
+
+typedef struct _ACTRL_ACCESS_ENTRYW
+{
+    TRUSTEE_W     Trustee;
+    ULONG         fAccessFlags;
+    ACCESS_RIGHTS Access;
+    ACCESS_RIGHTS ProvSpecificAccess;
+    INHERIT_FLAGS Inheritance;
+    LPWSTR        lpInheritProperty;
+} ACTRL_ACCESS_ENTRYW, *PACTRL_ACCESS_ENTRYW;
+
+DECL_WINELIB_TYPE_AW(ACTRL_ACCESS_ENTRY)
+DECL_WINELIB_TYPE_AW(PACTRL_ACCESS_ENTRY)
+
+
+typedef struct _ACTRL_ACCESS_ENTRY_LISTA
+{
+    ULONG                cEntries;
+    ACTRL_ACCESS_ENTRYA *pAccessList;
+} ACTRL_ACCESS_ENTRY_LISTA, *PACTRL_ACCESS_ENTRY_LISTA;
+
+typedef struct _ACTRL_ACCESS_ENTRY_LISTW
+{
+    ULONG                cEntries;
+    ACTRL_ACCESS_ENTRYW *pAccessList;
+} ACTRL_ACCESS_ENTRY_LISTW, *PACTRL_ACCESS_ENTRY_LISTW;
+
+DECL_WINELIB_TYPE_AW(ACTRL_ACCESS_ENTRY_LIST)
+DECL_WINELIB_TYPE_AW(PACTRL_ACCESS_ENTRY_LIST)
+
+typedef struct _ACTRL_PROPERTY_ENTRYA
+{
+    LPSTR                     lpProperty;
+    PACTRL_ACCESS_ENTRY_LISTA pAccessEntryList;
+    ULONG                     fListFlags;
+} ACTRL_PROPERTY_ENTRYA, *PACTRL_PROPERTY_ENTRYA;
+
+typedef struct _ACTRL_PROPERTY_ENTRYW
+{
+    LPWSTR                    lpProperty;
+    PACTRL_ACCESS_ENTRY_LISTW pAccessEntryList;
+    ULONG                     fListFlags;
+} ACTRL_PROPERTY_ENTRYW, *PACTRL_PROPERTY_ENTRYW;
+
+DECL_WINELIB_TYPE_AW(ACTRL_PROPERTY_ENTRY)
+DECL_WINELIB_TYPE_AW(PACTRL_PROPERTY_ENTRY)
+
+typedef struct _ACTRL_ALISTA
+{
+    ULONG                  cEntries;
+    PACTRL_PROPERTY_ENTRYA pPropertyAccessList;
+} ACTRL_ACCESSA, *PACTRL_ACCESSA, ACTRL_AUDITA, *PACTRL_AUDITA;
+
+typedef struct _ACTRL_ALISTW
+{
+    ULONG                  cEntries;
+    PACTRL_PROPERTY_ENTRYW pPropertyAccessList;
+} ACTRL_ACCESSW, *PACTRL_ACCESSW, ACTRL_AUDITW, *PACTRL_AUDITW;
+
+DECL_WINELIB_TYPE_AW(ACTRL_ACCESS)
+DECL_WINELIB_TYPE_AW(PACTRL_ACCESS)
+DECL_WINELIB_TYPE_AW(ACTRL_AUDIT)
+DECL_WINELIB_TYPE_AW(PACTRL_AUDIT)
+
+#define TRUSTEE_ACCESS_ALLOWED      0x00000001
+#define TRUSTEE_ACCESS_READ         0x00000002
+#define TRUSTEE_ACCESS_WRITE        0x00000004
+
+#define TRUSTEE_ACCESS_EXPLICIT     0x00000001
+#define TRUSTEE_ACCESS_READ_WRITE   (TRUSTEE_ACCESS_READ|TRUSTEE_ACCESS_WRITE)
+#define TRUSTEE_ACCESS_ALL          0xFFFFFFFF
+
+typedef struct _TRUSTEE_ACCESSA
+{
+    LPSTR         lpProperty;
+    ACCESS_RIGHTS Access;
+    ULONG         fAccessFlags;
+    ULONG         fReturnedAccess;
+} TRUSTEE_ACCESSA, *PTRUSTEE_ACCESSA;
+
+typedef struct _TRUSTEE_ACCESSW
+{
+    LPWSTR        lpProperty;
+    ACCESS_RIGHTS Access;
+    ULONG         fAccessFlags;
+    ULONG         fReturnedAccess;
+} TRUSTEE_ACCESSW, *PTRUSTEE_ACCESSW;
+
+DECL_WINELIB_TYPE_AW(TRUSTEE_ACCESS)
+DECL_WINELIB_TYPE_AW(PTRUSTEE_ACCESS)
+
+#define ACTRL_RESERVED              0x00000000
+#define ACTRL_PERM_1                0x00000001
+#define ACTRL_PERM_2                0x00000002
+#define ACTRL_PERM_3                0x00000004
+#define ACTRL_PERM_4                0x00000008
+#define ACTRL_PERM_5                0x00000010
+#define ACTRL_PERM_6                0x00000020
+#define ACTRL_PERM_7                0x00000040
+#define ACTRL_PERM_8                0x00000080
+#define ACTRL_PERM_9                0x00000100
+#define ACTRL_PERM_10               0x00000200
+#define ACTRL_PERM_11               0x00000400
+#define ACTRL_PERM_12               0x00000800
+#define ACTRL_PERM_13               0x00001000
+#define ACTRL_PERM_14               0x00002000
+#define ACTRL_PERM_15               0x00004000
+#define ACTRL_PERM_16               0x00008000
+#define ACTRL_PERM_17               0x00010000
+#define ACTRL_PERM_18               0x00020000
+#define ACTRL_PERM_19               0x00040000
+#define ACTRL_PERM_20               0x00080000
+
+#define ACTRL_ACCESS_ALLOWED        0x00000001
+#define ACTRL_ACCESS_DENIED         0x00000002
+#define ACTRL_AUDIT_SUCCESS         0x00000004
+#define ACTRL_AUDIT_FAILURE         0x00000008
+
+#define ACTRL_ACCESS_PROTECTED      0x00000001
+
+#define ACTRL_SYSTEM_ACCESS         0x04000000
+#define ACTRL_DELETE                0x08000000
+#define ACTRL_READ_CONTROL          0x10000000
+#define ACTRL_CHANGE_ACCESS         0x20000000
+#define ACTRL_CHANGE_OWNER          0x40000000
+#define ACTRL_SYNCHRONIZE           0x80000000
+#define ACTRL_STD_RIGHTS_ALL        0xf8000000
+#define ACTRL_STD_RIGHT_REQUIRED    (ACTRL_STD_RIGHTS_ALL & ~ACTRL_SYNCHRONIZE)
+
+#define ACTRL_DS_OPEN               ACTRL_RESERVED
+#define ACTRL_DS_CREATE_CHILD       ACTRL_PERM_1
+#define ACTRL_DS_DELETE_CHILD       ACTRL_PERM_2
+#define ACTRL_DS_LIST               ACTRL_PERM_3
+#define ACTRL_DS_SELF               ACTRL_PERM_4
+#define ACTRL_DS_READ_PROP          ACTRL_PERM_5
+#define ACTRL_DS_WRITE_PROP         ACTRL_PERM_6
+#define ACTRL_DS_DELETE_TREE        ACTRL_PERM_7
+#define ACTRL_DS_LIST_OBJECT        ACTRL_PERM_8
+#define ACTRL_DS_CONTROL_ACCESS     ACTRL_PERM_9
+
+#define ACTRL_FILE_READ             ACTRL_PERM_1
+#define ACTRL_FILE_WRITE            ACTRL_PERM_2
+#define ACTRL_FILE_APPEND           ACTRL_PERM_3
+#define ACTRL_FILE_READ_PROP        ACTRL_PERM_4
+#define ACTRL_FILE_WRITE_PROP       ACTRL_PERM_5
+#define ACTRL_FILE_EXECUTE          ACTRL_PERM_6
+#define ACTRL_FILE_READ_ATTRIB      ACTRL_PERM_8
+#define ACTRL_FILE_WRITE_ATTRIB     ACTRL_PERM_9
+#define ACTRL_FILE_CREATE_PIPE      ACTRL_PERM_10
+#define ACTRL_DIR_LIST              ACTRL_PERM_1
+#define ACTRL_DIR_CREATE_OBJECT     ACTRL_PERM_2
+#define ACTRL_DIR_CREATE_CHILD      ACTRL_PERM_3
+#define ACTRL_DIR_DELETE_CHILD      ACTRL_PERM_7
+#define ACTRL_DIR_TRAVERSE          ACTRL_PERM_6
+#define ACTRL_KERNEL_TERMINATE      ACTRL_PERM_1
+#define ACTRL_KERNEL_THREAD         ACTRL_PERM_2
+#define ACTRL_KERNEL_VM             ACTRL_PERM_3
+#define ACTRL_KERNEL_VM_READ        ACTRL_PERM_4
+#define ACTRL_KERNEL_VM_WRITE       ACTRL_PERM_5
+#define ACTRL_KERNEL_DUP_HANDLE     ACTRL_PERM_6
+#define ACTRL_KERNEL_PROCESS        ACTRL_PERM_7
+#define ACTRL_KERNEL_SET_INFO       ACTRL_PERM_8
+#define ACTRL_KERNEL_GET_INFO       ACTRL_PERM_9
+#define ACTRL_KERNEL_CONTROL        ACTRL_PERM_10
+#define ACTRL_KERNEL_ALERT          ACTRL_PERM_11
+#define ACTRL_KERNEL_GET_CONTEXT    ACTRL_PERM_12
+#define ACTRL_KERNEL_SET_CONTEXT    ACTRL_PERM_13
+#define ACTRL_KERNEL_TOKEN          ACTRL_PERM_14
+#define ACTRL_KERNEL_IMPERSONATE    ACTRL_PERM_15
+#define ACTRL_KERNEL_DIMPERSONATE   ACTRL_PERM_16
+#define ACTRL_PRINT_SADMIN          ACTRL_PERM_1
+#define ACTRL_PRINT_SLIST           ACTRL_PERM_2
+#define ACTRL_PRINT_PADMIN          ACTRL_PERM_3
+#define ACTRL_PRINT_PUSE            ACTRL_PERM_4
+#define ACTRL_PRINT_JADMIN          ACTRL_PERM_5
+#define ACTRL_SVC_GET_INFO          ACTRL_PERM_1
+#define ACTRL_SVC_SET_INFO          ACTRL_PERM_2
+#define ACTRL_SVC_STATUS            ACTRL_PERM_3
+#define ACTRL_SVC_LIST              ACTRL_PERM_4
+#define ACTRL_SVC_START             ACTRL_PERM_5
+#define ACTRL_SVC_STOP              ACTRL_PERM_6
+#define ACTRL_SVC_PAUSE             ACTRL_PERM_7
+#define ACTRL_SVC_INTERROGATE       ACTRL_PERM_8
+#define ACTRL_SVC_UCONTROL          ACTRL_PERM_9
+#define ACTRL_REG_QUERY             ACTRL_PERM_1
+#define ACTRL_REG_SET               ACTRL_PERM_2
+#define ACTRL_REG_CREATE_CHILD      ACTRL_PERM_3
+#define ACTRL_REG_LIST              ACTRL_PERM_4
+#define ACTRL_REG_NOTIFY            ACTRL_PERM_5
+#define ACTRL_REG_LINK              ACTRL_PERM_6
+#define ACTRL_WIN_CLIPBRD           ACTRL_PERM_1
+#define ACTRL_WIN_GLOBAL_ATOMS      ACTRL_PERM_2
+#define ACTRL_WIN_CREATE            ACTRL_PERM_3
+#define ACTRL_WIN_LIST_DESK         ACTRL_PERM_4
+#define ACTRL_WIN_LIST              ACTRL_PERM_5
+#define ACTRL_WIN_READ_ATTRIBS      ACTRL_PERM_6
+#define ACTRL_WIN_WRITE_ATTRIBS     ACTRL_PERM_7
+#define ACTRL_WIN_SCREEN            ACTRL_PERM_8
+#define ACTRL_WIN_EXIT              ACTRL_PERM_9
+
+#define ACTRL_ACCESS_NO_OPTIONS                 0x00000000
+#define ACTRL_ACCESS_SUPPORTS_OBJECT_ENTRIES    0x00000001
+
+typedef struct _ACTRL_OVERLAPPED
+{
+    union {
+        PVOID Provider;
+        ULONG Reserved1;
+    } DUMMYUNIONNAME;
+    ULONG  Reserved2;
+    HANDLE hEvent;
+} ACTRL_OVERLAPPED, *PACTRL_OVERLAPPED;
+
+typedef struct _ACTRL_ACCESS_INFOA
+{
+    ULONG  fAccessPermission;
+    LPSTR  lpAccessPermissionName;
+} ACTRL_ACCESS_INFOA, *PACTRL_ACCESS_INFOA;
+
+typedef struct _ACTRL_ACCESS_INFOW
+{
+    ULONG  fAccessPermission;
+    LPWSTR lpAccessPermissionName;
+} ACTRL_ACCESS_INFOW, *PACTRL_ACCESS_INFOW;
+
+DECL_WINELIB_TYPE_AW(ACTRL_ACCESS_INFO)
+DECL_WINELIB_TYPE_AW(PACTRL_ACCESS_INFO)
+
+typedef struct _ACTRL_CONTROL_INFOA
+{
+    LPSTR  lpControlId;
+    LPSTR  lpControlName;
+} ACTRL_CONTROL_INFOA, *PACTRL_CONTROL_INFOA;
+
+typedef struct _ACTRL_CONTROL_INFOW
+{
+    LPWSTR lpControlId;
+    LPWSTR lpControlName;
+} ACTRL_CONTROL_INFOW, *PACTRL_CONTROL_INFOW;
+
+DECL_WINELIB_TYPE_AW(ACTRL_CONTROL_INFO)
+DECL_WINELIB_TYPE_AW(PACTRL_CONTROL_INFO)
+
+typedef enum _PROGRESS_INVOKE_SETTING {
+    ProgressInvokeNever = 1,
+    ProgressInvokeEveryObject,
+    ProgressInvokeOnError,
+    ProgressCancelOperation,
+    ProgressRetryOperation
+} PROG_INVOKE_SETTING, *PPROG_INVOKE_SETTING;
+
+typedef struct _INHERITED_FROMA
+{
+    LONG   GenerationGap;
+    LPSTR  AncestorName;
+} INHERITED_FROMA, *PINHERITED_FROMA;
+
+typedef struct _INHERITED_FROMW
+{
+    LONG   GenerationGap;
+    LPWSTR AncestorName;
+} INHERITED_FROMW, *PINHERITED_FROMW;
+
+DECL_WINELIB_TYPE_AW(INHERITED_FROM)
+DECL_WINELIB_TYPE_AW(PINHERITED_FROM)
+
+#define AccFree LocalFree
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_ACCCTRL_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/aclapi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/aclapi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/aclapi.h	(revision 16410)
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2004 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_ACLAPI_H
+#define __WINE_ACLAPI_H
+
+#ifndef __WINESRC__
+# include <windows.h>
+#endif
+#include <accctrl.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+WINADVAPI DWORD  WINAPI GetExplicitEntriesFromAclA( PACL, PULONG, PEXPLICIT_ACCESS_A* );
+WINADVAPI DWORD  WINAPI GetExplicitEntriesFromAclW( PACL, PULONG, PEXPLICIT_ACCESS_W* );
+#define                 GetExplicitEntriesFromAcl WINELIB_NAME_AW(GetExplicitEntriesFromAcl)
+WINADVAPI DWORD  WINAPI GetSecurityInfo( HANDLE, SE_OBJECT_TYPE, SECURITY_INFORMATION, PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*);
+WINADVAPI DWORD  WINAPI GetSecurityInfoExA(HANDLE, SE_OBJECT_TYPE, SECURITY_INFORMATION, LPCSTR, LPCSTR, PACTRL_ACCESSA*, PACTRL_AUDITA*, LPSTR*, LPSTR*);
+WINADVAPI DWORD  WINAPI GetSecurityInfoExW(HANDLE, SE_OBJECT_TYPE, SECURITY_INFORMATION, LPCWSTR, LPCWSTR, PACTRL_ACCESSW*, PACTRL_AUDITW*, LPWSTR*, LPWSTR*);
+#define                 GetSecurityInfoEx WINELIB_NAME_AW(GetSecurityInfoEx)
+WINADVAPI DWORD  WINAPI GetNamedSecurityInfoA(LPSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*);
+WINADVAPI DWORD  WINAPI GetNamedSecurityInfoW(LPWSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*);
+#define                 GetNamedSecurityInfo WINELIB_NAME_AW(GetNamedSecurityInfo)
+WINADVAPI DWORD  WINAPI SetNamedSecurityInfoA(LPSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, PSID, PSID, PACL, PACL);
+WINADVAPI DWORD  WINAPI SetNamedSecurityInfoW(LPWSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, PSID, PSID, PACL, PACL);
+#define                 SetNamedSecurityInfo WINELIB_NAME_AW(SetNamedSecurityInfo)
+WINADVAPI DWORD  WINAPI SetEntriesInAclA( ULONG, PEXPLICIT_ACCESSA, PACL, PACL*);
+WINADVAPI DWORD  WINAPI SetEntriesInAclW( ULONG, PEXPLICIT_ACCESSW, PACL, PACL*);
+#define                 SetEntriesInAcl WINELIB_NAME_AW(SetEntriesInAcl)
+WINADVAPI DWORD  WINAPI SetSecurityInfo(HANDLE, SE_OBJECT_TYPE, SECURITY_INFORMATION, PSID, PSID, PACL, PACL);
+WINADVAPI TRUSTEE_FORM WINAPI GetTrusteeFormA( PTRUSTEEA );
+WINADVAPI TRUSTEE_FORM WINAPI GetTrusteeFormW( PTRUSTEEW );
+#define                 GetTrusteeForm WINELIB_NAME_AW(GetTrusteeForm)
+WINADVAPI LPSTR  WINAPI GetTrusteeNameA( PTRUSTEEA );
+WINADVAPI LPWSTR WINAPI GetTrusteeNameW( PTRUSTEEW );
+#define                 GetTrusteeName WINELIB_NAME_AW(GetTrusteeName)
+WINADVAPI TRUSTEE_TYPE WINAPI GetTrusteeTypeA( PTRUSTEEA );
+WINADVAPI TRUSTEE_TYPE WINAPI GetTrusteeTypeW( PTRUSTEEW );
+#define                 GetTrusteeType WINELIB_NAME_AW(GetTrusteeType)
+WINADVAPI DWORD  WINAPI BuildSecurityDescriptorA( PTRUSTEEA, PTRUSTEEA, ULONG, PEXPLICIT_ACCESS_A, ULONG, PEXPLICIT_ACCESS_A, PSECURITY_DESCRIPTOR, PULONG, PSECURITY_DESCRIPTOR* );
+WINADVAPI DWORD  WINAPI BuildSecurityDescriptorW( PTRUSTEEW, PTRUSTEEW, ULONG, PEXPLICIT_ACCESS_W, ULONG, PEXPLICIT_ACCESS_W, PSECURITY_DESCRIPTOR, PULONG, PSECURITY_DESCRIPTOR* );
+#define                 BuildSecurityDescriptor WINELIB_NAME_AW(BuildSecurityDescriptor)
+WINADVAPI void   WINAPI BuildTrusteeWithNameA( PTRUSTEEA, LPSTR );
+WINADVAPI void   WINAPI BuildTrusteeWithNameW( PTRUSTEEW, LPWSTR );
+#define                 BuildTrusteeWithName WINELIB_NAME_AW(BuildTrusteeWithName)
+WINADVAPI void   WINAPI BuildTrusteeWithObjectsAndNameA(PTRUSTEEA, POBJECTS_AND_NAME_A, SE_OBJECT_TYPE, LPSTR, LPSTR, LPSTR);
+WINADVAPI void   WINAPI BuildTrusteeWithObjectsAndNameW(PTRUSTEEW, POBJECTS_AND_NAME_W, SE_OBJECT_TYPE, LPWSTR, LPWSTR, LPWSTR);
+#define                 BuildTrusteeWithObjectsAndName WINELIB_NAME_AW(BuildTrusteeWithObjectsAndName)
+WINADVAPI void   WINAPI BuildTrusteeWithObjectsAndSidA(PTRUSTEEA, POBJECTS_AND_SID, GUID*, GUID*, PSID);
+WINADVAPI void   WINAPI BuildTrusteeWithObjectsAndSidW(PTRUSTEEW, POBJECTS_AND_SID, GUID*, GUID*, PSID);
+#define                 BuildTrusteeWithObjectsAndSid WINELIB_NAME_AW(BuildTrusteeWithObjectsAndSid)
+WINADVAPI void   WINAPI BuildExplicitAccessWithNameA(PEXPLICIT_ACCESSA, LPSTR, DWORD, ACCESS_MODE, DWORD);
+WINADVAPI void   WINAPI BuildExplicitAccessWithNameW(PEXPLICIT_ACCESSW, LPWSTR, DWORD, ACCESS_MODE, DWORD);
+#define                 BuildExplicitAccessWithName WINELIB_NAME_AW(BuildExplicitAccessWithName)
+WINADVAPI void   WINAPI BuildTrusteeWithSidA(PTRUSTEEA pTrustee, PSID pSid);
+WINADVAPI void   WINAPI BuildTrusteeWithSidW(PTRUSTEEW pTrustee, PSID pSid);
+#define                 BuildTrusteeWithSid WINELIB_NAME_AW(BuildTrusteeWithSid)
+WINADVAPI DWORD  WINAPI GetEffectiveRightsFromAclA(PACL,PTRUSTEE_A,PACCESS_MASK);
+WINADVAPI DWORD  WINAPI GetEffectiveRightsFromAclW(PACL,PTRUSTEE_W,PACCESS_MASK);
+#define                 GetEffectiveRightsFromAcl WINELIB_NAME_AW(GetEffectiveRightsFromAcl)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_ACLAPI_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/activaut.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/activaut.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/activaut.idl	(revision 16410)
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2008 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef DO_NO_IMPORTS
+import "ocidl.idl";
+import "oleidl.idl";
+import "oaidl.idl";
+#endif
+
+cpp_quote("#ifndef _NO_AUTHOR_GUIDS")
+
+cpp_quote("DEFINE_GUID(CATID_ActiveScriptAuthor, 0xaee2a92,0xbcbb,0x11d0,0x8c,0x72,0x0,0xc0,0x4f,0xc2,0xb0,0x85);")
+
+cpp_quote("#endif")
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/activdbg.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/activdbg.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/activdbg.idl	(revision 16410)
@@ -0,0 +1,491 @@
+/*
+ * Copyright 2008 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "ocidl.idl";
+import "activscp.idl";
+/* import "dbgprop.idl"; */
+
+interface IDebugDocumentContext;
+interface IRemoteDebugApplication;
+
+/* FIXME: */
+interface IEnumDebugStackFrames;
+interface IDebugStackFrame;
+interface IApplicationDebugger;
+interface IEnumRemoteDebugApplicationThreads;
+interface IDebugApplicationNode;
+interface IEnumDebugExpressionContexts;
+interface IDebugApplicationThread;
+interface IDebugSyncOperation;
+interface IDebugAsyncOperation;
+interface IDebugStackFrameSniffer;
+interface IDebugThreadCall32;
+interface IActiveScriptErrorDebug;
+interface IProvideExpressionContexts;
+
+typedef enum tagBREAKPOINT_STATE {
+    BREAKPOINT_DELETED,
+    BREAKPOINT_DISABLED,
+    BREAKPOINT_ENABLED
+} BREAKPOINT_STATE;
+
+typedef DWORD APPBREAKFLAGS;
+
+typedef enum tagBREAKREASON {
+    BREAKREASON_STEP,
+    BREAKREASON_BREAKPOINT,
+    BREAKREASON_DEBUGGER_BLOCK,
+    BREAKREASON_HOST_INITIATED,
+    BREAKREASON_LANGUAGE_INITIATED,
+    BREAKREASON_DEBUGGER_HALT,
+    BREAKREASON_ERROR,
+    BREAKREASON_JIT
+} BREAKREASON;
+
+typedef enum tagBREAKRESUME_ACTION {
+    BREAKRESUMEACTION_ABORT,
+    BREAKRESUMEACTION_CONTINUE,
+    BREAKRESUMEACTION_STEP_INTO,
+    BREAKRESUMEACTION_STEP_OVER,
+    BREAKRESUMEACTION_STEP_OUT,
+    BREAKRESUMEACTION_IGNORE
+} BREAKRESUMEACTION;
+
+typedef enum tagDOCUMENTNAMETYPE {
+    DOCUMENTNAMETYPE_APPNODE,
+    DOCUMENTNAMETYPE_TITLE,
+    DOCUMENTNAMETYPE_FILE_TAIL,
+    DOCUMENTNAMETYPE_URL
+} DOCUMENTNAMETYPE;
+
+typedef enum tagERRORRESUMEACTION {
+    ERRORRESUMEACTION_ReexecuteErrorStatement,
+    ERRORRESUMEACTION_AbortCallAndReturnErrorToCaller,
+    ERRORRESUMEACTION_SkipErrorStatement,
+} ERRORRESUMEACTION;
+
+/************************************************************
+ *      interface IDebugDocumentInfo
+ */
+[
+    object,
+    uuid(51973c1f-cb0c-11d0-b5c9-00a0244a0e7a),
+    pointer_default(unique)
+]
+interface IDebugDocumentInfo : IUnknown
+{
+    HRESULT GetName(
+            [in]  DOCUMENTNAMETYPE dnt,
+            [out] BSTR *pbstrName);
+
+    HRESULT GetDocumentClassId(
+            [out] CLSID *pclsidDocument);
+}
+
+/************************************************************
+ *      interface IDebugDocument
+ */
+[
+    object,
+    uuid(51973c21-cb0c-11d0-b5c9-00a0244a0e7a),
+    pointer_default(unique)
+]
+interface IDebugDocument : IDebugDocumentInfo
+{
+}
+
+/************************************************************
+ *      interface IDebugCodeContext
+ */
+[
+    object,
+    uuid(51973c13-cb0c-11d0-b5c9-00a0244a0e7a),
+    pointer_default(unique)
+]
+interface IDebugCodeContext : IUnknown
+{
+    HRESULT GetDocumentContext(
+            [out] IDebugDocumentContext **ppsc);
+
+    HRESULT SetBreakPoint(
+            [in]  BREAKPOINT_STATE bps);
+}
+
+/************************************************************
+ *      interface IEnumDebugCodeContexts
+ */
+[
+    object,
+    uuid(51973c1d-cb0c-11d0-b5c9-00a0244a0e7a),
+    pointer_default(unique)
+]
+interface IEnumDebugCodeContexts : IUnknown
+{
+    HRESULT Next(
+            [in]  ULONG celt,
+            [out] IDebugCodeContext **pscc,
+            [out] ULONG *pceltFetched);
+
+    HRESULT Skip(
+            [in]  ULONG celt);
+
+    HRESULT Reset();
+
+    HRESULT Clone(
+            [out] IEnumDebugCodeContexts **ppescc);
+}
+
+/************************************************************
+ *      interface IDebugDocumentContext
+ */
+[
+    object,
+    uuid(51973c28-cb0c-11d0-b5c9-00a0244a0e7a),
+    pointer_default(unique)
+]
+interface IDebugDocumentContext : IUnknown
+{
+    HRESULT GetDocument(
+            [out] IDebugDocument **ppsd);
+
+    HRESULT EnumCodeContexts(
+            [out] IEnumDebugCodeContexts **ppescc);
+}
+
+/************************************************************
+ *      interface IRemoteDebugApplicationThread
+ */
+[
+    object,
+    uuid(51973c37-cb0c-11d0-b5c9-00a0244a0e7a),
+    pointer_default(unique)
+]
+interface IRemoteDebugApplicationThread : IUnknown
+{
+    HRESULT GetSystemThreadId(
+            [out] DWORD *dwThreadId);
+
+    HRESULT GetApplication(
+            [out] IRemoteDebugApplication **pprda);
+
+    HRESULT EnumStackFrames(
+            [out] IEnumDebugStackFrames **ppedsf);
+
+    HRESULT GetDescription(
+            [out] BSTR *pbstrDescription,
+            [out] BSTR *pbstrState);
+
+    HRESULT SetNextStatement(
+            [in]  IDebugStackFrame *pStackFrame,
+            [in]  IDebugCodeContext *pCodeContext);
+
+    HRESULT GetState(
+            [out] DWORD *pState);
+
+    HRESULT Suspend(
+            [out] DWORD *pdwCount);
+
+    HRESULT Resume(
+            [out] DWORD *pdwCount);
+
+    HRESULT GetSuspendCount(
+            [out] DWORD *pdwCount);
+}
+
+/************************************************************
+ *      interface IRemoteDebugApplication
+ */
+[
+    object,
+    uuid(51973c30-cb0c-11d0-b5c9-00a0244Aae7a),
+    pointer_default(unique)
+]
+interface IRemoteDebugApplication : IUnknown
+{
+    HRESULT ResumeFromBreakPoint(
+            [in]  IRemoteDebugApplicationThread *prptFocus,
+            [in]  BREAKRESUMEACTION bra,
+            [in]  ERRORRESUMEACTION era);
+
+    HRESULT CauseBreak();
+
+    HRESULT ConnectDebugger(
+            [in]  IApplicationDebugger *pad);
+
+    HRESULT DisconnectDebugger();
+
+    HRESULT GetDebugger(
+            [out] IApplicationDebugger **pad);
+
+    HRESULT CreateInstanceAtApplication(
+            [in]  REFCLSID rclsid,
+            [in]  IUnknown *pUnkOuter,
+            [in]  DWORD dwClsContext,
+            [in]  REFIID riid,
+            [out, iid_is(riid)] IUnknown **ppvObject);
+
+    HRESULT QueryAlive();
+
+    HRESULT EnumThreads(
+            [out] IEnumRemoteDebugApplicationThreads **pperdat);
+
+    HRESULT GetName(
+            [out] BSTR *pbstrName);
+
+    HRESULT GetRootNode(
+            [out] IDebugApplicationNode **ppdanRoot);
+
+    HRESULT EnumGlobalExpressionContexts(
+            [out] IEnumDebugExpressionContexts **ppedec);
+}
+
+/************************************************************
+ *      interface IDebugApplication32
+ */
+[
+    object,
+    uuid(51973c32-cb0c-11d0-b5c9-00a0244a0e7a),
+    pointer_default(unique),
+    local
+]
+interface IDebugApplication32 : IRemoteDebugApplication
+{
+    HRESULT SetName(
+            [in] LPCOLESTR pstrName);
+
+    HRESULT StepOutComplete();
+
+    HRESULT DebugOutput(
+            [in] LPCOLESTR pstr);
+
+    HRESULT StartDebugSession();
+
+    HRESULT HandleBreakPoint(
+            [in]  BREAKREASON br,
+            [out] BREAKRESUMEACTION *pbra);
+
+    HRESULT Close();
+
+    HRESULT GetBreakFlags(
+            [out] APPBREAKFLAGS *pabf,
+            [out] IRemoteDebugApplicationThread **pprdatSteppingThread);
+
+    HRESULT GetCurrentThread(
+            [out] IDebugApplicationThread **pat);
+
+    HRESULT CreateAsyncDebugOperation(
+            [in]  IDebugSyncOperation *psdo,
+            [out] IDebugAsyncOperation **ppado);
+
+    HRESULT AddStackFrameSniffer(
+            [in]  IDebugStackFrameSniffer *pdsfs,
+            [out] DWORD *pdwCookie);
+
+    HRESULT RemoveStackFrameSniffer(
+            [in]  DWORD dwCookie);
+
+    HRESULT QueryCurrentThreadIsDebuggerThread();
+
+    HRESULT SynchronousCallInDebuggerThread(
+            [in]  IDebugThreadCall32 *pptc,
+            [in]  DWORD dwParam1,
+            [in]  DWORD dwParam2,
+            [in]  DWORD dwParam3);
+
+    HRESULT CreateApplicationNode(
+            [out] IDebugApplicationNode **ppdanNew);
+
+    HRESULT FireDebuggerEvent(
+            [in]  REFGUID riid,
+            [in]  IUnknown *punk);
+
+    HRESULT HandleRuntimeError(
+            [in]  IActiveScriptErrorDebug *pErrorDebug,
+            [in]  IActiveScriptSite *pScriptSite,
+            [out] BREAKRESUMEACTION *pbra,
+            [out] ERRORRESUMEACTION *perra,
+            [out] BOOL *pfCallOnScriptError);
+
+    BOOL FCanJitDebug();
+
+    BOOL FIsAutoJitDebugEnabled();
+
+    HRESULT AddGlobalExpressionContextProvider(
+            [in]  IProvideExpressionContexts *pdsfs,
+            [out] DWORD *pdwCookie);
+
+    HRESULT RemoveGlobalExpressionContextProvider(
+            [in]  DWORD dwCookie);
+}
+
+/************************************************************
+ *      interface IDebugApplication64
+ */
+[
+    object,
+    uuid(4dedc754-04c7-4f10-9e60-16a390fe6e62),
+    pointer_default(unique),
+    local
+]
+interface IDebugApplication64 : IRemoteDebugApplication
+{
+    HRESULT SetName(
+            [in] LPCOLESTR pstrName);
+
+    HRESULT StepOutComplete();
+
+    HRESULT DebugOutput(
+            [in] LPCOLESTR pstr);
+
+    HRESULT StartDebugSession();
+
+    HRESULT HandleBreakPoint(
+            [in]  BREAKREASON br,
+            [out] BREAKRESUMEACTION *pbra);
+
+    HRESULT Close();
+
+    HRESULT GetBreakFlags(
+            [out] APPBREAKFLAGS *pabf,
+            [out] IRemoteDebugApplicationThread **pprdatSteppingThread);
+
+    HRESULT GetCurrentThread(
+            [out] IDebugApplicationThread **pat);
+
+    HRESULT CreateAsyncDebugOperation(
+            [in]  IDebugSyncOperation *psdo,
+            [out] IDebugAsyncOperation **ppado);
+
+    HRESULT AddStackFrameSniffer(
+            [in]  IDebugStackFrameSniffer *pdsfs,
+            [out] DWORD *pdwCookie);
+
+    HRESULT RemoveStackFrameSniffer(
+            [in]  DWORD dwCookie);
+
+    HRESULT QueryCurrentThreadIsDebuggerThread();
+
+    HRESULT SynchronousCallInDebuggerThread(
+            [in]  IDebugThreadCall32 *pptc,
+            [in]  DWORDLONG dwParam1,
+            [in]  DWORDLONG dwParam2,
+            [in]  DWORDLONG dwParam3);
+
+    HRESULT CreateApplicationNode(
+            [out] IDebugApplicationNode **ppdanNew);
+
+    HRESULT FireDebuggerEvent(
+            [in]  REFGUID riid,
+            [in]  IUnknown *punk);
+
+    HRESULT HandleRuntimeError(
+            [in]  IActiveScriptErrorDebug *pErrorDebug,
+            [in]  IActiveScriptSite *pScriptSite,
+            [out] BREAKRESUMEACTION *pbra,
+            [out] ERRORRESUMEACTION *perra,
+            [out] BOOL *pfCallOnScriptError);
+
+    BOOL FCanJitDebug();
+
+    BOOL FIsAutoJitDebugEnabled();
+
+    HRESULT AddGlobalExpressionContextProvider(
+            [in]  IProvideExpressionContexts *pdsfs,
+            [out] DWORDLONG *pdwCookie);
+
+    HRESULT RemoveGlobalExpressionContextProvider(
+            [in]  DWORDLONG dwCookie);
+}
+
+/************************************************************
+ *      interface IActiveScriptSiteDebug32
+ */
+[
+    object,
+    uuid(51973c11-cb0c-11d0-b5c9-00a0244a0e7a),
+    pointer_default(unique),
+    local
+]
+interface IActiveScriptSiteDebug32 : IUnknown
+{
+    HRESULT GetDocumentContextFromPosition(
+            [in]  DWORD dwSourceContext,
+            [in]  ULONG uCharacterOffset,
+            [in]  ULONG uNumChars,
+            [out] IDebugDocumentContext **ppsc);
+
+    HRESULT GetApplication(
+            [out] IDebugApplication32 **ppda);
+
+    HRESULT GetRootApplicationNode(
+            [out] IDebugApplicationNode **ppdanRoot);
+
+    HRESULT OnScriptErrorDebug(
+            [in]  IActiveScriptErrorDebug *pErrorDebug,
+            [out] BOOL *pfEnterDebugger,
+            [out] BOOL *pfCallOnScriptErrorWhenContinuing);
+}
+
+/************************************************************
+ *      interface IActiveScriptSiteDebug64
+ */
+[
+    object,
+    uuid(d6b96b0a-7463-402c-92ac-89984226942f),
+    pointer_default(unique),
+    local
+]
+interface IActiveScriptSiteDebug64 : IUnknown
+{
+    HRESULT GetDocumentContextFromPosition(
+            [in]  DWORDLONG dwSourceContext,
+            [in]  ULONG uCharacterOffset,
+            [in]  ULONG uNumChars,
+            [out] IDebugDocumentContext **ppsc);
+
+    HRESULT GetApplication(
+            [out] IDebugApplication64 **ppda);
+
+    HRESULT GetRootApplicationNode(
+            [out] IDebugApplicationNode **ppdanRoot);
+
+    HRESULT OnScriptErrorDebug(
+            [in]  IActiveScriptErrorDebug *pErrorDebug,
+            [out] BOOL *pfEnterDebugger,
+            [out] BOOL *pfCallOnScriptErrorWhenContinuing);
+}
+
+cpp_quote("#ifndef DISABLE_ACTIVDBG_INTERFACE_WRAPPERS")
+cpp_quote("#ifdef _WIN64")
+
+cpp_quote("#define IActiveScriptSiteDebug IActiveScriptSiteDebug64")
+cpp_quote("#define IID_IActiveScriptSiteDebug IID_IActiveScriptSiteDebug64")
+
+cpp_quote("#define IDebugApplication IDebugApplication64")
+cpp_quote("#define IID_IDebugApplication IID_IDebugApplication64")
+
+cpp_quote("#else")
+
+cpp_quote("#define IActiveScriptSiteDebug IActiveScriptSiteDebug32")
+cpp_quote("#define IID_IActiveScriptSiteDebug IID_IActiveScriptSiteDebug32")
+
+cpp_quote("#define IDebugApplication IDebugApplication32")
+cpp_quote("#define IID_IDebugApplication IID_IDebugApplication32")
+
+cpp_quote("#endif")
+cpp_quote("#endif")
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/activscp.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/activscp.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/activscp.idl	(revision 16410)
@@ -0,0 +1,405 @@
+/*
+ * Copyright 2004 Kevin Koltzau
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef DO_NO_IMPORTS
+import "ocidl.idl";
+import "oleidl.idl";
+import "oaidl.idl";
+#endif
+
+cpp_quote("#ifndef _NO_SCRIPT_GUIDS")
+
+cpp_quote("DEFINE_GUID(CATID_ActiveScript,       0xf0b7a1a1,0x9847,0x11cf,0x8f,0x20,0x00,0x80,0x5f,0x2c,0xd0,0x64);")
+cpp_quote("DEFINE_GUID(CATID_ActiveScriptParse,  0xf0b7a1a2,0x9847,0x11cf,0x8f,0x20,0x00,0x80,0x5f,0x2c,0xd0,0x64);")
+cpp_quote("DEFINE_GUID(CATID_ActiveScriptEncode, 0xf0b7a1a3,0x9847,0x11cf,0x8f,0x20,0x00,0x80,0x5f,0x2c,0xd0,0x64);")
+
+cpp_quote("#endif")
+
+cpp_quote("#define SCRIPTPROP_NAME                   0x00000000")
+cpp_quote("#define SCRIPTPROP_MAJORVERSION           0x00000001")
+cpp_quote("#define SCRIPTPROP_MINORVERSION           0x00000002")
+cpp_quote("#define SCRIPTPROP_BUILDNUMBER            0x00000003")
+cpp_quote("#define SCRIPTPROP_DELAYEDEVENTSINKING    0x00001000")
+cpp_quote("#define SCRIPTPROP_CATCHEXCEPTION         0x00001001")
+cpp_quote("#define SCRIPTPROP_CONVERSIONLCID         0x00001002")
+cpp_quote("#define SCRIPTPROP_HOSTSTACKREQUIRED      0x00001003")
+cpp_quote("#define SCRIPTPROP_DEBUGGER               0x00001100")
+cpp_quote("#define SCRIPTPROP_JITDEBUG               0x00001101")
+cpp_quote("#define SCRIPTPROP_HACK_FIBERSUPPORT      0x70000000")
+cpp_quote("#define SCRIPTPROP_HACK_TRIDENTEVENTSINK  0x70000001")
+ 
+typedef enum tagSCRIPTSTATE {
+    SCRIPTSTATE_UNINITIALIZED = 0,
+    SCRIPTSTATE_STARTED       = 1,
+    SCRIPTSTATE_CONNECTED     = 2,
+    SCRIPTSTATE_DISCONNECTED  = 3,
+    SCRIPTSTATE_CLOSED        = 4,
+    SCRIPTSTATE_INITIALIZED   = 5
+} SCRIPTSTATE;
+
+typedef enum tagSCRIPTTHREADSTATE {
+    SCRIPTTHREADSTATE_NOTINSCRIPT = 0,
+    SCRIPTTHREADSTATE_RUNNING     = 1
+} SCRIPTTHREADSTATE;
+
+typedef DWORD SCRIPTTHREADID;
+cpp_quote("#define SCRIPTTHREADID_CURRENT ((SCRIPTTHREADID)-1)")
+cpp_quote("#define SCRIPTTHREADID_BASE ((SCRIPTTHREADID)-2)")
+cpp_quote("#define SCRIPTTHREADID_ALL ((SCRIPTTHREADID)-3)")
+
+cpp_quote("#define SCRIPTITEM_ISVISIBLE           0x00000002")
+cpp_quote("#define SCRIPTITEM_ISSOURCE            0x00000004")
+cpp_quote("#define SCRIPTITEM_GLOBALMEMBERS       0x00000008")
+cpp_quote("#define SCRIPTITEM_ISPERSISTENT        0x00000040")
+cpp_quote("#define SCRIPTITEM_CODEONLY            0x00000200")
+cpp_quote("#define SCRIPTITEM_NOCODE              0x00000400")
+cpp_quote("#define SCRIPTITEM_ALL_FLAGS           (SCRIPTITEM_ISSOURCE | \\")
+cpp_quote("                                        SCRIPTITEM_ISVISIBLE | \\")
+cpp_quote("                                        SCRIPTITEM_ISPERSISTENT | \\")
+cpp_quote("                                        SCRIPTITEM_GLOBALMEMBERS | \\")
+cpp_quote("                                        SCRIPTITEM_NOCODE | \\")
+cpp_quote("                                        SCRIPTITEM_CODEONLY)")
+cpp_quote("#define SCRIPTTYPELIB_ISCONTROL        0x00000010")
+cpp_quote("#define SCRIPTTYPELIB_ISPERSISTENT     0x00000040")
+cpp_quote("#define SCRIPTTYPELIB_ALL_FLAGS        (SCRIPTTEXT_ISCONTROL | SCRIPTTYPELIB_ISPERSISTENT)")
+cpp_quote("#define SCRIPTTEXT_DELAYEXECUTION      0x00000001")
+cpp_quote("#define SCRIPTTEXT_ISVISIBLE           0x00000002")
+cpp_quote("#define SCRIPTTEXT_ISEXPRESSION        0x00000020")
+cpp_quote("#define SCRIPTTEXT_ISPERSISTENT        0x00000040")
+cpp_quote("#define SCRIPTTEXT_HOSTMANAGESSOURCE   0x00000080")
+cpp_quote("#define SCRIPTTEXT_ALL_FLAGS           (SCRIPTTEXT_DELAYEXECUTION | \\")
+cpp_quote("                                        SCRIPTTEXT_ISVISIBLE | \\")
+cpp_quote("                                        SCRIPTTEXT_ISEXPRESSION | \\")
+cpp_quote("                                        SCRIPTTEXT_ISPERSISTENT | \\")
+cpp_quote("                                        SCRIPTTEXT_HOSTMANAGESSOURCE)")
+cpp_quote("#define SCRIPTPROC_HOSTMANAGESSOURCE   0x00000080")
+cpp_quote("#define SCRIPTPROC_IMPLICIT_THIS       0x00000100")
+cpp_quote("#define SCRIPTPROC_IMPLICIT_PARENTS    0x00000200")
+cpp_quote("#define SCRIPTPROC_ALL_FLAGS           (SCRIPTPROC_HOSTMANAGESSOURCE | \\")
+cpp_quote("                                        SCRIPTPROC_IMPLICIT_THIS | \\")
+cpp_quote("                                        SCRIPTPROC_IMPLICIT_PARENTS)")
+cpp_quote("#define SCRIPTINFO_IUNKNOWN            0x00000001")
+cpp_quote("#define SCRIPTINFO_ITYPEINFO           0x00000002")
+cpp_quote("#define SCRIPTINFO_ALL_FLAGS           (SCRIPTINFO_IUNKNOWN | SCRIPTINFO_ITYPEINFO)")
+cpp_quote("#define SCRIPTINTERRUPT_DEBUG          0x00000001")
+cpp_quote("#define SCRIPTINTERRUPT_RAISEEXCEPTION 0x00000002")
+cpp_quote("#define SCRIPTINTERRUPT_ALL_FLAGS      (SCRIPTINTERRUPT_DEBUG | SCRIPTINTERRUPT_RAISEEXCEPTION)")
+cpp_quote("#define SCRIPTSTAT_STATEMENT_COUNT      1")
+cpp_quote("#define SCRIPTSTAT_INSTRUCTION_COUNT    2")
+cpp_quote("#define SCRIPTSTAT_INTSTRUCTION_TIME    3")
+cpp_quote("#define SCRIPTSTAT_TOTAL_TIME           4")
+
+[
+object,
+uuid(EAE1BA61-A4ED-11cf-8F20-00805F2CD064),
+pointer_default(unique)
+]
+interface IActiveScriptError : IUnknown
+{
+    HRESULT GetExceptionInfo(
+            [out] EXCEPINFO *pexcepinfo
+    );
+    
+    HRESULT GetSourcePosition(
+            [out] DWORD *pdwSourceContext,
+            [out] ULONG *pulLineNumber,
+            [out] LONG *plCharacterPosition
+    );
+    
+    HRESULT GetSourceLineText(
+            [out] BSTR *pbstrSourceLine
+    );
+}
+
+[
+object,
+uuid(DB01A1E3-A42B-11cf-8F20-00805F2CD064),
+pointer_default(unique)
+]
+interface IActiveScriptSite : IUnknown
+{
+    HRESULT GetLCID(
+            [out] LCID *plcid);
+    
+    HRESULT GetItemInfo(
+            [in] LPCOLESTR pstrName,
+            [in] DWORD dwReturnMask,
+            [out] IUnknown **ppiunkItem,
+            [out] ITypeInfo **ppti
+    );
+    
+    HRESULT GetDocVersionString(
+            [out] BSTR *pbstrVersion
+    );
+    
+    HRESULT OnScriptTerminate(
+            [in] const VARIANT *pvarResult,
+            [in] const EXCEPINFO *pexcepinfo
+    );
+    
+    HRESULT OnStateChange(
+            [in] SCRIPTSTATE ssScriptState
+    );
+    
+    HRESULT OnScriptError(
+            [in] IActiveScriptError *pscripterror
+    );
+    
+    HRESULT OnEnterScript(void);
+    
+    HRESULT OnLeaveScript(void);
+}
+
+cpp_quote("typedef IActiveScriptSite *PIActiveScriptSite;")
+
+[
+object,
+uuid(D10F6761-83E9-11cf-8F20-00805F2CD064),
+pointer_default(unique)
+]
+interface IActiveScriptSiteWindow : IUnknown
+{
+    HRESULT GetWindow(
+            [out] HWND *phwnd
+    );
+
+    HRESULT EnableModeless(
+            [in] BOOL fEnable
+    );
+}
+
+[
+object,
+uuid(539698A0-CDCA-11CF-A5EB-00AA0047A063),
+pointer_default(unique)
+]
+interface IActiveScriptSiteInterruptPoll : IUnknown
+{
+    HRESULT QueryContinue();
+}
+
+[
+object,
+uuid(BB1A2AE1-A4F9-11cf-8F20-00805F2CD064),
+pointer_default(unique)
+]
+interface IActiveScript : IUnknown
+{
+    HRESULT SetScriptSite(
+            [in] IActiveScriptSite *pass
+    );
+
+    HRESULT GetScriptSite(
+            [in] REFIID riid,
+            [out, iid_is(riid)] void **ppvObject
+    );
+
+    HRESULT SetScriptState(
+            [in] SCRIPTSTATE ss
+    );
+
+    HRESULT GetScriptState(
+            [out] SCRIPTSTATE *pssState
+    );
+
+    HRESULT Close(void);
+
+    HRESULT AddNamedItem(
+            [in] LPCOLESTR pstrName,
+            [in] DWORD dwFlags
+    );
+
+    HRESULT AddTypeLib(
+            [in] REFGUID rguidTypeLib,
+            [in] DWORD dwMajor,
+            [in] DWORD dwMinor,
+            [in] DWORD dwFlags
+    );
+
+    HRESULT GetScriptDispatch(
+            [in] LPCOLESTR pstrItemName,
+            [out] IDispatch **ppdisp
+    );
+
+    HRESULT GetCurrentScriptThreadID(
+            [out] SCRIPTTHREADID *pstidThread
+    );
+
+    HRESULT GetScriptThreadID(
+            [in] DWORD dwWin32ThreadId,
+            [out] SCRIPTTHREADID *pstidThread
+    );
+
+    HRESULT GetScriptThreadState(
+            [in] SCRIPTTHREADID stidThread,
+            [out] SCRIPTTHREADSTATE *pstsState
+    );
+
+    HRESULT InterruptScriptThread(
+            [in] SCRIPTTHREADID stidThread,
+            [in] const EXCEPINFO *pexcepinfo,
+            [in] DWORD dwFlags
+    );
+
+    HRESULT Clone(
+            [out] IActiveScript **ppscript
+    );
+}
+
+cpp_quote("typedef IActiveScript *PIActiveScript;")
+
+[
+object,
+uuid(BB1A2AE2-A4F9-11cf-8F20-00805F2CD064),
+pointer_default(unique)
+]
+interface IActiveScriptParse : IUnknown
+{
+    HRESULT InitNew(void);
+
+    HRESULT AddScriptlet(
+            [in] LPCOLESTR pstrDefaultName,
+            [in] LPCOLESTR pstrCode,
+            [in] LPCOLESTR pstrItemName,
+            [in] LPCOLESTR pstrSubItemName,
+            [in] LPCOLESTR pstrEventName,
+            [in] LPCOLESTR pstrDelimiter,
+            [in] DWORD dwSourceContextCookie,
+            [in] ULONG ulStartingLineNumber,
+            [in] DWORD dwFlags,
+            [out] BSTR *pbstrName,
+            [out] EXCEPINFO *pexcepinfo
+    );
+
+    HRESULT ParseScriptText(
+            [in] LPCOLESTR pstrCode,
+            [in] LPCOLESTR pstrItemName,
+            [in] IUnknown *punkContext,
+            [in] LPCOLESTR pstrDelimiter,
+            [in] DWORD dwSourceContextCookie,
+            [in] ULONG ulStartingLineNumber,
+            [in] DWORD dwFlags,
+            [out] VARIANT *pvarResult,
+            [out] EXCEPINFO *pexcepinfo
+    );
+}
+
+cpp_quote("typedef IActiveScriptParse *PIActiveScriptParse;")
+
+[
+object,
+uuid(1CFF0050-6FDD-11d0-9328-00A0C90DCAA9),
+pointer_default(unique)
+]
+interface IActiveScriptParseProcedureOld : IUnknown
+{
+    HRESULT ParseProcedureText(
+            [in] LPCOLESTR pstrCode,
+            [in] LPCOLESTR pstrFormalParams,
+            [in] LPCOLESTR pstrItemName,
+            [in] IUnknown *punkContext,
+            [in] LPCOLESTR pstrDelimiter,
+            [in] DWORD dwSourceContextCookie,
+            [in] ULONG ulStartingLineNumber,
+            [in] DWORD dwFlags,
+            [out] IDispatch **ppdisp
+    );
+}
+
+[
+object,
+uuid(AA5B6A80-B834-11d0-932F-00A0C90DCAA9),
+pointer_default(unique)
+]
+interface IActiveScriptParseProcedure : IUnknown
+{
+    HRESULT ParseProcedureText(
+            [in] LPCOLESTR pstrCode,
+            [in] LPCOLESTR pstrFormalParams,
+            [in] LPCOLESTR pstrProcedureName,
+            [in] LPCOLESTR pstrItemName,
+            [in] IUnknown *punkContext,
+            [in] LPCOLESTR pstrDelimiter,
+            [in] DWORD dwSourceContextCookie,
+            [in] ULONG ulStartingLineNumber,
+            [in] DWORD dwFlags,
+            [out] IDispatch **ppdisp
+    );
+}
+
+[
+    object,
+    uuid(71ee5b20-fb04-11d1-b3a8-00a0c911e8b2),
+    pointer_default(unique)
+]
+interface IActiveScriptParseProcedure2 : IActiveScriptParseProcedure
+{
+}
+
+[
+object,
+uuid(63CDBCB0-C1B1-11d0-9336-00A0C90DCAA9),
+pointer_default(unique)
+]
+interface IBindEventHandler : IUnknown
+{
+    HRESULT BindHandler(
+            [in] LPCOLESTR pstrEvent,
+            [in] IDispatch *pdisp
+    );
+}
+
+[
+object,
+uuid(B8DA6310-E19B-11d0-933C-00A0C90DCAA9),
+pointer_default(unique)
+]
+interface IActiveScriptStats : IUnknown
+{
+    HRESULT GetStat(
+            [in] DWORD stid,
+            [out] ULONG *pluHi,
+            [out] ULONG *pluLo
+    );
+
+    HRESULT GetStatEx(
+            [in] REFGUID guid,
+            [out] ULONG *pluHi,
+            [out] ULONG *pluLo
+    );
+
+    HRESULT ResetStats(void);
+}
+
+[
+    object,
+    uuid(4954e0d0-fbc7-11d1-8410-006008c3fbfc),
+    pointer_default(unique)
+]
+interface IActiveScriptProperty : IUnknown
+{
+    HRESULT GetProperty(
+            [in] DWORD dwProperty,
+            [in] VARIANT *pvarIndex,
+            [out] VARIANT *pvarValue);
+
+    HRESULT SetProperty(
+            [in] DWORD dwProperty,
+            [in] VARIANT *pvarIndex,
+            [in] VARIANT *pvarValue);
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/adshlp.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/adshlp.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/adshlp.h	(revision 16410)
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2005 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_ADSHLP_H
+#define __WINE_ADSHLP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+HRESULT WINAPI ADsBuildEnumerator(IADsContainer*,IEnumVARIANT**);
+HRESULT WINAPI ADsEnumerateNext(IEnumVARIANT*,ULONG,VARIANT*,ULONG*);
+HRESULT WINAPI ADsGetObject(LPCWSTR,REFIID,VOID**);
+HRESULT WINAPI ADsOpenObject(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,REFIID,VOID**);
+BOOL    WINAPI FreeADsMem(LPVOID);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/advpub.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/advpub.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/advpub.h	(revision 16410)
@@ -0,0 +1,280 @@
+/*
+ * Copyright 2004 Huw D M Davies
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __WINE_ADVPUB_H
+#define __WINE_ADVPUB_H
+
+#include <setupapi.h>
+#include <cfgmgr32.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef S_ASYNCHRONOUS
+#define S_ASYNCHRONOUS  _HRESULT_TYPEDEF_(0x401E8L)
+#endif
+
+typedef struct _CabInfoA
+{
+    LPSTR  pszCab;
+    LPSTR  pszInf;
+    LPSTR  pszSection;
+    CHAR   szSrcPath[MAX_PATH];
+    DWORD  dwFlags;
+} CABINFOA, *PCABINFOA;
+
+typedef struct _CabInfoW
+{
+    LPWSTR pszCab;
+    LPWSTR pszInf;
+    LPWSTR pszSection;
+    WCHAR  szSrcPath[MAX_PATH];
+    DWORD  dwFlags;
+} CABINFOW, *PCABINFOW;
+
+DECL_WINELIB_TYPE_AW(CABINFO)
+DECL_WINELIB_TYPE_AW(PCABINFO)
+
+typedef struct _PERUSERSECTIONA
+{
+    CHAR  szGUID[39 /*MAX_GUID_STRING_LEN*/ + 20];
+    CHAR  szDispName[128];
+    CHAR  szLocale[10];
+    CHAR  szStub[MAX_PATH * 4];
+    CHAR  szVersion[32];
+    CHAR  szCompID[128];
+    DWORD dwIsInstalled;
+    BOOL  bRollback;
+} PERUSERSECTIONA, *PPERUSERSECTIONA;
+
+typedef struct _PERUSERSECTIONW
+{
+    WCHAR szGUID[39 /*MAX_GUID_STRING_LEN*/ + 20];
+    WCHAR szDispName[128];
+    WCHAR szLocale[10];
+    WCHAR szStub[MAX_PATH * 4];
+    WCHAR szVersion[32];
+    WCHAR szCompID[128];
+    DWORD dwIsInstalled;
+    BOOL  bRollback;
+} PERUSERSECTIONW, *PPERUSERSECTIONW;
+
+DECL_WINELIB_TYPE_AW(PERUSERSECTION)
+DECL_WINELIB_TYPE_AW(PPERUSERSECTION)
+
+typedef struct _StrEntryA
+{
+    LPSTR pszName;
+    LPSTR pszValue;
+} STRENTRYA, *LPSTRENTRYA;
+
+typedef struct _StrEntryW
+{
+    LPWSTR pszName;
+    LPWSTR pszValue;
+} STRENTRYW, *LPSTRENTRYW;
+
+DECL_WINELIB_TYPE_AW(STRENTRY)
+DECL_WINELIB_TYPE_AW(LPSTRENTRY)
+
+typedef struct _StrTableA
+{
+    DWORD cEntries;
+    STRENTRYA* pse;
+} STRTABLEA, *LPSTRTABLEA;
+typedef const STRTABLEA CSTRTABLEA, *LPCSTRTABLEA;
+
+typedef struct _StrTableW
+{
+    DWORD cEntries;
+    STRENTRYW* pse;
+} STRTABLEW, *LPSTRTABLEW;
+typedef const STRTABLEW CSTRTABLEW, *LPCSTRTABLEW;
+
+DECL_WINELIB_TYPE_AW(STRTABLE)
+DECL_WINELIB_TYPE_AW(CSTRTABLE)
+DECL_WINELIB_TYPE_AW(LPSTRTABLE)
+DECL_WINELIB_TYPE_AW(LPCSTRTABLE)
+
+/* Flags for AddDelBackupEntry */
+#define AADBE_ADD_ENTRY             0x01
+#define AADBE_DEL_ENTRY             0x02
+
+/* Flags for AdvInstallFile */
+#define AIF_WARNIFSKIP              0x00000001
+#define AIF_NOSKIP                  0x00000002
+#define AIF_NOVERSIONCHECK          0x00000004
+#define AIF_FORCE_FILE_IN_USE       0x00000008
+#define AIF_NOOVERWRITE             0x00000010
+#define AIF_NO_VERSION_DIALOG       0x00000020
+#define AIF_REPLACEONLY             0x00000400
+#define AIF_NOLANGUAGECHECK         0x10000000
+#define AIF_QUIET                   0x20000000
+
+/* Flags for RunSetupCommand */
+#define RSC_FLAG_INF                0x00000001
+#define RSC_FLAG_SKIPDISKSPACECHECK 0x00000002
+#define RSC_FLAG_QUIET              0x00000004
+#define RSC_FLAG_NGCONV             0x00000008
+#define RSC_FLAG_UPDHLPDLLS         0x00000010
+#define RSC_FLAG_DELAYREGISTEROCX   0x00000200
+#define RSC_FLAG_SETUPAPI           0x00000400
+
+/* Flags for DelNode */
+#define ADN_DEL_IF_EMPTY            0x00000001
+#define ADN_DONT_DEL_SUBDIRS        0x00000002
+#define ADN_DONT_DEL_DIR            0x00000004
+#define ADN_DEL_UNC_PATHS           0x00000008
+
+/* Flags for RegRestoreAll, RegSaveRestore, RegSaveRestoreOnINF */
+#define  IE4_RESTORE                0x00000001
+#define  IE4_BACKNEW                0x00000002
+#define  IE4_NODELETENEW            0x00000004
+#define  IE4_NOMESSAGES             0x00000008
+#define  IE4_NOPROGRESS             0x00000010
+#define  IE4_NOENUMKEY              0x00000020
+#define  IE4_NO_CRC_MAPPING         0x00000040
+#define  IE4_REGSECTION             0x00000080
+#define  IE4_FRDOALL                0x00000100
+#define  IE4_UPDREFCNT              0x00000200
+#define  IE4_USEREFCNT              0x00000400
+#define  IE4_EXTRAINCREFCNT         0x00000800
+
+/* Flags for file save and restore functions */
+#define  AFSR_RESTORE               IE4_RESTORE
+#define  AFSR_BACKNEW               IE4_BACKNEW
+#define  AFSR_NODELETENEW           IE4_NODELETENEW
+#define  AFSR_NOMESSAGES            IE4_NOMESSAGES
+#define  AFSR_NOPROGRESS            IE4_NOPROGRESS
+#define  AFSR_UPDREFCNT             IE4_UPDREFCNT
+#define  AFSR_USEREFCNT             IE4_USEREFCNT
+#define  AFSR_EXTRAINCREFCNT        IE4_EXTRAINCREFCNT
+
+HRESULT WINAPI AddDelBackupEntryA(LPCSTR lpcszFileList, LPCSTR lpcszBackupDir,
+     LPCSTR lpcszBaseName, DWORD dwFlags);
+HRESULT WINAPI AddDelBackupEntryW(LPCWSTR lpcszFileList, LPCWSTR lpcszBackupDir,
+     LPCWSTR lpcszBaseName, DWORD dwFlags);
+#define AddDelBackupEntry WINELIB_NAME_AW(AddDelBackupEntry)
+HRESULT WINAPI AdvInstallFileA(HWND hwnd, LPCSTR lpszSourceDir,
+     LPCSTR lpszSourceFile, LPCSTR lpszDestDir, LPCSTR lpszDestFile,
+     DWORD dwFlags, DWORD dwReserved);
+HRESULT WINAPI AdvInstallFileW(HWND hwnd, LPCWSTR lpszSourceDir,
+     LPCWSTR lpszSourceFile, LPCWSTR lpszDestDir, LPCWSTR lpszDestFile,
+     DWORD dwFlags, DWORD dwReserved);
+#define AdvInstallFile WINELIB_NAME_AW(AdvInstallFile)
+HRESULT WINAPI CloseINFEngine(HINF hInf);
+HRESULT WINAPI DelNodeA(LPCSTR pszFileOrDirName, DWORD dwFlags);
+HRESULT WINAPI DelNodeW(LPCWSTR pszFileOrDirName, DWORD dwFlags);
+#define DelNode WINELIB_NAME_AW(DelNode)
+HRESULT WINAPI DelNodeRunDLL32A(HWND,HINSTANCE,LPSTR,INT);
+HRESULT WINAPI DelNodeRunDLL32W(HWND,HINSTANCE,LPWSTR,INT);
+#define DelNodeRunDLL32 WINELIB_NAME_AW(DelNodeRunDLL32)
+HRESULT WINAPI ExecuteCabA( HWND hwnd, CABINFOA* pCab, LPVOID pReserved );
+HRESULT WINAPI ExecuteCabW( HWND hwnd, CABINFOW* pCab, LPVOID pReserved );
+#define ExecuteCab WINELIB_NAME_AW(ExecuteCab)
+HRESULT WINAPI ExtractFilesA(LPCSTR,LPCSTR,DWORD,LPCSTR,LPVOID,DWORD);
+HRESULT WINAPI ExtractFilesW(LPCWSTR,LPCWSTR,DWORD,LPCWSTR,LPVOID,DWORD);
+#define ExtractFiles WINELIB_NAME_AW(ExtractFiles)
+HRESULT WINAPI FileSaveMarkNotExistA(LPSTR pszFileList, LPSTR pszDir, LPSTR pszBaseName);
+HRESULT WINAPI FileSaveMarkNotExistW(LPWSTR pszFileList, LPWSTR pszDir, LPWSTR pszBaseName);
+#define FileSaveMarkNotExist WINELIB_NAME_AW(FileSaveMarkNotExist)
+HRESULT WINAPI FileSaveRestoreA(HWND hDlg, LPSTR pszFileList, LPSTR pszDir,
+     LPSTR pszBaseName, DWORD dwFlags);
+HRESULT WINAPI FileSaveRestoreW(HWND hDlg, LPWSTR pszFileList, LPWSTR pszDir,
+     LPWSTR pszBaseName, DWORD dwFlags);
+#define FileSaveRestore WINELIB_NAME_AW(FileSaveRestore)
+HRESULT WINAPI FileSaveRestoreOnINFA(HWND hWnd, LPCSTR pszTitle, LPCSTR pszINF,
+     LPCSTR pszSection, LPCSTR pszBackupDir, LPCSTR pszBaseBackupFile, DWORD dwFlags);
+HRESULT WINAPI FileSaveRestoreOnINFW(HWND hWnd, LPCWSTR pszTitle, LPCWSTR pszINF,
+     LPCWSTR pszSection, LPCWSTR pszBackupDir, LPCWSTR pszBaseBackupFile, DWORD dwFlags);
+#define FileSaveRestoreOnINF WINELIB_NAME_AW(FileSaveRestoreOnINF)
+HRESULT WINAPI GetVersionFromFileA(LPCSTR lpszFilename, LPDWORD pdwMSVer, LPDWORD pdwLSVer, BOOL bVersion);
+HRESULT WINAPI GetVersionFromFileW(LPCWSTR lpszFilename, LPDWORD pdwMSVer, LPDWORD pdwLSVer, BOOL bVersion);
+#define GetVersionFromFile WINELIB_NAME_AW(GetVersionFromFile)
+HRESULT WINAPI GetVersionFromFileExA(LPCSTR lpszFilename, LPDWORD pdwMSVer, LPDWORD pdwLSVer, BOOL bVersion);
+HRESULT WINAPI GetVersionFromFileExW(LPCWSTR lpszFilename, LPDWORD pdwMSVer, LPDWORD pdwLSVer, BOOL bVersion);
+#define GetVersionFromFileEx WINELIB_NAME_AW(GetVersionFromFileEx)
+BOOL WINAPI IsNTAdmin(DWORD,LPDWORD);
+INT WINAPI LaunchINFSectionA(HWND,HINSTANCE,LPSTR,INT);
+INT WINAPI LaunchINFSectionW(HWND,HINSTANCE,LPWSTR,INT);
+#define LaunchINFSection WINELIB_NAME_AW(LaunchINFSection)
+HRESULT WINAPI LaunchINFSectionExA(HWND,HINSTANCE,LPSTR,INT);
+HRESULT WINAPI LaunchINFSectionExW(HWND,HINSTANCE,LPWSTR,INT);
+#define LaunchINFSectionEx WINELIB_NAME_AW(LaunchINFSectionEx)
+DWORD WINAPI NeedRebootInit(VOID);
+BOOL WINAPI NeedReboot(DWORD dwRebootCheck);
+HRESULT WINAPI OpenINFEngineA(LPCSTR pszInfFilename, LPCSTR pszInstallSection,
+     DWORD dwFlags, HINF *phInf, PVOID pvReserved);
+HRESULT WINAPI OpenINFEngineW(LPCWSTR pszInfFilename, LPCWSTR pszInstallSection,
+     DWORD dwFlags, HINF *phInf, PVOID pvReserved);
+#define OpenINFEngine WINELIB_NAME_AW(OpenINFEngine)
+HRESULT WINAPI RebootCheckOnInstallA(HWND hWnd, LPCSTR pszINF, LPCSTR pszSec, DWORD dwReserved);
+HRESULT WINAPI RebootCheckOnInstallW(HWND hWnd, LPCWSTR pszINF, LPCWSTR pszSec, DWORD dwReserved);
+#define RebootCheckOnInstall WINELIB_NAME_AW(RebootCheckOnInstall)
+HRESULT WINAPI RegInstallA(HMODULE hm, LPCSTR pszSection, const STRTABLEA* pstTable);
+HRESULT WINAPI RegInstallW(HMODULE hm, LPCWSTR pszSection, const STRTABLEW* pstTable);
+#define RegInstall WINELIB_NAME_AW(RegInstall)
+HRESULT WINAPI RegRestoreAllA(HWND hWnd, LPSTR pszTitleString, HKEY hkBackupKey);
+HRESULT WINAPI RegRestoreAllW(HWND hWnd, LPWSTR pszTitleString, HKEY hkBackupKey);
+#define RegRestoreAll WINELIB_NAME_AW(RegRestoreAll)
+HRESULT WINAPI RegSaveRestoreA(HWND hWnd, LPCSTR pszTitleString, HKEY hkBackupKey,
+     LPCSTR pcszRootKey, LPCSTR pcszSubKey, LPCSTR pcszValueName, DWORD dwFlags);
+HRESULT WINAPI RegSaveRestoreW(HWND hWnd, LPCWSTR pszTitleString, HKEY hkBackupKey,
+     LPCWSTR pcszRootKey, LPCWSTR pcszSubKey, LPCWSTR pcszValueName, DWORD dwFlags);
+#define RegSaveRestore WINELIB_NAME_AW(RegSaveRestore)
+HRESULT WINAPI RegSaveRestoreOnINFA(HWND hWnd, LPCSTR pszTitle, LPCSTR pszINF,
+     LPCSTR pszSection, HKEY hHKLMBackKey, HKEY hHKCUBackKey, DWORD dwFlags);
+HRESULT WINAPI RegSaveRestoreOnINFW(HWND hWnd, LPCWSTR pszTitle, LPCWSTR pszINF,
+     LPCWSTR pszSection, HKEY hHKLMBackKey, HKEY hHKCUBackKey, DWORD dwFlags);
+#define RegSaveRestoreOnINF WINELIB_NAME_AW(RegSaveRestoreOnINF)
+HRESULT WINAPI RunSetupCommandA(HWND hWnd,
+     LPCSTR szCmdName, LPCSTR szInfSection, LPCSTR szDir, LPCSTR lpszTitle,
+     HANDLE *phEXE, DWORD dwFlags, LPVOID pvReserved);
+HRESULT WINAPI RunSetupCommandW(HWND hWnd,
+     LPCWSTR szCmdName, LPCWSTR szInfSection, LPCWSTR szDir, LPCWSTR lpszTitle,
+     HANDLE *phEXE, DWORD dwFlags, LPVOID pvReserved);
+#define RunSetupCommand WINELIB_NAME_AW(RunSetupCommand)
+HRESULT WINAPI SetPerUserSecValuesA(PERUSERSECTIONA* pPerUser);
+HRESULT WINAPI SetPerUserSecValuesW(PERUSERSECTIONW* pPerUser);
+#define SetPerUserSecValues WINELIB_NAME_AW(SetPerUserSecValues)
+HRESULT WINAPI TranslateInfStringA(LPCSTR pszInfFilename, LPCSTR pszInstallSection,
+     LPCSTR pszTranslateSection, LPCSTR pszTranslateKey, LPSTR pszBuffer,
+     DWORD dwBufferSize, PDWORD pdwRequiredSize, PVOID pvReserved);
+HRESULT WINAPI TranslateInfStringW(LPCWSTR pszInfFilename, LPCWSTR pszInstallSection,
+     LPCWSTR pszTranslateSection, LPCWSTR pszTranslateKey, LPWSTR pszBuffer,
+     DWORD dwBufferSize, PDWORD pdwRequiredSize, PVOID pvReserved);
+#define TranslateInfString WINELIB_NAME_AW(TranslateInfString)
+HRESULT WINAPI TranslateInfStringExA(HINF hInf, LPCSTR pszInfFilename,
+    LPCSTR pszTranslateSection, LPCSTR pszTranslateKey, LPSTR pszBuffer,
+    DWORD dwBufferSize, PDWORD pdwRequiredSize, PVOID pvReserved);
+HRESULT WINAPI TranslateInfStringExW(HINF hInf, LPCWSTR pszInfFilename,
+    LPCWSTR pszTranslateSection, LPCWSTR pszTranslateKey, LPWSTR pszBuffer,
+    DWORD dwBufferSize, PDWORD pdwRequiredSize, PVOID pvReserved);
+#define TranslateInfStringEx WINELIB_NAME_AW(TranslateInfStringEx)
+HRESULT WINAPI UserInstStubWrapperA(HWND hWnd, HINSTANCE hInstance, LPSTR pszParms, INT nShow);
+HRESULT WINAPI UserInstStubWrapperW(HWND hWnd, HINSTANCE hInstance, LPWSTR pszParms, INT nShow);
+#define UserInstStubWrapper WINELIB_NAME_AW(UserInstStubWrapper)
+HRESULT WINAPI UserUnInstStubWrapperA(HWND hWnd, HINSTANCE hInstance, LPSTR pszParms, INT nShow);
+HRESULT WINAPI UserUnInstStubWrapperW(HWND hWnd, HINSTANCE hInstance, LPWSTR pszParms, INT nShow);
+#define UserUnInstStubWrapper WINELIB_NAME_AW(UserUnInstStubWrapper)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_ADVPUB_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/amstream.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/amstream.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/amstream.idl	(revision 16410)
@@ -0,0 +1,317 @@
+/*
+ * Copyright 2004 Christian Costa
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "unknwn.idl";
+import "mmstream.idl";
+import "strmif.idl";
+
+cpp_quote("#include <ddraw.h>")
+cpp_quote("#include <mmsystem.h>")
+cpp_quote("#include <mmstream.h>")
+cpp_quote("#include <ddstream.h>")
+cpp_quote("#include <austream.h>")
+
+cpp_quote("#if 0")
+interface IDirectDraw;
+interface IDirectDrawSurface;
+cpp_quote("#endif")
+
+interface IAMMultiMediaStream;
+interface IAMMediaStream;
+interface IMediaStreamFilter;
+interface IAMMediaTypeStream;
+interface IAMMediaTypeSample;
+
+enum {
+	AMMSF_NOGRAPHTHREAD      = 0x00000001
+};
+
+enum {
+	AMMSF_ADDDEFAULTRENDERER = 0x00000001,
+	AMMSF_CREATEPEER         = 0x00000002,
+	AMMSF_STOPIFNOSAMPLES	 = 0x00000004,
+	AMMSF_NOSTALL		 = 0x00000008
+};
+
+enum {
+	AMMSF_RENDERTYPEMASK     = 0x00000003,
+	AMMSF_RENDERTOEXISTING   = 0x00000000,
+	AMMSF_RENDERALLSTREAMS   = 0x00000001,
+	AMMSF_NORENDER           = 0x00000002,
+	AMMSF_NOCLOCK            = 0x00000004,
+	AMMSF_RUN                = 0x00000008
+};
+
+
+typedef [v1_enum] enum {
+	Disabled = 0,
+	ReadData = 1,
+	RenderData = 2
+} OUTPUT_STATE;
+
+[
+object,
+uuid(7DB01C96-C0C3-11d0-8FF1-00C04FD9189D),
+dual,
+helpstring("IDirectShowStream Interface"),
+pointer_default(unique)
+]
+interface IDirectShowStream : IDispatch
+{
+	[propget, id(1), helpstring("property FileName")] HRESULT FileName([out, retval] BSTR *pVal);
+	[propput, id(1), helpstring("property FileName")] HRESULT FileName([in] BSTR newVal);
+	[propget, id(2), helpstring("property Video")] HRESULT Video([out, retval] OUTPUT_STATE *pVal);
+	[propput, id(2), helpstring("propetry Video")] HRESULT Video([in] OUTPUT_STATE newVal);
+	[propget, id(3), helpstring("property Audio")] HRESULT Audio([out, retval] OUTPUT_STATE *pVal);
+	[propput, id(3), helpstring("propetry Audio")] HRESULT Audio([in] OUTPUT_STATE newVal);
+};
+
+[
+object,
+uuid(BEBE595C-9A6F-11d0-8FDE-00C04FD9189D),
+pointer_default(unique)
+]
+interface IAMMultiMediaStream : IMultiMediaStream
+{
+	HRESULT Initialize(
+		[in] STREAM_TYPE StreamType,
+		[in] DWORD dwFlags,
+		[in] IGraphBuilder *pFilterGraph);
+
+	HRESULT GetFilterGraph(
+		[out] IGraphBuilder **ppGraphBuilder);
+
+	HRESULT GetFilter(
+		[out] IMediaStreamFilter **ppFilter);
+
+	HRESULT AddMediaStream(
+		[in] IUnknown *pStreamObject,
+		[in] const MSPID *PurposeId,
+		[in] DWORD dwFlags,
+		[out] IMediaStream **ppNewStream);
+
+	HRESULT OpenFile(
+		[in] LPCWSTR pszFileName,
+		[in] DWORD dwFlags);
+
+	HRESULT OpenMoniker(
+		[in] IBindCtx *pCtx,
+		[in] IMoniker *pMoniker,
+		[in] DWORD dwFlags);
+
+	HRESULT Render(
+		[in] DWORD dwFlags);
+}
+
+
+[
+object,
+uuid(BEBE595D-9A6F-11d0-8FDE-00C04FD9189D),
+pointer_default(unique)
+]
+interface IAMMediaStream : IMediaStream
+{
+	HRESULT Initialize(
+		[in] IUnknown *pSourceObject,
+		[in] DWORD dwFlags,
+		[in] REFMSPID PurposeId,
+		[in] const STREAM_TYPE StreamType);
+
+	HRESULT SetState(
+		[in] FILTER_STATE State);
+
+	HRESULT JoinAMMultiMediaStream(
+		[in] IAMMultiMediaStream *pAMMultiMediaStream);
+
+	HRESULT JoinFilter(
+		[in] IMediaStreamFilter *pMediaStreamFilter);
+
+	HRESULT JoinFilterGraph(
+		[in] IFilterGraph *pFilterGraph);
+}
+
+
+[
+object,
+local,
+uuid(BEBE595E-9A6F-11d0-8FDE-00C04FD9189D),
+pointer_default(unique)
+]
+interface IMediaStreamFilter : IBaseFilter
+{
+	HRESULT AddMediaStream(
+		[in] IAMMediaStream *pAMMediaStream);
+
+	HRESULT GetMediaStream(
+		[in] REFMSPID idPurpose,
+		[out] IMediaStream **ppMediaStream);
+
+	HRESULT EnumMediaStreams(
+		[in] long Index,
+		[out] IMediaStream **ppMediaStream);
+
+	HRESULT SupportSeeking(
+		[in] BOOL bRenderer);
+
+	HRESULT ReferenceTimeToStreamTime(
+		[in] [out] REFERENCE_TIME *pTime);
+
+	HRESULT GetCurrentStreamTime(
+		[out] REFERENCE_TIME *pCurrentStreamTime);
+
+	HRESULT WaitUntil(
+		[in]  REFERENCE_TIME WaitStreamTime);
+
+	HRESULT Flush(
+		[in] BOOL bCancelEOS);
+
+	HRESULT EndOfStream();
+}
+
+
+[
+object,
+local,
+uuid(AB6B4AFC-F6E4-11d0-900D-00C04FD9189D),
+pointer_default(unique)
+]
+interface IDirectDrawMediaSampleAllocator : IUnknown
+{
+	HRESULT GetDirectDraw(IDirectDraw **ppDirectDraw);
+}
+
+
+[
+object,
+local,
+uuid(AB6B4AFE-F6E4-11d0-900D-00C04FD9189D),
+pointer_default(unique)
+]
+interface IDirectDrawMediaSample : IUnknown
+{
+	HRESULT GetSurfaceAndReleaseLock(
+		[out] IDirectDrawSurface **ppDirectDrawSurface,
+		[out] RECT * pRect);
+
+	HRESULT LockMediaSamplePointer(void);
+}
+
+
+[
+object,
+local,
+uuid(AB6B4AFA-F6E4-11d0-900D-00C04FD9189D),
+pointer_default(unique)
+]
+
+interface IAMMediaTypeStream : IMediaStream
+{
+	HRESULT GetFormat(
+		[out] AM_MEDIA_TYPE * pMediaType,
+		[in] DWORD dwFlags);
+
+	HRESULT SetFormat(
+		[in] AM_MEDIA_TYPE * pMediaType,
+		[in] DWORD dwFlags);
+
+	HRESULT CreateSample(
+		[in] long lSampleSize,
+		[in] BYTE * pbBuffer,
+		[in] DWORD dwFlags,
+		[in] IUnknown *pUnkOuter,
+		[out] IAMMediaTypeSample ** ppAMMediaTypeSample);
+
+	HRESULT GetStreamAllocatorRequirements(
+		[out] ALLOCATOR_PROPERTIES *pProps);
+
+	HRESULT SetStreamAllocatorRequirements(
+		[in] ALLOCATOR_PROPERTIES *pProps);
+}
+
+
+[
+object,
+local,
+uuid(AB6B4AFB-F6E4-11d0-900D-00C04FD9189D),
+pointer_default(unique)
+]
+interface IAMMediaTypeSample : IStreamSample
+{
+	HRESULT SetPointer(
+		[in] BYTE *pBuffer,
+		[in] long lSize);
+
+	HRESULT GetPointer(
+		[out] BYTE ** ppBuffer);
+
+	long GetSize(void);
+
+	HRESULT GetTime(
+		[out] REFERENCE_TIME * pTimeStart,
+		[out] REFERENCE_TIME * pTimeEnd);
+
+	HRESULT SetTime(
+		[in] REFERENCE_TIME * pTimeStart,
+		[in] REFERENCE_TIME * pTimeEnd);
+
+	HRESULT IsSyncPoint(void);
+
+	HRESULT SetSyncPoint(
+		BOOL bIsSyncPoint);
+
+	HRESULT IsPreroll(void);
+
+	HRESULT SetPreroll(
+		BOOL bIsPreroll);
+
+	long GetActualDataLength(void);
+
+	HRESULT SetActualDataLength(long Len);
+
+	HRESULT GetMediaType(
+		AM_MEDIA_TYPE **ppMediaType);
+
+	HRESULT SetMediaType(
+		AM_MEDIA_TYPE *pMediaType);
+
+	HRESULT IsDiscontinuity(void);
+
+	HRESULT SetDiscontinuity(
+		BOOL bDiscontinuity);
+
+	HRESULT GetMediaTime(
+		[out] LONGLONG * pTimeStart,
+		[out] LONGLONG * pTimeEnd);
+
+	HRESULT SetMediaTime(
+		[in] LONGLONG * pTimeStart,
+		[in] LONGLONG * pTimeEnd);
+}
+
+[
+    uuid(49C47CE5-9BA4-11d0-8212-00C04FC32C45)
+]
+coclass AMMultiMediaStream
+{
+    [default] dispinterface IDirectShowStream;
+}
+
+cpp_quote("DEFINE_GUID(CLSID_AMDirectDrawStream,  0x49c47ce4, 0x9ba4, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45);")
+cpp_quote("DEFINE_GUID(CLSID_AMAudioStream,       0x8496e040, 0xaf4c, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45);")
+cpp_quote("DEFINE_GUID(CLSID_AMAudioData,         0xf2468580, 0xaf8a, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45);")
+cpp_quote("DEFINE_GUID(CLSID_AMMediaTypeStream,   0xcf0f2f7c, 0xf7bf, 0x11d0, 0x90, 0x0d, 0x00, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);")
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/amvideo.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/amvideo.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/amvideo.idl	(revision 16410)
@@ -0,0 +1,241 @@
+/*
+ * Copyright (C) 2003 Robert Shearman
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "objidl.idl";
+
+/* trick widl into thinking that it knows the DirectDraw types 
+ * as there is no IDL file for them (yet) */
+cpp_quote("#if 0")
+typedef void * LPDIRECTDRAW;
+typedef void DDSURFACEDESC,DDCAPS;
+typedef DWORD RGBQUAD;
+typedef LONGLONG REFERENCE_TIME;
+typedef struct
+{
+    DWORD 	biSize;
+    LONG  	biWidth;
+    LONG  	biHeight;
+    WORD 	biPlanes;
+    WORD 	biBitCount;
+    DWORD 	biCompression;
+    DWORD 	biSizeImage;
+    LONG  	biXPelsPerMeter;
+    LONG  	biYPelsPerMeter;
+    DWORD 	biClrUsed;
+    DWORD 	biClrImportant;
+} BITMAPINFOHEADER, *PBITMAPINFOHEADER, *LPBITMAPINFOHEADER;
+cpp_quote("#endif")
+
+cpp_quote("#include <ddraw.h>")
+
+cpp_quote("#define AMDDS_NONE 0x00")
+cpp_quote("#define AMDDS_DCIPS 0x01")
+cpp_quote("#define AMDDS_PS 0x02")
+cpp_quote("#define AMDDS_RGBOVR 0x04")
+cpp_quote("#define AMDDS_YUVOVR 0x08")
+cpp_quote("#define AMDDS_RGBOFF 0x10")
+cpp_quote("#define AMDDS_YUVOFF 0x20")
+cpp_quote("#define AMDDS_RGBFLP 0x40")
+cpp_quote("#define AMDDS_YUVFLP 0x80")
+cpp_quote("#define AMDDS_ALL 0xFF")
+cpp_quote("#define AMDDS_DEFAULT AMDDS_ALL")
+
+cpp_quote("#define AMDDS_YUV (AMDDS_YUVOFF | AMDDS_YUVOVR | AMDDS_YUVFLP)")
+cpp_quote("#define AMDDS_RGB (AMDDS_RGBOFF | AMDDS_RGBOVR | AMDDS_RGBFLP)")
+cpp_quote("#define AMDSS_PRIMARY (AMDDS_DCIPS | AMDDS_PS)")
+
+[
+    object,
+    /* uuid(36d39eb0-dd75-11ce-bf0e-00aa0055595a)  conflicts with uuids.h */
+    pointer_default(unique),
+    local
+]
+interface IDirectDrawVideo : IUnknown
+{
+    HRESULT GetSwitches([out] DWORD * pSwitches);
+    HRESULT SetSwitches([in] DWORD Switches);
+    HRESULT GetCaps([out] DDCAPS * pCaps);
+    HRESULT GetEmulatedCaps([out] DDCAPS *pCaps);
+    HRESULT GetSurfaceDesc([out] DDSURFACEDESC * pSurfaceDesc);
+    HRESULT GetFourCCCodes([out] DWORD * pCount, [out] DWORD * pCodes);
+    HRESULT SetDirectDraw([in] LPDIRECTDRAW pDirectDraw);
+    HRESULT GetDirectDraw([out] LPDIRECTDRAW * ppDirectDraw);
+    HRESULT GetSurfaceType([out] DWORD * pSurfaceType);
+    HRESULT SetDefault();
+    HRESULT UseScanLine([in] long UseScanLine);
+    HRESULT CanUseScanLine([out] long * UseScanLine);
+    HRESULT UseOverlayStretch([in] long UseOverlayStretch);
+    HRESULT CanUseOverlayStretch([out] long * UseOverlayStretch);
+    HRESULT UseWhenFullScreen([in] long UseWhenFullScreen);
+    HRESULT WillUseFullScreen([out] long * UseWhenFullScreen);
+}
+
+[
+    object,
+    /* uuid(1bd0ecb0-f8e2-11ce-aac6-0020af0b99a3)  conflicts with uuids.h */
+    pointer_default(unique),
+    local
+]
+interface IQualProp : IUnknown
+{
+    [propget] HRESULT FramesDroppedInRenderer([out] int * pcFrames);
+    [propget] HRESULT FramesDrawn([out] int * pcFramesDrawn);
+    [propget] HRESULT AvgFrameRate([out] int * piAvgFrameRate);
+    [propget] HRESULT Jitter([out] int * iJitter);
+    [propget] HRESULT AvgSyncOffset([out] int * piAvg);
+    [propget] HRESULT DevSyncOffset([out] int * piDev);
+}
+
+[
+    object,
+    /* uuid(dd1d7110-7836-11cf-bf47-00aa0055595a)  conflicts with uuids.h */
+    pointer_default(unique)
+]
+interface IFullScreenVideo : IUnknown
+{
+    HRESULT CountModes([out] long * pModes);
+    HRESULT GetModeInfo([in] long Mode, [out] long * pWidth, [out] long * pHeight, [out] long * pDepth);
+    HRESULT GetCurrentMode([out] long * pMode);
+    HRESULT IsModeAvailable([in] long Mode);
+    HRESULT IsModeEnabled([in] long Mode);
+    HRESULT SetEnabled([in] long Mode, [in] long bEnabled);
+    HRESULT GetClipFactor([out] long * pClipFactor);
+    HRESULT SetClipFactor([in] long ClipFactor);
+    HRESULT SetMessageDrain([in] HWND hwnd);
+    HRESULT GetMessageDrain([out] HWND * hwnd);
+    HRESULT SetMonitor([in] long Monitor);
+    HRESULT GetMonitor([out] long * Monitor);
+    HRESULT HideOnDeactivate([in] long Hide);
+    HRESULT IsHideOnDeactivate();
+    HRESULT SetCaption([in] BSTR strCaption);
+    HRESULT GetCaption([out] BSTR * pstrCaption);
+    HRESULT SetDefault();
+}
+
+[
+    object,
+    /* uuid(53479470-f1dd-11cf-bc42-00aa00ac74f6)  conflicts with uuids.h */
+    pointer_default(unique),
+    local
+]
+interface IFullScreenVideoEx : IFullScreenVideo
+{
+    HRESULT SetAcceleratorTable([in] HWND hwnd, [in] HACCEL hAccel);
+    HRESULT GetAcceleratorTable([out] HWND * phwnd, [out] HACCEL * phAccel);
+    HRESULT KeepPixelAspectRatio([in] long KeepAspect);
+    /* FIXME: not sure is this next method is an [out] */
+    HRESULT IsKeepPixelAspectRatio([out] long * pKeepAspect);
+}
+
+[
+    object,
+    /* uuid(61ded640-e912-11ce-a099-00aa00479a58)  conflicts with uuids.h */
+    pointer_default(unique),
+    local
+]
+interface IBaseVideoMixer : IUnknown
+{
+    HRESULT SetLeadPin([in] int iPin);
+    HRESULT GetLeadPin([out] int * piPin);
+    HRESULT GetInputPinCount([out] int * piPinCount);
+    HRESULT IsUsingClock([out] int * pbValue);
+    HRESULT SetUsingClock([in] int bValue);
+    HRESULT GetClockPeriod([out] int * pbValue);
+    HRESULT SetClockPeriod([in] int bValue);
+}
+
+#define iPALETTE_COLORS 256
+#define iMASK_COLORS 3
+
+cpp_quote("#define iPALETTE_COLORS 256")
+cpp_quote("#define iEGA_COLORS 16")
+cpp_quote("#define iMASK_COLORS 3")
+cpp_quote("#define iTRUECOLOR 16")
+cpp_quote("#define iRED 0")
+cpp_quote("#define iGREEN 1")
+cpp_quote("#define iBLUE 2")
+cpp_quote("#define iPALETTE 8")
+cpp_quote("#define iMAXBITS 8")
+
+typedef struct tag_TRUECOLORINFO
+{
+    DWORD dwBitMasks[iMASK_COLORS];
+    RGBQUAD bmiColors[iPALETTE_COLORS];
+} TRUECOLORINFO;
+
+typedef struct tagVIDEOINFOHEADER
+{
+    RECT rcSource;
+    RECT rcTarget;
+    DWORD dwBitRate;
+    DWORD dwBitErrorRate;
+    REFERENCE_TIME AvgTimePerFrame;
+
+    BITMAPINFOHEADER bmiHeader;
+} VIDEOINFOHEADER;
+
+typedef struct tagVIDEOINFO
+{
+    RECT rcSource;
+    RECT rcTarget;
+    DWORD dwBitRate;
+    DWORD dwBitErrorRate;
+    REFERENCE_TIME AvgTimePerFrame;
+
+    BITMAPINFOHEADER bmiHeader;
+
+    union
+    {
+        RGBQUAD bmiColors[iPALETTE_COLORS];
+        DWORD dwBitMasks[iMASK_COLORS];
+        TRUECOLORINFO TrueColorInfo;
+    } DUMMYUNIONNAME;
+} VIDEOINFO;
+
+typedef struct tagMPEG1VIDEOINFO
+{
+    VIDEOINFOHEADER hdr;
+    DWORD dwStartTimeCode;
+    DWORD cbSequenceHeader;
+    BYTE bSequenceHeader[1];
+} MPEG1VIDEOINFO;
+
+cpp_quote("#define MAX_SIZE_MPEG1_SEQUENCE_INFO 140")
+cpp_quote("#define MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader)")
+
+typedef struct tagAnalogVideoInfo
+{
+    RECT rcSource;
+    RECT rcTarget;
+    DWORD dwActiveWidth;
+    DWORD dwActiveHeight;
+    REFERENCE_TIME AvgTimePerFrame;
+} ANALOGVIDEOINFO;
+
+typedef enum
+{
+    AM_PROPERTY_FRAMESTEP_STEP = 0x01,
+    AM_PROPERTY_FRAMESTEP_CANCEL = 0x02,
+    AM_PROPERTY_FRAMESTEP_CANSTEP = 0x03,
+    AM_PROPERTY_FRAMESTEP_CANSTEPMULTIPLE = 0x04
+} AM_PROPERTY_FRAMESTEP;
+
+typedef struct _AM_FRAMESTEP_STEP
+{
+    DWORD dwFramesToStep;
+} AM_FRAMESTEP_STEP;
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/appmgmt.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/appmgmt.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/appmgmt.h	(revision 16410)
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2005 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _APPMGMT_H
+#define _APPMGMT_H
+
+typedef struct _MANAGEDAPPLICATION
+{
+    LPWSTR pszPackageName;
+    LPWSTR pszPublisher;
+    DWORD dwVersionHi;
+    DWORD dwVersionLo;
+    DWORD dwRevision;
+    GUID GpoId;
+    LPWSTR pszPolicyName;
+    GUID ProductId;
+    LANGID Language;
+    LPWSTR pszOwner;
+    LPWSTR pszCompany;
+    LPWSTR pszComments;
+    LPWSTR pszContact;
+    LPWSTR pszSupportUrl;
+    DWORD dwPathType;
+    BOOL bInstalled;
+} MANAGEDAPPLICATION, *PMANAGEDAPPLICATION;
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+DWORD WINAPI CommandLineFromMsiDescriptor(WCHAR*,WCHAR*,DWORD*);
+DWORD WINAPI GetManagedApplications(GUID*,DWORD,DWORD,LPDWORD,PMANAGEDAPPLICATION*);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _APPMGMT_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/audevcod.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/audevcod.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/audevcod.h	(revision 16410)
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2002 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __AUDEVCOD__
+#define __AUDEVCOD__
+
+typedef enum _tagSND_DEVICE_ERROR
+{
+    SNDDEV_ERROR_Open=1,
+    SNDDEV_ERROR_Close=2,
+    SNDDEV_ERROR_GetCaps=3,
+    SNDDEV_ERROR_PrepareHeader=4,
+    SNDDEV_ERROR_UnprepareHeader=5,
+    SNDDEV_ERROR_Reset=6,
+    SNDDEV_ERROR_Restart=7,
+    SNDDEV_ERROR_GetPosition=8,
+    SNDDEV_ERROR_Write=9,
+    SNDDEV_ERROR_Pause=10,
+    SNDDEV_ERROR_Stop=11,
+    SNDDEV_ERROR_Start=12,
+    SNDDEV_ERROR_AddBuffer=13,
+    SNDDEV_ERROR_Query=14
+} SNDDEV_ERR;
+
+#define EC_SND_DEVICE_ERROR_BASE 0x0200
+#define EC_SNDDEV_IN_ERROR       (EC_SND_DEVICE_ERROR_BASE+0x00)
+#define EC_SNDDEV_OUT_ERROR      (EC_SND_DEVICE_ERROR_BASE+0x01)
+
+#endif  /* __AUDEVCOD__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/austream.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/austream.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/austream.idl	(revision 16410)
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2004 Christian Costa
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "unknwn.idl";
+import "mmstream.idl";
+
+cpp_quote("#if 0")
+typedef struct tWAVEFORMATEX WAVEFORMATEX;
+cpp_quote ("#endif")
+
+interface IAudioMediaStream;
+interface IAudioStreamSample;
+interface IMemoryData;
+interface IAudioData;
+
+[
+object,
+local,
+uuid(f7537560-a3be-11d0-8212-00c04fc32c45),
+pointer_default(unique)
+]
+interface IAudioMediaStream : IMediaStream
+{
+	HRESULT GetFormat(
+		[out] /*[optional]*/ WAVEFORMATEX *pWaveFormatCurrent
+	);
+
+	HRESULT SetFormat(
+		[in] const WAVEFORMATEX *lpWaveFormat);
+
+	HRESULT CreateSample(
+		[in] IAudioData *pAudioData,
+		[in] DWORD dwFlags,
+		[out] IAudioStreamSample **ppSample
+	);
+}
+
+
+[
+object,
+local,
+uuid(345fee00-aba5-11d0-8212-00c04fc32c45),
+pointer_default(unique)
+]
+interface IAudioStreamSample : IStreamSample
+{
+	HRESULT GetAudioData(
+		[out] IAudioData **ppAudio
+	);
+}
+
+
+[
+object,
+local,
+uuid(327fc560-af60-11d0-8212-00c04fc32c45),
+pointer_default(unique)
+]
+interface IMemoryData : IUnknown
+{
+	HRESULT SetBuffer(
+		[in] DWORD cbSize,
+		[in] BYTE *pbData,
+		[in] DWORD dwFlags
+	);
+
+	HRESULT GetInfo(
+		[out] DWORD *pdwLength,
+		[out] BYTE **ppbData,
+		[out] DWORD *pcbActualData
+	);
+	HRESULT SetActual(
+		[in] DWORD cbDataValid
+	);
+}
+
+
+[
+object,
+local,
+uuid(54c719c0-af60-11d0-8212-00c04fc32c45),
+pointer_default(unique)
+]
+interface IAudioData : IMemoryData
+{
+	HRESULT GetFormat(
+		[out] /*[optional]*/ WAVEFORMATEX *pWaveFormatCurrent
+	);
+
+	HRESULT SetFormat(
+		[in] const WAVEFORMATEX *lpWaveFormat
+	);
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/aviriff.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/aviriff.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/aviriff.h	(revision 16410)
@@ -0,0 +1,324 @@
+/*
+ * Copyright (C) 2003 Robert Shearman
+ * Copyright (C) 2008 Maarten Lankhorst
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/* All definitions here are packed structures of on-disk formats */
+#include <pshpack2.h>
+
+typedef struct _riffchunk
+{
+    FOURCC fcc;
+    DWORD cb;
+} RIFFCHUNK, * LPRIFFCHUNK;
+
+typedef struct _rifflist
+{
+    FOURCC fcc;
+    DWORD cb;
+    FOURCC fccListType;
+} RIFFLIST, * LPRIFFLIST;
+
+#define FCC( ch0, ch1, ch2, ch3 ) \
+    ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) <<  8 ) | \
+    ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )
+
+#define RIFFROUND(cb) ((cb) + ((cb)&1))
+#define RIFFNEXT(pChunk) (LPRIFFCHUNK)((LPBYTE)(pChunk)+sizeof(RIFFCHUNK)+RIFFROUND(((LPRIFFCHUNK)pChunk)->cb))
+
+/* flags for dwFlags member of AVIMAINHEADER */
+#define AVIF_HASINDEX       0x00000010
+#define AVIF_MUSTUSEINDEX   0x00000020
+#define AVIF_ISINTERLEAVED  0x00000100
+#define AVIF_TRUSTCKTYPE    0x00000800
+#define AVIF_WASCAPTUREFILE 0x00010000
+#define AVIF_COPYRIGHTED    0x00020000
+
+#define ckidMAINAVIHEADER FCC('a','v','i','h')
+typedef struct _avimainheader
+{
+    FOURCC fcc;
+    DWORD cb;
+    DWORD dwMicroSecPerFrame;
+    DWORD dwMaxBytesPerSec;
+    DWORD dwPaddingGranularity;
+    DWORD dwFlags;
+    DWORD dwTotalFrames;
+    DWORD dwInitialFrames;
+    DWORD dwStreams;
+    DWORD dwSuggestedBufferSize;
+    DWORD dwWidth;
+    DWORD dwHeight;
+    DWORD dwReserved[4];
+} AVIMAINHEADER;
+
+#define ckidODML FCC('o','d','m','l')
+#define ckidAVIEXTHEADER  FCC('d','m','l','h')
+typedef struct _aviextheader
+{
+    FOURCC fcc;
+    DWORD cb;
+    DWORD dwGrandFrames;
+    DWORD dwFuture[61];
+} AVIEXTHEADER;
+
+#define ckidSTREAMLIST FCC('s','t','r','l')
+
+/* flags for dwFlags member of AVISTREAMHEADER */
+#define AVISF_DISABLED         0x00000001
+#define AVISF_VIDEO_PALCHANGES 0x00010000
+
+#ifndef ckidSTREAMHEADER
+#define ckidSTREAMHEADER FCC('s','t','r','h')
+#endif
+
+#ifndef streamtypeVIDEO
+#define streamtypeVIDEO FCC('v','i','d','s')
+#define streamtypeAUDIO FCC('a','u','d','s')
+#define streamtypeMIDI FCC('m','i','d','s')
+#define streamtypeTEXT FCC('t','x','t','s')
+#endif
+
+typedef struct _avistreamheader
+{
+    FOURCC fcc;
+    DWORD cb;
+    FOURCC fccType;
+    FOURCC fccHandler;
+    DWORD dwFlags;
+    WORD wPriority;
+    WORD wLanguage;
+    DWORD dwInitialFrames;
+    DWORD dwScale;
+    DWORD dwRate;
+    DWORD dwStart;
+    DWORD dwLength;
+    DWORD dwSuggestedBufferSize;
+    DWORD dwQuality;
+    DWORD dwSampleSize;
+    struct
+    {
+        short int left;
+        short int top;
+        short int right;
+        short int bottom;
+    } rcFrame;
+} AVISTREAMHEADER;
+
+#ifndef ckidSTREAMFORMAT
+#define ckidSTREAMFORMAT FCC('s','t','r','f')
+#endif
+#define ckidAVIOLDINDEX FCC('i','d','x','1')
+
+/* flags for dwFlags member of _avioldindex_entry */
+#define AVIIF_LIST       0x00000001
+#define AVIIF_KEYFRAME   0x00000010
+#define AVIIF_NO_TIME    0x00000100
+#define AVIIF_COMPRESSOR 0x0FFF0000
+
+typedef struct _avioldindex
+{
+    FOURCC fcc;
+    DWORD cb;
+    struct _avioldindex_entry
+    {
+        DWORD dwChunkId;
+        DWORD dwFlags;
+        DWORD dwOffset;
+        DWORD dwSize;
+    } aIndex[ANYSIZE_ARRAY];
+} AVIOLDINDEX;
+
+typedef union _timecode
+{
+    struct
+    {
+        WORD wFrameRate;
+        WORD wFrameFract;
+        LONG cFrames;
+    } DUMMYSTRUCTNAME;
+    DWORDLONG qw;
+} TIMECODE;
+
+#define TIMECODE_RATE_30DROP 0
+
+/* flags for dwSMPTEflags member of TIMECODEDATA */
+#define TIMECODE_SMPTE_BINARY_GROUP 0x07
+#define TIMECODE_SMPTE_COLOR_FRAME  0x08
+
+typedef struct _timecodedata
+{
+    TIMECODE time;
+    DWORD dwSMPTEflags;
+    DWORD dwUser;
+} TIMECODEDATA;
+
+#define AVI_INDEX_OF_INDEXES      0x00
+#define AVI_INDEX_OF_CHUNKS       0x01
+#define AVI_INDEX_OF_TIMED_CHUNKS 0x02
+#define AVI_INDEX_OF_SUB_2FIELD   0x03
+#define AVI_INDEX_IS_DATA         0x80
+
+#define AVI_INDEX_SUB_DEFAULT     0x00
+#define AVI_INDEX_SUB_2FIELD      0x01
+
+typedef struct _avimetaindex
+{
+    FOURCC fcc;
+    UINT cb;
+    WORD wLongsPerEntry;
+    BYTE bIndexSubType;
+    BYTE bIndexType;
+    DWORD nEntriesInUse;
+    DWORD dwChunkId;
+    DWORD dwReserved[3];
+    DWORD adwIndex[ANYSIZE_ARRAY];
+} AVIMETAINDEX;
+
+#define ckidAVISUPERINDEX FCC('i','n','d','x')
+typedef struct _avisuperindex {
+    FOURCC fcc;
+    UINT cb;
+    WORD wLongsPerEntry;
+    BYTE bIndexSubType;
+    BYTE bIndexType;
+    DWORD nEntriesInUse;
+    DWORD dwChunkId;
+    DWORD dwReserved[3];
+    struct _avisuperindex_entry {
+        DWORDLONG qwOffset;
+        DWORD dwSize;
+        DWORD dwDuration;
+    } aIndex[ANYSIZE_ARRAY];
+} AVISUPERINDEX;
+
+#define AVISTDINDEX_DELTAFRAME (0x80000000)
+#define AVISTDINDEX_SIZEMASK (~0x80000000)
+
+typedef struct _avistdindex_entry {
+    DWORD dwOffset;
+    DWORD dwSize;
+} AVISTDINDEX_ENTRY;
+
+typedef struct _avistdindex {
+    FOURCC fcc;
+    UINT cb;
+    WORD wLongsPerEntry;
+    BYTE bIndexSubType;
+    BYTE bIndexType;
+    DWORD    nEntriesInUse;
+    DWORD    dwChunkId;
+    DWORDLONG qwBaseOffset;
+    DWORD    dwReserved_3;
+    AVISTDINDEX_ENTRY aIndex[ANYSIZE_ARRAY];
+} AVISTDINDEX;
+
+typedef struct _avitimedindex_entry {
+    DWORD dwOffset;
+    DWORD dwSize;
+    DWORD dwDuration;
+} AVITIMEDINDEX_ENTRY;
+
+typedef struct _avitimedindex {
+    FOURCC fcc;
+    UINT cb;
+    WORD wLongsPerEntry;
+    BYTE bIndexSubType;
+    BYTE bIndexType;
+    DWORD nEntriesInUse;
+    DWORD dwChunkId;
+    DWORDLONG qwBaseOffset;
+    DWORD dwReserved_3;
+    AVITIMEDINDEX_ENTRY aIndex[ANYSIZE_ARRAY];
+    /* DWORD adwTrailingFill[ANYSIZE_ARRAY]; */
+} AVITIMEDINDEX;
+
+typedef struct _avitimecodeindex {
+    FOURCC fcc;
+    UINT cb;
+    WORD wLongsPerEntry;
+    BYTE bIndexSubType;
+    BYTE bIndexType;
+    DWORD nEntriesInUse;
+    DWORD dwChunkId;
+    DWORD dwReserved[3];
+    TIMECODEDATA aIndex[ANYSIZE_ARRAY];
+} AVITIMECODEINDEX;
+
+typedef struct _avitcdlindex_entryA {
+    DWORD dwTick;
+    TIMECODE time;
+    DWORD dwSMPTEflags;
+    DWORD dwUser;
+    CHAR szReelId[12];
+} AVITCDLINDEX_ENTRYA;
+
+typedef struct _avitcdlindex_entryW {
+    DWORD dwTick;
+    TIMECODE time;
+    DWORD dwSMPTEflags;
+    DWORD dwUser;
+    WCHAR szReelId[12];
+} AVITCDLINDEX_ENTRYW;
+
+typedef struct _avitcdlindexA {
+    FOURCC fcc;
+    UINT cb;
+    WORD wLongsPerEntry;
+    BYTE bIndexSubType;
+    BYTE bIndexType;
+    DWORD nEntriesInUse;
+    DWORD dwChunkId;
+    DWORD dwReserved[3];
+    AVITCDLINDEX_ENTRYA aIndex[ANYSIZE_ARRAY];
+    /* DWORD adwTrailingFill[ANYSIZE_ARRAY]; */
+} AVITCDLINDEXA;
+
+typedef struct _avitcdlindexW {
+    FOURCC fcc;
+    UINT cb;
+    WORD wLongsPerEntry;
+    BYTE bIndexSubType;
+    BYTE bIndexType;
+    DWORD nEntriesInUse;
+    DWORD dwChunkId;
+    DWORD dwReserved[3];
+    AVITCDLINDEX_ENTRYW aIndex[ANYSIZE_ARRAY];
+    /* DWORD adwTrailingFill[ANYSIZE_ARRAY]; */
+} AVITCDLINDEXW;
+
+#define AVITCDLINDEX_ENTRY WINELIB_NAME_AW(AVITCDLINDEX_ENTRY)
+#define AVITCDLINDEX WINELIB_NAME_AW(AVITCDLINDEX)
+
+typedef struct _avifieldindex_chunk {
+    FOURCC fcc;
+    DWORD cb;
+    WORD wLongsPerEntry;
+    BYTE bIndexSubType;
+    BYTE bIndexType;
+    DWORD nEntriesInUse;
+    DWORD dwChunkId;
+    DWORDLONG qwBaseOffset;
+    DWORD dwReserved3;
+    struct _avifieldindex_entry {
+        DWORD dwOffset;
+        DWORD dwSize;
+        DWORD dwOffsetField2;
+    } aIndex[ANYSIZE_ARRAY];
+} AVIFIELDINDEX, * PAVIFIELDINDEX;
+
+#include <poppack.h>
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/axcore.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/axcore.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/axcore.idl	(revision 16410)
@@ -0,0 +1,651 @@
+/*
+ * Copyright (C) 2002 Robert Shearman
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define CHARS_IN_GUID 39
+cpp_quote("#define CHARS_IN_GUID 39")
+
+/* GetTimeFormat is defined in winnls.h as
+ * either the W or A suffixed version */
+cpp_quote("#undef GetTimeFormat")
+
+typedef struct _AMMediaType
+{
+    GUID       majortype;
+    GUID       subtype;
+    BOOL       bFixedSizeSamples;
+    BOOL       bTemporalCompression;
+    ULONG      lSampleSize;
+    GUID       formattype;
+    IUnknown * pUnk;
+    ULONG      cbFormat;
+    [size_is(cbFormat)] BYTE * pbFormat;
+} AM_MEDIA_TYPE;
+
+typedef enum _PinDirection
+{
+    PINDIR_INPUT,
+    PINDIR_OUTPUT
+} PIN_DIRECTION;
+
+#define MAX_PIN_NAME    128
+#define MAX_FILTER_NAME 128
+cpp_quote("#define MAX_PIN_NAME    128")
+cpp_quote("#define MAX_FILTER_NAME 128")
+
+typedef LONGLONG REFERENCE_TIME;
+
+cpp_quote("#ifndef REFTIME_DEFINED")
+cpp_quote("#define REFTIME_DEFINED")
+typedef DOUBLE REFTIME;
+cpp_quote("#endif")
+
+typedef DWORD_PTR HSEMAPHORE;
+typedef DWORD_PTR HEVENT;
+
+typedef struct _AllocatorProperties
+{
+    long cBuffers;
+    long cbBuffer;
+    long cbAlign;
+    long cbPrefix;
+} ALLOCATOR_PROPERTIES;
+
+interface IAMovieSetup;
+interface IEnumFilters;
+interface IEnumMediaTypes;
+interface IEnumPins;
+interface IBaseFilter;
+interface IFilterGraph;
+interface IMediaFilter;
+interface IMediaSample;
+interface IMemAllocator;
+interface IMemAllocatorCallbackTemp;
+interface IMemAllocatorNotifyCallbackTemp;
+interface IMemInputPin;
+interface IPin;
+interface IReferenceClock;
+
+[
+object,
+uuid(56a86891-0ad4-11ce-b03a-0020af0ba770),
+pointer_default(unique)
+]
+interface IPin : IUnknown
+{
+    typedef struct _PinInfo
+    {
+        IBaseFilter *pFilter;
+        PIN_DIRECTION dir;
+        WCHAR achName[MAX_PIN_NAME];
+    } PIN_INFO;
+
+    HRESULT Connect(
+        [in] IPin * pReceivePin,
+        [in] const AM_MEDIA_TYPE * pmt);
+
+    HRESULT ReceiveConnection(
+        [in] IPin * pConnector,
+        [in] const AM_MEDIA_TYPE *pmt);
+
+    HRESULT Disconnect(void);
+
+    HRESULT ConnectedTo(
+        [out] IPin **pPin);
+
+    HRESULT ConnectionMediaType(
+        [out] AM_MEDIA_TYPE *pmt);
+
+    HRESULT QueryPinInfo(
+        [out] PIN_INFO * pInfo);
+
+    HRESULT QueryDirection(
+        [out] PIN_DIRECTION *pPinDir);
+
+    HRESULT QueryId(
+        [out] LPWSTR * Id);
+
+    HRESULT QueryAccept(
+        [in] const AM_MEDIA_TYPE *pmt);
+
+    HRESULT EnumMediaTypes(
+        [out] IEnumMediaTypes **ppEnum);
+
+    HRESULT QueryInternalConnections(
+        [out] IPin* *apPin,
+        [in, out] ULONG *nPin);
+
+    HRESULT EndOfStream(void);
+
+    HRESULT BeginFlush(void);
+
+    HRESULT EndFlush(void);
+    HRESULT NewSegment(
+        [in] REFERENCE_TIME tStart,
+        [in] REFERENCE_TIME tStop,
+        [in] double dRate);
+}
+
+typedef IPin *PPIN;
+
+[
+object,
+uuid(56a86892-0ad4-11ce-b03a-0020af0ba770),
+pointer_default(unique)
+]
+interface IEnumPins : IUnknown
+{
+
+    HRESULT Next(
+        [in] ULONG cPins,
+        [out, size_is(cPins)] IPin ** ppPins,
+        [out] ULONG * pcFetched);
+
+    HRESULT Skip(
+        [in] ULONG cPins);
+
+    HRESULT Reset(void);
+
+    HRESULT Clone(
+        [out] IEnumPins **ppEnum);
+}
+
+typedef IEnumPins *PENUMPINS;
+
+[
+object,
+uuid(89c31040-846b-11ce-97d3-00aa0055595a),
+pointer_default(unique)
+]
+interface IEnumMediaTypes : IUnknown
+{
+    HRESULT Next(
+        [in] ULONG cMediaTypes,
+        [out, size_is(cMediaTypes)]
+             AM_MEDIA_TYPE ** ppMediaTypes,
+        [out] ULONG * pcFetched
+    );
+
+    HRESULT Skip(
+        [in] ULONG cMediaTypes);
+
+    HRESULT Reset(void);
+
+    HRESULT Clone(
+        [out] IEnumMediaTypes **ppEnum
+    );
+}
+
+typedef IEnumMediaTypes *PENUMMEDIATYPES;
+
+[
+object,
+uuid(56a8689f-0ad4-11ce-b03a-0020af0ba770),
+pointer_default(unique)
+]
+interface IFilterGraph : IUnknown
+{
+    HRESULT AddFilter(
+        [in] IBaseFilter * pFilter,
+        [in, string] LPCWSTR pName);
+
+    HRESULT RemoveFilter(
+        [in] IBaseFilter * pFilter);
+
+    HRESULT EnumFilters(
+        [out] IEnumFilters **ppEnum);
+
+    HRESULT FindFilterByName(
+        [in, string] LPCWSTR pName,
+        [out] IBaseFilter ** ppFilter);
+
+    HRESULT ConnectDirect(
+        [in] IPin * ppinOut,
+        [in] IPin * ppinIn,
+        [in, unique] const AM_MEDIA_TYPE* pmt);
+
+    HRESULT Reconnect(
+        [in] IPin * ppin);
+
+    HRESULT Disconnect(
+        [in] IPin * ppin);
+
+    HRESULT SetDefaultSyncSource(void);
+}
+
+typedef IFilterGraph *PFILTERGRAPH;
+
+[
+object,
+uuid(56a86893-0ad4-11ce-b03a-0020af0ba770),
+pointer_default(unique)
+]
+interface IEnumFilters : IUnknown
+{
+    HRESULT Next(
+        [in]  ULONG cFilters,
+        [out] IBaseFilter ** ppFilter,
+        [out] ULONG * pcFetched);
+
+
+    HRESULT Skip(
+        [in] ULONG cFilters);
+
+
+    HRESULT Reset(void);
+
+
+    HRESULT Clone(
+        [out] IEnumFilters **ppEnum);
+}
+
+typedef IEnumFilters *PENUMFILTERS;
+
+[
+object,
+uuid(56a86899-0ad4-11ce-b03a-0020af0ba770),
+pointer_default(unique)
+]
+interface IMediaFilter : IPersist
+{
+    typedef enum _FilterState
+    {
+        State_Stopped,
+        State_Paused,
+        State_Running
+    } FILTER_STATE;
+
+    HRESULT Stop(void);
+    HRESULT Pause(void);
+
+    HRESULT Run(REFERENCE_TIME tStart);
+
+    HRESULT GetState(
+        [in] DWORD dwMilliSecsTimeout,
+        [out] FILTER_STATE *State);
+
+    HRESULT SetSyncSource(
+        [in] IReferenceClock * pClock);
+
+    HRESULT GetSyncSource(
+        [out] IReferenceClock ** pClock);
+}
+
+typedef IMediaFilter *PMEDIAFILTER;
+
+[
+object,
+uuid(56a86895-0ad4-11ce-b03a-0020af0ba770),
+pointer_default(unique)
+]
+interface IBaseFilter : IMediaFilter
+{
+    typedef struct _FilterInfo
+    {
+        WCHAR achName[MAX_FILTER_NAME];
+        IFilterGraph * pGraph;
+    } FILTER_INFO;
+
+    HRESULT EnumPins(
+        [out] IEnumPins ** ppEnum);
+
+    HRESULT FindPin(
+        [in, string] LPCWSTR Id,
+        [out] IPin ** ppPin);
+
+    HRESULT QueryFilterInfo(
+        [out] FILTER_INFO * pInfo);
+
+    HRESULT JoinFilterGraph(
+        [in] IFilterGraph * pGraph,
+        [in, string] LPCWSTR pName);
+
+    HRESULT QueryVendorInfo(
+        [out, string] LPWSTR* pVendorInfo);
+}
+
+typedef IBaseFilter *PFILTER;
+
+[
+object,
+uuid(56a86897-0ad4-11ce-b03a-0020af0ba770),
+pointer_default(unique)
+]
+interface IReferenceClock : IUnknown
+{
+    HRESULT GetTime(
+        [out] REFERENCE_TIME *pTime);
+
+    HRESULT AdviseTime(
+        [in] REFERENCE_TIME baseTime,
+        [in] REFERENCE_TIME streamTime,
+        [in] HEVENT hEvent,
+        [out] DWORD_PTR * pdwAdviseCookie);
+
+    HRESULT AdvisePeriodic(
+        [in] REFERENCE_TIME startTime,
+        [in] REFERENCE_TIME periodTime,
+        [in] HSEMAPHORE hSemaphore,
+        [out] DWORD_PTR * pdwAdviseCookie);
+
+    HRESULT Unadvise(
+        [in] DWORD_PTR dwAdviseCookie);
+}
+
+typedef IReferenceClock *PREFERENCECLOCK;
+
+/*
+[
+object,
+uuid(36b73885-c2c8-11cf-8b46-00805f6cef60),
+pointer_default(unique)
+]
+interface IReferenceClock2 : IReferenceClock
+{
+}
+
+typedef IReferenceClock2 *PREFERENCECLOCK2;
+
+*/
+
+[
+local,
+object,
+uuid(56a8689a-0ad4-11ce-b03a-0020af0ba770),
+pointer_default(unique)
+]
+interface IMediaSample : IUnknown
+{
+    HRESULT GetPointer([out] BYTE ** ppBuffer);
+
+    long GetSize(void);
+
+    HRESULT GetTime(
+        [out] REFERENCE_TIME * pTimeStart,
+        [out] REFERENCE_TIME * pTimeEnd);
+
+    HRESULT SetTime(
+        [in] REFERENCE_TIME * pTimeStart,
+        [in] REFERENCE_TIME * pTimeEnd);
+
+    HRESULT IsSyncPoint(void);
+
+    HRESULT SetSyncPoint(BOOL bIsSyncPoint);
+
+    HRESULT IsPreroll(void);
+
+    HRESULT SetPreroll(BOOL bIsPreroll);
+
+    LONG GetActualDataLength(void);
+
+    HRESULT SetActualDataLength(LONG length);
+
+    HRESULT GetMediaType(AM_MEDIA_TYPE **ppMediaType);
+
+    HRESULT SetMediaType(AM_MEDIA_TYPE *pMediaType);
+
+    HRESULT IsDiscontinuity(void);
+
+    HRESULT SetDiscontinuity(BOOL bDiscontinuity);
+
+    HRESULT GetMediaTime(
+        [out] LONGLONG * pTimeStart,
+        [out] LONGLONG * pTimeEnd);
+
+    HRESULT SetMediaTime(
+        [in] LONGLONG * pTimeStart,
+        [in] LONGLONG * pTimeEnd);
+}
+
+typedef IMediaSample *PMEDIASAMPLE;
+
+enum tagAM_SAMPLE_PROPERTY_FLAGS
+{
+       AM_SAMPLE_SPLICEPOINT        = 0x01,
+       AM_SAMPLE_PREROLL            = 0x02,
+       AM_SAMPLE_DATADISCONTINUITY  = 0x04,
+       AM_SAMPLE_TYPECHANGED        = 0x08,
+       AM_SAMPLE_TIMEVALID          = 0x10,
+       AM_SAMPLE_TIMEDISCONTINUITY  = 0x40,
+       AM_SAMPLE_FLUSH_ON_PAUSE     = 0x80,
+       AM_SAMPLE_STOPVALID          = 0x100,
+       AM_SAMPLE_ENDOFSTREAM        = 0x200,
+       AM_STREAM_MEDIA              = 0,
+       AM_STREAM_CONTROL            = 1
+};
+
+typedef struct tagAM_SAMPLE2_PROPERTIES
+{
+    DWORD    cbData;
+    DWORD    dwTypeSpecificFlags;
+    DWORD    dwSampleFlags;
+    LONG     lActual;
+    REFERENCE_TIME tStart;
+    REFERENCE_TIME tStop;
+    DWORD    dwStreamId;
+    AM_MEDIA_TYPE *pMediaType;
+    BYTE    *pbBuffer;
+    LONG     cbBuffer;
+} AM_SAMPLE2_PROPERTIES;
+
+[
+        local,
+        object,
+        uuid(36b73884-c2c8-11cf-8b46-00805f6cef60),
+        pointer_default(unique)
+]
+interface IMediaSample2 : IMediaSample
+{
+    HRESULT GetProperties(
+        [in] DWORD cbProperties,
+        [out, size_is(cbProperties)] BYTE * pbProperties
+    );
+
+    HRESULT SetProperties(
+        [in] DWORD cbProperties,
+        [in, size_is(cbProperties)] const BYTE * pbProperties
+    );
+}
+
+typedef IMediaSample2 *PMEDIASAMPLE2;
+
+#define AM_GBF_PREVFRAMESKIPPED 1
+#define AM_GBF_NOTASYNCPOINT    2
+cpp_quote("#define AM_GBF_PREVFRAMESKIPPED 1")
+cpp_quote("#define AM_GBF_NOTASYNCPOINT 2")
+
+cpp_quote("#define AM_GBF_NOWAIT 4")
+
+[
+object,
+uuid(56a8689c-0ad4-11ce-b03a-0020af0ba770),
+pointer_default(unique)
+]
+interface IMemAllocator : IUnknown
+{
+    HRESULT SetProperties(
+        [in] ALLOCATOR_PROPERTIES* pRequest,
+        [out] ALLOCATOR_PROPERTIES* pActual);
+
+    HRESULT GetProperties(
+        [out] ALLOCATOR_PROPERTIES* pProps);
+
+    HRESULT Commit(void);
+
+    HRESULT Decommit(void);
+
+    HRESULT GetBuffer(
+        [out] IMediaSample **ppBuffer,
+        [in] REFERENCE_TIME * pStartTime,
+        [in] REFERENCE_TIME * pEndTime,
+        [in] DWORD dwFlags);
+
+    HRESULT ReleaseBuffer(
+        [in] IMediaSample *pBuffer);
+}
+
+typedef IMemAllocator *PMEMALLOCATOR;
+
+[
+object,
+uuid(379a0cf0-c1de-11d2-abf5-00a0c905f375),
+pointer_default(unique)
+]
+interface IMemAllocatorCallbackTemp : IMemAllocator
+{
+    HRESULT SetNotify(
+        [in] IMemAllocatorNotifyCallbackTemp *pNotify);
+
+    HRESULT GetFreeCount(
+        [out] LONG *plBuffersFree);
+}
+
+[
+object,
+uuid(92980b30-c1de-11d2-abf5-00a0c905f375),
+pointer_default(unique)
+]
+interface IMemAllocatorNotifyCallbackTemp : IUnknown
+{
+    HRESULT NotifyRelease();
+}
+
+[
+object,
+uuid(56a8689d-0ad4-11ce-b03a-0020af0ba770),
+pointer_default(unique)
+]
+interface IMemInputPin : IUnknown
+{
+    HRESULT GetAllocator(
+        [out] IMemAllocator ** ppAllocator);
+
+    HRESULT NotifyAllocator(
+        [in] IMemAllocator * pAllocator,
+        [in] BOOL bReadOnly);
+
+    HRESULT GetAllocatorRequirements( [out] ALLOCATOR_PROPERTIES*pProps );
+
+    HRESULT Receive(
+        [in] IMediaSample * pSample);
+
+    HRESULT ReceiveMultiple(
+        [in, size_is(nSamples)] IMediaSample **pSamples,
+        [in] long nSamples,
+        [out] long *nSamplesProcessed);
+
+    HRESULT ReceiveCanBlock();
+}
+
+typedef IMemInputPin *PMEMINPUTPIN;
+
+[
+object,
+uuid(a3d8cec0-7e5a-11cf-bbc5-00805f6cef20),
+pointer_default(unique)
+]
+interface IAMovieSetup : IUnknown
+{
+    HRESULT Register( );
+    HRESULT Unregister( );
+}
+
+typedef IAMovieSetup *PAMOVIESETUP;
+
+typedef enum AM_SEEKING_SeekingFlags
+{
+    AM_SEEKING_NoPositioning            = 0x00,
+    AM_SEEKING_AbsolutePositioning      = 0x01,
+    AM_SEEKING_RelativePositioning      = 0x02,
+    AM_SEEKING_IncrementalPositioning   = 0x03,
+    AM_SEEKING_PositioningBitsMask      = 0x03,
+    AM_SEEKING_SeekToKeyFrame           = 0x04,
+    AM_SEEKING_ReturnTime               = 0x08,
+    AM_SEEKING_Segment                  = 0x10,
+    AM_SEEKING_NoFlush                  = 0x20
+} AM_SEEKING_SEEKING_FLAGS;
+
+typedef enum AM_SEEKING_SeekingCapabilities
+{
+    AM_SEEKING_CanSeekAbsolute     = 0x001,
+    AM_SEEKING_CanSeekForwards     = 0x002,
+    AM_SEEKING_CanSeekBackwards    = 0x004,
+    AM_SEEKING_CanGetCurrentPos    = 0x008,
+    AM_SEEKING_CanGetStopPos       = 0x010,
+    AM_SEEKING_CanGetDuration      = 0x020,
+    AM_SEEKING_CanPlayBackwards    = 0x040,
+    AM_SEEKING_CanDoSegments       = 0x080,
+    AM_SEEKING_Source              = 0x100
+} AM_SEEKING_SEEKING_CAPABILITIES;
+
+[
+object,
+uuid(36b73880-c2c8-11cf-8b46-00805f6cef60),
+pointer_default(unique)
+]
+interface IMediaSeeking : IUnknown
+{
+    HRESULT GetCapabilities( [out] DWORD * pCapabilities );
+
+    HRESULT CheckCapabilities( [in,out] DWORD * pCapabilities );
+
+    HRESULT IsFormatSupported([in] const GUID * pFormat);
+
+    HRESULT QueryPreferredFormat([out] GUID * pFormat);
+
+    HRESULT GetTimeFormat([out] GUID *pFormat);
+
+    HRESULT IsUsingTimeFormat([in] const GUID * pFormat);
+
+    HRESULT SetTimeFormat([in] const GUID * pFormat);
+
+    HRESULT GetDuration([out] LONGLONG *pDuration);
+
+    HRESULT GetStopPosition([out] LONGLONG *pStop);
+
+    HRESULT GetCurrentPosition([out] LONGLONG *pCurrent);
+
+    HRESULT ConvertTimeFormat([out] LONGLONG * pTarget, [in] const GUID * pTargetFormat,
+                              [in]  LONGLONG    Source, [in] const GUID * pSourceFormat );
+
+    HRESULT SetPositions(
+        [in,out] LONGLONG * pCurrent,
+        [in] DWORD dwCurrentFlags,
+        [in,out] LONGLONG * pStop,
+        [in] DWORD dwStopFlags);
+
+    HRESULT GetPositions(
+        [out] LONGLONG * pCurrent,
+        [out] LONGLONG * pStop);
+
+    HRESULT GetAvailable(
+        [out] LONGLONG * pEarliest,
+        [out] LONGLONG * pLatest);
+
+    HRESULT SetRate([in]  double dRate);
+
+    HRESULT GetRate([out] double * pdRate);
+
+    HRESULT GetPreroll([out] LONGLONG * pllPreroll);
+}
+
+typedef IMediaSeeking *PMEDIASEEKING;
+
+enum tagAM_MEDIAEVENT_FLAGS
+{
+    AM_MEDIAEVENT_NONOTIFY = 0x01
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/axextend.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/axextend.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/axextend.idl	(revision 16410)
@@ -0,0 +1,1012 @@
+/*
+ * Copyright (C) 2002 Robert Shearman
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+interface IAMAnalogVideoDecoder;
+interface IAMAnalogVideoEncoder;
+interface IAMAudioInputMixer;
+interface IAMAudioRendererStats;
+interface IAMBufferNegotiation;
+interface IAMCameraControl;
+interface IAMCopyCaptureFileProgress;
+interface IAMCrossbar;
+interface IAMDevMemoryAllocator;
+interface IAMDevMemoryControl;
+interface IAMDroppedFrames;
+interface IAMExtDevice;
+interface IAMExtTransport;
+interface IAMGraphStreams;
+interface IAMLatency;
+interface IAMOpenProgress;
+interface IAMOverlayFX;
+interface IAMPhysicalPinInfo;
+interface IAMPushSource;
+interface IAMStreamConfig;
+interface IAMTimecodeDisplay;
+interface IAMTimecodeGenerator;
+interface IAMTimecodeReader;
+interface IAMTVTuner;
+interface IAMVfwCaptureDialogs;
+interface IAMVfwCompressDialogs;
+interface IAMVideoCompression;
+interface IAMVideoDecimationProperties;
+interface IAMVideoProcAmp;
+interface ICaptureGraphBuilder;
+interface ICaptureGraphBuilder2;
+interface IConfigAviMux;
+interface IConfigInterleaving;
+interface IDecimateVideoImage;
+interface IDrawVideoImage;
+interface IEnumRegFilters;
+interface IEnumStreamIdMap;
+interface IFileSourceFilter;
+interface IFileSinkFilter;
+interface IFileSinkFilter2;
+interface IFilterMapper;
+interface IFilterMapper2;
+interface IGraphBuilder;
+interface IKsPropertySet;
+interface IMediaEventSink;
+interface IMpeg2Demultiplexer;
+interface IMPEG2StreamIdMap;
+interface IOverlay;
+interface IOverlayNotify;
+interface IOverlayNotify2;
+interface IQualityControl;
+interface ISeekingPassThru;
+
+typedef struct
+{
+    CLSID Clsid;
+    LPWSTR Name;
+} REGFILTER;
+
+[
+object,
+uuid(56a868a4-0ad4-11ce-b03a-0020af0ba770),
+pointer_default(unique)
+]
+interface IEnumRegFilters : IUnknown
+{
+    HRESULT Next
+        ( [in]  ULONG cFilters,
+          [out] REGFILTER ** apRegFilter,
+          [out] ULONG * pcFetched
+        );
+
+    HRESULT Skip(
+        [in] ULONG cFilters
+    );
+
+    HRESULT Reset(void);
+
+    HRESULT Clone(
+        [out] IEnumRegFilters **ppEnum
+    );
+}
+
+
+typedef IEnumRegFilters *PENUMREGFILTERS;
+
+[
+object,
+uuid(56a868a3-0ad4-11ce-b03a-0020af0ba770),
+pointer_default(unique)
+]
+interface IFilterMapper : IUnknown
+{
+    enum { MERIT_PREFERRED     = 0x800000,
+           MERIT_NORMAL        = 0x600000,
+           MERIT_UNLIKELY      = 0x400000,
+           MERIT_DO_NOT_USE    = 0x200000,
+           MERIT_SW_COMPRESSOR = 0x100000,
+           MERIT_HW_COMPRESSOR = 0x100050
+         };
+
+    HRESULT RegisterFilter
+        ( [in] CLSID   clsid,
+          [in] LPCWSTR Name,
+          [in] DWORD   dwMerit
+        );
+
+    HRESULT RegisterFilterInstance
+        ( [in]  CLSID  clsid,
+          [in]  LPCWSTR Name,
+          [out] CLSID *MRId
+        );
+
+
+    HRESULT RegisterPin
+        ( [in] CLSID   Filter,
+          [in] LPCWSTR Name,
+          [in] BOOL    bRendered,
+          [in] BOOL    bOutput,
+          [in] BOOL    bZero,
+          [in] BOOL    bMany,
+          [in] CLSID   ConnectsToFilter,
+          [in] LPCWSTR ConnectsToPin
+        );
+
+    HRESULT RegisterPinType
+        ( [in] CLSID   clsFilter,
+          [in] LPCWSTR strName,
+          [in] CLSID   clsMajorType,
+          [in] CLSID   clsSubType
+        );
+
+
+    HRESULT UnregisterFilter
+        ( [in] CLSID  Filter
+        );
+
+
+    HRESULT UnregisterFilterInstance
+        ( [in] CLSID  MRId
+        );
+
+
+    HRESULT UnregisterPin
+        ( [in] CLSID   Filter,
+          [in] LPCWSTR Name
+        );
+
+    HRESULT EnumMatchingFilters
+       ( [out] IEnumRegFilters **ppEnum,
+         [in]  DWORD dwMerit,
+         [in]  BOOL  bInputNeeded,
+         [in]  CLSID clsInMaj,
+         [in]  CLSID clsInSub,
+         [in]  BOOL  bRender,
+         [in]  BOOL  bOututNeeded,
+         [in]  CLSID clsOutMaj,
+         [in]  CLSID clsOutSub
+       );
+
+}
+
+typedef struct
+{
+    const CLSID * clsMajorType;
+    const CLSID * clsMinorType;
+} REGPINTYPES;
+
+typedef struct
+{
+    LPWSTR           strName;
+    BOOL             bRendered;
+    BOOL             bOutput;
+    BOOL             bZero;
+    BOOL             bMany;
+    const CLSID *    clsConnectsToFilter;
+    const WCHAR *    strConnectsToPin;
+    UINT             nMediaTypes;
+    const REGPINTYPES * lpMediaType;
+} REGFILTERPINS;
+
+typedef struct
+{
+    CLSID clsMedium;
+    DWORD dw1;
+    DWORD dw2;
+} REGPINMEDIUM;
+
+enum
+{
+    REG_PINFLAG_B_ZERO = 0x1,
+    REG_PINFLAG_B_RENDERER = 0x2,
+    REG_PINFLAG_B_MANY = 0x4,
+    REG_PINFLAG_B_OUTPUT = 0x8
+};
+
+
+typedef struct
+{
+    DWORD dwFlags;
+    UINT             cInstances;
+    UINT             nMediaTypes;
+    [size_is(nMediaTypes)] const REGPINTYPES * lpMediaType;
+    UINT             nMediums;
+    [size_is(nMediums)] const REGPINMEDIUM *lpMedium;
+    const CLSID      *clsPinCategory;
+} REGFILTERPINS2;
+
+typedef struct
+{
+    DWORD dwVersion;
+    DWORD dwMerit;
+    [switch_is(dwVersion)] [switch_type(DWORD)] union
+    {
+        [case(1)]
+            struct
+            {
+                ULONG cPins;
+                [size_is(cPins)] const REGFILTERPINS *rgPins;
+            } DUMMYSTRUCTNAME;
+
+        [case(2)]
+            struct
+            {
+                ULONG cPins2;
+                [size_is(cPins2)] const REGFILTERPINS2 *rgPins2;
+            } DUMMYSTRUCTNAME1;
+
+        [default]
+            ;
+    } DUMMYUNIONNAME;
+
+} REGFILTER2;
+
+
+[
+object,
+uuid(b79bb0b0-33c1-11d1-abe1-00a0c905f375),
+pointer_default(unique)
+]
+interface IFilterMapper2 : IUnknown
+{
+    HRESULT CreateCategory
+        ( [in] REFCLSID clsidCategory,
+          [in] DWORD dwCategoryMerit,
+          [in] LPCWSTR Description
+          );
+
+    HRESULT UnregisterFilter
+        ( [in] const CLSID *pclsidCategory,
+          [in] const OLECHAR *szInstance,
+          [in] REFCLSID Filter
+        );
+
+    HRESULT RegisterFilter
+        ( [in] REFCLSID clsidFilter,
+          [in] LPCWSTR Name,
+          [in, out] IMoniker **ppMoniker,
+          [in] const CLSID *pclsidCategory,
+          [in] const OLECHAR *szInstance,
+          [in] const REGFILTER2 *prf2
+        );
+
+    HRESULT EnumMatchingFilters
+       ( [out] IEnumMoniker **ppEnum,
+         [in]  DWORD dwFlags,
+         [in]  BOOL bExactMatch,
+         [in]  DWORD dwMerit,
+         [in]  BOOL  bInputNeeded,
+         [in]  DWORD cInputTypes,
+         [size_is(cInputTypes*2)]  const GUID *pInputTypes,
+         [in]  const REGPINMEDIUM *pMedIn,
+         [in]  const CLSID *pPinCategoryIn,
+         [in]  BOOL  bRender,
+         [in]  BOOL  bOutputNeeded,
+         [in]  DWORD cOutputTypes,
+         [size_is(cOutputTypes*2)]  const GUID *pOutputTypes,
+         [in]  const REGPINMEDIUM *pMedOut,
+         [in]  const CLSID *pPinCategoryOut
+       );
+}
+
+[
+object,
+uuid(b79bb0b1-33c1-11d1-abe1-00a0c905f375),
+pointer_default(unique)
+]
+interface IFilterMapper3 : IFilterMapper2
+{
+    HRESULT GetICreateDevEnum( [out] ICreateDevEnum **ppEnum );
+}
+
+typedef enum tagQualityMessageType
+{
+    Famine,
+    Flood
+} QualityMessageType;
+
+typedef struct tagQuality
+{
+    QualityMessageType Type;
+    long               Proportion;
+    REFERENCE_TIME       Late;
+    REFERENCE_TIME       TimeStamp;
+} Quality;
+
+typedef IQualityControl *PQUALITYCONTROL;
+
+[
+object,
+uuid(56a868a5-0ad4-11ce-b03a-0020af0ba770),
+pointer_default(unique)
+]
+interface IQualityControl : IUnknown
+{
+    HRESULT Notify
+        ( [in] IBaseFilter * pSelf,
+          [in] Quality q
+        );
+
+    HRESULT SetSink
+        ( [in] IQualityControl * piqc
+        );
+}
+
+enum
+{
+    CK_NOCOLORKEY  = 0x0,
+    CK_INDEX       = 0x1,
+    CK_RGB         = 0x2
+};
+
+typedef struct tagCOLORKEY
+{
+    DWORD    KeyType;
+    DWORD    PaletteIndex;
+    COLORREF LowColorValue;
+    COLORREF HighColorValue;
+} COLORKEY;
+
+enum
+{
+    ADVISE_NONE = 0x0,
+    ADVISE_CLIPPING = 0x1,
+    ADVISE_PALETTE = 0x2,
+    ADVISE_COLORKEY = 0x4,
+    ADVISE_POSITION = 0x8,
+    ADVISE_DISPLAY_CHANGE = 0x10
+};
+
+const DWORD ADVISE_ALL = ADVISE_CLIPPING |
+                         ADVISE_PALETTE  |
+                         ADVISE_COLORKEY |
+                         ADVISE_POSITION;
+
+const DWORD ADVISE_ALL2 = ADVISE_ALL |
+                          ADVISE_DISPLAY_CHANGE;
+
+cpp_quote("#ifndef _WINGDI_")
+
+/* already defined in wingdi.h, but needed for WIDL */
+
+typedef struct _RGNDATAHEADER
+{
+    DWORD dwSize;
+    DWORD iType;
+    DWORD nCount;
+    DWORD nRgnSize;
+    RECT  rcBound;
+} RGNDATAHEADER;
+
+typedef struct _RGNDATA
+{
+    RGNDATAHEADER rdh;
+    char Buffer[1];
+} RGNDATA;
+
+cpp_quote("#endif /* _WINGDI_ */")
+
+[
+object,
+local,
+uuid(56a868a0-0ad4-11ce-b03a-0020af0ba770),
+pointer_default(unique)
+]
+interface IOverlayNotify : IUnknown
+{
+    HRESULT OnPaletteChange(
+        [in] DWORD dwColors,
+        [in] const PALETTEENTRY *pPalette);
+
+    HRESULT OnClipChange(
+        [in] const RECT *pSourceRect,
+        [in] const RECT *pDestinationRect,
+        [in] const RGNDATA *pRgnData);
+
+    HRESULT OnColorKeyChange([in] const COLORKEY *pColorKey);
+
+    HRESULT OnPositionChange([in] const RECT *pSourceRect,
+                             [in] const RECT *pDestinationRect);
+}
+
+typedef IOverlayNotify *POVERLAYNOTIFY;
+
+cpp_quote("#if 0")
+typedef HANDLE HMONITOR;
+cpp_quote("#endif /* 0 */")
+
+[
+object,
+local,
+uuid(680EFA10-D535-11D1-87C8-00A0C9223196),
+pointer_default(unique)
+]
+interface IOverlayNotify2 : IOverlayNotify
+{
+    HRESULT OnDisplayChange(
+        HMONITOR hMonitor);
+}
+
+typedef IOverlayNotify2 *POVERLAYNOTIFY2;
+
+[
+object,
+local,
+uuid(56a868a1-0ad4-11ce-b03a-0020af0ba770),
+pointer_default(unique)
+]
+interface IOverlay : IUnknown
+{
+    HRESULT GetPalette(
+        [out] DWORD *pdwColors,
+        [out] PALETTEENTRY **ppPalette);
+
+    HRESULT SetPalette(
+        [in] DWORD dwColors,
+        [in] PALETTEENTRY *pPalette);
+
+    HRESULT GetDefaultColorKey([out] COLORKEY *pColorKey);
+
+    HRESULT GetColorKey([out] COLORKEY *pColorKey);
+
+    HRESULT SetColorKey([in,out] COLORKEY *pColorKey);
+
+    HRESULT GetWindowHandle([out] HWND *pHwnd);
+
+    HRESULT GetClipList([out] RECT *pSourceRect,
+                        [out] RECT *pDestinationRect,
+                        [out] RGNDATA **ppRgnData);
+
+    HRESULT GetVideoPosition([out] RECT *pSourceRect,
+                             [out] RECT *pDestinationRect);
+
+    HRESULT Advise(
+        [in] IOverlayNotify *pOverlayNotify,
+        [in] DWORD dwInterests);
+
+    HRESULT Unadvise();
+}
+
+typedef IOverlay *POVERLAY;
+
+[
+object,
+uuid(56a868a2-0ad4-11ce-b03a-0020af0ba770),
+pointer_default(unique)
+]
+interface IMediaEventSink : IUnknown
+{
+    HRESULT Notify(
+        [in] long EventCode,
+        [in] LONG_PTR EventParam1,
+        [in] LONG_PTR EventParam2
+    );
+}
+
+typedef IMediaEventSink *PMEDIAEVENTSINK;
+
+[
+object,
+uuid(56a868a6-0ad4-11ce-b03a-0020af0ba770),
+pointer_default(unique)
+]
+interface IFileSourceFilter : IUnknown
+{
+    HRESULT Load(
+        [in] LPCOLESTR pszFileName,
+        [in, unique] const AM_MEDIA_TYPE *pmt
+    );
+
+    HRESULT GetCurFile(
+        [out] LPOLESTR *ppszFileName,
+        [out] AM_MEDIA_TYPE *pmt
+    );
+}
+
+typedef IFileSourceFilter *PFILTERFILESOURCE;
+
+[
+object,
+uuid(a2104830-7c70-11cf-8bce-00aa00a3f1a6),
+pointer_default(unique)
+]
+interface IFileSinkFilter : IUnknown
+{
+    HRESULT SetFileName(
+        [in] LPCOLESTR pszFileName,
+        [in, unique] const AM_MEDIA_TYPE *pmt
+    );
+
+    HRESULT GetCurFile(
+        [out] LPOLESTR *ppszFileName,
+        [out] AM_MEDIA_TYPE *pmt
+    );
+}
+
+typedef IFileSinkFilter *PFILTERFILESINK;
+
+[
+        object,
+        uuid(00855B90-CE1B-11d0-BD4F-00A0C911CE86),
+        pointer_default(unique)
+]
+interface IFileSinkFilter2 : IFileSinkFilter
+{
+    HRESULT SetMode(
+        [in] DWORD dwFlags
+    );
+
+    HRESULT GetMode(
+        [out] DWORD *pdwFlags
+    );
+}
+
+typedef IFileSinkFilter2 *PFILESINKFILTER2;
+
+typedef enum
+{
+    AM_FILE_OVERWRITE = 0x00000001,
+} AM_FILESINK_FLAGS;
+
+[
+object,
+uuid(56a868a9-0ad4-11ce-b03a-0020af0ba770),
+pointer_default(unique)
+]
+interface IGraphBuilder : IFilterGraph
+{
+    HRESULT Connect
+        ( [in] IPin * ppinOut,
+          [in] IPin * ppinIn
+        );
+
+    HRESULT Render
+        ( [in] IPin * ppinOut
+        );
+
+    HRESULT RenderFile
+        ( [in] LPCWSTR lpcwstrFile,
+          [in, unique] LPCWSTR lpcwstrPlayList
+        );
+
+    HRESULT AddSourceFilter
+        ( [in]      LPCWSTR lpcwstrFileName,
+          [in, unique]      LPCWSTR lpcwstrFilterName,
+          [out]     IBaseFilter* *ppFilter
+        );
+
+    HRESULT SetLogFile
+        ( [in]      DWORD_PTR hFile
+        );
+
+    HRESULT Abort();
+
+    HRESULT ShouldOperationContinue();
+}
+
+
+[
+    object,
+    uuid(bf87b6e0-8c27-11d0-b3f0-00aa003761c5),
+    pointer_default(unique)
+]
+interface ICaptureGraphBuilder : IUnknown {
+
+    HRESULT SetFiltergraph(
+        [in] IGraphBuilder *pfg);
+
+    HRESULT GetFiltergraph(
+        [out] IGraphBuilder **ppfg);
+
+    HRESULT SetOutputFileName(
+        [in] const GUID *pType,
+        [in] LPCOLESTR lpstrFile,
+        [out] IBaseFilter **ppf,
+        [out] IFileSinkFilter **ppSink);
+
+    [local] HRESULT FindInterface(
+        [in, unique] const GUID *pCategory,
+        [in] IBaseFilter *pf,
+        [in] REFIID riid,
+        [out] void **ppint);
+
+    [call_as(FindInterface)] HRESULT RemoteFindInterface(
+        [in, unique] const GUID *pCategory,
+        [in] IBaseFilter *pf,
+        [in] REFIID riid,
+        [out] IUnknown **ppint);
+
+    HRESULT RenderStream(
+        [in] const GUID *pCategory,
+        [in] IUnknown *pSource,
+        [in] IBaseFilter *pfCompressor,
+        [in] IBaseFilter *pfRenderer);
+
+    HRESULT ControlStream(
+        [in] const GUID *pCategory,
+        [in] IBaseFilter *pFilter,
+        [in] REFERENCE_TIME *pstart,
+        [in] REFERENCE_TIME *pstop,
+        [in] WORD wStartCookie,
+        [in] WORD wStopCookie);
+
+    HRESULT AllocCapFile(
+        [in] LPCOLESTR lpstr,
+        [in] DWORDLONG dwlSize);
+
+    HRESULT CopyCaptureFile(
+        [in] LPOLESTR lpwstrOld,
+        [in] LPOLESTR lpwstrNew,
+        [in] int fAllowEscAbort,
+        [in] IAMCopyCaptureFileProgress *pCallback);
+}
+
+[
+object,
+uuid(670d1d20-a068-11d0-b3f0-00aa003761c5),
+pointer_default(unique)
+]
+interface IAMCopyCaptureFileProgress : IUnknown
+{
+    HRESULT Progress(
+        [in] int iProgress);
+}
+
+[
+    object,
+    uuid(93E5A4E0-2D50-11d2-ABFA-00A0C9C6E38D),
+    pointer_default(unique)
+]
+interface ICaptureGraphBuilder2 : IUnknown
+{
+    HRESULT SetFiltergraph(
+        [in] IGraphBuilder *pfg);
+
+    HRESULT GetFiltergraph(
+        [out] IGraphBuilder **ppfg);
+
+    HRESULT SetOutputFileName(
+        [in] const GUID *pType,
+        [in] LPCOLESTR lpstrFile,
+        [out] IBaseFilter **ppf,
+        [out] IFileSinkFilter **ppSink);
+
+    [local] HRESULT FindInterface(
+        [in] const GUID *pCategory,
+        [in] const GUID *pType,
+        [in] IBaseFilter *pf,
+        [in] REFIID riid,
+        [out] void **ppint);
+
+    [call_as(FindInterface)] HRESULT RemoteFindInterface(
+        [in] const GUID *pCategory,
+        [in] const GUID *pType,
+        [in] IBaseFilter *pf,
+        [in] REFIID riid,
+        [out] IUnknown **ppint);
+
+    HRESULT RenderStream(
+        [in] const GUID *pCategory,
+        [in] const GUID *pType,
+        [in] IUnknown *pSource,
+        [in] IBaseFilter *pfCompressor,
+        [in] IBaseFilter *pfRenderer);
+
+    HRESULT ControlStream(
+        [in] const GUID *pCategory,
+        [in] const GUID *pType,
+        [in] IBaseFilter *pFilter,
+        [in] REFERENCE_TIME *pstart,
+        [in] REFERENCE_TIME *pstop,
+        [in] WORD wStartCookie,
+        [in] WORD wStopCookie);
+
+    HRESULT AllocCapFile(
+        [in] LPCOLESTR lpstr,
+        [in] DWORDLONG dwlSize);
+
+    HRESULT CopyCaptureFile(
+        [in] LPOLESTR lpwstrOld,
+        [in] LPOLESTR lpwstrNew,
+        [in] int fAllowEscAbort,
+        [in] IAMCopyCaptureFileProgress *pCallback);
+
+    HRESULT FindPin(
+        [in] IUnknown *pSource,
+        [in] PIN_DIRECTION pindir,
+        [in] const GUID *pCategory,
+        [in] const GUID *pType,
+        [in] BOOL fUnconnected,
+        [in] int num,
+        [out] IPin **ppPin);
+}
+
+enum _AM_RENSDEREXFLAGS
+{
+    AM_RENDEREX_RENDERTOEXISTINGRENDERERS = 0x01
+};
+
+[
+    object,
+    uuid(36b73882-c2c8-11cf-8b46-00805f6cef60),
+    pointer_default(unique)
+]
+interface IFilterGraph2: IGraphBuilder
+{
+    HRESULT AddSourceFilterForMoniker(
+          [in] IMoniker *pMoniker,
+          [in] IBindCtx *pCtx,
+          [in, unique] LPCWSTR lpcwstrFilterName,
+          [out] IBaseFilter **ppFilter
+    );
+
+    HRESULT ReconnectEx
+        ( [in] IPin * ppin,
+          [in, unique] const AM_MEDIA_TYPE *pmt
+        );
+
+    HRESULT RenderEx( [in] IPin *pPinOut,
+                      [in] DWORD dwFlags,
+                      [in, out] DWORD *pvContext
+                    );
+}
+
+[
+    object,
+    local,
+    uuid(56a868bf-0ad4-11ce-b03a-0020af0ba770),
+    pointer_default(unique)
+]
+interface IStreamBuilder : IUnknown
+{
+    HRESULT Render
+        ( [in] IPin * ppinOut,
+          [in] IGraphBuilder * pGraph
+        );
+
+    HRESULT Backout
+        ( [in] IPin * ppinOut,
+          [in] IGraphBuilder * pGraph
+        );
+}
+
+
+/*****************************************************************************
+ * IAMStreamConfig interface
+ */
+[
+    object,
+    uuid(c6e13340-30ac-11d0-a18c-00a0c9118956),
+    pointer_default(unique)
+]
+interface IAMStreamConfig : IUnknown
+{
+    HRESULT SetFormat( [in] AM_MEDIA_TYPE *pmt);
+    HRESULT GetFormat( [in] AM_MEDIA_TYPE **pmt);
+    HRESULT GetNumberOfCapabilities( [out] int *piCount, [out] int *piSize);
+    HRESULT GetStreamCaps( [in] int iIndex, [out] AM_MEDIA_TYPE **pmt,
+                          [out] BYTE *pSCC);
+}
+
+
+typedef enum tagVideoProcAmpProperty
+{
+    VideoProcAmp_Brightness,
+    VideoProcAmp_Contrast,
+    VideoProcAmp_Hue,
+    VideoProcAmp_Saturation,
+    VideoProcAmp_Sharpness,
+    VideoProcAmp_Gamma,
+    VideoProcAmp_ColorEnable,
+    VideoProcAmp_WhiteBalance,
+    VideoProcAmp_BacklightCompensation,
+    VideoProcAmp_Gain
+} VideoProcAmpProperty;
+
+typedef enum tagVideoProcAmpFlags
+{
+    VideoProcAmp_Flags_Auto   = 0x0001,
+    VideoProcAmp_Flags_Manual = 0x0002,
+} VideoProcAmpFlags;
+
+/*****************************************************************************
+ * IAMVideoProcAmp interface
+ */
+[
+    object,
+    uuid(c6e13360-30ac-11d0-a18c-00a0c9118956),
+    pointer_default(unique)
+]
+interface IAMVideoProcAmp : IUnknown
+{
+    HRESULT GetRange( [in] long Property, [out] long *pMin, [out] long *pMax,
+                     [out] long *pSteppingDelta, [out] long *pDefault,
+                     [out] long *pCapsFlags);
+    HRESULT Set( [in] long Property, [in] long lValue, [in] long Flags);
+    HRESULT Get( [in] long Property, [out] long *lValue, [out] long *Flags);
+}
+
+
+[
+        object,
+        uuid(56a868aa-0ad4-11ce-b03a-0020af0ba770),
+        pointer_default(unique)
+]
+interface IAsyncReader : IUnknown
+{
+    HRESULT RequestAllocator(
+                [in]  IMemAllocator* pPreferred,
+                [in]  ALLOCATOR_PROPERTIES* pProps,
+                [out] IMemAllocator ** ppActual);
+
+    HRESULT Request(
+                [in] IMediaSample* pSample,
+                [in] DWORD_PTR dwUser);
+
+    HRESULT WaitForNext(
+                [in]  DWORD dwTimeout,
+                [out] IMediaSample** ppSample,
+                [out] DWORD_PTR * pdwUser);
+
+    HRESULT SyncReadAligned(
+                [in] IMediaSample* pSample);
+
+    HRESULT SyncRead(
+                [in]  LONGLONG llPosition,
+                [in]  LONG lLength,
+                [out, size_is(lLength)]
+                      BYTE* pBuffer);
+
+    HRESULT Length(
+                [out] LONGLONG* pTotal,
+                [out] LONGLONG* pAvailable);
+
+    HRESULT BeginFlush(void);
+
+    HRESULT EndFlush(void);
+}
+
+
+[
+    object,
+    uuid(56a868ab-0ad4-11ce-b03a-0020af0ba770),
+    pointer_default(unique)
+]
+interface IGraphVersion : IUnknown
+{
+    HRESULT QueryVersion(LONG* pVersion);
+}
+
+[
+    object,
+    uuid(56a868ad-0ad4-11ce-b03a-0020af0ba770),
+    pointer_default(unique)
+]
+interface IResourceConsumer : IUnknown
+{
+    HRESULT AcquireResource(
+        [in] LONG idResource);
+
+    HRESULT ReleaseResource(
+        [in] LONG idResource);
+}
+
+
+[
+    object,
+    uuid(56a868ac-0ad4-11ce-b03a-0020af0ba770),
+    pointer_default(unique)
+]
+interface IResourceManager : IUnknown
+{
+    HRESULT Register(
+        [in] LPCWSTR pName,
+        [in] LONG   cResource,
+        [out] LONG* plToken
+        );
+
+    HRESULT RegisterGroup(
+        [in] LPCWSTR pName,
+        [in] LONG cResource,
+        [in, size_is(cResource)]
+             LONG* palTokens,
+        [out] LONG* plToken
+        );
+
+    HRESULT RequestResource(
+        [in] LONG idResource,
+        [in] IUnknown* pFocusObject,
+        [in] IResourceConsumer* pConsumer
+        );
+
+    HRESULT NotifyAcquire(
+        [in] LONG idResource,
+        [in] IResourceConsumer* pConsumer,
+        [in] HRESULT hr);
+
+    HRESULT NotifyRelease(
+        [in] LONG idResource,
+        [in] IResourceConsumer* pConsumer,
+        [in] BOOL bStillWant);
+
+    HRESULT CancelRequest(
+        [in] LONG idResource,
+        [in] IResourceConsumer* pConsumer);
+
+    HRESULT SetFocus(
+        [in] IUnknown* pFocusObject);
+
+    HRESULT ReleaseFocus(
+        [in] IUnknown* pFocusObject);
+
+}
+
+cpp_quote("#ifndef _IKsPropertySet_")
+cpp_quote("#define _IKsPropertySet_")
+cpp_quote("#define KSPROPERTY_SUPPORT_GET  1")
+cpp_quote("#define KSPROPERTY_SUPPORT_SET  2")
+
+[
+    object,
+    uuid(31efac30-515c-11d0-a9aa-00aa0061be93),
+    pointer_default(unique),
+    local
+]
+interface IKsPropertySet : IUnknown
+{
+    HRESULT Set( [in] REFGUID guidPropSet,
+                 [in] DWORD dwPropID,
+                 [in, size_is(cbInstanceData)] LPVOID pInstanceData,
+                 [in] DWORD cbInstanceData,
+                 [in, size_is(cbPropData)] LPVOID pPropData,
+                 [in] DWORD cbPropData );
+
+    HRESULT Get( [in] REFGUID guidPropSet,
+                 [in] DWORD dwPropID,
+                 [in, size_is(cbInstanceData)] LPVOID pInstanceData,
+                 [in] DWORD cbInstanceData,
+                 [out, size_is(cbPropData)] LPVOID pPropData,
+                 [in] DWORD cbPropData,
+                 [out] DWORD *pcbReturned );
+
+    HRESULT QuerySupported( [in] REFGUID guidPropSet,
+                            [in] DWORD dwPropID,
+                            [out] DWORD *pTypeSupport);
+}
+cpp_quote("#endif /* _IKsPropertySet_ */")
+
+[
+    object,
+    uuid(36b73883-c2c8-11cf-8b46-00805f6cef60),
+    pointer_default(unique)
+]
+interface ISeekingPassThru : IUnknown
+{
+    HRESULT Init( [in] BOOL bSupportRendering, [in] IPin *pPin);
+}
+
+enum _AM_FILTER_MISC_FLAGS
+{
+    AM_FILTER_MISC_FLAGS_IS_RENDERER = 0x1,
+    AM_FILTER_MISC_FLAGS_IS_SOURCE = 0x2
+};
+
+[
+    local,
+    object,
+    uuid(2dd74950-a890-11d1-abe8-00a0c905f375),
+    pointer_default(unique)
+]
+interface IAMFilterMiscFlags : IUnknown
+{
+    ULONG GetMiscFlags();
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/basetsd.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/basetsd.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/basetsd.h	(revision 16410)
@@ -0,0 +1,278 @@
+/*
+ * Compilers that uses ILP32, LP64 or P64 type models
+ * for both Win32 and Win64 are supported by this file.
+ *
+ * Copyright (C) 1999 Patrik Stridvall
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_BASETSD_H
+#define __WINE_BASETSD_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+/*
+ * Win32 was easy to implement under Unix since most (all?) 32-bit
+ * Unices uses the same type model (ILP32) as Win32, where int, long
+ * and pointer are 32-bit.
+ *
+ * Win64, however, will cause some problems when implemented under Unix.
+ * Linux/{Alpha, Sparc64} and most (all?) other 64-bit Unices use
+ * the LP64 type model where int is 32-bit and long and pointer are
+ * 64-bit. Win64 on the other hand uses the P64 (sometimes called LLP64)
+ * type model where int and long are 32 bit and pointer is 64-bit.
+ */
+
+#if defined(__x86_64__) && !defined(_WIN64)
+#define _WIN64
+#endif
+
+/* Type model independent typedefs */
+/* The __intXX types are native types defined by the MS C compiler.
+ * Apps that make use of them before they get defined here, can
+ * simply add to the command line:
+ *    -D__int8=char -D__int16=short -D__int32=int "-D__int64=long long"
+ */
+#if !defined(_MSC_VER) && !defined(__WIDL__)
+#  ifndef __int8
+#    define __int8  char
+#  endif
+#  ifndef __int16
+#    define __int16 short
+#  endif
+#  ifndef __int32
+#    define __int32 int
+#  endif
+#  ifndef __int64
+#    ifdef _WIN64
+#      define __int64 long
+#    else
+#      define __int64 long long
+#    endif
+#  endif
+#endif /* !defined(_MSC_VER) */
+
+/* FIXME: DECLSPEC_ALIGN should be declared only in winnt.h, but we need it here too */
+#ifndef DECLSPEC_ALIGN
+# if defined(_MSC_VER) && (_MSC_VER >= 1300) && !defined(MIDL_PASS)
+#  define DECLSPEC_ALIGN(x) __declspec(align(x))
+# elif defined(__GNUC__)
+#  define DECLSPEC_ALIGN(x) __attribute__((aligned(x)))
+# else
+#  define DECLSPEC_ALIGN(x)
+# endif
+#endif
+
+typedef signed char      INT8, *PINT8;
+typedef signed short     INT16, *PINT16;
+typedef signed int       INT32, *PINT32;
+typedef unsigned char    UINT8, *PUINT8;
+typedef unsigned short   UINT16, *PUINT16;
+typedef unsigned int     UINT32, *PUINT32;
+typedef signed int       LONG32, *PLONG32;
+typedef unsigned int     ULONG32, *PULONG32;
+typedef unsigned int     DWORD32, *PDWORD32;
+
+#ifdef _MSC_VER
+typedef signed __int64   INT64, *PINT64;
+typedef unsigned __int64 UINT64, *PUINT64;
+typedef signed __int64   LONG64, *PLONG64;
+typedef unsigned __int64 ULONG64, *PULONG64;
+typedef unsigned __int64 DWORD64, *PDWORD64;
+#else
+typedef signed __int64   DECLSPEC_ALIGN(8) INT64, *PINT64;
+typedef unsigned __int64 DECLSPEC_ALIGN(8) UINT64, *PUINT64;
+typedef signed __int64   DECLSPEC_ALIGN(8) LONG64, *PLONG64;
+typedef unsigned __int64 DECLSPEC_ALIGN(8) ULONG64, *PULONG64;
+typedef unsigned __int64 DECLSPEC_ALIGN(8) DWORD64, *PDWORD64;
+#endif
+
+/* Win32 or Win64 dependent typedef/defines. */
+
+#ifdef _WIN64
+
+typedef signed __int64   INT_PTR, *PINT_PTR;
+typedef signed __int64   LONG_PTR, *PLONG_PTR;
+typedef unsigned __int64 UINT_PTR, *PUINT_PTR;
+typedef unsigned __int64 ULONG_PTR, *PULONG_PTR;
+typedef unsigned __int64 DWORD_PTR, *PDWORD_PTR;
+
+#define MAXINT_PTR 0x7fffffffffffffff
+#define MININT_PTR 0x8000000000000000
+#define MAXUINT_PTR 0xffffffffffffffff
+
+typedef int HALF_PTR, *PHALF_PTR;
+typedef unsigned int UHALF_PTR, *PUHALF_PTR;
+
+#define MAXHALF_PTR 0x7fffffff
+#define MINHALF_PTR 0x80000000
+#define MAXUHALF_PTR 0xffffffff
+
+#if !defined(__midl) && !defined(__WIDL__)
+
+static inline ULONG32 HandleToULong(const void *h)
+{
+    return (ULONG_PTR)h;
+}
+
+static inline LONG32 HandleToLong(const void *h)
+{
+    return (LONG_PTR)h;
+}
+
+static inline void *ULongToHandle(ULONG32 ul)
+{
+    return (void *)(ULONG_PTR)ul;
+}
+
+static inline void *LongToHandle(LONG32 l)
+{
+    return (void *)(LONG_PTR)l;
+}
+
+static inline ULONG32 PtrToUlong(const void *p)
+{
+    return (ULONG_PTR)p;
+}
+
+static inline LONG32 PtrToLong(const void *p)
+{
+    return (LONG_PTR)p;
+}
+
+static inline UINT32 PtrToUint(const void *p)
+{
+    return (UINT_PTR)p;
+}
+
+static inline INT32 PtrToInt(const void *p)
+{
+    return (INT_PTR)p;
+}
+
+static inline UINT16 PtrToUshort(const void *p)
+{
+    return (ULONG_PTR)p;
+}
+
+static inline INT16 PtrToShort(const void *p)
+{
+    return (LONG_PTR)p;
+}
+
+static inline void *IntToPtr(INT32 i)
+{
+    return (void *)(INT_PTR)i;
+}
+
+static inline void *UIntToPtr(UINT32 ui)
+{
+    return (void *)(UINT_PTR)ui;
+}
+
+static inline void *LongToPtr(LONG32 l)
+{
+    return (void *)(LONG_PTR)l;
+}
+
+static inline void *ULongToPtr(ULONG32 ul)
+{
+    return (void *)(ULONG_PTR)ul;
+}
+
+#endif  /* !__midl && !__WIDL__ */
+
+#else /* FIXME: defined(_WIN32) */
+
+typedef long INT_PTR, *PINT_PTR;
+typedef unsigned long UINT_PTR, *PUINT_PTR;
+typedef long LONG_PTR, *PLONG_PTR;
+typedef unsigned long ULONG_PTR, *PULONG_PTR;
+typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR;
+
+#define MAXINT_PTR 0x7fffffff
+#define MININT_PTR 0x80000000
+#define MAXUINT_PTR 0xffffffff
+
+typedef signed short HALF_PTR, *PHALF_PTR;
+typedef unsigned short UHALF_PTR, *PUHALF_PTR;
+
+#define MAXUHALF_PTR 0xffff
+#define MAXHALF_PTR 0x7fff
+#define MINHALF_PTR 0x8000
+
+#define HandleToULong(h)        ((ULONG)(ULONG_PTR)(h))
+#define HandleToLong(h)         ((LONG)(LONG_PTR)(h))
+#define ULongToHandle(ul)       ((HANDLE)(ULONG_PTR)(ul))
+#define LongToHandle(l)         ((HANDLE)(LONG_PTR)(l))
+#define PtrToUlong(p)           ((ULONG)(ULONG_PTR)(p))
+#define PtrToLong(p)            ((LONG)(LONG_PTR)(p))
+#define PtrToUint(p)            ((UINT)(UINT_PTR)(p))
+#define PtrToInt(p)             ((INT)(INT_PTR)(p))
+#define PtrToUshort(p)          ((USHORT)(ULONG_PTR)(p))
+#define PtrToShort(p)           ((SHORT)(LONG_PTR)(p))
+#define IntToPtr(i)             ((void *)(INT_PTR)((INT)i))
+#define UIntToPtr(ui)           ((void *)(UINT_PTR)((UINT)ui))
+#define LongToPtr(l)            ((void *)(LONG_PTR)((LONG)l))
+#define ULongToPtr(ul)          ((void *)(ULONG_PTR)((ULONG)ul))
+
+#endif /* defined(_WIN64) || defined(_WIN32) */
+
+#define HandleToUlong(h)        HandleToULong(h)
+#define UlongToHandle(ul)       ULongToHandle(ul)
+#define UintToPtr(ui)           UIntToPtr(ui)
+#define UlongToPtr(ul)          ULongToPtr(ul)
+
+typedef LONG_PTR SSIZE_T, *PSSIZE_T;
+typedef ULONG_PTR SIZE_T, *PSIZE_T;
+
+typedef ULONG_PTR KAFFINITY, *PKAFFINITY;
+
+/* Some Wine-specific definitions */
+
+/* Architecture dependent settings. */
+/* These are hardcoded to avoid dependencies on config.h in Winelib apps. */
+#if defined(__i386__)
+# undef  WORDS_BIGENDIAN
+# undef  BITFIELDS_BIGENDIAN
+# define ALLOW_UNALIGNED_ACCESS
+#elif defined(__x86_64__)
+# undef  WORDS_BIGENDIAN
+# undef  BITFIELDS_BIGENDIAN
+# define ALLOW_UNALIGNED_ACCESS
+#elif defined(__sparc__)
+# define WORDS_BIGENDIAN
+# define BITFIELDS_BIGENDIAN
+# undef  ALLOW_UNALIGNED_ACCESS
+#elif defined(__powerpc__)
+# define WORDS_BIGENDIAN
+# define BITFIELDS_BIGENDIAN
+# undef  ALLOW_UNALIGNED_ACCESS
+#elif defined(__ALPHA__)
+# undef  WORDS_BIGENDIAN
+# undef  BITFIELDS_BIGENDIAN
+# undef  ALLOW_UNALIGNED_ACCESS
+#elif !defined(RC_INVOKED) && !defined(__WIDL__) && !defined(__midl)
+# error Unknown CPU architecture!
+#endif
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif /* !defined(__WINE_BASETSD_H) */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/basetyps.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/basetyps.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/basetyps.h	(revision 16410)
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 1998 Anders Norlander
+ * Copyright (C) 2005 Steven Edwards
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _BASETYPS_H_
+#define _BASETYPS_H_
+
+#ifdef __cplusplus
+# define EXTERN_C extern "C"
+#else
+# define EXTERN_C extern
+#endif
+
+#define STDMETHODCALLTYPE  __stdcall
+#define STDMETHODVCALLTYPE __cdecl
+#define STDAPICALLTYPE     __stdcall
+#define STDAPIVCALLTYPE    __cdecl
+#define STDAPI             EXTERN_C HRESULT STDAPICALLTYPE
+#define STDAPI_(t)         EXTERN_C t STDAPICALLTYPE
+#define STDMETHODIMP       HRESULT STDMETHODCALLTYPE
+#define STDMETHODIMP_(t)   t STDMETHODCALLTYPE
+#define STDAPIV            EXTERN_C HRESULT STDAPIVCALLTYPE
+#define STDAPIV_(t)        EXTERN_C t STDAPIVCALLTYPE
+#define STDMETHODIMPV      HRESULT STDMETHODVCALLTYPE
+#define STDMETHODIMPV_(t)  t STDMETHODVCALLTYPE
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+# define interface struct
+# define STDMETHOD(m) virtual HRESULT STDMETHODCALLTYPE m
+# define STDMETHOD_(t,m) virtual t STDMETHODCALLTYPE m
+# define PURE =0
+# define THIS_
+# define THIS void
+# define DECLARE_INTERFACE(i)    interface i
+# define DECLARE_INTERFACE_(i,b) interface i : public b
+#else
+# define STDMETHOD(m) HRESULT (STDMETHODCALLTYPE *m)
+# define STDMETHOD_(t,m) t (STDMETHODCALLTYPE *m)
+# define PURE
+# define THIS_ INTERFACE *,
+# define THIS INTERFACE *
+# ifdef CONST_VTABLE
+#  define DECLARE_INTERFACE(i) \
+     typedef interface i { const struct i##Vtbl *lpVtbl; } i; \
+     typedef struct i##Vtbl i##Vtbl; \
+     struct i##Vtbl
+# else
+#  define DECLARE_INTERFACE(i) \
+     typedef interface i { struct i##Vtbl *lpVtbl; } i; \
+     typedef struct i##Vtbl i##Vtbl; \
+     struct i##Vtbl
+# endif
+# define DECLARE_INTERFACE_(i,b) DECLARE_INTERFACE(i)
+#endif
+
+#include <guiddef.h>
+
+#ifndef _ERROR_STATUS_T_DEFINED
+typedef unsigned long error_status_t;
+#define _ERROR_STATUS_T_DEFINED
+#endif
+
+#ifndef _WCHAR_T_DEFINED
+typedef unsigned short wchar_t;
+#define _WCHAR_T_DEFINED
+#endif
+
+#endif /* _BASETYPS_H_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/bcrypt.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/bcrypt.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/bcrypt.h	(revision 16410)
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2007 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_BCRYPT_H
+#define __WINE_BCRYPT_H
+
+#ifndef WINAPI
+#define WINAPI __stdcall
+#endif
+
+#ifndef IN
+#define IN
+#endif
+
+#ifndef OUT
+#define OUT
+#endif
+
+#ifndef OPTIONAL
+#define OPTIONAL
+#endif
+
+#ifndef WINE_NTSTATUS_DECLARED
+#define WINE_NTSTATUS_DECLARED
+typedef LONG NTSTATUS;
+#endif
+
+#endif  /* __WINE_BCRYPT_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/bits.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/bits.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/bits.idl	(revision 16410)
@@ -0,0 +1,411 @@
+/*
+ * Background Intelligent Transfer Service (BITS) interface
+ *
+ * Copyright 2007 Google (Roy Shea)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#ifndef DO_NO_IMPORTS
+import "unknwn.idl";
+#endif
+
+cpp_quote("#include \"bitsmsg.h\"")
+cpp_quote("#define BG_SIZE_UNKNOWN (UINT64)(-1)")
+cpp_quote("#define BG_NOTIFY_JOB_TRANSFERRED 0x0001")
+cpp_quote("#define BG_NOTIFY_JOB_ERROR 0x0002")
+cpp_quote("#define BG_NOTIFY_DISABLE 0x0004")
+cpp_quote("#define BG_NOTIFY_JOB_MODIFICATION 0x0008")
+
+
+#define BG_ENUM_SIZEIS(maxcount) maxcount
+#define BG_ENUM_LENGTHIS(maxcount,lengthptr) lengthptr ? *lengthptr : maxcount
+
+[
+    uuid(01b7bd23-fb88-4a77-8490-5891d3e4653a),
+    odl
+]
+interface IBackgroundCopyFile : IUnknown
+{
+    typedef struct _BG_FILE_PROGRESS {
+        UINT64 BytesTotal;
+        UINT64 BytesTransferred;
+        BOOL Completed;
+    } BG_FILE_PROGRESS;
+
+    HRESULT GetRemoteName(
+            [out] LPWSTR *pVal
+    );
+
+    HRESULT GetLocalName(
+            [out] LPWSTR *pVal
+    );
+
+    HRESULT GetProgress(
+            [out] BG_FILE_PROGRESS *pVal
+    );
+}
+
+
+[
+    uuid(ca51e165-c365-424c-8d41-24aaa4ff3c40),
+    odl
+]
+interface IEnumBackgroundCopyFiles: IUnknown
+{
+    HRESULT Next(
+            [in] ULONG celt,
+            [out,size_is(BG_ENUM_SIZEIS(celt)),length_is(BG_ENUM_LENGTHIS(celt,pceltFetched))] IBackgroundCopyFile **rgelt,
+            [in,out,unique] ULONG *pceltFetched
+    );
+
+    HRESULT Skip(
+            [in] ULONG celt
+    );
+
+    HRESULT Reset();
+
+    HRESULT Clone(
+            [out] IEnumBackgroundCopyFiles **ppenum
+    );
+
+    HRESULT GetCount(
+            [out] ULONG *puCount
+    );
+}
+
+
+[
+    uuid(19c613a0-fcb8-4f28-81ae-897c3d078f81),
+    odl
+]
+interface IBackgroundCopyError : IUnknown
+{
+    typedef enum {
+        BG_ERROR_CONTEXT_NONE = 0,
+        BG_ERROR_CONTEXT_UNKNOWN = 1,
+        BG_ERROR_CONTEXT_GENERAL_QUEUE_MANAGER = 2,
+        BG_ERROR_CONTEXT_QUEUE_MANAGER_NOTIFICATION =3,
+        BG_ERROR_CONTEXT_LOCAL_FILE = 4,
+        BG_ERROR_CONTEXT_REMOTE_FILE = 5,
+        BG_ERROR_CONTEXT_GENERAL_TRANSPORT = 6,
+        BG_ERROR_CONTEXT_REMOTE_APPLICATION =7,
+    } BG_ERROR_CONTEXT;
+
+    HRESULT GetError(
+            [out,ref] BG_ERROR_CONTEXT *pContext,
+            [out,ref] HRESULT *pCode
+    );
+
+    HRESULT GetFile(
+            [out] IBackgroundCopyFile **pVal
+    );
+
+    HRESULT GetErrorDescription(
+            [in] DWORD LanguageId,
+            [out,ref] LPWSTR *pErrorDescription
+    );
+
+    HRESULT GetErrorContextDescription(
+            [in] DWORD LanguageId,
+            [out,ref] LPWSTR *pContextDescription
+    );
+
+    HRESULT GetProtocol(
+            [out,ref] LPWSTR *pProtocol
+    );
+}
+
+
+
+[
+    uuid(37668d37-507e-4160-9316-26306d150b12),
+    odl
+]
+interface IBackgroundCopyJob : IUnknown
+{
+    typedef struct _BG_FILE_INFO {
+        LPWSTR RemoteName;
+        LPWSTR LocalName;
+    } BG_FILE_INFO;
+
+    typedef struct _BG_JOB_PROGRESS {
+        UINT64 BytesTotal;
+        UINT64 BytesTransferred;
+        ULONG FilesTotal;
+        ULONG FilesTransferred;
+    } BG_JOB_PROGRESS;
+
+    typedef struct _BG_JOB_TIMES {
+        FILETIME CreationTime;
+        FILETIME ModificationTime;
+        FILETIME TransferCompletionTime;
+    } BG_JOB_TIMES;
+
+    typedef enum {
+        BG_JOB_PRIORITY_FOREGROUND = 0,
+        BG_JOB_PRIORITY_HIGH = 1,
+        BG_JOB_PRIORITY_NORMAL = 2,
+        BG_JOB_PRIORITY_LOW = 3
+    } BG_JOB_PRIORITY;
+
+    typedef enum {
+        BG_JOB_STATE_QUEUED = 0,
+        BG_JOB_STATE_CONNECTING = 1,
+        BG_JOB_STATE_TRANSFERRING = 2,
+        BG_JOB_STATE_SUSPENDED = 3,
+        BG_JOB_STATE_ERROR = 4,
+        BG_JOB_STATE_TRANSIENT_ERROR = 5,
+        BG_JOB_STATE_TRANSFERRED = 6,
+        BG_JOB_STATE_ACKNOWLEDGED = 7,
+        BG_JOB_STATE_CANCELLED = 8
+    } BG_JOB_STATE;
+
+    typedef enum {
+       BG_JOB_TYPE_DOWNLOAD = 0,
+       BG_JOB_TYPE_UPLOAD = 1,
+       BG_JOB_TYPE_UPLOAD_REPLY = 2
+    } BG_JOB_TYPE;
+
+    typedef enum {
+        BG_JOB_PROXY_USAGE_PRECONFIG,
+        BG_JOB_PROXY_USAGE_NO_PROXY,
+        BG_JOB_PROXY_USAGE_OVERRIDE,
+        BG_JOB_PROXY_USAGE_AUTODETECT
+    } BG_JOB_PROXY_USAGE;
+
+
+    HRESULT AddFileSet(
+            [in] ULONG cFileCount,
+            [in,size_is(cFileCount)] BG_FILE_INFO *pFileSet
+    );
+
+    HRESULT AddFile(
+            [in] LPCWSTR RemoteUrl,
+            [in] LPCWSTR LocalName
+    );
+
+    HRESULT EnumFiles(
+            [out] IEnumBackgroundCopyFiles **pEnum
+    );
+
+    HRESULT Suspend();
+
+    HRESULT Resume();
+
+    HRESULT Cancel();
+
+    HRESULT Complete();
+
+    HRESULT GetId(
+            [out] GUID *pVal
+    );
+
+    HRESULT GetType(
+            [out] BG_JOB_TYPE *pVal
+    );
+
+    HRESULT GetProgress(
+            [out] BG_JOB_PROGRESS *pVal
+    );
+
+    HRESULT GetTimes(
+            [out] BG_JOB_TIMES *pVal
+    );
+
+    HRESULT GetState(
+            [out] BG_JOB_STATE *pVal
+    );
+
+    HRESULT GetError(
+            [out] IBackgroundCopyError **ppError
+    );
+
+    HRESULT GetOwner(
+            [out] LPWSTR *pVal
+    );
+
+    HRESULT SetDisplayName(
+            [in] LPCWSTR Val
+    );
+
+    HRESULT GetDisplayName(
+            [out] LPWSTR *pVal
+    );
+
+    HRESULT SetDescription(
+            [in] LPCWSTR Val
+    );
+
+    HRESULT GetDescription(
+            [out] LPWSTR *pVal
+    );
+
+    HRESULT SetPriority(
+            [in] BG_JOB_PRIORITY Val
+    );
+
+    HRESULT GetPriority(
+            [out] BG_JOB_PRIORITY *pVal
+    );
+
+    HRESULT SetNotifyFlags(
+            [in] ULONG Val
+    );
+
+    HRESULT GetNotifyFlags(
+            [out] ULONG *pVal
+    );
+
+    HRESULT SetNotifyInterface(
+            [in] IUnknown *Val
+    );
+
+    HRESULT GetNotifyInterface(
+            [out] IUnknown ** pVal
+    );
+
+    HRESULT SetMinimumRetryDelay(
+            [in] ULONG Seconds
+    );
+
+    HRESULT GetMinimumRetryDelay(
+            [out] ULONG *Seconds
+    );
+
+    HRESULT SetNoProgressTimeout(
+            [in] ULONG Seconds
+    );
+
+    HRESULT GetNoProgressTimeout(
+            [out] ULONG *Seconds
+    );
+
+    HRESULT GetErrorCount(
+            [out] ULONG *Errors
+    );
+
+    HRESULT SetProxySettings(
+            [in] BG_JOB_PROXY_USAGE ProxyUsage,
+            [in,string,unique] const WCHAR *ProxyList,
+            [in,string,unique] const WCHAR *ProxyBypassList
+    );
+
+    HRESULT GetProxySettings(
+            [out] BG_JOB_PROXY_USAGE *pProxyUsage,
+            [out] LPWSTR *pProxyList,
+            [out] LPWSTR *pProxyBypassList
+    );
+
+    HRESULT TakeOwnership();
+}
+
+[
+    uuid(1af4f612-3b71-466f-8f58-7b6f73ac57ad),
+    odl
+]
+interface IEnumBackgroundCopyJobs : IUnknown
+{
+    HRESULT Next(
+            [in] ULONG celt,
+            [out,size_is(BG_ENUM_SIZEIS(celt)),length_is(BG_ENUM_LENGTHIS(celt,pceltFetched))] IBackgroundCopyJob **rgelt,
+            [in,out,unique] ULONG *pceltFetched
+    );
+
+    HRESULT Skip(
+            [in] ULONG celt
+    );
+
+    HRESULT Reset();
+
+    HRESULT Clone(
+            [out] IEnumBackgroundCopyJobs **ppenum
+    );
+
+    HRESULT GetCount(
+            [out] ULONG *puCount
+    );
+}
+
+
+[
+    uuid(97ea99c7-0186-4ad4-8df9-c5b4e0ed6b22),
+    odl
+]
+interface IBackgroundCopyCallback : IUnknown
+{
+    HRESULT JobTransferred(
+            [in] IBackgroundCopyJob *pJob
+    );
+
+    HRESULT JobError(
+            [in] IBackgroundCopyJob *pJob,
+            [in] IBackgroundCopyError *pError
+    );
+
+    HRESULT JobModification(
+            [in] IBackgroundCopyJob *pJob,
+            [in] DWORD dwReserved
+    );
+}
+
+[
+    uuid(5ce34c0d-0dc9-4c1f-897c-daa1b78cee7c),
+    odl
+]
+interface IBackgroundCopyManager : IUnknown
+{
+    cpp_quote("#define BG_JOB_ENUM_ALL_USERS 0x0001")
+
+    HRESULT CreateJob(
+            [in] LPCWSTR DisplayName,
+            [in] BG_JOB_TYPE Type,
+            [out] GUID *pJobId,
+            [out] IBackgroundCopyJob **ppJob
+    );
+
+    HRESULT GetJob(
+            [in] REFGUID jobID,
+            [out] IBackgroundCopyJob **ppJob
+    );
+
+    HRESULT EnumJobs(
+            [in] DWORD dwFlags,
+            [out] IEnumBackgroundCopyJobs **ppEnum
+    );
+    HRESULT GetErrorDescription(
+            [in] HRESULT hResult,
+            [in] DWORD LanguageId,
+            [out] LPWSTR *pErrorDescription);
+}
+
+
+[
+    uuid(1deeb74f-7915-4560-b558-918c83f176a6),
+    version(1.0)
+]
+library BackgroundCopyManager
+{
+    [
+        uuid(4991d34b-80a1-4291-83b6-3328366b9097),
+    ]
+    coclass BackgroundCopyManager
+    {
+        [default] interface IBackgroundCopyManager;
+    };
+
+    interface IBackgroundCopyCallback;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/bits1_5.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/bits1_5.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/bits1_5.idl	(revision 16410)
@@ -0,0 +1,88 @@
+/*
+ * Background Intelligent Transfer Service (BITS) 1.5 interface
+ *
+ * Copyright 2008 Google (Dan Hipschman)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#ifndef DO_NO_IMPORTS
+import "bits.idl";
+#endif
+
+[
+    uuid(54b50739-686f-45eb-9dff-d6a9a0faa9af),
+    odl
+]
+interface IBackgroundCopyJob2 : IBackgroundCopyJob
+{
+    HRESULT SetNotifyCmdLine([unique] LPCWSTR prog, [unique] LPCWSTR params);
+    HRESULT GetNotifyCmdLine([out] LPWSTR *prog, [out] LPWSTR *params);
+
+    typedef struct _BG_JOB_REPLY_PROGRESS
+    {
+        UINT64 BytesTotal;
+        UINT64 BytesTransferred;
+    } BG_JOB_REPLY_PROGRESS;
+
+    HRESULT GetReplyProgress([in, out] BG_JOB_REPLY_PROGRESS *progress);
+    HRESULT GetReplyData([out, size_is( , (unsigned long) *pLength)] byte **pBuffer,
+                         [in, out, unique] UINT64 *pLength);
+    HRESULT SetReplyFileName([unique] LPCWSTR filename);
+    HRESULT GetReplyFileName([out] LPWSTR *pFilename);
+
+    typedef enum
+    {
+        BG_AUTH_TARGET_SERVER = 1,
+        BG_AUTH_TARGET_PROXY
+    } BG_AUTH_TARGET;
+
+    typedef enum
+    {
+        BG_AUTH_SCHEME_BASIC = 1,
+        BG_AUTH_SCHEME_DIGEST,
+        BG_AUTH_SCHEME_NTLM,
+        BG_AUTH_SCHEME_NEGOTIATE,
+        BG_AUTH_SCHEME_PASSPORT
+    } BG_AUTH_SCHEME;
+
+    typedef struct
+    {
+        LPWSTR UserName;
+        LPWSTR Password;
+    } BG_BASIC_CREDENTIALS;
+    typedef BG_BASIC_CREDENTIALS *PBG_BASIC_CREDENTIALS;
+
+    typedef [switch_type(BG_AUTH_SCHEME)] union
+    {
+        [case(BG_AUTH_SCHEME_BASIC, BG_AUTH_SCHEME_DIGEST, BG_AUTH_SCHEME_NTLM,
+              BG_AUTH_SCHEME_NEGOTIATE, BG_AUTH_SCHEME_PASSPORT)]
+        BG_BASIC_CREDENTIALS Basic;
+        [default]
+        ;
+    } BG_AUTH_CREDENTIALS_UNION;
+
+    typedef struct
+    {
+        BG_AUTH_TARGET Target;
+        BG_AUTH_SCHEME Scheme;
+        [switch_is(Scheme)] BG_AUTH_CREDENTIALS_UNION Credentials;
+    } BG_AUTH_CREDENTIALS;
+    typedef BG_AUTH_CREDENTIALS *PBG_AUTH_CREDENTIALS;
+
+    HRESULT SetCredentials(BG_AUTH_CREDENTIALS *cred);
+    HRESULT RemoveCredentials(BG_AUTH_TARGET target, BG_AUTH_SCHEME scheme);
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/bitsmsg.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/bitsmsg.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/bitsmsg.h	(revision 16410)
@@ -0,0 +1,81 @@
+/*
+ * Standard return values that may be generated by BITS
+ *
+ * Copyright 2007 Google (Roy Shea)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_BITMSG_H__
+#define __WINE_BITMSG_H__
+
+#define BG_S_PARTIAL_COMPLETE                   0x00200017
+#define BG_S_UNABLE_TO_DELETE_FILES             0x0020001A
+#define BG_S_OVERRIDDEN_BY_POLICY               0x00200055
+
+#define BG_E_HTTP_ERROR_400                     0x80190190
+#define BG_E_HTTP_ERROR_401                     0x80190191
+#define BG_E_HTTP_ERROR_404                     0x80190194
+#define BG_E_HTTP_ERROR_407                     0x80190197
+#define BG_E_HTTP_ERROR_414                     0x8019019E
+#define BG_E_HTTP_ERROR_501                     0x801901F5
+#define BG_E_HTTP_ERROR_503                     0x801901F7
+#define BG_E_HTTP_ERROR_504                     0x801901F8
+#define BG_E_HTTP_ERROR_505                     0x801901F9
+
+#define BG_E_NOT_FOUND                          0x80200001
+#define BG_E_INVALID_STATE                      0x80200002
+#define BG_E_EMPTY                              0x80200003
+#define BG_E_FILE_NOT_AVAILABLE                 0x80200004
+#define BG_E_PROTOCOL_NOT_AVAILABLE             0x80200005
+#define BG_E_DESTINATION_LOCKED                 0x8020000D
+#define BG_E_VOLUME_CHANGED                     0x8020000E
+#define BG_E_ERROR_INFORMATION_UNAVAILABLE      0x8020000F
+#define BG_E_NETWORK_DISCONNECTED               0x80200010
+#define BG_E_MISSING_FILE_SIZE                  0x80200011
+#define BG_E_INSUFFICIENT_HTTP_SUPPORT          0x80200012
+#define BG_E_INSUFFICIENT_RANGE_SUPPORT         0x80200013
+#define BG_E_REMOTE_NOT_SUPPORTED               0x80200014
+#define BG_E_NEW_OWNER_DIFF_MAPPING             0x80200015
+#define BG_E_NEW_OWNER_NO_FILE_ACCESS           0x80200016
+#define BG_E_PROXY_LIST_TOO_LARGE               0x80200018
+#define BG_E_PROXY_BYPASS_LIST_TOO_LARGE        0x80200019
+#define BG_E_TOO_MANY_FILES                     0x8020001C
+#define BG_E_LOCAL_FILE_CHANGED                 0x8020001D
+#define BG_E_TOO_LARGE                          0x80200020
+#define BG_E_STRING_TOO_LONG                    0x80200021
+#define BG_E_CLIENT_SERVER_PROTOCOL_MISMATCH    0x80200022
+#define BG_E_SERVER_EXECUTE_ENABLED             0x80200023
+#define BG_E_USERNAME_TOO_LARGE                 0x80200025
+#define BG_E_PASSWORD_TOO_LARGE                 0x80200026
+#define BG_E_INVALID_AUTH_TARGET                0x80200027
+#define BG_E_INVALID_AUTH_SCHEME                0x80200028
+#define BG_E_INVALID_RANGE                      0x8020002B
+#define BG_E_OVERLAPPING_RANGES                 0x8020002C
+#define BG_E_BLOCKED_BY_POLICY                  0x8020003E
+#define BG_E_INVALID_PROXY_INFO                 0x8020003F
+#define BG_E_INVALID_CREDENTIALS                0x80200040
+#define BG_E_RECORD_DELETED                     0x80200042
+#define BG_E_UPNP_ERROR                         0x80200045
+#define BG_E_PEERCACHING_DISABLED               0x80200047
+#define BG_E_BUSYCACHERECORD                    0x80200048
+#define BG_E_TOO_MANY_JOBS_PER_USER             0x80200049
+#define BG_E_TOO_MANY_JOBS_PER_MACHINE          0x80200050
+#define BG_E_TOO_MANY_FILES_IN_JOB              0x80200051
+#define BG_E_TOO_MANY_RANGES_IN_FILE            0x80200052
+#define BG_E_VALIDATION_FAILED                  0x80200053
+#define BG_E_MAXDOWNLOAD_TIMEOUT                0x80200054
+
+#endif /* #ifndef __WINE_BITMSG_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/cderr.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/cderr.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/cderr.h	(revision 16410)
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 1999 Bertho Stultiens
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_CDERR_H
+#define __WINE_CDERR_H
+
+/* General error codes */
+#define CDERR_DIALOGFAILURE	0xFFFF
+#define CDERR_GENERALCODES	0x0000
+#define CDERR_STRUCTSIZE	0x0001
+#define CDERR_INITIALIZATION	0x0002
+#define CDERR_NOTEMPLATE	0x0003
+#define CDERR_NOHINSTANCE	0x0004
+#define CDERR_LOADSTRFAILURE	0x0005
+#define CDERR_FINDRESFAILURE	0x0006
+#define CDERR_LOADRESFAILURE	0x0007
+#define CDERR_LOCKRESFAILURE	0x0008
+#define CDERR_MEMALLOCFAILURE	0x0009
+#define CDERR_MEMLOCKFAILURE	0x000A
+#define CDERR_NOHOOK		0x000B
+#define CDERR_REGISTERMSGFAIL	0x000C
+
+/* Printer dialog error codes */
+#define PDERR_PRINTERCODES	0x1000
+#define PDERR_SETUPFAILURE	0x1001
+#define PDERR_PARSEFAILURE	0x1002
+#define PDERR_RETDEFFAILURE	0x1003
+#define PDERR_LOADDRVFAILURE	0x1004
+#define PDERR_GETDEVMODEFAIL	0x1005
+#define PDERR_INITFAILURE	0x1006
+#define PDERR_NODEVICES		0x1007
+#define PDERR_NODEFAULTPRN	0x1008
+#define PDERR_DNDMMISMATCH	0x1009
+#define PDERR_CREATEICFAILURE	0x100A
+#define PDERR_PRINTERNOTFOUND	0x100B
+#define PDERR_DEFAULTDIFFERENT	0x100C
+
+/* Chose font error codes */
+#define CFERR_CHOOSEFONTCODES	0x2000
+#define CFERR_NOFONTS		0x2001
+#define CFERR_MAXLESSTHANMIN	0x2002
+
+/* File{Open,Save} error codes */
+#define FNERR_FILENAMECODES	0x3000
+#define FNERR_SUBCLASSFAILURE	0x3001
+#define FNERR_INVALIDFILENAME	0x3002
+#define FNERR_BUFFERTOOSMALL	0x3003
+
+/* Find/Replace error codes */
+#define FRERR_FINDREPLACECODES	0x4000
+#define FRERR_BUFFERLENGTHZERO	0x4001
+
+/* Choose color error codes */
+#define CCERR_CHOOSECOLORCODES	0x5000
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/cfgmgr32.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/cfgmgr32.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/cfgmgr32.h	(revision 16410)
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2005 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _CFGMGR32_H_
+#define _CFGMGR32_H_
+
+/* FIXME: #include <cfg.h> */
+
+#define CMAPI
+typedef DWORD CONFIGRET;
+
+#define CR_SUCCESS                      0x00
+#define CR_DEFAULT                      0x01
+#define CR_OUT_OF_MEMORY                0x02
+#define CR_INVALID_POINTER              0x03
+#define CR_INVALID_FLAG                 0x04
+#define CR_INVALID_DEVNODE              0x05
+#define CR_INVALID_DEVINST              CR_INVALID_DEVNODE
+#define CR_INVALID_RES_DES              0x06
+#define CR_INVALID_LOG_CONF             0x07
+#define CR_INVALID_ARBITRATOR           0x08
+#define CR_INVALID_NODELIST             0x09
+#define CR_DEVNODE_HAS_REQS             0x0a
+#define CR_DEVINST_HAS_REQS             CR_DEVNODE_HAS_REQS
+#define CR_INVALID_RESOURCEID           0x0b
+#define CR_DLVXD_NOT_FOUND              0x0c
+#define CR_NO_SUCH_DEVNODE              0x0d
+#define CR_NO_SUCH_DEVINST              CR_NO_SUCH_DEVNODE
+#define CR_NO_MORE_LOG_CONF             0x0e
+#define CR_NO_MORE_RES_DES              0x0f
+#define CR_ALREADY_SUCH_DEVNODE         0x10
+#define CR_ALREADY_SUCH_DEVINST         CR_ALREADY_SUCH_DEVNODE
+#define CR_INVALID_RANGE_LIST           0x11
+#define CR_INVALID_RANGE                0x12
+#define CR_FAILURE                      0x13
+#define CR_NO_SUCH_LOGICAL_DEV          0x14
+#define CR_CREATE_BLOCKED               0x15
+#define CR_NOT_SYSTEM_VM                0x16
+#define CR_REMOVE_VETOED                0x17
+#define CR_APM_VETOED                   0x18
+#define CR_INVALID_LOAD_TYPE            0x19
+#define CR_BUFFER_SMALL                 0x1a
+#define CR_NO_ARBITRATOR                0x1b
+#define CR_NO_REGISTRY_HANDLE           0x1c
+#define CR_REGISTRY_ERROR               0x1d
+#define CR_INVALID_DEVICE_ID            0x1e
+#define CR_INVALID_DATA                 0x1f
+#define CR_INVALID_API                  0x20
+#define CR_DEVLOADER_NOT_READY          0x21
+#define CR_NEED_RESTART                 0x22
+#define CR_NO_MORE_HW_PROFILES          0x23
+#define CR_DEVICE_NOT_THERE             0x24
+#define CR_NO_SUCH_VALUE                0x25
+#define CR_WRONG_TYPE                   0x26
+#define CR_INVALID_PRIORITY             0x27
+#define CR_NOT_DISABLEABLE              0x28
+#define CR_FREE_RESOURCES               0x29
+#define CR_QUERY_VETOED                 0x2a
+#define CR_CANT_SHARE_IRQ               0x2b
+#define CR_NO_DEPENDENT                 0x2c
+#define CR_SAME_RESOURCES               0x2d
+#define CR_NO_SUCH_REGISTRY_KEY         0x2e
+#define CR_INVALID_MACHINENAME          0x2f
+#define CR_REMOTE_COMM_FAILURE          0x30
+#define CR_MACHINE_UNAVAILABLE          0x31
+#define CR_NO_CM_SERVICES               0x32
+#define CR_ACCESS_DENIED                0x33
+#define CR_CALL_NOT_IMPLEMENTED         0x34
+#define CR_INVALID_PROPERTY             0x35
+#define CR_DEVICE_INTERFACE_ACTIVE      0x36
+#define CR_NO_SUCH_DEVICE_INTERFACE     0x37
+#define CR_INVALID_REFERENCE_STRING     0x38
+#define CR_INVALID_CONFLICT_LIST        0x39
+#define CR_INVALID_INDEX                0x3a
+#define CR_INVALID_STRUCTURE_SIZE       0x3b
+#define NUM_CR_RESULTS                  0x3c
+
+#define MAX_CLASS_NAME_LEN              32
+#define MAX_GUID_STRING_LEN             39
+#define MAX_PROFILE_LEN                 80
+
+typedef DWORD DEVINST, *PDEVINST;
+typedef DWORD DEVNODE, *PDEVNODE;
+typedef HANDLE HMACHINE, *PHMACHINE;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+CMAPI CONFIGRET WINAPI CM_Connect_MachineA(PCSTR,PHMACHINE);
+CMAPI CONFIGRET WINAPI CM_Connect_MachineW(PCWSTR,PHMACHINE);
+#define     CM_Connect_Machine WINELIB_NAME_AW(CM_Connect_Machine)
+CMAPI CONFIGRET WINAPI CM_Disconnect_Machine(HMACHINE);
+CMAPI CONFIGRET WINAPI CM_Get_Device_IDA(DEVINST,PSTR,ULONG,ULONG);
+CMAPI CONFIGRET WINAPI CM_Get_Device_IDW(DEVINST,PWSTR,ULONG,ULONG);
+#define     CM_Get_Device_ID WINELIB_NAME_AW(CM_Get_Device_ID)
+CMAPI CONFIGRET WINAPI CM_Get_Device_ID_ListA(PCSTR,PCHAR,ULONG,ULONG);
+CMAPI CONFIGRET WINAPI CM_Get_Device_ID_ListW(PCWSTR,PWCHAR,ULONG,ULONG);
+#define     CM_Get_Device_ID_List WINELIB_NAME_AW(CM_Get_Device_ID_List)
+CMAPI CONFIGRET WINAPI CM_Get_Device_ID_List_ExA(PCSTR,PCHAR,ULONG,ULONG,HMACHINE);
+CMAPI CONFIGRET WINAPI CM_Get_Device_ID_List_ExW(PCWSTR,PWCHAR,ULONG,ULONG,HMACHINE);
+#define     CM_Get_Device_ID_List_Ex WINELIB_NAME_AW(CM_Get_Device_ID_List_Ex)
+CMAPI CONFIGRET WINAPI CM_Get_Device_ID_Size(PULONG,DEVINST,ULONG);
+CMAPI CONFIGRET WINAPI CM_Get_Device_ID_Size_Ex(PULONG,DEVINST,ULONG,HMACHINE);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CFGMGR32_H_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/cguid.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/cguid.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/cguid.h	(revision 16410)
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2000 Peter Hunnisett
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __CGUID_H__
+#define __CGUID_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern const IID GUID_NULL;
+extern const IID IID_IRpcChannel;
+extern const IID IID_IRpcStub;
+extern const IID IID_IStubManager;
+extern const IID IID_IRpcProxy;
+extern const IID IID_IProxyManager;
+extern const IID IID_IPSFactory;
+extern const IID IID_IInternalMoniker;
+extern const IID IID_IDfReserved1;
+extern const IID IID_IDfReserved2;
+extern const IID IID_IDfReserved3;
+extern const CLSID CLSID_StdMarshal;
+extern const CLSID CLSID_AggStdMarshal;
+extern const CLSID CLSID_StdAsyncActManager;
+extern const IID IID_IStub;
+extern const IID IID_IProxy;
+extern const IID IID_IEnumGeneric;
+extern const IID IID_IEnumHolder;
+extern const IID IID_IEnumCallback;
+extern const IID IID_IOleManager;
+extern const IID IID_IOlePresObj;
+extern const IID IID_IDebug;
+extern const IID IID_IDebugStream;
+extern const CLSID CLSID_PSGenObject;
+extern const CLSID CLSID_PSClientSite;
+extern const CLSID CLSID_PSClassObject;
+extern const CLSID CLSID_PSInPlaceActive;
+extern const CLSID CLSID_PSInPlaceFrame;
+extern const CLSID CLSID_PSDragDrop;
+extern const CLSID CLSID_PSBindCtx;
+extern const CLSID CLSID_PSEnumerators;
+extern const CLSID CLSID_StaticMetafile;
+extern const CLSID CLSID_StaticDib;
+extern const CLSID CID_CDfsVolume;
+extern const CLSID CLSID_DCOMAccessControl;
+extern const CLSID CLSID_StdGlobalInterfaceTable;
+extern const CLSID CLSID_ComBinding;
+extern const CLSID CLSID_StdEvent;
+extern const CLSID CLSID_ManualResetEvent;
+extern const CLSID CLSID_SynchronizeContainer;
+extern const CLSID CLSID_CCDFormKrnl;
+extern const CLSID CLSID_CCDPropertyPage;
+extern const CLSID CLSID_CCDFormDialog;
+extern const CLSID CLSID_CCDCommandButton;
+extern const CLSID CLSID_CCDComboBox;
+extern const CLSID CLSID_CCDTextBox;
+extern const CLSID CLSID_CCDCheckBox;
+extern const CLSID CLSID_CCDLabel;
+extern const CLSID CLSID_CCDOptionButton;
+extern const CLSID CLSID_CCDListBox;
+extern const CLSID CLSID_CCDScrollBar;
+extern const CLSID CLSID_CCDGroupBox;
+extern const CLSID CLSID_CCDGeneralPropertyPage;
+extern const CLSID CLSID_CCDGenericPropertyPage;
+extern const CLSID CLSID_CCDFontPropertyPage;
+extern const CLSID CLSID_CCDColorPropertyPage;
+extern const CLSID CLSID_CCDLabelPropertyPage;
+extern const CLSID CLSID_CCDCheckBoxPropertyPage;
+extern const CLSID CLSID_CCDTextBoxPropertyPage;
+extern const CLSID CLSID_CCDOptionButtonPropertyPage;
+extern const CLSID CLSID_CCDListBoxPropertyPage;
+extern const CLSID CLSID_CCDCommandButtonPropertyPage;
+extern const CLSID CLSID_CCDComboBoxPropertyPage;
+extern const CLSID CLSID_CCDScrollBarPropertyPage;
+extern const CLSID CLSID_CCDGroupBoxPropertyPage;
+extern const CLSID CLSID_CCDXObjectPropertyPage;
+extern const CLSID CLSID_CStdPropertyFrame;
+extern const CLSID CLSID_CFormPropertyPage;
+extern const CLSID CLSID_CGridPropertyPage;
+extern const CLSID CLSID_CWSJArticlePage;
+extern const CLSID CLSID_CSystemPage;
+extern const CLSID CLSID_IdentityUnmarshal;
+extern const CLSID CLSID_InProcFreeMarshaler;
+extern const CLSID CLSID_Picture_Metafile;
+extern const CLSID CLSID_Picture_EnhMetafile;
+extern const CLSID CLSID_Picture_Dib;
+extern const GUID GUID_TRISTATE;
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CGUID_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/cierror.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/cierror.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/cierror.h	(revision 16410)
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2006 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_CIERROR_H__
+#define __WINE_CIERROR_H__
+
+#define CI_E_ALREADY_INITIALIZED       0x8004180a
+#define CI_E_NOT_INITIALIZED           0x8004180b
+#define CI_E_BUFFERTOOSMALL            0x8004180c
+#define CI_E_PROPERTY_NOT_CACHED       0x8004180d
+#define CI_E_INVALID_STATE             0x8004180f
+#define CI_E_FILTERING_DISABLED        0x80041810
+#define CI_E_DISK_FULL                 0x80041811
+#define CI_E_SHUTDOWN                  0x80041812
+#define CI_E_WORKID_NOTVALID           0x80041813
+#define CI_E_NOT_FOUND                 0x80041815
+#define CI_E_USE_DEFAULT_PID           0x80041816
+#define CI_E_DUPLICATE_NOTIFICATION    0x80041817
+#define CI_E_UPDATES_DISABLED          0x80041818
+#define CI_E_INVALID_FLAGS_COMBINATION 0x80041819
+#define CI_E_OUTOFSEQ_INCREMENT_DATA   0x8004181a
+#define CI_E_SHARING_VIOLATION         0x8004181b
+#define CI_E_LOGON_FAILURE             0x8004181c
+#define CI_E_NO_CATALOG                0x8004181d
+#define CI_E_STRANGE_PAGEORSECTOR_SIZE 0x8004181e
+#define CI_E_TIMEOUT                   0x8004181f
+#define CI_E_NOT_RUNNING               0x80041820
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/clusapi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/clusapi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/clusapi.h	(revision 16410)
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2006 James Hawkins
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_CLUSAPI_H
+#define __WINE_CLUSAPI_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+DWORD WINAPI GetNodeClusterState(LPCWSTR lpszNodeName, LPDWORD pdwClusterState);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_CLUSAPI_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/comcat.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/comcat.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/comcat.idl	(revision 16410)
@@ -0,0 +1,232 @@
+/*
+ * Copyright 2002 John K. Hohm
+ * Copyright 2003 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef DO_NO_IMPORTS
+import "unknwn.idl";
+#endif
+
+/*****************************************************************************
+ * Types
+ */
+typedef GUID CATID;
+typedef REFGUID REFCATID;
+cpp_quote("#define CATID_NULL GUID_NULL")
+cpp_quote("#define IsEqualCATID(rcatid1, rcatid2) IsEqualGUID(rcatid1, rcatid2)")
+
+/*****************************************************************************
+ * Aliases for EnumGUID
+ */
+#define IEnumCATID IEnumGUID
+cpp_quote("#define IEnumCATID IEnumGUID")
+cpp_quote("#define IID_IEnumCATID IID_IEnumGUID")
+cpp_quote("#define LPENUMCATID LPENUMGUID")
+#define IEnumCLSID IEnumGUID
+cpp_quote("#define IEnumCLSID IEnumGUID")
+cpp_quote("#define IID_IEnumCLSID IID_IEnumGUID")
+cpp_quote("#define LPENUMCLSID LPENUMGUID")
+
+
+/*****************************************************************************
+ * IEnumGUID
+ */
+[
+    object,
+    uuid(0002e000-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IEnumGUID : IUnknown
+{
+    typedef [unique] IEnumGUID *LPENUMGUID;
+
+    HRESULT Next(
+        [in] ULONG celt,
+        [out, size_is(celt), length_is(*pceltFetched)] GUID *rgelt,
+        [out] ULONG *pceltFetched);
+
+    HRESULT Skip(
+        [in] ULONG celt);
+
+    HRESULT Reset();
+
+    HRESULT Clone(
+        [out] IEnumGUID **ppenum);
+}
+
+
+/*****************************************************************************
+ * IEnumCATEGORYINFO
+ */
+[
+    object,
+    uuid(0002e011-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IEnumCATEGORYINFO : IUnknown
+{
+    typedef [unique] IEnumCATEGORYINFO *LPENUMCATEGORYINFO;
+
+    typedef struct tagCATEGORYINFO
+    {
+        CATID   catid;              /* category identifier for component */
+        LCID    lcid;               /* locale identifier */
+        OLECHAR szDescription[128]; /* description of the category */
+    } CATEGORYINFO, *LPCATEGORYINFO;
+
+    HRESULT Next(
+        [in] ULONG celt,
+        [out, size_is(celt), length_is(*pceltFetched)] CATEGORYINFO* rgelt,
+        [out] ULONG* pceltFetched);
+
+    HRESULT Skip(
+        [in] ULONG celt);
+
+    HRESULT Reset();
+
+    HRESULT Clone(
+        [out] IEnumCATEGORYINFO** ppenum);
+}
+
+
+/*****************************************************************************
+ * ICatInformation
+ */
+[
+    object,
+    uuid(0002e013-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface ICatInformation : IUnknown
+{
+    typedef [unique] ICatInformation* LPCATINFORMATION;
+
+    HRESULT EnumCategories(
+        [in] LCID lcid,
+        [out] IEnumCATEGORYINFO** ppenumCategoryInfo);
+
+    HRESULT GetCategoryDesc(
+        [in] REFCATID rcatid,
+        [in] LCID lcid,
+        [out] LPWSTR* pszDesc);
+
+    [local]
+    HRESULT EnumClassesOfCategories(
+        [in] ULONG cImplemented,
+        [in,size_is(cImplemented)] CATID rgcatidImpl[],
+        [in] ULONG cRequired,
+        [in,size_is(cRequired)] CATID rgcatidReq[],
+        [out] IEnumCLSID** ppenumClsid);
+
+    [call_as(EnumClassesOfCategories)]
+    HRESULT RemoteEnumClassesOfCategories(
+        [in] ULONG cImplemented,
+        [in,unique,size_is(cImplemented)] CATID rgcatidImpl[],
+        [in] ULONG cRequired,
+        [in,unique,size_is(cRequired)] CATID rgcatidReq[],
+        [out] IEnumCLSID** ppenumClsid);
+
+    [local]
+    HRESULT IsClassOfCategories(
+        [in] REFCLSID rclsid,
+        [in] ULONG cImplemented,
+        [in,size_is(cImplemented)] CATID rgcatidImpl[],
+        [in] ULONG cRequired,
+        [in,size_is(cRequired)] CATID rgcatidReq[]);
+
+    [call_as(IsClassOfCategories)]
+    HRESULT RemoteIsClassOfCategories(
+        [in] REFCLSID rclsid,
+        [in] ULONG cImplemented,
+        [in,unique,size_is(cImplemented)] CATID rgcatidImpl[],
+        [in] ULONG cRequired,
+        [in,unique,size_is(cRequired)] CATID rgcatidReq[] );
+
+    HRESULT EnumImplCategoriesOfClass(
+        [in] REFCLSID rclsid,
+        [out] IEnumCATID** ppenumCatid);
+
+    HRESULT EnumReqCategoriesOfClass(
+        [in] REFCLSID rclsid,
+        [out] IEnumCATID** ppenumCatid);
+}
+
+
+/*****************************************************************************
+ * ICatRegister
+ */
+[
+    object,
+    uuid(0002e012-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface ICatRegister : IUnknown
+{
+    typedef [unique] ICatRegister* LPCATREGISTER;
+
+    HRESULT RegisterCategories(
+        [in] ULONG cCategories,
+        [in, size_is(cCategories)] CATEGORYINFO rgCategoryInfo[]);
+
+    HRESULT UnRegisterCategories(
+        [in] ULONG cCategories,
+        [in, size_is(cCategories)] CATID rgcatid[]);
+
+    HRESULT RegisterClassImplCategories(
+        [in] REFCLSID rclsid,
+        [in] ULONG cCategories,
+        [in, size_is(cCategories)] CATID rgcatid[]);
+
+    HRESULT UnRegisterClassImplCategories(
+        [in] REFCLSID rclsid,
+        [in] ULONG cCategories,
+        [in, size_is(cCategories)] CATID rgcatid[]);
+
+    HRESULT RegisterClassReqCategories(
+        [in] REFCLSID rclsid,
+        [in] ULONG cCategories,
+        [in, size_is(cCategories)] CATID rgcatid[]);
+
+    HRESULT UnRegisterClassReqCategories(
+        [in] REFCLSID rclsid,
+        [in] ULONG cCategories,
+        [in, size_is(cCategories)] CATID rgcatid[]);
+}
+
+
+/*****************************************************************************
+ * Category IDs
+ */
+cpp_quote("DEFINE_GUID( CATID_Insertable, 0x40fc6ed3, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02);")
+cpp_quote("DEFINE_GUID( CATID_Control, 0x40fc6ed4, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02);")
+cpp_quote("DEFINE_GUID( CATID_Programmable, 0x40fc6ed5, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02);")
+cpp_quote("DEFINE_GUID( CATID_IsShortcut, 0x40fc6ed6, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02);")
+cpp_quote("DEFINE_GUID( CATID_NeverShowExt, 0x40fc6ed7, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02);")
+cpp_quote("DEFINE_GUID( CATID_DocObject, 0x40fc6ed8, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02);")
+cpp_quote("DEFINE_GUID( CATID_Printable, 0x40fc6ed9, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02);")
+cpp_quote("DEFINE_GUID( CATID_RequiresDataPathHost, 0x0de86a50, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52);")
+cpp_quote("DEFINE_GUID( CATID_PersistsToMoniker, 0x0de86a51, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52);")
+cpp_quote("DEFINE_GUID( CATID_PersistsToStorage, 0x0de86a52, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52);")
+cpp_quote("DEFINE_GUID( CATID_PersistsToStreamInit, 0x0de86a53, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52);")
+cpp_quote("DEFINE_GUID( CATID_PersistsToStream, 0x0de86a54, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52);")
+cpp_quote("DEFINE_GUID( CATID_PersistsToMemory, 0x0de86a55, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52);")
+cpp_quote("DEFINE_GUID( CATID_PersistsToFile, 0x0de86a56, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52);")
+cpp_quote("DEFINE_GUID( CATID_PersistsToPropertyBag, 0x0de86a57, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52);")
+cpp_quote("DEFINE_GUID( CATID_InternetAware, 0x0de86a58, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52);")
+cpp_quote("DEFINE_GUID( CATID_DesignTimeUIActivatableControl, 0xf2bb56d1, 0xdb07, 0x11d1, 0xaa, 0x6b, 0x00, 0x60, 0x97, 0xdb, 0x95, 0x39);")
+/* The Component Category Manager */
+cpp_quote("DEFINE_GUID(CLSID_StdComponentCategoriesMgr, 0x0002e005, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);")
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/commctrl.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/commctrl.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/commctrl.h	(revision 16410)
@@ -0,0 +1,5029 @@
+/*
+ * Common controls definitions
+ *
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_COMMCTRL_H
+#define __WINE_COMMCTRL_H
+
+#include <prsht.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+BOOL WINAPI ShowHideMenuCtl (HWND, UINT_PTR, LPINT);
+VOID WINAPI GetEffectiveClientRect (HWND, LPRECT, const INT*);
+VOID WINAPI InitCommonControls (VOID);
+
+typedef struct tagINITCOMMONCONTROLSEX {
+    DWORD dwSize;
+    DWORD dwICC;
+} INITCOMMONCONTROLSEX, *LPINITCOMMONCONTROLSEX;
+
+BOOL WINAPI InitCommonControlsEx (const INITCOMMONCONTROLSEX*);
+
+LANGID WINAPI GetMUILanguage (VOID);
+VOID WINAPI InitMUILanguage (LANGID uiLang);
+
+
+#define COMCTL32_VERSION                5  /* dll version */
+
+#ifndef _WIN32_IE
+#define _WIN32_IE 0x0400
+#endif
+
+#define ICC_LISTVIEW_CLASSES   0x00000001  /* listview, header */
+#define ICC_TREEVIEW_CLASSES   0x00000002  /* treeview, tooltips */
+#define ICC_BAR_CLASSES        0x00000004  /* toolbar, statusbar, trackbar, tooltips */
+#define ICC_TAB_CLASSES        0x00000008  /* tab, tooltips */
+#define ICC_UPDOWN_CLASS       0x00000010  /* updown */
+#define ICC_PROGRESS_CLASS     0x00000020  /* progress */
+#define ICC_HOTKEY_CLASS       0x00000040  /* hotkey */
+#define ICC_ANIMATE_CLASS      0x00000080  /* animate */
+#define ICC_WIN95_CLASSES      0x000000FF
+#define ICC_DATE_CLASSES       0x00000100  /* month picker, date picker, time picker, updown */
+#define ICC_USEREX_CLASSES     0x00000200  /* comboex */
+#define ICC_COOL_CLASSES       0x00000400  /* rebar (coolbar) */
+#define ICC_INTERNET_CLASSES   0x00000800  /* IP address, ... */
+#define ICC_PAGESCROLLER_CLASS 0x00001000  /* page scroller */
+#define ICC_NATIVEFNTCTL_CLASS 0x00002000  /* native font control ???*/
+#define ICC_STANDARD_CLASSES   0x00004000
+#define ICC_LINK_CLASS         0x00008000
+
+
+/* common control styles */
+#define CCS_TOP             0x00000001L
+#define CCS_NOMOVEY         0x00000002L
+#define CCS_BOTTOM          0x00000003L
+#define CCS_NORESIZE        0x00000004L
+#define CCS_NOPARENTALIGN   0x00000008L
+#define CCS_ADJUSTABLE      0x00000020L
+#define CCS_NODIVIDER       0x00000040L
+#define CCS_VERT            0x00000080L
+#define CCS_LEFT            (CCS_VERT|CCS_TOP)
+#define CCS_RIGHT           (CCS_VERT|CCS_BOTTOM)
+#define CCS_NOMOVEX         (CCS_VERT|CCS_NOMOVEY)
+
+
+/* common control shared messages */
+#define CCM_FIRST            0x2000
+
+#define CCM_SETBKCOLOR       (CCM_FIRST+0x1)     /* lParam = bkColor */
+#define CCM_SETCOLORSCHEME   (CCM_FIRST+0x2)     /* lParam = COLORSCHEME struct ptr */
+#define CCM_GETCOLORSCHEME   (CCM_FIRST+0x3)     /* lParam = COLORSCHEME struct ptr */
+#define CCM_GETDROPTARGET    (CCM_FIRST+0x4)
+#define CCM_SETUNICODEFORMAT (CCM_FIRST+0x5)
+#define CCM_GETUNICODEFORMAT (CCM_FIRST+0x6)
+#define CCM_SETVERSION       (CCM_FIRST+0x7)
+#define CCM_GETVERSION       (CCM_FIRST+0x8)
+#define CCM_SETNOTIFYWINDOW  (CCM_FIRST+0x9)     /* wParam = hwndParent */
+#define CCM_SETWINDOWTHEME   (CCM_FIRST+0xb)
+#define CCM_DPISCALE         (CCM_FIRST+0xc)
+
+
+/* common notification codes (WM_NOTIFY)*/
+#define NM_FIRST                (0U-  0U)
+#define NM_LAST                 (0U- 99U)
+#define NM_OUTOFMEMORY          (NM_FIRST-1)
+#define NM_CLICK                (NM_FIRST-2)
+#define NM_DBLCLK               (NM_FIRST-3)
+#define NM_RETURN               (NM_FIRST-4)
+#define NM_RCLICK               (NM_FIRST-5)
+#define NM_RDBLCLK              (NM_FIRST-6)
+#define NM_SETFOCUS             (NM_FIRST-7)
+#define NM_KILLFOCUS            (NM_FIRST-8)
+#define NM_CUSTOMDRAW           (NM_FIRST-12)
+#define NM_HOVER                (NM_FIRST-13)
+#define NM_NCHITTEST            (NM_FIRST-14)
+#define NM_KEYDOWN              (NM_FIRST-15)
+#define NM_RELEASEDCAPTURE      (NM_FIRST-16)
+#define NM_SETCURSOR            (NM_FIRST-17)
+#define NM_CHAR                 (NM_FIRST-18)
+#define NM_TOOLTIPSCREATED      (NM_FIRST-19)
+#define NM_LDOWN                (NM_FIRST-20)
+#define NM_RDOWN                (NM_FIRST-21)
+#define NM_THEMECHANGED         (NM_FIRST-22)
+#define NM_FONTCHANGED          (NM_FIRST-23)
+#define NM_CUSTOMTEXT           (NM_FIRST-24)
+#define NM_TVSTATEIMAGECHANGING (NM_FIRST-24)
+
+#define HANDLE_WM_NOTIFY(hwnd, wParam, lParam, fn) \
+    (fn)((hwnd), (int)(wParam), (NMHDR*)(lParam))
+#define FORWARD_WM_NOTIFY(hwnd, idFrom, pnmhdr, fn) \
+    (LRESULT)(fn)((hwnd), WM_NOTIFY, (WPARAM)(int)(idFrom), (LPARAM)(NMHDR*)(pnmhdr))
+
+
+/* callback constants */
+#define LPSTR_TEXTCALLBACKA    ((LPSTR)-1L)
+#define LPSTR_TEXTCALLBACKW    ((LPWSTR)-1L)
+#define LPSTR_TEXTCALLBACK WINELIB_NAME_AW(LPSTR_TEXTCALLBACK)
+
+#define I_IMAGECALLBACK          (-1)
+#define I_IMAGENONE              (-2)
+#define I_INDENTCALLBACK         (-1)
+#define I_CHILDRENCALLBACK       (-1)
+#define I_GROUPIDCALLBACK        (-1)
+#define I_GROUPIDNONE            (-2)
+#define I_COLUMNSCALLBACK        ((UINT)-1)
+
+/* owner drawn types */
+#define ODT_HEADER      100
+#define ODT_TAB         101
+#define ODT_LISTVIEW    102
+
+/* common notification structures */
+typedef struct tagNMTOOLTIPSCREATED
+{
+    NMHDR  hdr;
+    HWND hwndToolTips;
+} NMTOOLTIPSCREATED, *LPNMTOOLTIPSCREATED;
+
+typedef struct tagNMMOUSE
+{
+    NMHDR   hdr;
+    DWORD_PTR   dwItemSpec;
+    DWORD_PTR   dwItemData;
+    POINT   pt;
+    DWORD   dwHitInfo;   /* info where on item or control the mouse is */
+} NMMOUSE, *LPNMMOUSE;
+
+typedef struct tagNMOBJECTNOTIFY
+{
+    NMHDR   hdr;
+    int     iItem;
+#ifdef __IID_DEFINED__
+    const IID *piid;
+#else
+    const void *piid;
+#endif
+    void    *pObject;
+    HRESULT hResult;
+    DWORD   dwFlags;
+} NMOBJECTNOTIFY, *LPNMOBJECTNOTIFY;
+
+typedef struct tagNMKEY
+{
+    NMHDR   hdr;
+    UINT    nVKey;
+    UINT    uFlags;
+} NMKEY, *LPNMKEY;
+
+typedef struct tagNMCHAR
+{
+    NMHDR   hdr;
+    UINT    ch;
+    DWORD   dwItemPrev;           /* Item previously selected */
+    DWORD   dwItemNext;           /* Item to be selected */
+} NMCHAR, *LPNMCHAR;
+
+#ifndef CCSIZEOF_STRUCT
+#define CCSIZEOF_STRUCT(name, member) \
+    (((INT)((LPBYTE)(&((name*)0)->member)-((LPBYTE)((name*)0))))+ \
+    sizeof(((name*)0)->member))
+#endif
+
+
+/* This is only for Winelib applications. DON't use it wine itself!!! */
+#ifndef SNDMSG
+#ifdef __cplusplus
+#define SNDMSG ::SendMessage
+#else   /* __cplusplus */
+#define SNDMSG SendMessage
+#endif  /* __cplusplus */
+#endif  /* SNDMSG */
+
+
+#ifdef __cplusplus
+#define SNDMSGA ::SendMessageA
+#define SNDMSGW ::SendMessageW
+#else
+#define SNDMSGA SendMessageA
+#define SNDMSGW SendMessageW
+#endif
+
+/* Custom Draw messages */
+
+#define CDRF_DODEFAULT          0x0
+#define CDRF_NEWFONT            0x00000002
+#define CDRF_SKIPDEFAULT        0x00000004
+#define CDRF_NOTIFYPOSTPAINT    0x00000010
+#define CDRF_NOTIFYITEMDRAW     0x00000020
+#define CDRF_NOTIFYSUBITEMDRAW  0x00000020
+#define CDRF_NOTIFYPOSTERASE    0x00000040
+#define CDRF_NOTIFYITEMERASE    0x00000080      /*  obsolete ??? */
+
+
+/* drawstage flags */
+
+#define CDDS_PREPAINT           1
+#define CDDS_POSTPAINT          2
+#define CDDS_PREERASE           3
+#define CDDS_POSTERASE          4
+
+#define CDDS_ITEM		0x00010000
+#define CDDS_ITEMPREPAINT	(CDDS_ITEM | CDDS_PREPAINT)
+#define CDDS_ITEMPOSTPAINT	(CDDS_ITEM | CDDS_POSTPAINT)
+#define CDDS_ITEMPREERASE	(CDDS_ITEM | CDDS_PREERASE)
+#define CDDS_ITEMPOSTERASE	(CDDS_ITEM | CDDS_POSTERASE)
+#define CDDS_SUBITEM            0x00020000
+
+/* itemState flags */
+
+#define CDIS_SELECTED           0x0001
+#define CDIS_GRAYED             0x0002
+#define CDIS_DISABLED           0x0004
+#define CDIS_CHECKED            0x0008
+#define CDIS_FOCUS              0x0010
+#define CDIS_DEFAULT            0x0020
+#define CDIS_HOT                0x0040
+#define CDIS_MARKED             0x0080
+#define CDIS_INDETERMINATE      0x0100
+#define CDIS_SHOWKEYBOARDCUES   0x0200
+#define CDIS_NEARHOT            0x0400
+#define CDIS_OTHERSIDEHOT       0x0800
+#define CDIS_DROPHILITED        0x1000
+
+
+typedef struct tagNMCUSTOMDRAWINFO
+{
+	NMHDR	hdr;
+	DWORD	dwDrawStage;
+	HDC	hdc;
+	RECT	rc;
+	DWORD_PTR dwItemSpec;
+	UINT	uItemState;
+	LPARAM	lItemlParam;
+} NMCUSTOMDRAW, *LPNMCUSTOMDRAW;
+
+typedef struct tagNMTTCUSTOMDRAW
+{
+    NMCUSTOMDRAW nmcd;
+    UINT       uDrawFlags;
+} NMTTCUSTOMDRAW, *LPNMTTCUSTOMDRAW;
+
+
+
+
+/* StatusWindow */
+
+#define STATUSCLASSNAMEA	"msctls_statusbar32"
+#if defined(__GNUC__)
+# define STATUSCLASSNAMEW (const WCHAR []){ 'm','s','c','t','l','s','_', \
+  's','t','a','t','u','s','b','a','r','3','2',0 }
+#elif defined(_MSC_VER)
+# define STATUSCLASSNAMEW       L"msctls_statusbar32"
+#else
+static const WCHAR STATUSCLASSNAMEW[] = { 'm','s','c','t','l','s','_',
+  's','t','a','t','u','s','b','a','r','3','2',0 };
+#endif
+#define STATUSCLASSNAME		WINELIB_NAME_AW(STATUSCLASSNAME)
+
+#define SBT_NOBORDERS		0x0100
+#define SBT_POPOUT		0x0200
+#define SBT_RTLREADING		0x0400  /* not supported */
+#define SBT_TOOLTIPS		0x0800
+#define SBT_OWNERDRAW		0x1000
+
+#define SBARS_SIZEGRIP		0x0100
+
+#define SB_SIMPLEID		0x00ff
+
+#define SB_SETTEXTA		(WM_USER+1)
+#define SB_SETTEXTW		(WM_USER+11)
+#define SB_SETTEXT		WINELIB_NAME_AW(SB_SETTEXT)
+#define SB_GETTEXTA		(WM_USER+2)
+#define SB_GETTEXTW		(WM_USER+13)
+#define SB_GETTEXT		WINELIB_NAME_AW(SB_GETTEXT)
+#define SB_GETTEXTLENGTHA	(WM_USER+3)
+#define SB_GETTEXTLENGTHW	(WM_USER+12)
+#define SB_GETTEXTLENGTH	WINELIB_NAME_AW(SB_GETTEXTLENGTH)
+#define SB_SETPARTS		(WM_USER+4)
+#define SB_SETBORDERS		(WM_USER+5)
+#define SB_GETPARTS		(WM_USER+6)
+#define SB_GETBORDERS		(WM_USER+7)
+#define SB_SETMINHEIGHT		(WM_USER+8)
+#define SB_SIMPLE		(WM_USER+9)
+#define SB_GETRECT		(WM_USER+10)
+#define SB_ISSIMPLE		(WM_USER+14)
+#define SB_SETICON		(WM_USER+15)
+#define SB_SETTIPTEXTA		(WM_USER+16)
+#define SB_SETTIPTEXTW		(WM_USER+17)
+#define SB_SETTIPTEXT		WINELIB_NAME_AW(SB_SETTIPTEXT)
+#define SB_GETTIPTEXTA		(WM_USER+18)
+#define SB_GETTIPTEXTW		(WM_USER+19)
+#define SB_GETTIPTEXT		WINELIB_NAME_AW(SB_GETTIPTEXT)
+#define SB_GETICON		(WM_USER+20)
+#define SB_SETBKCOLOR		CCM_SETBKCOLOR   /* lParam = bkColor */
+#define SB_GETUNICODEFORMAT	CCM_GETUNICODEFORMAT
+#define SB_SETUNICODEFORMAT	CCM_SETUNICODEFORMAT
+
+#define SBN_FIRST		(0U-880U)
+#define SBN_LAST		(0U-899U)
+#define SBN_SIMPLEMODECHANGE	(SBN_FIRST-0)
+
+HWND WINAPI CreateStatusWindowA (LONG, LPCSTR, HWND, UINT);
+HWND WINAPI CreateStatusWindowW (LONG, LPCWSTR, HWND, UINT);
+#define CreateStatusWindow WINELIB_NAME_AW(CreateStatusWindow)
+VOID WINAPI DrawStatusTextA (HDC, LPCRECT, LPCSTR, UINT);
+VOID WINAPI DrawStatusTextW (HDC, LPCRECT, LPCWSTR, UINT);
+#define DrawStatusText WINELIB_NAME_AW(DrawStatusText)
+VOID WINAPI MenuHelp (UINT, WPARAM, LPARAM, HMENU,
+                      HINSTANCE, HWND, UINT*);
+
+typedef struct tagCOLORSCHEME
+{
+   DWORD            dwSize;
+   COLORREF         clrBtnHighlight;       /* highlight color */
+   COLORREF         clrBtnShadow;          /* shadow color */
+} COLORSCHEME, *LPCOLORSCHEME;
+
+/**************************************************************************
+ *  Drag List control
+ */
+
+typedef struct tagDRAGLISTINFO
+{
+    UINT  uNotification;
+    HWND  hWnd;
+    POINT ptCursor;
+} DRAGLISTINFO, *LPDRAGLISTINFO;
+
+#define DL_BEGINDRAG            (WM_USER+133)
+#define DL_DRAGGING             (WM_USER+134)
+#define DL_DROPPED              (WM_USER+135)
+#define DL_CANCELDRAG           (WM_USER+136)
+
+#define DL_CURSORSET            0
+#define DL_STOPCURSOR           1
+#define DL_COPYCURSOR           2
+#define DL_MOVECURSOR           3
+
+#define DRAGLISTMSGSTRINGA      "commctrl_DragListMsg"
+#if defined(__GNUC__)
+# define DRAGLISTMSGSTRINGW (const WCHAR []){ 'c','o','m','m','c','t','r','l', \
+  '_','D','r','a','g','L','i','s','t','M','s','g',0 }
+#elif defined(_MSC_VER)
+# define DRAGLISTMSGSTRINGW     L"commctrl_DragListMsg"
+#else
+static const WCHAR DRAGLISTMSGSTRINGW[] = { 'c','o','m','m','c','t','r','l',
+  '_','D','r','a','g','L','i','s','t','M','s','g',0 };
+#endif
+#define DRAGLISTMSGSTRING       WINELIB_NAME_AW(DRAGLISTMSGSTRING)
+
+BOOL WINAPI MakeDragList (HWND);
+VOID   WINAPI DrawInsert (HWND, HWND, INT);
+INT  WINAPI LBItemFromPt (HWND, POINT, BOOL);
+
+
+/* UpDown */
+
+#define UPDOWN_CLASSA           "msctls_updown32"
+#if defined(__GNUC__)
+# define UPDOWN_CLASSW (const WCHAR []){ 'm','s','c','t','l','s','_', \
+  'u','p','d','o','w','n','3','2',0 }
+#elif defined(_MSC_VER)
+# define UPDOWN_CLASSW          L"msctls_updown32"
+#else
+static const WCHAR UPDOWN_CLASSW[] = { 'm','s','c','t','l','s','_',
+  'u','p','d','o','w','n','3','2',0 };
+#endif
+#define UPDOWN_CLASS            WINELIB_NAME_AW(UPDOWN_CLASS)
+
+typedef struct _UDACCEL
+{
+    UINT nSec;
+    UINT nInc;
+} UDACCEL, *LPUDACCEL;
+
+#define UD_MAXVAL          0x7fff
+#define UD_MINVAL          0x8001
+
+#define UDS_WRAP           0x0001
+#define UDS_SETBUDDYINT    0x0002
+#define UDS_ALIGNRIGHT     0x0004
+#define UDS_ALIGNLEFT      0x0008
+#define UDS_AUTOBUDDY      0x0010
+#define UDS_ARROWKEYS      0x0020
+#define UDS_HORZ           0x0040
+#define UDS_NOTHOUSANDS    0x0080
+#define UDS_HOTTRACK       0x0100
+
+#define UDN_FIRST          (0U-721)
+#define UDN_LAST           (0U-740)
+#define UDN_DELTAPOS       (UDN_FIRST-1)
+
+#define UDM_SETRANGE       (WM_USER+101)
+#define UDM_GETRANGE       (WM_USER+102)
+#define UDM_SETPOS         (WM_USER+103)
+#define UDM_GETPOS         (WM_USER+104)
+#define UDM_SETBUDDY       (WM_USER+105)
+#define UDM_GETBUDDY       (WM_USER+106)
+#define UDM_SETACCEL       (WM_USER+107)
+#define UDM_GETACCEL       (WM_USER+108)
+#define UDM_SETBASE        (WM_USER+109)
+#define UDM_GETBASE        (WM_USER+110)
+#define UDM_SETRANGE32     (WM_USER+111)
+#define UDM_GETRANGE32     (WM_USER+112)
+#define UDM_SETUNICODEFORMAT    CCM_SETUNICODEFORMAT
+#define UDM_GETUNICODEFORMAT    CCM_GETUNICODEFORMAT
+#define UDM_SETPOS32       (WM_USER+113)
+#define UDM_GETPOS32       (WM_USER+114)
+
+
+#define NMUPDOWN    NM_UPDOWN
+#define LPNMUPDOWN  LPNM_UPDOWN
+
+typedef struct tagNM_UPDOWN
+{
+  NMHDR hdr;
+  int iPos;
+  int iDelta;
+} NM_UPDOWN, *LPNM_UPDOWN;
+
+HWND WINAPI CreateUpDownControl (DWORD, INT, INT, INT, INT,
+                                   HWND, INT, HINSTANCE, HWND,
+                                   INT, INT, INT);
+
+/* Progress Bar */
+
+#define PROGRESS_CLASSA   "msctls_progress32"
+#if defined(__GNUC__)
+# define PROGRESS_CLASSW (const WCHAR []){ 'm','s','c','t','l','s','_', \
+  'p','r','o','g','r','e','s','s','3','2',0 }
+#elif defined(_MSC_VER)
+# define PROGRESS_CLASSW  L"msctls_progress32"
+#else
+static const WCHAR PROGRESS_CLASSW[] = { 'm','s','c','t','l','s','_',
+  'p','r','o','g','r','e','s','s','3','2',0 };
+#endif
+#define PROGRESS_CLASS      WINELIB_NAME_AW(PROGRESS_CLASS)
+
+#define PBM_SETRANGE        (WM_USER+1)
+#define PBM_SETPOS          (WM_USER+2)
+#define PBM_DELTAPOS        (WM_USER+3)
+#define PBM_SETSTEP         (WM_USER+4)
+#define PBM_STEPIT          (WM_USER+5)
+#define PBM_SETRANGE32      (WM_USER+6)
+#define PBM_GETRANGE        (WM_USER+7)
+#define PBM_GETPOS          (WM_USER+8)
+#define PBM_SETBARCOLOR     (WM_USER+9)
+#define PBM_SETMARQUEE      (WM_USER+10)
+#define PBM_SETBKCOLOR      CCM_SETBKCOLOR
+
+#define PBS_SMOOTH          0x01
+#define PBS_VERTICAL        0x04
+#define PBS_MARQUEE         0x08
+
+typedef struct
+{
+    INT iLow;
+    INT iHigh;
+} PBRANGE, *PPBRANGE;
+
+
+/* ImageList */
+
+struct _IMAGELIST;
+typedef struct _IMAGELIST *HIMAGELIST;
+
+#define CLR_NONE         0xFFFFFFFF
+#define CLR_DEFAULT      0xFF000000
+#define CLR_HILIGHT      CLR_DEFAULT
+
+#define ILC_MASK          0x0001
+#define ILC_COLOR         0x0000
+#define ILC_COLORDDB      0x00FE
+#define ILC_COLOR4        0x0004
+#define ILC_COLOR8        0x0008
+#define ILC_COLOR16       0x0010
+#define ILC_COLOR24       0x0018
+#define ILC_COLOR32       0x0020
+#define ILC_PALETTE       0x0800  /* no longer supported by M$ */
+#define ILC_MIRROR        0x2000
+#define ILC_PERITEMMIRROR 0x8000
+
+#define ILD_NORMAL        0x0000
+#define ILD_TRANSPARENT   0x0001
+#define ILD_BLEND25       0x0002
+#define ILD_BLEND50       0x0004
+#define ILD_MASK          0x0010
+#define ILD_IMAGE         0x0020
+#define ILD_ROP           0x0040
+#define ILD_OVERLAYMASK   0x0F00
+#define ILD_PRESERVEALPHA 0x1000
+#define ILD_SCALE         0x2000
+#define ILD_DPISCALE      0x4000
+#define ILD_ASYNC         0x8000
+
+#define ILD_SELECTED     ILD_BLEND50
+#define ILD_FOCUS        ILD_BLEND25
+#define ILD_BLEND        ILD_BLEND50
+
+#define INDEXTOOVERLAYMASK(i)  ((i)<<8)
+#define INDEXTOSTATEIMAGEMASK(i) ((i)<<12)
+
+#define ILCF_MOVE        (0x00000000)
+#define ILCF_SWAP        (0x00000001)
+
+#define ILGT_NORMAL     0x0000
+#define ILGT_ASYNC      0x0001
+
+#define ILS_NORMAL	0x0000
+#define ILS_GLOW	0x0001
+#define ILS_SHADOW	0x0002
+#define ILS_SATURATE	0x0004
+#define ILS_ALPHA	0x0008
+
+typedef struct _IMAGEINFO
+{
+    HBITMAP hbmImage;
+    HBITMAP hbmMask;
+    INT     Unused1;
+    INT     Unused2;
+    RECT    rcImage;
+} IMAGEINFO, *LPIMAGEINFO;
+
+
+typedef struct _IMAGELISTDRAWPARAMS
+{
+    DWORD       cbSize;
+    HIMAGELIST  himl;
+    INT         i;
+    HDC         hdcDst;
+    INT         x;
+    INT         y;
+    INT         cx;
+    INT         cy;
+    INT         xBitmap;  /* x offest from the upperleft of bitmap */
+    INT         yBitmap;  /* y offset from the upperleft of bitmap */
+    COLORREF    rgbBk;
+    COLORREF    rgbFg;
+    UINT        fStyle;
+    DWORD       dwRop;
+    DWORD       fState;
+    DWORD       Frame;
+    DWORD       crEffect;
+} IMAGELISTDRAWPARAMS, *LPIMAGELISTDRAWPARAMS;
+
+
+INT      WINAPI ImageList_Add(HIMAGELIST,HBITMAP,HBITMAP);
+INT      WINAPI ImageList_AddMasked(HIMAGELIST,HBITMAP,COLORREF);
+BOOL     WINAPI ImageList_BeginDrag(HIMAGELIST,INT,INT,INT);
+BOOL     WINAPI ImageList_Copy(HIMAGELIST,INT,HIMAGELIST,INT,UINT);
+HIMAGELIST WINAPI ImageList_Create(INT,INT,UINT,INT,INT);
+BOOL     WINAPI ImageList_Destroy(HIMAGELIST);
+BOOL     WINAPI ImageList_DragEnter(HWND,INT,INT);
+BOOL     WINAPI ImageList_DragLeave(HWND);
+BOOL     WINAPI ImageList_DragMove(INT,INT);
+BOOL     WINAPI ImageList_DragShowNolock (BOOL);
+BOOL     WINAPI ImageList_Draw(HIMAGELIST,INT,HDC,INT,INT,UINT);
+BOOL     WINAPI ImageList_DrawEx(HIMAGELIST,INT,HDC,INT,INT,INT,
+                                   INT,COLORREF,COLORREF,UINT);
+BOOL     WINAPI ImageList_DrawIndirect(IMAGELISTDRAWPARAMS*);
+HIMAGELIST WINAPI ImageList_Duplicate(HIMAGELIST);
+VOID     WINAPI ImageList_EndDrag(VOID);
+COLORREF   WINAPI ImageList_GetBkColor(HIMAGELIST);
+HIMAGELIST WINAPI ImageList_GetDragImage(POINT*,POINT*);
+HICON    WINAPI ImageList_GetIcon(HIMAGELIST,INT,UINT);
+BOOL     WINAPI ImageList_GetIconSize(HIMAGELIST,INT*,INT*);
+INT      WINAPI ImageList_GetImageCount(HIMAGELIST);
+BOOL     WINAPI ImageList_GetImageInfo(HIMAGELIST,INT,IMAGEINFO*);
+BOOL     WINAPI ImageList_GetImageRect(HIMAGELIST,INT,LPRECT);
+HIMAGELIST WINAPI ImageList_LoadImageA(HINSTANCE,LPCSTR,INT,INT,
+                                         COLORREF,UINT,UINT);
+HIMAGELIST WINAPI ImageList_LoadImageW(HINSTANCE,LPCWSTR,INT,INT,
+                                         COLORREF,UINT,UINT);
+#define    ImageList_LoadImage WINELIB_NAME_AW(ImageList_LoadImage)
+HIMAGELIST WINAPI ImageList_Merge(HIMAGELIST,INT,HIMAGELIST,INT,INT,INT);
+BOOL     WINAPI ImageList_Remove(HIMAGELIST,INT);
+BOOL     WINAPI ImageList_Replace(HIMAGELIST,INT,HBITMAP,HBITMAP);
+INT      WINAPI ImageList_ReplaceIcon(HIMAGELIST,INT,HICON);
+COLORREF   WINAPI ImageList_SetBkColor(HIMAGELIST,COLORREF);
+BOOL     WINAPI ImageList_SetDragCursorImage(HIMAGELIST,INT,INT,INT);
+
+BOOL     WINAPI ImageList_SetIconSize(HIMAGELIST,INT,INT);
+BOOL     WINAPI ImageList_SetImageCount(HIMAGELIST,UINT);
+BOOL     WINAPI ImageList_SetOverlayImage(HIMAGELIST,INT,INT);
+
+#ifdef __IStream_INTERFACE_DEFINED__
+HIMAGELIST WINAPI ImageList_Read(LPSTREAM);
+BOOL     WINAPI ImageList_Write(HIMAGELIST, LPSTREAM);
+#endif
+
+#define ImageList_AddIcon(himl,hicon) ImageList_ReplaceIcon(himl,-1,hicon)
+#define ImageList_ExtractIcon(hi,himl,i) ImageList_GetIcon(himl,i,0)
+#define ImageList_LoadBitmap(hi,lpbmp,cx,cGrow,crMask) \
+  ImageList_LoadImage(hi,lpbmp,cx,cGrow,crMask,IMAGE_BITMAP,0)
+#define ImageList_RemoveAll(himl) ImageList_Remove(himl,-1)
+
+
+#ifndef WM_MOUSEHOVER
+#define WM_MOUSEHOVER                   0x02A1
+#define WM_MOUSELEAVE                   0x02A3
+#endif
+
+#ifndef TME_HOVER
+
+#define TME_HOVER       0x00000001
+#define TME_LEAVE       0x00000002
+#define TME_NONCLIENT   0x00000010
+#define TME_QUERY       0x40000000
+#define TME_CANCEL      0x80000000
+
+
+#define HOVER_DEFAULT   0xFFFFFFFF
+
+typedef struct tagTRACKMOUSEEVENT {
+    DWORD cbSize;
+    DWORD dwFlags;
+    HWND  hwndTrack;
+    DWORD dwHoverTime;
+} TRACKMOUSEEVENT, *LPTRACKMOUSEEVENT;
+
+#endif
+
+BOOL WINAPI _TrackMouseEvent(LPTRACKMOUSEEVENT lpEventTrack);
+
+/* Flat Scrollbar control */
+
+#define FLATSB_CLASSA         "flatsb_class32"
+#if defined(__GNUC__)
+# define FLATSB_CLASSW (const WCHAR []){ 'f','l','a','t','s','b','_', \
+  'c','l','a','s','s','3','2',0 }
+#elif defined(_MSC_VER)
+# define FLATSB_CLASSW        L"flatsb_class32"
+#else
+static const WCHAR FLATSB_CLASSW[] = { 'f','l','a','t','s','b','_',
+  'c','l','a','s','s','3','2',0 };
+#endif
+#define FLATSB_CLASS          WINELIB_NAME_AW(FLATSB_CLASS)
+
+#define WSB_PROP_CYVSCROLL     0x00000001L
+#define WSB_PROP_CXHSCROLL     0x00000002L
+#define WSB_PROP_CYHSCROLL     0x00000004L
+#define WSB_PROP_CXVSCROLL     0x00000008L
+#define WSB_PROP_CXHTHUMB      0x00000010L
+#define WSB_PROP_CYVTHUMB      0x00000020L
+#define WSB_PROP_VBKGCOLOR     0x00000040L
+#define WSB_PROP_HBKGCOLOR     0x00000080L
+#define WSB_PROP_VSTYLE        0x00000100L
+#define WSB_PROP_HSTYLE        0x00000200L
+#define WSB_PROP_WINSTYLE      0x00000400L
+#define WSB_PROP_PALETTE       0x00000800L
+#define WSB_PROP_MASK          0x00000FFFL
+
+#define FSB_REGULAR_MODE       0
+#define FSB_ENCARTA_MODE       1
+#define FSB_FLAT_MODE          2
+
+
+BOOL  WINAPI FlatSB_EnableScrollBar(HWND, INT, UINT);
+BOOL  WINAPI FlatSB_ShowScrollBar(HWND, INT, BOOL);
+BOOL  WINAPI FlatSB_GetScrollRange(HWND, INT, LPINT, LPINT);
+BOOL  WINAPI FlatSB_GetScrollInfo(HWND, INT, LPSCROLLINFO);
+INT   WINAPI FlatSB_GetScrollPos(HWND, INT);
+BOOL  WINAPI FlatSB_GetScrollProp(HWND, INT, LPINT);
+INT   WINAPI FlatSB_SetScrollPos(HWND, INT, INT, BOOL);
+INT   WINAPI FlatSB_SetScrollInfo(HWND, INT, LPSCROLLINFO, BOOL);
+INT   WINAPI FlatSB_SetScrollRange(HWND, INT, INT, INT, BOOL);
+BOOL  WINAPI FlatSB_SetScrollProp(HWND, UINT, INT, BOOL);
+BOOL  WINAPI InitializeFlatSB(HWND);
+HRESULT WINAPI UninitializeFlatSB(HWND);
+
+/* Subclassing stuff */
+typedef LRESULT (CALLBACK *SUBCLASSPROC)(HWND, UINT, WPARAM, LPARAM, UINT_PTR, DWORD_PTR);
+BOOL WINAPI SetWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR);
+BOOL WINAPI GetWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR*);
+BOOL WINAPI RemoveWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR);
+LRESULT WINAPI DefSubclassProc(HWND, UINT, WPARAM, LPARAM);
+
+int WINAPI DrawShadowText(HDC, LPCWSTR, UINT, RECT*, DWORD, COLORREF, COLORREF, int, int);
+
+/* Header control */
+
+#define WC_HEADERA		"SysHeader32"
+#if defined(__GNUC__)
+# define WC_HEADERW (const WCHAR []){ 'S','y','s','H','e','a','d','e','r','3','2',0 }
+#elif defined(_MSC_VER)
+# define WC_HEADERW             L"SysHeader32"
+#else
+static const WCHAR WC_HEADERW[] = { 'S','y','s','H','e','a','d','e','r','3','2',0 };
+#endif
+#define WC_HEADER		WINELIB_NAME_AW(WC_HEADER)
+
+#define HDS_HORZ                0x0000
+#define HDS_BUTTONS             0x0002
+#define HDS_HOTTRACK            0x0004
+#define HDS_HIDDEN              0x0008
+#define HDS_DRAGDROP            0x0040
+#define HDS_FULLDRAG            0x0080
+#define HDS_FILTERBAR           0x0100
+#define HDS_FLAT                0x0200
+#define HDS_CHECKBOXES          0x0400
+
+#define HDI_WIDTH               0x0001
+#define HDI_HEIGHT              HDI_WIDTH
+#define HDI_TEXT                0x0002
+#define HDI_FORMAT              0x0004
+#define HDI_LPARAM              0x0008
+#define HDI_BITMAP              0x0010
+#define HDI_IMAGE               0x0020
+#define HDI_DI_SETITEM          0x0040
+#define HDI_ORDER               0x0080
+#define HDI_FILTER              0x0100
+
+#define HDF_LEFT                0x0000
+#define HDF_RIGHT               0x0001
+#define HDF_CENTER              0x0002
+#define HDF_JUSTIFYMASK         0x0003
+#define HDF_RTLREADING          0x0004
+#define HDF_CHECKBOX            0x0040
+#define HDF_CHECKED             0x0080
+#define HDF_FIXEDWIDTH          0x0100
+#define HDF_SORTDOWN            0x0200
+#define HDF_SORTUP              0x0400
+#define HDF_IMAGE               0x0800
+#define HDF_BITMAP_ON_RIGHT     0x1000
+#define HDF_BITMAP              0x2000
+#define HDF_STRING              0x4000
+#define HDF_OWNERDRAW           0x8000
+
+#define HHT_NOWHERE             0x0001
+#define HHT_ONHEADER            0x0002
+#define HHT_ONDIVIDER           0x0004
+#define HHT_ONDIVOPEN           0x0008
+#define HHT_ONFILTER            0x0010
+#define HHT_ONFILTERBUTTON      0x0020
+#define HHT_ABOVE               0x0100
+#define HHT_BELOW               0x0200
+#define HHT_TORIGHT             0x0400
+#define HHT_TOLEFT              0x0800
+#define HHT_ONITEMSTATEICON     0x1000
+
+#define HDM_FIRST               0x1200
+#define HDM_GETITEMCOUNT        (HDM_FIRST+0)
+#define HDM_INSERTITEMA         (HDM_FIRST+1)
+#define HDM_INSERTITEMW         (HDM_FIRST+10)
+#define HDM_INSERTITEM		WINELIB_NAME_AW(HDM_INSERTITEM)
+#define HDM_DELETEITEM          (HDM_FIRST+2)
+#define HDM_GETITEMA            (HDM_FIRST+3)
+#define HDM_GETITEMW            (HDM_FIRST+11)
+#define HDM_GETITEM		WINELIB_NAME_AW(HDM_GETITEM)
+#define HDM_SETITEMA            (HDM_FIRST+4)
+#define HDM_SETITEMW            (HDM_FIRST+12)
+#define HDM_SETITEM		WINELIB_NAME_AW(HDM_SETITEM)
+#define HDM_LAYOUT              (HDM_FIRST+5)
+#define HDM_HITTEST             (HDM_FIRST+6)
+#define HDM_GETITEMRECT         (HDM_FIRST+7)
+#define HDM_SETIMAGELIST        (HDM_FIRST+8)
+#define HDM_GETIMAGELIST        (HDM_FIRST+9)
+
+#define HDM_ORDERTOINDEX        (HDM_FIRST+15)
+#define HDM_CREATEDRAGIMAGE     (HDM_FIRST+16)
+#define HDM_GETORDERARRAY       (HDM_FIRST+17)
+#define HDM_SETORDERARRAY       (HDM_FIRST+18)
+#define HDM_SETHOTDIVIDER       (HDM_FIRST+19)
+#define HDM_SETBITMAPMARGIN     (HDM_FIRST+20)
+#define HDM_GETBITMAPMARGIN     (HDM_FIRST+21)
+#define HDM_SETFILTERCHANGETIMEOUT (HDM_FIRST+22)
+#define HDM_EDITFILTER          (HDM_FIRST+23)
+#define HDM_CLEARFILTER         (HDM_FIRST+24)
+#define HDM_GETUNICODEFORMAT    CCM_GETUNICODEFORMAT
+#define HDM_SETUNICODEFORMAT    CCM_SETUNICODEFORMAT
+
+#define HDN_FIRST               (0U-300U)
+#define HDN_LAST                (0U-399U)
+#define HDN_ITEMCHANGINGA       (HDN_FIRST-0)
+#define HDN_ITEMCHANGINGW       (HDN_FIRST-20)
+#define HDN_ITEMCHANGING        WINELIB_NAME_AW(HDN_ITEMCHANGING)
+#define HDN_ITEMCHANGEDA        (HDN_FIRST-1)
+#define HDN_ITEMCHANGEDW        (HDN_FIRST-21)
+#define HDN_ITEMCHANGED         WINELIB_NAME_AW(HDN_ITEMCHANGED)
+#define HDN_ITEMCLICKA          (HDN_FIRST-2)
+#define HDN_ITEMCLICKW          (HDN_FIRST-22)
+#define HDN_ITEMCLICK           WINELIB_NAME_AW(HDN_ITEMCLICK)
+#define HDN_ITEMDBLCLICKA       (HDN_FIRST-3)
+#define HDN_ITEMDBLCLICKW       (HDN_FIRST-23)
+#define HDN_ITEMDBLCLICK        WINELIB_NAME_AW(HDN_ITEMDBLCLICK)
+#define HDN_DIVIDERDBLCLICKA    (HDN_FIRST-5)
+#define HDN_DIVIDERDBLCLICKW    (HDN_FIRST-25)
+#define HDN_DIVIDERDBLCLICK     WINELIB_NAME_AW(HDN_DIVIDERDBLCLICK)
+#define HDN_BEGINTRACKA         (HDN_FIRST-6)
+#define HDN_BEGINTRACKW         (HDN_FIRST-26)
+#define HDN_BEGINTRACK          WINELIB_NAME_AW(HDN_BEGINTRACK)
+#define HDN_ENDTRACKA           (HDN_FIRST-7)
+#define HDN_ENDTRACKW           (HDN_FIRST-27)
+#define HDN_ENDTRACK            WINELIB_NAME_AW(HDN_ENDTRACK)
+#define HDN_TRACKA              (HDN_FIRST-8)
+#define HDN_TRACKW              (HDN_FIRST-28)
+#define HDN_TRACK               WINELIB_NAME_AW(HDN_TRACK)
+#define HDN_GETDISPINFOA        (HDN_FIRST-9)
+#define HDN_GETDISPINFOW        (HDN_FIRST-29)
+#define HDN_GETDISPINFO         WINELIB_NAME_AW(HDN_GETDISPINFO)
+#define HDN_BEGINDRAG           (HDN_FIRST-10)
+#define HDN_ENDDRAG             (HDN_FIRST-11)
+#define HDN_FILTERCHANGE        (HDN_FIRST-12)
+#define HDN_FILTERBTNCLICK      (HDN_FIRST-13)
+#define HDN_BEGINFILTEREDIT     (HDN_FIRST-14)
+#define HDN_ENDFILTEREDIT       (HDN_FIRST-15)
+#define HDN_ITEMSTATEICONCLICK  (HDN_FIRST-16)
+#define HDN_ITEMKEYDOWN         (HDN_FIRST-17)
+
+typedef struct _HD_LAYOUT
+{
+    RECT      *prc;
+    WINDOWPOS *pwpos;
+} HDLAYOUT, *LPHDLAYOUT;
+
+#define HD_LAYOUT   HDLAYOUT
+
+typedef struct _HD_ITEMA
+{
+    UINT    mask;
+    INT     cxy;
+    LPSTR     pszText;
+    HBITMAP hbm;
+    INT     cchTextMax;
+    INT     fmt;
+    LPARAM    lParam;
+    INT     iImage;
+    INT     iOrder;
+    UINT    type;
+    LPVOID  pvFilter;
+} HDITEMA, *LPHDITEMA;
+
+typedef struct _HD_ITEMW
+{
+    UINT    mask;
+    INT     cxy;
+    LPWSTR    pszText;
+    HBITMAP hbm;
+    INT     cchTextMax;
+    INT     fmt;
+    LPARAM    lParam;
+    INT     iImage;
+    INT     iOrder;
+    UINT    type;
+    LPVOID  pvFilter;
+} HDITEMW, *LPHDITEMW;
+
+#define HDITEM   WINELIB_NAME_AW(HDITEM)
+#define LPHDITEM WINELIB_NAME_AW(LPHDITEM)
+#define HD_ITEM  HDITEM
+
+#define HDITEM_V1_SIZEA CCSIZEOF_STRUCT(HDITEMA, lParam)
+#define HDITEM_V1_SIZEW CCSIZEOF_STRUCT(HDITEMW, lParam)
+#define HDITEM_V1_SIZE WINELIB_NAME_AW(HDITEM_V1_SIZE)
+
+#define HDFT_ISSTRING      0x0000
+#define HDFT_ISNUMBER      0x0001
+#define HDFT_HASNOVALUE    0x8000
+
+typedef struct _HD_TEXTFILTERA
+{
+    LPSTR pszText;
+    INT cchTextMax;
+} HD_TEXTFILTERA, *LPHD_TEXTFILTERA;
+
+typedef struct _HD_TEXTFILTERW
+{
+    LPWSTR pszText;
+    INT cchTextMax;
+} HD_TEXTFILTERW, *LPHD_TEXTFILTERW;
+
+#define HD_TEXTFILTER WINELIB_NAME_AW(HD_TEXTFILTER)
+#define HDTEXTFILTER WINELIB_NAME_AW(HD_TEXTFILTER)
+#define LPHD_TEXTFILTER WINELIB_NAME_AW(LPHD_TEXTFILTER)
+#define LPHDTEXTFILTER WINELIB_NAME_AW(LPHD_TEXTFILTER)
+
+typedef struct _HD_HITTESTINFO
+{
+    POINT pt;
+    UINT  flags;
+    INT   iItem;
+} HDHITTESTINFO, *LPHDHITTESTINFO;
+
+#define HD_HITTESTINFO   HDHITTESTINFO
+
+typedef struct tagNMHEADERA
+{
+    NMHDR     hdr;
+    INT     iItem;
+    INT     iButton;
+    HDITEMA *pitem;
+} NMHEADERA, *LPNMHEADERA;
+
+typedef struct tagNMHEADERW
+{
+    NMHDR     hdr;
+    INT     iItem;
+    INT     iButton;
+    HDITEMW *pitem;
+} NMHEADERW, *LPNMHEADERW;
+
+#define NMHEADER		WINELIB_NAME_AW(NMHEADER)
+#define LPNMHEADER		WINELIB_NAME_AW(LPNMHEADER)
+#define HD_NOTIFY               NMHEADER
+
+typedef struct tagNMHDDISPINFOA
+{
+    NMHDR     hdr;
+    INT     iItem;
+    UINT    mask;
+    LPSTR     pszText;
+    INT     cchTextMax;
+    INT     iImage;
+    LPARAM    lParam;
+} NMHDDISPINFOA, *LPNMHDDISPINFOA;
+
+typedef struct tagNMHDDISPINFOW
+{
+    NMHDR     hdr;
+    INT     iItem;
+    UINT    mask;
+    LPWSTR    pszText;
+    INT     cchTextMax;
+    INT     iImage;
+    LPARAM    lParam;
+} NMHDDISPINFOW, *LPNMHDDISPINFOW;
+
+#define NMHDDISPINFO		WINELIB_NAME_AW(NMHDDISPINFO)
+#define LPNMHDDISPINFO		WINELIB_NAME_AW(LPNMHDDISPINFO)
+
+typedef struct tagNMHDFILTERBTNCLICK
+{
+    NMHDR hdr;
+    INT iItem;
+    RECT rc;
+} NMHDFILTERBTNCLICK, *LPNMHDFILTERBTNCLICK;
+
+#define Header_GetItemCount(hwndHD) \
+  (INT)SNDMSGA((hwndHD),HDM_GETITEMCOUNT,0,0L)
+#define Header_InsertItemA(hwndHD,i,phdi) \
+  (INT)SNDMSGA((hwndHD),HDM_INSERTITEMA,(WPARAM)(INT)(i),(LPARAM)(const HDITEMA*)(phdi))
+#define Header_InsertItemW(hwndHD,i,phdi) \
+  (INT)SNDMSGW((hwndHD),HDM_INSERTITEMW,(WPARAM)(INT)(i),(LPARAM)(const HDITEMW*)(phdi))
+#define Header_InsertItem WINELIB_NAME_AW(Header_InsertItem)
+#define Header_DeleteItem(hwndHD,i) \
+  (BOOL)SNDMSGA((hwndHD),HDM_DELETEITEM,(WPARAM)(INT)(i),0L)
+#define Header_GetItemA(hwndHD,i,phdi) \
+  (BOOL)SNDMSGA((hwndHD),HDM_GETITEMA,(WPARAM)(INT)(i),(LPARAM)(HDITEMA*)(phdi))
+#define Header_GetItemW(hwndHD,i,phdi) \
+  (BOOL)SNDMSGW((hwndHD),HDM_GETITEMW,(WPARAM)(INT)(i),(LPARAM)(HDITEMW*)(phdi))
+#define Header_GetItem WINELIB_NAME_AW(Header_GetItem)
+#define Header_SetItemA(hwndHD,i,phdi) \
+  (BOOL)SNDMSGA((hwndHD),HDM_SETITEMA,(WPARAM)(INT)(i),(LPARAM)(const HDITEMA*)(phdi))
+#define Header_SetItemW(hwndHD,i,phdi) \
+  (BOOL)SNDMSGW((hwndHD),HDM_SETITEMW,(WPARAM)(INT)(i),(LPARAM)(const HDITEMW*)(phdi))
+#define Header_SetItem WINELIB_NAME_AW(Header_SetItem)
+#define Header_Layout(hwndHD,playout) \
+  (BOOL)SNDMSGA((hwndHD),HDM_LAYOUT,0,(LPARAM)(LPHDLAYOUT)(playout))
+#define Header_GetItemRect(hwnd,iItem,lprc) \
+  (BOOL)SNDMSGA((hwnd),HDM_GETITEMRECT,(WPARAM)iItem,(LPARAM)lprc)
+#define Header_SetImageList(hwnd,himl) \
+  (HIMAGELIST)SNDMSGA((hwnd),HDM_SETIMAGELIST,0,(LPARAM)himl)
+#define Header_GetImageList(hwnd) \
+  (HIMAGELIST)SNDMSGA((hwnd),HDM_GETIMAGELIST,0,0)
+#define Header_OrderToIndex(hwnd,i) \
+  (INT)SNDMSGA((hwnd),HDM_ORDERTOINDEX,(WPARAM)i,0)
+#define Header_CreateDragImage(hwnd,i) \
+  (HIMAGELIST)SNDMSGA((hwnd),HDM_CREATEDRAGIMAGE,(WPARAM)i,0)
+#define Header_GetOrderArray(hwnd,iCount,lpi) \
+  (BOOL)SNDMSGA((hwnd),HDM_GETORDERARRAY,(WPARAM)iCount,(LPARAM)lpi)
+#define Header_SetOrderArray(hwnd,iCount,lpi) \
+  (BOOL)SNDMSGA((hwnd),HDM_SETORDERARRAY,(WPARAM)iCount,(LPARAM)lpi)
+#define Header_SetHotDivider(hwnd,fPos,dw) \
+  (INT)SNDMSGA((hwnd),HDM_SETHOTDIVIDER,(WPARAM)fPos,(LPARAM)dw)
+#define Header_SetUnicodeFormat(hwnd,fUnicode) \
+  (BOOL)SNDMSGA((hwnd),HDM_SETUNICODEFORMAT,(WPARAM)(fUnicode),0)
+#define Header_GetUnicodeFormat(hwnd) \
+  (BOOL)SNDMSGA((hwnd),HDM_GETUNICODEFORMAT,0,0)
+
+/* Win32 5.1 Button Theme */
+#define WC_BUTTONA       "Button"
+#if defined(__GNUC__)
+# define WC_BUTTONW (const WCHAR []){ 'B','u','t','t','o','n',0 }
+#elif defined(_MSC_VER)
+# define WC_BUTTONW      L"Button"
+#else
+static const WCHAR WC_BUTTONW[] = { 'B','u','t','t','o','n',0 };
+#endif
+#define WC_BUTTON WINELIB_NAME_AW(WC_BUTTON)
+
+#define BCN_FIRST               (0U-1250U)
+#define BCN_LAST                (0U-1350U)
+
+#define BCN_HOTITEMCHANGE       (BCN_FIRST + 0x0001)
+
+typedef struct tagNMBCHOTITEM
+{
+  NMHDR hdr;
+  DWORD dwFlags;
+} NMBCHOTITEM, *LPNMBCHOTITEM;
+
+#define BST_HOT                 0x0200
+
+/* Toolbar */
+
+#define TOOLBARCLASSNAMEA       "ToolbarWindow32"
+#if defined(__GNUC__)
+# define TOOLBARCLASSNAMEW (const WCHAR []){ 'T','o','o','l','b','a','r', \
+  'W','i','n','d','o','w','3','2',0 }
+#elif defined(_MSC_VER)
+# define TOOLBARCLASSNAMEW      L"ToolbarWindow32"
+#else
+static const WCHAR TOOLBARCLASSNAMEW[] = { 'T','o','o','l','b','a','r',
+  'W','i','n','d','o','w','3','2',0 };
+#endif
+#define TOOLBARCLASSNAME WINELIB_NAME_AW(TOOLBARCLASSNAME)
+
+#define CMB_MASKED              0x02
+
+#define TBSTATE_CHECKED         0x01
+#define TBSTATE_PRESSED         0x02
+#define TBSTATE_ENABLED         0x04
+#define TBSTATE_HIDDEN          0x08
+#define TBSTATE_INDETERMINATE   0x10
+#define TBSTATE_WRAP            0x20
+#define TBSTATE_ELLIPSES        0x40
+#define TBSTATE_MARKED          0x80
+
+
+/* as of _WIN32_IE >= 0x0500 the following symbols are obsolete,
+ * "everyone" should use the BTNS_... stuff below
+ */
+#define TBSTYLE_BUTTON          0x00
+#define TBSTYLE_SEP             0x01
+#define TBSTYLE_CHECK           0x02
+#define TBSTYLE_GROUP           0x04
+#define TBSTYLE_CHECKGROUP      (TBSTYLE_GROUP | TBSTYLE_CHECK)
+#define TBSTYLE_DROPDOWN        0x08
+#define TBSTYLE_AUTOSIZE        0x10
+#define TBSTYLE_NOPREFIX        0x20
+#define BTNS_BUTTON             TBSTYLE_BUTTON
+#define BTNS_SEP                TBSTYLE_SEP
+#define BTNS_CHECK              TBSTYLE_CHECK
+#define BTNS_GROUP              TBSTYLE_GROUP
+#define BTNS_CHECKGROUP         TBSTYLE_CHECKGROUP
+#define BTNS_DROPDOWN           TBSTYLE_DROPDOWN
+#define BTNS_AUTOSIZE           TBSTYLE_AUTOSIZE
+#define BTNS_NOPREFIX           TBSTYLE_NOPREFIX
+#define BTNS_SHOWTEXT           0x40  /* ignored unless TBSTYLE_EX_MIXEDB set */
+#define BTNS_WHOLEDROPDOWN      0x80  /* draw dropdown arrow, but without split arrow section */
+
+#define TBSTYLE_TOOLTIPS        0x0100
+#define TBSTYLE_WRAPABLE        0x0200
+#define TBSTYLE_ALTDRAG         0x0400
+#define TBSTYLE_FLAT            0x0800
+#define TBSTYLE_LIST            0x1000
+#define TBSTYLE_CUSTOMERASE     0x2000
+#define TBSTYLE_REGISTERDROP    0x4000
+#define TBSTYLE_TRANSPARENT     0x8000
+#define TBSTYLE_EX_DRAWDDARROWS         0x00000001
+#define TBSTYLE_EX_UNDOC1               0x00000004 /* similar to TBSTYLE_WRAPABLE */
+#define TBSTYLE_EX_MIXEDBUTTONS         0x00000008
+#define TBSTYLE_EX_HIDECLIPPEDBUTTONS   0x00000010 /* don't show partially obscured buttons */
+#define TBSTYLE_EX_DOUBLEBUFFER         0x00000080 /* Double Buffer the toolbar ??? */
+
+#define TBIF_IMAGE              0x00000001
+#define TBIF_TEXT               0x00000002
+#define TBIF_STATE              0x00000004
+#define TBIF_STYLE              0x00000008
+#define TBIF_LPARAM             0x00000010
+#define TBIF_COMMAND            0x00000020
+#define TBIF_SIZE               0x00000040
+#define TBIF_BYINDEX            0x80000000
+
+#define TBBF_LARGE		0x0001
+
+#define TB_ENABLEBUTTON          (WM_USER+1)
+#define TB_CHECKBUTTON           (WM_USER+2)
+#define TB_PRESSBUTTON           (WM_USER+3)
+#define TB_HIDEBUTTON            (WM_USER+4)
+#define TB_INDETERMINATE         (WM_USER+5)
+#define TB_MARKBUTTON		 (WM_USER+6)
+#define TB_ISBUTTONENABLED       (WM_USER+9)
+#define TB_ISBUTTONCHECKED       (WM_USER+10)
+#define TB_ISBUTTONPRESSED       (WM_USER+11)
+#define TB_ISBUTTONHIDDEN        (WM_USER+12)
+#define TB_ISBUTTONINDETERMINATE (WM_USER+13)
+#define TB_ISBUTTONHIGHLIGHTED   (WM_USER+14)
+#define TB_SETSTATE              (WM_USER+17)
+#define TB_GETSTATE              (WM_USER+18)
+#define TB_ADDBITMAP             (WM_USER+19)
+#define TB_ADDBUTTONSA           (WM_USER+20)
+#define TB_ADDBUTTONSW           (WM_USER+68)
+#define TB_ADDBUTTONS            WINELIB_NAME_AW(TB_ADDBUTTONS)
+#define TB_HITTEST               (WM_USER+69)
+#define TB_INSERTBUTTONA         (WM_USER+21)
+#define TB_INSERTBUTTONW         (WM_USER+67)
+#define TB_INSERTBUTTON          WINELIB_NAME_AW(TB_INSERTBUTTON)
+#define TB_DELETEBUTTON          (WM_USER+22)
+#define TB_GETBUTTON             (WM_USER+23)
+#define TB_BUTTONCOUNT           (WM_USER+24)
+#define TB_COMMANDTOINDEX        (WM_USER+25)
+#define TB_SAVERESTOREA          (WM_USER+26)
+#define TB_SAVERESTOREW          (WM_USER+76)
+#define TB_SAVERESTORE           WINELIB_NAME_AW(TB_SAVERESTORE)
+#define TB_CUSTOMIZE             (WM_USER+27)
+#define TB_ADDSTRINGA            (WM_USER+28)
+#define TB_ADDSTRINGW            (WM_USER+77)
+#define TB_ADDSTRING             WINELIB_NAME_AW(TB_ADDSTRING)
+#define TB_GETITEMRECT           (WM_USER+29)
+#define TB_BUTTONSTRUCTSIZE      (WM_USER+30)
+#define TB_SETBUTTONSIZE         (WM_USER+31)
+#define TB_SETBITMAPSIZE         (WM_USER+32)
+#define TB_AUTOSIZE              (WM_USER+33)
+#define TB_GETTOOLTIPS           (WM_USER+35)
+#define TB_SETTOOLTIPS           (WM_USER+36)
+#define TB_SETPARENT             (WM_USER+37)
+#define TB_SETROWS               (WM_USER+39)
+#define TB_GETROWS               (WM_USER+40)
+#define TB_GETBITMAPFLAGS        (WM_USER+41)
+#define TB_SETCMDID              (WM_USER+42)
+#define TB_CHANGEBITMAP          (WM_USER+43)
+#define TB_GETBITMAP             (WM_USER+44)
+#define TB_GETBUTTONTEXTA        (WM_USER+45)
+#define TB_GETBUTTONTEXTW        (WM_USER+75)
+#define TB_GETBUTTONTEXT         WINELIB_NAME_AW(TB_GETBUTTONTEXT)
+#define TB_REPLACEBITMAP         (WM_USER+46)
+#define TB_SETINDENT             (WM_USER+47)
+#define TB_SETIMAGELIST          (WM_USER+48)
+#define TB_GETIMAGELIST          (WM_USER+49)
+#define TB_LOADIMAGES            (WM_USER+50)
+#define TB_GETRECT               (WM_USER+51) /* wParam is the Cmd instead of index */
+#define TB_SETHOTIMAGELIST       (WM_USER+52)
+#define TB_GETHOTIMAGELIST       (WM_USER+53)
+#define TB_SETDISABLEDIMAGELIST  (WM_USER+54)
+#define TB_GETDISABLEDIMAGELIST  (WM_USER+55)
+#define TB_SETSTYLE              (WM_USER+56)
+#define TB_GETSTYLE              (WM_USER+57)
+#define TB_GETBUTTONSIZE         (WM_USER+58)
+#define TB_SETBUTTONWIDTH        (WM_USER+59)
+#define TB_SETMAXTEXTROWS        (WM_USER+60)
+#define TB_GETTEXTROWS           (WM_USER+61)
+#define TB_GETOBJECT             (WM_USER+62)
+#define TB_GETBUTTONINFOW        (WM_USER+63)
+#define TB_GETBUTTONINFOA        (WM_USER+65)
+#define TB_GETBUTTONINFO         WINELIB_NAME_AW(TB_GETBUTTONINFO)
+#define TB_SETBUTTONINFOW        (WM_USER+64)
+#define TB_SETBUTTONINFOA        (WM_USER+66)
+#define TB_SETBUTTONINFO         WINELIB_NAME_AW(TB_SETBUTTONINFO)
+#define TB_SETDRAWTEXTFLAGS      (WM_USER+70)
+#define TB_GETHOTITEM            (WM_USER+71)
+#define TB_SETHOTITEM            (WM_USER+72)
+#define TB_SETANCHORHIGHLIGHT    (WM_USER+73)
+#define TB_GETANCHORHIGHLIGHT    (WM_USER+74)
+#define TB_MAPACCELERATORA       (WM_USER+78)
+#define TB_MAPACCELERATORW       (WM_USER+90)
+#define TB_MAPACCELERATOR        WINELIB_NAME_AW(TB_MAPACCELERATOR)
+#define TB_GETINSERTMARK         (WM_USER+79)
+#define TB_SETINSERTMARK         (WM_USER+80)
+#define TB_INSERTMARKHITTEST     (WM_USER+81)
+#define TB_MOVEBUTTON            (WM_USER+82)
+#define TB_GETMAXSIZE            (WM_USER+83)
+#define TB_SETEXTENDEDSTYLE      (WM_USER+84)
+#define TB_GETEXTENDEDSTYLE      (WM_USER+85)
+#define TB_GETPADDING            (WM_USER+86)
+#define TB_SETPADDING            (WM_USER+87)
+#define TB_SETINSERTMARKCOLOR    (WM_USER+88)
+#define TB_GETINSERTMARKCOLOR    (WM_USER+89)
+#define TB_SETCOLORSCHEME        CCM_SETCOLORSCHEME
+#define TB_GETCOLORSCHEME        CCM_GETCOLORSCHEME
+#define TB_SETUNICODEFORMAT      CCM_SETUNICODEFORMAT
+#define TB_GETUNICODEFORMAT      CCM_GETUNICODEFORMAT
+#define TB_GETSTRINGW            (WM_USER+91)
+#define TB_GETSTRINGA            (WM_USER+92)
+#define TB_GETSTRING             WINELIB_NAME_AW(TB_GETSTRING)
+
+/* undocumented messages in Toolbar */
+#define TB_UNKWN45D              (WM_USER+93)
+#define TB_UNKWN45E              (WM_USER+94)
+#define TB_UNKWN460              (WM_USER+96)
+#define TB_UNKWN462              (WM_USER+98)
+#define TB_UNKWN463              (WM_USER+99)
+#define TB_UNKWN464              (WM_USER+100)
+
+#define TB_GETMETRICS            (WM_USER+101)
+#define TB_SETMETRICS            (WM_USER+102)
+#define TB_SETWINDOWTHEME        CCM_SETWINDOWTHEME
+
+#define TBN_FIRST               (0U-700U)
+#define TBN_LAST                (0U-720U)
+#define TBN_GETBUTTONINFOA      (TBN_FIRST-0)
+#define TBN_GETBUTTONINFOW      (TBN_FIRST-20)
+#define TBN_GETBUTTONINFO       WINELIB_NAME_AW(TBN_GETBUTTONINFO)
+#define TBN_BEGINDRAG		(TBN_FIRST-1)
+#define TBN_ENDDRAG		(TBN_FIRST-2)
+#define TBN_BEGINADJUST		(TBN_FIRST-3)
+#define TBN_ENDADJUST		(TBN_FIRST-4)
+#define TBN_RESET		(TBN_FIRST-5)
+#define TBN_QUERYINSERT		(TBN_FIRST-6)
+#define TBN_QUERYDELETE		(TBN_FIRST-7)
+#define TBN_TOOLBARCHANGE	(TBN_FIRST-8)
+#define TBN_CUSTHELP		(TBN_FIRST-9)
+#define TBN_DROPDOWN		(TBN_FIRST-10)
+#define TBN_GETOBJECT		(TBN_FIRST-12)
+#define TBN_HOTITEMCHANGE	(TBN_FIRST-13)
+#define TBN_DRAGOUT		(TBN_FIRST-14)
+#define TBN_DELETINGBUTTON	(TBN_FIRST-15)
+#define TBN_GETDISPINFOA	(TBN_FIRST-16)
+#define TBN_GETDISPINFOW	(TBN_FIRST-17)
+#define TBN_GETDISPINFO		WINELIB_NAME_AW(TBN_GETDISPINFO)
+#define TBN_GETINFOTIPA         (TBN_FIRST-18)
+#define TBN_GETINFOTIPW         (TBN_FIRST-19)
+#define TBN_GETINFOTIP          WINELIB_NAME_AW(TBN_GETINFOTIP)
+#define TBN_RESTORE	        (TBN_FIRST-21)
+#define TBN_SAVE	        (TBN_FIRST-22)
+#define TBN_INITCUSTOMIZE	(TBN_FIRST-23)
+#define TBN_WRAPHOTITEM         (TBN_FIRST-24) /* this is undocumented and the name is a guess */
+#define TBNRF_HIDEHELP		0x00000001
+
+
+/* Return values from TBN_DROPDOWN */
+#define TBDDRET_DEFAULT  0
+#define TBDDRET_NODEFAULT  1
+#define TBDDRET_TREATPRESSED  2
+
+typedef struct _NMTBCUSTOMDRAW
+{
+    NMCUSTOMDRAW nmcd;
+    HBRUSH hbrMonoDither;
+    HBRUSH hbrLines;
+    HPEN hpenLines;
+    COLORREF clrText;
+    COLORREF clrMark;
+    COLORREF clrTextHighlight;
+    COLORREF clrBtnFace;
+    COLORREF clrBtnHighlight;
+    COLORREF clrHighlightHotTrack;
+    RECT rcText;
+    int nStringBkMode;
+    int nHLStringBkMode;
+    int iListGap;
+} NMTBCUSTOMDRAW, *LPNMTBCUSTOMDRAW;
+
+/* return flags for Toolbar NM_CUSTOMDRAW notifications */
+#define TBCDRF_NOEDGES        0x00010000  /* Don't draw button edges       */
+#define TBCDRF_HILITEHOTTRACK 0x00020000  /* Use color of the button bkgnd */
+                                          /* when hottracked               */
+#define TBCDRF_NOOFFSET       0x00040000  /* No offset button if pressed   */
+#define TBCDRF_NOMARK         0x00080000  /* Don't draw default highlight  */
+                                          /* for TBSTATE_MARKED            */
+#define TBCDRF_NOETCHEDEFFECT 0x00100000  /* No etched effect for          */
+                                          /* disabled items                */
+#define TBCDRF_BLENDICON      0x00200000  /* ILD_BLEND50 on the icon image */
+#define TBCDRF_NOBACKGROUND   0x00400000  /* ILD_BLEND50 on the icon image */
+#define TBCDRF_USECDCOLORS    0x00800000
+
+
+/* This is just for old CreateToolbar. */
+/* Don't use it in new programs. */
+typedef struct _OLDTBBUTTON {
+    INT iBitmap;
+    INT idCommand;
+    BYTE  fsState;
+    BYTE  fsStyle;
+    BYTE  bReserved[2];
+    DWORD dwData;
+} OLDTBBUTTON, *POLDTBBUTTON, *LPOLDTBBUTTON;
+typedef const OLDTBBUTTON *LPCOLDTBBUTTON;
+
+
+typedef struct _TBBUTTON {
+    INT iBitmap;
+    INT idCommand;
+    BYTE  fsState;
+    BYTE  fsStyle;
+#ifdef _WIN64
+    BYTE  bReserved[6];
+#else
+    BYTE  bReserved[2];
+#endif
+    DWORD_PTR dwData;
+    INT_PTR iString;
+} TBBUTTON, *PTBBUTTON, *LPTBBUTTON;
+typedef const TBBUTTON *LPCTBBUTTON;
+
+
+typedef struct _COLORMAP {
+    COLORREF from;
+    COLORREF to;
+} COLORMAP, *LPCOLORMAP;
+
+
+typedef struct tagTBADDBITMAP {
+    HINSTANCE hInst;
+    UINT_PTR  nID;
+} TBADDBITMAP, *LPTBADDBITMAP;
+
+#define HINST_COMMCTRL         ((HINSTANCE)-1)
+#define IDB_STD_SMALL_COLOR     0
+#define IDB_STD_LARGE_COLOR     1
+#define IDB_VIEW_SMALL_COLOR    4
+#define IDB_VIEW_LARGE_COLOR    5
+#define IDB_HIST_SMALL_COLOR    8
+#define IDB_HIST_LARGE_COLOR    9
+
+#define STD_CUT                 0
+#define STD_COPY                1
+#define STD_PASTE               2
+#define STD_UNDO                3
+#define STD_REDOW               4
+#define STD_DELETE              5
+#define STD_FILENEW             6
+#define STD_FILEOPEN            7
+#define STD_FILESAVE            8
+#define STD_PRINTPRE            9
+#define STD_PROPERTIES          10
+#define STD_HELP                11
+#define STD_FIND                12
+#define STD_REPLACE             13
+#define STD_PRINT               14
+
+#define VIEW_LARGEICONS         0
+#define VIEW_SMALLICONS         1
+#define VIEW_LIST               2
+#define VIEW_DETAILS            3
+#define VIEW_SORTNAME           4
+#define VIEW_SORTSIZE           5
+#define VIEW_SORTDATE           6
+#define VIEW_SORTTYPE           7
+#define VIEW_PARENTFOLDER       8
+#define VIEW_NETCONNECT         9
+#define VIEW_NETDISCONNECT      10
+#define VIEW_NEWFOLDER          11
+#define VIEW_VIEWMENU           12
+
+#define HIST_BACK               0
+#define HIST_FORWARD            1
+#define HIST_FAVORITES          2
+#define HIST_ADDTOFAVORITES     3
+#define HIST_VIEWTREE           4
+
+typedef struct tagTBSAVEPARAMSA {
+    HKEY   hkr;
+    LPCSTR pszSubKey;
+    LPCSTR pszValueName;
+} TBSAVEPARAMSA, *LPTBSAVEPARAMSA;
+
+typedef struct tagTBSAVEPARAMSW {
+    HKEY   hkr;
+    LPCWSTR pszSubKey;
+    LPCWSTR pszValueName;
+} TBSAVEPARAMSW, *LPTBSAVEPARAMSW;
+
+#define TBSAVEPARAMS   WINELIB_NAME_AW(TBSAVEPARAMS)
+#define LPTBSAVEPARAMS WINELIB_NAME_AW(LPTBSAVEPARAMS)
+
+typedef struct
+{
+    UINT cbSize;
+    DWORD  dwMask;
+    INT  idCommand;
+    INT  iImage;
+    BYTE   fsState;
+    BYTE   fsStyle;
+    WORD   cx;
+    DWORD_PTR lParam;
+    LPSTR  pszText;
+    INT  cchText;
+} TBBUTTONINFOA, *LPTBBUTTONINFOA;
+
+typedef struct
+{
+    UINT cbSize;
+    DWORD  dwMask;
+    INT  idCommand;
+    INT  iImage;
+    BYTE   fsState;
+    BYTE   fsStyle;
+    WORD   cx;
+    DWORD_PTR lParam;
+    LPWSTR pszText;
+    INT  cchText;
+} TBBUTTONINFOW, *LPTBBUTTONINFOW;
+
+#define TBBUTTONINFO   WINELIB_NAME_AW(TBBUTTONINFO)
+#define LPTBBUTTONINFO WINELIB_NAME_AW(LPTBBUTTONINFO)
+
+typedef struct tagNMTBHOTITEM
+{
+    NMHDR hdr;
+    int idOld;
+    int idNew;
+    DWORD dwFlags;
+} NMTBHOTITEM, *LPNMTBHOTITEM;
+
+typedef struct tagNMTBGETINFOTIPA
+{
+    NMHDR  hdr;
+    LPSTR  pszText;
+    INT  cchTextMax;
+    INT  iItem;
+    LPARAM lParam;
+} NMTBGETINFOTIPA, *LPNMTBGETINFOTIPA;
+
+typedef struct tagNMTBGETINFOTIPW
+{
+    NMHDR  hdr;
+    LPWSTR pszText;
+    INT  cchTextMax;
+    INT  iItem;
+    LPARAM lParam;
+} NMTBGETINFOTIPW, *LPNMTBGETINFOTIPW;
+
+#define NMTBGETINFOTIP   WINELIB_NAME_AW(NMTBGETINFOTIP)
+#define LPNMTBGETINFOTIP WINELIB_NAME_AW(LPNMTBGETINFOTIP)
+
+typedef struct
+{
+    NMHDR hdr;
+    DWORD dwMask;
+    int idCommand;
+    DWORD_PTR lParam;
+    int iImage;
+    LPSTR pszText;
+    int cchText;
+} NMTBDISPINFOA, *LPNMTBDISPINFOA;
+
+typedef struct
+{
+    NMHDR hdr;
+    DWORD dwMask;
+    int idCommand;
+    DWORD_PTR lParam;
+    int iImage;
+    LPWSTR pszText;
+    int cchText;
+} NMTBDISPINFOW, *LPNMTBDISPINFOW;
+
+#define NMTBDISPINFO WINELIB_NAME_AW(NMTBDISPINFO)
+#define LPNMTBDISPINFO WINELIB_NAME_AW(LPNMTBDISPINFO)
+
+/* contents of dwMask in the NMTBDISPINFO structure */
+#define TBNF_IMAGE     0x00000001
+#define TBNF_TEXT      0x00000002
+#define TBNF_DI_SETITEM  0x10000000
+
+
+typedef struct tagNMTOOLBARA
+{
+    NMHDR    hdr;
+    INT      iItem;
+    TBBUTTON tbButton;
+    INT      cchText;
+    LPSTR    pszText;
+    RECT     rcButton; /* Version 5.80 */
+} NMTOOLBARA, *LPNMTOOLBARA, TBNOTIFYA, *LPTBNOTIFYA;
+
+typedef struct tagNMTOOLBARW
+{
+    NMHDR    hdr;
+    INT      iItem;
+    TBBUTTON tbButton;
+    INT      cchText;
+    LPWSTR   pszText;
+    RECT     rcButton; /* Version 5.80 */
+} NMTOOLBARW, *LPNMTOOLBARW, TBNOTIFYW, *LPTBNOTIFYW;
+
+#define NMTOOLBAR   WINELIB_NAME_AW(NMTOOLBAR)
+#define LPNMTOOLBAR WINELIB_NAME_AW(LPNMTOOLBAR)
+#define TBNOTIFY    WINELIB_NAME_AW(TBNOTIFY)
+#define LPTBNOTIFY  WINELIB_NAME_AW(LPTBNOTIFY)
+
+typedef struct
+{
+	HINSTANCE hInstOld;
+	UINT_PTR  nIDOld;
+	HINSTANCE hInstNew;
+	UINT_PTR  nIDNew;
+	INT       nButtons;
+} TBREPLACEBITMAP, *LPTBREPLACEBITMAP;
+
+#define HICF_OTHER          0x00000000
+#define HICF_MOUSE          0x00000001   /* Triggered by mouse             */
+#define HICF_ARROWKEYS      0x00000002   /* Triggered by arrow keys        */
+#define HICF_ACCELERATOR    0x00000004   /* Triggered by accelerator       */
+#define HICF_DUPACCEL       0x00000008   /* This accelerator is not unique */
+#define HICF_ENTERING       0x00000010   /* idOld is invalid               */
+#define HICF_LEAVING        0x00000020   /* idNew is invalid               */
+#define HICF_RESELECT       0x00000040   /* hot item reselected            */
+#define HICF_LMOUSE         0x00000080   /* left mouse button selected     */
+#define HICF_TOGGLEDROPDOWN 0x00000100   /* Toggle button's dropdown state */
+
+typedef struct
+{
+    int   iButton;
+    DWORD dwFlags;
+} TBINSERTMARK, *LPTBINSERTMARK;
+#define TBIMHT_AFTER      0x00000001 /* TRUE = insert After iButton, otherwise before */
+#define TBIMHT_BACKGROUND 0x00000002 /* TRUE if and only if missed buttons completely */
+
+typedef struct tagNMTBSAVE
+{
+    NMHDR hdr;
+    DWORD* pData;
+    DWORD* pCurrent;
+    UINT cbData;
+    int iItem;
+    int cButtons;
+    TBBUTTON tbButton;
+} NMTBSAVE, *LPNMTBSAVE;
+
+typedef struct tagNMTBRESTORE
+{
+    NMHDR hdr;
+    DWORD* pData;
+    DWORD* pCurrent;
+    UINT cbData;
+    int iItem;
+    int cButtons;
+    int cbBytesPerRecord;
+    TBBUTTON tbButton;
+} NMTBRESTORE, *LPNMTBRESTORE;
+
+#define TBMF_PAD           0x00000001
+#define TBMF_BARPAD        0x00000002
+#define TBMF_BUTTONSPACING 0x00000004
+
+typedef struct
+{
+    UINT cbSize;
+    DWORD dwMask;
+    INT cxPad;
+    INT cyPad;
+    INT cxBarPad;
+    INT cyBarPad;
+    INT cxButtonSpacing;
+    INT cyButtonSpacing;
+} TBMETRICS, *LPTBMETRICS;
+
+/* these are undocumented and the names are guesses */
+typedef struct
+{
+    NMHDR hdr;
+    HWND hwndDialog;
+} NMTBINITCUSTOMIZE;
+
+typedef struct
+{
+    NMHDR hdr;
+    INT idNew;
+    INT iDirection; /* left is -1, right is 1 */
+    DWORD dwReason; /* HICF_* */
+} NMTBWRAPHOTITEM;
+
+
+HWND WINAPI
+CreateToolbar(HWND, DWORD, UINT, INT, HINSTANCE,
+              UINT, LPCTBBUTTON, INT);
+
+HWND WINAPI
+CreateToolbarEx(HWND, DWORD, UINT, INT,
+                HINSTANCE, UINT, LPCTBBUTTON,
+                INT, INT, INT, INT, INT, UINT);
+
+HBITMAP WINAPI
+CreateMappedBitmap (HINSTANCE, INT_PTR, UINT, LPCOLORMAP, INT);
+
+
+/* Tool tips */
+
+#define TOOLTIPS_CLASSA         "tooltips_class32"
+#if defined(__GNUC__)
+# define TOOLTIPS_CLASSW (const WCHAR []){ 't','o','o','l','t','i','p','s','_', \
+  'c','l','a','s','s','3','2',0 }
+#elif defined(_MSC_VER)
+# define TOOLTIPS_CLASSW        L"tooltips_class32"
+#else
+static const WCHAR TOOLTIPS_CLASSW[] = { 't','o','o','l','t','i','p','s','_',
+  'c','l','a','s','s','3','2',0 };
+#endif
+#define TOOLTIPS_CLASS          WINELIB_NAME_AW(TOOLTIPS_CLASS)
+
+#define INFOTIPSIZE             1024
+
+#define TTS_ALWAYSTIP           0x01
+#define TTS_NOPREFIX            0x02
+#define TTS_NOANIMATE           0x10
+#define TTS_NOFADE              0x20
+#define TTS_BALLOON             0x40
+#define TTS_CLOSE               0x80
+#define TTS_USEVISUALSTYLE      0x100
+
+#define TTF_IDISHWND            0x0001
+#define TTF_CENTERTIP           0x0002
+#define TTF_RTLREADING          0x0004
+#define TTF_SUBCLASS            0x0010
+#define TTF_TRACK               0x0020
+#define TTF_ABSOLUTE            0x0080
+#define TTF_TRANSPARENT         0x0100
+#define TTF_DI_SETITEM          0x8000  /* valid only on the TTN_NEEDTEXT callback */
+
+
+#define TTDT_AUTOMATIC          0
+#define TTDT_RESHOW             1
+#define TTDT_AUTOPOP            2
+#define TTDT_INITIAL            3
+
+
+#define TTI_NONE                0
+#define TTI_INFO                1
+#define TTI_WARNING             2
+#define TTI_ERROR               3
+
+
+#define TTM_ACTIVATE            (WM_USER+1)
+#define TTM_SETDELAYTIME        (WM_USER+3)
+#define TTM_ADDTOOLA            (WM_USER+4)
+#define TTM_ADDTOOLW            (WM_USER+50)
+#define TTM_ADDTOOL             WINELIB_NAME_AW(TTM_ADDTOOL)
+#define TTM_DELTOOLA            (WM_USER+5)
+#define TTM_DELTOOLW            (WM_USER+51)
+#define TTM_DELTOOL             WINELIB_NAME_AW(TTM_DELTOOL)
+#define TTM_NEWTOOLRECTA        (WM_USER+6)
+#define TTM_NEWTOOLRECTW        (WM_USER+52)
+#define TTM_NEWTOOLRECT         WINELIB_NAME_AW(TTM_NEWTOOLRECT)
+#define TTM_RELAYEVENT          (WM_USER+7)
+#define TTM_GETTOOLINFOA        (WM_USER+8)
+#define TTM_GETTOOLINFOW        (WM_USER+53)
+#define TTM_GETTOOLINFO         WINELIB_NAME_AW(TTM_GETTOOLINFO)
+#define TTM_SETTOOLINFOA        (WM_USER+9)
+#define TTM_SETTOOLINFOW        (WM_USER+54)
+#define TTM_SETTOOLINFO         WINELIB_NAME_AW(TTM_SETTOOLINFO)
+#define TTM_HITTESTA            (WM_USER+10)
+#define TTM_HITTESTW            (WM_USER+55)
+#define TTM_HITTEST             WINELIB_NAME_AW(TTM_HITTEST)
+#define TTM_GETTEXTA            (WM_USER+11)
+#define TTM_GETTEXTW            (WM_USER+56)
+#define TTM_GETTEXT             WINELIB_NAME_AW(TTM_GETTEXT)
+#define TTM_UPDATETIPTEXTA      (WM_USER+12)
+#define TTM_UPDATETIPTEXTW      (WM_USER+57)
+#define TTM_UPDATETIPTEXT       WINELIB_NAME_AW(TTM_UPDATETIPTEXT)
+#define TTM_GETTOOLCOUNT        (WM_USER+13)
+#define TTM_ENUMTOOLSA          (WM_USER+14)
+#define TTM_ENUMTOOLSW          (WM_USER+58)
+#define TTM_ENUMTOOLS           WINELIB_NAME_AW(TTM_ENUMTOOLS)
+#define TTM_GETCURRENTTOOLA     (WM_USER+15)
+#define TTM_GETCURRENTTOOLW     (WM_USER+59)
+#define TTM_GETCURRENTTOOL      WINELIB_NAME_AW(TTM_GETCURRENTTOOL)
+#define TTM_WINDOWFROMPOINT     (WM_USER+16)
+#define TTM_TRACKACTIVATE       (WM_USER+17)
+#define TTM_TRACKPOSITION       (WM_USER+18)
+#define TTM_SETTIPBKCOLOR       (WM_USER+19)
+#define TTM_SETTIPTEXTCOLOR     (WM_USER+20)
+#define TTM_GETDELAYTIME        (WM_USER+21)
+#define TTM_GETTIPBKCOLOR       (WM_USER+22)
+#define TTM_GETTIPTEXTCOLOR     (WM_USER+23)
+#define TTM_SETMAXTIPWIDTH      (WM_USER+24)
+#define TTM_GETMAXTIPWIDTH      (WM_USER+25)
+#define TTM_SETMARGIN           (WM_USER+26)
+#define TTM_GETMARGIN           (WM_USER+27)
+#define TTM_POP                 (WM_USER+28)
+#define TTM_UPDATE              (WM_USER+29)
+#define TTM_GETBUBBLESIZE       (WM_USER+30)
+#define TTM_ADJUSTRECT          (WM_USER+31)
+#define TTM_SETTITLEA           (WM_USER+32)
+#define TTM_SETTITLEW           (WM_USER+33)
+#define TTM_SETTITLE            WINELIB_NAME_AW(TTM_SETTITLE)
+#define TTM_POPUP               (WM_USER+34)
+#define TTM_GETTITLE            (WM_USER+35)
+#define TTM_SETWINDOWTHEME      CCM_SETWINDOWTHEME
+
+
+#define TTN_FIRST               (0U-520U)
+#define TTN_LAST                (0U-549U)
+#define TTN_GETDISPINFOA        (TTN_FIRST-0)
+#define TTN_GETDISPINFOW        (TTN_FIRST-10)
+#define TTN_GETDISPINFO         WINELIB_NAME_AW(TTN_GETDISPINFO)
+#define TTN_SHOW                (TTN_FIRST-1)
+#define TTN_POP                 (TTN_FIRST-2)
+
+#define TTN_NEEDTEXT		TTN_GETDISPINFO
+#define TTN_NEEDTEXTA 		TTN_GETDISPINFOA
+#define TTN_NEEDTEXTW 		TTN_GETDISPINFOW
+
+typedef struct tagTOOLINFOA {
+    UINT cbSize;
+    UINT uFlags;
+    HWND hwnd;
+    UINT_PTR uId;
+    RECT rect;
+    HINSTANCE hinst;
+    LPSTR lpszText;
+    LPARAM lParam;
+    void *lpReserved;
+} TTTOOLINFOA, *LPTOOLINFOA, *PTOOLINFOA, *LPTTTOOLINFOA;
+
+typedef struct tagTOOLINFOW {
+    UINT cbSize;
+    UINT uFlags;
+    HWND hwnd;
+    UINT_PTR uId;
+    RECT rect;
+    HINSTANCE hinst;
+    LPWSTR lpszText;
+    LPARAM lParam;
+    void *lpReserved;
+} TTTOOLINFOW, *LPTOOLINFOW, *PTOOLINFOW, *LPTTTOOLINFOW;
+
+#define TTTOOLINFO WINELIB_NAME_AW(TTTOOLINFO)
+#define TOOLINFO WINELIB_NAME_AW(TTTOOLINFO)
+#define PTOOLINFO WINELIB_NAME_AW(PTOOLINFO)
+#define LPTTTOOLINFO WINELIB_NAME_AW(LPTTTOOLINFO)
+#define LPTOOLINFO WINELIB_NAME_AW(LPTOOLINFO)
+
+#define TTTOOLINFOA_V1_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lpszText)
+#define TTTOOLINFOW_V1_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lpszText)
+#define TTTOOLINFO_V1_SIZE  CCSIZEOF_STRUCT(WINELIB_NAME_AW(TTTOOLINFO), lpszText)
+
+typedef struct _TT_HITTESTINFOA
+{
+    HWND        hwnd;
+    POINT       pt;
+    TTTOOLINFOA ti;
+} TTHITTESTINFOA, *LPTTHITTESTINFOA;
+#define LPHITTESTINFOA LPTTHITTESTINFOA
+
+typedef struct _TT_HITTESTINFOW
+{
+    HWND        hwnd;
+    POINT       pt;
+    TTTOOLINFOW ti;
+} TTHITTESTINFOW, *LPTTHITTESTINFOW;
+#define LPHITTESTINFOW LPTTHITTESTINFOW
+
+#define TTHITTESTINFO WINELIB_NAME_AW(TTHITTESTINFO)
+#define LPTTHITTESTINFO WINELIB_NAME_AW(LPTTHITTESTINFO)
+#define LPHITTESTINFO WINELIB_NAME_AW(LPHITTESTINFO)
+
+typedef struct tagNMTTDISPINFOA
+{
+    NMHDR hdr;
+    LPSTR lpszText;
+    CHAR  szText[80];
+    HINSTANCE hinst;
+    UINT      uFlags;
+    LPARAM      lParam;
+} NMTTDISPINFOA, *LPNMTTDISPINFOA;
+
+typedef struct tagNMTTDISPINFOW
+{
+    NMHDR       hdr;
+    LPWSTR      lpszText;
+    WCHAR       szText[80];
+    HINSTANCE hinst;
+    UINT      uFlags;
+    LPARAM      lParam;
+} NMTTDISPINFOW, *LPNMTTDISPINFOW;
+
+#define NMTTDISPINFO WINELIB_NAME_AW(NMTTDISPINFO)
+#define LPNMTTDISPINFO WINELIB_NAME_AW(LPNMTTDISPINFO)
+
+#define NMTTDISPINFO_V1_SIZEA CCSIZEOF_STRUCT(NMTTDISPINFOA, uFlags)
+#define NMTTDISPINFO_V1_SIZEW CCSIZEOF_STRUCT(NMTTDISPINFOW, uFlags)
+#define NMTTDISPINFO_V1_SIZE WINELIB_NAME_AW(NMTTDISPINFO_V1_SIZE)
+
+typedef struct _TTGETTITLE
+{
+    DWORD dwSize;
+    UINT uTitleBitmap;
+    UINT cch;
+    WCHAR* pszTitle;
+} TTGETTITLE, *PTTGETTITLE;
+
+#define TOOLTIPTEXTW    NMTTDISPINFOW
+#define TOOLTIPTEXTA    NMTTDISPINFOA
+#define TOOLTIPTEXT     NMTTDISPINFO
+#define LPTOOLTIPTEXTW  LPNMTTDISPINFOW
+#define LPTOOLTIPTEXTA  LPNMTTDISPINFOA
+#define LPTOOLTIPTEXT   LPNMTTDISPINFO
+
+
+/* Rebar control */
+
+#define REBARCLASSNAMEA         "ReBarWindow32"
+#if defined(__GNUC__)
+# define REBARCLASSNAMEW (const WCHAR []){ 'R','e','B','a','r', \
+  'W','i','n','d','o','w','3','2',0 }
+#elif defined(_MSC_VER)
+# define REBARCLASSNAMEW        L"ReBarWindow32"
+#else
+static const WCHAR REBARCLASSNAMEW[] = { 'R','e','B','a','r',
+  'W','i','n','d','o','w','3','2',0 };
+#endif
+#define REBARCLASSNAME          WINELIB_NAME_AW(REBARCLASSNAME)
+
+#define RBS_TOOLTIPS            0x0100
+#define RBS_VARHEIGHT           0x0200
+#define RBS_BANDBORDERS         0x0400
+#define RBS_FIXEDORDER          0x0800
+#define RBS_REGISTERDROP        0x1000
+#define RBS_AUTOSIZE            0x2000
+#define RBS_VERTICALGRIPPER     0x4000
+#define RBS_DBLCLKTOGGLE        0x8000
+
+#define RBIM_IMAGELIST          0x00000001
+
+#define RBBIM_STYLE             0x00000001
+#define RBBIM_COLORS            0x00000002
+#define RBBIM_TEXT              0x00000004
+#define RBBIM_IMAGE             0x00000008
+#define RBBIM_CHILD             0x00000010
+#define RBBIM_CHILDSIZE         0x00000020
+#define RBBIM_SIZE              0x00000040
+#define RBBIM_BACKGROUND        0x00000080
+#define RBBIM_ID                0x00000100
+#define RBBIM_IDEALSIZE         0x00000200
+#define RBBIM_LPARAM            0x00000400
+#define RBBIM_HEADERSIZE        0x00000800
+
+#define RBBS_BREAK              0x00000001
+#define RBBS_FIXEDSIZE          0x00000002
+#define RBBS_CHILDEDGE          0x00000004
+#define RBBS_HIDDEN             0x00000008
+#define RBBS_NOVERT             0x00000010
+#define RBBS_FIXEDBMP           0x00000020
+#define RBBS_VARIABLEHEIGHT     0x00000040
+#define RBBS_GRIPPERALWAYS      0x00000080
+#define RBBS_NOGRIPPER          0x00000100
+#define RBBS_USECHEVRON         0x00000200
+#define RBBS_HIDETITLE          0x00000400
+#define RBBS_TOPALIGN           0x00000800
+
+#define RBNM_ID                 0x00000001
+#define RBNM_STYLE              0x00000002
+#define RBNM_LPARAM             0x00000004
+
+#define RBHT_NOWHERE            0x0001
+#define RBHT_CAPTION            0x0002
+#define RBHT_CLIENT             0x0003
+#define RBHT_GRABBER            0x0004
+#define RBHT_CHEVRON            0x0008
+
+#define RB_INSERTBANDA          (WM_USER+1)
+#define RB_INSERTBANDW          (WM_USER+10)
+#define RB_INSERTBAND           WINELIB_NAME_AW(RB_INSERTBAND)
+#define RB_DELETEBAND           (WM_USER+2)
+#define RB_GETBARINFO           (WM_USER+3)
+#define RB_SETBARINFO           (WM_USER+4)
+#define RB_SETBANDINFOA         (WM_USER+6)
+#define RB_SETBANDINFOW         (WM_USER+11)
+#define RB_SETBANDINFO          WINELIB_NAME_AW(RB_SETBANDINFO)
+#define RB_SETPARENT            (WM_USER+7)
+#define RB_HITTEST              (WM_USER+8)
+#define RB_GETRECT              (WM_USER+9)
+#define RB_GETBANDCOUNT         (WM_USER+12)
+#define RB_GETROWCOUNT          (WM_USER+13)
+#define RB_GETROWHEIGHT         (WM_USER+14)
+#define RB_IDTOINDEX            (WM_USER+16)
+#define RB_GETTOOLTIPS          (WM_USER+17)
+#define RB_SETTOOLTIPS          (WM_USER+18)
+#define RB_SETBKCOLOR           (WM_USER+19)
+#define RB_GETBKCOLOR           (WM_USER+20)
+#define RB_SETTEXTCOLOR         (WM_USER+21)
+#define RB_GETTEXTCOLOR         (WM_USER+22)
+#define RB_SIZETORECT           (WM_USER+23)
+#define RB_BEGINDRAG            (WM_USER+24)
+#define RB_ENDDRAG              (WM_USER+25)
+#define RB_DRAGMOVE             (WM_USER+26)
+#define RB_GETBARHEIGHT         (WM_USER+27)
+#define RB_GETBANDINFOW         (WM_USER+28)
+#define RB_GETBANDINFOA         (WM_USER+29)
+#define RB_GETBANDINFO          WINELIB_NAME_AW(RB_GETBANDINFO)
+#define RB_MINIMIZEBAND         (WM_USER+30)
+#define RB_MAXIMIZEBAND         (WM_USER+31)
+#define RB_GETBANDBORDERS       (WM_USER+34)
+#define RB_SHOWBAND             (WM_USER+35)
+#define RB_SETPALETTE           (WM_USER+37)
+#define RB_GETPALETTE           (WM_USER+38)
+#define RB_MOVEBAND             (WM_USER+39)
+#define RB_GETBANDMARGINS       (WM_USER+40)
+#define RB_PUSHCHEVRON          (WM_USER+43)
+#define RB_GETDROPTARGET        CCM_GETDROPTARGET
+#define RB_SETCOLORSCHEME       CCM_SETCOLORSCHEME
+#define RB_GETCOLORSCHEME       CCM_GETCOLORSCHEME
+#define RB_SETUNICODEFORMAT     CCM_SETUNICODEFORMAT
+#define RB_GETUNICODEFORMAT     CCM_GETUNICODEFORMAT
+#define RB_SETWINDOWTHEME       CCM_SETWINDOWTHEME
+
+#define RBN_FIRST               (0U-831U)
+#define RBN_LAST                (0U-859U)
+#define RBN_HEIGHTCHANGE        (RBN_FIRST-0)
+#define RBN_GETOBJECT           (RBN_FIRST-1)
+#define RBN_LAYOUTCHANGED       (RBN_FIRST-2)
+#define RBN_AUTOSIZE            (RBN_FIRST-3)
+#define RBN_BEGINDRAG           (RBN_FIRST-4)
+#define RBN_ENDDRAG             (RBN_FIRST-5)
+#define RBN_DELETINGBAND        (RBN_FIRST-6)
+#define RBN_DELETEDBAND         (RBN_FIRST-7)
+#define RBN_CHILDSIZE           (RBN_FIRST-8)
+#define RBN_CHEVRONPUSHED       (RBN_FIRST-10)
+#define RBN_MINMAX              (RBN_FIRST-21)
+#define RBN_AUTOBREAK           (RBN_FIRST-22)
+
+typedef struct tagREBARINFO
+{
+    UINT     cbSize;
+    UINT     fMask;
+    HIMAGELIST himl;
+} REBARINFO, *LPREBARINFO;
+
+typedef struct tagREBARBANDINFOA
+{
+    UINT    cbSize;
+    UINT    fMask;
+    UINT    fStyle;
+    COLORREF  clrFore;
+    COLORREF  clrBack;
+    LPSTR     lpText;
+    UINT    cch;
+    INT     iImage;
+    HWND    hwndChild;
+    UINT    cxMinChild;
+    UINT    cyMinChild;
+    UINT    cx;
+    HBITMAP hbmBack;
+    UINT    wID;
+    UINT    cyChild;
+    UINT    cyMaxChild;
+    UINT    cyIntegral;
+    UINT    cxIdeal;
+    LPARAM    lParam;
+    UINT    cxHeader;
+} REBARBANDINFOA, *LPREBARBANDINFOA;
+
+typedef REBARBANDINFOA const *LPCREBARBANDINFOA;
+
+typedef struct tagREBARBANDINFOW
+{
+    UINT    cbSize;
+    UINT    fMask;
+    UINT    fStyle;
+    COLORREF  clrFore;
+    COLORREF  clrBack;
+    LPWSTR    lpText;
+    UINT    cch;
+    INT     iImage;
+    HWND    hwndChild;
+    UINT    cxMinChild;
+    UINT    cyMinChild;
+    UINT    cx;
+    HBITMAP hbmBack;
+    UINT    wID;
+    UINT    cyChild;
+    UINT    cyMaxChild;
+    UINT    cyIntegral;
+    UINT    cxIdeal;
+    LPARAM    lParam;
+    UINT    cxHeader;
+} REBARBANDINFOW, *LPREBARBANDINFOW;
+
+typedef REBARBANDINFOW const *LPCREBARBANDINFOW;
+
+#define REBARBANDINFO    WINELIB_NAME_AW(REBARBANDINFO)
+#define LPREBARBANDINFO  WINELIB_NAME_AW(LPREBARBANDINFO)
+#define LPCREBARBANDINFO WINELIB_NAME_AW(LPCREBARBANDINFO)
+
+#define REBARBANDINFOA_V3_SIZE CCSIZEOF_STRUCT(REBARBANDINFOA, wID)
+#define REBARBANDINFOW_V3_SIZE CCSIZEOF_STRUCT(REBARBANDINFOW, wID)
+#define REBARBANDINFO_V3_SIZE  CCSIZEOF_STRUCT(WINELIB_NAME_AW(REBARBANDINFO), wID)
+
+typedef struct tagNMREBARCHILDSIZE
+{
+    NMHDR  hdr;
+    UINT uBand;
+    UINT wID;
+    RECT rcChild;
+    RECT rcBand;
+} NMREBARCHILDSIZE, *LPNMREBARCHILDSIZE;
+
+typedef struct tagNMREBAR
+{
+    NMHDR  hdr;
+    DWORD  dwMask;
+    UINT uBand;
+    UINT fStyle;
+    UINT wID;
+    LPARAM lParam;
+} NMREBAR, *LPNMREBAR;
+
+typedef struct tagNMRBAUTOSIZE
+{
+    NMHDR hdr;
+    BOOL fChanged;
+    RECT rcTarget;
+    RECT rcActual;
+} NMRBAUTOSIZE, *LPNMRBAUTOSIZE;
+
+typedef struct tagNMREBARCHEVRON
+{
+    NMHDR hdr;
+    UINT uBand;
+    UINT wID;
+    LPARAM lParam;
+    RECT rc;
+    LPARAM lParamNM;
+} NMREBARCHEVRON, *LPNMREBARCHEVRON;
+
+typedef struct _RB_HITTESTINFO
+{
+    POINT pt;
+    UINT  flags;
+    INT   iBand;
+} RBHITTESTINFO, *LPRBHITTESTINFO;
+
+#define RBAB_AUTOSIZE   0x0001
+#define RBAB_ADDBAND    0x0002
+
+typedef struct tagNMREBARAUTOBREAK
+{
+    NMHDR hdr;
+    UINT uBand;
+    UINT wID;
+    LPARAM lParam;
+    UINT uMsg;
+    UINT fStyleCurrent;
+    BOOL fAutoBreak;
+} NMREBARAUTOBREAK, *LPNMREBARAUTOBREAK;
+
+
+/* Trackbar control */
+
+#define TRACKBAR_CLASSA         "msctls_trackbar32"
+#if defined(__GNUC__)
+# define TRACKBAR_CLASSW (const WCHAR []){ 'm','s','c','t','l','s','_', \
+  't','r','a','c','k','b','a','r','3','2',0 }
+#elif defined(_MSC_VER)
+# define TRACKBAR_CLASSW        L"msctls_trackbar32"
+#else
+static const WCHAR TRACKBAR_CLASSW[] = { 'm','s','c','t','l','s','_',
+  't','r','a','c','k','b','a','r','3','2',0 };
+#endif
+#define TRACKBAR_CLASS  WINELIB_NAME_AW(TRACKBAR_CLASS)
+
+#define TBS_AUTOTICKS           0x0001
+#define TBS_VERT                0x0002
+#define TBS_HORZ                0x0000
+#define TBS_TOP                 0x0004
+#define TBS_BOTTOM              0x0000
+#define TBS_LEFT                0x0004
+#define TBS_RIGHT               0x0000
+#define TBS_BOTH                0x0008
+#define TBS_NOTICKS             0x0010
+#define TBS_ENABLESELRANGE      0x0020
+#define TBS_FIXEDLENGTH         0x0040
+#define TBS_NOTHUMB             0x0080
+#define TBS_TOOLTIPS            0x0100
+#define TBS_REVERSED		0x0200
+#define TBS_DOWNISLEFT		0x0400
+
+#define TBTS_TOP                0
+#define TBTS_LEFT               1
+#define TBTS_BOTTOM             2
+#define TBTS_RIGHT              3
+
+#define TB_LINEUP               0
+#define TB_LINEDOWN             1
+#define TB_PAGEUP               2
+#define TB_PAGEDOWN             3
+#define TB_THUMBPOSITION        4
+#define TB_THUMBTRACK           5
+#define TB_TOP                  6
+#define TB_BOTTOM               7
+#define TB_ENDTRACK             8
+
+#define TBCD_TICS               0x0001
+#define TBCD_THUMB              0x0002
+#define TBCD_CHANNEL            0x0003
+
+#define TBM_GETPOS              (WM_USER)
+#define TBM_GETRANGEMIN         (WM_USER+1)
+#define TBM_GETRANGEMAX         (WM_USER+2)
+#define TBM_GETTIC              (WM_USER+3)
+#define TBM_SETTIC              (WM_USER+4)
+#define TBM_SETPOS              (WM_USER+5)
+#define TBM_SETRANGE            (WM_USER+6)
+#define TBM_SETRANGEMIN         (WM_USER+7)
+#define TBM_SETRANGEMAX         (WM_USER+8)
+#define TBM_CLEARTICS           (WM_USER+9)
+#define TBM_SETSEL              (WM_USER+10)
+#define TBM_SETSELSTART         (WM_USER+11)
+#define TBM_SETSELEND           (WM_USER+12)
+#define TBM_GETPTICS            (WM_USER+14)
+#define TBM_GETTICPOS           (WM_USER+15)
+#define TBM_GETNUMTICS          (WM_USER+16)
+#define TBM_GETSELSTART         (WM_USER+17)
+#define TBM_GETSELEND           (WM_USER+18)
+#define TBM_CLEARSEL            (WM_USER+19)
+#define TBM_SETTICFREQ          (WM_USER+20)
+#define TBM_SETPAGESIZE         (WM_USER+21)
+#define TBM_GETPAGESIZE         (WM_USER+22)
+#define TBM_SETLINESIZE         (WM_USER+23)
+#define TBM_GETLINESIZE         (WM_USER+24)
+#define TBM_GETTHUMBRECT        (WM_USER+25)
+#define TBM_GETCHANNELRECT      (WM_USER+26)
+#define TBM_SETTHUMBLENGTH      (WM_USER+27)
+#define TBM_GETTHUMBLENGTH      (WM_USER+28)
+#define TBM_SETTOOLTIPS         (WM_USER+29)
+#define TBM_GETTOOLTIPS         (WM_USER+30)
+#define TBM_SETTIPSIDE          (WM_USER+31)
+#define TBM_SETBUDDY            (WM_USER+32)
+#define TBM_GETBUDDY            (WM_USER+33)
+#define TBM_SETUNICODEFORMAT    CCM_SETUNICODEFORMAT
+#define TBM_GETUNICODEFORMAT    CCM_GETUNICODEFORMAT
+
+
+/* Pager control */
+
+#define WC_PAGESCROLLERA      "SysPager"
+#if defined(__GNUC__)
+# define WC_PAGESCROLLERW (const WCHAR []){ 'S','y','s','P','a','g','e','r',0 }
+#elif defined(_MSC_VER)
+# define WC_PAGESCROLLERW     L"SysPager"
+#else
+static const WCHAR WC_PAGESCROLLERW[] = { 'S','y','s','P','a','g','e','r',0 };
+#endif
+#define WC_PAGESCROLLER  WINELIB_NAME_AW(WC_PAGESCROLLER)
+
+#define PGS_VERT                0x00000000
+#define PGS_HORZ                0x00000001
+#define PGS_AUTOSCROLL          0x00000002
+#define PGS_DRAGNDROP           0x00000004
+
+#define PGF_INVISIBLE           0
+#define PGF_NORMAL              1
+#define PGF_GRAYED              2
+#define PGF_DEPRESSED           4
+#define PGF_HOT                 8
+
+#define PGB_TOPORLEFT           0
+#define PGB_BOTTOMORRIGHT       1
+
+/* only used with PGN_SCROLL */
+#define PGF_SCROLLUP            1
+#define PGF_SCROLLDOWN          2
+#define PGF_SCROLLLEFT          4
+#define PGF_SCROLLRIGHT         8
+
+#define PGK_SHIFT               1
+#define PGK_CONTROL             2
+#define PGK_MENU                4
+
+/* only used with PGN_CALCSIZE */
+#define PGF_CALCWIDTH           1
+#define PGF_CALCHEIGHT          2
+
+#define PGM_FIRST               0x1400
+#define PGM_SETCHILD            (PGM_FIRST+1)
+#define PGM_RECALCSIZE          (PGM_FIRST+2)
+#define PGM_FORWARDMOUSE        (PGM_FIRST+3)
+#define PGM_SETBKCOLOR          (PGM_FIRST+4)
+#define PGM_GETBKCOLOR          (PGM_FIRST+5)
+#define PGM_SETBORDER           (PGM_FIRST+6)
+#define PGM_GETBORDER           (PGM_FIRST+7)
+#define PGM_SETPOS              (PGM_FIRST+8)
+#define PGM_GETPOS              (PGM_FIRST+9)
+#define PGM_SETBUTTONSIZE       (PGM_FIRST+10)
+#define PGM_GETBUTTONSIZE       (PGM_FIRST+11)
+#define PGM_GETBUTTONSTATE      (PGM_FIRST+12)
+#define PGM_GETDROPTARGET       CCM_GETDROPTARGET
+
+#define PGN_FIRST               (0U-900U)
+#define PGN_LAST                (0U-950U)
+#define PGN_SCROLL              (PGN_FIRST-1)
+#define PGN_CALCSIZE            (PGN_FIRST-2)
+
+#include <pshpack1.h>
+
+typedef struct
+{
+    NMHDR hdr;
+    WORD  fwKeys;
+    RECT rcParent;
+    INT  iDir;
+    INT  iXpos;
+    INT  iYpos;
+    INT  iScroll;
+} NMPGSCROLL, *LPNMPGSCROLL;
+
+#include <poppack.h>
+
+typedef struct
+{
+    NMHDR hdr;
+    DWORD dwFlag;
+    INT iWidth;
+    INT iHeight;
+} NMPGCALCSIZE, *LPNMPGCALCSIZE;
+
+
+/* Treeview control */
+
+#define WC_TREEVIEWA          "SysTreeView32"
+#if defined(__GNUC__)
+# define WC_TREEVIEWW (const WCHAR []){ 'S','y','s', \
+  'T','r','e','e','V','i','e','w','3','2',0 }
+#elif defined(_MSC_VER)
+# define WC_TREEVIEWW         L"SysTreeView32"
+#else
+static const WCHAR WC_TREEVIEWW[] = { 'S','y','s',
+  'T','r','e','e','V','i','e','w','3','2',0 };
+#endif
+#define WC_TREEVIEW             WINELIB_NAME_AW(WC_TREEVIEW)
+
+#define TVSIL_NORMAL            0
+#define TVSIL_STATE             2
+
+#define TV_FIRST                0x1100
+#define TVM_INSERTITEMA         (TV_FIRST+0)
+#define TVM_INSERTITEMW         (TV_FIRST+50)
+#define TVM_INSERTITEM          WINELIB_NAME_AW(TVM_INSERTITEM)
+#define TVM_DELETEITEM          (TV_FIRST+1)
+#define TVM_EXPAND              (TV_FIRST+2)
+#define TVM_GETITEMRECT         (TV_FIRST+4)
+#define TVM_GETCOUNT            (TV_FIRST+5)
+#define TVM_GETINDENT           (TV_FIRST+6)
+#define TVM_SETINDENT           (TV_FIRST+7)
+#define TVM_GETIMAGELIST        (TV_FIRST+8)
+#define TVM_SETIMAGELIST        (TV_FIRST+9)
+#define TVM_GETNEXTITEM         (TV_FIRST+10)
+#define TVM_SELECTITEM          (TV_FIRST+11)
+#define TVM_GETITEMA            (TV_FIRST+12)
+#define TVM_GETITEMW            (TV_FIRST+62)
+#define TVM_GETITEM             WINELIB_NAME_AW(TVM_GETITEM)
+#define TVM_SETITEMA            (TV_FIRST+13)
+#define TVM_SETITEMW            (TV_FIRST+63)
+#define TVM_SETITEM             WINELIB_NAME_AW(TVM_SETITEM)
+#define TVM_EDITLABELA          (TV_FIRST+14)
+#define TVM_EDITLABELW          (TV_FIRST+65)
+#define TVM_EDITLABEL           WINELIB_NAME_AW(TVM_EDITLABEL)
+#define TVM_GETEDITCONTROL      (TV_FIRST+15)
+#define TVM_GETVISIBLECOUNT     (TV_FIRST+16)
+#define TVM_HITTEST             (TV_FIRST+17)
+#define TVM_CREATEDRAGIMAGE     (TV_FIRST+18)
+#define TVM_SORTCHILDREN        (TV_FIRST+19)
+#define TVM_ENSUREVISIBLE       (TV_FIRST+20)
+#define TVM_SORTCHILDRENCB      (TV_FIRST+21)
+#define TVM_ENDEDITLABELNOW     (TV_FIRST+22)
+#define TVM_GETISEARCHSTRINGA   (TV_FIRST+23)
+#define TVM_GETISEARCHSTRINGW   (TV_FIRST+64)
+#define TVM_GETISEARCHSTRING    WINELIB_NAME_AW(TVM_GETISEARCHSTRING)
+#define TVM_SETTOOLTIPS         (TV_FIRST+24)
+#define TVM_GETTOOLTIPS         (TV_FIRST+25)
+#define TVM_SETINSERTMARK       (TV_FIRST+26)
+#define TVM_SETITEMHEIGHT       (TV_FIRST+27)
+#define TVM_GETITEMHEIGHT       (TV_FIRST+28)
+#define TVM_SETBKCOLOR          (TV_FIRST+29)
+#define TVM_SETTEXTCOLOR        (TV_FIRST+30)
+#define TVM_GETBKCOLOR          (TV_FIRST+31)
+#define TVM_GETTEXTCOLOR        (TV_FIRST+32)
+#define TVM_SETSCROLLTIME       (TV_FIRST+33)
+#define TVM_GETSCROLLTIME       (TV_FIRST+34)
+#define TVM_UNKNOWN35           (TV_FIRST+35)
+#define TVM_UNKNOWN36           (TV_FIRST+36)
+#define TVM_SETINSERTMARKCOLOR  (TV_FIRST+37)
+#define TVM_GETINSERTMARKCOLOR  (TV_FIRST+38)
+#define TVM_GETITEMSTATE        (TV_FIRST+39)
+#define TVM_SETLINECOLOR        (TV_FIRST+40)
+#define TVM_GETLINECOLOR        (TV_FIRST+41)
+#define TVM_SETUNICODEFORMAT    CCM_SETUNICODEFORMAT
+#define TVM_GETUNICODEFORMAT    CCM_GETUNICODEFORMAT
+#define TVM_MAPACCIDTOHTREEITEM (TV_FIRST + 42)
+#define TVM_MAPHTREEITEMTOACCID (TV_FIRST + 43)
+
+
+#define TVN_FIRST               (0U-400U)
+#define TVN_LAST                (0U-499U)
+
+#define TVN_SELCHANGINGA        (TVN_FIRST-1)
+#define TVN_SELCHANGINGW        (TVN_FIRST-50)
+#define TVN_SELCHANGING         WINELIB_NAME_AW(TVN_SELCHANGING)
+
+#define TVN_SELCHANGEDA         (TVN_FIRST-2)
+#define TVN_SELCHANGEDW         (TVN_FIRST-51)
+#define TVN_SELCHANGED          WINELIB_NAME_AW(TVN_SELCHANGED)
+
+#define TVN_GETDISPINFOA        (TVN_FIRST-3)
+#define TVN_GETDISPINFOW        (TVN_FIRST-52)
+#define TVN_GETDISPINFO         WINELIB_NAME_AW(TVN_GETDISPINFO)
+
+#define TVN_SETDISPINFOA        (TVN_FIRST-4)
+#define TVN_SETDISPINFOW        (TVN_FIRST-53)
+#define TVN_SETDISPINFO         WINELIB_NAME_AW(TVN_SETDISPINFO)
+
+#define TVN_ITEMEXPANDINGA      (TVN_FIRST-5)
+#define TVN_ITEMEXPANDINGW      (TVN_FIRST-54)
+#define TVN_ITEMEXPANDING       WINELIB_NAME_AW(TVN_ITEMEXPANDING)
+
+#define TVN_ITEMEXPANDEDA       (TVN_FIRST-6)
+#define TVN_ITEMEXPANDEDW       (TVN_FIRST-55)
+#define TVN_ITEMEXPANDED        WINELIB_NAME_AW(TVN_ITEMEXPANDED)
+
+#define TVN_BEGINDRAGA          (TVN_FIRST-7)
+#define TVN_BEGINDRAGW          (TVN_FIRST-56)
+#define TVN_BEGINDRAG           WINELIB_NAME_AW(TVN_BEGINDRAG)
+
+#define TVN_BEGINRDRAGA         (TVN_FIRST-8)
+#define TVN_BEGINRDRAGW         (TVN_FIRST-57)
+#define TVN_BEGINRDRAG          WINELIB_NAME_AW(TVN_BEGINRDRAG)
+
+#define TVN_DELETEITEMA         (TVN_FIRST-9)
+#define TVN_DELETEITEMW         (TVN_FIRST-58)
+#define TVN_DELETEITEM          WINELIB_NAME_AW(TVN_DELETEITEM)
+
+#define TVN_BEGINLABELEDITA     (TVN_FIRST-10)
+#define TVN_BEGINLABELEDITW     (TVN_FIRST-59)
+#define TVN_BEGINLABELEDIT      WINELIB_NAME_AW(TVN_BEGINLABELEDIT)
+
+#define TVN_ENDLABELEDITA       (TVN_FIRST-11)
+#define TVN_ENDLABELEDITW       (TVN_FIRST-60)
+#define TVN_ENDLABELEDIT        WINELIB_NAME_AW(TVN_ENDLABELEDIT)
+
+#define TVN_KEYDOWN             (TVN_FIRST-12)
+
+#define TVN_GETINFOTIPA         (TVN_FIRST-13)
+#define TVN_GETINFOTIPW         (TVN_FIRST-14)
+#define TVN_GETINFOTIP          WINELIB_NAME_AW(TVN_GETINFOTIP)
+
+#define TVN_SINGLEEXPAND        (TVN_FIRST-15)
+
+
+
+
+
+#define TVIF_TEXT             0x0001
+#define TVIF_IMAGE            0x0002
+#define TVIF_PARAM            0x0004
+#define TVIF_STATE            0x0008
+#define TVIF_HANDLE           0x0010
+#define TVIF_SELECTEDIMAGE    0x0020
+#define TVIF_CHILDREN         0x0040
+#define TVIF_INTEGRAL         0x0080
+#define TVIF_DI_SETITEM	      0x1000
+
+#define TVI_ROOT              ((HTREEITEM)0xffff0000)     /* -65536 */
+#define TVI_FIRST             ((HTREEITEM)0xffff0001)     /* -65535 */
+#define TVI_LAST              ((HTREEITEM)0xffff0002)     /* -65534 */
+#define TVI_SORT              ((HTREEITEM)0xffff0003)     /* -65533 */
+
+#define TVIS_FOCUSED          0x0001
+#define TVIS_SELECTED         0x0002
+#define TVIS_CUT              0x0004
+#define TVIS_DROPHILITED      0x0008
+#define TVIS_BOLD             0x0010
+#define TVIS_EXPANDED         0x0020
+#define TVIS_EXPANDEDONCE     0x0040
+#define TVIS_EXPANDPARTIAL    0x0080
+#define TVIS_OVERLAYMASK      0x0f00
+#define TVIS_STATEIMAGEMASK   0xf000
+#define TVIS_USERMASK         0xf000
+
+#define TVHT_NOWHERE          0x0001
+#define TVHT_ONITEMICON       0x0002
+#define TVHT_ONITEMLABEL      0x0004
+#define TVHT_ONITEMINDENT     0x0008
+#define TVHT_ONITEMBUTTON     0x0010
+#define TVHT_ONITEMRIGHT      0x0020
+#define TVHT_ONITEMSTATEICON  0x0040
+#define TVHT_ONITEM           0x0046
+#define TVHT_ABOVE            0x0100
+#define TVHT_BELOW            0x0200
+#define TVHT_TORIGHT          0x0400
+#define TVHT_TOLEFT           0x0800
+
+#define TVS_HASBUTTONS        0x0001
+#define TVS_HASLINES          0x0002
+#define TVS_LINESATROOT       0x0004
+#define TVS_EDITLABELS        0x0008
+#define TVS_DISABLEDRAGDROP   0x0010
+#define TVS_SHOWSELALWAYS     0x0020
+#define TVS_RTLREADING        0x0040
+#define TVS_NOTOOLTIPS        0x0080
+#define TVS_CHECKBOXES        0x0100
+#define TVS_TRACKSELECT       0x0200
+#define TVS_SINGLEEXPAND      0x0400
+#define TVS_INFOTIP           0x0800
+#define TVS_FULLROWSELECT     0x1000
+#define TVS_NOSCROLL          0x2000
+#define TVS_NONEVENHEIGHT     0x4000
+#define TVS_NOHSCROLL         0x8000
+
+#define TVS_SHAREDIMAGELISTS  0x0000
+#define TVS_PRIVATEIMAGELISTS 0x0400
+
+
+#define TVE_COLLAPSE          0x0001
+#define TVE_EXPAND            0x0002
+#define TVE_TOGGLE            0x0003
+#define TVE_EXPANDPARTIAL     0x4000
+#define TVE_COLLAPSERESET     0x8000
+
+#define TVGN_ROOT             0
+#define TVGN_NEXT             1
+#define TVGN_PREVIOUS         2
+#define TVGN_PARENT           3
+#define TVGN_CHILD            4
+#define TVGN_FIRSTVISIBLE     5
+#define TVGN_NEXTVISIBLE      6
+#define TVGN_PREVIOUSVISIBLE  7
+#define TVGN_DROPHILITE       8
+#define TVGN_CARET            9
+#define TVGN_LASTVISIBLE      10
+#define TVSI_NOSINGLEEXPAND   0x8000
+
+#define TVC_UNKNOWN           0x00
+#define TVC_BYMOUSE           0x01
+#define TVC_BYKEYBOARD        0x02
+
+
+typedef struct _TREEITEM *HTREEITEM;
+
+typedef struct {
+      UINT mask;
+      HTREEITEM hItem;
+      UINT state;
+      UINT stateMask;
+      LPSTR  pszText;
+      INT  cchTextMax;
+      INT  iImage;
+      INT  iSelectedImage;
+      INT  cChildren;
+      LPARAM lParam;
+} TVITEMA, *LPTVITEMA;
+
+typedef struct {
+      UINT mask;
+      HTREEITEM hItem;
+      UINT state;
+      UINT stateMask;
+      LPWSTR pszText;
+      INT cchTextMax;
+      INT iImage;
+      INT iSelectedImage;
+      INT cChildren;
+      LPARAM lParam;
+} TVITEMW, *LPTVITEMW;
+
+#define TV_ITEMA    TVITEMA
+#define TV_ITEMW    TVITEMW
+#define LPTV_ITEMA  LPTVITEMA
+#define LPTV_ITEMW  LPTVITEMW
+
+#define TVITEM      WINELIB_NAME_AW(TVITEM)
+#define LPTVITEM    WINELIB_NAME_AW(LPTVITEM)
+#define TV_ITEM     WINELIB_NAME_AW(TV_ITEM)
+#define LPTV_ITEM   WINELIB_NAME_AW(LPTV_ITEM)
+
+typedef struct {
+      UINT mask;
+      HTREEITEM hItem;
+      UINT state;
+      UINT stateMask;
+      LPSTR  pszText;
+      INT  cchTextMax;
+      INT  iImage;
+      INT  iSelectedImage;
+      INT  cChildren;
+      LPARAM lParam;
+      INT iIntegral;
+} TVITEMEXA, *LPTVITEMEXA;
+
+typedef struct {
+      UINT mask;
+      HTREEITEM hItem;
+      UINT state;
+      UINT stateMask;
+      LPWSTR pszText;
+      INT cchTextMax;
+      INT iImage;
+      INT iSelectedImage;
+      INT cChildren;
+      LPARAM lParam;
+      INT iIntegral;
+} TVITEMEXW, *LPTVITEMEXW;
+
+#define TVITEMEX   WINELIB_NAME_AW(TVITEMEX)
+#define LPTVITEMEX WINELIB_NAME_AW(LPTVITEMEX)
+
+typedef struct tagTVINSERTSTRUCTA {
+        HTREEITEM hParent;
+        HTREEITEM hInsertAfter;
+        union {
+           TVITEMEXA itemex;
+           TVITEMA   item;
+        } DUMMYUNIONNAME;
+} TVINSERTSTRUCTA, *LPTVINSERTSTRUCTA;
+
+typedef struct tagTVINSERTSTRUCTW {
+        HTREEITEM hParent;
+        HTREEITEM hInsertAfter;
+        union {
+           TVITEMEXW itemex;
+           TVITEMW   item;
+        } DUMMYUNIONNAME;
+} TVINSERTSTRUCTW, *LPTVINSERTSTRUCTW;
+
+#define TVINSERTSTRUCT    WINELIB_NAME_AW(TVINSERTSTRUCT)
+#define LPTVINSERTSTRUCT  WINELIB_NAME_AW(LPTVINSERTSTRUCT)
+
+#define TVINSERTSTRUCT_V1_SIZEA CCSIZEOF_STRUCT(TVINSERTSTRUCTA, item)
+#define TVINSERTSTRUCT_V1_SIZEW CCSIZEOF_STRUCT(TVINSERTSTRUCTW, item)
+#define TVINSERTSTRUCT_V1_SIZE    WINELIB_NAME_AW(TVINSERTSTRUCT_V1_SIZE)
+
+#define TV_INSERTSTRUCT    TVINSERTSTRUCT
+#define TV_INSERTSTRUCTA   TVINSERTSTRUCTA
+#define TV_INSERTSTRUCTW   TVINSERTSTRUCTW
+#define LPTV_INSERTSTRUCT  LPTVINSERTSTRUCT
+#define LPTV_INSERTSTRUCTA LPTVINSERTSTRUCTA
+#define LPTV_INSERTSTRUCTW LPTVINSERTSTRUCTW
+
+
+
+typedef struct tagNMTREEVIEWA {
+	NMHDR	hdr;
+	UINT	action;
+	TVITEMA	itemOld;
+	TVITEMA	itemNew;
+	POINT	ptDrag;
+} NMTREEVIEWA, *LPNMTREEVIEWA;
+
+typedef struct tagNMTREEVIEWW {
+	NMHDR	hdr;
+	UINT	action;
+	TVITEMW	itemOld;
+	TVITEMW	itemNew;
+	POINT	ptDrag;
+} NMTREEVIEWW, *LPNMTREEVIEWW;
+
+#define NMTREEVIEW     WINELIB_NAME_AW(NMTREEVIEW)
+#define NM_TREEVIEW    WINELIB_NAME_AW(NMTREEVIEW)
+#define NM_TREEVIEWA   NMTREEVIEWA
+#define NM_TREEVIEWW   NMTREEVIEWW
+#define LPNMTREEVIEW   WINELIB_NAME_AW(LPNMTREEVIEW)
+
+#define LPNM_TREEVIEW  LPNMTREEVIEW
+#define LPNM_TREEVIEWA LPNMTREEVIEWA
+#define LPNM_TREEVIEWW LPNMTREEVIEWW
+
+typedef struct tagTVDISPINFOA {
+	NMHDR	hdr;
+	TVITEMA	item;
+} NMTVDISPINFOA, *LPNMTVDISPINFOA;
+
+typedef struct tagTVDISPINFOW {
+	NMHDR	hdr;
+	TVITEMW	item;
+} NMTVDISPINFOW, *LPNMTVDISPINFOW;
+
+#define NMTVDISPINFO            WINELIB_NAME_AW(NMTVDISPINFO)
+#define LPNMTVDISPINFO          WINELIB_NAME_AW(LPNMTVDISPINFO)
+#define TV_DISPINFOA            NMTVDISPINFOA
+#define TV_DISPINFOW            NMTVDISPINFOW
+#define TV_DISPINFO             NMTVDISPINFO
+
+typedef INT (CALLBACK *PFNTVCOMPARE)(LPARAM, LPARAM, LPARAM);
+
+typedef struct tagTVSORTCB
+{
+	HTREEITEM hParent;
+	PFNTVCOMPARE lpfnCompare;
+	LPARAM lParam;
+} TVSORTCB, *LPTVSORTCB;
+
+#define TV_SORTCB TVSORTCB
+#define LPTV_SORTCB LPTVSORTCB
+
+typedef struct tagTVHITTESTINFO {
+        POINT pt;
+        UINT flags;
+        HTREEITEM hItem;
+} TVHITTESTINFO, *LPTVHITTESTINFO;
+
+#define TV_HITTESTINFO TVHITTESTINFO
+
+
+/* Custom Draw Treeview */
+
+#define NMTVCUSTOMDRAW_V3_SIZE CCSIZEOF_STRUCT(NMTVCUSTOMDRAW, clrTextBk)
+
+#define TVCDRF_NOIMAGES     0x00010000
+
+typedef struct tagNMTVCUSTOMDRAW
+{
+    NMCUSTOMDRAW nmcd;
+    COLORREF     clrText;
+    COLORREF     clrTextBk;
+    INT iLevel;                 /* IE>0x0400 */
+} NMTVCUSTOMDRAW, *LPNMTVCUSTOMDRAW;
+
+/* Treeview tooltips */
+
+typedef struct tagNMTVGETINFOTIPA
+{
+    NMHDR hdr;
+    LPSTR pszText;
+    INT cchTextMax;
+    HTREEITEM hItem;
+    LPARAM lParam;
+} NMTVGETINFOTIPA, *LPNMTVGETINFOTIPA;
+
+typedef struct tagNMTVGETINFOTIPW
+{
+    NMHDR hdr;
+    LPWSTR pszText;
+    INT cchTextMax;
+    HTREEITEM hItem;
+    LPARAM lParam;
+} NMTVGETINFOTIPW, *LPNMTVGETINFOTIPW;
+
+#define NMTVGETINFOTIP WINELIB_NAME_AW(NMTVGETINFOTIP)
+#define LPNMTVGETINFOTIP WINELIB_NAME_AW(LPNMTVGETINFOTIP)
+
+#include <pshpack1.h>
+typedef struct tagTVKEYDOWN
+{
+    NMHDR hdr;
+    WORD wVKey;
+    UINT flags;
+} NMTVKEYDOWN, *LPNMTVKEYDOWN;
+#include <poppack.h>
+
+#define TV_KEYDOWN      NMTVKEYDOWN
+
+#define TreeView_InsertItemA(hwnd, phdi) \
+  (HTREEITEM)SNDMSGA((hwnd), TVM_INSERTITEMA, 0, \
+                            (LPARAM)(LPTVINSERTSTRUCTA)(phdi))
+#define TreeView_InsertItemW(hwnd,phdi) \
+  (HTREEITEM)SNDMSGW((hwnd), TVM_INSERTITEMW, 0, \
+                            (LPARAM)(LPTVINSERTSTRUCTW)(phdi))
+#define TreeView_InsertItem WINELIB_NAME_AW(TreeView_InsertItem)
+
+#define TreeView_DeleteItem(hwnd, hItem) \
+  (BOOL)SNDMSGA((hwnd), TVM_DELETEITEM, 0, (LPARAM)(HTREEITEM)(hItem))
+#define TreeView_DeleteAllItems(hwnd) \
+  (BOOL)SNDMSGA((hwnd), TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT)
+#define TreeView_Expand(hwnd, hitem, code) \
+ (BOOL)SNDMSGA((hwnd), TVM_EXPAND, (WPARAM)code, \
+	(LPARAM)(HTREEITEM)(hitem))
+
+#define TreeView_GetItemRect(hwnd, hitem, prc, code) \
+ (*(HTREEITEM *)prc = (hitem), (BOOL)SNDMSGA((hwnd), \
+			TVM_GETITEMRECT, (WPARAM)(code), (LPARAM)(RECT *)(prc)))
+
+#define TreeView_GetCount(hwnd) \
+    (UINT)SNDMSGA((hwnd), TVM_GETCOUNT, 0, 0)
+#define TreeView_GetIndent(hwnd) \
+    (UINT)SNDMSGA((hwnd), TVM_GETINDENT, 0, 0)
+#define TreeView_SetIndent(hwnd, indent) \
+    (BOOL)SNDMSGA((hwnd), TVM_SETINDENT, (WPARAM)indent, 0)
+
+#define TreeView_GetImageList(hwnd, iImage) \
+    (HIMAGELIST)SNDMSGA((hwnd), TVM_GETIMAGELIST, iImage, 0)
+
+#define TreeView_SetImageList(hwnd, himl, iImage) \
+    (HIMAGELIST)SNDMSGA((hwnd), TVM_SETIMAGELIST, iImage, \
+ (LPARAM)(HIMAGELIST)(himl))
+
+#define TreeView_GetNextItem(hwnd, hitem, code) \
+    (HTREEITEM)SNDMSGA((hwnd), TVM_GETNEXTITEM, (WPARAM)code,\
+(LPARAM)(HTREEITEM) (hitem))
+
+#define TreeView_GetChild(hwnd, hitem) \
+	 	TreeView_GetNextItem(hwnd, hitem , TVGN_CHILD)
+#define TreeView_GetNextSibling(hwnd, hitem) \
+		TreeView_GetNextItem(hwnd, hitem , TVGN_NEXT)
+#define TreeView_GetPrevSibling(hwnd, hitem) \
+		TreeView_GetNextItem(hwnd, hitem , TVGN_PREVIOUS)
+#define TreeView_GetParent(hwnd, hitem) \
+		TreeView_GetNextItem(hwnd, hitem , TVGN_PARENT)
+#define TreeView_GetFirstVisible(hwnd)  \
+		TreeView_GetNextItem(hwnd, NULL, TVGN_FIRSTVISIBLE)
+#define TreeView_GetLastVisible(hwnd)   \
+		TreeView_GetNextItem(hwnd, NULL, TVGN_LASTVISIBLE)
+#define TreeView_GetNextVisible(hwnd, hitem) \
+		TreeView_GetNextItem(hwnd, hitem , TVGN_NEXTVISIBLE)
+#define TreeView_GetPrevVisible(hwnd, hitem) \
+		TreeView_GetNextItem(hwnd, hitem , TVGN_PREVIOUSVISIBLE)
+#define TreeView_GetSelection(hwnd) \
+		TreeView_GetNextItem(hwnd, NULL, TVGN_CARET)
+#define TreeView_GetDropHilight(hwnd) \
+		TreeView_GetNextItem(hwnd, NULL, TVGN_DROPHILITE)
+#define TreeView_GetRoot(hwnd) \
+		TreeView_GetNextItem(hwnd, NULL, TVGN_ROOT)
+#define TreeView_GetLastVisible(hwnd) \
+		TreeView_GetNextItem(hwnd, NULL, TVGN_LASTVISIBLE)
+
+
+#define TreeView_Select(hwnd, hitem, code) \
+ (BOOL)SNDMSGA((hwnd), TVM_SELECTITEM, (WPARAM)(code), \
+(LPARAM)(HTREEITEM)(hitem))
+
+
+#define TreeView_SelectItem(hwnd, hitem) \
+		TreeView_Select(hwnd, hitem, TVGN_CARET)
+#define TreeView_SelectDropTarget(hwnd, hitem) \
+       	TreeView_Select(hwnd, hitem, TVGN_DROPHILITE)
+#define TreeView_SelectSetFirstVisible(hwnd, hitem) \
+       	TreeView_Select(hwnd, hitem, TVGN_FIRSTVISIBLE)
+
+
+#define TreeView_GetItemA(hwnd, pitem) \
+ (BOOL)SNDMSGA((hwnd), TVM_GETITEMA, 0, (LPARAM) (TVITEMA *)(pitem))
+#define TreeView_GetItemW(hwnd, pitem) \
+ (BOOL)SNDMSGW((hwnd), TVM_GETITEMW, 0, (LPARAM) (TVITEMW *)(pitem))
+#define TreeView_GetItem WINELIB_NAME_AW(TreeView_GetItem)
+
+#define TreeView_SetItemA(hwnd, pitem) \
+ (BOOL)SNDMSGA((hwnd), TVM_SETITEMA, 0, (LPARAM)(const TVITEMA *)(pitem))
+#define TreeView_SetItemW(hwnd, pitem) \
+ (BOOL)SNDMSGW((hwnd), TVM_SETITEMW, 0, (LPARAM)(const TVITEMW *)(pitem))
+#define TreeView_SetItem WINELIB_NAME_AW(TreeView_SetItem)
+
+#define TreeView_EditLabel(hwnd, hitem) \
+    (HWND)SNDMSGA((hwnd), TVM_EDITLABEL, 0, (LPARAM)(HTREEITEM)(hitem))
+
+#define TreeView_GetEditControl(hwnd) \
+    (HWND)SNDMSGA((hwnd), TVM_GETEDITCONTROL, 0, 0)
+
+#define TreeView_GetVisibleCount(hwnd) \
+    (UINT)SNDMSGA((hwnd), TVM_GETVISIBLECOUNT, 0, 0)
+
+#define TreeView_HitTest(hwnd, lpht) \
+    (HTREEITEM)SNDMSGA((hwnd), TVM_HITTEST, 0,\
+(LPARAM)(LPTVHITTESTINFO)(lpht))
+
+#define TreeView_CreateDragImage(hwnd, hitem) \
+    (HIMAGELIST)SNDMSGA((hwnd), TVM_CREATEDRAGIMAGE, 0,\
+(LPARAM)(HTREEITEM)(hitem))
+
+#define TreeView_SortChildren(hwnd, hitem, recurse) \
+    (BOOL)SNDMSGA((hwnd), TVM_SORTCHILDREN, (WPARAM)recurse,\
+(LPARAM)(HTREEITEM)(hitem))
+
+#define TreeView_EnsureVisible(hwnd, hitem) \
+    (BOOL)SNDMSGA((hwnd), TVM_ENSUREVISIBLE, 0, (LPARAM)(UINT)(hitem))
+
+#define TreeView_SortChildrenCB(hwnd, psort, recurse) \
+    (BOOL)SNDMSGA((hwnd), TVM_SORTCHILDRENCB, (WPARAM)recurse, \
+    (LPARAM)(LPTV_SORTCB)(psort))
+
+#define TreeView_EndEditLabelNow(hwnd, fCancel) \
+    (BOOL)SNDMSGA((hwnd), TVM_ENDEDITLABELNOW, (WPARAM)fCancel, 0)
+
+#define TreeView_GetISearchString(hwnd, lpsz) \
+    (BOOL)SNDMSGA((hwnd), TVM_GETISEARCHSTRING, 0, \
+							(LPARAM)(LPTSTR)lpsz)
+
+#define TreeView_SetToolTips(hwnd,  hwndTT) \
+    (HWND)SNDMSGA((hwnd), TVM_SETTOOLTIPS, (WPARAM)(hwndTT), 0)
+
+#define TreeView_GetToolTips(hwnd) \
+    (HWND)SNDMSGA((hwnd), TVM_GETTOOLTIPS, 0, 0)
+
+#define TreeView_SetItemHeight(hwnd,  iHeight) \
+    (INT)SNDMSGA((hwnd), TVM_SETITEMHEIGHT, (WPARAM)iHeight, 0)
+
+#define TreeView_GetItemHeight(hwnd) \
+    (INT)SNDMSGA((hwnd), TVM_GETITEMHEIGHT, 0, 0)
+
+#define TreeView_SetBkColor(hwnd, clr) \
+    (COLORREF)SNDMSGA((hwnd), TVM_SETBKCOLOR, 0, (LPARAM)clr)
+
+#define TreeView_SetTextColor(hwnd, clr) \
+    (COLORREF)SNDMSGA((hwnd), TVM_SETTEXTCOLOR, 0, (LPARAM)clr)
+
+#define TreeView_GetBkColor(hwnd) \
+    (COLORREF)SNDMSGA((hwnd), TVM_GETBKCOLOR, 0, 0)
+
+#define TreeView_GetTextColor(hwnd) \
+    (COLORREF)SNDMSGA((hwnd), TVM_GETTEXTCOLOR, 0, 0)
+
+#define TreeView_SetScrollTime(hwnd, uTime) \
+    (UINT)SNDMSGA((hwnd), TVM_SETSCROLLTIME, uTime, 0)
+
+#define TreeView_GetScrollTime(hwnd) \
+    (UINT)SNDMSGA((hwnd), TVM_GETSCROLLTIME, 0, 0)
+
+#define TreeView_SetInsertMark(hwnd, hItem, fAfter) \
+    (BOOL)SNDMSGA((hwnd), TVM_SETINSERTMARK, (WPARAM)(fAfter), \
+                       (LPARAM) (hItem))
+
+#define TreeView_SetInsertMarkColor(hwnd, clr) \
+    (COLORREF)SNDMSGA((hwnd), TVM_SETINSERTMARKCOLOR, 0, (LPARAM)clr)
+
+#define TreeView_GetInsertMarkColor(hwnd) \
+    (COLORREF)SNDMSGA((hwnd), TVM_GETINSERTMARKCOLOR, 0, 0)
+
+#define TreeView_SetItemState(hwndTV, hti, data, _mask) \
+{ TVITEM _TVi; \
+  _TVi.mask = TVIF_STATE; \
+  _TVi.hItem = hti; \
+  _TVi.stateMask = _mask; \
+  _TVi.state = data; \
+  SNDMSG((hwndTV), TVM_SETITEM, 0, (LPARAM)&_TVi); \
+}
+
+#define TreeView_GetItemState(hwndTV, hti, mask) \
+   (UINT)SNDMSGA((hwndTV), TVM_GETITEMSTATE, (WPARAM)(hti), (LPARAM)(mask))
+#define TreeView_GetCheckState(hwndTV, hti) \
+   ((((UINT)(SNDMSGA((hwndTV), TVM_GETITEMSTATE, (WPARAM)(hti),  \
+                     TVIS_STATEIMAGEMASK))) >> 12) -1)
+
+#define TreeView_SetLineColor(hwnd, clr) \
+    (COLORREF)SNDMSGA((hwnd), TVM_SETLINECOLOR, 0, (LPARAM)(clr))
+
+#define TreeView_GetLineColor(hwnd) \
+    (COLORREF)SNDMSGA((hwnd), TVM_GETLINECOLOR, 0, 0)
+
+#define TreeView_MapAccIDToHTREEITEM(hwnd, id) \
+    (HTREEITEM)SNDMSG((hwnd), TVM_MAPACCIDTOHTREEITEM, id, 0)
+
+#define TreeView_MapHTREEITEMToAccID(hwnd, htreeitem) \
+    (UINT)SNDMSG((hwnd), TVM_MAPHTREEITEMTOACCID, (WPARAM)htreeitem, 0)
+
+#define TreeView_SetUnicodeFormat(hwnd, fUnicode) \
+    (BOOL)SNDMSG((hwnd), TVM_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0)
+#define TreeView_GetUnicodeFormat(hwnd) \
+    (BOOL)SNDMSG((hwnd), TVM_GETUNICODEFORMAT, 0, 0)
+
+/* Listview control */
+
+#define WC_LISTVIEWA          "SysListView32"
+#if defined(__GNUC__)
+# define WC_LISTVIEWW (const WCHAR []){ 'S','y','s', \
+  'L','i','s','t','V','i','e','w','3','2',0 }
+#elif defined(_MSC_VER)
+# define WC_LISTVIEWW         L"SysListView32"
+#else
+static const WCHAR WC_LISTVIEWW[] = { 'S','y','s',
+  'L','i','s','t','V','i','e','w','3','2',0 };
+#endif
+#define WC_LISTVIEW  WINELIB_NAME_AW(WC_LISTVIEW)
+
+#define LVSCW_AUTOSIZE -1
+#define LVSCW_AUTOSIZE_USEHEADER -2
+
+#define LVS_ICON                0x0000
+#define LVS_REPORT              0x0001
+#define LVS_SMALLICON           0x0002
+#define LVS_LIST                0x0003
+#define LVS_TYPEMASK            0x0003
+#define LVS_SINGLESEL           0x0004
+#define LVS_SHOWSELALWAYS       0x0008
+#define LVS_SORTASCENDING       0x0010
+#define LVS_SORTDESCENDING      0x0020
+#define LVS_SHAREIMAGELISTS     0x0040
+#define LVS_NOLABELWRAP         0x0080
+#define LVS_AUTOARRANGE         0x0100
+#define LVS_EDITLABELS          0x0200
+#define LVS_OWNERDATA           0x1000
+#define LVS_NOSCROLL            0x2000
+#define LVS_TYPESTYLEMASK       0xfc00
+#define LVS_ALIGNTOP            0x0000
+#define LVS_ALIGNLEFT           0x0800
+#define LVS_ALIGNMASK           0x0c00
+#define LVS_OWNERDRAWFIXED      0x0400
+#define LVS_NOCOLUMNHEADER      0x4000
+#define LVS_NOSORTHEADER        0x8000
+
+#define LVS_EX_GRIDLINES        0x0001
+#define LVS_EX_SUBITEMIMAGES    0x0002
+#define LVS_EX_CHECKBOXES       0x0004
+#define LVS_EX_TRACKSELECT      0x0008
+#define LVS_EX_HEADERDRAGDROP   0x0010
+#define LVS_EX_FULLROWSELECT    0x0020
+#define LVS_EX_ONECLICKACTIVATE 0x0040
+#define LVS_EX_TWOCLICKACTIVATE 0x0080
+#define LVS_EX_FLATSB           0x0100
+#define LVS_EX_REGIONAL         0x0200
+#define LVS_EX_INFOTIP          0x0400
+#define LVS_EX_UNDERLINEHOT     0x0800
+#define LVS_EX_UNDERLINECOLD    0x1000
+#define LVS_EX_MULTIWORKAREAS   0x2000
+#define LVS_EX_LABELTIP         0x4000
+#define LVS_EX_BORDERSELECT     0x8000
+#define LVS_EX_DOUBLEBUFFER     0x00010000
+#define LVS_EX_HIDELABELS       0x00020000
+#define LVS_EX_SINGLEROW        0x00040000
+#define LVS_EX_SNAPTOGRID       0x00080000
+#define LVS_EX_SIMPLESELECT     0x00100000
+#define LVS_EX_JUSTIFYCOLUMNS   0x00200000
+#define LVS_EX_TRANSPARENTBKGND 0x00400000
+#define LVS_EX_TRANSPARENTSHADOWTEXT 0x00800000
+#define LVS_EX_AUTOAUTOARRANGE  0x01000000
+#define LVS_EX_HEADERINALLVIEWS 0x02000000
+#define LVS_EX_AUTOCHECKSELECT  0x08000000
+#define LVS_EX_AUTOSIZECOLUMNS  0x10000000
+#define LVS_EX_COLUMNSNAPPOINTS 0x40000000
+#define LVS_EX_COLUMNOVERFLOW   0x80000000
+
+#define LVCF_FMT                0x0001
+#define LVCF_WIDTH              0x0002
+#define LVCF_TEXT               0x0004
+#define LVCF_SUBITEM            0x0008
+#define LVCF_IMAGE              0x0010
+#define LVCF_ORDER              0x0020
+
+#define LVCFMT_LEFT             0x0000
+#define LVCFMT_RIGHT            0x0001
+#define LVCFMT_CENTER           0x0002
+#define LVCFMT_JUSTIFYMASK      0x0003
+#define LVCFMT_FIXED_WIDTH      0x0100
+#define LVCFMT_IMAGE            0x0800
+#define LVCFMT_BITMAP_ON_RIGHT  0x1000
+#define LVCFMT_COL_HAS_IMAGES   0x8000
+#define LVCFMT_NO_DPI_SCALE     0x00040000
+#define LVCFMT_FIXED_RATIO      0x00080000
+#define LVCFMT_LINE_BREAK       0x00100000
+#define LVCFMT_FILL             0x00200000
+#define LVCFMT_WRAP             0x00400000
+#define LVCFMT_NO_TITLE         0x00800000
+#define LVCFMT_SPLIT_BUTTON     0x01000000
+#define LVCFMT_TILE_PLACEMENTMASK (LVCFMT_LINE_BREAK | LVCFMT_FILL)
+
+#define LVSIL_NORMAL            0
+#define LVSIL_SMALL             1
+#define LVSIL_STATE             2
+
+/* following 2 flags only for LVS_OWNERDATA listviews */
+/* and only in report or list mode */
+#define LVSICF_NOINVALIDATEALL  0x0001
+#define LVSICF_NOSCROLL         0x0002
+
+
+#define LVFI_PARAM              0X0001
+#define LVFI_STRING             0X0002
+#define LVFI_PARTIAL            0X0008
+#define LVFI_WRAP               0X0020
+#define LVFI_NEARESTXY          0X0040
+
+#define LVIF_TEXT               0x0001
+#define LVIF_IMAGE              0x0002
+#define LVIF_PARAM              0x0004
+#define LVIF_STATE              0x0008
+#define LVIF_INDENT             0x0010
+#define LVIF_GROUPID            0x0100
+#define LVIF_COLUMNS            0x0200
+#define LVIF_NORECOMPUTE        0x0800
+#define LVIF_DI_SETITEM         0x1000
+#define LVIF_COLFMT             0x00010000
+
+#define LVIR_BOUNDS             0x0000
+#define LVIR_ICON               0x0001
+#define LVIR_LABEL              0x0002
+#define LVIR_SELECTBOUNDS       0x0003
+
+#define LVIS_FOCUSED            0x0001
+#define LVIS_SELECTED           0x0002
+#define LVIS_CUT                0x0004
+#define LVIS_DROPHILITED        0x0008
+#define LVIS_ACTIVATING         0x0020
+
+#define LVIS_OVERLAYMASK        0x0F00
+#define LVIS_STATEIMAGEMASK     0xF000
+
+#define LVNI_ALL		0x0000
+#define LVNI_FOCUSED		0x0001
+#define LVNI_SELECTED		0x0002
+#define LVNI_CUT		0x0004
+#define LVNI_DROPHILITED	0x0008
+
+#define LVNI_ABOVE		0x0100
+#define LVNI_BELOW		0x0200
+#define LVNI_TOLEFT		0x0400
+#define LVNI_TORIGHT		0x0800
+
+#define LVHT_NOWHERE		0x0001
+#define LVHT_ONITEMICON		0x0002
+#define LVHT_ONITEMLABEL	0x0004
+#define LVHT_ONITEMSTATEICON	0x0008
+#define LVHT_ONITEM		(LVHT_ONITEMICON|LVHT_ONITEMLABEL|LVHT_ONITEMSTATEICON)
+
+#define LVHT_ABOVE		0x0008
+#define LVHT_BELOW		0x0010
+#define LVHT_TORIGHT		0x0020
+#define LVHT_TOLEFT		0x0040
+
+#define LV_VIEW_ICON            0x0000
+#define LV_VIEW_DETAILS         0x0001
+#define LV_VIEW_SMALLICON       0x0002
+#define LV_VIEW_LIST            0x0003
+#define LV_VIEW_TILE            0x0004
+#define LV_VIEW_MAX             0x0004
+
+#define LVGF_NONE               0x00000000
+#define LVGF_HEADER             0x00000001
+#define LVGF_FOOTER             0x00000002
+#define LVGF_STATE              0x00000004
+#define LVGF_ALIGN              0x00000008
+#define LVGF_GROUPID            0x00000010
+#define LVGF_SUBTITLE           0x00000100
+#define LVGF_TASK               0x00000200
+#define LVGF_DESCRIPTIONTOP     0x00000400
+#define LVGF_DESCRIPTIONBOTTOM  0x00000800
+#define LVGF_TITLEIMAGE         0x00001000
+#define LVGF_EXTENDEDIMAGE      0x00002000
+#define LVGF_ITEMS              0x00004000
+#define LVGF_SUBSET             0x00008000
+#define LVGF_SUBSETITEMS        0x00010000
+
+#define LVGS_NORMAL             0x00000000
+#define LVGS_COLLAPSED          0x00000001
+#define LVGS_HIDDEN             0x00000002
+
+#define LVGA_HEADER_LEFT        0x00000001
+#define LVGA_HEADER_CENTER      0x00000002
+#define LVGA_HEADER_RIGHT       0x00000004
+#define LVGA_FOOTER_LEFT        0x00000008
+#define LVGA_FOOTER_CENTER      0x00000010
+#define LVGA_FOOTER_RIGHT       0x00000020
+
+#define LVGMF_NONE              0x00000000
+#define LVGMF_BORDERSIZE        0x00000001
+#define LVGMF_BORDERCOLOR       0x00000002
+#define LVGMF_TEXTCOLOR         0x00000004
+
+#define LVTVIF_AUTOSIZE         0x00000000
+#define LVTVIF_FIXEDWIDTH       0x00000001
+#define LVTVIF_FIXEDHEIGHT      0x00000002
+#define LVTVIF_FIXEDSIZE        0x00000003
+#define LVTVIF_EXTENDED         0x00000004
+
+#define LVTVIM_TILESIZE         0x00000001
+#define LVTVIM_COLUMNS          0x00000002
+#define LVTVIM_LABELMARGIN      0x00000004
+
+#define LVIM_AFTER              0x00000001
+
+#define LVM_FIRST               0x1000
+#define LVM_GETBKCOLOR          (LVM_FIRST+0)
+#define LVM_SETBKCOLOR          (LVM_FIRST+1)
+#define LVM_GETIMAGELIST        (LVM_FIRST+2)
+#define LVM_SETIMAGELIST        (LVM_FIRST+3)
+#define LVM_GETITEMCOUNT        (LVM_FIRST+4)
+#define LVM_GETITEMA            (LVM_FIRST+5)
+#define LVM_GETITEMW            (LVM_FIRST+75)
+#define LVM_GETITEM             WINELIB_NAME_AW(LVM_GETITEM)
+#define LVM_SETITEMA            (LVM_FIRST+6)
+#define LVM_SETITEMW            (LVM_FIRST+76)
+#define LVM_SETITEM             WINELIB_NAME_AW(LVM_SETITEM)
+#define LVM_INSERTITEMA         (LVM_FIRST+7)
+#define LVM_INSERTITEMW         (LVM_FIRST+77)
+#define LVM_INSERTITEM          WINELIB_NAME_AW(LVM_INSERTITEM)
+#define LVM_DELETEITEM          (LVM_FIRST+8)
+#define LVM_DELETEALLITEMS      (LVM_FIRST+9)
+#define LVM_GETCALLBACKMASK     (LVM_FIRST+10)
+#define LVM_SETCALLBACKMASK     (LVM_FIRST+11)
+#define LVM_GETNEXTITEM         (LVM_FIRST+12)
+#define LVM_FINDITEMA           (LVM_FIRST+13)
+#define LVM_FINDITEMW           (LVM_FIRST+83)
+#define LVM_FINDITEM            WINELIB_NAME_AW(LVM_FINDITEM)
+#define LVM_GETITEMRECT         (LVM_FIRST+14)
+#define LVM_SETITEMPOSITION     (LVM_FIRST+15)
+#define LVM_GETITEMPOSITION     (LVM_FIRST+16)
+#define LVM_GETSTRINGWIDTHA     (LVM_FIRST+17)
+#define LVM_GETSTRINGWIDTHW     (LVM_FIRST+87)
+#define LVM_GETSTRINGWIDTH      WINELIB_NAME_AW(LVM_GETSTRINGWIDTH)
+#define LVM_HITTEST             (LVM_FIRST+18)
+#define LVM_ENSUREVISIBLE       (LVM_FIRST+19)
+#define LVM_SCROLL              (LVM_FIRST+20)
+#define LVM_REDRAWITEMS         (LVM_FIRST+21)
+#define LVM_ARRANGE             (LVM_FIRST+22)
+#define LVM_EDITLABELA          (LVM_FIRST+23)
+#define LVM_EDITLABELW          (LVM_FIRST+118)
+#define LVM_EDITLABEL           WINELIB_NAME_AW(LVM_EDITLABEL)
+#define LVM_GETEDITCONTROL      (LVM_FIRST+24)
+#define LVM_GETCOLUMNA          (LVM_FIRST+25)
+#define LVM_GETCOLUMNW          (LVM_FIRST+95)
+#define LVM_GETCOLUMN           WINELIB_NAME_AW(LVM_GETCOLUMN)
+#define LVM_SETCOLUMNA          (LVM_FIRST+26)
+#define LVM_SETCOLUMNW          (LVM_FIRST+96)
+#define LVM_SETCOLUMN           WINELIB_NAME_AW(LVM_SETCOLUMN)
+#define LVM_INSERTCOLUMNA       (LVM_FIRST+27)
+#define LVM_INSERTCOLUMNW       (LVM_FIRST+97)
+#define LVM_INSERTCOLUMN        WINELIB_NAME_AW(LVM_INSERTCOLUMN)
+#define LVM_DELETECOLUMN        (LVM_FIRST+28)
+#define LVM_GETCOLUMNWIDTH      (LVM_FIRST+29)
+#define LVM_SETCOLUMNWIDTH      (LVM_FIRST+30)
+#define LVM_GETHEADER           (LVM_FIRST+31)
+
+#define LVM_CREATEDRAGIMAGE     (LVM_FIRST+33)
+#define LVM_GETVIEWRECT         (LVM_FIRST+34)
+#define LVM_GETTEXTCOLOR        (LVM_FIRST+35)
+#define LVM_SETTEXTCOLOR        (LVM_FIRST+36)
+#define LVM_GETTEXTBKCOLOR      (LVM_FIRST+37)
+#define LVM_SETTEXTBKCOLOR      (LVM_FIRST+38)
+#define LVM_GETTOPINDEX         (LVM_FIRST+39)
+#define LVM_GETCOUNTPERPAGE     (LVM_FIRST+40)
+#define LVM_GETORIGIN           (LVM_FIRST+41)
+#define LVM_UPDATE              (LVM_FIRST+42)
+#define LVM_SETITEMSTATE        (LVM_FIRST+43)
+#define LVM_GETITEMSTATE        (LVM_FIRST+44)
+#define LVM_GETITEMTEXTA        (LVM_FIRST+45)
+#define LVM_GETITEMTEXTW        (LVM_FIRST+115)
+#define LVM_GETITEMTEXT         WINELIB_NAME_AW(LVM_GETITEMTEXT)
+#define LVM_SETITEMTEXTA        (LVM_FIRST+46)
+#define LVM_SETITEMTEXTW        (LVM_FIRST+116)
+#define LVM_SETITEMTEXT         WINELIB_NAME_AW(LVM_SETITEMTEXT)
+#define LVM_SETITEMCOUNT        (LVM_FIRST+47)
+#define LVM_SORTITEMS           (LVM_FIRST+48)
+#define LVM_SETITEMPOSITION32   (LVM_FIRST+49)
+#define LVM_GETSELECTEDCOUNT    (LVM_FIRST+50)
+#define LVM_GETITEMSPACING      (LVM_FIRST+51)
+#define LVM_GETISEARCHSTRINGA   (LVM_FIRST+52)
+#define LVM_GETISEARCHSTRINGW   (LVM_FIRST+117)
+#define LVM_GETISEARCHSTRING    WINELIB_NAME_AW(LVM_GETISEARCHSTRING)
+#define LVM_SETICONSPACING      (LVM_FIRST+53)
+#define LVM_SETEXTENDEDLISTVIEWSTYLE (LVM_FIRST+54)
+#define LVM_GETEXTENDEDLISTVIEWSTYLE (LVM_FIRST+55)
+#define LVM_GETSUBITEMRECT      (LVM_FIRST+56)
+#define LVM_SUBITEMHITTEST      (LVM_FIRST+57)
+#define LVM_SETCOLUMNORDERARRAY (LVM_FIRST+58)
+#define LVM_GETCOLUMNORDERARRAY (LVM_FIRST+59)
+#define LVM_SETHOTITEM          (LVM_FIRST+60)
+#define LVM_GETHOTITEM          (LVM_FIRST+61)
+#define LVM_SETHOTCURSOR        (LVM_FIRST+62)
+#define LVM_GETHOTCURSOR        (LVM_FIRST+63)
+#define LVM_APPROXIMATEVIEWRECT (LVM_FIRST+64)
+#define LVM_SETWORKAREAS        (LVM_FIRST+65)
+#define LVM_GETSELECTIONMARK    (LVM_FIRST+66)
+#define LVM_SETSELECTIONMARK    (LVM_FIRST+67)
+#define LVM_SETBKIMAGEA         (LVM_FIRST+68)
+#define LVM_SETBKIMAGEW         (LVM_FIRST+138)
+#define LVM_SETBKIMAGE          WINELIB_NAME_AW(LVM_SETBKIMAGE)
+#define LVM_GETBKIMAGEA         (LVM_FIRST+69)
+#define LVM_GETBKIMAGEW         (LVM_FIRST+139)
+#define LVM_GETBKIMAGE          WINELIB_NAME_AW(LVM_GETBKIMAGE)
+#define LVM_GETWORKAREAS        (LVM_FIRST+70)
+#define LVM_SETHOVERTIME        (LVM_FIRST+71)
+#define LVM_GETHOVERTIME        (LVM_FIRST+72)
+#define LVM_GETNUMBEROFWORKAREAS (LVM_FIRST+73)
+#define LVM_SETTOOLTIPS         (LVM_FIRST+74)
+#define LVM_GETTOOLTIPS         (LVM_FIRST+78)
+#define LVM_GETUNICODEFORMAT    (CCM_GETUNICODEFORMAT)
+#define LVM_SETUNICODEFORMAT    (CCM_SETUNICODEFORMAT)
+#define LVM_SETSELECTEDCOLUMN   (LVM_FIRST + 140)
+#define LVM_SETTILEWIDTH        (LVM_FIRST + 141)
+#define LVM_SETVIEW             (LVM_FIRST + 142)
+#define LVM_GETVIEW             (LVM_FIRST + 143)
+#define LVM_INSERTGROUP         (LVM_FIRST + 145)
+#define LVM_SETGROUPINFO        (LVM_FIRST + 147)
+#define LVM_GETGROUPINFO        (LVM_FIRST + 149)
+#define LVM_REMOVEGROUP         (LVM_FIRST + 150)
+#define LVM_MOVEGROUP           (LVM_FIRST + 151)
+#define LVM_MOVEITEMTOGROUP     (LVM_FIRST + 154)
+#define LVM_SETGROUPMETRICS     (LVM_FIRST + 155)
+#define LVM_GETGROUPMETRICS     (LVM_FIRST + 156)
+#define LVM_ENABLEGROUPVIEW     (LVM_FIRST + 157)
+#define LVM_SORTGROUPS          (LVM_FIRST + 158)
+#define LVM_INSERTGROUPSORTED   (LVM_FIRST + 159)
+#define LVM_REMOVEALLGROUPS     (LVM_FIRST + 160)
+#define LVM_HASGROUP            (LVM_FIRST + 161)
+#define LVM_SETTILEVIEWINFO     (LVM_FIRST + 162)
+#define LVM_GETTILEVIEWINFO     (LVM_FIRST + 163)
+#define LVM_SETTILEINFO         (LVM_FIRST + 164)
+#define LVM_GETTILEINFO         (LVM_FIRST + 165)
+#define LVM_SETINSERTMARK       (LVM_FIRST + 166)
+#define LVM_GETINSERTMARK       (LVM_FIRST + 167)
+#define LVM_INSERTMARKHITTEST   (LVM_FIRST + 168)
+#define LVM_GETINSERTMARKRECT   (LVM_FIRST + 169)
+#define LVM_SETINSERTMARKCOLOR  (LVM_FIRST + 170)
+#define LVM_GETINSERTMARKCOLOR  (LVM_FIRST + 171)
+#define LVM_SETINFOTIP          (LVM_FIRST + 173)
+#define LVM_GETSELECTEDCOLUMN   (LVM_FIRST + 174)
+#define LVM_ISGROUPVIEWENABLED  (LVM_FIRST + 175)
+#define LVM_GETOUTLINECOLOR     (LVM_FIRST + 176)
+#define LVM_SETOUTLINECOLOR     (LVM_FIRST + 177)
+#define LVM_CANCELEDITLABEL     (LVM_FIRST + 179)
+#define LVM_MAPINDEXTOID        (LVM_FIRST + 180)
+#define LVM_MAPIDTOINDEX        (LVM_FIRST + 181)
+
+#define LVN_FIRST               (0U-100U)
+#define LVN_LAST                (0U-199U)
+#define LVN_ITEMCHANGING        (LVN_FIRST-0)
+#define LVN_ITEMCHANGED         (LVN_FIRST-1)
+#define LVN_INSERTITEM          (LVN_FIRST-2)
+#define LVN_DELETEITEM          (LVN_FIRST-3)
+#define LVN_DELETEALLITEMS      (LVN_FIRST-4)
+#define LVN_BEGINLABELEDITA     (LVN_FIRST-5)
+#define LVN_BEGINLABELEDITW     (LVN_FIRST-75)
+#define LVN_BEGINLABELEDIT      WINELIB_NAME_AW(LVN_BEGINLABELEDIT)
+#define LVN_ENDLABELEDITA       (LVN_FIRST-6)
+#define LVN_ENDLABELEDITW       (LVN_FIRST-76)
+#define LVN_ENDLABELEDIT        WINELIB_NAME_AW(LVN_ENDLABELEDIT)
+#define LVN_COLUMNCLICK         (LVN_FIRST-8)
+#define LVN_BEGINDRAG           (LVN_FIRST-9)
+#define LVN_BEGINRDRAG          (LVN_FIRST-11)
+#define LVN_ODCACHEHINT         (LVN_FIRST-13)
+#define LVN_ITEMACTIVATE        (LVN_FIRST-14)
+#define LVN_ODSTATECHANGED      (LVN_FIRST-15)
+#define LVN_HOTTRACK            (LVN_FIRST-21)
+#define LVN_ODFINDITEMA         (LVN_FIRST-52)
+#define LVN_ODFINDITEMW         (LVN_FIRST-79)
+#define LVN_ODFINDITEM          WINELIB_NAME_AW(LVN_ODFINDITEM)
+#define LVN_GETDISPINFOA        (LVN_FIRST-50)
+#define LVN_GETDISPINFOW        (LVN_FIRST-77)
+#define LVN_GETDISPINFO         WINELIB_NAME_AW(LVN_GETDISPINFO)
+#define LVN_SETDISPINFOA        (LVN_FIRST-51)
+#define LVN_SETDISPINFOW        (LVN_FIRST-78)
+#define LVN_SETDISPINFO         WINELIB_NAME_AW(LVN_SETDISPINFO)
+#define LVN_KEYDOWN             (LVN_FIRST-55)
+#define LVN_MARQUEEBEGIN        (LVN_FIRST-56)
+#define LVN_GETINFOTIPA         (LVN_FIRST-57)
+#define LVN_GETINFOTIPW         (LVN_FIRST-58)
+#define LVN_GETINFOTIP          WINELIB_NAME_AW(LVN_GETINFOTIP)
+#define LVN_BEGINSCROLL         (LVN_FIRST-80)
+#define LVN_ENDSCROLL           (LVN_FIRST-81)
+#define LVN_LINKCLICK           (LVN_FIRST-84)
+#define LVN_ASYNCDRAWN          (LVN_FIRST-86)
+#define LVN_GETEMPTYMARKUP      (LVN_FIRST-87)
+
+#define LVA_DEFAULT             0x0000
+#define LVA_ALIGNLEFT           0x0001
+#define LVA_ALIGNTOP            0x0002
+#define LVA_SNAPTOGRID          0x0005
+
+typedef struct tagLVITEMA
+{
+    UINT mask;
+    INT  iItem;
+    INT  iSubItem;
+    UINT state;
+    UINT stateMask;
+    LPSTR  pszText;
+    INT  cchTextMax;
+    INT  iImage;
+    LPARAM lParam;
+    INT  iIndent;	/* (_WIN32_IE >= 0x0300) */
+    int iGroupId;       /* (_WIN32_IE >= 0x560) */
+    UINT cColumns;      /* (_WIN32_IE >= 0x560) */
+    PUINT puColumns;	/* (_WIN32_IE >= 0x560) */
+} LVITEMA, *LPLVITEMA;
+
+typedef struct tagLVITEMW
+{
+    UINT mask;
+    INT  iItem;
+    INT  iSubItem;
+    UINT state;
+    UINT stateMask;
+    LPWSTR pszText;
+    INT  cchTextMax;
+    INT  iImage;
+    LPARAM lParam;
+    INT  iIndent;	/* (_WIN32_IE >= 0x0300) */
+    int iGroupId;       /* (_WIN32_IE >= 0x560) */
+    UINT cColumns;      /* (_WIN32_IE >= 0x560) */
+    PUINT puColumns;	/* (_WIN32_IE >= 0x560) */
+} LVITEMW, *LPLVITEMW;
+
+#define LVITEM   WINELIB_NAME_AW(LVITEM)
+#define LPLVITEM WINELIB_NAME_AW(LPLVITEM)
+
+#define LVITEM_V1_SIZEA CCSIZEOF_STRUCT(LVITEMA, lParam)
+#define LVITEM_V1_SIZEW CCSIZEOF_STRUCT(LVITEMW, lParam)
+#define LVITEM_V1_SIZE WINELIB_NAME_AW(LVITEM_V1_SIZE)
+
+#define LV_ITEM  LVITEM
+#define LV_ITEMA LVITEMA
+#define LV_ITEMW LVITEMW
+
+typedef struct LVSETINFOTIP
+{
+    UINT cbSize;
+    DWORD dwFlags;
+    LPWSTR pszText;
+    int iItem;
+    int iSubItem;
+} LVSETINFOTIP, *PLVSETINFOTIP;
+
+/* ListView background image structs and constants
+   For _WIN32_IE version 0x400 and later. */
+
+typedef struct tagLVBKIMAGEA
+{
+    ULONG ulFlags;
+    HBITMAP hbm;
+    LPSTR pszImage;
+    UINT cchImageMax;
+    int xOffsetPercent;
+    int yOffsetPercent;
+} LVBKIMAGEA, *LPLVBKIMAGEA;
+
+typedef struct tagLVBKIMAGEW
+{
+    ULONG ulFlags;
+    HBITMAP hbm;
+    LPWSTR pszImage;
+    UINT cchImageMax;
+    int xOffsetPercent;
+    int yOffsetPercent;
+} LVBKIMAGEW, *LPLVBKIMAGEW;
+
+#define LVBKIMAGE WINELIB_NAME_AW(LVBKIMAGE)
+#define LPLVBKIMAGE WINELIB_NAME_AW(LPLVBKIMAGE)
+
+#define LVBKIF_SOURCE_NONE      0x00000000
+#define LVBKIF_SOURCE_HBITMAP   0x00000001
+#define LVBKIF_SOURCE_URL       0x00000002
+#define LVBKIF_SOURCE_MASK      0x00000003
+#define LVBKIF_STYLE_NORMAL     0x00000000
+#define LVBKIF_STYLE_TILE       0x00000010
+#define LVBKIF_STYLE_MASK       0x00000010
+#define LVBKIF_FLAG_TILEOFFSET  0x00000100
+#define LVBKIF_TYPE_WATERMARK   0x10000000
+
+#define ListView_SetBkImage(hwnd, plvbki) \
+    (BOOL)SNDMSG((hwnd), LVM_SETBKIMAGE, 0, (LPARAM)plvbki)
+
+#define ListView_GetBkImage(hwnd, plvbki) \
+    (BOOL)SNDMSG((hwnd), LVM_GETBKIMAGE, 0, (LPARAM)plvbki)
+
+typedef struct tagLVCOLUMNA
+{
+    UINT mask;
+    INT  fmt;
+    INT  cx;
+    LPSTR  pszText;
+    INT  cchTextMax;
+    INT  iSubItem;
+    INT  iImage;  /* (_WIN32_IE >= 0x0300) */
+    INT  iOrder;  /* (_WIN32_IE >= 0x0300) */
+} LVCOLUMNA, *LPLVCOLUMNA;
+
+typedef struct tagLVCOLUMNW
+{
+    UINT mask;
+    INT  fmt;
+    INT  cx;
+    LPWSTR pszText;
+    INT  cchTextMax;
+    INT  iSubItem;
+    INT  iImage;	/* (_WIN32_IE >= 0x0300) */
+    INT  iOrder;	/* (_WIN32_IE >= 0x0300) */
+} LVCOLUMNW, *LPLVCOLUMNW;
+
+#define LVCOLUMN   WINELIB_NAME_AW(LVCOLUMN)
+#define LPLVCOLUMN WINELIB_NAME_AW(LPLVCOLUMN)
+
+#define LVCOLUMN_V1_SIZEA CCSIZEOF_STRUCT(LVCOLUMNA, iSubItem)
+#define LVCOLUMN_V1_SIZEW CCSIZEOF_STRUCT(LVCOLUMNW, iSubItem)
+#define LVCOLUMN_V1_SIZE WINELIB_NAME_AW(LVCOLUMN_V1_SIZE)
+
+#define LV_COLUMN       LVCOLUMN
+
+
+typedef struct tagNMLISTVIEW
+{
+    NMHDR hdr;
+    INT iItem;
+    INT iSubItem;
+    UINT uNewState;
+    UINT uOldState;
+    UINT uChanged;
+    POINT ptAction;
+    LPARAM  lParam;
+} NMLISTVIEW, *LPNMLISTVIEW;
+
+#define NM_LISTVIEW     NMLISTVIEW
+#define LPNM_LISTVIEW   LPNMLISTVIEW
+
+typedef struct tagNMITEMACTIVATE
+{
+    NMHDR hdr;
+    int iItem;
+    int iSubItem;
+    UINT uNewState;
+    UINT uOldState;
+    UINT uChanged;
+    POINT ptAction;
+    LPARAM lParam;
+    UINT uKeyFlags;
+} NMITEMACTIVATE, *LPNMITEMACTIVATE;
+
+#define LVKF_ALT     0x0001
+#define LVKF_CONTROL 0x0002
+#define LVKF_SHIFT   0x0004
+
+typedef struct tagLVDISPINFO
+{
+    NMHDR hdr;
+    LVITEMA item;
+} NMLVDISPINFOA, *LPNMLVDISPINFOA;
+
+typedef struct tagLVDISPINFOW
+{
+    NMHDR hdr;
+    LVITEMW item;
+} NMLVDISPINFOW, *LPNMLVDISPINFOW;
+
+#define NMLVDISPINFO   WINELIB_NAME_AW(NMLVDISPINFO)
+#define LPNMLVDISPINFO WINELIB_NAME_AW(LPNMLVDISPINFO)
+
+#define LV_DISPINFO	NMLVDISPINFO
+#define LV_DISPINFOA	NMLVDISPINFOA
+#define LV_DISPINFOW	NMLVDISPINFOW
+
+#include <pshpack1.h>
+typedef struct tagLVKEYDOWN
+{
+  NMHDR hdr;
+  WORD  wVKey;
+  UINT flags;
+} NMLVKEYDOWN, *LPNMLVKEYDOWN;
+#include <poppack.h>
+
+#define LV_KEYDOWN     NMLVKEYDOWN
+
+typedef struct tagNMLVGETINFOTIPA
+{
+    NMHDR hdr;
+    DWORD dwFlags;
+    LPSTR pszText;
+    int cchTextMax;
+    int iItem;
+    int iSubItem;
+    LPARAM lParam;
+} NMLVGETINFOTIPA, *LPNMLVGETINFOTIPA;
+
+typedef struct tagNMLVGETINFOTIPW
+{
+    NMHDR hdr;
+    DWORD dwFlags;
+    LPWSTR pszText;
+    int cchTextMax;
+    int iItem;
+    int iSubItem;
+    LPARAM lParam;
+} NMLVGETINFOTIPW, *LPNMLVGETINFOTIPW;
+
+#define NMLVGETINFOTIP WINELIB_NAME_AW(NMLVGETINFOTIP)
+#define LPNMLVGETINFOTIP WINELIB_NAME_AW(LPNMLVGETINFOTIP)
+
+typedef struct tagLVHITTESTINFO
+{
+    POINT pt;
+    UINT  flags;
+    INT   iItem;
+    INT   iSubItem;
+} LVHITTESTINFO, *LPLVHITTESTINFO;
+
+#define LV_HITTESTINFO LVHITTESTINFO
+#define _LV_HITTESTINFO tagLVHITTESTINFO
+#define LVHITTESTINFO_V1_SIZE CCSIZEOF_STRUCT(LVHITTESTINFO,iItem)
+
+typedef struct tagLVFINDINFOA
+{
+	UINT flags;
+	LPCSTR psz;
+	LPARAM lParam;
+	POINT pt;
+	UINT vkDirection;
+} LVFINDINFOA, *LPLVFINDINFOA;
+
+typedef struct tagLVFINDINFOW
+{
+	UINT flags;
+	LPCWSTR psz;
+	LPARAM lParam;
+	POINT pt;
+	UINT vkDirection;
+} LVFINDINFOW, *LPLVFINDINFOW;
+
+#define LVFINDINFO WINELIB_NAME_AW(LVFINDINFO)
+#define LPLVFINDINFO WINELIB_NAME_AW(LPLVFINDINFO)
+
+#define LV_FINDINFO	LVFINDINFO
+#define LV_FINDINFOA	LVFINDINFOA
+#define LV_FINDINFOW	LVFINDINFOW
+
+/* Groups relates structures */
+
+typedef struct LVGROUP
+{
+	UINT cbSize;
+	UINT mask;
+	LPWSTR pszHeader;
+	int cchHeader;
+	LPWSTR pszFooter;
+	int cchFooter;
+	int iGroupId;
+	UINT stateMask;
+	UINT state;
+	UINT uAlign;
+} LVGROUP, *PLVGROUP;
+
+typedef struct LVGROUPMETRICS
+{
+	UINT cbSize;
+	UINT mask;
+	UINT Left;
+	UINT Top;
+	UINT Right;
+	UINT Bottom;
+	COLORREF crLeft;
+	COLORREF crTop;
+	COLORREF crRight;
+	COLORREF crBottom;
+	COLORREF crRightHeader;
+	COLORREF crFooter;
+} LVGROUPMETRICS, *PLVGROUPMETRICS;
+
+typedef INT (*PFNLVGROUPCOMPARE)(INT, INT, VOID*);
+
+typedef struct LVINSERTGROUPSORTED
+{
+	PFNLVGROUPCOMPARE pfnGroupCompare;
+	LPVOID *pvData;
+	LVGROUP lvGroup;
+} LVINSERTGROUPSORTED, *PLVINSERTGROUPSORTED;
+
+/* Tile related structures */
+
+typedef struct LVTILEINFO
+{
+	UINT cbSize;
+	int iItem;
+	UINT cColumns;
+	PUINT puColumns;
+} LVTILEINFO, *PLVTILEINFO;
+
+typedef struct LVTILEVIEWINFO
+{
+	UINT cbSize;
+	DWORD dwMask;
+	DWORD dwFlags;
+	SIZE sizeTile;
+	int cLines;
+	RECT rcLabelMargin;
+} LVTILEVIEWINFO, *PLVTILEVIEWINFO;
+
+typedef struct LVINSERTMARK
+{
+	UINT cbSize;
+	DWORD dwFlags;
+	int iItem;
+	DWORD dwReserved;
+} LVINSERTMARK, *PLVINSERTMARK;
+
+typedef struct tagTCHITTESTINFO
+{
+	POINT pt;
+	UINT flags;
+} TCHITTESTINFO, *LPTCHITTESTINFO;
+
+#define TC_HITTESTINFO TCHITTESTINFO
+
+typedef INT (CALLBACK *PFNLVCOMPARE)(LPARAM, LPARAM, LPARAM);
+
+#define NMLVCUSTOMDRAW_V3_SIZE CCSIZEOF_STRUCT(NMLCUSTOMDRW, clrTextBk)
+
+typedef struct tagNMLVCUSTOMDRAW
+{
+    NMCUSTOMDRAW nmcd;
+    COLORREF clrText;
+    COLORREF clrTextBk;
+    int iSubItem;	/* (_WIN32_IE >= 0x0400) */
+    DWORD dwItemType;	/* (_WIN32_IE >= 0x560) */
+    COLORREF clrFace;   /* (_WIN32_IE >= 0x560) */
+    int iIconEffect;	/* (_WIN32_IE >= 0x560) */
+    int iIconPhase;	/* (_WIN32_IE >= 0x560) */
+    int iPartId;	/* (_WIN32_IE >= 0x560) */
+    int iStateId;	/* (_WIN32_IE >= 0x560) */
+    RECT rcText;	/* (_WIN32_IE >= 0x560) */
+    UINT uAlign;	/* (_WIN32_IE >= 0x560) */
+} NMLVCUSTOMDRAW, *LPNMLVCUSTOMDRAW;
+
+typedef struct tagNMLVCACHEHINT
+{
+	NMHDR	hdr;
+	INT	iFrom;
+	INT	iTo;
+} NMLVCACHEHINT, *LPNMLVCACHEHINT;
+
+#define LPNM_CACHEHINT LPNMLVCACHEHINT
+#define PNM_CACHEHINT  LPNMLVCACHEHINT
+#define NM_CACHEHINT   NMLVCACHEHINT
+
+typedef struct tagNMLVFINDITEMA
+{
+    NMHDR hdr;
+    int iStart;
+    LVFINDINFOA lvfi;
+} NMLVFINDITEMA, *LPNMLVFINDITEMA;
+
+typedef struct tagNMLVFINDITEMW
+{
+    NMHDR hdr;
+    int iStart;
+    LVFINDINFOW lvfi;
+} NMLVFINDITEMW, *LPNMLVFINDITEMW;
+
+#define NMLVFINDITEM   WINELIB_NAME_AW(NMLVFINDITEM)
+#define LPNMLVFINDITEM WINELIB_NAME_AW(LPNMLVFINDITEM)
+#define NM_FINDITEM    NMLVFINDITEM
+#define LPNM_FINDITEM  LPNMLVFINDITEM
+#define PNM_FINDITEM   LPNMLVFINDITEM
+
+typedef struct tagNMLVODSTATECHANGE
+{
+    NMHDR hdr;
+    int iFrom;
+    int iTo;
+    UINT uNewState;
+    UINT uOldState;
+} NMLVODSTATECHANGE, *LPNMLVODSTATECHANGE;
+
+#define PNM_ODSTATECHANGE LPNMLVODSTATECHANGE
+#define LPNM_ODSTATECHANGE LPNMLVODSTATECHANGE
+#define NM_ODSTATECHANGE NMLVODSTATECHANGE
+
+typedef struct NMLVSCROLL
+{
+    NMHDR hdr;
+    int dx;
+    int dy;
+} NMLVSCROLL, *LPNMLVSCROLL;
+
+#define ListView_SetItemCount(hwnd,count) \
+    (BOOL)SNDMSGA((hwnd),LVM_SETITEMCOUNT,(WPARAM)(INT)(count),0)
+#define ListView_SetTextBkColor(hwnd,clrBk) \
+    (BOOL)SNDMSGA((hwnd),LVM_SETTEXTBKCOLOR,0,(LPARAM)(COLORREF)(clrBk))
+#define ListView_SetTextColor(hwnd,clrBk) \
+    (BOOL)SNDMSGA((hwnd),LVM_SETTEXTCOLOR,0,(LPARAM)(COLORREF)(clrBk))
+#define ListView_DeleteColumn(hwnd,col)\
+    (LRESULT)SNDMSGA((hwnd),LVM_DELETECOLUMN,0,(LPARAM)(INT)(col))
+#define ListView_GetColumnA(hwnd,x,col)\
+    (LRESULT)SNDMSGA((hwnd),LVM_GETCOLUMNA,(WPARAM)(INT)(x),(LPARAM)(LPLVCOLUMNA)(col))
+#define ListView_GetColumnW(hwnd,x,col)\
+    (LRESULT)SNDMSGW((hwnd),LVM_GETCOLUMNW,(WPARAM)(INT)(x),(LPARAM)(LPLVCOLUMNW)(col))
+#define ListView_GetColumn WINELIB_NAME_AW(ListView_GetColumn)
+#define ListView_SetColumnA(hwnd,x,col)\
+    (LRESULT)SNDMSGA((hwnd),LVM_SETCOLUMNA,(WPARAM)(INT)(x),(LPARAM)(LPLVCOLUMNA)(col))
+#define ListView_SetColumnW(hwnd,x,col)\
+    (LRESULT)SNDMSGW((hwnd),LVM_SETCOLUMNW,(WPARAM)(INT)(x),(LPARAM)(LPLVCOLUMNW)(col))
+#define ListView_SetColumn WINELIB_NAME_AW(ListView_SetColumn)
+#define ListView_GetColumnWidth(hwnd,x)\
+    (INT)SNDMSGW((hwnd),LVM_GETCOLUMNWIDTH,(WPARAM)(INT)(x),0L)
+#define ListView_SetColumnWidth(hwnd,x,width)\
+    (BOOL)SNDMSGW((hwnd),LVM_SETCOLUMNWIDTH,(WPARAM)(INT)(x),(LPARAM)(MAKELPARAM(width,0)))
+
+
+#define ListView_GetNextItem(hwnd,nItem,flags) \
+    (INT)SNDMSGA((hwnd),LVM_GETNEXTITEM,(WPARAM)(INT)(nItem),(LPARAM)(MAKELPARAM(flags,0)))
+#define ListView_FindItemA(hwnd,nItem,plvfi) \
+    (INT)SNDMSGA((hwnd),LVM_FINDITEMA,(WPARAM)(INT)(nItem),(LPARAM)(LVFINDINFOA*)(plvfi))
+#define ListView_FindItemW(hwnd,nItem,plvfi) \
+    (INT)SNDMSGW((hwnd),LVM_FINDITEMW,(WPARAM)(INT)(nItem),(LPARAM)(LVFINDINFOW*)(plvfi))
+#define ListView_FindItem WINELIB_NAME_AW(ListView_FindItem)
+
+#define ListView_Arrange(hwnd,code) \
+    (INT)SNDMSGA((hwnd),LVM_ARRANGE,(WPARAM)(INT)(code),0L)
+#define ListView_GetItemPosition(hwnd,i,ppt) \
+    (INT)SNDMSGA((hwnd),LVM_GETITEMPOSITION,(WPARAM)(INT)(i),(LPARAM)(LPPOINT)(ppt))
+#define ListView_GetItemRect(hwnd,i,prc,code) \
+	(BOOL)SNDMSGA((hwnd), LVM_GETITEMRECT, (WPARAM)(int)(i), \
+	((prc) ? (((RECT*)(prc))->left = (code),(LPARAM)(RECT \
+	*)(prc)) : (LPARAM)(RECT*)NULL))
+#define ListView_SetItemA(hwnd,pitem) \
+    (INT)SNDMSGA((hwnd),LVM_SETITEMA,0,(LPARAM)(const LVITEMA *)(pitem))
+#define ListView_SetItemW(hwnd,pitem) \
+    (INT)SNDMSGW((hwnd),LVM_SETITEMW,0,(LPARAM)(const LVITEMW *)(pitem))
+#define ListView_SetItem WINELIB_NAME_AW(ListView_SetItem)
+#define ListView_SetItemState(hwnd,i,data,dataMask) \
+{ LVITEMA _LVi; _LVi.state = data; _LVi.stateMask = dataMask;\
+  SNDMSGA(hwnd, LVM_SETITEMSTATE, (WPARAM)(UINT)i, (LPARAM) (LPLVITEMA)&_LVi);}
+#define ListView_GetItemState(hwnd,i,mask) \
+    (BOOL)SNDMSGA((hwnd),LVM_GETITEMSTATE,(WPARAM)(UINT)(i),(LPARAM)(UINT)(mask))
+#define ListView_GetCountPerPage(hwnd) \
+    (BOOL)SNDMSGW((hwnd),LVM_GETCOUNTPERPAGE,0,0L)
+#define ListView_GetImageList(hwnd,iImageList) \
+    (HIMAGELIST)SNDMSGA((hwnd),LVM_GETIMAGELIST,(WPARAM)(INT)(iImageList),0L)
+#define ListView_GetStringWidthA(hwnd,pstr) \
+    (INT)SNDMSGA((hwnd),LVM_GETSTRINGWIDTHA,0,(LPARAM)(LPCSTR)(pstr))
+#define ListView_GetStringWidthW(hwnd,pstr) \
+    (INT)SNDMSGW((hwnd),LVM_GETSTRINGWIDTHW,0,(LPARAM)(LPCWSTR)(pstr))
+#define ListView_GetStringWidth WINELIB_NAME_AW(ListView_GetStringWidth)
+#define ListView_GetTopIndex(hwnd) \
+    (BOOL)SNDMSGA((hwnd),LVM_GETTOPINDEX,0,0L)
+#define ListView_Scroll(hwnd,dx,dy) \
+    (BOOL)SNDMSGA((hwnd),LVM_SCROLL,(WPARAM)(INT)(dx),(LPARAM)(INT)(dy))
+#define ListView_EnsureVisible(hwnd,i,fPartialOk) \
+    (BOOL)SNDMSGA((hwnd),LVM_ENSUREVISIBLE,(WPARAM)(INT)i,(LPARAM)(BOOL)fPartialOk)
+#define ListView_SetBkColor(hwnd,clrBk) \
+    (BOOL)SNDMSGA((hwnd),LVM_SETBKCOLOR,0,(LPARAM)(COLORREF)(clrBk))
+#define ListView_SetImageList(hwnd,himl,iImageList) \
+    (HIMAGELIST)SNDMSGA((hwnd),LVM_SETIMAGELIST,(WPARAM)(iImageList),(LPARAM)(HIMAGELIST)(himl))
+#define ListView_GetItemCount(hwnd) \
+    (INT)SNDMSGA((hwnd),LVM_GETITEMCOUNT,0,0L)
+#define ListView_RedrawItems(hwnd,first,last) \
+    (BOOL)SNDMSGA((hwnd),LVM_REDRAWITEMS,(WPARAM)(INT)(first),(LPARAM)(INT)(last))
+#define ListView_GetEditControl(hwnd) \
+    (HWND)SNDMSGA((hwnd), LVM_GETEDITCONTROL, 0, 0)
+#define ListView_GetTextColor(hwnd)  \
+    (COLORREF)SNDMSGA((hwnd), LVM_GETTEXTCOLOR, 0, 0)
+#define ListView_GetBkColor(hwnd)  \
+    (COLORREF)SNDMSGA((hwnd), LVM_GETBKCOLOR, 0, 0)
+#define ListView_GetItemA(hwnd,pitem) \
+    (BOOL)SNDMSGA((hwnd),LVM_GETITEMA,0,(LPARAM)(LVITEMA *)(pitem))
+#define ListView_GetItemW(hwnd,pitem) \
+    (BOOL)SNDMSGW((hwnd),LVM_GETITEMW,0,(LPARAM)(LVITEMW *)(pitem))
+#define ListView_GetItem WINELIB_NAME_AW(ListView_GetItem)
+#define ListView_GetOrigin(hwnd,ppt) \
+    (BOOL)SNDMSGW((hwnd),LVM_GETORIGIN,0,(LPARAM)(POINT *)(ppt))
+
+#define ListView_HitTest(hwnd,pinfo) \
+    (INT)SNDMSGA((hwnd),LVM_HITTEST,0,(LPARAM)(LPLVHITTESTINFO)(pinfo))
+
+#define ListView_InsertItemA(hwnd,pitem) \
+    (INT)SNDMSGA((hwnd),LVM_INSERTITEMA,0,(LPARAM)(const LVITEMA *)(pitem))
+#define ListView_InsertItemW(hwnd,pitem) \
+    (INT)SNDMSGW((hwnd),LVM_INSERTITEMW,0,(LPARAM)(const LVITEMW *)(pitem))
+#define ListView_InsertItem WINELIB_NAME_AW(ListView_InsertItem)
+
+#define ListView_DeleteAllItems(hwnd) \
+    (BOOL)SNDMSGA((hwnd),LVM_DELETEALLITEMS,0,0L)
+
+#define ListView_InsertColumnA(hwnd,iCol,pcol) \
+    (INT)SNDMSGA((hwnd),LVM_INSERTCOLUMNA,(WPARAM)(INT)(iCol),(LPARAM)(const LVCOLUMNA *)(pcol))
+#define ListView_InsertColumnW(hwnd,iCol,pcol) \
+    (INT)SNDMSGW((hwnd),LVM_INSERTCOLUMNW,(WPARAM)(INT)(iCol),(LPARAM)(const LVCOLUMNW *)(pcol))
+#define ListView_InsertColumn WINELIB_NAME_AW(ListView_InsertColumn)
+
+#define ListView_SortItems(hwndLV,_pfnCompare,_lPrm) \
+    (BOOL)SNDMSGA((hwndLV),LVM_SORTITEMS,(WPARAM)(LPARAM)_lPrm,(LPARAM)(PFNLVCOMPARE)_pfnCompare)
+#define ListView_SetItemPosition(hwndLV, i, x, y) \
+    (BOOL)SNDMSGA((hwndLV),LVM_SETITEMPOSITION,(WPARAM)(INT)(i),MAKELPARAM((x),(y)))
+#define ListView_GetSelectedCount(hwndLV) \
+    (UINT)SNDMSGA((hwndLV),LVM_GETSELECTEDCOUNT,0,0L)
+
+#define ListView_EditLabelA(hwndLV, i) \
+    (HWND)SNDMSGA((hwndLV),LVM_EDITLABELA,(WPARAM)(int)(i), 0L)
+#define ListView_EditLabelW(hwndLV, i) \
+    (HWND)SNDMSGW((hwndLV),LVM_EDITLABELW,(WPARAM)(int)(i), 0L)
+#define ListView_EditLabel WINELIB_NAME_AW(ListView_EditLabel)
+
+#define ListView_GetItemTextA(hwndLV, i, _iSubItem, _pszText, _cchTextMax) \
+{ \
+    LVITEMA _LVi;\
+    _LVi.iSubItem = _iSubItem;\
+    _LVi.cchTextMax = _cchTextMax;\
+    _LVi.pszText = _pszText;\
+    SNDMSGA(hwndLV, LVM_GETITEMTEXTA, (WPARAM)(i), (LPARAM)&_LVi);\
+}
+#define ListView_GetItemTextW(hwndLV, i, _iSubItem, _pszText, _cchTextMax) \
+{ \
+    LVITEMW _LVi;\
+    _LVi.iSubItem = _iSubItem;\
+    _LVi.cchTextMax = _cchTextMax;\
+    _LVi.pszText = _pszText;\
+    SNDMSGW(hwndLV, LVM_GETITEMTEXTW, (WPARAM)(i), (LPARAM)&_LVi);\
+}
+#define ListView_GetItemText WINELIB_NAME_AW(ListView_GetItemText)
+#define ListView_SetItemPosition32(hwnd,n,x1,y1) \
+{ POINT ptNewPos; ptNewPos.x = (x1); ptNewPos.y = (y1); SNDMSGA((hwnd), LVM_SETITEMPOSITION32, (WPARAM)(int)(n), (LPARAM)&ptNewPos); }
+#define ListView_SetItemTextA(hwndLV, i, _iSubItem, _pszText) \
+{ LVITEMA _LVi; _LVi.iSubItem = _iSubItem; _LVi.pszText = _pszText;\
+  SNDMSGA(hwndLV, LVM_SETITEMTEXTA, (WPARAM)i, (LPARAM) (LVITEMA*)&_LVi);}
+#define ListView_SetItemTextW(hwndLV, i, _iSubItem, _pszText) \
+{ LVITEMW _LVi; _LVi.iSubItem = _iSubItem; _LVi.pszText = _pszText;\
+  SNDMSGW(hwndLV, LVM_SETITEMTEXTW, (WPARAM)i, (LPARAM) (LVITEMW*)& _LVi);}
+#define ListView_SetItemText WINELIB_NAME_AW(ListView_SetItemText)
+
+#define ListView_DeleteItem(hwndLV, i) \
+    (BOOL)SNDMSGA(hwndLV, LVM_DELETEITEM, (WPARAM)(int)(i), 0L)
+#define ListView_Update(hwndLV, i) \
+    (BOOL)SNDMSGA((hwndLV), LVM_UPDATE, (WPARAM)(i), 0L)
+#define ListView_GetColumnOrderArray(hwndLV, iCount, pi) \
+    (BOOL)SNDMSGA((hwndLV), LVM_GETCOLUMNORDERARRAY, (WPARAM)iCount, (LPARAM)(LPINT)pi)
+#define ListView_GetExtendedListViewStyle(hwndLV) \
+    (DWORD)SNDMSGA((hwndLV), LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0L)
+#define ListView_GetHotCursor(hwndLV) \
+    (HCURSOR)SNDMSGA((hwndLV), LVM_GETHOTCURSOR, 0, 0L)
+#define ListView_GetHotItem(hwndLV) \
+    (int)SNDMSGA((hwndLV), LVM_GETHOTITEM, 0, 0L)
+#define ListView_GetItemSpacing(hwndLV, fSmall) \
+    (DWORD)SNDMSGA((hwndLV), LVM_GETITEMSPACING, (WPARAM)fSmall, 0L)
+#define ListView_GetSubItemRect(hwndLV, iItem, iSubItem, code, prc) \
+    (BOOL)SNDMSGA((hwndLV), LVM_GETSUBITEMRECT, (WPARAM)(int)(iItem), \
+                       ((prc) ? ((((LPRECT)(prc))->top = iSubItem), (((LPRECT)(prc))->left = code), (LPARAM)(prc)) : 0))
+#define ListView_GetToolTips(hwndLV) \
+    (HWND)SNDMSGA((hwndLV), LVM_GETTOOLTIPS, 0, 0L)
+#define ListView_SetColumnOrderArray(hwndLV, iCount, pi) \
+    (BOOL)SNDMSGA((hwndLV), LVM_SETCOLUMNORDERARRAY, (WPARAM)iCount, (LPARAM)(LPINT)pi)
+#define ListView_SetExtendedListViewStyle(hwndLV, dw) \
+    (DWORD)SNDMSGA((hwndLV), LVM_SETEXTENDEDLISTVIEWSTYLE, 0, (LPARAM)dw)
+#define ListView_SetExtendedListViewStyleEx(hwndLV, dwMask, dw) \
+    (DWORD)SNDMSGA((hwndLV), LVM_SETEXTENDEDLISTVIEWSTYLE, (WPARAM)dwMask, (LPARAM)dw)
+#define ListView_SetHotCursor(hwndLV, hcur) \
+    (HCURSOR)SNDMSGA((hwndLV), LVM_SETHOTCURSOR, 0, (LPARAM)hcur)
+#define ListView_SetHotItem(hwndLV, i) \
+    (int)SNDMSGA((hwndLV), LVM_SETHOTITEM, (WPARAM)i, 0L)
+#define ListView_SetIconSpacing(hwndLV, cx, cy) \
+    (DWORD)SNDMSGA((hwndLV), LVM_SETICONSPACING, 0, MAKELONG(cx,cy))
+#define ListView_SetToolTips(hwndLV, hwndNewHwnd) \
+    (HWND)SNDMSGA((hwndLV), LVM_SETTOOLTIPS, (WPARAM)hwndNewHwnd, 0L)
+#define ListView_SubItemHitTest(hwndLV, plvhti) \
+    (int)SNDMSGA((hwndLV), LVM_SUBITEMHITTEST, 0, (LPARAM)(LPLVHITTESTINFO)(plvhti))
+#define ListView_GetSelectionMark(hwndLV) \
+    (int)SNDMSG((hwndLV), LVM_GETSELECTIONMARK, 0, 0)
+#define ListView_SetSelectionMark(hwndLV, iItem) \
+    (int)SNDMSG((hwndLV), LVM_SETSELECTIONMARK, 0, (LPARAM)(iItem))
+#define ListView_GetViewRect(hwndLV, prc) \
+    (BOOL)SNDMSG((hwndLV),LVM_GETVIEWRECT,0,(LPARAM)(LPRECT)(prc))
+#define ListView_GetHeader(hwndLV) \
+    (HWND)SNDMSG((hwndLV),LVM_GETHEADER,0,0L)
+#define ListView_SetSelectedColumn(hwnd, iCol) \
+    SNDMSG((hwnd), LVM_SETSELECTEDCOLUMN, (WPARAM)iCol, 0)
+#define ListView_SetTileWidth(hwnd, cpWidth) \
+    SNDMSG((hwnd), LVM_SETTILEWIDTH, (WPARAM)cpWidth, 0)
+#define ListView_SetView(hwnd, iView) \
+    (DWORD)SNDMSG((hwnd), LVM_SETVIEW, (WPARAM)(DWORD)iView, 0)
+#define ListView_GetView(hwnd) \
+    (DWORD)SNDMSG((hwnd), LVM_GETVIEW, 0, 0)
+#define ListView_InsertGroup(hwnd, index, pgrp) \
+    SNDMSG((hwnd), LVM_INSERTGROUP, (WPARAM)index, (LPARAM)pgrp)
+#define ListView_SetGroupHeaderImageList(hwnd, himl) \
+    SNDMSG((hwnd), LVM_SETIMAGELIST, (WPARAM)LVSIL_GROUPHEADER, (LPARAM)himl)
+#define ListView_GetGroupHeaderImageList(hwnd) \
+    SNDMSG((hwnd), LVM_GETIMAGELIST, (WPARAM)LVSIL_GROUPHEADER, 0)
+#define ListView_SetGroupInfo(hwnd, iGroupId, pgrp) \
+    SNDMSG((hwnd), LVM_SETGROUPINFO, (WPARAM)iGroupId, (LPARAM)pgrp)
+#define ListView_GetGroupInfo(hwnd, iGroupId, pgrp) \
+    SNDMSG((hwnd), LVM_GETGROUPINFO, (WPARAM)iGroupId, (LPARAM)pgrp)
+#define ListView_RemoveGroup(hwnd, iGroupId) \
+    SNDMSG((hwnd), LVM_REMOVEGROUP, (WPARAM)iGroupId, 0)
+#define ListView_MoveGroup(hwnd, iGroupId, toIndex) \
+    SNDMSG((hwnd), LVM_MOVEGROUP, (WPARAM)iGroupId, (LPARAM)toIndex)
+#define ListView_MoveItemToGroup(hwnd, idItemFrom, idGroupTo) \
+    SNDMSG((hwnd), LVM_MOVEITEMTOGROUP, (WPARAM)idItemFrom, (LPARAM)idGroupTo)
+#define ListView_SetGroupMetrics(hwnd, pGroupMetrics) \
+    SNDMSG((hwnd), LVM_SETGROUPMETRICS, 0, (LPARAM)pGroupMetrics)
+#define ListView_GetGroupMetrics(hwnd, pGroupMetrics) \
+    SNDMSG((hwnd), LVM_GETGROUPMETRICS, 0, (LPARAM)pGroupMetrics)
+#define ListView_EnableGroupView(hwnd, fEnable) \
+    SNDMSG((hwnd), LVM_ENABLEGROUPVIEW, (WPARAM)fEnable, 0)
+#define ListView_SortGroups(hwnd, _pfnGroupCompate, _plv) \
+    SNDMSG((hwnd), LVM_SORTGROUPS, (WPARAM)_pfnGroupCompate, (LPARAM)_plv)
+#define ListView_InsertGroupSorted(hwnd, structInsert) \
+    SNDMSG((hwnd), LVM_INSERTGROUPSORTED, (WPARAM)structInsert, 0)
+#define ListView_RemoveAllGroups(hwnd) \
+    SNDMSG((hwnd), LVM_REMOVEALLGROUPS, 0, 0)
+#define ListView_HasGroup(hwnd, dwGroupId) \
+    SNDMSG((hwnd), LVM_HASGROUP, dwGroupId, 0)
+#define ListView_SetTileViewInfo(hwnd, ptvi) \
+    SNDMSG((hwnd), LVM_SETTILEVIEWINFO, 0, (LPARAM)ptvi)
+#define ListView_GetTileViewInfo(hwnd, ptvi) \
+    SNDMSG((hwnd), LVM_GETTILEVIEWINFO, 0, (LPARAM)ptvi)
+#define ListView_SetTileInfo(hwnd, pti) \
+    SNDMSG((hwnd), LVM_SETTILEINFO, 0, (LPARAM)pti)
+#define ListView_GetTileInfo(hwnd, pti) \
+    SNDMSG((hwnd), LVM_GETTILEINFO, 0, (LPARAM)pti)
+#define ListView_SetInsertMark(hwnd, lvim) \
+    (BOOL)SNDMSG((hwnd), LVM_SETINSERTMARK, (WPARAM) 0, (LPARAM) (lvim))
+#define ListView_GetInsertMark(hwnd, lvim) \
+    (BOOL)SNDMSG((hwnd), LVM_GETINSERTMARK, (WPARAM) 0, (LPARAM) (lvim))
+#define ListView_InsertMarkHitTest(hwnd, point, lvim) \
+    (int)SNDMSG((hwnd), LVM_INSERTMARKHITTEST, (WPARAM)(LPPOINT)(point), (LPARAM)(LPLVINSERTMARK)(lvim))
+#define ListView_GetInsertMarkRect(hwnd, rc) \
+    (int)SNDMSG((hwnd), LVM_GETINSERTMARKRECT, (WPARAM)0, (LPARAM)(LPRECT)(rc))
+#define ListView_SetInsertMarkColor(hwnd, color) \
+    (COLORREF)SNDMSG((hwnd), LVM_SETINSERTMARKCOLOR, (WPARAM)0, (LPARAM)(COLORREF)(color))
+#define ListView_GetInsertMarkColor(hwnd) \
+    (COLORREF)SNDMSG((hwnd), LVM_GETINSERTMARKCOLOR, (WPARAM)0, (LPARAM)0)
+#define ListView_SetInfoTip(hwndLV, plvInfoTip)\
+    (BOOL)SNDMSG((hwndLV), LVM_SETINFOTIP, (WPARAM)0, (LPARAM)plvInfoTip)
+#define ListView_GetSelectedColumn(hwnd) \
+    (UINT)SNDMSG((hwnd), LVM_GETSELECTEDCOLUMN, 0, 0)
+#define ListView_IsGroupViewEnabled(hwnd) \
+    (BOOL)SNDMSG((hwnd), LVM_ISGROUPVIEWENABLED, 0, 0)
+#define ListView_GetOutlineColor(hwnd) \
+    (COLORREF)SNDMSG((hwnd), LVM_GETOUTLINECOLOR, 0, 0)
+#define ListView_SetOutlineColor(hwnd, color) \
+    (COLORREF)SNDMSG((hwnd), LVM_SETOUTLINECOLOR, (WPARAM)0, (LPARAM)(COLORREF)(color))
+#define ListView_CancelEditLabel(hwnd) \
+    (VOID)SNDMSG((hwnd), LVM_CANCELEDITLABEL, (WPARAM)0, (LPARAM)0)
+#define ListView_MapIndexToID(hwnd, index) \
+    (UINT)SNDMSG((hwnd), LVM_MAPINDEXTOID, (WPARAM)index, (LPARAM)0)
+#define ListView_MapIDToIndex(hwnd, id) \
+    (UINT)SNDMSG((hwnd), LVM_MAPIDTOINDEX, (WPARAM)id, (LPARAM)0)
+#define ListView_SetUnicodeFormat(hwnd, fUnicode) \
+    (BOOL)SNDMSG((hwnd), LVM_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0)
+#define ListView_GetUnicodeFormat(hwnd) \
+    (BOOL)SNDMSG((hwnd), LVM_GETUNICODEFORMAT, 0, 0)
+
+/* Tab Control */
+
+#define WC_TABCONTROLA		"SysTabControl32"
+#if defined(__GNUC__)
+# define WC_TABCONTROLW (const WCHAR []){ 'S','y','s', \
+  'T','a','b','C','o','n','t','r','o','l','3','2',0 }
+#elif defined(_MSC_VER)
+# define WC_TABCONTROLW         L"SysTabControl32"
+#else
+static const WCHAR WC_TABCONTROLW[] = { 'S','y','s',
+  'T','a','b','C','o','n','t','r','o','l','3','2',0 };
+#endif
+#define WC_TABCONTROL		WINELIB_NAME_AW(WC_TABCONTROL)
+
+/* tab control styles */
+#define TCS_SCROLLOPPOSITE      0x0001   /* assumes multiline tab */
+#define TCS_BOTTOM              0x0002
+#define TCS_RIGHT               0x0002
+#define TCS_MULTISELECT         0x0004  /* allow multi-select in button mode */
+#define TCS_FLATBUTTONS         0x0008
+#define TCS_FORCEICONLEFT       0x0010
+#define TCS_FORCELABELLEFT      0x0020
+#define TCS_HOTTRACK            0x0040
+#define TCS_VERTICAL            0x0080
+#define TCS_TABS                0x0000
+#define TCS_BUTTONS             0x0100
+#define TCS_SINGLELINE          0x0000
+#define TCS_MULTILINE           0x0200
+#define TCS_RIGHTJUSTIFY        0x0000
+#define TCS_FIXEDWIDTH          0x0400
+#define TCS_RAGGEDRIGHT         0x0800
+#define TCS_FOCUSONBUTTONDOWN   0x1000
+#define TCS_OWNERDRAWFIXED      0x2000
+#define TCS_TOOLTIPS            0x4000
+#define TCS_FOCUSNEVER          0x8000
+#define TCS_EX_FLATSEPARATORS   0x00000001  /* to be used with */
+#define TCS_EX_REGISTERDROP     0x00000002  /* TCM_SETEXTENDEDSTYLE */
+
+
+#define TCM_FIRST		0x1300
+
+#define TCM_GETIMAGELIST        (TCM_FIRST + 2)
+#define TCM_SETIMAGELIST        (TCM_FIRST + 3)
+#define TCM_GETITEMCOUNT	(TCM_FIRST + 4)
+#define TCM_GETITEM		WINELIB_NAME_AW(TCM_GETITEM)
+#define TCM_GETITEMA		(TCM_FIRST + 5)
+#define TCM_GETITEMW		(TCM_FIRST + 60)
+#define TCM_SETITEMA		(TCM_FIRST + 6)
+#define TCM_SETITEMW		(TCM_FIRST + 61)
+#define TCM_SETITEM		WINELIB_NAME_AW(TCM_SETITEM)
+#define TCM_INSERTITEMA		(TCM_FIRST + 7)
+#define TCM_INSERTITEMW		(TCM_FIRST + 62)
+#define TCM_INSERTITEM		WINELIB_NAME_AW(TCM_INSERTITEM)
+#define TCM_DELETEITEM          (TCM_FIRST + 8)
+#define TCM_DELETEALLITEMS      (TCM_FIRST + 9)
+#define TCM_GETITEMRECT         (TCM_FIRST + 10)
+#define TCM_GETCURSEL		(TCM_FIRST + 11)
+#define TCM_SETCURSEL           (TCM_FIRST + 12)
+#define TCM_HITTEST             (TCM_FIRST + 13)
+#define TCM_SETITEMEXTRA	(TCM_FIRST + 14)
+#define TCM_ADJUSTRECT          (TCM_FIRST + 40)
+#define TCM_SETITEMSIZE         (TCM_FIRST + 41)
+#define TCM_REMOVEIMAGE         (TCM_FIRST + 42)
+#define TCM_SETPADDING          (TCM_FIRST + 43)
+#define TCM_GETROWCOUNT         (TCM_FIRST + 44)
+#define TCM_GETTOOLTIPS         (TCM_FIRST + 45)
+#define TCM_SETTOOLTIPS         (TCM_FIRST + 46)
+#define TCM_GETCURFOCUS         (TCM_FIRST + 47)
+#define TCM_SETCURFOCUS         (TCM_FIRST + 48)
+#define TCM_SETMINTABWIDTH     (TCM_FIRST + 49)
+#define TCM_DESELECTALL         (TCM_FIRST + 50)
+#define TCM_HIGHLIGHTITEM		(TCM_FIRST + 51)
+#define TCM_SETEXTENDEDSTYLE	(TCM_FIRST + 52)
+#define TCM_GETEXTENDEDSTYLE	(TCM_FIRST + 53)
+#define TCM_SETUNICODEFORMAT	CCM_SETUNICODEFORMAT
+#define TCM_GETUNICODEFORMAT	CCM_GETUNICODEFORMAT
+
+
+#define TCIF_TEXT		0x0001
+#define TCIF_IMAGE		0x0002
+#define TCIF_RTLREADING		0x0004
+#define TCIF_PARAM		0x0008
+#define TCIF_STATE		0x0010
+
+#define TCIS_BUTTONPRESSED      0x0001
+#define TCIS_HIGHLIGHTED        0x0002
+
+/* TabCtrl Macros */
+#define TabCtrl_GetImageList(hwnd) \
+    (HIMAGELIST)SNDMSGA((hwnd), TCM_GETIMAGELIST, 0, 0L)
+#define TabCtrl_SetImageList(hwnd, himl) \
+    (HIMAGELIST)SNDMSGA((hwnd), TCM_SETIMAGELIST, 0, (LPARAM)(UINT)(HIMAGELIST)(himl))
+#define TabCtrl_GetItemCount(hwnd) \
+    (int)SNDMSGA((hwnd), TCM_GETITEMCOUNT, 0, 0L)
+#define TabCtrl_GetItemA(hwnd, iItem, pitem) \
+    (BOOL)SNDMSGA((hwnd), TCM_GETITEMA, (WPARAM)(int)iItem, (LPARAM)(TCITEMA *)(pitem))
+#define TabCtrl_GetItemW(hwnd, iItem, pitem) \
+    (BOOL)SNDMSGW((hwnd), TCM_GETITEMW, (WPARAM)(int)iItem, (LPARAM)(TCITEMW *)(pitem))
+#define TabCtrl_GetItem WINELIB_NAME_AW(TabCtrl_GetItem)
+#define TabCtrl_SetItemA(hwnd, iItem, pitem) \
+    (BOOL)SNDMSGA((hwnd), TCM_SETITEMA, (WPARAM)(int)iItem, (LPARAM)(TCITEMA *)(pitem))
+#define TabCtrl_SetItemW(hwnd, iItem, pitem) \
+    (BOOL)SNDMSGW((hwnd), TCM_SETITEMW, (WPARAM)(int)iItem, (LPARAM)(TCITEMW *)(pitem))
+#define TabCtrl_SetItem WINELIB_NAME_AW(TabCtrl_SetItem)
+#define TabCtrl_InsertItemA(hwnd, iItem, pitem)   \
+    (int)SNDMSGA((hwnd), TCM_INSERTITEMA, (WPARAM)(int)iItem, (LPARAM)(const TCITEMA *)(pitem))
+#define TabCtrl_InsertItemW(hwnd, iItem, pitem)   \
+    (int)SNDMSGW((hwnd), TCM_INSERTITEMW, (WPARAM)(int)iItem, (LPARAM)(const TCITEMW *)(pitem))
+#define TabCtrl_InsertItem WINELIB_NAME_AW(TabCtrl_InsertItem)
+#define TabCtrl_DeleteItem(hwnd, i) \
+    (BOOL)SNDMSGA((hwnd), TCM_DELETEITEM, (WPARAM)(int)(i), 0L)
+#define TabCtrl_DeleteAllItems(hwnd) \
+    (BOOL)SNDMSGA((hwnd), TCM_DELETEALLITEMS, 0, 0L)
+#define TabCtrl_GetItemRect(hwnd, i, prc) \
+    (BOOL)SNDMSGA((hwnd), TCM_GETITEMRECT, (WPARAM)(int)(i), (LPARAM)(RECT *)(prc))
+#define TabCtrl_GetCurSel(hwnd) \
+    (int)SNDMSGA((hwnd), TCM_GETCURSEL, 0, 0)
+#define TabCtrl_SetCurSel(hwnd, i) \
+    (int)SNDMSGA((hwnd), TCM_SETCURSEL, (WPARAM)i, 0)
+#define TabCtrl_HitTest(hwndTC, pinfo) \
+    (int)SNDMSGA((hwndTC), TCM_HITTEST, 0, (LPARAM)(TC_HITTESTINFO *)(pinfo))
+#define TabCtrl_SetItemExtra(hwndTC, cb) \
+    (BOOL)SNDMSGA((hwndTC), TCM_SETITEMEXTRA, (WPARAM)(cb), 0L)
+#define TabCtrl_AdjustRect(hwnd, bLarger, prc) \
+    (int)SNDMSGA(hwnd, TCM_ADJUSTRECT, (WPARAM)(BOOL)bLarger, (LPARAM)(RECT *)prc)
+#define TabCtrl_SetItemSize(hwnd, x, y) \
+    (DWORD)SNDMSGA((hwnd), TCM_SETITEMSIZE, 0, MAKELPARAM(x,y))
+#define TabCtrl_RemoveImage(hwnd, i) \
+    (void)SNDMSGA((hwnd), TCM_REMOVEIMAGE, i, 0L)
+#define TabCtrl_SetPadding(hwnd,  cx, cy) \
+    (void)SNDMSGA((hwnd), TCM_SETPADDING, 0, MAKELPARAM(cx, cy))
+#define TabCtrl_GetRowCount(hwnd) \
+    (int)SNDMSGA((hwnd), TCM_GETROWCOUNT, 0, 0L)
+#define TabCtrl_GetToolTips(hwnd) \
+    (HWND)SNDMSGA((hwnd), TCM_GETTOOLTIPS, 0, 0L)
+#define TabCtrl_SetToolTips(hwnd, hwndTT) \
+    (void)SNDMSGA((hwnd), TCM_SETTOOLTIPS, (WPARAM)hwndTT, 0L)
+#define TabCtrl_GetCurFocus(hwnd) \
+    (int)SNDMSGA((hwnd), TCM_GETCURFOCUS, 0, 0)
+#define TabCtrl_SetCurFocus(hwnd, i) \
+    SNDMSGA((hwnd),TCM_SETCURFOCUS, i, 0)
+#define TabCtrl_SetMinTabWidth(hwnd, x) \
+    (int)SNDMSGA((hwnd), TCM_SETMINTABWIDTH, 0, x)
+#define TabCtrl_DeselectAll(hwnd, fExcludeFocus)\
+    (void)SNDMSGA((hwnd), TCM_DESELECTALL, fExcludeFocus, 0)
+#define TabCtrl_GetUnicodeFormat(hwnd) \
+    (BOOL)SNDMSGA((hwnd), TCM_GETUNICODEFORMAT, 0, 0)
+#define TabCtrl_SetUnicodeFormat(hwnd, fUnicode) \
+    (BOOL)SNDMSGA((hwnd), TCM_SETUNICODEFORMAT, (WPARAM)fUnicode, 0)
+#define TabCtrl_GetExtendedStyle(hwnd) \
+    (BOOL)SNDMSGA((hwnd), TCM_GETEXTENDEDSTYLE, 0, 0)
+#define TabCtrl_SetExtendedStyle(hwnd, dwExStyle) \
+    (BOOL)SNDMSGA((hwnd), TCM_GETEXTENDEDSTYLE, 0, (LPARAM)dwExStyle)
+#define TabCtrl_HighlightItem(hwnd, i, fHighlight) \
+    (BOOL)SNDMSG((hwnd), TCM_HIGHLIGHTITEM, (WPARAM)i, (LPARAM)MAKELONG(fHighlight, 0))
+
+/* constants for TCHITTESTINFO */
+
+#define TCHT_NOWHERE      0x01
+#define TCHT_ONITEMICON   0x02
+#define TCHT_ONITEMLABEL  0x04
+#define TCHT_ONITEM       (TCHT_ONITEMICON | TCHT_ONITEMLABEL)
+
+typedef struct tagTCITEMHEADERA
+{
+    UINT  mask;
+    UINT  lpReserved1;
+    UINT  lpReserved2;
+    LPSTR pszText;
+    int   cchTextMax;
+    int   iImage;
+} TCITEMHEADERA, *LPTCITEMHEADERA;
+
+typedef struct tagTCITEMHEADERW
+{
+    UINT   mask;
+    UINT   lpReserved1;
+    UINT   lpReserved2;
+    LPWSTR pszText;
+    int    cchTextMax;
+    int    iImage;
+} TCITEMHEADERW, *LPTCITEMHEADERW;
+
+#define TCITEMHEADER    WINELIB_NAME_AW(TCITEMHEADER)
+#define LPTCITEMHEADER  WINELIB_NAME_AW(LPTCITEMHEADER)
+#define TC_ITEMHEADER   WINELIB_NAME_AW(TCITEMHEADER)
+#define LPTC_ITEMHEADER WINELIB_NAME_AW(LPTCITEMHEADER)
+
+typedef struct tagTCITEMA
+{
+    UINT mask;
+    UINT dwState;
+    UINT dwStateMask;
+    LPSTR  pszText;
+    INT  cchTextMax;
+    INT  iImage;
+    LPARAM lParam;
+} TCITEMA, *LPTCITEMA;
+
+typedef struct tagTCITEMW
+{
+    UINT mask;
+    DWORD  dwState;
+    DWORD  dwStateMask;
+    LPWSTR pszText;
+    INT  cchTextMax;
+    INT  iImage;
+    LPARAM lParam;
+} TCITEMW, *LPTCITEMW;
+
+#define TCITEM    WINELIB_NAME_AW(TCITEM)
+#define LPTCITEM  WINELIB_NAME_AW(LPTCITEM)
+#define TC_ITEM   WINELIB_NAME_AW(TCITEM)
+#define LPTC_ITEM WINELIB_NAME_AW(LPTCITEM)
+
+#define TCN_FIRST               (0U-550U)
+#define TCN_LAST                (0U-580U)
+#define TCN_KEYDOWN             (TCN_FIRST - 0)
+#define TCN_SELCHANGE		(TCN_FIRST - 1)
+#define TCN_SELCHANGING         (TCN_FIRST - 2)
+#define TCN_GETOBJECT           (TCN_FIRST - 3)
+
+#include <pshpack1.h>
+typedef struct tagTCKEYDOWN
+{
+    NMHDR hdr;
+    WORD wVKey;
+    UINT flags;
+} NMTCKEYDOWN;
+#include <poppack.h>
+
+#define TC_KEYDOWN              NMTCKEYDOWN
+
+/* ComboBoxEx control */
+
+#define WC_COMBOBOXEXA        "ComboBoxEx32"
+#if defined(__GNUC__)
+# define WC_COMBOBOXEXW (const WCHAR []){ 'C','o','m','b','o', \
+  'B','o','x','E','x','3','2',0 }
+#elif defined(_MSC_VER)
+# define WC_COMBOBOXEXW       L"ComboBoxEx32"
+#else
+static const WCHAR WC_COMBOBOXEXW[] = { 'C','o','m','b','o',
+  'B','o','x','E','x','3','2',0 };
+#endif
+#define WC_COMBOBOXEX           WINELIB_NAME_AW(WC_COMBOBOXEX)
+
+#define CBEIF_TEXT              0x00000001
+#define CBEIF_IMAGE             0x00000002
+#define CBEIF_SELECTEDIMAGE     0x00000004
+#define CBEIF_OVERLAY           0x00000008
+#define CBEIF_INDENT            0x00000010
+#define CBEIF_LPARAM            0x00000020
+#define CBEIF_DI_SETITEM        0x10000000
+
+#define CBEM_INSERTITEMA        (WM_USER+1)
+#define CBEM_INSERTITEMW        (WM_USER+11)
+#define CBEM_INSERTITEM         WINELIB_NAME_AW(CBEM_INSERTITEM)
+#define CBEM_SETIMAGELIST       (WM_USER+2)
+#define CBEM_GETIMAGELIST       (WM_USER+3)
+#define CBEM_GETITEMA           (WM_USER+4)
+#define CBEM_GETITEMW           (WM_USER+13)
+#define CBEM_GETITEM            WINELIB_NAME_AW(CBEM_GETITEM)
+#define CBEM_SETITEMA           (WM_USER+5)
+#define CBEM_SETITEMW           (WM_USER+12)
+#define CBEM_SETITEM            WINELIB_NAME_AW(CBEM_SETITEM)
+#define CBEM_DELETEITEM         CB_DELETESTRING
+#define CBEM_GETCOMBOCONTROL    (WM_USER+6)
+#define CBEM_GETEDITCONTROL     (WM_USER+7)
+#define CBEM_SETEXSTYLE         (WM_USER+8)
+#define CBEM_GETEXSTYLE         (WM_USER+9)
+#define CBEM_GETEXTENDEDSTYLE   (WM_USER+9)
+#define CBEM_SETEXTENDEDSTYLE   (WM_USER+14)
+#define CBEM_SETUNICODEFORMAT   CCM_SETUNICODEFORMAT
+#define CBEM_GETUNICODEFORMAT   CCM_GETUNICODEFORMAT
+#define CBEM_HASEDITCHANGED     (WM_USER+10)
+#define CBEM_SETWINDOWTHEME     CCM_SETWINDOWTHEME
+
+#define CBEIF_TEXT              0x00000001
+#define CBEIF_IMAGE             0x00000002
+#define CBEIF_SELECTEDIMAGE     0x00000004
+#define CBEIF_OVERLAY           0x00000008
+#define CBEIF_INDENT            0x00000010
+#define CBEIF_LPARAM            0x00000020
+#define CBEIF_DI_SETITEM        0x10000000
+
+#define CBEN_FIRST              (0U-800U)
+#define CBEN_LAST               (0U-830U)
+
+#define CBEN_GETDISPINFOA       (CBEN_FIRST - 0)
+#define CBEN_GETDISPINFOW       (CBEN_FIRST - 7)
+#define CBEN_GETDISPINFO WINELIB_NAME_AW(CBEN_GETDISPINFO)
+#define CBEN_INSERTITEM         (CBEN_FIRST - 1)
+#define CBEN_DELETEITEM         (CBEN_FIRST - 2)
+#define CBEN_BEGINEDIT          (CBEN_FIRST - 4)
+#define CBEN_ENDEDITA           (CBEN_FIRST - 5)
+#define CBEN_ENDEDITW           (CBEN_FIRST - 6)
+#define CBEN_ENDEDIT WINELIB_NAME_AW(CBEN_ENDEDIT)
+#define CBEN_DRAGBEGINA         (CBEN_FIRST - 8)
+#define CBEN_DRAGBEGINW         (CBEN_FIRST - 9)
+#define CBEN_DRAGBEGIN WINELIB_NAME_AW(CBEN_DRAGBEGIN)
+
+#define CBES_EX_NOEDITIMAGE          0x00000001
+#define CBES_EX_NOEDITIMAGEINDENT    0x00000002
+#define CBES_EX_PATHWORDBREAKPROC    0x00000004
+#define CBES_EX_NOSIZELIMIT          0x00000008
+#define CBES_EX_CASESENSITIVE        0x00000010
+
+
+typedef struct tagCOMBOBOXEXITEMA
+{
+    UINT mask;
+    int iItem;
+    LPSTR pszText;
+    int cchTextMax;
+    int iImage;
+    int iSelectedImage;
+    int iOverlay;
+    int iIndent;
+    LPARAM lParam;
+} COMBOBOXEXITEMA, *PCOMBOBOXEXITEMA;
+typedef COMBOBOXEXITEMA const *PCCOMBOEXITEMA; /* Yes, there's a BOX missing */
+
+typedef struct tagCOMBOBOXEXITEMW
+{
+    UINT mask;
+    int iItem;
+    LPWSTR pszText;
+    int cchTextMax;
+    int iImage;
+    int iSelectedImage;
+    int iOverlay;
+    int iIndent;
+    LPARAM lParam;
+} COMBOBOXEXITEMW, *PCOMBOBOXEXITEMW;
+typedef COMBOBOXEXITEMW const *PCCOMBOEXITEMW; /* Yes, there's a BOX missing */
+
+#define COMBOBOXEXITEM WINELIB_NAME_AW(COMBOBOXEXITEM)
+#define PCOMBOBOXEXITEM WINELIB_NAME_AW(PCOMBOBOXEXITEM)
+#define PCCOMBOBOXEXITEM WINELIB_NAME_AW(PCCOMBOEXITEM) /* Yes, there's a BOX missing */
+
+#define CBENF_KILLFOCUS               1
+#define CBENF_RETURN                  2
+#define CBENF_ESCAPE                  3
+#define CBENF_DROPDOWN                4
+
+#define CBEMAXSTRLEN 260
+
+typedef struct tagNMCBEENDEDITW
+{
+    NMHDR hdr;
+    BOOL fChanged;
+    int iNewSelection;
+    WCHAR szText[CBEMAXSTRLEN];
+    int iWhy;
+} NMCBEENDEDITW, *LPNMCBEENDEDITW, *PNMCBEENDEDITW;
+
+typedef struct tagNMCBEENDEDITA
+{
+    NMHDR hdr;
+    BOOL fChanged;
+    int iNewSelection;
+    char szText[CBEMAXSTRLEN];
+    int iWhy;
+} NMCBEENDEDITA, *LPNMCBEENDEDITA, *PNMCBEENDEDITA;
+
+#define NMCBEENDEDIT WINELIB_NAME_AW(NMCBEENDEDIT)
+#define LPNMCBEENDEDIT WINELIB_NAME_AW(LPNMCBEENDEDIT)
+#define PNMCBEENDEDIT WINELIB_NAME_AW(PNMCBEENDEDIT)
+
+typedef struct
+{
+    NMHDR hdr;
+    COMBOBOXEXITEMA ceItem;
+} NMCOMBOBOXEXA, *PNMCOMBOBOXEXA;
+
+typedef struct
+{
+    NMHDR hdr;
+    COMBOBOXEXITEMW ceItem;
+} NMCOMBOBOXEXW, *PNMCOMBOBOXEXW;
+
+#define NMCOMBOBOXEX WINELIB_NAME_AW(NMCOMBOBOXEX)
+#define PNMCOMBOBOXEX WINELIB_NAME_AW(PNMCOMBOBOXEX)
+
+typedef struct
+{
+    NMHDR hdr;
+    int iItemid;
+    char szText[CBEMAXSTRLEN];
+} NMCBEDRAGBEGINA, *PNMCBEDRAGBEGINA, *LPNMCBEDRAGBEGINA;
+
+typedef struct
+{
+    NMHDR hdr;
+    int iItemid;
+    WCHAR szText[CBEMAXSTRLEN];
+} NMCBEDRAGBEGINW, *PNMCBEDRAGBEGINW, *LPNMCBEDRAGBEGINW;
+
+#define NMCBEDRAGBEGIN WINELIB_NAME_AW(NMCBEDRAGBEGIN)
+#define PNMCBEDRAGBEGIN WINELIB_NAME_AW(PNMCBEDRAGBEGIN)
+#define LPNMCBEDRAGBEGIN WINELIB_NAME_AW(LPNMCBEDRAGBEGIN)
+
+
+/* Hotkey control */
+
+#define HOTKEY_CLASSA           "msctls_hotkey32"
+#if defined(__GNUC__)
+# define HOTKEY_CLASSW (const WCHAR []){ 'm','s','c','t','l','s','_', \
+  'h','o','t','k','e','y','3','2',0 }
+#elif defined(_MSC_VER)
+# define HOTKEY_CLASSW          L"msctls_hotkey32"
+#else
+static const WCHAR HOTKEY_CLASSW[] = { 'm','s','c','t','l','s','_',
+  'h','o','t','k','e','y','3','2',0 };
+#endif
+#define HOTKEY_CLASS            WINELIB_NAME_AW(HOTKEY_CLASS)
+
+#define HOTKEYF_SHIFT           0x01
+#define HOTKEYF_CONTROL         0x02
+#define HOTKEYF_ALT             0x04
+#define HOTKEYF_EXT             0x08
+
+#define HKCOMB_NONE             0x0001
+#define HKCOMB_S                0x0002
+#define HKCOMB_C                0x0004
+#define HKCOMB_A                0x0008
+#define HKCOMB_SC               0x0010
+#define HKCOMB_SA               0x0020
+#define HKCOMB_CA               0x0040
+#define HKCOMB_SCA              0x0080
+
+#define HKM_SETHOTKEY           (WM_USER+1)
+#define HKM_GETHOTKEY           (WM_USER+2)
+#define HKM_SETRULES            (WM_USER+3)
+
+
+/* animate control */
+
+#define ANIMATE_CLASSA        "SysAnimate32"
+#if defined(__GNUC__)
+# define ANIMATE_CLASSW (const WCHAR []){ 'S','y','s', \
+  'A','n','i','m','a','t','e','3','2',0 }
+#elif defined(_MSC_VER)
+# define ANIMATE_CLASSW       L"SysAnimate32"
+#else
+static const WCHAR ANIMATE_CLASSW[] = { 'S','y','s',
+  'A','n','i','m','a','t','e','3','2',0 };
+#endif
+#define ANIMATE_CLASS           WINELIB_NAME_AW(ANIMATE_CLASS)
+
+#define ACS_CENTER              0x0001
+#define ACS_TRANSPARENT         0x0002
+#define ACS_AUTOPLAY            0x0004
+#define ACS_TIMER               0x0008  /* no threads, just timers */
+
+#define ACM_OPENA               (WM_USER+100)
+#define ACM_OPENW               (WM_USER+103)
+#define ACM_OPEN                WINELIB_NAME_AW(ACM_OPEN)
+#define ACM_PLAY                (WM_USER+101)
+#define ACM_STOP                (WM_USER+102)
+
+#define ACN_START               1
+#define ACN_STOP                2
+
+#define Animate_CreateA(hwndP,id,dwStyle,hInstance) \
+    CreateWindowA(ANIMATE_CLASSA,NULL,dwStyle,0,0,0,0,hwndP,(HMENU)(id),hInstance,NULL)
+#define Animate_CreateW(hwndP,id,dwStyle,hInstance) \
+    CreateWindowW(ANIMATE_CLASSW,NULL,dwStyle,0,0,0,0,hwndP,(HMENU)(id),hInstance,NULL)
+#define Animate_Create WINELIB_NAME_AW(Animate_Create)
+#define Animate_OpenA(hwnd,szName) \
+    (BOOL)SNDMSGA(hwnd,ACM_OPENA,0,(LPARAM)(LPSTR)(szName))
+#define Animate_OpenW(hwnd,szName) \
+    (BOOL)SNDMSGW(hwnd,ACM_OPENW,0,(LPARAM)(LPWSTR)(szName))
+#define Animate_Open WINELIB_NAME_AW(Animate_Open)
+#define Animate_OpenExA(hwnd,hInst,szName) \
+    (BOOL)SNDMSGA(hwnd,ACM_OPENA,(WPARAM)hInst,(LPARAM)(LPSTR)(szName))
+#define Animate_OpenExW(hwnd,hInst,szName) \
+    (BOOL)SNDMSGW(hwnd,ACM_OPENW,(WPARAM)hInst,(LPARAM)(LPWSTR)(szName))
+#define Animate_OpenEx WINELIB_NAME_AW(Animate_OpenEx)
+#define Animate_Play(hwnd,from,to,rep) \
+    (BOOL)SNDMSGA(hwnd,ACM_PLAY,(WPARAM)(UINT)(rep),(LPARAM)MAKELONG(from,to))
+#define Animate_Stop(hwnd) \
+    (BOOL)SNDMSGA(hwnd,ACM_STOP,0,0)
+#define Animate_Close(hwnd) \
+    (BOOL)SNDMSGA(hwnd,ACM_OPENA,0,0)
+#define Animate_Seek(hwnd,frame) \
+    (BOOL)SNDMSGA(hwnd,ACM_PLAY,1,(LPARAM)MAKELONG(frame,frame))
+
+
+/**************************************************************************
+ * IP Address control
+ */
+
+#define WC_IPADDRESSA		"SysIPAddress32"
+#if defined(__GNUC__)
+# define WC_IPADDRESSW (const WCHAR []){ 'S','y','s', \
+  'I','P','A','d','d','r','e','s','s','3','2',0 }
+#elif defined(_MSC_VER)
+# define WC_IPADDRESSW          L"SysIPAddress32"
+#else
+static const WCHAR WC_IPADDRESSW[] = { 'S','y','s',
+  'I','P','A','d','d','r','e','s','s','3','2',0 };
+#endif
+#define WC_IPADDRESS		WINELIB_NAME_AW(WC_IPADDRESS)
+
+#define IPM_CLEARADDRESS	(WM_USER+100)
+#define IPM_SETADDRESS		(WM_USER+101)
+#define IPM_GETADDRESS		(WM_USER+102)
+#define IPM_SETRANGE		(WM_USER+103)
+#define IPM_SETFOCUS		(WM_USER+104)
+#define IPM_ISBLANK		(WM_USER+105)
+
+#define IPN_FIRST               (0U-860U)
+#define IPN_LAST                (0U-879U)
+#define IPN_FIELDCHANGED        (IPN_FIRST-0)
+
+typedef struct tagNMIPADDRESS
+{
+    NMHDR hdr;
+    INT iField;
+    INT iValue;
+} NMIPADDRESS, *LPNMIPADDRESS;
+
+#define MAKEIPRANGE(low,high) \
+    ((LPARAM)(WORD)(((BYTE)(high)<<8)+(BYTE)(low)))
+#define MAKEIPADDRESS(b1,b2,b3,b4) \
+    ((LPARAM)(((DWORD)(b1)<<24)+((DWORD)(b2)<16)+((DWORD)(b3)<<8)+((DWORD)(b4))))
+
+#define FIRST_IPADDRESS(x)	(((x)>>24)&0xff)
+#define SECOND_IPADDRESS(x)	(((x)>>16)&0xff)
+#define THIRD_IPADDRESS(x)	(((x)>>8)&0xff)
+#define FOURTH_IPADDRESS(x)	((x)&0xff)
+
+
+/**************************************************************************
+ * Native Font control
+ */
+
+#define WC_NATIVEFONTCTLA	"NativeFontCtl"
+#if defined(__GNUC__)
+# define WC_NATIVEFONTCTLW (const WCHAR []){ 'N','a','t','i','v','e', \
+  'F','o','n','t','C','t','l',0 }
+#elif defined(_MSC_VER)
+# define WC_NATIVEFONTCTLW      L"NativeFontCtl"
+#else
+static const WCHAR WC_NATIVEFONTCTLW[] = { 'N','a','t','i','v','e',
+  'F','o','n','t','C','t','l',0 };
+#endif
+#define WC_NATIVEFONTCTL	WINELIB_NAME_AW(WC_NATIVEFONTCTL)
+
+#define NFS_EDIT		0x0001
+#define NFS_STATIC		0x0002
+#define NFS_LISTCOMBO		0x0004
+#define NFS_BUTTON		0x0008
+#define NFS_ALL			0x0010
+
+
+/**************************************************************************
+ * Month calendar control
+ *
+ */
+
+#define MONTHCAL_CLASSA	"SysMonthCal32"
+#if defined(__GNUC__)
+# define MONTHCAL_CLASSW (const WCHAR []){ 'S','y','s', \
+  'M','o','n','t','h','C','a','l','3','2',0 }
+#elif defined(_MSC_VER)
+# define MONTHCAL_CLASSW L"SysMonthCal32"
+#else
+static const WCHAR MONTHCAL_CLASSW[] = { 'S','y','s',
+  'M','o','n','t','h','C','a','l','3','2',0 };
+#endif
+#define MONTHCAL_CLASS		WINELIB_NAME_AW(MONTHCAL_CLASS)
+
+#define MCM_FIRST             0x1000
+#define MCN_FIRST             (0U-750U)
+#define MCN_LAST              (0U-759U)
+
+
+#define MCM_GETCURSEL         (MCM_FIRST + 1)
+#define MCM_SETCURSEL         (MCM_FIRST + 2)
+#define MCM_GETMAXSELCOUNT    (MCM_FIRST + 3)
+#define MCM_SETMAXSELCOUNT    (MCM_FIRST + 4)
+#define MCM_GETSELRANGE       (MCM_FIRST + 5)
+#define MCM_SETSELRANGE       (MCM_FIRST + 6)
+#define MCM_GETMONTHRANGE     (MCM_FIRST + 7)
+#define MCM_SETDAYSTATE       (MCM_FIRST + 8)
+#define MCM_GETMINREQRECT     (MCM_FIRST + 9)
+#define MCM_SETCOLOR          (MCM_FIRST + 10)
+#define MCM_GETCOLOR          (MCM_FIRST + 11)
+#define MCM_SETTODAY          (MCM_FIRST + 12)
+#define MCM_GETTODAY          (MCM_FIRST + 13)
+#define MCM_HITTEST           (MCM_FIRST + 14)
+#define MCM_SETFIRSTDAYOFWEEK (MCM_FIRST + 15)
+#define MCM_GETFIRSTDAYOFWEEK (MCM_FIRST + 16)
+#define MCM_GETRANGE          (MCM_FIRST + 17)
+#define MCM_SETRANGE          (MCM_FIRST + 18)
+#define MCM_GETMONTHDELTA     (MCM_FIRST + 19)
+#define MCM_SETMONTHDELTA     (MCM_FIRST + 20)
+#define MCM_GETMAXTODAYWIDTH  (MCM_FIRST + 21)
+#define MCM_GETUNICODEFORMAT  CCM_GETUNICODEFORMAT
+#define MCM_SETUNICODEFORMAT  CCM_SETUNICODEFORMAT
+
+
+/* Notifications */
+
+#define MCN_SELCHANGE         (MCN_FIRST + 1)
+#define MCN_GETDAYSTATE       (MCN_FIRST + 3)
+#define MCN_SELECT            (MCN_FIRST + 4)
+
+#define MCSC_BACKGROUND   0
+#define MCSC_TEXT         1
+#define MCSC_TITLEBK      2
+#define MCSC_TITLETEXT    3
+#define MCSC_MONTHBK      4
+#define MCSC_TRAILINGTEXT 5
+
+#define MCS_DAYSTATE           0x0001
+#define MCS_MULTISELECT        0x0002
+#define MCS_WEEKNUMBERS        0x0004
+#define MCS_NOTODAY            0x0010
+#define MCS_NOTODAYCIRCLE      0x0008
+
+#define MCHT_TITLE             0x00010000
+#define MCHT_CALENDAR          0x00020000
+#define MCHT_TODAYLINK         0x00030000
+
+#define MCHT_NEXT              0x01000000
+#define MCHT_PREV              0x02000000
+#define MCHT_NOWHERE           0x00000000
+#define MCHT_TITLEBK           (MCHT_TITLE)
+#define MCHT_TITLEMONTH        (MCHT_TITLE | 0x0001)
+#define MCHT_TITLEYEAR         (MCHT_TITLE | 0x0002)
+#define MCHT_TITLEBTNNEXT      (MCHT_TITLE | MCHT_NEXT | 0x0003)
+#define MCHT_TITLEBTNPREV      (MCHT_TITLE | MCHT_PREV | 0x0003)
+
+#define MCHT_CALENDARBK        (MCHT_CALENDAR)
+#define MCHT_CALENDARDATE      (MCHT_CALENDAR | 0x0001)
+#define MCHT_CALENDARDATENEXT  (MCHT_CALENDARDATE | MCHT_NEXT)
+#define MCHT_CALENDARDATEPREV  (MCHT_CALENDARDATE | MCHT_PREV)
+#define MCHT_CALENDARDAY       (MCHT_CALENDAR | 0x0002)
+#define MCHT_CALENDARWEEKNUM   (MCHT_CALENDAR | 0x0003)
+
+
+
+#define GMR_VISIBLE     0
+#define GMR_DAYSTATE    1
+
+
+/*  Month calendar's structures */
+
+
+typedef struct {
+        UINT cbSize;
+        POINT pt;
+        UINT uHit;
+        SYSTEMTIME st;
+} MCHITTESTINFO, *PMCHITTESTINFO;
+
+typedef struct tagNMSELCHANGE
+{
+    NMHDR           nmhdr;
+    SYSTEMTIME      stSelStart;
+    SYSTEMTIME      stSelEnd;
+} NMSELCHANGE, *LPNMSELCHANGE;
+
+typedef NMSELCHANGE NMSELECT, *LPNMSELECT;
+typedef DWORD MONTHDAYSTATE, *LPMONTHDAYSTATE;
+
+typedef struct tagNMDAYSTATE
+{
+    NMHDR           nmhdr;
+    SYSTEMTIME      stStart;
+    int             cDayState;
+    LPMONTHDAYSTATE prgDayState;
+} NMDAYSTATE, *LPNMDAYSTATE;
+
+
+/* macros */
+
+#define MonthCal_GetCurSel(hmc, pst) \
+		(BOOL)SNDMSGA(hmc, MCM_GETCURSEL, 0, (LPARAM)(pst))
+#define MonthCal_SetCurSel(hmc, pst)  \
+		(BOOL)SNDMSGA(hmc, MCM_SETCURSEL, 0, (LPARAM)(pst))
+#define MonthCal_GetMaxSelCount(hmc) \
+		(DWORD)SNDMSGA(hmc, MCM_GETMAXSELCOUNT, 0, 0L)
+#define MonthCal_SetMaxSelCount(hmc, n) \
+		(BOOL)SNDMSGA(hmc, MCM_SETMAXSELCOUNT, (WPARAM)(n), 0L)
+#define MonthCal_GetSelRange(hmc, rgst) \
+		SNDMSGA(hmc, MCM_GETSELRANGE, 0, (LPARAM) (rgst))
+#define MonthCal_SetSelRange(hmc, rgst) \
+		SNDMSGA(hmc, MCM_SETSELRANGE, 0, (LPARAM) (rgst))
+#define MonthCal_GetMonthRange(hmc, gmr, rgst) \
+		(DWORD)SNDMSGA(hmc, MCM_GETMONTHRANGE, (WPARAM)(gmr), (LPARAM)(rgst))
+#define MonthCal_SetDayState(hmc, cbds, rgds) \
+		SNDMSGA(hmc, MCM_SETDAYSTATE, (WPARAM)(cbds), (LPARAM)(rgds))
+#define MonthCal_GetMinReqRect(hmc, prc) \
+		SNDMSGA(hmc, MCM_GETMINREQRECT, 0, (LPARAM)(prc))
+#define MonthCal_SetColor(hmc, iColor, clr)\
+        SNDMSGA(hmc, MCM_SETCOLOR, iColor, clr)
+#define MonthCal_GetColor(hmc, iColor) \
+		SNDMSGA(hmc, MCM_SETCOLOR, iColor, 0)
+#define MonthCal_GetToday(hmc, pst)\
+		(BOOL)SNDMSGA(hmc, MCM_GETTODAY, 0, (LPARAM)pst)
+#define MonthCal_SetToday(hmc, pst)\
+		SNDMSGA(hmc, MCM_SETTODAY, 0, (LPARAM)pst)
+#define MonthCal_HitTest(hmc, pinfo) \
+        SNDMSGA(hmc, MCM_HITTEST, 0, (LPARAM)(PMCHITTESTINFO)pinfo)
+#define MonthCal_SetFirstDayOfWeek(hmc, iDay) \
+        SNDMSGA(hmc, MCM_SETFIRSTDAYOFWEEK, 0, iDay)
+#define MonthCal_GetFirstDayOfWeek(hmc) \
+        (DWORD)SNDMSGA(hmc, MCM_GETFIRSTDAYOFWEEK, 0, 0)
+#define MonthCal_GetRange(hmc, rgst) \
+        (DWORD)SNDMSGA(hmc, MCM_GETRANGE, 0, (LPARAM)(rgst))
+#define MonthCal_SetRange(hmc, gd, rgst) \
+        (BOOL)SNDMSGA(hmc, MCM_SETRANGE, (WPARAM)(gd), (LPARAM)(rgst))
+#define MonthCal_GetMonthDelta(hmc) \
+        (int)SNDMSGA(hmc, MCM_GETMONTHDELTA, 0, 0)
+#define MonthCal_SetMonthDelta(hmc, n) \
+        (int)SNDMSGA(hmc, MCM_SETMONTHDELTA, n, 0)
+#define MonthCal_GetMaxTodayWidth(hmc) \
+        (DWORD)SNDMSGA(hmc, MCM_GETMAXTODAYWIDTH, 0, 0)
+#define MonthCal_SetUnicodeFormat(hwnd, fUnicode)  \
+        (BOOL)SNDMSGA((hwnd), MCM_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0)
+#define MonthCal_GetUnicodeFormat(hwnd)  \
+        (BOOL)SNDMSGA((hwnd), MCM_GETUNICODEFORMAT, 0, 0)
+
+
+/**************************************************************************
+ * Date and time picker control
+ */
+
+#define DATETIMEPICK_CLASSA	"SysDateTimePick32"
+#if defined(__GNUC__)
+# define DATETIMEPICK_CLASSW (const WCHAR []){ 'S','y','s', \
+  'D','a','t','e','T','i','m','e','P','i','c','k','3','2',0 }
+#elif defined(_MSC_VER)
+# define DATETIMEPICK_CLASSW    L"SysDateTimePick32"
+#else
+static const WCHAR DATETIMEPICK_CLASSW[] = { 'S','y','s',
+  'D','a','t','e','T','i','m','e','P','i','c','k','3','2',0 };
+#endif
+#define DATETIMEPICK_CLASS	WINELIB_NAME_AW(DATETIMEPICK_CLASS)
+
+#define DTM_FIRST        0x1000
+#define DTN_FIRST       (0U-760U)
+#define DTN_LAST        (0U-799U)
+
+
+#define DTM_GETSYSTEMTIME	(DTM_FIRST+1)
+#define DTM_SETSYSTEMTIME	(DTM_FIRST+2)
+#define DTM_GETRANGE		(DTM_FIRST+3)
+#define DTM_SETRANGE		(DTM_FIRST+4)
+#define DTM_SETFORMATA	        (DTM_FIRST+5)
+#define DTM_SETFORMATW	        (DTM_FIRST + 50)
+#define DTM_SETFORMAT		WINELIB_NAME_AW(DTM_SETFORMAT)
+#define DTM_SETMCCOLOR		(DTM_FIRST+6)
+#define DTM_GETMCCOLOR		(DTM_FIRST+7)
+#define DTM_GETMONTHCAL		(DTM_FIRST+8)
+#define DTM_SETMCFONT		(DTM_FIRST+9)
+#define DTM_GETMCFONT		(DTM_FIRST+10)
+
+
+/* Datetime Notifications */
+
+#define DTN_DATETIMECHANGE  (DTN_FIRST + 1)
+#define DTN_USERSTRINGA     (DTN_FIRST + 2)
+#define DTN_WMKEYDOWNA      (DTN_FIRST + 3)
+#define DTN_FORMATA         (DTN_FIRST + 4)
+#define DTN_FORMATQUERYA    (DTN_FIRST + 5)
+#define DTN_DROPDOWN        (DTN_FIRST + 6)
+#define DTN_CLOSEUP         (DTN_FIRST + 7)
+#define DTN_USERSTRINGW     (DTN_FIRST + 15)
+#define DTN_WMKEYDOWNW      (DTN_FIRST + 16)
+#define DTN_FORMATW         (DTN_FIRST + 17)
+#define DTN_FORMATQUERYW    (DTN_FIRST + 18)
+
+#define DTN_USERSTRING      WINELIB_NAME_AW(DTN_USERSTRING)
+#define DTN_WMKEYDOWN       WINELIB_NAME_AW(DTN_WMKEYDOWN)
+#define DTN_FORMAT          WINELIB_NAME_AW(DTN_FORMAT)
+#define DTN_FORMATQUERY     WINELIB_NAME_AW(DTN_FORMATQUERY)
+
+#define DTS_SHORTDATEFORMAT 0x0000
+#define DTS_UPDOWN          0x0001
+#define DTS_SHOWNONE        0x0002
+#define DTS_LONGDATEFORMAT  0x0004
+#define DTS_TIMEFORMAT      0x0009
+#define DTS_APPCANPARSE     0x0010
+#define DTS_RIGHTALIGN      0x0020
+
+typedef struct tagNMDATETIMECHANGE
+{
+    NMHDR       nmhdr;
+    DWORD       dwFlags;
+    SYSTEMTIME  st;
+} NMDATETIMECHANGE, *LPNMDATETIMECHANGE;
+
+typedef struct tagNMDATETIMESTRINGA
+{
+    NMHDR      nmhdr;
+    LPCSTR     pszUserString;
+    SYSTEMTIME st;
+    DWORD      dwFlags;
+} NMDATETIMESTRINGA, *LPNMDATETIMESTRINGA;
+
+typedef struct tagNMDATETIMESTRINGW
+{
+    NMHDR      nmhdr;
+    LPCWSTR    pszUserString;
+    SYSTEMTIME st;
+    DWORD      dwFlags;
+} NMDATETIMESTRINGW, *LPNMDATETIMESTRINGW;
+
+DECL_WINELIB_TYPE_AW(NMDATETIMESTRING)
+DECL_WINELIB_TYPE_AW(LPNMDATETIMESTRING)
+
+typedef struct tagNMDATETIMEWMKEYDOWNA
+{
+    NMHDR      nmhdr;
+    int        nVirtKey;
+    LPCSTR     pszFormat;
+    SYSTEMTIME st;
+} NMDATETIMEWMKEYDOWNA, *LPNMDATETIMEWMKEYDOWNA;
+
+typedef struct tagNMDATETIMEWMKEYDOWNW
+{
+    NMHDR      nmhdr;
+    int        nVirtKey;
+    LPCWSTR    pszFormat;
+    SYSTEMTIME st;
+} NMDATETIMEWMKEYDOWNW, *LPNMDATETIMEWMKEYDOWNW;
+
+DECL_WINELIB_TYPE_AW(NMDATETIMEWMKEYDOWN)
+DECL_WINELIB_TYPE_AW(LPNMDATETIMEWMKEYDOWN)
+
+typedef struct tagNMDATETIMEFORMATA
+{
+    NMHDR nmhdr;
+    LPCSTR  pszFormat;
+    SYSTEMTIME st;
+    LPCSTR pszDisplay;
+    CHAR szDisplay[64];
+} NMDATETIMEFORMATA, *LPNMDATETIMEFORMATA;
+
+
+typedef struct tagNMDATETIMEFORMATW
+{
+    NMHDR nmhdr;
+    LPCWSTR pszFormat;
+    SYSTEMTIME st;
+    LPCWSTR pszDisplay;
+    WCHAR szDisplay[64];
+} NMDATETIMEFORMATW, *LPNMDATETIMEFORMATW;
+
+DECL_WINELIB_TYPE_AW(NMDATETIMEFORMAT)
+DECL_WINELIB_TYPE_AW(LPNMDATETIMEFORMAT)
+
+typedef struct tagNMDATETIMEFORMATQUERYA
+{
+    NMHDR nmhdr;
+    LPCSTR pszFormat;
+    SIZE szMax;
+} NMDATETIMEFORMATQUERYA, *LPNMDATETIMEFORMATQUERYA;
+
+typedef struct tagNMDATETIMEFORMATQUERYW
+{
+    NMHDR nmhdr;
+    LPCWSTR pszFormat;
+    SIZE szMax;
+} NMDATETIMEFORMATQUERYW, *LPNMDATETIMEFORMATQUERYW;
+
+DECL_WINELIB_TYPE_AW(NMDATETIMEFORMATQUERY)
+DECL_WINELIB_TYPE_AW(LPNMDATETIMEFORMATQUERY)
+
+
+
+#define GDT_ERROR    -1
+#define GDT_VALID    0
+#define GDT_NONE     1
+
+#define GDTR_MIN     0x0001
+#define GDTR_MAX     0x0002
+
+
+#define DateTime_GetSystemtime(hdp, pst)   \
+  (DWORD)SNDMSGA (hdp, DTM_GETSYSTEMTIME , 0, (LPARAM)(pst))
+#define DateTime_SetSystemtime(hdp, gd, pst)   \
+  (BOOL)SNDMSGA (hdp, DTM_SETSYSTEMTIME, (LPARAM)(gd), (LPARAM)(pst))
+#define DateTime_GetRange(hdp, rgst)  \
+  (DWORD)SNDMSGA (hdp, DTM_GETRANGE, 0, (LPARAM)(rgst))
+#define DateTime_SetRange(hdp, gd, rgst) \
+   (BOOL)SNDMSGA (hdp, DTM_SETRANGE, (WPARAM)(gd), (LPARAM)(rgst))
+#define DateTime_SetFormatA(hdp, sz)  \
+  (BOOL)SNDMSGA (hdp, DTM_SETFORMATA, 0, (LPARAM)(sz))
+#define DateTime_SetFormatW(hdp, sz)  \
+  (BOOL)SNDMSGW (hdp, DTM_SETFORMATW, 0, (LPARAM)(sz))
+#define DateTime_SetFormat WINELIB_NAME_AW(DateTime_SetFormat)
+#define DateTime_GetMonthCalColor(hdp, iColor) \
+  SNDMSGA (hdp, DTM_GETMCCOLOR, iColor, 0)
+#define DateTime_SetMonthCalColor(hdp, iColor, clr) \
+  SNDMSGA (hdp, DTM_SETMCCOLOR, iColor, clr)
+#define DateTime_GetMonthCal(hdp)  \
+  (HWND) SNDMSGA (hdp, DTM_GETMONTHCAL, 0, 0)
+#define DateTime_SetMonthCalFont(hdp, hfont, fRedraw) \
+  SNDMSGA (hdp, DTM_SETMCFONT, (WPARAM)hfont, (LPARAM)fRedraw)
+#define DateTime_GetMonthCalFont(hdp) \
+  SNDMSGA (hdp, DTM_GETMCFONT, 0, 0)
+
+#define DA_LAST         (0x7fffffff)
+#define DPA_APPEND      (0x7fffffff)
+#define DPA_ERR         (-1)
+
+#define DSA_APPEND      (0x7fffffff)
+#define DSA_ERR         (-1)
+
+struct _DSA;
+typedef struct _DSA *HDSA;
+
+typedef INT (CALLBACK *PFNDSAENUMCALLBACK)(LPVOID, LPVOID);
+
+HDSA   WINAPI DSA_Create(INT, INT);
+BOOL   WINAPI DSA_Destroy(HDSA);
+void   WINAPI DSA_DestroyCallback(HDSA, PFNDSAENUMCALLBACK, LPVOID);
+LPVOID WINAPI DSA_GetItemPtr(HDSA, INT);
+INT    WINAPI DSA_InsertItem(HDSA, INT, LPVOID);
+
+#define DPAS_SORTED             0x0001
+#define DPAS_INSERTBEFORE       0x0002
+#define DPAS_INSERTAFTER        0x0004
+
+
+struct _DPA;
+typedef struct _DPA *HDPA;
+
+typedef INT (CALLBACK *PFNDPAENUMCALLBACK)(LPVOID, LPVOID);
+typedef INT (CALLBACK *PFNDPACOMPARE)(LPVOID, LPVOID, LPARAM);
+
+HDPA   WINAPI DPA_Create(INT);
+BOOL   WINAPI DPA_Destroy(HDPA);
+LPVOID WINAPI DPA_DeletePtr(HDPA, INT);
+BOOL   WINAPI DPA_DeleteAllPtrs(HDPA);
+BOOL   WINAPI DPA_SetPtr(HDPA, INT, LPVOID);
+LPVOID WINAPI DPA_GetPtr(HDPA, INT);
+INT    WINAPI DPA_InsertPtr(HDPA, INT, LPVOID);
+BOOL   WINAPI DPA_Sort(HDPA, PFNDPACOMPARE, LPARAM);
+void   WINAPI DPA_EnumCallback(HDPA, PFNDPAENUMCALLBACK, LPVOID);
+void   WINAPI DPA_DestroyCallback(HDPA, PFNDPAENUMCALLBACK, LPVOID);
+INT    WINAPI DPA_Search(HDPA, LPVOID, INT, PFNDPACOMPARE, LPARAM, UINT);
+
+BOOL WINAPI Str_SetPtrW (LPWSTR *, LPCWSTR);
+
+/**************************************************************************
+ * SysLink control
+ */
+
+#if defined(__GNUC__)
+# define WC_LINK (const WCHAR []){ 'S','y','s','L','i','n','k',0 }
+#elif defined(_MSC_VER)
+# define WC_LINK             L"SysLink"
+#else
+static const WCHAR WC_LINK[] = { 'S','y','s','L','i','n','k',0 };
+#endif
+
+/* SysLink messages */
+#define LM_HITTEST           (WM_USER + 768)
+#define LM_GETIDEALHEIGHT    (WM_USER + 769)
+#define LM_GETIDEALSIZE      (LM_GETIDEALHEIGHT)
+#define LM_SETITEM           (WM_USER + 770)
+#define LM_GETITEM           (WM_USER + 771)
+
+/* SysLink links flags */
+
+#define LIF_ITEMINDEX   1
+#define LIF_STATE       2
+#define LIF_ITEMID      4
+#define LIF_URL         8
+
+/* SysLink links states */
+
+#define LIS_FOCUSED     1
+#define LIS_ENABLED     2
+#define LIS_VISITED     4
+
+/* SysLink misc. */
+
+#define INVALID_LINK_INDEX  (-1)
+#define MAX_LINKID_TEXT     48
+#define L_MAX_URL_LENGTH    2084
+
+/* SysLink structures */
+
+typedef struct tagLITEM
+{
+  UINT mask;
+  int iLink;
+  UINT state;
+  UINT stateMask;
+  WCHAR szID[MAX_LINKID_TEXT];
+  WCHAR szUrl[L_MAX_URL_LENGTH];
+} LITEM, *PLITEM;
+
+typedef struct tagLHITTESTINFO
+{
+  POINT pt;
+  LITEM item;
+} LHITTESTINFO, *PLHITTESTINFO;
+
+typedef struct tagNMLINK
+{
+  NMHDR hdr;
+  LITEM item;
+} NMLINK, *PNMLINK;
+
+typedef struct tagNMLVLINK
+{
+    NMHDR hdr;
+    LITEM link;
+    int iItem;
+    int iSubItem;
+} NMLVLINK, *PNMLVLINK;
+
+/**************************************************************************
+ * Static control
+ */
+
+#define WC_STATICA		"Static"
+#if defined(__GNUC__)
+# define WC_STATICW 		(const WCHAR []){ 'S','t','a','t','i','c',0 }
+#elif defined(_MSC_VER)
+# define WC_STATICW 		L"Static"
+#else
+static const WCHAR WC_STATICW[] = { 'S','t','a','t','i','c',0 };
+#endif
+#define WC_STATIC		WINELIB_NAME_AW(WC_STATIC)
+
+/**************************************************************************
+ * Combobox control
+ */
+
+#define WC_COMBOBOXA              "ComboBox"
+#if defined(__GNUC__)
+# define WC_COMBOBOXW             (const WCHAR []){ 'C','o','m','b','o','B','o','x',0 }
+#elif defined(_MSC_VER)
+# define WC_COMBOBOXW             L"ComboBox"
+#else
+static const WCHAR WC_COMBOBOXW[] = { 'C','o','m','b','o','B','o','x',0 };
+#endif
+#define WC_COMBOBOX               WINELIB_NAME_AW(WC_COMBOBOX)
+
+/**************************************************************************
+ * Edit control
+ */
+
+#define WC_EDITA                  "Edit"
+#if defined(__GNUC__)
+# define WC_EDITW                 (const WCHAR []){ 'E','d','i','t',0 }
+#elif defined(_MSC_VER)
+# define WC_EDITW                 L"Edit"
+#else
+static const WCHAR WC_EDITW[] = { 'E','d','i','t',0 };
+#endif
+#define WC_EDIT                   WINELIB_NAME_AW(WC_EDIT)
+
+/**************************************************************************
+ * List box control
+ */
+
+#define WC_LISTBOXA               "ListBox"
+#if defined(__GNUC__)
+# define WC_LISTBOXW              (const WCHAR []){ 'L','i','s','t','B','o','x',0 }
+#elif defined(_MSC_VER)
+# define WC_LISTBOXW              L"ListBox"
+#else
+static const WCHAR WC_LISTBOXW[] = { 'L','i','s','t','B','o','x',0 };
+#endif
+#define WC_LISTBOX                WINELIB_NAME_AW(WC_LISTBOX)
+
+/**************************************************************************
+ * Scroll bar control
+ */
+
+#define WC_SCROLLBARA             "ScrollBar"
+#if defined(__GNUC__)
+# define WC_SCROLLBARW            (const WCHAR []){ 'S','c','r','o','l','l','B','a','r',0 }
+#elif defined(_MSC_VER)
+# define WC_SCROLLBARW            L"ScrollBar"
+#else
+static const WCHAR WC_SCROLLBARW[] = { 'S','c','r','o','l','l','B','a','r',0 };
+#endif
+#define WC_SCROLLBAR              WINELIB_NAME_AW(WC_SCROLLBAR)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* __WINE_COMMCTRL_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/commctrl.rh
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/commctrl.rh	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/commctrl.rh	(revision 16410)
@@ -0,0 +1,196 @@
+/*
+ * Copyright (C) 2008 Vijay Kiran Kamuju
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/* Header Control */
+#define HDS_HORZ        0x0000
+#define HDS_BUTTONS     0x0002
+#define HDS_HOTTRACK    0x0004
+#define HDS_HIDDEN      0x0008
+#define HDS_DRAGDROP    0x0040
+#define HDS_FULLDRAG    0x0080
+#define HDS_FILTERBAR   0x0100
+#define HDS_FLAT        0x0200
+
+/* Rebar Control */
+#define RBS_TOOLTIPS        0x0100
+#define RBS_VARHEIGHT       0x0200
+#define RBS_BANDBORDERS     0x0400
+#define RBS_FIXEDORDER      0x0800
+#define RBS_REGISTERDROP    0x1000
+#define RBS_AUTOSIZE        0x2000
+#define RBS_VERTICALGRIPPER 0x4000
+#define RBS_DBLCLKTOGGLE    0x8000
+
+/*Tool tips */
+#define TTS_ALWAYSTIP       0x01
+#define TTS_NOPREFIX        0x02
+#define TTS_NOANIMATE       0x10
+#define TTS_NOFADE          0x20
+#define TTS_BALLOON         0x40
+#define TTS_CLOSE           0x80
+
+/* Statusbar Control */
+#define SBARS_SIZEGRIP      0x0100
+#define SBARS_TOOLTIPS      0x0800
+#define SBT_TOOLTIPS        0x0800
+
+/* Toolbar Control */
+#define TBS_BOTTOM          0x0000
+#define TBS_HORZ            0x0000
+#define TBS_RIGHT           0x0000
+#define TBS_AUTOTICKS       0x0001
+#define TBS_VERT            0x0002
+#define TBS_LEFT            0x0004
+#define TBS_TOP             0x0004
+#define TBS_BOTH            0x0008
+#define TBS_NOTICKS         0x0010
+#define TBS_ENABLESELRANGE  0x0020
+#define TBS_FIXEDLENGTH     0x0040
+#define TBS_NOTHUMB         0x0080
+#define TBS_TOOLTIPS        0x0100
+#define TBS_REVERSED        0x0200
+#define TBS_DOWNISLEFT      0x0400
+
+/* UpDown Control */
+#define UDS_WRAP            0x0001
+#define UDS_SETBUDDYINT     0x0002
+#define UDS_ALIGNRIGHT      0x0004
+#define UDS_ALIGNLEFT       0x0008
+#define UDS_AUTOBUDDY       0x0010
+#define UDS_ARROWKEYS       0x0020
+#define UDS_HORZ            0x0040
+#define UDS_NOTHOUSANDS     0x0080
+#define UDS_HOTTRACK        0x0100
+
+/* Progressbar Control */
+#define PBS_SMOOTH          0x01
+#define PBS_VERTICAL        0x04
+
+/* Common Control Styles */
+#define CCS_TOP             0x00000001L
+#define CCS_NOMOVE          0x00000002L
+#define CCS_BOTTOM          0x00000003L
+#define CCS_NORESIZE        0x00000004L
+#define CCS_NOPARENTALIGN   0x00000008L
+#define CCS_ADJUSTABLE      0x00000020L
+#define CCS_NODIVIDER       0x00000040L
+#define CCS_VERT            0x00000080L
+#define CCS_LEFT            (CCS_VERT | CCS_TOP)
+#define CCS_RIGHT           (CCS_VERT | CCS_BOTTOM)
+#define CCS_NOMOVEX         (CCS_VERT | CCS_NOMOVEY)
+
+/* Listview Control */
+#define LVS_ALIGNTOP        0x0000
+#define LVS_ICON            0x0000
+#define LVS_REPORT          0x0001
+#define LVS_SMALLICON       0x0002
+#define LVS_LIST            0x0003
+#define LVS_TYPEMASK        0x0003
+#define LVS_SINGLESEL       0x0004
+#define LVS_SHOWSELALWAYS   0x0008
+#define LVS_SORTASCENDING   0x0010
+#define LVS_SORTDESCENDING  0x0020
+#define LVS_SHAREIMAGELISTS 0x0040
+#define LVS_NOLABELWRAP     0x0080
+#define LVS_AUTOARRANGE     0x0100
+#define LVS_EDITLABELS      0x0200
+#define LVS_OWNERDRAWFIXED  0x0400
+#define LVS_ALIGNLEFT       0x0800
+#define LVS_ALIGNMASK       0x0c00
+#define LVS_OWNERDATA       0x1000
+#define LVS_NOSCROLL        0x2000
+#define LVS_NOCOLUMNHEADER  0x4000
+#define LVS_NOSORTHEADER    0x8000
+#define LVS_TYPESTYLEMASK   0xfc00
+
+/* Treeview Control */
+#define TVS_HASBUTTONS      0x0001
+#define TVS_HASLINES        0x0002
+#define TVS_LINESATROOT     0x0004
+#define TVS_EDITLABELS      0x0008
+#define TVS_DISABLEDRAGDROP 0x0010
+#define TVS_SHOWSELALWAYS   0x0020
+#define TVS_RTLREADING      0x0040
+#define TVS_NOTOOLTIPS      0x0080
+#define TVS_CHECKBOXES      0x0100
+#define TVS_TRACKSELECT     0x0200
+#define TVS_SINGLEEXPAND    0x0400
+#define TVS_INFOTIP         0x0800
+#define TVS_FULLROWSELECT   0x1000
+#define TVS_NOSCROLL        0x2000
+#define TVS_NONEVENHEIGHT   0x4000
+#define TVS_NOHSCROLL       0x8000
+
+/* Tab Control */
+#define TCS_RIGHTJUSTIFY        0x0000
+#define TCS_SINGLELINE          0x0000
+#define TCS_TABS                0x0000
+#define TCS_SCROLLOPPOSITE      0x0001
+#define TCS_BOTTOM              0x0002
+#define TCS_RIGHT               0x0002
+#define TCS_MULTISELECT         0x0004
+#define TCS_FLATBUTTONS         0x0008
+#define TCS_FORCEICONLEFT       0x0010
+#define TCS_FORCELABELLEFT      0x0020
+#define TCS_HOTTRACK            0x0040
+#define TCS_VERTICAL            0x0080
+#define TCS_BUTTONS             0x0100
+#define TCS_MULTILINE           0x0200
+#define TCS_FIXEDWIDTH          0x0400
+#define TCS_RAGGEDRIGHT         0x0800
+#define TCS_FOCUSONBUTTONDOWN   0x1000
+#define TCS_OWNERDRAWFIXED      0x2000
+#define TCS_TOOLTIPS            0x4000
+#define TCS_FOCUSNEVER          0x8000
+
+/* Animate Control */
+#define ACS_CENTER          0x0001
+#define ACS_TRANSPARENT     0x0002
+#define ACS_AUTOPLAY        0x0004
+#define ACS_TIMER           0x0008
+
+/* Month Calendar Control */
+#define MCS_DAYSTATE        0x0001
+#define MCS_MULTISELECT     0x0002
+#define MCS_WEEKNUMBERS     0x0004
+#define MCS_NOTODAYCIRCLE   0x0008
+#define MCS_NOTODAY         0x0010
+
+/* Datetime Control */
+#define DTS_SHORTDATEFORMAT        0x0000
+#define DTS_UPDOWN                 0x0001
+#define DTS_SHOWNONE               0x0002
+#define DTS_LONGDATEFORMAT         0x0004
+#define DTS_TIMEFORMAT             0x0009
+#define DTS_SHORTDATECENTURYFORMAT 0x000C
+#define DTS_APPCANPARSE            0x0010
+#define DTS_RIGHTALIGN             0x0020
+
+/* Pager Control */
+#define PGS_VERT            0x00000000
+#define PGS_HORZ            0x00000001
+#define PGS_AUTOSCROLL      0x00000002
+#define PGS_DRAGNDROP       0x00000004
+
+/* Native Font Control */
+#define NFS_EDIT            0x0001
+#define NFS_STATIC          0x0002
+#define NFS_LISTCOMBO       0x0004
+#define NFS_BUTTON          0x0008
+#define NFS_ALL             0x0010
+#define NFS_USEFONTASSOC    0x0020
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/commdlg.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/commdlg.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/commdlg.h	(revision 16410)
@@ -0,0 +1,779 @@
+/*
+ * COMMDLG - Common Wine Dialog ... :-)
+ *
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_COMMDLG_H
+#define __WINE_COMMDLG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <prsht.h>
+#include <pshpack1.h>
+
+#ifndef SNDMSG
+#ifdef __cplusplus
+#define SNDMSG ::SendMessage
+#else   /* __cplusplus */
+#define SNDMSG SendMessage
+#endif  /* __cplusplus */
+#endif  /* SNDMSG */
+
+#define OFN_READONLY                 0x00000001
+#define OFN_OVERWRITEPROMPT          0x00000002
+#define OFN_HIDEREADONLY             0x00000004
+#define OFN_NOCHANGEDIR              0x00000008
+#define OFN_SHOWHELP                 0x00000010
+#define OFN_ENABLEHOOK               0x00000020
+#define OFN_ENABLETEMPLATE           0x00000040
+#define OFN_ENABLETEMPLATEHANDLE     0x00000080
+#define OFN_NOVALIDATE               0x00000100
+#define OFN_ALLOWMULTISELECT         0x00000200
+#define OFN_EXTENSIONDIFFERENT       0x00000400
+#define OFN_PATHMUSTEXIST            0x00000800
+#define OFN_FILEMUSTEXIST            0x00001000
+#define OFN_CREATEPROMPT             0x00002000
+#define OFN_SHAREAWARE               0x00004000
+#define OFN_NOREADONLYRETURN         0x00008000
+#define OFN_NOTESTFILECREATE         0x00010000
+#define OFN_NONETWORKBUTTON          0x00020000
+#define OFN_NOLONGNAMES              0x00040000
+#define OFN_EXPLORER                 0x00080000
+#define OFN_NODEREFERENCELINKS       0x00100000
+#define OFN_LONGNAMES                0x00200000
+#define OFN_ENABLEINCLUDENOTIFY      0x00400000
+#define OFN_ENABLESIZING             0x00800000
+#define OFN_DONTADDTORECENT          0x02000000
+#define OFN_FORCESHOWHIDDEN          0x10000000
+
+#define OFN_SHAREFALLTHROUGH     2
+#define OFN_SHARENOWARN          1
+#define OFN_SHAREWARN            0
+
+#define SAVE_DIALOG  1
+#define OPEN_DIALOG  2
+
+typedef UINT (CALLBACK *LPOFNHOOKPROC)(HWND,UINT,WPARAM,LPARAM);
+
+typedef struct tagOFNA {
+	DWORD		lStructSize;
+	HWND		hwndOwner;
+	HINSTANCE	hInstance;
+	LPCSTR		lpstrFilter;
+	LPSTR		lpstrCustomFilter;
+	DWORD		nMaxCustFilter;
+	DWORD		nFilterIndex;
+	LPSTR		lpstrFile;
+	DWORD		nMaxFile;
+	LPSTR		lpstrFileTitle;
+	DWORD		nMaxFileTitle;
+	LPCSTR		lpstrInitialDir;
+	LPCSTR		lpstrTitle;
+	DWORD		Flags;
+	WORD		nFileOffset;
+	WORD		nFileExtension;
+	LPCSTR		lpstrDefExt;
+	LPARAM		lCustData;
+	LPOFNHOOKPROC	lpfnHook;
+	LPCSTR		lpTemplateName;
+} OPENFILENAMEA,*LPOPENFILENAMEA;
+
+typedef struct tagOFNW {
+	DWORD		lStructSize;
+	HWND		hwndOwner;
+	HINSTANCE	hInstance;
+	LPCWSTR		lpstrFilter;
+	LPWSTR		lpstrCustomFilter;
+	DWORD		nMaxCustFilter;
+	DWORD		nFilterIndex;
+	LPWSTR		lpstrFile;
+	DWORD		nMaxFile;
+	LPWSTR		lpstrFileTitle;
+	DWORD		nMaxFileTitle;
+	LPCWSTR		lpstrInitialDir;
+	LPCWSTR		lpstrTitle;
+	DWORD		Flags;
+	WORD		nFileOffset;
+	WORD		nFileExtension;
+	LPCWSTR		lpstrDefExt;
+	LPARAM		lCustData;
+	LPOFNHOOKPROC	lpfnHook;
+	LPCWSTR		lpTemplateName;
+} OPENFILENAMEW,*LPOPENFILENAMEW;
+
+DECL_WINELIB_TYPE_AW(OPENFILENAME)
+DECL_WINELIB_TYPE_AW(LPOPENFILENAME)
+
+#ifndef CDSIZEOF_STRUCT
+#define CDSIZEOF_STRUCT(type,field) ((int)&(((type *)0)->field) + sizeof(((type*)0)->field))
+#endif
+
+#define OPENFILENAME_SIZE_VERSION_400A CDSIZEOF_STRUCT(OPENFILENAMEA,lpTemplateName)
+#define OPENFILENAME_SIZE_VERSION_400W CDSIZEOF_STRUCT(OPENFILENAMEW,lpTemplateName)
+#define OPENFILENAME_SIZE_VERSION_400 WINELIB_NAME_AW(OPENFILENAME_SIZE_VERSION_400)
+
+
+typedef struct
+{
+	NMHDR           hdr;
+	LPOPENFILENAMEA lpOFN;
+	LPSTR           pszFile;
+} OFNOTIFYA, *LPOFNOTIFYA;
+
+typedef struct
+{
+	NMHDR           hdr;
+	LPOPENFILENAMEW lpOFN;
+	LPWSTR          pszFile;
+} OFNOTIFYW, *LPOFNOTIFYW;
+
+DECL_WINELIB_TYPE_AW(OFNOTIFY)
+DECL_WINELIB_TYPE_AW(LPOFNOTIFY)
+
+typedef UINT (CALLBACK *LPCCHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
+
+typedef struct {
+	DWORD		lStructSize;
+	HWND		hwndOwner;
+	HWND		hInstance; /* Should be an HINSTANCE but MS made a typo */
+	DWORD	        rgbResult;
+	LPDWORD         lpCustColors;
+	DWORD 		Flags;
+	DWORD		lCustData;
+        LPCCHOOKPROC    lpfnHook;
+	LPCSTR 		lpTemplateName;
+} CHOOSECOLORA;
+typedef CHOOSECOLORA *LPCHOOSECOLORA;
+
+typedef struct {
+	DWORD		lStructSize;
+	HWND		hwndOwner;
+	HWND		hInstance; /* Should be an HINSTANCE but MS made a typo */
+	DWORD	        rgbResult;
+	LPDWORD         lpCustColors;
+	DWORD 		Flags;
+	DWORD		lCustData;
+        LPCCHOOKPROC    lpfnHook;
+	LPCWSTR 	lpTemplateName;
+} CHOOSECOLORW;
+typedef CHOOSECOLORW *LPCHOOSECOLORW;
+
+DECL_WINELIB_TYPE_AW(CHOOSECOLOR)
+DECL_WINELIB_TYPE_AW(LPCHOOSECOLOR)
+
+
+#define CC_RGBINIT               0x00000001
+#define CC_FULLOPEN              0x00000002
+#define CC_PREVENTFULLOPEN       0x00000004
+#define CC_SHOWHELP              0x00000008
+#define CC_ENABLEHOOK            0x00000010
+#define CC_ENABLETEMPLATE        0x00000020
+#define CC_ENABLETEMPLATEHANDLE  0x00000040
+#define CC_SOLIDCOLOR            0x00000080
+#define CC_ANYCOLOR              0x00000100
+
+typedef UINT (CALLBACK *LPFRHOOKPROC)(HWND,UINT,WPARAM,LPARAM);
+
+typedef struct {
+	DWORD		lStructSize;
+	HWND		hwndOwner;
+	HINSTANCE	hInstance;
+	DWORD		Flags;
+	LPSTR		lpstrFindWhat;
+	LPSTR		lpstrReplaceWith;
+	WORD		wFindWhatLen;
+	WORD 		wReplaceWithLen;
+	LPARAM 		lCustData;
+        LPFRHOOKPROC    lpfnHook;
+	LPCSTR 		lpTemplateName;
+} FINDREPLACEA, *LPFINDREPLACEA;
+
+typedef struct {
+	DWORD		lStructSize;
+	HWND		hwndOwner;
+	HINSTANCE	hInstance;
+	DWORD		Flags;
+	LPWSTR		lpstrFindWhat;
+	LPWSTR		lpstrReplaceWith;
+	WORD		wFindWhatLen;
+	WORD 		wReplaceWithLen;
+	LPARAM 		lCustData;
+        LPFRHOOKPROC    lpfnHook;
+	LPCWSTR		lpTemplateName;
+} FINDREPLACEW, *LPFINDREPLACEW;
+
+DECL_WINELIB_TYPE_AW(FINDREPLACE)
+DECL_WINELIB_TYPE_AW(LPFINDREPLACE)
+
+#define FR_DOWN                         0x00000001
+#define FR_WHOLEWORD                    0x00000002
+#define FR_MATCHCASE                    0x00000004
+#define FR_FINDNEXT                     0x00000008
+#define FR_REPLACE                      0x00000010
+#define FR_REPLACEALL                   0x00000020
+#define FR_DIALOGTERM                   0x00000040
+#define FR_SHOWHELP                     0x00000080
+#define FR_ENABLEHOOK                   0x00000100
+#define FR_ENABLETEMPLATE               0x00000200
+#define FR_NOUPDOWN                     0x00000400
+#define FR_NOMATCHCASE                  0x00000800
+#define FR_NOWHOLEWORD                  0x00001000
+#define FR_ENABLETEMPLATEHANDLE         0x00002000
+#define FR_HIDEUPDOWN                   0x00004000
+#define FR_HIDEMATCHCASE                0x00008000
+#define FR_HIDEWHOLEWORD                0x00010000
+#define FR_MATCHDIAC                    0x20000000
+#define FR_MATCHKASHIDA                 0x40000000
+#define FR_MATCHALEFHAMZA               0x80000000
+
+typedef UINT (CALLBACK *LPCFHOOKPROC)(HWND,UINT,WPARAM,LPARAM);
+
+typedef struct tagCHOOSEFONTA
+{
+	UINT  	lStructSize;
+	HWND 		hwndOwner;
+	HDC  		hDC;
+	LPLOGFONTA    lpLogFont;
+	INT		iPointSize;
+	DWORD		Flags;
+	COLORREF	rgbColors;
+	LPARAM		lCustData;
+	LPCFHOOKPROC 	lpfnHook;
+	LPCSTR		lpTemplateName;
+	HINSTANCE	hInstance;
+	LPSTR		lpszStyle;
+	WORD		nFontType;
+	WORD	___MISSING_ALIGNMENT__;
+	INT   	nSizeMin;
+	INT		nSizeMax;
+} CHOOSEFONTA, *LPCHOOSEFONTA;
+
+typedef struct tagCHOOSEFONTW
+{
+	UINT  	lStructSize;
+	HWND 		hwndOwner;
+	HDC  		hDC;
+	LPLOGFONTW    lpLogFont;
+	INT		iPointSize;
+	DWORD		Flags;
+	COLORREF	rgbColors;
+	LPARAM		lCustData;
+	LPCFHOOKPROC 	lpfnHook;
+	LPCWSTR		lpTemplateName;
+	HINSTANCE	hInstance;
+	LPWSTR		lpszStyle;
+	WORD		nFontType;
+	WORD	___MISSING_ALIGNMENT__;
+	INT   	nSizeMin;
+	INT		nSizeMax;
+} CHOOSEFONTW, *LPCHOOSEFONTW;
+
+DECL_WINELIB_TYPE_AW(CHOOSEFONT)
+DECL_WINELIB_TYPE_AW(LPCHOOSEFONT)
+
+#define CF_SCREENFONTS               0x00000001
+#define CF_PRINTERFONTS              0x00000002
+#define CF_BOTH                      (CF_SCREENFONTS | CF_PRINTERFONTS)
+#define CF_SHOWHELP                  0x00000004L
+#define CF_ENABLEHOOK                0x00000008L
+#define CF_ENABLETEMPLATE            0x00000010L
+#define CF_ENABLETEMPLATEHANDLE      0x00000020L
+#define CF_INITTOLOGFONTSTRUCT       0x00000040L
+#define CF_USESTYLE                  0x00000080L
+#define CF_EFFECTS                   0x00000100L
+#define CF_APPLY                     0x00000200L
+#define CF_ANSIONLY                  0x00000400L
+#define CF_SCRIPTSONLY               CF_ANSIONLY
+#define CF_NOVECTORFONTS             0x00000800L
+#define CF_NOOEMFONTS                CF_NOVECTORFONTS
+#define CF_NOSIMULATIONS             0x00001000L
+#define CF_LIMITSIZE                 0x00002000L
+#define CF_FIXEDPITCHONLY            0x00004000L
+#define CF_WYSIWYG                   0x00008000L /* use with CF_SCREENFONTS & CF_PRINTERFONTS */
+#define CF_FORCEFONTEXIST            0x00010000L
+#define CF_SCALABLEONLY              0x00020000L
+#define CF_TTONLY                    0x00040000L
+#define CF_NOFACESEL                 0x00080000L
+#define CF_NOSTYLESEL                0x00100000L
+#define CF_NOSIZESEL                 0x00200000L
+#define CF_SELECTSCRIPT              0x00400000L
+#define CF_NOSCRIPTSEL               0x00800000L
+#define CF_NOVERTFONTS               0x01000000L
+
+#define SIMULATED_FONTTYPE      0x8000
+#define PRINTER_FONTTYPE        0x4000
+#define SCREEN_FONTTYPE         0x2000
+#define BOLD_FONTTYPE           0x0100
+#define ITALIC_FONTTYPE         0x0200
+#define REGULAR_FONTTYPE        0x0400
+
+#define WM_CHOOSEFONT_GETLOGFONT        (WM_USER + 1)
+#define WM_CHOOSEFONT_SETLOGFONT	(WM_USER + 101)
+#define WM_CHOOSEFONT_SETFLAGS		(WM_USER + 102)
+
+#define LBSELCHSTRINGA  "commdlg_LBSelChangedNotify"
+#if defined(__GNUC__)
+# define LBSELCHSTRINGW (const WCHAR []){ 'c','o','m','m','d','l','g','_', \
+  'L','B','S','e','l','C','h','a','n','g','e','d','N','o','t','i','f','y',0 }
+#elif defined(_MSC_VER)
+# define LBSELCHSTRINGW L"commdlg_LBSelChangedNotify"
+#else
+static const WCHAR LBSELCHSTRINGW[] = { 'c','o','m','m','d','l','g','_',
+  'L','B','S','e','l','C','h','a','n','g','e','d','N','o','t','i','f','y',0 };
+#endif
+#define LBSELCHSTRING   WINELIB_NAME_AW(LBSELCHSTRING)
+
+#define SHAREVISTRINGA  "commdlg_ShareViolation"
+#if defined(__GNUC__)
+# define SHAREVISTRINGW (const WCHAR []){ 'c','o','m','m','d','l','g','_', \
+  'S','h','a','r','e','V','i','o','l','a','t','i','o','n',0 }
+#elif defined(_MSC_VER)
+# define SHAREVISTRINGW L"commdlg_ShareViolation"
+#else
+static const WCHAR SHAREVISTRINGW[] = { 'c','o','m','m','d','l','g','_',
+  'S','h','a','r','e','V','i','o','l','a','t','i','o','n',0 };
+#endif
+#define SHAREVISTRING   WINELIB_NAME_AW(SHAREVISTRING)
+
+#define FILEOKSTRINGA   "commdlg_FileNameOK"
+#if defined(__GNUC__)
+# define FILEOKSTRINGW (const WCHAR []){ 'c','o','m','m','d','l','g','_', \
+  'F','i','l','e','N','a','m','e','O','K',0 }
+#elif defined(_MSC_VER)
+# define FILEOKSTRINGW  L"commdlg_FileNameOK"
+#else
+static const WCHAR FILEOKSTRINGW[] = { 'c','o','m','m','d','l','g','_',
+  'F','i','l','e','N','a','m','e','O','K',0 };
+#endif
+#define FILEOKSTRING    WINELIB_NAME_AW(FILEOKSTRING)
+
+#define COLOROKSTRINGA  "commdlg_ColorOK"
+#if defined(__GNUC__)
+# define COLOROKSTRINGW (const WCHAR []){ 'c','o','m','m','d','l','g','_', \
+  'C','o','l','o','r','O','K',0 }
+#elif defined(_MSC_VER)
+# define COLOROKSTRINGW L"commdlg_ColorOK"
+#else
+static const WCHAR COLOROKSTRINGW[] = { 'c','o','m','m','d','l','g','_',
+  'C','o','l','o','r','O','K',0 };
+#endif
+#define COLOROKSTRING   WINELIB_NAME_AW(COLOROKSTRING)
+
+#define SETRGBSTRINGA   "commdlg_SetRGBColor"
+#if defined(__GNUC__)
+# define SETRGBSTRINGW (const WCHAR []){ 'c','o','m','m','d','l','g','_', \
+  'S','e','t','R','G','B','C','o','l','o','r',0 }
+#elif defined(_MSC_VER)
+# define SETRGBSTRINGW  L"commdlg_SetRGBColor"
+#else
+static const WCHAR SETRGBSTRINGW[] = { 'c','o','m','m','d','l','g','_',
+  'S','e','t','R','G','B','C','o','l','o','r',0 };
+#endif
+#define SETRGBSTRING    WINELIB_NAME_AW(SETRGBSTRING)
+
+#define FINDMSGSTRINGA  "commdlg_FindReplace"
+#if defined(__GNUC__)
+# define FINDMSGSTRINGW (const WCHAR []){ 'c','o','m','m','d','l','g','_', \
+  'F','i','n','d','R','e','p','l','a','c','e',0 }
+#elif defined(_MSC_VER)
+# define FINDMSGSTRINGW L"commdlg_FindReplace"
+#else
+static const WCHAR FINDMSGSTRINGW[] = { 'c','o','m','m','d','l','g','_',
+  'F','i','n','d','R','e','p','l','a','c','e',0 };
+#endif
+#define FINDMSGSTRING   WINELIB_NAME_AW(FINDMSGSTRING)
+
+#define HELPMSGSTRINGA  "commdlg_help"
+#if defined(__GNUC__)
+# define HELPMSGSTRINGW (const WCHAR []){ 'c','o','m','m','d','l','g','_', \
+  'H','e','l','p',0 }
+#elif defined(_MSC_VER)
+# define HELPMSGSTRINGW L"commdlg_help"
+#else
+static const WCHAR HELPMSGSTRINGW[] = { 'c','o','m','m','d','l','g','_',
+  'H','e','l','p',0 };
+#endif
+#define HELPMSGSTRING   WINELIB_NAME_AW(HELPMSGSTRING)
+
+
+#define CD_LBSELNOITEMS -1
+#define CD_LBSELCHANGE   0
+#define CD_LBSELSUB      1
+#define CD_LBSELADD      2
+
+#define CDN_FIRST   (0U-601U)
+#define CDN_LAST    (0U-699U)
+
+#define CDN_INITDONE            (CDN_FIRST - 0x0000)
+#define CDN_SELCHANGE           (CDN_FIRST - 0x0001)
+#define CDN_FOLDERCHANGE        (CDN_FIRST - 0x0002)
+#define CDN_SHAREVIOLATION      (CDN_FIRST - 0x0003)
+#define CDN_HELP                (CDN_FIRST - 0x0004)
+#define CDN_FILEOK              (CDN_FIRST - 0x0005)
+#define CDN_TYPECHANGE          (CDN_FIRST - 0x0006)
+
+#define CDM_FIRST               (WM_USER + 100)
+#define CDM_LAST                (WM_USER + 200)
+
+#define CDM_GETSPEC             (CDM_FIRST + 0x0000)
+#define CDM_GETFILEPATH         (CDM_FIRST + 0x0001)
+#define CDM_GETFOLDERPATH       (CDM_FIRST + 0x0002)
+#define CDM_GETFOLDERIDLIST     (CDM_FIRST + 0x0003)
+#define CDM_SETCONTROLTEXT      (CDM_FIRST + 0x0004)
+#define CDM_HIDECONTROL         (CDM_FIRST + 0x0005)
+#define CDM_SETDEFEXT           (CDM_FIRST + 0x0006)
+
+
+/* Messages to query information from the open or save dialogs */
+
+#define CommDlg_OpenSave_GetSpecA(_hdlg, _psz, _cbmax) \
+        (int)SNDMSG(_hdlg, CDM_GETSPEC, (WPARAM)_cbmax, (LPARAM)(LPSTR)_psz)
+#define CommDlg_OpenSave_GetSpecW(_hdlg, _psz, _cbmax) \
+        (int)SNDMSG(_hdlg, CDM_GETSPEC, (WPARAM)_cbmax, (LPARAM)(LPWSTR)_psz)
+#define CommDlg_OpenSave_GetSpec  WINELIB_NAME_AW(CommDlg_OpenSave_GetSpec)
+
+#define CommDlg_OpenSave_GetFilePathA(_hdlg, _psz, _cbmax) \
+        (int)SNDMSG(_hdlg, CDM_GETFILEPATH, (WPARAM)_cbmax, (LPARAM)(LPSTR)_psz)
+#define CommDlg_OpenSave_GetFilePathW(_hdlg, _psz, _cbmax) \
+        (int)SNDMSG(_hdlg, CDM_GETFILEPATH, (WPARAM)_cbmax, (LPARAM)(LPWSTR)_psz)
+#define CommDlg_OpenSave_GetFilePath  WINELIB_NAME_AW(CommDlg_OpenSave_GetFilePath)
+
+#define CommDlg_OpenSave_GetFolderPathA(_hdlg, _psz, _cbmax) \
+        (int)SNDMSG(_hdlg, CDM_GETFOLDERPATH, (WPARAM)_cbmax, (LPARAM)(LPSTR)_psz)
+#define CommDlg_OpenSave_GetFolderPathW(_hdlg, _psz, _cbmax) \
+        (int)SNDMSG(_hdlg, CDM_GETFOLDERPATH, (WPARAM)_cbmax, (LPARAM)(LPWSTR)_psz)
+#define CommDlg_OpenSave_GetFolderPath  WINELIB_NAME_AW(CommDlg_OpenSave_GetFolderPath)
+
+#define CommDlg_OpenSave_GetFolderIDList(_hdlg, _pidl, _cbmax) \
+        (int)SNDMSG(_hdlg, CDM_GETFOLDERIDLIST, (WPARAM)_cbmax, (LPARAM)(LPVOID)_pidl)
+
+#define CommDlg_OpenSave_SetControlText(_hdlg, _id, _text) \
+        (void)SNDMSG(_hdlg, CDM_SETCONTROLTEXT, (WPARAM)_id, (LPARAM)(LPSTR)_text)
+
+#define CommDlg_OpenSave_HideControl(_hdlg, _id) \
+        (void)SNDMSG(_hdlg, CDM_HIDECONTROL, (WPARAM)_id, 0)
+
+#define CommDlg_OpenSave_SetDefExt(_hdlg, _pszext) \
+        (void)SNDMSG(_hdlg, CDM_SETDEFEXT, 0, (LPARAM)(LPSTR)_pszext)
+
+#define CommDlg_OpenSave_GetSpecA(_hdlg, _psz, _cbmax) \
+        (int)SNDMSG(_hdlg, CDM_GETSPEC, (WPARAM)_cbmax, (LPARAM)(LPSTR)_psz)
+#define CommDlg_OpenSave_GetSpecW(_hdlg, _psz, _cbmax) \
+        (int)SNDMSG(_hdlg, CDM_GETSPEC, (WPARAM)_cbmax, (LPARAM)(LPWSTR)_psz)
+#define CommDlg_OpenSave_GetSpec WINELIB_NAME_AW(CommDlg_OpenSave_GetSpec)
+
+#define CommDlg_OpenSave_GetFilePathA(_hdlg, _psz, _cbmax) \
+        (int)SNDMSG(_hdlg, CDM_GETFILEPATH, (WPARAM)_cbmax, (LPARAM)(LPSTR)_psz)
+#define CommDlg_OpenSave_GetFilePathW(_hdlg, _psz, _cbmax) \
+        (int)SNDMSG(_hdlg, CDM_GETFILEPATH, (WPARAM)_cbmax, (LPARAM)(LPWSTR)_psz)
+#define CommDlg_OpenSave_GetFilePath WINELIB_NAME_AW(CommDlg_OpenSave_GetFilePath)
+
+#define CommDlg_OpenSave_GetFolderPathA(_hdlg, _psz, _cbmax) \
+        (int)SNDMSG(_hdlg, CDM_GETFOLDERPATH, (WPARAM)_cbmax, (LPARAM)(LPSTR)_psz)
+#define CommDlg_OpenSave_GetFolderPathW(_hdlg, _psz, _cbmax) \
+        (int)SNDMSG(_hdlg, CDM_GETFOLDERPATH, (WPARAM)_cbmax, (LPARAM)(LPWSTR)_psz)
+#define CommDlg_OpenSave_GetFolderPath WINELIB_NAME_AW(CommDlg_OpenSave_GetFolderPath)
+
+#define CommDlg_OpenSave_GetFolderIDList(_hdlg, _pidl, _cbmax) \
+        (int)SNDMSG(_hdlg, CDM_GETFOLDERIDLIST, (WPARAM)_cbmax, (LPARAM)(LPVOID)_pidl)
+
+#define CommDlg_OpenSave_SetControlText(_hdlg, _id, _text) \
+        (void)SNDMSG(_hdlg, CDM_SETCONTROLTEXT, (WPARAM)_id, (LPARAM)(LPSTR)_text)
+
+#define CommDlg_OpenSave_HideControl(_hdlg, _id) \
+        (void)SNDMSG(_hdlg, CDM_HIDECONTROL, (WPARAM)_id, 0)
+
+#define CommDlg_OpenSave_SetDefExt(_hdlg, _pszext) \
+        (void)SNDMSG(_hdlg, CDM_SETDEFEXT, 0, (LPARAM)(LPSTR)_pszext)
+
+
+typedef UINT (CALLBACK *LPPRINTHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
+typedef UINT (CALLBACK *LPSETUPHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
+
+typedef struct tagPDA
+{
+    DWORD            lStructSize;
+    HWND           hwndOwner;
+    HGLOBAL        hDevMode;
+    HGLOBAL        hDevNames;
+    HDC            hDC;
+    DWORD            Flags;
+    WORD             nFromPage;
+    WORD             nToPage;
+    WORD             nMinPage;
+    WORD             nMaxPage;
+    WORD             nCopies;
+    HINSTANCE      hInstance;
+    LPARAM           lCustData;
+    LPPRINTHOOKPROC  lpfnPrintHook;
+    LPSETUPHOOKPROC  lpfnSetupHook;
+    LPCSTR           lpPrintTemplateName;
+    LPCSTR           lpSetupTemplateName;
+    HGLOBAL        hPrintTemplate;
+    HGLOBAL        hSetupTemplate;
+} PRINTDLGA, *LPPRINTDLGA;
+
+typedef struct tagPDW
+{
+    DWORD            lStructSize;
+    HWND           hwndOwner;
+    HGLOBAL        hDevMode;
+    HGLOBAL        hDevNames;
+    HDC            hDC;
+    DWORD            Flags;
+    WORD             nFromPage;
+    WORD             nToPage;
+    WORD             nMinPage;
+    WORD             nMaxPage;
+    WORD             nCopies;
+    HINSTANCE      hInstance;
+    LPARAM           lCustData;
+    LPPRINTHOOKPROC  lpfnPrintHook;
+    LPSETUPHOOKPROC  lpfnSetupHook;
+    LPCWSTR          lpPrintTemplateName;
+    LPCWSTR          lpSetupTemplateName;
+    HGLOBAL        hPrintTemplate;
+    HGLOBAL        hSetupTemplate;
+} PRINTDLGW, *LPPRINTDLGW;
+
+DECL_WINELIB_TYPE_AW(PRINTDLG)
+DECL_WINELIB_TYPE_AW(LPPRINTDLG)
+
+#define PD_ALLPAGES                   0x00000000
+#define PD_SELECTION                  0x00000001
+#define PD_PAGENUMS                   0x00000002
+#define PD_NOSELECTION                0x00000004
+#define PD_NOPAGENUMS                 0x00000008
+#define PD_COLLATE                    0x00000010
+#define PD_PRINTTOFILE                0x00000020
+#define PD_PRINTSETUP                 0x00000040
+#define PD_NOWARNING                  0x00000080
+#define PD_RETURNDC                   0x00000100
+#define PD_RETURNIC                   0x00000200
+#define PD_RETURNDEFAULT              0x00000400
+#define PD_SHOWHELP                   0x00000800
+#define PD_ENABLEPRINTHOOK            0x00001000
+#define PD_ENABLESETUPHOOK            0x00002000
+#define PD_ENABLEPRINTTEMPLATE        0x00004000
+#define PD_ENABLESETUPTEMPLATE        0x00008000
+#define PD_ENABLEPRINTTEMPLATEHANDLE  0x00010000
+#define PD_ENABLESETUPTEMPLATEHANDLE  0x00020000
+#define PD_USEDEVMODECOPIES           0x00040000
+#define PD_USEDEVMODECOPIESANDCOLLATE 0x00040000
+#define PD_DISABLEPRINTTOFILE         0x00080000
+#define PD_HIDEPRINTTOFILE            0x00100000
+#define PD_NONETWORKBUTTON            0x00200000
+#define PD_CURRENTPAGE                0x00400000
+#define PD_NOCURRENTPAGE              0x00800000
+#define PD_EXCLUSIONFLAGS             0x01000000
+#define PD_USELARGETEMPLATE           0x10000000
+
+
+#define PD_EXCL_COPIESANDCOLLATE      (DM_COPIES | DM_COLLATE)
+
+#define START_PAGE_GENERAL 0xffffffff
+
+#define PD_RESULT_CANCEL 0
+#define PD_RESULT_PRINT  1
+#define PD_RESULT_APPLY  2
+
+typedef struct
+{
+    WORD  wDriverOffset;
+    WORD  wDeviceOffset;
+    WORD  wOutputOffset;
+    WORD  wDefault;
+} DEVNAMES;
+typedef DEVNAMES * LPDEVNAMES;
+
+#define DN_DEFAULTPRN      0x0001
+
+/* PageSetupDlg stuff ... */
+#define WM_PSD_PAGESETUPDLG	(WM_USER  )
+#define WM_PSD_FULLPAGERECT	(WM_USER+1)
+#define WM_PSD_MINMARGINRECT	(WM_USER+2)
+#define WM_PSD_MARGINRECT	(WM_USER+3)
+#define WM_PSD_GREEKTEXTRECT	(WM_USER+4)
+#define WM_PSD_ENVSTAMPRECT	(WM_USER+5)
+#define WM_PSD_YAFULLPAGERECT	(WM_USER+6)
+
+typedef UINT (CALLBACK *LPPAGEPAINTHOOK)( HWND, UINT, WPARAM, LPARAM );
+typedef UINT (CALLBACK *LPPAGESETUPHOOK)( HWND, UINT, WPARAM, LPARAM );
+
+typedef struct tagPSDA
+{
+	DWORD		lStructSize;
+	HWND		hwndOwner;
+	HGLOBAL	hDevMode;
+	HGLOBAL	hDevNames;
+	DWORD		Flags;
+	POINT		ptPaperSize;
+	RECT		rtMinMargin;
+	RECT		rtMargin;
+	HINSTANCE	hInstance;
+	LPARAM		lCustData;
+	LPPAGESETUPHOOK	lpfnPageSetupHook;
+	LPPAGEPAINTHOOK	lpfnPagePaintHook;
+	LPCSTR		lpPageSetupTemplateName;
+	HGLOBAL	hPageSetupTemplate;
+} PAGESETUPDLGA,*LPPAGESETUPDLGA;
+
+typedef struct tagPSDW
+{
+	DWORD		lStructSize;
+	HWND		hwndOwner;
+	HGLOBAL	hDevMode;
+	HGLOBAL	hDevNames;
+	DWORD		Flags;
+	POINT		ptPaperSize;
+	RECT		rtMinMargin;
+	RECT		rtMargin;
+	HINSTANCE	hInstance;
+	LPARAM		lCustData;
+	LPPAGESETUPHOOK	lpfnPageSetupHook;
+	LPPAGEPAINTHOOK	lpfnPagePaintHook;
+	LPCWSTR		lpPageSetupTemplateName;
+	HGLOBAL	hPageSetupTemplate;
+} PAGESETUPDLGW,*LPPAGESETUPDLGW;
+DECL_WINELIB_TYPE_AW(PAGESETUPDLG)
+DECL_WINELIB_TYPE_AW(LPPAGESETUPDLG)
+
+#define PSD_DEFAULTMINMARGINS             0x00000000
+#define PSD_INWININIINTLMEASURE           0x00000000
+
+#define PSD_MINMARGINS                    0x00000001
+#define PSD_MARGINS                       0x00000002
+#define PSD_INTHOUSANDTHSOFINCHES         0x00000004
+#define PSD_INHUNDREDTHSOFMILLIMETERS     0x00000008
+#define PSD_DISABLEMARGINS                0x00000010
+#define PSD_DISABLEPRINTER                0x00000020
+#define PSD_NOWARNING                     0x00000080
+#define PSD_DISABLEORIENTATION            0x00000100
+#define PSD_RETURNDEFAULT                 0x00000400
+#define PSD_DISABLEPAPER                  0x00000200
+#define PSD_SHOWHELP                      0x00000800
+#define PSD_ENABLEPAGESETUPHOOK           0x00002000
+#define PSD_ENABLEPAGESETUPTEMPLATE       0x00008000
+#define PSD_ENABLEPAGESETUPTEMPLATEHANDLE 0x00020000
+#define PSD_ENABLEPAGEPAINTHOOK           0x00040000
+#define PSD_DISABLEPAGEPAINTING           0x00080000
+#define PSD_NONETWORKBUTTON               0x00200000
+
+typedef struct tagPRINTPAGERANGE
+{
+    DWORD       nFromPage;
+    DWORD       nToPage;
+} PRINTPAGERANGE, *LPPRINTPAGERANGE;
+
+typedef struct tagPDEXA
+{
+    DWORD               lStructSize;
+    HWND                hwndOwner;
+    HGLOBAL             hDevMode;
+    HGLOBAL             hDevNames;
+    HDC                 hDC;
+    DWORD               Flags;
+    DWORD               Flags2;
+    DWORD               ExclusionFlags;
+    DWORD               nPageRanges;
+    DWORD               nMaxPageRanges;
+    LPPRINTPAGERANGE    lpPageRanges;
+    DWORD               nMinPage;
+    DWORD               nMaxPage;
+    DWORD               nCopies;
+    HINSTANCE           hInstance;
+    LPCSTR              lpPrintTemplateName;
+    void* /*LPUNKNOWN*/ lpCallback;
+    DWORD               nPropertyPages;
+    HPROPSHEETPAGE*     lphPropertyPages;
+    DWORD               nStartPage;
+    DWORD               dwResultAction;
+} PRINTDLGEXA, *LPPRINTDLGEXA;
+
+typedef struct tagPDEXW
+{
+    DWORD               lStructSize;
+    HWND                hwndOwner;
+    HGLOBAL             hDevMode;
+    HGLOBAL             hDevNames;
+    HDC                 hDC;
+    DWORD               Flags;
+    DWORD               Flags2;
+    DWORD               ExclusionFlags;
+    DWORD               nPageRanges;
+    DWORD               nMaxPageRanges;
+    LPPRINTPAGERANGE    lpPageRanges;
+    DWORD               nMinPage;
+    DWORD               nMaxPage;
+    DWORD               nCopies;
+    HINSTANCE           hInstance;
+    LPCWSTR             lpPrintTemplateName;
+    void* /*LPUNKNOWN*/ lpCallback;
+    DWORD               nPropertyPages;
+    HPROPSHEETPAGE*     lphPropertyPages;
+    DWORD               nStartPage;
+    DWORD               dwResultAction;
+} PRINTDLGEXW, *LPPRINTDLGEXW;
+
+DECL_WINELIB_TYPE_AW(PRINTDLGEX)
+DECL_WINELIB_TYPE_AW(LPPRINTDLGEX)
+
+BOOL  WINAPI ChooseColorA(LPCHOOSECOLORA lpChCol);
+BOOL  WINAPI ChooseColorW(LPCHOOSECOLORW lpChCol);
+#define ChooseColor WINELIB_NAME_AW(ChooseColor)
+DWORD   WINAPI CommDlgExtendedError(void);
+HWND  WINAPI FindTextA(LPFINDREPLACEA lpFind);
+HWND  WINAPI FindTextW(LPFINDREPLACEW lpFind);
+#define FindText WINELIB_NAME_AW(FindText)
+short   WINAPI GetFileTitleA(LPCSTR lpFile, LPSTR lpTitle, WORD cbBuf);
+short   WINAPI GetFileTitleW(LPCWSTR lpFile, LPWSTR lpTitle, WORD cbBuf);
+#define GetFileTitle WINELIB_NAME_AW(GetFileTitle)
+BOOL  WINAPI GetOpenFileNameA(LPOPENFILENAMEA ofn);
+BOOL  WINAPI GetOpenFileNameW(LPOPENFILENAMEW ofn);
+#define GetOpenFileName WINELIB_NAME_AW(GetOpenFileName)
+BOOL  WINAPI GetSaveFileNameA(LPOPENFILENAMEA ofn);
+BOOL  WINAPI GetSaveFileNameW(LPOPENFILENAMEW ofn);
+#define GetSaveFileName WINELIB_NAME_AW(GetSaveFileName)
+BOOL WINAPI PageSetupDlgA( LPPAGESETUPDLGA );
+BOOL WINAPI PageSetupDlgW( LPPAGESETUPDLGW );
+#define PageSetupDlg WINELIB_NAME_AW(PageSetupDlg)
+BOOL  WINAPI PrintDlgA( LPPRINTDLGA printdlg);
+BOOL  WINAPI PrintDlgW( LPPRINTDLGW printdlg);
+#define PrintDlg WINELIB_NAME_AW(PrintDlg)
+HRESULT WINAPI PrintDlgExA(LPPRINTDLGEXA);
+HRESULT WINAPI PrintDlgExW(LPPRINTDLGEXW);
+#define PrintDlgEx WINELIB_NAME_AW(PrintDlgEx)
+HWND  WINAPI ReplaceTextA( LPFINDREPLACEA lpFind);
+HWND  WINAPI ReplaceTextW( LPFINDREPLACEW lpFind);
+#define ReplaceText WINELIB_NAME_AW(ReplaceText)
+BOOL  WINAPI ChooseFontA(LPCHOOSEFONTA);
+BOOL  WINAPI ChooseFontW(LPCHOOSEFONTW);
+#define ChooseFont WINELIB_NAME_AW(ChooseFont)
+
+void COMDLG32_SetCommDlgExtendedError(DWORD err);
+
+
+#include <poppack.h>
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* __WINE_COMMDLG_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/compobj.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/compobj.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/compobj.h	(revision 16410)
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2000 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_COMPOBJ_H
+#define __WINE_COMPOBJ_H
+
+/* compobj.h is just a synonym for objbase.h */
+#include <objbase.h>
+
+#endif /* __WINE_COMPOBJ_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/config.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/config.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/config.h	(revision 16410)
@@ -0,0 +1,1154 @@
+/* include/config.h.  Generated from config.h.in by configure.  */
+/* include/config.h.in.  Generated from configure.ac by autoheader.  */
+
+#define __WINE_CONFIG_H
+
+/* Specifies the compiler flag that forces a short wchar_t */
+//#define CC_FLAG_SHORT_WCHAR "-fshort-wchar"
+
+/* Define to 1 if you have the <alias.h> header file. */
+/* #undef HAVE_ALIAS_H */
+
+/* Define if you have ALSA 1.x including devel headers */
+/* #undef HAVE_ALSA */
+
+/* Define to 1 if you have the <alsa/asoundlib.h> header file. */
+/* #undef HAVE_ALSA_ASOUNDLIB_H */
+
+/* Define to 1 if you have the <arpa/inet.h> header file. */
+#define HAVE_ARPA_INET_H 1
+
+/* Define to 1 if you have the <arpa/nameser.h> header file. */
+/* #undef HAVE_ARPA_NAMESER_H */
+
+/* Define to 1 if you have the `asctime_r' function. */
+#define HAVE_ASCTIME_R 1
+
+/* Define to 1 if you have the <asm/types.h> header file. */
+#define HAVE_ASM_TYPES_H 1
+
+/* Define to 1 if you have the <AudioUnit/AudioUnit.h> header file. */
+/* #undef HAVE_AUDIOUNIT_AUDIOUNIT_H */
+
+/* Define to 1 if you have the <audio/audiolib.h> header file. */
+/* #undef HAVE_AUDIO_AUDIOLIB_H */
+
+/* Define to 1 if you have the <audio/soundlib.h> header file. */
+/* #undef HAVE_AUDIO_SOUNDLIB_H */
+
+/* Define to 1 if you have the <capi20.h> header file. */
+/* #undef HAVE_CAPI20_H */
+
+/* Define to 1 if you have the <Carbon/Carbon.h> header file. */
+/* #undef HAVE_CARBON_CARBON_H */
+
+/* Define to 1 if you have the `chsize' function. */
+/* #undef HAVE_CHSIZE */
+
+/* Define to 1 if you have the `clone' function. */
+/* #undef HAVE_CLONE */
+
+/* Define to 1 if you have the <CoreAudio/CoreAudio.h> header file. */
+/* #undef HAVE_COREAUDIO_COREAUDIO_H */
+
+/* Define to 1 if you have the <cups/cups.h> header file. */
+/* #undef HAVE_CUPS_CUPS_H */
+
+/* Define to 1 if you have the <curses.h> header file. */
+/* #undef HAVE_CURSES_H */
+
+/* Define if you have the daylight variable */
+//#define HAVE_DAYLIGHT 1
+
+/* Define to 1 if you have the <dbus/dbus.h> header file. */
+/* #undef HAVE_DBUS_DBUS_H */
+
+/* Define to 1 if you have the <direct.h> header file. */
+/* #undef HAVE_DIRECT_H */
+
+/* Define to 1 if you have the <dirent.h> header file. */
+#define HAVE_DIRENT_H 1
+
+/* Define to 1 if you have the <DiskArbitration/DiskArbitration.h> header
+   file. */
+/* #undef HAVE_DISKARBITRATION_DISKARBITRATION_H */
+
+/* Define to 1 if you have the `dladdr' function. */
+/* #undef HAVE_DLADDR */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+//#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the `dlopen' function. */
+//#define HAVE_DLOPEN 1
+
+/* Define to 1 if you have the <elf.h> header file. */
+//#define HAVE_ELF_H 1
+
+/* Define to 1 if you have the `epoll_create' function. */
+/* #undef HAVE_EPOLL_CREATE */
+
+/* Define if you have EsounD sound server */
+/* #undef HAVE_ESD */
+
+/* Define to 1 if you have the `ffs' function. */
+#define HAVE_FFS 1
+
+/* Define to 1 if you have the `finite' function. */
+#define HAVE_FINITE 1
+
+/* Define to 1 if you have the <float.h> header file. */
+#define HAVE_FLOAT_H 1
+
+/* Define to 1 if you have the <fontconfig/fontconfig.h> header file. */
+/* #undef HAVE_FONTCONFIG_FONTCONFIG_H */
+
+/* Define to 1 if you have the `fork' function. */
+#define HAVE_FORK 1
+
+/* Define to 1 if you have the `fpclass' function. */
+/* #undef HAVE_FPCLASS */
+
+/* Define if FreeType 2 is installed */
+/* #undef HAVE_FREETYPE */
+
+/* Define to 1 if you have the <freetype/freetype.h> header file. */
+/* #undef HAVE_FREETYPE_FREETYPE_H */
+
+/* Define to 1 if you have the <freetype/ftglyph.h> header file. */
+/* #undef HAVE_FREETYPE_FTGLYPH_H */
+
+/* Define to 1 if you have the <freetype/ftmodapi.h> header file. */
+/* #undef HAVE_FREETYPE_FTMODAPI_H */
+
+/* Define to 1 if you have the <freetype/ftnames.h> header file. */
+/* #undef HAVE_FREETYPE_FTNAMES_H */
+
+/* Define to 1 if you have the <freetype/ftoutln.h> header file. */
+/* #undef HAVE_FREETYPE_FTOUTLN_H */
+
+/* Define to 1 if you have the <freetype/ftsnames.h> header file. */
+/* #undef HAVE_FREETYPE_FTSNAMES_H */
+
+/* Define if you have the <freetype/fttrigon.h> header file. */
+/* #undef HAVE_FREETYPE_FTTRIGON_H */
+
+/* Define to 1 if you have the <freetype/fttypes.h> header file. */
+/* #undef HAVE_FREETYPE_FTTYPES_H */
+
+/* Define to 1 if you have the <freetype/ftwinfnt.h> header file. */
+/* #undef HAVE_FREETYPE_FTWINFNT_H */
+
+/* Define to 1 if you have the <freetype/internal/sfnt.h> header file. */
+/* #undef HAVE_FREETYPE_INTERNAL_SFNT_H */
+
+/* Define to 1 if you have the <freetype/ttnameid.h> header file. */
+/* #undef HAVE_FREETYPE_TTNAMEID_H */
+
+/* Define to 1 if you have the <freetype/tttables.h> header file. */
+/* #undef HAVE_FREETYPE_TTTABLES_H */
+
+/* Define to 1 if the system has the type `fsblkcnt_t'. */
+#define HAVE_FSBLKCNT_T 1
+
+/* Define to 1 if the system has the type `fsfilcnt_t'. */
+#define HAVE_FSFILCNT_T 1
+
+/* Define to 1 if you have the `fstatfs' function. */
+#define HAVE_FSTATFS 1
+
+/* Define to 1 if you have the `fstatvfs' function. */
+#define HAVE_FSTATVFS 1
+
+/* Define to 1 if you have the <ft2build.h> header file. */
+/* #undef HAVE_FT2BUILD_H */
+
+/* Define to 1 if you have the `ftruncate' function. */
+#define HAVE_FTRUNCATE 1
+
+/* Define to 1 if you have the `FT_Load_Sfnt_Table' function. */
+/* #undef HAVE_FT_LOAD_SFNT_TABLE */
+
+/* Define to 1 if the system has the type `FT_TrueTypeEngineType'. */
+/* #undef HAVE_FT_TRUETYPEENGINETYPE */
+
+/* Define to 1 if you have the `futimes' function. */
+#define HAVE_FUTIMES 1
+
+/* Define to 1 if you have the `futimesat' function. */
+/* #undef HAVE_FUTIMESAT */
+
+/* Define to 1 if you have the `getaddrinfo' function. */
+/* #undef HAVE_GETADDRINFO */
+
+/* Define to 1 if you have the `getdirentries' function. */
+/* #undef HAVE_GETDIRENTRIES */
+
+/* Define to 1 if you have the `getnameinfo' function. */
+/* #undef HAVE_GETNAMEINFO */
+
+/* Define to 1 if you have the `getnetbyname' function. */
+/* #undef HAVE_GETNETBYNAME */
+
+/* Define to 1 if you have the <getopt.h> header file. */
+#define HAVE_GETOPT_H 1
+
+/* Define to 1 if you have the `getopt_long' function. */
+#define HAVE_GETOPT_LONG 1
+
+/* Define to 1 if you have the `getpagesize' function. */
+//#define HAVE_GETPAGESIZE 1
+
+/* Define to 1 if you have the `getprotobyname' function. */
+#define HAVE_GETPROTOBYNAME 1
+
+/* Define to 1 if you have the `getprotobynumber' function. */
+#define HAVE_GETPROTOBYNUMBER 1
+
+/* Define to 1 if you have the `getpwuid' function. */
+//#define HAVE_GETPWUID 1
+
+/* Define to 1 if you have the `getservbyport' function. */
+#define HAVE_GETSERVBYPORT 1
+
+/* Define to 1 if you have the `gettid' function. */
+/* #undef HAVE_GETTID */
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#define HAVE_GETTIMEOFDAY 1
+
+/* Define to 1 if you have the `getuid' function. */
+//#define HAVE_GETUID 1
+
+/* Define to 1 if you have the <GL/glext.h> header file. */
+/* #undef HAVE_GL_GLEXT_H */
+
+/* Define to 1 if you have the <GL/glu.h> header file. */
+/* #undef HAVE_GL_GLU_H */
+
+/* Define to 1 if you have the <GL/glx.h> header file. */
+/* #undef HAVE_GL_GLX_H */
+
+/* Define to 1 if you have the <GL/gl.h> header file. */
+/* #undef HAVE_GL_GL_H */
+
+/* Define if we have libgphoto2 development environment */
+/* #undef HAVE_GPHOTO2 */
+
+/* Define to 1 if you have the <hal/libhal.h> header file. */
+/* #undef HAVE_HAL_LIBHAL_H */
+
+/* Define to 1 if you have the <ieeefp.h> header file. */
+#define HAVE_IEEEFP_H 1
+
+/* Define to 1 if you have the `inet_network' function. */
+#define HAVE_INET_NETWORK 1
+
+/* Define to 1 if you have the `inet_pton' function. */
+#define HAVE_INET_PTON 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the <IOKit/IOKitLib.h> header file. */
+/* #undef HAVE_IOKIT_IOKITLIB_H */
+
+/* Define to 1 if you have the <io.h> header file. */
+#define HAVE_IO_H 1
+
+/* Define to 1 if you have the `isinf' function. */
+#define HAVE_ISINF 1
+
+/* Define to 1 if you have the `isnan' function. */
+#define HAVE_ISNAN 1
+
+/* Define to 1 if you have the <jack/jack.h> header file. */
+/* #undef HAVE_JACK_JACK_H */
+
+/* Define to 1 if you have the <jpeglib.h> header file. */
+/* #undef HAVE_JPEGLIB_H */
+
+/* Define to 1 if you have the `kqueue' function. */
+/* #undef HAVE_KQUEUE */
+
+/* Define to 1 if you have the <lber.h> header file. */
+/* #undef HAVE_LBER_H */
+
+/* Define if you have the LittleCMS development environment */
+/* #undef HAVE_LCMS */
+
+/* Define to 1 if you have the <lcms.h> header file. */
+/* #undef HAVE_LCMS_H */
+
+/* Define to 1 if you have the <lcms/lcms.h> header file. */
+/* #undef HAVE_LCMS_LCMS_H */
+
+/* Define if you have the OpenLDAP development environment */
+/* #undef HAVE_LDAP */
+
+/* Define to 1 if you have the `ldap_count_references' function. */
+/* #undef HAVE_LDAP_COUNT_REFERENCES */
+
+/* Define to 1 if you have the `ldap_first_reference' function. */
+/* #undef HAVE_LDAP_FIRST_REFERENCE */
+
+/* Define to 1 if you have the <ldap.h> header file. */
+/* #undef HAVE_LDAP_H */
+
+/* Define to 1 if you have the `ldap_next_reference' function. */
+/* #undef HAVE_LDAP_NEXT_REFERENCE */
+
+/* Define to 1 if you have the `ldap_parse_reference' function. */
+/* #undef HAVE_LDAP_PARSE_REFERENCE */
+
+/* Define to 1 if you have the `ldap_parse_sortresponse_control' function. */
+/* #undef HAVE_LDAP_PARSE_SORTRESPONSE_CONTROL */
+
+/* Define to 1 if you have the `ldap_parse_sort_control' function. */
+/* #undef HAVE_LDAP_PARSE_SORT_CONTROL */
+
+/* Define to 1 if you have the `ldap_parse_vlvresponse_control' function. */
+/* #undef HAVE_LDAP_PARSE_VLVRESPONSE_CONTROL */
+
+/* Define to 1 if you have the `ldap_parse_vlv_control' function. */
+/* #undef HAVE_LDAP_PARSE_VLV_CONTROL */
+
+/* Define if you have libaudioIO */
+/* #undef HAVE_LIBAUDIOIO */
+
+/* Define to 1 if you have the <libaudioio.h> header file. */
+/* #undef HAVE_LIBAUDIOIO_H */
+
+/* Define to 1 if you have the `i386' library (-li386). */
+/* #undef HAVE_LIBI386 */
+
+/* Define to 1 if you have the `ossaudio' library (-lossaudio). */
+/* #undef HAVE_LIBOSSAUDIO */
+
+/* Define if you have the libxml2 library */
+/* #undef HAVE_LIBXML2 */
+
+/* Define to 1 if you have the <libxml/parser.h> header file. */
+/* #undef HAVE_LIBXML_PARSER_H */
+
+/* Define if you have the X Shape extension */
+/* #undef HAVE_LIBXSHAPE */
+
+/* Define to 1 if you have the <libxslt/pattern.h> header file. */
+/* #undef HAVE_LIBXSLT_PATTERN_H */
+
+/* Define to 1 if you have the <libxslt/transform.h> header file. */
+/* #undef HAVE_LIBXSLT_TRANSFORM_H */
+
+/* Define if you have the X Shm extension */
+/* #undef HAVE_LIBXXSHM */
+
+/* Define to 1 if you have the <link.h> header file. */
+/* #undef HAVE_LINK_H */
+
+/* Define if <linux/joystick.h> defines the Linux 2.2 joystick API */
+/* #undef HAVE_LINUX_22_JOYSTICK_API */
+
+/* Define to 1 if you have the <linux/capi.h> header file. */
+/* #undef HAVE_LINUX_CAPI_H */
+
+/* Define to 1 if you have the <linux/cdrom.h> header file. */
+/* #undef HAVE_LINUX_CDROM_H */
+
+/* Define to 1 if you have the <linux/compiler.h> header file. */
+/* #undef HAVE_LINUX_COMPILER_H */
+
+/* Define if Linux-style gethostbyname_r and gethostbyaddr_r are available */
+/* #undef HAVE_LINUX_GETHOSTBYNAME_R_6 */
+
+/* Define to 1 if you have the <linux/hdreg.h> header file. */
+/* #undef HAVE_LINUX_HDREG_H */
+
+/* Define to 1 if you have the <linux/input.h> header file. */
+/* #undef HAVE_LINUX_INPUT_H */
+
+/* Define to 1 if you have the <linux/ioctl.h> header file. */
+/* #undef HAVE_LINUX_IOCTL_H */
+
+/* Define to 1 if you have the <linux/ipx.h> header file. */
+/* #undef HAVE_LINUX_IPX_H */
+
+/* Define to 1 if you have the <linux/joystick.h> header file. */
+/* #undef HAVE_LINUX_JOYSTICK_H */
+
+/* Define to 1 if you have the <linux/major.h> header file. */
+/* #undef HAVE_LINUX_MAJOR_H */
+
+/* Define to 1 if you have the <linux/param.h> header file. */
+/* #undef HAVE_LINUX_PARAM_H */
+
+/* Define to 1 if you have the <linux/serial.h> header file. */
+/* #undef HAVE_LINUX_SERIAL_H */
+
+/* Define to 1 if you have the <linux/ucdrom.h> header file. */
+/* #undef HAVE_LINUX_UCDROM_H */
+
+/* Define to 1 if you have the <linux/videodev.h> header file. */
+/* #undef HAVE_LINUX_VIDEODEV_H */
+
+/* Define to 1 if the system has the type `long long'. */
+#define HAVE_LONG_LONG 1
+
+/* Define to 1 if you have the `lstat' function. */
+#define HAVE_LSTAT 1
+
+/* Define to 1 if you have the <machine/cpu.h> header file. */
+/* #undef HAVE_MACHINE_CPU_H */
+
+/* Define to 1 if you have the <machine/limits.h> header file. */
+/* #undef HAVE_MACHINE_LIMITS_H */
+
+/* Define to 1 if you have the <machine/soundcard.h> header file. */
+/* #undef HAVE_MACHINE_SOUNDCARD_H */
+
+/* Define to 1 if you have the <mach/machine.h> header file. */
+/* #undef HAVE_MACH_MACHINE_H */
+
+/* Define to 1 if you have the <mach/mach.h> header file. */
+/* #undef HAVE_MACH_MACH_H */
+
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `mmap' function. */
+//#define HAVE_MMAP 1
+
+/* Define to 1 if you have the <mntent.h> header file. */
+#define HAVE_MNTENT_H 1
+
+/* Define to 1 if the system has the type `mode_t'. */
+#define HAVE_MODE_T 1
+
+/* Define to 1 if you have the `mousemask' function. */
+/* #undef HAVE_MOUSEMASK */
+
+/* Define if you have NAS including devel headers */
+/* #undef HAVE_NAS */
+
+/* Define to 1 if you have the <ncurses.h> header file. */
+/* #undef HAVE_NCURSES_H */
+
+/* Define to 1 if you have the <netdb.h> header file. */
+#define HAVE_NETDB_H 1
+
+/* Define to 1 if you have the <netinet/icmp_var.h> header file. */
+/* #undef HAVE_NETINET_ICMP_VAR_H */
+
+/* Define to 1 if you have the <netinet/if_ether.h> header file. */
+/* #undef HAVE_NETINET_IF_ETHER_H */
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+//#define HAVE_NETINET_IN_H 1
+
+/* Define to 1 if you have the <netinet/in_pcb.h> header file. */
+/* #undef HAVE_NETINET_IN_PCB_H */
+
+/* Define to 1 if you have the <netinet/in_systm.h> header file. */
+//#define HAVE_NETINET_IN_SYSTM_H 1
+
+/* Define to 1 if you have the <netinet/ip.h> header file. */
+//#define HAVE_NETINET_IP_H 1
+
+/* Define to 1 if you have the <netinet/ip_icmp.h> header file. */
+//#define HAVE_NETINET_IP_ICMP_H 1
+
+/* Define to 1 if you have the <netinet/ip_var.h> header file. */
+/* #undef HAVE_NETINET_IP_VAR_H */
+
+/* Define to 1 if you have the <netinet/tcp_fsm.h> header file. */
+/* #undef HAVE_NETINET_TCP_FSM_H */
+
+/* Define to 1 if you have the <netinet/tcp.h> header file. */
+//#define HAVE_NETINET_TCP_H 1
+
+/* Define to 1 if you have the <netinet/tcp_timer.h> header file. */
+/* #undef HAVE_NETINET_TCP_TIMER_H */
+
+/* Define to 1 if you have the <netinet/tcp_var.h> header file. */
+/* #undef HAVE_NETINET_TCP_VAR_H */
+
+/* Define to 1 if you have the <netinet/udp.h> header file. */
+//#define HAVE_NETINET_UDP_H 1
+
+/* Define to 1 if you have the <netinet/udp_var.h> header file. */
+/* #undef HAVE_NETINET_UDP_VAR_H */
+
+/* Define to 1 if you have the <netipx/ipx.h> header file. */
+/* #undef HAVE_NETIPX_IPX_H */
+
+/* Define to 1 if you have the <net/if_arp.h> header file. */
+/* #undef HAVE_NET_IF_ARP_H */
+
+/* Define to 1 if you have the <net/if_dl.h> header file. */
+/* #undef HAVE_NET_IF_DL_H */
+
+/* Define to 1 if you have the <net/if.h> header file. */
+//#define HAVE_NET_IF_H 1
+
+/* Define to 1 if you have the <net/if_types.h> header file. */
+/* #undef HAVE_NET_IF_TYPES_H */
+
+/* Define to 1 if you have the <net/route.h> header file. */
+/* #undef HAVE_NET_ROUTE_H */
+
+/* Define to 1 if `_msg_ptr' is member of `ns_msg'. */
+/* #undef HAVE_NS_MSG__MSG_PTR */
+
+/* Define to 1 if the system has the type `off_t'. */
+//#define HAVE_OFF_T 1
+
+/* Define if OpenGL is present on the system */
+/* #undef HAVE_OPENGL */
+
+/* Define to 1 if you have the <openssl/err.h> header file. */
+/* #undef HAVE_OPENSSL_ERR_H */
+
+/* Define to 1 if you have the <openssl/ssl.h> header file. */
+/* #undef HAVE_OPENSSL_SSL_H */
+
+/* Define to 1 if you have the `pclose' function. */
+#define HAVE_PCLOSE 1
+
+/* Define to 1 if the system has the type `pid_t'. */
+//#define HAVE_PID_T 1
+
+/* Define to 1 if you have the <png.h> header file. */
+/* #undef HAVE_PNG_H */
+
+/* Define to 1 if you have the `poll' function. */
+#define HAVE_POLL 1
+
+/* Define to 1 if you have the <poll.h> header file. */
+#define HAVE_POLL_H 1
+
+/* Define to 1 if you have the `popen' function. */
+#define HAVE_POPEN 1
+
+/* Define if we can use ppdev.h for parallel port access */
+/* #undef HAVE_PPDEV */
+
+/* Define to 1 if you have the `prctl' function. */
+/* #undef HAVE_PRCTL */
+
+/* Define to 1 if you have the `pread' function. */
+#define HAVE_PREAD 1
+
+/* Define to 1 if you have the <process.h> header file. */
+#define HAVE_PROCESS_H 1
+
+/* Define to 1 if you have the `pthread_attr_get_np' function. */
+/* #undef HAVE_PTHREAD_ATTR_GET_NP */
+
+/* Define to 1 if you have the `pthread_getattr_np' function. */
+/* #undef HAVE_PTHREAD_GETATTR_NP */
+
+/* Define to 1 if you have the `pthread_get_stackaddr_np' function. */
+/* #undef HAVE_PTHREAD_GET_STACKADDR_NP */
+
+/* Define to 1 if you have the `pthread_get_stacksize_np' function. */
+/* #undef HAVE_PTHREAD_GET_STACKSIZE_NP */
+
+/* Define to 1 if you have the <pthread.h> header file. */
+//#define HAVE_PTHREAD_H 1
+
+/* Define to 1 if you have the <pthread_np.h> header file. */
+/* #undef HAVE_PTHREAD_NP_H */
+
+/* Define to 1 if the system has the type `pthread_rwlockattr_t'. */
+//#define HAVE_PTHREAD_RWLOCKATTR_T 1
+
+/* Define to 1 if the system has the type `pthread_rwlock_t'. */
+//#define HAVE_PTHREAD_RWLOCK_T 1
+
+/* Define to 1 if you have the <pwd.h> header file. */
+//#define HAVE_PWD_H 1
+
+/* Define to 1 if you have the `pwrite' function. */
+#define HAVE_PWRITE 1
+
+/* Define to 1 if you have the `readdir' function. */
+#define HAVE_READDIR 1
+
+/* Define to 1 if you have the `readlink' function. */
+#define HAVE_READLINK 1
+
+/* Define to 1 if you have the <regex.h> header file. */
+#define HAVE_REGEX_H 1
+
+/* Define to 1 if the system has the type `request_sense'. */
+/* #undef HAVE_REQUEST_SENSE */
+
+/* Define if you have the resolver library and header */
+/* #undef HAVE_RESOLV */
+
+/* Define to 1 if you have the <resolv.h> header file. */
+/* #undef HAVE_RESOLV_H */
+
+/* Define to 1 if you have the `rfork' function. */
+/* #undef HAVE_RFORK */
+
+/* Define to 1 if you have the <sched.h> header file. */
+#define HAVE_SCHED_H 1
+
+/* Define to 1 if you have the `sched_yield' function. */
+#define HAVE_SCHED_YIELD 1
+
+/* Define to 1 if `cmd' is member of `scsireq_t'. */
+/* #undef HAVE_SCSIREQ_T_CMD */
+
+/* Define to 1 if you have the <scsi/scsi.h> header file. */
+/* #undef HAVE_SCSI_SCSI_H */
+
+/* Define to 1 if you have the <scsi/scsi_ioctl.h> header file. */
+/* #undef HAVE_SCSI_SCSI_IOCTL_H */
+
+/* Define to 1 if you have the <scsi/sg.h> header file. */
+/* #undef HAVE_SCSI_SG_H */
+
+/* Define to 1 if you have the `select' function. */
+#define HAVE_SELECT 1
+
+/* Define to 1 if you have the `sendmsg' function. */
+#define HAVE_SENDMSG 1
+
+/* Define to 1 if you have the `setproctitle' function. */
+/* #undef HAVE_SETPROCTITLE */
+
+/* Define to 1 if you have the `setrlimit' function. */
+//#define HAVE_SETRLIMIT 1
+
+/* Define to 1 if you have the `settimeofday' function. */
+#define HAVE_SETTIMEOFDAY 1
+
+/* Define to 1 if `interface_id' is member of `sg_io_hdr_t'. */
+/* #undef HAVE_SG_IO_HDR_T_INTERFACE_ID */
+
+/* Define if sigaddset is supported */
+#define HAVE_SIGADDSET 1
+
+/* Define to 1 if you have the `sigaltstack' function. */
+/* #undef HAVE_SIGALTSTACK */
+
+/* Define to 1 if `si_fd' is member of `siginfo_t'. */
+/* #undef HAVE_SIGINFO_T_SI_FD */
+
+/* Define to 1 if you have the `sigprocmask' function. */
+#define HAVE_SIGPROCMASK 1
+
+/* Define to 1 if the system has the type `sigset_t'. */
+//#define HAVE_SIGSET_T 1
+
+/* Define to 1 if the system has the type `size_t'. */
+#define HAVE_SIZE_T 1
+
+/* Define to 1 if you have the `snprintf' function. */
+//#define HAVE_SNPRINTF 1
+
+/* Define to 1 if you have the <soundcard.h> header file. */
+/* #undef HAVE_SOUNDCARD_H */
+
+/* Define to 1 if you have the `spawnvp' function. */
+#define HAVE_SPAWNVP 1
+
+/* Define to 1 if the system has the type `ssize_t'. */
+#define HAVE_SSIZE_T 1
+
+/* Define to 1 if you have the `statfs' function. */
+#define HAVE_STATFS 1
+
+/* Define to 1 if you have the `statvfs' function. */
+#define HAVE_STATVFS 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+//#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `strcasecmp' function. */
+#define HAVE_STRCASECMP 1
+
+/* Define to 1 if you have the `strdup' function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the `strerror' function. */
+#define HAVE_STRERROR 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strncasecmp' function. */
+#define HAVE_STRNCASECMP 1
+
+/* Define to 1 if you have the `strtold' function. */
+/* #undef HAVE_STRTOLD */
+
+/* Define to 1 if you have the `strtoll' function. */
+#define HAVE_STRTOLL 1
+
+/* Define to 1 if you have the `strtoull' function. */
+#define HAVE_STRTOULL 1
+
+/* Define to 1 if `direction' is member of `struct ff_effect'. */
+/* #undef HAVE_STRUCT_FF_EFFECT_DIRECTION */
+
+/* Define to 1 if `msg_accrights' is member of `struct msghdr'. */
+/* #undef HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS */
+
+/* Define to 1 if `mt_blkno' is member of `struct mtget'. */
+#define HAVE_STRUCT_MTGET_MT_BLKNO 1
+
+/* Define to 1 if `mt_blksiz' is member of `struct mtget'. */
+/* #undef HAVE_STRUCT_MTGET_MT_BLKSIZ */
+
+/* Define to 1 if `mt_gstat' is member of `struct mtget'. */
+#define HAVE_STRUCT_MTGET_MT_GSTAT 1
+
+/* Define to 1 if `name' is member of `struct option'. */
+#define HAVE_STRUCT_OPTION_NAME 1
+
+/* Define to 1 if `sin6_scope_id' is member of `struct sockaddr_in6'. */
+/* #undef HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID */
+
+/* Define to 1 if `sa_len' is member of `struct sockaddr'. */
+/* #undef HAVE_STRUCT_SOCKADDR_SA_LEN */
+
+/* Define to 1 if `sun_len' is member of `struct sockaddr_un'. */
+/* #undef HAVE_STRUCT_SOCKADDR_UN_SUN_LEN */
+
+/* Define to 1 if `f_bavail' is member of `struct statfs'. */
+#define HAVE_STRUCT_STATFS_F_BAVAIL 1
+
+/* Define to 1 if `f_bfree' is member of `struct statfs'. */
+#define HAVE_STRUCT_STATFS_F_BFREE 1
+
+/* Define to 1 if `f_favail' is member of `struct statfs'. */
+/* #undef HAVE_STRUCT_STATFS_F_FAVAIL */
+
+/* Define to 1 if `f_ffree' is member of `struct statfs'. */
+#define HAVE_STRUCT_STATFS_F_FFREE 1
+
+/* Define to 1 if `f_frsize' is member of `struct statfs'. */
+/* #undef HAVE_STRUCT_STATFS_F_FRSIZE */
+
+/* Define to 1 if `f_namelen' is member of `struct statfs'. */
+#define HAVE_STRUCT_STATFS_F_NAMELEN 1
+
+/* Define to 1 if `f_blocks' is member of `struct statvfs'. */
+#define HAVE_STRUCT_STATVFS_F_BLOCKS 1
+
+/* Define to 1 if `st_atim' is member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_ATIM 1
+
+/* Define to 1 if `st_blocks' is member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_BLOCKS 1
+
+/* Define to 1 if `st_ctim' is member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_CTIM 1
+
+/* Define to 1 if `st_mtim' is member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_MTIM 1
+
+/* Define to 1 if you have the <syscall.h> header file. */
+/* #undef HAVE_SYSCALL_H */
+
+/* Define to 1 if you have the <sys/asoundlib.h> header file. */
+/* #undef HAVE_SYS_ASOUNDLIB_H */
+
+/* Define to 1 if you have the <sys/cdio.h> header file. */
+/* #undef HAVE_SYS_CDIO_H */
+
+/* Define to 1 if you have the <sys/elf32.h> header file. */
+#define HAVE_SYS_ELF32_H 1
+
+/* Define to 1 if you have the <sys/epoll.h> header file. */
+/* #undef HAVE_SYS_EPOLL_H */
+
+/* Define to 1 if you have the <sys/errno.h> header file. */
+#define HAVE_SYS_ERRNO_H 1
+
+/* Define to 1 if you have the <sys/event.h> header file. */
+/* #undef HAVE_SYS_EVENT_H */
+
+/* Define to 1 if you have the <sys/exec_elf.h> header file. */
+/* #undef HAVE_SYS_EXEC_ELF_H */
+
+/* Define to 1 if you have the <sys/filio.h> header file. */
+/* #undef HAVE_SYS_FILIO_H */
+
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
+#define HAVE_SYS_IOCTL_H 1
+
+/* Define to 1 if you have the <sys/ipc.h> header file. */
+#define HAVE_SYS_IPC_H 1
+
+/* Define to 1 if you have the <sys/limits.h> header file. */
+/* #undef HAVE_SYS_LIMITS_H */
+
+/* Define to 1 if you have the <sys/link.h> header file. */
+/* #undef HAVE_SYS_LINK_H */
+
+/* Define to 1 if you have the <sys/lwp.h> header file. */
+/* #undef HAVE_SYS_LWP_H */
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+//#define HAVE_SYS_MMAN_H 1
+
+/* Define to 1 if you have the <sys/modem.h> header file. */
+/* #undef HAVE_SYS_MODEM_H */
+
+/* Define to 1 if you have the <sys/mount.h> header file. */
+#define HAVE_SYS_MOUNT_H 1
+
+/* Define to 1 if you have the <sys/msg.h> header file. */
+#define HAVE_SYS_MSG_H 1
+
+/* Define to 1 if you have the <sys/mtio.h> header file. */
+#define HAVE_SYS_MTIO_H 1
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the <sys/poll.h> header file. */
+#define HAVE_SYS_POLL_H 1
+
+/* Define to 1 if you have the <sys/prctl.h> header file. */
+/* #undef HAVE_SYS_PRCTL_H */
+
+/* Define to 1 if you have the <sys/ptrace.h> header file. */
+/* #undef HAVE_SYS_PTRACE_H */
+
+/* Define to 1 if you have the <sys/reg.h> header file. */
+/* #undef HAVE_SYS_REG_H */
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+//#define HAVE_SYS_RESOURCE_H 1
+
+/* Define to 1 if you have the <sys/scsiio.h> header file. */
+/* #undef HAVE_SYS_SCSIIO_H */
+
+/* Define to 1 if you have the <sys/shm.h> header file. */
+//#define HAVE_SYS_SHM_H 1
+
+/* Define to 1 if you have the <sys/signal.h> header file. */
+//#define HAVE_SYS_SIGNAL_H 1
+
+/* Define to 1 if you have the <sys/socketvar.h> header file. */
+/* #undef HAVE_SYS_SOCKETVAR_H */
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#define HAVE_SYS_SOCKET_H 1
+
+/* Define to 1 if you have the <sys/sockio.h> header file. */
+/* #undef HAVE_SYS_SOCKIO_H */
+
+/* Define to 1 if you have the <sys/soundcard.h> header file. */
+#define HAVE_SYS_SOUNDCARD_H 1
+
+/* Define to 1 if you have the <sys/statfs.h> header file. */
+#define HAVE_SYS_STATFS_H 1
+
+/* Define to 1 if you have the <sys/statvfs.h> header file. */
+#define HAVE_SYS_STATVFS_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/strtio.h> header file. */
+/* #undef HAVE_SYS_STRTIO_H */
+
+/* Define to 1 if you have the <sys/syscall.h> header file. */
+/* #undef HAVE_SYS_SYSCALL_H */
+
+/* Define to 1 if you have the <sys/sysctl.h> header file. */
+/* #undef HAVE_SYS_SYSCTL_H */
+
+/* Define to 1 if you have the <sys/thr.h> header file. */
+/* #undef HAVE_SYS_THR_H */
+
+/* Define to 1 if you have the <sys/times.h> header file. */
+#define HAVE_SYS_TIMES_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#define HAVE_SYS_UIO_H 1
+
+/* Define to 1 if you have the <sys/un.h> header file. */
+#define HAVE_SYS_UN_H 1
+
+/* Define to 1 if you have the <sys/user.h> header file. */
+/* #undef HAVE_SYS_USER_H */
+
+/* Define to 1 if you have the <sys/vfs.h> header file. */
+#define HAVE_SYS_VFS_H 1
+
+/* Define to 1 if you have the <sys/vm86.h> header file. */
+/* #undef HAVE_SYS_VM86_H */
+
+/* Define to 1 if you have the <sys/wait.h> header file. */
+#define HAVE_SYS_WAIT_H 1
+
+/* Define to 1 if you have the `tcgetattr' function. */
+#define HAVE_TCGETATTR 1
+
+/* Define to 1 if you have the <termios.h> header file. */
+#define HAVE_TERMIOS_H 1
+
+/* Define to 1 if you have the `thr_kill2' function. */
+/* #undef HAVE_THR_KILL2 */
+
+/* Define to 1 if you have the `timegm' function. */
+#define HAVE_TIMEGM 1
+
+/* Define if you have the timezone variable */
+#define HAVE_TIMEZONE 1
+
+/* Define to 1 if you have the <ucontext.h> header file. */
+/* #undef HAVE_UCONTEXT_H */
+
+/* Define to 1 if you have the <unistd.h> header file. */
+//#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the `usleep' function. */
+#define HAVE_USLEEP 1
+
+/* Define to 1 if you have the <utime.h> header file. */
+#define HAVE_UTIME_H 1
+
+/* Define to 1 if you have the <valgrind/memcheck.h> header file. */
+/* #undef HAVE_VALGRIND_MEMCHECK_H */
+
+/* Define to 1 if you have the <valgrind/valgrind.h> header file. */
+/* #undef HAVE_VALGRIND_VALGRIND_H */
+
+/* Define if we have va_copy */
+#define HAVE_VA_COPY 1
+
+/* Define to 1 if you have the `vsnprintf' function. */
+//#define HAVE_VSNPRINTF 1
+
+/* Define to 1 if you have the `wait4' function. */
+#define HAVE_WAIT4 1
+
+/* Define to 1 if you have the `waitpid' function. */
+#define HAVE_WAITPID 1
+
+/* Define to 1 if you have the <X11/extensions/shape.h> header file. */
+/* #undef HAVE_X11_EXTENSIONS_SHAPE_H */
+
+/* Define to 1 if you have the <X11/extensions/Xcomposite.h> header file. */
+/* #undef HAVE_X11_EXTENSIONS_XCOMPOSITE_H */
+
+/* Define to 1 if you have the <X11/extensions/xf86vmode.h> header file. */
+/* #undef HAVE_X11_EXTENSIONS_XF86VMODE_H */
+
+/* Define to 1 if you have the <X11/extensions/Xinerama.h> header file. */
+/* #undef HAVE_X11_EXTENSIONS_XINERAMA_H */
+
+/* Define to 1 if you have the <X11/extensions/XInput.h> header file. */
+/* #undef HAVE_X11_EXTENSIONS_XINPUT_H */
+
+/* Define to 1 if you have the <X11/extensions/Xrandr.h> header file. */
+/* #undef HAVE_X11_EXTENSIONS_XRANDR_H */
+
+/* Define to 1 if you have the <X11/extensions/Xrender.h> header file. */
+/* #undef HAVE_X11_EXTENSIONS_XRENDER_H */
+
+/* Define to 1 if you have the <X11/extensions/XShm.h> header file. */
+/* #undef HAVE_X11_EXTENSIONS_XSHM_H */
+
+/* Define to 1 if you have the <X11/Xcursor/Xcursor.h> header file. */
+/* #undef HAVE_X11_XCURSOR_XCURSOR_H */
+
+/* Define to 1 if you have the <X11/XKBlib.h> header file. */
+/* #undef HAVE_X11_XKBLIB_H */
+
+/* Define to 1 if you have the <X11/Xlib.h> header file. */
+/* #undef HAVE_X11_XLIB_H */
+
+/* Define to 1 if you have the <X11/Xutil.h> header file. */
+/* #undef HAVE_X11_XUTIL_H */
+
+/* Define to 1 if `callback' is member of `XICCallback'. */
+/* #undef HAVE_XICCALLBACK_CALLBACK */
+
+/* Define if you have the XKB extension */
+/* #undef HAVE_XKB */
+
+/* Define if libxml2 has the xmlNewDocPI function */
+/* #undef HAVE_XMLNEWDOCPI */
+
+/* Define if libxml2 has the xmlReadMemory function */
+/* #undef HAVE_XMLREADMEMORY */
+
+/* Define if Xrender has the XRenderSetPictureTransform function */
+/* #undef HAVE_XRENDERSETPICTURETRANSFORM */
+
+/* Define to 1 if you have the `_pclose' function. */
+#define HAVE__PCLOSE 1
+
+/* Define to 1 if you have the `_popen' function. */
+#define HAVE__POPEN 1
+
+/* Define to 1 if you have the `_snprintf' function. */
+#define HAVE__SNPRINTF 1
+
+/* Define to 1 if you have the `_spawnvp' function. */
+#define HAVE__SPAWNVP 1
+
+/* Define to 1 if you have the `_strdup' function. */
+#define HAVE__STRDUP 1
+
+/* Define to 1 if you have the `_stricmp' function. */
+/* #undef HAVE__STRICMP */
+
+/* Define to 1 if you have the `_strnicmp' function. */
+/* #undef HAVE__STRNICMP */
+
+/* Define to 1 if you have the `_strtoi64' function. */
+/* #undef HAVE__STRTOI64 */
+
+/* Define to 1 if you have the `_strtoui64' function. */
+/* #undef HAVE__STRTOUI64 */
+
+/* Define to 1 if you have the `_vsnprintf' function. */
+#define HAVE__VSNPRINTF 1
+
+/* Define if we have __va_copy */
+#define HAVE___VA_COPY 1
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "Wine"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "Wine 1.1.10"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "wine"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "1.1.10"
+
+/* Define to the soname of the libcapi20 library. */
+/* #undef SONAME_LIBCAPI20 */
+
+/* Define to the soname of the libcrypto library. */
+/* #undef SONAME_LIBCRYPTO */
+
+/* Define to the soname of the libcups library. */
+/* #undef SONAME_LIBCUPS */
+
+/* Define to the soname of the libcurses library. */
+/* #undef SONAME_LIBCURSES */
+
+/* Define to the soname of the libfontconfig library. */
+/* #undef SONAME_LIBFONTCONFIG */
+
+/* Define to the soname of the libfreetype library. */
+/* #undef SONAME_LIBFREETYPE */
+
+/* Define to the soname of the libGL library. */
+/* #undef SONAME_LIBGL */
+
+/* Define to the soname of the libGLU library. */
+/* #undef SONAME_LIBGLU */
+
+/* Define to the soname of the libgnutls library. */
+/* #undef SONAME_LIBGNUTLS */
+
+/* Define to the soname of the libhal library. */
+/* #undef SONAME_LIBHAL */
+
+/* Define to the soname of the libjack library. */
+/* #undef SONAME_LIBJACK */
+
+/* Define to the soname of the libjpeg library. */
+/* #undef SONAME_LIBJPEG */
+
+/* Define to the soname of the libncurses library. */
+/* #undef SONAME_LIBNCURSES */
+
+/* Define to the soname of the libodbc library. */
+#define SONAME_LIBODBC "libodbc.dll"
+
+/* Define to the soname of the libpng library. */
+/* #undef SONAME_LIBPNG */
+
+/* Define to the soname of the libsane library. */
+/* #undef SONAME_LIBSANE */
+
+/* Define to the soname of the libssl library. */
+/* #undef SONAME_LIBSSL */
+
+/* Define to the soname of the libX11 library. */
+/* #undef SONAME_LIBX11 */
+
+/* Define to the soname of the libXcomposite library. */
+/* #undef SONAME_LIBXCOMPOSITE */
+
+/* Define to the soname of the libXcursor library. */
+/* #undef SONAME_LIBXCURSOR */
+
+/* Define to the soname of the libXext library. */
+/* #undef SONAME_LIBXEXT */
+
+/* Define to the soname of the libXi library. */
+/* #undef SONAME_LIBXI */
+
+/* Define to the soname of the libXinerama library. */
+/* #undef SONAME_LIBXINERAMA */
+
+/* Define to the soname of the libXrandr library. */
+/* #undef SONAME_LIBXRANDR */
+
+/* Define to the soname of the libXrender library. */
+/* #undef SONAME_LIBXRENDER */
+
+/* Define to the soname of the libxslt library. */
+/* #undef SONAME_LIBXSLT */
+
+/* Define to the soname of the libXxf86vm library. */
+/* #undef SONAME_LIBXXF86VM */
+
+/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
+/* #undef STAT_MACROS_BROKEN */
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if the X Window System is missing or not being used. */
+#define X_DISPLAY_MISSING 1
+
+/* Define to a macro to generate an assembly function directive */
+#define __ASM_FUNC(name) ".def " __ASM_NAME(name) "; .scl 2; .type 32; .endef"
+
+/* Define to a macro to generate an assembly name from a C symbol */
+#define __ASM_NAME(name) "_" name
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+   calls it, or to nothing if 'inline' is not supported under any name.  */
+#ifndef __cplusplus
+ #undef inline 
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/control.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/control.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/control.idl	(revision 16410)
@@ -0,0 +1,246 @@
+/*
+ * Copyright (C) 2002 Lionel Ulmer
+ * Copyright (C) 2004 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "oaidl.idl";
+
+interface IMediaControl;
+interface IBasicAudio;
+interface IBasicVideo;
+interface IVideoWindow;
+interface IMediaEvent;
+interface IMediaEventEx;
+interface IMediaPosition;
+
+typedef long OAFilterState;
+typedef LONG_PTR OAHWND;
+typedef LONG_PTR OAEVENT;
+
+cpp_quote("#ifndef REFTIME_DEFINED")
+cpp_quote("#define REFTIME_DEFINED")
+typedef DOUBLE REFTIME;
+cpp_quote("#endif")
+
+/*****************************************************************************
+ * IMediaControl interface
+ */
+[
+    object,
+    uuid(56a868b1-0ad4-11ce-b03a-0020af0ba770),
+    pointer_default(unique)
+]
+interface IMediaControl : IDispatch
+{
+    HRESULT Run();
+    HRESULT Pause();
+    HRESULT Stop();
+    HRESULT GetState( [in] LONG msTimeout, [out] OAFilterState *pfs );
+    HRESULT RenderFile( [in] BSTR strFilename );
+    HRESULT AddSourceFilter( [in] BSTR strFilename, [out] IDispatch **ppUnk );
+    [propget] HRESULT FilterCollection( [out] IDispatch **ppUnk );
+    [propget] HRESULT RegFilterCollection( [out] IDispatch **ppUnk );
+    HRESULT StopWhenReady();
+}
+
+
+/*****************************************************************************
+ * IBasicAudio interface
+ */
+[
+    object,
+    uuid(56a868b3-0ad4-11ce-b03a-0020af0ba770),
+    pointer_default(unique)
+]
+interface IBasicAudio : IDispatch
+{
+    [propput] HRESULT Volume( [in] long lVolume );
+    [propget] HRESULT Volume( [out] long *plVolume );
+    [propput] HRESULT Balance( [in] long lBalance );
+    [propget] HRESULT Balance( [out] long *plBalance );
+}
+
+
+/*****************************************************************************
+ * IVideoWindow interface
+ */
+[
+    object,
+    uuid(56a868b4-0ad4-11ce-b03a-0020af0ba770),
+    pointer_default(unique)
+]
+interface IVideoWindow : IDispatch
+{
+    [propput] HRESULT Caption( [in] BSTR strCaption );
+    [propget] HRESULT Caption( [out] BSTR *strCaption );
+    [propput] HRESULT WindowStyle( [in] long WindowStyle );
+    [propget] HRESULT WindowStyle( [out] long *WindowStyle );
+    [propput] HRESULT WindowStyleEx( [in] long WindowStyleEx );
+    [propget] HRESULT WindowStyleEx( [out] long *WindowStyleEx );
+    [propput] HRESULT AutoShow( [in] long AutoShow );
+    [propget] HRESULT AutoShow( [out] long *AutoShow );
+    [propput] HRESULT WindowState( [in] long WindowState );
+    [propget] HRESULT WindowState( [out] long *WindowState );
+    [propput] HRESULT BackgroundPalette( [in] long BackgroundPalette );
+    [propget] HRESULT BackgroundPalette( [out] long *pBackgroundPalette );
+    [propput] HRESULT Visible( [in] long Visible );
+    [propget] HRESULT Visible( [out] long *pVisible );
+    [propput] HRESULT Left( [in] long Left );
+    [propget] HRESULT Left( [out] long *pLeft );
+    [propput] HRESULT Width( [in] long Width );
+    [propget] HRESULT Width( [out] long *pWidth );
+    [propput] HRESULT Top( [in] long Top );
+    [propget] HRESULT Top( [out] long *pTop );
+    [propput] HRESULT Height( [in] long Height );
+    [propget] HRESULT Height( [out] long *pHeight );
+    [propput] HRESULT Owner( [in] OAHWND Owner );
+    [propget] HRESULT Owner( [out] OAHWND *Owner );
+    [propput] HRESULT MessageDrain( [in] OAHWND Drain );
+    [propget] HRESULT MessageDrain( [out] OAHWND *Drain );
+    [propget] HRESULT BorderColor( [out] long *Color );
+    [propput] HRESULT BorderColor( [in] long Color );
+    [propget] HRESULT FullScreenMode( [out] long *FullScreenMode );
+    [propput] HRESULT FullScreenMode( [in] long FullScreenMode );
+    HRESULT SetWindowForeground( [in] long Focus );
+    HRESULT NotifyOwnerMessage( [in] OAHWND hwnd, [in] long uMsg, [in] LONG_PTR wParam, [in] LONG_PTR lParam );
+    HRESULT SetWindowPosition( [in] long Left, [in] long Top, [in] long Width, [in] long Height );
+    HRESULT GetWindowPosition( [out] long *pLeft, [out] long *pTop, [out] long *pWidth, [out] long *pHeight );
+    HRESULT GetMinIdealImageSize( [out] long *pWidth, [out] long *pHeight );
+    HRESULT GetMaxIdealImageSize( [out] long *pWidth, [out] long *pHeight );
+    HRESULT GetRestorePosition( [out] long *pLeft, [out] long *pTop, [out] long *pWidth, [out] long *pHeight );
+    HRESULT HideCursor( [in] long HideCursor );
+    HRESULT IsCursorHidden( [out] long *CursorHidden );
+}
+
+
+/*****************************************************************************
+ * IBasicVideo interface
+ */
+[
+    object,
+    uuid(56a868b5-0ad4-11ce-b03a-0020af0ba770),
+    pointer_default(unique)
+]
+interface IBasicVideo : IDispatch
+{
+    [propget] HRESULT AvgTimePerFrame( [out] REFTIME *pAvgTimePerFrame );
+    [propget] HRESULT BitRate( [out] long *pBitRate );
+    [propget] HRESULT BitErrorRate( [out] long *pBitErrorRate );
+    [propget] HRESULT VideoWidth( [out] long *pVideoWidth );
+    [propget] HRESULT VideoHeight( [out] long *pVideoHeight );
+    [propput] HRESULT SourceLeft( [in] long SourceLeft );
+    [propget] HRESULT SourceLeft( [out] long *pSourceLeft );
+    [propput] HRESULT SourceWidth( [in] long SourceWidth );
+    [propget] HRESULT SourceWidth( [out] long *pSourceWidth );
+    [propput] HRESULT SourceTop( [in] long SourceTop );
+    [propget] HRESULT SourceTop( [out] long *pSourceTop );
+    [propput] HRESULT SourceHeight( [in] long SourceHeight );
+    [propget] HRESULT SourceHeight( [out] long *pSourceHeight );
+    [propput] HRESULT DestinationLeft( [in] long DestinationLeft );
+    [propget] HRESULT DestinationLeft( [out] long *pDestinationLeft );
+    [propput] HRESULT DestinationWidth( [in] long DestinationWidth );
+    [propget] HRESULT DestinationWidth( [out] long *pDestinationWidth );
+    [propput] HRESULT DestinationTop( [in] long DestinationTop );
+    [propget] HRESULT DestinationTop( [out] long *pDestinationTop );
+    [propput] HRESULT DestinationHeight( [in] long DestinationHeight );
+    [propget] HRESULT DestinationHeight( [out] long *pDestinationHeight );
+    HRESULT SetSourcePosition( [in] long Left, [in] long Top, [in] long Width, [in] long Height );
+    HRESULT GetSourcePosition( [out] long *pLeft, [out] long *pTop, [out] long *pWidth, [out] long *pHeight );
+    HRESULT SetDefaultSourcePosition();
+    HRESULT SetDestinationPosition( [in] long Left, [in] long Top, [in] long Width, [in] long Height );
+    HRESULT GetDestinationPosition( [out] long *pLeft, [out] long *pTop, [out] long *pWidth, [out] long *pHeight );
+    HRESULT SetDefaultDestinationPosition();
+    HRESULT GetVideoSize( [out] long *pWidth, [out] long *pHeight );
+    HRESULT GetVideoPaletteEntries( [in] long StartIndex,
+                                    [in] long Entries,
+                                    [out] long *pRetrieved,
+                                    [out, size_is(Entries), length_is(*pRetrieved)] long *pPalette );
+    HRESULT GetCurrentImage( [in, out] long *pBufferSize,
+                             [out, size_is(*pBufferSize), length_is(*pBufferSize)] long *pDIBImage );
+    HRESULT IsUsingDefaultSource();
+    HRESULT IsUsingDefaultDestination();
+}
+
+[
+    uuid(329bb360-f6ea-11d1-9038-00a0c9697298),
+    helpstring("IBasicVideo2"),
+    odl
+]
+
+interface IBasicVideo2 : IBasicVideo
+{
+    HRESULT GetPreferredAspectRatio([out] LONG *plAspectX, [out] LONG *plAspectY);
+}
+
+
+/*****************************************************************************
+ * IMediaEvent interface
+ */
+[
+    object,
+    uuid(56a868b6-0ad4-11ce-b03a-0020af0ba770),
+    pointer_default(unique)
+]
+interface IMediaEvent : IDispatch
+{
+    HRESULT GetEventHandle( [out] OAEVENT *hEvent );
+    HRESULT GetEvent( [out] long *lEventCode, [out] LONG_PTR *lParam1, [out] LONG_PTR *lParam2, [in] long msTimeout );
+    HRESULT WaitForCompletion( [in] long msTimeout, [out] long *pEvCode );
+    HRESULT CancelDefaultHandling( [in] long lEvCode );
+    HRESULT RestoreDefaultHandling( [in] long lEvCode );
+    HRESULT FreeEventParams( [in] long lEvCode, [in] LONG_PTR lParam1, [in] LONG_PTR lParam2 );
+}
+
+
+/*****************************************************************************
+ * IMediaEventEx interface
+ */
+[
+    object,
+    uuid(56a868c0-0ad4-11ce-b03a-0020af0ba770),
+    pointer_default(unique)
+]
+interface IMediaEventEx : IMediaEvent
+{
+    HRESULT SetNotifyWindow( [in] OAHWND hwnd, [in] long lMsg, [in] LONG_PTR lInstanceData );
+    HRESULT SetNotifyFlags( [in] long lNoNotifyFlags );
+    HRESULT GetNotifyFlags( [out] long *lplNoNotifyFlags );
+}
+
+
+/*****************************************************************************
+ * IMediaPosition interface
+ */
+[
+    object,
+    uuid(56a868b2-0ad4-11ce-b03a-0020af0ba770),
+    pointer_default(unique)
+]
+interface IMediaPosition : IDispatch
+{
+    HRESULT get_Duration( [out] REFTIME *plength );
+    HRESULT put_CurrentPosition( [in] REFTIME llTime );
+    HRESULT get_CurrentPosition( [out] REFTIME *pllTime );
+    HRESULT get_StopTime( [out] REFTIME *pllTime );
+    HRESULT put_StopTime( [in] REFTIME llTime );
+    HRESULT get_PrerollTime( [out] REFTIME *pllTime );
+    HRESULT put_PrerollTime( [in] REFTIME llTime );
+    HRESULT put_Rate( [in] double dRate );
+    HRESULT get_Rate( [out] double *pdRate );
+    HRESULT CanSeekForward( [out] LONG *pCanSeekForward );
+    HRESULT CanSeekBackward( [out] LONG *pCanSeekBackward );
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/cor.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/cor.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/cor.h	(revision 16410)
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2007 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_COR_H
+#define __WINE_COR_H
+
+#include "ole2.h"
+/* FIXME: #include "specstrings.h" */
+/* FIXME: #include "corerror.h" */
+/* FIXME: #include "corhdr.h" */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+BOOL        WINAPI _CorDllMain(HINSTANCE,DWORD,LPVOID);
+__int32     WINAPI _CorExeMain(void);
+__int32     WINAPI _CorExeMain2(PBYTE,DWORD,LPWSTR,LPWSTR,LPWSTR);
+VOID        WINAPI _CorImageUnloading(PVOID);
+HRESULT     WINAPI _CorValidateImage(PVOID*,LPCWSTR);
+HRESULT     WINAPI CoInitializeCor(DWORD);
+void        WINAPI CoUninitializeCor(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* __WINE_COR_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/corerror.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/corerror.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/corerror.h	(revision 16410)
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2008 James Hawkins
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_CORERROR_H
+#define __WINE_CORERROR_H
+
+#include <winerror.h>
+
+#ifndef FACILITY_URT
+#define FACILITY_URT 0x13
+#endif
+
+#ifndef EMAKEHR
+#define SMAKEHR(val) MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_URT, val)
+#define EMAKEHR(val) MAKE_HRESULT(SEVERITY_ERROR, FACILITY_URT, val)
+#endif
+
+#define COR_E_ARGUMENT              E_INVALIDARG
+#define COR_E_INVALIDCAST           E_NOINTERFACE
+#define COR_E_NULLREFERENCE         E_POINTER
+#define COR_E_OUTOFMEMORY           E_OUTOFMEMORY
+#define COR_E_UNAUTHORIZEDACCESS    E_ACCESSDENIED
+
+#define COR_E_ARITHMETIC            HRESULT_FROM_WIN32(ERROR_ARITHMETIC_OVERFLOW)
+#define COR_E_STACKOVERFLOW         HRESULT_FROM_WIN32(ERROR_STACK_OVERFLOW)
+#define COR_E_ENDOFSTREAM           HRESULT_FROM_WIN32(ERROR_HANDLE_EOF)
+#define COR_E_FILENOTFOUND          HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)
+#define COR_E_BAD_PATHNAME          HRESULT_FROM_WIN32(ERROR_BAD_PATHNAME)
+#define COR_E_DIRECTORYNOTFOUND     HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND)
+#define COR_E_PATHTOOLONG           HRESULT_FROM_WIN32(ERROR_FILENAME_EXCED_RANGE)
+
+#define COR_E_AMBIGUOUSMATCH    _HRESULT_TYPEDEF_(0x8000211DL)
+#define COR_E_TARGETPARAMCOUNT  _HRESULT_TYPEDEF_(0x8002000EL)
+#define COR_E_DIVIDEBYZERO      _HRESULT_TYPEDEF_(0x80020012L)
+#define COR_E_BADIMAGEFORMAT    _HRESULT_TYPEDEF_(0x8007000BL)
+
+#define COR_E_ASSEMBLYEXPECTED          EMAKEHR(0x1018L)
+#define COR_E_TYPEUNLOADED              EMAKEHR(0x1013L)
+#define COR_E_EXCEPTION                 EMAKEHR(0x1500L)
+#define COR_E_SYSTEM                    EMAKEHR(0x1501L)
+#define COR_E_ARGUMENTOUTOFRANGE        EMAKEHR(0x1502L)
+#define COR_E_ARRAYTYPEMISMATCH         EMAKEHR(0x1503L)
+#define COR_E_CONTEXTMARSHAL            EMAKEHR(0x1504L)
+#define COR_E_TIMEOUT                   EMAKEHR(0x1505L)
+#define COR_E_EXECUTIONENGINE           EMAKEHR(0x1506L)
+#define COR_E_FIELDACCESS               EMAKEHR(0x1507L)
+#define COR_E_INDEXOUTOFRANGE           EMAKEHR(0x1508L)
+#define COR_E_INVALIDOPERATION          EMAKEHR(0x1509L)
+#define COR_E_SECURITY                  EMAKEHR(0x150AL)
+#define COR_E_REMOTING                  EMAKEHR(0x150BL)
+#define COR_E_SERIALIZATION             EMAKEHR(0x150CL)
+#define COR_E_VERIFICATION              EMAKEHR(0x150DL)
+#define COR_E_SERVER                    EMAKEHR(0x150EL)
+#define COR_E_SERVICEDCOMPONENT         EMAKEHR(0x150FL)
+#define COR_E_METHODACCESS              EMAKEHR(0x1510L)
+#define COR_E_MISSINGFIELD              EMAKEHR(0x1511L)
+#define COR_E_MISSINGMEMBER             EMAKEHR(0x1512L)
+#define COR_E_MISSINGMETHOD             EMAKEHR(0x1513L)
+#define COR_E_MULTICASTNOTSUPPORTED     EMAKEHR(0x1514L)
+#define COR_E_NOTSUPPORTED              EMAKEHR(0x1515L)
+#define COR_E_OVERFLOW                  EMAKEHR(0x1516L)
+#define COR_E_RANK                      EMAKEHR(0x1517L)
+#define COR_E_SYNCHRONIZATIONLOCK       EMAKEHR(0x1518L)
+#define COR_E_THREADINTERRUPTED         EMAKEHR(0x1519L)
+#define COR_E_MEMBERACCESS              EMAKEHR(0x151AL)
+#define COR_E_THREADSTATE               EMAKEHR(0x1520L)
+#define COR_E_THREADSTOP                EMAKEHR(0x1521L)
+#define COR_E_TYPELOAD                  EMAKEHR(0x1522L)
+#define COR_E_ENTRYPOINTNOTFOUND        EMAKEHR(0x1523L)
+#define COR_E_DLLNOTFOUND               EMAKEHR(0x1524L)
+#define COR_E_THREADSTART               EMAKEHR(0x1525L)
+#define COR_E_INVALIDCOMOBJECT          EMAKEHR(0x1527L)
+#define COR_E_NOTFINITENUMBER           EMAKEHR(0x1528L)
+#define COR_E_DUPLICATEWAITOBJECT       EMAKEHR(0x1529L)
+#define COR_E_SEMAPHOREFULL             EMAKEHR(0x152BL)
+#define COR_E_WAITHANDLECANNOTBEOPENED  EMAKEHR(0x152CL)
+#define COR_E_ABANDONEDMUTEX            EMAKEHR(0x152DL)
+#define COR_E_INVALIDOLEVARIANTTYPE     EMAKEHR(0x1531L)
+#define COR_E_MISSINGMANIFESTRESOURCE   EMAKEHR(0x1532L)
+#define COR_E_SAFEARRAYTYPEMISMATCH     EMAKEHR(0x1533L)
+#define COR_E_TYPEINITIALIZATION        EMAKEHR(0x1534L)
+#define COR_E_MARSHALDIRECTIVE          EMAKEHR(0x1535L)
+#define COR_E_MISSINGSATELLITEASSEMBLY  EMAKEHR(0x1536L)
+#define COR_E_FORMAT                    EMAKEHR(0x1537L)
+#define COR_E_SAFEARRAYRANKMISMATCH     EMAKEHR(0x1538L)
+#define COR_E_PLATFORMNOTSUPPORTED      EMAKEHR(0x1539L)
+#define COR_E_INVALIDPROGRAM            EMAKEHR(0x153AL)
+#define COR_E_OPERATIONCANCELED         EMAKEHR(0x153BL)
+#define COR_E_INSUFFICIENTMEMORY        EMAKEHR(0x153DL)
+#define COR_E_RUNTIMEWRAPPED            EMAKEHR(0x153EL)
+#define COR_E_DEVICESNOTSUPPORTED       EMAKEHR(0x1540L)
+#define COR_E_DATAMISALIGNED            EMAKEHR(0x1541L)
+#define COR_E_KEYNOTFOUND               EMAKEHR(0x1577L)
+#define COR_E_APPLICATION               EMAKEHR(0x1600L)
+#define COR_E_INVALIDFILTERCRITERIA     EMAKEHR(0x1601L)
+#define COR_E_REFLECTIONTYPELOAD        EMAKEHR(0x1602L)
+#define COR_E_TARGET                    EMAKEHR(0x1603L)
+#define COR_E_TARGETINVOCATION          EMAKEHR(0x1604L)
+#define COR_E_CUSTOMATTRIBUTEFORMAT     EMAKEHR(0x1605L)
+#define COR_E_IO                        EMAKEHR(0x1620L)
+#define COR_E_FILELOAD                  EMAKEHR(0x1621L)
+#define COR_E_OBJECTDISPOSED            EMAKEHR(0x1622L)
+#define COR_E_FAILFAST                  EMAKEHR(0x1623L)
+#define COR_E_HOSTPROTECTION            EMAKEHR(0x1640L)
+#define COR_E_ILLEGAL_REENTRANCY        EMAKEHR(0x1641L)
+
+#define FUSION_E_INVALID_NAME           EMAKEHR(0x1047)
+
+#endif	/* __WINE_CORERROR_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/corhdr.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/corhdr.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/corhdr.h	(revision 16410)
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2008 James Hawkins
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_CORHDR_H
+#define __WINE_CORHDR_H
+
+typedef enum CorTokenType
+{
+    mdtModule                   = 0x00000000,
+    mdtTypeRef                  = 0x01000000,
+    mdtTypeDef                  = 0x02000000,
+    mdtFieldDef                 = 0x04000000,
+    mdtMethodDef                = 0x06000000,
+    mdtParamDef                 = 0x08000000,
+    mdtInterfaceImpl            = 0x09000000,
+    mdtMemberRef                = 0x0a000000,
+    mdtCustomAttribute          = 0x0c000000,
+    mdtPermission               = 0x0e000000,
+    mdtSignature                = 0x11000000,
+    mdtEvent                    = 0x14000000,
+    mdtProperty                 = 0x17000000,
+    mdtModuleRef                = 0x1a000000,
+    mdtTypeSpec                 = 0x1b000000,
+    mdtAssembly                 = 0x20000000,
+    mdtAssemblyRef              = 0x23000000,
+    mdtFile                     = 0x26000000,
+    mdtExportedType             = 0x27000000,
+    mdtManifestResource         = 0x28000000,
+    mdtGenericParam             = 0x2a000000,
+    mdtMethodSpec               = 0x2b000000,
+    mdtGenericParamConstraint   = 0x2c000000,
+    mdtString                   = 0x70000000,
+    mdtName                     = 0x71000000,
+    mdtBaseType                 = 0x72000000,
+} CorTokenType;
+
+#define RidToToken(rid,tktype) ((rid) |= (tktype))
+#define TokenFromRid(rid,tktype) ((rid) | (tktype))
+#define RidFromToken(tk) ((RID)((tk) & 0x00ffffff))
+#define TypeFromToken(tk) ((ULONG32)((tk) & 0xff000000))
+#define IsNilToken(tk) ((RidFromToken(tk)) == 0)
+
+#endif /* __WINE_CORHDR_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/cpl.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/cpl.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/cpl.h	(revision 16410)
@@ -0,0 +1,89 @@
+/*
+ * Control panel definitions
+ *
+ * Copyright (C) 2001 Eric Pouech
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _INC_CPL
+#define _INC_CPL
+
+#include <pshpack1.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define WM_CPL_LAUNCH   (WM_USER+1000)
+#define WM_CPL_LAUNCHED (WM_USER+1001)
+
+typedef LONG (APIENTRY *APPLET_PROC)(HWND hwndCpl, UINT msg, LPARAM lParam1, LPARAM lParam2);
+
+typedef struct tagCPLINFO {
+    int     idIcon;
+    int     idName;
+    int     idInfo;
+    LONG    lData;
+} CPLINFO, *LPCPLINFO;
+
+typedef struct tagNEWCPLINFOA
+{
+    DWORD   dwSize;
+    DWORD   dwFlags;
+    DWORD   dwHelpContext;
+    LONG    lData;
+    HICON   hIcon;
+    CHAR    szName[32];
+    CHAR    szInfo[64];
+    CHAR    szHelpFile[128];
+} NEWCPLINFOA, *LPNEWCPLINFOA;
+
+typedef struct tagNEWCPLINFOW
+{
+    DWORD   dwSize;
+    DWORD   dwFlags;
+    DWORD   dwHelpContext;
+    LONG    lData;
+    HICON   hIcon;
+    WCHAR   szName[32];
+    WCHAR   szInfo[64];
+    WCHAR   szHelpFile[128];
+} NEWCPLINFOW, *LPNEWCPLINFOW;
+
+DECL_WINELIB_TYPE_AW(NEWCPLINFO)
+DECL_WINELIB_TYPE_AW(LPNEWCPLINFO)
+
+#define CPL_DYNAMIC_RES 	0
+#define CPL_INIT        	1
+#define CPL_GETCOUNT    	2
+#define CPL_INQUIRE     	3
+#define CPL_SELECT      	4
+#define CPL_DBLCLK      	5
+#define CPL_STOP        	6
+#define CPL_EXIT        	7
+#define CPL_NEWINQUIRE		8
+#define CPL_STARTWPARMSA 	9
+#define CPL_STARTWPARMSW 	10
+#define CPL_STARTWPARMS WINELIB_NAME_AW(CPL_STARTWPARMS)
+#define CPL_SETUP		200
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <poppack.h>
+
+#endif /* _INC_CPL */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/cryptdlg.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/cryptdlg.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/cryptdlg.h	(revision 16410)
@@ -0,0 +1,313 @@
+/*
+ * Copyright (C) 2008 Juan Lang
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __CRYPTDLG_H__
+#define __CRYPTDLG_H__
+
+#include <prsht.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define CRYPTDLG_FLAGS_MASK         0xff000000
+#define CRYPTDLG_REVOCATION_DEFAULT 0x00000000
+#define CRYPTDLG_REVOCATION_ONLINE  0x80000000
+#define CRYPTDLG_REVOCATION_CACHE   0x40000000
+#define CRYPTDLG_REVOCATION_NONE    0x20000000
+
+#define CRYPTDLG_POLICY_MASK          0x0000ffff
+#define POLICY_IGNORE_NON_CRITICAL_BC 0x00000001
+
+#define CRYPTDLG_ACTION_MASK             0xffff0000
+#define ACTION_REVOCATION_DEFAULT_ONLINE 0x00010000
+#define ACTION_REVOCATION_DEFAULT_CACHE  0x00020000
+
+typedef BOOL (WINAPI *PFNCMFILTERPROC)(PCCERT_CONTEXT, DWORD, DWORD, DWORD);
+
+#define CERT_DISPWELL_SELECT                 1
+#define CERT_DISPWELL_TRUST_CA_CERT          2
+#define CERT_DISPWELL_TRUST_LEAF_CERT        3
+#define CERT_DISPWELL_TRUST_ADD_CA_CERT      4
+#define CERT_DISPWELL_TRUST_ADD_LEAF_CERT    5
+#define CERT_DISPWELL_DISTRUST_CA_CERT       6
+#define CERT_DISPWELL_DISTRUST_LEAF_CERT     7
+#define CERT_DISPWELL_DISTRUST_ADD_CA_CERT   8
+#define CERT_DISPWELL_DISTRUST_ADD_LEAF_CERT 9
+
+typedef UINT (WINAPI *PFNCMHOOKPROC)(HWND, UINT, WPARAM, LPARAM);
+
+#define CSS_SELECTCERT_MASK      0x00ffffff
+#define CSS_HIDE_PROPERTIES      0x00000001
+#define CSS_ENABLEHOOK           0x00000002
+#define CSS_ALLOWMULTISELECT     0x00000004
+#define CSS_SHOW_HELP            0x00000010
+#define CSS_ENABLETEMPLATE       0x00000020
+#define CSS_ENABLETEMPLATEHANDLE 0x00000040
+
+#define SELCERT_OK         IDOK
+#define SELCERT_CANCEL     IDCANCEL
+#define SELCERT_PROPERTIES 100
+#define SELCERT_FINEPRINT  101
+#define SELCERT_CERTLIST   102
+#define SELCERT_HELP       IDHELP
+#define SELCERT_ISSUED_TO  103
+#define SELCERT_VALIDITY   104
+#define SELCERT_ALGORITHM  105
+#define SELCERT_SERIAL_NUM 106
+#define SELCERT_THUMBPRINT 107
+
+typedef struct tagCSSA
+{
+    DWORD           dwSize;
+    HWND            hwndParent;
+    HINSTANCE       hInstance;
+    LPCSTR          pTemplateName;
+    DWORD           dwFlags;
+    LPCSTR          szTitle;
+    DWORD           cCertStore;
+    HCERTSTORE     *arrayCertStore;
+    LPCSTR          szPurposeOid;
+    DWORD           cCertContext;
+    PCCERT_CONTEXT *arrayCertContext;
+    DWORD           lCustData;
+    PFNCMHOOKPROC   pfnHook;
+    PFNCMFILTERPROC pfnFilter;
+    LPCSTR          szHelpFileName;
+    DWORD           dwHelpId;
+    HCRYPTPROV      hprov;
+} CERT_SELECT_STRUCT_A, *PCERT_SELECT_STRUCT_A;
+
+typedef struct tagCSSW
+{
+    DWORD           dwSize;
+    HWND            hwndParent;
+    HINSTANCE       hInstance;
+    LPCWSTR         pTemplateName;
+    DWORD           dwFlags;
+    LPCWSTR         szTitle;
+    DWORD           cCertStore;
+    HCERTSTORE     *arrayCertStore;
+    LPCSTR          szPurposeOid;
+    DWORD           cCertContext;
+    PCCERT_CONTEXT *arrayCertContext;
+    DWORD           lCustData;
+    PFNCMHOOKPROC   pfnHook;
+    PFNCMFILTERPROC pfnFilter;
+    LPCWSTR         szHelpFileName;
+    DWORD           dwHelpId;
+    HCRYPTPROV      hprov;
+} CERT_SELECT_STRUCT_W, *PCERT_SELECT_STRUCT_W;
+
+#define CERT_SELECT_STRUCT WINELIB_NAME_AW(CERT_SELECT_STRUCT_)
+
+BOOL WINAPI CertSelectCertificateA(PCERT_SELECT_STRUCT_A pCertSelectInfo);
+BOOL WINAPI CertSelectCertificateW(PCERT_SELECT_STRUCT_W pCertSelectInfo);
+#define CertSelectCertificate WINELIB_NAME_AW(CertSelectCertificate)
+
+#define CM_VIEWFLAGS_MASK       0x00ffffff
+#define CM_ENABLEHOOK           0x00000001
+#define CM_SHOW_HELP            0x00000002
+#define CM_SHOW_HELPICON        0x00000004
+#define CM_ENABLETEMPLATE       0x00000008
+#define CM_HIDE_ADVANCEPAGE     0x00000010
+#define CM_HIDE_TRUSTPAGE       0x00000020
+#define CM_NO_NAMECHANGE        0x00000040
+#define CM_NO_EDITTRUST         0x00000080
+#define CM_HIDE_DETAILPAGE      0x00000100
+#define CM_ADD_CERT_STORES      0x00000200
+#define CERTVIEW_CRYPTUI_LPARAM 0x00800000
+
+typedef struct tagCERT_VIEWPROPERTIES_STRUCT_A
+{
+    DWORD           dwSize;
+    HWND            hwndParent;
+    HINSTANCE       hInstance;
+    DWORD           dwFlags;
+    LPCSTR          szTitle;
+    PCCERT_CONTEXT  pCertContext;
+    LPSTR          *arrayPurposes;
+    DWORD           cArrayPurposes;
+    DWORD           cRootStores;
+    HCERTSTORE     *rghstoreRoots;
+    DWORD           cStores;
+    HCERTSTORE     *rghstoreCAs;
+    DWORD           cTrustStores;
+    HCERTSTORE     *rghstoreTrust;
+    HCRYPTPROV      hprov;
+    DWORD           lCustData;
+    DWORD           dwPad;
+    LPCSTR          szHelpFileName;
+    DWORD           dwHelpId;
+    DWORD           nStartPage;
+    DWORD           cArrayPropSheetPages;
+    /* FIXME: PSDK declares arrayPropSheetPages as a PROPSHEETPAGE *, which we
+     * don't allow in our own headers.  It's probably wrong, but we're not
+     * compatible.
+     */
+    PROPSHEETPAGEA *arrayPropSheetPages;
+} CERT_VIEWPROPERTIES_STRUCT_A, *PCERT_VIEWPROPERTIES_STRUCT_A;
+
+typedef struct tagCERT_VIEWPROPERTIES_STRUCT_W
+{
+    DWORD           dwSize;
+    HWND            hwndParent;
+    HINSTANCE       hInstance;
+    DWORD           dwFlags;
+    LPCWSTR         szTitle;
+    PCCERT_CONTEXT  pCertContext;
+    LPSTR          *arrayPurposes;
+    DWORD           cArrayPurposes;
+    DWORD           cRootStores;
+    HCERTSTORE     *rghstoreRoots;
+    DWORD           cStores;
+    HCERTSTORE     *rghstoreCAs;
+    DWORD           cTrustStores;
+    HCERTSTORE     *rghstoreTrust;
+    HCRYPTPROV      hprov;
+    DWORD           lCustData;
+    DWORD           dwPad;
+    LPCWSTR         szHelpFileName;
+    DWORD           dwHelpId;
+    DWORD           nStartPage;
+    DWORD           cArrayPropSheetPages;
+    /* FIXME: PSDK declares arrayPropSheetPages as a PROPSHEETPAGE *, which we
+     * don't allow in our own headers.  It's probably wrong, but we're not
+     * compatible.
+     */
+    PROPSHEETPAGEW *arrayPropSheetPages;
+} CERT_VIEWPROPERTIES_STRUCT_W, *PCERT_VIEWPROPERTIES_STRUCT_W;
+
+#define CERT_VIEWPROPERTIES_STRUCT WINELIB_NAME_AW(CERT_VIEWPROPERTIES_STRUCT_)
+#define PCERT_VIEWPROPERTIES_STRUCT \
+ WINELIB_NAME_AW(PCERT_VIEWPROPERTIES_STRUCT_)
+
+BOOL WINAPI CertViewPropertiesA(PCERT_VIEWPROPERTIES_STRUCT_A pCertViewInfo);
+BOOL WINAPI CertViewPropertiesW(PCERT_VIEWPROPERTIES_STRUCT_W pCertViewInfo);
+#define CertViewProperties WINELIB_NAME_AW(CertViewProperties)
+
+#define CERT_FILTER_OP_EXISTS     1
+#define CERT_FILTER_OP_NOT_EXISTS 2
+#define CERT_FILTER_OP_EQUALITY   3
+
+typedef struct tagCMOID
+{
+    LPCSTR szExtensionOID;
+    DWORD  dwTestOperation;
+    LPBYTE pbTestData;
+    DWORD  cbTestData;
+} CERT_FILTER_EXTENSION_MATCH;
+
+#define CERT_FILTER_INCLUDE_V1_CERTS  0x0001
+#define CERT_FILTER_VALID_TIME_RANGE  0x0002
+#define CERT_FILTER_VALID_SIGNATURE   0x0004
+#define CERT_FILTER_LEAF_CERTS_ONLY   0x0008
+#define CERT_FILTER_ISSUER_CERTS_ONLY 0x0010
+#define CERT_FILTER_KEY_EXISTS        0x0020
+
+typedef struct tagCMFLTR
+{
+    DWORD                        dwSize;
+    DWORD                        cExtensionChecks;
+    CERT_FILTER_EXTENSION_MATCH *arrayExtensionChecks;
+    DWORD                        dwCheckingFlags;
+} CERT_FILTER_DATA;
+
+DWORD WINAPI GetFriendlyNameOfCertA(PCCERT_CONTEXT pccert, LPSTR pchBuffer,
+ DWORD cchBuffer);
+DWORD WINAPI GetFriendlyNameOfCertW(PCCERT_CONTEXT pccert, LPWSTR pchBuffer,
+ DWORD cchBuffer);
+#define GetFriendlyNameOfCert WINELIB_NAME_AW(GetFriendlyNameOfCert)
+
+#define CERT_CERTIFICATE_ACTION_VERIFY \
+ { 0x7801ebd0, 0xcf4b, 0x11d0, { 0x85,0x1f,0x00,0x60,0x97,0x93,0x87,0xea }}
+#define szCERT_CERTIFICATE_ACTION_VERIFY \
+ "{7801ebd0-cf4b-11d0-851f-0060979387ea}"
+
+typedef HRESULT (WINAPI *PFNTRUSTHELPER)(PCCERT_CONTEXT, DWORD, BOOL, LPBYTE);
+
+#define CERT_VALIDITY_MASK_VALIDITY              0x0000ffff
+#define CERT_VALIDITY_BEFORE_START               0x00000001
+#define CERT_VALIDITY_AFTER_END                  0x00000002
+#define CERT_VALIDITY_SIGNATURE_FAILS            0x00000004
+#define CERT_VALIDITY_CERTIFICATE_REVOKED        0x00000008
+#define CERT_VALIDITY_KEY_USAGE_EXT_FAILURE      0x00000010
+#define CERT_VALIDITY_EXTENDED_USAGE_FAILURE     0x00000020
+#define CERT_VALIDITY_NAME_CONSTRAINTS_FAILURE   0x00000040
+#define CERT_VALIDITY_UNKNOWN_CRITICAL_EXTENSION 0x00000080
+#define CERT_VALIDITY_ISSUER_INVALID             0x00000100
+#define CERT_VALIDITY_OTHER_EXTENSION_FAILURE    0x00000200
+#define CERT_VALIDITY_PERIOD_NESTING_FAILURE     0x00000400
+#define CERT_VALIDITY_OTHER_ERROR                0x00000800
+
+#define CERT_VALIDITY_MASK_TRUST                 0xffff0000
+#define CERT_VALIDITY_EXPLICITLY_DISTRUSTED      0x01000000
+#define CERT_VALIDITY_ISSUER_DISTRUST            0x02000000
+#define CERT_VALIDITY_NO_ISSUER_CERT_FOUND       0x10000000
+#define CERT_VALIDITY_NO_CRL_FOUND               0x20000000
+#define CERT_VALIDITY_CRL_OUT_OF_DATE            0x40000000
+#define CERT_VALIDITY_NO_TRUST_DATA              0x80000000
+
+#define CERT_TRUST_MASK                0x00ffffff
+#define CERT_TRUST_DO_FULL_SEARCH      0x00000001
+#define CERT_TRUST_PERMIT_MISSING_CRLS 0x00000002
+#define CERT_TRUST_DO_FULL_TRUST       0x00000005
+#define CERT_TRUST_ADD_CERT_STORES     CM_ADD_CERT_STORES
+
+typedef struct _CERT_VERIFY_CERTIFICATE_TRUST
+{
+    DWORD            cbSize;
+    PCCERT_CONTEXT   pccert;
+    DWORD            dwFlags;
+    DWORD            dwIgnoreErr;
+    DWORD           *pdwErrors;
+    LPSTR            pszUsageOid;
+    HCRYPTPROV       hprov;
+    DWORD            cRootStores;
+    HCERTSTORE      *rghstoreRoots;
+    DWORD            cStores;
+    HCERTSTORE      *rghstoreCAs;
+    DWORD            cTrustStores;
+    HCERTSTORE      *rghstoreTrust;
+    DWORD            lCustData;
+    PFNTRUSTHELPER   pfnTrustHelper;
+    DWORD           *pcchain;
+    PCCERT_CONTEXT **prgChain;
+    DWORD          **prgdwErrors;
+    DATA_BLOB      **prgpbTrustInfo;
+} CERT_VERIFY_CERTIFICATE_TRUST, *PCERT_VERIFY_CERTIFICATE_TRUST;
+
+#define CTL_MODIFY_REQUEST_ADD_NOT_TRUSTED 1
+#define CTL_MODIFY_REQUEST_REMOVE          2
+#define CTL_MODIFY_REQUEST_ADD_TRUSTED     3
+
+typedef struct _CTL_MODIFY_REQUEST
+{
+    PCCERT_CONTEXT pccert;
+    DWORD          dwOperation;
+    DWORD          dwError;
+} CTL_MODIFY_REQUEST, *PCTL_MODIFY_REQUEST;
+
+HRESULT WINAPI CertModifyCertificatesToTrust(int cCertStore,
+ PCTL_MODIFY_REQUEST rgCerts, LPCSTR szPurpose, HWND hwnd,
+ HCERTSTORE hcertstoreTrust);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/cryptuiapi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/cryptuiapi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/cryptuiapi.h	(revision 16410)
@@ -0,0 +1,344 @@
+/*
+ * Copyright (C) 2008 Juan Lang
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __CRYPTUIAPI_H__
+#define __CRYPTUIAPI_H__
+
+#include <wintrust.h>
+#include <wincrypt.h>
+#include <prsht.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <pshpack8.h>
+
+BOOL WINAPI CryptUIDlgViewContext(DWORD dwContextType, LPVOID pvContext,
+ HWND hwnd, LPCWSTR pwszTitle, DWORD dwFlags, LPVOID pvReserved);
+
+/* Values for dwDontUseColumn */
+#define CRYPTUI_SELECT_ISSUEDTO_COLUMN     0x00000001
+#define CRYPTUI_SELECT_ISSUEDBY_COLUMN     0x00000002
+#define CRYPTUI_SELECT_INTENDEDUSE_COLUMN  0x00000004
+#define CRYPTUI_SELECT_FRIENDLYNAME_COLUMN 0x00000008
+#define CRYPTUI_SELECT_LOCATION_COLUMN     0x00000010
+#define CRYPTUI_SELECT_EXPIRATION_COLUMN   0x00000020
+
+PCCERT_CONTEXT WINAPI CryptUIDlgSelectCertificateFromStore(
+ HCERTSTORE hCertStore, HWND hwnd, LPCWSTR pwszTitle, LPCWSTR pwszDisplayString,
+ DWORD dwDontUseColumn, DWORD dwFlags, LPVOID pvReserved);
+
+/* Values for CRYPTUI_CERT_MGR_STRUCT's dwFlags */
+#define CRYPTUI_CERT_MGR_PUBLISHER_TAB   0x00000004
+#define CRYPTUI_CERT_MGR_TAB_MASK        0x0000000f
+#define CRYPTUI_CERT_MGR_SINGLE_TAB_FLAG 0x00008000
+
+typedef struct _CRYPTUI_CERT_MGR_STRUCT
+{
+    DWORD   dwSize;
+    HWND    hwndParent;
+    DWORD   dwFlags;
+    LPCWSTR pwszTitle;
+    LPCSTR  pszInitUsageOID;
+} CRYPTUI_CERT_MGR_STRUCT, *PCRYPTUI_CERT_MGR_STRUCT;
+typedef const struct _CRYPTUI_CERT_MGR_STRUCT *PCCRYPTUI_CERT_MGR_STRUCT;
+
+BOOL WINAPI CryptUIDlgCertMgr(PCCRYPTUI_CERT_MGR_STRUCT pCryptUICertMgr);
+
+typedef BOOL (WINAPI *PFNCFILTERPROC)(PCCERT_CONTEXT pCertContext,
+ BOOL *pfInitialSelectedCert, void *pvCallbackData);
+
+typedef struct tagCRYPTUI_INITDIALOG_STRUCT
+{
+    LPARAM         lParam;
+    PCCERT_CONTEXT pCertContext;
+} CRYPTUI_INITDIALOG_STRUCT, *PCRYPTUI_INITDIALOG_STRUCT;
+
+/* Values for CRYPTUI_VIEWCERTIFICATE_STRUCT's dwFlags */
+#define CRYPTUI_HIDE_HIERARCHYPAGE               0x00000001
+#define CRYPTUI_HIDE_DETAILPAGE                  0x00000002
+#define CRYPTUI_DISABLE_EDITPROPERTIES           0x00000004
+#define CRYPTUI_ENABLE_EDITPROPERTIES            0x00000008
+#define CRYPTUI_DISABLE_ADDTOSTORE               0x00000010
+#define CRYPTUI_ENABLE_ADDTOSTORE                0x00000020
+#define CRYPTUI_ACCEPT_DECLINE_STYLE             0x00000040
+#define CRYPTUI_IGNORE_UNTRUSTED_ROOT            0x00000080
+#define CRYPTUI_DONT_OPEN_STORES                 0x00000100
+#define CRYPTUI_ONLY_OPEN_ROOT_STORE             0x00000200
+#define CRYPTUI_WARN_UNTRUSTED_ROOT              0x00000400
+#define CRYPTUI_ENABLE_REVOCATION_CHECKING       0x00000800
+#define CRYPTUI_WARN_REMOTE_TRUST                0x00001000
+#define CRYPTUI_DISABLE_EXPORT                   0x00002000
+#define CRYPTUI_ENABLE_REVOCATION_CHECK_END_CERT 0x00004000
+#define CRYPTUI_ENABLE_REVOCATION_CHECK_CHAIN    0x00008000
+#define CRYPTUI_ENABLE_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT CRYPTUI_ENABLE_REVOCATION_CHECKING
+#define CRYPTUI_DISABLE_HTMLLINK                 0x00010000
+#define CRYPTUI_DISABLE_ISSUERSTATEMENT          0x00020000
+
+typedef struct tagCRYPTUI_VIEWCERTIFICATE_STRUCTA
+{
+    DWORD             dwSize;
+    HWND              hwndParent;
+    DWORD             dwFlags;
+    LPCSTR            szTitle;
+    PCCERT_CONTEXT    pCertContext;
+    LPCSTR           *rgszPurposes;
+    DWORD             cPurposes;
+    union {
+        CRYPT_PROVIDER_DATA const *pCryptProviderData;
+        HANDLE                     hWVTStateData;
+    } DUMMYUNIONNAME;
+    BOOL              fpCryptProviderDataTrustedUsage;
+    DWORD             idxSigner;
+    DWORD             idxCert;
+    BOOL              fCounterSigner;
+    DWORD             idxCounterSigner;
+    DWORD             cStores;
+    HCERTSTORE       *rghStores;
+    DWORD             cPropSheetPages;
+    LPCPROPSHEETPAGEA rgPropSheetPages;
+    DWORD             nStartPage;
+} CRYPTUI_VIEWCERTIFICATE_STRUCTA, *PCRYPTUI_VIEWCERTIFICATE_STRUCTA;
+typedef const CRYPTUI_VIEWCERTIFICATE_STRUCTA *PCCRYPTUI_VIEWCERTIFICATE_STRUCTA;
+
+typedef struct tagCRYPTUI_VIEWCERTIFICATE_STRUCTW
+{
+    DWORD             dwSize;
+    HWND              hwndParent;
+    DWORD             dwFlags;
+    LPCWSTR           szTitle;
+    PCCERT_CONTEXT    pCertContext;
+    LPCSTR           *rgszPurposes;
+    DWORD             cPurposes;
+    union {
+        CRYPT_PROVIDER_DATA const *pCryptProviderData;
+        HANDLE                     hWVTStateData;
+    } DUMMYUNIONNAME;
+    BOOL              fpCryptProviderDataTrustedUsage;
+    DWORD             idxSigner;
+    DWORD             idxCert;
+    BOOL              fCounterSigner;
+    DWORD             idxCounterSigner;
+    DWORD             cStores;
+    HCERTSTORE       *rghStores;
+    DWORD             cPropSheetPages;
+    LPCPROPSHEETPAGEW rgPropSheetPages;
+    DWORD             nStartPage;
+} CRYPTUI_VIEWCERTIFICATE_STRUCTW, *PCRYPTUI_VIEWCERTIFICATE_STRUCTW;
+typedef const CRYPTUI_VIEWCERTIFICATE_STRUCTW *PCCRYPTUI_VIEWCERTIFICATE_STRUCTW;
+
+#define CRYPTUI_VIEWCERTIFICATE_STRUCT   WINELIB_NAME_AW(CRYPTUI_VIEWCERTIFICATE_STRUCT)
+#define PCCRYPTUI_VIEWCERTIFICATE_STRUCT WINELIB_NAME_AW(PCCRYPTUI_VIEWCERTIFICATE_STRUCT)
+
+BOOL WINAPI CryptUIDlgViewCertificateA(
+ PCCRYPTUI_VIEWCERTIFICATE_STRUCTA pCertViewInfo, BOOL *pfPropertiesChanged);
+BOOL WINAPI CryptUIDlgViewCertificateW(
+ PCCRYPTUI_VIEWCERTIFICATE_STRUCTW pCertViewInfo, BOOL *pfPropertiesChanged);
+#define CryptUIDlgViewCertificate WINELIB_NAME_AW(CryptUIDlgViewCertificate)
+
+typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO
+{
+    DWORD   dwSize;
+    GUID   *pGuidSubject;
+    DWORD   cbBlob;
+    BYTE   *pbBlob;
+    LPCWSTR pwszDisplayName;
+} CRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO, *PCRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO;
+typedef const CRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO *
+ PCCRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO;
+
+typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO
+{
+    DWORD          dwSize;
+    DWORD          cCertStore;
+    HCERTSTORE    *rghCertStore;
+    PFNCFILTERPROC pFilterCallback;
+    void          *pvCallbackData;
+} CRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO, *PCRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO;
+typedef const CRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO *
+ PCCRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO;
+
+typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO
+{
+    DWORD  dwSize;
+    LPWSTR pwszPvkFileName;
+    LPWSTR pwszProvName;
+    DWORD  dwProvType;
+} CRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO,
+ *PCRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO;
+typedef const CRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO *
+ PCCRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO;
+
+typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO
+{
+    DWORD  dwSize;
+    LPWSTR pwszSigningCertFileName;
+    DWORD  dwPvkChoice;
+    union {
+        PCCRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO pPvkFileInfo;
+        PCRYPT_KEY_PROV_INFO                    pPvkProvInfo;
+    } DUMMYUNIONNAME;
+} CRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO,
+ *PCRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO;
+typedef const CRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO *
+ PCCRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO;
+
+typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO
+{
+    DWORD             dwSize;
+    DWORD             dwAttrFlags;
+    LPCWSTR           pwszDescription;
+    LPCWSTR           pwszMoreInfoLocation;
+    LPCSTR            pszHashAlg;
+    LPCWSTR           pwszSigningCertDisplayString;
+    HCERTSTORE        hAdditionalCertStore;
+    PCRYPT_ATTRIBUTES psAuthenticated;
+    PCRYPT_ATTRIBUTES psUnauthenticated;
+} CRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO,
+ *PCRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO;
+typedef const CRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO *
+ PCCRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO;
+
+typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_INFO
+{
+    DWORD   dwSize;
+    DWORD   dwSubjectChoice;
+    union {
+        LPCWSTR                              pwszFileName;
+        PCCRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO pSignBlobInfo;
+    } DUMMYUNIONNAME1;
+    DWORD   dwSigningCertChoice;
+    union {
+        PCCERT_CONTEXT                           pSigningCertContext;
+        PCCRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO    pSigningCertStore;
+        PCCRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO pSigningCertPvkInfo;
+    } DUMMYUNIONNAME2;
+    LPCWSTR pwszTimestampURL;
+    DWORD   dwAdditionalCertChoice;
+    PCCRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO pSignExtInfo;
+} CRYPTUI_WIZ_DIGITAL_SIGN_INFO, *PCRYPTUI_WIZ_DIGITAL_SIGN_INFO;
+typedef const CRYPTUI_WIZ_DIGITAL_SIGN_INFO *PCCRYPTUI_WIZ_DIGITAL_SIGN_INFO;
+
+typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT
+{
+    DWORD dwSize;
+    DWORD cbBlob;
+    BYTE *pbBlob;
+} CRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT, *PCRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT;
+
+/* Values for CryptUIWizDigitalSign's dwFlags */
+#define CRYPTUI_WIZ_NO_UI                            0x00000001
+#define CRYPTUI_WIZ_DIGITAL_SIGN_EXCLUDE_PAGE_HASHES 0x00000002
+#define CRYPTUI_WIZ_DIGITAL_SIGN_INCLUDE_PAGE_HASHES 0x00000004
+
+BOOL WINAPI CryptUIWizDigitalSign(DWORD dwFlags, HWND hwndParent,
+ LPCWSTR pwszWizardTitle, PCCRYPTUI_WIZ_DIGITAL_SIGN_INFO pDigitalSignInfo,
+ PCRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT *ppSignContext);
+
+BOOL WINAPI CryptUIWizFreeDigitalSignContext(
+ PCRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT pSignContext);
+
+/* Values for CRYPTUI_WIZ_EXPORT_INFO's dwSubjectChoice */
+#define CRYPTUI_WIZ_EXPORT_CERT_CONTEXT                 1
+#define CRYPTUI_WIZ_EXPORT_CTL_CONTEXT                  2
+#define CRYPTUI_WIZ_EXPORT_CRL_CONTEXT                  3
+#define CRYPTUI_WIZ_EXPORT_CERT_STORE                   4
+#define CRYPTUI_WIZ_EXPORT_CERT_STORE_CERTIFICATES_ONLY 5
+#define CRYPTUI_WIZ_EXPORT_FORMAT_CRL                   6
+#define CRYPTUI_WIZ_EXPORT_FORMAT_CTL                   7
+
+typedef struct _CRYPTUI_WIZ_EXPORT_INFO
+{
+    DWORD       dwSize;
+    LPCWSTR     pwszExportFileName;
+    DWORD       dwSubjectChoice;
+    union {
+        PCCERT_CONTEXT pCertContext;
+        PCCTL_CONTEXT  pCTLContext;
+        PCCRL_CONTEXT  pCRLContext;
+    } DUMMYUNIONNAME;
+    DWORD       cStores;
+    HCERTSTORE *rghStores;
+} CRYPTUI_WIZ_EXPORT_INFO, *PCRYPTUI_WIZ_EXPORT_INFO;
+typedef const CRYPTUI_WIZ_EXPORT_INFO *PCCRYPTUI_WIZ_EXPORT_INFO;
+
+/* Values for CRYPTUI_WIZ_EXPORT_CERTCONTEXT_INFO's dwExportFormat */
+#define CRYPTUI_WIZ_EXPORT_FORMAT_DER                   1
+#define CRYPTUI_WIZ_EXPORT_FORMAT_PFX                   2
+#define CRYPTUI_WIZ_EXPORT_FORMAT_PKCS7                 3
+#define CRYPTUI_WIZ_EXPORT_FORMAT_BASE64                4
+#define CRYPTUI_WIZ_EXPORT_FORMAT_SERIALIZED_CERT_STORE 5
+
+typedef struct _CRYPTUI_WIZ_EXPORT_CERTCONTEXT_INFO
+{
+    DWORD   dwSize;
+    DWORD   dwExportFormat;
+    BOOL    fExportChain;
+    BOOL    fExportPrivateKeys;
+    LPCWSTR pwszPassword;
+    BOOL    fStrongEncryption;
+} CRYPTUI_WIZ_EXPORT_CERTCONTEXT_INFO, *PCRYPTUI_WIZ_EXPORT_CERTCONTEXT_INFO;
+typedef const CRYPTUI_WIZ_EXPORT_CERTCONTEXT_INFO *
+ PCCRYPTUI_WIZ_EXPORT_CERTCONTEXT_INFO;
+
+BOOL WINAPI CryptUIWizExport(DWORD dwFlags, HWND hwndParent,
+ LPCWSTR pwszWizardTitle, PCCRYPTUI_WIZ_EXPORT_INFO pExportInfo, void *pvoid);
+
+/* Values for CRYPTUI_WIZ_IMPORT_SRC_INFO's dwSubjectChoice */
+#define CRYPTUI_WIZ_IMPORT_SUBJECT_FILE         1
+#define CRYPTUI_WIZ_IMPORT_SUBJECT_CERT_CONTEXT 2
+#define CRYPTUI_WIZ_IMPORT_SUBJECT_CTL_CONTEXT  3
+#define CRYPTUI_WIZ_IMPORT_SUBJECT_CRL_CONTEXT  4
+#define CRYPTUI_WIZ_IMPORT_SUBJECT_CERT_STORE   5
+
+typedef struct _CRYPTUI_WIZ_IMPORT_SUBJECT_INFO
+{
+    DWORD   dwSize;
+    DWORD   dwSubjectChoice;
+    union {
+        LPCWSTR        pwszFileName;
+        PCCERT_CONTEXT pCertContext;
+        PCCTL_CONTEXT  pCTLContext;
+        PCCRL_CONTEXT  pCRLContext;
+        HCERTSTORE     hCertStore;
+    } DUMMYUNIONNAME;
+    DWORD   dwFlags;
+    LPCWSTR pwszPassword;
+} CRYPTUI_WIZ_IMPORT_SRC_INFO, *PCRYPTUI_WIZ_IMPORT_SRC_INFO;
+typedef const CRYPTUI_WIZ_IMPORT_SRC_INFO *PCCRYPTUI_WIZ_IMPORT_SRC_INFO;
+
+/* Values for CryptUIWizImport's dwFlags */
+#define CRYPTUI_WIZ_IMPORT_NO_CHANGE_DEST_STORE 0x00010000
+#define CRYPTUI_WIZ_IMPORT_ALLOW_CERT           0x00020000
+#define CRYPTUI_WIZ_IMPORT_ALLOW_CRL            0x00040000
+#define CRYPTUI_WIZ_IMPORT_ALLOW_CTL            0x00080000
+#define CRYPTUI_WIZ_IMPORT_TO_LOCALMACHINE      0x00100000
+#define CRYPTUI_WIZ_IMPORT_TO_CURRENTUSER       0x00200000
+#define CRYPTUI_WIZ_IMPORT_REMOTE_DEST_STORE    0x00400000
+
+BOOL WINAPI CryptUIWizImport(DWORD dwFlags, HWND hwndParent,
+ LPCWSTR pwszWizardTitle, PCCRYPTUI_WIZ_IMPORT_SRC_INFO pImportSrc,
+ HCERTSTORE hDestCertStore);
+
+#include <poppack.h>
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/custcntl.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/custcntl.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/custcntl.h	(revision 16410)
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2002 Gyorgy 'Nog' Jeney  
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _INC_CUSTCNTL
+#define _INC_CUSTCNTL
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Size defs */
+#define CCHCCCLASS 32
+#define CCHCCDESC 32
+#define CCHCCTEXT 256
+
+/* Custom Control Style Structure */
+typedef struct tagCCSYLEA {
+  DWORD flStyle;
+  DWORD flExtStyle;
+  char szText[CCHCCTEXT];
+  LANGID lgid;
+  WORD wReserved1;
+} CCSTYLEA, *LPCCSTYLEA;
+
+typedef struct tagCCSYLEW {
+  DWORD flStyle;
+  DWORD flExtStyle;
+  WCHAR szText[CCHCCTEXT];
+  LANGID lgid;
+  WORD wReserved1;
+} CCSTYLEW, *LPCCSTYLEW;
+
+#define CCSTYLE   WINELIB_NAME_AW(CCSTYLE)
+#define LPCCSTYLE WINELIB_NAME_AW(LPCCSTYLE)
+
+typedef BOOL (CALLBACK *LPFNCCSTYLEA)(HWND, LPCCSTYLEA);
+typedef BOOL (CALLBACK *LPFNCCSTYLEW)(HWND, LPCCSTYLEW);
+
+#define LPFNCCSTYLE WINELIB_NAME_AW(LPFNCCSTYLE)
+
+typedef int (CALLBACK *LPFNCCSIZETOTEXTA)(DWORD, DWORD, HFONT, LPSTR);
+typedef int (CALLBACK *LPFNCCSIZETOTEXTW)(DWORD, DWORD, HFONT, LPWSTR);
+
+#define LPFNCCSIZETOTEXT WINELIB_NAME_AW(LPFNCCSIZETOTEXT)
+
+/* Custom Control style flags structure */
+typedef struct tagCCSTYLEFLAGA {
+  DWORD flStyle;
+  DWORD flStyleMask;
+  LPSTR pszStyle;
+} CCSTYLEFLAGA, *LPCCSTYLEFLAGA;
+
+typedef struct tagCCSTYLEFLAGW {
+  DWORD flStyle;
+  DWORD flStyleMask;
+  LPWSTR pszStyle;
+} CCSTYLEFLAGW, *LPCCSTYLEFLAGW;
+
+#define CCSTYLEFLAG WINELIB_NAME_AW(CCSTYLEFLAG)
+
+/* Custom Control Flags */
+#define CCF_NOTEXT 0x00000001
+
+/* CustomControl info structure */
+typedef struct tagCCINFOA {
+  char szClass[CCHCCCLASS];
+  DWORD flOptions;
+  char szDesc[CCHCCDESC];
+  UINT cxDefault;
+  UINT cyDefault;
+  DWORD flStyleDefault;
+  DWORD flExtStyleDefault;
+  DWORD flCtrlTypeMask;
+  char szTextDefault[CCHCCTEXT];
+  int cStyleFlags;
+  LPCCSTYLEFLAGA aStyleFlags;
+  LPFNCCSTYLEA lpfnStyle;
+  LPFNCCSIZETOTEXTA lpfnSizeToText;
+  DWORD dwReserved1;
+  DWORD dwReserved2;
+} CCINFOA, *LPCCINFOA;
+
+typedef struct tagCCINFOW {
+  WCHAR szClass[CCHCCCLASS];
+  DWORD flOptions;
+  WCHAR szDesc[CCHCCDESC];
+  UINT cxDefault;
+  UINT cyDefault;
+  DWORD flStyleDefault;
+  DWORD flExtStyleDefault;
+  DWORD flCtrlTypeMask;
+  int cStyleFlags;
+  LPCCSTYLEFLAGW aStyleFlags;
+  WCHAR szTextDefault[CCHCCTEXT];
+  LPFNCCSTYLEW lpfnStyle;
+  LPFNCCSIZETOTEXTW lpfnSizeToText;
+  DWORD dwReserved1;
+  DWORD dwReserved2;
+} CCINFOW, *LPCCINFOW;
+
+DECL_WINELIB_TYPE_AW(CCINFO)
+DECL_WINELIB_TYPE_AW(LPCCINFO)
+
+typedef UINT (CALLBACK *LPFNCCINFOA)(LPCCINFOA);
+typedef UINT (CALLBACK *LPFNCCINFOW)(LPCCINFOW);
+
+DECL_WINELIB_TYPE_AW(LPFNCCINFO)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _INC_CUSTCNTL */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/cvconst.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/cvconst.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/cvconst.h	(revision 16410)
@@ -0,0 +1,561 @@
+/*
+ * File cvconst.h - MS debug information
+ *
+ * Copyright (C) 2004, Eric Pouech
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/* information in this file is highly derived from MSDN DIA information pages */
+
+/* symbols & types enumeration */
+enum SymTagEnum
+{
+   SymTagNull,
+   SymTagExe,
+   SymTagCompiland,
+   SymTagCompilandDetails,
+   SymTagCompilandEnv,
+   SymTagFunction,
+   SymTagBlock,
+   SymTagData,
+   SymTagAnnotation,
+   SymTagLabel,
+   SymTagPublicSymbol,
+   SymTagUDT,
+   SymTagEnum,
+   SymTagFunctionType,
+   SymTagPointerType,
+   SymTagArrayType,
+   SymTagBaseType,
+   SymTagTypedef, 
+   SymTagBaseClass,
+   SymTagFriend,
+   SymTagFunctionArgType, 
+   SymTagFuncDebugStart, 
+   SymTagFuncDebugEnd,
+   SymTagUsingNamespace, 
+   SymTagVTableShape,
+   SymTagVTable,
+   SymTagCustom,
+   SymTagThunk,
+   SymTagCustomType,
+   SymTagManagedType,
+   SymTagDimension,
+   SymTagMax
+};
+
+enum BasicType
+{
+    btNoType = 0,
+    btVoid = 1,
+    btChar = 2,
+    btWChar = 3,
+    btInt = 6,
+    btUInt = 7,
+    btFloat = 8,
+    btBCD = 9,
+    btBool = 10,
+    btLong = 13,
+    btULong = 14,
+    btCurrency = 25,
+    btDate = 26,
+    btVariant = 27,
+    btComplex = 28,
+    btBit = 29,
+    btBSTR = 30,
+    btHresult = 31,
+};
+
+/* kind of UDT */
+enum UdtKind
+{
+    UdtStruct,
+    UdtClass,
+    UdtUnion
+};
+
+/* where a SymTagData is */
+enum LocationType
+{
+    LocIsNull,
+    LocIsStatic,
+    LocIsTLS,
+    LocIsRegRel,
+    LocIsThisRel,
+    LocIsEnregistered,
+    LocIsBitField,
+    LocIsSlot,
+    LocIsIlRel,
+    LocInMetaData,
+    LocIsConstant
+};
+
+/* kind of SymTagData */
+enum DataKind
+{
+    DataIsUnknown,
+    DataIsLocal,
+    DataIsStaticLocal,
+    DataIsParam,
+    DataIsObjectPtr,
+    DataIsFileStatic,
+    DataIsGlobal,
+    DataIsMember,
+    DataIsStaticMember,
+    DataIsConstant
+};
+
+/* values for registers (on different CPUs) */
+enum CV_HREG_e
+{
+    /* those values are common to all supported CPUs (and CPU independent) */
+    CV_ALLREG_ERR       = 30000,
+    CV_ALLREG_TEB       = 30001,
+    CV_ALLREG_TIMER     = 30002,
+    CV_ALLREG_EFAD1     = 30003,
+    CV_ALLREG_EFAD2     = 30004,
+    CV_ALLREG_EFAD3     = 30005,
+    CV_ALLREG_VFRAME    = 30006,
+    CV_ALLREG_HANDLE    = 30007,
+    CV_ALLREG_PARAMS    = 30008,
+    CV_ALLREG_LOCALS    = 30009,
+
+    /* Intel x86 CPU */
+    CV_REG_NONE         = 0,
+    CV_REG_AL           = 1,
+    CV_REG_CL           = 2,
+    CV_REG_DL           = 3,
+    CV_REG_BL           = 4,
+    CV_REG_AH           = 5,
+    CV_REG_CH           = 6,
+    CV_REG_DH           = 7,
+    CV_REG_BH           = 8,
+    CV_REG_AX           = 9,
+    CV_REG_CX           = 10,
+    CV_REG_DX           = 11,
+    CV_REG_BX           = 12,
+    CV_REG_SP           = 13,
+    CV_REG_BP           = 14,
+    CV_REG_SI           = 15,
+    CV_REG_DI           = 16,
+    CV_REG_EAX          = 17,
+    CV_REG_ECX          = 18,
+    CV_REG_EDX          = 19,
+    CV_REG_EBX          = 20,
+    CV_REG_ESP          = 21,
+    CV_REG_EBP          = 22,
+    CV_REG_ESI          = 23,
+    CV_REG_EDI          = 24,
+    CV_REG_ES           = 25,
+    CV_REG_CS           = 26,
+    CV_REG_SS           = 27,
+    CV_REG_DS           = 28,
+    CV_REG_FS           = 29,
+    CV_REG_GS           = 30,
+    CV_REG_IP           = 31,
+    CV_REG_FLAGS        = 32,
+    CV_REG_EIP          = 33,
+    CV_REG_EFLAGS       = 34,
+
+    /* <pcode> */
+    CV_REG_TEMP         = 40,
+    CV_REG_TEMPH        = 41,
+    CV_REG_QUOTE        = 42,
+    CV_REG_PCDR3        = 43,   /* this includes PCDR4 to PCDR7 */
+    CV_REG_CR0          = 80,   /* this includes CR1 to CR4 */
+    CV_REG_DR0          = 90,   /* this includes DR1 to DR7 */
+    /* </pcode> */
+
+    CV_REG_GDTR         = 110,
+    CV_REG_GDTL         = 111,
+    CV_REG_IDTR         = 112,
+    CV_REG_IDTL         = 113,
+    CV_REG_LDTR         = 114,
+    CV_REG_TR           = 115,
+
+    CV_REG_PSEUDO1      = 116, /* this includes Pseudo02 to Pseudo09 */
+    CV_REG_ST0          = 128, /* this includes ST1 to ST7 */
+    CV_REG_CTRL         = 136,
+    CV_REG_STAT         = 137,
+    CV_REG_TAG          = 138,
+    CV_REG_FPIP         = 139,
+    CV_REG_FPCS         = 140,
+    CV_REG_FPDO         = 141,
+    CV_REG_FPDS         = 142,
+    CV_REG_ISEM         = 143,
+    CV_REG_FPEIP        = 144,
+    CV_REG_FPEDO        = 145,
+    CV_REG_MM0          = 146, /* this includes MM1 to MM7 */
+    CV_REG_XMM0         = 154, /* this includes XMM1 to XMM7 */
+    CV_REG_XMM00        = 162,
+    CV_REG_XMM0L        = 194, /* this includes XMM1L to XMM7L */
+    CV_REG_XMM0H        = 202, /* this includes XMM1H to XMM7H */
+    CV_REG_MXCSR        = 211,
+    CV_REG_EDXEAX       = 212,
+    CV_REG_EMM0L        = 220,
+    CV_REG_EMM0H        = 228,
+    CV_REG_MM00         = 236,
+    CV_REG_MM01         = 237,
+    CV_REG_MM10         = 238,
+    CV_REG_MM11         = 239,
+    CV_REG_MM20         = 240,
+    CV_REG_MM21         = 241,
+    CV_REG_MM30         = 242,
+    CV_REG_MM31         = 243,
+    CV_REG_MM40         = 244,
+    CV_REG_MM41         = 245,
+    CV_REG_MM50         = 246,
+    CV_REG_MM51         = 247,
+    CV_REG_MM60         = 248,
+    CV_REG_MM61         = 249,
+    CV_REG_MM70         = 250,
+    CV_REG_MM71         = 251,
+
+    /* Motorola 68K CPU */
+    CV_R68_D0           = 0, /* this includes D1 to D7 too */
+    CV_R68_A0           = 8, /* this includes A1 to A7 too */
+    CV_R68_CCR          = 16,
+    CV_R68_SR           = 17,
+    CV_R68_USP          = 18,
+    CV_R68_MSP          = 19,
+    CV_R68_SFC          = 20,
+    CV_R68_DFC          = 21,
+    CV_R68_CACR         = 22,
+    CV_R68_VBR          = 23,
+    CV_R68_CAAR         = 24,
+    CV_R68_ISP          = 25,
+    CV_R68_PC           = 26,
+    CV_R68_FPCR         = 28,
+    CV_R68_FPSR         = 29,
+    CV_R68_FPIAR        = 30,
+    CV_R68_FP0          = 32, /* this includes FP1 to FP7 */
+    CV_R68_MMUSR030     = 41,
+    CV_R68_MMUSR        = 42,
+    CV_R68_URP          = 43,
+    CV_R68_DTT0         = 44,
+    CV_R68_DTT1         = 45,
+    CV_R68_ITT0         = 46,
+    CV_R68_ITT1         = 47,
+    CV_R68_PSR          = 51,
+    CV_R68_PCSR         = 52,
+    CV_R68_VAL          = 53,
+    CV_R68_CRP          = 54,
+    CV_R68_SRP          = 55,
+    CV_R68_DRP          = 56,
+    CV_R68_TC           = 57,
+    CV_R68_AC           = 58,
+    CV_R68_SCC          = 59,
+    CV_R68_CAL          = 60,
+    CV_R68_TT0          = 61,
+    CV_R68_TT1          = 62,
+    CV_R68_BAD0         = 64, /* this includes BAD1 to BAD7 */
+    CV_R68_BAC0         = 72, /* this includes BAC1 to BAC7 */
+
+    /* MIPS 4000 CPU */
+    CV_M4_NOREG         = CV_REG_NONE,
+    CV_M4_IntZERO       = 10,
+    CV_M4_IntAT         = 11,
+    CV_M4_IntV0         = 12,
+    CV_M4_IntV1         = 13,
+    CV_M4_IntA0         = 14, /* this includes IntA1 to IntA3 */
+    CV_M4_IntT0         = 18, /* this includes IntT1 to IntT7 */
+    CV_M4_IntS0         = 26, /* this includes IntS1 to IntS7 */
+    CV_M4_IntT8         = 34,
+    CV_M4_IntT9         = 35,
+    CV_M4_IntKT0        = 36,
+    CV_M4_IntKT1        = 37,
+    CV_M4_IntGP         = 38,
+    CV_M4_IntSP         = 39,
+    CV_M4_IntS8         = 40,
+    CV_M4_IntRA         = 41,
+    CV_M4_IntLO         = 42,
+    CV_M4_IntHI         = 43,
+    CV_M4_Fir           = 50,
+    CV_M4_Psr           = 51,
+    CV_M4_FltF0         = 60, /* this includes FltF1 to Flt31 */
+    CV_M4_FltFsr        = 92,
+    
+    /* Alpha AXP CPU */
+    CV_ALPHA_NOREG      = CV_REG_NONE,
+    CV_ALPHA_FltF0      = 10, /* this includes FltF1 to FltF31 */
+    CV_ALPHA_IntV0      = 42,
+    CV_ALPHA_IntT0      = 43, /* this includes T1 to T7 */
+    CV_ALPHA_IntS0      = 51, /* this includes S1 to S5 */
+    CV_ALPHA_IntFP      = 57,
+    CV_ALPHA_IntA0      = 58, /* this includes A1 to A5 */
+    CV_ALPHA_IntT8      = 64,
+    CV_ALPHA_IntT9      = 65,
+    CV_ALPHA_IntT10     = 66,
+    CV_ALPHA_IntT11     = 67,
+    CV_ALPHA_IntRA      = 68,
+    CV_ALPHA_IntT12     = 69,
+    CV_ALPHA_IntAT      = 70,
+    CV_ALPHA_IntGP      = 71,
+    CV_ALPHA_IntSP      = 72,
+    CV_ALPHA_IntZERO    = 73,
+    CV_ALPHA_Fpcr       = 74,
+    CV_ALPHA_Fir        = 75,
+    CV_ALPHA_Psr        = 76,
+    CV_ALPHA_FltFsr     = 77,
+    CV_ALPHA_SoftFpcr   = 78,
+    
+    /* Motorola & IBM PowerPC CPU */
+    CV_PPC_GPR0         = 1, /* this includes GPR1 to GPR31 */
+    CV_PPC_CR           = 33,
+    CV_PPC_CR0          = 34, /* this includes CR1 to CR7 */
+    CV_PPC_FPR0         = 42, /* this includes FPR1 to FPR31 */
+
+    CV_PPC_FPSCR        = 74,
+    CV_PPC_MSR          = 75,
+    CV_PPC_SR0          = 76, /* this includes SR1 to SR15 */
+    /* some PPC registers missing */
+
+    /* Hitachi SH3 CPU */
+    CV_SH3_NOREG        = CV_REG_NONE,
+    CV_SH3_IntR0        = 10, /* this include R1 to R13 */
+    CV_SH3_IntFp        = 24,
+    CV_SH3_IntSp        = 25,
+    CV_SH3_Gbr          = 38,
+    CV_SH3_Pr           = 39,
+    CV_SH3_Mach         = 40,
+    CV_SH3_Macl         = 41,
+    CV_SH3_Pc           = 50,
+    CV_SH3_Sr           = 51,
+    CV_SH3_BarA         = 60,
+    CV_SH3_BasrA        = 61,
+    CV_SH3_BamrA        = 62,
+    CV_SH3_BbrA         = 63,
+    CV_SH3_BarB         = 64,
+    CV_SH3_BasrB        = 65,
+    CV_SH3_BamrB        = 66,
+    CV_SH3_BbrB         = 67,
+    CV_SH3_BdrB         = 68,
+    CV_SH3_BdmrB        = 69,
+    CV_SH3_Brcr         = 70,
+    CV_SH_Fpscr         = 75,
+    CV_SH_Fpul          = 76,
+    CV_SH_FpR0          = 80, /* this includes FpR1 to FpR15 */
+    CV_SH_XFpR0         = 96, /* this includes XFpR1 to XXFpR15 */
+
+    /* ARM CPU */
+    CV_ARM_NOREG        = CV_REG_NONE,
+    CV_ARM_R0           = 10, /* this includes R1 to R12 */
+    CV_ARM_SP           = 23,
+    CV_ARM_LR           = 24,
+    CV_ARM_PC           = 25,
+    CV_ARM_CPSR         = 26,
+    
+    /* Intel IA64 CPU */
+    CV_IA64_NOREG       = CV_REG_NONE,
+    CV_IA64_Br0         = 512, /* this includes Br1 to Br7 */
+    CV_IA64_P0          = 704, /* this includes P1 to P63 */
+    CV_IA64_Preds       = 768,
+    CV_IA64_IntH0       = 832, /* this includes H1 to H15 */
+    CV_IA64_Ip          = 1016,
+    CV_IA64_Umask       = 1017,
+    CV_IA64_Cfm         = 1018,
+    CV_IA64_Psr         = 1019,
+    CV_IA64_Nats        = 1020,
+    CV_IA64_Nats2       = 1021,
+    CV_IA64_Nats3       = 1022,
+    CV_IA64_IntR0       = 1024, /* this includes R1 to R127 */
+    CV_IA64_FltF0       = 2048, /* this includes FltF1 to FltF127 */
+    /* some IA64 registers missing */
+
+    /* TriCore CPU */
+    CV_TRI_NOREG        = CV_REG_NONE,
+    CV_TRI_D0           = 10, /* includes D1 to D15 */
+    CV_TRI_A0           = 26, /* includes A1 to A15 */
+    CV_TRI_E0           = 42,
+    CV_TRI_E2           = 43,
+    CV_TRI_E4           = 44,
+    CV_TRI_E6           = 45,
+    CV_TRI_E8           = 46,
+    CV_TRI_E10          = 47,
+    CV_TRI_E12          = 48,
+    CV_TRI_E14          = 49,
+    CV_TRI_EA0          = 50,
+    CV_TRI_EA2          = 51,
+    CV_TRI_EA4          = 52,
+    CV_TRI_EA6          = 53,
+    CV_TRI_EA8          = 54,
+    CV_TRI_EA10         = 55,
+    CV_TRI_EA12         = 56,
+    CV_TRI_EA14         = 57,
+    /* some TriCode registers missing */
+
+    /* AM33 (and the likes) CPU */
+    CV_AM33_NOREG       = CV_REG_NONE,
+    CV_AM33_E0          = 10, /* this includes E1 to E7 */
+    CV_AM33_A0          = 20, /* this includes A1 to A3 */
+    CV_AM33_D0          = 30, /* this includes D1 to D3 */
+    CV_AM33_FS0         = 40, /* this includes FS1 to FS31 */
+
+    /* Mitsubishi M32R CPU */
+    CV_M32R_NOREG       = CV_REG_NONE,
+    CV_M32R_R0          = 10, /* this includes R1 to R11 */
+    CV_M32R_R12         = 22,
+    CV_M32R_R13         = 23,
+    CV_M32R_R14         = 24,
+    CV_M32R_R15         = 25,
+    CV_M32R_PSW         = 26,
+    CV_M32R_CBR         = 27,
+    CV_M32R_SPI         = 28,
+    CV_M32R_SPU         = 29,
+    CV_M32R_SPO         = 30,
+    CV_M32R_BPC         = 31,
+    CV_M32R_ACHI        = 32,
+    CV_M32R_ACLO        = 33,
+    CV_M32R_PC          = 34,
+
+    /* AMD/Intel x86_64 CPU */
+    CV_AMD64_NONE       = CV_REG_NONE,
+    CV_AMD64_AL         = CV_REG_AL,
+    CV_AMD64_CL         = CV_REG_CL,
+    CV_AMD64_DL         = CV_REG_DL,
+    CV_AMD64_BL         = CV_REG_BL,
+    CV_AMD64_AH         = CV_REG_AH,
+    CV_AMD64_CH         = CV_REG_CH,
+    CV_AMD64_DH         = CV_REG_DH,
+    CV_AMD64_BH         = CV_REG_BH,
+    CV_AMD64_AX         = CV_REG_AX,
+    CV_AMD64_CX         = CV_REG_CX,
+    CV_AMD64_DX         = CV_REG_DX,
+    CV_AMD64_BX         = CV_REG_BX,
+    CV_AMD64_SP         = CV_REG_SP,
+    CV_AMD64_BP         = CV_REG_BP,
+    CV_AMD64_SI         = CV_REG_SI,
+    CV_AMD64_DI         = CV_REG_DI,
+    CV_AMD64_EAX        = CV_REG_EAX,
+    CV_AMD64_ECX        = CV_REG_ECX,
+    CV_AMD64_EDX        = CV_REG_EDX,
+    CV_AMD64_EBX        = CV_REG_EBX,
+    CV_AMD64_ESP        = CV_REG_ESP,
+    CV_AMD64_EBP        = CV_REG_EBP,
+    CV_AMD64_ESI        = CV_REG_ESI,
+    CV_AMD64_EDI        = CV_REG_EDI,
+    CV_AMD64_ES         = CV_REG_ES,
+    CV_AMD64_CS         = CV_REG_CS,
+    CV_AMD64_SS         = CV_REG_SS,
+    CV_AMD64_DS         = CV_REG_DS,
+    CV_AMD64_FS         = CV_REG_FS,
+    CV_AMD64_GS         = CV_REG_GS,
+    CV_AMD64_FLAGS      = CV_REG_FLAGS,
+    CV_AMD64_RIP        = CV_REG_EIP,
+    CV_AMD64_EFLAGS     = CV_REG_EFLAGS,
+
+    /* <pcode> */
+    CV_AMD64_TEMP       = CV_REG_TEMP,
+    CV_AMD64_TEMPH      = CV_REG_TEMPH,
+    CV_AMD64_QUOTE      = CV_REG_QUOTE,
+    CV_AMD64_PCDR3      = CV_REG_PCDR3, /* this includes PCDR4 to PCDR7 */
+    CV_AMD64_CR0        = CV_REG_CR0,   /* this includes CR1 to CR4 */
+    CV_AMD64_DR0        = CV_REG_DR0,   /* this includes DR1 to DR7 */
+    /* </pcode> */
+
+    CV_AMD64_GDTR       = CV_REG_GDTR,
+    CV_AMD64_GDTL       = CV_REG_GDTL,
+    CV_AMD64_IDTR       = CV_REG_IDTR,
+    CV_AMD64_IDTL       = CV_REG_IDTL,
+    CV_AMD64_LDTR       = CV_REG_LDTR,
+    CV_AMD64_TR         = CV_REG_TR,
+
+    CV_AMD64_PSEUDO1    = CV_REG_PSEUDO1, /* this includes Pseudo02 to Pseudo09 */
+    CV_AMD64_ST0        = CV_REG_ST0,     /* this includes ST1 to ST7 */
+    CV_AMD64_CTRL       = CV_REG_CTRL,
+    CV_AMD64_STAT       = CV_REG_STAT,
+    CV_AMD64_TAG        = CV_REG_TAG,
+    CV_AMD64_FPIP       = CV_REG_FPIP,
+    CV_AMD64_FPCS       = CV_REG_FPCS,
+    CV_AMD64_FPDO       = CV_REG_FPDO,
+    CV_AMD64_FPDS       = CV_REG_FPDS,
+    CV_AMD64_ISEM       = CV_REG_ISEM,
+    CV_AMD64_FPEIP      = CV_REG_FPEIP,
+    CV_AMD64_FPEDO      = CV_REG_FPEDO,
+    CV_AMD64_MM0        = CV_REG_MM0,     /* this includes MM1 to MM7 */
+    CV_AMD64_XMM0       = CV_REG_XMM0,    /* this includes XMM1 to XMM7 */
+    CV_AMD64_XMM00      = CV_REG_XMM00,
+    CV_AMD64_XMM0L      = CV_REG_XMM0L,   /* this includes XMM1L to XMM7L */
+    CV_AMD64_XMM0H      = CV_REG_XMM0H,   /* this includes XMM1H to XMM7H */
+    CV_AMD64_MXCSR      = CV_REG_MXCSR,
+    CV_AMD64_EDXEAX     = CV_REG_EDXEAX,
+    CV_AMD64_EMM0L      = CV_REG_EMM0L,
+    CV_AMD64_EMM0H      = CV_REG_EMM0H,
+    CV_AMD64_MM00       = CV_REG_MM00,
+    CV_AMD64_MM01       = CV_REG_MM01,
+    CV_AMD64_MM10       = CV_REG_MM10,
+    CV_AMD64_MM11       = CV_REG_MM11,
+    CV_AMD64_MM20       = CV_REG_MM20,
+    CV_AMD64_MM21       = CV_REG_MM21,
+    CV_AMD64_MM30       = CV_REG_MM30,
+    CV_AMD64_MM31       = CV_REG_MM31,
+    CV_AMD64_MM40       = CV_REG_MM40,
+    CV_AMD64_MM41       = CV_REG_MM41,
+    CV_AMD64_MM50       = CV_REG_MM50,
+    CV_AMD64_MM51       = CV_REG_MM51,
+    CV_AMD64_MM60       = CV_REG_MM60,
+    CV_AMD64_MM61       = CV_REG_MM61,
+    CV_AMD64_MM70       = CV_REG_MM70,
+    CV_AMD64_MM71       = CV_REG_MM71,
+
+    CV_AMD64_RAX        = 328,
+    CV_AMD64_RBX        = 329,
+    CV_AMD64_RCX        = 330,
+    CV_AMD64_RDX        = 331,
+    CV_AMD64_RSI        = 332,
+    CV_AMD64_RDI        = 333,
+    CV_AMD64_RBP        = 334,
+    CV_AMD64_RSP        = 335,
+
+    CV_AMD64_R8         = 336,
+    CV_AMD64_R9         = 337,
+    CV_AMD64_R10        = 338,
+    CV_AMD64_R11        = 339,
+    CV_AMD64_R12        = 340,
+    CV_AMD64_R13        = 341,
+    CV_AMD64_R14        = 342,
+    CV_AMD64_R15        = 343,
+};
+
+typedef enum
+{
+   THUNK_ORDINAL_NOTYPE,
+   THUNK_ORDINAL_ADJUSTOR,
+   THUNK_ORDINAL_VCALL,
+   THUNK_ORDINAL_PCODE,
+   THUNK_ORDINAL_LOAD 
+} THUNK_ORDINAL;
+
+typedef enum CV_call_e
+{
+    CV_CALL_NEAR_C,
+    CV_CALL_FAR_C,
+    CV_CALL_NEAR_PASCAL,
+    CV_CALL_FAR_PASCAL,
+    CV_CALL_NEAR_FAST,
+    CV_CALL_FAR_FAST,
+    CV_CALL_SKIPPED,
+    CV_CALL_NEAR_STD,
+    CV_CALL_FAR_STD,
+    CV_CALL_NEAR_SYS,
+    CV_CALL_FAR_SYS,
+    CV_CALL_THISCALL,
+    CV_CALL_MIPSCALL,
+    CV_CALL_GENERIC,
+    CV_CALL_ALPHACALL,
+    CV_CALL_PPCCALL,
+    CV_CALL_RESERVED,
+} CV_call_e;
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3d.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3d.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3d.h	(revision 16410)
@@ -0,0 +1,1530 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_D3D_H
+#define __WINE_D3D_H
+
+#include <stdlib.h>
+
+#define COM_NO_WINDOWS_H
+#include <objbase.h>
+#include <d3dtypes.h> /* must precede d3dcaps.h */
+#include <d3dcaps.h>
+
+/*****************************************************************************
+ * Predeclare the interfaces
+ */
+DEFINE_GUID(IID_IDirect3D,              0x3BBA0080,0x2421,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56);
+DEFINE_GUID(IID_IDirect3D2,             0x6aae1ec1,0x662a,0x11d0,0x88,0x9d,0x00,0xaa,0x00,0xbb,0xb7,0x6a);
+DEFINE_GUID(IID_IDirect3D3,             0xbb223240,0xe72b,0x11d0,0xa9,0xb4,0x00,0xaa,0x00,0xc0,0x99,0x3e);
+DEFINE_GUID(IID_IDirect3D7,             0xf5049e77,0x4861,0x11d2,0xa4,0x07,0x00,0xa0,0xc9,0x06,0x29,0xa8);
+
+DEFINE_GUID(IID_IDirect3DRampDevice,	0xF2086B20,0x259F,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56);
+DEFINE_GUID(IID_IDirect3DRGBDevice,	0xA4665C60,0x2673,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56);
+DEFINE_GUID(IID_IDirect3DHALDevice,	0x84E63dE0,0x46AA,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E);
+DEFINE_GUID(IID_IDirect3DMMXDevice,	0x881949a1,0xd6f3,0x11d0,0x89,0xab,0x00,0xa0,0xc9,0x05,0x41,0x29);
+DEFINE_GUID(IID_IDirect3DRefDevice,     0x50936643,0x13e9,0x11d1,0x89,0xaa,0x00,0xa0,0xc9,0x05,0x41,0x29);
+DEFINE_GUID(IID_IDirect3DTnLHalDevice,  0xf5049e78,0x4861,0x11d2,0xa4,0x07,0x00,0xa0,0xc9,0x06,0x29,0xa8);
+DEFINE_GUID(IID_IDirect3DNullDevice,    0x8767df22,0xbacc,0x11d1,0x89,0x69,0x00,0xa0,0xc9,0x06,0x29,0xa8);
+
+DEFINE_GUID(IID_IDirect3DDevice,	0x64108800,0x957d,0x11D0,0x89,0xAB,0x00,0xA0,0xC9,0x05,0x41,0x29);
+DEFINE_GUID(IID_IDirect3DDevice2,	0x93281501,0x8CF8,0x11D0,0x89,0xAB,0x00,0xA0,0xC9,0x05,0x41,0x29);
+DEFINE_GUID(IID_IDirect3DDevice3,       0xb0ab3b60,0x33d7,0x11d1,0xa9,0x81,0x00,0xc0,0x4f,0xd7,0xb1,0x74);
+DEFINE_GUID(IID_IDirect3DDevice7,       0xf5049e79,0x4861,0x11d2,0xa4,0x07,0x00,0xa0,0xc9,0x06,0x29,0xa8);
+
+DEFINE_GUID(IID_IDirect3DTexture,	0x2CDCD9E0,0x25A0,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56);
+DEFINE_GUID(IID_IDirect3DTexture2,	0x93281502,0x8CF8,0x11D0,0x89,0xAB,0x00,0xA0,0xC9,0x05,0x41,0x29);
+
+DEFINE_GUID(IID_IDirect3DLight,		0x4417C142,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E);
+
+DEFINE_GUID(IID_IDirect3DMaterial,	0x4417C144,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E);
+DEFINE_GUID(IID_IDirect3DMaterial2,	0x93281503,0x8CF8,0x11D0,0x89,0xAB,0x00,0xA0,0xC9,0x05,0x41,0x29);
+DEFINE_GUID(IID_IDirect3DMaterial3,     0xca9c46f4,0xd3c5,0x11d1,0xb7,0x5a,0x00,0x60,0x08,0x52,0xb3,0x12);
+
+DEFINE_GUID(IID_IDirect3DExecuteBuffer,	0x4417C145,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E);
+
+DEFINE_GUID(IID_IDirect3DViewport,	0x4417C146,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E);
+DEFINE_GUID(IID_IDirect3DViewport2,	0x93281500,0x8CF8,0x11D0,0x89,0xAB,0x00,0xA0,0xC9,0x05,0x41,0x29);
+DEFINE_GUID(IID_IDirect3DViewport3,     0xb0ab3b61,0x33d7,0x11d1,0xa9,0x81,0x00,0xc0,0x4f,0xd7,0xb1,0x74);
+
+DEFINE_GUID(IID_IDirect3DVertexBuffer,  0x7a503555,0x4a83,0x11d1,0xa5,0xdb,0x00,0xa0,0xc9,0x03,0x67,0xf8);
+DEFINE_GUID(IID_IDirect3DVertexBuffer7, 0xf5049e7d,0x4861,0x11d2,0xa4,0x07,0x00,0xa0,0xc9,0x06,0x29,0xa8);
+
+
+typedef struct IDirect3D *LPDIRECT3D;
+typedef struct IDirect3D2 *LPDIRECT3D2;
+typedef struct IDirect3D3 *LPDIRECT3D3;
+typedef struct IDirect3D7 *LPDIRECT3D7;
+
+typedef struct IDirect3DLight *LPDIRECT3DLIGHT;
+
+typedef struct IDirect3DDevice *LPDIRECT3DDEVICE;
+typedef struct IDirect3DDevice2 *LPDIRECT3DDEVICE2;
+typedef struct IDirect3DDevice3 *LPDIRECT3DDEVICE3;
+typedef struct IDirect3DDevice7 *LPDIRECT3DDEVICE7;
+
+typedef struct IDirect3DViewport *LPDIRECT3DVIEWPORT;
+typedef struct IDirect3DViewport2 *LPDIRECT3DVIEWPORT2;
+typedef struct IDirect3DViewport3 *LPDIRECT3DVIEWPORT3;
+
+typedef struct IDirect3DMaterial *LPDIRECT3DMATERIAL;
+typedef struct IDirect3DMaterial2 *LPDIRECT3DMATERIAL2;
+typedef struct IDirect3DMaterial3 *LPDIRECT3DMATERIAL3;
+
+typedef struct IDirect3DTexture *LPDIRECT3DTEXTURE;
+typedef struct IDirect3DTexture2 *LPDIRECT3DTEXTURE2;
+
+typedef struct IDirect3DExecuteBuffer *LPDIRECT3DEXECUTEBUFFER;
+
+typedef struct IDirect3DVertexBuffer *LPDIRECT3DVERTEXBUFFER;
+typedef struct IDirect3DVertexBuffer7 *LPDIRECT3DVERTEXBUFFER7;
+
+/* ********************************************************************
+   Error Codes
+   ******************************************************************** */
+#define D3D_OK                          DD_OK
+#define D3DERR_BADMAJORVERSION          MAKE_DDHRESULT(700)
+#define D3DERR_BADMINORVERSION          MAKE_DDHRESULT(701)
+#define D3DERR_INVALID_DEVICE           MAKE_DDHRESULT(705)
+#define D3DERR_INITFAILED               MAKE_DDHRESULT(706)
+#define D3DERR_DEVICEAGGREGATED         MAKE_DDHRESULT(707)
+#define D3DERR_EXECUTE_CREATE_FAILED    MAKE_DDHRESULT(710)
+#define D3DERR_EXECUTE_DESTROY_FAILED   MAKE_DDHRESULT(711)
+#define D3DERR_EXECUTE_LOCK_FAILED      MAKE_DDHRESULT(712)
+#define D3DERR_EXECUTE_UNLOCK_FAILED    MAKE_DDHRESULT(713)
+#define D3DERR_EXECUTE_LOCKED           MAKE_DDHRESULT(714)
+#define D3DERR_EXECUTE_NOT_LOCKED       MAKE_DDHRESULT(715)
+#define D3DERR_EXECUTE_FAILED           MAKE_DDHRESULT(716)
+#define D3DERR_EXECUTE_CLIPPED_FAILED   MAKE_DDHRESULT(717)
+#define D3DERR_TEXTURE_NO_SUPPORT       MAKE_DDHRESULT(720)
+#define D3DERR_TEXTURE_CREATE_FAILED    MAKE_DDHRESULT(721)
+#define D3DERR_TEXTURE_DESTROY_FAILED   MAKE_DDHRESULT(722)
+#define D3DERR_TEXTURE_LOCK_FAILED      MAKE_DDHRESULT(723)
+#define D3DERR_TEXTURE_UNLOCK_FAILED    MAKE_DDHRESULT(724)
+#define D3DERR_TEXTURE_LOAD_FAILED      MAKE_DDHRESULT(725)
+#define D3DERR_TEXTURE_SWAP_FAILED      MAKE_DDHRESULT(726)
+#define D3DERR_TEXTURE_LOCKED           MAKE_DDHRESULT(727)
+#define D3DERR_TEXTURE_NOT_LOCKED       MAKE_DDHRESULT(728)
+#define D3DERR_TEXTURE_GETSURF_FAILED   MAKE_DDHRESULT(729)
+#define D3DERR_MATRIX_CREATE_FAILED     MAKE_DDHRESULT(730)
+#define D3DERR_MATRIX_DESTROY_FAILED    MAKE_DDHRESULT(731)
+#define D3DERR_MATRIX_SETDATA_FAILED    MAKE_DDHRESULT(732)
+#define D3DERR_MATRIX_GETDATA_FAILED    MAKE_DDHRESULT(733)
+#define D3DERR_SETVIEWPORTDATA_FAILED   MAKE_DDHRESULT(734)
+#define D3DERR_INVALIDCURRENTVIEWPORT   MAKE_DDHRESULT(735)
+#define D3DERR_INVALIDPRIMITIVETYPE     MAKE_DDHRESULT(736)
+#define D3DERR_INVALIDVERTEXTYPE        MAKE_DDHRESULT(737)
+#define D3DERR_TEXTURE_BADSIZE          MAKE_DDHRESULT(738)
+#define D3DERR_INVALIDRAMPTEXTURE       MAKE_DDHRESULT(739)
+#define D3DERR_MATERIAL_CREATE_FAILED   MAKE_DDHRESULT(740)
+#define D3DERR_MATERIAL_DESTROY_FAILED  MAKE_DDHRESULT(741)
+#define D3DERR_MATERIAL_SETDATA_FAILED  MAKE_DDHRESULT(742)
+#define D3DERR_MATERIAL_GETDATA_FAILED  MAKE_DDHRESULT(743)
+#define D3DERR_INVALIDPALETTE           MAKE_DDHRESULT(744)
+#define D3DERR_ZBUFF_NEEDS_SYSTEMMEMORY MAKE_DDHRESULT(745)
+#define D3DERR_ZBUFF_NEEDS_VIDEOMEMORY  MAKE_DDHRESULT(746)
+#define D3DERR_SURFACENOTINVIDMEM       MAKE_DDHRESULT(747)
+#define D3DERR_LIGHT_SET_FAILED         MAKE_DDHRESULT(750)
+#define D3DERR_LIGHTHASVIEWPORT         MAKE_DDHRESULT(751)
+#define D3DERR_LIGHTNOTINTHISVIEWPORT   MAKE_DDHRESULT(752)
+#define D3DERR_SCENE_IN_SCENE           MAKE_DDHRESULT(760)
+#define D3DERR_SCENE_NOT_IN_SCENE       MAKE_DDHRESULT(761)
+#define D3DERR_SCENE_BEGIN_FAILED       MAKE_DDHRESULT(762)
+#define D3DERR_SCENE_END_FAILED         MAKE_DDHRESULT(763)
+#define D3DERR_INBEGIN                  MAKE_DDHRESULT(770)
+#define D3DERR_NOTINBEGIN               MAKE_DDHRESULT(771)
+#define D3DERR_NOVIEWPORTS              MAKE_DDHRESULT(772)
+#define D3DERR_VIEWPORTDATANOTSET       MAKE_DDHRESULT(773)
+#define D3DERR_VIEWPORTHASNODEVICE      MAKE_DDHRESULT(774)
+#define D3DERR_NOCURRENTVIEWPORT        MAKE_DDHRESULT(775)
+#define D3DERR_INVALIDVERTEXFORMAT	MAKE_DDHRESULT(2048)
+#define D3DERR_COLORKEYATTACHED         MAKE_DDHRESULT(2050)
+#define D3DERR_VERTEXBUFFEROPTIMIZED	MAKE_DDHRESULT(2060)
+#define D3DERR_VBUF_CREATE_FAILED	MAKE_DDHRESULT(2061)
+#define D3DERR_VERTEXBUFFERLOCKED	MAKE_DDHRESULT(2062)
+#define D3DERR_VERTEXBUFFERUNLOCKFAILED	MAKE_DDHRESULT(2063)
+#define D3DERR_ZBUFFER_NOTPRESENT	MAKE_DDHRESULT(2070)
+#define D3DERR_STENCILBUFFER_NOTPRESENT	MAKE_DDHRESULT(2071)
+
+#define D3DERR_WRONGTEXTUREFORMAT		MAKE_DDHRESULT(2072)
+#define D3DERR_UNSUPPORTEDCOLOROPERATION	MAKE_DDHRESULT(2073)
+#define D3DERR_UNSUPPORTEDCOLORARG		MAKE_DDHRESULT(2074)
+#define D3DERR_UNSUPPORTEDALPHAOPERATION	MAKE_DDHRESULT(2075)
+#define D3DERR_UNSUPPORTEDALPHAARG		MAKE_DDHRESULT(2076)
+#define D3DERR_TOOMANYOPERATIONS		MAKE_DDHRESULT(2077)
+#define D3DERR_CONFLICTINGTEXTUREFILTER		MAKE_DDHRESULT(2078)
+#define D3DERR_UNSUPPORTEDFACTORVALUE		MAKE_DDHRESULT(2079)
+#define D3DERR_CONFLICTINGRENDERSTATE		MAKE_DDHRESULT(2081)
+#define D3DERR_UNSUPPORTEDTEXTUREFILTER		MAKE_DDHRESULT(2082)
+#define D3DERR_TOOMANYPRIMITIVES		MAKE_DDHRESULT(2083)
+#define D3DERR_INVALIDMATRIX			MAKE_DDHRESULT(2084)
+#define D3DERR_TOOMANYVERTICES			MAKE_DDHRESULT(2085)
+#define D3DERR_CONFLICTINGTEXTUREPALETTE	MAKE_DDHRESULT(2086)
+
+#define D3DERR_INVALIDSTATEBLOCK	MAKE_DDHRESULT(2100)
+#define D3DERR_INBEGINSTATEBLOCK	MAKE_DDHRESULT(2101)
+#define D3DERR_NOTINBEGINSTATEBLOCK	MAKE_DDHRESULT(2102)
+
+/* ********************************************************************
+   Enums
+   ******************************************************************** */
+#define D3DNEXT_NEXT 0x01l
+#define D3DNEXT_HEAD 0x02l
+#define D3DNEXT_TAIL 0x04l
+
+#define D3DDP_WAIT               0x00000001l
+#define D3DDP_OUTOFORDER         0x00000002l
+#define D3DDP_DONOTCLIP          0x00000004l
+#define D3DDP_DONOTUPDATEEXTENTS 0x00000008l
+#define D3DDP_DONOTLIGHT         0x00000010l
+
+/* ********************************************************************
+   Types and structures
+   ******************************************************************** */
+typedef DWORD D3DVIEWPORTHANDLE, *LPD3DVIEWPORTHANDLE;
+
+
+/*****************************************************************************
+ * IDirect3D interface
+ */
+#define INTERFACE IDirect3D
+DECLARE_INTERFACE_(IDirect3D,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3D methods ***/
+    STDMETHOD(Initialize)(THIS_ REFIID riid) PURE;
+    STDMETHOD(EnumDevices)(THIS_ LPD3DENUMDEVICESCALLBACK lpEnumDevicesCallback, LPVOID lpUserArg) PURE;
+    STDMETHOD(CreateLight)(THIS_ LPDIRECT3DLIGHT *lplpDirect3DLight, IUnknown *pUnkOuter) PURE;
+    STDMETHOD(CreateMaterial)(THIS_ LPDIRECT3DMATERIAL *lplpDirect3DMaterial, IUnknown *pUnkOuter) PURE;
+    STDMETHOD(CreateViewport)(THIS_ LPDIRECT3DVIEWPORT *lplpD3DViewport, IUnknown *pUnkOuter) PURE;
+    STDMETHOD(FindDevice)(THIS_ LPD3DFINDDEVICESEARCH lpD3DDFS, LPD3DFINDDEVICERESULT lplpD3DDevice) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3D_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3D_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirect3D_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirect3D methods ***/
+#define IDirect3D_Initialize(p,a)       (p)->lpVtbl->Initialize(p,a)
+#define IDirect3D_EnumDevices(p,a,b)    (p)->lpVtbl->EnumDevices(p,a,b)
+#define IDirect3D_CreateLight(p,a,b)    (p)->lpVtbl->CreateLight(p,a,b)
+#define IDirect3D_CreateMaterial(p,a,b) (p)->lpVtbl->CreateMaterial(p,a,b)
+#define IDirect3D_CreateViewport(p,a,b) (p)->lpVtbl->CreateViewport(p,a,b)
+#define IDirect3D_FindDevice(p,a,b)     (p)->lpVtbl->FindDevice(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirect3D_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3D_AddRef(p)             (p)->AddRef()
+#define IDirect3D_Release(p)            (p)->Release()
+/*** IDirect3D methods ***/
+#define IDirect3D_Initialize(p,a)       (p)->Initialize(a)
+#define IDirect3D_EnumDevices(p,a,b)    (p)->EnumDevices(a,b)
+#define IDirect3D_CreateLight(p,a,b)    (p)->CreateLight(a,b)
+#define IDirect3D_CreateMaterial(p,a,b) (p)->CreateMaterial(a,b)
+#define IDirect3D_CreateViewport(p,a,b) (p)->CreateViewport(a,b)
+#define IDirect3D_FindDevice(p,a,b)     (p)->FindDevice(a,b)
+#endif
+
+
+/*****************************************************************************
+ * IDirect3D2 interface
+ */
+#define INTERFACE IDirect3D2
+DECLARE_INTERFACE_(IDirect3D2,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3D2 methods ***/
+    STDMETHOD(EnumDevices)(THIS_ LPD3DENUMDEVICESCALLBACK lpEnumDevicesCallback, LPVOID lpUserArg) PURE;
+    STDMETHOD(CreateLight)(THIS_ LPDIRECT3DLIGHT *lplpDirect3DLight, IUnknown *pUnkOuter) PURE;
+    STDMETHOD(CreateMaterial)(THIS_ LPDIRECT3DMATERIAL2 *lplpDirect3DMaterial2, IUnknown *pUnkOuter) PURE;
+    STDMETHOD(CreateViewport)(THIS_ LPDIRECT3DVIEWPORT2 *lplpD3DViewport2, IUnknown *pUnkOuter) PURE;
+    STDMETHOD(FindDevice)(THIS_ LPD3DFINDDEVICESEARCH lpD3DDFS, LPD3DFINDDEVICERESULT lpD3DFDR) PURE;
+    STDMETHOD(CreateDevice)(THIS_ REFCLSID rclsid, LPDIRECTDRAWSURFACE lpDDS, LPDIRECT3DDEVICE2 *lplpD3DDevice2) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3D2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3D2_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirect3D2_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirect3D2 methods ***/
+#define IDirect3D2_EnumDevices(p,a,b)    (p)->lpVtbl->EnumDevices(p,a,b)
+#define IDirect3D2_CreateLight(p,a,b)    (p)->lpVtbl->CreateLight(p,a,b)
+#define IDirect3D2_CreateMaterial(p,a,b) (p)->lpVtbl->CreateMaterial(p,a,b)
+#define IDirect3D2_CreateViewport(p,a,b) (p)->lpVtbl->CreateViewport(p,a,b)
+#define IDirect3D2_FindDevice(p,a,b)     (p)->lpVtbl->FindDevice(p,a,b)
+#define IDirect3D2_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c)
+#else
+/*** IUnknown methods ***/
+#define IDirect3D2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3D2_AddRef(p)             (p)->AddRef()
+#define IDirect3D2_Release(p)            (p)->Release()
+/*** IDirect3D2 methods ***/
+#define IDirect3D2_EnumDevices(p,a,b)    (p)->EnumDevices(a,b)
+#define IDirect3D2_CreateLight(p,a,b)    (p)->CreateLight(a,b)
+#define IDirect3D2_CreateMaterial(p,a,b) (p)->CreateMaterial(a,b)
+#define IDirect3D2_CreateViewport(p,a,b) (p)->CreateViewport(a,b)
+#define IDirect3D2_FindDevice(p,a,b)     (p)->FindDevice(a,b)
+#define IDirect3D2_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c)
+#endif
+
+
+/*****************************************************************************
+ * IDirect3D3 interface
+ */
+#define INTERFACE IDirect3D3
+DECLARE_INTERFACE_(IDirect3D3,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3D3 methods ***/
+    STDMETHOD(EnumDevices)(THIS_ LPD3DENUMDEVICESCALLBACK lpEnumDevicesCallback, LPVOID lpUserArg) PURE;
+    STDMETHOD(CreateLight)(THIS_ LPDIRECT3DLIGHT *lplpDirect3DLight, IUnknown *pUnkOuter) PURE;
+    STDMETHOD(CreateMaterial)(THIS_ LPDIRECT3DMATERIAL3 *lplpDirect3DMaterial3, IUnknown *pUnkOuter) PURE;
+    STDMETHOD(CreateViewport)(THIS_ LPDIRECT3DVIEWPORT3 *lplpD3DViewport3, IUnknown *pUnkOuter) PURE;
+    STDMETHOD(FindDevice)(THIS_ LPD3DFINDDEVICESEARCH lpD3DDFS, LPD3DFINDDEVICERESULT lpD3DFDR) PURE;
+    STDMETHOD(CreateDevice)(THIS_ REFCLSID rclsid,LPDIRECTDRAWSURFACE4 lpDDS, LPDIRECT3DDEVICE3 *lplpD3DDevice3,LPUNKNOWN lpUnk) PURE;
+    STDMETHOD(CreateVertexBuffer)(THIS_ LPD3DVERTEXBUFFERDESC lpD3DVertBufDesc,LPDIRECT3DVERTEXBUFFER *lplpD3DVertBuf,DWORD dwFlags,LPUNKNOWN lpUnk) PURE;
+    STDMETHOD(EnumZBufferFormats)(THIS_ REFCLSID riidDevice,LPD3DENUMPIXELFORMATSCALLBACK lpEnumCallback,LPVOID lpContext) PURE;
+    STDMETHOD(EvictManagedTextures)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3D3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3D3_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirect3D3_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirect3D3 methods ***/
+#define IDirect3D3_EnumDevices(p,a,b)            (p)->lpVtbl->EnumDevices(p,a,b)
+#define IDirect3D3_CreateLight(p,a,b)            (p)->lpVtbl->CreateLight(p,a,b)
+#define IDirect3D3_CreateMaterial(p,a,b)         (p)->lpVtbl->CreateMaterial(p,a,b)
+#define IDirect3D3_CreateViewport(p,a,b)         (p)->lpVtbl->CreateViewport(p,a,b)
+#define IDirect3D3_FindDevice(p,a,b)             (p)->lpVtbl->FindDevice(p,a,b)
+#define IDirect3D3_CreateDevice(p,a,b,c,d)       (p)->lpVtbl->CreateDevice(p,a,b,c,d)
+#define IDirect3D3_CreateVertexBuffer(p,a,b,c,d) (p)->lpVtbl->CreateVertexBuffer(p,a,b,c,d)
+#define IDirect3D3_EnumZBufferFormats(p,a,b,c)   (p)->lpVtbl->EnumZBufferFormats(p,a,b,c)
+#define IDirect3D3_EvictManagedTextures(p)       (p)->lpVtbl->EvictManagedTextures(p)
+#else
+/*** IUnknown methods ***/
+#define IDirect3D3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3D3_AddRef(p)             (p)->AddRef()
+#define IDirect3D3_Release(p)            (p)->Release()
+/*** IDirect3D3 methods ***/
+#define IDirect3D3_EnumDevices(p,a,b)            (p)->EnumDevices(a,b)
+#define IDirect3D3_CreateLight(p,a,b)            (p)->CreateLight(a,b)
+#define IDirect3D3_CreateMaterial(p,a,b)         (p)->CreateMaterial(a,b)
+#define IDirect3D3_CreateViewport(p,a,b)         (p)->CreateViewport(a,b)
+#define IDirect3D3_FindDevice(p,a,b)             (p)->FindDevice(a,b)
+#define IDirect3D3_CreateDevice(p,a,b,c,d)       (p)->CreateDevice(a,b,c,d)
+#define IDirect3D3_CreateVertexBuffer(p,a,b,c,d) (p)->CreateVertexBuffer(a,b,c,d)
+#define IDirect3D3_EnumZBufferFormats(p,a,b,c)   (p)->EnumZBufferFormats(a,b,c)
+#define IDirect3D3_EvictManagedTextures(p)       (p)->EvictManagedTextures()
+#endif
+
+/*****************************************************************************
+ * IDirect3D7 interface
+ */
+#define INTERFACE IDirect3D7
+DECLARE_INTERFACE_(IDirect3D7,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3D7 methods ***/
+    STDMETHOD(EnumDevices)(THIS_ LPD3DENUMDEVICESCALLBACK7 lpEnumDevicesCallback, LPVOID lpUserArg) PURE;
+    STDMETHOD(CreateDevice)(THIS_ REFCLSID rclsid,LPDIRECTDRAWSURFACE7 lpDDS, LPDIRECT3DDEVICE7 *lplpD3DDevice) PURE;
+    STDMETHOD(CreateVertexBuffer)(THIS_ LPD3DVERTEXBUFFERDESC lpD3DVertBufDesc,LPDIRECT3DVERTEXBUFFER7 *lplpD3DVertBuf,DWORD dwFlags) PURE;
+    STDMETHOD(EnumZBufferFormats)(THIS_ REFCLSID riidDevice,LPD3DENUMPIXELFORMATSCALLBACK lpEnumCallback,LPVOID lpContext) PURE;
+    STDMETHOD(EvictManagedTextures)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3D7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3D7_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirect3D7_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirect3D3 methods ***/
+#define IDirect3D7_EnumDevices(p,a,b)            (p)->lpVtbl->EnumDevices(p,a,b)
+#define IDirect3D7_CreateDevice(p,a,b,c)         (p)->lpVtbl->CreateDevice(p,a,b,c)
+#define IDirect3D7_CreateVertexBuffer(p,a,b,c)   (p)->lpVtbl->CreateVertexBuffer(p,a,b,c)
+#define IDirect3D7_EnumZBufferFormats(p,a,b,c)   (p)->lpVtbl->EnumZBufferFormats(p,a,b,c)
+#define IDirect3D7_EvictManagedTextures(p)       (p)->lpVtbl->EvictManagedTextures(p)
+#else
+/*** IUnknown methods ***/
+#define IDirect3D7_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3D7_AddRef(p)             (p)->AddRef()
+#define IDirect3D7_Release(p)            (p)->Release()
+/*** IDirect3D3 methods ***/
+#define IDirect3D7_EnumDevices(p,a,b)            (p)->EnumDevices(a,b)
+#define IDirect3D7_CreateDevice(p,a,b,c)         (p)->CreateDevice(a,b,c)
+#define IDirect3D7_CreateVertexBuffer(p,a,b,c)   (p)->CreateVertexBuffer(a,b,c)
+#define IDirect3D7_EnumZBufferFormats(p,a,b,c)   (p)->EnumZBufferFormats(a,b,c)
+#define IDirect3D7_EvictManagedTextures(p)       (p)->EvictManagedTextures()
+#endif
+
+
+/*****************************************************************************
+ * IDirect3DLight interface
+ */
+#define INTERFACE IDirect3DLight
+DECLARE_INTERFACE_(IDirect3DLight,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DLight methods ***/
+    STDMETHOD(Initialize)(THIS_ LPDIRECT3D lpDirect3D) PURE;
+    STDMETHOD(SetLight)(THIS_ LPD3DLIGHT lpLight) PURE;
+    STDMETHOD(GetLight)(THIS_ LPD3DLIGHT lpLight) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DLight_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DLight_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirect3DLight_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirect3DLight methods ***/
+#define IDirect3DLight_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
+#define IDirect3DLight_SetLight(p,a)   (p)->lpVtbl->SetLight(p,a)
+#define IDirect3DLight_GetLight(p,a)   (p)->lpVtbl->GetLight(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DLight_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DLight_AddRef(p)             (p)->AddRef()
+#define IDirect3DLight_Release(p)            (p)->Release()
+/*** IDirect3DLight methods ***/
+#define IDirect3DLight_Initialize(p,a) (p)->Initialize(a)
+#define IDirect3DLight_SetLight(p,a)   (p)->SetLight(a)
+#define IDirect3DLight_GetLight(p,a)   (p)->GetLight(a)
+#endif
+
+
+/*****************************************************************************
+ * IDirect3DMaterial interface
+ */
+#define INTERFACE IDirect3DMaterial
+DECLARE_INTERFACE_(IDirect3DMaterial,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DMaterial methods ***/
+    STDMETHOD(Initialize)(THIS_ LPDIRECT3D lpDirect3D) PURE;
+    STDMETHOD(SetMaterial)(THIS_ LPD3DMATERIAL lpMat) PURE;
+    STDMETHOD(GetMaterial)(THIS_ LPD3DMATERIAL lpMat) PURE;
+    STDMETHOD(GetHandle)(THIS_ LPDIRECT3DDEVICE lpDirect3DDevice, LPD3DMATERIALHANDLE lpHandle) PURE;
+    STDMETHOD(Reserve)(THIS) PURE;
+    STDMETHOD(Unreserve)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DMaterial_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DMaterial_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirect3DMaterial_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirect3DMaterial methods ***/
+#define IDirect3DMaterial_Initialize(p,a)  (p)->lpVtbl->Initialize(p,a)
+#define IDirect3DMaterial_SetMaterial(p,a) (p)->lpVtbl->SetMaterial(p,a)
+#define IDirect3DMaterial_GetMaterial(p,a) (p)->lpVtbl->GetMaterial(p,a)
+#define IDirect3DMaterial_GetHandle(p,a,b) (p)->lpVtbl->GetHandle(p,a,b)
+#define IDirect3DMaterial_Reserve(p)       (p)->lpVtbl->Reserve(p)
+#define IDirect3DMaterial_Unreserve(p)     (p)->lpVtbl->Unreserve(p)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DMaterial_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DMaterial_AddRef(p)             (p)->AddRef()
+#define IDirect3DMaterial_Release(p)            (p)->Release()
+/*** IDirect3DMaterial methods ***/
+#define IDirect3DMaterial_Initialize(p,a)  (p)->Initialize(a)
+#define IDirect3DMaterial_SetMaterial(p,a) (p)->SetMaterial(a)
+#define IDirect3DMaterial_GetMaterial(p,a) (p)->GetMaterial(a)
+#define IDirect3DMaterial_GetHandle(p,a,b) (p)->GetHandle(a,b)
+#define IDirect3DMaterial_Reserve(p)       (p)->Reserve()
+#define IDirect3DMaterial_Unreserve(p)     (p)->Unreserve()
+#endif
+
+
+/*****************************************************************************
+ * IDirect3DMaterial2 interface
+ */
+#define INTERFACE IDirect3DMaterial2
+DECLARE_INTERFACE_(IDirect3DMaterial2,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DMaterial2 methods ***/
+    STDMETHOD(SetMaterial)(THIS_ LPD3DMATERIAL lpMat) PURE;
+    STDMETHOD(GetMaterial)(THIS_ LPD3DMATERIAL lpMat) PURE;
+    STDMETHOD(GetHandle)(THIS_ LPDIRECT3DDEVICE2 lpDirect3DDevice2, LPD3DMATERIALHANDLE lpHandle) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DMaterial2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DMaterial2_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirect3DMaterial2_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirect3DMaterial2 methods ***/
+#define IDirect3DMaterial2_SetMaterial(p,a) (p)->lpVtbl->SetMaterial(p,a)
+#define IDirect3DMaterial2_GetMaterial(p,a) (p)->lpVtbl->GetMaterial(p,a)
+#define IDirect3DMaterial2_GetHandle(p,a,b) (p)->lpVtbl->GetHandle(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DMaterial2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DMaterial2_AddRef(p)             (p)->AddRef()
+#define IDirect3DMaterial2_Release(p)            (p)->Release()
+/*** IDirect3DMaterial2 methods ***/
+#define IDirect3DMaterial2_SetMaterial(p,a) (p)->SetMaterial(a)
+#define IDirect3DMaterial2_GetMaterial(p,a) (p)->GetMaterial(a)
+#define IDirect3DMaterial2_GetHandle(p,a,b) (p)->GetHandle(a,b)
+#endif
+
+
+/*****************************************************************************
+ * IDirect3DMaterial3 interface
+ */
+#define INTERFACE IDirect3DMaterial3
+DECLARE_INTERFACE_(IDirect3DMaterial3,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DMaterial3 methods ***/
+    STDMETHOD(SetMaterial)(THIS_ LPD3DMATERIAL lpMat) PURE;
+    STDMETHOD(GetMaterial)(THIS_ LPD3DMATERIAL lpMat) PURE;
+    STDMETHOD(GetHandle)(THIS_ LPDIRECT3DDEVICE3 lpDirect3DDevice3, LPD3DMATERIALHANDLE lpHandle) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DMaterial3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DMaterial3_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirect3DMaterial3_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirect3DMaterial3 methods ***/
+#define IDirect3DMaterial3_SetMaterial(p,a) (p)->lpVtbl->SetMaterial(p,a)
+#define IDirect3DMaterial3_GetMaterial(p,a) (p)->lpVtbl->GetMaterial(p,a)
+#define IDirect3DMaterial3_GetHandle(p,a,b) (p)->lpVtbl->GetHandle(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DMaterial3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DMaterial3_AddRef(p)             (p)->AddRef()
+#define IDirect3DMaterial3_Release(p)            (p)->Release()
+/*** IDirect3DMaterial3 methods ***/
+#define IDirect3DMaterial3_SetMaterial(p,a) (p)->SetMaterial(a)
+#define IDirect3DMaterial3_GetMaterial(p,a) (p)->GetMaterial(a)
+#define IDirect3DMaterial3_GetHandle(p,a,b) (p)->GetHandle(a,b)
+#endif
+
+
+/*****************************************************************************
+ * IDirect3DTexture interface
+ */
+#define INTERFACE IDirect3DTexture
+DECLARE_INTERFACE_(IDirect3DTexture,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DTexture methods ***/
+    STDMETHOD(Initialize)(THIS_ LPDIRECT3DDEVICE lpDirect3DDevice, LPDIRECTDRAWSURFACE lpDDSurface) PURE;
+    STDMETHOD(GetHandle)(THIS_ LPDIRECT3DDEVICE lpDirect3DDevice, LPD3DTEXTUREHANDLE  lpHandle) PURE;
+    STDMETHOD(PaletteChanged)(THIS_ DWORD dwStart, DWORD dwCount) PURE;
+    STDMETHOD(Load)(THIS_ LPDIRECT3DTEXTURE lpD3DTexture) PURE;
+    STDMETHOD(Unload)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DTexture_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DTexture_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirect3DTexture_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirect3DTexture methods ***/
+#define IDirect3DTexture_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
+#define IDirect3DTexture_GetHandle(p,a,b) (p)->lpVtbl->GetHandle(p,a,b)
+#define IDirect3DTexture_PaletteChanged(p,a,b) (p)->lpVtbl->PaletteChanged(p,a,b)
+#define IDirect3DTexture_Load(p,a) (p)->lpVtbl->Load(p,a)
+#define IDirect3DTexture_Unload(p) (p)->lpVtbl->Unload(p)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DTexture_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DTexture_AddRef(p)             (p)->AddRef()
+#define IDirect3DTexture_Release(p)            (p)->Release()
+/*** IDirect3DTexture methods ***/
+#define IDirect3DTexture_Initialize(p,a,b) (p)->Initialize(a,b)
+#define IDirect3DTexture_GetHandle(p,a,b) (p)->GetHandle(a,b)
+#define IDirect3DTexture_PaletteChanged(p,a,b) (p)->PaletteChanged(a,b)
+#define IDirect3DTexture_Load(p,a) (p)->Load(a)
+#define IDirect3DTexture_Unload(p) (p)->Unload()
+#endif
+
+
+/*****************************************************************************
+ * IDirect3DTexture2 interface
+ */
+#define INTERFACE IDirect3DTexture2
+DECLARE_INTERFACE_(IDirect3DTexture2,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DTexture2 methods ***/
+    STDMETHOD(GetHandle)(THIS_ LPDIRECT3DDEVICE2 lpDirect3DDevice2, LPD3DTEXTUREHANDLE lpHandle) PURE;
+    STDMETHOD(PaletteChanged)(THIS_ DWORD dwStart, DWORD dwCount) PURE;
+    STDMETHOD(Load)(THIS_ LPDIRECT3DTEXTURE2 lpD3DTexture2) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DTexture2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DTexture2_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirect3DTexture2_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirect3DTexture2 methods ***/
+#define IDirect3DTexture2_GetHandle(p,a,b)      (p)->lpVtbl->GetHandle(p,a,b)
+#define IDirect3DTexture2_PaletteChanged(p,a,b) (p)->lpVtbl->PaletteChanged(p,a,b)
+#define IDirect3DTexture2_Load(p,a)             (p)->lpVtbl->Load(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DTexture2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DTexture2_AddRef(p)             (p)->AddRef()
+#define IDirect3DTexture2_Release(p)            (p)->Release()
+/*** IDirect3DTexture2 methods ***/
+#define IDirect3DTexture2_GetHandle(p,a,b)      (p)->GetHandle(a,b)
+#define IDirect3DTexture2_PaletteChanged(p,a,b) (p)->PaletteChanged(a,b)
+#define IDirect3DTexture2_Load(p,a)             (p)->Load(a)
+#endif
+
+
+/*****************************************************************************
+ * IDirect3DViewport interface
+ */
+#define INTERFACE IDirect3DViewport
+DECLARE_INTERFACE_(IDirect3DViewport,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DViewport methods ***/
+    STDMETHOD(Initialize)(THIS_ LPDIRECT3D lpDirect3D) PURE;
+    STDMETHOD(GetViewport)(THIS_ LPD3DVIEWPORT lpData) PURE;
+    STDMETHOD(SetViewport)(THIS_ LPD3DVIEWPORT lpData) PURE;
+    STDMETHOD(TransformVertices)(THIS_ DWORD dwVertexCount, LPD3DTRANSFORMDATA lpData, DWORD dwFlags, LPDWORD lpOffScreen) PURE;
+    STDMETHOD(LightElements)(THIS_ DWORD dwElementCount, LPD3DLIGHTDATA lpData) PURE;
+    STDMETHOD(SetBackground)(THIS_ D3DMATERIALHANDLE hMat) PURE;
+    STDMETHOD(GetBackground)(THIS_ LPD3DMATERIALHANDLE lphMat, LPBOOL lpValid) PURE;
+    STDMETHOD(SetBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE lpDDSurface) PURE;
+    STDMETHOD(GetBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE *lplpDDSurface, LPBOOL lpValid) PURE;
+    STDMETHOD(Clear)(THIS_ DWORD dwCount, LPD3DRECT lpRects, DWORD dwFlags) PURE;
+    STDMETHOD(AddLight)(THIS_ LPDIRECT3DLIGHT lpDirect3DLight) PURE;
+    STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DLIGHT lpDirect3DLight) PURE;
+    STDMETHOD(NextLight)(THIS_ LPDIRECT3DLIGHT lpDirect3DLight, LPDIRECT3DLIGHT *lplpDirect3DLight, DWORD dwFlags) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DViewport_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DViewport_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirect3DViewport_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirect3DViewport methods ***/
+#define IDirect3DViewport_Initialize(p,a)              (p)->lpVtbl->Initialize(p,a)
+#define IDirect3DViewport_GetViewport(p,a)             (p)->lpVtbl->GetViewport(p,a)
+#define IDirect3DViewport_SetViewport(p,a)             (p)->lpVtbl->SetViewport(p,a)
+#define IDirect3DViewport_TransformVertices(p,a,b,c,d) (p)->lpVtbl->TransformVertices(p,a,b,c,d)
+#define IDirect3DViewport_LightElements(p,a,b)         (p)->lpVtbl->LightElements(p,a,b)
+#define IDirect3DViewport_SetBackground(p,a)           (p)->lpVtbl->SetBackground(p,a)
+#define IDirect3DViewport_GetBackground(p,a,b)         (p)->lpVtbl->GetBackground(p,a,b)
+#define IDirect3DViewport_SetBackgroundDepth(p,a)      (p)->lpVtbl->SetBackgroundDepth(p,a)
+#define IDirect3DViewport_GetBackgroundDepth(p,a,b)    (p)->lpVtbl->GetBackgroundDepth(p,a,b)
+#define IDirect3DViewport_Clear(p,a,b,c)               (p)->lpVtbl->Clear(p,a,b,c)
+#define IDirect3DViewport_AddLight(p,a)                (p)->lpVtbl->AddLight(p,a)
+#define IDirect3DViewport_DeleteLight(p,a)             (p)->lpVtbl->DeleteLight(p,a)
+#define IDirect3DViewport_NextLight(p,a,b,c)           (p)->lpVtbl->NextLight(p,a,b,c)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DViewport_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DViewport_AddRef(p)             (p)->AddRef()
+#define IDirect3DViewport_Release(p)            (p)->Release()
+/*** IDirect3DViewport methods ***/
+#define IDirect3DViewport_Initialize(p,a)              (p)->Initialize(a)
+#define IDirect3DViewport_GetViewport(p,a)             (p)->GetViewport(a)
+#define IDirect3DViewport_SetViewport(p,a)             (p)->SetViewport(a)
+#define IDirect3DViewport_TransformVertices(p,a,b,c,d) (p)->TransformVertices(a,b,c,d)
+#define IDirect3DViewport_LightElements(p,a,b)         (p)->LightElements(a,b)
+#define IDirect3DViewport_SetBackground(p,a)           (p)->SetBackground(a)
+#define IDirect3DViewport_GetBackground(p,a,b)         (p)->GetBackground(a,b)
+#define IDirect3DViewport_SetBackgroundDepth(p,a)      (p)->SetBackgroundDepth(a)
+#define IDirect3DViewport_GetBackgroundDepth(p,a,b)    (p)->GetBackgroundDepth(a,b)
+#define IDirect3DViewport_Clear(p,a,b,c)               (p)->Clear(a,b,c)
+#define IDirect3DViewport_AddLight(p,a)                (p)->AddLight(a)
+#define IDirect3DViewport_DeleteLight(p,a)             (p)->DeleteLight(a)
+#define IDirect3DViewport_NextLight(p,a,b,c)           (p)->NextLight(a,b,c)
+#endif
+
+
+/*****************************************************************************
+ * IDirect3DViewport2 interface
+ */
+#define INTERFACE IDirect3DViewport2
+DECLARE_INTERFACE_(IDirect3DViewport2,IDirect3DViewport)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DViewport methods ***/
+    STDMETHOD(Initialize)(THIS_ LPDIRECT3D lpDirect3D) PURE;
+    STDMETHOD(GetViewport)(THIS_ LPD3DVIEWPORT lpData) PURE;
+    STDMETHOD(SetViewport)(THIS_ LPD3DVIEWPORT lpData) PURE;
+    STDMETHOD(TransformVertices)(THIS_ DWORD dwVertexCount, LPD3DTRANSFORMDATA lpData, DWORD dwFlags, LPDWORD lpOffScreen) PURE;
+    STDMETHOD(LightElements)(THIS_ DWORD dwElementCount, LPD3DLIGHTDATA lpData) PURE;
+    STDMETHOD(SetBackground)(THIS_ D3DMATERIALHANDLE hMat) PURE;
+    STDMETHOD(GetBackground)(THIS_ LPD3DMATERIALHANDLE lphMat, LPBOOL lpValid) PURE;
+    STDMETHOD(SetBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE lpDDSurface) PURE;
+    STDMETHOD(GetBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE *lplpDDSurface, LPBOOL lpValid) PURE;
+    STDMETHOD(Clear)(THIS_ DWORD dwCount, LPD3DRECT lpRects, DWORD dwFlags) PURE;
+    STDMETHOD(AddLight)(THIS_ LPDIRECT3DLIGHT lpDirect3DLight) PURE;
+    STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DLIGHT lpDirect3DLight) PURE;
+    STDMETHOD(NextLight)(THIS_ LPDIRECT3DLIGHT lpDirect3DLight, LPDIRECT3DLIGHT *lplpDirect3DLight, DWORD dwFlags) PURE;
+    /*** IDirect3DViewport2 methods ***/
+    STDMETHOD(GetViewport2)(THIS_ LPD3DVIEWPORT2 lpData) PURE;
+    STDMETHOD(SetViewport2)(THIS_ LPD3DVIEWPORT2 lpData) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DViewport2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DViewport2_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirect3DViewport2_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirect3Viewport methods ***/
+#define IDirect3DViewport2_Initialize(p,a)              (p)->lpVtbl->Initialize(p,a)
+#define IDirect3DViewport2_GetViewport(p,a)             (p)->lpVtbl->GetViewport(p,a)
+#define IDirect3DViewport2_SetViewport(p,a)             (p)->lpVtbl->SetViewport(p,a)
+#define IDirect3DViewport2_TransformVertices(p,a,b,c,d) (p)->lpVtbl->TransformVertices(p,a,b,c,d)
+#define IDirect3DViewport2_LightElements(p,a,b)         (p)->lpVtbl->LightElements(p,a,b)
+#define IDirect3DViewport2_SetBackground(p,a)           (p)->lpVtbl->SetBackground(p,a)
+#define IDirect3DViewport2_GetBackground(p,a,b)         (p)->lpVtbl->GetBackground(p,a,b)
+#define IDirect3DViewport2_SetBackgroundDepth(p,a)      (p)->lpVtbl->SetBackgroundDepth(p,a)
+#define IDirect3DViewport2_GetBackgroundDepth(p,a,b)    (p)->lpVtbl->GetBackgroundDepth(p,a,b)
+#define IDirect3DViewport2_Clear(p,a,b,c)               (p)->lpVtbl->Clear(p,a,b,c)
+#define IDirect3DViewport2_AddLight(p,a)                (p)->lpVtbl->AddLight(p,a)
+#define IDirect3DViewport2_DeleteLight(p,a)             (p)->lpVtbl->DeleteLight(p,a)
+#define IDirect3DViewport2_NextLight(p,a,b,c)           (p)->lpVtbl->NextLight(p,a,b,c)
+/*** IDirect3DViewport2 methods ***/
+#define IDirect3DViewport2_GetViewport2(p,a) (p)->lpVtbl->GetViewport2(p,a)
+#define IDirect3DViewport2_SetViewport2(p,a) (p)->lpVtbl->SetViewport2(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DViewport2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DViewport2_AddRef(p)             (p)->AddRef()
+#define IDirect3DViewport2_Release(p)            (p)->Release()
+/*** IDirect3Viewport methods ***/
+#define IDirect3DViewport2_Initialize(p,a)              (p)->Initialize(a)
+#define IDirect3DViewport2_GetViewport(p,a)             (p)->GetViewport(a)
+#define IDirect3DViewport2_SetViewport(p,a)             (p)->SetViewport(a)
+#define IDirect3DViewport2_TransformVertices(p,a,b,c,d) (p)->TransformVertices(a,b,c,d)
+#define IDirect3DViewport2_LightElements(p,a,b)         (p)->LightElements(a,b)
+#define IDirect3DViewport2_SetBackground(p,a)           (p)->SetBackground(a)
+#define IDirect3DViewport2_GetBackground(p,a,b)         (p)->GetBackground(a,b)
+#define IDirect3DViewport2_SetBackgroundDepth(p,a)      (p)->SetBackgroundDepth(a)
+#define IDirect3DViewport2_GetBackgroundDepth(p,a,b)    (p)->GetBackgroundDepth(a,b)
+#define IDirect3DViewport2_Clear(p,a,b,c)               (p)->Clear(a,b,c)
+#define IDirect3DViewport2_AddLight(p,a)                (p)->AddLight(a)
+#define IDirect3DViewport2_DeleteLight(p,a)             (p)->DeleteLight(a)
+#define IDirect3DViewport2_NextLight(p,a,b,c)           (p)->NextLight(a,b,c)
+/*** IDirect3DViewport2 methods ***/
+#define IDirect3DViewport2_GetViewport2(p,a) (p)->GetViewport2(a)
+#define IDirect3DViewport2_SetViewport2(p,a) (p)->SetViewport2(a)
+#endif
+
+/*****************************************************************************
+ * IDirect3DViewport3 interface
+ */
+#define INTERFACE IDirect3DViewport3
+DECLARE_INTERFACE_(IDirect3DViewport3,IDirect3DViewport2)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DViewport methods ***/
+    STDMETHOD(Initialize)(THIS_ LPDIRECT3D lpDirect3D) PURE;
+    STDMETHOD(GetViewport)(THIS_ LPD3DVIEWPORT lpData) PURE;
+    STDMETHOD(SetViewport)(THIS_ LPD3DVIEWPORT lpData) PURE;
+    STDMETHOD(TransformVertices)(THIS_ DWORD dwVertexCount, LPD3DTRANSFORMDATA lpData, DWORD dwFlags, LPDWORD lpOffScreen) PURE;
+    STDMETHOD(LightElements)(THIS_ DWORD dwElementCount, LPD3DLIGHTDATA lpData) PURE;
+    STDMETHOD(SetBackground)(THIS_ D3DMATERIALHANDLE hMat) PURE;
+    STDMETHOD(GetBackground)(THIS_ LPD3DMATERIALHANDLE lphMat, LPBOOL lpValid) PURE;
+    STDMETHOD(SetBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE lpDDSurface) PURE;
+    STDMETHOD(GetBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE *lplpDDSurface, LPBOOL lpValid) PURE;
+    STDMETHOD(Clear)(THIS_ DWORD dwCount, LPD3DRECT lpRects, DWORD dwFlags) PURE;
+    STDMETHOD(AddLight)(THIS_ LPDIRECT3DLIGHT lpDirect3DLight) PURE;
+    STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DLIGHT lpDirect3DLight) PURE;
+    STDMETHOD(NextLight)(THIS_ LPDIRECT3DLIGHT lpDirect3DLight, LPDIRECT3DLIGHT *lplpDirect3DLight, DWORD dwFlags) PURE;
+    /*** IDirect3DViewport2 methods ***/
+    STDMETHOD(GetViewport2)(THIS_ LPD3DVIEWPORT2 lpData) PURE;
+    STDMETHOD(SetViewport2)(THIS_ LPD3DVIEWPORT2 lpData) PURE;
+    /*** IDirect3DViewport3 methods ***/
+    STDMETHOD(SetBackgroundDepth2)(THIS_ LPDIRECTDRAWSURFACE4 lpDDS) PURE;
+    STDMETHOD(GetBackgroundDepth2)(THIS_ LPDIRECTDRAWSURFACE4 *lplpDDS,LPBOOL lpValid) PURE;
+    STDMETHOD(Clear2)(THIS_ DWORD dwCount,LPD3DRECT lpRects,DWORD dwFlags,DWORD dwColor,D3DVALUE dvZ,DWORD dwStencil) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DViewport3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DViewport3_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirect3DViewport3_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirect3Viewport methods ***/
+#define IDirect3DViewport3_Initialize(p,a)              (p)->lpVtbl->Initialize(p,a)
+#define IDirect3DViewport3_GetViewport(p,a)             (p)->lpVtbl->GetViewport(p,a)
+#define IDirect3DViewport3_SetViewport(p,a)             (p)->lpVtbl->SetViewport(p,a)
+#define IDirect3DViewport3_TransformVertices(p,a,b,c,d) (p)->lpVtbl->TransformVertices(p,a,b,c,d)
+#define IDirect3DViewport3_LightElements(p,a,b)         (p)->lpVtbl->LightElements(p,a,b)
+#define IDirect3DViewport3_SetBackground(p,a)           (p)->lpVtbl->SetBackground(p,a)
+#define IDirect3DViewport3_GetBackground(p,a,b)         (p)->lpVtbl->GetBackground(p,a,b)
+#define IDirect3DViewport3_SetBackgroundDepth(p,a)      (p)->lpVtbl->SetBackgroundDepth(p,a)
+#define IDirect3DViewport3_GetBackgroundDepth(p,a,b)    (p)->lpVtbl->GetBackgroundDepth(p,a,b)
+#define IDirect3DViewport3_Clear(p,a,b,c)               (p)->lpVtbl->Clear(p,a,b,c)
+#define IDirect3DViewport3_AddLight(p,a)                (p)->lpVtbl->AddLight(p,a)
+#define IDirect3DViewport3_DeleteLight(p,a)             (p)->lpVtbl->DeleteLight(p,a)
+#define IDirect3DViewport3_NextLight(p,a,b,c)           (p)->lpVtbl->NextLight(p,a,b,c)
+/*** IDirect3DViewport2 methods ***/
+#define IDirect3DViewport3_GetViewport2(p,a) (p)->lpVtbl->GetViewport2(p,a)
+#define IDirect3DViewport3_SetViewport2(p,a) (p)->lpVtbl->SetViewport2(p,a)
+/*** IDirect3DViewport3 methods ***/
+#define IDirect3DViewport3_SetBackgroundDepth2(p,a)   (p)->lpVtbl->SetBackgroundDepth2(p,a)
+#define IDirect3DViewport3_GetBackgroundDepth2(p,a,b) (p)->lpVtbl->GetBackgroundDepth2(p,a,b)
+#define IDirect3DViewport3_Clear2(p,a,b,c,d,e,f)      (p)->lpVtbl->Clear2(p,a,b,c,d,e,f)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DViewport3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DViewport3_AddRef(p)             (p)->AddRef()
+#define IDirect3DViewport3_Release(p)            (p)->Release()
+/*** IDirect3Viewport methods ***/
+#define IDirect3DViewport3_Initialize(p,a)              (p)->Initialize(a)
+#define IDirect3DViewport3_GetViewport(p,a)             (p)->GetViewport(a)
+#define IDirect3DViewport3_SetViewport(p,a)             (p)->SetViewport(a)
+#define IDirect3DViewport3_TransformVertices(p,a,b,c,d) (p)->TransformVertices(a,b,c,d)
+#define IDirect3DViewport3_LightElements(p,a,b)         (p)->LightElements(a,b)
+#define IDirect3DViewport3_SetBackground(p,a)           (p)->SetBackground(a)
+#define IDirect3DViewport3_GetBackground(p,a,b)         (p)->GetBackground(a,b)
+#define IDirect3DViewport3_SetBackgroundDepth(p,a)      (p)->SetBackgroundDepth(a)
+#define IDirect3DViewport3_GetBackgroundDepth(p,a,b)    (p)->GetBackgroundDepth(a,b)
+#define IDirect3DViewport3_Clear(p,a,b,c)               (p)->Clear(a,b,c)
+#define IDirect3DViewport3_AddLight(p,a)                (p)->AddLight(a)
+#define IDirect3DViewport3_DeleteLight(p,a)             (p)->DeleteLight(a)
+#define IDirect3DViewport3_NextLight(p,a,b,c)           (p)->NextLight(a,b,c)
+/*** IDirect3DViewport2 methods ***/
+#define IDirect3DViewport3_GetViewport2(p,a) (p)->GetViewport2(a)
+#define IDirect3DViewport3_SetViewport2(p,a) (p)->SetViewport2(a)
+/*** IDirect3DViewport3 methods ***/
+#define IDirect3DViewport3_SetBackgroundDepth2(p,a)   (p)->SetBackgroundDepth2(a)
+#define IDirect3DViewport3_GetBackgroundDepth2(p,a,b) (p)->GetBackgroundDepth2(a,b)
+#define IDirect3DViewport3_Clear2(p,a,b,c,d,e,f)      (p)->Clear2(a,b,c,d,e,f)
+#endif
+
+
+
+/*****************************************************************************
+ * IDirect3DExecuteBuffer interface
+ */
+#define INTERFACE IDirect3DExecuteBuffer
+DECLARE_INTERFACE_(IDirect3DExecuteBuffer,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DExecuteBuffer methods ***/
+    STDMETHOD(Initialize)(THIS_ LPDIRECT3DDEVICE lpDirect3DDevice, LPD3DEXECUTEBUFFERDESC lpDesc) PURE;
+    STDMETHOD(Lock)(THIS_ LPD3DEXECUTEBUFFERDESC lpDesc) PURE;
+    STDMETHOD(Unlock)(THIS) PURE;
+    STDMETHOD(SetExecuteData)(THIS_ LPD3DEXECUTEDATA lpData) PURE;
+    STDMETHOD(GetExecuteData)(THIS_ LPD3DEXECUTEDATA lpData) PURE;
+    STDMETHOD(Validate)(THIS_ LPDWORD lpdwOffset, LPD3DVALIDATECALLBACK lpFunc, LPVOID lpUserArg, DWORD dwReserved) PURE;
+    STDMETHOD(Optimize)(THIS_ DWORD dwDummy) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DExecuteBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DExecuteBuffer_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirect3DExecuteBuffer_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirect3DExecuteBuffer methods ***/
+#define IDirect3DExecuteBuffer_Initialize(p,a,b)   (p)->lpVtbl->Initialize(p,a,b)
+#define IDirect3DExecuteBuffer_Lock(p,a)           (p)->lpVtbl->Lock(p,a)
+#define IDirect3DExecuteBuffer_Unlock(p)           (p)->lpVtbl->Unlock(p)
+#define IDirect3DExecuteBuffer_SetExecuteData(p,a) (p)->lpVtbl->SetExecuteData(p,a)
+#define IDirect3DExecuteBuffer_GetExecuteData(p,a) (p)->lpVtbl->GetExecuteData(p,a)
+#define IDirect3DExecuteBuffer_Validate(p,a,b,c,d) (p)->lpVtbl->Validate(p,a,b,c,d)
+#define IDirect3DExecuteBuffer_Optimize(p,a)       (p)->lpVtbl->Optimize(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DExecuteBuffer_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DExecuteBuffer_AddRef(p)             (p)->AddRef()
+#define IDirect3DExecuteBuffer_Release(p)            (p)->Release()
+/*** IDirect3DExecuteBuffer methods ***/
+#define IDirect3DExecuteBuffer_Initialize(p,a,b)   (p)->Initialize(a,b)
+#define IDirect3DExecuteBuffer_Lock(p,a)           (p)->Lock(a)
+#define IDirect3DExecuteBuffer_Unlock(p)           (p)->Unlock()
+#define IDirect3DExecuteBuffer_SetExecuteData(p,a) (p)->SetExecuteData(a)
+#define IDirect3DExecuteBuffer_GetExecuteData(p,a) (p)->GetExecuteData(a)
+#define IDirect3DExecuteBuffer_Validate(p,a,b,c,d) (p)->Validate(a,b,c,d)
+#define IDirect3DExecuteBuffer_Optimize(p,a)       (p)->Optimize(a)
+#endif
+
+
+/*****************************************************************************
+ * IDirect3DDevice interface
+ */
+#define INTERFACE IDirect3DDevice
+DECLARE_INTERFACE_(IDirect3DDevice,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DDevice methods ***/
+    STDMETHOD(Initialize)(THIS_ LPDIRECT3D lpDirect3D, LPGUID lpGUID, LPD3DDEVICEDESC lpD3DDVDesc) PURE;
+    STDMETHOD(GetCaps)(THIS_ LPD3DDEVICEDESC lpD3DHWDevDesc, LPD3DDEVICEDESC lpD3DHELDevDesc) PURE;
+    STDMETHOD(SwapTextureHandles)(THIS_ LPDIRECT3DTEXTURE lpD3Dtex1, LPDIRECT3DTEXTURE lpD3DTex2) PURE;
+    STDMETHOD(CreateExecuteBuffer)(THIS_ LPD3DEXECUTEBUFFERDESC lpDesc, LPDIRECT3DEXECUTEBUFFER *lplpDirect3DExecuteBuffer, IUnknown *pUnkOuter) PURE;
+    STDMETHOD(GetStats)(THIS_ LPD3DSTATS lpD3DStats) PURE;
+    STDMETHOD(Execute)(THIS_ LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer, LPDIRECT3DVIEWPORT lpDirect3DViewport, DWORD dwFlags) PURE;
+    STDMETHOD(AddViewport)(THIS_ LPDIRECT3DVIEWPORT lpDirect3DViewport) PURE;
+    STDMETHOD(DeleteViewport)(THIS_ LPDIRECT3DVIEWPORT lpDirect3DViewport) PURE;
+    STDMETHOD(NextViewport)(THIS_ LPDIRECT3DVIEWPORT lpDirect3DViewport, LPDIRECT3DVIEWPORT *lplpDirect3DViewport, DWORD dwFlags) PURE;
+    STDMETHOD(Pick)(THIS_ LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer, LPDIRECT3DVIEWPORT lpDirect3DViewport, DWORD dwFlags, LPD3DRECT lpRect) PURE;
+    STDMETHOD(GetPickRecords)(THIS_ LPDWORD lpCount, LPD3DPICKRECORD lpD3DPickRec) PURE;
+    STDMETHOD(EnumTextureFormats)(THIS_ LPD3DENUMTEXTUREFORMATSCALLBACK lpD3DEnumTextureProc, LPVOID lpArg) PURE;
+    STDMETHOD(CreateMatrix)(THIS_ LPD3DMATRIXHANDLE lpD3DMatHandle) PURE;
+    STDMETHOD(SetMatrix)(THIS_ D3DMATRIXHANDLE D3DMatHandle, LPD3DMATRIX lpD3DMatrix) PURE;
+    STDMETHOD(GetMatrix)(THIS_ D3DMATRIXHANDLE D3DMatHandle, LPD3DMATRIX lpD3DMatrix) PURE;
+    STDMETHOD(DeleteMatrix)(THIS_ D3DMATRIXHANDLE D3DMatHandle) PURE;
+    STDMETHOD(BeginScene)(THIS) PURE;
+    STDMETHOD(EndScene)(THIS) PURE;
+    STDMETHOD(GetDirect3D)(THIS_ LPDIRECT3D *lplpDirect3D) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DDevice_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DDevice_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirect3DDevice_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirect3DDevice methods ***/
+#define IDirect3DDevice_Initialize(p,a,b,c)          (p)->lpVtbl->Initialize(p,a,b,c)
+#define IDirect3DDevice_GetCaps(p,a,b)               (p)->lpVtbl->GetCaps(p,a,b)
+#define IDirect3DDevice_SwapTextureHandles(p,a,b)    (p)->lpVtbl->SwapTextureHandles(p,a,b)
+#define IDirect3DDevice_CreateExecuteBuffer(p,a,b,c) (p)->lpVtbl->CreateExecuteBuffer(p,a,b,c)
+#define IDirect3DDevice_GetStats(p,a)                (p)->lpVtbl->GetStats(p,a)
+#define IDirect3DDevice_Execute(p,a,b,c)             (p)->lpVtbl->Execute(p,a,b,c)
+#define IDirect3DDevice_AddViewport(p,a)             (p)->lpVtbl->AddViewport(p,a)
+#define IDirect3DDevice_DeleteViewport(p,a)          (p)->lpVtbl->DeleteViewport(p,a)
+#define IDirect3DDevice_NextViewport(p,a,b,c)        (p)->lpVtbl->NextViewport(p,a,b,c)
+#define IDirect3DDevice_Pick(p,a,b,c,d)              (p)->lpVtbl->Pick(p,a,b,c,d)
+#define IDirect3DDevice_GetPickRecords(p,a,b)        (p)->lpVtbl->GetPickRecords(p,a,b)
+#define IDirect3DDevice_EnumTextureFormats(p,a,b)    (p)->lpVtbl->EnumTextureFormats(p,a,b)
+#define IDirect3DDevice_CreateMatrix(p,a)            (p)->lpVtbl->CreateMatrix(p,a)
+#define IDirect3DDevice_SetMatrix(p,a,b)             (p)->lpVtbl->SetMatrix(p,a,b)
+#define IDirect3DDevice_GetMatrix(p,a,b)             (p)->lpVtbl->GetMatrix(p,a,b)
+#define IDirect3DDevice_DeleteMatrix(p,a)            (p)->lpVtbl->DeleteMatrix(p,a)
+#define IDirect3DDevice_BeginScene(p)                (p)->lpVtbl->BeginScene(p)
+#define IDirect3DDevice_EndScene(p)                  (p)->lpVtbl->EndScene(p)
+#define IDirect3DDevice_GetDirect3D(p,a)             (p)->lpVtbl->GetDirect3D(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DDevice_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DDevice_AddRef(p)             (p)->AddRef()
+#define IDirect3DDevice_Release(p)            (p)->Release()
+/*** IDirect3DDevice methods ***/
+#define IDirect3DDevice_Initialize(p,a,b,c)          (p)->Initialize(a,b,c)
+#define IDirect3DDevice_GetCaps(p,a,b)               (p)->GetCaps(a,b)
+#define IDirect3DDevice_SwapTextureHandles(p,a,b)    (p)->SwapTextureHandles(a,b)
+#define IDirect3DDevice_CreateExecuteBuffer(p,a,b,c) (p)->CreateExecuteBuffer(a,b,c)
+#define IDirect3DDevice_GetStats(p,a)                (p)->GetStats(a)
+#define IDirect3DDevice_Execute(p,a,b,c)             (p)->Execute(a,b,c)
+#define IDirect3DDevice_AddViewport(p,a)             (p)->AddViewport(a)
+#define IDirect3DDevice_DeleteViewport(p,a)          (p)->DeleteViewport(a)
+#define IDirect3DDevice_NextViewport(p,a,b,c)        (p)->NextViewport(a,b,c)
+#define IDirect3DDevice_Pick(p,a,b,c,d)              (p)->Pick(a,b,c,d)
+#define IDirect3DDevice_GetPickRecords(p,a,b)        (p)->GetPickRecords(a,b)
+#define IDirect3DDevice_EnumTextureFormats(p,a,b)    (p)->EnumTextureFormats(a,b)
+#define IDirect3DDevice_CreateMatrix(p,a)            (p)->CreateMatrix(a)
+#define IDirect3DDevice_SetMatrix(p,a,b)             (p)->SetMatrix(a,b)
+#define IDirect3DDevice_GetMatrix(p,a,b)             (p)->GetMatrix(a,b)
+#define IDirect3DDevice_DeleteMatrix(p,a)            (p)->DeleteMatrix(a)
+#define IDirect3DDevice_BeginScene(p)                (p)->BeginScene()
+#define IDirect3DDevice_EndScene(p)                  (p)->EndScene()
+#define IDirect3DDevice_GetDirect3D(p,a)             (p)->GetDirect3D(a)
+#endif
+
+
+/*****************************************************************************
+ * IDirect3DDevice2 interface
+ */
+#define INTERFACE IDirect3DDevice2
+DECLARE_INTERFACE_(IDirect3DDevice2,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DDevice2 methods ***/
+    STDMETHOD(GetCaps)(THIS_ LPD3DDEVICEDESC lpD3DHWDevDesc, LPD3DDEVICEDESC lpD3DHELDevDesc) PURE;
+    STDMETHOD(SwapTextureHandles)(THIS_ LPDIRECT3DTEXTURE2 lpD3DTex1, LPDIRECT3DTEXTURE2 lpD3DTex2) PURE;
+    STDMETHOD(GetStats)(THIS_ LPD3DSTATS lpD3DStats) PURE;
+    STDMETHOD(AddViewport)(THIS_ LPDIRECT3DVIEWPORT2 lpDirect3DViewport2) PURE;
+    STDMETHOD(DeleteViewport)(THIS_ LPDIRECT3DVIEWPORT2 lpDirect3DViewport2) PURE;
+    STDMETHOD(NextViewport)(THIS_ LPDIRECT3DVIEWPORT2 lpDirect3DViewport2, LPDIRECT3DVIEWPORT2 *lplpDirect3DViewport2, DWORD dwFlags) PURE;
+    STDMETHOD(EnumTextureFormats)(THIS_ LPD3DENUMTEXTUREFORMATSCALLBACK lpD3DEnumTextureProc, LPVOID lpArg) PURE;
+    STDMETHOD(BeginScene)(THIS) PURE;
+    STDMETHOD(EndScene)(THIS) PURE;
+    STDMETHOD(GetDirect3D)(THIS_ LPDIRECT3D2 *lplpDirect3D2) PURE;
+    /*** DrawPrimitive API ***/
+    STDMETHOD(SetCurrentViewport)(THIS_ LPDIRECT3DVIEWPORT2 lpDirect3DViewport2) PURE;
+    STDMETHOD(GetCurrentViewport)(THIS_ LPDIRECT3DVIEWPORT2 *lplpDirect3DViewport2) PURE;
+    STDMETHOD(SetRenderTarget)(THIS_ LPDIRECTDRAWSURFACE lpNewRenderTarget, DWORD dwFlags) PURE;
+    STDMETHOD(GetRenderTarget)(THIS_ LPDIRECTDRAWSURFACE *lplpRenderTarget) PURE;
+    STDMETHOD(Begin)(THIS_ D3DPRIMITIVETYPE d3dpt,D3DVERTEXTYPE dwVertexTypeDesc,DWORD dwFlags) PURE;
+    STDMETHOD(BeginIndexed)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, D3DVERTEXTYPE d3dvtVertexType, LPVOID lpvVertices, DWORD dwNumVertices, DWORD dwFlags) PURE;
+    STDMETHOD(Vertex)(THIS_ LPVOID lpVertexType) PURE;
+    STDMETHOD(Index)(THIS_ WORD wVertexIndex) PURE;
+    STDMETHOD(End)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE dwRenderStateType, LPDWORD lpdwRenderState) PURE;
+    STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE dwRenderStateType, DWORD dwRenderState) PURE;
+    STDMETHOD(GetLightState)(THIS_ D3DLIGHTSTATETYPE dwLightStateType, LPDWORD lpdwLightState) PURE;
+    STDMETHOD(SetLightState)(THIS_ D3DLIGHTSTATETYPE dwLightStateType, DWORD dwLightState) PURE;
+    STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE dtstTransformStateType, LPD3DMATRIX lpD3DMatrix) PURE;
+    STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE dtstTransformStateType, LPD3DMATRIX lpD3DMatrix) PURE;
+    STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE dtstTransformStateType, LPD3DMATRIX lpD3DMatrix) PURE;
+    STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, D3DVERTEXTYPE d3dvtVertexType, LPVOID lpvVertices, DWORD dwVertexCount, DWORD dwFlags) PURE;
+    STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, D3DVERTEXTYPE d3dvtVertexType, LPVOID lpvVertices, DWORD dwVertexCount, LPWORD dwIndices, DWORD dwIndexCount, DWORD dwFlags) PURE;
+    STDMETHOD(SetClipStatus)(THIS_ LPD3DCLIPSTATUS lpD3DClipStatus) PURE;
+    STDMETHOD(GetClipStatus)(THIS_ LPD3DCLIPSTATUS lpD3DClipStatus) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DDevice2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DDevice2_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirect3DDevice2_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirect3DDevice2 methods ***/
+#define IDirect3DDevice2_GetCaps(p,a,b)                        (p)->lpVtbl->GetCaps(p,a,b)
+#define IDirect3DDevice2_SwapTextureHandles(p,a,b)             (p)->lpVtbl->SwapTextureHandles(p,a,b)
+#define IDirect3DDevice2_GetStats(p,a)                         (p)->lpVtbl->GetStats(p,a)
+#define IDirect3DDevice2_AddViewport(p,a)                      (p)->lpVtbl->AddViewport(p,a)
+#define IDirect3DDevice2_DeleteViewport(p,a)                   (p)->lpVtbl->DeleteViewport(p,a)
+#define IDirect3DDevice2_NextViewport(p,a,b,c)                 (p)->lpVtbl->NextViewport(p,a,b,c)
+#define IDirect3DDevice2_EnumTextureFormats(p,a,b)             (p)->lpVtbl->EnumTextureFormats(p,a,b)
+#define IDirect3DDevice2_BeginScene(p)                         (p)->lpVtbl->BeginScene(p)
+#define IDirect3DDevice2_EndScene(p)                           (p)->lpVtbl->EndScene(p)
+#define IDirect3DDevice2_GetDirect3D(p,a)                      (p)->lpVtbl->GetDirect3D(p,a)
+#define IDirect3DDevice2_SetCurrentViewport(p,a)               (p)->lpVtbl->SetCurrentViewport(p,a)
+#define IDirect3DDevice2_GetCurrentViewport(p,a)               (p)->lpVtbl->GetCurrentViewport(p,a)
+#define IDirect3DDevice2_SetRenderTarget(p,a,b)                (p)->lpVtbl->SetRenderTarget(p,a,b)
+#define IDirect3DDevice2_GetRenderTarget(p,a)                  (p)->lpVtbl->GetRenderTarget(p,a)
+#define IDirect3DDevice2_Begin(p,a,b,c)                        (p)->lpVtbl->Begin(p,a,b,c)
+#define IDirect3DDevice2_BeginIndexed(p,a,b,c,d,e)             (p)->lpVtbl->BeginIndexed(p,a,b,c,d,e)
+#define IDirect3DDevice2_Vertex(p,a)                           (p)->lpVtbl->Vertex(p,a)
+#define IDirect3DDevice2_Index(p,a)                            (p)->lpVtbl->Index(p,a)
+#define IDirect3DDevice2_End(p,a)                              (p)->lpVtbl->End(p,a)
+#define IDirect3DDevice2_GetRenderState(p,a,b)                 (p)->lpVtbl->GetRenderState(p,a,b)
+#define IDirect3DDevice2_SetRenderState(p,a,b)                 (p)->lpVtbl->SetRenderState(p,a,b)
+#define IDirect3DDevice2_GetLightState(p,a,b)                  (p)->lpVtbl->GetLightState(p,a,b)
+#define IDirect3DDevice2_SetLightState(p,a,b)                  (p)->lpVtbl->SetLightState(p,a,b)
+#define IDirect3DDevice2_SetTransform(p,a,b)                   (p)->lpVtbl->SetTransform(p,a,b)
+#define IDirect3DDevice2_GetTransform(p,a,b)                   (p)->lpVtbl->GetTransform(p,a,b)
+#define IDirect3DDevice2_MultiplyTransform(p,a,b)              (p)->lpVtbl->MultiplyTransform(p,a,b)
+#define IDirect3DDevice2_DrawPrimitive(p,a,b,c,d,e)            (p)->lpVtbl->DrawPrimitive(p,a,b,c,d,e)
+#define IDirect3DDevice2_DrawIndexedPrimitive(p,a,b,c,d,e,f,g) (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e,f,g)
+#define IDirect3DDevice2_SetClipStatus(p,a)                    (p)->lpVtbl->SetClipStatus(p,a)
+#define IDirect3DDevice2_GetClipStatus(p,a)                    (p)->lpVtbl->GetClipStatus(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DDevice2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DDevice2_AddRef(p)             (p)->AddRef()
+#define IDirect3DDevice2_Release(p)            (p)->Release()
+/*** IDirect3DDevice2 methods ***/
+#define IDirect3DDevice2_GetCaps(p,a,b)                        (p)->GetCaps(a,b)
+#define IDirect3DDevice2_SwapTextureHandles(p,a,b)             (p)->SwapTextureHandles(a,b)
+#define IDirect3DDevice2_GetStats(p,a)                         (p)->GetStats(a)
+#define IDirect3DDevice2_AddViewport(p,a)                      (p)->AddViewport(a)
+#define IDirect3DDevice2_DeleteViewport(p,a)                   (p)->DeleteViewport(a)
+#define IDirect3DDevice2_NextViewport(p,a,b,c)                 (p)->NextViewport(a,b,c)
+#define IDirect3DDevice2_EnumTextureFormats(p,a,b)             (p)->EnumTextureFormats(a,b)
+#define IDirect3DDevice2_BeginScene(p)                         (p)->BeginScene()
+#define IDirect3DDevice2_EndScene(p)                           (p)->EndScene()
+#define IDirect3DDevice2_GetDirect3D(p,a)                      (p)->GetDirect3D(a)
+#define IDirect3DDevice2_SetCurrentViewport(p,a)               (p)->SetCurrentViewport(a)
+#define IDirect3DDevice2_GetCurrentViewport(p,a)               (p)->GetCurrentViewport(a)
+#define IDirect3DDevice2_SetRenderTarget(p,a,b)                (p)->SetRenderTarget(a,b)
+#define IDirect3DDevice2_GetRenderTarget(p,a)                  (p)->GetRenderTarget(a)
+#define IDirect3DDevice2_Begin(p,a,b,c)                        (p)->Begin(a,b,c)
+#define IDirect3DDevice2_BeginIndexed(p,a,b,c,d,e)             (p)->BeginIndexed(a,b,c,d,e)
+#define IDirect3DDevice2_Vertex(p,a)                           (p)->Vertex(a)
+#define IDirect3DDevice2_Index(p,a)                            (p)->Index(a)
+#define IDirect3DDevice2_End(p,a)                              (p)->End(a)
+#define IDirect3DDevice2_GetRenderState(p,a,b)                 (p)->GetRenderState(a,b)
+#define IDirect3DDevice2_SetRenderState(p,a,b)                 (p)->SetRenderState(a,b)
+#define IDirect3DDevice2_GetLightState(p,a,b)                  (p)->GetLightState(a,b)
+#define IDirect3DDevice2_SetLightState(p,a,b)                  (p)->SetLightState(a,b)
+#define IDirect3DDevice2_SetTransform(p,a,b)                   (p)->SetTransform(a,b)
+#define IDirect3DDevice2_GetTransform(p,a,b)                   (p)->GetTransform(a,b)
+#define IDirect3DDevice2_MultiplyTransform(p,a,b)              (p)->MultiplyTransform(a,b)
+#define IDirect3DDevice2_DrawPrimitive(p,a,b,c,d,e)            (p)->DrawPrimitive(a,b,c,d,e)
+#define IDirect3DDevice2_DrawIndexedPrimitive(p,a,b,c,d,e,f,g) (p)->DrawIndexedPrimitive(a,b,c,d,e,f,g)
+#define IDirect3DDevice2_SetClipStatus(p,a)                    (p)->SetClipStatus(a)
+#define IDirect3DDevice2_GetClipStatus(p,a)                    (p)->GetClipStatus(a)
+#endif
+
+/*****************************************************************************
+ * IDirect3DDevice3 interface
+ */
+#define INTERFACE IDirect3DDevice3
+DECLARE_INTERFACE_(IDirect3DDevice3,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DDevice3 methods ***/
+    STDMETHOD(GetCaps)(THIS_ LPD3DDEVICEDESC lpD3DHWDevDesc, LPD3DDEVICEDESC lpD3DHELDevDesc) PURE;
+    STDMETHOD(GetStats)(THIS_ LPD3DSTATS lpD3DStats) PURE;
+    STDMETHOD(AddViewport)(THIS_ LPDIRECT3DVIEWPORT3 lpDirect3DViewport3) PURE;
+    STDMETHOD(DeleteViewport)(THIS_ LPDIRECT3DVIEWPORT3 lpDirect3DViewport3) PURE;
+    STDMETHOD(NextViewport)(THIS_ LPDIRECT3DVIEWPORT3 lpDirect3DViewport3, LPDIRECT3DVIEWPORT3 *lplpDirect3DViewport3, DWORD dwFlags) PURE;
+    STDMETHOD(EnumTextureFormats)(THIS_ LPD3DENUMPIXELFORMATSCALLBACK lpD3DEnumPixelProc, LPVOID lpArg) PURE;
+    STDMETHOD(BeginScene)(THIS) PURE;
+    STDMETHOD(EndScene)(THIS) PURE;
+    STDMETHOD(GetDirect3D)(THIS_ LPDIRECT3D3 *lplpDirect3D3) PURE;
+    /*** DrawPrimitive API ***/
+    STDMETHOD(SetCurrentViewport)(THIS_ LPDIRECT3DVIEWPORT3 lpDirect3DViewport3) PURE;
+    STDMETHOD(GetCurrentViewport)(THIS_ LPDIRECT3DVIEWPORT3 *lplpDirect3DViewport3) PURE;
+    STDMETHOD(SetRenderTarget)(THIS_ LPDIRECTDRAWSURFACE4 lpNewRenderTarget, DWORD dwFlags) PURE;
+    STDMETHOD(GetRenderTarget)(THIS_ LPDIRECTDRAWSURFACE4 *lplpRenderTarget) PURE;
+    STDMETHOD(Begin)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,DWORD dwVertexTypeDesc, DWORD dwFlags) PURE;
+    STDMETHOD(BeginIndexed)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,DWORD d3dvtVertexType, LPVOID lpvVertices, DWORD dwNumVertices, DWORD dwFlags) PURE;
+    STDMETHOD(Vertex)(THIS_ LPVOID lpVertexType) PURE;
+    STDMETHOD(Index)(THIS_ WORD wVertexIndex) PURE;
+    STDMETHOD(End)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE dwRenderStateType, LPDWORD lpdwRenderState) PURE;
+    STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE dwRenderStateType, DWORD dwRenderState) PURE;
+    STDMETHOD(GetLightState)(THIS_ D3DLIGHTSTATETYPE dwLightStateType, LPDWORD lpdwLightState) PURE;
+    STDMETHOD(SetLightState)(THIS_ D3DLIGHTSTATETYPE dwLightStateType, DWORD dwLightState) PURE;
+    STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE dtstTransformStateType, LPD3DMATRIX lpD3DMatrix) PURE;
+    STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE dtstTransformStateType, LPD3DMATRIX lpD3DMatrix) PURE;
+    STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE dtstTransformStateType, LPD3DMATRIX lpD3DMatrix) PURE;
+    STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, DWORD d3dvtVertexType, LPVOID lpvVertices, DWORD dwVertexCount, DWORD dwFlags) PURE;
+    STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, DWORD d3dvtVertexType, LPVOID lpvVertices, DWORD dwVertexCount, LPWORD dwIndices, DWORD dwIndexCount, DWORD dwFlags) PURE;
+    STDMETHOD(SetClipStatus)(THIS_ LPD3DCLIPSTATUS lpD3DClipStatus) PURE;
+    STDMETHOD(GetClipStatus)(THIS_ LPD3DCLIPSTATUS lpD3DClipStatus) PURE;
+    STDMETHOD(DrawPrimitiveStrided)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,DWORD dwVertexType,LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,DWORD dwVertexCount,DWORD dwFlags) PURE;
+    STDMETHOD(DrawIndexedPrimitiveStrided)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,DWORD dwVertexType,LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,DWORD dwVertexCount,LPWORD lpIndex,DWORD dwIndexCount,DWORD dwFlags) PURE;
+    STDMETHOD(DrawPrimitiveVB)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,LPDIRECT3DVERTEXBUFFER lpD3DVertexBuf,DWORD dwStartVertex,DWORD dwNumVertices,DWORD dwFlags) PURE;
+    STDMETHOD(DrawIndexedPrimitiveVB)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,LPDIRECT3DVERTEXBUFFER lpD3DVertexBuf,LPWORD lpwIndices,DWORD dwIndexCount,DWORD dwFlags) PURE;
+    STDMETHOD(ComputeSphereVisibility)(THIS_ LPD3DVECTOR lpCenters,LPD3DVALUE lpRadii,DWORD dwNumSpheres,DWORD dwFlags,LPDWORD lpdwReturnValues) PURE;
+    STDMETHOD(GetTexture)(THIS_ DWORD dwStage,LPDIRECT3DTEXTURE2 *lplpTexture2) PURE;
+    STDMETHOD(SetTexture)(THIS_ DWORD dwStage,LPDIRECT3DTEXTURE2 lpTexture2) PURE;
+    STDMETHOD(GetTextureStageState)(THIS_ DWORD dwStage,D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,LPDWORD lpdwState) PURE;
+    STDMETHOD(SetTextureStageState)(THIS_ DWORD dwStage,D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,DWORD dwState) PURE;
+    STDMETHOD(ValidateDevice)(THIS_ LPDWORD lpdwPasses) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DDevice3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DDevice3_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirect3DDevice3_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirect3DDevice3 methods ***/
+#define IDirect3DDevice3_GetCaps(p,a,b)                        (p)->lpVtbl->GetCaps(p,a,b)
+#define IDirect3DDevice3_GetStats(p,a)                         (p)->lpVtbl->GetStats(p,a)
+#define IDirect3DDevice3_AddViewport(p,a)                      (p)->lpVtbl->AddViewport(p,a)
+#define IDirect3DDevice3_DeleteViewport(p,a)                   (p)->lpVtbl->DeleteViewport(p,a)
+#define IDirect3DDevice3_NextViewport(p,a,b,c)                 (p)->lpVtbl->NextViewport(p,a,b,c)
+#define IDirect3DDevice3_EnumTextureFormats(p,a,b)             (p)->lpVtbl->EnumTextureFormats(p,a,b)
+#define IDirect3DDevice3_BeginScene(p)                         (p)->lpVtbl->BeginScene(p)
+#define IDirect3DDevice3_EndScene(p)                           (p)->lpVtbl->EndScene(p)
+#define IDirect3DDevice3_GetDirect3D(p,a)                      (p)->lpVtbl->GetDirect3D(p,a)
+#define IDirect3DDevice3_SetCurrentViewport(p,a)               (p)->lpVtbl->SetCurrentViewport(p,a)
+#define IDirect3DDevice3_GetCurrentViewport(p,a)               (p)->lpVtbl->GetCurrentViewport(p,a)
+#define IDirect3DDevice3_SetRenderTarget(p,a,b)                (p)->lpVtbl->SetRenderTarget(p,a,b)
+#define IDirect3DDevice3_GetRenderTarget(p,a)                  (p)->lpVtbl->GetRenderTarget(p,a)
+#define IDirect3DDevice3_Begin(p,a,b,c)                        (p)->lpVtbl->Begin(p,a,b,c)
+#define IDirect3DDevice3_BeginIndexed(p,a,b,c,d,e)             (p)->lpVtbl->BeginIndexed(p,a,b,c,d,e)
+#define IDirect3DDevice3_Vertex(p,a)                           (p)->lpVtbl->Vertex(p,a)
+#define IDirect3DDevice3_Index(p,a)                            (p)->lpVtbl->Index(p,a)
+#define IDirect3DDevice3_End(p,a)                              (p)->lpVtbl->End(p,a)
+#define IDirect3DDevice3_GetRenderState(p,a,b)                 (p)->lpVtbl->GetRenderState(p,a,b)
+#define IDirect3DDevice3_SetRenderState(p,a,b)                 (p)->lpVtbl->SetRenderState(p,a,b)
+#define IDirect3DDevice3_GetLightState(p,a,b)                  (p)->lpVtbl->GetLightState(p,a,b)
+#define IDirect3DDevice3_SetLightState(p,a,b)                  (p)->lpVtbl->SetLightState(p,a,b)
+#define IDirect3DDevice3_SetTransform(p,a,b)                   (p)->lpVtbl->SetTransform(p,a,b)
+#define IDirect3DDevice3_GetTransform(p,a,b)                   (p)->lpVtbl->GetTransform(p,a,b)
+#define IDirect3DDevice3_MultiplyTransform(p,a,b)              (p)->lpVtbl->MultiplyTransform(p,a,b)
+#define IDirect3DDevice3_DrawPrimitive(p,a,b,c,d,e)            (p)->lpVtbl->DrawPrimitive(p,a,b,c,d,e)
+#define IDirect3DDevice3_DrawIndexedPrimitive(p,a,b,c,d,e,f,g) (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e,f,g)
+#define IDirect3DDevice3_SetClipStatus(p,a)                    (p)->lpVtbl->SetClipStatus(p,a)
+#define IDirect3DDevice3_GetClipStatus(p,a)                    (p)->lpVtbl->GetClipStatus(p,a)
+#define IDirect3DDevice3_DrawPrimitiveStrided(p,a,b,c,d,e)     (p)->lpVtbl->DrawPrimitiveStrided(p,a,b,c,d,e)
+#define IDirect3DDevice3_DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g) (p)->lpVtbl->DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g)
+#define IDirect3DDevice3_DrawPrimitiveVB(p,a,b,c,d,e)          (p)->lpVtbl->DrawPrimitiveVB(p,a,b,c,d,e)
+#define IDirect3DDevice3_DrawIndexedPrimitiveVB(p,a,b,c,d,e)   (p)->lpVtbl->DrawIndexedPrimitiveVB(p,a,b,c,d,e)
+#define IDirect3DDevice3_ComputeSphereVisibility(p,a,b,c,d,e)  (p)->lpVtbl->ComputeSphereVisibility(p,a,b,c,d,e)
+#define IDirect3DDevice3_GetTexture(p,a,b)                     (p)->lpVtbl->GetTexture(p,a,b)
+#define IDirect3DDevice3_SetTexture(p,a,b)                     (p)->lpVtbl->SetTexture(p,a,b)
+#define IDirect3DDevice3_GetTextureStageState(p,a,b,c)         (p)->lpVtbl->GetTextureStageState(p,a,b,c)
+#define IDirect3DDevice3_SetTextureStageState(p,a,b,c)         (p)->lpVtbl->SetTextureStageState(p,a,b,c)
+#define IDirect3DDevice3_ValidateDevice(p,a)                   (p)->lpVtbl->ValidateDevice(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DDevice3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DDevice3_AddRef(p)             (p)->AddRef()
+#define IDirect3DDevice3_Release(p)            (p)->Release()
+/*** IDirect3DDevice3 methods ***/
+#define IDirect3DDevice3_GetCaps(p,a,b)                        (p)->GetCaps(a,b)
+#define IDirect3DDevice3_GetStats(p,a)                         (p)->GetStats(a)
+#define IDirect3DDevice3_AddViewport(p,a)                      (p)->AddViewport(a)
+#define IDirect3DDevice3_DeleteViewport(p,a)                   (p)->DeleteViewport(a)
+#define IDirect3DDevice3_NextViewport(p,a,b,c)                 (p)->NextViewport(a,b,c)
+#define IDirect3DDevice3_EnumTextureFormats(p,a,b)             (p)->EnumTextureFormats(a,b)
+#define IDirect3DDevice3_BeginScene(p)                         (p)->BeginScene()
+#define IDirect3DDevice3_EndScene(p)                           (p)->EndScene()
+#define IDirect3DDevice3_GetDirect3D(p,a)                      (p)->GetDirect3D(a)
+#define IDirect3DDevice3_SetCurrentViewport(p,a)               (p)->SetCurrentViewport(a)
+#define IDirect3DDevice3_GetCurrentViewport(p,a)               (p)->GetCurrentViewport(a)
+#define IDirect3DDevice3_SetRenderTarget(p,a,b)                (p)->SetRenderTarget(a,b)
+#define IDirect3DDevice3_GetRenderTarget(p,a)                  (p)->GetRenderTarget(a)
+#define IDirect3DDevice3_Begin(p,a,b,c)                        (p)->Begin(a,b,c)
+#define IDirect3DDevice3_BeginIndexed(p,a,b,c,d,e)             (p)->BeginIndexed(a,b,c,d,e)
+#define IDirect3DDevice3_Vertex(p,a)                           (p)->Vertex(a)
+#define IDirect3DDevice3_Index(p,a)                            (p)->Index(a)
+#define IDirect3DDevice3_End(p,a)                              (p)->End(a)
+#define IDirect3DDevice3_GetRenderState(p,a,b)                 (p)->GetRenderState(a,b)
+#define IDirect3DDevice3_SetRenderState(p,a,b)                 (p)->SetRenderState(a,b)
+#define IDirect3DDevice3_GetLightState(p,a,b)                  (p)->GetLightState(a,b)
+#define IDirect3DDevice3_SetLightState(p,a,b)                  (p)->SetLightState(a,b)
+#define IDirect3DDevice3_SetTransform(p,a,b)                   (p)->SetTransform(a,b)
+#define IDirect3DDevice3_GetTransform(p,a,b)                   (p)->GetTransform(a,b)
+#define IDirect3DDevice3_MultiplyTransform(p,a,b)              (p)->MultiplyTransform(a,b)
+#define IDirect3DDevice3_DrawPrimitive(p,a,b,c,d,e)            (p)->DrawPrimitive(a,b,c,d,e)
+#define IDirect3DDevice3_DrawIndexedPrimitive(p,a,b,c,d,e,f,g) (p)->DrawIndexedPrimitive(a,b,c,d,e,f,g)
+#define IDirect3DDevice3_SetClipStatus(p,a)                    (p)->SetClipStatus(a)
+#define IDirect3DDevice3_GetClipStatus(p,a)                    (p)->GetClipStatus(a)
+#define IDirect3DDevice3_DrawPrimitiveStrided(p,a,b,c,d,e)     (p)->DrawPrimitiveStrided(a,b,c,d,e)
+#define IDirect3DDevice3_DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g) (p)->DrawIndexedPrimitiveStrided(a,b,c,d,e,f,g)
+#define IDirect3DDevice3_DrawPrimitiveVB(p,a,b,c,d,e)          (p)->DrawPrimitiveVB(a,b,c,d,e)
+#define IDirect3DDevice3_DrawIndexedPrimitiveVB(p,a,b,c,d,e)   (p)->DrawIndexedPrimitiveVB(a,b,c,d,e)
+#define IDirect3DDevice3_ComputeSphereVisibility(p,a,b,c,d,e)  (p)->ComputeSphereVisibility(a,b,c,d,e)
+#define IDirect3DDevice3_GetTexture(p,a,b)                     (p)->GetTexture(a,b)
+#define IDirect3DDevice3_SetTexture(p,a,b)                     (p)->SetTexture(a,b)
+#define IDirect3DDevice3_GetTextureStageState(p,a,b,c)         (p)->GetTextureStageState(a,b,c)
+#define IDirect3DDevice3_SetTextureStageState(p,a,b,c)         (p)->SetTextureStageState(a,b,c)
+#define IDirect3DDevice3_ValidateDevice(p,a)                   (p)->ValidateDevice(a)
+#endif
+
+/*****************************************************************************
+ * IDirect3DDevice7 interface
+ */
+#define INTERFACE IDirect3DDevice7
+DECLARE_INTERFACE_(IDirect3DDevice7,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DDevice7 methods ***/
+    STDMETHOD(GetCaps)(THIS_ LPD3DDEVICEDESC7 lpD3DHELDevDesc) PURE;
+    STDMETHOD(EnumTextureFormats)(THIS_ LPD3DENUMPIXELFORMATSCALLBACK lpD3DEnumPixelProc, LPVOID lpArg) PURE;
+    STDMETHOD(BeginScene)(THIS) PURE;
+    STDMETHOD(EndScene)(THIS) PURE;
+    STDMETHOD(GetDirect3D)(THIS_ LPDIRECT3D7 *lplpDirect3D3) PURE;
+    STDMETHOD(SetRenderTarget)(THIS_ LPDIRECTDRAWSURFACE7 lpNewRenderTarget,DWORD dwFlags) PURE;
+    STDMETHOD(GetRenderTarget)(THIS_ LPDIRECTDRAWSURFACE7 *lplpRenderTarget) PURE;
+    STDMETHOD(Clear)(THIS_ DWORD dwCount,LPD3DRECT lpRects,DWORD dwFlags,D3DCOLOR dwColor,D3DVALUE dvZ,DWORD dwStencil) PURE;
+    STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE dtstTransformStateType, LPD3DMATRIX lpD3DMatrix) PURE;
+    STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE dtstTransformStateType, LPD3DMATRIX lpD3DMatrix) PURE;
+    STDMETHOD(SetViewport)(THIS_ LPD3DVIEWPORT7 lpData) PURE;
+    STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE dtstTransformStateType,LPD3DMATRIX lpD3DMatrix) PURE;
+    STDMETHOD(GetViewport)(THIS_ LPD3DVIEWPORT7 lpData) PURE;
+    STDMETHOD(SetMaterial)(THIS_ LPD3DMATERIAL7 lpMat) PURE;
+    STDMETHOD(GetMaterial)(THIS_ LPD3DMATERIAL7 lpMat) PURE;
+    STDMETHOD(SetLight)(THIS_ DWORD dwLightIndex,LPD3DLIGHT7 lpLight) PURE;
+    STDMETHOD(GetLight)(THIS_ DWORD dwLightIndex,LPD3DLIGHT7 lpLight) PURE;
+    STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE dwRenderStateType, DWORD dwRenderState) PURE;
+    STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE dwRenderStateType, LPDWORD lpdwRenderState) PURE;
+    STDMETHOD(BeginStateBlock)(THIS) PURE;
+    STDMETHOD(EndStateBlock)(THIS_ LPDWORD lpdwBlockHandle) PURE;
+    STDMETHOD(PreLoad)(THIS_ LPDIRECTDRAWSURFACE7 lpddsTexture) PURE;
+    STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, DWORD d3dvtVertexType, LPVOID lpvVertices, DWORD dwVertexCount, DWORD dwFlags) PURE;
+    STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, DWORD d3dvtVertexType, LPVOID lpvVertices, DWORD dwVertexCount, LPWORD dwIndices, DWORD dwIndexCount, DWORD dwFlags) PURE;
+    STDMETHOD(SetClipStatus)(THIS_ LPD3DCLIPSTATUS lpD3DClipStatus) PURE;
+    STDMETHOD(GetClipStatus)(THIS_ LPD3DCLIPSTATUS lpD3DClipStatus) PURE;
+    STDMETHOD(DrawPrimitiveStrided)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,DWORD dwVertexType,LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,DWORD dwVertexCount,DWORD dwFlags) PURE;
+    STDMETHOD(DrawIndexedPrimitiveStrided)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,DWORD dwVertexType,LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,DWORD dwVertexCount,LPWORD lpIndex,DWORD dwIndexCount,DWORD dwFlags) PURE;
+    STDMETHOD(DrawPrimitiveVB)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,LPDIRECT3DVERTEXBUFFER7 lpD3DVertexBuf,DWORD dwStartVertex,DWORD dwNumVertices,DWORD dwFlags) PURE;
+    STDMETHOD(DrawIndexedPrimitiveVB)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,LPDIRECT3DVERTEXBUFFER7 lpD3DVertexBuf,DWORD dwStartVertex,DWORD dwNumVertices,LPWORD lpwIndices,DWORD dwIndexCount,DWORD dwFlags) PURE;
+    STDMETHOD(ComputeSphereVisibility)(THIS_ LPD3DVECTOR lpCenters,LPD3DVALUE lpRadii,DWORD dwNumSpheres,DWORD dwFlags,LPDWORD lpdwReturnValues) PURE;
+    STDMETHOD(GetTexture)(THIS_ DWORD dwStage,LPDIRECTDRAWSURFACE7 *lpTexture) PURE;
+    STDMETHOD(SetTexture)(THIS_ DWORD dwStage,LPDIRECTDRAWSURFACE7 lpTexture) PURE;
+    STDMETHOD(GetTextureStageState)(THIS_ DWORD dwStage,D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,LPDWORD lpdwState) PURE;
+    STDMETHOD(SetTextureStageState)(THIS_ DWORD dwStage,D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,DWORD dwState) PURE;
+    STDMETHOD(ValidateDevice)(THIS_ LPDWORD lpdwPasses) PURE;
+    STDMETHOD(ApplyStateBlock)(THIS_ DWORD dwBlockHandle) PURE;
+    STDMETHOD(CaptureStateBlock)(THIS_ DWORD dwBlockHandle) PURE;
+    STDMETHOD(DeleteStateBlock)(THIS_ DWORD dwBlockHandle) PURE;
+    STDMETHOD(CreateStateBlock)(THIS_ D3DSTATEBLOCKTYPE d3dsbType,LPDWORD lpdwBlockHandle) PURE;
+    STDMETHOD(Load)(THIS_ LPDIRECTDRAWSURFACE7 lpDestTex,LPPOINT lpDestPoint,LPDIRECTDRAWSURFACE7 lpSrcTex,LPRECT lprcSrcRect,DWORD dwFlags) PURE;
+    STDMETHOD(LightEnable)(THIS_ DWORD dwLightIndex,BOOL bEnable) PURE;
+    STDMETHOD(GetLightEnable)(THIS_ DWORD dwLightIndex,BOOL *pbEnable) PURE;
+    STDMETHOD(SetClipPlane)(THIS_ DWORD dwIndex,D3DVALUE *pPlaneEquation) PURE;
+    STDMETHOD(GetClipPlane)(THIS_ DWORD dwIndex,D3DVALUE *pPlaneEquation) PURE;
+    STDMETHOD(GetInfo)(THIS_ DWORD dwDevInfoID,LPVOID pDevInfoStruct,DWORD dwSize) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DDevice7_QueryInterface(p,a,b)                        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DDevice7_AddRef(p)                                    (p)->lpVtbl->AddRef(p)
+#define IDirect3DDevice7_Release(p)                                   (p)->lpVtbl->Release(p)
+/*** IDirect3DDevice7 methods ***/
+#define IDirect3DDevice7_GetCaps(p,a)                                 (p)->lpVtbl->GetCaps(p,a)
+#define IDirect3DDevice7_EnumTextureFormats(p,a,b)                    (p)->lpVtbl->EnumTextureFormats(p,a,b)
+#define IDirect3DDevice7_BeginScene(p)                                (p)->lpVtbl->BeginScene(p)
+#define IDirect3DDevice7_EndScene(p)                                  (p)->lpVtbl->EndScene(p)
+#define IDirect3DDevice7_GetDirect3D(p,a)                             (p)->lpVtbl->GetDirect3D(p,a)
+#define IDirect3DDevice7_SetRenderTarget(p,a,b)                       (p)->lpVtbl->SetRenderTarget(p,a,b)
+#define IDirect3DDevice7_GetRenderTarget(p,a)                         (p)->lpVtbl->GetRenderTarget(p,a)
+#define IDirect3DDevice7_Clear(p,a,b,c,d,e,f)                         (p)->lpVtbl->Clear(p,a,b,c,d,e,f)
+#define IDirect3DDevice7_SetTransform(p,a,b)                          (p)->lpVtbl->SetTransform(p,a,b)
+#define IDirect3DDevice7_GetTransform(p,a,b)                          (p)->lpVtbl->GetTransform(p,a,b)
+#define IDirect3DDevice7_SetViewport(p,a)                             (p)->lpVtbl->SetViewport(p,a)
+#define IDirect3DDevice7_MultiplyTransform(p,a,b)                     (p)->lpVtbl->MultiplyTransform(p,a,b)
+#define IDirect3DDevice7_GetViewport(p,a)                             (p)->lpVtbl->GetViewport(p,a)
+#define IDirect3DDevice7_SetMaterial(p,a)                             (p)->lpVtbl->SetMaterial(p,a)
+#define IDirect3DDevice7_GetMaterial(p,a)                             (p)->lpVtbl->GetMaterial(p,a)
+#define IDirect3DDevice7_SetLight(p,a,b)                              (p)->lpVtbl->SetLight(p,a,b)
+#define IDirect3DDevice7_GetLight(p,a,b)                              (p)->lpVtbl->GetLight(p,a,b)
+#define IDirect3DDevice7_SetRenderState(p,a,b)                        (p)->lpVtbl->SetRenderState(p,a,b)
+#define IDirect3DDevice7_GetRenderState(p,a,b)                        (p)->lpVtbl->GetRenderState(p,a,b)
+#define IDirect3DDevice7_BeginStateBlock(p)                           (p)->lpVtbl->BeginStateBlock(p)
+#define IDirect3DDevice7_EndStateBlock(p,a)                           (p)->lpVtbl->EndStateBlock(p,a)
+#define IDirect3DDevice7_PreLoad(p,a)                                 (p)->lpVtbl->PreLoad(p,a)
+#define IDirect3DDevice7_DrawPrimitive(p,a,b,c,d,e)                   (p)->lpVtbl->DrawPrimitive(p,a,b,c,d,e)
+#define IDirect3DDevice7_DrawIndexedPrimitive(p,a,b,c,d,e,f,g)        (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e,f,g)
+#define IDirect3DDevice7_SetClipStatus(p,a)                           (p)->lpVtbl->SetClipStatus(p,a)
+#define IDirect3DDevice7_GetClipStatus(p,a)                           (p)->lpVtbl->GetClipStatus(p,a)
+#define IDirect3DDevice7_DrawPrimitiveStrided(p,a,b,c,d,e)            (p)->lpVtbl->DrawPrimitiveStrided(p,a,b,c,d,e)
+#define IDirect3DDevice7_DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g) (p)->lpVtbl->DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g)
+#define IDirect3DDevice7_DrawPrimitiveVB(p,a,b,c,d,e)                 (p)->lpVtbl->DrawPrimitiveVB(p,a,b,c,d,e)
+#define IDirect3DDevice7_DrawIndexedPrimitiveVB(p,a,b,c,d,e,f,g)      (p)->lpVtbl->DrawIndexedPrimitiveVB(p,a,b,c,d,e,f,g)
+#define IDirect3DDevice7_ComputeSphereVisibility(p,a,b,c,d,e)         (p)->lpVtbl->ComputeSphereVisibility(p,a,b,c,d,e)
+#define IDirect3DDevice7_GetTexture(p,a,b)                            (p)->lpVtbl->GetTexture(p,a,b)
+#define IDirect3DDevice7_SetTexture(p,a,b)                            (p)->lpVtbl->SetTexture(p,a,b)
+#define IDirect3DDevice7_GetTextureStageState(p,a,b,c)                (p)->lpVtbl->GetTextureStageState(p,a,b,c)
+#define IDirect3DDevice7_SetTextureStageState(p,a,b,c)                (p)->lpVtbl->SetTextureStageState(p,a,b,c)
+#define IDirect3DDevice7_ValidateDevice(p,a)                          (p)->lpVtbl->ValidateDevice(p,a)
+#define IDirect3DDevice7_ApplyStateBlock(p,a)                         (p)->lpVtbl->ApplyStateBlock(p,a)
+#define IDirect3DDevice7_CaptureStateBlock(p,a)                       (p)->lpVtbl->CaptureStateBlock(p,a)
+#define IDirect3DDevice7_DeleteStateBlock(p,a)                        (p)->lpVtbl->DeleteStateBlock(p,a)
+#define IDirect3DDevice7_CreateStateBlock(p,a,b)                      (p)->lpVtbl->CreateStateBlock(p,a,b)
+#define IDirect3DDevice7_Load(p,a,b,c,d,e)                            (p)->lpVtbl->Load(p,a,b,c,d,e)
+#define IDirect3DDevice7_LightEnable(p,a,b)                           (p)->lpVtbl->LightEnable(p,a,b)
+#define IDirect3DDevice7_GetLightEnable(p,a,b)                        (p)->lpVtbl->GetLightEnable(p,a,b)
+#define IDirect3DDevice7_SetClipPlane(p,a,b)                          (p)->lpVtbl->SetClipPlane(p,a,b)
+#define IDirect3DDevice7_GetClipPlane(p,a,b)                          (p)->lpVtbl->GetClipPlane(p,a,b)
+#define IDirect3DDevice7_GetInfo(p,a,b,c)                             (p)->lpVtbl->GetInfo(p,a,b,c)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DDevice7_QueryInterface(p,a,b)                        (p)->QueryInterface(a,b)
+#define IDirect3DDevice7_AddRef(p)                                    (p)->AddRef()
+#define IDirect3DDevice7_Release(p)                                   (p)->Release()
+/*** IDirect3DDevice7 methods ***/
+#define IDirect3DDevice7_GetCaps(p,a)                                 (p)->GetCaps(a)
+#define IDirect3DDevice7_EnumTextureFormats(p,a,b)                    (p)->EnumTextureFormats(a,b)
+#define IDirect3DDevice7_BeginScene(p)                                (p)->BeginScene()
+#define IDirect3DDevice7_EndScene(p)                                  (p)->EndScene()
+#define IDirect3DDevice7_GetDirect3D(p,a)                             (p)->GetDirect3D(a)
+#define IDirect3DDevice7_SetRenderTarget(p,a,b)                       (p)->SetRenderTarget(a,b)
+#define IDirect3DDevice7_GetRenderTarget(p,a)                         (p)->GetRenderTarget(a)
+#define IDirect3DDevice7_Clear(p,a,b,c,d,e,f)                         (p)->Clear(a,b,c,d,e,f)
+#define IDirect3DDevice7_SetTransform(p,a,b)                          (p)->SetTransform(a,b)
+#define IDirect3DDevice7_GetTransform(p,a,b)                          (p)->GetTransform(a,b)
+#define IDirect3DDevice7_SetViewport(p,a)                             (p)->SetViewport(a)
+#define IDirect3DDevice7_MultiplyTransform(p,a,b)                     (p)->MultiplyTransform(a,b)
+#define IDirect3DDevice7_GetViewport(p,a)                             (p)->GetViewport(a)
+#define IDirect3DDevice7_SetMaterial(p,a)                             (p)->SetMaterial(a)
+#define IDirect3DDevice7_GetMaterial(p,a)                             (p)->GetMaterial(a)
+#define IDirect3DDevice7_SetLight(p,a,b)                              (p)->SetLight(a,b)
+#define IDirect3DDevice7_GetLight(p,a,b)                              (p)->GetLight(a,b)
+#define IDirect3DDevice7_SetRenderState(p,a,b)                        (p)->SetRenderState(a,b)
+#define IDirect3DDevice7_GetRenderState(p,a,b)                        (p)->GetRenderState(a,b)
+#define IDirect3DDevice7_BeginStateBlock(p)                           (p)->BeginStateBlock()
+#define IDirect3DDevice7_EndStateBlock(p,a)                           (p)->EndStateBlock(a)
+#define IDirect3DDevice7_PreLoad(p,a)                                 (p)->PreLoad(a)
+#define IDirect3DDevice7_DrawPrimitive(p,a,b,c,d,e)                   (p)->DrawPrimitive(a,b,c,d,e)
+#define IDirect3DDevice7_DrawIndexedPrimitive(p,a,b,c,d,e,f,g)        (p)->DrawIndexedPrimitive(a,b,c,d,e,f,g)
+#define IDirect3DDevice7_SetClipStatus(p,a)                           (p)->SetClipStatus(a)
+#define IDirect3DDevice7_GetClipStatus(p,a)                           (p)->GetClipStatus(a)
+#define IDirect3DDevice7_DrawPrimitiveStrided(p,a,b,c,d,e)            (p)->DrawPrimitiveStrided(a,b,c,d,e)
+#define IDirect3DDevice7_DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g) (p)->DrawIndexedPrimitiveStrided(a,b,c,d,e,f,g)
+#define IDirect3DDevice7_DrawPrimitiveVB(p,a,b,c,d,e)                 (p)->DrawPrimitiveVB(a,b,c,d,e)
+#define IDirect3DDevice7_DrawIndexedPrimitiveVB(p,a,b,c,d,e,f,g)      (p)->DrawIndexedPrimitiveVB(a,b,c,d,e,f,g)
+#define IDirect3DDevice7_ComputeSphereVisibility(p,a,b,c,d,e)         (p)->ComputeSphereVisibility(a,b,c,d,e)
+#define IDirect3DDevice7_GetTexture(p,a,b)                            (p)->GetTexture(a,b)
+#define IDirect3DDevice7_SetTexture(p,a,b)                            (p)->SetTexture(a,b)
+#define IDirect3DDevice7_GetTextureStageState(p,a,b,c)                (p)->GetTextureStageState(a,b,c)
+#define IDirect3DDevice7_SetTextureStageState(p,a,b,c)                (p)->SetTextureStageState(a,b,c)
+#define IDirect3DDevice7_ValidateDevice(p,a)                          (p)->ValidateDevice(a)
+#define IDirect3DDevice7_ApplyStateBlock(p,a)                         (p)->ApplyStateBlock(a)
+#define IDirect3DDevice7_CaptureStateBlock(p,a)                       (p)->CaptureStateBlock(a)
+#define IDirect3DDevice7_DeleteStateBlock(p,a)                        (p)->DeleteStateBlock(a)
+#define IDirect3DDevice7_CreateStateBlock(p,a,b)                      (p)->CreateStateBlock(a,b)
+#define IDirect3DDevice7_Load(p,a,b,c,d,e)                            (p)->Load(a,b,c,d,e)
+#define IDirect3DDevice7_LightEnable(p,a,b)                           (p)->LightEnable(a,b)
+#define IDirect3DDevice7_GetLightEnable(p,a,b)                        (p)->GetLightEnable(a,b)
+#define IDirect3DDevice7_SetClipPlane(p,a,b)                          (p)->SetClipPlane(a,b)
+#define IDirect3DDevice7_GetClipPlane(p,a,b)                          (p)->GetClipPlane(a,b)
+#define IDirect3DDevice7_GetInfo(p,a,b,c)                             (p)->GetInfo(a,b,c)
+#endif
+
+
+
+/*****************************************************************************
+ * IDirect3DVertexBuffer interface
+ */
+#define INTERFACE IDirect3DVertexBuffer
+DECLARE_INTERFACE_(IDirect3DVertexBuffer,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DVertexBuffer methods ***/
+    STDMETHOD(Lock)(THIS_ DWORD dwFlags,LPVOID *lplpData,LPDWORD lpdwSize) PURE;
+    STDMETHOD(Unlock)(THIS) PURE;
+    STDMETHOD(ProcessVertices)(THIS_ DWORD dwVertexOp,DWORD dwDestIndex,DWORD dwCount,LPDIRECT3DVERTEXBUFFER lpSrcBuffer,DWORD dwSrcIndex,LPDIRECT3DDEVICE3 lpD3DDevice,DWORD dwFlags) PURE;
+    STDMETHOD(GetVertexBufferDesc)(THIS_ LPD3DVERTEXBUFFERDESC lpD3DVertexBufferDesc) PURE;
+    STDMETHOD(Optimize)(THIS_ LPDIRECT3DDEVICE3  lpD3DDevice,DWORD dwFlags) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DVertexBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVertexBuffer_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirect3DVertexBuffer_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirect3DVertexBuffer methods ***/
+#define IDirect3DVertexBuffer_Lock(p,a,b,c)                    (p)->lpVtbl->Lock(p,a,b,c)
+#define IDirect3DVertexBuffer_Unlock(p)                        (p)->lpVtbl->Unlock(p)
+#define IDirect3DVertexBuffer_ProcessVertices(p,a,b,c,d,e,f,g) (p)->lpVtbl->ProcessVertices(p,a,b,c,d,e,f,g)
+#define IDirect3DVertexBuffer_GetVertexBufferDesc(p,a)         (p)->lpVtbl->GetVertexBufferDesc(p,a)
+#define IDirect3DVertexBuffer_Optimize(p,a,b)                  (p)->lpVtbl->Optimize(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DVertexBuffer_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DVertexBuffer_AddRef(p)             (p)->AddRef()
+#define IDirect3DVertexBuffer_Release(p)            (p)->Release()
+/*** IDirect3DVertexBuffer methods ***/
+#define IDirect3DVertexBuffer_Lock(p,a,b,c)                    (p)->Lock(a,b,c)
+#define IDirect3DVertexBuffer_Unlock(p)                        (p)->Unlock()
+#define IDirect3DVertexBuffer_ProcessVertices(p,a,b,c,d,e,f,g) (p)->ProcessVertices(a,b,c,d,e,f,g)
+#define IDirect3DVertexBuffer_GetVertexBufferDesc(p,a)         (p)->GetVertexBufferDesc(a)
+#define IDirect3DVertexBuffer_Optimize(p,a,b)                  (p)->Optimize(a,b)
+#endif
+
+/*****************************************************************************
+ * IDirect3DVertexBuffer7 interface
+ */
+#define INTERFACE IDirect3DVertexBuffer7
+DECLARE_INTERFACE_(IDirect3DVertexBuffer7,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DVertexBuffer7 methods ***/
+    STDMETHOD(Lock)(THIS_ DWORD dwFlags,LPVOID *lplpData,LPDWORD lpdwSize) PURE;
+    STDMETHOD(Unlock)(THIS) PURE;
+    STDMETHOD(ProcessVertices)(THIS_ DWORD dwVertexOp,DWORD dwDestIndex,DWORD dwCount,LPDIRECT3DVERTEXBUFFER7 lpSrcBuffer,DWORD dwSrcIndex,LPDIRECT3DDEVICE7 lpD3DDevice,DWORD dwFlags) PURE;
+    STDMETHOD(GetVertexBufferDesc)(THIS_ LPD3DVERTEXBUFFERDESC lpD3DVertexBufferDesc) PURE;
+    STDMETHOD(Optimize)(THIS_ LPDIRECT3DDEVICE7  lpD3DDevice,DWORD dwFlags) PURE;
+    STDMETHOD(ProcessVerticesStrided)(THIS_ DWORD dwVertexOp,DWORD dwDestIndex,DWORD dwCount,LPD3DDRAWPRIMITIVESTRIDEDDATA lpStrideData,DWORD dwVertexTypeDesc,LPDIRECT3DDEVICE7 lpD3DDevice,DWORD dwFlags) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DVertexBuffer7_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVertexBuffer7_AddRef(p)                               (p)->lpVtbl->AddRef(p)
+#define IDirect3DVertexBuffer7_Release(p)                              (p)->lpVtbl->Release(p)
+/*** IDirect3DVertexBuffer7 methods ***/
+#define IDirect3DVertexBuffer7_Lock(p,a,b,c)                           (p)->lpVtbl->Lock(p,a,b,c)
+#define IDirect3DVertexBuffer7_Unlock(p)                               (p)->lpVtbl->Unlock(p)
+#define IDirect3DVertexBuffer7_ProcessVertices(p,a,b,c,d,e,f,g)        (p)->lpVtbl->ProcessVertices(p,a,b,c,d,e,f,g)
+#define IDirect3DVertexBuffer7_GetVertexBufferDesc(p,a)                (p)->lpVtbl->GetVertexBufferDesc(p,a)
+#define IDirect3DVertexBuffer7_Optimize(p,a,b)                         (p)->lpVtbl->Optimize(p,a,b)
+#define IDirect3DVertexBuffer7_ProcessVerticesStrided(p,a,b,c,d,e,f,g) (p)->lpVtbl->ProcessVerticesStrided(p,a,b,c,d,e,f,g)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DVertexBuffer7_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
+#define IDirect3DVertexBuffer7_AddRef(p)                               (p)->AddRef()
+#define IDirect3DVertexBuffer7_Release(p)                              (p)->Release()
+/*** IDirect3DVertexBuffer7 methods ***/
+#define IDirect3DVertexBuffer7_Lock(p,a,b,c)                           (p)->Lock(a,b,c)
+#define IDirect3DVertexBuffer7_Unlock(p)                               (p)->Unlock()
+#define IDirect3DVertexBuffer7_ProcessVertices(p,a,b,c,d,e,f,g)        (p)->ProcessVertices(a,b,c,d,e,f,g)
+#define IDirect3DVertexBuffer7_GetVertexBufferDesc(p,a)                (p)->GetVertexBufferDesc(a)
+#define IDirect3DVertexBuffer7_Optimize(p,a,b)                         (p)->Optimize(a,b)
+#define IDirect3DVertexBuffer7_ProcessVerticesStrided(p,a,b,c,d,e,f,g) (p)->ProcessVerticesStrided(a,b,c,d,e,f,g)
+#endif
+
+#endif /* __WINE_D3D_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3d10.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3d10.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3d10.idl	(revision 16410)
@@ -0,0 +1,1539 @@
+/*
+ * Copyright 2007 Andras Kovacs
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "oaidl.idl";
+import "ocidl.idl";
+import "dxgi.idl";
+
+cpp_quote("#ifndef _D3D10_CONSTANTS")
+cpp_quote("#define _D3D10_CONSTANTS")
+const float D3D10_DEFAULT_BLEND_FACTOR_ALPHA                                            = 1.0;
+const float D3D10_DEFAULT_BLEND_FACTOR_BLUE                                             = 1.0;
+const float D3D10_DEFAULT_BLEND_FACTOR_GREEN                                            = 1.0;
+const float D3D10_DEFAULT_BLEND_FACTOR_RED                                              = 1.0;
+const float D3D10_DEFAULT_BORDER_COLOR_COMPONENT                                        = 0.0;
+const float D3D10_DEFAULT_SLOPE_SCALED_DEPTH_BIAS                                       = 0.0;
+const float D3D10_DEFAULT_DEPTH_BIAS_CLAMP                                              = 0.0;
+const float D3D10_DEFAULT_MAX_ANISOTROPY                                                = 16.0;
+const float D3D10_DEFAULT_MIP_LOD_BIAS                                                  = 0.0;
+const float D3D10_DEFAULT_VIEWPORT_MAX_DEPTH                                            = 0.0;
+const float D3D10_DEFAULT_VIEWPORT_MIN_DEPTH                                            = 0.0;
+const float D3D10_FLOAT16_FUSED_TOLERANCE_IN_ULP                                        = 0.6;
+const float D3D10_FLOAT32_MAX                                                           = 3.402823466e+38;
+const float D3D10_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP                                   = 0.6;
+const float D3D10_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR                                    = 2.4;
+const float D3D10_FLOAT_TO_SRGB_EXPONENT_NUMERATOR                                      = 1.0;
+const float D3D10_FLOAT_TO_SRGB_OFFSET                                                  = 0.055;
+const float D3D10_FLOAT_TO_SRGB_SCALE_1                                                 = 12.92;
+const float D3D10_FLOAT_TO_SRGB_SCALE_2                                                 = 1.055;
+const float D3D10_FLOAT_TO_SRGB_THRESHOLD                                               = 0.0031308;
+const float D3D10_FTOI_INSTRUCTION_MAX_INPUT                                            = 2147483647.999;
+const float D3D10_FTOI_INSTRUCTION_MIN_INPUT                                            = -2147483648.999;
+const float D3D10_FTOU_INSTRUCTION_MAX_INPUT                                            = 4294967295.999;
+const float D3D10_FTOU_INSTRUCTION_MIN_INPUT                                            = 0.0;
+const float D3D10_LINEAR_GAMMA                                                          = 1.0;
+const float D3D10_MAX_BORDER_COLOR_COMPONENT                                            = 1.0;
+const float D3D10_MAX_DEPTH                                                             = 1.0;
+const float D3D10_MAX_POSITION_VALUE                                                    = 3.402823466e+34;
+const float D3D10_MIN_BORDER_COLOR_COMPONENT                                            = 0.0;
+const float D3D10_MIN_DEPTH                                                             = 0.0;
+const float D3D10_MIP_LOD_BIAS_MAX                                                      = 15.99;
+const float D3D10_MIP_LOD_BIAS_MIN                                                      = -16.0;
+const float D3D10_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT                                  = 0.5;
+const float D3D10_MULTISAMPLE_ANTIALIAS_LINE_WIDTH                                      = 1.4;
+const float D3D10_SRGB_GAMMA                                                            = 2.2;
+const float D3D10_SRGB_TO_FLOAT_DENOMINATOR_1                                           = 12.92;
+const float D3D10_SRGB_TO_FLOAT_DENOMINATOR_2                                           = 1.055;
+const float D3D10_SRGB_TO_FLOAT_EXPONENT                                                = 2.4;
+const float D3D10_SRGB_TO_FLOAT_OFFSET                                                  = 0.055;
+const float D3D10_SRGB_TO_FLOAT_THRESHOLD                                               = 0.04045;
+const float D3D10_SRGB_TO_FLOAT_TOLERANCE_IN_ULP                                        = 0.5;
+const float D3D10_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT                           = 0.0;
+const float D3D_SPEC_VERSION                                                            = 1.050005;
+const unsigned int D3D10_16BIT_INDEX_STRIP_CUT_VALUE                                    = 0xffff;
+const unsigned int D3D10_32BIT_INDEX_STRIP_CUT_VALUE                                    = 0xffffffff;
+const unsigned int D3D10_8BIT_INDEX_STRIP_CUT_VALUE                                     = 0xff;
+const unsigned int D3D10_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT                             = 9;
+const unsigned int D3D10_CLIP_OR_CULL_DISTANCE_COUNT                                    = 8;
+const unsigned int D3D10_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT                            = 2;
+const unsigned int D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT                    = 14;
+const unsigned int D3D10_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS                        = 4;
+const unsigned int D3D10_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT               = 32;
+const unsigned int D3D10_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT                     = 15;
+const unsigned int D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS               = 4;
+const unsigned int D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT                    = 15;
+const unsigned int D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST           = 1;
+const unsigned int D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS               = 1;
+const unsigned int D3D10_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT                         = 64;
+const unsigned int D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS     = 4;
+const unsigned int D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT          = 1;
+const unsigned int D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1;
+const unsigned int D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS     = 1;
+const unsigned int D3D10_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT               = 32;
+const unsigned int D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS                = 1;
+const unsigned int D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT                     = 128;
+const unsigned int D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST            = 1;
+const unsigned int D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS                = 1;
+const unsigned int D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT                         = 128;
+const unsigned int D3D10_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS                       = 1;
+const unsigned int D3D10_COMMONSHADER_SAMPLER_REGISTER_COUNT                            = 16;
+const unsigned int D3D10_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST                   = 1;
+const unsigned int D3D10_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS                       = 1;
+const unsigned int D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT                                = 16;
+const unsigned int D3D10_COMMONSHADER_SUBROUTINE_NESTING_LIMIT                          = 32;
+const unsigned int D3D10_COMMONSHADER_TEMP_REGISTER_COMPONENTS                          = 4;
+const unsigned int D3D10_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT                 = 32;
+const unsigned int D3D10_COMMONSHADER_TEMP_REGISTER_COUNT                               = 4096;
+const unsigned int D3D10_COMMONSHADER_TEMP_REGISTER_READS_PER_INST                      = 3;
+const unsigned int D3D10_COMMONSHADER_TEMP_REGISTER_READ_PORTS                          = 3;
+const unsigned int D3D10_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX                      = 10;
+const int D3D10_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN                               = -10;
+const int D3D10_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE                                  = -8;
+const unsigned int D3D10_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE                         = 7;
+const unsigned int D3D10_DEFAULT_DEPTH_BIAS                                             = 0;
+const unsigned int D3D10_DEFAULT_RENDER_TARGET_ARRAY_INDEX                              = 0;
+const unsigned int D3D10_DEFAULT_SAMPLE_MASK                                            = 0xffffffff;
+const unsigned int D3D10_DEFAULT_SCISSOR_ENDX                                           = 0;
+const unsigned int D3D10_DEFAULT_SCISSOR_ENDY                                           = 0;
+const unsigned int D3D10_DEFAULT_SCISSOR_STARTX                                         = 0;
+const unsigned int D3D10_DEFAULT_SCISSOR_STARTY                                         = 0;
+const unsigned int D3D10_DEFAULT_STENCIL_READ_MASK                                      = 0xff;
+const unsigned int D3D10_DEFAULT_STENCIL_REFERENCE                                      = 0;
+const unsigned int D3D10_DEFAULT_STENCIL_WRITE_MASK                                     = 0xff;
+const unsigned int D3D10_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX                         = 0;
+const unsigned int D3D10_DEFAULT_VIEWPORT_HEIGHT                                        = 0;
+const unsigned int D3D10_DEFAULT_VIEWPORT_TOPLEFTX                                      = 0;
+const unsigned int D3D10_DEFAULT_VIEWPORT_TOPLEFTY                                      = 0;
+const unsigned int D3D10_DEFAULT_VIEWPORT_WIDTH                                         = 0;
+const unsigned int D3D10_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS                        = 1;
+const unsigned int D3D10_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT               = 32;
+const unsigned int D3D10_GS_INPUT_PRIM_CONST_REGISTER_COUNT                             = 1;
+const unsigned int D3D10_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST                    = 2;
+const unsigned int D3D10_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS                        = 1;
+const unsigned int D3D10_GS_INPUT_REGISTER_COMPONENTS                                   = 4;
+const unsigned int D3D10_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT                          =32;
+const unsigned int D3D10_GS_INPUT_REGISTER_COUNT                                        = 16;
+const unsigned int D3D10_GS_INPUT_REGISTER_READS_PER_INST                               = 2;
+const unsigned int D3D10_GS_INPUT_REGISTER_READ_PORTS                                   = 1;
+const unsigned int D3D10_GS_INPUT_REGISTER_VERTICES                                     = 6;
+const unsigned int D3D10_GS_OUTPUT_ELEMENTS                                             = 32;
+const unsigned int D3D10_GS_OUTPUT_REGISTER_COMPONENTS                                  = 4;
+const unsigned int D3D10_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT                         = 32;
+const unsigned int D3D10_GS_OUTPUT_REGISTER_COUNT                                       = 32;
+const unsigned int D3D10_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES                        = 0;
+const unsigned int D3D10_IA_DEFAULT_PRIMITIVE_TOPOLOGY                                  = 0;
+const unsigned int D3D10_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES                       = 0;
+const unsigned int D3D10_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT                             = 1;
+const unsigned int D3D10_IA_INSTANCE_ID_BIT_COUNT                                       = 32;
+const unsigned int D3D10_IA_INTEGER_ARITHMETIC_BIT_COUNT                                = 32;
+const unsigned int D3D10_IA_PRIMITIVE_ID_BIT_COUNT                                      = 32;
+const unsigned int D3D10_IA_VERTEX_ID_BIT_COUNT                                         = 32;
+const unsigned int D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT                            = 16;
+const unsigned int D3D10_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS                  = 64;
+const unsigned int D3D10_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT                        = 16;
+const unsigned int D3D10_INTEGER_DIVIDE_BY_ZERO_QUOTIENT                                = 0xffffffff;
+const unsigned int D3D10_INTEGER_DIVIDE_BY_ZERO_REMAINDER                               = 0xffffffff;
+const unsigned int D3D10_MAX_MAXANISOTROPY                                              = 16;
+const unsigned int D3D10_MAX_MULTISAMPLE_SAMPLE_COUNT                                   = 32;
+const unsigned int D3D10_MAX_TEXTURE_DIMENSION_2_TO_EXP                                 = 17;
+const unsigned int D3D10_MIN_MAXANISOTROPY                                              = 0;
+const unsigned int D3D10_MIP_LOD_FRACTIONAL_BIT_COUNT                                   = 6;
+const unsigned int D3D10_MIP_LOD_RANGE_BIT_COUNT                                        = 8;
+const unsigned int D3D10_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT                     = 0;
+const unsigned int D3D10_PIXEL_ADDRESS_RANGE_BIT_COUNT                                  = 13;
+const unsigned int D3D10_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT                      = 15;
+const unsigned int D3D10_PS_FRONTFACING_DEFAULT_VALUE                                   = 0xffffffff;
+const unsigned int D3D10_PS_FRONTFACING_FALSE_VALUE                                     = 0;
+const unsigned int D3D10_PS_FRONTFACING_TRUE_VALUE                                      = 0xffffffff;
+const unsigned int D3D10_PS_INPUT_REGISTER_COMPONENTS                                   = 4;
+const unsigned int D3D10_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT                          = 32;
+const unsigned int D3D10_PS_INPUT_REGISTER_COUNT                                        = 32;
+const unsigned int D3D10_PS_INPUT_REGISTER_READS_PER_INST                               = 2;
+const unsigned int D3D10_PS_INPUT_REGISTER_READ_PORTS                                   = 1;
+const unsigned int D3D10_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS                            = 1;
+const unsigned int D3D10_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT                   = 32;
+const unsigned int D3D10_PS_OUTPUT_DEPTH_REGISTER_COUNT                                 = 1;
+const unsigned int D3D10_PS_OUTPUT_REGISTER_COMPONENTS                                  = 4;
+const unsigned int D3D10_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT                         = 32;
+const unsigned int D3D10_PS_OUTPUT_REGISTER_COUNT                                       = 8;
+const unsigned int D3D10_REQ_BLEND_OBJECT_COUNT_PER_CONTEXT                             = 4096;
+const unsigned int D3D10_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP                       = 27;
+const unsigned int D3D10_REQ_CONSTANT_BUFFER_ELEMENT_COUNT                              = 4096;
+const unsigned int D3D10_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_CONTEXT                     = 4096;
+const unsigned int D3D10_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP                           = 32;
+const unsigned int D3D10_REQ_DRAW_VERTEX_COUNT_2_TO_EXP                                 = 32;
+const unsigned int D3D10_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION                = 8192;
+const unsigned int D3D10_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT                 = 1024;
+const unsigned int D3D10_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT                    = 4096;
+const unsigned int D3D10_REQ_MAXANISOTROPY                                              = 16;
+const unsigned int D3D10_REQ_MIP_LEVELS                                                 = 14;
+const unsigned int D3D10_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES                      = 2048;
+const unsigned int D3D10_REQ_RASTERIZER_OBJECT_COUNT_PER_CONTEXT                        = 4096;
+const unsigned int D3D10_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH                              = 8192;
+const unsigned int D3D10_REQ_RESOURCE_SIZE_IN_MEGABYTES                                 = 128;
+const unsigned int D3D10_REQ_RESOURCE_VIEW_COUNT_PER_CONTEXT_2_TO_EXP                   = 20;
+const unsigned int D3D10_REQ_SAMPLER_OBJECT_COUNT_PER_CONTEXT                           = 4096;
+const unsigned int D3D10_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION                             = 512;
+const unsigned int D3D10_REQ_TEXTURE1D_U_DIMENSION                                      = 8192;
+const unsigned int D3D10_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION                             = 512;
+const unsigned int D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION                                 = 8192;
+const unsigned int D3D10_REQ_TEXTURE3D_U_V_OR_W_DIMENSION                               = 2048;
+const unsigned int D3D10_REQ_TEXTURECUBE_DIMENSION                                      = 8192;
+const unsigned int D3D10_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL                   = 0;
+const unsigned int D3D10_SHADER_MAJOR_VERSION                                           = 4;
+const unsigned int D3D10_SHADER_MINOR_VERSION                                           = 0;
+const unsigned int D3D10_SHIFT_INSTRUCTION_PAD_VALUE                                    = 0;
+const unsigned int D3D10_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT                        = 5;
+const unsigned int D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT                               = 8;
+const unsigned int D3D10_SO_BUFFER_MAX_STRIDE_IN_BYTES                                  = 2048;
+const unsigned int D3D10_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES                            = 256;
+const unsigned int D3D10_SO_BUFFER_SLOT_COUNT                                           = 4;
+const unsigned int D3D10_SO_DDI_REGISTER_INDEX_DENOTING_GAP                             = 0xffffffff;
+const unsigned int D3D10_SO_MULTIPLE_BUFFER_ELEMENTS_PER_BUFFER                         = 1;
+const unsigned int D3D10_SO_SINGLE_BUFFER_COMPONENT_LIMIT                               = 64;
+const unsigned int D3D10_STANDARD_COMPONENT_BIT_COUNT                                   = 32;
+const unsigned int D3D10_STANDARD_COMPONENT_BIT_COUNT_DOUBLED                           = 64;
+const unsigned int D3D10_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE               = 4;
+const unsigned int D3D10_STANDARD_PIXEL_COMPONENT_COUNT                                 = 128;
+const unsigned int D3D10_STANDARD_PIXEL_ELEMENT_COUNT                                   = 32;
+const unsigned int D3D10_STANDARD_VECTOR_SIZE                                           = 4;
+const unsigned int D3D10_STANDARD_VERTEX_ELEMENT_COUNT                                  = 16;
+const unsigned int D3D10_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT                          = 64;
+const unsigned int D3D10_SUBPIXEL_FRACTIONAL_BIT_COUNT                                  = 8;
+const unsigned int D3D10_SUBTEXEL_FRACTIONAL_BIT_COUNT                                  = 6;
+const unsigned int D3D10_TEXEL_ADDRESS_RANGE_BIT_COUNT                                  = 18;
+const unsigned int D3D10_UNBOUND_MEMORY_ACCESS_RESULT                                   = 0;
+const unsigned int D3D10_VIEWPORT_AND_SCISSORRECT_MAX_INDEX                             = 15;
+const unsigned int D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE             = 16;
+const unsigned int D3D10_VIEWPORT_BOUNDS_MAX                                            = 16383;
+const int D3D10_VIEWPORT_BOUNDS_MIN                                                     = -16384;
+const unsigned int D3D10_VS_INPUT_REGISTER_COMPONENTS                                   = 4;
+const unsigned int D3D10_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT                          = 32;
+const unsigned int D3D10_VS_INPUT_REGISTER_COUNT                                        = 16;
+const unsigned int D3D10_VS_INPUT_REGISTER_READS_PER_INST                               = 2;
+const unsigned int D3D10_VS_INPUT_REGISTER_READ_PORTS                                   = 1;
+const unsigned int D3D10_VS_OUTPUT_REGISTER_COMPONENTS                                  = 4;
+const unsigned int D3D10_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT                         = 32;
+const unsigned int D3D10_VS_OUTPUT_REGISTER_COUNT                                       = 16;
+const unsigned int D3D10_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT                          = 10;
+const unsigned int D3D10_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP                          = 25;
+const unsigned int D3D10_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP                                = 25;
+const unsigned int D3D_MAJOR_VERSION                                                    = 10;
+const unsigned int D3D_MINOR_VERSION                                                    = 0;
+const unsigned int D3D_SPEC_DATE_DAY                                                    = 8;
+const unsigned int D3D_SPEC_DATE_MONTH                                                  = 8;
+const unsigned int D3D_SPEC_DATE_YEAR                                                   = 2006;
+cpp_quote("#endif")
+
+const unsigned int D3D10_APPEND_ALIGNED_ELEMENT                                         = 0xffffffff;
+const unsigned int _FACD3D10                                                            = 0x87;
+const unsigned int _FACD3D10DEBUG                                                       = _FACD3D10 + 1;
+const unsigned int D3D10_FILTER_TYPE_MASK                                               = 0x3;
+const unsigned int D3D10_SDK_VERSION                                                    = 29;
+
+cpp_quote("#define MAKE_D3D10_HRESULT(code)                   MAKE_HRESULT( 1, _FACD3D10, code)")
+cpp_quote("#define MAKE_D3D10_STATUS(code)                    MAKE_HRESULT( 0, _FACD3D10, code)")
+cpp_quote("#define D3D10_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS  MAKE_D3D10_HRESULT(1)")
+cpp_quote("#define D3D10_ERROR_FILE_NOT_FOUND                 MAKE_D3D10_HRESULT(2)")
+
+typedef enum D3D10_BLEND {
+    D3D10_BLEND_ZERO             = 1,
+    D3D10_BLEND_ONE              = 2,
+    D3D10_BLEND_SRC_COLOR        = 3,
+    D3D10_BLEND_INV_SRC_COLOR    = 4,
+    D3D10_BLEND_SRC_ALPHA        = 5,
+    D3D10_BLEND_INV_SRC_ALPHA    = 6,
+    D3D10_BLEND_DEST_ALPHA       = 7,
+    D3D10_BLEND_INV_DEST_ALPHA   = 8,
+    D3D10_BLEND_DEST_COLOR       = 9,
+    D3D10_BLEND_INV_DEST_COLOR   = 10,
+    D3D10_BLEND_SRC_ALPHA_SAT    = 11,
+    D3D10_BLEND_BLEND_FACTOR     = 14,
+    D3D10_BLEND_INV_BLEND_FACTOR = 15,
+    D3D10_BLEND_SRC1_COLOR       = 16,
+    D3D10_BLEND_INV_SRC1_COLOR   = 17,
+    D3D10_BLEND_SRC1_ALPHA       = 18,
+    D3D10_BLEND_INV_SRC1_ALPHA   = 19
+} D3D10_BLEND;
+
+typedef enum D3D10_BLEND_OP {
+    D3D10_BLEND_OP_ADD = 1,
+    D3D10_BLEND_OP_SUBTRACT,
+    D3D10_BLEND_OP_REV_SUBTRACT,
+    D3D10_BLEND_OP_MIN,
+    D3D10_BLEND_OP_MAX,
+} D3D10_BLEND_OP;
+
+typedef struct D3D10_BLEND_DESC {
+    BOOL AlphaToCoverageEnable;
+    BOOL BlendEnable[8];
+    D3D10_BLEND SrcBlend;
+    D3D10_BLEND DestBlend;
+    D3D10_BLEND_OP BlendOp;
+    D3D10_BLEND SrcBlendAlpha;
+    D3D10_BLEND DestBlendAlpha;
+    D3D10_BLEND_OP BlendOpAlpha;
+    UINT8 RenderTargetWriteMask[8];
+} D3D10_BLEND_DESC;
+
+typedef enum D3D10_DEPTH_WRITE_MASK {
+    D3D10_DEPTH_WRITE_MASK_ZERO,
+    D3D10_DEPTH_WRITE_MASK_ALL,
+} D3D10_DEPTH_WRITE_MASK;
+
+typedef enum D3D10_COMPARISON_FUNC {
+    D3D10_COMPARISON_NEVER = 1,
+    D3D10_COMPARISON_LESS,
+    D3D10_COMPARISON_EQUAL,
+    D3D10_COMPARISON_LESS_EQUAL,
+    D3D10_COMPARISON_GREATER,
+    D3D10_COMPARISON_NOT_EQUAL,
+    D3D10_COMPARISON_GREATER_EQUAL,
+    D3D10_COMPARISON_ALWAYS,
+} D3D10_COMPARISON_FUNC;
+
+typedef enum D3D10_STENCIL_OP {
+    D3D10_STENCIL_OP_KEEP = 1,
+    D3D10_STENCIL_OP_ZERO,
+    D3D10_STENCIL_OP_REPLACE,
+    D3D10_STENCIL_OP_INCR_SAT,
+    D3D10_STENCIL_OP_DECR_SAT,
+    D3D10_STENCIL_OP_INVERT,
+    D3D10_STENCIL_OP_INCR,
+    D3D10_STENCIL_OP_DECR,
+} D3D10_STENCIL_OP;
+
+typedef struct D3D10_DEPTH_STENCILOP_DESC {
+    D3D10_STENCIL_OP StencilFailOp;
+    D3D10_STENCIL_OP StencilDepthFailOp;
+    D3D10_STENCIL_OP StencilPassOp;
+    D3D10_COMPARISON_FUNC StencilFunc;
+} D3D10_DEPTH_STENCILOP_DESC;
+
+typedef struct D3D10_DEPTH_STENCIL_DESC {
+    BOOL DepthEnable;
+    D3D10_DEPTH_WRITE_MASK DepthWriteMask;
+    D3D10_COMPARISON_FUNC DepthFunc;
+    BOOL StencilEnable;
+    UINT8 StencilReadMask;
+    UINT8 StencilWriteMask;
+    D3D10_DEPTH_STENCILOP_DESC FrontFace;
+    D3D10_DEPTH_STENCILOP_DESC BackFace;
+} D3D10_DEPTH_STENCIL_DESC;
+
+typedef enum D3D10_FILL_MODE {
+    D3D10_FILL_WIREFRAME = 2,
+    D3D10_FILL_SOLID,
+} D3D10_FILL_MODE;
+
+typedef enum D3D10_CULL_MODE {
+    D3D10_CULL_NONE = 1,
+    D3D10_CULL_FRONT,
+    D3D10_CULL_BACK,
+} D3D10_CULL_MODE;
+
+typedef struct D3D10_RASTERIZER_DESC {
+    D3D10_FILL_MODE FillMode;
+    D3D10_CULL_MODE CullMode;
+    BOOL FrontCounterClockwise;
+    INT DepthBias;
+    FLOAT DepthBiasClamp;
+    FLOAT SlopeScaledDepthBias;
+    BOOL DepthClipEnable;
+    BOOL ScissorEnable;
+    BOOL MultisampleEnable;
+    BOOL AntialiasedLineEnable;
+} D3D10_RASTERIZER_DESC;
+
+typedef enum D3D10_FILTER {
+    D3D10_FILTER_MIN_MAG_MIP_POINT                          = 0,
+    D3D10_FILTER_MIN_MAG_POINT_MIP_LINEAR                   = 0x1,
+    D3D10_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT             = 0x4,
+    D3D10_FILTER_MIN_POINT_MAG_MIP_LINEAR                   = 0x5,
+    D3D10_FILTER_MIN_LINEAR_MAG_MIP_POINT                   = 0x10,
+    D3D10_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR            = 0x11,
+    D3D10_FILTER_MIN_MAG_LINEAR_MIP_POINT                   = 0x14,
+    D3D10_FILTER_MIN_MAG_MIP_LINEAR                         = 0x15,
+    D3D10_FILTER_ANISOTROPIC                                = 0x55,
+    D3D10_FILTER_COMPARISON_MIN_MAG_MIP_POINT               = 0x80,
+    D3D10_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR        = 0x81,
+    D3D10_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT  = 0x84,
+    D3D10_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR        = 0x85,
+    D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT        = 0x90,
+    D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91,
+    D3D10_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT        = 0x94,
+    D3D10_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR              = 0x95,
+    D3D10_FILTER_COMPARISON_ANISOTROPIC                     = 0xd5,
+    D3D10_FILTER_TEXT_1BIT                                  = 0x80000000
+} D3D10_FILTER;
+
+typedef enum D3D10_TEXTURE_ADDRESS_MODE {
+    D3D10_TEXTURE_ADDRESS_WRAP = 1,
+    D3D10_TEXTURE_ADDRESS_MIRROR,
+    D3D10_TEXTURE_ADDRESS_CLAMP,
+    D3D10_TEXTURE_ADDRESS_BORDER,
+    D3D10_TEXTURE_ADDRESS_MIRROR_ONCE,
+} D3D10_TEXTURE_ADDRESS_MODE;
+
+typedef struct D3D10_SAMPLER_DESC {
+    D3D10_FILTER Filter;
+    D3D10_TEXTURE_ADDRESS_MODE AddressU;
+    D3D10_TEXTURE_ADDRESS_MODE AddressV;
+    D3D10_TEXTURE_ADDRESS_MODE AddressW;
+    FLOAT MipLODBias;
+    UINT MaxAnisotropy;
+    D3D10_COMPARISON_FUNC ComparisonFunc;
+    FLOAT BorderColor[4];
+    FLOAT MinLOD;
+    FLOAT MaxLOD;
+} D3D10_SAMPLER_DESC;
+
+typedef enum D3D10_COUNTER {
+    D3D10_COUNTER_GPU_IDLE,
+    D3D10_COUNTER_VERTEX_PROCESSING,
+    D3D10_COUNTER_GEOMETRY_PROCESSING,
+    D3D10_COUNTER_PIXEL_PROCESSING,
+    D3D10_COUNTER_OTHER_GPU_PROCESSING,
+    D3D10_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION,
+    D3D10_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION,
+    D3D10_COUNTER_VERTEX_THROUGHPUT_UTILIZATION,
+    D3D10_COUNTER_TRIANGLE_SETUP_THROUGHPUT_UTILIZATION,
+    D3D10_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION,
+    D3D10_COUNTER_VS_MEMORY_LIMITED,
+    D3D10_COUNTER_VS_COMPUTATION_LIMITED,
+    D3D10_COUNTER_GS_MEMORY_LIMITED,
+    D3D10_COUNTER_GS_COMPUTATION_LIMITED,
+    D3D10_COUNTER_PS_MEMORY_LIMITED,
+    D3D10_COUNTER_PS_COMPUTATION_LIMITED,
+    D3D10_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE,
+    D3D10_COUNTER_TEXTURE_CACHE_HIT_RATE,
+    D3D10_COUNTER_DEVICE_DEPENDENT_0 = 0x40000000
+} D3D10_COUNTER;
+
+typedef struct D3D10_COUNTER_DESC {
+    D3D10_COUNTER Counter;
+    UINT MiscFlags;
+} D3D10_COUNTER_DESC;
+
+typedef enum D3D10_COUNTER_TYPE {
+    D3D10_COUNTER_TYPE_FLOAT32,
+    D3D10_COUNTER_TYPE_UINT16,
+    D3D10_COUNTER_TYPE_UINT32,
+    D3D10_COUNTER_TYPE_UINT64,
+} D3D10_COUNTER_TYPE;
+
+typedef struct D3D10_COUNTER_INFO {
+    D3D10_COUNTER LastDeviceDependentCounter;
+    UINT NumSimultaneousCounters;
+    UINT8 NumDetectableParallelUnits;
+} D3D10_COUNTER_INFO;
+
+typedef enum D3D10_RESOURCE_DIMENSION {
+    D3D10_RESOURCE_DIMENSION_UNKNOWN,
+    D3D10_RESOURCE_DIMENSION_BUFFER,
+    D3D10_RESOURCE_DIMENSION_TEXTURE1D,
+    D3D10_RESOURCE_DIMENSION_TEXTURE2D,
+    D3D10_RESOURCE_DIMENSION_TEXTURE3D,
+} D3D10_RESOURCE_DIMENSION;
+
+typedef enum D3D10_USAGE {
+    D3D10_USAGE_DEFAULT,
+    D3D10_USAGE_IMMUTABLE,
+    D3D10_USAGE_DYNAMIC,
+    D3D10_USAGE_STAGING,
+} D3D10_USAGE;
+
+typedef struct D3D10_BUFFER_DESC {
+    UINT ByteWidth;
+    D3D10_USAGE Usage;
+    UINT BindFlags;
+    UINT CPUAccessFlags;
+    UINT MiscFlags;
+} D3D10_BUFFER_DESC;
+
+typedef enum D3D10_MAP {
+    D3D10_MAP_READ = 1,
+    D3D10_MAP_WRITE,
+    D3D10_MAP_READ_WRITE,
+    D3D10_MAP_WRITE_DISCARD,
+    D3D10_MAP_WRITE_NO_OVERWRITE,
+} D3D10_MAP;
+
+typedef struct D3D10_TEXTURE1D_DESC {
+    UINT Width;
+    UINT MipLevels;
+    UINT ArraySize;
+    DXGI_FORMAT Format;
+    D3D10_USAGE Usage;
+    UINT BindFlags;
+    UINT CPUAccessFlags;
+    UINT MiscFlags;
+} D3D10_TEXTURE1D_DESC;
+
+typedef struct D3D10_TEXTURE2D_DESC {
+    UINT Width;
+    UINT Height;
+    UINT MipLevels;
+    UINT ArraySize;
+    DXGI_FORMAT Format;
+    DXGI_SAMPLE_DESC SampleDesc;
+    D3D10_USAGE Usage;
+    UINT BindFlags;
+    UINT CPUAccessFlags;
+    UINT MiscFlags;
+} D3D10_TEXTURE2D_DESC;
+
+typedef struct D3D10_TEXTURE3D_DESC {
+    UINT Width;
+    UINT Height;
+    UINT Depth;
+    UINT MipLevels;
+    DXGI_FORMAT Format;
+    D3D10_USAGE Usage;
+    UINT BindFlags;
+    UINT CPUAccessFlags;
+    UINT MiscFlags;
+} D3D10_TEXTURE3D_DESC;
+
+typedef enum D3D10_DSV_DIMENSION
+{
+    D3D10_DSV_DIMENSION_UNKNOWN,
+    D3D10_DSV_DIMENSION_TEXTURE1D,
+    D3D10_DSV_DIMENSION_TEXTURE1DARRAY,
+    D3D10_DSV_DIMENSION_TEXTURE2D,
+    D3D10_DSV_DIMENSION_TEXTURE2DARRAY,
+    D3D10_DSV_DIMENSION_TEXTURE2DMS,
+    D3D10_DSV_DIMENSION_TEXTURE2DMSARRAY,
+} D3D10_DSV_DIMENSION;
+
+typedef struct D3D10_TEX1D_DSV {
+    UINT MipSlice;
+} D3D10_TEX1D_DSV;
+
+typedef struct D3D10_TEX1D_ARRAY_DSV {
+    UINT MipSlice;
+    UINT FirstArraySlice;
+    UINT ArraySize;
+} D3D10_TEX1D_ARRAY_DSV;
+
+typedef struct D3D10_TEX2D_DSV {
+    UINT MipSlice;
+} D3D10_TEX2D_DSV;
+
+typedef struct D3D10_TEX2D_ARRAY_DSV {
+    UINT MipSlice;
+    UINT FirstArraySlice;
+    UINT ArraySize;
+} D3D10_TEX2D_ARRAY_DSV;
+
+typedef struct D3D10_TEX2DMS_DSV {
+    UINT UnusedField_NothingToDefine;
+} D3D10_TEX2DMS_DSV;
+
+typedef struct D3D10_TEX2DMS_ARRAY_DSV {
+    UINT FirstArraySlice;
+    UINT ArraySize;
+} D3D10_TEX2DMS_ARRAY_DSV;
+
+typedef struct D3D10_DEPTH_STENCIL_VIEW_DESC {
+    DXGI_FORMAT Format;
+    D3D10_DSV_DIMENSION ViewDimension;
+    union {
+        D3D10_TEX1D_DSV Texture1D;
+        D3D10_TEX1D_ARRAY_DSV Texture1DArray;
+        D3D10_TEX2D_DSV Texture2D;
+        D3D10_TEX2D_ARRAY_DSV Texture2DArray;
+        D3D10_TEX2DMS_DSV Texture2DMS;
+        D3D10_TEX2DMS_ARRAY_DSV Texture2DMSArray;
+    } DUMMYUNIONNAME;
+} D3D10_DEPTH_STENCIL_VIEW_DESC;
+
+typedef enum D3D10_RTV_DIMENSION {
+    D3D10_RTV_DIMENSION_UNKNOWN,
+    D3D10_RTV_DIMENSION_BUFFER,
+    D3D10_RTV_DIMENSION_TEXTURE1D,
+    D3D10_RTV_DIMENSION_TEXTURE1DARRAY,
+    D3D10_RTV_DIMENSION_TEXTURE2D,
+    D3D10_RTV_DIMENSION_TEXTURE2DARRAY,
+    D3D10_RTV_DIMENSION_TEXTURE2DMS,
+    D3D10_RTV_DIMENSION_TEXTURE2DMSARRAY,
+    D3D10_RTV_DIMENSION_TEXTURE3D,
+} D3D10_RTV_DIMENSION;
+
+typedef struct D3D10_BUFFER_RTV {
+    UINT ElementOffset;
+    UINT ElementWidth;
+} D3D10_BUFFER_RTV;
+
+typedef struct D3D10_TEX1D_RTV {
+    UINT MipSlice;
+} D3D10_TEX1D_RTV;
+
+typedef struct D3D10_TEX1D_ARRAY_RTV {
+    UINT MipSlice;
+    UINT FirstArraySlice;
+    UINT ArraySize;
+} D3D10_TEX1D_ARRAY_RTV;
+
+typedef struct D3D10_TEX2D_RTV {
+    UINT MipSlice;
+} D3D10_TEX2D_RTV;
+
+typedef struct D3D10_TEX2D_ARRAY_RTV {
+    UINT MipSlice;
+    UINT FirstArraySlice;
+    UINT ArraySize;
+} D3D10_TEX2D_ARRAY_RTV;
+
+typedef struct D3D10_TEX2DMS_RTV {
+    UINT UnusedField_NothingToDefine;
+} D3D10_TEX2DMS_RTV;
+
+typedef struct D3D10_TEX2DMS_ARRAY_RTV {
+    UINT FirstArraySlice;
+    UINT ArraySize;
+} D3D10_TEX2DMS_ARRAY_RTV;
+
+typedef struct D3D10_TEX3D_RTV {
+    UINT MipSlice;
+    UINT FirstWSlice;
+    UINT WSize;
+} D3D10_TEX3D_RTV;
+
+typedef struct D3D10_RENDER_TARGET_VIEW_DESC {
+    DXGI_FORMAT Format;
+    D3D10_RTV_DIMENSION ViewDimension;
+    union {
+        D3D10_BUFFER_RTV Buffer;
+        D3D10_TEX1D_RTV Texture1D;
+        D3D10_TEX1D_ARRAY_RTV Texture1DArray;
+        D3D10_TEX2D_RTV Texture2D;
+        D3D10_TEX2D_ARRAY_RTV Texture2DArray;
+        D3D10_TEX2DMS_RTV Texture2DMS;
+        D3D10_TEX2DMS_ARRAY_RTV Texture2DMSArray;
+        D3D10_TEX3D_RTV Texture3D;
+    } DUMMYUNIONNAME;
+} D3D10_RENDER_TARGET_VIEW_DESC;
+
+typedef enum D3D10_SRV_DIMENSION {
+    D3D10_SRV_DIMENSION_UNKNOWN,
+    D3D10_SRV_DIMENSION_BUFFER,
+    D3D10_SRV_DIMENSION_TEXTURE1D,
+    D3D10_SRV_DIMENSION_TEXTURE1DARRAY,
+    D3D10_SRV_DIMENSION_TEXTURE2D,
+    D3D10_SRV_DIMENSION_TEXTURE2DARRAY,
+    D3D10_SRV_DIMENSION_TEXTURE2DMS,
+    D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY,
+    D3D10_SRV_DIMENSION_TEXTURE3D,
+    D3D10_SRV_DIMENSION_TEXTURECUBE,
+} D3D10_SRV_DIMENSION;
+
+typedef struct D3D10_BUFFER_SRV {
+    UINT ElementOffset;
+    UINT ElementWidth;
+} D3D10_BUFFER_SRV;
+
+typedef struct D3D10_TEX1D_SRV {
+    UINT MostDetailedMip;
+    UINT MipLevels;
+} D3D10_TEX1D_SRV;
+
+typedef struct D3D10_TEX1D_ARRAY_SRV {
+    UINT MostDetailedMip;
+    UINT MipLevels;
+    UINT FirstArraySlice;
+    UINT ArraySize;
+} D3D10_TEX1D_ARRAY_SRV;
+
+typedef struct D3D10_TEX2D_SRV {
+    UINT MostDetailedMip;
+    UINT MipLevels;
+} D3D10_TEX2D_SRV;
+
+typedef struct D3D10_TEX2D_ARRAY_SRV {
+    UINT MostDetailedMip;
+    UINT MipLevels;
+    UINT FirstArraySlice;
+    UINT ArraySize;
+} D3D10_TEX2D_ARRAY_SRV;
+
+typedef struct D3D10_TEX2DMS_SRV {
+    UINT UnusedField_NothingToDefine;
+} D3D10_TEX2DMS_SRV;
+
+typedef struct D3D10_TEX2DMS_ARRAY_SRV {
+    UINT FirstArraySlice;
+    UINT ArraySize;
+} D3D10_TEX2DMS_ARRAY_SRV;
+
+typedef struct D3D10_TEX3D_SRV {
+    UINT MostDetailedMip;
+    UINT MipLevels;
+} D3D10_TEX3D_SRV;
+
+typedef struct D3D10_TEXCUBE_SRV {
+    UINT MostDetailedMip;
+    UINT MipLevels;
+} D3D10_TEXCUBE_SRV;
+
+typedef struct D3D10_SHADER_RESOURCE_VIEW_DESC {
+    DXGI_FORMAT Format;
+    D3D10_SRV_DIMENSION ViewDimension;
+    union {
+        D3D10_BUFFER_SRV Buffer;
+        D3D10_TEX1D_SRV Texture1D;
+        D3D10_TEX1D_ARRAY_SRV Texture1DArray;
+        D3D10_TEX2D_SRV Texture2D;
+        D3D10_TEX2D_ARRAY_SRV Texture2DArray;
+        D3D10_TEX2DMS_SRV Texture2DMS;
+        D3D10_TEX2DMS_ARRAY_SRV Texture2DMSArray;
+        D3D10_TEX3D_SRV Texture3D;
+        D3D10_TEXCUBE_SRV TextureCube;
+    } DUMMYUNIONNAME;
+} D3D10_SHADER_RESOURCE_VIEW_DESC;
+
+typedef struct D3D10_BOX {
+    UINT left;
+    UINT top;
+    UINT front;
+    UINT right;
+    UINT bottom;
+    UINT back;
+} D3D10_BOX;
+
+typedef struct D3D10_SUBRESOURCE_DATA {
+    const void *pSysMem;
+    UINT SysMemPitch;
+    UINT SysMemSlicePitch;
+} D3D10_SUBRESOURCE_DATA;
+
+typedef struct D3D10_SO_DECLARATION_ENTRY {
+    LPCSTR SemanticName;
+    UINT SemanticIndex;
+    BYTE StartComponent;
+    BYTE ComponentCount;
+    BYTE OutputSlot;
+} D3D10_SO_DECLARATION_ENTRY;
+
+typedef enum D3D10_INPUT_CLASSIFICATION {
+    D3D10_INPUT_PER_VERTEX_DATA,
+    D3D10_INPUT_PER_INSTANCE_DATA,
+} D3D10_INPUT_CLASSIFICATION;
+
+typedef struct D3D10_INPUT_ELEMENT_DESC {
+    LPCSTR SemanticName;
+    UINT SemanticIndex;
+    DXGI_FORMAT Format;
+    UINT InputSlot;
+    UINT AlignedByteOffset;
+    D3D10_INPUT_CLASSIFICATION InputSlotClass;
+    UINT InstanceDataStepRate;
+} D3D10_INPUT_ELEMENT_DESC;
+
+typedef enum D3D10_QUERY {
+    D3D10_QUERY_EVENT,
+    D3D10_QUERY_OCCLUSION,
+    D3D10_QUERY_TIMESTAMP,
+    D3D10_QUERY_TIMESTAMP_DISJOINT,
+    D3D10_QUERY_PIPELINE_STATISTICS,
+    D3D10_QUERY_OCCLUSION_PREDICATE,
+    D3D10_QUERY_SO_STATISTICS,
+    D3D10_QUERY_SO_OVERFLOW_PREDICATE,
+} D3D10_QUERY;
+
+typedef struct D3D10_QUERY_DESC {
+    D3D10_QUERY Query;
+    UINT MiscFlags;
+} D3D10_QUERY_DESC;
+
+typedef enum D3D10_PRIMITIVE_TOPOLOGY {
+    D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED         = 0,
+    D3D10_PRIMITIVE_TOPOLOGY_POINTLIST         = 1,
+    D3D10_PRIMITIVE_TOPOLOGY_LINELIST          = 2,
+    D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP         = 3,
+    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST      = 4,
+    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP     = 5,
+    D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ      = 10,
+    D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ     = 11,
+    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ  = 12,
+    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13
+} D3D10_PRIMITIVE_TOPOLOGY;
+
+typedef RECT D3D10_RECT;
+
+typedef struct D3D10_VIEWPORT {
+    INT TopLeftX;
+    INT TopLeftY;
+    UINT Width;
+    UINT Height;
+    FLOAT MinDepth;
+    FLOAT MaxDepth;
+} D3D10_VIEWPORT;
+
+typedef struct D3D10_MAPPED_TEXTURE2D {
+    void *pData;
+    UINT RowPitch;
+} D3D10_MAPPED_TEXTURE2D;
+
+typedef struct D3D10_MAPPED_TEXTURE3D {
+    void *pData;
+    UINT RowPitch;
+    UINT DepthPitch;
+} D3D10_MAPPED_TEXTURE3D;
+
+typedef enum D3D10_BIND_FLAG {
+    D3D10_BIND_VERTEX_BUFFER   = 0x1,
+    D3D10_BIND_INDEX_BUFFER    = 0x2,
+    D3D10_BIND_CONSTANT_BUFFER = 0x4,
+    D3D10_BIND_SHADER_RESOURCE = 0x8,
+    D3D10_BIND_STREAM_OUTPUT   = 0x10,
+    D3D10_BIND_RENDER_TARGET   = 0x20,
+    D3D10_BIND_DEPTH_STENCIL   = 0x40
+} D3D10_BIND_FLAG;
+
+typedef enum D3D10_CPU_ACCESS_FLAG {
+    D3D10_CPU_ACCESS_WRITE = 0x10000,
+    D3D10_CPU_ACCESS_READ  = 0x20000
+} D3D10_CPU_ACCESS_FLAG;
+
+typedef enum D3D10_RESOURCE_MISC_FLAG {
+    D3D10_RESOURCE_MISC_GENERATE_MIPS = 0x1,
+    D3D10_RESOURCE_MISC_SHARED        = 0x2,
+    D3D10_RESOURCE_MISC_TEXTURECUBE   = 0x4
+} D3D10_RESOURCE_MISC_FLAG;
+
+typedef enum D3D10_MAP_FLAG {
+    D3D10_MAP_FLAG_DO_NOT_WAIT = 0x100000,
+} D3D10_MAP_FLAG;
+
+typedef enum D3D10_CLEAR_FLAG {
+    D3D10_CLEAR_DEPTH   = 0x1,
+    D3D10_CLEAR_STENCIL = 0x2
+} D3D10_CLEAR_FLAG;
+
+typedef enum D3D10_COLOR_WRITE_ENABLE {
+    D3D10_COLOR_WRITE_ENABLE_RED   = 0x1,
+    D3D10_COLOR_WRITE_ENABLE_GREEN = 0x2,
+    D3D10_COLOR_WRITE_ENABLE_BLUE  = 0x4,
+    D3D10_COLOR_WRITE_ENABLE_ALPHA = 0x8,
+    D3D10_COLOR_WRITE_ENABLE_ALL   = (D3D10_COLOR_WRITE_ENABLE_RED  | D3D10_COLOR_WRITE_ENABLE_GREEN |
+                                      D3D10_COLOR_WRITE_ENABLE_BLUE | D3D10_COLOR_WRITE_ENABLE_ALPHA)
+} D3D10_COLOR_WRITE_ENABLE;
+
+typedef enum D3D10_TEXTURECUBE_FACE {
+    D3D10_TEXTURECUBE_FACE_POSITIVE_X,
+    D3D10_TEXTURECUBE_FACE_NEGATIVE_X,
+    D3D10_TEXTURECUBE_FACE_POSITIVE_Y,
+    D3D10_TEXTURECUBE_FACE_NEGATIVE_Y,
+    D3D10_TEXTURECUBE_FACE_POSITIVE_Z,
+    D3D10_TEXTURECUBE_FACE_NEGATIVE_Z,
+} D3D10_TEXTURECUBE_FACE;
+
+typedef enum D3D10_ASYNC_GETDATA_FLAG {
+    D3D10_ASYNC_GETDATA_DONOTFLUSH = 0x1,
+} D3D10_ASYNC_GETDATA_FLAG;
+
+typedef enum D3D10_FILTER_TYPE {
+    D3D10_FILTER_TYPE_POINT,
+    D3D10_FILTER_TYPE_LINEAR
+} D3D10_FILTER_TYPE;
+
+typedef enum D3D10_QUERY_MISC_FLAG {
+    D3D10_QUERY_MISC_PREDICATEHINT = 0x1
+} D3D10_QUERY_MISC_FLAG;
+
+typedef struct D3D10_QUERY_DATA_TIMESTAMP_DISJOINT {
+    UINT64 Frequency;
+    BOOL Disjoint;
+} D3D10_QUERY_DATA_TIMESTAMP_DISJOINT;
+
+typedef struct D3D10_QUERY_DATA_PIPELINE_STATISTICS {
+    UINT64 IAVertices;
+    UINT64 IAPrimitives;
+    UINT64 VSInvocations;
+    UINT64 GSInvocations;
+    UINT64 GSPrimitives;
+    UINT64 CInvocations;
+    UINT64 CPrimitives;
+    UINT64 PSInvocations;
+} D3D10_QUERY_DATA_PIPELINE_STATISTICS;
+
+typedef struct D3D10_QUERY_DATA_SO_STATISTICS {
+    UINT64 NumPrimitivesWritten;
+    UINT64 PrimitivesStorageNeeded;
+} D3D10_QUERY_DATA_SO_STATISTICS;
+
+typedef enum D3D10_CREATE_DEVICE_FLAG {
+    D3D10_CREATE_DEVICE_SINGLETHREADED                           = 0x1,
+    D3D10_CREATE_DEVICE_DEBUG                                    = 0x2,
+    D3D10_CREATE_DEVICE_SWITCH_TO_REF                            = 0x4,
+    D3D10_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS = 0x8
+} D3D10_CREATE_DEVICE_FLAG;
+
+/* Core */
+
+interface ID3D10Device;
+
+[
+    object,
+    local,
+    uuid(9b7e4c00-342c-4106-a19f-4f2704f689f0)
+]
+interface ID3D10DeviceChild : IUnknown
+{
+        void GetDevice(
+            [out] ID3D10Device **ppDevice);
+        HRESULT GetPrivateData(
+            [in] REFGUID guid,
+            [in, out] UINT *pDataSize,
+            [out] void *pData);
+        HRESULT SetPrivateData(
+            [in] REFGUID guid,
+            [in] UINT DataSize,
+            [in] const void *pData);
+        HRESULT SetPrivateDataInterface(
+            [in] REFGUID guid,
+            [in] const IUnknown *pData);
+}
+
+/* Resource */
+
+[
+    object,
+    local,
+    uuid(9b7e4c01-342c-4106-a19f-4f2704f689f0)
+]
+interface ID3D10Resource : ID3D10DeviceChild
+{
+        void GetType(
+            [out] D3D10_RESOURCE_DIMENSION *rType);
+        void SetEvictionPriority(
+            [in] UINT EvictionPriority);
+        UINT GetEvictionPriority();
+}
+
+[
+    object,
+    local,
+    uuid(9b7e4c02-342c-4106-a19f-4f2704f689f0)
+]
+interface ID3D10Buffer : ID3D10Resource
+{
+        HRESULT Map(
+            [in] D3D10_MAP MapType,
+            [in] UINT MapFlags,
+            [out] void **ppData);
+        void Unmap();
+        void GetDesc(
+            [out] D3D10_BUFFER_DESC *pDesc);
+}
+
+[
+    object,
+    local,
+    uuid(9b7e4c03-342c-4106-a19f-4f2704f689F0)
+]
+interface ID3D10Texture1D : ID3D10Resource
+{
+        HRESULT Map(
+            [in] UINT Subresource,
+            [in] D3D10_MAP MapType,
+            [in] UINT MapFlags,
+            [out] void **ppData);
+        void Unmap(
+            [in] UINT Subresource);
+        void GetDesc(
+            [out] D3D10_TEXTURE1D_DESC *pDesc);
+}
+
+[
+    object,
+    local,
+    uuid(9b7e4c04-342c-4106-a19f-4f2704f689F0)
+]
+interface ID3D10Texture2D : ID3D10Resource
+{
+        HRESULT Map(
+            [in] UINT Subresource,
+            [in] D3D10_MAP MapType,
+            [in] UINT MapFlags,
+            [out] D3D10_MAPPED_TEXTURE2D *pMappedTex2D);
+        void Unmap(
+            [in] UINT Subresource);
+        void GetDesc(
+            [out] D3D10_TEXTURE2D_DESC *pDesc);
+}
+
+[
+    object,
+    local,
+    uuid(9b7e4c05-342c-4106-a19f-4f2704f689F0)
+]
+interface ID3D10Texture3D : ID3D10Resource
+{
+        HRESULT Map(
+            [in] UINT Subresource,
+            [in] D3D10_MAP MapType,
+            [in] UINT MapFlags,
+            [out] D3D10_MAPPED_TEXTURE3D *pMappedTex3D);
+        void Unmap(
+            [in] UINT Subresource);
+        void GetDesc(
+            [out] D3D10_TEXTURE3D_DESC *pDesc);
+}
+
+[
+    object,
+    local,
+    uuid(c902b03f-60a7-49ba-9936-2a3ab37a7e33)
+]
+interface ID3D10View : ID3D10DeviceChild
+{
+        void GetResource(
+            [out] ID3D10Resource **ppResource);
+}
+
+[
+    object,
+    local,
+    uuid(9b7e4c09-342c-4106-a19f-4f2704f689f0)
+]
+interface ID3D10DepthStencilView : ID3D10View
+{
+        void GetDesc(
+            [out] D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc);
+}
+
+
+[
+    object,
+    local,
+    uuid(9b7e4c08-342c-4106-a19f-4f2704f689f0)
+]
+interface ID3D10RenderTargetView : ID3D10View
+{
+        void GetDesc(
+            [out] D3D10_RENDER_TARGET_VIEW_DESC *pDesc);
+}
+
+[
+    object,
+    local,
+    uuid(9b7e4c07-342c-4106-a19f-4f2704f689f0)
+]
+interface ID3D10ShaderResourceView  : ID3D10View
+{
+        void GetDesc(
+            [out] D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc);
+}
+
+/* Resource End */
+
+[
+    object,
+    local,
+    uuid(edad8d19-8a35-4d6d-8566-2ea276cde161)
+]
+interface ID3D10BlendState : ID3D10DeviceChild
+{
+    void GetDesc(
+            [out] D3D10_BLEND_DESC *pDesc);
+}
+
+[
+    object,
+    local,
+    uuid(2b4b1cc8-a4ad-41f8-8322-ca86fc3ec675)
+]
+interface ID3D10DepthStencilState : ID3D10DeviceChild
+{
+    void GetDesc(
+            [out] D3D10_DEPTH_STENCIL_DESC *pDesc);
+}
+
+[
+    object,
+    local,
+    uuid(6316be88-54cd-4040-ab44-20461bc81f68)
+]
+interface ID3D10GeometryShader  : ID3D10DeviceChild
+{
+}
+
+[
+    object,
+    local,
+    uuid(9b7e4c0b-342c-4106-a19f-4f2704f689f0)
+]
+interface ID3D10InputLayout  : ID3D10DeviceChild
+{
+}
+
+[
+    object,
+    local,
+    uuid(4968b601-9d00-4cde-8346-8e7f675819b6)
+]
+interface ID3D10PixelShader  : ID3D10DeviceChild
+{
+}
+
+[
+    object,
+    local,
+    uuid(a2a07292-89af-4345-be2e-c53d9fbb6e9f)
+]
+interface ID3D10RasterizerState  : ID3D10DeviceChild
+{
+    void GetDesc(
+            [out] D3D10_RASTERIZER_DESC *pDesc);
+}
+
+[
+    object,
+    local,
+    uuid(9b7e4c0c-342c-4106-a19f-4f2704f689f0)
+]
+interface ID3D10SamplerState  : ID3D10DeviceChild
+{
+    void GetDesc(
+            [out] D3D10_SAMPLER_DESC *pDesc);
+}
+
+[
+    object,
+    local,
+    uuid(9b7e4c0a-342c-4106-a19f-4f2704f689f0)
+]
+interface ID3D10VertexShader  : ID3D10DeviceChild
+{
+}
+
+[
+    object,
+    local,
+    uuid(9b7e4c0d-342c-4106-a19f-4f2704f689f0)
+]
+interface ID3D10Asynchronous  : ID3D10DeviceChild
+{
+    void Begin();
+    void End();
+    HRESULT GetData(
+            [out] void *pData,
+            [in] UINT DataSize,
+            [in] UINT GetDataFlags);
+    UINT GetDataSize();
+}
+
+[
+    object,
+    local,
+    uuid(9b7e4c11-342c-4106-a19f-4f2704f689f0)
+]
+interface ID3D10Counter  : ID3D10Asynchronous
+{
+    void GetDesc(
+            [out] D3D10_COUNTER_DESC *pDesc);
+}
+
+[
+    object,
+    local,
+    uuid(9b7e4C0e-342C-4106-a19f-4f2704f689f0)
+]
+interface ID3D10Query : ID3D10Asynchronous
+{
+    void GetDesc(
+            [out] D3D10_QUERY_DESC *pDesc);
+}
+
+[
+    object,
+    local,
+    uuid(9b7e4c10-342c-4106-a19f-4f2704f689f0)
+]
+interface ID3D10Predicate : ID3D10Query
+{
+}
+
+[
+    object,
+    local,
+    uuid(9b7e4c0f-342c-4106-a19f-4f2704f689f0)
+]
+interface ID3D10Device : IUnknown
+{
+        void VSSetConstantBuffers(
+            [in] UINT StartSlot,
+            [in] UINT NumBuffers,
+            [in] ID3D10Buffer *const *ppConstantBuffers);
+        void PSSetShaderResources(
+            [in] UINT StartSlot,
+            [in] UINT NumViews,
+            [in] ID3D10ShaderResourceView *const *ppShaderResourceViews);
+        void PSSetShader(
+            [in] ID3D10PixelShader *pPixelShader);
+        void PSSetSamplers(
+            [in] UINT StartSlot,
+            [in] UINT NumSamplers,
+            [in]ID3D10SamplerState *const *ppSamplers);
+        void VSSetShader(
+            [in] ID3D10VertexShader *pVertexShader);
+        void DrawIndexed(
+            [in] UINT IndexCount,
+            [in] UINT StartIndexLocation,
+            [in] INT BaseVertexLocation);
+        void Draw(
+            [in] UINT VertexCount,
+            [in] UINT StartVertexLocation);
+        void PSSetConstantBuffers(
+            [in] UINT StartSlot,
+            [in] UINT NumBuffers,
+            [in] ID3D10Buffer *const *ppConstantBuffers);
+        void IASetInputLayout(
+            [in] ID3D10InputLayout *pInputLayout);
+        void IASetVertexBuffers(
+            [in] UINT StartSlot,
+            [in] UINT NumBuffers,
+            [in] ID3D10Buffer *const *ppVertexBuffers,
+            [in] const UINT *pStrides,
+            [in] const UINT *pOffsets);
+        void IASetIndexBuffer(
+            [in] ID3D10Buffer *pIndexBuffer,
+            [in] DXGI_FORMAT Format,
+            [in] UINT Offset);
+        void DrawIndexedInstanced(
+            [in] UINT IndexCountPerInstance,
+            [in] UINT InstanceCount,
+            [in] UINT StartIndexLocation,
+            [in] INT BaseVertexLocation,
+            [in] UINT StartInstanceLocation);
+        void DrawInstanced(
+            [in] UINT VertexCountPerInstance,
+            [in] UINT InstanceCount,
+            [in] UINT StartVertexLocation,
+            [in] UINT StartInstanceLocation);
+        void GSSetConstantBuffers(
+            [in] UINT StartSlot,
+            [in] UINT NumBuffers,
+            [in] ID3D10Buffer *const *ppConstantBuffers);
+        void GSSetShader(
+            [in] ID3D10GeometryShader *pShader);
+        void IASetPrimitiveTopology(
+            [in] D3D10_PRIMITIVE_TOPOLOGY Topology);
+        void VSSetShaderResources(
+            [in] UINT StartSlot,
+            [in] UINT NumViews,
+            [in] ID3D10ShaderResourceView *const *ppShaderResourceViews);
+        void VSSetSamplers(
+            [in] UINT StartSlot,
+            [in] UINT NumSamplers,
+            [in] ID3D10SamplerState *const *ppSamplers);
+        void SetPredication(
+            [in] ID3D10Predicate *pPredicate,
+            [in] BOOL PredicateValue);
+        void GSSetShaderResources(
+            [in] UINT StartSlot,
+            [in] UINT NumViews,
+            [in] ID3D10ShaderResourceView * const *ppShaderResourceViews);
+        void GSSetSamplers(
+            [in] UINT StartSlot,
+            [in] UINT NumSamplers,
+            [in] ID3D10SamplerState *const *ppSamplers);
+        void OMSetRenderTargets(
+            [in] UINT NumViews,
+            [in] ID3D10RenderTargetView *const *ppRenderTargetViews,
+            [in] ID3D10DepthStencilView *pDepthStencilView);
+        void OMSetBlendState(
+            [in] ID3D10BlendState *pBlendState,
+            [in] const FLOAT BlendFactor[4],
+            [in] UINT SampleMask);
+        void OMSetDepthStencilState(
+            [in] ID3D10DepthStencilState *pDepthStencilState,
+            [in] UINT StencilRef);
+        void SOSetTargets(
+            [in] UINT NumBuffers,
+            [in] ID3D10Buffer *const *ppSOTargets,
+            [in] const UINT *pOffsets);
+        void DrawAuto();
+        void RSSetState(
+            [in] ID3D10RasterizerState *pRasterizerState);
+        void RSSetViewports(
+            [in] UINT NumViewports,
+            [in] const D3D10_VIEWPORT *pViewports);
+        void RSSetScissorRects(
+            [in] UINT NumRects,
+            [in] const D3D10_RECT *pRects);
+        void CopySubresourceRegion(
+            [in] ID3D10Resource *pDstResource,
+            [in] UINT DstSubresource,
+            [in] UINT DstX,
+            [in] UINT DstY,
+            [in] UINT DstZ,
+            [in] ID3D10Resource *pSrcResource,
+            [in] UINT SrcSubresource,
+            [in] const D3D10_BOX *pSrcBox);
+        void CopyResource(
+            [in] ID3D10Resource *pDstResource,
+            [in] ID3D10Resource *pSrcResource);
+        void UpdateSubresource(
+            [in] ID3D10Resource *pDstResource,
+            [in] UINT DstSubresource,
+            [in] const D3D10_BOX *pDstBox,
+            [in] const void *pSrcData,
+            [in] UINT SrcRowPitch,
+            [in] UINT SrcDepthPitch);
+        void ClearRenderTargetView(
+            [in] ID3D10RenderTargetView *pRenderTargetView,
+            [in] const FLOAT ColorRGBA[4]);
+        void ClearDepthStencilView(
+            [in] ID3D10DepthStencilView *pDepthStencilView,
+            [in] UINT ClearFlags,
+            [in] FLOAT Depth,
+            [in] UINT8 Stencil);
+        void GenerateMips(
+            [in] ID3D10ShaderResourceView *pShaderResourceView);
+        void ResolveSubresource(
+            [in] ID3D10Resource *pDstResource,
+            [in] UINT DstSubresource,
+            [in] ID3D10Resource *pSrcResource,
+            [in] UINT SrcSubresource,
+            [in] DXGI_FORMAT Format);
+        void VSGetConstantBuffers(
+            [in] UINT StartSlot,
+            [in] UINT NumBuffers,
+            [out] ID3D10Buffer **ppConstantBuffers);
+        void PSGetShaderResources(
+            [in] UINT StartSlot,
+            [in] UINT NumViews,
+            [out] ID3D10ShaderResourceView **ppShaderResourceViews);
+        void PSGetShader(
+            [out] ID3D10PixelShader **ppPixelShader);
+        void PSGetSamplers(
+            [in] UINT StartSlot,
+            [in] UINT NumSamplers,
+            [out] ID3D10SamplerState **ppSamplers);
+        void VSGetShader(
+            [out] ID3D10VertexShader **ppVertexShader);
+        void PSGetConstantBuffers(
+            [in] UINT StartSlot,
+            [in] UINT NumBuffers,
+            [out] ID3D10Buffer **ppConstantBuffers);
+        void IAGetInputLayout(
+            [out] ID3D10InputLayout **ppInputLayout);
+        void IAGetVertexBuffers(
+            [in] UINT StartSlot,
+            [in] UINT NumBuffers,
+            [out] ID3D10Buffer **ppVertexBuffers,
+            [out] UINT *pStrides,
+            [out] UINT *pOffsets);
+        void IAGetIndexBuffer(
+            [out] ID3D10Buffer **pIndexBuffer,
+            [out] DXGI_FORMAT *Format,
+            [out] UINT *Offset);
+        void GSGetConstantBuffers(
+            [in] UINT StartSlot,
+            [in] UINT NumBuffers,
+            [out] ID3D10Buffer **ppConstantBuffers);
+        void GSGetShader(
+            [out] ID3D10GeometryShader **ppGeometryShader);
+        void IAGetPrimitiveTopology(
+            [out] D3D10_PRIMITIVE_TOPOLOGY *pTopology);
+        void VSGetShaderResources(
+            [in] UINT StartSlot,
+            [in] UINT NumViews,
+            [out] ID3D10ShaderResourceView **ppShaderResourceViews);
+        void VSGetSamplers(
+            [in] UINT StartSlot,
+            [in] UINT NumSamplers,
+            [out] ID3D10SamplerState **ppSamplers);
+        void GetPredication(
+            [out] ID3D10Predicate **ppPredicate,
+            [out] BOOL *pPredicateValue);
+        void GSGetShaderResources(
+            [in] UINT StartSlot,
+            [in] UINT NumViews,
+            [out] ID3D10ShaderResourceView **ppShaderResourceViews);
+        void GSGetSamplers(
+            [in] UINT StartSlot,
+            [in] UINT NumSamplers,
+            [out] ID3D10SamplerState **ppSamplers);
+        void OMGetRenderTargets(
+            [in] UINT NumViews,
+            [out] ID3D10RenderTargetView **ppRenderTargetViews,
+            [out] ID3D10DepthStencilView **ppDepthStencilView);
+        void OMGetBlendState(
+            [out] ID3D10BlendState **ppBlendState,
+            [out] FLOAT BlendFactor[4],
+            [out] UINT *pSampleMask);
+        void OMGetDepthStencilState(
+            [out] ID3D10DepthStencilState **ppDepthStencilState,
+            [out] UINT *pStencilRef);
+        void SOGetTargets(
+            [in] UINT NumBuffers,
+            [out] ID3D10Buffer **ppSOTargets,
+            [out] UINT *pOffsets);
+        void RSGetState(
+            [out] ID3D10RasterizerState **ppRasterizerState);
+        void RSGetViewports(
+            [in, out] UINT *NumViewports,
+            [out] D3D10_VIEWPORT *pViewports);
+        void RSGetScissorRects(
+            [in, out] UINT *NumRects,
+            [out] D3D10_RECT *pRects);
+        HRESULT GetDeviceRemovedReason();
+        HRESULT SetExceptionMode(
+            [in] UINT RaiseFlags);
+        UINT GetExceptionMode();
+        HRESULT GetPrivateData(
+            [in] REFGUID guid,
+            [in, out] UINT *pDataSize,
+            [out] void *pData);
+        HRESULT SetPrivateData(
+            [in] REFGUID guid,
+            [in] UINT DataSize,
+            [in] const void *pData);
+        HRESULT SetPrivateDataInterface(
+            [in] REFGUID guid,
+            [in] const IUnknown *pData);
+        void ClearState();
+        void Flush();
+        HRESULT CreateBuffer(
+            [in] const D3D10_BUFFER_DESC *pDesc,
+            [in] const D3D10_SUBRESOURCE_DATA *pInitialData,
+            [out] ID3D10Buffer **ppBuffer);
+        HRESULT CreateTexture1D(
+            [in] const D3D10_TEXTURE1D_DESC *pDesc,
+            [in] const D3D10_SUBRESOURCE_DATA *pInitialData,
+            [out] ID3D10Texture1D **ppTexture1D);
+        HRESULT CreateTexture2D(
+            [in] const D3D10_TEXTURE2D_DESC *pDesc,
+            [in] const D3D10_SUBRESOURCE_DATA *pInitialData,
+            [out] ID3D10Texture2D **ppTexture2D);
+        HRESULT CreateTexture3D(
+            [in] const D3D10_TEXTURE3D_DESC *pDesc,
+            [in] const D3D10_SUBRESOURCE_DATA *pInitialData,
+            [out] ID3D10Texture3D **ppTexture3D);
+        HRESULT CreateShaderResourceView(
+            [in] ID3D10Resource *pResource,
+            [in] const D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc,
+            [out] ID3D10ShaderResourceView **ppSRView);
+        HRESULT CreateRenderTargetView(
+            [in] ID3D10Resource *pResource,
+            [in] const D3D10_RENDER_TARGET_VIEW_DESC *pDesc,
+            [out] ID3D10RenderTargetView **ppRTView);
+        HRESULT CreateDepthStencilView(
+            [in] ID3D10Resource *pResource,
+            [in] const D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc,
+            [out] ID3D10DepthStencilView **ppDepthStencilView);
+        HRESULT CreateInputLayout(
+            [in] const D3D10_INPUT_ELEMENT_DESC *pInputElementDescs,
+            [in] UINT NumElements,
+            [in] const void *pShaderBytecodeWithInputSignature,
+            [in] SIZE_T BytecodeLength,
+            [out] ID3D10InputLayout **ppInputLayout);
+        HRESULT CreateVertexShader(
+            [in] const void *pShaderBytecode,
+            [in] SIZE_T BytecodeLength,
+            [out] ID3D10VertexShader **ppVertexShader);
+        HRESULT CreateGeometryShader(
+            [in] const void *pShaderBytecode,
+            [in] SIZE_T BytecodeLength,
+            [out] ID3D10GeometryShader **ppGeometryShader);
+        HRESULT CreateGeometryShaderWithStreamOutput(
+            [in] const void *pShaderBytecode,
+            [in] SIZE_T BytecodeLength,
+            [in] const D3D10_SO_DECLARATION_ENTRY *pSODeclaration,
+            [in] UINT NumEntries,
+            [in] UINT OutputStreamStride,
+            [out] ID3D10GeometryShader **ppGeometryShader);
+        HRESULT CreatePixelShader(
+            [in] const void *pShaderBytecode,
+            [in] SIZE_T BytecodeLength,
+            [out] ID3D10PixelShader **ppPixelShader);
+        HRESULT CreateBlendState(
+            [in] const D3D10_BLEND_DESC *pBlendStateDesc,
+            [out] ID3D10BlendState **ppBlendState);
+        HRESULT CreateDepthStencilState(
+            [in] const D3D10_DEPTH_STENCIL_DESC *pDepthStencilDesc,
+            [out] ID3D10DepthStencilState **ppDepthStencilState);
+        HRESULT CreateRasterizerState(
+            [in] const D3D10_RASTERIZER_DESC *pRasterizerDesc,
+            [out] ID3D10RasterizerState **ppRasterizerState);
+        HRESULT CreateSamplerState(
+            [in] const D3D10_SAMPLER_DESC *pSamplerDesc,
+            [out] ID3D10SamplerState **ppSamplerState);
+        HRESULT CreateQuery(
+            [in] const D3D10_QUERY_DESC *pQueryDesc,
+            [out] ID3D10Query **ppQuery);
+        HRESULT CreatePredicate(
+            [in] const D3D10_QUERY_DESC *pPredicateDesc,
+            [out] ID3D10Predicate **ppPredicate);
+        HRESULT CreateCounter(
+            [in] const D3D10_COUNTER_DESC *pCounterDesc,
+            [out] ID3D10Counter **ppCounter);
+        HRESULT CheckFormatSupport(
+            [in] DXGI_FORMAT Format,
+            [out] UINT *pFormatSupport);
+        HRESULT CheckMultisampleQualityLevels(
+            [in] DXGI_FORMAT Format,
+            [in] UINT SampleCount,
+            [out] UINT *pNumQualityLevels);
+        void CheckCounterInfo(
+            [out] D3D10_COUNTER_INFO *pCounterInfo);
+        HRESULT CheckCounter(
+            [in] const D3D10_COUNTER_DESC *pDesc,
+            [out] D3D10_COUNTER_TYPE *pType,
+            [out] UINT *pActiveCounters,
+            [out] LPSTR szName,
+            [in, out] UINT *pNameLength,
+            [out] LPSTR szUnits,
+            [in, out] UINT *pUnitsLength,
+            [out] LPSTR szDescription,
+            [in, out] UINT *pDescriptionLength);
+        UINT GetCreationFlags();
+        HRESULT OpenSharedResource(
+            [in] HANDLE hResource,
+            [in] REFIID ReturnedInterface,
+            [out] void **ppResource);
+        void SetTextFilterSize(
+            [in] UINT Width,
+            [in] UINT Height);
+        void GetTextFilterSize(
+            [out] UINT *pWidth,
+            [out] UINT *pHeight);
+}
+
+[
+    object,
+    local,
+    uuid(9b7e4e00-342c-4106-a19f-4f2704f689f0)
+]
+interface ID3D10Multithread : IUnknown
+{
+        void Enter();
+        void Leave();
+        BOOL SetMultithreadProtected(
+            [in] BOOL bMTProtect);
+        BOOL GetMultithreadProtected();
+}
+
+cpp_quote("#include <d3d10misc.h>")
+/* TODO: Include "d310effect.h" as soon as it exists */
+/* TODO: Include "d310shader.h" as soon as it exists */
+/* TODO: Include "d310sdklayers.h" as soon as it exists */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3d10misc.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3d10misc.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3d10misc.h	(revision 16410)
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2008 Henri Verbeet for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __D3D10MISC_H__
+#define __D3D10MISC_H__
+
+#include "d3d10.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum D3D10_DRIVER_TYPE {
+    D3D10_DRIVER_TYPE_HARDWARE  = 0,
+    D3D10_DRIVER_TYPE_REFERENCE = 1,
+    D3D10_DRIVER_TYPE_NULL      = 2,
+    D3D10_DRIVER_TYPE_SOFTWARE  = 3,
+} D3D10_DRIVER_TYPE;
+
+HRESULT WINAPI D3D10CreateDevice(IDXGIAdapter *adapter, D3D10_DRIVER_TYPE driver_type,
+        HMODULE swrast, UINT flags, UINT sdk_version, ID3D10Device **device);
+
+HRESULT WINAPI D3D10CreateDeviceAndSwapChain(IDXGIAdapter *adapter, D3D10_DRIVER_TYPE driver_type,
+        HMODULE swrast, UINT flags, UINT sdk_version, DXGI_SWAP_CHAIN_DESC *swapchain_desc,
+        IDXGISwapChain **swapchain, ID3D10Device **device);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __D3D10MISC_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3d8.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3d8.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3d8.h	(revision 16410)
@@ -0,0 +1,1145 @@
+/*
+ * Copyright (C) 2002 Jason Edmeades
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_D3D8_H
+#define __WINE_D3D8_H
+
+#ifndef DIRECT3D_VERSION
+#define DIRECT3D_VERSION  0x0800
+#endif
+
+#include <stdlib.h>
+
+#define COM_NO_WINDOWS_H
+#include <objbase.h>
+
+#ifndef __WINESRC__
+# include <windows.h>
+#endif
+
+#include <d3d8types.h>
+#include <d3d8caps.h>
+
+/*****************************************************************************
+ * Behavior Flags for IDirect3D8::CreateDevice
+ */
+#define D3DCREATE_FPU_PRESERVE                  0x00000002L
+#define D3DCREATE_MULTITHREADED                 0x00000004L
+#define D3DCREATE_PUREDEVICE                    0x00000010L
+#define D3DCREATE_SOFTWARE_VERTEXPROCESSING     0x00000020L
+#define D3DCREATE_HARDWARE_VERTEXPROCESSING     0x00000040L
+#define D3DCREATE_MIXED_VERTEXPROCESSING        0x00000080L
+
+/*****************************************************************************
+ * Flags for SetPrivateData
+ */
+#define D3DSPD_IUNKNOWN                         0x00000001L
+
+/*****************************************************************************
+ * #defines and error codes
+ */
+#define D3D_SDK_VERSION              220
+#define D3DADAPTER_DEFAULT           0
+#define D3DENUM_NO_WHQL_LEVEL        2
+
+#define _FACD3D  0x876
+#define MAKE_D3DHRESULT( code )  MAKE_HRESULT( 1, _FACD3D, code )
+
+/*
+ * Direct3D Errors
+ */
+#define D3D_OK                                  S_OK
+#define D3DERR_WRONGTEXTUREFORMAT               MAKE_D3DHRESULT(2072)
+#define D3DERR_UNSUPPORTEDCOLOROPERATION        MAKE_D3DHRESULT(2073)
+#define D3DERR_UNSUPPORTEDCOLORARG              MAKE_D3DHRESULT(2074)
+#define D3DERR_UNSUPPORTEDALPHAOPERATION        MAKE_D3DHRESULT(2075)
+#define D3DERR_UNSUPPORTEDALPHAARG              MAKE_D3DHRESULT(2076)
+#define D3DERR_TOOMANYOPERATIONS                MAKE_D3DHRESULT(2077)
+#define D3DERR_CONFLICTINGTEXTUREFILTER         MAKE_D3DHRESULT(2078)
+#define D3DERR_UNSUPPORTEDFACTORVALUE           MAKE_D3DHRESULT(2079)
+#define D3DERR_CONFLICTINGRENDERSTATE           MAKE_D3DHRESULT(2081)
+#define D3DERR_UNSUPPORTEDTEXTUREFILTER         MAKE_D3DHRESULT(2082)
+#define D3DERR_CONFLICTINGTEXTUREPALETTE        MAKE_D3DHRESULT(2086)
+#define D3DERR_DRIVERINTERNALERROR              MAKE_D3DHRESULT(2087)
+
+#define D3DERR_NOTFOUND                         MAKE_D3DHRESULT(2150)
+#define D3DERR_MOREDATA                         MAKE_D3DHRESULT(2151)
+#define D3DERR_DEVICELOST                       MAKE_D3DHRESULT(2152)
+#define D3DERR_DEVICENOTRESET                   MAKE_D3DHRESULT(2153)
+#define D3DERR_NOTAVAILABLE                     MAKE_D3DHRESULT(2154)
+#define D3DERR_OUTOFVIDEOMEMORY                 MAKE_D3DHRESULT(380)
+#define D3DERR_INVALIDDEVICE                    MAKE_D3DHRESULT(2155)
+#define D3DERR_INVALIDCALL                      MAKE_D3DHRESULT(2156)
+#define D3DERR_DRIVERINVALIDCALL                MAKE_D3DHRESULT(2157)
+
+/*****************************************************************************
+ * Predeclare the interfaces
+ */
+DEFINE_GUID(IID_IDirect3D8,              0x1DD9E8DA,0x1C77,0x4D40,0xB0,0xCF,0x98,0xFE,0xFD,0xFF,0x95,0x12);
+typedef struct IDirect3D8 *LPDIRECT3D8;
+
+DEFINE_GUID(IID_IDirect3DDevice8,        0x7385E5DF,0x8FE8,0x41D5,0x86,0xB6,0xD7,0xB4,0x85,0x47,0xB6,0xCF);
+typedef struct IDirect3DDevice8 *LPDIRECT3DDEVICE8;
+
+DEFINE_GUID(IID_IDirect3DResource8,      0x1B36BB7B,0x09B7,0x410A,0xB4,0x45,0x7D,0x14,0x30,0xD7,0xB3,0x3F);
+typedef struct IDirect3DResource8 *LPDIRECT3DRESOURCE8, *PDIRECT3DRESOURCE8;
+
+DEFINE_GUID(IID_IDirect3DVertexBuffer8,  0x8AEEEAC7,0x05F9,0x44D4,0xB5,0x91,0x00,0x0B,0x0D,0xF1,0xCB,0x95);
+typedef struct IDirect3DVertexBuffer8 *LPDIRECT3DVERTEXBUFFER8, *PDIRECT3DVERTEXBUFFER8;
+
+DEFINE_GUID(IID_IDirect3DVolume8,        0xBD7349F5,0x14F1,0x42E4,0x9C,0x79,0x97,0x23,0x80,0xDB,0x40,0xC0);
+typedef struct IDirect3DVolume8 *LPDIRECT3DVOLUME8, *PDIRECT3DVOLUME8;
+
+DEFINE_GUID(IID_IDirect3DSwapChain8,     0x928C088B,0x76B9,0x4C6B,0xA5,0x36,0xA5,0x90,0x85,0x38,0x76,0xCD);
+typedef struct IDirect3DSwapChain8 *LPDIRECT3DSWAPCHAIN8, *PDIRECT3DSWAPCHAIN8;
+
+DEFINE_GUID(IID_IDirect3DSurface8,       0xB96EEBCA,0xB326,0x4EA5,0x88,0x2F,0x2F,0xF5,0xBA,0xE0,0x21,0xDD);
+typedef struct IDirect3DSurface8 *LPDIRECT3DSURFACE8, *PDIRECT3DSURFACE8;
+
+DEFINE_GUID(IID_IDirect3DIndexBuffer8,   0x0E689C9A,0x053D,0x44A0,0x9D,0x92,0xDB,0x0E,0x3D,0x75,0x0F,0x86);
+typedef struct IDirect3DIndexBuffer8 *LPDIRECT3DINDEXBUFFER8, *PDIRECT3DINDEXBUFFER8;
+
+DEFINE_GUID(IID_IDirect3DBaseTexture8,   0xB4211CFA,0x51B9,0x4A9F,0xAB,0x78,0xDB,0x99,0xB2,0xBB,0x67,0x8E);
+typedef struct IDirect3DBaseTexture8 *LPDIRECT3DBASETEXTURE8, *PDIRECT3DBASETEXTURE8;
+
+DEFINE_GUID(IID_IDirect3DTexture8,       0xE4CDD575,0x2866,0x4F01,0xB1,0x2E,0x7E,0xEC,0xE1,0xEC,0x93,0x58);
+typedef struct IDirect3DTexture8 *LPDIRECT3DTEXTURE8, *PDIRECT3DTEXTURE8;
+
+DEFINE_GUID(IID_IDirect3DCubeTexture8,   0x3EE5B968,0x2ACA,0x4C34,0x8B,0xB5,0x7E,0x0C,0x3D,0x19,0xB7,0x50);
+typedef struct IDirect3DCubeTexture8 *LPDIRECT3DCUBETEXTURE8, *PDIRECT3DCUBETEXTURE8;
+
+DEFINE_GUID(IID_IDirect3DVolumeTexture8, 0x4B8AAAFA,0x140F,0x42BA,0x91,0x31,0x59,0x7E,0xAF,0xAA,0x2E,0xAD);
+typedef struct IDirect3DVolumeTexture8 *LPDIRECT3DVOLUMETEXTURE8, *PDIRECT3DVOLUMETEXTURE8;
+
+/*****************************************************************************
+ * IDirect3D8 interface
+ */
+#define INTERFACE IDirect3D8
+DECLARE_INTERFACE_(IDirect3D8,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3D8 methods ***/
+    STDMETHOD(RegisterSoftwareDevice)(THIS_ void * pInitializeFunction) PURE;
+    STDMETHOD_(UINT,GetAdapterCount             )(THIS) PURE;
+    STDMETHOD(GetAdapterIdentifier)(THIS_ UINT  Adapter, DWORD  Flags, D3DADAPTER_IDENTIFIER8 * pIdentifier) PURE;
+    STDMETHOD_(UINT,GetAdapterModeCount)(THIS_ UINT  Adapter) PURE;
+    STDMETHOD(EnumAdapterModes)(THIS_ UINT  Adapter, UINT  Mode, D3DDISPLAYMODE * pMode) PURE;
+    STDMETHOD(GetAdapterDisplayMode)(THIS_ UINT  Adapter, D3DDISPLAYMODE * pMode) PURE;
+    STDMETHOD(CheckDeviceType)(THIS_ UINT  Adapter, D3DDEVTYPE  CheckType, D3DFORMAT  DisplayFormat, D3DFORMAT  BackBufferFormat, BOOL  Windowed) PURE;
+    STDMETHOD(CheckDeviceFormat)(THIS_ UINT  Adapter, D3DDEVTYPE  DeviceType, D3DFORMAT  AdapterFormat, DWORD  Usage, D3DRESOURCETYPE  RType, D3DFORMAT  CheckFormat) PURE;
+    STDMETHOD(CheckDeviceMultiSampleType)(THIS_ UINT  Adapter, D3DDEVTYPE  DeviceType, D3DFORMAT  SurfaceFormat, BOOL  Windowed, D3DMULTISAMPLE_TYPE  MultiSampleType) PURE;
+    STDMETHOD(CheckDepthStencilMatch)(THIS_ UINT  Adapter, D3DDEVTYPE  DeviceType, D3DFORMAT  AdapterFormat, D3DFORMAT  RenderTargetFormat, D3DFORMAT  DepthStencilFormat) PURE;
+    STDMETHOD(GetDeviceCaps)(THIS_ UINT  Adapter, D3DDEVTYPE  DeviceType, D3DCAPS8 * pCaps) PURE;
+    STDMETHOD_(HMONITOR,GetAdapterMonitor)(THIS_ UINT  Adapter) PURE;
+    STDMETHOD(CreateDevice)(THIS_ UINT  Adapter, D3DDEVTYPE  DeviceType,HWND  hFocusWindow, DWORD  BehaviorFlags, D3DPRESENT_PARAMETERS * pPresentationParameters, struct IDirect3DDevice8 ** ppReturnedDeviceInterface) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3D8_QueryInterface(p,a,b)                    (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3D8_AddRef(p)                                (p)->lpVtbl->AddRef(p)
+#define IDirect3D8_Release(p)                               (p)->lpVtbl->Release(p)
+/*** IDirect3D8 methods ***/
+#define IDirect3D8_RegisterSoftwareDevice(p,a)              (p)->lpVtbl->RegisterSoftwareDevice(p,a)
+#define IDirect3D8_GetAdapterCount(p)                       (p)->lpVtbl->GetAdapterCount(p)
+#define IDirect3D8_GetAdapterIdentifier(p,a,b,c)            (p)->lpVtbl->GetAdapterIdentifier(p,a,b,c)
+#define IDirect3D8_GetAdapterModeCount(p,a)                 (p)->lpVtbl->GetAdapterModeCount(p,a)
+#define IDirect3D8_EnumAdapterModes(p,a,b,c)                (p)->lpVtbl->EnumAdapterModes(p,a,b,c)
+#define IDirect3D8_GetAdapterDisplayMode(p,a,b)             (p)->lpVtbl->GetAdapterDisplayMode(p,a,b)
+#define IDirect3D8_CheckDeviceType(p,a,b,c,d,e)             (p)->lpVtbl->CheckDeviceType(p,a,b,c,d,e)
+#define IDirect3D8_CheckDeviceFormat(p,a,b,c,d,e,f)         (p)->lpVtbl->CheckDeviceFormat(p,a,b,c,d,e,f)
+#define IDirect3D8_CheckDeviceMultiSampleType(p,a,b,c,d,e)  (p)->lpVtbl->CheckDeviceMultiSampleType(p,a,b,c,d,e)
+#define IDirect3D8_CheckDepthStencilMatch(p,a,b,c,d,e)      (p)->lpVtbl->CheckDepthStencilMatch(p,a,b,c,d,e)
+#define IDirect3D8_GetDeviceCaps(p,a,b,c)                   (p)->lpVtbl->GetDeviceCaps(p,a,b,c)
+#define IDirect3D8_GetAdapterMonitor(p,a)                   (p)->lpVtbl->GetAdapterMonitor(p,a)
+#define IDirect3D8_CreateDevice(p,a,b,c,d,e,f)              (p)->lpVtbl->CreateDevice(p,a,b,c,d,e,f)
+#else
+/*** IUnknown methods ***/
+#define IDirect3D8_QueryInterface(p,a,b)                    (p)->QueryInterface(a,b)
+#define IDirect3D8_AddRef(p)                                (p)->AddRef()
+#define IDirect3D8_Release(p)                               (p)->Release()
+/*** IDirect3D8 methods ***/
+#define IDirect3D8_RegisterSoftwareDevice(p,a)              (p)->RegisterSoftwareDevice(a)
+#define IDirect3D8_GetAdapterCount(p)                       (p)->GetAdapterCount()
+#define IDirect3D8_GetAdapterIdentifier(p,a,b,c)            (p)->GetAdapterIdentifier(a,b,c)
+#define IDirect3D8_GetAdapterModeCount(p,a)                 (p)->GetAdapterModeCount(a)
+#define IDirect3D8_EnumAdapterModes(p,a,b,c)                (p)->EnumAdapterModes(a,b,c)
+#define IDirect3D8_GetAdapterDisplayMode(p,a,b)             (p)->GetAdapterDisplayMode(a,b)
+#define IDirect3D8_CheckDeviceType(p,a,b,c,d,e)             (p)->CheckDeviceType(a,b,c,d,e)
+#define IDirect3D8_CheckDeviceFormat(p,a,b,c,d,e,f)         (p)->CheckDeviceFormat(a,b,c,d,e,f)
+#define IDirect3D8_CheckDeviceMultiSampleType(p,a,b,c,d,e)  (p)->CheckDeviceMultiSampleType(a,b,c,d,e)
+#define IDirect3D8_CheckDepthStencilMatch(p,a,b,c,d,e)      (p)->CheckDepthStencilMatch(a,b,c,d,e)
+#define IDirect3D8_GetDeviceCaps(p,a,b,c)                   (p)->GetDeviceCaps(a,b,c)
+#define IDirect3D8_GetAdapterMonitor(p,a)                   (p)->GetAdapterMonitor(a)
+#define IDirect3D8_CreateDevice(p,a,b,c,d,e,f)              (p)->CreateDevice(a,b,c,d,e,f)
+#endif
+
+/*****************************************************************************
+ * IDirect3DVolume8 interface
+ */
+#define INTERFACE IDirect3DVolume8
+DECLARE_INTERFACE_(IDirect3DVolume8,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DVolume8 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8 ** ppDevice) PURE;
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid,CONST void * pData, DWORD  SizeOfData, DWORD  Flags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID   refguid,void * pData, DWORD * pSizeOfData) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID  refguid) PURE;
+    STDMETHOD(GetContainer)(THIS_ REFIID  riid, void ** ppContainer) PURE;
+    STDMETHOD(GetDesc)(THIS_ D3DVOLUME_DESC * pDesc) PURE;
+    STDMETHOD(LockBox)(THIS_ D3DLOCKED_BOX * pLockedVolume,CONST D3DBOX * pBox, DWORD  Flags) PURE;
+    STDMETHOD(UnlockBox)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DVolume8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVolume8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IDirect3DVolume8_Release(p)                   (p)->lpVtbl->Release(p)
+/*** IDirect3DVolume8 methods ***/
+#define IDirect3DVolume8_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DVolume8_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DVolume8_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DVolume8_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DVolume8_GetContainer(p,a,b)          (p)->lpVtbl->GetContainer(p,a,b)
+#define IDirect3DVolume8_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
+#define IDirect3DVolume8_LockBox(p,a,b,c)             (p)->lpVtbl->LockBox(p,a,b,c)
+#define IDirect3DVolume8_UnlockBox(p)                 (p)->lpVtbl->UnlockBox(p)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DVolume8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
+#define IDirect3DVolume8_AddRef(p)                    (p)->AddRef()
+#define IDirect3DVolume8_Release(p)                   (p)->Release()
+/*** IDirect3DVolume8 methods ***/
+#define IDirect3DVolume8_GetDevice(p,a)               (p)->GetDevice(a)
+#define IDirect3DVolume8_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DVolume8_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
+#define IDirect3DVolume8_FreePrivateData(p,a)         (p)->FreePrivateData(a)
+#define IDirect3DVolume8_GetContainer(p,a,b)          (p)->GetContainer(a,b)
+#define IDirect3DVolume8_GetDesc(p,a)                 (p)->GetDesc(a)
+#define IDirect3DVolume8_LockBox(p,a,b,c)             (p)->LockBox(a,b,c)
+#define IDirect3DVolume8_UnlockBox(p)                 (p)->UnlockBox()
+#endif
+
+/*****************************************************************************
+ * IDirect3DSwapChain8 interface
+ */
+#define INTERFACE IDirect3DSwapChain8
+DECLARE_INTERFACE_(IDirect3DSwapChain8,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DSwapChain8 methods ***/
+    STDMETHOD(Present)(THIS_ CONST RECT * pSourceRect, CONST RECT * pDestRect, HWND  hDestWindowOverride,CONST RGNDATA * pDirtyRegion) PURE;
+    STDMETHOD(GetBackBuffer)(THIS_ UINT  BackBuffer, D3DBACKBUFFER_TYPE  Type, struct IDirect3DSurface8 ** ppBackBuffer) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DSwapChain8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DSwapChain8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IDirect3DSwapChain8_Release(p)                   (p)->lpVtbl->Release(p)
+/*** IDirect3DSwapChain8 methods ***/
+#define IDirect3DSwapChain8_Present(p,a,b,c)             (p)->lpVtbl->Present(p,a,b,c)
+#define IDirect3DSwapChain8_GetBackBuffer(p,a,b,c)       (p)->lpVtbl->GetBackBuffer(p,a,b,c)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DSwapChain8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
+#define IDirect3DSwapChain8_AddRef(p)                    (p)->AddRef()
+#define IDirect3DSwapChain8_Release(p)                   (p)->Release()
+/*** IDirect3DSwapChain8 methods ***/
+#define IDirect3DSwapChain8_Present(p,a,b,c)             (p)->Present(a,b,c)
+#define IDirect3DSwapChain8_GetBackBuffer(p,a,b,c)       (p)->GetBackBuffer(a,b,c)
+#endif
+
+/*****************************************************************************
+ * IDirect3DSurface8 interface
+ */
+#define INTERFACE IDirect3DSurface8
+DECLARE_INTERFACE_(IDirect3DSurface8,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DSurface8 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8 ** ppDevice) PURE;
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid,CONST void * pData,DWORD  SizeOfData,DWORD  Flags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID  refguid,void * pData,DWORD * pSizeOfData) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID  refguid) PURE;
+    STDMETHOD(GetContainer)(THIS_ REFIID  riid, void ** ppContainer) PURE;
+    STDMETHOD(GetDesc)(THIS_ D3DSURFACE_DESC * pDesc) PURE;
+    STDMETHOD(LockRect)(THIS_ D3DLOCKED_RECT * pLockedRect, CONST RECT * pRect,DWORD  Flags) PURE;
+    STDMETHOD(UnlockRect)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DSurface8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DSurface8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IDirect3DSurface8_Release(p)                   (p)->lpVtbl->Release(p)
+/*** IDirect3DSurface8 methods ***/
+#define IDirect3DSurface8_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DSurface8_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DSurface8_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DSurface8_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DSurface8_GetContainer(p,a,b)          (p)->lpVtbl->GetContainer(p,a,b)
+#define IDirect3DSurface8_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
+#define IDirect3DSurface8_LockRect(p,a,b,c)            (p)->lpVtbl->LockRect(p,a,b,c)
+#define IDirect3DSurface8_UnlockRect(p)                (p)->lpVtbl->UnlockRect(p)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DSurface8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
+#define IDirect3DSurface8_AddRef(p)                    (p)->AddRef()
+#define IDirect3DSurface8_Release(p)                   (p)->Release()
+/*** IDirect3DSurface8 methods ***/
+#define IDirect3DSurface8_GetDevice(p,a)               (p)->GetDevice(a)
+#define IDirect3DSurface8_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DSurface8_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
+#define IDirect3DSurface8_FreePrivateData(p,a)         (p)->FreePrivateData(a)
+#define IDirect3DSurface8_GetContainer(p,a,b)          (p)->GetContainer(a,b)
+#define IDirect3DSurface8_GetDesc(p,a)                 (p)->GetDesc(a)
+#define IDirect3DSurface8_LockRect(p,a,b,c)            (p)->LockRect(a,b,c)
+#define IDirect3DSurface8_UnlockRect(p)                (p)->UnlockRect()
+#endif
+
+/*****************************************************************************
+ * IDirect3DResource8 interface
+ */
+#define INTERFACE IDirect3DResource8
+DECLARE_INTERFACE_(IDirect3DResource8,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DResource8 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8 ** ppDevice) PURE;
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid, CONST void * pData, DWORD  SizeOfData, DWORD  Flags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID  refguid, void * pData, DWORD * pSizeOfData) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID  refguid) PURE;
+    STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD  PriorityNew) PURE;
+    STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
+    STDMETHOD_(void,PreLoad)(THIS) PURE;
+    STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DResource8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DResource8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IDirect3DResource8_Release(p)                   (p)->lpVtbl->Release(p)
+/*** IDirect3DResource8 methods ***/
+#define IDirect3DResource8_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DResource8_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DResource8_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DResource8_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DResource8_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DResource8_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
+#define IDirect3DResource8_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
+#define IDirect3DResource8_GetType(p)                   (p)->lpVtbl->GetType(p)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DResource8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
+#define IDirect3DResource8_AddRef(p)                    (p)->AddRef()
+#define IDirect3DResource8_Release(p)                   (p)->Release()
+/*** IDirect3DResource8 methods ***/
+#define IDirect3DResource8_GetDevice(p,a)               (p)->GetDevice(a)
+#define IDirect3DResource8_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DResource8_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
+#define IDirect3DResource8_FreePrivateData(p,a)         (p)->FreePrivateData(a)
+#define IDirect3DResource8_SetPriority(p,a)             (p)->SetPriority(a)
+#define IDirect3DResource8_GetPriority(p)               (p)->GetPriority()
+#define IDirect3DResource8_PreLoad(p)                   (p)->PreLoad()
+#define IDirect3DResource8_GetType(p)                   (p)->GetType()
+#endif
+
+/*****************************************************************************
+ * IDirect3DVertexBuffer8 interface
+ */
+#define INTERFACE IDirect3DVertexBuffer8
+DECLARE_INTERFACE_(IDirect3DVertexBuffer8,IDirect3DResource8)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DResource8 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8 ** ppDevice) PURE;
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid, CONST void * pData, DWORD  SizeOfData, DWORD  Flags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID  refguid, void * pData, DWORD * pSizeOfData) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID  refguid) PURE;
+    STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD  PriorityNew) PURE;
+    STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
+    STDMETHOD_(void,PreLoad)(THIS) PURE;
+    STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
+    /*** IDirect3DVertexBuffer8 methods ***/
+    STDMETHOD(Lock)(THIS_ UINT  OffsetToLock, UINT  SizeToLock, BYTE ** ppbData, DWORD  Flags) PURE;
+    STDMETHOD(Unlock)(THIS) PURE;
+    STDMETHOD(GetDesc)(THIS_ D3DVERTEXBUFFER_DESC  * pDesc) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DVertexBuffer8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVertexBuffer8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IDirect3DVertexBuffer8_Release(p)                   (p)->lpVtbl->Release(p)
+/*** IDirect3DVertexBuffer8 methods: IDirect3DResource8 ***/
+#define IDirect3DVertexBuffer8_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DVertexBuffer8_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DVertexBuffer8_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DVertexBuffer8_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DVertexBuffer8_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DVertexBuffer8_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
+#define IDirect3DVertexBuffer8_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
+#define IDirect3DVertexBuffer8_GetType(p)                   (p)->lpVtbl->GetType(p)
+/*** IDirect3DVertexBuffer8 methods ***/
+#define IDirect3DVertexBuffer8_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirect3DVertexBuffer8_Unlock(p)                    (p)->lpVtbl->Unlock(p)
+#define IDirect3DVertexBuffer8_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DVertexBuffer8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
+#define IDirect3DVertexBuffer8_AddRef(p)                    (p)->AddRef()
+#define IDirect3DVertexBuffer8_Release(p)                   (p)->Release()
+/*** IDirect3DVertexBuffer8 methods: IDirect3DResource8 ***/
+#define IDirect3DVertexBuffer8_GetDevice(p,a)               (p)->GetDevice(a)
+#define IDirect3DVertexBuffer8_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DVertexBuffer8_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
+#define IDirect3DVertexBuffer8_FreePrivateData(p,a)         (p)->FreePrivateData(a)
+#define IDirect3DVertexBuffer8_SetPriority(p,a)             (p)->SetPriority(a)
+#define IDirect3DVertexBuffer8_GetPriority(p)               (p)->GetPriority()
+#define IDirect3DVertexBuffer8_PreLoad(p)                   (p)->PreLoad()
+#define IDirect3DVertexBuffer8_GetType(p)                   (p)->GetType()
+/*** IDirect3DVertexBuffer8 methods ***/
+#define IDirect3DVertexBuffer8_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
+#define IDirect3DVertexBuffer8_Unlock(p)                    (p)->Unlock()
+#define IDirect3DVertexBuffer8_GetDesc(p,a)                 (p)->GetDesc(a)
+#endif
+
+/*****************************************************************************
+ * IDirect3DIndexBuffer8 interface
+ */
+#define INTERFACE IDirect3DIndexBuffer8
+DECLARE_INTERFACE_(IDirect3DIndexBuffer8,IDirect3DResource8)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DResource8 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8 ** ppDevice) PURE;
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid, CONST void * pData, DWORD  SizeOfData, DWORD  Flags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID  refguid, void * pData, DWORD * pSizeOfData) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID  refguid) PURE;
+    STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD  PriorityNew) PURE;
+    STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
+    STDMETHOD_(void,PreLoad)(THIS) PURE;
+    STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
+    /*** IDirect3DIndexBuffer8 methods ***/
+    STDMETHOD(Lock)(THIS_ UINT  OffsetToLock, UINT  SizeToLock, BYTE ** ppbData, DWORD  Flags) PURE;
+    STDMETHOD(Unlock)(THIS) PURE;
+    STDMETHOD(GetDesc)(THIS_ D3DINDEXBUFFER_DESC * pDesc) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DIndexBuffer8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DIndexBuffer8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IDirect3DIndexBuffer8_Release(p)                   (p)->lpVtbl->Release(p)
+/*** IDirect3DIndexBuffer8 methods: IDirect3DResource8 ***/
+#define IDirect3DIndexBuffer8_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DIndexBuffer8_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DIndexBuffer8_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DIndexBuffer8_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DIndexBuffer8_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DIndexBuffer8_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
+#define IDirect3DIndexBuffer8_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
+#define IDirect3DIndexBuffer8_GetType(p)                   (p)->lpVtbl->GetType(p)
+/*** IDirect3DIndexBuffer8 methods ***/
+#define IDirect3DIndexBuffer8_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirect3DIndexBuffer8_Unlock(p)                    (p)->lpVtbl->Unlock(p)
+#define IDirect3DIndexBuffer8_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DIndexBuffer8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
+#define IDirect3DIndexBuffer8_AddRef(p)                    (p)->AddRef()
+#define IDirect3DIndexBuffer8_Release(p)                   (p)->Release()
+/*** IDirect3DIndexBuffer8 methods: IDirect3DResource8 ***/
+#define IDirect3DIndexBuffer8_GetDevice(p,a)               (p)->GetDevice(a)
+#define IDirect3DIndexBuffer8_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DIndexBuffer8_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
+#define IDirect3DIndexBuffer8_FreePrivateData(p,a)         (p)->FreePrivateData(a)
+#define IDirect3DIndexBuffer8_SetPriority(p,a)             (p)->SetPriority(a)
+#define IDirect3DIndexBuffer8_GetPriority(p)               (p)->GetPriority()
+#define IDirect3DIndexBuffer8_PreLoad(p)                   (p)->PreLoad()
+#define IDirect3DIndexBuffer8_GetType(p)                   (p)->GetType()
+/*** IDirect3DIndexBuffer8 methods ***/
+#define IDirect3DIndexBuffer8_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
+#define IDirect3DIndexBuffer8_Unlock(p)                    (p)->Unlock()
+#define IDirect3DIndexBuffer8_GetDesc(p,a)                 (p)->GetDesc(a)
+#endif
+
+/*****************************************************************************
+ * IDirect3DBaseTexture8 interface
+ */
+#define INTERFACE IDirect3DBaseTexture8
+DECLARE_INTERFACE_(IDirect3DBaseTexture8,IDirect3DResource8)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DResource8 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8 ** ppDevice) PURE;
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid, CONST void * pData, DWORD  SizeOfData, DWORD  Flags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID  refguid, void * pData, DWORD * pSizeOfData) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID  refguid) PURE;
+    STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD  PriorityNew) PURE;
+    STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
+    STDMETHOD_(void,PreLoad)(THIS) PURE;
+    STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
+    /*** IDirect3DBaseTexture8 methods ***/
+    STDMETHOD_(DWORD,SetLOD)(THIS_ DWORD  LODNew) PURE;
+    STDMETHOD_(DWORD,GetLOD)(THIS) PURE;
+    STDMETHOD_(DWORD,GetLevelCount)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DBaseTexture8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DBaseTexture8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IDirect3DBaseTexture8_Release(p)                   (p)->lpVtbl->Release(p)
+/*** IDirect3DBaseTexture8 methods: IDirect3DResource8 ***/
+#define IDirect3DBaseTexture8_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DBaseTexture8_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DBaseTexture8_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DBaseTexture8_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DBaseTexture8_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DBaseTexture8_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
+#define IDirect3DBaseTexture8_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
+#define IDirect3DBaseTexture8_GetType(p)                   (p)->lpVtbl->GetType(p)
+/*** IDirect3DBaseTexture8 methods ***/
+#define IDirect3DBaseTexture8_SetLOD(p,a)                  (p)->lpVtbl->SetLOD(p,a)
+#define IDirect3DBaseTexture8_GetLOD(p)                    (p)->lpVtbl->GetLOD(p)
+#define IDirect3DBaseTexture8_GetLevelCount(p)             (p)->lpVtbl->GetLevelCount(p)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DBaseTexture8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
+#define IDirect3DBaseTexture8_AddRef(p)                    (p)->AddRef()
+#define IDirect3DBaseTexture8_Release(p)                   (p)->Release()
+/*** IDirect3DBaseTexture8 methods: IDirect3DResource8 ***/
+#define IDirect3DBaseTexture8_GetDevice(p,a)               (p)->GetDevice(a)
+#define IDirect3DBaseTexture8_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DBaseTexture8_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
+#define IDirect3DBaseTexture8_FreePrivateData(p,a)         (p)->FreePrivateData(a)
+#define IDirect3DBaseTexture8_SetPriority(p,a)             (p)->SetPriority(a)
+#define IDirect3DBaseTexture8_GetPriority(p)               (p)->GetPriority()
+#define IDirect3DBaseTexture8_PreLoad(p)                   (p)->PreLoad()
+#define IDirect3DBaseTexture8_GetType(p)                   (p)->GetType()
+/*** IDirect3DBaseTexture8 methods ***/
+#define IDirect3DBaseTexture8_SetLOD(p,a)                  (p)->SetLOD(a)
+#define IDirect3DBaseTexture8_GetLOD(p)                    (p)->GetLOD()
+#define IDirect3DBaseTexture8_GetLevelCount(p)             (p)->GetLevelCount()
+#endif
+
+/*****************************************************************************
+ * IDirect3DCubeTexture8 interface
+ */
+#define INTERFACE IDirect3DCubeTexture8
+DECLARE_INTERFACE_(IDirect3DCubeTexture8,IDirect3DBaseTexture8)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DResource8 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8 ** ppDevice) PURE;
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid, CONST void * pData, DWORD  SizeOfData, DWORD  Flags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID  refguid, void * pData, DWORD * pSizeOfData) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID  refguid) PURE;
+    STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD  PriorityNew) PURE;
+    STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
+    STDMETHOD_(void,PreLoad)(THIS) PURE;
+    STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
+    /*** IDirect3DBaseTexture8 methods ***/
+    STDMETHOD_(DWORD,SetLOD)(THIS_ DWORD  LODNew) PURE;
+    STDMETHOD_(DWORD,GetLOD)(THIS) PURE;
+    STDMETHOD_(DWORD,GetLevelCount)(THIS) PURE;
+    /*** IDirect3DCubeTexture8 methods ***/
+    STDMETHOD(GetLevelDesc)(THIS_ UINT  Level,D3DSURFACE_DESC * pDesc) PURE;
+    STDMETHOD(GetCubeMapSurface)(THIS_ D3DCUBEMAP_FACES  FaceType,UINT  Level,IDirect3DSurface8 ** ppCubeMapSurface) PURE;
+    STDMETHOD(LockRect)(THIS_ D3DCUBEMAP_FACES  FaceType,UINT  Level,D3DLOCKED_RECT * pLockedRect,CONST RECT * pRect,DWORD  Flags) PURE;
+    STDMETHOD(UnlockRect)(THIS_ D3DCUBEMAP_FACES  FaceType,UINT  Level) PURE;
+    STDMETHOD(AddDirtyRect)(THIS_ D3DCUBEMAP_FACES  FaceType,CONST RECT * pDirtyRect) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DCubeTexture8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DCubeTexture8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IDirect3DCubeTexture8_Release(p)                   (p)->lpVtbl->Release(p)
+/*** IDirect3DCubeTexture8 methods: IDirect3DResource8 ***/
+#define IDirect3DCubeTexture8_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DCubeTexture8_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DCubeTexture8_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DCubeTexture8_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DCubeTexture8_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DCubeTexture8_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
+#define IDirect3DCubeTexture8_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
+#define IDirect3DCubeTexture8_GetType(p)                   (p)->lpVtbl->GetType(p)
+/*** IDirect3DCubeTexture8 methods: IDirect3DBaseTexture8 ***/
+#define IDirect3DCubeTexture8_SetLOD(p,a)                  (p)->lpVtbl->SetLOD(p,a)
+#define IDirect3DCubeTexture8_GetLOD(p)                    (p)->lpVtbl->GetLOD(p)
+#define IDirect3DCubeTexture8_GetLevelCount(p)             (p)->lpVtbl->GetLevelCount(p)
+/*** IDirect3DCubeTexture8 methods ***/
+#define IDirect3DCubeTexture8_GetLevelDesc(p,a,b)          (p)->lpVtbl->GetLevelDesc(p,a,b)
+#define IDirect3DCubeTexture8_GetCubeMapSurface(p,a,b,c)   (p)->lpVtbl->GetCubeMapSurface(p,a,b,c)
+#define IDirect3DCubeTexture8_LockRect(p,a,b,c,d,e)        (p)->lpVtbl->LockRect(p,a,b,c,d,e)
+#define IDirect3DCubeTexture8_UnlockRect(p,a,b)            (p)->lpVtbl->UnlockRect(p,a,b)
+#define IDirect3DCubeTexture8_AddDirtyRect(p,a,b)          (p)->lpVtbl->AddDirtyRect(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DCubeTexture8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
+#define IDirect3DCubeTexture8_AddRef(p)                    (p)->AddRef()
+#define IDirect3DCubeTexture8_Release(p)                   (p)->Release()
+/*** IDirect3DCubeTexture8 methods: IDirect3DResource8 ***/
+#define IDirect3DCubeTexture8_GetDevice(p,a)               (p)->GetDevice(a)
+#define IDirect3DCubeTexture8_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DCubeTexture8_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
+#define IDirect3DCubeTexture8_FreePrivateData(p,a)         (p)->FreePrivateData(a)
+#define IDirect3DCubeTexture8_SetPriority(p,a)             (p)->SetPriority(a)
+#define IDirect3DCubeTexture8_GetPriority(p)               (p)->GetPriority()
+#define IDirect3DCubeTexture8_PreLoad(p)                   (p)->PreLoad()
+#define IDirect3DCubeTexture8_GetType(p)                   (p)->GetType()
+/*** IDirect3DCubeTexture8 methods: IDirect3DBaseTexture8 ***/
+#define IDirect3DCubeTexture8_SetLOD(p,a)                  (p)->SetLOD(a)
+#define IDirect3DCubeTexture8_GetLOD(p)                    (p)->GetLOD()
+#define IDirect3DCubeTexture8_GetLevelCount(p)             (p)->GetLevelCount()
+/*** IDirect3DCubeTexture8 methods ***/
+#define IDirect3DCubeTexture8_GetLevelDesc(p,a,b)          (p)->GetLevelDesc(a,b)
+#define IDirect3DCubeTexture8_GetCubeMapSurface(p,a,b,c)   (p)->GetCubeMapSurface(a,b,c)
+#define IDirect3DCubeTexture8_LockRect(p,a,b,c,d,e)        (p)->LockRect(a,b,c,d,e)
+#define IDirect3DCubeTexture8_UnlockRect(p,a,b)            (p)->UnlockRect(a,b)
+#define IDirect3DCubeTexture8_AddDirtyRect(p,a,b)          (p)->AddDirtyRect(a,b)
+#endif
+
+/*****************************************************************************
+ * IDirect3DTexture8 interface
+ */
+#define INTERFACE IDirect3DTexture8
+DECLARE_INTERFACE_(IDirect3DTexture8,IDirect3DBaseTexture8)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DResource8 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8 ** ppDevice) PURE;
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid, CONST void * pData, DWORD  SizeOfData, DWORD  Flags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID  refguid, void * pData, DWORD * pSizeOfData) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID  refguid) PURE;
+    STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD  PriorityNew) PURE;
+    STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
+    STDMETHOD_(void,PreLoad)(THIS) PURE;
+    STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
+    /*** IDirect3DBaseTexture8 methods ***/
+    STDMETHOD_(DWORD,SetLOD)(THIS_ DWORD  LODNew) PURE;
+    STDMETHOD_(DWORD,GetLOD)(THIS) PURE;
+    STDMETHOD_(DWORD,GetLevelCount)(THIS) PURE;
+    /*** IDirect3DTexture8 methods ***/
+    STDMETHOD(GetLevelDesc)(THIS_ UINT  Level,D3DSURFACE_DESC * pDesc) PURE;
+    STDMETHOD(GetSurfaceLevel)(THIS_ UINT  Level,IDirect3DSurface8 ** ppSurfaceLevel) PURE;
+    STDMETHOD(LockRect)(THIS_ UINT  Level,D3DLOCKED_RECT * pLockedRect,CONST RECT * pRect,DWORD  Flags) PURE;
+    STDMETHOD(UnlockRect)(THIS_ UINT  Level) PURE;
+    STDMETHOD(AddDirtyRect)(THIS_ CONST RECT * pDirtyRect) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DTexture8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DTexture8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IDirect3DTexture8_Release(p)                   (p)->lpVtbl->Release(p)
+/*** IDirect3DTexture8 methods: IDirect3DResource8 ***/
+#define IDirect3DTexture8_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DTexture8_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DTexture8_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DTexture8_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DTexture8_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DTexture8_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
+#define IDirect3DTexture8_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
+#define IDirect3DTexture8_GetType(p)                   (p)->lpVtbl->GetType(p)
+/*** IDirect3DTexture8 methods: IDirect3DBaseTexture8 ***/
+#define IDirect3DTexture8_SetLOD(p,a)                  (p)->lpVtbl->SetLOD(p,a)
+#define IDirect3DTexture8_GetLOD(p)                    (p)->lpVtbl->GetLOD(p)
+#define IDirect3DTexture8_GetLevelCount(p)             (p)->lpVtbl->GetLevelCount(p)
+/*** IDirect3DTexture8 methods ***/
+#define IDirect3DTexture8_GetLevelDesc(p,a,b)          (p)->lpVtbl->GetLevelDesc(p,a,b)
+#define IDirect3DTexture8_GetSurfaceLevel(p,a,b)       (p)->lpVtbl->GetSurfaceLevel(p,a,b)
+#define IDirect3DTexture8_LockRect(p,a,b,c,d)          (p)->lpVtbl->LockRect(p,a,b,c,d)
+#define IDirect3DTexture8_UnlockRect(p,a)              (p)->lpVtbl->UnlockRect(p,a)
+#define IDirect3DTexture8_AddDirtyRect(p,a)            (p)->lpVtbl->AddDirtyRect(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DTexture8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
+#define IDirect3DTexture8_AddRef(p)                    (p)->AddRef()
+#define IDirect3DTexture8_Release(p)                   (p)->Release()
+/*** IDirect3DTexture8 methods: IDirect3DResource8 ***/
+#define IDirect3DTexture8_GetDevice(p,a)               (p)->GetDevice(a)
+#define IDirect3DTexture8_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DTexture8_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
+#define IDirect3DTexture8_FreePrivateData(p,a)         (p)->FreePrivateData(a)
+#define IDirect3DTexture8_SetPriority(p,a)             (p)->SetPriority(a)
+#define IDirect3DTexture8_GetPriority(p)               (p)->GetPriority()
+#define IDirect3DTexture8_PreLoad(p)                   (p)->PreLoad()
+#define IDirect3DTexture8_GetType(p)                   (p)->GetType()
+/*** IDirect3DTexture8 methods: IDirect3DBaseTexture8 ***/
+#define IDirect3DTexture8_SetLOD(p,a)                  (p)->SetLOD(a)
+#define IDirect3DTexture8_GetLOD(p)                    (p)->GetLOD()
+#define IDirect3DTexture8_GetLevelCount(p)             (p)->GetLevelCount()
+/*** IDirect3DTexture8 methods ***/
+#define IDirect3DTexture8_GetLevelDesc(p,a,b)          (p)->GetLevelDesc(a,b)
+#define IDirect3DTexture8_GetSurfaceLevel(p,a,b)       (p)->GetSurfaceLevel(a,b)
+#define IDirect3DTexture8_LockRect(p,a,b,c,d)          (p)->LockRect(a,b,c,d)
+#define IDirect3DTexture8_UnlockRect(p,a)              (p)->UnlockRect(a)
+#define IDirect3DTexture8_AddDirtyRect(p,a)            (p)->AddDirtyRect(a)
+#endif
+
+/*****************************************************************************
+ * IDirect3DVolumeTexture8 interface
+ */
+#define INTERFACE IDirect3DVolumeTexture8
+DECLARE_INTERFACE_(IDirect3DVolumeTexture8,IDirect3DBaseTexture8)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DResource8 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8 ** ppDevice) PURE;
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid, CONST void * pData, DWORD  SizeOfData, DWORD  Flags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID  refguid, void * pData, DWORD * pSizeOfData) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID  refguid) PURE;
+    STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD  PriorityNew) PURE;
+    STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
+    STDMETHOD_(void,PreLoad)(THIS) PURE;
+    STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
+    /*** IDirect3DBaseTexture8 methods ***/
+    STDMETHOD_(DWORD,SetLOD)(THIS_ DWORD  LODNew) PURE;
+    STDMETHOD_(DWORD,GetLOD)(THIS) PURE;
+    STDMETHOD_(DWORD,GetLevelCount)(THIS) PURE;
+    /*** IDirect3DVolumeTexture8 methods ***/
+    STDMETHOD(GetLevelDesc)(THIS_ UINT  Level,D3DVOLUME_DESC * pDesc) PURE;
+    STDMETHOD(GetVolumeLevel)(THIS_ UINT  Level,IDirect3DVolume8 ** ppVolumeLevel) PURE;
+    STDMETHOD(LockBox)(THIS_ UINT  Level,D3DLOCKED_BOX * pLockedVolume,CONST D3DBOX * pBox,DWORD  Flags) PURE;
+    STDMETHOD(UnlockBox)(THIS_ UINT  Level) PURE;
+    STDMETHOD(AddDirtyBox)(THIS_ CONST D3DBOX * pDirtyBox) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DVolumeTexture8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVolumeTexture8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IDirect3DVolumeTexture8_Release(p)                   (p)->lpVtbl->Release(p)
+/*** IDirect3DVolumeTexture8 methods: IDirect3DResource8 ***/
+#define IDirect3DVolumeTexture8_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DVolumeTexture8_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DVolumeTexture8_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DVolumeTexture8_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DVolumeTexture8_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DVolumeTexture8_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
+#define IDirect3DVolumeTexture8_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
+#define IDirect3DVolumeTexture8_GetType(p)                   (p)->lpVtbl->GetType(p)
+/*** IDirect3DVolumeTexture8 methods: IDirect3DBaseTexture8 ***/
+#define IDirect3DVolumeTexture8_SetLOD(p,a)                  (p)->lpVtbl->SetLOD(p,a)
+#define IDirect3DVolumeTexture8_GetLOD(p)                    (p)->lpVtbl->GetLOD(p)
+#define IDirect3DVolumeTexture8_GetLevelCount(p)             (p)->lpVtbl->GetLevelCount(p)
+/*** IDirect3DVolumeTexture8 methods ***/
+#define IDirect3DVolumeTexture8_GetLevelDesc(p,a,b)          (p)->lpVtbl->GetLevelDesc(p,a,b)
+#define IDirect3DVolumeTexture8_GetVolumeLevel(p,a,b)        (p)->lpVtbl->GetVolumeLevel(p,a,b)
+#define IDirect3DVolumeTexture8_LockBox(p,a,b,c,d)           (p)->lpVtbl->LockBox(p,a,b,c,d)
+#define IDirect3DVolumeTexture8_UnlockBox(p,a)               (p)->lpVtbl->UnlockBox(p,a)
+#define IDirect3DVolumeTexture8_AddDirtyBox(p,a)             (p)->lpVtbl->AddDirtyBox(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DVolumeTexture8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
+#define IDirect3DVolumeTexture8_AddRef(p)                    (p)->AddRef()
+#define IDirect3DVolumeTexture8_Release(p)                   (p)->Release()
+/*** IDirect3DVolumeTexture8 methods: IDirect3DResource8 ***/
+#define IDirect3DVolumeTexture8_GetDevice(p,a)               (p)->GetDevice(a)
+#define IDirect3DVolumeTexture8_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DVolumeTexture8_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
+#define IDirect3DVolumeTexture8_FreePrivateData(p,a)         (p)->FreePrivateData(a)
+#define IDirect3DVolumeTexture8_SetPriority(p,a)             (p)->SetPriority(a)
+#define IDirect3DVolumeTexture8_GetPriority(p)               (p)->GetPriority()
+#define IDirect3DVolumeTexture8_PreLoad(p)                   (p)->PreLoad()
+#define IDirect3DVolumeTexture8_GetType(p)                   (p)->GetType()
+/*** IDirect3DVolumeTexture8 methods: IDirect3DBaseTexture8 ***/
+#define IDirect3DVolumeTexture8_SetLOD(p,a)                  (p)->SetLOD(a)
+#define IDirect3DVolumeTexture8_GetLOD(p)                    (p)->GetLOD()
+#define IDirect3DVolumeTexture8_GetLevelCount(p)             (p)->GetLevelCount()
+/*** IDirect3DVolumeTexture8 methods ***/
+#define IDirect3DVolumeTexture8_GetLevelDesc(p,a,b)          (p)->GetLevelDesc(a,b)
+#define IDirect3DVolumeTexture8_GetVolumeLevel(p,a,b)        (p)->GetVolumeLevel(a,b)
+#define IDirect3DVolumeTexture8_LockBox(p,a,b,c,d)           (p)->LockBox(a,b,c,d)
+#define IDirect3DVolumeTexture8_UnlockBox(p,a)               (p)->UnlockBox(a)
+#define IDirect3DVolumeTexture8_AddDirtyBox(p,a)             (p)->AddDirtyBox(a)
+#endif
+
+/*****************************************************************************
+ * IDirect3DDevice8 interface
+ */
+#define INTERFACE IDirect3DDevice8
+DECLARE_INTERFACE_(IDirect3DDevice8,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DDevice8 methods ***/
+    STDMETHOD(TestCooperativeLevel)(THIS) PURE;
+    STDMETHOD_(UINT,GetAvailableTextureMem)(THIS) PURE;
+    STDMETHOD(ResourceManagerDiscardBytes)(THIS_ DWORD  Bytes) PURE;
+    STDMETHOD(GetDirect3D)(THIS_ IDirect3D8 ** ppD3D8) PURE;
+    STDMETHOD(GetDeviceCaps)(THIS_ D3DCAPS8 * pCaps) PURE;
+    STDMETHOD(GetDisplayMode)(THIS_ D3DDISPLAYMODE * pMode) PURE;
+    STDMETHOD(GetCreationParameters)(THIS_ D3DDEVICE_CREATION_PARAMETERS  * pParameters) PURE;
+    STDMETHOD(SetCursorProperties)(THIS_ UINT  XHotSpot, UINT  YHotSpot, IDirect3DSurface8 * pCursorBitmap) PURE;
+    STDMETHOD_(void,SetCursorPosition)(THIS_ UINT  XScreenSpace, UINT  YScreenSpace,DWORD  Flags) PURE;
+    STDMETHOD_(BOOL,ShowCursor)(THIS_ BOOL  bShow) PURE;
+    STDMETHOD(CreateAdditionalSwapChain)(THIS_ D3DPRESENT_PARAMETERS * pPresentationParameters, IDirect3DSwapChain8 ** pSwapChain) PURE;
+    STDMETHOD(Reset)(THIS_ D3DPRESENT_PARAMETERS * pPresentationParameters) PURE;
+    STDMETHOD(Present)(THIS_ CONST RECT * pSourceRect,CONST RECT * pDestRect,HWND  hDestWindowOverride,CONST RGNDATA * pDirtyRegion) PURE;
+    STDMETHOD(GetBackBuffer)(THIS_ UINT  BackBuffer,D3DBACKBUFFER_TYPE  Type,IDirect3DSurface8 ** ppBackBuffer) PURE;
+    STDMETHOD(GetRasterStatus)(THIS_ D3DRASTER_STATUS * pRasterStatus) PURE;
+    STDMETHOD_(void,SetGammaRamp)(THIS_ DWORD  Flags,CONST D3DGAMMARAMP * pRamp) PURE;
+    STDMETHOD_(void,GetGammaRamp)(THIS_ D3DGAMMARAMP * pRamp) PURE;
+    STDMETHOD(CreateTexture)(THIS_ UINT  Width,UINT  Height,UINT  Levels,DWORD  Usage,D3DFORMAT  Format,D3DPOOL  Pool,IDirect3DTexture8 ** ppTexture) PURE;
+    STDMETHOD(CreateVolumeTexture)(THIS_ UINT  Width,UINT  Height,UINT  Depth,UINT  Levels,DWORD  Usage,D3DFORMAT  Format,D3DPOOL  Pool,IDirect3DVolumeTexture8 ** ppVolumeTexture) PURE;
+    STDMETHOD(CreateCubeTexture)(THIS_ UINT  EdgeLength,UINT  Levels,DWORD  Usage,D3DFORMAT  Format,D3DPOOL  Pool,IDirect3DCubeTexture8 ** ppCubeTexture) PURE;
+    STDMETHOD(CreateVertexBuffer)(THIS_ UINT  Length,DWORD  Usage,DWORD  FVF,D3DPOOL  Pool,IDirect3DVertexBuffer8 ** ppVertexBuffer) PURE;
+    STDMETHOD(CreateIndexBuffer)(THIS_ UINT  Length,DWORD  Usage,D3DFORMAT  Format,D3DPOOL  Pool,IDirect3DIndexBuffer8 ** ppIndexBuffer) PURE;
+    STDMETHOD(CreateRenderTarget)(THIS_ UINT  Width,UINT  Height,D3DFORMAT  Format,D3DMULTISAMPLE_TYPE  MultiSample,BOOL  Lockable,IDirect3DSurface8 ** ppSurface) PURE;
+    STDMETHOD(CreateDepthStencilSurface)(THIS_ UINT  Width,UINT  Height,D3DFORMAT  Format,D3DMULTISAMPLE_TYPE  MultiSample,IDirect3DSurface8 ** ppSurface) PURE;
+    STDMETHOD(CreateImageSurface)(THIS_ UINT  Width,UINT  Height,D3DFORMAT  Format,IDirect3DSurface8 ** ppSurface) PURE;
+    STDMETHOD(CopyRects)(THIS_ IDirect3DSurface8 * pSourceSurface,CONST RECT * pSourceRectsArray,UINT  cRects,IDirect3DSurface8 * pDestinationSurface,CONST POINT * pDestPointsArray) PURE;
+    STDMETHOD(UpdateTexture)(THIS_ IDirect3DBaseTexture8 * pSourceTexture,IDirect3DBaseTexture8 * pDestinationTexture) PURE;
+    STDMETHOD(GetFrontBuffer)(THIS_ IDirect3DSurface8 * pDestSurface) PURE;
+    STDMETHOD(SetRenderTarget)(THIS_ IDirect3DSurface8 * pRenderTarget,IDirect3DSurface8 * pNewZStencil) PURE;
+    STDMETHOD(GetRenderTarget)(THIS_ IDirect3DSurface8 ** ppRenderTarget) PURE;
+    STDMETHOD(GetDepthStencilSurface)(THIS_ IDirect3DSurface8 ** ppZStencilSurface) PURE;
+    STDMETHOD(BeginScene)(THIS) PURE;
+    STDMETHOD(EndScene)(THIS) PURE;
+    STDMETHOD(Clear)(THIS_ DWORD  Count,CONST D3DRECT * pRects,DWORD  Flags,D3DCOLOR  Color,float  Z,DWORD  Stencil) PURE;
+    STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE  State,CONST D3DMATRIX * pMatrix) PURE;
+    STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE  State,D3DMATRIX * pMatrix) PURE;
+    STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE  State, CONST D3DMATRIX * pMatrix) PURE;
+    STDMETHOD(SetViewport)(THIS_ CONST D3DVIEWPORT8 * pViewport) PURE;
+    STDMETHOD(GetViewport)(THIS_ D3DVIEWPORT8 * pViewport) PURE;
+    STDMETHOD(SetMaterial)(THIS_ CONST D3DMATERIAL8 * pMaterial) PURE;
+    STDMETHOD(GetMaterial)(THIS_ D3DMATERIAL8 *pMaterial) PURE;
+    STDMETHOD(SetLight)(THIS_ DWORD  Index,CONST D3DLIGHT8 * pLight) PURE;
+    STDMETHOD(GetLight)(THIS_ DWORD  Index,D3DLIGHT8 * pLight) PURE;
+    STDMETHOD(LightEnable)(THIS_ DWORD  Index,BOOL  Enable) PURE;
+    STDMETHOD(GetLightEnable)(THIS_ DWORD  Index,BOOL * pEnable) PURE;
+    STDMETHOD(SetClipPlane)(THIS_ DWORD  Index,CONST float * pPlane) PURE;
+    STDMETHOD(GetClipPlane)(THIS_ DWORD  Index,float * pPlane) PURE;
+    STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE  State,DWORD  Value) PURE;
+    STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE  State,DWORD * pValue) PURE;
+    STDMETHOD(BeginStateBlock)(THIS) PURE;
+    STDMETHOD(EndStateBlock)(THIS_ DWORD * pToken) PURE;
+    STDMETHOD(ApplyStateBlock)(THIS_ DWORD  Token) PURE;
+    STDMETHOD(CaptureStateBlock)(THIS_ DWORD  Token) PURE;
+    STDMETHOD(DeleteStateBlock)(THIS_ DWORD  Token) PURE;
+    STDMETHOD(CreateStateBlock)(THIS_ D3DSTATEBLOCKTYPE  Type,DWORD * pToken) PURE;
+    STDMETHOD(SetClipStatus)(THIS_ CONST D3DCLIPSTATUS8 * pClipStatus) PURE;
+    STDMETHOD(GetClipStatus)(THIS_ D3DCLIPSTATUS8 * pClipStatus) PURE;
+    STDMETHOD(GetTexture)(THIS_ DWORD  Stage,IDirect3DBaseTexture8 ** ppTexture) PURE;
+    STDMETHOD(SetTexture)(THIS_ DWORD  Stage,IDirect3DBaseTexture8 * pTexture) PURE;
+    STDMETHOD(GetTextureStageState)(THIS_ DWORD  Stage,D3DTEXTURESTAGESTATETYPE  Type,DWORD * pValue) PURE;
+    STDMETHOD(SetTextureStageState)(THIS_ DWORD  Stage,D3DTEXTURESTAGESTATETYPE  Type,DWORD  Value) PURE;
+    STDMETHOD(ValidateDevice)(THIS_ DWORD * pNumPasses) PURE;
+    STDMETHOD(GetInfo)(THIS_ DWORD  DevInfoID,void * pDevInfoStruct,DWORD  DevInfoStructSize) PURE;
+    STDMETHOD(SetPaletteEntries)(THIS_ UINT  PaletteNumber,CONST PALETTEENTRY * pEntries) PURE;
+    STDMETHOD(GetPaletteEntries)(THIS_ UINT  PaletteNumber,PALETTEENTRY * pEntries) PURE;
+    STDMETHOD(SetCurrentTexturePalette)(THIS_ UINT  PaletteNumber) PURE;
+    STDMETHOD(GetCurrentTexturePalette)(THIS_ UINT  * PaletteNumber) PURE;
+    STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE  PrimitiveType,UINT  StartVertex,UINT  PrimitiveCount) PURE;
+    STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE  PrimitiveType,UINT  minIndex,UINT  NumVertices,UINT  startIndex,UINT  primCount) PURE;
+    STDMETHOD(DrawPrimitiveUP)(THIS_ D3DPRIMITIVETYPE  PrimitiveType,UINT  PrimitiveCount,CONST void * pVertexStreamZeroData,UINT  VertexStreamZeroStride) PURE;
+    STDMETHOD(DrawIndexedPrimitiveUP)(THIS_ D3DPRIMITIVETYPE  PrimitiveType,UINT  MinVertexIndex,UINT  NumVertexIndices,UINT  PrimitiveCount,CONST void * pIndexData,D3DFORMAT  IndexDataFormat,CONST void * pVertexStreamZeroData,UINT  VertexStreamZeroStride) PURE;
+    STDMETHOD(ProcessVertices)(THIS_ UINT  SrcStartIndex,UINT  DestIndex,UINT  VertexCount,IDirect3DVertexBuffer8 * pDestBuffer,DWORD  Flags) PURE;
+    STDMETHOD(CreateVertexShader)(THIS_ CONST DWORD * pDeclaration,CONST DWORD * pFunction,DWORD * pHandle,DWORD  Usage) PURE;
+    STDMETHOD(SetVertexShader)(THIS_ DWORD  Handle) PURE;
+    STDMETHOD(GetVertexShader)(THIS_ DWORD * pHandle) PURE;
+    STDMETHOD(DeleteVertexShader)(THIS_ DWORD  Handle) PURE;
+    STDMETHOD(SetVertexShaderConstant)(THIS_ DWORD  Register,CONST void * pConstantData,DWORD  ConstantCount) PURE;
+    STDMETHOD(GetVertexShaderConstant)(THIS_ DWORD  Register,void * pConstantData,DWORD  ConstantCount) PURE;
+    STDMETHOD(GetVertexShaderDeclaration)(THIS_ DWORD  Handle,void * pData,DWORD * pSizeOfData) PURE;
+    STDMETHOD(GetVertexShaderFunction)(THIS_ DWORD  Handle,void * pData,DWORD * pSizeOfData) PURE;
+    STDMETHOD(SetStreamSource)(THIS_ UINT  StreamNumber,IDirect3DVertexBuffer8 * pStreamData,UINT  Stride) PURE;
+    STDMETHOD(GetStreamSource)(THIS_ UINT  StreamNumber,IDirect3DVertexBuffer8 ** ppStreamData,UINT * pStride) PURE;
+    STDMETHOD(SetIndices)(THIS_ IDirect3DIndexBuffer8 * pIndexData,UINT  BaseVertexIndex) PURE;
+    STDMETHOD(GetIndices)(THIS_ IDirect3DIndexBuffer8 ** ppIndexData,UINT * pBaseVertexIndex) PURE;
+    STDMETHOD(CreatePixelShader)(THIS_ CONST DWORD * pFunction,DWORD * pHandle) PURE;
+    STDMETHOD(SetPixelShader)(THIS_ DWORD  Handle) PURE;
+    STDMETHOD(GetPixelShader)(THIS_ DWORD * pHandle) PURE;
+    STDMETHOD(DeletePixelShader)(THIS_ DWORD  Handle) PURE;
+    STDMETHOD(SetPixelShaderConstant)(THIS_ DWORD  Register,CONST void * pConstantData,DWORD  ConstantCount) PURE;
+    STDMETHOD(GetPixelShaderConstant)(THIS_ DWORD  Register,void * pConstantData,DWORD  ConstantCount) PURE;
+    STDMETHOD(GetPixelShaderFunction)(THIS_ DWORD  Handle,void * pData,DWORD * pSizeOfData) PURE;
+    STDMETHOD(DrawRectPatch)(THIS_ UINT  Handle,CONST float * pNumSegs,CONST D3DRECTPATCH_INFO * pRectPatchInfo) PURE;
+    STDMETHOD(DrawTriPatch)(THIS_ UINT  Handle,CONST float * pNumSegs,CONST D3DTRIPATCH_INFO * pTriPatchInfo) PURE;
+    STDMETHOD(DeletePatch)(THIS_ UINT  Handle) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DDevice8_QueryInterface(p,a,b)                     (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DDevice8_AddRef(p)                                 (p)->lpVtbl->AddRef(p)
+#define IDirect3DDevice8_Release(p)                                (p)->lpVtbl->Release(p)
+/*** IDirect3DDevice8 methods ***/
+#define IDirect3DDevice8_TestCooperativeLevel(p)                   (p)->lpVtbl->TestCooperativeLevel(p)
+#define IDirect3DDevice8_GetAvailableTextureMem(p)                 (p)->lpVtbl->GetAvailableTextureMem(p)
+#define IDirect3DDevice8_ResourceManagerDiscardBytes(p,a)          (p)->lpVtbl->ResourceManagerDiscardBytes(p,a)
+#define IDirect3DDevice8_GetDirect3D(p,a)                          (p)->lpVtbl->GetDirect3D(p,a)
+#define IDirect3DDevice8_GetDeviceCaps(p,a)                        (p)->lpVtbl->GetDeviceCaps(p,a)
+#define IDirect3DDevice8_GetDisplayMode(p,a)                       (p)->lpVtbl->GetDisplayMode(p,a)
+#define IDirect3DDevice8_GetCreationParameters(p,a)                (p)->lpVtbl->GetCreationParameters(p,a)
+#define IDirect3DDevice8_SetCursorProperties(p,a,b,c)              (p)->lpVtbl->SetCursorProperties(p,a,b,c)
+#define IDirect3DDevice8_SetCursorPosition(p,a,b,c)                (p)->lpVtbl->SetCursorPosition(p,a,b,c)
+#define IDirect3DDevice8_ShowCursor(p,a)                           (p)->lpVtbl->ShowCursor(p,a)
+#define IDirect3DDevice8_CreateAdditionalSwapChain(p,a,b)          (p)->lpVtbl->CreateAdditionalSwapChain(p,a,b)
+#define IDirect3DDevice8_Reset(p,a)                                (p)->lpVtbl->Reset(p,a)
+#define IDirect3DDevice8_Present(p,a,b,c,d)                        (p)->lpVtbl->Present(p,a,b,c,d)
+#define IDirect3DDevice8_GetBackBuffer(p,a,b,c)                    (p)->lpVtbl->GetBackBuffer(p,a,b,c)
+#define IDirect3DDevice8_GetRasterStatus(p,a)                      (p)->lpVtbl->GetRasterStatus(p,a)
+#define IDirect3DDevice8_SetGammaRamp(p,a,b)                       (p)->lpVtbl->SetGammaRamp(p,a,b)
+#define IDirect3DDevice8_GetGammaRamp(p,a)                         (p)->lpVtbl->GetGammaRamp(p,a)
+#define IDirect3DDevice8_CreateTexture(p,a,b,c,d,e,f,g)            (p)->lpVtbl->CreateTexture(p,a,b,c,d,e,f,g)
+#define IDirect3DDevice8_CreateVolumeTexture(p,a,b,c,d,e,f,g,h)    (p)->lpVtbl->CreateVolumeTexture(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice8_CreateCubeTexture(p,a,b,c,d,e,f)          (p)->lpVtbl->CreateCubeTexture(p,a,b,c,d,e,f)
+#define IDirect3DDevice8_CreateVertexBuffer(p,a,b,c,d,e)           (p)->lpVtbl->CreateVertexBuffer(p,a,b,c,d,e)
+#define IDirect3DDevice8_CreateIndexBuffer(p,a,b,c,d,e)            (p)->lpVtbl->CreateIndexBuffer(p,a,b,c,d,e)
+#define IDirect3DDevice8_CreateRenderTarget(p,a,b,c,d,e,f)         (p)->lpVtbl->CreateRenderTarget(p,a,b,c,d,e,f)
+#define IDirect3DDevice8_CreateDepthStencilSurface(p,a,b,c,d,e)    (p)->lpVtbl->CreateDepthStencilSurface(p,a,b,c,d,e)
+#define IDirect3DDevice8_CreateImageSurface(p,a,b,c,d)             (p)->lpVtbl->CreateImageSurface(p,a,b,c,d)
+#define IDirect3DDevice8_CopyRects(p,a,b,c,d,e)                    (p)->lpVtbl->CopyRects(p,a,b,c,d,e)
+#define IDirect3DDevice8_UpdateTexture(p,a,b)                      (p)->lpVtbl->UpdateTexture(p,a,b)
+#define IDirect3DDevice8_GetFrontBuffer(p,a)                       (p)->lpVtbl->GetFrontBuffer(p,a)
+#define IDirect3DDevice8_SetRenderTarget(p,a,b)                    (p)->lpVtbl->SetRenderTarget(p,a,b)
+#define IDirect3DDevice8_GetRenderTarget(p,a)                      (p)->lpVtbl->GetRenderTarget(p,a)
+#define IDirect3DDevice8_GetDepthStencilSurface(p,a)               (p)->lpVtbl->GetDepthStencilSurface(p,a)
+#define IDirect3DDevice8_BeginScene(p)                             (p)->lpVtbl->BeginScene(p)
+#define IDirect3DDevice8_EndScene(p)                               (p)->lpVtbl->EndScene(p)
+#define IDirect3DDevice8_Clear(p,a,b,c,d,e,f)                      (p)->lpVtbl->Clear(p,a,b,c,d,e,f)
+#define IDirect3DDevice8_SetTransform(p,a,b)                       (p)->lpVtbl->SetTransform(p,a,b)
+#define IDirect3DDevice8_GetTransform(p,a,b)                       (p)->lpVtbl->GetTransform(p,a,b)
+#define IDirect3DDevice8_MultiplyTransform(p,a,b)                  (p)->lpVtbl->MultiplyTransform(p,a,b)
+#define IDirect3DDevice8_SetViewport(p,a)                          (p)->lpVtbl->SetViewport(p,a)
+#define IDirect3DDevice8_GetViewport(p,a)                          (p)->lpVtbl->GetViewport(p,a)
+#define IDirect3DDevice8_SetMaterial(p,a)                          (p)->lpVtbl->SetMaterial(p,a)
+#define IDirect3DDevice8_GetMaterial(p,a)                          (p)->lpVtbl->GetMaterial(p,a)
+#define IDirect3DDevice8_SetLight(p,a,b)                           (p)->lpVtbl->SetLight(p,a,b)
+#define IDirect3DDevice8_GetLight(p,a,b)                           (p)->lpVtbl->GetLight(p,a,b)
+#define IDirect3DDevice8_LightEnable(p,a,b)                        (p)->lpVtbl->LightEnable(p,a,b)
+#define IDirect3DDevice8_GetLightEnable(p,a,b)                     (p)->lpVtbl->GetLightEnable(p,a,b)
+#define IDirect3DDevice8_SetClipPlane(p,a,b)                       (p)->lpVtbl->SetClipPlane(p,a,b)
+#define IDirect3DDevice8_GetClipPlane(p,a,b)                       (p)->lpVtbl->GetClipPlane(p,a,b)
+#define IDirect3DDevice8_SetRenderState(p,a,b)                     (p)->lpVtbl->SetRenderState(p,a,b)
+#define IDirect3DDevice8_GetRenderState(p,a,b)                     (p)->lpVtbl->GetRenderState(p,a,b)
+#define IDirect3DDevice8_BeginStateBlock(p)                        (p)->lpVtbl->BeginStateBlock(p)
+#define IDirect3DDevice8_EndStateBlock(p,a)                        (p)->lpVtbl->EndStateBlock(p,a)
+#define IDirect3DDevice8_ApplyStateBlock(p,a)                      (p)->lpVtbl->ApplyStateBlock(p,a)
+#define IDirect3DDevice8_CaptureStateBlock(p,a)                    (p)->lpVtbl->CaptureStateBlock(p,a)
+#define IDirect3DDevice8_DeleteStateBlock(p,a)                     (p)->lpVtbl->DeleteStateBlock(p,a)
+#define IDirect3DDevice8_CreateStateBlock(p,a,b)                   (p)->lpVtbl->CreateStateBlock(p,a,b)
+#define IDirect3DDevice8_SetClipStatus(p,a)                        (p)->lpVtbl->SetClipStatus(p,a)
+#define IDirect3DDevice8_GetClipStatus(p,a)                        (p)->lpVtbl->GetClipStatus(p,a)
+#define IDirect3DDevice8_GetTexture(p,a,b)                         (p)->lpVtbl->GetTexture(p,a,b)
+#define IDirect3DDevice8_SetTexture(p,a,b)                         (p)->lpVtbl->SetTexture(p,a,b)
+#define IDirect3DDevice8_GetTextureStageState(p,a,b,c)             (p)->lpVtbl->GetTextureStageState(p,a,b,c)
+#define IDirect3DDevice8_SetTextureStageState(p,a,b,c)             (p)->lpVtbl->SetTextureStageState(p,a,b,c)
+#define IDirect3DDevice8_ValidateDevice(p,a)                       (p)->lpVtbl->ValidateDevice(p,a)
+#define IDirect3DDevice8_GetInfo(p,a,b,c)                          (p)->lpVtbl->GetInfo(p,a,b,c)
+#define IDirect3DDevice8_SetPaletteEntries(p,a,b)                  (p)->lpVtbl->SetPaletteEntries(p,a,b)
+#define IDirect3DDevice8_GetPaletteEntries(p,a,b)                  (p)->lpVtbl->GetPaletteEntries(p,a,b)
+#define IDirect3DDevice8_SetCurrentTexturePalette(p,a)             (p)->lpVtbl->SetCurrentTexturePalette(p,a)
+#define IDirect3DDevice8_GetCurrentTexturePalette(p,a)             (p)->lpVtbl->GetCurrentTexturePalette(p,a)
+#define IDirect3DDevice8_DrawPrimitive(p,a,b,c)                    (p)->lpVtbl->DrawPrimitive(p,a,b,c)
+#define IDirect3DDevice8_DrawIndexedPrimitive(p,a,b,c,d,e)         (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e)
+#define IDirect3DDevice8_DrawPrimitiveUP(p,a,b,c,d)                (p)->lpVtbl->DrawPrimitiveUP(p,a,b,c,d)
+#define IDirect3DDevice8_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice8_ProcessVertices(p,a,b,c,d,e)              (p)->lpVtbl->processVertices(p,a,b,c,d,e)
+#define IDirect3DDevice8_CreateVertexShader(p,a,b,c,d)             (p)->lpVtbl->CreateVertexShader(p,a,b,c,d)
+#define IDirect3DDevice8_SetVertexShader(p,a)                      (p)->lpVtbl->SetVertexShader(p,a)
+#define IDirect3DDevice8_GetVertexShader(p,a)                      (p)->lpVtbl->GetVertexShader(p,a)
+#define IDirect3DDevice8_DeleteVertexShader(p,a)                   (p)->lpVtbl->DeleteVertexShader(p,a)
+#define IDirect3DDevice8_SetVertexShaderConstant(p,a,b,c)          (p)->lpVtbl->SetVertexShaderConstant(p,a,b,c)
+#define IDirect3DDevice8_GetVertexShaderConstant(p,a,b,c)          (p)->lpVtbl->GetVertexShaderConstant(p,a,b,c)
+#define IDirect3DDevice8_GetVertexShaderDeclaration(p,a,b,c)       (p)->lpVtbl->GetVertexShaderDeclaration(p,a,b,c)
+#define IDirect3DDevice8_GetVertexShaderFunction(p,a,b,c)          (p)->lpVtbl->GetVertexShaderFunction(p,a,b,c)
+#define IDirect3DDevice8_SetStreamSource(p,a,b,c)                  (p)->lpVtbl->SetStreamSource(p,a,b,c)
+#define IDirect3DDevice8_GetStreamSource(p,a,b,c)                  (p)->lpVtbl->GetStreamSource(p,a,b,c)
+#define IDirect3DDevice8_SetIndices(p,a,b)                         (p)->lpVtbl->SetIndices(p,a,b)
+#define IDirect3DDevice8_GetIndices(p,a,b)                         (p)->lpVtbl->GetIndices(p,a,b)
+#define IDirect3DDevice8_CreatePixelShader(p,a,b)                  (p)->lpVtbl->CreatePixelShader(p,a,b)
+#define IDirect3DDevice8_SetPixelShader(p,a)                       (p)->lpVtbl->SetPixelShader(p,a)
+#define IDirect3DDevice8_GetPixelShader(p,a)                       (p)->lpVtbl->GetPixelShader(p,a)
+#define IDirect3DDevice8_DeletePixelShader(p,a)                    (p)->lpVtbl->DeletePixelShader(p,a)
+#define IDirect3DDevice8_SetPixelShaderConstant(p,a,b,c)           (p)->lpVtbl->SetPixelShaderConstant(p,a,b,c)
+#define IDirect3DDevice8_GetPixelShaderConstant(p,a,b,c)           (p)->lpVtbl->GetPixelShaderConstant(p,a,b,c)
+#define IDirect3DDevice8_GetPixelShaderFunction(p,a,b,c)           (p)->lpVtbl->GetPixelShaderFunction(p,a,b,c)
+#define IDirect3DDevice8_DrawRectPatch(p,a,b,c)                    (p)->lpVtbl->DrawRectPatch(p,a,b,c)
+#define IDirect3DDevice8_DrawTriPatch(p,a,b,c)                     (p)->lpVtbl->DrawTriPatch(p,a,b,c)
+#define IDirect3DDevice8_DeletePatch(p,a)                          (p)->lpVtbl->DeletePatch(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DDevice8_QueryInterface(p,a,b)                     (p)->QueryInterface(a,b)
+#define IDirect3DDevice8_AddRef(p)                                 (p)->AddRef()
+#define IDirect3DDevice8_Release(p)                                (p)->Release()
+/*** IDirect3DDevice8 methods ***/
+#define IDirect3DDevice8_TestCooperativeLevel(p)                   (p)->TestCooperativeLevel()
+#define IDirect3DDevice8_GetAvailableTextureMem(p)                 (p)->GetAvailableTextureMem()
+#define IDirect3DDevice8_ResourceManagerDiscardBytes(p,a)          (p)->ResourceManagerDiscardBytes(a)
+#define IDirect3DDevice8_GetDirect3D(p,a)                          (p)->GetDirect3D(a)
+#define IDirect3DDevice8_GetDeviceCaps(p,a)                        (p)->GetDeviceCaps(a)
+#define IDirect3DDevice8_GetDisplayMode(p,a)                       (p)->GetDisplayMode(a)
+#define IDirect3DDevice8_GetCreationParameters(p,a)                (p)->GetCreationParameters(a)
+#define IDirect3DDevice8_SetCursorProperties(p,a,b,c)              (p)->SetCursorProperties(a,b,c)
+#define IDirect3DDevice8_SetCursorPosition(p,a,b,c)                (p)->SetCursorPosition(a,b,c)
+#define IDirect3DDevice8_ShowCursor(p,a)                           (p)->ShowCursor(a)
+#define IDirect3DDevice8_CreateAdditionalSwapChain(p,a,b)          (p)->CreateAdditionalSwapChain(a,b)
+#define IDirect3DDevice8_Reset(p,a)                                (p)->Reset(a)
+#define IDirect3DDevice8_Present(p,a,b,c,d)                        (p)->Present(a,b,c,d)
+#define IDirect3DDevice8_GetBackBuffer(p,a,b,c)                    (p)->GetBackBuffer(a,b,c)
+#define IDirect3DDevice8_GetRasterStatus(p,a)                      (p)->GetRasterStatus(a)
+#define IDirect3DDevice8_SetGammaRamp(p,a,b)                       (p)->SetGammaRamp(a,b)
+#define IDirect3DDevice8_GetGammaRamp(p,a)                         (p)->GetGammaRamp(a)
+#define IDirect3DDevice8_CreateTexture(p,a,b,c,d,e,f,g)            (p)->CreateTexture(a,b,c,d,e,f,g)
+#define IDirect3DDevice8_CreateVolumeTexture(p,a,b,c,d,e,f,g,h)    (p)->CreateVolumeTexture(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice8_CreateCubeTexture(p,a,b,c,d,e,f)          (p)->CreateCubeTexture(a,b,c,d,e,f)
+#define IDirect3DDevice8_CreateVertexBuffer(p,a,b,c,d,e)           (p)->CreateVertexBuffer(a,b,c,d,e)
+#define IDirect3DDevice8_CreateIndexBuffer(p,a,b,c,d,e)            (p)->CreateIndexBuffer(a,b,c,d,e)
+#define IDirect3DDevice8_CreateRenderTarget(p,a,b,c,d,e,f)         (p)->CreateRenderTarget(a,b,c,d,e,f)
+#define IDirect3DDevice8_CreateDepthStencilSurface(p,a,b,c,d,e)    (p)->CreateDepthStencilSurface(a,b,c,d,e)
+#define IDirect3DDevice8_CreateImageSurface(p,a,b,c,d)             (p)->CreateImageSurface(a,b,c,d)
+#define IDirect3DDevice8_CopyRects(p,a,b,c,d,e)                    (p)->CopyRects(a,b,c,d,e)
+#define IDirect3DDevice8_UpdateTexture(p,a,b)                      (p)->UpdateTexture(a,b)
+#define IDirect3DDevice8_GetFrontBuffer(p,a)                       (p)->GetFrontBuffer(a)
+#define IDirect3DDevice8_SetRenderTarget(p,a,b)                    (p)->SetRenderTarget(a,b)
+#define IDirect3DDevice8_GetRenderTarget(p,a)                      (p)->GetRenderTarget(a)
+#define IDirect3DDevice8_GetDepthStencilSurface(p,a)               (p)->GetDepthStencilSurface(a)
+#define IDirect3DDevice8_BeginScene(p)                             (p)->BeginScene()
+#define IDirect3DDevice8_EndScene(p)                               (p)->EndScene()
+#define IDirect3DDevice8_Clear(p,a,b,c,d,e,f)                      (p)->Clear(a,b,c,d,e,f)
+#define IDirect3DDevice8_SetTransform(p,a,b)                       (p)->SetTransform(a,b)
+#define IDirect3DDevice8_GetTransform(p,a,b)                       (p)->GetTransform(a,b)
+#define IDirect3DDevice8_MultiplyTransform(p,a,b)                  (p)->MultiplyTransform(a,b)
+#define IDirect3DDevice8_SetViewport(p,a)                          (p)->SetViewport(a)
+#define IDirect3DDevice8_GetViewport(p,a)                          (p)->GetViewport(a)
+#define IDirect3DDevice8_SetMaterial(p,a)                          (p)->SetMaterial(a)
+#define IDirect3DDevice8_GetMaterial(p,a)                          (p)->GetMaterial(a)
+#define IDirect3DDevice8_SetLight(p,a,b)                           (p)->SetLight(a,b)
+#define IDirect3DDevice8_GetLight(p,a,b)                           (p)->GetLight(a,b)
+#define IDirect3DDevice8_LightEnable(p,a,b)                        (p)->LightEnable(a,b)
+#define IDirect3DDevice8_GetLightEnable(p,a,b)                     (p)->GetLightEnable(a,b)
+#define IDirect3DDevice8_SetClipPlane(p,a,b)                       (p)->SetClipPlane(a,b)
+#define IDirect3DDevice8_GetClipPlane(p,a,b)                       (p)->GetClipPlane(a,b)
+#define IDirect3DDevice8_SetRenderState(p,a,b)                     (p)->SetRenderState(a,b)
+#define IDirect3DDevice8_GetRenderState(p,a,b)                     (p)->GetRenderState(a,b)
+#define IDirect3DDevice8_BeginStateBlock(p)                        (p)->BeginStateBlock()
+#define IDirect3DDevice8_EndStateBlock(p,a)                        (p)->EndStateBlock(a)
+#define IDirect3DDevice8_ApplyStateBlock(p,a)                      (p)->ApplyStateBlock(a)
+#define IDirect3DDevice8_CaptureStateBlock(p,a)                    (p)->CaptureStateBlock(a)
+#define IDirect3DDevice8_DeleteStateBlock(p,a)                     (p)->DeleteStateBlock(a)
+#define IDirect3DDevice8_CreateStateBlock(p,a,b)                   (p)->CreateStateBlock(a,b)
+#define IDirect3DDevice8_SetClipStatus(p,a)                        (p)->SetClipStatus(a)
+#define IDirect3DDevice8_GetClipStatus(p,a)                        (p)->GetClipStatus(a)
+#define IDirect3DDevice8_GetTexture(p,a,b)                         (p)->GetTexture(a,b)
+#define IDirect3DDevice8_SetTexture(p,a,b)                         (p)->SetTexture(a,b)
+#define IDirect3DDevice8_GetTextureStageState(p,a,b,c)             (p)->GetTextureStageState(a,b,c)
+#define IDirect3DDevice8_SetTextureStageState(p,a,b,c)             (p)->SetTextureStageState(a,b,c)
+#define IDirect3DDevice8_ValidateDevice(p,a)                       (p)->ValidateDevice(a)
+#define IDirect3DDevice8_GetInfo(p,a,b,c)                          (p)->GetInfo(a,b,c)
+#define IDirect3DDevice8_SetPaletteEntries(p,a,b)                  (p)->SetPaletteEntries(a,b)
+#define IDirect3DDevice8_GetPaletteEntries(p,a,b)                  (p)->GetPaletteEntries(a,b)
+#define IDirect3DDevice8_SetCurrentTexturePalette(p,a)             (p)->SetCurrentTexturePalette(a)
+#define IDirect3DDevice8_GetCurrentTexturePalette(p,a)             (p)->GetCurrentTexturePalette(a)
+#define IDirect3DDevice8_DrawPrimitive(p,a,b,c)                    (p)->DrawPrimitive(a,b,c)
+#define IDirect3DDevice8_DrawIndexedPrimitive(p,a,b,c,d,e)         (p)->DrawIndexedPrimitive(a,b,c,d,e)
+#define IDirect3DDevice8_DrawPrimitiveUP(p,a,b,c,d)                (p)->DrawPrimitiveUP(a,b,c,d)
+#define IDirect3DDevice8_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h) (p)->DrawIndexedPrimitiveUP(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice8_ProcessVertices(p,a,b,c,d,e)              (p)->processVertices(a,b,c,d,e)
+#define IDirect3DDevice8_CreateVertexShader(p,a,b,c,d)             (p)->CreateVertexShader(a,b,c,d)
+#define IDirect3DDevice8_SetVertexShader(p,a)                      (p)->SetVertexShader(a)
+#define IDirect3DDevice8_GetVertexShader(p,a)                      (p)->GetVertexShader(a)
+#define IDirect3DDevice8_DeleteVertexShader(p,a)                   (p)->DeleteVertexShader(a)
+#define IDirect3DDevice8_SetVertexShaderConstant(p,a,b,c)          (p)->SetVertexShaderConstant(a,b,c)
+#define IDirect3DDevice8_GetVertexShaderConstant(p,a,b,c)          (p)->GetVertexShaderConstant(a,b,c)
+#define IDirect3DDevice8_GetVertexShaderDeclaration(p,a,b,c)       (p)->GetVertexShaderDeclaration(a,b,c)
+#define IDirect3DDevice8_GetVertexShaderFunction(p,a,b,c)          (p)->GetVertexShaderFunction(a,b,c)
+#define IDirect3DDevice8_SetStreamSource(p,a,b,c)                  (p)->SetStreamSource(a,b,c)
+#define IDirect3DDevice8_GetStreamSource(p,a,b,c)                  (p)->GetStreamSource(a,b,c)
+#define IDirect3DDevice8_SetIndices(p,a,b)                         (p)->SetIndices(a,b)
+#define IDirect3DDevice8_GetIndices(p,a,b)                         (p)->GetIndices(a,b)
+#define IDirect3DDevice8_CreatePixelShader(p,a,b)                  (p)->CreatePixelShader(a,b)
+#define IDirect3DDevice8_SetPixelShader(p,a)                       (p)->SetPixelShader(a)
+#define IDirect3DDevice8_GetPixelShader(p,a)                       (p)->GetPixelShader(a)
+#define IDirect3DDevice8_DeletePixelShader(p,a)                    (p)->DeletePixelShader(a)
+#define IDirect3DDevice8_SetPixelShaderConstant(p,a,b,c)           (p)->SetPixelShaderConstant(a,b,c)
+#define IDirect3DDevice8_GetPixelShaderConstant(p,a,b,c)           (p)->GetPixelShaderConstant(a,b,c)
+#define IDirect3DDevice8_GetPixelShaderFunction(p,a,b,c)           (p)->GetPixelShaderFunction(a,b,c)
+#define IDirect3DDevice8_DrawRectPatch(p,a,b,c)                    (p)->DrawRectPatch(a,b,c)
+#define IDirect3DDevice8_DrawTriPatch(p,a,b,c)                     (p)->DrawTriPatch(a,b,c)
+#define IDirect3DDevice8_DeletePatch(p,a)                          (p)->DeletePatch(a)
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif  /* defined(__cplusplus) */
+
+/* Define the main entrypoint as well */
+IDirect3D8* WINAPI Direct3DCreate8(UINT SDKVersion);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif /* __WINE_D3D8_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3d8caps.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3d8caps.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3d8caps.h	(revision 16410)
@@ -0,0 +1,286 @@
+/*
+ * Copyright (C) 2002 Jason Edmeades
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_D3D8CAPS_H
+#define __WINE_D3D8CAPS_H
+
+/*
+ * Definitions
+ */
+
+#define D3DCAPS_READ_SCANLINE 0x20000
+
+#define D3DCURSORCAPS_COLOR   1
+#define D3DCURSORCAPS_LOWRES  2
+
+#define D3DDEVCAPS_EXECUTESYSTEMMEMORY     0x0000010
+#define D3DDEVCAPS_EXECUTEVIDEOMEMORY      0x0000020
+#define D3DDEVCAPS_TLVERTEXSYSTEMMEMORY    0x0000040
+#define D3DDEVCAPS_TLVERTEXVIDEOMEMORY     0x0000080
+#define D3DDEVCAPS_TEXTURESYSTEMMEMORY     0x0000100
+#define D3DDEVCAPS_TEXTUREVIDEOMEMORY      0x0000200
+#define D3DDEVCAPS_DRAWPRIMTLVERTEX        0x0000400
+#define D3DDEVCAPS_CANRENDERAFTERFLIP      0x0000800
+#define D3DDEVCAPS_TEXTURENONLOCALVIDMEM   0x0001000
+#define D3DDEVCAPS_DRAWPRIMITIVES2         0x0002000
+#define D3DDEVCAPS_SEPARATETEXTUREMEMORIES 0x0004000
+#define D3DDEVCAPS_DRAWPRIMITIVES2EX       0x0008000
+#define D3DDEVCAPS_HWTRANSFORMANDLIGHT     0x0010000
+#define D3DDEVCAPS_CANBLTSYSTONONLOCAL     0x0020000
+#define D3DDEVCAPS_HWRASTERIZATION         0x0080000
+#define D3DDEVCAPS_PUREDEVICE              0x0100000
+#define D3DDEVCAPS_QUINTICRTPATCHES        0x0200000
+#define D3DDEVCAPS_RTPATCHES               0x0400000
+#define D3DDEVCAPS_RTPATCHHANDLEZERO       0x0800000
+#define D3DDEVCAPS_NPATCHES                0x1000000
+
+#define D3DFVFCAPS_TEXCOORDCOUNTMASK  0x00FFFF
+#define D3DFVFCAPS_DONOTSTRIPELEMENTS 0x080000
+#define D3DFVFCAPS_PSIZE              0x100000
+
+#define D3DLINECAPS_TEXTURE           0x01
+#define D3DLINECAPS_ZTEST             0x02
+#define D3DLINECAPS_BLEND             0x04
+#define D3DLINECAPS_ALPHACMP          0x08
+#define D3DLINECAPS_FOG               0x10
+
+#define D3DPBLENDCAPS_ZERO            0x0001
+#define D3DPBLENDCAPS_ONE             0x0002
+#define D3DPBLENDCAPS_SRCCOLOR        0x0004
+#define D3DPBLENDCAPS_INVSRCCOLOR     0x0008
+#define D3DPBLENDCAPS_SRCALPHA        0x0010
+#define D3DPBLENDCAPS_INVSRCALPHA     0x0020
+#define D3DPBLENDCAPS_DESTALPHA       0x0040
+#define D3DPBLENDCAPS_INVDESTALPHA    0x0080
+#define D3DPBLENDCAPS_DESTCOLOR       0x0100
+#define D3DPBLENDCAPS_INVDESTCOLOR    0x0200
+#define D3DPBLENDCAPS_SRCALPHASAT     0x0400
+#define D3DPBLENDCAPS_BOTHSRCALPHA    0x0800
+#define D3DPBLENDCAPS_BOTHINVSRCALPHA 0x1000
+
+#define D3DPCMPCAPS_NEVER        0x01
+#define D3DPCMPCAPS_LESS         0x02
+#define D3DPCMPCAPS_EQUAL        0x04
+#define D3DPCMPCAPS_LESSEQUAL    0x08
+#define D3DPCMPCAPS_GREATER      0x10
+#define D3DPCMPCAPS_NOTEQUAL     0x20
+#define D3DPCMPCAPS_GREATEREQUAL 0x40
+#define D3DPCMPCAPS_ALWAYS       0x80
+
+#define D3DPMISCCAPS_MASKZ                 0x0002
+#define D3DPMISCCAPS_LINEPATTERNREP        0x0004
+#define D3DPMISCCAPS_CULLNONE              0x0010
+#define D3DPMISCCAPS_CULLCW                0x0020
+#define D3DPMISCCAPS_CULLCCW               0x0040
+#define D3DPMISCCAPS_COLORWRITEENABLE      0x0080
+#define D3DPMISCCAPS_CLIPPLANESCALEDPOINTS 0x0100
+#define D3DPMISCCAPS_CLIPTLVERTS           0x0200
+#define D3DPMISCCAPS_TSSARGTEMP            0x0400
+#define D3DPMISCCAPS_BLENDOP               0x0800
+
+#define D3DPRASTERCAPS_DITHER                     0x00000001
+#define D3DPRASTERCAPS_PAT                        0x00000008
+#define D3DPRASTERCAPS_ZTEST                      0x00000010
+#define D3DPRASTERCAPS_FOGVERTEX                  0x00000080
+#define D3DPRASTERCAPS_FOGTABLE                   0x00000100
+#define D3DPRASTERCAPS_ANTIALIASEDGES             0x00001000
+#define D3DPRASTERCAPS_MIPMAPLODBIAS              0x00002000
+#define D3DPRASTERCAPS_ZBIAS                      0x00004000
+#define D3DPRASTERCAPS_ZBUFFERLESSHSR             0x00008000
+#define D3DPRASTERCAPS_FOGRANGE                   0x00010000
+#define D3DPRASTERCAPS_ANISOTROPY                 0x00020000
+#define D3DPRASTERCAPS_WBUFFER                    0x00040000
+#define D3DPRASTERCAPS_WFOG                       0x00100000
+#define D3DPRASTERCAPS_ZFOG                       0x00200000
+#define D3DPRASTERCAPS_COLORPERSPECTIVE           0x00400000
+#define D3DPRASTERCAPS_STRETCHBLTMULTISAMPLE      0x00800000
+
+#define D3DPRESENT_INTERVAL_DEFAULT               0x00000000
+#define D3DPRESENT_INTERVAL_ONE                   0x00000001
+#define D3DPRESENT_INTERVAL_TWO                   0x00000002
+#define D3DPRESENT_INTERVAL_THREE                 0x00000004
+#define D3DPRESENT_INTERVAL_FOUR                  0x00000008
+#define D3DPRESENT_INTERVAL_IMMEDIATE             0x80000000
+
+#define D3DPSHADECAPS_COLORGOURAUDRGB             0x00008
+#define D3DPSHADECAPS_SPECULARGOURAUDRGB          0x00200
+#define D3DPSHADECAPS_ALPHAGOURAUDBLEND           0x04000
+#define D3DPSHADECAPS_FOGGOURAUD                  0x80000
+
+#define D3DPTADDRESSCAPS_WRAP                     0x01
+#define D3DPTADDRESSCAPS_MIRROR                   0x02
+#define D3DPTADDRESSCAPS_CLAMP                    0x04
+#define D3DPTADDRESSCAPS_BORDER                   0x08
+#define D3DPTADDRESSCAPS_INDEPENDENTUV            0x10
+#define D3DPTADDRESSCAPS_MIRRORONCE               0x20
+
+#define D3DPTEXTURECAPS_PERSPECTIVE              0x00001
+#define D3DPTEXTURECAPS_POW2                     0x00002
+#define D3DPTEXTURECAPS_ALPHA                    0x00004
+#define D3DPTEXTURECAPS_SQUAREONLY               0x00020
+#define D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE 0x00040
+#define D3DPTEXTURECAPS_ALPHAPALETTE             0x00080
+#define D3DPTEXTURECAPS_NONPOW2CONDITIONAL       0x00100
+#define D3DPTEXTURECAPS_PROJECTED                0x00400
+#define D3DPTEXTURECAPS_CUBEMAP                  0x00800
+#define D3DPTEXTURECAPS_VOLUMEMAP                0x02000
+#define D3DPTEXTURECAPS_MIPMAP                   0x04000
+#define D3DPTEXTURECAPS_MIPVOLUMEMAP             0x08000
+#define D3DPTEXTURECAPS_MIPCUBEMAP               0x10000
+#define D3DPTEXTURECAPS_CUBEMAP_POW2             0x20000
+#define D3DPTEXTURECAPS_VOLUMEMAP_POW2           0x40000
+
+#define D3DPTFILTERCAPS_MINFPOINT                0x00000100
+#define D3DPTFILTERCAPS_MINFLINEAR               0x00000200
+#define D3DPTFILTERCAPS_MINFANISOTROPIC          0x00000400
+#define D3DPTFILTERCAPS_MIPFPOINT                0x00010000
+#define D3DPTFILTERCAPS_MIPFLINEAR               0x00020000
+#define D3DPTFILTERCAPS_MAGFPOINT                0x01000000
+#define D3DPTFILTERCAPS_MAGFLINEAR               0x02000000
+#define D3DPTFILTERCAPS_MAGFANISOTROPIC          0x04000000
+#define D3DPTFILTERCAPS_MAGFAFLATCUBIC           0x08000000
+#define D3DPTFILTERCAPS_MAGFGAUSSIANCUBIC        0x10000000
+
+#define D3DSTENCILCAPS_KEEP                      0x01
+#define D3DSTENCILCAPS_ZERO                      0x02
+#define D3DSTENCILCAPS_REPLACE                   0x04
+#define D3DSTENCILCAPS_INCRSAT                   0x08
+#define D3DSTENCILCAPS_DECRSAT                   0x10
+#define D3DSTENCILCAPS_INVERT                    0x20
+#define D3DSTENCILCAPS_INCR                      0x40
+#define D3DSTENCILCAPS_DECR                      0x80
+
+#define D3DTEXOPCAPS_DISABLE                     0x0000001
+#define D3DTEXOPCAPS_SELECTARG1                  0x0000002
+#define D3DTEXOPCAPS_SELECTARG2                  0x0000004
+#define D3DTEXOPCAPS_MODULATE                    0x0000008
+#define D3DTEXOPCAPS_MODULATE2X                  0x0000010
+#define D3DTEXOPCAPS_MODULATE4X                  0x0000020
+#define D3DTEXOPCAPS_ADD                         0x0000040
+#define D3DTEXOPCAPS_ADDSIGNED                   0x0000080
+#define D3DTEXOPCAPS_ADDSIGNED2X                 0x0000100
+#define D3DTEXOPCAPS_SUBTRACT                    0x0000200
+#define D3DTEXOPCAPS_ADDSMOOTH                   0x0000400
+#define D3DTEXOPCAPS_BLENDDIFFUSEALPHA           0x0000800
+#define D3DTEXOPCAPS_BLENDTEXTUREALPHA           0x0001000
+#define D3DTEXOPCAPS_BLENDFACTORALPHA            0x0002000
+#define D3DTEXOPCAPS_BLENDTEXTUREALPHAPM         0x0004000
+#define D3DTEXOPCAPS_BLENDCURRENTALPHA           0x0008000
+#define D3DTEXOPCAPS_PREMODULATE                 0x0010000
+#define D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR      0x0020000
+#define D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA      0x0040000
+#define D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR   0x0080000
+#define D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA   0x0100000
+#define D3DTEXOPCAPS_BUMPENVMAP                  0x0200000
+#define D3DTEXOPCAPS_BUMPENVMAPLUMINANCE         0x0400000
+#define D3DTEXOPCAPS_DOTPRODUCT3                 0x0800000
+#define D3DTEXOPCAPS_MULTIPLYADD                 0x1000000
+#define D3DTEXOPCAPS_LERP                        0x2000000
+
+#define D3DVTXPCAPS_TEXGEN                       0x01
+#define D3DVTXPCAPS_MATERIALSOURCE7              0x02
+#define D3DVTXPCAPS_DIRECTIONALLIGHTS            0x08
+#define D3DVTXPCAPS_POSITIONALLIGHTS             0x10
+#define D3DVTXPCAPS_LOCALVIEWER                  0x20
+#define D3DVTXPCAPS_TWEENING                     0x40
+
+#define D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD  0x00000020
+#define D3DCAPS3_RESERVED                          0x8000001f
+
+#define D3DCAPS2_CANCALIBRATEGAMMA                 0x0100000
+#define D3DCAPS2_CANRENDERWINDOWED                 0x0080000
+#define D3DCAPS2_CANMANAGERESOURCE                 0x10000000
+#define D3DCAPS2_DYNAMICTEXTURES                   0x20000000
+#define D3DCAPS2_FULLSCREENGAMMA                   0x0020000
+#define D3DCAPS2_NO2DDURING3DSCENE                 0x0000002
+#define D3DCAPS2_RESERVED                          0x2000000
+
+/*
+ * The d3dcaps8 structure
+ */
+typedef struct _D3DCAPS8 {
+    D3DDEVTYPE          DeviceType;
+    UINT                AdapterOrdinal;
+
+    DWORD               Caps;
+    DWORD               Caps2;
+    DWORD               Caps3;
+    DWORD               PresentationIntervals;
+
+    DWORD               CursorCaps;
+
+    DWORD               DevCaps;
+
+    DWORD               PrimitiveMiscCaps;
+    DWORD               RasterCaps;
+    DWORD               ZCmpCaps;
+    DWORD               SrcBlendCaps;
+    DWORD               DestBlendCaps;
+    DWORD               AlphaCmpCaps;
+    DWORD               ShadeCaps;
+    DWORD               TextureCaps;
+    DWORD               TextureFilterCaps;
+    DWORD               CubeTextureFilterCaps;
+    DWORD               VolumeTextureFilterCaps;
+    DWORD               TextureAddressCaps;
+    DWORD               VolumeTextureAddressCaps;
+
+    DWORD               LineCaps;
+
+    DWORD               MaxTextureWidth, MaxTextureHeight;
+    DWORD               MaxVolumeExtent;
+
+    DWORD               MaxTextureRepeat;
+    DWORD               MaxTextureAspectRatio;
+    DWORD               MaxAnisotropy;
+    float               MaxVertexW;
+
+    float               GuardBandLeft;
+    float               GuardBandTop;
+    float               GuardBandRight;
+    float               GuardBandBottom;
+
+    float               ExtentsAdjust;
+    DWORD               StencilCaps;
+
+    DWORD               FVFCaps;
+    DWORD               TextureOpCaps;
+    DWORD               MaxTextureBlendStages;
+    DWORD               MaxSimultaneousTextures;
+
+    DWORD               VertexProcessingCaps;
+    DWORD               MaxActiveLights;
+    DWORD               MaxUserClipPlanes;
+    DWORD               MaxVertexBlendMatrices;
+    DWORD               MaxVertexBlendMatrixIndex;
+
+    float               MaxPointSize;
+
+    DWORD               MaxPrimitiveCount;
+    DWORD               MaxVertexIndex;
+    DWORD               MaxStreams;
+    DWORD               MaxStreamStride;
+
+    DWORD               VertexShaderVersion;
+    DWORD               MaxVertexShaderConst;
+
+    DWORD               PixelShaderVersion;
+    float               MaxPixelShaderValue;
+} D3DCAPS8;
+
+#endif  /* __WINE_D3D8CAPS_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3d8types.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3d8types.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3d8types.h	(revision 16410)
@@ -0,0 +1,1210 @@
+/*
+ * Copyright (C) 2002 Jason Edmeades
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_D3D8TYPES_H
+#define __WINE_D3D8TYPES_H
+
+
+/*****************************************************************************
+ * Direct 3D v8 #defines
+ */
+
+#define D3DCLEAR_TARGET   1
+#define D3DCLEAR_ZBUFFER  2
+#define D3DCLEAR_STENCIL  4
+
+#define D3DCLIPPLANE0 (1 << 0)
+#define D3DCLIPPLANE1 (1 << 1)
+#define D3DCLIPPLANE2 (1 << 2)
+#define D3DCLIPPLANE3 (1 << 3)
+#define D3DCLIPPLANE4 (1 << 4)
+#define D3DCLIPPLANE5 (1 << 5)
+
+#define D3DCOLOR_ARGB(a,r,g,b)        ((D3DCOLOR)((((a)&0xff)<<24)|(((r)&0xff)<<16)|(((g)&0xff)<<8)|((b)&0xff)))
+#define D3DCOLOR_COLORVALUE(r,g,b,a)  D3DCOLOR_RGBA((DWORD)((r)*255.f),(DWORD)((g)*255.f),(DWORD)((b)*255.f),(DWORD)((a)*255.f))
+#define D3DCOLOR_RGBA(r,g,b,a)        D3DCOLOR_ARGB(a,r,g,b)
+#define D3DCOLOR_XRGB(r,g,b)          D3DCOLOR_ARGB(0xff,r,g,b)
+
+#define D3DCS_LEFT                 0x001
+#define D3DCS_RIGHT                0x002
+#define D3DCS_TOP                  0x004
+#define D3DCS_BOTTOM               0x008
+#define D3DCS_FRONT                0x010
+#define D3DCS_BACK                 0x020
+#define D3DCS_PLANE0               0x040
+#define D3DCS_PLANE1               0x080
+#define D3DCS_PLANE2               0x100
+#define D3DCS_PLANE3               0x200
+#define D3DCS_PLANE4               0x400
+#define D3DCS_PLANE5               0x800
+#define D3DCS_ALL                  0xFFF
+
+#define D3DFVF_TEXTUREFORMAT1 3
+#define D3DFVF_TEXTUREFORMAT2 0
+#define D3DFVF_TEXTUREFORMAT3 1
+#define D3DFVF_TEXTUREFORMAT4 2
+#define D3DFVF_TEXCOORDSIZE1(CoordIndex) (D3DFVF_TEXTUREFORMAT1 << (CoordIndex*2 + 16))
+#define D3DFVF_TEXCOORDSIZE2(CoordIndex) (D3DFVF_TEXTUREFORMAT2)
+#define D3DFVF_TEXCOORDSIZE3(CoordIndex) (D3DFVF_TEXTUREFORMAT3 << (CoordIndex*2 + 16))
+#define D3DFVF_TEXCOORDSIZE4(CoordIndex) (D3DFVF_TEXTUREFORMAT4 << (CoordIndex*2 + 16))
+
+#define D3DLOCK_READONLY           0x0010
+#define D3DLOCK_NOSYSLOCK          0x0800
+#define D3DLOCK_NOOVERWRITE        0x1000
+#define D3DLOCK_DISCARD            0x2000
+#define D3DLOCK_NO_DIRTY_UPDATE    0x8000
+
+#define D3DMAXUSERCLIPPLANES       32
+
+#define D3DRENDERSTATE_WRAPBIAS    0x80
+
+#define D3DTSS_TCI_PASSTHRU                       0x00000
+#define D3DTSS_TCI_CAMERASPACENORMAL              0x10000
+#define D3DTSS_TCI_CAMERASPACEPOSITION            0x20000
+#define D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR    0x30000
+
+
+#define D3DTS_WORLD  D3DTS_WORLDMATRIX(0)
+#define D3DTS_WORLD1 D3DTS_WORLDMATRIX(1)
+#define D3DTS_WORLD2 D3DTS_WORLDMATRIX(2)
+#define D3DTS_WORLD3 D3DTS_WORLDMATRIX(3)
+#define D3DTS_WORLDMATRIX(index) (D3DTRANSFORMSTATETYPE)(index + 256)
+
+#define D3DUSAGE_RENDERTARGET       0x01
+#define D3DUSAGE_DEPTHSTENCIL       0x02
+#define D3DUSAGE_WRITEONLY          0x08
+#define D3DUSAGE_SOFTWAREPROCESSING 0x10
+#define D3DUSAGE_DONOTCLIP          0x20
+#define D3DUSAGE_POINTS             0x40
+#define D3DUSAGE_RTPATCHES          0x80
+#define D3DUSAGE_NPATCHES           0x100
+#define D3DUSAGE_DYNAMIC            0x200
+
+#define D3DWRAP_U        1
+#define D3DWRAP_V        2
+#define D3DWRAP_W        4
+#define D3DWRAPCOORD_0   1
+#define D3DWRAPCOORD_1   2
+#define D3DWRAPCOORD_2   4
+#define D3DWRAPCOORD_3   8
+
+#define MAX_DEVICE_IDENTIFIER_STRING        512
+
+#define D3DFVF_RESERVED0           0x0001
+#define D3DFVF_POSITION_MASK       0x000E
+#define D3DFVF_XYZ                 0x0002
+#define D3DFVF_XYZRHW              0x0004
+#define D3DFVF_XYZB1               0x0006
+#define D3DFVF_XYZB2               0x0008
+#define D3DFVF_XYZB3               0x000a
+#define D3DFVF_XYZB4               0x000c
+#define D3DFVF_XYZB5               0x000e
+#define D3DFVF_NORMAL              0x0010
+#define D3DFVF_PSIZE               0x0020
+#define D3DFVF_DIFFUSE             0x0040
+#define D3DFVF_SPECULAR            0x0080
+#define D3DFVF_TEXCOUNT_MASK       0x0f00
+#define D3DFVF_TEXCOUNT_SHIFT           8
+#define D3DFVF_TEX0                0x0000
+#define D3DFVF_TEX1                0x0100
+#define D3DFVF_TEX2                0x0200
+#define D3DFVF_TEX3                0x0300
+#define D3DFVF_TEX4                0x0400
+#define D3DFVF_TEX5                0x0500
+#define D3DFVF_TEX6                0x0600
+#define D3DFVF_TEX7                0x0700
+#define D3DFVF_TEX8                0x0800
+#define D3DFVF_LASTBETA_UBYTE4     0x1000
+#define D3DFVF_RESERVED2           0xE000
+
+#define D3DTA_SELECTMASK        0x0000000f
+#define D3DTA_DIFFUSE           0x00000000
+#define D3DTA_CURRENT           0x00000001
+#define D3DTA_TEXTURE           0x00000002
+#define D3DTA_TFACTOR           0x00000003
+#define D3DTA_SPECULAR          0x00000004
+#define D3DTA_COMPLEMENT        0x00000010
+#define D3DTA_ALPHAREPLICATE    0x00000020
+#define D3DTA_TEMP              0x00000005
+
+#define D3DCOLORWRITEENABLE_RED   (1L<<0)   
+#define D3DCOLORWRITEENABLE_GREEN (1L<<1)
+#define D3DCOLORWRITEENABLE_BLUE  (1L<<2)
+#define D3DCOLORWRITEENABLE_ALPHA (1L<<3)
+
+
+
+#define MAKEFOURCC(ch0, ch1, ch2, ch3)  \
+    ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) |  \
+    ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
+
+
+/**************************** 
+ * Vertex Shaders Declaration
+ */
+
+typedef enum _D3DVSD_TOKENTYPE {
+  D3DVSD_TOKEN_NOP         = 0,
+  D3DVSD_TOKEN_STREAM      = 1,
+  D3DVSD_TOKEN_STREAMDATA  = 2,
+  D3DVSD_TOKEN_TESSELLATOR = 3,
+  D3DVSD_TOKEN_CONSTMEM    = 4,
+  D3DVSD_TOKEN_EXT         = 5,
+  /* RESERVED              = 6 */
+  D3DVSD_TOKEN_END         = 7,
+  D3DVSD_FORCE_DWORD       = 0x7FFFFFFF
+} D3DVSD_TOKENTYPE;
+
+/** input registers for vertex shaders functions */
+/*
+#define D3DVSDE_POSITION      0
+#define D3DVSDE_BLENDWEIGHT   1
+#define D3DVSDE_BLENDINDICES  2
+#define D3DVSDE_NORMAL        3
+#define D3DVSDE_PSIZE         4
+#define D3DVSDE_DIFFUSE       5
+#define D3DVSDE_SPECULAR      6
+#define D3DVSDE_TEXCOORD0     7
+#define D3DVSDE_TEXCOORD1     8
+#define D3DVSDE_TEXCOORD2     9
+#define D3DVSDE_TEXCOORD3    10
+#define D3DVSDE_TEXCOORD4    11
+#define D3DVSDE_TEXCOORD5    12
+#define D3DVSDE_TEXCOORD6    13
+#define D3DVSDE_TEXCOORD7    14
+#define D3DVSDE_POSITION2    15
+#define D3DVSDE_NORMAL2      16
+*/
+/** Address of the vertex register. 0 - 16 */
+typedef enum _D3DVSDE_REGISTER {
+  D3DVSDE_POSITION     =  0,
+  D3DVSDE_BLENDWEIGHT  =  1,
+  D3DVSDE_BLENDINDICES =  2,
+  D3DVSDE_NORMAL       =  3,
+  D3DVSDE_PSIZE        =  4,
+  D3DVSDE_DIFFUSE      =  5,
+  D3DVSDE_SPECULAR     =  6,
+  D3DVSDE_TEXCOORD0    =  7,
+  D3DVSDE_TEXCOORD1    =  8,
+  D3DVSDE_TEXCOORD2    =  9,
+  D3DVSDE_TEXCOORD3    = 10,
+  D3DVSDE_TEXCOORD4    = 11,
+  D3DVSDE_TEXCOORD5    = 12,
+  D3DVSDE_TEXCOORD6    = 13,
+  D3DVSDE_TEXCOORD7    = 14,
+  D3DVSDE_POSITION2    = 15,
+  D3DVSDE_NORMAL2      = 16
+} D3DVSDE_REGISTER;
+
+/** bit-field declaration for VertexRegister Type */
+/*
+#define D3DVSDT_FLOAT1      0x00
+#define D3DVSDT_FLOAT2      0x01
+#define D3DVSDT_FLOAT3      0x02
+#define D3DVSDT_FLOAT4      0x03
+#define D3DVSDT_D3DCOLOR    0x04
+#define D3DVSDT_UBYTE4      0x05
+#define D3DVSDT_SHORT2      0x06
+#define D3DVSDT_SHORT4      0x07
+*/
+typedef enum _D3DVSDT_TYPE {
+  D3DVSDT_FLOAT1   = 0x00,
+  D3DVSDT_FLOAT2   = 0x01,
+  D3DVSDT_FLOAT3   = 0x02,
+  D3DVSDT_FLOAT4   = 0x03,
+  D3DVSDT_D3DCOLOR = 0x04,
+  D3DVSDT_UBYTE4   = 0x05,
+  D3DVSDT_SHORT2   = 0x06,
+  D3DVSDT_SHORT4   = 0x07
+} D3DVSDT_TYPE;
+
+
+#define D3DVSD_CONSTADDRESSSHIFT  0
+#define D3DVSD_EXTINFOSHIFT       0
+#define D3DVSD_STREAMNUMBERSHIFT  0
+#define D3DVSD_VERTEXREGSHIFT     0
+#define D3DVSD_CONSTRSSHIFT      16
+#define D3DVSD_DATATYPESHIFT     16
+#define D3DVSD_SKIPCOUNTSHIFT    16
+#define D3DVSD_VERTEXREGINSHIFT  20
+#define D3DVSD_EXTCOUNTSHIFT     24
+#define D3DVSD_CONSTCOUNTSHIFT   25
+#define D3DVSD_DATALOADTYPESHIFT 28
+#define D3DVSD_STREAMTESSSHIFT   28
+#define D3DVSD_TOKENTYPESHIFT    29
+
+#define D3DVSD_CONSTADDRESSMASK  (0x7F     << D3DVSD_CONSTADDRESSSHIFT)
+#define D3DVSD_EXTINFOMASK       (0xFFFFFF << D3DVSD_EXTINFOSHIFT)
+#define D3DVSD_STREAMNUMBERMASK  (0xF      << D3DVSD_STREAMNUMBERSHIFT)
+#define D3DVSD_VERTEXREGMASK     (0x1F     << D3DVSD_VERTEXREGSHIFT)
+#define D3DVSD_CONSTRSMASK       (0x1FFF   << D3DVSD_CONSTRSSHIFT)
+#define D3DVSD_DATATYPEMASK      (0xF      << D3DVSD_DATATYPESHIFT)
+#define D3DVSD_SKIPCOUNTMASK     (0xF      << D3DVSD_SKIPCOUNTSHIFT)
+#define D3DVSD_EXTCOUNTMASK      (0x1F     << D3DVSD_EXTCOUNTSHIFT)
+#define D3DVSD_VERTEXREGINMASK   (0xF      << D3DVSD_VERTEXREGINSHIFT)
+#define D3DVSD_CONSTCOUNTMASK    (0xF      << D3DVSD_CONSTCOUNTSHIFT)
+#define D3DVSD_DATALOADTYPEMASK  (0x1      << D3DVSD_DATALOADTYPESHIFT)
+#define D3DVSD_STREAMTESSMASK    (0x1      << D3DVSD_STREAMTESSSHIFT)
+#define D3DVSD_TOKENTYPEMASK     (0x7      << D3DVSD_TOKENTYPESHIFT)
+
+
+#define D3DVSD_MAKETOKENTYPE(TokenType) \
+  ((TokenType << D3DVSD_TOKENTYPESHIFT) & D3DVSD_TOKENTYPEMASK)
+
+#define D3DVSD_CONST(ConstantAddress, Count) \
+  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_CONSTMEM) | ((Count) << D3DVSD_CONSTCOUNTSHIFT) | (ConstantAddress))
+
+#define D3DVSD_END() 0xFFFFFFFF
+
+#define D3DVSD_NOP() 0x00000000
+
+#define D3DVSD_REG(VertexRegister, Type) \
+  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAMDATA) | ((Type) << D3DVSD_DATATYPESHIFT) | (VertexRegister))
+
+#define D3DVSD_SKIP(Count) \
+  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAMDATA) | 0x10000000 | ((Count) << D3DVSD_SKIPCOUNTSHIFT))
+
+#define D3DVSD_STREAM(StreamNumber) \
+  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAM) | (StreamNumber))
+
+#define D3DVSD_STREAM_TESS() \
+  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAM) | (D3DVSD_STREAMTESSMASK))
+
+#define D3DVSD_TESSNORMAL(RegisterIn, RegisterOut) \
+  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_TESSELLATOR) | ((RegisterIn) << D3DVSD_VERTEXREGINSHIFT) | ((0x02) << D3DVSD_DATATYPESHIFT) | (RegisterOut))
+
+#define D3DVSD_TESSUV(Register) \
+  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_TESSELLATOR) | 0x10000000 | ((0x01) << D3DVSD_DATATYPESHIFT) | (Register))
+
+
+/********************************
+ * Pixel/Vertex Shaders Functions
+ */
+
+/** Maximum number of supported texture coordinates sets operation */
+#define D3DDP_MAXTEXCOORD   8
+
+/** opcode token mask */
+#define D3DSI_OPCODE_MASK 0x0000FFFF
+
+/** opcodes types for PS and VS */
+typedef enum _D3DSHADER_INSTRUCTION_OPCODE_TYPE {
+  D3DSIO_NOP          =  0,
+  D3DSIO_MOV          =  1,
+  D3DSIO_ADD          =  2,
+  D3DSIO_SUB          =  3,
+  D3DSIO_MAD          =  4,
+  D3DSIO_MUL          =  5,
+  D3DSIO_RCP          =  6,
+  D3DSIO_RSQ          =  7,
+  D3DSIO_DP3          =  8,
+  D3DSIO_DP4          =  9,
+  D3DSIO_MIN          = 10,
+  D3DSIO_MAX          = 11,
+  D3DSIO_SLT          = 12,
+  D3DSIO_SGE          = 13,
+  D3DSIO_EXP          = 14,
+  D3DSIO_LOG          = 15,
+  D3DSIO_LIT          = 16,
+  D3DSIO_DST          = 17,
+  D3DSIO_LRP          = 18,
+  D3DSIO_FRC          = 19,
+  D3DSIO_M4x4         = 20,
+  D3DSIO_M4x3         = 21,
+  D3DSIO_M3x4         = 22,
+  D3DSIO_M3x3         = 23,
+  D3DSIO_M3x2         = 24,
+
+  D3DSIO_TEXCOORD     = 64,
+  D3DSIO_TEXKILL      = 65,
+  D3DSIO_TEX          = 66,
+  D3DSIO_TEXBEM       = 67,
+  D3DSIO_TEXBEML      = 68,
+  D3DSIO_TEXREG2AR    = 69,
+  D3DSIO_TEXREG2GB    = 70,
+  D3DSIO_TEXM3x2PAD   = 71,
+  D3DSIO_TEXM3x2TEX   = 72,
+  D3DSIO_TEXM3x3PAD   = 73,
+  D3DSIO_TEXM3x3TEX   = 74,
+  D3DSIO_TEXM3x3DIFF  = 75,
+  D3DSIO_TEXM3x3SPEC  = 76,
+  D3DSIO_TEXM3x3VSPEC = 77,
+  D3DSIO_EXPP         = 78,
+  D3DSIO_LOGP         = 79,
+  D3DSIO_CND          = 80,
+  D3DSIO_DEF          = 81,
+  D3DSIO_TEXREG2RGB   = 82,
+  D3DSIO_TEXDP3TEX    = 83,
+  D3DSIO_TEXM3x2DEPTH = 84,
+  D3DSIO_TEXDP3       = 85,
+  D3DSIO_TEXM3x3      = 86,
+  D3DSIO_TEXDEPTH     = 87,
+  D3DSIO_CMP          = 88,
+  D3DSIO_BEM          = 89,
+
+  D3DSIO_PHASE        = 0xFFFD,
+  D3DSIO_COMMENT      = 0xFFFE,
+  D3DSIO_END          = 0XFFFF,
+
+  D3DSIO_FORCE_DWORD  = 0X7FFFFFFF /** for 32-bit alignment */
+} D3DSHADER_INSTRUCTION_OPCODE_TYPE;
+
+/** for parallelism */
+#define D3DSI_COISSUE 0x40000000
+
+/** destination parameter modifiers (.xyzw) */
+#define D3DSP_WRITEMASK_0       0x00010000 /* .x r */
+#define D3DSP_WRITEMASK_1       0x00020000 /* .y g */
+#define D3DSP_WRITEMASK_2       0x00040000 /* .z b */
+#define D3DSP_WRITEMASK_3       0x00080000 /* .w a */
+#define D3DSP_WRITEMASK_ALL     0x000F0000 /* all */
+
+#define D3DSP_DSTMOD_SHIFT      20
+#define D3DSP_DSTMOD_MASK       (0xF << D3DSP_DSTMOD_SHIFT)
+
+typedef enum _D3DSHADER_PARAM_DSTMOD_TYPE {
+  D3DSPDM_NONE         = 0 << D3DSP_DSTMOD_SHIFT,
+  D3DSPDM_SATURATE     = 1 << D3DSP_DSTMOD_SHIFT,
+  D3DSPDM_FORCE_DWORD  = 0X7FFFFFFF
+} D3DSHADER_PARAM_DSTMOD_TYPE;
+
+/** destination param */
+#define D3DSP_DSTSHIFT_SHIFT     24
+#define D3DSP_DSTSHIFT_MASK      (0xF << D3DSP_DSTSHIFT_SHIFT)
+
+/** destination/source reg type */
+#define D3DSP_REGTYPE_SHIFT      28
+#define D3DSP_REGTYPE_MASK       (0x7 << D3DSP_REGTYPE_SHIFT)
+
+typedef enum _D3DSHADER_PARAM_REGISTER_TYPE {
+  D3DSPR_TEMP         = 0 << D3DSP_REGTYPE_SHIFT,
+  D3DSPR_INPUT        = 1 << D3DSP_REGTYPE_SHIFT,
+  D3DSPR_CONST        = 2 << D3DSP_REGTYPE_SHIFT,
+  D3DSPR_ADDR         = 3 << D3DSP_REGTYPE_SHIFT,
+  D3DSPR_TEXTURE      = 3 << D3DSP_REGTYPE_SHIFT,
+  D3DSPR_RASTOUT      = 4 << D3DSP_REGTYPE_SHIFT,
+  D3DSPR_ATTROUT      = 5 << D3DSP_REGTYPE_SHIFT,
+  D3DSPR_TEXCRDOUT    = 6 << D3DSP_REGTYPE_SHIFT,
+  D3DSPR_FORCE_DWORD  = 0x7FFFFFFF
+} D3DSHADER_PARAM_REGISTER_TYPE;
+
+typedef enum _D3DVS_RASTOUT_OFFSETS {
+  D3DSRO_POSITION     = 0,
+  D3DSRO_FOG          = 1,
+  D3DSRO_POINT_SIZE   = 2,
+  D3DSRO_FORCE_DWORD  = 0x7FFFFFFF
+} D3DVS_RASTOUT_OFFSETS;
+
+#define D3DVS_ADDRESSMODE_SHIFT  13
+#define D3DVS_ADDRESSMODE_MASK   (0x1 << D3DVS_ADDRESSMODE_SHIFT)
+
+typedef enum _D3DVS_ADDRESSMODE_TYPE {
+  D3DVS_ADDRMODE_ABSOLUTE     = 0 << D3DVS_ADDRESSMODE_SHIFT,
+  D3DVS_ADDRMODE_RELATIVE     = 1 << D3DVS_ADDRESSMODE_SHIFT,
+  D3DVS_ADDRMODE_FORCE_DWORD  = 0x7FFFFFFF
+} D3DVS_ADDRESSMODE_TYPE;
+
+#define D3DVS_SWIZZLE_SHIFT      16
+#define D3DVS_SWIZZLE_MASK       (0xFF << D3DVS_SWIZZLE_SHIFT)
+
+#define D3DSP_SWIZZLE_SHIFT      16
+#define D3DSP_SWIZZLE_MASK       (0xFF << D3DSP_SWIZZLE_SHIFT)
+
+#define D3DVS_X_X       (0 << D3DVS_SWIZZLE_SHIFT)
+#define D3DVS_X_Y       (1 << D3DVS_SWIZZLE_SHIFT)
+#define D3DVS_X_Z       (2 << D3DVS_SWIZZLE_SHIFT)
+#define D3DVS_X_W       (3 << D3DVS_SWIZZLE_SHIFT)
+
+#define D3DVS_Y_X       (0 << (D3DVS_SWIZZLE_SHIFT + 2))
+#define D3DVS_Y_Y       (1 << (D3DVS_SWIZZLE_SHIFT + 2))
+#define D3DVS_Y_Z       (2 << (D3DVS_SWIZZLE_SHIFT + 2))
+#define D3DVS_Y_W       (3 << (D3DVS_SWIZZLE_SHIFT + 2))
+
+#define D3DVS_Z_X       (0 << (D3DVS_SWIZZLE_SHIFT + 4))
+#define D3DVS_Z_Y       (1 << (D3DVS_SWIZZLE_SHIFT + 4))
+#define D3DVS_Z_Z       (2 << (D3DVS_SWIZZLE_SHIFT + 4))
+#define D3DVS_Z_W       (3 << (D3DVS_SWIZZLE_SHIFT + 4))
+
+#define D3DVS_W_X       (0 << (D3DVS_SWIZZLE_SHIFT + 6))
+#define D3DVS_W_Y       (1 << (D3DVS_SWIZZLE_SHIFT + 6))
+#define D3DVS_W_Z       (2 << (D3DVS_SWIZZLE_SHIFT + 6))
+#define D3DVS_W_W       (3 << (D3DVS_SWIZZLE_SHIFT + 6))
+
+#define D3DVS_NOSWIZZLE (D3DVS_X_X | D3DVS_Y_Y | D3DVS_Z_Z | D3DVS_W_W)
+
+#define D3DSP_NOSWIZZLE \
+    ((0 << (D3DSP_SWIZZLE_SHIFT + 0)) | (1 << (D3DSP_SWIZZLE_SHIFT + 2)) | (2 << (D3DSP_SWIZZLE_SHIFT + 4)) | (3 << (D3DSP_SWIZZLE_SHIFT + 6)))
+
+#define D3DSP_SRCMOD_SHIFT      24
+#define D3DSP_SRCMOD_MASK       (0xF << D3DSP_SRCMOD_SHIFT)
+
+typedef enum _D3DSHADER_PARAM_SRCMOD_TYPE {
+  D3DSPSM_NONE         =  0 << D3DSP_SRCMOD_SHIFT,
+  D3DSPSM_NEG          =  1 << D3DSP_SRCMOD_SHIFT,
+  D3DSPSM_BIAS         =  2 << D3DSP_SRCMOD_SHIFT,
+  D3DSPSM_BIASNEG      =  3 << D3DSP_SRCMOD_SHIFT,
+  D3DSPSM_SIGN         =  4 << D3DSP_SRCMOD_SHIFT,
+  D3DSPSM_SIGNNEG      =  5 << D3DSP_SRCMOD_SHIFT,
+  D3DSPSM_COMP         =  6 << D3DSP_SRCMOD_SHIFT,
+  D3DSPSM_X2           =  7 << D3DSP_SRCMOD_SHIFT,
+  D3DSPSM_X2NEG        =  8 << D3DSP_SRCMOD_SHIFT,
+  D3DSPSM_DZ           =  9 << D3DSP_SRCMOD_SHIFT,
+  D3DSPSM_DW           = 10 << D3DSP_SRCMOD_SHIFT,
+  D3DSPSM_FORCE_DWORD  = 0x7FFFFFFF
+} D3DSHADER_PARAM_SRCMOD_TYPE;
+
+#define D3DPS_VERSION(major, minor) (0xFFFF0000 | ((major) << 8) | (minor))
+#define D3DVS_VERSION(major, minor) (0xFFFE0000 | ((major) << 8) | (minor))
+#define D3DSHADER_VERSION_MAJOR(version) (((version) >> 8) & 0xFF)
+#define D3DSHADER_VERSION_MINOR(version) (((version) >> 0) & 0xFF)
+
+#define D3DSI_COMMENTSIZE_SHIFT 16
+#define D3DSI_COMMENTSIZE_MASK (0x7FFF << D3DSI_COMMENTSIZE_SHIFT)
+
+#define D3DSHADER_COMMENT(commentSize) \
+  ((((commentSize) << D3DSI_COMMENTSIZE_SHIFT) & D3DSI_COMMENTSIZE_MASK) | D3DSIO_COMMENT)
+
+#define D3DPS_END() 0x0000FFFF
+#define D3DVS_END() 0x0000FFFF
+
+
+/*****************************************************************************
+ * Direct 3D v8 enumerated types
+ */
+typedef enum _D3DBACKBUFFER_TYPE {
+    D3DBACKBUFFER_TYPE_MONO         = 0,
+    D3DBACKBUFFER_TYPE_LEFT         = 1,
+    D3DBACKBUFFER_TYPE_RIGHT        = 2,
+
+    D3DBACKBUFFER_TYPE_FORCE_DWORD  = 0x7fffffff
+} D3DBACKBUFFER_TYPE;
+
+typedef enum _D3DBASISTYPE{
+   D3DBASIS_BEZIER        = 0,
+   D3DBASIS_BSPLINE       = 1,
+   D3DBASIS_INTERPOLATE   = 2,
+
+   D3DBASIS_FORCE_DWORD   = 0x7fffffff
+} D3DBASISTYPE;
+
+typedef enum _D3DBLEND {
+    D3DBLEND_ZERO               =  1,
+    D3DBLEND_ONE                =  2,
+    D3DBLEND_SRCCOLOR           =  3,
+    D3DBLEND_INVSRCCOLOR        =  4,
+    D3DBLEND_SRCALPHA           =  5,
+    D3DBLEND_INVSRCALPHA        =  6,
+    D3DBLEND_DESTALPHA          =  7,
+    D3DBLEND_INVDESTALPHA       =  8,
+    D3DBLEND_DESTCOLOR          =  9,
+    D3DBLEND_INVDESTCOLOR       = 10,
+    D3DBLEND_SRCALPHASAT        = 11,
+    D3DBLEND_BOTHSRCALPHA       = 12,
+    D3DBLEND_BOTHINVSRCALPHA    = 13,
+
+    D3DBLEND_FORCE_DWORD        = 0x7fffffff
+} D3DBLEND;
+
+typedef enum _D3DBLENDOP {
+    D3DBLENDOP_ADD              = 1,
+    D3DBLENDOP_SUBTRACT         = 2,
+    D3DBLENDOP_REVSUBTRACT      = 3,
+    D3DBLENDOP_MIN              = 4,
+    D3DBLENDOP_MAX              = 5,
+
+    D3DBLENDOP_FORCE_DWORD      = 0x7fffffff
+} D3DBLENDOP;
+
+typedef enum _D3DCMPFUNC {
+    D3DCMP_NEVER                = 1,
+    D3DCMP_LESS                 = 2,
+    D3DCMP_EQUAL                = 3,
+    D3DCMP_LESSEQUAL            = 4,
+    D3DCMP_GREATER              = 5,
+    D3DCMP_NOTEQUAL             = 6,
+    D3DCMP_GREATEREQUAL         = 7,
+    D3DCMP_ALWAYS               = 8,
+
+    D3DCMP_FORCE_DWORD          = 0x7fffffff
+} D3DCMPFUNC;
+
+typedef enum _D3DCUBEMAP_FACES {
+    D3DCUBEMAP_FACE_POSITIVE_X     = 0,
+    D3DCUBEMAP_FACE_NEGATIVE_X     = 1,
+    D3DCUBEMAP_FACE_POSITIVE_Y     = 2,
+    D3DCUBEMAP_FACE_NEGATIVE_Y     = 3,
+    D3DCUBEMAP_FACE_POSITIVE_Z     = 4,
+    D3DCUBEMAP_FACE_NEGATIVE_Z     = 5,
+
+    D3DCUBEMAP_FACE_FORCE_DWORD    = 0xffffffff
+} D3DCUBEMAP_FACES;
+
+typedef enum _D3DCULL {
+    D3DCULL_NONE                = 1,
+    D3DCULL_CW                  = 2,
+    D3DCULL_CCW                 = 3,
+
+    D3DCULL_FORCE_DWORD         = 0x7fffffff
+} D3DCULL;
+
+typedef enum _D3DDEBUGMONITORTOKENS {
+    D3DDMT_ENABLE          = 0,
+    D3DDMT_DISABLE         = 1,
+
+    D3DDMT_FORCE_DWORD     = 0x7fffffff
+} D3DDEBUGMONITORTOKENS;
+
+typedef enum _D3DDEVTYPE {
+    D3DDEVTYPE_HAL         = 1,
+    D3DDEVTYPE_REF         = 2,
+    D3DDEVTYPE_SW          = 3,
+
+    D3DDEVTYPE_FORCE_DWORD = 0xffffffff
+} D3DDEVTYPE;
+
+typedef enum _D3DFILLMODE {
+    D3DFILL_POINT               = 1,
+    D3DFILL_WIREFRAME           = 2,
+    D3DFILL_SOLID               = 3,
+
+    D3DFILL_FORCE_DWORD         = 0x7fffffff
+} D3DFILLMODE;
+
+typedef enum _D3DFOGMODE {
+    D3DFOG_NONE                 = 0,
+    D3DFOG_EXP                  = 1,
+    D3DFOG_EXP2                 = 2,
+    D3DFOG_LINEAR               = 3,
+
+    D3DFOG_FORCE_DWORD          = 0x7fffffff
+} D3DFOGMODE;
+
+typedef enum _D3DFORMAT {
+    D3DFMT_UNKNOWN              =   0,
+
+    D3DFMT_R8G8B8               =  20,
+    D3DFMT_A8R8G8B8             =  21,
+    D3DFMT_X8R8G8B8             =  22,
+    D3DFMT_R5G6B5               =  23,
+    D3DFMT_X1R5G5B5             =  24,
+    D3DFMT_A1R5G5B5             =  25,
+    D3DFMT_A4R4G4B4             =  26,
+    D3DFMT_R3G3B2               =  27,
+    D3DFMT_A8                   =  28,
+    D3DFMT_A8R3G3B2             =  29,
+    D3DFMT_X4R4G4B4             =  30,
+    D3DFMT_A2B10G10R10          =  31,
+    D3DFMT_G16R16               =  34,
+
+    D3DFMT_A8P8                 =  40,
+    D3DFMT_P8                   =  41,
+
+    D3DFMT_L8                   =  50,
+    D3DFMT_A8L8                 =  51,
+    D3DFMT_A4L4                 =  52,
+
+    D3DFMT_V8U8                 =  60,
+    D3DFMT_L6V5U5               =  61,
+    D3DFMT_X8L8V8U8             =  62,
+    D3DFMT_Q8W8V8U8             =  63,
+    D3DFMT_V16U16               =  64,
+    D3DFMT_W11V11U10            =  65,
+    D3DFMT_A2W10V10U10          =  67,
+
+    D3DFMT_UYVY                 =  MAKEFOURCC('U', 'Y', 'V', 'Y'),
+    D3DFMT_YUY2                 =  MAKEFOURCC('Y', 'U', 'Y', '2'),
+    D3DFMT_DXT1                 =  MAKEFOURCC('D', 'X', 'T', '1'),
+    D3DFMT_DXT2                 =  MAKEFOURCC('D', 'X', 'T', '2'),
+    D3DFMT_DXT3                 =  MAKEFOURCC('D', 'X', 'T', '3'),
+    D3DFMT_DXT4                 =  MAKEFOURCC('D', 'X', 'T', '4'),
+    D3DFMT_DXT5                 =  MAKEFOURCC('D', 'X', 'T', '5'),
+
+    D3DFMT_D16_LOCKABLE         =  70,
+    D3DFMT_D32                  =  71,
+    D3DFMT_D15S1                =  73,
+    D3DFMT_D24S8                =  75,
+    D3DFMT_D16                  =  80,
+    D3DFMT_D24X8                =  77,
+    D3DFMT_D24X4S4              =  79,
+
+    D3DFMT_VERTEXDATA           = 100,
+    D3DFMT_INDEX16              = 101,
+    D3DFMT_INDEX32              = 102,
+
+    D3DFMT_FORCE_DWORD          = 0xFFFFFFFF
+} D3DFORMAT;
+
+typedef enum _D3DLIGHTTYPE {
+    D3DLIGHT_POINT          = 1,
+    D3DLIGHT_SPOT           = 2,
+    D3DLIGHT_DIRECTIONAL    = 3,
+
+    D3DLIGHT_FORCE_DWORD    = 0x7fffffff
+} D3DLIGHTTYPE;
+
+typedef enum _D3DMATERIALCOLORSOURCE {
+    D3DMCS_MATERIAL         = 0,
+    D3DMCS_COLOR1           = 1,
+    D3DMCS_COLOR2           = 2,
+
+    D3DMCS_FORCE_DWORD      = 0x7fffffff
+} D3DMATERIALCOLORSOURCE;
+
+typedef enum _D3DMULTISAMPLE_TYPE {
+    D3DMULTISAMPLE_NONE            =  0,
+    D3DMULTISAMPLE_2_SAMPLES       =  2,
+    D3DMULTISAMPLE_3_SAMPLES       =  3,
+    D3DMULTISAMPLE_4_SAMPLES       =  4,
+    D3DMULTISAMPLE_5_SAMPLES       =  5,
+    D3DMULTISAMPLE_6_SAMPLES       =  6,
+    D3DMULTISAMPLE_7_SAMPLES       =  7,
+    D3DMULTISAMPLE_8_SAMPLES       =  8,
+    D3DMULTISAMPLE_9_SAMPLES       =  9,
+    D3DMULTISAMPLE_10_SAMPLES      = 10,
+    D3DMULTISAMPLE_11_SAMPLES      = 11,
+    D3DMULTISAMPLE_12_SAMPLES      = 12,
+    D3DMULTISAMPLE_13_SAMPLES      = 13,
+    D3DMULTISAMPLE_14_SAMPLES      = 14,
+    D3DMULTISAMPLE_15_SAMPLES      = 15,
+    D3DMULTISAMPLE_16_SAMPLES      = 16,
+
+    D3DMULTISAMPLE_FORCE_DWORD     = 0xffffffff
+} D3DMULTISAMPLE_TYPE;
+
+typedef enum _D3DORDERTYPE {
+   D3DORDER_LINEAR      = 1,
+   D3DORDER_QUADRATIC   = 2,
+   D3DORDER_CUBIC       = 3,
+   D3DORDER_QUINTIC     = 5,
+
+   D3DORDER_FORCE_DWORD = 0x7fffffff
+} D3DORDERTYPE;
+
+typedef enum _D3DPATCHEDGESTYLE {
+   D3DPATCHEDGE_DISCRETE    = 0,
+   D3DPATCHEDGE_CONTINUOUS  = 1,
+
+   D3DPATCHEDGE_FORCE_DWORD = 0x7fffffff,
+} D3DPATCHEDGESTYLE;
+
+typedef enum _D3DPOOL {
+    D3DPOOL_DEFAULT                 = 0,
+    D3DPOOL_MANAGED                 = 1,
+    D3DPOOL_SYSTEMMEM               = 2,
+    D3DPOOL_SCRATCH                 = 3,
+
+    D3DPOOL_FORCE_DWORD             = 0x7fffffff
+} D3DPOOL;
+
+typedef enum _D3DPRIMITIVETYPE {
+    D3DPT_POINTLIST             = 1,
+    D3DPT_LINELIST              = 2,
+    D3DPT_LINESTRIP             = 3,
+    D3DPT_TRIANGLELIST          = 4,
+    D3DPT_TRIANGLESTRIP         = 5,
+    D3DPT_TRIANGLEFAN           = 6,
+
+    D3DPT_FORCE_DWORD           = 0x7fffffff
+} D3DPRIMITIVETYPE;
+
+typedef enum _D3DRENDERSTATETYPE {
+    D3DRS_ZENABLE                   =   7,
+    D3DRS_FILLMODE                  =   8,
+    D3DRS_SHADEMODE                 =   9,
+    D3DRS_LINEPATTERN               =  10,
+    D3DRS_ZWRITEENABLE              =  14,
+    D3DRS_ALPHATESTENABLE           =  15,
+    D3DRS_LASTPIXEL                 =  16,
+    D3DRS_SRCBLEND                  =  19,
+    D3DRS_DESTBLEND                 =  20,
+    D3DRS_CULLMODE                  =  22,
+    D3DRS_ZFUNC                     =  23,
+    D3DRS_ALPHAREF                  =  24,
+    D3DRS_ALPHAFUNC                 =  25,
+    D3DRS_DITHERENABLE              =  26,
+    D3DRS_ALPHABLENDENABLE          =  27,
+    D3DRS_FOGENABLE                 =  28,
+    D3DRS_SPECULARENABLE            =  29,
+    D3DRS_ZVISIBLE                  =  30,
+    D3DRS_FOGCOLOR                  =  34,
+    D3DRS_FOGTABLEMODE              =  35,
+    D3DRS_FOGSTART                  =  36,
+    D3DRS_FOGEND                    =  37,
+    D3DRS_FOGDENSITY                =  38,
+    D3DRS_EDGEANTIALIAS             =  40,
+    D3DRS_ZBIAS                     =  47,
+    D3DRS_RANGEFOGENABLE            =  48,
+    D3DRS_STENCILENABLE             =  52,
+    D3DRS_STENCILFAIL               =  53,
+    D3DRS_STENCILZFAIL              =  54,
+    D3DRS_STENCILPASS               =  55,
+    D3DRS_STENCILFUNC               =  56,
+    D3DRS_STENCILREF                =  57,
+    D3DRS_STENCILMASK               =  58,
+    D3DRS_STENCILWRITEMASK          =  59,
+    D3DRS_TEXTUREFACTOR             =  60,
+    D3DRS_WRAP0                     = 128,
+    D3DRS_WRAP1                     = 129,
+    D3DRS_WRAP2                     = 130,
+    D3DRS_WRAP3                     = 131,
+    D3DRS_WRAP4                     = 132,
+    D3DRS_WRAP5                     = 133,
+    D3DRS_WRAP6                     = 134,
+    D3DRS_WRAP7                     = 135,
+    D3DRS_CLIPPING                  = 136,
+    D3DRS_LIGHTING                  = 137,
+    D3DRS_AMBIENT                   = 139,
+    D3DRS_FOGVERTEXMODE             = 140,
+    D3DRS_COLORVERTEX               = 141,
+    D3DRS_LOCALVIEWER               = 142,
+    D3DRS_NORMALIZENORMALS          = 143,
+    D3DRS_DIFFUSEMATERIALSOURCE     = 145,
+    D3DRS_SPECULARMATERIALSOURCE    = 146,
+    D3DRS_AMBIENTMATERIALSOURCE     = 147,
+    D3DRS_EMISSIVEMATERIALSOURCE    = 148,
+    D3DRS_VERTEXBLEND               = 151,
+    D3DRS_CLIPPLANEENABLE           = 152,
+    D3DRS_SOFTWAREVERTEXPROCESSING  = 153,
+    D3DRS_POINTSIZE                 = 154,
+    D3DRS_POINTSIZE_MIN             = 155,
+    D3DRS_POINTSPRITEENABLE         = 156,
+    D3DRS_POINTSCALEENABLE          = 157,
+    D3DRS_POINTSCALE_A              = 158,
+    D3DRS_POINTSCALE_B              = 159,
+    D3DRS_POINTSCALE_C              = 160,
+    D3DRS_MULTISAMPLEANTIALIAS      = 161,
+    D3DRS_MULTISAMPLEMASK           = 162,
+    D3DRS_PATCHEDGESTYLE            = 163,
+    D3DRS_PATCHSEGMENTS             = 164,
+    D3DRS_DEBUGMONITORTOKEN         = 165,
+    D3DRS_POINTSIZE_MAX             = 166,
+    D3DRS_INDEXEDVERTEXBLENDENABLE  = 167,
+    D3DRS_COLORWRITEENABLE          = 168,
+    D3DRS_TWEENFACTOR               = 170,
+    D3DRS_BLENDOP                   = 171,
+    D3DRS_POSITIONORDER             = 172,
+    D3DRS_NORMALORDER               = 173,
+
+    D3DRS_FORCE_DWORD               = 0x7fffffff
+} D3DRENDERSTATETYPE;
+
+typedef enum _D3DRESOURCETYPE {
+    D3DRTYPE_SURFACE                =  1,
+    D3DRTYPE_VOLUME                 =  2,
+    D3DRTYPE_TEXTURE                =  3,
+    D3DRTYPE_VOLUMETEXTURE          =  4,
+    D3DRTYPE_CUBETEXTURE            =  5,
+    D3DRTYPE_VERTEXBUFFER           =  6,
+    D3DRTYPE_INDEXBUFFER            =  7,
+
+    D3DRTYPE_FORCE_DWORD            = 0x7fffffff
+} D3DRESOURCETYPE;
+
+typedef enum _D3DSHADEMODE {
+    D3DSHADE_FLAT               = 1,
+    D3DSHADE_GOURAUD            = 2,
+    D3DSHADE_PHONG              = 3,
+
+    D3DSHADE_FORCE_DWORD        = 0x7fffffff
+} D3DSHADEMODE;
+
+typedef enum _D3DSTATEBLOCKTYPE {
+    D3DSBT_ALL           = 1,
+    D3DSBT_PIXELSTATE    = 2,
+    D3DSBT_VERTEXSTATE   = 3,
+
+    D3DSBT_FORCE_DWORD   = 0xffffffff
+} D3DSTATEBLOCKTYPE;
+
+typedef enum _D3DSTENCILOP {
+    D3DSTENCILOP_KEEP           = 1,
+    D3DSTENCILOP_ZERO           = 2,
+    D3DSTENCILOP_REPLACE        = 3,
+    D3DSTENCILOP_INCRSAT        = 4,
+    D3DSTENCILOP_DECRSAT        = 5,
+    D3DSTENCILOP_INVERT         = 6,
+    D3DSTENCILOP_INCR           = 7,
+    D3DSTENCILOP_DECR           = 8,
+
+    D3DSTENCILOP_FORCE_DWORD    = 0x7fffffff
+} D3DSTENCILOP;
+
+typedef enum _D3DSWAPEFFECT {
+    D3DSWAPEFFECT_DISCARD         = 1,
+    D3DSWAPEFFECT_FLIP            = 2,
+    D3DSWAPEFFECT_COPY            = 3,
+    D3DSWAPEFFECT_COPY_VSYNC      = 4,
+
+    D3DSWAPEFFECT_FORCE_DWORD     = 0xFFFFFFFF
+} D3DSWAPEFFECT;
+
+typedef enum _D3DTEXTUREADDRESS {
+    D3DTADDRESS_WRAP            = 1,
+    D3DTADDRESS_MIRROR          = 2,
+    D3DTADDRESS_CLAMP           = 3,
+    D3DTADDRESS_BORDER          = 4,
+    D3DTADDRESS_MIRRORONCE      = 5,
+
+    D3DTADDRESS_FORCE_DWORD     = 0x7fffffff
+} D3DTEXTUREADDRESS;
+
+typedef enum _D3DTEXTUREFILTERTYPE {
+    D3DTEXF_NONE            = 0,
+    D3DTEXF_POINT           = 1,
+    D3DTEXF_LINEAR          = 2,
+    D3DTEXF_ANISOTROPIC     = 3,
+    D3DTEXF_FLATCUBIC       = 4,
+    D3DTEXF_GAUSSIANCUBIC   = 5,
+
+    D3DTEXF_FORCE_DWORD     = 0x7fffffff
+} D3DTEXTUREFILTERTYPE;
+
+typedef enum _D3DTEXTUREOP {
+    D3DTOP_DISABLE                   =  1,
+    D3DTOP_SELECTARG1                =  2,
+    D3DTOP_SELECTARG2                =  3,
+    D3DTOP_MODULATE                  =  4,
+    D3DTOP_MODULATE2X                =  5,
+    D3DTOP_MODULATE4X                =  6,
+    D3DTOP_ADD                       =  7,
+    D3DTOP_ADDSIGNED                 =  8,
+    D3DTOP_ADDSIGNED2X               =  9,
+    D3DTOP_SUBTRACT                  = 10,
+    D3DTOP_ADDSMOOTH                 = 11,
+    D3DTOP_BLENDDIFFUSEALPHA         = 12,
+    D3DTOP_BLENDTEXTUREALPHA         = 13,
+    D3DTOP_BLENDFACTORALPHA          = 14,
+    D3DTOP_BLENDTEXTUREALPHAPM       = 15,
+    D3DTOP_BLENDCURRENTALPHA         = 16,
+    D3DTOP_PREMODULATE               = 17,
+    D3DTOP_MODULATEALPHA_ADDCOLOR    = 18,
+    D3DTOP_MODULATECOLOR_ADDALPHA    = 19,
+    D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20,
+    D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21,
+    D3DTOP_BUMPENVMAP                = 22,
+    D3DTOP_BUMPENVMAPLUMINANCE       = 23,
+    D3DTOP_DOTPRODUCT3               = 24,
+    D3DTOP_MULTIPLYADD               = 25,
+    D3DTOP_LERP                      = 26,
+
+    D3DTOP_FORCE_DWORD               = 0x7fffffff,
+} D3DTEXTUREOP;
+
+typedef enum _D3DTEXTURESTAGESTATETYPE {
+    D3DTSS_COLOROP               =  1,
+    D3DTSS_COLORARG1             =  2,
+    D3DTSS_COLORARG2             =  3,
+    D3DTSS_ALPHAOP               =  4,
+    D3DTSS_ALPHAARG1             =  5,
+    D3DTSS_ALPHAARG2             =  6,
+    D3DTSS_BUMPENVMAT00          =  7,
+    D3DTSS_BUMPENVMAT01          =  8,
+    D3DTSS_BUMPENVMAT10          =  9,
+    D3DTSS_BUMPENVMAT11          = 10,
+    D3DTSS_TEXCOORDINDEX         = 11,
+    D3DTSS_ADDRESSU              = 13,
+    D3DTSS_ADDRESSV              = 14,
+    D3DTSS_BORDERCOLOR           = 15,
+    D3DTSS_MAGFILTER             = 16,
+    D3DTSS_MINFILTER             = 17,
+    D3DTSS_MIPFILTER             = 18,
+    D3DTSS_MIPMAPLODBIAS         = 19,
+    D3DTSS_MAXMIPLEVEL           = 20,
+    D3DTSS_MAXANISOTROPY         = 21,
+    D3DTSS_BUMPENVLSCALE         = 22,
+    D3DTSS_BUMPENVLOFFSET        = 23,
+    D3DTSS_TEXTURETRANSFORMFLAGS = 24,
+    D3DTSS_ADDRESSW              = 25,
+    D3DTSS_COLORARG0             = 26,
+    D3DTSS_ALPHAARG0             = 27,
+    D3DTSS_RESULTARG             = 28,
+
+    D3DTSS_FORCE_DWORD           = 0x7fffffff
+} D3DTEXTURESTAGESTATETYPE;
+
+typedef enum _D3DTEXTURETRANSFORMFLAGS {
+    D3DTTFF_DISABLE         =   0,
+    D3DTTFF_COUNT1          =   1,
+    D3DTTFF_COUNT2          =   2,
+    D3DTTFF_COUNT3          =   3,
+    D3DTTFF_COUNT4          =   4,
+    D3DTTFF_PROJECTED       = 256,
+
+    D3DTTFF_FORCE_DWORD     = 0x7fffffff
+} D3DTEXTURETRANSFORMFLAGS;
+
+typedef enum _D3DTRANSFORMSTATETYPE {
+    D3DTS_VIEW            =  2,
+    D3DTS_PROJECTION      =  3,
+    D3DTS_TEXTURE0        = 16,
+    D3DTS_TEXTURE1        = 17,
+    D3DTS_TEXTURE2        = 18,
+    D3DTS_TEXTURE3        = 19,
+    D3DTS_TEXTURE4        = 20,
+    D3DTS_TEXTURE5        = 21,
+    D3DTS_TEXTURE6        = 22,
+    D3DTS_TEXTURE7        = 23,
+
+    D3DTS_FORCE_DWORD     = 0x7fffffff
+} D3DTRANSFORMSTATETYPE;
+
+typedef enum _D3DVERTEXBLENDFLAGS {
+    D3DVBF_DISABLE  =   0,
+    D3DVBF_1WEIGHTS =   1,
+    D3DVBF_2WEIGHTS =   2,
+    D3DVBF_3WEIGHTS =   3,
+    D3DVBF_TWEENING = 255,
+    D3DVBF_0WEIGHTS = 256
+} D3DVERTEXBLENDFLAGS;
+
+typedef enum _D3DZBUFFERTYPE {
+    D3DZB_FALSE                 = 0,
+    D3DZB_TRUE                  = 1,
+    D3DZB_USEW                  = 2,
+
+    D3DZB_FORCE_DWORD           = 0x7fffffff
+} D3DZBUFFERTYPE;
+
+
+/*****************************************************************************
+ * Direct 3D v8 typedefs
+ */
+typedef DWORD D3DCOLOR;
+
+/*****************************************************************************
+ * Direct 3D v8 structures
+ */
+typedef struct _D3DADAPTER_IDENTIFIER8 {
+    char            Driver[MAX_DEVICE_IDENTIFIER_STRING];
+    char            Description[MAX_DEVICE_IDENTIFIER_STRING];
+
+    LARGE_INTEGER   DriverVersion;
+    DWORD           VendorId;
+    DWORD           DeviceId;
+    DWORD           SubSysId;
+    DWORD           Revision;
+
+    GUID            DeviceIdentifier;
+
+    DWORD           WHQLLevel;
+} D3DADAPTER_IDENTIFIER8;
+
+typedef struct _D3DBOX {
+    UINT                Left;
+    UINT                Top;
+    UINT                Right;
+    UINT                Bottom;
+    UINT                Front;
+    UINT                Back;
+} D3DBOX;
+
+typedef struct _D3DCLIPSTATUS8 {
+   DWORD ClipUnion;
+   DWORD ClipIntersection;
+} D3DCLIPSTATUS8;
+
+typedef struct _D3DCOLORVALUE {
+    float r;
+    float g;
+    float b;
+    float a;
+} D3DCOLORVALUE;
+
+typedef struct _D3DDEVICE_CREATION_PARAMETERS {
+    UINT          AdapterOrdinal;
+    D3DDEVTYPE    DeviceType;
+    HWND          hFocusWindow;
+    DWORD         BehaviorFlags;
+} D3DDEVICE_CREATION_PARAMETERS;
+
+typedef struct _D3DDISPLAYMODE {
+    UINT            Width;
+    UINT            Height;
+    UINT            RefreshRate;
+    D3DFORMAT       Format;
+} D3DDISPLAYMODE;
+
+typedef struct _D3DGAMMARAMP {
+    WORD                red  [256];
+    WORD                green[256];
+    WORD                blue [256];
+} D3DGAMMARAMP;
+
+typedef struct _D3DINDEXBUFFER_DESC {
+    D3DFORMAT           Format;
+    D3DRESOURCETYPE     Type;
+    DWORD               Usage;
+    D3DPOOL             Pool;
+    UINT                Size;
+} D3DINDEXBUFFER_DESC;
+
+typedef struct _D3DVECTOR {
+    float x;
+    float y;
+    float z;
+} D3DVECTOR;
+
+typedef struct _D3DLIGHT8 {
+    D3DLIGHTTYPE    Type;
+    D3DCOLORVALUE   Diffuse;
+    D3DCOLORVALUE   Specular;
+    D3DCOLORVALUE   Ambient;
+    D3DVECTOR       Position;
+    D3DVECTOR       Direction;
+    float           Range;
+    float           Falloff;
+    float           Attenuation0;
+    float           Attenuation1;
+    float           Attenuation2;
+    float           Theta;
+    float           Phi;
+} D3DLIGHT8;
+
+typedef struct _D3DLINEPATTERN {
+    WORD    wRepeatFactor;
+    WORD    wLinePattern;
+} D3DLINEPATTERN;
+
+typedef struct _D3DLOCKED_BOX {
+    INT                 RowPitch;
+    INT                 SlicePitch;
+    void*               pBits;
+} D3DLOCKED_BOX;
+
+typedef struct _D3DLOCKED_RECT {
+    INT                 Pitch;
+    void*               pBits;
+} D3DLOCKED_RECT;
+
+typedef struct _D3DMATERIAL8 {
+    D3DCOLORVALUE   Diffuse;
+    D3DCOLORVALUE   Ambient;
+    D3DCOLORVALUE   Specular;
+    D3DCOLORVALUE   Emissive;
+    float           Power;
+} D3DMATERIAL8;
+
+typedef struct _D3DMATRIX {
+    union {
+        struct {
+            float        _11, _12, _13, _14;
+            float        _21, _22, _23, _24;
+            float        _31, _32, _33, _34;
+            float        _41, _42, _43, _44;
+        } DUMMYSTRUCTNAME;
+        float m[4][4];
+    } DUMMYUNIONNAME;
+} D3DMATRIX;
+
+typedef struct _D3DPRESENT_PARAMETERS_ {
+    UINT                    BackBufferWidth;
+    UINT                    BackBufferHeight;
+    D3DFORMAT               BackBufferFormat;
+    UINT                    BackBufferCount;
+
+    D3DMULTISAMPLE_TYPE     MultiSampleType;
+
+    D3DSWAPEFFECT           SwapEffect;
+    HWND                    hDeviceWindow;
+    BOOL                    Windowed;
+    BOOL                    EnableAutoDepthStencil;
+    D3DFORMAT               AutoDepthStencilFormat;
+    DWORD                   Flags;
+
+    UINT                    FullScreen_RefreshRateInHz;
+    UINT                    FullScreen_PresentationInterval;
+
+} D3DPRESENT_PARAMETERS;
+
+#define D3DPRESENTFLAG_LOCKABLE_BACKBUFFER  0x00000001
+
+typedef struct _D3DRANGE {
+    UINT                Offset;
+    UINT                Size;
+} D3DRANGE;
+
+typedef struct _D3DRASTER_STATUS {
+    BOOL            InVBlank;
+    UINT            ScanLine;
+} D3DRASTER_STATUS;
+
+typedef struct _D3DRECT {
+    LONG x1;
+    LONG y1;
+    LONG x2;
+    LONG y2;
+} D3DRECT;
+
+typedef struct _D3DRECTPATCH_INFO {
+    UINT                StartVertexOffsetWidth;
+    UINT                StartVertexOffsetHeight;
+    UINT                Width;
+    UINT                Height;
+    UINT                Stride;
+    D3DBASISTYPE        Basis;
+    D3DORDERTYPE        Order;
+} D3DRECTPATCH_INFO;
+
+typedef struct _D3DSURFACE_DESC {
+    D3DFORMAT           Format;
+    D3DRESOURCETYPE     Type;
+    DWORD               Usage;
+    D3DPOOL             Pool;
+    UINT                Size;
+    D3DMULTISAMPLE_TYPE MultiSampleType;
+    UINT                Width;
+    UINT                Height;
+} D3DSURFACE_DESC;
+
+typedef struct _D3DTRIPATCH_INFO {
+    UINT                StartVertexOffset;
+    UINT                NumVertices;
+    D3DBASISTYPE        Basis;
+    D3DORDERTYPE        Order;
+} D3DTRIPATCH_INFO;
+
+typedef struct _D3DVERTEXBUFFER_DESC {
+    D3DFORMAT           Format;
+    D3DRESOURCETYPE     Type;
+    DWORD               Usage;
+    D3DPOOL             Pool;
+    UINT                Size;
+    DWORD               FVF;
+} D3DVERTEXBUFFER_DESC;
+
+typedef struct _D3DVIEWPORT8 {
+    DWORD       X;
+    DWORD       Y;
+    DWORD       Width;
+    DWORD       Height;
+    float       MinZ;
+    float       MaxZ;
+} D3DVIEWPORT8;
+
+typedef struct _D3DVOLUME_DESC {
+    D3DFORMAT           Format;
+    D3DRESOURCETYPE     Type;
+    DWORD               Usage;
+    D3DPOOL             Pool;
+    UINT                Size;
+    UINT                Width;
+    UINT                Height;
+    UINT                Depth;
+} D3DVOLUME_DESC;
+
+#endif  /* __WINE_D3D8TYPES_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3d9.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3d9.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3d9.h	(revision 16410)
@@ -0,0 +1,2026 @@
+/*
+ * Copyright (C) 2002-2003 Jason Edmeades
+ *                         Raphael Junqueira
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_D3D9_H
+#define __WINE_D3D9_H
+
+#ifndef DIRECT3D_VERSION
+#define DIRECT3D_VERSION  0x0900
+#endif
+
+#include <stdlib.h>
+
+#define COM_NO_WINDOWS_H
+#include <objbase.h>
+
+#ifndef __WINESRC__
+# include <windows.h>
+#endif
+
+#include <d3d9types.h>
+#include <d3d9caps.h>
+
+/*****************************************************************************
+ * Behavior Flags for IDirect3D8::CreateDevice
+ */
+#define D3DCREATE_FPU_PRESERVE                  0x00000002L
+#define D3DCREATE_MULTITHREADED                 0x00000004L
+#define D3DCREATE_PUREDEVICE                    0x00000010L
+#define D3DCREATE_SOFTWARE_VERTEXPROCESSING     0x00000020L
+#define D3DCREATE_HARDWARE_VERTEXPROCESSING     0x00000040L
+#define D3DCREATE_MIXED_VERTEXPROCESSING        0x00000080L
+#define D3DCREATE_DISABLE_DRIVER_MANAGEMENT     0x00000100L
+#define D3DCREATE_ADAPTERGROUP_DEVICE           0x00000200L
+
+/*****************************************************************************
+ * Flags for SetPrivateData
+ */
+#define D3DSPD_IUNKNOWN                         0x00000001L
+
+
+/*****************************************************************************
+ * #defines and error codes
+ */
+#define D3D_SDK_VERSION                         32
+#define D3DADAPTER_DEFAULT                      0
+#define D3DENUM_NO_WHQL_LEVEL                   0x00000002L
+#define D3DPRESENT_BACK_BUFFERS_MAX             3L
+#define D3DSGR_NO_CALIBRATION                   0x00000000L
+#define D3DSGR_CALIBRATE                        0x00000001L
+
+#define _FACD3D  0x876
+#define MAKE_D3DHRESULT( code )                 MAKE_HRESULT( 1, _FACD3D, code )
+#define MAKE_D3DSTATUS( code )                  MAKE_HRESULT( 0, _FACD3D, code )
+
+/*****************************************************************************
+ * Direct3D Errors
+ */
+#define D3D_OK                                  S_OK
+#define D3DERR_WRONGTEXTUREFORMAT               MAKE_D3DHRESULT(2072)
+#define D3DERR_UNSUPPORTEDCOLOROPERATION        MAKE_D3DHRESULT(2073)
+#define D3DERR_UNSUPPORTEDCOLORARG              MAKE_D3DHRESULT(2074)
+#define D3DERR_UNSUPPORTEDALPHAOPERATION        MAKE_D3DHRESULT(2075)
+#define D3DERR_UNSUPPORTEDALPHAARG              MAKE_D3DHRESULT(2076)
+#define D3DERR_TOOMANYOPERATIONS                MAKE_D3DHRESULT(2077)
+#define D3DERR_CONFLICTINGTEXTUREFILTER         MAKE_D3DHRESULT(2078)
+#define D3DERR_UNSUPPORTEDFACTORVALUE           MAKE_D3DHRESULT(2079)
+#define D3DERR_CONFLICTINGRENDERSTATE           MAKE_D3DHRESULT(2081)
+#define D3DERR_UNSUPPORTEDTEXTUREFILTER         MAKE_D3DHRESULT(2082)
+#define D3DERR_CONFLICTINGTEXTUREPALETTE        MAKE_D3DHRESULT(2086)
+#define D3DERR_DRIVERINTERNALERROR              MAKE_D3DHRESULT(2087)
+#define D3DERR_NOTFOUND                         MAKE_D3DHRESULT(2150)
+#define D3DERR_MOREDATA                         MAKE_D3DHRESULT(2151)
+#define D3DERR_DEVICELOST                       MAKE_D3DHRESULT(2152)
+#define D3DERR_DEVICENOTRESET                   MAKE_D3DHRESULT(2153)
+#define D3DERR_NOTAVAILABLE                     MAKE_D3DHRESULT(2154)
+#define D3DERR_OUTOFVIDEOMEMORY                 MAKE_D3DHRESULT(380)
+#define D3DERR_INVALIDDEVICE                    MAKE_D3DHRESULT(2155)
+#define D3DERR_INVALIDCALL                      MAKE_D3DHRESULT(2156)
+#define D3DERR_DRIVERINVALIDCALL                MAKE_D3DHRESULT(2157)
+#define D3DERR_WASSTILLDRAWING                  MAKE_D3DHRESULT(540)
+#define D3DOK_NOAUTOGEN                         MAKE_D3DSTATUS(2159)
+
+
+/*****************************************************************************
+ * Predeclare the interfaces
+ */
+DEFINE_GUID(IID_IDirect3D9,                   0x81BDCBCA, 0x64D4, 0x426D, 0xAE, 0x8D, 0xAD, 0x1, 0x47, 0xF4, 0x27, 0x5C);
+typedef struct IDirect3D9 *LPDIRECT3D9, *PDIRECT3D9;
+
+DEFINE_GUID(IID_IDirect3D9Ex,                 0x02177241, 0x69FC, 0x400C, 0x8F, 0xF1, 0x93, 0xA4, 0x4D, 0xF6, 0x86, 0x1D);
+typedef struct IDirect3D9Ex *LPDIRECT3D9EX, *PDIRECT3D9EX;
+
+DEFINE_GUID(IID_IDirect3DDevice9,             0xd0223b96, 0xbf7a, 0x43fd, 0x92, 0xbd, 0xa4, 0x3b, 0xd, 0x82, 0xb9, 0xeb);
+typedef struct IDirect3DDevice9 *LPDIRECT3DDEVICE9;
+
+DEFINE_GUID(IID_IDirect3DDevice9Ex,           0xb18b10ce, 0x2649, 0x405a, 0x87, 0xf, 0x95, 0xf7, 0x77, 0xd4, 0x31, 0x3a);
+typedef struct IDirect3DDevice9Ex *LPDIRECT3DDEVICE9EX, *PDIRECT3DDEVICE9EX;
+
+DEFINE_GUID(IID_IDirect3DResource9,           0x5eec05d, 0x8f7d, 0x4362, 0xb9, 0x99, 0xd1, 0xba, 0xf3, 0x57, 0xc7, 0x4);
+typedef struct IDirect3DResource9 *LPDIRECT3DRESOURCE9, *PDIRECT3DRESOURCE9;
+
+DEFINE_GUID(IID_IDirect3DVertexBuffer9,       0xb64bb1b5, 0xfd70, 0x4df6, 0xbf, 0x91, 0x19, 0xd0, 0xa1, 0x24, 0x55, 0xe3);
+typedef struct IDirect3DVertexBuffer9 *LPDIRECT3DVERTEXBUFFER9, *PDIRECT3DVERTEXBUFFER9;
+
+DEFINE_GUID(IID_IDirect3DVolume9,             0x24f416e6, 0x1f67, 0x4aa7, 0xb8, 0x8e, 0xd3, 0x3f, 0x6f, 0x31, 0x28, 0xa1);
+typedef struct IDirect3DVolume9 *LPDIRECT3DVOLUME9, *PDIRECT3DVOLUME9;
+
+DEFINE_GUID(IID_IDirect3DSwapChain9,          0x794950f2, 0xadfc, 0x458a, 0x90, 0x5e, 0x10, 0xa1, 0xb, 0xb, 0x50, 0x3b);
+typedef struct IDirect3DSwapChain9 *LPDIRECT3DSWAPCHAIN9, *PDIRECT3DSWAPCHAIN9;
+
+DEFINE_GUID(IID_IDirect3DSwapChain9Ex,        0x91886caf, 0x1c3d, 0x4d2e, 0xa0, 0xab, 0x3e, 0x4c, 0x7d, 0x8d, 0x33, 0x3);
+typedef struct IDirect3DSwapChain9Ex *LPDIRECT3DSWAPCHAIN9EX, *PDIRECT3DSWAPCHAIN9EX;
+
+DEFINE_GUID(IID_IDirect3DSurface9,            0xcfbaf3a, 0x9ff6, 0x429a, 0x99, 0xb3, 0xa2, 0x79, 0x6a, 0xf8, 0xb8, 0x9b);
+typedef struct IDirect3DSurface9 *LPDIRECT3DSURFACE9, *PDIRECT3DSURFACE9;
+
+DEFINE_GUID(IID_IDirect3DIndexBuffer9,        0x7c9dd65e, 0xd3f7, 0x4529, 0xac, 0xee, 0x78, 0x58, 0x30, 0xac, 0xde, 0x35);
+typedef struct IDirect3DIndexBuffer9 *LPDIRECT3DINDEXBUFFER9, *PDIRECT3DINDEXBUFFER9;
+
+DEFINE_GUID(IID_IDirect3DBaseTexture9,        0x580ca87e, 0x1d3c, 0x4d54, 0x99, 0x1d, 0xb7, 0xd3, 0xe3, 0xc2, 0x98, 0xce);
+typedef struct IDirect3DBaseTexture9 *LPDIRECT3DBASETEXTURE9, *PDIRECT3DBASETEXTURE9;
+
+DEFINE_GUID(IID_IDirect3DTexture9,            0x85c31227, 0x3de5, 0x4f00, 0x9b, 0x3a, 0xf1, 0x1a, 0xc3, 0x8c, 0x18, 0xb5);
+typedef struct IDirect3DTexture9 *LPDIRECT3DTEXTURE9, *PDIRECT3DTEXTURE9;
+
+DEFINE_GUID(IID_IDirect3DCubeTexture9,        0xfff32f81, 0xd953, 0x473a, 0x92, 0x23, 0x93, 0xd6, 0x52, 0xab, 0xa9, 0x3f);
+typedef struct IDirect3DCubeTexture9 *LPDIRECT3DCUBETEXTURE9, *PDIRECT3DCUBETEXTURE9;
+
+DEFINE_GUID(IID_IDirect3DVolumeTexture9,      0x2518526c, 0xe789, 0x4111, 0xa7, 0xb9, 0x47, 0xef, 0x32, 0x8d, 0x13, 0xe6);
+typedef struct IDirect3DVolumeTexture9 *LPDIRECT3DVOLUMETEXTURE9, *PDIRECT3DVOLUMETEXTURE9;
+
+DEFINE_GUID(IID_IDirect3DVertexDeclaration9,  0xdd13c59c, 0x36fa, 0x4098, 0xa8, 0xfb, 0xc7, 0xed, 0x39, 0xdc, 0x85, 0x46);
+typedef struct IDirect3DVertexDeclaration9 *LPDIRECT3DVERTEXDECLARATION9;
+
+DEFINE_GUID(IID_IDirect3DVertexShader9,       0xefc5557e, 0x6265, 0x4613, 0x8a, 0x94, 0x43, 0x85, 0x78, 0x89, 0xeb, 0x36);
+typedef struct IDirect3DVertexShader9 *LPDIRECT3DVERTEXSHADER9;
+
+DEFINE_GUID(IID_IDirect3DPixelShader9,        0x6d3bdbdc, 0x5b02, 0x4415, 0xb8, 0x52, 0xce, 0x5e, 0x8b, 0xcc, 0xb2, 0x89);
+typedef struct IDirect3DPixelShader9 *LPDIRECT3DPIXELSHADER9;
+
+DEFINE_GUID(IID_IDirect3DStateBlock9,         0xb07c4fe5, 0x310d, 0x4ba8, 0xa2, 0x3c, 0x4f, 0xf, 0x20, 0x6f, 0x21, 0x8b);
+typedef struct IDirect3DStateBlock9 *LPDIRECT3DSTATEBLOCK9;
+
+DEFINE_GUID(IID_IDirect3DQuery9,              0xd9771460, 0xa695, 0x4f26, 0xbb, 0xd3, 0x27, 0xb8, 0x40, 0xb5, 0x41, 0xcc);
+typedef struct IDirect3DQuery9 *LPDIRECT3DQUERY9, *PDIRECT3DQUERY9;
+
+/*****************************************************************************
+ * IDirect3D9 interface
+ */
+#define INTERFACE IDirect3D9
+DECLARE_INTERFACE_(IDirect3D9,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3D9 methods ***/
+    STDMETHOD(RegisterSoftwareDevice)(THIS_ void* pInitializeFunction) PURE;
+    STDMETHOD_(UINT, GetAdapterCount)(THIS) PURE;
+    STDMETHOD(GetAdapterIdentifier)(THIS_ UINT Adapter, DWORD Flags, D3DADAPTER_IDENTIFIER9* pIdentifier) PURE;
+    STDMETHOD_(UINT, GetAdapterModeCount)(THIS_ UINT Adapter, D3DFORMAT Format) PURE;
+    STDMETHOD(EnumAdapterModes)(THIS_ UINT Adapter, D3DFORMAT Format, UINT Mode, D3DDISPLAYMODE* pMode) PURE;
+    STDMETHOD(GetAdapterDisplayMode)(THIS_ UINT Adapter, D3DDISPLAYMODE* pMode) PURE;
+    STDMETHOD(CheckDeviceType)(THIS_ UINT iAdapter, D3DDEVTYPE DevType, D3DFORMAT DisplayFormat, D3DFORMAT BackBufferFormat, BOOL bWindowed) PURE;
+    STDMETHOD(CheckDeviceFormat)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat, DWORD Usage, D3DRESOURCETYPE RType, D3DFORMAT CheckFormat) PURE;
+    STDMETHOD(CheckDeviceMultiSampleType)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SurfaceFormat, BOOL Windowed, D3DMULTISAMPLE_TYPE MultiSampleType, DWORD* pQualityLevels) PURE;
+    STDMETHOD(CheckDepthStencilMatch)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat, D3DFORMAT RenderTargetFormat, D3DFORMAT DepthStencilFormat) PURE;
+    STDMETHOD(CheckDeviceFormatConversion)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SourceFormat, D3DFORMAT TargetFormat) PURE;
+    STDMETHOD(GetDeviceCaps)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DCAPS9* pCaps) PURE;
+    STDMETHOD_(HMONITOR, GetAdapterMonitor)(THIS_ UINT Adapter) PURE;
+    STDMETHOD(CreateDevice)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, HWND hFocusWindow, DWORD BehaviorFlags, D3DPRESENT_PARAMETERS* pPresentationParameters, struct IDirect3DDevice9** ppReturnedDeviceInterface) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3D9_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3D9_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirect3D9_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirect3D9 methods ***/
+#define IDirect3D9_RegisterSoftwareDevice(p,a)                (p)->lpVtbl->RegisterSoftwareDevice(p,a)
+#define IDirect3D9_GetAdapterCount(p)                         (p)->lpVtbl->GetAdapterCount(p)
+#define IDirect3D9_GetAdapterIdentifier(p,a,b,c)              (p)->lpVtbl->GetAdapterIdentifier(p,a,b,c)
+#define IDirect3D9_GetAdapterModeCount(p,a,b)                 (p)->lpVtbl->GetAdapterModeCount(p,a,b)
+#define IDirect3D9_EnumAdapterModes(p,a,b,c,d)                (p)->lpVtbl->EnumAdapterModes(p,a,b,c,d)
+#define IDirect3D9_GetAdapterDisplayMode(p,a,b)               (p)->lpVtbl->GetAdapterDisplayMode(p,a,b)
+#define IDirect3D9_CheckDeviceType(p,a,b,c,d,e)               (p)->lpVtbl->CheckDeviceType(p,a,b,c,d,e)
+#define IDirect3D9_CheckDeviceFormat(p,a,b,c,d,e,f)           (p)->lpVtbl->CheckDeviceFormat(p,a,b,c,d,e,f)
+#define IDirect3D9_CheckDeviceMultiSampleType(p,a,b,c,d,e,f)  (p)->lpVtbl->CheckDeviceMultiSampleType(p,a,b,c,d,e,f)
+#define IDirect3D9_CheckDepthStencilMatch(p,a,b,c,d,e)        (p)->lpVtbl->CheckDepthStencilMatch(p,a,b,c,d,e)
+#define IDirect3D9_CheckDeviceFormatConversion(p,a,b,c,d)     (p)->lpVtbl->CheckDeviceFormatConversion(p,a,b,c,d)
+#define IDirect3D9_GetDeviceCaps(p,a,b,c)                     (p)->lpVtbl->GetDeviceCaps(p,a,b,c)
+#define IDirect3D9_GetAdapterMonitor(p,a)                     (p)->lpVtbl->GetAdapterMonitor(p,a)
+#define IDirect3D9_CreateDevice(p,a,b,c,d,e,f)                (p)->lpVtbl->CreateDevice(p,a,b,c,d,e,f)
+#else
+/*** IUnknown methods ***/
+#define IDirect3D9_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3D9_AddRef(p)             (p)->AddRef()
+#define IDirect3D9_Release(p)            (p)->Release()
+/*** IDirect3D9 methods ***/
+#define IDirect3D9_RegisterSoftwareDevice(p,a)                (p)->RegisterSoftwareDevice(a)
+#define IDirect3D9_GetAdapterCount(p)                         (p)->GetAdapterCount()
+#define IDirect3D9_GetAdapterIdentifier(p,a,b,c)              (p)->GetAdapterIdentifier(a,b,c)
+#define IDirect3D9_GetAdapterModeCount(p,a,b)                 (p)->GetAdapterModeCount(a,b)
+#define IDirect3D9_EnumAdapterModes(p,a,b,c,d)                (p)->EnumAdapterModes(a,b,c,d)
+#define IDirect3D9_GetAdapterDisplayMode(p,a,b)               (p)->GetAdapterDisplayMode(a,b)
+#define IDirect3D9_CheckDeviceType(p,a,b,c,d,e)               (p)->CheckDeviceType(a,b,c,d,e)
+#define IDirect3D9_CheckDeviceFormat(p,a,b,c,d,e,f)           (p)->CheckDeviceFormat(a,b,c,d,e,f)
+#define IDirect3D9_CheckDeviceMultiSampleType(p,a,b,c,d,e,f)  (p)->CheckDeviceMultiSampleType(a,b,c,d,e,f)
+#define IDirect3D9_CheckDepthStencilMatch(p,a,b,c,d,e)        (p)->CheckDepthStencilMatch(a,b,c,d,e)
+#define IDirect3D9_CheckDeviceFormatConversion(p,a,b,c,d)     (p)->CheckDeviceFormatConversion(a,b,c,d)
+#define IDirect3D9_GetDeviceCaps(p,a,b,c)                     (p)->GetDeviceCaps(a,b,c)
+#define IDirect3D9_GetAdapterMonitor(p,a)                     (p)->GetAdapterMonitor(a)
+#define IDirect3D9_CreateDevice(p,a,b,c,d,e,f)                (p)->CreateDevice(a,b,c,d,e,f)
+#endif
+
+/*****************************************************************************
+ * IDirect3D9Ex interface
+ */
+#define INTERFACE IDirect3D9Ex
+DECLARE_INTERFACE_(IDirect3D9Ex,IDirect3D9)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3D9 methods ***/
+
+    /* Note: Microsoft's d3d9.h does not declare IDirect3D9Ex::RegisterSoftwareDevice . This would mean that
+     * the offsets of the other methods in the Vtable change too. This is wrong. In Microsoft's
+     * d3d9.dll, the offsets for the other functions are still compatible with IDirect3D9.
+     * This is probably because even in MS's header IDirect3D9Ex inherits from IDirect3D9, which makes the
+     * C++ inferface compatible, and nobody uses the C interface in Windows world.
+     */
+    STDMETHOD(RegisterSoftwareDevice)(THIS_ void* pInitializeFunction) PURE;
+
+    STDMETHOD_(UINT, GetAdapterCount)(THIS) PURE;
+    STDMETHOD(GetAdapterIdentifier)(THIS_ UINT Adapter, DWORD Flags, D3DADAPTER_IDENTIFIER9* pIdentifier) PURE;
+    STDMETHOD_(UINT, GetAdapterModeCount)(THIS_ UINT Adapter, D3DFORMAT Format) PURE;
+    STDMETHOD(EnumAdapterModes)(THIS_ UINT Adapter, D3DFORMAT Format, UINT Mode, D3DDISPLAYMODE* pMode) PURE;
+    STDMETHOD(GetAdapterDisplayMode)(THIS_ UINT Adapter, D3DDISPLAYMODE* pMode) PURE;
+    STDMETHOD(CheckDeviceType)(THIS_ UINT iAdapter, D3DDEVTYPE DevType, D3DFORMAT DisplayFormat, D3DFORMAT BackBufferFormat, BOOL bWindowed) PURE;
+    STDMETHOD(CheckDeviceFormat)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat, DWORD Usage, D3DRESOURCETYPE RType, D3DFORMAT CheckFormat) PURE;
+    STDMETHOD(CheckDeviceMultiSampleType)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SurfaceFormat, BOOL Windowed, D3DMULTISAMPLE_TYPE MultiSampleType, DWORD* pQualityLevels) PURE;
+    STDMETHOD(CheckDepthStencilMatch)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat, D3DFORMAT RenderTargetFormat, D3DFORMAT DepthStencilFormat) PURE;
+    STDMETHOD(CheckDeviceFormatConversion)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SourceFormat, D3DFORMAT TargetFormat) PURE;
+    STDMETHOD(GetDeviceCaps)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DCAPS9* pCaps) PURE;
+    STDMETHOD_(HMONITOR, GetAdapterMonitor)(THIS_ UINT Adapter) PURE;
+    STDMETHOD(CreateDevice)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, HWND hFocusWindow, DWORD BehaviorFlags, D3DPRESENT_PARAMETERS* pPresentationParameters, struct IDirect3DDevice9** ppReturnedDeviceInterface) PURE;
+    /*** IDirect3D9Ex methods ***/
+    STDMETHOD_(UINT, GetAdapterModeCountEx)(THIS_ UINT Adapter, CONST D3DDISPLAYMODEFILTER *pFilter) PURE;
+    STDMETHOD(EnumAdapterModesEx)(THIS_ UINT Adapter, CONST D3DDISPLAYMODEFILTER *pFilter, UINT Mode, D3DDISPLAYMODEEX* pMode) PURE;
+    STDMETHOD(GetAdapterDisplayModeEx)(THIS_ UINT Adapter, D3DDISPLAYMODEEX *pMode, D3DDISPLAYROTATION *pRotation);
+    STDMETHOD(CreateDeviceEx)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, HWND hFocusWindow, DWORD BehaviorFlags, D3DPRESENT_PARAMETERS* pPresentationParameters, D3DDISPLAYMODEEX* pFullscreenDisplayMode, struct IDirect3DDevice9Ex **ppReturnedDeviceInterface) PURE;
+    STDMETHOD(GetAdapterLUID)(THIS_ UINT Adatper, LUID *pLUID) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3D9Ex_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3D9Ex_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirect3D9Ex_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirect3D9 methods ***/
+#define IDirect3D9Ex_RegisterSoftwareDevice(p,a)                (p)->lpVtbl->RegisterSoftwareDevice(p,a)
+#define IDirect3D9Ex_GetAdapterCount(p)                         (p)->lpVtbl->GetAdapterCount(p)
+#define IDirect3D9Ex_GetAdapterIdentifier(p,a,b,c)              (p)->lpVtbl->GetAdapterIdentifier(p,a,b,c)
+#define IDirect3D9Ex_GetAdapterModeCount(p,a,b)                 (p)->lpVtbl->GetAdapterModeCount(p,a,b)
+#define IDirect3D9Ex_EnumAdapterModes(p,a,b,c,d)                (p)->lpVtbl->EnumAdapterModes(p,a,b,c,d)
+#define IDirect3D9Ex_GetAdapterDisplayMode(p,a,b)               (p)->lpVtbl->GetAdapterDisplayMode(p,a,b)
+#define IDirect3D9Ex_CheckDeviceType(p,a,b,c,d,e)               (p)->lpVtbl->CheckDeviceType(p,a,b,c,d,e)
+#define IDirect3D9Ex_CheckDeviceFormat(p,a,b,c,d,e,f)           (p)->lpVtbl->CheckDeviceFormat(p,a,b,c,d,e,f)
+#define IDirect3D9Ex_CheckDeviceMultiSampleType(p,a,b,c,d,e,f)  (p)->lpVtbl->CheckDeviceMultiSampleType(p,a,b,c,d,e,f)
+#define IDirect3D9Ex_CheckDepthStencilMatch(p,a,b,c,d,e)        (p)->lpVtbl->CheckDepthStencilMatch(p,a,b,c,d,e)
+#define IDirect3D9Ex_CheckDeviceFormatConversion(p,a,b,c,d)     (p)->lpVtbl->CheckDeviceFormatConversion(p,a,b,c,d)
+#define IDirect3D9Ex_GetDeviceCaps(p,a,b,c)                     (p)->lpVtbl->GetDeviceCaps(p,a,b,c)
+#define IDirect3D9Ex_GetAdapterMonitor(p,a)                     (p)->lpVtbl->GetAdapterMonitor(p,a)
+#define IDirect3D9Ex_CreateDevice(p,a,b,c,d,e,f)                (p)->lpVtbl->CreateDevice(p,a,b,c,d,e,f)
+/*** IDirect3D9Ex methods ***/
+#define IDirect3D9Ex_GetAdapterModeCountEx(p,a,b)               (p)->lpVtbl->GetAdapterModeCountEx(p,a,b)
+#define IDirect3D9Ex_EnumAdapterModesEx(p,a,b,c,d)              (p)->lpVtbl->EnumAdapterModesEx(p,a,b,c,d)
+#define IDirect3D9Ex_GetAdapterDisplayModeEx(p,a,b,c)           (p)->lpVtbl->GetAdapterDisplayModeEx(p,a,b,c)
+#define IDirect3D9Ex_CreateDeviceEx(p,a,b,c,d,e,f,g)            (p)->lpVtbl->CreateDeviceEx(p,a,b,c,d,e,f,g)
+#define IDirect3D9Ex_GetAdapterLUID(p,a,b)                      (p)->lpVtbl->GetAdapterLUID(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirect3D9Ex_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3D9Ex_AddRef(p)             (p)->AddRef()
+#define IDirect3D9Ex_Release(p)            (p)->Release()
+/*** IDirect3D9 methods ***/
+#define IDirect3D9Ex_RegisterSoftwareDevice(p,a)                (p)->RegisterSoftwareDevice(a)
+#define IDirect3D9Ex_GetAdapterCount(p)                         (p)->GetAdapterCount()
+#define IDirect3D9Ex_GetAdapterIdentifier(p,a,b,c)              (p)->GetAdapterIdentifier(a,b,c)
+#define IDirect3D9Ex_GetAdapterModeCount(p,a,b)                 (p)->GetAdapterModeCount(a,b)
+#define IDirect3D9Ex_EnumAdapterModes(p,a,b,c,d)                (p)->EnumAdapterModes(a,b,c,d)
+#define IDirect3D9Ex_GetAdapterDisplayMode(p,a,b)               (p)->GetAdapterDisplayMode(a,b)
+#define IDirect3D9Ex_CheckDeviceType(p,a,b,c,d,e)               (p)->CheckDeviceType(a,b,c,d,e)
+#define IDirect3D9Ex_CheckDeviceFormat(p,a,b,c,d,e,f)           (p)->CheckDeviceFormat(a,b,c,d,e,f)
+#define IDirect3D9Ex_CheckDeviceMultiSampleType(p,a,b,c,d,e,f)  (p)->CheckDeviceMultiSampleType(a,b,c,d,e,f)
+#define IDirect3D9Ex_CheckDepthStencilMatch(p,a,b,c,d,e)        (p)->CheckDepthStencilMatch(a,b,c,d,e)
+#define IDirect3D9Ex_CheckDeviceFormatConversion(p,a,b,c,d)     (p)->CheckDeviceFormatConversion(a,b,c,d)
+#define IDirect3D9Ex_GetDeviceCaps(p,a,b,c)                     (p)->GetDeviceCaps(a,b,c)
+#define IDirect3D9Ex_GetAdapterMonitor(p,a)                     (p)->GetAdapterMonitor(a)
+#define IDirect3D9Ex_CreateDevice(p,a,b,c,d,e,f)                (p)->CreateDevice(a,b,c,d,e,f)
+#endif
+
+/*****************************************************************************
+ * IDirect3DVolume9 interface
+ */
+#define INTERFACE IDirect3DVolume9
+DECLARE_INTERFACE_(IDirect3DVolume9,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DVolume9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
+    STDMETHOD(GetContainer)(THIS_ REFIID riid, void** ppContainer) PURE;
+    STDMETHOD(GetDesc)(THIS_ D3DVOLUME_DESC* pDesc) PURE;
+    STDMETHOD(LockBox)(THIS_ D3DLOCKED_BOX* pLockedVolume, CONST D3DBOX* pBox, DWORD Flags) PURE;
+    STDMETHOD(UnlockBox)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DVolume9_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVolume9_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IDirect3DVolume9_Release(p)                   (p)->lpVtbl->Release(p)
+/*** IDirect3DVolume9 methods ***/
+#define IDirect3DVolume9_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DVolume9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DVolume9_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DVolume9_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DVolume9_GetContainer(p,a,b)          (p)->lpVtbl->GetContainer(p,a,b)
+#define IDirect3DVolume9_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
+#define IDirect3DVolume9_LockBox(p,a,b,c)             (p)->lpVtbl->LockBox(p,a,b,c)
+#define IDirect3DVolume9_UnlockBox(p)                 (p)->lpVtbl->UnlockBox(p)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DVolume9_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
+#define IDirect3DVolume9_AddRef(p)                    (p)->AddRef()
+#define IDirect3DVolume9_Release(p)                   (p)->Release()
+/*** IDirect3DVolume9 methods ***/
+#define IDirect3DVolume9_GetDevice(p,a)               (p)->GetDevice(a)
+#define IDirect3DVolume9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DVolume9_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
+#define IDirect3DVolume9_FreePrivateData(p,a)         (p)->FreePrivateData(a)
+#define IDirect3DVolume9_GetContainer(p,a,b)          (p)->GetContainer(a,b)
+#define IDirect3DVolume9_GetDesc(p,a)                 (p)->GetDesc(a)
+#define IDirect3DVolume9_LockBox(p,a,b,c)             (p)->LockBox(a,b,c)
+#define IDirect3DVolume9_UnlockBox(p)                 (p)->UnlockBox()
+#endif
+
+/*****************************************************************************
+ * IDirect3DSwapChain9 interface
+ */
+#define INTERFACE IDirect3DSwapChain9
+DECLARE_INTERFACE_(IDirect3DSwapChain9,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DSwapChain9 methods ***/
+    STDMETHOD(Present)(THIS_ CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion, DWORD dwFlags) PURE;
+    STDMETHOD(GetFrontBufferData)(THIS_ struct IDirect3DSurface9* pDestSurface) PURE;
+    STDMETHOD(GetBackBuffer)(THIS_ UINT iBackBuffer, D3DBACKBUFFER_TYPE Type, struct IDirect3DSurface9** ppBackBuffer) PURE;
+    STDMETHOD(GetRasterStatus)(THIS_ D3DRASTER_STATUS* pRasterStatus) PURE;
+    STDMETHOD(GetDisplayMode)(THIS_ D3DDISPLAYMODE* pMode) PURE;
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(GetPresentParameters)(THIS_ D3DPRESENT_PARAMETERS* pPresentationParameters) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DSwapChain9_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DSwapChain9_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IDirect3DSwapChain9_Release(p)                   (p)->lpVtbl->Release(p)
+/*** IDirect3DSwapChain9 methods ***/
+#define IDirect3DSwapChain9_Present(p,a,b,c,d,e)         (p)->lpVtbl->Present(p,a,b,c,d,e)
+#define IDirect3DSwapChain9_GetFrontBufferData(p,a)      (p)->lpVtbl->GetFrontBufferData(p,a)
+#define IDirect3DSwapChain9_GetBackBuffer(p,a,b,c)       (p)->lpVtbl->GetBackBuffer(p,a,b,c)
+#define IDirect3DSwapChain9_GetRasterStatus(p,a)         (p)->lpVtbl->GetRasterStatus(p,a)
+#define IDirect3DSwapChain9_GetDisplayMode(p,a)          (p)->lpVtbl->GetDisplayMode(p,a)
+#define IDirect3DSwapChain9_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DSwapChain9_GetPresentParameters(p,a)    (p)->lpVtbl->GetPresentParameters(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DSwapChain9_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
+#define IDirect3DSwapChain9_AddRef(p)                    (p)->AddRef()
+#define IDirect3DSwapChain9_Release(p)                   (p)->Release()
+/*** IDirect3DSwapChain9 methods ***/
+#define IDirect3DSwapChain9_Present(p,a,b,c,d,e)         (p)->Present(a,b,c,d,e)
+#define IDirect3DSwapChain9_GetFrontBufferData(p,a)      (p)->GetFrontBufferData(a)
+#define IDirect3DSwapChain9_GetBackBuffer(p,a,b,c)       (p)->GetBackBuffer(a,b,c)
+#define IDirect3DSwapChain9_GetRasterStatus(p,a)         (p)->GetRasterStatus(a)
+#define IDirect3DSwapChain9_GetDisplayMode(p,a)          (p)->GetDisplayMode(a)
+#define IDirect3DSwapChain9_GetDevice(p,a)               (p)->GetDevice(a)
+#define IDirect3DSwapChain9_GetPresentParameters(p,a)    (p)->GetPresentParameters(a)
+#endif
+
+/*****************************************************************************
+ * IDirect3DResource9 interface
+ */
+#define INTERFACE IDirect3DResource9
+DECLARE_INTERFACE_(IDirect3DResource9,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DResource9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
+    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
+    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
+    STDMETHOD_(void, PreLoad)(THIS) PURE;
+    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DResource9_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DResource9_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IDirect3DResource9_Release(p)                   (p)->lpVtbl->Release(p)
+/*** IDirect3DResource9 methods ***/
+#define IDirect3DResource9_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DResource9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DResource9_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DResource9_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DResource9_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DResource9_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
+#define IDirect3DResource9_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
+#define IDirect3DResource9_GetType(p)                   (p)->lpVtbl->GetType(p)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DResource9_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
+#define IDirect3DResource9_AddRef(p)                    (p)->AddRef()
+#define IDirect3DResource9_Release(p)                   (p)->Release()
+/*** IDirect3DResource9 methods ***/
+#define IDirect3DResource9_GetDevice(p,a)               (p)->GetDevice(a)
+#define IDirect3DResource9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DResource9_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
+#define IDirect3DResource9_FreePrivateData(p,a)         (p)->FreePrivateData(a)
+#define IDirect3DResource9_SetPriority(p,a)             (p)->SetPriority(a)
+#define IDirect3DResource9_GetPriority(p)               (p)->GetPriority()
+#define IDirect3DResource9_PreLoad(p)                   (p)->PreLoad()
+#define IDirect3DResource9_GetType(p)                   (p)->GetType()
+#endif
+
+/*****************************************************************************
+ * IDirect3DSurface9 interface
+ */
+#define INTERFACE IDirect3DSurface9
+DECLARE_INTERFACE_(IDirect3DSurface9,IDirect3DResource9)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DResource9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
+    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
+    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
+    STDMETHOD_(void, PreLoad)(THIS) PURE;
+    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
+    /*** IDirect3DSurface9 methods ***/
+    STDMETHOD(GetContainer)(THIS_ REFIID riid, void** ppContainer) PURE;
+    STDMETHOD(GetDesc)(THIS_ D3DSURFACE_DESC* pDesc) PURE;
+    STDMETHOD(LockRect)(THIS_ D3DLOCKED_RECT* pLockedRect, CONST RECT* pRect, DWORD Flags) PURE;
+    STDMETHOD(UnlockRect)(THIS) PURE;
+    STDMETHOD(GetDC)(THIS_ HDC* phdc) PURE;
+    STDMETHOD(ReleaseDC)(THIS_ HDC hdc) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DSurface9_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DSurface9_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IDirect3DSurface9_Release(p)                   (p)->lpVtbl->Release(p)
+/*** IDirect3DSurface9 methods: IDirect3DResource9 ***/
+#define IDirect3DSurface9_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DSurface9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DSurface9_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DSurface9_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DSurface9_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DSurface9_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
+#define IDirect3DSurface9_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
+#define IDirect3DSurface9_GetType(p)                   (p)->lpVtbl->GetType(p)
+/*** IDirect3DSurface9 methods ***/
+#define IDirect3DSurface9_GetContainer(p,a,b)          (p)->lpVtbl->GetContainer(p,a,b)
+#define IDirect3DSurface9_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
+#define IDirect3DSurface9_LockRect(p,a,b,c)            (p)->lpVtbl->LockRect(p,a,b,c)
+#define IDirect3DSurface9_UnlockRect(p)                (p)->lpVtbl->UnlockRect(p)
+#define IDirect3DSurface9_GetDC(p,a)                   (p)->lpVtbl->GetDC(p,a)
+#define IDirect3DSurface9_ReleaseDC(p,a)               (p)->lpVtbl->ReleaseDC(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DSurface9_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
+#define IDirect3DSurface9_AddRef(p)                    (p)->AddRef()
+#define IDirect3DSurface9_Release(p)                   (p)->Release()
+/*** IDirect3DSurface9 methods: IDirect3DResource9 ***/
+#define IDirect3DSurface9_GetDevice(p,a)               (p)->GetDevice(a)
+#define IDirect3DSurface9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DSurface9_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
+#define IDirect3DSurface9_FreePrivateData(p,a)         (p)->FreePrivateData(a)
+#define IDirect3DSurface9_SetPriority(p,a)             (p)->SetPriority(a)
+#define IDirect3DSurface9_GetPriority(p)               (p)->GetPriority()
+#define IDirect3DSurface9_PreLoad(p)                   (p)->PreLoad()
+#define IDirect3DSurface9_GetType(p)                   (p)->GetType()
+/*** IDirect3DSurface9 methods ***/
+#define IDirect3DSurface9_GetContainer(p,a,b)          (p)->GetContainer(a,b)
+#define IDirect3DSurface9_GetDesc(p,a)                 (p)->GetDesc(a)
+#define IDirect3DSurface9_LockRect(p,a,b,c)            (p)->LockRect(a,b,c)
+#define IDirect3DSurface9_UnlockRect(p)                (p)->UnlockRect()
+#define IDirect3DSurface9_GetDC(p,a)                   (p)->GetDC(a)
+#define IDirect3DSurface9_ReleaseDC(p,a)               (p)->ReleaseDC(a)
+#endif
+
+/*****************************************************************************
+ * IDirect3DVertexBuffer9 interface
+ */
+#define INTERFACE IDirect3DVertexBuffer9
+DECLARE_INTERFACE_(IDirect3DVertexBuffer9,IDirect3DResource9)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DResource9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
+    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
+    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
+    STDMETHOD_(void, PreLoad)(THIS) PURE;
+    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
+    /*** IDirect3DVertexBuffer9 methods ***/
+    STDMETHOD(Lock)(THIS_ UINT OffsetToLock, UINT SizeToLock, void** ppbData, DWORD Flags) PURE;
+    STDMETHOD(Unlock)(THIS) PURE;
+    STDMETHOD(GetDesc)(THIS_ D3DVERTEXBUFFER_DESC* pDesc) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DVertexBuffer9_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVertexBuffer9_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IDirect3DVertexBuffer9_Release(p)                   (p)->lpVtbl->Release(p)
+/*** IDirect3DVertexBuffer9 methods: IDirect3DResource9 ***/
+#define IDirect3DVertexBuffer9_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DVertexBuffer9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DVertexBuffer9_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DVertexBuffer9_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DVertexBuffer9_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DVertexBuffer9_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
+#define IDirect3DVertexBuffer9_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
+#define IDirect3DVertexBuffer9_GetType(p)                   (p)->lpVtbl->GetType(p)
+/*** IDirect3DVertexBuffer9 methods ***/
+#define IDirect3DVertexBuffer9_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirect3DVertexBuffer9_Unlock(p)                    (p)->lpVtbl->Unlock(p)
+#define IDirect3DVertexBuffer9_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DVertexBuffer9_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
+#define IDirect3DVertexBuffer9_AddRef(p)                    (p)->AddRef()
+#define IDirect3DVertexBuffer9_Release(p)                   (p)->Release()
+/*** IDirect3DVertexBuffer9 methods: IDirect3DResource9 ***/
+#define IDirect3DVertexBuffer9_GetDevice(p,a)               (p)->GetDevice(a)
+#define IDirect3DVertexBuffer9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DVertexBuffer9_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
+#define IDirect3DVertexBuffer9_FreePrivateData(p,a)         (p)->FreePrivateData(a)
+#define IDirect3DVertexBuffer9_SetPriority(p,a)             (p)->SetPriority(a)
+#define IDirect3DVertexBuffer9_GetPriority(p)               (p)->GetPriority()
+#define IDirect3DVertexBuffer9_PreLoad(p)                   (p)->PreLoad()
+#define IDirect3DVertexBuffer9_GetType(p)                   (p)->GetType()
+/*** IDirect3DVertexBuffer9 methods ***/
+#define IDirect3DVertexBuffer9_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
+#define IDirect3DVertexBuffer9_Unlock(p)                    (p)->Unlock()
+#define IDirect3DVertexBuffer9_GetDesc(p,a)                 (p)->GetDesc(a)
+#endif
+
+/*****************************************************************************
+ * IDirect3DIndexBuffer9 interface
+ */
+#define INTERFACE IDirect3DIndexBuffer9
+DECLARE_INTERFACE_(IDirect3DIndexBuffer9,IDirect3DResource9)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DResource9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
+    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
+    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
+    STDMETHOD_(void, PreLoad)(THIS) PURE;
+    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
+    /*** IDirect3DIndexBuffer9 methods ***/
+    STDMETHOD(Lock)(THIS_ UINT OffsetToLock, UINT SizeToLock, void** ppbData, DWORD Flags) PURE;
+    STDMETHOD(Unlock)(THIS) PURE;
+    STDMETHOD(GetDesc)(THIS_ D3DINDEXBUFFER_DESC* pDesc) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DIndexBuffer9_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DIndexBuffer9_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IDirect3DIndexBuffer9_Release(p)                   (p)->lpVtbl->Release(p)
+/*** IDirect3DIndexBuffer9 methods: IDirect3DResource9 ***/
+#define IDirect3DIndexBuffer9_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DIndexBuffer9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DIndexBuffer9_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DIndexBuffer9_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DIndexBuffer9_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DIndexBuffer9_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
+#define IDirect3DIndexBuffer9_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
+#define IDirect3DIndexBuffer9_GetType(p)                   (p)->lpVtbl->GetType(p)
+/*** IDirect3DIndexBuffer9 methods ***/
+#define IDirect3DIndexBuffer9_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirect3DIndexBuffer9_Unlock(p)                    (p)->lpVtbl->Unlock(p)
+#define IDirect3DIndexBuffer9_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DIndexBuffer9_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
+#define IDirect3DIndexBuffer9_AddRef(p)                    (p)->AddRef()
+#define IDirect3DIndexBuffer9_Release(p)                   (p)->Release()
+/*** IDirect3DIndexBuffer9 methods: IDirect3DResource9 ***/
+#define IDirect3DIndexBuffer9_GetDevice(p,a)               (p)->GetDevice(a)
+#define IDirect3DIndexBuffer9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DIndexBuffer9_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
+#define IDirect3DIndexBuffer9_FreePrivateData(p,a)         (p)->FreePrivateData(a)
+#define IDirect3DIndexBuffer9_SetPriority(p,a)             (p)->SetPriority(a)
+#define IDirect3DIndexBuffer9_GetPriority(p)               (p)->GetPriority()
+#define IDirect3DIndexBuffer9_PreLoad(p)                   (p)->PreLoad()
+#define IDirect3DIndexBuffer9_GetType(p)                   (p)->GetType()
+/*** IDirect3DIndexBuffer9 methods ***/
+#define IDirect3DIndexBuffer9_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
+#define IDirect3DIndexBuffer9_Unlock(p)                    (p)->Unlock()
+#define IDirect3DIndexBuffer9_GetDesc(p,a)                 (p)->GetDesc(a)
+#endif
+
+/*****************************************************************************
+ * IDirect3DBaseTexture9 interface
+ */
+#define INTERFACE IDirect3DBaseTexture9
+DECLARE_INTERFACE_(IDirect3DBaseTexture9,IDirect3DResource9)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DResource9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
+    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
+    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
+    STDMETHOD_(void, PreLoad)(THIS) PURE;
+    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
+    /*** IDirect3DBaseTexture9 methods ***/
+    STDMETHOD_(DWORD, SetLOD)(THIS_ DWORD LODNew) PURE;
+    STDMETHOD_(DWORD, GetLOD)(THIS) PURE;
+    STDMETHOD_(DWORD, GetLevelCount)(THIS) PURE;
+    STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE FilterType) PURE;
+    STDMETHOD_(D3DTEXTUREFILTERTYPE, GetAutoGenFilterType)(THIS) PURE;
+    STDMETHOD_(void, GenerateMipSubLevels)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DBaseTexture9_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DBaseTexture9_AddRef(p)              (p)->lpVtbl->AddRef(p)
+#define IDirect3DBaseTexture9_Release(p)             (p)->lpVtbl->Release(p)
+/*** IDirect3DBaseTexture9 methods: IDirect3DResource9 ***/
+#define IDirect3DBaseTexture9_GetDevice(p,a)             (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DBaseTexture9_SetPrivateData(p,a,b,c,d)  (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DBaseTexture9_GetPrivateData(p,a,b,c)    (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DBaseTexture9_FreePrivateData(p,a)       (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DBaseTexture9_SetPriority(p,a)           (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DBaseTexture9_GetPriority(p)             (p)->lpVtbl->GetPriority(p)
+#define IDirect3DBaseTexture9_PreLoad(p)                 (p)->lpVtbl->PreLoad(p)
+#define IDirect3DBaseTexture9_GetType(p)                 (p)->lpVtbl->GetType(p)
+/*** IDirect3DBaseTexture9 methods ***/
+#define IDirect3DBaseTexture9_SetLOD(p,a)                (p)->lpVtbl->SetLOD(p,a)
+#define IDirect3DBaseTexture9_GetLOD(p)                  (p)->lpVtbl->GetLOD(p)
+#define IDirect3DBaseTexture9_GetLevelCount(p)           (p)->lpVtbl->GetLevelCount(p)
+#define IDirect3DBaseTexture9_SetAutoGenFilterType(p,a)  (p)->lpVtbl->SetAutoGenFilterType(p,a)
+#define IDirect3DBaseTexture9_GetAutoGenFilterType(p)    (p)->lpVtbl->GetAutoGenFilterType(p)
+#define IDirect3DBaseTexture9_GenerateMipSubLevels(p)    (p)->lpVtbl->GenerateMipSubLevels(p)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DBaseTexture9_QueryInterface(p,a,b)  (p)->QueryInterface(a,b)
+#define IDirect3DBaseTexture9_AddRef(p)              (p)->AddRef()
+#define IDirect3DBaseTexture9_Release(p)             (p)->Release()
+/*** IDirect3DBaseTexture9 methods: IDirect3DResource9 ***/
+#define IDirect3DBaseTexture9_GetDevice(p,a)             (p)->GetDevice(a)
+#define IDirect3DBaseTexture9_SetPrivateData(p,a,b,c,d)  (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DBaseTexture9_GetPrivateData(p,a,b,c)    (p)->GetPrivateData(a,b,c)
+#define IDirect3DBaseTexture9_FreePrivateData(p,a)       (p)->FreePrivateData(a)
+#define IDirect3DBaseTexture9_SetPriority(p,a)           (p)->SetPriority(a)
+#define IDirect3DBaseTexture9_GetPriority(p)             (p)->GetPriority()
+#define IDirect3DBaseTexture9_PreLoad(p)                 (p)->PreLoad()
+#define IDirect3DBaseTexture9_GetType(p)                 (p)->GetType()
+/*** IDirect3DBaseTexture9 methods ***/
+#define IDirect3DBaseTexture9_SetLOD(p,a)                (p)->SetLOD(a)
+#define IDirect3DBaseTexture9_GetLOD(p)                  (p)->GetLOD()
+#define IDirect3DBaseTexture9_GetLevelCount(p)           (p)->GetLevelCount()
+#define IDirect3DBaseTexture9_SetAutoGenFilterType(p,a)  (p)->SetAutoGenFilterType(a)
+#define IDirect3DBaseTexture9_GetAutoGenFilterType(p)    (p)->GetAutoGenFilterType()
+#define IDirect3DBaseTexture9_GenerateMipSubLevels(p)    (p)->GenerateMipSubLevels()
+#endif
+
+/*****************************************************************************
+ * IDirect3DCubeTexture9 interface
+ */
+#define INTERFACE IDirect3DCubeTexture9
+DECLARE_INTERFACE_(IDirect3DCubeTexture9,IDirect3DBaseTexture9)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DResource9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
+    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
+    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
+    STDMETHOD_(void, PreLoad)(THIS) PURE;
+    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
+    /*** IDirect3DBaseTexture9 methods ***/
+    STDMETHOD_(DWORD, SetLOD)(THIS_ DWORD LODNew) PURE;
+    STDMETHOD_(DWORD, GetLOD)(THIS) PURE;
+    STDMETHOD_(DWORD, GetLevelCount)(THIS) PURE;
+    STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE FilterType) PURE;
+    STDMETHOD_(D3DTEXTUREFILTERTYPE, GetAutoGenFilterType)(THIS) PURE;
+    STDMETHOD_(void, GenerateMipSubLevels)(THIS) PURE;
+    /*** IDirect3DCubeTexture9 methods ***/
+    STDMETHOD(GetLevelDesc)(THIS_ UINT Level,D3DSURFACE_DESC* pDesc) PURE;
+    STDMETHOD(GetCubeMapSurface)(THIS_ D3DCUBEMAP_FACES FaceType, UINT Level, IDirect3DSurface9** ppCubeMapSurface) PURE;
+    STDMETHOD(LockRect)(THIS_ D3DCUBEMAP_FACES FaceType, UINT Level, D3DLOCKED_RECT* pLockedRect, CONST RECT* pRect, DWORD Flags) PURE;
+    STDMETHOD(UnlockRect)(THIS_ D3DCUBEMAP_FACES FaceType, UINT Level) PURE;
+    STDMETHOD(AddDirtyRect)(THIS_ D3DCUBEMAP_FACES FaceType, CONST RECT* pDirtyRect) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DCubeTexture9_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DCubeTexture9_AddRef(p)                   (p)->lpVtbl->AddRef(p)
+#define IDirect3DCubeTexture9_Release(p)                  (p)->lpVtbl->Release(p)
+/*** IDirect3DCubeTexture9 methods: IDirect3DResource9 ***/
+#define IDirect3DCubeTexture9_GetDevice(p,a)              (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DCubeTexture9_SetPrivateData(p,a,b,c,d)   (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DCubeTexture9_GetPrivateData(p,a,b,c)     (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DCubeTexture9_FreePrivateData(p,a)        (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DCubeTexture9_SetPriority(p,a)            (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DCubeTexture9_GetPriority(p)              (p)->lpVtbl->GetPriority(p)
+#define IDirect3DCubeTexture9_PreLoad(p)                  (p)->lpVtbl->PreLoad(p)
+#define IDirect3DCubeTexture9_GetType(p)                  (p)->lpVtbl->GetType(p)
+/*** IDirect3DCubeTexture9 methods: IDirect3DBaseTexture9 ***/
+#define IDirect3DCubeTexture9_SetLOD(p,a)                 (p)->lpVtbl->SetLOD(p,a)
+#define IDirect3DCubeTexture9_GetLOD(p)                   (p)->lpVtbl->GetLOD(p)
+#define IDirect3DCubeTexture9_GetLevelCount(p)            (p)->lpVtbl->GetLevelCount(p)
+#define IDirect3DCubeTexture9_SetAutoGenFilterType(p,a)   (p)->lpVtbl->SetAutoGenFilterType(p,a)
+#define IDirect3DCubeTexture9_GetAutoGenFilterType(p)     (p)->lpVtbl->GetAutoGenFilterType(p)
+#define IDirect3DCubeTexture9_GenerateMipSubLevels(p)     (p)->lpVtbl->GenerateMipSubLevels(p)
+/*** IDirect3DCubeTexture9 methods ***/
+#define IDirect3DCubeTexture9_GetLevelDesc(p,a,b)         (p)->lpVtbl->GetLevelDesc(p,a,b)
+#define IDirect3DCubeTexture9_GetCubeMapSurface(p,a,b,c)  (p)->lpVtbl->GetCubeMapSurface(p,a,b,c)
+#define IDirect3DCubeTexture9_LockRect(p,a,b,c,d,e)       (p)->lpVtbl->LockRect(p,a,b,c,d,e)
+#define IDirect3DCubeTexture9_UnlockRect(p,a,b)           (p)->lpVtbl->UnlockRect(p,a,b)
+#define IDirect3DCubeTexture9_AddDirtyRect(p,a,b)         (p)->lpVtbl->AddDirtyRect(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DCubeTexture9_QueryInterface(p,a,b)       (p)->QueryInterface(a,b)
+#define IDirect3DCubeTexture9_AddRef(p)                   (p)->AddRef()
+#define IDirect3DCubeTexture9_Release(p)                  (p)->Release()
+/*** IDirect3DCubeTexture9 methods: IDirect3DResource9 ***/
+#define IDirect3DCubeTexture9_GetDevice(p,a)              (p)->GetDevice(a)
+#define IDirect3DCubeTexture9_SetPrivateData(p,a,b,c,d)   (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DCubeTexture9_GetPrivateData(p,a,b,c)     (p)->GetPrivateData(a,b,c)
+#define IDirect3DCubeTexture9_FreePrivateData(p,a)        (p)->FreePrivateData(a)
+#define IDirect3DCubeTexture9_SetPriority(p,a)            (p)->SetPriority(a)
+#define IDirect3DCubeTexture9_GetPriority(p)              (p)->GetPriority()
+#define IDirect3DCubeTexture9_PreLoad(p)                  (p)->PreLoad()
+#define IDirect3DCubeTexture9_GetType(p)                  (p)->GetType()
+/*** IDirect3DCubeTexture9 methods: IDirect3DBaseTexture9 ***/
+#define IDirect3DCubeTexture9_SetLOD(p,a)                 (p)->SetLOD(a)
+#define IDirect3DCubeTexture9_GetLOD(p)                   (p)->GetLOD()
+#define IDirect3DCubeTexture9_GetLevelCount(p)            (p)->GetLevelCount()
+#define IDirect3DCubeTexture9_SetAutoGenFilterType(p,a)   (p)->SetAutoGenFilterType(a)
+#define IDirect3DCubeTexture9_GetAutoGenFilterType(p)     (p)->GetAutoGenFilterType()
+#define IDirect3DCubeTexture9_GenerateMipSubLevels(p)     (p)->GenerateMipSubLevels()
+/*** IDirect3DCubeTexture9 methods ***/
+#define IDirect3DCubeTexture9_GetLevelDesc(p,a,b)         (p)->GetLevelDesc(a,b)
+#define IDirect3DCubeTexture9_GetCubeMapSurface(p,a,b,c)  (p)->GetCubeMapSurface(a,b,c)
+#define IDirect3DCubeTexture9_LockRect(p,a,b,c,d,e)       (p)->LockRect(a,b,c,d,e)
+#define IDirect3DCubeTexture9_UnlockRect(p,a,b)           (p)->UnlockRect(a,b)
+#define IDirect3DCubeTexture9_AddDirtyRect(p,a,b)         (p)->AddDirtyRect(a,b)
+#endif
+
+/*****************************************************************************
+ * IDirect3DTexture9 interface
+ */
+#define INTERFACE IDirect3DTexture9
+DECLARE_INTERFACE_(IDirect3DTexture9,IDirect3DBaseTexture9)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DResource9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
+    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
+    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
+    STDMETHOD_(void, PreLoad)(THIS) PURE;
+    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
+    /*** IDirect3DBaseTexture9 methods ***/
+    STDMETHOD_(DWORD, SetLOD)(THIS_ DWORD LODNew) PURE;
+    STDMETHOD_(DWORD, GetLOD)(THIS) PURE;
+    STDMETHOD_(DWORD, GetLevelCount)(THIS) PURE;
+    STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE FilterType) PURE;
+    STDMETHOD_(D3DTEXTUREFILTERTYPE, GetAutoGenFilterType)(THIS) PURE;
+    STDMETHOD_(void, GenerateMipSubLevels)(THIS) PURE;
+    /*** IDirect3DTexture9 methods ***/
+    STDMETHOD(GetLevelDesc)(THIS_ UINT Level, D3DSURFACE_DESC* pDesc) PURE;
+    STDMETHOD(GetSurfaceLevel)(THIS_ UINT Level, IDirect3DSurface9** ppSurfaceLevel) PURE;
+    STDMETHOD(LockRect)(THIS_ UINT Level, D3DLOCKED_RECT* pLockedRect, CONST RECT* pRect, DWORD Flags) PURE;
+    STDMETHOD(UnlockRect)(THIS_ UINT Level) PURE;
+    STDMETHOD(AddDirtyRect)(THIS_ CONST RECT* pDirtyRect) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DTexture9_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DTexture9_AddRef(p)                  (p)->lpVtbl->AddRef(p)
+#define IDirect3DTexture9_Release(p)                 (p)->lpVtbl->Release(p)
+/*** IDirect3DTexture9 methods: IDirect3DResource9 ***/
+#define IDirect3DTexture9_GetDevice(p,a)             (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DTexture9_SetPrivateData(p,a,b,c,d)  (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DTexture9_GetPrivateData(p,a,b,c)    (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DTexture9_FreePrivateData(p,a)       (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DTexture9_SetPriority(p,a)           (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DTexture9_GetPriority(p)             (p)->lpVtbl->GetPriority(p)
+#define IDirect3DTexture9_PreLoad(p)                 (p)->lpVtbl->PreLoad(p)
+#define IDirect3DTexture9_GetType(p)                 (p)->lpVtbl->GetType(p)
+/*** IDirect3DTexture9 methods: IDirect3DBaseTexture9 ***/
+#define IDirect3DTexture9_SetLOD(p,a)                (p)->lpVtbl->SetLOD(p,a)
+#define IDirect3DTexture9_GetLOD(p)                  (p)->lpVtbl->GetLOD(p)
+#define IDirect3DTexture9_GetLevelCount(p)           (p)->lpVtbl->GetLevelCount(p)
+#define IDirect3DTexture9_SetAutoGenFilterType(p,a)  (p)->lpVtbl->SetAutoGenFilterType(p,a)
+#define IDirect3DTexture9_GetAutoGenFilterType(p)    (p)->lpVtbl->GetAutoGenFilterType(p)
+#define IDirect3DTexture9_GenerateMipSubLevels(p)    (p)->lpVtbl->GenerateMipSubLevels(p)
+/*** IDirect3DTexture9 methods ***/
+#define IDirect3DTexture9_GetLevelDesc(p,a,b)        (p)->lpVtbl->GetLevelDesc(p,a,b)
+#define IDirect3DTexture9_GetSurfaceLevel(p,a,b)     (p)->lpVtbl->GetSurfaceLevel(p,a,b)
+#define IDirect3DTexture9_LockRect(p,a,b,c,d)        (p)->lpVtbl->LockRect(p,a,b,c,d)
+#define IDirect3DTexture9_UnlockRect(p,a)            (p)->lpVtbl->UnlockRect(p,a)
+#define IDirect3DTexture9_AddDirtyRect(p,a)          (p)->lpVtbl->AddDirtyRect(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DTexture9_QueryInterface(p,a,b)      (p)->QueryInterface(a,b)
+#define IDirect3DTexture9_AddRef(p)                  (p)->AddRef()
+#define IDirect3DTexture9_Release(p)                 (p)->Release()
+/*** IDirect3DTexture9 methods: IDirect3DResource9 ***/
+#define IDirect3DTexture9_GetDevice(p,a)             (p)->GetDevice(a)
+#define IDirect3DTexture9_SetPrivateData(p,a,b,c,d)  (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DTexture9_GetPrivateData(p,a,b,c)    (p)->GetPrivateData(a,b,c)
+#define IDirect3DTexture9_FreePrivateData(p,a)       (p)->FreePrivateData(a)
+#define IDirect3DTexture9_SetPriority(p,a)           (p)->SetPriority(a)
+#define IDirect3DTexture9_GetPriority(p)             (p)->GetPriority()
+#define IDirect3DTexture9_PreLoad(p)                 (p)->PreLoad()
+#define IDirect3DTexture9_GetType(p)                 (p)->GetType()
+/*** IDirect3DTexture9 methods: IDirect3DBaseTexture9 ***/
+#define IDirect3DTexture9_SetLOD(p,a)                (p)->SetLOD(a)
+#define IDirect3DTexture9_GetLOD(p)                  (p)->GetLOD()
+#define IDirect3DTexture9_GetLevelCount(p)           (p)->GetLevelCount()
+#define IDirect3DTexture9_SetAutoGenFilterType(p,a)  (p)->SetAutoGenFilterType(a)
+#define IDirect3DTexture9_GetAutoGenFilterType(p)    (p)->GetAutoGenFilterType()
+#define IDirect3DTexture9_GenerateMipSubLevels(p)    (p)->GenerateMipSubLevels()
+/*** IDirect3DTexture9 methods ***/
+#define IDirect3DTexture9_GetLevelDesc(p,a,b)        (p)->GetLevelDesc(a,b)
+#define IDirect3DTexture9_GetSurfaceLevel(p,a,b)     (p)->GetSurfaceLevel(a,b)
+#define IDirect3DTexture9_LockRect(p,a,b,c,d)        (p)->LockRect(a,b,c,d)
+#define IDirect3DTexture9_UnlockRect(p,a)            (p)->UnlockRect(a)
+#define IDirect3DTexture9_AddDirtyRect(p,a)          (p)->AddDirtyRect(a)
+#endif
+
+/*****************************************************************************
+ * IDirect3DVolumeTexture9 interface
+ */
+#define INTERFACE IDirect3DVolumeTexture9
+DECLARE_INTERFACE_(IDirect3DVolumeTexture9,IDirect3DBaseTexture9)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DResource9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
+    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
+    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
+    STDMETHOD_(void, PreLoad)(THIS) PURE;
+    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
+    /*** IDirect3DBaseTexture9 methods ***/
+    STDMETHOD_(DWORD, SetLOD)(THIS_ DWORD LODNew) PURE;
+    STDMETHOD_(DWORD, GetLOD)(THIS) PURE;
+    STDMETHOD_(DWORD, GetLevelCount)(THIS) PURE;
+    STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE FilterType) PURE;
+    STDMETHOD_(D3DTEXTUREFILTERTYPE, GetAutoGenFilterType)(THIS) PURE;
+    STDMETHOD_(void, GenerateMipSubLevels)(THIS) PURE;
+    /*** IDirect3DVolumeTexture9 methods ***/
+    STDMETHOD(GetLevelDesc)(THIS_ UINT Level, D3DVOLUME_DESC *pDesc) PURE;
+    STDMETHOD(GetVolumeLevel)(THIS_ UINT Level, IDirect3DVolume9** ppVolumeLevel) PURE;
+    STDMETHOD(LockBox)(THIS_ UINT Level, D3DLOCKED_BOX* pLockedVolume, CONST D3DBOX* pBox, DWORD Flags) PURE;
+    STDMETHOD(UnlockBox)(THIS_ UINT Level) PURE;
+    STDMETHOD(AddDirtyBox)(THIS_ CONST D3DBOX* pDirtyBox) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DVolumeTexture9_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVolumeTexture9_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DVolumeTexture9_Release(p) (p)->lpVtbl->Release(p)
+/*** IDirect3DVolumeTexture9 methods: IDirect3DResource9 ***/
+#define IDirect3DVolumeTexture9_GetDevice(p,a) (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DVolumeTexture9_SetPrivateData(p,a,b,c,d) (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DVolumeTexture9_GetPrivateData(p,a,b,c) (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DVolumeTexture9_FreePrivateData(p,a) (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DVolumeTexture9_SetPriority(p,a) (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DVolumeTexture9_GetPriority(p) (p)->lpVtbl->GetPriority(p)
+#define IDirect3DVolumeTexture9_PreLoad(p) (p)->lpVtbl->PreLoad(p)
+#define IDirect3DVolumeTexture9_GetType(p) (p)->lpVtbl->GetType(p)
+/*** IDirect3DVolumeTexture9 methods: IDirect3DBaseTexture9 ***/
+#define IDirect3DVolumeTexture9_SetLOD(p,a) (p)->lpVtbl->SetLOD(p,a)
+#define IDirect3DVolumeTexture9_GetLOD(p) (p)->lpVtbl->GetLOD(p)
+#define IDirect3DVolumeTexture9_GetLevelCount(p) (p)->lpVtbl->GetLevelCount(p)
+#define IDirect3DVolumeTexture9_SetAutoGenFilterType(p,a) (p)->lpVtbl->SetAutoGenFilterType(p,a)
+#define IDirect3DVolumeTexture9_GetAutoGenFilterType(p) (p)->lpVtbl->GetAutoGenFilterType(p)
+#define IDirect3DVolumeTexture9_GenerateMipSubLevels(p) (p)->lpVtbl->GenerateMipSubLevels(p)
+/*** IDirect3DVolumeTexture9 methods ***/
+#define IDirect3DVolumeTexture9_GetLevelDesc(p,a,b) (p)->lpVtbl->GetLevelDesc(p,a,b)
+#define IDirect3DVolumeTexture9_GetVolumeLevel(p,a,b) (p)->lpVtbl->GetVolumeLevel(p,a,b)
+#define IDirect3DVolumeTexture9_LockBox(p,a,b,c,d) (p)->lpVtbl->LockBox(p,a,b,c,d)
+#define IDirect3DVolumeTexture9_UnlockBox(p,a) (p)->lpVtbl->UnlockBox(p,a)
+#define IDirect3DVolumeTexture9_AddDirtyBox(p,a) (p)->lpVtbl->AddDirtyBox(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DVolumeTexture9_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DVolumeTexture9_AddRef(p) (p)->AddRef()
+#define IDirect3DVolumeTexture9_Release(p) (p)->Release()
+/*** IDirect3DVolumeTexture9 methods: IDirect3DResource9 ***/
+#define IDirect3DVolumeTexture9_GetDevice(p,a) (p)->GetDevice(a)
+#define IDirect3DVolumeTexture9_SetPrivateData(p,a,b,c,d) (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DVolumeTexture9_GetPrivateData(p,a,b,c) (p)->GetPrivateData(a,b,c)
+#define IDirect3DVolumeTexture9_FreePrivateData(p,a) (p)->FreePrivateData(a)
+#define IDirect3DVolumeTexture9_SetPriority(p,a) (p)->SetPriority(a)
+#define IDirect3DVolumeTexture9_GetPriority(p) (p)->GetPriority()
+#define IDirect3DVolumeTexture9_PreLoad(p) (p)->PreLoad()
+#define IDirect3DVolumeTexture9_GetType(p) (p)->GetType()
+/*** IDirect3DVolumeTexture9 methods: IDirect3DBaseTexture9 ***/
+#define IDirect3DVolumeTexture9_SetLOD(p,a) (p)->SetLOD(a)
+#define IDirect3DVolumeTexture9_GetLOD(p) (p)->GetLOD()
+#define IDirect3DVolumeTexture9_GetLevelCount(p) (p)->GetLevelCount()
+#define IDirect3DVolumeTexture9_SetAutoGenFilterType(p,a) (p)->SetAutoGenFilterType(a)
+#define IDirect3DVolumeTexture9_GetAutoGenFilterType(p) (p)->GetAutoGenFilterType()
+#define IDirect3DVolumeTexture9_GenerateMipSubLevels(p) (p)->GenerateMipSubLevels()
+/*** IDirect3DVolumeTexture9 methods ***/
+#define IDirect3DVolumeTexture9_GetLevelDesc(p,a,b) (p)->GetLevelDesc(a,b)
+#define IDirect3DVolumeTexture9_GetVolumeLevel(p,a,b) (p)->GetVolumeLevel(a,b)
+#define IDirect3DVolumeTexture9_LockBox(p,a,b,c,d) (p)->LockBox(a,b,c,d)
+#define IDirect3DVolumeTexture9_UnlockBox(p,a) (p)->UnlockBox(a)
+#define IDirect3DVolumeTexture9_AddDirtyBox(p,a) (p)->AddDirtyBox(a)
+#endif
+
+/*****************************************************************************
+ * IDirect3DVertexDeclaration9 interface
+ */
+#define INTERFACE IDirect3DVertexDeclaration9
+DECLARE_INTERFACE_(IDirect3DVertexDeclaration9,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DVertexDeclaration9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(GetDeclaration)(THIS_ D3DVERTEXELEMENT9*, UINT* pNumElements) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DVertexDeclaration9_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVertexDeclaration9_AddRef(p)              (p)->lpVtbl->AddRef(p)
+#define IDirect3DVertexDeclaration9_Release(p)             (p)->lpVtbl->Release(p)
+/*** IDirect3DVertexShader9 methods ***/
+#define IDirect3DVertexDeclaration9_GetDevice(p,a)         (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DVertexDeclaration9_GetDeclaration(p,a,b)  (p)->lpVtbl->GetDeclaration(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DVertexDeclaration9_QueryInterface(p,a,b)  (p)->QueryInterface(a,b)
+#define IDirect3DVertexDeclaration9_AddRef(p)              (p)->AddRef()
+#define IDirect3DVertexDeclaration9_Release(p)             (p)->Release()
+/*** IDirect3DVertexShader9 methods ***/
+#define IDirect3DVertexDeclaration9_GetDevice(p,a)         (p)->GetDevice(a)
+#define IDirect3DVertexDeclaration9_GetDeclaration(p,a,b)  (p)->GetDeclaration(a,b)
+#endif
+
+/*****************************************************************************
+ * IDirect3DVertexShader9 interface
+ */
+#define INTERFACE IDirect3DVertexShader9
+DECLARE_INTERFACE_(IDirect3DVertexShader9,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DVertexShader9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(GetFunction)(THIS_ void*, UINT* pSizeOfData) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DVertexShader9_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVertexShader9_AddRef(p)              (p)->lpVtbl->AddRef(p)
+#define IDirect3DVertexShader9_Release(p)             (p)->lpVtbl->Release(p)
+/*** IDirect3DVertexShader9 methods ***/
+#define IDirect3DVertexShader9_GetDevice(p,a)         (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DVertexShader9_GetFunction(p,a,b)     (p)->lpVtbl->GetFunction(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DVertexShader9_QueryInterface(p,a,b)  (p)->QueryInterface(a,b)
+#define IDirect3DVertexShader9_AddRef(p)              (p)->AddRef()
+#define IDirect3DVertexShader9_Release(p)             (p)->Release()
+/*** IDirect3DVertexShader9 methods ***/
+#define IDirect3DVertexShader9_GetDevice(p,a)         (p)->GetDevice(a)
+#define IDirect3DVertexShader9_GetFunction(p,a,b)     (p)->GetFunction(a,b)
+#endif
+
+/*****************************************************************************
+ * IDirect3DPixelShader9 interface
+ */
+#define INTERFACE IDirect3DPixelShader9
+DECLARE_INTERFACE_(IDirect3DPixelShader9,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DPixelShader9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(GetFunction)(THIS_ void*, UINT* pSizeOfData) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DPixelShader9_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DPixelShader9_AddRef(p)              (p)->lpVtbl->AddRef(p)
+#define IDirect3DPixelShader9_Release(p)             (p)->lpVtbl->Release(p)
+/*** IDirect3DPixelShader9 methods ***/
+#define IDirect3DPixelShader9_GetDevice(p,a)         (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DPixelShader9_GetFunction(p,a,b)     (p)->lpVtbl->GetFunction(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DPixelShader9_QueryInterface(p,a,b)  (p)->QueryInterface(a,b)
+#define IDirect3DPixelShader9_AddRef(p)              (p)->AddRef()
+#define IDirect3DPixelShader9_Release(p)             (p)->Release()
+/*** IDirect3DPixelShader9 methods ***/
+#define IDirect3DPixelShader9_GetDevice(p,a)         (p)->GetDevice(a)
+#define IDirect3DPixelShader9_GetFunction(p,a,b)     (p)->GetFunction(a,b)
+#endif
+
+/*****************************************************************************
+ * IDirect3DStateBlock9 interface
+ */
+#define INTERFACE IDirect3DStateBlock9
+DECLARE_INTERFACE_(IDirect3DStateBlock9,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DStateBlock9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(Capture)(THIS) PURE;
+    STDMETHOD(Apply)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DStateBlock9_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DStateBlock9_AddRef(p)              (p)->lpVtbl->AddRef(p)
+#define IDirect3DStateBlock9_Release(p)             (p)->lpVtbl->Release(p)
+/*** IDirect3DStateBlock9 methods ***/
+#define IDirect3DStateBlock9_GetDevice(p,a)         (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DStateBlock9_Capture(p)             (p)->lpVtbl->Capture(p)
+#define IDirect3DStateBlock9_Apply(p)               (p)->lpVtbl->Apply(p)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DStateBlock9_QueryInterface(p,a,b)  (p)->QueryInterface(a,b)
+#define IDirect3DStateBlock9_AddRef(p)              (p)->AddRef()
+#define IDirect3DStateBlock9_Release(p)             (p)->Release()
+/*** IDirect3DStateBlock9 methods ***/
+#define IDirect3DStateBlock9_GetDevice(p,a)         (p)->GetDevice(a)
+#define IDirect3DStateBlock9_Capture(p)             (p)->Capture()
+#define IDirect3DStateBlock9_Apply(p)               (p)->Apply()
+#endif
+
+/*****************************************************************************
+ * IDirect3DQuery9 interface
+ */
+#define INTERFACE IDirect3DQuery9
+DECLARE_INTERFACE_(IDirect3DQuery9,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DQuery9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD_(D3DQUERYTYPE, GetType)(THIS) PURE;
+    STDMETHOD_(DWORD, GetDataSize)(THIS) PURE;
+    STDMETHOD(Issue)(THIS_ DWORD dwIssueFlags) PURE;
+    STDMETHOD(GetData)(THIS_ void* pData, DWORD dwSize, DWORD dwGetDataFlags) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DQuery9_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DQuery9_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DQuery9_Release(p) (p)->lpVtbl->Release(p)
+/*** IDirect3DQuery9 ***/
+#define IDirect3DQuery9_GetDevice(p,a) (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DQuery9_GetType(p) (p)->lpVtbl->GetType(p)
+#define IDirect3DQuery9_GetDataSize(p) (p)->lpVtbl->GetDataSize(p)
+#define IDirect3DQuery9_Issue(p,a) (p)->lpVtbl->Issue(p,a)
+#define IDirect3DQuery9_GetData(p,a,b,c) (p)->lpVtbl->GetData(p,a,b,c)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DQuery9_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DQuery9_AddRef(p) (p)->AddRef()
+#define IDirect3DQuery9_Release(p) (p)->Release()
+/*** IDirect3DQuery9 ***/
+#define IDirect3DQuery9_GetDevice(p,a) (p)->GetDevice(a)
+#define IDirect3DQuery9_GetType(p) (p)->GetType()
+#define IDirect3DQuery9_GetDataSize(p) (p)->GetDataSize()
+#define IDirect3DQuery9_Issue(p,a) (p)->Issue(a)
+#define IDirect3DQuery9_GetData(p,a,b,c) (p)->GetData(a,b,c)
+#endif
+
+/*****************************************************************************
+ * IDirect3DDevice9 interface
+ */
+#define INTERFACE IDirect3DDevice9
+DECLARE_INTERFACE_(IDirect3DDevice9,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DDevice9 methods ***/
+    STDMETHOD(TestCooperativeLevel)(THIS) PURE;
+    STDMETHOD_(UINT, GetAvailableTextureMem)(THIS) PURE;
+    STDMETHOD(EvictManagedResources)(THIS) PURE;
+    STDMETHOD(GetDirect3D)(THIS_ IDirect3D9** ppD3D9) PURE;
+    STDMETHOD(GetDeviceCaps)(THIS_ D3DCAPS9* pCaps) PURE;
+    STDMETHOD(GetDisplayMode)(THIS_ UINT iSwapChain, D3DDISPLAYMODE* pMode) PURE;
+    STDMETHOD(GetCreationParameters)(THIS_ D3DDEVICE_CREATION_PARAMETERS *pParameters) PURE;
+    STDMETHOD(SetCursorProperties)(THIS_ UINT XHotSpot, UINT YHotSpot, IDirect3DSurface9* pCursorBitmap) PURE;
+    STDMETHOD_(void, SetCursorPosition)(THIS_ int X,int Y, DWORD Flags) PURE;
+    STDMETHOD_(BOOL, ShowCursor)(THIS_ BOOL bShow) PURE;
+    STDMETHOD(CreateAdditionalSwapChain)(THIS_ D3DPRESENT_PARAMETERS* pPresentationParameters, IDirect3DSwapChain9** pSwapChain) PURE;
+    STDMETHOD(GetSwapChain)(THIS_ UINT iSwapChain, IDirect3DSwapChain9** pSwapChain) PURE;
+    STDMETHOD_(UINT, GetNumberOfSwapChains)(THIS) PURE;
+    STDMETHOD(Reset)(THIS_ D3DPRESENT_PARAMETERS* pPresentationParameters) PURE;
+    STDMETHOD(Present)(THIS_ CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion) PURE;
+    STDMETHOD(GetBackBuffer)(THIS_ UINT iSwapChain, UINT iBackBuffer, D3DBACKBUFFER_TYPE Type, IDirect3DSurface9** ppBackBuffer) PURE;
+    STDMETHOD(GetRasterStatus)(THIS_ UINT iSwapChain, D3DRASTER_STATUS* pRasterStatus) PURE;
+    STDMETHOD(SetDialogBoxMode)(THIS_ BOOL bEnableDialogs) PURE;
+    STDMETHOD_(void, SetGammaRamp)(THIS_ UINT iSwapChain, DWORD Flags, CONST D3DGAMMARAMP* pRamp) PURE;
+    STDMETHOD_(void, GetGammaRamp)(THIS_ UINT iSwapChain, D3DGAMMARAMP* pRamp) PURE;
+    STDMETHOD(CreateTexture)(THIS_ UINT Width, UINT Height, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DTexture9** ppTexture, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(CreateVolumeTexture)(THIS_ UINT Width, UINT Height, UINT Depth, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DVolumeTexture9** ppVolumeTexture, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(CreateCubeTexture)(THIS_ UINT EdgeLength, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DCubeTexture9** ppCubeTexture, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(CreateVertexBuffer)(THIS_ UINT Length, DWORD Usage, DWORD FVF, D3DPOOL Pool, IDirect3DVertexBuffer9** ppVertexBuffer, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(CreateIndexBuffer)(THIS_ UINT Length, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DIndexBuffer9** ppIndexBuffer, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(CreateRenderTarget)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality, BOOL Lockable, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(CreateDepthStencilSurface)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality, BOOL Discard, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(UpdateSurface)(THIS_ IDirect3DSurface9* pSourceSurface, CONST RECT* pSourceRect, IDirect3DSurface9* pDestinationSurface, CONST POINT* pDestPoint) PURE;
+    STDMETHOD(UpdateTexture)(THIS_ IDirect3DBaseTexture9* pSourceTexture, IDirect3DBaseTexture9* pDestinationTexture) PURE;
+    STDMETHOD(GetRenderTargetData)(THIS_ IDirect3DSurface9* pRenderTarget, IDirect3DSurface9* pDestSurface) PURE;
+    STDMETHOD(GetFrontBufferData)(THIS_ UINT iSwapChain, IDirect3DSurface9* pDestSurface) PURE;
+    STDMETHOD(StretchRect)(THIS_ IDirect3DSurface9* pSourceSurface, CONST RECT* pSourceRect, IDirect3DSurface9* pDestSurface, CONST RECT* pDestRect, D3DTEXTUREFILTERTYPE Filter) PURE;
+    STDMETHOD(ColorFill)(THIS_ IDirect3DSurface9* pSurface, CONST RECT* pRect, D3DCOLOR color) PURE;
+    STDMETHOD(CreateOffscreenPlainSurface)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DPOOL Pool, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(SetRenderTarget)(THIS_ DWORD RenderTargetIndex, IDirect3DSurface9* pRenderTarget) PURE;
+    STDMETHOD(GetRenderTarget)(THIS_ DWORD RenderTargetIndex, IDirect3DSurface9** ppRenderTarget) PURE;
+    STDMETHOD(SetDepthStencilSurface)(THIS_ IDirect3DSurface9* pNewZStencil) PURE;
+    STDMETHOD(GetDepthStencilSurface)(THIS_ IDirect3DSurface9** ppZStencilSurface) PURE;
+    STDMETHOD(BeginScene)(THIS) PURE;
+    STDMETHOD(EndScene)(THIS) PURE;
+    STDMETHOD(Clear)(THIS_ DWORD Count, CONST D3DRECT* pRects, DWORD Flags, D3DCOLOR Color, float Z, DWORD Stencil) PURE;
+    STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX* pMatrix) PURE;
+    STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE State, D3DMATRIX* pMatrix) PURE;
+    STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE, CONST D3DMATRIX*) PURE;
+    STDMETHOD(SetViewport)(THIS_ CONST D3DVIEWPORT9* pViewport) PURE;
+    STDMETHOD(GetViewport)(THIS_ D3DVIEWPORT9* pViewport) PURE;
+    STDMETHOD(SetMaterial)(THIS_ CONST D3DMATERIAL9* pMaterial) PURE;
+    STDMETHOD(GetMaterial)(THIS_ D3DMATERIAL9* pMaterial) PURE;
+    STDMETHOD(SetLight)(THIS_ DWORD Index, CONST D3DLIGHT9*) PURE;
+    STDMETHOD(GetLight)(THIS_ DWORD Index, D3DLIGHT9*) PURE;
+    STDMETHOD(LightEnable)(THIS_ DWORD Index, BOOL Enable) PURE;
+    STDMETHOD(GetLightEnable)(THIS_ DWORD Index, BOOL* pEnable) PURE;
+    STDMETHOD(SetClipPlane)(THIS_ DWORD Index, CONST float* pPlane) PURE;
+    STDMETHOD(GetClipPlane)(THIS_ DWORD Index, float* pPlane) PURE;
+    STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE State, DWORD Value) PURE;
+    STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE State, DWORD* pValue) PURE;
+    STDMETHOD(CreateStateBlock)(THIS_ D3DSTATEBLOCKTYPE Type, IDirect3DStateBlock9** ppSB) PURE;
+    STDMETHOD(BeginStateBlock)(THIS) PURE;
+    STDMETHOD(EndStateBlock)(THIS_ IDirect3DStateBlock9** ppSB) PURE;
+    STDMETHOD(SetClipStatus)(THIS_ CONST D3DCLIPSTATUS9* pClipStatus) PURE;
+    STDMETHOD(GetClipStatus)(THIS_ D3DCLIPSTATUS9* pClipStatus) PURE;
+    STDMETHOD(GetTexture)(THIS_ DWORD Stage, IDirect3DBaseTexture9** ppTexture) PURE;
+    STDMETHOD(SetTexture)(THIS_ DWORD Stage, IDirect3DBaseTexture9* pTexture) PURE;
+    STDMETHOD(GetTextureStageState)(THIS_ DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD* pValue) PURE;
+    STDMETHOD(SetTextureStageState)(THIS_ DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value) PURE;
+    STDMETHOD(GetSamplerState)(THIS_ DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD* pValue) PURE;
+    STDMETHOD(SetSamplerState)(THIS_ DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD Value) PURE;
+    STDMETHOD(ValidateDevice)(THIS_ DWORD* pNumPasses) PURE;
+    STDMETHOD(SetPaletteEntries)(THIS_ UINT PaletteNumber, CONST PALETTEENTRY* pEntries) PURE;
+    STDMETHOD(GetPaletteEntries)(THIS_ UINT PaletteNumber,PALETTEENTRY* pEntries) PURE;
+    STDMETHOD(SetCurrentTexturePalette)(THIS_ UINT PaletteNumber) PURE;
+    STDMETHOD(GetCurrentTexturePalette)(THIS_ UINT *PaletteNumber) PURE;
+    STDMETHOD(SetScissorRect)(THIS_ CONST RECT* pRect) PURE;
+    STDMETHOD(GetScissorRect)(THIS_ RECT* pRect) PURE;
+    STDMETHOD(SetSoftwareVertexProcessing)(THIS_ BOOL bSoftware) PURE;
+    STDMETHOD_(BOOL, GetSoftwareVertexProcessing)(THIS) PURE;
+    STDMETHOD(SetNPatchMode)(THIS_ float nSegments) PURE;
+    STDMETHOD_(float, GetNPatchMode)(THIS) PURE;
+    STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE PrimitiveType, UINT StartVertex, UINT PrimitiveCount) PURE;
+    STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE, INT BaseVertexIndex, UINT MinVertexIndex, UINT NumVertices, UINT startIndex, UINT primCount) PURE;
+    STDMETHOD(DrawPrimitiveUP)(THIS_ D3DPRIMITIVETYPE PrimitiveType, UINT PrimitiveCount, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride) PURE;
+    STDMETHOD(DrawIndexedPrimitiveUP)(THIS_ D3DPRIMITIVETYPE PrimitiveType, UINT MinVertexIndex, UINT NumVertices, UINT PrimitiveCount, CONST void* pIndexData, D3DFORMAT IndexDataFormat, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride) PURE;
+    STDMETHOD(ProcessVertices)(THIS_ UINT SrcStartIndex, UINT DestIndex, UINT VertexCount, IDirect3DVertexBuffer9* pDestBuffer, IDirect3DVertexDeclaration9* pVertexDecl, DWORD Flags) PURE;
+    STDMETHOD(CreateVertexDeclaration)(THIS_ CONST D3DVERTEXELEMENT9* pVertexElements, IDirect3DVertexDeclaration9** ppDecl) PURE;
+    STDMETHOD(SetVertexDeclaration)(THIS_ IDirect3DVertexDeclaration9* pDecl) PURE;
+    STDMETHOD(GetVertexDeclaration)(THIS_ IDirect3DVertexDeclaration9** ppDecl) PURE;
+    STDMETHOD(SetFVF)(THIS_ DWORD FVF) PURE;
+    STDMETHOD(GetFVF)(THIS_ DWORD* pFVF) PURE;
+    STDMETHOD(CreateVertexShader)(THIS_ CONST DWORD* pFunction, IDirect3DVertexShader9** ppShader) PURE;
+    STDMETHOD(SetVertexShader)(THIS_ IDirect3DVertexShader9* pShader) PURE;
+    STDMETHOD(GetVertexShader)(THIS_ IDirect3DVertexShader9** ppShader) PURE;
+    STDMETHOD(SetVertexShaderConstantF)(THIS_ UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount) PURE;
+    STDMETHOD(GetVertexShaderConstantF)(THIS_ UINT StartRegister, float* pConstantData, UINT Vector4fCount) PURE;
+    STDMETHOD(SetVertexShaderConstantI)(THIS_ UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount) PURE;
+    STDMETHOD(GetVertexShaderConstantI)(THIS_ UINT StartRegister, int* pConstantData, UINT Vector4iCount) PURE;
+    STDMETHOD(SetVertexShaderConstantB)(THIS_ UINT StartRegister, CONST BOOL* pConstantData, UINT  BoolCount) PURE;
+    STDMETHOD(GetVertexShaderConstantB)(THIS_ UINT StartRegister, BOOL* pConstantData, UINT BoolCount) PURE;
+    STDMETHOD(SetStreamSource)(THIS_ UINT StreamNumber, IDirect3DVertexBuffer9* pStreamData, UINT OffsetInBytes, UINT Stride) PURE;
+    STDMETHOD(GetStreamSource)(THIS_ UINT StreamNumber, IDirect3DVertexBuffer9** ppStreamData, UINT* OffsetInBytes, UINT* pStride) PURE;
+    STDMETHOD(SetStreamSourceFreq)(THIS_ UINT StreamNumber, UINT Divider) PURE;
+    STDMETHOD(GetStreamSourceFreq)(THIS_ UINT StreamNumber, UINT* Divider) PURE;
+    STDMETHOD(SetIndices)(THIS_ IDirect3DIndexBuffer9* pIndexData) PURE;
+    STDMETHOD(GetIndices)(THIS_ IDirect3DIndexBuffer9** ppIndexData) PURE;
+    STDMETHOD(CreatePixelShader)(THIS_ CONST DWORD* pFunction, IDirect3DPixelShader9** ppShader) PURE;
+    STDMETHOD(SetPixelShader)(THIS_ IDirect3DPixelShader9* pShader) PURE;
+    STDMETHOD(GetPixelShader)(THIS_ IDirect3DPixelShader9** ppShader) PURE;
+    STDMETHOD(SetPixelShaderConstantF)(THIS_ UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount) PURE;
+    STDMETHOD(GetPixelShaderConstantF)(THIS_ UINT StartRegister, float* pConstantData, UINT Vector4fCount) PURE;
+    STDMETHOD(SetPixelShaderConstantI)(THIS_ UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount) PURE;
+    STDMETHOD(GetPixelShaderConstantI)(THIS_ UINT StartRegister, int* pConstantData, UINT Vector4iCount) PURE;
+    STDMETHOD(SetPixelShaderConstantB)(THIS_ UINT StartRegister, CONST BOOL* pConstantData, UINT  BoolCount) PURE;
+    STDMETHOD(GetPixelShaderConstantB)(THIS_ UINT StartRegister, BOOL* pConstantData, UINT BoolCount) PURE;
+    STDMETHOD(DrawRectPatch)(THIS_ UINT Handle, CONST float* pNumSegs, CONST D3DRECTPATCH_INFO* pRectPatchInfo) PURE;
+    STDMETHOD(DrawTriPatch)(THIS_ UINT Handle, CONST float* pNumSegs, CONST D3DTRIPATCH_INFO* pTriPatchInfo) PURE;
+    STDMETHOD(DeletePatch)(THIS_ UINT Handle) PURE;
+    STDMETHOD(CreateQuery)(THIS_ D3DQUERYTYPE Type, IDirect3DQuery9** ppQuery) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DDevice9_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DDevice9_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirect3DDevice9_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirect3DDevice9 methods ***/
+#define IDirect3DDevice9_TestCooperativeLevel(p)                       (p)->lpVtbl->TestCooperativeLevel(p)
+#define IDirect3DDevice9_GetAvailableTextureMem(p)                     (p)->lpVtbl->GetAvailableTextureMem(p)
+#define IDirect3DDevice9_EvictManagedResources(p)                      (p)->lpVtbl->EvictManagedResources(p)
+#define IDirect3DDevice9_GetDirect3D(p,a)                              (p)->lpVtbl->GetDirect3D(p,a)
+#define IDirect3DDevice9_GetDeviceCaps(p,a)                            (p)->lpVtbl->GetDeviceCaps(p,a)
+#define IDirect3DDevice9_GetDisplayMode(p,a,b)                         (p)->lpVtbl->GetDisplayMode(p,a,b)
+#define IDirect3DDevice9_GetCreationParameters(p,a)                    (p)->lpVtbl->GetCreationParameters(p,a)
+#define IDirect3DDevice9_SetCursorProperties(p,a,b,c)                  (p)->lpVtbl->SetCursorProperties(p,a,b,c)
+#define IDirect3DDevice9_SetCursorPosition(p,a,b,c)                    (p)->lpVtbl->SetCursorPosition(p,a,b,c)
+#define IDirect3DDevice9_ShowCursor(p,a)                               (p)->lpVtbl->ShowCursor(p,a)
+#define IDirect3DDevice9_CreateAdditionalSwapChain(p,a,b)              (p)->lpVtbl->CreateAdditionalSwapChain(p,a,b)
+#define IDirect3DDevice9_GetSwapChain(p,a,b)                           (p)->lpVtbl->GetSwapChain(p,a,b)
+#define IDirect3DDevice9_GetNumberOfSwapChains(p)                      (p)->lpVtbl->GetNumberOfSwapChains(p)
+#define IDirect3DDevice9_Reset(p,a)                                    (p)->lpVtbl->Reset(p,a)
+#define IDirect3DDevice9_Present(p,a,b,c,d)                            (p)->lpVtbl->Present(p,a,b,c,d)
+#define IDirect3DDevice9_GetBackBuffer(p,a,b,c,d)                      (p)->lpVtbl->GetBackBuffer(p,a,b,c,d)
+#define IDirect3DDevice9_GetRasterStatus(p,a,b)                        (p)->lpVtbl->GetRasterStatus(p,a,b)
+#define IDirect3DDevice9_SetDialogBoxMode(p,a)                         (p)->lpVtbl->SetDialogBoxMode(p,a)
+#define IDirect3DDevice9_SetGammaRamp(p,a,b,c)                         (p)->lpVtbl->SetGammaRamp(p,a,b,c)
+#define IDirect3DDevice9_GetGammaRamp(p,a,b)                           (p)->lpVtbl->GetGammaRamp(p,a,b)
+#define IDirect3DDevice9_CreateTexture(p,a,b,c,d,e,f,g,h)              (p)->lpVtbl->CreateTexture(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)      (p)->lpVtbl->CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)
+#define IDirect3DDevice9_CreateCubeTexture(p,a,b,c,d,e,f,g)            (p)->lpVtbl->CreateCubeTexture(p,a,b,c,d,e,f,g)
+#define IDirect3DDevice9_CreateVertexBuffer(p,a,b,c,d,e,f)             (p)->lpVtbl->CreateVertexBuffer(p,a,b,c,d,e,f)
+#define IDirect3DDevice9_CreateIndexBuffer(p,a,b,c,d,e,f)              (p)->lpVtbl->CreateIndexBuffer(p,a,b,c,d,e,f)
+#define IDirect3DDevice9_CreateRenderTarget(p,a,b,c,d,e,f,g,h)         (p)->lpVtbl->CreateRenderTarget(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)  (p)->lpVtbl->CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_UpdateSurface(p,a,b,c,d)                      (p)->lpVtbl->UpdateSurface(p,a,b,c,d)
+#define IDirect3DDevice9_UpdateTexture(p,a,b)                          (p)->lpVtbl->UpdateTexture(p,a,b)
+#define IDirect3DDevice9_GetRenderTargetData(p,a,b)                    (p)->lpVtbl->GetRenderTargetData(p,a,b)
+#define IDirect3DDevice9_GetFrontBufferData(p,a,b)                     (p)->lpVtbl->GetFrontBufferData(p,a,b)
+#define IDirect3DDevice9_StretchRect(p,a,b,c,d,e)                      (p)->lpVtbl->StretchRect(p,a,b,c,d,e)
+#define IDirect3DDevice9_ColorFill(p,a,b,c)                            (p)->lpVtbl->ColorFill(p,a,b,c)
+#define IDirect3DDevice9_CreateOffscreenPlainSurface(p,a,b,c,d,e,f)    (p)->lpVtbl->CreateOffscreenPlainSurface(p,a,b,c,d,e,f)
+#define IDirect3DDevice9_SetRenderTarget(p,a,b)                        (p)->lpVtbl->SetRenderTarget(p,a,b)
+#define IDirect3DDevice9_GetRenderTarget(p,a,b)                        (p)->lpVtbl->GetRenderTarget(p,a,b)
+#define IDirect3DDevice9_SetDepthStencilSurface(p,a)                   (p)->lpVtbl->SetDepthStencilSurface(p,a)
+#define IDirect3DDevice9_GetDepthStencilSurface(p,a)                   (p)->lpVtbl->GetDepthStencilSurface(p,a)
+#define IDirect3DDevice9_BeginScene(p)                                 (p)->lpVtbl->BeginScene(p)
+#define IDirect3DDevice9_EndScene(p)                                   (p)->lpVtbl->EndScene(p)
+#define IDirect3DDevice9_Clear(p,a,b,c,d,e,f)                          (p)->lpVtbl->Clear(p,a,b,c,d,e,f)
+#define IDirect3DDevice9_SetTransform(p,a,b)                           (p)->lpVtbl->SetTransform(p,a,b)
+#define IDirect3DDevice9_GetTransform(p,a,b)                           (p)->lpVtbl->GetTransform(p,a,b)
+#define IDirect3DDevice9_MultiplyTransform(p,a,b)                      (p)->lpVtbl->MultiplyTransform(p,a,b)
+#define IDirect3DDevice9_SetViewport(p,a)                              (p)->lpVtbl->SetViewport(p,a)
+#define IDirect3DDevice9_GetViewport(p,a)                              (p)->lpVtbl->GetViewport(p,a)
+#define IDirect3DDevice9_SetMaterial(p,a)                              (p)->lpVtbl->SetMaterial(p,a)
+#define IDirect3DDevice9_GetMaterial(p,a)                              (p)->lpVtbl->GetMaterial(p,a)
+#define IDirect3DDevice9_SetLight(p,a,b)                               (p)->lpVtbl->SetLight(p,a,b)
+#define IDirect3DDevice9_GetLight(p,a,b)                               (p)->lpVtbl->GetLight(p,a,b)
+#define IDirect3DDevice9_LightEnable(p,a,b)                            (p)->lpVtbl->LightEnable(p,a,b)
+#define IDirect3DDevice9_GetLightEnable(p,a,b)                         (p)->lpVtbl->GetLightEnable(p,a,b)
+#define IDirect3DDevice9_SetClipPlane(p,a,b)                           (p)->lpVtbl->SetClipPlane(p,a,b)
+#define IDirect3DDevice9_GetClipPlane(p,a,b)                           (p)->lpVtbl->GetClipPlane(p,a,b)
+#define IDirect3DDevice9_SetRenderState(p,a,b)                         (p)->lpVtbl->SetRenderState(p,a,b)
+#define IDirect3DDevice9_GetRenderState(p,a,b)                         (p)->lpVtbl->GetRenderState(p,a,b)
+#define IDirect3DDevice9_CreateStateBlock(p,a,b)                       (p)->lpVtbl->CreateStateBlock(p,a,b)
+#define IDirect3DDevice9_BeginStateBlock(p)                            (p)->lpVtbl->BeginStateBlock(p)
+#define IDirect3DDevice9_EndStateBlock(p,a)                            (p)->lpVtbl->EndStateBlock(p,a)
+#define IDirect3DDevice9_SetClipStatus(p,a)                            (p)->lpVtbl->SetClipStatus(p,a)
+#define IDirect3DDevice9_GetClipStatus(p,a)                            (p)->lpVtbl->GetClipStatus(p,a)
+#define IDirect3DDevice9_GetTexture(p,a,b)                             (p)->lpVtbl->GetTexture(p,a,b)
+#define IDirect3DDevice9_SetTexture(p,a,b)                             (p)->lpVtbl->SetTexture(p,a,b)
+#define IDirect3DDevice9_GetTextureStageState(p,a,b,c)                 (p)->lpVtbl->GetTextureStageState(p,a,b,c)
+#define IDirect3DDevice9_SetTextureStageState(p,a,b,c)                 (p)->lpVtbl->SetTextureStageState(p,a,b,c)
+#define IDirect3DDevice9_GetSamplerState(p,a,b,c)                      (p)->lpVtbl->GetSamplerState(p,a,b,c)
+#define IDirect3DDevice9_SetSamplerState(p,a,b,c)                      (p)->lpVtbl->SetSamplerState(p,a,b,c)
+#define IDirect3DDevice9_ValidateDevice(p,a)                           (p)->lpVtbl->ValidateDevice(p,a)
+#define IDirect3DDevice9_SetPaletteEntries(p,a,b)                      (p)->lpVtbl->SetPaletteEntries(p,a,b)
+#define IDirect3DDevice9_GetPaletteEntries(p,a,b)                      (p)->lpVtbl->GetPaletteEntries(p,a,b)
+#define IDirect3DDevice9_SetCurrentTexturePalette(p,a)                 (p)->lpVtbl->SetCurrentTexturePalette(p,a)
+#define IDirect3DDevice9_GetCurrentTexturePalette(p,a)                 (p)->lpVtbl->GetCurrentTexturePalette(p,a)
+#define IDirect3DDevice9_SetScissorRect(p,a)                           (p)->lpVtbl->SetScissorRect(p,a)
+#define IDirect3DDevice9_GetScissorRect(p,a)                           (p)->lpVtbl->GetScissorRect(p,a)
+#define IDirect3DDevice9_SetSoftwareVertexProcessing(p,a)              (p)->lpVtbl->SetSoftwareVertexProcessing(p,a)
+#define IDirect3DDevice9_GetSoftwareVertexProcessing(p)                (p)->lpVtbl->GetSoftwareVertexProcessing(p)
+#define IDirect3DDevice9_SetNPatchMode(p,a)                            (p)->lpVtbl->SetNPatchMode(p,a)
+#define IDirect3DDevice9_GetNPatchMode(p)                              (p)->lpVtbl->GetNPatchMode(p)
+#define IDirect3DDevice9_DrawPrimitive(p,a,b,c)                        (p)->lpVtbl->DrawPrimitive(p,a,b,c)
+#define IDirect3DDevice9_DrawIndexedPrimitive(p,a,b,c,d,e,f)           (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e,f)
+#define IDirect3DDevice9_DrawPrimitiveUP(p,a,b,c,d)                    (p)->lpVtbl->DrawPrimitiveUP(p,a,b,c,d)
+#define IDirect3DDevice9_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)     (p)->lpVtbl->DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_ProcessVertices(p,a,b,c,d,e,f)                (p)->lpVtbl->ProcessVertices(p,a,b,c,d,e,f)
+#define IDirect3DDevice9_CreateVertexDeclaration(p,a,b)                (p)->lpVtbl->CreateVertexDeclaration(p,a,b)
+#define IDirect3DDevice9_SetVertexDeclaration(p,a)                     (p)->lpVtbl->SetVertexDeclaration(p,a)
+#define IDirect3DDevice9_GetVertexDeclaration(p,a)                     (p)->lpVtbl->GetVertexDeclaration(p,a)
+#define IDirect3DDevice9_SetFVF(p,a)                                   (p)->lpVtbl->SetFVF(p,a)
+#define IDirect3DDevice9_GetFVF(p,a)                                   (p)->lpVtbl->GetFVF(p,a)
+#define IDirect3DDevice9_CreateVertexShader(p,a,b)                     (p)->lpVtbl->CreateVertexShader(p,a,b)
+#define IDirect3DDevice9_SetVertexShader(p,a)                          (p)->lpVtbl->SetVertexShader(p,a)
+#define IDirect3DDevice9_GetVertexShader(p,a)                          (p)->lpVtbl->GetVertexShader(p,a)
+#define IDirect3DDevice9_SetVertexShaderConstantF(p,a,b,c)             (p)->lpVtbl->SetVertexShaderConstantF(p,a,b,c)
+#define IDirect3DDevice9_GetVertexShaderConstantF(p,a,b,c)             (p)->lpVtbl->GetVertexShaderConstantF(p,a,b,c)
+#define IDirect3DDevice9_SetVertexShaderConstantI(p,a,b,c)             (p)->lpVtbl->SetVertexShaderConstantI(p,a,b,c)
+#define IDirect3DDevice9_GetVertexShaderConstantI(p,a,b,c)             (p)->lpVtbl->GetVertexShaderConstantI(p,a,b,c)
+#define IDirect3DDevice9_SetVertexShaderConstantB(p,a,b,c)             (p)->lpVtbl->SetVertexShaderConstantB(p,a,b,c)
+#define IDirect3DDevice9_GetVertexShaderConstantB(p,a,b,c)             (p)->lpVtbl->GetVertexShaderConstantB(p,a,b,c)
+#define IDirect3DDevice9_SetStreamSource(p,a,b,c,d)                    (p)->lpVtbl->SetStreamSource(p,a,b,c,d)
+#define IDirect3DDevice9_GetStreamSource(p,a,b,c,d)                    (p)->lpVtbl->GetStreamSource(p,a,b,c,d)
+#define IDirect3DDevice9_SetStreamSourceFreq(p,a,b)                    (p)->lpVtbl->SetStreamSourceFreq(p,a,b)
+#define IDirect3DDevice9_GetStreamSourceFreq(p,a,b)                    (p)->lpVtbl->GetStreamSourceFreq(p,a,b)
+#define IDirect3DDevice9_SetIndices(p,a)                               (p)->lpVtbl->SetIndices(p,a)
+#define IDirect3DDevice9_GetIndices(p,a)                               (p)->lpVtbl->GetIndices(p,a)
+#define IDirect3DDevice9_CreatePixelShader(p,a,b)                      (p)->lpVtbl->CreatePixelShader(p,a,b)
+#define IDirect3DDevice9_SetPixelShader(p,a)                           (p)->lpVtbl->SetPixelShader(p,a)
+#define IDirect3DDevice9_GetPixelShader(p,a)                           (p)->lpVtbl->GetPixelShader(p,a)
+#define IDirect3DDevice9_SetPixelShaderConstantF(p,a,b,c)              (p)->lpVtbl->SetPixelShaderConstantF(p,a,b,c)
+#define IDirect3DDevice9_GetPixelShaderConstantF(p,a,b,c)              (p)->lpVtbl->GetPixelShaderConstantF(p,a,b,c)
+#define IDirect3DDevice9_SetPixelShaderConstantI(p,a,b,c)              (p)->lpVtbl->SetPixelShaderConstantI(p,a,b,c)
+#define IDirect3DDevice9_GetPixelShaderConstantI(p,a,b,c)              (p)->lpVtbl->GetPixelShaderConstantI(p,a,b,c)
+#define IDirect3DDevice9_SetPixelShaderConstantB(p,a,b,c)              (p)->lpVtbl->SetPixelShaderConstantB(p,a,b,c)
+#define IDirect3DDevice9_GetPixelShaderConstantB(p,a,b,c)              (p)->lpVtbl->GetPixelShaderConstantB(p,a,b,c)
+#define IDirect3DDevice9_DrawRectPatch(p,a,b,c)                        (p)->lpVtbl->DrawRectPatch(p,a,b,c)
+#define IDirect3DDevice9_DrawTriPatch(p,a,b,c)                         (p)->lpVtbl->DrawTriPatch(p,a,b,c)
+#define IDirect3DDevice9_DeletePatch(p,a)                              (p)->lpVtbl->DeletePatch(p,a)
+#define IDirect3DDevice9_CreateQuery(p,a,b)                            (p)->lpVtbl->CreateQuery(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DDevice9_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DDevice9_AddRef(p)             (p)->AddRef()
+#define IDirect3DDevice9_Release(p)            (p)->Release()
+/*** IDirect3DDevice9 methods ***/
+#define IDirect3DDevice9_TestCooperativeLevel(p)                       (p)->TestCooperativeLevel()
+#define IDirect3DDevice9_GetAvailableTextureMem(p)                     (p)->GetAvailableTextureMem()
+#define IDirect3DDevice9_EvictManagedResources(p)                      (p)->EvictManagedResources()
+#define IDirect3DDevice9_GetDirect3D(p,a)                              (p)->GetDirect3D(a)
+#define IDirect3DDevice9_GetDeviceCaps(p,a)                            (p)->GetDeviceCaps(a)
+#define IDirect3DDevice9_GetDisplayMode(p,a,b)                         (p)->GetDisplayMode(a,b)
+#define IDirect3DDevice9_GetCreationParameters(p,a)                    (p)->GetCreationParameters(a)
+#define IDirect3DDevice9_SetCursorProperties(p,a,b,c)                  (p)->SetCursorProperties(a,b,c)
+#define IDirect3DDevice9_SetCursorPosition(p,a,b,c)                    (p)->SetCursorPosition(a,b,c)
+#define IDirect3DDevice9_ShowCursor(p,a)                               (p)->ShowCursor(a)
+#define IDirect3DDevice9_CreateAdditionalSwapChain(p,a,b)              (p)->CreateAdditionalSwapChain(a,b)
+#define IDirect3DDevice9_GetSwapChain(p,a,b)                           (p)->GetSwapChain(a,b)
+#define IDirect3DDevice9_GetNumberOfSwapChains(p)                      (p)->GetNumberOfSwapChains()
+#define IDirect3DDevice9_Reset(p,a)                                    (p)->Reset(a)
+#define IDirect3DDevice9_Present(p,a,b,c,d)                            (p)->Present(a,b,c,d)
+#define IDirect3DDevice9_GetBackBuffer(p,a,b,c,d)                      (p)->GetBackBuffer(a,b,c,d)
+#define IDirect3DDevice9_GetRasterStatus(p,a,b)                        (p)->GetRasterStatus(a,b)
+#define IDirect3DDevice9_SetDialogBoxMode(p,a)                         (p)->SetDialogBoxMode(a)
+#define IDirect3DDevice9_SetGammaRamp(p,a,b,c)                         (p)->SetGammaRamp(a,b,c)
+#define IDirect3DDevice9_GetGammaRamp(p,a,b)                           (p)->GetGammaRamp(a,b)
+#define IDirect3DDevice9_CreateTexture(p,a,b,c,d,e,f,g,h)              (p)->CreateTexture(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)      (p)->CreateVolumeTexture(a,b,c,d,e,f,g,h,i)
+#define IDirect3DDevice9_CreateCubeTexture(p,a,b,c,d,e,f,g)            (p)->CreateCubeTexture(a,b,c,d,e,f,g)
+#define IDirect3DDevice9_CreateVertexBuffer(p,a,b,c,d,e,f)             (p)->CreateVertexBuffer(a,b,c,d,e,f)
+#define IDirect3DDevice9_CreateIndexBuffer(p,a,b,c,d,e,f)              (p)->CreateIndexBuffer(a,b,c,d,e,f)
+#define IDirect3DDevice9_CreateRenderTarget(p,a,b,c,d,e,f,g,h)         (p)->CreateRenderTarget(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)  (p)->CreateDepthStencilSurface(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_UpdateSurface(p,a,b,c,d)                      (p)->UpdateSurface(a,b,c,d)
+#define IDirect3DDevice9_UpdateTexture(p,a,b)                          (p)->UpdateTexture(a,b)
+#define IDirect3DDevice9_GetRenderTargetData(p,a,b)                    (p)->GetRenderTargetData(a,b)
+#define IDirect3DDevice9_GetFrontBufferData(p,a,b)                     (p)->GetFrontBufferData(a,b)
+#define IDirect3DDevice9_StretchRect(p,a,b,c,d,e)                      (p)->StretchRect(a,b,c,d,e)
+#define IDirect3DDevice9_ColorFill(p,a,b,c)                            (p)->ColorFill(a,b,c)
+#define IDirect3DDevice9_CreateOffscreenPlainSurface(p,a,b,c,d,e,f)    (p)->CreateOffscreenPlainSurface(a,b,c,d,e,f)
+#define IDirect3DDevice9_SetRenderTarget(p,a,b)                        (p)->SetRenderTarget(a,b)
+#define IDirect3DDevice9_GetRenderTarget(p,a,b)                        (p)->GetRenderTarget(a,b)
+#define IDirect3DDevice9_SetDepthStencilSurface(p,a)                   (p)->SetDepthStencilSurface(a)
+#define IDirect3DDevice9_GetDepthStencilSurface(p,a)                   (p)->GetDepthStencilSurface(a)
+#define IDirect3DDevice9_BeginScene(p)                                 (p)->BeginScene()
+#define IDirect3DDevice9_EndScene(p)                                   (p)->EndScene()
+#define IDirect3DDevice9_Clear(p,a,b,c,d,e,f)                          (p)->Clear(a,b,c,d,e,f)
+#define IDirect3DDevice9_SetTransform(p,a,b)                           (p)->SetTransform(a,b)
+#define IDirect3DDevice9_GetTransform(p,a,b)                           (p)->GetTransform(a,b)
+#define IDirect3DDevice9_MultiplyTransform(p,a,b)                      (p)->MultiplyTransform(a,b)
+#define IDirect3DDevice9_SetViewport(p,a)                              (p)->SetViewport(a)
+#define IDirect3DDevice9_GetViewport(p,a)                              (p)->GetViewport(a)
+#define IDirect3DDevice9_SetMaterial(p,a)                              (p)->SetMaterial(a)
+#define IDirect3DDevice9_GetMaterial(p,a)                              (p)->GetMaterial(a)
+#define IDirect3DDevice9_SetLight(p,a,b)                               (p)->SetLight(a,b)
+#define IDirect3DDevice9_GetLight(p,a,b)                               (p)->GetLight(a,b)
+#define IDirect3DDevice9_LightEnable(p,a,b)                            (p)->LightEnable(a,b)
+#define IDirect3DDevice9_GetLightEnable(p,a,b)                         (p)->GetLightEnable(a,b)
+#define IDirect3DDevice9_SetClipPlane(p,a,b)                           (p)->SetClipPlane(a,b)
+#define IDirect3DDevice9_GetClipPlane(p,a,b)                           (p)->GetClipPlane(a,b)
+#define IDirect3DDevice9_SetRenderState(p,a,b)                         (p)->SetRenderState(a,b)
+#define IDirect3DDevice9_GetRenderState(p,a,b)                         (p)->GetRenderState(a,b)
+#define IDirect3DDevice9_CreateStateBlock(p,a,b)                       (p)->CreateStateBlock(a,b)
+#define IDirect3DDevice9_BeginStateBlock(p)                            (p)->BeginStateBlock()
+#define IDirect3DDevice9_EndStateBlock(p,a)                            (p)->EndStateBlock(a)
+#define IDirect3DDevice9_SetClipStatus(p,a)                            (p)->SetClipStatus(a)
+#define IDirect3DDevice9_GetClipStatus(p,a)                            (p)->GetClipStatus(a)
+#define IDirect3DDevice9_GetTexture(p,a,b)                             (p)->GetTexture(a,b)
+#define IDirect3DDevice9_SetTexture(p,a,b)                             (p)->SetTexture(a,b)
+#define IDirect3DDevice9_GetTextureStageState(p,a,b,c)                 (p)->GetTextureStageState(a,b,c)
+#define IDirect3DDevice9_SetTextureStageState(p,a,b,c)                 (p)->SetTextureStageState(a,b,c)
+#define IDirect3DDevice9_GetSamplerState(p,a,b,c)                      (p)->GetSamplerState(a,b,c)
+#define IDirect3DDevice9_SetSamplerState(p,a,b,c)                      (p)->SetSamplerState(a,b,c)
+#define IDirect3DDevice9_ValidateDevice(p,a)                           (p)->ValidateDevice(a)
+#define IDirect3DDevice9_SetPaletteEntries(p,a,b)                      (p)->SetPaletteEntries(a,b)
+#define IDirect3DDevice9_GetPaletteEntries(p,a,b)                      (p)->GetPaletteEntries(a,b)
+#define IDirect3DDevice9_SetCurrentTexturePalette(p,a)                 (p)->SetCurrentTexturePalette(a)
+#define IDirect3DDevice9_GetCurrentTexturePalette(p,a)                 (p)->GetCurrentTexturePalette(a)
+#define IDirect3DDevice9_SetScissorRect(p,a)                           (p)->SetScissorRect(a)
+#define IDirect3DDevice9_GetScissorRect(p,a)                           (p)->GetScissorRect(a)
+#define IDirect3DDevice9_SetSoftwareVertexProcessing(p,a)              (p)->SetSoftwareVertexProcessing(a)
+#define IDirect3DDevice9_GetSoftwareVertexProcessing(p)                (p)->GetSoftwareVertexProcessing()
+#define IDirect3DDevice9_SetNPatchMode(p,a)                            (p)->SetNPatchMode(a)
+#define IDirect3DDevice9_GetNPatchMode(p)                              (p)->GetNPatchMode()
+#define IDirect3DDevice9_DrawPrimitive(p,a,b,c)                        (p)->DrawPrimitive(a,b,c)
+#define IDirect3DDevice9_DrawIndexedPrimitive(p,a,b,c,d,e,f)           (p)->DrawIndexedPrimitive(a,b,c,d,e,f)
+#define IDirect3DDevice9_DrawPrimitiveUP(p,a,b,c,d)                    (p)->DrawPrimitiveUP(a,b,c,d)
+#define IDirect3DDevice9_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)     (p)->DrawIndexedPrimitiveUP(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_ProcessVertices(p,a,b,c,d,e,f)                (p)->ProcessVertices(a,b,c,d,e,f)
+#define IDirect3DDevice9_CreateVertexDeclaration(p,a,b)                (p)->CreateVertexDeclaration(a,b)
+#define IDirect3DDevice9_SetVertexDeclaration(p,a)                     (p)->SetVertexDeclaration(a)
+#define IDirect3DDevice9_GetVertexDeclaration(p,a)                     (p)->GetVertexDeclaration(a)
+#define IDirect3DDevice9_SetFVF(p,a)                                   (p)->SetFVF(a)
+#define IDirect3DDevice9_GetFVF(p,a)                                   (p)->GetFVF(a)
+#define IDirect3DDevice9_CreateVertexShader(p,a,b)                     (p)->CreateVertexShader(a,b)
+#define IDirect3DDevice9_SetVertexShader(p,a)                          (p)->SetVertexShader(a)
+#define IDirect3DDevice9_GetVertexShader(p,a)                          (p)->GetVertexShader(a)
+#define IDirect3DDevice9_SetVertexShaderConstantF(p,a,b,c)             (p)->SetVertexShaderConstantF(a,b,c)
+#define IDirect3DDevice9_GetVertexShaderConstantF(p,a,b,c)             (p)->GetVertexShaderConstantF(a,b,c)
+#define IDirect3DDevice9_SetVertexShaderConstantI(p,a,b,c)             (p)->SetVertexShaderConstantI(a,b,c)
+#define IDirect3DDevice9_GetVertexShaderConstantI(p,a,b,c)             (p)->GetVertexShaderConstantI(a,b,c)
+#define IDirect3DDevice9_SetVertexShaderConstantB(p,a,b,c)             (p)->SetVertexShaderConstantB(a,b,c)
+#define IDirect3DDevice9_GetVertexShaderConstantB(p,a,b,c)             (p)->GetVertexShaderConstantB(a,b,c)
+#define IDirect3DDevice9_SetStreamSource(p,a,b,c,d)                    (p)->SetStreamSource(a,b,c,d)
+#define IDirect3DDevice9_GetStreamSource(p,a,b,c,d)                    (p)->GetStreamSource(a,b,c,d)
+#define IDirect3DDevice9_SetStreamSourceFreq(p,a,b)                    (p)->SetStreamSourceFreq(a,b)
+#define IDirect3DDevice9_GetStreamSourceFreq(p,a,b)                    (p)->GetStreamSourceFreq(a,b)
+#define IDirect3DDevice9_SetIndices(p,a)                               (p)->SetIndices(a)
+#define IDirect3DDevice9_GetIndices(p,a)                               (p)->GetIndices(a)
+#define IDirect3DDevice9_CreatePixelShader(p,a,b)                      (p)->CreatePixelShader(a,b)
+#define IDirect3DDevice9_SetPixelShader(p,a)                           (p)->SetPixelShader(a)
+#define IDirect3DDevice9_GetPixelShader(p,a)                           (p)->GetPixelShader(a)
+#define IDirect3DDevice9_SetPixelShaderConstantF(p,a,b,c)              (p)->SetPixelShaderConstantF(a,b,c)
+#define IDirect3DDevice9_GetPixelShaderConstantF(p,a,b,c)              (p)->GetPixelShaderConstantF(a,b,c)
+#define IDirect3DDevice9_SetPixelShaderConstantI(p,a,b,c)              (p)->SetPixelShaderConstantI(a,b,c)
+#define IDirect3DDevice9_GetPixelShaderConstantI(p,a,b,c)              (p)->GetPixelShaderConstantI(a,b,c)
+#define IDirect3DDevice9_SetPixelShaderConstantB(p,a,b,c)              (p)->SetPixelShaderConstantB(a,b,c)
+#define IDirect3DDevice9_GetPixelShaderConstantB(p,a,b,c)              (p)->GetPixelShaderConstantB(a,b,c)
+#define IDirect3DDevice9_DrawRectPatch(p,a,b,c)                        (p)->DrawRectPatch(a,b,c)
+#define IDirect3DDevice9_DrawTriPatch(p,a,b,c)                         (p)->DrawTriPatch(a,b,c)
+#define IDirect3DDevice9_DeletePatch(p,a)                              (p)->DeletePatch(a)
+#define IDirect3DDevice9_CreateQuery(p,a,b)                            (p)->CreateQuery(a,b)
+#endif
+
+
+/*****************************************************************************
+ * IDirect3DDevice9Ex interface
+ */
+#define INTERFACE IDirect3DDevice9Ex
+DECLARE_INTERFACE_(IDirect3DDevice9Ex,IDirect3DDevice9)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DDevice9 methods ***/
+    STDMETHOD(TestCooperativeLevel)(THIS) PURE;
+    STDMETHOD_(UINT, GetAvailableTextureMem)(THIS) PURE;
+    STDMETHOD(EvictManagedResources)(THIS) PURE;
+    STDMETHOD(GetDirect3D)(THIS_ IDirect3D9** ppD3D9) PURE;
+    STDMETHOD(GetDeviceCaps)(THIS_ D3DCAPS9* pCaps) PURE;
+    STDMETHOD(GetDisplayMode)(THIS_ UINT iSwapChain, D3DDISPLAYMODE* pMode) PURE;
+    STDMETHOD(GetCreationParameters)(THIS_ D3DDEVICE_CREATION_PARAMETERS *pParameters) PURE;
+    STDMETHOD(SetCursorProperties)(THIS_ UINT XHotSpot, UINT YHotSpot, IDirect3DSurface9* pCursorBitmap) PURE;
+    STDMETHOD_(void, SetCursorPosition)(THIS_ int X,int Y, DWORD Flags) PURE;
+    STDMETHOD_(BOOL, ShowCursor)(THIS_ BOOL bShow) PURE;
+    STDMETHOD(CreateAdditionalSwapChain)(THIS_ D3DPRESENT_PARAMETERS* pPresentationParameters, IDirect3DSwapChain9** pSwapChain) PURE;
+    STDMETHOD(GetSwapChain)(THIS_ UINT iSwapChain, IDirect3DSwapChain9** pSwapChain) PURE;
+    STDMETHOD_(UINT, GetNumberOfSwapChains)(THIS) PURE;
+    STDMETHOD(Reset)(THIS_ D3DPRESENT_PARAMETERS* pPresentationParameters) PURE;
+    STDMETHOD(Present)(THIS_ CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion) PURE;
+    STDMETHOD(GetBackBuffer)(THIS_ UINT iSwapChain, UINT iBackBuffer, D3DBACKBUFFER_TYPE Type, IDirect3DSurface9** ppBackBuffer) PURE;
+    STDMETHOD(GetRasterStatus)(THIS_ UINT iSwapChain, D3DRASTER_STATUS* pRasterStatus) PURE;
+    STDMETHOD(SetDialogBoxMode)(THIS_ BOOL bEnableDialogs) PURE;
+    STDMETHOD_(void, SetGammaRamp)(THIS_ UINT iSwapChain, DWORD Flags, CONST D3DGAMMARAMP* pRamp) PURE;
+    STDMETHOD_(void, GetGammaRamp)(THIS_ UINT iSwapChain, D3DGAMMARAMP* pRamp) PURE;
+    STDMETHOD(CreateTexture)(THIS_ UINT Width, UINT Height, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DTexture9** ppTexture, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(CreateVolumeTexture)(THIS_ UINT Width, UINT Height, UINT Depth, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DVolumeTexture9** ppVolumeTexture, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(CreateCubeTexture)(THIS_ UINT EdgeLength, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DCubeTexture9** ppCubeTexture, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(CreateVertexBuffer)(THIS_ UINT Length, DWORD Usage, DWORD FVF, D3DPOOL Pool, IDirect3DVertexBuffer9** ppVertexBuffer, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(CreateIndexBuffer)(THIS_ UINT Length, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DIndexBuffer9** ppIndexBuffer, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(CreateRenderTarget)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality, BOOL Lockable, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(CreateDepthStencilSurface)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality, BOOL Discard, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(UpdateSurface)(THIS_ IDirect3DSurface9* pSourceSurface, CONST RECT* pSourceRect, IDirect3DSurface9* pDestinationSurface, CONST POINT* pDestPoint) PURE;
+    STDMETHOD(UpdateTexture)(THIS_ IDirect3DBaseTexture9* pSourceTexture, IDirect3DBaseTexture9* pDestinationTexture) PURE;
+    STDMETHOD(GetRenderTargetData)(THIS_ IDirect3DSurface9* pRenderTarget, IDirect3DSurface9* pDestSurface) PURE;
+    STDMETHOD(GetFrontBufferData)(THIS_ UINT iSwapChain, IDirect3DSurface9* pDestSurface) PURE;
+    STDMETHOD(StretchRect)(THIS_ IDirect3DSurface9* pSourceSurface, CONST RECT* pSourceRect, IDirect3DSurface9* pDestSurface, CONST RECT* pDestRect, D3DTEXTUREFILTERTYPE Filter) PURE;
+    STDMETHOD(ColorFill)(THIS_ IDirect3DSurface9* pSurface, CONST RECT* pRect, D3DCOLOR color) PURE;
+    STDMETHOD(CreateOffscreenPlainSurface)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DPOOL Pool, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(SetRenderTarget)(THIS_ DWORD RenderTargetIndex, IDirect3DSurface9* pRenderTarget) PURE;
+    STDMETHOD(GetRenderTarget)(THIS_ DWORD RenderTargetIndex, IDirect3DSurface9** ppRenderTarget) PURE;
+    STDMETHOD(SetDepthStencilSurface)(THIS_ IDirect3DSurface9* pNewZStencil) PURE;
+    STDMETHOD(GetDepthStencilSurface)(THIS_ IDirect3DSurface9** ppZStencilSurface) PURE;
+    STDMETHOD(BeginScene)(THIS) PURE;
+    STDMETHOD(EndScene)(THIS) PURE;
+    STDMETHOD(Clear)(THIS_ DWORD Count, CONST D3DRECT* pRects, DWORD Flags, D3DCOLOR Color, float Z, DWORD Stencil) PURE;
+    STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX* pMatrix) PURE;
+    STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE State, D3DMATRIX* pMatrix) PURE;
+    STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE, CONST D3DMATRIX*) PURE;
+    STDMETHOD(SetViewport)(THIS_ CONST D3DVIEWPORT9* pViewport) PURE;
+    STDMETHOD(GetViewport)(THIS_ D3DVIEWPORT9* pViewport) PURE;
+    STDMETHOD(SetMaterial)(THIS_ CONST D3DMATERIAL9* pMaterial) PURE;
+    STDMETHOD(GetMaterial)(THIS_ D3DMATERIAL9* pMaterial) PURE;
+    STDMETHOD(SetLight)(THIS_ DWORD Index, CONST D3DLIGHT9*) PURE;
+    STDMETHOD(GetLight)(THIS_ DWORD Index, D3DLIGHT9*) PURE;
+    STDMETHOD(LightEnable)(THIS_ DWORD Index, BOOL Enable) PURE;
+    STDMETHOD(GetLightEnable)(THIS_ DWORD Index, BOOL* pEnable) PURE;
+    STDMETHOD(SetClipPlane)(THIS_ DWORD Index, CONST float* pPlane) PURE;
+    STDMETHOD(GetClipPlane)(THIS_ DWORD Index, float* pPlane) PURE;
+    STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE State, DWORD Value) PURE;
+    STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE State, DWORD* pValue) PURE;
+    STDMETHOD(CreateStateBlock)(THIS_ D3DSTATEBLOCKTYPE Type, IDirect3DStateBlock9** ppSB) PURE;
+    STDMETHOD(BeginStateBlock)(THIS) PURE;
+    STDMETHOD(EndStateBlock)(THIS_ IDirect3DStateBlock9** ppSB) PURE;
+    STDMETHOD(SetClipStatus)(THIS_ CONST D3DCLIPSTATUS9* pClipStatus) PURE;
+    STDMETHOD(GetClipStatus)(THIS_ D3DCLIPSTATUS9* pClipStatus) PURE;
+    STDMETHOD(GetTexture)(THIS_ DWORD Stage, IDirect3DBaseTexture9** ppTexture) PURE;
+    STDMETHOD(SetTexture)(THIS_ DWORD Stage, IDirect3DBaseTexture9* pTexture) PURE;
+    STDMETHOD(GetTextureStageState)(THIS_ DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD* pValue) PURE;
+    STDMETHOD(SetTextureStageState)(THIS_ DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value) PURE;
+    STDMETHOD(GetSamplerState)(THIS_ DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD* pValue) PURE;
+    STDMETHOD(SetSamplerState)(THIS_ DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD Value) PURE;
+    STDMETHOD(ValidateDevice)(THIS_ DWORD* pNumPasses) PURE;
+    STDMETHOD(SetPaletteEntries)(THIS_ UINT PaletteNumber, CONST PALETTEENTRY* pEntries) PURE;
+    STDMETHOD(GetPaletteEntries)(THIS_ UINT PaletteNumber,PALETTEENTRY* pEntries) PURE;
+    STDMETHOD(SetCurrentTexturePalette)(THIS_ UINT PaletteNumber) PURE;
+    STDMETHOD(GetCurrentTexturePalette)(THIS_ UINT *PaletteNumber) PURE;
+    STDMETHOD(SetScissorRect)(THIS_ CONST RECT* pRect) PURE;
+    STDMETHOD(GetScissorRect)(THIS_ RECT* pRect) PURE;
+    STDMETHOD(SetSoftwareVertexProcessing)(THIS_ BOOL bSoftware) PURE;
+    STDMETHOD_(BOOL, GetSoftwareVertexProcessing)(THIS) PURE;
+    STDMETHOD(SetNPatchMode)(THIS_ float nSegments) PURE;
+    STDMETHOD_(float, GetNPatchMode)(THIS) PURE;
+    STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE PrimitiveType, UINT StartVertex, UINT PrimitiveCount) PURE;
+    STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE, INT BaseVertexIndex, UINT MinVertexIndex, UINT NumVertices, UINT startIndex, UINT primCount) PURE;
+    STDMETHOD(DrawPrimitiveUP)(THIS_ D3DPRIMITIVETYPE PrimitiveType, UINT PrimitiveCount, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride) PURE;
+    STDMETHOD(DrawIndexedPrimitiveUP)(THIS_ D3DPRIMITIVETYPE PrimitiveType, UINT MinVertexIndex, UINT NumVertices, UINT PrimitiveCount, CONST void* pIndexData, D3DFORMAT IndexDataFormat, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride) PURE;
+    STDMETHOD(ProcessVertices)(THIS_ UINT SrcStartIndex, UINT DestIndex, UINT VertexCount, IDirect3DVertexBuffer9* pDestBuffer, IDirect3DVertexDeclaration9* pVertexDecl, DWORD Flags) PURE;
+    STDMETHOD(CreateVertexDeclaration)(THIS_ CONST D3DVERTEXELEMENT9* pVertexElements, IDirect3DVertexDeclaration9** ppDecl) PURE;
+    STDMETHOD(SetVertexDeclaration)(THIS_ IDirect3DVertexDeclaration9* pDecl) PURE;
+    STDMETHOD(GetVertexDeclaration)(THIS_ IDirect3DVertexDeclaration9** ppDecl) PURE;
+    STDMETHOD(SetFVF)(THIS_ DWORD FVF) PURE;
+    STDMETHOD(GetFVF)(THIS_ DWORD* pFVF) PURE;
+    STDMETHOD(CreateVertexShader)(THIS_ CONST DWORD* pFunction, IDirect3DVertexShader9** ppShader) PURE;
+    STDMETHOD(SetVertexShader)(THIS_ IDirect3DVertexShader9* pShader) PURE;
+    STDMETHOD(GetVertexShader)(THIS_ IDirect3DVertexShader9** ppShader) PURE;
+    STDMETHOD(SetVertexShaderConstantF)(THIS_ UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount) PURE;
+    STDMETHOD(GetVertexShaderConstantF)(THIS_ UINT StartRegister, float* pConstantData, UINT Vector4fCount) PURE;
+    STDMETHOD(SetVertexShaderConstantI)(THIS_ UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount) PURE;
+    STDMETHOD(GetVertexShaderConstantI)(THIS_ UINT StartRegister, int* pConstantData, UINT Vector4iCount) PURE;
+    STDMETHOD(SetVertexShaderConstantB)(THIS_ UINT StartRegister, CONST BOOL* pConstantData, UINT  BoolCount) PURE;
+    STDMETHOD(GetVertexShaderConstantB)(THIS_ UINT StartRegister, BOOL* pConstantData, UINT BoolCount) PURE;
+    STDMETHOD(SetStreamSource)(THIS_ UINT StreamNumber, IDirect3DVertexBuffer9* pStreamData, UINT OffsetInBytes, UINT Stride) PURE;
+    STDMETHOD(GetStreamSource)(THIS_ UINT StreamNumber, IDirect3DVertexBuffer9** ppStreamData, UINT* OffsetInBytes, UINT* pStride) PURE;
+    STDMETHOD(SetStreamSourceFreq)(THIS_ UINT StreamNumber, UINT Divider) PURE;
+    STDMETHOD(GetStreamSourceFreq)(THIS_ UINT StreamNumber, UINT* Divider) PURE;
+    STDMETHOD(SetIndices)(THIS_ IDirect3DIndexBuffer9* pIndexData) PURE;
+    STDMETHOD(GetIndices)(THIS_ IDirect3DIndexBuffer9** ppIndexData) PURE;
+    STDMETHOD(CreatePixelShader)(THIS_ CONST DWORD* pFunction, IDirect3DPixelShader9** ppShader) PURE;
+    STDMETHOD(SetPixelShader)(THIS_ IDirect3DPixelShader9* pShader) PURE;
+    STDMETHOD(GetPixelShader)(THIS_ IDirect3DPixelShader9** ppShader) PURE;
+    STDMETHOD(SetPixelShaderConstantF)(THIS_ UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount) PURE;
+    STDMETHOD(GetPixelShaderConstantF)(THIS_ UINT StartRegister, float* pConstantData, UINT Vector4fCount) PURE;
+    STDMETHOD(SetPixelShaderConstantI)(THIS_ UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount) PURE;
+    STDMETHOD(GetPixelShaderConstantI)(THIS_ UINT StartRegister, int* pConstantData, UINT Vector4iCount) PURE;
+    STDMETHOD(SetPixelShaderConstantB)(THIS_ UINT StartRegister, CONST BOOL* pConstantData, UINT  BoolCount) PURE;
+    STDMETHOD(GetPixelShaderConstantB)(THIS_ UINT StartRegister, BOOL* pConstantData, UINT BoolCount) PURE;
+    STDMETHOD(DrawRectPatch)(THIS_ UINT Handle, CONST float* pNumSegs, CONST D3DRECTPATCH_INFO* pRectPatchInfo) PURE;
+    STDMETHOD(DrawTriPatch)(THIS_ UINT Handle, CONST float* pNumSegs, CONST D3DTRIPATCH_INFO* pTriPatchInfo) PURE;
+    STDMETHOD(DeletePatch)(THIS_ UINT Handle) PURE;
+    STDMETHOD(CreateQuery)(THIS_ D3DQUERYTYPE Type, IDirect3DQuery9** ppQuery) PURE;
+    /* IDirect3DDevice9Ex methods */
+    STDMETHOD(SetConvolutionMonoKernel)(THIS_ UINT width, UINT height, float *rows, float *columns) PURE;
+    STDMETHOD(ComposeRects)(THIS_ IDirect3DSurface9 *pSrc, IDirect3DDevice9 *pDst, IDirect3DVertexBuffer9 *pSrcRectDescs, UINT NumRects, IDirect3DVertexBuffer9 *pDstRectDescs, D3DCOMPOSERECTSOP Operation, int Xoffset, int Yoffset) PURE;
+    STDMETHOD(PresentEx)(THIS_ CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride, CONST RGNDATA *pDirtyRegion, DWORD dwFlags) PURE;
+    STDMETHOD(GetGPUThreadPriority)(THIS_ INT *pPriority) PURE;
+    STDMETHOD(SetGPUThreadPriority)(THIS_ INT Priority) PURE;
+    STDMETHOD(WaitForVBlank)(THIS_ UINT iSwapChain) PURE;
+    STDMETHOD(CheckresourceResidency)(THIS_ IDirect3DResource9 ** pResourceArray, UINT32 Numresources) PURE;
+    STDMETHOD(SetMaximumFrameLatency)(THIS_ UINT MaxLatency) PURE;
+    STDMETHOD(GetMaximumFrameLatency)(THIS_ UINT *pMaxLatenxy) PURE;
+    STDMETHOD(CheckdeviceState)(THIS_ HWND hDestinationWindow) PURE;
+    STDMETHOD(CreateRenderTargetEx)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultiSampleQuality, BOOL Lockable, IDirect3DSurface9 ** ppSurface, HANDLE *pSharedHandle, DWORD Usage) PURE;
+    STDMETHOD(CreateOffscreenPlainSurfaceEx)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DPOOL Pool, IDirect3DSurface9 **ppSurface, HANDLE *pSharedHandle, DWORD Usage) PURE;
+    STDMETHOD(CreateDepthStencilSurfaceEx)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultiSampleQuality, BOOL Discard, IDirect3DSurface9 **ppSurfface, HANDLE *pSharedHandle, DWORD Usage) PURE;
+    STDMETHOD(ResetEx)(THIS_ D3DPRESENT_PARAMETERS *pPresentationParameters, D3DDISPLAYMODEEX *pFullscreenDisplayMode) PURE;
+    STDMETHOD(GetDisplayModeEx)(THIS_ UINT iSwapChain, D3DDISPLAYMODEEX *pMode, D3DDISPLAYROTATION *pRotation) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DDevice9Ex_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DDevice9Ex_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirect3DDevice9Ex_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirect3DDevice9 methods ***/
+#define IDirect3DDevice9Ex_TestCooperativeLevel(p)                       (p)->lpVtbl->TestCooperativeLevel(p)
+#define IDirect3DDevice9Ex_GetAvailableTextureMem(p)                     (p)->lpVtbl->GetAvailableTextureMem(p)
+#define IDirect3DDevice9Ex_EvictManagedResources(p)                      (p)->lpVtbl->EvictManagedResources(p)
+#define IDirect3DDevice9Ex_GetDirect3D(p,a)                              (p)->lpVtbl->GetDirect3D(p,a)
+#define IDirect3DDevice9Ex_GetDeviceCaps(p,a)                            (p)->lpVtbl->GetDeviceCaps(p,a)
+#define IDirect3DDevice9Ex_GetDisplayMode(p,a,b)                         (p)->lpVtbl->GetDisplayMode(p,a,b)
+#define IDirect3DDevice9Ex_GetCreationParameters(p,a)                    (p)->lpVtbl->GetCreationParameters(p,a)
+#define IDirect3DDevice9Ex_SetCursorProperties(p,a,b,c)                  (p)->lpVtbl->SetCursorProperties(p,a,b,c)
+#define IDirect3DDevice9Ex_SetCursorPosition(p,a,b,c)                    (p)->lpVtbl->SetCursorPosition(p,a,b,c)
+#define IDirect3DDevice9Ex_ShowCursor(p,a)                               (p)->lpVtbl->ShowCursor(p,a)
+#define IDirect3DDevice9Ex_CreateAdditionalSwapChain(p,a,b)              (p)->lpVtbl->CreateAdditionalSwapChain(p,a,b)
+#define IDirect3DDevice9Ex_GetSwapChain(p,a,b)                           (p)->lpVtbl->GetSwapChain(p,a,b)
+#define IDirect3DDevice9Ex_GetNumberOfSwapChains(p)                      (p)->lpVtbl->GetNumberOfSwapChains(p)
+#define IDirect3DDevice9Ex_Reset(p,a)                                    (p)->lpVtbl->Reset(p,a)
+#define IDirect3DDevice9Ex_Present(p,a,b,c,d)                            (p)->lpVtbl->Present(p,a,b,c,d)
+#define IDirect3DDevice9Ex_GetBackBuffer(p,a,b,c,d)                      (p)->lpVtbl->GetBackBuffer(p,a,b,c,d)
+#define IDirect3DDevice9Ex_GetRasterStatus(p,a,b)                        (p)->lpVtbl->GetRasterStatus(p,a,b)
+#define IDirect3DDevice9Ex_SetDialogBoxMode(p,a)                         (p)->lpVtbl->SetDialogBoxMode(p,a)
+#define IDirect3DDevice9Ex_SetGammaRamp(p,a,b,c)                         (p)->lpVtbl->SetGammaRamp(p,a,b,c)
+#define IDirect3DDevice9Ex_GetGammaRamp(p,a,b)                           (p)->lpVtbl->GetGammaRamp(p,a,b)
+#define IDirect3DDevice9Ex_CreateTexture(p,a,b,c,d,e,f,g,h)              (p)->lpVtbl->CreateTexture(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9Ex_CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)      (p)->lpVtbl->CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)
+#define IDirect3DDevice9Ex_CreateCubeTexture(p,a,b,c,d,e,f,g)            (p)->lpVtbl->CreateCubeTexture(p,a,b,c,d,e,f,g)
+#define IDirect3DDevice9Ex_CreateVertexBuffer(p,a,b,c,d,e,f)             (p)->lpVtbl->CreateVertexBuffer(p,a,b,c,d,e,f)
+#define IDirect3DDevice9Ex_CreateIndexBuffer(p,a,b,c,d,e,f)              (p)->lpVtbl->CreateIndexBuffer(p,a,b,c,d,e,f)
+#define IDirect3DDevice9Ex_CreateRenderTarget(p,a,b,c,d,e,f,g,h)         (p)->lpVtbl->CreateRenderTarget(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9Ex_CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)  (p)->lpVtbl->CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9Ex_UpdateSurface(p,a,b,c,d)                      (p)->lpVtbl->UpdateSurface(p,a,b,c,d)
+#define IDirect3DDevice9Ex_UpdateTexture(p,a,b)                          (p)->lpVtbl->UpdateTexture(p,a,b)
+#define IDirect3DDevice9Ex_GetRenderTargetData(p,a,b)                    (p)->lpVtbl->GetRenderTargetData(p,a,b)
+#define IDirect3DDevice9Ex_GetFrontBufferData(p,a,b)                     (p)->lpVtbl->GetFrontBufferData(p,a,b)
+#define IDirect3DDevice9Ex_StretchRect(p,a,b,c,d,e)                      (p)->lpVtbl->StretchRect(p,a,b,c,d,e)
+#define IDirect3DDevice9Ex_ColorFill(p,a,b,c)                            (p)->lpVtbl->ColorFill(p,a,b,c)
+#define IDirect3DDevice9Ex_CreateOffscreenPlainSurface(p,a,b,c,d,e,f)    (p)->lpVtbl->CreateOffscreenPlainSurface(p,a,b,c,d,e,f)
+#define IDirect3DDevice9Ex_SetRenderTarget(p,a,b)                        (p)->lpVtbl->SetRenderTarget(p,a,b)
+#define IDirect3DDevice9Ex_GetRenderTarget(p,a,b)                        (p)->lpVtbl->GetRenderTarget(p,a,b)
+#define IDirect3DDevice9Ex_SetDepthStencilSurface(p,a)                   (p)->lpVtbl->SetDepthStencilSurface(p,a)
+#define IDirect3DDevice9Ex_GetDepthStencilSurface(p,a)                   (p)->lpVtbl->GetDepthStencilSurface(p,a)
+#define IDirect3DDevice9Ex_BeginScene(p)                                 (p)->lpVtbl->BeginScene(p)
+#define IDirect3DDevice9Ex_EndScene(p)                                   (p)->lpVtbl->EndScene(p)
+#define IDirect3DDevice9Ex_Clear(p,a,b,c,d,e,f)                          (p)->lpVtbl->Clear(p,a,b,c,d,e,f)
+#define IDirect3DDevice9Ex_SetTransform(p,a,b)                           (p)->lpVtbl->SetTransform(p,a,b)
+#define IDirect3DDevice9Ex_GetTransform(p,a,b)                           (p)->lpVtbl->GetTransform(p,a,b)
+#define IDirect3DDevice9Ex_MultiplyTransform(p,a,b)                      (p)->lpVtbl->MultiplyTransform(p,a,b)
+#define IDirect3DDevice9Ex_SetViewport(p,a)                              (p)->lpVtbl->SetViewport(p,a)
+#define IDirect3DDevice9Ex_GetViewport(p,a)                              (p)->lpVtbl->GetViewport(p,a)
+#define IDirect3DDevice9Ex_SetMaterial(p,a)                              (p)->lpVtbl->SetMaterial(p,a)
+#define IDirect3DDevice9Ex_GetMaterial(p,a)                              (p)->lpVtbl->GetMaterial(p,a)
+#define IDirect3DDevice9Ex_SetLight(p,a,b)                               (p)->lpVtbl->SetLight(p,a,b)
+#define IDirect3DDevice9Ex_GetLight(p,a,b)                               (p)->lpVtbl->GetLight(p,a,b)
+#define IDirect3DDevice9Ex_LightEnable(p,a,b)                            (p)->lpVtbl->LightEnable(p,a,b)
+#define IDirect3DDevice9Ex_GetLightEnable(p,a,b)                         (p)->lpVtbl->GetLightEnable(p,a,b)
+#define IDirect3DDevice9Ex_SetClipPlane(p,a,b)                           (p)->lpVtbl->SetClipPlane(p,a,b)
+#define IDirect3DDevice9Ex_GetClipPlane(p,a,b)                           (p)->lpVtbl->GetClipPlane(p,a,b)
+#define IDirect3DDevice9Ex_SetRenderState(p,a,b)                         (p)->lpVtbl->SetRenderState(p,a,b)
+#define IDirect3DDevice9Ex_GetRenderState(p,a,b)                         (p)->lpVtbl->GetRenderState(p,a,b)
+#define IDirect3DDevice9Ex_CreateStateBlock(p,a,b)                       (p)->lpVtbl->CreateStateBlock(p,a,b)
+#define IDirect3DDevice9Ex_BeginStateBlock(p)                            (p)->lpVtbl->BeginStateBlock(p)
+#define IDirect3DDevice9Ex_EndStateBlock(p,a)                            (p)->lpVtbl->EndStateBlock(p,a)
+#define IDirect3DDevice9Ex_SetClipStatus(p,a)                            (p)->lpVtbl->SetClipStatus(p,a)
+#define IDirect3DDevice9Ex_GetClipStatus(p,a)                            (p)->lpVtbl->GetClipStatus(p,a)
+#define IDirect3DDevice9Ex_GetTexture(p,a,b)                             (p)->lpVtbl->GetTexture(p,a,b)
+#define IDirect3DDevice9Ex_SetTexture(p,a,b)                             (p)->lpVtbl->SetTexture(p,a,b)
+#define IDirect3DDevice9Ex_GetTextureStageState(p,a,b,c)                 (p)->lpVtbl->GetTextureStageState(p,a,b,c)
+#define IDirect3DDevice9Ex_SetTextureStageState(p,a,b,c)                 (p)->lpVtbl->SetTextureStageState(p,a,b,c)
+#define IDirect3DDevice9Ex_GetSamplerState(p,a,b,c)                      (p)->lpVtbl->GetSamplerState(p,a,b,c)
+#define IDirect3DDevice9Ex_SetSamplerState(p,a,b,c)                      (p)->lpVtbl->SetSamplerState(p,a,b,c)
+#define IDirect3DDevice9Ex_ValidateDevice(p,a)                           (p)->lpVtbl->ValidateDevice(p,a)
+#define IDirect3DDevice9Ex_SetPaletteEntries(p,a,b)                      (p)->lpVtbl->SetPaletteEntries(p,a,b)
+#define IDirect3DDevice9Ex_GetPaletteEntries(p,a,b)                      (p)->lpVtbl->GetPaletteEntries(p,a,b)
+#define IDirect3DDevice9Ex_SetCurrentTexturePalette(p,a)                 (p)->lpVtbl->SetCurrentTexturePalette(p,a)
+#define IDirect3DDevice9Ex_GetCurrentTexturePalette(p,a)                 (p)->lpVtbl->GetCurrentTexturePalette(p,a)
+#define IDirect3DDevice9Ex_SetScissorRect(p,a)                           (p)->lpVtbl->SetScissorRect(p,a)
+#define IDirect3DDevice9Ex_GetScissorRect(p,a)                           (p)->lpVtbl->GetScissorRect(p,a)
+#define IDirect3DDevice9Ex_SetSoftwareVertexProcessing(p,a)              (p)->lpVtbl->SetSoftwareVertexProcessing(p,a)
+#define IDirect3DDevice9Ex_GetSoftwareVertexProcessing(p)                (p)->lpVtbl->GetSoftwareVertexProcessing(p)
+#define IDirect3DDevice9Ex_SetNPatchMode(p,a)                            (p)->lpVtbl->SetNPatchMode(p,a)
+#define IDirect3DDevice9Ex_GetNPatchMode(p)                              (p)->lpVtbl->GetNPatchMode(p)
+#define IDirect3DDevice9Ex_DrawPrimitive(p,a,b,c)                        (p)->lpVtbl->DrawPrimitive(p,a,b,c)
+#define IDirect3DDevice9Ex_DrawIndexedPrimitive(p,a,b,c,d,e,f)           (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e,f)
+#define IDirect3DDevice9Ex_DrawPrimitiveUP(p,a,b,c,d)                    (p)->lpVtbl->DrawPrimitiveUP(p,a,b,c,d)
+#define IDirect3DDevice9Ex_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)     (p)->lpVtbl->DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9Ex_ProcessVertices(p,a,b,c,d,e,f)                (p)->lpVtbl->ProcessVertices(p,a,b,c,d,e,f)
+#define IDirect3DDevice9Ex_CreateVertexDeclaration(p,a,b)                (p)->lpVtbl->CreateVertexDeclaration(p,a,b)
+#define IDirect3DDevice9Ex_SetVertexDeclaration(p,a)                     (p)->lpVtbl->SetVertexDeclaration(p,a)
+#define IDirect3DDevice9Ex_GetVertexDeclaration(p,a)                     (p)->lpVtbl->GetVertexDeclaration(p,a)
+#define IDirect3DDevice9Ex_SetFVF(p,a)                                   (p)->lpVtbl->SetFVF(p,a)
+#define IDirect3DDevice9Ex_GetFVF(p,a)                                   (p)->lpVtbl->GetFVF(p,a)
+#define IDirect3DDevice9Ex_CreateVertexShader(p,a,b)                     (p)->lpVtbl->CreateVertexShader(p,a,b)
+#define IDirect3DDevice9Ex_SetVertexShader(p,a)                          (p)->lpVtbl->SetVertexShader(p,a)
+#define IDirect3DDevice9Ex_GetVertexShader(p,a)                          (p)->lpVtbl->GetVertexShader(p,a)
+#define IDirect3DDevice9Ex_SetVertexShaderConstantF(p,a,b,c)             (p)->lpVtbl->SetVertexShaderConstantF(p,a,b,c)
+#define IDirect3DDevice9Ex_GetVertexShaderConstantF(p,a,b,c)             (p)->lpVtbl->GetVertexShaderConstantF(p,a,b,c)
+#define IDirect3DDevice9Ex_SetVertexShaderConstantI(p,a,b,c)             (p)->lpVtbl->SetVertexShaderConstantI(p,a,b,c)
+#define IDirect3DDevice9Ex_GetVertexShaderConstantI(p,a,b,c)             (p)->lpVtbl->GetVertexShaderConstantI(p,a,b,c)
+#define IDirect3DDevice9Ex_SetVertexShaderConstantB(p,a,b,c)             (p)->lpVtbl->SetVertexShaderConstantB(p,a,b,c)
+#define IDirect3DDevice9Ex_GetVertexShaderConstantB(p,a,b,c)             (p)->lpVtbl->GetVertexShaderConstantB(p,a,b,c)
+#define IDirect3DDevice9Ex_SetStreamSource(p,a,b,c,d)                    (p)->lpVtbl->SetStreamSource(p,a,b,c,d)
+#define IDirect3DDevice9Ex_GetStreamSource(p,a,b,c,d)                    (p)->lpVtbl->GetStreamSource(p,a,b,c,d)
+#define IDirect3DDevice9Ex_SetStreamSourceFreq(p,a,b)                    (p)->lpVtbl->SetStreamSourceFreq(p,a,b)
+#define IDirect3DDevice9Ex_GetStreamSourceFreq(p,a,b)                    (p)->lpVtbl->GetStreamSourceFreq(p,a,b)
+#define IDirect3DDevice9Ex_SetIndices(p,a)                               (p)->lpVtbl->SetIndices(p,a)
+#define IDirect3DDevice9Ex_GetIndices(p,a)                               (p)->lpVtbl->GetIndices(p,a)
+#define IDirect3DDevice9Ex_CreatePixelShader(p,a,b)                      (p)->lpVtbl->CreatePixelShader(p,a,b)
+#define IDirect3DDevice9Ex_SetPixelShader(p,a)                           (p)->lpVtbl->SetPixelShader(p,a)
+#define IDirect3DDevice9Ex_GetPixelShader(p,a)                           (p)->lpVtbl->GetPixelShader(p,a)
+#define IDirect3DDevice9Ex_SetPixelShaderConstantF(p,a,b,c)              (p)->lpVtbl->SetPixelShaderConstantF(p,a,b,c)
+#define IDirect3DDevice9Ex_GetPixelShaderConstantF(p,a,b,c)              (p)->lpVtbl->GetPixelShaderConstantF(p,a,b,c)
+#define IDirect3DDevice9Ex_SetPixelShaderConstantI(p,a,b,c)              (p)->lpVtbl->SetPixelShaderConstantI(p,a,b,c)
+#define IDirect3DDevice9Ex_GetPixelShaderConstantI(p,a,b,c)              (p)->lpVtbl->GetPixelShaderConstantI(p,a,b,c)
+#define IDirect3DDevice9Ex_SetPixelShaderConstantB(p,a,b,c)              (p)->lpVtbl->SetPixelShaderConstantB(p,a,b,c)
+#define IDirect3DDevice9Ex_GetPixelShaderConstantB(p,a,b,c)              (p)->lpVtbl->GetPixelShaderConstantB(p,a,b,c)
+#define IDirect3DDevice9Ex_DrawRectPatch(p,a,b,c)                        (p)->lpVtbl->DrawRectPatch(p,a,b,c)
+#define IDirect3DDevice9Ex_DrawTriPatch(p,a,b,c)                         (p)->lpVtbl->DrawTriPatch(p,a,b,c)
+#define IDirect3DDevice9Ex_DeletePatch(p,a)                              (p)->lpVtbl->DeletePatch(p,a)
+#define IDirect3DDevice9Ex_CreateQuery(p,a,b)                            (p)->lpVtbl->CreateQuery(p,a,b)
+/* IDirect3DDevice9Ex */
+#define IDirect3DDevice9Ex_SetConvolutionMonoKernel(p,a,b,c,d)           (p)->lpVtbl->SetConvolutionMonoKernel(p,a,b,c,d)
+#define IDirect3DDevice9Ex_ComposeRects(p,a,b,c,d,e,f,g,h)               (p)->lpVtbl->ComposeRects(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9Ex_PresentEx(p,a,b,c,d,e)                        (p)->lpVtbl->PresentEx(p,a,b,c,d,e)
+#define IDirect3DDevice9Ex_GetGPUThreadPriority(p,a)                     (p)->lpVtbl->GetGPUThreadPriority(p,a)
+#define IDirect3DDevice9Ex_SetGPUThreadPriority(p,a)                     (p)->lpVtbl->SetGPUThreadPriority(p,a)
+#define IDirect3DDevice9Ex_WaitForVBlank(p,a)                            (p)->lpVtbl->WaitForVBlank(p,a)
+#define IDirect3DDevice9Ex_CheckResourceResidency(p,a,b)                 (p)->lpVtbl->CheckResourceResidency(p,a,b)
+#define IDirect3DDevice9Ex_SetMaximumFrameLatency(p,a)                   (p)->lpVtbl->SetMaximumFrameLatency(p,a)
+#define IDirect3DDevice9Ex_GetMaximumFrameLatency(p,a)                   (p)->lpVtbl->GetMaximumFrameLatency(p,a)
+#define IDirect3DDevice9Ex_CheckDeviceState(p,a)                         (p)->lpVtbl->CheckDeviceState(p,a)
+#define IDirect3DDevice9Ex_CreateRenderTargetEx(p,a,b,c,d,e,f,g,h,i)     (p)->lpVtbl->CreateRenderTargetEx(p,a,b,c,d,e,f,g,h,i)
+#define IDirect3DDevice9Ex_CreateOffscreenPlainSurfaceEx(p,a,b,c,d,e,f,g)(p)->lpVtbl->CreateOffscreenPlainSurfaceEx(p,a,b,c,d,e,f,g)
+#define IDirect3DDevice9Ex_CreateDepthStencilSurfaceEx(p,a,b,c,d,e,f,g,h,i)(p)->lpVtbl->CreateDepthStencilSurfaceEx(p,a,b,c,d,e,f,g,h,i)
+#define IDirect3DDevice9Ex_ResetEx(p,a,b)                                 (p)->lpVtbl->ResetEx(p,a,b)
+#define IDirect3DDevice9Ex_GetDisplayModeEx(p,a,b,c)                     (p)->lpVtbl->GetDisplayModeEx(p,a,b,c)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DDevice9Ex_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DDevice9Ex_AddRef(p)             (p)->AddRef()
+#define IDirect3DDevice9Ex_Release(p)            (p)->Release()
+/*** IDirect3DDevice9 methods ***/
+#define IDirect3DDevice9Ex_TestCooperativeLevel(p)                       (p)->TestCooperativeLevel()
+#define IDirect3DDevice9Ex_GetAvailableTextureMem(p)                     (p)->GetAvailableTextureMem()
+#define IDirect3DDevice9Ex_EvictManagedResources(p)                      (p)->EvictManagedResources()
+#define IDirect3DDevice9Ex_GetDirect3D(p,a)                              (p)->GetDirect3D(a)
+#define IDirect3DDevice9Ex_GetDeviceCaps(p,a)                            (p)->GetDeviceCaps(a)
+#define IDirect3DDevice9Ex_GetDisplayMode(p,a,b)                         (p)->GetDisplayMode(a,b)
+#define IDirect3DDevice9Ex_GetCreationParameters(p,a)                    (p)->GetCreationParameters(a)
+#define IDirect3DDevice9Ex_SetCursorProperties(p,a,b,c)                  (p)->SetCursorProperties(a,b,c)
+#define IDirect3DDevice9Ex_SetCursorPosition(p,a,b,c)                    (p)->SetCursorPosition(a,b,c)
+#define IDirect3DDevice9Ex_ShowCursor(p,a)                               (p)->ShowCursor(a)
+#define IDirect3DDevice9Ex_CreateAdditionalSwapChain(p,a,b)              (p)->CreateAdditionalSwapChain(a,b)
+#define IDirect3DDevice9Ex_GetSwapChain(p,a,b)                           (p)->GetSwapChain(a,b)
+#define IDirect3DDevice9Ex_GetNumberOfSwapChains(p)                      (p)->GetNumberOfSwapChains()
+#define IDirect3DDevice9Ex_Reset(p,a)                                    (p)->Reset(a)
+#define IDirect3DDevice9Ex_Present(p,a,b,c,d)                            (p)->Present(a,b,c,d)
+#define IDirect3DDevice9Ex_GetBackBuffer(p,a,b,c,d)                      (p)->GetBackBuffer(a,b,c,d)
+#define IDirect3DDevice9Ex_GetRasterStatus(p,a,b)                        (p)->GetRasterStatus(a,b)
+#define IDirect3DDevice9Ex_SetDialogBoxMode(p,a)                         (p)->SetDialogBoxMode(a)
+#define IDirect3DDevice9Ex_SetGammaRamp(p,a,b,c)                         (p)->SetGammaRamp(a,b,c)
+#define IDirect3DDevice9Ex_GetGammaRamp(p,a,b)                           (p)->GetGammaRamp(a,b)
+#define IDirect3DDevice9Ex_CreateTexture(p,a,b,c,d,e,f,g,h)              (p)->CreateTexture(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9Ex_CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)      (p)->CreateVolumeTexture(a,b,c,d,e,f,g,h,i)
+#define IDirect3DDevice9Ex_CreateCubeTexture(p,a,b,c,d,e,f,g)            (p)->CreateCubeTexture(a,b,c,d,e,f,g)
+#define IDirect3DDevice9Ex_CreateVertexBuffer(p,a,b,c,d,e,f)             (p)->CreateVertexBuffer(a,b,c,d,e,f)
+#define IDirect3DDevice9Ex_CreateIndexBuffer(p,a,b,c,d,e,f)              (p)->CreateIndexBuffer(a,b,c,d,e,f)
+#define IDirect3DDevice9Ex_CreateRenderTarget(p,a,b,c,d,e,f,g,h)         (p)->CreateRenderTarget(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9Ex_CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)  (p)->CreateDepthStencilSurface(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9Ex_UpdateSurface(p,a,b,c,d)                      (p)->UpdateSurface(a,b,c,d)
+#define IDirect3DDevice9Ex_UpdateTexture(p,a,b)                          (p)->UpdateTexture(a,b)
+#define IDirect3DDevice9Ex_GetRenderTargetData(p,a,b)                    (p)->GetRenderTargetData(a,b)
+#define IDirect3DDevice9Ex_GetFrontBufferData(p,a,b)                     (p)->GetFrontBufferData(a,b)
+#define IDirect3DDevice9Ex_StretchRect(p,a,b,c,d,e)                      (p)->StretchRect(a,b,c,d,e)
+#define IDirect3DDevice9Ex_ColorFill(p,a,b,c)                            (p)->ColorFill(a,b,c)
+#define IDirect3DDevice9Ex_CreateOffscreenPlainSurface(p,a,b,c,d,e,f)    (p)->CreateOffscreenPlainSurface(a,b,c,d,e,f)
+#define IDirect3DDevice9Ex_SetRenderTarget(p,a,b)                        (p)->SetRenderTarget(a,b)
+#define IDirect3DDevice9Ex_GetRenderTarget(p,a,b)                        (p)->GetRenderTarget(a,b)
+#define IDirect3DDevice9Ex_SetDepthStencilSurface(p,a)                   (p)->SetDepthStencilSurface(a)
+#define IDirect3DDevice9Ex_GetDepthStencilSurface(p,a)                   (p)->GetDepthStencilSurface(a)
+#define IDirect3DDevice9Ex_BeginScene(p)                                 (p)->BeginScene()
+#define IDirect3DDevice9Ex_EndScene(p)                                   (p)->EndScene()
+#define IDirect3DDevice9Ex_Clear(p,a,b,c,d,e,f)                          (p)->Clear(a,b,c,d,e,f)
+#define IDirect3DDevice9Ex_SetTransform(p,a,b)                           (p)->SetTransform(a,b)
+#define IDirect3DDevice9Ex_GetTransform(p,a,b)                           (p)->GetTransform(a,b)
+#define IDirect3DDevice9Ex_MultiplyTransform(p,a,b)                      (p)->MultiplyTransform(a,b)
+#define IDirect3DDevice9Ex_SetViewport(p,a)                              (p)->SetViewport(a)
+#define IDirect3DDevice9Ex_GetViewport(p,a)                              (p)->GetViewport(a)
+#define IDirect3DDevice9Ex_SetMaterial(p,a)                              (p)->SetMaterial(a)
+#define IDirect3DDevice9Ex_GetMaterial(p,a)                              (p)->GetMaterial(a)
+#define IDirect3DDevice9Ex_SetLight(p,a,b)                               (p)->SetLight(a,b)
+#define IDirect3DDevice9Ex_GetLight(p,a,b)                               (p)->GetLight(a,b)
+#define IDirect3DDevice9Ex_LightEnable(p,a,b)                            (p)->LightEnable(a,b)
+#define IDirect3DDevice9Ex_GetLightEnable(p,a,b)                         (p)->GetLightEnable(a,b)
+#define IDirect3DDevice9Ex_SetClipPlane(p,a,b)                           (p)->SetClipPlane(a,b)
+#define IDirect3DDevice9Ex_GetClipPlane(p,a,b)                           (p)->GetClipPlane(a,b)
+#define IDirect3DDevice9Ex_SetRenderState(p,a,b)                         (p)->SetRenderState(a,b)
+#define IDirect3DDevice9Ex_GetRenderState(p,a,b)                         (p)->GetRenderState(a,b)
+#define IDirect3DDevice9Ex_CreateStateBlock(p,a,b)                       (p)->CreateStateBlock(a,b)
+#define IDirect3DDevice9Ex_BeginStateBlock(p)                            (p)->BeginStateBlock()
+#define IDirect3DDevice9Ex_EndStateBlock(p,a)                            (p)->EndStateBlock(a)
+#define IDirect3DDevice9Ex_SetClipStatus(p,a)                            (p)->SetClipStatus(a)
+#define IDirect3DDevice9Ex_GetClipStatus(p,a)                            (p)->GetClipStatus(a)
+#define IDirect3DDevice9Ex_GetTexture(p,a,b)                             (p)->GetTexture(a,b)
+#define IDirect3DDevice9Ex_SetTexture(p,a,b)                             (p)->SetTexture(a,b)
+#define IDirect3DDevice9Ex_GetTextureStageState(p,a,b,c)                 (p)->GetTextureStageState(a,b,c)
+#define IDirect3DDevice9Ex_SetTextureStageState(p,a,b,c)                 (p)->SetTextureStageState(a,b,c)
+#define IDirect3DDevice9Ex_GetSamplerState(p,a,b,c)                      (p)->GetSamplerState(a,b,c)
+#define IDirect3DDevice9Ex_SetSamplerState(p,a,b,c)                      (p)->SetSamplerState(a,b,c)
+#define IDirect3DDevice9Ex_ValidateDevice(p,a)                           (p)->ValidateDevice(a)
+#define IDirect3DDevice9Ex_SetPaletteEntries(p,a,b)                      (p)->SetPaletteEntries(a,b)
+#define IDirect3DDevice9Ex_GetPaletteEntries(p,a,b)                      (p)->GetPaletteEntries(a,b)
+#define IDirect3DDevice9Ex_SetCurrentTexturePalette(p,a)                 (p)->SetCurrentTexturePalette(a)
+#define IDirect3DDevice9Ex_GetCurrentTexturePalette(p,a)                 (p)->GetCurrentTexturePalette(a)
+#define IDirect3DDevice9Ex_SetScissorRect(p,a)                           (p)->SetScissorRect(a)
+#define IDirect3DDevice9Ex_GetScissorRect(p,a)                           (p)->GetScissorRect(a)
+#define IDirect3DDevice9Ex_SetSoftwareVertexProcessing(p,a)              (p)->SetSoftwareVertexProcessing(a)
+#define IDirect3DDevice9Ex_GetSoftwareVertexProcessing(p)                (p)->GetSoftwareVertexProcessing()
+#define IDirect3DDevice9Ex_SetNPatchMode(p,a)                            (p)->SetNPatchMode(a)
+#define IDirect3DDevice9Ex_GetNPatchMode(p)                              (p)->GetNPatchMode()
+#define IDirect3DDevice9Ex_DrawPrimitive(p,a,b,c)                        (p)->DrawPrimitive(a,b,c)
+#define IDirect3DDevice9Ex_DrawIndexedPrimitive(p,a,b,c,d,e,f)           (p)->DrawIndexedPrimitive(a,b,c,d,e,f)
+#define IDirect3DDevice9Ex_DrawPrimitiveUP(p,a,b,c,d)                    (p)->DrawPrimitiveUP(a,b,c,d)
+#define IDirect3DDevice9Ex_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)     (p)->DrawIndexedPrimitiveUP(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9Ex_ProcessVertices(p,a,b,c,d,e,f)                (p)->ProcessVertices(a,b,c,d,e,f)
+#define IDirect3DDevice9Ex_CreateVertexDeclaration(p,a,b)                (p)->CreateVertexDeclaration(a,b)
+#define IDirect3DDevice9Ex_SetVertexDeclaration(p,a)                     (p)->SetVertexDeclaration(a)
+#define IDirect3DDevice9Ex_GetVertexDeclaration(p,a)                     (p)->GetVertexDeclaration(a)
+#define IDirect3DDevice9Ex_SetFVF(p,a)                                   (p)->SetFVF(a)
+#define IDirect3DDevice9Ex_GetFVF(p,a)                                   (p)->GetFVF(a)
+#define IDirect3DDevice9Ex_CreateVertexShader(p,a,b)                     (p)->CreateVertexShader(a,b)
+#define IDirect3DDevice9Ex_SetVertexShader(p,a)                          (p)->SetVertexShader(a)
+#define IDirect3DDevice9Ex_GetVertexShader(p,a)                          (p)->GetVertexShader(a)
+#define IDirect3DDevice9Ex_SetVertexShaderConstantF(p,a,b,c)             (p)->SetVertexShaderConstantF(a,b,c)
+#define IDirect3DDevice9Ex_GetVertexShaderConstantF(p,a,b,c)             (p)->GetVertexShaderConstantF(a,b,c)
+#define IDirect3DDevice9Ex_SetVertexShaderConstantI(p,a,b,c)             (p)->SetVertexShaderConstantI(a,b,c)
+#define IDirect3DDevice9Ex_GetVertexShaderConstantI(p,a,b,c)             (p)->GetVertexShaderConstantI(a,b,c)
+#define IDirect3DDevice9Ex_SetVertexShaderConstantB(p,a,b,c)             (p)->SetVertexShaderConstantB(a,b,c)
+#define IDirect3DDevice9Ex_GetVertexShaderConstantB(p,a,b,c)             (p)->GetVertexShaderConstantB(a,b,c)
+#define IDirect3DDevice9Ex_SetStreamSource(p,a,b,c,d)                    (p)->SetStreamSource(a,b,c,d)
+#define IDirect3DDevice9Ex_GetStreamSource(p,a,b,c,d)                    (p)->GetStreamSource(a,b,c,d)
+#define IDirect3DDevice9Ex_SetStreamSourceFreq(p,a,b)                    (p)->SetStreamSourceFreq(a,b)
+#define IDirect3DDevice9Ex_GetStreamSourceFreq(p,a,b)                    (p)->GetStreamSourceFreq(a,b)
+#define IDirect3DDevice9Ex_SetIndices(p,a)                               (p)->SetIndices(a)
+#define IDirect3DDevice9Ex_GetIndices(p,a)                               (p)->GetIndices(a)
+#define IDirect3DDevice9Ex_CreatePixelShader(p,a,b)                      (p)->CreatePixelShader(a,b)
+#define IDirect3DDevice9Ex_SetPixelShader(p,a)                           (p)->SetPixelShader(a)
+#define IDirect3DDevice9Ex_GetPixelShader(p,a)                           (p)->GetPixelShader(a)
+#define IDirect3DDevice9Ex_SetPixelShaderConstantF(p,a,b,c)              (p)->SetPixelShaderConstantF(a,b,c)
+#define IDirect3DDevice9Ex_GetPixelShaderConstantF(p,a,b,c)              (p)->GetPixelShaderConstantF(a,b,c)
+#define IDirect3DDevice9Ex_SetPixelShaderConstantI(p,a,b,c)              (p)->SetPixelShaderConstantI(a,b,c)
+#define IDirect3DDevice9Ex_GetPixelShaderConstantI(p,a,b,c)              (p)->GetPixelShaderConstantI(a,b,c)
+#define IDirect3DDevice9Ex_SetPixelShaderConstantB(p,a,b,c)              (p)->SetPixelShaderConstantB(a,b,c)
+#define IDirect3DDevice9Ex_GetPixelShaderConstantB(p,a,b,c)              (p)->GetPixelShaderConstantB(a,b,c)
+#define IDirect3DDevice9Ex_DrawRectPatch(p,a,b,c)                        (p)->DrawRectPatch(a,b,c)
+#define IDirect3DDevice9Ex_DrawTriPatch(p,a,b,c)                         (p)->DrawTriPatch(a,b,c)
+#define IDirect3DDevice9Ex_DeletePatch(p,a)                              (p)->DeletePatch(a)
+#define IDirect3DDevice9Ex_CreateQuery(p,a,b)                            (p)->CreateQuery(a,b)
+/* IDirect3DDevice9Ex */
+#define IDirect3DDevice9Ex_SetConvolutionMonoKernel(p,a,b,c,d)           (p)->SetConvolutionMonoKernel(a,b,c,d)
+#define IDirect3DDevice9Ex_ComposeRects(p,a,b,c,d,e,f,g,h)               (p)->ComposeRects(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9Ex_PresentEx(p,a,b,c,d,e)                        (p)->PresentEx(a,b,c,d,e)
+#define IDirect3DDevice9Ex_GetGPUThreadPriority(p,a)                     (p)->GetGPUThreadPriority(a)
+#define IDirect3DDevice9Ex_SetGPUThreadPriority(p,a)                     (p)->SetGPUThreadPriority(a)
+#define IDirect3DDevice9Ex_WaitForVBlank(p,a)                            (p)->WaitForVBlank(a)
+#define IDirect3DDevice9Ex_CheckResourceResidency(p,a,b)                 (p)->CheckResourceResidency(a,b)
+#define IDirect3DDevice9Ex_SetMaximumFrameLatency(p,a)                   (p)->SetMaximumFrameLatency(a)
+#define IDirect3DDevice9Ex_GetMaximumFrameLatency(p,a)                   (p)->GetMaximumFrameLatency(a)
+#define IDirect3DDevice9Ex_CheckDeviceState(p,a)                         (p)->CheckDeviceState(a)
+#define IDirect3DDevice9Ex_CreateRenderTargetEx(p,a,b,c,d,e,f,g,h,i)     (p)->CreateRenderTargetEx(a,b,c,d,e,f,g,h,i)
+#define IDirect3DDevice9Ex_CreateOffscreenPlainSurfaceEx(p,a,b,c,d,e,f,g)(p)->CreateOffscreenPlainSurfaceEx(a,b,c,d,e,f,g)
+#define IDirect3DDevice9Ex_CreateDepthStencilSurfaceEx(p,a,b,c,d,e,f,g,h,i)(p)->CreateDepthStencilSurfaceEx(a,b,c,d,e,f,g,h,i)
+#define IDirect3DDevice9Ex_ResetEx(p,a,b)                                (p)->ResetEx(a,b)
+#define IDirect3DDevice9Ex_GetDisplayModeEx(p,a,b,c)                     (p)->GetDisplayModeEx(a,b,c)
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif  /* defined(__cplusplus) */
+
+int         WINAPI D3DPERF_BeginEvent(D3DCOLOR,LPCWSTR);
+int         WINAPI D3DPERF_EndEvent(void);
+DWORD       WINAPI D3DPERF_GetStatus(void);
+BOOL        WINAPI D3DPERF_QueryRepeatFrame(void);
+void        WINAPI D3DPERF_SetMarker(D3DCOLOR,LPCWSTR);
+void        WINAPI D3DPERF_SetOptions(DWORD);
+void        WINAPI D3DPERF_SetRegion(D3DCOLOR,LPCWSTR);
+
+/* Define the main entrypoint as well */
+IDirect3D9* WINAPI Direct3DCreate9(UINT SDKVersion);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+
+#endif /* __WINE_D3D9_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3d9caps.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3d9caps.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3d9caps.h	(revision 16410)
@@ -0,0 +1,395 @@
+/*
+ * Copyright (C) 2002-2003 Jason Edmeades
+ *                         Raphael Junqueira
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_D3D9CAPS_H
+#define __WINE_D3D9CAPS_H
+
+/*
+ * Definitions
+ */
+#define D3DCAPS_READ_SCANLINE 0x20000
+
+#define D3DCURSORCAPS_COLOR   1
+#define D3DCURSORCAPS_LOWRES  2
+
+
+#define D3DDEVCAPS2_STREAMOFFSET                        0x00000001L
+#define D3DDEVCAPS2_DMAPNPATCH                          0x00000002L
+#define D3DDEVCAPS2_ADAPTIVETESSRTPATCH                 0x00000004L
+#define D3DDEVCAPS2_ADAPTIVETESSNPATCH                  0x00000008L
+#define D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES       0x00000010L
+#define D3DDEVCAPS2_PRESAMPLEDDMAPNPATCH                0x00000020L
+#define D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET  0x00000040L
+
+#define D3DDEVCAPS_EXECUTESYSTEMMEMORY     0x0000010
+#define D3DDEVCAPS_EXECUTEVIDEOMEMORY      0x0000020
+#define D3DDEVCAPS_TLVERTEXSYSTEMMEMORY    0x0000040
+#define D3DDEVCAPS_TLVERTEXVIDEOMEMORY     0x0000080
+#define D3DDEVCAPS_TEXTURESYSTEMMEMORY     0x0000100
+#define D3DDEVCAPS_TEXTUREVIDEOMEMORY      0x0000200
+#define D3DDEVCAPS_DRAWPRIMTLVERTEX        0x0000400
+#define D3DDEVCAPS_CANRENDERAFTERFLIP      0x0000800
+#define D3DDEVCAPS_TEXTURENONLOCALVIDMEM   0x0001000
+#define D3DDEVCAPS_DRAWPRIMITIVES2         0x0002000
+#define D3DDEVCAPS_SEPARATETEXTUREMEMORIES 0x0004000
+#define D3DDEVCAPS_DRAWPRIMITIVES2EX       0x0008000
+#define D3DDEVCAPS_HWTRANSFORMANDLIGHT     0x0010000
+#define D3DDEVCAPS_CANBLTSYSTONONLOCAL     0x0020000
+#define D3DDEVCAPS_HWRASTERIZATION         0x0080000
+#define D3DDEVCAPS_PUREDEVICE              0x0100000
+#define D3DDEVCAPS_QUINTICRTPATCHES        0x0200000
+#define D3DDEVCAPS_RTPATCHES               0x0400000
+#define D3DDEVCAPS_RTPATCHHANDLEZERO       0x0800000
+#define D3DDEVCAPS_NPATCHES                0x1000000
+
+#define D3DFVFCAPS_TEXCOORDCOUNTMASK  0x00FFFF
+#define D3DFVFCAPS_DONOTSTRIPELEMENTS 0x080000
+#define D3DFVFCAPS_PSIZE              0x100000
+
+#define D3DLINECAPS_TEXTURE           0x01
+#define D3DLINECAPS_ZTEST             0x02
+#define D3DLINECAPS_BLEND             0x04
+#define D3DLINECAPS_ALPHACMP          0x08
+#define D3DLINECAPS_FOG               0x10
+#define D3DLINECAPS_ANTIALIAS         0x20
+
+#define D3DPBLENDCAPS_ZERO            0x00000001
+#define D3DPBLENDCAPS_ONE             0x00000002
+#define D3DPBLENDCAPS_SRCCOLOR        0x00000004
+#define D3DPBLENDCAPS_INVSRCCOLOR     0x00000008
+#define D3DPBLENDCAPS_SRCALPHA        0x00000010
+#define D3DPBLENDCAPS_INVSRCALPHA     0x00000020
+#define D3DPBLENDCAPS_DESTALPHA       0x00000040
+#define D3DPBLENDCAPS_INVDESTALPHA    0x00000080
+#define D3DPBLENDCAPS_DESTCOLOR       0x00000100
+#define D3DPBLENDCAPS_INVDESTCOLOR    0x00000200
+#define D3DPBLENDCAPS_SRCALPHASAT     0x00000400
+#define D3DPBLENDCAPS_BOTHSRCALPHA    0x00000800
+#define D3DPBLENDCAPS_BOTHINVSRCALPHA 0x00001000
+#define D3DPBLENDCAPS_BLENDFACTOR     0x00002000
+
+#define D3DPCMPCAPS_NEVER        0x01
+#define D3DPCMPCAPS_LESS         0x02
+#define D3DPCMPCAPS_EQUAL        0x04
+#define D3DPCMPCAPS_LESSEQUAL    0x08
+#define D3DPCMPCAPS_GREATER      0x10
+#define D3DPCMPCAPS_NOTEQUAL     0x20
+#define D3DPCMPCAPS_GREATEREQUAL 0x40
+#define D3DPCMPCAPS_ALWAYS       0x80
+
+#define D3DPMISCCAPS_MASKZ                      0x00000002L
+#define D3DPMISCCAPS_LINEPATTERNREP             0x00000004L
+#define D3DPMISCCAPS_CULLNONE                   0x00000010L
+#define D3DPMISCCAPS_CULLCW                     0x00000020L
+#define D3DPMISCCAPS_CULLCCW                    0x00000040L
+#define D3DPMISCCAPS_COLORWRITEENABLE           0x00000080L
+#define D3DPMISCCAPS_CLIPPLANESCALEDPOINTS      0x00000100L
+#define D3DPMISCCAPS_CLIPTLVERTS                0x00000200L
+#define D3DPMISCCAPS_TSSARGTEMP                 0x00000400L
+#define D3DPMISCCAPS_BLENDOP                    0x00000800L
+#define D3DPMISCCAPS_NULLREFERENCE              0x00001000L
+#define D3DPMISCCAPS_INDEPENDENTWRITEMASKS      0x00004000L
+#define D3DPMISCCAPS_PERSTAGECONSTANT           0x00008000L
+#define D3DPMISCCAPS_FOGANDSPECULARALPHA        0x00010000L
+#define D3DPMISCCAPS_SEPARATEALPHABLEND         0x00020000L
+#define D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS    0x00040000L
+#define D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING 0x00080000L
+#define D3DPMISCCAPS_FOGVERTEXCLAMPED           0x00100000L
+
+
+#define D3DPRASTERCAPS_DITHER                     0x00000001L
+#define D3DPRASTERCAPS_PAT                        0x00000008L
+#define D3DPRASTERCAPS_ZTEST                      0x00000010L
+#define D3DPRASTERCAPS_FOGVERTEX                  0x00000080L
+#define D3DPRASTERCAPS_FOGTABLE                   0x00000100L
+#define D3DPRASTERCAPS_ANTIALIASEDGES             0x00001000L
+#define D3DPRASTERCAPS_MIPMAPLODBIAS              0x00002000L
+#define D3DPRASTERCAPS_ZBIAS                      0x00004000L
+#define D3DPRASTERCAPS_ZBUFFERLESSHSR             0x00008000L
+#define D3DPRASTERCAPS_FOGRANGE                   0x00010000L
+#define D3DPRASTERCAPS_ANISOTROPY                 0x00020000L
+#define D3DPRASTERCAPS_WBUFFER                    0x00040000L
+#define D3DPRASTERCAPS_WFOG                       0x00100000L
+#define D3DPRASTERCAPS_ZFOG                       0x00200000L
+#define D3DPRASTERCAPS_COLORPERSPECTIVE           0x00400000L
+#define D3DPRASTERCAPS_SCISSORTEST                0x01000000L
+#define D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS        0x02000000L
+#define D3DPRASTERCAPS_DEPTHBIAS                  0x04000000L 
+#define D3DPRASTERCAPS_MULTISAMPLE_TOGGLE         0x08000000L
+
+#define D3DPRESENT_INTERVAL_DEFAULT               0x00000000
+#define D3DPRESENT_INTERVAL_ONE                   0x00000001
+#define D3DPRESENT_INTERVAL_TWO                   0x00000002
+#define D3DPRESENT_INTERVAL_THREE                 0x00000004
+#define D3DPRESENT_INTERVAL_FOUR                  0x00000008
+#define D3DPRESENT_INTERVAL_IMMEDIATE             0x80000000
+
+#define D3DPSHADECAPS_COLORGOURAUDRGB             0x00008
+#define D3DPSHADECAPS_SPECULARGOURAUDRGB          0x00200
+#define D3DPSHADECAPS_ALPHAGOURAUDBLEND           0x04000
+#define D3DPSHADECAPS_FOGGOURAUD                  0x80000
+
+#define D3DPTADDRESSCAPS_WRAP                     0x01
+#define D3DPTADDRESSCAPS_MIRROR                   0x02
+#define D3DPTADDRESSCAPS_CLAMP                    0x04
+#define D3DPTADDRESSCAPS_BORDER                   0x08
+#define D3DPTADDRESSCAPS_INDEPENDENTUV            0x10
+#define D3DPTADDRESSCAPS_MIRRORONCE               0x20
+
+#define D3DPTEXTURECAPS_PERSPECTIVE              0x00000001L
+#define D3DPTEXTURECAPS_POW2                     0x00000002L
+#define D3DPTEXTURECAPS_ALPHA                    0x00000004L
+#define D3DPTEXTURECAPS_SQUAREONLY               0x00000020L
+#define D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE 0x00000040L
+#define D3DPTEXTURECAPS_ALPHAPALETTE             0x00000080L
+#define D3DPTEXTURECAPS_NONPOW2CONDITIONAL       0x00000100L
+#define D3DPTEXTURECAPS_PROJECTED                0x00000400L
+#define D3DPTEXTURECAPS_CUBEMAP                  0x00000800L
+#define D3DPTEXTURECAPS_VOLUMEMAP                0x00002000L
+#define D3DPTEXTURECAPS_MIPMAP                   0x00004000L
+#define D3DPTEXTURECAPS_MIPVOLUMEMAP             0x00008000L
+#define D3DPTEXTURECAPS_MIPCUBEMAP               0x00010000L
+#define D3DPTEXTURECAPS_CUBEMAP_POW2             0x00020000L
+#define D3DPTEXTURECAPS_VOLUMEMAP_POW2           0x00040000L
+#define D3DPTEXTURECAPS_NOPROJECTEDBUMPENV       0x00200000L
+
+#define D3DPTFILTERCAPS_MINFPOINT                0x00000100
+#define D3DPTFILTERCAPS_MINFLINEAR               0x00000200
+#define D3DPTFILTERCAPS_MINFANISOTROPIC          0x00000400
+#define D3DPTFILTERCAPS_MINFPYRAMIDALQUAD        0x00000800
+#define D3DPTFILTERCAPS_MINFGAUSSIANQUAD         0x00001000
+#define D3DPTFILTERCAPS_MIPFPOINT                0x00010000
+#define D3DPTFILTERCAPS_MIPFLINEAR               0x00020000
+#define D3DPTFILTERCAPS_MAGFPOINT                0x01000000
+#define D3DPTFILTERCAPS_MAGFLINEAR               0x02000000
+#define D3DPTFILTERCAPS_MAGFANISOTROPIC          0x04000000
+#define D3DPTFILTERCAPS_MAGFPYRAMIDALQUAD        0x08000000
+#define D3DPTFILTERCAPS_MAGFGAUSSIANQUAD         0x10000000
+
+#define D3DSTENCILCAPS_KEEP                      0x01
+#define D3DSTENCILCAPS_ZERO                      0x02
+#define D3DSTENCILCAPS_REPLACE                   0x04
+#define D3DSTENCILCAPS_INCRSAT                   0x08
+#define D3DSTENCILCAPS_DECRSAT                   0x10
+#define D3DSTENCILCAPS_INVERT                    0x20
+#define D3DSTENCILCAPS_INCR                      0x40
+#define D3DSTENCILCAPS_DECR                      0x80
+#define D3DSTENCILCAPS_TWOSIDED                  0x100
+
+#define D3DTEXOPCAPS_DISABLE                     0x0000001
+#define D3DTEXOPCAPS_SELECTARG1                  0x0000002
+#define D3DTEXOPCAPS_SELECTARG2                  0x0000004
+#define D3DTEXOPCAPS_MODULATE                    0x0000008
+#define D3DTEXOPCAPS_MODULATE2X                  0x0000010
+#define D3DTEXOPCAPS_MODULATE4X                  0x0000020
+#define D3DTEXOPCAPS_ADD                         0x0000040
+#define D3DTEXOPCAPS_ADDSIGNED                   0x0000080
+#define D3DTEXOPCAPS_ADDSIGNED2X                 0x0000100
+#define D3DTEXOPCAPS_SUBTRACT                    0x0000200
+#define D3DTEXOPCAPS_ADDSMOOTH                   0x0000400
+#define D3DTEXOPCAPS_BLENDDIFFUSEALPHA           0x0000800
+#define D3DTEXOPCAPS_BLENDTEXTUREALPHA           0x0001000
+#define D3DTEXOPCAPS_BLENDFACTORALPHA            0x0002000
+#define D3DTEXOPCAPS_BLENDTEXTUREALPHAPM         0x0004000
+#define D3DTEXOPCAPS_BLENDCURRENTALPHA           0x0008000
+#define D3DTEXOPCAPS_PREMODULATE                 0x0010000
+#define D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR      0x0020000
+#define D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA      0x0040000
+#define D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR   0x0080000
+#define D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA   0x0100000
+#define D3DTEXOPCAPS_BUMPENVMAP                  0x0200000
+#define D3DTEXOPCAPS_BUMPENVMAPLUMINANCE         0x0400000
+#define D3DTEXOPCAPS_DOTPRODUCT3                 0x0800000
+#define D3DTEXOPCAPS_MULTIPLYADD                 0x1000000
+#define D3DTEXOPCAPS_LERP                        0x2000000
+
+#define D3DVTXPCAPS_TEXGEN                         0x00000001L
+#define D3DVTXPCAPS_MATERIALSOURCE7                0x00000002L
+#define D3DVTXPCAPS_DIRECTIONALLIGHTS              0x00000008L
+#define D3DVTXPCAPS_POSITIONALLIGHTS               0x00000010L
+#define D3DVTXPCAPS_LOCALVIEWER                    0x00000020L
+#define D3DVTXPCAPS_TWEENING                       0x00000040L
+#define D3DVTXPCAPS_TEXGEN_SPHEREMAP               0x00000100L
+#define D3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER       0x00000200L
+
+#define D3DDTCAPS_UBYTE4                           0x00000001L
+#define D3DDTCAPS_UBYTE4N                          0x00000002L
+#define D3DDTCAPS_SHORT2N                          0x00000004L
+#define D3DDTCAPS_SHORT4N                          0x00000008L
+#define D3DDTCAPS_USHORT2N                         0x00000010L
+#define D3DDTCAPS_USHORT4N                         0x00000020L
+#define D3DDTCAPS_UDEC3                            0x00000040L
+#define D3DDTCAPS_DEC3N                            0x00000080L
+#define D3DDTCAPS_FLOAT16_2                        0x00000100L
+#define D3DDTCAPS_FLOAT16_4                        0x00000200L
+
+#define D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD  0x00000020L
+#define D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION       0x00000080L
+#define D3DCAPS3_COPY_TO_VIDMEM                    0x00000100L 
+#define D3DCAPS3_COPY_TO_SYSTEMMEM                 0x00000200L
+#define D3DCAPS3_RESERVED                          0x8000001FL
+
+#define D3DCAPS2_NO2DDURING3DSCENE                 0x00000002L
+#define D3DCAPS2_FULLSCREENGAMMA                   0x00020000L
+#define D3DCAPS2_CANRENDERWINDOWED                 0x00080000L
+#define D3DCAPS2_CANCALIBRATEGAMMA                 0x00100000L
+#define D3DCAPS2_RESERVED                          0x02000000L
+#define D3DCAPS2_CANMANAGERESOURCE                 0x10000000L
+#define D3DCAPS2_DYNAMICTEXTURES                   0x20000000L
+#define D3DCAPS2_CANAUTOGENMIPMAP                  0x40000000L
+
+
+#define D3DVS20_MAX_DYNAMICFLOWCONTROLDEPTH  24
+#define D3DVS20_MIN_DYNAMICFLOWCONTROLDEPTH  0
+#define D3DVS20_MAX_NUMTEMPS                 32
+#define D3DVS20_MIN_NUMTEMPS                 12
+#define D3DVS20_MAX_STATICFLOWCONTROLDEPTH   4
+#define D3DVS20_MIN_STATICFLOWCONTROLDEPTH   1
+
+#define D3DVS20CAPS_PREDICATION              (1 << 0)
+
+#define D3DPS20CAPS_ARBITRARYSWIZZLE         (1 << 0)
+#define D3DPS20CAPS_GRADIENTINSTRUCTIONS     (1 << 1)
+#define D3DPS20CAPS_PREDICATION              (1 << 2)
+#define D3DPS20CAPS_NODEPENDENTREADLIMIT     (1 << 3)
+#define D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT    (1 << 4)
+
+#define D3DPS20_MAX_DYNAMICFLOWCONTROLDEPTH  24
+#define D3DPS20_MIN_DYNAMICFLOWCONTROLDEPTH  0
+#define D3DPS20_MAX_NUMTEMPS                 32
+#define D3DPS20_MIN_NUMTEMPS                 12
+#define D3DPS20_MAX_STATICFLOWCONTROLDEPTH   4
+#define D3DPS20_MIN_STATICFLOWCONTROLDEPTH   0
+#define D3DPS20_MAX_NUMINSTRUCTIONSLOTS      512
+#define D3DPS20_MIN_NUMINSTRUCTIONSLOTS      96
+
+#define D3DMIN30SHADERINSTRUCTIONS          512
+#define D3DMAX30SHADERINSTRUCTIONS          32768
+
+
+typedef struct _D3DVSHADERCAPS2_0 {
+  DWORD  Caps;
+  INT    DynamicFlowControlDepth;
+  INT    NumTemps;
+  INT    StaticFlowControlDepth;
+} D3DVSHADERCAPS2_0;
+
+typedef struct _D3DPSHADERCAPS2_0 {
+  DWORD  Caps;
+  INT    DynamicFlowControlDepth;
+  INT    NumTemps;
+  INT    StaticFlowControlDepth;
+  INT    NumInstructionSlots;
+} D3DPSHADERCAPS2_0;
+
+/*
+ * The d3dcaps9 structure
+ */
+typedef struct _D3DCAPS9 {
+  D3DDEVTYPE          DeviceType;
+  UINT                AdapterOrdinal;
+  
+  DWORD               Caps;
+  DWORD               Caps2;
+  DWORD               Caps3;
+  DWORD               PresentationIntervals;
+  
+  DWORD               CursorCaps;
+  
+  DWORD               DevCaps;
+  
+  DWORD               PrimitiveMiscCaps;
+  DWORD               RasterCaps;
+  DWORD               ZCmpCaps;
+  DWORD               SrcBlendCaps;
+  DWORD               DestBlendCaps;
+  DWORD               AlphaCmpCaps;
+  DWORD               ShadeCaps;
+  DWORD               TextureCaps;
+  DWORD               TextureFilterCaps;
+  DWORD               CubeTextureFilterCaps;
+  DWORD               VolumeTextureFilterCaps;
+  DWORD               TextureAddressCaps;
+  DWORD               VolumeTextureAddressCaps;
+  
+  DWORD               LineCaps;
+  
+  DWORD               MaxTextureWidth, MaxTextureHeight;
+  DWORD               MaxVolumeExtent;
+  
+  DWORD               MaxTextureRepeat;
+  DWORD               MaxTextureAspectRatio;
+  DWORD               MaxAnisotropy;
+  float               MaxVertexW;
+  
+  float               GuardBandLeft;
+  float               GuardBandTop;
+  float               GuardBandRight;
+  float               GuardBandBottom;
+  
+  float               ExtentsAdjust;
+  DWORD               StencilCaps;
+  
+  DWORD               FVFCaps;
+  DWORD               TextureOpCaps;
+  DWORD               MaxTextureBlendStages;
+  DWORD               MaxSimultaneousTextures;
+  
+  DWORD               VertexProcessingCaps;
+  DWORD               MaxActiveLights;
+  DWORD               MaxUserClipPlanes;
+  DWORD               MaxVertexBlendMatrices;
+  DWORD               MaxVertexBlendMatrixIndex;
+  
+  float               MaxPointSize;
+  
+  DWORD               MaxPrimitiveCount;
+  DWORD               MaxVertexIndex;
+  DWORD               MaxStreams;
+  DWORD               MaxStreamStride;
+  
+  DWORD               VertexShaderVersion;
+  DWORD               MaxVertexShaderConst;
+  
+  DWORD               PixelShaderVersion;
+  float               PixelShader1xMaxValue;
+
+  /* DX 9 */
+  DWORD               DevCaps2;
+
+  float               MaxNpatchTessellationLevel;
+  DWORD               Reserved5;
+
+  UINT                MasterAdapterOrdinal;   
+  UINT                AdapterOrdinalInGroup;  
+  UINT                NumberOfAdaptersInGroup;
+  DWORD               DeclTypes;              
+  DWORD               NumSimultaneousRTs;     
+  DWORD               StretchRectFilterCaps;  
+  D3DVSHADERCAPS2_0   VS20Caps;
+  D3DPSHADERCAPS2_0   PS20Caps;
+  DWORD               VertexTextureFilterCaps;
+  DWORD               MaxVShaderInstructionsExecuted;
+  DWORD               MaxPShaderInstructionsExecuted;
+  DWORD               MaxVertexShader30InstructionSlots; 
+  DWORD               MaxPixelShader30InstructionSlots;
+
+} D3DCAPS9;
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3d9types.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3d9types.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3d9types.h	(revision 16410)
@@ -0,0 +1,1572 @@
+/*
+ * Copyright (C) 2002-2003 Jason Edmeades 
+ * Copyright (C) 2002-2003 Raphael Junqueira
+ * Copyright (C) 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_D3D9TYPES_H
+#define __WINE_D3D9TYPES_H
+
+/*****************************************************************************
+ * Direct 3D v9 #defines
+ */
+#define D3DCLEAR_TARGET   0x00000001L
+#define D3DCLEAR_ZBUFFER  0x00000002L
+#define D3DCLEAR_STENCIL  0x00000004L
+
+#define D3DCLIPPLANE0 (1 << 0)
+#define D3DCLIPPLANE1 (1 << 1)
+#define D3DCLIPPLANE2 (1 << 2)
+#define D3DCLIPPLANE3 (1 << 3)
+#define D3DCLIPPLANE4 (1 << 4)
+#define D3DCLIPPLANE5 (1 << 5)
+
+#define D3DCOLOR_ARGB(a,r,g,b)       ((D3DCOLOR)((((a)&0xff)<<24)|(((r)&0xff)<<16)|(((g)&0xff)<<8)|((b)&0xff)))
+#define D3DCOLOR_COLORVALUE(r,g,b,a) D3DCOLOR_RGBA((DWORD)((r)*255.f),(DWORD)((g)*255.f),(DWORD)((b)*255.f),(DWORD)((a)*255.f))
+#define D3DCOLOR_RGBA(r,g,b,a)       D3DCOLOR_ARGB(a,r,g,b)
+#define D3DCOLOR_XRGB(r,g,b)         D3DCOLOR_ARGB(0xff,r,g,b)
+#define D3DCOLOR_XYUV(y,u,v)         D3DCOLOR_ARGB(0xFF,y,u,v)
+#define D3DCOLOR_AYUV(a,y,u,v)       D3DCOLOR_ARGB(a,y,u,v)
+
+#define D3DCS_LEFT                   0x001L
+#define D3DCS_RIGHT                  0x002L
+#define D3DCS_TOP                    0x004L
+#define D3DCS_BOTTOM                 0x008L
+#define D3DCS_FRONT                  0x010L
+#define D3DCS_BACK                   0x020L
+#define D3DCS_PLANE0                 0x040L
+#define D3DCS_PLANE1                 0x080L
+#define D3DCS_PLANE2                 0x100L
+#define D3DCS_PLANE3                 0x200L
+#define D3DCS_PLANE4                 0x400L
+#define D3DCS_PLANE5                 0x800L
+#define D3DCS_ALL                    0xFFFL
+
+#define D3DFVF_TEXTUREFORMAT1 3
+#define D3DFVF_TEXTUREFORMAT2 0
+#define D3DFVF_TEXTUREFORMAT3 1
+#define D3DFVF_TEXTUREFORMAT4 2
+#define D3DFVF_TEXCOORDSIZE1(CoordIndex) (D3DFVF_TEXTUREFORMAT1 << (CoordIndex*2 + 16))
+#define D3DFVF_TEXCOORDSIZE2(CoordIndex) (D3DFVF_TEXTUREFORMAT2)
+#define D3DFVF_TEXCOORDSIZE3(CoordIndex) (D3DFVF_TEXTUREFORMAT3 << (CoordIndex*2 + 16))
+#define D3DFVF_TEXCOORDSIZE4(CoordIndex) (D3DFVF_TEXTUREFORMAT4 << (CoordIndex*2 + 16))
+
+#define D3DLOCK_READONLY           0x0010
+#define D3DLOCK_NOSYSLOCK          0x0800
+#define D3DLOCK_NOOVERWRITE        0x1000
+#define D3DLOCK_DISCARD            0x2000
+#define D3DLOCK_DONOTWAIT          0x4000
+#define D3DLOCK_NO_DIRTY_UPDATE    0x8000
+
+#define D3DMAXUSERCLIPPLANES       32
+#define D3DCLIPPLANE0              (1 << 0)
+#define D3DCLIPPLANE1              (1 << 1)
+#define D3DCLIPPLANE2              (1 << 2)
+#define D3DCLIPPLANE3              (1 << 3)
+#define D3DCLIPPLANE4              (1 << 4)
+#define D3DCLIPPLANE5              (1 << 5)
+
+
+#define D3DRENDERSTATE_WRAPBIAS    128UL
+
+/* MSDN has this in d3d9caps.h, but it should be here */
+#define D3DTSS_TCI_PASSTHRU                       0x00000
+#define D3DTSS_TCI_CAMERASPACENORMAL              0x10000
+#define D3DTSS_TCI_CAMERASPACEPOSITION            0x20000
+#define D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR    0x30000
+#define D3DTSS_TCI_SPHEREMAP                      0x40000
+
+
+#define D3DTS_WORLD  D3DTS_WORLDMATRIX(0)
+#define D3DTS_WORLD1 D3DTS_WORLDMATRIX(1)
+#define D3DTS_WORLD2 D3DTS_WORLDMATRIX(2)
+#define D3DTS_WORLD3 D3DTS_WORLDMATRIX(3)
+#define D3DTS_WORLDMATRIX(index) (D3DTRANSFORMSTATETYPE)(index + 256)
+
+#define D3DUSAGE_RENDERTARGET       0x00000001L
+#define D3DUSAGE_DEPTHSTENCIL       0x00000002L
+#define D3DUSAGE_WRITEONLY          0x00000008L
+#define D3DUSAGE_SOFTWAREPROCESSING 0x00000010L
+#define D3DUSAGE_DONOTCLIP          0x00000020L
+#define D3DUSAGE_POINTS             0x00000040L
+#define D3DUSAGE_RTPATCHES          0x00000080L
+#define D3DUSAGE_NPATCHES           0x00000100L
+#define D3DUSAGE_DYNAMIC            0x00000200L
+#define D3DUSAGE_AUTOGENMIPMAP      0x00000400L 
+#define D3DUSAGE_DMAP               0x00004000L
+
+#define D3DUSAGE_QUERY_FILTER                   0x00020000L
+#define D3DUSAGE_QUERY_LEGACYBUMPMAP            0x00008000L
+#define D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING 0x00080000L
+#define D3DUSAGE_QUERY_SRGBREAD                 0x00010000L
+#define D3DUSAGE_QUERY_SRGBWRITE                0x00040000L
+#define D3DUSAGE_QUERY_VERTEXTEXTURE            0x00100000L
+#define D3DUSAGE_QUERY_WRAPANDMIP               0x00200000L
+
+#define D3DWRAP_U        1
+#define D3DWRAP_V        2
+#define D3DWRAP_W        4
+#define D3DWRAPCOORD_0   1
+#define D3DWRAPCOORD_1   2
+#define D3DWRAPCOORD_2   4
+#define D3DWRAPCOORD_3   8
+
+#define MAX_DEVICE_IDENTIFIER_STRING        512
+
+#define D3DFVF_RESERVED0           0x0001
+#define D3DFVF_POSITION_MASK       0x000E
+#define D3DFVF_XYZ                 0x0002
+#define D3DFVF_XYZRHW              0x0004
+#define D3DFVF_XYZB1               0x0006
+#define D3DFVF_XYZB2               0x0008
+#define D3DFVF_XYZB3               0x000a
+#define D3DFVF_XYZB4               0x000c
+#define D3DFVF_XYZB5               0x000e
+#define D3DFVF_XYZW                0x4002
+#define D3DFVF_NORMAL              0x0010
+#define D3DFVF_PSIZE               0x0020
+#define D3DFVF_DIFFUSE             0x0040
+#define D3DFVF_SPECULAR            0x0080
+#define D3DFVF_TEXCOUNT_MASK       0x0f00
+#define D3DFVF_TEXCOUNT_SHIFT           8
+#define D3DFVF_TEX0                0x0000
+#define D3DFVF_TEX1                0x0100
+#define D3DFVF_TEX2                0x0200
+#define D3DFVF_TEX3                0x0300
+#define D3DFVF_TEX4                0x0400
+#define D3DFVF_TEX5                0x0500
+#define D3DFVF_TEX6                0x0600
+#define D3DFVF_TEX7                0x0700
+#define D3DFVF_TEX8                0x0800
+#define D3DFVF_LASTBETA_UBYTE4     0x1000
+#define D3DFVF_LASTBETA_D3DCOLOR   0x8000
+#define D3DFVF_RESERVED2           0x6000
+
+#define D3DTA_SELECTMASK        0x0000000f
+#define D3DTA_DIFFUSE           0x00000000
+#define D3DTA_CURRENT           0x00000001
+#define D3DTA_TEXTURE           0x00000002
+#define D3DTA_TFACTOR           0x00000003
+#define D3DTA_SPECULAR          0x00000004
+#define D3DTA_TEMP              0x00000005
+#define D3DTA_CONSTANT          0x00000006
+#define D3DTA_COMPLEMENT        0x00000010
+#define D3DTA_ALPHAREPLICATE    0x00000020
+
+#define D3DCOLORWRITEENABLE_RED   (1L<<0)   
+#define D3DCOLORWRITEENABLE_GREEN (1L<<1)
+#define D3DCOLORWRITEENABLE_BLUE  (1L<<2)
+#define D3DCOLORWRITEENABLE_ALPHA (1L<<3)
+
+#define D3DPV_DONOTCOPYDATA         (1 << 0)
+
+#define D3DSTREAMSOURCE_INDEXEDDATA  (1 << 30)
+#define D3DSTREAMSOURCE_INSTANCEDATA (2 << 30)
+
+#define D3D_MAX_SIMULTANEOUS_RENDERTARGETS 4
+
+#define MAXD3DDECLLENGTH         64 /* +end marker */
+#define MAXD3DDECLMETHOD         D3DDECLMETHOD_LOOKUPPRESAMPLED
+#define MAXD3DDECLTYPE           D3DDECLTYPE_UNUSED
+#define MAXD3DDECLUSAGE          D3DDECLUSAGE_SAMPLE
+#define MAXD3DDECLUSAGEINDEX     15
+
+#define D3DDMAPSAMPLER 256
+#define D3DVERTEXTEXTURESAMPLER0 (D3DDMAPSAMPLER+1)
+#define D3DVERTEXTEXTURESAMPLER1 (D3DDMAPSAMPLER+2)
+#define D3DVERTEXTEXTURESAMPLER2 (D3DDMAPSAMPLER+3)
+#define D3DVERTEXTEXTURESAMPLER3 (D3DDMAPSAMPLER+4)
+
+#define MAKEFOURCC(ch0, ch1, ch2, ch3)  \
+    ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) |  \
+    ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
+
+/* Constants used by D3DPRESENT_PARAMETERS. when creating a device or swapchain */
+
+#define D3DPRESENTFLAG_LOCKABLE_BACKBUFFER  0x00000001 /* Create a lockable backbuffer */
+#define D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL 0x00000002 /* Discard Z buffer */
+#define D3DPRESENTFLAG_DEVICECLIP           0x00000004 /* Clip the window blited into the client area 2k + xp only */
+#define D3DPRESENTFLAG_VIDEO                0x00000010 /* backbuffer 'may' contain video data */
+#define D3DPRESENTFLAG_NOAUTOROTATE         0x00000020 /* d3d9ex, ignore display rotation */
+#define D3DPRESENTFLAG_UNPRUNEDMODE         0x00000040 /* d3d9ex, specify invalid display modes */
+
+#define D3DPRESENT_BACK_BUFFERS_MAX         3L
+#define D3DPRESENT_RATE_DEFAULT             0x00000000
+
+/**************************** 
+ * Vertex Shaders Declaration
+ */
+
+typedef enum _D3DDECLUSAGE {
+  D3DDECLUSAGE_POSITION     = 0,
+  D3DDECLUSAGE_BLENDWEIGHT  = 1,
+  D3DDECLUSAGE_BLENDINDICES = 2,
+  D3DDECLUSAGE_NORMAL       = 3,      
+  D3DDECLUSAGE_PSIZE        = 4,       
+  D3DDECLUSAGE_TEXCOORD     = 5,    
+  D3DDECLUSAGE_TANGENT      = 6,     
+  D3DDECLUSAGE_BINORMAL     = 7,    
+  D3DDECLUSAGE_TESSFACTOR   = 8,  
+  D3DDECLUSAGE_POSITIONT    = 9,   
+  D3DDECLUSAGE_COLOR        = 10,       
+  D3DDECLUSAGE_FOG          = 11,        
+  D3DDECLUSAGE_DEPTH        = 12,      
+  D3DDECLUSAGE_SAMPLE       = 13     
+} D3DDECLUSAGE;
+
+#define D3DMAXDECLUSAGE         D3DDECLUSAGE_SAMPLE
+#define D3DMAXDECLUSAGEINDEX    15
+#define D3DMAXDECLLENGTH        18
+#define D3DMAXDECLUSAGE_DX8     D3DDECLUSAGE_TEXCOORD
+
+typedef enum _D3DDECLMETHOD {
+  D3DDECLMETHOD_DEFAULT          = 0,
+  D3DDECLMETHOD_PARTIALU         = 1,
+  D3DDECLMETHOD_PARTIALV         = 2,
+  D3DDECLMETHOD_CROSSUV          = 3,
+  D3DDECLMETHOD_UV               = 4,
+  D3DDECLMETHOD_LOOKUP           = 5,
+  D3DDECLMETHOD_LOOKUPPRESAMPLED = 6
+} D3DDECLMETHOD;
+
+
+#define D3DMAXDECLMETHOD        D3DDECLMETHOD_LOOKUPPRESAMPLED
+
+typedef enum _D3DDECLTYPE {
+  D3DDECLTYPE_FLOAT1    =  0,
+  D3DDECLTYPE_FLOAT2    =  1,
+  D3DDECLTYPE_FLOAT3    =  2,
+  D3DDECLTYPE_FLOAT4    =  3,
+  D3DDECLTYPE_D3DCOLOR  =  4,
+  D3DDECLTYPE_UBYTE4    =  5,
+  D3DDECLTYPE_SHORT2    =  6,
+  D3DDECLTYPE_SHORT4    =  7,
+  /* VS 2.0 */
+  D3DDECLTYPE_UBYTE4N   =  8,
+  D3DDECLTYPE_SHORT2N   =  9,
+  D3DDECLTYPE_SHORT4N   = 10,
+  D3DDECLTYPE_USHORT2N  = 11,
+  D3DDECLTYPE_USHORT4N  = 12,
+  D3DDECLTYPE_UDEC3     = 13,
+  D3DDECLTYPE_DEC3N     = 14,
+  D3DDECLTYPE_FLOAT16_2 = 15,
+  D3DDECLTYPE_FLOAT16_4 = 16,
+  D3DDECLTYPE_UNUSED    = 17,
+} D3DDECLTYPE;
+
+#define D3DMAXDECLTYPE          D3DDECLTYPE_UNUSED
+
+typedef struct _D3DVERTEXELEMENT9 {
+  WORD    Stream;
+  WORD    Offset;
+  BYTE    Type;
+  BYTE    Method;
+  BYTE    Usage;
+  BYTE    UsageIndex;
+} D3DVERTEXELEMENT9, *LPD3DVERTEXELEMENT9;
+
+
+typedef enum _D3DQUERYTYPE {
+    D3DQUERYTYPE_VCACHE = 4,
+    D3DQUERYTYPE_RESOURCEMANAGER = 5,
+    D3DQUERYTYPE_VERTEXSTATS = 6,
+    D3DQUERYTYPE_EVENT = 8,
+    D3DQUERYTYPE_OCCLUSION = 9,
+    D3DQUERYTYPE_TIMESTAMP = 10,
+    D3DQUERYTYPE_TIMESTAMPDISJOINT = 11,
+    D3DQUERYTYPE_TIMESTAMPFREQ = 12,
+    D3DQUERYTYPE_PIPELINETIMINGS = 13,
+    D3DQUERYTYPE_INTERFACETIMINGS = 14,
+    D3DQUERYTYPE_VERTEXTIMINGS = 15,
+    D3DQUERYTYPE_PIXELTIMINGS = 16,
+    D3DQUERYTYPE_BANDWIDTHTIMINGS = 17,
+    D3DQUERYTYPE_CACHEUTILIZATION = 18
+} D3DQUERYTYPE;
+
+#define D3DISSUE_BEGIN   (1 << 1)
+#define D3DISSUE_END     (1 << 0)
+#define D3DGETDATA_FLUSH (1 << 0)
+
+
+#define D3DDECL_END() {0xFF,0,D3DDECLTYPE_UNUSED,0,0,0}
+#define D3DDP_MAXTEXCOORD   8
+
+
+#define D3DVSD_MAKETOKENTYPE(TokenType) \
+  ((TokenType << D3DVSD_TOKENTYPESHIFT) & D3DVSD_TOKENTYPEMASK)
+
+#define D3DVSD_CONST(ConstantAddress, Count) \
+  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_CONSTMEM) | ((Count) << D3DVSD_CONSTCOUNTSHIFT) | (ConstantAddress))
+
+#define D3DVSD_END() 0xFFFFFFFF
+
+#define D3DVSD_NOP() 0x00000000
+
+#define D3DVSD_REG(VertexRegister, Type) \
+  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAMDATA) | ((Type) << D3DVSD_DATATYPESHIFT) | (VertexRegister))
+
+#define D3DVSD_SKIP(Count) \
+  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAMDATA) | 0x10000000 | ((Count) << D3DVSD_SKIPCOUNTSHIFT))
+
+#define D3DVSD_STREAM(StreamNumber) \
+  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAM) | (StreamNumber))
+
+#define D3DVSD_STREAM_TESS() \
+  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAM) | (D3DVSD_STREAMTESSMASK))
+
+#define D3DVSD_TESSNORMAL(RegisterIn, RegisterOut) \
+  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_TESSELLATOR) | ((RegisterIn) << D3DVSD_VERTEXREGINSHIFT) | ((0x02) << D3DVSD_DATATYPESHIFT) | (RegisterOut))
+
+#define D3DVSD_TESSUV(Register) \
+  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_TESSELLATOR) | 0x10000000 | ((0x01) << D3DVSD_DATATYPESHIFT) | (Register))
+
+
+/********************************
+ * Pixel/Vertex Shaders Functions
+ */
+
+/** Maximum number of supported texture coordinates sets operation */
+#define D3DDP_MAXTEXCOORD   8
+
+/** opcode token mask */
+#define D3DSI_OPCODE_MASK       0x0000FFFF
+#define D3DSI_INSTLENGTH_MASK   0x0F000000
+#define D3DSI_INSTLENGTH_SHIFT  24
+
+/** opcodes types for PS and VS */
+typedef enum _D3DSHADER_INSTRUCTION_OPCODE_TYPE {
+  D3DSIO_NOP          =  0,
+  D3DSIO_MOV          =  1,
+  D3DSIO_ADD          =  2,
+  D3DSIO_SUB          =  3,
+  D3DSIO_MAD          =  4,
+  D3DSIO_MUL          =  5,
+  D3DSIO_RCP          =  6,
+  D3DSIO_RSQ          =  7,
+  D3DSIO_DP3          =  8,
+  D3DSIO_DP4          =  9,
+  D3DSIO_MIN          = 10,
+  D3DSIO_MAX          = 11,
+  D3DSIO_SLT          = 12,
+  D3DSIO_SGE          = 13,
+  D3DSIO_EXP          = 14,
+  D3DSIO_LOG          = 15,
+  D3DSIO_LIT          = 16,
+  D3DSIO_DST          = 17,
+  D3DSIO_LRP          = 18,
+  D3DSIO_FRC          = 19,
+  D3DSIO_M4x4         = 20,
+  D3DSIO_M4x3         = 21,
+  D3DSIO_M3x4         = 22,
+  D3DSIO_M3x3         = 23,
+  D3DSIO_M3x2         = 24,
+  D3DSIO_CALL         = 25,
+  D3DSIO_CALLNZ       = 26,
+  D3DSIO_LOOP         = 27,
+  D3DSIO_RET          = 28,
+  D3DSIO_ENDLOOP      = 29,
+  D3DSIO_LABEL        = 30,
+  D3DSIO_DCL          = 31,
+  D3DSIO_POW          = 32,
+  D3DSIO_CRS          = 33,
+  D3DSIO_SGN          = 34,
+  D3DSIO_ABS          = 35,
+  D3DSIO_NRM          = 36,
+  D3DSIO_SINCOS       = 37,
+  D3DSIO_REP          = 38,
+  D3DSIO_ENDREP       = 39,
+  D3DSIO_IF           = 40,
+  D3DSIO_IFC          = 41,
+  D3DSIO_ELSE         = 42,
+  D3DSIO_ENDIF        = 43,
+  D3DSIO_BREAK        = 44,
+  D3DSIO_BREAKC       = 45,
+  D3DSIO_MOVA         = 46,
+  D3DSIO_DEFB         = 47,
+  D3DSIO_DEFI         = 48,
+
+  D3DSIO_TEXCOORD     = 64,
+  D3DSIO_TEXKILL      = 65,
+  D3DSIO_TEX          = 66,
+  D3DSIO_TEXBEM       = 67,
+  D3DSIO_TEXBEML      = 68,
+  D3DSIO_TEXREG2AR    = 69,
+  D3DSIO_TEXREG2GB    = 70,
+  D3DSIO_TEXM3x2PAD   = 71,
+  D3DSIO_TEXM3x2TEX   = 72,
+  D3DSIO_TEXM3x3PAD   = 73,
+  D3DSIO_TEXM3x3TEX   = 74,
+  D3DSIO_TEXM3x3DIFF  = 75,
+  D3DSIO_TEXM3x3SPEC  = 76,
+  D3DSIO_TEXM3x3VSPEC = 77,
+  D3DSIO_EXPP         = 78,
+  D3DSIO_LOGP         = 79,
+  D3DSIO_CND          = 80,
+  D3DSIO_DEF          = 81,
+  D3DSIO_TEXREG2RGB   = 82,
+  D3DSIO_TEXDP3TEX    = 83,
+  D3DSIO_TEXM3x2DEPTH = 84,
+  D3DSIO_TEXDP3       = 85,
+  D3DSIO_TEXM3x3      = 86,
+  D3DSIO_TEXDEPTH     = 87,
+  D3DSIO_CMP          = 88,
+  D3DSIO_BEM          = 89,
+  D3DSIO_DP2ADD       = 90,
+  D3DSIO_DSX          = 91,
+  D3DSIO_DSY          = 92,
+  D3DSIO_TEXLDD       = 93,
+  D3DSIO_SETP         = 94,
+  D3DSIO_TEXLDL       = 95,
+  D3DSIO_BREAKP       = 96,
+  
+  D3DSIO_PHASE        = 0xFFFD,
+  D3DSIO_COMMENT      = 0xFFFE,
+  D3DSIO_END          = 0XFFFF,
+
+  D3DSIO_FORCE_DWORD  = 0X7FFFFFFF /** for 32-bit alignment */
+} D3DSHADER_INSTRUCTION_OPCODE_TYPE;
+
+#define D3DSINCOSCONST1   -1.5500992e-006f, -2.1701389e-005f,  0.0026041667f, 0.00026041668f
+#define D3DSINCOSCONST2   -0.020833334f,    -0.12500000f,      1.0f,          0.50000000f
+
+#define D3DSHADER_INSTRUCTION_PREDICATED    (1 << 28)
+
+#define D3DSI_TEXLD_PROJECT 0x00010000
+#define D3DSI_TEXLD_BIAS    0x00020000
+
+/** for parallelism */
+#define D3DSI_COISSUE 0x40000000
+
+#define D3DSP_DCL_USAGE_SHIFT 0
+#define D3DSP_DCL_USAGE_MASK  0x0000000f
+
+#define D3DSP_DCL_USAGEINDEX_SHIFT 16
+#define D3DSP_DCL_USAGEINDEX_MASK  0x000f0000
+
+#define D3DSP_TEXTURETYPE_SHIFT 27
+#define D3DSP_TEXTURETYPE_MASK  0x78000000
+
+typedef enum _D3DSAMPLER_TEXTURE_TYPE {
+  D3DSTT_UNKNOWN      = 0 << D3DSP_TEXTURETYPE_SHIFT,
+  D3DSTT_1D           = 1 << D3DSP_TEXTURETYPE_SHIFT,
+  D3DSTT_2D           = 2 << D3DSP_TEXTURETYPE_SHIFT,
+  D3DSTT_CUBE         = 3 << D3DSP_TEXTURETYPE_SHIFT,
+  D3DSTT_VOLUME       = 4 << D3DSP_TEXTURETYPE_SHIFT,
+
+  D3DSTT_FORCE_DWORD  = 0x7FFFFFFF
+} D3DSAMPLER_TEXTURE_TYPE;
+
+#define D3DSP_REGNUM_MASK       0x000007FF
+
+/** destination parameter modifiers (.xyzw) */
+#define D3DSP_WRITEMASK_0       0x00010000 /* .x r */
+#define D3DSP_WRITEMASK_1       0x00020000 /* .y g */
+#define D3DSP_WRITEMASK_2       0x00040000 /* .z b */
+#define D3DSP_WRITEMASK_3       0x00080000 /* .w a */
+#define D3DSP_WRITEMASK_ALL     0x000F0000 /* all */
+
+#define D3DSP_DSTMOD_SHIFT      20
+#define D3DSP_DSTMOD_MASK       (0xF << D3DSP_DSTMOD_SHIFT)
+
+typedef enum _D3DSHADER_PARAM_DSTMOD_TYPE {
+  D3DSPDM_NONE             = 0 << D3DSP_DSTMOD_SHIFT,
+  D3DSPDM_SATURATE         = 1 << D3DSP_DSTMOD_SHIFT,
+  D3DSPDM_PARTIALPRECISION = 2 << D3DSP_DSTMOD_SHIFT,
+  D3DSPDM_MSAMPCENTROID    = 4 << D3DSP_DSTMOD_SHIFT,
+
+  D3DSPDM_FORCE_DWORD  = 0x7FFFFFFF
+} D3DSHADER_PARAM_DSTMOD_TYPE;
+
+/** destination param */
+#define D3DSP_DSTSHIFT_SHIFT     24
+#define D3DSP_DSTSHIFT_MASK      (0xF << D3DSP_DSTSHIFT_SHIFT)
+
+/** destination/source reg type */
+#define D3DSP_REGTYPE_SHIFT      28
+#define D3DSP_REGTYPE_SHIFT2     8
+#define D3DSP_REGTYPE_MASK       (0x7 << D3DSP_REGTYPE_SHIFT)
+#define D3DSP_REGTYPE_MASK2      0x00001800
+
+typedef enum _D3DSHADER_PARAM_REGISTER_TYPE {
+  D3DSPR_TEMP         =  0, 
+  D3DSPR_INPUT        =  1,
+  D3DSPR_CONST        =  2,
+  D3DSPR_ADDR         =  3,
+  D3DSPR_TEXTURE      =  3,
+  D3DSPR_RASTOUT      =  4,
+  D3DSPR_ATTROUT      =  5,
+  D3DSPR_TEXCRDOUT    =  6,
+  D3DSPR_OUTPUT       =  6,
+  D3DSPR_CONSTINT     =  7,
+  D3DSPR_COLOROUT     =  8,
+  D3DSPR_DEPTHOUT     =  9,
+  D3DSPR_SAMPLER      = 10,
+  D3DSPR_CONST2       = 11,
+  D3DSPR_CONST3       = 12,
+  D3DSPR_CONST4       = 13,
+  D3DSPR_CONSTBOOL    = 14,
+  D3DSPR_LOOP         = 15,
+  D3DSPR_TEMPFLOAT16  = 16,
+  D3DSPR_MISCTYPE     = 17,
+  D3DSPR_LABEL        = 18,
+  D3DSPR_PREDICATE    = 19,
+
+  D3DSPR_FORCE_DWORD  = 0x7FFFFFFF
+} D3DSHADER_PARAM_REGISTER_TYPE;
+
+typedef enum _D3DSHADER_MISCTYPE_OFFSETS {
+    D3DSMO_POSITION  = 0,
+    D3DSMO_FACE      = 1
+} D3DSHADER_MISCTYPE_OFFSETS;
+
+typedef enum _D3DVS_RASTOUT_OFFSETS {
+  D3DSRO_POSITION     = 0,
+  D3DSRO_FOG          = 1,
+  D3DSRO_POINT_SIZE   = 2,
+
+  D3DSRO_FORCE_DWORD  = 0x7FFFFFFF
+} D3DVS_RASTOUT_OFFSETS;
+
+#define D3DVS_ADDRESSMODE_SHIFT  13
+#define D3DVS_ADDRESSMODE_MASK   (0x1 << D3DVS_ADDRESSMODE_SHIFT)
+
+typedef enum _D3DVS_ADDRESSMODE_TYPE {
+  D3DVS_ADDRMODE_ABSOLUTE     = 0 << D3DVS_ADDRESSMODE_SHIFT,
+  D3DVS_ADDRMODE_RELATIVE     = 1 << D3DVS_ADDRESSMODE_SHIFT,
+
+  D3DVS_ADDRMODE_FORCE_DWORD  = 0x7FFFFFFF
+} D3DVS_ADDRESSMODE_TYPE;
+
+#define D3DSHADER_ADDRESSMODE_SHIFT 13
+#define D3DSHADER_ADDRESSMODE_MASK  (1 << D3DSHADER_ADDRESSMODE_SHIFT)
+
+typedef enum _D3DSHADER_ADDRESSMODE_TYPE {
+  D3DSHADER_ADDRMODE_ABSOLUTE    = 0 << D3DSHADER_ADDRESSMODE_SHIFT,
+  D3DSHADER_ADDRMODE_RELATIVE    = 1 << D3DSHADER_ADDRESSMODE_SHIFT,
+
+  D3DSHADER_ADDRMODE_FORCE_DWORD = 0x7FFFFFFF
+} D3DSHADER_ADDRESSMODE_TYPE;
+
+
+#define D3DVS_SWIZZLE_SHIFT      16
+#define D3DVS_SWIZZLE_MASK       (0xFF << D3DVS_SWIZZLE_SHIFT)
+
+#define D3DSP_SWIZZLE_SHIFT      16
+#define D3DSP_SWIZZLE_MASK       (0xFF << D3DSP_SWIZZLE_SHIFT)
+
+#define D3DVS_X_X       (0 << D3DVS_SWIZZLE_SHIFT)
+#define D3DVS_X_Y       (1 << D3DVS_SWIZZLE_SHIFT)
+#define D3DVS_X_Z       (2 << D3DVS_SWIZZLE_SHIFT)
+#define D3DVS_X_W       (3 << D3DVS_SWIZZLE_SHIFT)
+
+#define D3DVS_Y_X       (0 << (D3DVS_SWIZZLE_SHIFT + 2))
+#define D3DVS_Y_Y       (1 << (D3DVS_SWIZZLE_SHIFT + 2))
+#define D3DVS_Y_Z       (2 << (D3DVS_SWIZZLE_SHIFT + 2))
+#define D3DVS_Y_W       (3 << (D3DVS_SWIZZLE_SHIFT + 2))
+
+#define D3DVS_Z_X       (0 << (D3DVS_SWIZZLE_SHIFT + 4))
+#define D3DVS_Z_Y       (1 << (D3DVS_SWIZZLE_SHIFT + 4))
+#define D3DVS_Z_Z       (2 << (D3DVS_SWIZZLE_SHIFT + 4))
+#define D3DVS_Z_W       (3 << (D3DVS_SWIZZLE_SHIFT + 4))
+
+#define D3DVS_W_X       (0 << (D3DVS_SWIZZLE_SHIFT + 6))
+#define D3DVS_W_Y       (1 << (D3DVS_SWIZZLE_SHIFT + 6))
+#define D3DVS_W_Z       (2 << (D3DVS_SWIZZLE_SHIFT + 6))
+#define D3DVS_W_W       (3 << (D3DVS_SWIZZLE_SHIFT + 6))
+
+#define D3DVS_NOSWIZZLE (D3DVS_X_X | D3DVS_Y_Y | D3DVS_Z_Z | D3DVS_W_W)
+
+#define D3DSP_NOSWIZZLE \
+    ((0 << (D3DSP_SWIZZLE_SHIFT + 0)) | (1 << (D3DSP_SWIZZLE_SHIFT + 2)) | (2 << (D3DSP_SWIZZLE_SHIFT + 4)) | (3 << (D3DSP_SWIZZLE_SHIFT + 6)))
+
+#define D3DSP_SRCMOD_SHIFT      24
+#define D3DSP_SRCMOD_MASK       (0xF << D3DSP_SRCMOD_SHIFT)
+
+typedef enum _D3DSHADER_PARAM_SRCMOD_TYPE {
+  D3DSPSM_NONE         =  0 << D3DSP_SRCMOD_SHIFT,
+  D3DSPSM_NEG          =  1 << D3DSP_SRCMOD_SHIFT,
+  D3DSPSM_BIAS         =  2 << D3DSP_SRCMOD_SHIFT,
+  D3DSPSM_BIASNEG      =  3 << D3DSP_SRCMOD_SHIFT,
+  D3DSPSM_SIGN         =  4 << D3DSP_SRCMOD_SHIFT,
+  D3DSPSM_SIGNNEG      =  5 << D3DSP_SRCMOD_SHIFT,
+  D3DSPSM_COMP         =  6 << D3DSP_SRCMOD_SHIFT,
+  D3DSPSM_X2           =  7 << D3DSP_SRCMOD_SHIFT,
+  D3DSPSM_X2NEG        =  8 << D3DSP_SRCMOD_SHIFT,
+  D3DSPSM_DZ           =  9 << D3DSP_SRCMOD_SHIFT,
+  D3DSPSM_DW           = 10 << D3DSP_SRCMOD_SHIFT,
+  D3DSPSM_ABS          = 11 << D3DSP_SRCMOD_SHIFT,
+  D3DSPSM_ABSNEG       = 12 << D3DSP_SRCMOD_SHIFT,
+  D3DSPSM_NOT          = 13 << D3DSP_SRCMOD_SHIFT,
+
+  D3DSPSM_FORCE_DWORD  = 0x7FFFFFFF
+} D3DSHADER_PARAM_SRCMOD_TYPE;
+
+#define D3DPS_VERSION(major, minor) (0xFFFF0000 | ((major) << 8) | (minor))
+#define D3DVS_VERSION(major, minor) (0xFFFE0000 | ((major) << 8) | (minor))
+#define D3DSHADER_VERSION_MAJOR(version) (((version) >> 8) & 0xFF)
+#define D3DSHADER_VERSION_MINOR(version) (((version) >> 0) & 0xFF)
+
+#define D3DSI_COMMENTSIZE_SHIFT 16
+#define D3DSI_COMMENTSIZE_MASK (0x7FFF << D3DSI_COMMENTSIZE_SHIFT)
+
+#define D3DSHADER_COMMENT(commentSize) \
+  ((((commentSize) << D3DSI_COMMENTSIZE_SHIFT) & D3DSI_COMMENTSIZE_MASK) | D3DSIO_COMMENT)
+
+#define D3DPS_END() 0x0000FFFF
+#define D3DVS_END() 0x0000FFFF
+
+
+/*****************************************************************************
+ * Direct 3D v8 enumerated types
+ */
+typedef enum _D3DBACKBUFFER_TYPE {
+    D3DBACKBUFFER_TYPE_MONO         = 0,
+    D3DBACKBUFFER_TYPE_LEFT         = 1,
+    D3DBACKBUFFER_TYPE_RIGHT        = 2,
+
+    D3DBACKBUFFER_TYPE_FORCE_DWORD  = 0x7fffffff
+} D3DBACKBUFFER_TYPE;
+
+#define D3DPRESENT_BACK_BUFFER_MAX 3L
+
+typedef enum _D3DBASISTYPE {
+   D3DBASIS_BEZIER        = 0,
+   D3DBASIS_BSPLINE       = 1,
+   D3DBASIS_INTERPOLATE   = 2,
+
+   D3DBASIS_FORCE_DWORD   = 0x7fffffff
+} D3DBASISTYPE;
+
+typedef enum _D3DBLEND {
+    D3DBLEND_ZERO               =  1,
+    D3DBLEND_ONE                =  2,
+    D3DBLEND_SRCCOLOR           =  3,
+    D3DBLEND_INVSRCCOLOR        =  4,
+    D3DBLEND_SRCALPHA           =  5,
+    D3DBLEND_INVSRCALPHA        =  6,
+    D3DBLEND_DESTALPHA          =  7,
+    D3DBLEND_INVDESTALPHA       =  8,
+    D3DBLEND_DESTCOLOR          =  9,
+    D3DBLEND_INVDESTCOLOR       = 10,
+    D3DBLEND_SRCALPHASAT        = 11,
+    D3DBLEND_BOTHSRCALPHA       = 12,
+    D3DBLEND_BOTHINVSRCALPHA    = 13,
+    D3DBLEND_BLENDFACTOR        = 14,
+    D3DBLEND_INVBLENDFACTOR     = 15,
+    D3DBLEND_FORCE_DWORD        = 0x7fffffff
+} D3DBLEND;
+
+typedef enum _D3DBLENDOP {
+    D3DBLENDOP_ADD              = 1,
+    D3DBLENDOP_SUBTRACT         = 2,
+    D3DBLENDOP_REVSUBTRACT      = 3,
+    D3DBLENDOP_MIN              = 4,
+    D3DBLENDOP_MAX              = 5,
+
+    D3DBLENDOP_FORCE_DWORD      = 0x7fffffff
+} D3DBLENDOP;
+
+typedef enum _D3DCMPFUNC {
+    D3DCMP_NEVER                = 1,
+    D3DCMP_LESS                 = 2,
+    D3DCMP_EQUAL                = 3,
+    D3DCMP_LESSEQUAL            = 4,
+    D3DCMP_GREATER              = 5,
+    D3DCMP_NOTEQUAL             = 6,
+    D3DCMP_GREATEREQUAL         = 7,
+    D3DCMP_ALWAYS               = 8,
+
+    D3DCMP_FORCE_DWORD          = 0x7fffffff
+} D3DCMPFUNC;
+
+typedef enum _D3DCUBEMAP_FACES {
+    D3DCUBEMAP_FACE_POSITIVE_X     = 0,
+    D3DCUBEMAP_FACE_NEGATIVE_X     = 1,
+    D3DCUBEMAP_FACE_POSITIVE_Y     = 2,
+    D3DCUBEMAP_FACE_NEGATIVE_Y     = 3,
+    D3DCUBEMAP_FACE_POSITIVE_Z     = 4,
+    D3DCUBEMAP_FACE_NEGATIVE_Z     = 5,
+
+    D3DCUBEMAP_FACE_FORCE_DWORD    = 0xffffffff
+} D3DCUBEMAP_FACES;
+
+typedef enum _D3DCULL {
+    D3DCULL_NONE                = 1,
+    D3DCULL_CW                  = 2,
+    D3DCULL_CCW                 = 3,
+
+    D3DCULL_FORCE_DWORD         = 0x7fffffff
+} D3DCULL;
+
+typedef enum _D3DDEBUGMONITORTOKENS {
+    D3DDMT_ENABLE          = 0,
+    D3DDMT_DISABLE         = 1,
+
+    D3DDMT_FORCE_DWORD     = 0x7fffffff
+} D3DDEBUGMONITORTOKENS;
+
+typedef enum _D3DDEGREETYPE {
+    D3DDEGREE_LINEAR      = 1,
+    D3DDEGREE_QUADRATIC   = 2,
+    D3DDEGREE_CUBIC       = 3,
+    D3DDEGREE_QUINTIC     = 5,
+    
+    D3DDEGREE_FORCE_DWORD   = 0x7fffffff
+} D3DDEGREETYPE;
+
+typedef enum _D3DDEVTYPE {
+    D3DDEVTYPE_HAL         = 1,
+    D3DDEVTYPE_REF         = 2,
+    D3DDEVTYPE_SW          = 3,
+    D3DDEVTYPE_NULLREF     = 4,
+
+    D3DDEVTYPE_FORCE_DWORD = 0xffffffff
+} D3DDEVTYPE;
+
+typedef enum _D3DFILLMODE {
+    D3DFILL_POINT               = 1,
+    D3DFILL_WIREFRAME           = 2,
+    D3DFILL_SOLID               = 3,
+
+    D3DFILL_FORCE_DWORD         = 0x7fffffff
+} D3DFILLMODE;
+
+typedef enum _D3DFOGMODE {
+    D3DFOG_NONE                 = 0,
+    D3DFOG_EXP                  = 1,
+    D3DFOG_EXP2                 = 2,
+    D3DFOG_LINEAR               = 3,
+
+    D3DFOG_FORCE_DWORD          = 0x7fffffff
+} D3DFOGMODE;
+
+typedef enum _D3DFORMAT {
+    D3DFMT_UNKNOWN              =   0,
+
+    D3DFMT_R8G8B8               =  20,
+    D3DFMT_A8R8G8B8             =  21,
+    D3DFMT_X8R8G8B8             =  22,
+    D3DFMT_R5G6B5               =  23,
+    D3DFMT_X1R5G5B5             =  24,
+    D3DFMT_A1R5G5B5             =  25,
+    D3DFMT_A4R4G4B4             =  26,
+    D3DFMT_R3G3B2               =  27,
+    D3DFMT_A8                   =  28,
+    D3DFMT_A8R3G3B2             =  29,
+    D3DFMT_X4R4G4B4             =  30,
+    D3DFMT_A2B10G10R10          =  31,
+    D3DFMT_A8B8G8R8             =  32,
+    D3DFMT_X8B8G8R8             =  33,
+    D3DFMT_G16R16               =  34,
+    D3DFMT_A2R10G10B10          =  35,
+    D3DFMT_A16B16G16R16         =  36,
+  
+
+    D3DFMT_A8P8                 =  40,
+    D3DFMT_P8                   =  41,
+
+    D3DFMT_L8                   =  50,
+    D3DFMT_A8L8                 =  51,
+    D3DFMT_A4L4                 =  52,
+
+    D3DFMT_V8U8                 =  60,
+    D3DFMT_L6V5U5               =  61,
+    D3DFMT_X8L8V8U8             =  62,
+    D3DFMT_Q8W8V8U8             =  63,
+    D3DFMT_V16U16               =  64,
+    D3DFMT_A2W10V10U10          =  67,
+
+    D3DFMT_UYVY                 =  MAKEFOURCC('U', 'Y', 'V', 'Y'),
+    D3DFMT_YUY2                 =  MAKEFOURCC('Y', 'U', 'Y', '2'),
+    D3DFMT_DXT1                 =  MAKEFOURCC('D', 'X', 'T', '1'),
+    D3DFMT_DXT2                 =  MAKEFOURCC('D', 'X', 'T', '2'),
+    D3DFMT_DXT3                 =  MAKEFOURCC('D', 'X', 'T', '3'),
+    D3DFMT_DXT4                 =  MAKEFOURCC('D', 'X', 'T', '4'),
+    D3DFMT_DXT5                 =  MAKEFOURCC('D', 'X', 'T', '5'),
+    D3DFMT_MULTI2_ARGB8         =  MAKEFOURCC('M', 'E', 'T', '1'),
+    D3DFMT_G8R8_G8B8            =  MAKEFOURCC('G', 'R', 'G', 'B'),
+    D3DFMT_R8G8_B8G8            =  MAKEFOURCC('R', 'G', 'B', 'G'),
+
+    D3DFMT_D16_LOCKABLE         =  70,
+    D3DFMT_D32                  =  71,
+    D3DFMT_D15S1                =  73,
+    D3DFMT_D24S8                =  75,
+    D3DFMT_D24X8                =  77,
+    D3DFMT_D24X4S4              =  79,
+    D3DFMT_D16                  =  80,
+    D3DFMT_L16                  =  81,
+    D3DFMT_D32F_LOCKABLE        =  82,
+    D3DFMT_D24FS8               =  83,
+
+    D3DFMT_VERTEXDATA           = 100,
+    D3DFMT_INDEX16              = 101,
+    D3DFMT_INDEX32              = 102,
+    D3DFMT_Q16W16V16U16         = 110,
+    /* Floating point formats */
+    D3DFMT_R16F                 = 111,
+    D3DFMT_G16R16F              = 112,
+    D3DFMT_A16B16G16R16F        = 113,
+    
+    /* IEEE formats */
+    D3DFMT_R32F                 = 114,
+    D3DFMT_G32R32F              = 115,
+    D3DFMT_A32B32G32R32F        = 116,
+    
+    D3DFMT_CxV8U8               = 117,
+
+
+    D3DFMT_FORCE_DWORD          = 0xFFFFFFFF
+} D3DFORMAT;
+
+typedef enum _D3DLIGHTTYPE {
+    D3DLIGHT_POINT          = 1,
+    D3DLIGHT_SPOT           = 2,
+    D3DLIGHT_DIRECTIONAL    = 3,
+
+    D3DLIGHT_FORCE_DWORD    = 0x7fffffff
+} D3DLIGHTTYPE;
+
+typedef enum _D3DMATERIALCOLORSOURCE {
+    D3DMCS_MATERIAL         = 0,
+    D3DMCS_COLOR1           = 1,
+    D3DMCS_COLOR2           = 2,
+
+    D3DMCS_FORCE_DWORD      = 0x7fffffff
+} D3DMATERIALCOLORSOURCE;
+
+typedef enum _D3DMULTISAMPLE_TYPE {
+    D3DMULTISAMPLE_NONE            =  0,
+    D3DMULTISAMPLE_NONMASKABLE     =  1,
+    D3DMULTISAMPLE_2_SAMPLES       =  2,
+    D3DMULTISAMPLE_3_SAMPLES       =  3,
+    D3DMULTISAMPLE_4_SAMPLES       =  4,
+    D3DMULTISAMPLE_5_SAMPLES       =  5,
+    D3DMULTISAMPLE_6_SAMPLES       =  6,
+    D3DMULTISAMPLE_7_SAMPLES       =  7,
+    D3DMULTISAMPLE_8_SAMPLES       =  8,
+    D3DMULTISAMPLE_9_SAMPLES       =  9,
+    D3DMULTISAMPLE_10_SAMPLES      = 10,
+    D3DMULTISAMPLE_11_SAMPLES      = 11,
+    D3DMULTISAMPLE_12_SAMPLES      = 12,
+    D3DMULTISAMPLE_13_SAMPLES      = 13,
+    D3DMULTISAMPLE_14_SAMPLES      = 14,
+    D3DMULTISAMPLE_15_SAMPLES      = 15,
+    D3DMULTISAMPLE_16_SAMPLES      = 16,
+
+    D3DMULTISAMPLE_FORCE_DWORD     = 0xffffffff
+} D3DMULTISAMPLE_TYPE;
+
+#if 0
+typedef enum _D3DORDERTYPE {
+   D3DORDER_LINEAR      = 1,
+   D3DORDER_QUADRATIC   = 2,
+   D3DORDER_CUBIC       = 3,
+   D3DORDER_QUINTIC     = 5,
+
+   D3DORDER_FORCE_DWORD = 0x7fffffff
+} D3DORDERTYPE;
+#endif
+typedef enum _D3DPATCHEDGESTYLE {
+   D3DPATCHEDGE_DISCRETE    = 0,
+   D3DPATCHEDGE_CONTINUOUS  = 1,
+
+   D3DPATCHEDGE_FORCE_DWORD = 0x7fffffff,
+} D3DPATCHEDGESTYLE;
+
+typedef enum _D3DPOOL {
+    D3DPOOL_DEFAULT                 = 0,
+    D3DPOOL_MANAGED                 = 1,
+    D3DPOOL_SYSTEMMEM               = 2,
+    D3DPOOL_SCRATCH                 = 3,
+
+    D3DPOOL_FORCE_DWORD             = 0x7fffffff
+} D3DPOOL;
+
+typedef enum _D3DPRIMITIVETYPE {
+    D3DPT_POINTLIST             = 1,
+    D3DPT_LINELIST              = 2,
+    D3DPT_LINESTRIP             = 3,
+    D3DPT_TRIANGLELIST          = 4,
+    D3DPT_TRIANGLESTRIP         = 5,
+    D3DPT_TRIANGLEFAN           = 6,
+
+    D3DPT_FORCE_DWORD           = 0x7fffffff
+} D3DPRIMITIVETYPE;
+
+typedef enum _D3DRENDERSTATETYPE {
+    D3DRS_ZENABLE                   =   7,
+    D3DRS_FILLMODE                  =   8,
+    D3DRS_SHADEMODE                 =   9,
+    D3DRS_ZWRITEENABLE              =  14,
+    D3DRS_ALPHATESTENABLE           =  15,
+    D3DRS_LASTPIXEL                 =  16,
+    D3DRS_SRCBLEND                  =  19,
+    D3DRS_DESTBLEND                 =  20,
+    D3DRS_CULLMODE                  =  22,
+    D3DRS_ZFUNC                     =  23,
+    D3DRS_ALPHAREF                  =  24,
+    D3DRS_ALPHAFUNC                 =  25,
+    D3DRS_DITHERENABLE              =  26,
+    D3DRS_ALPHABLENDENABLE          =  27,
+    D3DRS_FOGENABLE                 =  28,
+    D3DRS_SPECULARENABLE            =  29,
+    D3DRS_FOGCOLOR                  =  34,
+    D3DRS_FOGTABLEMODE              =  35,
+    D3DRS_FOGSTART                  =  36,
+    D3DRS_FOGEND                    =  37,
+    D3DRS_FOGDENSITY                =  38,
+    D3DRS_RANGEFOGENABLE            =  48,
+    D3DRS_STENCILENABLE             =  52,
+    D3DRS_STENCILFAIL               =  53,
+    D3DRS_STENCILZFAIL              =  54,
+    D3DRS_STENCILPASS               =  55,
+    D3DRS_STENCILFUNC               =  56,
+    D3DRS_STENCILREF                =  57,
+    D3DRS_STENCILMASK               =  58,
+    D3DRS_STENCILWRITEMASK          =  59,
+    D3DRS_TEXTUREFACTOR             =  60,
+    D3DRS_WRAP0                     = 128,
+    D3DRS_WRAP1                     = 129,
+    D3DRS_WRAP2                     = 130,
+    D3DRS_WRAP3                     = 131,
+    D3DRS_WRAP4                     = 132,
+    D3DRS_WRAP5                     = 133,
+    D3DRS_WRAP6                     = 134,
+    D3DRS_WRAP7                     = 135,
+    D3DRS_CLIPPING                  = 136,
+    D3DRS_LIGHTING                  = 137,
+    D3DRS_AMBIENT                   = 139,
+    D3DRS_FOGVERTEXMODE             = 140,
+    D3DRS_COLORVERTEX               = 141,
+    D3DRS_LOCALVIEWER               = 142,
+    D3DRS_NORMALIZENORMALS          = 143,
+    D3DRS_DIFFUSEMATERIALSOURCE     = 145,
+    D3DRS_SPECULARMATERIALSOURCE    = 146,
+    D3DRS_AMBIENTMATERIALSOURCE     = 147,
+    D3DRS_EMISSIVEMATERIALSOURCE    = 148,
+    D3DRS_VERTEXBLEND               = 151,
+    D3DRS_CLIPPLANEENABLE           = 152,
+    D3DRS_POINTSIZE                 = 154,
+    D3DRS_POINTSIZE_MIN             = 155,
+    D3DRS_POINTSPRITEENABLE         = 156,
+    D3DRS_POINTSCALEENABLE          = 157,
+    D3DRS_POINTSCALE_A              = 158,
+    D3DRS_POINTSCALE_B              = 159,
+    D3DRS_POINTSCALE_C              = 160,
+    D3DRS_MULTISAMPLEANTIALIAS      = 161,
+    D3DRS_MULTISAMPLEMASK           = 162,
+    D3DRS_PATCHEDGESTYLE            = 163,
+    D3DRS_DEBUGMONITORTOKEN         = 165,
+    D3DRS_POINTSIZE_MAX             = 166,
+    D3DRS_INDEXEDVERTEXBLENDENABLE  = 167,
+    D3DRS_COLORWRITEENABLE          = 168,
+    D3DRS_TWEENFACTOR               = 170,
+    D3DRS_BLENDOP                   = 171,
+    D3DRS_POSITIONDEGREE            = 172,
+    D3DRS_NORMALDEGREE              = 173,
+    D3DRS_SCISSORTESTENABLE         = 174,
+    D3DRS_SLOPESCALEDEPTHBIAS       = 175,
+    D3DRS_ANTIALIASEDLINEENABLE     = 176,
+    D3DRS_MINTESSELLATIONLEVEL      = 178,
+    D3DRS_MAXTESSELLATIONLEVEL      = 179,
+    D3DRS_ADAPTIVETESS_X            = 180,
+    D3DRS_ADAPTIVETESS_Y            = 181,
+    D3DRS_ADAPTIVETESS_Z            = 182,
+    D3DRS_ADAPTIVETESS_W            = 183,
+    D3DRS_ENABLEADAPTIVETESSELLATION= 184,
+    D3DRS_TWOSIDEDSTENCILMODE       = 185,
+    D3DRS_CCW_STENCILFAIL           = 186,
+    D3DRS_CCW_STENCILZFAIL          = 187,
+    D3DRS_CCW_STENCILPASS           = 188,
+    D3DRS_CCW_STENCILFUNC           = 189,
+    D3DRS_COLORWRITEENABLE1         = 190,
+    D3DRS_COLORWRITEENABLE2         = 191,
+    D3DRS_COLORWRITEENABLE3         = 192,
+    D3DRS_BLENDFACTOR               = 193,
+    D3DRS_SRGBWRITEENABLE           = 194,
+    D3DRS_DEPTHBIAS                 = 195,
+    D3DRS_WRAP8                     = 198,
+    D3DRS_WRAP9                     = 199,
+    D3DRS_WRAP10                    = 200,
+    D3DRS_WRAP11                    = 201,
+    D3DRS_WRAP12                    = 202,
+    D3DRS_WRAP13                    = 203,
+    D3DRS_WRAP14                    = 204,
+    D3DRS_WRAP15                    = 205,
+    D3DRS_SEPARATEALPHABLENDENABLE  = 206,
+    D3DRS_SRCBLENDALPHA             = 207,
+    D3DRS_DESTBLENDALPHA            = 208,
+    D3DRS_BLENDOPALPHA              = 209,
+
+    D3DRS_FORCE_DWORD               = 0x7fffffff
+} D3DRENDERSTATETYPE;
+
+typedef enum _D3DRESOURCETYPE {
+    D3DRTYPE_SURFACE                =  1,
+    D3DRTYPE_VOLUME                 =  2,
+    D3DRTYPE_TEXTURE                =  3,
+    D3DRTYPE_VOLUMETEXTURE          =  4,
+    D3DRTYPE_CUBETEXTURE            =  5,
+    D3DRTYPE_VERTEXBUFFER           =  6,
+    D3DRTYPE_INDEXBUFFER            =  7,
+
+    D3DRTYPE_FORCE_DWORD            = 0x7fffffff
+} D3DRESOURCETYPE;
+
+#define D3DRTYPECOUNT (D3DRTYPE_INDEXBUFFER+1)
+
+typedef enum _D3DSHADEMODE {
+    D3DSHADE_FLAT               = 1,
+    D3DSHADE_GOURAUD            = 2,
+    D3DSHADE_PHONG              = 3,
+
+    D3DSHADE_FORCE_DWORD        = 0x7fffffff
+} D3DSHADEMODE;
+
+typedef enum _D3DSTATEBLOCKTYPE {
+    D3DSBT_ALL           = 1,
+    D3DSBT_PIXELSTATE    = 2,
+    D3DSBT_VERTEXSTATE   = 3,
+
+    D3DSBT_FORCE_DWORD   = 0xffffffff
+} D3DSTATEBLOCKTYPE;
+
+typedef enum _D3DSTENCILOP {
+    D3DSTENCILOP_KEEP           = 1,
+    D3DSTENCILOP_ZERO           = 2,
+    D3DSTENCILOP_REPLACE        = 3,
+    D3DSTENCILOP_INCRSAT        = 4,
+    D3DSTENCILOP_DECRSAT        = 5,
+    D3DSTENCILOP_INVERT         = 6,
+    D3DSTENCILOP_INCR           = 7,
+    D3DSTENCILOP_DECR           = 8,
+
+    D3DSTENCILOP_FORCE_DWORD    = 0x7fffffff
+} D3DSTENCILOP;
+
+typedef enum _D3DSWAPEFFECT {
+    D3DSWAPEFFECT_DISCARD         = 1,
+    D3DSWAPEFFECT_FLIP            = 2,
+    D3DSWAPEFFECT_COPY            = 3,
+    D3DSWAPEFFECT_FORCE_DWORD     = 0xFFFFFFFF
+} D3DSWAPEFFECT;
+
+typedef enum _D3DTEXTUREADDRESS {
+    D3DTADDRESS_WRAP            = 1,
+    D3DTADDRESS_MIRROR          = 2,
+    D3DTADDRESS_CLAMP           = 3,
+    D3DTADDRESS_BORDER          = 4,
+    D3DTADDRESS_MIRRORONCE      = 5,
+
+    D3DTADDRESS_FORCE_DWORD     = 0x7fffffff
+} D3DTEXTUREADDRESS;
+
+typedef enum _D3DTEXTUREFILTERTYPE {
+    D3DTEXF_NONE            = 0,
+    D3DTEXF_POINT           = 1,
+    D3DTEXF_LINEAR          = 2,
+    D3DTEXF_ANISOTROPIC     = 3,
+    D3DTEXF_FLATCUBIC       = 4,
+    D3DTEXF_GAUSSIANCUBIC   = 5,
+    D3DTEXF_PYRAMIDALQUAD   = 6,
+    D3DTEXF_GAUSSIANQUAD    = 7,
+    D3DTEXF_FORCE_DWORD     = 0x7fffffff
+} D3DTEXTUREFILTERTYPE;
+
+typedef enum _D3DTEXTUREOP {
+    D3DTOP_DISABLE                   =  1,
+    D3DTOP_SELECTARG1                =  2,
+    D3DTOP_SELECTARG2                =  3,
+    D3DTOP_MODULATE                  =  4,
+    D3DTOP_MODULATE2X                =  5,
+    D3DTOP_MODULATE4X                =  6,
+    D3DTOP_ADD                       =  7,
+    D3DTOP_ADDSIGNED                 =  8,
+    D3DTOP_ADDSIGNED2X               =  9,
+    D3DTOP_SUBTRACT                  = 10,
+    D3DTOP_ADDSMOOTH                 = 11,
+    D3DTOP_BLENDDIFFUSEALPHA         = 12,
+    D3DTOP_BLENDTEXTUREALPHA         = 13,
+    D3DTOP_BLENDFACTORALPHA          = 14,
+    D3DTOP_BLENDTEXTUREALPHAPM       = 15,
+    D3DTOP_BLENDCURRENTALPHA         = 16,
+    D3DTOP_PREMODULATE               = 17,
+    D3DTOP_MODULATEALPHA_ADDCOLOR    = 18,
+    D3DTOP_MODULATECOLOR_ADDALPHA    = 19,
+    D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20,
+    D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21,
+    D3DTOP_BUMPENVMAP                = 22,
+    D3DTOP_BUMPENVMAPLUMINANCE       = 23,
+    D3DTOP_DOTPRODUCT3               = 24,
+    D3DTOP_MULTIPLYADD               = 25,
+    D3DTOP_LERP                      = 26,
+
+    D3DTOP_FORCE_DWORD               = 0x7fffffff,
+} D3DTEXTUREOP;
+
+typedef enum _D3DTEXTURESTAGESTATETYPE {
+    D3DTSS_COLOROP               =  1,
+    D3DTSS_COLORARG1             =  2,
+    D3DTSS_COLORARG2             =  3,
+    D3DTSS_ALPHAOP               =  4,
+    D3DTSS_ALPHAARG1             =  5,
+    D3DTSS_ALPHAARG2             =  6,
+    D3DTSS_BUMPENVMAT00          =  7,
+    D3DTSS_BUMPENVMAT01          =  8,
+    D3DTSS_BUMPENVMAT10          =  9,
+    D3DTSS_BUMPENVMAT11          = 10,
+    D3DTSS_TEXCOORDINDEX         = 11,
+#if 1 /* TODO: remove once samplerstates are implemented.  */
+    D3DTSS_ADDRESSU              = 13,
+    D3DTSS_ADDRESSV              = 14,
+    D3DTSS_BORDERCOLOR           = 15,
+    D3DTSS_MAGFILTER             = 16,
+    D3DTSS_MINFILTER             = 17,
+    D3DTSS_MIPFILTER             = 18,
+    D3DTSS_MIPMAPLODBIAS         = 19,
+    D3DTSS_MAXMIPLEVEL           = 20,
+    D3DTSS_MAXANISOTROPY         = 21,
+#endif
+    D3DTSS_BUMPENVLSCALE         = 22,
+    D3DTSS_BUMPENVLOFFSET        = 23,
+    D3DTSS_TEXTURETRANSFORMFLAGS = 24,
+    D3DTSS_ADDRESSW              = 25,
+    D3DTSS_COLORARG0             = 26,
+    D3DTSS_ALPHAARG0             = 27,
+    D3DTSS_RESULTARG             = 28,
+    D3DTSS_CONSTANT              = 32,
+
+    D3DTSS_FORCE_DWORD           = 0x7fffffff
+} D3DTEXTURESTAGESTATETYPE;
+
+typedef enum _D3DTEXTURETRANSFORMFLAGS {
+    D3DTTFF_DISABLE         =   0,
+    D3DTTFF_COUNT1          =   1,
+    D3DTTFF_COUNT2          =   2,
+    D3DTTFF_COUNT3          =   3,
+    D3DTTFF_COUNT4          =   4,
+    D3DTTFF_PROJECTED       = 256,
+
+    D3DTTFF_FORCE_DWORD     = 0x7fffffff
+} D3DTEXTURETRANSFORMFLAGS;
+
+typedef enum _D3DTRANSFORMSTATETYPE {
+    D3DTS_VIEW            =  2,
+    D3DTS_PROJECTION      =  3,
+    D3DTS_TEXTURE0        = 16,
+    D3DTS_TEXTURE1        = 17,
+    D3DTS_TEXTURE2        = 18,
+    D3DTS_TEXTURE3        = 19,
+    D3DTS_TEXTURE4        = 20,
+    D3DTS_TEXTURE5        = 21,
+    D3DTS_TEXTURE6        = 22,
+    D3DTS_TEXTURE7        = 23,
+
+    D3DTS_FORCE_DWORD     = 0x7fffffff
+} D3DTRANSFORMSTATETYPE;
+
+typedef enum _D3DVERTEXBLENDFLAGS {
+    D3DVBF_DISABLE  =   0,
+    D3DVBF_1WEIGHTS =   1,
+    D3DVBF_2WEIGHTS =   2,
+    D3DVBF_3WEIGHTS =   3,
+    D3DVBF_TWEENING = 255,
+    D3DVBF_0WEIGHTS = 256
+} D3DVERTEXBLENDFLAGS;
+
+typedef enum _D3DZBUFFERTYPE {
+    D3DZB_FALSE                 = 0,
+    D3DZB_TRUE                  = 1,
+    D3DZB_USEW                  = 2,
+
+    D3DZB_FORCE_DWORD           = 0x7fffffff
+} D3DZBUFFERTYPE;
+
+typedef enum _D3DSAMPLERSTATETYPE {
+    D3DSAMP_ADDRESSU       = 1,
+    D3DSAMP_ADDRESSV       = 2,
+    D3DSAMP_ADDRESSW       = 3,
+    D3DSAMP_BORDERCOLOR    = 4,
+    D3DSAMP_MAGFILTER      = 5,
+    D3DSAMP_MINFILTER      = 6,
+    D3DSAMP_MIPFILTER      = 7,
+    D3DSAMP_MIPMAPLODBIAS  = 8,
+    D3DSAMP_MAXMIPLEVEL    = 9,
+    D3DSAMP_MAXANISOTROPY  = 10,
+    D3DSAMP_SRGBTEXTURE    = 11,
+    D3DSAMP_ELEMENTINDEX   = 12,
+    D3DSAMP_DMAPOFFSET     = 13,
+                                
+    D3DSAMP_FORCE_DWORD   = 0x7fffffff,
+} D3DSAMPLERSTATETYPE;
+
+
+/*****************************************************************************
+ * Direct 3D v9 typedefs
+ */
+#ifndef D3DCOLOR_DEFINED
+typedef DWORD D3DCOLOR;
+#define D3DCOLOR_DEFINED
+#endif
+
+/*****************************************************************************
+ * Direct 3D v9 structures
+ */
+typedef struct _D3DADAPTER_IDENTIFIER9 {
+    char            Driver[MAX_DEVICE_IDENTIFIER_STRING];
+    char            Description[MAX_DEVICE_IDENTIFIER_STRING];
+    char            DeviceName[32];
+    LARGE_INTEGER   DriverVersion; 
+
+    DWORD           VendorId;
+    DWORD           DeviceId;
+    DWORD           SubSysId;
+    DWORD           Revision;
+
+    GUID            DeviceIdentifier;
+
+    DWORD           WHQLLevel;
+} D3DADAPTER_IDENTIFIER9;
+
+typedef struct _D3DBOX {
+    UINT                Left;
+    UINT                Top;
+    UINT                Right;
+    UINT                Bottom;
+    UINT                Front;
+    UINT                Back;
+} D3DBOX;
+
+typedef struct _D3DCLIPSTATUS9 {
+   DWORD ClipUnion;
+   DWORD ClipIntersection;
+} D3DCLIPSTATUS9;
+
+#ifndef D3DCOLORVALUE_DEFINED
+typedef struct _D3DCOLORVALUE {
+    float r;
+    float g;
+    float b;
+    float a;
+} D3DCOLORVALUE;
+#define D3DCOLORVALUE_DEFINED
+#endif
+
+typedef struct _D3DDEVICE_CREATION_PARAMETERS {
+    UINT          AdapterOrdinal;
+    D3DDEVTYPE    DeviceType;
+    HWND          hFocusWindow;
+    DWORD         BehaviorFlags;
+} D3DDEVICE_CREATION_PARAMETERS;
+
+typedef struct _D3DDEVINFO_D3D9BANDWIDTHTIMINGS {
+    float         MaxBandwidthUtilized;
+    float         FrontEndUploadMemoryUtilizedPercent;
+    float         VertexRateUtilizedPercent;
+    float         TriangleSetupRateUtilizedPercent;
+    float         FillRateUtilizedPercent;
+} D3DDEVINFO_D3D9BANDWIDTHTIMINGS;
+
+typedef struct _D3DDEVINFO_D3D9CACHEUTILIZATION {
+    float         TextureCacheHitRate;
+    float         PostTransformVertexCacheHitRate;
+} D3DDEVINFO_D3D9CACHEUTILIZATION;
+
+typedef struct _D3DDEVINFO_D3D9INTERFACETIMINGS {
+    float         WaitingForGPUToUseApplicationResourceTimePercent;
+    float         WaitingForGPUToAcceptMoreCommandsTimePercent;
+    float         WaitingForGPUToStayWithinLatencyTimePercent;
+    float         WaitingForGPUExclusiveResourceTimePercent;
+    float         WaitingForGPUOtherTimePercent;
+} D3DDEVINFO_D3D9INTERFACETIMINGS;
+
+typedef struct _D3DDEVINFO_D3D9PIPELINETIMINGS {
+    float         VertexProcessingTimePercent;
+    float         PixelProcessingTimePercent;
+    float         OtherGPUProcessingTimePercent;
+    float         GPUIdleTimePercent;
+} D3DDEVINFO_D3D9PIPELINETIMINGS;
+
+typedef struct _D3DDEVINFO_D3D9STAGETIMINGS {
+    float         MemoryProcessingPercent;
+    float         ComputationProcessingPercent;
+} D3DDEVINFO_D3D9STAGETIMINGS;
+
+
+/* Vertex cache optimization hints. */
+typedef struct D3DDEVINFO_VCACHE {
+    /* Must be a 4 char code FOURCC (e.g. CACH) */
+    DWORD         Pattern; 
+    /* 0 to get the longest  strips, 1 vertex cache */
+    DWORD         OptMethod; 
+     /* Cache size to use (only valid if OptMethod==1) */
+    DWORD         CacheSize;
+    /* internal for deciding when to restart strips, non user modifyable (only valid if OptMethod==1) */
+    DWORD         MagicNumber; 
+} D3DDEVINFO_VCACHE;
+
+typedef struct D3DRESOURCESTATS {
+    BOOL                bThrashing;
+    DWORD               ApproxBytesDownloaded;
+    DWORD               NumEvicts;
+    DWORD               NumVidCreates;
+    DWORD               LastPri;
+    DWORD               NumUsed;
+    DWORD               NumUsedInVidMem;
+    DWORD               WorkingSet;
+    DWORD               WorkingSetBytes;
+    DWORD               TotalManaged;
+    DWORD               TotalBytes;
+} D3DRESOURCESTATS;
+
+typedef struct _D3DDEVINFO_D3DRESOURCEMANAGER {
+    D3DRESOURCESTATS stats[D3DRTYPECOUNT];
+} D3DDEVINFO_D3DRESOURCEMANAGER;
+
+typedef struct _D3DDEVINFO_D3DVERTEXSTATS {
+    DWORD NumRenderedTriangles;
+    DWORD NumExtraClippingTriangles;
+} D3DDEVINFO_D3DVERTEXSTATS;
+
+typedef struct _D3DDISPLAYMODE {
+    UINT            Width;
+    UINT            Height;
+    UINT            RefreshRate;
+    D3DFORMAT       Format;
+} D3DDISPLAYMODE;
+
+typedef struct _D3DGAMMARAMP {
+    WORD                red  [256];
+    WORD                green[256];
+    WORD                blue [256];
+} D3DGAMMARAMP;
+
+typedef struct _D3DINDEXBUFFER_DESC {
+    D3DFORMAT           Format;
+    D3DRESOURCETYPE     Type;
+    DWORD               Usage;
+    D3DPOOL             Pool;
+    UINT                Size;
+} D3DINDEXBUFFER_DESC;
+
+#ifndef D3DVECTOR_DEFINED
+typedef struct _D3DVECTOR {
+    float x;
+    float y;
+    float z;
+} D3DVECTOR;
+#define D3DVECTOR_DEFINED
+#endif
+
+typedef struct _D3DLIGHT9 {
+    D3DLIGHTTYPE    Type;
+    D3DCOLORVALUE   Diffuse;
+    D3DCOLORVALUE   Specular;
+    D3DCOLORVALUE   Ambient;
+    D3DVECTOR       Position;
+    D3DVECTOR       Direction;
+    float           Range;
+    float           Falloff;
+    float           Attenuation0;
+    float           Attenuation1;
+    float           Attenuation2;
+    float           Theta;
+    float           Phi;
+} D3DLIGHT9;
+
+typedef struct _D3DLINEPATTERN {
+    WORD    wRepeatFactor;
+    WORD    wLinePattern;
+} D3DLINEPATTERN;
+
+typedef struct _D3DLOCKED_BOX {
+    INT                 RowPitch;
+    INT                 SlicePitch;
+    void*               pBits;
+} D3DLOCKED_BOX;
+
+typedef struct _D3DLOCKED_RECT {
+    INT                 Pitch;
+    void*               pBits;
+} D3DLOCKED_RECT;
+
+typedef struct _D3DMATERIAL9 {
+    D3DCOLORVALUE   Diffuse;
+    D3DCOLORVALUE   Ambient;
+    D3DCOLORVALUE   Specular;
+    D3DCOLORVALUE   Emissive;
+    float           Power;
+} D3DMATERIAL9;
+
+#ifndef D3DMATRIX_DEFINED
+typedef struct _D3DMATRIX {
+    union {
+        struct {
+            float        _11, _12, _13, _14;
+            float        _21, _22, _23, _24;
+            float        _31, _32, _33, _34;
+            float        _41, _42, _43, _44;
+        } DUMMYSTRUCTNAME;
+        float m[4][4];
+    } DUMMYUNIONNAME;
+} D3DMATRIX;
+#define D3DMATRIX_DEFINED
+#endif
+
+typedef struct _D3DPRESENT_PARAMETERS_ {
+    UINT                    BackBufferWidth;
+    UINT                    BackBufferHeight;
+    D3DFORMAT               BackBufferFormat;
+    UINT                    BackBufferCount;
+
+    D3DMULTISAMPLE_TYPE     MultiSampleType;
+    DWORD                   MultiSampleQuality;
+
+    D3DSWAPEFFECT           SwapEffect;
+    HWND                    hDeviceWindow;
+    BOOL                    Windowed;
+    BOOL                    EnableAutoDepthStencil;
+    D3DFORMAT               AutoDepthStencilFormat;
+    DWORD                   Flags;
+
+    UINT                    FullScreen_RefreshRateInHz;
+    UINT                    PresentationInterval;
+
+} D3DPRESENT_PARAMETERS;
+
+typedef struct _D3DRANGE {
+    UINT                Offset;
+    UINT                Size;
+} D3DRANGE;
+
+typedef struct _D3DRASTER_STATUS {
+    BOOL            InVBlank;
+    UINT            ScanLine;
+} D3DRASTER_STATUS;
+
+#ifndef D3DRECT_DEFINED
+typedef struct _D3DRECT {
+    LONG x1;
+    LONG y1;
+    LONG x2;
+    LONG y2;
+} D3DRECT;
+#define D3DRECT_DEFINED
+#endif
+
+typedef struct _D3DRECTPATCH_INFO {
+    UINT                StartVertexOffsetWidth;
+    UINT                StartVertexOffsetHeight;
+    UINT                Width;
+    UINT                Height;
+    UINT                Stride;
+    D3DBASISTYPE        Basis;
+    D3DDEGREETYPE       Degree;
+} D3DRECTPATCH_INFO;
+
+typedef struct _D3DSURFACE_DESC {
+    D3DFORMAT           Format;
+    D3DRESOURCETYPE     Type;
+    DWORD               Usage;
+    D3DPOOL             Pool;
+    D3DMULTISAMPLE_TYPE MultiSampleType;
+    DWORD               MultiSampleQuality;
+    UINT                Width;
+    UINT                Height;
+} D3DSURFACE_DESC;
+
+typedef struct _D3DTRIPATCH_INFO {
+    UINT                StartVertexOffset;
+    UINT                NumVertices;
+    D3DBASISTYPE        Basis;
+    D3DDEGREETYPE       Degree;
+} D3DTRIPATCH_INFO;
+
+typedef struct _D3DVERTEXBUFFER_DESC {
+    D3DFORMAT           Format;
+    D3DRESOURCETYPE     Type;
+    DWORD               Usage;
+    D3DPOOL             Pool;
+    UINT                Size;
+    DWORD               FVF;
+} D3DVERTEXBUFFER_DESC;
+
+typedef struct _D3DVIEWPORT9 {
+    DWORD       X;
+    DWORD       Y;
+    DWORD       Width;
+    DWORD       Height;
+    float       MinZ;
+    float       MaxZ;
+} D3DVIEWPORT9;
+
+typedef struct _D3DVOLUME_DESC {
+    D3DFORMAT           Format;
+    D3DRESOURCETYPE     Type;
+    DWORD               Usage;
+    D3DPOOL             Pool;
+
+    UINT                Width;
+    UINT                Height;
+    UINT                Depth;
+} D3DVOLUME_DESC;
+
+/* Parts added with d3d9ex */
+#if !defined(D3D_DISABLE_9EX)
+typedef enum D3DSCANLINEORDERING
+{
+    D3DSCANLINEORDERING_UNKNOWN,
+    D3DSCANLINEORDERING_PROGRESSIVE,
+    D3DSCANLINEORDERING_INTERLACED,
+} D3DSCANLINEORDERING;
+
+
+typedef struct D3DDISPLAYMODEFILTER
+{
+    UINT                Size;
+    D3DFORMAT           Format;
+    D3DSCANLINEORDERING ScanLineOrdering;
+} D3DDISPLAYMODEFILTER;
+
+typedef struct D3DDISPLAYMODEEX
+{
+    UINT                Size;
+    UINT                Width;
+    UINT                Height;
+    UINT                RefreshRate;
+    D3DFORMAT           Format;
+    D3DSCANLINEORDERING ScanLineOrdering;
+} D3DDISPLAYMODEEX;
+
+typedef enum D3DDISPLAYROTATION
+{
+    D3DDISPLAYROTATION_IDENTITY = 1,
+    D3DDISPLAYROTATION_90,
+    D3DDISPLAYROTATION_180,
+    D3DDISPLAYROTATION_270
+} D3DDISPLAYROTATION;
+
+typedef enum _D3DCOMPOSERECTSOP{
+    D3DCOMPOSERECTS_COPY        = 1,
+    D3DCOMPOSERECTS_OR,
+    D3DCOMPOSERECTS_AND,
+    D3DCOMPOSERECTS_NEG,
+    D3DCOMPOSERECTS_FORCE_DWORD = 0x7fffffff
+} D3DCOMPOSERECTSOP;
+#endif /* D3D_DISABLE_9EX */
+
+#endif /* __WINE_D3D9TYPES_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dcaps.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dcaps.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dcaps.h	(revision 16410)
@@ -0,0 +1,433 @@
+/*
+ * Copyright (C) 2000 Peter Hunnisett
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_D3DCAPS_H
+#define __WINE_D3DCAPS_H
+
+#include <ddraw.h>
+
+typedef struct _D3DTRANSFORMCAPS {
+	DWORD dwSize;
+	DWORD dwCaps;
+} D3DTRANSFORMCAPS, *LPD3DTRANSFORMCAPS;
+
+#define D3DTRANSFORMCAPS_CLIP           0x00000001L
+
+typedef struct _D3DLIGHTINGCAPS {
+	DWORD dwSize;
+	DWORD dwCaps;
+	DWORD dwLightingModel;
+	DWORD dwNumLights;
+} D3DLIGHTINGCAPS, *LPD3DLIGHTINGCAPS;
+
+#define D3DLIGHTINGMODEL_RGB            0x00000001
+#define D3DLIGHTINGMODEL_MONO           0x00000002
+
+#define D3DLIGHTCAPS_POINT              0x00000001
+#define D3DLIGHTCAPS_SPOT               0x00000002
+#define D3DLIGHTCAPS_DIRECTIONAL        0x00000004
+#define D3DLIGHTCAPS_PARALLELPOINT      0x00000008
+#define D3DLIGHTCAPS_GLSPOT             0x00000010
+
+typedef struct _D3dPrimCaps {
+    DWORD dwSize;
+    DWORD dwMiscCaps;
+    DWORD dwRasterCaps;
+    DWORD dwZCmpCaps;
+    DWORD dwSrcBlendCaps;
+    DWORD dwDestBlendCaps;
+    DWORD dwAlphaCmpCaps;
+    DWORD dwShadeCaps;
+    DWORD dwTextureCaps;
+    DWORD dwTextureFilterCaps;
+    DWORD dwTextureBlendCaps;
+    DWORD dwTextureAddressCaps;
+    DWORD dwStippleWidth;
+    DWORD dwStippleHeight;
+} D3DPRIMCAPS, *LPD3DPRIMCAPS;
+
+#define D3DPMISCCAPS_MASKPLANES         0x00000001
+#define D3DPMISCCAPS_MASKZ              0x00000002
+#define D3DPMISCCAPS_LINEPATTERNREP     0x00000004
+#define D3DPMISCCAPS_CONFORMANT         0x00000008
+#define D3DPMISCCAPS_CULLNONE           0x00000010
+#define D3DPMISCCAPS_CULLCW             0x00000020
+#define D3DPMISCCAPS_CULLCCW            0x00000040
+
+#define D3DPRASTERCAPS_DITHER                     0x00000001
+#define D3DPRASTERCAPS_ROP2                       0x00000002
+#define D3DPRASTERCAPS_XOR                        0x00000004
+#define D3DPRASTERCAPS_PAT                        0x00000008
+#define D3DPRASTERCAPS_ZTEST                      0x00000010
+#define D3DPRASTERCAPS_SUBPIXEL                   0x00000020
+#define D3DPRASTERCAPS_SUBPIXELX                  0x00000040
+#define D3DPRASTERCAPS_FOGVERTEX                  0x00000080
+#define D3DPRASTERCAPS_FOGTABLE                   0x00000100
+#define D3DPRASTERCAPS_STIPPLE                    0x00000200
+#define D3DPRASTERCAPS_ANTIALIASSORTDEPENDENT     0x00000400
+#define D3DPRASTERCAPS_ANTIALIASSORTINDEPENDENT   0x00000800
+#define D3DPRASTERCAPS_ANTIALIASEDGES             0x00001000
+#define D3DPRASTERCAPS_MIPMAPLODBIAS              0x00002000
+#define D3DPRASTERCAPS_ZBIAS                      0x00004000
+#define D3DPRASTERCAPS_ZBUFFERLESSHSR             0x00008000
+#define D3DPRASTERCAPS_FOGRANGE                   0x00010000
+#define D3DPRASTERCAPS_ANISOTROPY                 0x00020000
+#define D3DPRASTERCAPS_WBUFFER                    0x00040000
+#define D3DPRASTERCAPS_TRANSLUCENTSORTINDEPENDENT 0x00080000
+#define D3DPRASTERCAPS_WFOG                       0x00100000
+#define D3DPRASTERCAPS_ZFOG                       0x00200000
+
+#define D3DPCMPCAPS_NEVER               0x00000001
+#define D3DPCMPCAPS_LESS                0x00000002
+#define D3DPCMPCAPS_EQUAL               0x00000004
+#define D3DPCMPCAPS_LESSEQUAL           0x00000008
+#define D3DPCMPCAPS_GREATER             0x00000010
+#define D3DPCMPCAPS_NOTEQUAL            0x00000020
+#define D3DPCMPCAPS_GREATEREQUAL        0x00000040
+#define D3DPCMPCAPS_ALWAYS              0x00000080
+
+#define D3DPBLENDCAPS_ZERO              0x00000001
+#define D3DPBLENDCAPS_ONE               0x00000002
+#define D3DPBLENDCAPS_SRCCOLOR          0x00000004
+#define D3DPBLENDCAPS_INVSRCCOLOR       0x00000008
+#define D3DPBLENDCAPS_SRCALPHA          0x00000010
+#define D3DPBLENDCAPS_INVSRCALPHA       0x00000020
+#define D3DPBLENDCAPS_DESTALPHA         0x00000040
+#define D3DPBLENDCAPS_INVDESTALPHA      0x00000080
+#define D3DPBLENDCAPS_DESTCOLOR         0x00000100
+#define D3DPBLENDCAPS_INVDESTCOLOR      0x00000200
+#define D3DPBLENDCAPS_SRCALPHASAT       0x00000400
+#define D3DPBLENDCAPS_BOTHSRCALPHA      0x00000800
+#define D3DPBLENDCAPS_BOTHINVSRCALPHA   0x00001000
+
+#define D3DPSHADECAPS_COLORFLATMONO     0x00000001
+#define D3DPSHADECAPS_COLORFLATRGB      0x00000002
+#define D3DPSHADECAPS_COLORGOURAUDMONO  0x00000004
+#define D3DPSHADECAPS_COLORGOURAUDRGB   0x00000008
+#define D3DPSHADECAPS_COLORPHONGMONO    0x00000010
+#define D3DPSHADECAPS_COLORPHONGRGB     0x00000020
+
+#define D3DPSHADECAPS_SPECULARFLATMONO    0x00000040
+#define D3DPSHADECAPS_SPECULARFLATRGB     0x00000080
+#define D3DPSHADECAPS_SPECULARGOURAUDMONO 0x00000100
+#define D3DPSHADECAPS_SPECULARGOURAUDRGB  0x00000200
+#define D3DPSHADECAPS_SPECULARPHONGMONO   0x00000400
+#define D3DPSHADECAPS_SPECULARPHONGRGB    0x00000800
+
+#define D3DPSHADECAPS_ALPHAFLATBLEND       0x00001000
+#define D3DPSHADECAPS_ALPHAFLATSTIPPLED    0x00002000
+#define D3DPSHADECAPS_ALPHAGOURAUDBLEND    0x00004000
+#define D3DPSHADECAPS_ALPHAGOURAUDSTIPPLED 0x00008000
+#define D3DPSHADECAPS_ALPHAPHONGBLEND      0x00010000
+#define D3DPSHADECAPS_ALPHAPHONGSTIPPLED   0x00020000
+
+#define D3DPSHADECAPS_FOGFLAT           0x00040000
+#define D3DPSHADECAPS_FOGGOURAUD        0x00080000
+#define D3DPSHADECAPS_FOGPHONG          0x00100000
+
+#define D3DPTEXTURECAPS_PERSPECTIVE              0x00000001
+#define D3DPTEXTURECAPS_POW2                     0x00000002
+#define D3DPTEXTURECAPS_ALPHA                    0x00000004
+#define D3DPTEXTURECAPS_TRANSPARENCY             0x00000008
+#define D3DPTEXTURECAPS_BORDER                   0x00000010
+#define D3DPTEXTURECAPS_SQUAREONLY               0x00000020
+#define D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE 0x00000040
+#define D3DPTEXTURECAPS_ALPHAPALETTE             0x00000080
+#define D3DPTEXTURECAPS_NONPOW2CONDITIONAL  0x00000100L
+/* yes actually 0x00000200 is unused - or at least unreleased */
+#define D3DPTEXTURECAPS_PROJECTED                0x00000400
+#define D3DPTEXTURECAPS_CUBEMAP                  0x00000800
+#define D3DPTEXTURECAPS_COLORKEYBLEND            0x00001000
+
+#define D3DPTFILTERCAPS_NEAREST           0x00000001
+#define D3DPTFILTERCAPS_LINEAR            0x00000002
+#define D3DPTFILTERCAPS_MIPNEAREST        0x00000004
+#define D3DPTFILTERCAPS_MIPLINEAR         0x00000008
+#define D3DPTFILTERCAPS_LINEARMIPNEAREST  0x00000010
+#define D3DPTFILTERCAPS_LINEARMIPLINEAR   0x00000020
+/* yes - missing numbers */
+#define D3DPTFILTERCAPS_MINFPOINT         0x00000100
+#define D3DPTFILTERCAPS_MINFLINEAR        0x00000200
+#define D3DPTFILTERCAPS_MINFANISOTROPIC   0x00000400
+/* yes - missing numbers */
+#define D3DPTFILTERCAPS_MIPFPOINT         0x00010000
+#define D3DPTFILTERCAPS_MIPFLINEAR        0x00020000
+/* yes - missing numbers */
+#define D3DPTFILTERCAPS_MAGFPOINT         0x01000000
+#define D3DPTFILTERCAPS_MAGFLINEAR        0x02000000
+#define D3DPTFILTERCAPS_MAGFANISOTROPIC   0x04000000
+#define D3DPTFILTERCAPS_MAGFAFLATCUBIC    0x08000000
+#define D3DPTFILTERCAPS_MAGFGAUSSIANCUBIC 0x10000000
+
+#define D3DPTBLENDCAPS_DECAL            0x00000001
+#define D3DPTBLENDCAPS_MODULATE         0x00000002
+#define D3DPTBLENDCAPS_DECALALPHA       0x00000004
+#define D3DPTBLENDCAPS_MODULATEALPHA    0x00000008
+#define D3DPTBLENDCAPS_DECALMASK        0x00000010
+#define D3DPTBLENDCAPS_MODULATEMASK     0x00000020
+#define D3DPTBLENDCAPS_COPY             0x00000040
+#define D3DPTBLENDCAPS_ADD              0x00000080
+
+#define D3DPTADDRESSCAPS_WRAP           0x00000001
+#define D3DPTADDRESSCAPS_MIRROR         0x00000002
+#define D3DPTADDRESSCAPS_CLAMP          0x00000004
+#define D3DPTADDRESSCAPS_BORDER         0x00000008
+#define D3DPTADDRESSCAPS_INDEPENDENTUV  0x00000010
+
+
+typedef struct _D3DDeviceDesc {
+        DWORD           dwSize;
+        DWORD           dwFlags;
+        D3DCOLORMODEL   dcmColorModel;
+        DWORD           dwDevCaps;
+        D3DTRANSFORMCAPS dtcTransformCaps;
+        BOOL            bClipping;
+        D3DLIGHTINGCAPS dlcLightingCaps;
+        D3DPRIMCAPS     dpcLineCaps;
+        D3DPRIMCAPS     dpcTriCaps;
+        DWORD           dwDeviceRenderBitDepth;
+        DWORD           dwDeviceZBufferBitDepth;
+        DWORD           dwMaxBufferSize;
+        DWORD           dwMaxVertexCount;
+
+        DWORD           dwMinTextureWidth,dwMinTextureHeight;
+        DWORD           dwMaxTextureWidth,dwMaxTextureHeight;
+        DWORD           dwMinStippleWidth,dwMaxStippleWidth;
+        DWORD           dwMinStippleHeight,dwMaxStippleHeight;
+
+        DWORD       dwMaxTextureRepeat;
+        DWORD       dwMaxTextureAspectRatio;
+        DWORD       dwMaxAnisotropy;
+
+        D3DVALUE    dvGuardBandLeft;
+        D3DVALUE    dvGuardBandTop;
+        D3DVALUE    dvGuardBandRight;
+        D3DVALUE    dvGuardBandBottom;
+
+        D3DVALUE    dvExtentsAdjust;
+        DWORD       dwStencilCaps;
+
+        DWORD       dwFVFCaps;
+        DWORD       dwTextureOpCaps;
+        WORD        wMaxTextureBlendStages;
+        WORD        wMaxSimultaneousTextures;
+} D3DDEVICEDESC,*LPD3DDEVICEDESC;
+#define D3DDEVICEDESCSIZE (sizeof(D3DDEVICEDESC))
+
+typedef struct _D3DDeviceDesc7 {
+        DWORD            dwDevCaps;
+        D3DPRIMCAPS      dpcLineCaps;
+        D3DPRIMCAPS      dpcTriCaps;
+        DWORD            dwDeviceRenderBitDepth;
+        DWORD            dwDeviceZBufferBitDepth;
+
+        DWORD       dwMinTextureWidth, dwMinTextureHeight;
+        DWORD       dwMaxTextureWidth, dwMaxTextureHeight;
+
+        DWORD       dwMaxTextureRepeat;
+        DWORD       dwMaxTextureAspectRatio;
+        DWORD       dwMaxAnisotropy;
+
+        D3DVALUE    dvGuardBandLeft;
+        D3DVALUE    dvGuardBandTop;
+        D3DVALUE    dvGuardBandRight;
+        D3DVALUE    dvGuardBandBottom;
+
+        D3DVALUE    dvExtentsAdjust;
+        DWORD       dwStencilCaps;
+        DWORD       dwFVFCaps;
+        DWORD       dwTextureOpCaps;
+        WORD        wMaxTextureBlendStages;
+        WORD        wMaxSimultaneousTextures;
+
+        DWORD       dwMaxActiveLights;
+        D3DVALUE    dvMaxVertexW;
+        GUID        deviceGUID;
+
+        WORD        wMaxUserClipPlanes;
+        WORD        wMaxVertexBlendMatrices;
+
+        DWORD       dwVertexProcessingCaps;
+
+        DWORD       dwReserved1;
+        DWORD       dwReserved2;
+        DWORD       dwReserved3;
+        DWORD       dwReserved4;
+} D3DDEVICEDESC7, *LPD3DDEVICEDESC7;
+#define D3DDEVICEDESC7SIZE (sizeof(D3DDEVICEDESC7))
+
+#define D3DDD_COLORMODEL                0x00000001
+#define D3DDD_DEVCAPS                   0x00000002
+#define D3DDD_TRANSFORMCAPS             0x00000004
+#define D3DDD_LIGHTINGCAPS              0x00000008
+#define D3DDD_BCLIPPING                 0x00000010
+#define D3DDD_LINECAPS                  0x00000020
+#define D3DDD_TRICAPS                   0x00000040
+#define D3DDD_DEVICERENDERBITDEPTH      0x00000080
+#define D3DDD_DEVICEZBUFFERBITDEPTH     0x00000100
+#define D3DDD_MAXBUFFERSIZE             0x00000200
+#define D3DDD_MAXVERTEXCOUNT            0x00000400
+
+#define D3DDEVCAPS_FLOATTLVERTEX           0x00000001
+#define D3DDEVCAPS_SORTINCREASINGZ         0x00000002
+#define D3DDEVCAPS_SORTDECREASINGZ         0X00000004
+#define D3DDEVCAPS_SORTEXACT               0x00000008
+#define D3DDEVCAPS_EXECUTESYSTEMMEMORY     0x00000010
+#define D3DDEVCAPS_EXECUTEVIDEOMEMORY      0x00000020
+#define D3DDEVCAPS_TLVERTEXSYSTEMMEMORY    0x00000040
+#define D3DDEVCAPS_TLVERTEXVIDEOMEMORY     0x00000080
+#define D3DDEVCAPS_TEXTURESYSTEMMEMORY     0x00000100
+#define D3DDEVCAPS_TEXTUREVIDEOMEMORY      0x00000200
+#define D3DDEVCAPS_DRAWPRIMTLVERTEX        0x00000400
+#define D3DDEVCAPS_CANRENDERAFTERFLIP      0x00000800
+#define D3DDEVCAPS_TEXTURENONLOCALVIDMEM   0x00001000
+#define D3DDEVCAPS_DRAWPRIMITIVES2         0x00002000
+#define D3DDEVCAPS_SEPARATETEXTUREMEMORIES 0x00004000
+#define D3DDEVCAPS_DRAWPRIMITIVES2EX       0x00008000
+#define D3DDEVCAPS_HWTRANSFORMANDLIGHT     0x00010000
+#define D3DDEVCAPS_CANBLTSYSTONONLOCAL     0x00020000
+#define D3DDEVCAPS_HWRASTERIZATION         0x00080000
+
+#define D3DSTENCILCAPS_KEEP     0x00000001
+#define D3DSTENCILCAPS_ZERO     0x00000002
+#define D3DSTENCILCAPS_REPLACE  0x00000004
+#define D3DSTENCILCAPS_INCRSAT  0x00000008
+#define D3DSTENCILCAPS_DECRSAT  0x00000010
+#define D3DSTENCILCAPS_INVERT   0x00000020
+#define D3DSTENCILCAPS_INCR     0x00000040
+#define D3DSTENCILCAPS_DECR     0x00000080
+#define D3DSTENCILCAPS_TWOSIDED 0x00000100
+
+#define D3DTEXOPCAPS_DISABLE                    0x00000001
+#define D3DTEXOPCAPS_SELECTARG1                 0x00000002
+#define D3DTEXOPCAPS_SELECTARG2                 0x00000004
+#define D3DTEXOPCAPS_MODULATE                   0x00000008
+#define D3DTEXOPCAPS_MODULATE2X                 0x00000010
+#define D3DTEXOPCAPS_MODULATE4X                 0x00000020
+#define D3DTEXOPCAPS_ADD                        0x00000040
+#define D3DTEXOPCAPS_ADDSIGNED                  0x00000080
+#define D3DTEXOPCAPS_ADDSIGNED2X                0x00000100
+#define D3DTEXOPCAPS_SUBTRACT                   0x00000200
+#define D3DTEXOPCAPS_ADDSMOOTH                  0x00000400
+#define D3DTEXOPCAPS_BLENDDIFFUSEALPHA          0x00000800
+#define D3DTEXOPCAPS_BLENDTEXTUREALPHA          0x00001000
+#define D3DTEXOPCAPS_BLENDFACTORALPHA           0x00002000
+#define D3DTEXOPCAPS_BLENDTEXTUREALPHAPM        0x00004000
+#define D3DTEXOPCAPS_BLENDCURRENTALPHA          0x00008000
+#define D3DTEXOPCAPS_PREMODULATE                0x00010000
+#define D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR     0x00020000
+#define D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA     0x00040000
+#define D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR  0x00080000
+#define D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA  0x00100000
+#define D3DTEXOPCAPS_BUMPENVMAP                 0x00200000
+#define D3DTEXOPCAPS_BUMPENVMAPLUMINANCE        0x00400000
+#define D3DTEXOPCAPS_DOTPRODUCT3                0x00800000
+
+#define D3DFVFCAPS_TEXCOORDCOUNTMASK    0x0000FFFF
+#define D3DFVFCAPS_DONOTSTRIPELEMENTS   0x00080000
+
+#define D3DVTXPCAPS_TEXGEN              0x00000001
+#define D3DVTXPCAPS_MATERIALSOURCE7     0x00000002
+#define D3DVTXPCAPS_VERTEXFOG           0x00000004
+#define D3DVTXPCAPS_DIRECTIONALLIGHTS   0x00000008
+#define D3DVTXPCAPS_POSITIONALLIGHTS    0x00000010
+#define D3DVTXPCAPS_LOCALVIEWER         0x00000020
+
+typedef HRESULT (CALLBACK *LPD3DENUMDEVICESCALLBACK)(LPGUID lpGuid,LPSTR lpDeviceDescription,LPSTR lpDeviceName,LPD3DDEVICEDESC,LPD3DDEVICEDESC,LPVOID);
+typedef HRESULT (CALLBACK *LPD3DENUMDEVICESCALLBACK7)(LPSTR lpDeviceDescription, LPSTR lpDeviceName, LPD3DDEVICEDESC7, LPVOID);
+
+#define D3DFDS_COLORMODEL          0x00000001
+#define D3DFDS_GUID                0x00000002
+#define D3DFDS_HARDWARE            0x00000004
+#define D3DFDS_TRIANGLES           0x00000008
+#define D3DFDS_LINES               0x00000010
+#define D3DFDS_MISCCAPS            0x00000020
+#define D3DFDS_RASTERCAPS          0x00000040
+#define D3DFDS_ZCMPCAPS            0x00000080
+#define D3DFDS_ALPHACMPCAPS        0x00000100
+#define D3DFDS_SRCBLENDCAPS        0x00000200
+#define D3DFDS_DSTBLENDCAPS        0x00000400
+#define D3DFDS_SHADECAPS           0x00000800
+#define D3DFDS_TEXTURECAPS         0x00001000
+#define D3DFDS_TEXTUREFILTERCAPS   0x00002000
+#define D3DFDS_TEXTUREBLENDCAPS    0x00004000
+#define D3DFDS_TEXTUREADDRESSCAPS  0x00008000
+
+typedef struct _D3DFINDDEVICESEARCH {
+    DWORD               dwSize;
+    DWORD               dwFlags;
+    BOOL                bHardware;
+    D3DCOLORMODEL       dcmColorModel;
+    GUID                guid;
+    DWORD               dwCaps;
+    D3DPRIMCAPS         dpcPrimCaps;
+} D3DFINDDEVICESEARCH,*LPD3DFINDDEVICESEARCH;
+
+typedef struct _D3DFINDDEVICERESULT {
+    DWORD               dwSize;
+    GUID                guid;
+    D3DDEVICEDESC       ddHwDesc;
+    D3DDEVICEDESC       ddSwDesc;
+} D3DFINDDEVICERESULT,*LPD3DFINDDEVICERESULT;
+
+typedef struct _D3DExecuteBufferDesc {
+  DWORD  dwSize;
+  DWORD  dwFlags;
+  DWORD  dwCaps;
+  DWORD  dwBufferSize;
+  LPVOID lpData;
+} D3DEXECUTEBUFFERDESC, *LPD3DEXECUTEBUFFERDESC;
+
+#define D3DDEB_BUFSIZE          0x00000001
+#define D3DDEB_CAPS             0x00000002
+#define D3DDEB_LPDATA           0x00000004
+
+#define D3DDEBCAPS_SYSTEMMEMORY 0x00000001
+#define D3DDEBCAPS_VIDEOMEMORY  0x00000002
+#define D3DDEBCAPS_MEM          (D3DDEBCAPS_SYSTEMMEMORY|D3DDEBCAPS_VIDEOMEMORY) /* = 0x3 */
+
+typedef struct _D3DDEVINFO_TEXTUREMANAGER {
+	BOOL    bThrashing;
+	DWORD   dwApproxBytesDownloaded;
+	DWORD   dwNumEvicts;
+	DWORD   dwNumVidCreates;
+	DWORD   dwNumTexturesUsed;
+	DWORD   dwNumUsedTexInVid;
+	DWORD   dwWorkingSet;
+	DWORD   dwWorkingSetBytes;
+	DWORD   dwTotalManaged;
+	DWORD   dwTotalBytes;
+	DWORD   dwLastPri;
+} D3DDEVINFO_TEXTUREMANAGER, *LPD3DDEVINFO_TEXTUREMANAGER;
+
+typedef struct _D3DDEVINFO_TEXTURING {
+	DWORD   dwNumLoads;
+	DWORD   dwApproxBytesLoaded;
+	DWORD   dwNumPreLoads;
+	DWORD   dwNumSet;
+	DWORD   dwNumCreates;
+	DWORD   dwNumDestroys;
+	DWORD   dwNumSetPriorities;
+	DWORD   dwNumSetLODs;
+	DWORD   dwNumLocks;
+	DWORD   dwNumGetDCs;
+} D3DDEVINFO_TEXTURING, *LPD3DDEVINFO_TEXTURING;
+
+
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dhal.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dhal.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dhal.h	(revision 16410)
@@ -0,0 +1,525 @@
+/*
+ * Direct3D driver interface
+ * (DirectX 7 version)
+ *
+ * Copyright (C) 2001 Ove Kaaven
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_D3DHAL_H
+#define __WINE_D3DHAL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <d3d.h>
+
+/*****************************************************************************
+ * device info structures
+ */
+typedef struct _D3DDeviceDesc_V1 {
+  DWORD			dwSize;
+  DWORD			dwFlags;
+  D3DCOLORMODEL		dcmColorModel;
+  DWORD			dwDevCaps;
+  D3DTRANSFORMCAPS	dtcTransformCaps;
+  BOOL			bClipping;
+  D3DLIGHTINGCAPS	dlcLightingCaps;
+  D3DPRIMCAPS		dpcLineCaps;
+  D3DPRIMCAPS		dpcTriCaps;
+  DWORD			dwDeviceRenderBitDepth;
+  DWORD			dwDeviceZBufferBitDepth;
+  DWORD			dwMaxBufferSize;
+  DWORD			dwMaxVertexCount;
+} D3DDEVICEDESC_V1,*LPD3DDEVICEDESC_V1;
+
+/* this is to allow keeping the bulk of our OpenGL code out of x11drv */
+#define D3DDD_WINE_OPENGL_DEVICE 0x00008000
+
+typedef struct _D3DHAL_GLOBALDRIVERDATA {
+  DWORD			dwSize;
+  D3DDEVICEDESC_V1	hwCaps;
+  DWORD			dwNumVertices;
+  DWORD			dwNumClipVertices;
+  DWORD			dwNumTextureFormats;
+  LPDDSURFACEDESC	lpTextureFormats;
+} D3DHAL_GLOBALDRIVERDATA,*LPD3DHAL_GLOBALDRIVERDATA;
+
+typedef struct _D3DHAL_D3DEXTENDEDCAPS {
+  DWORD			dwSize;
+  /* DirectX 5 */
+  DWORD			dwMinTextureWidth, dwMaxTextureWidth;
+  DWORD			dwMinTextureHeight, dwMaxTextureHeight;
+  DWORD			dwMinStippleWidth, dwMaxStippleWidth;
+  DWORD			dwMinStippleHeight, dwMaxStippleHeight;
+  /* DirectX 6 */
+  DWORD			dwMaxTextureRepeat;
+  DWORD			dwMaxTextureAspectRatio;
+  DWORD			dwMaxAnisotropy;
+  D3DVALUE		dvGuardBandLeft;
+  D3DVALUE		dvGuardBandTop;
+  D3DVALUE		dvGuardBandRight;
+  D3DVALUE		dvGuardBandBottom;
+  D3DVALUE		dvExtentsAdjust;
+  DWORD			dwStencilCaps;
+  DWORD			dwFVFCaps;
+  DWORD			dwTextureOpCaps;
+  WORD			wMaxTextureBlendStages;
+  WORD			wMaxSimultaneousTextures;
+  /* DirectX 7 */
+  DWORD			dwMaxActiveLights;
+  D3DVALUE		dvMaxVertexW;
+  WORD			wMaxUserClipPlanes;
+  WORD			wMaxVertexBlendMatrices;
+  DWORD			dwVertexProcessingCaps;
+  DWORD			dwReserved1;
+  DWORD			dwReserved2;
+  DWORD			dwReserved3;
+  DWORD			dwReserved4;
+} D3DHAL_D3DEXTENDEDCAPS,*LPD3DHAL_D3DEXTENDEDCAPS;
+
+/*****************************************************************************
+ * d3d->driver callbacks
+ */
+typedef struct _D3DHAL_CONTEXTCREATEDATA	*LPD3DHAL_CONTEXTCREATEDATA;
+typedef struct _D3DHAL_CONTEXTDESTROYDATA	*LPD3DHAL_CONTEXTDESTROYDATA;
+typedef struct _D3DHAL_CONTEXTDESTROYALLDATA	*LPD3DHAL_CONTEXTDESTROYALLDATA;
+typedef struct _D3DHAL_SCENECAPTUREDATA		*LPD3DHAL_SCENECAPTUREDATA;
+typedef struct _D3DHAL_RENDERSTATEDATA		*LPD3DHAL_RENDERSTATEDATA;
+typedef struct _D3DHAL_RENDERPRIMITIVEDATA	*LPD3DHAL_RENDERPRIMITIVEDATA;
+typedef struct _D3DHAL_TEXTURECREATEDATA	*LPD3DHAL_TEXTURECREATEDATA;
+typedef struct _D3DHAL_TEXTUREDESTROYDATA	*LPD3DHAL_TEXTUREDESTROYDATA;
+typedef struct _D3DHAL_TEXTURESWAPDATA		*LPD3DHAL_TEXTURESWAPDATA;
+typedef struct _D3DHAL_TEXTUREGETSURFDATA	*LPD3DHAL_TEXTUREGETSURFDATA;
+typedef struct _D3DHAL_GETSTATEDATA		*LPD3DHAL_GETSTATEDATA;
+
+typedef DWORD (PASCAL *LPD3DHAL_CONTEXTCREATECB)    (LPD3DHAL_CONTEXTCREATEDATA);
+typedef DWORD (PASCAL *LPD3DHAL_CONTEXTDESTROYCB)   (LPD3DHAL_CONTEXTDESTROYDATA);
+typedef DWORD (PASCAL *LPD3DHAL_CONTEXTDESTROYALLCB)(LPD3DHAL_CONTEXTDESTROYALLDATA);
+typedef DWORD (PASCAL *LPD3DHAL_SCENECAPTURECB)	    (LPD3DHAL_SCENECAPTUREDATA);
+typedef DWORD (PASCAL *LPD3DHAL_RENDERSTATECB)	    (LPD3DHAL_RENDERSTATEDATA);
+typedef DWORD (PASCAL *LPD3DHAL_RENDERPRIMITIVECB)  (LPD3DHAL_RENDERPRIMITIVEDATA);
+typedef DWORD (PASCAL *LPD3DHAL_TEXTURECREATECB)    (LPD3DHAL_TEXTURECREATEDATA);
+typedef DWORD (PASCAL *LPD3DHAL_TEXTUREDESTROYCB)   (LPD3DHAL_TEXTUREDESTROYDATA);
+typedef DWORD (PASCAL *LPD3DHAL_TEXTURESWAPCB)	    (LPD3DHAL_TEXTURESWAPDATA);
+typedef DWORD (PASCAL *LPD3DHAL_TEXTUREGETSURFCB)   (LPD3DHAL_TEXTUREGETSURFDATA);
+typedef DWORD (PASCAL *LPD3DHAL_GETSTATECB)	    (LPD3DHAL_GETSTATEDATA);
+
+typedef struct _D3DHAL_CALLBACKS {
+  DWORD				dwSize;
+  LPD3DHAL_CONTEXTCREATECB	ContextCreate;
+  LPD3DHAL_CONTEXTDESTROYCB	ContextDestroy;
+  LPD3DHAL_CONTEXTDESTROYALLCB	ContextDestroyAll;
+  LPD3DHAL_SCENECAPTURECB	SceneCapture;
+  LPVOID			lpReserved10;
+  LPVOID			lpReserved11;
+  LPD3DHAL_RENDERSTATECB	RenderState;
+  LPD3DHAL_RENDERPRIMITIVECB	RenderPrimitive;
+  DWORD				dwReserved;
+  LPD3DHAL_TEXTURECREATECB	TextureCreate;
+  LPD3DHAL_TEXTUREDESTROYCB	TextureDestroy;
+  LPD3DHAL_TEXTURESWAPCB	TextureSwap;
+  LPD3DHAL_TEXTUREGETSURFCB	TextureGetSurf;
+  /* now why did MS create CALLBACKS2 and CALLBACKS3 structures if
+   * all these reserved fields were available? we may never know */
+  LPVOID			lpReserved12;
+  LPVOID			lpReserved13;
+  LPVOID			lpReserved14;
+  LPVOID			lpReserved15;
+  LPVOID			lpReserved16;
+  LPVOID			lpReserved17;
+  LPVOID			lpReserved18;
+  LPVOID			lpReserved19;
+  LPVOID			lpReserved20;
+  LPVOID			lpReserved21;
+  LPD3DHAL_GETSTATECB		GetState;
+  DWORD				dwReserved0;
+  DWORD				dwReserved1;
+  DWORD				dwReserved2;
+  DWORD				dwReserved3;
+  DWORD				dwReserved4;
+  DWORD				dwReserved5;
+  DWORD				dwReserved6;
+  DWORD				dwReserved7;
+  DWORD				dwReserved8;
+  DWORD				dwReserved9;
+} D3DHAL_CALLBACKS,*LPD3DHAL_CALLBACKS;
+
+typedef struct _D3DHAL_SETRENDERTARGETDATA		*LPD3DHAL_SETRENDERTARGETDATA;
+typedef struct _D3DHAL_CLEARDATA			*LPD3DHAL_CLEARDATA;
+typedef struct _D3DHAL_DRAWONEPRIMITIVEDATA		*LPD3DHAL_DRAWONEPRIMITIVEDATA;
+typedef struct _D3DHAL_DRAWONEINDEXEDPRIMITIVEDATA	*LPD3DHAL_DRAWONEINDEXEDPRIMITIVEDATA;
+typedef struct _D3DHAL_DRAWPRIMITIVESDATA		*LPD3DHAL_DRAWPRIMITIVESDATA;
+
+typedef DWORD (PASCAL *LPD3DHAL_SETRENDERTARGETCB)	  (LPD3DHAL_SETRENDERTARGETDATA);
+typedef DWORD (PASCAL *LPD3DHAL_CLEARCB)		  (LPD3DHAL_CLEARDATA);
+typedef DWORD (PASCAL *LPD3DHAL_DRAWONEPRIMITIVECB)	  (LPD3DHAL_DRAWONEPRIMITIVEDATA);
+typedef DWORD (PASCAL *LPD3DHAL_DRAWONEINDEXEDPRIMITIVECB)(LPD3DHAL_DRAWONEINDEXEDPRIMITIVEDATA);
+typedef DWORD (PASCAL *LPD3DHAL_DRAWPRIMITIVESCB)	  (LPD3DHAL_DRAWPRIMITIVESDATA);
+
+typedef struct _D3DHAL_CALLBACKS2 {
+  DWORD					dwSize;
+  DWORD					dwFlags;
+  LPD3DHAL_SETRENDERTARGETCB		SetRenderTarget;
+  LPD3DHAL_CLEARCB			Clear;
+  LPD3DHAL_DRAWONEPRIMITIVECB		DrawOnePrimitive;
+  LPD3DHAL_DRAWONEINDEXEDPRIMITIVECB	DrawOneIndexedPrimitive;
+  LPD3DHAL_DRAWPRIMITIVESCB		DrawPrimitives;
+} D3DHAL_CALLBACKS2,*LPD3DHAL_CALLBACKS2;
+
+typedef struct _D3DHAL_CLEAR2DATA			*LPD3DHAL_CLEAR2DATA;
+typedef struct _D3DHAL_VALIDATETEXTURESTAGESTATEDATA	*LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA;
+typedef struct _D3DHAL_DRAWPRIMITIVES2DATA		*LPD3DHAL_DRAWPRIMITIVES2DATA;
+
+typedef DWORD (PASCAL *LPD3DHAL_CLEAR2CB)		  (LPD3DHAL_CLEAR2DATA);
+typedef DWORD (PASCAL *LPD3DHAL_VALIDATETEXTURESTAGESTATECB)(LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA);
+typedef DWORD (PASCAL *LPD3DHAL_DRAWPRIMITIVES2CB)	  (LPD3DHAL_DRAWPRIMITIVES2DATA);
+
+typedef struct _D3DHAL_CALLBACKS3 {
+  DWORD					dwSize;
+  DWORD					dwFlags;
+  LPD3DHAL_CLEAR2CB			Clear2;
+  LPVOID				lpvReserved;
+  LPD3DHAL_VALIDATETEXTURESTAGESTATECB	ValidateTextureStageState;
+  LPD3DHAL_DRAWPRIMITIVES2CB		DrawPrimitives2;
+} D3DHAL_CALLBACKS3,*LPD3DHAL_CALLBACKS3;
+
+/*****************************************************************************
+ * parameter structures
+ */
+typedef struct _D3DHAL_CONTEXTCREATEDATA {
+  union {
+    LPDDRAWI_DIRECTDRAW_GBL	lpDDGbl; /* pre-DirectX 7 */
+    LPDDRAWI_DIRECTDRAW_LCL	lpDDLcl; /* DirectX 7 */
+  } DUMMYUNIONNAME1;
+  union {
+    LPDIRECTDRAWSURFACE		lpDDS;
+    LPDDRAWI_DDRAWSURFACE_LCL	lpDDSLcl; /* DirectX 7 */
+  } DUMMYUNIONNAME2;
+  union {
+    LPDIRECTDRAWSURFACE		lpDDSZ;
+    LPDDRAWI_DDRAWSURFACE_LCL	lpDDSZLcl; /* DirectX 7 */
+  } DUMMYUNIONNAME3;
+  union {
+    DWORD			dwPID;
+    ULONG_PTR			dwrstates;
+  } DUMMYUNIONNAME4;
+  ULONG_PTR			dwhContext;
+  HRESULT			ddrval;
+} D3DHAL_CONTEXTCREATEDATA;
+
+typedef struct _D3DHAL_CONTEXTDESTROYDATA {
+  ULONG_PTR			dwhContext;
+  HRESULT			ddrval;
+} D3DHAL_CONTEXTDESTROYDATA;
+
+typedef struct _D3DHAL_CONTEXTDESTROYALLDATA {
+  DWORD				dwPID;
+  HRESULT			ddrval;
+} D3DHAL_CONTEXTDESTROYALLDATA;
+
+typedef struct _D3DHAL_SCENECAPTUREDATA {
+  ULONG_PTR			dwhContext;
+  DWORD				dwFlag;
+  HRESULT			ddrval;
+} D3DHAL_SCENECAPTUREDATA;
+
+#define D3DHAL_SCENE_CAPTURE_START	0x00000000
+#define D3DHAL_SCENE_CAPTURE_END	0x00000001
+
+typedef struct _D3DHAL_SETRENDERTARGETDATA {
+  ULONG_PTR			dwhContext;
+  union {
+    LPDIRECTDRAWSURFACE		lpDDS;
+    LPDDRAWI_DDRAWSURFACE_LCL	lpDDSLcl;
+  } DUMMYUNIONNAME1;
+  union {
+    LPDIRECTDRAWSURFACE		lpDDSZ;
+    LPDDRAWI_DDRAWSURFACE_LCL	lpDDSZLcl;
+  } DUMMYUNIONNAME2;
+  HRESULT			ddrval;
+} D3DHAL_SETRENDERTARGETDATA;
+
+typedef struct _D3DHAL_DRAWPRIMITIVES2DATA {
+  ULONG_PTR			dwhContext;
+  DWORD				dwFlags;
+  DWORD				dwVertexType;
+  LPDDRAWI_DDRAWSURFACE_LCL	lpDDCommands;
+  DWORD				dwCommandOffset;
+  DWORD				dwCommandLength;
+  union {
+    LPDDRAWI_DDRAWSURFACE_LCL	lpDDVertex;
+    LPVOID			lpVertices;
+  } DUMMYUNIONNAME1;
+  DWORD				dwVertexOffset;
+  DWORD				dwVertexLength;
+  DWORD				dwReqVertexBufSize;
+  DWORD				dwReqCommandBufSize;
+  LPDWORD			lpdwRStates;
+  union {
+    DWORD			dwVertexSize;
+    HRESULT			ddrval;
+  } DUMMYUNIONNAME2;
+  DWORD				dwErrorOffset;
+} D3DHAL_DRAWPRIMITIVES2DATA;
+
+#define D3DHALDP2_USERMEMVERTICES	0x00000001
+#define D3DHALDP2_EXECUTEBUFFER		0x00000002
+#define D3DHALDP2_SWAPVERTEXBUFFER	0x00000004
+#define D3DHALDP2_SWAPCOMMANDBUFFER	0x00000008
+#define D3DHALDP2_REQVERTEXBUFSIZE	0x00000010
+#define D3DHALDP2_REQCOMMANDBUFSIZE	0x00000020
+#define D3DHALDP2_VIDMEMVERTEXBUF	0x00000040
+#define D3DHALDP2_VIDMEMCOMMANDBUF	0x00000080
+
+/*****************************************************************************
+ * DrawPrimitives2 command structures
+ */
+typedef struct _D3DHAL_DP2COMMAND {
+  BYTE bCommand;
+  BYTE bReserved;
+  union {
+    WORD wPrimitiveCount;
+    WORD wStateCount;
+  } DUMMYUNIONNAME;
+} D3DHAL_DP2COMMAND,*LPD3DHAL_DP2COMMAND;
+
+typedef enum _D3DHAL_DP2OPERATION {
+  D3DDP2OP_POINTS		= 1,
+  D3DDP2OP_INDEXEDLINELIST	= 2,
+  D3DDP2OP_INDEXEDTRIANGLELIST	= 3,
+  D3DDP2OP_RESERVED0		= 4,
+  D3DDP2OP_RENDERSTATE		= 8,
+  D3DDP2OP_LINELIST		= 15,
+  D3DDP2OP_LINESTRIP		= 16,
+  D3DDP2OP_INDEXEDLINESTRIP	= 17,
+  D3DDP2OP_TRIANGLELIST		= 18,
+  D3DDP2OP_TRIANGLESTRIP	= 19,
+  D3DDP2OP_INDEXEDTRIANGLESTRIP	= 20,
+  D3DDP2OP_TRIANGLEFAN		= 21,
+  D3DDP2OP_INDEXEDTRIANGLEFAN	= 22,
+  D3DDP2OP_TRIANGLEFAN_IMM	= 23,
+  D3DDP2OP_LINELIST_IMM		= 24,
+  D3DDP2OP_TEXTURESTAGESTATE	= 25,
+  D3DDP2OP_INDEXEDTRIANGLELIST2	= 26,
+  D3DDP2OP_INDEXEDLINELIST2	= 27,
+  D3DDP2OP_VIEWPORTINFO		= 28,
+  D3DDP2OP_WINFO		= 29,
+  /* pre-DirectX 7 interfaces */
+  D3DDP2OP_SETPALETTE		= 30,
+  D3DDP2OP_UPDATEPALETTE	= 31,
+  /* DirectX 7 interfaces */
+  D3DDP2OP_ZRANGE		= 32,
+  D3DDP2OP_SETMATERIAL		= 33,
+  D3DDP2OP_SETLIGHT		= 34,
+  D3DDP2OP_CREATELIGHT		= 35,
+  D3DDP2OP_SETTRANSFORM		= 36,
+  D3DDP2OP_EXT			= 37,
+  D3DDP2OP_TEXBLT		= 38,
+  D3DDP2OP_STATESET		= 39,
+  D3DDP2OP_SETPRIORITY		= 40,
+  /* all interfaces */
+  D3DDP2OP_SETRENDERTARGET	= 41,
+  D3DDP2OP_CLEAR		= 42,
+  /* DirectX 7 interfaces */
+  D3DDP2OP_SETTEXLOD		= 43,
+  D3DPP2OP_SETCLIPPLANE		= 44
+} D3DHAL_DP2OPERATION;
+
+/* point primitives */
+
+typedef struct _D3DHAL_POINTS {
+  WORD wCount;
+  WORD wVStart;
+} D3DHAL_DP2POINTS,*LPD3DHAL_DP2POINTS;
+
+/* line primitives */
+
+typedef struct _D3DHAL_DP2STARTVERTEX {
+  WORD wVStart;
+} D3DHAL_DP2STARTVERTEX,*LPD3DHAL_DP2STARTVERTEX;
+
+typedef struct _D3DHAL_DP2LINELIST {
+  WORD wVStart;
+} D3DHAL_DP2LINELIST,*LPD3DHAL_DP2LINELIST;
+
+typedef struct _D3DHAL_DP2INDEXEDLINELIST {
+  WORD wV1;
+  WORD wV2;
+} D3DHAL_DP2INDEXEDLINELIST,*LPD3DHAL_DP2INDEXEDLINELIST;
+
+typedef struct _D3DHAL_DP2LINESTRIP {
+  WORD wVStart;
+} D3DHAL_DP2LINESTRIP,*LPD3DHAL_DP2LINESTRIP;
+
+typedef struct _D3DHAL_DP2INDEXEDLINESTRIP {
+  WORD wV[2];
+} D3DHAL_DP2INDEXEDLINESTRIP,*LPD3DHAL_DP2INDEXEDLINESTRIP;
+
+/* triangle primitives */
+
+typedef struct _D3DHAL_DP2TRIANGLELIST {
+  WORD wVStart;
+} D3DHAL_DP2TRIANGLELIST,*LPD3DHAL_DP2TRIANGLELIST;
+
+typedef struct _D3DHAL_DP2INDEXEDTRIANGLELIST {
+  WORD wV1;
+  WORD wV2;
+  WORD wV3;
+  WORD wFlags;
+} D3DHAL_DP2INDEXEDTRIANGLELIST,*LPD3DHAL_DP2INDEXEDTRIANGLELIST;
+
+typedef struct _D3DHAL_DP2INDEXEDTRIANGLELIST2 {
+  WORD wV1;
+  WORD wV2;
+  WORD wV3;
+} D3DHAL_DP2INDEXEDTRIANGLELIST2,*LPD3DHAL_DP2INDEXEDTRIANGLELIST2;
+
+typedef struct _D3DHAL_DP2TRIANGLESTRIP {
+  WORD wVStart;
+} D3DHAL_DP2TRIANGLESTRIP,*LPD3DHAL_DP2TRIANGLESTRIP;
+
+typedef struct _D3DHAL_DP2INDEXEDTRIANGLESTRIP {
+  WORD wV[3];
+} D3DHAL_DP2INDEXEDTRIANGLESTRIP,*LPD3DHAL_DP2INDEXEDTRIANGLESTRIP;
+
+typedef struct _D3DHAL_DP2TRIANGLEFAN {
+  WORD wVStart;
+} D3DHAL_DP2TRIANGLEFAN,*LPD3DHAL_DP2TRIANGLEFAN;
+
+typedef struct _D3DHAL_DP2INDEXEDTRIANGLEFAN {
+  WORD wV[3];
+} D3DHAL_DP2INDEXEDTRIANGLEFAN,*LPD3DHAL_DP2INDEXEDTRIANGLEFAN;
+
+typedef struct _D3DHAL_DP2TRIANGLEFAN_IMM {
+  DWORD dwEdgeFlags;
+} D3DHAL_DP2TRIANGLEFAN_IMM,*LPD3DHAL_DP2TRIANGLEFAN_IMM;
+
+/* render states */
+typedef struct _D3DHAL_DP2RENDERSTATE {
+  D3DRENDERSTATETYPE	RenderState;
+  union {
+    D3DVALUE dvState;
+    DWORD dwState;
+  } DUMMYUNIONNAME;
+} D3DHAL_DP2RENDERSTATE,*LPD3DHAL_DP2RENDERSTATE;
+
+typedef struct _D3DHAL_DP2TEXTURESTAGESTATE {
+  WORD	wStage;
+  WORD	TSState;
+  DWORD dwValue;
+} D3DHAL_DP2TEXTURESTAGESTATE,*LPD3DHAL_DP2TEXTURESTAGESTATE;
+
+#define D3DTSS_TEXTUREMAP 0
+
+typedef struct _D3DHAL_DP2VIEWPORTINFO {
+  DWORD dwX;
+  DWORD dwY;
+  DWORD dwWidth;
+  DWORD dwHeight;
+} D3DHAL_DP2VIEWPORTINFO,*LPD3DHAL_DP2VIEWPORTINFO;
+
+typedef struct _D3DHAL_DP2WINFO {
+  D3DVALUE dwWNear;
+  D3DVALUE dwWFar;
+} D3DHAL_DP2WINFO,*LPD3DHAL_DP2WINFO;
+
+typedef struct _D3DHAL_DP2SETPALETTE {
+  DWORD dwPaletteHandle;
+  DWORD dwPaletteFlags;
+  DWORD dwSurfaceHandle;
+} D3DHAL_DP2SETPALETTE,*LPD3DHAL_DP2SETPALETTE;
+
+typedef struct _D3DHAL_DP2UPDATEPALETTE {
+  DWORD dwPaletteHandle;
+  WORD	wStartIndex;
+  WORD	wNumEntries;
+} D3DHAL_DP2UPDATEPALETTE,*LPD3DHAL_DP2UPDATEPALETTE;
+
+typedef struct _D3DHAL_DP2ZRANGE {
+  D3DVALUE dvMinZ;
+  D3DVALUE dvMaxZ;
+} D3DHAL_DP2ZRANGE,*LPD3DHAL_DP2ZRANGE;
+
+typedef D3DMATERIAL7 D3DHAL_DP2SETMATERIAL,*LPD3DHAL_DP2SETMATERIAL;
+
+typedef struct _D3DHAL_DP2SETLIGHT {
+  DWORD dwIndex;
+  DWORD dwDataType;
+} D3DHAL_DP2SETLIGHT,*LPD3DHAL_DP2SETLIGHT;
+
+#define D3DHAL_SETLIGHT_ENABLE	0
+#define D3DHAL_SETLIGHT_DISABLE	1
+#define D3DHAL_SETLIGHT_DATA	2
+
+typedef struct _D3DHAL_DP2CREATELIGHT {
+  DWORD dwIndex;
+} D3DHAL_DP2CREATELIGHT,*LPD3DHAL_DP2CREATELIGHT;
+
+typedef struct _D3DHAL_DP2SETTRANSFORM {
+  D3DTRANSFORMSTATETYPE	xfrmType;
+  D3DMATRIX		matrix;
+} D3DHAL_DP2SETTRANSFORM,*LPD3DHAL_DP2SETTRANSFORM;
+
+typedef struct _D3DHAL_DP2TEXBLT {
+  DWORD dwDDDestSurface;
+  DWORD dwDDSrcSurface;
+  POINT pDest;
+  RECTL rSrc;
+  DWORD dwFlags;
+} D3DHAL_DP2TEXBLT,*LPD3DHAL_DP2TEXBLT;
+
+typedef struct _D3DHAL_DP2STATESET {
+  DWORD               dwOperation;
+  DWORD               dwParam;
+  D3DSTATEBLOCKTYPE   sbType;
+} D3DHAL_DP2STATESET,*LPD3DHAL_DP2STATESET;
+
+#define D3DHAL_STATESETBEGIN	0
+#define D3DHAL_STATESETEND	1
+#define D3DHAL_STATESETDELETE	2
+#define D3DHAL_STATESETEXECUTE	3
+#define D3DHAL_STATESETCAPTURE	4
+
+typedef struct _D3DHAL_DP2SETPRIORITY {
+  DWORD dwDDSurface;
+  DWORD dwPriority;
+} D3DHAL_DP2SETPRIORITY,*LPD3DHAL_DP2SETPRIORITY;
+
+typedef struct _D3DHAL_DP2SETRENDERTARGET {
+  DWORD hRenderTarget;
+  DWORD hZBuffer;
+} D3DHAL_DP2SETRENDERTARGET,*LPD3DHAL_DP2SETRENDERTARGET;
+
+typedef struct _D3DHAL_DP2CLEAR {
+  DWORD		dwFlags;
+  DWORD		dwFillColor;
+  D3DVALUE	dvFillDepth;
+  DWORD		dwFillStencil;
+  RECT		Rects[1];
+} D3DHAL_DP2CLEAR,*LPD3DHAL_DP2CLEAR;
+
+typedef struct _D3DHAL_DP2SETTEXLOD {
+  DWORD dwDDSurface;
+  DWORD dwLOD;
+} D3DHAL_DP2SETTEXLOD,*LPD3DHAL_DP2SETTEXLOD;
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __WINE_DDRAWI_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3drm.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3drm.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3drm.h	(revision 16410)
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2005 Peter Berg Larsen
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __D3DRM_H__
+#define __D3DRM_H__
+
+#include <ddraw.h>
+#include <d3drmobj.h>
+
+
+/* Direct3DRM Object CLSID */
+DEFINE_GUID(CLSID_CDirect3DRM,              0x4516ec41, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
+
+/* Direct3DRM Interface GUIDs */
+DEFINE_GUID(IID_IDirect3DRM,                0x2bc49361, 0x8327, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(IID_IDirect3DRM2,               0x4516ecc8, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
+DEFINE_GUID(IID_IDirect3DRM3,               0x4516ec83, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
+
+#endif /* __D3DRM_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3drmdef.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3drmdef.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3drmdef.h	(revision 16410)
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2007 Vijay Kiran Kamuju
+ * Copyright 2007 David ADAM
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __D3DRMDEFS_H__
+#define __D3DRMDEFS_H__
+
+#include <stddef.h>
+#include <d3dtypes.h>
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+typedef D3DVALUE D3DRMMATRIX4D[4][4];
+typedef struct _D3DRMQUATERNION
+{
+    D3DVALUE s;
+    D3DVECTOR v;
+} D3DRMQUATERNION, *LPD3DRMQUATERNION;
+
+void WINAPI D3DRMMatrixFromQuaternion(D3DRMMATRIX4D, LPD3DRMQUATERNION);
+
+LPD3DRMQUATERNION WINAPI D3DRMQuaternionFromRotation(LPD3DRMQUATERNION ,LPD3DVECTOR,D3DVALUE);
+LPD3DRMQUATERNION WINAPI D3DRMQuaternionMultiply(LPD3DRMQUATERNION, LPD3DRMQUATERNION, LPD3DRMQUATERNION);
+LPD3DRMQUATERNION WINAPI D3DRMQuaternionSlerp(LPD3DRMQUATERNION, LPD3DRMQUATERNION, LPD3DRMQUATERNION, D3DVALUE);
+
+LPD3DVECTOR WINAPI D3DRMVectorAdd(LPD3DVECTOR, LPD3DVECTOR, LPD3DVECTOR);
+LPD3DVECTOR WINAPI D3DRMVectorCrossProduct(LPD3DVECTOR, LPD3DVECTOR, LPD3DVECTOR);
+D3DVALUE WINAPI D3DRMVectorDotProduct(LPD3DVECTOR, LPD3DVECTOR);
+LPD3DVECTOR WINAPI D3DRMVectorNormalize(LPD3DVECTOR);
+
+#define D3DRMVectorNormalise D3DRMVectorNormalize
+
+D3DVALUE WINAPI D3DRMVectorModulus(LPD3DVECTOR);
+LPD3DVECTOR WINAPI D3DRMVectorRandom(LPD3DVECTOR);
+LPD3DVECTOR WINAPI D3DRMVectorRotate(LPD3DVECTOR, LPD3DVECTOR, LPD3DVECTOR, D3DVALUE);
+LPD3DVECTOR WINAPI D3DRMVectorReflect(LPD3DVECTOR, LPD3DVECTOR, LPD3DVECTOR);
+LPD3DVECTOR WINAPI D3DRMVectorScale(LPD3DVECTOR, LPD3DVECTOR, D3DVALUE);
+LPD3DVECTOR WINAPI D3DRMVectorSubtract(LPD3DVECTOR, LPD3DVECTOR, LPD3DVECTOR);
+
+D3DCOLOR WINAPI D3DRMCreateColorRGB(D3DVALUE, D3DVALUE, D3DVALUE);
+D3DCOLOR WINAPI D3DRMCreateColorRGBA(D3DVALUE, D3DVALUE, D3DVALUE, D3DVALUE);
+D3DVALUE WINAPI D3DRMColorGetAlpha(D3DCOLOR);
+D3DVALUE WINAPI D3DRMColorGetBlue(D3DCOLOR);
+D3DVALUE WINAPI D3DRMColorGetGreen(D3DCOLOR);
+D3DVALUE WINAPI D3DRMColorGetRed(D3DCOLOR);
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3drmobj.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3drmobj.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3drmobj.h	(revision 16410)
@@ -0,0 +1,176 @@
+/*
+ * Copyright (C) 2008 Vijay Kiran Kamuju
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __D3DRMOBJ_H__
+#define __D3DRMOBJ_H__
+
+#include <objbase.h>
+#define VIRTUAL
+#include <d3drmdef.h>
+#include <d3d.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*****************************************************************************
+ * Predeclare the interfaces
+ */
+
+DEFINE_GUID(IID_IDirect3DRMObject,          0xeb16cb00, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(IID_IDirect3DRMVisual,          0xeb16cb04, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
+
+typedef struct IDirect3DRMObject          *LPDIRECT3DRMOBJECT, **LPLPDIRECT3DRMOBJECT;
+typedef struct IDirect3DRMVisual          *LPDIRECT3DRMVISUAL, **LPLPDIRECT3DRMVISUAL;
+
+/* ********************************************************************
+   Types and structures
+   ******************************************************************** */
+
+typedef void (__cdecl *D3DRMOBJECTCALLBACK)(LPDIRECT3DRMOBJECT obj, LPVOID arg);
+
+typedef struct _D3DRMPICKDESC
+{
+    ULONG     ulFaceIdx;
+    LONG      lGroupIdx;
+    D3DVECTOR vPosition;
+} D3DRMPICKDESC, *LPD3DRMPICKDESC;
+
+typedef struct _D3DRMPICKDESC2
+{
+    ULONG     ulFaceIdx;
+    LONG      lGroupIdx;
+    D3DVECTOR vPosition;
+    D3DVALUE  tu;
+    D3DVALUE  tv;
+    D3DVECTOR dvNormal;
+    D3DCOLOR  dcColor;
+} D3DRMPICKDESC2, *LPD3DRMPICKDESC2;
+
+/*****************************************************************************
+ * IDirect3DRMObject interface
+ */
+#ifdef WINE_NO_UNICODE_MACROS
+#undef GetClassName
+#endif
+#define INTERFACE IDirect3DRMObject
+DECLARE_INTERFACE_(IDirect3DRMObject,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DRMObject methods ***/
+    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
+    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
+    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
+    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
+    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
+    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
+    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
+    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DRMObject_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DRMObject_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IDirect3DRMObject_Release(p)                   (p)->lpVtbl->Release(p)
+/*** IDirect3DRMObject methods ***/
+#define IDirect3DRMObject_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
+#define IDirect3DRMObject_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
+#define IDirect3DRMObject_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
+#define IDirect3DRMObject_SetAppData(p,a)              (p)->lpVtbl->SetAppData(p,a)
+#define IDirect3DRMObject_GetAppData(p)                (p)->lpVtbl->GetAppData(p)
+#define IDirect3DRMObject_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
+#define IDirect3DRMObject_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
+#define IDirect3DRMObject_GetClassName(p,a,b)          (p)->lpVtbl->GetClassName(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DRMObject_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
+#define IDirect3DRMObject_AddRef(p)                    (p)->AddRef()
+#define IDirect3DRMObject_Release(p)                   (p)->Release()
+/*** IDirect3DRMObject methods ***/
+#define IDirect3DRMObject_Clone(p,a,b,c)               (p)->Clone(a,b,c)
+#define IDirect3DRMObject_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
+#define IDirect3DRMObject_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
+#define IDirect3DRMObject_SetAppData(p,a)              (p)->SetAppData(a)
+#define IDirect3DRMObject_GetAppData(p)                (p)->GetAppData()
+#define IDirect3DRMObject_SetName(p,a)                 (p)->SetName(a)
+#define IDirect3DRMObject_GetName(p,a,b)               (p)->GetName(a,b)
+#define IDirect3DRMObject_GetClassName(p,a,b)          (p)->GetClassName(a,b)
+#endif
+
+/*****************************************************************************
+ * IDirect3DRMVisual interface
+ */
+#define INTERFACE IDirect3DRMVisual
+DECLARE_INTERFACE_(IDirect3DRMVisual,IDirect3DRMObject)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DRMObject methods ***/
+    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
+    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
+    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
+    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
+    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
+    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
+    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
+    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DRMVisual_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DRMVisual_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IDirect3DRMVisual_Release(p)                   (p)->lpVtbl->Release(p)
+/*** IDirect3DRMObject methods ***/
+#define IDirect3DRMVisual_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
+#define IDirect3DRMVisual_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
+#define IDirect3DRMVisual_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
+#define IDirect3DRMVisual_SetAppData(p,a)              (p)->lpVtbl->SetAppData(p,a)
+#define IDirect3DRMVisual_GetAppData(p)                (p)->lpVtbl->GetAppData(p)
+#define IDirect3DRMVisual_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
+#define IDirect3DRMVisual_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
+#define IDirect3DRMVisual_GetClassName(p,a,b)          (p)->lpVtbl->GetClassName(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DRMVisual_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
+#define IDirect3DRMVisual_AddRef(p)                    (p)->AddRef()
+#define IDirect3DRMVisual_Release(p)                   (p)->Release()
+/*** IDirect3DRMObject methods ***/
+#define IDirect3DRMVisual_Clone(p,a,b,c)               (p)->Clone(a,b,c)
+#define IDirect3DRMVisual_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
+#define IDirect3DRMVisual_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
+#define IDirect3DRMVisual_SetAppData(p,a)              (p)->SetAppData(a)
+#define IDirect3DRMVisual_GetAppData(p)                (p)->GetAppData()
+#define IDirect3DRMVisual_SetName(p,a)                 (p)->SetName(a)
+#define IDirect3DRMVisual_GetName(p,a,b)               (p)->GetName(a,b)
+#define IDirect3DRMVisual_GetClassName(p,a,b)          (p)->GetClassName(a,b)
+#endif
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif /* __D3DRMOBJ_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dtypes.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dtypes.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dtypes.h	(revision 16410)
@@ -0,0 +1,1361 @@
+/*
+ * Copyright (C) 2000 Peter Hunnisett
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/* FIXME: Need to add C++ code for certain structs for headers - this is going to be a problem
+          if WINE continues to only use C code  - I suppose that we could always inline in
+          the header file to get around that little problem... */
+/* FIXME: We need to implement versioning on everything directx 5 and up if these headers
+          are going to be generically useful for directx stuff */
+
+#ifndef __WINE_D3DTYPES_H
+#define __WINE_D3DTYPES_H
+
+#ifndef __WINESRC__
+# include <windows.h>
+#endif
+
+#include <float.h>
+#include <ddraw.h>
+
+#define D3DVALP(val, prec)      ((float)(val))
+#define D3DVAL(val)             ((float)(val))
+#define D3DDivide(a, b)         (float)((double) (a) / (double) (b))
+#define D3DMultiply(a, b)       ((a) * (b))
+
+typedef LONG D3DFIXED;
+
+
+#ifndef RGB_MAKE
+#define CI_GETALPHA(ci)    ((ci) >> 24)
+#define CI_GETINDEX(ci)    (((ci) >> 8) & 0xffff)
+#define CI_GETFRACTION(ci) ((ci) & 0xff)
+#define CI_ROUNDINDEX(ci)  CI_GETINDEX((ci) + 0x80)
+#define CI_MASKALPHA(ci)   ((ci) & 0xffffff)
+#define CI_MAKE(a, i, f)    (((a) << 24) | ((i) << 8) | (f))
+
+#define RGBA_GETALPHA(rgb)      ((rgb) >> 24)
+#define RGBA_GETRED(rgb)        (((rgb) >> 16) & 0xff)
+#define RGBA_GETGREEN(rgb)      (((rgb) >> 8) & 0xff)
+#define RGBA_GETBLUE(rgb)       ((rgb) & 0xff)
+#define RGBA_MAKE(r, g, b, a)   ((D3DCOLOR) (((a) << 24) | ((r) << 16) | ((g) << 8) | (b)))
+
+#define D3DRGB(r, g, b) \
+    (0xff000000L | ( ((long)((r) * 255)) << 16) | (((long)((g) * 255)) << 8) | (long)((b) * 255))
+#define D3DRGBA(r, g, b, a) \
+    (   (((long)((a) * 255)) << 24) | (((long)((r) * 255)) << 16) \
+    |   (((long)((g) * 255)) << 8) | (long)((b) * 255) \
+    )
+
+#define RGB_GETRED(rgb)         (((rgb) >> 16) & 0xff)
+#define RGB_GETGREEN(rgb)       (((rgb) >> 8) & 0xff)
+#define RGB_GETBLUE(rgb)        ((rgb) & 0xff)
+#define RGBA_SETALPHA(rgba, x) (((x) << 24) | ((rgba) & 0x00ffffff))
+#define RGB_MAKE(r, g, b)       ((D3DCOLOR) (((r) << 16) | ((g) << 8) | (b)))
+#define RGBA_TORGB(rgba)       ((D3DCOLOR) ((rgba) & 0xffffff))
+#define RGB_TORGBA(rgb)        ((D3DCOLOR) ((rgb) | 0xff000000))
+
+#endif
+
+#define D3DENUMRET_CANCEL                        DDENUMRET_CANCEL
+#define D3DENUMRET_OK                            DDENUMRET_OK
+
+typedef HRESULT (CALLBACK *LPD3DVALIDATECALLBACK)(LPVOID lpUserArg, DWORD dwOffset);
+typedef HRESULT (CALLBACK *LPD3DENUMTEXTUREFORMATSCALLBACK)(LPDDSURFACEDESC lpDdsd, LPVOID lpContext);
+typedef HRESULT (CALLBACK *LPD3DENUMPIXELFORMATSCALLBACK)(LPDDPIXELFORMAT lpDDPixFmt, LPVOID lpContext);
+
+#ifndef DX_SHARED_DEFINES
+
+typedef float D3DVALUE,*LPD3DVALUE;
+
+#ifndef D3DCOLOR_DEFINED
+typedef DWORD D3DCOLOR, *LPD3DCOLOR;
+#define D3DCOLOR_DEFINED
+#endif
+
+#ifndef D3DVECTOR_DEFINED
+typedef struct _D3DVECTOR {
+  union {
+        D3DVALUE        x;
+    D3DVALUE dvX;
+  } DUMMYUNIONNAME1;
+  union {
+        D3DVALUE        y;
+    D3DVALUE dvY;
+  } DUMMYUNIONNAME2;
+  union {
+        D3DVALUE        z;
+    D3DVALUE dvZ;
+  } DUMMYUNIONNAME3;
+#if defined(__cplusplus) && defined(D3D_OVERLOADS)
+  /* the definitions for these methods are in d3dvec.inl */
+public:
+  /*** constructors ***/
+  _D3DVECTOR() {}
+  _D3DVECTOR(D3DVALUE f);
+  _D3DVECTOR(D3DVALUE _x, D3DVALUE _y, D3DVALUE _z);
+  _D3DVECTOR(const D3DVALUE f[3]);
+
+  /*** assignment operators ***/
+  _D3DVECTOR& operator += (const _D3DVECTOR& v);
+  _D3DVECTOR& operator -= (const _D3DVECTOR& v);
+  _D3DVECTOR& operator *= (const _D3DVECTOR& v);
+  _D3DVECTOR& operator /= (const _D3DVECTOR& v);
+  _D3DVECTOR& operator *= (D3DVALUE s);
+  _D3DVECTOR& operator /= (D3DVALUE s);
+
+  /*** unary operators ***/
+  friend _D3DVECTOR operator + (const _D3DVECTOR& v);
+  friend _D3DVECTOR operator - (const _D3DVECTOR& v);
+
+  /*** binary operators ***/
+  friend _D3DVECTOR operator + (const _D3DVECTOR& v1, const _D3DVECTOR& v2);
+  friend _D3DVECTOR operator - (const _D3DVECTOR& v1, const _D3DVECTOR& v2);
+
+  friend _D3DVECTOR operator * (const _D3DVECTOR& v, D3DVALUE s);
+  friend _D3DVECTOR operator * (D3DVALUE s, const _D3DVECTOR& v);
+  friend _D3DVECTOR operator / (const _D3DVECTOR& v, D3DVALUE s);
+
+  friend D3DVALUE SquareMagnitude(const _D3DVECTOR& v);
+  friend D3DVALUE Magnitude(const _D3DVECTOR& v);
+
+  friend _D3DVECTOR Normalize(const _D3DVECTOR& v);
+
+  friend D3DVALUE DotProduct(const _D3DVECTOR& v1, const _D3DVECTOR& v2);
+  friend _D3DVECTOR CrossProduct(const _D3DVECTOR& v1, const _D3DVECTOR& v2);
+#endif
+} D3DVECTOR,*LPD3DVECTOR;
+#define D3DVECTOR_DEFINED
+#endif
+
+#define DX_SHARED_DEFINES
+#endif /* DX_SHARED_DEFINES */
+
+typedef DWORD D3DMATERIALHANDLE, *LPD3DMATERIALHANDLE;
+typedef DWORD D3DTEXTUREHANDLE,  *LPD3DTEXTUREHANDLE;
+typedef DWORD D3DMATRIXHANDLE,   *LPD3DMATRIXHANDLE;
+
+typedef struct _D3DCOLORVALUE {
+        union {
+                D3DVALUE r;
+                D3DVALUE dvR;
+        } DUMMYUNIONNAME1;
+        union {
+                D3DVALUE g;
+                D3DVALUE dvG;
+        } DUMMYUNIONNAME2;
+        union {
+                D3DVALUE b;
+                D3DVALUE dvB;
+        } DUMMYUNIONNAME3;
+        union {
+                D3DVALUE a;
+                D3DVALUE dvA;
+        } DUMMYUNIONNAME4;
+} D3DCOLORVALUE,*LPD3DCOLORVALUE;
+
+typedef struct _D3DRECT {
+  union {
+    LONG x1;
+    LONG lX1;
+  } DUMMYUNIONNAME1;
+  union {
+    LONG y1;
+    LONG lY1;
+  } DUMMYUNIONNAME2;
+  union {
+    LONG x2;
+    LONG lX2;
+  } DUMMYUNIONNAME3;
+  union {
+    LONG y2;
+    LONG lY2;
+  } DUMMYUNIONNAME4;
+} D3DRECT, *LPD3DRECT;
+
+typedef struct _D3DHVERTEX {
+    DWORD         dwFlags;
+ union {
+    D3DVALUE    hx;
+    D3DVALUE    dvHX;
+  } DUMMYUNIONNAME1;
+  union {
+    D3DVALUE    hy;
+    D3DVALUE    dvHY;
+  } DUMMYUNIONNAME2;
+  union {
+    D3DVALUE    hz;
+    D3DVALUE    dvHZ;
+  } DUMMYUNIONNAME3;
+} D3DHVERTEX, *LPD3DHVERTEX;
+
+/*
+ * Transformed/lit vertices
+ */
+typedef struct _D3DTLVERTEX {
+  union {
+    D3DVALUE    sx;
+    D3DVALUE    dvSX;
+  } DUMMYUNIONNAME1;
+  union {
+    D3DVALUE    sy;
+    D3DVALUE    dvSY;
+  } DUMMYUNIONNAME2;
+  union {
+    D3DVALUE    sz;
+    D3DVALUE    dvSZ;
+  } DUMMYUNIONNAME3;
+  union {
+    D3DVALUE    rhw;
+    D3DVALUE    dvRHW;
+  } DUMMYUNIONNAME4;
+  union {
+    D3DCOLOR    color;
+    D3DCOLOR    dcColor;
+  } DUMMYUNIONNAME5;
+  union {
+    D3DCOLOR    specular;
+    D3DCOLOR    dcSpecular;
+  } DUMMYUNIONNAME6;
+  union {
+    D3DVALUE    tu;
+    D3DVALUE    dvTU;
+  } DUMMYUNIONNAME7;
+  union {
+    D3DVALUE    tv;
+    D3DVALUE    dvTV;
+  } DUMMYUNIONNAME8;
+#if defined(__cplusplus) && defined(D3D_OVERLOADS)
+public:
+  _D3DTLVERTEX() {}
+  _D3DTLVERTEX(const D3DVECTOR& v, float _rhw, D3DCOLOR _color, D3DCOLOR _specular, float _tu, float _tv) {
+    sx = v.x; sy = v.y; sz = v.z; rhw = _rhw;
+    color = _color; specular = _specular;
+    tu = _tu; tv = _tv;
+  }
+#endif
+} D3DTLVERTEX, *LPD3DTLVERTEX;
+
+typedef struct _D3DLVERTEX {
+  union {
+    D3DVALUE x;
+    D3DVALUE dvX;
+  } DUMMYUNIONNAME1;
+  union {
+    D3DVALUE y;
+    D3DVALUE dvY;
+  } DUMMYUNIONNAME2;
+  union {
+    D3DVALUE z;
+    D3DVALUE dvZ;
+  } DUMMYUNIONNAME3;
+  DWORD            dwReserved;
+  union {
+    D3DCOLOR     color;
+    D3DCOLOR     dcColor;
+  } DUMMYUNIONNAME4;
+  union {
+    D3DCOLOR     specular;
+    D3DCOLOR     dcSpecular;
+  } DUMMYUNIONNAME5;
+  union {
+    D3DVALUE     tu;
+    D3DVALUE     dvTU;
+  } DUMMYUNIONNAME6;
+  union {
+    D3DVALUE     tv;
+    D3DVALUE     dvTV;
+  } DUMMYUNIONNAME7;
+} D3DLVERTEX, *LPD3DLVERTEX;
+
+typedef struct _D3DVERTEX {
+  union {
+    D3DVALUE     x;
+    D3DVALUE     dvX;
+  } DUMMYUNIONNAME1;
+  union {
+    D3DVALUE     y;
+    D3DVALUE     dvY;
+  } DUMMYUNIONNAME2;
+  union {
+    D3DVALUE     z;
+    D3DVALUE     dvZ;
+  } DUMMYUNIONNAME3;
+  union {
+    D3DVALUE     nx;
+    D3DVALUE     dvNX;
+  } DUMMYUNIONNAME4;
+  union {
+    D3DVALUE     ny;
+    D3DVALUE     dvNY;
+  } DUMMYUNIONNAME5;
+  union {
+    D3DVALUE     nz;
+    D3DVALUE     dvNZ;
+  } DUMMYUNIONNAME6;
+  union {
+    D3DVALUE     tu;
+    D3DVALUE     dvTU;
+  } DUMMYUNIONNAME7;
+  union {
+    D3DVALUE     tv;
+    D3DVALUE     dvTV;
+  } DUMMYUNIONNAME8;
+#if defined(__cplusplus) && defined(D3D_OVERLOADS)
+public:
+  _D3DVERTEX() {}
+  _D3DVERTEX(const D3DVECTOR& v, const D3DVECTOR& n, float _tu, float _tv) {
+    x  = v.x; y  = v.y; z  = v.z;
+    nx = n.x; ny = n.y; nz = n.z;
+    tu = _tu; tv = _tv;
+  }
+#endif
+} D3DVERTEX, *LPD3DVERTEX;
+
+typedef struct _D3DMATRIX {
+  D3DVALUE        _11, _12, _13, _14;
+  D3DVALUE        _21, _22, _23, _24;
+  D3DVALUE        _31, _32, _33, _34;
+  D3DVALUE        _41, _42, _43, _44;
+#if defined(__cplusplus) && defined(D3D_OVERLOADS)
+  _D3DMATRIX() { }
+
+    /* This is different from MS, but avoids anonymous structs. */
+    D3DVALUE &operator () (int r, int c)
+	{ return ((D3DVALUE [4][4])&_11)[r][c]; }
+    const D3DVALUE &operator() (int r, int c) const
+	{ return ((const D3DVALUE [4][4])&_11)[r][c]; }
+#endif
+} D3DMATRIX, *LPD3DMATRIX;
+
+#if defined(__cplusplus) && defined(D3D_OVERLOADS)
+#include <d3dvec.inl>
+#endif
+
+typedef struct _D3DVIEWPORT {
+  DWORD       dwSize;
+  DWORD       dwX;
+  DWORD       dwY;
+  DWORD       dwWidth;
+  DWORD       dwHeight;
+  D3DVALUE    dvScaleX;
+  D3DVALUE    dvScaleY;
+  D3DVALUE    dvMaxX;
+  D3DVALUE    dvMaxY;
+  D3DVALUE    dvMinZ;
+  D3DVALUE    dvMaxZ;
+} D3DVIEWPORT, *LPD3DVIEWPORT;
+
+typedef struct _D3DVIEWPORT2 {
+  DWORD       dwSize;
+  DWORD       dwX;
+  DWORD       dwY;
+  DWORD       dwWidth;
+  DWORD       dwHeight;
+  D3DVALUE    dvClipX;
+  D3DVALUE    dvClipY;
+  D3DVALUE    dvClipWidth;
+  D3DVALUE    dvClipHeight;
+  D3DVALUE    dvMinZ;
+  D3DVALUE    dvMaxZ;
+} D3DVIEWPORT2, *LPD3DVIEWPORT2;
+
+typedef struct _D3DVIEWPORT7 {
+  DWORD       dwX;
+  DWORD       dwY;
+  DWORD       dwWidth;
+  DWORD       dwHeight;
+  D3DVALUE    dvMinZ;
+  D3DVALUE    dvMaxZ;
+} D3DVIEWPORT7, *LPD3DVIEWPORT7;
+
+#define D3DMAXUSERCLIPPLANES 32
+
+#define D3DCLIPPLANE0 (1 << 0)
+#define D3DCLIPPLANE1 (1 << 1)
+#define D3DCLIPPLANE2 (1 << 2)
+#define D3DCLIPPLANE3 (1 << 3)
+#define D3DCLIPPLANE4 (1 << 4)
+#define D3DCLIPPLANE5 (1 << 5)
+
+#define D3DCLIP_LEFT     0x00000001
+#define D3DCLIP_RIGHT    0x00000002
+#define D3DCLIP_TOP      0x00000004
+#define D3DCLIP_BOTTOM   0x00000008
+#define D3DCLIP_FRONT    0x00000010
+#define D3DCLIP_BACK     0x00000020
+#define D3DCLIP_GEN0     0x00000040
+#define D3DCLIP_GEN1     0x00000080
+#define D3DCLIP_GEN2     0x00000100
+#define D3DCLIP_GEN3     0x00000200
+#define D3DCLIP_GEN4     0x00000400
+#define D3DCLIP_GEN5     0x00000800
+
+#define D3DSTATUS_CLIPUNIONLEFT                 D3DCLIP_LEFT
+#define D3DSTATUS_CLIPUNIONRIGHT                D3DCLIP_RIGHT
+#define D3DSTATUS_CLIPUNIONTOP                  D3DCLIP_TOP
+#define D3DSTATUS_CLIPUNIONBOTTOM               D3DCLIP_BOTTOM
+#define D3DSTATUS_CLIPUNIONFRONT                D3DCLIP_FRONT
+#define D3DSTATUS_CLIPUNIONBACK                 D3DCLIP_BACK
+#define D3DSTATUS_CLIPUNIONGEN0                 D3DCLIP_GEN0
+#define D3DSTATUS_CLIPUNIONGEN1                 D3DCLIP_GEN1
+#define D3DSTATUS_CLIPUNIONGEN2                 D3DCLIP_GEN2
+#define D3DSTATUS_CLIPUNIONGEN3                 D3DCLIP_GEN3
+#define D3DSTATUS_CLIPUNIONGEN4                 D3DCLIP_GEN4
+#define D3DSTATUS_CLIPUNIONGEN5                 D3DCLIP_GEN5
+
+#define D3DSTATUS_CLIPINTERSECTIONLEFT          0x00001000
+#define D3DSTATUS_CLIPINTERSECTIONRIGHT         0x00002000
+#define D3DSTATUS_CLIPINTERSECTIONTOP           0x00004000
+#define D3DSTATUS_CLIPINTERSECTIONBOTTOM        0x00008000
+#define D3DSTATUS_CLIPINTERSECTIONFRONT         0x00010000
+#define D3DSTATUS_CLIPINTERSECTIONBACK          0x00020000
+#define D3DSTATUS_CLIPINTERSECTIONGEN0          0x00040000
+#define D3DSTATUS_CLIPINTERSECTIONGEN1          0x00080000
+#define D3DSTATUS_CLIPINTERSECTIONGEN2          0x00100000
+#define D3DSTATUS_CLIPINTERSECTIONGEN3          0x00200000
+#define D3DSTATUS_CLIPINTERSECTIONGEN4          0x00400000
+#define D3DSTATUS_CLIPINTERSECTIONGEN5          0x00800000
+#define D3DSTATUS_ZNOTVISIBLE                   0x01000000
+
+#define D3DSTATUS_CLIPUNIONALL  (               \
+            D3DSTATUS_CLIPUNIONLEFT     |       \
+            D3DSTATUS_CLIPUNIONRIGHT    |       \
+            D3DSTATUS_CLIPUNIONTOP      |       \
+            D3DSTATUS_CLIPUNIONBOTTOM   |       \
+            D3DSTATUS_CLIPUNIONFRONT    |       \
+            D3DSTATUS_CLIPUNIONBACK     |       \
+            D3DSTATUS_CLIPUNIONGEN0     |       \
+            D3DSTATUS_CLIPUNIONGEN1     |       \
+            D3DSTATUS_CLIPUNIONGEN2     |       \
+            D3DSTATUS_CLIPUNIONGEN3     |       \
+            D3DSTATUS_CLIPUNIONGEN4     |       \
+            D3DSTATUS_CLIPUNIONGEN5             \
+            )
+
+#define D3DSTATUS_CLIPINTERSECTIONALL   (               \
+            D3DSTATUS_CLIPINTERSECTIONLEFT      |       \
+            D3DSTATUS_CLIPINTERSECTIONRIGHT     |       \
+            D3DSTATUS_CLIPINTERSECTIONTOP       |       \
+            D3DSTATUS_CLIPINTERSECTIONBOTTOM    |       \
+            D3DSTATUS_CLIPINTERSECTIONFRONT     |       \
+            D3DSTATUS_CLIPINTERSECTIONBACK      |       \
+            D3DSTATUS_CLIPINTERSECTIONGEN0      |       \
+            D3DSTATUS_CLIPINTERSECTIONGEN1      |       \
+            D3DSTATUS_CLIPINTERSECTIONGEN2      |       \
+            D3DSTATUS_CLIPINTERSECTIONGEN3      |       \
+            D3DSTATUS_CLIPINTERSECTIONGEN4      |       \
+            D3DSTATUS_CLIPINTERSECTIONGEN5              \
+            )
+
+#define D3DSTATUS_DEFAULT       (                       \
+            D3DSTATUS_CLIPINTERSECTIONALL       |       \
+            D3DSTATUS_ZNOTVISIBLE)
+
+#define D3DTRANSFORM_CLIPPED       0x00000001
+#define D3DTRANSFORM_UNCLIPPED     0x00000002
+
+typedef struct _D3DTRANSFORMDATA {
+  DWORD           dwSize;
+  LPVOID          lpIn;
+  DWORD           dwInSize;
+  LPVOID          lpOut;
+  DWORD           dwOutSize;
+  LPD3DHVERTEX    lpHOut;
+  DWORD           dwClip;
+  DWORD           dwClipIntersection;
+  DWORD           dwClipUnion;
+  D3DRECT         drExtent;
+} D3DTRANSFORMDATA, *LPD3DTRANSFORMDATA;
+
+typedef struct _D3DLIGHTINGELEMENT {
+  D3DVECTOR dvPosition;
+  D3DVECTOR dvNormal;
+} D3DLIGHTINGELEMENT, *LPD3DLIGHTINGELEMENT;
+
+typedef struct _D3DMATERIAL {
+  DWORD               dwSize;
+  union {
+    D3DCOLORVALUE   diffuse;
+    D3DCOLORVALUE   dcvDiffuse;
+  } DUMMYUNIONNAME;
+  union {
+    D3DCOLORVALUE   ambient;
+    D3DCOLORVALUE   dcvAmbient;
+  } DUMMYUNIONNAME1;
+  union {
+    D3DCOLORVALUE   specular;
+    D3DCOLORVALUE   dcvSpecular;
+  } DUMMYUNIONNAME2;
+  union {
+    D3DCOLORVALUE   emissive;
+    D3DCOLORVALUE   dcvEmissive;
+  } DUMMYUNIONNAME3;
+  union {
+    D3DVALUE        power;
+    D3DVALUE        dvPower;
+  } DUMMYUNIONNAME4;
+  D3DTEXTUREHANDLE    hTexture;
+  DWORD               dwRampSize;
+} D3DMATERIAL, *LPD3DMATERIAL;
+
+typedef struct _D3DMATERIAL7 {
+  union {
+    D3DCOLORVALUE   diffuse;
+    D3DCOLORVALUE   dcvDiffuse;
+  } DUMMYUNIONNAME;
+  union {
+    D3DCOLORVALUE   ambient;
+    D3DCOLORVALUE   dcvAmbient;
+  } DUMMYUNIONNAME1;
+  union {
+    D3DCOLORVALUE   specular;
+    D3DCOLORVALUE   dcvSpecular;
+  } DUMMYUNIONNAME2;
+  union {
+    D3DCOLORVALUE   emissive;
+    D3DCOLORVALUE   dcvEmissive;
+  } DUMMYUNIONNAME3;
+  union {
+    D3DVALUE        power;
+    D3DVALUE        dvPower;
+  } DUMMYUNIONNAME4;
+} D3DMATERIAL7, *LPD3DMATERIAL7;
+
+typedef enum {
+  D3DLIGHT_POINT          = 1,
+  D3DLIGHT_SPOT           = 2,
+  D3DLIGHT_DIRECTIONAL    = 3,
+  D3DLIGHT_PARALLELPOINT  = 4,
+  D3DLIGHT_GLSPOT         = 5,
+  D3DLIGHT_FORCE_DWORD    = 0x7fffffff
+} D3DLIGHTTYPE;
+
+typedef struct _D3DLIGHT {
+    DWORD           dwSize;
+    D3DLIGHTTYPE    dltType;
+    D3DCOLORVALUE   dcvColor;
+    D3DVECTOR       dvPosition;
+    D3DVECTOR       dvDirection;
+    D3DVALUE        dvRange;
+    D3DVALUE        dvFalloff;
+    D3DVALUE        dvAttenuation0;
+    D3DVALUE        dvAttenuation1;
+    D3DVALUE        dvAttenuation2;
+    D3DVALUE        dvTheta;
+    D3DVALUE        dvPhi;
+} D3DLIGHT,*LPD3DLIGHT;
+
+typedef struct _D3DLIGHT7 {
+    D3DLIGHTTYPE    dltType;
+    D3DCOLORVALUE   dcvDiffuse;
+    D3DCOLORVALUE   dcvSpecular;
+    D3DCOLORVALUE   dcvAmbient;
+    D3DVECTOR       dvPosition;
+    D3DVECTOR       dvDirection;
+    D3DVALUE        dvRange;
+    D3DVALUE        dvFalloff;
+    D3DVALUE        dvAttenuation0;
+    D3DVALUE        dvAttenuation1;
+    D3DVALUE        dvAttenuation2;
+    D3DVALUE        dvTheta;
+    D3DVALUE        dvPhi;
+} D3DLIGHT7, *LPD3DLIGHT7;
+
+#define D3DLIGHT_ACTIVE         0x00000001
+#define D3DLIGHT_NO_SPECULAR    0x00000002
+#define D3DLIGHT_ALL (D3DLIGHT_ACTIVE | D3DLIGHT_NO_SPECULAR) /* 0x3 */
+
+#define D3DLIGHT_RANGE_MAX              ((float)sqrt(FLT_MAX))
+
+typedef struct _D3DLIGHT2 {
+  DWORD           dwSize;
+  D3DLIGHTTYPE    dltType;
+  D3DCOLORVALUE   dcvColor;
+  D3DVECTOR       dvPosition;
+  D3DVECTOR       dvDirection;
+  D3DVALUE        dvRange;
+  D3DVALUE        dvFalloff;
+  D3DVALUE        dvAttenuation0;
+  D3DVALUE        dvAttenuation1;
+  D3DVALUE        dvAttenuation2;
+  D3DVALUE        dvTheta;
+  D3DVALUE        dvPhi;
+  DWORD           dwFlags;
+} D3DLIGHT2, *LPD3DLIGHT2;
+
+typedef struct _D3DLIGHTDATA {
+  DWORD                dwSize;
+  LPD3DLIGHTINGELEMENT lpIn;
+  DWORD                dwInSize;
+  LPD3DTLVERTEX        lpOut;
+  DWORD                dwOutSize;
+} D3DLIGHTDATA, *LPD3DLIGHTDATA;
+
+#define D3DCOLOR_MONO   1
+#define D3DCOLOR_RGB    2
+
+typedef DWORD D3DCOLORMODEL;
+
+
+#define D3DCLEAR_TARGET   0x00000001
+#define D3DCLEAR_ZBUFFER  0x00000002
+#define D3DCLEAR_STENCIL  0x00000004
+
+typedef enum _D3DOPCODE {
+  D3DOP_POINT           = 1,
+  D3DOP_LINE            = 2,
+  D3DOP_TRIANGLE        = 3,
+  D3DOP_MATRIXLOAD      = 4,
+  D3DOP_MATRIXMULTIPLY  = 5,
+  D3DOP_STATETRANSFORM  = 6,
+  D3DOP_STATELIGHT      = 7,
+  D3DOP_STATERENDER     = 8,
+  D3DOP_PROCESSVERTICES = 9,
+  D3DOP_TEXTURELOAD     = 10,
+  D3DOP_EXIT            = 11,
+  D3DOP_BRANCHFORWARD   = 12,
+  D3DOP_SPAN            = 13,
+  D3DOP_SETSTATUS       = 14,
+
+  D3DOP_FORCE_DWORD     = 0x7fffffff
+} D3DOPCODE;
+
+typedef struct _D3DINSTRUCTION {
+  BYTE bOpcode;
+  BYTE bSize;
+  WORD wCount;
+} D3DINSTRUCTION, *LPD3DINSTRUCTION;
+
+typedef struct _D3DTEXTURELOAD {
+  D3DTEXTUREHANDLE hDestTexture;
+  D3DTEXTUREHANDLE hSrcTexture;
+} D3DTEXTURELOAD, *LPD3DTEXTURELOAD;
+
+typedef struct _D3DPICKRECORD {
+  BYTE     bOpcode;
+  BYTE     bPad;
+  DWORD    dwOffset;
+  D3DVALUE dvZ;
+} D3DPICKRECORD, *LPD3DPICKRECORD;
+
+typedef enum {
+  D3DSHADE_FLAT         = 1,
+  D3DSHADE_GOURAUD      = 2,
+  D3DSHADE_PHONG        = 3,
+  D3DSHADE_FORCE_DWORD  = 0x7fffffff
+} D3DSHADEMODE;
+
+typedef enum {
+  D3DFILL_POINT         = 1,
+  D3DFILL_WIREFRAME     = 2,
+  D3DFILL_SOLID         = 3,
+  D3DFILL_FORCE_DWORD   = 0x7fffffff
+} D3DFILLMODE;
+
+typedef struct _D3DLINEPATTERN {
+  WORD    wRepeatFactor;
+  WORD    wLinePattern;
+} D3DLINEPATTERN;
+
+typedef enum {
+  D3DFILTER_NEAREST          = 1,
+  D3DFILTER_LINEAR           = 2,
+  D3DFILTER_MIPNEAREST       = 3,
+  D3DFILTER_MIPLINEAR        = 4,
+  D3DFILTER_LINEARMIPNEAREST = 5,
+  D3DFILTER_LINEARMIPLINEAR  = 6,
+  D3DFILTER_FORCE_DWORD      = 0x7fffffff
+} D3DTEXTUREFILTER;
+
+typedef enum {
+  D3DBLEND_ZERO            = 1,
+  D3DBLEND_ONE             = 2,
+  D3DBLEND_SRCCOLOR        = 3,
+  D3DBLEND_INVSRCCOLOR     = 4,
+  D3DBLEND_SRCALPHA        = 5,
+  D3DBLEND_INVSRCALPHA     = 6,
+  D3DBLEND_DESTALPHA       = 7,
+  D3DBLEND_INVDESTALPHA    = 8,
+  D3DBLEND_DESTCOLOR       = 9,
+  D3DBLEND_INVDESTCOLOR    = 10,
+  D3DBLEND_SRCALPHASAT     = 11,
+  D3DBLEND_BOTHSRCALPHA    = 12,
+  D3DBLEND_BOTHINVSRCALPHA = 13,
+  D3DBLEND_FORCE_DWORD     = 0x7fffffff
+} D3DBLEND;
+
+typedef enum {
+  D3DTBLEND_DECAL         = 1,
+  D3DTBLEND_MODULATE      = 2,
+  D3DTBLEND_DECALALPHA    = 3,
+  D3DTBLEND_MODULATEALPHA = 4,
+  D3DTBLEND_DECALMASK     = 5,
+  D3DTBLEND_MODULATEMASK  = 6,
+  D3DTBLEND_COPY          = 7,
+  D3DTBLEND_ADD           = 8,
+  D3DTBLEND_FORCE_DWORD   = 0x7fffffff
+} D3DTEXTUREBLEND;
+
+typedef enum _D3DTEXTUREADDRESS {
+    D3DTADDRESS_WRAP           = 1,
+    D3DTADDRESS_MIRROR         = 2,
+    D3DTADDRESS_CLAMP          = 3,
+    D3DTADDRESS_BORDER         = 4,
+    D3DTADDRESS_FORCE_DWORD    = 0x7fffffff
+} D3DTEXTUREADDRESS;
+
+typedef enum {
+  D3DCULL_NONE        = 1,
+  D3DCULL_CW          = 2,
+  D3DCULL_CCW         = 3,
+  D3DCULL_FORCE_DWORD = 0x7fffffff
+} D3DCULL;
+
+typedef enum {
+  D3DCMP_NEVER        = 1,
+  D3DCMP_LESS         = 2,
+  D3DCMP_EQUAL        = 3,
+  D3DCMP_LESSEQUAL    = 4,
+  D3DCMP_GREATER      = 5,
+  D3DCMP_NOTEQUAL     = 6,
+  D3DCMP_GREATEREQUAL = 7,
+  D3DCMP_ALWAYS       = 8,
+  D3DCMP_FORCE_DWORD  = 0x7fffffff
+} D3DCMPFUNC;
+
+typedef enum _D3DSTENCILOP {
+  D3DSTENCILOP_KEEP        = 1,
+  D3DSTENCILOP_ZERO        = 2,
+  D3DSTENCILOP_REPLACE     = 3,
+  D3DSTENCILOP_INCRSAT     = 4,
+  D3DSTENCILOP_DECRSAT     = 5,
+  D3DSTENCILOP_INVERT      = 6,
+  D3DSTENCILOP_INCR        = 7,
+  D3DSTENCILOP_DECR        = 8,
+  D3DSTENCILOP_FORCE_DWORD = 0x7fffffff
+} D3DSTENCILOP;
+
+typedef enum _D3DFOGMODE {
+  D3DFOG_NONE         = 0,
+  D3DFOG_EXP          = 1,
+  D3DFOG_EXP2         = 2,
+  D3DFOG_LINEAR       = 3,
+  D3DFOG_FORCE_DWORD  = 0x7fffffff
+} D3DFOGMODE;
+
+typedef enum _D3DZBUFFERTYPE {
+  D3DZB_FALSE        = 0,
+  D3DZB_TRUE         = 1,
+  D3DZB_USEW         = 2,
+  D3DZB_FORCE_DWORD  = 0x7fffffff
+} D3DZBUFFERTYPE;
+
+typedef enum _D3DANTIALIASMODE {
+  D3DANTIALIAS_NONE            = 0,
+  D3DANTIALIAS_SORTDEPENDENT   = 1,
+  D3DANTIALIAS_SORTINDEPENDENT = 2,
+  D3DANTIALIAS_FORCE_DWORD     = 0x7fffffff
+} D3DANTIALIASMODE;
+
+typedef enum {
+  D3DVT_VERTEX        = 1,
+  D3DVT_LVERTEX       = 2,
+  D3DVT_TLVERTEX      = 3,
+  D3DVT_FORCE_DWORD   = 0x7fffffff
+} D3DVERTEXTYPE;
+
+typedef enum {
+  D3DPT_POINTLIST     = 1,
+  D3DPT_LINELIST      = 2,
+  D3DPT_LINESTRIP     = 3,
+  D3DPT_TRIANGLELIST  = 4,
+  D3DPT_TRIANGLESTRIP = 5,
+  D3DPT_TRIANGLEFAN   = 6,
+  D3DPT_FORCE_DWORD   = 0x7fffffff
+} D3DPRIMITIVETYPE;
+
+#define D3DSTATE_OVERRIDE_BIAS      256
+
+#define D3DSTATE_OVERRIDE(type) (D3DRENDERSTATETYPE)(((DWORD) (type) + D3DSTATE_OVERRIDE_BIAS))
+
+typedef enum _D3DTRANSFORMSTATETYPE {
+    D3DTRANSFORMSTATE_WORLD         = 1,
+    D3DTRANSFORMSTATE_VIEW          = 2,
+    D3DTRANSFORMSTATE_PROJECTION    = 3,
+    D3DTRANSFORMSTATE_WORLD1        = 4,
+    D3DTRANSFORMSTATE_WORLD2        = 5,
+    D3DTRANSFORMSTATE_WORLD3        = 6,
+    D3DTRANSFORMSTATE_TEXTURE0      = 16,
+    D3DTRANSFORMSTATE_TEXTURE1      = 17,
+    D3DTRANSFORMSTATE_TEXTURE2      = 18,
+    D3DTRANSFORMSTATE_TEXTURE3      = 19,
+    D3DTRANSFORMSTATE_TEXTURE4      = 20,
+    D3DTRANSFORMSTATE_TEXTURE5      = 21,
+    D3DTRANSFORMSTATE_TEXTURE6      = 22,
+    D3DTRANSFORMSTATE_TEXTURE7      = 23,
+    D3DTRANSFORMSTATE_FORCE_DWORD   = 0x7fffffff
+} D3DTRANSFORMSTATETYPE;
+
+typedef enum {
+  D3DLIGHTSTATE_MATERIAL      = 1,
+  D3DLIGHTSTATE_AMBIENT       = 2,
+  D3DLIGHTSTATE_COLORMODEL    = 3,
+  D3DLIGHTSTATE_FOGMODE       = 4,
+  D3DLIGHTSTATE_FOGSTART      = 5,
+  D3DLIGHTSTATE_FOGEND        = 6,
+  D3DLIGHTSTATE_FOGDENSITY    = 7,
+  D3DLIGHTSTATE_COLORVERTEX   = 8,
+  D3DLIGHTSTATE_FORCE_DWORD   = 0x7fffffff
+} D3DLIGHTSTATETYPE;
+
+typedef enum {
+  D3DRENDERSTATE_TEXTUREHANDLE      = 1,
+  D3DRENDERSTATE_ANTIALIAS          = 2,
+  D3DRENDERSTATE_TEXTUREADDRESS     = 3,
+  D3DRENDERSTATE_TEXTUREPERSPECTIVE = 4,
+  D3DRENDERSTATE_WRAPU              = 5,
+  D3DRENDERSTATE_WRAPV              = 6,
+  D3DRENDERSTATE_ZENABLE            = 7,
+  D3DRENDERSTATE_FILLMODE           = 8,
+  D3DRENDERSTATE_SHADEMODE          = 9,
+  D3DRENDERSTATE_LINEPATTERN        = 10,
+  D3DRENDERSTATE_MONOENABLE         = 11,
+  D3DRENDERSTATE_ROP2               = 12,
+  D3DRENDERSTATE_PLANEMASK          = 13,
+  D3DRENDERSTATE_ZWRITEENABLE       = 14,
+  D3DRENDERSTATE_ALPHATESTENABLE    = 15,
+  D3DRENDERSTATE_LASTPIXEL          = 16,
+  D3DRENDERSTATE_TEXTUREMAG         = 17,
+  D3DRENDERSTATE_TEXTUREMIN         = 18,
+  D3DRENDERSTATE_SRCBLEND           = 19,
+  D3DRENDERSTATE_DESTBLEND          = 20,
+  D3DRENDERSTATE_TEXTUREMAPBLEND    = 21,
+  D3DRENDERSTATE_CULLMODE           = 22,
+  D3DRENDERSTATE_ZFUNC              = 23,
+  D3DRENDERSTATE_ALPHAREF           = 24,
+  D3DRENDERSTATE_ALPHAFUNC          = 25,
+  D3DRENDERSTATE_DITHERENABLE       = 26,
+  D3DRENDERSTATE_ALPHABLENDENABLE   = 27,
+  D3DRENDERSTATE_FOGENABLE          = 28,
+  D3DRENDERSTATE_SPECULARENABLE     = 29,
+  D3DRENDERSTATE_ZVISIBLE           = 30,
+  D3DRENDERSTATE_SUBPIXEL           = 31,
+  D3DRENDERSTATE_SUBPIXELX          = 32,
+  D3DRENDERSTATE_STIPPLEDALPHA      = 33,
+  D3DRENDERSTATE_FOGCOLOR           = 34,
+  D3DRENDERSTATE_FOGTABLEMODE       = 35,
+  D3DRENDERSTATE_FOGTABLESTART      = 36,
+  D3DRENDERSTATE_FOGTABLEEND        = 37,
+  D3DRENDERSTATE_FOGTABLEDENSITY    = 38,
+  D3DRENDERSTATE_FOGSTART           = 36,
+  D3DRENDERSTATE_FOGEND             = 37,
+  D3DRENDERSTATE_FOGDENSITY         = 38,
+  D3DRENDERSTATE_STIPPLEENABLE      = 39,
+  D3DRENDERSTATE_EDGEANTIALIAS      = 40,
+  D3DRENDERSTATE_COLORKEYENABLE     = 41,
+  D3DRENDERSTATE_BORDERCOLOR        = 43,
+  D3DRENDERSTATE_TEXTUREADDRESSU    = 44,
+  D3DRENDERSTATE_TEXTUREADDRESSV    = 45,
+  D3DRENDERSTATE_MIPMAPLODBIAS      = 46,
+  D3DRENDERSTATE_ZBIAS              = 47,
+  D3DRENDERSTATE_RANGEFOGENABLE     = 48,
+  D3DRENDERSTATE_ANISOTROPY         = 49,
+  D3DRENDERSTATE_FLUSHBATCH         = 50,
+  D3DRENDERSTATE_TRANSLUCENTSORTINDEPENDENT = 51,
+
+  D3DRENDERSTATE_STENCILENABLE      = 52,
+  D3DRENDERSTATE_STENCILFAIL        = 53,
+  D3DRENDERSTATE_STENCILZFAIL       = 54,
+  D3DRENDERSTATE_STENCILPASS        = 55,
+  D3DRENDERSTATE_STENCILFUNC        = 56,
+  D3DRENDERSTATE_STENCILREF         = 57,
+  D3DRENDERSTATE_STENCILMASK        = 58,
+  D3DRENDERSTATE_STENCILWRITEMASK   = 59,
+  D3DRENDERSTATE_TEXTUREFACTOR      = 60,
+
+  D3DRENDERSTATE_STIPPLEPATTERN00   = 64,
+  D3DRENDERSTATE_STIPPLEPATTERN01   = 65,
+  D3DRENDERSTATE_STIPPLEPATTERN02   = 66,
+  D3DRENDERSTATE_STIPPLEPATTERN03   = 67,
+  D3DRENDERSTATE_STIPPLEPATTERN04   = 68,
+  D3DRENDERSTATE_STIPPLEPATTERN05   = 69,
+  D3DRENDERSTATE_STIPPLEPATTERN06   = 70,
+  D3DRENDERSTATE_STIPPLEPATTERN07   = 71,
+  D3DRENDERSTATE_STIPPLEPATTERN08   = 72,
+  D3DRENDERSTATE_STIPPLEPATTERN09   = 73,
+  D3DRENDERSTATE_STIPPLEPATTERN10   = 74,
+  D3DRENDERSTATE_STIPPLEPATTERN11   = 75,
+  D3DRENDERSTATE_STIPPLEPATTERN12   = 76,
+  D3DRENDERSTATE_STIPPLEPATTERN13   = 77,
+  D3DRENDERSTATE_STIPPLEPATTERN14   = 78,
+  D3DRENDERSTATE_STIPPLEPATTERN15   = 79,
+  D3DRENDERSTATE_STIPPLEPATTERN16   = 80,
+  D3DRENDERSTATE_STIPPLEPATTERN17   = 81,
+  D3DRENDERSTATE_STIPPLEPATTERN18   = 82,
+  D3DRENDERSTATE_STIPPLEPATTERN19   = 83,
+  D3DRENDERSTATE_STIPPLEPATTERN20   = 84,
+  D3DRENDERSTATE_STIPPLEPATTERN21   = 85,
+  D3DRENDERSTATE_STIPPLEPATTERN22   = 86,
+  D3DRENDERSTATE_STIPPLEPATTERN23   = 87,
+  D3DRENDERSTATE_STIPPLEPATTERN24   = 88,
+  D3DRENDERSTATE_STIPPLEPATTERN25   = 89,
+  D3DRENDERSTATE_STIPPLEPATTERN26   = 90,
+  D3DRENDERSTATE_STIPPLEPATTERN27   = 91,
+  D3DRENDERSTATE_STIPPLEPATTERN28   = 92,
+  D3DRENDERSTATE_STIPPLEPATTERN29   = 93,
+  D3DRENDERSTATE_STIPPLEPATTERN30   = 94,
+  D3DRENDERSTATE_STIPPLEPATTERN31   = 95,
+
+  D3DRENDERSTATE_WRAP0              = 128,
+  D3DRENDERSTATE_WRAP1              = 129,
+  D3DRENDERSTATE_WRAP2              = 130,
+  D3DRENDERSTATE_WRAP3              = 131,
+  D3DRENDERSTATE_WRAP4              = 132,
+  D3DRENDERSTATE_WRAP5              = 133,
+  D3DRENDERSTATE_WRAP6              = 134,
+  D3DRENDERSTATE_WRAP7              = 135,
+  D3DRENDERSTATE_CLIPPING            = 136,
+  D3DRENDERSTATE_LIGHTING            = 137,
+  D3DRENDERSTATE_EXTENTS             = 138,
+  D3DRENDERSTATE_AMBIENT             = 139,
+  D3DRENDERSTATE_FOGVERTEXMODE       = 140,
+  D3DRENDERSTATE_COLORVERTEX         = 141,
+  D3DRENDERSTATE_LOCALVIEWER         = 142,
+  D3DRENDERSTATE_NORMALIZENORMALS    = 143,
+  D3DRENDERSTATE_COLORKEYBLENDENABLE = 144,
+  D3DRENDERSTATE_DIFFUSEMATERIALSOURCE    = 145,
+  D3DRENDERSTATE_SPECULARMATERIALSOURCE   = 146,
+  D3DRENDERSTATE_AMBIENTMATERIALSOURCE    = 147,
+  D3DRENDERSTATE_EMISSIVEMATERIALSOURCE   = 148,
+  D3DRENDERSTATE_VERTEXBLEND              = 151,
+  D3DRENDERSTATE_CLIPPLANEENABLE          = 152,
+
+  D3DRENDERSTATE_FORCE_DWORD        = 0x7fffffff
+
+  /* FIXME: We have some retired values that are being reused for DirectX 7 */
+} D3DRENDERSTATETYPE;
+
+typedef enum _D3DMATERIALCOLORSOURCE
+{
+    D3DMCS_MATERIAL = 0,
+    D3DMCS_COLOR1   = 1,
+    D3DMCS_COLOR2   = 2,
+    D3DMCS_FORCE_DWORD = 0x7fffffff
+} D3DMATERIALCOLORSOURCE;
+
+#define D3DRENDERSTATE_BLENDENABLE      D3DRENDERSTATE_ALPHABLENDENABLE
+#define D3DRENDERSTATE_WRAPBIAS                 128UL
+#define D3DWRAP_U   0x00000001L
+#define D3DWRAP_V   0x00000002L
+
+#define D3DWRAPCOORD_0   0x00000001L
+#define D3DWRAPCOORD_1   0x00000002L
+#define D3DWRAPCOORD_2   0x00000004L
+#define D3DWRAPCOORD_3   0x00000008L
+
+#define D3DRENDERSTATE_STIPPLEPATTERN(y) (D3DRENDERSTATE_STIPPLEPATTERN00 + (y))
+
+typedef struct _D3DSTATE {
+  union {
+    D3DTRANSFORMSTATETYPE dtstTransformStateType;
+    D3DLIGHTSTATETYPE     dlstLightStateType;
+    D3DRENDERSTATETYPE    drstRenderStateType;
+  } DUMMYUNIONNAME1;
+  union {
+    DWORD                 dwArg[1];
+    D3DVALUE              dvArg[1];
+  } DUMMYUNIONNAME2;
+} D3DSTATE, *LPD3DSTATE;
+
+typedef struct _D3DMATRIXLOAD {
+  D3DMATRIXHANDLE hDestMatrix;
+  D3DMATRIXHANDLE hSrcMatrix;
+} D3DMATRIXLOAD, *LPD3DMATRIXLOAD;
+
+typedef struct _D3DMATRIXMULTIPLY {
+  D3DMATRIXHANDLE hDestMatrix;
+  D3DMATRIXHANDLE hSrcMatrix1;
+  D3DMATRIXHANDLE hSrcMatrix2;
+} D3DMATRIXMULTIPLY, *LPD3DMATRIXMULTIPLY;
+
+typedef struct _D3DPROCESSVERTICES {
+  DWORD dwFlags;
+  WORD  wStart;
+  WORD  wDest;
+  DWORD dwCount;
+  DWORD dwReserved;
+} D3DPROCESSVERTICES, *LPD3DPROCESSVERTICES;
+
+#define D3DPROCESSVERTICES_TRANSFORMLIGHT       0x00000000L
+#define D3DPROCESSVERTICES_TRANSFORM            0x00000001L
+#define D3DPROCESSVERTICES_COPY                 0x00000002L
+#define D3DPROCESSVERTICES_OPMASK               0x00000007L
+
+#define D3DPROCESSVERTICES_UPDATEEXTENTS        0x00000008L
+#define D3DPROCESSVERTICES_NOCOLOR              0x00000010L
+
+typedef enum _D3DTEXTURESTAGESTATETYPE
+{
+    D3DTSS_COLOROP        =  1,
+    D3DTSS_COLORARG1      =  2,
+    D3DTSS_COLORARG2      =  3,
+    D3DTSS_ALPHAOP        =  4,
+    D3DTSS_ALPHAARG1      =  5,
+    D3DTSS_ALPHAARG2      =  6,
+    D3DTSS_BUMPENVMAT00   =  7,
+    D3DTSS_BUMPENVMAT01   =  8,
+    D3DTSS_BUMPENVMAT10   =  9,
+    D3DTSS_BUMPENVMAT11   = 10,
+    D3DTSS_TEXCOORDINDEX  = 11,
+    D3DTSS_ADDRESS        = 12,
+    D3DTSS_ADDRESSU       = 13,
+    D3DTSS_ADDRESSV       = 14,
+    D3DTSS_BORDERCOLOR    = 15,
+    D3DTSS_MAGFILTER      = 16,
+    D3DTSS_MINFILTER      = 17,
+    D3DTSS_MIPFILTER      = 18,
+    D3DTSS_MIPMAPLODBIAS  = 19,
+    D3DTSS_MAXMIPLEVEL    = 20,
+    D3DTSS_MAXANISOTROPY  = 21,
+    D3DTSS_BUMPENVLSCALE  = 22,
+    D3DTSS_BUMPENVLOFFSET = 23,
+    D3DTSS_TEXTURETRANSFORMFLAGS = 24,
+    D3DTSS_FORCE_DWORD   = 0x7fffffff
+} D3DTEXTURESTAGESTATETYPE;
+
+#define D3DTSS_TCI_PASSTHRU                             0x00000000
+#define D3DTSS_TCI_CAMERASPACENORMAL                    0x00010000
+#define D3DTSS_TCI_CAMERASPACEPOSITION                  0x00020000
+#define D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR          0x00030000
+
+typedef enum _D3DTEXTUREOP
+{
+    D3DTOP_DISABLE    = 1,
+    D3DTOP_SELECTARG1 = 2,
+    D3DTOP_SELECTARG2 = 3,
+
+    D3DTOP_MODULATE   = 4,
+    D3DTOP_MODULATE2X = 5,
+    D3DTOP_MODULATE4X = 6,
+
+    D3DTOP_ADD          =  7,
+    D3DTOP_ADDSIGNED    =  8,
+    D3DTOP_ADDSIGNED2X  =  9,
+    D3DTOP_SUBTRACT     = 10,
+    D3DTOP_ADDSMOOTH    = 11,
+
+    D3DTOP_BLENDDIFFUSEALPHA    = 12,
+    D3DTOP_BLENDTEXTUREALPHA    = 13,
+    D3DTOP_BLENDFACTORALPHA     = 14,
+    D3DTOP_BLENDTEXTUREALPHAPM  = 15,
+    D3DTOP_BLENDCURRENTALPHA    = 16,
+
+    D3DTOP_PREMODULATE            = 17,
+    D3DTOP_MODULATEALPHA_ADDCOLOR = 18,
+    D3DTOP_MODULATECOLOR_ADDALPHA = 19,
+    D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20,
+    D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21,
+
+    D3DTOP_BUMPENVMAP           = 22,
+    D3DTOP_BUMPENVMAPLUMINANCE  = 23,
+    D3DTOP_DOTPRODUCT3          = 24,
+
+    D3DTOP_FORCE_DWORD = 0x7fffffff
+} D3DTEXTUREOP;
+
+#define D3DTA_SELECTMASK        0x0000000f
+#define D3DTA_DIFFUSE           0x00000000
+#define D3DTA_CURRENT           0x00000001
+#define D3DTA_TEXTURE           0x00000002
+#define D3DTA_TFACTOR           0x00000003
+#define D3DTA_SPECULAR          0x00000004
+#define D3DTA_COMPLEMENT        0x00000010
+#define D3DTA_ALPHAREPLICATE    0x00000020
+
+typedef enum _D3DTEXTUREMAGFILTER
+{
+    D3DTFG_POINT        = 1,
+    D3DTFG_LINEAR       = 2,
+    D3DTFG_FLATCUBIC    = 3,
+    D3DTFG_GAUSSIANCUBIC = 4,
+    D3DTFG_ANISOTROPIC  = 5,
+    D3DTFG_FORCE_DWORD  = 0x7fffffff
+} D3DTEXTUREMAGFILTER;
+
+typedef enum _D3DTEXTUREMINFILTER
+{
+    D3DTFN_POINT        = 1,
+    D3DTFN_LINEAR       = 2,
+    D3DTFN_ANISOTROPIC  = 3,
+    D3DTFN_FORCE_DWORD  = 0x7fffffff
+} D3DTEXTUREMINFILTER;
+
+typedef enum _D3DTEXTUREMIPFILTER
+{
+    D3DTFP_NONE         = 1,
+    D3DTFP_POINT        = 2,
+    D3DTFP_LINEAR       = 3,
+    D3DTFP_FORCE_DWORD  = 0x7fffffff
+} D3DTEXTUREMIPFILTER;
+
+#define D3DTRIFLAG_START                        0x00000000L
+#define D3DTRIFLAG_STARTFLAT(len) (len)
+#define D3DTRIFLAG_ODD                          0x0000001eL
+#define D3DTRIFLAG_EVEN                         0x0000001fL
+
+#define D3DTRIFLAG_EDGEENABLE1                  0x00000100L
+#define D3DTRIFLAG_EDGEENABLE2                  0x00000200L
+#define D3DTRIFLAG_EDGEENABLE3                  0x00000400L
+#define D3DTRIFLAG_EDGEENABLETRIANGLE \
+        (D3DTRIFLAG_EDGEENABLE1 | D3DTRIFLAG_EDGEENABLE2 | D3DTRIFLAG_EDGEENABLE3)
+
+typedef struct _D3DTRIANGLE {
+  union {
+    WORD v1;
+    WORD wV1;
+  } DUMMYUNIONNAME1;
+  union {
+    WORD v2;
+    WORD wV2;
+  } DUMMYUNIONNAME2;
+  union {
+    WORD v3;
+    WORD wV3;
+  } DUMMYUNIONNAME3;
+  WORD     wFlags;
+} D3DTRIANGLE, *LPD3DTRIANGLE;
+
+typedef struct _D3DLINE {
+  union {
+    WORD v1;
+    WORD wV1;
+  } DUMMYUNIONNAME1;
+  union {
+    WORD v2;
+    WORD wV2;
+  } DUMMYUNIONNAME2;
+} D3DLINE, *LPD3DLINE;
+
+typedef struct _D3DSPAN {
+  WORD wCount;
+  WORD wFirst;
+} D3DSPAN, *LPD3DSPAN;
+
+typedef struct _D3DPOINT {
+  WORD wCount;
+  WORD wFirst;
+} D3DPOINT, *LPD3DPOINT;
+
+typedef struct _D3DBRANCH {
+  DWORD dwMask;
+  DWORD dwValue;
+  BOOL  bNegate;
+  DWORD dwOffset;
+} D3DBRANCH, *LPD3DBRANCH;
+
+typedef struct _D3DSTATUS {
+  DWORD   dwFlags;
+  DWORD   dwStatus;
+  D3DRECT drExtent;
+} D3DSTATUS, *LPD3DSTATUS;
+
+#define D3DSETSTATUS_STATUS   0x00000001L
+#define D3DSETSTATUS_EXTENTS  0x00000002L
+#define D3DSETSTATUS_ALL      (D3DSETSTATUS_STATUS | D3DSETSTATUS_EXTENTS)
+
+typedef struct _D3DCLIPSTATUS {
+  DWORD dwFlags;
+  DWORD dwStatus;
+  float minx, maxx;
+  float miny, maxy;
+  float minz, maxz;
+} D3DCLIPSTATUS, *LPD3DCLIPSTATUS;
+
+#define D3DCLIPSTATUS_STATUS        0x00000001L
+#define D3DCLIPSTATUS_EXTENTS2      0x00000002L
+#define D3DCLIPSTATUS_EXTENTS3      0x00000004L
+
+typedef struct {
+  DWORD        dwSize;
+  DWORD        dwTrianglesDrawn;
+  DWORD        dwLinesDrawn;
+  DWORD        dwPointsDrawn;
+  DWORD        dwSpansDrawn;
+  DWORD        dwVerticesProcessed;
+} D3DSTATS, *LPD3DSTATS;
+
+#define D3DEXECUTE_CLIPPED       0x00000001l
+#define D3DEXECUTE_UNCLIPPED     0x00000002l
+
+typedef struct _D3DEXECUTEDATA {
+  DWORD     dwSize;
+  DWORD     dwVertexOffset;
+  DWORD     dwVertexCount;
+  DWORD     dwInstructionOffset;
+  DWORD     dwInstructionLength;
+  DWORD     dwHVertexOffset;
+  D3DSTATUS dsStatus;
+} D3DEXECUTEDATA, *LPD3DEXECUTEDATA;
+
+#define D3DPAL_FREE 0x00
+#define D3DPAL_READONLY 0x40
+#define D3DPAL_RESERVED 0x80
+
+typedef struct _D3DVERTEXBUFFERDESC {
+  DWORD dwSize;
+  DWORD dwCaps;
+  DWORD dwFVF;
+  DWORD dwNumVertices;
+} D3DVERTEXBUFFERDESC, *LPD3DVERTEXBUFFERDESC;
+
+#define D3DVBCAPS_SYSTEMMEMORY      0x00000800l
+#define D3DVBCAPS_WRITEONLY         0x00010000l
+#define D3DVBCAPS_OPTIMIZED         0x80000000l
+#define D3DVBCAPS_DONOTCLIP         0x00000001l
+
+#define D3DVOP_LIGHT       (1 << 10)
+#define D3DVOP_TRANSFORM   (1 << 0)
+#define D3DVOP_CLIP        (1 << 2)
+#define D3DVOP_EXTENTS     (1 << 3)
+
+#define D3DMAXNUMVERTICES    ((1<<16) - 1)
+
+#define D3DMAXNUMPRIMITIVES  ((1<<16) - 1)
+
+#define D3DPV_DONOTCOPYDATA (1 << 0)
+
+#define D3DFVF_RESERVED0        0x001
+#define D3DFVF_POSITION_MASK    0x00E
+#define D3DFVF_XYZ              0x002
+#define D3DFVF_XYZRHW           0x004
+#define D3DFVF_XYZB1            0x006
+#define D3DFVF_XYZB2            0x008
+#define D3DFVF_XYZB3            0x00a
+#define D3DFVF_XYZB4            0x00c
+#define D3DFVF_XYZB5            0x00e
+
+#define D3DFVF_NORMAL           0x010
+#define D3DFVF_RESERVED1        0x020
+#define D3DFVF_DIFFUSE          0x040
+#define D3DFVF_SPECULAR         0x080
+#define D3DFVF_TEXCOUNT_MASK    0xf00
+#define D3DFVF_TEXCOUNT_SHIFT   8
+#define D3DFVF_TEX0             0x000
+#define D3DFVF_TEX1             0x100
+#define D3DFVF_TEX2             0x200
+#define D3DFVF_TEX3             0x300
+#define D3DFVF_TEX4             0x400
+#define D3DFVF_TEX5             0x500
+#define D3DFVF_TEX6             0x600
+#define D3DFVF_TEX7             0x700
+#define D3DFVF_TEX8             0x800
+
+#define D3DFVF_RESERVED2        0xf000
+
+#define D3DFVF_VERTEX ( D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1 )
+#define D3DFVF_LVERTEX ( D3DFVF_XYZ | D3DFVF_RESERVED1 | D3DFVF_DIFFUSE | \
+                         D3DFVF_SPECULAR | D3DFVF_TEX1 )
+#define D3DFVF_TLVERTEX ( D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | \
+                          D3DFVF_TEX1 )
+
+typedef struct _D3DDP_PTRSTRIDE {
+  LPVOID lpvData;
+  DWORD  dwStride;
+} D3DDP_PTRSTRIDE;
+
+#define D3DDP_MAXTEXCOORD 8
+
+typedef struct _D3DDRAWPRIMITIVESTRIDEDDATA  {
+  D3DDP_PTRSTRIDE position;
+  D3DDP_PTRSTRIDE normal;
+  D3DDP_PTRSTRIDE diffuse;
+  D3DDP_PTRSTRIDE specular;
+  D3DDP_PTRSTRIDE textureCoords[D3DDP_MAXTEXCOORD];
+} D3DDRAWPRIMITIVESTRIDEDDATA ,*LPD3DDRAWPRIMITIVESTRIDEDDATA;
+
+#define D3DVIS_INSIDE_FRUSTUM       0
+#define D3DVIS_INTERSECT_FRUSTUM    1
+#define D3DVIS_OUTSIDE_FRUSTUM      2
+#define D3DVIS_INSIDE_LEFT          0
+#define D3DVIS_INTERSECT_LEFT       (1 << 2)
+#define D3DVIS_OUTSIDE_LEFT         (2 << 2)
+#define D3DVIS_INSIDE_RIGHT         0
+#define D3DVIS_INTERSECT_RIGHT      (1 << 4)
+#define D3DVIS_OUTSIDE_RIGHT        (2 << 4)
+#define D3DVIS_INSIDE_TOP           0
+#define D3DVIS_INTERSECT_TOP        (1 << 6)
+#define D3DVIS_OUTSIDE_TOP          (2 << 6)
+#define D3DVIS_INSIDE_BOTTOM        0
+#define D3DVIS_INTERSECT_BOTTOM     (1 << 8)
+#define D3DVIS_OUTSIDE_BOTTOM       (2 << 8)
+#define D3DVIS_INSIDE_NEAR          0
+#define D3DVIS_INTERSECT_NEAR       (1 << 10)
+#define D3DVIS_OUTSIDE_NEAR         (2 << 10)
+#define D3DVIS_INSIDE_FAR           0
+#define D3DVIS_INTERSECT_FAR        (1 << 12)
+#define D3DVIS_OUTSIDE_FAR          (2 << 12)
+
+#define D3DVIS_MASK_FRUSTUM         (3 << 0)
+#define D3DVIS_MASK_LEFT            (3 << 2)
+#define D3DVIS_MASK_RIGHT           (3 << 4)
+#define D3DVIS_MASK_TOP             (3 << 6)
+#define D3DVIS_MASK_BOTTOM          (3 << 8)
+#define D3DVIS_MASK_NEAR            (3 << 10)
+#define D3DVIS_MASK_FAR             (3 << 12)
+
+#define D3DDEVINFOID_TEXTUREMANAGER    1
+#define D3DDEVINFOID_D3DTEXTUREMANAGER 2
+#define D3DDEVINFOID_TEXTURING         3
+
+typedef enum _D3DSTATEBLOCKTYPE
+{
+    D3DSBT_ALL           = 1,
+    D3DSBT_PIXELSTATE    = 2,
+    D3DSBT_VERTEXSTATE   = 3,
+    D3DSBT_FORCE_DWORD   = 0xffffffff
+} D3DSTATEBLOCKTYPE;
+
+typedef enum _D3DVERTEXBLENDFLAGS
+{
+    D3DVBLEND_DISABLE  = 0,
+    D3DVBLEND_1WEIGHT  = 1,
+    D3DVBLEND_2WEIGHTS = 2,
+    D3DVBLEND_3WEIGHTS = 3,
+} D3DVERTEXBLENDFLAGS;
+
+typedef enum _D3DTEXTURETRANSFORMFLAGS {
+    D3DTTFF_DISABLE         = 0,
+    D3DTTFF_COUNT1          = 1,
+    D3DTTFF_COUNT2          = 2,
+    D3DTTFF_COUNT3          = 3,
+    D3DTTFF_COUNT4          = 4,
+    D3DTTFF_PROJECTED       = 256,
+    D3DTTFF_FORCE_DWORD     = 0x7fffffff
+} D3DTEXTURETRANSFORMFLAGS;
+
+#define D3DFVF_TEXTUREFORMAT2 0
+#define D3DFVF_TEXTUREFORMAT1 3
+#define D3DFVF_TEXTUREFORMAT3 1
+#define D3DFVF_TEXTUREFORMAT4 2
+
+#define D3DFVF_TEXCOORDSIZE3(CoordIndex) (D3DFVF_TEXTUREFORMAT3 << (CoordIndex*2 + 16))
+#define D3DFVF_TEXCOORDSIZE2(CoordIndex) (D3DFVF_TEXTUREFORMAT2)
+#define D3DFVF_TEXCOORDSIZE4(CoordIndex) (D3DFVF_TEXTUREFORMAT4 << (CoordIndex*2 + 16))
+#define D3DFVF_TEXCOORDSIZE1(CoordIndex) (D3DFVF_TEXTUREFORMAT1 << (CoordIndex*2 + 16))
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dvec.inl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dvec.inl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dvec.inl	(revision 16410)
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2000 Ove Kaaven
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_D3DVEC_INL
+#define __WINE_D3DVEC_INL
+
+/*** constructors ***/
+
+inline _D3DVECTOR::_D3DVECTOR(D3DVALUE f)
+{
+  x = y = z = f;
+}
+
+inline _D3DVECTOR::_D3DVECTOR(D3DVALUE _x, D3DVALUE _y, D3DVALUE _z)
+{
+  x = _x; y = _y; z = _z;
+}
+
+/*** assignment operators ***/
+
+inline _D3DVECTOR& _D3DVECTOR::operator += (const _D3DVECTOR& v)
+{
+  x += v.x; y += v.y; z += v.z;
+  return *this;
+}
+
+inline _D3DVECTOR& _D3DVECTOR::operator -= (const _D3DVECTOR& v)
+{
+  x -= v.x; y -= v.y; z -= v.z;
+  return *this;
+}
+
+inline _D3DVECTOR& _D3DVECTOR::operator *= (const _D3DVECTOR& v)
+{
+  x *= v.x; y *= v.y; z *= v.z;
+  return *this;
+}
+
+inline _D3DVECTOR& _D3DVECTOR::operator /= (const _D3DVECTOR& v)
+{
+  x /= v.x; y /= v.y; z /= v.z;
+  return *this;
+}
+
+inline _D3DVECTOR& _D3DVECTOR::operator *= (D3DVALUE s)
+{
+  x *= s; y *= s; z *= s;
+  return *this;
+}
+
+inline _D3DVECTOR& _D3DVECTOR::operator /= (D3DVALUE s)
+{
+  x /= s; y /= s; z /= s;
+  return *this;
+}
+
+/*** unary operators ***/
+
+inline _D3DVECTOR operator + (const _D3DVECTOR& v)
+{
+  return v;
+}
+
+inline _D3DVECTOR operator - (const _D3DVECTOR& v)
+{
+  return _D3DVECTOR(-v.x, -v.y, -v.z);
+}
+
+/*** binary operators ***/
+
+inline _D3DVECTOR operator + (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
+{
+  return _D3DVECTOR(v1.x+v2.x, v1.y+v2.y, v1.z+v2.z);
+}
+
+inline _D3DVECTOR operator - (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
+{
+  return _D3DVECTOR(v1.x-v2.x, v1.y-v2.y, v1.z-v2.z);
+}
+
+inline _D3DVECTOR operator * (const _D3DVECTOR& v, D3DVALUE s)
+{
+  return _D3DVECTOR(v.x*s, v.y*s, v.z*s);
+}
+
+inline _D3DVECTOR operator * (D3DVALUE s, const _D3DVECTOR& v)
+{
+  return _D3DVECTOR(v.x*s, v.y*s, v.z*s);
+}
+
+inline _D3DVECTOR operator / (const _D3DVECTOR& v, D3DVALUE s)
+{
+  return _D3DVECTOR(v.x/s, v.y/s, v.z/s);
+}
+
+inline D3DVALUE SquareMagnitude(const _D3DVECTOR& v)
+{
+  return v.x*v.x + v.y*v.y + v.z*v.z; /* DotProduct(v, v) */
+}
+
+inline D3DVALUE Magnitude(const _D3DVECTOR& v)
+{
+  return sqrt(SquareMagnitude(v));
+}
+
+inline _D3DVECTOR Normalize(const _D3DVECTOR& v)
+{
+  return v / Magnitude(v);
+}
+
+inline D3DVALUE DotProduct(const _D3DVECTOR& v1, const _D3DVECTOR& v2)
+{
+  return v1.x*v2.x + v1.y*v2.y + v1.z*v2.z;
+}
+
+inline _D3DVECTOR CrossProduct(const _D3DVECTOR& v1, const _D3DVECTOR& v2)
+{
+  _D3DVECTOR res;
+  /* this is a left-handed cross product, right? */
+  res.x = v1.y * v2.z - v1.z * v2.y;
+  res.y = v1.z * v2.x - v1.x * v2.z;
+  res.z = v1.x * v2.y - v1.y * v2.x;
+  return res;
+}
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx8.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx8.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx8.h	(revision 16410)
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2007 David Adam
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __D3DX8_H__
+#define __D3DX8_H__
+
+#include <d3d8.h>
+#include <limits.h>
+
+#include <d3dx8math.h>
+#include <d3dx8core.h>
+/* FIXME: #include <d3dx8tex.h> */
+#include <d3dx8mesh.h>
+/* FIXME: #include <d3dx8shape.h> */
+/* FIXME: #include <d3dx8effect.h> */
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx8core.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx8core.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx8core.h	(revision 16410)
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2002 Raphael Junqueira
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_D3DX8CORE_H
+#define __WINE_D3DX8CORE_H
+
+#include <d3d8.h>
+
+/*****************************************************************************
+ * #defines and error codes
+ */
+#define D3DXASM_DEBUG           1
+#define D3DXASM_SKIPVALIDATION  2
+
+#define _FACD3D  0x876
+#define MAKE_D3DXHRESULT( code )  MAKE_HRESULT( 1, _FACD3D, code )
+
+/*
+ * Direct3D Errors
+ */
+#define D3DXERR_CANNOTATTRSORT                  MAKE_D3DXHRESULT(2158)
+#define D3DXERR_CANNOTMODIFYINDEXBUFFER         MAKE_D3DXHRESULT(2159)
+#define D3DXERR_INVALIDMESH                     MAKE_D3DXHRESULT(2160)
+#define D3DXERR_SKINNINGNOTSUPPORTED            MAKE_D3DXHRESULT(2161)
+#define D3DXERR_TOOMANYINFLUENCES               MAKE_D3DXHRESULT(2162)
+#define D3DXERR_INVALIDDATA                     MAKE_D3DXHRESULT(2163)
+
+/*****************************************************************************
+ * Predeclare the interfaces
+ */
+DEFINE_GUID(IID_ID3DXBuffer,             0x1,0x1,0x4,0xB0,0xCF,0x98,0xFE,0xFD,0xFF,0x95,0x12);/* FIXME */
+typedef struct ID3DXBuffer *LPD3DXBUFFER;
+DEFINE_GUID(IID_ID3DXFont,               0x1,0x1,0x4,0xB0,0xCF,0x98,0xFE,0xFD,0xFF,0x95,0x13);/* FIXME */
+typedef struct ID3DXFont *LPD3DXFONT;
+
+/*****************************************************************************
+ * ID3DXBuffer interface
+ */
+#define INTERFACE ID3DXBuffer
+DECLARE_INTERFACE_(ID3DXBuffer,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** ID3DXBuffer methods ***/
+    STDMETHOD_(LPVOID,GetBufferPointer)(THIS) PURE;
+    STDMETHOD_(DWORD,GetBufferSize)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define ID3DXBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define ID3DXBuffer_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define ID3DXBuffer_Release(p)            (p)->lpVtbl->Release(p)
+/*** ID3DXBuffer methods ***/
+#define ID3DXBuffer_GetBufferPointer(p)   (p)->lpVtbl->GetBufferPointer(p)
+#define ID3DXBuffer_GetBufferSize(p)      (p)->lpVtbl->GetBufferSize(p)
+#endif
+
+/*****************************************************************************
+ * ID3DXFont interface
+ */
+#define INTERFACE ID3DXFont
+DECLARE_INTERFACE_(ID3DXFont,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** ID3DXFont methods ***/
+    STDMETHOD(Begin)(THIS) PURE;
+    STDMETHOD(DrawTextA)(THIS) PURE;
+    STDMETHOD(End)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define ID3DXFont_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define ID3DXFont_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define ID3DXFont_Release(p)            (p)->lpVtbl->Release(p)
+/*** ID3DXFont methods ***/
+#define ID3DXFont_Begin(p)              (p)->lpVtbl->Begin(p)
+#define ID3DXFont_DrawTextA(p,a,b,c,d,e)(p)->lpVtbl->DrawText(p,a,b,c,d,e)
+#define ID3DXFont_End(p)                (p)->lpVtbl->End(p)
+#endif
+
+/*************************************************************************************
+ * Define entrypoints 
+ */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+HRESULT WINAPI D3DXCreateFont(LPDIRECT3DDEVICE8 pDevice, HFONT hFont, LPD3DXFONT* ppFont);
+HRESULT WINAPI D3DXAssembleShader(LPCVOID pSrcData, UINT SrcDataLen, DWORD Flags, 
+			   LPD3DXBUFFER* ppConstants, 
+			   LPD3DXBUFFER* ppCompiledShader,
+			   LPD3DXBUFFER* ppCompilationErrors);
+HRESULT WINAPI D3DXAssembleShaderFromFileA(LPCSTR pSrcFile, DWORD Flags,
+				    LPD3DXBUFFER* ppConstants,
+				    LPD3DXBUFFER* ppCompiledShader,
+				    LPD3DXBUFFER* ppCompilationErrors);
+HRESULT WINAPI D3DXAssembleShaderFromFileW(LPCWSTR pSrcFile, DWORD Flags,
+				    LPD3DXBUFFER* ppConstants,
+				    LPD3DXBUFFER* ppCompiledShader,
+				    LPD3DXBUFFER* ppCompilationErrors);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_D3DX8CORE_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx8math.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx8math.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx8math.h	(revision 16410)
@@ -0,0 +1,413 @@
+/*
+ * Copyright (C) 2007 David Adam
+ * Copyright (C) 2007 Tony Wasserka
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <d3dx8.h>
+
+#ifndef __D3DX8MATH_H__
+#define __D3DX8MATH_H__
+
+#include <math.h>
+
+#define D3DX_PI    ((FLOAT)3.141592654)
+#define D3DX_1BYPI ((FLOAT)0.318309886)
+
+#define D3DXToRadian(degree) ((degree) * (D3DX_PI / 180.0f))
+#define D3DXToDegree(radian) ((radian) * (180.0f / D3DX_PI))
+
+typedef struct ID3DXMatrixStack *LPD3DXMATRIXSTACK;
+
+DEFINE_GUID(IID_ID3DXMatrixStack,
+0xe3357330, 0xcc5e, 0x11d2, 0xa4, 0x34, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
+
+typedef struct D3DXVECTOR2
+{
+#ifdef __cplusplus
+    D3DXVECTOR2();
+    D3DXVECTOR2(CONST FLOAT *pf);
+    D3DXVECTOR2(FLOAT fx, FLOAT fy);
+
+    operator FLOAT* ();
+    operator CONST FLOAT* () const;
+
+    D3DXVECTOR2& operator += (CONST D3DXVECTOR2&);
+    D3DXVECTOR2& operator -= (CONST D3DXVECTOR2&);
+    D3DXVECTOR2& operator *= (FLOAT);
+    D3DXVECTOR2& operator /= (FLOAT);
+
+    D3DXVECTOR2 operator + () const;
+    D3DXVECTOR2 operator - () const;
+
+    D3DXVECTOR2 operator + (CONST D3DXVECTOR2&) const;
+    D3DXVECTOR2 operator - (CONST D3DXVECTOR2&) const;
+    D3DXVECTOR2 operator * (FLOAT) const;
+    D3DXVECTOR2 operator / (FLOAT) const;
+
+    friend D3DXVECTOR2 operator * (FLOAT, CONST D3DXVECTOR2&);
+
+    BOOL operator == (CONST D3DXVECTOR2&) const;
+    BOOL operator != (CONST D3DXVECTOR2&) const;
+#endif /* __cplusplus */
+    FLOAT x, y;
+} D3DXVECTOR2, *LPD3DXVECTOR2;
+
+#ifdef __cplusplus
+typedef struct D3DXVECTOR3 : public D3DVECTOR
+{
+    D3DXVECTOR3();
+    D3DXVECTOR3(CONST FLOAT *pf);
+    D3DXVECTOR3(CONST D3DVECTOR& v);
+    D3DXVECTOR3(FLOAT fx, FLOAT fy, FLOAT fz);
+
+    operator FLOAT* ();
+    operator CONST FLOAT* () const;
+
+    D3DXVECTOR3& operator += (CONST D3DXVECTOR3&);
+    D3DXVECTOR3& operator -= (CONST D3DXVECTOR3&);
+    D3DXVECTOR3& operator *= (FLOAT);
+    D3DXVECTOR3& operator /= (FLOAT);
+
+    D3DXVECTOR3 operator + () const;
+    D3DXVECTOR3 operator - () const;
+
+    D3DXVECTOR3 operator + (CONST D3DXVECTOR3&) const;
+    D3DXVECTOR3 operator - (CONST D3DXVECTOR3&) const;
+    D3DXVECTOR3 operator * (FLOAT) const;
+    D3DXVECTOR3 operator / (FLOAT) const;
+
+    friend D3DXVECTOR3 operator * (FLOAT, CONST struct D3DXVECTOR3&);
+
+    BOOL operator == (CONST D3DXVECTOR3&) const;
+    BOOL operator != (CONST D3DXVECTOR3&) const;
+} D3DXVECTOR3, *LPD3DXVECTOR3;
+#else /* !__cplusplus */
+typedef struct _D3DVECTOR D3DXVECTOR3, *LPD3DXVECTOR3;
+#endif /* !__cplusplus */
+
+typedef struct D3DXVECTOR4
+{
+#ifdef __cplusplus
+    D3DXVECTOR4();
+    D3DXVECTOR4(CONST FLOAT *pf);
+    D3DXVECTOR4(FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw);
+
+    operator FLOAT* ();
+    operator CONST FLOAT* () const;
+
+    D3DXVECTOR4& operator += (CONST D3DXVECTOR4&);
+    D3DXVECTOR4& operator -= (CONST D3DXVECTOR4&);
+    D3DXVECTOR4& operator *= (FLOAT);
+    D3DXVECTOR4& operator /= (FLOAT);
+
+    D3DXVECTOR4 operator + () const;
+    D3DXVECTOR4 operator - () const;
+
+    D3DXVECTOR4 operator + (CONST D3DXVECTOR4&) const;
+    D3DXVECTOR4 operator - (CONST D3DXVECTOR4&) const;
+    D3DXVECTOR4 operator * (FLOAT) const;
+    D3DXVECTOR4 operator / (FLOAT) const;
+
+    friend D3DXVECTOR4 operator * (FLOAT, CONST D3DXVECTOR4&);
+
+    BOOL operator == (CONST D3DXVECTOR4&) const;
+    BOOL operator != (CONST D3DXVECTOR4&) const;
+#endif /* __cplusplus */
+    FLOAT x, y, z, w;
+} D3DXVECTOR4, *LPD3DXVECTOR4;
+
+#ifdef __cplusplus
+typedef struct D3DXMATRIX : public D3DMATRIX
+{
+    D3DXMATRIX();
+    D3DXMATRIX(CONST FLOAT *pf);
+    D3DXMATRIX(CONST D3DMATRIX& mat);
+    D3DXMATRIX(FLOAT f11, FLOAT f12, FLOAT f13, FLOAT f14,
+               FLOAT f21, FLOAT f22, FLOAT f23, FLOAT f24,
+               FLOAT f31, FLOAT f32, FLOAT f33, FLOAT f34,
+               FLOAT f41, FLOAT f42, FLOAT f43, FLOAT f44);
+
+    FLOAT& operator () (UINT row, UINT col);
+    FLOAT operator () (UINT row, UINT col) const;
+
+    operator FLOAT* ();
+    operator CONST FLOAT* () const;
+
+    D3DXMATRIX& operator *= (CONST D3DXMATRIX&);
+    D3DXMATRIX& operator += (CONST D3DXMATRIX&);
+    D3DXMATRIX& operator -= (CONST D3DXMATRIX&);
+    D3DXMATRIX& operator *= (FLOAT);
+    D3DXMATRIX& operator /= (FLOAT);
+
+    D3DXMATRIX operator + () const;
+    D3DXMATRIX operator - () const;
+
+    D3DXMATRIX operator * (CONST D3DXMATRIX&) const;
+    D3DXMATRIX operator + (CONST D3DXMATRIX&) const;
+    D3DXMATRIX operator - (CONST D3DXMATRIX&) const;
+    D3DXMATRIX operator * (FLOAT) const;
+    D3DXMATRIX operator / (FLOAT) const;
+
+    friend D3DXMATRIX operator * (FLOAT, CONST D3DXMATRIX&);
+
+    BOOL operator == (CONST D3DXMATRIX&) const;
+    BOOL operator != (CONST D3DXMATRIX&) const;
+} D3DXMATRIX, *LPD3DXMATRIX;
+#else /* !__cplusplus */
+typedef struct _D3DMATRIX D3DXMATRIX, *LPD3DXMATRIX;
+#endif /* !__cplusplus */
+
+typedef struct D3DXQUATERNION
+{
+#ifdef __cplusplus
+    D3DXQUATERNION();
+    D3DXQUATERNION(CONST FLOAT *pf);
+    D3DXQUATERNION(FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw);
+
+    operator FLOAT* ();
+    operator CONST FLOAT* () const;
+
+    D3DXQUATERNION& operator += (CONST D3DXQUATERNION&);
+    D3DXQUATERNION& operator -= (CONST D3DXQUATERNION&);
+    D3DXQUATERNION& operator *= (CONST D3DXQUATERNION&);
+    D3DXQUATERNION& operator *= (FLOAT);
+    D3DXQUATERNION& operator /= (FLOAT);
+
+    D3DXQUATERNION  operator + () const;
+    D3DXQUATERNION  operator - () const;
+
+    D3DXQUATERNION operator + (CONST D3DXQUATERNION&) const;
+    D3DXQUATERNION operator - (CONST D3DXQUATERNION&) const;
+    D3DXQUATERNION operator * (CONST D3DXQUATERNION&) const;
+    D3DXQUATERNION operator * (FLOAT) const;
+    D3DXQUATERNION operator / (FLOAT) const;
+
+    friend D3DXQUATERNION operator * (FLOAT, CONST D3DXQUATERNION&);
+
+    BOOL operator == (CONST D3DXQUATERNION&) const;
+    BOOL operator != (CONST D3DXQUATERNION&) const;
+#endif /* __cplusplus */
+    FLOAT x, y, z, w;
+} D3DXQUATERNION, *LPD3DXQUATERNION;
+
+typedef struct D3DXPLANE
+{
+#ifdef __cplusplus
+    D3DXPLANE();
+    D3DXPLANE(CONST FLOAT *pf);
+    D3DXPLANE(FLOAT fa, FLOAT fb, FLOAT fc, FLOAT fd);
+
+    operator FLOAT* ();
+    operator CONST FLOAT* () const;
+
+    D3DXPLANE operator + () const;
+    D3DXPLANE operator - () const;
+
+    BOOL operator == (CONST D3DXPLANE&) const;
+    BOOL operator != (CONST D3DXPLANE&) const;
+#endif /* __cplusplus */
+    FLOAT a, b, c, d;
+} D3DXPLANE, *LPD3DXPLANE;
+
+typedef struct D3DXCOLOR
+{
+#ifdef __cplusplus
+    D3DXCOLOR();
+    D3DXCOLOR(DWORD col);
+    D3DXCOLOR(CONST FLOAT *pf);
+    D3DXCOLOR(CONST D3DCOLORVALUE& col);
+    D3DXCOLOR(FLOAT fr, FLOAT fg, FLOAT fb, FLOAT fa);
+
+    operator DWORD () const;
+
+    operator FLOAT* ();
+    operator CONST FLOAT* () const;
+
+    operator D3DCOLORVALUE* ();
+    operator CONST D3DCOLORVALUE* () const;
+
+    operator D3DCOLORVALUE& ();
+    operator CONST D3DCOLORVALUE& () const;
+
+    D3DXCOLOR& operator += (CONST D3DXCOLOR&);
+    D3DXCOLOR& operator -= (CONST D3DXCOLOR&);
+    D3DXCOLOR& operator *= (FLOAT);
+    D3DXCOLOR& operator /= (FLOAT);
+
+    D3DXCOLOR operator + () const;
+    D3DXCOLOR operator - () const;
+
+    D3DXCOLOR operator + (CONST D3DXCOLOR&) const;
+    D3DXCOLOR operator - (CONST D3DXCOLOR&) const;
+    D3DXCOLOR operator * (FLOAT) const;
+    D3DXCOLOR operator / (FLOAT) const;
+
+    friend D3DXCOLOR operator * (FLOAT, CONST D3DXCOLOR&);
+
+    BOOL operator == (CONST D3DXCOLOR&) const;
+    BOOL operator != (CONST D3DXCOLOR&) const;
+#endif /* __cplusplus */
+    FLOAT r, g, b, a;
+} D3DXCOLOR, *LPD3DXCOLOR;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+D3DXCOLOR* WINAPI D3DXColorAdjustContrast(D3DXCOLOR *pout, CONST D3DXCOLOR *pc, FLOAT s);
+D3DXCOLOR* WINAPI D3DXColorAdjustSaturation(D3DXCOLOR *pout, CONST D3DXCOLOR *pc, FLOAT s);
+
+D3DXMATRIX* WINAPI D3DXMatrixAffineTransformation(D3DXMATRIX *pout, FLOAT scaling, CONST D3DXVECTOR3 *rotationcenter, CONST D3DXQUATERNION *rotation, CONST D3DXVECTOR3 *translation);
+FLOAT WINAPI D3DXMatrixfDeterminant(CONST D3DXMATRIX *pm);
+D3DXMATRIX* WINAPI D3DXMatrixInverse(D3DXMATRIX *pout, FLOAT *pdeterminant, CONST D3DXMATRIX *pm);
+D3DXMATRIX* WINAPI D3DXMatrixLookAtLH(D3DXMATRIX *pout, CONST D3DXVECTOR3 *peye, CONST D3DXVECTOR3 *pat, CONST D3DXVECTOR3 *pup);
+D3DXMATRIX* WINAPI D3DXMatrixLookAtRH(D3DXMATRIX *pout, CONST D3DXVECTOR3 *peye, CONST D3DXVECTOR3 *pat, CONST D3DXVECTOR3 *pup);
+D3DXMATRIX* WINAPI D3DXMatrixMultiply(D3DXMATRIX *pout, CONST D3DXMATRIX *pm1, CONST D3DXMATRIX *pm2);
+D3DXMATRIX* WINAPI D3DXMatrixMultiplyTranspose(D3DXMATRIX *pout, CONST D3DXMATRIX *pm1, CONST D3DXMATRIX *pm2);
+D3DXMATRIX* WINAPI D3DXMatrixOrthoLH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
+D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterLH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
+D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterRH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
+D3DXMATRIX* WINAPI D3DXMatrixOrthoLH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
+D3DXMATRIX* WINAPI D3DXMatrixOrthoRH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveFovLH(D3DXMATRIX *pout, FLOAT fovy, FLOAT aspect, FLOAT zn, FLOAT zf);
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveFovRH(D3DXMATRIX *pout, FLOAT fovy, FLOAT aspect, FLOAT zn, FLOAT zf);
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveLH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenterLH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenterRH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveRH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
+D3DXMATRIX* WINAPI D3DXMatrixReflect(D3DXMATRIX *pout, CONST D3DXPLANE *pplane);
+D3DXMATRIX* WINAPI D3DXMatrixRotationAxis(D3DXMATRIX *pout, CONST D3DXVECTOR3 *pv, FLOAT angle);
+D3DXMATRIX* WINAPI D3DXMatrixRotationQuaternion(D3DXMATRIX *pout, CONST D3DXQUATERNION *pq);
+D3DXMATRIX* WINAPI D3DXMatrixRotationX(D3DXMATRIX *pout, FLOAT angle);
+D3DXMATRIX* WINAPI D3DXMatrixRotationY(D3DXMATRIX *pout, FLOAT angle);
+D3DXMATRIX* WINAPI D3DXMatrixRotationYawPitchRoll(D3DXMATRIX *pout, FLOAT yaw, FLOAT pitch, FLOAT roll);
+D3DXMATRIX* WINAPI D3DXMatrixRotationZ(D3DXMATRIX *pout, FLOAT angle);
+D3DXMATRIX* WINAPI D3DXMatrixScaling(D3DXMATRIX *pout, FLOAT sx, FLOAT sy, FLOAT sz);
+D3DXMATRIX* WINAPI D3DXMatrixShadow(D3DXMATRIX *pout, CONST D3DXVECTOR4 *plight, CONST D3DXPLANE *pPlane);
+D3DXMATRIX* WINAPI D3DXMatrixTransformation(D3DXMATRIX *pout, CONST D3DXVECTOR3 *pscalingcenter, CONST D3DXQUATERNION *pscalingrotation, CONST D3DXVECTOR3 *pscaling, CONST D3DXVECTOR3 *protationcenter, CONST D3DXQUATERNION *protation, CONST D3DXVECTOR3 *ptranslation);
+D3DXMATRIX* WINAPI D3DXMatrixTranslation(D3DXMATRIX *pout, FLOAT x, FLOAT y, FLOAT z);
+D3DXMATRIX* WINAPI D3DXMatrixTranspose(D3DXMATRIX *pout, CONST D3DXMATRIX *pm);
+
+D3DXPLANE* WINAPI D3DXPlaneFromPointNormal(D3DXPLANE *pout, CONST D3DXVECTOR3 *pvpoint, CONST D3DXVECTOR3 *pvnormal);
+D3DXPLANE* WINAPI D3DXPlaneFromPoints(D3DXPLANE *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2, CONST D3DXVECTOR3 *pv3);
+D3DXVECTOR3* WINAPI D3DXPlaneIntersectLine(D3DXVECTOR3 *pout, CONST D3DXPLANE *pp, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2);
+D3DXPLANE* WINAPI D3DXPlaneNormalize(D3DXPLANE *pout, CONST D3DXPLANE *pp);
+D3DXPLANE* WINAPI D3DXPlaneTransform(D3DXPLANE *pout, CONST D3DXPLANE *pplane, CONST D3DXMATRIX *pm);
+
+D3DXQUATERNION* WINAPI D3DXQuaternionBaryCentric(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2, CONST D3DXQUATERNION *pq3, FLOAT f, FLOAT g);
+D3DXQUATERNION* WINAPI D3DXQuaternionExp(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq);
+D3DXQUATERNION* WINAPI D3DXQuaternionInverse(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq);
+D3DXQUATERNION* WINAPI D3DXQuaternionLn(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq);
+D3DXQUATERNION* WINAPI D3DXQuaternionMultiply(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2);
+D3DXQUATERNION* WINAPI D3DXQuaternionNormalize(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq);
+D3DXQUATERNION* WINAPI D3DXQuaternionRotationAxis(D3DXQUATERNION *pout, CONST D3DXVECTOR3 *pv, FLOAT angle);
+D3DXQUATERNION* WINAPI D3DXQuaternionRotationMatrix(D3DXQUATERNION *pout, CONST D3DXMATRIX *pm);
+D3DXQUATERNION* WINAPI D3DXQuaternionRotationYawPitchRoll(D3DXQUATERNION *pout, FLOAT yaw, FLOAT pitch, FLOAT roll);
+D3DXQUATERNION* WINAPI D3DXQuaternionSlerp(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2, FLOAT t);
+D3DXQUATERNION* WINAPI D3DXQuaternionSquad(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2, CONST D3DXQUATERNION *pq3, CONST D3DXQUATERNION *pq4, FLOAT t);
+void WINAPI D3DXQuaternionToAxisAngle(CONST D3DXQUATERNION *pq, D3DXVECTOR3 *paxis, FLOAT *pangle);
+
+D3DXVECTOR2* WINAPI D3DXVec2BaryCentric(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2, CONST D3DXVECTOR2 *pv3, FLOAT f, FLOAT g);
+D3DXVECTOR2* WINAPI D3DXVec2CatmullRom(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv0, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2, CONST D3DXVECTOR2 *pv3, FLOAT s);
+D3DXVECTOR2* WINAPI D3DXVec2Hermite(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pt1, CONST D3DXVECTOR2 *pv2, CONST D3DXVECTOR2 *pt2, FLOAT s);
+D3DXVECTOR2* WINAPI D3DXVec2Normalize(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv);
+D3DXVECTOR4* WINAPI D3DXVec2Transform(D3DXVECTOR4 *pout, CONST D3DXVECTOR2 *pv, CONST D3DXMATRIX *pm);
+D3DXVECTOR2* WINAPI D3DXVec2TransformCoord(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv, CONST D3DXMATRIX *pm);
+D3DXVECTOR2* WINAPI D3DXVec2TransformNormal(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv, CONST D3DXMATRIX *pm);
+
+D3DXVECTOR3* WINAPI D3DXVec3BaryCentric(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2, CONST D3DXVECTOR3 *pv3, FLOAT f, FLOAT g);
+D3DXVECTOR3* WINAPI D3DXVec3CatmullRom( D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv0, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2, CONST D3DXVECTOR3 *pv3, FLOAT s);
+D3DXVECTOR3* WINAPI D3DXVec3Hermite(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pt1, CONST D3DXVECTOR3 *pv2, CONST D3DXVECTOR3 *pt2, FLOAT s);
+D3DXVECTOR3* WINAPI D3DXVec3Normalize(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv);
+D3DXVECTOR3* WINAPI D3DXVec3Project(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DVIEWPORT8 *pviewport, CONST D3DXMATRIX *pprojection, CONST D3DXMATRIX *pview, CONST D3DXMATRIX *pworld);
+D3DXVECTOR4* WINAPI D3DXVec3Transform(D3DXVECTOR4 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm);
+D3DXVECTOR3* WINAPI D3DXVec3TransformCoord(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm);
+D3DXVECTOR3* WINAPI D3DXVec3TransformNormal(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm);
+D3DXVECTOR3* WINAPI D3DXVec3Unproject(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DVIEWPORT8 *pviewport, CONST D3DXMATRIX *pprojection, CONST D3DXMATRIX *pview, CONST D3DXMATRIX *pworld);
+
+D3DXVECTOR4* WINAPI D3DXVec4BaryCentric(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2, CONST D3DXVECTOR4 *pv3, FLOAT f, FLOAT g);
+D3DXVECTOR4* WINAPI D3DXVec4CatmullRom(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv0, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2, CONST D3DXVECTOR4 *pv3, FLOAT s);
+D3DXVECTOR4* WINAPI D3DXVec4Cross(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2, CONST D3DXVECTOR4 *pv3);
+D3DXVECTOR4* WINAPI D3DXVec4Hermite(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pt1, CONST D3DXVECTOR4 *pv2, CONST D3DXVECTOR4 *pt2, FLOAT s);
+D3DXVECTOR4* WINAPI D3DXVec4Normalize(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv);
+D3DXVECTOR4* WINAPI D3DXVec4Transform(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv, CONST D3DXMATRIX *pm);
+
+#ifdef __cplusplus
+}
+#endif
+
+#define INTERFACE ID3DXMatrixStack
+DECLARE_INTERFACE_(ID3DXMatrixStack, IUnknown)
+{
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID, LPVOID*) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    STDMETHOD(Pop)(THIS) PURE;
+    STDMETHOD(Push)(THIS) PURE;
+    STDMETHOD(LoadIdentity)(THIS) PURE;
+    STDMETHOD(LoadMatrix)(THIS_ CONST D3DXMATRIX *) PURE;
+    STDMETHOD(MultMatrix)(THIS_ CONST D3DXMATRIX *) PURE;
+    STDMETHOD(MultMatrixLocal)(THIS_ CONST D3DXMATRIX *) PURE;
+    STDMETHOD(RotateAxis)(THIS_ CONST D3DXVECTOR3 *, FLOAT) PURE;
+    STDMETHOD(RotateAxisLocal)(THIS_ CONST D3DXVECTOR3 *, FLOAT) PURE;
+    STDMETHOD(RotateYawPitchRoll)(THIS_ FLOAT, FLOAT, FLOAT) PURE;
+    STDMETHOD(RotateYawPitchRollLocal)(THIS_ FLOAT, FLOAT, FLOAT) PURE;
+    STDMETHOD(Scale)(THIS_ FLOAT, FLOAT, FLOAT) PURE;
+    STDMETHOD(ScaleLocal)(THIS_ FLOAT, FLOAT, FLOAT) PURE;
+    STDMETHOD(Translate)(THIS_ FLOAT, FLOAT, FLOAT) PURE;
+    STDMETHOD(TranslateLocal)(THIS_ FLOAT, FLOAT, FLOAT) PURE;
+    STDMETHOD_(LPD3DXMATRIX, GetTop)(THIS) PURE;
+};
+
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+
+#define ID3DXMatrixStack_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
+#define ID3DXMatrixStack_AddRef(p)                        (p)->lpVtbl->AddRef(p)
+#define ID3DXMatrixStack_Release(p)                       (p)->lpVtbl->Release(p)
+#define ID3DXMatrixStack_Pop(p)                           (p)->lpVtbl->Pop(p)
+#define ID3DXMatrixStack_Push(p)                          (p)->lpVtbl->Push(p)
+#define ID3DXMatrixStack_LoadIdentity(p)                  (p)->lpVtbl->LoadIdentity(p)
+#define ID3DXMatrixStack_LoadMatrix(p,a)                  (p)->lpVtbl->LoadMatrix(p,a)
+#define ID3DXMatrixStack_MultMatrix(p,a)                  (p)->lpVtbl->MultMatrix(p,a)
+#define ID3DXMatrixStack_MultMatrixLocal(p,a)             (p)->lpVtbl->MultMatrixLocal(p,a)
+#define ID3DXMatrixStack_RotateAxis(p,a,b)                (p)->lpVtbl->RotateAxis(p,a,b)
+#define ID3DXMatrixStack_RotateAxisLocal(p,a,b)           (p)->lpVtbl->RotateAxisLocal(p,a,b)
+#define ID3DXMatrixStack_RotateYawPitchRoll(p,a,b,c)      (p)->lpVtbl->RotateYawPitchRoll(p,a,b,c)
+#define ID3DXMatrixStack_RotateYawPitchRollLocal(p,a,b,c) (p)->lpVtbl->RotateYawPitchRollLocal(p,a,b,c)
+#define ID3DXMatrixStack_Scale(p,a,b,c)                   (p)->lpVtbl->Scale(p,a,b,c)
+#define ID3DXMatrixStack_ScaleLocal(p,a,b,c)              (p)->lpVtbl->ScaleLocal(p,a,b,c)
+#define ID3DXMatrixStack_Translate(p,a,b,c)               (p)->lpVtbl->Translate(p,a,b,c)
+#define ID3DXMatrixStack_TranslateLocal(p,a,b,c)          (p)->lpVtbl->TranslateLocal(p,a,b,c)
+#define ID3DXMatrixStack_GetTop(p)                        (p)->lpVtbl->GetTop(p)
+
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+HRESULT WINAPI D3DXCreateMatrixStack(DWORD flags, LPD3DXMATRIXSTACK* ppstack);
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <d3dx8math.inl>
+
+#endif /* __D3DX8MATH_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx8math.inl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx8math.inl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx8math.inl	(revision 16410)
@@ -0,0 +1,1268 @@
+/*
+ * Copyright (C) 2007 David Adam
+ * Copyright (C) 2007 Tony Wasserka
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __D3DX8MATH_INL__
+#define __D3DX8MATH_INL__
+
+/* constructors & operators */
+#ifdef __cplusplus
+
+inline D3DXVECTOR2::D3DXVECTOR2()
+{
+}
+
+inline D3DXVECTOR2::D3DXVECTOR2(CONST FLOAT *pf)
+{
+    if(!pf) return;
+    x = pf[0];
+    y = pf[1];
+}
+
+inline D3DXVECTOR2::D3DXVECTOR2(FLOAT fx, FLOAT fy)
+{
+    x = fx;
+    y = fy;
+}
+
+inline D3DXVECTOR2::operator FLOAT* ()
+{
+    return (FLOAT*)&x;
+}
+
+inline D3DXVECTOR2::operator CONST FLOAT* () const
+{
+    return (CONST FLOAT*)&x;
+}
+
+inline D3DXVECTOR2& D3DXVECTOR2::operator += (CONST D3DXVECTOR2& v)
+{
+    x += v.x;
+    y += v.y;
+    return *this;
+}
+
+inline D3DXVECTOR2& D3DXVECTOR2::operator -= (CONST D3DXVECTOR2& v)
+{
+    x -= v.x;
+    y -= v.y;
+    return *this;
+}
+
+inline D3DXVECTOR2& D3DXVECTOR2::operator *= (FLOAT f)
+{
+    x *= f;
+    y *= f;
+    return *this;
+}
+
+inline D3DXVECTOR2& D3DXVECTOR2::operator /= (FLOAT f)
+{
+    x /= f;
+    y /= f;
+    return *this;
+}
+
+inline D3DXVECTOR2 D3DXVECTOR2::operator + () const
+{
+    return *this;
+}
+
+inline D3DXVECTOR2 D3DXVECTOR2::operator - () const
+{
+    return D3DXVECTOR2(-x, -y);
+}
+
+inline D3DXVECTOR2 D3DXVECTOR2::operator + (CONST D3DXVECTOR2& v) const
+{
+    return D3DXVECTOR2(x + v.x, y + v.y);
+}
+
+inline D3DXVECTOR2 D3DXVECTOR2::operator - (CONST D3DXVECTOR2& v) const
+{
+    return D3DXVECTOR2(x - v.x, y - v.y);
+}
+
+inline D3DXVECTOR2 D3DXVECTOR2::operator * (FLOAT f) const
+{
+    return D3DXVECTOR2(x * f, y * f);
+}
+
+inline D3DXVECTOR2 D3DXVECTOR2::operator / (FLOAT f) const
+{
+    return D3DXVECTOR2(x / f, y / f);
+}
+
+inline D3DXVECTOR2 operator * (FLOAT f, CONST D3DXVECTOR2& v)
+{
+    return D3DXVECTOR2(f * v.x, f * v.y);
+}
+
+inline BOOL D3DXVECTOR2::operator == (CONST D3DXVECTOR2& v) const
+{
+    return x == v.x && y == v.y;
+}
+
+inline BOOL D3DXVECTOR2::operator != (CONST D3DXVECTOR2& v) const
+{
+    return x != v.x || y != v.y;
+}
+
+inline D3DXVECTOR3::D3DXVECTOR3()
+{
+}
+
+inline D3DXVECTOR3::D3DXVECTOR3(CONST FLOAT *pf)
+{
+    if(!pf) return;
+    x = pf[0];
+    y = pf[1];
+    z = pf[2];
+}
+
+inline D3DXVECTOR3::D3DXVECTOR3(CONST D3DVECTOR& v)
+{
+    x = v.x;
+    y = v.y;
+    z = v.z;
+}
+
+inline D3DXVECTOR3::D3DXVECTOR3(FLOAT fx, FLOAT fy, FLOAT fz)
+{
+    x = fx;
+    y = fy;
+    z = fz;
+}
+
+inline D3DXVECTOR3::operator FLOAT* ()
+{
+    return (FLOAT*)&x;
+}
+
+inline D3DXVECTOR3::operator CONST FLOAT* () const
+{
+    return (CONST FLOAT*)&x;
+}
+
+inline D3DXVECTOR3& D3DXVECTOR3::operator += (CONST D3DXVECTOR3& v)
+{
+    x += v.x;
+    y += v.y;
+    z += v.z;
+    return *this;
+}
+
+inline D3DXVECTOR3& D3DXVECTOR3::operator -= (CONST D3DXVECTOR3& v)
+{
+    x -= v.x;
+    y -= v.y;
+    z -= v.z;
+    return *this;
+}
+
+inline D3DXVECTOR3& D3DXVECTOR3::operator *= (FLOAT f)
+{
+    x *= f;
+    y *= f;
+    z *= f;
+    return *this;
+}
+
+inline D3DXVECTOR3& D3DXVECTOR3::operator /= (FLOAT f)
+{
+    x /= f;
+    y /= f;
+    z /= f;
+    return *this;
+}
+
+inline D3DXVECTOR3 D3DXVECTOR3::operator + () const
+{
+    return *this;
+}
+
+inline D3DXVECTOR3 D3DXVECTOR3::operator - () const
+{
+    return D3DXVECTOR3(-x, -y, -z);
+}
+
+inline D3DXVECTOR3 D3DXVECTOR3::operator + (CONST D3DXVECTOR3& v) const
+{
+    return D3DXVECTOR3(x + v.x, y + v.y, z + v.z);
+}
+
+inline D3DXVECTOR3 D3DXVECTOR3::operator - (CONST D3DXVECTOR3& v) const
+{
+    return D3DXVECTOR3(x - v.x, y - v.y, z - v.z);
+}
+
+inline D3DXVECTOR3 D3DXVECTOR3::operator * (FLOAT f) const
+{
+    return D3DXVECTOR3(x * f, y * f, z * f);
+}
+
+inline D3DXVECTOR3 D3DXVECTOR3::operator / (FLOAT f) const
+{
+    return D3DXVECTOR3(x / f, y / f, z / f);
+}
+
+inline D3DXVECTOR3 operator * (FLOAT f, CONST D3DXVECTOR3& v)
+{
+    return D3DXVECTOR3(f * v.x, f * v.y, f * v.z);
+}
+
+inline BOOL D3DXVECTOR3::operator == (CONST D3DXVECTOR3& v) const
+{
+    return x == v.x && y == v.y && z == v.z;
+}
+
+inline BOOL D3DXVECTOR3::operator != (CONST D3DXVECTOR3& v) const
+{
+    return x != v.x || y != v.y || z != v.z;
+}
+
+inline D3DXVECTOR4::D3DXVECTOR4()
+{
+}
+
+inline D3DXVECTOR4::D3DXVECTOR4(CONST FLOAT *pf)
+{
+    if(!pf) return;
+    x = pf[0];
+    y = pf[1];
+    z = pf[2];
+    w = pf[3];
+}
+
+inline D3DXVECTOR4::D3DXVECTOR4(FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw)
+{
+    x = fx;
+    y = fy;
+    z = fz;
+    w = fw;
+}
+
+inline D3DXVECTOR4::operator FLOAT* ()
+{
+    return (FLOAT*)&x;
+}
+
+inline D3DXVECTOR4::operator CONST FLOAT* () const
+{
+    return (CONST FLOAT*)&x;
+}
+
+inline D3DXVECTOR4& D3DXVECTOR4::operator += (CONST D3DXVECTOR4& v)
+{
+    x += v.x;
+    y += v.y;
+    z += v.z;
+    w += v.w;
+    return *this;
+}
+
+inline D3DXVECTOR4& D3DXVECTOR4::operator -= (CONST D3DXVECTOR4& v)
+{
+    x -= v.x;
+    y -= v.y;
+    z -= v.z;
+    w -= v.w;
+    return *this;
+}
+
+inline D3DXVECTOR4& D3DXVECTOR4::operator *= (FLOAT f)
+{
+    x *= f;
+    y *= f;
+    z *= f;
+    w *= f;
+    return *this;
+}
+
+inline D3DXVECTOR4& D3DXVECTOR4::operator /= (FLOAT f)
+{
+    x /= f;
+    y /= f;
+    z /= f;
+    w /= f;
+    return *this;
+}
+
+inline D3DXVECTOR4 D3DXVECTOR4::operator + () const
+{
+    return *this;
+}
+
+inline D3DXVECTOR4 D3DXVECTOR4::operator - () const
+{
+    return D3DXVECTOR4(-x, -y, -z, -w);
+}
+
+inline D3DXVECTOR4 D3DXVECTOR4::operator + (CONST D3DXVECTOR4& v) const
+{
+    return D3DXVECTOR4(x + v.x, y + v.y, z + v.z, w + v.w);
+}
+
+inline D3DXVECTOR4 D3DXVECTOR4::operator - (CONST D3DXVECTOR4& v) const
+{
+    return D3DXVECTOR4(x - v.x, y - v.y, z - v.z, w - v.w);
+}
+
+inline D3DXVECTOR4 D3DXVECTOR4::operator * (FLOAT f) const
+{
+    return D3DXVECTOR4(x * f, y * f, z * f, w * f);
+}
+
+inline D3DXVECTOR4 D3DXVECTOR4::operator / (FLOAT f) const
+{
+    return D3DXVECTOR4(x / f, y / f, z / f, w / f);
+}
+
+inline D3DXVECTOR4 operator * (FLOAT f, CONST D3DXVECTOR4& v)
+{
+    return D3DXVECTOR4(f * v.x, f * v.y, f * v.z, f * v.w);
+}
+
+inline BOOL D3DXVECTOR4::operator == (CONST D3DXVECTOR4& v) const
+{
+    return x == v.x && y == v.y && z == v.z && w == v.w;
+}
+
+inline BOOL D3DXVECTOR4::operator != (CONST D3DXVECTOR4& v) const
+{
+    return x != v.x || y != v.y || z != v.z || w != v.w;
+}
+
+inline D3DXMATRIX::D3DXMATRIX()
+{
+}
+
+inline D3DXMATRIX::D3DXMATRIX(CONST FLOAT *pf)
+{
+    if(!pf) return;
+    memcpy(&_11, pf, sizeof(D3DXMATRIX));
+}
+
+inline D3DXMATRIX::D3DXMATRIX(CONST D3DMATRIX& mat)
+{
+    memcpy(&_11, &mat, sizeof(D3DXMATRIX));
+}
+
+inline D3DXMATRIX::D3DXMATRIX(FLOAT f11, FLOAT f12, FLOAT f13, FLOAT f14,
+                              FLOAT f21, FLOAT f22, FLOAT f23, FLOAT f24,
+                              FLOAT f31, FLOAT f32, FLOAT f33, FLOAT f34,
+                              FLOAT f41, FLOAT f42, FLOAT f43, FLOAT f44)
+{
+    _11 = f11; _12 = f12; _13 = f13; _14 = f14;
+    _21 = f21; _22 = f22; _23 = f23; _24 = f24;
+    _31 = f31; _32 = f32; _33 = f33; _34 = f34;
+    _41 = f41; _42 = f42; _43 = f43; _44 = f44;
+}
+
+inline FLOAT& D3DXMATRIX::operator () (UINT row, UINT col)
+{
+    return m[row][col];
+}
+
+inline FLOAT D3DXMATRIX::operator () (UINT row, UINT col) const
+{
+    return m[row][col];
+}
+
+inline D3DXMATRIX::operator FLOAT* ()
+{
+    return (FLOAT*)&_11;
+}
+
+inline D3DXMATRIX::operator CONST FLOAT* () const
+{
+    return (CONST FLOAT*)&_11;
+}
+
+inline D3DXMATRIX& D3DXMATRIX::operator *= (CONST D3DXMATRIX& mat)
+{
+    D3DXMatrixMultiply(this, this, &mat);
+    return *this;
+}
+
+inline D3DXMATRIX& D3DXMATRIX::operator += (CONST D3DXMATRIX& mat)
+{
+    _11 += mat._11; _12 += mat._12; _13 += mat._13; _14 += mat._14;
+    _21 += mat._21; _22 += mat._22; _23 += mat._23; _24 += mat._24;
+    _31 += mat._31; _32 += mat._32; _33 += mat._33; _34 += mat._34;
+    _41 += mat._41; _42 += mat._42; _43 += mat._43; _44 += mat._44;
+    return *this;
+}
+
+inline D3DXMATRIX& D3DXMATRIX::operator -= (CONST D3DXMATRIX& mat)
+{
+    _11 -= mat._11; _12 -= mat._12; _13 -= mat._13; _14 -= mat._14;
+    _21 -= mat._21; _22 -= mat._22; _23 -= mat._23; _24 -= mat._24;
+    _31 -= mat._31; _32 -= mat._32; _33 -= mat._33; _34 -= mat._34;
+    _41 -= mat._41; _42 -= mat._42; _43 -= mat._43; _44 -= mat._44;
+    return *this;
+}
+
+inline D3DXMATRIX& D3DXMATRIX::operator *= (FLOAT f)
+{
+    _11 *= f; _12 *= f; _13 *= f; _14 *= f;
+    _21 *= f; _22 *= f; _23 *= f; _24 *= f;
+    _31 *= f; _32 *= f; _33 *= f; _34 *= f;
+    _41 *= f; _42 *= f; _43 *= f; _44 *= f;
+    return *this;
+}
+
+inline D3DXMATRIX& D3DXMATRIX::operator /= (FLOAT f)
+{
+    FLOAT inv = 1.0f / f;
+    _11 *= inv; _12 *= inv; _13 *= inv; _14 *= inv;
+    _21 *= inv; _22 *= inv; _23 *= inv; _24 *= inv;
+    _31 *= inv; _32 *= inv; _33 *= inv; _34 *= inv;
+    _41 *= inv; _42 *= inv; _43 *= inv; _44 *= inv;
+    return *this;
+}
+
+inline D3DXMATRIX D3DXMATRIX::operator + () const
+{
+    return *this;
+}
+
+inline D3DXMATRIX D3DXMATRIX::operator - () const
+{
+    return D3DXMATRIX(-_11, -_12, -_13, -_14,
+                      -_21, -_22, -_23, -_24,
+                      -_31, -_32, -_33, -_34,
+                      -_41, -_42, -_43, -_44);
+}
+
+inline D3DXMATRIX D3DXMATRIX::operator * (CONST D3DXMATRIX& mat) const
+{
+    D3DXMATRIX buf;
+    D3DXMatrixMultiply(&buf, this, &mat);
+    return buf;
+}
+
+inline D3DXMATRIX D3DXMATRIX::operator + (CONST D3DXMATRIX& mat) const
+{
+    return D3DXMATRIX(_11 + mat._11, _12 + mat._12, _13 + mat._13, _14 + mat._14,
+                      _21 + mat._21, _22 + mat._22, _23 + mat._23, _24 + mat._24,
+                      _31 + mat._31, _32 + mat._32, _33 + mat._33, _34 + mat._34,
+                      _41 + mat._41, _42 + mat._42, _43 + mat._43, _44 + mat._44);
+}
+
+inline D3DXMATRIX D3DXMATRIX::operator - (CONST D3DXMATRIX& mat) const
+{
+    return D3DXMATRIX(_11 - mat._11, _12 - mat._12, _13 - mat._13, _14 - mat._14,
+                      _21 - mat._21, _22 - mat._22, _23 - mat._23, _24 - mat._24,
+                      _31 - mat._31, _32 - mat._32, _33 - mat._33, _34 - mat._34,
+                      _41 - mat._41, _42 - mat._42, _43 - mat._43, _44 - mat._44);
+}
+
+inline D3DXMATRIX D3DXMATRIX::operator * (FLOAT f) const
+{
+    return D3DXMATRIX(_11 * f, _12 * f, _13 * f, _14 * f,
+                      _21 * f, _22 * f, _23 * f, _24 * f,
+                      _31 * f, _32 * f, _33 * f, _34 * f,
+                      _41 * f, _42 * f, _43 * f, _44 * f);
+}
+
+inline D3DXMATRIX D3DXMATRIX::operator / (FLOAT f) const
+{
+    FLOAT inv = 1.0f / f;
+    return D3DXMATRIX(_11 * inv, _12 * inv, _13 * inv, _14 * inv,
+                      _21 * inv, _22 * inv, _23 * inv, _24 * inv,
+                      _31 * inv, _32 * inv, _33 * inv, _34 * inv,
+                      _41 * inv, _42 * inv, _43 * inv, _44 * inv);
+}
+
+inline D3DXMATRIX operator * (FLOAT f, CONST D3DXMATRIX& mat)
+{
+    return D3DXMATRIX(f * mat._11, f * mat._12, f * mat._13, f * mat._14,
+                      f * mat._21, f * mat._22, f * mat._23, f * mat._24,
+                      f * mat._31, f * mat._32, f * mat._33, f * mat._34,
+                      f * mat._41, f * mat._42, f * mat._43, f * mat._44);
+}
+
+inline BOOL D3DXMATRIX::operator == (CONST D3DXMATRIX& mat) const
+{
+    return (memcmp(this, &mat, sizeof(D3DXMATRIX)) == 0);
+}
+
+inline BOOL D3DXMATRIX::operator != (CONST D3DXMATRIX& mat) const
+{
+    return (memcmp(this, &mat, sizeof(D3DXMATRIX)) != 0);
+}
+
+inline D3DXQUATERNION::D3DXQUATERNION()
+{
+}
+
+inline D3DXQUATERNION::D3DXQUATERNION(CONST FLOAT *pf)
+{
+    if(!pf) return;
+    x = pf[0];
+    y = pf[1];
+    z = pf[2];
+    w = pf[3];
+}
+
+inline D3DXQUATERNION::D3DXQUATERNION(FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw)
+{
+    x = fx;
+    y = fy;
+    z = fz;
+    w = fw;
+}
+
+inline D3DXQUATERNION::operator FLOAT* ()
+{
+    return (FLOAT*)&x;
+}
+
+inline D3DXQUATERNION::operator CONST FLOAT* () const
+{
+    return (CONST FLOAT*)&x;
+}
+
+inline D3DXQUATERNION& D3DXQUATERNION::operator += (CONST D3DXQUATERNION& quat)
+{
+    x += quat.x;
+    y += quat.y;
+    z += quat.z;
+    w += quat.w;
+    return *this;
+}
+
+inline D3DXQUATERNION& D3DXQUATERNION::operator -= (CONST D3DXQUATERNION& quat)
+{
+    x -= quat.x;
+    y -= quat.y;
+    z -= quat.z;
+    w -= quat.w;
+    return *this;
+}
+
+/* TODO: uncomment this when D3DXQuaternionMultiply has been implemented
+inline D3DXQUATERNION& D3DXQUATERNION::operator *= (CONST D3DXQUATERNION& quat)
+{
+    D3DXQuaternionMultiply(this, this, &quat);
+    return *this;
+}
+*/
+
+inline D3DXQUATERNION& D3DXQUATERNION::operator *= (FLOAT f)
+{
+    x *= f;
+    y *= f;
+    z *= f;
+    w *= f;
+    return *this;
+}
+
+inline D3DXQUATERNION& D3DXQUATERNION::operator /= (FLOAT f)
+{
+    FLOAT inv = 1.0f / f;
+    x *= inv;
+    y *= inv;
+    z *= inv;
+    w *= inv;
+    return *this;
+}
+
+inline D3DXQUATERNION D3DXQUATERNION::operator + () const
+{
+    return *this;
+}
+
+inline D3DXQUATERNION D3DXQUATERNION::operator - () const
+{
+    return D3DXQUATERNION(-x, -y, -z, -w);
+}
+
+inline D3DXQUATERNION D3DXQUATERNION::operator + (CONST D3DXQUATERNION& quat) const
+{
+    return D3DXQUATERNION(x + quat.x, y + quat.y, z + quat.z, w + quat.w);
+}
+
+inline D3DXQUATERNION D3DXQUATERNION::operator - (CONST D3DXQUATERNION& quat) const
+{
+    return D3DXQUATERNION(x - quat.x, y - quat.y, z - quat.z, w - quat.w);
+}
+
+/* TODO: uncomment this when D3DXQuaternionMultiply has been implemented
+inline D3DXQUATERNION D3DXQUATERNION::operator * (CONST D3DXQUATERNION& quat) const
+{
+    D3DXQUATERNION buf;
+    D3DXQuaternionMultiply(&buf, this, &quat);
+    return buf;
+}
+*/
+
+inline D3DXQUATERNION D3DXQUATERNION::operator * (FLOAT f) const
+{
+    return D3DXQUATERNION(x * f, y * f, z * f, w * f);
+}
+
+inline D3DXQUATERNION D3DXQUATERNION::operator / (FLOAT f) const
+{
+    FLOAT inv = 1.0f / f;
+    return D3DXQUATERNION(x * inv, y * inv, z * inv, w * inv);
+}
+
+inline D3DXQUATERNION operator * (FLOAT f, CONST D3DXQUATERNION& quat)
+{
+    return D3DXQUATERNION(f * quat.x, f * quat.y, f * quat.z, f * quat.w);
+}
+
+inline BOOL D3DXQUATERNION::operator == (CONST D3DXQUATERNION& quat) const
+{
+    return x == quat.x && y == quat.y && z == quat.z && w == quat.w;
+}
+
+inline BOOL D3DXQUATERNION::operator != (CONST D3DXQUATERNION& quat) const
+{
+    return x != quat.x || y != quat.y || z != quat.z || w != quat.w;
+}
+
+inline D3DXPLANE::D3DXPLANE()
+{
+}
+
+inline D3DXPLANE::D3DXPLANE(CONST FLOAT *pf)
+{
+    if(!pf) return;
+    a = pf[0];
+    b = pf[1];
+    c = pf[2];
+    d = pf[3];
+}
+
+inline D3DXPLANE::D3DXPLANE(FLOAT fa, FLOAT fb, FLOAT fc, FLOAT fd)
+{
+    a = fa;
+    b = fb;
+    c = fc;
+    d = fd;
+}
+
+inline D3DXPLANE::operator FLOAT* ()
+{
+    return (FLOAT*)&a;
+}
+
+inline D3DXPLANE::operator CONST FLOAT* () const
+{
+    return (CONST FLOAT*)&a;
+}
+
+inline D3DXPLANE D3DXPLANE::operator + () const
+{
+    return *this;
+}
+
+inline D3DXPLANE D3DXPLANE::operator - () const
+{
+    return D3DXPLANE(-a, -b, -c, -d);
+}
+
+inline BOOL D3DXPLANE::operator == (CONST D3DXPLANE& pl) const
+{
+    return a == pl.a && b == pl.b && c == pl.c && d == pl.d;
+}
+
+inline BOOL D3DXPLANE::operator != (CONST D3DXPLANE& pl) const
+{
+    return a != pl.a || b != pl.b || c != pl.c || d != pl.d;
+}
+
+inline D3DXCOLOR::D3DXCOLOR()
+{
+}
+
+inline D3DXCOLOR::D3DXCOLOR(DWORD col)
+{
+    CONST FLOAT f = 1.0f / 255.0f;
+    r = f * (FLOAT)(unsigned char)(col >> 16);
+    g = f * (FLOAT)(unsigned char)(col >>  8);
+    b = f * (FLOAT)(unsigned char)col;
+    a = f * (FLOAT)(unsigned char)(col >> 24);
+}
+
+inline D3DXCOLOR::D3DXCOLOR(CONST FLOAT *pf)
+{
+    if(!pf) return;
+    r = pf[0];
+    g = pf[1];
+    b = pf[2];
+    a = pf[3];
+}
+
+inline D3DXCOLOR::D3DXCOLOR(CONST D3DCOLORVALUE& col)
+{
+    r = col.r;
+    g = col.g;
+    b = col.b;
+    a = col.a;
+}
+
+inline D3DXCOLOR::D3DXCOLOR(FLOAT fr, FLOAT fg, FLOAT fb, FLOAT fa)
+{
+    r = fr;
+    g = fg;
+    b = fb;
+    a = fa;
+}
+
+inline D3DXCOLOR::operator DWORD () const
+{
+    DWORD _r = r >= 1.0f ? 0xff : r <= 0.0f ? 0x00 : (DWORD)(r * 255.0f + 0.5f);
+    DWORD _g = g >= 1.0f ? 0xff : g <= 0.0f ? 0x00 : (DWORD)(g * 255.0f + 0.5f);
+    DWORD _b = b >= 1.0f ? 0xff : b <= 0.0f ? 0x00 : (DWORD)(b * 255.0f + 0.5f);
+    DWORD _a = a >= 1.0f ? 0xff : a <= 0.0f ? 0x00 : (DWORD)(a * 255.0f + 0.5f);
+
+    return (_a << 24) | (_r << 16) | (_g << 8) | _b;
+}
+
+inline D3DXCOLOR::operator FLOAT * ()
+{
+    return (FLOAT*)&r;
+}
+
+inline D3DXCOLOR::operator CONST FLOAT * () const
+{
+    return (CONST FLOAT*)&r;
+}
+
+inline D3DXCOLOR::operator D3DCOLORVALUE * ()
+{
+    return (D3DCOLORVALUE*)&r;
+}
+
+inline D3DXCOLOR::operator CONST D3DCOLORVALUE * () const
+{
+    return (CONST D3DCOLORVALUE*)&r;
+}
+
+inline D3DXCOLOR::operator D3DCOLORVALUE& ()
+{
+    return *((D3DCOLORVALUE*)&r);
+}
+
+inline D3DXCOLOR::operator CONST D3DCOLORVALUE& () const
+{
+    return *((CONST D3DCOLORVALUE*)&r);
+}
+
+inline D3DXCOLOR& D3DXCOLOR::operator += (CONST D3DXCOLOR& col)
+{
+    r += col.r;
+    g += col.g;
+    b += col.b;
+    a += col.a;
+    return *this;
+}
+
+inline D3DXCOLOR& D3DXCOLOR::operator -= (CONST D3DXCOLOR& col)
+{
+    r -= col.r;
+    g -= col.g;
+    b -= col.b;
+    a -= col.a;
+    return *this;
+}
+
+inline D3DXCOLOR& D3DXCOLOR::operator *= (FLOAT f)
+{
+    r *= f;
+    g *= f;
+    b *= f;
+    a *= f;
+    return *this;
+}
+
+inline D3DXCOLOR& D3DXCOLOR::operator /= (FLOAT f)
+{
+    FLOAT inv = 1.0f / f;
+    r *= inv;
+    g *= inv;
+    b *= inv;
+    a *= inv;
+    return *this;
+}
+
+inline D3DXCOLOR D3DXCOLOR::operator + () const
+{
+    return *this;
+}
+
+inline D3DXCOLOR D3DXCOLOR::operator - () const
+{
+    return D3DXCOLOR(-r, -g, -b, -a);
+}
+
+inline D3DXCOLOR D3DXCOLOR::operator + (CONST D3DXCOLOR& col) const
+{
+    return D3DXCOLOR(r + col.r, g + col.g, b + col.b, a + col.a);
+}
+
+inline D3DXCOLOR D3DXCOLOR::operator - (CONST D3DXCOLOR& col) const
+{
+    return D3DXCOLOR(r - col.r, g - col.g, b - col.b, a - col.a);
+}
+
+inline D3DXCOLOR D3DXCOLOR::operator * (FLOAT f) const
+{
+    return D3DXCOLOR(r * f, g * f, b * f, a * f);
+}
+
+inline D3DXCOLOR D3DXCOLOR::operator / (FLOAT f) const
+{
+    FLOAT inv = 1.0f / f;
+    return D3DXCOLOR(r * inv, g * inv, b * inv, a * inv);
+}
+
+inline D3DXCOLOR operator * (FLOAT f, CONST D3DXCOLOR& col)
+{
+    return D3DXCOLOR(f * col.r, f * col.g, f * col.b, f * col.a);
+}
+
+inline BOOL D3DXCOLOR::operator == (CONST D3DXCOLOR& col) const
+{
+    return r == col.r && g == col.g && b == col.b && a == col.a;
+}
+
+inline BOOL D3DXCOLOR::operator != (CONST D3DXCOLOR& col) const
+{
+    return r != col.r || g != col.g || b != col.b || a != col.a;
+}
+
+#endif /* __cplusplus */
+
+/*_______________D3DXCOLOR_____________________*/
+
+static inline D3DXCOLOR* D3DXColorAdd(D3DXCOLOR *pout, CONST D3DXCOLOR *pc1, CONST D3DXCOLOR *pc2)
+{
+    if ( !pout || !pc1 || !pc2 ) return NULL;
+    pout->r = (pc1->r) + (pc2->r);
+    pout->g = (pc1->g) + (pc2->g);
+    pout->b = (pc1->b) + (pc2->b);
+    pout->a = (pc1->a) + (pc2->a);
+    return pout;
+}
+
+static inline D3DXCOLOR* D3DXColorLerp(D3DXCOLOR *pout, CONST D3DXCOLOR *pc1, CONST D3DXCOLOR *pc2, FLOAT s)
+{
+    if ( !pout || !pc1 || !pc2 ) return NULL;
+    pout->r = (1-s) * (pc1->r) + s *(pc2->r);
+    pout->g = (1-s) * (pc1->g) + s *(pc2->g);
+    pout->b = (1-s) * (pc1->b) + s *(pc2->b);
+    pout->a = (1-s) * (pc1->a) + s *(pc2->a);
+    return pout;
+}
+
+static inline D3DXCOLOR* D3DXColorModulate(D3DXCOLOR *pout, CONST D3DXCOLOR *pc1, CONST D3DXCOLOR *pc2)
+{
+    if ( !pout || !pc1 || !pc2 ) return NULL;
+    pout->r = (pc1->r) * (pc2->r);
+    pout->g = (pc1->g) * (pc2->g);
+    pout->b = (pc1->b) * (pc2->b);
+    pout->a = (pc1->a) * (pc2->a);
+    return pout;
+}
+
+static inline D3DXCOLOR* D3DXColorNegative(D3DXCOLOR *pout, CONST D3DXCOLOR *pc)
+{
+    if ( !pout || !pc ) return NULL;
+    pout->r = 1.0f - pc->r;
+    pout->g = 1.0f - pc->g;
+    pout->b = 1.0f - pc->b;
+    pout->a = pc->a;
+    return pout;
+}
+
+static inline D3DXCOLOR* D3DXColorScale(D3DXCOLOR *pout, CONST D3DXCOLOR *pc, FLOAT s)
+{
+    if ( !pout || !pc ) return NULL;
+    pout->r = s* (pc->r);
+    pout->g = s* (pc->g);
+    pout->b = s* (pc->b);
+    pout->a = s* (pc->a);
+    return pout;
+}
+
+static inline D3DXCOLOR* D3DXColorSubtract(D3DXCOLOR *pout, CONST D3DXCOLOR *pc1, CONST D3DXCOLOR *pc2)
+{
+    if ( !pout || !pc1 || !pc2 ) return NULL;
+    pout->r = (pc1->r) - (pc2->r);
+    pout->g = (pc1->g) - (pc2->g);
+    pout->b = (pc1->b) - (pc2->b);
+    pout->a = (pc1->a) - (pc2->a);
+    return pout;
+}
+
+/*_______________D3DXVECTOR2________________________*/
+
+static inline D3DXVECTOR2* D3DXVec2Add(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = pv1->x + pv2->x;
+    pout->y = pv1->y + pv2->y;
+    return pout;
+}
+
+static inline FLOAT D3DXVec2CCW(CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2)
+{
+    if ( !pv1 || !pv2) return 0.0f;
+    return ( (pv1->x) * (pv2->y) - (pv1->y) * (pv2->x) );
+}
+
+static inline FLOAT D3DXVec2Dot(CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2)
+{
+    if ( !pv1 || !pv2) return 0.0f;
+    return ( (pv1->x * pv2->x + pv1->y * pv2->y) );
+}
+
+static inline FLOAT D3DXVec2Length(CONST D3DXVECTOR2 *pv)
+{
+    if (!pv) return 0.0f;
+    return sqrt( (pv->x) * (pv->x) + (pv->y) * (pv->y) );
+}
+
+static inline FLOAT D3DXVec2LengthSq(CONST D3DXVECTOR2 *pv)
+{
+    if (!pv) return 0.0f;
+    return( (pv->x) * (pv->x) + (pv->y) * (pv->y) );
+}
+
+static inline D3DXVECTOR2* D3DXVec2Lerp(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2, FLOAT s)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = (1-s) * (pv1->x) + s * (pv2->x);
+    pout->y = (1-s) * (pv1->y) + s * (pv2->y);
+    return pout;
+}
+
+static inline D3DXVECTOR2* D3DXVec2Maximize(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = max(pv1->x , pv2->x);
+    pout->y = max(pv1->y , pv2->y);
+    return pout;
+}
+
+static inline D3DXVECTOR2* D3DXVec2Minimize(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = min(pv1->x , pv2->x);
+    pout->y = min(pv1->y , pv2->y);
+    return pout;
+}
+
+static inline D3DXVECTOR2* D3DXVec2Scale(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv, FLOAT s)
+{
+    if ( !pout || !pv) return NULL;
+    pout->x = s * (pv->x);
+    pout->y = s * (pv->y);
+    return pout;
+}
+
+static inline D3DXVECTOR2* D3DXVec2Subtract(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = pv1->x - pv2->x;
+    pout->y = pv1->y - pv2->y;
+    return pout;
+}
+
+/*__________________D3DXVECTOR3_______________________*/
+
+static inline D3DXVECTOR3* D3DXVec3Add(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = pv1->x + pv2->x;
+    pout->y = pv1->y + pv2->y;
+    pout->z = pv1->z + pv2->z;
+    return pout;
+}
+
+static inline D3DXVECTOR3* D3DXVec3Cross(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = (pv1->y) * (pv2->z) - (pv1->z) * (pv2->y);
+    pout->y = (pv1->z) * (pv2->x) - (pv1->x) * (pv2->z);
+    pout->z = (pv1->x) * (pv2->y) - (pv1->y) * (pv2->x);
+    return pout;
+}
+
+static inline FLOAT D3DXVec3Dot(CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2)
+{
+    if ( !pv1 || !pv2 ) return 0.0f;
+    return (pv1->x) * (pv2->x) + (pv1->y) * (pv2->y) + (pv1->z) * (pv2->z);
+}
+
+static inline FLOAT D3DXVec3Length(CONST D3DXVECTOR3 *pv)
+{
+    if (!pv) return 0.0f;
+    return sqrt( (pv->x) * (pv->x) + (pv->y) * (pv->y) + (pv->z) * (pv->z) );
+}
+
+static inline FLOAT D3DXVec3LengthSq(CONST D3DXVECTOR3 *pv)
+{
+    if (!pv) return 0.0f;
+    return (pv->x) * (pv->x) + (pv->y) * (pv->y) + (pv->z) * (pv->z);
+}
+
+static inline D3DXVECTOR3* D3DXVec3Lerp(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2, FLOAT s)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = (1-s) * (pv1->x) + s * (pv2->x);
+    pout->y = (1-s) * (pv1->y) + s * (pv2->y);
+    pout->z = (1-s) * (pv1->z) + s * (pv2->z);
+    return pout;
+}
+
+static inline D3DXVECTOR3* D3DXVec3Maximize(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = max(pv1->x , pv2->x);
+    pout->y = max(pv1->y , pv2->y);
+    pout->z = max(pv1->z , pv2->z);
+    return pout;
+}
+
+static inline D3DXVECTOR3* D3DXVec3Minimize(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = min(pv1->x , pv2->x);
+    pout->y = min(pv1->y , pv2->y);
+    pout->z = min(pv1->z , pv2->z);
+    return pout;
+}
+
+static inline D3DXVECTOR3* D3DXVec3Scale(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, FLOAT s)
+{
+    if ( !pout || !pv) return NULL;
+    pout->x = s * (pv->x);
+    pout->y = s * (pv->y);
+    pout->z = s * (pv->z);
+    return pout;
+}
+
+static inline D3DXVECTOR3* D3DXVec3Subtract(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = pv1->x - pv2->x;
+    pout->y = pv1->y - pv2->y;
+    pout->z = pv1->z - pv2->z;
+    return pout;
+}
+/*__________________D3DXVECTOR4_______________________*/
+
+static inline D3DXVECTOR4* D3DXVec4Add(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = pv1->x + pv2->x;
+    pout->y = pv1->y + pv2->y;
+    pout->z = pv1->z + pv2->z;
+    pout->w = pv1->w + pv2->w;
+    return pout;
+}
+
+static inline FLOAT D3DXVec4Dot(CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2)
+{
+    if (!pv1 || !pv2 ) return 0.0f;
+    return (pv1->x) * (pv2->x) + (pv1->y) * (pv2->y) + (pv1->z) * (pv2->z) + (pv1->w) * (pv2->w);
+}
+
+static inline FLOAT D3DXVec4Length(CONST D3DXVECTOR4 *pv)
+{
+    if (!pv) return 0.0f;
+    return sqrt( (pv->x) * (pv->x) + (pv->y) * (pv->y) + (pv->z) * (pv->z) + (pv->w) * (pv->w) );
+}
+
+static inline FLOAT D3DXVec4LengthSq(CONST D3DXVECTOR4 *pv)
+{
+    if (!pv) return 0.0f;
+    return (pv->x) * (pv->x) + (pv->y) * (pv->y) + (pv->z) * (pv->z) + (pv->w) * (pv->w);
+}
+
+static inline D3DXVECTOR4* D3DXVec4Lerp(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2, FLOAT s)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = (1-s) * (pv1->x) + s * (pv2->x);
+    pout->y = (1-s) * (pv1->y) + s * (pv2->y);
+    pout->z = (1-s) * (pv1->z) + s * (pv2->z);
+    pout->w = (1-s) * (pv1->w) + s * (pv2->w);
+    return pout;
+}
+
+
+static inline D3DXVECTOR4* D3DXVec4Maximize(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = max(pv1->x , pv2->x);
+    pout->y = max(pv1->y , pv2->y);
+    pout->z = max(pv1->z , pv2->z);
+    pout->w = max(pv1->w , pv2->w);
+    return pout;
+}
+
+static inline D3DXVECTOR4* D3DXVec4Minimize(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = min(pv1->x , pv2->x);
+    pout->y = min(pv1->y , pv2->y);
+    pout->z = min(pv1->z , pv2->z);
+    pout->w = min(pv1->w , pv2->w);
+    return pout;
+}
+
+static inline D3DXVECTOR4* D3DXVec4Scale(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv, FLOAT s)
+{
+    if ( !pout || !pv) return NULL;
+    pout->x = s * (pv->x);
+    pout->y = s * (pv->y);
+    pout->z = s * (pv->z);
+    pout->w = s * (pv->w);
+    return pout;
+}
+
+static inline D3DXVECTOR4* D3DXVec4Subtract(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = pv1->x - pv2->x;
+    pout->y = pv1->y - pv2->y;
+    pout->z = pv1->z - pv2->z;
+    pout->w = pv1->w - pv2->w;
+    return pout;
+}
+
+/*__________________D3DXMatrix____________________*/
+#ifdef NONAMELESSUNION
+# define D3DX_U(x)  (x).u
+#else
+# define D3DX_U(x)  (x)
+#endif
+
+static inline D3DXMATRIX* D3DXMatrixIdentity(D3DXMATRIX *pout)
+{
+    if ( !pout ) return NULL;
+    D3DX_U(*pout).m[0][1] = 0.0f;
+    D3DX_U(*pout).m[0][2] = 0.0f;
+    D3DX_U(*pout).m[0][3] = 0.0f;
+    D3DX_U(*pout).m[1][0] = 0.0f;
+    D3DX_U(*pout).m[1][2] = 0.0f;
+    D3DX_U(*pout).m[1][3] = 0.0f;
+    D3DX_U(*pout).m[2][0] = 0.0f;
+    D3DX_U(*pout).m[2][1] = 0.0f;
+    D3DX_U(*pout).m[2][3] = 0.0f;
+    D3DX_U(*pout).m[3][0] = 0.0f;
+    D3DX_U(*pout).m[3][1] = 0.0f;
+    D3DX_U(*pout).m[3][2] = 0.0f;
+    D3DX_U(*pout).m[0][0] = 1.0f;
+    D3DX_U(*pout).m[1][1] = 1.0f;
+    D3DX_U(*pout).m[2][2] = 1.0f;
+    D3DX_U(*pout).m[3][3] = 1.0f;
+    return pout;
+}
+
+static inline BOOL D3DXMatrixIsIdentity(D3DXMATRIX *pm)
+{
+    int i,j;
+    D3DXMATRIX testmatrix;
+
+    if ( !pm ) return FALSE;
+    D3DXMatrixIdentity(&testmatrix);
+    for (i=0; i<4; i++)
+    {
+     for (j=0; j<4; j++)
+     {
+      if ( D3DX_U(*pm).m[i][j] != D3DX_U(testmatrix).m[i][j] ) return FALSE;
+     }
+    }
+    return TRUE;
+}
+#undef D3DX_U
+
+/*__________________D3DXPLANE____________________*/
+
+static inline FLOAT D3DXPlaneDot(CONST D3DXPLANE *pp, CONST D3DXVECTOR4 *pv)
+{
+    if ( !pp || !pv ) return 0.0f;
+    return ( (pp->a) * (pv->x) + (pp->b) * (pv->y) + (pp->c) * (pv->z) + (pp->d) * (pv->w) );
+}
+
+static inline FLOAT D3DXPlaneDotCoord(CONST D3DXPLANE *pp, CONST D3DXVECTOR4 *pv)
+{
+    if ( !pp || !pv ) return 0.0f;
+    return ( (pp->a) * (pv->x) + (pp->b) * (pv->y) + (pp->c) * (pv->z) + (pp->d) );
+}
+
+static inline FLOAT D3DXPlaneDotNormal(CONST D3DXPLANE *pp, CONST D3DXVECTOR4 *pv)
+{
+    if ( !pp || !pv ) return 0.0f;
+    return ( (pp->a) * (pv->x) + (pp->b) * (pv->y) + (pp->c) * (pv->z) );
+}
+
+/*__________________D3DXQUATERNION____________________*/
+
+static inline D3DXQUATERNION* D3DXQuaternionConjugate(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq)
+{
+    if ( !pout || !pq) return NULL;
+    pout->x = -pq->x;
+    pout->y = -pq->y;
+    pout->z = -pq->z;
+    pout->w = pq->w;
+    return pout;
+}
+
+static inline FLOAT D3DXQuaternionDot(CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2)
+{
+    if ( !pq1 || !pq2 ) return 0.0f;
+    return (pq1->x) * (pq2->x) + (pq1->y) * (pq2->y) + (pq1->z) * (pq2->z) + (pq1->w) * (pq2->w);
+}
+
+static inline D3DXQUATERNION* D3DXQuaternionIdentity(D3DXQUATERNION *pout)
+{
+    if ( !pout) return NULL;
+    pout->x = 0.0f;
+    pout->y = 0.0f;
+    pout->z = 0.0f;
+    pout->w = 1.0f;
+    return pout;
+}
+
+static inline BOOL D3DXQuaternionIsIdentity(D3DXQUATERNION *pq)
+{
+    if ( !pq) return FALSE;
+    return ( (pq->x == 0.0f) && (pq->y == 0.0f) && (pq->z == 0.0f) && (pq->w == 1.0f) );
+}
+
+static inline FLOAT D3DXQuaternionLength(CONST D3DXQUATERNION *pq)
+{
+    if (!pq) return 0.0f;
+    return sqrt( (pq->x) * (pq->x) + (pq->y) * (pq->y) + (pq->z) * (pq->z) + (pq->w) * (pq->w) );
+}
+
+static inline FLOAT D3DXQuaternionLengthSq(CONST D3DXQUATERNION *pq)
+{
+    if (!pq) return 0.0f;
+    return (pq->x) * (pq->x) + (pq->y) * (pq->y) + (pq->z) * (pq->z) + (pq->w) * (pq->w);
+}
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx8mesh.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx8mesh.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx8mesh.h	(revision 16410)
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2008 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_D3DX8MESH_H
+#define __WINE_D3DX8MESH_H
+
+#include <d3dx8.h>
+#include <dxfile.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+HRESULT WINAPI D3DXCreateBuffer(DWORD,LPD3DXBUFFER*);
+UINT    WINAPI D3DXGetFVFVertexSize(DWORD);
+BOOL    WINAPI D3DXBoxBoundProbe(CONST D3DXVECTOR3 *, CONST D3DXVECTOR3 *, CONST D3DXVECTOR3 *, CONST D3DXVECTOR3 *);
+BOOL    WINAPI D3DXSphereBoundProbe(CONST D3DXVECTOR3 *,FLOAT,CONST D3DXVECTOR3 *,CONST D3DXVECTOR3 *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_D3DX8MESH_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx9.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx9.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx9.h	(revision 16410)
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2007 David Adam
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __D3DX9_H__
+#define __D3DX9_H__
+
+#include <limits.h>
+
+#include "d3d9.h"
+#include "d3dx9math.h"
+#include "d3dx9core.h"
+#include "d3dx9shader.h"
+#include "d3dx9tex.h"
+
+#define _FACDD 0x876
+#define MAKE_DDHRESULT(code) MAKE_HRESULT(1, _FACDD, code)
+
+enum _D3DXERR {
+    D3DXERR_CANNOTMODIFYINDEXBUFFER = MAKE_DDHRESULT(2900),
+    D3DXERR_INVALIDMESH             = MAKE_DDHRESULT(2901),
+    D3DXERR_CANNOTATTRSORT          = MAKE_DDHRESULT(2902),
+    D3DXERR_SKINNINGNOTSUPPORTED    = MAKE_DDHRESULT(2903),
+    D3DXERR_TOOMANYINFLUENCES       = MAKE_DDHRESULT(2904),
+    D3DXERR_INVALIDDATA             = MAKE_DDHRESULT(2905),
+    D3DXERR_LOADEDMESHASNODATA      = MAKE_DDHRESULT(2906),
+    D3DXERR_DUPLICATENAMEDFRAGMENT  = MAKE_DDHRESULT(2907),
+    D3DXERR_CANNOTREMOVELASTITEM    = MAKE_DDHRESULT(2908),
+};
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx9core.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx9core.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx9core.h	(revision 16410)
@@ -0,0 +1,495 @@
+/*
+ * Copyright (C) 2007, 2008 Tony Wasserka
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_D3DX9CORE_H
+#define __WINE_D3DX9CORE_H
+
+#include <d3dx9.h>
+
+/**********************************************
+ ***************** Definitions ****************
+ **********************************************/
+/* D3DX_VERSION will be completely ignored since we are
+    implementing all dlls from d3dx9_24 to d3dx9_36 */
+#define D3DX_VERSION 0x0902
+#define D3DX_SDK_VERSION 36
+#define D3DXSPRITE_DONOTSAVESTATE           1
+#define D3DXSPRITE_DONOTMODIFY_RENDERSTATE  2
+#define D3DXSPRITE_OBJECTSPACE              4
+#define D3DXSPRITE_BILLBOARD                8
+#define D3DXSPRITE_ALPHABLEND              16
+#define D3DXSPRITE_SORT_TEXTURE            32
+#define D3DXSPRITE_SORT_DEPTH_FRONTTOBACK  64
+#define D3DXSPRITE_SORT_DEPTH_BACKTOFRONT 128
+#define D3DXSPRITE_DO_NOT_ADDREF_TEXTURE  256
+
+/**********************************************
+ ******************** GUIDs *******************
+ **********************************************/
+DEFINE_GUID(IID_ID3DXBuffer, 0x8ba5fb08, 0x5195, 0x40e2, 0xac, 0x58, 0xd, 0x98, 0x9c, 0x3a, 0x1, 0x2);
+DEFINE_GUID(IID_ID3DXFont, 0xd79dbb70, 0x5f21, 0x4d36, 0xbb, 0xc2, 0xff, 0x52, 0x5c, 0x21, 0x3c, 0xdc);
+DEFINE_GUID(IID_ID3DXLine, 0xd379ba7f, 0x9042, 0x4ac4, 0x9f, 0x5e, 0x58, 0x19, 0x2a, 0x4c, 0x6b, 0xd8);
+DEFINE_GUID(IID_ID3DXRenderToEnvMap, 0x313f1b4b, 0xc7b0, 0x4fa2, 0x9d, 0x9d, 0x8d, 0x38, 0xb, 0x64, 0x38, 0x5e);
+DEFINE_GUID(IID_ID3DXRenderToSurface, 0x6985f346, 0x2c3d, 0x43b3, 0xbe, 0x8b, 0xda, 0xae, 0x8a, 0x3, 0xd8, 0x94);
+DEFINE_GUID(IID_ID3DXSprite, 0xba0b762d, 0x7d28, 0x43ec, 0xb9, 0xdc, 0x2f, 0x84, 0x44, 0x3b, 0x6, 0x14);
+
+/**********************************************
+ ****************** typedefs ******************
+ **********************************************/
+typedef struct ID3DXBuffer *LPD3DXBUFFER;
+typedef struct ID3DXFont *LPD3DXFONT;
+typedef struct ID3DXLine *LPD3DXLINE;
+typedef struct ID3DXRenderToEnvMap *LPD3DXRenderToEnvMap;
+typedef struct ID3DXRenderToSurface *LPD3DXRENDERTOSURFACE;
+typedef struct ID3DXSprite *LPD3DXSPRITE;
+
+/**********************************************
+ *********** interface declarations ***********
+ **********************************************/
+#define INTERFACE ID3DXBuffer
+DECLARE_INTERFACE_(ID3DXBuffer, IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID *object) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    /*** ID3DXBuffer methods ***/
+    STDMETHOD_(LPVOID, GetBufferPointer)(THIS) PURE;
+    STDMETHOD_(DWORD, GetBufferSize)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define ID3DXBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define ID3DXBuffer_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define ID3DXBuffer_Release(p)            (p)->lpVtbl->Release(p)
+/*** ID3DXBuffer methods ***/
+#define ID3DXBuffer_GetBufferPointer(p)   (p)->lpVtbl->GetBufferPointer(p)
+#define ID3DXBuffer_GetBufferSize(p)      (p)->lpVtbl->GetBufferSize(p)
+#else
+/*** IUnknown methods ***/
+#define ID3DXBuffer_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define ID3DXBuffer_AddRef(p)             (p)->AddRef()
+#define ID3DXBuffer_Release(p)            (p)->Release()
+/*** ID3DXBuffer methods ***/
+#define ID3DXBuffer_GetBufferPointer(p)   (p)->GetBufferPointer()
+#define ID3DXBuffer_GetBufferSize(p)      (p)->GetBufferSize()
+#endif
+
+typedef struct _D3DXFONT_DESCA
+{
+    INT Height;
+    UINT Width;
+    UINT Weight;
+    UINT MipLevels;
+    BOOL Italic;
+    BYTE CharSet;
+    BYTE OutputPrecision;
+    BYTE Quality;
+    BYTE PitchAndFamily;
+    CHAR FaceName[LF_FACESIZE];
+} D3DXFONT_DESCA, *LPD3DXFONT_DESCA;
+
+typedef struct _D3DXFONT_DESCW
+{
+    INT Height;
+    UINT Width;
+    UINT Weight;
+    UINT MipLevels;
+    BOOL Italic;
+    BYTE CharSet;
+    BYTE OutputPrecision;
+    BYTE Quality;
+    BYTE PitchAndFamily;
+    WCHAR FaceName[LF_FACESIZE];
+} D3DXFONT_DESCW, *LPD3DXFONT_DESCW;
+
+DECL_WINELIB_TYPE_AW(D3DXFONT_DESC)
+DECL_WINELIB_TYPE_AW(LPD3DXFONT_DESC)
+
+#define INTERFACE ID3DXFont
+DECLARE_INTERFACE_(ID3DXFont, IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *object) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    /*** ID3DXFont methods ***/
+    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9 *device) PURE;
+    STDMETHOD(GetDescA)(THIS_ D3DXFONT_DESCA *desc) PURE;
+    STDMETHOD(GetDescW)(THIS_ D3DXFONT_DESCW *desc) PURE;
+    STDMETHOD_(BOOL, GetTextMetricsA)(THIS_ TEXTMETRICA *metrics) PURE;
+    STDMETHOD_(BOOL, GetTextMetricsW)(THIS_ TEXTMETRICW *metrics) PURE;
+
+    STDMETHOD_(HDC, GetDC)(THIS) PURE;
+    STDMETHOD(GetGlyphData)(THIS_ UINT glyph, LPDIRECT3DTEXTURE9 *texture, RECT *blackbox, POINT *cellinc) PURE;
+
+    STDMETHOD(PreloadCharacters)(THIS_ UINT first, UINT last) PURE;
+    STDMETHOD(PreloadGlyphs)(THIS_ UINT first, UINT last) PURE;
+    STDMETHOD(PreloadTextA)(THIS_ LPCSTR string, INT count) PURE;
+    STDMETHOD(PreloadTextW)(THIS_ LPCWSTR string, INT count) PURE;
+
+    STDMETHOD_(INT, DrawTextA)(THIS_ LPD3DXSPRITE sprite, LPCSTR string, INT count, LPRECT rect, DWORD format, D3DCOLOR color) PURE;
+    STDMETHOD_(INT, DrawTextW)(THIS_ LPD3DXSPRITE sprite, LPCWSTR string, INT count, LPRECT rect, DWORD format, D3DCOLOR color) PURE;
+
+    STDMETHOD(OnLostDevice)(THIS) PURE;
+    STDMETHOD(OnResetDevice)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+
+/*** IUnknown methods ***/
+#define ID3DXFont_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
+#define ID3DXFont_AddRef(p)                (p)->lpVtbl->AddRef(p)
+#define ID3DXFont_Release(p)               (p)->lpVtbl->Release(p)
+/*** ID3DXFont methods ***/
+#define ID3DXFont_GetDevice(p,a)           (p)->lpVtbl->GetDevice(p,a)
+#define ID3DXFont_GetDescA(p,a)            (p)->lpVtbl->GetDescA(p,a)
+#define ID3DXFont_GetDescW(p,a)            (p)->lpVtbl->GetDescW(p,a)
+#define ID3DXFont_GetTextMetricsA(p,a)     (p)->lpVtbl->GetTextMetricsA(p,a)
+#define ID3DXFont_GetTextMetricsW(p,a)     (p)->lpVtbl->GetTextMetricsW(p,a)
+#define ID3DXFont_GetDC(p)                 (p)->lpVtbl->GetDC(p)
+#define ID3DXFont_GetGlyphData(p,a,b,c,d)  (p)->lpVtbl->GetGlyphData(p,a,b,c,d)
+#define ID3DXFont_PreloadCharacters(p,a,b) (p)->lpVtbl->PreloadCharacters(p,a,b)
+#define ID3DXFont_PreloadGlyphs(p,a,b)     (p)->lpVtbl->PreloadGlyphs(p,a,b)
+#define ID3DXFont_PreloadTextA(p,a,b)      (p)->lpVtbl->PreloadTextA(p,a,b)
+#define ID3DXFont_PreloadTextW(p,a,b)      (p)->lpVtbl->PreloadTextW(p,a,b)
+#define ID3DXFont_DrawTextA(p,a,b,c,d,e,f) (p)->lpVtbl->DrawTextA(p,a,b,c,d,e,f)
+#define ID3DXFont_DrawTextW(p,a,b,c,d,e,f) (p)->lpVtbl->DrawTextW(p,a,b,c,d,e,f)
+#define ID3DXFont_OnLostDevice(p)          (p)->lpVtbl->OnLostDevice(p)
+#define ID3DXFont_OnResetDevice(p)         (p)->lpVtbl->OnResetDevice(p)
+#else
+/*** IUnknown methods ***/
+#define ID3DXFont_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
+#define ID3DXFont_AddRef(p)                (p)->AddRef()
+#define ID3DXFont_Release(p)               (p)->Release()
+/*** ID3DXFont methods ***/
+#define ID3DXFont_GetDevice(p,a)           (p)->GetDevice(a)
+#define ID3DXFont_GetDescA(p,a)            (p)->GetDescA(a)
+#define ID3DXFont_GetDescW(p,a)            (p)->GetDescW(a)
+#define ID3DXFont_GetTextMetricsA(p,a)     (p)->GetTextMetricsA(a)
+#define ID3DXFont_GetTextMetricsW(p,a)     (p)->GetTextMetricsW(a)
+#define ID3DXFont_GetDC(p)                 (p)->GetDC()
+#define ID3DXFont_GetGlyphData(p,a,b,c,d)  (p)->GetGlyphData(a,b,c,d)
+#define ID3DXFont_PreloadCharacters(p,a,b) (p)->PreloadCharacters(a,b)
+#define ID3DXFont_PreloadGlyphs(p,a,b)     (p)->PreloadGlyphs(a,b)
+#define ID3DXFont_PreloadTextA(p,a,b)      (p)->PreloadTextA(a,b)
+#define ID3DXFont_PreloadTextW(p,a,b)      (p)->PreloadTextW(a,b)
+#define ID3DXFont_DrawTextA(p,a,b,c,d,e,f) (p)->DrawTextA(a,b,c,d,e,f)
+#define ID3DXFont_DrawTextW(p,a,b,c,d,e,f) (p)->DrawTextW(a,b,c,d,e,f)
+#define ID3DXFont_OnLostDevice(p)          (p)->OnLostDevice()
+#define ID3DXFont_OnResetDevice(p)         (p)->OnResetDevice()
+#endif
+#define ID3DXFont_DrawText       WINELIB_NAME_AW(ID3DXFont_DrawText)
+#define ID3DXFont_GetDesc        WINELIB_NAME_AW(ID3DXFont_GetDesc)
+#define ID3DXFont_GetTextMetrics WINELIB_NAME_AW(ID3DXFont_GetTextMetrics)
+#define ID3DXFont_PreloadText    WINELIB_NAME_AW(ID3DXFont_PreloadText)
+
+#define INTERFACE ID3DXLine
+DECLARE_INTERFACE_(ID3DXLine, IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *object) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+    /*** ID3DXLine methods ***/
+    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9 *device) PURE;
+
+    STDMETHOD(Begin)(THIS) PURE;
+    STDMETHOD(Draw)(THIS_ CONST D3DXVECTOR2 *vertexlist, DWORD vertexlistcount, D3DCOLOR color) PURE;
+    STDMETHOD(DrawTransform)(THIS_ CONST D3DXVECTOR3 *vertexlist, DWORD vertexlistcount,
+                             CONST D3DXMATRIX *transform, D3DCOLOR color) PURE;
+    STDMETHOD(SetPattern)(THIS_ DWORD pattern) PURE;
+    STDMETHOD_(DWORD, GetPattern)(THIS) PURE;
+    STDMETHOD(SetPatternScale)(THIS_ FLOAT scale) PURE;
+    STDMETHOD_(FLOAT, GetPatternScale)(THIS) PURE;
+    STDMETHOD(SetWidth)(THIS_ FLOAT width) PURE;
+    STDMETHOD_(FLOAT, GetWidth)(THIS) PURE;
+    STDMETHOD(SetAntialias)(THIS_ BOOL antialias) PURE;
+    STDMETHOD_(BOOL, GetAntialias)(THIS) PURE;
+    STDMETHOD(SetGLLines)(THIS_ BOOL gl_lines) PURE;
+    STDMETHOD_(BOOL, GetGLLines)(THIS) PURE;
+    STDMETHOD(End)(THIS) PURE;
+
+    STDMETHOD(OnLostDevice)(THIS) PURE;
+    STDMETHOD(OnResetDevice)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define ID3DXLine_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
+#define ID3DXLine_AddRef(p)                (p)->lpVtbl->AddRef(p)
+#define ID3DXLine_Release(p)               (p)->lpVtbl->Release(p)
+/*** ID3DXLine methods ***/
+#define ID3DXLine_GetDevice(p,a)           (p)->lpVtbl->GetDevice(p,a)
+#define ID3DXLine_Begin(p)                 (p)->lpVtbl->Begin(p)
+#define ID3DXLine_Draw(p,a,b,c)            (p)->lpVtbl->Draw(p,a,b,c)
+#define ID3DXLine_DrawTransform(p,a,b,c,d) (p)->lpVtbl->DrawTransform(p,a,b,c,d)
+#define ID3DXLine_SetPattern(p,a)          (p)->lpVtbl->SetPattern(p,a)
+#define ID3DXLine_GetPattern(p)            (p)->lpVtbl->GetPattern(p)
+#define ID3DXLine_SetPatternScale(p,a)     (p)->lpVtbl->SetPatternScale(p,a)
+#define ID3DXLine_GetPatternScale(p)       (p)->lpVtbl->GetPatternScale(p)
+#define ID3DXLine_SetWidth(p,a)            (p)->lpVtbl->SetWidth(p,a)
+#define ID3DXLine_GetWidth(p)              (p)->lpVtbl->GetWidth(p)
+#define ID3DXLine_SetAntialias(p,a)        (p)->lpVtbl->SetAntialias(p,a)
+#define ID3DXLine_GetAntialias(p)          (p)->lpVtbl->GetAntialias(p)
+#define ID3DXLine_SetGLLines(p,a)          (p)->lpVtbl->SetGLLines(p,a)
+#define ID3DXLine_GetGLLines(p)            (p)->lpVtbl->GetGLLines(p)
+#define ID3DXLine_End(p)                   (p)->lpVtbl->End(p)
+#define ID3DXLine_OnLostDevice(p)          (p)->lpVtbl->OnLostDevice(p)
+#define ID3DXLine_OnResetDevice(p)         (p)->lpVtbl->OnResetDevice(p)
+#else
+/*** IUnknown methods ***/
+#define ID3DXLine_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
+#define ID3DXLine_AddRef(p)                (p)->AddRef()
+#define ID3DXLine_Release(p)               (p)->Release()
+/*** ID3DXLine methods ***/
+#define ID3DXLine_GetDevice(p,a)           (p)->GetDevice(a)
+#define ID3DXLine_Begin(p)                 (p)->Begin()
+#define ID3DXLine_Draw(p,a,b,c)            (p)->Draw(a,b,c)
+#define ID3DXLine_DrawTransform(p,a,b,c,d) (p)->DrawTransform(a,b,c,d)
+#define ID3DXLine_SetPattern(p,a)          (p)->SetPattern(a)
+#define ID3DXLine_GetPattern(p)            (p)->GetPattern()
+#define ID3DXLine_SetPatternScale(p,a)     (p)->SetPatternScale(a)
+#define ID3DXLine_GetPatternScale(p)       (p)->GetPatternScale()
+#define ID3DXLine_SetWidth(p,a)            (p)->SetWidth(a)
+#define ID3DXLine_GetWidth(p)              (p)->GetWidth()
+#define ID3DXLine_SetAntialias(p,a)        (p)->SetAntialias(a)
+#define ID3DXLine_GetAntialias(p)          (p)->GetAntialias()
+#define ID3DXLine_SetGLLines(p,a)          (p)->SetGLLines(a)
+#define ID3DXLine_GetGLLines(p)            (p)->GetGLLines()
+#define ID3DXLine_End(p)                   (p)->End()
+#define ID3DXLine_OnLostDevice(p)          (p)->OnLostDevice()
+#define ID3DXLine_OnResetDevice(p)         (p)->OnResetDevice()
+#endif
+
+typedef struct _D3DXRTE_DESC
+{
+    UINT Size;
+    UINT MipLevels;
+    D3DFORMAT Format;
+    BOOL DepthStencil;
+    D3DFORMAT DepthStencilFormat;
+} D3DXRTE_DESC;
+
+#define INTERFACE ID3DXRenderToEnvMap
+DECLARE_INTERFACE_(ID3DXRenderToEnvMap, IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *object) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+    /*** ID3DXRenderToEnvMap methods ***/
+    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9 *device) PURE;
+    STDMETHOD(GetDesc)(THIS_ D3DXRTE_DESC *desc) PURE;
+
+    STDMETHOD(BeginCube)(THIS_ LPDIRECT3DCUBETEXTURE9 cubetex) PURE;
+    STDMETHOD(BeginSphere)(THIS_ LPDIRECT3DTEXTURE9 tex) PURE;
+    STDMETHOD(BeginHemisphere)(THIS_ LPDIRECT3DTEXTURE9 texzpos, LPDIRECT3DTEXTURE9 texzneg) PURE;
+    STDMETHOD(BeginParabolic)(THIS_ LPDIRECT3DTEXTURE9 texzpos, LPDIRECT3DTEXTURE9 texzneg) PURE;
+
+    STDMETHOD(Face)(THIS_ D3DCUBEMAP_FACES face, DWORD mipfilter) PURE;
+    STDMETHOD(End)(THIS_ DWORD mipfilter) PURE;
+
+    STDMETHOD(OnLostDevice)(THIS) PURE;
+    STDMETHOD(OnResetDevice)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define ID3DXRenderToEnvMap_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
+#define ID3DXRenderToEnvMap_AddRef(p)              (p)->lpVtbl->AddRef(p)
+#define ID3DXRenderToEnvMap_Release(p)             (p)->lpVtbl->Release(p)
+/*** ID3DXRenderToEnvMap methods ***/
+#define ID3DXRenderToEnvMap_GetDevice(p,a)         (p)->lpVtbl->GetDevice(p,a)
+#define ID3DXRenderToEnvMap_GetDesc(p,a)           (p)->lpVtbl->GetDesc(p,a)
+#define ID3DXRenderToEnvMap_BeginCube(p,a)         (p)->lpVtbl->BeginCube(p,a)
+#define ID3DXRenderToEnvMap_BeginSphere(p,a)       (p)->lpVtbl->BeginSphere(p,a)
+#define ID3DXRenderToEnvMap_BeginHemisphere(p,a,b) (p)->lpVtbl->BeginHemisphere(p,a,b)
+#define ID3DXRenderToEnvMap_BeginParabolic(p,a,b)  (p)->lpVtbl->BeginParabolic(p,a,b)
+#define ID3DXRenderToEnvMap_Face(p,a,b)            (p)->lpVtbl->Face(p,a,b)
+#define ID3DXRenderToEnvMap_End(p,a)               (p)->lpVtbl->End(p,a)
+#define ID3DXRenderToEnvMap_OnLostDevice(p)        (p)->lpVtbl->OnLostDevice(p)
+#define ID3DXRenderToEnvMap_OnLostDevice(p)        (p)->lpVtbl->OnLostDevice(p)
+#else
+/*** IUnknown methods ***/
+#define ID3DXRenderToEnvMap_QueryInterface(p,a,b)  (p)->QueryInterface(a,b)
+#define ID3DXRenderToEnvMap_AddRef(p)              (p)->AddRef()
+#define ID3DXRenderToEnvMap_Release(p)             (p)->Release()
+/*** ID3DXRenderToEnvMap methods ***/
+#define ID3DXRenderToEnvMap_GetDevice(p,a)         (p)->GetDevice(a)
+#define ID3DXRenderToEnvMap_GetDesc(p,a)           (p)->GetDesc(a)
+#define ID3DXRenderToEnvMap_BeginCube(p,a)         (p)->BeginCube(a)
+#define ID3DXRenderToEnvMap_BeginSphere(p,a)       (p)->BeginSphere(a)
+#define ID3DXRenderToEnvMap_BeginHemisphere(p,a,b) (p)->BeginHemisphere(a,b)
+#define ID3DXRenderToEnvMap_BeginParabolic(p,a,b)  (p)->BeginParabolic(a,b)
+#define ID3DXRenderToEnvMap_Face(p,a,b)            (p)->Face(a,b)
+#define ID3DXRenderToEnvMap_End(p,a)               (p)->End(a)
+#define ID3DXRenderToEnvMap_OnLostDevice(p)        (p)->OnLostDevice()
+#define ID3DXRenderToEnvMap_OnLostDevice(p)        (p)->OnLostDevice()
+#endif
+
+typedef struct _D3DXRTS_DESC
+{
+    UINT Width;
+    UINT Height;
+    D3DFORMAT Format;
+    BOOL DepthStencil;
+    D3DFORMAT DepthStencilFormat;
+} D3DXRTS_DESC;
+
+#define INTERFACE ID3DXRenderToSurface
+DECLARE_INTERFACE_(ID3DXRenderToSurface, IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID *object) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    /*** ID3DXRenderToSurface methods ***/
+    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9 *device) PURE;
+    STDMETHOD(GetDesc)(THIS_ D3DXRTS_DESC *desc) PURE;
+
+    STDMETHOD(BeginScene)(THIS_ LPDIRECT3DSURFACE9 surface, CONST D3DVIEWPORT9 *viewport) PURE;
+    STDMETHOD(EndScene)(THIS_ DWORD mipfilter) PURE;
+
+    STDMETHOD(OnLostDevice)(THIS) PURE;
+    STDMETHOD(OnResetDevice)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define ID3DXRenderToSurface_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define ID3DXRenderToSurface_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define ID3DXRenderToSurface_Release(p)            (p)->lpVtbl->Release(p)
+/*** ID3DXRenderToSurface methods ***/
+#define ID3DXRenderToSurface_GetDevice(p,a)        (p)->lpVtbl->GetDevice(p,a)
+#define ID3DXRenderToSurface_GetDesc(p,a)          (p)->lpVtbl->GetDesc(p,a)
+#define ID3DXRenderToSurface_BeginScene(p,a,b)     (p)->lpVtbl->BeginScene(p,a,b)
+#define ID3DXRenderToSurface_EndScene(p,a)         (p)->lpVtbl->EndScene(p,a)
+#define ID3DXRenderToSurface_OnLostDevice(p)       (p)->lpVtbl->OnLostDevice(p)
+#define ID3DXRenderToSurface_OnResetDevice(p)      (p)->lpVtbl->OnResetDevice(p)
+#else
+/*** IUnknown methods ***/
+#define ID3DXRenderToSurface_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define ID3DXRenderToSurface_AddRef(p)             (p)->AddRef()
+#define ID3DXRenderToSurface_Release(p)            (p)->Release()
+/*** ID3DXRenderToSurface methods ***/
+#define ID3DXRenderToSurface_GetDevice(p,a)        (p)->GetDevice(a)
+#define ID3DXRenderToSurface_GetDesc(p,a)          (p)->GetDesc(a)
+#define ID3DXRenderToSurface_BeginScene(p,a,b)     (p)->BeginScene(a,b)
+#define ID3DXRenderToSurface_EndScene(p,a)         (p)->EndScene(a)
+#define ID3DXRenderToSurface_OnLostDevice(p)       (p)->OnLostDevice()
+#define ID3DXRenderToSurface_OnResetDevice(p)      (p)->OnResetDevice()
+#endif
+
+#define INTERFACE ID3DXSprite
+DECLARE_INTERFACE_(ID3DXSprite, IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *object) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    /*** ID3DXSprite methods ***/
+    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9 *device) PURE;
+
+    STDMETHOD(GetTransform)(THIS_ D3DXMATRIX *transform) PURE;
+    STDMETHOD(SetTransform)(THIS_ CONST D3DXMATRIX *transform) PURE;
+    STDMETHOD(SetWorldViewRH)(THIS_ CONST D3DXMATRIX *world, CONST D3DXMATRIX *view) PURE;
+    STDMETHOD(SetWorldViewLH)(THIS_ CONST D3DXMATRIX *world, CONST D3DXMATRIX *view) PURE;
+
+    STDMETHOD(Begin)(THIS_ DWORD flags) PURE;
+    STDMETHOD(Draw)(THIS_ LPDIRECT3DTEXTURE9 texture, CONST RECT *rect, CONST D3DXVECTOR3 *center, CONST D3DXVECTOR3 *position, D3DCOLOR color) PURE;
+    STDMETHOD(Flush)(THIS) PURE;
+    STDMETHOD(End)(THIS) PURE;
+
+    STDMETHOD(OnLostDevice)(THIS) PURE;
+    STDMETHOD(OnResetDevice)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define ID3DXSprite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define ID3DXSprite_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define ID3DXSprite_Release(p)            (p)->lpVtbl->Release(p)
+/*** ID3DXSprite methods ***/
+#define ID3DXSprite_GetDevice(p,a)        (p)->lpVtbl->GetDevice(p,a)
+#define ID3DXSprite_GetTransform(p,a)     (p)->lpVtbl->GetTransform(p,a)
+#define ID3DXSprite_SetTransform(p,a)     (p)->lpVtbl->SetTransform(p,a)
+#define ID3DXSprite_SetWorldViewRH(p,a,b) (p)->lpVtbl->SetWorldViewRH(p,a,b)
+#define ID3DXSprite_SetWorldViewLH(p,a,b) (p)->lpVtbl->SetWorldViewLH(p,a,b)
+#define ID3DXSprite_Begin(p,a)            (p)->lpVtbl->Begin(p,a)
+#define ID3DXSprite_Draw(p,a,b,c,d,e)     (p)->lpVtbl->Draw(p,a,b,c,d,e)
+#define ID3DXSprite_Flush(p)              (p)->lpVtbl->Flush(p)
+#define ID3DXSprite_End(p)                (p)->lpVtbl->End(p)
+#define ID3DXSprite_OnLostDevice(p)       (p)->lpVtbl->OnLostDevice(p)
+#define ID3DXSprite_OnResetDevice(p)      (p)->lpVtbl->OnResetDevice(p)
+#else
+/*** IUnknown methods ***/
+#define ID3DXSprite_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
+#define ID3DXSprite_AddRef(p)                (p)->AddRef()
+#define ID3DXSprite_Release(p)               (p)->Release()
+/*** ID3DXSprite methods ***/
+#define ID3DXSprite_GetDevice(p,a)        (p)->GetDevice(a)
+#define ID3DXSprite_GetTransform(p,a)     (p)->GetTransform(a)
+#define ID3DXSprite_SetTransform(p,a)     (p)->SetTransform(a)
+#define ID3DXSprite_SetWorldViewRH(p,a,b) (p)->SetWorldViewRH(a,b)
+#define ID3DXSprite_SetWorldViewLH(p,a,b) (p)->SetWorldViewLH(a,b)
+#define ID3DXSprite_Begin(p,a)            (p)->Begin(a)
+#define ID3DXSprite_Draw(p,a,b,c,d,e)     (p)->Draw(a,b,c,d,e)
+#define ID3DXSprite_Flush(p)              (p)->Flush()
+#define ID3DXSprite_End(p)                (p)->End()
+#define ID3DXSprite_OnLostDevice(p)       (p)->OnLostDevice()
+#define ID3DXSprite_OnResetDevice(p)      (p)->OnResetDevice()
+#endif
+
+/**********************************************
+ ****************** functions *****************
+ **********************************************/
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+BOOL    WINAPI D3DXCheckVersion(UINT d3dsdkvers, UINT d3dxsdkvers);
+HRESULT WINAPI D3DXCreateFontA(LPDIRECT3DDEVICE9 device, INT height, UINT width, UINT weight, UINT miplevels, BOOL italic, DWORD charset,
+                               DWORD precision, DWORD quality, DWORD pitchandfamily, LPCSTR facename, LPD3DXFONT *font);
+HRESULT WINAPI D3DXCreateFontW(LPDIRECT3DDEVICE9 device, INT height, UINT width, UINT weight, UINT miplevels, BOOL italic, DWORD charset,
+                               DWORD precision, DWORD quality, DWORD pitchandfamily, LPCWSTR facename, LPD3DXFONT *font);
+#define        D3DXCreateFont WINELIB_NAME_AW(D3DXCreateFont)
+HRESULT WINAPI D3DXCreateFontIndirectA(LPDIRECT3DDEVICE9 device, CONST D3DXFONT_DESCA *desc, LPD3DXFONT *font);
+HRESULT WINAPI D3DXCreateFontIndirectW(LPDIRECT3DDEVICE9 device, CONST D3DXFONT_DESCW *desc, LPD3DXFONT *font);
+#define        D3DXCreateFontIndirect WINELIB_NAME_AW(D3DXCreateFontIndirect)
+HRESULT WINAPI D3DXCreateLine(LPDIRECT3DDEVICE9 device, LPD3DXLINE *line);
+HRESULT WINAPI D3DXCreateRenderToEnvMap(LPDIRECT3DDEVICE9 device, UINT size, UINT miplevels, D3DFORMAT format, BOOL stencil, D3DFORMAT stencil_format, LPD3DXRenderToEnvMap *rtem);
+HRESULT WINAPI D3DXCreateRenderToSurface(LPDIRECT3DDEVICE9 device, UINT width, UINT height, D3DFORMAT format, BOOL stencil, D3DFORMAT stencil_format, LPD3DXRENDERTOSURFACE *rts);
+HRESULT WINAPI D3DXCreateSprite(LPDIRECT3DDEVICE9 device, LPD3DXSPRITE *sprite);
+BOOL    WINAPI D3DXDebugMute(BOOL mute);
+UINT    WINAPI D3DXGetDriverLevel(LPDIRECT3DDEVICE9 device);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_D3DX9CORE_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx9math.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx9math.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx9math.h	(revision 16410)
@@ -0,0 +1,363 @@
+/*
+ * Copyright (C) 2007 David Adam
+ * Copyright (C) 2007 Tony Wasserka
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <d3dx9.h>
+
+#ifndef __D3DX9MATH_H__
+#define __D3DX9MATH_H__
+
+#include <math.h>
+
+#define D3DX_PI    ((FLOAT)3.141592654)
+#define D3DX_1BYPI ((FLOAT)0.318309886)
+
+#define D3DXToRadian(degree) ((degree) * (D3DX_PI / 180.0f))
+#define D3DXToDegree(radian) ((radian) * (180.0f / D3DX_PI))
+
+typedef struct D3DXVECTOR2
+{
+#ifdef __cplusplus
+    D3DXVECTOR2();
+    D3DXVECTOR2(CONST FLOAT *pf);
+    D3DXVECTOR2(FLOAT fx, FLOAT fy);
+
+    operator FLOAT* ();
+    operator CONST FLOAT* () const;
+
+    D3DXVECTOR2& operator += (CONST D3DXVECTOR2&);
+    D3DXVECTOR2& operator -= (CONST D3DXVECTOR2&);
+    D3DXVECTOR2& operator *= (FLOAT);
+    D3DXVECTOR2& operator /= (FLOAT);
+
+    D3DXVECTOR2 operator + () const;
+    D3DXVECTOR2 operator - () const;
+
+    D3DXVECTOR2 operator + (CONST D3DXVECTOR2&) const;
+    D3DXVECTOR2 operator - (CONST D3DXVECTOR2&) const;
+    D3DXVECTOR2 operator * (FLOAT) const;
+    D3DXVECTOR2 operator / (FLOAT) const;
+
+    friend D3DXVECTOR2 operator * (FLOAT, CONST D3DXVECTOR2&);
+
+    BOOL operator == (CONST D3DXVECTOR2&) const;
+    BOOL operator != (CONST D3DXVECTOR2&) const;
+#endif /* __cplusplus */
+    FLOAT x, y;
+} D3DXVECTOR2, *LPD3DXVECTOR2;
+
+#ifdef __cplusplus
+typedef struct D3DXVECTOR3 : public D3DVECTOR
+{
+    D3DXVECTOR3();
+    D3DXVECTOR3(CONST FLOAT *pf);
+    D3DXVECTOR3(CONST D3DVECTOR& v);
+    D3DXVECTOR3(FLOAT fx, FLOAT fy, FLOAT fz);
+
+    operator FLOAT* ();
+    operator CONST FLOAT* () const;
+
+    D3DXVECTOR3& operator += (CONST D3DXVECTOR3&);
+    D3DXVECTOR3& operator -= (CONST D3DXVECTOR3&);
+    D3DXVECTOR3& operator *= (FLOAT);
+    D3DXVECTOR3& operator /= (FLOAT);
+
+    D3DXVECTOR3 operator + () const;
+    D3DXVECTOR3 operator - () const;
+
+    D3DXVECTOR3 operator + (CONST D3DXVECTOR3&) const;
+    D3DXVECTOR3 operator - (CONST D3DXVECTOR3&) const;
+    D3DXVECTOR3 operator * (FLOAT) const;
+    D3DXVECTOR3 operator / (FLOAT) const;
+
+    friend D3DXVECTOR3 operator * (FLOAT, CONST struct D3DXVECTOR3&);
+
+    BOOL operator == (CONST D3DXVECTOR3&) const;
+    BOOL operator != (CONST D3DXVECTOR3&) const;
+} D3DXVECTOR3, *LPD3DXVECTOR3;
+#else /* !__cplusplus */
+typedef struct _D3DVECTOR D3DXVECTOR3, *LPD3DXVECTOR3;
+#endif /* !__cplusplus */
+
+typedef struct D3DXVECTOR4
+{
+#ifdef __cplusplus
+    D3DXVECTOR4();
+    D3DXVECTOR4(CONST FLOAT *pf);
+    D3DXVECTOR4(FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw);
+
+    operator FLOAT* ();
+    operator CONST FLOAT* () const;
+
+    D3DXVECTOR4& operator += (CONST D3DXVECTOR4&);
+    D3DXVECTOR4& operator -= (CONST D3DXVECTOR4&);
+    D3DXVECTOR4& operator *= (FLOAT);
+    D3DXVECTOR4& operator /= (FLOAT);
+
+    D3DXVECTOR4 operator + () const;
+    D3DXVECTOR4 operator - () const;
+
+    D3DXVECTOR4 operator + (CONST D3DXVECTOR4&) const;
+    D3DXVECTOR4 operator - (CONST D3DXVECTOR4&) const;
+    D3DXVECTOR4 operator * (FLOAT) const;
+    D3DXVECTOR4 operator / (FLOAT) const;
+
+    friend D3DXVECTOR4 operator * (FLOAT, CONST D3DXVECTOR4&);
+
+    BOOL operator == (CONST D3DXVECTOR4&) const;
+    BOOL operator != (CONST D3DXVECTOR4&) const;
+#endif /* __cplusplus */
+    FLOAT x, y, z, w;
+} D3DXVECTOR4, *LPD3DXVECTOR4;
+
+#ifdef __cplusplus
+typedef struct D3DXMATRIX : public D3DMATRIX
+{
+    D3DXMATRIX();
+    D3DXMATRIX(CONST FLOAT *pf);
+    D3DXMATRIX(CONST D3DMATRIX& mat);
+    D3DXMATRIX(FLOAT f11, FLOAT f12, FLOAT f13, FLOAT f14,
+               FLOAT f21, FLOAT f22, FLOAT f23, FLOAT f24,
+               FLOAT f31, FLOAT f32, FLOAT f33, FLOAT f34,
+               FLOAT f41, FLOAT f42, FLOAT f43, FLOAT f44);
+
+    FLOAT& operator () (UINT row, UINT col);
+    FLOAT operator () (UINT row, UINT col) const;
+
+    operator FLOAT* ();
+    operator CONST FLOAT* () const;
+
+    D3DXMATRIX& operator *= (CONST D3DXMATRIX&);
+    D3DXMATRIX& operator += (CONST D3DXMATRIX&);
+    D3DXMATRIX& operator -= (CONST D3DXMATRIX&);
+    D3DXMATRIX& operator *= (FLOAT);
+    D3DXMATRIX& operator /= (FLOAT);
+
+    D3DXMATRIX operator + () const;
+    D3DXMATRIX operator - () const;
+
+    D3DXMATRIX operator * (CONST D3DXMATRIX&) const;
+    D3DXMATRIX operator + (CONST D3DXMATRIX&) const;
+    D3DXMATRIX operator - (CONST D3DXMATRIX&) const;
+    D3DXMATRIX operator * (FLOAT) const;
+    D3DXMATRIX operator / (FLOAT) const;
+
+    friend D3DXMATRIX operator * (FLOAT, CONST D3DXMATRIX&);
+
+    BOOL operator == (CONST D3DXMATRIX&) const;
+    BOOL operator != (CONST D3DXMATRIX&) const;
+} D3DXMATRIX, *LPD3DXMATRIX;
+#else /* !__cplusplus */
+typedef struct _D3DMATRIX D3DXMATRIX, *LPD3DXMATRIX;
+#endif /* !__cplusplus */
+
+typedef struct D3DXQUATERNION
+{
+#ifdef __cplusplus
+    D3DXQUATERNION();
+    D3DXQUATERNION(CONST FLOAT *pf);
+    D3DXQUATERNION(FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw);
+
+    operator FLOAT* ();
+    operator CONST FLOAT* () const;
+
+    D3DXQUATERNION& operator += (CONST D3DXQUATERNION&);
+    D3DXQUATERNION& operator -= (CONST D3DXQUATERNION&);
+    D3DXQUATERNION& operator *= (CONST D3DXQUATERNION&);
+    D3DXQUATERNION& operator *= (FLOAT);
+    D3DXQUATERNION& operator /= (FLOAT);
+
+    D3DXQUATERNION  operator + () const;
+    D3DXQUATERNION  operator - () const;
+
+    D3DXQUATERNION operator + (CONST D3DXQUATERNION&) const;
+    D3DXQUATERNION operator - (CONST D3DXQUATERNION&) const;
+    D3DXQUATERNION operator * (CONST D3DXQUATERNION&) const;
+    D3DXQUATERNION operator * (FLOAT) const;
+    D3DXQUATERNION operator / (FLOAT) const;
+
+    friend D3DXQUATERNION operator * (FLOAT, CONST D3DXQUATERNION&);
+
+    BOOL operator == (CONST D3DXQUATERNION&) const;
+    BOOL operator != (CONST D3DXQUATERNION&) const;
+#endif /* __cplusplus */
+    FLOAT x, y, z, w;
+} D3DXQUATERNION, *LPD3DXQUATERNION;
+
+typedef struct D3DXPLANE
+{
+#ifdef __cplusplus
+    D3DXPLANE();
+    D3DXPLANE(CONST FLOAT *pf);
+    D3DXPLANE(FLOAT fa, FLOAT fb, FLOAT fc, FLOAT fd);
+
+    operator FLOAT* ();
+    operator CONST FLOAT* () const;
+
+    D3DXPLANE operator + () const;
+    D3DXPLANE operator - () const;
+
+    BOOL operator == (CONST D3DXPLANE&) const;
+    BOOL operator != (CONST D3DXPLANE&) const;
+#endif /* __cplusplus */
+    FLOAT a, b, c, d;
+} D3DXPLANE, *LPD3DXPLANE;
+
+typedef struct D3DXCOLOR
+{
+#ifdef __cplusplus
+    D3DXCOLOR();
+    D3DXCOLOR(DWORD col);
+    D3DXCOLOR(CONST FLOAT *pf);
+    D3DXCOLOR(CONST D3DCOLORVALUE& col);
+    D3DXCOLOR(FLOAT fr, FLOAT fg, FLOAT fb, FLOAT fa);
+
+    operator DWORD () const;
+
+    operator FLOAT* ();
+    operator CONST FLOAT* () const;
+
+    operator D3DCOLORVALUE* ();
+    operator CONST D3DCOLORVALUE* () const;
+
+    operator D3DCOLORVALUE& ();
+    operator CONST D3DCOLORVALUE& () const;
+
+    D3DXCOLOR& operator += (CONST D3DXCOLOR&);
+    D3DXCOLOR& operator -= (CONST D3DXCOLOR&);
+    D3DXCOLOR& operator *= (FLOAT);
+    D3DXCOLOR& operator /= (FLOAT);
+
+    D3DXCOLOR operator + () const;
+    D3DXCOLOR operator - () const;
+
+    D3DXCOLOR operator + (CONST D3DXCOLOR&) const;
+    D3DXCOLOR operator - (CONST D3DXCOLOR&) const;
+    D3DXCOLOR operator * (FLOAT) const;
+    D3DXCOLOR operator / (FLOAT) const;
+
+    friend D3DXCOLOR operator * (FLOAT, CONST D3DXCOLOR&);
+
+    BOOL operator == (CONST D3DXCOLOR&) const;
+    BOOL operator != (CONST D3DXCOLOR&) const;
+#endif /* __cplusplus */
+    FLOAT r, g, b, a;
+} D3DXCOLOR, *LPD3DXCOLOR;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+D3DXCOLOR* WINAPI D3DXColorAdjustContrast(D3DXCOLOR *pout, CONST D3DXCOLOR *pc, FLOAT s);
+D3DXCOLOR* WINAPI D3DXColorAdjustSaturation(D3DXCOLOR *pout, CONST D3DXCOLOR *pc, FLOAT s);
+
+D3DXMATRIX* WINAPI D3DXMatrixAffineTransformation(D3DXMATRIX *pout, float scaling, D3DXVECTOR3 *rotationcenter, D3DXQUATERNION *rotation, D3DXVECTOR3 *translation);
+D3DXMATRIX* WINAPI D3DXMatrixAffineTransformation2D(D3DXMATRIX *pout, FLOAT scaling, CONST D3DXVECTOR2 *protationcenter, FLOAT rotation, CONST D3DXVECTOR2 *ptranslation);
+HRESULT WINAPI D3DXMatrixDecompose(D3DXVECTOR3 *poutscale, D3DXQUATERNION *poutrotation, D3DXVECTOR3 *pouttranslation, D3DXMATRIX *pm);
+FLOAT WINAPI D3DXMatrixDeterminant(CONST D3DXMATRIX *pm);
+D3DXMATRIX* WINAPI D3DXMatrixInverse(D3DXMATRIX *pout, FLOAT *pdeterminant, CONST D3DXMATRIX *pm);
+D3DXMATRIX* WINAPI D3DXMatrixLookAtLH(D3DXMATRIX *pout, CONST D3DXVECTOR3 *peye, CONST D3DXVECTOR3 *pat, CONST D3DXVECTOR3 *pup);
+D3DXMATRIX* WINAPI D3DXMatrixLookAtRH(D3DXMATRIX *pout, CONST D3DXVECTOR3 *peye, CONST D3DXVECTOR3 *pat, CONST D3DXVECTOR3 *pup);
+D3DXMATRIX* WINAPI D3DXMatrixMultiply(D3DXMATRIX *pout, CONST D3DXMATRIX *pm1, CONST D3DXMATRIX *pm2);
+D3DXMATRIX* WINAPI D3DXMatrixMultiplyTranspose(D3DXMATRIX *pout, CONST D3DXMATRIX *pm1, CONST D3DXMATRIX *pm2);
+D3DXMATRIX* WINAPI D3DXMatrixOrthoLH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
+D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterLH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
+D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterRH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
+D3DXMATRIX* WINAPI D3DXMatrixOrthoLH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
+D3DXMATRIX* WINAPI D3DXMatrixOrthoRH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveFovLH(D3DXMATRIX *pout, FLOAT fovy, FLOAT aspect, FLOAT zn, FLOAT zf);
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveFovRH(D3DXMATRIX *pout, FLOAT fovy, FLOAT aspect, FLOAT zn, FLOAT zf);
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveLH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenterLH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenterRH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveRH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
+D3DXMATRIX* WINAPI D3DXMatrixReflect(D3DXMATRIX *pout, CONST D3DXPLANE *pplane);
+D3DXMATRIX* WINAPI D3DXMatrixRotationAxis(D3DXMATRIX *pout, CONST D3DXVECTOR3 *pv, FLOAT angle);
+D3DXMATRIX* WINAPI D3DXMatrixRotationQuaternion(D3DXMATRIX *pout, CONST D3DXQUATERNION *pq);
+D3DXMATRIX* WINAPI D3DXMatrixRotationX(D3DXMATRIX *pout, FLOAT angle);
+D3DXMATRIX* WINAPI D3DXMatrixRotationY(D3DXMATRIX *pout, FLOAT angle);
+D3DXMATRIX* WINAPI D3DXMatrixRotationYawPitchRoll(D3DXMATRIX *pout, FLOAT yaw, FLOAT pitch, FLOAT roll);
+D3DXMATRIX* WINAPI D3DXMatrixRotationZ(D3DXMATRIX *pout, FLOAT angle);
+D3DXMATRIX* WINAPI D3DXMatrixScaling(D3DXMATRIX *pout, FLOAT sx, FLOAT sy, FLOAT sz);
+D3DXMATRIX* WINAPI D3DXMatrixShadow(D3DXMATRIX *pout, CONST D3DXVECTOR4 *plight, CONST D3DXPLANE *pPlane);
+D3DXMATRIX* WINAPI D3DXMatrixTransformation(D3DXMATRIX *pout, CONST D3DXVECTOR3 *pscalingcenter, CONST D3DXQUATERNION *pscalingrotation, CONST D3DXVECTOR3 *pscaling, CONST D3DXVECTOR3 *protationcenter, CONST D3DXQUATERNION *protation, CONST D3DXVECTOR3 *ptranslation);
+D3DXMATRIX* WINAPI D3DXMatrixTransformation2D(D3DXMATRIX *pout, CONST D3DXVECTOR2 *pscalingcenter, FLOAT scalingrotation, CONST D3DXVECTOR2 *pscaling, CONST D3DXVECTOR2 *protationcenter, FLOAT rotation, CONST D3DXVECTOR2 *ptranslation);
+D3DXMATRIX* WINAPI D3DXMatrixTranslation(D3DXMATRIX *pout, FLOAT x, FLOAT y, FLOAT z);
+D3DXMATRIX* WINAPI D3DXMatrixTranspose(D3DXMATRIX *pout, CONST D3DXMATRIX *pm);
+
+D3DXPLANE* WINAPI D3DXPlaneFromPointNormal(D3DXPLANE *pout, CONST D3DXVECTOR3 *pvpoint, CONST D3DXVECTOR3 *pvnormal);
+D3DXPLANE* WINAPI D3DXPlaneFromPoints(D3DXPLANE *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2, CONST D3DXVECTOR3 *pv3);
+D3DXVECTOR3* WINAPI D3DXPlaneIntersectLine(D3DXVECTOR3 *pout, CONST D3DXPLANE *pp, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2);
+D3DXPLANE* WINAPI D3DXPlaneNormalize(D3DXPLANE *pout, CONST D3DXPLANE *pp);
+D3DXPLANE* WINAPI D3DXPlaneTransform(D3DXPLANE *pout, CONST D3DXPLANE *pplane, CONST D3DXMATRIX *pm);
+D3DXPLANE* WINAPI D3DXPlaneTransformArray(D3DXPLANE *pout, UINT outstride, CONST D3DXPLANE *pplane, UINT pstride, CONST D3DXMATRIX *pm, UINT n);
+
+D3DXQUATERNION* WINAPI D3DXQuaternionBaryCentric(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2, CONST D3DXQUATERNION *pq3, FLOAT f, FLOAT g);
+D3DXQUATERNION* WINAPI D3DXQuaternionExp(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq);
+D3DXQUATERNION* WINAPI D3DXQuaternionInverse(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq);
+D3DXQUATERNION* WINAPI D3DXQuaternionLn(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq);
+D3DXQUATERNION* WINAPI D3DXQuaternionMultiply(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2);
+D3DXQUATERNION* WINAPI D3DXQuaternionNormalize(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq);
+D3DXQUATERNION* WINAPI D3DXQuaternionRotationAxis(D3DXQUATERNION *pout, CONST D3DXVECTOR3 *pv, FLOAT angle);
+D3DXQUATERNION* WINAPI D3DXQuaternionRotationMatrix(D3DXQUATERNION *pout, CONST D3DXMATRIX *pm);
+D3DXQUATERNION* WINAPI D3DXQuaternionRotationYawPitchRoll(D3DXQUATERNION *pout, FLOAT yaw, FLOAT pitch, FLOAT roll);
+D3DXQUATERNION* WINAPI D3DXQuaternionSlerp(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2, FLOAT t);
+D3DXQUATERNION* WINAPI D3DXQuaternionSquad(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2, CONST D3DXQUATERNION *pq3, CONST D3DXQUATERNION *pq4, FLOAT t);
+void WINAPI D3DXQuaternionToAxisAngle(CONST D3DXQUATERNION *pq, D3DXVECTOR3 *paxis, FLOAT *pangle);
+
+D3DXVECTOR2* WINAPI D3DXVec2BaryCentric(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2, CONST D3DXVECTOR2 *pv3, FLOAT f, FLOAT g);
+D3DXVECTOR2* WINAPI D3DXVec2CatmullRom(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv0, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2, CONST D3DXVECTOR2 *pv3, FLOAT s);
+D3DXVECTOR2* WINAPI D3DXVec2Hermite(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pt1, CONST D3DXVECTOR2 *pv2, CONST D3DXVECTOR2 *pt2, FLOAT s);
+D3DXVECTOR2* WINAPI D3DXVec2Normalize(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv);
+D3DXVECTOR4* WINAPI D3DXVec2Transform(D3DXVECTOR4 *pout, CONST D3DXVECTOR2 *pv, CONST D3DXMATRIX *pm);
+D3DXVECTOR4* WINAPI D3DXVec2TransformArray(D3DXVECTOR4 *pout, UINT outstride, CONST D3DXVECTOR2 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n);
+D3DXVECTOR2* WINAPI D3DXVec2TransformCoord(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv, CONST D3DXMATRIX *pm);
+D3DXVECTOR2* WINAPI D3DXVec2TransformCoordArray(D3DXVECTOR2 *pout, UINT outstride, CONST D3DXVECTOR2 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n);
+D3DXVECTOR2* WINAPI D3DXVec2TransformNormal(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv, CONST D3DXMATRIX *pm);
+D3DXVECTOR2* WINAPI D3DXVec2TransformNormalArray(D3DXVECTOR2 *pout, UINT outstride, CONST D3DXVECTOR2 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n);
+
+D3DXVECTOR3* WINAPI D3DXVec3BaryCentric(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2, CONST D3DXVECTOR3 *pv3, FLOAT f, FLOAT g);
+D3DXVECTOR3* WINAPI D3DXVec3CatmullRom( D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv0, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2, CONST D3DXVECTOR3 *pv3, FLOAT s);
+D3DXVECTOR3* WINAPI D3DXVec3Hermite(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pt1, CONST D3DXVECTOR3 *pv2, CONST D3DXVECTOR3 *pt2, FLOAT s);
+D3DXVECTOR3* WINAPI D3DXVec3Normalize(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv);
+D3DXVECTOR3* WINAPI D3DXVec3Project(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DVIEWPORT9 *pviewport, CONST D3DXMATRIX *pprojection, CONST D3DXMATRIX *pview, CONST D3DXMATRIX *pworld);
+D3DXVECTOR3* WINAPI D3DXVec3ProjectArray(D3DXVECTOR3 *pout, UINT outstride, CONST D3DXVECTOR3 *pv, UINT vstride, CONST D3DVIEWPORT9 *pviewport, CONST D3DXMATRIX *pprojection, CONST D3DXMATRIX *pview, CONST D3DXMATRIX *pworld, UINT n);
+D3DXVECTOR4* WINAPI D3DXVec3Transform(D3DXVECTOR4 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm);
+D3DXVECTOR4* WINAPI D3DXVec3TransformArray(D3DXVECTOR4 *pout, UINT outstride, CONST D3DXVECTOR3 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n);
+D3DXVECTOR3* WINAPI D3DXVec3TransformCoord(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm);
+D3DXVECTOR3* WINAPI D3DXVec3TransformCoordArray(D3DXVECTOR3 *pout, UINT outstride, CONST D3DXVECTOR3 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n);
+D3DXVECTOR3* WINAPI D3DXVec3TransformNormal(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm);
+D3DXVECTOR3* WINAPI D3DXVec3TransformNormalArray(D3DXVECTOR3 *pout, UINT outstride, CONST D3DXVECTOR3 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n);
+D3DXVECTOR3* WINAPI D3DXVec3Unproject(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DVIEWPORT9 *pviewport, CONST D3DXMATRIX *pprojection, CONST D3DXMATRIX *pview, CONST D3DXMATRIX *pworld);
+D3DXVECTOR3* WINAPI D3DXVec3UnprojectArray(D3DXVECTOR3 *pout, UINT outstride, CONST D3DXVECTOR3 *pv, UINT vstride, CONST D3DVIEWPORT9 *pviewport, CONST D3DXMATRIX *pprojection, CONST D3DXMATRIX *pview, CONST D3DXMATRIX *pworld, UINT n);
+
+D3DXVECTOR4* WINAPI D3DXVec4BaryCentric(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2, CONST D3DXVECTOR4 *pv3, FLOAT f, FLOAT g);
+D3DXVECTOR4* WINAPI D3DXVec4CatmullRom(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv0, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2, CONST D3DXVECTOR4 *pv3, FLOAT s);
+D3DXVECTOR4* WINAPI D3DXVec4Cross(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2, CONST D3DXVECTOR4 *pv3);
+D3DXVECTOR4* WINAPI D3DXVec4Hermite(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pt1, CONST D3DXVECTOR4 *pv2, CONST D3DXVECTOR4 *pt2, FLOAT s);
+D3DXVECTOR4* WINAPI D3DXVec4Normalize(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv);
+D3DXVECTOR4* WINAPI D3DXVec4Transform(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv, CONST D3DXMATRIX *pm);
+D3DXVECTOR4* WINAPI D3DXVec4TransformArray(D3DXVECTOR4 *pout, UINT outstride, CONST D3DXVECTOR4 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n);
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <d3dx9math.inl>
+
+#endif /* __D3DX9MATH_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx9math.inl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx9math.inl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx9math.inl	(revision 16410)
@@ -0,0 +1,1268 @@
+/*
+ * Copyright (C) 2007 David Adam
+ * Copyright (C) 2007 Tony Wasserka
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __D3DX9MATH_INL__
+#define __D3DX9MATH_INL__
+
+/* constructors & operators */
+#ifdef __cplusplus
+
+inline D3DXVECTOR2::D3DXVECTOR2()
+{
+}
+
+inline D3DXVECTOR2::D3DXVECTOR2(CONST FLOAT *pf)
+{
+    if(!pf) return;
+    x = pf[0];
+    y = pf[1];
+}
+
+inline D3DXVECTOR2::D3DXVECTOR2(FLOAT fx, FLOAT fy)
+{
+    x = fx;
+    y = fy;
+}
+
+inline D3DXVECTOR2::operator FLOAT* ()
+{
+    return (FLOAT*)&x;
+}
+
+inline D3DXVECTOR2::operator CONST FLOAT* () const
+{
+    return (CONST FLOAT*)&x;
+}
+
+inline D3DXVECTOR2& D3DXVECTOR2::operator += (CONST D3DXVECTOR2& v)
+{
+    x += v.x;
+    y += v.y;
+    return *this;
+}
+
+inline D3DXVECTOR2& D3DXVECTOR2::operator -= (CONST D3DXVECTOR2& v)
+{
+    x -= v.x;
+    y -= v.y;
+    return *this;
+}
+
+inline D3DXVECTOR2& D3DXVECTOR2::operator *= (FLOAT f)
+{
+    x *= f;
+    y *= f;
+    return *this;
+}
+
+inline D3DXVECTOR2& D3DXVECTOR2::operator /= (FLOAT f)
+{
+    x /= f;
+    y /= f;
+    return *this;
+}
+
+inline D3DXVECTOR2 D3DXVECTOR2::operator + () const
+{
+    return *this;
+}
+
+inline D3DXVECTOR2 D3DXVECTOR2::operator - () const
+{
+    return D3DXVECTOR2(-x, -y);
+}
+
+inline D3DXVECTOR2 D3DXVECTOR2::operator + (CONST D3DXVECTOR2& v) const
+{
+    return D3DXVECTOR2(x + v.x, y + v.y);
+}
+
+inline D3DXVECTOR2 D3DXVECTOR2::operator - (CONST D3DXVECTOR2& v) const
+{
+    return D3DXVECTOR2(x - v.x, y - v.y);
+}
+
+inline D3DXVECTOR2 D3DXVECTOR2::operator * (FLOAT f) const
+{
+    return D3DXVECTOR2(x * f, y * f);
+}
+
+inline D3DXVECTOR2 D3DXVECTOR2::operator / (FLOAT f) const
+{
+    return D3DXVECTOR2(x / f, y / f);
+}
+
+inline D3DXVECTOR2 operator * (FLOAT f, CONST D3DXVECTOR2& v)
+{
+    return D3DXVECTOR2(f * v.x, f * v.y);
+}
+
+inline BOOL D3DXVECTOR2::operator == (CONST D3DXVECTOR2& v) const
+{
+    return x == v.x && y == v.y;
+}
+
+inline BOOL D3DXVECTOR2::operator != (CONST D3DXVECTOR2& v) const
+{
+    return x != v.x || y != v.y;
+}
+
+inline D3DXVECTOR3::D3DXVECTOR3()
+{
+}
+
+inline D3DXVECTOR3::D3DXVECTOR3(CONST FLOAT *pf)
+{
+    if(!pf) return;
+    x = pf[0];
+    y = pf[1];
+    z = pf[2];
+}
+
+inline D3DXVECTOR3::D3DXVECTOR3(CONST D3DVECTOR& v)
+{
+    x = v.x;
+    y = v.y;
+    z = v.z;
+}
+
+inline D3DXVECTOR3::D3DXVECTOR3(FLOAT fx, FLOAT fy, FLOAT fz)
+{
+    x = fx;
+    y = fy;
+    z = fz;
+}
+
+inline D3DXVECTOR3::operator FLOAT* ()
+{
+    return (FLOAT*)&x;
+}
+
+inline D3DXVECTOR3::operator CONST FLOAT* () const
+{
+    return (CONST FLOAT*)&x;
+}
+
+inline D3DXVECTOR3& D3DXVECTOR3::operator += (CONST D3DXVECTOR3& v)
+{
+    x += v.x;
+    y += v.y;
+    z += v.z;
+    return *this;
+}
+
+inline D3DXVECTOR3& D3DXVECTOR3::operator -= (CONST D3DXVECTOR3& v)
+{
+    x -= v.x;
+    y -= v.y;
+    z -= v.z;
+    return *this;
+}
+
+inline D3DXVECTOR3& D3DXVECTOR3::operator *= (FLOAT f)
+{
+    x *= f;
+    y *= f;
+    z *= f;
+    return *this;
+}
+
+inline D3DXVECTOR3& D3DXVECTOR3::operator /= (FLOAT f)
+{
+    x /= f;
+    y /= f;
+    z /= f;
+    return *this;
+}
+
+inline D3DXVECTOR3 D3DXVECTOR3::operator + () const
+{
+    return *this;
+}
+
+inline D3DXVECTOR3 D3DXVECTOR3::operator - () const
+{
+    return D3DXVECTOR3(-x, -y, -z);
+}
+
+inline D3DXVECTOR3 D3DXVECTOR3::operator + (CONST D3DXVECTOR3& v) const
+{
+    return D3DXVECTOR3(x + v.x, y + v.y, z + v.z);
+}
+
+inline D3DXVECTOR3 D3DXVECTOR3::operator - (CONST D3DXVECTOR3& v) const
+{
+    return D3DXVECTOR3(x - v.x, y - v.y, z - v.z);
+}
+
+inline D3DXVECTOR3 D3DXVECTOR3::operator * (FLOAT f) const
+{
+    return D3DXVECTOR3(x * f, y * f, z * f);
+}
+
+inline D3DXVECTOR3 D3DXVECTOR3::operator / (FLOAT f) const
+{
+    return D3DXVECTOR3(x / f, y / f, z / f);
+}
+
+inline D3DXVECTOR3 operator * (FLOAT f, CONST D3DXVECTOR3& v)
+{
+    return D3DXVECTOR3(f * v.x, f * v.y, f * v.z);
+}
+
+inline BOOL D3DXVECTOR3::operator == (CONST D3DXVECTOR3& v) const
+{
+    return x == v.x && y == v.y && z == v.z;
+}
+
+inline BOOL D3DXVECTOR3::operator != (CONST D3DXVECTOR3& v) const
+{
+    return x != v.x || y != v.y || z != v.z;
+}
+
+inline D3DXVECTOR4::D3DXVECTOR4()
+{
+}
+
+inline D3DXVECTOR4::D3DXVECTOR4(CONST FLOAT *pf)
+{
+    if(!pf) return;
+    x = pf[0];
+    y = pf[1];
+    z = pf[2];
+    w = pf[3];
+}
+
+inline D3DXVECTOR4::D3DXVECTOR4(FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw)
+{
+    x = fx;
+    y = fy;
+    z = fz;
+    w = fw;
+}
+
+inline D3DXVECTOR4::operator FLOAT* ()
+{
+    return (FLOAT*)&x;
+}
+
+inline D3DXVECTOR4::operator CONST FLOAT* () const
+{
+    return (CONST FLOAT*)&x;
+}
+
+inline D3DXVECTOR4& D3DXVECTOR4::operator += (CONST D3DXVECTOR4& v)
+{
+    x += v.x;
+    y += v.y;
+    z += v.z;
+    w += v.w;
+    return *this;
+}
+
+inline D3DXVECTOR4& D3DXVECTOR4::operator -= (CONST D3DXVECTOR4& v)
+{
+    x -= v.x;
+    y -= v.y;
+    z -= v.z;
+    w -= v.w;
+    return *this;
+}
+
+inline D3DXVECTOR4& D3DXVECTOR4::operator *= (FLOAT f)
+{
+    x *= f;
+    y *= f;
+    z *= f;
+    w *= f;
+    return *this;
+}
+
+inline D3DXVECTOR4& D3DXVECTOR4::operator /= (FLOAT f)
+{
+    x /= f;
+    y /= f;
+    z /= f;
+    w /= f;
+    return *this;
+}
+
+inline D3DXVECTOR4 D3DXVECTOR4::operator + () const
+{
+    return *this;
+}
+
+inline D3DXVECTOR4 D3DXVECTOR4::operator - () const
+{
+    return D3DXVECTOR4(-x, -y, -z, -w);
+}
+
+inline D3DXVECTOR4 D3DXVECTOR4::operator + (CONST D3DXVECTOR4& v) const
+{
+    return D3DXVECTOR4(x + v.x, y + v.y, z + v.z, w + v.w);
+}
+
+inline D3DXVECTOR4 D3DXVECTOR4::operator - (CONST D3DXVECTOR4& v) const
+{
+    return D3DXVECTOR4(x - v.x, y - v.y, z - v.z, w - v.w);
+}
+
+inline D3DXVECTOR4 D3DXVECTOR4::operator * (FLOAT f) const
+{
+    return D3DXVECTOR4(x * f, y * f, z * f, w * f);
+}
+
+inline D3DXVECTOR4 D3DXVECTOR4::operator / (FLOAT f) const
+{
+    return D3DXVECTOR4(x / f, y / f, z / f, w / f);
+}
+
+inline D3DXVECTOR4 operator * (FLOAT f, CONST D3DXVECTOR4& v)
+{
+    return D3DXVECTOR4(f * v.x, f * v.y, f * v.z, f * v.w);
+}
+
+inline BOOL D3DXVECTOR4::operator == (CONST D3DXVECTOR4& v) const
+{
+    return x == v.x && y == v.y && z == v.z && w == v.w;
+}
+
+inline BOOL D3DXVECTOR4::operator != (CONST D3DXVECTOR4& v) const
+{
+    return x != v.x || y != v.y || z != v.z || w != v.w;
+}
+
+inline D3DXMATRIX::D3DXMATRIX()
+{
+}
+
+inline D3DXMATRIX::D3DXMATRIX(CONST FLOAT *pf)
+{
+    if(!pf) return;
+    memcpy(&_11, pf, sizeof(D3DXMATRIX));
+}
+
+inline D3DXMATRIX::D3DXMATRIX(CONST D3DMATRIX& mat)
+{
+    memcpy(&_11, &mat, sizeof(D3DXMATRIX));
+}
+
+inline D3DXMATRIX::D3DXMATRIX(FLOAT f11, FLOAT f12, FLOAT f13, FLOAT f14,
+                              FLOAT f21, FLOAT f22, FLOAT f23, FLOAT f24,
+                              FLOAT f31, FLOAT f32, FLOAT f33, FLOAT f34,
+                              FLOAT f41, FLOAT f42, FLOAT f43, FLOAT f44)
+{
+    _11 = f11; _12 = f12; _13 = f13; _14 = f14;
+    _21 = f21; _22 = f22; _23 = f23; _24 = f24;
+    _31 = f31; _32 = f32; _33 = f33; _34 = f34;
+    _41 = f41; _42 = f42; _43 = f43; _44 = f44;
+}
+
+inline FLOAT& D3DXMATRIX::operator () (UINT row, UINT col)
+{
+    return m[row][col];
+}
+
+inline FLOAT D3DXMATRIX::operator () (UINT row, UINT col) const
+{
+    return m[row][col];
+}
+
+inline D3DXMATRIX::operator FLOAT* ()
+{
+    return (FLOAT*)&_11;
+}
+
+inline D3DXMATRIX::operator CONST FLOAT* () const
+{
+    return (CONST FLOAT*)&_11;
+}
+
+inline D3DXMATRIX& D3DXMATRIX::operator *= (CONST D3DXMATRIX& mat)
+{
+    D3DXMatrixMultiply(this, this, &mat);
+    return *this;
+}
+
+inline D3DXMATRIX& D3DXMATRIX::operator += (CONST D3DXMATRIX& mat)
+{
+    _11 += mat._11; _12 += mat._12; _13 += mat._13; _14 += mat._14;
+    _21 += mat._21; _22 += mat._22; _23 += mat._23; _24 += mat._24;
+    _31 += mat._31; _32 += mat._32; _33 += mat._33; _34 += mat._34;
+    _41 += mat._41; _42 += mat._42; _43 += mat._43; _44 += mat._44;
+    return *this;
+}
+
+inline D3DXMATRIX& D3DXMATRIX::operator -= (CONST D3DXMATRIX& mat)
+{
+    _11 -= mat._11; _12 -= mat._12; _13 -= mat._13; _14 -= mat._14;
+    _21 -= mat._21; _22 -= mat._22; _23 -= mat._23; _24 -= mat._24;
+    _31 -= mat._31; _32 -= mat._32; _33 -= mat._33; _34 -= mat._34;
+    _41 -= mat._41; _42 -= mat._42; _43 -= mat._43; _44 -= mat._44;
+    return *this;
+}
+
+inline D3DXMATRIX& D3DXMATRIX::operator *= (FLOAT f)
+{
+    _11 *= f; _12 *= f; _13 *= f; _14 *= f;
+    _21 *= f; _22 *= f; _23 *= f; _24 *= f;
+    _31 *= f; _32 *= f; _33 *= f; _34 *= f;
+    _41 *= f; _42 *= f; _43 *= f; _44 *= f;
+    return *this;
+}
+
+inline D3DXMATRIX& D3DXMATRIX::operator /= (FLOAT f)
+{
+    FLOAT inv = 1.0f / f;
+    _11 *= inv; _12 *= inv; _13 *= inv; _14 *= inv;
+    _21 *= inv; _22 *= inv; _23 *= inv; _24 *= inv;
+    _31 *= inv; _32 *= inv; _33 *= inv; _34 *= inv;
+    _41 *= inv; _42 *= inv; _43 *= inv; _44 *= inv;
+    return *this;
+}
+
+inline D3DXMATRIX D3DXMATRIX::operator + () const
+{
+    return *this;
+}
+
+inline D3DXMATRIX D3DXMATRIX::operator - () const
+{
+    return D3DXMATRIX(-_11, -_12, -_13, -_14,
+                      -_21, -_22, -_23, -_24,
+                      -_31, -_32, -_33, -_34,
+                      -_41, -_42, -_43, -_44);
+}
+
+inline D3DXMATRIX D3DXMATRIX::operator * (CONST D3DXMATRIX& mat) const
+{
+    D3DXMATRIX buf;
+    D3DXMatrixMultiply(&buf, this, &mat);
+    return buf;
+}
+
+inline D3DXMATRIX D3DXMATRIX::operator + (CONST D3DXMATRIX& mat) const
+{
+    return D3DXMATRIX(_11 + mat._11, _12 + mat._12, _13 + mat._13, _14 + mat._14,
+                      _21 + mat._21, _22 + mat._22, _23 + mat._23, _24 + mat._24,
+                      _31 + mat._31, _32 + mat._32, _33 + mat._33, _34 + mat._34,
+                      _41 + mat._41, _42 + mat._42, _43 + mat._43, _44 + mat._44);
+}
+
+inline D3DXMATRIX D3DXMATRIX::operator - (CONST D3DXMATRIX& mat) const
+{
+    return D3DXMATRIX(_11 - mat._11, _12 - mat._12, _13 - mat._13, _14 - mat._14,
+                      _21 - mat._21, _22 - mat._22, _23 - mat._23, _24 - mat._24,
+                      _31 - mat._31, _32 - mat._32, _33 - mat._33, _34 - mat._34,
+                      _41 - mat._41, _42 - mat._42, _43 - mat._43, _44 - mat._44);
+}
+
+inline D3DXMATRIX D3DXMATRIX::operator * (FLOAT f) const
+{
+    return D3DXMATRIX(_11 * f, _12 * f, _13 * f, _14 * f,
+                      _21 * f, _22 * f, _23 * f, _24 * f,
+                      _31 * f, _32 * f, _33 * f, _34 * f,
+                      _41 * f, _42 * f, _43 * f, _44 * f);
+}
+
+inline D3DXMATRIX D3DXMATRIX::operator / (FLOAT f) const
+{
+    FLOAT inv = 1.0f / f;
+    return D3DXMATRIX(_11 * inv, _12 * inv, _13 * inv, _14 * inv,
+                      _21 * inv, _22 * inv, _23 * inv, _24 * inv,
+                      _31 * inv, _32 * inv, _33 * inv, _34 * inv,
+                      _41 * inv, _42 * inv, _43 * inv, _44 * inv);
+}
+
+inline D3DXMATRIX operator * (FLOAT f, CONST D3DXMATRIX& mat)
+{
+    return D3DXMATRIX(f * mat._11, f * mat._12, f * mat._13, f * mat._14,
+                      f * mat._21, f * mat._22, f * mat._23, f * mat._24,
+                      f * mat._31, f * mat._32, f * mat._33, f * mat._34,
+                      f * mat._41, f * mat._42, f * mat._43, f * mat._44);
+}
+
+inline BOOL D3DXMATRIX::operator == (CONST D3DXMATRIX& mat) const
+{
+    return (memcmp(this, &mat, sizeof(D3DXMATRIX)) == 0);
+}
+
+inline BOOL D3DXMATRIX::operator != (CONST D3DXMATRIX& mat) const
+{
+    return (memcmp(this, &mat, sizeof(D3DXMATRIX)) != 0);
+}
+
+inline D3DXQUATERNION::D3DXQUATERNION()
+{
+}
+
+inline D3DXQUATERNION::D3DXQUATERNION(CONST FLOAT *pf)
+{
+    if(!pf) return;
+    x = pf[0];
+    y = pf[1];
+    z = pf[2];
+    w = pf[3];
+}
+
+inline D3DXQUATERNION::D3DXQUATERNION(FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw)
+{
+    x = fx;
+    y = fy;
+    z = fz;
+    w = fw;
+}
+
+inline D3DXQUATERNION::operator FLOAT* ()
+{
+    return (FLOAT*)&x;
+}
+
+inline D3DXQUATERNION::operator CONST FLOAT* () const
+{
+    return (CONST FLOAT*)&x;
+}
+
+inline D3DXQUATERNION& D3DXQUATERNION::operator += (CONST D3DXQUATERNION& quat)
+{
+    x += quat.x;
+    y += quat.y;
+    z += quat.z;
+    w += quat.w;
+    return *this;
+}
+
+inline D3DXQUATERNION& D3DXQUATERNION::operator -= (CONST D3DXQUATERNION& quat)
+{
+    x -= quat.x;
+    y -= quat.y;
+    z -= quat.z;
+    w -= quat.w;
+    return *this;
+}
+
+/* TODO: uncomment this when D3DXQuaternionMultiply has been implemented
+inline D3DXQUATERNION& D3DXQUATERNION::operator *= (CONST D3DXQUATERNION& quat)
+{
+    D3DXQuaternionMultiply(this, this, &quat);
+    return *this;
+}
+*/
+
+inline D3DXQUATERNION& D3DXQUATERNION::operator *= (FLOAT f)
+{
+    x *= f;
+    y *= f;
+    z *= f;
+    w *= f;
+    return *this;
+}
+
+inline D3DXQUATERNION& D3DXQUATERNION::operator /= (FLOAT f)
+{
+    FLOAT inv = 1.0f / f;
+    x *= inv;
+    y *= inv;
+    z *= inv;
+    w *= inv;
+    return *this;
+}
+
+inline D3DXQUATERNION D3DXQUATERNION::operator + () const
+{
+    return *this;
+}
+
+inline D3DXQUATERNION D3DXQUATERNION::operator - () const
+{
+    return D3DXQUATERNION(-x, -y, -z, -w);
+}
+
+inline D3DXQUATERNION D3DXQUATERNION::operator + (CONST D3DXQUATERNION& quat) const
+{
+    return D3DXQUATERNION(x + quat.x, y + quat.y, z + quat.z, w + quat.w);
+}
+
+inline D3DXQUATERNION D3DXQUATERNION::operator - (CONST D3DXQUATERNION& quat) const
+{
+    return D3DXQUATERNION(x - quat.x, y - quat.y, z - quat.z, w - quat.w);
+}
+
+/* TODO: uncomment this when D3DXQuaternionMultiply has been implemented
+inline D3DXQUATERNION D3DXQUATERNION::operator * (CONST D3DXQUATERNION& quat) const
+{
+    D3DXQUATERNION buf;
+    D3DXQuaternionMultiply(&buf, this, &quat);
+    return buf;
+}
+*/
+
+inline D3DXQUATERNION D3DXQUATERNION::operator * (FLOAT f) const
+{
+    return D3DXQUATERNION(x * f, y * f, z * f, w * f);
+}
+
+inline D3DXQUATERNION D3DXQUATERNION::operator / (FLOAT f) const
+{
+    FLOAT inv = 1.0f / f;
+    return D3DXQUATERNION(x * inv, y * inv, z * inv, w * inv);
+}
+
+inline D3DXQUATERNION operator * (FLOAT f, CONST D3DXQUATERNION& quat)
+{
+    return D3DXQUATERNION(f * quat.x, f * quat.y, f * quat.z, f * quat.w);
+}
+
+inline BOOL D3DXQUATERNION::operator == (CONST D3DXQUATERNION& quat) const
+{
+    return x == quat.x && y == quat.y && z == quat.z && w == quat.w;
+}
+
+inline BOOL D3DXQUATERNION::operator != (CONST D3DXQUATERNION& quat) const
+{
+    return x != quat.x || y != quat.y || z != quat.z || w != quat.w;
+}
+
+inline D3DXPLANE::D3DXPLANE()
+{
+}
+
+inline D3DXPLANE::D3DXPLANE(CONST FLOAT *pf)
+{
+    if(!pf) return;
+    a = pf[0];
+    b = pf[1];
+    c = pf[2];
+    d = pf[3];
+}
+
+inline D3DXPLANE::D3DXPLANE(FLOAT fa, FLOAT fb, FLOAT fc, FLOAT fd)
+{
+    a = fa;
+    b = fb;
+    c = fc;
+    d = fd;
+}
+
+inline D3DXPLANE::operator FLOAT* ()
+{
+    return (FLOAT*)&a;
+}
+
+inline D3DXPLANE::operator CONST FLOAT* () const
+{
+    return (CONST FLOAT*)&a;
+}
+
+inline D3DXPLANE D3DXPLANE::operator + () const
+{
+    return *this;
+}
+
+inline D3DXPLANE D3DXPLANE::operator - () const
+{
+    return D3DXPLANE(-a, -b, -c, -d);
+}
+
+inline BOOL D3DXPLANE::operator == (CONST D3DXPLANE& pl) const
+{
+    return a == pl.a && b == pl.b && c == pl.c && d == pl.d;
+}
+
+inline BOOL D3DXPLANE::operator != (CONST D3DXPLANE& pl) const
+{
+    return a != pl.a || b != pl.b || c != pl.c || d != pl.d;
+}
+
+inline D3DXCOLOR::D3DXCOLOR()
+{
+}
+
+inline D3DXCOLOR::D3DXCOLOR(DWORD col)
+{
+    CONST FLOAT f = 1.0f / 255.0f;
+    r = f * (FLOAT)(unsigned char)(col >> 16);
+    g = f * (FLOAT)(unsigned char)(col >>  8);
+    b = f * (FLOAT)(unsigned char)col;
+    a = f * (FLOAT)(unsigned char)(col >> 24);
+}
+
+inline D3DXCOLOR::D3DXCOLOR(CONST FLOAT *pf)
+{
+    if(!pf) return;
+    r = pf[0];
+    g = pf[1];
+    b = pf[2];
+    a = pf[3];
+}
+
+inline D3DXCOLOR::D3DXCOLOR(CONST D3DCOLORVALUE& col)
+{
+    r = col.r;
+    g = col.g;
+    b = col.b;
+    a = col.a;
+}
+
+inline D3DXCOLOR::D3DXCOLOR(FLOAT fr, FLOAT fg, FLOAT fb, FLOAT fa)
+{
+    r = fr;
+    g = fg;
+    b = fb;
+    a = fa;
+}
+
+inline D3DXCOLOR::operator DWORD () const
+{
+    DWORD _r = r >= 1.0f ? 0xff : r <= 0.0f ? 0x00 : (DWORD)(r * 255.0f + 0.5f);
+    DWORD _g = g >= 1.0f ? 0xff : g <= 0.0f ? 0x00 : (DWORD)(g * 255.0f + 0.5f);
+    DWORD _b = b >= 1.0f ? 0xff : b <= 0.0f ? 0x00 : (DWORD)(b * 255.0f + 0.5f);
+    DWORD _a = a >= 1.0f ? 0xff : a <= 0.0f ? 0x00 : (DWORD)(a * 255.0f + 0.5f);
+
+    return (_a << 24) | (_r << 16) | (_g << 8) | _b;
+}
+
+inline D3DXCOLOR::operator FLOAT * ()
+{
+    return (FLOAT*)&r;
+}
+
+inline D3DXCOLOR::operator CONST FLOAT * () const
+{
+    return (CONST FLOAT*)&r;
+}
+
+inline D3DXCOLOR::operator D3DCOLORVALUE * ()
+{
+    return (D3DCOLORVALUE*)&r;
+}
+
+inline D3DXCOLOR::operator CONST D3DCOLORVALUE * () const
+{
+    return (CONST D3DCOLORVALUE*)&r;
+}
+
+inline D3DXCOLOR::operator D3DCOLORVALUE& ()
+{
+    return *((D3DCOLORVALUE*)&r);
+}
+
+inline D3DXCOLOR::operator CONST D3DCOLORVALUE& () const
+{
+    return *((CONST D3DCOLORVALUE*)&r);
+}
+
+inline D3DXCOLOR& D3DXCOLOR::operator += (CONST D3DXCOLOR& col)
+{
+    r += col.r;
+    g += col.g;
+    b += col.b;
+    a += col.a;
+    return *this;
+}
+
+inline D3DXCOLOR& D3DXCOLOR::operator -= (CONST D3DXCOLOR& col)
+{
+    r -= col.r;
+    g -= col.g;
+    b -= col.b;
+    a -= col.a;
+    return *this;
+}
+
+inline D3DXCOLOR& D3DXCOLOR::operator *= (FLOAT f)
+{
+    r *= f;
+    g *= f;
+    b *= f;
+    a *= f;
+    return *this;
+}
+
+inline D3DXCOLOR& D3DXCOLOR::operator /= (FLOAT f)
+{
+    FLOAT inv = 1.0f / f;
+    r *= inv;
+    g *= inv;
+    b *= inv;
+    a *= inv;
+    return *this;
+}
+
+inline D3DXCOLOR D3DXCOLOR::operator + () const
+{
+    return *this;
+}
+
+inline D3DXCOLOR D3DXCOLOR::operator - () const
+{
+    return D3DXCOLOR(-r, -g, -b, -a);
+}
+
+inline D3DXCOLOR D3DXCOLOR::operator + (CONST D3DXCOLOR& col) const
+{
+    return D3DXCOLOR(r + col.r, g + col.g, b + col.b, a + col.a);
+}
+
+inline D3DXCOLOR D3DXCOLOR::operator - (CONST D3DXCOLOR& col) const
+{
+    return D3DXCOLOR(r - col.r, g - col.g, b - col.b, a - col.a);
+}
+
+inline D3DXCOLOR D3DXCOLOR::operator * (FLOAT f) const
+{
+    return D3DXCOLOR(r * f, g * f, b * f, a * f);
+}
+
+inline D3DXCOLOR D3DXCOLOR::operator / (FLOAT f) const
+{
+    FLOAT inv = 1.0f / f;
+    return D3DXCOLOR(r * inv, g * inv, b * inv, a * inv);
+}
+
+inline D3DXCOLOR operator * (FLOAT f, CONST D3DXCOLOR& col)
+{
+    return D3DXCOLOR(f * col.r, f * col.g, f * col.b, f * col.a);
+}
+
+inline BOOL D3DXCOLOR::operator == (CONST D3DXCOLOR& col) const
+{
+    return r == col.r && g == col.g && b == col.b && a == col.a;
+}
+
+inline BOOL D3DXCOLOR::operator != (CONST D3DXCOLOR& col) const
+{
+    return r != col.r || g != col.g || b != col.b || a != col.a;
+}
+
+#endif /* __cplusplus */
+
+/*_______________D3DXCOLOR_____________________*/
+
+static inline D3DXCOLOR* D3DXColorAdd(D3DXCOLOR *pout, CONST D3DXCOLOR *pc1, CONST D3DXCOLOR *pc2)
+{
+    if ( !pout || !pc1 || !pc2 ) return NULL;
+    pout->r = (pc1->r) + (pc2->r);
+    pout->g = (pc1->g) + (pc2->g);
+    pout->b = (pc1->b) + (pc2->b);
+    pout->a = (pc1->a) + (pc2->a);
+    return pout;
+}
+
+static inline D3DXCOLOR* D3DXColorLerp(D3DXCOLOR *pout, CONST D3DXCOLOR *pc1, CONST D3DXCOLOR *pc2, FLOAT s)
+{
+    if ( !pout || !pc1 || !pc2 ) return NULL;
+    pout->r = (1-s) * (pc1->r) + s *(pc2->r);
+    pout->g = (1-s) * (pc1->g) + s *(pc2->g);
+    pout->b = (1-s) * (pc1->b) + s *(pc2->b);
+    pout->a = (1-s) * (pc1->a) + s *(pc2->a);
+    return pout;
+}
+
+static inline D3DXCOLOR* D3DXColorModulate(D3DXCOLOR *pout, CONST D3DXCOLOR *pc1, CONST D3DXCOLOR *pc2)
+{
+    if ( !pout || !pc1 || !pc2 ) return NULL;
+    pout->r = (pc1->r) * (pc2->r);
+    pout->g = (pc1->g) * (pc2->g);
+    pout->b = (pc1->b) * (pc2->b);
+    pout->a = (pc1->a) * (pc2->a);
+    return pout;
+}
+
+static inline D3DXCOLOR* D3DXColorNegative(D3DXCOLOR *pout, CONST D3DXCOLOR *pc)
+{
+    if ( !pout || !pc ) return NULL;
+    pout->r = 1.0f - pc->r;
+    pout->g = 1.0f - pc->g;
+    pout->b = 1.0f - pc->b;
+    pout->a = pc->a;
+    return pout;
+}
+
+static inline D3DXCOLOR* D3DXColorScale(D3DXCOLOR *pout, CONST D3DXCOLOR *pc, FLOAT s)
+{
+    if ( !pout || !pc ) return NULL;
+    pout->r = s* (pc->r);
+    pout->g = s* (pc->g);
+    pout->b = s* (pc->b);
+    pout->a = s* (pc->a);
+    return pout;
+}
+
+static inline D3DXCOLOR* D3DXColorSubtract(D3DXCOLOR *pout, CONST D3DXCOLOR *pc1, CONST D3DXCOLOR *pc2)
+{
+    if ( !pout || !pc1 || !pc2 ) return NULL;
+    pout->r = (pc1->r) - (pc2->r);
+    pout->g = (pc1->g) - (pc2->g);
+    pout->b = (pc1->b) - (pc2->b);
+    pout->a = (pc1->a) - (pc2->a);
+    return pout;
+}
+
+/*_______________D3DXVECTOR2________________________*/
+
+static inline D3DXVECTOR2* D3DXVec2Add(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = pv1->x + pv2->x;
+    pout->y = pv1->y + pv2->y;
+    return pout;
+}
+
+static inline FLOAT D3DXVec2CCW(CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2)
+{
+    if ( !pv1 || !pv2) return 0.0f;
+    return ( (pv1->x) * (pv2->y) - (pv1->y) * (pv2->x) );
+}
+
+static inline FLOAT D3DXVec2Dot(CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2)
+{
+    if ( !pv1 || !pv2) return 0.0f;
+    return ( (pv1->x * pv2->x + pv1->y * pv2->y) );
+}
+
+static inline FLOAT D3DXVec2Length(CONST D3DXVECTOR2 *pv)
+{
+    if (!pv) return 0.0f;
+    return sqrt( (pv->x) * (pv->x) + (pv->y) * (pv->y) );
+}
+
+static inline FLOAT D3DXVec2LengthSq(CONST D3DXVECTOR2 *pv)
+{
+    if (!pv) return 0.0f;
+    return( (pv->x) * (pv->x) + (pv->y) * (pv->y) );
+}
+
+static inline D3DXVECTOR2* D3DXVec2Lerp(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2, FLOAT s)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = (1-s) * (pv1->x) + s * (pv2->x);
+    pout->y = (1-s) * (pv1->y) + s * (pv2->y);
+    return pout;
+}
+
+static inline D3DXVECTOR2* D3DXVec2Maximize(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = max(pv1->x , pv2->x);
+    pout->y = max(pv1->y , pv2->y);
+    return pout;
+}
+
+static inline D3DXVECTOR2* D3DXVec2Minimize(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = min(pv1->x , pv2->x);
+    pout->y = min(pv1->y , pv2->y);
+    return pout;
+}
+
+static inline D3DXVECTOR2* D3DXVec2Scale(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv, FLOAT s)
+{
+    if ( !pout || !pv) return NULL;
+    pout->x = s * (pv->x);
+    pout->y = s * (pv->y);
+    return pout;
+}
+
+static inline D3DXVECTOR2* D3DXVec2Subtract(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = pv1->x - pv2->x;
+    pout->y = pv1->y - pv2->y;
+    return pout;
+}
+
+/*__________________D3DXVECTOR3_______________________*/
+
+static inline D3DXVECTOR3* D3DXVec3Add(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = pv1->x + pv2->x;
+    pout->y = pv1->y + pv2->y;
+    pout->z = pv1->z + pv2->z;
+    return pout;
+}
+
+static inline D3DXVECTOR3* D3DXVec3Cross(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = (pv1->y) * (pv2->z) - (pv1->z) * (pv2->y);
+    pout->y = (pv1->z) * (pv2->x) - (pv1->x) * (pv2->z);
+    pout->z = (pv1->x) * (pv2->y) - (pv1->y) * (pv2->x);
+    return pout;
+}
+
+static inline FLOAT D3DXVec3Dot(CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2)
+{
+    if ( !pv1 || !pv2 ) return 0.0f;
+    return (pv1->x) * (pv2->x) + (pv1->y) * (pv2->y) + (pv1->z) * (pv2->z);
+}
+
+static inline FLOAT D3DXVec3Length(CONST D3DXVECTOR3 *pv)
+{
+    if (!pv) return 0.0f;
+    return sqrt( (pv->x) * (pv->x) + (pv->y) * (pv->y) + (pv->z) * (pv->z) );
+}
+
+static inline FLOAT D3DXVec3LengthSq(CONST D3DXVECTOR3 *pv)
+{
+    if (!pv) return 0.0f;
+    return (pv->x) * (pv->x) + (pv->y) * (pv->y) + (pv->z) * (pv->z);
+}
+
+static inline D3DXVECTOR3* D3DXVec3Lerp(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2, FLOAT s)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = (1-s) * (pv1->x) + s * (pv2->x);
+    pout->y = (1-s) * (pv1->y) + s * (pv2->y);
+    pout->z = (1-s) * (pv1->z) + s * (pv2->z);
+    return pout;
+}
+
+static inline D3DXVECTOR3* D3DXVec3Maximize(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = max(pv1->x , pv2->x);
+    pout->y = max(pv1->y , pv2->y);
+    pout->z = max(pv1->z , pv2->z);
+    return pout;
+}
+
+static inline D3DXVECTOR3* D3DXVec3Minimize(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = min(pv1->x , pv2->x);
+    pout->y = min(pv1->y , pv2->y);
+    pout->z = min(pv1->z , pv2->z);
+    return pout;
+}
+
+static inline D3DXVECTOR3* D3DXVec3Scale(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, FLOAT s)
+{
+    if ( !pout || !pv) return NULL;
+    pout->x = s * (pv->x);
+    pout->y = s * (pv->y);
+    pout->z = s * (pv->z);
+    return pout;
+}
+
+static inline D3DXVECTOR3* D3DXVec3Subtract(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = pv1->x - pv2->x;
+    pout->y = pv1->y - pv2->y;
+    pout->z = pv1->z - pv2->z;
+    return pout;
+}
+/*__________________D3DXVECTOR4_______________________*/
+
+static inline D3DXVECTOR4* D3DXVec4Add(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = pv1->x + pv2->x;
+    pout->y = pv1->y + pv2->y;
+    pout->z = pv1->z + pv2->z;
+    pout->w = pv1->w + pv2->w;
+    return pout;
+}
+
+static inline FLOAT D3DXVec4Dot(CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2)
+{
+    if (!pv1 || !pv2 ) return 0.0f;
+    return (pv1->x) * (pv2->x) + (pv1->y) * (pv2->y) + (pv1->z) * (pv2->z) + (pv1->w) * (pv2->w);
+}
+
+static inline FLOAT D3DXVec4Length(CONST D3DXVECTOR4 *pv)
+{
+    if (!pv) return 0.0f;
+    return sqrt( (pv->x) * (pv->x) + (pv->y) * (pv->y) + (pv->z) * (pv->z) + (pv->w) * (pv->w) );
+}
+
+static inline FLOAT D3DXVec4LengthSq(CONST D3DXVECTOR4 *pv)
+{
+    if (!pv) return 0.0f;
+    return (pv->x) * (pv->x) + (pv->y) * (pv->y) + (pv->z) * (pv->z) + (pv->w) * (pv->w);
+}
+
+static inline D3DXVECTOR4* D3DXVec4Lerp(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2, FLOAT s)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = (1-s) * (pv1->x) + s * (pv2->x);
+    pout->y = (1-s) * (pv1->y) + s * (pv2->y);
+    pout->z = (1-s) * (pv1->z) + s * (pv2->z);
+    pout->w = (1-s) * (pv1->w) + s * (pv2->w);
+    return pout;
+}
+
+
+static inline D3DXVECTOR4* D3DXVec4Maximize(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = max(pv1->x , pv2->x);
+    pout->y = max(pv1->y , pv2->y);
+    pout->z = max(pv1->z , pv2->z);
+    pout->w = max(pv1->w , pv2->w);
+    return pout;
+}
+
+static inline D3DXVECTOR4* D3DXVec4Minimize(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = min(pv1->x , pv2->x);
+    pout->y = min(pv1->y , pv2->y);
+    pout->z = min(pv1->z , pv2->z);
+    pout->w = min(pv1->w , pv2->w);
+    return pout;
+}
+
+static inline D3DXVECTOR4* D3DXVec4Scale(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv, FLOAT s)
+{
+    if ( !pout || !pv) return NULL;
+    pout->x = s * (pv->x);
+    pout->y = s * (pv->y);
+    pout->z = s * (pv->z);
+    pout->w = s * (pv->w);
+    return pout;
+}
+
+static inline D3DXVECTOR4* D3DXVec4Subtract(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2)
+{
+    if ( !pout || !pv1 || !pv2) return NULL;
+    pout->x = pv1->x - pv2->x;
+    pout->y = pv1->y - pv2->y;
+    pout->z = pv1->z - pv2->z;
+    pout->w = pv1->w - pv2->w;
+    return pout;
+}
+
+/*__________________D3DXMatrix____________________*/
+#ifdef NONAMELESSUNION
+# define D3DX_U(x)  (x).u
+#else
+# define D3DX_U(x)  (x)
+#endif
+
+static inline D3DXMATRIX* D3DXMatrixIdentity(D3DXMATRIX *pout)
+{
+    if ( !pout ) return NULL;
+    D3DX_U(*pout).m[0][1] = 0.0f;
+    D3DX_U(*pout).m[0][2] = 0.0f;
+    D3DX_U(*pout).m[0][3] = 0.0f;
+    D3DX_U(*pout).m[1][0] = 0.0f;
+    D3DX_U(*pout).m[1][2] = 0.0f;
+    D3DX_U(*pout).m[1][3] = 0.0f;
+    D3DX_U(*pout).m[2][0] = 0.0f;
+    D3DX_U(*pout).m[2][1] = 0.0f;
+    D3DX_U(*pout).m[2][3] = 0.0f;
+    D3DX_U(*pout).m[3][0] = 0.0f;
+    D3DX_U(*pout).m[3][1] = 0.0f;
+    D3DX_U(*pout).m[3][2] = 0.0f;
+    D3DX_U(*pout).m[0][0] = 1.0f;
+    D3DX_U(*pout).m[1][1] = 1.0f;
+    D3DX_U(*pout).m[2][2] = 1.0f;
+    D3DX_U(*pout).m[3][3] = 1.0f;
+    return pout;
+}
+
+static inline BOOL D3DXMatrixIsIdentity(D3DXMATRIX *pm)
+{
+    int i,j;
+    D3DXMATRIX testmatrix;
+
+    if ( !pm ) return FALSE;
+    D3DXMatrixIdentity(&testmatrix);
+    for (i=0; i<4; i++)
+    {
+     for (j=0; j<4; j++)
+     {
+      if ( D3DX_U(*pm).m[i][j] != D3DX_U(testmatrix).m[i][j] ) return FALSE;
+     }
+    }
+    return TRUE;
+}
+#undef D3DX_U
+
+/*__________________D3DXPLANE____________________*/
+
+static inline FLOAT D3DXPlaneDot(CONST D3DXPLANE *pp, CONST D3DXVECTOR4 *pv)
+{
+    if ( !pp || !pv ) return 0.0f;
+    return ( (pp->a) * (pv->x) + (pp->b) * (pv->y) + (pp->c) * (pv->z) + (pp->d) * (pv->w) );
+}
+
+static inline FLOAT D3DXPlaneDotCoord(CONST D3DXPLANE *pp, CONST D3DXVECTOR4 *pv)
+{
+    if ( !pp || !pv ) return 0.0f;
+    return ( (pp->a) * (pv->x) + (pp->b) * (pv->y) + (pp->c) * (pv->z) + (pp->d) );
+}
+
+static inline FLOAT D3DXPlaneDotNormal(CONST D3DXPLANE *pp, CONST D3DXVECTOR4 *pv)
+{
+    if ( !pp || !pv ) return 0.0f;
+    return ( (pp->a) * (pv->x) + (pp->b) * (pv->y) + (pp->c) * (pv->z) );
+}
+
+/*__________________D3DXQUATERNION____________________*/
+
+static inline D3DXQUATERNION* D3DXQuaternionConjugate(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq)
+{
+    if ( !pout || !pq) return NULL;
+    pout->x = -pq->x;
+    pout->y = -pq->y;
+    pout->z = -pq->z;
+    pout->w = pq->w;
+    return pout;
+}
+
+static inline FLOAT D3DXQuaternionDot(CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2)
+{
+    if ( !pq1 || !pq2 ) return 0.0f;
+    return (pq1->x) * (pq2->x) + (pq1->y) * (pq2->y) + (pq1->z) * (pq2->z) + (pq1->w) * (pq2->w);
+}
+
+static inline D3DXQUATERNION* D3DXQuaternionIdentity(D3DXQUATERNION *pout)
+{
+    if ( !pout) return NULL;
+    pout->x = 0.0f;
+    pout->y = 0.0f;
+    pout->z = 0.0f;
+    pout->w = 1.0f;
+    return pout;
+}
+
+static inline BOOL D3DXQuaternionIsIdentity(D3DXQUATERNION *pq)
+{
+    if ( !pq) return FALSE;
+    return ( (pq->x == 0.0f) && (pq->y == 0.0f) && (pq->z == 0.0f) && (pq->w == 1.0f) );
+}
+
+static inline FLOAT D3DXQuaternionLength(CONST D3DXQUATERNION *pq)
+{
+    if (!pq) return 0.0f;
+    return sqrt( (pq->x) * (pq->x) + (pq->y) * (pq->y) + (pq->z) * (pq->z) + (pq->w) * (pq->w) );
+}
+
+static inline FLOAT D3DXQuaternionLengthSq(CONST D3DXQUATERNION *pq)
+{
+    if (!pq) return 0.0f;
+    return (pq->x) * (pq->x) + (pq->y) * (pq->y) + (pq->z) * (pq->z) + (pq->w) * (pq->w);
+}
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx9shader.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx9shader.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx9shader.h	(revision 16410)
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2008 Luis Busquets
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __D3DX9SHADER_H__
+#define __D3DX9SHADER_H__
+
+#include "d3dx9.h"
+
+typedef LPCSTR D3DXHANDLE;
+
+typedef enum D3DXPARAMETER_CLASS
+{
+    D3DXPC_SCALAR,
+    D3DXPC_VECTOR,
+    D3DXPC_MATRIX_ROWS,
+    D3DXPC_MATRIX_COLUMNS,
+    D3DXPC_OBJECT,
+    D3DXPC_STRUCT,
+    D3DXPC_FORCE_DWORD = 0x7fffffff,
+} D3DXPARAMETER_CLASS, *LPD3DXPARAMETER_CLASS;
+
+typedef enum D3DXPARAMETER_TYPE
+{
+    D3DXPT_VOID,
+    D3DXPT_BOOL,
+    D3DXPT_INT,
+    D3DXPT_FLOAT,
+    D3DXPT_STRING,
+    D3DXPT_TEXTURE,
+    D3DXPT_TEXTURE1D,
+    D3DXPT_TEXTURE2D,
+    D3DXPT_TEXTURE3D,
+    D3DXPT_TEXTURECUBE,
+    D3DXPT_SAMPLER,
+    D3DXPT_SAMPLER1D,
+    D3DXPT_SAMPLER2D,
+    D3DXPT_SAMPLER3D,
+    D3DXPT_SAMPLERCUBE,
+    D3DXPT_PIXELSHADER,
+    D3DXPT_VERTEXSHADER,
+    D3DXPT_PIXELFRAGMENT,
+    D3DXPT_VERTEXFRAGMENT,
+    D3DXPT_UNSUPPORTED,
+    D3DXPT_FORCE_DWORD = 0x7fffffff,
+} D3DXPARAMETER_TYPE, *LPD3DXPARAMETER_TYPE;
+
+typedef struct _D3DXMACRO {
+    LPCSTR Name;
+    LPCSTR Definition;
+} D3DXMACRO, *LPD3DXMACRO;
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LPCSTR WINAPI D3DXGetPixelShaderProfile(LPDIRECT3DDEVICE9 device);
+UINT WINAPI D3DXGetShaderSize(const DWORD *byte_code);
+DWORD WINAPI D3DXGetShaderVersion(const DWORD *byte_code);
+LPCSTR WINAPI D3DXGetVertexShaderProfile(LPDIRECT3DDEVICE9 device);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __D3DX9SHADER_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx9tex.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx9tex.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/d3dx9tex.h	(revision 16410)
@@ -0,0 +1,697 @@
+/*
+ * Copyright (C) 2008 Tony Wasserka
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <d3dx9.h>
+
+#ifndef __WINE_D3DX9TEX_H
+#define __WINE_D3DX9TEX_H
+
+/**********************************************
+ ***************** Definitions ****************
+ **********************************************/
+#define D3DX_FILTER_NONE                 0x00000001
+#define D3DX_FILTER_POINT                0x00000002
+#define D3DX_FILTER_LINEAR               0x00000003
+#define D3DX_FILTER_TRIANGLE             0x00000004
+#define D3DX_FILTER_BOX                  0x00000005
+#define D3DX_FILTER_MIRROR_U             0x00010000
+#define D3DX_FILTER_MIRROR_V             0x00020000
+#define D3DX_FILTER_MIRROR_W             0x00040000
+#define D3DX_FILTER_MIRROR               0x00070000
+#define D3DX_FILTER_DITHER               0x00080000
+#define D3DX_FILTER_DITHER_DIFFUSION     0x00100000
+#define D3DX_FILTER_SRGB_IN              0x00200000
+#define D3DX_FILTER_SRGB_OUT             0x00400000
+#define D3DX_FILTER_SRGB                 0x00600000
+
+#define D3DX_NORMALMAP_MIRROR_U          0x00010000
+#define D3DX_NORMALMAP_MIRROR_V          0x00020000
+#define D3DX_NORMALMAP_MIRROR            0x00030000
+#define D3DX_NORMALMAP_INVERTSIGN        0x00080000
+#define D3DX_NORMALMAP_COMPUTE_OCCLUSION 0x00100000
+
+#define D3DX_CHANNEL_RED                 0x00000001
+#define D3DX_CHANNEL_BLUE                0x00000002
+#define D3DX_CHANNEL_GREEN               0x00000004
+#define D3DX_CHANNEL_ALPHA               0x00000008
+#define D3DX_CHANNEL_LUMINANCE           0x00000010
+
+/**********************************************
+ **************** Typedefs ****************
+ **********************************************/
+typedef enum _D3DXIMAGE_FILEFORMAT
+{
+    D3DXIFF_BMP,
+    D3DXIFF_JPG,
+    D3DXIFF_TGA,
+    D3DXIFF_PNG,
+    D3DXIFF_DDS,
+    D3DXIFF_PPM,
+    D3DXIFF_DIB,
+    D3DXIFF_FORCE_DWORD = 0x7fffffff
+} D3DXIMAGE_FILEFORMAT;
+
+typedef struct _D3DXIMAGE_INFO
+{
+    UINT Width;
+    UINT Height;
+    UINT Depth;
+    UINT MipLevels;
+    D3DFORMAT Format;
+    D3DRESOURCETYPE ResourceType;
+    D3DXIMAGE_FILEFORMAT ImageFileFormat;
+} D3DXIMAGE_INFO;
+
+/**********************************************
+ ****************** Functions *****************
+ **********************************************/
+/* Typedefs for callback functions */
+typedef VOID (WINAPI *LPD3DXFILL2D)(D3DXVECTOR4 *out, CONST D3DXVECTOR2 *texcoord, CONST D3DXVECTOR2 *texelsize, LPVOID data);
+typedef VOID (WINAPI *LPD3DXFILL3D)(D3DXVECTOR4 *out, CONST D3DXVECTOR3 *texcoord, CONST D3DXVECTOR3 *texelsize, LPVOID data);
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Image Information */
+HRESULT WINAPI D3DXGetImageInfoFromFileA(LPCSTR file, D3DXIMAGE_INFO *info);
+HRESULT WINAPI D3DXGetImageInfoFromFileW(LPCWSTR file, D3DXIMAGE_INFO *info);
+#define        D3DXGetImageInfoFromFile WINELIB_NAME_AW(D3DXGetImageInfoFromFile)
+
+HRESULT WINAPI D3DXGetImageInfoFromResourceA(HMODULE module, LPCSTR resource, D3DXIMAGE_INFO *info);
+HRESULT WINAPI D3DXGetImageInfoFromResourceW(HMODULE module, LPCWSTR resource, D3DXIMAGE_INFO *info);
+#define        D3DXGetImageInfoFromResource WINELIB_NAME_AW(D3DXGetImageInfoFromResource)
+
+HRESULT WINAPI D3DXGetImageInfoFromFileInMemory(LPCVOID data, UINT datasize, D3DXIMAGE_INFO *info);
+
+
+/* Surface Loading/Saving */
+HRESULT WINAPI D3DXLoadSurfaceFromFileA(       LPDIRECT3DSURFACE9 destsurface,
+                                               CONST PALETTEENTRY *destpalette,
+                                               CONST RECT *destrect,
+                                               LPCSTR srcfile,
+                                               CONST RECT *srcrect,
+                                               DWORD filter,
+                                               D3DCOLOR colorkey,
+                                               D3DXIMAGE_INFO *srcinfo);
+
+HRESULT WINAPI D3DXLoadSurfaceFromFileW(       LPDIRECT3DSURFACE9 destsurface,
+                                               CONST PALETTEENTRY *destpalette,
+                                               CONST RECT *destrect,
+                                               LPCWSTR srcfile,
+                                               CONST RECT *srcrect,
+                                               DWORD filter,
+                                               D3DCOLOR colorkey,
+                                               D3DXIMAGE_INFO *srcinfo);
+#define        D3DXLoadSurfaceFromFile WINELIB_NAME_AW(D3DXLoadSurfaceFromFile)
+
+HRESULT WINAPI D3DXLoadSurfaceFromResourceA(   LPDIRECT3DSURFACE9 destsurface,
+                                               CONST PALETTEENTRY *destpalette,
+                                               CONST RECT *destrect,
+                                               HMODULE srcmodule,
+                                               LPCSTR resource,
+                                               CONST RECT *srcrect,
+                                               DWORD filter,
+                                               D3DCOLOR colorkey,
+                                               D3DXIMAGE_INFO *srcinfo);
+
+HRESULT WINAPI D3DXLoadSurfaceFromResourceW(   LPDIRECT3DSURFACE9 destsurface,
+                                               CONST PALETTEENTRY *destpalette,
+                                               CONST RECT *destrect,
+                                               HMODULE srcmodule,
+                                               LPCWSTR resource,
+                                               CONST RECT *srcrect,
+                                               DWORD filter,
+                                               D3DCOLOR colorkey,
+                                               D3DXIMAGE_INFO *srcinfo);
+#define        D3DXLoadSurfaceFromResource WINELIB_NAME_AW(D3DXLoadSurfaceFromResource)
+
+HRESULT WINAPI D3DXLoadSurfaceFromFileInMemory(LPDIRECT3DSURFACE9 destsurface,
+                                               CONST PALETTEENTRY *destpalette,
+                                               CONST RECT*destrect,
+                                               LPCVOID srcdata,
+                                               UINT srcdatasize,
+                                               CONST RECT *srcrect,
+                                               DWORD filter,
+                                               D3DCOLOR colorkey,
+                                               D3DXIMAGE_INFO *srcinfo);
+
+HRESULT WINAPI D3DXLoadSurfaceFromSurface(     LPDIRECT3DSURFACE9 destsurface,
+                                               CONST PALETTEENTRY *destpalette,
+                                               CONST RECT *destrect,
+                                               LPDIRECT3DSURFACE9 srcsurface,
+                                               CONST PALETTEENTRY *srcpalette,
+                                               CONST RECT *srcrect,
+                                               DWORD filter,
+                                               D3DCOLOR colorkey);
+
+HRESULT WINAPI D3DXLoadSurfaceFromMemory(      LPDIRECT3DSURFACE9 destsurface,
+                                               CONST PALETTEENTRY *destpalette,
+                                               CONST RECT *destrect,
+                                               LPCVOID srcmemory,
+                                               D3DFORMAT srcformat,
+                                               UINT srcpitch,
+                                               CONST PALETTEENTRY *srcpalette,
+                                               CONST RECT *srcrect,
+                                               DWORD filter,
+                                               D3DCOLOR colorkey);
+
+HRESULT WINAPI D3DXSaveSurfaceToFileA(         LPCSTR destfile,
+                                               D3DXIMAGE_FILEFORMAT destformat,
+                                               LPDIRECT3DSURFACE9 srcsurface,
+                                               CONST PALETTEENTRY *srcpalette,
+                                               CONST RECT *srcrect);
+
+HRESULT WINAPI D3DXSaveSurfaceToFileW(         LPCWSTR destfile,
+                                               D3DXIMAGE_FILEFORMAT destformat,
+                                               LPDIRECT3DSURFACE9 srcsurface,
+                                               CONST PALETTEENTRY *srcpalette,
+                                               CONST RECT *srcrect);
+#define        D3DXSaveSurfaceToFile WINELIB_NAME_AW(D3DXSaveSurfaceToFile)
+
+
+/* Volume Loading/Saving */
+HRESULT WINAPI D3DXLoadVolumeFromFileA(       LPDIRECT3DVOLUME9 destvolume,
+                                              CONST PALETTEENTRY *destpalette,
+                                              CONST D3DBOX *destbox,
+                                              LPCSTR srcfile,
+                                              CONST D3DBOX *srcbox,
+                                              DWORD filter,
+                                              D3DCOLOR colorkey,
+                                              D3DXIMAGE_INFO *srcinfo);
+
+HRESULT WINAPI D3DXLoadVolumeFromFileW(       LPDIRECT3DVOLUME9 destVolume,
+                                              CONST PALETTEENTRY *destpalette,
+                                              CONST D3DBOX *destbox,
+                                              LPCWSTR srcfile,
+                                              CONST D3DBOX *srcbox,
+                                              DWORD filter,
+                                              D3DCOLOR colorkey,
+                                              D3DXIMAGE_INFO *srcinfo);
+#define        D3DXLoadVolumeFromFile WINELIB_NAME_AW(D3DXLoadVolumeFromFile)
+
+HRESULT WINAPI D3DXLoadVolumeFromResourceA(   LPDIRECT3DVOLUME9 destVolume,
+                                              CONST PALETTEENTRY *destpalette,
+                                              CONST D3DBOX *destbox,
+                                              HMODULE srcmodule,
+                                              LPCSTR resource,
+                                              CONST D3DBOX *srcbox,
+                                              DWORD filter,
+                                              D3DCOLOR colorkey,
+                                              D3DXIMAGE_INFO *srcinfo);
+
+HRESULT WINAPI D3DXLoadVolumeFromResourceW(   LPDIRECT3DVOLUME9 destVolume,
+                                              CONST PALETTEENTRY *destpalette,
+                                              CONST D3DBOX *destbox,
+                                              HMODULE srcmodule,
+                                              LPCWSTR resource,
+                                              CONST D3DBOX *srcbox,
+                                              DWORD filter,
+                                              D3DCOLOR colorkey,
+                                              D3DXIMAGE_INFO *srcinfo);
+#define        D3DXLoadVolumeFromResource WINELIB_NAME_AW(D3DXLoadVolumeFromResource)
+
+HRESULT WINAPI D3DXLoadVolumeFromFileInMemory(LPDIRECT3DVOLUME9 destvolume,
+                                              CONST PALETTEENTRY *destpalette,
+                                              CONST D3DBOX *destbox,
+                                              LPCVOID srcdata,
+                                              UINT srcdatasize,
+                                              CONST D3DBOX *srcbox,
+                                              DWORD filter,
+                                              D3DCOLOR colorkey,
+                                              D3DXIMAGE_INFO *srcinfo);
+
+HRESULT WINAPI D3DXLoadVolumeFromVolume(      LPDIRECT3DVOLUME9 destvolume,
+                                              CONST PALETTEENTRY *destpalette,
+                                              CONST D3DBOX *destbox,
+                                              LPDIRECT3DVOLUME9 srcvolume,
+                                              CONST PALETTEENTRY *srcpalette,
+                                              CONST D3DBOX *srcbox,
+                                              DWORD filter,
+                                              D3DCOLOR colorkey);
+
+HRESULT WINAPI D3DXLoadVolumeFromMemory(      LPDIRECT3DVOLUME9 destvolume,
+                                              CONST PALETTEENTRY *destpalette,
+                                              CONST D3DBOX *destbox,
+                                              LPCVOID srcmemory,
+                                              D3DFORMAT srcformat,
+                                              UINT srcrowpitch,
+                                              UINT srcslicepitch,
+                                              CONST PALETTEENTRY *srcpalette,
+                                              CONST D3DBOX *srcbox,
+                                              DWORD filter,
+                                              D3DCOLOR colorkey);
+
+HRESULT WINAPI D3DXSaveVolumeToFileA(         LPCSTR destfile,
+                                              D3DXIMAGE_FILEFORMAT destformat,
+                                              LPDIRECT3DVOLUME9 srcvolume,
+                                              CONST PALETTEENTRY *srcpalette,
+                                              CONST D3DBOX *srcbox);
+
+HRESULT WINAPI D3DXSaveVolumeToFileW(         LPCWSTR destfile,
+                                              D3DXIMAGE_FILEFORMAT destformat,
+                                              LPDIRECT3DVOLUME9 srcvolume,
+                                              CONST PALETTEENTRY *srcpalette,
+                                              CONST D3DBOX *srcbox);
+#define        D3DXSaveVolumeToFile WINELIB_NAME_AW(D3DXSaveVolumeToFile)
+
+
+/* Texture, cube texture and volume texture creation */
+HRESULT WINAPI D3DXCheckTextureRequirements(      LPDIRECT3DDEVICE9 device,
+                                                  UINT *width,
+                                                  UINT *height,
+                                                  UINT *miplevels,
+                                                  DWORD usage,
+                                                  D3DFORMAT *format,
+                                                  D3DPOOL pool);
+HRESULT WINAPI D3DXCheckCubeTextureRequirements(  LPDIRECT3DDEVICE9 device,
+                                                  UINT *size,
+                                                  UINT *miplevels,
+                                                  DWORD usage,
+                                                  D3DFORMAT *format,
+                                                  D3DPOOL pool);
+
+HRESULT WINAPI D3DXCheckVolumeTextureRequirements(LPDIRECT3DDEVICE9 device,
+                                                  UINT *width,
+                                                  UINT *height,
+                                                  UINT *depth,
+                                                  UINT *miplevels,
+                                                  DWORD usage,
+                                                  D3DFORMAT *format,
+                                                  D3DPOOL pool);
+
+HRESULT WINAPI D3DXCreateTexture(      LPDIRECT3DDEVICE9 device,
+                                       UINT width,
+                                       UINT height,
+                                       UINT miplevels,
+                                       DWORD usage,
+                                       D3DFORMAT format,
+                                       D3DPOOL pool,
+                                       LPDIRECT3DTEXTURE9 *texture);
+
+HRESULT WINAPI D3DXCreateCubeTexture(  LPDIRECT3DDEVICE9 device,
+                                       UINT size,
+                                       UINT miplevels,
+                                       DWORD usage,
+                                       D3DFORMAT format,
+                                       D3DPOOL pool,
+                                       LPDIRECT3DCUBETEXTURE9 *cube);
+
+HRESULT WINAPI D3DXCreateVolumeTexture(LPDIRECT3DDEVICE9 device,
+                                       UINT width,
+                                       UINT height,
+                                       UINT depth,
+                                       UINT miplevels,
+                                       DWORD usage,
+                                       D3DFORMAT format,
+                                       D3DPOOL pool,
+                                       LPDIRECT3DVOLUMETEXTURE9 *volume);
+
+HRESULT WINAPI D3DXCreateTextureFromFileA(      LPDIRECT3DDEVICE9 device,
+                                                LPCSTR srcfile,
+                                                LPDIRECT3DTEXTURE9 *texture);
+
+HRESULT WINAPI D3DXCreateTextureFromFileW(      LPDIRECT3DDEVICE9 device,
+                                                LPCWSTR srcfile,
+                                                LPDIRECT3DTEXTURE9 *texture);
+#define        D3DXCreateTextureFromFile WINELIB_NAME_AW(D3DXCreateTextureFromFile)
+
+HRESULT WINAPI D3DXCreateCubeTextureFromFileA(  LPDIRECT3DDEVICE9 device,
+                                                LPCSTR srcfile,
+                                                LPDIRECT3DCUBETEXTURE9 *cube);
+
+HRESULT WINAPI D3DXCreateCubeTextureFromFileW(  LPDIRECT3DDEVICE9 device,
+                                                LPCWSTR srcfile,
+                                                LPDIRECT3DCUBETEXTURE9 *cube);
+#define        D3DXCreateCubeTextureFromFile WINELIB_NAME_AW(D3DXCreateCubeTextureFromFile)
+
+HRESULT WINAPI D3DXCreateVolumeTextureFromFileA(LPDIRECT3DDEVICE9 device,
+                                                LPCSTR srcfile,
+                                                LPDIRECT3DVOLUMETEXTURE9 *volume);
+
+HRESULT WINAPI D3DXCreateVolumeTextureFromFileW(LPDIRECT3DDEVICE9 device,
+                                                LPCWSTR srcfile,
+                                                LPDIRECT3DVOLUMETEXTURE9 *volume);
+#define        D3DXCreateVolumeTextureFromFile WINELIB_NAME_AW(D3DXCreateVolumeTextureFromFile)
+
+HRESULT WINAPI D3DXCreateTextureFromResourceA(      LPDIRECT3DDEVICE9 device,
+                                                    HMODULE srcmodule,
+                                                    LPCSTR resource,
+                                                    LPDIRECT3DTEXTURE9 *texture);
+
+HRESULT WINAPI D3DXCreateTextureFromResourceW(      LPDIRECT3DDEVICE9 device,
+                                                    HMODULE srcmodule,
+                                                    LPCWSTR resource,
+                                                    LPDIRECT3DTEXTURE9 *texture);
+#define        D3DXCreateTextureFromResource WINELIB_NAME_AW(D3DXCreateTextureFromResource)
+
+HRESULT WINAPI D3DXCreateCubeTextureFromResourceA(  LPDIRECT3DDEVICE9 device,
+                                                    HMODULE srcmodule,
+                                                    LPCSTR resource,
+                                                    LPDIRECT3DCUBETEXTURE9 *cube);
+HRESULT WINAPI D3DXCreateCubeTextureFromResourceW(  LPDIRECT3DDEVICE9 device,
+                                                    HMODULE srcmodule,
+                                                    LPCWSTR resource,
+                                                    LPDIRECT3DCUBETEXTURE9 *cube);
+#define        D3DXCreateCubeTextureFromResource WINELIB_NAME_AW(D3DXCreateCubeTextureFromResource)
+
+HRESULT WINAPI D3DXCreateVolumeTextureFromResourceA(LPDIRECT3DDEVICE9 device,
+                                                    HMODULE srcmodule,
+                                                    LPCSTR resource,
+                                                    LPDIRECT3DVOLUMETEXTURE9 *volume);
+HRESULT WINAPI D3DXCreateVolumeTextureFromResourceW(LPDIRECT3DDEVICE9 device,
+                                                    HMODULE srcmodule,
+                                                    LPCWSTR resource,
+                                                    LPDIRECT3DVOLUMETEXTURE9 *volume);
+#define        D3DXCreateVolumeTextureFromResource WINELIB_NAME_AW(D3DXCreateVolumeTextureFromResource)
+
+HRESULT WINAPI D3DXCreateTextureFromFileExA(      LPDIRECT3DDEVICE9 device,
+                                                  LPCSTR srcfile,
+                                                  UINT width,
+                                                  UINT height,
+                                                  UINT miplevels,
+                                                  DWORD usage,
+                                                  D3DFORMAT format,
+                                                  D3DPOOL pool,
+                                                  DWORD filter,
+                                                  DWORD mipfilter,
+                                                  D3DCOLOR colorkey,
+                                                  D3DXIMAGE_INFO *srcinfo,
+                                                  PALETTEENTRY *palette,
+                                                  LPDIRECT3DTEXTURE9 *texture);
+
+HRESULT WINAPI D3DXCreateTextureFromFileExW(      LPDIRECT3DDEVICE9 device,
+                                                  LPCWSTR srcfile,
+                                                  UINT width,
+                                                  UINT height,
+                                                  UINT miplevels,
+                                                  DWORD usage,
+                                                  D3DFORMAT format,
+                                                  D3DPOOL pool,
+                                                  DWORD filter,
+                                                  DWORD mipfilter,
+                                                  D3DCOLOR colorkey,
+                                                  D3DXIMAGE_INFO *srcinfo,
+                                                  PALETTEENTRY *palette,
+                                                  LPDIRECT3DTEXTURE9 *texture);
+#define        D3DXCreateTextureFromFileEx WINELIB_NAME_AW(D3DXCreateTextureFromFileEx)
+
+HRESULT WINAPI D3DXCreateCubeTextureFromFileExA(  LPDIRECT3DDEVICE9 device,
+                                                  LPCSTR srcfile,
+                                                  UINT size,
+                                                  UINT miplevels,
+                                                  DWORD usage,
+                                                  D3DFORMAT format,
+                                                  D3DPOOL pool,
+                                                  DWORD filter,
+                                                  DWORD mipfilter,
+                                                  D3DCOLOR colorkey,
+                                                  D3DXIMAGE_INFO *srcinfo,
+                                                  PALETTEENTRY *palette,
+                                                  LPDIRECT3DCUBETEXTURE9 *cube);
+
+HRESULT WINAPI D3DXCreateCubeTextureFromFileExW(  LPDIRECT3DDEVICE9 device,
+                                                  LPCWSTR srcfile,
+                                                  UINT size,
+                                                  UINT miplevels,
+                                                  DWORD usage,
+                                                  D3DFORMAT format,
+                                                  D3DPOOL pool,
+                                                  DWORD filter,
+                                                  DWORD mipfilter,
+                                                  D3DCOLOR colorkey,
+                                                  D3DXIMAGE_INFO *srcinfo,
+                                                  PALETTEENTRY *palette,
+                                                  LPDIRECT3DCUBETEXTURE9 *cube);
+#define        D3DXCreateCubeTextureFromFileEx WINELIB_NAME_AW(D3DXCreateCubeTextureFromFileEx)
+
+HRESULT WINAPI D3DXCreateVolumeTextureFromFileExA(LPDIRECT3DDEVICE9 device,
+                                                  LPCSTR srcfile,
+                                                  UINT width,
+                                                  UINT height,
+                                                  UINT depth,
+                                                  UINT miplevels,
+                                                  DWORD usage,
+                                                  D3DFORMAT format,
+                                                  D3DPOOL pool,
+                                                  DWORD filter,
+                                                  DWORD mipfilter,
+                                                  D3DCOLOR colorkey,
+                                                  D3DXIMAGE_INFO *srcinfo,
+                                                  PALETTEENTRY *palette,
+                                                  LPDIRECT3DVOLUMETEXTURE9 *volume);
+
+HRESULT WINAPI D3DXCreateVolumeTextureFromFileExW(LPDIRECT3DDEVICE9 device,
+                                                  LPCWSTR srcfile,
+                                                  UINT width,
+                                                  UINT height,
+                                                  UINT depth,
+                                                  UINT miplevels,
+                                                  DWORD usage,
+                                                  D3DFORMAT format,
+                                                  D3DPOOL pool,
+                                                  DWORD filter,
+                                                  DWORD mipfilter,
+                                                  D3DCOLOR colorkey,
+                                                  D3DXIMAGE_INFO *srcinfo,
+                                                  PALETTEENTRY *palette,
+                                                  LPDIRECT3DVOLUMETEXTURE9 *volume);
+#define        D3DXCreateVolumeTextureFromFileEx WINELIB_NAME_AW(D3DXCreateVolumeTextureFromFileEx)
+
+HRESULT WINAPI D3DXCreateTextureFromResourceExA(      LPDIRECT3DDEVICE9 device,
+                                                      HMODULE srcmodule,
+                                                      LPCSTR resource,
+                                                      UINT width,
+                                                      UINT height,
+                                                      UINT miplevels,
+                                                      DWORD usage,
+                                                      D3DFORMAT format,
+                                                      D3DPOOL pool,
+                                                      DWORD filter,
+                                                      DWORD mipfilter,
+                                                      D3DCOLOR colorkey,
+                                                      D3DXIMAGE_INFO *srcinfo,
+                                                      PALETTEENTRY *palette,
+                                                      LPDIRECT3DTEXTURE9 *texture);
+
+HRESULT WINAPI D3DXCreateTextureFromResourceExW(      LPDIRECT3DDEVICE9 device,
+                                                      HMODULE srcmodule,
+                                                      LPCWSTR resource,
+                                                      UINT width,
+                                                      UINT height,
+                                                      UINT miplevels,
+                                                      DWORD usage,
+                                                      D3DFORMAT format,
+                                                      D3DPOOL pool,
+                                                      DWORD filter,
+                                                      DWORD mipfilter,
+                                                      D3DCOLOR colorkey,
+                                                      D3DXIMAGE_INFO *srcinfo,
+                                                      PALETTEENTRY *palette,
+                                                      LPDIRECT3DTEXTURE9 *texture);
+#define        D3DXCreateTextureFromResourceEx WINELIB_NAME_AW(D3DXCreateTextureFromResourceEx)
+
+HRESULT WINAPI D3DXCreateCubeTextureFromResourceExA(  LPDIRECT3DDEVICE9 device,
+                                                      HMODULE srcmodule,
+                                                      LPCSTR resource,
+                                                      UINT size,
+                                                      UINT miplevels,
+                                                      DWORD usage,
+                                                      D3DFORMAT format,
+                                                      D3DPOOL pool,
+                                                      DWORD filter,
+                                                      DWORD mipfilter,
+                                                      D3DCOLOR colorkey,
+                                                      D3DXIMAGE_INFO *srcinfo,
+                                                      PALETTEENTRY *palette,
+                                                      LPDIRECT3DCUBETEXTURE9 *cube);
+
+HRESULT WINAPI D3DXCreateCubeTextureFromResourceExW(  LPDIRECT3DDEVICE9 device,
+                                                      HMODULE srcmodule,
+                                                      LPCWSTR resource,
+                                                      UINT size,
+                                                      UINT miplevels,
+                                                      DWORD usage,
+                                                      D3DFORMAT format,
+                                                      D3DPOOL pool,
+                                                      DWORD filter,
+                                                      DWORD mipfilter,
+                                                      D3DCOLOR colorkey,
+                                                      D3DXIMAGE_INFO *srcinfo,
+                                                      PALETTEENTRY *palette,
+                                                      LPDIRECT3DCUBETEXTURE9 *cube);
+#define        D3DXCreateCubeTextureFromResourceEx WINELIB_NAME_AW(D3DXCreateCubeTextureFromResourceEx)
+
+HRESULT WINAPI D3DXCreateVolumeTextureFromResourceExA(LPDIRECT3DDEVICE9 device,
+                                                      HMODULE srcmodule,
+                                                      LPCSTR resource,
+                                                      UINT width,
+                                                      UINT height,
+                                                      UINT depth,
+                                                      UINT miplevels,
+                                                      DWORD usage,
+                                                      D3DFORMAT format,
+                                                      D3DPOOL pool,
+                                                      DWORD filter,
+                                                      DWORD mipfilter,
+                                                      D3DCOLOR colorkey,
+                                                      D3DXIMAGE_INFO *srcinfo,
+                                                      PALETTEENTRY *palette,
+                                                      LPDIRECT3DVOLUMETEXTURE9 *volume);
+
+HRESULT WINAPI D3DXCreateVolumeTextureFromResourceExW(LPDIRECT3DDEVICE9 device,
+                                                      HMODULE srcmodule,
+                                                      LPCWSTR resource,
+                                                      UINT width,
+                                                      UINT height,
+                                                      UINT depth,
+                                                      UINT miplevels,
+                                                      DWORD usage,
+                                                      D3DFORMAT format,
+                                                      D3DPOOL pool,
+                                                      DWORD filter,
+                                                      DWORD mipfilter,
+                                                      D3DCOLOR colorkey,
+                                                      D3DXIMAGE_INFO *srcinfo,
+                                                      PALETTEENTRY *palette,
+                                                      LPDIRECT3DVOLUMETEXTURE9 *volume);
+#define        D3DXCreateVolumeTextureFromResourceEx WINELIB_NAME_AW(D3DXCreateVolumeTextureFromResourceEx)
+
+HRESULT WINAPI D3DXCreateTextureFromFileInMemory(      LPDIRECT3DDEVICE9 device,
+                                                       LPCVOID srcdata,
+                                                       UINT srcdatasize,
+                                                       LPDIRECT3DTEXTURE9* texture);
+
+HRESULT WINAPI D3DXCreateCubeTextureFromFileInMemory(  LPDIRECT3DDEVICE9 device,
+                                                       LPCVOID srcdata,
+                                                       UINT srcdatasize,
+                                                       LPDIRECT3DCUBETEXTURE9* cube);
+
+HRESULT WINAPI D3DXCreateVolumeTextureFromFileInMemory(LPDIRECT3DDEVICE9 device,
+                                                       LPCVOID srcdata,
+                                                       UINT srcdatasize,
+                                                       LPDIRECT3DVOLUMETEXTURE9 *volume);
+
+HRESULT WINAPI D3DXCreateTextureFromFileInMemoryEx(      LPDIRECT3DDEVICE9 device,
+                                                         LPCVOID srcdata,
+                                                         UINT srcdatasize,
+                                                         UINT width,
+                                                         UINT height,
+                                                         UINT miplevels,
+                                                         DWORD usage,
+                                                         D3DFORMAT format,
+                                                         D3DPOOL pool,
+                                                         DWORD filter,
+                                                         DWORD mipfilter,
+                                                         D3DCOLOR colorkey,
+                                                         D3DXIMAGE_INFO *srcinfo,
+                                                         PALETTEENTRY *palette,
+                                                         LPDIRECT3DTEXTURE9 *texture);
+
+HRESULT WINAPI D3DXCreateCubeTextureFromFileInMemoryEx(  LPDIRECT3DDEVICE9 device,
+                                                         LPCVOID srcdata,
+                                                         UINT srcdatasize,
+                                                         UINT size,
+                                                         UINT miplevels,
+                                                         DWORD usage,
+                                                         D3DFORMAT format,
+                                                         D3DPOOL pool,
+                                                         DWORD filter,
+                                                         DWORD mipfilter,
+                                                         D3DCOLOR colorkey,
+                                                         D3DXIMAGE_INFO *srcinfo,
+                                                         PALETTEENTRY *palette,
+                                                         LPDIRECT3DCUBETEXTURE9 *cube);
+
+HRESULT WINAPI D3DXCreateVolumeTextureFromFileInMemoryEx(LPDIRECT3DDEVICE9 device,
+                                                         LPCVOID srcdata,
+                                                         UINT srcdatasize,
+                                                         UINT width,
+                                                         UINT height,
+                                                         UINT depth,
+                                                         UINT miplevels,
+                                                         DWORD usage,
+                                                         D3DFORMAT format,
+                                                         D3DPOOL pool,
+                                                         DWORD filter,
+                                                         DWORD mipfilter,
+                                                         D3DCOLOR colorkey,
+                                                         D3DXIMAGE_INFO *srcinfo,
+                                                         PALETTEENTRY *palette,
+                                                         LPDIRECT3DVOLUMETEXTURE9 *volume);
+
+HRESULT WINAPI D3DXSaveTextureToFileA(LPCSTR destfile,
+                                      D3DXIMAGE_FILEFORMAT destformat,
+                                      LPDIRECT3DBASETEXTURE9 srctexture,
+                                      CONST PALETTEENTRY *srcpalette);
+HRESULT WINAPI D3DXSaveTextureToFileW(LPCWSTR destfile,
+                                      D3DXIMAGE_FILEFORMAT destformat,
+                                      LPDIRECT3DBASETEXTURE9 srctexture,
+                                      CONST PALETTEENTRY *srcpalette);
+#define        D3DXSaveTextureToFile WINELIB_NAME_AW(D3DXSaveTextureToFile)
+
+
+/* Other functions */
+HRESULT WINAPI D3DXFilterTexture(      LPDIRECT3DBASETEXTURE9 texture,
+                                       CONST PALETTEENTRY *palette,
+                                       UINT srclevel,
+                                       DWORD filter);
+#define D3DXFilterCubeTexture D3DXFilterTexture
+#define D3DXFilterVolumeTexture D3DXFilterTexture
+
+HRESULT WINAPI D3DXFillTexture(        LPDIRECT3DTEXTURE9 texture,
+                                       LPD3DXFILL2D function,
+                                       LPVOID data);
+
+HRESULT WINAPI D3DXFillCubeTexture(    LPDIRECT3DCUBETEXTURE9 cube,
+                                       LPD3DXFILL3D function,
+                                       LPVOID data);
+
+HRESULT WINAPI D3DXFillVolumeTexture(  LPDIRECT3DVOLUMETEXTURE9 volume,
+                                       LPD3DXFILL3D function,
+                                       LPVOID data);
+
+HRESULT WINAPI D3DXFillTextureTX(      LPDIRECT3DTEXTURE9 texture,
+                                       CONST DWORD *function,
+                                       CONST D3DXVECTOR4 *constants,
+                                       UINT numconstants);
+
+HRESULT WINAPI D3DXFillCubeTextureTX(  LPDIRECT3DCUBETEXTURE9 cube,
+                                       CONST DWORD *function,
+                                       CONST D3DXVECTOR4 *constants,
+                                       UINT numconstants);
+
+HRESULT WINAPI D3DXFillVolumeTextureTX(LPDIRECT3DVOLUMETEXTURE9 volume,
+                                       CONST DWORD *function,
+                                       CONST D3DXVECTOR4 *constants,
+                                       UINT numconstants);
+
+HRESULT WINAPI D3DXComputeNormalMap(   LPDIRECT3DTEXTURE9 texture,
+                                       LPDIRECT3DTEXTURE9 srctexture,
+                                       CONST PALETTEENTRY *srcpalette,
+                                       DWORD flags,
+                                       DWORD channel,
+                                       FLOAT amplitude);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_D3DX9TEX_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dbghelp.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dbghelp.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dbghelp.h	(revision 16410)
@@ -0,0 +1,1366 @@
+/*
+ * Declarations for DBGHELP
+ *
+ * Copyright (C) 2003 Eric Pouech
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DBGHELP_H
+#define __WINE_DBGHELP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+#define IMAGEAPI WINAPI
+#define DBHLPAPI IMAGEAPI
+
+typedef struct _LOADED_IMAGE
+{
+    PSTR                        ModuleName;
+    HANDLE                      hFile;
+    PUCHAR                      MappedAddress;
+    PIMAGE_NT_HEADERS           FileHeader;
+    PIMAGE_SECTION_HEADER       LastRvaSection;
+    ULONG                       NumberOfSections;
+    PIMAGE_SECTION_HEADER       Sections;
+    ULONG                       Characteristics;
+    BOOLEAN                     fSystemImage;
+    BOOLEAN                     fDOSImage;
+    BOOLEAN                     fReadOnly;
+    UCHAR                       Version;
+    LIST_ENTRY                  Links;
+    ULONG                       SizeOfImage;
+} LOADED_IMAGE, *PLOADED_IMAGE;
+
+/*************************
+ *    IMAGEHLP equiv     *
+ *************************/
+
+typedef enum
+{
+    AddrMode1616,
+    AddrMode1632,
+    AddrModeReal,
+    AddrModeFlat
+} ADDRESS_MODE;
+
+typedef struct _tagADDRESS
+{
+    DWORD                       Offset;
+    WORD                        Segment;
+    ADDRESS_MODE                Mode;
+} ADDRESS, *LPADDRESS;
+
+typedef struct _tagADDRESS64
+{
+    DWORD64                     Offset;
+    WORD                        Segment;
+    ADDRESS_MODE                Mode;
+} ADDRESS64, *LPADDRESS64;
+
+#define SYMF_OMAP_GENERATED   0x00000001
+#define SYMF_OMAP_MODIFIED    0x00000002
+#define SYMF_USER_GENERATED   0x00000004
+#define SYMF_REGISTER         0x00000008
+#define SYMF_REGREL           0x00000010
+#define SYMF_FRAMEREL         0x00000020
+#define SYMF_PARAMETER        0x00000040
+#define SYMF_LOCAL            0x00000080
+#define SYMF_CONSTANT         0x00000100
+#define SYMF_EXPORT           0x00000200
+#define SYMF_FORWARDER        0x00000400
+#define SYMF_FUNCTION         0x00000800
+#define SYMF_VIRTUAL          0x00001000
+#define SYMF_THUNK            0x00002000
+#define SYMF_TLSREL           0x00004000
+
+typedef enum 
+{
+    SymNone = 0,
+    SymCoff,
+    SymCv,
+    SymPdb,
+    SymExport,
+    SymDeferred,
+    SymSym,
+    SymDia,
+    SymVirtual,
+    NumSymTypes
+} SYM_TYPE;
+
+typedef struct _IMAGEHLP_SYMBOL
+{
+    DWORD                       SizeOfStruct;
+    DWORD                       Address;
+    DWORD                       Size;
+    DWORD                       Flags;
+    DWORD                       MaxNameLength;
+    CHAR                        Name[1];
+} IMAGEHLP_SYMBOL, *PIMAGEHLP_SYMBOL;
+
+typedef struct _IMAGEHLP_SYMBOL64
+{
+    DWORD                       SizeOfStruct;
+    DWORD64                     Address;
+    DWORD                       Size;
+    DWORD                       Flags;
+    DWORD                       MaxNameLength;
+    CHAR                        Name[1];
+} IMAGEHLP_SYMBOL64, *PIMAGEHLP_SYMBOL64;
+
+typedef struct _IMAGEHLP_SYMBOLW64
+{
+    DWORD                       SizeOfStruct;
+    DWORD64                     Address;
+    DWORD                       Size;
+    DWORD                       Flags;
+    DWORD                       MaxNameLength;
+    WCHAR                       Name[1];
+} IMAGEHLP_SYMBOLW64, *PIMAGEHLP_SYMBOLW64;
+
+typedef struct _IMAGEHLP_MODULE
+{
+    DWORD                       SizeOfStruct;
+    DWORD                       BaseOfImage;
+    DWORD                       ImageSize;
+    DWORD                       TimeDateStamp;
+    DWORD                       CheckSum;
+    DWORD                       NumSyms;
+    SYM_TYPE                    SymType;
+    CHAR                        ModuleName[32];
+    CHAR                        ImageName[256];
+    CHAR                        LoadedImageName[256];
+} IMAGEHLP_MODULE, *PIMAGEHLP_MODULE;
+
+typedef struct _IMAGEHLP_MODULEW
+{
+    DWORD                       SizeOfStruct;
+    DWORD                       BaseOfImage;
+    DWORD                       ImageSize;
+    DWORD                       TimeDateStamp;
+    DWORD                       CheckSum;
+    DWORD                       NumSyms;
+    SYM_TYPE                    SymType;
+    WCHAR                       ModuleName[32];
+    WCHAR                       ImageName[256];
+    WCHAR                       LoadedImageName[256];
+} IMAGEHLP_MODULEW, *PIMAGEHLP_MODULEW;
+
+typedef struct _IMAGEHLP_MODULE64
+{
+    DWORD                       SizeOfStruct;
+    DWORD64                     BaseOfImage;
+    DWORD                       ImageSize;
+    DWORD                       TimeDateStamp;
+    DWORD                       CheckSum;
+    DWORD                       NumSyms;
+    SYM_TYPE                    SymType;
+    CHAR                        ModuleName[32];
+    CHAR                        ImageName[256];
+    CHAR                        LoadedImageName[256];
+    CHAR                        LoadedPdbName[256];
+    DWORD                       CVSig;
+    CHAR                        CVData[MAX_PATH*3];
+    DWORD                       PdbSig;
+    GUID                        PdbSig70;
+    DWORD                       PdbAge;
+    BOOL                        PdbUnmatched;
+    BOOL                        DbgUnmatched;
+    BOOL                        LineNumbers;
+    BOOL                        GlobalSymbols;
+    BOOL                        TypeInfo;
+    BOOL                        SourceIndexed;
+    BOOL                        Publics;
+} IMAGEHLP_MODULE64, *PIMAGEHLP_MODULE64;
+
+typedef struct _IMAGEHLP_MODULEW64
+{
+    DWORD                       SizeOfStruct;
+    DWORD64                     BaseOfImage;
+    DWORD                       ImageSize;
+    DWORD                       TimeDateStamp;
+    DWORD                       CheckSum;
+    DWORD                       NumSyms;
+    SYM_TYPE                    SymType;
+    WCHAR                       ModuleName[32];
+    WCHAR                       ImageName[256];
+    WCHAR                       LoadedImageName[256];
+    WCHAR                       LoadedPdbName[256];
+    DWORD                       CVSig;
+    WCHAR                       CVData[MAX_PATH*3];
+    DWORD                       PdbSig;
+    GUID                        PdbSig70;
+    DWORD                       PdbAge;
+    BOOL                        PdbUnmatched;
+    BOOL                        DbgUnmatched;
+    BOOL                        LineNumbers;
+    BOOL                        GlobalSymbols;
+    BOOL                        TypeInfo;
+    BOOL                        SourceIndexed;
+    BOOL                        Publics;
+} IMAGEHLP_MODULEW64, *PIMAGEHLP_MODULEW64;
+
+typedef struct _IMAGEHLP_LINE
+{
+    DWORD                       SizeOfStruct;
+    PVOID                       Key;
+    DWORD                       LineNumber;
+    PCHAR                       FileName;
+    DWORD                       Address;
+} IMAGEHLP_LINE, *PIMAGEHLP_LINE;
+
+typedef struct _IMAGEHLP_LINEW
+{
+    DWORD                       SizeOfStruct;
+    PVOID                       Key;
+    DWORD                       LineNumber;
+    PWSTR                       FileName;
+    DWORD                       Address;
+} IMAGEHLP_LINEW, *PIMAGEHLP_LINEW;
+
+typedef struct _IMAGEHLP_LINE64
+{
+    DWORD                       SizeOfStruct;
+    PVOID                       Key;
+    DWORD                       LineNumber;
+    PCHAR                       FileName;
+    DWORD64                     Address;
+} IMAGEHLP_LINE64, *PIMAGEHLP_LINE64;
+
+typedef struct _IMAGEHLP_LINEW64
+{
+    DWORD                       SizeOfStruct;
+    PVOID                       Key;
+    DWORD                       LineNumber;
+    PWSTR                       FileName;
+    DWORD64                     Address;
+} IMAGEHLP_LINEW64, *PIMAGEHLP_LINEW64;
+
+typedef struct _SOURCEFILE
+{
+    DWORD64                     ModBase;
+    PCHAR                       FileName;
+} SOURCEFILE, *PSOURCEFILE;
+
+typedef struct _SOURCEFILEW
+{
+    DWORD64                     ModBase;
+    PWSTR                       FileName;
+} SOURCEFILEW, *PSOURCEFILEW;
+
+#define CBA_DEFERRED_SYMBOL_LOAD_START          0x00000001
+#define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE       0x00000002
+#define CBA_DEFERRED_SYMBOL_LOAD_FAILURE        0x00000003
+#define CBA_SYMBOLS_UNLOADED                    0x00000004
+#define CBA_DUPLICATE_SYMBOL                    0x00000005
+#define CBA_READ_MEMORY                         0x00000006
+#define CBA_DEFERRED_SYMBOL_LOAD_CANCEL         0x00000007
+#define CBA_SET_OPTIONS                         0x00000008
+#define CBA_EVENT                               0x00000010
+#define CBA_DEFERRED_SYMBOL_LOAD_PARTIAL        0x00000020
+#define CBA_DEBUG_INFO                          0x10000000
+
+typedef struct _IMAGEHLP_CBA_READ_MEMORY
+{
+    DWORD64   addr;
+    PVOID     buf;
+    DWORD     bytes;
+    DWORD    *bytesread;
+} IMAGEHLP_CBA_READ_MEMORY, *PIMAGEHLP_CBA_READ_MEMORY;
+
+enum
+{
+    sevInfo = 0,
+    sevProblem,
+    sevAttn,
+    sevFatal,
+    sevMax
+};
+
+#define EVENT_SRCSPEW_START 100
+#define EVENT_SRCSPEW       100
+#define EVENT_SRCSPEW_END   199
+
+typedef struct _IMAGEHLP_CBA_EVENT
+{
+    DWORD       severity;
+    DWORD       code;
+    PCHAR       desc;
+    PVOID       object;
+} IMAGEHLP_CBA_EVENT, *PIMAGEHLP_CBA_EVENT;
+
+typedef struct _IMAGEHLP_CBA_EVENTW
+{
+    DWORD       severity;
+    DWORD       code;
+    PCWSTR      desc;
+    PVOID       object;
+} IMAGEHLP_CBA_EVENTW, *PIMAGEHLP_CBA_EVENTW;
+
+typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD
+{
+    DWORD                       SizeOfStruct;
+    DWORD                       BaseOfImage;
+    DWORD                       CheckSum;
+    DWORD                       TimeDateStamp;
+    CHAR                        FileName[MAX_PATH];
+    BOOLEAN                     Reparse;
+    HANDLE                      hFile;
+} IMAGEHLP_DEFERRED_SYMBOL_LOAD, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD;
+
+typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD64
+{
+    DWORD                       SizeOfStruct;
+    DWORD64                     BaseOfImage;
+    DWORD                       CheckSum;
+    DWORD                       TimeDateStamp;
+    CHAR                        FileName[MAX_PATH];
+    BOOLEAN                     Reparse;
+    HANDLE                      hFile;
+    DWORD                       Flags;
+} IMAGEHLP_DEFERRED_SYMBOL_LOAD64, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD64;
+
+typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOADW64
+{
+    DWORD                       SizeOfStruct;
+    DWORD64                     BaseOfImage;
+    DWORD                       CheckSum;
+    DWORD                       TimeDateStamp;
+    WCHAR                       FileName[MAX_PATH + 1];
+    BOOLEAN                     Reparse;
+    HANDLE                      hFile;
+    DWORD                       Flags;
+} IMAGEHLP_DEFERRED_SYMBOL_LOADW64, *PIMAGEHLP_DEFERRED_SYMBOL_LOADW64;
+
+typedef struct _IMAGEHLP_DUPLICATE_SYMBOL
+{
+    DWORD                       SizeOfStruct;
+    DWORD                       NumberOfDups;
+    PIMAGEHLP_SYMBOL            Symbol;
+    DWORD                       SelectedSymbol;
+} IMAGEHLP_DUPLICATE_SYMBOL, *PIMAGEHLP_DUPLICATE_SYMBOL;
+
+typedef struct _IMAGEHLP_DUPLICATE_SYMBOL64
+{
+    DWORD                       SizeOfStruct;
+    DWORD                       NumberOfDups;
+    PIMAGEHLP_SYMBOL64          Symbol;
+    DWORD                       SelectedSymbol;
+} IMAGEHLP_DUPLICATE_SYMBOL64, *PIMAGEHLP_DUPLICATE_SYMBOL64;
+
+#define SYMOPT_CASE_INSENSITIVE         0x00000001
+#define SYMOPT_UNDNAME                  0x00000002
+#define SYMOPT_DEFERRED_LOADS           0x00000004
+#define SYMOPT_NO_CPP                   0x00000008
+#define SYMOPT_LOAD_LINES               0x00000010
+#define SYMOPT_OMAP_FIND_NEAREST        0x00000020
+#define SYMOPT_LOAD_ANYTHING            0x00000040
+#define SYMOPT_IGNORE_CVREC             0x00000080
+#define SYMOPT_NO_UNQUALIFIED_LOADS     0x00000100
+#define SYMOPT_FAIL_CRITICAL_ERRORS     0x00000200
+#define SYMOPT_EXACT_SYMBOLS            0x00000400
+#define SYMOPT_WILD_UNDERSCORE          0x00000800
+#define SYMOPT_USE_DEFAULTS             0x00001000
+/* latest SDK defines:
+#define SYMOPT_ALLOW_ABSOLUTE_SYMBOLS   0x00000800
+#define SYMOPT_IGNORE_NT_SYMPATH        0x00001000
+*/
+#define SYMOPT_INCLUDE_32BIT_MODULES    0x00002000
+#define SYMOPT_PUBLICS_ONLY             0x00004000
+#define SYMOPT_NO_PUBLICS               0x00008000
+#define SYMOPT_AUTO_PUBLICS             0x00010000
+#define SYMOPT_NO_IMAGE_SEARCH          0x00020000
+#define SYMOPT_SECURE                   0x00040000
+#define SYMOPT_NO_PROMPTS               0x00080000
+#define SYMOPT_OVERWRITE                0x00100000
+#define SYMOPT_IGNORE_IMAGEDIR          0x00200000
+
+#define SYMOPT_DEBUG                    0x80000000
+
+typedef struct _IMAGEHLP_STACK_FRAME
+{
+    ULONG64     InstructionOffset;
+    ULONG64     ReturnOffset;
+    ULONG64     FrameOffset;
+    ULONG64     StackOffset;
+    ULONG64     BackingStoreOffset;
+    ULONG64     FuncTableEntry;
+    ULONG64     Params[4];
+    ULONG64     Reserved[5];
+    BOOL        Virtual;
+    ULONG       Reserved2;
+} IMAGEHLP_STACK_FRAME, *PIMAGEHLP_STACK_FRAME;
+
+typedef VOID IMAGEHLP_CONTEXT, *PIMAGEHLP_CONTEXT;
+
+#define DBHHEADER_DEBUGDIRS     0x1
+typedef struct _DBGHELP_MODLOAD_DATA
+{
+    DWORD               ssize;
+    DWORD               ssig;
+    PVOID               data;
+    DWORD               size;
+    DWORD               flags;
+} MODLOAD_DATA, *PMODLOAD_DATA;
+
+/*************************
+ *       MiniDUMP        *
+ *************************/
+
+#include <pshpack4.h>
+/* DebugHelp */
+
+#define MINIDUMP_SIGNATURE 0x504D444D /* 'MDMP' */
+#define MINIDUMP_VERSION   (42899)
+
+typedef DWORD   RVA;
+typedef ULONG64 RVA64;
+
+typedef enum _MINIDUMP_TYPE 
+{
+    MiniDumpNormal                              = 0x0000,
+    MiniDumpWithDataSegs                        = 0x0001,
+    MiniDumpWithFullMemory                      = 0x0002,
+    MiniDumpWithHandleData                      = 0x0004,
+    MiniDumpFilterMemory                        = 0x0008,
+    MiniDumpScanMemory                          = 0x0010,
+    MiniDumpWithUnloadedModules                 = 0x0020,
+    MiniDumpWithIndirectlyReferencedMemory      = 0x0040,
+    MiniDumpFilterModulePaths                   = 0x0080,
+    MiniDumpWithProcessThreadData               = 0x0100,
+    MiniDumpWithPrivateReadWriteMemory          = 0x0200,
+    MiniDumpWithoutOptionalData                 = 0x0400,
+    MiniDumpWithFullMemoryInfo                  = 0x0800,
+    MiniDumpWithThreadInfo                      = 0x1000,
+    MiniDumpWithCodeSegs                        = 0x2000
+} MINIDUMP_TYPE;
+
+typedef enum _MINIDUMP_CALLBACK_TYPE
+{
+    ModuleCallback,
+    ThreadCallback,
+    ThreadExCallback,
+    IncludeThreadCallback,
+    IncludeModuleCallback,
+    MemoryCallback,
+} MINIDUMP_CALLBACK_TYPE;
+
+typedef struct _MINIDUMP_THREAD_CALLBACK
+{
+    ULONG                       ThreadId;
+    HANDLE                      ThreadHandle;
+    CONTEXT                     Context;
+    ULONG                       SizeOfContext;
+    ULONG64                     StackBase;
+    ULONG64                     StackEnd;
+} MINIDUMP_THREAD_CALLBACK, *PMINIDUMP_THREAD_CALLBACK;
+
+typedef struct _MINIDUMP_THREAD_EX_CALLBACK 
+{
+    ULONG                       ThreadId;
+    HANDLE                      ThreadHandle;
+    CONTEXT                     Context;
+    ULONG                       SizeOfContext;
+    ULONG64                     StackBase;
+    ULONG64                     StackEnd;
+    ULONG64                     BackingStoreBase;
+    ULONG64                     BackingStoreEnd;
+} MINIDUMP_THREAD_EX_CALLBACK, *PMINIDUMP_THREAD_EX_CALLBACK;
+
+typedef struct _MINIDUMP_INCLUDE_THREAD_CALLBACK
+{
+    ULONG ThreadId;
+} MINIDUMP_INCLUDE_THREAD_CALLBACK, *PMINIDUMP_INCLUDE_THREAD_CALLBACK;
+
+typedef enum _THREAD_WRITE_FLAGS 
+{
+    ThreadWriteThread            = 0x0001,
+    ThreadWriteStack             = 0x0002,
+    ThreadWriteContext           = 0x0004,
+    ThreadWriteBackingStore      = 0x0008,
+    ThreadWriteInstructionWindow = 0x0010,
+    ThreadWriteThreadData        = 0x0020,
+    ThreadWriteThreadInfo        = 0x0040
+} THREAD_WRITE_FLAGS;
+
+typedef struct _MINIDUMP_MODULE_CALLBACK 
+{
+    PWCHAR                      FullPath;
+    ULONG64                     BaseOfImage;
+    ULONG                       SizeOfImage;
+    ULONG                       CheckSum;
+    ULONG                       TimeDateStamp;
+    VS_FIXEDFILEINFO            VersionInfo;
+    PVOID                       CvRecord;
+    ULONG                       SizeOfCvRecord;
+    PVOID                       MiscRecord;
+    ULONG                       SizeOfMiscRecord;
+} MINIDUMP_MODULE_CALLBACK, *PMINIDUMP_MODULE_CALLBACK;
+
+typedef struct _MINIDUMP_INCLUDE_MODULE_CALLBACK 
+{
+    ULONG64 BaseOfImage;
+} MINIDUMP_INCLUDE_MODULE_CALLBACK, *PMINIDUMP_INCLUDE_MODULE_CALLBACK;
+
+typedef enum _MODULE_WRITE_FLAGS 
+{
+    ModuleWriteModule        = 0x0001,
+    ModuleWriteDataSeg       = 0x0002,
+    ModuleWriteMiscRecord    = 0x0004,
+    ModuleWriteCvRecord      = 0x0008,
+    ModuleReferencedByMemory = 0x0010,
+    ModuleWriteTlsData       = 0x0020,
+    ModuleWriteCodeSegs      = 0x0040,
+} MODULE_WRITE_FLAGS;
+
+typedef struct _MINIDUMP_CALLBACK_INPUT 
+{
+    ULONG                       ProcessId;
+    HANDLE                      ProcessHandle;
+    ULONG                       CallbackType;
+    union 
+    {
+        MINIDUMP_THREAD_CALLBACK        Thread;
+        MINIDUMP_THREAD_EX_CALLBACK     ThreadEx;
+        MINIDUMP_MODULE_CALLBACK        Module;
+        MINIDUMP_INCLUDE_THREAD_CALLBACK IncludeThread;
+        MINIDUMP_INCLUDE_MODULE_CALLBACK IncludeModule;
+    } DUMMYUNIONNAME;
+} MINIDUMP_CALLBACK_INPUT, *PMINIDUMP_CALLBACK_INPUT;
+
+typedef struct _MINIDUMP_CALLBACK_OUTPUT
+{
+    union 
+    {
+        ULONG                           ModuleWriteFlags;
+        ULONG                           ThreadWriteFlags;
+        struct
+        {
+            ULONG64                     MemoryBase;
+            ULONG                       MemorySize;
+        } DUMMYSTRUCTNAME;
+    } DUMMYUNIONNAME;
+} MINIDUMP_CALLBACK_OUTPUT, *PMINIDUMP_CALLBACK_OUTPUT;
+
+typedef BOOL (WINAPI* MINIDUMP_CALLBACK_ROUTINE)(PVOID, const PMINIDUMP_CALLBACK_INPUT, PMINIDUMP_CALLBACK_OUTPUT);
+
+typedef struct _MINIDUMP_CALLBACK_INFORMATION 
+{
+    MINIDUMP_CALLBACK_ROUTINE   CallbackRoutine;
+    void*                       CallbackParam;
+} MINIDUMP_CALLBACK_INFORMATION, *PMINIDUMP_CALLBACK_INFORMATION;
+
+typedef struct _MINIDUMP_LOCATION_DESCRIPTOR 
+{
+    ULONG                       DataSize;
+    RVA                         Rva;
+} MINIDUMP_LOCATION_DESCRIPTOR;
+
+typedef struct _MINIDUMP_LOCATION_DESCRIPTOR64 
+{
+    ULONG64                     DataSize;
+    RVA64                       Rva;
+} MINIDUMP_LOCATION_DESCRIPTOR64;
+
+typedef struct _MINIDUMP_DIRECTORY 
+{
+    ULONG                       StreamType;
+    MINIDUMP_LOCATION_DESCRIPTOR Location;
+} MINIDUMP_DIRECTORY, *PMINIDUMP_DIRECTORY;
+
+typedef struct _MINIDUMP_EXCEPTION
+{
+    ULONG                       ExceptionCode;
+    ULONG                       ExceptionFlags;
+    ULONG64                     ExceptionRecord;
+    ULONG64                     ExceptionAddress;
+    ULONG                       NumberParameters;
+    ULONG                        __unusedAlignment;
+    ULONG64                     ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
+} MINIDUMP_EXCEPTION, *PMINIDUMP_EXCEPTION;
+
+typedef struct _MINIDUMP_EXCEPTION_INFORMATION
+{
+    DWORD                       ThreadId;
+    PEXCEPTION_POINTERS         ExceptionPointers;
+    BOOL                        ClientPointers;
+} MINIDUMP_EXCEPTION_INFORMATION, *PMINIDUMP_EXCEPTION_INFORMATION;
+
+typedef struct MINIDUMP_EXCEPTION_STREAM 
+{
+    ULONG                       ThreadId;
+    ULONG                       __alignment;
+    MINIDUMP_EXCEPTION          ExceptionRecord;
+    MINIDUMP_LOCATION_DESCRIPTOR ThreadContext;
+} MINIDUMP_EXCEPTION_STREAM, *PMINIDUMP_EXCEPTION_STREAM;
+
+typedef struct _MINIDUMP_HEADER 
+{
+    DWORD                       Signature;
+    DWORD                       Version;
+    DWORD                       NumberOfStreams;
+    RVA                         StreamDirectoryRva;
+    DWORD                       CheckSum;
+    union 
+    {
+        DWORD                           Reserved;
+        DWORD                           TimeDateStamp;
+    } DUMMYUNIONNAME;
+    ULONG64                     Flags;
+} MINIDUMP_HEADER, *PMINIDUMP_HEADER;
+
+typedef struct _MINIDUMP_MEMORY_DESCRIPTOR 
+{
+    ULONG64                     StartOfMemoryRange;
+    MINIDUMP_LOCATION_DESCRIPTOR Memory;
+} MINIDUMP_MEMORY_DESCRIPTOR, *PMINIDUMP_MEMORY_DESCRIPTOR;
+
+typedef struct _MINIDUMP_MEMORY_LIST
+{
+    ULONG                       NumberOfMemoryRanges;
+    MINIDUMP_MEMORY_DESCRIPTOR  MemoryRanges[1]; /* FIXME: 0-sized array not supported */
+} MINIDUMP_MEMORY_LIST, *PMINIDUMP_MEMORY_LIST;
+
+#define MINIDUMP_MISC1_PROCESS_ID       0x00000001
+#define MINIDUMP_MISC1_PROCESS_TIMES    0x00000002
+
+typedef struct _MINIDUMP_MISC_INFO
+{
+    ULONG                       SizeOfInfo;
+    ULONG                       Flags1;
+    ULONG                       ProcessId;
+    ULONG                       ProcessCreateTime;
+    ULONG                       ProcessUserTime;
+    ULONG                       ProcessKernelTime;
+} MINIDUMP_MISC_INFO, *PMINIDUMP_MISC_INFO;
+
+typedef struct _MINIDUMP_MODULE
+{
+    ULONG64                     BaseOfImage;
+    ULONG                       SizeOfImage;
+    ULONG                       CheckSum;
+    ULONG                       TimeDateStamp;
+    RVA                         ModuleNameRva;
+    VS_FIXEDFILEINFO            VersionInfo;
+    MINIDUMP_LOCATION_DESCRIPTOR CvRecord;
+    MINIDUMP_LOCATION_DESCRIPTOR MiscRecord;
+    ULONG64                     Reserved0;
+    ULONG64                     Reserved1;
+} MINIDUMP_MODULE, *PMINIDUMP_MODULE;
+
+typedef struct _MINIDUMP_MODULE_LIST 
+{
+    ULONG                       NumberOfModules;
+    MINIDUMP_MODULE             Modules[1]; /* FIXME: 0-sized array not supported */
+} MINIDUMP_MODULE_LIST, *PMINIDUMP_MODULE_LIST;
+
+typedef struct _MINIDUMP_STRING
+{
+    ULONG                       Length;
+    WCHAR                       Buffer[1]; /* FIXME: O-sized array not supported */
+} MINIDUMP_STRING, *PMINIDUMP_STRING;
+
+typedef struct _MINIDUMP_SYSTEM_INFO
+{
+    USHORT                      ProcessorArchitecture;
+    USHORT                      ProcessorLevel;
+    USHORT                      ProcessorRevision;
+    union
+    {
+        USHORT                          Reserved0;
+        struct
+        {
+            UCHAR                       NumberOfProcessors;
+            UCHAR                       ProductType;
+        } DUMMYSTRUCTNAME;
+    } DUMMYUNIONNAME;
+
+    ULONG                       MajorVersion;
+    ULONG                       MinorVersion;
+    ULONG                       BuildNumber;
+    ULONG                       PlatformId;
+
+    RVA                         CSDVersionRva;
+    union
+    {
+        ULONG                           Reserved1;
+        struct
+        {
+            USHORT                      SuiteMask;
+            USHORT                      Reserved2;
+        } DUMMYSTRUCTNAME;
+    } DUMMYUNIONNAME1;
+    union _CPU_INFORMATION 
+    {
+        struct 
+        {
+            ULONG                       VendorId[3];
+            ULONG                       VersionInformation;
+            ULONG                       FeatureInformation;
+            ULONG                       AMDExtendedCpuFeatures;
+        } X86CpuInfo;
+        struct 
+        {
+            ULONG64                     ProcessorFeatures[2];
+        } OtherCpuInfo;
+    } Cpu;
+
+} MINIDUMP_SYSTEM_INFO, *PMINIDUMP_SYSTEM_INFO;
+
+typedef struct _MINIDUMP_THREAD
+{
+    ULONG                       ThreadId;
+    ULONG                       SuspendCount;
+    ULONG                       PriorityClass;
+    ULONG                       Priority;
+    ULONG64                     Teb;
+    MINIDUMP_MEMORY_DESCRIPTOR  Stack;
+    MINIDUMP_LOCATION_DESCRIPTOR ThreadContext;
+} MINIDUMP_THREAD, *PMINIDUMP_THREAD;
+
+typedef struct _MINIDUMP_THREAD_LIST
+{
+    ULONG                       NumberOfThreads;
+    MINIDUMP_THREAD             Threads[1]; /* FIXME: no support of 0 sized array */
+} MINIDUMP_THREAD_LIST, *PMINIDUMP_THREAD_LIST;
+
+typedef struct _MINIDUMP_USER_STREAM
+{
+    ULONG                       Type;
+    ULONG                       BufferSize;
+    void*                       Buffer;
+} MINIDUMP_USER_STREAM, *PMINIDUMP_USER_STREAM;
+
+typedef struct _MINIDUMP_USER_STREAM_INFORMATION
+{
+    ULONG                       UserStreamCount;
+    PMINIDUMP_USER_STREAM       UserStreamArray;
+} MINIDUMP_USER_STREAM_INFORMATION, *PMINIDUMP_USER_STREAM_INFORMATION;
+
+typedef enum _MINIDUMP_STREAM_TYPE
+{
+    UnusedStream                = 0,
+    ReservedStream0             = 1,
+    ReservedStream1             = 2,
+    ThreadListStream            = 3,
+    ModuleListStream            = 4,
+    MemoryListStream            = 5,
+    ExceptionStream             = 6,
+    SystemInfoStream            = 7,
+    ThreadExListStream          = 8,
+    Memory64ListStream          = 9,
+    CommentStreamA              = 10,
+    CommentStreamW              = 11,
+    HandleDataStream            = 12,
+    FunctionTableStream         = 13,
+    UnloadedModuleListStream    = 14,
+    MiscInfoStream              = 15,
+    MemoryInfoListStream        = 16,
+    ThreadInfoListStream        = 17,
+
+    LastReservedStream          = 0xffff
+} MINIDUMP_STREAM_TYPE;
+
+BOOL WINAPI MiniDumpWriteDump(HANDLE, DWORD, HANDLE, MINIDUMP_TYPE,
+                              const PMINIDUMP_EXCEPTION_INFORMATION,
+                              const PMINIDUMP_USER_STREAM_INFORMATION,
+                              const PMINIDUMP_CALLBACK_INFORMATION);
+BOOL WINAPI MiniDumpReadDumpStream(PVOID, ULONG, PMINIDUMP_DIRECTORY*, PVOID*,
+                                   ULONG*);
+
+#include <poppack.h>
+
+/*************************
+ *    MODULE handling    *
+ *************************/
+
+/* flags for SymLoadModuleEx */
+#define SLMFLAG_VIRTUAL         0x1
+#define SLMFLAG_NO_SYMBOLS      0x4
+
+typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK)(PCSTR, ULONG, ULONG, PVOID);
+BOOL   WINAPI EnumerateLoadedModules(HANDLE, PENUMLOADED_MODULES_CALLBACK, PVOID);
+typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK64)(PCSTR, DWORD64, ULONG, PVOID);
+BOOL   WINAPI EnumerateLoadedModules64(HANDLE, PENUMLOADED_MODULES_CALLBACK64, PVOID);
+typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACKW64)(PCWSTR, DWORD64, ULONG, PVOID);
+BOOL   WINAPI EnumerateLoadedModulesW64(HANDLE, PENUMLOADED_MODULES_CALLBACKW64, PVOID);
+typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK)(PCSTR, ULONG, PVOID);
+BOOL    WINAPI SymEnumerateModules(HANDLE, PSYM_ENUMMODULES_CALLBACK, PVOID);
+typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK64)(PCSTR, DWORD64, PVOID);
+BOOL    WINAPI SymEnumerateModules64(HANDLE, PSYM_ENUMMODULES_CALLBACK64, PVOID);
+typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACKW64)(PCWSTR, DWORD64, PVOID);
+BOOL    WINAPI SymEnumerateModulesW64(HANDLE, PSYM_ENUMMODULES_CALLBACKW64, PVOID);
+BOOL    WINAPI SymGetModuleInfo(HANDLE, DWORD, PIMAGEHLP_MODULE);
+BOOL    WINAPI SymGetModuleInfoW(HANDLE, DWORD, PIMAGEHLP_MODULEW);
+BOOL    WINAPI SymGetModuleInfo64(HANDLE, DWORD64, PIMAGEHLP_MODULE64);
+BOOL    WINAPI SymGetModuleInfoW64(HANDLE, DWORD64, PIMAGEHLP_MODULEW64);
+DWORD   WINAPI SymGetModuleBase(HANDLE, DWORD);
+DWORD64 WINAPI SymGetModuleBase64(HANDLE, DWORD64);
+DWORD   WINAPI SymLoadModule(HANDLE, HANDLE, PCSTR, PCSTR, DWORD, DWORD);
+DWORD64 WINAPI SymLoadModule64(HANDLE, HANDLE, PCSTR, PCSTR, DWORD64, DWORD);
+DWORD64 WINAPI SymLoadModuleEx(HANDLE, HANDLE, PCSTR, PCSTR, DWORD64, DWORD,
+                               PMODLOAD_DATA, DWORD);
+DWORD64 WINAPI SymLoadModuleExW(HANDLE, HANDLE, PCWSTR, PCWSTR, DWORD64, DWORD,
+                                PMODLOAD_DATA, DWORD);
+BOOL    WINAPI SymUnloadModule(HANDLE, DWORD);
+BOOL    WINAPI SymUnloadModule64(HANDLE, DWORD64);
+
+/*************************
+ *    Symbol Handling    *
+ *************************/
+
+#define IMAGEHLP_SYMBOL_INFO_VALUEPRESENT          1
+#define IMAGEHLP_SYMBOL_INFO_REGISTER              SYMF_REGISTER        /*  0x08 */
+#define IMAGEHLP_SYMBOL_INFO_REGRELATIVE           SYMF_REGREL          /*  0x10 */
+#define IMAGEHLP_SYMBOL_INFO_FRAMERELATIVE         SYMF_FRAMEREL        /*  0x20 */
+#define IMAGEHLP_SYMBOL_INFO_PARAMETER             SYMF_PARAMETER       /*  0x40 */
+#define IMAGEHLP_SYMBOL_INFO_LOCAL                 SYMF_LOCAL           /*  0x80 */
+#define IMAGEHLP_SYMBOL_INFO_CONSTANT              SYMF_CONSTANT        /* 0x100 */
+#define IMAGEHLP_SYMBOL_FUNCTION                   SYMF_FUNCTION        /* 0x800 */
+
+#define SYMFLAG_VALUEPRESENT     0x00000001
+#define SYMFLAG_REGISTER         0x00000008
+#define SYMFLAG_REGREL           0x00000010
+#define SYMFLAG_FRAMEREL         0x00000020
+#define SYMFLAG_PARAMETER        0x00000040
+#define SYMFLAG_LOCAL            0x00000080
+#define SYMFLAG_CONSTANT         0x00000100
+#define SYMFLAG_EXPORT           0x00000200
+#define SYMFLAG_FORWARDER        0x00000400
+#define SYMFLAG_FUNCTION         0x00000800
+#define SYMFLAG_VIRTUAL          0x00001000
+#define SYMFLAG_THUNK            0x00002000
+#define SYMFLAG_TLSREL           0x00004000
+#define SYMFLAG_SLOT             0x00008000
+
+#define MAX_SYM_NAME    2000
+
+typedef struct _SYMBOL_INFO
+{
+    ULONG       SizeOfStruct;
+    ULONG       TypeIndex;
+    ULONG64     Reserved[2];
+    ULONG       info;   /* sdk states info, while MSDN says it's Index... */
+    ULONG       Size;
+    ULONG64     ModBase;
+    ULONG       Flags;
+    ULONG64     Value;
+    ULONG64     Address;
+    ULONG       Register;
+    ULONG       Scope;
+    ULONG       Tag;
+    ULONG       NameLen;
+    ULONG       MaxNameLen;
+    CHAR        Name[1];
+} SYMBOL_INFO, *PSYMBOL_INFO;
+
+typedef struct _SYMBOL_INFOW
+{
+    ULONG       SizeOfStruct;
+    ULONG       TypeIndex;
+    ULONG64     Reserved[2];
+    ULONG       Index;
+    ULONG       Size;
+    ULONG64     ModBase;
+    ULONG       Flags;
+    ULONG64     Value;
+    ULONG64     Address;
+    ULONG       Register;
+    ULONG       Scope;
+    ULONG       Tag;
+    ULONG       NameLen;
+    ULONG       MaxNameLen;
+    WCHAR       Name[1];
+} SYMBOL_INFOW, *PSYMBOL_INFOW;
+
+typedef struct _SYMBOL_INFO_PACKAGE
+{
+    SYMBOL_INFO si;
+    CHAR        name[MAX_SYM_NAME+1];
+} SYMBOL_INFO_PACKAGE, *PSYMBOL_INFO_PACKAGE;
+
+typedef struct _SYMBOL_INFO_PACKAGEW
+{
+    SYMBOL_INFOW si;
+    WCHAR        name[MAX_SYM_NAME+1];
+} SYMBOL_INFO_PACKAGEW, *PSYMBOL_INFO_PACKAGEW;
+
+typedef enum _IMAGEHLP_SYMBOL_TYPE_INFO 
+{
+    TI_GET_SYMTAG,
+    TI_GET_SYMNAME,
+    TI_GET_LENGTH,
+    TI_GET_TYPE,
+    TI_GET_TYPEID,
+    TI_GET_BASETYPE,
+    TI_GET_ARRAYINDEXTYPEID,
+    TI_FINDCHILDREN,
+    TI_GET_DATAKIND,
+    TI_GET_ADDRESSOFFSET,
+    TI_GET_OFFSET,
+    TI_GET_VALUE,
+    TI_GET_COUNT,
+    TI_GET_CHILDRENCOUNT,
+    TI_GET_BITPOSITION,
+    TI_GET_VIRTUALBASECLASS,
+    TI_GET_VIRTUALTABLESHAPEID,
+    TI_GET_VIRTUALBASEPOINTEROFFSET,
+    TI_GET_CLASSPARENTID,
+    TI_GET_NESTED,
+    TI_GET_SYMINDEX,
+    TI_GET_LEXICALPARENT,
+    TI_GET_ADDRESS,
+    TI_GET_THISADJUST,
+    TI_GET_UDTKIND,
+    TI_IS_EQUIV_TO,
+    TI_GET_CALLING_CONVENTION,
+} IMAGEHLP_SYMBOL_TYPE_INFO;
+
+#define IMAGEHLP_GET_TYPE_INFO_UNCACHED            0x00000001
+#define IMAGEHLP_GET_TYPE_INFO_CHILDREN            0x00000002
+typedef struct _IMAGEHLP_GET_TYPE_INFO_PARAMS
+{
+    ULONG       SizeOfStruct;
+    ULONG       Flags;
+    ULONG       NumIds;
+    PULONG      TypeIds;
+    ULONG64     TagFilter;
+    ULONG       NumReqs;
+    IMAGEHLP_SYMBOL_TYPE_INFO* ReqKinds;
+    PULONG_PTR  ReqOffsets;
+    PULONG      ReqSizes;
+    ULONG_PTR   ReqStride;
+    ULONG_PTR   BufferSize;
+    PVOID       Buffer;
+    ULONG       EntriesMatched;
+    ULONG       EntriesFilled;
+    ULONG64     TagsFound;
+    ULONG64     AllReqsValid;
+    ULONG       NumReqsValid;
+    PULONG64    ReqsValid;
+} IMAGEHLP_GET_TYPE_INFO_PARAMS, *PIMAGEHLP_GET_TYPE_INFO_PARAMS;
+
+typedef struct _TI_FINDCHILDREN_PARAMS 
+{
+    ULONG Count;
+    ULONG Start;
+    ULONG ChildId[1];
+} TI_FINDCHILDREN_PARAMS;
+
+#define UNDNAME_COMPLETE                 (0x0000)
+#define UNDNAME_NO_LEADING_UNDERSCORES   (0x0001)
+#define UNDNAME_NO_MS_KEYWORDS           (0x0002)
+#define UNDNAME_NO_FUNCTION_RETURNS      (0x0004)
+#define UNDNAME_NO_ALLOCATION_MODEL      (0x0008)
+#define UNDNAME_NO_ALLOCATION_LANGUAGE   (0x0010)
+#define UNDNAME_NO_MS_THISTYPE           (0x0020)
+#define UNDNAME_NO_CV_THISTYPE           (0x0040)
+#define UNDNAME_NO_THISTYPE              (0x0060)
+#define UNDNAME_NO_ACCESS_SPECIFIERS     (0x0080)
+#define UNDNAME_NO_THROW_SIGNATURES      (0x0100)
+#define UNDNAME_NO_MEMBER_TYPE           (0x0200)
+#define UNDNAME_NO_RETURN_UDT_MODEL      (0x0400)
+#define UNDNAME_32_BIT_DECODE            (0x0800)
+#define UNDNAME_NAME_ONLY                (0x1000)
+#define UNDNAME_NO_ARGUMENTS             (0x2000)
+#define UNDNAME_NO_SPECIAL_SYMS          (0x4000)
+
+#define SYMSEARCH_MASKOBJS              0x01
+#define SYMSEARCH_RECURSE               0x02
+#define SYMSEARCH_GLOBALSONLY           0x04
+
+BOOL WINAPI SymGetTypeInfo(HANDLE, DWORD64, ULONG, IMAGEHLP_SYMBOL_TYPE_INFO, PVOID);
+BOOL WINAPI SymGetTypeInfoEx(HANDLE, DWORD64, PIMAGEHLP_GET_TYPE_INFO_PARAMS);
+typedef BOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACK)(PSYMBOL_INFO, ULONG, PVOID);
+typedef BOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACKW)(PSYMBOL_INFOW, ULONG, PVOID);
+BOOL WINAPI SymEnumTypes(HANDLE, ULONG64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID);
+BOOL WINAPI SymEnumTypesW(HANDLE, ULONG64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID);
+BOOL WINAPI SymFromAddr(HANDLE, DWORD64, DWORD64*, SYMBOL_INFO*);
+BOOL WINAPI SymFromAddrW(HANDLE, DWORD64, DWORD64*, SYMBOL_INFOW*);
+BOOL WINAPI SymFromToken(HANDLE, DWORD64, DWORD, PSYMBOL_INFO);
+BOOL WINAPI SymFromTokenW(HANDLE, DWORD64, DWORD, PSYMBOL_INFOW);
+BOOL WINAPI SymFromName(HANDLE, PCSTR, PSYMBOL_INFO);
+BOOL WINAPI SymFromNameW(HANDLE, PCWSTR, PSYMBOL_INFOW);
+BOOL WINAPI SymGetSymFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_SYMBOL);
+BOOL WINAPI SymGetSymFromAddr64(HANDLE, DWORD64, PDWORD64, PIMAGEHLP_SYMBOL64);
+BOOL WINAPI SymGetSymFromName(HANDLE, PCSTR, PIMAGEHLP_SYMBOL);
+BOOL WINAPI SymGetSymFromName64(HANDLE, PCSTR, PIMAGEHLP_SYMBOL64);
+BOOL WINAPI SymGetTypeFromName(HANDLE, ULONG64, PCSTR, PSYMBOL_INFO);
+BOOL WINAPI SymGetTypeFromNameW(HANDLE, ULONG64, PCWSTR, PSYMBOL_INFOW);
+BOOL WINAPI SymGetSymNext(HANDLE, PIMAGEHLP_SYMBOL);
+BOOL WINAPI SymGetSymNext64(HANDLE, PIMAGEHLP_SYMBOL64);
+BOOL WINAPI SymGetSymNextW64(HANDLE, PIMAGEHLP_SYMBOLW64);
+BOOL WINAPI SymGetSymPrev(HANDLE, PIMAGEHLP_SYMBOL);
+BOOL WINAPI SymGetSymPrev64(HANDLE, PIMAGEHLP_SYMBOL64);
+BOOL WINAPI SymGetSymPrevW64(HANDLE, PIMAGEHLP_SYMBOLW64);
+BOOL WINAPI SymEnumSym(HANDLE,ULONG64,PSYM_ENUMERATESYMBOLS_CALLBACK,PVOID);
+BOOL WINAPI SymEnumSymbols(HANDLE, ULONG64, PCSTR, PSYM_ENUMERATESYMBOLS_CALLBACK,
+                           PVOID);
+BOOL WINAPI SymEnumSymbolsW(HANDLE, ULONG64, PCWSTR, PSYM_ENUMERATESYMBOLS_CALLBACKW,
+                            PVOID);
+typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(PCSTR, ULONG, ULONG, PVOID);
+typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACKW)(PCWSTR, ULONG, ULONG, PVOID);
+BOOL WINAPI SymEnumerateSymbols(HANDLE, ULONG, PSYM_ENUMSYMBOLS_CALLBACK, PVOID);
+BOOL WINAPI SymEnumerateSymbolsW(HANDLE, ULONG, PSYM_ENUMSYMBOLS_CALLBACKW, PVOID);
+typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64)(PCSTR, DWORD64, ULONG, PVOID);
+typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64W)(PCWSTR, DWORD64, ULONG, PVOID);
+BOOL WINAPI SymEnumerateSymbols64(HANDLE, ULONG64, PSYM_ENUMSYMBOLS_CALLBACK64, PVOID);
+BOOL WINAPI SymEnumerateSymbolsW64(HANDLE, ULONG64, PSYM_ENUMSYMBOLS_CALLBACK64W, PVOID);
+BOOL WINAPI SymEnumSymbolsForAddr(HANDLE, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID);
+BOOL WINAPI SymEnumSymbolsForAddrW(HANDLE, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID);
+typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(HANDLE, ULONG, PVOID, PVOID);
+BOOL WINAPI SymRegisterCallback(HANDLE, PSYMBOL_REGISTERED_CALLBACK, PVOID);
+typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK64)(HANDLE, ULONG, ULONG64, ULONG64);
+BOOL WINAPI SymRegisterCallback64(HANDLE, PSYMBOL_REGISTERED_CALLBACK64, ULONG64);
+BOOL WINAPI SymRegisterCallbackW64(HANDLE, PSYMBOL_REGISTERED_CALLBACK64, ULONG64);
+BOOL WINAPI SymUnDName(PIMAGEHLP_SYMBOL, PSTR, DWORD);
+BOOL WINAPI SymUnDName64(PIMAGEHLP_SYMBOL64, PSTR, DWORD);
+BOOL WINAPI SymMatchString(PCSTR, PCSTR, BOOL);
+BOOL WINAPI SymMatchStringA(PCSTR, PCSTR, BOOL);
+BOOL WINAPI SymMatchStringW(PCWSTR, PCWSTR, BOOL);
+BOOL WINAPI SymSearch(HANDLE, ULONG64, DWORD, DWORD, PCSTR, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID, DWORD);
+BOOL WINAPI SymSearchW(HANDLE, ULONG64, DWORD, DWORD, PCWSTR, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID, DWORD);
+DWORD WINAPI UnDecorateSymbolName(PCSTR, PSTR, DWORD, DWORD);
+DWORD WINAPI UnDecorateSymbolNameW(PCWSTR, PWSTR, DWORD, DWORD);
+BOOL WINAPI SymGetScope(HANDLE, ULONG64, DWORD, PSYMBOL_INFO);
+BOOL WINAPI SymGetScopeW(HANDLE, ULONG64, DWORD, PSYMBOL_INFOW);
+BOOL WINAPI SymFromIndex(HANDLE, ULONG64, DWORD, PSYMBOL_INFO);
+BOOL WINAPI SymFromIndexW(HANDLE, ULONG64, DWORD, PSYMBOL_INFOW);
+BOOL WINAPI SymAddSymbol(HANDLE, ULONG64, PCSTR, DWORD64, DWORD, DWORD);
+BOOL WINAPI SymAddSymbolW(HANDLE, ULONG64, PCWSTR, DWORD64, DWORD, DWORD);
+BOOL WINAPI SymDeleteSymbol(HANDLE, ULONG64, PCSTR, DWORD64, DWORD);
+BOOL WINAPI SymDeleteSymbolW(HANDLE, ULONG64, PCWSTR, DWORD64, DWORD);
+
+/*************************
+ *      Source Files     *
+ *************************/
+typedef BOOL (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACK)(PSOURCEFILE, PVOID);
+typedef BOOL (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACKW)(PSOURCEFILEW, PVOID);
+
+BOOL WINAPI SymEnumSourceFiles(HANDLE, ULONG64, PCSTR, PSYM_ENUMSOURCEFILES_CALLBACK,
+                               PVOID);
+BOOL WINAPI SymEnumSourceFilesW(HANDLE, ULONG64, PCWSTR, PSYM_ENUMSOURCEFILES_CALLBACKW, PVOID);
+BOOL WINAPI SymGetLineFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_LINE);
+BOOL WINAPI SymGetLineFromAddrW(HANDLE, DWORD, PDWORD, PIMAGEHLP_LINEW);
+BOOL WINAPI SymGetLineFromAddr64(HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINE64);
+BOOL WINAPI SymGetLineFromAddrW64(HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINEW64);
+BOOL WINAPI SymGetLinePrev(HANDLE, PIMAGEHLP_LINE);
+BOOL WINAPI SymGetLinePrevW(HANDLE, PIMAGEHLP_LINEW);
+BOOL WINAPI SymGetLinePrev64(HANDLE, PIMAGEHLP_LINE64);
+BOOL WINAPI SymGetLinePrevW64(HANDLE, PIMAGEHLP_LINEW64);
+BOOL WINAPI SymGetLineNext(HANDLE, PIMAGEHLP_LINE);
+BOOL WINAPI SymGetLineNextW(HANDLE, PIMAGEHLP_LINEW);
+BOOL WINAPI SymGetLineNext64(HANDLE, PIMAGEHLP_LINE64);
+BOOL WINAPI SymGetLineNextW64(HANDLE, PIMAGEHLP_LINEW64);
+BOOL WINAPI SymGetLineFromName(HANDLE, PCSTR, PCSTR, DWORD, PLONG, PIMAGEHLP_LINE);
+BOOL WINAPI SymGetLineFromName64(HANDLE, PCSTR, PCSTR, DWORD, PLONG, PIMAGEHLP_LINE64);
+BOOL WINAPI SymGetLineFromNameW64(HANDLE, PCWSTR, PCWSTR, DWORD, PLONG, PIMAGEHLP_LINEW64);
+ULONG WINAPI SymGetFileLineOffsets64(HANDLE, PCSTR, PCSTR, PDWORD64, ULONG);
+BOOL WINAPI SymGetSourceFile(HANDLE, ULONG64, PCSTR, PCSTR, PSTR, DWORD);
+BOOL WINAPI SymGetSourceFileW(HANDLE, ULONG64, PCWSTR, PCWSTR, PWSTR, DWORD);
+BOOL WINAPI SymGetSourceFileToken(HANDLE, ULONG64, PCSTR, PVOID*, DWORD*);
+BOOL WINAPI SymGetSourceFileTokenW(HANDLE, ULONG64, PCWSTR, PVOID*, DWORD*);
+BOOL WINAPI SymGetSourceFileFromToken(HANDLE, PVOID, PCSTR, PSTR, DWORD);
+BOOL WINAPI SymGetSourceFileFromTokenW(HANDLE, PVOID, PCWSTR, PWSTR, DWORD);
+BOOL WINAPI SymGetSourceVarFromToken(HANDLE, PVOID, PCSTR, PCSTR, PSTR, DWORD);
+BOOL WINAPI SymGetSourceVarFromTokenW(HANDLE, PVOID, PCWSTR, PCWSTR, PWSTR, DWORD);
+
+typedef struct _SRCCODEINFO
+{
+    DWORD       SizeOfStruct;
+    PVOID       Key;
+    DWORD64     ModBase;
+    CHAR        Obj[MAX_PATH+1];
+    CHAR        FileName[MAX_PATH+1];
+    DWORD       LineNumber;
+    DWORD64     Address;
+} SRCCODEINFO, *PSRCCODEINFO;
+
+typedef struct _SRCCODEINFOW
+{
+    DWORD       SizeOfStruct;
+    PVOID       Key;
+    DWORD64     ModBase;
+    WCHAR       Obj[MAX_PATH+1];
+    WCHAR       FileName[MAX_PATH+1];
+    DWORD       LineNumber;
+    DWORD64     Address;
+} SRCCODEINFOW, *PSRCCODEINFOW;
+
+typedef BOOL (CALLBACK* PSYM_ENUMLINES_CALLBACK)(PSRCCODEINFO, PVOID);
+typedef BOOL (CALLBACK* PSYM_ENUMLINES_CALLBACKW)(PSRCCODEINFOW, PVOID);
+BOOL WINAPI SymEnumLines(HANDLE, ULONG64, PCSTR, PCSTR, PSYM_ENUMLINES_CALLBACK, PVOID);
+BOOL WINAPI SymEnumLinesW(HANDLE, ULONG64, PCWSTR, PCWSTR, PSYM_ENUMLINES_CALLBACKW, PVOID);
+BOOL WINAPI SymEnumSourceLines(HANDLE, ULONG64, PCSTR, PCSTR, DWORD, DWORD, PSYM_ENUMLINES_CALLBACK, PVOID);
+BOOL WINAPI SymEnumSourceLinesW(HANDLE, ULONG64, PCWSTR, PCWSTR, DWORD, DWORD, PSYM_ENUMLINES_CALLBACKW, PVOID);
+
+/*************************
+ * File & image handling *
+ *************************/
+BOOL WINAPI SymInitialize(HANDLE, PCSTR, BOOL);
+BOOL WINAPI SymInitializeW(HANDLE, PCWSTR, BOOL);
+BOOL WINAPI SymCleanup(HANDLE);
+
+HANDLE WINAPI FindDebugInfoFile(PCSTR, PCSTR, PSTR);
+typedef BOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACK)(HANDLE, PCSTR, PVOID);
+typedef BOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACKW)(HANDLE, PCWSTR, PVOID);
+HANDLE WINAPI FindDebugInfoFileEx(PCSTR, PCSTR, PSTR, PFIND_DEBUG_FILE_CALLBACK, PVOID);
+HANDLE WINAPI FindDebugInfoFileExW(PCWSTR, PCWSTR, PWSTR, PFIND_DEBUG_FILE_CALLBACKW, PVOID);
+HANDLE WINAPI SymFindDebugInfoFile(HANDLE, PCSTR, PSTR, PFIND_DEBUG_FILE_CALLBACK, PVOID);
+HANDLE WINAPI SymFindDebugInfoFileW(HANDLE, PCWSTR, PWSTR, PFIND_DEBUG_FILE_CALLBACKW, PVOID);
+typedef BOOL (CALLBACK *PFINDFILEINPATHCALLBACK)(PCSTR, PVOID);
+typedef BOOL (CALLBACK *PFINDFILEINPATHCALLBACKW)(PCWSTR, PVOID);
+BOOL WINAPI FindFileInPath(HANDLE, PCSTR, PCSTR, PVOID, DWORD, DWORD, DWORD,
+                           PSTR, PFINDFILEINPATHCALLBACK, PVOID);
+BOOL WINAPI SymFindFileInPath(HANDLE, PCSTR, PCSTR, PVOID, DWORD, DWORD, DWORD,
+                              PSTR, PFINDFILEINPATHCALLBACK, PVOID);
+BOOL WINAPI SymFindFileInPathW(HANDLE, PCWSTR, PCWSTR, PVOID, DWORD, DWORD, DWORD,
+                              PWSTR, PFINDFILEINPATHCALLBACKW, PVOID);
+HANDLE WINAPI FindExecutableImage(PCSTR, PCSTR, PSTR);
+typedef BOOL (CALLBACK *PFIND_EXE_FILE_CALLBACK)(HANDLE, PCSTR, PVOID);
+typedef BOOL (CALLBACK *PFIND_EXE_FILE_CALLBACKW)(HANDLE, PCWSTR, PVOID);
+HANDLE WINAPI FindExecutableImageEx(PCSTR, PCSTR, PSTR, PFIND_EXE_FILE_CALLBACK, PVOID);
+HANDLE WINAPI FindExecutableImageExW(PCWSTR, PCWSTR, PWSTR, PFIND_EXE_FILE_CALLBACKW, PVOID);
+HANDLE WINAPI SymFindExecutableImage(HANDLE, PCSTR, PSTR, PFIND_EXE_FILE_CALLBACK, PVOID);
+HANDLE WINAPI SymFindExecutableImageW(HANDLE, PCWSTR, PWSTR, PFIND_EXE_FILE_CALLBACKW, PVOID);
+PIMAGE_NT_HEADERS WINAPI ImageNtHeader(PVOID);
+PVOID WINAPI ImageDirectoryEntryToDataEx(PVOID, BOOLEAN, USHORT, PULONG,
+                                         PIMAGE_SECTION_HEADER *);
+PVOID WINAPI ImageDirectoryEntryToData(PVOID, BOOLEAN, USHORT, PULONG);
+PIMAGE_SECTION_HEADER WINAPI ImageRvaToSection(PIMAGE_NT_HEADERS, PVOID, ULONG);
+PVOID WINAPI ImageRvaToVa(PIMAGE_NT_HEADERS, PVOID, ULONG, PIMAGE_SECTION_HEADER*);
+BOOL WINAPI SymGetSearchPath(HANDLE, PSTR, DWORD);
+BOOL WINAPI SymGetSearchPathW(HANDLE, PWSTR, DWORD);
+BOOL WINAPI SymSetSearchPath(HANDLE, PCSTR);
+BOOL WINAPI SymSetSearchPathW(HANDLE, PCWSTR);
+DWORD WINAPI GetTimestampForLoadedLibrary(HMODULE);
+BOOL WINAPI MakeSureDirectoryPathExists(PCSTR);
+BOOL WINAPI SearchTreeForFile(PCSTR, PCSTR, PSTR);
+BOOL WINAPI SearchTreeForFileW(PCWSTR, PCWSTR, PWSTR);
+typedef BOOL (CALLBACK *PENUMDIRTREE_CALLBACK)(PCSTR, PVOID);
+typedef BOOL (CALLBACK *PENUMDIRTREE_CALLBACKW)(PCWSTR, PVOID);
+BOOL WINAPI EnumDirTree(HANDLE, PCSTR, PCSTR, PSTR, PENUMDIRTREE_CALLBACK, PVOID);
+BOOL WINAPI EnumDirTreeW(HANDLE, PCWSTR, PCWSTR, PWSTR, PENUMDIRTREE_CALLBACKW, PVOID);
+BOOL WINAPI SymMatchFileName(PCSTR, PCSTR, PSTR*, PSTR*);
+BOOL WINAPI SymMatchFileNameW(PCWSTR, PCWSTR, PWSTR*, PWSTR*);
+PCHAR WINAPI SymSetHomeDirectory(HANDLE, PCSTR);
+PWSTR WINAPI SymSetHomeDirectoryW(HANDLE, PCWSTR);
+PCHAR WINAPI SymGetHomeDirectory(DWORD, PSTR, size_t);
+PWSTR WINAPI SymGetHomeDirectoryW(DWORD, PWSTR, size_t);
+#define hdBase  0
+#define hdSym   1
+#define hdSrc   2
+#define hdMax   3
+
+/*************************
+ *   Context management  *
+ *************************/
+BOOL WINAPI SymSetContext(HANDLE, PIMAGEHLP_STACK_FRAME, PIMAGEHLP_CONTEXT);
+
+
+/*************************
+ *    Stack management   *
+ *************************/
+
+typedef struct _KDHELP
+{
+    DWORD       Thread;
+    DWORD       ThCallbackStack;
+    DWORD       NextCallback;
+    DWORD       FramePointer;
+    DWORD       KiCallUserMode;
+    DWORD       KeUserCallbackDispatcher;
+    DWORD       SystemRangeStart;
+} KDHELP, *PKDHELP;
+
+typedef struct _KDHELP64
+{
+    DWORD64     Thread;
+    DWORD       ThCallbackStack;
+    DWORD       ThCallbackBStore;
+    DWORD       NextCallback;
+    DWORD       FramePointer;
+    DWORD64     KiCallUserMode;
+    DWORD64     KeUserCallbackDispatcher;
+    DWORD64     SystemRangeStart;
+    DWORD64     Reserved[8];
+} KDHELP64, *PKDHELP64;
+
+typedef struct _STACKFRAME
+{
+    ADDRESS     AddrPC;
+    ADDRESS     AddrReturn;
+    ADDRESS     AddrFrame;
+    ADDRESS     AddrStack;
+    PVOID       FuncTableEntry;
+    DWORD       Params[4];
+    BOOL        Far;
+    BOOL        Virtual;
+    DWORD       Reserved[3];
+    KDHELP      KdHelp;
+    ADDRESS     AddrBStore;
+} STACKFRAME, *LPSTACKFRAME;
+
+typedef struct _STACKFRAME64
+{
+    ADDRESS64   AddrPC;
+    ADDRESS64   AddrReturn;
+    ADDRESS64   AddrFrame;
+    ADDRESS64   AddrStack;
+    ADDRESS64   AddrBStore;
+    PVOID       FuncTableEntry;
+    DWORD64     Params[4];
+    BOOL        Far;
+    BOOL        Virtual;
+    DWORD64     Reserved[3];
+    KDHELP64    KdHelp;
+} STACKFRAME64, *LPSTACKFRAME64;
+
+typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE)
+    (HANDLE, DWORD, PVOID, DWORD, PDWORD);
+typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE)(HANDLE, DWORD);
+typedef DWORD (CALLBACK *PGET_MODULE_BASE_ROUTINE)(HANDLE, DWORD);
+typedef DWORD (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE)(HANDLE, HANDLE, LPADDRESS);
+BOOL WINAPI StackWalk(DWORD, HANDLE, HANDLE, LPSTACKFRAME, PVOID,
+                      PREAD_PROCESS_MEMORY_ROUTINE,
+                      PFUNCTION_TABLE_ACCESS_ROUTINE,
+                      PGET_MODULE_BASE_ROUTINE,
+                      PTRANSLATE_ADDRESS_ROUTINE);
+
+typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE64)
+    (HANDLE, DWORD64, PVOID, DWORD, PDWORD);
+typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE64)(HANDLE, DWORD64);
+typedef DWORD64 (CALLBACK *PGET_MODULE_BASE_ROUTINE64)(HANDLE, DWORD64);
+typedef DWORD64 (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE64)(HANDLE, HANDLE, LPADDRESS64);
+BOOL WINAPI StackWalk64(DWORD, HANDLE, HANDLE, LPSTACKFRAME64, PVOID,
+                        PREAD_PROCESS_MEMORY_ROUTINE64,
+                        PFUNCTION_TABLE_ACCESS_ROUTINE64,
+                        PGET_MODULE_BASE_ROUTINE64,
+                        PTRANSLATE_ADDRESS_ROUTINE64);
+
+PVOID WINAPI SymFunctionTableAccess(HANDLE, DWORD);
+PVOID WINAPI SymFunctionTableAccess64(HANDLE, DWORD64);
+
+typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK)(HANDLE, DWORD, PVOID);
+typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK64)(HANDLE, ULONG64, ULONG64);
+
+BOOL WINAPI SymRegisterFunctionEntryCallback(HANDLE, PSYMBOL_FUNCENTRY_CALLBACK, PVOID);
+BOOL WINAPI SymRegisterFunctionEntryCallback64(HANDLE, PSYMBOL_FUNCENTRY_CALLBACK64, ULONG64);
+
+/*************************
+ * Version, global stuff *
+ *************************/
+
+#define API_VERSION_NUMBER 9
+
+typedef struct API_VERSION
+{
+    USHORT  MajorVersion;
+    USHORT  MinorVersion;
+    USHORT  Revision;
+    USHORT  Reserved;
+} API_VERSION, *LPAPI_VERSION;
+
+LPAPI_VERSION WINAPI ImagehlpApiVersion(void);
+LPAPI_VERSION WINAPI ImagehlpApiVersionEx(LPAPI_VERSION);
+
+typedef struct _IMAGE_DEBUG_INFORMATION
+{
+    LIST_ENTRY                  List;
+    DWORD                       ReservedSize;
+    PVOID                       ReservedMappedBase;
+    USHORT                      ReservedMachine;
+    USHORT                      ReservedCharacteristics;
+    DWORD                       ReservedCheckSum;
+    DWORD                       ImageBase;
+    DWORD                       SizeOfImage;
+    DWORD                       ReservedNumberOfSections;
+    PIMAGE_SECTION_HEADER       ReservedSections;
+    DWORD                       ReservedExportedNamesSize;
+    PSTR                        ReservedExportedNames;
+    DWORD                       ReservedNumberOfFunctionTableEntries;
+    PIMAGE_FUNCTION_ENTRY       ReservedFunctionTableEntries;
+    DWORD                       ReservedLowestFunctionStartingAddress;
+    DWORD                       ReservedHighestFunctionEndingAddress;
+    DWORD                       ReservedNumberOfFpoTableEntries;
+    PFPO_DATA                   ReservedFpoTableEntries;
+    DWORD                       SizeOfCoffSymbols;
+    PIMAGE_COFF_SYMBOLS_HEADER  CoffSymbols;
+    DWORD                       ReservedSizeOfCodeViewSymbols;
+    PVOID                       ReservedCodeViewSymbols;
+    PSTR                        ImageFilePath;
+    PSTR                        ImageFileName;
+    PSTR                        ReservedDebugFilePath;
+    DWORD                       ReservedTimeDateStamp;
+    BOOL                        ReservedRomImage;
+    PIMAGE_DEBUG_DIRECTORY      ReservedDebugDirectory;
+    DWORD                       ReservedNumberOfDebugDirectories;
+    DWORD                       ReservedOriginalFunctionTableBaseAddress;
+    DWORD                       Reserved[ 2 ];
+} IMAGE_DEBUG_INFORMATION, *PIMAGE_DEBUG_INFORMATION;
+
+
+PIMAGE_DEBUG_INFORMATION WINAPI MapDebugInformation(HANDLE, PCSTR, PCSTR, ULONG);
+
+BOOL WINAPI UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION);
+
+DWORD   WINAPI  SymGetOptions(void);
+DWORD   WINAPI  SymSetOptions(DWORD);
+
+BOOL WINAPI SymSetParentWindow(HWND);
+
+/*************************
+ * Version, global stuff *
+ *************************/
+
+typedef BOOL     (WINAPI* PSYMBOLSERVERPROC)(PCSTR, PCSTR, PVOID, DWORD, DWORD, PSTR);
+typedef BOOL     (WINAPI* PSYMBOLSERVERPROCA)(PCSTR, PCSTR, PVOID, DWORD, DWORD, PSTR);
+typedef BOOL     (WINAPI* PSYMBOLSERVERPROCW)(PCWSTR, PCWSTR, PVOID, DWORD, DWORD, PWSTR);
+typedef BOOL     (WINAPI* PSYMBOLSERVEROPENPROC)(void);
+typedef BOOL     (WINAPI* PSYMBOLSERVERCLOSEPROC)(void);
+typedef BOOL     (WINAPI* PSYMBOLSERVERSETOPTIONSPROC)(UINT_PTR, ULONG64);
+typedef BOOL     (CALLBACK* PSYMBOLSERVERCALLBACKPROC)(UINT_PTR, ULONG64, ULONG64);
+typedef UINT_PTR (WINAPI* PSYMBOLSERVERGETOPTIONSPROC)(void);
+typedef BOOL     (WINAPI* PSYMBOLSERVERPINGPROC)(PCSTR);
+typedef BOOL     (WINAPI* PSYMBOLSERVERPINGPROCA)(PCSTR);
+typedef BOOL     (WINAPI* PSYMBOLSERVERPINGPROCW)(PCWSTR);
+
+#define SSRVOPT_CALLBACK            0x0001
+#define SSRVOPT_DWORD               0x0002
+#define SSRVOPT_DWORDPTR            0x0004
+#define SSRVOPT_GUIDPTR             0x0008
+#define SSRVOPT_OLDGUIDPTR          0x0010
+#define SSRVOPT_UNATTENDED          0x0020
+#define SSRVOPT_NOCOPY              0x0040
+#define SSRVOPT_PARENTWIN           0x0080
+#define SSRVOPT_PARAMTYPE           0x0100
+#define SSRVOPT_SECURE              0x0200
+#define SSRVOPT_TRACE               0x0400
+#define SSRVOPT_SETCONTEXT          0x0800
+#define SSRVOPT_PROXY               0x1000
+#define SSRVOPT_DOWNSTREAM_STORE    0x2000
+#define SSRVOPT_RESET               ((ULONG_PTR)-1)
+
+#define SSRVACTION_TRACE        1
+#define SSRVACTION_QUERYCANCEL  2
+#define SSRVACTION_EVENT        3
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif  /* __WINE_DBGHELP_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dbinit.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dbinit.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dbinit.idl	(revision 16410)
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2006 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+[
+    object,
+    uuid(0c733a8b-2a1c-11ce-ade5-00aa0044773d),
+    pointer_default(unique)
+]
+interface IDBInitialize : IUnknown {
+    [local] HRESULT Initialize();
+    [call_as(Initialize)] HRESULT RemoteInitialize( [out] IErrorInfo **ppErrorInfoRem );
+    [local] HRESULT Uninitialize();
+    [call_as(Uninitialize)] HRESULT RemoteUninitialize( [out] IErrorInfo **ppErrorInfoRem );
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dbprop.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dbprop.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dbprop.idl	(revision 16410)
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2006 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+[
+    object,
+    uuid(0c733a8a-2a1c-11ce-ade5-00aa0044773d),
+    pointer_default(unique)
+]
+interface IDBProperties : IUnknown {
+    [local] HRESULT GetProperties(
+             [in] ULONG cPropertyIDSets,
+             [in, size_is(cPropertyIDSets)] const DBPROPIDSET rgPropertyIDSets[],
+             [in, out] ULONG *pcPropertySets,
+             [out, size_is(,*pcPropertySets)] DBPROPSET **prgPropertySets);
+
+    [call_as(GetProperties)] HRESULT RemoteGetProperties(
+             [in] ULONG cPropertyIDSets,
+             [in, size_is(cPropertyIDSets)] const DBPROPIDSET rgPropertyIDSets[],
+             [in, out] ULONG *pcPropertySets,
+             [out, size_is(,*pcPropertySets)] DBPROPSET **prgPropertySets,
+             [out] IErrorInfo **ppErrorInfoRem);
+
+    [local] HRESULT GetPropertyInfo(
+             [in] ULONG cPropertyIDSets,
+             [in, size_is(cPropertyIDSets)] const DBPROPIDSET rgPropertyIDSets[],
+             [in, out] ULONG *pcPropertyInfoSets,
+             [out, size_is(,*pcPropertyInfoSets)] DBPROPINFOSET **prgPropertyInfoSets);
+
+    [call_as(GetPropertyInfo)] HRESULT RemoteGetPropertyInfo(
+             [in] ULONG cPropertyIDSets,
+             [in,size_is(cPropertyIDSets)] const DBPROPIDSET *rgPropertyIDSets,
+             [in, out] ULONG *pcPropertyInfoSets,
+             [out, size_is(,*pcPropertyInfoSets)] DBPROPINFOSET **prgPropertyInfoSets,
+             [in, out] ULONG *pcOffsets,
+             [out, size_is(,*pcOffsets)] DBBYTEOFFSET **prgDescOffsets,
+             [in, out] ULONG *pcbDescBuffer,
+             [out, size_is(,*pcbDescBuffer)] OLECHAR **ppDescBuffer,
+             [out] IErrorInfo **ppErrorInfoRem);
+
+    [local] HRESULT SetProperties(
+             [in] ULONG cPropertySets,
+             [in, out, size_is(cPropertySets)] DBPROPSET rgPropertySets[]);
+
+    [call_as(SetProperties)] HRESULT RemoteSetProperties(
+             [in] ULONG cPropertySets,
+             [in, out, size_is(cPropertySets)] DBPROPSET *rgPropertySets,
+             [in] ULONG cTotalProps,
+             [out, size_is(cTotalProps)] DBPROPSTATUS *rgPropStatus,
+             [out] IErrorInfo **ppErrorInfoRem);
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dbs.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dbs.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dbs.idl	(revision 16410)
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2006 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+typedef DWORD DBKIND;
+
+enum DBKINDENUM {
+    DBKIND_GUID_NAME,
+    DBKIND_GUID_PROPID,
+    DBKIND_NAME,
+    DBKIND_PGUID_NAME,
+    DBKIND_PGUID_PROPID,
+    DBKIND_PROPID,
+    DBKIND_GUID,
+};
+
+typedef struct tagDBID {
+    [switch_type(DBKIND), switch_is(eKind)] union
+    {
+    [case(DBKIND_GUID_NAME, DBKIND_GUID_PROPID, DBKIND_GUID, DBKIND_NAME, DBKIND_PROPID)]
+        GUID guid;
+    [case(DBKIND_PGUID_NAME, DBKIND_PGUID_PROPID)]
+        GUID *pguid;
+    [default]
+        ;
+    } uGuid;
+    DBKIND eKind;
+    [switch_type(DBKIND), switch_is(eKind)] union
+    {
+    [case(DBKIND_GUID_NAME, DBKIND_NAME, DBKIND_PGUID_NAME)]
+        LPOLESTR pwszName;
+    [case(DBKIND_GUID_PROPID, DBKIND_GUID, DBKIND_PGUID_PROPID, DBKIND_PROPID)]
+        ULONG ulPropid;
+    [default]
+        ;
+    } uName;
+} DBID;
+
+typedef DWORD DBPROPID;
+
+typedef struct tagDBPROPIDSET {
+    [size_is(cPropertyIDs)] DBPROPID *rgPropertyIDs;
+    ULONG cPropertyIDs;
+    GUID guidPropertySet;
+} DBPROPIDSET;
+
+typedef DWORD DBPROPOPTIONS;
+
+enum DBPROPOPTIONENUM {
+    DBPROPOPTIONS_REQUIRED = 0,
+    DBPROPOPTIONS_SETIFCHEAP = 1,
+    DBPROPOPTIONS_OPTIONAL = 1,
+};
+
+typedef DWORD DBPROPSTATUS;
+
+typedef struct tagDBPROP {
+    DBPROPID dwPropertyID;
+    DBPROPOPTIONS dwOptions;
+    DBPROPSTATUS dwStatus;
+    DBID colid;
+    VARIANT vValue;
+} DBPROP;
+
+typedef struct tagDBPROPSET {
+    [size_is(cProperties)] DBPROP *rgProperties;
+    ULONG cProperties;
+    GUID guidPropertySet;
+} DBPROPSET;
+
+typedef DWORD DBPROPFLAGS;
+
+typedef struct tagDBPROPINFO {
+    LPOLESTR pwszDescription;
+    DBPROPID dwPropertyID;
+    DBPROPFLAGS dwFlags;
+    VARTYPE vtType;
+    VARIANT vValues;
+} DBPROPINFO;
+
+typedef DBPROPINFO *PDBPROPINFO;
+
+typedef struct tagDBPROPINFOSET {
+    [size_is(cPropertyInfos)] PDBPROPINFO rgPropertyInfos;
+    ULONG cPropertyInfos;
+    GUID guidPropertySet;
+} DBPROPINFOSET;
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dbt.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dbt.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dbt.h	(revision 16410)
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) 2004 Ulrich Czekalla
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DBT_H
+#define __WINE_DBT_H
+
+/* dbt.h doesn't use the normal convention, it adds an underscore before A/W */
+#ifdef WINE_NO_UNICODE_MACROS
+# define DECL_WINELIB_DBT_TYPE_AW(type)  /* nothing */
+#else
+# define DECL_WINELIB_DBT_TYPE_AW(type)  typedef WINELIB_NAME_AW(type##_) type;
+#endif
+
+#define DBT_NO_DISK_SPACE               0x0047
+#define DBT_LOW_DISK_SPACE              0x0048
+#define DBT_CONFIGMGPRIVATE             0x7FFF
+#define DBT_DEVICEARRIVAL               0x8000
+#define DBT_DEVICEQUERYREMOVE           0x8001
+#define DBT_DEVICEQUERYREMOVEFAILED     0x8002
+#define DBT_DEVICEREMOVEPENDING         0x8003
+#define DBT_DEVICEREMOVECOMPLETE        0x8004
+#define DBT_DEVICETYPESPECIFIC          0x8005
+#define DBT_CUSTOMEVENT                 0x8006
+
+typedef struct _DEV_BROADCAST_HDR
+{
+    DWORD dbch_size;
+    DWORD dbch_devicetype;
+    DWORD dbch_reserved;
+} DEV_BROADCAST_HDR, *PDEV_BROADCAST_HDR;
+
+#define DBT_DEVTYP_OEM                  0x00000000
+#define DBT_DEVTYP_DEVNODE              0x00000001
+#define DBT_DEVTYP_VOLUME               0x00000002
+#define DBT_DEVTYP_PORT                 0x00000003
+#define DBT_DEVTYP_NET                  0x00000004
+#define DBT_DEVTYP_DEVICEINTERFACE      0x00000005
+#define DBT_DEVTYP_HANDLE               0x00000006
+
+typedef struct _DEV_BROADCAST_OEM
+{
+    DWORD       dbco_size;
+    DWORD       dbco_devicetype;
+    DWORD       dbco_reserved;
+    DWORD       dbco_identifier;
+    DWORD       dbco_suppfunc;
+} DEV_BROADCAST_OEM, *PDEV_BROADCAST_OEM;
+
+typedef struct _DEV_BROADCAST_DEVNODE
+{
+    DWORD       dbcd_size;
+    DWORD       dbcd_devicetype;
+    DWORD       dbcd_reserved;
+    DWORD       dbcd_devnode;
+} DEV_BROADCAST_DEVNODE, *PDEV_BROADCAST_DEVNODE;
+
+typedef struct _DEV_BROADCAST_VOLUME
+{
+    DWORD       dbcv_size;
+    DWORD       dbcv_devicetype;
+    DWORD       dbcv_reserved;
+    DWORD       dbcv_unitmask;
+    WORD        dbcv_flags;
+} DEV_BROADCAST_VOLUME, *PDEV_BROADCAST_VOLUME;
+
+#define DBTF_MEDIA 0x0001
+#define DBTF_NET   0x0002
+
+typedef struct _DEV_BROADCAST_PORT_A
+{
+    DWORD       dbcp_size;
+    DWORD       dbcp_devicetype;
+    DWORD       dbcp_reserved;
+    char        dbcp_name[1];
+} DEV_BROADCAST_PORT_A, *PDEV_BROADCAST_PORT_A;
+
+typedef struct _DEV_BROADCAST_PORT_W
+{
+    DWORD       dbcp_size;
+    DWORD       dbcp_devicetype;
+    DWORD       dbcp_reserved;
+    WCHAR       dbcp_name[1];
+} DEV_BROADCAST_PORT_W, *PDEV_BROADCAST_PORT_W;
+
+DECL_WINELIB_DBT_TYPE_AW(DEV_BROADCAST_PORT)
+DECL_WINELIB_DBT_TYPE_AW(PDEV_BROADCAST_PORT)
+
+typedef struct _DEV_BROADCAST_NET
+{
+    DWORD       dbcn_size;
+    DWORD       dbcn_devicetype;
+    DWORD       dbcn_reserved;
+    DWORD       dbcn_resource;
+    DWORD       dbcn_flags;
+} DEV_BROADCAST_NET, *PDEV_BROADCAST_NET;
+
+typedef struct _DEV_BROADCAST_DEVICEINTERFACE_A
+{
+    DWORD       dbcc_size;
+    DWORD       dbcc_devicetype;
+    DWORD       dbcc_reserved;
+    GUID        dbcc_classguid;
+    CHAR        dbcc_name[1];
+} DEV_BROADCAST_DEVICEINTERFACE_A, *PDEV_BROADCAST_DEVICEINTERFACE_A;
+
+typedef struct _DEV_BROADCAST_DEVICEINTERFACE_W
+{
+    DWORD       dbcc_size;
+    DWORD       dbcc_devicetype;
+    DWORD       dbcc_reserved;
+    GUID        dbcc_classguid;
+    WCHAR       dbcc_name[1];
+} DEV_BROADCAST_DEVICEINTERFACE_W, *PDEV_BROADCAST_DEVICEINTERFACE_W;
+
+DECL_WINELIB_DBT_TYPE_AW(DEV_BROADCAST_DEVICEINTERFACE)
+DECL_WINELIB_DBT_TYPE_AW(PDEV_BROADCAST_DEVICEINTERFACE)
+
+typedef struct _DEV_BROADCAST_HANDLE
+{
+    DWORD       dbch_size;
+    DWORD       dbch_devicetype;
+    DWORD       dbch_reserved;
+    HANDLE      dbch_handle;
+    HDEVNOTIFY  dbch_hdevnotify;
+    GUID        dbch_eventguid;
+    LONG        dbch_nameoffset;
+    BYTE        dbch_data[1];
+} DEV_BROADCAST_HANDLE, *PDEV_BROADCAST_HANDLE;
+
+#undef DECL_WINELIB_DBT_TYPE_AW
+
+#endif /* __WINE_DBT_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dciddi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dciddi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dciddi.h	(revision 16410)
@@ -0,0 +1,83 @@
+/*
+ * DCI driver interface
+ *
+ * Copyright (C) 2001 Ove Kaaven
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DCIDDI_H
+#define __WINE_DCIDDI_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* DCI Command Escape */
+#define DCICOMMAND	3075
+#define DCI_VERSION	0x0100
+
+#define DCICREATEPRIMARYSURFACE		1
+#define DCICREATEOFFSCREENSURFACE	2
+#define DCICREATEOVERLAYSURFACE		3
+#define DCIENUMSURFACE			4
+#define DCIESCAPE			5
+
+/* DCI Errors */
+#define DCI_OK		                0
+#define DCI_FAIL_GENERIC               -1
+#define DCI_FAIL_UNSUPPORTEDVERSION    -2
+#define DCI_FAIL_INVALIDSURFACE        -3
+#define DCI_FAIL_UNSUPPORTED           -4
+
+
+typedef int DCIRVAL; /* DCI callback return type */
+
+/*****************************************************************************
+ * Escape command structures
+ */
+typedef struct _DCICMD {
+    DWORD dwCommand;
+    DWORD dwParam1;
+    DWORD dwParam2;
+    DWORD dwVersion;
+    DWORD dwReserved;
+} DCICMD,*LPDCICMD;
+
+typedef struct _DCISURFACEINFO {
+    DWORD dwSize;
+    DWORD dwDCICaps;
+    DWORD dwCompression;
+    DWORD dwMask[3];
+    DWORD dwWidth;
+    DWORD dwHeight;
+    LONG  lStride;
+    DWORD dwBitCount;
+    ULONG_PTR dwOffSurface;
+    WORD  wSelSurface;
+    WORD  wReserved;
+    DWORD dwReserved1;
+    DWORD dwReserved2;
+    DWORD dwReserved3;
+    DCIRVAL (CALLBACK *BeginAccess)(LPVOID, LPRECT);
+    void (CALLBACK *EndAccess)(LPVOID);
+    void (CALLBACK *DestroySurface)(LPVOID);
+} DCISURFACEINFO, *LPDCISURFACEINFO;
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __WINE_DCIDDI_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dciman.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dciman.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dciman.h	(revision 16410)
@@ -0,0 +1,38 @@
+/*
+ * DCI driver interface
+ *
+ * Copyright (C) 2005 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _INC_DCIMAN
+#define _INC_DCIMAN
+
+#include <dciddi.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+HDC         WINAPI DCIOpenProvider(void);
+void        WINAPI DCICloseProvider(HDC);
+int         WINAPI DCICreatePrimary(HDC,LPDCISURFACEINFO*);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* _INC_DCIMAN */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dde.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dde.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dde.h	(revision 16410)
@@ -0,0 +1,89 @@
+/*
+ * Copyright 1995, Technion, Israel Institute of Technology
+ * Electrical Eng, Software Lab.
+ * Author:    Michael Veksler.
+ * Purpose:   dde declarations
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DDE_H
+#define __WINE_DDE_H
+
+#include <windef.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef _USER32_
+#define WINUSERAPI
+#else
+#define WINUSERAPI DECLSPEC_IMPORT
+#endif
+
+#define WM_DDE_INITIATE   0x3E0
+#define WM_DDE_TERMINATE  0x3E1
+#define WM_DDE_ADVISE	  0x3E2
+#define WM_DDE_UNADVISE   0x3E3
+#define WM_DDE_ACK	  0x3E4
+#define WM_DDE_DATA	  0x3E5
+#define WM_DDE_REQUEST	  0x3E6
+#define WM_DDE_POKE	  0x3E7
+#define WM_DDE_EXECUTE	  0x3E8
+#define WM_DDE_LAST	  WM_DDE_EXECUTE
+#define WM_DDE_FIRST	  WM_DDE_INITIATE
+
+/* DDEACK: wStatus in WM_DDE_ACK message */
+typedef struct
+{
+    unsigned short bAppReturnCode:8, reserved:6, fBusy:1, fAck:1;
+} DDEACK;
+
+/* DDEDATA: hData in WM_DDE_DATA message */
+typedef struct
+{
+    unsigned short unused:12, fResponse:1, fRelease:1, reserved:1, fAckReq:1;
+    short cfFormat;
+    BYTE Value[1];		/* undetermined array */
+} DDEDATA;
+
+/* DDEADVISE: hOptions in WM_DDE_ADVISE message */
+typedef struct
+{
+    unsigned short reserved:14, fDeferUpd:1, fAckReq:1;
+    short cfFormat;
+} DDEADVISE;
+
+/* DDEPOKE: hData in WM_DDE_POKE message. */
+typedef struct
+{
+    unsigned short unused:13, fRelease:1, fReserved:2;
+    short cfFormat;
+    BYTE Value[1];   	/* undetermined array */
+} DDEPOKE;
+
+WINUSERAPI BOOL        WINAPI DdeSetQualityOfService(HWND,CONST SECURITY_QUALITY_OF_SERVICE *,PSECURITY_QUALITY_OF_SERVICE);
+WINUSERAPI BOOL        WINAPI FreeDDElParam(UINT,LPARAM);
+WINUSERAPI BOOL        WINAPI ImpersonateDdeClientWindow(HWND,HWND);
+WINUSERAPI LPARAM      WINAPI PackDDElParam(UINT,UINT_PTR,UINT_PTR);
+WINUSERAPI LPARAM      WINAPI ReuseDDElParam(LPARAM,UINT,UINT,UINT_PTR,UINT_PTR);
+WINUSERAPI BOOL        WINAPI UnpackDDElParam(UINT,LPARAM,PUINT_PTR,PUINT_PTR);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_DDE_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddeml.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddeml.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddeml.h	(revision 16410)
@@ -0,0 +1,382 @@
+/*
+ * DDEML library definitions
+ *
+ * Copyright 1997 Alexandre Julliard
+ * Copyright 1997 Len White
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DDEML_H
+#define __WINE_DDEML_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+#ifdef _USER32_
+#define WINUSERAPI
+#else
+#define WINUSERAPI DECLSPEC_IMPORT
+#endif
+
+/* Codepage Constants
+ */
+
+#define CP_WINANSI      1004
+#define CP_WINUNICODE   1200
+
+/* DDE synchronisation constants
+ */
+
+#define MSGF_DDEMGR 0x8001
+
+#define QID_SYNC	0xFFFFFFFF
+
+/*   Type variation for MS  deliberate departures from ANSI standards
+ */
+
+#define EXPENTRY CALLBACK
+
+#define SZDDESYS_TOPIC		TEXT("System")
+#define SZDDESYS_ITEM_TOPICS	TEXT("Topics")
+#define SZDDESYS_ITEM_SYSITEMS	TEXT("SysItems")
+#define SZDDESYS_ITEM_RTNMSG	TEXT("ReturnMessage")
+#define SZDDESYS_ITEM_STATUS	TEXT("Status")
+#define SZDDESYS_ITEM_FORMATS	TEXT("Formats")
+#define SZDDESYS_ITEM_HELP	TEXT("Help")
+#define SZDDE_ITEM_ITEMLIST	TEXT("TopicItemList")
+
+/***************************************************
+
+      FLAGS Section - copied from Microsoft SDK as must be standard, probably Copyright Microsoft Corporation
+
+***************************************************/
+
+#define     XST_NULL              0
+#define     XST_INCOMPLETE        1
+#define     XST_CONNECTED         2
+#define     XST_INIT1             3
+#define     XST_INIT2             4
+#define     XST_REQSENT           5
+#define     XST_DATARCVD          6
+#define     XST_POKESENT          7
+#define     XST_POKEACKRCVD       8
+#define     XST_EXECSENT          9
+#define     XST_EXECACKRCVD      10
+#define     XST_ADVSENT          11
+#define     XST_UNADVSENT        12
+#define     XST_ADVACKRCVD       13
+#define     XST_UNADVACKRCVD     14
+#define     XST_ADVDATASENT      15
+#define     XST_ADVDATAACKRCVD   16
+
+#define     ST_CONNECTED            0x0001
+#define     ST_ADVISE               0x0002
+#define     ST_ISLOCAL              0x0004
+#define     ST_BLOCKED              0x0008
+#define     ST_CLIENT               0x0010
+#define     ST_TERMINATED           0x0020
+#define     ST_INLIST               0x0040
+#define     ST_BLOCKNEXT            0x0080
+#define     ST_ISSELF               0x0100
+
+/*
+ * DdeEnableCallback function codes
+ */
+
+#define     EC_ENABLEALL                 0
+#define     EC_ENABLEONE                 ST_BLOCKNEXT
+#define     EC_DISABLE                   ST_BLOCKED
+#define     EC_QUERYWAITING              2
+
+/*
+ * Callback filter flags for use with standard apps.
+ */
+
+#define     CBF_FAIL_SELFCONNECTIONS     0x00001000
+#define     CBF_FAIL_CONNECTIONS         0x00002000
+#define     CBF_FAIL_ADVISES             0x00004000
+#define     CBF_FAIL_EXECUTES            0x00008000
+#define     CBF_FAIL_POKES               0x00010000
+#define     CBF_FAIL_REQUESTS            0x00020000
+#define     CBF_FAIL_ALLSVRXACTIONS      0x0003f000
+
+#define     CBF_SKIP_CONNECT_CONFIRMS    0x00040000
+#define     CBF_SKIP_REGISTRATIONS       0x00080000
+#define     CBF_SKIP_UNREGISTRATIONS     0x00100000
+#define     CBF_SKIP_DISCONNECTS         0x00200000
+#define     CBF_SKIP_ALLNOTIFICATIONS    0x003c0000
+
+#define     CBR_BLOCK                    ((HDDEDATA)~0UL)
+
+/*
+ * Application command flags
+ */
+#define     APPCMD_CLIENTONLY            0x00000010L
+#define     APPCMD_FILTERINITS           0x00000020L
+#define     APPCMD_MASK                  0x00000FF0L
+
+/*
+ * Application classification flags
+ */
+
+#define     APPCLASS_STANDARD            0x00000000L
+#define     APPCLASS_MONITOR             0x00000001L
+#define     APPCLASS_MASK                0x0000000FL
+
+/*
+ * Callback filter flags for use with MONITOR apps - 0 implies no monitor
+ * callbacks.
+ */
+#define     MF_HSZ_INFO                  0x01000000
+#define     MF_SENDMSGS                  0x02000000
+#define     MF_POSTMSGS                  0x04000000
+#define     MF_CALLBACKS                 0x08000000
+#define     MF_ERRORS                    0x10000000
+#define     MF_LINKS                     0x20000000
+#define     MF_CONV                      0x40000000
+
+#define     MF_MASK                      0xFF000000
+
+/*
+ *	DdeNameService service name flags
+ */
+
+#define     DNS_REGISTER		 0x0001
+#define     DNS_UNREGISTER		 0x0002
+#define     DNS_FILTERON		 0x0004
+#define     DNS_FILTEROFF         	 0x0008
+
+
+/****************************************************
+
+      End of Flags section
+
+****************************************************/
+
+/****************************************************
+
+	Message Types Section
+
+****************************************************/
+
+#define XTYPF_NOBLOCK		0x0002		/* CBR_NOBLOCK will not work */
+#define XTYPF_NODATA		0x0004		/* DDE_FDEFERUPD  */
+#define XTYPF_ACKREQ		0x0008		/* DDE_FACKREQ */
+
+#define XCLASS_MASK		0xFC00
+#define XCLASS_BOOL		0x1000
+#define XCLASS_DATA		0x2000
+#define XCLASS_FLAGS		0x4000
+#define	XCLASS_NOTIFICATION	0x8000
+
+#define XTYP_ERROR		(0x0000 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
+#define XTYP_ADVDATA		(0x0010 | XCLASS_FLAGS)
+#define XTYP_ADVREQ		(0x0020 | XCLASS_DATA | XTYPF_NOBLOCK)
+#define XTYP_ADVSTART		(0x0030 | XCLASS_BOOL)
+#define XTYP_ADVSTOP		(0x0040 | XCLASS_NOTIFICATION)
+#define XTYP_EXECUTE		(0x0050 | XCLASS_FLAGS)
+#define XTYP_CONNECT		(0x0060 | XCLASS_BOOL | XTYPF_NOBLOCK)
+#define XTYP_CONNECT_CONFIRM	(0x0070 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
+#define XTYP_XACT_COMPLETE	(0x0080 | XCLASS_NOTIFICATION )
+#define XTYP_POKE		(0x0090 | XCLASS_FLAGS)
+#define XTYP_REGISTER		(0x00A0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK )
+#define XTYP_REQUEST		(0x00B0 | XCLASS_DATA )
+#define XTYP_DISCONNECT		(0x00C0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK )
+#define XTYP_UNREGISTER		(0x00D0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK )
+#define XTYP_WILDCONNECT	(0x00E0 | XCLASS_DATA | XTYPF_NOBLOCK)
+#define XTYP_MONITOR		(0x00F0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
+
+#define XTYP_MASK		0x00F0
+#define XTYP_SHIFT		4
+
+#define TIMEOUT_ASYNC           0xFFFFFFFF
+
+#define CADV_LATEACK		0xFFFF
+
+/**************************************************
+
+	End of Message Types Section
+
+****************************************************/
+
+/*****************************************************
+
+	DDE Codes for wStatus field
+
+*****************************************************/
+
+#define DDE_FACK		0x8000
+#define DDE_FBUSY		0x4000
+#define DDE_FDEFERUPD		0x4000
+#define DDE_FACKREQ		0x8000
+#define DDE_FRELEASE		0x2000
+#define DDE_FREQUESTED		0x1000
+#define DDE_FAPPSTATUS		0x00FF
+#define DDE_FNOTPROCESSED	0x0000
+
+#define DDE_FACKRESERVED        (~(DDE_FACK | DDE_FBUSY | DDE_FAPPSTATUS))
+#define DDE_FADVRESERVED        (~(DDE_FACKREQ | DDE_FDEFERUPD))
+#define DDE_FDATRESERVED        (~(DDE_FACKREQ | DDE_FRELEASE | DDE_FREQUESTED))
+#define DDE_FPOKRESERVED        (~(DDE_FRELEASE))
+
+/*****************************************************
+
+	End of wStatus codes
+
+*****************************************************/
+
+/****************************************************
+
+      Return Codes section again copied from SDK as must be same
+
+*****************************************************/
+
+#define     DMLERR_NO_ERROR                    0       /* must be 0 */
+
+#define     DMLERR_FIRST                       0x4000
+
+#define     DMLERR_ADVACKTIMEOUT               0x4000
+#define     DMLERR_BUSY                        0x4001
+#define     DMLERR_DATAACKTIMEOUT              0x4002
+#define     DMLERR_DLL_NOT_INITIALIZED         0x4003
+#define     DMLERR_DLL_USAGE                   0x4004
+#define     DMLERR_EXECACKTIMEOUT              0x4005
+#define     DMLERR_INVALIDPARAMETER            0x4006
+#define     DMLERR_LOW_MEMORY                  0x4007
+#define     DMLERR_MEMORY_ERROR                0x4008
+#define     DMLERR_NOTPROCESSED                0x4009
+#define     DMLERR_NO_CONV_ESTABLISHED         0x400a
+#define     DMLERR_POKEACKTIMEOUT              0x400b
+#define     DMLERR_POSTMSG_FAILED              0x400c
+#define     DMLERR_REENTRANCY                  0x400d
+#define     DMLERR_SERVER_DIED                 0x400e
+#define     DMLERR_SYS_ERROR                   0x400f
+#define     DMLERR_UNADVACKTIMEOUT             0x4010
+#define     DMLERR_UNFOUND_QUEUE_ID            0x4011
+
+#define     DMLERR_LAST                        0x4011
+
+#define     HDATA_APPOWNED          	       0x0001
+
+/*****************************************************
+
+      End of Return Codes and Microsoft section
+
+******************************************************/
+
+
+
+DECLARE_HANDLE(HCONVLIST);
+DECLARE_HANDLE(HCONV);
+DECLARE_HANDLE(HSZ);
+DECLARE_HANDLE(HDDEDATA);
+
+
+
+/*******************************************************
+
+	API Entry Points
+
+*******************************************************/
+
+typedef HDDEDATA (CALLBACK *PFNCALLBACK)(UINT, UINT, HCONV, HSZ, HSZ,
+					 HDDEDATA, ULONG_PTR, ULONG_PTR);
+
+/***************************************************
+
+	Externally visible data structures
+
+***************************************************/
+
+typedef struct tagHSZPAIR
+{
+    HSZ hszSvc;
+    HSZ hszTopic;
+} HSZPAIR, *PHSZPAIR;
+
+typedef struct tagCONVCONTEXT
+{
+    UINT  cb;
+    UINT  wFlags;
+    UINT  wCountryID;
+    INT   iCodePage;
+    DWORD   dwLangID;
+    DWORD   dwSecurity;
+} CONVCONTEXT, *PCONVCONTEXT;
+
+typedef struct tagCONVINFO
+{
+    DWORD		cb;
+    DWORD 		hUser;
+    HCONV		hConvPartner;
+    HSZ			hszSvcPartner;
+    HSZ			hszServiceReq;
+    HSZ			hszTopic;
+    HSZ			hszItem;
+    UINT		wFmt;
+    UINT		wType;
+    UINT		wStatus;
+    UINT		wConvst;
+    UINT		wLastError;
+    HCONVLIST		hConvList;
+    CONVCONTEXT		ConvCtxt;
+    HWND		hwnd;
+    HWND		hwndPartner;
+} CONVINFO, *PCONVINFO;
+
+/*            Interface Definitions		*/
+
+WINUSERAPI BOOL      WINAPI DdeAbandonTransaction(DWORD idInst, HCONV hConv, DWORD idTransaction);
+WINUSERAPI LPBYTE    WINAPI DdeAccessData(HDDEDATA,LPDWORD);
+WINUSERAPI HDDEDATA  WINAPI DdeAddData(HDDEDATA,LPBYTE,DWORD,DWORD);
+WINUSERAPI HDDEDATA  WINAPI DdeClientTransaction(LPBYTE,DWORD,HCONV,HSZ,UINT,UINT,DWORD,LPDWORD);
+WINUSERAPI INT       WINAPI DdeCmpStringHandles(HSZ,HSZ);
+WINUSERAPI HCONV     WINAPI DdeConnect(DWORD,HSZ,HSZ,PCONVCONTEXT);
+WINUSERAPI HCONVLIST WINAPI DdeConnectList(DWORD,HSZ,HSZ,HCONVLIST,PCONVCONTEXT);
+WINUSERAPI HDDEDATA  WINAPI DdeCreateDataHandle(DWORD,LPBYTE,DWORD,DWORD,HSZ,UINT,UINT);
+WINUSERAPI HSZ       WINAPI DdeCreateStringHandleA(DWORD,LPCSTR,INT);
+WINUSERAPI HSZ       WINAPI DdeCreateStringHandleW(DWORD,LPCWSTR,INT);
+#define                     DdeCreateStringHandle WINELIB_NAME_AW(DdeCreateStringHandle)
+WINUSERAPI BOOL      WINAPI DdeDisconnect(HCONV);
+WINUSERAPI BOOL      WINAPI DdeDisconnectList(HCONVLIST);
+WINUSERAPI BOOL      WINAPI DdeEnableCallback(DWORD,HCONV,UINT);
+WINUSERAPI BOOL      WINAPI DdeFreeDataHandle(HDDEDATA);
+WINUSERAPI BOOL      WINAPI DdeFreeStringHandle(DWORD,HSZ);
+WINUSERAPI DWORD     WINAPI DdeGetData(HDDEDATA,LPBYTE,DWORD,DWORD);
+WINUSERAPI UINT      WINAPI DdeGetLastError(DWORD);
+WINUSERAPI BOOL      WINAPI DdeImpersonateClient(HCONV);
+WINUSERAPI UINT      WINAPI DdeInitializeA(LPDWORD,PFNCALLBACK,DWORD,DWORD);
+WINUSERAPI UINT      WINAPI DdeInitializeW(LPDWORD,PFNCALLBACK,DWORD,DWORD);
+#define                     DdeInitialize WINELIB_NAME_AW(DdeInitialize)
+WINUSERAPI BOOL      WINAPI DdeKeepStringHandle(DWORD,HSZ);
+WINUSERAPI HDDEDATA  WINAPI DdeNameService(DWORD,HSZ,HSZ,UINT);
+WINUSERAPI BOOL      WINAPI DdePostAdvise(DWORD,HSZ,HSZ);
+WINUSERAPI UINT      WINAPI DdeQueryConvInfo(HCONV,DWORD,PCONVINFO);
+WINUSERAPI HCONV     WINAPI DdeQueryNextServer(HCONVLIST, HCONV);
+WINUSERAPI DWORD     WINAPI DdeQueryStringA(DWORD, HSZ, LPSTR, DWORD, INT);
+WINUSERAPI DWORD     WINAPI DdeQueryStringW(DWORD, HSZ, LPWSTR, DWORD, INT);
+#define                     DdeQueryString WINELIB_NAME_AW(DdeQueryString)
+WINUSERAPI HCONV     WINAPI DdeReconnect(HCONV);
+WINUSERAPI BOOL      WINAPI DdeSetUserHandle(HCONV,DWORD,DWORD);
+WINUSERAPI BOOL      WINAPI DdeUnaccessData(HDDEDATA);
+WINUSERAPI BOOL      WINAPI DdeUninitialize(DWORD);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif  /* __WINE_DDEML_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/compstui.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/compstui.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/compstui.h	(revision 16410)
@@ -0,0 +1,71 @@
+/*
+ * Definitions for Common Property Sheet User Interface
+ *
+ * Copyright 2006 Detlef Riekenberg
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#ifndef _COMPSTUI_
+#define _COMPSTUI_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* DEFINES */
+
+#define PROPSHEETUI_INFO_VERSION    0x0100
+
+#define PSUIINFO_UNICODE    1
+
+/* return-values for CommonPropertySheetUI on success */
+#define CPSUI_CANCEL            0
+#define CPSUI_OK                1
+#define CPSUI_RESTARTWINDOWS    2
+#define CPSUI_REBOOTSYSTEM      3
+
+
+/* TYPES */
+typedef DWORD (CALLBACK *PFNCOMPROPSHEET)(HANDLE, UINT, LPARAM, LPARAM);
+
+typedef struct _PROPSHEETUI_INFO {
+    WORD            cbSize;
+    WORD            Version;
+    WORD            Flags;              /* set PSUIINFO_UNICODE for UNICODE */
+    WORD            Reason;
+    HANDLE          hComPropSheet;
+    PFNCOMPROPSHEET pfnComPropSheet;
+    LPARAM          lParamInit;
+    DWORD           UserData;
+    DWORD           Result;
+ } PROPSHEETUI_INFO, *PPROPSHEETUI_INFO;
+
+typedef LONG  (CALLBACK *PFNPROPSHEETUI)(PROPSHEETUI_INFO, LPARAM);
+
+/* FUNCTIONS */
+LONG WINAPI CommonPropertySheetUIA(HWND, PFNPROPSHEETUI, LPARAM, LPDWORD);
+LONG WINAPI CommonPropertySheetUIW(HWND, PFNPROPSHEETUI, LPARAM, LPDWORD);
+#define CommonPropertySheetUI WINELIB_NAME_AW(CommonPropertySheetUI)
+
+ULONG_PTR WINAPI GetPSTUIUserData(HWND);
+BOOL      WINAPI SetPSTUIUserData(HWND, ULONG_PTR);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif  /* _COMPSTUI_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/hidsdi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/hidsdi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/hidsdi.h	(revision 16410)
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_HIDSDI_H
+#define __WINE_HIDSDI_H
+
+/* FIXME: #include "hidusage.h" */
+/* FIXME: #include "hidpi.h" */
+
+#ifndef WINE_NTSTATUS_DECLARED
+#define WINE_NTSTATUS_DECLARED
+typedef LONG NTSTATUS;
+#endif
+
+void WINAPI HidD_GetHidGuid(LPGUID guid);
+
+#endif  /* __WINE_HIDSDI_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/imm.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/imm.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/imm.h	(revision 16410)
@@ -0,0 +1,173 @@
+/*
+ * Copyright (C) 2007 CodeWeavers, Aric Stewart
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _DDKIMM_H_
+#define _DDKIMM_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct _tagINPUTCONTEXT {
+    HWND                hWnd;
+    BOOL                fOpen;
+    POINT               ptStatusWndPos;
+    POINT               ptSoftKbdPos;
+    DWORD               fdwConversion;
+    DWORD               fdwSentence;
+    union   {
+        LOGFONTA        A;
+        LOGFONTW        W;
+    } lfFont;
+    COMPOSITIONFORM     cfCompForm;
+    CANDIDATEFORM       cfCandForm[4];
+    HIMCC               hCompStr;
+    HIMCC               hCandInfo;
+    HIMCC               hGuideLine;
+    HIMCC               hPrivate;
+    DWORD               dwNumMsgBuf;
+    HIMCC               hMsgBuf;
+    DWORD               fdwInit;
+    DWORD               dwReserve[3];
+} INPUTCONTEXT, *LPINPUTCONTEXT;
+
+typedef struct _tagIMEINFO {
+    DWORD       dwPrivateDataSize;
+    DWORD       fdwProperty;
+    DWORD       fdwConversionCaps;
+    DWORD       fdwSentenceCaps;
+    DWORD       fdwUICaps;
+    DWORD       fdwSCSCaps;
+    DWORD       fdwSelectCaps;
+} IMEINFO, *LPIMEINFO;
+
+typedef struct tagCOMPOSITIONSTRING {
+    DWORD dwSize;
+    DWORD dwCompReadAttrLen;
+    DWORD dwCompReadAttrOffset;
+    DWORD dwCompReadClauseLen;
+    DWORD dwCompReadClauseOffset;
+    DWORD dwCompReadStrLen;
+    DWORD dwCompReadStrOffset;
+    DWORD dwCompAttrLen;
+    DWORD dwCompAttrOffset;
+    DWORD dwCompClauseLen;
+    DWORD dwCompClauseOffset;
+    DWORD dwCompStrLen;
+    DWORD dwCompStrOffset;
+    DWORD dwCursorPos;
+    DWORD dwDeltaStart;
+    DWORD dwResultReadClauseLen;
+    DWORD dwResultReadClauseOffset;
+    DWORD dwResultReadStrLen;
+    DWORD dwResultReadStrOffset;
+    DWORD dwResultClauseLen;
+    DWORD dwResultClauseOffset;
+    DWORD dwResultStrLen;
+    DWORD dwResultStrOffset;
+    DWORD dwPrivateSize;
+    DWORD dwPrivateOffset;
+} COMPOSITIONSTRING, *LPCOMPOSITIONSTRING;
+
+typedef struct tagGUIDELINE {
+    DWORD dwSize;
+    DWORD dwLevel;
+    DWORD dwIndex;
+    DWORD dwStrLen;
+    DWORD dwStrOffset;
+    DWORD dwPrivateSize;
+    DWORD dwPrivateOffset;
+} GUIDELINE, *LPGUIDELINE;
+
+typedef struct tagCANDIDATEINFO {
+    DWORD               dwSize;
+    DWORD               dwCount;
+    DWORD               dwOffset[32];
+    DWORD               dwPrivateSize;
+    DWORD               dwPrivateOffset;
+} CANDIDATEINFO, *LPCANDIDATEINFO;
+
+LPINPUTCONTEXT WINAPI ImmLockIMC(HIMC);
+BOOL  WINAPI ImmUnlockIMC(HIMC);
+DWORD WINAPI ImmGetIMCLockCount(HIMC);
+HIMCC  WINAPI ImmCreateIMCC(DWORD);
+HIMCC  WINAPI ImmDestroyIMCC(HIMCC);
+LPVOID WINAPI ImmLockIMCC(HIMCC);
+BOOL   WINAPI ImmUnlockIMCC(HIMCC);
+DWORD  WINAPI ImmGetIMCCLockCount(HIMCC);
+HIMCC  WINAPI ImmReSizeIMCC(HIMCC, DWORD);
+DWORD  WINAPI ImmGetIMCCSize(HIMCC);
+
+#define IMMGWL_IMC                      0
+#define IMMGWL_PRIVATE                  (sizeof(LONG))
+
+/* IME Property bits */
+#define IME_PROP_END_UNLOAD             0x0001
+#define IME_PROP_KBD_CHAR_FIRST         0x0002
+#define IME_PROP_IGNORE_UPKEYS          0x0004
+#define IME_PROP_NEED_ALTKEY            0x0008
+#define IME_PROP_NO_KEYS_ON_CLOSE       0x0010
+
+/* for NI_CONTEXTUPDATED */
+#define IMC_SETCONVERSIONMODE           0x0002
+#define IMC_SETSENTENCEMODE             0x0004
+#define IMC_SETOPENSTATUS               0x0006
+
+/* dwAction for ImmNotifyIME */
+#define NI_CONTEXTUPDATED               0x0003
+#define NI_OPENCANDIDATE                0x0010
+#define NI_CLOSECANDIDATE               0x0011
+#define NI_SELECTCANDIDATESTR           0x0012
+#define NI_CHANGECANDIDATELIST          0x0013
+#define NI_FINALIZECONVERSIONRESULT     0x0014
+#define NI_COMPOSITIONSTR               0x0015
+#define NI_SETCANDIDATE_PAGESTART       0x0016
+#define NI_SETCANDIDATE_PAGESIZE        0x0017
+#define NI_IMEMENUSELECTED              0x0018
+
+BOOL WINAPI ImmGenerateMessage(HIMC);
+LRESULT WINAPI ImmRequestMessageA(HIMC, WPARAM, LPARAM);
+LRESULT WINAPI ImmRequestMessageW(HIMC, WPARAM, LPARAM);
+#define ImmRequestMessage WINELIB_NAME_AW(ImmRequestMessage);
+BOOL WINAPI ImmTranslateMessage(HWND, UINT, WPARAM, LPARAM);
+HWND WINAPI ImmCreateSoftKeyboard(UINT, UINT, int, int);
+BOOL WINAPI ImmDestroySoftKeyboard(HWND);
+BOOL WINAPI ImmShowSoftKeyboard(HWND, int);
+
+BOOL WINAPI ImeInquire(LPIMEINFO, LPWSTR, LPCWSTR lpszOptions);
+BOOL WINAPI ImeConfigure (HKL, HWND, DWORD, LPVOID);
+DWORD WINAPI ImeConversionList(HIMC, LPCWSTR, LPCANDIDATELIST,DWORD,UINT);
+BOOL WINAPI ImeDestroy(UINT);
+LRESULT WINAPI ImeEscape(HIMC, UINT, LPVOID);
+BOOL WINAPI ImeProcessKey(HIMC, UINT, LPARAM, CONST LPBYTE);
+BOOL WINAPI ImeSelect(HIMC, BOOL);
+BOOL WINAPI ImeSetActiveContext(HIMC, BOOL);
+UINT WINAPI ImeToAsciiEx(UINT, UINT, CONST LPBYTE, LPDWORD, UINT, HIMC);
+BOOL WINAPI NotifyIME(HIMC, DWORD, DWORD, DWORD);
+BOOL WINAPI ImeRegisterWord(LPCWSTR, DWORD, LPCWSTR);
+BOOL WINAPI ImeUnregisterWord(LPCWSTR, DWORD, LPCWSTR);
+UINT WINAPI ImeGetRegisterWordStyle(UINT, LPSTYLEBUFW);
+UINT WINAPI ImeEnumRegisterWord(REGISTERWORDENUMPROCW, LPCWSTR, DWORD, LPCWSTR, LPVOID);
+BOOL WINAPI ImeSetCompositionString(HIMC, DWORD, LPCVOID, DWORD, LPCVOID, DWORD);
+DWORD WINAPI ImeGetImeMenuItems(HIMC, DWORD, DWORD, LPIMEMENUITEMINFOW, LPIMEMENUITEMINFOW, DWORD);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif  /* _DDKIMM_H_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/mountmgr.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/mountmgr.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/mountmgr.h	(revision 16410)
@@ -0,0 +1,142 @@
+/*
+ * Mount point manager definitions
+ *
+ * Copyright 2007 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _MOUNTMGR_
+#define _MOUNTMGR_
+
+#define MOUNTMGRCONTROLTYPE  ((ULONG)'m')
+#define MOUNTDEVCONTROLTYPE  ((ULONG)'M')
+
+#if defined(__GNUC__)
+#define MOUNTMGR_DEVICE_NAME (const WCHAR []){'\\','D','e','v','i','c','e','\\','M','o','u','n','t','P','o','i','n','t','M','a','n','a','g','e','r',0}
+#define MOUNTMGR_DOS_DEVICE_NAME (const WCHAR []){'\\','\\','.','\\','M','o','u','n','t','P','o','i','n','t','M','a','n','a','g','e','r',0}
+#elif defined(_MSC_VER)
+#define MOUNTMGR_DEVICE_NAME     L"\\Device\\MountPointManager"
+#define MOUNTMGR_DOS_DEVICE_NAME L"\\\\.\\MountPointManager"
+#else
+static const WCHAR MOUNTMGR_DEVICE_NAME[] = {'\\','D','e','v','i','c','e','\\','M','o','u','n','t','P','o','i','n','t','M','a','n','a','g','e','r',0};
+static const WCHAR MOUNTMGR_DOS_DEVICE_NAME[] = {'\\','\\','.','\\','M','o','u','n','t','P','o','i','n','t','M','a','n','a','g','e','r',0};
+#endif
+
+
+#define IOCTL_MOUNTMGR_CREATE_POINT                CTL_CODE(MOUNTMGRCONTROLTYPE, 0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_MOUNTMGR_DELETE_POINTS               CTL_CODE(MOUNTMGRCONTROLTYPE, 1, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_MOUNTMGR_QUERY_POINTS                CTL_CODE(MOUNTMGRCONTROLTYPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_MOUNTMGR_DELETE_POINTS_DBONLY        CTL_CODE(MOUNTMGRCONTROLTYPE, 3, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_MOUNTMGR_NEXT_DRIVE_LETTER           CTL_CODE(MOUNTMGRCONTROLTYPE, 4, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_MOUNTMGR_AUTO_DL_ASSIGNMENTS         CTL_CODE(MOUNTMGRCONTROLTYPE, 5, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_MOUNTMGR_VOLUME_MOUNT_POINT_CREATED  CTL_CODE(MOUNTMGRCONTROLTYPE, 6, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_MOUNTMGR_VOLUME_MOUNT_POINT_DELETED  CTL_CODE(MOUNTMGRCONTROLTYPE, 7, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_MOUNTMGR_CHANGE_NOTIFY               CTL_CODE(MOUNTMGRCONTROLTYPE, 8, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_MOUNTMGR_KEEP_LINKS_WHEN_OFFLINE     CTL_CODE(MOUNTMGRCONTROLTYPE, 9, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_MOUNTMGR_CHECK_UNPROCESSED_VOLUMES   CTL_CODE(MOUNTMGRCONTROLTYPE, 10, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_MOUNTMGR_VOLUME_ARRIVAL_NOTIFICATION CTL_CODE(MOUNTMGRCONTROLTYPE, 11, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+/* Wine extensions */
+#ifdef WINE_MOUNTMGR_EXTENSIONS
+
+#define IOCTL_MOUNTMGR_DEFINE_UNIX_DRIVE CTL_CODE(MOUNTMGRCONTROLTYPE, 32, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_MOUNTMGR_QUERY_UNIX_DRIVE  CTL_CODE(MOUNTMGRCONTROLTYPE, 33, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+struct mountmgr_unix_drive
+{
+    ULONG  size;
+    ULONG  type;
+    WCHAR  letter;
+    USHORT mount_point_offset;
+    USHORT device_offset;
+};
+
+#endif
+
+typedef struct _MOUNTMGR_CREATE_POINT_INPUT
+{
+    USHORT SymbolicLinkNameOffset;
+    USHORT SymbolicLinkNameLength;
+    USHORT DeviceNameOffset;
+    USHORT DeviceNameLength;
+} MOUNTMGR_CREATE_POINT_INPUT, *PMOUNTMGR_CREATE_POINT_INPUT;
+
+typedef struct _MOUNTMGR_MOUNT_POINT
+{
+    ULONG  SymbolicLinkNameOffset;
+    USHORT SymbolicLinkNameLength;
+    ULONG  UniqueIdOffset;
+    USHORT UniqueIdLength;
+    ULONG  DeviceNameOffset;
+    USHORT DeviceNameLength;
+} MOUNTMGR_MOUNT_POINT, *PMOUNTMGR_MOUNT_POINT;
+
+typedef struct _MOUNTMGR_MOUNT_POINTS
+{
+    ULONG                Size;
+    ULONG                NumberOfMountPoints;
+    MOUNTMGR_MOUNT_POINT MountPoints[1];
+} MOUNTMGR_MOUNT_POINTS, *PMOUNTMGR_MOUNT_POINTS;
+
+typedef struct _MOUNTMGR_DRIVE_LETTER_TARGET
+{
+    USHORT DeviceNameLength;
+    WCHAR  DeviceName[1];
+} MOUNTMGR_DRIVE_LETTER_TARGET, *PMOUNTMGR_DRIVE_LETTER_TARGET;
+
+typedef struct _MOUNTMGR_DRIVE_LETTER_INFORMATION
+{
+    BOOLEAN DriveLetterWasAssigned;
+    UCHAR   CurrentDriveLetter;
+} MOUNTMGR_DRIVE_LETTER_INFORMATION, *PMOUNTMGR_DRIVE_LETTER_INFORMATION;
+
+typedef struct _MOUNTMGR_VOLUME_MOUNT_POINT
+{
+    USHORT SourceVolumeNameOffset;
+    USHORT SourceVolumeNameLength;
+    USHORT TargetVolumeNameOffset;
+    USHORT TargetVolumeNameLength;
+} MOUNTMGR_VOLUME_MOUNT_POINT, *PMOUNTMGR_VOLUME_MOUNT_POINT;
+
+typedef struct _MOUNTMGR_CHANGE_NOTIFY_INFO
+{
+    ULONG EpicNumber;
+} MOUNTMGR_CHANGE_NOTIFY_INFO, *PMOUNTMGR_CHANGE_NOTIFY_INFO;
+
+typedef struct _MOUNTMGR_TARGET_NAME
+{
+    USHORT DeviceNameLength;
+    WCHAR  DeviceName[1];
+} MOUNTMGR_TARGET_NAME, *PMOUNTMGR_TARGET_NAME;
+
+#define MOUNTMGR_IS_DRIVE_LETTER(s) \
+    ((s)->Length == 28 && \
+     (s)->Buffer[0] == '\\' && (s)->Buffer[1] == 'D'  && (s)->Buffer[2] == 'o'   && \
+     (s)->Buffer[3] == 's'  && (s)->Buffer[4] == 'D'  && (s)->Buffer[5] == 'e'   && \
+     (s)->Buffer[6] == 'v'  && (s)->Buffer[7] == 'i'  && (s)->Buffer[8] == 'c'   && \
+     (s)->Buffer[9] == 'e'  && (s)->Buffer[10] == 's' && (s)->Buffer[11] == '\\' && \
+     (s)->Buffer[12] >= 'A' && (s)->Buffer[12] <= 'Z' && (s)->Buffer[13] == ':')
+
+#define MOUNTMGR_IS_VOLUME_NAME(s) \
+    (((s)->Length == 96 || ((s)->Length == 98 && (s)->Buffer[48] == '\\')) && \
+     (s)->Buffer[0] == '\\' && ((s)->Buffer[1] == '?' || (s)->Buffer[1] == '\\') && \
+     (s)->Buffer[2] == '?'  && (s)->Buffer[3] == '\\' && (s)->Buffer[4] == 'V'   && \
+     (s)->Buffer[5] == 'o'  && (s)->Buffer[6] == 'l'  && (s)->Buffer[7] == 'u'   && \
+     (s)->Buffer[8] == 'm'  && (s)->Buffer[9] == 'e'  && (s)->Buffer[10] == '{'  && \
+     (s)->Buffer[19] == '-' && (s)->Buffer[24] == '-' && (s)->Buffer[29] == '-'  && \
+     (s)->Buffer[34] == '-' && (s)->Buffer[47] == '}')
+
+#endif /* _MOUNTMGR_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/ntddcdvd.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/ntddcdvd.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/ntddcdvd.h	(revision 16410)
@@ -0,0 +1,189 @@
+/*
+ * DDK information for DVD
+ *
+ * Copyright (C) 2004 Uwe Bonnes
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __NTDDCDVD_H
+#define __NTDDCDVD_H
+
+/* definitions taken from libdvdcss, modified to reflect Windows names and data types in places */
+
+#define IOCTL_DVD_BASE                 FILE_DEVICE_DVD
+
+#define IOCTL_DVD_START_SESSION     CTL_CODE(IOCTL_DVD_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DVD_READ_KEY          CTL_CODE(IOCTL_DVD_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DVD_SEND_KEY          CTL_CODE(IOCTL_DVD_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DVD_END_SESSION       CTL_CODE(IOCTL_DVD_BASE, 0x0403, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DVD_SET_READ_AHEAD    CTL_CODE(IOCTL_DVD_BASE, 0x0404, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DVD_GET_REGION        CTL_CODE(IOCTL_DVD_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DVD_SEND_KEY2         CTL_CODE(IOCTL_DVD_BASE, 0x0406, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+#define IOCTL_DVD_READ_STRUCTURE    CTL_CODE(IOCTL_DVD_BASE, 0x0450, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+typedef enum {
+    DvdChallengeKey = 0x01,
+    DvdBusKey1,
+    DvdBusKey2,
+    DvdTitleKey,
+    DvdAsf,
+    DvdSetRpcKey = 0x6,
+    DvdGetRpcKey = 0x8,
+    DvdDiskKey = 0x80,
+    DvdInvalidateAGID = 0x3f
+} DVD_KEY_TYPE;
+
+typedef ULONG DVD_SESSION_ID, *PDVD_SESSION_ID;
+
+typedef struct _DVD_COPY_PROTECT_KEY {
+    ULONG KeyLength;
+    DVD_SESSION_ID SessionId;
+    DVD_KEY_TYPE KeyType;
+    ULONG KeyFlags;
+    union {
+        struct {
+            ULONG FileHandle;
+            ULONG Reserved;   /* used for NT alignment */
+        } s;
+        LARGE_INTEGER TitleOffset;
+    } Parameters;
+    UCHAR KeyData[1];
+} DVD_COPY_PROTECT_KEY, *PDVD_COPY_PROTECT_KEY;
+
+typedef struct _DVD_RPC_KEY {
+    UCHAR UserResetsAvailable:3;
+    UCHAR ManufacturerResetsAvailable:3;
+    UCHAR TypeCode:2;
+    UCHAR RegionMask;
+    UCHAR RpcScheme;
+    UCHAR Reserved2[1];
+} DVD_RPC_KEY, * PDVD_RPC_KEY;
+
+typedef struct _DVD_ASF {
+    UCHAR Reserved0[3];
+    UCHAR SuccessFlag:1;
+    UCHAR Reserved1:7;
+} DVD_ASF, * PDVD_ASF;
+
+typedef struct _DVD_REGION
+{
+        UCHAR CopySystem;
+        UCHAR RegionData;              /* current media region (not playable when set) */
+        UCHAR SystemRegion;            /* current drive region (playable when set) */
+        UCHAR ResetCount;              /* number of resets available */
+} DVD_REGION, * PDVD_REGION;
+
+typedef enum _DVD_STRUCTURE_FORMAT
+{
+	DvdPhysicalDescriptor,
+	DvdCopyrightDescriptor,
+	DvdDiskKeyDescriptor,
+	DvdBCADescriptor,
+	DvdManufacturerDescriptor,
+	DvdMaxDescriptor
+} DVD_STRUCTURE_FORMAT, *PDVD_STRUCTURE_FORMAT;
+
+typedef struct _DVD_READ_STRUCTURE {
+        /* Contains an offset to the logical block address of the descriptor to be retrieved. */
+        LARGE_INTEGER BlockByteOffset;
+
+        /* 0:Physical descriptor, 1:Copyright descriptor, 2:Disk key descriptor
+           3:BCA descriptor, 4:Manufacturer descriptor, 5:Max descriptor
+         */
+        DVD_STRUCTURE_FORMAT Format;
+
+        /* Session ID, that is obtained by IOCTL_DVD_START_SESSION */
+        DVD_SESSION_ID SessionId;
+
+        /* From 0 to 4 */
+        UCHAR LayerNumber;
+}DVD_READ_STRUCTURE, * PDVD_READ_STRUCTURE;
+
+typedef struct _DVD_LAYER_DESCRIPTOR
+{
+    UCHAR BookVersion : 4;
+
+    /* 0:DVD-ROM, 1:DVD-RAM, 2:DVD-R, 3:DVD-RW, 9:DVD-RW */
+    UCHAR BookType : 4;
+
+    UCHAR MinimumRate : 4;
+
+    /* The physical size of the media. 0:120 mm, 1:80 mm. */
+    UCHAR DiskSize : 4;
+
+    /* 1:Read-only layer, 2:Recordable layer, 4:Rewritable layer */
+    UCHAR LayerType : 4;
+
+    /* 0:parallel track path, 1:opposite track path */
+    UCHAR TrackPath : 1;
+
+    /* 0:one layers, 1:two layers, and so on */
+    UCHAR NumberOfLayers : 2;
+
+    UCHAR Reserved1 : 1;
+
+    /* 0:0.74 µm/track, 1:0.80 µm/track, 2:0.615 µm/track */
+    UCHAR TrackDensity : 4;
+
+    /* 0:0.267 µm/bit, 1:0.293 µm/bit, 2:0.409 to 0.435 µm/bit, 4:0.280 to 0.291 µm/bit, 8:0.353 µm/bit */
+    UCHAR LinearDensity : 4;
+
+    /* Must be either 0x30000:DVD-ROM or DVD-R/-RW or 0x31000:DVD-RAM or DVD+RW */
+    ULONG StartingDataSector;
+
+    ULONG EndDataSector;
+    ULONG EndLayerZeroSector;
+    UCHAR Reserved5 : 7;
+
+    /* 0 indicates no BCA data */
+    UCHAR BCAFlag : 1;
+
+    UCHAR Reserved6;
+}DVD_LAYER_DESCRIPTOR, * PDVD_LAYER_DESCRIPTOR;
+
+typedef struct _DVD_COPYRIGHT_DESCRIPTOR
+{
+    UCHAR CopyrightProtectionType;
+    UCHAR RegionManagementInformation;
+    USHORT Reserved;
+}DVD_COPYRIGHT_DESCRIPTOR, * PDVD_COPYRIGHT_DESCRIPTOR;
+
+typedef struct _DVD_DISK_KEY_DESCRIPTOR
+{
+    UCHAR DiskKeyData[2048];
+}DVD_DISK_KEY_DESCRIPTOR, * PDVD_DISK_KEY_DESCRIPTOR;
+
+typedef struct _DVD_BCA_DESCRIPTOR
+{
+    UCHAR BCAInformation[1];
+}DVD_BCA_DESCRIPTOR, * PDVD_BCA_DESCRIPTOR;
+
+typedef struct _DVD_MANUFACTURER_DESCRIPTOR
+{
+        UCHAR ManufacturingInformation[2048];
+}DVD_MANUFACTURER_DESCRIPTOR, * PDVD_MANUFACTURER_DESCRIPTOR;
+
+#define DVD_CHALLENGE_KEY_LENGTH    (12 + sizeof(DVD_COPY_PROTECT_KEY) - sizeof(UCHAR))
+
+#define DVD_DISK_KEY_LENGTH         (2048 + sizeof(DVD_COPY_PROTECT_KEY) - sizeof(UCHAR))
+
+#define DVD_KEY_SIZE 5
+#define DVD_CHALLENGE_SIZE 10
+#define DVD_DISCKEY_SIZE 2048
+#define DVD_SECTOR_PROTECTED            0x00000020
+
+#endif /* __NTDDCDVD_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/ntddk.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/ntddk.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/ntddk.h	(revision 16410)
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2008 Francois Gouget for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _NTDDK_
+#define _NTDDK_
+
+/* Note: We will probably have to duplicate everything ultimately :-( */
+#include <ddk/wdm.h>
+
+#include <excpt.h>
+/* FIXME: #include <ntdef.h> */
+#include <ntstatus.h>
+/* FIXME: #include <bugcodes.h> */
+/* FIXME: #include <ntiologc.h> */
+
+
+typedef enum _BUS_DATA_TYPE
+{
+    ConfigurationSpaceUndefined = -1,
+    Cmos,
+    EisaConfiguration,
+    Pos,
+    CbusConfiguration,
+    PCIConfiguration,
+    VMEConfiguration,
+    NuBusConfiguration,
+    PCMCIAConfiguration,
+    MPIConfiguration,
+    MPSAConfiguration,
+    PNPISAConfiguration,
+    MaximumBusDataType
+} BUS_DATA_TYPE, *PBUS_DATA_TYPE;
+
+typedef struct _CONFIGURATION_INFORMATION
+{
+    ULONG DiskCount;
+    ULONG FloppyCount;
+    ULONG CdRomCount;
+    ULONG TapeCount;
+    ULONG ScsiPortCount;
+    ULONG SerialCount;
+    ULONG ParallelCount;
+    BOOLEAN AtDiskPrimaryAddressClaimed;
+    BOOLEAN AtDiskSecondaryAddressClaimed;
+    ULONG Version;
+    ULONG MediumChangerCount;
+} CONFIGURATION_INFORMATION, *PCONFIGURATION_INFORMATION;
+
+typedef VOID (WINAPI *PDRIVER_REINITIALIZE)(PDRIVER_OBJECT,PVOID,ULONG);
+
+void      WINAPI IoRegisterDriverReinitialization(PDRIVER_OBJECT,PDRIVER_REINITIALIZE,PVOID);
+NTSTATUS  WINAPI IoRegisterShutdownNotification(PDEVICE_OBJECT);
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/ntddser.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/ntddser.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/ntddser.h	(revision 16410)
@@ -0,0 +1,398 @@
+/*
+ * DDK definitions for serial port
+ *
+ * Copyright (C) 2006 Eric Pouech
+ * From w32api package
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _NTDDSER_H_
+#define _NTDDSER_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define IOCTL_SERIAL_CLEAR_STATS                                        \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 36, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_CLR_DTR                                            \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_CLR_RTS                                            \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 13, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_CONFIG_SIZE                                        \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 32, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_BAUD_RATE                                      \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 20, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_CHARS                                          \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 22, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_COMMSTATUS                                     \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 27, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_DTRRTS                                         \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 30, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_HANDFLOW                                       \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 24, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_LINE_CONTROL                                   \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_MODEM_CONTROL                                  \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 37, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_MODEMSTATUS                                    \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 26, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_PROPERTIES                                     \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 29, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_STATS                                          \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 35, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_TIMEOUTS                                       \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_WAIT_MASK                                      \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 16, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_IMMEDIATE_CHAR                                     \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#ifndef IOCTL_SERIAL_LSRMST_INSERT
+/* it's already defined in winioctl.h */
+#define IOCTL_SERIAL_LSRMST_INSERT                             \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 31, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#endif
+#define IOCTL_SERIAL_PURGE                                              \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 19, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_RESET_DEVICE                                       \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 11, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_BAUD_RATE                                      \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_BREAK_ON                                       \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_BREAK_OFF                                      \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_CHARS                                          \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 23, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_DTR                                            \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_FIFO_CONTROL                                   \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 39, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_HANDFLOW                                       \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 25, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_LINE_CONTROL                                   \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_MODEM_CONTROL                                  \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 38, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_QUEUE_SIZE                                     \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_RTS                                            \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_TIMEOUTS                                       \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_WAIT_MASK                                      \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 17, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_XOFF                                           \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 14, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_XON                                            \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_WAIT_ON_MASK                                       \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 18, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_XOFF_COUNTER                                       \
+    CTL_CODE (FILE_DEVICE_SERIAL_PORT, 28, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+typedef struct _SERIAL_BAUD_RATE
+{
+    ULONG       BaudRate;
+} SERIAL_BAUD_RATE, *PSERIAL_BAUD_RATE;
+
+/* SERIAL_BAUD_RATE.BaudRate constants */
+#define SERIAL_BAUD_075                   0x00000001
+#define SERIAL_BAUD_110                   0x00000002
+#define SERIAL_BAUD_134_5                 0x00000004
+#define SERIAL_BAUD_150                   0x00000008
+#define SERIAL_BAUD_300                   0x00000010
+#define SERIAL_BAUD_600                   0x00000020
+#define SERIAL_BAUD_1200                  0x00000040
+#define SERIAL_BAUD_1800                  0x00000080
+#define SERIAL_BAUD_2400                  0x00000100
+#define SERIAL_BAUD_4800                  0x00000200
+#define SERIAL_BAUD_7200                  0x00000400
+#define SERIAL_BAUD_9600                  0x00000800
+#define SERIAL_BAUD_14400                 0x00001000
+#define SERIAL_BAUD_19200                 0x00002000
+#define SERIAL_BAUD_38400                 0x00004000
+#define SERIAL_BAUD_56K                   0x00008000
+#define SERIAL_BAUD_128K                  0x00010000
+#define SERIAL_BAUD_115200                0x00020000
+#define SERIAL_BAUD_57600                 0x00040000
+#define SERIAL_BAUD_USER                  0x10000000
+
+typedef struct _SERIAL_CHARS
+{
+    UCHAR       EofChar;
+    UCHAR       ErrorChar;
+    UCHAR       BreakChar;
+    UCHAR       EventChar;
+    UCHAR       XonChar;
+    UCHAR       XoffChar;
+} SERIAL_CHARS, *PSERIAL_CHARS;
+
+typedef struct _SERIAL_STATUS
+{
+    ULONG       Errors;
+    ULONG       HoldReasons;
+    ULONG       AmountInInQueue;
+    ULONG       AmountInOutQueue;
+    BOOLEAN     EofReceived;
+    BOOLEAN     WaitForImmediate;
+} SERIAL_STATUS, *PSERIAL_STATUS;
+
+typedef struct _SERIAL_HANDFLOW
+{
+    ULONG       ControlHandShake;
+    ULONG       FlowReplace;
+    LONG        XonLimit;
+    LONG        XoffLimit;
+} SERIAL_HANDFLOW, *PSERIAL_HANDFLOW;
+
+#define SERIAL_DTR_MASK                   0x00000003
+#define SERIAL_DTR_CONTROL                0x00000001
+#define SERIAL_DTR_HANDSHAKE              0x00000002
+#define SERIAL_CTS_HANDSHAKE              0x00000008
+#define SERIAL_DSR_HANDSHAKE              0x00000010
+#define SERIAL_DCD_HANDSHAKE              0x00000020
+#define SERIAL_OUT_HANDSHAKEMASK          0x00000038
+#define SERIAL_DSR_SENSITIVITY            0x00000040
+#define SERIAL_ERROR_ABORT                0x80000000
+#define SERIAL_CONTROL_INVALID            0x7fffff84
+#define SERIAL_AUTO_TRANSMIT              0x00000001
+#define SERIAL_AUTO_RECEIVE               0x00000002
+#define SERIAL_ERROR_CHAR                 0x00000004
+#define SERIAL_NULL_STRIPPING             0x00000008
+#define SERIAL_BREAK_CHAR                 0x00000010
+#define SERIAL_RTS_MASK                   0x000000c0
+#define SERIAL_RTS_CONTROL                0x00000040
+#define SERIAL_RTS_HANDSHAKE              0x00000080
+#define SERIAL_TRANSMIT_TOGGLE            0x000000c0
+#define SERIAL_XOFF_CONTINUE              0x80000000
+#define SERIAL_FLOW_INVALID               0x7fffff20
+
+typedef struct _SERIAL_LINE_CONTROL
+{
+    UCHAR       StopBits;
+    UCHAR       Parity;
+    UCHAR       WordLength;
+} SERIAL_LINE_CONTROL, *PSERIAL_LINE_CONTROL;
+
+/* SERIAL_LINE_CONTROL.StopBits constants */
+#define STOP_BIT_1                        0x00
+#define STOP_BITS_1_5                     0x01
+#define STOP_BITS_2                       0x02
+
+/* SERIAL_LINE_CONTROL.Parity constants */
+#define NO_PARITY                         0x00
+#define ODD_PARITY                        0x01
+#define EVEN_PARITY                       0x02
+#define MARK_PARITY                       0x03
+#define SPACE_PARITY                      0x04
+
+/* IOCTL_SERIAL_(GET_MODEM_CONTROL, SET_MODEM_CONTROL) flags */
+#define SERIAL_IOC_MCR_DTR                0x00000001
+#define SERIAL_IOC_MCR_RTS                0x00000002
+#define SERIAL_IOC_MCR_OUT1               0x00000004
+#define SERIAL_IOC_MCR_OUT2               0x00000008
+#define SERIAL_IOC_MCR_LOOP               0x00000010
+
+typedef struct _SERIAL_COMMPROP
+{
+    USHORT      PacketLength;
+    USHORT      PacketVersion;
+    ULONG       ServiceMask;
+    ULONG       Reserved1;
+    ULONG       MaxTxQueue;
+    ULONG       MaxRxQueue;
+    ULONG       MaxBaud;
+    ULONG       ProvSubType;
+    ULONG       ProvCapabilities;
+    ULONG       SettableParams;
+    ULONG       SettableBaud;
+    USHORT      SettableData;
+    USHORT      SettableStopParity;
+    ULONG       CurrentTxQueue;
+    ULONG       CurrentRxQueue;
+    ULONG       ProvSpec1;
+    ULONG       ProvSpec2;
+    WCHAR       ProvChar[1];
+} SERIAL_COMMPROP, *PSERIAL_COMMPROP;
+
+/* SERIAL_COMMPROP.SettableParams flags */
+#define SERIAL_SP_PARITY                  0x0001
+#define SERIAL_SP_BAUD                    0x0002
+#define SERIAL_SP_DATABITS                0x0004
+#define SERIAL_SP_STOPBITS                0x0008
+#define SERIAL_SP_HANDSHAKING             0x0010
+#define SERIAL_SP_PARITY_CHECK            0x0020
+#define SERIAL_SP_CARRIER_DETECT          0x0040
+
+/* SERIAL_COMMPROP.ProvCapabilities flags */
+#define SERIAL_PCF_DTRDSR                 0x00000001
+#define SERIAL_PCF_RTSCTS                 0x00000002
+#define SERIAL_PCF_CD                     0x00000004
+#define SERIAL_PCF_PARITY_CHECK           0x00000008
+#define SERIAL_PCF_XONXOFF                0x00000010
+#define SERIAL_PCF_SETXCHAR               0x00000020
+#define SERIAL_PCF_TOTALTIMEOUTS          0x00000040
+#define SERIAL_PCF_INTTIMEOUTS            0x00000080
+#define SERIAL_PCF_SPECIALCHARS           0x00000100
+#define SERIAL_PCF_16BITMODE              0x00000200
+
+/* SERIAL_COMMPROP.SettableData flags */
+#define SERIAL_DATABITS_5                 0x0001
+#define SERIAL_DATABITS_6                 0x0002
+#define SERIAL_DATABITS_7                 0x0004
+#define SERIAL_DATABITS_8                 0x0008
+#define SERIAL_DATABITS_16                0x0010
+#define SERIAL_DATABITS_16X               0x0020
+
+/* SERIAL_COMMPROP.SettableStopParity flags */
+#define SERIAL_STOPBITS_10                0x0001
+#define SERIAL_STOPBITS_15                0x0002
+#define SERIAL_STOPBITS_20                0x0004
+#define SERIAL_PARITY_NONE                0x0100
+#define SERIAL_PARITY_ODD                 0x0200
+#define SERIAL_PARITY_EVEN                0x0400
+#define SERIAL_PARITY_MARK                0x0800
+#define SERIAL_PARITY_SPACE               0x1000
+
+typedef struct _SERIALPERF_STATS
+{
+    ULONG       ReceivedCount;
+    ULONG       TransmittedCount;
+    ULONG       FrameErrorCount;
+    ULONG       SerialOverrunErrorCount;
+    ULONG       BufferOverrunErrorCount;
+    ULONG       ParityErrorCount;
+} SERIALPERF_STATS, *PSERIALPERF_STATS;
+
+typedef struct _SERIAL_TIMEOUTS
+{
+    ULONG       ReadIntervalTimeout;
+    ULONG       ReadTotalTimeoutMultiplier;
+    ULONG       ReadTotalTimeoutConstant;
+    ULONG       WriteTotalTimeoutMultiplier;
+    ULONG       WriteTotalTimeoutConstant;
+} SERIAL_TIMEOUTS, *PSERIAL_TIMEOUTS;
+
+/* IOCTL_SERIAL_(GET_WAIT_MASK, SET_WAIT_MASK, WAIT_ON_MASK) flags */
+#define SERIAL_EV_RXCHAR                  0x0001
+#define SERIAL_EV_RXFLAG                  0x0002
+#define SERIAL_EV_TXEMPTY                 0x0004
+#define SERIAL_EV_CTS                     0x0008
+#define SERIAL_EV_DSR                     0x0010
+#define SERIAL_EV_RLSD                    0x0020
+#define SERIAL_EV_BREAK                   0x0040
+#define SERIAL_EV_ERR                     0x0080
+#define SERIAL_EV_RING                    0x0100
+#define SERIAL_EV_PERR                    0x0200
+#define SERIAL_EV_RX80FULL                0x0400
+#define SERIAL_EV_EVENT1                  0x0800
+#define SERIAL_EV_EVENT2                  0x1000
+
+/* IOCTL_SERIAL_LSRMST_INSERT constants */
+#define SERIAL_LSRMST_LSR_DATA            0x01
+#define SERIAL_LSRMST_LSR_NODATA          0x02
+#define SERIAL_LSRMST_MST                 0x03
+#define SERIAL_LSRMST_ESCAPE              0x00
+
+/* IOCTL_SERIAL_PURGE constants */
+#define SERIAL_PURGE_TXABORT              0x00000001
+#define SERIAL_PURGE_RXABORT              0x00000002
+#define SERIAL_PURGE_TXCLEAR              0x00000004
+#define SERIAL_PURGE_RXCLEAR              0x00000008
+
+/* IOCTL_SERIAL_SET_FIFO_CONTROL constants */
+#define SERIAL_IOC_FCR_FIFO_ENABLE        0x00000001
+#define SERIAL_IOC_FCR_RCVR_RESET         0x00000002
+#define SERIAL_IOC_FCR_XMIT_RESET         0x00000004
+#define SERIAL_IOC_FCR_DMA_MODE           0x00000008
+#define SERIAL_IOC_FCR_RES1               0x00000010
+#define SERIAL_IOC_FCR_RES2               0x00000020
+#define SERIAL_IOC_FCR_RCVR_TRIGGER_LSB   0x00000040
+#define SERIAL_IOC_FCR_RCVR_TRIGGER_MSB   0x00000080
+
+typedef struct _SERIAL_QUEUE_SIZE
+{
+    ULONG       InSize;
+    ULONG       OutSize;
+} SERIAL_QUEUE_SIZE, *PSERIAL_QUEUE_SIZE;
+
+typedef struct _SERIAL_XOFF_COUNTER
+{
+    ULONG       Timeout;
+    LONG        Counter;
+    UCHAR       XoffChar;
+} SERIAL_XOFF_COUNTER, *PSERIAL_XOFF_COUNTER;
+
+typedef struct _SERIAL_BASIC_SETTINGS
+{
+    SERIAL_TIMEOUTS     Timeouts;
+    SERIAL_HANDFLOW     HandFlow;
+    ULONG       RxFifo;
+    ULONG       TxFifo;
+} SERIAL_BASIC_SETTINGS, *PSERIAL_BASIC_SETTINGS;
+
+#define SERIAL_ERROR_BREAK                0x00000001
+#define SERIAL_ERROR_FRAMING              0x00000002
+#define SERIAL_ERROR_OVERRUN              0x00000004
+#define SERIAL_ERROR_QUEUEOVERRUN         0x00000008
+#define SERIAL_ERROR_PARITY               0x00000010
+
+#define SERIAL_SP_UNSPECIFIED             0x00000000
+#define SERIAL_SP_RS232                   0x00000001
+#define SERIAL_SP_PARALLEL                0x00000002
+#define SERIAL_SP_RS422                   0x00000003
+#define SERIAL_SP_RS423                   0x00000004
+#define SERIAL_SP_RS449                   0x00000005
+#define SERIAL_SP_MODEM                   0X00000006
+#define SERIAL_SP_FAX                     0x00000021
+#define SERIAL_SP_SCANNER                 0x00000022
+#define SERIAL_SP_BRIDGE                  0x00000100
+#define SERIAL_SP_LAT                     0x00000101
+#define SERIAL_SP_TELNET                  0x00000102
+#define SERIAL_SP_X25                     0x00000103
+#define SERIAL_SP_SERIALCOMM              0x00000001
+
+#define SERIAL_TX_WAITING_FOR_CTS         0x00000001
+#define SERIAL_TX_WAITING_FOR_DSR         0x00000002
+#define SERIAL_TX_WAITING_FOR_DCD         0x00000004
+#define SERIAL_TX_WAITING_FOR_XON         0x00000008
+#define SERIAL_TX_WAITING_XOFF_SENT       0x00000010
+#define SERIAL_TX_WAITING_ON_BREAK        0x00000020
+#define SERIAL_RX_WAITING_FOR_DSR         0x00000040
+
+#define SERIAL_DTR_STATE                  0x00000001
+#define SERIAL_RTS_STATE                  0x00000002
+#define SERIAL_CTS_STATE                  0x00000010
+#define SERIAL_DSR_STATE                  0x00000020
+#define SERIAL_RI_STATE                   0x00000040
+#define SERIAL_DCD_STATE                  0x00000080
+
+typedef struct _SERIALCONFIG
+{
+    ULONG       Size;
+    USHORT      Version;
+    ULONG       SubType;
+    ULONG       ProvOffset;
+    ULONG       ProviderSize;
+    WCHAR       ProviderData[1];
+} SERIALCONFIG,*PSERIALCONFIG;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NTDDSER_H_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/ntddtape.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/ntddtape.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/ntddtape.h	(revision 16410)
@@ -0,0 +1,50 @@
+/*
+ * DDK definitions for tape access
+ *
+ * Copyright (C) 2006 Hans Leidekker
+ * Based on the w32api version by Casper S. Hornstrup.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _NTDDTAPE_H_
+#define _NTDDTAPE_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define IOCTL_TAPE_BASE                 FILE_DEVICE_TAPE
+
+#define IOCTL_TAPE_CHECK_VERIFY         CTL_CODE(IOCTL_TAPE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_CREATE_PARTITION     CTL_CODE(IOCTL_TAPE_BASE, 0x000a, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_TAPE_ERASE                CTL_CODE(IOCTL_TAPE_BASE, 0x0000, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_TAPE_FIND_NEW_DEVICES     CTL_CODE(IOCTL_DISK_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_GET_DRIVE_PARAMS     CTL_CODE(IOCTL_TAPE_BASE, 0x0005, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_GET_MEDIA_PARAMS     CTL_CODE(IOCTL_TAPE_BASE, 0x0007, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_GET_POSITION         CTL_CODE(IOCTL_TAPE_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_GET_STATUS           CTL_CODE(IOCTL_TAPE_BASE, 0x0009, METHOD_BUFFERED, FILE_READ_ACCESS )
+
+#define IOCTL_TAPE_PREPARE              CTL_CODE(IOCTL_TAPE_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_SET_DRIVE_PARAMS     CTL_CODE(IOCTL_TAPE_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_TAPE_SET_MEDIA_PARAMS     CTL_CODE(IOCTL_TAPE_BASE, 0x0008, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_SET_POSITION         CTL_CODE(IOCTL_TAPE_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_WRITE_MARKS          CTL_CODE(IOCTL_TAPE_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NTDDTAPE_H_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/usb.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/usb.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/usb.h	(revision 16410)
@@ -0,0 +1,342 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __DDK_USB_H__
+#define __DDK_USB_H__
+
+#include <ddk/usb200.h>
+
+#define URB_FUNCTION_SELECT_CONFIGURATION            0x0000
+#define URB_FUNCTION_SELECT_INTERFACE                0x0001
+#define URB_FUNCTION_ABORT_PIPE                      0x0002
+#define URB_FUNCTION_TAKE_FRAME_LENGTH_CONTROL       0x0003
+#define URB_FUNCTION_RELEASE_FRAME_LENGTH_CONTROL    0x0004
+#define URB_FUNCTION_GET_FRAME_LENGTH                0x0005
+#define URB_FUNCTION_SET_FRAME_LENGTH                0x0006
+#define URB_FUNCTION_GET_CURRENT_FRAME_NUMBER        0x0007
+#define URB_FUNCTION_CONTROL_TRANSFER                0x0008
+#define URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER      0x0009
+#define URB_FUNCTION_ISOCH_TRANSFER                  0x000A
+#define URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE      0x000B
+#define URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE        0x000C
+#define URB_FUNCTION_SET_FEATURE_TO_DEVICE           0x000D
+#define URB_FUNCTION_SET_FEATURE_TO_INTERFACE        0x000E
+#define URB_FUNCTION_SET_FEATURE_TO_ENDPOINT         0x000F
+#define URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE         0x0010
+#define URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE      0x0011
+#define URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT       0x0012
+#define URB_FUNCTION_GET_STATUS_FROM_DEVICE          0x0013
+#define URB_FUNCTION_GET_STATUS_FROM_INTERFACE       0x0014
+#define URB_FUNCTION_GET_STATUS_FROM_ENDPOINT        0x0015
+#define URB_FUNCTION_RESERVED_0X0016                 0x0016
+#define URB_FUNCTION_VENDOR_DEVICE                   0x0017
+#define URB_FUNCTION_VENDOR_INTERFACE                0x0018
+#define URB_FUNCTION_VENDOR_ENDPOINT                 0x0019
+#define URB_FUNCTION_CLASS_DEVICE                    0x001A
+#define URB_FUNCTION_CLASS_INTERFACE                 0x001B
+#define URB_FUNCTION_CLASS_ENDPOINT                  0x001C
+#define URB_FUNCTION_RESERVE_0X001D                  0x001D
+#define URB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL 0x001E
+#define URB_FUNCTION_CLASS_OTHER                     0x001F
+#define URB_FUNCTION_VENDOR_OTHER                    0x0020
+#define URB_FUNCTION_GET_STATUS_FROM_OTHER           0x0021
+#define URB_FUNCTION_CLEAR_FEATURE_TO_OTHER          0x0022
+#define URB_FUNCTION_SET_FEATURE_TO_OTHER            0x0023
+#define URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT    0x0024
+#define URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT      0x0025
+#define URB_FUNCTION_GET_CONFIGURATION               0x0026
+#define URB_FUNCTION_GET_INTERFACE                   0x0027
+#define URB_FUNCTION_GET_DESCRIPTOR_FROM_INTERFACE   0x0028
+#define URB_FUNCTION_SET_DESCRIPTOR_TO_INTERFACE     0x0029
+#define URB_FUNCTION_GET_MS_FEATURE_DESCRIPTOR       0x002A
+#define URB_FUNCTION_RESERVE_0X002B                  0x002B
+#define URB_FUNCTION_RESERVE_0X002C                  0x002C
+#define URB_FUNCTION_RESERVE_0X002D                  0x002D
+#define URB_FUNCTION_RESERVE_0X002E                  0x002E
+#define URB_FUNCTION_RESERVE_0X002F                  0x002F
+#define URB_FUNCTION_SYNC_RESET_PIPE                 0x0030
+#define URB_FUNCTION_SYNC_CLEAR_STALL                0x0031
+
+#define USBD_SHORT_TRANSFER_OK                       0x00000002
+#define USBD_TRANSFER_DIRECTION_OUT                  0
+#define USBD_TRANSFER_DIRECTION_IN                   1
+
+typedef LONG USBD_STATUS;
+
+typedef PVOID USBD_PIPE_HANDLE;
+typedef PVOID USBD_CONFIGURATION_HANDLE;
+typedef PVOID USBD_INTERFACE_HANDLE;
+
+typedef enum _USBD_PIPE_TYPE {
+    UsbdPipeTypeControl,
+    UsbdPipeTypeIsochronous,
+    UsbdPipeTypeBulk,
+    UsbdPipeTypeInterrupt
+} USBD_PIPE_TYPE;
+
+typedef struct _USBD_PIPE_INFORMATION {
+    USHORT MaximumPacketSize;
+    UCHAR EndpointAddress;
+    UCHAR Interval;
+    USBD_PIPE_TYPE PipeType;
+    USBD_PIPE_HANDLE PipeHandle;
+    ULONG MaximumTransferSize;
+    ULONG PipeFlags;
+} USBD_PIPE_INFORMATION;
+typedef struct _USBD_PIPE_INFORMATION *PUSBD_PIPE_INFORMATION;
+
+typedef struct _USBD_INTERFACE_INFORMATION {
+    USHORT Length;
+    UCHAR InterfaceNumber;
+    UCHAR AlternateSetting;
+    UCHAR Class;
+    UCHAR SubClass;
+    UCHAR Protocol;
+    UCHAR Reserved;
+    USBD_INTERFACE_HANDLE InterfaceHandle;
+    ULONG NumberOfPipes;
+    USBD_PIPE_INFORMATION Pipes[1];
+} USBD_INTERFACE_INFORMATION;
+typedef struct _USBD_INTERFACE_INFORMATION *PUSBD_INTERFACE_INFORMATION;
+
+typedef struct _USBD_ISO_PACKET_DESCRIPTOR {
+    ULONG Offset;
+    ULONG Length;
+    USBD_STATUS Status;
+} USBD_ISO_PACKET_DESCRIPTOR;
+typedef struct _USBD_ISO_PACKET_DESCRIPTOR *PUSBD_ISO_PACKET_DESCRIPTOR;
+
+struct _URB_HCD_AREA {
+    PVOID Reserved8[8];
+};
+
+struct _URB_HEADER {
+    USHORT Length;
+    USHORT Function;
+    USBD_STATUS Status;
+    PVOID UsbdDeviceHandle;
+    ULONG UsbdFlags;
+};
+
+struct _URB_SELECT_INTERFACE {
+    struct _URB_HEADER Hdr;
+    USBD_CONFIGURATION_HANDLE ConfigurationHandle;
+    USBD_INTERFACE_INFORMATION Interface;
+};
+
+struct _URB_SELECT_CONFIGURATION {
+    struct _URB_HEADER Hdr;
+    PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor;
+    USBD_CONFIGURATION_HANDLE ConfigurationHandle;
+    USBD_INTERFACE_INFORMATION Interface;
+};
+
+struct _URB_PIPE_REQUEST {
+    struct _URB_HEADER Hdr;
+    USBD_PIPE_HANDLE PipeHandle;
+    ULONG Reserved;
+};
+
+struct _URB_FRAME_LENGTH_CONTROL {
+    struct _URB_HEADER Hdr;
+};
+
+struct _URB_GET_FRAME_LENGTH {
+    struct _URB_HEADER Hdr;
+    ULONG FrameLength;
+    ULONG FrameNumber;
+};
+
+struct _URB_SET_FRAME_LENGTH {
+    struct _URB_HEADER Hdr;
+    LONG FrameLengthDelta;
+};
+
+struct _URB_GET_CURRENT_FRAME_NUMBER {
+    struct _URB_HEADER Hdr;
+    ULONG FrameNumber;
+};
+
+struct _URB_CONTROL_TRANSFER {
+    struct _URB_HEADER Hdr;
+    USBD_PIPE_HANDLE PipeHandle;
+    ULONG TransferFlags;
+    ULONG TransferBufferLength;
+    PVOID TransferBuffer;
+    PMDL TransferBufferMDL;
+    struct _URB *UrbLink;
+    struct _URB_HCD_AREA hca;
+    UCHAR SetupPacket[8];
+};
+
+struct _URB_BULK_OR_INTERRUPT_TRANSFER {
+    struct _URB_HEADER Hdr;
+    USBD_PIPE_HANDLE PipeHandle;
+    ULONG TransferFlags;
+    ULONG TransferBufferLength;
+    PVOID TransferBuffer;
+    PMDL TransferBufferMDL;
+    struct _URB *UrbLink;
+    struct _URB_HCD_AREA hca;
+};
+
+struct _URB_ISOCH_TRANSFER {
+    struct _URB_HEADER Hdr;
+    USBD_PIPE_HANDLE PipeHandle;
+    ULONG TransferFlags;
+    ULONG TransferBufferLength;
+    PVOID TransferBuffer;
+    PMDL TransferBufferMDL;
+    struct _URB *UrbLink;
+    struct _URB_HCD_AREA hca;
+    ULONG StartFrame;
+    ULONG NumberOfPackets;
+    ULONG ErrorCount;
+    USBD_ISO_PACKET_DESCRIPTOR IsoPacket[1];
+};
+
+struct _URB_CONTROL_DESCRIPTOR_REQUEST {
+    struct _URB_HEADER Hdr;
+    PVOID Reserved;
+    ULONG Reserved0;
+    ULONG TransferBufferLength;
+    PVOID TransferBuffer;
+    PMDL TransferBufferMDL;
+    struct _URB *UrbLink;
+    struct _URB_HCD_AREA hca;
+    USHORT Reserved1;
+    UCHAR Index;
+    UCHAR DescriptorType;
+    USHORT LanguageId;
+    USHORT Reserved2;
+};
+
+struct _URB_CONTROL_GET_STATUS_REQUEST {
+    struct _URB_HEADER Hdr;
+    PVOID Reserved;
+    ULONG Reserved0;
+    ULONG TransferBufferLength;
+    PVOID TransferBuffer;
+    PMDL TransferBufferMDL;
+    struct _URB *UrbLink;
+    struct _URB_HCD_AREA hca;
+    UCHAR Reserved1[4];
+    USHORT Index;
+    USHORT Reserved2;
+};
+
+struct _URB_CONTROL_FEATURE_REQUEST {
+    struct _URB_HEADER Hdr;
+    PVOID Reserved;
+    ULONG Reserved2;
+    ULONG Reserved3;
+    PVOID Reserved4;
+    PMDL Reserved5;
+    struct _URB *UrbLink;
+    struct _URB_HCD_AREA hca;
+    USHORT Reserved0;
+    USHORT FeatureSelector;
+    USHORT Index;
+    USHORT Reserved1;
+};
+
+struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST {
+    struct _URB_HEADER Hdr;
+    PVOID Reserved;
+    ULONG TransferFlags;
+    ULONG TransferBufferLength;
+    PVOID TransferBuffer;
+    PMDL TransferBufferMDL;
+    struct _URB *UrbLink;
+    struct _URB_HCD_AREA hca;
+    UCHAR RequestTypeReservedBits;
+    UCHAR Request;
+    USHORT Value;
+    USHORT Index;
+    USHORT Reserved1;
+};
+
+struct _URB_CONTROL_GET_INTERFACE_REQUEST {
+    struct _URB_HEADER Hdr;
+    PVOID Reserved;
+    ULONG Reserved0;
+    ULONG TransferBufferLength;
+    PVOID TransferBuffer;
+    PMDL TransferBufferMDL;
+    struct _URB *UrbLink;
+    struct _URB_HCD_AREA hca;
+    UCHAR Reserved1[4];
+    USHORT Interface;
+    USHORT Reserved2;
+};
+
+struct _URB_CONTROL_GET_CONFIGURATION_REQUEST {
+    struct _URB_HEADER Hdr;
+    PVOID Reserved;
+    ULONG Reserved0;
+    ULONG TransferBufferLength;
+    PVOID TransferBuffer;
+    PMDL TransferBufferMDL;
+    struct _URB *UrbLink;
+    struct _URB_HCD_AREA hca;
+    UCHAR Reserved1[8];
+};
+
+struct _URB_OS_FEATURE_DESCRIPTOR_REQUEST {
+    struct _URB_HEADER Hdr;
+    PVOID Reserved;
+    ULONG Reserved0;
+    ULONG TransferBufferLength;
+    PVOID TransferBuffer;
+    PMDL TransferBufferMDL;
+    struct _URB *UrbLink;
+    struct _URB_HCD_AREA hca;
+    UCHAR   Recipient:5;
+    UCHAR   Reserved1:3;
+    UCHAR   Reserved2;
+    UCHAR   InterfaceNumber;
+    UCHAR   MS_PageIndex;
+    USHORT  MS_FeatureDescriptorIndex;
+    USHORT  Reserved3;
+};
+
+typedef struct _URB {
+    union {
+        struct _URB_HEADER UrbHeader;
+        struct _URB_SELECT_INTERFACE UrbSelectInterface;
+        struct _URB_SELECT_CONFIGURATION UrbSelectConfiguration;
+        struct _URB_PIPE_REQUEST UrbPipeRequest;
+        struct _URB_FRAME_LENGTH_CONTROL UrbFrameLengthControl;
+        struct _URB_GET_FRAME_LENGTH UrbGetFrameLength;
+        struct _URB_SET_FRAME_LENGTH UrbSetFrameLength;
+        struct _URB_GET_CURRENT_FRAME_NUMBER UrbGetCurrentFrameNumber;
+        struct _URB_CONTROL_TRANSFER UrbControlTransfer;
+        struct _URB_BULK_OR_INTERRUPT_TRANSFER UrbBulkOrInterruptTransfer;
+        struct _URB_ISOCH_TRANSFER UrbIsochronousTransfer;
+        struct _URB_CONTROL_DESCRIPTOR_REQUEST UrbControlDescriptorRequest;
+        struct _URB_CONTROL_GET_STATUS_REQUEST UrbControlGetStatusRequest;
+        struct _URB_CONTROL_FEATURE_REQUEST UrbControlFeatureRequest;
+        struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST UrbControlVendorClassRequest;
+        struct _URB_CONTROL_GET_INTERFACE_REQUEST UrbControlGetInterfaceRequest;
+        struct _URB_CONTROL_GET_CONFIGURATION_REQUEST UrbControlGetConfigurationRequest;
+        struct _URB_OS_FEATURE_DESCRIPTOR_REQUEST UrbOSFeatureDescriptorRequest;
+    } DUMMYUNIONNAME;
+} URB;
+typedef struct _URB *PURB;
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/usb100.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/usb100.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/usb100.h	(revision 16410)
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __DDK_USB100_H__
+#define __DDK_USB100_H__
+
+#define USB_DEVICE_DESCRIPTOR_TYPE                0x01
+#define USB_CONFIGURATION_DESCRIPTOR_TYPE         0x02
+#define USB_STRING_DESCRIPTOR_TYPE                0x03
+#define USB_INTERFACE_DESCRIPTOR_TYPE             0x04
+#define USB_ENDPOINT_DESCRIPTOR_TYPE              0x05
+#define USB_RESERVED_DESCRIPTOR_TYPE              0x06
+#define USB_CONFIG_POWER_DESCRIPTOR_TYPE          0x07
+#define USB_INTERFACE_POWER_DESCRIPTOR_TYPE       0x08
+
+#include <pshpack1.h>
+
+typedef struct _USB_DEVICE_DESCRIPTOR {
+    UCHAR bLength;
+    UCHAR bDescriptorType;
+    USHORT bcdUSB;
+    UCHAR bDeviceClass;
+    UCHAR bDeviceSubClass;
+    UCHAR bDeviceProtocol;
+    UCHAR bMaxPacketSize0;
+    USHORT idVendor;
+    USHORT idProduct;
+    USHORT bcdDevice;
+    UCHAR iManufacturer;
+    UCHAR iProduct;
+    UCHAR iSerialNumber;
+    UCHAR bNumConfigurations;
+} USB_DEVICE_DESCRIPTOR;
+typedef struct _USB_DEVICE_DESCRIPTOR *PUSB_DEVICE_DESCRIPTOR;
+
+typedef struct _USB_ENDPOINT_DESCRIPTOR {
+    UCHAR bLength;
+    UCHAR bDescriptorType;
+    UCHAR bEndpointAddress;
+    UCHAR bmAttributes;
+    USHORT wMaxPacketSize;
+    UCHAR bInterval;
+} USB_ENDPOINT_DESCRIPTOR;
+typedef struct _USB_ENDPOINT_DESCRIPTOR *PUSB_ENDPOINT_DESCRIPTOR;
+
+typedef struct _USB_CONFIGURATION_DESCRIPTOR {
+    UCHAR bLength;
+    UCHAR bDescriptorType;
+    USHORT wTotalLength;
+    UCHAR bNumInterfaces;
+    UCHAR bConfigurationValue;
+    UCHAR iConfiguration;
+    UCHAR bmAttributes;
+    UCHAR MaxPower;
+} USB_CONFIGURATION_DESCRIPTOR;
+typedef struct _USB_CONFIGURATION_DESCRIPTOR *PUSB_CONFIGURATION_DESCRIPTOR;
+
+typedef struct _USB_INTERFACE_DESCRIPTOR {
+    UCHAR bLength;
+    UCHAR bDescriptorType;
+    UCHAR bInterfaceNumber;
+    UCHAR bAlternateSetting;
+    UCHAR bNumEndpoints;
+    UCHAR bInterfaceClass;
+    UCHAR bInterfaceSubClass;
+    UCHAR bInterfaceProtocol;
+    UCHAR iInterface;
+} USB_INTERFACE_DESCRIPTOR;
+typedef struct _USB_INTERFACE_DESCRIPTOR *PUSB_INTERFACE_DESCRIPTOR;
+
+typedef struct _USB_STRING_DESCRIPTOR {
+    UCHAR bLength;
+    UCHAR bDescriptorType;
+    WCHAR bString[1];
+} USB_STRING_DESCRIPTOR;
+typedef struct _USB_STRING_DESCRIPTOR *PUSB_STRING_DESCRIPTOR;
+
+typedef struct _USB_COMMON_DESCRIPTOR {
+    UCHAR bLength;
+    UCHAR bDescriptorType;
+} USB_COMMON_DESCRIPTOR;
+typedef struct _USB_COMMON_DESCRIPTOR *PUSB_COMMON_DESCRIPTOR;
+
+#include <poppack.h>
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/usb200.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/usb200.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/usb200.h	(revision 16410)
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __DDK_USB200_H__
+#define __DDK_USB200_H__
+
+#include <ddk/usb100.h>
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/usbdlib.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/usbdlib.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/usbdlib.h	(revision 16410)
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __DDK_USBDLIB_H__
+#define __DDK_USBDLIB_H__
+
+typedef struct _USBD_INTERFACE_LIST_ENTRY {
+    PUSB_INTERFACE_DESCRIPTOR InterfaceDescriptor;
+    PUSBD_INTERFACE_INFORMATION Interface;
+} USBD_INTERFACE_LIST_ENTRY;
+typedef struct _USBD_INTERFACE_LIST_ENTRY *PUSBD_INTERFACE_LIST_ENTRY;
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/wdm.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/wdm.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/wdm.h	(revision 16410)
@@ -0,0 +1,1156 @@
+/*
+ * Copyright 2004-2005 Ivan Leo Puoti
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _WDMDDK_
+#define _WDMDDK_
+#define _NTDDK_
+
+#include <ntstatus.h>
+
+#ifdef _WIN64
+#define POINTER_ALIGNMENT DECLSPEC_ALIGN(8)
+#else
+#define POINTER_ALIGNMENT
+#endif
+
+typedef LONG KPRIORITY;
+
+typedef ULONG_PTR KSPIN_LOCK, *PKSPIN_LOCK;
+
+struct _KDPC;
+struct _KAPC;
+struct _IRP;
+struct _DEVICE_OBJECT;
+struct _DRIVER_OBJECT;
+
+typedef VOID (WINAPI *PKDEFERRED_ROUTINE)(struct _KDPC *, PVOID, PVOID, PVOID);
+typedef VOID (WINAPI *PKSTART_ROUTINE)(PVOID);
+
+typedef NTSTATUS (WINAPI *PDRIVER_INITIALIZE)(struct _DRIVER_OBJECT *, PUNICODE_STRING);
+typedef NTSTATUS (WINAPI *PDRIVER_DISPATCH)(struct _DEVICE_OBJECT *, struct _IRP *);
+typedef void (WINAPI *PDRIVER_STARTIO)(struct _DEVICE_OBJECT *, struct _IRP *);
+typedef void (WINAPI *PDRIVER_UNLOAD)(struct _DRIVER_OBJECT *);
+
+typedef struct _DISPATCHER_HEADER {
+  UCHAR  Type;
+  UCHAR  Absolute;
+  UCHAR  Size;
+  UCHAR  Inserted;
+  LONG  SignalState;
+  LIST_ENTRY  WaitListHead;
+} DISPATCHER_HEADER, *PDISPATCHER_HEADER;
+
+typedef struct _KEVENT {
+  DISPATCHER_HEADER  Header;
+} KEVENT, *PKEVENT, *RESTRICTED_POINTER PRKEVENT;
+
+typedef struct _KDPC {
+  CSHORT  Type;
+  UCHAR  Number;
+  UCHAR  Importance;
+  LIST_ENTRY  DpcListEntry;
+  PKDEFERRED_ROUTINE  DeferredRoutine;
+  PVOID  DeferredContext;
+  PVOID  SystemArgument1;
+  PVOID  SystemArgument2;
+  PULONG_PTR  Lock;
+} KDPC, *PKDPC, *RESTRICTED_POINTER PRKDPC;
+
+typedef struct _KDEVICE_QUEUE_ENTRY {
+  LIST_ENTRY  DeviceListEntry;
+  ULONG  SortKey;
+  BOOLEAN  Inserted;
+} KDEVICE_QUEUE_ENTRY, *PKDEVICE_QUEUE_ENTRY,
+*RESTRICTED_POINTER PRKDEVICE_QUEUE_ENTRY;
+
+typedef struct _KDEVICE_QUEUE {
+  CSHORT  Type;
+  CSHORT  Size;
+  LIST_ENTRY  DeviceListHead;
+  KSPIN_LOCK  Lock;
+  BOOLEAN  Busy;
+} KDEVICE_QUEUE, *PKDEVICE_QUEUE, *RESTRICTED_POINTER PRKDEVICE_QUEUE;
+
+typedef struct _KMUTANT {
+    DISPATCHER_HEADER Header;
+    LIST_ENTRY MutantListEntry;
+    struct _KTHREAD *RESTRICTED_POINTER OwnerThread;
+    BOOLEAN Abandoned;
+    UCHAR ApcDisable;
+} KMUTANT, *PKMUTANT, *RESTRICTED_POINTER PRKMUTANT, KMUTEX, *PKMUTEX, *RESTRICTED_POINTER PRKMUTEX;
+
+typedef enum _KWAIT_REASON
+{
+    Executive,
+    FreePage,
+    PageIn,
+    PoolAllocation,
+    DelayExecution,
+    Suspended,
+    UserRequest,
+    WrExecutive,
+    WrFreePage,
+    WrPageIn,
+    WrDelayExecution,
+    WrSuspended,
+    WrUserRequest,
+    WrQueue,
+    WrLpcReceive,
+    WrLpcReply,
+    WrVirtualMemory,
+    WrPageOut,
+    WrRendezvous,
+    Spare2,
+    Spare3,
+    Spare4,
+    Spare5,
+    Spare6,
+    WrKernel,
+    MaximumWaitReason,
+} KWAIT_REASON;
+
+typedef struct _IO_TIMER *PIO_TIMER;
+typedef struct _ETHREAD *PETHREAD;
+typedef struct _KTHREAD *PKTHREAD;
+typedef struct _EPROCESS *PEPROCESS;
+typedef struct _IO_WORKITEM *PIO_WORKITEM;
+typedef struct _OBJECT_TYPE *POBJECT_TYPE;
+typedef struct _OBJECT_HANDLE_INFORMATION *POBJECT_HANDLE_INFORMATION;
+
+#define MAXIMUM_VOLUME_LABEL_LENGTH       (32 * sizeof(WCHAR))
+
+typedef struct _VPB {
+  CSHORT  Type;
+  CSHORT  Size;
+  USHORT  Flags;
+  USHORT  VolumeLabelLength;
+  struct _DEVICE_OBJECT  *DeviceObject;
+  struct _DEVICE_OBJECT  *RealDevice;
+  ULONG  SerialNumber;
+  ULONG  ReferenceCount;
+  WCHAR  VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR)];
+} VPB, *PVPB;
+
+typedef enum _POOL_TYPE {
+  NonPagedPool,
+  PagedPool,
+  NonPagedPoolMustSucceed,
+  UnkownType,
+  NonPagedPoolCacheAligned,
+  PagedPoolCacheAligned,
+  NonPagedPoolCacheAlignedMustS,
+  MaxPoolType
+} POOL_TYPE;
+
+typedef struct _WAIT_CONTEXT_BLOCK {
+  KDEVICE_QUEUE_ENTRY  WaitQueueEntry;
+  struct _DRIVER_CONTROL  *DeviceRoutine;
+  PVOID  DeviceContext;
+  ULONG  NumberOfMapRegisters;
+  PVOID  DeviceObject;
+  PVOID  CurrentIrp;
+  PKDPC  BufferChainingDpc;
+} WAIT_CONTEXT_BLOCK, *PWAIT_CONTEXT_BLOCK;
+
+#define DO_BUFFERED_IO                  0x00000004
+#define DO_EXCLUSIVE                    0x00000008
+#define DO_DIRECT_IO                    0x00000010
+#define DO_MAP_IO_BUFFER                0x00000020
+#define DO_DEVICE_INITIALIZING          0x00000080
+#define DO_SHUTDOWN_REGISTERED          0x00000800
+#define DO_BUS_ENUMERATED_DEVICE        0x00001000
+#define DO_POWER_PAGABLE                0x00002000
+#define DO_POWER_INRUSH                 0x00004000
+
+#define IO_NO_INCREMENT                     0
+#define IO_CD_ROM_INCREMENT                 1
+#define IO_DISK_INCREMENT                   1
+#define IO_KEYBOARD_INCREMENT               6
+#define IO_MAILSLOT_INCREMENT               2
+#define IO_MOUSE_INCREMENT                  6
+#define IO_NAMED_PIPE_INCREMENT             2
+#define IO_NETWORK_INCREMENT                2
+#define IO_PARALLEL_INCREMENT               1
+#define IO_SERIAL_INCREMENT                 2
+#define IO_SOUND_INCREMENT                  8
+#define IO_VIDEO_INCREMENT                  1
+
+#ifndef DEVICE_TYPE
+#define DEVICE_TYPE ULONG
+#endif
+#define IRP_MJ_MAXIMUM_FUNCTION           0x1b
+#define IRP_MJ_CREATE                     0x00
+#define IRP_MJ_CREATE_NAMED_PIPE          0x01
+#define IRP_MJ_CLOSE                      0x02
+#define IRP_MJ_READ                       0x03
+#define IRP_MJ_WRITE                      0x04
+#define IRP_MJ_QUERY_INFORMATION          0x05
+#define IRP_MJ_SET_INFORMATION            0x06
+#define IRP_MJ_QUERY_EA                   0x07
+#define IRP_MJ_SET_EA                     0x08
+#define IRP_MJ_FLUSH_BUFFERS              0x09
+#define IRP_MJ_QUERY_VOLUME_INFORMATION   0x0a
+#define IRP_MJ_SET_VOLUME_INFORMATION     0x0b
+#define IRP_MJ_DIRECTORY_CONTROL          0x0c
+#define IRP_MJ_FILE_SYSTEM_CONTROL        0x0d
+#define IRP_MJ_DEVICE_CONTROL             0x0e
+#define IRP_MJ_INTERNAL_DEVICE_CONTROL    0x0f
+#define IRP_MJ_SHUTDOWN                   0x10
+#define IRP_MJ_LOCK_CONTROL               0x11
+#define IRP_MJ_CLEANUP                    0x12
+#define IRP_MJ_CREATE_MAILSLOT            0x13
+#define IRP_MJ_QUERY_SECURITY             0x14
+#define IRP_MJ_SET_SECURITY               0x15
+#define IRP_MJ_POWER                      0x16
+#define IRP_MJ_SYSTEM_CONTROL             0x17
+#define IRP_MJ_DEVICE_CHANGE              0x18
+#define IRP_MJ_QUERY_QUOTA                0x19
+#define IRP_MJ_SET_QUOTA                  0x1a
+#define IRP_MJ_PNP                        0x1b
+
+#define IRP_MN_START_DEVICE                 0x00
+#define IRP_MN_QUERY_REMOVE_DEVICE          0x01
+#define IRP_MN_REMOVE_DEVICE                0x02
+#define IRP_MN_CANCEL_REMOVE_DEVICE         0x03
+#define IRP_MN_STOP_DEVICE                  0x04
+#define IRP_MN_QUERY_STOP_DEVICE            0x05
+#define IRP_MN_CANCEL_STOP_DEVICE           0x06
+#define IRP_MN_QUERY_DEVICE_RELATIONS       0x07
+#define IRP_MN_QUERY_INTERFACE              0x08
+#define IRP_MN_QUERY_CAPABILITIES           0x09
+#define IRP_MN_QUERY_RESOURCES              0x0A
+#define IRP_MN_QUERY_RESOURCE_REQUIREMENTS  0x0B
+#define IRP_MN_QUERY_DEVICE_TEXT            0x0C
+#define IRP_MN_FILTER_RESOURCE_REQUIREMENTS 0x0D
+#define IRP_MN_READ_CONFIG                  0x0F
+#define IRP_MN_WRITE_CONFIG                 0x10
+#define IRP_MN_EJECT                        0x11
+#define IRP_MN_SET_LOCK                     0x12
+#define IRP_MN_QUERY_ID                     0x13
+#define IRP_MN_QUERY_PNP_DEVICE_STATE       0x14
+#define IRP_MN_QUERY_BUS_INFORMATION        0x15
+#define IRP_MN_DEVICE_USAGE_NOTIFICATION    0x16
+#define IRP_MN_SURPRISE_REMOVAL             0x17
+
+#define IRP_QUOTA_CHARGED               0x01
+#define IRP_ALLOCATED_MUST_SUCCEED      0x02
+#define IRP_ALLOCATED_FIXED_SIZE        0x04
+#define IRP_LOOKASIDE_ALLOCATION        0x08
+
+#define IO_TYPE_ADAPTER                 0x01
+#define IO_TYPE_CONTROLLER              0x02
+#define IO_TYPE_DEVICE                  0x03
+#define IO_TYPE_DRIVER                  0x04
+#define IO_TYPE_FILE                    0x05
+#define IO_TYPE_IRP                     0x06
+#define IO_TYPE_MASTER_ADAPTER          0x07
+#define IO_TYPE_OPEN_PACKET             0x08
+#define IO_TYPE_TIMER                   0x09
+#define IO_TYPE_VPB                     0x0a
+#define IO_TYPE_ERROR_LOG               0x0b
+#define IO_TYPE_ERROR_MESSAGE           0x0c
+#define IO_TYPE_DEVICE_OBJECT_EXTENSION 0x0d
+
+typedef struct _DEVICE_OBJECT {
+  CSHORT  Type;
+  USHORT  Size;
+  LONG  ReferenceCount;
+  struct _DRIVER_OBJECT  *DriverObject;
+  struct _DEVICE_OBJECT  *NextDevice;
+  struct _DEVICE_OBJECT  *AttachedDevice;
+  struct _IRP  *CurrentIrp;
+  PIO_TIMER  Timer;
+  ULONG  Flags;
+  ULONG  Characteristics;
+  PVPB  Vpb;
+  PVOID  DeviceExtension;
+  DEVICE_TYPE  DeviceType;
+  CCHAR  StackSize;
+  union {
+    LIST_ENTRY  ListEntry;
+    WAIT_CONTEXT_BLOCK  Wcb;
+  } Queue;
+  ULONG  AlignmentRequirement;
+  KDEVICE_QUEUE  DeviceQueue;
+  KDPC  Dpc;
+  ULONG  ActiveThreadCount;
+  PSECURITY_DESCRIPTOR  SecurityDescriptor;
+  KEVENT  DeviceLock;
+  USHORT  SectorSize;
+  USHORT  Spare1;
+  struct _DEVOBJ_EXTENSION  *DeviceObjectExtension;
+  PVOID  Reserved;
+} DEVICE_OBJECT;
+typedef struct _DEVICE_OBJECT *PDEVICE_OBJECT;
+
+typedef struct _DRIVER_EXTENSION {
+  struct _DRIVER_OBJECT  *DriverObject;
+  PVOID  AddDevice;
+  ULONG  Count;
+  UNICODE_STRING  ServiceKeyName;
+} DRIVER_EXTENSION, *PDRIVER_EXTENSION;
+
+typedef struct _DRIVER_OBJECT {
+  CSHORT  Type;
+  CSHORT  Size;
+  PDEVICE_OBJECT  DeviceObject;
+  ULONG  Flags;
+  PVOID  DriverStart;
+  ULONG  DriverSize;
+  PVOID  DriverSection;
+  PDRIVER_EXTENSION  DriverExtension;
+  UNICODE_STRING  DriverName;
+  PUNICODE_STRING  HardwareDatabase;
+  PVOID  FastIoDispatch;
+  PDRIVER_INITIALIZE DriverInit;
+  PDRIVER_STARTIO    DriverStartIo;
+  PDRIVER_UNLOAD     DriverUnload;
+  PDRIVER_DISPATCH   MajorFunction[IRP_MJ_MAXIMUM_FUNCTION + 1];
+} DRIVER_OBJECT;
+typedef struct _DRIVER_OBJECT *PDRIVER_OBJECT;
+
+/* Irp definitions */
+typedef UCHAR KIRQL, *PKIRQL;
+typedef CCHAR KPROCESSOR_MODE;
+
+typedef VOID (WINAPI *PDRIVER_CANCEL)(
+  IN struct _DEVICE_OBJECT  *DeviceObject,
+  IN struct _IRP  *Irp);
+
+typedef VOID (WINAPI *PKNORMAL_ROUTINE)(
+  IN PVOID  NormalContext,
+  IN PVOID  SystemArgument1,
+  IN PVOID  SystemArgument2);
+
+typedef VOID (WINAPI *PKKERNEL_ROUTINE)(
+  IN struct _KAPC  *Apc,
+  IN OUT PKNORMAL_ROUTINE  *NormalRoutine,
+  IN OUT PVOID  *NormalContext,
+  IN OUT PVOID  *SystemArgument1,
+  IN OUT PVOID  *SystemArgument2);
+
+typedef VOID (WINAPI *PKRUNDOWN_ROUTINE)(
+  IN struct _KAPC  *Apc);
+
+typedef struct _KAPC {
+  CSHORT  Type;
+  CSHORT  Size;
+  ULONG  Spare0;
+  struct _KTHREAD  *Thread;
+  LIST_ENTRY  ApcListEntry;
+  PKKERNEL_ROUTINE  KernelRoutine;
+  PKRUNDOWN_ROUTINE  RundownRoutine;
+  PKNORMAL_ROUTINE  NormalRoutine;
+  PVOID  NormalContext;
+  PVOID  SystemArgument1;
+  PVOID  SystemArgument2;
+  CCHAR  ApcStateIndex;
+  KPROCESSOR_MODE  ApcMode;
+  BOOLEAN  Inserted;
+} KAPC, *PKAPC, *RESTRICTED_POINTER PRKAPC;
+
+#include <pshpack1.h>
+typedef struct _IRP {
+  CSHORT  Type;
+  USHORT  Size;
+  struct _MDL  *MdlAddress;
+  ULONG  Flags;
+  union {
+    struct _IRP  *MasterIrp;
+    LONG  IrpCount;
+    PVOID  SystemBuffer;
+  } AssociatedIrp;
+  LIST_ENTRY  ThreadListEntry;
+  IO_STATUS_BLOCK  IoStatus;
+  KPROCESSOR_MODE  RequestorMode;
+  BOOLEAN  PendingReturned;
+  CHAR  StackCount;
+  CHAR  CurrentLocation;
+  BOOLEAN  Cancel;
+  KIRQL  CancelIrql;
+  CCHAR  ApcEnvironment;
+  UCHAR  AllocationFlags;
+  PIO_STATUS_BLOCK  UserIosb;
+  PKEVENT  UserEvent;
+  union {
+    struct {
+      PIO_APC_ROUTINE  UserApcRoutine;
+      PVOID  UserApcContext;
+    } AsynchronousParameters;
+    LARGE_INTEGER  AllocationSize;
+  } Overlay;
+  PDRIVER_CANCEL  CancelRoutine;
+  PVOID  UserBuffer;
+  union {
+    struct {
+       union {
+        KDEVICE_QUEUE_ENTRY  DeviceQueueEntry;
+        struct {
+          PVOID  DriverContext[4];
+        } DUMMYSTRUCTNAME;
+      } DUMMYUNIONNAME;
+      PETHREAD  Thread;
+      PCHAR  AuxiliaryBuffer;
+      struct {
+        LIST_ENTRY  ListEntry;
+        union {
+          struct _IO_STACK_LOCATION  *CurrentStackLocation;
+          ULONG  PacketType;
+        } DUMMYUNIONNAME;
+      } DUMMYSTRUCTNAME;
+      struct _FILE_OBJECT  *OriginalFileObject;
+    } Overlay;
+    KAPC  Apc;
+    PVOID  CompletionKey;
+  } Tail;
+} IRP;
+typedef struct _IRP *PIRP;
+#include <poppack.h>
+
+/* MDL definitions */
+
+typedef VOID (WINAPI *PINTERFACE_REFERENCE)(
+  PVOID  Context);
+
+typedef VOID (WINAPI *PINTERFACE_DEREFERENCE)(
+  PVOID Context);
+
+typedef struct _INTERFACE {
+  USHORT  Size;
+  USHORT  Version;
+  PVOID  Context;
+  PINTERFACE_REFERENCE  InterfaceReference;
+  PINTERFACE_DEREFERENCE  InterfaceDereference;
+} INTERFACE, *PINTERFACE;
+
+typedef struct _SECTION_OBJECT_POINTERS {
+  PVOID  DataSectionObject;
+  PVOID  SharedCacheMap;
+  PVOID  ImageSectionObject;
+} SECTION_OBJECT_POINTERS, *PSECTION_OBJECT_POINTERS;
+
+typedef struct _IO_COMPLETION_CONTEXT {
+  PVOID  Port;
+  PVOID  Key;
+} IO_COMPLETION_CONTEXT, *PIO_COMPLETION_CONTEXT;
+
+typedef enum _DEVICE_RELATION_TYPE {
+  BusRelations,
+  EjectionRelations,
+  PowerRelations,
+  RemovalRelations,
+  TargetDeviceRelation,
+  SingleBusRelations
+} DEVICE_RELATION_TYPE, *PDEVICE_RELATION_TYPE;
+
+typedef struct _FILE_OBJECT {
+  CSHORT  Type;
+  CSHORT  Size;
+  PDEVICE_OBJECT  DeviceObject;
+  PVPB  Vpb;
+  PVOID  FsContext;
+  PVOID  FsContext2;
+  PSECTION_OBJECT_POINTERS  SectionObjectPointer;
+  PVOID  PrivateCacheMap;
+  NTSTATUS  FinalStatus;
+  struct _FILE_OBJECT  *RelatedFileObject;
+  BOOLEAN  LockOperation;
+  BOOLEAN  DeletePending;
+  BOOLEAN  ReadAccess;
+  BOOLEAN  WriteAccess;
+  BOOLEAN  DeleteAccess;
+  BOOLEAN  SharedRead;
+  BOOLEAN  SharedWrite;
+  BOOLEAN  SharedDelete;
+  ULONG  Flags;
+  UNICODE_STRING  FileName;
+  LARGE_INTEGER  CurrentByteOffset;
+  ULONG  Waiters;
+  ULONG  Busy;
+  PVOID  LastLock;
+  KEVENT  Lock;
+  KEVENT  Event;
+  PIO_COMPLETION_CONTEXT  CompletionContext;
+} FILE_OBJECT;
+typedef struct _FILE_OBJECT *PFILE_OBJECT;
+
+#define INITIAL_PRIVILEGE_COUNT           3
+
+typedef struct _INITIAL_PRIVILEGE_SET {
+  ULONG  PrivilegeCount;
+  ULONG  Control;
+  LUID_AND_ATTRIBUTES  Privilege[INITIAL_PRIVILEGE_COUNT];
+} INITIAL_PRIVILEGE_SET, * PINITIAL_PRIVILEGE_SET;
+
+typedef struct _SECURITY_SUBJECT_CONTEXT {
+  PACCESS_TOKEN  ClientToken;
+  SECURITY_IMPERSONATION_LEVEL  ImpersonationLevel;
+  PACCESS_TOKEN  PrimaryToken;
+  PVOID  ProcessAuditId;
+} SECURITY_SUBJECT_CONTEXT, *PSECURITY_SUBJECT_CONTEXT;
+
+typedef struct _ACCESS_STATE {
+  LUID  OperationID;
+  BOOLEAN  SecurityEvaluated;
+  BOOLEAN  GenerateAudit;
+  BOOLEAN  GenerateOnClose;
+  BOOLEAN  PrivilegesAllocated;
+  ULONG  Flags;
+  ACCESS_MASK  RemainingDesiredAccess;
+  ACCESS_MASK  PreviouslyGrantedAccess;
+  ACCESS_MASK  OriginalDesiredAccess;
+  SECURITY_SUBJECT_CONTEXT  SubjectSecurityContext;
+  PSECURITY_DESCRIPTOR  SecurityDescriptor;
+  PVOID  AuxData;
+  union {
+    INITIAL_PRIVILEGE_SET  InitialPrivilegeSet;
+    PRIVILEGE_SET  PrivilegeSet;
+  } Privileges;
+
+  BOOLEAN  AuditPrivileges;
+  UNICODE_STRING  ObjectName;
+  UNICODE_STRING  ObjectTypeName;
+} ACCESS_STATE, *PACCESS_STATE;
+
+typedef struct _IO_SECURITY_CONTEXT {
+  PSECURITY_QUALITY_OF_SERVICE  SecurityQos;
+  PACCESS_STATE  AccessState;
+  ACCESS_MASK  DesiredAccess;
+  ULONG  FullCreateOptions;
+} IO_SECURITY_CONTEXT, *PIO_SECURITY_CONTEXT;
+
+typedef struct _DEVICE_CAPABILITIES {
+  USHORT  Size;
+  USHORT  Version;
+  ULONG  DeviceD1 : 1;
+  ULONG  DeviceD2 : 1;
+  ULONG  LockSupported : 1;
+  ULONG  EjectSupported : 1;
+  ULONG  Removable : 1;
+  ULONG  DockDevice : 1;
+  ULONG  UniqueID : 1;
+  ULONG  SilentInstall : 1;
+  ULONG  RawDeviceOK : 1;
+  ULONG  SurpriseRemovalOK : 1;
+  ULONG  WakeFromD0 : 1;
+  ULONG  WakeFromD1 : 1;
+  ULONG  WakeFromD2 : 1;
+  ULONG  WakeFromD3 : 1;
+  ULONG  HardwareDisabled : 1;
+  ULONG  NonDynamic : 1;
+  ULONG  WarmEjectSupported : 1;
+  ULONG  NoDisplayInUI : 1;
+  ULONG  Reserved : 14;
+  ULONG  Address;
+  ULONG  UINumber;
+  DEVICE_POWER_STATE  DeviceState[PowerSystemMaximum];
+  SYSTEM_POWER_STATE  SystemWake;
+  DEVICE_POWER_STATE  DeviceWake;
+  ULONG  D1Latency;
+  ULONG  D2Latency;
+  ULONG  D3Latency;
+} DEVICE_CAPABILITIES, *PDEVICE_CAPABILITIES;
+
+typedef enum _INTERFACE_TYPE {
+  InterfaceTypeUndefined = -1,
+  Internal,
+  Isa,
+  Eisa,
+  MicroChannel,
+  TurboChannel,
+  PCIBus,
+  VMEBus,
+  NuBus,
+  PCMCIABus,
+  CBus,
+  MPIBus,
+  MPSABus,
+  ProcessorInternal,
+  InternalPowerBus,
+  PNPISABus,
+  PNPBus,
+  MaximumInterfaceType
+} INTERFACE_TYPE, *PINTERFACE_TYPE;
+
+typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS;
+
+#define IO_RESOURCE_PREFERRED             0x01
+#define IO_RESOURCE_DEFAULT               0x02
+#define IO_RESOURCE_ALTERNATIVE           0x08
+
+typedef struct _IO_RESOURCE_DESCRIPTOR {
+  UCHAR  Option;
+  UCHAR  Type;
+  UCHAR  ShareDisposition;
+  UCHAR  Spare1;
+  USHORT  Flags;
+  USHORT  Spare2;
+  union {
+    struct {
+      ULONG  Length;
+      ULONG  Alignment;
+      PHYSICAL_ADDRESS  MinimumAddress;
+      PHYSICAL_ADDRESS  MaximumAddress;
+    } Port;
+    struct {
+      ULONG  Length;
+      ULONG  Alignment;
+      PHYSICAL_ADDRESS  MinimumAddress;
+      PHYSICAL_ADDRESS  MaximumAddress;
+    } Memory;
+    struct {
+      ULONG  MinimumVector;
+      ULONG  MaximumVector;
+    } Interrupt;
+    struct {
+      ULONG  MinimumChannel;
+      ULONG  MaximumChannel;
+    } Dma;
+    struct {
+      ULONG  Length;
+      ULONG  Alignment;
+      PHYSICAL_ADDRESS  MinimumAddress;
+      PHYSICAL_ADDRESS  MaximumAddress;
+    } Generic;
+    struct {
+      ULONG  Data[3];
+    } DevicePrivate;
+    struct {
+      ULONG  Length;
+      ULONG  MinBusNumber;
+      ULONG  MaxBusNumber;
+      ULONG  Reserved;
+    } BusNumber;
+    struct {
+      ULONG  Priority;
+      ULONG  Reserved1;
+      ULONG  Reserved2;
+    } ConfigData;
+  } u;
+} IO_RESOURCE_DESCRIPTOR, *PIO_RESOURCE_DESCRIPTOR;
+
+typedef struct _IO_RESOURCE_LIST {
+  USHORT  Version;
+  USHORT  Revision;
+  ULONG  Count;
+  IO_RESOURCE_DESCRIPTOR  Descriptors[1];
+} IO_RESOURCE_LIST, *PIO_RESOURCE_LIST;
+
+typedef struct _IO_RESOURCE_REQUIREMENTS_LIST {
+  ULONG  ListSize;
+  INTERFACE_TYPE  InterfaceType;
+  ULONG  BusNumber;
+  ULONG  SlotNumber;
+  ULONG  Reserved[3];
+  ULONG  AlternativeLists;
+  IO_RESOURCE_LIST  List[1];
+} IO_RESOURCE_REQUIREMENTS_LIST, *PIO_RESOURCE_REQUIREMENTS_LIST;
+
+typedef enum _BUS_QUERY_ID_TYPE {
+  BusQueryDeviceID,
+  BusQueryHardwareIDs,
+  BusQueryCompatibleIDs,
+  BusQueryInstanceID,
+  BusQueryDeviceSerialNumber
+} BUS_QUERY_ID_TYPE, *PBUS_QUERY_ID_TYPE;
+
+typedef enum _DEVICE_TEXT_TYPE {
+  DeviceTextDescription,
+  DeviceTextLocationInformation
+} DEVICE_TEXT_TYPE, *PDEVICE_TEXT_TYPE;
+
+typedef enum _DEVICE_USAGE_NOTIFICATION_TYPE {
+  DeviceUsageTypeUndefined,
+  DeviceUsageTypePaging,
+  DeviceUsageTypeHibernation,
+  DeviceUsageTypeDumpFile
+} DEVICE_USAGE_NOTIFICATION_TYPE;
+
+typedef struct _POWER_SEQUENCE {
+  ULONG  SequenceD1;
+  ULONG  SequenceD2;
+  ULONG  SequenceD3;
+} POWER_SEQUENCE, *PPOWER_SEQUENCE;
+
+typedef enum _POWER_STATE_TYPE {
+  SystemPowerState,
+  DevicePowerState
+} POWER_STATE_TYPE, *PPOWER_STATE_TYPE;
+
+typedef union _POWER_STATE {
+  SYSTEM_POWER_STATE  SystemState;
+  DEVICE_POWER_STATE  DeviceState;
+} POWER_STATE, *PPOWER_STATE;
+
+typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR {
+  UCHAR Type;
+  UCHAR ShareDisposition;
+  USHORT Flags;
+  union {
+    struct {
+      PHYSICAL_ADDRESS Start;
+      ULONG Length;
+    } Generic;
+    struct {
+      PHYSICAL_ADDRESS Start;
+      ULONG Length;
+    } Port;
+    struct {
+      ULONG Level;
+      ULONG Vector;
+      ULONG Affinity;
+    } Interrupt;
+    struct {
+      PHYSICAL_ADDRESS Start;
+      ULONG Length;
+    } Memory;
+    struct {
+      ULONG Channel;
+      ULONG Port;
+      ULONG Reserved1;
+    } Dma;
+    struct {
+      ULONG Data[3];
+    } DevicePrivate;
+    struct {
+      ULONG Start;
+      ULONG Length;
+      ULONG Reserved;
+    } BusNumber;
+    struct {
+      ULONG DataSize;
+      ULONG Reserved1;
+      ULONG Reserved2;
+    } DeviceSpecificData;
+  } u;
+} CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR;
+
+typedef struct _CM_PARTIAL_RESOURCE_LIST {
+  USHORT  Version;
+  USHORT  Revision;
+  ULONG  Count;
+  CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1];
+} CM_PARTIAL_RESOURCE_LIST, *PCM_PARTIAL_RESOURCE_LIST;
+
+typedef struct _CM_FULL_RESOURCE_DESCRIPTOR {
+  INTERFACE_TYPE  InterfaceType;
+  ULONG  BusNumber;
+  CM_PARTIAL_RESOURCE_LIST  PartialResourceList;
+} CM_FULL_RESOURCE_DESCRIPTOR, *PCM_FULL_RESOURCE_DESCRIPTOR;
+
+typedef struct _CM_RESOURCE_LIST {
+  ULONG  Count;
+  CM_FULL_RESOURCE_DESCRIPTOR  List[1];
+} CM_RESOURCE_LIST, *PCM_RESOURCE_LIST;
+
+typedef NTSTATUS (WINAPI *PIO_COMPLETION_ROUTINE)(
+  IN struct _DEVICE_OBJECT  *DeviceObject,
+  IN struct _IRP  *Irp,
+  IN PVOID  Context);
+
+#define SL_PENDING_RETURNED             0x01
+#define SL_INVOKE_ON_CANCEL             0x20
+#define SL_INVOKE_ON_SUCCESS            0x40
+#define SL_INVOKE_ON_ERROR              0x80
+
+#include <pshpack1.h>
+typedef struct _IO_STACK_LOCATION {
+  UCHAR  MajorFunction;
+  UCHAR  MinorFunction;
+  UCHAR  Flags;
+  UCHAR  Control;
+  union {
+    struct {
+      PIO_SECURITY_CONTEXT  SecurityContext;
+      ULONG  Options;
+      USHORT POINTER_ALIGNMENT  FileAttributes;
+      USHORT  ShareAccess;
+      ULONG POINTER_ALIGNMENT  EaLength;
+    } Create;
+    struct {
+      ULONG  Length;
+      ULONG POINTER_ALIGNMENT  Key;
+      LARGE_INTEGER  ByteOffset;
+    } Read;
+    struct {
+      ULONG  Length;
+      ULONG POINTER_ALIGNMENT  Key;
+      LARGE_INTEGER  ByteOffset;
+    } Write;
+    struct {
+      ULONG  Length;
+      FILE_INFORMATION_CLASS POINTER_ALIGNMENT  FileInformationClass;
+    } QueryFile;
+    struct {
+      ULONG  Length;
+      FILE_INFORMATION_CLASS POINTER_ALIGNMENT  FileInformationClass;
+      PFILE_OBJECT  FileObject;
+      union {
+        struct {
+          BOOLEAN  ReplaceIfExists;
+          BOOLEAN  AdvanceOnly;
+        } DUMMYSTRUCTNAME;
+        ULONG  ClusterCount;
+        HANDLE  DeleteHandle;
+      } DUMMYUNIONNAME;
+    } SetFile;
+    struct {
+      ULONG  Length;
+      FS_INFORMATION_CLASS POINTER_ALIGNMENT  FsInformationClass;
+    } QueryVolume;
+    struct {
+      ULONG  OutputBufferLength;
+      ULONG POINTER_ALIGNMENT  InputBufferLength;
+      ULONG POINTER_ALIGNMENT  IoControlCode;
+      PVOID  Type3InputBuffer;
+    } DeviceIoControl;
+    struct {
+      SECURITY_INFORMATION  SecurityInformation;
+      ULONG POINTER_ALIGNMENT  Length;
+    } QuerySecurity;
+    struct {
+      SECURITY_INFORMATION  SecurityInformation;
+      PSECURITY_DESCRIPTOR  SecurityDescriptor;
+    } SetSecurity;
+    struct {
+      PVPB  Vpb;
+      PDEVICE_OBJECT  DeviceObject;
+    } MountVolume;
+    struct {
+      PVPB  Vpb;
+      PDEVICE_OBJECT  DeviceObject;
+    } VerifyVolume;
+    struct {
+      struct _SCSI_REQUEST_BLOCK  *Srb;
+    } Scsi;
+    struct {
+      DEVICE_RELATION_TYPE  Type;
+    } QueryDeviceRelations;
+    struct {
+      CONST GUID  *InterfaceType;
+      USHORT  Size;
+      USHORT  Version;
+      PINTERFACE  Interface;
+      PVOID  InterfaceSpecificData;
+    } QueryInterface;
+    struct {
+      PDEVICE_CAPABILITIES  Capabilities;
+    } DeviceCapabilities;
+    struct {
+      PIO_RESOURCE_REQUIREMENTS_LIST  IoResourceRequirementList;
+    } FilterResourceRequirements;
+    struct {
+      ULONG  WhichSpace;
+      PVOID  Buffer;
+      ULONG  Offset;
+      ULONG POINTER_ALIGNMENT  Length;
+    } ReadWriteConfig;
+    struct {
+      BOOLEAN  Lock;
+    } SetLock;
+    struct {
+      BUS_QUERY_ID_TYPE  IdType;
+    } QueryId;
+    struct {
+      DEVICE_TEXT_TYPE  DeviceTextType;
+      LCID POINTER_ALIGNMENT  LocaleId;
+    } QueryDeviceText;
+    struct {
+      BOOLEAN  InPath;
+      BOOLEAN  Reserved[3];
+      DEVICE_USAGE_NOTIFICATION_TYPE POINTER_ALIGNMENT  Type;
+    } UsageNotification;
+    struct {
+      SYSTEM_POWER_STATE  PowerState;
+    } WaitWake;
+    struct {
+      PPOWER_SEQUENCE  PowerSequence;
+    } PowerSequence;
+    struct {
+      ULONG  SystemContext;
+      POWER_STATE_TYPE POINTER_ALIGNMENT  Type;
+      POWER_STATE POINTER_ALIGNMENT  State;
+      POWER_ACTION POINTER_ALIGNMENT  ShutdownType;
+    } Power;
+    struct {
+      PCM_RESOURCE_LIST  AllocatedResources;
+      PCM_RESOURCE_LIST  AllocatedResourcesTranslated;
+    } StartDevice;
+    struct {
+      ULONG_PTR  ProviderId;
+      PVOID  DataPath;
+      ULONG  BufferSize;
+      PVOID  Buffer;
+    } WMI;
+    struct {
+      PVOID  Argument1;
+      PVOID  Argument2;
+      PVOID  Argument3;
+      PVOID  Argument4;
+    } Others;
+  } Parameters;
+  PDEVICE_OBJECT  DeviceObject;
+  PFILE_OBJECT  FileObject;
+  PIO_COMPLETION_ROUTINE  CompletionRoutine;
+  PVOID  Context;
+} IO_STACK_LOCATION, *PIO_STACK_LOCATION;
+#include <poppack.h>
+
+typedef struct _MDL {
+  struct _MDL  *Next;
+  CSHORT  Size;
+  CSHORT  MdlFlags;
+  struct _EPROCESS  *Process;
+  PVOID  MappedSystemVa;
+  PVOID  StartVa;
+  ULONG  ByteCount;
+  ULONG  ByteOffset;
+} MDL, *PMDL;
+
+typedef struct _KTIMER {
+    DISPATCHER_HEADER Header;
+    ULARGE_INTEGER DueTime;
+    LIST_ENTRY TimerListEntry;
+    struct _KDPC *Dpc;
+    LONG Period;
+} KTIMER, *PKTIMER;
+
+typedef struct _KSYSTEM_TIME {
+    ULONG LowPart;
+    LONG High1Time;
+    LONG High2Time;
+} KSYSTEM_TIME, *PKSYSTEM_TIME;
+
+typedef enum _NT_PRODUCT_TYPE {
+    NtProductWinNt = 1,
+    NtProductLanManNt,
+    NtProductServer
+} NT_PRODUCT_TYPE, *PNT_PRODUCT_TYPE;
+
+#define PROCESSOR_FEATURE_MAX 64
+
+typedef enum _ALTERNATIVE_ARCHITECTURE_TYPE
+{
+   StandardDesign,
+   NEC98x86,
+   EndAlternatives
+} ALTERNATIVE_ARCHITECTURE_TYPE;
+
+typedef struct _KUSER_SHARED_DATA {
+    ULONG TickCountLowDeprecated;
+    ULONG TickCountMultiplier;
+    volatile KSYSTEM_TIME InterruptTime;
+    volatile KSYSTEM_TIME SystemTime;
+    volatile KSYSTEM_TIME TimeZoneBias;
+    USHORT ImageNumberLow;
+    USHORT ImageNumberHigh;
+    WCHAR NtSystemRoot[260];
+    ULONG MaxStckTraceDepth;
+    ULONG CryptoExponent;
+    ULONG TimeZoneId;
+    ULONG LargePageMinimum;
+    ULONG Reserverd2[7];
+    NT_PRODUCT_TYPE NtProductType;
+    BOOLEAN ProductTypeIsValid;
+    ULONG MajorNtVersion;
+    ULONG MinorNtVersion;
+    BOOLEAN ProcessorFeatures[PROCESSOR_FEATURE_MAX];
+    ULONG Reserved1;
+    ULONG Reserved3;
+    volatile ULONG TimeSlip;
+    ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture;
+    LARGE_INTEGER SystemExpirationDate;
+    ULONG SuiteMask;
+    BOOLEAN KdDebuggerEnabled;
+    volatile ULONG ActiveConsoleId;
+    volatile ULONG DismountCount;
+    ULONG ComPlusPackage;
+    ULONG LastSystemRITEventTickCount;
+    ULONG NumberOfPhysicalPages;
+    BOOLEAN SafeBootMode;
+    ULONG TraceLogging;
+    ULONGLONG Fill0;
+    ULONGLONG SystemCall[4];
+    union {
+        volatile KSYSTEM_TIME TickCount;
+        volatile ULONG64 TickCountQuad;
+    } DUMMYUNIONNAME;
+} KSHARED_USER_DATA, *PKSHARED_USER_DATA;
+
+NTSTATUS WINAPI ObCloseHandle(IN HANDLE handle);
+
+#define IoGetCurrentIrpStackLocation(_Irp) ((_Irp)->Tail.Overlay.CurrentStackLocation)
+
+#define KernelMode 0
+#define UserMode   1
+
+/* directory object access rights */
+#define DIRECTORY_QUERY                 0x0001
+#define DIRECTORY_TRAVERSE              0x0002
+#define DIRECTORY_CREATE_OBJECT         0x0004
+#define DIRECTORY_CREATE_SUBDIRECTORY   0x0008
+#define DIRECTORY_ALL_ACCESS            (STANDARD_RIGHTS_REQUIRED | 0xF)
+
+/* symbolic link access rights */
+#define SYMBOLIC_LINK_QUERY             0x0001
+#define SYMBOLIC_LINK_ALL_ACCESS        (STANDARD_RIGHTS_REQUIRED | 0x1)
+
+PVOID     WINAPI ExAllocatePool(POOL_TYPE,SIZE_T);
+PVOID     WINAPI ExAllocatePoolWithQuota(POOL_TYPE,SIZE_T);
+PVOID     WINAPI ExAllocatePoolWithTag(POOL_TYPE,SIZE_T,ULONG);
+PVOID     WINAPI ExAllocatePoolWithQuotaTag(POOL_TYPE,SIZE_T,ULONG);
+void      WINAPI ExFreePool(PVOID);
+void      WINAPI ExFreePoolWithTag(PVOID,ULONG);
+
+PIRP      WINAPI IoAllocateIrp(CCHAR,BOOLEAN);
+NTSTATUS  WINAPI IoCreateDevice(DRIVER_OBJECT*,ULONG,UNICODE_STRING*,DEVICE_TYPE,ULONG,BOOLEAN,DEVICE_OBJECT**);
+NTSTATUS  WINAPI IoCreateDriver(UNICODE_STRING*,PDRIVER_INITIALIZE);
+NTSTATUS  WINAPI IoCreateSymbolicLink(UNICODE_STRING*,UNICODE_STRING*);
+void      WINAPI IoDeleteDevice(DEVICE_OBJECT*);
+void      WINAPI IoDeleteDriver(DRIVER_OBJECT*);
+NTSTATUS  WINAPI IoDeleteSymbolicLink(UNICODE_STRING*);
+void      WINAPI IoFreeIrp(IRP*);
+PEPROCESS WINAPI IoGetCurrentProcess(void);
+NTSTATUS  WINAPI IoGetDeviceObjectPointer(UNICODE_STRING*,ACCESS_MASK,PFILE_OBJECT*,PDEVICE_OBJECT*);
+PDEVICE_OBJECT WINAPI IoGetRelatedDeviceObject(PFILE_OBJECT);
+void      WINAPI IoInitializeIrp(IRP*,USHORT,CCHAR);
+
+PKTHREAD  WINAPI KeGetCurrentThread(void);
+void      WINAPI KeQuerySystemTime(LARGE_INTEGER*);
+void      WINAPI KeQueryTickCount(LARGE_INTEGER*);
+ULONG     WINAPI KeQueryTimeIncrement(void);
+
+PVOID     WINAPI MmAllocateNonCachedMemory(SIZE_T);
+void      WINAPI MmFreeNonCachedMemory(PVOID,SIZE_T);
+
+NTSTATUS  WINAPI ObReferenceObjectByHandle(HANDLE,ACCESS_MASK,POBJECT_TYPE,KPROCESSOR_MODE,PVOID*,POBJECT_HANDLE_INFORMATION);
+
+NTSTATUS  WINAPI PsCreateSystemThread(PHANDLE,ULONG,POBJECT_ATTRIBUTES,HANDLE,PCLIENT_ID,PKSTART_ROUTINE,PVOID);
+#define          PsGetCurrentProcess() IoGetCurrentProcess()
+#define          PsGetCurrentThread() ((PETHREAD)KeGetCurrentThread())
+HANDLE    WINAPI PsGetCurrentProcessId(void);
+HANDLE    WINAPI PsGetCurrentThreadId(void);
+BOOLEAN   WINAPI PsGetVersion(ULONG*,ULONG*,ULONG*,UNICODE_STRING*);
+NTSTATUS  WINAPI PsTerminateSystemThread(NTSTATUS);
+
+NTSTATUS  WINAPI ZwAddBootEntry(PUNICODE_STRING,PUNICODE_STRING);
+NTSTATUS  WINAPI ZwAccessCheckAndAuditAlarm(PUNICODE_STRING,HANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,ACCESS_MASK,PGENERIC_MAPPING,BOOLEAN,PACCESS_MASK,PBOOLEAN,PBOOLEAN);
+NTSTATUS  WINAPI ZwAdjustPrivilegesToken(HANDLE,BOOLEAN,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD);
+NTSTATUS  WINAPI ZwAlertThread(HANDLE ThreadHandle);
+NTSTATUS  WINAPI ZwAllocateVirtualMemory(HANDLE,PVOID*,ULONG,SIZE_T*,ULONG,ULONG);
+NTSTATUS  WINAPI ZwCancelIoFile(HANDLE,PIO_STATUS_BLOCK);
+NTSTATUS  WINAPI ZwCancelTimer(HANDLE, BOOLEAN*);
+NTSTATUS  WINAPI ZwClearEvent(HANDLE);
+NTSTATUS  WINAPI ZwClose(HANDLE);
+NTSTATUS  WINAPI ZwCloseObjectAuditAlarm(PUNICODE_STRING,HANDLE,BOOLEAN);
+NTSTATUS  WINAPI ZwConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
+NTSTATUS  WINAPI ZwCreateDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
+NTSTATUS  WINAPI ZwCreateEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *,BOOLEAN,BOOLEAN);
+NTSTATUS  WINAPI ZwCreateFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,PLARGE_INTEGER,ULONG,ULONG,ULONG,ULONG,PVOID,ULONG);
+NTSTATUS  WINAPI ZwCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
+NTSTATUS  WINAPI ZwCreateSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const LARGE_INTEGER*,ULONG,ULONG,HANDLE);
+NTSTATUS  WINAPI ZwCreateSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PUNICODE_STRING);
+NTSTATUS  WINAPI ZwCreateTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*, TIMER_TYPE);
+NTSTATUS  WINAPI ZwDeleteAtom(RTL_ATOM);
+NTSTATUS  WINAPI ZwDeleteFile(POBJECT_ATTRIBUTES);
+NTSTATUS  WINAPI ZwDeleteKey(HANDLE);
+NTSTATUS  WINAPI ZwDeleteValueKey(HANDLE,const UNICODE_STRING *);
+NTSTATUS  WINAPI ZwDeviceIoControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
+NTSTATUS  WINAPI ZwDisplayString(PUNICODE_STRING);
+NTSTATUS  WINAPI ZwDuplicateObject(HANDLE,HANDLE,HANDLE,PHANDLE,ACCESS_MASK,ULONG,ULONG);
+NTSTATUS  WINAPI ZwDuplicateToken(HANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,PHANDLE);
+NTSTATUS  WINAPI ZwEnumerateKey(HANDLE,ULONG,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
+NTSTATUS  WINAPI ZwEnumerateValueKey(HANDLE,ULONG,KEY_VALUE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
+NTSTATUS  WINAPI ZwFlushInstructionCache(HANDLE,LPCVOID,SIZE_T);
+NTSTATUS  WINAPI ZwFlushKey(HANDLE);
+NTSTATUS  WINAPI ZwFlushVirtualMemory(HANDLE,LPCVOID*,SIZE_T*,ULONG);
+NTSTATUS  WINAPI ZwFreeVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
+NTSTATUS  WINAPI ZwFsControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
+NTSTATUS  WINAPI ZwInitiatePowerAction(POWER_ACTION,SYSTEM_POWER_STATE,ULONG,BOOLEAN);
+NTSTATUS  WINAPI ZwLoadDriver(const UNICODE_STRING *);
+NTSTATUS  WINAPI ZwLoadKey(const OBJECT_ATTRIBUTES *,OBJECT_ATTRIBUTES *);
+NTSTATUS  WINAPI ZwLockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
+NTSTATUS  WINAPI ZwMakeTemporaryObject(HANDLE);
+NTSTATUS  WINAPI ZwMapViewOfSection(HANDLE,HANDLE,PVOID*,ULONG,SIZE_T,const LARGE_INTEGER*,SIZE_T*,SECTION_INHERIT,ULONG,ULONG);
+NTSTATUS  WINAPI ZwNotifyChangeKey(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN);
+NTSTATUS  WINAPI ZwOpenDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
+NTSTATUS  WINAPI ZwOpenEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
+NTSTATUS  WINAPI ZwOpenFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG);
+NTSTATUS  WINAPI ZwOpenKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
+NTSTATUS  WINAPI ZwOpenProcess(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
+NTSTATUS  WINAPI ZwOpenProcessToken(HANDLE,DWORD,HANDLE *);
+NTSTATUS  WINAPI ZwOpenSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
+NTSTATUS  WINAPI ZwOpenSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
+NTSTATUS  WINAPI ZwOpenThread(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
+NTSTATUS  WINAPI ZwOpenThreadToken(HANDLE,DWORD,BOOLEAN,HANDLE *);
+NTSTATUS  WINAPI ZwOpenTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*);
+NTSTATUS  WINAPI ZwPowerInformation(POWER_INFORMATION_LEVEL,PVOID,ULONG,PVOID,ULONG);
+NTSTATUS  WINAPI ZwPulseEvent(HANDLE,PULONG);
+NTSTATUS  WINAPI ZwQueryDefaultLocale(BOOLEAN,LCID*);
+NTSTATUS  WINAPI ZwQueryDefaultUILanguage(LANGID*);
+NTSTATUS  WINAPI ZwQueryDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS,BOOLEAN,PUNICODE_STRING,BOOLEAN);
+NTSTATUS  WINAPI ZwQueryDirectoryObject(HANDLE,PDIRECTORY_BASIC_INFORMATION,ULONG,BOOLEAN,BOOLEAN,PULONG,PULONG);
+NTSTATUS  WINAPI ZwQueryEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,BOOLEAN,PVOID,ULONG,PVOID,BOOLEAN);
+NTSTATUS  WINAPI ZwQueryFullAttributesFile(const OBJECT_ATTRIBUTES*,FILE_NETWORK_OPEN_INFORMATION*);
+NTSTATUS  WINAPI ZwQueryInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,LONG,FILE_INFORMATION_CLASS);
+NTSTATUS  WINAPI ZwQueryInformationThread(HANDLE,THREADINFOCLASS,PVOID,ULONG,PULONG);
+NTSTATUS  WINAPI ZwQueryInformationToken(HANDLE,DWORD,PVOID,DWORD,LPDWORD);
+NTSTATUS  WINAPI ZwQueryInstallUILanguage(LANGID*);
+NTSTATUS  WINAPI ZwQueryKey(HANDLE,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
+NTSTATUS  WINAPI ZwQueryObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG, PULONG);
+NTSTATUS  WINAPI ZwQuerySecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,ULONG,PULONG);
+NTSTATUS  WINAPI ZwQuerySection(HANDLE,SECTION_INFORMATION_CLASS,PVOID,ULONG,PULONG);
+NTSTATUS  WINAPI ZwQuerySymbolicLinkObject(HANDLE,PUNICODE_STRING,PULONG);
+NTSTATUS  WINAPI ZwQuerySystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG,PULONG);
+NTSTATUS  WINAPI ZwQueryTimerResolution(PULONG,PULONG,PULONG);
+NTSTATUS  WINAPI ZwQueryValueKey(HANDLE,const UNICODE_STRING *,KEY_VALUE_INFORMATION_CLASS,void *,DWORD,DWORD *);
+NTSTATUS  WINAPI ZwQueryVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
+NTSTATUS  WINAPI ZwReadFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,PLARGE_INTEGER,PULONG);
+NTSTATUS  WINAPI ZwReplaceKey(POBJECT_ATTRIBUTES,HANDLE,POBJECT_ATTRIBUTES);
+NTSTATUS  WINAPI ZwRequestWaitReplyPort(HANDLE,PLPC_MESSAGE,PLPC_MESSAGE);
+NTSTATUS  WINAPI ZwResetEvent(HANDLE,PULONG);
+NTSTATUS  WINAPI ZwRestoreKey(HANDLE,HANDLE,ULONG);
+NTSTATUS  WINAPI ZwSaveKey(HANDLE,HANDLE);
+NTSTATUS  WINAPI ZwSecureConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PSID,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
+NTSTATUS  WINAPI ZwSetDefaultLocale(BOOLEAN,LCID);
+NTSTATUS  WINAPI ZwSetDefaultUILanguage(LANGID);
+NTSTATUS  WINAPI ZwSetEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG);
+NTSTATUS  WINAPI ZwSetEvent(HANDLE,PULONG);
+NTSTATUS  WINAPI ZwSetInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS);
+NTSTATUS  WINAPI ZwSetInformationKey(HANDLE,const int,PVOID,ULONG);
+NTSTATUS  WINAPI ZwSetInformationObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG);
+NTSTATUS  WINAPI ZwSetInformationProcess(HANDLE,PROCESS_INFORMATION_CLASS,PVOID,ULONG);
+NTSTATUS  WINAPI ZwSetInformationThread(HANDLE,THREADINFOCLASS,LPCVOID,ULONG);
+NTSTATUS  WINAPI ZwSetIoCompletion(HANDLE,ULONG,ULONG,NTSTATUS,ULONG);
+NTSTATUS  WINAPI ZwSetSecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+NTSTATUS  WINAPI ZwSetSystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG);
+NTSTATUS  WINAPI ZwSetSystemTime(const LARGE_INTEGER*,LARGE_INTEGER*);
+NTSTATUS  WINAPI ZwSetTimer(HANDLE, const LARGE_INTEGER*, PTIMER_APC_ROUTINE, PVOID, BOOLEAN, ULONG, BOOLEAN*);
+NTSTATUS  WINAPI ZwSetValueKey(HANDLE,const UNICODE_STRING *,ULONG,ULONG,const void *,ULONG);
+NTSTATUS  WINAPI ZwSetVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
+NTSTATUS  WINAPI ZwSuspendThread(HANDLE,PULONG);
+NTSTATUS  WINAPI ZwTerminateProcess(HANDLE,LONG);
+NTSTATUS  WINAPI ZwUnloadDriver(const UNICODE_STRING *);
+NTSTATUS  WINAPI ZwUnloadKey(HANDLE);
+NTSTATUS  WINAPI ZwUnmapViewOfSection(HANDLE,PVOID);
+NTSTATUS  WINAPI ZwWaitForSingleObject(HANDLE,BOOLEAN,const LARGE_INTEGER*);
+NTSTATUS  WINAPI ZwWaitForMultipleObjects(ULONG,const HANDLE*,BOOLEAN,BOOLEAN,const LARGE_INTEGER*);
+NTSTATUS  WINAPI ZwWriteFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,const void*,ULONG,PLARGE_INTEGER,PULONG);
+NTSTATUS  WINAPI ZwYieldExecution(void);
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/winddiui.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/winddiui.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/winddiui.h	(revision 16410)
@@ -0,0 +1,50 @@
+/*
+ *  Header for the Device Driver Interface - User Interface library
+ *
+ *  Copyright 2007 Marcel Partap
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINDDIUI_H
+#define __WINE_WINDDIUI_H
+
+#include <ddk/compstui.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define DRIVER_EVENT_INITIALIZE 1
+#define DRIVER_EVENT_DELETE 2
+
+#define PRINTER_EVENT_ADD_CONNECTION 1
+#define PRINTER_EVENT_DELETE_CONNECTION 2
+#define PRINTER_EVENT_INITIALIZE 3
+#define PRINTER_EVENT_DELETE 4
+#define PRINTER_EVENT_CACHE_REFRESH 5
+#define PRINTER_EVENT_CACHE_DELETE 6
+#define PRINTER_EVENT_ATTRIBUTES_CHANGED 7
+
+#define PRINTER_EVENT_FLAG_NO_UI 1
+
+BOOL WINAPI DrvDriverEvent(DWORD, DWORD, LPBYTE, LPARAM);
+BOOL WINAPI DrvPrinterEvent(LPWSTR, INT, DWORD, LPARAM);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __WINE_WINDDIUI_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/winsplp.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/winsplp.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddk/winsplp.h	(revision 16410)
@@ -0,0 +1,428 @@
+/*
+ * Definitions for print provider, monitor, processor and spooler
+ *
+ * Copyright 2005 Detlef Riekenberg
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ *
+ * "providor" is not a spelling error in this file. It's the real name.
+ *
+ */
+
+#ifndef _WINSPLP_
+#define _WINSPLP_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* DEFINES */
+
+#define PRINTER_NOTIFY_STATUS_ENDPOINT  1
+#define PRINTER_NOTIFY_STATUS_POLL      2
+#define PRINTER_NOTIFY_STATUS_INFO      4
+
+
+#define ROUTER_UNKNOWN      0
+#define ROUTER_SUCCESS      1
+#define ROUTER_STOP_ROUTING 2
+
+/*
+ * WARNING: Many Functions are declared as "BOOL", but return ROUTER_*
+ */
+
+
+/* TYPES */
+
+typedef struct _MONITOR {
+ BOOL  (WINAPI *pfnEnumPorts)(LPWSTR pName, DWORD Level, LPBYTE pPorts,
+                DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
+ BOOL  (WINAPI *pfnOpenPort)(LPWSTR pName, PHANDLE pHandle);
+ BOOL  (WINAPI *pfnOpenPortEx)(LPWSTR pPortName, LPWSTR pPrinterName,
+                PHANDLE pHandle, struct _MONITOR *pMonitor);
+ BOOL  (WINAPI *pfnStartDocPort)(HANDLE hPort, LPWSTR pPrinterName,
+                DWORD JobId, DWORD Level, LPBYTE pDocInfo);
+ BOOL  (WINAPI *pfnWritePort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuf,
+                LPDWORD pcbWritten);
+ BOOL  (WINAPI *pfnReadPort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuffer,
+                LPDWORD pcbRead);
+ BOOL  (WINAPI *pfnEndDocPort)(HANDLE hPort);
+ BOOL  (WINAPI *pfnClosePort)(HANDLE hPort);
+ BOOL  (WINAPI *pfnAddPort)(LPWSTR pName, HWND hWnd, LPWSTR pMonitorName);
+ BOOL  (WINAPI *pfnAddPortEx)(LPWSTR pName, DWORD Level, LPBYTE lpBuffer,
+                LPWSTR lpMonitorName);
+ BOOL  (WINAPI *pfnConfigurePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
+ BOOL  (WINAPI *pfnDeletePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
+ BOOL  (WINAPI *pfnGetPrinterDataFromPort)(HANDLE hPort, DWORD ControlID,
+                LPWSTR pValueName, LPWSTR lpInBuffer, DWORD cbInBuffer,
+                LPWSTR lpOutBuffer, DWORD cbOutBuffer, LPDWORD lpcbReturned);
+ BOOL  (WINAPI *pfnSetPortTimeOuts)(HANDLE hPort, LPCOMMTIMEOUTS lpCTO,
+                DWORD reserved);
+ BOOL  (WINAPI *pfnXcvOpenPort)(LPCWSTR pszObject, ACCESS_MASK GrantedAccess, PHANDLE phXcv);
+ DWORD (WINAPI *pfnXcvDataPort)(HANDLE hXcv, LPCWSTR pszDataName,
+                PBYTE pInputData, DWORD cbInputData,
+                PBYTE pOutputData, DWORD cbOutputData, PDWORD pcbOutputNeeded);
+ BOOL  (WINAPI *pfnXcvClosePort)(HANDLE hXcv);
+} MONITOR, *LPMONITOR;
+
+typedef struct _MONITOR2 {
+ DWORD cbSize;
+ BOOL  (WINAPI *pfnEnumPorts)(LPWSTR pName, DWORD Level, LPBYTE pPorts,
+                DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
+ BOOL  (WINAPI *pfnOpenPort)(LPWSTR pName, PHANDLE pHandle);
+ BOOL  (WINAPI *pfnOpenPortEx)(LPWSTR pPortName, LPWSTR pPrinterName,
+                PHANDLE pHandle, struct _MONITOR2 *pMonitor2);
+ BOOL  (WINAPI *pfnStartDocPort)(HANDLE hPort, LPWSTR pPrinterName,
+                DWORD JobId, DWORD Level, LPBYTE pDocInfo);
+ BOOL  (WINAPI *pfnWritePort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuf,
+                LPDWORD pcbWritten);
+ BOOL  (WINAPI *pfnReadPort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuffer,
+                LPDWORD pcbRead);
+ BOOL  (WINAPI *pfnEndDocPort)(HANDLE hPort);
+ BOOL  (WINAPI *pfnClosePort)(HANDLE hPort);
+ BOOL  (WINAPI *pfnAddPort)(LPWSTR pName, HWND hWnd, LPWSTR pMonitorName);
+ BOOL  (WINAPI *pfnAddPortEx)(LPWSTR pName, DWORD Level, LPBYTE lpBuffer,
+                LPWSTR lpMonitorName);
+ BOOL  (WINAPI *pfnConfigurePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
+ BOOL  (WINAPI *pfnDeletePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
+ BOOL  (WINAPI *pfnGetPrinterDataFromPort)(HANDLE hPort, DWORD ControlID,
+                LPWSTR pValueName, LPWSTR lpInBuffer, DWORD cbInBuffer,
+                LPWSTR lpOutBuffer, DWORD cbOutBuffer, LPDWORD lpcbReturned);
+ BOOL  (WINAPI *pfnSetPortTimeOuts)(HANDLE hPort, LPCOMMTIMEOUTS lpCTO,
+                DWORD reserved);
+ BOOL  (WINAPI *pfnXcvOpenPort)(HANDLE hMonitor, LPCWSTR pszObject,
+                ACCESS_MASK GrantedAccess, PHANDLE phXcv);
+ DWORD (WINAPI *pfnXcvDataPort)(HANDLE hXcv, LPCWSTR pszDataName,
+                PBYTE pInputData, DWORD cbInputData,
+                PBYTE pOutputData, DWORD cbOutputData, PDWORD pcbOutputNeeded);
+ BOOL  (WINAPI *pfnXcvClosePort)(HANDLE hXcv);
+ /* Additions from MONITOR to MONITOR2 */
+ VOID  (WINAPI *pfnShutdown)(HANDLE hMonitor);
+ DWORD (WINAPI *pfnSendRecvBidiDataFromPort)(HANDLE hPort, DWORD dwAccessBit,
+                LPCWSTR pAction, PBIDI_REQUEST_CONTAINER pReqData,
+                PBIDI_RESPONSE_CONTAINER *ppResData);
+} MONITOR2, *LPMONITOR2, *PMONITOR2;
+
+typedef struct _MONITOREX {
+ DWORD      dwMonitorSize;
+ MONITOR    Monitor;
+} MONITOREX, *LPMONITOREX;
+
+typedef struct _MONITORREG {
+ DWORD cbSize;
+ LONG  (WINAPI *fpCreateKey)(HANDLE hcKey, LPCWSTR pszSubKey, DWORD dwOptions,
+                REGSAM samDesired, PSECURITY_ATTRIBUTES pSecurityAttributes,
+                PHANDLE phckResult, PDWORD pdwDisposition, HANDLE hSpooler);
+ LONG  (WINAPI *fpOpenKey)(HANDLE hcKey, LPCWSTR pszSubKey, REGSAM samDesired,
+                PHANDLE phkResult, HANDLE hSpooler);
+ LONG  (WINAPI *fpCloseKey)(HANDLE hcKey, HANDLE hSpooler);
+ LONG  (WINAPI *fpDeleteKey)(HANDLE hcKey, LPCWSTR pszSubKey, HANDLE hSpooler);
+ LONG  (WINAPI *fpEnumKey)(HANDLE hcKey, DWORD dwIndex, LPWSTR pszName,
+                PDWORD pcchName, PFILETIME pftLastWriteTime, HANDLE hSpooler);
+ LONG  (WINAPI *fpQueryInfoKey)(HANDLE hcKey, PDWORD pcSubKeys, PDWORD pcbKey,
+                PDWORD pcValues, PDWORD pcbValue, PDWORD pcbData,
+                PDWORD pcbSecurityDescriptor, PFILETIME pftLastWriteTime,
+                HANDLE hSpooler);
+ LONG  (WINAPI *fpSetValue)(HANDLE hcKey, LPCWSTR pszValue, DWORD dwType,
+                const BYTE* pData, DWORD cbData, HANDLE hSpooler);
+ LONG  (WINAPI *fpDeleteValue)(HANDLE hcKey, LPCWSTR pszValue, HANDLE hSpooler);
+ LONG  (WINAPI *fpEnumValue)(HANDLE hcKey, DWORD dwIndex, LPWSTR pszValue,
+                PDWORD pcbValue, PDWORD pType, PBYTE pData, PDWORD pcbData,
+                HANDLE hSpooler);
+ LONG  (WINAPI *fpQueryValue)(HANDLE hcKey, LPCWSTR pszValue, PDWORD pType,
+                PBYTE pData, PDWORD pcbData, HANDLE hSpooler);
+} MONITORREG, *PMONITORREG;
+
+typedef struct _MONITORINIT {
+ DWORD       cbSize;
+ HANDLE      hSpooler;
+ HANDLE      hckRegistryRoot;
+ PMONITORREG pMonitorReg;
+ BOOL        bLocal;
+} MONITORINIT, *PMONITORINIT;
+
+typedef struct _MONITORUI {
+ DWORD dwMonitorUISize;
+ BOOL  (WINAPI *pfnAddPortUI)(PCWSTR pszServer, HWND hWnd,
+                PCWSTR pszPortNameIn, PWSTR *ppszPortNameOut);
+ BOOL  (WINAPI *pfnConfigurePortUI)(PCWSTR pName, HWND hWnd, PCWSTR pPortName);
+ BOOL  (WINAPI *pfnDeletePortUI)(PCWSTR pszServer, HWND hWnd, PCWSTR pszPortName);
+}MONITORUI, *PMONITORUI;
+
+typedef struct _PRINTER_NOTIFY_INIT {
+ DWORD  Size;
+ DWORD  Reserved;
+ DWORD  PollTime;
+} PRINTER_NOTIFY_INIT, *LPPRINTER_NOTIFY_INIT, *PPRINTER_NOTIFY_INIT;
+
+typedef struct _PRINTPROCESSOROPENDATA {
+ PDEVMODEW pDevMode;
+ LPWSTR    pDatatype;
+ LPWSTR    pParameters;
+ LPWSTR    pDocumentName;
+ DWORD     JobId;
+ LPWSTR    pOutputFile;
+ LPWSTR    pPrinterName;
+} PRINTPROCESSOROPENDATA, *LPPRINTPROCESSOROPENDATA, *PPRINTPROCESSOROPENDATA;
+
+
+/*
+ * WARNING: Many Functions are declared as "BOOL", but return ROUTER_*
+ */
+
+typedef struct _PRINTPROVIDOR {
+ BOOL   (WINAPI *fpOpenPrinter)(LPWSTR lpPrinterName, HANDLE *phPrinter,
+                 LPPRINTER_DEFAULTSW pDefault);
+ BOOL   (WINAPI *fpSetJob)(HANDLE hPrinter, DWORD JobID, DWORD Level,
+                 LPBYTE pJob, DWORD Command);
+ BOOL   (WINAPI *fpGetJob)(HANDLE hPrinter, DWORD JobID, DWORD Level,
+                 LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded);
+ BOOL   (WINAPI *fpEnumJobs)(HANDLE hPrinter, DWORD FirstJob, DWORD NoJobs,
+                 DWORD Level, LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded,
+                 LPDWORD pcReturned);
+ HANDLE (WINAPI *fpAddPrinter)(LPWSTR pName, DWORD Level, LPBYTE pPrinter);
+ BOOL   (WINAPI *fpDeletePrinter)(HANDLE hPrinter);
+ BOOL   (WINAPI *fpSetPrinter)(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
+                 DWORD Command);
+ BOOL   (WINAPI *fpGetPrinter)(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
+                 DWORD cbBuf, LPDWORD pcbNeeded);
+ BOOL   (WINAPI *fpEnumPrinters)(DWORD dwType, LPWSTR lpszName, DWORD dwLevel,
+                 LPBYTE lpbPrinters, DWORD cbBuf, LPDWORD lpdwNeeded,
+                 LPDWORD lpdwReturned);
+ BOOL   (WINAPI *fpAddPrinterDriver)(LPWSTR pName, DWORD Level,
+                 LPBYTE pDriverInfo);
+ BOOL   (WINAPI *fpEnumPrinterDrivers)(LPWSTR pName, LPWSTR pEnvironment,
+                 DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf,
+                 LPDWORD pcbNeeded, LPDWORD pcbReturned);
+ BOOL   (WINAPI *fpGetPrinterDriver)(HANDLE hPrinter, LPWSTR pEnvironment,
+                 DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf,
+                 LPDWORD pcbNeeded);
+ BOOL   (WINAPI *fpGetPrinterDriverDirectory)(LPWSTR pName, LPWSTR pEnvironment,
+                 DWORD Level, LPBYTE pDriverDirectory, DWORD cbBuf,
+                 LPDWORD pcbNeeded);
+ BOOL   (WINAPI *fpDeletePrinterDriver)(LPWSTR pName, LPWSTR pEnvironment,
+                 LPWSTR pDriverName);
+ BOOL   (WINAPI *fpAddPrintProcessor)(LPWSTR pName, LPWSTR pEnvironment,
+                 LPWSTR pPathName, LPWSTR pPrintProcessorName);
+ BOOL   (WINAPI *fpEnumPrintProcessors)(LPWSTR pName, LPWSTR pEnvironment,
+                 DWORD Level, LPBYTE pPrintProcessorInfo, DWORD cbBuf,
+                 LPDWORD pcbNeeded, LPDWORD pcbReturned);
+ BOOL   (WINAPI *fpGetPrintProcessorDirectory)(LPWSTR pName, LPWSTR pEnvironment,
+                 DWORD Level, LPBYTE pPrintProcessorInfo, DWORD cbBuf,
+                 LPDWORD pcbNeeded);
+ BOOL   (WINAPI *fpDeletePrintProcessor)(LPWSTR pName, LPWSTR pEnvironment,
+                 LPWSTR pPrintProcessorName);
+ BOOL   (WINAPI *fpEnumPrintProcessorDatatypes)(LPWSTR pName,
+                 LPWSTR pPrintProcessorName, DWORD Level, LPBYTE pDatatypes,
+                 DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcbReturned);
+ DWORD  (WINAPI *fpStartDocPrinter)(HANDLE hPrinter, DWORD Level, LPBYTE pDocInfo);
+ BOOL   (WINAPI *fpStartPagePrinter)(HANDLE hPrinter);
+ BOOL   (WINAPI *fpWritePrinter)(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf,
+                 LPDWORD pcWritten);
+ BOOL   (WINAPI *fpEndPagePrinter)(HANDLE hPrinter);
+ BOOL   (WINAPI *fpAbortPrinter)(HANDLE hPrinter);
+ BOOL   (WINAPI *fpReadPrinter)(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf,
+                 LPDWORD pNoBytesRead);
+ BOOL   (WINAPI *fpEndDocPrinter)(HANDLE hPrinter);
+ BOOL   (WINAPI *fpAddJob)(HANDLE hPrinter, DWORD Level, LPBYTE pData,
+                 DWORD cbBuf, LPDWORD pcbNeeded);
+ BOOL   (WINAPI *fpScheduleJob)(HANDLE hPrinter, DWORD JobID);
+ DWORD  (WINAPI *fpGetPrinterData)(HANDLE hPrinter, LPWSTR pValueName,
+                 LPDWORD pType, LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
+ DWORD  (WINAPI *fpSetPrinterData)(HANDLE hPrinter, LPWSTR pValueName,
+                 DWORD Type, LPBYTE pData, DWORD cbData);
+ DWORD  (WINAPI *fpWaitForPrinterChange)(HANDLE hPrinter, DWORD Flags);
+ BOOL   (WINAPI *fpClosePrinter)(HANDLE phPrinter);
+ BOOL   (WINAPI *fpAddForm)(HANDLE hPrinter, DWORD Level, LPBYTE pForm);
+ BOOL   (WINAPI *fpDeleteForm)(HANDLE hPrinter, LPWSTR pFormName);
+ BOOL   (WINAPI *fpGetForm)(HANDLE hPrinter, LPWSTR pFormName, DWORD Level,
+                 LPBYTE pForm, DWORD cbBuf, LPDWORD pcbNeeded);
+ BOOL   (WINAPI *fpSetForm)(HANDLE hPrinter, LPWSTR pFormName, DWORD Level,
+                 LPBYTE pForm);
+ BOOL   (WINAPI *fpEnumForms)(HANDLE hPrinter, DWORD Level, LPBYTE pForm,
+                 DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
+ BOOL   (WINAPI *fpEnumMonitors)(LPWSTR pName, DWORD Level, LPBYTE pMonitors,
+                 DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
+ BOOL   (WINAPI *fpEnumPorts)(LPWSTR pName, DWORD Level, LPBYTE pPorts,
+                 DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
+ BOOL   (WINAPI *fpAddPort)(LPWSTR pName, HWND hWnd, LPWSTR pMonitorName);
+ BOOL   (WINAPI *fpConfigurePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
+ BOOL   (WINAPI *fpDeletePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
+ HANDLE (WINAPI *fpCreatePrinterIC)(HANDLE  hPrinter, LPDEVMODEW  pDevMode);
+ BOOL   (WINAPI *fpPlayGdiScriptOnPrinterIC)(HANDLE  hPrinterIC, LPBYTE pIn,
+                 DWORD cIn, LPBYTE pOut, DWORD cOut, DWORD  ul);
+ BOOL   (WINAPI *fpDeletePrinterIC)(HANDLE hPrinterIC);
+ BOOL   (WINAPI *fpAddPrinterConnection)(LPWSTR pName);
+ BOOL   (WINAPI *fpDeletePrinterConnection)(LPWSTR pName);
+ DWORD  (WINAPI *fpPrinterMessageBox)(HANDLE hPrinter, DWORD Error, HWND hWnd,
+                 LPWSTR pText, LPWSTR pCaption, DWORD dwType);
+ BOOL   (WINAPI *fpAddMonitor)(LPWSTR pName, DWORD Level, LPBYTE pMonitors);
+ BOOL   (WINAPI *fpDeleteMonitor)(LPWSTR pName, LPWSTR pEnvironment,
+                 LPWSTR pMonitorName);
+ BOOL   (WINAPI *fpResetPrinter)(HANDLE hPrinter, LPPRINTER_DEFAULTSW pDefault);
+ BOOL   (WINAPI *fpGetPrinterDriverEx)(HANDLE hPrinter, LPWSTR pEnvironment,
+                 DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf, LPDWORD pcbNeeded,
+                 DWORD dwClientMajorVersion, DWORD dwClientMinorVersion,
+                 PDWORD pdwServerMajorVersion, PDWORD pdwServerMinorVersion);
+ HANDLE (WINAPI *fpFindFirstPrinterChangeNotification)(HANDLE hPrinter,
+                 DWORD fdwFlags, DWORD fdwOptions, LPVOID pPrinterNotifyOptions);
+ BOOL   (WINAPI *fpFindClosePrinterChangeNotification)(HANDLE hChange);
+ BOOL   (WINAPI *fpAddPortEx)(HANDLE hMonitor, LPWSTR pName, DWORD Level,
+                 LPBYTE lpBuffer, LPWSTR lpMonitorName);
+ BOOL   (WINAPI *fpShutDown)(LPVOID pvReserved);
+ BOOL   (WINAPI *fpRefreshPrinterChangeNotification)(HANDLE hPrinter,
+                 DWORD Reserved, PVOID pvReserved, PVOID pPrinterNotifyInfo);
+ BOOL   (WINAPI *fpOpenPrinterEx)(LPWSTR pPrinterName, LPHANDLE phPrinter,
+                 LPPRINTER_DEFAULTSW pDefault, LPBYTE pClientInfo, DWORD Level);
+ HANDLE (WINAPI *fpAddPrinterEx)(LPWSTR pName, DWORD Level, LPBYTE pPrinter,
+                 LPBYTE pClientInfo, DWORD ClientInfoLevel);
+ BOOL   (WINAPI *fpSetPort)(LPWSTR pName, LPWSTR pPortName, DWORD dwLevel,
+                 LPBYTE pPortInfo);
+ DWORD  (WINAPI *fpEnumPrinterData)( HANDLE hPrinter, DWORD dwIndex,
+                 LPWSTR pValueName, DWORD cbValueName, LPDWORD pcbValueName,
+                 LPDWORD pType, LPBYTE pData, DWORD cbData, LPDWORD pcbData);
+ DWORD  (WINAPI *fpDeletePrinterData)(HANDLE hPrinter, LPWSTR  pValueName);
+ DWORD  (WINAPI *fpClusterSplOpen)(LPCWSTR pszServer, LPCWSTR pszResource,
+                 PHANDLE phSpooler, LPCWSTR pszName, LPCWSTR pszAddress);
+ DWORD  (WINAPI *fpClusterSplClose)(HANDLE hSpooler);
+ DWORD  (WINAPI *fpClusterSplIsAlive)(HANDLE  hSpooler);
+ DWORD  (WINAPI *fpSetPrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName,
+                 LPCWSTR pValueName, DWORD Type, LPBYTE pData, DWORD cbData);
+ DWORD  (WINAPI *fpGetPrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName,
+                 LPCWSTR pValueName, LPDWORD pType, LPBYTE pData, DWORD nSize,
+                 LPDWORD pcbNeeded);
+ DWORD  (WINAPI *fpEnumPrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName,
+                 LPBYTE pEnumValues, DWORD cbEnumValues, LPDWORD pcbEnumValues,
+                 LPDWORD pnEnumValues);
+ DWORD  (WINAPI *fpEnumPrinterKey)(HANDLE hPrinter, LPCWSTR pKeyName,
+                 LPWSTR pSubkey, DWORD cbSubkey, LPDWORD  pcbSubkey);
+ DWORD  (WINAPI *fpDeletePrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName,
+                 LPCWSTR pValueName);
+ DWORD  (WINAPI *fpDeletePrinterKey)(HANDLE hPrinter, LPCWSTR pKeyName);
+ BOOL   (WINAPI *fpSeekPrinter)(HANDLE hPrinter, LARGE_INTEGER liDistanceToMove,
+                 PLARGE_INTEGER pliNewPointer, DWORD dwMoveMethod, BOOL bWrite);
+ BOOL   (WINAPI *fpDeletePrinterDriverEx)(LPWSTR pName, LPWSTR pEnvironment,
+                 LPWSTR pDriverName, DWORD dwDeleteFlag, DWORD dwVersionNum);
+ BOOL   (WINAPI *fpAddPerMachineConnection)(LPCWSTR pServer,
+                 LPCWSTR pPrinterName, LPCWSTR pPrintServer, LPCWSTR pProvider);
+ BOOL   (WINAPI *fpDeletePerMachineConnection)(LPCWSTR pServer,
+                 LPCWSTR pPrinterName);
+ BOOL   (WINAPI *fpEnumPerMachineConnections)(LPCWSTR pServer,
+                 LPBYTE pPrinterEnum, DWORD cbBuf, LPDWORD pcbNeeded,
+                 LPDWORD pcReturned);
+ BOOL   (WINAPI *fpXcvData)(HANDLE hXcv, LPCWSTR pszDataName, PBYTE pInputData,
+                 DWORD cbInputData, PBYTE pOutputData, DWORD cbOutputData,
+                 PDWORD pcbOutputNeeded, PDWORD pdwStatus);
+ BOOL   (WINAPI *fpAddPrinterDriverEx)(LPWSTR pName, DWORD Level,
+                 LPBYTE pDriverInfo, DWORD  dwFileCopyFlags);
+ BOOL   (WINAPI *fpSplReadPrinter)(HANDLE hPrinter, LPBYTE *pBuf, DWORD cbBuf);
+ BOOL   (WINAPI *fpDriverUnloadComplete)(LPWSTR pDriverFile);
+ BOOL   (WINAPI *fpGetSpoolFileInfo)(HANDLE hPrinter, LPWSTR *pSpoolDir,
+                 LPHANDLE phFile, HANDLE hSpoolerProcess, HANDLE hAppProcess);
+ BOOL   (WINAPI *fpCommitSpoolData)(HANDLE hPrinter, DWORD cbCommit);
+ BOOL   (WINAPI *fpCloseSpoolFileHandle)(HANDLE hPrinter);
+ BOOL   (WINAPI *fpFlushPrinter)(HANDLE hPrinter, LPBYTE pBuf, DWORD cbBuf,
+                 LPDWORD pcWritten, DWORD cSleep);
+ DWORD  (WINAPI *fpSendRecvBidiData)(HANDLE hPort, LPCWSTR pAction,
+                 LPBIDI_REQUEST_CONTAINER pReqData,
+                 LPBIDI_RESPONSE_CONTAINER *ppResData);
+ BOOL   (WINAPI *fpAddDriverCatalog)(HANDLE hPrinter, DWORD dwLevel,
+                 VOID *pvDriverInfCatInfo, DWORD dwCatalogCopyFlags);
+} PRINTPROVIDOR, *LPPRINTPROVIDOR;
+
+typedef struct _SPLCLIENT_INFO_1 {
+ DWORD  dwSize;
+ LPWSTR pMachineName;
+ LPWSTR pUserName;
+ DWORD  dwBuildNum;
+ DWORD  dwMajorVersion;
+ DWORD  dwMinorVersion;
+ WORD   wProcessorArchitecture;
+} SPLCLIENT_INFO_1, *LPSPLCLIENT_INFO_1, *PSPLCLIENT_INFO_1;
+
+/* DECLARATIONS */
+
+HANDLE WINAPI CreatePrinterIC(HANDLE hPrinter, LPDEVMODEW pDevMode);
+BOOL   WINAPI PlayGdiScriptOnPrinterIC(HANDLE hPrinterIC, LPBYTE pIn,
+              DWORD cIn, LPBYTE pOut, DWORD cOut, DWORD ul);
+BOOL   WINAPI DeletePrinterIC(HANDLE hPrinterIC);
+BOOL   WINAPI DevQueryPrint(HANDLE hPrinter, LPDEVMODEW pDevMode, DWORD *pResID);
+
+/* Security and Access */
+HANDLE WINAPI RevertToPrinterSelf(VOID);
+BOOL   WINAPI ImpersonatePrinterClient(HANDLE  hToken);
+BOOL   WINAPI OpenPrinterToken(PHANDLE phToken);
+BOOL   WINAPI SetPrinterToken(HANDLE hToken);
+BOOL   WINAPI ClosePrinterToken(HANDLE hToken);
+
+/* Notification */
+BOOL   WINAPI ReplyPrinterChangeNotification(HANDLE hNotify, DWORD fdwFlags,
+              PDWORD pdwResult, PVOID pPrinterNotifyInfo);
+BOOL   WINAPI PartialReplyPrinterChangeNotification(HANDLE hNotify,
+              PPRINTER_NOTIFY_INFO_DATA pInfoDataSrc);
+PPRINTER_NOTIFY_INFO RouterAllocPrinterNotifyInfo(DWORD cPrinterNotifyInfoData);
+BOOL   WINAPI RouterFreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO pInfo);
+BOOL   WINAPI AppendPrinterNotifyInfoData(PPRINTER_NOTIFY_INFO pInfoDest,
+              PPRINTER_NOTIFY_INFO_DATA pInfoDataSrc, DWORD fdwFlags);
+DWORD  WINAPI CallRouterFindFirstPrinterChangeNotification(HANDLE hPrinter,
+              DWORD fdwFlags, DWORD fdwOptions, HANDLE hNotify, PVOID pvReserved);
+
+/* Port monitor / Language monitor / Print monitor */
+LPMONITOR2  WINAPI InitializePrintMonitor2(PMONITORINIT pMonitorInit,
+                   PHANDLE phMonitor);
+PMONITORUI  WINAPI InitializePrintMonitorUI(VOID);
+LPMONITOREX WINAPI InitializePrintMonitor(LPWSTR pRegistryRoot);
+BOOL        WINAPI InitializeMonitorEx(LPWSTR pRegistryRoot, LPMONITOR pMonitor);
+BOOL        WINAPI InitializeMonitor(LPWSTR pRegistryRoot);
+
+BOOL  WINAPI OpenPort(LPWSTR pName, PHANDLE pHandle);
+BOOL  WINAPI WritePort(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuf,
+             LPDWORD pcbWritten);
+BOOL  WINAPI ReadPort(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuffer,
+             LPDWORD pcbRead);
+BOOL  WINAPI ClosePort(HANDLE hPort);
+
+/* Print processor */
+HANDLE WINAPI OpenPrintProcessor(LPWSTR pPrinterName,
+              PPRINTPROCESSOROPENDATA pPrintProcessorOpenData);
+BOOL   WINAPI PrintDocumentOnPrintProcessor(HANDLE hPrintProcessor,
+              LPWSTR pDocumentName);
+BOOL   WINAPI ClosePrintProcessor(HANDLE hPrintProcessor);
+BOOL   WINAPI ControlPrintProcessor(HANDLE hPrintProcessor, DWORD Command);
+BOOL   WINAPI InstallPrintProcessor(HWND hWnd);
+
+/* Print provider */
+BOOL   WINAPI InitializePrintProvidor(LPPRINTPROVIDOR pPrintProvidor,
+              DWORD cbPrintProvidor, LPWSTR pFullRegistryPath);
+BOOL   WINAPI ProvidorFindFirstPrinterChangeNotification(HANDLE hPrinter,
+              DWORD fdwFlags, DWORD fdwOptions, HANDLE hNotify,
+              PVOID pvReserved0, PVOID pvReserved1);
+BOOL   WINAPI ProvidorFindClosePrinterChangeNotification(HANDLE hPrinter);
+
+/* Spooler */
+BOOL   WINAPI SpoolerFindFirstPrinterChangeNotification(HANDLE hPrinter,
+              DWORD fdwFlags, DWORD fdwOptions, PHANDLE phEvent,
+              PVOID pPrinterNotifyOptions, PVOID pvReserved);
+BOOL   WINAPI SpoolerFindNextPrinterChangeNotification(HANDLE hPrinter,
+              LPDWORD pfdwChange, PVOID pvReserved0, PVOID ppPrinterNotifyInfo);
+VOID   WINAPI SpoolerFreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO pInfo);
+BOOL   WINAPI SpoolerFindClosePrinterChangeNotification(HANDLE hPrinter);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif  /* _WINSPLP_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddraw.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddraw.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddraw.h	(revision 16410)
@@ -0,0 +1,2679 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DDRAW_H
+#define __WINE_DDRAW_H
+
+#define COM_NO_WINDOWS_H
+#include <objbase.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+#ifndef	DIRECTDRAW_VERSION
+#define	DIRECTDRAW_VERSION	0x0700
+#endif /* DIRECTDRAW_VERSION */
+
+/*****************************************************************************
+ * Predeclare the interfaces
+ */
+#ifndef __DDRAW_GUID_DEFINED__
+DEFINE_GUID( CLSID_DirectDraw,		0xD7B70EE0,0x4340,0x11CF,0xB0,0x63,0x00,0x20,0xAF,0xC2,0xCD,0x35 );
+DEFINE_GUID( CLSID_DirectDraw7,         0x3C305196,0x50DB,0x11D3,0x9C,0xFE,0x00,0xC0,0x4F,0xD9,0x30,0xC5 );
+DEFINE_GUID( CLSID_DirectDrawClipper,	0x593817A0,0x7DB3,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xb9,0x33,0x56 );
+DEFINE_GUID( IID_IDirectDraw,		0x6C14DB80,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
+DEFINE_GUID( IID_IDirectDraw2,		0xB3A6F3E0,0x2B43,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56 );
+DEFINE_GUID( IID_IDirectDraw3,		0x618f8ad4,0x8b7a,0x11d0,0x8f,0xcc,0x0,0xc0,0x4f,0xd9,0x18,0x9d );
+DEFINE_GUID( IID_IDirectDraw4,          0x9c59509a,0x39bd,0x11d1,0x8c,0x4a,0x00,0xc0,0x4f,0xd9,0x30,0xc5 );
+DEFINE_GUID( IID_IDirectDraw7,          0x15e65ec0,0x3b9c,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b );
+DEFINE_GUID( IID_IDirectDrawSurface,	0x6C14DB81,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
+DEFINE_GUID( IID_IDirectDrawSurface2,	0x57805885,0x6eec,0x11cf,0x94,0x41,0xa8,0x23,0x03,0xc1,0x0e,0x27 );
+DEFINE_GUID( IID_IDirectDrawSurface3,	0xDA044E00,0x69B2,0x11D0,0xA1,0xD5,0x00,0xAA,0x00,0xB8,0xDF,0xBB );
+DEFINE_GUID( IID_IDirectDrawSurface4,   0x0B2B8630,0xAD35,0x11D0,0x8E,0xA6,0x00,0x60,0x97,0x97,0xEA,0x5B );
+DEFINE_GUID( IID_IDirectDrawSurface7,   0x06675a80,0x3b9b,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b );
+DEFINE_GUID( IID_IDirectDrawPalette,	0x6C14DB84,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
+DEFINE_GUID( IID_IDirectDrawClipper,	0x6C14DB85,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
+DEFINE_GUID( IID_IDirectDrawColorControl,0x4B9F0EE0,0x0D7E,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8 );
+DEFINE_GUID( IID_IDirectDrawGammaControl,0x69C11C3E,0xB46B,0x11D1,0xAD,0x7A,0x00,0xC0,0x4F,0xC2,0x9B,0x4E );
+#endif
+
+typedef struct IDirectDraw *LPDIRECTDRAW;
+typedef struct IDirectDraw2 *LPDIRECTDRAW2;
+typedef struct IDirectDraw3 *LPDIRECTDRAW3;
+typedef struct IDirectDraw4 *LPDIRECTDRAW4;
+typedef struct IDirectDraw7 *LPDIRECTDRAW7;
+typedef struct IDirectDrawClipper *LPDIRECTDRAWCLIPPER;
+typedef struct IDirectDrawPalette *LPDIRECTDRAWPALETTE;
+typedef struct IDirectDrawSurface *LPDIRECTDRAWSURFACE;
+typedef struct IDirectDrawSurface2 *LPDIRECTDRAWSURFACE2;
+typedef struct IDirectDrawSurface3 *LPDIRECTDRAWSURFACE3;
+typedef struct IDirectDrawSurface4 *LPDIRECTDRAWSURFACE4;
+typedef struct IDirectDrawSurface7 *LPDIRECTDRAWSURFACE7;
+typedef struct IDirectDrawColorControl *LPDIRECTDRAWCOLORCONTROL;
+typedef struct IDirectDrawGammaControl *LPDIRECTDRAWGAMMACONTROL;
+
+
+#define DDENUMRET_CANCEL	0
+#define DDENUMRET_OK		1
+
+#define DD_OK			S_OK
+#define DD_FALSE		S_FALSE
+
+
+#define _FACDD		0x876
+#define MAKE_DDHRESULT( code )  MAKE_HRESULT( 1, _FACDD, code )
+
+#define DDERR_ALREADYINITIALIZED		MAKE_DDHRESULT( 5 )
+#define DDERR_CANNOTATTACHSURFACE		MAKE_DDHRESULT( 10 )
+#define DDERR_CANNOTDETACHSURFACE		MAKE_DDHRESULT( 20 )
+#define DDERR_CURRENTLYNOTAVAIL			MAKE_DDHRESULT( 40 )
+#define DDERR_EXCEPTION				MAKE_DDHRESULT( 55 )
+#define DDERR_GENERIC				E_FAIL
+#define DDERR_HEIGHTALIGN			MAKE_DDHRESULT( 90 )
+#define DDERR_INCOMPATIBLEPRIMARY		MAKE_DDHRESULT( 95 )
+#define DDERR_INVALIDCAPS			MAKE_DDHRESULT( 100 )
+#define DDERR_INVALIDCLIPLIST			MAKE_DDHRESULT( 110 )
+#define DDERR_INVALIDMODE			MAKE_DDHRESULT( 120 )
+#define DDERR_INVALIDOBJECT			MAKE_DDHRESULT( 130 )
+#define DDERR_INVALIDPARAMS			E_INVALIDARG
+#define DDERR_INVALIDPIXELFORMAT		MAKE_DDHRESULT( 145 )
+#define DDERR_INVALIDRECT			MAKE_DDHRESULT( 150 )
+#define DDERR_LOCKEDSURFACES			MAKE_DDHRESULT( 160 )
+#define DDERR_NO3D				MAKE_DDHRESULT( 170 )
+#define DDERR_NOALPHAHW				MAKE_DDHRESULT( 180 )
+#define DDERR_NOSTEREOHARDWARE          	MAKE_DDHRESULT( 181 )
+#define DDERR_NOSURFACELEFT                     MAKE_DDHRESULT( 182 )
+#define DDERR_NOCLIPLIST			MAKE_DDHRESULT( 205 )
+#define DDERR_NOCOLORCONVHW			MAKE_DDHRESULT( 210 )
+#define DDERR_NOCOOPERATIVELEVELSET		MAKE_DDHRESULT( 212 )
+#define DDERR_NOCOLORKEY			MAKE_DDHRESULT( 215 )
+#define DDERR_NOCOLORKEYHW			MAKE_DDHRESULT( 220 )
+#define DDERR_NODIRECTDRAWSUPPORT		MAKE_DDHRESULT( 222 )
+#define DDERR_NOEXCLUSIVEMODE			MAKE_DDHRESULT( 225 )
+#define DDERR_NOFLIPHW				MAKE_DDHRESULT( 230 )
+#define DDERR_NOGDI				MAKE_DDHRESULT( 240 )
+#define DDERR_NOMIRRORHW			MAKE_DDHRESULT( 250 )
+#define DDERR_NOTFOUND				MAKE_DDHRESULT( 255 )
+#define DDERR_NOOVERLAYHW			MAKE_DDHRESULT( 260 )
+#define DDERR_OVERLAPPINGRECTS                  MAKE_DDHRESULT( 270 )
+#define DDERR_NORASTEROPHW			MAKE_DDHRESULT( 280 )
+#define DDERR_NOROTATIONHW			MAKE_DDHRESULT( 290 )
+#define DDERR_NOSTRETCHHW			MAKE_DDHRESULT( 310 )
+#define DDERR_NOT4BITCOLOR			MAKE_DDHRESULT( 316 )
+#define DDERR_NOT4BITCOLORINDEX			MAKE_DDHRESULT( 317 )
+#define DDERR_NOT8BITCOLOR			MAKE_DDHRESULT( 320 )
+#define DDERR_NOTEXTUREHW			MAKE_DDHRESULT( 330 )
+#define DDERR_NOVSYNCHW				MAKE_DDHRESULT( 335 )
+#define DDERR_NOZBUFFERHW			MAKE_DDHRESULT( 340 )
+#define DDERR_NOZOVERLAYHW			MAKE_DDHRESULT( 350 )
+#define DDERR_OUTOFCAPS				MAKE_DDHRESULT( 360 )
+#define DDERR_OUTOFMEMORY			E_OUTOFMEMORY
+#define DDERR_OUTOFVIDEOMEMORY			MAKE_DDHRESULT( 380 )
+#define DDERR_OVERLAYCANTCLIP			MAKE_DDHRESULT( 382 )
+#define DDERR_OVERLAYCOLORKEYONLYONEACTIVE	MAKE_DDHRESULT( 384 )
+#define DDERR_PALETTEBUSY			MAKE_DDHRESULT( 387 )
+#define DDERR_COLORKEYNOTSET			MAKE_DDHRESULT( 400 )
+#define DDERR_SURFACEALREADYATTACHED		MAKE_DDHRESULT( 410 )
+#define DDERR_SURFACEALREADYDEPENDENT		MAKE_DDHRESULT( 420 )
+#define DDERR_SURFACEBUSY			MAKE_DDHRESULT( 430 )
+#define DDERR_CANTLOCKSURFACE			MAKE_DDHRESULT( 435 )
+#define DDERR_SURFACEISOBSCURED			MAKE_DDHRESULT( 440 )
+#define DDERR_SURFACELOST			MAKE_DDHRESULT( 450 )
+#define DDERR_SURFACENOTATTACHED		MAKE_DDHRESULT( 460 )
+#define DDERR_TOOBIGHEIGHT			MAKE_DDHRESULT( 470 )
+#define DDERR_TOOBIGSIZE			MAKE_DDHRESULT( 480 )
+#define DDERR_TOOBIGWIDTH			MAKE_DDHRESULT( 490 )
+#define DDERR_UNSUPPORTED			E_NOTIMPL
+#define DDERR_UNSUPPORTEDFORMAT			MAKE_DDHRESULT( 510 )
+#define DDERR_UNSUPPORTEDMASK			MAKE_DDHRESULT( 520 )
+#define DDERR_INVALIDSTREAM                     MAKE_DDHRESULT( 521 )
+#define DDERR_VERTICALBLANKINPROGRESS		MAKE_DDHRESULT( 537 )
+#define DDERR_WASSTILLDRAWING			MAKE_DDHRESULT( 540 )
+#define DDERR_DDSCAPSCOMPLEXREQUIRED            MAKE_DDHRESULT( 542 )
+#define DDERR_XALIGN				MAKE_DDHRESULT( 560 )
+#define DDERR_INVALIDDIRECTDRAWGUID		MAKE_DDHRESULT( 561 )
+#define DDERR_DIRECTDRAWALREADYCREATED		MAKE_DDHRESULT( 562 )
+#define DDERR_NODIRECTDRAWHW			MAKE_DDHRESULT( 563 )
+#define DDERR_PRIMARYSURFACEALREADYEXISTS	MAKE_DDHRESULT( 564 )
+#define DDERR_NOEMULATION			MAKE_DDHRESULT( 565 )
+#define DDERR_REGIONTOOSMALL			MAKE_DDHRESULT( 566 )
+#define DDERR_CLIPPERISUSINGHWND		MAKE_DDHRESULT( 567 )
+#define DDERR_NOCLIPPERATTACHED			MAKE_DDHRESULT( 568 )
+#define DDERR_NOHWND				MAKE_DDHRESULT( 569 )
+#define DDERR_HWNDSUBCLASSED			MAKE_DDHRESULT( 570 )
+#define DDERR_HWNDALREADYSET			MAKE_DDHRESULT( 571 )
+#define DDERR_NOPALETTEATTACHED			MAKE_DDHRESULT( 572 )
+#define DDERR_NOPALETTEHW			MAKE_DDHRESULT( 573 )
+#define DDERR_BLTFASTCANTCLIP			MAKE_DDHRESULT( 574 )
+#define DDERR_NOBLTHW				MAKE_DDHRESULT( 575 )
+#define DDERR_NODDROPSHW			MAKE_DDHRESULT( 576 )
+#define DDERR_OVERLAYNOTVISIBLE			MAKE_DDHRESULT( 577 )
+#define DDERR_NOOVERLAYDEST			MAKE_DDHRESULT( 578 )
+#define DDERR_INVALIDPOSITION			MAKE_DDHRESULT( 579 )
+#define DDERR_NOTAOVERLAYSURFACE		MAKE_DDHRESULT( 580 )
+#define DDERR_EXCLUSIVEMODEALREADYSET		MAKE_DDHRESULT( 581 )
+#define DDERR_NOTFLIPPABLE			MAKE_DDHRESULT( 582 )
+#define DDERR_CANTDUPLICATE			MAKE_DDHRESULT( 583 )
+#define DDERR_NOTLOCKED				MAKE_DDHRESULT( 584 )
+#define DDERR_CANTCREATEDC			MAKE_DDHRESULT( 585 )
+#define DDERR_NODC				MAKE_DDHRESULT( 586 )
+#define DDERR_WRONGMODE				MAKE_DDHRESULT( 587 )
+#define DDERR_IMPLICITLYCREATED			MAKE_DDHRESULT( 588 )
+#define DDERR_NOTPALETTIZED			MAKE_DDHRESULT( 589 )
+#define DDERR_UNSUPPORTEDMODE			MAKE_DDHRESULT( 590 )
+#define DDERR_NOMIPMAPHW			MAKE_DDHRESULT( 591 )
+#define DDERR_INVALIDSURFACETYPE		MAKE_DDHRESULT( 592 )
+#define DDERR_NOOPTIMIZEHW			MAKE_DDHRESULT( 600 )
+#define DDERR_NOTLOADED				MAKE_DDHRESULT( 601 )
+#define DDERR_NOFOCUSWINDOW			MAKE_DDHRESULT( 602 )
+#define DDERR_NOTONMIPMAPSUBLEVEL               MAKE_DDHRESULT( 603 )
+#define DDERR_DCALREADYCREATED			MAKE_DDHRESULT( 620 )
+#define DDERR_NONONLOCALVIDMEM			MAKE_DDHRESULT( 630 )
+#define DDERR_CANTPAGELOCK			MAKE_DDHRESULT( 640 )
+#define DDERR_CANTPAGEUNLOCK			MAKE_DDHRESULT( 660 )
+#define DDERR_NOTPAGELOCKED			MAKE_DDHRESULT( 680 )
+#define DDERR_MOREDATA				MAKE_DDHRESULT( 690 )
+#define DDERR_EXPIRED                           MAKE_DDHRESULT( 691 )
+#define DDERR_TESTFINISHED                      MAKE_DDHRESULT( 692 )
+#define DDERR_NEWMODE                           MAKE_DDHRESULT( 693 )
+#define DDERR_D3DNOTINITIALIZED                 MAKE_DDHRESULT( 694 )
+#define DDERR_VIDEONOTACTIVE			MAKE_DDHRESULT( 695 )
+#define DDERR_NOMONITORINFORMATION              MAKE_DDHRESULT( 696 )
+#define DDERR_NODRIVERSUPPORT                   MAKE_DDHRESULT( 697 )
+#define DDERR_DEVICEDOESNTOWNSURFACE		MAKE_DDHRESULT( 699 )
+#define DDERR_NOTINITIALIZED			CO_E_NOTINITIALIZED
+
+/* dwFlags for Blt* */
+#define DDBLT_ALPHADEST				0x00000001
+#define DDBLT_ALPHADESTCONSTOVERRIDE		0x00000002
+#define DDBLT_ALPHADESTNEG			0x00000004
+#define DDBLT_ALPHADESTSURFACEOVERRIDE		0x00000008
+#define DDBLT_ALPHAEDGEBLEND			0x00000010
+#define DDBLT_ALPHASRC				0x00000020
+#define DDBLT_ALPHASRCCONSTOVERRIDE		0x00000040
+#define DDBLT_ALPHASRCNEG			0x00000080
+#define DDBLT_ALPHASRCSURFACEOVERRIDE		0x00000100
+#define DDBLT_ASYNC				0x00000200
+#define DDBLT_COLORFILL				0x00000400
+#define DDBLT_DDFX				0x00000800
+#define DDBLT_DDROPS				0x00001000
+#define DDBLT_KEYDEST				0x00002000
+#define DDBLT_KEYDESTOVERRIDE			0x00004000
+#define DDBLT_KEYSRC				0x00008000
+#define DDBLT_KEYSRCOVERRIDE			0x00010000
+#define DDBLT_ROP				0x00020000
+#define DDBLT_ROTATIONANGLE			0x00040000
+#define DDBLT_ZBUFFER				0x00080000
+#define DDBLT_ZBUFFERDESTCONSTOVERRIDE		0x00100000
+#define DDBLT_ZBUFFERDESTOVERRIDE		0x00200000
+#define DDBLT_ZBUFFERSRCCONSTOVERRIDE		0x00400000
+#define DDBLT_ZBUFFERSRCOVERRIDE		0x00800000
+#define DDBLT_WAIT				0x01000000
+#define DDBLT_DEPTHFILL				0x02000000
+#define DDBLT_DONOTWAIT                         0x08000000
+
+/* dwTrans for BltFast */
+#define DDBLTFAST_NOCOLORKEY			0x00000000
+#define DDBLTFAST_SRCCOLORKEY			0x00000001
+#define DDBLTFAST_DESTCOLORKEY			0x00000002
+#define DDBLTFAST_WAIT				0x00000010
+#define DDBLTFAST_DONOTWAIT                     0x00000020
+
+/* dwFlags for Flip */
+#define DDFLIP_WAIT		0x00000001
+#define DDFLIP_EVEN		0x00000002 /* only valid for overlay */
+#define DDFLIP_ODD		0x00000004 /* only valid for overlay */
+#define DDFLIP_NOVSYNC		0x00000008
+#define DDFLIP_STEREO		0x00000010
+#define DDFLIP_DONOTWAIT	0x00000020
+#define DDFLIP_INTERVAL2	0x02000000
+#define DDFLIP_INTERVAL3	0x03000000
+#define DDFLIP_INTERVAL4	0x04000000
+
+
+/* dwFlags for GetBltStatus */
+#define DDGBS_CANBLT				0x00000001
+#define DDGBS_ISBLTDONE				0x00000002
+
+/* dwFlags for IDirectDrawSurface7::GetFlipStatus */
+#define DDGFS_CANFLIP		1L
+#define DDGFS_ISFLIPDONE	2L
+
+/* dwFlags for IDirectDrawSurface7::SetPrivateData */
+#define DDSPD_IUNKNOWNPOINTER	1L
+#define DDSPD_VOLATILE		2L
+
+/* DDSCAPS.dwCaps */
+/* reserved1, was 3d capable */
+#define DDSCAPS_RESERVED1		0x00000001
+/* surface contains alpha information */
+#define DDSCAPS_ALPHA			0x00000002
+/* this surface is a backbuffer */
+#define DDSCAPS_BACKBUFFER		0x00000004
+/* complex surface structure */
+#define DDSCAPS_COMPLEX			0x00000008
+/* part of surface flipping structure */
+#define DDSCAPS_FLIP			0x00000010
+/* this surface is the frontbuffer surface */
+#define DDSCAPS_FRONTBUFFER		0x00000020
+/* this is a plain offscreen surface */
+#define DDSCAPS_OFFSCREENPLAIN		0x00000040
+/* overlay */
+#define DDSCAPS_OVERLAY			0x00000080
+/* palette objects can be created and attached to us */
+#define DDSCAPS_PALETTE			0x00000100
+/* primary surface (the one the user looks at currently)(right eye)*/
+#define DDSCAPS_PRIMARYSURFACE		0x00000200
+/* primary surface for left eye */
+#define DDSCAPS_PRIMARYSURFACELEFT	0x00000400
+/* surface exists in systemmemory */
+#define DDSCAPS_SYSTEMMEMORY		0x00000800
+/* surface can be used as a texture */
+#define DDSCAPS_TEXTURE		        0x00001000
+/* surface may be destination for 3d rendering */
+#define DDSCAPS_3DDEVICE		0x00002000
+/* surface exists in videomemory */
+#define DDSCAPS_VIDEOMEMORY		0x00004000
+/* surface changes immediately visible */
+#define DDSCAPS_VISIBLE			0x00008000
+/* write only surface */
+#define DDSCAPS_WRITEONLY		0x00010000
+/* zbuffer surface */
+#define DDSCAPS_ZBUFFER			0x00020000
+/* has its own DC */
+#define DDSCAPS_OWNDC			0x00040000
+/* surface should be able to receive live video */
+#define DDSCAPS_LIVEVIDEO		0x00080000
+/* should be able to have a hw codec decompress stuff into it */
+#define DDSCAPS_HWCODEC			0x00100000
+/* mode X (320x200 or 320x240) surface */
+#define DDSCAPS_MODEX			0x00200000
+/* one mipmap surface (1 level) */
+#define DDSCAPS_MIPMAP			0x00400000
+#define DDSCAPS_RESERVED2		0x00800000
+/* memory allocation delayed until Load() */
+#define DDSCAPS_ALLOCONLOAD		0x04000000
+/* Indicates that the surface will receive data from a video port */
+#define DDSCAPS_VIDEOPORT		0x08000000
+/* surface is in local videomemory */
+#define DDSCAPS_LOCALVIDMEM		0x10000000
+/* surface is in nonlocal videomemory */
+#define DDSCAPS_NONLOCALVIDMEM		0x20000000
+/* surface is a standard VGA mode surface (NOT ModeX) */
+#define DDSCAPS_STANDARDVGAMODE		0x40000000
+/* optimized? surface */
+#define DDSCAPS_OPTIMIZED		0x80000000
+
+typedef struct _DDSCAPS {
+	DWORD	dwCaps;	/* capabilities of surface wanted */
+} DDSCAPS,*LPDDSCAPS;
+
+/* DDSCAPS2.dwCaps2 */
+/* indicates the surface will receive data from a video port using
+   deinterlacing hardware. */
+#define DDSCAPS2_HARDWAREDEINTERLACE	0x00000002
+/* indicates the surface will be locked very frequently. */
+#define DDSCAPS2_HINTDYNAMIC		0x00000004
+/* indicates surface can be re-ordered or retiled on load() */
+#define DDSCAPS2_HINTSTATIC             0x00000008
+/* indicates surface to be managed by directdraw/direct3D */
+#define DDSCAPS2_TEXTUREMANAGE          0x00000010
+/* reserved bits */
+#define DDSCAPS2_RESERVED1              0x00000020
+#define DDSCAPS2_RESERVED2              0x00000040
+/* indicates surface will never be locked again */
+#define DDSCAPS2_OPAQUE                 0x00000080
+/* set at CreateSurface() time to indicate antialiasing will be used */
+#define DDSCAPS2_HINTANTIALIASING       0x00000100
+/* set at CreateSurface() time to indicate cubic environment map */
+#define DDSCAPS2_CUBEMAP                0x00000200
+/* face flags for cube maps */
+#define DDSCAPS2_CUBEMAP_POSITIVEX      0x00000400
+#define DDSCAPS2_CUBEMAP_NEGATIVEX      0x00000800
+#define DDSCAPS2_CUBEMAP_POSITIVEY      0x00001000
+#define DDSCAPS2_CUBEMAP_NEGATIVEY      0x00002000
+#define DDSCAPS2_CUBEMAP_POSITIVEZ      0x00004000
+#define DDSCAPS2_CUBEMAP_NEGATIVEZ      0x00008000
+/* specifies all faces of a cube for CreateSurface() */
+#define DDSCAPS2_CUBEMAP_ALLFACES ( DDSCAPS2_CUBEMAP_POSITIVEX |\
+                                    DDSCAPS2_CUBEMAP_NEGATIVEX |\
+                                    DDSCAPS2_CUBEMAP_POSITIVEY |\
+                                    DDSCAPS2_CUBEMAP_NEGATIVEY |\
+                                    DDSCAPS2_CUBEMAP_POSITIVEZ |\
+                                    DDSCAPS2_CUBEMAP_NEGATIVEZ )
+/* set for mipmap sublevels on DirectX7 and later.  ignored by CreateSurface() */
+#define DDSCAPS2_MIPMAPSUBLEVEL         0x00010000
+/* indicates texture surface to be managed by Direct3D *only* */
+#define DDSCAPS2_D3DTEXTUREMANAGE       0x00020000
+/* indicates managed surface that can safely be lost */
+#define DDSCAPS2_DONOTPERSIST           0x00040000
+/* indicates surface is part of a stereo flipping chain */
+#define DDSCAPS2_STEREOSURFACELEFT      0x00080000
+
+typedef struct _DDSCAPS2 {
+	DWORD	dwCaps;	/* capabilities of surface wanted */
+	DWORD   dwCaps2; /* additional capabilities */
+	DWORD   dwCaps3; /* reserved capabilities */
+	DWORD   dwCaps4; /* more reserved capabilities */
+} DDSCAPS2,*LPDDSCAPS2;
+
+#define	DD_ROP_SPACE	(256/32)	/* space required to store ROP array */
+
+typedef struct _DDCAPS_DX7		/* DirectX 7 version of caps struct */
+{
+    DWORD	dwSize;                 /* size of the DDDRIVERCAPS structure */
+    DWORD	dwCaps;                 /* driver specific capabilities */
+    DWORD	dwCaps2;                /* more driver specific capabilities */
+    DWORD	dwCKeyCaps;             /* color key capabilities of the surface */
+    DWORD	dwFXCaps;               /* driver specific stretching and effects capabilities */
+    DWORD	dwFXAlphaCaps;          /* alpha driver specific capabilities */
+    DWORD	dwPalCaps;              /* palette capabilities */
+    DWORD	dwSVCaps;               /* stereo vision capabilities */
+    DWORD	dwAlphaBltConstBitDepths;       /* DDBD_2,4,8 */
+    DWORD	dwAlphaBltPixelBitDepths;       /* DDBD_1,2,4,8 */
+    DWORD	dwAlphaBltSurfaceBitDepths;     /* DDBD_1,2,4,8 */
+    DWORD	dwAlphaOverlayConstBitDepths;   /* DDBD_2,4,8 */
+    DWORD	dwAlphaOverlayPixelBitDepths;   /* DDBD_1,2,4,8 */
+    DWORD	dwAlphaOverlaySurfaceBitDepths; /* DDBD_1,2,4,8 */
+    DWORD	dwZBufferBitDepths;             /* DDBD_8,16,24,32 */
+    DWORD	dwVidMemTotal;          /* total amount of video memory */
+    DWORD	dwVidMemFree;           /* amount of free video memory */
+    DWORD	dwMaxVisibleOverlays;   /* maximum number of visible overlays */
+    DWORD	dwCurrVisibleOverlays;  /* current number of visible overlays */
+    DWORD	dwNumFourCCCodes;       /* number of four cc codes */
+    DWORD	dwAlignBoundarySrc;     /* source rectangle alignment */
+    DWORD	dwAlignSizeSrc;         /* source rectangle byte size */
+    DWORD	dwAlignBoundaryDest;    /* dest rectangle alignment */
+    DWORD	dwAlignSizeDest;        /* dest rectangle byte size */
+    DWORD	dwAlignStrideAlign;     /* stride alignment */
+    DWORD	dwRops[DD_ROP_SPACE];   /* ROPs supported */
+    DDSCAPS	ddsOldCaps;             /* old DDSCAPS - superseded for DirectX6+ */
+    DWORD	dwMinOverlayStretch;    /* minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+    DWORD	dwMaxOverlayStretch;    /* maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+    DWORD	dwMinLiveVideoStretch;  /* minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+    DWORD	dwMaxLiveVideoStretch;  /* maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+    DWORD	dwMinHwCodecStretch;    /* minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+    DWORD	dwMaxHwCodecStretch;    /* maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+    DWORD	dwReserved1;
+    DWORD	dwReserved2;
+    DWORD	dwReserved3;
+    DWORD	dwSVBCaps;              /* driver specific capabilities for System->Vmem blts */
+    DWORD	dwSVBCKeyCaps;          /* driver color key capabilities for System->Vmem blts */
+    DWORD	dwSVBFXCaps;            /* driver FX capabilities for System->Vmem blts */
+    DWORD	dwSVBRops[DD_ROP_SPACE];/* ROPs supported for System->Vmem blts */
+    DWORD	dwVSBCaps;              /* driver specific capabilities for Vmem->System blts */
+    DWORD	dwVSBCKeyCaps;          /* driver color key capabilities for Vmem->System blts */
+    DWORD	dwVSBFXCaps;            /* driver FX capabilities for Vmem->System blts */
+    DWORD	dwVSBRops[DD_ROP_SPACE];/* ROPs supported for Vmem->System blts */
+    DWORD	dwSSBCaps;              /* driver specific capabilities for System->System blts */
+    DWORD	dwSSBCKeyCaps;          /* driver color key capabilities for System->System blts */
+    DWORD	dwSSBFXCaps;            /* driver FX capabilities for System->System blts */
+    DWORD	dwSSBRops[DD_ROP_SPACE];/* ROPs supported for System->System blts */
+    DWORD       dwMaxVideoPorts;        /* maximum number of usable video ports */
+    DWORD   	dwCurrVideoPorts;       /* current number of video ports used */
+    DWORD   	dwSVBCaps2;             /* more driver specific capabilities for System->Vmem blts */
+    DWORD   	dwNLVBCaps;             /* driver specific capabilities for non-local->local vidmem blts */
+    DWORD   	dwNLVBCaps2;            /* more driver specific capabilities non-local->local vidmem blts */
+    DWORD   	dwNLVBCKeyCaps;         /* driver color key capabilities for non-local->local vidmem blts */
+    DWORD   	dwNLVBFXCaps;           /* driver FX capabilities for non-local->local blts */
+    DWORD   	dwNLVBRops[DD_ROP_SPACE]; /* ROPs supported for non-local->local blts */
+    DDSCAPS2    ddsCaps;		/* surface capabilities */
+} DDCAPS_DX7,*LPDDCAPS_DX7;
+
+typedef struct _DDCAPS_DX6		/* DirectX 6 version of caps struct */
+{
+    DWORD	dwSize;                 /* size of the DDDRIVERCAPS structure */
+    DWORD	dwCaps;                 /* driver specific capabilities */
+    DWORD	dwCaps2;                /* more driver specific capabilities */
+    DWORD	dwCKeyCaps;             /* color key capabilities of the surface */
+    DWORD	dwFXCaps;               /* driver specific stretching and effects capabilities */
+    DWORD	dwFXAlphaCaps;          /* alpha driver specific capabilities */
+    DWORD	dwPalCaps;              /* palette capabilities */
+    DWORD	dwSVCaps;               /* stereo vision capabilities */
+    DWORD	dwAlphaBltConstBitDepths;       /* DDBD_2,4,8 */
+    DWORD	dwAlphaBltPixelBitDepths;       /* DDBD_1,2,4,8 */
+    DWORD	dwAlphaBltSurfaceBitDepths;     /* DDBD_1,2,4,8 */
+    DWORD	dwAlphaOverlayConstBitDepths;   /* DDBD_2,4,8 */
+    DWORD	dwAlphaOverlayPixelBitDepths;   /* DDBD_1,2,4,8 */
+    DWORD	dwAlphaOverlaySurfaceBitDepths; /* DDBD_1,2,4,8 */
+    DWORD	dwZBufferBitDepths;             /* DDBD_8,16,24,32 */
+    DWORD	dwVidMemTotal;          /* total amount of video memory */
+    DWORD	dwVidMemFree;           /* amount of free video memory */
+    DWORD	dwMaxVisibleOverlays;   /* maximum number of visible overlays */
+    DWORD	dwCurrVisibleOverlays;  /* current number of visible overlays */
+    DWORD	dwNumFourCCCodes;       /* number of four cc codes */
+    DWORD	dwAlignBoundarySrc;     /* source rectangle alignment */
+    DWORD	dwAlignSizeSrc;         /* source rectangle byte size */
+    DWORD	dwAlignBoundaryDest;    /* dest rectangle alignment */
+    DWORD	dwAlignSizeDest;        /* dest rectangle byte size */
+    DWORD	dwAlignStrideAlign;     /* stride alignment */
+    DWORD	dwRops[DD_ROP_SPACE];   /* ROPs supported */
+    DDSCAPS	ddsOldCaps;             /* old DDSCAPS - superseded for DirectX6+ */
+    DWORD	dwMinOverlayStretch;    /* minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+    DWORD	dwMaxOverlayStretch;    /* maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+    DWORD	dwMinLiveVideoStretch;  /* minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+    DWORD	dwMaxLiveVideoStretch;  /* maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+    DWORD	dwMinHwCodecStretch;    /* minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+    DWORD	dwMaxHwCodecStretch;    /* maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+    DWORD	dwReserved1;
+    DWORD	dwReserved2;
+    DWORD	dwReserved3;
+    DWORD	dwSVBCaps;              /* driver specific capabilities for System->Vmem blts */
+    DWORD	dwSVBCKeyCaps;          /* driver color key capabilities for System->Vmem blts */
+    DWORD	dwSVBFXCaps;            /* driver FX capabilities for System->Vmem blts */
+    DWORD	dwSVBRops[DD_ROP_SPACE];/* ROPs supported for System->Vmem blts */
+    DWORD	dwVSBCaps;              /* driver specific capabilities for Vmem->System blts */
+    DWORD	dwVSBCKeyCaps;          /* driver color key capabilities for Vmem->System blts */
+    DWORD	dwVSBFXCaps;            /* driver FX capabilities for Vmem->System blts */
+    DWORD	dwVSBRops[DD_ROP_SPACE];/* ROPs supported for Vmem->System blts */
+    DWORD	dwSSBCaps;              /* driver specific capabilities for System->System blts */
+    DWORD	dwSSBCKeyCaps;          /* driver color key capabilities for System->System blts */
+    DWORD	dwSSBFXCaps;            /* driver FX capabilities for System->System blts */
+    DWORD	dwSSBRops[DD_ROP_SPACE];/* ROPs supported for System->System blts */
+    DWORD       dwMaxVideoPorts;        /* maximum number of usable video ports */
+    DWORD   	dwCurrVideoPorts;       /* current number of video ports used */
+    DWORD   	dwSVBCaps2;             /* more driver specific capabilities for System->Vmem blts */
+    DWORD   	dwNLVBCaps;             /* driver specific capabilities for non-local->local vidmem blts */
+    DWORD   	dwNLVBCaps2;            /* more driver specific capabilities non-local->local vidmem blts */
+    DWORD   	dwNLVBCKeyCaps;         /* driver color key capabilities for non-local->local vidmem blts */
+    DWORD   	dwNLVBFXCaps;           /* driver FX capabilities for non-local->local blts */
+    DWORD   	dwNLVBRops[DD_ROP_SPACE]; /* ROPs supported for non-local->local blts */
+    /* and one new member for DirectX 6 */
+    DDSCAPS2    ddsCaps;		/* surface capabilities */
+} DDCAPS_DX6,*LPDDCAPS_DX6;
+
+typedef struct _DDCAPS_DX5		/* DirectX5 version of caps struct */
+{
+    DWORD	dwSize;                 /* size of the DDDRIVERCAPS structure */
+    DWORD	dwCaps;                 /* driver specific capabilities */
+    DWORD	dwCaps2;                /* more driver specific capabilities */
+    DWORD	dwCKeyCaps;             /* color key capabilities of the surface */
+    DWORD	dwFXCaps;               /* driver specific stretching and effects capabilities */
+    DWORD	dwFXAlphaCaps;          /* alpha driver specific capabilities */
+    DWORD	dwPalCaps;              /* palette capabilities */
+    DWORD	dwSVCaps;               /* stereo vision capabilities */
+    DWORD	dwAlphaBltConstBitDepths;       /* DDBD_2,4,8 */
+    DWORD	dwAlphaBltPixelBitDepths;       /* DDBD_1,2,4,8 */
+    DWORD	dwAlphaBltSurfaceBitDepths;     /* DDBD_1,2,4,8 */
+    DWORD	dwAlphaOverlayConstBitDepths;   /* DDBD_2,4,8 */
+    DWORD	dwAlphaOverlayPixelBitDepths;   /* DDBD_1,2,4,8 */
+    DWORD	dwAlphaOverlaySurfaceBitDepths; /* DDBD_1,2,4,8 */
+    DWORD	dwZBufferBitDepths;             /* DDBD_8,16,24,32 */
+    DWORD	dwVidMemTotal;          /* total amount of video memory */
+    DWORD	dwVidMemFree;           /* amount of free video memory */
+    DWORD	dwMaxVisibleOverlays;   /* maximum number of visible overlays */
+    DWORD	dwCurrVisibleOverlays;  /* current number of visible overlays */
+    DWORD	dwNumFourCCCodes;       /* number of four cc codes */
+    DWORD	dwAlignBoundarySrc;     /* source rectangle alignment */
+    DWORD	dwAlignSizeSrc;         /* source rectangle byte size */
+    DWORD	dwAlignBoundaryDest;    /* dest rectangle alignment */
+    DWORD	dwAlignSizeDest;        /* dest rectangle byte size */
+    DWORD	dwAlignStrideAlign;     /* stride alignment */
+    DWORD	dwRops[DD_ROP_SPACE];   /* ROPs supported */
+    DDSCAPS	ddsCaps;                /* DDSCAPS structure has all the general capabilities */
+    DWORD	dwMinOverlayStretch;    /* minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+    DWORD	dwMaxOverlayStretch;    /* maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+    DWORD	dwMinLiveVideoStretch;  /* minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+    DWORD	dwMaxLiveVideoStretch;  /* maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+    DWORD	dwMinHwCodecStretch;    /* minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+    DWORD	dwMaxHwCodecStretch;    /* maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+    DWORD	dwReserved1;
+    DWORD	dwReserved2;
+    DWORD	dwReserved3;
+    DWORD	dwSVBCaps;              /* driver specific capabilities for System->Vmem blts */
+    DWORD	dwSVBCKeyCaps;          /* driver color key capabilities for System->Vmem blts */
+    DWORD	dwSVBFXCaps;            /* driver FX capabilities for System->Vmem blts */
+    DWORD	dwSVBRops[DD_ROP_SPACE];/* ROPs supported for System->Vmem blts */
+    DWORD	dwVSBCaps;              /* driver specific capabilities for Vmem->System blts */
+    DWORD	dwVSBCKeyCaps;          /* driver color key capabilities for Vmem->System blts */
+    DWORD	dwVSBFXCaps;            /* driver FX capabilities for Vmem->System blts */
+    DWORD	dwVSBRops[DD_ROP_SPACE];/* ROPs supported for Vmem->System blts */
+    DWORD	dwSSBCaps;              /* driver specific capabilities for System->System blts */
+    DWORD	dwSSBCKeyCaps;          /* driver color key capabilities for System->System blts */
+    DWORD	dwSSBFXCaps;            /* driver FX capabilities for System->System blts */
+    DWORD	dwSSBRops[DD_ROP_SPACE];/* ROPs supported for System->System blts */
+    /* the following are the new DirectX 5 members */
+    DWORD       dwMaxVideoPorts;        /* maximum number of usable video ports */
+    DWORD   	dwCurrVideoPorts;       /* current number of video ports used */
+    DWORD   	dwSVBCaps2;             /* more driver specific capabilities for System->Vmem blts */
+    DWORD   	dwNLVBCaps;             /* driver specific capabilities for non-local->local vidmem blts */
+    DWORD   	dwNLVBCaps2;            /* more driver specific capabilities non-local->local vidmem blts */
+    DWORD   	dwNLVBCKeyCaps;         /* driver color key capabilities for non-local->local vidmem blts */
+    DWORD   	dwNLVBFXCaps;           /* driver FX capabilities for non-local->local blts */
+    DWORD   	dwNLVBRops[DD_ROP_SPACE]; /* ROPs supported for non-local->local blts */
+} DDCAPS_DX5,*LPDDCAPS_DX5;
+
+typedef struct _DDCAPS_DX3		/* DirectX3 version of caps struct */
+{
+    DWORD	dwSize;                 /* size of the DDDRIVERCAPS structure */
+    DWORD	dwCaps;                 /* driver specific capabilities */
+    DWORD	dwCaps2;                /* more driver specific capabilities */
+    DWORD	dwCKeyCaps;             /* color key capabilities of the surface */
+    DWORD	dwFXCaps;               /* driver specific stretching and effects capabilities */
+    DWORD	dwFXAlphaCaps;          /* alpha driver specific capabilities */
+    DWORD	dwPalCaps;              /* palette capabilities */
+    DWORD	dwSVCaps;               /* stereo vision capabilities */
+    DWORD	dwAlphaBltConstBitDepths;       /* DDBD_2,4,8 */
+    DWORD	dwAlphaBltPixelBitDepths;       /* DDBD_1,2,4,8 */
+    DWORD	dwAlphaBltSurfaceBitDepths;     /* DDBD_1,2,4,8 */
+    DWORD	dwAlphaOverlayConstBitDepths;   /* DDBD_2,4,8 */
+    DWORD	dwAlphaOverlayPixelBitDepths;   /* DDBD_1,2,4,8 */
+    DWORD	dwAlphaOverlaySurfaceBitDepths; /* DDBD_1,2,4,8 */
+    DWORD	dwZBufferBitDepths;             /* DDBD_8,16,24,32 */
+    DWORD	dwVidMemTotal;          /* total amount of video memory */
+    DWORD	dwVidMemFree;           /* amount of free video memory */
+    DWORD	dwMaxVisibleOverlays;   /* maximum number of visible overlays */
+    DWORD	dwCurrVisibleOverlays;  /* current number of visible overlays */
+    DWORD	dwNumFourCCCodes;       /* number of four cc codes */
+    DWORD	dwAlignBoundarySrc;     /* source rectangle alignment */
+    DWORD	dwAlignSizeSrc;         /* source rectangle byte size */
+    DWORD	dwAlignBoundaryDest;    /* dest rectangle alignment */
+    DWORD	dwAlignSizeDest;        /* dest rectangle byte size */
+    DWORD	dwAlignStrideAlign;     /* stride alignment */
+    DWORD	dwRops[DD_ROP_SPACE];   /* ROPs supported */
+    DDSCAPS	ddsCaps;                /* DDSCAPS structure has all the general capabilities */
+    DWORD	dwMinOverlayStretch;    /* minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+    DWORD	dwMaxOverlayStretch;    /* maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+    DWORD	dwMinLiveVideoStretch;  /* minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+    DWORD	dwMaxLiveVideoStretch;  /* maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+    DWORD	dwMinHwCodecStretch;    /* minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+    DWORD	dwMaxHwCodecStretch;    /* maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+    DWORD	dwReserved1;
+    DWORD	dwReserved2;
+    DWORD	dwReserved3;
+    DWORD	dwSVBCaps;              /* driver specific capabilities for System->Vmem blts */
+    DWORD	dwSVBCKeyCaps;          /* driver color key capabilities for System->Vmem blts */
+    DWORD	dwSVBFXCaps;            /* driver FX capabilities for System->Vmem blts */
+    DWORD	dwSVBRops[DD_ROP_SPACE];/* ROPs supported for System->Vmem blts */
+    DWORD	dwVSBCaps;              /* driver specific capabilities for Vmem->System blts */
+    DWORD	dwVSBCKeyCaps;          /* driver color key capabilities for Vmem->System blts */
+    DWORD	dwVSBFXCaps;            /* driver FX capabilities for Vmem->System blts */
+    DWORD	dwVSBRops[DD_ROP_SPACE];/* ROPs supported for Vmem->System blts */
+    DWORD	dwSSBCaps;              /* driver specific capabilities for System->System blts */
+    DWORD	dwSSBCKeyCaps;          /* driver color key capabilities for System->System blts */
+    DWORD	dwSSBFXCaps;            /* driver FX capabilities for System->System blts */
+    DWORD	dwSSBRops[DD_ROP_SPACE];/* ROPs supported for System->System blts */
+    DWORD	dwReserved4;
+    DWORD	dwReserved5;
+    DWORD	dwReserved6;
+} DDCAPS_DX3,*LPDDCAPS_DX3;
+
+/* set caps struct according to DIRECTDRAW_VERSION */
+
+#if DIRECTDRAW_VERSION <= 0x300
+typedef DDCAPS_DX3 DDCAPS;
+#elif DIRECTDRAW_VERSION <= 0x500
+typedef DDCAPS_DX5 DDCAPS;
+#elif DIRECTDRAW_VERSION <= 0x600
+typedef DDCAPS_DX6 DDCAPS;
+#else
+typedef DDCAPS_DX7 DDCAPS;
+#endif
+
+typedef DDCAPS *LPDDCAPS;
+
+/* DDCAPS.dwCaps */
+#define DDCAPS_3D			0x00000001
+#define DDCAPS_ALIGNBOUNDARYDEST	0x00000002
+#define DDCAPS_ALIGNSIZEDEST		0x00000004
+#define DDCAPS_ALIGNBOUNDARYSRC		0x00000008
+#define DDCAPS_ALIGNSIZESRC		0x00000010
+#define DDCAPS_ALIGNSTRIDE		0x00000020
+#define DDCAPS_BLT			0x00000040
+#define DDCAPS_BLTQUEUE			0x00000080
+#define DDCAPS_BLTFOURCC		0x00000100
+#define DDCAPS_BLTSTRETCH		0x00000200
+#define DDCAPS_GDI			0x00000400
+#define DDCAPS_OVERLAY			0x00000800
+#define DDCAPS_OVERLAYCANTCLIP		0x00001000
+#define DDCAPS_OVERLAYFOURCC		0x00002000
+#define DDCAPS_OVERLAYSTRETCH		0x00004000
+#define DDCAPS_PALETTE			0x00008000
+#define DDCAPS_PALETTEVSYNC		0x00010000
+#define DDCAPS_READSCANLINE		0x00020000
+#define DDCAPS_STEREOVIEW		0x00040000
+#define DDCAPS_VBI			0x00080000
+#define DDCAPS_ZBLTS			0x00100000
+#define DDCAPS_ZOVERLAYS		0x00200000
+#define DDCAPS_COLORKEY			0x00400000
+#define DDCAPS_ALPHA			0x00800000
+#define DDCAPS_COLORKEYHWASSIST		0x01000000
+#define DDCAPS_NOHARDWARE		0x02000000
+#define DDCAPS_BLTCOLORFILL		0x04000000
+#define DDCAPS_BANKSWITCHED		0x08000000
+#define DDCAPS_BLTDEPTHFILL		0x10000000
+#define DDCAPS_CANCLIP			0x20000000
+#define DDCAPS_CANCLIPSTRETCHED		0x40000000
+#define DDCAPS_CANBLTSYSMEM		0x80000000
+
+/* DDCAPS.dwCaps2 */
+#define DDCAPS2_CERTIFIED		0x00000001
+#define DDCAPS2_NO2DDURING3DSCENE       0x00000002
+#define DDCAPS2_VIDEOPORT		0x00000004
+#define DDCAPS2_AUTOFLIPOVERLAY		0x00000008
+#define DDCAPS2_CANBOBINTERLEAVED	0x00000010
+#define DDCAPS2_CANBOBNONINTERLEAVED	0x00000020
+#define DDCAPS2_COLORCONTROLOVERLAY	0x00000040
+#define DDCAPS2_COLORCONTROLPRIMARY	0x00000080
+#define DDCAPS2_CANDROPZ16BIT		0x00000100
+#define DDCAPS2_NONLOCALVIDMEM		0x00000200
+#define DDCAPS2_NONLOCALVIDMEMCAPS	0x00000400
+#define DDCAPS2_NOPAGELOCKREQUIRED	0x00000800
+#define DDCAPS2_WIDESURFACES		0x00001000
+#define DDCAPS2_CANFLIPODDEVEN		0x00002000
+#define DDCAPS2_CANBOBHARDWARE		0x00004000
+#define DDCAPS2_COPYFOURCC              0x00008000
+#define DDCAPS2_PRIMARYGAMMA            0x00020000
+#define DDCAPS2_CANRENDERWINDOWED       0x00080000
+#define DDCAPS2_CANCALIBRATEGAMMA       0x00100000
+#define DDCAPS2_FLIPINTERVAL            0x00200000
+#define DDCAPS2_FLIPNOVSYNC             0x00400000
+#define DDCAPS2_CANMANAGETEXTURE        0x00800000
+#define DDCAPS2_TEXMANINNONLOCALVIDMEM  0x01000000
+#define DDCAPS2_STEREO                  0x02000000
+#define DDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL   0x04000000
+
+
+/* Set/Get Colour Key Flags */
+#define DDCKEY_COLORSPACE  0x00000001  /* Struct is single colour space */
+#define DDCKEY_DESTBLT     0x00000002  /* To be used as dest for blt */
+#define DDCKEY_DESTOVERLAY 0x00000004  /* To be used as dest for CK overlays */
+#define DDCKEY_SRCBLT      0x00000008  /* To be used as src for blt */
+#define DDCKEY_SRCOVERLAY  0x00000010  /* To be used as src for CK overlays */
+
+typedef struct _DDCOLORKEY
+{
+	DWORD	dwColorSpaceLowValue;/* low boundary of color space that is to
+                                      * be treated as Color Key, inclusive
+				      */
+	DWORD	dwColorSpaceHighValue;/* high boundary of color space that is
+                                       * to be treated as Color Key, inclusive
+				       */
+} DDCOLORKEY,*LPDDCOLORKEY;
+
+/* ddCKEYCAPS bits */
+#define DDCKEYCAPS_DESTBLT			0x00000001
+#define DDCKEYCAPS_DESTBLTCLRSPACE		0x00000002
+#define DDCKEYCAPS_DESTBLTCLRSPACEYUV		0x00000004
+#define DDCKEYCAPS_DESTBLTYUV			0x00000008
+#define DDCKEYCAPS_DESTOVERLAY			0x00000010
+#define DDCKEYCAPS_DESTOVERLAYCLRSPACE		0x00000020
+#define DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV	0x00000040
+#define DDCKEYCAPS_DESTOVERLAYONEACTIVE		0x00000080
+#define DDCKEYCAPS_DESTOVERLAYYUV		0x00000100
+#define DDCKEYCAPS_SRCBLT			0x00000200
+#define DDCKEYCAPS_SRCBLTCLRSPACE		0x00000400
+#define DDCKEYCAPS_SRCBLTCLRSPACEYUV		0x00000800
+#define DDCKEYCAPS_SRCBLTYUV			0x00001000
+#define DDCKEYCAPS_SRCOVERLAY			0x00002000
+#define DDCKEYCAPS_SRCOVERLAYCLRSPACE		0x00004000
+#define DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV	0x00008000
+#define DDCKEYCAPS_SRCOVERLAYONEACTIVE		0x00010000
+#define DDCKEYCAPS_SRCOVERLAYYUV		0x00020000
+#define DDCKEYCAPS_NOCOSTOVERLAY		0x00040000
+
+typedef struct _DDPIXELFORMAT {
+    DWORD	dwSize;                 /* 0: size of structure */
+    DWORD	dwFlags;                /* 4: pixel format flags */
+    DWORD	dwFourCC;               /* 8: (FOURCC code) */
+    union {
+	DWORD	dwRGBBitCount;          /* C: how many bits per pixel */
+	DWORD	dwYUVBitCount;          /* C: how many bits per pixel */
+	DWORD	dwZBufferBitDepth;      /* C: how many bits for z buffers */
+	DWORD	dwAlphaBitDepth;        /* C: how many bits for alpha channels*/
+	DWORD	dwLuminanceBitCount;
+	DWORD	dwBumpBitCount;
+    } DUMMYUNIONNAME1;
+    union {
+	DWORD	dwRBitMask;             /* 10: mask for red bit*/
+	DWORD	dwYBitMask;             /* 10: mask for Y bits*/
+	DWORD	dwStencilBitDepth;
+	DWORD	dwLuminanceBitMask;
+	DWORD	dwBumpDuBitMask;
+    } DUMMYUNIONNAME2;
+    union {
+	DWORD	dwGBitMask;             /* 14: mask for green bits*/
+	DWORD	dwUBitMask;             /* 14: mask for U bits*/
+	DWORD	dwZBitMask;
+	DWORD	dwBumpDvBitMask;
+    } DUMMYUNIONNAME3;
+    union {
+	DWORD   dwBBitMask;             /* 18: mask for blue bits*/
+	DWORD   dwVBitMask;             /* 18: mask for V bits*/
+	DWORD	dwStencilBitMask;
+	DWORD	dwBumpLuminanceBitMask;
+    } DUMMYUNIONNAME4;
+    union {
+    	DWORD	dwRGBAlphaBitMask;	/* 1C: mask for alpha channel */
+    	DWORD	dwYUVAlphaBitMask;	/* 1C: mask for alpha channel */
+	DWORD	dwLuminanceAlphaBitMask;
+	DWORD	dwRGBZBitMask;		/* 1C: mask for Z channel */
+	DWORD	dwYUVZBitMask;		/* 1C: mask for Z channel */
+    } DUMMYUNIONNAME5;
+    					/* 20: next structure */
+} DDPIXELFORMAT,*LPDDPIXELFORMAT;
+
+#define MAKEFOURCC(ch0, ch1, ch2, ch3)  \
+    ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) |  \
+    ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
+
+/* DDCAPS.dwFXCaps */
+#define DDFXCAPS_BLTALPHA               0x00000001
+#define DDFXCAPS_OVERLAYALPHA           0x00000004
+#define DDFXCAPS_BLTARITHSTRETCHYN	0x00000010
+#define DDFXCAPS_BLTARITHSTRETCHY	0x00000020
+#define DDFXCAPS_BLTMIRRORLEFTRIGHT	0x00000040
+#define DDFXCAPS_BLTMIRRORUPDOWN	0x00000080
+#define DDFXCAPS_BLTROTATION		0x00000100
+#define DDFXCAPS_BLTROTATION90		0x00000200
+#define DDFXCAPS_BLTSHRINKX		0x00000400
+#define DDFXCAPS_BLTSHRINKXN		0x00000800
+#define DDFXCAPS_BLTSHRINKY		0x00001000
+#define DDFXCAPS_BLTSHRINKYN		0x00002000
+#define DDFXCAPS_BLTSTRETCHX		0x00004000
+#define DDFXCAPS_BLTSTRETCHXN		0x00008000
+#define DDFXCAPS_BLTSTRETCHY		0x00010000
+#define DDFXCAPS_BLTSTRETCHYN		0x00020000
+#define DDFXCAPS_OVERLAYARITHSTRETCHY	0x00040000
+#define DDFXCAPS_OVERLAYARITHSTRETCHYN	0x00000008
+#define DDFXCAPS_OVERLAYSHRINKX		0x00080000
+#define DDFXCAPS_OVERLAYSHRINKXN	0x00100000
+#define DDFXCAPS_OVERLAYSHRINKY		0x00200000
+#define DDFXCAPS_OVERLAYSHRINKYN	0x00400000
+#define DDFXCAPS_OVERLAYSTRETCHX	0x00800000
+#define DDFXCAPS_OVERLAYSTRETCHXN	0x01000000
+#define DDFXCAPS_OVERLAYSTRETCHY	0x02000000
+#define DDFXCAPS_OVERLAYSTRETCHYN	0x04000000
+#define DDFXCAPS_OVERLAYMIRRORLEFTRIGHT	0x08000000
+#define DDFXCAPS_OVERLAYMIRRORUPDOWN	0x10000000
+
+#define DDFXCAPS_OVERLAYFILTER          DDFXCAPS_OVERLAYARITHSTRETCHY
+
+/* DDCAPS.dwFXAlphaCaps */
+#define DDFXALPHACAPS_BLTALPHAEDGEBLEND		0x00000001
+#define DDFXALPHACAPS_BLTALPHAPIXELS		0x00000002
+#define DDFXALPHACAPS_BLTALPHAPIXELSNEG		0x00000004
+#define DDFXALPHACAPS_BLTALPHASURFACES		0x00000008
+#define DDFXALPHACAPS_BLTALPHASURFACESNEG	0x00000010
+#define DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND	0x00000020
+#define DDFXALPHACAPS_OVERLAYALPHAPIXELS	0x00000040
+#define DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG	0x00000080
+#define DDFXALPHACAPS_OVERLAYALPHASURFACES	0x00000100
+#define DDFXALPHACAPS_OVERLAYALPHASURFACESNEG	0x00000200
+
+/* DDCAPS.dwPalCaps */
+#define DDPCAPS_4BIT			0x00000001
+#define DDPCAPS_8BITENTRIES		0x00000002
+#define DDPCAPS_8BIT			0x00000004
+#define DDPCAPS_INITIALIZE		0x00000008
+#define DDPCAPS_PRIMARYSURFACE		0x00000010
+#define DDPCAPS_PRIMARYSURFACELEFT	0x00000020
+#define DDPCAPS_ALLOW256		0x00000040
+#define DDPCAPS_VSYNC			0x00000080
+#define DDPCAPS_1BIT			0x00000100
+#define DDPCAPS_2BIT			0x00000200
+#define DDPCAPS_ALPHA                   0x00000400
+
+/* DDCAPS.dwSVCaps */
+/* the first 4 of these are now obsolete */
+#if DIRECTDRAW_VERSION >= 0x700	/* FIXME: I'm not sure when this switch occurred */
+#define DDSVCAPS_RESERVED1		0x00000001
+#define DDSVCAPS_RESERVED2		0x00000002
+#define DDSVCAPS_RESERVED3		0x00000004
+#define DDSVCAPS_RESERVED4		0x00000008
+#else
+#define DDSVCAPS_ENIGMA			0x00000001
+#define DDSVCAPS_FLICKER		0x00000002
+#define DDSVCAPS_REDBLUE		0x00000004
+#define DDSVCAPS_SPLIT			0x00000008
+#endif
+#define DDSVCAPS_STEREOSEQUENTIAL       0x00000010
+
+/* BitDepths */
+#define DDBD_1				0x00004000
+#define DDBD_2				0x00002000
+#define DDBD_4				0x00001000
+#define DDBD_8				0x00000800
+#define DDBD_16				0x00000400
+#define DDBD_24				0x00000200
+#define DDBD_32				0x00000100
+
+/* DDOVERLAYFX.dwDDFX */
+#define DDOVERFX_ARITHSTRETCHY		0x00000001
+#define DDOVERFX_MIRRORLEFTRIGHT	0x00000002
+#define DDOVERFX_MIRRORUPDOWN		0x00000004
+
+/* UpdateOverlay flags */
+#define DDOVER_ALPHADEST                        0x00000001
+#define DDOVER_ALPHADESTCONSTOVERRIDE           0x00000002
+#define DDOVER_ALPHADESTNEG                     0x00000004
+#define DDOVER_ALPHADESTSURFACEOVERRIDE         0x00000008
+#define DDOVER_ALPHAEDGEBLEND                   0x00000010
+#define DDOVER_ALPHASRC                         0x00000020
+#define DDOVER_ALPHASRCCONSTOVERRIDE            0x00000040
+#define DDOVER_ALPHASRCNEG                      0x00000080
+#define DDOVER_ALPHASRCSURFACEOVERRIDE          0x00000100
+#define DDOVER_HIDE                             0x00000200
+#define DDOVER_KEYDEST                          0x00000400
+#define DDOVER_KEYDESTOVERRIDE                  0x00000800
+#define DDOVER_KEYSRC                           0x00001000
+#define DDOVER_KEYSRCOVERRIDE                   0x00002000
+#define DDOVER_SHOW                             0x00004000
+#define DDOVER_ADDDIRTYRECT                     0x00008000
+#define DDOVER_REFRESHDIRTYRECTS                0x00010000
+#define DDOVER_REFRESHALL                       0x00020000
+#define DDOVER_DDFX                             0x00080000
+#define DDOVER_AUTOFLIP                         0x00100000
+#define DDOVER_BOB                              0x00200000
+#define DDOVER_OVERRIDEBOBWEAVE                 0x00400000
+#define DDOVER_INTERLEAVED                      0x00800000
+
+/* DDCOLORKEY.dwFlags */
+#define DDPF_ALPHAPIXELS		0x00000001
+#define DDPF_ALPHA			0x00000002
+#define DDPF_FOURCC			0x00000004
+#define DDPF_PALETTEINDEXED4		0x00000008
+#define DDPF_PALETTEINDEXEDTO8		0x00000010
+#define DDPF_PALETTEINDEXED8		0x00000020
+#define DDPF_RGB			0x00000040
+#define DDPF_COMPRESSED			0x00000080
+#define DDPF_RGBTOYUV			0x00000100
+#define DDPF_YUV			0x00000200
+#define DDPF_ZBUFFER			0x00000400
+#define DDPF_PALETTEINDEXED1		0x00000800
+#define DDPF_PALETTEINDEXED2		0x00001000
+#define DDPF_ZPIXELS			0x00002000
+#define DDPF_STENCILBUFFER              0x00004000
+#define DDPF_ALPHAPREMULT               0x00008000
+#define DDPF_LUMINANCE                  0x00020000
+#define DDPF_BUMPLUMINANCE              0x00040000
+#define DDPF_BUMPDUDV                   0x00080000
+
+/* SetCooperativeLevel dwFlags */
+#define DDSCL_FULLSCREEN		0x00000001
+#define DDSCL_ALLOWREBOOT		0x00000002
+#define DDSCL_NOWINDOWCHANGES		0x00000004
+#define DDSCL_NORMAL			0x00000008
+#define DDSCL_EXCLUSIVE			0x00000010
+#define DDSCL_ALLOWMODEX		0x00000040
+#define DDSCL_SETFOCUSWINDOW		0x00000080
+#define DDSCL_SETDEVICEWINDOW		0x00000100
+#define DDSCL_CREATEDEVICEWINDOW	0x00000200
+#define DDSCL_MULTITHREADED             0x00000400
+#define DDSCL_FPUSETUP                  0x00000800
+#define DDSCL_FPUPRESERVE               0x00001000
+
+
+/* DDSURFACEDESC.dwFlags */
+#define	DDSD_CAPS		0x00000001
+#define	DDSD_HEIGHT		0x00000002
+#define	DDSD_WIDTH		0x00000004
+#define	DDSD_PITCH		0x00000008
+#define	DDSD_BACKBUFFERCOUNT	0x00000020
+#define	DDSD_ZBUFFERBITDEPTH	0x00000040
+#define	DDSD_ALPHABITDEPTH	0x00000080
+#define	DDSD_LPSURFACE		0x00000800
+#define	DDSD_PIXELFORMAT	0x00001000
+#define	DDSD_CKDESTOVERLAY	0x00002000
+#define	DDSD_CKDESTBLT		0x00004000
+#define	DDSD_CKSRCOVERLAY	0x00008000
+#define	DDSD_CKSRCBLT		0x00010000
+#define	DDSD_MIPMAPCOUNT	0x00020000
+#define	DDSD_REFRESHRATE	0x00040000
+#define	DDSD_LINEARSIZE		0x00080000
+#define DDSD_TEXTURESTAGE       0x00100000
+#define DDSD_FVF                0x00200000
+#define DDSD_SRCVBHANDLE        0x00400000
+#define	DDSD_ALL		0x007ff9ee
+
+/* EnumSurfaces flags */
+#define DDENUMSURFACES_ALL          0x00000001
+#define DDENUMSURFACES_MATCH        0x00000002
+#define DDENUMSURFACES_NOMATCH      0x00000004
+#define DDENUMSURFACES_CANBECREATED 0x00000008
+#define DDENUMSURFACES_DOESEXIST    0x00000010
+
+/* SetDisplayMode flags */
+#define DDSDM_STANDARDVGAMODE	0x00000001
+
+/* EnumDisplayModes flags */
+#define DDEDM_REFRESHRATES	0x00000001
+#define DDEDM_STANDARDVGAMODES	0x00000002
+
+/* WaitForVerticalDisplay flags */
+
+#define DDWAITVB_BLOCKBEGIN		0x00000001
+#define DDWAITVB_BLOCKBEGINEVENT	0x00000002
+#define DDWAITVB_BLOCKEND		0x00000004
+
+typedef struct _DDSURFACEDESC
+{
+	DWORD	dwSize;		/* 0: size of the DDSURFACEDESC structure*/
+	DWORD	dwFlags;	/* 4: determines what fields are valid*/
+	DWORD	dwHeight;	/* 8: height of surface to be created*/
+	DWORD	dwWidth;	/* C: width of input surface*/
+	union {
+		LONG	lPitch;	/* 10: distance to start of next line (return value only)*/
+		DWORD	dwLinearSize;
+	} DUMMYUNIONNAME1;
+	DWORD	dwBackBufferCount;/* 14: number of back buffers requested*/
+	union {
+		DWORD	dwMipMapCount;/* 18:number of mip-map levels requested*/
+		DWORD	dwZBufferBitDepth;/*18: depth of Z buffer requested*/
+		DWORD	dwRefreshRate;/* 18:refresh rate (used when display mode is described)*/
+	} DUMMYUNIONNAME2;
+	DWORD	dwAlphaBitDepth;/* 1C:depth of alpha buffer requested*/
+	DWORD	dwReserved;	/* 20:reserved*/
+	LPVOID	lpSurface;	/* 24:pointer to the associated surface memory*/
+	DDCOLORKEY	ddckCKDestOverlay;/* 28: CK for dest overlay use*/
+	DDCOLORKEY	ddckCKDestBlt;	/* 30: CK for destination blt use*/
+	DDCOLORKEY	ddckCKSrcOverlay;/* 38: CK for source overlay use*/
+	DDCOLORKEY	ddckCKSrcBlt;	/* 40: CK for source blt use*/
+	DDPIXELFORMAT	ddpfPixelFormat;/* 48: pixel format description of the surface*/
+	DDSCAPS		ddsCaps;	/* 68: direct draw surface caps */
+} DDSURFACEDESC,*LPDDSURFACEDESC;
+
+typedef struct _DDSURFACEDESC2
+{
+	DWORD	dwSize;		/* 0: size of the DDSURFACEDESC2 structure*/
+	DWORD	dwFlags;	/* 4: determines what fields are valid*/
+	DWORD	dwHeight;	/* 8: height of surface to be created*/
+	DWORD	dwWidth;	/* C: width of input surface*/
+	union {
+		LONG	lPitch;	      /*10: distance to start of next line (return value only)*/
+		DWORD   dwLinearSize; /*10: formless late-allocated optimized surface size */
+	} DUMMYUNIONNAME1;
+	DWORD	dwBackBufferCount;/* 14: number of back buffers requested*/
+	union {
+		DWORD	dwMipMapCount;/* 18:number of mip-map levels requested*/
+		DWORD	dwRefreshRate;/* 18:refresh rate (used when display mode is described)*/
+		DWORD   dwSrcVBHandle;/* 18:source used in VB::Optimize */
+	} DUMMYUNIONNAME2;
+	DWORD	dwAlphaBitDepth;/* 1C:depth of alpha buffer requested*/
+	DWORD	dwReserved;	/* 20:reserved*/
+	LPVOID	lpSurface;	/* 24:pointer to the associated surface memory*/
+	union {
+		DDCOLORKEY	ddckCKDestOverlay; /* 28: CK for dest overlay use*/
+		DWORD 		dwEmptyFaceColor;  /* 28: color for empty cubemap faces */
+	} DUMMYUNIONNAME3;
+	DDCOLORKEY	ddckCKDestBlt;	/* 30: CK for destination blt use*/
+	DDCOLORKEY	ddckCKSrcOverlay;/* 38: CK for source overlay use*/
+	DDCOLORKEY	ddckCKSrcBlt;	/* 40: CK for source blt use*/
+
+	union {
+		DDPIXELFORMAT	ddpfPixelFormat;/* 48: pixel format description of the surface*/
+		DWORD 		dwFVF;	/* 48: vertex format description of vertex buffers */
+	} DUMMYUNIONNAME4;
+	DDSCAPS2	ddsCaps;  /* 68: DDraw surface caps */
+	DWORD		dwTextureStage; /* 78: stage in multitexture cascade */
+} DDSURFACEDESC2,*LPDDSURFACEDESC2;
+
+/* DDCOLORCONTROL.dwFlags */
+#define DDCOLOR_BRIGHTNESS	0x00000001
+#define DDCOLOR_CONTRAST	0x00000002
+#define DDCOLOR_HUE		0x00000004
+#define DDCOLOR_SATURATION	0x00000008
+#define DDCOLOR_SHARPNESS	0x00000010
+#define DDCOLOR_GAMMA		0x00000020
+#define DDCOLOR_COLORENABLE	0x00000040
+
+typedef struct {
+	DWORD	dwSize;
+	DWORD	dwFlags;
+	LONG	lBrightness;
+	LONG	lContrast;
+	LONG	lHue;
+	LONG	lSaturation;
+	LONG	lSharpness;
+	LONG	lGamma;
+	LONG	lColorEnable;
+	DWORD	dwReserved1;
+} DDCOLORCONTROL,*LPDDCOLORCONTROL;
+
+typedef struct {
+	WORD	red[256];
+	WORD	green[256];
+	WORD	blue[256];
+} DDGAMMARAMP,*LPDDGAMMARAMP;
+
+typedef BOOL (CALLBACK *LPDDENUMCALLBACKA)(GUID *, LPSTR, LPSTR, LPVOID);
+typedef BOOL (CALLBACK *LPDDENUMCALLBACKW)(GUID *, LPWSTR, LPWSTR, LPVOID);
+DECL_WINELIB_TYPE_AW(LPDDENUMCALLBACK)
+
+typedef HRESULT (CALLBACK *LPDDENUMMODESCALLBACK)(LPDDSURFACEDESC, LPVOID);
+typedef HRESULT (CALLBACK *LPDDENUMMODESCALLBACK2)(LPDDSURFACEDESC2, LPVOID);
+typedef HRESULT (CALLBACK *LPDDENUMSURFACESCALLBACK)(LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, LPVOID);
+typedef HRESULT (CALLBACK *LPDDENUMSURFACESCALLBACK2)(LPDIRECTDRAWSURFACE4, LPDDSURFACEDESC2, LPVOID);
+typedef HRESULT (CALLBACK *LPDDENUMSURFACESCALLBACK7)(LPDIRECTDRAWSURFACE7, LPDDSURFACEDESC2, LPVOID);
+
+typedef BOOL (CALLBACK *LPDDENUMCALLBACKEXA)(GUID *, LPSTR, LPSTR, LPVOID, HMONITOR);
+typedef BOOL (CALLBACK *LPDDENUMCALLBACKEXW)(GUID *, LPWSTR, LPWSTR, LPVOID, HMONITOR);
+DECL_WINELIB_TYPE_AW(LPDDENUMCALLBACKEX)
+
+HRESULT WINAPI DirectDrawEnumerateA(LPDDENUMCALLBACKA,LPVOID);
+HRESULT WINAPI DirectDrawEnumerateW(LPDDENUMCALLBACKW,LPVOID);
+#define DirectDrawEnumerate WINELIB_NAME_AW(DirectDrawEnumerate)
+
+HRESULT WINAPI DirectDrawEnumerateExA( LPDDENUMCALLBACKEXA lpCallback, LPVOID lpContext, DWORD dwFlags);
+HRESULT WINAPI DirectDrawEnumerateExW( LPDDENUMCALLBACKEXW lpCallback, LPVOID lpContext, DWORD dwFlags);
+#define DirectDrawEnumerateEx WINELIB_NAME_AW(DirectDrawEnumerateEx)
+
+typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXA)( LPDDENUMCALLBACKEXA lpCallback, LPVOID lpContext, DWORD dwFlags);
+typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXW)( LPDDENUMCALLBACKEXW lpCallback, LPVOID lpContext, DWORD dwFlags);
+DECL_WINELIB_TYPE_AW(LPDIRECTDRAWENUMERATEEX)
+
+/* flags for DirectDrawEnumerateEx */
+#define DDENUM_ATTACHEDSECONDARYDEVICES	0x00000001
+#define DDENUM_DETACHEDSECONDARYDEVICES	0x00000002
+#define DDENUM_NONDISPLAYDEVICES	0x00000004
+
+/* flags for DirectDrawCreate or IDirectDraw::Initialize */
+#define DDCREATE_HARDWAREONLY	1L
+#define DDCREATE_EMULATIONONLY	2L
+
+typedef struct _DDBLTFX
+{
+    DWORD       dwSize;                         /* size of structure */
+    DWORD       dwDDFX;                         /* FX operations */
+    DWORD       dwROP;                          /* Win32 raster operations */
+    DWORD       dwDDROP;                        /* Raster operations new for DirectDraw */
+    DWORD       dwRotationAngle;                /* Rotation angle for blt */
+    DWORD       dwZBufferOpCode;                /* ZBuffer compares */
+    DWORD       dwZBufferLow;                   /* Low limit of Z buffer */
+    DWORD       dwZBufferHigh;                  /* High limit of Z buffer */
+    DWORD       dwZBufferBaseDest;              /* Destination base value */
+    DWORD       dwZDestConstBitDepth;           /* Bit depth used to specify Z constant for destination */
+    union
+    {
+        DWORD   dwZDestConst;                   /* Constant to use as Z buffer for dest */
+        LPDIRECTDRAWSURFACE lpDDSZBufferDest;   /* Surface to use as Z buffer for dest */
+    } DUMMYUNIONNAME1;
+    DWORD       dwZSrcConstBitDepth;            /* Bit depth used to specify Z constant for source */
+    union
+    {
+        DWORD   dwZSrcConst;                    /* Constant to use as Z buffer for src */
+        LPDIRECTDRAWSURFACE lpDDSZBufferSrc;    /* Surface to use as Z buffer for src */
+    } DUMMYUNIONNAME2;
+    DWORD       dwAlphaEdgeBlendBitDepth;       /* Bit depth used to specify constant for alpha edge blend */
+    DWORD       dwAlphaEdgeBlend;               /* Alpha for edge blending */
+    DWORD       dwReserved;
+    DWORD       dwAlphaDestConstBitDepth;       /* Bit depth used to specify alpha constant for destination */
+    union
+    {
+        DWORD   dwAlphaDestConst;               /* Constant to use as Alpha Channel */
+        LPDIRECTDRAWSURFACE lpDDSAlphaDest;     /* Surface to use as Alpha Channel */
+    } DUMMYUNIONNAME3;
+    DWORD       dwAlphaSrcConstBitDepth;        /* Bit depth used to specify alpha constant for source */
+    union
+    {
+        DWORD   dwAlphaSrcConst;                /* Constant to use as Alpha Channel */
+        LPDIRECTDRAWSURFACE lpDDSAlphaSrc;      /* Surface to use as Alpha Channel */
+    } DUMMYUNIONNAME4;
+    union
+    {
+        DWORD   dwFillColor;                    /* color in RGB or Palettized */
+        DWORD   dwFillDepth;                    /* depth value for z-buffer */
+	DWORD   dwFillPixel;			/* pixel val for RGBA or RGBZ */
+        LPDIRECTDRAWSURFACE lpDDSPattern;       /* Surface to use as pattern */
+    } DUMMYUNIONNAME5;
+    DDCOLORKEY  ddckDestColorkey;               /* DestColorkey override */
+    DDCOLORKEY  ddckSrcColorkey;                /* SrcColorkey override */
+} DDBLTFX,*LPDDBLTFX;
+
+/* dwDDFX */
+/* arithmetic stretching along y axis */
+#define DDBLTFX_ARITHSTRETCHY			0x00000001
+/* mirror on y axis */
+#define DDBLTFX_MIRRORLEFTRIGHT			0x00000002
+/* mirror on x axis */
+#define DDBLTFX_MIRRORUPDOWN			0x00000004
+/* do not tear */
+#define DDBLTFX_NOTEARING			0x00000008
+/* 180 degrees clockwise rotation */
+#define DDBLTFX_ROTATE180			0x00000010
+/* 270 degrees clockwise rotation */
+#define DDBLTFX_ROTATE270			0x00000020
+/* 90 degrees clockwise rotation */
+#define DDBLTFX_ROTATE90			0x00000040
+/* dwZBufferLow and dwZBufferHigh specify limits to the copied Z values */
+#define DDBLTFX_ZBUFFERRANGE			0x00000080
+/* add dwZBufferBaseDest to every source z value before compare */
+#define DDBLTFX_ZBUFFERBASEDEST			0x00000100
+
+typedef struct _DDOVERLAYFX
+{
+    DWORD       dwSize;                         /* size of structure */
+    DWORD       dwAlphaEdgeBlendBitDepth;       /* Bit depth used to specify constant for alpha edge blend */
+    DWORD       dwAlphaEdgeBlend;               /* Constant to use as alpha for edge blend */
+    DWORD       dwReserved;
+    DWORD       dwAlphaDestConstBitDepth;       /* Bit depth used to specify alpha constant for destination */
+    union
+    {
+        DWORD   dwAlphaDestConst;               /* Constant to use as alpha channel for dest */
+        LPDIRECTDRAWSURFACE lpDDSAlphaDest;     /* Surface to use as alpha channel for dest */
+    } DUMMYUNIONNAME1;
+    DWORD       dwAlphaSrcConstBitDepth;        /* Bit depth used to specify alpha constant for source */
+    union
+    {
+        DWORD   dwAlphaSrcConst;                /* Constant to use as alpha channel for src */
+        LPDIRECTDRAWSURFACE lpDDSAlphaSrc;      /* Surface to use as alpha channel for src */
+    } DUMMYUNIONNAME2;
+    DDCOLORKEY  dckDestColorkey;                /* DestColorkey override */
+    DDCOLORKEY  dckSrcColorkey;                 /* DestColorkey override */
+    DWORD       dwDDFX;                         /* Overlay FX */
+    DWORD       dwFlags;                        /* flags */
+} DDOVERLAYFX,*LPDDOVERLAYFX;
+
+typedef struct _DDBLTBATCH
+{
+    LPRECT		lprDest;
+    LPDIRECTDRAWSURFACE	lpDDSSrc;
+    LPRECT		lprSrc;
+    DWORD		dwFlags;
+    LPDDBLTFX		lpDDBltFx;
+} DDBLTBATCH,*LPDDBLTBATCH;
+
+#define MAX_DDDEVICEID_STRING          512
+
+#define DDGDI_GETHOSTIDENTIFIER 1
+
+typedef struct tagDDDEVICEIDENTIFIER {
+  char    szDriver[MAX_DDDEVICEID_STRING];
+  char    szDescription[MAX_DDDEVICEID_STRING];
+  LARGE_INTEGER  liDriverVersion;
+  DWORD   dwVendorId;
+  DWORD   dwDeviceId;
+  DWORD   dwSubSysId;
+  DWORD   dwRevision;
+  GUID    guidDeviceIdentifier;
+} DDDEVICEIDENTIFIER, * LPDDDEVICEIDENTIFIER;
+
+typedef struct tagDDDEVICEIDENTIFIER2 {
+  char    szDriver[MAX_DDDEVICEID_STRING];	/* user readable driver name */
+  char    szDescription[MAX_DDDEVICEID_STRING]; /* user readable description */
+  LARGE_INTEGER  liDriverVersion;		/* driver version */
+  DWORD   dwVendorId;				/* vendor ID, zero if unknown */
+  DWORD   dwDeviceId;				/* chipset ID, zero if unknown */
+  DWORD   dwSubSysId;				/* board ID, zero if unknown */
+  DWORD   dwRevision;				/* chipset version, zero if unknown */
+  GUID    guidDeviceIdentifier;			/* unique ID for this driver/chipset combination */
+  DWORD   dwWHQLLevel;				/* Windows Hardware Quality Lab certification level */
+} DDDEVICEIDENTIFIER2, * LPDDDEVICEIDENTIFIER2;
+
+/*****************************************************************************
+ * IDirectDrawPalette interface
+ */
+#define INTERFACE IDirectDrawPalette
+DECLARE_INTERFACE_(IDirectDrawPalette,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectDrawPalette methods ***/
+    STDMETHOD(GetCaps)(THIS_ LPDWORD lpdwCaps) PURE;
+    STDMETHOD(GetEntries)(THIS_ DWORD dwFlags, DWORD dwBase, DWORD dwNumEntries, LPPALETTEENTRY lpEntries) PURE;
+    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW lpDD, DWORD dwFlags, LPPALETTEENTRY lpDDColorTable) PURE;
+    STDMETHOD(SetEntries)(THIS_ DWORD dwFlags, DWORD dwStartingEntry, DWORD dwCount, LPPALETTEENTRY lpEntries) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDrawPalette_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawPalette_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectDrawPalette_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectDrawPalette methods ***/
+#define IDirectDrawPalette_GetCaps(p,a)          (p)->lpVtbl->GetCaps(p,a)
+#define IDirectDrawPalette_GetEntries(p,a,b,c,d) (p)->lpVtbl->GetEntries(p,a,b,c,d)
+#define IDirectDrawPalette_Initialize(p,a,b,c)   (p)->lpVtbl->Initialize(p,a,b,c)
+#define IDirectDrawPalette_SetEntries(p,a,b,c,d) (p)->lpVtbl->SetEntries(p,a,b,c,d)
+#else
+/*** IUnknown methods ***/
+#define IDirectDrawPalette_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawPalette_AddRef(p)             (p)->AddRef()
+#define IDirectDrawPalette_Release(p)            (p)->Release()
+/*** IDirectDrawPalette methods ***/
+#define IDirectDrawPalette_GetCaps(p,a)          (p)->GetCaps(a)
+#define IDirectDrawPalette_GetEntries(p,a,b,c,d) (p)->GetEntries(a,b,c,d)
+#define IDirectDrawPalette_Initialize(p,a,b,c)   (p)->Initialize(a,b,c)
+#define IDirectDrawPalette_SetEntries(p,a,b,c,d) (p)->SetEntries(a,b,c,d)
+#endif
+
+
+/*****************************************************************************
+ * IDirectDrawClipper interface
+ */
+#define INTERFACE IDirectDrawClipper
+DECLARE_INTERFACE_(IDirectDrawClipper,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectDrawClipper methods ***/
+    STDMETHOD(GetClipList)(THIS_ LPRECT lpRect, LPRGNDATA lpClipList, LPDWORD lpdwSize) PURE;
+    STDMETHOD(GetHWnd)(THIS_ HWND *lphWnd) PURE;
+    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW lpDD, DWORD dwFlags) PURE;
+    STDMETHOD(IsClipListChanged)(THIS_ BOOL *lpbChanged) PURE;
+    STDMETHOD(SetClipList)(THIS_ LPRGNDATA lpClipList, DWORD dwFlags) PURE;
+    STDMETHOD(SetHWnd)(THIS_ DWORD dwFlags, HWND hWnd) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDrawClipper_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawClipper_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectDrawClipper_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectDrawClipper methods ***/
+#define IDirectDrawClipper_GetClipList(p,a,b,c)   (p)->lpVtbl->GetClipList(p,a,b,c)
+#define IDirectDrawClipper_GetHWnd(p,a)           (p)->lpVtbl->GetHWnd(p,a)
+#define IDirectDrawClipper_Initialize(p,a,b)      (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectDrawClipper_IsClipListChanged(p,a) (p)->lpVtbl->IsClipListChanged(p,a)
+#define IDirectDrawClipper_SetClipList(p,a,b)     (p)->lpVtbl->SetClipList(p,a,b)
+#define IDirectDrawClipper_SetHWnd(p,a,b)         (p)->lpVtbl->SetHWnd(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirectDrawClipper_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawClipper_AddRef(p)             (p)->AddRef()
+#define IDirectDrawClipper_Release(p)            (p)->Release()
+/*** IDirectDrawClipper methods ***/
+#define IDirectDrawClipper_GetClipList(p,a,b,c)   (p)->GetClipList(a,b,c)
+#define IDirectDrawClipper_GetHWnd(p,a)           (p)->GetHWnd(a)
+#define IDirectDrawClipper_Initialize(p,a,b)      (p)->Initialize(a,b)
+#define IDirectDrawClipper_IsClipListChanged(p,a) (p)->IsClipListChanged(a)
+#define IDirectDrawClipper_SetClipList(p,a,b)     (p)->SetClipList(a,b)
+#define IDirectDrawClipper_SetHWnd(p,a,b)         (p)->SetHWnd(a,b)
+#endif
+
+
+/*****************************************************************************
+ * IDirectDraw interface
+ */
+#define INTERFACE IDirectDraw
+DECLARE_INTERFACE_(IDirectDraw,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectDraw methods ***/
+    STDMETHOD(Compact)(THIS) PURE;
+    STDMETHOD(CreateClipper)(THIS_ DWORD dwFlags, LPDIRECTDRAWCLIPPER *lplpDDClipper, IUnknown *pUnkOuter) PURE;
+    STDMETHOD(CreatePalette)(THIS_ DWORD dwFlags, LPPALETTEENTRY lpColorTable, LPDIRECTDRAWPALETTE *lplpDDPalette, IUnknown *pUnkOuter) PURE;
+    STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC lpDDSurfaceDesc, LPDIRECTDRAWSURFACE *lplpDDSurface, IUnknown *pUnkOuter) PURE;
+    STDMETHOD(DuplicateSurface)(THIS_ LPDIRECTDRAWSURFACE lpDDSurface, LPDIRECTDRAWSURFACE *lplpDupDDSurface) PURE;
+    STDMETHOD(EnumDisplayModes)(THIS_ DWORD dwFlags, LPDDSURFACEDESC lpDDSurfaceDesc, LPVOID lpContext, LPDDENUMMODESCALLBACK lpEnumModesCallback) PURE;
+    STDMETHOD(EnumSurfaces)(THIS_ DWORD dwFlags, LPDDSURFACEDESC lpDDSD, LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback) PURE;
+    STDMETHOD(FlipToGDISurface)(THIS) PURE;
+    STDMETHOD(GetCaps)(THIS_ LPDDCAPS lpDDDriverCaps, LPDDCAPS lpDDHELCaps) PURE;
+    STDMETHOD(GetDisplayMode)(THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
+    STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD lpNumCodes, LPDWORD lpCodes) PURE;
+    STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE *lplpGDIDDSurface) PURE;
+    STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD lpdwFrequency) PURE;
+    STDMETHOD(GetScanLine)(THIS_ LPDWORD lpdwScanLine) PURE;
+    STDMETHOD(GetVerticalBlankStatus)(THIS_ BOOL *lpbIsInVB) PURE;
+    STDMETHOD(Initialize)(THIS_ GUID *lpGUID) PURE;
+    STDMETHOD(RestoreDisplayMode)(THIS) PURE;
+    STDMETHOD(SetCooperativeLevel)(THIS_ HWND hWnd, DWORD dwFlags) PURE;
+    STDMETHOD(SetDisplayMode)(THIS_ DWORD dwWidth, DWORD dwHeight, DWORD dwBPP) PURE;
+    STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD dwFlags, HANDLE hEvent) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDraw_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDraw_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectDraw_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectDraw methods ***/
+#define IDirectDraw_Compact(p)                  (p)->lpVtbl->Compact(p)
+#define IDirectDraw_CreateClipper(p,a,b,c)      (p)->lpVtbl->CreateClipper(p,a,b,c)
+#define IDirectDraw_CreatePalette(p,a,b,c,d)    (p)->lpVtbl->CreatePalette(p,a,b,c,d)
+#define IDirectDraw_CreateSurface(p,a,b,c)      (p)->lpVtbl->CreateSurface(p,a,b,c)
+#define IDirectDraw_DuplicateSurface(p,a,b)     (p)->lpVtbl->DuplicateSurface(p,a,b)
+#define IDirectDraw_EnumDisplayModes(p,a,b,c,d) (p)->lpVtbl->EnumDisplayModes(p,a,b,c,d)
+#define IDirectDraw_EnumSurfaces(p,a,b,c,d)     (p)->lpVtbl->EnumSurfaces(p,a,b,c,d)
+#define IDirectDraw_FlipToGDISurface(p)         (p)->lpVtbl->FlipToGDISurface(p)
+#define IDirectDraw_GetCaps(p,a,b)              (p)->lpVtbl->GetCaps(p,a,b)
+#define IDirectDraw_GetDisplayMode(p,a)         (p)->lpVtbl->GetDisplayMode(p,a)
+#define IDirectDraw_GetFourCCCodes(p,a,b)       (p)->lpVtbl->GetFourCCCodes(p,a,b)
+#define IDirectDraw_GetGDISurface(p,a)          (p)->lpVtbl->GetGDISurface(p,a)
+#define IDirectDraw_GetMonitorFrequency(p,a)    (p)->lpVtbl->GetMonitorFrequency(p,a)
+#define IDirectDraw_GetScanLine(p,a)            (p)->lpVtbl->GetScanLine(p,a)
+#define IDirectDraw_GetVerticalBlankStatus(p,a) (p)->lpVtbl->GetVerticalBlankStatus(p,a)
+#define IDirectDraw_Initialize(p,a)             (p)->lpVtbl->Initialize(p,a)
+#define IDirectDraw_RestoreDisplayMode(p)       (p)->lpVtbl->RestoreDisplayMode(p)
+#define IDirectDraw_SetCooperativeLevel(p,a,b)  (p)->lpVtbl->SetCooperativeLevel(p,a,b)
+#define IDirectDraw_SetDisplayMode(p,a,b,c)     (p)->lpVtbl->SetDisplayMode(p,a,b,c)
+#define IDirectDraw_WaitForVerticalBlank(p,a,b) (p)->lpVtbl->WaitForVerticalBlank(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirectDraw_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDraw_AddRef(p)             (p)->AddRef()
+#define IDirectDraw_Release(p)            (p)->Release()
+/*** IDirectDraw methods ***/
+#define IDirectDraw_Compact(p)                  (p)->Compact()
+#define IDirectDraw_CreateClipper(p,a,b,c)      (p)->CreateClipper(a,b,c)
+#define IDirectDraw_CreatePalette(p,a,b,c,d)    (p)->CreatePalette(a,b,c,d)
+#define IDirectDraw_CreateSurface(p,a,b,c)      (p)->CreateSurface(a,b,c)
+#define IDirectDraw_DuplicateSurface(p,a,b)     (p)->DuplicateSurface(a,b)
+#define IDirectDraw_EnumDisplayModes(p,a,b,c,d) (p)->EnumDisplayModes(a,b,c,d)
+#define IDirectDraw_EnumSurfaces(p,a,b,c,d)     (p)->EnumSurfaces(a,b,c,d)
+#define IDirectDraw_FlipToGDISurface(p)         (p)->FlipToGDISurface()
+#define IDirectDraw_GetCaps(p,a,b)              (p)->GetCaps(a,b)
+#define IDirectDraw_GetDisplayMode(p,a)         (p)->GetDisplayMode(a)
+#define IDirectDraw_GetFourCCCodes(p,a,b)       (p)->GetFourCCCodes(a,b)
+#define IDirectDraw_GetGDISurface(p,a)          (p)->GetGDISurface(a)
+#define IDirectDraw_GetMonitorFrequency(p,a)    (p)->GetMonitorFrequency(a)
+#define IDirectDraw_GetScanLine(p,a)            (p)->GetScanLine(a)
+#define IDirectDraw_GetVerticalBlankStatus(p,a) (p)->GetVerticalBlankStatus(a)
+#define IDirectDraw_Initialize(p,a)             (p)->Initialize(a)
+#define IDirectDraw_RestoreDisplayMode(p)       (p)->RestoreDisplayMode()
+#define IDirectDraw_SetCooperativeLevel(p,a,b)  (p)->SetCooperativeLevel(a,b)
+#define IDirectDraw_SetDisplayMode(p,a,b,c)     (p)->SetDisplayMode(a,b,c)
+#define IDirectDraw_WaitForVerticalBlank(p,a,b) (p)->WaitForVerticalBlank(a,b)
+#endif
+
+
+/* flags for Lock() */
+#define DDLOCK_SURFACEMEMORYPTR	0x00000000
+#define DDLOCK_WAIT		0x00000001
+#define DDLOCK_EVENT		0x00000002
+#define DDLOCK_READONLY		0x00000010
+#define DDLOCK_WRITEONLY	0x00000020
+#define DDLOCK_NOSYSLOCK	0x00000800
+#define DDLOCK_NOOVERWRITE      0x00001000
+#define DDLOCK_DISCARDCONTENTS  0x00002000
+
+
+/*****************************************************************************
+ * IDirectDraw2 interface
+ */
+/* Note: IDirectDraw2 cannot derive from IDirectDraw because the number of
+ * arguments of SetDisplayMode has changed !
+ */
+#define INTERFACE IDirectDraw2
+DECLARE_INTERFACE_(IDirectDraw2,IUnknown)
+{
+          /*** IUnknown methods ***/
+/*00*/    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+/*04*/    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+/*08*/    STDMETHOD_(ULONG,Release)(THIS) PURE;
+          /*** IDirectDraw2 methods ***/
+/*0c*/    STDMETHOD(Compact)(THIS) PURE;
+/*10*/    STDMETHOD(CreateClipper)(THIS_ DWORD dwFlags, LPDIRECTDRAWCLIPPER *lplpDDClipper, IUnknown *pUnkOuter) PURE;
+/*14*/    STDMETHOD(CreatePalette)(THIS_ DWORD dwFlags, LPPALETTEENTRY lpColorTable, LPDIRECTDRAWPALETTE *lplpDDPalette, IUnknown *pUnkOuter) PURE;
+/*18*/    STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC lpDDSurfaceDesc, LPDIRECTDRAWSURFACE *lplpDDSurface, IUnknown *pUnkOuter) PURE;
+/*1c*/    STDMETHOD(DuplicateSurface)(THIS_ LPDIRECTDRAWSURFACE lpDDSurface, LPDIRECTDRAWSURFACE *lplpDupDDSurface) PURE;
+/*20*/    STDMETHOD(EnumDisplayModes)(THIS_ DWORD dwFlags, LPDDSURFACEDESC lpDDSurfaceDesc, LPVOID lpContext, LPDDENUMMODESCALLBACK lpEnumModesCallback) PURE;
+/*24*/    STDMETHOD(EnumSurfaces)(THIS_ DWORD dwFlags, LPDDSURFACEDESC lpDDSD, LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback) PURE;
+/*28*/    STDMETHOD(FlipToGDISurface)(THIS) PURE;
+/*2c*/    STDMETHOD(GetCaps)(THIS_ LPDDCAPS lpDDDriverCaps, LPDDCAPS lpDDHELCaps) PURE;
+/*30*/    STDMETHOD(GetDisplayMode)(THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
+/*34*/    STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD lpNumCodes, LPDWORD lpCodes) PURE;
+/*38*/    STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE *lplpGDIDDSurface) PURE;
+/*3c*/    STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD lpdwFrequency) PURE;
+/*40*/    STDMETHOD(GetScanLine)(THIS_ LPDWORD lpdwScanLine) PURE;
+/*44*/    STDMETHOD(GetVerticalBlankStatus)(THIS_ BOOL *lpbIsInVB) PURE;
+/*48*/    STDMETHOD(Initialize)(THIS_ GUID *lpGUID) PURE;
+/*4c*/    STDMETHOD(RestoreDisplayMode)(THIS) PURE;
+/*50*/    STDMETHOD(SetCooperativeLevel)(THIS_ HWND hWnd, DWORD dwFlags) PURE;
+/*54*/    STDMETHOD(SetDisplayMode)(THIS_ DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwRefreshRate, DWORD dwFlags) PURE;
+/*58*/    STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD dwFlags, HANDLE hEvent) PURE;
+          /* added in v2 */
+/*5c*/    STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS lpDDCaps, LPDWORD lpdwTotal, LPDWORD lpdwFree) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDraw2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDraw2_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectDraw2_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectDraw methods ***/
+#define IDirectDraw2_Compact(p)                  (p)->lpVtbl->Compact(p)
+#define IDirectDraw2_CreateClipper(p,a,b,c)      (p)->lpVtbl->CreateClipper(p,a,b,c)
+#define IDirectDraw2_CreatePalette(p,a,b,c,d)    (p)->lpVtbl->CreatePalette(p,a,b,c,d)
+#define IDirectDraw2_CreateSurface(p,a,b,c)      (p)->lpVtbl->CreateSurface(p,a,b,c)
+#define IDirectDraw2_DuplicateSurface(p,a,b)     (p)->lpVtbl->DuplicateSurface(p,a,b)
+#define IDirectDraw2_EnumDisplayModes(p,a,b,c,d) (p)->lpVtbl->EnumDisplayModes(p,a,b,c,d)
+#define IDirectDraw2_EnumSurfaces(p,a,b,c,d)     (p)->lpVtbl->EnumSurfaces(p,a,b,c,d)
+#define IDirectDraw2_FlipToGDISurface(p)         (p)->lpVtbl->FlipToGDISurface(p)
+#define IDirectDraw2_GetCaps(p,a,b)              (p)->lpVtbl->GetCaps(p,a,b)
+#define IDirectDraw2_GetDisplayMode(p,a)         (p)->lpVtbl->GetDisplayMode(p,a)
+#define IDirectDraw2_GetFourCCCodes(p,a,b)       (p)->lpVtbl->GetFourCCCodes(p,a,b)
+#define IDirectDraw2_GetGDISurface(p,a)          (p)->lpVtbl->GetGDISurface(p,a)
+#define IDirectDraw2_GetMonitorFrequency(p,a)    (p)->lpVtbl->GetMonitorFrequency(p,a)
+#define IDirectDraw2_GetScanLine(p,a)            (p)->lpVtbl->GetScanLine(p,a)
+#define IDirectDraw2_GetVerticalBlankStatus(p,a) (p)->lpVtbl->GetVerticalBlankStatus(p,a)
+#define IDirectDraw2_Initialize(p,a)             (p)->lpVtbl->Initialize(p,a)
+#define IDirectDraw2_RestoreDisplayMode(p)       (p)->lpVtbl->RestoreDisplayMode(p)
+#define IDirectDraw2_SetCooperativeLevel(p,a,b)  (p)->lpVtbl->SetCooperativeLevel(p,a,b)
+#define IDirectDraw2_SetDisplayMode(p,a,b,c,d,e) (p)->lpVtbl->SetDisplayMode(p,a,b,c,d,e)
+#define IDirectDraw2_WaitForVerticalBlank(p,a,b) (p)->lpVtbl->WaitForVerticalBlank(p,a,b)
+/*** IDirectDraw2 methods ***/
+#define IDirectDraw2_GetAvailableVidMem(p,a,b,c) (p)->lpVtbl->GetAvailableVidMem(p,a,b,c)
+#else
+/*** IUnknown methods ***/
+#define IDirectDraw2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDraw2_AddRef(p)             (p)->AddRef()
+#define IDirectDraw2_Release(p)            (p)->Release()
+/*** IDirectDraw methods ***/
+#define IDirectDraw2_Compact(p)                  (p)->Compact()
+#define IDirectDraw2_CreateClipper(p,a,b,c)      (p)->CreateClipper(a,b,c)
+#define IDirectDraw2_CreatePalette(p,a,b,c,d)    (p)->CreatePalette(a,b,c,d)
+#define IDirectDraw2_CreateSurface(p,a,b,c)      (p)->CreateSurface(a,b,c)
+#define IDirectDraw2_DuplicateSurface(p,a,b)     (p)->DuplicateSurface(a,b)
+#define IDirectDraw2_EnumDisplayModes(p,a,b,c,d) (p)->EnumDisplayModes(a,b,c,d)
+#define IDirectDraw2_EnumSurfaces(p,a,b,c,d)     (p)->EnumSurfaces(a,b,c,d)
+#define IDirectDraw2_FlipToGDISurface(p)         (p)->FlipToGDISurface()
+#define IDirectDraw2_GetCaps(p,a,b)              (p)->GetCaps(a,b)
+#define IDirectDraw2_GetDisplayMode(p,a)         (p)->GetDisplayMode(a)
+#define IDirectDraw2_GetFourCCCodes(p,a,b)       (p)->GetFourCCCodes(a,b)
+#define IDirectDraw2_GetGDISurface(p,a)          (p)->GetGDISurface(a)
+#define IDirectDraw2_GetMonitorFrequency(p,a)    (p)->GetMonitorFrequency(a)
+#define IDirectDraw2_GetScanLine(p,a)            (p)->GetScanLine(a)
+#define IDirectDraw2_GetVerticalBlankStatus(p,a) (p)->GetVerticalBlankStatus(a)
+#define IDirectDraw2_Initialize(p,a)             (p)->Initialize(a)
+#define IDirectDraw2_RestoreDisplayMode(p)       (p)->RestoreDisplayMode()
+#define IDirectDraw2_SetCooperativeLevel(p,a,b)  (p)->SetCooperativeLevel(a,b)
+#define IDirectDraw2_SetDisplayMode(p,a,b,c,d,e) (p)->SetDisplayMode(a,b,c,d,e)
+#define IDirectDraw2_WaitForVerticalBlank(p,a,b) (p)->WaitForVerticalBlank(a,b)
+/*** IDirectDraw2 methods ***/
+#define IDirectDraw2_GetAvailableVidMem(p,a,b,c) (p)->GetAvailableVidMem(a,b,c)
+#endif
+
+
+/*****************************************************************************
+ * IDirectDraw3 interface
+ */
+#define INTERFACE IDirectDraw3
+DECLARE_INTERFACE_(IDirectDraw3,IUnknown)
+{
+          /*** IUnknown methods ***/
+/*00*/    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+/*04*/    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+/*08*/    STDMETHOD_(ULONG,Release)(THIS) PURE;
+          /*** IDirectDraw2 methods ***/
+/*0c*/    STDMETHOD(Compact)(THIS) PURE;
+/*10*/    STDMETHOD(CreateClipper)(THIS_ DWORD dwFlags, LPDIRECTDRAWCLIPPER *lplpDDClipper, IUnknown *pUnkOuter) PURE;
+/*14*/    STDMETHOD(CreatePalette)(THIS_ DWORD dwFlags, LPPALETTEENTRY lpColorTable, LPDIRECTDRAWPALETTE *lplpDDPalette, IUnknown *pUnkOuter) PURE;
+/*18*/    STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC lpDDSurfaceDesc, LPDIRECTDRAWSURFACE *lplpDDSurface, IUnknown *pUnkOuter) PURE;
+/*1c*/    STDMETHOD(DuplicateSurface)(THIS_ LPDIRECTDRAWSURFACE lpDDSurface, LPDIRECTDRAWSURFACE *lplpDupDDSurface) PURE;
+/*20*/    STDMETHOD(EnumDisplayModes)(THIS_ DWORD dwFlags, LPDDSURFACEDESC lpDDSurfaceDesc, LPVOID lpContext, LPDDENUMMODESCALLBACK lpEnumModesCallback) PURE;
+/*24*/    STDMETHOD(EnumSurfaces)(THIS_ DWORD dwFlags, LPDDSURFACEDESC lpDDSD, LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback) PURE;
+/*28*/    STDMETHOD(FlipToGDISurface)(THIS) PURE;
+/*2c*/    STDMETHOD(GetCaps)(THIS_ LPDDCAPS lpDDDriverCaps, LPDDCAPS lpDDHELCaps) PURE;
+/*30*/    STDMETHOD(GetDisplayMode)(THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
+/*34*/    STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD lpNumCodes, LPDWORD lpCodes) PURE;
+/*38*/    STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE *lplpGDIDDSurface) PURE;
+/*3c*/    STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD lpdwFrequency) PURE;
+/*40*/    STDMETHOD(GetScanLine)(THIS_ LPDWORD lpdwScanLine) PURE;
+/*44*/    STDMETHOD(GetVerticalBlankStatus)(THIS_ BOOL *lpbIsInVB) PURE;
+/*48*/    STDMETHOD(Initialize)(THIS_ GUID *lpGUID) PURE;
+/*4c*/    STDMETHOD(RestoreDisplayMode)(THIS) PURE;
+/*50*/    STDMETHOD(SetCooperativeLevel)(THIS_ HWND hWnd, DWORD dwFlags) PURE;
+/*54*/    STDMETHOD(SetDisplayMode)(THIS_ DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwRefreshRate, DWORD dwFlags) PURE;
+/*58*/    STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD dwFlags, HANDLE hEvent) PURE;
+          /* added in v2 */
+/*5c*/    STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS lpDDCaps, LPDWORD lpdwTotal, LPDWORD lpdwFree) PURE;
+          /* added in v3 */
+/*60*/    STDMETHOD(GetSurfaceFromDC)(THIS_ HDC hdc, LPDIRECTDRAWSURFACE *pSurf) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDraw3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDraw3_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectDraw3_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectDraw methods ***/
+#define IDirectDraw3_Compact(p)                  (p)->lpVtbl->Compact(p)
+#define IDirectDraw3_CreateClipper(p,a,b,c)      (p)->lpVtbl->CreateClipper(p,a,b,c)
+#define IDirectDraw3_CreatePalette(p,a,b,c,d)    (p)->lpVtbl->CreatePalette(p,a,b,c,d)
+#define IDirectDraw3_CreateSurface(p,a,b,c)      (p)->lpVtbl->CreateSurface(p,a,b,c)
+#define IDirectDraw3_DuplicateSurface(p,a,b)     (p)->lpVtbl->DuplicateSurface(p,a,b)
+#define IDirectDraw3_EnumDisplayModes(p,a,b,c,d) (p)->lpVtbl->EnumDisplayModes(p,a,b,c,d)
+#define IDirectDraw3_EnumSurfaces(p,a,b,c,d)     (p)->lpVtbl->EnumSurfaces(p,a,b,c,d)
+#define IDirectDraw3_FlipToGDISurface(p)         (p)->lpVtbl->FlipToGDISurface(p)
+#define IDirectDraw3_GetCaps(p,a,b)              (p)->lpVtbl->GetCaps(p,a,b)
+#define IDirectDraw3_GetDisplayMode(p,a)         (p)->lpVtbl->GetDisplayMode(p,a)
+#define IDirectDraw3_GetFourCCCodes(p,a,b)       (p)->lpVtbl->GetFourCCCodes(p,a,b)
+#define IDirectDraw3_GetGDISurface(p,a)          (p)->lpVtbl->GetGDISurface(p,a)
+#define IDirectDraw3_GetMonitorFrequency(p,a)    (p)->lpVtbl->GetMonitorFrequency(p,a)
+#define IDirectDraw3_GetScanLine(p,a)            (p)->lpVtbl->GetScanLine(p,a)
+#define IDirectDraw3_GetVerticalBlankStatus(p,a) (p)->lpVtbl->GetVerticalBlankStatus(p,a)
+#define IDirectDraw3_Initialize(p,a)             (p)->lpVtbl->Initialize(p,a)
+#define IDirectDraw3_RestoreDisplayMode(p)       (p)->lpVtbl->RestoreDisplayMode(p)
+#define IDirectDraw3_SetCooperativeLevel(p,a,b)  (p)->lpVtbl->SetCooperativeLevel(p,a,b)
+#define IDirectDraw3_SetDisplayMode(p,a,b,c,d,e) (p)->lpVtbl->SetDisplayMode(p,a,b,c,d,e)
+#define IDirectDraw3_WaitForVerticalBlank(p,a,b) (p)->lpVtbl->WaitForVerticalBlank(p,a,b)
+/*** IDirectDraw2 methods ***/
+#define IDirectDraw3_GetAvailableVidMem(p,a,b,c) (p)->lpVtbl->GetAvailableVidMem(p,a,b,c)
+/*** IDirectDraw3 methods ***/
+#define IDirectDraw3_GetSurfaceFromDC(p,a,b)    (p)->lpVtbl->GetSurfaceFromDC(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirectDraw3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDraw3_AddRef(p)             (p)->AddRef()
+#define IDirectDraw3_Release(p)            (p)->Release()
+/*** IDirectDraw methods ***/
+#define IDirectDraw3_Compact(p)                  (p)->Compact()
+#define IDirectDraw3_CreateClipper(p,a,b,c)      (p)->CreateClipper(a,b,c)
+#define IDirectDraw3_CreatePalette(p,a,b,c,d)    (p)->CreatePalette(a,b,c,d)
+#define IDirectDraw3_CreateSurface(p,a,b,c)      (p)->CreateSurface(a,b,c)
+#define IDirectDraw3_DuplicateSurface(p,a,b)     (p)->DuplicateSurface(a,b)
+#define IDirectDraw3_EnumDisplayModes(p,a,b,c,d) (p)->EnumDisplayModes(a,b,c,d)
+#define IDirectDraw3_EnumSurfaces(p,a,b,c,d)     (p)->EnumSurfaces(a,b,c,d)
+#define IDirectDraw3_FlipToGDISurface(p)         (p)->FlipToGDISurface()
+#define IDirectDraw3_GetCaps(p,a,b)              (p)->GetCaps(a,b)
+#define IDirectDraw3_GetDisplayMode(p,a)         (p)->GetDisplayMode(a)
+#define IDirectDraw3_GetFourCCCodes(p,a,b)       (p)->GetFourCCCodes(a,b)
+#define IDirectDraw3_GetGDISurface(p,a)          (p)->GetGDISurface(a)
+#define IDirectDraw3_GetMonitorFrequency(p,a)    (p)->GetMonitorFrequency(a)
+#define IDirectDraw3_GetScanLine(p,a)            (p)->GetScanLine(a)
+#define IDirectDraw3_GetVerticalBlankStatus(p,a) (p)->GetVerticalBlankStatus(a)
+#define IDirectDraw3_Initialize(p,a)             (p)->Initialize(a)
+#define IDirectDraw3_RestoreDisplayMode(p)       (p)->RestoreDisplayMode()
+#define IDirectDraw3_SetCooperativeLevel(p,a,b)  (p)->SetCooperativeLevel(a,b)
+#define IDirectDraw3_SetDisplayMode(p,a,b,c,d,e) (p)->SetDisplayMode(a,b,c,d,e)
+#define IDirectDraw3_WaitForVerticalBlank(p,a,b) (p)->WaitForVerticalBlank(a,b)
+/*** IDirectDraw2 methods ***/
+#define IDirectDraw3_GetAvailableVidMem(p,a,b,c) (p)->GetAvailableVidMem(a,b,c)
+/*** IDirectDraw3 methods ***/
+#define IDirectDraw3_GetSurfaceFromDC(p,a,b)    (p)->GetSurfaceFromDC(a,b)
+#endif
+
+
+/*****************************************************************************
+ * IDirectDraw4 interface
+ */
+#define INTERFACE IDirectDraw4
+DECLARE_INTERFACE_(IDirectDraw4,IUnknown)
+{
+          /*** IUnknown methods ***/
+/*00*/    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+/*04*/    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+/*08*/    STDMETHOD_(ULONG,Release)(THIS) PURE;
+          /*** IDirectDraw4 methods ***/
+/*0c*/    STDMETHOD(Compact)(THIS) PURE;
+/*10*/    STDMETHOD(CreateClipper)(THIS_ DWORD dwFlags, LPDIRECTDRAWCLIPPER *lplpDDClipper, IUnknown *pUnkOuter) PURE;
+/*14*/    STDMETHOD(CreatePalette)(THIS_ DWORD dwFlags, LPPALETTEENTRY lpColorTable, LPDIRECTDRAWPALETTE *lplpDDPalette, IUnknown *pUnkOuter) PURE;
+/*18*/    STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC2 lpDDSurfaceDesc, LPDIRECTDRAWSURFACE4 *lplpDDSurface, IUnknown *pUnkOuter) PURE;
+/*1c*/    STDMETHOD(DuplicateSurface)(THIS_ LPDIRECTDRAWSURFACE4 lpDDSurface, LPDIRECTDRAWSURFACE4 *lplpDupDDSurface) PURE;
+/*20*/    STDMETHOD(EnumDisplayModes)(THIS_ DWORD dwFlags, LPDDSURFACEDESC2 lpDDSurfaceDesc, LPVOID lpContext, LPDDENUMMODESCALLBACK2 lpEnumModesCallback) PURE;
+/*24*/    STDMETHOD(EnumSurfaces)(THIS_ DWORD dwFlags, LPDDSURFACEDESC2 lpDDSD, LPVOID lpContext, LPDDENUMSURFACESCALLBACK2 lpEnumSurfacesCallback) PURE;
+/*28*/    STDMETHOD(FlipToGDISurface)(THIS) PURE;
+/*2c*/    STDMETHOD(GetCaps)(THIS_ LPDDCAPS lpDDDriverCaps, LPDDCAPS lpDDHELCaps) PURE;
+/*30*/    STDMETHOD(GetDisplayMode)(THIS_ LPDDSURFACEDESC2 lpDDSurfaceDesc) PURE;
+/*34*/    STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD lpNumCodes, LPDWORD lpCodes) PURE;
+/*38*/    STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE4 *lplpGDIDDSurface) PURE;
+/*3c*/    STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD lpdwFrequency) PURE;
+/*40*/    STDMETHOD(GetScanLine)(THIS_ LPDWORD lpdwScanLine) PURE;
+/*44*/    STDMETHOD(GetVerticalBlankStatus)(THIS_ BOOL *lpbIsInVB) PURE;
+/*48*/    STDMETHOD(Initialize)(THIS_ GUID *lpGUID) PURE;
+/*4c*/    STDMETHOD(RestoreDisplayMode)(THIS) PURE;
+/*50*/    STDMETHOD(SetCooperativeLevel)(THIS_ HWND hWnd, DWORD dwFlags) PURE;
+/*54*/    STDMETHOD(SetDisplayMode)(THIS_ DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwRefreshRate, DWORD dwFlags) PURE;
+/*58*/    STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD dwFlags, HANDLE hEvent) PURE;
+          /* added in v2 */
+/*5c*/    STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS2 lpDDCaps, LPDWORD lpdwTotal, LPDWORD lpdwFree) PURE;
+          /* added in v4 */
+/*60*/    STDMETHOD(GetSurfaceFromDC)(THIS_ HDC hdc, LPDIRECTDRAWSURFACE4 *pSurf) PURE;
+/*64*/    STDMETHOD(RestoreAllSurfaces)(THIS) PURE;
+/*68*/    STDMETHOD(TestCooperativeLevel)(THIS) PURE;
+/*6c*/    STDMETHOD(GetDeviceIdentifier)(THIS_ LPDDDEVICEIDENTIFIER pDDDI, DWORD dwFlags) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDraw4_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDraw4_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectDraw4_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectDraw methods ***/
+#define IDirectDraw4_Compact(p)                  (p)->lpVtbl->Compact(p)
+#define IDirectDraw4_CreateClipper(p,a,b,c)      (p)->lpVtbl->CreateClipper(p,a,b,c)
+#define IDirectDraw4_CreatePalette(p,a,b,c,d)    (p)->lpVtbl->CreatePalette(p,a,b,c,d)
+#define IDirectDraw4_CreateSurface(p,a,b,c)      (p)->lpVtbl->CreateSurface(p,a,b,c)
+#define IDirectDraw4_DuplicateSurface(p,a,b)     (p)->lpVtbl->DuplicateSurface(p,a,b)
+#define IDirectDraw4_EnumDisplayModes(p,a,b,c,d) (p)->lpVtbl->EnumDisplayModes(p,a,b,c,d)
+#define IDirectDraw4_EnumSurfaces(p,a,b,c,d)     (p)->lpVtbl->EnumSurfaces(p,a,b,c,d)
+#define IDirectDraw4_FlipToGDISurface(p)         (p)->lpVtbl->FlipToGDISurface(p)
+#define IDirectDraw4_GetCaps(p,a,b)              (p)->lpVtbl->GetCaps(p,a,b)
+#define IDirectDraw4_GetDisplayMode(p,a)         (p)->lpVtbl->GetDisplayMode(p,a)
+#define IDirectDraw4_GetFourCCCodes(p,a,b)       (p)->lpVtbl->GetFourCCCodes(p,a,b)
+#define IDirectDraw4_GetGDISurface(p,a)          (p)->lpVtbl->GetGDISurface(p,a)
+#define IDirectDraw4_GetMonitorFrequency(p,a)    (p)->lpVtbl->GetMonitorFrequency(p,a)
+#define IDirectDraw4_GetScanLine(p,a)            (p)->lpVtbl->GetScanLine(p,a)
+#define IDirectDraw4_GetVerticalBlankStatus(p,a) (p)->lpVtbl->GetVerticalBlankStatus(p,a)
+#define IDirectDraw4_Initialize(p,a)             (p)->lpVtbl->Initialize(p,a)
+#define IDirectDraw4_RestoreDisplayMode(p)       (p)->lpVtbl->RestoreDisplayMode(p)
+#define IDirectDraw4_SetCooperativeLevel(p,a,b)  (p)->lpVtbl->SetCooperativeLevel(p,a,b)
+#define IDirectDraw4_SetDisplayMode(p,a,b,c,d,e) (p)->lpVtbl->SetDisplayMode(p,a,b,c,d,e)
+#define IDirectDraw4_WaitForVerticalBlank(p,a,b) (p)->lpVtbl->WaitForVerticalBlank(p,a,b)
+/*** IDirectDraw2 methods ***/
+#define IDirectDraw4_GetAvailableVidMem(p,a,b,c) (p)->lpVtbl->GetAvailableVidMem(p,a,b,c)
+/*** IDirectDraw4 methods ***/
+#define IDirectDraw4_GetSurfaceFromDC(p,a,b)    (p)->lpVtbl->GetSurfaceFromDC(p,a,b)
+#define IDirectDraw4_RestoreAllSurfaces(pc)     (p)->lpVtbl->RestoreAllSurfaces(p)
+#define IDirectDraw4_TestCooperativeLevel(p)    (p)->lpVtbl->TestCooperativeLevel(p)
+#define IDirectDraw4_GetDeviceIdentifier(p,a,b) (p)->lpVtbl->GetDeviceIdentifier(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirectDraw4_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDraw4_AddRef(p)             (p)->AddRef()
+#define IDirectDraw4_Release(p)            (p)->Release()
+/*** IDirectDraw methods ***/
+#define IDirectDraw4_Compact(p)                  (p)->Compact()
+#define IDirectDraw4_CreateClipper(p,a,b,c)      (p)->CreateClipper(a,b,c)
+#define IDirectDraw4_CreatePalette(p,a,b,c,d)    (p)->CreatePalette(a,b,c,d)
+#define IDirectDraw4_CreateSurface(p,a,b,c)      (p)->CreateSurface(a,b,c)
+#define IDirectDraw4_DuplicateSurface(p,a,b)     (p)->DuplicateSurface(a,b)
+#define IDirectDraw4_EnumDisplayModes(p,a,b,c,d) (p)->EnumDisplayModes(a,b,c,d)
+#define IDirectDraw4_EnumSurfaces(p,a,b,c,d)     (p)->EnumSurfaces(a,b,c,d)
+#define IDirectDraw4_FlipToGDISurface(p)         (p)->FlipToGDISurface()
+#define IDirectDraw4_GetCaps(p,a,b)              (p)->GetCaps(a,b)
+#define IDirectDraw4_GetDisplayMode(p,a)         (p)->GetDisplayMode(a)
+#define IDirectDraw4_GetFourCCCodes(p,a,b)       (p)->GetFourCCCodes(a,b)
+#define IDirectDraw4_GetGDISurface(p,a)          (p)->GetGDISurface(a)
+#define IDirectDraw4_GetMonitorFrequency(p,a)    (p)->GetMonitorFrequency(a)
+#define IDirectDraw4_GetScanLine(p,a)            (p)->GetScanLine(a)
+#define IDirectDraw4_GetVerticalBlankStatus(p,a) (p)->GetVerticalBlankStatus(a)
+#define IDirectDraw4_Initialize(p,a)             (p)->Initialize(a)
+#define IDirectDraw4_RestoreDisplayMode(p)       (p)->RestoreDisplayMode()
+#define IDirectDraw4_SetCooperativeLevel(p,a,b)  (p)->SetCooperativeLevel(a,b)
+#define IDirectDraw4_SetDisplayMode(p,a,b,c,d,e) (p)->SetDisplayMode(a,b,c,d,e)
+#define IDirectDraw4_WaitForVerticalBlank(p,a,b) (p)->WaitForVerticalBlank(a,b)
+/*** IDirectDraw2 methods ***/
+#define IDirectDraw4_GetAvailableVidMem(p,a,b,c) (p)->GetAvailableVidMem(a,b,c)
+/*** IDirectDraw4 methods ***/
+#define IDirectDraw4_GetSurfaceFromDC(p,a,b)    (p)->GetSurfaceFromDC(a,b)
+#define IDirectDraw4_RestoreAllSurfaces(pc)     (p)->RestoreAllSurfaces()
+#define IDirectDraw4_TestCooperativeLevel(p)    (p)->TestCooperativeLevel()
+#define IDirectDraw4_GetDeviceIdentifier(p,a,b) (p)->GetDeviceIdentifier(a,b)
+#endif
+
+
+/*****************************************************************************
+ * IDirectDraw7 interface
+ */
+/* Note: IDirectDraw7 cannot derive from IDirectDraw4; it is even documented
+ * as not interchangeable with earlier DirectDraw interfaces.
+ */
+#define INTERFACE IDirectDraw7
+DECLARE_INTERFACE_(IDirectDraw7,IUnknown)
+{
+          /*** IUnknown methods ***/
+/*00*/    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+/*04*/    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+/*08*/    STDMETHOD_(ULONG,Release)(THIS) PURE;
+          /*** IDirectDraw7 methods ***/
+/*0c*/    STDMETHOD(Compact)(THIS) PURE;
+/*10*/    STDMETHOD(CreateClipper)(THIS_ DWORD dwFlags, LPDIRECTDRAWCLIPPER *lplpDDClipper, IUnknown *pUnkOuter) PURE;
+/*14*/    STDMETHOD(CreatePalette)(THIS_ DWORD dwFlags, LPPALETTEENTRY lpColorTable, LPDIRECTDRAWPALETTE *lplpDDPalette, IUnknown *pUnkOuter) PURE;
+/*18*/    STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC2 lpDDSurfaceDesc, LPDIRECTDRAWSURFACE7 *lplpDDSurface, IUnknown *pUnkOuter) PURE;
+/*1c*/    STDMETHOD(DuplicateSurface)(THIS_ LPDIRECTDRAWSURFACE7 lpDDSurface, LPDIRECTDRAWSURFACE7 *lplpDupDDSurface) PURE;
+/*20*/    STDMETHOD(EnumDisplayModes)(THIS_ DWORD dwFlags, LPDDSURFACEDESC2 lpDDSurfaceDesc, LPVOID lpContext, LPDDENUMMODESCALLBACK2 lpEnumModesCallback) PURE;
+/*24*/    STDMETHOD(EnumSurfaces)(THIS_ DWORD dwFlags, LPDDSURFACEDESC2 lpDDSD, LPVOID lpContext, LPDDENUMSURFACESCALLBACK7 lpEnumSurfacesCallback) PURE;
+/*28*/    STDMETHOD(FlipToGDISurface)(THIS) PURE;
+/*2c*/    STDMETHOD(GetCaps)(THIS_ LPDDCAPS lpDDDriverCaps, LPDDCAPS lpDDHELCaps) PURE;
+/*30*/    STDMETHOD(GetDisplayMode)(THIS_ LPDDSURFACEDESC2 lpDDSurfaceDesc) PURE;
+/*34*/    STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD lpNumCodes, LPDWORD lpCodes) PURE;
+/*38*/    STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE7 *lplpGDIDDSurface) PURE;
+/*3c*/    STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD lpdwFrequency) PURE;
+/*40*/    STDMETHOD(GetScanLine)(THIS_ LPDWORD lpdwScanLine) PURE;
+/*44*/    STDMETHOD(GetVerticalBlankStatus)(THIS_ BOOL *lpbIsInVB) PURE;
+/*48*/    STDMETHOD(Initialize)(THIS_ GUID *lpGUID) PURE;
+/*4c*/    STDMETHOD(RestoreDisplayMode)(THIS) PURE;
+/*50*/    STDMETHOD(SetCooperativeLevel)(THIS_ HWND hWnd, DWORD dwFlags) PURE;
+/*54*/    STDMETHOD(SetDisplayMode)(THIS_ DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwRefreshRate, DWORD dwFlags) PURE;
+/*58*/    STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD dwFlags, HANDLE hEvent) PURE;
+          /* added in v2 */
+/*5c*/    STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS2 lpDDCaps, LPDWORD lpdwTotal, LPDWORD lpdwFree) PURE;
+          /* added in v4 */
+/*60*/    STDMETHOD(GetSurfaceFromDC)(THIS_ HDC hdc, LPDIRECTDRAWSURFACE7 *pSurf) PURE;
+/*64*/    STDMETHOD(RestoreAllSurfaces)(THIS) PURE;
+/*68*/    STDMETHOD(TestCooperativeLevel)(THIS) PURE;
+/*6c*/    STDMETHOD(GetDeviceIdentifier)(THIS_ LPDDDEVICEIDENTIFIER2 pDDDI, DWORD dwFlags) PURE;
+          /* added in v7 */
+/*70*/    STDMETHOD(StartModeTest)(THIS_ LPSIZE pModes, DWORD dwNumModes, DWORD dwFlags) PURE;
+/*74*/    STDMETHOD(EvaluateMode)(THIS_ DWORD dwFlags, DWORD  *pTimeout) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDraw7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDraw7_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectDraw7_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectDraw methods ***/
+#define IDirectDraw7_Compact(p)                  (p)->lpVtbl->Compact(p)
+#define IDirectDraw7_CreateClipper(p,a,b,c)      (p)->lpVtbl->CreateClipper(p,a,b,c)
+#define IDirectDraw7_CreatePalette(p,a,b,c,d)    (p)->lpVtbl->CreatePalette(p,a,b,c,d)
+#define IDirectDraw7_CreateSurface(p,a,b,c)      (p)->lpVtbl->CreateSurface(p,a,b,c)
+#define IDirectDraw7_DuplicateSurface(p,a,b)     (p)->lpVtbl->DuplicateSurface(p,a,b)
+#define IDirectDraw7_EnumDisplayModes(p,a,b,c,d) (p)->lpVtbl->EnumDisplayModes(p,a,b,c,d)
+#define IDirectDraw7_EnumSurfaces(p,a,b,c,d)     (p)->lpVtbl->EnumSurfaces(p,a,b,c,d)
+#define IDirectDraw7_FlipToGDISurface(p)         (p)->lpVtbl->FlipToGDISurface(p)
+#define IDirectDraw7_GetCaps(p,a,b)              (p)->lpVtbl->GetCaps(p,a,b)
+#define IDirectDraw7_GetDisplayMode(p,a)         (p)->lpVtbl->GetDisplayMode(p,a)
+#define IDirectDraw7_GetFourCCCodes(p,a,b)       (p)->lpVtbl->GetFourCCCodes(p,a,b)
+#define IDirectDraw7_GetGDISurface(p,a)          (p)->lpVtbl->GetGDISurface(p,a)
+#define IDirectDraw7_GetMonitorFrequency(p,a)    (p)->lpVtbl->GetMonitorFrequency(p,a)
+#define IDirectDraw7_GetScanLine(p,a)            (p)->lpVtbl->GetScanLine(p,a)
+#define IDirectDraw7_GetVerticalBlankStatus(p,a) (p)->lpVtbl->GetVerticalBlankStatus(p,a)
+#define IDirectDraw7_Initialize(p,a)             (p)->lpVtbl->Initialize(p,a)
+#define IDirectDraw7_RestoreDisplayMode(p)       (p)->lpVtbl->RestoreDisplayMode(p)
+#define IDirectDraw7_SetCooperativeLevel(p,a,b)  (p)->lpVtbl->SetCooperativeLevel(p,a,b)
+#define IDirectDraw7_SetDisplayMode(p,a,b,c,d,e) (p)->lpVtbl->SetDisplayMode(p,a,b,c,d,e)
+#define IDirectDraw7_WaitForVerticalBlank(p,a,b) (p)->lpVtbl->WaitForVerticalBlank(p,a,b)
+/*** added in IDirectDraw2 ***/
+#define IDirectDraw7_GetAvailableVidMem(p,a,b,c) (p)->lpVtbl->GetAvailableVidMem(p,a,b,c)
+/*** added in IDirectDraw4 ***/
+#define IDirectDraw7_GetSurfaceFromDC(p,a,b)    (p)->lpVtbl->GetSurfaceFromDC(p,a,b)
+#define IDirectDraw7_RestoreAllSurfaces(p)     (p)->lpVtbl->RestoreAllSurfaces(p)
+#define IDirectDraw7_TestCooperativeLevel(p)    (p)->lpVtbl->TestCooperativeLevel(p)
+#define IDirectDraw7_GetDeviceIdentifier(p,a,b) (p)->lpVtbl->GetDeviceIdentifier(p,a,b)
+/*** added in IDirectDraw 7 ***/
+#define IDirectDraw7_StartModeTest(p,a,b,c)     (p)->lpVtbl->StartModeTest(p,a,b,c)
+#define IDirectDraw7_EvaluateMode(p,a,b)        (p)->lpVtbl->EvaluateMode(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirectDraw7_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDraw7_AddRef(p)             (p)->AddRef()
+#define IDirectDraw7_Release(p)            (p)->Release()
+/*** IDirectDraw methods ***/
+#define IDirectDraw7_Compact(p)                  (p)->Compact()
+#define IDirectDraw7_CreateClipper(p,a,b,c)      (p)->CreateClipper(a,b,c)
+#define IDirectDraw7_CreatePalette(p,a,b,c,d)    (p)->CreatePalette(a,b,c,d)
+#define IDirectDraw7_CreateSurface(p,a,b,c)      (p)->CreateSurface(a,b,c)
+#define IDirectDraw7_DuplicateSurface(p,a,b)     (p)->DuplicateSurface(a,b)
+#define IDirectDraw7_EnumDisplayModes(p,a,b,c,d) (p)->EnumDisplayModes(a,b,c,d)
+#define IDirectDraw7_EnumSurfaces(p,a,b,c,d)     (p)->EnumSurfaces(a,b,c,d)
+#define IDirectDraw7_FlipToGDISurface(p)         (p)->FlipToGDISurface()
+#define IDirectDraw7_GetCaps(p,a,b)              (p)->GetCaps(a,b)
+#define IDirectDraw7_GetDisplayMode(p,a)         (p)->GetDisplayMode(a)
+#define IDirectDraw7_GetFourCCCodes(p,a,b)       (p)->GetFourCCCodes(a,b)
+#define IDirectDraw7_GetGDISurface(p,a)          (p)->GetGDISurface(a)
+#define IDirectDraw7_GetMonitorFrequency(p,a)    (p)->GetMonitorFrequency(a)
+#define IDirectDraw7_GetScanLine(p,a)            (p)->GetScanLine(a)
+#define IDirectDraw7_GetVerticalBlankStatus(p,a) (p)->GetVerticalBlankStatus(a)
+#define IDirectDraw7_Initialize(p,a)             (p)->Initialize(a)
+#define IDirectDraw7_RestoreDisplayMode(p)       (p)->RestoreDisplayMode()
+#define IDirectDraw7_SetCooperativeLevel(p,a,b)  (p)->SetCooperativeLevel(a,b)
+#define IDirectDraw7_SetDisplayMode(p,a,b,c,d,e) (p)->SetDisplayMode(a,b,c,d,e)
+#define IDirectDraw7_WaitForVerticalBlank(p,a,b) (p)->WaitForVerticalBlank(a,b)
+/*** added in IDirectDraw2 ***/
+#define IDirectDraw7_GetAvailableVidMem(p,a,b,c) (p)->GetAvailableVidMem(a,b,c)
+/*** added in IDirectDraw4 ***/
+#define IDirectDraw7_GetSurfaceFromDC(p,a,b)    (p)->GetSurfaceFromDC(a,b)
+#define IDirectDraw7_RestoreAllSurfaces(p)     (p)->RestoreAllSurfaces()
+#define IDirectDraw7_TestCooperativeLevel(p)    (p)->TestCooperativeLevel()
+#define IDirectDraw7_GetDeviceIdentifier(p,a,b) (p)->GetDeviceIdentifier(a,b)
+/*** added in IDirectDraw 7 ***/
+#define IDirectDraw7_StartModeTest(p,a,b,c)     (p)->StartModeTest(a,b,c)
+#define IDirectDraw7_EvaluateMode(p,a,b)        (p)->EvaluateMode(a,b)
+#endif
+
+
+/*****************************************************************************
+ * IDirectDrawSurface interface
+ */
+#define INTERFACE IDirectDrawSurface
+DECLARE_INTERFACE_(IDirectDrawSurface,IUnknown)
+{
+          /*** IUnknown methods ***/
+/*00*/    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+/*04*/    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+/*08*/    STDMETHOD_(ULONG,Release)(THIS) PURE;
+          /*** IDirectDrawSurface methods ***/
+/*0c*/    STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE lpDDSAttachedSurface) PURE;
+/*10*/    STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT lpRect) PURE;
+/*14*/    STDMETHOD(Blt)(THIS_ LPRECT lpDestRect, LPDIRECTDRAWSURFACE lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwFlags, LPDDBLTFX lpDDBltFx) PURE;
+/*18*/    STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH lpDDBltBatch, DWORD dwCount, DWORD dwFlags) PURE;
+/*1c*/    STDMETHOD(BltFast)(THIS_ DWORD dwX, DWORD dwY, LPDIRECTDRAWSURFACE lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwTrans) PURE;
+/*20*/    STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE lpDDSAttachedSurface) PURE;
+/*24*/    STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback) PURE;
+/*28*/    STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD dwFlags, LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpfnCallback) PURE;
+/*2c*/    STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE lpDDSurfaceTargetOverride, DWORD dwFlags) PURE;
+/*30*/    STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS lpDDSCaps, LPDIRECTDRAWSURFACE *lplpDDAttachedSurface) PURE;
+/*34*/    STDMETHOD(GetBltStatus)(THIS_ DWORD dwFlags) PURE;
+/*38*/    STDMETHOD(GetCaps)(THIS_ LPDDSCAPS lpDDSCaps) PURE;
+/*3c*/    STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER *lplpDDClipper) PURE;
+/*40*/    STDMETHOD(GetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
+/*44*/    STDMETHOD(GetDC)(THIS_ HDC *lphDC) PURE;
+/*48*/    STDMETHOD(GetFlipStatus)(THIS_ DWORD dwFlags) PURE;
+/*4c*/    STDMETHOD(GetOverlayPosition)(THIS_ LPLONG lplX, LPLONG lplY) PURE;
+/*50*/    STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE *lplpDDPalette) PURE;
+/*54*/    STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT lpDDPixelFormat) PURE;
+/*58*/    STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
+/*5c*/    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW lpDD, LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
+/*60*/    STDMETHOD(IsLost)(THIS) PURE;
+/*64*/    STDMETHOD(Lock)(THIS_ LPRECT lpDestRect, LPDDSURFACEDESC lpDDSurfaceDesc, DWORD dwFlags, HANDLE hEvent) PURE;
+/*68*/    STDMETHOD(ReleaseDC)(THIS_ HDC hDC) PURE;
+/*6c*/    STDMETHOD(Restore)(THIS) PURE;
+/*70*/    STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER lpDDClipper) PURE;
+/*74*/    STDMETHOD(SetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
+/*78*/    STDMETHOD(SetOverlayPosition)(THIS_ LONG lX, LONG lY) PURE;
+/*7c*/    STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE lpDDPalette) PURE;
+/*80*/    STDMETHOD(Unlock)(THIS_ LPVOID lpSurfaceData) PURE;
+/*84*/    STDMETHOD(UpdateOverlay)(THIS_ LPRECT lpSrcRect, LPDIRECTDRAWSURFACE lpDDDestSurface, LPRECT lpDestRect, DWORD dwFlags, LPDDOVERLAYFX lpDDOverlayFx) PURE;
+/*88*/    STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD dwFlags) PURE;
+/*8c*/    STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE lpDDSReference) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDrawSurface_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawSurface_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectDrawSurface_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectDrawSurface methods ***/
+#define IDirectDrawSurface_AddAttachedSurface(p,a)      (p)->lpVtbl->AddAttachedSurface(p,a)
+#define IDirectDrawSurface_AddOverlayDirtyRect(p,a)     (p)->lpVtbl->AddOverlayDirtyRect(p,a)
+#define IDirectDrawSurface_Blt(p,a,b,c,d,e)             (p)->lpVtbl->Blt(p,a,b,c,d,e)
+#define IDirectDrawSurface_BltBatch(p,a,b,c)            (p)->lpVtbl->BltBatch(p,a,b,c)
+#define IDirectDrawSurface_BltFast(p,a,b,c,d,e)         (p)->lpVtbl->BltFast(p,a,b,c,d,e)
+#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
+#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b)  (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
+#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c)  (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
+#define IDirectDrawSurface_Flip(p,a,b)                  (p)->lpVtbl->Flip(p,a,b)
+#define IDirectDrawSurface_GetAttachedSurface(p,a,b)    (p)->lpVtbl->GetAttachedSurface(p,a,b)
+#define IDirectDrawSurface_GetBltStatus(p,a)            (p)->lpVtbl->GetBltStatus(p,a)
+#define IDirectDrawSurface_GetCaps(p,a)                 (p)->lpVtbl->GetCaps(p,a)
+#define IDirectDrawSurface_GetClipper(p,a)              (p)->lpVtbl->GetClipper(p,a)
+#define IDirectDrawSurface_GetColorKey(p,a,b)           (p)->lpVtbl->GetColorKey(p,a,b)
+#define IDirectDrawSurface_GetDC(p,a)                   (p)->lpVtbl->GetDC(p,a)
+#define IDirectDrawSurface_GetFlipStatus(p,a)           (p)->lpVtbl->GetFlipStatus(p,a)
+#define IDirectDrawSurface_GetOverlayPosition(p,a,b)    (p)->lpVtbl->GetOverlayPosition(p,a,b)
+#define IDirectDrawSurface_GetPalette(p,a)              (p)->lpVtbl->GetPalette(p,a)
+#define IDirectDrawSurface_GetPixelFormat(p,a)          (p)->lpVtbl->GetPixelFormat(p,a)
+#define IDirectDrawSurface_GetSurfaceDesc(p,a)          (p)->lpVtbl->GetSurfaceDesc(p,a)
+#define IDirectDrawSurface_Initialize(p,a,b)            (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectDrawSurface_IsLost(p)                    (p)->lpVtbl->IsLost(p)
+#define IDirectDrawSurface_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirectDrawSurface_ReleaseDC(p,a)               (p)->lpVtbl->ReleaseDC(p,a)
+#define IDirectDrawSurface_Restore(p)                   (p)->lpVtbl->Restore(p)
+#define IDirectDrawSurface_SetClipper(p,a)              (p)->lpVtbl->SetClipper(p,a)
+#define IDirectDrawSurface_SetColorKey(p,a,b)           (p)->lpVtbl->SetColorKey(p,a,b)
+#define IDirectDrawSurface_SetOverlayPosition(p,a,b)    (p)->lpVtbl->SetOverlayPosition(p,a,b)
+#define IDirectDrawSurface_SetPalette(p,a)              (p)->lpVtbl->SetPalette(p,a)
+#define IDirectDrawSurface_Unlock(p,a)                  (p)->lpVtbl->Unlock(p,a)
+#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e)   (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
+#define IDirectDrawSurface_UpdateOverlayDisplay(p,a)    (p)->lpVtbl->UpdateOverlayDisplay(p,a)
+#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b)   (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirectDrawSurface_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawSurface_AddRef(p)             (p)->AddRef()
+#define IDirectDrawSurface_Release(p)            (p)->Release()
+/*** IDirectDrawSurface methods ***/
+#define IDirectDrawSurface_AddAttachedSurface(p,a)      (p)->AddAttachedSurface(a)
+#define IDirectDrawSurface_AddOverlayDirtyRect(p,a)     (p)->AddOverlayDirtyRect(a)
+#define IDirectDrawSurface_Blt(p,a,b,c,d,e)             (p)->Blt(a,b,c,d,e)
+#define IDirectDrawSurface_BltBatch(p,a,b,c)            (p)->BltBatch(a,b,c)
+#define IDirectDrawSurface_BltFast(p,a,b,c,d,e)         (p)->BltFast(a,b,c,d,e)
+#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
+#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b)  (p)->EnumAttachedSurfaces(a,b)
+#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c)  (p)->EnumOverlayZOrders(a,b,c)
+#define IDirectDrawSurface_Flip(p,a,b)                  (p)->Flip(a,b)
+#define IDirectDrawSurface_GetAttachedSurface(p,a,b)    (p)->GetAttachedSurface(a,b)
+#define IDirectDrawSurface_GetBltStatus(p,a)            (p)->GetBltStatus(a)
+#define IDirectDrawSurface_GetCaps(p,a)                 (p)->GetCaps(a)
+#define IDirectDrawSurface_GetClipper(p,a)              (p)->GetClipper(a)
+#define IDirectDrawSurface_GetColorKey(p,a,b)           (p)->GetColorKey(a,b)
+#define IDirectDrawSurface_GetDC(p,a)                   (p)->GetDC(a)
+#define IDirectDrawSurface_GetFlipStatus(p,a)           (p)->GetFlipStatus(a)
+#define IDirectDrawSurface_GetOverlayPosition(p,a,b)    (p)->GetOverlayPosition(a,b)
+#define IDirectDrawSurface_GetPalette(p,a)              (p)->GetPalette(a)
+#define IDirectDrawSurface_GetPixelFormat(p,a)          (p)->GetPixelFormat(a)
+#define IDirectDrawSurface_GetSurfaceDesc(p,a)          (p)->GetSurfaceDesc(a)
+#define IDirectDrawSurface_Initialize(p,a,b)            (p)->Initialize(a,b)
+#define IDirectDrawSurface_IsLost(p)                    (p)->IsLost()
+#define IDirectDrawSurface_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
+#define IDirectDrawSurface_ReleaseDC(p,a)               (p)->ReleaseDC(a)
+#define IDirectDrawSurface_Restore(p)                   (p)->Restore()
+#define IDirectDrawSurface_SetClipper(p,a)              (p)->SetClipper(a)
+#define IDirectDrawSurface_SetColorKey(p,a,b)           (p)->SetColorKey(a,b)
+#define IDirectDrawSurface_SetOverlayPosition(p,a,b)    (p)->SetOverlayPosition(a,b)
+#define IDirectDrawSurface_SetPalette(p,a)              (p)->SetPalette(a)
+#define IDirectDrawSurface_Unlock(p,a)                  (p)->Unlock(a)
+#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e)   (p)->UpdateOverlay(a,b,c,d,e)
+#define IDirectDrawSurface_UpdateOverlayDisplay(p,a)    (p)->UpdateOverlayDisplay(a)
+#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b)   (p)->UpdateOverlayZOrder(a,b)
+#endif
+
+
+/*****************************************************************************
+ * IDirectDrawSurface2 interface
+ */
+/* Cannot inherit from IDirectDrawSurface because the LPDIRECTDRAWSURFACE parameters
+ * have been converted to LPDIRECTDRAWSURFACE2.
+ */
+#define INTERFACE IDirectDrawSurface2
+DECLARE_INTERFACE_(IDirectDrawSurface2,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectDrawSurface2 methods ***/
+    STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE2 lpDDSAttachedSurface) PURE;
+    STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT lpRect) PURE;
+    STDMETHOD(Blt)(THIS_ LPRECT lpDestRect, LPDIRECTDRAWSURFACE2 lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwFlags, LPDDBLTFX lpDDBltFx) PURE;
+    STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH lpDDBltBatch, DWORD dwCount, DWORD dwFlags) PURE;
+    STDMETHOD(BltFast)(THIS_ DWORD dwX, DWORD dwY, LPDIRECTDRAWSURFACE2 lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwTrans) PURE;
+    STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE2 lpDDSAttachedSurface) PURE;
+    STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback) PURE;
+    STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD dwFlags, LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpfnCallback) PURE;
+    STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE2 lpDDSurfaceTargetOverride, DWORD dwFlags) PURE;
+    STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS lpDDSCaps, LPDIRECTDRAWSURFACE2 *lplpDDAttachedSurface) PURE;
+    STDMETHOD(GetBltStatus)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(GetCaps)(THIS_ LPDDSCAPS lpDDSCaps) PURE;
+    STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER *lplpDDClipper) PURE;
+    STDMETHOD(GetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
+    STDMETHOD(GetDC)(THIS_ HDC *lphDC) PURE;
+    STDMETHOD(GetFlipStatus)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(GetOverlayPosition)(THIS_ LPLONG lplX, LPLONG lplY) PURE;
+    STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE *lplpDDPalette) PURE;
+    STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT lpDDPixelFormat) PURE;
+    STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
+    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW lpDD, LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
+    STDMETHOD(IsLost)(THIS) PURE;
+    STDMETHOD(Lock)(THIS_ LPRECT lpDestRect, LPDDSURFACEDESC lpDDSurfaceDesc, DWORD dwFlags, HANDLE hEvent) PURE;
+    STDMETHOD(ReleaseDC)(THIS_ HDC hDC) PURE;
+    STDMETHOD(Restore)(THIS) PURE;
+    STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER lpDDClipper) PURE;
+    STDMETHOD(SetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
+    STDMETHOD(SetOverlayPosition)(THIS_ LONG lX, LONG lY) PURE;
+    STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE lpDDPalette) PURE;
+    STDMETHOD(Unlock)(THIS_ LPVOID lpSurfaceData) PURE;
+    STDMETHOD(UpdateOverlay)(THIS_ LPRECT lpSrcRect, LPDIRECTDRAWSURFACE2 lpDDDestSurface, LPRECT lpDestRect, DWORD dwFlags, LPDDOVERLAYFX lpDDOverlayFx) PURE;
+    STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE2 lpDDSReference) PURE;
+    /* added in v2 */
+    STDMETHOD(GetDDInterface)(THIS_ LPVOID *lplpDD) PURE;
+    STDMETHOD(PageLock)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(PageUnlock)(THIS_ DWORD dwFlags) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDrawSurface2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawSurface2_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectDrawSurface2_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectDrawSurface methods (almost) ***/
+#define IDirectDrawSurface2_AddAttachedSurface(p,a)      (p)->lpVtbl->AddAttachedSurface(p,a)
+#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a)     (p)->lpVtbl->AddOverlayDirtyRect(p,a)
+#define IDirectDrawSurface2_Blt(p,a,b,c,d,e)             (p)->lpVtbl->Blt(p,a,b,c,d,e)
+#define IDirectDrawSurface2_BltBatch(p,a,b,c)            (p)->lpVtbl->BltBatch(p,a,b,c)
+#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e)         (p)->lpVtbl->BltFast(p,a,b,c,d,e)
+#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
+#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b)  (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
+#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c)  (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
+#define IDirectDrawSurface2_Flip(p,a,b)                  (p)->lpVtbl->Flip(p,a,b)
+#define IDirectDrawSurface2_GetAttachedSurface(p,a,b)    (p)->lpVtbl->GetAttachedSurface(p,a,b)
+#define IDirectDrawSurface2_GetBltStatus(p,a)            (p)->lpVtbl->GetBltStatus(p,a)
+#define IDirectDrawSurface2_GetCaps(p,a)                 (p)->lpVtbl->GetCaps(p,a)
+#define IDirectDrawSurface2_GetClipper(p,a)              (p)->lpVtbl->GetClipper(p,a)
+#define IDirectDrawSurface2_GetColorKey(p,a,b)           (p)->lpVtbl->GetColorKey(p,a,b)
+#define IDirectDrawSurface2_GetDC(p,a)                   (p)->lpVtbl->GetDC(p,a)
+#define IDirectDrawSurface2_GetFlipStatus(p,a)           (p)->lpVtbl->GetFlipStatus(p,a)
+#define IDirectDrawSurface2_GetOverlayPosition(p,a,b)    (p)->lpVtbl->GetOverlayPosition(p,a,b)
+#define IDirectDrawSurface2_GetPalette(p,a)              (p)->lpVtbl->GetPalette(p,a)
+#define IDirectDrawSurface2_GetPixelFormat(p,a)          (p)->lpVtbl->GetPixelFormat(p,a)
+#define IDirectDrawSurface2_GetSurfaceDesc(p,a)          (p)->lpVtbl->GetSurfaceDesc(p,a)
+#define IDirectDrawSurface2_Initialize(p,a,b)            (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectDrawSurface2_IsLost(p)                    (p)->lpVtbl->IsLost(p)
+#define IDirectDrawSurface2_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirectDrawSurface2_ReleaseDC(p,a)               (p)->lpVtbl->ReleaseDC(p,a)
+#define IDirectDrawSurface2_Restore(p)                   (p)->lpVtbl->Restore(p)
+#define IDirectDrawSurface2_SetClipper(p,a)              (p)->lpVtbl->SetClipper(p,a)
+#define IDirectDrawSurface2_SetColorKey(p,a,b)           (p)->lpVtbl->SetColorKey(p,a,b)
+#define IDirectDrawSurface2_SetOverlayPosition(p,a,b)    (p)->lpVtbl->SetOverlayPosition(p,a,b)
+#define IDirectDrawSurface2_SetPalette(p,a)              (p)->lpVtbl->SetPalette(p,a)
+#define IDirectDrawSurface2_Unlock(p,a)                  (p)->lpVtbl->Unlock(p,a)
+#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e)   (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
+#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a)    (p)->lpVtbl->UpdateOverlayDisplay(p,a)
+#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b)   (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
+/*** IDirectDrawSurface2 methods ***/
+#define IDirectDrawSurface2_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a)
+#define IDirectDrawSurface2_PageLock(p,a)       (p)->lpVtbl->PageLock(p,a)
+#define IDirectDrawSurface2_PageUnlock(p,a)     (p)->lpVtbl->PageUnlock(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirectDrawSurface2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawSurface2_AddRef(p)             (p)->AddRef()
+#define IDirectDrawSurface2_Release(p)            (p)->Release()
+/*** IDirectDrawSurface methods (almost) ***/
+#define IDirectDrawSurface2_AddAttachedSurface(p,a)      (p)->AddAttachedSurface(a)
+#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a)     (p)->AddOverlayDirtyRect(a)
+#define IDirectDrawSurface2_Blt(p,a,b,c,d,e)             (p)->Blt(a,b,c,d,e)
+#define IDirectDrawSurface2_BltBatch(p,a,b,c)            (p)->BltBatch(a,b,c)
+#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e)         (p)->BltFast(a,b,c,d,e)
+#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
+#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b)  (p)->EnumAttachedSurfaces(a,b)
+#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c)  (p)->EnumOverlayZOrders(a,b,c)
+#define IDirectDrawSurface2_Flip(p,a,b)                  (p)->Flip(a,b)
+#define IDirectDrawSurface2_GetAttachedSurface(p,a,b)    (p)->GetAttachedSurface(a,b)
+#define IDirectDrawSurface2_GetBltStatus(p,a)            (p)->GetBltStatus(a)
+#define IDirectDrawSurface2_GetCaps(p,a)                 (p)->GetCaps(a)
+#define IDirectDrawSurface2_GetClipper(p,a)              (p)->GetClipper(a)
+#define IDirectDrawSurface2_GetColorKey(p,a,b)           (p)->GetColorKey(a,b)
+#define IDirectDrawSurface2_GetDC(p,a)                   (p)->GetDC(a)
+#define IDirectDrawSurface2_GetFlipStatus(p,a)           (p)->GetFlipStatus(a)
+#define IDirectDrawSurface2_GetOverlayPosition(p,a,b)    (p)->GetOverlayPosition(a,b)
+#define IDirectDrawSurface2_GetPalette(p,a)              (p)->GetPalette(a)
+#define IDirectDrawSurface2_GetPixelFormat(p,a)          (p)->GetPixelFormat(a)
+#define IDirectDrawSurface2_GetSurfaceDesc(p,a)          (p)->GetSurfaceDesc(a)
+#define IDirectDrawSurface2_Initialize(p,a,b)            (p)->Initialize(a,b)
+#define IDirectDrawSurface2_IsLost(p)                    (p)->IsLost()
+#define IDirectDrawSurface2_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
+#define IDirectDrawSurface2_ReleaseDC(p,a)               (p)->ReleaseDC(a)
+#define IDirectDrawSurface2_Restore(p)                   (p)->Restore()
+#define IDirectDrawSurface2_SetClipper(p,a)              (p)->SetClipper(a)
+#define IDirectDrawSurface2_SetColorKey(p,a,b)           (p)->SetColorKey(a,b)
+#define IDirectDrawSurface2_SetOverlayPosition(p,a,b)    (p)->SetOverlayPosition(a,b)
+#define IDirectDrawSurface2_SetPalette(p,a)              (p)->SetPalette(a)
+#define IDirectDrawSurface2_Unlock(p,a)                  (p)->Unlock(a)
+#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e)   (p)->UpdateOverlay(a,b,c,d,e)
+#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a)    (p)->UpdateOverlayDisplay(a)
+#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b)   (p)->UpdateOverlayZOrder(a,b)
+/*** IDirectDrawSurface2 methods ***/
+#define IDirectDrawSurface2_GetDDInterface(p,a) (p)->GetDDInterface(a)
+#define IDirectDrawSurface2_PageLock(p,a)       (p)->PageLock(a)
+#define IDirectDrawSurface2_PageUnlock(p,a)     (p)->PageUnlock(a)
+#endif
+
+
+/*****************************************************************************
+ * IDirectDrawSurface3 interface
+ */
+/* Cannot inherit from IDirectDrawSurface2 because the LPDIRECTDRAWSURFACE2 parameters
+ * have been converted to LPDIRECTDRAWSURFACE3.
+ */
+#define INTERFACE IDirectDrawSurface3
+DECLARE_INTERFACE_(IDirectDrawSurface3,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectDrawSurface3 methods ***/
+    STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE3 lpDDSAttachedSurface) PURE;
+    STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT lpRect) PURE;
+    STDMETHOD(Blt)(THIS_ LPRECT lpDestRect, LPDIRECTDRAWSURFACE3 lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwFlags, LPDDBLTFX lpDDBltFx) PURE;
+    STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH lpDDBltBatch, DWORD dwCount, DWORD dwFlags) PURE;
+    STDMETHOD(BltFast)(THIS_ DWORD dwX, DWORD dwY, LPDIRECTDRAWSURFACE3 lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwTrans) PURE;
+    STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE3 lpDDSAttachedSurface) PURE;
+    STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback) PURE;
+    STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD dwFlags, LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpfnCallback) PURE;
+    STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE3 lpDDSurfaceTargetOverride, DWORD dwFlags) PURE;
+    STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS lpDDSCaps, LPDIRECTDRAWSURFACE3 *lplpDDAttachedSurface) PURE;
+    STDMETHOD(GetBltStatus)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(GetCaps)(THIS_ LPDDSCAPS lpDDSCaps) PURE;
+    STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER *lplpDDClipper) PURE;
+    STDMETHOD(GetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
+    STDMETHOD(GetDC)(THIS_ HDC *lphDC) PURE;
+    STDMETHOD(GetFlipStatus)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(GetOverlayPosition)(THIS_ LPLONG lplX, LPLONG lplY) PURE;
+    STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE *lplpDDPalette) PURE;
+    STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT lpDDPixelFormat) PURE;
+    STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
+    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW lpDD, LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
+    STDMETHOD(IsLost)(THIS) PURE;
+    STDMETHOD(Lock)(THIS_ LPRECT lpDestRect, LPDDSURFACEDESC lpDDSurfaceDesc, DWORD dwFlags, HANDLE hEvent) PURE;
+    STDMETHOD(ReleaseDC)(THIS_ HDC hDC) PURE;
+    STDMETHOD(Restore)(THIS) PURE;
+    STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER lpDDClipper) PURE;
+    STDMETHOD(SetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
+    STDMETHOD(SetOverlayPosition)(THIS_ LONG lX, LONG lY) PURE;
+    STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE lpDDPalette) PURE;
+    STDMETHOD(Unlock)(THIS_ LPVOID lpSurfaceData) PURE;
+    STDMETHOD(UpdateOverlay)(THIS_ LPRECT lpSrcRect, LPDIRECTDRAWSURFACE3 lpDDDestSurface, LPRECT lpDestRect, DWORD dwFlags, LPDDOVERLAYFX lpDDOverlayFx) PURE;
+    STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE3 lpDDSReference) PURE;
+    /* added in v2 */
+    STDMETHOD(GetDDInterface)(THIS_ LPVOID *lplpDD) PURE;
+    STDMETHOD(PageLock)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(PageUnlock)(THIS_ DWORD dwFlags) PURE;
+    /* added in v3 */
+    STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC lpDDSD, DWORD dwFlags) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDrawSurface3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawSurface3_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectDrawSurface3_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectDrawSurface methods (almost) ***/
+#define IDirectDrawSurface3_AddAttachedSurface(p,a)      (p)->lpVtbl->AddAttachedSurface(p,a)
+#define IDirectDrawSurface3_AddOverlayDirtyRect(p,a)     (p)->lpVtbl->AddOverlayDirtyRect(p,a)
+#define IDirectDrawSurface3_Blt(p,a,b,c,d,e)             (p)->lpVtbl->Blt(p,a,b,c,d,e)
+#define IDirectDrawSurface3_BltBatch(p,a,b,c)            (p)->lpVtbl->BltBatch(p,a,b,c)
+#define IDirectDrawSurface3_BltFast(p,a,b,c,d,e)         (p)->lpVtbl->BltFast(p,a,b,c,d,e)
+#define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
+#define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b)  (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
+#define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c)  (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
+#define IDirectDrawSurface3_Flip(p,a,b)                  (p)->lpVtbl->Flip(p,a,b)
+#define IDirectDrawSurface3_GetAttachedSurface(p,a,b)    (p)->lpVtbl->GetAttachedSurface(p,a,b)
+#define IDirectDrawSurface3_GetBltStatus(p,a)            (p)->lpVtbl->GetBltStatus(p,a)
+#define IDirectDrawSurface3_GetCaps(p,a)                 (p)->lpVtbl->GetCaps(p,a)
+#define IDirectDrawSurface3_GetClipper(p,a)              (p)->lpVtbl->GetClipper(p,a)
+#define IDirectDrawSurface3_GetColorKey(p,a,b)           (p)->lpVtbl->GetColorKey(p,a,b)
+#define IDirectDrawSurface3_GetDC(p,a)                   (p)->lpVtbl->GetDC(p,a)
+#define IDirectDrawSurface3_GetFlipStatus(p,a)           (p)->lpVtbl->GetFlipStatus(p,a)
+#define IDirectDrawSurface3_GetOverlayPosition(p,a,b)    (p)->lpVtbl->GetOverlayPosition(p,a,b)
+#define IDirectDrawSurface3_GetPalette(p,a)              (p)->lpVtbl->GetPalette(p,a)
+#define IDirectDrawSurface3_GetPixelFormat(p,a)          (p)->lpVtbl->GetPixelFormat(p,a)
+#define IDirectDrawSurface3_GetSurfaceDesc(p,a)          (p)->lpVtbl->GetSurfaceDesc(p,a)
+#define IDirectDrawSurface3_Initialize(p,a,b)            (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectDrawSurface3_IsLost(p)                    (p)->lpVtbl->IsLost(p)
+#define IDirectDrawSurface3_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirectDrawSurface3_ReleaseDC(p,a)               (p)->lpVtbl->ReleaseDC(p,a)
+#define IDirectDrawSurface3_Restore(p)                   (p)->lpVtbl->Restore(p)
+#define IDirectDrawSurface3_SetClipper(p,a)              (p)->lpVtbl->SetClipper(p,a)
+#define IDirectDrawSurface3_SetColorKey(p,a,b)           (p)->lpVtbl->SetColorKey(p,a,b)
+#define IDirectDrawSurface3_SetOverlayPosition(p,a,b)    (p)->lpVtbl->SetOverlayPosition(p,a,b)
+#define IDirectDrawSurface3_SetPalette(p,a)              (p)->lpVtbl->SetPalette(p,a)
+#define IDirectDrawSurface3_Unlock(p,a)                  (p)->lpVtbl->Unlock(p,a)
+#define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e)   (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
+#define IDirectDrawSurface3_UpdateOverlayDisplay(p,a)    (p)->lpVtbl->UpdateOverlayDisplay(p,a)
+#define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b)   (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
+/*** IDirectDrawSurface2 methods ***/
+#define IDirectDrawSurface3_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a)
+#define IDirectDrawSurface3_PageLock(p,a)       (p)->lpVtbl->PageLock(p,a)
+#define IDirectDrawSurface3_PageUnlock(p,a)     (p)->lpVtbl->PageUnlock(p,a)
+/*** IDirectDrawSurface3 methods ***/
+#define IDirectDrawSurface3_SetSurfaceDesc(p,a,b) (p)->lpVtbl->SetSurfaceDesc(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirectDrawSurface3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawSurface3_AddRef(p)             (p)->AddRef()
+#define IDirectDrawSurface3_Release(p)            (p)->Release()
+/*** IDirectDrawSurface methods (almost) ***/
+#define IDirectDrawSurface3_AddAttachedSurface(p,a)      (p)->AddAttachedSurface(a)
+#define IDirectDrawSurface3_AddOverlayDirtyRect(p,a)     (p)->AddOverlayDirtyRect(a)
+#define IDirectDrawSurface3_Blt(p,a,b,c,d,e)             (p)->Blt(a,b,c,d,e)
+#define IDirectDrawSurface3_BltBatch(p,a,b,c)            (p)->BltBatch(a,b,c)
+#define IDirectDrawSurface3_BltFast(p,a,b,c,d,e)         (p)->BltFast(a,b,c,d,e)
+#define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
+#define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b)  (p)->EnumAttachedSurfaces(a,b)
+#define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c)  (p)->EnumOverlayZOrders(a,b,c)
+#define IDirectDrawSurface3_Flip(p,a,b)                  (p)->Flip(a,b)
+#define IDirectDrawSurface3_GetAttachedSurface(p,a,b)    (p)->GetAttachedSurface(a,b)
+#define IDirectDrawSurface3_GetBltStatus(p,a)            (p)->GetBltStatus(a)
+#define IDirectDrawSurface3_GetCaps(p,a)                 (p)->GetCaps(a)
+#define IDirectDrawSurface3_GetClipper(p,a)              (p)->GetClipper(a)
+#define IDirectDrawSurface3_GetColorKey(p,a,b)           (p)->GetColorKey(a,b)
+#define IDirectDrawSurface3_GetDC(p,a)                   (p)->GetDC(a)
+#define IDirectDrawSurface3_GetFlipStatus(p,a)           (p)->GetFlipStatus(a)
+#define IDirectDrawSurface3_GetOverlayPosition(p,a,b)    (p)->GetOverlayPosition(a,b)
+#define IDirectDrawSurface3_GetPalette(p,a)              (p)->GetPalette(a)
+#define IDirectDrawSurface3_GetPixelFormat(p,a)          (p)->GetPixelFormat(a)
+#define IDirectDrawSurface3_GetSurfaceDesc(p,a)          (p)->GetSurfaceDesc(a)
+#define IDirectDrawSurface3_Initialize(p,a,b)            (p)->Initialize(a,b)
+#define IDirectDrawSurface3_IsLost(p)                    (p)->IsLost()
+#define IDirectDrawSurface3_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
+#define IDirectDrawSurface3_ReleaseDC(p,a)               (p)->ReleaseDC(a)
+#define IDirectDrawSurface3_Restore(p)                   (p)->Restore()
+#define IDirectDrawSurface3_SetClipper(p,a)              (p)->SetClipper(a)
+#define IDirectDrawSurface3_SetColorKey(p,a,b)           (p)->SetColorKey(a,b)
+#define IDirectDrawSurface3_SetOverlayPosition(p,a,b)    (p)->SetOverlayPosition(a,b)
+#define IDirectDrawSurface3_SetPalette(p,a)              (p)->SetPalette(a)
+#define IDirectDrawSurface3_Unlock(p,a)                  (p)->Unlock(a)
+#define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e)   (p)->UpdateOverlay(a,b,c,d,e)
+#define IDirectDrawSurface3_UpdateOverlayDisplay(p,a)    (p)->UpdateOverlayDisplay(a)
+#define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b)   (p)->UpdateOverlayZOrder(a,b)
+/*** IDirectDrawSurface2 methods ***/
+#define IDirectDrawSurface3_GetDDInterface(p,a) (p)->GetDDInterface(a)
+#define IDirectDrawSurface3_PageLock(p,a)       (p)->PageLock(a)
+#define IDirectDrawSurface3_PageUnlock(p,a)     (p)->PageUnlock(a)
+/*** IDirectDrawSurface3 methods ***/
+#define IDirectDrawSurface3_SetSurfaceDesc(p,a,b) (p)->SetSurfaceDesc(a,b)
+#endif
+
+
+/*****************************************************************************
+ * IDirectDrawSurface4 interface
+ */
+/* Cannot inherit from IDirectDrawSurface2 because DDSCAPS changed to DDSCAPS2.
+ */
+#define INTERFACE IDirectDrawSurface4
+DECLARE_INTERFACE_(IDirectDrawSurface4,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectDrawSurface4 methods ***/
+    STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE4 lpDDSAttachedSurface) PURE;
+    STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT lpRect) PURE;
+    STDMETHOD(Blt)(THIS_ LPRECT lpDestRect, LPDIRECTDRAWSURFACE4 lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwFlags, LPDDBLTFX lpDDBltFx) PURE;
+    STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH lpDDBltBatch, DWORD dwCount, DWORD dwFlags) PURE;
+    STDMETHOD(BltFast)(THIS_ DWORD dwX, DWORD dwY, LPDIRECTDRAWSURFACE4 lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwTrans) PURE;
+    STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE4 lpDDSAttachedSurface) PURE;
+    STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback) PURE;
+    STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD dwFlags, LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpfnCallback) PURE;
+    STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE4 lpDDSurfaceTargetOverride, DWORD dwFlags) PURE;
+    STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS2 lpDDSCaps, LPDIRECTDRAWSURFACE4 *lplpDDAttachedSurface) PURE;
+    STDMETHOD(GetBltStatus)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(GetCaps)(THIS_ LPDDSCAPS2 lpDDSCaps) PURE;
+    STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER *lplpDDClipper) PURE;
+    STDMETHOD(GetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
+    STDMETHOD(GetDC)(THIS_ HDC *lphDC) PURE;
+    STDMETHOD(GetFlipStatus)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(GetOverlayPosition)(THIS_ LPLONG lplX, LPLONG lplY) PURE;
+    STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE *lplpDDPalette) PURE;
+    STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT lpDDPixelFormat) PURE;
+    STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC2 lpDDSurfaceDesc) PURE;
+    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW lpDD, LPDDSURFACEDESC2 lpDDSurfaceDesc) PURE;
+    STDMETHOD(IsLost)(THIS) PURE;
+    STDMETHOD(Lock)(THIS_ LPRECT lpDestRect, LPDDSURFACEDESC2 lpDDSurfaceDesc, DWORD dwFlags, HANDLE hEvent) PURE;
+    STDMETHOD(ReleaseDC)(THIS_ HDC hDC) PURE;
+    STDMETHOD(Restore)(THIS) PURE;
+    STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER lpDDClipper) PURE;
+    STDMETHOD(SetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
+    STDMETHOD(SetOverlayPosition)(THIS_ LONG lX, LONG lY) PURE;
+    STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE lpDDPalette) PURE;
+    STDMETHOD(Unlock)(THIS_ LPRECT lpSurfaceData) PURE;
+    STDMETHOD(UpdateOverlay)(THIS_ LPRECT lpSrcRect, LPDIRECTDRAWSURFACE4 lpDDDestSurface, LPRECT lpDestRect, DWORD dwFlags, LPDDOVERLAYFX lpDDOverlayFx) PURE;
+    STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE4 lpDDSReference) PURE;
+    /* added in v2 */
+    STDMETHOD(GetDDInterface)(THIS_ LPVOID *lplpDD) PURE;
+    STDMETHOD(PageLock)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(PageUnlock)(THIS_ DWORD dwFlags) PURE;
+    /* added in v3 */
+    STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC2 lpDDSD, DWORD dwFlags) PURE;
+    /* added in v4 */
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID tag, LPVOID pData, DWORD cbSize, DWORD dwFlags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID tag, LPVOID pBuffer, LPDWORD pcbBufferSize) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID tag) PURE;
+    STDMETHOD(GetUniquenessValue)(THIS_ LPDWORD pValue) PURE;
+    STDMETHOD(ChangeUniquenessValue)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDrawSurface4_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawSurface4_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectDrawSurface4_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectDrawSurface (almost) methods ***/
+#define IDirectDrawSurface4_AddAttachedSurface(p,a)      (p)->lpVtbl->AddAttachedSurface(p,a)
+#define IDirectDrawSurface4_AddOverlayDirtyRect(p,a)     (p)->lpVtbl->AddOverlayDirtyRect(p,a)
+#define IDirectDrawSurface4_Blt(p,a,b,c,d,e)             (p)->lpVtbl->Blt(p,a,b,c,d,e)
+#define IDirectDrawSurface4_BltBatch(p,a,b,c)            (p)->lpVtbl->BltBatch(p,a,b,c)
+#define IDirectDrawSurface4_BltFast(p,a,b,c,d,e)         (p)->lpVtbl->BltFast(p,a,b,c,d,e)
+#define IDirectDrawSurface4_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
+#define IDirectDrawSurface4_EnumAttachedSurfaces(p,a,b)  (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
+#define IDirectDrawSurface4_EnumOverlayZOrders(p,a,b,c)  (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
+#define IDirectDrawSurface4_Flip(p,a,b)                  (p)->lpVtbl->Flip(p,a,b)
+#define IDirectDrawSurface4_GetAttachedSurface(p,a,b)    (p)->lpVtbl->GetAttachedSurface(p,a,b)
+#define IDirectDrawSurface4_GetBltStatus(p,a)            (p)->lpVtbl->GetBltStatus(p,a)
+#define IDirectDrawSurface4_GetCaps(p,a)                 (p)->lpVtbl->GetCaps(p,a)
+#define IDirectDrawSurface4_GetClipper(p,a)              (p)->lpVtbl->GetClipper(p,a)
+#define IDirectDrawSurface4_GetColorKey(p,a,b)           (p)->lpVtbl->GetColorKey(p,a,b)
+#define IDirectDrawSurface4_GetDC(p,a)                   (p)->lpVtbl->GetDC(p,a)
+#define IDirectDrawSurface4_GetFlipStatus(p,a)           (p)->lpVtbl->GetFlipStatus(p,a)
+#define IDirectDrawSurface4_GetOverlayPosition(p,a,b)    (p)->lpVtbl->GetOverlayPosition(p,a,b)
+#define IDirectDrawSurface4_GetPalette(p,a)              (p)->lpVtbl->GetPalette(p,a)
+#define IDirectDrawSurface4_GetPixelFormat(p,a)          (p)->lpVtbl->GetPixelFormat(p,a)
+#define IDirectDrawSurface4_GetSurfaceDesc(p,a)          (p)->lpVtbl->GetSurfaceDesc(p,a)
+#define IDirectDrawSurface4_Initialize(p,a,b)            (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectDrawSurface4_IsLost(p)                    (p)->lpVtbl->IsLost(p)
+#define IDirectDrawSurface4_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirectDrawSurface4_ReleaseDC(p,a)               (p)->lpVtbl->ReleaseDC(p,a)
+#define IDirectDrawSurface4_Restore(p)                   (p)->lpVtbl->Restore(p)
+#define IDirectDrawSurface4_SetClipper(p,a)              (p)->lpVtbl->SetClipper(p,a)
+#define IDirectDrawSurface4_SetColorKey(p,a,b)           (p)->lpVtbl->SetColorKey(p,a,b)
+#define IDirectDrawSurface4_SetOverlayPosition(p,a,b)    (p)->lpVtbl->SetOverlayPosition(p,a,b)
+#define IDirectDrawSurface4_SetPalette(p,a)              (p)->lpVtbl->SetPalette(p,a)
+#define IDirectDrawSurface4_Unlock(p,a)                  (p)->lpVtbl->Unlock(p,a)
+#define IDirectDrawSurface4_UpdateOverlay(p,a,b,c,d,e)   (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
+#define IDirectDrawSurface4_UpdateOverlayDisplay(p,a)    (p)->lpVtbl->UpdateOverlayDisplay(p,a)
+#define IDirectDrawSurface4_UpdateOverlayZOrder(p,a,b)   (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
+/*** IDirectDrawSurface2 methods ***/
+#define IDirectDrawSurface4_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a)
+#define IDirectDrawSurface4_PageLock(p,a)       (p)->lpVtbl->PageLock(p,a)
+#define IDirectDrawSurface4_PageUnlock(p,a)     (p)->lpVtbl->PageUnlock(p,a)
+/*** IDirectDrawSurface3 methods ***/
+#define IDirectDrawSurface4_SetSurfaceDesc(p,a,b) (p)->lpVtbl->SetSurfaceDesc(p,a,b)
+/*** IDirectDrawSurface4 methods ***/
+#define IDirectDrawSurface4_SetPrivateData(p,a,b,c,d) (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirectDrawSurface4_GetPrivateData(p,a,b,c)   (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirectDrawSurface4_FreePrivateData(p,a)      (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirectDrawSurface4_GetUniquenessValue(p,a)   (p)->lpVtbl->GetUniquenessValue(p,a)
+#define IDirectDrawSurface4_ChangeUniquenessValue(p)  (p)->lpVtbl->ChangeUniquenessValue(p)
+#else
+/*** IUnknown methods ***/
+#define IDirectDrawSurface4_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawSurface4_AddRef(p)             (p)->AddRef()
+#define IDirectDrawSurface4_Release(p)            (p)->Release()
+/*** IDirectDrawSurface (almost) methods ***/
+#define IDirectDrawSurface4_AddAttachedSurface(p,a)      (p)->AddAttachedSurface(a)
+#define IDirectDrawSurface4_AddOverlayDirtyRect(p,a)     (p)->AddOverlayDirtyRect(a)
+#define IDirectDrawSurface4_Blt(p,a,b,c,d,e)             (p)->Blt(a,b,c,d,e)
+#define IDirectDrawSurface4_BltBatch(p,a,b,c)            (p)->BltBatch(a,b,c)
+#define IDirectDrawSurface4_BltFast(p,a,b,c,d,e)         (p)->BltFast(a,b,c,d,e)
+#define IDirectDrawSurface4_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
+#define IDirectDrawSurface4_EnumAttachedSurfaces(p,a,b)  (p)->EnumAttachedSurfaces(a,b)
+#define IDirectDrawSurface4_EnumOverlayZOrders(p,a,b,c)  (p)->EnumOverlayZOrders(a,b,c)
+#define IDirectDrawSurface4_Flip(p,a,b)                  (p)->Flip(a,b)
+#define IDirectDrawSurface4_GetAttachedSurface(p,a,b)    (p)->GetAttachedSurface(a,b)
+#define IDirectDrawSurface4_GetBltStatus(p,a)            (p)->GetBltStatus(a)
+#define IDirectDrawSurface4_GetCaps(p,a)                 (p)->GetCaps(a)
+#define IDirectDrawSurface4_GetClipper(p,a)              (p)->GetClipper(a)
+#define IDirectDrawSurface4_GetColorKey(p,a,b)           (p)->GetColorKey(a,b)
+#define IDirectDrawSurface4_GetDC(p,a)                   (p)->GetDC(a)
+#define IDirectDrawSurface4_GetFlipStatus(p,a)           (p)->GetFlipStatus(a)
+#define IDirectDrawSurface4_GetOverlayPosition(p,a,b)    (p)->GetOverlayPosition(a,b)
+#define IDirectDrawSurface4_GetPalette(p,a)              (p)->GetPalette(a)
+#define IDirectDrawSurface4_GetPixelFormat(p,a)          (p)->GetPixelFormat(a)
+#define IDirectDrawSurface4_GetSurfaceDesc(p,a)          (p)->GetSurfaceDesc(a)
+#define IDirectDrawSurface4_Initialize(p,a,b)            (p)->Initialize(a,b)
+#define IDirectDrawSurface4_IsLost(p)                    (p)->IsLost()
+#define IDirectDrawSurface4_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
+#define IDirectDrawSurface4_ReleaseDC(p,a)               (p)->ReleaseDC(a)
+#define IDirectDrawSurface4_Restore(p)                   (p)->Restore()
+#define IDirectDrawSurface4_SetClipper(p,a)              (p)->SetClipper(a)
+#define IDirectDrawSurface4_SetColorKey(p,a,b)           (p)->SetColorKey(a,b)
+#define IDirectDrawSurface4_SetOverlayPosition(p,a,b)    (p)->SetOverlayPosition(a,b)
+#define IDirectDrawSurface4_SetPalette(p,a)              (p)->SetPalette(a)
+#define IDirectDrawSurface4_Unlock(p,a)                  (p)->Unlock(a)
+#define IDirectDrawSurface4_UpdateOverlay(p,a,b,c,d,e)   (p)->UpdateOverlay(a,b,c,d,e)
+#define IDirectDrawSurface4_UpdateOverlayDisplay(p,a)    (p)->UpdateOverlayDisplay(a)
+#define IDirectDrawSurface4_UpdateOverlayZOrder(p,a,b)   (p)->UpdateOverlayZOrder(a,b)
+/*** IDirectDrawSurface2 methods ***/
+#define IDirectDrawSurface4_GetDDInterface(p,a) (p)->GetDDInterface(a)
+#define IDirectDrawSurface4_PageLock(p,a)       (p)->PageLock(a)
+#define IDirectDrawSurface4_PageUnlock(p,a)     (p)->PageUnlock(a)
+/*** IDirectDrawSurface3 methods ***/
+#define IDirectDrawSurface4_SetSurfaceDesc(p,a,b) (p)->SetSurfaceDesc(a,b)
+/*** IDirectDrawSurface4 methods ***/
+#define IDirectDrawSurface4_SetPrivateData(p,a,b,c,d) (p)->SetPrivateData(a,b,c,d)
+#define IDirectDrawSurface4_GetPrivateData(p,a,b,c)   (p)->GetPrivateData(a,b,c)
+#define IDirectDrawSurface4_FreePrivateData(p,a)      (p)->FreePrivateData(a)
+#define IDirectDrawSurface4_GetUniquenessValue(p,a)   (p)->GetUniquenessValue(a)
+#define IDirectDrawSurface4_ChangeUniquenessValue(p)  (p)->ChangeUniquenessValue()
+#endif
+
+
+/*****************************************************************************
+ * IDirectDrawSurface7 interface
+ */
+#define INTERFACE IDirectDrawSurface7
+DECLARE_INTERFACE_(IDirectDrawSurface7,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectDrawSurface7 methods ***/
+    STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE7 lpDDSAttachedSurface) PURE;
+    STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT lpRect) PURE;
+    STDMETHOD(Blt)(THIS_ LPRECT lpDestRect, LPDIRECTDRAWSURFACE7 lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwFlags, LPDDBLTFX lpDDBltFx) PURE;
+    STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH lpDDBltBatch, DWORD dwCount, DWORD dwFlags) PURE;
+    STDMETHOD(BltFast)(THIS_ DWORD dwX, DWORD dwY, LPDIRECTDRAWSURFACE7 lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwTrans) PURE;
+    STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE7 lpDDSAttachedSurface) PURE;
+    STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID lpContext, LPDDENUMSURFACESCALLBACK7 lpEnumSurfacesCallback) PURE;
+    STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD dwFlags, LPVOID lpContext, LPDDENUMSURFACESCALLBACK7 lpfnCallback) PURE;
+    STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE7 lpDDSurfaceTargetOverride, DWORD dwFlags) PURE;
+    STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS2 lpDDSCaps, LPDIRECTDRAWSURFACE7 *lplpDDAttachedSurface) PURE;
+    STDMETHOD(GetBltStatus)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(GetCaps)(THIS_ LPDDSCAPS2 lpDDSCaps) PURE;
+    STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER *lplpDDClipper) PURE;
+    STDMETHOD(GetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
+    STDMETHOD(GetDC)(THIS_ HDC *lphDC) PURE;
+    STDMETHOD(GetFlipStatus)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(GetOverlayPosition)(THIS_ LPLONG lplX, LPLONG lplY) PURE;
+    STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE *lplpDDPalette) PURE;
+    STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT lpDDPixelFormat) PURE;
+    STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC2 lpDDSurfaceDesc) PURE;
+    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW lpDD, LPDDSURFACEDESC2 lpDDSurfaceDesc) PURE;
+    STDMETHOD(IsLost)(THIS) PURE;
+    STDMETHOD(Lock)(THIS_ LPRECT lpDestRect, LPDDSURFACEDESC2 lpDDSurfaceDesc, DWORD dwFlags, HANDLE hEvent) PURE;
+    STDMETHOD(ReleaseDC)(THIS_ HDC hDC) PURE;
+    STDMETHOD(Restore)(THIS) PURE;
+    STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER lpDDClipper) PURE;
+    STDMETHOD(SetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
+    STDMETHOD(SetOverlayPosition)(THIS_ LONG lX, LONG lY) PURE;
+    STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE lpDDPalette) PURE;
+    STDMETHOD(Unlock)(THIS_ LPRECT lpSurfaceData) PURE;
+    STDMETHOD(UpdateOverlay)(THIS_ LPRECT lpSrcRect, LPDIRECTDRAWSURFACE7 lpDDDestSurface, LPRECT lpDestRect, DWORD dwFlags, LPDDOVERLAYFX lpDDOverlayFx) PURE;
+    STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE7 lpDDSReference) PURE;
+    /* added in v2 */
+    STDMETHOD(GetDDInterface)(THIS_ LPVOID *lplpDD) PURE;
+    STDMETHOD(PageLock)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(PageUnlock)(THIS_ DWORD dwFlags) PURE;
+    /* added in v3 */
+    STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC2 lpDDSD, DWORD dwFlags) PURE;
+    /* added in v4 */
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID tag, LPVOID pData, DWORD cbSize, DWORD dwFlags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID tag, LPVOID pBuffer, LPDWORD pcbBufferSize) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID tag) PURE;
+    STDMETHOD(GetUniquenessValue)(THIS_ LPDWORD pValue) PURE;
+    STDMETHOD(ChangeUniquenessValue)(THIS) PURE;
+    /* added in v7 */
+    STDMETHOD(SetPriority)(THIS_ DWORD prio) PURE;
+    STDMETHOD(GetPriority)(THIS_ LPDWORD prio) PURE;
+    STDMETHOD(SetLOD)(THIS_ DWORD lod) PURE;
+    STDMETHOD(GetLOD)(THIS_ LPDWORD lod) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDrawSurface7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawSurface7_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectDrawSurface7_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectDrawSurface (almost) methods ***/
+#define IDirectDrawSurface7_AddAttachedSurface(p,a)      (p)->lpVtbl->AddAttachedSurface(p,a)
+#define IDirectDrawSurface7_AddOverlayDirtyRect(p,a)     (p)->lpVtbl->AddOverlayDirtyRect(p,a)
+#define IDirectDrawSurface7_Blt(p,a,b,c,d,e)             (p)->lpVtbl->Blt(p,a,b,c,d,e)
+#define IDirectDrawSurface7_BltBatch(p,a,b,c)            (p)->lpVtbl->BltBatch(p,a,b,c)
+#define IDirectDrawSurface7_BltFast(p,a,b,c,d,e)         (p)->lpVtbl->BltFast(p,a,b,c,d,e)
+#define IDirectDrawSurface7_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
+#define IDirectDrawSurface7_EnumAttachedSurfaces(p,a,b)  (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
+#define IDirectDrawSurface7_EnumOverlayZOrders(p,a,b,c)  (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
+#define IDirectDrawSurface7_Flip(p,a,b)                  (p)->lpVtbl->Flip(p,a,b)
+#define IDirectDrawSurface7_GetAttachedSurface(p,a,b)    (p)->lpVtbl->GetAttachedSurface(p,a,b)
+#define IDirectDrawSurface7_GetBltStatus(p,a)            (p)->lpVtbl->GetBltStatus(p,a)
+#define IDirectDrawSurface7_GetCaps(p,a)                 (p)->lpVtbl->GetCaps(p,a)
+#define IDirectDrawSurface7_GetClipper(p,a)              (p)->lpVtbl->GetClipper(p,a)
+#define IDirectDrawSurface7_GetColorKey(p,a,b)           (p)->lpVtbl->GetColorKey(p,a,b)
+#define IDirectDrawSurface7_GetDC(p,a)                   (p)->lpVtbl->GetDC(p,a)
+#define IDirectDrawSurface7_GetFlipStatus(p,a)           (p)->lpVtbl->GetFlipStatus(p,a)
+#define IDirectDrawSurface7_GetOverlayPosition(p,a,b)    (p)->lpVtbl->GetOverlayPosition(p,a,b)
+#define IDirectDrawSurface7_GetPalette(p,a)              (p)->lpVtbl->GetPalette(p,a)
+#define IDirectDrawSurface7_GetPixelFormat(p,a)          (p)->lpVtbl->GetPixelFormat(p,a)
+#define IDirectDrawSurface7_GetSurfaceDesc(p,a)          (p)->lpVtbl->GetSurfaceDesc(p,a)
+#define IDirectDrawSurface7_Initialize(p,a,b)            (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectDrawSurface7_IsLost(p)                    (p)->lpVtbl->IsLost(p)
+#define IDirectDrawSurface7_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirectDrawSurface7_ReleaseDC(p,a)               (p)->lpVtbl->ReleaseDC(p,a)
+#define IDirectDrawSurface7_Restore(p)                   (p)->lpVtbl->Restore(p)
+#define IDirectDrawSurface7_SetClipper(p,a)              (p)->lpVtbl->SetClipper(p,a)
+#define IDirectDrawSurface7_SetColorKey(p,a,b)           (p)->lpVtbl->SetColorKey(p,a,b)
+#define IDirectDrawSurface7_SetOverlayPosition(p,a,b)    (p)->lpVtbl->SetOverlayPosition(p,a,b)
+#define IDirectDrawSurface7_SetPalette(p,a)              (p)->lpVtbl->SetPalette(p,a)
+#define IDirectDrawSurface7_Unlock(p,a)                  (p)->lpVtbl->Unlock(p,a)
+#define IDirectDrawSurface7_UpdateOverlay(p,a,b,c,d,e)   (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
+#define IDirectDrawSurface7_UpdateOverlayDisplay(p,a)    (p)->lpVtbl->UpdateOverlayDisplay(p,a)
+#define IDirectDrawSurface7_UpdateOverlayZOrder(p,a,b)   (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
+/*** IDirectDrawSurface2 methods ***/
+#define IDirectDrawSurface7_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a)
+#define IDirectDrawSurface7_PageLock(p,a)       (p)->lpVtbl->PageLock(p,a)
+#define IDirectDrawSurface7_PageUnlock(p,a)     (p)->lpVtbl->PageUnlock(p,a)
+/*** IDirectDrawSurface3 methods ***/
+#define IDirectDrawSurface7_SetSurfaceDesc(p,a,b) (p)->lpVtbl->SetSurfaceDesc(p,a,b)
+/*** IDirectDrawSurface4 methods ***/
+#define IDirectDrawSurface7_SetPrivateData(p,a,b,c,d) (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirectDrawSurface7_GetPrivateData(p,a,b,c)   (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirectDrawSurface7_FreePrivateData(p,a)      (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirectDrawSurface7_GetUniquenessValue(p,a)   (p)->lpVtbl->GetUniquenessValue(p,a)
+#define IDirectDrawSurface7_ChangeUniquenessValue(p)  (p)->lpVtbl->ChangeUniquenessValue(p)
+/*** IDirectDrawSurface7 methods ***/
+#define IDirectDrawSurface7_SetPriority(p,a)          (p)->lpVtbl->SetPriority(p,a)
+#define IDirectDrawSurface7_GetPriority(p,a)          (p)->lpVtbl->GetPriority(p,a)
+#define IDirectDrawSurface7_SetLOD(p,a)               (p)->lpVtbl->SetLOD(p,a)
+#define IDirectDrawSurface7_GetLOD(p,a)               (p)->lpVtbl->GetLOD(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirectDrawSurface7_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawSurface7_AddRef(p)             (p)->AddRef()
+#define IDirectDrawSurface7_Release(p)            (p)->Release()
+/*** IDirectDrawSurface (almost) methods ***/
+#define IDirectDrawSurface7_AddAttachedSurface(p,a)      (p)->AddAttachedSurface(a)
+#define IDirectDrawSurface7_AddOverlayDirtyRect(p,a)     (p)->AddOverlayDirtyRect(a)
+#define IDirectDrawSurface7_Blt(p,a,b,c,d,e)             (p)->Blt(a,b,c,d,e)
+#define IDirectDrawSurface7_BltBatch(p,a,b,c)            (p)->BltBatch(a,b,c)
+#define IDirectDrawSurface7_BltFast(p,a,b,c,d,e)         (p)->BltFast(a,b,c,d,e)
+#define IDirectDrawSurface7_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
+#define IDirectDrawSurface7_EnumAttachedSurfaces(p,a,b)  (p)->EnumAttachedSurfaces(a,b)
+#define IDirectDrawSurface7_EnumOverlayZOrders(p,a,b,c)  (p)->EnumOverlayZOrders(a,b,c)
+#define IDirectDrawSurface7_Flip(p,a,b)                  (p)->Flip(a,b)
+#define IDirectDrawSurface7_GetAttachedSurface(p,a,b)    (p)->GetAttachedSurface(a,b)
+#define IDirectDrawSurface7_GetBltStatus(p,a)            (p)->GetBltStatus(a)
+#define IDirectDrawSurface7_GetCaps(p,a)                 (p)->GetCaps(a)
+#define IDirectDrawSurface7_GetClipper(p,a)              (p)->GetClipper(a)
+#define IDirectDrawSurface7_GetColorKey(p,a,b)           (p)->GetColorKey(a,b)
+#define IDirectDrawSurface7_GetDC(p,a)                   (p)->GetDC(a)
+#define IDirectDrawSurface7_GetFlipStatus(p,a)           (p)->GetFlipStatus(a)
+#define IDirectDrawSurface7_GetOverlayPosition(p,a,b)    (p)->GetOverlayPosition(a,b)
+#define IDirectDrawSurface7_GetPalette(p,a)              (p)->GetPalette(a)
+#define IDirectDrawSurface7_GetPixelFormat(p,a)          (p)->GetPixelFormat(a)
+#define IDirectDrawSurface7_GetSurfaceDesc(p,a)          (p)->GetSurfaceDesc(a)
+#define IDirectDrawSurface7_Initialize(p,a,b)            (p)->Initialize(a,b)
+#define IDirectDrawSurface7_IsLost(p)                    (p)->IsLost()
+#define IDirectDrawSurface7_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
+#define IDirectDrawSurface7_ReleaseDC(p,a)               (p)->ReleaseDC(a)
+#define IDirectDrawSurface7_Restore(p)                   (p)->Restore()
+#define IDirectDrawSurface7_SetClipper(p,a)              (p)->SetClipper(a)
+#define IDirectDrawSurface7_SetColorKey(p,a,b)           (p)->SetColorKey(a,b)
+#define IDirectDrawSurface7_SetOverlayPosition(p,a,b)    (p)->SetOverlayPosition(a,b)
+#define IDirectDrawSurface7_SetPalette(p,a)              (p)->SetPalette(a)
+#define IDirectDrawSurface7_Unlock(p,a)                  (p)->Unlock(a)
+#define IDirectDrawSurface7_UpdateOverlay(p,a,b,c,d,e)   (p)->UpdateOverlay(a,b,c,d,e)
+#define IDirectDrawSurface7_UpdateOverlayDisplay(p,a)    (p)->UpdateOverlayDisplay(a)
+#define IDirectDrawSurface7_UpdateOverlayZOrder(p,a,b)   (p)->UpdateOverlayZOrder(a,b)
+/*** IDirectDrawSurface2 methods ***/
+#define IDirectDrawSurface7_GetDDInterface(p,a) (p)->GetDDInterface(a)
+#define IDirectDrawSurface7_PageLock(p,a)       (p)->PageLock(a)
+#define IDirectDrawSurface7_PageUnlock(p,a)     (p)->PageUnlock(a)
+/*** IDirectDrawSurface3 methods ***/
+#define IDirectDrawSurface7_SetSurfaceDesc(p,a,b) (p)->SetSurfaceDesc(a,b)
+/*** IDirectDrawSurface4 methods ***/
+#define IDirectDrawSurface7_SetPrivateData(p,a,b,c,d) (p)->SetPrivateData(a,b,c,d)
+#define IDirectDrawSurface7_GetPrivateData(p,a,b,c)   (p)->GetPrivateData(a,b,c)
+#define IDirectDrawSurface7_FreePrivateData(p,a)      (p)->FreePrivateData(a)
+#define IDirectDrawSurface7_GetUniquenessValue(p,a)   (p)->GetUniquenessValue(a)
+#define IDirectDrawSurface7_ChangeUniquenessValue(p)  (p)->ChangeUniquenessValue()
+/*** IDirectDrawSurface7 methods ***/
+#define IDirectDrawSurface7_SetPriority(p,a)          (p)->SetPriority(a)
+#define IDirectDrawSurface7_GetPriority(p,a)          (p)->GetPriority(a)
+#define IDirectDrawSurface7_SetLOD(p,a)               (p)->SetLOD(a)
+#define IDirectDrawSurface7_GetLOD(p,a)               (p)->GetLOD(a)
+#endif
+
+/*****************************************************************************
+ * IDirectDrawColorControl interface
+ */
+#define INTERFACE IDirectDrawColorControl
+DECLARE_INTERFACE_(IDirectDrawColorControl,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectDrawColorControl methods ***/
+    STDMETHOD(GetColorControls)(THIS_ LPDDCOLORCONTROL lpColorControl) PURE;
+    STDMETHOD(SetColorControls)(THIS_ LPDDCOLORCONTROL lpColorControl) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDrawColorControl_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawColorControl_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectDrawColorControl_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectDrawColorControl methods ***/
+#define IDirectDrawColorControl_GetColorControls(p,a) (p)->lpVtbl->GetColorControls(p,a)
+#define IDirectDrawColorControl_SetColorControls(p,a) (p)->lpVtbl->SetColorControls(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirectDrawColorControl_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawColorControl_AddRef(p)             (p)->AddRef()
+#define IDirectDrawColorControl_Release(p)            (p)->Release()
+/*** IDirectDrawColorControl methods ***/
+#define IDirectDrawColorControl_GetColorControls(p,a) (p)->GetColorControls(a)
+#define IDirectDrawColorControl_SetColorControls(p,a) (p)->SetColorControls(a)
+#endif
+
+/*****************************************************************************
+ * IDirectDrawGammaControl interface
+ */
+#define INTERFACE IDirectDrawGammaControl
+DECLARE_INTERFACE_(IDirectDrawGammaControl,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectDrawGammaControl methods ***/
+    STDMETHOD(GetGammaRamp)(THIS_ DWORD dwFlags, LPDDGAMMARAMP lpGammaRamp) PURE;
+    STDMETHOD(SetGammaRamp)(THIS_ DWORD dwFlags, LPDDGAMMARAMP lpGammaRamp) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDrawGammaControl_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawGammaControl_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectDrawGammaControl_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectDrawGammaControl methods ***/
+#define IDirectDrawGammaControl_GetGammaRamp(p,a,b)   (p)->lpVtbl->GetGammaRamp(p,a,b)
+#define IDirectDrawGammaControl_SetGammaRamp(p,a,b)   (p)->lpVtbl->SetGammaRamp(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirectDrawGammaControl_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawGammaControl_AddRef(p)             (p)->AddRef()
+#define IDirectDrawGammaControl_Release(p)            (p)->Release()
+/*** IDirectDrawGammaControl methods ***/
+#define IDirectDrawGammaControl_GetGammaRamp(p,a,b)   (p)->GetGammaRamp(a,b)
+#define IDirectDrawGammaControl_SetGammaRamp(p,a,b)   (p)->SetGammaRamp(a,b)
+#endif
+
+
+HRESULT WINAPI DirectDrawCreate(GUID*,LPDIRECTDRAW*,IUnknown*);
+HRESULT WINAPI DirectDrawCreateEx(GUID*,LPVOID*,REFIID,IUnknown*);
+HRESULT WINAPI DirectDrawCreateClipper(DWORD,LPDIRECTDRAWCLIPPER*,IUnknown*);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif /* __WINE_DDRAW_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddrawi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddrawi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddrawi.h	(revision 16410)
@@ -0,0 +1,1070 @@
+/*
+ * DirectDraw driver interface
+ * (DirectX 7 version)
+ *
+ * Copyright (C) 2001 Ove Kaaven
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DDRAWI_H
+#define __WINE_DDRAWI_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <ddraw.h>
+#include <dciddi.h> /* the DD HAL is layered onto DCI escapes */
+
+typedef struct _DDVIDEOPORTCAPS *LPDDVIDEOPORTCAPS; /* should be in dvp.h */
+typedef struct _DDKERNELCAPS *LPDDKERNELCAPS; /* should be in ddkernel.h */
+typedef struct _VMEMHEAP *LPVMEMHEAP; /* should be in dmemmgr.h */
+
+#define DDAPI WINAPI
+
+/* the DirectDraw versions */
+#define DD_VERSION		0x0200 /* compatibility version */
+#define DD_RUNTIME_VERSION	0x0700 /* actual version */
+
+/* the HAL version returned from QUERYESCSUPPORT - DCICOMMAND */
+#define DD_HAL_VERSION	0x0100
+
+/* more DCICOMMAND escapes */
+#define DDCREATEDRIVEROBJECT	10
+#define DDGET32BITDRIVERNAME	11
+#define DDNEWCALLBACKFNS	12
+#define DDVERSIONINFO		13
+
+#define MAX_DRIVER_NAME		CCHDEVICENAME
+
+/*****************************************************************************
+ * Initialization stuff
+ */
+typedef struct {
+    char szName[260];
+    char szEntryPoint[64];
+    DWORD dwContext;
+} DD32BITDRIVERDATA,*LPDD32BITDRIVERDATA;
+
+typedef struct {
+    DWORD dwHALVersion;
+    ULONG_PTR dwReserved1;
+    ULONG_PTR dwReserved2;
+} DDVERSIONDATA,*LPDDVERSIONDATA;
+
+typedef DWORD (PASCAL *LPDD32BITDRIVERINIT)(DWORD dwContext);
+
+/* pointer to video memory */
+typedef ULONG_PTR FLATPTR;
+
+/* predeclare some structures */
+typedef struct _DDHALINFO *LPDDHALINFO;
+typedef struct _DDRAWI_DIRECTDRAW_INT *LPDDRAWI_DIRECTDRAW_INT;
+typedef struct _DDRAWI_DIRECTDRAW_LCL *LPDDRAWI_DIRECTDRAW_LCL;
+typedef struct _DDRAWI_DIRECTDRAW_GBL *LPDDRAWI_DIRECTDRAW_GBL;
+typedef struct _DDRAWI_DDRAWSURFACE_INT *LPDDRAWI_DDRAWSURFACE_INT;
+typedef struct _DDRAWI_DDRAWSURFACE_LCL *LPDDRAWI_DDRAWSURFACE_LCL;
+typedef struct _DDRAWI_DDRAWSURFACE_GBL *LPDDRAWI_DDRAWSURFACE_GBL;
+typedef struct _DDRAWI_DDRAWSURFACE_MORE *LPDDRAWI_DDRAWSURFACE_MORE;
+typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE *LPDDRAWI_DDRAWSURFACE_GBL_MORE;
+typedef struct _DDRAWI_DDRAWPALETTE_INT *LPDDRAWI_DDRAWPALETTE_INT;
+typedef struct _DDRAWI_DDRAWPALETTE_LCL *LPDDRAWI_DDRAWPALETTE_LCL;
+typedef struct _DDRAWI_DDRAWPALETTE_GBL *LPDDRAWI_DDRAWPALETTE_GBL;
+typedef struct _DDRAWI_DDRAWCLIPPER_INT *LPDDRAWI_DDRAWCLIPPER_INT;
+typedef struct _DDRAWI_DDRAWCLIPPER_LCL *LPDDRAWI_DDRAWCLIPPER_LCL;
+typedef struct _DDRAWI_DDRAWCLIPPER_GBL *LPDDRAWI_DDRAWCLIPPER_GBL;
+typedef struct _DDRAWI_DDVIDEOPORT_INT *LPDDRAWI_DDVIDEOPORT_INT;
+typedef struct _DDRAWI_DDVIDEOPORT_LCL *LPDDRAWI_DDVIDEOPORT_LCL;
+typedef struct _DDRAWI_DDMOTIONCOMP_INT *LPDDRAWI_DDMOTIONCOMP_INT;
+typedef struct _DDRAWI_DDMOTIONCOMP_LCL *LPDDRAWI_DDMOTIONCOMP_LCL;
+
+/* structure GUIDs for GetDriverInfo */
+DEFINE_GUID( GUID_MiscellaneousCallbacks,	0xEFD60CC0,0x49E7,0x11D0,0x88,0x9D,0x00,0xAA,0x00,0xBB,0xB7,0x6A );
+/* ...videport stuff here... */
+DEFINE_GUID( GUID_D3DCallbacks2,		0x0BA584E1,0x70B6,0x11D0,0x88,0x9D,0x00,0xAA,0x00,0xBB,0xB7,0x6A );
+DEFINE_GUID( GUID_D3DCallbacks3,		0xDDF41230,0xEC0A,0x11D0,0xA9,0xB6,0x00,0xAA,0x00,0xC0,0x99,0x3E );
+DEFINE_GUID( GUID_NonLocalVidMemCaps,		0x86C4FA80,0x8D84,0x11D0,0x94,0xE8,0x00,0xC0,0x4F,0xC3,0x41,0x37 );
+/* ...kernel stuff here... */
+DEFINE_GUID( GUID_D3DExtendedCaps,		0x7DE41F80,0x9D93,0x11D0,0x89,0xAB,0x00,0xA0,0xC9,0x05,0x41,0x29 );
+DEFINE_GUID( GUID_ZPixelFormats,		0x93869880,0x36CF,0x11D1,0x9B,0x1B,0x00,0xAA,0x00,0xBB,0xB8,0xAE );
+DEFINE_GUID( GUID_DDMoreSurfaceCaps,		0x3B8A0466,0xF269,0x11D1,0x88,0x0B,0x00,0xC0,0x4F,0xD9,0x30,0xC5 );
+DEFINE_GUID( GUID_DDStereoMode,			0xF828169C,0xA8E8,0x11D2,0xA1,0xF2,0x00,0xA0,0xC9,0x83,0xEA,0xF6 );
+/* ...more stuff here... */
+DEFINE_GUID(GUID_D3DParseUnknownCommandCallback,0x2E04FFA0,0x98E4,0x11D1,0x8C,0xE1,0x00,0xA0,0xC9,0x06,0x29,0xA8 );
+/* ...motioncomp stuff here... */
+DEFINE_GUID( GUID_Miscellaneous2Callbacks,	0x406B2F00,0x3E5A,0x11D1,0xB6,0x40,0x00,0xAA,0x00,0xA1,0xF9,0x6A );
+
+/*****************************************************************************
+ * driver->ddraw callbacks
+ */
+typedef BOOL    (DDAPI *LPDDHAL_SETINFO)(LPDDHALINFO lpDDHalInfo, BOOL reset);
+typedef FLATPTR (DDAPI *LPDDHAL_VIDMEMALLOC)(LPDDRAWI_DIRECTDRAW_GBL lpDD, int heap, DWORD dwWidth, DWORD dwHeight);
+typedef void    (DDAPI *LPDDHAL_VIDMEMFREE)(LPDDRAWI_DIRECTDRAW_GBL lpDD, int heap, FLATPTR fpMem);
+
+typedef struct {
+    DWORD		dwSize;
+    LPDDHAL_SETINFO	lpSetInfo;
+    LPDDHAL_VIDMEMALLOC	lpVidMemAlloc;
+    LPDDHAL_VIDMEMFREE	lpVidMemFree;
+} DDHALDDRAWFNS,*LPDDHALDDRAWFNS;
+
+/*****************************************************************************
+ * mode info structure
+ */
+typedef struct _DDHALMODEINFO {
+    DWORD	dwWidth;
+    DWORD	dwHeight;
+    LONG	lPitch;
+    DWORD	dwBPP;
+    WORD	wFlags;
+    WORD	wRefreshRate;
+    DWORD	dwRBitMask;
+    DWORD	dwGBitMask;
+    DWORD	dwBBitMask;
+    DWORD	dwAlphaBitMask;
+} DDHALMODEINFO,*LPDDHALMODEINFO;
+
+#define DDMODEINFO_PALETTIZED	0x0001
+#define DDMODEINFO_MODEX	0x0002
+#define DDMODEINFO_UNSUPPORTED	0x0004
+#define DDMODEINFO_STANDARDVGA	0x0008
+#define DDMODEINFO_MAXREFRESH	0x0010
+#define DDMODEINFO_STEREO	0x0020
+
+/*****************************************************************************
+ * video memory info structure
+ */
+typedef struct _VIDMEM {
+    DWORD	dwFlags;
+    FLATPTR	fpStart;
+    union {
+	FLATPTR		fpEnd;
+	DWORD		dwWidth;
+    } DUMMYUNIONNAME1;
+    DDSCAPS	ddsCaps;
+    DDSCAPS	ddsCapsAlt;
+    union {
+	LPVMEMHEAP	lpHeap;
+	DWORD		dwHeight;
+    } DUMMYUNIONNAME2;
+} VIDMEM,*LPVIDMEM;
+
+#define VIDMEM_ISLINEAR		0x00000001
+#define VIDMEM_ISRECTANGULAR	0x00000002
+#define VIDMEM_ISHEAP		0x00000004
+#define VIDMEM_ISNONLOCAL	0x00000008
+#define VIDMEM_ISWC		0x00000010
+#define VIDMEM_ISDISABLED	0x00000020
+
+typedef struct _VIDMEMINFO {
+    FLATPTR		fpPrimary;
+    DWORD		dwFlags;
+    DWORD		dwDisplayWidth;
+    DWORD		dwDisplayHeight;
+    LONG		lDisplayPitch;
+    DDPIXELFORMAT	ddpfDisplay;
+    DWORD		dwOffscreenAlign;
+    DWORD		dwOverlayAlign;
+    DWORD		dwTextureAlign;
+    DWORD		dwZBufferAlign;
+    DWORD		dwAlphaAlign;
+    DWORD		dwNumHeaps;
+    LPVIDMEM		pvmList;
+} VIDMEMINFO,*LPVIDMEMINFO;
+
+typedef struct _HEAPALIAS {
+    FLATPTR	fpVidMem;
+    LPVOID	lpAlias;
+    DWORD	dwAliasSize;
+} HEAPALIAS,*LPHEAPALIAS;
+
+typedef struct _HEAPALIASINFO {
+    DWORD	dwRefCnt;
+    DWORD	dwFlags;
+    DWORD	dwNumHeaps;
+    LPHEAPALIAS	lpAliases;
+} HEAPALIASINFO,*LPHEAPALIASINFO;
+
+#define HEAPALIASINFO_MAPPEDREAL	0x00000001
+#define HEAPALIASINFO_MAPPEDDUMMY	0x00000002
+
+/*****************************************************************************
+ * capabilities structures
+ */
+typedef struct _DDCORECAPS {
+    DWORD	dwSize;
+    DWORD	dwCaps;
+    DWORD	dwCaps2;
+    DWORD	dwCKeyCaps;
+    DWORD	dwFXCaps;
+    DWORD	dwFXAlphaCaps;
+    DWORD	dwPalCaps;
+    DWORD	dwSVCaps;
+    DWORD	dwAlphaBltConstBitDepths;
+    DWORD	dwAlphaBltPixelBitDepths;
+    DWORD	dwAlphaBltSurfaceBitDepths;
+    DWORD	dwAlphaOverlayConstBitDepths;
+    DWORD	dwAlphaOverlayPixelBitDepths;
+    DWORD	dwAlphaOverlaySurfaceBitDepths;
+    DWORD	dwZBufferBitDepths;
+    DWORD	dwVidMemTotal;
+    DWORD	dwVidMemFree;
+    DWORD	dwMaxVisibleOverlays;
+    DWORD	dwCurrVisibleOverlays;
+    DWORD	dwNumFourCCCodes;
+    DWORD	dwAlignBoundarySrc;
+    DWORD	dwAlignSizeSrc;
+    DWORD	dwAlignBoundaryDest;
+    DWORD	dwAlignSizeDest;
+    DWORD	dwAlignStrideAlign;
+    DWORD	dwRops[DD_ROP_SPACE];
+    DDSCAPS	ddsCaps;
+    DWORD	dwMinOverlayStretch;
+    DWORD	dwMaxOverlayStretch;
+    DWORD	dwMinLiveVideoStretch;
+    DWORD	dwMaxLiveVideoStretch;
+    DWORD	dwMinHwCodecStretch;
+    DWORD	dwMaxHwCodecStretch;
+    DWORD	dwReserved1;
+    DWORD	dwReserved2;
+    DWORD	dwReserved3;
+    DWORD	dwSVBCaps;
+    DWORD	dwSVBCKeyCaps;
+    DWORD	dwSVBFXCaps;
+    DWORD	dwSVBRops[DD_ROP_SPACE];
+    DWORD	dwVSBCaps;
+    DWORD	dwVSBCKeyCaps;
+    DWORD	dwVSBFXCaps;
+    DWORD	dwVSBRops[DD_ROP_SPACE];
+    DWORD	dwSSBCaps;
+    DWORD	dwSSBCKeyCaps;
+    DWORD	dwSSBFXCaps;
+    DWORD	dwSSBRops[DD_ROP_SPACE];
+    DWORD	dwMaxVideoPorts;
+    DWORD	dwCurrVideoPorts;
+    DWORD	dwSVBCaps2;
+} DDCORECAPS,*LPDDCORECAPS;
+
+typedef struct _DDNONLOCALVIDMEMCAPS {
+    DWORD	dwSize;
+    DWORD	dwNLVBCaps;
+    DWORD	dwNLVBCaps2;
+    DWORD	dwNLVBCKeyCaps;
+    DWORD	dwNLVBFXCaps;
+    DWORD	dwNLVBRops[DD_ROP_SPACE];
+} DDNONLOCALVIDMEMCAPS,*LPDDNONLOCALVIDMEMCAPS;
+
+typedef struct _DDSCAPSEX {
+    DWORD	dwCaps2;
+    DWORD	dwCaps3;
+    DWORD	dwCaps4;
+} DDSCAPSEX,*LPDDSCAPSEX;
+
+#define DDSCAPS_EXECUTEBUFFER	DDSCAPS_RESERVED2
+#define DDSCAPS2_VERTEXBUFFER	DDSCAPS2_RESERVED1
+#define DDSCAPS2_COMMANDBUFFER	DDSCAPS2_RESERVED2
+
+/*****************************************************************************
+ * ddraw->driver callbacks
+ */
+#define DDHAL_DRIVER_NOTHANDLED	0
+#define DDHAL_DRIVER_HANDLED	1
+#define DDHAL_DRIVER_NOCKEYHW	2
+
+typedef struct _DDHAL_DESTROYDRIVERDATA		*LPDDHAL_DESTROYDRIVERDATA;
+typedef struct _DDHAL_CREATESURFACEDATA		*LPDDHAL_CREATESURFACEDATA;
+typedef struct _DDHAL_DRVSETCOLORKEYDATA	*LPDDHAL_DRVSETCOLORKEYDATA;
+typedef struct _DDHAL_SETMODEDATA		*LPDDHAL_SETMODEDATA;
+typedef struct _DDHAL_WAITFORVERTICALBLANKDATA	*LPDDHAL_WAITFORVERTICALBLANKDATA;
+typedef struct _DDHAL_CANCREATESURFACEDATA	*LPDDHAL_CANCREATESURFACEDATA;
+typedef struct _DDHAL_CREATEPALETTEDATA		*LPDDHAL_CREATEPALETTEDATA;
+typedef struct _DDHAL_GETSCANLINEDATA		*LPDDHAL_GETSCANLINEDATA;
+typedef struct _DDHAL_SETEXCLUSIVEMODEDATA	*LPDDHAL_SETEXCLUSIVEMODEDATA;
+typedef struct _DDHAL_FLIPTOGDISURFACEDATA	*LPDDHAL_FLIPTOGDISURFACEDATA;
+
+typedef DWORD (PASCAL *LPDDHAL_DESTROYDRIVER)	    (LPDDHAL_DESTROYDRIVERDATA);
+typedef DWORD (PASCAL *LPDDHAL_CREATESURFACE)	    (LPDDHAL_CREATESURFACEDATA);
+typedef DWORD (PASCAL *LPDDHAL_SETCOLORKEY)	    (LPDDHAL_DRVSETCOLORKEYDATA);
+typedef DWORD (PASCAL *LPDDHAL_SETMODE)		    (LPDDHAL_SETMODEDATA);
+typedef DWORD (PASCAL *LPDDHAL_WAITFORVERTICALBLANK)(LPDDHAL_WAITFORVERTICALBLANKDATA);
+typedef DWORD (PASCAL *LPDDHAL_CANCREATESURFACE)    (LPDDHAL_CANCREATESURFACEDATA );
+typedef DWORD (PASCAL *LPDDHAL_CREATEPALETTE)	    (LPDDHAL_CREATEPALETTEDATA);
+typedef DWORD (PASCAL *LPDDHAL_GETSCANLINE)	    (LPDDHAL_GETSCANLINEDATA);
+typedef DWORD (PASCAL *LPDDHAL_SETEXCLUSIVEMODE)    (LPDDHAL_SETEXCLUSIVEMODEDATA);
+typedef DWORD (PASCAL *LPDDHAL_FLIPTOGDISURFACE)    (LPDDHAL_FLIPTOGDISURFACEDATA);
+
+typedef struct _DDHAL_DDCALLBACKS {
+    DWORD				dwSize;
+    DWORD				dwFlags;
+    LPDDHAL_DESTROYDRIVER		DestroyDriver;
+    LPDDHAL_CREATESURFACE		CreateSurface;
+    LPDDHAL_SETCOLORKEY			SetColorKey;
+    LPDDHAL_SETMODE			SetMode;
+    LPDDHAL_WAITFORVERTICALBLANK	WaitForVerticalBlank;
+    LPDDHAL_CANCREATESURFACE		CanCreateSurface;
+    LPDDHAL_CREATEPALETTE		CreatePalette;
+    LPDDHAL_GETSCANLINE			GetScanLine;
+    /* DirectX 2 */
+    LPDDHAL_SETEXCLUSIVEMODE		SetExclusiveMode;
+    LPDDHAL_FLIPTOGDISURFACE		FlipToGDISurface;
+} DDHAL_DDCALLBACKS,*LPDDHAL_DDCALLBACKS;
+
+typedef struct _DDHAL_DESTROYSURFACEDATA	*LPDDHAL_DESTROYSURFACEDATA;
+typedef struct _DDHAL_FLIPDATA			*LPDDHAL_FLIPDATA;
+typedef struct _DDHAL_SETCLIPLISTDATA		*LPDDHAL_SETCLIPLISTDATA;
+typedef struct _DDHAL_LOCKDATA			*LPDDHAL_LOCKDATA;
+typedef struct _DDHAL_UNLOCKDATA		*LPDDHAL_UNLOCKDATA;
+typedef struct _DDHAL_BLTDATA			*LPDDHAL_BLTDATA;
+typedef struct _DDHAL_SETCOLORKEYDATA		*LPDDHAL_SETCOLORKEYDATA;
+typedef struct _DDHAL_ADDATTACHEDSURFACEDATA	*LPDDHAL_ADDATTACHEDSURFACEDATA;
+typedef struct _DDHAL_GETBLTSTATUSDATA		*LPDDHAL_GETBLTSTATUSDATA;
+typedef struct _DDHAL_GETFLIPSTATUSDATA		*LPDDHAL_GETFLIPSTATUSDATA;
+typedef struct _DDHAL_UPDATEOVERLAYDATA		*LPDDHAL_UPDATEOVERLAYDATA;
+typedef struct _DDHAL_SETOVERLAYPOSITIONDATA	*LPDDHAL_SETOVERLAYPOSITIONDATA;
+typedef struct _DDHAL_SETPALETTEDATA		*LPDDHAL_SETPALETTEDATA;
+
+typedef DWORD (PASCAL *LPDDHALSURFCB_DESTROYSURFACE)	(LPDDHAL_DESTROYSURFACEDATA);
+typedef DWORD (PASCAL *LPDDHALSURFCB_FLIP)		(LPDDHAL_FLIPDATA);
+typedef DWORD (PASCAL *LPDDHALSURFCB_SETCLIPLIST)	(LPDDHAL_SETCLIPLISTDATA);
+typedef DWORD (PASCAL *LPDDHALSURFCB_LOCK)		(LPDDHAL_LOCKDATA);
+typedef DWORD (PASCAL *LPDDHALSURFCB_UNLOCK)		(LPDDHAL_UNLOCKDATA);
+typedef DWORD (PASCAL *LPDDHALSURFCB_BLT)		(LPDDHAL_BLTDATA);
+typedef DWORD (PASCAL *LPDDHALSURFCB_SETCOLORKEY)	(LPDDHAL_SETCOLORKEYDATA);
+typedef DWORD (PASCAL *LPDDHALSURFCB_ADDATTACHEDSURFACE)(LPDDHAL_ADDATTACHEDSURFACEDATA);
+typedef DWORD (PASCAL *LPDDHALSURFCB_GETBLTSTATUS)	(LPDDHAL_GETBLTSTATUSDATA);
+typedef DWORD (PASCAL *LPDDHALSURFCB_GETFLIPSTATUS)	(LPDDHAL_GETFLIPSTATUSDATA);
+typedef DWORD (PASCAL *LPDDHALSURFCB_UPDATEOVERLAY)	(LPDDHAL_UPDATEOVERLAYDATA);
+typedef DWORD (PASCAL *LPDDHALSURFCB_SETOVERLAYPOSITION)(LPDDHAL_SETOVERLAYPOSITIONDATA);
+typedef DWORD (PASCAL *LPDDHALSURFCB_SETPALETTE)	(LPDDHAL_SETPALETTEDATA);
+
+typedef struct _DDHAL_DDSURFACECALLBACKS {
+    DWORD				dwSize;
+    DWORD				dwFlags;
+    LPDDHALSURFCB_DESTROYSURFACE	DestroySurface;
+    LPDDHALSURFCB_FLIP			Flip;
+    LPDDHALSURFCB_SETCLIPLIST		SetClipList;
+    LPDDHALSURFCB_LOCK			Lock;
+    LPDDHALSURFCB_UNLOCK		Unlock;
+    LPDDHALSURFCB_BLT			Blt;
+    LPDDHALSURFCB_SETCOLORKEY		SetColorKey;
+    LPDDHALSURFCB_ADDATTACHEDSURFACE	AddAttachedSurface;
+    LPDDHALSURFCB_GETBLTSTATUS		GetBltStatus;
+    LPDDHALSURFCB_GETFLIPSTATUS		GetFlipStatus;
+    LPDDHALSURFCB_UPDATEOVERLAY		UpdateOverlay;
+    LPDDHALSURFCB_SETOVERLAYPOSITION	SetOverlayPosition;
+    LPVOID				reserved4;
+    LPDDHALSURFCB_SETPALETTE		SetPalette;
+} DDHAL_DDSURFACECALLBACKS,*LPDDHAL_DDSURFACECALLBACKS;
+
+typedef struct _DDHAL_DESTROYPALETTEDATA	*LPDDHAL_DESTROYPALETTEDATA;
+typedef struct _DDHAL_SETENTRIESDATA		*LPDDHAL_SETENTRIESDATA;
+
+typedef DWORD (PASCAL *LPDDHALPALCB_DESTROYPALETTE)(LPDDHAL_DESTROYPALETTEDATA);
+typedef DWORD (PASCAL *LPDDHALPALCB_SETENTRIES)    (LPDDHAL_SETENTRIESDATA);
+
+typedef struct _DDHAL_DDPALETTECALLBACKS {
+    DWORD				dwSize;
+    DWORD				dwFlags;
+    LPDDHALPALCB_DESTROYPALETTE		DestroyPalette;
+    LPDDHALPALCB_SETENTRIES		SetEntries;
+} DDHAL_DDPALETTECALLBACKS,*LPDDHAL_DDPALETTECALLBACKS;
+
+typedef DWORD (PASCAL *LPDDHALEXEBUFCB_CANCREATEEXEBUF)(LPDDHAL_CANCREATESURFACEDATA);
+typedef DWORD (PASCAL *LPDDHALEXEBUFCB_CREATEEXEBUF)   (LPDDHAL_CREATESURFACEDATA);
+typedef DWORD (PASCAL *LPDDHALEXEBUFCB_DESTROYEXEBUF)  (LPDDHAL_DESTROYSURFACEDATA);
+typedef DWORD (PASCAL *LPDDHALEXEBUFCB_LOCKEXEBUF)     (LPDDHAL_LOCKDATA);
+typedef DWORD (PASCAL *LPDDHALEXEBUFCB_UNLOCKEXEBUF)   (LPDDHAL_UNLOCKDATA);
+
+typedef struct _DDHAL_DDEXEBUFCALLBACKS {
+    DWORD				dwSize;
+    DWORD				dwFlags;
+    LPDDHALEXEBUFCB_CANCREATEEXEBUF	CanCreateExecuteBuffer;
+    LPDDHALEXEBUFCB_CREATEEXEBUF	CreateExecuteBuffer;
+    LPDDHALEXEBUFCB_DESTROYEXEBUF	DestroyExecuteBuffer;
+    LPDDHALEXEBUFCB_LOCKEXEBUF		LockExecuteBuffer;
+    LPDDHALEXEBUFCB_UNLOCKEXEBUF	UnlockExecuteBuffer;
+} DDHAL_DDEXEBUFCALLBACKS,*LPDDHAL_DDEXEBUFCALLBACKS;
+
+typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA	*LPDDHAL_GETAVAILDRIVERMEMORYDATA;
+typedef struct _DDHAL_UPDATENONLOCALHEAPDATA	*LPDDHAL_UPDATENONLOCALHEAPDATA;
+typedef struct _DDHAL_GETHEAPALIGNMENTDATA	*LPDDHAL_GETHEAPALIGNMENTDATA;
+
+typedef DWORD (PASCAL *LPDDHAL_GETAVAILDRIVERMEMORY)(LPDDHAL_GETAVAILDRIVERMEMORYDATA);
+typedef DWORD (PASCAL *LPDDHAL_UPDATENONLOCALHEAP)  (LPDDHAL_UPDATENONLOCALHEAPDATA);
+typedef DWORD (PASCAL *LPDDHAL_GETHEAPALIGNMENT)    (LPDDHAL_GETHEAPALIGNMENTDATA);
+
+typedef struct _DDHAL_DDMISCELLANEOUSCALLBACKS {
+    DWORD				dwSize;
+    DWORD				dwFlags;
+    LPDDHAL_GETAVAILDRIVERMEMORY	GetAvailDriverMemory;
+    LPDDHAL_UPDATENONLOCALHEAP		UpdateNonLocalHeap;
+    LPDDHAL_GETHEAPALIGNMENT		GetHeapAlignment;
+    LPDDHALSURFCB_GETBLTSTATUS		GetSysmemBltStatus;
+} DDHAL_DDMISCELLANEOUSCALLBACKS,*LPDDHAL_DDMISCELLANEOUSCALLBACKS;
+
+typedef struct _DDHAL_CREATESURFACEEXDATA	*LPDDHAL_CREATESURFACEEXDATA;
+typedef struct _DDHAL_GETDRIVERSTATEDATA	*LPDDHAL_GETDRIVERSTATEDATA;
+typedef struct _DDHAL_DESTROYDDLOCALDATA	*LPDDHAL_DESTROYDDLOCALDATA;
+
+typedef DWORD (PASCAL *LPDDHAL_CREATESURFACEEX)(LPDDHAL_CREATESURFACEEXDATA);
+typedef DWORD (PASCAL *LPDDHAL_GETDRIVERSTATE) (LPDDHAL_GETDRIVERSTATEDATA);
+typedef DWORD (PASCAL *LPDDHAL_DESTROYDDLOCAL) (LPDDHAL_DESTROYDDLOCALDATA);
+
+typedef struct _DDHAL_DDMISCELLANEOUS2CALLBACKS {
+    DWORD				dwSize;
+    DWORD				dwFlags;
+    LPVOID				Reserved;
+    LPDDHAL_CREATESURFACEEX		CreateSurfaceEx;
+    LPDDHAL_GETDRIVERSTATE		GetDriverState;
+    LPDDHAL_DESTROYDDLOCAL		DestroyDDLocal;
+} DDHAL_DDMISCELLANEOUS2CALLBACKS,*LPDDHAL_DDMISCELLANEOUS2CALLBACKS;
+
+typedef HRESULT (WINAPI *LPDDGAMMACALIBRATORPROC)(LPDDGAMMARAMP, LPBYTE);
+
+/*****************************************************************************
+ * driver info structure
+ *
+ * The HAL is queried for additional callbacks via the GetDriverInfo callback.
+ */
+typedef struct _DDHAL_GETDRIVERINFODATA *LPDDHAL_GETDRIVERINFODATA;
+typedef DWORD (PASCAL *LPDDHAL_GETDRIVERINFO)(LPDDHAL_GETDRIVERINFODATA);
+
+typedef struct _DDHALINFO {
+    DWORD			dwSize;
+    LPDDHAL_DDCALLBACKS		lpDDCallbacks;
+    LPDDHAL_DDSURFACECALLBACKS	lpDDSurfaceCallbacks;
+    LPDDHAL_DDPALETTECALLBACKS	lpDDPaletteCallbacks;
+    VIDMEMINFO			vmiData;
+    DDCORECAPS			ddCaps;
+    DWORD			dwMonitorFrequency;
+    LPDDHAL_GETDRIVERINFO	GetDriverInfo;
+    DWORD			dwModeIndex;
+    LPDWORD			lpdwFourCC;
+    DWORD			dwNumModes;
+    LPDDHALMODEINFO		lpModeInfo;
+    DWORD			dwFlags;
+    LPVOID			lpPDevice;
+    DWORD			hInstance;
+    /* DirectX 2 */
+    ULONG_PTR			lpD3DGlobalDriverData;
+    ULONG_PTR			lpD3DHALCallbacks;
+    LPDDHAL_DDEXEBUFCALLBACKS	lpDDExeBufCallbacks;
+} DDHALINFO;
+
+#define DDHALINFO_ISPRIMARYDISPLAY	0x00000001
+#define DDHALINFO_MODEXILLEGAL		0x00000002
+#define DDHALINFO_GETDRIVERINFOSET	0x00000004
+
+/* where the high-level ddraw implementation stores the callbacks */
+typedef struct _DDHAL_CALLBACKS {
+    DDHAL_DDCALLBACKS		cbDDCallbacks;
+    DDHAL_DDSURFACECALLBACKS	cbDDSurfaceCallbacks;
+    DDHAL_DDPALETTECALLBACKS	cbDDPaletteCallbacks;
+    DDHAL_DDCALLBACKS		HALDD;
+    DDHAL_DDSURFACECALLBACKS	HALDDSurface;
+    DDHAL_DDPALETTECALLBACKS	HALDDPalette;
+    DDHAL_DDCALLBACKS		HELDD;
+    DDHAL_DDSURFACECALLBACKS	HELDDSurface;
+    DDHAL_DDPALETTECALLBACKS	HELDDPalette;
+    DDHAL_DDEXEBUFCALLBACKS	cbDDExeBufCallbacks;
+    DDHAL_DDEXEBUFCALLBACKS	HALDDExeBuf;
+    DDHAL_DDEXEBUFCALLBACKS	HELDDExeBuf;
+    /* there's more... videoport, colorcontrol, misc, and motion compensation callbacks... */
+} DDHAL_CALLBACKS,*LPDDHAL_CALLBACKS;
+
+/*****************************************************************************
+ * parameter structures
+ */
+typedef struct _DDHAL_DESTROYDRIVERDATA {
+    LPDDRAWI_DIRECTDRAW_GBL	lpDD;
+    HRESULT			ddRVal;
+    LPDDHAL_DESTROYDRIVER	DestroyDriver;
+} DDHAL_DESTROYDRIVERDATA;
+
+typedef struct _DDHAL_SETMODEDATA {
+    LPDDRAWI_DIRECTDRAW_GBL	lpDD;
+    DWORD			dwModeIndex;
+    HRESULT			ddRVal;
+    LPDDHAL_SETMODE		SetMode;
+    BOOL			inexcl;
+    BOOL			useRefreshRate;
+} DDHAL_SETMODEDATA;
+
+typedef struct _DDHAL_CREATESURFACEDATA {
+    LPDDRAWI_DIRECTDRAW_GBL	lpDD;
+    LPDDSURFACEDESC		lpDDSurfaceDesc;
+    LPDDRAWI_DDRAWSURFACE_LCL *	lplpSList;
+    DWORD			dwSCnt;
+    HRESULT			ddRVal;
+    LPDDHAL_CREATESURFACE	CreateSurface;
+} DDHAL_CREATESURFACEDATA;
+
+typedef struct _DDHAL_CANCREATESURFACEDATA {
+    LPDDRAWI_DIRECTDRAW_GBL	lpDD;
+    LPDDSURFACEDESC		lpDDSurfaceDesc;
+    DWORD			bIsDifferentPixelFormat;
+    HRESULT			ddRVal;
+    LPDDHAL_CANCREATESURFACE	CanCreateSurface;
+} DDHAL_CANCREATESURFACEDATA;
+
+typedef struct _DDHAL_CREATEPALETTEDATA {
+    LPDDRAWI_DIRECTDRAW_GBL	lpDD;
+    LPDDRAWI_DDRAWPALETTE_GBL	lpDDPalette;
+    LPPALETTEENTRY		lpColorTable;
+    HRESULT			ddRVal;
+    LPDDHAL_CREATEPALETTE	CreatePalette;
+    BOOL			is_excl;
+} DDHAL_CREATEPALETTEDATA;
+
+typedef struct _DDHAL_SETEXCLUSIVEMODEDATA {
+    LPDDRAWI_DIRECTDRAW_GBL	lpDD;
+    DWORD			dwEnterExcl;
+    DWORD			dwReserved;
+    HRESULT			ddRVal;
+    LPDDHAL_SETEXCLUSIVEMODE	SetExclusiveMode;
+} DDHAL_SETEXCLUSIVEMODEDATA;
+
+/* surfaces */
+typedef struct _DDHAL_DESTROYSURFACEDATA {
+    LPDDRAWI_DIRECTDRAW_GBL	lpDD;
+    LPDDRAWI_DDRAWSURFACE_LCL	lpDDSurface;
+    HRESULT			ddRVal;
+    LPDDHALSURFCB_DESTROYSURFACE DestroySurface;
+} DDHAL_DESTROYSURFACEDATA;
+
+typedef struct _DDHAL_FLIPDATA {
+    LPDDRAWI_DIRECTDRAW_GBL	lpDD;
+    LPDDRAWI_DDRAWSURFACE_LCL	lpSurfCurr;
+    LPDDRAWI_DDRAWSURFACE_LCL	lpSurfTarg;
+    DWORD			dwFlags;
+    HRESULT			ddRVal;
+    LPDDHALSURFCB_FLIP		Flip;
+    LPDDRAWI_DDRAWSURFACE_LCL	lpSurfCurrLeft;
+    LPDDRAWI_DDRAWSURFACE_LCL	lpSurfTargLeft;
+} DDHAL_FLIPDATA;
+
+typedef struct _DDHAL_LOCKDATA {
+    LPDDRAWI_DIRECTDRAW_GBL	lpDD;
+    LPDDRAWI_DDRAWSURFACE_LCL	lpDDSurface;
+    DWORD			bHasRect;
+    RECTL			rArea;
+    LPVOID			lpSurfData;
+    HRESULT			ddRVal;
+    LPDDHALSURFCB_LOCK		Lock;
+    DWORD			dwFlags;
+} DDHAL_LOCKDATA;
+
+typedef struct _DDHAL_UNLOCKDATA {
+    LPDDRAWI_DIRECTDRAW_GBL	lpDD;
+    LPDDRAWI_DDRAWSURFACE_LCL	lpDDSurface;
+    HRESULT			ddRVal;
+    LPDDHALSURFCB_UNLOCK	Unlock;
+} DDHAL_UNLOCKDATA;
+
+typedef struct _DDHAL_BLTDATA {
+    LPDDRAWI_DIRECTDRAW_GBL	lpDD;
+    LPDDRAWI_DDRAWSURFACE_LCL	lpDDDestSurface;
+    RECTL			rDest;
+    LPDDRAWI_DDRAWSURFACE_LCL	lpDDSrcSurface;
+    RECTL			rSrc;
+    DWORD			dwFlags;
+    DWORD			dwROPFlags;
+    DDBLTFX			bltFX;
+    HRESULT			ddRVal;
+    LPDDHALSURFCB_BLT		Blt;
+    BOOL			IsClipped;
+    RECTL			rOrigDest;
+    RECTL			rOrigSrc;
+    DWORD			dwRectCnt;
+    LPRECT			prDestRects;
+} DDHAL_BLTDATA;
+
+typedef struct _DDHAL_UPDATEOVERLAYDATA {
+ LPDDRAWI_DIRECTDRAW_GBL lpDD;
+ LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface;
+ RECTL rDest;
+ LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface;
+ RECTL rSrc;
+ DWORD dwFlags;
+ DDOVERLAYFX overlayFX;
+ HRESULT ddRVal;
+ LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay;
+} DDHAL_UPDATEOVERLAYDATA;
+
+typedef struct _DDHAL_SETPALETTEDATA {
+    LPDDRAWI_DIRECTDRAW_GBL	lpDD;
+    LPDDRAWI_DDRAWSURFACE_LCL	lpDDSurface;
+    LPDDRAWI_DDRAWPALETTE_GBL	lpDDPalette;
+    HRESULT			ddRVal;
+    LPDDHALSURFCB_SETPALETTE	SetPalette;
+    BOOL			Attach;
+} DDHAL_SETPALETTEDATA;
+
+/* palettes */
+typedef struct _DDHAL_DESTROYPALETTEDATA {
+    LPDDRAWI_DIRECTDRAW_GBL	lpDD;
+    LPDDRAWI_DDRAWPALETTE_GBL	lpDDPalette;
+    HRESULT			ddRVal;
+    LPDDHALPALCB_DESTROYPALETTE	DestroyPalette;
+} DDHAL_DESTROYPALETTEDATA;
+
+typedef struct _DDHAL_SETENTRIESDATA {
+    LPDDRAWI_DIRECTDRAW_GBL	lpDD;
+    LPDDRAWI_DDRAWPALETTE_GBL	lpDDPalette;
+    DWORD			dwBase;
+    DWORD			dwNumEntries;
+    LPPALETTEENTRY		lpEntries;
+    HRESULT			ddRVal;
+    LPDDHALPALCB_SETENTRIES	SetEntries;
+} DDHAL_SETENTRIESDATA;
+
+typedef struct _DDHAL_GETDRIVERINFODATA {
+    DWORD	dwSize;
+    DWORD	dwFlags;
+    GUID	guidInfo;
+    DWORD	dwExpectedSize;
+    LPVOID	lpvData;
+    DWORD	dwActualSize;
+    HRESULT	ddRVal;
+    ULONG_PTR	dwContext;
+} DDHAL_GETDRIVERINFODATA;
+
+/*****************************************************************************
+ * high-level ddraw implementation structures
+ */
+typedef struct _IUNKNOWN_LIST {
+    struct _IUNKNOWN_LIST *	lpLink;
+    LPGUID			lpGuid;
+    IUnknown *			lpIUnknown;
+} IUNKNOWN_LIST,*LPIUNKNOWN_LIST;
+
+typedef struct _PROCESS_LIST {
+    struct _PROCESS_LIST *	lpLink;
+    DWORD			dwProcessId;
+    DWORD			dwRefCnt;
+    DWORD			dwAlphaDepth;
+    DWORD			dwZDepth;
+} PROCESS_LIST,*LPPROCESS_LIST;
+
+typedef struct _ATTACHLIST {
+    DWORD			dwFlags;
+    struct _ATTACHLIST *	lpLink;
+    LPDDRAWI_DDRAWSURFACE_LCL	lpAttached;
+    LPDDRAWI_DDRAWSURFACE_INT	lpIAttached;
+} ATTACHLIST,*LPATTACHLIST;
+
+#define DDAL_IMPLICIT	0x00000001
+
+typedef struct _ACCESSRECTLIST {
+    struct _ACCESSRECTLIST *	lpLink;
+    RECT			rDest;
+    LPDDRAWI_DIRECTDRAW_LCL	lpOwner;
+    LPVOID			lpSurfaceData;
+    DWORD			dwFlags;
+    LPHEAPALIASINFO		lpHeapAliasInfo;
+} ACCESSRECTLIST,*LPACCESSRECTLIST;
+
+#define ACCESSRECT_VRAMSTYLE		0x00000001
+#define ACCESSRECT_NOTHOLDINGWIN16LOCK	0x00000002
+#define ACCESSRECT_BROKEN		0x00000004
+
+typedef struct _DBLNODE {
+    struct _DBLNODE *		next;
+    struct _DBLNODE *		prev;
+    LPDDRAWI_DDRAWSURFACE_LCL	object;
+    LPDDRAWI_DDRAWSURFACE_INT	object_int;
+} DBLNODE,*LPDBLNODE;
+
+typedef struct _DDRAWI_DIRECTDRAW_INT {
+    LPVOID			lpVtbl;
+    LPDDRAWI_DIRECTDRAW_LCL	lpLcl;
+    LPDDRAWI_DIRECTDRAW_INT	lpLink;
+    DWORD			dwIntRefCnt;
+} DDRAWI_DIRECTDRAW_INT;
+
+typedef struct _DDRAWI_DIRECTDRAW_LCL {
+    DWORD			lpDDMore;
+    LPDDRAWI_DIRECTDRAW_GBL	lpGbl;
+    DWORD			dwUnused0;
+    DWORD			dwLocalFlags;
+    DWORD			dwLocalRefCnt;
+    DWORD			dwProcessId;
+    IUnknown *			pUnkOuter;
+    DWORD			dwObsolete1;
+    ULONG_PTR			hWnd;
+    ULONG_PTR			hDC;
+    DWORD			dwErrorMode;
+    LPDDRAWI_DDRAWSURFACE_INT	lpPrimary;
+    LPDDRAWI_DDRAWSURFACE_INT	lpCB;
+    DWORD			dwPreferredMode;
+    /* DirectX 2 */
+    HINSTANCE			hD3DInstance;
+    IUnknown *			pD3DIUnknown;
+    LPDDHAL_CALLBACKS		lpDDCB;
+    ULONG_PTR			hDDVxd;
+    /* DirectX 5.0 */
+    DWORD			dwAppHackFlags;
+    /* DirectX 5.0A */
+    ULONG_PTR			hFocusWnd;
+    DWORD			dwHotTracking;
+    DWORD			dwIMEState;
+    /* DirectX 6.0 */
+    ULONG_PTR			hWndPopup;
+    ULONG_PTR			hDD;
+    ULONG_PTR			hGammaCalibrator;
+    LPDDGAMMACALIBRATORPROC	lpGammaCalibrator;
+} DDRAWI_DIRECTDRAW_LCL;
+
+#define DDRAWILCL_HASEXCLUSIVEMODE	0x00000001
+#define DDRAWILCL_ISFULLSCREEN		0x00000002
+#define DDRAWILCL_SETCOOPCALLED		0x00000004
+#define DDRAWILCL_ACTIVEYES		0x00000008
+#define DDRAWILCL_ACTIVENO		0x00000010
+#define DDRAWILCL_HOOKEDHWND		0x00000020
+#define DDRAWILCL_ALLOWMODEX		0x00000040
+#define DDRAWILCL_V1SCLBEHAVIOUR	0x00000080
+#define DDRAWILCL_MODEHASBEENCHANGED	0x00000100
+#define DDRAWILCL_CREATEDWINDOW		0x00000200
+#define DDRAWILCL_DIRTYDC		0x00000400
+#define DDRAWILCL_DISABLEINACTIVATE	0x00000800
+#define DDRAWILCL_CURSORCLIPPED		0x00001000
+#define DDRAWILCL_EXPLICITMONITOR	0x00002000
+#define DDRAWILCL_MULTITHREADED		0x00004000
+#define DDRAWILCL_FPUSETUP		0x00008000
+#define DDRAWILCL_POWEREDDOWN		0x00010000
+#define DDRAWILCL_DIRECTDRAW7		0x00020000
+#define DDRAWILCL_ATTEMPTEDD3DCONTEXT	0x00040000
+#define DDRAWILCL_FPUPRESERVE		0x00080000
+
+typedef struct _DDRAWI_DIRECTDRAW_GBL {
+    DWORD			dwRefCnt;
+    DWORD			dwFlags;
+    FLATPTR			fpPrimaryOrig;
+    DDCORECAPS			ddCaps;
+    DWORD			dwInternal1;
+    DWORD			dwUnused1[9];
+    LPDDHAL_CALLBACKS		lpDDCBtmp;
+    LPDDRAWI_DDRAWSURFACE_INT	dsList;
+    LPDDRAWI_DDRAWPALETTE_INT	palList;
+    LPDDRAWI_DDRAWCLIPPER_INT	clipperList;
+    LPDDRAWI_DIRECTDRAW_GBL	lp16DD;
+    DWORD			dwMaxOverlays;
+    DWORD			dwCurrOverlays;
+    DWORD			dwMonitorFrequency;
+    DDCORECAPS			ddHELCaps;
+    DWORD			dwUnused2[50];
+    DDCOLORKEY			ddckCKDestOverlay;
+    DDCOLORKEY			ddckCKSrcOverlay;
+    VIDMEMINFO			vmiData;
+    LPVOID			lpDriverHandle;
+    LPDDRAWI_DIRECTDRAW_LCL	lpExclusiveOwner;
+    DWORD			dwModeIndex;
+    DWORD			dwModeIndexOrig;
+    DWORD			dwNumFourCC;
+    LPDWORD			lpdwFourCC;
+    DWORD			dwNumModes;
+    LPDDHALMODEINFO		lpModeInfo;
+    PROCESS_LIST		plProcessList;
+    DWORD			dwSurfaceLockCount;
+    DWORD			dwAliasedLockCnt;
+    ULONG_PTR			dwReserved3;
+    ULONG_PTR			hDD;
+    char			cObsolete[12];
+    DWORD			dwReserved1;
+    DWORD			dwReserved2;
+    DBLNODE			dbnOverlayRoot;
+    volatile LPWORD		lpwPDeviceFlags;
+    DWORD			dwPDevice;
+    DWORD			dwWin16LockCnt;
+    DWORD			dwUnused3;
+    DWORD			hInstance;
+    DWORD			dwEvent16;
+    DWORD			dwSaveNumModes;
+    /* DirectX 2 */
+    ULONG_PTR			lpD3DGlobalDriverData;
+    ULONG_PTR			lpD3DHALCallbacks;
+    DDCORECAPS			ddBothCaps;
+    /* DirectX 5.0 */
+    LPDDVIDEOPORTCAPS		lpDDVideoPortCaps;
+    LPDDRAWI_DDVIDEOPORT_INT	dvpList;
+    ULONG_PTR			lpD3DHALCallbacks2;
+    RECT			rectDevice;
+    DWORD			cMonitors;
+    LPVOID			gpbmiSrc;
+    LPVOID			gpbmiDest;
+    LPHEAPALIASINFO		phaiHeapAliases;
+    ULONG_PTR			hKernelHandle;
+    ULONG_PTR			pfnNotifyProc;
+    LPDDKERNELCAPS		lpDDKernelCaps;
+    LPDDNONLOCALVIDMEMCAPS	lpddNLVCaps;
+    LPDDNONLOCALVIDMEMCAPS	lpddNLVHELCaps;
+    LPDDNONLOCALVIDMEMCAPS	lpddNLVBothCaps;
+    ULONG_PTR			lpD3DExtendedCaps;
+    /* DirectX 5.0A */
+    DWORD			dwDOSBoxEvent;
+    RECT			rectDesktop;
+    char			cDriverName[MAX_DRIVER_NAME];
+    /* DirectX 6.0 */
+    ULONG_PTR			lpD3DHALCallbacks3;
+    DWORD			dwNumZPixelFormats;
+    LPDDPIXELFORMAT		lpZPixelFormats;
+    LPDDRAWI_DDMOTIONCOMP_INT	mcList;
+    DWORD			hDDVxd;
+    DDSCAPSEX			ddsCapsMore;
+} DDRAWI_DIRECTDRAW_GBL;
+
+#define DDRAWI_VIRTUALDESKTOP	0x00000008
+#define DDRAWI_MODEX		0x00000010
+#define DDRAWI_DISPLAYDRV	0x00000020
+#define DDRAWI_FULLSCREEN	0x00000040
+#define DDRAWI_MODECHANGED	0x00000080
+#define DDRAWI_NOHARDWARE	0x00000100
+#define DDRAWI_PALETTEINIT	0x00000200
+#define DDRAWI_NOEMULATION	0x00000400
+/* more... */
+
+/* surfaces */
+typedef struct _DDRAWI_DDRAWSURFACE_INT {
+    LPVOID			lpVtbl;
+    LPDDRAWI_DDRAWSURFACE_LCL	lpLcl;
+    LPDDRAWI_DDRAWSURFACE_INT	lpLink;
+    DWORD			dwIntRefCnt;
+} DDRAWI_DDRAWSURFACE_INT;
+
+typedef struct _DDRAWI_DDRAWSURFACE_GBL {
+    DWORD			dwRefCnt;
+    DWORD			dwGlobalFlags;
+    union {
+	LPACCESSRECTLIST	lpRectList;
+	DWORD			dwBlockSizeY;
+    } DUMMYUNIONNAME1;
+    union {
+	LPVMEMHEAP		lpVidMemHeap;
+	DWORD			dwBlockSizeX;
+    } DUMMYUNIONNAME2;
+    union {
+	LPDDRAWI_DIRECTDRAW_GBL	lpDD;
+	LPVOID			lpDDHandle;
+    } DUMMYUNIONNAME3;
+    FLATPTR			fpVidMem;
+    union {
+	LONG			lPitch;
+	DWORD			dwLinearSize;
+    } DUMMYUNIONNAME4;
+    WORD			wHeight;
+    WORD			wWidth;
+    DWORD			dwUsageCount;
+    ULONG_PTR			dwReserved1; /* for display driver use */
+    /* optional (defaults to primary surface pixelformat) */
+    DDPIXELFORMAT		ddpfSurface;
+} DDRAWI_DDRAWSURFACE_GBL;
+
+#define DDRAWISURFGBL_MEMFREE			0x00000001
+#define DDRAWISURFGBL_SYSMEMREQUESTED		0x00000002
+#define DDRAWISURFGBL_ISGDISURFACE		0x00000004
+#define DDRAWISURFGBL_SOFTWAREAUTOFLIP		0x00000008
+#define DDRAWISURFGBL_LOCKNOTHOLDINGWIN16LOCK	0x00000010
+#define DDRAWISURFGBL_LOCKVRAMSTYLE		0x00000020
+#define DDRAWISURFGBL_LOCKBROKEN		0x00000040
+#define DDRAWISURFGBL_IMPLICITHANDLE		0x00000080
+#define DDRAWISURFGBL_ISCLIENTMEM		0x00000100
+#define DDRAWISURFGBL_HARDWAREOPSOURCE		0x00000200
+#define DDRAWISURFGBL_HARDWAREOPDEST		0x00000400
+#define DDRAWISURFGBL_HARDWAREOPSTARTED		0x00000600
+#define DDRAWISURFGBL_VPORTINTERLEAVED		0x00000800
+#define DDRAWISURFGBL_VPORTDATA			0x00001000
+#define DDRAWISURFGBL_LATEALLOCATELINEAR	0x00002000
+#define DDRAWISURFGBL_SYSMEMEXECUTEBUFFER	0x00004000
+#define DDRAWISURFGBL_FASTLOCKHELD		0x00008000
+#define DDRAWISURFGBL_READONLYLOCKHELD		0x00010000
+
+typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE {
+    DWORD			dwSize;
+    union {
+	DWORD			dwPhysicalPageTable;
+	FLATPTR			fpPhysicalVidMem;
+    } DUMMYUNIONNAME1;
+    LPDWORD			pPageTable;
+    DWORD			cPages;
+    ULONG_PTR			dwSavedDCContext;
+    FLATPTR			fpAliasedVidMem;
+    ULONG_PTR			dwDriverReserved;
+    ULONG_PTR			dwHELReserved;
+    DWORD			cPageUnlocks;
+    ULONG_PTR			hKernelSurface;
+    DWORD			dwKernelRefCnt;
+    LPDDCOLORCONTROL		lpColorInfo;
+    FLATPTR			fpNTAlias;
+    DWORD			dwContentsStamp;
+    LPVOID			lpvUnswappedDriverReserved;
+    LPVOID			lpDDRAWReserved2;
+    DWORD			dwDDRAWReserved1;
+    DWORD			dwDDRAWReserved2;
+    FLATPTR			fpAliasOfVidMem;
+} DDRAWI_DDRAWSURFACE_GBL_MORE;
+
+/* the MS version of this macro was somewhat obfuscated and unreadable
+ * (possibly because of mediocre MS coders)... so I simplified it...
+ * (and so I commit no copyright violations either, hah) */
+#define GET_LPDDRAWSURFACE_GBL_MORE(psurf_gbl) \
+    (*(((LPDDRAWI_DDRAWSURFACE_GBL_MORE *)(psurf_gbl)) - 1))
+
+typedef struct _DDRAWI_DDRAWSURFACE_MORE {
+    DWORD			dwSize;
+    IUNKNOWN_LIST *		lpIUnknowns;
+    LPDDRAWI_DIRECTDRAW_LCL	lpDD_lcl;
+    DWORD			dwPageLockCount;
+    DWORD			dwBytesAllocated;
+    LPDDRAWI_DIRECTDRAW_INT	lpDD_int;
+    DWORD			dwMipMapCount;
+    LPDDRAWI_DDRAWCLIPPER_INT	lpDDIClipper;
+    /* DirectX 5.0 */
+    LPHEAPALIASINFO		lpHeapAliasInfo;
+    DWORD			dwOverlayFlags;
+    VOID			*rgjunc;
+    LPDDRAWI_DDVIDEOPORT_LCL	lpVideoPort;
+    LPDDOVERLAYFX		lpddOverlayFX;
+    DDSCAPSEX			ddsCapsEx;
+    DWORD			dwTextureStage;
+    LPVOID			lpDDRAWReserved;
+    LPVOID			lpDDRAWReserved2;
+    LPVOID			lpDDrawReserved3;
+    DWORD			dwDDrawReserved4;
+    LPVOID			lpDDrawReserved5;
+    LPDWORD			lpGammaRamp;
+    LPDWORD			lpOriginalGammaRamp;
+    LPVOID			lpDDrawReserved6;
+    DWORD			dwSurfaceHandle;
+    DWORD			qwDDrawReserved8[2];
+    LPVOID			lpDDrawReserved9;
+    DWORD			cSurfaces;
+    LPDDSURFACEDESC2		pCreatedDDSurfaceDesc2;
+    LPDDRAWI_DDRAWSURFACE_LCL	*slist;
+    DWORD			dwFVF;
+    LPVOID			lpVB;
+} DDRAWI_DDRAWSURFACE_MORE;
+
+typedef struct _DDRAWI_DDRAWSURFACE_LCL {
+    LPDDRAWI_DDRAWSURFACE_MORE	lpSurfMore;
+    LPDDRAWI_DDRAWSURFACE_GBL	lpGbl;
+    ULONG_PTR			hDDSurface;
+    LPATTACHLIST		lpAttachList;
+    LPATTACHLIST		lpAttachListFrom;
+    DWORD			dwLocalRefCnt;
+    DWORD			dwProcessId;
+    DWORD			dwFlags;
+    DDSCAPS			ddsCaps;
+    LPDDRAWI_DDRAWPALETTE_INT	lpDDPalette;
+    LPDDRAWI_DDRAWCLIPPER_LCL	lpDDClipper;
+    DWORD			dwModeCreatedIn;
+    DWORD			dwBackBufferCount;
+    DDCOLORKEY			ddckCKDestBlt;
+    DDCOLORKEY			ddckCKSrcBlt;
+    ULONG_PTR			hDC;
+    ULONG_PTR			dwReserved1; /* for display driver use */
+    /* overlays only */
+    DDCOLORKEY			ddckCKSrcOverlay;
+    DDCOLORKEY			ddckCKDestOverlay;
+    LPDDRAWI_DDRAWSURFACE_INT	lpSurfaceOverlaying;
+    DBLNODE			dbnOverlayNode;
+    RECT			rcOverlaySrc;
+    RECT			rcOverlayDest;
+    DWORD			dwClrXparent;
+    DWORD			dwAlpha;
+    LONG			lOverlayX;
+    LONG			lOverlayY;
+} DDRAWI_DDRAWSURFACE_LCL;
+
+#define DDRAWISURF_ATTACHED		0x00000001
+#define DDRAWISURF_IMPLICITCREATE	0x00000002
+#define DDRAWISURF_ISFREE		0x00000004
+#define DDRAWISURF_ATTACHED_FROM	0x00000008
+#define DDRAWISURF_IMPLICITROOT		0x00000010
+#define DDRAWISURF_PARTOFPRIMARYCHAIN	0x00000020
+#define DDRAWISURF_DATAISALIASED	0x00000040
+#define DDRAWISURF_HASDC		0x00000080
+#define DDRAWISURF_HASCKEYDESTOVERLAY	0x00000100
+#define DDRAWISURF_HASCKEYDESTBLT	0x00000200
+#define DDRAWISURF_HASCKEYSRCOVERLAY	0x00000400
+#define DDRAWISURF_HASCKEYSRCBLT	0x00000800
+#define DDRAWISURF_LOCKEXCLUDEDCURSOR	0x00001000
+#define DDRAWISURF_HASPIXELFORMAT	0x00002000
+#define DDRAWISURF_HASOVERLAYDATA	0x00004000
+#define DDRAWISURF_SETGAMMA		0x00008000
+/* more... */
+#define DDRAWISURF_INVALID		0x10000000
+
+/* palettes */
+typedef struct _DDRAWI_DDRAWPALETTE_INT {
+    LPVOID			lpVtbl;
+    LPDDRAWI_DDRAWPALETTE_LCL	lpLcl;
+    LPDDRAWI_DDRAWPALETTE_INT	lpLink;
+    DWORD			dwIntRefCnt;
+} DDRAWI_DDRAWPALETTE_INT;
+
+typedef struct _DDRAWI_DDRAWPALETTE_GBL {
+    DWORD			dwRefCnt;
+    DWORD			dwFlags;
+    LPDDRAWI_DIRECTDRAW_LCL	lpDD_lcl;
+    DWORD			dwProcessId;
+    LPPALETTEENTRY		lpColorTable;
+    union {
+	ULONG_PTR		dwReserved1; /* for display driver use */
+	HPALETTE		hHELGDIPalette;
+    } DUMMYUNIONNAME1;
+    /* DirectX 5.0 */
+    DWORD			dwDriverReserved;
+    DWORD			dwContentsStamp;
+    /* DirectX 6.0 */
+    DWORD			dwSaveStamp;
+    /* DirectX 7.0 */
+    DWORD			dwHandle;
+} DDRAWI_DDRAWPALETTE_GBL;
+
+#define DDRAWIPAL_256		0x00000001
+#define DDRAWIPAL_16		0x00000002
+#define DDRAWIPAL_GDI		0x00000004
+#define DDRAWIPAL_STORED_8	0x00000008
+#define DDRAWIPAL_STORED_16	0x00000010
+#define DDRAWIPAL_STORED_24	0x00000020
+#define DDRAWIPAL_EXCLUSIVE	0x00000040
+#define DDRAWIPAL_INHEL		0x00000080
+#define DDRAWIPAL_DIRTY		0x00000100
+#define DDRAWIPAL_ALLOW256	0x00000200
+#define DDRAWIPAL_4		0x00000400
+#define DDRAWIPAL_2		0x00000800
+#define DDRAWIPAL_STORED_8INDEX	0x00001000
+#define DDRAWIPAL_ALPHA		0x00002000
+
+typedef struct _DDRAWI_DDRAWPALETTE_LCL {
+    DWORD			lpPalMore;
+    LPDDRAWI_DDRAWPALETTE_GBL	lpGbl;
+    ULONG_PTR			dwUnused0;
+    DWORD			dwLocalRefCnt;
+    IUnknown *			pUnkOuter;
+    LPDDRAWI_DIRECTDRAW_LCL	lpDD_lcl;
+    ULONG_PTR			dwReserved1;
+    /* DirectX 6.0 */
+    ULONG_PTR			dwDDRAWReserved1;
+    ULONG_PTR			dwDDRAWReserved2;
+    ULONG_PTR			dwDDRAWReserved3;
+} DDRAWI_DDRAWPALETTE_LCL;
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __WINE_DDRAWI_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddstream.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddstream.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ddstream.idl	(revision 16410)
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2004 Christian Costa
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "unknwn.idl";
+import "mmstream.idl";
+
+cpp_quote("#ifndef __WINE_DDRAW_H")
+typedef void * LPDDSURFACEDESC;
+typedef struct tDDSURFACEDESC DDSURFACEDESC;
+interface IDirectDraw;
+interface IDirectDrawSurface;
+interface IDirectDrawPalette;
+cpp_quote("#endif")
+cpp_quote("#include <ddraw.h>")
+
+enum {
+	DDSFF_PROGRESSIVERENDER = 0x00000001
+};
+
+interface IDirectDrawMediaStream;
+interface IDirectDrawStreamSample;
+
+[
+object,
+local,
+uuid(F4104FCE-9A70-11d0-8FDE-00C04FD9189D),
+pointer_default(unique)
+]
+interface IDirectDrawMediaStream : IMediaStream
+{
+	HRESULT GetFormat(
+		[out] DDSURFACEDESC *pDDSDCurrent,
+		[out] IDirectDrawPalette **ppDirectDrawPalette,
+		[out] DDSURFACEDESC *pDDSDDesired,
+		[out] DWORD *pdwFlags);
+
+	HRESULT SetFormat(
+		[in] const DDSURFACEDESC *pDDSurfaceDesc,
+		[in] IDirectDrawPalette *pDirectDrawPalette);
+
+	HRESULT GetDirectDraw(
+		[out] IDirectDraw **ppDirectDraw);
+
+	HRESULT SetDirectDraw(
+		[in] IDirectDraw *pDirectDraw);
+
+	HRESULT CreateSample(
+		[in] IDirectDrawSurface *pSurface,
+		[in] const RECT *pRect,
+		[in] DWORD dwFlags,
+		[out] IDirectDrawStreamSample **ppSample);
+
+	HRESULT GetTimePerFrame(
+		[out] STREAM_TIME *pFrameTime);
+}
+
+
+[
+object,
+local,
+uuid(F4104FCF-9A70-11d0-8FDE-00C04FD9189D),
+pointer_default(unique)
+]
+interface IDirectDrawStreamSample : IStreamSample
+{
+	HRESULT GetSurface(
+		[out] IDirectDrawSurface ** ppDirectDrawSurface,
+		[out] RECT * pRect);
+
+	HRESULT SetRect(
+		[in] const RECT * pRect);
+
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/devenum.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/devenum.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/devenum.idl	(revision 16410)
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2002 Robert Shearman
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "oaidl.idl";
+
+cpp_quote("#define CDEF_CLASS_DEFAULT 0x0001")
+cpp_quote("#define CDEF_BYPASS_CLASS_MANAGER 0x0002")
+cpp_quote("#define CDEF_CLASS_LEGACY  0x0004")
+cpp_quote("#define CDEF_MERIT_ABOVE_DO_NOT_USE 0x0008")
+
+[
+    object,
+    uuid(29840822-5B84-11D0-BD3B-00A0C911CE86),
+    pointer_default(unique)
+]
+interface ICreateDevEnum : IUnknown
+{
+    HRESULT CreateClassEnumerator(
+        [in]  REFCLSID clsidDeviceClass,
+        [out] IEnumMoniker ** ppEnumMoniker,
+        [in]  DWORD dwFlags);
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/devguid.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/devguid.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/devguid.h	(revision 16410)
@@ -0,0 +1,106 @@
+/*
+ * Defines GUIDs for device classes
+ *
+ * Copyright (C) 2004 CodeWeavers (Aric Stewart)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+DEFINE_GUID( GUID_DEVCLASS_1394,
+  0x6BDD1FC1, 0x810F, 0x11D0, 0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F );
+DEFINE_GUID( GUID_DEVCLASS_ADAPTER,
+  0x4D36E964, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_APMSUPPORT,
+  0xD45B1C18, 0xC8FA, 0x11D1, 0x9F, 0x77, 0x00, 0x00, 0xF8, 0x05, 0xF5, 0x30 );
+DEFINE_GUID( GUID_DEVCLASS_BATTERY,
+  0x72631E54, 0x78A4, 0x11D0, 0xBC, 0xF7, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A );
+DEFINE_GUID( GUID_DEVCLASS_CDROM,
+  0x4D36E965, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_COMPUTER,
+  0x4D36E966, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_DECODER,
+  0x6BDD1FC2, 0x810F, 0x11D0, 0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F );
+DEFINE_GUID( GUID_DEVCLASS_DISKDRIVE,
+  0x4D36E967, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_DISPLAY,
+  0x4D36E968, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_FDC,
+  0x4D36E969, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_FLOPPYDISK,
+  0x4D36E980, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_GPS,
+  0x6BDD1FC3, 0x810F, 0x11D0, 0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F );
+DEFINE_GUID( GUID_DEVCLASS_HDC,
+  0x4D36E96A, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_HIDCLASS,
+  0x745A17A0, 0x74D3, 0x11D0, 0xB6, 0xFE, 0x00, 0xA0, 0xC9, 0x0F, 0x57, 0xDA );
+DEFINE_GUID( GUID_DEVCLASS_IMAGE,
+  0x6BDD1FC6, 0x810F, 0x11D0, 0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F );
+DEFINE_GUID( GUID_DEVCLASS_INFRARED,
+  0x6BDD1FC5, 0x810F, 0x11D0, 0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F );
+DEFINE_GUID( GUID_DEVCLASS_KEYBOARD,
+  0x4D36E96B, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_LEGACYDRIVER,
+  0x8ECC055D, 0x047F, 0x11D1, 0xA5, 0x37, 0x00, 0x00, 0xF8, 0x75, 0x3E, 0xD1 );
+DEFINE_GUID( GUID_DEVCLASS_MEDIA,
+  0x4D36E96C, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_MEDIUM_CHANGER,
+  0xCE5939AE, 0xEBDE, 0x11D0, 0xB1, 0x81, 0x00, 0x00, 0xF8, 0x75, 0x3E, 0xC4 );
+DEFINE_GUID( GUID_DEVCLASS_MODEM,
+  0x4D36E96D, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_MONITOR,
+  0x4D36E96E, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_MOUSE,
+  0x4D36E96F, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_MTD,
+  0x4D36E970, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_MULTIFUNCTION,
+  0x4D36E971, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_MULTIPORTSERIAL,
+  0x50906CB8, 0xBA12, 0x11D1, 0xBF, 0x5D, 0x00, 0x00, 0xF8, 0x05, 0xF5, 0x30 );
+DEFINE_GUID( GUID_DEVCLASS_NET,
+  0x4D36E972, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_NETCLIENT,
+  0x4D36E973, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_NETSERVICE,
+  0x4D36E974, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_NETTRANS,
+  0x4D36E975, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_NODRIVER,
+  0x4D36E976, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_PCMCIA,
+  0x4D36E977, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_PORTS,
+  0x4D36E978, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_PRINTER,
+  0x4D36E979, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_PRINTERUPGRADE,
+  0x4D36E97A, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_SCSIADAPTER,
+  0x4D36E97B, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_SMARTCARDREADER,
+  0x50DD5230, 0xBA8A, 0x11D1, 0xBF, 0x5D, 0x00, 0x00, 0xF8, 0x05, 0xF5, 0x30 );
+DEFINE_GUID( GUID_DEVCLASS_SOUND,
+  0x4D36E97C, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_SYSTEM,
+  0x4D36E97D, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_TAPEDRIVE,
+  0x6D807884, 0x7D21, 0x11CF, 0x80, 0x1C, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_UNKNOWN,
+  0x4D36E97E, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_USB,
+  0x36FC9E60, 0xC465, 0x11CF, 0x80, 0x56, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00 );
+DEFINE_GUID( GUID_DEVCLASS_VOLUME,
+  0x71A27CDD, 0x812A, 0x11D0, 0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F );
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/digitalv.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/digitalv.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/digitalv.h	(revision 16410)
@@ -0,0 +1,866 @@
+/*
+ * Copyright (C) 1999 Eric Pouech
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DIGITALV_H
+#define __WINE_DIGITALV_H
+
+/*
+ * Wine Digital Video extensions
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define MCI_TEST                            0x00000020L
+
+/* Message values */
+
+#define MCI_CAPTURE                         0x0870
+#define MCI_MONITOR                         0x0871
+#define MCI_RESERVE                         0x0872
+#define MCI_SETAUDIO                        0x0873
+#define MCI_SIGNAL                          0x0875
+#define MCI_SETVIDEO                        0x0876
+#define MCI_QUALITY                         0x0877
+#define MCI_LIST                            0x0878
+#define MCI_UNDO                            0x0879
+#define MCI_CONFIGURE                       0x087A
+#define MCI_RESTORE                         0x087B
+
+/* Return and string constant values */
+
+#define MCI_ON   1
+#define MCI_OFF  0
+
+#define MCI_DGV_FILE_MODE_SAVING            0x0001
+#define MCI_DGV_FILE_MODE_LOADING           0x0002
+#define MCI_DGV_FILE_MODE_EDITING           0x0003
+#define MCI_DGV_FILE_MODE_IDLE              0x0004
+
+/* These identifiers are used only by device drivers */
+
+#define MCI_ON_S                            0x00008000L
+#define MCI_OFF_S                           0x00008001L
+#define MCI_DGV_FILE_S                      0x00008002L
+#define MCI_DGV_INPUT_S                     0x00008003L
+
+#define MCI_DGV_FILE_MODE_SAVING_S          0x00008004L
+#define MCI_DGV_FILE_MODE_LOADING_S         0x00008005L
+#define MCI_DGV_FILE_MODE_EDITING_S         0x00008006L
+#define MCI_DGV_FILE_MODE_IDLE_S            0x00008007L
+
+#define MCI_DGV_SETVIDEO_SRC_NTSC_S         0x00008010L
+#define MCI_DGV_SETVIDEO_SRC_RGB_S          0x00008011L
+#define MCI_DGV_SETVIDEO_SRC_SVIDEO_S       0x00008012L
+#define MCI_DGV_SETVIDEO_SRC_PAL_S          0x00008013L
+#define MCI_DGV_SETVIDEO_SRC_SECAM_S        0x00008014L
+#define MCI_DGV_SETVIDEO_SRC_GENERIC_S      0x00008015L
+
+#define MCI_DGV_SETAUDIO_SRC_LEFT_S         0x00008020L
+#define MCI_DGV_SETAUDIO_SRC_RIGHT_S        0x00008021L
+#define MCI_DGV_SETAUDIO_SRC_AVERAGE_S      0x00008022L
+#define MCI_DGV_SETAUDIO_SRC_STEREO_S       0x00008023L
+
+/* Window message for signal notification */
+
+#ifndef MM_MCISIGNAL
+#define MM_MCISIGNAL                        0x3CB
+#endif
+
+/* error values */
+
+#define MCIERR_DGV_DEVICE_LIMIT             (MCIERR_CUSTOM_DRIVER_BASE+0)
+#define MCIERR_DGV_IOERR                    (MCIERR_CUSTOM_DRIVER_BASE+1)
+#define MCIERR_DGV_WORKSPACE_EMPTY          (MCIERR_CUSTOM_DRIVER_BASE+2)
+#define MCIERR_DGV_DISK_FULL                (MCIERR_CUSTOM_DRIVER_BASE+3)
+#define MCIERR_DGV_DEVICE_MEMORY_FULL       (MCIERR_CUSTOM_DRIVER_BASE+4)
+#define MCIERR_DGV_BAD_CLIPBOARD_RANGE      (MCIERR_CUSTOM_DRIVER_BASE+5)
+
+/* defines for monitor methods */
+
+#define MCI_DGV_METHOD_PRE                  0x0000a000L
+#define MCI_DGV_METHOD_POST                 0x0000a001L
+#define MCI_DGV_METHOD_DIRECT               0x0000a002L
+
+/* defines for known file formats */
+
+#define MCI_DGV_FF_AVSS                     0x00004000L
+#define MCI_DGV_FF_AVI                      0x00004001L
+#define MCI_DGV_FF_DIB                      0x00004002L
+#define MCI_DGV_FF_RDIB                     0x00004003L
+#define MCI_DGV_FF_JPEG                     0x00004004L
+#define MCI_DGV_FF_RJPEG                    0x00004005L
+#define MCI_DGV_FF_JFIF                     0x00004006L
+#define MCI_DGV_FF_MPEG                     0x00004007L
+
+/* values for dwItem field of MCI_CAPABILITY_PARMS structure */
+
+#define MCI_DGV_GETDEVCAPS_CAN_LOCK         0x00004000L
+#define MCI_DGV_GETDEVCAPS_CAN_STRETCH      0x00004001L
+#define MCI_DGV_GETDEVCAPS_CAN_FREEZE       0x00004002L
+#define MCI_DGV_GETDEVCAPS_MAX_WINDOWS      0x00004003L
+#define MCI_DGV_GETDEVCAPS_CAN_REVERSE      0x00004004L
+#define MCI_DGV_GETDEVCAPS_HAS_STILL        0x00004005L
+#define MCI_DGV_GETDEVCAPS_PALETTES         0x00004006L
+#define MCI_DGV_GETDEVCAPS_CAN_STR_IN       0x00004008L
+#define MCI_DGV_GETDEVCAPS_CAN_TEST         0x00004009L
+#define MCI_DGV_GETDEVCAPS_MAXIMUM_RATE     0x0000400aL
+#define MCI_DGV_GETDEVCAPS_MINIMUM_RATE     0x0000400bL
+
+/* flags for dwFlags parameter of MCI_CAPTURE command message */
+
+#define MCI_DGV_CAPTURE_AS                  0x00010000L
+#define MCI_DGV_CAPTURE_AT                  0x00020000L
+
+/* flags for dwFlags parameter of MCI_COPY command message */
+
+#define MCI_DGV_COPY_AT                     0x00010000L
+#define MCI_DGV_COPY_AUDIO_STREAM           0x00020000L
+#define MCI_DGV_COPY_VIDEO_STREAM           0x00040000L
+
+/* flags for dwFlags parameter of MCI_CUE command message */
+
+#define MCI_DGV_CUE_INPUT                   0x00010000L
+#define MCI_DGV_CUE_OUTPUT                  0x00020000L
+#define MCI_DGV_CUE_NOSHOW                  0x00040000L
+
+/* flags for dwFlags parameter of MCI_CUT command message */
+
+#define MCI_DGV_CUT_AT                      0x00010000L
+#define MCI_DGV_CUT_AUDIO_STREAM            0x00020000L
+#define MCI_DGV_CUT_VIDEO_STREAM            0x00040000L
+
+/* flags for dwFlags parameter of MCI_DELETE command message */
+
+#define MCI_DGV_DELETE_AT                   0x00010000L
+#define MCI_DGV_DELETE_AUDIO_STREAM         0x00020000L
+#define MCI_DGV_DELETE_VIDEO_STREAM         0x00040000L
+
+/* flags for dwFlags parameter of MCI_FREEZE command message */
+
+#define MCI_DGV_FREEZE_AT                   0x00010000L
+#define MCI_DGV_FREEZE_OUTSIDE              0x00020000L
+
+/* flags for dwFlags parameter of MCI_INFO command message */
+
+#define MCI_DGV_INFO_TEXT                   0x00010000L
+#define MCI_DGV_INFO_ITEM                   0X00020000L
+
+/* values for dwItem field of MCI_DGV_INFO_PARMS structure */
+
+#define MCI_INFO_VERSION                    0x00000400L
+
+#define MCI_DGV_INFO_USAGE                  0x00004000L
+#define MCI_DGV_INFO_AUDIO_QUALITY          0x00004001L
+#define MCI_DGV_INFO_STILL_QUALITY          0x00004002L
+#define MCI_DGV_INFO_VIDEO_QUALITY          0x00004003L
+#define MCI_DGV_INFO_AUDIO_ALG              0x00004004L
+#define MCI_DGV_INFO_STILL_ALG              0x00004005L
+#define MCI_DGV_INFO_VIDEO_ALG              0x00004006L
+
+/* flags for dwFlags parameter of MCI_LIST command message */
+
+#define MCI_DGV_LIST_ITEM                   0x00010000L
+#define MCI_DGV_LIST_COUNT                  0x00020000L
+#define MCI_DGV_LIST_NUMBER                 0x00040000L
+#define MCI_DGV_LIST_ALG                    0x00080000L
+
+/* values for dwItem field of MCI_DGV_LIST_PARMS structure */
+
+#define MCI_DGV_LIST_AUDIO_ALG              0x00004000L
+#define MCI_DGV_LIST_AUDIO_QUALITY          0x00004001L
+#define MCI_DGV_LIST_AUDIO_STREAM           0x00004002L
+#define MCI_DGV_LIST_STILL_ALG              0x00004003L
+#define MCI_DGV_LIST_STILL_QUALITY          0x00004004L
+#define MCI_DGV_LIST_VIDEO_ALG              0x00004005L
+#define MCI_DGV_LIST_VIDEO_QUALITY          0x00004006L
+#define MCI_DGV_LIST_VIDEO_STREAM           0x00004007L
+#define MCI_DGV_LIST_VIDEO_SOURCE           0x00004008L
+
+
+/* flags for dwFlags parameter of MCI_MONITOR command message */
+
+#define MCI_DGV_MONITOR_METHOD              0x00010000L
+#define MCI_DGV_MONITOR_SOURCE              0x00020000L
+
+/* values for dwSource parameter of the MCI_DGV_MONITOR_PARMS structure */
+
+#define MCI_DGV_MONITOR_INPUT               0x00004000L
+#define MCI_DGV_MONITOR_FILE                0x00004001L
+
+/* flags for dwFlags parameter of MCI_OPEN command message */
+
+#define MCI_DGV_OPEN_WS                     0x00010000L
+#define MCI_DGV_OPEN_PARENT                 0x00020000L
+#define MCI_DGV_OPEN_NOSTATIC               0x00040000L
+#define MCI_DGV_OPEN_16BIT                  0x00080000L
+#define MCI_DGV_OPEN_32BIT                  0x00100000L
+
+/* flags for dwFlags parameter of MCI_PASTE command message */
+
+#define MCI_DGV_PASTE_AT                    0x00010000L
+#define MCI_DGV_PASTE_AUDIO_STREAM          0x00020000L
+#define MCI_DGV_PASTE_VIDEO_STREAM          0x00040000L
+#define MCI_DGV_PASTE_INSERT                0x00080000L
+#define MCI_DGV_PASTE_OVERWRITE             0x00100000L
+
+/* flags for dwFlags parameter of MCI_PLAY command message */
+
+#define MCI_DGV_PLAY_REPEAT                 0x00010000L
+#define MCI_DGV_PLAY_REVERSE                0x00020000L
+
+/* flags for dwFlags parameter of MCI_PUT command message */
+
+#define MCI_DGV_RECT                        0x00010000L
+#define MCI_DGV_PUT_SOURCE                  0x00020000L
+#define MCI_DGV_PUT_DESTINATION             0x00040000L
+#define MCI_DGV_PUT_FRAME                   0x00080000L
+#define MCI_DGV_PUT_VIDEO                   0x00100000L
+#define MCI_DGV_PUT_WINDOW                  0x00200000L
+#define MCI_DGV_PUT_CLIENT                  0x00400000L
+
+/* flags for dwFlags parameter of MCI_QUALITY command message */
+
+#define MCI_QUALITY_ITEM                    0x00010000L
+#define MCI_QUALITY_NAME                    0x00020000L
+#define MCI_QUALITY_ALG                     0x00040000L
+#define MCI_QUALITY_DIALOG                  0x00080000L
+#define MCI_QUALITY_HANDLE                  0x00100000L
+
+/* values for dwItem field of MCI_QUALITY_PARMS structure */
+
+#define MCI_QUALITY_ITEM_AUDIO              0x00004000L
+#define MCI_QUALITY_ITEM_STILL              0x00004001L
+#define MCI_QUALITY_ITEM_VIDEO              0x00004002L
+
+/* flags for dwFlags parameter of MCI_REALIZE command message */
+
+#define MCI_DGV_REALIZE_NORM                0x00010000L
+#define MCI_DGV_REALIZE_BKGD                0x00020000L
+
+/* flags for dwFlags parameter of MCI_RECORD command message */
+
+#define MCI_DGV_RECORD_HOLD                 0x00020000L
+#define MCI_DGV_RECORD_AUDIO_STREAM         0x00040000L
+#define MCI_DGV_RECORD_VIDEO_STREAM         0x00080000L
+
+/* flags for dwFlags parameters of MCI_RESERVE command message */
+
+#define MCI_DGV_RESERVE_IN                  0x00010000L
+#define MCI_DGV_RESERVE_SIZE                0x00020000L
+
+/* flags for dwFlags parameter of MCI_RESTORE command message */
+
+#define MCI_DGV_RESTORE_FROM                0x00010000L
+#define MCI_DGV_RESTORE_AT                  0x00020000L
+
+/* flags for dwFlags parameters of MCI_SAVE command message */
+
+#define MCI_DGV_SAVE_ABORT                  0x00020000L
+#define MCI_DGV_SAVE_KEEPRESERVE            0x00040000L
+
+/* flags for dwFlags parameters of MCI_SET command message */
+
+#define MCI_DGV_SET_SEEK_EXACTLY            0x00010000L
+#define MCI_DGV_SET_SPEED                   0x00020000L
+#define MCI_DGV_SET_STILL                   0x00040000L
+#define MCI_DGV_SET_FILEFORMAT              0x00080000L
+
+/* flags for the dwFlags parameter of MCI_SETAUDIO command message */
+
+#define MCI_DGV_SETAUDIO_OVER               0x00010000L
+#define MCI_DGV_SETAUDIO_CLOCKTIME          0x00020000L
+#define MCI_DGV_SETAUDIO_ALG                0x00040000L
+#define MCI_DGV_SETAUDIO_QUALITY            0x00080000L
+#define MCI_DGV_SETAUDIO_RECORD             0x00100000L
+#define MCI_DGV_SETAUDIO_LEFT               0x00200000L
+#define MCI_DGV_SETAUDIO_RIGHT              0x00400000L
+#define MCI_DGV_SETAUDIO_ITEM               0x00800000L
+#define MCI_DGV_SETAUDIO_VALUE              0x01000000L
+#define MCI_DGV_SETAUDIO_INPUT              0x02000000L
+#define MCI_DGV_SETAUDIO_OUTPUT             0x04000000L
+
+/* values for the dwItem parameter of MCI_DGV_SETAUDIO_PARMS */
+
+#define MCI_DGV_SETAUDIO_TREBLE             0x00004000L
+#define MCI_DGV_SETAUDIO_BASS               0x00004001L
+#define MCI_DGV_SETAUDIO_VOLUME             0x00004002L
+#define MCI_DGV_SETAUDIO_STREAM             0x00004003L
+#define MCI_DGV_SETAUDIO_SOURCE             0x00004004L
+#define MCI_DGV_SETAUDIO_SAMPLESPERSEC      0x00004005L
+#define MCI_DGV_SETAUDIO_AVGBYTESPERSEC     0x00004006L
+#define MCI_DGV_SETAUDIO_BLOCKALIGN         0x00004007L
+#define MCI_DGV_SETAUDIO_BITSPERSAMPLE      0x00004008L
+
+/* values for the dwValue parameter of MCI_DGV_SETAUDIO_PARMS
+   used with MCI_DGV_SETAUDIO_SOURCE */
+
+#define MCI_DGV_SETAUDIO_SOURCE_STEREO      0x00000000L
+#define MCI_DGV_SETAUDIO_SOURCE_LEFT        0x00000001L
+#define MCI_DGV_SETAUDIO_SOURCE_RIGHT       0x00000002L
+#define MCI_DGV_SETAUDIO_SOURCE_AVERAGE     0x00004000L
+
+/* flags for the dwFlags parameter of MCI_SETVIDEO command */
+
+#define MCI_DGV_SETVIDEO_QUALITY            0x00010000L
+#define MCI_DGV_SETVIDEO_ALG                0x00020000L
+#define MCI_DGV_SETVIDEO_CLOCKTIME          0x00040000L
+#define MCI_DGV_SETVIDEO_SRC_NUMBER         0x00080000L
+#define MCI_DGV_SETVIDEO_ITEM               0x00100000L
+#define MCI_DGV_SETVIDEO_OVER               0x00200000L
+#define MCI_DGV_SETVIDEO_RECORD             0x00400000L
+#define MCI_DGV_SETVIDEO_STILL              0x00800000L
+#define MCI_DGV_SETVIDEO_VALUE              0x01000000L
+#define MCI_DGV_SETVIDEO_INPUT              0x02000000L
+#define MCI_DGV_SETVIDEO_OUTPUT             0x04000000L
+
+/* values for the dwTo field of MCI_SETVIDEO_PARMS
+   used with MCI_DGV_SETVIDEO_SOURCE */
+
+#define MCI_DGV_SETVIDEO_SRC_NTSC           0x00004000L
+#define MCI_DGV_SETVIDEO_SRC_RGB            0x00004001L
+#define MCI_DGV_SETVIDEO_SRC_SVIDEO         0x00004002L
+#define MCI_DGV_SETVIDEO_SRC_PAL            0x00004003L
+#define MCI_DGV_SETVIDEO_SRC_SECAM          0x00004004L
+#define MCI_DGV_SETVIDEO_SRC_GENERIC        0x00004005L
+
+/* values for the dwItem field of MCI_SETVIDEO_PARMS */
+
+#define MCI_DGV_SETVIDEO_BRIGHTNESS         0x00004000L
+#define MCI_DGV_SETVIDEO_COLOR              0x00004001L
+#define MCI_DGV_SETVIDEO_CONTRAST           0x00004002L
+#define MCI_DGV_SETVIDEO_TINT               0x00004003L
+#define MCI_DGV_SETVIDEO_SHARPNESS          0x00004004L
+#define MCI_DGV_SETVIDEO_GAMMA              0x00004005L
+#define MCI_DGV_SETVIDEO_STREAM             0x00004006L
+#define MCI_DGV_SETVIDEO_PALHANDLE          0x00004007L
+#define MCI_DGV_SETVIDEO_FRAME_RATE         0x00004008L
+#define MCI_DGV_SETVIDEO_SOURCE             0x00004009L
+#define MCI_DGV_SETVIDEO_KEY_INDEX          0x0000400aL
+#define MCI_DGV_SETVIDEO_KEY_COLOR          0x0000400bL
+#define MCI_DGV_SETVIDEO_BITSPERPEL         0x0000400cL
+
+/* flags for the dwFlags parameter of MCI_SIGNAL */
+
+#define MCI_DGV_SIGNAL_AT                   0x00010000L
+#define MCI_DGV_SIGNAL_EVERY                0x00020000L
+#define MCI_DGV_SIGNAL_USERVAL              0x00040000L
+#define MCI_DGV_SIGNAL_CANCEL               0x00080000L
+#define MCI_DGV_SIGNAL_POSITION             0x00100000L
+
+/* flags for the dwFlags parameter of MCI_STATUS command */
+
+#define MCI_DGV_STATUS_NOMINAL              0x00020000L
+#define MCI_DGV_STATUS_REFERENCE            0x00040000L
+#define MCI_DGV_STATUS_LEFT                 0x00080000L
+#define MCI_DGV_STATUS_RIGHT                0x00100000L
+#define MCI_DGV_STATUS_DISKSPACE            0x00200000L
+#define MCI_DGV_STATUS_INPUT                0x00400000L
+#define MCI_DGV_STATUS_OUTPUT               0x00800000L
+#define MCI_DGV_STATUS_RECORD               0x01000000L
+
+/* values for dwItem field of MCI_STATUS_PARMS structure */
+
+#define MCI_DGV_STATUS_AUDIO_INPUT          0x00004000L
+#define MCI_DGV_STATUS_HWND                 0x00004001L
+#define MCI_DGV_STATUS_SPEED                0x00004003L
+#define MCI_DGV_STATUS_HPAL                 0x00004004L
+#define MCI_DGV_STATUS_BRIGHTNESS           0x00004005L
+#define MCI_DGV_STATUS_COLOR                0x00004006L
+#define MCI_DGV_STATUS_CONTRAST             0x00004007L
+#define MCI_DGV_STATUS_FILEFORMAT           0x00004008L
+#define MCI_DGV_STATUS_AUDIO_SOURCE         0x00004009L
+#define MCI_DGV_STATUS_GAMMA                0x0000400aL
+#define MCI_DGV_STATUS_MONITOR              0x0000400bL
+#define MCI_DGV_STATUS_MONITOR_METHOD       0x0000400cL
+#define MCI_DGV_STATUS_FRAME_RATE           0x0000400eL
+#define MCI_DGV_STATUS_BASS                 0x0000400fL
+#define MCI_DGV_STATUS_SIZE                 0x00004010L
+#define MCI_DGV_STATUS_SEEK_EXACTLY         0x00004011L
+#define MCI_DGV_STATUS_SHARPNESS            0x00004012L
+#define MCI_DGV_STATUS_SMPTE                0x00004013L
+#define MCI_DGV_STATUS_AUDIO                0x00004014L
+#define MCI_DGV_STATUS_TINT                 0x00004015L
+#define MCI_DGV_STATUS_TREBLE               0x00004016L
+#define MCI_DGV_STATUS_UNSAVED              0x00004017L
+#define MCI_DGV_STATUS_VIDEO                0x00004018L
+#define MCI_DGV_STATUS_VOLUME               0x00004019L
+#define MCI_DGV_STATUS_AUDIO_RECORD         0x0000401aL
+#define MCI_DGV_STATUS_VIDEO_SOURCE         0x0000401bL
+#define MCI_DGV_STATUS_VIDEO_RECORD         0x0000401cL
+#define MCI_DGV_STATUS_STILL_FILEFORMAT     0x0000401dL
+#define MCI_DGV_STATUS_VIDEO_SRC_NUM        0x0000401eL
+#define MCI_DGV_STATUS_FILE_MODE            0x0000401fL
+#define MCI_DGV_STATUS_FILE_COMPLETION      0x00004020L
+#define MCI_DGV_STATUS_WINDOW_VISIBLE       0x00004021L
+#define MCI_DGV_STATUS_WINDOW_MINIMIZED     0x00004022L
+#define MCI_DGV_STATUS_WINDOW_MAXIMIZED     0x00004023L
+#define MCI_DGV_STATUS_KEY_INDEX            0x00004024L
+#define MCI_DGV_STATUS_KEY_COLOR            0x00004025L
+#define MCI_DGV_STATUS_PAUSE_MODE           0x00004026L
+#define MCI_DGV_STATUS_SAMPLESPERSEC        0x00004027L
+#define MCI_DGV_STATUS_AVGBYTESPERSEC       0x00004028L
+#define MCI_DGV_STATUS_BLOCKALIGN           0x00004029L
+#define MCI_DGV_STATUS_BITSPERSAMPLE        0x0000402aL
+#define MCI_DGV_STATUS_BITSPERPEL           0x0000402bL
+#define MCI_DGV_STATUS_FORWARD              0x0000402cL
+#define MCI_DGV_STATUS_AUDIO_STREAM         0x0000402dL
+#define MCI_DGV_STATUS_VIDEO_STREAM         0x0000402eL
+
+/* flags for dwFlags parameter of MCI_STEP command message */
+
+#define MCI_DGV_STEP_REVERSE                0x00010000L
+#define MCI_DGV_STEP_FRAMES                 0x00020000L
+
+/* flags for dwFlags parameter of MCI_STOP command message */
+
+#define MCI_DGV_STOP_HOLD                   0x00010000L
+
+/* flags for dwFlags parameter of MCI_UPDATE command message */
+
+#define MCI_DGV_UPDATE_HDC                  0x00020000L
+#define MCI_DGV_UPDATE_PAINT                0x00040000L
+
+/* flags for dwFlags parameter of MCI_WHERE command message */
+
+#define MCI_DGV_WHERE_SOURCE                0x00020000L
+#define MCI_DGV_WHERE_DESTINATION           0x00040000L
+#define MCI_DGV_WHERE_FRAME                 0x00080000L
+#define MCI_DGV_WHERE_VIDEO                 0x00100000L
+#define MCI_DGV_WHERE_WINDOW                0x00200000L
+#define MCI_DGV_WHERE_MAX                   0x00400000L
+
+/* flags for dwFlags parameter of MCI_WINDOW command message */
+
+#define MCI_DGV_WINDOW_HWND                 0x00010000L
+#define MCI_DGV_WINDOW_STATE                0x00040000L
+#define MCI_DGV_WINDOW_TEXT                 0x00080000L
+
+/* flags for hWnd parameter of MCI_DGV_WINDOW_PARMS parameter block */
+
+#define MCI_DGV_WINDOW_DEFAULT              0x00000000L
+
+/* parameter block for MCI_WHERE, MCI_PUT, MCI_FREEZE, MCI_UNFREEZE cmds */
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    RECT    rc;
+} MCI_DGV_RECT_PARMS, *LPMCI_DGV_RECT_PARMS;
+
+/* parameter block for MCI_CAPTURE command message */
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    LPSTR   lpstrFileName;
+    RECT    rc;
+} MCI_DGV_CAPTURE_PARMSA, *LPMCI_DGV_CAPTURE_PARMSA;
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    LPWSTR  lpstrFileName;
+    RECT    rc;
+} MCI_DGV_CAPTURE_PARMSW, *LPMCI_DGV_CAPTURE_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_DGV_CAPTURE_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_DGV_CAPTURE_PARMS)
+
+/* parameter block for MCI_CLOSE command message */
+
+typedef MCI_GENERIC_PARMS MCI_CLOSE_PARMS, *LPMCI_CLOSE_PARMS;
+
+/* parameter block for MCI_COPY command message */
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    DWORD   dwFrom;
+    DWORD   dwTo;
+    RECT    rc;
+    DWORD   dwAudioStream;
+    DWORD   dwVideoStream;
+} MCI_DGV_COPY_PARMS, *LPMCI_DGV_COPY_PARMS;
+
+/* parameter block for MCI_CUE command message */
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    DWORD   dwTo;
+} MCI_DGV_CUE_PARMS, *LPMCI_DGV_CUE_PARMS;
+
+/* parameter block for MCI_CUT command message */
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    DWORD   dwFrom;
+    DWORD   dwTo;
+    RECT    rc;
+    DWORD   dwAudioStream;
+    DWORD   dwVideoStream;
+} MCI_DGV_CUT_PARMS, * LPMCI_DGV_CUT_PARMS;
+
+/* parameter block for MCI_DELETE command message */
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    DWORD   dwFrom;
+    DWORD   dwTo;
+    RECT    rc;
+    DWORD   dwAudioStream;
+    DWORD   dwVideoStream;
+} MCI_DGV_DELETE_PARMS, * LPMCI_DGV_DELETE_PARMS;
+
+/* parameter block for MCI_FREEZE command message */
+
+typedef MCI_DGV_RECT_PARMS MCI_DGV_FREEZE_PARMS, * LPMCI_DGV_FREEZE_PARMS;
+
+/* parameter block for MCI_INFO command message */
+
+typedef struct  {
+    DWORD_PTR dwCallback;
+    LPSTR   lpstrReturn;
+    DWORD   dwRetSize;
+    DWORD   dwItem;
+} MCI_DGV_INFO_PARMSA, * LPMCI_DGV_INFO_PARMSA;
+
+typedef struct  {
+    DWORD_PTR dwCallback;
+    LPWSTR  lpstrReturn;
+    DWORD   dwRetSize;
+    DWORD   dwItem;
+} MCI_DGV_INFO_PARMSW, *LPMCI_DGV_INFO_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_DGV_INFO_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_DGV_INFO_PARMS)
+
+/* parameter block for MCI_LIST command message */
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    LPSTR   lpstrReturn;
+    DWORD   dwLength;
+    DWORD   dwNumber;
+    DWORD   dwItem;
+    LPSTR   lpstrAlgorithm;
+} MCI_DGV_LIST_PARMSA, *LPMCI_DGV_LIST_PARMSA;
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    LPWSTR  lpstrReturn;
+    DWORD   dwLength;
+    DWORD   dwNumber;
+    DWORD   dwItem;
+    LPWSTR  lpstrAlgorithm;
+} MCI_DGV_LIST_PARMSW, *LPMCI_DGV_LIST_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_DGV_LIST_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_DGV_LIST_PARMS)
+
+/* parameter block for MCI_LOAD command message */
+
+typedef MCI_LOAD_PARMSA MCI_DGV_LOAD_PARMSA, * LPMCI_DGV_LOAD_PARMSA;
+typedef MCI_LOAD_PARMSW MCI_DGV_LOAD_PARMSW, * LPMCI_DGV_LOAD_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_DGV_LOAD_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_DGV_LOAD_PARMS)
+
+/* parameter block for MCI_MONITOR command message */
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    DWORD   dwSource;
+    DWORD   dwMethod;
+} MCI_DGV_MONITOR_PARMS, * LPMCI_DGV_MONITOR_PARMS;
+
+/* parameter block for MCI_OPEN command message */
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    UINT    wDeviceID;
+    LPSTR   lpstrDeviceType;
+    LPSTR   lpstrElementName;
+    LPSTR   lpstrAlias;
+    DWORD   dwStyle;
+    HWND  hWndParent;
+} MCI_DGV_OPEN_PARMSA, *LPMCI_DGV_OPEN_PARMSA;
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    UINT    wDeviceID;
+    LPWSTR  lpstrDeviceType;
+    LPWSTR  lpstrElementName;
+    LPWSTR  lpstrAlias;
+    DWORD   dwStyle;
+    HWND  hWndParent;
+} MCI_DGV_OPEN_PARMSW, *LPMCI_DGV_OPEN_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_DGV_OPEN_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_DGV_OPEN_PARMS)
+
+/* parameter block for MCI_PAUSE command message */
+
+typedef MCI_GENERIC_PARMS MCI_DGV_PAUSE_PARMS, * LPMCI_DGV_PAUSE_PARMS;
+
+/* parameter block for MCI_PASTE command message */
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    DWORD   dwTo;
+    RECT    rc;
+    DWORD   dwAudioStream;
+    DWORD   dwVideoStream;
+} MCI_DGV_PASTE_PARMS, * LPMCI_DGV_PASTE_PARMS;
+
+/* parameter block for MCI_PLAY command message */
+
+typedef MCI_PLAY_PARMS MCI_DGV_PLAY_PARMS, * LPMCI_DGV_PLAY_PARMS;
+
+/* parameter block for MCI_PUT command message */
+
+typedef MCI_DGV_RECT_PARMS MCI_DGV_PUT_PARMS, * LPMCI_DGV_PUT_PARMS;
+
+/* parameter block for MCI_QUALITY command message */
+
+typedef struct {
+    DWORD_PTR   dwCallback;
+    DWORD       dwItem;
+    LPSTR       lpstrName;
+    DWORD       lpstrAlgorithm;
+    DWORD       dwHandle;
+} MCI_DGV_QUALITY_PARMSA, *LPMCI_DGV_QUALITY_PARMSA;
+
+typedef struct {
+    DWORD_PTR   dwCallback;
+    DWORD       dwItem;
+    LPWSTR      lpstrName;
+    DWORD       lpstrAlgorithm;
+    DWORD       dwHandle;
+} MCI_DGV_QUALITY_PARMSW, *LPMCI_DGV_QUALITY_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_DGV_QUALITY_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_DGV_QUALITY_PARMS)
+
+/* parameter block for MCI_REALIZE command message */
+
+typedef MCI_GENERIC_PARMS MCI_REALIZE_PARMS, * LPMCI_REALIZE_PARMS;
+
+/* parameter block for MCI_RECORD command message */
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    DWORD   dwFrom;
+    DWORD   dwTo;
+    RECT    rc;
+    DWORD   dwAudioStream;
+    DWORD   dwVideoStream;
+} MCI_DGV_RECORD_PARMS, * LPMCI_DGV_RECORD_PARMS;
+
+/* parameter block for MCI_RESERVE command message */
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    LPSTR   lpstrPath;
+    DWORD   dwSize;
+} MCI_DGV_RESERVE_PARMSA, *LPMCI_DGV_RESERVE_PARMSA;
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    LPWSTR  lpstrPath;
+    DWORD   dwSize;
+} MCI_DGV_RESERVE_PARMSW, *LPMCI_DGV_RESERVE_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_DGV_RESERVE_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_DGV_RESERVE_PARMS)
+
+/* parameter block for MCI_RESTORE command message */
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    LPSTR   lpstrFileName;
+    RECT    rc;
+} MCI_DGV_RESTORE_PARMSA, *LPMCI_DGV_RESTORE_PARMSA;
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    LPWSTR  lpstrFileName;
+    RECT    rc;
+} MCI_DGV_RESTORE_PARMSW, *LPMCI_DGV_RESTORE_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_DGV_RESTORE_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_DGV_RESTORE_PARMS)
+
+/* parameter block for MCI_RESUME command message */
+
+typedef MCI_GENERIC_PARMS MCI_DGV_RESUME_PARMS, * LPMCI_DGV_RESUME_PARMS;
+
+/* parameter block for MCI_SAVE command message */
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    LPSTR   lpstrFileName;
+    RECT    rc;
+} MCI_DGV_SAVE_PARMSA, *LPMCI_DGV_SAVE_PARMSA;
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    LPWSTR  lpstrFileName;
+    RECT    rc;
+} MCI_DGV_SAVE_PARMSW, *LPMCI_DGV_SAVE_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_DGV_SAVE_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_DGV_SAVE_PARMS)
+
+/* parameter block for MCI_SET command message */
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    DWORD   dwTimeFormat;
+    DWORD   dwAudio;
+    DWORD   dwFileFormat;
+    DWORD   dwSpeed;
+} MCI_DGV_SET_PARMS, *LPMCI_DGV_SET_PARMS;
+
+/* parameter block for MCI_SETAUDIO command message */
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    DWORD   dwItem;
+    DWORD   dwValue;
+    DWORD   dwOver;
+    LPSTR   lpstrAlgorithm;
+    LPSTR   lpstrQuality;
+} MCI_DGV_SETAUDIO_PARMSA, *LPMCI_DGV_SETAUDIO_PARMSA;
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    DWORD   dwItem;
+    DWORD   dwValue;
+    DWORD   dwOver;
+    LPWSTR  lpstrAlgorithm;
+    LPWSTR  lpstrQuality;
+} MCI_DGV_SETAUDIO_PARMSW, *LPMCI_DGV_SETAUDIO_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_DGV_SETAUDIO_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_DGV_SETAUDIO_PARMS)
+
+/* parameter block for MCI_SIGNAL command message */
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    DWORD   dwPosition;
+    DWORD   dwPeriod;
+    DWORD   dwUserParm;
+} MCI_DGV_SIGNAL_PARMS, * LPMCI_DGV_SIGNAL_PARMS;
+
+/* parameter block for MCI_SETVIDEO command message */
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    DWORD   dwItem;
+    DWORD   dwValue;
+    DWORD   dwOver;
+    LPSTR   lpstrAlgorithm;
+    LPSTR   lpstrQuality;
+    DWORD   dwSourceNumber;
+} MCI_DGV_SETVIDEO_PARMSA, *LPMCI_DGV_SETVIDEO_PARMSA;
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    DWORD   dwItem;
+    DWORD   dwValue;
+    DWORD   dwOver;
+    LPWSTR  lpstrAlgorithm;
+    LPWSTR  lpstrQuality;
+    DWORD   dwSourceNumber;
+} MCI_DGV_SETVIDEO_PARMSW, *LPMCI_DGV_SETVIDEO_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_DGV_SETVIDEO_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_DGV_SETVIDEO_PARMS)
+
+/* parameter block for MCI_STATUS command message */
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    DWORD_PTR dwReturn;
+    DWORD   dwItem;
+    DWORD   dwTrack;
+    LPSTR   lpstrDrive;
+    DWORD   dwReference;
+} MCI_DGV_STATUS_PARMSA, *LPMCI_DGV_STATUS_PARMSA;
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    DWORD_PTR dwReturn;
+    DWORD   dwItem;
+    DWORD   dwTrack;
+    LPWSTR  lpstrDrive;
+    DWORD   dwReference;
+} MCI_DGV_STATUS_PARMSW, *LPMCI_DGV_STATUS_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_DGV_STATUS_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_DGV_STATUS_PARMS)
+
+/* parameter block for MCI_STEP command message */
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    DWORD   dwFrames;
+} MCI_DGV_STEP_PARMS, *LPMCI_DGV_STEP_PARMS;
+
+/* parameter block for MCI_STOP command message */
+
+typedef MCI_GENERIC_PARMS MCI_DGV_STOP_PARMS, * LPMCI_DGV_STOP_PARMS;
+
+/* parameter block for MCI_UNFREEZE command message */
+
+typedef MCI_DGV_RECT_PARMS MCI_DGV_UNFREEZE_PARMS, * LPMCI_DGV_UNFREEZE_PARMS;
+
+/* parameter block for MCI_UPDATE command message */
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    RECT    rc;
+    HDC     hDC;
+} MCI_DGV_UPDATE_PARMS, * LPMCI_DGV_UPDATE_PARMS;
+
+/* parameter block for MCI_WHERE command message */
+
+typedef MCI_DGV_RECT_PARMS MCI_DGV_WHERE_PARMS, * LPMCI_DGV_WHERE_PARMS;
+
+/* parameter block for MCI_WINDOW command message */
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    HWND    hWnd;
+    UINT    nCmdShow;
+    LPSTR   lpstrText;
+} MCI_DGV_WINDOW_PARMSA, *LPMCI_DGV_WINDOW_PARMSA;
+
+typedef struct {
+    DWORD_PTR dwCallback;
+    HWND    hWnd;
+    UINT    nCmdShow;
+    LPWSTR  lpstrText;
+} MCI_DGV_WINDOW_PARMSW, *LPMCI_DGV_WINDOW_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_DGV_WINDOW_PARMS)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_DIGITALV_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dimm.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dimm.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dimm.idl	(revision 16410)
@@ -0,0 +1,592 @@
+/*
+ * Copyright 2007 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef DO_NO_IMPORTS
+import "unknwn.idl";
+#endif
+
+cpp_quote("#include <imm.h>")
+
+cpp_quote("#if 0")
+
+typedef WORD LANGID;
+
+typedef struct {
+    LPSTR lpReading;
+    LPSTR lpWord;
+} REGISTERWORDA;
+
+typedef struct {
+    LPWSTR lpReading;
+    LPWSTR lpWord;
+} REGISTERWORDW;
+
+#define LF_FACESIZE         32
+
+typedef struct {
+    LONG lfHeight;
+    LONG lfWidth;
+    LONG lfEscapement;
+    LONG lfOrientation;
+    LONG lfWeight;
+    BYTE lfItalic;
+    BYTE lfUnderline;
+    BYTE lfStrikeOut;
+    BYTE lfCharSet;
+    BYTE lfOutPrecision;
+    BYTE lfClipPrecision;
+    BYTE lfQuality;
+    BYTE lfPitchAndFamily;
+    CHAR lfFaceName[LF_FACESIZE];
+} LOGFONTA;
+
+typedef struct {
+    LONG  lfHeight;
+    LONG  lfWidth;
+    LONG  lfEscapement;
+    LONG  lfOrientation;
+    LONG  lfWeight;
+    BYTE  lfItalic;
+    BYTE  lfUnderline;
+    BYTE  lfStrikeOut;
+    BYTE  lfCharSet;
+    BYTE  lfOutPrecision;
+    BYTE  lfClipPrecision;
+    BYTE  lfQuality;
+    BYTE  lfPitchAndFamily;
+    WCHAR lfFaceName[LF_FACESIZE];
+} LOGFONTW;
+
+typedef DWORD HIMC;
+typedef DWORD HIMCC;
+
+typedef struct {
+    DWORD dwIndex;
+    DWORD dwStyle;
+    POINT ptCurrentPos;
+    RECT  rcArea;
+} CANDIDATEFORM;
+
+typedef struct {
+    DWORD dwStyle;
+    POINT ptCurrentPos;
+    RECT  rcArea;
+} COMPOSITIONFORM;
+
+typedef struct {
+    DWORD dwSize;
+    DWORD dwStyle;
+    DWORD dwCount;
+    DWORD dwSelection;
+    DWORD dwPageStart;
+    DWORD dwPageSize;
+    DWORD dwOffset[1];
+} CANDIDATELIST;
+
+#define STYLE_DESCRIPTION_SIZE  32
+
+typedef struct {
+    DWORD dwStyle;
+    CHAR  szDescription[STYLE_DESCRIPTION_SIZE];
+} STYLEBUFA;
+
+typedef struct {
+    DWORD dwStyle;
+    WCHAR szDescription[STYLE_DESCRIPTION_SIZE];
+} STYLEBUFW;
+
+typedef WORD ATOM;
+
+#define IMEMENUITEM_STRING_SIZE 80
+
+typedef struct {
+    UINT    cbSize;
+    UINT    fType;
+    UINT    fState;
+    UINT    wID;
+    HBITMAP hbmpChecked;
+    HBITMAP hbmpUnchecked;
+    DWORD   dwItemData;
+    CHAR    szString[IMEMENUITEM_STRING_SIZE];
+    HBITMAP hbmpItem;
+} IMEMENUITEMINFOA;
+
+typedef struct {
+    UINT    cbSize;
+    UINT    fType;
+    UINT    fState;
+    UINT    wID;
+    HBITMAP hbmpChecked;
+    HBITMAP hbmpUnchecked;
+    DWORD   dwItemData;
+    WCHAR   szString[IMEMENUITEM_STRING_SIZE];
+    HBITMAP hbmpItem;
+} IMEMENUITEMINFOW;
+
+cpp_quote("#endif")
+
+[
+    object,
+    uuid(08c03412-f96b-11d0-a475-00aa006bcc59),
+    pointer_default(unique)
+]
+interface IEnumRegisterWordA : IUnknown
+{
+    HRESULT Clone(
+            [out] IEnumRegisterWordA **ppEnum);
+
+    HRESULT Next(
+            [in]  ULONG ulCount,
+            [out] REGISTERWORDA *rgRegisterword,
+            [out] ULONG *pcFetched);
+
+    HRESULT Reset();
+
+    HRESULT Skip(
+            [in]  ULONG ulCount);
+}
+
+[
+    object,
+    uuid(4955dd31-b159-11d0-8fcf-00aa006bcc59),
+    pointer_default(unique)
+]
+interface IEnumRegisterWordW : IUnknown
+{
+    HRESULT Clone(
+            [out] IEnumRegisterWordW **ppEnum);
+
+    HRESULT Next(
+            [in]  ULONG ulCount,
+            [out] REGISTERWORDW *rgRegisterword,
+            [out] ULONG *pcFetched);
+
+    HRESULT Reset();
+
+    HRESULT Skip(
+            [in]  ULONG ulCount);
+}
+
+[
+    object,
+    uuid(09b5eab0-f997-11d1-93d4-0060b067b86e),
+    pointer_default(unique),
+    local
+]
+interface IEnumInputContext : IUnknown
+{
+    HRESULT Clone(
+            [out] IEnumInputContext **ppEnum);
+
+    HRESULT Next(
+            [in]  ULONG ulCount,
+            [out] HIMC *rgInputContext,
+            [out] ULONG *pcFetched);
+
+    HRESULT Reset();
+
+    HRESULT Skip(
+            [in]  ULONG ulCount);
+}
+
+[
+    object,
+    uuid(08c0e040-62d1-11d1-9326-0060b067b86e),
+    pointer_default(unique),
+    local
+]
+interface IActiveIMMApp : IUnknown
+{
+    HRESULT AssociateContext(
+            [in]  HWND hWnd,
+            [in]  HIMC hIME,
+            [out] HIMC *phPrev);
+
+    HRESULT ConfigureIMEA(
+            [in]  HKL hKL,
+            [in]  HWND hwnd,
+            [in]  DWORD dwMode,
+            [in]  REGISTERWORDA *pData);
+
+    HRESULT ConfigureIMEW(
+            [in]  HKL hKL,
+            [in]  HWND hWnd,
+            [in]  DWORD dwMode,
+            [in]  REGISTERWORDW *pData);
+
+    HRESULT CreateContext(
+            [out] HIMC *phIMC);
+
+    HRESULT DestroyContext(
+            [in]  HIMC hIME);
+
+    HRESULT EnumRegisterWordA(
+            [in]  HKL hKL,
+            [in]  LPSTR szReading,
+            [in]  DWORD dwStyle,
+            [in]  LPSTR szRegister,
+            [in]  LPVOID pData,
+            [out] IEnumRegisterWordA **pEnum);
+
+    HRESULT EnumRegisterWordW(
+            [in]  HKL hKL,
+            [in]  LPWSTR szReading,
+            [in]  DWORD dwStyle,
+            [in]  LPWSTR szRegister,
+            [in]  LPVOID pData,
+            [out] IEnumRegisterWordW **pEnum);
+
+    HRESULT EscapeA(
+            [in]  HKL hKL,
+            [in]  HIMC hIMC,
+            [in]  UINT uEscape,
+            [in, out] LPVOID pData,
+            [out] LRESULT *plResult);
+
+    HRESULT EscapeW(
+            [in]  HKL hKL,
+            [in]  HIMC hIMC,
+            [in]  UINT uEscape,
+            [in, out] LPVOID pData,
+            [out] LRESULT *plResult);
+
+    HRESULT GetCandidateListA(
+            [in]  HIMC hIMC,
+            [in]  DWORD dwIndex,
+            [in]  UINT uBufLen,
+            [out] CANDIDATELIST *pCandList,
+            [out] UINT *puCopied);
+
+    HRESULT GetCandidateListW(
+            [in]  HIMC hIMC,
+            [in]  DWORD dwIndex,
+            [in]  UINT uBufLen,
+            [out] CANDIDATELIST *pCandList,
+            [out] UINT *puCopied);
+
+    HRESULT GetCandidateListCountA(
+            [in]  HIMC hIMC,
+            [out] DWORD *pdwListSize,
+            [out] DWORD *pdwBufLen);
+
+    HRESULT GetCandidateListCountW(
+            [in]  HIMC hIMC,
+            [out] DWORD *pdwListSize,
+            [out] DWORD *pdwBufLen);
+
+    HRESULT GetCandidateWindow(
+            [in]  HIMC hIMC,
+            [in]  DWORD dwIndex,
+            [out] CANDIDATEFORM *pCandidate);
+
+    HRESULT GetCompositionFontA(
+            [in]  HIMC hIMC,
+            [out] LOGFONTA *plf);
+
+    HRESULT GetCompositionFontW(
+            [in]  HIMC hIMC,
+            [out] LOGFONTW *plf);
+
+    HRESULT GetCompositionStringA(
+            [in]  HIMC hIMC,
+            [in]  DWORD dwIndex,
+            [in]  DWORD dwBufLen,
+            [out] LONG *plCopied,
+            [out] LPVOID pBuf);
+
+    HRESULT GetCompositionStringW(
+            [in]  HIMC hIMC,
+            [in]  DWORD dwIndex,
+            [in]  DWORD dwBufLen,
+            [out] LONG *plCopied,
+            [out] LPVOID pBuf);
+
+    HRESULT GetCompositionWindow(
+            [in]  HIMC hIMC,
+            [out] COMPOSITIONFORM *pCompForm);
+
+    HRESULT GetContext(
+            [in]  HWND hwnd,
+            [out] HIMC *phIMC);
+
+    HRESULT GetConversionListA(
+            [in]  HKL hKL,
+            [in]  HIMC hIMC,
+            [in]  LPSTR pSrc,
+            [in]  UINT uBufLen,
+            [in]  UINT uFlag,
+            [out] CANDIDATELIST *pDst,
+            [out] UINT *puCopied);
+
+    HRESULT GetConversionListW(
+            [in]  HKL hKL,
+            [in]  HIMC hIMC,
+            [in]  LPWSTR pSrc,
+            [in]  UINT uBufLen,
+            [in]  UINT uFlag,
+            [out] CANDIDATELIST *pDst,
+            [out] UINT *puCopied);
+
+    HRESULT GetConversionStatus(
+            [in] HIMC hIMC,
+            [out] DWORD *pfdwConversion,
+            [out] DWORD *pfdwSentence);
+
+    HRESULT GetDefaultIMEWnd(
+            [in] HWND hWnd,
+            [out] HWND *phDefWnd);
+
+    HRESULT GetDescriptionA(
+            [in]  HKL hKL,
+            [in]  UINT uBufLen,
+            [out] LPSTR szDescription,
+            [out] UINT *puCopied);
+
+    HRESULT GetDescriptionW(
+            [in]  HKL hKL,
+            [in]  UINT uBufLen,
+            [out] LPWSTR szDescription,
+            [out] UINT *puCopied);
+
+    HRESULT GetGuideLineA(
+            [in]  HIMC hIMC,
+            [in]  DWORD dwIndex,
+            [in]  DWORD dwBufLen,
+            [out] LPSTR pBuf,
+            [out] DWORD *pdwResult);
+
+    HRESULT GetGuideLineW(
+            [in]  HIMC hIMC,
+            [in]  DWORD dwIndex,
+            [in]  DWORD dwBufLen,
+            [out] LPWSTR pBuf,
+            [out] DWORD *pdwResult);
+
+    HRESULT GetIMEFileNameA(
+            [in]  HKL hKL,
+            [in]  UINT uBufLen,
+            [out] LPSTR szFileName,
+            [out] UINT *puCopied);
+
+    HRESULT GetIMEFileNameW(
+            [in]  HKL hKL,
+            [in]  UINT uBufLen,
+            [out] LPWSTR szFileName,
+            [out] UINT *puCopied);
+
+    HRESULT GetOpenStatus(
+            [in]  HIMC hIMC);
+
+    HRESULT GetProperty(
+            [in]  HKL hKL,
+            [in]  DWORD fdwIndex,
+            [out] DWORD *pdwProperty);
+
+    HRESULT GetRegisterWordStyleA(
+            [in]  HKL hKL,
+            [in]  UINT nItem,
+            [out] STYLEBUFA *pStyleBuf,
+            [out] UINT *puCopied);
+
+    HRESULT GetRegisterWordStyleW(
+            [in]  HKL hKL,
+            [in]  UINT nItem,
+            [out] STYLEBUFW *pStyleBuf,
+            [out] UINT *puCopied);
+
+    HRESULT GetStatusWindowPos(
+            [in]  HIMC hIMC,
+            [out] POINT *pptPos);
+
+    HRESULT GetVirtualKey(
+            [in]  HWND hWnd,
+            [out] UINT *puVirtualKey);
+
+    HRESULT InstallIMEA(
+            [in]  LPSTR szIMEFileName,
+            [in]  LPSTR szLayoutText,
+            [out] HKL *phKL);
+
+    HRESULT InstallIMEW(
+            [in]  LPWSTR szIMEFileName,
+            [in]  LPWSTR szLayoutText,
+            [out] HKL *phKL);
+
+    HRESULT IsIME(
+            [in]  HKL hKL);
+
+    HRESULT IsUIMessageA(
+            [in]  HWND hWndIME,
+            [in]  UINT msg,
+            [in]  WPARAM wParam,
+            [in]  LPARAM lParam);
+
+    HRESULT IsUIMessageW(
+            [in]  HWND hWndIME,
+            [in]  UINT msg,
+            [in]  WPARAM wParam,
+            [in]  LPARAM lParam);
+
+    HRESULT NotifyIME(
+            [in]  HIMC hIMC,
+            [in]  DWORD dwAction,
+            [in]  DWORD dwIndex,
+            [in]  DWORD dwValue);
+
+    HRESULT RegisterWordA(
+            [in]  HKL hKL,
+            [in]  LPSTR szReading,
+            [in]  DWORD dwStyle,
+            [in]  LPSTR szRegister);
+
+    HRESULT RegisterWordW(
+            [in]  HKL hKL,
+            [in]  LPWSTR szReading,
+            [in]  DWORD dwStyle,
+            [in]  LPWSTR szRegister);
+
+    HRESULT ReleaseContext(
+            [in]  HWND hWnd,
+            [in]  HIMC hIMC);
+
+    HRESULT SetCandidateWindow(
+            [in]  HIMC hIMC,
+            [in]  CANDIDATEFORM *pCandidate);
+
+    HRESULT SetCompositionFontA(
+            [in]  HIMC hIMC,
+            [in]  LOGFONTA *plf);
+
+    HRESULT SetCompositionFontW(
+            [in]  HIMC hIMC,
+            [in]  LOGFONTW *plf);
+
+    HRESULT SetCompositionStringA(
+            [in]  HIMC hIMC,
+            [in]  DWORD dwIndex,
+            [in]  LPVOID pComp,
+            [in]  DWORD dwCompLen,
+            [in]  LPVOID pRead,
+            [in]  DWORD dwReadLen);
+
+    HRESULT SetCompositionStringW(
+            [in]  HIMC hIMC,
+            [in]  DWORD dwIndex,
+            [in]  LPVOID pComp,
+            [in]  DWORD dwCompLen,
+            [in]  LPVOID pRead,
+            [in]  DWORD dwReadLen);
+
+    HRESULT SetCompositionWindow(
+            [in]  HIMC hIMC,
+            [in]  COMPOSITIONFORM *pCompForm);
+
+    HRESULT SetConversionStatus(
+            [in]  HIMC hIMC,
+            [in]  DWORD fdwConversion,
+            [in]  DWORD fdwSentence);
+
+    HRESULT SetOpenStatus(
+            [in]  HIMC hIMC,
+            [in]  BOOL fOpen);
+
+    HRESULT SetStatusWindowPos(
+            [in]  HIMC hIMC,
+            [in]  POINT *pptPos);
+
+    HRESULT SimulateHotKey(
+            [in]  HWND hwnd,
+            [in]  DWORD dwHotKeyID);
+
+    HRESULT UnregisterWordA(
+            [in]  HKL hKL,
+            [in]  LPSTR szReading,
+            [in]  DWORD dwStyle,
+            [in]  LPSTR szUnregister);
+
+    HRESULT UnregisterWordW(
+            [in]  HKL hKL,
+            [in]  LPWSTR szReading,
+            [in]  DWORD dwStyle,
+            [in]  LPWSTR szUnregister);
+
+    HRESULT Activate(
+            [in]  BOOL fRestoreLayout);
+
+    HRESULT Deactivate();
+
+    HRESULT OnDefWindowProc(
+            [in]  HWND hWnd,
+            [in]  UINT Msg,
+            [in]  WPARAM wParam,
+            [in]  LPARAM lParam,
+            [out] LRESULT *plResult);
+
+    HRESULT FilterClientWindows(
+            [in]  ATOM *aaClassList,
+            [in]  UINT uSize);
+
+    HRESULT GetCodePageA(
+            [in]  HKL hKL,
+            [out] UINT *uCodePage);
+
+    HRESULT GetLangId(
+            [in]  HKL hKL,
+            [out] LANGID *plid);
+
+    HRESULT AssociateContextEx(
+            [in]  HWND hWnd,
+            [in]  HIMC hIMC,
+            [in]  DWORD dwFlags);
+
+    HRESULT DisableIME(
+            [in]  DWORD idThread);
+
+    HRESULT GetImeMenuItemsA(
+            [in]  HIMC hIMC,
+            [in]  DWORD dwFlags,
+            [in]  DWORD dwType,
+            [in]  IMEMENUITEMINFOA *pImeParentMenu,
+            [out] IMEMENUITEMINFOA *pImeMenu,
+            [in]  DWORD dwSize,
+            [out] DWORD *pdwResult);
+
+    HRESULT GetImeMenuItemsW(
+            [in]  HIMC hIMC,
+            [in]  DWORD dwFlags,
+            [in]  DWORD dwType,
+            [in]  IMEMENUITEMINFOW *pImeParentMenu,
+            [out] IMEMENUITEMINFOW *pImeMenu,
+            [in]  DWORD dwSize,
+            [out] DWORD *pdwResult);
+
+    HRESULT EnumInputContext(
+            [in]  DWORD idThread,
+            [out] IEnumInputContext **ppEnum);
+}
+
+[
+    uuid(4955dd33-b159-11d0-8fcf-00aa006bcc59)
+]
+coclass CActiveIMM
+{
+    [default] interface IActiveIMMApp;
+    /* interface IActiveIMMIME; */
+    /* interface IActiveIMMRegistrar; */
+    /* interface IActiveIMMMessagePumpOwner; */
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dinput.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dinput.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dinput.h	(revision 16410)
@@ -0,0 +1,2298 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DINPUT_H
+#define __WINE_DINPUT_H
+
+#define COM_NO_WINDOWS_H
+#include <objbase.h>
+
+#ifndef DIRECTINPUT_VERSION
+#define DIRECTINPUT_VERSION	0x0800
+#endif
+
+/* Classes */
+DEFINE_GUID(CLSID_DirectInput,		0x25E609E0,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(CLSID_DirectInputDevice,	0x25E609E1,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+
+DEFINE_GUID(CLSID_DirectInput8,		0x25E609E4,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(CLSID_DirectInputDevice8,	0x25E609E5,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+
+/* Interfaces */
+DEFINE_GUID(IID_IDirectInputA,		0x89521360,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(IID_IDirectInputW,		0x89521361,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(IID_IDirectInput2A,		0x5944E662,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(IID_IDirectInput2W,		0x5944E663,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(IID_IDirectInput7A,		0x9A4CB684,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE);
+DEFINE_GUID(IID_IDirectInput7W,		0x9A4CB685,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE);
+DEFINE_GUID(IID_IDirectInput8A,		0xBF798030,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00);
+DEFINE_GUID(IID_IDirectInput8W,		0xBF798031,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00);
+DEFINE_GUID(IID_IDirectInputDeviceA,	0x5944E680,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(IID_IDirectInputDeviceW,	0x5944E681,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(IID_IDirectInputDevice2A,	0x5944E682,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(IID_IDirectInputDevice2W,	0x5944E683,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(IID_IDirectInputDevice7A,	0x57D7C6BC,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE);
+DEFINE_GUID(IID_IDirectInputDevice7W,	0x57D7C6BD,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE);
+DEFINE_GUID(IID_IDirectInputDevice8A,	0x54D41080,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79);
+DEFINE_GUID(IID_IDirectInputDevice8W,	0x54D41081,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79);
+DEFINE_GUID(IID_IDirectInputEffect,	0xE7E1F7C0,0x88D2,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
+
+/* Predefined object types */
+DEFINE_GUID(GUID_XAxis,	0xA36D02E0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_YAxis,	0xA36D02E1,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_ZAxis,	0xA36D02E2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_RxAxis,0xA36D02F4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_RyAxis,0xA36D02F5,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_RzAxis,0xA36D02E3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_Slider,0xA36D02E4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_Button,0xA36D02F0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_Key,	0x55728220,0xD33C,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_POV,	0xA36D02F2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_Unknown,0xA36D02F3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+
+/* Predefined product GUIDs */
+DEFINE_GUID(GUID_SysMouse,	0x6F1D2B60,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_SysKeyboard,	0x6F1D2B61,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_Joystick,	0x6F1D2B70,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_SysMouseEm,	0x6F1D2B80,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_SysMouseEm2,	0x6F1D2B81,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_SysKeyboardEm,	0x6F1D2B82,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_SysKeyboardEm2,0x6F1D2B83,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+
+/* predefined forcefeedback effects */
+DEFINE_GUID(GUID_ConstantForce,	0x13541C20,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
+DEFINE_GUID(GUID_RampForce,	0x13541C21,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
+DEFINE_GUID(GUID_Square,	0x13541C22,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
+DEFINE_GUID(GUID_Sine,		0x13541C23,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
+DEFINE_GUID(GUID_Triangle,	0x13541C24,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
+DEFINE_GUID(GUID_SawtoothUp,	0x13541C25,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
+DEFINE_GUID(GUID_SawtoothDown,	0x13541C26,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
+DEFINE_GUID(GUID_Spring,	0x13541C27,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
+DEFINE_GUID(GUID_Damper,	0x13541C28,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
+DEFINE_GUID(GUID_Inertia,	0x13541C29,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
+DEFINE_GUID(GUID_Friction,	0x13541C2A,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
+DEFINE_GUID(GUID_CustomForce,	0x13541C2B,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
+
+typedef struct IDirectInputA *LPDIRECTINPUTA;
+typedef struct IDirectInputW *LPDIRECTINPUTW;
+typedef struct IDirectInput2A *LPDIRECTINPUT2A;
+typedef struct IDirectInput2W *LPDIRECTINPUT2W;
+typedef struct IDirectInput7A *LPDIRECTINPUT7A;
+typedef struct IDirectInput7W *LPDIRECTINPUT7W;
+typedef struct IDirectInput8A *LPDIRECTINPUT8A;
+typedef struct IDirectInput8W *LPDIRECTINPUT8W;
+typedef struct IDirectInputDeviceA *LPDIRECTINPUTDEVICEA;
+typedef struct IDirectInputDeviceW *LPDIRECTINPUTDEVICEW;
+typedef struct IDirectInputDevice2A *LPDIRECTINPUTDEVICE2A;
+typedef struct IDirectInputDevice2W *LPDIRECTINPUTDEVICE2W;
+typedef struct IDirectInputDevice7A *LPDIRECTINPUTDEVICE7A;
+typedef struct IDirectInputDevice7W *LPDIRECTINPUTDEVICE7W;
+typedef struct IDirectInputDevice8A *LPDIRECTINPUTDEVICE8A;
+typedef struct IDirectInputDevice8W *LPDIRECTINPUTDEVICE8W;
+typedef struct IDirectInputEffect *LPDIRECTINPUTEFFECT;
+typedef struct SysKeyboardA *LPSYSKEYBOARDA;
+typedef struct SysMouseA *LPSYSMOUSEA;
+
+#define IID_IDirectInput WINELIB_NAME_AW(IID_IDirectInput)
+DECL_WINELIB_TYPE_AW(LPDIRECTINPUT)
+#define IID_IDirectInput2 WINELIB_NAME_AW(IID_IDirectInput2)
+DECL_WINELIB_TYPE_AW(LPDIRECTINPUT2)
+#define IID_IDirectInput7 WINELIB_NAME_AW(IID_IDirectInput7)
+DECL_WINELIB_TYPE_AW(LPDIRECTINPUT7)
+#define IID_IDirectInput8 WINELIB_NAME_AW(IID_IDirectInput8)
+DECL_WINELIB_TYPE_AW(LPDIRECTINPUT8)
+#define IID_IDirectInputDevice WINELIB_NAME_AW(IID_IDirectInputDevice)
+DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE)
+#define IID_IDirectInputDevice2 WINELIB_NAME_AW(IID_IDirectInputDevice2)
+DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE2)
+#define IID_IDirectInputDevice7 WINELIB_NAME_AW(IID_IDirectInputDevice7)
+DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE7)
+#define IID_IDirectInputDevice8 WINELIB_NAME_AW(IID_IDirectInputDevice8)
+DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE8)
+
+#define DI_OK                           S_OK
+#define DI_NOTATTACHED                  S_FALSE
+#define DI_BUFFEROVERFLOW               S_FALSE
+#define DI_PROPNOEFFECT                 S_FALSE
+#define DI_NOEFFECT                     S_FALSE
+#define DI_POLLEDDEVICE                 ((HRESULT)0x00000002L)
+#define DI_DOWNLOADSKIPPED              ((HRESULT)0x00000003L)
+#define DI_EFFECTRESTARTED              ((HRESULT)0x00000004L)
+#define DI_TRUNCATED                    ((HRESULT)0x00000008L)
+#define DI_TRUNCATEDANDRESTARTED        ((HRESULT)0x0000000CL)
+
+#define DIERR_OLDDIRECTINPUTVERSION     \
+    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_OLD_WIN_VERSION)
+#define DIERR_BETADIRECTINPUTVERSION    \
+    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_RMODE_APP)
+#define DIERR_BADDRIVERVER              \
+    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BAD_DRIVER_LEVEL)
+#define DIERR_DEVICENOTREG              REGDB_E_CLASSNOTREG
+#define DIERR_NOTFOUND                  \
+    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND)
+#define DIERR_OBJECTNOTFOUND            \
+    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND)
+#define DIERR_INVALIDPARAM              E_INVALIDARG
+#define DIERR_NOINTERFACE               E_NOINTERFACE
+#define DIERR_GENERIC                   E_FAIL
+#define DIERR_OUTOFMEMORY               E_OUTOFMEMORY
+#define DIERR_UNSUPPORTED               E_NOTIMPL
+#define DIERR_NOTINITIALIZED            \
+    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_READY)
+#define DIERR_ALREADYINITIALIZED        \
+    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_ALREADY_INITIALIZED)
+#define DIERR_NOAGGREGATION             CLASS_E_NOAGGREGATION
+#define DIERR_OTHERAPPHASPRIO           E_ACCESSDENIED
+#define DIERR_INPUTLOST                 \
+    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_READ_FAULT)
+#define DIERR_ACQUIRED                  \
+    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BUSY)
+#define DIERR_NOTACQUIRED               \
+    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_INVALID_ACCESS)
+#define DIERR_READONLY                  E_ACCESSDENIED
+#define DIERR_HANDLEEXISTS              E_ACCESSDENIED
+#ifndef E_PENDING
+#define E_PENDING                       0x8000000AL
+#endif
+#define DIERR_INSUFFICIENTPRIVS         0x80040200L
+#define DIERR_DEVICEFULL                0x80040201L
+#define DIERR_MOREDATA                  0x80040202L
+#define DIERR_NOTDOWNLOADED             0x80040203L
+#define DIERR_HASEFFECTS                0x80040204L
+#define DIERR_NOTEXCLUSIVEACQUIRED      0x80040205L
+#define DIERR_INCOMPLETEEFFECT          0x80040206L
+#define DIERR_NOTBUFFERED               0x80040207L
+#define DIERR_EFFECTPLAYING             0x80040208L
+#define DIERR_UNPLUGGED                 0x80040209L
+#define DIERR_REPORTFULL                0x8004020AL
+#define DIERR_MAPFILEFAIL               0x8004020BL
+
+#define DIENUM_STOP                     0
+#define DIENUM_CONTINUE                 1
+
+#define DIEDFL_ALLDEVICES               0x00000000
+#define DIEDFL_ATTACHEDONLY             0x00000000
+#define DIEDFL_FORCEFEEDBACK            0x00000100
+#define DIEDFL_INCLUDEALIASES           0x00010000
+#define DIEDFL_INCLUDEPHANTOMS          0x00020000
+#define DIEDFL_INCLUDEHIDDEN		0x00040000
+
+#define DIDEVTYPE_DEVICE                1
+#define DIDEVTYPE_MOUSE                 2
+#define DIDEVTYPE_KEYBOARD              3
+#define DIDEVTYPE_JOYSTICK              4
+#define DIDEVTYPE_HID                   0x00010000
+
+#define DI8DEVCLASS_ALL             0
+#define DI8DEVCLASS_DEVICE          1
+#define DI8DEVCLASS_POINTER         2
+#define DI8DEVCLASS_KEYBOARD        3
+#define DI8DEVCLASS_GAMECTRL        4
+
+#define DI8DEVTYPE_DEVICE           0x11
+#define DI8DEVTYPE_MOUSE            0x12
+#define DI8DEVTYPE_KEYBOARD         0x13
+#define DI8DEVTYPE_JOYSTICK         0x14
+#define DI8DEVTYPE_GAMEPAD          0x15
+#define DI8DEVTYPE_DRIVING          0x16
+#define DI8DEVTYPE_FLIGHT           0x17
+#define DI8DEVTYPE_1STPERSON        0x18
+#define DI8DEVTYPE_DEVICECTRL       0x19
+#define DI8DEVTYPE_SCREENPOINTER    0x1A
+#define DI8DEVTYPE_REMOTE           0x1B
+#define DI8DEVTYPE_SUPPLEMENTAL     0x1C
+	
+#define DIDEVTYPEMOUSE_UNKNOWN          1
+#define DIDEVTYPEMOUSE_TRADITIONAL      2
+#define DIDEVTYPEMOUSE_FINGERSTICK      3
+#define DIDEVTYPEMOUSE_TOUCHPAD         4
+#define DIDEVTYPEMOUSE_TRACKBALL        5
+
+#define DIDEVTYPEKEYBOARD_UNKNOWN       0
+#define DIDEVTYPEKEYBOARD_PCXT          1
+#define DIDEVTYPEKEYBOARD_OLIVETTI      2
+#define DIDEVTYPEKEYBOARD_PCAT          3
+#define DIDEVTYPEKEYBOARD_PCENH         4
+#define DIDEVTYPEKEYBOARD_NOKIA1050     5
+#define DIDEVTYPEKEYBOARD_NOKIA9140     6
+#define DIDEVTYPEKEYBOARD_NEC98         7
+#define DIDEVTYPEKEYBOARD_NEC98LAPTOP   8
+#define DIDEVTYPEKEYBOARD_NEC98106      9
+#define DIDEVTYPEKEYBOARD_JAPAN106     10
+#define DIDEVTYPEKEYBOARD_JAPANAX      11
+#define DIDEVTYPEKEYBOARD_J3100        12
+
+#define DIDEVTYPEJOYSTICK_UNKNOWN       1
+#define DIDEVTYPEJOYSTICK_TRADITIONAL   2
+#define DIDEVTYPEJOYSTICK_FLIGHTSTICK   3
+#define DIDEVTYPEJOYSTICK_GAMEPAD       4
+#define DIDEVTYPEJOYSTICK_RUDDER        5
+#define DIDEVTYPEJOYSTICK_WHEEL         6
+#define DIDEVTYPEJOYSTICK_HEADTRACKER   7
+
+#define DI8DEVTYPEMOUSE_UNKNOWN                     1
+#define DI8DEVTYPEMOUSE_TRADITIONAL                 2
+#define DI8DEVTYPEMOUSE_FINGERSTICK                 3
+#define DI8DEVTYPEMOUSE_TOUCHPAD                    4
+#define DI8DEVTYPEMOUSE_TRACKBALL                   5
+#define DI8DEVTYPEMOUSE_ABSOLUTE                    6
+
+#define DI8DEVTYPEKEYBOARD_UNKNOWN                  0
+#define DI8DEVTYPEKEYBOARD_PCXT                     1
+#define DI8DEVTYPEKEYBOARD_OLIVETTI                 2
+#define DI8DEVTYPEKEYBOARD_PCAT                     3
+#define DI8DEVTYPEKEYBOARD_PCENH                    4
+#define DI8DEVTYPEKEYBOARD_NOKIA1050                5
+#define DI8DEVTYPEKEYBOARD_NOKIA9140                6
+#define DI8DEVTYPEKEYBOARD_NEC98                    7
+#define DI8DEVTYPEKEYBOARD_NEC98LAPTOP              8
+#define DI8DEVTYPEKEYBOARD_NEC98106                 9
+#define DI8DEVTYPEKEYBOARD_JAPAN106                10
+#define DI8DEVTYPEKEYBOARD_JAPANAX                 11
+#define DI8DEVTYPEKEYBOARD_J3100                   12
+
+#define DI8DEVTYPE_LIMITEDGAMESUBTYPE               1
+
+#define DI8DEVTYPEJOYSTICK_LIMITED                  DI8DEVTYPE_LIMITEDGAMESUBTYPE
+#define DI8DEVTYPEJOYSTICK_STANDARD                 2
+
+#define DI8DEVTYPEGAMEPAD_LIMITED                   DI8DEVTYPE_LIMITEDGAMESUBTYPE
+#define DI8DEVTYPEGAMEPAD_STANDARD                  2
+#define DI8DEVTYPEGAMEPAD_TILT                      3
+
+#define DI8DEVTYPEDRIVING_LIMITED                   DI8DEVTYPE_LIMITEDGAMESUBTYPE
+#define DI8DEVTYPEDRIVING_COMBINEDPEDALS            2
+#define DI8DEVTYPEDRIVING_DUALPEDALS                3
+#define DI8DEVTYPEDRIVING_THREEPEDALS               4
+#define DI8DEVTYPEDRIVING_HANDHELD                  5
+
+#define DI8DEVTYPEFLIGHT_LIMITED                    DI8DEVTYPE_LIMITEDGAMESUBTYPE
+#define DI8DEVTYPEFLIGHT_STICK                      2
+#define DI8DEVTYPEFLIGHT_YOKE                       3
+#define DI8DEVTYPEFLIGHT_RC                         4
+
+#define DI8DEVTYPE1STPERSON_LIMITED                 DI8DEVTYPE_LIMITEDGAMESUBTYPE
+#define DI8DEVTYPE1STPERSON_UNKNOWN                 2
+#define DI8DEVTYPE1STPERSON_SIXDOF                  3
+#define DI8DEVTYPE1STPERSON_SHOOTER                 4
+
+#define DI8DEVTYPESCREENPTR_UNKNOWN                 2
+#define DI8DEVTYPESCREENPTR_LIGHTGUN                3
+#define DI8DEVTYPESCREENPTR_LIGHTPEN                4
+#define DI8DEVTYPESCREENPTR_TOUCH                   5
+
+#define DI8DEVTYPEREMOTE_UNKNOWN                    2
+
+#define DI8DEVTYPEDEVICECTRL_UNKNOWN                2
+#define DI8DEVTYPEDEVICECTRL_COMMSSELECTION         3
+#define DI8DEVTYPEDEVICECTRL_COMMSSELECTION_HARDWIRED 4
+
+#define DI8DEVTYPESUPPLEMENTAL_UNKNOWN              2
+#define DI8DEVTYPESUPPLEMENTAL_2NDHANDCONTROLLER    3
+#define DI8DEVTYPESUPPLEMENTAL_HEADTRACKER          4
+#define DI8DEVTYPESUPPLEMENTAL_HANDTRACKER          5
+#define DI8DEVTYPESUPPLEMENTAL_SHIFTSTICKGATE       6
+#define DI8DEVTYPESUPPLEMENTAL_SHIFTER              7
+#define DI8DEVTYPESUPPLEMENTAL_THROTTLE             8
+#define DI8DEVTYPESUPPLEMENTAL_SPLITTHROTTLE        9
+#define DI8DEVTYPESUPPLEMENTAL_COMBINEDPEDALS      10
+#define DI8DEVTYPESUPPLEMENTAL_DUALPEDALS          11
+#define DI8DEVTYPESUPPLEMENTAL_THREEPEDALS         12
+#define DI8DEVTYPESUPPLEMENTAL_RUDDERPEDALS        13
+	
+#define GET_DIDEVICE_TYPE(dwDevType)     LOBYTE(dwDevType)
+#define GET_DIDEVICE_SUBTYPE(dwDevType)  HIBYTE(dwDevType)
+
+typedef struct DIDEVICEOBJECTINSTANCE_DX3A {
+    DWORD   dwSize;
+    GUID    guidType;
+    DWORD   dwOfs;
+    DWORD   dwType;
+    DWORD   dwFlags;
+    CHAR    tszName[MAX_PATH];
+} DIDEVICEOBJECTINSTANCE_DX3A, *LPDIDEVICEOBJECTINSTANCE_DX3A;
+typedef const DIDEVICEOBJECTINSTANCE_DX3A *LPCDIDEVICEOBJECTINSTANCE_DX3A;
+typedef struct DIDEVICEOBJECTINSTANCE_DX3W {
+    DWORD   dwSize;
+    GUID    guidType;
+    DWORD   dwOfs;
+    DWORD   dwType;
+    DWORD   dwFlags;
+    WCHAR   tszName[MAX_PATH];
+} DIDEVICEOBJECTINSTANCE_DX3W, *LPDIDEVICEOBJECTINSTANCE_DX3W;
+typedef const DIDEVICEOBJECTINSTANCE_DX3W *LPCDIDEVICEOBJECTINSTANCE_DX3W;
+
+DECL_WINELIB_TYPE_AW(DIDEVICEOBJECTINSTANCE_DX3)
+DECL_WINELIB_TYPE_AW(LPDIDEVICEOBJECTINSTANCE_DX3)
+DECL_WINELIB_TYPE_AW(LPCDIDEVICEOBJECTINSTANCE_DX3)
+
+typedef struct DIDEVICEOBJECTINSTANCEA {
+    DWORD	dwSize;
+    GUID	guidType;
+    DWORD	dwOfs;
+    DWORD	dwType;
+    DWORD	dwFlags;
+    CHAR	tszName[MAX_PATH];
+    DWORD	dwFFMaxForce;
+    DWORD	dwFFForceResolution;
+    WORD	wCollectionNumber;
+    WORD	wDesignatorIndex;
+    WORD	wUsagePage;
+    WORD	wUsage;
+    DWORD	dwDimension;
+    WORD	wExponent;
+    WORD	wReserved;
+} DIDEVICEOBJECTINSTANCEA, *LPDIDEVICEOBJECTINSTANCEA;
+typedef const DIDEVICEOBJECTINSTANCEA *LPCDIDEVICEOBJECTINSTANCEA;
+
+typedef struct DIDEVICEOBJECTINSTANCEW {
+    DWORD	dwSize;
+    GUID	guidType;
+    DWORD	dwOfs;
+    DWORD	dwType;
+    DWORD	dwFlags;
+    WCHAR	tszName[MAX_PATH];
+    DWORD	dwFFMaxForce;
+    DWORD	dwFFForceResolution;
+    WORD	wCollectionNumber;
+    WORD	wDesignatorIndex;
+    WORD	wUsagePage;
+    WORD	wUsage;
+    DWORD	dwDimension;
+    WORD	wExponent;
+    WORD	wReserved;
+} DIDEVICEOBJECTINSTANCEW, *LPDIDEVICEOBJECTINSTANCEW;
+typedef const DIDEVICEOBJECTINSTANCEW *LPCDIDEVICEOBJECTINSTANCEW;
+
+DECL_WINELIB_TYPE_AW(DIDEVICEOBJECTINSTANCE)
+DECL_WINELIB_TYPE_AW(LPDIDEVICEOBJECTINSTANCE)
+DECL_WINELIB_TYPE_AW(LPCDIDEVICEOBJECTINSTANCE)
+
+typedef struct DIDEVICEINSTANCE_DX3A {
+    DWORD   dwSize;
+    GUID    guidInstance;
+    GUID    guidProduct;
+    DWORD   dwDevType;
+    CHAR    tszInstanceName[MAX_PATH];
+    CHAR    tszProductName[MAX_PATH];
+} DIDEVICEINSTANCE_DX3A, *LPDIDEVICEINSTANCE_DX3A;
+typedef const DIDEVICEINSTANCE_DX3A *LPCDIDEVICEINSTANCE_DX3A;
+typedef struct DIDEVICEINSTANCE_DX3W {
+    DWORD   dwSize;
+    GUID    guidInstance;
+    GUID    guidProduct;
+    DWORD   dwDevType;
+    WCHAR   tszInstanceName[MAX_PATH];
+    WCHAR   tszProductName[MAX_PATH];
+} DIDEVICEINSTANCE_DX3W, *LPDIDEVICEINSTANCE_DX3W;
+typedef const DIDEVICEINSTANCE_DX3W *LPCDIDEVICEINSTANCE_DX3W;
+
+DECL_WINELIB_TYPE_AW(DIDEVICEINSTANCE_DX3)
+DECL_WINELIB_TYPE_AW(LPDIDEVICEINSTANCE_DX3)
+DECL_WINELIB_TYPE_AW(LPCDIDEVICEINSTANCE_DX3)
+
+typedef struct DIDEVICEINSTANCEA {
+    DWORD	dwSize;
+    GUID	guidInstance;
+    GUID	guidProduct;
+    DWORD	dwDevType;
+    CHAR	tszInstanceName[MAX_PATH];
+    CHAR	tszProductName[MAX_PATH];
+    GUID	guidFFDriver;
+    WORD	wUsagePage;
+    WORD	wUsage;
+} DIDEVICEINSTANCEA, *LPDIDEVICEINSTANCEA;
+typedef const DIDEVICEINSTANCEA *LPCDIDEVICEINSTANCEA;
+
+typedef struct DIDEVICEINSTANCEW {
+    DWORD	dwSize;
+    GUID	guidInstance;
+    GUID	guidProduct;
+    DWORD	dwDevType;
+    WCHAR	tszInstanceName[MAX_PATH];
+    WCHAR	tszProductName[MAX_PATH];
+    GUID	guidFFDriver;
+    WORD	wUsagePage;
+    WORD	wUsage;
+} DIDEVICEINSTANCEW, *LPDIDEVICEINSTANCEW;
+typedef const DIDEVICEINSTANCEW *LPCDIDEVICEINSTANCEW;
+
+DECL_WINELIB_TYPE_AW(DIDEVICEINSTANCE)
+DECL_WINELIB_TYPE_AW(LPDIDEVICEINSTANCE)
+DECL_WINELIB_TYPE_AW(LPCDIDEVICEINSTANCE)
+
+typedef BOOL (CALLBACK *LPDIENUMDEVICESCALLBACKA)(LPCDIDEVICEINSTANCEA,LPVOID);
+typedef BOOL (CALLBACK *LPDIENUMDEVICESCALLBACKW)(LPCDIDEVICEINSTANCEW,LPVOID);
+DECL_WINELIB_TYPE_AW(LPDIENUMDEVICESCALLBACK)
+
+#define DIEDBS_MAPPEDPRI1		0x00000001
+#define DIEDBS_MAPPEDPRI2		0x00000002
+#define DIEDBS_RECENTDEVICE		0x00000010
+#define DIEDBS_NEWDEVICE		0x00000020
+
+#define DIEDBSFL_ATTACHEDONLY		0x00000000
+#define DIEDBSFL_THISUSER		0x00000010
+#define DIEDBSFL_FORCEFEEDBACK		DIEDFL_FORCEFEEDBACK
+#define DIEDBSFL_AVAILABLEDEVICES	0x00001000
+#define DIEDBSFL_MULTIMICEKEYBOARDS	0x00002000
+#define DIEDBSFL_NONGAMINGDEVICES	0x00004000
+#define DIEDBSFL_VALID			0x00007110
+
+typedef BOOL (CALLBACK *LPDIENUMDEVICESBYSEMANTICSCBA)(LPCDIDEVICEINSTANCEA,LPDIRECTINPUTDEVICE8A,DWORD,DWORD,LPVOID);
+typedef BOOL (CALLBACK *LPDIENUMDEVICESBYSEMANTICSCBW)(LPCDIDEVICEINSTANCEW,LPDIRECTINPUTDEVICE8W,DWORD,DWORD,LPVOID);
+DECL_WINELIB_TYPE_AW(LPDIENUMDEVICESBYSEMANTICSCB)
+
+typedef BOOL (CALLBACK *LPDICONFIGUREDEVICESCALLBACK)(LPUNKNOWN,LPVOID);
+
+typedef BOOL (CALLBACK *LPDIENUMDEVICEOBJECTSCALLBACKA)(LPCDIDEVICEOBJECTINSTANCEA,LPVOID);
+typedef BOOL (CALLBACK *LPDIENUMDEVICEOBJECTSCALLBACKW)(LPCDIDEVICEOBJECTINSTANCEW,LPVOID);
+DECL_WINELIB_TYPE_AW(LPDIENUMDEVICEOBJECTSCALLBACK)
+
+typedef BOOL (CALLBACK *LPDIENUMCREATEDEFFECTOBJECTSCALLBACK)(LPDIRECTINPUTEFFECT, LPVOID);
+
+#define DIK_ESCAPE          0x01
+#define DIK_1               0x02
+#define DIK_2               0x03
+#define DIK_3               0x04
+#define DIK_4               0x05
+#define DIK_5               0x06
+#define DIK_6               0x07
+#define DIK_7               0x08
+#define DIK_8               0x09
+#define DIK_9               0x0A
+#define DIK_0               0x0B
+#define DIK_MINUS           0x0C    /* - on main keyboard */
+#define DIK_EQUALS          0x0D
+#define DIK_BACK            0x0E    /* backspace */
+#define DIK_TAB             0x0F
+#define DIK_Q               0x10
+#define DIK_W               0x11
+#define DIK_E               0x12
+#define DIK_R               0x13
+#define DIK_T               0x14
+#define DIK_Y               0x15
+#define DIK_U               0x16
+#define DIK_I               0x17
+#define DIK_O               0x18
+#define DIK_P               0x19
+#define DIK_LBRACKET        0x1A
+#define DIK_RBRACKET        0x1B
+#define DIK_RETURN          0x1C    /* Enter on main keyboard */
+#define DIK_LCONTROL        0x1D
+#define DIK_A               0x1E
+#define DIK_S               0x1F
+#define DIK_D               0x20
+#define DIK_F               0x21
+#define DIK_G               0x22
+#define DIK_H               0x23
+#define DIK_J               0x24
+#define DIK_K               0x25
+#define DIK_L               0x26
+#define DIK_SEMICOLON       0x27
+#define DIK_APOSTROPHE      0x28
+#define DIK_GRAVE           0x29    /* accent grave */
+#define DIK_LSHIFT          0x2A
+#define DIK_BACKSLASH       0x2B
+#define DIK_Z               0x2C
+#define DIK_X               0x2D
+#define DIK_C               0x2E
+#define DIK_V               0x2F
+#define DIK_B               0x30
+#define DIK_N               0x31
+#define DIK_M               0x32
+#define DIK_COMMA           0x33
+#define DIK_PERIOD          0x34    /* . on main keyboard */
+#define DIK_SLASH           0x35    /* / on main keyboard */
+#define DIK_RSHIFT          0x36
+#define DIK_MULTIPLY        0x37    /* * on numeric keypad */
+#define DIK_LMENU           0x38    /* left Alt */
+#define DIK_SPACE           0x39
+#define DIK_CAPITAL         0x3A
+#define DIK_F1              0x3B
+#define DIK_F2              0x3C
+#define DIK_F3              0x3D
+#define DIK_F4              0x3E
+#define DIK_F5              0x3F
+#define DIK_F6              0x40
+#define DIK_F7              0x41
+#define DIK_F8              0x42
+#define DIK_F9              0x43
+#define DIK_F10             0x44
+#define DIK_NUMLOCK         0x45
+#define DIK_SCROLL          0x46    /* Scroll Lock */
+#define DIK_NUMPAD7         0x47
+#define DIK_NUMPAD8         0x48
+#define DIK_NUMPAD9         0x49
+#define DIK_SUBTRACT        0x4A    /* - on numeric keypad */
+#define DIK_NUMPAD4         0x4B
+#define DIK_NUMPAD5         0x4C
+#define DIK_NUMPAD6         0x4D
+#define DIK_ADD             0x4E    /* + on numeric keypad */
+#define DIK_NUMPAD1         0x4F
+#define DIK_NUMPAD2         0x50
+#define DIK_NUMPAD3         0x51
+#define DIK_NUMPAD0         0x52
+#define DIK_DECIMAL         0x53    /* . on numeric keypad */
+#define DIK_F11             0x57
+#define DIK_F12             0x58
+#define DIK_F13             0x64    /*                     (NEC PC98) */
+#define DIK_F14             0x65    /*                     (NEC PC98) */
+#define DIK_F15             0x66    /*                     (NEC PC98) */
+#define DIK_KANA            0x70    /* (Japanese keyboard)            */
+#define DIK_CONVERT         0x79    /* (Japanese keyboard)            */
+#define DIK_NOCONVERT       0x7B    /* (Japanese keyboard)            */
+#define DIK_YEN             0x7D    /* (Japanese keyboard)            */
+#define DIK_NUMPADEQUALS    0x8D    /* = on numeric keypad (NEC PC98) */
+#define DIK_CIRCUMFLEX      0x90    /* (Japanese keyboard)            */
+#define DIK_AT              0x91    /*                     (NEC PC98) */
+#define DIK_COLON           0x92    /*                     (NEC PC98) */
+#define DIK_UNDERLINE       0x93    /*                     (NEC PC98) */
+#define DIK_KANJI           0x94    /* (Japanese keyboard)            */
+#define DIK_STOP            0x95    /*                     (NEC PC98) */
+#define DIK_AX              0x96    /*                     (Japan AX) */
+#define DIK_UNLABELED       0x97    /*                        (J3100) */
+#define DIK_NUMPADENTER     0x9C    /* Enter on numeric keypad */
+#define DIK_RCONTROL        0x9D
+#define DIK_NUMPADCOMMA     0xB3    /* , on numeric keypad (NEC PC98) */
+#define DIK_DIVIDE          0xB5    /* / on numeric keypad */
+#define DIK_SYSRQ           0xB7
+#define DIK_RMENU           0xB8    /* right Alt */
+#define DIK_PAUSE           0xC5    /* Pause */
+#define DIK_HOME            0xC7    /* Home on arrow keypad */
+#define DIK_UP              0xC8    /* UpArrow on arrow keypad */
+#define DIK_PRIOR           0xC9    /* PgUp on arrow keypad */
+#define DIK_LEFT            0xCB    /* LeftArrow on arrow keypad */
+#define DIK_RIGHT           0xCD    /* RightArrow on arrow keypad */
+#define DIK_END             0xCF    /* End on arrow keypad */
+#define DIK_DOWN            0xD0    /* DownArrow on arrow keypad */
+#define DIK_NEXT            0xD1    /* PgDn on arrow keypad */
+#define DIK_INSERT          0xD2    /* Insert on arrow keypad */
+#define DIK_DELETE          0xD3    /* Delete on arrow keypad */
+#define DIK_LWIN            0xDB    /* Left Windows key */
+#define DIK_RWIN            0xDC    /* Right Windows key */
+#define DIK_APPS            0xDD    /* AppMenu key */
+#define DIK_POWER           0xDE
+#define DIK_SLEEP           0xDF
+#define DIK_BACKSPACE       DIK_BACK            /* backspace */
+#define DIK_NUMPADSTAR      DIK_MULTIPLY        /* * on numeric keypad */
+#define DIK_LALT            DIK_LMENU           /* left Alt */
+#define DIK_CAPSLOCK        DIK_CAPITAL         /* CapsLock */
+#define DIK_NUMPADMINUS     DIK_SUBTRACT        /* - on numeric keypad */
+#define DIK_NUMPADPLUS      DIK_ADD             /* + on numeric keypad */
+#define DIK_NUMPADPERIOD    DIK_DECIMAL         /* . on numeric keypad */
+#define DIK_NUMPADSLASH     DIK_DIVIDE          /* / on numeric keypad */
+#define DIK_RALT            DIK_RMENU           /* right Alt */
+#define DIK_UPARROW         DIK_UP              /* UpArrow on arrow keypad */
+#define DIK_PGUP            DIK_PRIOR           /* PgUp on arrow keypad */
+#define DIK_LEFTARROW       DIK_LEFT            /* LeftArrow on arrow keypad */
+#define DIK_RIGHTARROW      DIK_RIGHT           /* RightArrow on arrow keypad */
+#define DIK_DOWNARROW       DIK_DOWN            /* DownArrow on arrow keypad */
+#define DIK_PGDN            DIK_NEXT            /* PgDn on arrow keypad */
+
+#define DIDFT_ALL		0x00000000
+#define DIDFT_RELAXIS		0x00000001
+#define DIDFT_ABSAXIS		0x00000002
+#define DIDFT_AXIS		0x00000003
+#define DIDFT_PSHBUTTON		0x00000004
+#define DIDFT_TGLBUTTON		0x00000008
+#define DIDFT_BUTTON		0x0000000C
+#define DIDFT_POV		0x00000010
+#define DIDFT_COLLECTION	0x00000040
+#define DIDFT_NODATA		0x00000080
+#define DIDFT_ANYINSTANCE	0x00FFFF00
+#define DIDFT_INSTANCEMASK	DIDFT_ANYINSTANCE
+#define DIDFT_MAKEINSTANCE(n)	((WORD)(n) << 8)
+#define DIDFT_GETTYPE(n)	LOBYTE(n)
+#define DIDFT_GETINSTANCE(n)	LOWORD((n) >> 8)
+#define DIDFT_FFACTUATOR	0x01000000
+#define DIDFT_FFEFFECTTRIGGER	0x02000000
+#define DIDFT_OUTPUT		0x10000000
+#define DIDFT_VENDORDEFINED	0x04000000
+#define DIDFT_ALIAS		0x08000000
+#ifndef DIDFT_OPTIONAL
+#define DIDFT_OPTIONAL		0x80000000
+#endif
+#define DIDFT_ENUMCOLLECTION(n)	((WORD)(n) << 8)
+#define DIDFT_NOCOLLECTION	0x00FFFF00
+#define DIDF_ABSAXIS		0x00000001
+#define DIDF_RELAXIS		0x00000002
+
+#define DIGDD_PEEK		0x00000001
+
+typedef struct DIDEVICEOBJECTDATA_DX3 {
+    DWORD	dwOfs;
+    DWORD	dwData;
+    DWORD	dwTimeStamp;
+    DWORD	dwSequence;
+} DIDEVICEOBJECTDATA_DX3,*LPDIDEVICEOBJECTDATA_DX3;
+typedef const DIDEVICEOBJECTDATA_DX3 *LPCDIDEVICEOBJECTDATA_DX3;
+
+typedef struct DIDEVICEOBJECTDATA {
+    DWORD	dwOfs;
+    DWORD	dwData;
+    DWORD	dwTimeStamp;
+    DWORD	dwSequence;
+    UINT_PTR	uAppData;
+} DIDEVICEOBJECTDATA, *LPDIDEVICEOBJECTDATA;
+typedef const DIDEVICEOBJECTDATA *LPCDIDEVICEOBJECTDATA;
+
+typedef struct _DIOBJECTDATAFORMAT {
+    const GUID *pguid;
+    DWORD	dwOfs;
+    DWORD	dwType;
+    DWORD	dwFlags;
+} DIOBJECTDATAFORMAT, *LPDIOBJECTDATAFORMAT;
+typedef const DIOBJECTDATAFORMAT *LPCDIOBJECTDATAFORMAT;
+
+typedef struct _DIDATAFORMAT {
+    DWORD			dwSize;
+    DWORD			dwObjSize;
+    DWORD			dwFlags;
+    DWORD			dwDataSize;
+    DWORD			dwNumObjs;
+    LPDIOBJECTDATAFORMAT	rgodf;
+} DIDATAFORMAT, *LPDIDATAFORMAT;
+typedef const DIDATAFORMAT *LPCDIDATAFORMAT;
+
+#define DIDOI_FFACTUATOR	0x00000001
+#define DIDOI_FFEFFECTTRIGGER	0x00000002
+#define DIDOI_POLLED		0x00008000
+#define DIDOI_ASPECTPOSITION	0x00000100
+#define DIDOI_ASPECTVELOCITY	0x00000200
+#define DIDOI_ASPECTACCEL	0x00000300
+#define DIDOI_ASPECTFORCE	0x00000400
+#define DIDOI_ASPECTMASK	0x00000F00
+#define DIDOI_GUIDISUSAGE	0x00010000
+
+typedef struct DIPROPHEADER {
+    DWORD	dwSize;
+    DWORD	dwHeaderSize;
+    DWORD	dwObj;
+    DWORD	dwHow;
+} DIPROPHEADER,*LPDIPROPHEADER;
+typedef const DIPROPHEADER *LPCDIPROPHEADER;
+
+#define DIPH_DEVICE	0
+#define DIPH_BYOFFSET	1
+#define DIPH_BYID	2
+#define DIPH_BYUSAGE	3
+
+#define DIMAKEUSAGEDWORD(UsagePage, Usage) (DWORD)MAKELONG(Usage, UsagePage)
+
+typedef struct DIPROPDWORD {
+	DIPROPHEADER	diph;
+	DWORD		dwData;
+} DIPROPDWORD, *LPDIPROPDWORD;
+typedef const DIPROPDWORD *LPCDIPROPDWORD;
+
+typedef struct DIPROPRANGE {
+	DIPROPHEADER	diph;
+	LONG		lMin;
+	LONG		lMax;
+} DIPROPRANGE, *LPDIPROPRANGE;
+typedef const DIPROPRANGE *LPCDIPROPRANGE;
+
+#define DIPROPRANGE_NOMIN	((LONG)0x80000000)
+#define DIPROPRANGE_NOMAX	((LONG)0x7FFFFFFF)
+
+typedef struct DIPROPCAL {
+	DIPROPHEADER diph;
+	LONG	lMin;
+	LONG	lCenter;
+	LONG	lMax;
+} DIPROPCAL, *LPDIPROPCAL;
+typedef const DIPROPCAL *LPCDIPROPCAL;
+
+typedef struct DIPROPGUIDANDPATH {
+	DIPROPHEADER diph;
+	GUID    guidClass;
+	WCHAR   wszPath[MAX_PATH];
+} DIPROPGUIDANDPATH, *LPDIPROPGUIDANDPATH;
+typedef const DIPROPGUIDANDPATH *LPCDIPROPGUIDANDPATH;
+
+typedef struct DIPROPSTRING {
+        DIPROPHEADER diph;
+        WCHAR        wsz[MAX_PATH];
+} DIPROPSTRING, *LPDIPROPSTRING;
+typedef const DIPROPSTRING *LPCDIPROPSTRING;
+
+/* special property GUIDs */
+#ifdef __cplusplus
+#define MAKEDIPROP(prop)	(*(const GUID *)(prop))
+#else
+#define MAKEDIPROP(prop)	((REFGUID)(prop))
+#endif
+#define DIPROP_BUFFERSIZE	MAKEDIPROP(1)
+#define DIPROP_AXISMODE		MAKEDIPROP(2)
+
+#define DIPROPAXISMODE_ABS	0
+#define DIPROPAXISMODE_REL	1
+
+#define DIPROP_GRANULARITY	MAKEDIPROP(3)
+#define DIPROP_RANGE		MAKEDIPROP(4)
+#define DIPROP_DEADZONE		MAKEDIPROP(5)
+#define DIPROP_SATURATION	MAKEDIPROP(6)
+#define DIPROP_FFGAIN		MAKEDIPROP(7)
+#define DIPROP_FFLOAD		MAKEDIPROP(8)
+#define DIPROP_AUTOCENTER	MAKEDIPROP(9)
+
+#define DIPROPAUTOCENTER_OFF	0
+#define DIPROPAUTOCENTER_ON	1
+
+#define DIPROP_CALIBRATIONMODE	MAKEDIPROP(10)
+
+#define DIPROPCALIBRATIONMODE_COOKED	0
+#define DIPROPCALIBRATIONMODE_RAW	1
+
+#define DIPROP_CALIBRATION	MAKEDIPROP(11)
+#define DIPROP_GUIDANDPATH	MAKEDIPROP(12)
+#define DIPROP_KEYNAME          MAKEDIPROP(20)
+
+typedef struct DIDEVCAPS_DX3 {
+    DWORD	dwSize;
+    DWORD	dwFlags;
+    DWORD	dwDevType;
+    DWORD	dwAxes;
+    DWORD	dwButtons;
+    DWORD	dwPOVs;
+} DIDEVCAPS_DX3, *LPDIDEVCAPS_DX3;
+
+typedef struct DIDEVCAPS {
+    DWORD	dwSize;
+    DWORD	dwFlags;
+    DWORD	dwDevType;
+    DWORD	dwAxes;
+    DWORD	dwButtons;
+    DWORD	dwPOVs;
+    DWORD	dwFFSamplePeriod;
+    DWORD	dwFFMinTimeResolution;
+    DWORD	dwFirmwareRevision;
+    DWORD	dwHardwareRevision;
+    DWORD	dwFFDriverVersion;
+} DIDEVCAPS,*LPDIDEVCAPS;
+
+#define DIDC_ATTACHED		0x00000001
+#define DIDC_POLLEDDEVICE	0x00000002
+#define DIDC_EMULATED		0x00000004
+#define DIDC_POLLEDDATAFORMAT	0x00000008
+#define DIDC_FORCEFEEDBACK	0x00000100
+#define DIDC_FFATTACK		0x00000200
+#define DIDC_FFFADE		0x00000400
+#define DIDC_SATURATION		0x00000800
+#define DIDC_POSNEGCOEFFICIENTS	0x00001000
+#define DIDC_POSNEGSATURATION	0x00002000
+#define DIDC_DEADBAND		0x00004000
+#define DIDC_STARTDELAY		0x00008000
+#define DIDC_ALIAS		0x00010000
+#define DIDC_PHANTOM		0x00020000
+#define DIDC_HIDDEN		0x00040000
+
+
+/* SetCooperativeLevel dwFlags */
+#define DISCL_EXCLUSIVE		0x00000001
+#define DISCL_NONEXCLUSIVE	0x00000002
+#define DISCL_FOREGROUND	0x00000004
+#define DISCL_BACKGROUND	0x00000008
+#define DISCL_NOWINKEY          0x00000010
+
+/* Device FF flags */
+#define DISFFC_RESET            0x00000001
+#define DISFFC_STOPALL          0x00000002
+#define DISFFC_PAUSE            0x00000004
+#define DISFFC_CONTINUE         0x00000008
+#define DISFFC_SETACTUATORSON   0x00000010
+#define DISFFC_SETACTUATORSOFF  0x00000020
+  
+#define DIGFFS_EMPTY            0x00000001
+#define DIGFFS_STOPPED          0x00000002
+#define DIGFFS_PAUSED           0x00000004
+#define DIGFFS_ACTUATORSON      0x00000010
+#define DIGFFS_ACTUATORSOFF     0x00000020
+#define DIGFFS_POWERON          0x00000040
+#define DIGFFS_POWEROFF         0x00000080
+#define DIGFFS_SAFETYSWITCHON   0x00000100
+#define DIGFFS_SAFETYSWITCHOFF  0x00000200
+#define DIGFFS_USERFFSWITCHON   0x00000400
+#define DIGFFS_USERFFSWITCHOFF  0x00000800
+#define DIGFFS_DEVICELOST       0x80000000
+
+/* Effect flags */
+#define DIEFT_ALL		0x00000000
+                                                                                
+#define DIEFT_CONSTANTFORCE	0x00000001
+#define DIEFT_RAMPFORCE		0x00000002
+#define DIEFT_PERIODIC		0x00000003
+#define DIEFT_CONDITION		0x00000004
+#define DIEFT_CUSTOMFORCE	0x00000005
+#define DIEFT_HARDWARE		0x000000FF
+#define DIEFT_FFATTACK		0x00000200
+#define DIEFT_FFFADE		0x00000400
+#define DIEFT_SATURATION	0x00000800
+#define DIEFT_POSNEGCOEFFICIENTS 0x00001000
+#define DIEFT_POSNEGSATURATION	0x00002000
+#define DIEFT_DEADBAND		0x00004000
+#define DIEFT_STARTDELAY	0x00008000
+#define DIEFT_GETTYPE(n)	LOBYTE(n)
+                                                                                
+#define DIEFF_OBJECTIDS         0x00000001
+#define DIEFF_OBJECTOFFSETS     0x00000002
+#define DIEFF_CARTESIAN         0x00000010
+#define DIEFF_POLAR             0x00000020
+#define DIEFF_SPHERICAL         0x00000040
+
+#define DIEP_DURATION           0x00000001
+#define DIEP_SAMPLEPERIOD       0x00000002
+#define DIEP_GAIN               0x00000004
+#define DIEP_TRIGGERBUTTON      0x00000008
+#define DIEP_TRIGGERREPEATINTERVAL 0x00000010
+#define DIEP_AXES               0x00000020
+#define DIEP_DIRECTION          0x00000040
+#define DIEP_ENVELOPE           0x00000080
+#define DIEP_TYPESPECIFICPARAMS 0x00000100
+#define DIEP_STARTDELAY         0x00000200
+#define DIEP_ALLPARAMS_DX5      0x000001FF
+#define DIEP_ALLPARAMS          0x000003FF
+#define DIEP_START              0x20000000
+#define DIEP_NORESTART          0x40000000
+#define DIEP_NODOWNLOAD         0x80000000
+#define DIEB_NOTRIGGER          0xFFFFFFFF
+
+#define DIES_SOLO               0x00000001
+#define DIES_NODOWNLOAD         0x80000000
+
+#define DIEGES_PLAYING          0x00000001
+#define DIEGES_EMULATED         0x00000002
+
+#define DI_DEGREES		100
+#define DI_FFNOMINALMAX		10000
+#define DI_SECONDS		1000000
+
+typedef struct DICONSTANTFORCE {
+	LONG			lMagnitude;
+} DICONSTANTFORCE, *LPDICONSTANTFORCE;
+typedef const DICONSTANTFORCE *LPCDICONSTANTFORCE;
+
+typedef struct DIRAMPFORCE {
+	LONG			lStart;
+	LONG			lEnd;
+} DIRAMPFORCE, *LPDIRAMPFORCE;
+typedef const DIRAMPFORCE *LPCDIRAMPFORCE;
+
+typedef struct DIPERIODIC {
+	DWORD			dwMagnitude;
+	LONG			lOffset;
+	DWORD			dwPhase;
+	DWORD			dwPeriod;
+} DIPERIODIC, *LPDIPERIODIC;
+typedef const DIPERIODIC *LPCDIPERIODIC;
+
+typedef struct DICONDITION {
+	LONG			lOffset;
+	LONG			lPositiveCoefficient;
+	LONG			lNegativeCoefficient;
+	DWORD			dwPositiveSaturation;
+	DWORD			dwNegativeSaturation;
+	LONG			lDeadBand;
+} DICONDITION, *LPDICONDITION;
+typedef const DICONDITION *LPCDICONDITION;
+
+typedef struct DICUSTOMFORCE {
+	DWORD			cChannels;
+	DWORD			dwSamplePeriod;
+	DWORD			cSamples;
+	LPLONG			rglForceData;
+} DICUSTOMFORCE, *LPDICUSTOMFORCE;
+typedef const DICUSTOMFORCE *LPCDICUSTOMFORCE;
+
+typedef struct DIENVELOPE {
+	DWORD			dwSize;
+	DWORD			dwAttackLevel;
+	DWORD			dwAttackTime;
+	DWORD			dwFadeLevel;
+	DWORD			dwFadeTime;
+} DIENVELOPE, *LPDIENVELOPE;
+typedef const DIENVELOPE *LPCDIENVELOPE;
+
+typedef struct DIEFFECT_DX5 {
+	DWORD			dwSize;
+	DWORD			dwFlags;
+	DWORD			dwDuration;
+	DWORD			dwSamplePeriod;
+	DWORD			dwGain;
+	DWORD			dwTriggerButton;
+	DWORD			dwTriggerRepeatInterval;
+	DWORD			cAxes;
+	LPDWORD			rgdwAxes;
+	LPLONG			rglDirection;
+	LPDIENVELOPE		lpEnvelope;
+	DWORD			cbTypeSpecificParams;
+	LPVOID			lpvTypeSpecificParams;
+} DIEFFECT_DX5, *LPDIEFFECT_DX5;
+typedef const DIEFFECT_DX5 *LPCDIEFFECT_DX5;
+
+typedef struct DIEFFECT {
+	DWORD			dwSize;
+	DWORD			dwFlags;
+	DWORD			dwDuration;
+	DWORD			dwSamplePeriod;
+	DWORD			dwGain;
+	DWORD			dwTriggerButton;
+	DWORD			dwTriggerRepeatInterval;
+	DWORD			cAxes;
+	LPDWORD			rgdwAxes;
+	LPLONG			rglDirection;
+	LPDIENVELOPE		lpEnvelope;
+	DWORD			cbTypeSpecificParams;
+	LPVOID			lpvTypeSpecificParams;
+	DWORD			dwStartDelay;
+} DIEFFECT, *LPDIEFFECT;
+typedef const DIEFFECT *LPCDIEFFECT;
+typedef DIEFFECT DIEFFECT_DX6;
+typedef LPDIEFFECT LPDIEFFECT_DX6;
+
+typedef struct DIEFFECTINFOA {
+	DWORD			dwSize;
+	GUID			guid;
+	DWORD			dwEffType;
+	DWORD			dwStaticParams;
+	DWORD			dwDynamicParams;
+	CHAR			tszName[MAX_PATH];
+} DIEFFECTINFOA, *LPDIEFFECTINFOA;
+typedef const DIEFFECTINFOA *LPCDIEFFECTINFOA;
+
+typedef struct DIEFFECTINFOW {
+	DWORD			dwSize;
+	GUID			guid;
+	DWORD			dwEffType;
+	DWORD			dwStaticParams;
+	DWORD			dwDynamicParams;
+	WCHAR			tszName[MAX_PATH];
+} DIEFFECTINFOW, *LPDIEFFECTINFOW;
+typedef const DIEFFECTINFOW *LPCDIEFFECTINFOW;
+
+DECL_WINELIB_TYPE_AW(DIEFFECTINFO)
+DECL_WINELIB_TYPE_AW(LPDIEFFECTINFO)
+DECL_WINELIB_TYPE_AW(LPCDIEFFECTINFO)
+
+typedef BOOL (CALLBACK *LPDIENUMEFFECTSCALLBACKA)(LPCDIEFFECTINFOA, LPVOID);
+typedef BOOL (CALLBACK *LPDIENUMEFFECTSCALLBACKW)(LPCDIEFFECTINFOW, LPVOID);
+
+typedef struct DIEFFESCAPE {
+	DWORD	dwSize;
+	DWORD	dwCommand;
+	LPVOID	lpvInBuffer;
+	DWORD	cbInBuffer;
+	LPVOID	lpvOutBuffer;
+	DWORD	cbOutBuffer;
+} DIEFFESCAPE, *LPDIEFFESCAPE;
+
+typedef struct DIJOYSTATE {
+	LONG	lX;
+	LONG	lY;
+	LONG	lZ;
+	LONG	lRx;
+	LONG	lRy;
+	LONG	lRz;
+	LONG	rglSlider[2];
+	DWORD	rgdwPOV[4];
+	BYTE	rgbButtons[32];
+} DIJOYSTATE, *LPDIJOYSTATE;
+
+typedef struct DIJOYSTATE2 {
+	LONG	lX;
+	LONG	lY;
+	LONG	lZ;
+	LONG	lRx;
+	LONG	lRy;
+	LONG	lRz;
+	LONG	rglSlider[2];
+	DWORD	rgdwPOV[4];
+	BYTE	rgbButtons[128];
+	LONG	lVX;		/* 'v' as in velocity */
+	LONG	lVY;
+	LONG	lVZ;
+	LONG	lVRx;
+	LONG	lVRy;
+	LONG	lVRz;
+	LONG	rglVSlider[2];
+	LONG	lAX;		/* 'a' as in acceleration */
+	LONG	lAY;
+	LONG	lAZ;
+	LONG	lARx;
+	LONG	lARy;
+	LONG	lARz;
+	LONG	rglASlider[2];
+	LONG	lFX;		/* 'f' as in force */
+	LONG	lFY;
+	LONG	lFZ;
+	LONG	lFRx;		/* 'fr' as in rotational force aka torque */
+	LONG	lFRy;
+	LONG	lFRz;
+	LONG	rglFSlider[2];
+} DIJOYSTATE2, *LPDIJOYSTATE2;
+
+#define DIJOFS_X		FIELD_OFFSET(DIJOYSTATE, lX)
+#define DIJOFS_Y		FIELD_OFFSET(DIJOYSTATE, lY)
+#define DIJOFS_Z		FIELD_OFFSET(DIJOYSTATE, lZ)
+#define DIJOFS_RX		FIELD_OFFSET(DIJOYSTATE, lRx)
+#define DIJOFS_RY		FIELD_OFFSET(DIJOYSTATE, lRy)
+#define DIJOFS_RZ		FIELD_OFFSET(DIJOYSTATE, lRz)
+#define DIJOFS_SLIDER(n)	(FIELD_OFFSET(DIJOYSTATE, rglSlider) + \
+                                                        (n) * sizeof(LONG))
+#define DIJOFS_POV(n)		(FIELD_OFFSET(DIJOYSTATE, rgdwPOV) + \
+                                                        (n) * sizeof(DWORD))
+#define DIJOFS_BUTTON(n)	(FIELD_OFFSET(DIJOYSTATE, rgbButtons) + (n))
+#define DIJOFS_BUTTON0		DIJOFS_BUTTON(0)
+#define DIJOFS_BUTTON1		DIJOFS_BUTTON(1)
+#define DIJOFS_BUTTON2		DIJOFS_BUTTON(2)
+#define DIJOFS_BUTTON3		DIJOFS_BUTTON(3)
+#define DIJOFS_BUTTON4		DIJOFS_BUTTON(4)
+#define DIJOFS_BUTTON5		DIJOFS_BUTTON(5)
+#define DIJOFS_BUTTON6		DIJOFS_BUTTON(6)
+#define DIJOFS_BUTTON7		DIJOFS_BUTTON(7)
+#define DIJOFS_BUTTON8		DIJOFS_BUTTON(8)
+#define DIJOFS_BUTTON9		DIJOFS_BUTTON(9)
+#define DIJOFS_BUTTON10		DIJOFS_BUTTON(10)
+#define DIJOFS_BUTTON11		DIJOFS_BUTTON(11)
+#define DIJOFS_BUTTON12		DIJOFS_BUTTON(12)
+#define DIJOFS_BUTTON13		DIJOFS_BUTTON(13)
+#define DIJOFS_BUTTON14		DIJOFS_BUTTON(14)
+#define DIJOFS_BUTTON15		DIJOFS_BUTTON(15)
+#define DIJOFS_BUTTON16		DIJOFS_BUTTON(16)
+#define DIJOFS_BUTTON17		DIJOFS_BUTTON(17)
+#define DIJOFS_BUTTON18		DIJOFS_BUTTON(18)
+#define DIJOFS_BUTTON19		DIJOFS_BUTTON(19)
+#define DIJOFS_BUTTON20		DIJOFS_BUTTON(20)
+#define DIJOFS_BUTTON21		DIJOFS_BUTTON(21)
+#define DIJOFS_BUTTON22		DIJOFS_BUTTON(22)
+#define DIJOFS_BUTTON23		DIJOFS_BUTTON(23)
+#define DIJOFS_BUTTON24		DIJOFS_BUTTON(24)
+#define DIJOFS_BUTTON25		DIJOFS_BUTTON(25)
+#define DIJOFS_BUTTON26		DIJOFS_BUTTON(26)
+#define DIJOFS_BUTTON27		DIJOFS_BUTTON(27)
+#define DIJOFS_BUTTON28		DIJOFS_BUTTON(28)
+#define DIJOFS_BUTTON29		DIJOFS_BUTTON(29)
+#define DIJOFS_BUTTON30		DIJOFS_BUTTON(30)
+#define DIJOFS_BUTTON31		DIJOFS_BUTTON(31)
+
+/* DInput 7 structures, types */
+typedef struct DIFILEEFFECT {
+  DWORD       dwSize;
+  GUID        GuidEffect;
+  LPCDIEFFECT lpDiEffect;
+  CHAR        szFriendlyName[MAX_PATH];
+} DIFILEEFFECT, *LPDIFILEEFFECT;
+
+typedef const DIFILEEFFECT *LPCDIFILEEFFECT;
+typedef BOOL (CALLBACK *LPDIENUMEFFECTSINFILECALLBACK)(LPCDIFILEEFFECT , LPVOID);
+
+/* DInput 8 structures and types */
+typedef struct _DIACTIONA {
+	UINT_PTR	uAppData;
+	DWORD		dwSemantics;
+	DWORD		dwFlags;
+	union {
+		LPCSTR	lptszActionName;
+		UINT	uResIdString;
+	} DUMMYUNIONNAME;
+	GUID		guidInstance;
+	DWORD		dwObjID;
+	DWORD		dwHow;
+} DIACTIONA, *LPDIACTIONA;
+typedef const DIACTIONA *LPCDIACTIONA;
+
+typedef struct _DIACTIONW {
+	UINT_PTR	uAppData;
+	DWORD		dwSemantics;
+	DWORD		dwFlags;
+	union {
+		LPCWSTR	lptszActionName;
+		UINT	uResIdString;
+	} DUMMYUNIONNAME;
+	GUID		guidInstance;
+	DWORD		dwObjID;
+	DWORD		dwHow;
+} DIACTIONW, *LPDIACTIONW;
+typedef const DIACTIONW *LPCDIACTIONW;
+
+DECL_WINELIB_TYPE_AW(DIACTION)
+DECL_WINELIB_TYPE_AW(LPDIACTION)
+DECL_WINELIB_TYPE_AW(LPCDIACTION)
+
+#define DIA_FORCEFEEDBACK	0x00000001
+#define DIA_APPMAPPED		0x00000002
+#define DIA_APPNOMAP		0x00000004
+#define DIA_NORANGE		0x00000008
+#define DIA_APPFIXED		0x00000010
+
+#define DIAH_UNMAPPED		0x00000000
+#define DIAH_USERCONFIG		0x00000001
+#define DIAH_APPREQUESTED	0x00000002
+#define DIAH_HWAPP		0x00000004
+#define DIAH_HWDEFAULT		0x00000008
+#define DIAH_DEFAULT		0x00000020
+#define DIAH_ERROR		0x80000000
+
+typedef struct _DIACTIONFORMATA {
+	DWORD		dwSize;
+	DWORD		dwActionSize;
+	DWORD		dwDataSize;
+	DWORD		dwNumActions;
+	LPDIACTIONA	rgoAction;
+	GUID		guidActionMap;
+	DWORD		dwGenre;
+	DWORD		dwBufferSize;
+	LONG		lAxisMin;
+	LONG		lAxisMax;
+	HINSTANCE	hInstString;
+	FILETIME	ftTimeStamp;
+	DWORD		dwCRC;
+	CHAR		tszActionMap[MAX_PATH];
+} DIACTIONFORMATA, *LPDIACTIONFORMATA;
+typedef const DIACTIONFORMATA *LPCDIACTIONFORMATA;
+
+typedef struct _DIACTIONFORMATW {
+	DWORD		dwSize;
+	DWORD		dwActionSize;
+	DWORD		dwDataSize;
+	DWORD		dwNumActions;
+	LPDIACTIONW	rgoAction;
+	GUID		guidActionMap;
+	DWORD		dwGenre;
+	DWORD		dwBufferSize;
+	LONG		lAxisMin;
+	LONG		lAxisMax;
+	HINSTANCE	hInstString;
+	FILETIME	ftTimeStamp;
+	DWORD		dwCRC;
+	WCHAR		tszActionMap[MAX_PATH];
+} DIACTIONFORMATW, *LPDIACTIONFORMATW;
+typedef const DIACTIONFORMATW *LPCDIACTIONFORMATW;
+
+DECL_WINELIB_TYPE_AW(DIACTIONFORMAT)
+DECL_WINELIB_TYPE_AW(LPDIACTIONFORMAT)
+DECL_WINELIB_TYPE_AW(LPCDIACTIONFORMAT)
+
+#define DIAFTS_NEWDEVICELOW	0xFFFFFFFF
+#define DIAFTS_NEWDEVICEHIGH	0xFFFFFFFF
+#define DIAFTS_UNUSEDDEVICELOW	0x00000000
+#define DIAFTS_UNUSEDDEVICEHIGH	0x00000000
+
+#define DIDBAM_DEFAULT		0x00000000
+#define DIDBAM_PRESERVE		0x00000001
+#define DIDBAM_INITIALIZE	0x00000002
+#define DIDBAM_HWDEFAULTS	0x00000004
+
+#define DIDSAM_DEFAULT		0x00000000
+#define DIDSAM_NOUSER		0x00000001
+#define DIDSAM_FORCESAVE	0x00000002
+
+#define DICD_DEFAULT		0x00000000
+#define DICD_EDIT		0x00000001
+
+#ifndef D3DCOLOR_DEFINED
+typedef DWORD D3DCOLOR;
+#define D3DCOLOR_DEFINED
+#endif
+
+typedef struct _DICOLORSET {
+	DWORD		dwSize;
+	D3DCOLOR	cTextFore;
+	D3DCOLOR	cTextHighlight;
+	D3DCOLOR	cCalloutLine;
+	D3DCOLOR	cCalloutHighlight;
+	D3DCOLOR	cBorder;
+	D3DCOLOR	cControlFill;
+	D3DCOLOR	cHighlightFill;
+	D3DCOLOR	cAreaFill;
+} DICOLORSET, *LPDICOLORSET;
+typedef const DICOLORSET *LPCDICOLORSET;
+
+typedef struct _DICONFIGUREDEVICESPARAMSA {
+	DWORD			dwSize;
+	DWORD			dwcUsers;
+	LPSTR			lptszUserNames;
+	DWORD			dwcFormats;
+	LPDIACTIONFORMATA	lprgFormats;
+	HWND			hwnd;
+	DICOLORSET		dics;
+	LPUNKNOWN		lpUnkDDSTarget;
+} DICONFIGUREDEVICESPARAMSA, *LPDICONFIGUREDEVICESPARAMSA;
+typedef const DICONFIGUREDEVICESPARAMSA *LPCDICONFIGUREDEVICESPARAMSA;
+
+typedef struct _DICONFIGUREDEVICESPARAMSW {
+	DWORD			dwSize;
+	DWORD			dwcUsers;
+	LPWSTR			lptszUserNames;
+	DWORD			dwcFormats;
+	LPDIACTIONFORMATW	lprgFormats;
+	HWND			hwnd;
+	DICOLORSET		dics;
+	LPUNKNOWN		lpUnkDDSTarget;
+} DICONFIGUREDEVICESPARAMSW, *LPDICONFIGUREDEVICESPARAMSW;
+typedef const DICONFIGUREDEVICESPARAMSW *LPCDICONFIGUREDEVICESPARAMSW;
+
+DECL_WINELIB_TYPE_AW(DICONFIGUREDEVICESPARAMS)
+DECL_WINELIB_TYPE_AW(LPDICONFIGUREDEVICESPARAMS)
+DECL_WINELIB_TYPE_AW(LPCDICONFIGUREDEVICESPARAMS)
+
+#define DIDIFT_CONFIGURATION	0x00000001
+#define DIDIFT_OVERLAY		0x00000002
+
+#define DIDAL_CENTERED		0x00000000
+#define DIDAL_LEFTALIGNED	0x00000001
+#define DIDAL_RIGHTALIGNED	0x00000002
+#define DIDAL_MIDDLE		0x00000000
+#define DIDAL_TOPALIGNED	0x00000004
+#define DIDAL_BOTTOMALIGNED	0x00000008
+
+typedef struct _DIDEVICEIMAGEINFOA {
+	CHAR	tszImagePath[MAX_PATH];
+	DWORD	dwFlags;
+	DWORD	dwViewID;
+	RECT	rcOverlay;
+	DWORD	dwObjID;
+	DWORD	dwcValidPts;
+	POINT	rgptCalloutLine[5];
+	RECT	rcCalloutRect;
+	DWORD	dwTextAlign;
+} DIDEVICEIMAGEINFOA, *LPDIDEVICEIMAGEINFOA;
+typedef const DIDEVICEIMAGEINFOA *LPCDIDEVICEIMAGEINFOA;
+
+typedef struct _DIDEVICEIMAGEINFOW {
+	WCHAR	tszImagePath[MAX_PATH];
+	DWORD	dwFlags;
+	DWORD	dwViewID;
+	RECT	rcOverlay;
+	DWORD	dwObjID;
+	DWORD	dwcValidPts;
+	POINT	rgptCalloutLine[5];
+	RECT	rcCalloutRect;
+	DWORD	dwTextAlign;
+} DIDEVICEIMAGEINFOW, *LPDIDEVICEIMAGEINFOW;
+typedef const DIDEVICEIMAGEINFOW *LPCDIDEVICEIMAGEINFOW;
+
+DECL_WINELIB_TYPE_AW(DIDEVICEIMAGEINFO)
+DECL_WINELIB_TYPE_AW(LPDIDEVICEIMAGEINFO)
+DECL_WINELIB_TYPE_AW(LPCDIDEVICEIMAGEINFO)
+
+typedef struct _DIDEVICEIMAGEINFOHEADERA {
+	DWORD	dwSize;
+	DWORD	dwSizeImageInfo;
+	DWORD	dwcViews;
+	DWORD	dwcButtons;
+	DWORD	dwcAxes;
+	DWORD	dwcPOVs;
+	DWORD	dwBufferSize;
+	DWORD	dwBufferUsed;
+	LPDIDEVICEIMAGEINFOA	lprgImageInfoArray;
+} DIDEVICEIMAGEINFOHEADERA, *LPDIDEVICEIMAGEINFOHEADERA;
+typedef const DIDEVICEIMAGEINFOHEADERA *LPCDIDEVICEIMAGEINFOHEADERA;
+
+typedef struct _DIDEVICEIMAGEINFOHEADERW {
+	DWORD	dwSize;
+	DWORD	dwSizeImageInfo;
+	DWORD	dwcViews;
+	DWORD	dwcButtons;
+	DWORD	dwcAxes;
+	DWORD	dwcPOVs;
+	DWORD	dwBufferSize;
+	DWORD	dwBufferUsed;
+	LPDIDEVICEIMAGEINFOW	lprgImageInfoArray;
+} DIDEVICEIMAGEINFOHEADERW, *LPDIDEVICEIMAGEINFOHEADERW;
+typedef const DIDEVICEIMAGEINFOHEADERW *LPCDIDEVICEIMAGEINFOHEADERW;
+
+DECL_WINELIB_TYPE_AW(DIDEVICEIMAGEINFOHEADER)
+DECL_WINELIB_TYPE_AW(LPDIDEVICEIMAGEINFOHEADER)
+DECL_WINELIB_TYPE_AW(LPCDIDEVICEIMAGEINFOHEADER)
+
+
+/*****************************************************************************
+ * IDirectInputEffect interface
+ */
+#define INTERFACE IDirectInputEffect
+DECLARE_INTERFACE_(IDirectInputEffect,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectInputEffect methods ***/
+    STDMETHOD(Initialize)(THIS_ HINSTANCE, DWORD, REFGUID) PURE;
+    STDMETHOD(GetEffectGuid)(THIS_ LPGUID) PURE;
+    STDMETHOD(GetParameters)(THIS_ LPDIEFFECT, DWORD) PURE;
+    STDMETHOD(SetParameters)(THIS_ LPCDIEFFECT, DWORD) PURE;
+    STDMETHOD(Start)(THIS_ DWORD, DWORD) PURE;
+    STDMETHOD(Stop)(THIS) PURE;
+    STDMETHOD(GetEffectStatus)(THIS_ LPDWORD) PURE;
+    STDMETHOD(Download)(THIS) PURE;
+    STDMETHOD(Unload)(THIS) PURE;
+    STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectInputEffect_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectInputEffect_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectInputEffect_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectInputEffect methods ***/
+#define IDirectInputEffect_Initialize(p,a,b,c)    (p)->lpVtbl->Initialize(p,a,b,c)
+#define IDirectInputEffect_GetEffectGuid(p,a)     (p)->lpVtbl->GetEffectGuid(p,a)
+#define IDirectInputEffect_GetParameters(p,a,b)   (p)->lpVtbl->GetParameters(p,a,b)
+#define IDirectInputEffect_SetParameters(p,a,b)   (p)->lpVtbl->SetParameters(p,a,b)
+#define IDirectInputEffect_Start(p,a,b)           (p)->lpVtbl->Start(p,a,b)
+#define IDirectInputEffect_Stop(p)                (p)->lpVtbl->Stop(p)
+#define IDirectInputEffect_GetEffectStatus(p,a,b) (p)->lpVtbl->GetEffectStatus(p,a)
+#define IDirectInputEffect_Download(p)            (p)->lpVtbl->Download(p)
+#define IDirectInputEffect_Unload(p)              (p)->lpVtbl->Unload(p)
+#define IDirectInputEffect_Escape(p,a)            (p)->lpVtbl->Escape(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirectInputEffect_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectInputEffect_AddRef(p)             (p)->AddRef()
+#define IDirectInputEffect_Release(p)            (p)->Release()
+/*** IDirectInputEffect methods ***/
+#define IDirectInputEffect_Initialize(p,a,b,c)    (p)->Initialize(a,b,c)
+#define IDirectInputEffect_GetEffectGuid(p,a)     (p)->GetEffectGuid(a)
+#define IDirectInputEffect_GetParameters(p,a,b)   (p)->GetParameters(a,b)
+#define IDirectInputEffect_SetParameters(p,a,b)   (p)->SetParameters(a,b)
+#define IDirectInputEffect_Start(p,a,b)           (p)->Start(a,b)
+#define IDirectInputEffect_Stop(p)                (p)->Stop()
+#define IDirectInputEffect_GetEffectStatus(p,a,b) (p)->GetEffectStatus(a)
+#define IDirectInputEffect_Download(p)            (p)->Download()
+#define IDirectInputEffect_Unload(p)              (p)->Unload()
+#define IDirectInputEffect_Escape(p,a)            (p)->Escape(a)
+#endif
+
+
+/*****************************************************************************
+ * IDirectInputDeviceA interface
+ */
+#define INTERFACE IDirectInputDeviceA
+DECLARE_INTERFACE_(IDirectInputDeviceA,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectInputDeviceA methods ***/
+    STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE;
+    STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
+    STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE;
+    STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE;
+    STDMETHOD(Acquire)(THIS) PURE;
+    STDMETHOD(Unacquire)(THIS) PURE;
+    STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE;
+    STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;
+    STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE;
+    STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE;
+    STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE;
+    STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE;
+    STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE;
+    STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
+    STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE;
+};
+#undef INTERFACE
+
+/*****************************************************************************
+ * IDirectInputDeviceW interface
+ */
+#define INTERFACE IDirectInputDeviceW
+DECLARE_INTERFACE_(IDirectInputDeviceW,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectInputDeviceW methods ***/
+    STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE;
+    STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
+    STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE;
+    STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE;
+    STDMETHOD(Acquire)(THIS) PURE;
+    STDMETHOD(Unacquire)(THIS) PURE;
+    STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE;
+    STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;
+    STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE;
+    STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE;
+    STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE;
+    STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE;
+    STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE;
+    STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
+    STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectInputDevice_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectInputDevice_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectInputDevice_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectInputDevice methods ***/
+#define IDirectInputDevice_GetCapabilities(p,a)       (p)->lpVtbl->GetCapabilities(p,a)
+#define IDirectInputDevice_EnumObjects(p,a,b,c)       (p)->lpVtbl->EnumObjects(p,a,b,c)
+#define IDirectInputDevice_GetProperty(p,a,b)         (p)->lpVtbl->GetProperty(p,a,b)
+#define IDirectInputDevice_SetProperty(p,a,b)         (p)->lpVtbl->SetProperty(p,a,b)
+#define IDirectInputDevice_Acquire(p)                 (p)->lpVtbl->Acquire(p)
+#define IDirectInputDevice_Unacquire(p)               (p)->lpVtbl->Unacquire(p)
+#define IDirectInputDevice_GetDeviceState(p,a,b)      (p)->lpVtbl->GetDeviceState(p,a,b)
+#define IDirectInputDevice_GetDeviceData(p,a,b,c,d)   (p)->lpVtbl->GetDeviceData(p,a,b,c,d)
+#define IDirectInputDevice_SetDataFormat(p,a)         (p)->lpVtbl->SetDataFormat(p,a)
+#define IDirectInputDevice_SetEventNotification(p,a)  (p)->lpVtbl->SetEventNotification(p,a)
+#define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
+#define IDirectInputDevice_GetObjectInfo(p,a,b,c)     (p)->lpVtbl->GetObjectInfo(p,a,b,c)
+#define IDirectInputDevice_GetDeviceInfo(p,a)         (p)->lpVtbl->GetDeviceInfo(p,a)
+#define IDirectInputDevice_RunControlPanel(p,a,b)     (p)->lpVtbl->RunControlPanel(p,a,b)
+#define IDirectInputDevice_Initialize(p,a,b,c)        (p)->lpVtbl->Initialize(p,a,b,c)
+#else
+/*** IUnknown methods ***/
+#define IDirectInputDevice_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectInputDevice_AddRef(p)             (p)->AddRef()
+#define IDirectInputDevice_Release(p)            (p)->Release()
+/*** IDirectInputDevice methods ***/
+#define IDirectInputDevice_GetCapabilities(p,a)       (p)->GetCapabilities(a)
+#define IDirectInputDevice_EnumObjects(p,a,b,c)       (p)->EnumObjects(a,b,c)
+#define IDirectInputDevice_GetProperty(p,a,b)         (p)->GetProperty(a,b)
+#define IDirectInputDevice_SetProperty(p,a,b)         (p)->SetProperty(a,b)
+#define IDirectInputDevice_Acquire(p)                 (p)->Acquire()
+#define IDirectInputDevice_Unacquire(p)               (p)->Unacquire()
+#define IDirectInputDevice_GetDeviceState(p,a,b)      (p)->GetDeviceState(a,b)
+#define IDirectInputDevice_GetDeviceData(p,a,b,c,d)   (p)->GetDeviceData(a,b,c,d)
+#define IDirectInputDevice_SetDataFormat(p,a)         (p)->SetDataFormat(a)
+#define IDirectInputDevice_SetEventNotification(p,a)  (p)->SetEventNotification(a)
+#define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
+#define IDirectInputDevice_GetObjectInfo(p,a,b,c)     (p)->GetObjectInfo(a,b,c)
+#define IDirectInputDevice_GetDeviceInfo(p,a)         (p)->GetDeviceInfo(a)
+#define IDirectInputDevice_RunControlPanel(p,a,b)     (p)->RunControlPanel(a,b)
+#define IDirectInputDevice_Initialize(p,a,b,c)        (p)->Initialize(a,b,c)
+#endif
+
+
+/*****************************************************************************
+ * IDirectInputDevice2A interface
+ */
+#define INTERFACE IDirectInputDevice2A
+DECLARE_INTERFACE_(IDirectInputDevice2A,IDirectInputDeviceA)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectInputDeviceA methods ***/
+    STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE;
+    STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
+    STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE;
+    STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE;
+    STDMETHOD(Acquire)(THIS) PURE;
+    STDMETHOD(Unacquire)(THIS) PURE;
+    STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE;
+    STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;
+    STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE;
+    STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE;
+    STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE;
+    STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE;
+    STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE;
+    STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
+    STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE;
+    /*** IDirectInputDevice2A methods ***/
+    STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE;
+    STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwEffType) PURE;
+    STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA pdei, REFGUID rguid) PURE;
+    STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE;
+    STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE;
+    STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE;
+    STDMETHOD(Poll)(THIS) PURE;
+    STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE;
+};
+#undef INTERFACE
+
+/*****************************************************************************
+ * IDirectInputDevice2W interface
+ */
+#define INTERFACE IDirectInputDevice2W
+DECLARE_INTERFACE_(IDirectInputDevice2W,IDirectInputDeviceW)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectInputDeviceW methods ***/
+    STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE;
+    STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
+    STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE;
+    STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE;
+    STDMETHOD(Acquire)(THIS) PURE;
+    STDMETHOD(Unacquire)(THIS) PURE;
+    STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE;
+    STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;
+    STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE;
+    STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE;
+    STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE;
+    STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE;
+    STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE;
+    STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
+    STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE;
+    /*** IDirectInputDevice2W methods ***/
+    STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE;
+    STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwEffType) PURE;
+    STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW pdei, REFGUID rguid) PURE;
+    STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE;
+    STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE;
+    STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE;
+    STDMETHOD(Poll)(THIS) PURE;
+    STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectInputDevice2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectInputDevice2_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectInputDevice2_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectInputDevice methods ***/
+#define IDirectInputDevice2_GetCapabilities(p,a)       (p)->lpVtbl->GetCapabilities(p,a)
+#define IDirectInputDevice2_EnumObjects(p,a,b,c)       (p)->lpVtbl->EnumObjects(p,a,b,c)
+#define IDirectInputDevice2_GetProperty(p,a,b)         (p)->lpVtbl->GetProperty(p,a,b)
+#define IDirectInputDevice2_SetProperty(p,a,b)         (p)->lpVtbl->SetProperty(p,a,b)
+#define IDirectInputDevice2_Acquire(p)                 (p)->lpVtbl->Acquire(p)
+#define IDirectInputDevice2_Unacquire(p)               (p)->lpVtbl->Unacquire(p)
+#define IDirectInputDevice2_GetDeviceState(p,a,b)      (p)->lpVtbl->GetDeviceState(p,a,b)
+#define IDirectInputDevice2_GetDeviceData(p,a,b,c,d)   (p)->lpVtbl->GetDeviceData(p,a,b,c,d)
+#define IDirectInputDevice2_SetDataFormat(p,a)         (p)->lpVtbl->SetDataFormat(p,a)
+#define IDirectInputDevice2_SetEventNotification(p,a)  (p)->lpVtbl->SetEventNotification(p,a)
+#define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
+#define IDirectInputDevice2_GetObjectInfo(p,a,b,c)     (p)->lpVtbl->GetObjectInfo(p,a,b,c)
+#define IDirectInputDevice2_GetDeviceInfo(p,a)         (p)->lpVtbl->GetDeviceInfo(p,a)
+#define IDirectInputDevice2_RunControlPanel(p,a,b)     (p)->lpVtbl->RunControlPanel(p,a,b)
+#define IDirectInputDevice2_Initialize(p,a,b,c)        (p)->lpVtbl->Initialize(p,a,b,c)
+/*** IDirectInputDevice2 methods ***/
+#define IDirectInputDevice2_CreateEffect(p,a,b,c,d)           (p)->lpVtbl->CreateEffect(p,a,b,c,d)
+#define IDirectInputDevice2_EnumEffects(p,a,b,c)              (p)->lpVtbl->EnumEffects(p,a,b,c)
+#define IDirectInputDevice2_GetEffectInfo(p,a,b)              (p)->lpVtbl->GetEffectInfo(p,a,b)
+#define IDirectInputDevice2_GetForceFeedbackState(p,a)        (p)->lpVtbl->GetForceFeedbackState(p,a)
+#define IDirectInputDevice2_SendForceFeedbackCommand(p,a)     (p)->lpVtbl->SendForceFeedbackCommand(p,a)
+#define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c)
+#define IDirectInputDevice2_Escape(p,a)                       (p)->lpVtbl->Escape(p,a)
+#define IDirectInputDevice2_Poll(p)                           (p)->lpVtbl->Poll(p)
+#define IDirectInputDevice2_SendDeviceData(p,a,b,c,d)         (p)->lpVtbl->SendDeviceData(p,a,b,c,d)
+#else
+/*** IUnknown methods ***/
+#define IDirectInputDevice2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectInputDevice2_AddRef(p)             (p)->AddRef()
+#define IDirectInputDevice2_Release(p)            (p)->Release()
+/*** IDirectInputDevice methods ***/
+#define IDirectInputDevice2_GetCapabilities(p,a)       (p)->GetCapabilities(a)
+#define IDirectInputDevice2_EnumObjects(p,a,b,c)       (p)->EnumObjects(a,b,c)
+#define IDirectInputDevice2_GetProperty(p,a,b)         (p)->GetProperty(a,b)
+#define IDirectInputDevice2_SetProperty(p,a,b)         (p)->SetProperty(a,b)
+#define IDirectInputDevice2_Acquire(p)                 (p)->Acquire()
+#define IDirectInputDevice2_Unacquire(p)               (p)->Unacquire()
+#define IDirectInputDevice2_GetDeviceState(p,a,b)      (p)->GetDeviceState(a,b)
+#define IDirectInputDevice2_GetDeviceData(p,a,b,c,d)   (p)->GetDeviceData(a,b,c,d)
+#define IDirectInputDevice2_SetDataFormat(p,a)         (p)->SetDataFormat(a)
+#define IDirectInputDevice2_SetEventNotification(p,a)  (p)->SetEventNotification(a)
+#define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
+#define IDirectInputDevice2_GetObjectInfo(p,a,b,c)     (p)->GetObjectInfo(a,b,c)
+#define IDirectInputDevice2_GetDeviceInfo(p,a)         (p)->GetDeviceInfo(a)
+#define IDirectInputDevice2_RunControlPanel(p,a,b)     (p)->RunControlPanel(a,b)
+#define IDirectInputDevice2_Initialize(p,a,b,c)        (p)->Initialize(a,b,c)
+/*** IDirectInputDevice2 methods ***/
+#define IDirectInputDevice2_CreateEffect(p,a,b,c,d)           (p)->CreateEffect(a,b,c,d)
+#define IDirectInputDevice2_EnumEffects(p,a,b,c)              (p)->EnumEffects(a,b,c)
+#define IDirectInputDevice2_GetEffectInfo(p,a,b)              (p)->GetEffectInfo(a,b)
+#define IDirectInputDevice2_GetForceFeedbackState(p,a)        (p)->GetForceFeedbackState(a)
+#define IDirectInputDevice2_SendForceFeedbackCommand(p,a)     (p)->SendForceFeedbackCommand(a)
+#define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c)
+#define IDirectInputDevice2_Escape(p,a)                       (p)->Escape(a)
+#define IDirectInputDevice2_Poll(p)                           (p)->Poll()
+#define IDirectInputDevice2_SendDeviceData(p,a,b,c,d)         (p)->SendDeviceData(a,b,c,d)
+#endif
+
+/*****************************************************************************
+ * IDirectInputDevice7A interface
+ */
+#define INTERFACE IDirectInputDevice7A
+DECLARE_INTERFACE_(IDirectInputDevice7A,IDirectInputDevice2A)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectInputDeviceA methods ***/
+    STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE;
+    STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
+    STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE;
+    STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE;
+    STDMETHOD(Acquire)(THIS) PURE;
+    STDMETHOD(Unacquire)(THIS) PURE;
+    STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE;
+    STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;
+    STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE;
+    STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE;
+    STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE;
+    STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE;
+    STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE;
+    STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
+    STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE;
+    /*** IDirectInputDevice2A methods ***/
+    STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE;
+    STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwEffType) PURE;
+    STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA pdei, REFGUID rguid) PURE;
+    STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE;
+    STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE;
+    STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE;
+    STDMETHOD(Poll)(THIS) PURE;
+    STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE;
+    /*** IDirectInputDevice7A methods ***/
+    STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE;
+    STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE;
+};
+#undef INTERFACE
+
+/*****************************************************************************
+ * IDirectInputDevice7W interface
+ */
+#define INTERFACE IDirectInputDevice7W
+DECLARE_INTERFACE_(IDirectInputDevice7W,IDirectInputDevice2W)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectInputDeviceW methods ***/
+    STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE;
+    STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
+    STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE;
+    STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE;
+    STDMETHOD(Acquire)(THIS) PURE;
+    STDMETHOD(Unacquire)(THIS) PURE;
+    STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE;
+    STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;
+    STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE;
+    STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE;
+    STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE;
+    STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE;
+    STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE;
+    STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
+    STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE;
+    /*** IDirectInputDevice2W methods ***/
+    STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE;
+    STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwEffType) PURE;
+    STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW pdei, REFGUID rguid) PURE;
+    STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE;
+    STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE;
+    STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE;
+    STDMETHOD(Poll)(THIS) PURE;
+    STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE;
+    /*** IDirectInputDevice7W methods ***/
+    STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE;
+    STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectInputDevice7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectInputDevice7_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectInputDevice7_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectInputDevice methods ***/
+#define IDirectInputDevice7_GetCapabilities(p,a)       (p)->lpVtbl->GetCapabilities(p,a)
+#define IDirectInputDevice7_EnumObjects(p,a,b,c)       (p)->lpVtbl->EnumObjects(p,a,b,c)
+#define IDirectInputDevice7_GetProperty(p,a,b)         (p)->lpVtbl->GetProperty(p,a,b)
+#define IDirectInputDevice7_SetProperty(p,a,b)         (p)->lpVtbl->SetProperty(p,a,b)
+#define IDirectInputDevice7_Acquire(p)                 (p)->lpVtbl->Acquire(p)
+#define IDirectInputDevice7_Unacquire(p)               (p)->lpVtbl->Unacquire(p)
+#define IDirectInputDevice7_GetDeviceState(p,a,b)      (p)->lpVtbl->GetDeviceState(p,a,b)
+#define IDirectInputDevice7_GetDeviceData(p,a,b,c,d)   (p)->lpVtbl->GetDeviceData(p,a,b,c,d)
+#define IDirectInputDevice7_SetDataFormat(p,a)         (p)->lpVtbl->SetDataFormat(p,a)
+#define IDirectInputDevice7_SetEventNotification(p,a)  (p)->lpVtbl->SetEventNotification(p,a)
+#define IDirectInputDevice7_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
+#define IDirectInputDevice7_GetObjectInfo(p,a,b,c)     (p)->lpVtbl->GetObjectInfo(p,a,b,c)
+#define IDirectInputDevice7_GetDeviceInfo(p,a)         (p)->lpVtbl->GetDeviceInfo(p,a)
+#define IDirectInputDevice7_RunControlPanel(p,a,b)     (p)->lpVtbl->RunControlPanel(p,a,b)
+#define IDirectInputDevice7_Initialize(p,a,b,c)        (p)->lpVtbl->Initialize(p,a,b,c)
+/*** IDirectInputDevice2 methods ***/
+#define IDirectInputDevice7_CreateEffect(p,a,b,c,d)           (p)->lpVtbl->CreateEffect(p,a,b,c,d)
+#define IDirectInputDevice7_EnumEffects(p,a,b,c)              (p)->lpVtbl->EnumEffects(p,a,b,c)
+#define IDirectInputDevice7_GetEffectInfo(p,a,b)              (p)->lpVtbl->GetEffectInfo(p,a,b)
+#define IDirectInputDevice7_GetForceFeedbackState(p,a)        (p)->lpVtbl->GetForceFeedbackState(p,a)
+#define IDirectInputDevice7_SendForceFeedbackCommand(p,a)     (p)->lpVtbl->SendForceFeedbackCommand(p,a)
+#define IDirectInputDevice7_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c)
+#define IDirectInputDevice7_Escape(p,a)                       (p)->lpVtbl->Escape(p,a)
+#define IDirectInputDevice7_Poll(p)                           (p)->lpVtbl->Poll(p)
+#define IDirectInputDevice7_SendDeviceData(p,a,b,c,d)         (p)->lpVtbl->SendDeviceData(p,a,b,c,d)
+/*** IDirectInputDevice7 methods ***/
+#define IDirectInputDevice7_EnumEffectsInFile(p,a,b,c,d) (p)->lpVtbl->EnumEffectsInFile(p,a,b,c,d)
+#define IDirectInputDevice7_WriteEffectToFile(p,a,b,c,d) (p)->lpVtbl->WriteEffectToFile(p,a,b,c,d)
+#else
+/*** IUnknown methods ***/
+#define IDirectInputDevice7_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectInputDevice7_AddRef(p)             (p)->AddRef()
+#define IDirectInputDevice7_Release(p)            (p)->Release()
+/*** IDirectInputDevice methods ***/
+#define IDirectInputDevice7_GetCapabilities(p,a)       (p)->GetCapabilities(a)
+#define IDirectInputDevice7_EnumObjects(p,a,b,c)       (p)->EnumObjects(a,b,c)
+#define IDirectInputDevice7_GetProperty(p,a,b)         (p)->GetProperty(a,b)
+#define IDirectInputDevice7_SetProperty(p,a,b)         (p)->SetProperty(a,b)
+#define IDirectInputDevice7_Acquire(p)                 (p)->Acquire()
+#define IDirectInputDevice7_Unacquire(p)               (p)->Unacquire()
+#define IDirectInputDevice7_GetDeviceState(p,a,b)      (p)->GetDeviceState(a,b)
+#define IDirectInputDevice7_GetDeviceData(p,a,b,c,d)   (p)->GetDeviceData(a,b,c,d)
+#define IDirectInputDevice7_SetDataFormat(p,a)         (p)->SetDataFormat(a)
+#define IDirectInputDevice7_SetEventNotification(p,a)  (p)->SetEventNotification(a)
+#define IDirectInputDevice7_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
+#define IDirectInputDevice7_GetObjectInfo(p,a,b,c)     (p)->GetObjectInfo(a,b,c)
+#define IDirectInputDevice7_GetDeviceInfo(p,a)         (p)->GetDeviceInfo(a)
+#define IDirectInputDevice7_RunControlPanel(p,a,b)     (p)->RunControlPanel(a,b)
+#define IDirectInputDevice7_Initialize(p,a,b,c)        (p)->Initialize(a,b,c)
+/*** IDirectInputDevice2 methods ***/
+#define IDirectInputDevice7_CreateEffect(p,a,b,c,d)           (p)->CreateEffect(a,b,c,d)
+#define IDirectInputDevice7_EnumEffects(p,a,b,c)              (p)->EnumEffects(a,b,c)
+#define IDirectInputDevice7_GetEffectInfo(p,a,b)              (p)->GetEffectInfo(a,b)
+#define IDirectInputDevice7_GetForceFeedbackState(p,a)        (p)->GetForceFeedbackState(a)
+#define IDirectInputDevice7_SendForceFeedbackCommand(p,a)     (p)->SendForceFeedbackCommand(a)
+#define IDirectInputDevice7_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c)
+#define IDirectInputDevice7_Escape(p,a)                       (p)->Escape(a)
+#define IDirectInputDevice7_Poll(p)                           (p)->Poll()
+#define IDirectInputDevice7_SendDeviceData(p,a,b,c,d)         (p)->SendDeviceData(a,b,c,d)
+/*** IDirectInputDevice7 methods ***/
+#define IDirectInputDevice7_EnumEffectsInFile(p,a,b,c,d) (p)->EnumEffectsInFile(a,b,c,d)
+#define IDirectInputDevice7_WriteEffectToFile(p,a,b,c,d) (p)->WriteEffectToFile(a,b,c,d)
+#endif
+
+
+/*****************************************************************************
+ * IDirectInputDevice8A interface
+ */
+#define INTERFACE IDirectInputDevice8A
+DECLARE_INTERFACE_(IDirectInputDevice8A,IDirectInputDevice7A)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectInputDeviceA methods ***/
+    STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE;
+    STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
+    STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE;
+    STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE;
+    STDMETHOD(Acquire)(THIS) PURE;
+    STDMETHOD(Unacquire)(THIS) PURE;
+    STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE;
+    STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;
+    STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE;
+    STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE;
+    STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE;
+    STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE;
+    STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE;
+    STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
+    STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE;
+    /*** IDirectInputDevice2A methods ***/
+    STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE;
+    STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwEffType) PURE;
+    STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA pdei, REFGUID rguid) PURE;
+    STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE;
+    STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE;
+    STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE;
+    STDMETHOD(Poll)(THIS) PURE;
+    STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE;
+    /*** IDirectInputDevice7A methods ***/
+    STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE;
+    STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE;
+    /*** IDirectInputDevice8A methods ***/
+    STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATA lpdiaf, LPCSTR lpszUserName, DWORD dwFlags) PURE;
+    STDMETHOD(SetActionMap)(THIS_ LPDIACTIONFORMATA lpdiaf, LPCSTR lpszUserName, DWORD dwFlags) PURE;
+    STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERA lpdiDevImageInfoHeader) PURE;
+};
+#undef INTERFACE
+
+/*****************************************************************************
+ * IDirectInputDevice8W interface
+ */
+#define INTERFACE IDirectInputDevice8W
+DECLARE_INTERFACE_(IDirectInputDevice8W,IDirectInputDevice7W)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectInputDeviceW methods ***/
+    STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE;
+    STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
+    STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE;
+    STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE;
+    STDMETHOD(Acquire)(THIS) PURE;
+    STDMETHOD(Unacquire)(THIS) PURE;
+    STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE;
+    STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;
+    STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE;
+    STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE;
+    STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE;
+    STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE;
+    STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE;
+    STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
+    STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE;
+    /*** IDirectInputDevice2W methods ***/
+    STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE;
+    STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwEffType) PURE;
+    STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW pdei, REFGUID rguid) PURE;
+    STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE;
+    STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE;
+    STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE;
+    STDMETHOD(Poll)(THIS) PURE;
+    STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE;
+    /*** IDirectInputDevice7W methods ***/
+    STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE;
+    STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE;
+    /*** IDirectInputDevice8W methods ***/
+    STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATW lpdiaf, LPCWSTR lpszUserName, DWORD dwFlags) PURE;
+    STDMETHOD(SetActionMap)(THIS_ LPDIACTIONFORMATW lpdiaf, LPCWSTR lpszUserName, DWORD dwFlags) PURE;
+    STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERW lpdiDevImageInfoHeader) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectInputDevice8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectInputDevice8_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectInputDevice8_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectInputDevice methods ***/
+#define IDirectInputDevice8_GetCapabilities(p,a)       (p)->lpVtbl->GetCapabilities(p,a)
+#define IDirectInputDevice8_EnumObjects(p,a,b,c)       (p)->lpVtbl->EnumObjects(p,a,b,c)
+#define IDirectInputDevice8_GetProperty(p,a,b)         (p)->lpVtbl->GetProperty(p,a,b)
+#define IDirectInputDevice8_SetProperty(p,a,b)         (p)->lpVtbl->SetProperty(p,a,b)
+#define IDirectInputDevice8_Acquire(p)                 (p)->lpVtbl->Acquire(p)
+#define IDirectInputDevice8_Unacquire(p)               (p)->lpVtbl->Unacquire(p)
+#define IDirectInputDevice8_GetDeviceState(p,a,b)      (p)->lpVtbl->GetDeviceState(p,a,b)
+#define IDirectInputDevice8_GetDeviceData(p,a,b,c,d)   (p)->lpVtbl->GetDeviceData(p,a,b,c,d)
+#define IDirectInputDevice8_SetDataFormat(p,a)         (p)->lpVtbl->SetDataFormat(p,a)
+#define IDirectInputDevice8_SetEventNotification(p,a)  (p)->lpVtbl->SetEventNotification(p,a)
+#define IDirectInputDevice8_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
+#define IDirectInputDevice8_GetObjectInfo(p,a,b,c)     (p)->lpVtbl->GetObjectInfo(p,a,b,c)
+#define IDirectInputDevice8_GetDeviceInfo(p,a)         (p)->lpVtbl->GetDeviceInfo(p,a)
+#define IDirectInputDevice8_RunControlPanel(p,a,b)     (p)->lpVtbl->RunControlPanel(p,a,b)
+#define IDirectInputDevice8_Initialize(p,a,b,c)        (p)->lpVtbl->Initialize(p,a,b,c)
+/*** IDirectInputDevice2 methods ***/
+#define IDirectInputDevice8_CreateEffect(p,a,b,c,d)           (p)->lpVtbl->CreateEffect(p,a,b,c,d)
+#define IDirectInputDevice8_EnumEffects(p,a,b,c)              (p)->lpVtbl->EnumEffects(p,a,b,c)
+#define IDirectInputDevice8_GetEffectInfo(p,a,b)              (p)->lpVtbl->GetEffectInfo(p,a,b)
+#define IDirectInputDevice8_GetForceFeedbackState(p,a)        (p)->lpVtbl->GetForceFeedbackState(p,a)
+#define IDirectInputDevice8_SendForceFeedbackCommand(p,a)     (p)->lpVtbl->SendForceFeedbackCommand(p,a)
+#define IDirectInputDevice8_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c)
+#define IDirectInputDevice8_Escape(p,a)                       (p)->lpVtbl->Escape(p,a)
+#define IDirectInputDevice8_Poll(p)                           (p)->lpVtbl->Poll(p)
+#define IDirectInputDevice8_SendDeviceData(p,a,b,c,d)         (p)->lpVtbl->SendDeviceData(p,a,b,c,d)
+/*** IDirectInputDevice7 methods ***/
+#define IDirectInputDevice8_EnumEffectsInFile(p,a,b,c,d) (p)->lpVtbl->EnumEffectsInFile(p,a,b,c,d)
+#define IDirectInputDevice8_WriteEffectToFile(p,a,b,c,d) (p)->lpVtbl->WriteEffectToFile(p,a,b,c,d)
+/*** IDirectInputDevice8 methods ***/
+#define IDirectInputDevice8_BuildActionMap(p,a,b,c) (p)->lpVtbl->BuildActionMap(p,a,b,c)
+#define IDirectInputDevice8_SetActionMap(p,a,b,c)   (p)->lpVtbl->SetActionMap(p,a,b,c)
+#define IDirectInputDevice8_GetImageInfo(p,a)       (p)->lpVtbl->GetImageInfo(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirectInputDevice8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectInputDevice8_AddRef(p)             (p)->AddRef()
+#define IDirectInputDevice8_Release(p)            (p)->Release()
+/*** IDirectInputDevice methods ***/
+#define IDirectInputDevice8_GetCapabilities(p,a)       (p)->GetCapabilities(a)
+#define IDirectInputDevice8_EnumObjects(p,a,b,c)       (p)->EnumObjects(a,b,c)
+#define IDirectInputDevice8_GetProperty(p,a,b)         (p)->GetProperty(a,b)
+#define IDirectInputDevice8_SetProperty(p,a,b)         (p)->SetProperty(a,b)
+#define IDirectInputDevice8_Acquire(p)                 (p)->Acquire()
+#define IDirectInputDevice8_Unacquire(p)               (p)->Unacquire()
+#define IDirectInputDevice8_GetDeviceState(p,a,b)      (p)->GetDeviceState(a,b)
+#define IDirectInputDevice8_GetDeviceData(p,a,b,c,d)   (p)->GetDeviceData(a,b,c,d)
+#define IDirectInputDevice8_SetDataFormat(p,a)         (p)->SetDataFormat(a)
+#define IDirectInputDevice8_SetEventNotification(p,a)  (p)->SetEventNotification(a)
+#define IDirectInputDevice8_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
+#define IDirectInputDevice8_GetObjectInfo(p,a,b,c)     (p)->GetObjectInfo(a,b,c)
+#define IDirectInputDevice8_GetDeviceInfo(p,a)         (p)->GetDeviceInfo(a)
+#define IDirectInputDevice8_RunControlPanel(p,a,b)     (p)->RunControlPanel(a,b)
+#define IDirectInputDevice8_Initialize(p,a,b,c)        (p)->Initialize(a,b,c)
+/*** IDirectInputDevice2 methods ***/
+#define IDirectInputDevice8_CreateEffect(p,a,b,c,d)           (p)->CreateEffect(a,b,c,d)
+#define IDirectInputDevice8_EnumEffects(p,a,b,c)              (p)->EnumEffects(a,b,c)
+#define IDirectInputDevice8_GetEffectInfo(p,a,b)              (p)->GetEffectInfo(a,b)
+#define IDirectInputDevice8_GetForceFeedbackState(p,a)        (p)->GetForceFeedbackState(a)
+#define IDirectInputDevice8_SendForceFeedbackCommand(p,a)     (p)->SendForceFeedbackCommand(a)
+#define IDirectInputDevice8_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c)
+#define IDirectInputDevice8_Escape(p,a)                       (p)->Escape(a)
+#define IDirectInputDevice8_Poll(p)                           (p)->Poll()
+#define IDirectInputDevice8_SendDeviceData(p,a,b,c,d)         (p)->SendDeviceData(a,b,c,d)
+/*** IDirectInputDevice7 methods ***/
+#define IDirectInputDevice8_EnumEffectsInFile(p,a,b,c,d) (p)->EnumEffectsInFile(a,b,c,d)
+#define IDirectInputDevice8_WriteEffectToFile(p,a,b,c,d) (p)->WriteEffectToFile(a,b,c,d)
+/*** IDirectInputDevice8 methods ***/
+#define IDirectInputDevice8_BuildActionMap(p,a,b,c) (p)->BuildActionMap(a,b,c)
+#define IDirectInputDevice8_SetActionMap(p,a,b,c)   (p)->SetActionMap(a,b,c)
+#define IDirectInputDevice8_GetImageInfo(p,a)       (p)->GetImageInfo(a)
+#endif
+
+/* "Standard" Mouse report... */
+typedef struct DIMOUSESTATE {
+  LONG lX;
+  LONG lY;
+  LONG lZ;
+  BYTE rgbButtons[4];
+} DIMOUSESTATE;
+
+/* "Standard" Mouse report for DInput 7... */
+typedef struct DIMOUSESTATE2 {
+  LONG lX;
+  LONG lY;
+  LONG lZ;
+  BYTE rgbButtons[8];
+} DIMOUSESTATE2;
+
+#define DIMOFS_X        FIELD_OFFSET(DIMOUSESTATE, lX)
+#define DIMOFS_Y        FIELD_OFFSET(DIMOUSESTATE, lY)
+#define DIMOFS_Z        FIELD_OFFSET(DIMOUSESTATE, lZ)
+#define DIMOFS_BUTTON0 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 0)
+#define DIMOFS_BUTTON1 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 1)
+#define DIMOFS_BUTTON2 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 2)
+#define DIMOFS_BUTTON3 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 3)
+#define DIMOFS_BUTTON4 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 4)
+#define DIMOFS_BUTTON5 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 5)
+#define DIMOFS_BUTTON6 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 6)
+#define DIMOFS_BUTTON7 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 7)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern const DIDATAFORMAT c_dfDIMouse;
+extern const DIDATAFORMAT c_dfDIMouse2; /* DX 7 */
+extern const DIDATAFORMAT c_dfDIKeyboard;
+extern const DIDATAFORMAT c_dfDIJoystick;
+extern const DIDATAFORMAT c_dfDIJoystick2;
+#ifdef __cplusplus
+};
+#endif
+
+/*****************************************************************************
+ * IDirectInputA interface
+ */
+#define INTERFACE IDirectInputA
+DECLARE_INTERFACE_(IDirectInputA,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectInputA methods ***/
+    STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEA *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;
+    STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
+    STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE;
+    STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
+    STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE;
+};
+#undef INTERFACE
+
+/*****************************************************************************
+ * IDirectInputW interface
+ */
+#define INTERFACE IDirectInputW
+DECLARE_INTERFACE_(IDirectInputW,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectInputW methods ***/
+    STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEW *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;
+    STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
+    STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE;
+    STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
+    STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectInput_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectInput_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectInput_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectInput methods ***/
+#define IDirectInput_CreateDevice(p,a,b,c)  (p)->lpVtbl->CreateDevice(p,a,b,c)
+#define IDirectInput_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d)
+#define IDirectInput_GetDeviceStatus(p,a)   (p)->lpVtbl->GetDeviceStatus(p,a)
+#define IDirectInput_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
+#define IDirectInput_Initialize(p,a,b)      (p)->lpVtbl->Initialize(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirectInput_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectInput_AddRef(p)             (p)->AddRef()
+#define IDirectInput_Release(p)            (p)->Release()
+/*** IDirectInput methods ***/
+#define IDirectInput_CreateDevice(p,a,b,c)  (p)->CreateDevice(a,b,c)
+#define IDirectInput_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d)
+#define IDirectInput_GetDeviceStatus(p,a)   (p)->GetDeviceStatus(a)
+#define IDirectInput_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
+#define IDirectInput_Initialize(p,a,b)      (p)->Initialize(a,b)
+#endif
+
+/*****************************************************************************
+ * IDirectInput2A interface
+ */
+#define INTERFACE IDirectInput2A
+DECLARE_INTERFACE_(IDirectInput2A,IDirectInputA)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectInputA methods ***/
+    STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEA *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;
+    STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
+    STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE;
+    STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
+    STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE;
+    /*** IDirectInput2A methods ***/
+    STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance) PURE;
+};
+#undef INTERFACE
+
+/*****************************************************************************
+ * IDirectInput2W interface
+ */
+#define INTERFACE IDirectInput2W
+DECLARE_INTERFACE_(IDirectInput2W,IDirectInputW)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectInputW methods ***/
+    STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEW *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;
+    STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
+    STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE;
+    STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
+    STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE;
+    /*** IDirectInput2W methods ***/
+    STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCWSTR pszName, LPGUID pguidInstance) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectInput2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectInput2_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectInput2_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectInput methods ***/
+#define IDirectInput2_CreateDevice(p,a,b,c)  (p)->lpVtbl->CreateDevice(p,a,b,c)
+#define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d)
+#define IDirectInput2_GetDeviceStatus(p,a)   (p)->lpVtbl->GetDeviceStatus(p,a)
+#define IDirectInput2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
+#define IDirectInput2_Initialize(p,a,b)      (p)->lpVtbl->Initialize(p,a,b)
+/*** IDirectInput2 methods ***/
+#define IDirectInput2_FindDevice(p,a,b,c)    (p)->lpVtbl->FindDevice(p,a,b,c)
+#else
+/*** IUnknown methods ***/
+#define IDirectInput2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectInput2_AddRef(p)             (p)->AddRef()
+#define IDirectInput2_Release(p)            (p)->Release()
+/*** IDirectInput methods ***/
+#define IDirectInput2_CreateDevice(p,a,b,c)  (p)->CreateDevice(a,b,c)
+#define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d)
+#define IDirectInput2_GetDeviceStatus(p,a)   (p)->GetDeviceStatus(a)
+#define IDirectInput2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
+#define IDirectInput2_Initialize(p,a,b)      (p)->Initialize(a,b)
+/*** IDirectInput2 methods ***/
+#define IDirectInput2_FindDevice(p,a,b,c)    (p)->FindDevice(a,b,c)
+#endif
+
+/*****************************************************************************
+ * IDirectInput7A interface
+ */
+#define INTERFACE IDirectInput7A
+DECLARE_INTERFACE_(IDirectInput7A,IDirectInput2A)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectInputA methods ***/
+    STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEA *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;
+    STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
+    STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE;
+    STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
+    STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE;
+    /*** IDirectInput2A methods ***/
+    STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance) PURE;
+    /*** IDirectInput7A methods ***/
+    STDMETHOD(CreateDeviceEx)(THIS_ REFGUID rguid, REFIID riid, LPVOID *pvOut, LPUNKNOWN lpUnknownOuter) PURE;
+};
+#undef INTERFACE
+
+/*****************************************************************************
+ * IDirectInput7W interface
+ */
+#define INTERFACE IDirectInput7W
+DECLARE_INTERFACE_(IDirectInput7W,IDirectInput2W)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectInputW methods ***/
+    STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEW *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;
+    STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
+    STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE;
+    STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
+    STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE;
+    /*** IDirectInput2W methods ***/
+    STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCWSTR pszName, LPGUID pguidInstance) PURE;
+    /*** IDirectInput7W methods ***/
+    STDMETHOD(CreateDeviceEx)(THIS_ REFGUID rguid, REFIID riid, LPVOID *pvOut, LPUNKNOWN lpUnknownOuter) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectInput7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectInput7_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectInput7_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectInput methods ***/
+#define IDirectInput7_CreateDevice(p,a,b,c)  (p)->lpVtbl->CreateDevice(p,a,b,c)
+#define IDirectInput7_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d)
+#define IDirectInput7_GetDeviceStatus(p,a)   (p)->lpVtbl->GetDeviceStatus(p,a)
+#define IDirectInput7_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
+#define IDirectInput7_Initialize(p,a,b)      (p)->lpVtbl->Initialize(p,a,b)
+/*** IDirectInput2 methods ***/
+#define IDirectInput7_FindDevice(p,a,b,c)    (p)->lpVtbl->FindDevice(p,a,b,c)
+/*** IDirectInput7 methods ***/
+#define IDirectInput7_CreateDeviceEx(p,a,b,c,d) (p)->lpVtbl->CreateDeviceEx(p,a,b,c,d)
+#else
+/*** IUnknown methods ***/
+#define IDirectInput7_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectInput7_AddRef(p)             (p)->AddRef()
+#define IDirectInput7_Release(p)            (p)->Release()
+/*** IDirectInput methods ***/
+#define IDirectInput7_CreateDevice(p,a,b,c)  (p)->CreateDevice(a,b,c)
+#define IDirectInput7_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d)
+#define IDirectInput7_GetDeviceStatus(p,a)   (p)->GetDeviceStatus(a)
+#define IDirectInput7_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
+#define IDirectInput7_Initialize(p,a,b)      (p)->Initialize(a,b)
+/*** IDirectInput2 methods ***/
+#define IDirectInput7_FindDevice(p,a,b,c)    (p)->FindDevice(a,b,c)
+/*** IDirectInput7 methods ***/
+#define IDirectInput7_CreateDeviceEx(p,a,b,c,d) (p)->CreateDeviceEx(a,b,c,d)
+#endif
+
+
+/*****************************************************************************
+ * IDirectInput8A interface
+ */
+#define INTERFACE IDirectInput8A
+DECLARE_INTERFACE_(IDirectInput8A,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectInput8A methods ***/
+    STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICE8A *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;
+    STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
+    STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE;
+    STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
+    STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE;
+    STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance) PURE;
+    STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCSTR ptszUserName, LPDIACTIONFORMATA lpdiActionFormat, LPDIENUMDEVICESBYSEMANTICSCBA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
+    STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK lpdiCallback, LPDICONFIGUREDEVICESPARAMSA lpdiCDParams, DWORD dwFlags, LPVOID pvRefData) PURE;
+};
+#undef INTERFACE
+
+/*****************************************************************************
+ * IDirectInput8W interface
+ */
+#define INTERFACE IDirectInput8W
+DECLARE_INTERFACE_(IDirectInput8W,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectInput8W methods ***/
+    STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICE8W *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;
+    STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
+    STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE;
+    STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;
+    STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE;
+    STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCWSTR pszName, LPGUID pguidInstance) PURE;
+    STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCWSTR ptszUserName, LPDIACTIONFORMATW lpdiActionFormat, LPDIENUMDEVICESBYSEMANTICSCBW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;
+    STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK lpdiCallback, LPDICONFIGUREDEVICESPARAMSW lpdiCDParams, DWORD dwFlags, LPVOID pvRefData) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectInput8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectInput8_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectInput8_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectInput8 methods ***/
+#define IDirectInput8_CreateDevice(p,a,b,c)       (p)->lpVtbl->CreateDevice(p,a,b,c)
+#define IDirectInput8_EnumDevices(p,a,b,c,d)      (p)->lpVtbl->EnumDevices(p,a,b,c,d)
+#define IDirectInput8_GetDeviceStatus(p,a)        (p)->lpVtbl->GetDeviceStatus(p,a)
+#define IDirectInput8_RunControlPanel(p,a,b)      (p)->lpVtbl->RunControlPanel(p,a,b)
+#define IDirectInput8_Initialize(p,a,b)           (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectInput8_FindDevice(p,a,b,c)         (p)->lpVtbl->FindDevice(p,a,b,c)
+#define IDirectInput8_EnumDevicesBySemantics(p,a,b,c,d,e) (p)->lpVtbl->EnumDevicesBySemantics(p,a,b,c,d,e)
+#define IDirectInput8_ConfigureDevices(p,a,b,c,d) (p)->lpVtbl->ConfigureDevices(p,a,b,c,d)
+#else
+/*** IUnknown methods ***/
+#define IDirectInput8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectInput8_AddRef(p)             (p)->AddRef()
+#define IDirectInput8_Release(p)            (p)->Release()
+/*** IDirectInput8 methods ***/
+#define IDirectInput8_CreateDevice(p,a,b,c)       (p)->CreateDevice(a,b,c)
+#define IDirectInput8_EnumDevices(p,a,b,c,d)      (p)->EnumDevices(a,b,c,d)
+#define IDirectInput8_GetDeviceStatus(p,a)        (p)->GetDeviceStatus(a)
+#define IDirectInput8_RunControlPanel(p,a,b)      (p)->RunControlPanel(a,b)
+#define IDirectInput8_Initialize(p,a,b)           (p)->Initialize(a,b)
+#define IDirectInput8_FindDevice(p,a,b,c)         (p)->FindDevice(a,b,c)
+#define IDirectInput8_EnumDevicesBySemantics(p,a,b,c,d,e) (p)->EnumDevicesBySemantics(a,b,c,d,e)
+#define IDirectInput8_ConfigureDevices(p,a,b,c,d) (p)->ConfigureDevices(a,b,c,d)
+#endif
+
+
+/* Export functions */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+HRESULT WINAPI DirectInput8Create(HINSTANCE,DWORD,REFIID,LPVOID *,LPUNKNOWN);
+
+HRESULT WINAPI DirectInputCreateA(HINSTANCE,DWORD,LPDIRECTINPUTA *,LPUNKNOWN);
+HRESULT WINAPI DirectInputCreateW(HINSTANCE,DWORD,LPDIRECTINPUTW *,LPUNKNOWN);
+#define DirectInputCreate WINELIB_NAME_AW(DirectInputCreate)
+
+HRESULT WINAPI DirectInputCreateEx(HINSTANCE,DWORD,REFIID,LPVOID *,LPUNKNOWN);
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif /* __WINE_DINPUT_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dispdib.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dispdib.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dispdib.h	(revision 16410)
@@ -0,0 +1,44 @@
+/*
+ * DISPDIB.dll
+ *
+ * Copyright 1998 Ove Kaaven
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DISPDIB_H
+#define __WINE_DISPDIB_H
+
+/* error codes */
+#define DISPLAYDIB_NOERROR        0x0000
+#define DISPLAYDIB_NOTSUPPORTED   0x0001
+#define DISPLAYDIB_INVALIDDIB     0x0002
+#define DISPLAYDIB_INVALIDFORMAT  0x0003
+#define DISPLAYDIB_INVALIDTASK    0x0004
+
+/* flags */
+#define DISPLAYDIB_NOPALETTE      0x0010
+#define DISPLAYDIB_NOCENTER       0x0020
+#define DISPLAYDIB_NOWAIT         0x0040
+#define DISPLAYDIB_BEGIN          0x8000
+#define DISPLAYDIB_END            0x4000
+#define DISPLAYDIB_MODE           0x000F /* mask */
+#define DISPLAYDIB_MODE_DEFAULT   0x0000
+#define DISPLAYDIB_MODE_320x200x8 0x0001
+#define DISPLAYDIB_MODE_320x240x8 0x0005
+
+WORD WINAPI DisplayDib( LPBITMAPINFO lpbi, LPSTR lpBits, WORD wFlags );
+
+#endif /* __WINE_DISPDIB_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dispex.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dispex.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dispex.idl	(revision 16410)
@@ -0,0 +1,190 @@
+/*
+ * Copyright 2004 Kevin Koltzau
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef DO_NO_IMPORTS
+import "ocidl.idl";
+import "oleidl.idl";
+import "oaidl.idl";
+import "servprov.idl";
+#endif
+
+cpp_quote("#define fdexNameCaseSensitive       0x00000001L")
+cpp_quote("#define fdexNameEnsure              0x00000002L")
+cpp_quote("#define fdexNameImplicit            0x00000004L")
+cpp_quote("#define fdexNameCaseInsensitive     0x00000008L")
+cpp_quote("#define fdexNameInternal            0x00000010L")
+cpp_quote("#define fdexNameNoDynamicProperties 0x00000020L")
+
+cpp_quote("#define fdexPropCanGet              0x00000001L")
+cpp_quote("#define fdexPropCannotGet           0x00000002L")
+cpp_quote("#define fdexPropCanPut              0x00000004L")
+cpp_quote("#define fdexPropCannotPut           0x00000008L")
+cpp_quote("#define fdexPropCanPutRef           0x00000010L")
+cpp_quote("#define fdexPropCannotPutRef        0x00000020L")
+cpp_quote("#define fdexPropNoSideEffects       0x00000040L")
+cpp_quote("#define fdexPropDynamicType         0x00000080L")
+cpp_quote("#define fdexPropCanCall             0x00000100L")
+cpp_quote("#define fdexPropCannotCall          0x00000200L")
+cpp_quote("#define fdexPropCanConstruct        0x00000400L")
+cpp_quote("#define fdexPropCannotConstruct     0x00000800L")
+cpp_quote("#define fdexPropCanSourceEvents     0x00001000L")
+cpp_quote("#define fdexPropCannotSourceEvents  0x00002000L")
+
+cpp_quote("#define fdexEnumDefault             0x00000001L")
+cpp_quote("#define fdexEnumAll                 0x00000002L")
+
+cpp_quote("#define grfdexPropCanAll \\")
+cpp_quote("       (fdexPropCanGet | fdexPropCanPut | fdexPropCanPutRef | \\")
+cpp_quote("        fdexPropCanCall | fdexPropCanConstruct | fdexPropCanSourceEvents)")
+cpp_quote("#define grfdexPropCannotAll \\")
+cpp_quote("       (fdexPropCannotGet | fdexPropCannotPut | fdexPropCannotPutRef | \\")
+cpp_quote("        fdexPropCannotCall | fdexPropCannotConstruct | fdexPropCannotSourceEvents)")
+cpp_quote("#define grfdexPropExtraAll \\")
+cpp_quote("       (fdexPropNoSideEffects | fdexPropDynamicType)")
+cpp_quote("#define grfdexPropAll \\")
+cpp_quote("       (grfdexPropCanAll | grfdexPropCannotAll | grfdexPropExtraAll)")
+
+cpp_quote("#define DISPATCH_CONSTRUCT 0x4000")
+
+cpp_quote("#define DISPID_THIS (-613)")
+cpp_quote("#define DISPID_STARTENUM DISPID_UNKNOWN")
+
+[
+object,
+uuid(A6EF9860-C720-11d0-9337-00A0C90DCAA9),
+pointer_default(unique)
+]
+interface IDispatchEx : IDispatch
+{
+    HRESULT GetDispID(
+            [in] BSTR bstrName,
+            [in] DWORD grfdex,
+            [out] DISPID *pid);
+
+    [local]
+    HRESULT InvokeEx(
+            [in] DISPID id,
+            [in] LCID lcid,
+            [in] WORD wFlags,
+            [in] DISPPARAMS *pdp,
+            [out] VARIANT *pvarRes,
+            [out] EXCEPINFO *pei,
+            [in, unique] IServiceProvider *pspCaller);
+
+    [call_as(InvokeEx)]
+    HRESULT RemoteInvokeEx(
+            [in] DISPID id,
+            [in] LCID lcid,
+            [in] DWORD dwFlags,
+            [in] DISPPARAMS *pdp,
+            [out] VARIANT *pvarRes,
+            [out] EXCEPINFO *pei,
+            [in, unique] IServiceProvider *pspCaller,
+            [in] UINT cvarRefArg,
+            [in, size_is(cvarRefArg)] UINT *rgiRefArg,
+            [in, out, size_is(cvarRefArg)] VARIANT *rgvarRefArg);
+
+    HRESULT DeleteMemberByName(
+            [in] BSTR bstrName,
+            [in] DWORD grfdex);
+
+    HRESULT DeleteMemberByDispID(
+            [in] DISPID id);
+
+    HRESULT GetMemberProperties(
+            [in] DISPID id,
+            [in] DWORD grfdexFetch,
+            [out] DWORD *pgrfdex);
+
+    HRESULT GetMemberName(
+            [in] DISPID id,
+            [out] BSTR *pbstrName);
+
+    HRESULT GetNextDispID(
+            [in] DWORD grfdex,
+            [in] DISPID id,
+            [out] DISPID *pid);
+
+    HRESULT GetNameSpaceParent([out] IUnknown **ppunk);
+}
+
+[
+object,
+uuid(A6EF9861-C720-11d0-9337-00A0C90DCAA9),
+pointer_default(unique)
+]
+interface IDispError : IUnknown
+{
+    HRESULT QueryErrorInfo(
+            [in] GUID guidErrorType,
+            [out] IDispError **ppde);
+
+    HRESULT GetNext(
+            [out] IDispError **ppde);
+
+    HRESULT GetHresult(
+            [out] HRESULT *phr);
+
+    HRESULT GetSource(
+            [out] BSTR *pbstrSource);
+
+    HRESULT GetHelpInfo(
+            [out] BSTR *pbstrFileName,
+            [out] DWORD *pdwContext);
+
+    HRESULT GetDescription(
+            [out] BSTR *pbstrDescription);
+}
+
+[
+object,
+uuid(A6EF9862-C720-11d0-9337-00A0C90DCAA9),
+pointer_default(unique)
+]
+interface IVariantChangeType : IUnknown
+{
+    HRESULT ChangeType(
+            [in, out, unique] VARIANT *pvarDst,
+            [in, unique] VARIANT *pvarSrc,
+            [in] LCID lcid,
+            [in] VARTYPE vtNew);
+}
+
+
+[
+object,
+uuid(CA04B7E6-0D21-11d1-8CC5-00C04FC2B085),
+pointer_default(unique)
+]
+interface IObjectIdentity : IUnknown
+{
+    HRESULT IsEqualObject( 
+            [in] IUnknown *punk);
+}
+
+[
+    object,
+    uuid(c5598e60-b307-11d1-b27d-006008c3fbfb),
+    pointer_default(unique)
+]
+interface ICanHandleException : IUnknown
+{
+    HRESULT CanHandleException(
+            [in] EXCEPINFO *pExcepInfo,
+            [in] VARIANT *pvar);
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dlgs.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dlgs.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dlgs.h	(revision 16410)
@@ -0,0 +1,213 @@
+/*
+ * Common dialog's dialog control ID numbers
+ *
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DLGS_H
+#define __WINE_DLGS_H
+
+#define ctlFirst    0x0400
+#define ctlLast     0x04ff
+    /* Push buttons */
+#define psh1        0x0400
+#define psh2        0x0401
+#define psh3        0x0402
+#define psh4        0x0403
+#define psh5        0x0404
+#define psh6        0x0405
+#define psh7        0x0406
+#define psh8        0x0407
+#define psh9        0x0408
+#define psh10       0x0409
+#define psh11       0x040a
+#define psh12       0x040b
+#define psh13       0x040c
+#define psh14       0x040d
+#define psh15       0x040e
+#define pshHelp     psh15
+#define psh16       0x040f
+    /* Checkboxes */
+#define chx1        0x0410
+#define chx2        0x0411
+#define chx3        0x0412
+#define chx4        0x0413
+#define chx5        0x0414
+#define chx6        0x0415
+#define chx7        0x0416
+#define chx8        0x0417
+#define chx9        0x0418
+#define chx10       0x0419
+#define chx11       0x041a
+#define chx12       0x041b
+#define chx13       0x041c
+#define chx14       0x041d
+#define chx15       0x041e
+#define chx16       0x041f
+    /* Radio buttons */
+#define rad1        0x0420
+#define rad2        0x0421
+#define rad3        0x0422
+#define rad4        0x0423
+#define rad5        0x0424
+#define rad6        0x0425
+#define rad7        0x0426
+#define rad8        0x0427
+#define rad9        0x0428
+#define rad10       0x0429
+#define rad11       0x042a
+#define rad12       0x042b
+#define rad13       0x042c
+#define rad14       0x042d
+#define rad15       0x042e
+#define rad16       0x042f
+    /* Groups, frames, rectangles, and icons */
+#define grp1        0x0430
+#define grp2        0x0431
+#define grp3        0x0432
+#define grp4        0x0433
+#define frm1        0x0434
+#define frm2        0x0435
+#define frm3        0x0436
+#define frm4        0x0437
+#define rct1        0x0438
+#define rct2        0x0439
+#define rct3        0x043a
+#define rct4        0x043b
+#define ico1        0x043c
+#define ico2        0x043d
+#define ico3        0x043e
+#define ico4        0x043f
+    /* Static text */
+#define stc1        0x0440
+#define stc2        0x0441
+#define stc3        0x0442
+#define stc4        0x0443
+#define stc5        0x0444
+#define stc6        0x0445
+#define stc7        0x0446
+#define stc8        0x0447
+#define stc9        0x0448
+#define stc10       0x0449
+#define stc11       0x044a
+#define stc12       0x044b
+#define stc13       0x044c
+#define stc14       0x044d
+#define stc15       0x044e
+#define stc16       0x044f
+#define stc17       0x0450
+#define stc18       0x0451
+#define stc19       0x0452
+#define stc20       0x0453
+#define stc21       0x0454
+#define stc22       0x0455
+#define stc23       0x0456
+#define stc24       0x0457
+#define stc25       0x0458
+#define stc26       0x0459
+#define stc27       0x045a
+#define stc28       0x045b
+#define stc29       0x045c
+#define stc30       0x045d
+#define stc31       0x045e
+#define stc32       0x045f
+    /* Listboxes */
+#define lst1        0x0460
+#define lst2        0x0461
+#define lst3        0x0462
+#define lst4        0x0463
+#define lst5        0x0464
+#define lst6        0x0465
+#define lst7        0x0466
+#define lst8        0x0467
+#define lst9        0x0468
+#define lst10       0x0469
+#define lst11       0x046a
+#define lst12       0x046b
+#define lst13       0x046c
+#define lst14       0x046d
+#define lst15       0x046e
+#define lst16       0x046f
+    /* Combo boxes */
+#define cmb1        0x0470
+#define cmb2        0x0471
+#define cmb3        0x0472
+#define cmb4        0x0473
+#define cmb5        0x0474
+#define cmb6        0x0475
+#define cmb7        0x0476
+#define cmb8        0x0477
+#define cmb9        0x0478
+#define cmb10       0x0479
+#define cmb11       0x047a
+#define cmb12       0x047b
+#define cmb13       0x047c
+#define cmb14       0x047d
+#define cmb15       0x047e
+#define cmb16       0x047f
+    /* Edit controls */
+#define edt1        0x0480
+#define edt2        0x0481
+#define edt3        0x0482
+#define edt4        0x0483
+#define edt5        0x0484
+#define edt6        0x0485
+#define edt7        0x0486
+#define edt8        0x0487
+#define edt9        0x0488
+#define edt10       0x0489
+#define edt11       0x048a
+#define edt12       0x048b
+#define edt13       0x048c
+#define edt14       0x048d
+#define edt15       0x048e
+#define edt16       0x048f
+    /* Scroll bars */
+#define scr1        0x0490
+#define scr2        0x0491
+#define scr3        0x0492
+#define scr4        0x0493
+#define scr5        0x0494
+#define scr6        0x0495
+#define scr7        0x0496
+#define scr8        0x0497
+
+/*
+ *  Controls
+ */
+#define ctl1	    0x04A0
+
+/* These dialog resource ordinals really start at 0x0600, but the
+ * RC Compiler can't handle hex for resource IDs, hence the decimal.
+ */
+#define FILEOPENORD		1536
+#define MULTIFILEOPENORD	1537
+#define PRINTDLGORD		1538
+#define PRNSETUPDLGORD		1539
+#define FINDDLGORD		1540
+#define REPLACEDLGORD		1541
+#define FONTDLGORD		1542
+#define FORMATDLGORD31		1543
+#define FORMATDLGORD30		1544
+#define PAGESETUPDLGORD		1546
+#define NEWFILEOPENORD		1547
+#define PRINTDLGEXORD		1549
+#define PAGESETUPDLGORDMOTIF	1550
+#define COLORMGMTDLGORD		1551
+#define NEWFILEOPENV2ORD	1552
+
+#endif  /* #ifdef __WINE_DLGS_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dls1.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dls1.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dls1.h	(revision 16410)
@@ -0,0 +1,202 @@
+/* Defines and Structures for Instrument Collection Form RIFF DLS1
+ *
+ * Copyright (C) 2003-2004 Rok Mandeljc
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+ 
+#ifndef __WINE_INCLUDE_DLS1_H
+#define __WINE_INCLUDE_DLS1_H
+
+/*****************************************************************************
+ * FOURCCs
+ */
+#define FOURCC_DLS   mmioFOURCC('D','L','S',' ')
+#define FOURCC_DLID  mmioFOURCC('d','l','i','d')
+#define FOURCC_COLH  mmioFOURCC('c','o','l','h')
+#define FOURCC_WVPL  mmioFOURCC('w','v','p','l')
+#define FOURCC_PTBL  mmioFOURCC('p','t','b','l')
+#define FOURCC_PATH  mmioFOURCC('p','a','t','h')
+#define FOURCC_wave  mmioFOURCC('w','a','v','e')
+#define FOURCC_LINS  mmioFOURCC('l','i','n','s')
+#define FOURCC_INS   mmioFOURCC('i','n','s',' ')
+#define FOURCC_INSH  mmioFOURCC('i','n','s','h')
+#define FOURCC_LRGN  mmioFOURCC('l','r','g','n')
+#define FOURCC_RGN   mmioFOURCC('r','g','n',' ')
+#define FOURCC_RGNH  mmioFOURCC('r','g','n','h')
+#define FOURCC_LART  mmioFOURCC('l','a','r','t')
+#define FOURCC_ART1  mmioFOURCC('a','r','t','1')
+#define FOURCC_WLNK  mmioFOURCC('w','l','n','k')
+#define FOURCC_WSMP  mmioFOURCC('w','s','m','p')
+#define FOURCC_VERS  mmioFOURCC('v','e','r','s')
+
+/*****************************************************************************
+ * Flags
+ */
+
+#define CONN_DST_NONE             0x000
+#define CONN_DST_ATTENUATION      0x001
+#define CONN_DST_PITCH            0x003
+#define CONN_DST_PAN              0x004
+
+#define CONN_DST_LFO_FREQUENCY    0x104
+#define CONN_DST_LFO_STARTDELAY   0x105
+
+#define CONN_DST_EG1_ATTACKTIME   0x206
+#define CONN_DST_EG1_DECAYTIME    0x207
+#define CONN_DST_EG1_RELEASETIME  0x209
+#define CONN_DST_EG1_SUSTAINLEVEL 0x20A
+
+#define CONN_DST_EG2_ATTACKTIME   0x30A
+#define CONN_DST_EG2_DECAYTIME    0x30B
+#define CONN_DST_EG2_RELEASETIME  0x30D
+#define CONN_DST_EG2_SUSTAINLEVEL 0x30E
+
+#define CONN_SRC_NONE             0x000
+#define CONN_SRC_LFO              0x001
+#define CONN_SRC_KEYONVELOCITY    0x002
+#define CONN_SRC_KEYNUMBER        0x003
+#define CONN_SRC_EG1              0x004
+#define CONN_SRC_EG2              0x005
+#define CONN_SRC_PITCHWHEEL       0x006
+
+#define CONN_SRC_CC1              0x081
+#define CONN_SRC_CC7              0x087
+#define CONN_SRC_CC10             0x08A
+#define CONN_SRC_CC11             0x08B
+
+#define CONN_TRN_NONE             0x000
+#define CONN_TRN_CONCAVE          0x001
+
+#define F_INSTRUMENT_DRUMS 0x80000000
+
+#define F_RGN_OPTION_SELFNONEXCLUSIVE 0x1
+
+#define F_WAVELINK_PHASE_MASTER 0x1
+
+#define F_WSMP_NO_TRUNCATION  0x1
+#define F_WSMP_NO_COMPRESSION 0x2
+
+#define POOL_CUE_NULL 0xFFFFFFFF
+
+#define WAVELINK_CHANNEL_LEFT  0x1
+#define WAVELINK_CHANNEL_RIGHT 0x2
+
+#define WLOOP_TYPE_FORWARD 0x0
+
+/*****************************************************************************
+ * Structures
+ */
+/* typedef definitions */
+typedef struct _DLSID          DLSID,          *LPDLSID;
+typedef struct _DLSVERSION     DLSVERSION,     *LPDLSVERSION;
+typedef struct _CONNECTION     CONNECTION,     *LPCONNECTION;
+typedef struct _CONNECTIONLIST CONNECTIONLIST, *LPCONNECTIONLIST;
+typedef struct _RGNRANGE       RGNRANGE,       *LPRGNRANGE;
+typedef struct _MIDILOCALE     MIDILOCALE,     *LPMIDILOCALE;
+typedef struct _RGNHEADER      RGNHEADER,      *LPRGNHEADER;
+typedef struct _INSTHEADER     INSTHEADER,     *LPINSTHEADER;
+typedef struct _DLSHEADER      DLSHEADER,      *LPDLSHEADER;
+typedef struct _WAVELINK       WAVELINK,       *LPWAVELINK;
+typedef struct _POOLCUE        POOLCUE,        *LPPOOLCUE;
+typedef struct _POOLTABLE      POOLTABLE,      *LPPOOLTABLE;
+typedef struct _rwsmp          WSMPL,          *LPWSMPL;
+typedef struct _rloop          WLOOP,          *LPWLOOP;
+
+/* actual structures */
+struct _DLSID {
+	ULONG  ulData1;
+	USHORT usData2;
+	USHORT usData3;
+	BYTE   abData4[8];
+};
+
+struct _DLSVERSION {
+	DWORD dwVersionMS;
+	DWORD dwVersionLS;
+};
+
+struct _CONNECTION {
+	USHORT usSource;
+	USHORT usControl;
+	USHORT usDestination;
+	USHORT usTransform;
+	LONG   lScale;
+};
+
+struct _CONNECTIONLIST {
+	ULONG cbSize;
+	ULONG cConnections;
+};
+
+struct _RGNRANGE {
+	USHORT usLow;
+	USHORT usHigh;
+};
+
+struct _MIDILOCALE {
+	ULONG ulBank;
+	ULONG ulInstrument;
+};
+
+struct _RGNHEADER {
+	RGNRANGE RangeKey;
+	RGNRANGE RangeVelocity;
+	USHORT   fusOptions;
+	USHORT   usKeyGroup;
+};
+
+struct _INSTHEADER {
+	ULONG      cRegions;
+	MIDILOCALE Locale;
+};
+
+struct _DLSHEADER {
+	ULONG cInstruments;
+};
+
+struct _WAVELINK {
+	USHORT fusOptions;
+	USHORT usPhaseGroup;
+	ULONG  ulChannel;
+	ULONG  ulTableIndex;
+};
+
+struct _POOLCUE { 
+	ULONG ulOffset;
+};
+
+struct _POOLTABLE {
+	ULONG cbSize;
+	ULONG cCues;
+};
+
+struct _rwsmp {
+	ULONG  cbSize;
+	USHORT usUnityNote;
+	SHORT  sFineTune;
+	LONG   lAttenuation;
+	ULONG  fulOptions;
+	ULONG  cSampleLoops;
+};
+
+struct _rloop {
+	ULONG cbSize;
+	ULONG ulType;
+	ULONG ulStart;
+	ULONG ulLength;
+};
+
+#endif /* __WINE_INCLUDE_DLS1_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dls2.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dls2.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dls2.h	(revision 16410)
@@ -0,0 +1,107 @@
+/* Defines and Structures for Instrument Collection Form RIFF DLS2
+ *
+ * Copyright (C) 2003-2004 Rok Mandeljc
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_INCLUDE_DLS2_H
+#define __WINE_INCLUDE_DLS2_H
+
+/*****************************************************************************
+ * DLSIDs - property set
+ */ 
+DEFINE_GUID(DLSID_GMInHardware,       0x178f2f24,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(DLSID_GSInHardware,       0x178f2f25,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(DLSID_ManufacturersID,    0xb03e1181,0x8095,0x11d2,0xa1,0xef,0x00,0x60,0x08,0x33,0xdb,0xd8);
+DEFINE_GUID(DLSID_ProductID,          0xb03e1182,0x8095,0x11d2,0xa1,0xef,0x00,0x60,0x08,0x33,0xdb,0xd8);
+DEFINE_GUID(DLSID_SampleMemorySize,   0x178f2f28,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(DLSID_SupportsDLS1,       0x178f2f27,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(DLSID_SupportsDLS2,       0xf14599e5,0x4689,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
+DEFINE_GUID(DLSID_SamplePlaybackRate, 0x2a91f713,0xa4bf,0x11d2,0xbb,0xdf,0x00,0x60,0x08,0x33,0xdb,0xd8);
+DEFINE_GUID(DLSID_XGInHardware,       0x178f2f26,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
+
+/*****************************************************************************
+ * FOURCCs
+ */ 
+#define FOURCC_RGN2  mmioFOURCC('r','g','n','2')
+#define FOURCC_LAR2  mmioFOURCC('l','a','r','2')
+#define FOURCC_ART2  mmioFOURCC('a','r','t','2')
+#define FOURCC_CDL   mmioFOURCC('c','d','l',' ')
+#define FOURCC_DLID  mmioFOURCC('d','l','i','d')
+
+/*****************************************************************************
+ * Flags
+ */
+#define CONN_DST_GAIN             0x001
+#define CONN_DST_KEYNUMBER        0x005
+
+#define CONN_DST_LEFT             0x010
+#define CONN_DST_RIGHT            0x011
+#define CONN_DST_CENTER           0x012
+#define CONN_DST_LEFTREAR         0x013
+#define CONN_DST_RIGHTREAR        0x014
+#define CONN_DST_LFE_CHANNEL      0x015
+#define CONN_DST_CHORUS           0x080
+#define CONN_DST_REVERB           0x081
+
+#define CONN_DST_VIB_FREQUENCY    0x114
+#define CONN_DST_VIB_STARTDELAY   0x115	
+
+#define CONN_DST_EG1_DELAYTIME    0x20B
+#define CONN_DST_EG1_HOLDTIME     0x20C
+#define CONN_DST_EG1_SHUTDOWNTIME 0x20D
+
+#define CONN_DST_EG2_DELAYTIME    0x30F
+#define CONN_DST_EG2_HOLDTIME     0x310
+
+#define CONN_DST_FILTER_CUTOFF    0x500
+#define CONN_DST_FILTER_Q         0x501
+
+#define CONN_SRC_POLYPRESSURE     0x007
+#define CONN_SRC_CHANNELPRESSURE  0x008
+#define CONN_SRC_VIBRATO          0x009
+#define CONN_SRC_MONOPRESSURE     0x00A
+
+#define CONN_SRC_CC91             0x0DB
+#define CONN_SRC_CC93             0x0DD
+
+#define CONN_TRN_CONVEX           0x002
+#define CONN_TRN_SWITCH           0x003
+
+#define DLS_CDL_AND            0x01
+#define DLS_CDL_OR             0x02
+#define DLS_CDL_XOR            0x03
+#define DLS_CDL_ADD            0x04
+#define DLS_CDL_SUBTRACT       0x05
+#define DLS_CDL_MULTIPLY       0x06
+#define DLS_CDL_DIVIDE         0x07
+#define DLS_CDL_LOGICAL_AND    0x08
+#define DLS_CDL_LOGICAL_OR     0x09
+#define DLS_CDL_LT             0x0A
+#define DLS_CDL_LE             0x0B
+#define DLS_CDL_GT             0x0C
+#define DLS_CDL_GE             0x0D
+#define DLS_CDL_EQ             0x0E
+#define DLS_CDL_NOT            0x0F
+#define DLS_CDL_CONST          0x10
+#define DLS_CDL_QUERY          0x11
+#define DLS_CDL_QUERYSUPPORTED 0x12
+
+#define F_WAVELINK_MULTICHANNEL 0x2
+
+#define WLOOP_TYPE_RELEASE 0x1
+
+#endif	/* __WINE_INCLUDE_DLS2_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmdls.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmdls.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmdls.h	(revision 16410)
@@ -0,0 +1,209 @@
+/* DirectMusic DLS Download Definitions
+ *
+ *  Copyright (C) 2003-2004 Rok Mandeljc
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+ 
+#ifndef __WINE_DMUSIC_DLS_H
+#define __WINE_DMUSIC_DLS_H
+
+#include <dls1.h>
+
+/*****************************************************************************
+ * Typedef definitions
+ */
+typedef long GCENT;
+typedef long PCENT;
+typedef long PERCENT;
+typedef long TCENT;
+
+typedef LONGLONG REFERENCE_TIME, *LPREFERENCE_TIME;
+
+/*****************************************************************************
+ * FOURCC definition
+ */
+#ifndef mmioFOURCC
+typedef DWORD FOURCC;
+#define mmioFOURCC(ch0,ch1,ch2,ch3) \
+	((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \
+	((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
+#endif
+
+/*****************************************************************************
+ * Flags
+ */
+#define DMUS_DEFAULT_SIZE_OFFSETTABLE 0x1
+
+#define DMUS_DOWNLOADINFO_INSTRUMENT       0x1
+#define DMUS_DOWNLOADINFO_WAVE             0x2
+#define DMUS_DOWNLOADINFO_INSTRUMENT2      0x3
+#define DMUS_DOWNLOADINFO_WAVEARTICULATION 0x4
+#define DMUS_DOWNLOADINFO_STREAMINGWAVE    0x5
+#define DMUS_DOWNLOADINFO_ONESHOTWAVE      0x6
+
+#define DMUS_INSTRUMENT_GM_INSTRUMENT 0x1
+
+#define DMUS_MIN_DATA_SIZE 0x4       
+
+/*****************************************************************************
+ * Structures
+ */
+/* typedef definitions */
+typedef struct _DMUS_DOWNLOADINFO   DMUS_DOWNLOADINFO,   *LPDMUS_DOWNLOADINFO;
+typedef struct _DMUS_OFFSETTABLE    DMUS_OFFSETTABLE,    *LPDMUS_OFFSETTABLE;
+typedef struct _DMUS_INSTRUMENT     DMUS_INSTRUMENT,     *LPDMUS_INSTRUMENT;
+typedef struct _DMUS_REGION         DMUS_REGION,         *LPDMUS_REGION;
+typedef struct _DMUS_LFOPARAMS      DMUS_LFOPARAMS,      *LPDMUS_LFOPARAMS;
+typedef struct _DMUS_VEGPARAMS      DMUS_VEGPARAMS,      *LPDMUS_VEGPARAMS;
+typedef struct _DMUS_PEGPARAMS      DMUS_PEGPARAMS,      *LPDMUS_PEGPARAMS;
+typedef struct _DMUS_MSCPARAMS      DMUS_MSCPARAMS,      *LPDMUS_MSCPARAMS;
+typedef struct _DMUS_ARTICPARAMS    DMUS_ARTICPARAMS,    *LPDMUS_ARTICPARAMS;
+typedef struct _DMUS_ARTICULATION   DMUS_ARTICULATION,   *LPDMUS_ARTICULATION;
+typedef struct _DMUS_ARTICULATION2  DMUS_ARTICULATION2,  *LPDMUS_ARTICULATION2;
+typedef struct _DMUS_EXTENSIONCHUNK DMUS_EXTENSIONCHUNK, *LPDMUS_EXTENSIONCHUNK;
+typedef struct _DMUS_COPYRIGHT      DMUS_COPYRIGHT,      *LPDMUS_COPYRIGHT;
+typedef struct _DMUS_WAVEDATA       DMUS_WAVEDATA,       *LPDMUS_WAVEDATA;
+typedef struct _DMUS_WAVE           DMUS_WAVE,           *LPDMUS_WAVE;
+typedef struct _DMUS_NOTERANGE      DMUS_NOTERANGE,      *LPDMUS_NOTERANGE;
+typedef struct _DMUS_WAVEARTDL      DMUS_WAVEARTDL,      *LPDMUS_WAVEARTDL;
+typedef struct _DMUS_WAVEDL         DMUS_WAVEDL,         *LPDMUS_WAVEDL;
+
+/* actual structures */
+struct _DMUS_DOWNLOADINFO {
+	DWORD dwDLType;
+	DWORD dwDLId;
+	DWORD dwNumOffsetTableEntries;
+	DWORD cbSize;
+};
+
+struct _DMUS_OFFSETTABLE {
+	ULONG ulOffsetTable[DMUS_DEFAULT_SIZE_OFFSETTABLE];
+};
+
+struct _DMUS_INSTRUMENT {
+	ULONG ulPatch;
+	ULONG ulFirstRegionIdx;             
+	ULONG ulGlobalArtIdx;
+	ULONG ulFirstExtCkIdx;
+	ULONG ulCopyrightIdx;
+	ULONG ulFlags;                        
+};
+
+struct _DMUS_REGION {
+	RGNRANGE RangeKey;
+	RGNRANGE RangeVelocity;
+	USHORT   fusOptions;
+	USHORT   usKeyGroup;
+	ULONG    ulRegionArtIdx;
+	ULONG    ulNextRegionIdx;
+	ULONG    ulFirstExtCkIdx;
+	WAVELINK WaveLink;
+	WSMPL    WSMP;
+	WLOOP    WLOOP[1];
+};
+
+struct _DMUS_LFOPARAMS {
+	PCENT pcFrequency;
+	TCENT tcDelay;
+	GCENT gcVolumeScale;
+	PCENT pcPitchScale;
+	GCENT gcMWToVolume;
+	PCENT pcMWToPitch;
+};
+
+struct _DMUS_VEGPARAMS {
+	TCENT   tcAttack;
+	TCENT   tcDecay;
+	PERCENT ptSustain;
+	TCENT   tcRelease;
+	TCENT   tcVel2Attack;
+	TCENT   tcKey2Decay;
+};
+
+struct _DMUS_PEGPARAMS {
+	TCENT   tcAttack;
+	TCENT   tcDecay;
+	PERCENT ptSustain;
+	TCENT   tcRelease;
+	TCENT   tcVel2Attack;
+	TCENT   tcKey2Decay;
+	PCENT   pcRange;
+};
+
+struct _DMUS_MSCPARAMS {
+	PERCENT ptDefaultPan;
+};
+
+struct _DMUS_ARTICPARAMS {
+	DMUS_LFOPARAMS LFO;
+	DMUS_VEGPARAMS VolEG;
+	DMUS_PEGPARAMS PitchEG;
+	DMUS_MSCPARAMS Misc;
+};
+
+struct _DMUS_ARTICULATION {
+	ULONG ulArt1Idx;
+	ULONG ulFirstExtCkIdx;
+};
+
+struct _DMUS_ARTICULATION2 {
+	ULONG ulArtIdx;
+	ULONG ulFirstExtCkIdx;
+	ULONG ulNextArtIdx;
+};
+
+struct _DMUS_EXTENSIONCHUNK {
+	ULONG  cbSize;
+	ULONG  ulNextExtCkIdx;
+	FOURCC ExtCkID;                                      
+	BYTE   byExtCk[DMUS_MIN_DATA_SIZE];
+};
+
+struct _DMUS_COPYRIGHT {
+	ULONG cbSize;
+	BYTE  byCopyright[DMUS_MIN_DATA_SIZE];
+};
+
+struct _DMUS_WAVEDATA {
+	ULONG cbSize;
+	BYTE  byData[DMUS_MIN_DATA_SIZE]; 
+};
+
+struct _DMUS_WAVE {
+	ULONG        ulFirstExtCkIdx;
+	ULONG        ulCopyrightIdx;
+	ULONG        ulWaveDataIdx;
+	WAVEFORMATEX WaveformatEx;
+};
+
+struct _DMUS_NOTERANGE {
+	DWORD dwLowNote;
+	DWORD dwHighNote;
+};
+
+struct _DMUS_WAVEARTDL {
+	ULONG  ulDownloadIdIdx;
+	ULONG  ulBus;
+	ULONG  ulBuffers;
+	ULONG  ulMasterDLId;
+	USHORT usOptions;
+};
+
+struct _DMUS_WAVEDL {
+	ULONG cbWaveData;
+};
+
+#endif /* __WINE_DMUSIC_DLS_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmerror.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmerror.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmerror.h	(revision 16410)
@@ -0,0 +1,164 @@
+/* DirectMusic Error Codes
+ *
+ * Copyright (C) 2003-2004 Rok Mandeljc
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DMUSIC_ERROR_H
+#define __WINE_DMUSIC_ERROR_H
+
+/*****************************************************************************
+ * Error code handling
+ */
+#define FACILITY_DIRECTMUSIC 0x878
+#define DMUS_ERRBASE 0x1000
+
+#ifndef MAKE_HRESULT
+#define MAKE_HRESULT(sev,fac,code) \
+    ((HRESULT) (((unsigned long)(sev)<<31) | ((unsigned long)(fac)<<16) | ((unsigned long)(code))) )
+#endif
+
+#define MAKE_DMHRESULTSUCCESS(code)  MAKE_HRESULT(0, FACILITY_DIRECTMUSIC, (DMUS_ERRBASE + (code)))
+#define MAKE_DMHRESULTERROR(code)    MAKE_HRESULT(1, FACILITY_DIRECTMUSIC, (DMUS_ERRBASE + (code)))
+
+/*****************************************************************************
+ * Error codes
+ */
+
+#define DMUS_S_PARTIALLOAD                    MAKE_DMHRESULTSUCCESS(0x091)
+#define DMUS_S_PARTIALDOWNLOAD                MAKE_DMHRESULTSUCCESS(0x092)
+#define DMUS_S_REQUEUE                        MAKE_DMHRESULTSUCCESS(0x200)
+#define DMUS_S_FREE                           MAKE_DMHRESULTSUCCESS(0x201)
+#define DMUS_S_END                            MAKE_DMHRESULTSUCCESS(0x202)
+#define DMUS_S_STRING_TRUNCATED               MAKE_DMHRESULTSUCCESS(0x210)
+#define DMUS_S_LAST_TOOL                      MAKE_DMHRESULTSUCCESS(0x211)
+#define DMUS_S_OVER_CHORD                     MAKE_DMHRESULTSUCCESS(0x212)
+#define DMUS_S_UP_OCTAVE                      MAKE_DMHRESULTSUCCESS(0x213)
+#define DMUS_S_DOWN_OCTAVE                    MAKE_DMHRESULTSUCCESS(0x214)
+#define DMUS_S_NOBUFFERCONTROL                MAKE_DMHRESULTSUCCESS(0x215)
+#define DMUS_S_GARBAGE_COLLECTED              MAKE_DMHRESULTSUCCESS(0x216)
+
+#define DMUS_E_DRIVER_FAILED                  MAKE_DMHRESULTERROR(0x0101)
+#define DMUS_E_PORTS_OPEN                     MAKE_DMHRESULTERROR(0x0102)
+#define DMUS_E_DEVICE_IN_USE                  MAKE_DMHRESULTERROR(0x0103)
+#define DMUS_E_INSUFFICIENTBUFFER             MAKE_DMHRESULTERROR(0x0104)
+#define DMUS_E_BUFFERNOTSET                   MAKE_DMHRESULTERROR(0x0105)
+#define DMUS_E_BUFFERNOTAVAILABLE             MAKE_DMHRESULTERROR(0x0106)
+#define DMUS_E_NOTADLSCOL                     MAKE_DMHRESULTERROR(0x0108)
+#define DMUS_E_INVALIDOFFSET                  MAKE_DMHRESULTERROR(0x0109)
+#define DMUS_E_ALREADY_LOADED                 MAKE_DMHRESULTERROR(0x0111)
+#define DMUS_E_INVALIDPOS                     MAKE_DMHRESULTERROR(0x0113)
+#define DMUS_E_INVALIDPATCH                   MAKE_DMHRESULTERROR(0x0114)
+#define DMUS_E_CANNOTSEEK                     MAKE_DMHRESULTERROR(0x0115)
+#define DMUS_E_CANNOTWRITE                    MAKE_DMHRESULTERROR(0x0116)
+#define DMUS_E_CHUNKNOTFOUND                  MAKE_DMHRESULTERROR(0x0117)
+#define DMUS_E_INVALID_DOWNLOADID             MAKE_DMHRESULTERROR(0x0119)
+#define DMUS_E_NOT_DOWNLOADED_TO_PORT         MAKE_DMHRESULTERROR(0x0120)
+#define DMUS_E_ALREADY_DOWNLOADED             MAKE_DMHRESULTERROR(0x0121)
+#define DMUS_E_UNKNOWN_PROPERTY               MAKE_DMHRESULTERROR(0x0122)
+#define DMUS_E_SET_UNSUPPORTED                MAKE_DMHRESULTERROR(0x0123)
+#define DMUS_E_GET_UNSUPPORTED                MAKE_DMHRESULTERROR(0x0124)
+#define DMUS_E_NOTMONO                        MAKE_DMHRESULTERROR(0x0125)
+#define DMUS_E_BADARTICULATION                MAKE_DMHRESULTERROR(0x0126)
+#define DMUS_E_BADINSTRUMENT                  MAKE_DMHRESULTERROR(0x0127)
+#define DMUS_E_BADWAVELINK                    MAKE_DMHRESULTERROR(0x0128)
+#define DMUS_E_NOARTICULATION                 MAKE_DMHRESULTERROR(0x0129)
+#define DMUS_E_NOTPCM                         MAKE_DMHRESULTERROR(0x012A)
+#define DMUS_E_BADWAVE                        MAKE_DMHRESULTERROR(0x012B)
+#define DMUS_E_BADOFFSETTABLE                 MAKE_DMHRESULTERROR(0x012C)
+#define DMUS_E_UNKNOWNDOWNLOAD                MAKE_DMHRESULTERROR(0x012D)
+#define DMUS_E_NOSYNTHSINK                    MAKE_DMHRESULTERROR(0x012E)
+#define DMUS_E_ALREADYOPEN                    MAKE_DMHRESULTERROR(0x012F)
+#define DMUS_E_ALREADYCLOSED                  MAKE_DMHRESULTERROR(0x0130)
+#define DMUS_E_SYNTHNOTCONFIGURED             MAKE_DMHRESULTERROR(0x0131)
+#define DMUS_E_SYNTHACTIVE                    MAKE_DMHRESULTERROR(0x0132)
+#define DMUS_E_CANNOTREAD                     MAKE_DMHRESULTERROR(0x0133)
+#define DMUS_E_DMUSIC_RELEASED                MAKE_DMHRESULTERROR(0x0134)
+#define DMUS_E_BUFFER_EMPTY                   MAKE_DMHRESULTERROR(0x0135)
+#define DMUS_E_BUFFER_FULL                    MAKE_DMHRESULTERROR(0x0136)
+#define DMUS_E_PORT_NOT_CAPTURE               MAKE_DMHRESULTERROR(0x0137)
+#define DMUS_E_PORT_NOT_RENDER                MAKE_DMHRESULTERROR(0x0138)
+#define DMUS_E_DSOUND_NOT_SET                 MAKE_DMHRESULTERROR(0x0139)
+#define DMUS_E_ALREADY_ACTIVATED              MAKE_DMHRESULTERROR(0x013A)
+#define DMUS_E_INVALIDBUFFER                  MAKE_DMHRESULTERROR(0x013B)
+#define DMUS_E_WAVEFORMATNOTSUPPORTED         MAKE_DMHRESULTERROR(0x013C)
+#define DMUS_E_SYNTHINACTIVE                  MAKE_DMHRESULTERROR(0x013D)
+#define DMUS_E_DSOUND_ALREADY_SET             MAKE_DMHRESULTERROR(0x013E)
+#define DMUS_E_INVALID_EVENT                  MAKE_DMHRESULTERROR(0x013F)
+#define DMUS_E_UNSUPPORTED_STREAM             MAKE_DMHRESULTERROR(0x0150)
+#define DMUS_E_ALREADY_INITED                 MAKE_DMHRESULTERROR(0x0151)
+#define DMUS_E_INVALID_BAND                   MAKE_DMHRESULTERROR(0x0152)
+#define DMUS_E_TRACK_HDR_NOT_FIRST_CK         MAKE_DMHRESULTERROR(0x0155)
+#define DMUS_E_TOOL_HDR_NOT_FIRST_CK          MAKE_DMHRESULTERROR(0x0156)
+#define DMUS_E_INVALID_TRACK_HDR              MAKE_DMHRESULTERROR(0x0157)
+#define DMUS_E_INVALID_TOOL_HDR               MAKE_DMHRESULTERROR(0x0158)
+#define DMUS_E_ALL_TOOLS_FAILED               MAKE_DMHRESULTERROR(0x0159)
+#define DMUS_E_ALL_TRACKS_FAILED              MAKE_DMHRESULTERROR(0x0160)
+#define DMUS_E_NOT_FOUND                      MAKE_DMHRESULTERROR(0x0161)
+#define DMUS_E_NOT_INIT                       MAKE_DMHRESULTERROR(0x0162)
+#define DMUS_E_TYPE_DISABLED                  MAKE_DMHRESULTERROR(0x0163)
+#define DMUS_E_TYPE_UNSUPPORTED               MAKE_DMHRESULTERROR(0x0164)
+#define DMUS_E_TIME_PAST                      MAKE_DMHRESULTERROR(0x0165)
+#define DMUS_E_TRACK_NOT_FOUND                MAKE_DMHRESULTERROR(0x0166)
+#define DMUS_E_TRACK_NO_CLOCKTIME_SUPPORT     MAKE_DMHRESULTERROR(0x0167)
+#define DMUS_E_NO_MASTER_CLOCK                MAKE_DMHRESULTERROR(0x0170)
+#define DMUS_E_LOADER_NOCLASSID               MAKE_DMHRESULTERROR(0x0180)
+#define DMUS_E_LOADER_BADPATH                 MAKE_DMHRESULTERROR(0x0181)
+#define DMUS_E_LOADER_FAILEDOPEN              MAKE_DMHRESULTERROR(0x0182)
+#define DMUS_E_LOADER_FORMATNOTSUPPORTED      MAKE_DMHRESULTERROR(0x0183)
+#define DMUS_E_LOADER_FAILEDCREATE            MAKE_DMHRESULTERROR(0x0184)
+#define DMUS_E_LOADER_OBJECTNOTFOUND          MAKE_DMHRESULTERROR(0x0185)
+#define DMUS_E_LOADER_NOFILENAME              MAKE_DMHRESULTERROR(0x0186)
+#define DMUS_E_INVALIDFILE                    MAKE_DMHRESULTERROR(0x0200)
+#define DMUS_E_ALREADY_EXISTS                 MAKE_DMHRESULTERROR(0x0201)
+#define DMUS_E_OUT_OF_RANGE                   MAKE_DMHRESULTERROR(0x0202)
+#define DMUS_E_SEGMENT_INIT_FAILED            MAKE_DMHRESULTERROR(0x0203)
+#define DMUS_E_ALREADY_SENT                   MAKE_DMHRESULTERROR(0x0204)
+#define DMUS_E_CANNOT_FREE                    MAKE_DMHRESULTERROR(0x0205)
+#define DMUS_E_CANNOT_OPEN_PORT               MAKE_DMHRESULTERROR(0x0206)
+#define DMUS_E_CANNOT_CONVERT                 MAKE_DMHRESULTERROR(0x0207)
+#define DMUS_E_DESCEND_CHUNK_FAIL             MAKE_DMHRESULTERROR(0x0210)
+#define DMUS_E_NOT_LOADED                     MAKE_DMHRESULTERROR(0x0211)
+#define DMUS_E_SCRIPT_LANGUAGE_INCOMPATIBLE   MAKE_DMHRESULTERROR(0x0213)
+#define DMUS_E_SCRIPT_UNSUPPORTED_VARTYPE     MAKE_DMHRESULTERROR(0x0214)
+#define DMUS_E_SCRIPT_ERROR_IN_SCRIPT         MAKE_DMHRESULTERROR(0x0215)
+#define DMUS_E_SCRIPT_CANTLOAD_OLEAUT32       MAKE_DMHRESULTERROR(0x0216)
+#define DMUS_E_SCRIPT_LOADSCRIPT_ERROR        MAKE_DMHRESULTERROR(0x0217)
+#define DMUS_E_SCRIPT_INVALID_FILE            MAKE_DMHRESULTERROR(0x0218)
+#define DMUS_E_INVALID_SCRIPTTRACK            MAKE_DMHRESULTERROR(0x0219)
+#define DMUS_E_SCRIPT_VARIABLE_NOT_FOUND      MAKE_DMHRESULTERROR(0x021A)
+#define DMUS_E_SCRIPT_ROUTINE_NOT_FOUND       MAKE_DMHRESULTERROR(0x021B)
+#define DMUS_E_SCRIPT_CONTENT_READONLY        MAKE_DMHRESULTERROR(0x021C)
+#define DMUS_E_SCRIPT_NOT_A_REFERENCE         MAKE_DMHRESULTERROR(0x021D)
+#define DMUS_E_SCRIPT_VALUE_NOT_SUPPORTED     MAKE_DMHRESULTERROR(0x021E)
+#define DMUS_E_INVALID_SEGMENTTRIGGERTRACK    MAKE_DMHRESULTERROR(0x0220)
+#define DMUS_E_INVALID_LYRICSTRACK            MAKE_DMHRESULTERROR(0x0221)
+#define DMUS_E_INVALID_PARAMCONTROLTRACK      MAKE_DMHRESULTERROR(0x0222)
+#define DMUS_E_AUDIOVBSCRIPT_SYNTAXERROR      MAKE_DMHRESULTERROR(0x0223)
+#define DMUS_E_AUDIOVBSCRIPT_RUNTIMEERROR     MAKE_DMHRESULTERROR(0x0224)
+#define DMUS_E_AUDIOVBSCRIPT_OPERATIONFAILURE MAKE_DMHRESULTERROR(0x0225)
+#define DMUS_E_AUDIOPATHS_NOT_VALID           MAKE_DMHRESULTERROR(0x0226)
+#define DMUS_E_AUDIOPATHS_IN_USE              MAKE_DMHRESULTERROR(0x0227)
+#define DMUS_E_NO_AUDIOPATH_CONFIG            MAKE_DMHRESULTERROR(0x0228)
+#define DMUS_E_AUDIOPATH_INACTIVE             MAKE_DMHRESULTERROR(0x0229)
+#define DMUS_E_AUDIOPATH_NOBUFFER             MAKE_DMHRESULTERROR(0x022A)
+#define DMUS_E_AUDIOPATH_NOPORT               MAKE_DMHRESULTERROR(0x022B)
+#define DMUS_E_NO_AUDIOPATH                   MAKE_DMHRESULTERROR(0x022C)
+#define DMUS_E_INVALIDCHUNK                   MAKE_DMHRESULTERROR(0x022D)
+#define DMUS_E_AUDIOPATH_NOGLOBALFXBUFFER     MAKE_DMHRESULTERROR(0x022E)
+#define DMUS_E_INVALID_CONTAINER_OBJECT       MAKE_DMHRESULTERROR(0x022F)
+
+#endif /* __WINE_DMUSIC_ERROR_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmo.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmo.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmo.h	(revision 16410)
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2002 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __DMO_H__
+#define __DMO_H__
+
+#include <mediaerr.h>
+
+#ifdef FIX_LOCK_NAME
+#define Lock DMOLock
+#endif
+#include <mediaobj.h>
+#ifdef FIX_LOCK_NAME
+#undef Lock
+#endif
+#include <dmoreg.h>
+#include <dmort.h>
+
+#endif  /* __DMO_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmoreg.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmoreg.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmoreg.h	(revision 16410)
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2002 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __DMOREG_H__
+#define __DMOREG_H__
+
+#include "mediaobj.h"
+
+typedef struct _DMO_PARTIAL_MEDIATYPE
+{
+   GUID type;
+   GUID subtype;
+} DMO_PARTIAL_MEDIATYPE, *PDMO_PARTIAL_MEDIATYPE;
+
+enum DMO_REGISTER_FLAGS
+{
+   DMO_REGISTERF_IS_KEYED = 1
+};
+
+enum DMO_ENUM_FLAGS
+{
+   DMO_ENUMF_INCLUDE_KEYED = 1
+};
+
+HRESULT WINAPI DMORegister(LPCWSTR,REFCLSID,REFGUID,DWORD,DWORD,const DMO_PARTIAL_MEDIATYPE*,
+                           DWORD,const DMO_PARTIAL_MEDIATYPE*);
+HRESULT WINAPI DMOUnregister(REFCLSID,REFGUID);
+HRESULT WINAPI DMOEnum(REFGUID,DWORD,DWORD,const DMO_PARTIAL_MEDIATYPE*,DWORD,
+                       const DMO_PARTIAL_MEDIATYPE*,IEnumDMO**);
+HRESULT WINAPI DMOGetTypes(REFCLSID,ULONG,ULONG*,DMO_PARTIAL_MEDIATYPE*,
+                           ULONG,ULONG*,DMO_PARTIAL_MEDIATYPE*);
+HRESULT WINAPI DMOGetName(REFCLSID,WCHAR[80]);
+
+DEFINE_GUID(DMOCATEGORY_AUDIO_DECODER,
+            0x57f2db8b,0xe6bb,0x4513,0x9d,0x43,0xdc,0xd2,0xa6,0x59,0x31,0x25);
+DEFINE_GUID(DMOCATEGORY_AUDIO_ENCODER,
+            0x33d9a761,0x90c8,0x11d0,0xbd,0x43,0x00,0xa0,0xc9,0x11,0xce,0x86);
+DEFINE_GUID(DMOCATEGORY_VIDEO_DECODER,
+            0x4a69b442,0x28be,0x4991,0x96,0x9c,0xb5,0x00,0xad,0xf5,0xd8,0xa8);
+DEFINE_GUID(DMOCATEGORY_VIDEO_ENCODER,
+            0x33d9a760,0x90c8,0x11d0,0xbd,0x43,0x00,0xa0,0xc9,0x11,0xce,0x86);
+DEFINE_GUID(DMOCATEGORY_AUDIO_EFFECT,
+            0xf3602b3f,0x0592,0x48df,0xa4,0xcd,0x67,0x47,0x21,0xe7,0xeb,0xeb);
+DEFINE_GUID(DMOCATEGORY_VIDEO_EFFECT,
+            0xd990ee14,0x776c,0x4723,0xbe,0x46,0x3d,0xa2,0xf5,0x6f,0x10,0xb9);
+DEFINE_GUID(DMOCATEGORY_AUDIO_CAPTURE_EFFECT,
+            0xf665aaba,0x3e09,0x4920,0xaa,0x5f,0x21,0x98,0x11,0x14,0x8f,0x09);
+DEFINE_GUID(DMOCATEGORY_ACOUSTIC_ECHO_CANCEL,
+            0xbf963d80,0xc559,0x11d0,0x8a,0x2b,0x00,0xa0,0xc9,0x25,0x5a,0xc1);
+DEFINE_GUID(DMOCATEGORY_AUDIO_NOISE_SUPPRESS,
+            0xe07f903f,0x62fd,0x4e60,0x8c,0xdd,0xde,0xa7,0x23,0x66,0x65,0xb5);
+DEFINE_GUID(DMOCATEGORY_AGC,
+            0xe88c9ba0,0xc557,0x11d0,0x8a,0x2b,0x00,0xa0,0xc9,0x25,0x5a,0xc1);
+
+#endif /* __DMOREG_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmort.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmort.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmort.h	(revision 16410)
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2002 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __DMORT_H__
+#define __DMORT_H__
+
+HRESULT WINAPI MoCopyMediaType(DMO_MEDIA_TYPE*,const DMO_MEDIA_TYPE*);
+HRESULT WINAPI MoCreateMediaType(DMO_MEDIA_TYPE**,DWORD);
+HRESULT WINAPI MoDeleteMediaType(DMO_MEDIA_TYPE*);
+HRESULT WINAPI MoDuplicateMediaType(DMO_MEDIA_TYPE**,const DMO_MEDIA_TYPE*);
+HRESULT WINAPI MoFreeMediaType(DMO_MEDIA_TYPE*);
+HRESULT WINAPI MoInitMediaType(DMO_MEDIA_TYPE*,DWORD);
+
+#endif /* __DMORT_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmplugin.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmplugin.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmplugin.h	(revision 16410)
@@ -0,0 +1,301 @@
+/*
+ *  DirectMusic Performance Layer Plugins API
+ *
+ *  Copyright (C) 2003-2004 Rok Mandeljc
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2.1 of the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DMUSIC_PLUGIN_H
+#define __WINE_DMUSIC_PLUGIN_H
+
+#ifndef __WINESRC__
+#include <windows.h>
+#endif /* __WINESRC__ */
+
+#define COM_NO_WINDOWS_H
+#include <objbase.h>
+#include <mmsystem.h>
+#include <dmusici.h>
+#include <pshpack8.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*****************************************************************************
+ * Registry path
+ */
+#define DMUS_REGSTR_PATH_TOOLS "Software\\Microsoft\\DirectMusic\\Tools"
+
+	
+/*****************************************************************************
+ * Predeclare the interfaces
+ */
+/* CLSIDs */	
+DEFINE_GUID(CLSID_DirectMusicBandTrack,              0xd2ac2894,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicChordTrack,             0xd2ac288b,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicChordMapTrack,          0xd2ac2896,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicCommandTrack,           0xd2ac288c,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicLyricsTrack,            0x995c1cf5,0x54ff,0x11d3,0x8b,0xda,0x00,0x60,0x08,0x93,0xb1,0xb6);
+DEFINE_GUID(CLSID_DirectMusicMarkerTrack,            0x55a8fd00,0x4288,0x11d3,0x9b,0xd1,0x8a,0x0d,0x61,0xc8,0x88,0x35);
+DEFINE_GUID(CLSID_DirectMusicMotifTrack,             0xd2ac288e,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicMuteTrack,              0xd2ac2898,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicParamControlTrack,      0x4be0537b,0x5c19,0x11d3,0x8b,0xdc,0x00,0x60,0x08,0x93,0xb1,0xb6);
+DEFINE_GUID(CLSID_DirectMusicScriptTrack,            0x4108fa85,0x3586,0x11d3,0x8b,0xd7,0x00,0x60,0x08,0x93,0xb1,0xb6);
+DEFINE_GUID(CLSID_DirectMusicSegmentTriggerTrack,    0xbae4d665,0x4ea1,0x11d3,0x8b,0xda,0x00,0x60,0x08,0x93,0xb1,0xb6);
+DEFINE_GUID(CLSID_DirectMusicSeqTrack,               0xd2ac2886,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicSignPostTrack,          0xf17e8672,0xc3b4,0x11d1,0x87,0x0b,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicStyleTrack,             0xd2ac288d,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicSysExTrack,             0xd2ac2887,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicTempoTrack,             0xd2ac2885,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicTimeSigTrack,           0xd2ac2888,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicWaveTrack,              0xeed36461,0x9ea5,0x11d3,0x9b,0xd1,0x00,0x80,0xc7,0x15,0x0a,0x74);
+/* MS doesn't support this in DX 9.0 and newer... but there's no harm in keeping it around */
+DEFINE_GUID(CLSID_DirectMusicMelodyFormulationTrack, 0xb0684266,0xb57f,0x11d2,0x97,0xf9,0x00,0xc0,0x4f,0xa3,0x6e,0x58);
+
+/* IIDs */
+DEFINE_GUID(IID_IDirectMusicTool,                    0xd2ac28ba,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicTool8,                   0x0e674303,0x3b05,0x11d3,0x9b,0xd1,0xf9,0xe7,0xf0,0xa0,0x15,0x36);
+DEFINE_GUID(IID_IDirectMusicTrack,                   0xf96029a1,0x4282,0x11d2,0x87,0x17,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicTrack8,                  0x0e674304,0x3b05,0x11d3,0x9b,0xd1,0xf9,0xe7,0xf0,0xa0,0x15,0x36);
+
+/* typedef definitions */
+typedef struct IDirectMusicTrack *LPDIRECTMUSICTRACK;
+typedef struct IDirectMusicTrack8 *LPDIRECTMUSICTRACK8;
+typedef struct IDirectMusicTool *LPDIRECTMUSICTOOL;
+typedef struct IDirectMusicTool8 *LPDIRECTMUSICTOOL8;
+/* these are from dmusici.h and are needed here */
+typedef struct IDirectMusicPerformance *LPDIRECTMUSICPERFORMANCE;
+typedef struct IDirectMusicPerformance8 *LPDIRECTMUSICPERFORMANCE8;
+typedef struct IDirectMusicSegment *LPDIRECTMUSICSEGMENT;
+typedef struct IDirectMusicSegment8 *LPDIRECTMUSICSEGMENT8;
+typedef struct IDirectMusicSegmentState *LPDIRECTMUSICSEGMENTSTATE;
+typedef struct IDirectMusicSegmentState8 *LPDIRECTMUSICSEGMENTSTATE8;
+typedef struct IDirectMusicGraph *LPDIRECTMUSICGRAPH;
+typedef struct IDirectMusicGraph         IDirectMusicGraph8,        *LPDIRECTMUSICGRAPH8;
+
+
+/*****************************************************************************
+ * Typedef definitions
+ */
+typedef struct _DMUS_PMSG DMUS_PMSG;
+typedef long MUSIC_TIME;
+
+
+/*****************************************************************************
+ * Flags
+ */
+#define DMUS_TRACK_PARAMF_CLOCK 0x1
+
+/*****************************************************************************
+ * Enumerations
+ */
+/* typedef definitions */
+typedef enum enumDMUS_TRACKF_FLAGS DMUS_TRACKF_FLAGS;
+
+/* actual enumerations */
+enum enumDMUS_TRACKF_FLAGS {
+	DMUS_TRACKF_SEEK       = 0x001,
+	DMUS_TRACKF_LOOP       = 0x002,
+	DMUS_TRACKF_START      = 0x004,
+	DMUS_TRACKF_FLUSH      = 0x008,
+	DMUS_TRACKF_DIRTY      = 0x010,
+	DMUS_TRACKF_NOTIFY_OFF = 0x020,
+	DMUS_TRACKF_PLAY_OFF   = 0x040,
+	DMUS_TRACKF_LOOPEND    = 0x080,
+	DMUS_TRACKF_STOP       = 0x100,
+	DMUS_TRACKF_RECOMPOSE  = 0x200,
+	DMUS_TRACKF_CLOCK      = 0x400,
+};
+
+/*****************************************************************************
+ * IDirectMusicTool interface
+ */
+#define INTERFACE IDirectMusicTool
+DECLARE_INTERFACE_(IDirectMusicTool,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicTool methods ***/
+    STDMETHOD(Init)(THIS_ struct IDirectMusicGraph *pGraph) PURE;
+    STDMETHOD(GetMsgDeliveryType)(THIS_ DWORD *pdwDeliveryType) PURE;
+    STDMETHOD(GetMediaTypeArraySize)(THIS_ DWORD *pdwNumElements) PURE;
+    STDMETHOD(GetMediaTypes)(THIS_ DWORD **padwMediaTypes, DWORD dwNumElements) PURE;
+    STDMETHOD(ProcessPMsg)(THIS_ struct IDirectMusicPerformance *pPerf, DMUS_PMSG *pPMSG) PURE;
+    STDMETHOD(Flush)(THIS_ struct IDirectMusicPerformance *pPerf, DMUS_PMSG *pPMSG, REFERENCE_TIME rtTime) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicTool_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicTool_AddRef(p)                  (p)->lpVtbl->AddRef(p)
+#define IDirectMusicTool_Release(p)                 (p)->lpVtbl->Release(p)
+/*** IDirectMusicTool methods ***/
+#define IDirectMusicTool_Init(p,a)                  (p)->lpVtbl->Init(p,a)
+#define IDirectMusicTool_GetMsgDeliveryType(p,a)    (p)->lpVtbl->GetMsgDeliveryType(p,a)
+#define IDirectMusicTool_GetMediaTypeArraySize(p,a) (p)->lpVtbl->GetMediaTypeArraySize(p,a)
+#define IDirectMusicTool_GetMediaTypes(p,a,b)       (p)->lpVtbl->GetMediaTypes(p,a,b)
+#define IDirectMusicTool_ProcessPMsg(p,a,b)         (p)->lpVtbl->ProcessPMsg(p,a,b)
+#define IDirectMusicTool_Flush(p,a,b,c)             (p)->lpVtbl->Flush(p,a,b,c)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicTool8 interface
+ */
+#define INTERFACE IDirectMusicTool8
+DECLARE_INTERFACE_(IDirectMusicTool8,IDirectMusicTool)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicTool methods ***/
+    STDMETHOD(Init)(THIS_ struct IDirectMusicGraph *pGraph) PURE;
+    STDMETHOD(GetMsgDeliveryType)(THIS_ DWORD *pdwDeliveryType) PURE;
+    STDMETHOD(GetMediaTypeArraySize)(THIS_ DWORD *pdwNumElements) PURE;
+    STDMETHOD(GetMediaTypes)(THIS_ DWORD **padwMediaTypes, DWORD dwNumElements) PURE;
+    STDMETHOD(ProcessPMsg)(THIS_ struct IDirectMusicPerformance *pPerf, DMUS_PMSG *pPMSG) PURE;
+    STDMETHOD(Flush)(THIS_ struct IDirectMusicPerformance *pPerf, DMUS_PMSG *pPMSG, REFERENCE_TIME rtTime) PURE;
+    /*** IDirectMusicTool8 methods ***/
+    STDMETHOD(Clone)(THIS_ IDirectMusicTool **ppTool) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicTool8_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicTool8_AddRef(p)                  (p)->lpVtbl->AddRef(p)
+#define IDirectMusicTool8_Release(p)                 (p)->lpVtbl->Release(p)
+/*** IDirectMusicTool methods ***/
+#define IDirectMusicTool8_Init(p,a)                  (p)->lpVtbl->Init(p,a)
+#define IDirectMusicTool8_GetMsgDeliveryType(p,a)    (p)->lpVtbl->GetMsgDeliveryType(p,a)
+#define IDirectMusicTool8_GetMediaTypeArraySize(p,a) (p)->lpVtbl->GetMediaTypeArraySize(p,a)
+#define IDirectMusicTool8_GetMediaTypes(p,a,b)       (p)->lpVtbl->GetMediaTypes(p,a,b)
+#define IDirectMusicTool8_ProcessPMsg(p,a,b)         (p)->lpVtbl->ProcessPMsg(p,a,b)
+#define IDirectMusicTool8_Flush(p,a,b)               (p)->lpVtbl->Flush(p,a,b)
+/*** IDirectMusicTool8 methods ***/
+#define IDirectMusicTool8_Clone(p,a)                 (p)->lpVtbl->Clone(p,a)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicTrack interface
+ */
+#define INTERFACE IDirectMusicTrack
+DECLARE_INTERFACE_(IDirectMusicTrack,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicTrack methods ***/
+    STDMETHOD(Init)(THIS_ struct IDirectMusicSegment *pSegment) PURE;
+    STDMETHOD(InitPlay)(THIS_ struct IDirectMusicSegmentState *pSegmentState, struct IDirectMusicPerformance *pPerformance, void **ppStateData, DWORD dwVirtualTrackID, DWORD dwFlags) PURE;
+    STDMETHOD(EndPlay)(THIS_ void *pStateData) PURE;
+    STDMETHOD(Play)(THIS_ void *pStateData, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, MUSIC_TIME mtOffset, DWORD dwFlags, struct IDirectMusicPerformance *pPerf, struct IDirectMusicSegmentState *pSegSt, DWORD dwVirtualID) PURE;
+    STDMETHOD(GetParam)(THIS_ REFGUID rguidType, MUSIC_TIME mtTime, MUSIC_TIME *pmtNext, void *pParam) PURE;
+    STDMETHOD(SetParam)(THIS_ REFGUID rguidType, MUSIC_TIME mtTime, void *pParam) PURE;
+    STDMETHOD(IsParamSupported)(THIS_ REFGUID rguidType) PURE;
+    STDMETHOD(AddNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
+    STDMETHOD(RemoveNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
+    STDMETHOD(Clone)(THIS_ MUSIC_TIME mtStart, MUSIC_TIME mtEnd, IDirectMusicTrack **ppTrack) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicTrack_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicTrack_AddRef(p)                   (p)->lpVtbl->AddRef(p)
+#define IDirectMusicTrack_Release(p)                  (p)->lpVtbl->Release(p)
+/*** IDirectMusicTrack methods ***/
+#define IDirectMusicTrack_Init(p,a)                   (p)->lpVtbl->Init(p,a)
+#define IDirectMusicTrack_InitPlay(p,a,b,c,d,e)       (p)->lpVtbl->InitPlay(p,a,b,c,d,e)
+#define IDirectMusicTrack_EndPlay(p,a)                (p)->lpVtbl->EndPlay(p,a)
+#define IDirectMusicTrack_Play(p,a,b,c,d,e,f,g,h)     (p)->lpVtbl->Play(p,a,b,c,d,e,f,g,h)
+#define IDirectMusicTrack_GetParam(p,a,b,c,d)         (p)->lpVtbl->GetParam(p,a,b,c,d)
+#define IDirectMusicTrack_SetParam(p,a,b,c)           (p)->lpVtbl->SetParam(p,a,b,c)
+#define IDirectMusicTrack_IsParamSupported(p,a)       (p)->lpVtbl->IsParamSupported(p,a)
+#define IDirectMusicTrack_AddNotificationType(p,a)    (p)->lpVtbl->AddNotificationType(p,a)
+#define IDirectMusicTrack_RemoveNotificationType(p,a) (p)->lpVtbl->RemoveNotificationType(p,a)
+#define IDirectMusicTrack_Clone(p,a,b,c)              (p)->lpVtbl->Clone(p,a,b,c)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicTrack8 interface
+ */
+#define INTERFACE IDirectMusicTrack8
+DECLARE_INTERFACE_(IDirectMusicTrack8,IDirectMusicTrack)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicTrack methods ***/
+    STDMETHOD(Init)(THIS_ struct IDirectMusicSegment *pSegment) PURE;
+    STDMETHOD(InitPlay)(THIS_ struct IDirectMusicSegmentState *pSegmentState, struct IDirectMusicPerformance *pPerformance, void **ppStateData, DWORD dwVirtualTrackID, DWORD dwFlags) PURE;
+    STDMETHOD(EndPlay)(THIS_ void *pStateData) PURE;
+    STDMETHOD(Play)(THIS_ void *pStateData, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, MUSIC_TIME mtOffset, DWORD dwFlags, struct IDirectMusicPerformance *pPerf, struct IDirectMusicSegmentState *pSegSt, DWORD dwVirtualID) PURE;
+    STDMETHOD(GetParam)(THIS_ REFGUID rguidType, MUSIC_TIME mtTime, MUSIC_TIME *pmtNext, void *pParam) PURE;
+    STDMETHOD(SetParam)(THIS_ REFGUID rguidType, MUSIC_TIME mtTime, void *pParam) PURE;
+    STDMETHOD(IsParamSupported)(THIS_ REFGUID rguidType) PURE;
+    STDMETHOD(AddNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
+    STDMETHOD(RemoveNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
+    STDMETHOD(Clone)(THIS_ MUSIC_TIME mtStart, MUSIC_TIME mtEnd, IDirectMusicTrack **ppTrack) PURE;
+    /*** IDirectMusicTrack8 methods ***/
+    STDMETHOD(PlayEx)(THIS_ void *pStateData, REFERENCE_TIME rtStart, REFERENCE_TIME rtEnd, REFERENCE_TIME rtOffset, DWORD dwFlags, struct IDirectMusicPerformance *pPerf, struct IDirectMusicSegmentState *pSegSt, DWORD dwVirtualID) PURE;
+    STDMETHOD(GetParamEx)(THIS_ REFGUID rguidType, REFERENCE_TIME rtTime, REFERENCE_TIME *prtNext, void *pParam, void *pStateData, DWORD dwFlags) PURE;
+    STDMETHOD(SetParamEx)(THIS_ REFGUID rguidType, REFERENCE_TIME rtTime, void *pParam, void *pStateData, DWORD dwFlags) PURE;
+    STDMETHOD(Compose)(THIS_ IUnknown *pContext, DWORD dwTrackGroup, IDirectMusicTrack **ppResultTrack) PURE;
+    STDMETHOD(Join)(THIS_ IDirectMusicTrack *pNewTrack, MUSIC_TIME mtJoin, IUnknown *pContext, DWORD dwTrackGroup, IDirectMusicTrack **ppResultTrack) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicTrack8_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicTrack8_AddRef(p)                   (p)->lpVtbl->AddRef(p)
+#define IDirectMusicTrack8_Release(p)                  (p)->lpVtbl->Release(p)
+/*** IDirectMusicTrack methods ***/
+#define IDirectMusicTrack8_Init(p,a)                   (p)->lpVtbl->Init(p,a)
+#define IDirectMusicTrack8_InitPlay(p,a,b,c,d,e)       (p)->lpVtbl->InitPlay(p,a,b,c,d,e)
+#define IDirectMusicTrack8_EndPlay(p,a)                (p)->lpVtbl->EndPlay(p,a)
+#define IDirectMusicTrack8_Play(p,a,b,c,d,e,f,g,h)     (p)->lpVtbl->Play(p,a,b,c,d,e,f,g,h)
+#define IDirectMusicTrack8_GetParam(p,a,b,c,d)         (p)->lpVtbl->GetParam(p,a,b,c,d)
+#define IDirectMusicTrack8_SetParam(p,a,b,c)           (p)->lpVtbl->SetParam(p,a,b,c)
+#define IDirectMusicTrack8_IsParamSupported(p,a)       (p)->lpVtbl->IsParamSupported(p,a)
+#define IDirectMusicTrack8_AddNotificationType(p,a)    (p)->lpVtbl->AddNotificationType(p,a)
+#define IDirectMusicTrack8_RemoveNotificationType(p,a) (p)->lpVtbl->RemoveNotificationType(p,a)
+#define IDirectMusicTrack8_Clone(p,a,b,c)              (p)->lpVtbl->Clone(p,a,b,c)
+/*** IDirectMusicTrack8 methods ***/
+#define IDirectMusicTrack8_PlayEx(p,a,b,c,d,e,f,g,h)   (p)->lpVtbl->PlayEx(p,a,b,c,d,e,f,g,h)
+#define IDirectMusicTrack8_GetParamEx(p,a,b,c,d,e,f)   (p)->lpVtbl->GetParamEx(p,a,b,c,d,e,f)
+#define IDirectMusicTrack8_SetParamEx(p,a,b,c,d,e)     (p)->lpVtbl->SetParamEx(p,a,b,c,d,e)
+#define IDirectMusicTrack8_Compose(p,a,b,c)            (p)->lpVtbl->Compose(p,a,b,c)
+#define IDirectMusicTrack8_Join(p,a,b,c,d,e)           (p)->lpVtbl->Join(p,a,b,c,d,e)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <poppack.h>
+
+#endif /* __WINE_DMUSIC_PLUGIN_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmusbuff.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmusbuff.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmusbuff.h	(revision 16410)
@@ -0,0 +1,50 @@
+/* DirectMusic Buffer Format
+ *
+ * Copyright (C) 2003-2004 Rok Mandeljc
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DMUSIC_BUFFER_H
+#define __WINE_DMUSIC_BUFFER_H
+
+/*****************************************************************************
+ * Misc. definitions
+ */
+#define QWORD_ALIGN(x) (((x) + 7) & ~7)
+#define DMUS_EVENT_SIZE(cb) QWORD_ALIGN(sizeof(DMUS_EVENTHEADER) + cb)
+
+/*****************************************************************************
+ * Flags
+ */
+#define DMUS_EVENT_STRUCTURED   0x1
+
+/*****************************************************************************
+ * Structures
+ */
+/* typedef definitions */
+typedef struct _DMUS_EVENTHEADER DMUS_EVENTHEADER, *LPDMUS_EVENTHEADER;
+
+/* actual structure*/ 
+#include <pshpack4.h>
+struct _DMUS_EVENTHEADER {
+    DWORD           cbEvent;
+    DWORD           dwChannelGroup;
+    REFERENCE_TIME  rtDelta;
+    DWORD           dwFlags;
+};
+#include <poppack.h>
+
+#endif /* __WINE_DMUSIC_BUFFER_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmusicc.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmusicc.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmusicc.h	(revision 16410)
@@ -0,0 +1,768 @@
+/* DirectMusic Core API Stuff
+ *
+ * Copyright (C) 2003-2004 Rok Mandeljc
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DMUSIC_CORE_H
+#define __WINE_DMUSIC_CORE_H
+
+#ifndef __WINESRC__
+#include <windows.h>
+#endif /* __WINESRC__ */
+
+#define COM_NO_WINDOWS_H
+#include <objbase.h>
+#include <mmsystem.h>
+
+#include <dls1.h>
+#include <dmerror.h>
+#include <dmdls.h>
+#include <dsound.h>
+#include <dmusbuff.h>
+
+#include <pshpack8.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/*****************************************************************************
+ * Predeclare the interfaces
+ */
+/* CLSIDs */
+DEFINE_GUID(CLSID_DirectMusic,                    0x636b9f10,0x0c7d,0x11d1,0x95,0xb2,0x00,0x20,0xaf,0xdc,0x74,0x21);
+DEFINE_GUID(CLSID_DirectMusicCollection,          0x480ff4b0,0x28b2,0x11d1,0xbe,0xf7,0x00,0xc0,0x4f,0xbf,0x8f,0xef);
+DEFINE_GUID(CLSID_DirectMusicSynth,               0x58c2b4d0,0x46e7,0x11d1,0x89,0xac,0x00,0xa0,0xc9,0x05,0x41,0x29);
+	
+/* IIDs */
+DEFINE_GUID(IID_IDirectMusic,                     0x6536115a,0x7b2d,0x11d2,0xba,0x18,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(IID_IDirectMusic2,                    0x6fc2cae1,0xbc78,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
+DEFINE_GUID(IID_IDirectMusic8,                    0x2d3629f7,0x813d,0x4939,0x85,0x08,0xf0,0x5c,0x6b,0x75,0xfd,0x97);
+DEFINE_GUID(IID_IDirectMusicBuffer,               0xd2ac2878,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicCollection,           0xd2ac287c,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicDownload,             0xd2ac287b,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicDownloadedInstrument, 0xd2ac287e,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicInstrument,           0xd2ac287d,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicPort,                 0x08f2d8c9,0x37c2,0x11d2,0xb9,0xf9,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(IID_IDirectMusicPortDownload,         0xd2ac287a,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicThru,                 0xced153e7,0x3606,0x11d2,0xb9,0xf9,0x00,0x00,0xf8,0x75,0xac,0x12);
+
+#define IID_IDirectMusicCollection8 IID_IDirectMusicCollection
+#define IID_IDirectMusicDownload8 IID_IDirectMusicDownload
+#define IID_IDirectMusicDownloadedInstrument8 IID_IDirectMusicDownloadedInstrument
+#define IID_IDirectMusicInstrument8 IID_IDirectMusicInstrument
+#define IID_IDirectMusicPort8 IID_IDirectMusicPort
+#define IID_IDirectMusicPortDownload8 IID_IDirectMusicPortDownload
+#define IID_IDirectMusicThru8 IID_IDirectMusicThru
+
+/* GUIDs - property set */
+DEFINE_GUID(GUID_DMUS_PROP_GM_Hardware,           0x178f2f24,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(GUID_DMUS_PROP_GS_Capable,            0x6496aba2,0x61b0,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
+DEFINE_GUID(GUID_DMUS_PROP_GS_Hardware,           0x178f2f25,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(GUID_DMUS_PROP_DLS1,                  0x178f2f27,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(GUID_DMUS_PROP_DLS2,                  0xf14599e5,0x4689,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
+DEFINE_GUID(GUID_DMUS_PROP_Effects,               0xcda8d611,0x684a,0x11d2,0x87,0x1e,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_DMUS_PROP_INSTRUMENT2,           0x865fd372,0x9f67,0x11d2,0x87,0x2a,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_DMUS_PROP_LegacyCaps,            0xcfa7cdc2,0x00a1,0x11d2,0xaa,0xd5,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(GUID_DMUS_PROP_MemorySize,            0x178f2f28,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(GUID_DMUS_PROP_SampleMemorySize,      0x178f2f28,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(GUID_DMUS_PROP_SamplePlaybackRate,    0x2a91f713,0xa4bf,0x11d2,0xbb,0xdf,0x00,0x60,0x08,0x33,0xdb,0xd8);
+DEFINE_GUID(GUID_DMUS_PROP_SynthSink_DSOUND,      0x0aa97844,0xc877,0x11d1,0x87,0x0c,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_DMUS_PROP_SynthSink_WAVE,        0x0aa97845,0xc877,0x11d1,0x87,0x0c,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_DMUS_PROP_Volume,                0xfedfae25,0xe46e,0x11d1,0xaa,0xce,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(GUID_DMUS_PROP_WavesReverb,           0x04cb5622,0x32e5,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
+DEFINE_GUID(GUID_DMUS_PROP_WriteLatency,          0x268a0fa0,0x60f2,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
+DEFINE_GUID(GUID_DMUS_PROP_WritePeriod,           0x268a0fa1,0x60f2,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
+DEFINE_GUID(GUID_DMUS_PROP_XG_Capable,            0x6496aba1,0x61b0,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
+DEFINE_GUID(GUID_DMUS_PROP_XG_Hardware,           0x178f2f26,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);	
+
+/* typedef definitions */
+typedef struct IDirectMusic *LPDIRECTMUSIC;
+typedef struct IDirectMusic8 *LPDIRECTMUSIC8;
+typedef struct IDirectMusicBuffer *LPDIRECTMUSICBUFFER;
+typedef struct IDirectMusicBuffer IDirectMusicBuffer8, *LPDIRECTMUSICBUFFER8;
+typedef struct IDirectMusicInstrument *LPDIRECTMUSICINSTRUMENT;
+typedef struct IDirectMusicInstrument IDirectMusicInstrument8, *LPDIRECTMUSICINSTRUMENT8;
+typedef struct IDirectMusicDownloadedInstrument *LPDIRECTMUSICDOWNLOADEDINSTRUMENT;
+typedef struct IDirectMusicDownloadedInstrument IDirectMusicDownloadedInstrument8, *LPDIRECTMUSICDOWNLOADEDINSTRUMENT8;
+typedef struct IDirectMusicCollection *LPDIRECTMUSICCOLLECTION;
+typedef struct IDirectMusicCollection IDirectMusicCollection8, *LPDIRECTMUSICCOLLECTION8;
+typedef struct IDirectMusicDownload *LPDIRECTMUSICDOWNLOAD;
+typedef struct IDirectMusicDownload IDirectMusicDownload8, *LPDIRECTMUSICDOWNLOAD8;
+typedef struct IDirectMusicPortDownload *LPDIRECTMUSICPORTDOWNLOAD;
+typedef struct IDirectMusicPortDownload IDirectMusicPortDownload8, *LPDIRECTMUSICPORTDOWNLOAD8;
+typedef struct IDirectMusicPort *LPDIRECTMUSICPORT;
+typedef struct IDirectMusicPort IDirectMusicPort8, *LPDIRECTMUSICPORT8;
+typedef struct IDirectMusicThru *LPDIRECTMUSICTHRU;
+typedef struct IDirectMusicThru IDirectMusicThru8, *LPDIRECTMUSICTHRU8;
+typedef struct IReferenceClock *LPREFERENCECLOCK;
+
+
+/*****************************************************************************
+ * Typedef definitions
+ */
+typedef ULONGLONG    SAMPLE_TIME, *LPSAMPLE_TIME;
+typedef ULONGLONG    SAMPLE_POSITION, *LPSAMPLE_POSITION;	
+
+
+/*****************************************************************************
+ * Flags
+ */
+#ifndef _DIRECTAUDIO_PRIORITIES_DEFINED_
+#define _DIRECTAUDIO_PRIORITIES_DEFINED_
+
+#define DAUD_CRITICAL_VOICE_PRIORITY 0xF0000000
+#define DAUD_HIGH_VOICE_PRIORITY     0xC0000000
+#define DAUD_STANDARD_VOICE_PRIORITY 0x80000000
+#define DAUD_LOW_VOICE_PRIORITY      0x40000000
+#define DAUD_PERSIST_VOICE_PRIORITY  0x10000000
+
+#define DAUD_CHAN1_VOICE_PRIORITY_OFFSET  0x0000000E
+#define DAUD_CHAN2_VOICE_PRIORITY_OFFSET  0x0000000D
+#define DAUD_CHAN3_VOICE_PRIORITY_OFFSET  0x0000000C
+#define DAUD_CHAN4_VOICE_PRIORITY_OFFSET  0x0000000B
+#define DAUD_CHAN5_VOICE_PRIORITY_OFFSET  0x0000000A
+#define DAUD_CHAN6_VOICE_PRIORITY_OFFSET  0x00000009
+#define DAUD_CHAN7_VOICE_PRIORITY_OFFSET  0x00000008
+#define DAUD_CHAN8_VOICE_PRIORITY_OFFSET  0x00000007
+#define DAUD_CHAN9_VOICE_PRIORITY_OFFSET  0x00000006
+#define DAUD_CHAN10_VOICE_PRIORITY_OFFSET 0x0000000F
+#define DAUD_CHAN11_VOICE_PRIORITY_OFFSET 0x00000005
+#define DAUD_CHAN12_VOICE_PRIORITY_OFFSET 0x00000004
+#define DAUD_CHAN13_VOICE_PRIORITY_OFFSET 0x00000003
+#define DAUD_CHAN14_VOICE_PRIORITY_OFFSET 0x00000002
+#define DAUD_CHAN15_VOICE_PRIORITY_OFFSET 0x00000001
+#define DAUD_CHAN16_VOICE_PRIORITY_OFFSET 0x00000000
+
+#define DAUD_CHAN1_DEF_VOICE_PRIORITY  (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN1_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN2_DEF_VOICE_PRIORITY  (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN2_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN3_DEF_VOICE_PRIORITY  (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN3_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN4_DEF_VOICE_PRIORITY  (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN4_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN5_DEF_VOICE_PRIORITY  (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN5_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN6_DEF_VOICE_PRIORITY  (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN6_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN7_DEF_VOICE_PRIORITY  (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN7_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN8_DEF_VOICE_PRIORITY  (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN8_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN9_DEF_VOICE_PRIORITY  (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN9_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN10_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN10_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN11_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN11_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN12_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN12_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN13_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN13_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN14_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN14_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN15_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN15_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN16_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN16_VOICE_PRIORITY_OFFSET)
+#endif  /* _DIRECTAUDIO_PRIORITIES_DEFINED_ */
+
+#define DMUS_CLOCKF_GLOBAL 0x1
+
+#define DMUS_EFFECT_NONE   0x0
+#define DMUS_EFFECT_REVERB 0x1
+#define DMUS_EFFECT_CHORUS 0x2
+#define DMUS_EFFECT_DELAY  0x4
+	
+#define DMUS_MAX_DESCRIPTION 0x80
+#define DMUS_MAX_DRIVER 0x80
+
+#define DMUS_PC_INPUTCLASS  0x0
+#define DMUS_PC_OUTPUTCLASS 0x1
+
+#define DMUS_PC_DLS             0x00000001
+#define DMUS_PC_EXTERNAL        0x00000002
+#define DMUS_PC_SOFTWARESYNTH   0x00000004
+#define DMUS_PC_MEMORYSIZEFIXED 0x00000008
+#define DMUS_PC_GMINHARDWARE    0x00000010
+#define DMUS_PC_GSINHARDWARE    0x00000020
+#define DMUS_PC_XGINHARDWARE    0x00000040
+#define DMUS_PC_DIRECTSOUND     0x00000080
+#define DMUS_PC_SHAREABLE       0x00000100
+#define DMUS_PC_DLS2            0x00000200
+#define DMUS_PC_AUDIOPATH       0x00000400
+#define DMUS_PC_WAVE            0x00000800
+#define DMUS_PC_SYSTEMMEMORY    0x7FFFFFFF
+
+#define DMUS_PORT_WINMM_DRIVER    0x0
+#define DMUS_PORT_USER_MODE_SYNTH 0x1
+#define DMUS_PORT_KERNEL_MODE     0x2
+
+#define DMUS_PORT_FEATURE_AUDIOPATH     0x1
+#define DMUS_PORT_FEATURE_STREAMING     0x2
+
+#define DMUS_PORTPARAMS_VOICES           0x01
+#define DMUS_PORTPARAMS_CHANNELGROUPS    0x02
+#define DMUS_PORTPARAMS_AUDIOCHANNELS    0x04
+#define DMUS_PORTPARAMS_SAMPLERATE       0x08
+#define DMUS_PORTPARAMS_EFFECTS          0x20
+#define DMUS_PORTPARAMS_SHARE            0x40
+#define DMUS_PORTPARAMS_FEATURES         0x80
+
+#define DMUS_VOLUME_MAX     2000
+#define DMUS_VOLUME_MIN   -20000
+
+#define DMUS_SYNTHSTATS_VOICES        0x01
+#define DMUS_SYNTHSTATS_TOTAL_CPU     0x02
+#define DMUS_SYNTHSTATS_CPU_PER_VOICE 0x04
+#define DMUS_SYNTHSTATS_LOST_NOTES    0x08
+#define DMUS_SYNTHSTATS_PEAK_VOLUME   0x10
+#define DMUS_SYNTHSTATS_FREE_MEMORY   0x20
+#define DMUS_SYNTHSTATS_SYSTEMMEMORY  DMUS_PC_SYSTEMMEMORY
+
+#define DSBUSID_FIRST_SPKR_LOC        0x00000000
+#define DSBUSID_FRONT_LEFT            0x00000000
+#define DSBUSID_LEFT                  0x00000000
+#define DSBUSID_FRONT_RIGHT           0x00000001
+#define DSBUSID_RIGHT                 0x00000001
+#define DSBUSID_FRONT_CENTER          0x00000002
+#define DSBUSID_LOW_FREQUENCY         0x00000003
+#define DSBUSID_BACK_LEFT             0x00000004
+#define DSBUSID_BACK_RIGHT            0x00000005
+#define DSBUSID_FRONT_LEFT_OF_CENTER  0x00000006 
+#define DSBUSID_FRONT_RIGHT_OF_CENTER 0x00000007
+#define DSBUSID_BACK_CENTER           0x00000008
+#define DSBUSID_SIDE_LEFT             0x00000009
+#define DSBUSID_SIDE_RIGHT            0x0000000A
+#define DSBUSID_TOP_CENTER            0x0000000B
+#define DSBUSID_TOP_FRONT_LEFT        0x0000000C
+#define DSBUSID_TOP_FRONT_CENTER      0x0000000D
+#define DSBUSID_TOP_FRONT_RIGHT       0x0000000E
+#define DSBUSID_TOP_BACK_LEFT         0x0000000F
+#define DSBUSID_TOP_BACK_CENTER       0x00000010
+#define DSBUSID_TOP_BACK_RIGHT        0x011
+#define DSBUSID_LAST_SPKR_LOC         0x00000011
+#define DSBUSID_IS_SPKR_LOC(id)       (((id) >= DSBUSID_FIRST_SPKR_LOC) && ((id) <= DSBUSID_LAST_SPKR_LOC))
+
+#define DSBUSID_REVERB_SEND           0x00000040
+#define DSBUSID_CHORUS_SEND           0x00000041
+
+#define DSBUSID_DYNAMIC_0             0x00000200 
+
+#define DSBUSID_NULL			      0xFFFFFFFF
+
+/*****************************************************************************
+ * Enumerations
+ */
+typedef enum {
+	DMUS_CLOCK_SYSTEM = 0x0,
+	DMUS_CLOCK_WAVE   = 0x1
+} DMUS_CLOCKTYPE;
+
+
+/*****************************************************************************
+ * Structures
+ */
+/* typedef definitions */
+typedef struct _DMUS_BUFFERDESC          DMUS_BUFFERDESC,          *LPDMUS_BUFFERDESC;
+typedef struct _DMUS_PORTCAPS            DMUS_PORTCAPS,            *LPDMUS_PORTCAPS;
+typedef struct _DMUS_PORTPARAMS          DMUS_PORTPARAMS7,         *LPDMUS_PORTPARAMS7;
+typedef struct _DMUS_PORTPARAMS8         DMUS_PORTPARAMS8,         *LPDMUS_PORTPARAMS8;
+typedef         DMUS_PORTPARAMS8         DMUS_PORTPARAMS,          *LPDMUS_PORTPARAMS;
+typedef struct _DMUS_SYNTHSTATS          DMUS_SYNTHSTATS,          *LPDMUS_SYNTHSTATS;
+typedef struct _DMUS_SYNTHSTATS8         DMUS_SYNTHSTATS8,         *LPDMUS_SYNTHSTATS8;
+typedef struct _DMUS_WAVES_REVERB_PARAMS DMUS_WAVES_REVERB_PARAMS, *LPDMUS_WAVES_REVERB_PARAMS;
+typedef struct _DMUS_CLOCKINFO7          DMUS_CLOCKINFO7,          *LPDMUS_CLOCKINFO7;
+typedef struct _DMUS_CLOCKINFO8          DMUS_CLOCKINFO8,          *LPDMUS_CLOCKINFO8;
+typedef         DMUS_CLOCKINFO8          DMUS_CLOCKINFO,           *LPDMUS_CLOCKINFO;
+
+
+/* actual structures */
+struct _DMUS_BUFFERDESC {
+	DWORD dwSize;
+	DWORD dwFlags;
+	GUID guidBufferFormat;
+	DWORD cbBuffer;
+} ;
+
+struct _DMUS_PORTCAPS {
+	DWORD dwSize;
+	DWORD dwFlags;
+	GUID  guidPort;
+	DWORD dwClass;
+	DWORD dwType;
+	DWORD dwMemorySize;
+	DWORD dwMaxChannelGroups;
+	DWORD dwMaxVoices;    
+	DWORD dwMaxAudioChannels;
+	DWORD dwEffectFlags;
+	WCHAR wszDescription[DMUS_MAX_DESCRIPTION];
+};
+
+struct _DMUS_PORTPARAMS {
+	DWORD dwSize;
+	DWORD dwValidParams;
+	DWORD dwVoices;
+	DWORD dwChannelGroups;
+	DWORD dwAudioChannels;
+	DWORD dwSampleRate;
+	DWORD dwEffectFlags;
+	BOOL  fShare;
+};
+
+struct _DMUS_PORTPARAMS8 {
+	DWORD dwSize;
+	DWORD dwValidParams;
+	DWORD dwVoices;
+	DWORD dwChannelGroups;
+	DWORD dwAudioChannels;
+	DWORD dwSampleRate;
+	DWORD dwEffectFlags;
+	BOOL  fShare;
+	DWORD dwFeatures;
+};
+
+struct _DMUS_SYNTHSTATS {
+	DWORD dwSize;
+	DWORD dwValidStats;
+	DWORD dwVoices;
+	DWORD dwTotalCPU;
+	DWORD dwCPUPerVoice;
+	DWORD dwLostNotes;
+	DWORD dwFreeMemory;
+	long  lPeakVolume;
+};
+
+struct _DMUS_SYNTHSTATS8 {
+	DWORD dwSize;
+	DWORD dwValidStats;
+	DWORD dwVoices;
+	DWORD dwTotalCPU;
+	DWORD dwCPUPerVoice;
+	DWORD dwLostNotes;
+	DWORD dwFreeMemory;
+	long  lPeakVolume;
+	DWORD dwSynthMemUse;
+};
+
+struct _DMUS_WAVES_REVERB_PARAMS {
+	float fInGain;
+	float fReverbMix;
+	float fReverbTime;
+	float fHighFreqRTRatio;
+};
+
+struct _DMUS_CLOCKINFO7 {
+	DWORD          dwSize;
+	DMUS_CLOCKTYPE ctType;
+	GUID           guidClock;
+	WCHAR          wszDescription[DMUS_MAX_DESCRIPTION];
+};
+
+struct _DMUS_CLOCKINFO8 {
+    DWORD          dwSize;
+    DMUS_CLOCKTYPE ctType;
+    GUID           guidClock;
+    WCHAR          wszDescription[DMUS_MAX_DESCRIPTION];
+    DWORD          dwFlags;           
+};
+
+
+/*****************************************************************************
+ * IDirectMusic interface
+ */
+#define INTERFACE IDirectMusic
+DECLARE_INTERFACE_(IDirectMusic,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusic methods ***/
+    STDMETHOD(EnumPort)(THIS_ DWORD dwIndex, LPDMUS_PORTCAPS pPortCaps) PURE;
+    STDMETHOD(CreateMusicBuffer)(THIS_ LPDMUS_BUFFERDESC pBufferDesc, LPDIRECTMUSICBUFFER **ppBuffer, LPUNKNOWN pUnkOuter) PURE;
+    STDMETHOD(CreatePort)(THIS_ REFCLSID rclsidPort, LPDMUS_PORTPARAMS pPortParams, LPDIRECTMUSICPORT *ppPort, LPUNKNOWN pUnkOuter) PURE;
+    STDMETHOD(EnumMasterClock)(THIS_ DWORD dwIndex, LPDMUS_CLOCKINFO lpClockInfo) PURE;
+    STDMETHOD(GetMasterClock)(THIS_ LPGUID pguidClock, struct IReferenceClock **ppReferenceClock) PURE;
+    STDMETHOD(SetMasterClock)(THIS_ REFGUID rguidClock) PURE;
+    STDMETHOD(Activate)(THIS_ BOOL fEnable) PURE;
+    STDMETHOD(GetDefaultPort)(THIS_ LPGUID pguidPort) PURE;
+    STDMETHOD(SetDirectSound)(THIS_ LPDIRECTSOUND pDirectSound, HWND hWnd) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusic_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusic_AddRef(p)                  (p)->lpVtbl->AddRef(p)
+#define IDirectMusic_Release(p)                 (p)->lpVtbl->Release(p)
+/*** IDirectMusic methods ***/
+#define IDirectMusic_EnumPort(p,a,b)            (p)->lpVtbl->EnumPort(p,a,b)
+#define IDirectMusic_CreateMusicBuffer(p,a,b,c) (p)->lpVtbl->CreateMusicBuffer(p,a,b,c)
+#define IDirectMusic_CreatePort(p,a,b,c,d)      (p)->lpVtbl->CreatePort(p,a,b,c,d)
+#define IDirectMusic_EnumMasterClock(p,a,b)     (p)->lpVtbl->EnumMasterClock(p,a,b)
+#define IDirectMusic_GetMasterClock(p,a,b)      (p)->lpVtbl->GetMasterClock(p,a,b)
+#define IDirectMusic_SetMasterClock(p,a)        (p)->lpVtbl->SetMasterClock(p,a)
+#define IDirectMusic_Activate(p,a)              (p)->lpVtbl->Activate(p,a)
+#define IDirectMusic_GetDefaultPort(p,a)        (p)->lpVtbl->GetDefaultPort(p,a)
+#define IDirectMusic_SetDirectSound(p,a,b)      (p)->lpVtbl->SetDirectSound(p,a,b)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusic8 interface
+ */
+#define INTERFACE IDirectMusic8
+DECLARE_INTERFACE_(IDirectMusic8,IDirectMusic)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusic methods ***/
+    STDMETHOD(EnumPort)(THIS_ DWORD dwIndex, LPDMUS_PORTCAPS pPortCaps) PURE;
+    STDMETHOD(CreateMusicBuffer)(THIS_ LPDMUS_BUFFERDESC pBufferDesc, LPDIRECTMUSICBUFFER **ppBuffer, LPUNKNOWN pUnkOuter) PURE;
+    STDMETHOD(CreatePort)(THIS_ REFCLSID rclsidPort, LPDMUS_PORTPARAMS pPortParams, LPDIRECTMUSICPORT *ppPort, LPUNKNOWN pUnkOuter) PURE;
+    STDMETHOD(EnumMasterClock)(THIS_ DWORD dwIndex, LPDMUS_CLOCKINFO lpClockInfo) PURE;
+    STDMETHOD(GetMasterClock)(THIS_ LPGUID pguidClock, struct IReferenceClock **ppReferenceClock) PURE;
+    STDMETHOD(SetMasterClock)(THIS_ REFGUID rguidClock) PURE;
+    STDMETHOD(Activate)(THIS_ BOOL fEnable) PURE;
+    STDMETHOD(GetDefaultPort)(THIS_ LPGUID pguidPort) PURE;
+    STDMETHOD(SetDirectSound)(THIS_ LPDIRECTSOUND pDirectSound, HWND hWnd) PURE;
+    /*** IDirectMusic8 methods ***/
+    STDMETHOD(SetExternalMasterClock)(THIS_ struct IReferenceClock *pClock) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusic8_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusic8_AddRef(p)                   (p)->lpVtbl->AddRef(p)
+#define IDirectMusic8_Release(p)                  (p)->lpVtbl->Release(p)
+/*** IDirectMusic methods ***/
+#define IDirectMusic8_EnumPort(p,a,b)             (p)->lpVtbl->EnumPort(p,a,b)
+#define IDirectMusic8_CreateMusicBuffer(p,a,b,c)  (p)->lpVtbl->CreateMusicBuffer(p,a,b,c)
+#define IDirectMusic8_CreatePort(p,a,b,c,d)       (p)->lpVtbl->CreatePort(p,a,b,c,d)
+#define IDirectMusic8_EnumMasterClock(p,a,b)      (p)->lpVtbl->EnumMasterClock(p,a,b)
+#define IDirectMusic8_GetMasterClock(p,a,b)       (p)->lpVtbl->GetMasterClock(p,a,b)
+#define IDirectMusic8_SetMasterClock(p,a)         (p)->lpVtbl->SetMasterClock(p,a)
+#define IDirectMusic8_Activate(p,a)               (p)->lpVtbl->Activate(p,a)
+#define IDirectMusic8_GetDefaultPort(p,a)         (p)->lpVtbl->GetDefaultPort(p,a)
+#define IDirectMusic8_SetDirectSound(p,a,b)       (p)->lpVtbl->SetDirectSound(p,a,b)
+/*** IDirectMusic8 methods ***/
+#define IDirectMusic8_SetExternalMasterClock(p,a) (p)->lpVtbl->SetExternalMasterClock(p,a)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicBuffer interface
+ */
+#define INTERFACE IDirectMusicBuffer
+DECLARE_INTERFACE_(IDirectMusicBuffer,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicBuffer methods ***/
+    STDMETHOD(Flush)(THIS) PURE;
+    STDMETHOD(TotalTime)(THIS_ LPREFERENCE_TIME prtTime) PURE;
+    STDMETHOD(PackStructured)(THIS_ REFERENCE_TIME rt, DWORD dwChannelGroup, DWORD dwChannelMessage) PURE;
+    STDMETHOD(PackUnstructured)(THIS_ REFERENCE_TIME rt, DWORD dwChannelGroup, DWORD cb, LPBYTE lpb) PURE;
+    STDMETHOD(ResetReadPtr)(THIS) PURE;
+    STDMETHOD(GetNextEvent)(THIS_ LPREFERENCE_TIME prt, LPDWORD pdwChannelGroup, LPDWORD pdwLength, LPBYTE *ppData) PURE;
+    STDMETHOD(GetRawBufferPtr)(THIS_ LPBYTE *ppData) PURE;
+    STDMETHOD(GetStartTime)(THIS_ LPREFERENCE_TIME prt) PURE;
+    STDMETHOD(GetUsedBytes)(THIS_ LPDWORD pcb) PURE;
+    STDMETHOD(GetMaxBytes)(THIS_ LPDWORD pcb) PURE;
+    STDMETHOD(GetBufferFormat)(THIS_ LPGUID pGuidFormat) PURE;
+    STDMETHOD(SetStartTime)(THIS_ REFERENCE_TIME rt) PURE;
+    STDMETHOD(SetUsedBytes)(THIS_ DWORD cb) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicBuffer_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicBuffer_AddRef(p)                        (p)->lpVtbl->AddRef(p)
+#define IDirectMusicBuffer_Release(p)                       (p)->lpVtbl->Release(p)
+/*** IDirectMusicBuffer methods ***/
+#define IDirectMusicBuffer_Flush(p)                         (p)->lpVtbl->Flush(p)
+#define IDirectMusicBuffer_TotalTime(p,a)                   (p)->lpVtbl->TotalTime(p,a)
+#define IDirectMusicBuffer_PackStructured(p,a,b,c)          (p)->lpVtbl->PackStructured(p,a,b,c)
+#define IDirectMusicBuffer_PackUnstructured(p,a,b,c,d)      (p)->lpVtbl->PackUnstructured(p,a,b,c,d)
+#define IDirectMusicBuffer_ResetReadPtr(p)                  (p)->lpVtbl->ResetReadPtr(p)
+#define IDirectMusicBuffer_GetNextEvent(p,a,b,c,d)          (p)->lpVtbl->GetNextEvent(p,a,b,c,d)
+#define IDirectMusicBuffer_GetRawBufferPtr(p,a)             (p)->lpVtbl->GetRawBufferPtr(p,a)
+#define IDirectMusicBuffer_GetStartTime(p,a)                (p)->lpVtbl->GetStartTime(p,a)
+#define IDirectMusicBuffer_GetUsedBytes(p,a)                (p)->lpVtbl->GetUsedBytes(p,a)
+#define IDirectMusicBuffer_GetMaxBytes(p,a)                 (p)->lpVtbl->GetMaxBytes(p,a)
+#define IDirectMusicBuffer_GetBufferFormat(p,a)             (p)->lpVtbl->GetBufferFormat(p,a)
+#define IDirectMusicBuffer_SetStartTime(p,a)                (p)->lpVtbl->SetStartTime(p,a)
+#define IDirectMusicBuffer_SetUsedBytes(p,a)                (p)->lpVtbl->SetUsedBytes(p,a)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicInstrument interface
+ */
+#define INTERFACE IDirectMusicInstrument
+DECLARE_INTERFACE_(IDirectMusicInstrument,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicInstrument methods ***/
+    STDMETHOD(GetPatch)(THIS_ DWORD *pdwPatch) PURE;
+    STDMETHOD(SetPatch)(THIS_ DWORD dwPatch) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicInstrument_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicInstrument_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectMusicInstrument_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectMusicInstrument methods ***/
+#define IDirectMusicInstrument_GetPatch(p,a)         (p)->lpVtbl->GetPatch(p,a)
+#define IDirectMusicInstrument_SetPatch(p,a)         (p)->lpVtbl->SetPatch(p,a)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicDownloadedInstrument interface
+ */
+#define INTERFACE IDirectMusicDownloadedInstrument
+DECLARE_INTERFACE_(IDirectMusicDownloadedInstrument,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /* no IDirectMusicDownloadedInstrument methods at this time */
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicDownloadedInstrument_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicDownloadedInstrument_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectMusicDownloadedInstrument_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectMusicDownloadedInstrument methods ***/
+/* none at this time */
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicCollection interface
+ */
+#define INTERFACE IDirectMusicCollection
+DECLARE_INTERFACE_(IDirectMusicCollection,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicCollection methods ***/
+    STDMETHOD(GetInstrument)(THIS_ DWORD dwPatch, IDirectMusicInstrument **ppInstrument) PURE;
+    STDMETHOD(EnumInstrument)(THIS_ DWORD dwIndex, DWORD *pdwPatch, LPWSTR pwszName, DWORD dwNameLen) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicCollection_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicCollection_AddRef(p)                        (p)->lpVtbl->AddRef(p)
+#define IDirectMusicCollection_Release(p)                       (p)->lpVtbl->Release(p)
+/*** IDirectMusicCollection methods ***/
+#define IDirectMusicCollection_GetInstrument(p,a,b)             (p)->lpVtbl->GetInstrument(p,a,b)
+#define IDirectMusicCollection_EnumInstrument(p,a,b,c,d)        (p)->lpVtbl->EnumInstrument(p,a,b,c,d)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicDownload interface
+ */
+#define INTERFACE IDirectMusicDownload
+DECLARE_INTERFACE_(IDirectMusicDownload,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicDownload methods ***/
+    STDMETHOD(GetBuffer)(THIS_ void **ppvBuffer, DWORD *pdwSize) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicDownload_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicDownload_AddRef(p)                      (p)->lpVtbl->AddRef(p)
+#define IDirectMusicDownload_Release(p)                     (p)->lpVtbl->Release(p)
+/*** IDirectMusicDownload methods ***/
+#define IDirectMusicDownload_GetBuffer(p,a,b)               (p)->lpVtbl->GetBuffer(p,a,b)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicPortDownload interface
+ */
+#define INTERFACE IDirectMusicPortDownload
+DECLARE_INTERFACE_(IDirectMusicPortDownload,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicPortDownload methods ***/
+    STDMETHOD(GetBuffer)(THIS_ DWORD dwDLId, IDirectMusicDownload **ppIDMDownload) PURE;
+    STDMETHOD(AllocateBuffer)(THIS_ DWORD dwSize, IDirectMusicDownload **ppIDMDownload) PURE;
+    STDMETHOD(GetDLId)(THIS_ DWORD *pdwStartDLId, DWORD dwCount) PURE;
+    STDMETHOD(GetAppend)(THIS_ DWORD *pdwAppend) PURE;
+    STDMETHOD(Download)(THIS_ IDirectMusicDownload *pIDMDownload) PURE;
+    STDMETHOD(Unload)(THIS_ IDirectMusicDownload *pIDMDownload) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicPortDownload_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicPortDownload_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectMusicPortDownload_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectMusicPortDownload methods ***/
+#define IDirectMusicPortDownload_GetBuffer(p,a,b)      (p)->lpVtbl->GetBuffer(p,a,b)
+#define IDirectMusicPortDownload_AllocateBuffer(p,a,b) (p)->lpVtbl->AllocateBuffer(p,a,b)
+#define IDirectMusicPortDownload_GetDLId(p,a,b)        (p)->lpVtbl->GetDLId(p,a,b)
+#define IDirectMusicPortDownload_GetAppend(p,a)        (p)->lpVtbl->GetAppend(p,a)
+#define IDirectMusicPortDownload_Download(p,a)         (p)->lpVtbl->Download(p,a)
+#define IDirectMusicPortDownload_Unload(p,a)           (p)->lpVtbl->GetBuffer(p,a)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicPort interface
+ */
+#define INTERFACE IDirectMusicPort
+DECLARE_INTERFACE_(IDirectMusicPort,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicPort methods ***/
+    STDMETHOD(PlayBuffer)(THIS_ LPDIRECTMUSICBUFFER pBuffer) PURE;
+    STDMETHOD(SetReadNotificationHandle)(THIS_ HANDLE hEvent) PURE;
+    STDMETHOD(Read)(THIS_ LPDIRECTMUSICBUFFER pBuffer) PURE;
+    STDMETHOD(DownloadInstrument)(THIS_ IDirectMusicInstrument *pInstrument, IDirectMusicDownloadedInstrument **ppDownloadedInstrument, DMUS_NOTERANGE *pNoteRanges, DWORD dwNumNoteRanges) PURE;
+    STDMETHOD(UnloadInstrument)(THIS_ IDirectMusicDownloadedInstrument *pDownloadedInstrument) PURE;
+    STDMETHOD(GetLatencyClock)(THIS_ struct IReferenceClock **ppClock) PURE;
+    STDMETHOD(GetRunningStats)(THIS_ LPDMUS_SYNTHSTATS pStats) PURE;
+    STDMETHOD(Compact)(THIS) PURE;
+    STDMETHOD(GetCaps)(THIS_ LPDMUS_PORTCAPS pPortCaps) PURE;
+    STDMETHOD(DeviceIoControl)(THIS_ DWORD dwIoControlCode, LPVOID lpInBuffer, DWORD nInBufferSize, LPVOID lpOutBuffer, DWORD nOutBufferSize, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped) PURE;
+    STDMETHOD(SetNumChannelGroups)(THIS_ DWORD dwChannelGroups) PURE;
+    STDMETHOD(GetNumChannelGroups)(THIS_ LPDWORD pdwChannelGroups) PURE;
+    STDMETHOD(Activate)(THIS_ BOOL fActive) PURE;
+    STDMETHOD(SetChannelPriority)(THIS_ DWORD dwChannelGroup, DWORD dwChannel, DWORD dwPriority) PURE;
+    STDMETHOD(GetChannelPriority)(THIS_ DWORD dwChannelGroup, DWORD dwChannel, LPDWORD pdwPriority) PURE;
+    STDMETHOD(SetDirectSound)(THIS_ LPDIRECTSOUND pDirectSound, LPDIRECTSOUNDBUFFER pDirectSoundBuffer) PURE;
+    STDMETHOD(GetFormat)(THIS_ LPWAVEFORMATEX pWaveFormatEx, LPDWORD pdwWaveFormatExSize, LPDWORD pdwBufferSize) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicPort_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicPort_AddRef(p)                        (p)->lpVtbl->AddRef(p)
+#define IDirectMusicPort_Release(p)                       (p)->lpVtbl->Release(p)
+/*** IDirectMusicPort methods ***/
+#define IDirectMusicPort_PlayBuffer(p,a)                  (p)->lpVtbl->PlayBuffer(p,a)
+#define IDirectMusicPort_SetReadNotificationHandle(p,a)   (p)->lpVtbl->SetReadNotificationHandle(p,a)
+#define IDirectMusicPort_Read(p,a)                        (p)->lpVtbl->Read(p,a)
+#define IDirectMusicPort_DownloadInstrument(p,a,b,c,d)    (p)->lpVtbl->DownloadInstrument(p,a,b,c,d)
+#define IDirectMusicPort_UnloadInstrument(p,a)            (p)->lpVtbl->UnloadInstrument(p,a)
+#define IDirectMusicPort_GetLatencyClock(p,a)             (p)->lpVtbl->GetLatencyClock(p,a)
+#define IDirectMusicPort_GetRunningStats(p,a)             (p)->lpVtbl->GetRunningStats(p,a)
+#define IDirectMusicPort_Compact(p)                       (p)->lpVtbl->Compact(p)
+#define IDirectMusicPort_GetCaps(p,a)                     (p)->lpVtbl->GetCaps(p,a)
+#define IDirectMusicPort_DeviceIoControl(p,a,b,c,d,e,f,g) (p)->lpVtbl->DeviceIoControl(p,a,b,c,d,e,f,g)
+#define IDirectMusicPort_SetNumChannelGroups(p,a)         (p)->lpVtbl->SetNumChannelGroups(p,a)
+#define IDirectMusicPort_GetNumChannelGroups(p,a)         (p)->lpVtbl->GetNumChannelGroups(p,a)
+#define IDirectMusicPort_Activate(p,a)                    (p)->lpVtbl->Activate(p,a)
+#define IDirectMusicPort_SetChannelPriority(p,a,b,c)      (p)->lpVtbl->SetChannelPriority(p,a,b,c)
+#define IDirectMusicPort_GetChannelPriority(p,a,b,c)      (p)->lpVtbl->GetChannelPriority(p,a,b,c)
+#define IDirectMusicPort_SetDirectSound(p,a,b)            (p)->lpVtbl->SetDirectSound(p,a,b)
+#define IDirectMusicPort_GetFormat(p,a,b,c)               (p)->lpVtbl->GetFormat(p,a,b,c)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicThru interface
+ */
+#define INTERFACE IDirectMusicThru
+DECLARE_INTERFACE_(IDirectMusicThru,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicThru methods ***/
+    STDMETHOD(ThruChannel)(THIS_ DWORD dwSourceChannelGroup, DWORD dwSourceChannel, DWORD dwDestinationChannelGroup, DWORD dwDestinationChannel, LPDIRECTMUSICPORT pDestinationPort) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicThru_QueryInterface(p,a,b)                  (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicThru_AddRef(p)                              (p)->lpVtbl->AddRef(p)
+#define IDirectMusicThru_Release(p)                             (p)->lpVtbl->Release(p)
+/*** IDirectMusicThru methods ***/
+#define IDirectMusicThru_ThruChannel(p,a,b,c,d,e)               (p)->lpVtbl->ThruChannel(p,a,b,c,d,e)
+#endif
+
+
+#ifndef __IReferenceClock_INTERFACE_DEFINED__
+#define __IReferenceClock_INTERFACE_DEFINED__
+DEFINE_GUID(IID_IReferenceClock,0x56a86897,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70);
+
+/*****************************************************************************
+ * IReferenceClock interface
+ */
+#define INTERFACE IReferenceClock
+DECLARE_INTERFACE_(IReferenceClock,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IReferenceClock methods ***/
+    STDMETHOD(GetTime)(THIS_ REFERENCE_TIME *pTime) PURE;
+    STDMETHOD(AdviseTime)(THIS_ REFERENCE_TIME baseTime, REFERENCE_TIME streamTime, HANDLE hEvent, DWORD *pdwAdviseCookie) PURE;
+    STDMETHOD(AdvisePeriodic)(THIS_ REFERENCE_TIME startTime, REFERENCE_TIME periodTime, HANDLE hSemaphore, DWORD *pdwAdviseCookie) PURE;
+    STDMETHOD(Unadvise)(THIS_ DWORD dwAdviseCookie) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IReferenceClock_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
+#define IReferenceClock_AddRef(p)                               (p)->lpVtbl->AddRef(p)
+#define IReferenceClock_Release(p)                              (p)->lpVtbl->Release(p)
+/*** IReferenceClock methods ***/
+#define IReferenceClock_GetTime(p,a)                            (p)->lpVtbl->GetTime(p,a)
+#define IReferenceClock_AdviseTime(p,a,b,c,d)                   (p)->lpVtbl->AdviseTime(p,a,b,c,d)
+#define IReferenceClock_AdvisePeriodic(p,a,b,c,d)               (p)->lpVtbl->AdvisePeriodic(p,a,b,c,d)
+#define IReferenceClock_Unadvise(p,a)                           (p)->lpVtbl->Unadvise(p,a)
+#endif
+
+#endif /* __IReferenceClock_INTERFACE_DEFINED__ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <poppack.h>
+
+#endif /* __WINE_DMUSIC_CORE_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmusicf.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmusicf.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmusicf.h	(revision 16410)
@@ -0,0 +1,911 @@
+/*
+ *  DirectMusic File Formats
+ *
+ *  Copyright (C) 2003-2004 Rok Mandeljc
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2.1 of the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DMUSIC_FILEFORMATS_H
+#define __WINE_DMUSIC_FILEFORMATS_H
+
+#ifndef __WINESRC__
+#include <windows.h>
+#endif /* __WINESRC__ */
+
+#define COM_NO_WINDOWS_H
+#include <objbase.h>
+#include <mmsystem.h>
+#include <pshpack8.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/*****************************************************************************
+ * FOURCC Definitions
+ */
+/* Common chunks */
+#define DMUS_FOURCC_GUID_CHUNK                     mmioFOURCC('g','u','i','d')
+#define DMUS_FOURCC_INFO_LIST                      mmioFOURCC('I','N','F','O')
+#define DMUS_FOURCC_UNFO_LIST                      mmioFOURCC('U','N','F','O')
+#define DMUS_FOURCC_UNAM_CHUNK                     mmioFOURCC('U','N','A','M')
+#define DMUS_FOURCC_UART_CHUNK                     mmioFOURCC('U','A','R','T')
+#define DMUS_FOURCC_UCOP_CHUNK                     mmioFOURCC('U','C','O','P')
+#define DMUS_FOURCC_USBJ_CHUNK                     mmioFOURCC('U','S','B','J')
+#define DMUS_FOURCC_UCMT_CHUNK                     mmioFOURCC('U','C','M','T')
+#define DMUS_FOURCC_CATEGORY_CHUNK                 mmioFOURCC('c','a','t','g')
+#define DMUS_FOURCC_VERSION_CHUNK                  mmioFOURCC('v','e','r','s')
+/* AudioPath */
+#define DMUS_FOURCC_AUDIOPATH_FORM                 mmioFOURCC('D','M','A','P')
+#define DMUS_FOURCC_PORTCONFIGS_LIST               mmioFOURCC('p','c','s','l')
+#define DMUS_FOURCC_PORTCONFIG_LIST                mmioFOURCC('p','c','f','l')
+#define DMUS_FOURCC_PORTCONFIG_ITEM                mmioFOURCC('p','c','f','h')
+#define DMUS_FOURCC_PORTPARAMS_ITEM                mmioFOURCC('p','p','r','h')
+#define DMUS_FOURCC_DSBUFFER_LIST                  mmioFOURCC('d','b','f','l')
+#define DMUS_FOURCC_DSBUFFATTR_ITEM                mmioFOURCC('d','d','a','h')
+#define DMUS_FOURCC_PCHANNELS_LIST                 mmioFOURCC('p','c','h','l')
+#define DMUS_FOURCC_PCHANNELS_ITEM                 mmioFOURCC('p','c','h','h')
+/* Band */
+#define DMUS_FOURCC_BAND_FORM                      mmioFOURCC('D','M','B','D')
+#define DMUS_FOURCC_INSTRUMENTS_LIST               mmioFOURCC('l','b','i','l')
+#define DMUS_FOURCC_INSTRUMENT_LIST                mmioFOURCC('l','b','i','n')
+#define DMUS_FOURCC_INSTRUMENT_CHUNK               mmioFOURCC('b','i','n','s')
+/* Chordmap */
+#define DMUS_FOURCC_CHORDMAP_FORM                  mmioFOURCC('D','M','P','R')
+#define DMUS_FOURCC_IOCHORDMAP_CHUNK               mmioFOURCC('p','e','r','h')
+#define DMUS_FOURCC_SUBCHORD_CHUNK                 mmioFOURCC('c','h','d','t')
+#define DMUS_FOURCC_CHORDENTRY_CHUNK               mmioFOURCC('c','h','e','h')
+#define DMUS_FOURCC_SUBCHORDID_CHUNK               mmioFOURCC('s','b','c','n')
+#define DMUS_FOURCC_IONEXTCHORD_CHUNK              mmioFOURCC('n','c','r','d')
+#define DMUS_FOURCC_NEXTCHORDSEQ_CHUNK             mmioFOURCC('n','c','s','q')
+#define DMUS_FOURCC_IOSIGNPOST_CHUNK               mmioFOURCC('s','p','s','h')
+#define DMUS_FOURCC_CHORDNAME_CHUNK                mmioFOURCC('I','N','A','M')
+#define DMUS_FOURCC_CHORDENTRY_LIST                mmioFOURCC('c','h','o','e')
+#define DMUS_FOURCC_CHORDMAP_LIST                  mmioFOURCC('c','m','a','p')
+#define DMUS_FOURCC_CHORD_LIST                     mmioFOURCC('c','h','r','d')
+#define DMUS_FOURCC_CHORDPALETTE_LIST              mmioFOURCC('c','h','p','l')
+#define DMUS_FOURCC_CADENCE_LIST                   mmioFOURCC('c','a','d','e')
+#define DMUS_FOURCC_SIGNPOSTITEM_LIST              mmioFOURCC('s','p','s','t')
+#define DMUS_FOURCC_SIGNPOST_LIST                  mmioFOURCC('s','p','s','q')
+/* Container */
+#define DMUS_FOURCC_CONTAINER_FORM                 mmioFOURCC('D','M','C','N')
+#define DMUS_FOURCC_CONTAINER_CHUNK                mmioFOURCC('c','o','n','h')
+#define DMUS_FOURCC_CONTAINED_ALIAS_CHUNK          mmioFOURCC('c','o','b','a')
+#define DMUS_FOURCC_CONTAINED_OBJECT_CHUNK         mmioFOURCC('c','o','b','h')
+#define DMUS_FOURCC_CONTAINED_OBJECTS_LIST         mmioFOURCC('c','o','s','l')
+#define DMUS_FOURCC_CONTAINED_OBJECT_LIST          mmioFOURCC('c','o','b','l')
+/* DirectSound Buffer Configuration */
+#define DMUS_FOURCC_DSBC_FORM                      mmioFOURCC('D','S','B','C')
+#define DMUS_FOURCC_DSBD_CHUNK                     mmioFOURCC('d','s','b','d')
+#define DMUS_FOURCC_BSID_CHUNK                     mmioFOURCC('b','s','i','d')
+#define DMUS_FOURCC_DS3D_CHUNK                     mmioFOURCC('d','s','3','d')
+#define DMUS_FOURCC_DSBC_LIST                      mmioFOURCC('f','x','l','s')
+/* Effects */
+#define DMUS_FOURCC_DSFX_FORM                      mmioFOURCC('D','S','F','X')
+#define DMUS_FOURCC_DSFX_CHUNK                     mmioFOURCC('f','x','h','r')
+#define DMUS_FOURCC_DSFX_DATA                      mmioFOURCC('d','a','t','a')
+/* Reference */
+#define DMUS_FOURCC_REF_LIST                       mmioFOURCC('D','M','R','F')
+#define DMUS_FOURCC_REF_CHUNK                      mmioFOURCC('r','e','f','h')
+#define DMUS_FOURCC_DATE_CHUNK                     mmioFOURCC('d','a','t','e')
+#define DMUS_FOURCC_NAME_CHUNK                     mmioFOURCC('n','a','m','e')
+#define DMUS_FOURCC_FILE_CHUNK                     mmioFOURCC('f','i','l','e')
+/* Script */
+#define DMUS_FOURCC_SCRIPT_FORM                    mmioFOURCC('D','M','S','C')
+#define DMUS_FOURCC_SCRIPT_CHUNK                   mmioFOURCC('s','c','h','d')
+#define DMUS_FOURCC_SCRIPTVERSION_CHUNK            mmioFOURCC('s','c','v','e')
+#define DMUS_FOURCC_SCRIPTLANGUAGE_CHUNK           mmioFOURCC('s','c','l','a')
+#define DMUS_FOURCC_SCRIPTSOURCE_CHUNK             mmioFOURCC('s','c','s','r')
+/* Segment */
+#define DMUS_FOURCC_SEGMENT_FORM                   mmioFOURCC('D','M','S','G')
+#define DMUS_FOURCC_SEGMENT_CHUNK                  mmioFOURCC('s','e','g','h')
+#define DMUS_FOURCC_TRACK_LIST                     mmioFOURCC('t','r','k','l')
+/* Style chunks */
+#define DMUS_FOURCC_STYLE_FORM                     mmioFOURCC('D','M','S','T')
+#define DMUS_FOURCC_STYLE_CHUNK                    mmioFOURCC('s','t','y','h')
+#define DMUS_FOURCC_PART_LIST                      mmioFOURCC('p','a','r','t')
+#define DMUS_FOURCC_PART_CHUNK                     mmioFOURCC('p','r','t','h')
+#define DMUS_FOURCC_NOTE_CHUNK                     mmioFOURCC('n','o','t','e')
+#define DMUS_FOURCC_CURVE_CHUNK                    mmioFOURCC('c','r','v','e')
+#define DMUS_FOURCC_MARKER_CHUNK                   mmioFOURCC('m','r','k','r')
+#define DMUS_FOURCC_RESOLUTION_CHUNK               mmioFOURCC('r','s','l','n')
+#define DMUS_FOURCC_ANTICIPATION_CHUNK             mmioFOURCC('a','n','p','n')
+#define DMUS_FOURCC_PATTERN_LIST                   mmioFOURCC('p','t','t','n')
+#define DMUS_FOURCC_PATTERN_CHUNK                  mmioFOURCC('p','t','n','h')
+#define DMUS_FOURCC_RHYTHM_CHUNK                   mmioFOURCC('r','h','t','m')
+#define DMUS_FOURCC_PARTREF_LIST                   mmioFOURCC('p','r','e','f')
+#define DMUS_FOURCC_PARTREF_CHUNK                  mmioFOURCC('p','r','f','c')
+#define DMUS_FOURCC_STYLE_PERS_REF_LIST            mmioFOURCC('p','r','r','f')
+#define DMUS_FOURCC_MOTIFSETTINGS_CHUNK            mmioFOURCC('m','t','f','s')
+/* Tool */
+#define DMUS_FOURCC_TOOL_FORM                      mmioFOURCC('D','M','T','L')
+#define DMUS_FOURCC_TOOL_CHUNK                     mmioFOURCC('t','o','l','h')
+/* ToolGraph */
+#define DMUS_FOURCC_TOOLGRAPH_FORM                 mmioFOURCC('D','M','T','G')
+#define DMUS_FOURCC_TOOL_LIST                      mmioFOURCC('t','o','l','l')
+/* Track */
+#define DMUS_FOURCC_TRACK_FORM                     mmioFOURCC('D','M','T','K')
+#define DMUS_FOURCC_TRACK_CHUNK                    mmioFOURCC('t','r','k','h')
+#define DMUS_FOURCC_TRACK_EXTRAS_CHUNK             mmioFOURCC('t','r','k','x')
+/* Band Track */
+#define DMUS_FOURCC_BANDTRACK_FORM                 mmioFOURCC('D','M','B','T')
+#define DMUS_FOURCC_BANDTRACK_CHUNK                mmioFOURCC('b','d','t','h')
+#define DMUS_FOURCC_BANDS_LIST                     mmioFOURCC('l','b','d','l')
+#define DMUS_FOURCC_BAND_LIST                      mmioFOURCC('l','b','n','d')
+#define DMUS_FOURCC_BANDITEM_CHUNK                 mmioFOURCC('b','d','i','h')
+#define DMUS_FOURCC_BANDITEM_CHUNK2                mmioFOURCC('b','d','2','h')
+/* Chord Track */
+#define DMUS_FOURCC_CHORDTRACK_LIST                mmioFOURCC('c','o','r','d')
+#define DMUS_FOURCC_CHORDTRACKHEADER_CHUNK         mmioFOURCC('c','r','d','h')
+#define DMUS_FOURCC_CHORDTRACKBODY_CHUNK           mmioFOURCC('c','r','d','b')
+/* Chordmap Track */
+#define DMUS_FOURCC_PERS_TRACK_LIST                mmioFOURCC('p','f','t','r')
+#define DMUS_FOURCC_PERS_REF_LIST                  mmioFOURCC('p','f','r','f')
+#define DMUS_FOURCC_TIME_STAMP_CHUNK               mmioFOURCC('s','t','m','p')
+/* Command Track */
+#define DMUS_FOURCC_COMMANDTRACK_CHUNK             mmioFOURCC('c','m','n','d')
+/* Lyrics Track */
+#define DMUS_FOURCC_LYRICSTRACK_LIST               mmioFOURCC('l','y','r','t')
+#define DMUS_FOURCC_LYRICSTRACKEVENTS_LIST         mmioFOURCC('l','y','r','l')
+#define DMUS_FOURCC_LYRICSTRACKEVENT_LIST          mmioFOURCC('l','y','r','e')
+#define DMUS_FOURCC_LYRICSTRACKEVENTHEADER_CHUNK   mmioFOURCC('l','y','r','h')
+#define DMUS_FOURCC_LYRICSTRACKEVENTTEXT_CHUNK     mmioFOURCC('l','y','r','n')
+/* Marker Track */
+#define DMUS_FOURCC_MARKERTRACK_LIST               mmioFOURCC('M','A','R','K')
+#define DMUS_FOURCC_VALIDSTART_CHUNK               mmioFOURCC('v','a','l','s')
+#define DMUS_FOURCC_PLAYMARKER_CHUNK               mmioFOURCC('p','l','a','y')
+/* Mute Track */
+#define DMUS_FOURCC_MUTE_CHUNK                     mmioFOURCC('m','u','t','e')
+/* Parameter Control Track */
+#define DMUS_FOURCC_PARAMCONTROLTRACK_TRACK_LIST   mmioFOURCC('p','r','m','t')
+#define DMUS_FOURCC_PARAMCONTROLTRACK_OBJECT_LIST  mmioFOURCC('p','r','o','l')
+#define DMUS_FOURCC_PARAMCONTROLTRACK_OBJECT_CHUNK mmioFOURCC('p','r','o','h')
+#define DMUS_FOURCC_PARAMCONTROLTRACK_PARAM_LIST   mmioFOURCC('p','r','p','l')
+#define DMUS_FOURCC_PARAMCONTROLTRACK_PARAM_CHUNK  mmioFOURCC('p','r','p','h')
+#define DMUS_FOURCC_PARAMCONTROLTRACK_CURVES_CHUNK mmioFOURCC('p','r','c','c')
+/* Pattern Track */
+#define DMUS_FOURCC_PATTERN_FORM                   mmioFOURCC('D','M','P','T')
+/* Script Track */
+#define DMUS_FOURCC_SCRIPTTRACK_LIST               mmioFOURCC('s','c','r','t')
+#define DMUS_FOURCC_SCRIPTTRACKEVENTS_LIST         mmioFOURCC('s','c','r','l')
+#define DMUS_FOURCC_SCRIPTTRACKEVENT_LIST          mmioFOURCC('s','c','r','e')
+#define DMUS_FOURCC_SCRIPTTRACKEVENTHEADER_CHUNK   mmioFOURCC('s','c','r','h')
+#define DMUS_FOURCC_SCRIPTTRACKEVENTNAME_CHUNK     mmioFOURCC('s','c','r','n')
+/* Segment Trgigger Track */
+#define DMUS_FOURCC_SEGTRACK_LIST                  mmioFOURCC('s','e','g','t')
+#define DMUS_FOURCC_SEGTRACK_CHUNK                 mmioFOURCC('s','g','t','h')
+#define DMUS_FOURCC_SEGMENTS_LIST                  mmioFOURCC('l','s','g','l')
+#define DMUS_FOURCC_SEGMENT_LIST                   mmioFOURCC('l','s','e','g')
+#define DMUS_FOURCC_SEGMENTITEM_CHUNK              mmioFOURCC('s','g','i','h')
+#define DMUS_FOURCC_SEGMENTITEMNAME_CHUNK          mmioFOURCC('s','n','a','m')
+/* Sequence Track */
+#define DMUS_FOURCC_SEQ_TRACK                      mmioFOURCC('s','e','q','t')
+#define DMUS_FOURCC_SEQ_LIST                       mmioFOURCC('e','v','t','l')
+#define DMUS_FOURCC_CURVE_LIST                     mmioFOURCC('c','u','r','l')
+/* Signpost Track */
+#define DMUS_FOURCC_SIGNPOST_TRACK_CHUNK           mmioFOURCC('s','g','n','p')
+/* Style Track */
+#define DMUS_FOURCC_STYLE_TRACK_LIST               mmioFOURCC('s','t','t','r')
+#define DMUS_FOURCC_STYLE_REF_LIST                 mmioFOURCC('s','t','r','f')
+/* SysEx Track */
+#define DMUS_FOURCC_SYSEX_TRACK                    mmioFOURCC('s','y','e','x')
+/* Tempo Track */
+#define DMUS_FOURCC_TEMPO_TRACK                    mmioFOURCC('t','e','t','r')
+/* Time Signature Track */
+#define DMUS_FOURCC_TIMESIGNATURE_TRACK            mmioFOURCC('t','i','m','s')
+#define DMUS_FOURCC_TIMESIGTRACK_LIST              mmioFOURCC('T','I','M','S')
+#define DMUS_FOURCC_TIMESIG_CHUNK                  DMUS_FOURCC_TIMESIGNATURE_TRACK
+/* Wave Track */
+#define DMUS_FOURCC_WAVETRACK_LIST                 mmioFOURCC('w','a','v','t')
+#define DMUS_FOURCC_WAVETRACK_CHUNK                mmioFOURCC('w','a','t','h')
+#define DMUS_FOURCC_WAVEPART_LIST                  mmioFOURCC('w','a','v','p')
+#define DMUS_FOURCC_WAVEPART_CHUNK                 mmioFOURCC('w','a','p','h')
+#define DMUS_FOURCC_WAVEITEM_LIST                  mmioFOURCC('w','a','v','i')
+#define DMUS_FOURCC_WAVE_LIST                      mmioFOURCC('w','a','v','e')
+#define DMUS_FOURCC_WAVEITEM_CHUNK                 mmioFOURCC('w','a','i','h')
+/* Wave Header */
+#define DMUS_FOURCC_WAVEHEADER_CHUNK               mmioFOURCC('w','a','v','h')
+
+
+/*****************************************************************************
+ * Flags
+ */
+#define DMUS_BUFFERF_SHARED  0x1
+#define DMUS_BUFFERF_DEFINED 0x2
+#define DMUS_BUFFERF_MIXIN   0x8
+
+#define DMUS_CHORDMAPF_VERSION8 0x1
+
+#define DMUS_CONTAINED_OBJF_KEEP 0x1
+
+#define DMUS_CONTAINER_NOLOADS 0x2
+
+#define DMUS_IO_INST_PATCH              0x0001
+#define DMUS_IO_INST_BANKSELECT         0x0002
+#define DMUS_IO_INST_ASSIGN_PATCH       0x0008
+#define DMUS_IO_INST_NOTERANGES         0x0010
+#define DMUS_IO_INST_PAN                0x0020
+#define DMUS_IO_INST_VOLUME             0x0040
+#define DMUS_IO_INST_TRANSPOSE          0x0080
+#define DMUS_IO_INST_GM                 0x0100
+#define DMUS_IO_INST_GS                 0x0200
+#define DMUS_IO_INST_XG                 0x0400
+#define DMUS_IO_INST_CHANNEL_PRIORITY   0x0800
+#define DMUS_IO_INST_USE_DEFAULT_GM_SET 0x1000
+#define DMUS_IO_INST_PITCHBENDRANGE     0x2000
+
+#define DMUS_IO_SCRIPTTRACKF_PREPARE 0x1
+#define DMUS_IO_SCRIPTTRACKF_QUEUE   0x2
+#define DMUS_IO_SCRIPTTRACKF_ATTIME  0x4
+
+#define DMUS_MARKERF_START       0x1
+#define DMUS_MARKERF_STOP        0x2
+#define DMUS_MARKERF_CHORD_ALIGN 0x4
+
+#define DMUS_PATTERNF_PERSIST_CONTROL 0x1
+
+#define DMUS_PARTF_USE_MARKERS  0x1
+#define DMUS_PARTF_ALIGN_CHORDS 0x2
+
+#define DMUS_PORTCONFIGF_DRUMSON10  0x1
+#define DMUS_PORTCONFIGF_USEDEFAULT 0x2
+
+#define DMUS_SCRIPTIOF_LOAD_ALL_CONTENT       0x1
+#define DMUS_SCRIPTIOF_DOWNLOAD_ALL_SEGMENTS  0x2
+
+#define DMUS_SEGIOF_REFLENGTH 0x1
+#define DMUS_SEGIOF_CLOCKTIME 0x2
+
+#define DMUS_SEGMENTTRACKF_MOTIF 0x1
+
+/* Song flags; MS doesn't support this in DX 9.0 anymore */
+#define DMUS_SONG_MAXSEGID  0x7FFFFFFF
+#define DMUS_SONG_ANYSEG    0x80000000
+#define DMUS_SONG_NOSEG     0xFFFFFFFF
+#define DMUS_SONG_NOFROMSEG 0x80000001
+
+#define DMUS_SIGNPOSTF_A        0x0001      
+#define DMUS_SIGNPOSTF_B        0x0002
+#define DMUS_SIGNPOSTF_C        0x0004
+#define DMUS_SIGNPOSTF_D        0x0008
+#define DMUS_SIGNPOSTF_E        0x0010
+#define DMUS_SIGNPOSTF_F        0x0020
+#define DMUS_SIGNPOSTF_1        0x0100
+#define DMUS_SIGNPOSTF_2        0x0200
+#define DMUS_SIGNPOSTF_3        0x0400
+#define DMUS_SIGNPOSTF_4        0x0800
+#define DMUS_SIGNPOSTF_5        0x1000
+#define DMUS_SIGNPOSTF_6        0x2000
+#define DMUS_SIGNPOSTF_7        0x4000
+#define DMUS_SIGNPOSTF_CADENCE  0x8000
+#define DMUS_SIGNPOSTF_LETTER   (DMUS_SIGNPOSTF_A | DMUS_SIGNPOSTF_B | DMUS_SIGNPOSTF_C | DMUS_SIGNPOSTF_D | DMUS_SIGNPOSTF_E | DMUS_SIGNPOSTF_F)
+#define DMUS_SIGNPOSTF_ROOT     (DMUS_SIGNPOSTF_1 | DMUS_SIGNPOSTF_2 | DMUS_SIGNPOSTF_3 | DMUS_SIGNPOSTF_4 | DMUS_SIGNPOSTF_5 | DMUS_SIGNPOSTF_6 | DMUS_SIGNPOSTF_7)
+
+#define DMUS_SPOSTCADENCEF_1 0x2
+#define DMUS_SPOSTCADENCEF_2 0x4
+
+#define DMUS_VARIATIONF_MAJOR        0x0000007F
+#define DMUS_VARIATIONF_MINOR        0x00003F80
+#define DMUS_VARIATIONF_OTHER        0x001FC000
+#define DMUS_VARIATIONF_ROOT_SCALE   0x00200000
+#define DMUS_VARIATIONF_ROOT_FLAT    0x00400000
+#define DMUS_VARIATIONF_ROOT_SHARP   0x00800000
+#define DMUS_VARIATIONF_TYPE_TRIAD   0x01000000
+#define DMUS_VARIATIONF_TYPE_6AND7   0x02000000
+#define DMUS_VARIATIONF_TYPE_COMPLEX 0x04000000
+#define DMUS_VARIATIONF_DEST_TO1     0x08000000
+#define DMUS_VARIATIONF_DEST_TO5     0x10000000
+#define DMUS_VARIATIONF_DEST_OTHER   0x40000000
+#define DMUS_VARIATIONF_MODES        0xE0000000
+#define DMUS_VARIATIONF_MODES_EX     (0x20000000 | 0x80000000)
+#define DMUS_VARIATIONF_IMA25_MODE   0x00000000
+#define DMUS_VARIATIONF_DMUS_MODE    0x20000000
+
+#define DMUS_WAVETRACKF_SYNC_VAR        0x1
+#define DMUS_WAVETRACKF_PERSIST_CONTROL 0x2
+
+
+/*****************************************************************************
+ * Enumerations
+ */
+/* typedef definitions */
+typedef enum enumDMUS_VARIATIONT_TYPES DMUS_VARIATIONT_TYPES;
+typedef enum enumDMUS_EMBELLISHT_TYPES DMUS_EMBELLISHT_TYPES;
+typedef enum enumDMUS_PATTERNT_TYPES   DMUS_PATTERNT_TYPES;
+
+/* actual enumerations */
+enum enumDMUS_VARIATIONT_TYPES {
+	DMUS_VARIATIONT_SEQUENTIAL   = 0x0,
+	DMUS_VARIATIONT_RANDOM       = 0x1,
+	DMUS_VARIATIONT_RANDOM_START = 0x2,
+	DMUS_VARIATIONT_NO_REPEAT    = 0x3,
+	DMUS_VARIATIONT_RANDOM_ROW   = 0x4
+};
+
+enum enumDMUS_EMBELLISHT_TYPES {
+	DMUS_EMBELLISHT_NORMAL = 0x0000,
+	DMUS_EMBELLISHT_FILL   = 0x0001,
+	DMUS_EMBELLISHT_BREAK  = 0x0002,
+	DMUS_EMBELLISHT_INTRO  = 0x0004,
+	DMUS_EMBELLISHT_END    = 0x0008,
+	DMUS_EMBELLISHT_MOTIF  = 0x0010,
+	DMUS_EMBELLISHT_ALL    = 0xFFFF
+};
+
+enum enumDMUS_PATTERNT_TYPES {
+	DMUS_PATTERNT_RANDOM       = 0x0,
+	DMUS_PATTERNT_REPEAT       = 0x1,
+	DMUS_PATTERNT_SEQUENTIAL   = 0x2,
+	DMUS_PATTERNT_RANDOM_START = 0x3,
+	DMUS_PATTERNT_NO_REPEAT    = 0x4,
+	DMUS_PATTERNT_RANDOM_ROW   = 0x5
+};
+
+
+/*****************************************************************************
+ * Structures
+ */
+/* typedef definitions */
+typedef struct _DMUS_IO_SEQ_ITEM                       DMUS_IO_SEQ_ITEM,                       *LPDMUS_IO_SEQ_ITEM;
+typedef struct _DMUS_IO_CURVE_ITEM                     DMUS_IO_CURVE_ITEM,                     *LPDMUS_IO_CURVE_ITEM;
+typedef struct _DMUS_IO_TEMPO_ITEM                     DMUS_IO_TEMPO_ITEM,                     *LPDMUS_IO_TEMPO_ITEM;
+typedef struct _DMUS_IO_SYSEX_ITEM                     DMUS_IO_SYSEX_ITEM,                     *LPDMUS_IO_SYSEX_ITEM;
+typedef struct  DMUS_CHORD_KEY                         DMUS_CHORD_PARAM,                       *LPDMUS_CHORD_PARAM; /* in dmusici.h */
+typedef struct _DMUS_RHYTHM_PARAM                      DMUS_RHYTHM_PARAM,                      *LPDMUS_RHYTHM_PARAM;
+typedef struct _DMUS_TEMPO_PARAM                       DMUS_TEMPO_PARAM,                       *LPDMUS_TEMPO_PARAM;
+typedef struct _DMUS_MUTE_PARAM                        DMUS_MUTE_PARAM,                        *LPDMUS_MUTE_PARAM;
+typedef struct _DMUS_IO_TIMESIG                        DMUS_IO_TIMESIG,                        *LPDMUS_IO_TIMESIG;
+typedef struct _DMUS_IO_STYLE                          DMUS_IO_STYLE,                          *LPDMUS_IO_STYLE;
+typedef struct _DMUS_IO_VERSION                        DMUS_IO_VERSION,                        *LPDMUS_IO_VERSION;
+typedef struct _DMUS_IO_PATTERN                        DMUS_IO_PATTERN,                        *LPDMUS_IO_PATTERN;
+typedef struct _DMUS_IO_STYLEPART                      DMUS_IO_STYLEPART,                      *LPDMUS_IO_STYLEPART;
+typedef struct _DMUS_IO_PARTREF                        DMUS_IO_PARTREF,                        *LPDMUS_IO_PARTREF;
+typedef struct _DMUS_IO_STYLENOTE                      DMUS_IO_STYLENOTE,                      *LPDMUS_IO_STYLENOTE;
+typedef struct _DMUS_IO_STYLECURVE                     DMUS_IO_STYLECURVE,                     *LPDMUS_IO_STYLECURVE;
+typedef struct _DMUS_IO_STYLEMARKER                    DMUS_IO_STYLEMARKER,                    *LPDMUS_IO_STYLEMARKER;
+typedef struct _DMUS_IO_STYLERESOLUTION                DMUS_IO_STYLERESOLUTION,                *LPDMUS_IO_STYLERESOLUTION;
+typedef struct _DMUS_IO_STYLE_ANTICIPATION             DMUS_IO_STYLE_ANTICIPATION,             *LPDMUS_IO_STYLE_ANTICIPATION;
+typedef struct _DMUS_IO_MOTIFSETTINGS                  DMUS_IO_MOTIFSETTINGS,                  *LPDMUS_IO_MOTIFSETTINGS;
+typedef struct _DMUS_IO_CHORD                          DMUS_IO_CHORD,                          *LPDMUS_IO_CHORD;
+typedef struct _DMUS_IO_SUBCHORD                       DMUS_IO_SUBCHORD,                       *LPDMUS_IO_SUBCHORD;
+typedef struct _DMUS_IO_COMMAND                        DMUS_IO_COMMAND,                        *LPDMUS_IO_COMMAND;
+typedef struct _DMUS_IO_TOOL_HEADER                    DMUS_IO_TOOL_HEADER,                    *LPDMUS_IO_TOOL_HEADER;
+typedef struct _DMUS_IO_PORTCONFIG_HEADER              DMUS_IO_PORTCONFIG_HEADER,              *LPDMUS_IO_PORTCONFIG_HEADER;
+typedef struct _DMUS_IO_PCHANNELTOBUFFER_HEADER        DMUS_IO_PCHANNELTOBUFFER_HEADER,        *LPDMUS_IO_PCHANNELTOBUFFER_HEADER;
+typedef struct _DMUS_IO_BUFFER_ATTRIBUTES_HEADER       DMUS_IO_BUFFER_ATTRIBUTES_HEADER,       *LPDMUS_IO_BUFFER_ATTRIBUTES_HEADER;
+typedef struct _DMUS_IO_BAND_TRACK_HEADER              DMUS_IO_BAND_TRACK_HEADER,              *LPDMUS_IO_BAND_TRACK_HEADER;
+typedef struct _DMUS_IO_BAND_ITEM_HEADER               DMUS_IO_BAND_ITEM_HEADER,               *LPDMUS_IO_BAND_ITEM_HEADER;
+typedef struct _DMUS_IO_BAND_ITEM_HEADER2              DMUS_IO_BAND_ITEM_HEADER2,              *LPDMUS_IO_BAND_ITEM_HEADER2;
+typedef struct _DMUS_IO_INSTRUMENT                     DMUS_IO_INSTRUMENT,                     *LPDMUS_IO_INSTRUMENT;
+typedef struct _DMUS_IO_WAVE_HEADER                    DMUS_IO_WAVE_HEADER,                    *LPDMUS_IO_WAVE_HEADER;
+typedef struct _DMUS_IO_WAVE_TRACK_HEADER              DMUS_IO_WAVE_TRACK_HEADER,              *LPDMUS_IO_WAVE_TRACK_HEADER;
+typedef struct _DMUS_IO_WAVE_PART_HEADER               DMUS_IO_WAVE_PART_HEADER,               *LPDMUS_IO_WAVE_PART_HEADER;
+typedef struct _DMUS_IO_WAVE_ITEM_HEADER               DMUS_IO_WAVE_ITEM_HEADER,               *LPDMUS_IO_WAVE_ITEM_HEADER;
+typedef struct _DMUS_IO_CONTAINER_HEADER               DMUS_IO_CONTAINER_HEADER,               *LPDMUS_IO_CONTAINER_HEADER;
+typedef struct _DMUS_IO_CONTAINED_OBJECT_HEADER        DMUS_IO_CONTAINED_OBJECT_HEADER,        *LPDMUS_IO_CONTAINED_OBJECT_HEADER;
+typedef struct _DMUS_IO_SEGMENT_HEADER                 DMUS_IO_SEGMENT_HEADER,                 *LPDMUS_IO_SEGMENT_HEADER;	
+typedef struct _DMUS_IO_TRACK_HEADER                   DMUS_IO_TRACK_HEADER,                   *LPDMUS_IO_TRACK_HEADER;
+typedef struct _DMUS_IO_TRACK_EXTRAS_HEADER            DMUS_IO_TRACK_EXTRAS_HEADER,            *LPDMUS_IO_TRACK_EXTRAS_HEADER;
+typedef struct _DMUS_IO_REFERENCE                      DMUS_IO_REFERENCE,                      *LPDMUS_IO_REFERENCE;
+typedef struct _DMUS_IO_CHORDMAP                       DMUS_IO_CHORDMAP,                       *LPDMUS_IO_CHORDMAP;
+typedef struct _DMUS_IO_CHORDMAP_SUBCHORD              DMUS_IO_CHORDMAP_SUBCHORD,              *LPDMUS_IO_CHORDMAP_SUBCHORD;
+typedef struct _DMUS_IO_CHORDMAP_SUBCHORD              DMUS_IO_PERS_SUBCHORD,                  *LPDMUS_IO_PERS_SUBCHORD;
+typedef struct _DMUS_IO_CHORDENTRY                     DMUS_IO_CHORDENTRY,                     *LPDMUS_IO_CHORDENTRY;
+typedef struct _DMUS_IO_NEXTCHORD                      DMUS_IO_NEXTCHORD,                      *LPDMUS_IO_NEXTCHORD;
+typedef struct _DMUS_IO_CHORDMAP_SIGNPOST              DMUS_IO_CHORDMAP_SIGNPOST,              *LPDMUS_IO_CHORDMAP_SIGNPOST;
+typedef struct _DMUS_IO_CHORDMAP_SIGNPOST              DMUS_IO_PERS_SIGNPOST,                  *LPDMUS_IO_PERS_SIGNPOST;
+typedef struct _DMUS_IO_SCRIPT_HEADER                  DMUS_IO_SCRIPT_HEADER,                  *LPDMUS_IO_SCRIPT_HEADER;
+typedef struct _DMUS_IO_SIGNPOST                       DMUS_IO_SIGNPOST,                       *LPDMUS_IO_SIGNPOST;
+typedef struct _DMUS_IO_MUTE                           DMUS_IO_MUTE,                           *LPDMUS_IO_MUTE;
+typedef struct _DMUS_IO_TIMESIGNATURE_ITEM             DMUS_IO_TIMESIGNATURE_ITEM,             *LPDMUS_IO_TIMESIGNATURE_ITEM;
+typedef struct _DMUS_IO_VALID_START                    DMUS_IO_VALID_START,                    *LPDMUS_IO_VALID_START;
+typedef struct _DMUS_IO_PLAY_MARKER                    DMUS_IO_PLAY_MARKER,                    *LPDMUS_IO_PLAY_MARKER;
+typedef struct _DMUS_IO_SEGMENT_TRACK_HEADER           DMUS_IO_SEGMENT_TRACK_HEADER,           *LPDMUS_IO_SEGMENT_TRACK_HEADER;
+typedef struct _DMUS_IO_SEGMENT_ITEM_HEADER            DMUS_IO_SEGMENT_ITEM_HEADER,            *LPDMUS_IO_SEGMENT_ITEM_HEADER;
+typedef struct _DMUS_IO_SCRIPTTRACK_EVENTHEADER        DMUS_IO_SCRIPTTRACK_EVENTHEADER,        *LPDMUS_IO_SCRIPTTRACK_EVENTHEADER;
+typedef struct _DMUS_IO_LYRICSTRACK_EVENTHEADER        DMUS_IO_LYRICSTRACK_EVENTHEADER,        *LPDMUS_IO_LYRICSTRACK_EVENTHEADER;
+typedef struct _DMUS_IO_PARAMCONTROLTRACK_OBJECTHEADER DMUS_IO_PARAMCONTROLTRACK_OBJECTHEADER, *LPDMUS_IO_PARAMCONTROLTRACK_OBJECTHEADER;
+typedef struct _DMUS_IO_PARAMCONTROLTRACK_PARAMHEADER  DMUS_IO_PARAMCONTROLTRACK_PARAMHEADER,  *LPDMUS_IO_PARAMCONTROLTRACK_PARAMHEADER;
+typedef struct _DMUS_IO_PARAMCONTROLTRACK_CURVEINFO    DMUS_IO_PARAMCONTROLTRACK_CURVEINFO,    *LPDMUS_IO_PARAMCONTROLTRACK_CURVEINFO;
+typedef struct _DSOUND_IO_DSBUFFERDESC                 DSOUND_IO_DSBUFFERDESC,                 *LPDSOUND_IO_DSBUFFERDESC;
+typedef struct _DSOUND_IO_DSBUSID                      DSOUND_IO_DSBUSID,                      *LPDSOUND_IO_DSBUSID;
+typedef struct _DSOUND_IO_3D                           DSOUND_IO_3D,                           *LPDSOUND_IO_3D;
+typedef struct _DSOUND_IO_DXDMO_HEADER                 DSOUND_IO_DXDMO_HEADER,                 *LPDSOUND_IO_DXDMO_HEADER;
+typedef struct _DSOUND_IO_DXDMO_DATA                   DSOUND_IO_DXDMO_DATA,                   *LPDSOUND_IO_DXDMO_DATA;
+
+/* actual structures */
+struct _DMUS_IO_SEQ_ITEM {
+	MUSIC_TIME mtTime;
+	MUSIC_TIME mtDuration;
+	DWORD      dwPChannel;
+	short      nOffset; 
+	BYTE       bStatus;
+	BYTE       bByte1;
+	BYTE       bByte2;
+};
+
+struct _DMUS_IO_CURVE_ITEM {
+	MUSIC_TIME mtStart;
+	MUSIC_TIME mtDuration;
+	MUSIC_TIME mtResetDuration;
+	DWORD      dwPChannel;
+	short      nOffset;
+	short      nStartValue;
+	short      nEndValue;
+	short      nResetValue;
+	BYTE       bType;
+	BYTE       bCurveShape;
+	BYTE       bCCData;
+	BYTE       bFlags;
+	/* DX8 */
+	WORD       wParamType;
+	WORD       wMergeIndex;
+};
+
+struct _DMUS_IO_TEMPO_ITEM {
+	MUSIC_TIME lTime;
+	double     dblTempo;
+};
+
+struct _DMUS_IO_SYSEX_ITEM {
+	MUSIC_TIME mtTime;
+	DWORD      dwPChannel;
+	DWORD      dwSysExLength;
+};
+
+struct _DMUS_RHYTHM_PARAM {
+	DMUS_TIMESIGNATURE TimeSig;
+	DWORD              dwRhythmPattern;
+};
+
+struct _DMUS_TEMPO_PARAM {
+	MUSIC_TIME mtTime;
+	double     dblTempo;
+};
+
+struct _DMUS_MUTE_PARAM {
+	DWORD dwPChannel;
+	DWORD dwPChannelMap;
+	BOOL  fMute;
+};
+
+#pragma pack(2)
+struct _DMUS_IO_TIMESIG {
+	BYTE bBeatsPerMeasure;
+	BYTE bBeat;
+	WORD wGridsPerBeat;
+};
+
+struct _DMUS_IO_STYLE {
+	DMUS_IO_TIMESIG timeSig;
+	double          dblTempo;   
+};
+
+struct _DMUS_IO_VERSION {
+	DWORD dwVersionMS;
+	DWORD dwVersionLS;
+};
+
+struct _DMUS_IO_PATTERN {
+	DMUS_IO_TIMESIG timeSig;
+	BYTE            bGrooveBottom;
+	BYTE            bGrooveTop;
+	WORD            wEmbellishment;
+	WORD            wNbrMeasures;
+	BYTE            bDestGrooveBottom;
+	BYTE            bDestGrooveTop;
+	DWORD           dwFlags;
+};
+
+struct _DMUS_IO_STYLEPART {
+	DMUS_IO_TIMESIG timeSig;
+	DWORD           dwVariationChoices[32];
+	GUID            guidPartID;
+	WORD            wNbrMeasures;
+	BYTE            bPlayModeFlags;
+	BYTE            bInvertUpper;
+	BYTE            bInvertLower;
+	BYTE            bPad[3];
+	DWORD           dwFlags;
+};
+
+struct _DMUS_IO_PARTREF {
+	GUID  guidPartID;
+	WORD  wLogicalPartID;
+	BYTE  bVariationLockID;
+	BYTE  bSubChordLevel;
+	BYTE  bPriority;
+	BYTE  bRandomVariation;
+	WORD  wPad;
+	DWORD dwPChannel;
+};
+
+
+struct _DMUS_IO_STYLENOTE {
+	MUSIC_TIME mtGridStart;
+	DWORD      dwVariation;
+	MUSIC_TIME mtDuration;
+	short      nTimeOffset;
+	WORD       wMusicValue;
+	BYTE       bVelocity;
+	BYTE       bTimeRange;
+	BYTE       bDurRange;
+	BYTE       bVelRange;
+	BYTE       bInversionID;
+	BYTE       bPlayModeFlags;
+	 /* DX8 */
+	BYTE       bNoteFlags;
+};
+
+struct _DMUS_IO_STYLECURVE {
+	MUSIC_TIME mtGridStart;
+	DWORD      dwVariation;
+	MUSIC_TIME mtDuration;
+	MUSIC_TIME mtResetDuration;
+	short      nTimeOffset;
+	short      nStartValue;
+	short      nEndValue;
+	short      nResetValue;
+	BYTE       bEventType;
+	BYTE       bCurveShape;
+	BYTE       bCCData;
+	BYTE       bFlags;
+	/* DX8 */
+	WORD       wParamType;
+	WORD       wMergeIndex;
+};
+
+struct _DMUS_IO_STYLEMARKER {
+	MUSIC_TIME mtGridStart;
+	DWORD      dwVariation;
+	WORD       wMarkerFlags;
+};
+
+struct _DMUS_IO_STYLERESOLUTION {
+	DWORD dwVariation;
+	WORD  wMusicValue;
+	BYTE  bInversionID;
+	BYTE  bPlayModeFlags;
+};
+
+struct _DMUS_IO_STYLE_ANTICIPATION {
+	MUSIC_TIME mtGridStart;
+	DWORD      dwVariation;
+	short      nTimeOffset;
+	BYTE       bTimeRange;
+};
+
+struct _DMUS_IO_MOTIFSETTINGS {
+	DWORD      dwRepeats;
+	MUSIC_TIME mtPlayStart;
+	MUSIC_TIME mtLoopStart;
+	MUSIC_TIME mtLoopEnd;
+	DWORD      dwResolution;
+};
+#pragma pack()
+
+struct _DMUS_IO_CHORD {
+	WCHAR      wszName[16];
+	MUSIC_TIME mtTime;
+	WORD       wMeasure;
+	BYTE       bBeat;
+	BYTE       bFlags;
+};
+
+struct _DMUS_IO_SUBCHORD {
+	DWORD dwChordPattern;
+	DWORD dwScalePattern;
+	DWORD dwInversionPoints;
+	DWORD dwLevels;
+	BYTE  bChordRoot;
+	BYTE  bScaleRoot;
+};
+
+struct _DMUS_IO_COMMAND {
+	MUSIC_TIME mtTime;
+	WORD       wMeasure;
+	BYTE       bBeat;
+	BYTE       bCommand;
+	BYTE       bGrooveLevel;
+	BYTE       bGrooveRange;
+	BYTE       bRepeatMode;
+};
+
+struct _DMUS_IO_TOOL_HEADER {
+	GUID   guidClassID;
+	long   lIndex;
+	DWORD  cPChannels;
+	FOURCC ckid;
+	FOURCC fccType;
+	DWORD  dwPChannels[1];
+};
+
+struct _DMUS_IO_PORTCONFIG_HEADER {
+	GUID  guidPort;
+	DWORD dwPChannelBase;
+	DWORD dwPChannelCount;
+	DWORD dwFlags;
+};
+
+struct _DMUS_IO_PCHANNELTOBUFFER_HEADER {
+	DWORD dwPChannelBase;
+	DWORD dwPChannelCount;
+	DWORD dwBufferCount;
+	DWORD dwFlags;
+};
+
+struct _DMUS_IO_BUFFER_ATTRIBUTES_HEADER {
+	GUID  guidBufferID;
+	DWORD dwFlags;
+};
+
+struct _DMUS_IO_BAND_TRACK_HEADER {
+	BOOL bAutoDownload;
+};
+
+struct _DMUS_IO_BAND_ITEM_HEADER {
+	MUSIC_TIME lBandTime;
+};
+
+struct _DMUS_IO_BAND_ITEM_HEADER2 {
+	MUSIC_TIME lBandTimeLogical;
+	MUSIC_TIME lBandTimePhysical;
+};
+
+struct _DMUS_IO_INSTRUMENT {
+	DWORD dwPatch;
+	DWORD dwAssignPatch;
+	DWORD dwNoteRanges[4];
+	DWORD dwPChannel;
+	DWORD dwFlags;
+	BYTE  bPan;
+	BYTE  bVolume;
+	short nTranspose;
+	DWORD dwChannelPriority;
+	short nPitchBendRange;
+};
+
+struct _DMUS_IO_WAVE_HEADER {
+	REFERENCE_TIME rtReadAhead;
+	DWORD          dwFlags;
+};
+
+struct _DMUS_IO_WAVE_TRACK_HEADER {
+	long  lVolume;
+	DWORD dwFlags;
+};
+
+struct _DMUS_IO_WAVE_PART_HEADER {
+    long  lVolume;
+    DWORD dwVariations;
+    DWORD dwPChannel;
+    DWORD dwLockToPart;
+    DWORD dwFlags;
+    DWORD dwIndex;
+};
+
+struct _DMUS_IO_WAVE_ITEM_HEADER  {
+	long           lVolume;
+	long           lPitch;
+	DWORD          dwVariations;
+	REFERENCE_TIME rtTime;
+	REFERENCE_TIME rtStartOffset;
+	REFERENCE_TIME rtReserved;
+	REFERENCE_TIME rtDuration;
+	MUSIC_TIME     mtLogicalTime;
+	DWORD          dwLoopStart;
+	DWORD          dwLoopEnd;
+	DWORD          dwFlags;
+	WORD           wVolumeRange;
+	WORD           wPitchRange;
+};
+
+struct _DMUS_IO_CONTAINER_HEADER {
+	DWORD dwFlags;
+};
+
+struct _DMUS_IO_CONTAINED_OBJECT_HEADER {
+	GUID   guidClassID;
+	DWORD  dwFlags;
+	FOURCC ckid;
+	FOURCC fccType;
+};
+
+struct _DMUS_IO_SEGMENT_HEADER {
+	DWORD          dwRepeats;
+	MUSIC_TIME     mtLength;
+	MUSIC_TIME     mtPlayStart;
+	MUSIC_TIME     mtLoopStart;
+	MUSIC_TIME     mtLoopEnd;
+	DWORD          dwResolution;
+	/* DX8 */
+	REFERENCE_TIME rtLength;
+	DWORD          dwFlags;
+	DWORD          dwReserved;
+	/* DX9 */
+	REFERENCE_TIME rtLoopStart;
+	REFERENCE_TIME rtLoopEnd;
+	REFERENCE_TIME rtPlayStart;
+};
+
+struct _DMUS_IO_TRACK_HEADER {
+	GUID   guidClassID;
+	DWORD  dwPosition;
+	DWORD  dwGroup;
+	FOURCC ckid;
+	FOURCC fccType;
+};
+
+struct _DMUS_IO_TRACK_EXTRAS_HEADER {
+	DWORD dwFlags;
+	DWORD dwPriority;
+};
+
+struct _DMUS_IO_REFERENCE {
+	GUID  guidClassID;
+	DWORD dwValidData;
+};
+
+struct _DMUS_IO_CHORDMAP {
+	WCHAR wszLoadName[20];
+	DWORD dwScalePattern;
+	DWORD dwFlags;
+};
+
+struct _DMUS_IO_CHORDMAP_SUBCHORD {
+	DWORD dwChordPattern;
+	DWORD dwScalePattern;
+	DWORD dwInvertPattern;
+	BYTE  bChordRoot;
+	BYTE  bScaleRoot;
+	WORD  wCFlags;
+	DWORD dwLevels;
+};
+
+struct _DMUS_IO_CHORDENTRY {
+	DWORD dwFlags;
+	WORD  wConnectionID;
+};
+
+struct _DMUS_IO_NEXTCHORD {
+	DWORD dwFlags;
+	WORD  nWeight;
+	WORD  wMinBeats;
+	WORD  wMaxBeats;
+	WORD  wConnectionID;
+};
+
+struct _DMUS_IO_CHORDMAP_SIGNPOST {
+	DWORD dwChords;
+	DWORD dwFlags;
+};
+
+struct _DMUS_IO_SCRIPT_HEADER {
+	DWORD dwFlags;
+};
+
+struct _DMUS_IO_SIGNPOST {
+	MUSIC_TIME mtTime;
+	DWORD      dwChords;
+	WORD       wMeasure;
+};
+
+struct _DMUS_IO_MUTE {
+	MUSIC_TIME mtTime;
+	DWORD      dwPChannel;
+	DWORD      dwPChannelMap;
+};
+
+struct _DMUS_IO_TIMESIGNATURE_ITEM {
+	MUSIC_TIME lTime;
+	BYTE       bBeatsPerMeasure;
+	BYTE       bBeat;
+	WORD       wGridsPerBeat;
+};
+
+struct _DMUS_IO_VALID_START {
+	MUSIC_TIME mtTime;
+};
+
+struct _DMUS_IO_PLAY_MARKER {
+	MUSIC_TIME mtTime;
+};
+
+struct _DMUS_IO_SEGMENT_TRACK_HEADER {
+	DWORD dwFlags;
+};
+
+struct _DMUS_IO_SEGMENT_ITEM_HEADER {
+	MUSIC_TIME lTimeLogical;
+	MUSIC_TIME lTimePhysical;
+	DWORD      dwPlayFlags;
+	DWORD      dwFlags;
+};
+
+struct _DMUS_IO_SCRIPTTRACK_EVENTHEADER {
+	DWORD      dwFlags;
+	MUSIC_TIME lTimeLogical;
+	MUSIC_TIME lTimePhysical;
+};
+
+struct _DMUS_IO_LYRICSTRACK_EVENTHEADER {
+	DWORD dwFlags;
+	DWORD dwTimingFlags;
+	MUSIC_TIME lTimeLogical;
+	MUSIC_TIME lTimePhysical;
+};
+
+struct _DMUS_IO_PARAMCONTROLTRACK_OBJECTHEADER {
+	DWORD dwFlags;
+	GUID guidTimeFormat;
+	DWORD dwPChannel;
+	DWORD dwStage;
+	DWORD dwBuffer;
+	GUID guidObject;
+	DWORD dwIndex;
+};
+
+struct _DMUS_IO_PARAMCONTROLTRACK_PARAMHEADER {
+	DWORD dwFlags;
+	DWORD dwIndex;
+};
+
+struct _DMUS_IO_PARAMCONTROLTRACK_CURVEINFO {
+	MUSIC_TIME mtStartTime;
+	MUSIC_TIME mtEndTime;
+	float      fltStartValue;
+	float      fltEndValue;
+	DWORD      dwCurveType;
+	DWORD      dwFlags;
+};
+
+struct _DSOUND_IO_DSBUFFERDESC {
+	DWORD dwFlags;
+	WORD  nChannels;
+	LONG  lVolume;
+	LONG  lPan;
+	DWORD dwReserved;
+};
+
+struct _DSOUND_IO_DSBUSID {
+	DWORD busid[1];
+};
+
+struct _DSOUND_IO_3D {
+	GUID guid3DAlgorithm;
+	DS3DBUFFER ds3d;
+};
+
+struct _DSOUND_IO_DXDMO_HEADER {
+	DWORD dwEffectFlags;
+	GUID  guidDSFXClass;
+	GUID  guidReserved;
+	GUID  guidSendBuffer;
+	DWORD dwReserved;
+};
+
+struct _DSOUND_IO_DXDMO_DATA {
+	DWORD data[1];
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <poppack.h>
+
+#endif /* __WINE_DMUSIC_FILEFORMATS_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmusici.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmusici.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmusici.h	(revision 16410)
@@ -0,0 +1,1738 @@
+/*
+ *  DirectMusic Performance API
+ *
+ *  Copyright (C) 2003-2004 Rok Mandeljc
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2.1 of the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DMUSIC_PERFORMANCE_H
+#define __WINE_DMUSIC_PERFORMANCE_H
+
+#ifndef __WINESRC__
+#include <windows.h>
+#else
+#include <oleauto.h> /* VARIANT */
+#endif /* __WINESRC__ */
+
+#define COM_NO_WINDOWS_H
+#include <objbase.h>
+#include <mmsystem.h>
+#include <dmusicc.h>
+#include <dmplugin.h>
+#include <pshpack8.h>
+
+#ifdef WINE_NO_UNICODE_MACROS
+#undef AddPort
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*****************************************************************************
+ * Predeclare the interfaces
+ */
+/* CLSIDs */
+DEFINE_GUID(CLSID_DirectMusicAudioPathConfig,              0xee0b9ca0,0xa81e,0x11d3,0x9b,0xd1,0x00,0x80,0xc7,0x15,0x0a,0x74);
+DEFINE_GUID(CLSID_DirectMusicBand,                         0x79ba9e00,0xb6ee,0x11d1,0x86,0xbe,0x00,0xc0,0x4f,0xbf,0x8f,0xef);
+DEFINE_GUID(CLSID_DirectMusicChordMap,                     0xd2ac288f,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicComposer,                     0xd2ac2890,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicContainer,                    0x9301e380,0x1f22,0x11d3,0x82,0x26,0xd2,0xfa,0x76,0x25,0x5d,0x47);
+DEFINE_GUID(CLSID_DirectMusicGraph,                        0xd2ac2884,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicLoader,                       0xd2ac2892,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicPatternTrack,                 0xd2ac2897,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicPerformance,                  0xd2ac2881,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicScript,                       0x810b5013,0xe88d,0x11d2,0x8b,0xc1,0x00,0x60,0x08,0x93,0xb1,0xb6);
+DEFINE_GUID(CLSID_DirectMusicSegment,                      0xd2ac2882,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicSegmentState,                 0xd2ac2883,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicStyle,                        0xd2ac288a,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectSoundWave,                         0x8a667154,0xf9cb,0x11d2,0xad,0x8a,0x00,0x60,0xb0,0x57,0x5a,0xbc);
+/* MS doesn't support this in DX 9.0 and newer... but there's no harm in keeping it around */
+DEFINE_GUID(CLSID_DirectMusicSong,                         0xaed5f0a5,0xd972,0x483d,0xa3,0x84,0x64,0x9d,0xfe,0xb9,0xc1,0x81);
+/* these CLSIDs aren't officially declared in any dmusic header, but are used by wine's regsvr implementations*/
+DEFINE_GUID(CLSID_DirectMusicSynthSink,                    0xaec17ce3,0xa514,0x11d1,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
+DEFINE_GUID(CLSID_DirectMusicSection,                      0x3f037241,0x414e,0x11d1,0xa7,0xce,0x00,0xa0,0xc9,0x13,0xf7,0x3c);
+DEFINE_GUID(CLSID_DirectMusicAuditionTrack,                0xd2ac2897,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicSegTriggerTrack,              0xbae4d665,0x4ea1,0x11d3,0x8b,0xda,0x00,0x60,0x08,0x93,0xb1,0xb6);
+DEFINE_GUID(CLSID_DirectMusicAudioPath,                    0xee0b9ca0,0xa81e,0x11d3,0x9b,0xd1,0x00,0x80,0xc7,0x15,0x0a,0x74);
+DEFINE_GUID(CLSID_DirectMusicTemplate,                     0xd30bcc65,0x60e8,0x11d1,0xa7,0xce,0x00,0xa0,0xc9,0x13,0xf7,0x3c);
+DEFINE_GUID(CLSID_DirectMusicScriptAutoImpSegment,         0x4062c116,0x0270,0x11d3,0x8b,0xcb,0x00,0x60,0x08,0x93,0xb1,0xb6);
+DEFINE_GUID(CLSID_AudioVBScript,                           0x4ee17959,0x931e,0x49e4,0xa2,0xc6,0x97,0x7e,0xcf,0x36,0x28,0xf3);
+DEFINE_GUID(CLSID_DirectMusicScriptAutoImpPerformance,     0xa861c6e2,0xfcfc,0x11d2,0x8b,0xc9,0x00,0x60,0x08,0x93,0xb1,0xb6);
+DEFINE_GUID(CLSID_DirectMusicScriptSourceCodeLoader,       0xc70eb77f,0xefd4,0x4678,0xa2,0x7b,0xbf,0x16,0x48,0xf3,0x0d,0x04);
+DEFINE_GUID(CLSID_DirectMusicScriptAutoImpSegmentState,    0xebf2320a,0x2502,0x11d3,0x8b,0xd1,0x00,0x60,0x08,0x93,0xb1,0xb6);
+DEFINE_GUID(CLSID_DirectMusicScriptAutoImpAudioPathConfig, 0x1cebde3e,0x6b91,0x484a,0xaf,0x48,0x5e,0x4f,0x4e,0xd6,0xb1,0xe1);
+DEFINE_GUID(CLSID_DirectMusicScriptAutoImpAudioPath,       0x2c5f9b72,0x7148,0x4d97,0xbf,0xc9,0x68,0xa0,0xe0,0x76,0xbe,0xbd);
+DEFINE_GUID(CLSID_DirectMusicScriptAutoImpSong,            0xa16f1761,0xb6d8,0x42eb,0x8d,0x57,0x4a,0x44,0xfe,0xdd,0x3b,0xd2);
+
+/* IIDs */
+DEFINE_GUID(IID_IDirectMusicAudioPath,                     0xc87631f5,0x23be,0x4986,0x88,0x36,0x05,0x83,0x2f,0xcc,0x48,0xf9);
+DEFINE_GUID(IID_IDirectMusicBand,                          0xd2ac28c0,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicChordMap,                      0xd2ac28be,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicComposer,                      0xd2ac28bf,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicContainer,                     0x9301e386,0x1f22,0x11d3,0x82,0x26,0xd2,0xfa,0x76,0x25,0x5d,0x47);
+DEFINE_GUID(IID_IDirectMusicGetLoader,                     0x68a04844,0xd13d,0x11d1,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
+DEFINE_GUID(IID_IDirectMusicGraph,                         0x2befc277,0x5497,0x11d2,0xbc,0xcb,0x00,0xa0,0xc9,0x22,0xe6,0xeb);
+DEFINE_GUID(IID_IDirectMusicLoader,                        0x2ffaaca2,0x5dca,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
+DEFINE_GUID(IID_IDirectMusicLoader8,                       0x19e7c08c,0x0a44,0x4e6a,0xa1,0x16,0x59,0x5a,0x7c,0xd5,0xde,0x8c);
+DEFINE_GUID(IID_IDirectMusicObject,                        0xd2ac28b5,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicPatternTrack,                  0x51c22e10,0xb49f,0x46fc,0xbe,0xc2,0xe6,0x28,0x8f,0xb9,0xed,0xe6);
+DEFINE_GUID(IID_IDirectMusicPerformance,                   0x07d43d03,0x6523,0x11d2,0x87,0x1d,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicPerformance2,                  0x6fc2cae0,0xbc78,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
+DEFINE_GUID(IID_IDirectMusicPerformance8,                  0x679c4137,0xc62e,0x4147,0xb2,0xb4,0x9d,0x56,0x9a,0xcb,0x25,0x4c);
+DEFINE_GUID(IID_IDirectMusicScript,                        0x2252373a,0x5814,0x489b,0x82,0x09,0x31,0xfe,0xde,0xba,0xf1,0x37);
+DEFINE_GUID(IID_IDirectMusicSegment,                       0xf96029a2,0x4282,0x11d2,0x87,0x17,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicSegment2,                      0xd38894d1,0xc052,0x11d2,0x87,0x2f,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicSegment8,                      0xc6784488,0x41a3,0x418f,0xaa,0x15,0xb3,0x50,0x93,0xba,0x42,0xd4);
+DEFINE_GUID(IID_IDirectMusicSegmentState,                  0xa3afdcc7,0xd3ee,0x11d1,0xbc,0x8d,0x00,0xa0,0xc9,0x22,0xe6,0xeb);
+DEFINE_GUID(IID_IDirectMusicSegmentState8,                 0xa50e4730,0x0ae4,0x48a7,0x98,0x39,0xbc,0x04,0xbf,0xe0,0x77,0x72);
+DEFINE_GUID(IID_IDirectMusicStyle,                         0xd2ac28bd,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicStyle8,                        0xfd24ad8a,0xa260,0x453d,0xbf,0x50,0x6f,0x93,0x84,0xf7,0x09,0x85);
+
+/* IIDs of unchanged interfaces */
+#define IID_IDirectMusicAudioPath8    IID_IDirectMusicAudioPath
+#define IID_IDirectMusicBand8         IID_IDirectMusicBand
+#define IID_IDirectMusicChordMap8     IID_IDirectMusicChordMap
+#define IID_IDirectMusicComposer8     IID_IDirectMusicComposer
+#define IID_IDirectMusicContainer8    IID_IDirectMusicContainer
+#define IID_IDirectMusicGetLoader8    IID_IDirectMusicGetLoader
+#define IID_IDirectMusicGraph8        IID_IDirectMusicGraph
+#define IID_IDirectMusicObject8       IID_IDirectMusicObject
+#define IID_IDirectMusicPatternTrack8 IID_IDirectMusicPatternTrack
+#define IID_IDirectMusicScript8       IID_IDirectMusicScript
+
+/* typedef definitions */
+typedef struct IDirectMusicBand *LPDIRECTMUSICBAND;
+typedef struct IDirectMusicBand         IDirectMusicBand8,         *LPDIRECTMUSICBAND8;
+typedef struct IDirectMusicObject *LPDIRECTMUSICOBJECT;
+typedef struct IDirectMusicObject       IDirectMusicObject8,       *LPDIRECTMUSICOBJECT8;
+typedef struct IDirectMusicLoader *LPDIRECTMUSICLOADER;
+typedef struct IDirectMusicLoader8 *LPDIRECTMUSICLOADER8;
+typedef struct IDirectMusicGetLoader *LPDIRECTMUSICGETLOADER;
+typedef struct IDirectMusicGetLoader    IDirectMusicGetLoader8,    *LPDIRECTMUSICGETLOADER8;
+typedef struct IDirectMusicAudioPath *LPDIRECTMUSICAUDIOPATH;
+typedef struct IDirectMusicAudioPath    IDirectMusicAudioPath8,    *LPDIRECTMUSICAUDIOPATH8;
+typedef struct IDirectMusicStyle *LPDIRECTMUSICSTYLE;
+typedef struct IDirectMusicStyle8 *LPDIRECTMUSICSTYLE8;
+typedef struct IDirectMusicChordMap *LPDIRECTMUSICCHORDMAP;
+typedef struct IDirectMusicChordMap     IDirectMusicChordMap8,     *LPDIRECTMUSICCHORDMAP8;
+typedef struct IDirectMusicComposer *LPDIRECTMUSICCOMPOSER;
+typedef struct IDirectMusicComposer     IDirectMusicComposer8,     *LPDIRECTMUSICCOMPOSER8;
+typedef struct IDirectMusicPatternTrack *LPDIRECTMUSICPATTERNTRACK;
+typedef struct IDirectMusicPatternTrack IDirectMusicPatternTrack8, *LPDIRECTMUSICPATTERNTRACK8;
+typedef struct IDirectMusicScript *LPDIRECTMUSICSCRIPT;
+typedef struct IDirectMusicScript       IDirectMusicScript8,       *LPDIRECTMUSICSCRIPT8;
+typedef struct IDirectMusicContainer *LPDIRECTMUSICCONTAINER;
+typedef struct IDirectMusicContainer    IDirectMusicContainer8,    *LPDIRECTMUSICCONTAINER8;
+
+/* RPC declarations */
+typedef struct IDirectMusicBand   *LPDMUS_BAND;
+typedef struct IDirectMusicLoader *LPDMUS_LOADER;
+typedef struct IDirectMusicObject *LPDMUS_OBJECT;
+
+/* GUIDs - all types loader */
+DEFINE_GUID(GUID_DirectMusicAllTypes,         0xd2ac2893,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+/* GUIDs - notification */
+DEFINE_GUID(GUID_NOTIFICATION_CHORD,          0xd2ac289b,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_NOTIFICATION_COMMAND,        0xd2ac289c,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_NOTIFICATION_MEASUREANDBEAT, 0xd2ac289a,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_NOTIFICATION_PERFORMANCE,    0x81f75bc5,0x4e5d,0x11d2,0xbc,0xc7,0x00,0xa0,0xc9,0x22,0xe6,0xeb);
+DEFINE_GUID(GUID_NOTIFICATION_RECOMPOSE,      0xd348372b,0x945b,0x45ae,0xa5,0x22,0x45,0x0f,0x12,0x5b,0x84,0xa5);
+DEFINE_GUID(GUID_NOTIFICATION_SEGMENT,        0xd2ac2899,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+/* GUIDs - param types */
+DEFINE_GUID(GUID_BandParam,                   0x02bb1938,0xcb8b,0x11d2,0x8b,0xb9,0x00,0x60,0x08,0x93,0xb1,0xb6);
+DEFINE_GUID(GUID_ChordParam,                  0xd2ac289e,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_CommandParam,                0xd2ac289d,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_CommandParam2,               0x28f97ef7,0x9538,0x11d2,0x97,0xa9,0x00,0xc0,0x4f,0xa3,0x6e,0x58);
+DEFINE_GUID(GUID_CommandParamNext,            0x472afe7a,0x281b,0x11d3,0x81,0x7d,0x00,0xc0,0x4f,0xa3,0x6e,0x58);
+DEFINE_GUID(GUID_IDirectMusicBand,            0xd2ac28ac,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_IDirectMusicChordMap,        0xd2ac28ad,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_IDirectMusicStyle,           0xd2ac28a1,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_MuteParam,                   0xd2ac28af,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_Play_Marker,                 0xd8761a41,0x801a,0x11d3,0x9b,0xd1,0xda,0xf7,0xe1,0xc3,0xd8,0x34);
+DEFINE_GUID(GUID_RhythmParam,                 0xd2ac289f,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_TempoParam,                  0xd2ac28a5,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_TimeSignature,               0xd2ac28a4,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_Valid_Start_Time,            0x7f6b1760,0x1fdb,0x11d3,0x82,0x26,0x44,0x45,0x53,0x54,0x00,0x00);
+/* GUIDs - param setting */
+DEFINE_GUID(GUID_Clear_All_Bands,             0xd2ac28ab,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_ConnectToDLSCollection,      0x1db1ae6b,0xe92e,0x11d1,0xa8,0xc5,0x00,0xc0,0x4f,0xa3,0x72,0x6e);
+DEFINE_GUID(GUID_Disable_Auto_Download,       0xd2ac28aa,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_DisableTempo,                0x45fc707d,0x1db4,0x11d2,0xbc,0xac,0x00,0xa0,0xc9,0x22,0xe6,0xeb);
+DEFINE_GUID(GUID_DisableTimeSig,              0x45fc707b,0x1db4,0x11d2,0xbc,0xac,0x00,0xa0,0xc9,0x22,0xe6,0xeb);
+DEFINE_GUID(GUID_Download,                    0xd2ac28a7,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_DownloadToAudioPath,         0x9f2c0341,0xc5c4,0x11d3,0x9b,0xd1,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_Enable_Auto_Download,        0xd2ac28a9,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_EnableTempo,                 0x45fc707e,0x1db4,0x11d2,0xbc,0xac,0x00,0xa0,0xc9,0x22,0xe6,0xeb);
+DEFINE_GUID(GUID_EnableTimeSig,               0x45fc707c,0x1db4,0x11d2,0xbc,0xac,0x00,0xa0,0xc9,0x22,0xe6,0xeb);
+#define GUID_IgnoreBankSelectForGM            GUID_StandardMIDIFile
+DEFINE_GUID(GUID_SeedVariations,              0x65b76fa5,0xff37,0x11d2,0x81,0x4e,0x00,0xc0,0x4f,0xa3,0x6e,0x58);
+DEFINE_GUID(GUID_StandardMIDIFile,            0x06621075,0xe92e,0x11d1,0xa8,0xc5,0x00,0xc0,0x4f,0xa3,0x72,0x6e);
+DEFINE_GUID(GUID_Unload,                      0xd2ac28a8,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_UnloadFromAudioPath,         0x9f2c0342,0xc5c4,0x11d3,0x9b,0xd1,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_Variations,                  0x11f72cce,0x26e6,0x4ecd,0xaf,0x2e,0xd6,0x68,0xe6,0x67,0x07,0xd8);
+/* GUIDs - global data */
+DEFINE_GUID(GUID_PerfMasterTempo,             0xd2ac28b0,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_PerfMasterVolume,            0xd2ac28b1,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_PerfMasterGrooveLevel,       0xd2ac28b2,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_PerfAutoDownload,            0xfb09565b,0x3631,0x11d2,0xbc,0xb8,0x00,0xa0,0xc9,0x22,0xe6,0xeb);
+/* GUID - default DLS collection */
+DEFINE_GUID(GUID_DefaultGMCollection,         0xf17e8673,0xc3b4,0x11d1,0x87,0x0b,0x00,0x60,0x08,0x93,0xb1,0xbd);
+/* GUID - default synthesizer */
+DEFINE_GUID(GUID_Synth_Default,               0x26bb9432,0x45fe,0x48d3,0xa3,0x75,0x24,0x72,0xc5,0xe3,0xe7,0x86);
+/* GUIDs - define default buffer configuration */
+DEFINE_GUID(GUID_Buffer_Reverb,               0x186cc541,0xdb29,0x11d3,0x9b,0xd1,0x00,0x80,0xc7,0x15,0x0a,0x74);
+DEFINE_GUID(GUID_Buffer_EnvReverb,            0x186cc542,0xdb29,0x11d3,0x9b,0xd1,0x00,0x80,0xc7,0x15,0x0a,0x74);
+DEFINE_GUID(GUID_Buffer_Stereo,               0x186cc545,0xdb29,0x11d3,0x9b,0xd1,0x00,0x80,0xc7,0x15,0x0a,0x74);
+DEFINE_GUID(GUID_Buffer_3D_Dry,               0x186cc546,0xdb29,0x11d3,0x9b,0xd1,0x00,0x80,0xc7,0x15,0x0a,0x74);
+DEFINE_GUID(GUID_Buffer_Mono,                 0x186cc547,0xdb29,0x11d3,0x9b,0xd1,0x00,0x80,0xc7,0x15,0x0a,0x74);
+
+
+/*****************************************************************************
+ * Typedef definitions
+ */
+typedef WORD    TRANSITION_TYPE, *LPTRANSITION_TYPE;
+/*
+ * typedef __int64 REFERENCE_TIME,  *LPREFERENCE_TIME;
+ * typedef long    MUSIC_TIME,      *LPMUSIC_TIME;
+ */
+
+
+/*****************************************************************************
+ * Flags
+ */
+#define DMUS_APATH_SHARED_STEREOPLUSREVERB 0x1
+#define DMUS_APATH_DYNAMIC_3D              0x6
+#define DMUS_APATH_DYNAMIC_MONO            0x7
+#define DMUS_APATH_DYNAMIC_STEREO          0x8
+
+#define DMUS_AUDIOF_3D          0x01
+#define DMUS_AUDIOF_ENVIRON     0x02
+#define DMUS_AUDIOF_EAX         0x04
+#define DMUS_AUDIOF_DMOS        0x08
+#define DMUS_AUDIOF_STREAMING   0x10
+#define DMUS_AUDIOF_BUFFERS     0x20
+#define DMUS_AUDIOF_ALL         0x3F
+
+#define DMUS_AUDIOPARAMS_FEATURES     0x1
+#define DMUS_AUDIOPARAMS_VOICES       0x2
+#define DMUS_AUDIOPARAMS_SAMPLERATE   0x4
+#define DMUS_AUDIOPARAMS_DEFAULTSYNTH 0x8
+
+#define DMUS_CURVET_PBCURVE   0x03
+#define DMUS_CURVET_CCCURVE   0x04
+#define DMUS_CURVET_MATCURVE  0x05
+#define DMUS_CURVET_PATCURVE  0x06
+#define DMUS_CURVET_RPNCURVE  0x07
+#define DMUS_CURVET_NRPNCURVE 0x08
+
+#define DMUS_MASTERTEMPO_MAX 100.0f
+#define DMUS_MASTERTEMPO_MIN 0.01f
+
+#define DMUS_MAX_NAME     0x40
+#define DMUS_MAX_CATEGORY 0x40
+#define DMUS_MAX_FILENAME MAX_PATH
+
+#define DMUS_MAXSUBCHORD 0x8
+
+#define DMUS_NOTIFICATION_SEGSTART       0x0
+#define DMUS_NOTIFICATION_SEGEND         0x1
+#define DMUS_NOTIFICATION_SEGALMOSTEND   0x2
+#define DMUS_NOTIFICATION_SEGLOOP        0x3
+#define DMUS_NOTIFICATION_SEGABORT       0x4
+#define DMUS_NOTIFICATION_MUSICSTARTED   0x0
+#define DMUS_NOTIFICATION_MUSICSTOPPED   0x1
+#define DMUS_NOTIFICATION_MUSICALMOSTEND 0x2
+#define DMUS_NOTIFICATION_MEASUREBEAT    0x0
+#define DMUS_NOTIFICATION_CHORD          0x0
+#define DMUS_NOTIFICATION_GROOVE         0x0
+#define DMUS_NOTIFICATION_EMBELLISHMENT  0x1
+#define DMUS_NOTIFICATION_RECOMPOSE      0x0
+
+#define DMUS_OBJ_OBJECT   0x001
+#define DMUS_OBJ_CLASS    0x002
+#define DMUS_OBJ_NAME     0x004
+#define DMUS_OBJ_CATEGORY 0x008
+#define DMUS_OBJ_FILENAME 0x010
+#define DMUS_OBJ_FULLPATH 0x020
+#define DMUS_OBJ_URL      0x040
+#define DMUS_OBJ_VERSION  0x080
+#define DMUS_OBJ_DATE     0x100
+#define DMUS_OBJ_LOADED   0x200
+#define DMUS_OBJ_MEMORY   0x400
+#define DMUS_OBJ_STREAM   0x800
+
+#define DMUS_PATH_SEGMENT           0x1000
+#define DMUS_PATH_SEGMENT_TRACK     0x1100
+#define DMUS_PATH_SEGMENT_GRAPH     0x1200
+#define DMUS_PATH_SEGMENT_TOOL      0x1300
+#define DMUS_PATH_AUDIOPATH         0x2000
+#define DMUS_PATH_AUDIOPATH_GRAPH   0x2200
+#define DMUS_PATH_AUDIOPATH_TOOL    0x2300
+#define DMUS_PATH_PERFORMANCE       0x3000
+#define DMUS_PATH_PERFORMANCE_GRAPH 0x3200
+#define DMUS_PATH_PERFORMANCE_TOOL  0x3300
+#define DMUS_PATH_PORT              0x4000
+#define DMUS_PATH_BUFFER            0x6000
+#define DMUS_PATH_BUFFER_DMO        0x6100
+#define DMUS_PATH_MIXIN_BUFFER      0x7000
+#define DMUS_PATH_MIXIN_BUFFER_DMO  0x7100
+#define DMUS_PATH_PRIMARY_BUFFER    0x8000
+
+#define DMUS_PCHANNEL_BROADCAST_PERFORMANCE	0xFFFFFFFF
+#define DMUS_PCHANNEL_BROADCAST_AUDIOPATH   0xFFFFFFFE
+#define DMUS_PCHANNEL_BROADCAST_SEGMENT	    0xFFFFFFFD
+#define DMUS_PCHANNEL_BROADCAST_GROUPS  	0xFFFFFFFC
+#define DMUS_PCHANNEL_ALL                   0xFFFFFFFB 
+
+#define DMUS_PLAYMODE_FIXED             0x0  
+#define DMUS_PLAYMODE_FIXEDTOKEY        DMUS_PLAYMODE_KEY_ROOT
+#define DMUS_PLAYMODE_FIXEDTOCHORD      DMUS_PLAYMODE_CHORD_ROOT
+#define DMUS_PLAYMODE_PEDALPOINT        (DMUS_PLAYMODE_KEY_ROOT | DMUS_PLAYMODE_SCALE_INTERVALS)
+#define DMUS_PLAYMODE_MELODIC           (DMUS_PLAYMODE_CHORD_ROOT | DMUS_PLAYMODE_SCALE_INTERVALS)
+#define DMUS_PLAYMODE_NORMALCHORD       (DMUS_PLAYMODE_CHORD_ROOT | DMUS_PLAYMODE_CHORD_INTERVALS)
+#define DMUS_PLAYMODE_ALWAYSPLAY        (DMUS_PLAYMODE_MELODIC | DMUS_PLAYMODE_NORMALCHORD)
+#define DMUS_PLAYMODE_PEDALPOINTCHORD   (DMUS_PLAYMODE_KEY_ROOT | DMUS_PLAYMODE_CHORD_INTERVALS)
+#define DMUS_PLAYMODE_PEDALPOINTALWAYS  (DMUS_PLAYMODE_PEDALPOINT | DMUS_PLAYMODE_PEDALPOINTCHORD)
+#define DMUS_PLAYMODE_PURPLEIZED        DMUS_PLAYMODE_ALWAYSPLAY
+#define DMUS_PLAYMODE_SCALE_ROOT        DMUS_PLAYMODE_KEY_ROOT
+#define DMUS_PLAYMODE_FIXEDTOSCALE      DMUS_PLAYMODE_FIXEDTOKEY
+
+#define DMUS_PPQ 768
+
+#define DMUS_SEG_REPEAT_INFINITE 0xFFFFFFFF
+#define DMUS_SEG_ALLTRACKS       0x80000000
+#define DMUS_SEG_ANYTRACK        0x80000000
+
+#define DMUS_TEMPO_MAX 1000
+#define DMUS_TEMPO_MIN 1
+
+#define DMUS_TRACKCONFIG_OVERRIDE_ALL          0x00001
+#define DMUS_TRACKCONFIG_OVERRIDE_PRIMARY      0x00002
+#define DMUS_TRACKCONFIG_FALLBACK              0x00004
+#define DMUS_TRACKCONFIG_CONTROL_ENABLED       0x00008
+#define DMUS_TRACKCONFIG_PLAY_ENABLED          0x00010
+#define DMUS_TRACKCONFIG_NOTIFICATION_ENABLED  0x00020
+#define DMUS_TRACKCONFIG_PLAY_CLOCKTIME        0x00040
+#define DMUS_TRACKCONFIG_PLAY_COMPOSE 	       0x00080
+#define DMUS_TRACKCONFIG_LOOP_COMPOSE          0x00100
+#define DMUS_TRACKCONFIG_COMPOSING             0x00200
+#define DMUS_TRACKCONFIG_TRANS1_FROMSEGSTART   0x00400
+#define DMUS_TRACKCONFIG_TRANS1_FROMSEGCURRENT 0x00800
+#define DMUS_TRACKCONFIG_TRANS1_TOSEGSTART     0x01000
+#define DMUS_TRACKCONFIG_CONTROL_PLAY          0x10000
+#define DMUS_TRACKCONFIG_CONTROL_NOTIFICATION  0x20000
+#define DMUS_TRACKCONFIG_DEFAULT               (DMUS_TRACKCONFIG_CONTROL_ENABLED | DMUS_TRACKCONFIG_PLAY_ENABLED | DMUS_TRACKCONFIG_NOTIFICATION_ENABLED)
+
+#define DMUS_WAVEF_OFF          0x01
+#define DMUS_WAVEF_STREAMING    0x02
+#define DMUS_WAVEF_NOINVALIDATE 0x04
+#define DMUS_WAVEF_NOPREROLL    0x08
+#define DMUS_WAVEF_IGNORELOOPS  0x20
+
+#define DMUSB_LOADED  0x1
+#define DMUSB_DEFAULT 0x2
+
+#define MT_MIN 0x80000000
+#define MT_MAX 0x7FFFFFFF
+
+
+/*****************************************************************************
+ * Definitions
+ */
+#define DMUS_PMSG_PART \
+	DWORD              dwSize; \
+	REFERENCE_TIME     rtTime; \
+	MUSIC_TIME         mtTime; \
+	DWORD              dwFlags; \
+	DWORD              dwPChannel; \
+	DWORD              dwVirtualTrackID; \
+	IDirectMusicTool*  pTool; \
+	struct IDirectMusicGraph* pGraph; \
+	DWORD              dwType; \
+	DWORD              dwVoiceID; \
+	DWORD              dwGroupID; \
+	IUnknown*          punkUser;
+
+
+/*****************************************************************************
+ * Enumerations
+ */
+/* typedef definitions */
+typedef enum enumDMUS_STYLET_TYPES       DMUS_STYLET_TYPES;
+typedef enum enumDMUS_COMMANDT_TYPES     DMUS_COMMANDT_TYPES;
+typedef enum enumDMUS_SHAPET_TYPES       DMUS_SHAPET_TYPES;
+typedef enum enumDMUS_COMPOSEF_FLAGS     DMUS_COMPOSEF_FLAGS;
+typedef enum enumDMUS_PMSGF_FLAGS        DMUS_PMSGF_FLAGS;
+typedef enum enumDMUS_PMSGT_TYPES        DMUS_PMSGT_TYPES;
+typedef enum enumDMUS_SEGF_FLAGS         DMUS_SEGF_FLAGS;
+typedef enum enumDMUS_TIME_RESOLVE_FLAGS DMUS_TIME_RESOLVE_FLAGS;
+typedef enum enumDMUS_CHORDKEYF_FLAGS    DMUS_CHORDKEYF_FLAGS;
+typedef enum enumDMUS_NOTEF_FLAGS        DMUS_NOTEF_FLAGS;
+typedef enum enumDMUS_PLAYMODE_FLAGS     DMUS_PLAYMODE_FLAGS;
+typedef enum enumDMUS_CURVE_FLAGS        DMUS_CURVE_FLAGS;
+
+
+
+/* actual enumerations */
+enum enumDMUS_STYLET_TYPES {
+	DMUS_STYLET_PATTERN = 0x0,
+	DMUS_STYLET_MOTIF   = 0x1,
+};
+
+enum enumDMUS_COMMANDT_TYPES {
+	DMUS_COMMANDT_GROOVE      = 0x0,
+	DMUS_COMMANDT_FILL        = 0x1,
+	DMUS_COMMANDT_INTRO       = 0x2,
+	DMUS_COMMANDT_BREAK       = 0x3,
+	DMUS_COMMANDT_END         = 0x4,
+	DMUS_COMMANDT_ENDANDINTRO = 0x5
+};
+
+enum enumDMUS_SHAPET_TYPES {
+	DMUS_SHAPET_FALLING  = 0x0,
+	DMUS_SHAPET_LEVEL    = 0x1,
+	DMUS_SHAPET_LOOPABLE = 0x2,
+	DMUS_SHAPET_LOUD     = 0x3,
+	DMUS_SHAPET_QUIET    = 0x4,
+	DMUS_SHAPET_PEAKING  = 0x5,
+	DMUS_SHAPET_RANDOM   = 0x6,
+	DMUS_SHAPET_RISING   = 0x7,
+	DMUS_SHAPET_SONG     = 0x8
+};
+
+enum enumDMUS_COMPOSEF_FLAGS {       
+	DMUS_COMPOSEF_NONE                = 0x000000,
+	DMUS_COMPOSEF_ALIGN               = 0x000001,
+	DMUS_COMPOSEF_OVERLAP             = 0x000002,
+	DMUS_COMPOSEF_IMMEDIATE           = 0x000004,
+	DMUS_COMPOSEF_GRID                = 0x000008,
+	DMUS_COMPOSEF_BEAT                = 0x000010,
+	DMUS_COMPOSEF_MEASURE             = 0x000020,
+	DMUS_COMPOSEF_AFTERPREPARETIME    = 0x000040,
+	DMUS_COMPOSEF_VALID_START_BEAT    = 0x000080,
+	DMUS_COMPOSEF_VALID_START_GRID    = 0x000100,
+	DMUS_COMPOSEF_VALID_START_TICK    = 0x000200,
+	DMUS_COMPOSEF_SEGMENTEND          = 0x000400,
+	DMUS_COMPOSEF_MARKER              = 0x000800,
+	DMUS_COMPOSEF_MODULATE            = 0x001000,
+	DMUS_COMPOSEF_LONG                = 0x002000,
+	DMUS_COMPOSEF_ENTIRE_TRANSITION   = 0x004000,
+	DMUS_COMPOSEF_1BAR_TRANSITION     = 0x008000,
+	DMUS_COMPOSEF_ENTIRE_ADDITION     = 0x010000,
+	DMUS_COMPOSEF_1BAR_ADDITION       = 0x020000,
+	DMUS_COMPOSEF_VALID_START_MEASURE = 0x040000,
+	DMUS_COMPOSEF_DEFAULT             = 0x080000,
+	DMUS_COMPOSEF_NOINVALIDATE        = 0x100000,
+	DMUS_COMPOSEF_USE_AUDIOPATH       = 0x200000,
+	DMUS_COMPOSEF_INVALIDATE_PRI      = 0x400000
+};
+
+enum enumDMUS_PMSGF_FLAGS {
+	DMUS_PMSGF_REFTIME        = 1,
+	DMUS_PMSGF_MUSICTIME      = 2,
+	DMUS_PMSGF_TOOL_IMMEDIATE = 4,
+	DMUS_PMSGF_TOOL_QUEUE     = 8,
+	DMUS_PMSGF_TOOL_ATTIME    = 0x10,
+	DMUS_PMSGF_TOOL_FLUSH     = 0x20,
+	DMUS_PMSGF_LOCKTOREFTIME  = 0x40,
+	DMUS_PMSGF_DX8            = 0x80
+};
+
+enum enumDMUS_PMSGT_TYPES {
+	DMUS_PMSGT_MIDI             = 0x00,
+	DMUS_PMSGT_NOTE             = 0x01,
+	DMUS_PMSGT_SYSEX            = 0x02,
+	DMUS_PMSGT_NOTIFICATION     = 0x03,
+	DMUS_PMSGT_TEMPO            = 0x04,
+	DMUS_PMSGT_CURVE            = 0x05,
+	DMUS_PMSGT_TIMESIG          = 0x06,
+	DMUS_PMSGT_PATCH            = 0x07,
+	DMUS_PMSGT_TRANSPOSE        = 0x08,
+	DMUS_PMSGT_CHANNEL_PRIORITY = 0x09,
+	DMUS_PMSGT_STOP             = 0x0A,
+	DMUS_PMSGT_DIRTY            = 0x0B,
+	DMUS_PMSGT_WAVE             = 0x0C,
+	DMUS_PMSGT_LYRIC            = 0x0D,
+	DMUS_PMSGT_SCRIPTLYRIC      = 0x0E,
+	DMUS_PMSGT_USER             = 0xFF
+};
+
+enum enumDMUS_SEGF_FLAGS {
+	DMUS_SEGF_REFTIME             = 0x000040,   
+	DMUS_SEGF_SECONDARY           = 0x000080,
+	DMUS_SEGF_QUEUE               = 0x000100,
+	DMUS_SEGF_CONTROL             = 0x000200,
+	DMUS_SEGF_AFTERPREPARETIME    = 0x000400,
+	DMUS_SEGF_GRID                = 0x000800,
+	DMUS_SEGF_BEAT                = 0x001000,
+	DMUS_SEGF_MEASURE             = 0x002000,
+	DMUS_SEGF_DEFAULT             = 0x004000,
+	DMUS_SEGF_NOINVALIDATE        = 0x008000,
+	DMUS_SEGF_ALIGN               = 0x0010000,
+	DMUS_SEGF_VALID_START_BEAT    = 0x0020000,
+	DMUS_SEGF_VALID_START_GRID    = 0x0040000,
+	DMUS_SEGF_VALID_START_TICK    = 0x0080000,
+	DMUS_SEGF_AUTOTRANSITION      = 0x0100000,
+	DMUS_SEGF_AFTERQUEUETIME      = 0x0200000,
+	DMUS_SEGF_AFTERLATENCYTIME    = 0x0400000,
+	DMUS_SEGF_SEGMENTEND          = 0x0800000,
+	DMUS_SEGF_MARKER              = 0x01000000,
+	DMUS_SEGF_TIMESIG_ALWAYS      = 0x02000000,
+	DMUS_SEGF_USE_AUDIOPATH       = 0x04000000,
+	DMUS_SEGF_VALID_START_MEASURE = 0x08000000,
+	DMUS_SEGF_INVALIDATE_PRI      = 0x10000000
+};
+
+enum enumDMUS_TIME_RESOLVE_FLAGS {
+	DMUS_TIME_RESOLVE_AFTERPREPARETIME = DMUS_SEGF_AFTERPREPARETIME,
+	DMUS_TIME_RESOLVE_AFTERQUEUETIME   = DMUS_SEGF_AFTERQUEUETIME,
+	DMUS_TIME_RESOLVE_AFTERLATENCYTIME = DMUS_SEGF_AFTERLATENCYTIME,
+	DMUS_TIME_RESOLVE_GRID             = DMUS_SEGF_GRID,
+	DMUS_TIME_RESOLVE_BEAT             = DMUS_SEGF_BEAT,
+	DMUS_TIME_RESOLVE_MEASURE          = DMUS_SEGF_MEASURE,
+	DMUS_TIME_RESOLVE_MARKER           = DMUS_SEGF_MARKER,
+	DMUS_TIME_RESOLVE_SEGMENTEND       = DMUS_SEGF_SEGMENTEND,
+};
+
+enum enumDMUS_CHORDKEYF_FLAGS {
+	DMUS_CHORDKEYF_SILENT = 0x1,
+};
+
+enum enumDMUS_NOTEF_FLAGS {
+	DMUS_NOTEF_NOTEON               = 0x01,
+	/* DX8 */
+	DMUS_NOTEF_NOINVALIDATE         = 0x02,
+	DMUS_NOTEF_NOINVALIDATE_INSCALE = 0x04,
+	DMUS_NOTEF_NOINVALIDATE_INCHORD = 0x08,
+	DMUS_NOTEF_REGENERATE           = 0x10,
+};
+
+enum enumDMUS_PLAYMODE_FLAGS {
+	DMUS_PLAYMODE_KEY_ROOT        = 0x01,
+	DMUS_PLAYMODE_CHORD_ROOT      = 0x02,
+	DMUS_PLAYMODE_SCALE_INTERVALS = 0x04,
+	DMUS_PLAYMODE_CHORD_INTERVALS = 0x08,
+	DMUS_PLAYMODE_NONE            = 0x10,
+};
+
+enum enumDMUS_CURVE_FLAGS {
+	DMUS_CURVE_RESET              = 0x1,
+	DMUS_CURVE_START_FROM_CURRENT = 0x2
+};
+
+enum { 
+	DMUS_CURVES_LINEAR  = 0x0,
+	DMUS_CURVES_INSTANT = 0x1,
+	DMUS_CURVES_EXP     = 0x2,
+	DMUS_CURVES_LOG     = 0x3,
+	DMUS_CURVES_SINE    = 0x4
+};
+
+
+/*****************************************************************************
+ * Structures
+ */
+/* typedef definitions */
+/*typedef struct _DMUS_PMSG                  DMUS_PMSG,                  *LPDMUS_PMSG; */
+typedef struct _DMUS_AUDIOPARAMS           DMUS_AUDIOPARAMS,           *LPDMUS_AUDIOPARAMS;
+typedef struct _DMUS_SUBCHORD              DMUS_SUBCHORD,              *LPDMUS_SUBCHORD;
+typedef struct _DMUS_CHORD_KEY             DMUS_CHORD_KEY,             *LPDMUS_CHORD_KEY;
+typedef struct _DMUS_NOTE_PMSG             DMUS_NOTE_PMSG,             *LPDMUS_NOTE_PMSG;
+typedef struct _DMUS_MIDI_PMSG             DMUS_MIDI_PMSG,             *LPDMUS_MIDI_PMSG;
+typedef struct _DMUS_PATCH_PMSG            DMUS_PATCH_PMSG,            *LPDMUS_PATCH_PMSG;
+typedef struct _DMUS_TRANSPOSE_PMSG        DMUS_TRANSPOSE_PMSG,        *LPDMUS_TRANSPOSE_PMSG;
+typedef struct _DMUS_CHANNEL_PRIORITY_PMSG DMUS_CHANNEL_PRIORITY_PMSG, *LPDMUS_CHANNEL_PRIORITY_PMSG;
+typedef struct _DMUS_TEMPO_PMSG            DMUS_TEMPO_PMSG,            *LPDMUS_TEMPO_PMSG;
+typedef struct _DMUS_SYSEX_PMSG            DMUS_SYSEX_PMSG,            *LPDMUS_SYSEX_PMSG;
+typedef struct _DMUS_CURVE_PMSG            DMUS_CURVE_PMSG,            *LPDMUS_CURVE_PMSG;
+typedef struct _DMUS_TIMESIG_PMSG          DMUS_TIMESIG_PMSG,          *LPDMUS_TIMESIG_PMSG;
+typedef struct _DMUS_NOTIFICATION_PMSG     DMUS_NOTIFICATION_PMSG,     *LPDMUS_NOTIFICATION_PMSG;
+typedef struct _DMUS_WAVE_PMSG             DMUS_WAVE_PMSG,             *LPDMUS_WAVE_PMSG;
+typedef struct _DMUS_LYRIC_PMSG            DMUS_LYRIC_PMSG,            *LPDMUS_LYRIC_PMSG;
+typedef struct _DMUS_VERSION               DMUS_VERSION,               *LPDMUS_VERSION;
+typedef struct _DMUS_TIMESIGNATURE         DMUS_TIMESIGNATURE,         *LPDMUS_TIMESIGNATURE;
+typedef struct _DMUS_VALID_START_PARAM     DMUS_VALID_START_PARAM,     *LPDMUS_VALID_START_PARAM;
+typedef struct _DMUS_PLAY_MARKER_PARAM     DMUS_PLAY_MARKER_PARAM,     *LPDMUS_PLAY_MARKER_PARAM;
+typedef struct _DMUS_OBJECTDESC            DMUS_OBJECTDESC,            *LPDMUS_OBJECTDESC;
+typedef struct _DMUS_SCRIPT_ERRORINFO      DMUS_SCRIPT_ERRORINFO,      *LPDMUS_SCRIPT_ERRORINFO;
+typedef struct _DMUS_COMMAND_PARAM         DMUS_COMMAND_PARAM,         *LPDMUS_COMMAND_PARAM;
+typedef struct _DMUS_COMMAND_PARAM_2       DMUS_COMMAND_PARAM_2,       *LPDMUS_COMMAND_PARAM_2;
+typedef struct _DMUS_BAND_PARAM            DMUS_BAND_PARAM,            *LPDMUS_BAND_PARAM;
+typedef struct _DMUS_VARIATIONS_PARAM      DMUS_VARIATIONS_PARAM,      *LPDMUS_VARIATIONS_PARAM;
+
+/* actual structures */
+struct _DMUS_PMSG {
+    DMUS_PMSG_PART
+};
+
+struct _DMUS_AUDIOPARAMS {
+	DWORD dwSize;
+	BOOL  fInitNow;
+	DWORD dwValidData;
+	DWORD dwFeatures;
+	DWORD dwVoices;
+	DWORD dwSampleRate;
+	CLSID clsidDefaultSynth;
+};
+
+struct _DMUS_SUBCHORD {
+	DWORD dwChordPattern;
+	DWORD dwScalePattern;
+	DWORD dwInversionPoints;
+	DWORD dwLevels;
+	BYTE  bChordRoot;
+	BYTE  bScaleRoot;
+};
+
+struct _DMUS_CHORD_KEY {
+	WCHAR         wszName[16];
+	WORD          wMeasure;
+	BYTE          bBeat;
+	BYTE          bSubChordCount;
+	DMUS_SUBCHORD SubChordList[DMUS_MAXSUBCHORD];
+	DWORD         dwScale;
+	BYTE          bKey;
+	BYTE          bFlags;
+};
+
+struct _DMUS_NOTE_PMSG {
+	DMUS_PMSG_PART
+	MUSIC_TIME mtDuration;
+	WORD       wMusicValue;
+	WORD       wMeasure;
+	short      nOffset;
+	BYTE       bBeat;
+	BYTE       bGrid;
+	BYTE       bVelocity;
+	BYTE       bFlags;
+	BYTE       bTimeRange;
+	BYTE       bDurRange;
+	BYTE       bVelRange;
+	BYTE       bPlayModeFlags;
+	BYTE       bSubChordLevel;
+	BYTE       bMidiValue;
+	char       cTranspose;
+};
+
+struct _DMUS_MIDI_PMSG {
+	DMUS_PMSG_PART
+	BYTE bStatus;
+	BYTE bByte1;
+	BYTE bByte2;
+	BYTE bPad[1];
+};
+
+struct _DMUS_PATCH_PMSG {
+	DMUS_PMSG_PART
+	BYTE byInstrument;
+	BYTE byMSB;
+	BYTE byLSB;
+	BYTE byPad[1];
+};
+
+struct _DMUS_TRANSPOSE_PMSG {
+	DMUS_PMSG_PART
+	short nTranspose;
+	/* DX8 */
+	WORD  wMergeIndex;
+};
+
+struct _DMUS_CHANNEL_PRIORITY_PMSG {
+	DMUS_PMSG_PART
+	DWORD dwChannelPriority;
+};
+
+struct _DMUS_TEMPO_PMSG {
+	DMUS_PMSG_PART
+	double  dblTempo;
+};
+
+struct _DMUS_SYSEX_PMSG {
+	DMUS_PMSG_PART
+	DWORD dwLen;
+	BYTE  abData[1];
+};
+
+struct _DMUS_CURVE_PMSG {
+	DMUS_PMSG_PART
+	MUSIC_TIME mtDuration;
+	MUSIC_TIME mtOriginalStart;
+	MUSIC_TIME mtResetDuration;
+	short      nStartValue;
+	short      nEndValue;
+	short      nResetValue;
+	WORD       wMeasure;
+	short      nOffset;
+	BYTE       bBeat;
+	BYTE       bGrid;
+	BYTE       bType;
+	BYTE       bCurveShape;
+	BYTE       bCCData;
+	BYTE       bFlags;
+	/* DX8 */
+	WORD       wParamType;
+	WORD       wMergeIndex;
+};
+
+struct _DMUS_TIMESIG_PMSG {
+	DMUS_PMSG_PART
+	BYTE bBeatsPerMeasure;
+	BYTE bBeat;
+	WORD wGridsPerBeat;
+};
+
+struct _DMUS_NOTIFICATION_PMSG {
+	DMUS_PMSG_PART
+	GUID  guidNotificationType;
+	DWORD dwNotificationOption;
+	DWORD dwField1;
+	DWORD dwField2;
+};
+
+struct _DMUS_WAVE_PMSG {
+	DMUS_PMSG_PART    
+	REFERENCE_TIME rtStartOffset;
+	REFERENCE_TIME rtDuration;
+	long           lOffset;
+	long           lVolume;
+	long           lPitch;
+	BYTE           bFlags;
+};
+
+struct _DMUS_LYRIC_PMSG {
+	DMUS_PMSG_PART    
+	WCHAR wszString[1];
+};
+
+struct _DMUS_VERSION {
+	DWORD dwVersionMS;
+	DWORD dwVersionLS;
+};
+
+struct _DMUS_TIMESIGNATURE {
+	MUSIC_TIME mtTime;
+	BYTE       bBeatsPerMeasure;
+	BYTE       bBeat;
+	WORD       wGridsPerBeat;
+};
+
+struct _DMUS_VALID_START_PARAM {
+	MUSIC_TIME mtTime;
+};
+
+struct _DMUS_PLAY_MARKER_PARAM {
+	MUSIC_TIME mtTime;
+};
+
+struct _DMUS_OBJECTDESC {
+	DWORD        dwSize;
+	DWORD        dwValidData;
+	GUID         guidObject;
+	GUID         guidClass;
+	FILETIME     ftDate;
+	DMUS_VERSION vVersion;
+	WCHAR        wszName[DMUS_MAX_NAME];
+	WCHAR        wszCategory[DMUS_MAX_CATEGORY];
+	WCHAR        wszFileName[DMUS_MAX_FILENAME];
+	LONGLONG     llMemLength;
+	LPBYTE       pbMemData;
+	IStream*     pStream;
+};
+
+struct _DMUS_SCRIPT_ERRORINFO {
+	DWORD   dwSize;
+	HRESULT hr;
+	ULONG   ulLineNumber;
+	LONG    ichCharPosition;
+	WCHAR   wszSourceFile[DMUS_MAX_FILENAME];
+	WCHAR   wszSourceComponent[DMUS_MAX_FILENAME];
+	WCHAR   wszDescription[DMUS_MAX_FILENAME];
+	WCHAR   wszSourceLineText[DMUS_MAX_FILENAME];
+};
+
+struct _DMUS_COMMAND_PARAM {
+	BYTE bCommand;
+	BYTE bGrooveLevel;
+	BYTE bGrooveRange;
+	BYTE bRepeatMode;
+};
+
+struct _DMUS_COMMAND_PARAM_2 {
+	MUSIC_TIME mtTime;
+	BYTE       bCommand;
+	BYTE       bGrooveLevel;
+	BYTE       bGrooveRange;
+	BYTE       bRepeatMode;
+};
+
+struct _DMUS_BAND_PARAM {
+	MUSIC_TIME       mtTimePhysical;
+	struct IDirectMusicBand *pBand;
+};
+
+struct _DMUS_VARIATIONS_PARAM {
+	DWORD  dwPChannelsUsed;
+	DWORD* padwPChannels;
+	DWORD* padwVariations;
+};
+
+
+/*****************************************************************************
+ * IDirectMusicBand interface
+ */
+#define INTERFACE IDirectMusicBand
+DECLARE_INTERFACE_(IDirectMusicBand,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicBand methods ***/
+    STDMETHOD(CreateSegment)(THIS_ struct IDirectMusicSegment **ppSegment) PURE;
+    STDMETHOD(Download)(THIS_ struct IDirectMusicPerformance *pPerformance) PURE;
+    STDMETHOD(Unload)(THIS_ struct IDirectMusicPerformance *pPerformance) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicBand_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicBand_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectMusicBand_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectMusicBand methods ***/
+#define IDirectMusicBand_CreateSegment(p,a)    (p)->lpVtbl->CreateSegment(p,a)
+#define IDirectMusicBand_Download(p,a)         (p)->lpVtbl->Download(p,a)
+#define IDirectMusicBand_Unload(p,a)           (p)->lpVtbl->Unload(p,a)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicObject interface
+ */
+#define INTERFACE IDirectMusicObject
+DECLARE_INTERFACE_(IDirectMusicObject,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicObject methods ***/
+    STDMETHOD(GetDescriptor)(THIS_ LPDMUS_OBJECTDESC pDesc) PURE;
+    STDMETHOD(SetDescriptor)(THIS_ LPDMUS_OBJECTDESC pDesc) PURE;
+    STDMETHOD(ParseDescriptor)(THIS_ LPSTREAM pStream, LPDMUS_OBJECTDESC pDesc) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicObject_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicObject_AddRef(p)              (p)->lpVtbl->AddRef(p)
+#define IDirectMusicObject_Release(p)             (p)->lpVtbl->Release(p)
+/*** IDirectMusicObject methods ***/
+#define IDirectMusicObject_GetDescriptor(p,a)     (p)->lpVtbl->GetDescriptor(p,a)
+#define IDirectMusicObject_SetDescriptor(p,a)     (p)->lpVtbl->SetDescriptor(p,a)
+#define IDirectMusicObject_ParseDescriptor(p,a,b) (p)->lpVtbl->ParseDescriptor(p,a,b)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicLoader interface
+ */
+#define INTERFACE IDirectMusicLoader
+DECLARE_INTERFACE_(IDirectMusicLoader,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicLoader methods ***/
+    STDMETHOD(_GetObject)(THIS_ LPDMUS_OBJECTDESC pDesc, REFIID riid, LPVOID *ppv) PURE;
+    STDMETHOD(SetObject)(THIS_ LPDMUS_OBJECTDESC pDesc) PURE;
+    STDMETHOD(SetSearchDirectory)(THIS_ REFGUID rguidClass, WCHAR *pwzPath, BOOL fClear) PURE;
+    STDMETHOD(ScanDirectory)(THIS_ REFGUID rguidClass, WCHAR *pwzFileExtension, WCHAR *pwzScanFileName) PURE;
+    STDMETHOD(CacheObject)(THIS_ IDirectMusicObject *pObject) PURE;
+    STDMETHOD(ReleaseObject)(THIS_ IDirectMusicObject *pObject) PURE;
+    STDMETHOD(ClearCache)(THIS_ REFGUID rguidClass) PURE;
+    STDMETHOD(EnableCache)(THIS_ REFGUID rguidClass, BOOL fEnable) PURE;
+    STDMETHOD(EnumObject)(THIS_ REFGUID rguidClass, DWORD dwIndex, LPDMUS_OBJECTDESC pDesc) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicLoader_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicLoader_AddRef(p)                   (p)->lpVtbl->AddRef(p)
+#define IDirectMusicLoader_Release(p)                  (p)->lpVtbl->Release(p)
+/*** IDirectMusicLoader methods ***/
+#define IDirectMusicLoader_GetObject(p,a,b,c)          (p)->lpVtbl->_GetObject(p,a,b,c)
+#define IDirectMusicLoader_SetObject(p,a)              (p)->lpVtbl->SetObject(p,a)
+#define IDirectMusicLoader_SetSearchDirectory(p,a,b,c) (p)->lpVtbl->SetSearchDirectory(p,a,b,c)
+#define IDirectMusicLoader_ScanDirectory(p,a,b,c)      (p)->lpVtbl->ScanDirectory(p,a,b,c)
+#define IDirectMusicLoader_CacheObject(p,a)            (p)->lpVtbl->CacheObject(p,a)
+#define IDirectMusicLoader_ReleaseObject(p,a)          (p)->lpVtbl->ReleaseObject(p,a)
+#define IDirectMusicLoader_ClearCache(p,a)             (p)->lpVtbl->ClearCache(p,a)
+#define IDirectMusicLoader_EnableCache(p,a,b)          (p)->lpVtbl->EnableCache(p,a,b)
+#define IDirectMusicLoader_EnumObject(p,a,b,c)         (p)->lpVtbl->EnumObject(p,a,b,c)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicLoader8 interface
+ */
+#define INTERFACE IDirectMusicLoader8
+DECLARE_INTERFACE_(IDirectMusicLoader8,IDirectMusicLoader)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicLoader methods ***/
+    STDMETHOD(_GetObject)(THIS_ LPDMUS_OBJECTDESC pDesc, REFIID riid, LPVOID *ppv) PURE;
+    STDMETHOD(SetObject)(THIS_ LPDMUS_OBJECTDESC pDesc) PURE;
+    STDMETHOD(SetSearchDirectory)(THIS_ REFGUID rguidClass, WCHAR *pwzPath, BOOL fClear) PURE;
+    STDMETHOD(ScanDirectory)(THIS_ REFGUID rguidClass, WCHAR *pwzFileExtension, WCHAR *pwzScanFileName) PURE;
+    STDMETHOD(CacheObject)(THIS_ IDirectMusicObject *pObject) PURE;
+    STDMETHOD(ReleaseObject)(THIS_ IDirectMusicObject *pObject) PURE;
+    STDMETHOD(ClearCache)(THIS_ REFGUID rguidClass) PURE;
+    STDMETHOD(EnableCache)(THIS_ REFGUID rguidClass, BOOL fEnable) PURE;
+    STDMETHOD(EnumObject)(THIS_ REFGUID rguidClass, DWORD dwIndex, LPDMUS_OBJECTDESC pDesc) PURE;
+    /*** IDirectMusicLoader8 methods ***/
+    STDMETHOD_(void,CollectGarbage)(THIS) PURE;
+    STDMETHOD(ReleaseObjectByUnknown)(THIS_ IUnknown *pObject) PURE;
+    STDMETHOD(LoadObjectFromFile)(THIS_ REFGUID rguidClassID, REFIID iidInterfaceID, WCHAR *pwzFilePath, void **ppObject) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicLoader8_QueryInterface(p,a,b)         (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicLoader8_AddRef(p)                     (p)->lpVtbl->AddRef(p)
+#define IDirectMusicLoader8_Release(p)                    (p)->lpVtbl->Release(p)
+/*** IDirectMusicLoader methods ***/
+#define IDirectMusicLoader8_GetObject(p,a,b,c)            (p)->lpVtbl->_GetObject(p,a,b,c)
+#define IDirectMusicLoader8_SetObject(p,a)                (p)->lpVtbl->SetObject(p,a)
+#define IDirectMusicLoader8_SetSearchDirectory(p,a,b,c)   (p)->lpVtbl->SetSearchDirectory(p,a,b,c)
+#define IDirectMusicLoader8_ScanDirectory(p,a,b,c)        (p)->lpVtbl->ScanDirectory(p,a,b,c)
+#define IDirectMusicLoader8_CacheObject(p,a)              (p)->lpVtbl->CacheObject(p,a)
+#define IDirectMusicLoader8_ReleaseObject(p,a)            (p)->lpVtbl->ReleaseObject(p,a)
+#define IDirectMusicLoader8_ClearCache(p,a)               (p)->lpVtbl->ClearCache(p,a)
+#define IDirectMusicLoader8_EnableCache(p,a,b)            (p)->lpVtbl->EnableCache(p,a,b)
+#define IDirectMusicLoader8_EnumObject(p,a,b,c)           (p)->lpVtbl->EnumObject(p,a,b,c)
+/*** IDirectMusicLoader8 methods ***/
+#define IDirectMusicLoader8_CollectGarbage(p)             (p)->lpVtbl->CollectGarbage(p)
+#define IDirectMusicLoader8_ReleaseObjectByUnknown(p,a)   (p)->lpVtbl->ReleaseObjectByUnknown(p,a)
+#define IDirectMusicLoader8_LoadObjectFromFile(p,a,b,c,d) (p)->lpVtbl->LoadObjectFromFile(p,a,b,c,d)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicGetLoader interface
+ */
+#define INTERFACE IDirectMusicGetLoader
+DECLARE_INTERFACE_(IDirectMusicGetLoader,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicGetLoader methods ***/
+    STDMETHOD(GetLoader)(THIS_ IDirectMusicLoader **ppLoader) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicGetLoader_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicGetLoader_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectMusicGetLoader_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectMusicGetLoader methods ***/
+#define IDirectMusicGetLoader_GetLoader(p,a)        (p)->lpVtbl->GetLoader(p,a)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicSegment interface
+ */
+#define INTERFACE IDirectMusicSegment
+DECLARE_INTERFACE_(IDirectMusicSegment,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicSegment methods ***/
+    STDMETHOD(GetLength)(THIS_ MUSIC_TIME *pmtLength) PURE;
+    STDMETHOD(SetLength)(THIS_ MUSIC_TIME mtLength) PURE;
+    STDMETHOD(GetRepeats)(THIS_ DWORD *pdwRepeats) PURE;
+    STDMETHOD(SetRepeats)(THIS_ DWORD dwRepeats) PURE;
+    STDMETHOD(GetDefaultResolution)(THIS_ DWORD *pdwResolution) PURE;
+    STDMETHOD(SetDefaultResolution)(THIS_ DWORD dwResolution) PURE;
+    STDMETHOD(GetTrack)(THIS_ REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, IDirectMusicTrack **ppTrack) PURE;
+    STDMETHOD(GetTrackGroup)(THIS_ IDirectMusicTrack *pTrack, DWORD *pdwGroupBits) PURE;
+    STDMETHOD(InsertTrack)(THIS_ IDirectMusicTrack *pTrack, DWORD dwGroupBits) PURE;
+    STDMETHOD(RemoveTrack)(THIS_ IDirectMusicTrack *pTrack) PURE;
+    STDMETHOD(InitPlay)(THIS_ struct IDirectMusicSegmentState **ppSegState, struct IDirectMusicPerformance *pPerformance, DWORD  dwFlags) PURE;
+    STDMETHOD(GetGraph)(THIS_ struct IDirectMusicGraph **ppGraph) PURE;
+    STDMETHOD(SetGraph)(THIS_ struct IDirectMusicGraph *pGraph) PURE;
+    STDMETHOD(AddNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
+    STDMETHOD(RemoveNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
+    STDMETHOD(GetParam)(THIS_ REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME *pmtNext, void *pParam) PURE;
+    STDMETHOD(SetParam)(THIS_ REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, void *pParam) PURE;
+    STDMETHOD(Clone)(THIS_ MUSIC_TIME mtStart, MUSIC_TIME mtEnd, IDirectMusicSegment **ppSegment) PURE;
+    STDMETHOD(SetStartPoint)(THIS_ MUSIC_TIME mtStart) PURE;
+    STDMETHOD(GetStartPoint)(THIS_ MUSIC_TIME *pmtStart) PURE;
+    STDMETHOD(SetLoopPoints)(THIS_ MUSIC_TIME mtStart, MUSIC_TIME mtEnd) PURE;
+    STDMETHOD(GetLoopPoints)(THIS_ MUSIC_TIME *pmtStart, MUSIC_TIME *pmtEnd) PURE;
+    STDMETHOD(SetPChannelsUsed)(THIS_ DWORD dwNumPChannels, DWORD *paPChannels) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicSegment_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicSegment_AddRef(p)                   (p)->lpVtbl->AddRef(p)
+#define IDirectMusicSegment_Release(p)                  (p)->lpVtbl->Release(p)
+/*** IDirectMusicSegment methods ***/
+#define IDirectMusicSegment_GetLength(p,a)              (p)->lpVtbl->GetLength(p,a)
+#define IDirectMusicSegment_SetLength(p,a)              (p)->lpVtbl->SetLength(p,a)
+#define IDirectMusicSegment_GetRepeats(p,a)             (p)->lpVtbl->GetRepeats(p,a)
+#define IDirectMusicSegment_SetRepeats(p,a)             (p)->lpVtbl->SetRepeats(p,a)
+#define IDirectMusicSegment_GetDefaultResolution(p,a)   (p)->lpVtbl->GetDefaultResolution(p,a)
+#define IDirectMusicSegment_SetDefaultResolution(p,a)   (p)->lpVtbl->SetDefaultResolution(p,a)
+#define IDirectMusicSegment_GetTrack(p,a,b,c,d)         (p)->lpVtbl->GetTrack(p,a,b,c,d)
+#define IDirectMusicSegment_GetTrackGroup(p,a,b)        (p)->lpVtbl->GetTrackGroup(p,a,b)
+#define IDirectMusicSegment_InsertTrack(p,a,b)          (p)->lpVtbl->InsertTrack(p,a,b)
+#define IDirectMusicSegment_RemoveTrack(p,a)            (p)->lpVtbl->RemoveTrack(p,a)
+#define IDirectMusicSegment_InitPlay(p,a,b,c)           (p)->lpVtbl->InitPlay(p,a,b,c)
+#define IDirectMusicSegment_GetGraph(p,a)               (p)->lpVtbl->GetGraph(p,a)
+#define IDirectMusicSegment_SetGraph(p,a)               (p)->lpVtbl->SetGraph(p,a)
+#define IDirectMusicSegment_AddNotificationType(p,a)    (p)->lpVtbl->AddNotificationType(p,a)
+#define IDirectMusicSegment_RemoveNotificationType(p,a) (p)->lpVtbl->RemoveNotificationType(p,a)
+#define IDirectMusicSegment_GetParam(p,a,b,c,d,e,f)     (p)->lpVtbl->GetParam(p,a,b,c,d,e,f)
+#define IDirectMusicSegment_SetParam(p,a,b,c,d,e)       (p)->lpVtbl->SetParam(p,a,b,c,d,e)
+#define IDirectMusicSegment_Clone(p,a,b,c)              (p)->lpVtbl->Clone(p,a,b,c)
+#define IDirectMusicSegment_SetStartPoint(p,a)          (p)->lpVtbl->SetStartPoint(p,a)
+#define IDirectMusicSegment_GetStartPoint(p,a)          (p)->lpVtbl->GetStartPoint(p,a)
+#define IDirectMusicSegment_SetLoopPoints(p,a,b)        (p)->lpVtbl->SetLoopPoints(p,a,b)
+#define IDirectMusicSegment_GetLoopPoints(p,a,b)        (p)->lpVtbl->GetLoopPoints(p,a,b)
+#define IDirectMusicSegment_SetPChannelsUsed(p,a,b)     (p)->lpVtbl->SetPChannelsUsed(p,a,b)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicSegment8 interface
+ */
+#define INTERFACE IDirectMusicSegment8
+DECLARE_INTERFACE_(IDirectMusicSegment8,IDirectMusicSegment)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicSegment methods ***/
+    STDMETHOD(GetLength)(THIS_ MUSIC_TIME *pmtLength) PURE;
+    STDMETHOD(SetLength)(THIS_ MUSIC_TIME mtLength) PURE;
+    STDMETHOD(GetRepeats)(THIS_ DWORD *pdwRepeats) PURE;
+    STDMETHOD(SetRepeats)(THIS_ DWORD dwRepeats) PURE;
+    STDMETHOD(GetDefaultResolution)(THIS_ DWORD *pdwResolution) PURE;
+    STDMETHOD(SetDefaultResolution)(THIS_ DWORD dwResolution) PURE;
+    STDMETHOD(GetTrack)(THIS_ REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, IDirectMusicTrack **ppTrack) PURE;
+    STDMETHOD(GetTrackGroup)(THIS_ IDirectMusicTrack *pTrack, DWORD *pdwGroupBits) PURE;
+    STDMETHOD(InsertTrack)(THIS_ IDirectMusicTrack *pTrack, DWORD dwGroupBits) PURE;
+    STDMETHOD(RemoveTrack)(THIS_ IDirectMusicTrack *pTrack) PURE;
+    STDMETHOD(InitPlay)(THIS_ struct IDirectMusicSegmentState **ppSegState, struct IDirectMusicPerformance *pPerformance, DWORD  dwFlags) PURE;
+    STDMETHOD(GetGraph)(THIS_ struct IDirectMusicGraph **ppGraph) PURE;
+    STDMETHOD(SetGraph)(THIS_ struct IDirectMusicGraph *pGraph) PURE;
+    STDMETHOD(AddNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
+    STDMETHOD(RemoveNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
+    STDMETHOD(GetParam)(THIS_ REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME *pmtNext, void *pParam) PURE;
+    STDMETHOD(SetParam)(THIS_ REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, void *pParam) PURE;
+    STDMETHOD(Clone)(THIS_ MUSIC_TIME mtStart, MUSIC_TIME mtEnd, IDirectMusicSegment **ppSegment) PURE;
+    STDMETHOD(SetStartPoint)(THIS_ MUSIC_TIME mtStart) PURE;
+    STDMETHOD(GetStartPoint)(THIS_ MUSIC_TIME *pmtStart) PURE;
+    STDMETHOD(SetLoopPoints)(THIS_ MUSIC_TIME mtStart, MUSIC_TIME mtEnd) PURE;
+    STDMETHOD(GetLoopPoints)(THIS_ MUSIC_TIME *pmtStart, MUSIC_TIME *pmtEnd) PURE;
+    STDMETHOD(SetPChannelsUsed)(THIS_ DWORD dwNumPChannels, DWORD *paPChannels) PURE;
+    /*** IDirectMusicSegment8 methods ***/
+    STDMETHOD(SetTrackConfig)(THIS_ REFGUID rguidTrackClassID, DWORD dwGroupBits, DWORD dwIndex, DWORD dwFlagsOn, DWORD dwFlagsOff) PURE;
+    STDMETHOD(GetAudioPathConfig)(THIS_ IUnknown **ppAudioPathConfig) PURE;
+    STDMETHOD(Compose)(THIS_ MUSIC_TIME mtTime, IDirectMusicSegment *pFromSegment, IDirectMusicSegment *pToSegment, IDirectMusicSegment **ppComposedSegment) PURE;
+    STDMETHOD(Download)(THIS_ IUnknown *pAudioPath) PURE;
+    STDMETHOD(Unload)(THIS_ IUnknown *pAudioPath) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicSegment8_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicSegment8_AddRef(p)                   (p)->lpVtbl->AddRef(p)
+#define IDirectMusicSegment8_Release(p)                  (p)->lpVtbl->Release(p)
+/*** IDirectMusicSegment methods ***/
+#define IDirectMusicSegment8_GetLength(p,a)              (p)->lpVtbl->GetLength(p,a)
+#define IDirectMusicSegment8_SetLength(p,a)              (p)->lpVtbl->SetLength(p,a)
+#define IDirectMusicSegment8_GetRepeats(p,a)             (p)->lpVtbl->GetRepeats(p,a)
+#define IDirectMusicSegment8_SetRepeats(p,a)             (p)->lpVtbl->SetRepeats(p,a)
+#define IDirectMusicSegment8_GetDefaultResolution(p,a)   (p)->lpVtbl->GetDefaultResolution(p,a)
+#define IDirectMusicSegment8_SetDefaultResolution(p,a)   (p)->lpVtbl->SetDefaultResolution(p,a)
+#define IDirectMusicSegment8_GetTrack(p,a,b,c,d)         (p)->lpVtbl->GetTrack(p,a,b,c,d)
+#define IDirectMusicSegment8_GetTrackGroup(p,a,b)        (p)->lpVtbl->GetTrackGroup(p,a,b)
+#define IDirectMusicSegment8_InsertTrack(p,a,b)          (p)->lpVtbl->InsertTrack(p,a,b)
+#define IDirectMusicSegment8_RemoveTrack(p,a)            (p)->lpVtbl->RemoveTrack(p,a)
+#define IDirectMusicSegment8_InitPlay(p,a,b,c)           (p)->lpVtbl->InitPlay(p,a,b,c)
+#define IDirectMusicSegment8_GetGraph(p,a)               (p)->lpVtbl->GetGraph(p,a)
+#define IDirectMusicSegment8_SetGraph(p,a)               (p)->lpVtbl->SetGraph(p,a)
+#define IDirectMusicSegment8_AddNotificationType(p,a)    (p)->lpVtbl->AddNotificationType(p,a)
+#define IDirectMusicSegment8_RemoveNotificationType(p,a) (p)->lpVtbl->RemoveNotificationType(p,a)
+#define IDirectMusicSegment8_GetParam(p,a,b,c,d,e,f)     (p)->lpVtbl->GetParam(p,a,b,c,d,e,f)
+#define IDirectMusicSegment8_SetParam(p,a,b,c,d,e)       (p)->lpVtbl->SetParam(p,a,b,c,d,e)
+#define IDirectMusicSegment8_Clone(p,a,b,c)              (p)->lpVtbl->Clone(p,a,b,c)
+#define IDirectMusicSegment8_SetStartPoint(p,a)          (p)->lpVtbl->SetStartPoint(p,a)
+#define IDirectMusicSegment8_GetStartPoint(p,a)          (p)->lpVtbl->GetStartPoint(p,a)
+#define IDirectMusicSegment8_SetLoopPoints(p,a,b)        (p)->lpVtbl->SetLoopPoints(p,a,b)
+#define IDirectMusicSegment8_GetLoopPoints(p,a,b)        (p)->lpVtbl->GetLoopPoints(p,a,b)
+#define IDirectMusicSegment8_SetPChannelsUsed(p,a,b)     (p)->lpVtbl->SetPChannelsUsed(p,a,b)
+/*** IDirectMusicSegment8 methods ***/
+#define IDirectMusicSegment8_SetTrackConfig(p,a,b,c,d,e) (p)->lpVtbl->SetTrackConfig(p,a,b,c,d,e)
+#define IDirectMusicSegment8_GetAudioPathConfig(p,a)     (p)->lpVtbl->GetAudioPathConfig(p,a)
+#define IDirectMusicSegment8_Compose(p,a,b,c,d)          (p)->lpVtbl->Compose(p,a,b,c,d)
+#define IDirectMusicSegment8_Download(p,a)               (p)->lpVtbl->Download(p,a)
+#define IDirectMusicSegment8_Unload(p,a)                 (p)->lpVtbl->Unload(p,a)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicSegmentState interface
+ */
+#define INTERFACE IDirectMusicSegmentState
+DECLARE_INTERFACE_(IDirectMusicSegmentState,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicSegmentState methods ***/
+    STDMETHOD(GetRepeats)(THIS_ DWORD *pdwRepeats) PURE;
+    STDMETHOD(GetSegment)(THIS_ IDirectMusicSegment **ppSegment) PURE;
+    STDMETHOD(GetStartTime)(THIS_ MUSIC_TIME *pmtStart) PURE;
+    STDMETHOD(GetSeek)(THIS_ MUSIC_TIME *pmtSeek) PURE;
+    STDMETHOD(GetStartPoint)(THIS_ MUSIC_TIME *pmtStart) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicSegmentState_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicSegmentState_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectMusicSegmentState_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectMusicSegmentState methods ***/
+#define IDirectMusicSegmentState_GetRepeats(p,a)       (p)->lpVtbl->GetRepeats(p,a)
+#define IDirectMusicSegmentState_GetSegment(p,a)       (p)->lpVtbl->GetSegment(p,a)
+#define IDirectMusicSegmentState_GetStartTime(p,a)     (p)->lpVtbl->GetStartTime(p,a)
+#define IDirectMusicSegmentState_GetSeek(p,a)          (p)->lpVtbl->GetSeek(p,a)
+#define IDirectMusicSegmentState_GetStartPoint(p,a)    (p)->lpVtbl->GetStartPoint(p,a)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicSegmentState8 interface
+ */
+#define INTERFACE IDirectMusicSegmentState8
+DECLARE_INTERFACE_(IDirectMusicSegmentState8,IDirectMusicSegmentState)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicSegmentState methods ***/
+    STDMETHOD(GetRepeats)(THIS_ DWORD *pdwRepeats) PURE;
+    STDMETHOD(GetSegment)(THIS_ IDirectMusicSegment **ppSegment) PURE;
+    STDMETHOD(GetStartTime)(THIS_ MUSIC_TIME *pmtStart) PURE;
+    STDMETHOD(GetSeek)(THIS_ MUSIC_TIME *pmtSeek) PURE;
+    STDMETHOD(GetStartPoint)(THIS_ MUSIC_TIME *pmtStart) PURE;
+    /*** IDirectMusicSegmentState8 methods ***/
+    STDMETHOD(SetTrackConfig)(THIS_ REFGUID rguidTrackClassID, DWORD dwGroupBits, DWORD dwIndex, DWORD dwFlagsOn, DWORD dwFlagsOff) PURE;
+    STDMETHOD(GetObjectInPath)(THIS_ DWORD dwPChannel, DWORD dwStage, DWORD dwBuffer, REFGUID guidObject, DWORD dwIndex, REFGUID iidInterface, void **ppObject) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicSegmentState8_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicSegmentState8_AddRef(p)                        (p)->lpVtbl->AddRef(p)
+#define IDirectMusicSegmentState8_Release(p)                       (p)->lpVtbl->Release(p)
+/*** IDirectMusicSegmentState methods ***/
+#define IDirectMusicSegmentState8_GetRepeats(p,a)                  (p)->lpVtbl->GetRepeats(p,a)
+#define IDirectMusicSegmentState8_GetSegment(p,a)                  (p)->lpVtbl->GetSegment(p,a)
+#define IDirectMusicSegmentState8_GetStartTime(p,a)                (p)->lpVtbl->GetStartTime(p,a)
+#define IDirectMusicSegmentState8_GetSeek(p,a)                     (p)->lpVtbl->GetSeek(p,a)
+#define IDirectMusicSegmentState8_GetStartPoint(p,a)               (p)->lpVtbl->GetStartPoint(p,a)
+/*** IDirectMusicSegmentState8 methods ***/
+#define IDirectMusicSegmentState8_SetTrackConfig(p,a,b,c,d,e)      (p)->lpVtbl->SetTrackConfig(p,a,b,c,d,e)
+#define IDirectMusicSegmentState8_GetObjectInPath(p,a,b,c,d,e,f,g) (p)->lpVtbl->GetObjectInPath(p,a,b,c,d,e,f,g)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicAudioPath interface
+ */
+#define INTERFACE IDirectMusicAudioPath
+DECLARE_INTERFACE_(IDirectMusicAudioPath,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicAudioPath methods ***/
+    STDMETHOD(GetObjectInPath)(THIS_ DWORD dwPChannel, DWORD dwStage, DWORD dwBuffer, REFGUID guidObject, WORD dwIndex, REFGUID iidInterface, void **ppObject) PURE;
+    STDMETHOD(Activate)(THIS_ BOOL fActivate) PURE;
+    STDMETHOD(SetVolume)(THIS_ long lVolume, DWORD dwDuration) PURE;
+    STDMETHOD(ConvertPChannel)(THIS_ DWORD dwPChannelIn, DWORD *pdwPChannelOut) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicAudioPath_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicAudioPath_AddRef(p)                        (p)->lpVtbl->AddRef(p)
+#define IDirectMusicAudioPath_Release(p)                       (p)->lpVtbl->Release(p)
+/*** IDirectMusicAudioPath methods ***/
+#define IDirectMusicAudioPath_GetObjectInPath(p,a,b,c,d,e,f,g) (p)->lpVtbl->GetObjectInPath(p,a,b,c,d,e,f,g)
+#define IDirectMusicAudioPath_Activate(p,a)                    (p)->lpVtbl->Activate(p,a)
+#define IDirectMusicAudioPath_SetVolume(p,a,b)                 (p)->lpVtbl->SetVolume(p,a,b)
+#define IDirectMusicAudioPath_ConvertPChannel(p,a,b)           (p)->lpVtbl->ConvertPChannel(p,a,b)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicPerformance interface
+ */
+#define INTERFACE IDirectMusicPerformance
+DECLARE_INTERFACE_(IDirectMusicPerformance,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicPerformance methods ***/
+    STDMETHOD(Init)(THIS_ IDirectMusic **ppDirectMusic, LPDIRECTSOUND pDirectSound, HWND hWnd) PURE;
+    STDMETHOD(PlaySegment)(THIS_ IDirectMusicSegment *pSegment, DWORD dwFlags, __int64 i64StartTime, IDirectMusicSegmentState **ppSegmentState) PURE;
+    STDMETHOD(Stop)(THIS_ IDirectMusicSegment *pSegment, IDirectMusicSegmentState *pSegmentState, MUSIC_TIME mtTime, DWORD dwFlags) PURE;
+    STDMETHOD(GetSegmentState)(THIS_ IDirectMusicSegmentState **ppSegmentState, MUSIC_TIME mtTime) PURE;
+    STDMETHOD(SetPrepareTime)(THIS_ DWORD dwMilliSeconds) PURE;
+    STDMETHOD(GetPrepareTime)(THIS_ DWORD *pdwMilliSeconds) PURE;
+    STDMETHOD(SetBumperLength)(THIS_ DWORD dwMilliSeconds) PURE;
+    STDMETHOD(GetBumperLength)(THIS_ DWORD *pdwMilliSeconds) PURE;
+    STDMETHOD(SendPMsg)(THIS_ DMUS_PMSG *pPMSG) PURE;
+    STDMETHOD(MusicToReferenceTime)(THIS_ MUSIC_TIME mtTime, REFERENCE_TIME *prtTime) PURE;
+    STDMETHOD(ReferenceToMusicTime)(THIS_ REFERENCE_TIME rtTime, MUSIC_TIME *pmtTime) PURE;
+    STDMETHOD(IsPlaying)(THIS_ IDirectMusicSegment *pSegment, IDirectMusicSegmentState *pSegState) PURE;
+    STDMETHOD(GetTime)(THIS_ REFERENCE_TIME *prtNow, MUSIC_TIME *pmtNow) PURE;
+    STDMETHOD(AllocPMsg)(THIS_ ULONG cb, DMUS_PMSG **ppPMSG) PURE;
+    STDMETHOD(FreePMsg)(THIS_ DMUS_PMSG *pPMSG) PURE;
+    STDMETHOD(GetGraph)(THIS_ struct IDirectMusicGraph **ppGraph) PURE;
+    STDMETHOD(SetGraph)(THIS_ struct IDirectMusicGraph *pGraph) PURE;
+    STDMETHOD(SetNotificationHandle)(THIS_ HANDLE hNotification, REFERENCE_TIME rtMinimum) PURE;
+    STDMETHOD(GetNotificationPMsg)(THIS_ DMUS_NOTIFICATION_PMSG **ppNotificationPMsg) PURE;
+    STDMETHOD(AddNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
+    STDMETHOD(RemoveNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
+    STDMETHOD(AddPort)(THIS_ IDirectMusicPort *pPort) PURE;
+    STDMETHOD(RemovePort)(THIS_ IDirectMusicPort *pPort) PURE;
+    STDMETHOD(AssignPChannelBlock)(THIS_ DWORD dwBlockNum, IDirectMusicPort *pPort, DWORD dwGroup) PURE;
+    STDMETHOD(AssignPChannel)(THIS_ DWORD dwPChannel, IDirectMusicPort *pPort, DWORD dwGroup, DWORD dwMChannel) PURE;
+    STDMETHOD(PChannelInfo)(THIS_ DWORD dwPChannel, IDirectMusicPort **ppPort, DWORD *pdwGroup, DWORD *pdwMChannel) PURE;
+    STDMETHOD(DownloadInstrument)(THIS_ IDirectMusicInstrument *pInst, DWORD dwPChannel, IDirectMusicDownloadedInstrument **ppDownInst, DMUS_NOTERANGE *pNoteRanges, DWORD dwNumNoteRanges, IDirectMusicPort **ppPort, DWORD *pdwGroup, DWORD *pdwMChannel) PURE;
+    STDMETHOD(Invalidate)(THIS_ MUSIC_TIME mtTime, DWORD dwFlags) PURE;
+    STDMETHOD(GetParam)(THIS_ REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME *pmtNext, void *pParam) PURE;
+    STDMETHOD(SetParam)(THIS_ REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, void *pParam) PURE;
+    STDMETHOD(GetGlobalParam)(THIS_ REFGUID rguidType, void *pParam, DWORD dwSize) PURE;
+    STDMETHOD(SetGlobalParam)(THIS_ REFGUID rguidType, void *pParam, DWORD dwSize) PURE;
+    STDMETHOD(GetLatencyTime)(THIS_ REFERENCE_TIME *prtTime) PURE;
+    STDMETHOD(GetQueueTime)(THIS_ REFERENCE_TIME *prtTime) PURE;
+    STDMETHOD(AdjustTime)(THIS_ REFERENCE_TIME rtAmount) PURE;
+    STDMETHOD(CloseDown)(THIS) PURE;
+    STDMETHOD(GetResolvedTime)(THIS_ REFERENCE_TIME rtTime, REFERENCE_TIME *prtResolved, DWORD dwTimeResolveFlags) PURE;
+    STDMETHOD(MIDIToMusic)(THIS_ BYTE bMIDIValue, DMUS_CHORD_KEY *pChord, BYTE bPlayMode, BYTE bChordLevel, WORD *pwMusicValue) PURE;
+    STDMETHOD(MusicToMIDI)(THIS_ WORD wMusicValue, DMUS_CHORD_KEY *pChord, BYTE bPlayMode, BYTE bChordLevel, BYTE *pbMIDIValue) PURE;
+    STDMETHOD(TimeToRhythm)(THIS_ MUSIC_TIME mtTime, DMUS_TIMESIGNATURE *pTimeSig, WORD *pwMeasure, BYTE *pbBeat, BYTE *pbGrid, short *pnOffset) PURE;
+    STDMETHOD(RhythmToTime)(THIS_ WORD wMeasure, BYTE bBeat, BYTE bGrid, short nOffset, DMUS_TIMESIGNATURE *pTimeSig, MUSIC_TIME *pmtTime) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicPerformance_QueryInterface(p,a,b)                 (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicPerformance_AddRef(p)                             (p)->lpVtbl->AddRef(p)
+#define IDirectMusicPerformance_Release(p)                            (p)->lpVtbl->Release(p)
+/*** IDirectMusicPerformance methods ***/
+#define IDirectMusicPerformance_Init(p,a,b,c)                         (p)->lpVtbl->Init(p,a,b,c)
+#define IDirectMusicPerformance_PlaySegment(p,a,b,c,d)                (p)->lpVtbl->PlaySegment(p,a,b,c,d)
+#define IDirectMusicPerformance_Stop(p,a,b,c,d)                       (p)->lpVtbl->Stop(p,a,b,c,d)
+#define IDirectMusicPerformance_GetSegmentState(p,a,b)                (p)->lpVtbl->GetSegmentState(p,a,b)
+#define IDirectMusicPerformance_SetPrepareTime(p,a)                   (p)->lpVtbl->SetPrepareTime(p,a)
+#define IDirectMusicPerformance_GetPrepareTime(p,a)                   (p)->lpVtbl->GetPrepareTime(p,a)
+#define IDirectMusicPerformance_SetBumperLength(p,a)                  (p)->lpVtbl->SetBumperLength(p,a)
+#define IDirectMusicPerformance_GetBumperLength(p,a)                  (p)->lpVtbl->GetBumperLength(p,a)
+#define IDirectMusicPerformance_SendPMsg(p,a)                         (p)->lpVtbl->SendPMsg(p,a)
+#define IDirectMusicPerformance_MusicToReferenceTime(p,a,b)           (p)->lpVtbl->MusicToReferenceTime(p,a,b)
+#define IDirectMusicPerformance_ReferenceToMusicTime(p,a,b)           (p)->lpVtbl->ReferenceToMusicTime(p,a,b)
+#define IDirectMusicPerformance_IsPlaying(p,a,b)                      (p)->lpVtbl->IsPlaying(p,a,b)
+#define IDirectMusicPerformance_GetTime(p,a,b)                        (p)->lpVtbl->GetTime(p,a,b)
+#define IDirectMusicPerformance_AllocPMsg(p,a,b)                      (p)->lpVtbl->AllocPMsg(p,a,b)
+#define IDirectMusicPerformance_FreePMsg(p,a)                         (p)->lpVtbl->FreePMsg(p,a)
+#define IDirectMusicPerformance_GetGraph(p,a)                         (p)->lpVtbl->GetGraph(p,a)
+#define IDirectMusicPerformance_SetGraph(p,a)                         (p)->lpVtbl->SetGraph(p,a)
+#define IDirectMusicPerformance_SetNotificationHandle(p,a,b)          (p)->lpVtbl->SetNotificationHandle(p,a,b)
+#define IDirectMusicPerformance_GetNotificationPMsg(p,a)              (p)->lpVtbl->GetNotificationPMsg(p,a)
+#define IDirectMusicPerformance_AddNotificationType(p,a)              (p)->lpVtbl->AddNotificationType(p,a)
+#define IDirectMusicPerformance_RemoveNotificationType(p,a)           (p)->lpVtbl->RemoveNotificationType(p,a)
+#define IDirectMusicPerformance_AddPort(p,a)                          (p)->lpVtbl->AddPort(p,a)
+#define IDirectMusicPerformance_RemovePort(p,a)                       (p)->lpVtbl->RemovePort(p,a)
+#define IDirectMusicPerformance_AssignPChannelBlock(p,a,b,c)          (p)->lpVtbl->AssignPChannelBlock(p,a,b,c)
+#define IDirectMusicPerformance_AssignPChannel(p,a,b,c,d)             (p)->lpVtbl->AssignPChannel(p,a,b,c,d)
+#define IDirectMusicPerformance_PChannelInfo(p,a,b,c,d)               (p)->lpVtbl->PChannelInfo(p,a,b,c,d)
+#define IDirectMusicPerformance_DownloadInstrument(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->DownloadInstrument(p,a,b,c,d,e,f,g,h)
+#define IDirectMusicPerformance_Invalidate(p,a,b)                     (p)->lpVtbl->Invalidate(p,a,b)
+#define IDirectMusicPerformance_GetParam(p,a,b,c,d,e,f)               (p)->lpVtbl->GetParam(p,a,b,c,d,e,f)
+#define IDirectMusicPerformance_SetParam(p,a,b,c,d,e)                 (p)->lpVtbl->SetParam(p,a,b,c,d,e)
+#define IDirectMusicPerformance_GetGlobalParam(p,a,b,c)               (p)->lpVtbl->GetGlobalParam(p,a,b,c)
+#define IDirectMusicPerformance_SetGlobalParam(p,a,b,c)               (p)->lpVtbl->SetGlobalParam(p,a,b,c)
+#define IDirectMusicPerformance_GetLatencyTime(p,a)                   (p)->lpVtbl->GetLatencyTime(p,a)
+#define IDirectMusicPerformance_GetQueueTime(p,a)                     (p)->lpVtbl->GetQueueTime(p,a)
+#define IDirectMusicPerformance_AdjustTime(p,a)                       (p)->lpVtbl->AdjustTime(p,a)
+#define IDirectMusicPerformance_CloseDown(p)                          (p)->lpVtbl->CloseDown(p)
+#define IDirectMusicPerformance_GetResolvedTime(p,a,b,c)              (p)->lpVtbl->GetResolvedTime(p,a,b,c)
+#define IDirectMusicPerformance_MIDIToMusic(p,a,b,c,d,e)              (p)->lpVtbl->MIDIToMusic(p,a,b,c,d,e)
+#define IDirectMusicPerformance_MusicToMIDI(p,a,b,c,d,e)              (p)->lpVtbl->MusicToMIDI(p,a,b,c,d,e)
+#define IDirectMusicPerformance_TimeToRhythm(p,a,b,c,d,e,f)           (p)->lpVtbl->TimeToRhythm(p,a,b,c,d,e,f)
+#define IDirectMusicPerformance_RhythmToTime(p,a,b,c,d,e,f)           (p)->lpVtbl->RhythmToTime(p,a,b,c,d,e,f)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicPerformance8 interface
+ */
+#define INTERFACE IDirectMusicPerformance8
+DECLARE_INTERFACE_(IDirectMusicPerformance8,IDirectMusicPerformance)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicPerformance methods ***/
+    STDMETHOD(Init)(THIS_ IDirectMusic **ppDirectMusic, LPDIRECTSOUND pDirectSound, HWND hWnd) PURE;
+    STDMETHOD(PlaySegment)(THIS_ IDirectMusicSegment *pSegment, DWORD dwFlags, __int64 i64StartTime, IDirectMusicSegmentState **ppSegmentState) PURE;
+    STDMETHOD(Stop)(THIS_ IDirectMusicSegment *pSegment, IDirectMusicSegmentState *pSegmentState, MUSIC_TIME mtTime, DWORD dwFlags) PURE;
+    STDMETHOD(GetSegmentState)(THIS_ IDirectMusicSegmentState **ppSegmentState, MUSIC_TIME mtTime) PURE;
+    STDMETHOD(SetPrepareTime)(THIS_ DWORD dwMilliSeconds) PURE;
+    STDMETHOD(GetPrepareTime)(THIS_ DWORD *pdwMilliSeconds) PURE;
+    STDMETHOD(SetBumperLength)(THIS_ DWORD dwMilliSeconds) PURE;
+    STDMETHOD(GetBumperLength)(THIS_ DWORD *pdwMilliSeconds) PURE;
+    STDMETHOD(SendPMsg)(THIS_ DMUS_PMSG *pPMSG) PURE;
+    STDMETHOD(MusicToReferenceTime)(THIS_ MUSIC_TIME mtTime, REFERENCE_TIME *prtTime) PURE;
+    STDMETHOD(ReferenceToMusicTime)(THIS_ REFERENCE_TIME rtTime, MUSIC_TIME *pmtTime) PURE;
+    STDMETHOD(IsPlaying)(THIS_ IDirectMusicSegment *pSegment, IDirectMusicSegmentState *pSegState) PURE;
+    STDMETHOD(GetTime)(THIS_ REFERENCE_TIME *prtNow, MUSIC_TIME *pmtNow) PURE;
+    STDMETHOD(AllocPMsg)(THIS_ ULONG cb, DMUS_PMSG **ppPMSG) PURE;
+    STDMETHOD(FreePMsg)(THIS_ DMUS_PMSG *pPMSG) PURE;
+    STDMETHOD(GetGraph)(THIS_ struct IDirectMusicGraph **ppGraph) PURE;
+    STDMETHOD(SetGraph)(THIS_ struct IDirectMusicGraph *pGraph) PURE;
+    STDMETHOD(SetNotificationHandle)(THIS_ HANDLE hNotification, REFERENCE_TIME rtMinimum) PURE;
+    STDMETHOD(GetNotificationPMsg)(THIS_ DMUS_NOTIFICATION_PMSG **ppNotificationPMsg) PURE;
+    STDMETHOD(AddNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
+    STDMETHOD(RemoveNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
+    STDMETHOD(AddPort)(THIS_ IDirectMusicPort *pPort) PURE;
+    STDMETHOD(RemovePort)(THIS_ IDirectMusicPort *pPort) PURE;
+    STDMETHOD(AssignPChannelBlock)(THIS_ DWORD dwBlockNum, IDirectMusicPort *pPort, DWORD dwGroup) PURE;
+    STDMETHOD(AssignPChannel)(THIS_ DWORD dwPChannel, IDirectMusicPort *pPort, DWORD dwGroup, DWORD dwMChannel) PURE;
+    STDMETHOD(PChannelInfo)(THIS_ DWORD dwPChannel, IDirectMusicPort **ppPort, DWORD *pdwGroup, DWORD *pdwMChannel) PURE;
+    STDMETHOD(DownloadInstrument)(THIS_ IDirectMusicInstrument *pInst, DWORD dwPChannel, IDirectMusicDownloadedInstrument **ppDownInst, DMUS_NOTERANGE *pNoteRanges, DWORD dwNumNoteRanges, IDirectMusicPort **ppPort, DWORD *pdwGroup, DWORD *pdwMChannel) PURE;
+    STDMETHOD(Invalidate)(THIS_ MUSIC_TIME mtTime, DWORD dwFlags) PURE;
+    STDMETHOD(GetParam)(THIS_ REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME *pmtNext, void *pParam) PURE;
+    STDMETHOD(SetParam)(THIS_ REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, void *pParam) PURE;
+    STDMETHOD(GetGlobalParam)(THIS_ REFGUID rguidType, void *pParam, DWORD dwSize) PURE;
+    STDMETHOD(SetGlobalParam)(THIS_ REFGUID rguidType, void *pParam, DWORD dwSize) PURE;
+    STDMETHOD(GetLatencyTime)(THIS_ REFERENCE_TIME *prtTime) PURE;
+    STDMETHOD(GetQueueTime)(THIS_ REFERENCE_TIME *prtTime) PURE;
+    STDMETHOD(AdjustTime)(THIS_ REFERENCE_TIME rtAmount) PURE;
+    STDMETHOD(CloseDown)(THIS) PURE;
+    STDMETHOD(GetResolvedTime)(THIS_ REFERENCE_TIME rtTime, REFERENCE_TIME *prtResolved, DWORD dwTimeResolveFlags) PURE;
+    STDMETHOD(MIDIToMusic)(THIS_ BYTE bMIDIValue, DMUS_CHORD_KEY *pChord, BYTE bPlayMode, BYTE bChordLevel, WORD *pwMusicValue) PURE;
+    STDMETHOD(MusicToMIDI)(THIS_ WORD wMusicValue, DMUS_CHORD_KEY *pChord, BYTE bPlayMode, BYTE bChordLevel, BYTE *pbMIDIValue) PURE;
+    STDMETHOD(TimeToRhythm)(THIS_ MUSIC_TIME mtTime, DMUS_TIMESIGNATURE *pTimeSig, WORD *pwMeasure, BYTE *pbBeat, BYTE *pbGrid, short *pnOffset) PURE;
+    STDMETHOD(RhythmToTime)(THIS_ WORD wMeasure, BYTE bBeat, BYTE bGrid, short nOffset, DMUS_TIMESIGNATURE *pTimeSig, MUSIC_TIME *pmtTime) PURE;
+    /*** IDirectMusicPerformance8 methods ***/
+    STDMETHOD(InitAudio)(THIS_ IDirectMusic **ppDirectMusic, IDirectSound **ppDirectSound, HWND hWnd, DWORD dwDefaultPathType, DWORD dwPChannelCount, DWORD dwFlags, DMUS_AUDIOPARAMS *pParams) PURE;
+    STDMETHOD(PlaySegmentEx)(THIS_ IUnknown *pSource, WCHAR *pwzSegmentName, IUnknown *pTransition, DWORD dwFlags, __int64 i64StartTime, IDirectMusicSegmentState **ppSegmentState, IUnknown *pFrom, IUnknown *pAudioPath) PURE;
+    STDMETHOD(StopEx)(THIS_ IUnknown *pObjectToStop, __int64 i64StopTime, DWORD dwFlags) PURE;
+    STDMETHOD(ClonePMsg)(THIS_ DMUS_PMSG *pSourcePMSG, DMUS_PMSG **ppCopyPMSG) PURE;
+    STDMETHOD(CreateAudioPath)(THIS_ IUnknown *pSourceConfig, BOOL fActivate, IDirectMusicAudioPath **ppNewPath) PURE;
+    STDMETHOD(CreateStandardAudioPath)(THIS_ DWORD dwType, DWORD dwPChannelCount, BOOL fActivate, IDirectMusicAudioPath **ppNewPath) PURE;
+    STDMETHOD(SetDefaultAudioPath)(THIS_ IDirectMusicAudioPath *pAudioPath) PURE;
+    STDMETHOD(GetDefaultAudioPath)(THIS_ IDirectMusicAudioPath **ppAudioPath) PURE;
+    STDMETHOD(GetParamEx)(THIS_ REFGUID rguidType, DWORD dwTrackID, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME *pmtNext, void *pParam) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicPerformance8_QueryInterface(p,a,b)                 (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicPerformance8_AddRef(p)                             (p)->lpVtbl->AddRef(p)
+#define IDirectMusicPerformance8_Release(p)                            (p)->lpVtbl->Release(p)
+/*** IDirectMusicPerformance methods ***/
+#define IDirectMusicPerformance8_Init(p,a,b,c)                         (p)->lpVtbl->Init(p,a,b,c)
+#define IDirectMusicPerformance8_PlaySegment(p,a,b,c,d)                (p)->lpVtbl->PlaySegment(p,a,b,c,d)
+#define IDirectMusicPerformance8_Stop(p,a,b,c,d)                       (p)->lpVtbl->Stop(p,a,b,c,d)
+#define IDirectMusicPerformance8_GetSegmentState(p,a,b)                (p)->lpVtbl->GetSegmentState(p,a,b)
+#define IDirectMusicPerformance8_SetPrepareTime(p,a)                   (p)->lpVtbl->SetPrepareTime(p,a)
+#define IDirectMusicPerformance8_GetPrepareTime(p,a)                   (p)->lpVtbl->GetPrepareTime(p,a)
+#define IDirectMusicPerformance8_SetBumperLength(p,a)                  (p)->lpVtbl->SetBumperLength(p,a)
+#define IDirectMusicPerformance8_GetBumperLength(p,a)                  (p)->lpVtbl->GetBumperLength(p,a)
+#define IDirectMusicPerformance8_SendPMsg(p,a)                         (p)->lpVtbl->SendPMsg(p,a)
+#define IDirectMusicPerformance8_MusicToReferenceTime(p,a,b)           (p)->lpVtbl->MusicToReferenceTime(p,a,b)
+#define IDirectMusicPerformance8_ReferenceToMusicTime(p,a,b)           (p)->lpVtbl->ReferenceToMusicTime(p,a,b)
+#define IDirectMusicPerformance8_IsPlaying(p,a,b)                      (p)->lpVtbl->IsPlaying(p,a,b)
+#define IDirectMusicPerformance8_GetTime(p,a,b)                        (p)->lpVtbl->GetTime(p,a,b)
+#define IDirectMusicPerformance8_AllocPMsg(p,a,b)                      (p)->lpVtbl->AllocPMsg(p,a,b)
+#define IDirectMusicPerformance8_FreePMsg(p,a)                         (p)->lpVtbl->FreePMsg(p,a)
+#define IDirectMusicPerformance8_GetGraph(p,a)                         (p)->lpVtbl->GetGraph(p,a)
+#define IDirectMusicPerformance8_SetGraph(p,a)                         (p)->lpVtbl->SetGraph(p,a)
+#define IDirectMusicPerformance8_SetNotificationHandle(p,a,b)          (p)->lpVtbl->SetNotificationHandle(p,a,b)
+#define IDirectMusicPerformance8_GetNotificationPMsg(p,a)              (p)->lpVtbl->GetNotificationPMsg(p,a)
+#define IDirectMusicPerformance8_AddNotificationType(p,a)              (p)->lpVtbl->AddNotificationType(p,a)
+#define IDirectMusicPerformance8_RemoveNotificationType(p,a)           (p)->lpVtbl->RemoveNotificationType(p,a)
+#define IDirectMusicPerformance8_AddPort(p,a)                          (p)->lpVtbl->AddPort(p,a)
+#define IDirectMusicPerformance8_RemovePort(p,a)                       (p)->lpVtbl->RemovePort(p,a)
+#define IDirectMusicPerformance8_AssignPChannelBlock(p,a,b,c)          (p)->lpVtbl->AssignPChannelBlock(p,a,b,c)
+#define IDirectMusicPerformance8_AssignPChannel(p,a,b,c,d)             (p)->lpVtbl->AssignPChannel(p,a,b,c,d)
+#define IDirectMusicPerformance8_PChannelInfo(p,a,b,c,d)               (p)->lpVtbl->PChannelInfo(p,a,b,c,d)
+#define IDirectMusicPerformance8_DownloadInstrument(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->DownloadInstrument(p,a,b,c,d,e,f,g,h)
+#define IDirectMusicPerformance8_Invalidate(p,a,b)                     (p)->lpVtbl->Invalidate(p,a,b)
+#define IDirectMusicPerformance8_GetParam(p,a,b,c,d,e,f)               (p)->lpVtbl->GetParam(p,a,b,c,d,e,f)
+#define IDirectMusicPerformance8_SetParam(p,a,b,c,d,e)                 (p)->lpVtbl->SetParam(p,a,b,c,d,e)
+#define IDirectMusicPerformance8_GetGlobalParam(p,a,b,c)               (p)->lpVtbl->GetGlobalParam(p,a,b,c)
+#define IDirectMusicPerformance8_SetGlobalParam(p,a,b,c)               (p)->lpVtbl->SetGlobalParam(p,a,b,c)
+#define IDirectMusicPerformance8_GetLatencyTime(p,a)                   (p)->lpVtbl->GetLatencyTime(p,a)
+#define IDirectMusicPerformance8_GetQueueTime(p,a)                     (p)->lpVtbl->GetQueueTime(p,a)
+#define IDirectMusicPerformance8_AdjustTime(p,a)                       (p)->lpVtbl->AdjustTime(p,a)
+#define IDirectMusicPerformance8_CloseDown(p)                          (p)->lpVtbl->CloseDown(p)
+#define IDirectMusicPerformance8_GetResolvedTime(p,a,b,c)              (p)->lpVtbl->GetResolvedTime(p,a,b,c)
+#define IDirectMusicPerformance8_MIDIToMusic(p,a,b,c,d,e)              (p)->lpVtbl->MIDIToMusic(p,a,b,c,d,e)
+#define IDirectMusicPerformance8_MusicToMIDI(p,a,b,c,d,e)              (p)->lpVtbl->MusicToMIDI(p,a,b,c,d,e)
+#define IDirectMusicPerformance8_TimeToRhythm(p,a,b,c,d,e,f)           (p)->lpVtbl->TimeToRhythm(p,a,b,c,d,e,f)
+#define IDirectMusicPerformance8_RhythmToTime(p,a,b,c,d,e,f)           (p)->lpVtbl->RhythmToTime(p,a,b,c,d,e,f)
+    /*  IDirectMusicPerformance8 methods*/
+#define IDirectMusicPerformance8_InitAudio(p,a,b,c,d,e,f,g)            (p)->lpVtbl->InitAudio(p,a,b,c,d,e,f,g)
+#define IDirectMusicPerformance8_PlaySegmentEx(p,a,b,c,d,e,f,g,h)      (p)->lpVtbl->PlaySegmentEx(p,a,b,c,d,e,f,g,h)
+#define IDirectMusicPerformance8_StopEx(p,a,b,c)                       (p)->lpVtbl->StopEx(p,a,b,c)
+#define IDirectMusicPerformance8_ClonePMsg(p,a,b)                      (p)->lpVtbl->ClonePMsg(p,a,b)
+#define IDirectMusicPerformance8_CreateAudioPath(p,a,b,c)              (p)->lpVtbl->CreateAudioPath(p,a,b,c)
+#define IDirectMusicPerformance8_CreateStandardAudioPath(p,a,b,c,d)    (p)->lpVtbl->CreateStandardAudioPath(p,a,b,c,d)
+#define IDirectMusicPerformance8_SetDefaultAudioPath(p,a)              (p)->lpVtbl->SetDefaultAudioPath(p,a)
+#define IDirectMusicPerformance8_GetDefaultAudioPath(p,a)              (p)->lpVtbl->GetDefaultAudioPath(p,a)
+#define IDirectMusicPerformance8_GetParamEx(p,a,b,c,d,e,f,g)           (p)->lpVtbl->GetParamEx(p,a,b,c,d,e,f,g)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicGraph interface
+ */
+#define INTERFACE IDirectMusicGraph
+DECLARE_INTERFACE_(IDirectMusicGraph,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicGraph methods ***/
+    STDMETHOD(StampPMsg)(THIS_ DMUS_PMSG *pPMSG) PURE;
+    STDMETHOD(InsertTool)(THIS_ IDirectMusicTool *pTool, DWORD *pdwPChannels, DWORD cPChannels, LONG lIndex) PURE;
+    STDMETHOD(GetTool)(THIS_ DWORD dwIndex, IDirectMusicTool **ppTool) PURE;
+    STDMETHOD(RemoveTool)(THIS_ IDirectMusicTool *pTool) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicGraph_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicGraph_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectMusicGraph_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectMusicGraph methods ***/
+#define IDirectMusicGraph_StampPMsg(p,a)        (p)->lpVtbl->StampPMsg(p,a)
+#define IDirectMusicGraph_InsertTool(p,a,b,c,d) (p)->lpVtbl->InsertTool(p,a,b,c,d)
+#define IDirectMusicGraph_GetTool(p,a,b)        (p)->lpVtbl->GetTool(p,a,b)
+#define IDirectMusicGraph_RemoveTool(p,a)       (p)->lpVtbl->RemoveTool(p,a)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicStyle interface
+ */
+#define INTERFACE IDirectMusicStyle
+DECLARE_INTERFACE_(IDirectMusicStyle,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicStyle methods ***/
+    STDMETHOD(GetBand)(THIS_ WCHAR *pwszName, IDirectMusicBand **ppBand) PURE;
+    STDMETHOD(EnumBand)(THIS_ DWORD dwIndex, WCHAR *pwszName) PURE;
+    STDMETHOD(GetDefaultBand)(THIS_ IDirectMusicBand **ppBand) PURE;
+    STDMETHOD(EnumMotif)(THIS_ DWORD dwIndex, WCHAR *pwszName) PURE;
+    STDMETHOD(GetMotif)(THIS_ WCHAR *pwszName, IDirectMusicSegment **ppSegment) PURE;
+    STDMETHOD(GetDefaultChordMap)(THIS_ struct IDirectMusicChordMap **ppChordMap) PURE;
+    STDMETHOD(EnumChordMap)(THIS_ DWORD dwIndex, WCHAR *pwszName) PURE;
+    STDMETHOD(GetChordMap)(THIS_ WCHAR *pwszName, struct IDirectMusicChordMap **ppChordMap) PURE;
+    STDMETHOD(GetTimeSignature)(THIS_ DMUS_TIMESIGNATURE *pTimeSig) PURE;
+    STDMETHOD(GetEmbellishmentLength)(THIS_ DWORD dwType, DWORD dwLevel, DWORD *pdwMin, DWORD *pdwMax) PURE;
+    STDMETHOD(GetTempo)(THIS_ double *pTempo) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicStyle_QueryInterface(p,a,b)             (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicStyle_AddRef(p)                         (p)->lpVtbl->AddRef(p)
+#define IDirectMusicStyle_Release(p)                        (p)->lpVtbl->Release(p)
+/*** IDirectMusicStyle methods ***/
+#define IDirectMusicStyle_GetBand(p,a,b)                    (p)->lpVtbl->GetBand(p,a,b)
+#define IDirectMusicStyle_EnumBand(p,a,b)                   (p)->lpVtbl->EnumBand(p,a,b)
+#define IDirectMusicStyle_GetDefaultBand(p,a)               (p)->lpVtbl->GetDefaultBand(p,a)
+#define IDirectMusicStyle_EnumMotif(p,a,b)                  (p)->lpVtbl->EnumMotif(p,a,b)
+#define IDirectMusicStyle_GetMotif(p,a,b)                   (p)->lpVtbl->GetMotif(p,a,b)
+#define IDirectMusicStyle_GetDefaultChordMap(p,a)           (p)->lpVtbl->GetDefaultChordMap(p,a)
+#define IDirectMusicStyle_EnumChordMap(p,a,b)               (p)->lpVtbl->EnumChordMap(p,a,b)
+#define IDirectMusicStyle_GetChordMap(p,a,b)                (p)->lpVtbl->GetChordMap(p,a,b)
+#define IDirectMusicStyle_GetTimeSignature(p,a)             (p)->lpVtbl->GetTimeSignature(p,a)
+#define IDirectMusicStyle_GetEmbellishmentLength(p,a,b,c,d) (p)->lpVtbl->GetEmbellishmentLength(p,a,b,c,d)
+#define IDirectMusicStyle_GetTempo(p,a)                     (p)->lpVtbl->GetTempo(p,a)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicStyle8 interface
+ */
+#define INTERFACE IDirectMusicStyle8
+DECLARE_INTERFACE_(IDirectMusicStyle8,IDirectMusicStyle)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicStyle methods ***/
+    STDMETHOD(GetBand)(THIS_ WCHAR *pwszName, IDirectMusicBand **ppBand) PURE;
+    STDMETHOD(EnumBand)(THIS_ DWORD dwIndex, WCHAR *pwszName) PURE;
+    STDMETHOD(GetDefaultBand)(THIS_ IDirectMusicBand **ppBand) PURE;
+    STDMETHOD(EnumMotif)(THIS_ DWORD dwIndex, WCHAR *pwszName) PURE;
+    STDMETHOD(GetMotif)(THIS_ WCHAR *pwszName, IDirectMusicSegment **ppSegment) PURE;
+    STDMETHOD(GetDefaultChordMap)(THIS_ struct IDirectMusicChordMap **ppChordMap) PURE;
+    STDMETHOD(EnumChordMap)(THIS_ DWORD dwIndex, WCHAR *pwszName) PURE;
+    STDMETHOD(GetChordMap)(THIS_ WCHAR *pwszName, struct IDirectMusicChordMap **ppChordMap) PURE;
+    STDMETHOD(GetTimeSignature)(THIS_ DMUS_TIMESIGNATURE *pTimeSig) PURE;
+    STDMETHOD(GetEmbellishmentLength)(THIS_ DWORD dwType, DWORD dwLevel, DWORD *pdwMin, DWORD *pdwMax) PURE;
+    STDMETHOD(GetTempo)(THIS_ double *pTempo) PURE;
+    /*** IDirectMusicStyle8 methods ***/
+    STDMETHOD(EnumPattern)(THIS_ DWORD dwIndex, DWORD dwPatternType, WCHAR *pwszName) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicStyle8_QueryInterface(p,a,b)             (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicStyle8_AddRef(p)                         (p)->lpVtbl->AddRef(p)
+#define IDirectMusicStyle8_Release(p)                        (p)->lpVtbl->Release(p)
+/*** IDirectMusicStyle methods ***/
+#define IDirectMusicStyle8_GetBand(p,a,b)                    (p)->lpVtbl->GetBand(p,a,b)
+#define IDirectMusicStyle8_EnumBand(p,a,b)                   (p)->lpVtbl->EnumBand(p,a,b)
+#define IDirectMusicStyle8_GetDefaultBand(p,a)               (p)->lpVtbl->GetDefaultBand(p,a)
+#define IDirectMusicStyle8_EnumMotif(p,a,b)                  (p)->lpVtbl->EnumMotif(p,a,b)
+#define IDirectMusicStyle8_GetMotif(p,a,b)                   (p)->lpVtbl->GetMotif(p,a,b)
+#define IDirectMusicStyle8_GetDefaultChordMap(p,a)           (p)->lpVtbl->GetDefaultChordMap(p,a)
+#define IDirectMusicStyle8_EnumChordMap(p,a,b)               (p)->lpVtbl->EnumChordMap(p,a,b)
+#define IDirectMusicStyle8_GetChordMap(p,a,b)                (p)->lpVtbl->GetChordMap(p,a,b)
+#define IDirectMusicStyle8_GetTimeSignature(p,a)             (p)->lpVtbl->GetTimeSignature(p,a)
+#define IDirectMusicStyle8_GetEmbellishmentLength(p,a,b,c,d) (p)->lpVtbl->GetEmbellishmentLength(p,a,b,c,d)
+#define IDirectMusicStyle8_GetTempo(p,a)                     (p)->lpVtbl->GetTempo(p,a)
+/*** IDirectMusicStyle8 methods ***/
+#define IDirectMusicStyle8_EnumPattern(p,a,b,c)              (p)->lpVtbl->EnumPattern(p,a,b,c)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicChordMap interface
+ */
+#define INTERFACE IDirectMusicChordMap
+DECLARE_INTERFACE_(IDirectMusicChordMap,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicChordMap methods ***/
+    STDMETHOD(GetScale)(THIS_ DWORD *pdwScale) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicChordMap_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicChordMap_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectMusicChordMap_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectMusicChordMap methods ***/
+#define IDirectMusicChordMap_GetScale(p,a)         (p)->lpVtbl->GetScale(p,a)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicComposer interface
+ */
+#define INTERFACE IDirectMusicComposer
+DECLARE_INTERFACE_(IDirectMusicComposer,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicComposer methods ***/
+    STDMETHOD(ComposeSegmentFromTemplate)(THIS_ IDirectMusicStyle *pStyle, IDirectMusicSegment *pTemplate, WORD wActivity, IDirectMusicChordMap *pChordMap, IDirectMusicSegment **ppSegment) PURE;
+    STDMETHOD(ComposeSegmentFromShape)(THIS_ IDirectMusicStyle *pStyle, WORD wNumMeasures, WORD wShape, WORD wActivity, BOOL fIntro, BOOL fEnd, IDirectMusicChordMap *pChordMap, IDirectMusicSegment **ppSegment) PURE;
+    STDMETHOD(ComposeTransition)(THIS_ IDirectMusicSegment *pFromSeg, IDirectMusicSegment *pToSeg, MUSIC_TIME mtTime, WORD wCommand, DWORD dwFlags, IDirectMusicChordMap *pChordMap, IDirectMusicSegment **ppTransSeg) PURE;
+    STDMETHOD(AutoTransition)(THIS_ IDirectMusicPerformance *pPerformance, IDirectMusicSegment *pToSeg, WORD wCommand, DWORD dwFlags, IDirectMusicChordMap *pChordMap, IDirectMusicSegment **ppTransSeg, IDirectMusicSegmentState **ppToSegState, IDirectMusicSegmentState **ppTransSegState) PURE;
+    STDMETHOD(ComposeTemplateFromShape)(THIS_ WORD wNumMeasures, WORD wShape, BOOL fIntro, BOOL fEnd, WORD wEndLength, IDirectMusicSegment **ppTemplate) PURE;
+    STDMETHOD(ChangeChordMap)(THIS_ IDirectMusicSegment *pSegment, BOOL fTrackScale, IDirectMusicChordMap *pChordMap) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicComposer_QueryInterface(p,a,b)                      (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicComposer_AddRef(p)                                  (p)->lpVtbl->AddRef(p)
+#define IDirectMusicComposer_Release(p)                                 (p)->lpVtbl->Release(p)
+/*** IDirectMusicComposer methods ***/
+#define IDirectMusicComposer_ComposeSegmentFromTemplate(p,a,b,c,d,e)    (p)->lpVtbl->ComposeSegmentFromTemplate(p,a,b,c,d,e)
+#define IDirectMusicComposer_ComposeSegmentFromShape(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->ComposeSegmentFromShape(p,a,b,c,d,e,f,g,h)
+#define IDirectMusicComposer_ComposeTransition(p,a,b,c,d,e,f,g)         (p)->lpVtbl->ComposeTransition(p,a,b,c,d,e,f,g)
+#define IDirectMusicComposer_AutoTransition(p,a,b,c,d,e,f,g,h)          (p)->lpVtbl->AutoTransition(p,a,b,c,d,e,f,g,h)
+#define IDirectMusicComposer_ComposeTemplateFromShape(p,a,b,c,d,e,f)    (p)->lpVtbl->ComposeTemplateFromShape(p,a,b,c,d,e,f)
+#define IDirectMusicComposer_ChangeChordMap(p,a,b,c)                    (p)->lpVtbl->ChangeChordMap(p,a,b,c)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicPatternTrack interface
+ */
+#define INTERFACE IDirectMusicPatternTrack
+DECLARE_INTERFACE_(IDirectMusicPatternTrack,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicPatternTrack methods ***/
+    STDMETHOD(CreateSegment)(THIS_ IDirectMusicStyle *pStyle, IDirectMusicSegment **ppSegment) PURE;
+    STDMETHOD(SetVariation)(THIS_ IDirectMusicSegmentState *pSegState, DWORD dwVariationFlags, DWORD dwPart) PURE;
+    STDMETHOD(SetPatternByName)(THIS_ IDirectMusicSegmentState *pSegState, WCHAR *wszName, IDirectMusicStyle *pStyle, DWORD dwPatternType, DWORD *pdwLength) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicPatternTrack_QueryInterface(p,a,b)         (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicPatternTrack_AddRef(p)                     (p)->lpVtbl->AddRef(p)
+#define IDirectMusicPatternTrack_Release(p)                    (p)->lpVtbl->Release(p)
+/*** IDirectMusicPatternTrack methods ***/
+#define IDirectMusicPatternTrack_CreateSegment(p,a,b)          (p)->lpVtbl->CreateSegment(p,a,b)
+#define IDirectMusicPatternTrack_SetVariation(p,a,b,c)         (p)->lpVtbl->SetVariation(p,a,b,c)
+#define IDirectMusicPatternTrack_SetPatternByName(p,a,b,c,d,e) (p)->lpVtbl->SetPatternByName(p,a,b,c,d,e)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicScript interface
+ */
+#define INTERFACE IDirectMusicScript
+DECLARE_INTERFACE_(IDirectMusicScript,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicScript methods ***/
+    STDMETHOD(Init)(THIS_ IDirectMusicPerformance *pPerformance, DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE;
+    STDMETHOD(CallRoutine)(THIS_ WCHAR *pwszRoutineName, DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE;
+    STDMETHOD(SetVariableVariant)(THIS_ WCHAR *pwszVariableName, VARIANT varValue, BOOL fSetRef, DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE;
+    STDMETHOD(GetVariableVariant)(THIS_ WCHAR *pwszVariableName, VARIANT *pvarValue, DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE;
+    STDMETHOD(SetVariableNumber)(THIS_ WCHAR *pwszVariableName, LONG lValue, DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE;
+    STDMETHOD(GetVariableNumber)(THIS_ WCHAR *pwszVariableName, LONG *plValue, DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE;
+    STDMETHOD(SetVariableObject)(THIS_ WCHAR *pwszVariableName, IUnknown *punkValue, DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE;
+    STDMETHOD(GetVariableObject)(THIS_ WCHAR *pwszVariableName, REFIID riid, LPVOID *ppv, DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE;
+    STDMETHOD(EnumRoutine)(THIS_ DWORD dwIndex, WCHAR *pwszName) PURE;
+    STDMETHOD(EnumVariable)(THIS_ DWORD dwIndex, WCHAR *pwszName) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicScript_QueryInterface(p,a,b)               (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicScript_AddRef(p)                           (p)->lpVtbl->AddRef(p)
+#define IDirectMusicScript_Release(p)                          (p)->lpVtbl->Release(p)
+/*** IDirectMusicScript methods ***/
+#define IDirectMusicPatternTrack_Init(p,a,b)                   (p)->lpVtbl->Init(p,a,b)
+#define IDirectMusicPatternTrack_CallRoutine(p,a,b)            (p)->lpVtbl->CallRoutine(p,a,b)
+#define IDirectMusicPatternTrack_SetVariableVariant(p,a,b,c,d) (p)->lpVtbl->SetVariableVariant(p,a,b,c,d)
+#define IDirectMusicPatternTrack_GetVariableVariant(p,a,b,c)   (p)->lpVtbl->GetVariableVariant(p,a,b,c)
+#define IDirectMusicPatternTrack_SetVariableNumber(p,a,b,c)    (p)->lpVtbl->SetVariableNumber(p,a,b,c)
+#define IDirectMusicPatternTrack_GetVariableNumber(p,a,b,c)    (p)->lpVtbl->GetVariableNumber(p,a,b,c)
+#define IDirectMusicPatternTrack_SetVariableObject(p,a,b,c)    (p)->lpVtbl->SetVariableObject(p,a,b,c)
+#define IDirectMusicPatternTrack_GetVariableObject(p,a,b,c,d)  (p)->lpVtbl->GetVariableObject(p,a,b,c,d)
+#define IDirectMusicPatternTrack_EnumRoutine(p,a,b)            (p)->lpVtbl->EnumRoutine(p,a,b)
+#define IDirectMusicPatternTrack_EnumVariable(p,a,b)           (p)->lpVtbl->EnumVariable(p,a,b)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicContainer interface
+ */
+#define INTERFACE IDirectMusicContainer
+DECLARE_INTERFACE_(IDirectMusicContainer,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicContainer methods ***/
+    STDMETHOD(EnumObject)(THIS_ REFGUID rguidClass, DWORD dwIndex, LPDMUS_OBJECTDESC pDesc, WCHAR *pwszAlias) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicContainer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicContainer_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectMusicContainer_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectMusicContainer methods ***/
+#define IDirectMusicContainer_EnumObject(p,a,b,c,d) (p)->lpVtbl->EnumObject(p,a,b,c,d)
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <poppack.h>
+
+#endif /* __WINE_DMUSIC_PERFORMANCE_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmusics.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmusics.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dmusics.h	(revision 16410)
@@ -0,0 +1,237 @@
+/*
+ *  DirectMusic Software Synth Definitions
+ *
+ *  Copyright (C) 2003-2004 Rok Mandeljc
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2.1 of the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DMUSIC_SOFTWARESYNTH_H
+#define __WINE_DMUSIC_SOFTWARESYNTH_H
+
+#include <dmusicc.h>
+
+/*****************************************************************************
+ * Registry path
+ */
+#define REGSTR_PATH_SOFTWARESYNTHS "Software\\Microsoft\\DirectMusic\\SoftwareSynths"
+
+
+/*****************************************************************************
+ * Predeclare the interfaces
+ */
+/* IIDs */
+DEFINE_GUID(IID_IDirectMusicSynth,     0x09823661,0x5c85,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
+DEFINE_GUID(IID_IDirectMusicSynth8,    0x53cab625,0x2711,0x4c9f,0x9d,0xe7,0x1b,0x7f,0x92,0x5f,0x6f,0xc8);
+DEFINE_GUID(IID_IDirectMusicSynthSink, 0x09823663,0x5c85,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
+
+/* typedef definitions */
+typedef struct IDirectMusicSynth *LPDIRECTMUSICSYNTH;
+typedef struct IDirectMusicSynth8 *LPDIRECTMUSICSYNTH8;
+typedef struct IDirectMusicSynthSink *LPDIRECTMUSICSYNTHSINK;
+
+/* GUIDs - property set */
+DEFINE_GUID(GUID_DMUS_PROP_SetSynthSink,   0x0a3a5ba5,0x37b6,0x11d2,0xb9,0xf9,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(GUID_DMUS_PROP_SinkUsesDSound, 0xbe208857,0x8952,0x11d2,0xba,0x1c,0x00,0x00,0xf8,0x75,0xac,0x12);
+
+
+/*****************************************************************************
+ * Flags
+ */
+#define REFRESH_F_LASTBUFFER        0x1
+
+
+/*****************************************************************************
+ * Structures
+ */
+#ifndef _DMUS_VOICE_STATE_DEFINED
+#define _DMUS_VOICE_STATE_DEFINED
+
+/* typedef definition */
+typedef struct _DMUS_VOICE_STATE DMUS_VOICE_STATE, *LPDMUS_VOICE_STATE;
+
+/* actual structure */
+struct _DMUS_VOICE_STATE {
+	BOOL            bExists;
+	SAMPLE_POSITION spPosition;
+}; 
+#endif /* _DMUS_VOICE_STATE_DEFINED */
+
+
+/*****************************************************************************
+ * IDirectMusicSynth interface
+ */
+#define INTERFACE IDirectMusicSynth
+DECLARE_INTERFACE_(IDirectMusicSynth,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicSynth methods ***/
+    STDMETHOD(Open)(THIS_ LPDMUS_PORTPARAMS pPortParams) PURE;
+    STDMETHOD(Close)(THIS) PURE;
+    STDMETHOD(SetNumChannelGroups)(THIS_ DWORD dwGroups) PURE;
+    STDMETHOD(Download)(THIS_ LPHANDLE phDownload, LPVOID pvData, LPBOOL pbFree) PURE;
+    STDMETHOD(Unload)(THIS_ HANDLE hDownload, HRESULT (CALLBACK* lpFreeHandle)(HANDLE,HANDLE), HANDLE hUserData) PURE;
+    STDMETHOD(PlayBuffer)(THIS_ REFERENCE_TIME rt, LPBYTE pbBuffer, DWORD cbBuffer) PURE;
+    STDMETHOD(GetRunningStats)(THIS_ LPDMUS_SYNTHSTATS pStats) PURE;
+    STDMETHOD(GetPortCaps)(THIS_ LPDMUS_PORTCAPS pCaps) PURE;
+    STDMETHOD(SetMasterClock)(THIS_ IReferenceClock *pClock) PURE;
+    STDMETHOD(GetLatencyClock)(THIS_ IReferenceClock **ppClock) PURE;
+    STDMETHOD(Activate)(THIS_ BOOL fEnable) PURE;
+    STDMETHOD(SetSynthSink)(THIS_ struct IDirectMusicSynthSink *pSynthSink) PURE;
+    STDMETHOD(Render)(THIS_ short *pBuffer, DWORD dwLength, LONGLONG llPosition) PURE;
+    STDMETHOD(SetChannelPriority)(THIS_ DWORD dwChannelGroup, DWORD dwChannel, DWORD dwPriority) PURE;
+    STDMETHOD(GetChannelPriority)(THIS_ DWORD dwChannelGroup, DWORD dwChannel, LPDWORD pdwPriority) PURE;
+    STDMETHOD(GetFormat)(THIS_ LPWAVEFORMATEX pWaveFormatEx, LPDWORD pdwWaveFormatExSiz) PURE;
+    STDMETHOD(GetAppend)(THIS_ DWORD *pdwAppend) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicSynth_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicSynth_AddRef(p)                   (p)->lpVtbl->AddRef(p)
+#define IDirectMusicSynth_Release(p)                  (p)->lpVtbl->Release(p)
+/*** IDirectMusicSynth methods ***/
+#define IDirectMusicSynth_Open(p,a)                   (p)->lpVtbl->Open(p,a)
+#define IDirectMusicSynth_Close(p)                    (p)->lpVtbl->Close(p)
+#define IDirectMusicSynth_SetNumChannelGroups(p,a)    (p)->lpVtbl->SetNumChannelGroups(p,a)
+#define IDirectMusicSynth_Download(p,a,b,c)           (p)->lpVtbl->Download(p,a,b,c)
+#define IDirectMusicSynth_Unload(p,a,b,c)             (p)->lpVtbl->Unload(p,a,b,c)
+#define IDirectMusicSynth_PlayBuffer(p,a,b,c)         (p)->lpVtbl->PlayBuffer(p,a,b,c)
+#define IDirectMusicSynth_GetRunningStats(p,a)        (p)->lpVtbl->GetRunningStats(p,a)
+#define IDirectMusicSynth_GetPortCaps(p,a)            (p)->lpVtbl->GetPortCaps(p,a)
+#define IDirectMusicSynth_SetMasterClock(p,a)         (p)->lpVtbl->SetMasterClock(p,a)
+#define IDirectMusicSynth_GetLatencyClock(p,a)        (p)->lpVtbl->GetLatencyClock(p,a)
+#define IDirectMusicSynth_Activate(p,a)               (p)->lpVtbl->Activate(p,a)
+#define IDirectMusicSynth_SetSynthSink(p,a)           (p)->lpVtbl->SetSynthSink(p,a)
+#define IDirectMusicSynth_Render(p,a,b,c)             (p)->lpVtbl->Render(p,a,b,c)
+#define IDirectMusicSynth_SetChannelPriority(p,a,b,c) (p)->lpVtbl->SetChannelPriority(p,a,b,c)
+#define IDirectMusicSynth_GetChannelPriority(p,a,b,c) (p)->lpVtbl->GetChannelPriority(p,a,b,c)
+#define IDirectMusicSynth_GetFormat(p,a,b)            (p)->lpVtbl->GetFormat(p,a,b)
+#define IDirectMusicSynth_GetAppend(p,a)              (p)->lpVtbl->GetAppend(p,a)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicSynth8 interface
+ */
+#define INTERFACE IDirectMusicSynth8
+DECLARE_INTERFACE_(IDirectMusicSynth8,IDirectMusicSynth)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicSynth methods ***/
+    STDMETHOD(Open)(THIS_ LPDMUS_PORTPARAMS pPortParams) PURE;
+    STDMETHOD(Close)(THIS) PURE;
+    STDMETHOD(SetNumChannelGroups)(THIS_ DWORD dwGroups) PURE;
+    STDMETHOD(Download)(THIS_ LPHANDLE phDownload, LPVOID pvData, LPBOOL pbFree) PURE;
+    STDMETHOD(Unload)(THIS_ HANDLE hDownload, HRESULT (CALLBACK* lpFreeHandle)(HANDLE,HANDLE), HANDLE hUserData) PURE;
+    STDMETHOD(PlayBuffer)(THIS_ REFERENCE_TIME rt, LPBYTE pbBuffer, DWORD cbBuffer) PURE;
+    STDMETHOD(GetRunningStats)(THIS_ LPDMUS_SYNTHSTATS pStats) PURE;
+    STDMETHOD(GetPortCaps)(THIS_ LPDMUS_PORTCAPS pCaps) PURE;
+    STDMETHOD(SetMasterClock)(THIS_ IReferenceClock *pClock) PURE;
+    STDMETHOD(GetLatencyClock)(THIS_ IReferenceClock **ppClock) PURE;
+    STDMETHOD(Activate)(THIS_ BOOL fEnable) PURE;
+    STDMETHOD(SetSynthSink)(THIS_ struct IDirectMusicSynthSink *pSynthSink) PURE;
+    STDMETHOD(Render)(THIS_ short *pBuffer, DWORD dwLength, LONGLONG llPosition) PURE;
+    STDMETHOD(SetChannelPriority)(THIS_ DWORD dwChannelGroup, DWORD dwChannel, DWORD dwPriority) PURE;
+    STDMETHOD(GetChannelPriority)(THIS_ DWORD dwChannelGroup, DWORD dwChannel, LPDWORD pdwPriority) PURE;
+    STDMETHOD(GetFormat)(THIS_ LPWAVEFORMATEX pWaveFormatEx, LPDWORD pdwWaveFormatExSiz) PURE;
+    STDMETHOD(GetAppend)(THIS_ DWORD *pdwAppend) PURE;
+    /*** IDirectMusicSynth8 methods ***/
+    STDMETHOD(PlayVoice)(THIS_ REFERENCE_TIME rt, DWORD dwVoiceId, DWORD dwChannelGroup, DWORD dwChannel, DWORD dwDLId, long prPitch, long vrVolume, SAMPLE_TIME stVoiceStart, SAMPLE_TIME stLoopStart, SAMPLE_TIME stLoopEnd) PURE;
+    STDMETHOD(StopVoice)(THIS_ REFERENCE_TIME rt, DWORD dwVoiceId) PURE;
+    STDMETHOD(GetVoiceState)(THIS_ DWORD dwVoice[], DWORD cbVoice, DMUS_VOICE_STATE dwVoiceState[]) PURE;
+    STDMETHOD(Refresh)(THIS_ DWORD dwDownloadID, DWORD dwFlags) PURE;
+    STDMETHOD(AssignChannelToBuses)(THIS_ DWORD dwChannelGroup, DWORD dwChannel, LPDWORD pdwBuses, DWORD cBuses) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicSynth8_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicSynth8_AddRef(p)                        (p)->lpVtbl->AddRef(p)
+#define IDirectMusicSynth8_Release(p)                       (p)->lpVtbl->Release(p)
+/*** IDirectMusicSynth methods ***/
+#define IDirectMusicSynth8_Open(p,a)                        (p)->lpVtbl->Open(p,a)
+#define IDirectMusicSynth8_Close(p)                         (p)->lpVtbl->Close(p)
+#define IDirectMusicSynth8_SetNumChannelGroups(p,a)         (p)->lpVtbl->SetNumChannelGroups(p,a)
+#define IDirectMusicSynth8_Download(p,a,b,c)                (p)->lpVtbl->Download(p,a,b,c)
+#define IDirectMusicSynth8_Unload(p,a,b,c)                  (p)->lpVtbl->Unload(p,a,b,c)
+#define IDirectMusicSynth8_PlayBuffer(p,a,b,c)              (p)->lpVtbl->PlayBuffer(p,a,b,c)
+#define IDirectMusicSynth8_GetRunningStats(p,a)             (p)->lpVtbl->GetRunningStats(p,a)
+#define IDirectMusicSynth8_GetPortCaps(p,a)                 (p)->lpVtbl->GetPortCaps(p,a)
+#define IDirectMusicSynth8_SetMasterClock(p,a)              (p)->lpVtbl->SetMasterClock(p,a)
+#define IDirectMusicSynth8_GetLatencyClock(p,a)             (p)->lpVtbl->GetLatencyClock(p,a)
+#define IDirectMusicSynth8_Activate(p,a)                    (p)->lpVtbl->Activate(p,a)
+#define IDirectMusicSynth8_SetSynthSink(p,a)                (p)->lpVtbl->SetSynthSink(p,a)
+#define IDirectMusicSynth8_Render(p,a,b,c)                  (p)->lpVtbl->Render(p,a,b,c)
+#define IDirectMusicSynth8_SetChannelPriority(p,a,b,c)      (p)->lpVtbl->SetChannelPriority(p,a,b,c)
+#define IDirectMusicSynth8_GetChannelPriority(p,a,b,c)      (p)->lpVtbl->GetChannelPriority(p,a,b,c)
+#define IDirectMusicSynth8_GetFormat(p,a,b)                 (p)->lpVtbl->GetFormat(p,a,b)
+#define IDirectMusicSynth8_GetAppend(p,a)                   (p)->lpVtbl->GetAppend(p,a)
+/*** IDirectMusicSynth8 methods ***/
+#define IDirectMusicSynth8_PlayVoice(p,a,b,c,d,e,f,g,h,i,j) (p)->lpVtbl->PlayVoice(p,a,b,c,d,e,f,g,h,i,j)
+#define IDirectMusicSynth8_StopVoice(p,a,b)                 (p)->lpVtbl->StopVoice(p,a,b)
+#define IDirectMusicSynth8_GetVoiceState(p,a,b,c)           (p)->lpVtbl->GetVoiceState(p,a,b,c)
+#define IDirectMusicSynth8_Refresh(p,a,b)                   (p)->lpVtbl->Refresh(p,a,b)
+#define IDirectMusicSynth8_AssignChannelToBuses(p,a,b,c,d)  (p)->lpVtbl->AssignChannelToBuses(p,a,b,c,d)
+#endif
+
+
+/*****************************************************************************
+ * IDirectMusicSynthSink interface
+ */
+#define INTERFACE IDirectMusicSynthSink
+DECLARE_INTERFACE_(IDirectMusicSynthSink,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectMusicSynthSink methods ***/
+    STDMETHOD(Init)(THIS_ IDirectMusicSynth *pSynth) PURE;
+    STDMETHOD(SetMasterClock)(THIS_ IReferenceClock *pClock) PURE;
+    STDMETHOD(GetLatencyClock)(THIS_ IReferenceClock **ppClock) PURE;
+    STDMETHOD(Activate)(THIS_ BOOL fEnable) PURE;
+    STDMETHOD(SampleToRefTime)(THIS_ LONGLONG llSampleTime, REFERENCE_TIME *prfTime) PURE;
+    STDMETHOD(RefTimeToSample)(THIS_ REFERENCE_TIME rfTime, LONGLONG *pllSampleTime) PURE;
+    STDMETHOD(SetDirectSound)(THIS_ LPDIRECTSOUND pDirectSound, LPDIRECTSOUNDBUFFER pDirectSoundBuffer) PURE;
+    STDMETHOD(GetDesiredBufferSize)(THIS_ LPDWORD pdwBufferSizeInSamples) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectMusicSynthSink_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicSynthSink_AddRef(p)                  (p)->lpVtbl->AddRef(p)
+#define IDirectMusicSynthSink_Release(p)                 (p)->lpVtbl->Release(p)
+/*** IDirectMusicSynth methods ***/
+#define IDirectMusicSynthSink_Init(p,a)                  (p)->lpVtbl->Init(p,a)
+#define IDirectMusicSynthSink_SetMasterClock(p,a)        (p)->lpVtbl->SetMasterClock(p,a)
+#define IDirectMusicSynthSink_GetLatencyClock(p,a)       (p)->lpVtbl->GetLatencyClock(p,a)
+#define IDirectMusicSynthSink_Activate(p,a)              (p)->lpVtbl->Activate(p,a)
+#define IDirectMusicSynthSink_SampleToRefTime(p,a,b)     (p)->lpVtbl->SampleToRefTime(p,a,b)
+#define IDirectMusicSynthSink_RefTimeToSample(p,a,b)     (p)->lpVtbl->RefTimeToSample(p,a,b)
+#define IDirectMusicSynthSink_SetDirectSound(p,a,b)      (p)->lpVtbl->SetDirectSound(p,a,b)
+#define IDirectMusicSynthSink_GetDesiredBufferSize(p,a)  (p)->lpVtbl->GetDesiredBufferSize(p,a)
+#endif
+
+#endif /* __WINE_DMUSIC_SOFTWARESYNTH_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/docobj.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/docobj.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/docobj.idl	(revision 16410)
@@ -0,0 +1,408 @@
+/*
+ * Copyright (C) 1999 Paul Quinn
+ * Copyright (C) 2003 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "ocidl.idl";
+import "objidl.idl";
+import "oleidl.idl";
+import "oaidl.idl";
+import "servprov.idl";
+
+
+interface IOleDocumentView;
+interface IEnumOleDocumentViews;
+
+
+/*****************************************************************************
+ * IOleDocument interface
+ */
+[
+    object,
+    uuid(b722bcc5-4e68-101b-a2bc-00aa00404770),
+    pointer_default(unique)
+]
+interface IOleDocument : IUnknown
+{
+    typedef [unique] IOleDocument *LPOLEDOCUMENT;
+
+    typedef enum
+    {
+        DOCMISC_CANCREATEMULTIPLEVIEWS = 1,
+        DOCMISC_SUPPORTCOMPLEXRECTANGLES = 2,
+        DOCMISC_CANTOPENEDIT = 4,
+        DOCMISC_NOFILESUPPORT = 8
+    } DOCMISC;
+
+    HRESULT CreateView(
+        [in, unique] IOleInPlaceSite *pIPSite,
+        [in, unique] IStream *pstm,
+        [in] DWORD dwReserved,
+        [out] IOleDocumentView **ppView);
+
+    HRESULT GetDocMiscStatus(
+        [out] DWORD *pdwStatus);
+
+    HRESULT EnumViews(
+        [out] IEnumOleDocumentViews **ppEnum,
+        [out] IOleDocumentView **ppView);
+}
+
+
+/*****************************************************************************
+ * IOleDocumentSite interface
+ */
+[
+    object,
+    uuid(b722bcc7-4e68-101b-a2bc-00aa00404770),
+    pointer_default(unique)
+]
+interface IOleDocumentSite : IUnknown
+{
+    typedef [unique] IOleDocumentSite *LPOLEDOCUMENTSITE;
+
+    HRESULT ActivateMe( [in] IOleDocumentView *pViewToActivate );
+}
+
+
+/*****************************************************************************
+ * IOleDocumentView interface
+ */
+[
+    object,
+    uuid(b722bcc6-4e68-101b-a2bc-00aa00404770),
+    pointer_default(unique)
+]
+interface IOleDocumentView : IUnknown
+{
+    typedef [unique] IOleDocumentView *LPOLEDOCUMENTVIEW;
+
+    HRESULT SetInPlaceSite( [in, unique] IOleInPlaceSite *pIPSite );
+
+    HRESULT GetInPlaceSite( [out] IOleInPlaceSite **ppIPSite );
+
+    HRESULT GetDocument( [out] IUnknown **ppunk );
+
+    HRESULT SetRect( [in] LPRECT prcView );
+
+    HRESULT GetRect( [out] LPRECT prcView );
+
+    HRESULT SetRectComplex(
+        [in, unique] LPRECT prcView,
+        [in, unique] LPRECT prcHScroll,
+        [in, unique] LPRECT prcVScroll,
+        [in, unique] LPRECT prcSizeBox);
+
+    HRESULT Show( [in] BOOL fShow );
+
+    HRESULT UIActivate( [in] BOOL fUIActivate );
+
+    HRESULT Open();
+
+    HRESULT CloseView( [in] DWORD dwReserved );
+
+    HRESULT SaveViewState( [in] LPSTREAM pstm );
+
+    HRESULT ApplyViewState( [in] LPSTREAM pstm );
+
+    HRESULT Clone(
+        [in] IOleInPlaceSite *pIPSiteNew,
+        [out] IOleDocumentView **ppViewNew);
+}
+
+
+/*****************************************************************************
+ * IEnumOleDocumentViews interface
+ */
+[
+    object,
+    uuid(b722bcc8-4e68-101b-a2bc-00aa00404770),
+    pointer_default(unique)
+]
+interface IEnumOleDocumentViews : IUnknown
+{
+    typedef [unique] IEnumOleDocumentViews *LPENUMOLEDOCUMENTVIEWS;
+
+    [local]
+    HRESULT Next(
+        [in] ULONG cViews,
+        [out] IOleDocumentView **rgpView,
+        [out] ULONG *pcFetched);
+
+    [call_as(Next)]
+    HRESULT RemoteNext(
+        [in] ULONG cViews,
+        [out, size_is(cViews), length_is(*pcFetched)] IOleDocumentView **rgpView,
+        [out] ULONG *pcFetched);
+
+    HRESULT Skip( [in] ULONG cViews );
+
+    HRESULT Reset();
+
+    HRESULT Clone( [out] IEnumOleDocumentViews **ppEnum );
+}
+
+
+/*****************************************************************************
+ * IOleCommandTarget interface
+ */
+[
+    object,
+    uuid(b722bccb-4e68-101b-a2bc-00aa00404770),
+    pointer_default(unique)
+]
+interface IOleCommandTarget : IUnknown
+{
+    typedef [unique] IOleCommandTarget *LPOLECOMMANDTARGET;
+
+    typedef enum OLECMDF
+    {
+        OLECMDF_SUPPORTED = 0x1,
+        OLECMDF_ENABLED = 0x2,
+        OLECMDF_LATCHED = 0x4,
+        OLECMDF_NINCHED = 0x8,
+        OLECMDF_INVISIBLE = 0x10,
+        OLECMDF_DEFHIDEONCTXTMENU = 0x20
+    } OLECMDF;
+
+    typedef struct _tagOLECMD
+    {
+        ULONG cmdID;
+        DWORD cmdf;
+    } OLECMD;
+
+    typedef struct _tagOLECMDTEXT
+    {
+        DWORD cmdtextf;
+        ULONG cwActual;
+        ULONG cwBuf;
+        [size_is(cwBuf)] WCHAR rgwz[];
+    } OLECMDTEXT;
+
+    typedef enum OLECMDTEXTF
+    {
+        OLECMDTEXTF_NONE = 0,
+        OLECMDTEXTF_NAME = 1,
+        OLECMDTEXTF_STATUS = 2
+    } OLECMDTEXTF;
+
+    typedef enum OLECMDEXECOPT
+    {
+        OLECMDEXECOPT_DODEFAULT = 0,
+        OLECMDEXECOPT_PROMPTUSER = 1,
+        OLECMDEXECOPT_DONTPROMPTUSER = 2,
+        OLECMDEXECOPT_SHOWHELP = 3
+    } OLECMDEXECOPT;
+
+    typedef enum OLECMDID
+    {
+        OLECMDID_OPEN = 1,
+        OLECMDID_NEW = 2,
+        OLECMDID_SAVE = 3,
+        OLECMDID_SAVEAS = 4,
+        OLECMDID_SAVECOPYAS = 5,
+        OLECMDID_PRINT = 6,
+        OLECMDID_PRINTPREVIEW = 7,
+        OLECMDID_PAGESETUP = 8,
+        OLECMDID_SPELL = 9,
+        OLECMDID_PROPERTIES = 10,
+        OLECMDID_CUT = 11,
+        OLECMDID_COPY = 12,
+        OLECMDID_PASTE = 13,
+        OLECMDID_PASTESPECIAL = 14,
+        OLECMDID_UNDO = 15,
+        OLECMDID_REDO = 16,
+        OLECMDID_SELECTALL = 17,
+        OLECMDID_CLEARSELECTION = 18,
+        OLECMDID_ZOOM = 19,
+        OLECMDID_GETZOOMRANGE = 20,
+        OLECMDID_UPDATECOMMANDS = 21,
+        OLECMDID_REFRESH = 22,
+        OLECMDID_STOP = 23,
+        OLECMDID_HIDETOOLBARS = 24,
+        OLECMDID_SETPROGRESSMAX = 25,
+        OLECMDID_SETPROGRESSPOS = 26,
+        OLECMDID_SETPROGRESSTEXT = 27,
+        OLECMDID_SETTITLE = 28,
+        OLECMDID_SETDOWNLOADSTATE = 29,
+        OLECMDID_STOPDOWNLOAD = 30,
+        OLECMDID_ONTOOLBARACTIVATED = 31,
+        OLECMDID_FIND = 32,
+        OLECMDID_DELETE = 33,
+        OLECMDID_HTTPEQUIV = 34,
+        OLECMDID_HTTPEQUIV_DONE = 35,
+        OLECMDID_ENABLE_INTERACTION = 36,
+        OLECMDID_ONUNLOAD = 37,
+        OLECMDID_PROPERTYBAG2 = 38,
+        OLECMDID_PREREFRESH = 39,
+        /* iexplorer uses ... 44 */
+        OLECMDID_SHOWSCRIPTERROR = 40,
+        OLECMDID_SHOWMESSAGE = 41,
+        OLECMDID_SHOWFIND = 42,
+        OLECMDID_SHOWPAGESETUP = 43,
+        OLECMDID_SHOWPRINT = 44,
+        OLECMDID_CLOSE = 45,
+        OLECMDID_ALLOWUILESSSAVEAS = 46,
+        OLECMDID_DONTDOWNLOADCSS = 47,
+        OLECMDID_UPDATEPAGESTATUS = 48,
+        OLECMDID_PRINT2 = 49,
+        OLECMDID_PRINTPREVIEW2 = 50,
+        OLECMDID_SETPRINTTEMPLATE = 51,
+        OLECMDID_GETPRINTTEMPLATE = 52,
+        OLECMDID_PAGEACTIONBLOCKED = 55,
+        OLECMDID_PAGEACTIONUIQUERY = 56,
+        OLECMDID_FOCUSVIEWCONTROLS = 57,
+        OLECMDID_FOCUSVIEWCONTROLSQUERY = 58,
+        OLECMDID_SHOWPAGEACTIONMENU = 59,
+        OLECMDID_ADDTRAVELENTRY = 60,
+        OLECMDID_UPDATETRAVELENTRY = 61,
+        OLECMDID_UPDATEBACKFORWARDSTATE = 62,
+        OLECMDID_OPTICAL_ZOOM = 63,
+        OLECMDID_OPTICAL_GETZOOMRANGE = 64,
+        OLECMDID_WINDOWSTATECHANGED = 65,
+        OLECMDID_ACTIVEXINSTALLSCOPE = 66
+    } OLECMDID;
+
+    HRESULT QueryStatus(
+        [in, unique] const GUID *pguidCmdGroup,
+        [in] ULONG cCmds,
+        [in, out, size_is(cCmds)] OLECMD prgCmds[],
+        [in, out, unique] OLECMDTEXT *pCmdText);
+
+    HRESULT Exec(
+        [in, unique] const GUID *pguidCmdGroup,
+        [in] DWORD nCmdID,
+        [in] DWORD nCmdexecopt,
+        [in, unique] VARIANT *pvaIn,
+        [in, out, unique] VARIANT *pvaOut);
+}
+
+
+/*****************************************************************************
+ * IContinueCallback interface
+ */
+[
+   object,
+   uuid(b722bcca-4e68-101b-a2bc-00aa00404770),
+   pointer_default(unique)
+]
+interface IContinueCallback : IUnknown
+{
+    typedef [unique] IContinueCallback *LPCONTINUECALLBACK;
+
+    HRESULT FContinue();
+
+    HRESULT FContinuePrinting(
+        [in] LONG nCntPrinted,
+        [in] LONG nCurPage,
+        [in, unique] WCHAR *pwszPrintStatus);
+}
+
+
+/*****************************************************************************
+ * IPrint interface
+ */
+[
+   object,
+   uuid(b722bcc9-4e68-101b-a2bc-00aa00404770),
+   pointer_default(unique)
+]
+interface IPrint : IUnknown
+{
+    typedef [unique] IPrint *LPPRINT;
+
+    typedef enum
+    {
+        PRINTFLAG_MAYBOTHERUSER = 1,
+        PRINTFLAG_PROMPTUSER  = 2,
+        PRINTFLAG_USERMAYCHANGEPRINTER  = 4,
+        PRINTFLAG_RECOMPOSETODEVICE = 8,
+        PRINTFLAG_DONTACTUALLYPRINT = 16,
+        PRINTFLAG_FORCEPROPERTIES = 32,
+        PRINTFLAG_PRINTTOFILE = 64
+    } PRINTFLAG;
+
+    typedef struct tagPAGERANGE
+    {
+        LONG nFromPage;
+        LONG nToPage;
+    } PAGERANGE;
+
+    typedef struct tagPAGESET
+    {
+        ULONG cbStruct;
+        BOOL fOddPages;
+        BOOL fEvenPages;
+        ULONG cPageRange;
+        [size_is(cPageRange)] PAGERANGE rgPages[];
+    } PAGESET;
+
+    HRESULT SetInitialPageNum(
+        [in] LONG nFirstPage);
+
+    HRESULT GetPageInfo(
+        [out] LONG *pnFirstPage,
+        [out] LONG *pcPages);
+
+    [local]
+    HRESULT Print(
+        [in] DWORD grfFlags,
+        [in, out] DVTARGETDEVICE **pptd,
+        [in, out] PAGESET **ppPageSet,
+        [in, out, unique] STGMEDIUM *pstgmOptions,
+        [in] IContinueCallback *pcallback,
+        [in]  LONG nFirstPage,
+        [out] LONG *pcPagesPrinted,
+        [out] LONG *pnLastPage);
+
+    [call_as(Print)]
+    HRESULT RemotePrint(
+        [in] DWORD grfFlags,
+        [in, out] DVTARGETDEVICE **pptd,
+        [in, out] PAGESET **pppageset,
+        [in, out, unique] RemSTGMEDIUM *pstgmOptions,
+        [in] IContinueCallback *pcallback,
+        [in]  LONG nFirstPage,
+        [out] LONG *pcPagesPrinted,
+        [out] LONG *pnLastPage);
+}
+
+
+cpp_quote("#define OLECMDERR_E_FIRST            (OLE_E_LAST+1)")
+cpp_quote("#define OLECMDERR_E_NOTSUPPORTED     (OLECMDERR_E_FIRST)")
+cpp_quote("#define OLECMDERR_E_DISABLED         (OLECMDERR_E_FIRST+1)")
+cpp_quote("#define OLECMDERR_E_NOHELP           (OLECMDERR_E_FIRST+2)")
+cpp_quote("#define OLECMDERR_E_CANCELED         (OLECMDERR_E_FIRST+3)")
+cpp_quote("#define OLECMDERR_E_UNKNOWNGROUP     (OLECMDERR_E_FIRST+4)")
+
+cpp_quote("#define MSOCMDERR_E_FIRST OLECMDERR_E_FIRST")
+cpp_quote("#define MSOCMDERR_E_NOTSUPPORTED OLECMDERR_E_NOTSUPPORTED")
+cpp_quote("#define MSOCMDERR_E_DISABLED OLECMDERR_E_DISABLED")
+cpp_quote("#define MSOCMDERR_E_NOHELP OLECMDERR_E_NOHELP")
+cpp_quote("#define MSOCMDERR_E_CANCELED OLECMDERR_E_CANCELED")
+cpp_quote("#define MSOCMDERR_E_UNKNOWNGROUP OLECMDERR_E_UNKNOWNGROUP")
+
+cpp_quote("#define LPMSODOCUMENT                  LPOLEDOCUMENT")
+cpp_quote("#define LPMSODOCUMENTSITE              LPOLEDOCUMENTSITE")
+cpp_quote("#define LPMSOVIEW                      LPOLEDOCUMENTVIEW")
+cpp_quote("#define LPENUMMSOVIEW                  LPENUMOLEDOCUMENTVIEWS")
+cpp_quote("#define LPMSOCOMMANDTARGET             LPOLECOMMANDTARGET")
+cpp_quote("#define IID_IMsoDocument               IID_IOleDocument")
+cpp_quote("#define IID_IMsoDocumentSite           IID_IOleDocumentSite")
+cpp_quote("#define IID_IMsoView                   IID_IOleDocumentView")
+cpp_quote("#define IID_IEnumMsoView               IID_IEnumOleDocumentViews")
+cpp_quote("#define IID_IMsoCommandTarget          IID_IOleCommandTarget")
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/downloadmgr.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/downloadmgr.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/downloadmgr.idl	(revision 16410)
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2005 Jacek Caban
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef DO_NO_IMPORTS
+import "unknwn.idl";
+import "ocidl.idl";
+import "oleidl.idl";
+import "oaidl.idl";
+#endif
+
+[
+    object,
+    uuid(988934A4-064B-11D3-BB80-00104B35E7F9),
+    pointer_default(unique),
+    local
+]
+interface IDownloadManager : IUnknown
+{
+    HRESULT Download(
+        [in] IMoniker *pmk,
+        [in] IBindCtx *pbc,
+        [in] DWORD dwBindVerb,
+        [in] LONG grfBINDF,
+        [in] BINDINFO *pBindInfo,
+        [in] LPCOLESTR pszHeaders,
+        [in] LPCOLESTR pszRedir,
+        [in] UINT uiCP);
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dpaddr.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dpaddr.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dpaddr.h	(revision 16410)
@@ -0,0 +1,358 @@
+/*
+ * Copyright (C) 2003-2005 Raphael Junqueira
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DPLAY8_DPADDR_H
+#define __WINE_DPLAY8_DPADDR_H
+
+#include <ole2.h>
+#include <dplay8.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+typedef REFIID	        DPNAREFIID;
+typedef struct sockaddr SOCKADDR;
+
+/*****************************************************************************
+ * DirectPlay8Addr defines
+ */
+#define DPNA_DATATYPE_STRING                0x00000001
+#define DPNA_DATATYPE_DWORD                 0x00000002
+#define DPNA_DATATYPE_GUID                  0x00000003
+#define DPNA_DATATYPE_BINARY                0x00000004
+#define DPNA_DATATYPE_STRING_ANSI           0x00000005
+#define DPNA_DPNSVR_PORT                          6073
+#define DPNA_INDEX_INVALID                  0xFFFFFFFF
+
+#define DPNA_SEPARATOR_KEYVALUE             L'='
+#define DPNA_SEPARATOR_KEYVALUE_A           '='
+#define DPNA_SEPARATOR_USERDATA             L'#'
+#define DPNA_SEPARATOR_USERDATA_A           '#'
+#define DPNA_SEPARATOR_COMPONENT            L';'
+#define DPNA_SEPARATOR_COMPONENT_A          ';'
+#define DPNA_ESCAPECHAR                     L'%'
+#define DPNA_ESCAPECHAR_A                   '%'
+
+#define DPNA_HEADER_A                       "x-directplay:/"
+#define DPNA_KEY_APPLICATION_INSTANCE_A     "applicationinstance"
+#define DPNA_KEY_BAUD_A                     "baud"
+#define DPNA_KEY_DEVICE_A                   "device"
+#define DPNA_KEY_FLOWCONTROL_A              "flowcontrol"
+#define DPNA_KEY_HOSTNAME_A                 "hostname"
+#define DPNA_KEY_NAMEINFO_A                 "nameinfo"
+#define DPNA_KEY_PARITY_A                   "parity"
+#define DPNA_KEY_PHONENUMBER_A              "phonenumber"
+#define DPNA_KEY_PORT_A                     "port"
+#define DPNA_KEY_PROCESSOR_A                "processor"
+#define DPNA_KEY_PROGRAM_A                  "program"
+#define DPNA_KEY_PROVIDER_A                 "provider"
+#define DPNA_KEY_SCOPE_A                     "scope"
+#define DPNA_KEY_STOPBITS_A                 "stopbits"
+#define DPNA_KEY_TRAVERSALMODE_A             "traversalmode"
+
+#define DPNA_STOP_BITS_ONE_A                "1"
+#define DPNA_STOP_BITS_ONE_FIVE_A           "1.5"
+#define DPNA_STOP_BITS_TWO_A                "2"
+#define DPNA_PARITY_NONE_A                  "NONE"
+#define DPNA_PARITY_EVEN_A                  "EVEN"
+#define DPNA_PARITY_ODD_A                   "ODD"
+#define DPNA_PARITY_MARK_A                  "MARK"
+#define DPNA_PARITY_SPACE_A                 "SPACE"
+#define DPNA_FLOW_CONTROL_NONE_A            "NONE"
+#define DPNA_FLOW_CONTROL_XONXOFF_A         "XONXOFF"
+#define DPNA_FLOW_CONTROL_RTS_A             "RTS"
+#define DPNA_FLOW_CONTROL_DTR_A             "DTR"
+#define DPNA_FLOW_CONTROL_RTSDTR_A          "RTSDTR"
+#define DPNA_VALUE_TCPIPPROVIDER_A          "IP"
+#define DPNA_VALUE_IPXPROVIDER_A            "IPX"
+#define DPNA_VALUE_MODEMPROVIDER_A          "MODEM"
+#define DPNA_VALUE_SERIALPROVIDER_A         "SERIAL"
+
+/* And now the same thing but as Unicode strings */
+#if defined(__GNUC__)
+
+# define DPNA_HEADER                   (const WCHAR []){ 'x','-','d','i','r','e','c','t','p','l','a','y',':','/',0 }
+# define DPNA_KEY_APPLICATION_INSTANCE (const WCHAR []){ 'a','p','p','l','i','c','a','t','i','o','n','i','n','s','t','a','n','c','e',0 }
+# define DPNA_KEY_BAUD                 (const WCHAR []){ 'b','a','u','d',0 }
+# define DPNA_KEY_DEVICE               (const WCHAR []){ 'd','e','v','i','c','e',0 }
+# define DPNA_KEY_FLOWCONTROL          (const WCHAR []){ 'f','l','o','w','c','o','n','t','r','o','l',0 }
+# define DPNA_KEY_HOSTNAME             (const WCHAR []){ 'h','o','s','t','n','a','m','e',0 }
+# define DPNA_KEY_NAMEINFO             (const WCHAR []){ 'n','a','m','e','i','n','f','o',0 }
+# define DPNA_KEY_PARITY               (const WCHAR []){ 'p','a','r','i','t','y',0 }
+# define DPNA_KEY_PHONENUMBER          (const WCHAR []){ 'p','h','o','n','e','n','u','m','b','e','r',0 }
+# define DPNA_KEY_PORT                 (const WCHAR []){ 'p','o','r','t',0 }
+# define DPNA_KEY_PROCESSOR            (const WCHAR []){ 'p','r','o','c','e','s','s','o','r',0 }
+# define DPNA_KEY_PROGRAM              (const WCHAR []){ 'p','r','o','g','r','a','m',0 }
+# define DPNA_KEY_PROVIDER             (const WCHAR []){ 'p','r','o','v','i','d','e','r',0 }
+# define DPNA_KEY_SCOPE                (const WCHAR []){ 's','c','o','p','e',0 }
+# define DPNA_KEY_STOPBITS             (const WCHAR []){ 's','t','o','p','b','i','t','s',0 }
+# define DPNA_KEY_TRAVERSALMODE        (const WCHAR []){ 't','r','a','v','e','r','s','a','l','m','o','d','e',0 }
+# define DPNA_STOP_BITS_ONE            (const WCHAR []){ '1',0 }
+# define DPNA_STOP_BITS_ONE_FIVE       (const WCHAR []){ '1','.','5',0 }
+# define DPNA_STOP_BITS_TWO            (const WCHAR []){ '2',0 }
+# define DPNA_PARITY_NONE              (const WCHAR []){ 'N','O','N','E',0 }
+# define DPNA_PARITY_EVEN              (const WCHAR []){ 'E','V','E','N',0 }
+# define DPNA_PARITY_ODD               (const WCHAR []){ 'O','D','D',0 }
+# define DPNA_PARITY_MARK              (const WCHAR []){ 'M','A','R','K',0 }
+# define DPNA_PARITY_SPACE             (const WCHAR []){ 'S','P','A','C','E',0 }
+# define DPNA_FLOW_CONTROL_NONE        (const WCHAR []){ 'N','O','N','E',0 }
+# define DPNA_FLOW_CONTROL_XONXOFF     (const WCHAR []){ 'X','O','N','X','O','F','F',0 }
+# define DPNA_FLOW_CONTROL_RTS         (const WCHAR []){ 'R','T','S',0 }
+# define DPNA_FLOW_CONTROL_DTR         (const WCHAR []){ 'D','T','R',0 }
+# define DPNA_FLOW_CONTROL_RTSDTR      (const WCHAR []){ 'R','T','S','D','T','R',0 }
+# define DPNA_VALUE_TCPIPPROVIDER      (const WCHAR []){ 'I','P',0 }
+# define DPNA_VALUE_IPXPROVIDER        (const WCHAR []){ 'I','P','X',0 }
+# define DPNA_VALUE_MODEMPROVIDER      (const WCHAR []){ 'M','O','D','E','M',0 }
+# define DPNA_VALUE_SERIALPROVIDER     (const WCHAR []){ 'S','E','R','I','A','L',0 }
+
+#elif defined(_MSC_VER)
+
+# define DPNA_HEADER                   L"x-directplay:/"
+# define DPNA_KEY_APPLICATION_INSTANCE L"applicationinstance"
+# define DPNA_KEY_BAUD                 L"baud"
+# define DPNA_KEY_DEVICE               L"device"
+# define DPNA_KEY_FLOWCONTROL          L"flowcontrol"
+# define DPNA_KEY_HOSTNAME             L"hostname"
+# define DPNA_KEY_NAMEINFO             L"nameinfo"
+# define DPNA_KEY_PARITY               L"parity"
+# define DPNA_KEY_PHONENUMBER          L"phonenumber"
+# define DPNA_KEY_PORT                 L"port"
+# define DPNA_KEY_PROCESSOR            L"processor"
+# define DPNA_KEY_PROGRAM              L"program"
+# define DPNA_KEY_PROVIDER             L"provider"
+# define DPNA_KEY_SCOPE                L"scope"
+# define DPNA_KEY_STOPBITS             L"stopbits"
+# define DPNA_KEY_TRAVERSALMODE        L"traversalmode"
+# define DPNA_STOP_BITS_ONE            L"1"
+# define DPNA_STOP_BITS_ONE_FIVE       L"1.5"
+# define DPNA_STOP_BITS_TWO            L"2"
+# define DPNA_PARITY_NONE              L"NONE"
+# define DPNA_PARITY_EVEN              L"EVEN"
+# define DPNA_PARITY_ODD               L"ODD"
+# define DPNA_PARITY_MARK              L"MARK"
+# define DPNA_PARITY_SPACE             L"SPACE"
+# define DPNA_FLOW_CONTROL_NONE        L"NONE"
+# define DPNA_FLOW_CONTROL_XONXOFF     L"XONXOFF"
+# define DPNA_FLOW_CONTROL_RTS         L"RTS"
+# define DPNA_FLOW_CONTROL_DTR         L"DTR"
+# define DPNA_FLOW_CONTROL_RTSDTR      L"RTSDTR"
+# define DPNA_VALUE_TCPIPPROVIDER      L"IP"
+# define DPNA_VALUE_IPXPROVIDER        L"IPX"
+# define DPNA_VALUE_MODEMPROVIDER      L"MODEM"
+# define DPNA_VALUE_SERIALPROVIDER     L"SERIAL"
+
+#else
+
+static const WCHAR DPNA_HEADER[] = { 'x','-','d','i','r','e','c','t','p','l','a','y',':','/',0 };
+static const WCHAR DPNA_KEY_APPLICATION_INSTANCE[] = { 'a','p','p','l','i','c','a','t','i','o','n','i','n','s','t','a','n','c','e',0 };
+static const WCHAR DPNA_KEY_BAUD[] = { 'b','a','u','d',0 };
+static const WCHAR DPNA_KEY_DEVICE[] = { 'd','e','v','i','c','e',0 };
+static const WCHAR DPNA_KEY_FLOWCONTROL[] = { 'f','l','o','w','c','o','n','t','r','o','l',0 };
+static const WCHAR DPNA_KEY_HOSTNAME[] = { 'h','o','s','t','n','a','m','e',0 };
+static const WCHAR DPNA_KEY_NAMEINFO[] = { 'n','a','m','e','i','n','f','o',0 };
+static const WCHAR DPNA_KEY_PARITY[] = { 'p','a','r','i','t','y',0 };
+static const WCHAR DPNA_KEY_PHONENUMBER[] = { 'p','h','o','n','e','n','u','m','b','e','r',0 };
+static const WCHAR DPNA_KEY_PORT[] =   { 'p','o','r','t',0 };
+static const WCHAR DPNA_KEY_PROCESSOR[] = { 'p','r','o','c','e','s','s','o','r',0 };
+static const WCHAR DPNA_KEY_PROGRAM[] = { 'p','r','o','g','r','a','m',0 };
+static const WCHAR DPNA_KEY_PROVIDER[] = { 'p','r','o','v','i','d','e','r',0 };
+static const WCHAR DPNA_KEY_SCOPE[] = { 's','c','o','p','e',0 };
+static const WCHAR DPNA_KEY_STOPBITS[] = { 's','t','o','p','b','i','t','s',0 };
+static const WCHAR DPNA_KEY_TRAVERSALMODE[] = { 't','r','a','v','e','r','s','a','l','m','o','d','e',0 };
+static const WCHAR DPNA_STOP_BITS_ONE[] = { '1',0 };
+static const WCHAR DPNA_STOP_BITS_ONE_FIVE[] = { '1','.','5',0 };
+static const WCHAR DPNA_STOP_BITS_TWO[] = { '2',0 };
+static const WCHAR DPNA_PARITY_NONE[] = { 'N','O','N','E',0 };
+static const WCHAR DPNA_PARITY_EVEN[] = { 'E','V','E','N',0 };
+static const WCHAR DPNA_PARITY_ODD[] = { 'O','D','D',0 };
+static const WCHAR DPNA_PARITY_MARK[] = { 'M','A','R','K',0 };
+static const WCHAR DPNA_PARITY_SPACE[] = { 'S','P','A','C','E',0 };
+static const WCHAR DPNA_FLOW_CONTROL_NONE[] = { 'N','O','N','E',0 };
+static const WCHAR DPNA_FLOW_CONTROL_XONXOFF[] = { 'X','O','N','X','O','F','F',0 };
+static const WCHAR DPNA_FLOW_CONTROL_RTS[] = { 'R','T','S',0 };
+static const WCHAR DPNA_FLOW_CONTROL_DTR[] = { 'D','T','R',0 };
+static const WCHAR DPNA_FLOW_CONTROL_RTSDTR[] = { 'R','T','S','D','T','R',0 };
+static const WCHAR DPNA_VALUE_TCPIPPROVIDER[] = { 'I','P',0 };
+static const WCHAR DPNA_VALUE_IPXPROVIDER[] = { 'I','P','X',0 };
+static const WCHAR DPNA_VALUE_MODEMPROVIDER[] = { 'M','O','D','E','M',0 };
+static const WCHAR DPNA_VALUE_SERIALPROVIDER[] = { 'S','E','R','I','A','L',0 };
+
+
+#endif
+
+#define DPNA_BAUD_RATE_9600                   9600
+#define DPNA_BAUD_RATE_14400                 14400
+#define DPNA_BAUD_RATE_19200                 19200
+#define DPNA_BAUD_RATE_38400                 38400
+#define DPNA_BAUD_RATE_56000                 56000
+#define DPNA_BAUD_RATE_57600                 57600
+#define DPNA_BAUD_RATE_115200               115200
+
+/*****************************************************************************
+ * Predeclare the interfaces
+ */
+DEFINE_GUID(CLSID_DirectPlay8Address,      0x934a9523, 0xa3ca, 0x4bc5, 0xad, 0xa0, 0xd6, 0xd9, 0x5d, 0x97, 0x94, 0x21);
+
+DEFINE_GUID(IID_IDirectPlay8Address,       0x83783300, 0x4063, 0x4c8a, 0x9d, 0xb3, 0x82, 0x83, 0xa, 0x7f, 0xeb, 0x31);
+typedef struct IDirectPlay8Address *PDIRECTPLAY8ADDRESS, *LPDIRECTPLAY8ADDRESS;
+DEFINE_GUID(IID_IDirectPlay8AddressIP,     0xe5a0e990, 0x2bad, 0x430b, 0x87, 0xda, 0xa1, 0x42, 0xcf, 0x75, 0xde, 0x58);
+typedef struct IDirectPlay8AddressIP *PDIRECTPLAY8ADDRESSIP, *LPDIRECTPLAY8ADDRESSIP;
+
+
+/*****************************************************************************
+ * IDirectPlay8Address interface
+ */
+#define INTERFACE IDirectPlay8Address
+DECLARE_INTERFACE_(IDirectPlay8Address,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectPlay8Address methods ***/
+    STDMETHOD(BuildFromURLW)(THIS_ WCHAR* pwszSourceURL) PURE;
+    STDMETHOD(BuildFromURLA)(THIS_ CHAR* pszSourceURL) PURE;
+    STDMETHOD(Duplicate)(THIS_ PDIRECTPLAY8ADDRESS* ppdpaNewAddress) PURE;
+    STDMETHOD(SetEqual)(THIS_ PDIRECTPLAY8ADDRESS pdpaAddress) PURE;
+    STDMETHOD(IsEqual)(THIS_  PDIRECTPLAY8ADDRESS pdpaAddress) PURE;
+    STDMETHOD(Clear)(THIS) PURE;
+    STDMETHOD(GetURLW)(THIS_ WCHAR* pwszURL, PDWORD pdwNumChars) PURE;
+    STDMETHOD(GetURLA)(THIS_ CHAR* pszURL, PDWORD pdwNumChars) PURE;
+    STDMETHOD(GetSP)(THIS_ GUID* pguidSP) PURE;
+    STDMETHOD(GetUserData)(THIS_ LPVOID pvUserData, PDWORD pdwBufferSize) PURE;
+    STDMETHOD(SetSP)(THIS_ CONST GUID* CONST pguidSP) PURE;
+    STDMETHOD(SetUserData)(THIS_ CONST void* CONST pvUserData, CONST DWORD dwDataSize) PURE;
+    STDMETHOD(GetNumComponents)(THIS_ PDWORD pdwNumComponents) PURE;
+    STDMETHOD(GetComponentByName)(THIS_ CONST WCHAR* CONST pwszName, LPVOID pvBuffer, PDWORD pdwBufferSize, PDWORD pdwDataType) PURE;
+    STDMETHOD(GetComponentByIndex)(THIS_ CONST DWORD dwComponentID, WCHAR* pwszName, PDWORD pdwNameLen, void* pvBuffer, PDWORD pdwBufferSize, PDWORD pdwDataType) PURE;
+    STDMETHOD(AddComponent)(THIS_ CONST WCHAR* CONST pwszName, CONST void* CONST lpvData, CONST DWORD dwDataSize, CONST DWORD dwDataType) PURE;
+    STDMETHOD(GetDevice)(THIS_ GUID* pDevGuid) PURE;
+    STDMETHOD(SetDevice)(THIS_ CONST GUID* CONST devGuid) PURE;
+    STDMETHOD(BuildFromDirectPlay4Address)(THIS_ LPVOID pvAddress, DWORD dwDataSize) PURE;
+};
+#undef INTERFACE
+
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectPlay8Address_QueryInterface(p,a,b)               (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectPlay8Address_AddRef(p)                           (p)->lpVtbl->AddRef(p)
+#define IDirectPlay8Address_Release(p)                          (p)->lpVtbl->Release(p)
+/*** IDirectPlay8Address methods ***/
+#define IDirectPlay8Address_BuildFromURLW(p,a)                  (p)->lpVtbl->BuildFromURLW(p,a)
+#define IDirectPlay8Address_BuildFromURLA(p,a)                  (p)->lpVtbl->BuildFromURLA(p,a)
+#define IDirectPlay8Address_Duplicate(p,a)                      (p)->lpVtbl->Duplicate(p,a)
+#define IDirectPlay8Address_SetEqual(p,a)                       (p)->lpVtbl->SetEqual(p,a)
+#define IDirectPlay8Address_IsEqual(p,a)                        (p)->lpVtbl->IsEqual(p,a)
+#define IDirectPlay8Address_Clear(p)                            (p)->lpVtbl->Clear(p)
+#define IDirectPlay8Address_GetURLW(p,a,b)                      (p)->lpVtbl->GetURLW(p,a,b)
+#define IDirectPlay8Address_GetURLA(p,a,b)                      (p)->lpVtbl->GetURLA(p,a,b)
+#define IDirectPlay8Address_GetSP(p,a)                          (p)->lpVtbl->GetSP(p,a)
+#define IDirectPlay8Address_GetUserData(p,a,b)                  (p)->lpVtbl->GetUserData(p,a,b)
+#define IDirectPlay8Address_SetSP(p,a)                          (p)->lpVtbl->SetSP(p,a)
+#define IDirectPlay8Address_SetUserData(p,a,b)                  (p)->lpVtbl->SetUserData(p,a,b)
+#define IDirectPlay8Address_GetNumComponents(p,a)               (p)->lpVtbl->GetNumComponents(p,a)
+#define IDirectPlay8Address_GetComponentByName(p,a,b,c,d)       (p)->lpVtbl->GetComponentByName(p,a,b,c,d)
+#define IDirectPlay8Address_GetComponentByIndex(p,a,b,c,d,e,f)  (p)->lpVtbl->GetComponentByIndex(p,a,b,c,d,e,f)
+#define IDirectPlay8Address_AddComponent(p,a,b,c,d)             (p)->lpVtbl->AddComponent(p,a,b,c,d)
+#define IDirectPlay8Address_SetDevice(p,a)                      (p)->lpVtbl->SetDevice(p,a)
+#define IDirectPlay8Address_GetDevice(p,a)                      (p)->lpVtbl->GetDevice(p,a)
+#define IDirectPlay8Address_BuildFromDirectPlay4Address(p,a,b)  (p)->lpVtbl->BuildFromDirectPlay4Address(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirectPlay8Address_QueryInterface(p,a,b)               (p)->QueryInterface(a,b)
+#define IDirectPlay8Address_AddRef(p)                           (p)->AddRef()
+#define IDirectPlay8Address_Release(p)                          (p)->Release()
+/*** IDirectPlay8Address methods ***/
+#define IDirectPlay8Address_BuildFromURLW(p,a)                  (p)->BuildFromURLW(a)
+#define IDirectPlay8Address_BuildFromURLA(p,a)                  (p)->BuildFromURLA(a)
+#define IDirectPlay8Address_Duplicate(p,a)                      (p)->Duplicate(a)
+#define IDirectPlay8Address_SetEqual(p,a)                       (p)->SetEqual(a)
+#define IDirectPlay8Address_IsEqual(p,a)                        (p)->IsEqual(a)
+#define IDirectPlay8Address_Clear(p)                            (p)->Clear()
+#define IDirectPlay8Address_GetURLW(p,a,b)                      (p)->GetURLW(a,b)
+#define IDirectPlay8Address_GetURLA(p,a,b)                      (p)->GetURLA(a,b)
+#define IDirectPlay8Address_GetSP(p,a)                          (p)->GetSP(a)
+#define IDirectPlay8Address_GetUserData(p,a,b)                  (p)->GetUserData(a,b)
+#define IDirectPlay8Address_SetSP(p,a)                          (p)->SetSP(a)
+#define IDirectPlay8Address_SetUserData(p,a,b)                  (p)->SetUserData(a,b)
+#define IDirectPlay8Address_GetNumComponents(p,a)               (p)->GetNumComponents(a)
+#define IDirectPlay8Address_GetComponentByName(p,a,b,c,d)       (p)->GetComponentByName(a,b,c,d)
+#define IDirectPlay8Address_GetComponentByIndex(p,a,b,c,d,e,f)  (p)->GetComponentByIndex(a,b,c,d,e,f)
+#define IDirectPlay8Address_AddComponent(p,a,b,c,d)             (p)->AddComponent(a,b,c,d)
+#define IDirectPlay8Address_SetDevice(p,a)                      (p)->SetDevice(a)
+#define IDirectPlay8Address_GetDevice(p,a)                      (p)->GetDevice(a)
+#define IDirectPlay8Address_BuildFromDirectPlay4Address(p,a,b)  (p)->BuildFromDirectPlay4Address(a,b)
+#endif
+
+/*****************************************************************************
+ * IDirectPlay8AddressIP interface
+ */
+#define INTERFACE IDirectPlay8AddressIP
+DECLARE_INTERFACE_(IDirectPlay8AddressIP,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectPlay8AddressIP methods ***/
+    STDMETHOD(BuildFromSockAddr)(THIS_ CONST SOCKADDR* CONST pSockAddr) PURE;
+    STDMETHOD(BuildAddress)(THIS_ CONST WCHAR* CONST wszAddress, CONST USHORT usPort) PURE;
+    STDMETHOD(BuildLocalAddress)(THIS_ CONST GUID* CONST pguidAdapter, CONST USHORT usPort) PURE;
+    STDMETHOD(GetSockAddress)(THIS_ SOCKADDR* pSockAddr, PDWORD) PURE;
+    STDMETHOD(GetLocalAddress)(THIS_ GUID* pguidAdapter, USHORT* pusPort) PURE;
+    STDMETHOD(GetAddress)(THIS_ WCHAR* wszAddress, PDWORD pdwAddressLength, USHORT* psPort) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectPlay8AddressIP_QueryInterface(p,a,b)         (p)->lpVtbl->QueryInterface(a,b)
+#define IDirectPlay8AddressIP_AddRef(p)                     (p)->lpVtbl->AddRef()
+#define IDirectPlay8AddressIP_Release(p)                    (p)->lpVtbl->Release()
+/*** IDirectPlay8AddressIP methods ***/
+#define IDirectPlay8AddressIP_BuildFromSockAddr(p,a)        (p)->lpVtbl->BuildFromSockAddr(a)
+#define IDirectPlay8AddressIP_BuildAddress(p,a,b)           (p)->lpVtbl->BuildAddress(a,b)
+#define IDirectPlay8AddressIP_BuildLocalAddress(p,a,b)      (p)->lpVtbl->BuildLocalAddress(a,b)
+#define IDirectPlay8AddressIP_GetSockAddress(p,a,b)         (p)->lpVtbl->GetSockAddress(a,b)
+#define IDirectPlay8AddressIP_GetLocalAddress(p,a,b)        (p)->lpVtbl->GetLocalAddress(a,b)
+#define IDirectPlay8AddressIP_GetAddress(p,a,b,c)           (p)->lpVtbl->GetAddress(a,b,c)
+#else
+/*** IUnknown methods ***/
+#define IDirectPlay8AddressIP_QueryInterface(p,a,b)         (p)->QueryInterface(a,b)
+#define IDirectPlay8AddressIP_AddRef(p)                     (p)->AddRef()
+#define IDirectPlay8AddressIP_Release(p)                    (p)->Release()
+/*** IDirectPlay8AddressIP methods ***/
+#define IDirectPlay8AddressIP_BuildFromSockAddr(p,a)        (p)->BuildFromSockAddr(a)
+#define IDirectPlay8AddressIP_BuildAddress(p,a,b)           (p)->BuildAddress(a,b)
+#define IDirectPlay8AddressIP_BuildLocalAddress(p,a,b)      (p)->BuildLocalAddress(a,b)
+#define IDirectPlay8AddressIP_GetSockAddress(p,a,b)         (p)->GetSockAddress(a,b)
+#define IDirectPlay8AddressIP_GetLocalAddress(p,a,b)        (p)->GetLocalAddress(a,b)
+#define IDirectPlay8AddressIP_GetAddress(p,a,b,c)           (p)->GetAddress(a,b,c)
+#endif
+
+/* Export functions */
+
+HRESULT WINAPI DirectPlay8AddressCreate(CONST GUID* pcIID, LPVOID* ppvInterface, IUnknown* pUnknown);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dplay.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dplay.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dplay.h	(revision 16410)
@@ -0,0 +1,1273 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DPLAY_H
+#define __WINE_DPLAY_H
+
+#include <ole2.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+typedef LPVOID (*LPRGLPVOID)[];
+typedef LPRGLPVOID PRGPVOID, LPRGPVOID, PRGLPVOID, PAPVOID, LPAPVOID, PALPVOID, LPALPVOID;
+
+#define VOL volatile
+typedef VOID * volatile LPVOIDV;
+
+
+/*****************************************************************************
+ * Predeclare the interfaces
+ */
+DEFINE_GUID(CLSID_DirectPlay,0xd1eb6d20, 0x8923, 0x11d0, 0x9d, 0x97, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb);
+
+DEFINE_GUID(IID_IDirectPlay, 0x5454e9a0, 0xdb65, 0x11ce, 0x92, 0x1c, 0x00, 0xaa, 0x00, 0x6c, 0x49, 0x72);
+typedef struct IDirectPlay *LPDIRECTPLAY;
+
+DEFINE_GUID(IID_IDirectPlay2, 0x2b74f7c0, 0x9154, 0x11cf, 0xa9, 0xcd, 0x0, 0xaa, 0x0, 0x68, 0x86, 0xe3);
+typedef struct IDirectPlay2 *LPDIRECTPLAY2;
+
+DEFINE_GUID(IID_IDirectPlay2A,0x9d460580, 0xa822, 0x11cf, 0x96, 0xc, 0x0, 0x80, 0xc7, 0x53, 0x4e, 0x82);
+typedef struct IDirectPlay2 IDirectPlay2A,*LPDIRECTPLAY2A;
+
+DEFINE_GUID(IID_IDirectPlay3, 0x133efe40, 0x32dc, 0x11d0, 0x9c, 0xfb, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb);
+typedef struct IDirectPlay3 *LPDIRECTPLAY3;
+
+DEFINE_GUID(IID_IDirectPlay3A,0x133efe41, 0x32dc, 0x11d0, 0x9c, 0xfb, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb);
+typedef struct IDirectPlay3 IDirectPlay3A,*LPDIRECTPLAY3A;
+
+DEFINE_GUID(IID_IDirectPlay4, 0xab1c530, 0x4745, 0x11d1, 0xa7, 0xa1, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc);
+typedef struct IDirectPlay4 *LPDIRECTPLAY4;
+
+DEFINE_GUID(IID_IDirectPlay4A,0xab1c531, 0x4745, 0x11d1, 0xa7, 0xa1, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc);
+typedef struct IDirectPlay4 IDirectPlay4A,*LPDIRECTPLAY4A;
+
+
+/*
+ * GUIDS used by Service Providers shipped with DirectPlay
+ * Use these to identify Service Provider returned by EnumConnections
+ */
+
+/* GUID for IPX service provider {685BC400-9D2C-11cf-A9CD-00AA006886E3} */
+DEFINE_GUID(DPSPGUID_IPX, 0x685bc400, 0x9d2c, 0x11cf, 0xa9, 0xcd, 0x0, 0xaa, 0x0, 0x68, 0x86, 0xe3);
+
+/* GUID for TCP/IP service provider {36E95EE0-8577-11cf-960C-0080C7534E82} */
+DEFINE_GUID(DPSPGUID_TCPIP, 0x36E95EE0, 0x8577, 0x11cf, 0x96, 0xc, 0x0, 0x80, 0xc7, 0x53, 0x4e, 0x82);
+
+/* GUID for Serial service provider {0F1D6860-88D9-11cf-9C4E-00A0C905425E} */
+DEFINE_GUID(DPSPGUID_SERIAL, 0xf1d6860, 0x88d9, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
+
+/* GUID for Modem service provider {44EAA760-CB68-11cf-9C4E-00A0C905425E} */
+DEFINE_GUID(DPSPGUID_MODEM, 0x44eaa760, 0xcb68, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
+
+
+/*****************************************************************************
+ * Miscellaneous
+ */
+
+/* Return Values for Direct Play */
+#define _FACDP  0x877
+#define MAKE_DPHRESULT( code )    MAKE_HRESULT( 1, _FACDP, code )
+
+#define DP_OK                           S_OK
+#define DPERR_ALREADYINITIALIZED        MAKE_DPHRESULT(   5 )
+#define DPERR_ACCESSDENIED              MAKE_DPHRESULT(  10 )
+#define DPERR_ACTIVEPLAYERS             MAKE_DPHRESULT(  20 )
+#define DPERR_BUFFERTOOSMALL            MAKE_DPHRESULT(  30 )
+#define DPERR_CANTADDPLAYER             MAKE_DPHRESULT(  40 )
+#define DPERR_CANTCREATEGROUP           MAKE_DPHRESULT(  50 )
+#define DPERR_CANTCREATEPLAYER          MAKE_DPHRESULT(  60 )
+#define DPERR_CANTCREATESESSION         MAKE_DPHRESULT(  70 )
+#define DPERR_CAPSNOTAVAILABLEYET       MAKE_DPHRESULT(  80 )
+#define DPERR_EXCEPTION                 MAKE_DPHRESULT(  90 )
+#define DPERR_GENERIC                   E_FAIL
+#define DPERR_INVALIDFLAGS              MAKE_DPHRESULT( 120 )
+#define DPERR_INVALIDOBJECT             MAKE_DPHRESULT( 130 )
+#define DPERR_INVALIDPARAM              E_INVALIDARG
+#define DPERR_INVALIDPARAMS             DPERR_INVALIDPARAM
+#define DPERR_INVALIDPLAYER             MAKE_DPHRESULT( 150 )
+#define DPERR_INVALIDGROUP              MAKE_DPHRESULT( 155 )
+#define DPERR_NOCAPS                    MAKE_DPHRESULT( 160 )
+#define DPERR_NOCONNECTION              MAKE_DPHRESULT( 170 )
+#define DPERR_NOMEMORY                  E_OUTOFMEMORY
+#define DPERR_OUTOFMEMORY               DPERR_NOMEMORY
+#define DPERR_NOMESSAGES                MAKE_DPHRESULT( 190 )
+#define DPERR_NONAMESERVERFOUND         MAKE_DPHRESULT( 200 )
+#define DPERR_NOPLAYERS                 MAKE_DPHRESULT( 210 )
+#define DPERR_NOSESSIONS                MAKE_DPHRESULT( 220 )
+#define DPERR_PENDING                   E_PENDING
+#define DPERR_SENDTOOBIG                MAKE_DPHRESULT( 230 )
+#define DPERR_TIMEOUT                   MAKE_DPHRESULT( 240 )
+#define DPERR_UNAVAILABLE               MAKE_DPHRESULT( 250 )
+#define DPERR_UNSUPPORTED               E_NOTIMPL
+#define DPERR_BUSY                      MAKE_DPHRESULT( 270 )
+#define DPERR_USERCANCEL                MAKE_DPHRESULT( 280 )
+#define DPERR_NOINTERFACE               E_NOINTERFACE
+#define DPERR_CANNOTCREATESERVER        MAKE_DPHRESULT( 290 )
+#define DPERR_PLAYERLOST                MAKE_DPHRESULT( 300 )
+#define DPERR_SESSIONLOST               MAKE_DPHRESULT( 310 )
+#define DPERR_UNINITIALIZED             MAKE_DPHRESULT( 320 )
+#define DPERR_NONEWPLAYERS              MAKE_DPHRESULT( 330 )
+#define DPERR_INVALIDPASSWORD           MAKE_DPHRESULT( 340 )
+#define DPERR_CONNECTING                MAKE_DPHRESULT( 350 )
+#define DPERR_CONNECTIONLOST            MAKE_DPHRESULT( 360 )
+#define DPERR_UNKNOWNMESSAGE            MAKE_DPHRESULT( 370 )
+#define DPERR_CANCELFAILED              MAKE_DPHRESULT( 380 )
+#define DPERR_INVALIDPRIORITY           MAKE_DPHRESULT( 390 )
+#define DPERR_NOTHANDLED                MAKE_DPHRESULT( 400 )
+#define DPERR_CANCELLED                 MAKE_DPHRESULT( 410 )
+#define DPERR_ABORTED                   MAKE_DPHRESULT( 420 )
+#define DPERR_BUFFERTOOLARGE            MAKE_DPHRESULT( 1000 )
+#define DPERR_CANTCREATEPROCESS         MAKE_DPHRESULT( 1010 )
+#define DPERR_APPNOTSTARTED             MAKE_DPHRESULT( 1020 )
+#define DPERR_INVALIDINTERFACE          MAKE_DPHRESULT( 1030 )
+#define DPERR_NOSERVICEPROVIDER         MAKE_DPHRESULT( 1040 )
+#define DPERR_UNKNOWNAPPLICATION        MAKE_DPHRESULT( 1050 )
+#define DPERR_NOTLOBBIED                MAKE_DPHRESULT( 1070 )
+#define DPERR_SERVICEPROVIDERLOADED     MAKE_DPHRESULT( 1080 )
+#define DPERR_ALREADYREGISTERED         MAKE_DPHRESULT( 1090 )
+#define DPERR_NOTREGISTERED             MAKE_DPHRESULT( 1100 )
+#define DPERR_AUTHENTICATIONFAILED      MAKE_DPHRESULT( 2000 )
+#define DPERR_CANTLOADSSPI              MAKE_DPHRESULT( 2010 )
+#define DPERR_ENCRYPTIONFAILED          MAKE_DPHRESULT( 2020 )
+#define DPERR_SIGNFAILED                MAKE_DPHRESULT( 2030 )
+#define DPERR_CANTLOADSECURITYPACKAGE   MAKE_DPHRESULT( 2040 )
+#define DPERR_ENCRYPTIONNOTSUPPORTED    MAKE_DPHRESULT( 2050 )
+#define DPERR_CANTLOADCAPI              MAKE_DPHRESULT( 2060 )
+#define DPERR_NOTLOGGEDIN               MAKE_DPHRESULT( 2070 )
+#define DPERR_LOGONDENIED               MAKE_DPHRESULT( 2080 )
+
+
+/* DPID - DirectPlay player and group ID */
+typedef DWORD DPID, *LPDPID;
+
+/* DPID from whence originate messages - just an ID */
+#define DPID_SYSMSG             0           /* DPID of system */
+#define DPID_ALLPLAYERS         0           /* DPID of all players */
+#define DPID_SERVERPLAYER       1           /* DPID of the server player */
+#define DPID_UNKNOWN            0xFFFFFFFF  /* Player ID is unknown */
+
+/*  DPCAPS -  Used to obtain the capabilities of a DirectPlay object */
+typedef struct tagDPCAPS
+{
+    DWORD dwSize;               /* Size of structure in bytes */
+    DWORD dwFlags;
+    DWORD dwMaxBufferSize;
+    DWORD dwMaxQueueSize;       /* Obsolete. */
+    DWORD dwMaxPlayers;         /* Maximum players/groups (local + remote) */
+    DWORD dwHundredBaud;        /* Bandwidth in 100 bits per second units;
+                                 * i.e. 24 is 2400, 96 is 9600, etc.
+                                 */
+    DWORD dwLatency;            /* Estimated latency; 0 = unknown */
+    DWORD dwMaxLocalPlayers;    /* Maximum # of locally created players */
+    DWORD dwHeaderLength;       /* Maximum header length in bytes */
+    DWORD dwTimeout;            /* Service provider's suggested timeout value
+                                 * This is how long DirectPlay will wait for
+                                 * responses to system messages
+                                 */
+} DPCAPS, *LPDPCAPS;
+
+typedef struct tagDPNAME
+{
+    DWORD   dwSize;
+    DWORD   dwFlags;            /* Not used must be 0 */
+
+    union /*playerShortName */      /* Player's Handle? */
+    {
+        LPWSTR  lpszShortName;
+        LPSTR   lpszShortNameA;
+    } DUMMYUNIONNAME1;
+
+    union /*playerLongName */       /* Player's formal/real name */
+    {
+        LPWSTR  lpszLongName;
+        LPSTR   lpszLongNameA;
+    } DUMMYUNIONNAME2;
+
+} DPNAME, *LPDPNAME;
+
+#define DPLONGNAMELEN     52
+#define DPSHORTNAMELEN    20
+#define DPSESSIONNAMELEN  32
+#define DPPASSWORDLEN     16
+#define DPUSERRESERVED    16
+
+typedef struct tagDPSESSIONDESC
+{
+    DWORD   dwSize;
+    GUID    guidSession;
+    DWORD   dwSession;
+    DWORD   dwMaxPlayers;
+    DWORD   dwCurrentPlayers;
+    DWORD   dwFlags;
+    char    szSessionName[ DPSESSIONNAMELEN ];
+    char    szUserField[ DPUSERRESERVED ];
+    DWORD   dwReserved1;
+    char    szPassword[ DPPASSWORDLEN ];
+    DWORD   dwReserved2;
+    DWORD   dwUser1;
+    DWORD   dwUser2;
+    DWORD   dwUser3;
+    DWORD   dwUser4;
+} DPSESSIONDESC, *LPDPSESSIONDESC;
+
+typedef struct tagDPSESSIONDESC2
+{
+    DWORD   dwSize;
+    DWORD   dwFlags;
+    GUID    guidInstance;
+    GUID    guidApplication;   /* GUID of the DP application, GUID_NULL if
+                                * all applications! */
+
+    DWORD   dwMaxPlayers;
+    DWORD   dwCurrentPlayers;   /* (read only value) */
+
+    union  /* Session name */
+    {
+        LPWSTR  lpszSessionName;
+        LPSTR   lpszSessionNameA;
+    } DUMMYUNIONNAME1;
+
+    union  /* Optional password */
+    {
+        LPWSTR  lpszPassword;
+        LPSTR   lpszPasswordA;
+    } DUMMYUNIONNAME2;
+
+    DWORD   dwReserved1;
+    DWORD   dwReserved2;
+
+    DWORD   dwUser1;        /* For use by the application */
+    DWORD   dwUser2;
+    DWORD   dwUser3;
+    DWORD   dwUser4;
+} DPSESSIONDESC2, *LPDPSESSIONDESC2;
+typedef const DPSESSIONDESC2* LPCDPSESSIONDESC2;
+
+#define DPOPEN_JOIN                     0x00000001
+#define DPOPEN_CREATE                   0x00000002
+#define DPOPEN_RETURNSTATUS             DPENUMSESSIONS_RETURNSTATUS
+
+#define DPSESSION_NEWPLAYERSDISABLED    0x00000001
+#define DPSESSION_MIGRATEHOST           0x00000004
+#define DPSESSION_NOMESSAGEID           0x00000008
+#define DPSESSION_JOINDISABLED          0x00000020
+#define DPSESSION_KEEPALIVE             0x00000040
+#define DPSESSION_NODATAMESSAGES        0x00000080
+#define DPSESSION_SECURESERVER          0x00000100
+#define DPSESSION_PRIVATE               0x00000200
+#define DPSESSION_PASSWORDREQUIRED      0x00000400
+#define DPSESSION_MULTICASTSERVER       0x00000800
+#define DPSESSION_CLIENTSERVER          0x00001000
+#define DPSESSION_DIRECTPLAYPROTOCOL    0x00002000
+#define DPSESSION_NOPRESERVEORDER       0x00004000
+#define DPSESSION_OPTIMIZELATENCY       0x00008000
+
+typedef struct tagDPLCONNECTION
+{
+    DWORD               dwSize;
+    DWORD               dwFlags;
+    LPDPSESSIONDESC2    lpSessionDesc;  /* Ptr to session desc to use for connect */
+    LPDPNAME            lpPlayerName;   /* Ptr to player name structure */
+    GUID                guidSP;         /* GUID of Service Provider to use */
+    LPVOID              lpAddress;      /* Ptr to Address of Service Provider to use */
+    DWORD               dwAddressSize;  /* Size of address data */
+} DPLCONNECTION, *LPDPLCONNECTION;
+
+/* DPLCONNECTION flags (for dwFlags) */
+#define DPLCONNECTION_CREATESESSION DPOPEN_CREATE
+#define DPLCONNECTION_JOINSESSION   DPOPEN_JOIN
+
+typedef struct tagDPCHAT
+{
+    DWORD               dwSize;
+    DWORD               dwFlags;
+    union
+    {                          /* Message string */
+        LPWSTR  lpszMessage;   /* Unicode */
+        LPSTR   lpszMessageA;  /* ANSI */
+    } DUMMYUNIONNAME;
+} DPCHAT, *LPDPCHAT;
+
+typedef struct
+{
+  UINT   len;
+  PUCHAR pData;
+} SGBUFFER, *PSGBUFFER, *LPSGBUFFER;
+
+
+typedef struct tagDPSECURITYDESC
+{
+    DWORD dwSize;                   /* Size of structure */
+    DWORD dwFlags;                  /* Not used. Must be zero. */
+    union
+    {                               /* SSPI provider name */
+        LPWSTR  lpszSSPIProvider;   /* Unicode */
+        LPSTR   lpszSSPIProviderA;  /* ANSI */
+    } DUMMYUNIONNAME1;
+    union
+    {                               /* CAPI provider name */
+        LPWSTR lpszCAPIProvider;    /* Unicode */
+        LPSTR  lpszCAPIProviderA;   /* ANSI */
+    } DUMMYUNIONNAME2;
+    DWORD dwCAPIProviderType;       /* Crypto Service Provider type */
+    DWORD dwEncryptionAlgorithm;    /* Encryption Algorithm type */
+} DPSECURITYDESC, *LPDPSECURITYDESC;
+
+typedef const DPSECURITYDESC *LPCDPSECURITYDESC;
+
+typedef struct tagDPCREDENTIALS
+{
+    DWORD dwSize;               /* Size of structure */
+    DWORD dwFlags;              /* Not used. Must be zero. */
+    union
+    {                           /* User name of the account */
+        LPWSTR  lpszUsername;   /* Unicode */
+        LPSTR   lpszUsernameA;  /* ANSI */
+    } DUMMYUNIONNAME1;
+    union
+    {                           /* Password of the account */
+        LPWSTR  lpszPassword;   /* Unicode */
+        LPSTR   lpszPasswordA;  /* ANSI */
+    } DUMMYUNIONNAME2;
+    union
+    {                           /* Domain name of the account */
+        LPWSTR  lpszDomain;     /* Unicode */
+        LPSTR   lpszDomainA;    /* ANSI */
+    } DUMMYUNIONNAME3;
+} DPCREDENTIALS, *LPDPCREDENTIALS;
+
+typedef const DPCREDENTIALS *LPCDPCREDENTIALS;
+
+
+
+typedef BOOL (CALLBACK *LPDPENUMDPCALLBACKW)(
+    LPGUID      lpguidSP,
+    LPWSTR      lpSPName,
+    DWORD       dwMajorVersion,
+    DWORD       dwMinorVersion,
+    LPVOID      lpContext);
+
+typedef BOOL (CALLBACK *LPDPENUMDPCALLBACKA)(
+    LPGUID      lpguidSP,
+    LPSTR       lpSPName,       /* ptr to str w/ driver description */
+    DWORD       dwMajorVersion, /* Major # of driver spec in lpguidSP */
+    DWORD       dwMinorVersion, /* Minor # of driver spec in lpguidSP */
+    LPVOID      lpContext);     /* User given */
+
+#ifndef __LPCGUID_DEFINED__
+#define __LPCGUID_DEFINED__
+typedef const GUID *LPCGUID;
+#endif
+
+typedef const DPNAME *LPCDPNAME;
+
+typedef BOOL (CALLBACK *LPDPENUMCONNECTIONSCALLBACK)(
+    LPCGUID     lpguidSP,
+    LPVOID      lpConnection,
+    DWORD       dwConnectionSize,
+    LPCDPNAME   lpName,
+    DWORD       dwFlags,
+    LPVOID      lpContext);
+
+typedef BOOL (CALLBACK *LPDPENUMSESSIONSCALLBACK)(
+    LPDPSESSIONDESC lpDPSessionDesc,
+    LPVOID      lpContext,
+    LPDWORD     lpdwTimeOut,
+    DWORD       dwFlags);
+
+
+extern HRESULT WINAPI DirectPlayEnumerateA( LPDPENUMDPCALLBACKA, LPVOID );
+extern HRESULT WINAPI DirectPlayEnumerateW( LPDPENUMDPCALLBACKW, LPVOID );
+extern HRESULT WINAPI DirectPlayCreate( LPGUID lpGUID, LPDIRECTPLAY *lplpDP, IUnknown *pUnk );
+
+typedef BOOL (CALLBACK *LPDPENUMPLAYERSCALLBACK)(
+    DPID   dpId,
+    LPSTR  lpFriendlyName,
+    LPSTR  lpFormalName,
+    DWORD  dwFlags,
+    LPVOID          lpContext );
+
+typedef BOOL (CALLBACK *LPDPENUMPLAYERSCALLBACK2)(
+    DPID            dpId,
+    DWORD           dwPlayerType,
+    LPCDPNAME       lpName,
+    DWORD           dwFlags,
+    LPVOID          lpContext );
+
+typedef BOOL (CALLBACK *LPDPENUMSESSIONSCALLBACK2)(
+    LPCDPSESSIONDESC2   lpThisSD,
+    LPDWORD             lpdwTimeOut,
+    DWORD               dwFlags,
+    LPVOID              lpContext );
+
+#define DPESC_TIMEDOUT          0x00000001
+
+/*****************************************************************************
+ * IDirectPlay interface
+ */
+#define INTERFACE IDirectPlay
+DECLARE_INTERFACE_(IDirectPlay,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectPlay methods ***/
+    STDMETHOD(AddPlayerToGroup)(THIS_ DPID idGroup, DPID idPlayer) PURE;
+    STDMETHOD(Close)(THIS) PURE;
+    STDMETHOD(CreatePlayer)(THIS_ LPDPID lpidPlayer, LPSTR lpPlayerName, LPSTR, LPHANDLE) PURE;
+    STDMETHOD(CreateGroup)(THIS_ LPDPID lpidGroup, LPSTR lpGroupName, LPSTR) PURE;
+    STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID idGroup, DPID idPlayer) PURE;
+    STDMETHOD(DestroyPlayer)(THIS_ DPID idPlayer) PURE;
+    STDMETHOD(DestroyGroup)(THIS_ DPID idGroup) PURE;
+    STDMETHOD(EnableNewPlayers)(THIS_ BOOL) PURE;
+    STDMETHOD(EnumGroupPlayers)(THIS_ DPID idGroup, LPDPENUMPLAYERSCALLBACK lpEnumPlayersCallback, LPVOID lpContext, DWORD dwFlags) PURE;
+    STDMETHOD(EnumGroups)(THIS_ DWORD, LPDPENUMPLAYERSCALLBACK lpEnumPlayersCallback, LPVOID lpContext, DWORD dwFlags) PURE;
+    STDMETHOD(EnumPlayers)(THIS_ DWORD, LPDPENUMPLAYERSCALLBACK lpEnumPlayersCallback, LPVOID lpContext, DWORD dwFlags) PURE;
+    STDMETHOD(EnumSessions)(THIS_ LPDPSESSIONDESC lpsd, DWORD dwTimeout, LPDPENUMSESSIONSCALLBACK lpEnumSessionsCallback, LPVOID lpContext, DWORD dwFlags) PURE;
+    STDMETHOD(GetCaps)(THIS_ LPDPCAPS lpDPCaps) PURE;
+    STDMETHOD(GetMessageCount)(THIS_ DPID idPlayer, LPDWORD lpdwCount) PURE;
+    STDMETHOD(GetPlayerCaps)(THIS_ DPID idPlayer, LPDPCAPS lpPlayerCaps) PURE;
+    STDMETHOD(GetPlayerName)(THIS_ DPID idPlayer, LPSTR, LPDWORD, LPSTR, LPDWORD) PURE;
+    STDMETHOD(Initialize)(THIS_ LPGUID lpGUID) PURE;
+    STDMETHOD(Open)(THIS_ LPDPSESSIONDESC lpsd) PURE;
+    STDMETHOD(Receive)(THIS_ LPDPID lpidFrom, LPDPID lpidTo, DWORD dwFlags, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
+    STDMETHOD(SaveSession)(THIS_ LPSTR) PURE;
+    STDMETHOD(Send)(THIS_ DPID idFrom, DPID idTo, DWORD dwFlags, LPVOID lpData, DWORD dwDataSize) PURE;
+    STDMETHOD(SetPlayerName)(THIS_ DPID idPlayer, LPSTR lpPlayerName, LPSTR) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectPlay_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectPlay_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectPlay_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectPlay methods ***/
+#define IDirectPlay_AddPlayerToGroup(p,a,b)      (p)->lpVtbl->AddPlayerToGroup(p,a,b)
+#define IDirectPlay_Close(p)                     (p)->lpVtbl->Close(p)
+#define IDirectPlay_CreatePlayer(p,a,b,c,d)      (p)->lpVtbl->CreatePlayer(p,a,b,c,d)
+#define IDirectPlay_CreateGroup(p,a,b,c)         (p)->lpVtbl->CreateGroup(p,a,b,c)
+#define IDirectPlay_DeletePlayerFromGroup(p,a,b) (p)->lpVtbl->DeletePlayerFromGroup(p,a,b)
+#define IDirectPlay_DestroyPlayer(p,a)           (p)->lpVtbl->DestroyPlayer(p,a)
+#define IDirectPlay_DestroyGroup(p,a)            (p)->lpVtbl->DestroyGroup(p,a)
+#define IDirectPlay_EnableNewPlayers(p,a)        (p)->lpVtbl->EnableNewPlayers(p,a)
+#define IDirectPlay_EnumGroupPlayers(p,a,b,c,d)  (p)->lpVtbl->EnumGroupPlayers(p,a,b,c,d)
+#define IDirectPlay_EnumGroups(p,a,b,c,d)        (p)->lpVtbl->EnumGroups(p,a,b,c,d)
+#define IDirectPlay_EnumPlayers(p,a,b,c,d)       (p)->lpVtbl->EnumPlayers(p,a,b,c,d)
+#define IDirectPlay_EnumSessions(p,a,b,c,d,e)    (p)->lpVtbl->EnumSessions(p,a,b,c,d,e)
+#define IDirectPlay_GetCaps(p,a)                 (p)->lpVtbl->GetCaps(p,a)
+#define IDirectPlay_GetMessageCount(p,a,b)       (p)->lpVtbl->GetMessageCount(p,a,b)
+#define IDirectPlay_GetPlayerCaps(p,a,b)         (p)->lpVtbl->GetPlayerCaps(p,a,b)
+#define IDirectPlay_GetPlayerName(p,a,b,c,d,e)   (p)->lpVtbl->GetPlayerName(p,a,b,c,d,e)
+#define IDirectPlay_Initialize(p,a)              (p)->lpVtbl->Initialize(p,a)
+#define IDirectPlay_Open(p,a)                    (p)->lpVtbl->Open(p,a)
+#define IDirectPlay_Receive(p,a,b,c,d,e)         (p)->lpVtbl->Receive(p,a,b,c,d,e)
+#define IDirectPlay_SaveSession(p,a)             (p)->lpVtbl->SaveSession(p,a)
+#define IDirectPlay_Send(p,a,b,c,d,e)            (p)->lpVtbl->Send(p,a,b,c,d,e)
+#define IDirectPlay_SetPlayerName(p,a,b,c)       (p)->lpVtbl->SetPlayerName(p,a,b,c)
+#else
+/*** IUnknown methods ***/
+#define IDirectPlay_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectPlay_AddRef(p)             (p)->AddRef()
+#define IDirectPlay_Release(p)            (p)->Release()
+/*** IDirectPlay methods ***/
+#define IDirectPlay_AddPlayerToGroup(p,a,b)      (p)->AddPlayerToGroup(a,b)
+#define IDirectPlay_Close(p)                     (p)->Close()
+#define IDirectPlay_CreatePlayer(p,a,b,c,d)      (p)->CreatePlayer(a,b,c,d)
+#define IDirectPlay_CreateGroup(p,a,b,c)         (p)->CreateGroup(a,b,c)
+#define IDirectPlay_DeletePlayerFromGroup(p,a,b) (p)->DeletePlayerFromGroup(a,b)
+#define IDirectPlay_DestroyPlayer(p,a)           (p)->DestroyPlayer(a)
+#define IDirectPlay_DestroyGroup(p,a)            (p)->DestroyGroup(a)
+#define IDirectPlay_EnableNewPlayers(p,a)        (p)->EnableNewPlayers(a)
+#define IDirectPlay_EnumGroupPlayers(p,a,b,c,d)  (p)->EnumGroupPlayers(a,b,c,d)
+#define IDirectPlay_EnumGroups(p,a,b,c,d)        (p)->EnumGroups(a,b,c,d)
+#define IDirectPlay_EnumPlayers(p,a,b,c,d)       (p)->EnumPlayers(a,b,c,d)
+#define IDirectPlay_EnumSessions(p,a,b,c,d,e)    (p)->EnumSessions(a,b,c,d,e)
+#define IDirectPlay_GetCaps(p,a)                 (p)->GetCaps(a)
+#define IDirectPlay_GetMessageCount(p,a,b)       (p)->GetMessageCount(a,b)
+#define IDirectPlay_GetPlayerCaps(p,a,b)         (p)->GetPlayerCaps(a,b)
+#define IDirectPlay_GetPlayerName(p,a,b,c,d,e)   (p)->GetPlayerName(a,b,c,d,e)
+#define IDirectPlay_Initialize(p,a)              (p)->Initialize(a)
+#define IDirectPlay_Open(p,a)                    (p)->Open(a)
+#define IDirectPlay_Receive(p,a,b,c,d,e)         (p)->Receive(a,b,c,d,e)
+#define IDirectPlay_SaveSession(p,a)             (p)->SaveSession(a)
+#define IDirectPlay_Send(p,a,b,c,d,e)            (p)->Send(a,b,c,d,e)
+#define IDirectPlay_SetPlayerName(p,a,b,c)       (p)->SetPlayerName(a,b,c)
+#endif
+
+
+/*****************************************************************************
+ * IDirectPlay2 and IDirectPlay2A interface
+ */
+#define INTERFACE IDirectPlay2
+DECLARE_INTERFACE_(IDirectPlay2,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectPlay2 methods ***/
+    STDMETHOD(AddPlayerToGroup)(THIS_ DPID idGroup, DPID idPlayer) PURE;
+    STDMETHOD(Close)(THIS) PURE;
+    STDMETHOD(CreateGroup)(THIS_ LPDPID lpidGroup, LPDPNAME lpGroupName, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
+    STDMETHOD(CreatePlayer)(THIS_ LPDPID lpidPlayer, LPDPNAME lpPlayerName, HANDLE hEvent, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
+    STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID idGroup, DPID idPlayer) PURE;
+    STDMETHOD(DestroyGroup)(THIS_ DPID idGroup) PURE;
+    STDMETHOD(DestroyPlayer)(THIS_ DPID idPlayer) PURE;
+    STDMETHOD(EnumGroupPlayers)(THIS_ DPID idGroup, LPGUID lpguidInstance, LPDPENUMPLAYERSCALLBACK2 lpEnumPlayersCallback2, LPVOID lpContext, DWORD dwFlags) PURE;
+    STDMETHOD(EnumGroups)(THIS_ LPGUID lpguidInstance, LPDPENUMPLAYERSCALLBACK2 lpEnumPlayersCallback2, LPVOID lpContext, DWORD dwFlags) PURE;
+    STDMETHOD(EnumPlayers)(THIS_ LPGUID lpguidInstance, LPDPENUMPLAYERSCALLBACK2 lpEnumPlayersCallback2, LPVOID lpContext, DWORD dwFlags) PURE;
+    STDMETHOD(EnumSessions)(THIS_ LPDPSESSIONDESC2 lpsd, DWORD dwTimeout, LPDPENUMSESSIONSCALLBACK2 lpEnumSessionsCallback2, LPVOID lpContext, DWORD dwFlags) PURE;
+    STDMETHOD(GetCaps)(THIS_ LPDPCAPS lpDPCaps, DWORD dwFlags) PURE;
+    STDMETHOD(GetGroupData)(THIS_ DPID idGroup, LPVOID lpData, LPDWORD lpdwDataSize, DWORD dwFlags) PURE;
+    STDMETHOD(GetGroupName)(THIS_ DPID idGroup, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
+    STDMETHOD(GetMessageCount)(THIS_ DPID idPlayer, LPDWORD lpdwCount) PURE;
+    STDMETHOD(GetPlayerAddress)(THIS_ DPID idPlayer, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
+    STDMETHOD(GetPlayerCaps)(THIS_ DPID idPlayer, LPDPCAPS lpPlayerCaps, DWORD dwFlags) PURE;
+    STDMETHOD(GetPlayerData)(THIS_ DPID idPlayer, LPVOID lpData, LPDWORD lpdwDataSize, DWORD dwFlags) PURE;
+    STDMETHOD(GetPlayerName)(THIS_ DPID idPlayer, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
+    STDMETHOD(GetSessionDesc)(THIS_ LPVOID lpData, LPDWORD lpdwDataSize) PURE;
+    STDMETHOD(Initialize)(THIS_ LPGUID lpGUID) PURE;
+    STDMETHOD(Open)(THIS_ LPDPSESSIONDESC2 lpsd, DWORD dwFlags) PURE;
+    STDMETHOD(Receive)(THIS_ LPDPID lpidFrom, LPDPID lpidTo, DWORD dwFlags, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
+    STDMETHOD(Send)(THIS_ DPID idFrom, DPID idTo, DWORD dwFlags, LPVOID lpData, DWORD dwDataSize) PURE;
+    STDMETHOD(SetGroupData)(THIS_ DPID idGroup, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
+    STDMETHOD(SetGroupName)(THIS_ DPID idGroup, LPDPNAME lpGroupName, DWORD dwFlags) PURE;
+    STDMETHOD(SetPlayerData)(THIS_ DPID idPlayer, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
+    STDMETHOD(SetPlayerName)(THIS_ DPID idPlayer, LPDPNAME lpPlayerName, DWORD dwFlags) PURE;
+    STDMETHOD(SetSessionDesc)(THIS_ LPDPSESSIONDESC2 lpSessDesc, DWORD dwFlags) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectPlay2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectPlay2_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectPlay2_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectPlay2 methods ***/
+#define IDirectPlay2_AddPlayerToGroup(p,a,b)       (p)->lpVtbl->AddPlayerToGroup(p,a,b)
+#define IDirectPlay2_Close(p)                      (p)->lpVtbl->Close(p)
+#define IDirectPlay2_CreateGroup(p,a,b,c,d,e)      (p)->lpVtbl->CreateGroup(p,a,b,c,d,e)
+#define IDirectPlay2_CreatePlayer(p,a,b,c,d,e,f)   (p)->lpVtbl->CreatePlayer(p,a,b,c,d,e,f)
+#define IDirectPlay2_DeletePlayerFromGroup(p,a,b)  (p)->lpVtbl->DeletePlayerFromGroup(p,a,b)
+#define IDirectPlay2_DestroyGroup(p,a)             (p)->lpVtbl->DestroyGroup(p,a)
+#define IDirectPlay2_DestroyPlayer(p,a)            (p)->lpVtbl->DestroyPlayer(p,a)
+#define IDirectPlay2_EnumGroupPlayers(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupPlayers(p,a,b,c,d,e)
+#define IDirectPlay2_EnumGroups(p,a,b,c,d)         (p)->lpVtbl->EnumGroups(p,a,b,c,d)
+#define IDirectPlay2_EnumPlayers(p,a,b,c,d)        (p)->lpVtbl->EnumPlayers(p,a,b,c,d)
+#define IDirectPlay2_EnumSessions(p,a,b,c,d,e)     (p)->lpVtbl->EnumSessions(p,a,b,c,d,e)
+#define IDirectPlay2_GetCaps(p,a,b)                (p)->lpVtbl->GetCaps(p,a,b)
+#define IDirectPlay2_GetGroupData(p,a,b,c,d)       (p)->lpVtbl->GetGroupData(p,a,b,c,d)
+#define IDirectPlay2_GetGroupName(p,a,b,c)         (p)->lpVtbl->GetGroupName(p,a,b,c)
+#define IDirectPlay2_GetMessageCount(p,a,b)        (p)->lpVtbl->GetMessageCount(p,a,b)
+#define IDirectPlay2_GetPlayerAddress(p,a,b,c)     (p)->lpVtbl->GetPlayerAddress(p,a,b,c)
+#define IDirectPlay2_GetPlayerCaps(p,a,b,c)        (p)->lpVtbl->GetPlayerCaps(p,a,b,c)
+#define IDirectPlay2_GetPlayerData(p,a,b,c,d)      (p)->lpVtbl->GetPlayerData(p,a,b,c,d)
+#define IDirectPlay2_GetPlayerName(p,a,b,c)        (p)->lpVtbl->GetPlayerName(p,a,b,c)
+#define IDirectPlay2_GetSessionDesc(p,a,b)         (p)->lpVtbl->GetSessionDesc(p,a,b)
+#define IDirectPlay2_Initialize(p,a)               (p)->lpVtbl->Initialize(p,a)
+#define IDirectPlay2_Open(p,a,b)                   (p)->lpVtbl->Open(p,a,b)
+#define IDirectPlay2_Receive(p,a,b,c,d,e)          (p)->lpVtbl->Receive(p,a,b,c,d,e)
+#define IDirectPlay2_Send(p,a,b,c,d,e)             (p)->lpVtbl->Send(p,a,b,c,d,e)
+#define IDirectPlay2_SetGroupData(p,a,b,c,d)       (p)->lpVtbl->SetGroupData(p,a,b,c,d)
+#define IDirectPlay2_SetGroupName(p,a,b,c)         (p)->lpVtbl->SetGroupName(p,a,b,c)
+#define IDirectPlay2_SetPlayerData(p,a,b,c,d)      (p)->lpVtbl->SetPlayerData(p,a,b,c,d)
+#define IDirectPlay2_SetPlayerName(p,a,b,c)        (p)->lpVtbl->SetPlayerName(p,a,b,c)
+#define IDirectPlay2_SetSessionDesc(p,a,b)         (p)->lpVtbl->SetSessionDesc(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirectPlay2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectPlay2_AddRef(p)             (p)->AddRef()
+#define IDirectPlay2_Release(p)            (p)->Release()
+/*** IDirectPlay2 methods ***/
+#define IDirectPlay2_AddPlayerToGroup(p,a,b)       (p)->AddPlayerToGroup(a,b)
+#define IDirectPlay2_Close(p)                      (p)->Close()
+#define IDirectPlay2_CreateGroup(p,a,b,c,d,e)      (p)->CreateGroup(a,b,c,d,e)
+#define IDirectPlay2_CreatePlayer(p,a,b,c,d,e,f)   (p)->CreatePlayer(a,b,c,d,e,f)
+#define IDirectPlay2_DeletePlayerFromGroup(p,a,b)  (p)->DeletePlayerFromGroup(a,b)
+#define IDirectPlay2_DestroyGroup(p,a)             (p)->DestroyGroup(a)
+#define IDirectPlay2_DestroyPlayer(p,a)            (p)->DestroyPlayer(a)
+#define IDirectPlay2_EnumGroupPlayers(p,a,b,c,d,e) (p)->EnumGroupPlayers(a,b,c,d,e)
+#define IDirectPlay2_EnumGroups(p,a,b,c,d)         (p)->EnumGroups(a,b,c,d)
+#define IDirectPlay2_EnumPlayers(p,a,b,c,d)        (p)->EnumPlayers(a,b,c,d)
+#define IDirectPlay2_EnumSessions(p,a,b,c,d,e)     (p)->EnumSessions(a,b,c,d,e)
+#define IDirectPlay2_GetCaps(p,a,b)                (p)->GetCaps(a,b)
+#define IDirectPlay2_GetGroupData(p,a,b,c,d)       (p)->GetGroupData(a,b,c,d)
+#define IDirectPlay2_GetGroupName(p,a,b,c)         (p)->GetGroupName(a,b,c)
+#define IDirectPlay2_GetMessageCount(p,a,b)        (p)->GetMessageCount(a,b)
+#define IDirectPlay2_GetPlayerAddress(p,a,b,c)     (p)->GetPlayerAddress(a,b,c)
+#define IDirectPlay2_GetPlayerCaps(p,a,b,c)        (p)->GetPlayerCaps(a,b,c)
+#define IDirectPlay2_GetPlayerData(p,a,b,c,d)      (p)->GetPlayerData(a,b,c,d)
+#define IDirectPlay2_GetPlayerName(p,a,b,c)        (p)->GetPlayerName(a,b,c)
+#define IDirectPlay2_GetSessionDesc(p,a,b)         (p)->GetSessionDesc(a,b)
+#define IDirectPlay2_Initialize(p,a)               (p)->Initialize(a)
+#define IDirectPlay2_Open(p,a,b)                   (p)->Open(a,b)
+#define IDirectPlay2_Receive(p,a,b,c,d,e)          (p)->Receive(a,b,c,d,e)
+#define IDirectPlay2_Send(p,a,b,c,d,e)             (p)->Send(a,b,c,d,e)
+#define IDirectPlay2_SetGroupData(p,a,b,c,d)       (p)->SetGroupData(a,b,c,d)
+#define IDirectPlay2_SetGroupName(p,a,b,c)         (p)->SetGroupName(a,b,c)
+#define IDirectPlay2_SetPlayerData(p,a,b,c,d)      (p)->SetPlayerData(a,b,c,d)
+#define IDirectPlay2_SetPlayerName(p,a,b,c)        (p)->SetPlayerName(a,b,c)
+#define IDirectPlay2_SetSessionDesc(p,a,b)         (p)->SetSessionDesc(a,b)
+#endif
+
+
+/*****************************************************************************
+ * IDirectPlay3 and IDirectPlay3A interface
+ */
+#define INTERFACE IDirectPlay3
+DECLARE_INTERFACE_(IDirectPlay3,IDirectPlay2)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectPlay2 methods ***/
+    STDMETHOD(AddPlayerToGroup)(THIS_ DPID idGroup, DPID idPlayer) PURE;
+    STDMETHOD(Close)(THIS) PURE;
+    STDMETHOD(CreateGroup)(THIS_ LPDPID lpidGroup, LPDPNAME lpGroupName, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
+    STDMETHOD(CreatePlayer)(THIS_ LPDPID lpidPlayer, LPDPNAME lpPlayerName, HANDLE hEvent, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
+    STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID idGroup, DPID idPlayer) PURE;
+    STDMETHOD(DestroyGroup)(THIS_ DPID idGroup) PURE;
+    STDMETHOD(DestroyPlayer)(THIS_ DPID idPlayer) PURE;
+    STDMETHOD(EnumGroupPlayers)(THIS_ DPID idGroup, LPGUID lpguidInstance, LPDPENUMPLAYERSCALLBACK2 lpEnumPlayersCallback2, LPVOID lpContext, DWORD dwFlags) PURE;
+    STDMETHOD(EnumGroups)(THIS_ LPGUID lpguidInstance, LPDPENUMPLAYERSCALLBACK2 lpEnumPlayersCallback2, LPVOID lpContext, DWORD dwFlags) PURE;
+    STDMETHOD(EnumPlayers)(THIS_ LPGUID lpguidInstance, LPDPENUMPLAYERSCALLBACK2 lpEnumPlayersCallback2, LPVOID lpContext, DWORD dwFlags) PURE;
+    STDMETHOD(EnumSessions)(THIS_ LPDPSESSIONDESC2 lpsd, DWORD dwTimeout, LPDPENUMSESSIONSCALLBACK2 lpEnumSessionsCallback2, LPVOID lpContext, DWORD dwFlags) PURE;
+    STDMETHOD(GetCaps)(THIS_ LPDPCAPS lpDPCaps, DWORD dwFlags) PURE;
+    STDMETHOD(GetGroupData)(THIS_ DPID idGroup, LPVOID lpData, LPDWORD lpdwDataSize, DWORD dwFlags) PURE;
+    STDMETHOD(GetGroupName)(THIS_ DPID idGroup, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
+    STDMETHOD(GetMessageCount)(THIS_ DPID idPlayer, LPDWORD lpdwCount) PURE;
+    STDMETHOD(GetPlayerAddress)(THIS_ DPID idPlayer, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
+    STDMETHOD(GetPlayerCaps)(THIS_ DPID idPlayer, LPDPCAPS lpPlayerCaps, DWORD dwFlags) PURE;
+    STDMETHOD(GetPlayerData)(THIS_ DPID idPlayer, LPVOID lpData, LPDWORD lpdwDataSize, DWORD dwFlags) PURE;
+    STDMETHOD(GetPlayerName)(THIS_ DPID idPlayer, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
+    STDMETHOD(GetSessionDesc)(THIS_ LPVOID lpData, LPDWORD lpdwDataSize) PURE;
+    STDMETHOD(Initialize)(THIS_ LPGUID lpGUID) PURE;
+    STDMETHOD(Open)(THIS_ LPDPSESSIONDESC2 lpsd, DWORD dwFlags) PURE;
+    STDMETHOD(Receive)(THIS_ LPDPID lpidFrom, LPDPID lpidTo, DWORD dwFlags, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
+    STDMETHOD(Send)(THIS_ DPID idFrom, DPID idTo, DWORD dwFlags, LPVOID lpData, DWORD dwDataSize) PURE;
+    STDMETHOD(SetGroupData)(THIS_ DPID idGroup, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
+    STDMETHOD(SetGroupName)(THIS_ DPID idGroup, LPDPNAME lpGroupName, DWORD dwFlags) PURE;
+    STDMETHOD(SetPlayerData)(THIS_ DPID idPlayer, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
+    STDMETHOD(SetPlayerName)(THIS_ DPID idPlayer, LPDPNAME lpPlayerName, DWORD dwFlags) PURE;
+    STDMETHOD(SetSessionDesc)(THIS_ LPDPSESSIONDESC2 lpSessDesc, DWORD dwFlags) PURE;
+    /*** IDirectPlay3 methods ***/
+    STDMETHOD(AddGroupToGroup)(THIS_ DPID idParentGroup, DPID idGroup) PURE;
+    STDMETHOD(CreateGroupInGroup)(THIS_ DPID idParentGroup, LPDPID lpidGroup, LPDPNAME lpGroupName, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
+    STDMETHOD(DeleteGroupFromGroup)(THIS_ DPID idParentGroup, DPID idGroup) PURE;
+    STDMETHOD(EnumConnections)(THIS_ LPCGUID lpguidApplication, LPDPENUMCONNECTIONSCALLBACK lpEnumCallback, LPVOID lpContext, DWORD dwFlags) PURE;
+    STDMETHOD(EnumGroupsInGroup)(THIS_ DPID idGroup, LPGUID lpguidInstance, LPDPENUMPLAYERSCALLBACK2 lpEnumCallback, LPVOID lpContext, DWORD dwFlags) PURE;
+    STDMETHOD(GetGroupConnectionSettings)(THIS_ DWORD dwFlags, DPID idGroup, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
+    STDMETHOD(InitializeConnection)(THIS_ LPVOID lpConnection, DWORD dwFlags) PURE;
+    STDMETHOD(SecureOpen)(THIS_ LPCDPSESSIONDESC2 lpsd, DWORD dwFlags, LPCDPSECURITYDESC lpSecurity, LPCDPCREDENTIALS lpCredentials) PURE;
+    STDMETHOD(SendChatMessage)(THIS_ DPID idFrom, DPID idTo, DWORD dwFlags, LPDPCHAT lpChatMessage) PURE;
+    STDMETHOD(SetGroupConnectionSettings)(THIS_ DWORD dwFlags, DPID idGroup, LPDPLCONNECTION lpConnection) PURE;
+    STDMETHOD(StartSession)(THIS_ DWORD dwFlags, DPID idGroup) PURE;
+    STDMETHOD(GetGroupFlags)(THIS_ DPID idGroup, LPDWORD lpdwFlags) PURE;
+    STDMETHOD(GetGroupParent)(THIS_ DPID idGroup, LPDPID lpidParent) PURE;
+    STDMETHOD(GetPlayerAccount)(THIS_ DPID idPlayer, DWORD dwFlags, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
+    STDMETHOD(GetPlayerFlags)(THIS_ DPID idPlayer, LPDWORD lpdwFlags) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectPlay3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectPlay3_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectPlay3_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectPlay2 methods ***/
+#define IDirectPlay3_AddPlayerToGroup(p,a,b)       (p)->lpVtbl->AddPlayerToGroup(p,a,b)
+#define IDirectPlay3_Close(p)                      (p)->lpVtbl->Close(p)
+#define IDirectPlay3_CreateGroup(p,a,b,c,d,e)      (p)->lpVtbl->CreateGroup(p,a,b,c,d,e)
+#define IDirectPlay3_CreatePlayer(p,a,b,c,d,e,f)   (p)->lpVtbl->CreatePlayer(p,a,b,c,d,e,f)
+#define IDirectPlay3_DeletePlayerFromGroup(p,a,b)  (p)->lpVtbl->DeletePlayerFromGroup(p,a,b)
+#define IDirectPlay3_DestroyGroup(p,a)             (p)->lpVtbl->DestroyGroup(p,a)
+#define IDirectPlay3_DestroyPlayer(p,a)            (p)->lpVtbl->DestroyPlayer(p,a)
+#define IDirectPlay3_EnumGroupPlayers(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupPlayers(p,a,b,c,d,e)
+#define IDirectPlay3_EnumGroups(p,a,b,c,d)         (p)->lpVtbl->EnumGroups(p,a,b,c,d)
+#define IDirectPlay3_EnumPlayers(p,a,b,c,d)        (p)->lpVtbl->EnumPlayers(p,a,b,c,d)
+#define IDirectPlay3_EnumSessions(p,a,b,c,d,e)     (p)->lpVtbl->EnumSessions(p,a,b,c,d,e)
+#define IDirectPlay3_GetCaps(p,a,b)                (p)->lpVtbl->GetCaps(p,a,b)
+#define IDirectPlay3_GetGroupData(p,a,b,c,d)       (p)->lpVtbl->GetGroupData(p,a,b,c,d)
+#define IDirectPlay3_GetGroupName(p,a,b,c)         (p)->lpVtbl->GetGroupName(p,a,b,c)
+#define IDirectPlay3_GetMessageCount(p,a,b)        (p)->lpVtbl->GetMessageCount(p,a,b)
+#define IDirectPlay3_GetPlayerAddress(p,a,b,c)     (p)->lpVtbl->GetPlayerAddress(p,a,b,c)
+#define IDirectPlay3_GetPlayerCaps(p,a,b,c)        (p)->lpVtbl->GetPlayerCaps(p,a,b,c)
+#define IDirectPlay3_GetPlayerData(p,a,b,c,d)      (p)->lpVtbl->GetPlayerData(p,a,b,c,d)
+#define IDirectPlay3_GetPlayerName(p,a,b,c)        (p)->lpVtbl->GetPlayerName(p,a,b,c)
+#define IDirectPlay3_GetSessionDesc(p,a,b)         (p)->lpVtbl->GetSessionDesc(p,a,b)
+#define IDirectPlay3_Initialize(p,a)               (p)->lpVtbl->Initialize(p,a)
+#define IDirectPlay3_Open(p,a,b)                   (p)->lpVtbl->Open(p,a,b)
+#define IDirectPlay3_Receive(p,a,b,c,d,e)          (p)->lpVtbl->Receive(p,a,b,c,d,e)
+#define IDirectPlay3_Send(p,a,b,c,d,e)             (p)->lpVtbl->Send(p,a,b,c,d,e)
+#define IDirectPlay3_SetGroupData(p,a,b,c,d)       (p)->lpVtbl->SetGroupData(p,a,b,c,d)
+#define IDirectPlay3_SetGroupName(p,a,b,c)         (p)->lpVtbl->SetGroupName(p,a,b,c)
+#define IDirectPlay3_SetPlayerData(p,a,b,c,d)      (p)->lpVtbl->SetPlayerData(p,a,b,c,d)
+#define IDirectPlay3_SetPlayerName(p,a,b,c)        (p)->lpVtbl->SetPlayerName(p,a,b,c)
+#define IDirectPlay3_SetSessionDesc(p,a,b)         (p)->lpVtbl->SetSessionDesc(p,a,b)
+/*** IDirectPlay3 methods ***/
+#define IDirectPlay3_AddGroupToGroup(p,a,b)                (p)->lpVtbl->AddGroupToGroup(p,a,b)
+#define IDirectPlay3_CreateGroupInGroup(p,a,b,c,d,e,f)     (p)->lpVtbl->CreateGroupInGroup(p,a,b,c,d,e,f)
+#define IDirectPlay3_DeleteGroupFromGroup(p,a,b)           (p)->lpVtbl->DeleteGroupFromGroup(p,a,b)
+#define IDirectPlay3_EnumConnections(p,a,b,c,d)            (p)->lpVtbl->EnumConnections(p,a,b,c,d)
+#define IDirectPlay3_EnumGroupsInGroup(p,a,b,c,d,e)        (p)->lpVtbl->EnumGroupsInGroup(p,a,b,c,d,e)
+#define IDirectPlay3_GetGroupConnectionSettings(p,a,b,c,d) (p)->lpVtbl->GetGroupConnectionSettings(p,a,b,c,d)
+#define IDirectPlay3_InitializeConnection(p,a,b)           (p)->lpVtbl->InitializeConnection(p,a,b)
+#define IDirectPlay3_SecureOpen(p,a,b,c,d)                 (p)->lpVtbl->SecureOpen(p,a,b,c,d)
+#define IDirectPlay3_SendChatMessage(p,a,b,c,d)            (p)->lpVtbl->SendChatMessage(p,a,b,c,d)
+#define IDirectPlay3_SetGroupConnectionSettings(p,a,b,c)   (p)->lpVtbl->SetGroupConnectionSettings(p,a,b,c)
+#define IDirectPlay3_StartSession(p,a,b)                   (p)->lpVtbl->StartSession(p,a,b)
+#define IDirectPlay3_GetGroupFlags(p,a,b)                  (p)->lpVtbl->GetGroupFlags(p,a,b)
+#define IDirectPlay3_GetGroupParent(p,a,b)                 (p)->lpVtbl->GetGroupParent(p,a,b)
+#define IDirectPlay3_GetPlayerAccount(p,a,b,c,d)           (p)->lpVtbl->GetPlayerAccount(p,a,b,c,d)
+#define IDirectPlay3_GetPlayerFlags(p,a,b)                 (p)->lpVtbl->GetPlayerFlags(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirectPlay3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectPlay3_AddRef(p)             (p)->AddRef()
+#define IDirectPlay3_Release(p)            (p)->Release()
+/*** IDirectPlay2 methods ***/
+#define IDirectPlay3_AddPlayerToGroup(p,a,b)       (p)->AddPlayerToGroup(a,b)
+#define IDirectPlay3_Close(p)                      (p)->Close()
+#define IDirectPlay3_CreateGroup(p,a,b,c,d,e)      (p)->CreateGroup(a,b,c,d,e)
+#define IDirectPlay3_CreatePlayer(p,a,b,c,d,e,f)   (p)->CreatePlayer(a,b,c,d,e,f)
+#define IDirectPlay3_DeletePlayerFromGroup(p,a,b)  (p)->DeletePlayerFromGroup(a,b)
+#define IDirectPlay3_DestroyGroup(p,a)             (p)->DestroyGroup(a)
+#define IDirectPlay3_DestroyPlayer(p,a)            (p)->DestroyPlayer(a)
+#define IDirectPlay3_EnumGroupPlayers(p,a,b,c,d,e) (p)->EnumGroupPlayers(a,b,c,d,e)
+#define IDirectPlay3_EnumGroups(p,a,b,c,d)         (p)->EnumGroups(a,b,c,d)
+#define IDirectPlay3_EnumPlayers(p,a,b,c,d)        (p)->EnumPlayers(a,b,c,d)
+#define IDirectPlay3_EnumSessions(p,a,b,c,d,e)     (p)->EnumSessions(a,b,c,d,e)
+#define IDirectPlay3_GetCaps(p,a,b)                (p)->GetCaps(a,b)
+#define IDirectPlay3_GetGroupData(p,a,b,c,d)       (p)->GetGroupData(a,b,c,d)
+#define IDirectPlay3_GetGroupName(p,a,b,c)         (p)->GetGroupName(a,b,c)
+#define IDirectPlay3_GetMessageCount(p,a,b)        (p)->GetMessageCount(a,b)
+#define IDirectPlay3_GetPlayerAddress(p,a,b,c)     (p)->GetPlayerAddress(a,b,c)
+#define IDirectPlay3_GetPlayerCaps(p,a,b,c)        (p)->GetPlayerCaps(a,b,c)
+#define IDirectPlay3_GetPlayerData(p,a,b,c,d)      (p)->GetPlayerData(a,b,c,d)
+#define IDirectPlay3_GetPlayerName(p,a,b,c)        (p)->GetPlayerName(a,b,c)
+#define IDirectPlay3_GetSessionDesc(p,a,b)         (p)->GetSessionDesc(a,b)
+#define IDirectPlay3_Initialize(p,a)               (p)->Initialize(a)
+#define IDirectPlay3_Open(p,a,b)                   (p)->Open(a,b)
+#define IDirectPlay3_Receive(p,a,b,c,d,e)          (p)->Receive(a,b,c,d,e)
+#define IDirectPlay3_Send(p,a,b,c,d,e)             (p)->Send(a,b,c,d,e)
+#define IDirectPlay3_SetGroupData(p,a,b,c,d)       (p)->SetGroupData(a,b,c,d)
+#define IDirectPlay3_SetGroupName(p,a,b,c)         (p)->SetGroupName(a,b,c)
+#define IDirectPlay3_SetPlayerData(p,a,b,c,d)      (p)->SetPlayerData(a,b,c,d)
+#define IDirectPlay3_SetPlayerName(p,a,b,c)        (p)->SetPlayerName(a,b,c)
+#define IDirectPlay3_SetSessionDesc(p,a,b)         (p)->SetSessionDesc(a,b)
+/*** IDirectPlay3 methods ***/
+#define IDirectPlay3_AddGroupToGroup(p,a,b)                (p)->AddGroupToGroup(a,b)
+#define IDirectPlay3_CreateGroupInGroup(p,a,b,c,d,e,f)     (p)->CreateGroupInGroup(a,b,c,d,e,f)
+#define IDirectPlay3_DeleteGroupFromGroup(p,a,b)           (p)->DeleteGroupFromGroup(a,b)
+#define IDirectPlay3_EnumConnections(p,a,b,c,d)            (p)->EnumConnections(a,b,c,d)
+#define IDirectPlay3_EnumGroupsInGroup(p,a,b,c,d,e)        (p)->EnumGroupsInGroup(a,b,c,d,e)
+#define IDirectPlay3_GetGroupConnectionSettings(p,a,b,c,d) (p)->GetGroupConnectionSettings(a,b,c,d)
+#define IDirectPlay3_InitializeConnection(p,a,b)           (p)->InitializeConnection(a,b)
+#define IDirectPlay3_SecureOpen(p,a,b,c,d)                 (p)->SecureOpen(a,b,c,d)
+#define IDirectPlay3_SendChatMessage(p,a,b,c,d)            (p)->SendChatMessage(a,b,c,d)
+#define IDirectPlay3_SetGroupConnectionSettings(p,a,b,c)   (p)->SetGroupConnectionSettings(a,b,c)
+#define IDirectPlay3_StartSession(p,a,b)                   (p)->StartSession(a,b)
+#define IDirectPlay3_GetGroupFlags(p,a,b)                  (p)->GetGroupFlags(a,b)
+#define IDirectPlay3_GetGroupParent(p,a,b)                 (p)->GetGroupParent(a,b)
+#define IDirectPlay3_GetPlayerAccount(p,a,b,c,d)           (p)->GetPlayerAccount(a,b,c,d)
+#define IDirectPlay3_GetPlayerFlags(p,a,b)                 (p)->GetPlayerFlags(a,b)
+#endif
+
+/*****************************************************************************
+ * IDirectPlay4 and IDirectPlay4A interface
+ */
+#define INTERFACE IDirectPlay4
+DECLARE_INTERFACE_(IDirectPlay4,IDirectPlay3)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectPlay2 methods ***/
+    STDMETHOD(AddPlayerToGroup)(THIS_ DPID idGroup, DPID idPlayer) PURE;
+    STDMETHOD(Close)(THIS) PURE;
+    STDMETHOD(CreateGroup)(THIS_ LPDPID lpidGroup, LPDPNAME lpGroupName, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
+    STDMETHOD(CreatePlayer)(THIS_ LPDPID lpidPlayer, LPDPNAME lpPlayerName, HANDLE hEvent, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
+    STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID idGroup, DPID idPlayer) PURE;
+    STDMETHOD(DestroyGroup)(THIS_ DPID idGroup) PURE;
+    STDMETHOD(DestroyPlayer)(THIS_ DPID idPlayer) PURE;
+    STDMETHOD(EnumGroupPlayers)(THIS_ DPID idGroup, LPGUID lpguidInstance, LPDPENUMPLAYERSCALLBACK2 lpEnumPlayersCallback2, LPVOID lpContext, DWORD dwFlags) PURE;
+    STDMETHOD(EnumGroups)(THIS_ LPGUID lpguidInstance, LPDPENUMPLAYERSCALLBACK2 lpEnumPlayersCallback2, LPVOID lpContext, DWORD dwFlags) PURE;
+    STDMETHOD(EnumPlayers)(THIS_ LPGUID lpguidInstance, LPDPENUMPLAYERSCALLBACK2 lpEnumPlayersCallback2, LPVOID lpContext, DWORD dwFlags) PURE;
+    STDMETHOD(EnumSessions)(THIS_ LPDPSESSIONDESC2 lpsd, DWORD dwTimeout, LPDPENUMSESSIONSCALLBACK2 lpEnumSessionsCallback2, LPVOID lpContext, DWORD dwFlags) PURE;
+    STDMETHOD(GetCaps)(THIS_ LPDPCAPS lpDPCaps, DWORD dwFlags) PURE;
+    STDMETHOD(GetGroupData)(THIS_ DPID idGroup, LPVOID lpData, LPDWORD lpdwDataSize, DWORD dwFlags) PURE;
+    STDMETHOD(GetGroupName)(THIS_ DPID idGroup, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
+    STDMETHOD(GetMessageCount)(THIS_ DPID idPlayer, LPDWORD lpdwCount) PURE;
+    STDMETHOD(GetPlayerAddress)(THIS_ DPID idPlayer, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
+    STDMETHOD(GetPlayerCaps)(THIS_ DPID idPlayer, LPDPCAPS lpPlayerCaps, DWORD dwFlags) PURE;
+    STDMETHOD(GetPlayerData)(THIS_ DPID idPlayer, LPVOID lpData, LPDWORD lpdwDataSize, DWORD dwFlags) PURE;
+    STDMETHOD(GetPlayerName)(THIS_ DPID idPlayer, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
+    STDMETHOD(GetSessionDesc)(THIS_ LPVOID lpData, LPDWORD lpdwDataSize) PURE;
+    STDMETHOD(Initialize)(THIS_ LPGUID lpGUID) PURE;
+    STDMETHOD(Open)(THIS_ LPDPSESSIONDESC2 lpsd, DWORD dwFlags) PURE;
+    STDMETHOD(Receive)(THIS_ LPDPID lpidFrom, LPDPID lpidTo, DWORD dwFlags, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
+    STDMETHOD(Send)(THIS_ DPID idFrom, DPID idTo, DWORD dwFlags, LPVOID lpData, DWORD dwDataSize) PURE;
+    STDMETHOD(SetGroupData)(THIS_ DPID idGroup, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
+    STDMETHOD(SetGroupName)(THIS_ DPID idGroup, LPDPNAME lpGroupName, DWORD dwFlags) PURE;
+    STDMETHOD(SetPlayerData)(THIS_ DPID idPlayer, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
+    STDMETHOD(SetPlayerName)(THIS_ DPID idPlayer, LPDPNAME lpPlayerName, DWORD dwFlags) PURE;
+    STDMETHOD(SetSessionDesc)(THIS_ LPDPSESSIONDESC2 lpSessDesc, DWORD dwFlags) PURE;
+    /*** IDirectPlay3 methods ***/
+    STDMETHOD(AddGroupToGroup)(THIS_ DPID idParentGroup, DPID idGroup) PURE;
+    STDMETHOD(CreateGroupInGroup)(THIS_ DPID idParentGroup, LPDPID lpidGroup, LPDPNAME lpGroupName, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
+    STDMETHOD(DeleteGroupFromGroup)(THIS_ DPID idParentGroup, DPID idGroup) PURE;
+    STDMETHOD(EnumConnections)(THIS_ LPCGUID lpguidApplication, LPDPENUMCONNECTIONSCALLBACK lpEnumCallback, LPVOID lpContext, DWORD dwFlags) PURE;
+    STDMETHOD(EnumGroupsInGroup)(THIS_ DPID idGroup, LPGUID lpguidInstance, LPDPENUMPLAYERSCALLBACK2 lpEnumCallback, LPVOID lpContext, DWORD dwFlags) PURE;
+    STDMETHOD(GetGroupConnectionSettings)(THIS_ DWORD dwFlags, DPID idGroup, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
+    STDMETHOD(InitializeConnection)(THIS_ LPVOID lpConnection, DWORD dwFlags) PURE;
+    STDMETHOD(SecureOpen)(THIS_ LPCDPSESSIONDESC2 lpsd, DWORD dwFlags, LPCDPSECURITYDESC lpSecurity, LPCDPCREDENTIALS lpCredentials) PURE;
+    STDMETHOD(SendChatMessage)(THIS_ DPID idFrom, DPID idTo, DWORD dwFlags, LPDPCHAT lpChatMessage) PURE;
+    STDMETHOD(SetGroupConnectionSettings)(THIS_ DWORD dwFlags, DPID idGroup, LPDPLCONNECTION lpConnection) PURE;
+    STDMETHOD(StartSession)(THIS_ DWORD dwFlags, DPID idGroup) PURE;
+    STDMETHOD(GetGroupFlags)(THIS_ DPID idGroup, LPDWORD lpdwFlags) PURE;
+    STDMETHOD(GetGroupParent)(THIS_ DPID idGroup, LPDPID lpidParent) PURE;
+    STDMETHOD(GetPlayerAccount)(THIS_ DPID idPlayer, DWORD dwFlags, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
+    STDMETHOD(GetPlayerFlags)(THIS_ DPID idPlayer, LPDWORD lpdwFlags) PURE;
+    /*** IDirectPlay4 methods ***/
+    STDMETHOD(GetGroupOwner)(THIS_ DPID , LPDPID  ) PURE;
+    STDMETHOD(SetGroupOwner)(THIS_ DPID , DPID  ) PURE;
+    STDMETHOD(SendEx)(THIS_ DPID , DPID , DWORD , LPVOID , DWORD , DWORD , DWORD , LPVOID , LPDWORD  ) PURE;
+    STDMETHOD(GetMessageQueue)(THIS_ DPID , DPID , DWORD , LPDWORD , LPDWORD  ) PURE;
+    STDMETHOD(CancelMessage)(THIS_ DWORD , DWORD  ) PURE;
+    STDMETHOD(CancelPriority)(THIS_ DWORD , DWORD , DWORD  ) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectPlayX_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectPlayX_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectPlayX_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectPlay2 methods ***/
+#define IDirectPlayX_AddPlayerToGroup(p,a,b)       (p)->lpVtbl->AddPlayerToGroup(p,a,b)
+#define IDirectPlayX_Close(p)                      (p)->lpVtbl->Close(p)
+#define IDirectPlayX_CreateGroup(p,a,b,c,d,e)      (p)->lpVtbl->CreateGroup(p,a,b,c,d,e)
+#define IDirectPlayX_CreatePlayer(p,a,b,c,d,e,f)   (p)->lpVtbl->CreatePlayer(p,a,b,c,d,e,f)
+#define IDirectPlayX_DeletePlayerFromGroup(p,a,b)  (p)->lpVtbl->DeletePlayerFromGroup(p,a,b)
+#define IDirectPlayX_DestroyGroup(p,a)             (p)->lpVtbl->DestroyGroup(p,a)
+#define IDirectPlayX_DestroyPlayer(p,a)            (p)->lpVtbl->DestroyPlayer(p,a)
+#define IDirectPlayX_EnumGroupPlayers(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupPlayers(p,a,b,c,d,e)
+#define IDirectPlayX_EnumGroups(p,a,b,c,d)         (p)->lpVtbl->EnumGroups(p,a,b,c,d)
+#define IDirectPlayX_EnumPlayers(p,a,b,c,d)        (p)->lpVtbl->EnumPlayers(p,a,b,c,d)
+#define IDirectPlayX_EnumSessions(p,a,b,c,d,e)     (p)->lpVtbl->EnumSessions(p,a,b,c,d,e)
+#define IDirectPlayX_GetCaps(p,a,b)                (p)->lpVtbl->GetCaps(p,a,b)
+#define IDirectPlayX_GetGroupData(p,a,b,c,d)       (p)->lpVtbl->GetGroupData(p,a,b,c,d)
+#define IDirectPlayX_GetGroupName(p,a,b,c)         (p)->lpVtbl->GetGroupName(p,a,b,c)
+#define IDirectPlayX_GetMessageCount(p,a,b)        (p)->lpVtbl->GetMessageCount(p,a,b)
+#define IDirectPlayX_GetPlayerAddress(p,a,b,c)     (p)->lpVtbl->GetPlayerAddress(p,a,b,c)
+#define IDirectPlayX_GetPlayerCaps(p,a,b,c)        (p)->lpVtbl->GetPlayerCaps(p,a,b,c)
+#define IDirectPlayX_GetPlayerData(p,a,b,c,d)      (p)->lpVtbl->GetPlayerData(p,a,b,c,d)
+#define IDirectPlayX_GetPlayerName(p,a,b,c)        (p)->lpVtbl->GetPlayerName(p,a,b,c)
+#define IDirectPlayX_GetSessionDesc(p,a,b)         (p)->lpVtbl->GetSessionDesc(p,a,b)
+#define IDirectPlayX_Initialize(p,a)               (p)->lpVtbl->Initialize(p,a)
+#define IDirectPlayX_Open(p,a,b)                   (p)->lpVtbl->Open(p,a,b)
+#define IDirectPlayX_Receive(p,a,b,c,d,e)          (p)->lpVtbl->Receive(p,a,b,c,d,e)
+#define IDirectPlayX_Send(p,a,b,c,d,e)             (p)->lpVtbl->Send(p,a,b,c,d,e)
+#define IDirectPlayX_SetGroupData(p,a,b,c,d)       (p)->lpVtbl->SetGroupData(p,a,b,c,d)
+#define IDirectPlayX_SetGroupName(p,a,b,c)         (p)->lpVtbl->SetGroupName(p,a,b,c)
+#define IDirectPlayX_SetPlayerData(p,a,b,c,d)      (p)->lpVtbl->SetPlayerData(p,a,b,c,d)
+#define IDirectPlayX_SetPlayerName(p,a,b,c)        (p)->lpVtbl->SetPlayerName(p,a,b,c)
+#define IDirectPlayX_SetSessionDesc(p,a,b)         (p)->lpVtbl->SetSessionDesc(p,a,b)
+/*** IDirectPlay3 methods ***/
+#define IDirectPlayX_AddGroupToGroup(p,a,b)                (p)->lpVtbl->AddGroupToGroup(p,a,b)
+#define IDirectPlayX_CreateGroupInGroup(p,a,b,c,d,e,f)     (p)->lpVtbl->CreateGroupInGroup(p,a,b,c,d,e,f)
+#define IDirectPlayX_DeleteGroupFromGroup(p,a,b)           (p)->lpVtbl->DeleteGroupFromGroup(p,a,b)
+#define IDirectPlayX_EnumConnections(p,a,b,c,d)            (p)->lpVtbl->EnumConnections(p,a,b,c,d)
+#define IDirectPlayX_EnumGroupsInGroup(p,a,b,c,d,e)        (p)->lpVtbl->EnumGroupsInGroup(p,a,b,c,d,e)
+#define IDirectPlayX_GetGroupConnectionSettings(p,a,b,c,d) (p)->lpVtbl->GetGroupConnectionSettings(p,a,b,c,d)
+#define IDirectPlayX_InitializeConnection(p,a,b)           (p)->lpVtbl->InitializeConnection(p,a,b)
+#define IDirectPlayX_SecureOpen(p,a,b,c,d)                 (p)->lpVtbl->SecureOpen(p,a,b,c,d)
+#define IDirectPlayX_SendChatMessage(p,a,b,c,d)            (p)->lpVtbl->SendChatMessage(p,a,b,c,d)
+#define IDirectPlayX_SetGroupConnectionSettings(p,a,b,c)   (p)->lpVtbl->SetGroupConnectionSettings(p,a,b,c)
+#define IDirectPlayX_StartSession(p,a,b)                   (p)->lpVtbl->StartSession(p,a,b)
+#define IDirectPlayX_GetGroupFlags(p,a,b)                  (p)->lpVtbl->GetGroupFlags(p,a,b)
+#define IDirectPlayX_GetGroupParent(p,a,b)                 (p)->lpVtbl->GetGroupParent(p,a,b)
+#define IDirectPlayX_GetPlayerAccount(p,a,b,c,d)           (p)->lpVtbl->GetPlayerAccount(p,a,b,c,d)
+#define IDirectPlayX_GetPlayerFlags(p,a,b)                 (p)->lpVtbl->GetPlayerFlags(p,a,b)
+/*** IDirectPlay4 methods ***/
+#define IDirectPlayX_GetGroupOwner(p,a,b)                  (p)->lpVtbl->GetGroupOwner(p,a,b)
+#define IDirectPlayX_SetGroupOwner(p,a,b)                  (p)->lpVtbl->SetGroupOwner(p,a,b)
+#define IDirectPlayX_SendEx(p,a,b,c,d,e,f,g,h,i)           (p)->lpVtbl->SendEx(p,a,b,c,d,e,f,g,h,i)
+#define IDirectPlayX_GetMessageQueue(p,a,b,c,d,e)          (p)->lpVtbl->GetMessageQueue(p,a,b,c,d,e)
+#define IDirectPlayX_CancelMessage(p,a,b)                  (p)->lpVtbl->CancelMessage(p,a,b)
+#define IDirectPlayX_CancelPriority(p,a,b,c)               (p)->lpVtbl->CancelPriority(p,a,b,c)
+#else
+/*** IUnknown methods ***/
+#define IDirectPlayX_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectPlayX_AddRef(p)             (p)->AddRef()
+#define IDirectPlayX_Release(p)            (p)->Release()
+/*** IDirectPlay2 methods ***/
+#define IDirectPlayX_AddPlayerToGroup(p,a,b)       (p)->AddPlayerToGroup(a,b)
+#define IDirectPlayX_Close(p)                      (p)->Close()
+#define IDirectPlayX_CreateGroup(p,a,b,c,d,e)      (p)->CreateGroup(a,b,c,d,e)
+#define IDirectPlayX_CreatePlayer(p,a,b,c,d,e,f)   (p)->CreatePlayer(a,b,c,d,e,f)
+#define IDirectPlayX_DeletePlayerFromGroup(p,a,b)  (p)->DeletePlayerFromGroup(a,b)
+#define IDirectPlayX_DestroyGroup(p,a)             (p)->DestroyGroup(a)
+#define IDirectPlayX_DestroyPlayer(p,a)            (p)->DestroyPlayer(a)
+#define IDirectPlayX_EnumGroupPlayers(p,a,b,c,d,e) (p)->EnumGroupPlayers(a,b,c,d,e)
+#define IDirectPlayX_EnumGroups(p,a,b,c,d)         (p)->EnumGroups(a,b,c,d)
+#define IDirectPlayX_EnumPlayers(p,a,b,c,d)        (p)->EnumPlayers(a,b,c,d)
+#define IDirectPlayX_EnumSessions(p,a,b,c,d,e)     (p)->EnumSessions(a,b,c,d,e)
+#define IDirectPlayX_GetCaps(p,a,b)                (p)->GetCaps(a,b)
+#define IDirectPlayX_GetGroupData(p,a,b,c,d)       (p)->GetGroupData(a,b,c,d)
+#define IDirectPlayX_GetGroupName(p,a,b,c)         (p)->GetGroupName(a,b,c)
+#define IDirectPlayX_GetMessageCount(p,a,b)        (p)->GetMessageCount(a,b)
+#define IDirectPlayX_GetPlayerAddress(p,a,b,c)     (p)->GetPlayerAddress(a,b,c)
+#define IDirectPlayX_GetPlayerCaps(p,a,b,c)        (p)->GetPlayerCaps(a,b,c)
+#define IDirectPlayX_GetPlayerData(p,a,b,c,d)      (p)->GetPlayerData(a,b,c,d)
+#define IDirectPlayX_GetPlayerName(p,a,b,c)        (p)->GetPlayerName(a,b,c)
+#define IDirectPlayX_GetSessionDesc(p,a,b)         (p)->GetSessionDesc(a,b)
+#define IDirectPlayX_Initialize(p,a)               (p)->Initialize(a)
+#define IDirectPlayX_Open(p,a,b)                   (p)->Open(a,b)
+#define IDirectPlayX_Receive(p,a,b,c,d,e)          (p)->Receive(a,b,c,d,e)
+#define IDirectPlayX_Send(p,a,b,c,d,e)             (p)->Send(a,b,c,d,e)
+#define IDirectPlayX_SetGroupData(p,a,b,c,d)       (p)->SetGroupData(a,b,c,d)
+#define IDirectPlayX_SetGroupName(p,a,b,c)         (p)->SetGroupName(a,b,c)
+#define IDirectPlayX_SetPlayerData(p,a,b,c,d)      (p)->SetPlayerData(a,b,c,d)
+#define IDirectPlayX_SetPlayerName(p,a,b,c)        (p)->SetPlayerName(a,b,c)
+#define IDirectPlayX_SetSessionDesc(p,a,b)         (p)->SetSessionDesc(a,b)
+/*** IDirectPlay3 methods ***/
+#define IDirectPlayX_AddGroupToGroup(p,a,b)                (p)->AddGroupToGroup(a,b)
+#define IDirectPlayX_CreateGroupInGroup(p,a,b,c,d,e,f)     (p)->CreateGroupInGroup(a,b,c,d,e,f)
+#define IDirectPlayX_DeleteGroupFromGroup(p,a,b)           (p)->DeleteGroupFromGroup(a,b)
+#define IDirectPlayX_EnumConnections(p,a,b,c,d)            (p)->EnumConnections(a,b,c,d)
+#define IDirectPlayX_EnumGroupsInGroup(p,a,b,c,d,e)        (p)->EnumGroupsInGroup(a,b,c,d,e)
+#define IDirectPlayX_GetGroupConnectionSettings(p,a,b,c,d) (p)->GetGroupConnectionSettings(a,b,c,d)
+#define IDirectPlayX_InitializeConnection(p,a,b)           (p)->InitializeConnection(a,b)
+#define IDirectPlayX_SecureOpen(p,a,b,c,d)                 (p)->SecureOpen(a,b,c,d)
+#define IDirectPlayX_SendChatMessage(p,a,b,c,d)            (p)->SendChatMessage(a,b,c,d)
+#define IDirectPlayX_SetGroupConnectionSettings(p,a,b,c)   (p)->SetGroupConnectionSettings(a,b,c)
+#define IDirectPlayX_StartSession(p,a,b)                   (p)->StartSession(a,b)
+#define IDirectPlayX_GetGroupFlags(p,a,b)                  (p)->GetGroupFlags(a,b)
+#define IDirectPlayX_GetGroupParent(p,a,b)                 (p)->GetGroupParent(a,b)
+#define IDirectPlayX_GetPlayerAccount(p,a,b,c,d)           (p)->GetPlayerAccount(a,b,c,d)
+#define IDirectPlayX_GetPlayerFlags(p,a,b)                 (p)->GetPlayerFlags(a,b)
+/*** IDirectPlay4 methods ***/
+#define IDirectPlayX_GetGroupOwner(p,a,b)                  (p)->GetGroupOwner(a,b)
+#define IDirectPlayX_SetGroupOwner(p,a,b)                  (p)->SetGroupOwner(a,b)
+#define IDirectPlayX_SendEx(p,a,b,c,d,e,f,g,h,i)           (p)->SendEx(a,b,c,d,e,f,g,h,i)
+#define IDirectPlayX_GetMessageQueue(p,a,b,c,d,e)          (p)->GetMessageQueue(a,b,c,d,e)
+#define IDirectPlayX_CancelMessage(p,a,b)                  (p)->CancelMessage(a,b)
+#define IDirectPlayX_CancelPriority(p,a,b,c)               (p)->CancelPriority(a,b,c)
+#endif
+
+
+/* For DirectPlay::EnumConnections */
+#define DPCONNECTION_DIRECTPLAY      0x00000001
+#define DPCONNECTION_DIRECTPLAYLOBBY 0x00000002
+
+/* For DirectPlay::EnumPlayers and DirectPlay::EnumGroups */
+#define DPENUMPLAYERS_ALL           0x00000000
+#define DPENUMPLAYERS_LOCAL         0x00000008
+#define DPENUMPLAYERS_REMOTE        0x00000010
+#define DPENUMPLAYERS_GROUP         0x00000020
+#define DPENUMPLAYERS_SESSION       0x00000080
+#define DPENUMPLAYERS_SERVERPLAYER  0x00000100
+#define DPENUMPLAYERS_SPECTATOR     0x00000200
+#define DPENUMPLAYERS_OWNER         0x00002000
+
+#define DPENUMGROUPS_ALL            DPENUMPLAYERS_ALL
+#define DPENUMGROUPS_LOCAL          DPENUMPLAYERS_LOCAL
+#define DPENUMGROUPS_REMOTE         DPENUMPLAYERS_REMOTE
+#define DPENUMGROUPS_SESSION        DPENUMPLAYERS_SESSION
+#define DPENUMGROUPS_SHORTCUT       0x00000400
+#define DPENUMGROUPS_STAGINGAREA    0x00000800
+#define DPENUMGROUPS_HIDDEN         0x00001000
+
+
+/* For DirectPlay::CreatePlayer */
+#define DPPLAYER_SERVERPLAYER  DPENUMPLAYERS_SERVERPLAYER
+#define DPPLAYER_SPECTATOR     DPENUMPLAYERS_SPECTATOR
+#define DPPLAYER_LOCAL         DPENUMPLAYERS_LOCAL
+#define DPPLAYER_OWNER         DPENUMPLAYERS_OWNER
+
+/* For DirectPlay::CreateGroup */
+#define DPGROUP_STAGINGAREA  DPENUMGROUPS_STAGINGAREA
+#define DPGROUP_LOCAL        DPENUMGROUPS_LOCAL
+#define DPGROUP_HIDDEN       DPENUMGROUPS_HIDDEN
+
+/* For DirectPlay::EnumSessions */
+#define DPENUMSESSIONS_AVAILABLE         0x00000001
+#define DPENUMSESSIONS_ALL               0x00000002
+#define DPENUMSESSIONS_ASYNC             0x00000010
+#define DPENUMSESSIONS_STOPASYNC         0x00000020
+#define DPENUMSESSIONS_PASSWORDREQUIRED  0x00000040
+#define DPENUMSESSIONS_RETURNSTATUS      0x00000080
+
+/* For DirectPlay::GetCaps and DirectPlay::GetPlayerCaps */
+#define DPGETCAPS_GUARANTEED  0x00000001
+
+/* For DirectPlay::GetGroupData and DirectPlay::GetPlayerData */
+#define DPGET_REMOTE  0x00000000
+#define DPGET_LOCAL   0x00000001
+
+/* For DirectPlay::Receive */
+#define DPRECEIVE_ALL         0x00000001
+#define DPRECEIVE_TOPLAYER    0x00000002
+#define DPRECEIVE_FROMPLAYER  0x00000004
+#define DPRECEIVE_PEEK        0x00000008
+
+/* For DirectPlay::Send */
+#define DPSEND_NONGUARANTEED       0x00000000
+#define DPSEND_GUARANTEED          0x00000001
+#define DPSEND_HIGHPRIORITY        0x00000002
+#define DPSEND_OPENSTREAM          0x00000008
+#define DPSEND_CLOSESTREAM         0x00000010
+#define DPSEND_SIGNED              0x00000020
+#define DPSEND_ENCRYPTED           0x00000040
+#define DPSEND_LOBBYSYSTEMMESSAGE  0x00000080
+#define DPSEND_ASYNC               0x00000200
+#define DPSEND_NOSENDCOMPLETEMSG   0x00000400
+
+#define DPSEND_MAX_PRI       0x0000FFFF
+#define DPSEND_MAX_PRIORITY  DPSEND_MAX_PRI
+
+
+/* For  DirectPlay::SetGroupData, DirectPlay::SetGroupName,
+ * DirectPlay::SetPlayerData, DirectPlay::SetPlayerName and
+ * DirectPlay::SetSessionDesc.
+ */
+#define DPSET_REMOTE      0x00000000
+#define DPSET_LOCAL       0x00000001
+#define DPSET_GUARANTEED  0x00000002
+
+/* For DirectPlay::GetMessageQueue */
+#define DPMESSAGEQUEUE_SEND    0x00000001
+#define DPMESSAGEQUEUE_RECEIVE 0x00000002
+
+/* DirectPlay::Connect */
+#define DPCONNECT_RETURNSTATUS  (DPENUMSESSIONS_RETURNSTATUS)
+
+/* DirectPlay::GetCaps and DirectPlay::GetPlayerCaps */
+#define DPCAPS_ISHOST                  0x00000002
+#define DPCAPS_GROUPOPTIMIZED          0x00000008
+#define DPCAPS_KEEPALIVEOPTIMIZED      0x00000010
+#define DPCAPS_GUARANTEEDOPTIMIZED     0x00000020
+#define DPCAPS_GUARANTEEDSUPPORTED     0x00000040
+#define DPCAPS_SIGNINGSUPPORTED        0x00000080
+#define DPCAPS_ENCRYPTIONSUPPORTED     0x00000100
+#define DPPLAYERCAPS_LOCAL             0x00000800
+#define DPCAPS_ASYNCCANCELSUPPORTED    0x00001000
+#define DPCAPS_ASYNCCANCELALLSUPPORTED 0x00002000
+#define DPCAPS_SENDTIMEOUTSUPPORTED    0x00004000
+#define DPCAPS_SENDPRIORITYSUPPORTED   0x00008000
+#define DPCAPS_ASYNCSUPPORTED          0x00010000
+
+/** DirectPlay system messages **/
+
+/* A new player or group has been created in the session */
+#define DPSYS_CREATEPLAYERORGROUP   0x0003
+
+/* A player or group has been deleted from the session */
+#define DPSYS_DESTROYPLAYERORGROUP  0x0005
+
+/* A player has been added to a group */
+#define DPSYS_ADDPLAYERTOGROUP      0x0007
+
+/* A player has been deleted from a group */
+#define DPSYS_DELETEPLAYERFROMGROUP 0x0021
+
+/* Session lost for this object - ie lost contact with all players */
+#define DPSYS_SESSIONLOST           0x0031
+
+/* The current host has left the session */
+#define DPSYS_HOST                  0x0101
+
+/* Player or group data has changed */
+#define DPSYS_SETPLAYERORGROUPDATA  0x0102
+
+/* The name of a player or group has changed */
+#define DPSYS_SETPLAYERORGROUPNAME  0x0103
+
+/* The session description has changed */
+#define DPSYS_SETSESSIONDESC        0x0104
+
+/* A group has been added to a group */
+#define DPSYS_ADDGROUPTOGROUP           0x0105
+
+/* A group has been deleted from a group */
+#define DPSYS_DELETEGROUPFROMGROUP      0x0106
+
+/* A secure player to player message has arrived */
+#define DPSYS_SECUREMESSAGE         0x0107
+
+/* Start a new session */
+#define DPSYS_STARTSESSION          0x0108
+
+/* A chat message has arrived */
+#define DPSYS_CHAT                  0x0109
+
+/* The owner of a group has changed */
+#define DPSYS_SETGROUPOWNER         0x010A
+
+/* An async send is done (finished normally, failed or cancelled) */
+#define DPSYS_SENDCOMPLETE          0x010d
+
+/** DirectPlay System Messages **/
+
+#define DPPLAYERTYPE_GROUP   0x00000000
+#define DPPLAYERTYPE_PLAYER  0x00000001
+
+
+/* NOTE: DPMSG_HOST and DPMSG_GENERIC share the same format */
+typedef struct tagDPMSG_GENERIC
+{
+   DWORD       dwType; /* Use message type as described above */
+} DPMSG_GENERIC,     *LPDPMSG_GENERIC,
+  DPMSG_HOST,        *LPDPMSG_HOST,
+  DPMSG_SESSIONLOST, *LPDPMSG_SESSIONLOST;
+
+typedef struct tagDPMSG_CREATEPLAYERORGROUP
+{
+   DWORD   dwType;           /* Use message type as described above */
+   DWORD   dwPlayerType;     /* Use DPPLAYERTYPE_GROUP or DPPLAYERTYPE_PLAYER */
+   DPID    dpId;             /* ID of the player/group */
+   DWORD   dwCurrentPlayers; /* Current number of players/groups in session */
+   LPVOID  lpData;           /* Pointer to data */
+   DWORD   dwDataSize;       /* Size of data */
+   DPNAME  dpnName;          /* Name info */
+
+   /* dpIdParent and dwFlags are only valid in DirectPlay3 and later. What
+    * does that mean about the message size before? -PH */
+   DPID   dpIdParent;  /* id of parent group */
+   DWORD  dwFlags;     /* Flags for the player/group */
+} DPMSG_CREATEPLAYERORGROUP, *LPDPMSG_CREATEPLAYERORGROUP;
+
+typedef struct tagDPMSG_DESTROYPLAYERORGROUP
+{
+   DWORD   dwType;           /* Use message type as described above */
+   DWORD   dwPlayerType;     /* Use DPPLAYERTYPE_GROUP or DPPLAYERTYPE_PLAYER */
+   DPID    dpId;             /* ID of player/group to be deleted */
+   LPVOID  lpLocalData;      /* Pointer to local data */
+   DWORD   dwLocalDataSize;  /* Sizeof local data */
+   LPVOID  lpRemoteData;     /* Pointer to remote data */
+   DWORD   dwRemoteDataSize; /* Sizeof remote data */
+
+   /* dpnName, dpIdParent and dwFlags are only valid in DirectPlay3 and later. What
+    * does that mean about the message size before? -PH */
+   DPNAME  dpnName;     /* Name info */
+   DPID    dpIdParent;  /* id of parent group */
+   DWORD   dwFlags;     /* Flags for the player/group */
+} DPMSG_DESTROYPLAYERORGROUP, *LPDPMSG_DESTROYPLAYERORGROUP;
+
+/* NOTE: DPMSG_ADDPLAYERTOGROUP and DPMSG_DELETEPLAYERFROMGROUP are the same */
+typedef struct tagDPMSG_ADDPLAYERTOGROUP
+{
+   DWORD  dwType;      /* Use message type as described above */
+   DPID   dpIdGroup;   /* Group ID to add player into */
+   DPID   dpIdPlayer;  /* ID of player to add */
+} DPMSG_ADDPLAYERTOGROUP,      *LPDPMSG_ADDPLAYERTOGROUP,
+  DPMSG_DELETEPLAYERFROMGROUP, *LPDPMSG_DELETEPLAYERFROMGROUP;
+
+/* NOTE: DPMSG_ADDGROUPTOGROUP and DPMSG_DELETEGROUPFROMGROUP are the same */
+typedef struct tagDPMSG_ADDGROUPTOGROUP
+{
+   DWORD  dwType;          /* Use message type as described above */
+   DPID   dpIdParentGroup; /* Group ID to add group into */
+   DPID   dpIdGroup;       /* ID of group to add */
+} DPMSG_ADDGROUPTOGROUP,      *LPDPMSG_ADDGROUPTOGROUP,
+  DPMSG_DELETEGROUPFROMGROUP, *LPDPMSG_DELETEGROUPFROMGROUP;
+
+typedef struct tagDPMSG_SETPLAYERORGROUPDATA
+{
+   DWORD   dwType;       /* Use message type as described above */
+   DWORD   dwPlayerType; /* Use DPPLAYERTYPE_GROUP or DPPLAYERTYPE_PLAYER */
+   DPID    dpId;         /* ID of player/group */
+   LPVOID  lpData;       /* Pointer to data */
+   DWORD   dwDataSize;   /* Size of data */
+} DPMSG_SETPLAYERORGROUPDATA, *LPDPMSG_SETPLAYERORGROUPDATA;
+
+typedef struct tagDPMSG_SETPLAYERORGROUPNAME
+{
+   DWORD  dwType;       /* Use message type as described above */
+   DWORD  dwPlayerType; /* Use DPPLAYERTYPE_GROUP or DPPLAYERTYPE_PLAYER */
+   DPID   dpId;         /* ID of player/group */
+   DPNAME dpnName;      /* New name */
+} DPMSG_SETPLAYERORGROUPNAME, *LPDPMSG_SETPLAYERORGROUPNAME;
+
+typedef struct tagDPMSG_SETSESSIONDESC
+{
+   DWORD           dwType; /* Use message type as described above */
+   DPSESSIONDESC2  dpDesc; /* New session desc */
+} DPMSG_SETSESSIONDESC, *LPDPMSG_SETSESSIONDESC;
+
+typedef struct tagDPMSG_SECUREMESSAGE
+{
+   DWORD   dwType;     /* Use message type as described above */
+   DWORD   dwFlags;    /* Signed/Encrypted */
+   DPID    dpIdFrom;   /* ID of from player */
+   LPVOID  lpData;     /* Message sent */
+   DWORD   dwDataSize; /* Size of message */
+} DPMSG_SECUREMESSAGE, *LPDPMSG_SECUREMESSAGE;
+
+typedef struct tagDPMSG_STARTSESSION
+{
+   DWORD            dwType; /* Use message type as described above */
+   LPDPLCONNECTION  lpConn; /* DPLCONNECTION structure */
+} DPMSG_STARTSESSION, *LPDPMSG_STARTSESSION;
+
+typedef struct tagDPMSG_CHAT
+{
+   DWORD     dwType;       /* Use message type as described above */
+   DWORD     dwFlags;      /* Message flags */
+   DPID      idFromPlayer; /* ID of sender */
+   DPID      idToPlayer;   /* ID of who msg is for */
+   DPID      idToGroup;    /* ID of what group msg is for */
+   LPDPCHAT  lpChat;       /* Chat message */
+} DPMSG_CHAT, *LPDPMSG_CHAT;
+
+typedef struct tagDPMSG_SETGROUPOWNER
+{
+   DWORD  dwType;     /* Use message type as described above */
+   DPID   idGroup;    /* Group ID */
+   DPID   idNewOwner; /* ID of player who now owns group */
+   DPID   idOldOwner; /* ID of player who used to own group */
+} DPMSG_SETGROUPOWNER, *LPDPMSG_SETGROUPOWNER;
+
+typedef struct
+{
+   DWORD    dwType;      /* Use message type as described above */
+   DPID     idFrom;      /* ID from */
+   DPID     idTo;        /* ID to */
+   DWORD    dwFlags;
+   DWORD    dwPriority;
+   DWORD    dwTimeout;
+   LPVOID   lpvContext;
+   DWORD    dwMsgID;
+   HRESULT  hr;
+   DWORD    dwSendTime;  /* When sent ? */
+} DPMSG_SENDCOMPLETE, *LPDPMSG_SENDCOMPLETE;
+
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif /* __WINE_DPLAY_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dplay8.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dplay8.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dplay8.h	(revision 16410)
@@ -0,0 +1,1001 @@
+/*
+ * Copyright (C) 2003-2005 Raphael Junqueira
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DPLAY8_H
+#define __WINE_DPLAY8_H
+
+#include <ole2.h>
+#include <dpaddr.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+
+typedef HRESULT (WINAPI *PFNDPNMESSAGEHANDLER)(PVOID, DWORD, PVOID);
+typedef DWORD	DPNID, *PDPNID;
+typedef	DWORD	DPNHANDLE, *PDPNHANDLE;
+
+/*****************************************************************************
+ * DirectPlay8 Message Id
+ */
+#define	DPN_MSGID_OFFSET                        0xFFFF0000
+#define DPN_MSGID_ADD_PLAYER_TO_GROUP           (DPN_MSGID_OFFSET | 0x0001)
+#define DPN_MSGID_APPLICATION_DESC              (DPN_MSGID_OFFSET | 0x0002)
+#define DPN_MSGID_ASYNC_OP_COMPLETE             (DPN_MSGID_OFFSET | 0x0003)
+#define DPN_MSGID_CLIENT_INFO                   (DPN_MSGID_OFFSET | 0x0004)
+#define DPN_MSGID_CONNECT_COMPLETE              (DPN_MSGID_OFFSET | 0x0005)
+#define DPN_MSGID_CREATE_GROUP                  (DPN_MSGID_OFFSET | 0x0006)
+#define DPN_MSGID_CREATE_PLAYER                 (DPN_MSGID_OFFSET | 0x0007)
+#define DPN_MSGID_DESTROY_GROUP                 (DPN_MSGID_OFFSET | 0x0008)
+#define DPN_MSGID_DESTROY_PLAYER                (DPN_MSGID_OFFSET | 0x0009)
+#define DPN_MSGID_ENUM_HOSTS_QUERY              (DPN_MSGID_OFFSET | 0x000A)
+#define DPN_MSGID_ENUM_HOSTS_RESPONSE           (DPN_MSGID_OFFSET | 0x000B)
+#define DPN_MSGID_GROUP_INFO                    (DPN_MSGID_OFFSET | 0x000C)
+#define DPN_MSGID_HOST_MIGRATE                  (DPN_MSGID_OFFSET | 0x000D)
+#define DPN_MSGID_INDICATE_CONNECT              (DPN_MSGID_OFFSET | 0x000E)
+#define DPN_MSGID_INDICATED_CONNECT_ABORTED     (DPN_MSGID_OFFSET | 0x000F)
+#define DPN_MSGID_PEER_INFO                     (DPN_MSGID_OFFSET | 0x0010)
+#define DPN_MSGID_RECEIVE                       (DPN_MSGID_OFFSET | 0x0011)
+#define DPN_MSGID_REMOVE_PLAYER_FROM_GROUP      (DPN_MSGID_OFFSET | 0x0012)
+#define	DPN_MSGID_RETURN_BUFFER                 (DPN_MSGID_OFFSET | 0x0013)
+#define DPN_MSGID_SEND_COMPLETE                 (DPN_MSGID_OFFSET | 0x0014)
+#define DPN_MSGID_SERVER_INFO                   (DPN_MSGID_OFFSET | 0x0015)
+#define	DPN_MSGID_TERMINATE_SESSION             (DPN_MSGID_OFFSET | 0x0016)
+#define DPN_MSGID_CREATE_THREAD                 (DPN_MSGID_OFFSET | 0x0017)
+#define DPN_MSGID_DESTROY_THREAD                (DPN_MSGID_OFFSET | 0x0018)
+#define DPN_MSGID_NAT_RESOLVER_QUERY            (DPN_MSGID_OFFSET | 0x0101)
+
+/*****************************************************************************
+ * DirectPlay8 Errors
+ */
+#define _DPN_FACILITY_CODE              0x015
+#define _DPNHRESULT_BASE                0x8000
+#define MAKE_DPNHRESULT(code)           MAKE_HRESULT(1, _DPN_FACILITY_CODE, (code + _DPNHRESULT_BASE))
+
+#define DPNSUCCESS_EQUAL                MAKE_HRESULT(0, _DPN_FACILITY_CODE, (0x05 + _DPNHRESULT_BASE))
+#define DPNSUCCESS_NOTEQUAL             MAKE_HRESULT(0, _DPN_FACILITY_CODE, (0x0A + _DPNHRESULT_BASE))
+#define DPNSUCCESS_PENDING              MAKE_HRESULT(0, _DPN_FACILITY_CODE, (0x0E + _DPNHRESULT_BASE))
+
+#define DPN_OK                          S_OK
+#define DPNERR_GENERIC                  E_FAIL
+#define DPNERR_INVALIDPARAM             E_INVALIDARG
+#define DPNERR_UNSUPPORTED              E_NOTIMPL
+#define DPNERR_NOINTERFACE              E_NOINTERFACE
+#define DPNERR_OUTOFMEMORY              E_OUTOFMEMORY
+#define DPNERR_INVALIDPOINTER           E_POINTER
+#define DPNERR_PENDING                  DPNSUCCESS_PENDING
+#define DPNERR_ABORTED                  MAKE_DPNHRESULT(0x030)
+#define DPNERR_ADDRESSING               MAKE_DPNHRESULT(0x040)
+#define DPNERR_ALREADYCLOSING           MAKE_DPNHRESULT(0x050)
+#define DPNERR_ALREADYCONNECTED         MAKE_DPNHRESULT(0x060)
+#define DPNERR_ALREADYDISCONNECTING     MAKE_DPNHRESULT(0x070)
+#define DPNERR_ALREADYINITIALIZED       MAKE_DPNHRESULT(0x080)
+#define DPNERR_ALREADYREGISTERED        MAKE_DPNHRESULT(0x090)
+#define DPNERR_BUFFERTOOSMALL           MAKE_DPNHRESULT(0x100)
+#define DPNERR_CANNOTCANCEL             MAKE_DPNHRESULT(0x110)
+#define DPNERR_CANTCREATEGROUP          MAKE_DPNHRESULT(0x120)
+#define DPNERR_CANTCREATEPLAYER         MAKE_DPNHRESULT(0x130)
+#define DPNERR_CANTLAUNCHAPPLICATION    MAKE_DPNHRESULT(0x140)
+#define DPNERR_CONNECTING               MAKE_DPNHRESULT(0x150)
+#define DPNERR_CONNECTIONLOST           MAKE_DPNHRESULT(0x160)
+#define DPNERR_CONVERSION               MAKE_DPNHRESULT(0x170)
+#define DPNERR_DATATOOLARGE             MAKE_DPNHRESULT(0x175)
+#define DPNERR_DOESNOTEXIST             MAKE_DPNHRESULT(0x180)
+#define DPNERR_DPNSVRNOTAVAILABLE       MAKE_DPNHRESULT(0x185)
+#define DPNERR_DUPLICATECOMMAND         MAKE_DPNHRESULT(0x190)
+#define DPNERR_ENDPOINTNOTRECEIVING     MAKE_DPNHRESULT(0x200)
+#define DPNERR_ENUMQUERYTOOLARGE        MAKE_DPNHRESULT(0x210)
+#define DPNERR_ENUMRESPONSETOOLARGE     MAKE_DPNHRESULT(0x220)
+#define DPNERR_EXCEPTION                MAKE_DPNHRESULT(0x230)
+#define DPNERR_GROUPNOTEMPTY            MAKE_DPNHRESULT(0x240)
+#define DPNERR_HOSTING                  MAKE_DPNHRESULT(0x250)
+#define DPNERR_HOSTREJECTEDCONNECTION   MAKE_DPNHRESULT(0x260)
+#define DPNERR_HOSTTERMINATEDSESSION    MAKE_DPNHRESULT(0x270)
+#define DPNERR_INCOMPLETEADDRESS        MAKE_DPNHRESULT(0x280)
+#define DPNERR_INVALIDADDRESSFORMAT     MAKE_DPNHRESULT(0x290)
+#define DPNERR_INVALIDAPPLICATION       MAKE_DPNHRESULT(0x300)
+#define DPNERR_INVALIDCOMMAND           MAKE_DPNHRESULT(0x310)
+#define DPNERR_INVALIDDEVICEADDRESS     MAKE_DPNHRESULT(0x320)
+#define DPNERR_INVALIDENDPOINT          MAKE_DPNHRESULT(0x330)
+#define DPNERR_INVALIDFLAGS             MAKE_DPNHRESULT(0x340)
+#define DPNERR_INVALIDGROUP             MAKE_DPNHRESULT(0x350)
+#define DPNERR_INVALIDHANDLE            MAKE_DPNHRESULT(0x360)
+#define DPNERR_INVALIDHOSTADDRESS       MAKE_DPNHRESULT(0x370)
+#define DPNERR_INVALIDINSTANCE          MAKE_DPNHRESULT(0x380)
+#define DPNERR_INVALIDINTERFACE         MAKE_DPNHRESULT(0x390)
+#define DPNERR_INVALIDOBJECT            MAKE_DPNHRESULT(0x400)
+#define DPNERR_INVALIDPASSWORD          MAKE_DPNHRESULT(0x410)
+#define DPNERR_INVALIDPLAYER            MAKE_DPNHRESULT(0x420)
+#define DPNERR_INVALIDPRIORITY          MAKE_DPNHRESULT(0x430)
+#define DPNERR_INVALIDSTRING            MAKE_DPNHRESULT(0x440)
+#define DPNERR_INVALIDURL               MAKE_DPNHRESULT(0x450)
+#define DPNERR_INVALIDVERSION           MAKE_DPNHRESULT(0x460)
+#define DPNERR_NOCAPS                   MAKE_DPNHRESULT(0x470)
+#define DPNERR_NOCONNECTION             MAKE_DPNHRESULT(0x480)
+#define DPNERR_NOHOSTPLAYER             MAKE_DPNHRESULT(0x490)
+#define DPNERR_NOMOREADDRESSCOMPONENTS  MAKE_DPNHRESULT(0x500)
+#define DPNERR_NORESPONSE               MAKE_DPNHRESULT(0x510)
+#define DPNERR_NOTALLOWED               MAKE_DPNHRESULT(0x520)
+#define DPNERR_NOTHOST                  MAKE_DPNHRESULT(0x530)
+#define DPNERR_NOTREADY                 MAKE_DPNHRESULT(0x540)
+#define DPNERR_NOTREGISTERED            MAKE_DPNHRESULT(0x550)
+#define DPNERR_PLAYERALREADYINGROUP     MAKE_DPNHRESULT(0x560)
+#define DPNERR_PLAYERLOST               MAKE_DPNHRESULT(0x570)
+#define DPNERR_PLAYERNOTINGROUP         MAKE_DPNHRESULT(0x580)
+#define DPNERR_PLAYERNOTREACHABLE       MAKE_DPNHRESULT(0x590)
+#define DPNERR_SENDTOOLARGE             MAKE_DPNHRESULT(0x600)
+#define DPNERR_SESSIONFULL              MAKE_DPNHRESULT(0x610)
+#define DPNERR_TABLEFULL                MAKE_DPNHRESULT(0x620)
+#define DPNERR_TIMEDOUT                 MAKE_DPNHRESULT(0x630)
+#define DPNERR_UNINITIALIZED            MAKE_DPNHRESULT(0x640)
+#define DPNERR_USERCANCEL               MAKE_DPNHRESULT(0x650)
+
+/*****************************************************************************
+ * DirectPlay8 defines
+ */
+#define DPNID_ALL_PLAYERS_GROUP                              0
+#define DPNDESTROYGROUPREASON_NORMAL                    0x0001
+#define DPNDESTROYGROUPREASON_AUTODESTRUCTED            0x0002
+#define DPNDESTROYGROUPREASON_SESSIONTERMINATED         0x0003
+#define DPNDESTROYPLAYERREASON_NORMAL                   0x0001
+#define DPNDESTROYPLAYERREASON_CONNECTIONLOST           0x0002
+#define DPNDESTROYPLAYERREASON_SESSIONTERMINATED        0x0003
+#define DPNDESTROYPLAYERREASON_HOSTDESTROYEDPLAYER      0x0004
+#define DPN_MAX_APPDESC_RESERVEDDATA_SIZE                   64
+
+#define DPNOP_SYNC                                  0x80000000
+#define DPNADDPLAYERTOGROUP_SYNC                    DPNOP_SYNC
+#define DPNCANCEL_CONNECT                               0x0001
+#define DPNCANCEL_ENUM                                  0x0002
+#define DPNCANCEL_SEND                                  0x0004
+#define DPNCANCEL_ALL_OPERATIONS                        0x8000
+#define DPNCANCEL_PLAYER_SENDS                      0x80000000
+#define DPNCANCEL_PLAYER_SENDS_PRIORITY_HIGH        (DPNCANCEL_PLAYER_SENDS | 0x00010000)
+#define DPNCANCEL_PLAYER_SENDS_PRIORITY_NORMAL      (DPNCANCEL_PLAYER_SENDS | 0x00020000)
+#define DPNCANCEL_PLAYER_SENDS_PRIORITY_LOW         (DPNCANCEL_PLAYER_SENDS | 0x00040000)
+#define DPNCLOSE_IMMEDIATE                          0x00000001
+#define DPNCONNECT_SYNC                             DPNOP_SYNC
+#define DPNCONNECT_OKTOQUERYFORADDRESSING               0x0001
+#define DPNCREATEGROUP_SYNC                         DPNOP_SYNC
+#define DPNDESTROYGROUP_SYNC                        DPNOP_SYNC
+#define DPNENUM_PLAYERS                                 0x0001
+#define DPNENUM_GROUPS                                  0x0010
+#define DPNENUMHOSTS_SYNC                           DPNOP_SYNC
+#define DPNENUMHOSTS_OKTOQUERYFORADDRESSING             0x0001
+#define DPNENUMHOSTS_NOBROADCASTFALLBACK                0x0002
+#define DPNENUMSERVICEPROVIDERS_ALL                     0x0001
+#define DPNGETLOCALHOSTADDRESSES_COMBINED               0x0001
+#define DPNGETSENDQUEUEINFO_PRIORITY_NORMAL             0x0001
+#define DPNGETSENDQUEUEINFO_PRIORITY_HIGH               0x0002
+#define DPNGETSENDQUEUEINFO_PRIORITY_LOW                0x0004
+#define DPNGROUP_AUTODESTRUCT                           0x0001
+#define DPNHOST_OKTOQUERYFORADDRESSING                  0x0001
+#define DPNINFO_NAME                                    0x0001
+#define DPNINFO_DATA                                    0x0002
+#define DPNINITIALIZE_DISABLEPARAMVAL                   0x0001
+#define DPNINITIALIZE_HINT_LANSESSION                   0x0002
+#define DPNINITIALIZE_DISABLELINKTUNING                 0x0004
+#define DPNLOBBY_REGISTER                               0x0001
+#define DPNLOBBY_UNREGISTER                             0x0002
+#define DPNPLAYER_LOCAL                                 0x0002
+#define DPNPLAYER_HOST                                  0x0004
+#define DPNRECEIVE_GUARANTEED                           0x0001
+#define DPNRECEIVE_COALESCED                            0x0002
+#define DPNREMOVEPLAYERFROMGROUP_SYNC               DPNOP_SYNC
+#define DPNSEND_SYNC                                DPNOP_SYNC
+#define DPNSEND_NOCOPY                                  0x0001
+#define DPNSEND_NOCOMPLETE                              0x0002
+#define DPNSEND_COMPLETEONPROCESS                       0x0004
+#define DPNSEND_GUARANTEED                              0x0008
+#define DPNSEND_NONSEQUENTIAL                           0x0010
+#define DPNSEND_NOLOOPBACK                              0x0020
+#define DPNSEND_PRIORITY_LOW                            0x0040
+#define DPNSEND_PRIORITY_HIGH                           0x0080
+#define DPNSEND_COALESCE                                0x0100
+#define DPNSENDCOMPLETE_GUARANTEED                      0x0001
+#define DPNSENDCOMPLETE_COALESCED                       0x0002
+#define DPNSESSION_CLIENT_SERVER                        0x0001
+#define DPNSESSION_MIGRATE_HOST                         0x0004
+#define DPNSESSION_NODPNSVR                             0x0040
+#define DPNSESSION_REQUIREPASSWORD                      0x0080
+#define DPNSESSION_NOENUMS                              0x0100
+#define DPNSESSION_FAST_SIGNED                          0x0200
+#define DPNSESSION_FULL_SIGNED                          0x0400
+#define DPNSETCLIENTINFO_SYNC                       DPNOP_SYNC
+#define DPNSETGROUPINFO_SYNC                        DPNOP_SYNC
+#define DPNSETPEERINFO_SYNC                         DPNOP_SYNC
+#define DPNSETSERVERINFO_SYNC                       DPNOP_SYNC
+#define DPNSPCAPS_SUPPORTSDPNSRV                        0x0001
+#define DPNSPCAPS_SUPPORTSBROADCAST                     0x0002
+#define DPNSPCAPS_SUPPORTSALLADAPTERS                   0x0004
+#define DPNSPCAPS_SUPPORTSTHREADPOOL			0x0008
+#define DPNSPCAPS_NETWORKSIMULATOR                      0x0010
+#define DPNSPINFO_NETWORKSIMULATORDEVICE                0x0001
+
+
+/*****************************************************************************
+ * DirectPlay8 structures Typedefs
+ */
+typedef struct _DPN_APPLICATION_DESC {
+  DWORD   dwSize;
+  DWORD   dwFlags;
+  GUID    guidInstance;
+  GUID	  guidApplication;
+  DWORD   dwMaxPlayers;
+  DWORD   dwCurrentPlayers;
+  WCHAR*  pwszSessionName;
+  WCHAR*  pwszPassword;
+  PVOID   pvReservedData;
+  DWORD   dwReservedDataSize;
+  PVOID   pvApplicationReservedData;
+  DWORD   dwApplicationReservedDataSize;
+} DPN_APPLICATION_DESC, *PDPN_APPLICATION_DESC;
+
+typedef struct _BUFFERDESC {
+  DWORD	  dwBufferSize;		
+  BYTE*   pBufferData;		
+} BUFFERDESC, DPN_BUFFER_DESC, *PDPN_BUFFER_DESC, *PBUFFERDESC;
+
+typedef struct _DPN_CAPS {
+  DWORD   dwSize;
+  DWORD   dwFlags;
+  DWORD   dwConnectTimeout;
+  DWORD   dwConnectRetries;
+  DWORD   dwTimeoutUntilKeepAlive;
+} DPN_CAPS, *PDPN_CAPS;
+
+typedef struct	_DPN_CAPS_EX {
+  DWORD   dwSize;
+  DWORD   dwFlags;
+  DWORD   dwConnectTimeout;
+  DWORD   dwConnectRetries;
+  DWORD   dwTimeoutUntilKeepAlive;
+  DWORD   dwMaxRecvMsgSize;
+  DWORD   dwNumSendRetries;
+  DWORD   dwMaxSendRetryInterval;
+  DWORD   dwDropThresholdRate;
+  DWORD   dwThrottleRate;
+  DWORD   dwNumHardDisconnectSends;
+  DWORD   dwMaxHardDisconnectPeriod;
+} DPN_CAPS_EX, *PDPN_CAPS_EX;
+
+typedef struct _DPN_CONNECTION_INFO {
+  DWORD   dwSize;
+  DWORD   dwRoundTripLatencyMS;
+  DWORD   dwThroughputBPS;
+  DWORD   dwPeakThroughputBPS;
+  DWORD   dwBytesSentGuaranteed;
+  DWORD   dwPacketsSentGuaranteed;
+  DWORD   dwBytesSentNonGuaranteed;
+  DWORD   dwPacketsSentNonGuaranteed;
+  DWORD   dwBytesRetried;
+  DWORD   dwPacketsRetried;
+  DWORD   dwBytesDropped;
+  DWORD   dwPacketsDropped;
+  DWORD   dwMessagesTransmittedHighPriority;
+  DWORD   dwMessagesTimedOutHighPriority;
+  DWORD   dwMessagesTransmittedNormalPriority;
+  DWORD   dwMessagesTimedOutNormalPriority;
+  DWORD   dwMessagesTransmittedLowPriority;
+  DWORD   dwMessagesTimedOutLowPriority;
+  DWORD   dwBytesReceivedGuaranteed;
+  DWORD   dwPacketsReceivedGuaranteed;
+  DWORD   dwBytesReceivedNonGuaranteed;
+  DWORD   dwPacketsReceivedNonGuaranteed;
+  DWORD   dwMessagesReceived;
+} DPN_CONNECTION_INFO, *PDPN_CONNECTION_INFO;
+
+typedef struct _DPN_GROUP_INFO {
+  DWORD	  dwSize;
+  DWORD	  dwInfoFlags;
+  PWSTR	  pwszName;
+  PVOID	  pvData;
+  DWORD	  dwDataSize;
+  DWORD	  dwGroupFlags;
+} DPN_GROUP_INFO, *PDPN_GROUP_INFO;
+
+typedef struct _DPN_PLAYER_INFO {
+  DWORD	  dwSize;
+  DWORD	  dwInfoFlags;
+  PWSTR	  pwszName;
+  PVOID	  pvData;
+  DWORD	  dwDataSize;
+  DWORD	  dwPlayerFlags;
+} DPN_PLAYER_INFO, *PDPN_PLAYER_INFO;
+
+typedef struct _DPN_SERVICE_PROVIDER_INFO {
+  DWORD   dwFlags;
+  GUID    guid;
+  WCHAR*  pwszName;
+  PVOID   pvReserved;	
+  DWORD   dwReserved;
+} DPN_SERVICE_PROVIDER_INFO, *PDPN_SERVICE_PROVIDER_INFO;
+
+typedef struct _DPN_SP_CAPS {
+  DWORD   dwSize;
+  DWORD   dwFlags;
+  DWORD   dwNumThreads;
+  DWORD	  dwDefaultEnumCount;
+  DWORD	  dwDefaultEnumRetryInterval;
+  DWORD	  dwDefaultEnumTimeout;
+  DWORD	  dwMaxEnumPayloadSize;
+  DWORD	  dwBuffersPerThread;
+  DWORD	  dwSystemBufferSize;
+} DPN_SP_CAPS, *PDPN_SP_CAPS;
+
+typedef struct _DPN_SECURITY_CREDENTIALS  DPN_SECURITY_CREDENTIALS, *PDPN_SECURITY_CREDENTIALS;
+typedef struct _DPN_SECURITY_DESC         DPN_SECURITY_DESC, *PDPN_SECURITY_DESC;
+
+typedef struct _DPNMSG_ADD_PLAYER_TO_GROUP {
+  DWORD	  dwSize;
+  DPNID	  dpnidGroup;
+  PVOID	  pvGroupContext;
+  DPNID	  dpnidPlayer;
+  PVOID	  pvPlayerContext;
+} DPNMSG_ADD_PLAYER_TO_GROUP, *PDPNMSG_ADD_PLAYER_TO_GROUP;
+
+typedef struct _DPNMSG_ASYNC_OP_COMPLETE {
+  DWORD      dwSize;
+  DPNHANDLE  hAsyncOp;
+  PVOID      pvUserContext;
+  HRESULT    hResultCode;
+} DPNMSG_ASYNC_OP_COMPLETE, *PDPNMSG_ASYNC_OP_COMPLETE;
+
+typedef struct _DPNMSG_CLIENT_INFO {
+  DWORD	  dwSize;
+  DPNID	  dpnidClient;
+  PVOID	  pvPlayerContext;
+} DPNMSG_CLIENT_INFO, *PDPNMSG_CLIENT_INFO;
+
+typedef struct _DPNMSG_CONNECT_COMPLETE {
+  DWORD      dwSize;
+  DPNHANDLE  hAsyncOp;
+  PVOID      pvUserContext;
+  HRESULT    hResultCode;
+  PVOID      pvApplicationReplyData;
+  DWORD      dwApplicationReplyDataSize;
+  /** DirectX 9 */
+  DPNID      dpnidLocal;
+} DPNMSG_CONNECT_COMPLETE, *PDPNMSG_CONNECT_COMPLETE;
+
+typedef struct _DPNMSG_CREATE_GROUP {
+  DWORD   dwSize;
+  DPNID   dpnidGroup;
+  DPNID   dpnidOwner;
+  PVOID   pvGroupContext;
+  /** DirectX 9 */
+  PVOID   pvOwnerContext;	
+} DPNMSG_CREATE_GROUP, *PDPNMSG_CREATE_GROUP;
+
+typedef struct _DPNMSG_CREATE_PLAYER {
+  DWORD   dwSize;
+  DPNID   dpnidPlayer;
+  PVOID   pvPlayerContext;
+} DPNMSG_CREATE_PLAYER, *PDPNMSG_CREATE_PLAYER;
+
+typedef struct _DPNMSG_DESTROY_GROUP {
+  DWORD   dwSize;
+  DPNID   dpnidGroup;
+  PVOID   pvGroupContext;
+  DWORD   dwReason;
+} DPNMSG_DESTROY_GROUP, *PDPNMSG_DESTROY_GROUP;
+
+typedef struct _DPNMSG_DESTROY_PLAYER {
+  DWORD  dwSize;
+  DPNID  dpnidPlayer;
+  PVOID  pvPlayerContext;
+  DWORD  dwReason;
+} DPNMSG_DESTROY_PLAYER, *PDPNMSG_DESTROY_PLAYER;
+
+typedef	struct _DPNMSG_ENUM_HOSTS_QUERY {
+  DWORD                 dwSize;
+  IDirectPlay8Address*  pAddressSender;
+  IDirectPlay8Address*  pAddressDevice;
+  PVOID                 pvReceivedData;
+  DWORD                 dwReceivedDataSize;
+  DWORD                 dwMaxResponseDataSize;
+  PVOID                 pvResponseData;
+  DWORD                 dwResponseDataSize;
+  PVOID                 pvResponseContext;
+} DPNMSG_ENUM_HOSTS_QUERY, *PDPNMSG_ENUM_HOSTS_QUERY;
+
+typedef	struct _DPNMSG_ENUM_HOSTS_RESPONSE {
+  DWORD                        dwSize;
+  IDirectPlay8Address*         pAddressSender;
+  IDirectPlay8Address*         pAddressDevice;
+  const DPN_APPLICATION_DESC*  pApplicationDescription;
+  PVOID                        pvResponseData;
+  DWORD                        dwResponseDataSize;
+  PVOID                        pvUserContext;
+  DWORD                        dwRoundTripLatencyMS;
+} DPNMSG_ENUM_HOSTS_RESPONSE, *PDPNMSG_ENUM_HOSTS_RESPONSE;
+
+typedef struct _DPNMSG_GROUP_INFO {
+  DWORD   dwSize;
+  DPNID   dpnidGroup;
+  PVOID   pvGroupContext;
+} DPNMSG_GROUP_INFO, *PDPNMSG_GROUP_INFO;
+
+typedef struct _DPNMSG_HOST_MIGRATE {
+  DWORD   dwSize;
+  DPNID   dpnidNewHost;
+  PVOID   pvPlayerContext;
+} DPNMSG_HOST_MIGRATE, *PDPNMSG_HOST_MIGRATE;
+
+typedef struct _DPNMSG_INDICATE_CONNECT {
+  DWORD                 dwSize;
+  PVOID                 pvUserConnectData;
+  DWORD                 dwUserConnectDataSize;
+  PVOID                 pvReplyData;
+  DWORD                 dwReplyDataSize;
+  PVOID                 pvReplyContext;
+  PVOID                 pvPlayerContext;
+  IDirectPlay8Address*  pAddressPlayer;
+  IDirectPlay8Address*  pAddressDevice;
+} DPNMSG_INDICATE_CONNECT, *PDPNMSG_INDICATE_CONNECT;
+
+typedef struct _DPNMSG_INDICATED_CONNECT_ABORTED {
+  DWORD   dwSize;
+  PVOID   pvPlayerContext;
+} DPNMSG_INDICATED_CONNECT_ABORTED, *PDPNMSG_INDICATED_CONNECT_ABORTED;
+
+typedef struct _DPNMSG_PEER_INFO {
+  DWORD   dwSize;
+  DPNID   dpnidPeer;
+  PVOID   pvPlayerContext;
+} DPNMSG_PEER_INFO, *PDPNMSG_PEER_INFO;
+
+typedef struct _DPNMSG_RECEIVE {
+  DWORD      dwSize;
+  DPNID      dpnidSender;
+  PVOID      pvPlayerContext;
+  PBYTE      pReceiveData;
+  DWORD      dwReceiveDataSize;
+  DPNHANDLE  hBufferHandle;
+  /** DirectX 9 */
+  DWORD      dwReceiveFlags;	
+} DPNMSG_RECEIVE, *PDPNMSG_RECEIVE;
+
+typedef struct _DPNMSG_REMOVE_PLAYER_FROM_GROUP {
+  DWORD   dwSize;
+  DPNID   dpnidGroup;
+  PVOID   pvGroupContext;
+  DPNID   dpnidPlayer;
+  PVOID   pvPlayerContext;
+} DPNMSG_REMOVE_PLAYER_FROM_GROUP, *PDPNMSG_REMOVE_PLAYER_FROM_GROUP;
+
+typedef struct _DPNMSG_RETURN_BUFFER {
+  DWORD     dwSize;
+  HRESULT   hResultCode;
+  PVOID     pvBuffer;
+  PVOID     pvUserContext;
+} DPNMSG_RETURN_BUFFER, *PDPNMSG_RETURN_BUFFER;
+
+typedef struct _DPNMSG_SEND_COMPLETE {
+  DWORD       dwSize;
+  DPNHANDLE   hAsyncOp;
+  PVOID       pvUserContext;
+  HRESULT     hResultCode;
+  DWORD       dwSendTime;
+  /** DirectX 9 */
+  DWORD            dwFirstFrameRTT;
+  DWORD            dwFirstFrameRetryCount;
+  DWORD            dwSendCompleteFlags;
+  DPN_BUFFER_DESC* pBuffers;
+  DWORD            dwNumBuffers;
+} DPNMSG_SEND_COMPLETE, *PDPNMSG_SEND_COMPLETE;
+
+typedef struct _DPNMSG_SERVER_INFO {
+  DWORD   dwSize;
+  DPNID   dpnidServer;
+  PVOID   pvPlayerContext;
+} DPNMSG_SERVER_INFO, *PDPNMSG_SERVER_INFO;
+
+typedef struct _DPNMSG_TERMINATE_SESSION {
+  DWORD    dwSize;
+  HRESULT  hResultCode;
+  PVOID    pvTerminateData;
+  DWORD    dwTerminateDataSize;
+} DPNMSG_TERMINATE_SESSION, *PDPNMSG_TERMINATE_SESSION;
+
+typedef struct _DPNMSG_CREATE_THREAD {
+  DWORD    dwSize;
+  DWORD    dwFlags;
+  DWORD    dwProcessorNum;
+  PVOID    pvUserContext;
+} DPNMSG_CREATE_THREAD, *PDPNMSG_CREATE_THREAD;
+
+typedef struct _DPNMSG_DESTROY_THREAD {
+  DWORD    dwSize;
+  DWORD    dwProcessorNum;
+  PVOID    pvUserContext;
+} DPNMSG_DESTROY_THREAD, *PDPNMSG_DESTROY_THREAD;
+
+typedef	struct _DPNMSG_NAT_RESOLVER_QUERY {
+  DWORD    dwSize;
+  IDirectPlay8Address* pAddressSender;
+  IDirectPlay8Address* pAddressDevice;
+  WCHAR*   pwszUserString;
+} DPNMSG_NAT_RESOLVER_QUERY, *PDPNMSG_NAT_RESOLVER_QUERY;
+
+/*****************************************************************************
+ * Predeclare the interfaces
+ */
+DEFINE_GUID(CLSID_DirectPlay8Peer,        0x286f484d,0x375e,0x4458,0xa2,0x72,0xb1,0x38,0xe2,0xf8,0x0a,0x6a);
+DEFINE_GUID(CLSID_DirectPlay8Client,      0x743f1dc6,0x5aba,0x429f,0x8b,0xdf,0xc5,0x4d,0x03,0x25,0x3d,0xc2);
+DEFINE_GUID(CLSID_DirectPlay8Server,      0xda825e1b,0x6830,0x43d7,0x83,0x5d,0x0b,0x5a,0xd8,0x29,0x56,0xa2);
+/** DirectX 9 */
+DEFINE_GUID(CLSID_DirectPlay8ThreadPool,  0xfc47060e,0x6153,0x4b34,0xb9,0x75,0x8e,0x41,0x21,0xeb,0x7f,0x3c);
+DEFINE_GUID(CLSID_DirectPlay8NATResolver, 0xe4c1d9a2,0xcbf7,0x48bd,0x9a,0x69,0x34,0xa5,0x5e,0x0d,0x89,0x41);
+
+DEFINE_GUID(IID_IDirectPlay8Peer,         0x5102dacf,0x241b,0x11d3,0xae,0xa7,0x0,0x60,0x97,0xb0,0x14,0x11);
+typedef struct IDirectPlay8Peer *PDIRECTPLAY8PEER;
+DEFINE_GUID(IID_IDirectPlay8Client,       0x5102dacd,0x241b,0x11d3,0xae,0xa7,0x0,0x60,0x97,0xb0,0x14,0x11);
+typedef struct IDirectPlay8Client *PDIRECTPLAY8CLIENT;
+DEFINE_GUID(IID_IDirectPlay8Server,       0x5102dace,0x241b,0x11d3,0xae,0xa7,0x0,0x60,0x97,0xb0,0x14,0x11);
+typedef struct IDirectPlay8Server *PDIRECTPLAY8SERVER;
+/** DirectX 9 */
+DEFINE_GUID(IID_IDirectPlay8ThreadPool,   0x0d22ee73,0x4a46,0x4a0d,0x89,0xb2,0x04,0x5b,0x4d,0x66,0x64,0x25);
+typedef	struct IDirectPlay8ThreadPool *PDIRECTPLAY8THREADPOOL;
+DEFINE_GUID(IID_IDirectPlay8NATResolver,  0xa9e213f2,0x9a60,0x486f,0xbf,0x3b,0x53,0x40,0x8b,0x6d,0x1c,0xbb);
+typedef	struct IDirectPlay8NATResolver *PDIRECTPLAY8NATRESOLVER;
+
+DEFINE_GUID(CLSID_DP8SP_IPX,               0x53934290,0x628d,0x11d2,0xae,0x0f,0x0,0x60,0x97,0xb0,0x14,0x11);
+DEFINE_GUID(CLSID_DP8SP_TCPIP,             0xebfe7ba0,0x628d,0x11d2,0xae,0x0f,0x0,0x60,0x97,0xb0,0x14,0x11);
+DEFINE_GUID(CLSID_DP8SP_SERIAL,            0x743b5d60,0x628d,0x11d2,0xae,0x0f,0x0,0x60,0x97,0xb0,0x14,0x11);
+DEFINE_GUID(CLSID_DP8SP_MODEM,             0x6d4a3650,0x628d,0x11d2,0xae,0x0f,0x0,0x60,0x97,0xb0,0x14,0x11);
+/** DirectX 9 */
+DEFINE_GUID(CLSID_DP8SP_BLUETOOTH,         0x995513af,0x3027,0x4b9a,0x95,0x6e,0xc7,0x72,0xb3,0xf7,0x80,0x06);
+
+typedef struct IDirectPlay8LobbiedApplication	*PIDirectPlay8LobbiedApplication, DNLOBBIEDAPPLICATION;
+
+
+/*****************************************************************************
+ * IDirectPlay8Client interface
+ */
+#define INTERFACE IDirectPlay8Client
+DECLARE_INTERFACE_(IDirectPlay8Client,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectPlay8Client methods ***/
+    STDMETHOD(Initialize)(THIS_ PVOID CONST pvUserContext, CONST PFNDPNMESSAGEHANDLER pfn, CONST DWORD dwFlags) PURE;
+    STDMETHOD(EnumServiceProviders)(THIS_ CONST GUID * CONST pguidServiceProvider, CONST GUID * CONST pguidApplication, DPN_SERVICE_PROVIDER_INFO * CONST pSPInfoBuffer, PDWORD CONST pcbEnumData, PDWORD CONST pcReturned, CONST DWORD dwFlags) PURE;
+    STDMETHOD(EnumHosts)(THIS_ PDPN_APPLICATION_DESC CONST pApplicationDesc,IDirectPlay8Address * CONST pAddrHost,IDirectPlay8Address * CONST pDeviceInfo, PVOID CONST pUserEnumData, CONST DWORD dwUserEnumDataSize, CONST DWORD dwEnumCount, CONST DWORD dwRetryInterval, CONST DWORD dwTimeOut, PVOID CONST pvUserContext, DPNHANDLE * CONST pAsyncHandle, CONST DWORD dwFlags) PURE;
+    STDMETHOD(CancelAsyncOperation)(THIS_ CONST DPNHANDLE hAsyncHandle, CONST DWORD dwFlags) PURE;
+    STDMETHOD(Connect)(THIS_ CONST DPN_APPLICATION_DESC * CONST pdnAppDesc,IDirectPlay8Address * CONST pHostAddr,IDirectPlay8Address * CONST pDeviceInfo, CONST DPN_SECURITY_DESC * CONST pdnSecurity, CONST DPN_SECURITY_CREDENTIALS * CONST pdnCredentials, CONST void * CONST pvUserConnectData, CONST DWORD dwUserConnectDataSize,void * CONST pvAsyncContext, DPNHANDLE * CONST phAsyncHandle, CONST DWORD dwFlags) PURE;
+    STDMETHOD(Send)(THIS_ CONST DPN_BUFFER_DESC * CONST prgBufferDesc, CONST DWORD cBufferDesc, CONST DWORD dwTimeOut, void * CONST pvAsyncContext, DPNHANDLE * CONST phAsyncHandle, CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetSendQueueInfo)(THIS_ DWORD * CONST pdwNumMsgs, DWORD * CONST pdwNumBytes, CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetApplicationDesc)(THIS_ DPN_APPLICATION_DESC * CONST pAppDescBuffer, DWORD * CONST pcbDataSize, CONST DWORD dwFlags) PURE;
+    STDMETHOD(SetClientInfo)(THIS_ CONST DPN_PLAYER_INFO * CONST pdpnPlayerInfo, PVOID CONST pvAsyncContext, DPNHANDLE * CONST phAsyncHandle, CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetServerInfo)(THIS_ DPN_PLAYER_INFO * CONST pdpnPlayerInfo, DWORD * CONST pdwSize, CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetServerAddress)(THIS_ IDirectPlay8Address ** CONST pAddress, CONST DWORD dwFlags) PURE;
+    STDMETHOD(Close)(THIS_ CONST DWORD dwFlags) PURE;
+    STDMETHOD(ReturnBuffer)(THIS_ CONST DPNHANDLE hBufferHandle, CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetCaps)(THIS_ DPN_CAPS * CONST pdpCaps, CONST DWORD dwFlags) PURE;
+    STDMETHOD(SetCaps)(THIS_ CONST DPN_CAPS * CONST pdpCaps, CONST DWORD dwFlags) PURE;
+    STDMETHOD(SetSPCaps)(THIS_ CONST GUID * CONST pguidSP, CONST DPN_SP_CAPS * CONST pdpspCaps, CONST DWORD dwFlags ) PURE;
+    STDMETHOD(GetSPCaps)(THIS_ CONST GUID * CONST pguidSP, DPN_SP_CAPS * CONST pdpspCaps, CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetConnectionInfo)(THIS_ DPN_CONNECTION_INFO * CONST pdpConnectionInfo, CONST DWORD dwFlags) PURE;
+    STDMETHOD(RegisterLobby)(THIS_ CONST DPNHANDLE dpnHandle, struct IDirectPlay8LobbiedApplication * CONST pIDP8LobbiedApplication, CONST DWORD dwFlags) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define	IDirectPlay8Client_QueryInterface(p,a,b)                (p)->lpVtbl->QueryInterface(p,a,b)
+#define	IDirectPlay8Client_AddRef(p)                            (p)->lpVtbl->AddRef(p)
+#define	IDirectPlay8Client_Release(p)                           (p)->lpVtbl->Release(p)
+/*** IDirectPlay8Client methods ***/
+#define	IDirectPlay8Client_Initialize(p,a,b,c)                  (p)->lpVtbl->Initialize(p,a,b,c)
+#define	IDirectPlay8Client_EnumServiceProviders(p,a,b,c,d,e,f)  (p)->lpVtbl->EnumServiceProviders(p,a,b,c,d,e,f)
+#define	IDirectPlay8Client_EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k)   (p)->lpVtbl->EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k)
+#define	IDirectPlay8Client_CancelAsyncOperation(p,a,b)          (p)->lpVtbl->CancelAsyncOperation(p,a,b)
+#define	IDirectPlay8Client_Connect(p,a,b,c,d,e,f,g,h,i,j)       (p)->lpVtbl->Connect(p,a,b,c,d,e,f,g,h,i,j)
+#define	IDirectPlay8Client_Send(p,a,b,c,d,e,f)                  (p)->lpVtbl->Send(p,a,b,c,d,e,f)
+#define	IDirectPlay8Client_GetSendQueueInfo(p,a,b,c)            (p)->lpVtbl->GetSendQueueInfo(p,a,b,c)
+#define	IDirectPlay8Client_GetApplicationDesc(p,a,b,c)          (p)->lpVtbl->GetApplicationDesc(p,a,b,c)
+#define	IDirectPlay8Client_SetClientInfo(p,a,b,c,d)             (p)->lpVtbl->SetClientInfo(p,a,b,c,d)
+#define	IDirectPlay8Client_GetServerInfo(p,a,b,c)               (p)->lpVtbl->GetServerInfo(p,a,b,c)
+#define	IDirectPlay8Client_GetServerAddress(p,a,b)              (p)->lpVtbl->GetServerAddress(p,a,b)
+#define	IDirectPlay8Client_Close(p,a)                           (p)->lpVtbl->Close(p,a)
+#define	IDirectPlay8Client_ReturnBuffer(p,a,b)                  (p)->lpVtbl->ReturnBuffer(p,a,b)
+#define	IDirectPlay8Client_GetCaps(p,a,b)                       (p)->lpVtbl->GetCaps(p,a,b)
+#define	IDirectPlay8Client_SetCaps(p,a,b)                       (p)->lpVtbl->SetCaps(p,a,b)
+#define	IDirectPlay8Client_SetSPCaps(p,a,b,c)                   (p)->lpVtbl->SetSPCaps(p,a,b,c)
+#define	IDirectPlay8Client_GetSPCaps(p,a,b,c)                   (p)->lpVtbl->GetSPCaps(p,a,b,c)
+#define	IDirectPlay8Client_GetConnectionInfo(p,a,b)             (p)->lpVtbl->GetConnectionInfo(p,a,b)
+#define	IDirectPlay8Client_RegisterLobby(p,a,b,c)               (p)->lpVtbl->RegisterLobby(p,a,b,c)
+#else
+/*** IUnknown methods ***/
+#define	IDirectPlay8Client_QueryInterface(p,a,b)                (p)->QueryInterface(a,b)
+#define	IDirectPlay8Client_AddRef(p)                            (p)->AddRef()
+#define	IDirectPlay8Client_Release(p)                           (p)->Release()
+/*** IDirectPlay8Client methods ***/
+#define	IDirectPlay8Client_Initialize(p,a,b,c)                  (p)->Initialize(a,b,c)
+#define	IDirectPlay8Client_EnumServiceProviders(p,a,b,c,d,e,f)  (p)->EnumServiceProviders(a,b,c,d,e,f)
+#define	IDirectPlay8Client_EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k)   (p)->EnumHosts(a,b,c,d,e,f,g,h,i,j,k)
+#define	IDirectPlay8Client_CancelAsyncOperation(p,a,b)          (p)->CancelAsyncOperation(a,b)
+#define	IDirectPlay8Client_Connect(p,a,b,c,d,e,f,g,h,i,j)       (p)->Connect(a,b,c,d,e,f,g,h,i,j)
+#define	IDirectPlay8Client_Send(p,a,b,c,d,e,f)                  (p)->Send(a,b,c,d,e,f)
+#define	IDirectPlay8Client_GetSendQueueInfo(p,a,b,c)            (p)->GetSendQueueInfo(a,b,c)
+#define	IDirectPlay8Client_GetApplicationDesc(p,a,b,c)          (p)->GetApplicationDesc(a,b,c)
+#define	IDirectPlay8Client_SetClientInfo(p,a,b,c,d)             (p)->SetClientInfo(a,b,c,d)
+#define	IDirectPlay8Client_GetServerInfo(p,a,b,c)               (p)->GetServerInfo(a,b,c)
+#define	IDirectPlay8Client_GetServerAddress(p,a,b)              (p)->GetServerAddress(a,b)
+#define	IDirectPlay8Client_Close(p,a)                           (p)->Close(a)
+#define	IDirectPlay8Client_ReturnBuffer(p,a,b)                  (p)->ReturnBuffer(a,b)
+#define	IDirectPlay8Client_GetCaps(p,a,b)                       (p)->GetCaps(a,b)
+#define	IDirectPlay8Client_SetCaps(p,a,b)                       (p)->SetCaps(a,b)
+#define	IDirectPlay8Client_SetSPCaps(p,a,b,c)                   (p)->SetSPCaps(a,b,c)
+#define	IDirectPlay8Client_GetSPCaps(p,a,b,c)                   (p)->GetSPCaps(a,b,c)
+#define	IDirectPlay8Client_GetConnectionInfo(p,a,b)             (p)->GetConnectionInfo(a,b)
+#define	IDirectPlay8Client_RegisterLobby(p,a,b,c)               (p)->RegisterLobby(a,b,c)
+#endif
+
+/*****************************************************************************
+ * IDirectPlay8Server interface
+ */
+#define INTERFACE IDirectPlay8Server
+DECLARE_INTERFACE_(IDirectPlay8Server,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectPlay8Server methods ***/
+    STDMETHOD(Initialize)(THIS_ PVOID CONST pvUserContext, CONST PFNDPNMESSAGEHANDLER pfn, CONST DWORD dwFlags) PURE;
+    STDMETHOD(EnumServiceProviders)(THIS_ CONST GUID * CONST pguidServiceProvider, CONST GUID * CONST pguidApplication, DPN_SERVICE_PROVIDER_INFO * CONST pSPInfoBuffer, PDWORD CONST pcbEnumData, PDWORD CONST pcReturned, CONST DWORD dwFlags) PURE;
+    STDMETHOD(CancelAsyncOperation)(THIS_ CONST DPNHANDLE hAsyncHandle, CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetSendQueueInfo)(THIS_ CONST DPNID dpnid, DWORD * CONST pdwNumMsgs, DWORD * CONST pdwNumBytes, CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetApplicationDesc)(THIS_ DPN_APPLICATION_DESC * CONST pAppDescBuffer, DWORD * CONST pcbDataSize, CONST DWORD dwFlags) PURE;
+    STDMETHOD(SetServerInfo)(THIS_ CONST DPN_PLAYER_INFO * CONST pdpnPlayerInfo, PVOID CONST pvAsyncContext, DPNHANDLE * CONST phAsyncHandle, CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetClientInfo)(THIS_ CONST DPNID dpnid, DPN_PLAYER_INFO * CONST pdpnPlayerInfo, DWORD * CONST pdwSize, CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetClientAddress)(THIS_ CONST DPNID dpnid, IDirectPlay8Address ** CONST pAddress, CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetLocalHostAddresses)(THIS_ IDirectPlay8Address ** CONST prgpAddress, DWORD * CONST pcAddress, CONST DWORD dwFlags) PURE;
+    STDMETHOD(SetApplicationDesc)(THIS_ CONST DPN_APPLICATION_DESC * CONST pad, CONST DWORD dwFlags) PURE;
+    STDMETHOD(Host)(THIS_ CONST DPN_APPLICATION_DESC * CONST pdnAppDesc, IDirectPlay8Address ** CONST prgpDeviceInfo, CONST DWORD cDeviceInfo, CONST DPN_SECURITY_DESC * CONST pdnSecurity, CONST DPN_SECURITY_CREDENTIALS * CONST pdnCredentials, void * CONST pvPlayerContext, CONST DWORD dwFlags) PURE;
+    STDMETHOD(SendTo)(THIS_ CONST DPNID dpnid, CONST DPN_BUFFER_DESC * CONST prgBufferDesc, CONST DWORD cBufferDesc, CONST DWORD dwTimeOut, void * CONST pvAsyncContext, DPNHANDLE * CONST phAsyncHandle, CONST DWORD dwFlags) PURE;
+    STDMETHOD(CreateGroup)(THIS_ CONST DPN_GROUP_INFO * CONST pdpnGroupInfo, void * CONST pvGroupContext, void * CONST pvAsyncContext, DPNHANDLE * CONST phAsyncHandle, CONST DWORD dwFlags) PURE;
+    STDMETHOD(DestroyGroup)(THIS_ CONST DPNID idGroup, PVOID CONST pvAsyncContext, DPNHANDLE * CONST phAsyncHandle, CONST DWORD dwFlags) PURE;
+    STDMETHOD(AddPlayerToGroup)(THIS_ CONST DPNID idGroup, CONST DPNID idClient, PVOID CONST pvAsyncContext, DPNHANDLE * CONST phAsyncHandle, CONST DWORD dwFlags) PURE;
+    STDMETHOD(RemovePlayerFromGroup)(THIS_ CONST DPNID idGroup, CONST DPNID idClient, PVOID CONST pvAsyncContext, DPNHANDLE * CONST phAsyncHandle, CONST DWORD dwFlags) PURE;
+    STDMETHOD(SetGroupInfo)(THIS_ CONST DPNID dpnid, DPN_GROUP_INFO * CONST pdpnGroupInfo, PVOID CONST pvAsyncContext, DPNHANDLE * CONST phAsyncHandle, CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetGroupInfo)(THIS_ CONST DPNID dpnid, DPN_GROUP_INFO * CONST pdpnGroupInfo, DWORD * CONST pdwSize, CONST DWORD dwFlags) PURE;
+    STDMETHOD(EnumPlayersAndGroups)(THIS_ DPNID * CONST prgdpnid, DWORD * CONST pcdpnid, CONST DWORD dwFlags) PURE;
+    STDMETHOD(EnumGroupMembers)(THIS_ CONST DPNID dpnid, DPNID * CONST prgdpnid, DWORD * CONST pcdpnid, CONST DWORD dwFlags) PURE;
+    STDMETHOD(Close)(THIS_ CONST DWORD dwFlags) PURE;
+    STDMETHOD(DestroyClient)(THIS_ CONST DPNID dpnidClient, CONST void * CONST pvDestroyData, CONST DWORD dwDestroyDataSize, CONST DWORD dwFlags) PURE;
+    STDMETHOD(ReturnBuffer)(THIS_ CONST DPNHANDLE hBufferHandle, CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetPlayerContext)(THIS_ CONST DPNID dpnid, PVOID * CONST ppvPlayerContext, CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetGroupContext)(THIS_ CONST DPNID dpnid, PVOID * CONST ppvGroupContext, CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetCaps)(THIS_ DPN_CAPS * CONST pdpCaps, CONST DWORD dwFlags) PURE;
+    STDMETHOD(SetCaps)(THIS_ CONST DPN_CAPS * CONST pdpCaps, CONST DWORD dwFlags) PURE;
+    STDMETHOD(SetSPCaps)(THIS_ CONST GUID * CONST pguidSP, CONST DPN_SP_CAPS * CONST pdpspCaps, CONST DWORD dwFlags ) PURE;
+    STDMETHOD(GetSPCaps)(THIS_ CONST GUID * CONST pguidSP, DPN_SP_CAPS * CONST pdpspCaps, CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetConnectionInfo)(THIS_ CONST DPNID dpnid, DPN_CONNECTION_INFO * CONST pdpConnectionInfo, CONST DWORD dwFlags) PURE;
+    STDMETHOD(RegisterLobby)(THIS_ CONST DPNHANDLE dpnHandle, struct IDirectPlay8LobbiedApplication * CONST pIDP8LobbiedApplication, CONST DWORD dwFlags) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define	IDirectPlay8Server_QueryInterface(p,a,b)                (p)->lpVtbl->QueryInterface(p,a,b)
+#define	IDirectPlay8Server_AddRef(p)                            (p)->lpVtbl->AddRef(p)
+#define	IDirectPlay8Server_Release(p)                           (p)->lpVtbl->Release(p)
+/*** IDirectPlay8Server methods ***/
+#define	IDirectPlay8Server_Initialize(p,a,b,c)                  (p)->lpVtbl->Initialize(p,a,b,c)
+#define	IDirectPlay8Server_EnumServiceProviders(p,a,b,c,d,e,f)  (p)->lpVtbl->EnumServiceProviders(p,a,b,c,d,e,f)
+#define	IDirectPlay8Server_CancelAsyncOperation(p,a,b)          (p)->lpVtbl->CancelAsyncOperation(p,a,b)
+#define	IDirectPlay8Server_GetSendQueueInfo(p,a,b,c,d)          (p)->lpVtbl->GetSendQueueInfo(p,a,b,c,d)
+#define	IDirectPlay8Server_GetApplicationDesc(p,a,b,c)          (p)->lpVtbl->GetApplicationDesc(p,a,b,c)
+#define	IDirectPlay8Server_SetServerInfo(p,a,b,c,d)             (p)->lpVtbl->SetServerInfo(p,a,b,c,d)
+#define	IDirectPlay8Server_GetClientInfo(p,a,b,c,d)             (p)->lpVtbl->GetClientInfo(p,a,b,c,d)
+#define	IDirectPlay8Server_GetClientAddress(p,a,b,c)            (p)->lpVtbl->GetClientAddress(p,a,b,c)
+#define	IDirectPlay8Server_GetLocalHostAddresses(p,a,b,c)       (p)->lpVtbl->GetLocalHostAddresses(p,a,b,c)
+#define	IDirectPlay8Server_SetApplicationDesc(p,a,b)            (p)->lpVtbl->SetApplicationDesc(p,a,b)
+#define	IDirectPlay8Server_Host(p,a,b,c,d,e,f,g)                (p)->lpVtbl->Host(p,a,b,c,d,e,f,g)
+#define	IDirectPlay8Server_SendTo(p,a,b,c,d,e,f,g)              (p)->lpVtbl->SendTo(p,a,b,c,d,e,f,g)
+#define	IDirectPlay8Server_CreateGroup(p,a,b,c,d,e)             (p)->lpVtbl->CreateGroup(p,a,b,c,d,e)
+#define	IDirectPlay8Server_DestroyGroup(p,a,b,c,d)              (p)->lpVtbl->DestroyGroup(p,a,b,c,d)
+#define	IDirectPlay8Server_AddPlayerToGroup(p,a,b,c,d,e)        (p)->lpVtbl->AddPlayerToGroup(p,a,b,c,d,e)
+#define	IDirectPlay8Server_RemovePlayerFromGroup(p,a,b,c,d,e)   (p)->lpVtbl->RemovePlayerFromGroup(p,a,b,c,d,e)
+#define	IDirectPlay8Server_SetGroupInfo(p,a,b,c,d,e)            (p)->lpVtbl->SetGroupInfo(p,a,b,c,d,e)
+#define	IDirectPlay8Server_GetGroupInfo(p,a,b,c,d)              (p)->lpVtbl->GetGroupInfo(p,a,b,c,d)
+#define	IDirectPlay8Server_EnumPlayersAndGroups(p,a,b,c)        (p)->lpVtbl->EnumPlayersAndGroups(p,a,b,c)
+#define	IDirectPlay8Server_EnumGroupMembers(p,a,b,c,d)          (p)->lpVtbl->EnumGroupMembers(p,a,b,c,d)
+#define	IDirectPlay8Server_Close(p,a)                           (p)->lpVtbl->Close(p,a)
+#define	IDirectPlay8Server_DestroyClient(p,a,b,c,d)             (p)->lpVtbl->DestroyClient(p,a,b,c,d)
+#define	IDirectPlay8Server_ReturnBuffer(p,a,b)                  (p)->lpVtbl->ReturnBuffer(p,a,b)
+#define	IDirectPlay8Server_GetPlayerContext(p,a,b,c)            (p)->lpVtbl->GetPlayerContext(p,a,b,c)
+#define	IDirectPlay8Server_GetGroupContext(p,a,b,c)             (p)->lpVtbl->GetGroupContext(p,a,b,c)
+#define	IDirectPlay8Server_GetCaps(p,a,b)                       (p)->lpVtbl->GetCaps(p,a,b)
+#define	IDirectPlay8Server_SetCaps(p,a,b)                       (p)->lpVtbl->SetCaps(p,a,b)
+#define	IDirectPlay8Server_SetSPCaps(p,a,b,c)                   (p)->lpVtbl->SetSPCaps(p,a,b,c)
+#define	IDirectPlay8Server_GetSPCaps(p,a,b,c)                   (p)->lpVtbl->GetSPCaps(p,a,b,c)
+#define	IDirectPlay8Server_GetConnectionInfo(p,a,b,c)           (p)->lpVtbl->GetConnectionInfo(p,a,b,c)
+#define	IDirectPlay8Server_RegisterLobby(p,a,b,c)               (p)->lpVtbl->RegisterLobby(p,a,b,c)
+#else
+/*** IUnknown methods ***/
+#define	IDirectPlay8Server_QueryInterface(p,a,b)                (p)->QueryInterface(a,b)
+#define	IDirectPlay8Server_AddRef(p)                            (p)->AddRef()
+#define	IDirectPlay8Server_Release(p)                           (p)->Release()
+/*** IDirectPlay8Server methods ***/
+#define	IDirectPlay8Server_Initialize(p,a,b,c)                  (p)->Initialize(a,b,c)
+#define	IDirectPlay8Server_EnumServiceProviders(p,a,b,c,d,e,f)  (p)->EnumServiceProviders(a,b,c,d,e,f)
+#define	IDirectPlay8Server_CancelAsyncOperation(p,a,b)          (p)->CancelAsyncOperation(a,b)
+#define	IDirectPlay8Server_GetSendQueueInfo(p,a,b,c,d)          (p)->GetSendQueueInfo(a,b,c,d)
+#define	IDirectPlay8Server_GetApplicationDesc(p,a,b,c)          (p)->GetApplicationDesc(a,b,c)
+#define	IDirectPlay8Server_SetServerInfo(p,a,b,c,d)             (p)->SetServerInfo(a,b,c,d)
+#define	IDirectPlay8Server_GetClientInfo(p,a,b,c,d)             (p)->GetClientInfo(a,b,c,d)
+#define	IDirectPlay8Server_GetClientAddress(p,a,b,c)            (p)->GetClientAddress(a,b,c)
+#define	IDirectPlay8Server_GetLocalHostAddresses(p,a,b,c)       (p)->GetLocalHostAddresses(a,b,c)
+#define	IDirectPlay8Server_SetApplicationDesc(p,a,b)            (p)->SetApplicationDesc(a,b)
+#define	IDirectPlay8Server_Host(p,a,b,c,d,e,f,g)                (p)->Host(a,b,c,d,e,f,g)
+#define	IDirectPlay8Server_SendTo(p,a,b,c,d,e,f,g)              (p)->SendTo(a,b,c,d,e,f,g)
+#define	IDirectPlay8Server_CreateGroup(p,a,b,c,d,e)             (p)->CreateGroup(a,b,c,d,e)
+#define	IDirectPlay8Server_DestroyGroup(p,a,b,c,d)              (p)->DestroyGroup(a,b,c,d)
+#define	IDirectPlay8Server_AddPlayerToGroup(p,a,b,c,d,e)        (p)->AddPlayerToGroup(a,b,c,d,e)
+#define	IDirectPlay8Server_RemovePlayerFromGroup(p,a,b,c,d,e)   (p)->RemovePlayerFromGroup(a,b,c,d,e)
+#define	IDirectPlay8Server_SetGroupInfo(p,a,b,c,d,e)            (p)->SetGroupInfo(a,b,c,d,e)
+#define	IDirectPlay8Server_GetGroupInfo(p,a,b,c,d)              (p)->GetGroupInfo(a,b,c,d)
+#define	IDirectPlay8Server_EnumPlayersAndGroups(p,a,b,c)        (p)->EnumPlayersAndGroups(a,b,c)
+#define	IDirectPlay8Server_EnumGroupMembers(p,a,b,c,d)          (p)->EnumGroupMembers(a,b,c,d)
+#define	IDirectPlay8Server_Close(p,a)                           (p)->Close(a)
+#define	IDirectPlay8Server_DestroyClient(p,a,b,c,d)             (p)->DestroyClient(a,b,c,d)
+#define	IDirectPlay8Server_ReturnBuffer(p,a,b)                  (p)->ReturnBuffer(a,b)
+#define	IDirectPlay8Server_GetPlayerContext(p,a,b,c)            (p)->GetPlayerContext(a,b,c)
+#define	IDirectPlay8Server_GetGroupContext(p,a,b,c)             (p)->GetGroupContext(a,b,c)
+#define	IDirectPlay8Server_GetCaps(p,a,b)                       (p)->GetCaps(a,b)
+#define	IDirectPlay8Server_SetCaps(p,a,b)                       (p)->SetCaps(a,b)
+#define	IDirectPlay8Server_SetSPCaps(p,a,b,c)                   (p)->SetSPCaps(a,b,c)
+#define	IDirectPlay8Server_GetSPCaps(p,a,b,c)                   (p)->GetSPCaps(a,b,c)
+#define	IDirectPlay8Server_GetConnectionInfo(p,a,b,c)           (p)->GetConnectionInfo(a,b,c)
+#define	IDirectPlay8Server_RegisterLobby(p,a,b,c)               (p)->RegisterLobby(a,b,c)
+#endif
+
+/*****************************************************************************
+ * IDirectPlay8Peer interface
+ */
+#define INTERFACE IDirectPlay8Peer
+DECLARE_INTERFACE_(IDirectPlay8Peer,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectPlay8Peer methods ***/
+    STDMETHOD(Initialize)(THIS_ PVOID CONST pvUserContext, CONST PFNDPNMESSAGEHANDLER pfn, CONST DWORD dwFlags) PURE;
+    STDMETHOD(EnumServiceProviders)(THIS_ CONST GUID* CONST pguidServiceProvider, CONST GUID* CONST pguidApplication, DPN_SERVICE_PROVIDER_INFO* CONST pSPInfoBuffer, DWORD* CONST pcbEnumData, DWORD* CONST pcReturned, CONST DWORD dwFlags) PURE;
+    STDMETHOD(CancelAsyncOperation)(THIS_ CONST DPNHANDLE hAsyncHandle, CONST DWORD dwFlags) PURE;
+    STDMETHOD(Connect)(THIS_ CONST DPN_APPLICATION_DESC* CONST pdnAppDesc, IDirectPlay8Address* CONST pHostAddr, IDirectPlay8Address* CONST pDeviceInfo, CONST DPN_SECURITY_DESC* CONST pdnSecurity, CONST DPN_SECURITY_CREDENTIALS* CONST pdnCredentials, CONST void* CONST pvUserConnectData, CONST DWORD dwUserConnectDataSize, void* CONST pvPlayerContext, void* CONST pvAsyncContext, DPNHANDLE* CONST phAsyncHandle, CONST DWORD dwFlags) PURE;
+    STDMETHOD(SendTo)(THIS_ CONST DPNID dpnid, CONST DPN_BUFFER_DESC* CONST prgBufferDesc, CONST DWORD cBufferDesc, CONST DWORD dwTimeOut, void* CONST pvAsyncContext, DPNHANDLE* CONST phAsyncHandle, CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetSendQueueInfo)(THIS_ CONST DPNID dpnid, DWORD* CONST pdwNumMsgs, DWORD* CONST pdwNumBytes, CONST DWORD dwFlags) PURE;
+    STDMETHOD(Host)(THIS_ CONST DPN_APPLICATION_DESC* CONST pdnAppDesc, IDirectPlay8Address **CONST prgpDeviceInfo, CONST DWORD cDeviceInfo, CONST DPN_SECURITY_DESC* CONST pdnSecurity, CONST DPN_SECURITY_CREDENTIALS* CONST pdnCredentials, void* CONST pvPlayerContext, CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetApplicationDesc)(THIS_ DPN_APPLICATION_DESC* CONST pAppDescBuffer, DWORD* CONST pcbDataSize, CONST DWORD dwFlags) PURE;
+    STDMETHOD(SetApplicationDesc)(THIS_ CONST DPN_APPLICATION_DESC* CONST pad, CONST DWORD dwFlags) PURE;
+    STDMETHOD(CreateGroup)(THIS_ CONST DPN_GROUP_INFO* CONST pdpnGroupInfo, void* CONST pvGroupContext, void* CONST pvAsyncContext, DPNHANDLE* CONST phAsyncHandle, CONST DWORD dwFlags) PURE;
+    STDMETHOD(DestroyGroup)(THIS_ CONST DPNID idGroup, PVOID CONST pvAsyncContext, DPNHANDLE* CONST phAsyncHandle, CONST DWORD dwFlags) PURE;
+    STDMETHOD(AddPlayerToGroup)(THIS_ CONST DPNID idGroup, CONST DPNID idClient, PVOID CONST pvAsyncContext, DPNHANDLE* CONST phAsyncHandle, CONST DWORD dwFlags) PURE;
+    STDMETHOD(RemovePlayerFromGroup)(THIS_ CONST DPNID idGroup, CONST DPNID idClient, PVOID CONST pvAsyncContext, DPNHANDLE* CONST phAsyncHandle, CONST DWORD dwFlags) PURE;
+    STDMETHOD(SetGroupInfo)(THIS_ CONST DPNID dpnid, DPN_GROUP_INFO* CONST pdpnGroupInfo,PVOID CONST pvAsyncContext, DPNHANDLE* CONST phAsyncHandle, CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetGroupInfo)(THIS_ CONST DPNID dpnid, DPN_GROUP_INFO* CONST pdpnGroupInfo, DWORD* CONST pdwSize, CONST DWORD dwFlags) PURE;
+    STDMETHOD(EnumPlayersAndGroups)(THIS_ DPNID* CONST prgdpnid, DWORD* CONST pcdpnid, CONST DWORD dwFlags) PURE;
+    STDMETHOD(EnumGroupMembers)(THIS_ CONST DPNID dpnid, DPNID* CONST prgdpnid, DWORD* CONST pcdpnid, CONST DWORD dwFlags) PURE;
+    STDMETHOD(SetPeerInfo)(THIS_ CONST DPN_PLAYER_INFO* CONST pdpnPlayerInfo,PVOID CONST pvAsyncContext, DPNHANDLE* CONST phAsyncHandle, CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetPeerInfo)(THIS_ CONST DPNID dpnid, DPN_PLAYER_INFO* CONST pdpnPlayerInfo, DWORD* CONST pdwSize, CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetPeerAddress)(THIS_ CONST DPNID dpnid, IDirectPlay8Address** CONST pAddress, CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetLocalHostAddresses)(THIS_ IDirectPlay8Address** CONST prgpAddress, DWORD* CONST pcAddress, CONST DWORD dwFlags) PURE;
+    STDMETHOD(Close)(THIS_ CONST DWORD dwFlags) PURE;
+    STDMETHOD(EnumHosts)(THIS_ PDPN_APPLICATION_DESC CONST pApplicationDesc, IDirectPlay8Address* CONST pAddrHost, IDirectPlay8Address* CONST pDeviceInfo,PVOID CONST pUserEnumData, CONST DWORD dwUserEnumDataSize, CONST DWORD dwEnumCount, CONST DWORD dwRetryInterval, CONST DWORD dwTimeOut,PVOID CONST pvUserContext, DPNHANDLE* CONST pAsyncHandle, CONST DWORD dwFlags) PURE;
+    STDMETHOD(DestroyPeer)(THIS_ CONST DPNID dpnidClient, CONST void* CONST pvDestroyData, CONST DWORD dwDestroyDataSize, CONST DWORD dwFlags) PURE;
+    STDMETHOD(ReturnBuffer)(THIS_ CONST DPNHANDLE hBufferHandle, CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetPlayerContext)(THIS_ CONST DPNID dpnid,PVOID* CONST ppvPlayerContext, CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetGroupContext)(THIS_ CONST DPNID dpnid,PVOID* CONST ppvGroupContext, CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetCaps)(THIS_ DPN_CAPS* CONST pdpCaps, CONST DWORD dwFlags) PURE;
+    STDMETHOD(SetCaps)(THIS_ CONST DPN_CAPS* CONST pdpCaps, CONST DWORD dwFlags) PURE;
+    STDMETHOD(SetSPCaps)(THIS_ CONST GUID* CONST pguidSP, CONST DPN_SP_CAPS* CONST pdpspCaps, CONST DWORD dwFlags ) PURE;
+    STDMETHOD(GetSPCaps)(THIS_ CONST GUID* CONST pguidSP, DPN_SP_CAPS* CONST pdpspCaps, CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetConnectionInfo)(THIS_ CONST DPNID dpnid, DPN_CONNECTION_INFO* CONST pdpConnectionInfo, CONST DWORD dwFlags) PURE;
+    STDMETHOD(RegisterLobby)(THIS_ CONST DPNHANDLE dpnHandle, struct IDirectPlay8LobbiedApplication* CONST pIDP8LobbiedApplication, CONST DWORD dwFlags) PURE;
+    STDMETHOD(TerminateSession)(THIS_ void* CONST pvTerminateData, CONST DWORD dwTerminateDataSize, CONST DWORD dwFlags) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define	IDirectPlay8Peer_QueryInterface(p,a,b)                  (p)->lpVtbl->QueryInterface(p,a,b)
+#define	IDirectPlay8Peer_AddRef(p)                              (p)->lpVtbl->AddRef(p)
+#define	IDirectPlay8Peer_Release(p)                             (p)->lpVtbl->Release(p)
+/*** IDirectPlay8Peer methods ***/
+#define	IDirectPlay8Peer_Initialize(p,a,b,c)                    (p)->lpVtbl->Initialize(p,a,b,c)
+#define	IDirectPlay8Peer_EnumServiceProviders(p,a,b,c,d,e,f)    (p)->lpVtbl->EnumServiceProviders(p,a,b,c,d,e,f)
+#define	IDirectPlay8Peer_EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k)     (p)->lpVtbl->EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k)
+#define	IDirectPlay8Peer_CancelAsyncOperation(p,a,b)            (p)->lpVtbl->CancelAsyncOperation(p,a,b)
+#define	IDirectPlay8Peer_Connect(p,a,b,c,d,e,f,g,h,i,j,k)       (p)->lpVtbl->Connect(p,a,b,c,d,e,f,g,h,i,j,k)
+#define	IDirectPlay8Peer_SendTo(p,a,b,c,d,e,f,g)                (p)->lpVtbl->SendTo(p,a,b,c,d,e,f,g)
+#define	IDirectPlay8Peer_GetSendQueueInfo(p,a,b,c,d)            (p)->lpVtbl->GetSendQueueInfo(p,a,b,c,d)
+#define	IDirectPlay8Peer_Host(p,a,b,c,d,e,f,g)                  (p)->lpVtbl->Host(p,a,b,c,d,e,f,g)
+#define	IDirectPlay8Peer_GetApplicationDesc(p,a,b,c)            (p)->lpVtbl->GetApplicationDesc(p,a,b,c)
+#define	IDirectPlay8Peer_SetApplicationDesc(p,a,b)              (p)->lpVtbl->SetApplicationDesc(p,a,b)
+#define	IDirectPlay8Peer_CreateGroup(p,a,b,c,d,e)               (p)->lpVtbl->CreateGroup(p,a,b,c,d,e)
+#define	IDirectPlay8Peer_DestroyGroup(p,a,b,c,d)                (p)->lpVtbl->DestroyGroup(p,a,b,c,d)
+#define	IDirectPlay8Peer_AddPlayerToGroup(p,a,b,c,d,e)          (p)->lpVtbl->AddPlayerToGroup(p,a,b,c,d,e)
+#define	IDirectPlay8Peer_RemovePlayerFromGroup(p,a,b,c,d,e)     (p)->lpVtbl->RemovePlayerFromGroup(p,a,b,c,d,e)
+#define	IDirectPlay8Peer_SetGroupInfo(p,a,b,c,d,e)              (p)->lpVtbl->SetGroupInfo(p,a,b,c,d,e)
+#define	IDirectPlay8Peer_GetGroupInfo(p,a,b,c,d)                (p)->lpVtbl->GetGroupInfo(p,a,b,c,d)
+#define	IDirectPlay8Peer_EnumPlayersAndGroups(p,a,b,c)          (p)->lpVtbl->EnumPlayersAndGroups(p,a,b,c)
+#define	IDirectPlay8Peer_EnumGroupMembers(p,a,b,c,d)            (p)->lpVtbl->EnumGroupMembers(p,a,b,c,d)
+#define	IDirectPlay8Peer_SetPeerInfo(p,a,b,c,d)                 (p)->lpVtbl->SetPeerInfo(p,a,b,c,d)
+#define	IDirectPlay8Peer_GetPeerInfo(p,a,b,c,d)                 (p)->lpVtbl->GetPeerInfo(p,a,b,c,d)
+#define	IDirectPlay8Peer_GetPeerAddress(p,a,b,c)                (p)->lpVtbl->GetPeerAddress(p,a,b,c)
+#define	IDirectPlay8Peer_GetLocalHostAddresses(p,a,b,c)         (p)->lpVtbl->GetLocalHostAddresses(p,a,b,c)
+#define	IDirectPlay8Peer_Close(p,a)                             (p)->lpVtbl->Close(p,a)
+#define	IDirectPlay8Peer_EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k)     (p)->lpVtbl->EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k)
+#define	IDirectPlay8Peer_DestroyPeer(p,a,b,c,d)                 (p)->lpVtbl->DestroyPeer(p,a,b,c,d)
+#define	IDirectPlay8Peer_ReturnBuffer(p,a,b)                    (p)->lpVtbl->ReturnBuffer(p,a,b)
+#define	IDirectPlay8Peer_GetPlayerContext(p,a,b,c)              (p)->lpVtbl->GetPlayerContext(p,a,b,c)
+#define	IDirectPlay8Peer_GetGroupContext(p,a,b,c)               (p)->lpVtbl->GetGroupContext(p,a,b,c)
+#define	IDirectPlay8Peer_GetCaps(p,a,b)                         (p)->lpVtbl->GetCaps(p,a,b)
+#define	IDirectPlay8Peer_SetCaps(p,a,b)                         (p)->lpVtbl->SetCaps(p,a,b)
+#define	IDirectPlay8Peer_SetSPCaps(p,a,b,c)                     (p)->lpVtbl->SetSPCaps(p,a,b,c)
+#define	IDirectPlay8Peer_GetSPCaps(p,a,b,c)                     (p)->lpVtbl->GetSPCaps(p,a,b,c)
+#define	IDirectPlay8Peer_GetConnectionInfo(p,a,b,c)             (p)->lpVtbl->GetConnectionInfo(p,a,b,c)
+#define	IDirectPlay8Peer_RegisterLobby(p,a,b,c)                 (p)->lpVtbl->RegisterLobby(p,a,b,c)
+#define	IDirectPlay8Peer_TerminateSession(p,a,b,c)              (p)->lpVtbl->TerminateSession(p,a,b,c)
+#else
+/*** IUnknown methods ***/
+#define	IDirectPlay8Peer_QueryInterface(p,a,b)                  (p)->QueryInterface(a,b)
+#define	IDirectPlay8Peer_AddRef(p)                              (p)->AddRef()
+#define	IDirectPlay8Peer_Release(p)                             (p)->Release()
+/*** IDirectPlay8Peer methods ***/
+#define	IDirectPlay8Peer_Initialize(p,a,b,c)                    (p)->Initialize(a,b,c)
+#define	IDirectPlay8Peer_EnumServiceProviders(p,a,b,c,d,e,f)    (p)->EnumServiceProviders(a,b,c,d,e,f)
+#define	IDirectPlay8Peer_EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k)     (p)->EnumHosts(a,b,c,d,e,f,g,h,i,j,k)
+#define	IDirectPlay8Peer_CancelAsyncOperation(p,a,b)            (p)->CancelAsyncOperation(a,b)
+#define	IDirectPlay8Peer_Connect(p,a,b,c,d,e,f,g,h,i,j,k)       (p)->Connect(a,b,c,d,e,f,g,h,i,j,k)
+#define	IDirectPlay8Peer_SendTo(p,a,b,c,d,e,f,g)                (p)->SendTo(a,b,c,d,e,f,g)
+#define	IDirectPlay8Peer_GetSendQueueInfo(p,a,b,c,d)            (p)->GetSendQueueInfo(a,b,c,d)
+#define	IDirectPlay8Peer_Host(p,a,b,c,d,e,f,g)                  (p)->Host(a,b,c,d,e,f,g)
+#define	IDirectPlay8Peer_GetApplicationDesc(p,a,b,c)            (p)->GetApplicationDesc(a,b,c)
+#define	IDirectPlay8Peer_SetApplicationDesc(p,a,b)              (p)->SetApplicationDesc(a,b)
+#define	IDirectPlay8Peer_CreateGroup(p,a,b,c,d,e)               (p)->CreateGroup(a,b,c,d,e)
+#define	IDirectPlay8Peer_DestroyGroup(p,a,b,c,d)                (p)->DestroyGroup(a,b,c,d)
+#define	IDirectPlay8Peer_AddPlayerToGroup(p,a,b,c,d,e)          (p)->AddPlayerToGroup(a,b,c,d,e)
+#define	IDirectPlay8Peer_RemovePlayerFromGroup(p,a,b,c,d,e)     (p)->RemovePlayerFromGroup(a,b,c,d,e)
+#define	IDirectPlay8Peer_SetGroupInfo(p,a,b,c,d,e)              (p)->SetGroupInfo(a,b,c,d,e)
+#define	IDirectPlay8Peer_GetGroupInfo(p,a,b,c,d)                (p)->GetGroupInfo(a,b,c,d)
+#define	IDirectPlay8Peer_EnumPlayersAndGroups(p,a,b,c)          (p)->EnumPlayersAndGroups(a,b,c)
+#define	IDirectPlay8Peer_EnumGroupMembers(p,a,b,c,d)            (p)->EnumGroupMembers(a,b,c,d)
+#define	IDirectPlay8Peer_SetPeerInfo(p,a,b,c,d)                 (p)->SetPeerInfo(a,b,c,d)
+#define	IDirectPlay8Peer_GetPeerInfo(p,a,b,c,d)                 (p)->GetPeerInfo(a,b,c,d)
+#define	IDirectPlay8Peer_GetPeerAddress(p,a,b,c)                (p)->GetPeerAddress(a,b,c)
+#define	IDirectPlay8Peer_GetLocalHostAddresses(p,a,b,c)         (p)->GetLocalHostAddresses(a,b,c)
+#define	IDirectPlay8Peer_Close(p,a)                             (p)->Close(a)
+#define	IDirectPlay8Peer_EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k)     (p)->EnumHosts(a,b,c,d,e,f,g,h,i,j,k)
+#define	IDirectPlay8Peer_DestroyPeer(p,a,b,c,d)                 (p)->DestroyPeer(a,b,c,d)
+#define	IDirectPlay8Peer_ReturnBuffer(p,a,b)                    (p)->ReturnBuffer(a,b)
+#define	IDirectPlay8Peer_GetPlayerContext(p,a,b,c)              (p)->GetPlayerContext(a,b,c)
+#define	IDirectPlay8Peer_GetGroupContext(p,a,b,c)               (p)->GetGroupContext(a,b,c)
+#define	IDirectPlay8Peer_GetCaps(p,a,b)                         (p)->GetCaps(a,b)
+#define	IDirectPlay8Peer_SetCaps(p,a,b)                         (p)->SetCaps(a,b)
+#define	IDirectPlay8Peer_SetSPCaps(p,a,b,c)                     (p)->SetSPCaps(a,b,c)
+#define	IDirectPlay8Peer_GetSPCaps(p,a,b,c)                     (p)->GetSPCaps(a,b,c)
+#define	IDirectPlay8Peer_GetConnectionInfo(p,a,b,c)             (p)->GetConnectionInfo(a,b,c)
+#define	IDirectPlay8Peer_RegisterLobby(p,a,b,c)                 (p)->RegisterLobby(a,b,c)
+#define	IDirectPlay8Peer_TerminateSession(p,a,b,c)              (p)->TerminateSession(a,b,c)
+#endif
+
+/*****************************************************************************
+ * IDirectPlay8ThreadPool interface
+ */
+#define INTERFACE IDirectPlay8ThreadPool
+DECLARE_INTERFACE_(IDirectPlay8ThreadPool,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectPlay8ThreadPool methods ***/	
+    STDMETHOD(Initialize)(THIS_ PVOID CONST pvUserContext, CONST PFNDPNMESSAGEHANDLER pfn, CONST DWORD dwFlags) PURE;
+    STDMETHOD(Close)(THIS_ CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetThreadCount)(THIS_ CONST DWORD dwProcessorNum, DWORD* CONST pdwNumThreads, CONST DWORD dwFlags) PURE;
+    STDMETHOD(SetThreadCount)(THIS_ CONST DWORD dwProcessorNum, CONST DWORD dwNumThreads, CONST DWORD dwFlags) PURE;
+    STDMETHOD(DoWork)(THIS_ CONST DWORD dwAllowedTimeSlice, CONST DWORD dwFlags) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define	IDirectPlay8ThreadPool_QueryInterface(p,a,b)                  (p)->lpVtbl->QueryInterface(p,a,b)
+#define	IDirectPlay8ThreadPool_AddRef(p)                              (p)->lpVtbl->AddRef(p)
+#define	IDirectPlay8ThreadPool_Release(p)                             (p)->lpVtbl->Release(p)
+/*** IDirectPlay8ThreadPool methods ***/
+#define IDirectPlay8ThreadPool_Initialize(p,a,b,c)                    (p)->lpVtbl->Initialize(p,a,b,c)
+#define IDirectPlay8ThreadPool_Close(p,a)                             (p)->lpVtbl->Close(p,a)
+#define IDirectPlay8ThreadPool_GetThreadCount(p,a,b,c)                (p)->lpVtbl->GetThreadCount(p,a,b,c)
+#define IDirectPlay8ThreadPool_SetThreadCount(p,a,b,c)                (p)->lpVtbl->SetThreadCount(p,a,b,c)
+#define IDirectPlay8ThreadPool_DoWork(p,a,b)                          (p)->lpVtbl->DoWork(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define	IDirectPlay8ThreadPool_QueryInterface(p,a,b)                  (p)->QueryInterface(a,b)
+#define	IDirectPlay8ThreadPool_AddRef(p)                              (p)->AddRef()
+#define	IDirectPlay8ThreadPool_Release(p)                             (p)->Release()
+/*** IDirectPlay8ThreadPool methods ***/
+#define IDirectPlay8ThreadPool_Initialize(p,a,b,c)                    (p)->Initialize(a,b,c)
+#define IDirectPlay8ThreadPool_Close(p,a)                             (p)->Close(a)
+#define IDirectPlay8ThreadPool_GetThreadCount(p,a,b,c)                (p)->GetThreadCount(a,b,c)
+#define IDirectPlay8ThreadPool_SetThreadCount(p,a,b,c)                (p)->SetThreadCount(a,b,c)
+#define IDirectPlay8ThreadPool_DoWork(p,a,b)                          (p)->DoWork(a,b)
+#endif
+
+/*****************************************************************************
+ * IDirectPlay8NATResolver interface
+ */
+#define INTERFACE IDirectPlay8NATResolver
+DECLARE_INTERFACE_(IDirectPlay8NATResolver,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectPlay8NATResolver methods ***/	
+    STDMETHOD(Initialize)(THIS_ PVOID CONST pvUserContext, CONST PFNDPNMESSAGEHANDLER pfn, CONST DWORD dwFlags) PURE;
+    STDMETHOD(Start)(THIS_ IDirectPlay8Address** CONST ppDevices, CONST DWORD dwNumDevices, CONST DWORD dwFlags) PURE;
+    STDMETHOD(Close)(THIS_ CONST DWORD dwFlags) PURE;
+    STDMETHOD(EnumDevices)(THIS_ DPN_SERVICE_PROVIDER_INFO* CONST pSPInfoBuffer, PDWORD CONST pdwBufferSize, PDWORD CONST pdwNumDevices, CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetAddresses)(THIS_ IDirectPlay8Address** CONST ppAddresses, DWORD* CONST pdwNumAddresses, CONST DWORD dwFlags) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define	IDirectPlay8NATResolver_QueryInterface(p,a,b)                  (p)->lpVtbl->QueryInterface(p,a,b)
+#define	IDirectPlay8NATResolver_AddRef(p)                              (p)->lpVtbl->AddRef(p)
+#define	IDirectPlay8NATResolver_Release(p)                             (p)->lpVtbl->Release(p)
+/*** IDirectPlay8NATResolver methods ***/
+#define IDirectPlay8NATResolver_Initialize(p,a,b,c)                    (p)->lpVtbl->Initialize(p,a,b,c)
+#define IDirectPlay8NATResolver_Start(p,a,b,c)                         (p)->lpVtbl->Start(p,a,b,c)
+#define IDirectPlay8NATResolver_Close(p,a)                             (p)->lpVtbl->Close(p,a)
+#define IDirectPlay8NATResolver_EnumDevices(p,a,b,c,d)                 (p)->lpVtbl->EnumDevices(p,a,b,c,d)
+#define IDirectPlay8NATResolver_GetAddresses(p,a,b,c)                  (p)->lpVtbl->GetAddresses(p,a,b,c)
+#else
+/*** IUnknown methods ***/
+#define	IDirectPlay8NATResolver_QueryInterface(p,a,b)                  (p)->QueryInterface(a,b)
+#define	IDirectPlay8NATResolver_AddRef(p)                              (p)->AddRef()
+#define	IDirectPlay8NATResolver_Release(p)                             (p)->Release()
+/*** IDirectPlay8NATResolver methods ***/
+#define IDirectPlay8NATResolver_Initialize(p,a,b,c)                    (p)->Initialize(a,b,c)
+#define IDirectPlay8NATResolver_Start(p,a,b,c)                         (p)->Start(a,b,c)
+#define IDirectPlay8NATResolver_Close(p,a)                             (p)->Close(a)
+#define IDirectPlay8NATResolver_EnumDevices(p,a,b,c,d)                 (p)->EnumDevices(a,b,c,d)
+#define IDirectPlay8NATResolver_GetAddresses(p,a,b,c)                  (p)->GetAddresses(a,b,c)
+#endif
+
+/* Export functions */
+
+HRESULT WINAPI DirectPlay8Create(CONST CLSID* pcIID, LPVOID* ppvInterface, IUnknown* pUnknown);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dplobby.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dplobby.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dplobby.h	(revision 16410)
@@ -0,0 +1,509 @@
+/*
+ * Copyright (C) 1999 Francois Gouget
+ * Copyright (C) 1999 Peter Hunnisett
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DPLOBBY_H
+#define __WINE_DPLOBBY_H
+
+#include <dplay.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+/*****************************************************************************
+ * Predeclare the interfaces
+ */
+DEFINE_GUID(CLSID_DirectPlayLobby, 0x2fe8f810, 0xb2a5, 0x11d0, 0xa7, 0x87, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc);
+
+DEFINE_GUID(IID_IDirectPlayLobby, 0xaf465c71, 0x9588, 0x11cf, 0xa0, 0x20, 0x0, 0xaa, 0x0, 0x61, 0x57, 0xac);
+typedef struct IDirectPlayLobby *LPDIRECTPLAYLOBBY;
+
+DEFINE_GUID(IID_IDirectPlayLobbyA, 0x26c66a70, 0xb367, 0x11cf, 0xa0, 0x24, 0x0, 0xaa, 0x0, 0x61, 0x57, 0xac);
+typedef struct IDirectPlayLobby IDirectPlayLobbyA,*LPDIRECTPLAYLOBBYA;
+
+DEFINE_GUID(IID_IDirectPlayLobby2, 0x194c220, 0xa303, 0x11d0, 0x9c, 0x4f, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
+typedef struct IDirectPlayLobby2 *LPDIRECTPLAYLOBBY2;
+
+DEFINE_GUID(IID_IDirectPlayLobby2A, 0x1bb4af80, 0xa303, 0x11d0, 0x9c, 0x4f, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
+typedef struct IDirectPlayLobby2 IDirectPlayLobby2A, *LPDIRECTPLAYLOBBY2A;
+
+DEFINE_GUID(IID_IDirectPlayLobby3, 0x2db72490, 0x652c, 0x11d1, 0xa7, 0xa8, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc);
+typedef struct IDirectPlayLobby3 *LPDIRECTPLAYLOBBY3;
+
+DEFINE_GUID(IID_IDirectPlayLobby3A, 0x2db72491, 0x652c, 0x11d1, 0xa7, 0xa8, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc);
+typedef struct IDirectPlayLobby3 IDirectPlayLobby3A, *LPDIRECTPLAYLOBBY3A;
+
+
+/*****************************************************************************
+ * DirectPlayLobby Property GUIDs used in lobby messages
+ */
+
+/* DPLPROPERTY_MessagesSupported {762CCDA1-D916-11d0-BA39-00C04FD7ED67}.
+ * Purpose: Request if the lobby supports standard (?).
+ * Response: Answer is a BOOL. TRUE if supports the standard (?) and FALSE otherwise. Of course, it might not respond at all.
+ */
+DEFINE_GUID(DPLPROPERTY_MessagesSupported, 0x762ccda1, 0xd916, 0x11d0, 0xba, 0x39, 0x0, 0xc0, 0x4f, 0xd7, 0xed, 0x67);
+
+/* DPLPROPERTY_LobbyGuid {F56920A0-D218-11d0-BA39-00C04FD7ED67}.
+ * Purpose: Request the GUID that identifies the lobby version that the application is communicating with.
+ * Response: The GUID which identifies the lobby version
+ */
+DEFINE_GUID(DPLPROPERTY_LobbyGuid, 0xf56920a0, 0xd218, 0x11d0, 0xba, 0x39, 0x0, 0xc0, 0x4f, 0xd7, 0xed, 0x67);
+
+/* DPLPROPERTY_PlayerGuid {B4319322-D20D-11d0-BA39-00C04FD7ED67}
+ * Purpose: Request the GUID that identifies the player for this particular machine.
+ * Response: DPLDATA_PLAYERDATA structure.
+ */
+DEFINE_GUID(DPLPROPERTY_PlayerGuid, 0xb4319322, 0xd20d, 0x11d0, 0xba, 0x39, 0x0, 0xc0, 0x4f, 0xd7, 0xed, 0x67);
+
+/* DPLPROPERTY_PlayerScore {48784000-D219-11d0-BA39-00C04FD7ED67}
+ * Purpose: Used to send a score of a player to the lobby. The format is an array of long integers.
+ * Response: I don't think there is one.
+ */
+DEFINE_GUID(DPLPROPERTY_PlayerScore, 0x48784000, 0xd219, 0x11d0, 0xba, 0x39, 0x0, 0xc0, 0x4f, 0xd7, 0xed, 0x67);
+
+
+
+/*****************************************************************************
+ * LOBBY structures associated with GUID messages
+ */
+
+typedef struct tagDPLDATA_PLAYERGUID
+{
+        GUID    guidPlayer;
+        DWORD   dwPlayerFlags;
+} DPLDATA_PLAYERGUID, *LPDPLDATA_PLAYERGUID;
+
+typedef struct tagDPLDATA_PLAYERSCORE
+{
+        DWORD   dwScoreCount;
+        LONG    Score[1];
+} DPLDATA_PLAYERSCORE, *LPDPLDATA_PLAYERSCORE;
+
+
+/*****************************************************************************
+ * LOBBY messages and message data structures.
+ *
+ * System messages can be identified by dwMessageFlags having a value of DPLMSG_SYSTEM
+ * after a call to ReceiveLobbyMessage.
+ *
+ * Standard messages can be indentified by dwMessageFlags having a value of DPLMSG_STANDARD
+ * after a call to ReceiveLobbyMessage.
+ */
+
+/* DPLobby1 definition required for backwards compatibility */
+#define DPLMSG_SYSTEM                                   0x00000001
+#define DPLMSG_STANDARD                                 0x00000002
+#define DPLAD_SYSTEM          DPLMSG_SYSTEM
+
+
+/* System messages  - dwType field for messages */
+#define DPLSYS_CONNECTIONSETTINGSREAD   0x00000001
+#define DPLSYS_DPLAYCONNECTFAILED       0x00000002
+#define DPLSYS_DPLAYCONNECTSUCCEEDED    0x00000003
+#define DPLSYS_APPTERMINATED            0x00000004
+#define DPLSYS_SETPROPERTY              0x00000005
+#define DPLSYS_SETPROPERTYRESPONSE      0x00000006
+#define DPLSYS_GETPROPERTY              0x00000007
+#define DPLSYS_GETPROPERTYRESPONSE      0x00000008
+#define DPLSYS_NEWSESSIONHOST           0x00000009
+#define DPLSYS_NEWCONNECTIONSETTINGS    0x0000000A
+
+
+
+/* Used to indentify the message type */
+typedef struct tagDPLMSG_GENERIC
+{
+    DWORD       dwType;         /* Message type */
+} DPLMSG_GENERIC, *LPDPLMSG_GENERIC;
+
+/* Generic format for system messages - see above */
+typedef struct tagDPLMSG_SYSTEMMESSAGE
+{
+    DWORD       dwType;         /* Message type */
+    GUID        guidInstance;   /* Instance GUID of the dplay session the message corresponds to */
+} DPLMSG_SYSTEMMESSAGE, *LPDPLMSG_SYSTEMMESSAGE;
+
+/* Generic message to set a property - see property GUIDs above */
+typedef struct tagDPLMSG_SETPROPERTY
+{
+        DWORD   dwType;              /* Message type */
+        DWORD   dwRequestID;         /* Request ID (DPL_NOCONFIRMATION if no confirmation desired) */
+        GUID    guidPlayer;          /* Player GUID */
+        GUID    guidPropertyTag;     /* Property GUID */
+        DWORD   dwDataSize;          /* Size of data */
+        DWORD   dwPropertyData[1];   /* Buffer containing data */
+} DPLMSG_SETPROPERTY, *LPDPLMSG_SETPROPERTY;
+
+#define DPL_NOCONFIRMATION                      0L
+
+/* Reply to DPLMSG_SETPROPERTY */
+typedef struct tagDPLMSG_SETPROPERTYRESPONSE
+{
+        DWORD   dwType;              /* Message type */
+        DWORD   dwRequestID;         /* Request ID */
+        GUID    guidPlayer;          /* Player GUID */
+        GUID    guidPropertyTag;     /* Property GUID */
+        HRESULT hr;                  /* Return Code */
+} DPLMSG_SETPROPERTYRESPONSE, *LPDPLMSG_SETPROPERTYRESPONSE;
+
+/* Request to get the present value of a property */
+typedef struct tagDPLMSG_GETPROPERTY
+{
+        DWORD   dwType;           /* Message type */
+        DWORD   dwRequestID;      /* Request ID */
+        GUID    guidPlayer;       /* Player GUID */
+        GUID    guidPropertyTag;  /* Property GUID */
+} DPLMSG_GETPROPERTY, *LPDPLMSG_GETPROPERTY;
+
+/* Response to a request to get the present value of a property */
+typedef struct tagDPLMSG_GETPROPERTYRESPONSE
+{
+        DWORD   dwType;              /* Message type */
+        DWORD   dwRequestID;         /* Request ID */
+        GUID    guidPlayer;          /* Player GUID */
+        GUID    guidPropertyTag;     /* Property GUID */
+        HRESULT hr;                  /* Return Code */
+        DWORD   dwDataSize;          /* Size of data */
+        DWORD   dwPropertyData[1];   /* Buffer containing data */
+} DPLMSG_GETPROPERTYRESPONSE, *LPDPLMSG_GETPROPERTYRESPONSE;
+
+/* Standard message in response to a session host migration to a new client */
+typedef struct tagDPLMSG_NEWSESSIONHOST
+{
+    DWORD   dwType;        /* Message type */
+    GUID    guidInstance;  /* GUID Instance of the session */
+} DPLMSG_NEWSESSIONHOST, *LPDPLMSG_NEWSESSIONHOST;
+
+/*****************************************************************************
+ * DirectPlay Address ID's
+ * A DirectPlay address is composed of multiple data chunks, each associated with
+ * a GUID to give significance to the type of data. All chunks have an associated
+ * size so that unknown chunks can be ignored for backwards compatibility!
+ * EnumAddresses function is used to parse the address data chunks.
+ */
+
+/* DPAID_TotalSize {1318F560-912C-11d0-9DAA-00A0C90A43CB}
+ * Chunk purpose: Chunk is a DWORD containing the size of the entire DPADDRESS struct
+ */
+DEFINE_GUID(DPAID_TotalSize, 0x1318f560, 0x912c, 0x11d0, 0x9d, 0xaa, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb);
+
+/* DPAID_ServiceProvider {07D916C0-E0AF-11cf-9C4E-00A0C905425E}
+ * Chunk purpose: Chunk is a GUID indicated what service provider created the chunk.
+ */
+DEFINE_GUID(DPAID_ServiceProvider, 0x7d916c0, 0xe0af, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
+
+/* DPAID_LobbyProvider {59B95640-9667-11d0-A77D-0000F803ABFC}
+ * Chunk purpose: Chunk is a GUID indicating what lobby provider created the chunk.
+ */
+DEFINE_GUID(DPAID_LobbyProvider, 0x59b95640, 0x9667, 0x11d0, 0xa7, 0x7d, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc);
+
+/* DPAID_Phone  {78EC89A0-E0AF-11cf-9C4E-00A0C905425E} -- ANSI
+ * DPAID_PhoneW {BA5A7A70-9DBF-11d0-9CC1-00A0C905425E} -- UNICODE
+ * Chunk purpose: Chunk is a phone number in ANSI or UNICODE format
+ */
+DEFINE_GUID(DPAID_Phone, 0x78ec89a0, 0xe0af, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
+DEFINE_GUID(DPAID_PhoneW, 0xba5a7a70, 0x9dbf, 0x11d0, 0x9c, 0xc1, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
+
+/* DPAID_Modem  {F6DCC200-A2FE-11d0-9C4F-00A0C905425E} -- ANSI
+ * DPAID_ModemW {01FD92E0-A2FF-11d0-9C4F-00A0C905425E} -- UNICODE
+ * Chunk purpose: Chunk is a modem name registered with TAPI
+ */
+DEFINE_GUID(DPAID_Modem, 0xf6dcc200, 0xa2fe, 0x11d0, 0x9c, 0x4f, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
+DEFINE_GUID(DPAID_ModemW, 0x1fd92e0, 0xa2ff, 0x11d0, 0x9c, 0x4f, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
+
+/* DPAID_INet  {C4A54DA0-E0AF-11cf-9C4E-00A0C905425E} -- ANSI
+ * DPAID_INetW {E63232A0-9DBF-11d0-9CC1-00A0C905425E} -- UNICODE
+ * Chunk purpose: Chunk is a string containing a TCP/IP host name or IP address
+ */
+DEFINE_GUID(DPAID_INet, 0xc4a54da0, 0xe0af, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
+DEFINE_GUID(DPAID_INetW, 0xe63232a0, 0x9dbf, 0x11d0, 0x9c, 0xc1, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
+
+/* DPAID_INetPort {E4524541-8EA5-11d1-8A96-006097B01411}
+ * Chunk purpose: Chunk is a port number used for creating TCP and UDP sockets. (WORD)
+ */
+DEFINE_GUID(DPAID_INetPort, 0xe4524541, 0x8ea5, 0x11d1, 0x8a, 0x96, 0x0, 0x60, 0x97, 0xb0, 0x14, 0x11);
+
+/* DPAID_ComPort {F2F0CE00-E0AF-11cf-9C4E-00A0C905425E}
+ * Chunk purpose: Chunk contains the description of a serial port.
+ */
+DEFINE_GUID(DPAID_ComPort, 0xf2f0ce00, 0xe0af, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
+
+
+/* Header block for address data elements */
+typedef struct tagDPADDRESS
+{
+    GUID                guidDataType;
+    DWORD               dwDataSize;
+} DPADDRESS, *LPDPADDRESS;
+
+
+/* Used for specification of a communication port. Baud rate, stop bits and
+ * parity bits can be found in winbase.h. These are flow control constants only.
+ */
+#define DPCPA_NOFLOW        0           /* no flow control */
+#define DPCPA_XONXOFFFLOW   1           /* software flow control */
+#define DPCPA_RTSFLOW       2           /* hardware flow control with RTS */
+#define DPCPA_DTRFLOW       3           /* hardware flow control with DTR */
+#define DPCPA_RTSDTRFLOW    4           /* hardware flow control with RTS and DTR */
+
+typedef struct tagDPCOMPORTADDRESS
+{
+    DWORD   dwComPort;                  /* COM port to use (1-4) */
+    DWORD   dwBaudRate;                 /* baud rate (100-256k) */
+    DWORD   dwStopBits;                 /* no. stop bits (1-2) */
+    DWORD   dwParity;                   /* parity (none, odd, even, mark) */
+    DWORD   dwFlowControl;              /* flow control (none, xon/xoff, rts, dtr) */
+} DPCOMPORTADDRESS, *LPDPCOMPORTADDRESS;
+
+
+
+/****************************************************************************
+ * Miscellaneous
+ */
+
+typedef struct tagDPLAPPINFO
+{
+    DWORD       dwSize;
+    GUID        guidApplication;
+
+    union
+    {
+        LPSTR   lpszAppNameA;
+        LPWSTR  lpszAppName;
+    } DUMMYUNIONNAME;
+
+} DPLAPPINFO, *LPDPLAPPINFO;
+typedef const DPLAPPINFO *LPCDPLAPPINFO;
+
+typedef struct DPCOMPOUNDADDRESSELEMENT
+{
+    GUID    guidDataType;
+    DWORD   dwDataSize;
+    LPVOID  lpData;
+} DPCOMPOUNDADDRESSELEMENT, *LPDPCOMPOUNDADDRESSELEMENT;
+typedef const DPCOMPOUNDADDRESSELEMENT *LPCDPCOMPOUNDADDRESSELEMENT;
+
+typedef struct tagDPAPPLICATIONDESC
+{
+    DWORD       dwSize;
+    DWORD       dwFlags;
+
+    union
+    {
+        LPSTR       lpszApplicationNameA;
+        LPWSTR      lpszApplicationName;
+    } DUMMYUNIONNAME1;
+
+    GUID        guidApplication;
+
+    union
+    {
+        LPSTR       lpszFilenameA;
+        LPWSTR      lpszFilename;
+    } DUMMYUNIONNAME2;
+
+    union
+    {
+        LPSTR       lpszCommandLineA;
+        LPWSTR      lpszCommandLine;
+    } DUMMYUNIONNAME3;
+
+    union
+    {
+        LPSTR       lpszPathA;
+        LPWSTR      lpszPath;
+    } DUMMYUNIONNAME4;
+
+    union
+    {
+        LPSTR       lpszCurrentDirectoryA;
+        LPWSTR      lpszCurrentDirectory;
+    } DUMMYUNIONNAME5;
+
+    LPSTR       lpszDescriptionA;
+    LPWSTR      lpszDescriptionW;
+
+} DPAPPLICATIONDESC, *LPDPAPPLICATIONDESC;
+
+
+
+extern HRESULT WINAPI DirectPlayLobbyCreateW(LPGUID, LPDIRECTPLAYLOBBY*,  IUnknown*, LPVOID, DWORD );
+extern HRESULT WINAPI DirectPlayLobbyCreateA(LPGUID, LPDIRECTPLAYLOBBYA*, IUnknown*, LPVOID, DWORD );
+#define DirectPlayLobbyCreate WINELIB_NAME_AW(DirectPlayLobbyCreate)
+
+
+typedef BOOL (CALLBACK *LPDPENUMADDRESSCALLBACK)(
+    REFGUID         guidDataType,
+    DWORD           dwDataSize,
+    LPCVOID         lpData,
+    LPVOID          lpContext );
+
+typedef BOOL (CALLBACK *LPDPLENUMADDRESSTYPESCALLBACK)(
+    REFGUID         guidDataType,
+    LPVOID          lpContext,
+    DWORD           dwFlags );
+
+typedef BOOL (CALLBACK *LPDPLENUMLOCALAPPLICATIONSCALLBACK)(
+    LPCDPLAPPINFO   lpAppInfo,
+    LPVOID          lpContext,
+    DWORD           dwFlags );
+
+/*****************************************************************************
+ * IDirectPlayLobby and IDirectPlayLobbyA interface
+ */
+#define INTERFACE IDirectPlayLobby
+DECLARE_INTERFACE_(IDirectPlayLobby,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectPlayLobby methods ***/
+    STDMETHOD(Connect)(THIS_ DWORD, LPDIRECTPLAY2*, IUnknown*) PURE;
+    STDMETHOD(CreateAddress)(THIS_ REFGUID, REFGUID, LPCVOID, DWORD, LPVOID, LPDWORD) PURE;
+    STDMETHOD(EnumAddress)(THIS_ LPDPENUMADDRESSCALLBACK, LPCVOID, DWORD, LPVOID) PURE;
+    STDMETHOD(EnumAddressTypes)(THIS_ LPDPLENUMADDRESSTYPESCALLBACK, REFGUID, LPVOID, DWORD) PURE;
+    STDMETHOD(EnumLocalApplications)(THIS_ LPDPLENUMLOCALAPPLICATIONSCALLBACK, LPVOID, DWORD) PURE;
+    STDMETHOD(GetConnectionSettings)(THIS_ DWORD, LPVOID, LPDWORD) PURE;
+    STDMETHOD(ReceiveLobbyMessage)(THIS_ DWORD, DWORD, LPDWORD, LPVOID, LPDWORD) PURE;
+    STDMETHOD(RunApplication)(THIS_ DWORD, LPDWORD, LPDPLCONNECTION, HANDLE) PURE;
+    STDMETHOD(SendLobbyMessage)(THIS_ DWORD, DWORD, LPVOID, DWORD) PURE;
+    STDMETHOD(SetConnectionSettings)(THIS_ DWORD, DWORD, LPDPLCONNECTION) PURE;
+    STDMETHOD(SetLobbyMessageEvent)(THIS_ DWORD, DWORD, HANDLE) PURE;
+};
+#undef INTERFACE
+
+/*****************************************************************************
+ * IDirectPlayLobby2 and IDirectPlayLobby2A interface
+ */
+#define INTERFACE IDirectPlayLobby2
+DECLARE_INTERFACE_(IDirectPlayLobby2,IDirectPlayLobby)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectPlayLobby methods ***/
+    STDMETHOD(Connect)(THIS_ DWORD, LPDIRECTPLAY2*, IUnknown*) PURE;
+    STDMETHOD(CreateAddress)(THIS_ REFGUID, REFGUID, LPCVOID, DWORD, LPVOID, LPDWORD) PURE;
+    STDMETHOD(EnumAddress)(THIS_ LPDPENUMADDRESSCALLBACK, LPCVOID, DWORD, LPVOID) PURE;
+    STDMETHOD(EnumAddressTypes)(THIS_ LPDPLENUMADDRESSTYPESCALLBACK, REFGUID, LPVOID, DWORD) PURE;
+    STDMETHOD(EnumLocalApplications)(THIS_ LPDPLENUMLOCALAPPLICATIONSCALLBACK, LPVOID, DWORD) PURE;
+    STDMETHOD(GetConnectionSettings)(THIS_ DWORD, LPVOID, LPDWORD) PURE;
+    STDMETHOD(ReceiveLobbyMessage)(THIS_ DWORD, DWORD, LPDWORD, LPVOID, LPDWORD) PURE;
+    STDMETHOD(RunApplication)(THIS_ DWORD, LPDWORD, LPDPLCONNECTION, HANDLE) PURE;
+    STDMETHOD(SendLobbyMessage)(THIS_ DWORD, DWORD, LPVOID, DWORD) PURE;
+    STDMETHOD(SetConnectionSettings)(THIS_ DWORD, DWORD, LPDPLCONNECTION) PURE;
+    STDMETHOD(SetLobbyMessageEvent)(THIS_ DWORD, DWORD, HANDLE) PURE;
+    /*** IDirectPlayLobby2 methods ***/
+    STDMETHOD(CreateCompoundAddress)(THIS_ LPCDPCOMPOUNDADDRESSELEMENT, DWORD, LPVOID, LPDWORD) PURE;
+};
+#undef INTERFACE
+
+/*****************************************************************************
+ * IDirectPlayLobby3 and IDirectPlayLobby3A interface
+ */
+#define INTERFACE IDirectPlayLobby3
+DECLARE_INTERFACE_(IDirectPlayLobby3,IDirectPlayLobby2)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectPlayLobby methods ***/
+    STDMETHOD(Connect)(THIS_ DWORD, LPDIRECTPLAY2*, IUnknown*) PURE;
+    STDMETHOD(CreateAddress)(THIS_ REFGUID, REFGUID, LPCVOID, DWORD, LPVOID, LPDWORD) PURE;
+    STDMETHOD(EnumAddress)(THIS_ LPDPENUMADDRESSCALLBACK, LPCVOID, DWORD, LPVOID) PURE;
+    STDMETHOD(EnumAddressTypes)(THIS_ LPDPLENUMADDRESSTYPESCALLBACK, REFGUID, LPVOID, DWORD) PURE;
+    STDMETHOD(EnumLocalApplications)(THIS_ LPDPLENUMLOCALAPPLICATIONSCALLBACK, LPVOID, DWORD) PURE;
+    STDMETHOD(GetConnectionSettings)(THIS_ DWORD, LPVOID, LPDWORD) PURE;
+    STDMETHOD(ReceiveLobbyMessage)(THIS_ DWORD, DWORD, LPDWORD, LPVOID, LPDWORD) PURE;
+    STDMETHOD(RunApplication)(THIS_ DWORD, LPDWORD, LPDPLCONNECTION, HANDLE) PURE;
+    STDMETHOD(SendLobbyMessage)(THIS_ DWORD, DWORD, LPVOID, DWORD) PURE;
+    STDMETHOD(SetConnectionSettings)(THIS_ DWORD, DWORD, LPDPLCONNECTION) PURE;
+    STDMETHOD(SetLobbyMessageEvent)(THIS_ DWORD, DWORD, HANDLE) PURE;
+    /*** IDirectPlayLobby2 methods ***/
+    STDMETHOD(CreateCompoundAddress)(THIS_ LPCDPCOMPOUNDADDRESSELEMENT, DWORD, LPVOID, LPDWORD) PURE;
+    /*** IDirectPlayLobby3 methods ***/
+    STDMETHOD(ConnectEx)(THIS_ DWORD, REFIID, LPVOID *, IUnknown *) PURE;
+    STDMETHOD(RegisterApplication)(THIS_ DWORD, LPDPAPPLICATIONDESC) PURE;
+    STDMETHOD(UnregisterApplication)(THIS_ DWORD, REFGUID) PURE;
+    STDMETHOD(WaitForConnectionSettings)(THIS_ DWORD) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectPlayLobby_QueryInterface(p,a,b)              (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectPlayLobby_AddRef(p)                          (p)->lpVtbl->AddRef(p)
+#define IDirectPlayLobby_Release(p)                         (p)->lpVtbl->Release(p)
+/*** IDirectPlayLobby methods ***/
+#define IDirectPlayLobby_Connect(p,a,b,c)                   (p)->lpVtbl->Connect(p,a,b,c)
+#define IDirectPlayLobby_CreateAddress(p,a,b,c,d,e,f)       (p)->lpVtbl->CreateAddress(p,a,b,c,d,e,f)
+#define IDirectPlayLobby_EnumAddress(p,a,b,c,d)             (p)->lpVtbl->EnumAddress(p,a,b,c,d)
+#define IDirectPlayLobby_EnumAddressTypes(p,a,b,c,d)        (p)->lpVtbl->EnumAddressTypes(p,a,b,c,d)
+#define IDirectPlayLobby_EnumLocalApplications(p,a,b,c)     (p)->lpVtbl->EnumLocalApplications(p,a,b,c)
+#define IDirectPlayLobby_GetConnectionSettings(p,a,b,c)     (p)->lpVtbl->GetConnectionSettings(p,a,b,c)
+#define IDirectPlayLobby_ReceiveLobbyMessage(p,a,b,c,d,e)   (p)->lpVtbl->ReceiveLobbyMessage(p,a,b,c,d,e)
+#define IDirectPlayLobby_RunApplication(p,a,b,c,d)          (p)->lpVtbl->RunApplication(p,a,b,c,d)
+#define IDirectPlayLobby_SendLobbyMessage(p,a,b,c,d)        (p)->lpVtbl->SendLobbyMessage(p,a,b,c,d)
+#define IDirectPlayLobby_SetConnectionSettings(p,a,b,c)     (p)->lpVtbl->SetConnectionSettings(p,a,b,c)
+#define IDirectPlayLobby_SetLobbyMessageEvent(p,a,b,c)      (p)->lpVtbl->SetLobbyMessageEvent(p,a,b,c)
+/*** IDirectPlayLobby2 methods ***/
+#define IDirectPlayLobby_CreateCompoundAddress(p,a,b,c,d)   (p)->lpVtbl->CreateCompoundAddress(p,a,b,c,d)
+/*** IDirectPlayLobby3 methods ***/
+#define IDirectPlayLobby_ConnectEx(p,a,b,c,d)               (p)->lpVtbl->ConnectEx(p,a,b,c,d)
+#define IDirectPlayLobby_RegisterApplication(p,a,b)         (p)->lpVtbl->RegisterApplication(p,a,b)
+#define IDirectPlayLobby_UnregisterApplication(p,a,b)       (p)->lpVtbl->UnregisterApplication(p,a,b)
+#define IDirectPlayLobby_WaitForConnectionSettings(p,a)     (p)->lpVtbl->WaitForConnectionSettings(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirectPlayLobby_QueryInterface(p,a,b)              (p)->QueryInterface(a,b)
+#define IDirectPlayLobby_AddRef(p)                          (p)->AddRef()
+#define IDirectPlayLobby_Release(p)                         (p)->Release()
+/*** IDirectPlayLobby methods ***/
+#define IDirectPlayLobby_Connect(p,a,b,c)                   (p)->Connect(a,b,c)
+#define IDirectPlayLobby_CreateAddress(p,a,b,c,d,e,f)       (p)->CreateAddress(a,b,c,d,e,f)
+#define IDirectPlayLobby_EnumAddress(p,a,b,c,d)             (p)->EnumAddress(a,b,c,d)
+#define IDirectPlayLobby_EnumAddressTypes(p,a,b,c,d)        (p)->EnumAddressTypes(a,b,c,d)
+#define IDirectPlayLobby_EnumLocalApplications(p,a,b,c)     (p)->EnumLocalApplications(a,b,c)
+#define IDirectPlayLobby_GetConnectionSettings(p,a,b,c)     (p)->GetConnectionSettings(a,b,c)
+#define IDirectPlayLobby_ReceiveLobbyMessage(p,a,b,c,d,e)   (p)->ReceiveLobbyMessage(a,b,c,d,e)
+#define IDirectPlayLobby_RunApplication(p,a,b,c,d)          (p)->RunApplication(a,b,c,d)
+#define IDirectPlayLobby_SendLobbyMessage(p,a,b,c,d)        (p)->SendLobbyMessage(a,b,c,d)
+#define IDirectPlayLobby_SetConnectionSettings(p,a,b,c)     (p)->SetConnectionSettings(a,b,c)
+#define IDirectPlayLobby_SetLobbyMessageEvent(p,a,b,c)      (p)->SetLobbyMessageEvent(a,b,c)
+/*** IDirectPlayLobby2 methods ***/
+#define IDirectPlayLobby_CreateCompoundAddress(p,a,b,c,d)   (p)->CreateCompoundAddress(a,b,c,d)
+/*** IDirectPlayLobby3 methods ***/
+#define IDirectPlayLobby_ConnectEx(p,a,b,c,d)               (p)->ConnectEx(a,b,c,d)
+#define IDirectPlayLobby_RegisterApplication(p,a,b)         (p)->RegisterApplication(a,b)
+#define IDirectPlayLobby_UnregisterApplication(p,a,b)       (p)->UnregisterApplication(a,b)
+#define IDirectPlayLobby_WaitForConnectionSettings(p,a)     (p)->WaitForConnectionSettings(a)
+#endif
+
+/* Used for WaitForConnectionSettings */
+#define DPLWAIT_CANCEL                  0x00000001
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif /* __WINE_DPLOBBY_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dplobby8.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dplobby8.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dplobby8.h	(revision 16410)
@@ -0,0 +1,259 @@
+/*
+ * Copyright (C) 2003-2005 Raphael Junqueira
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DPLOBBY8_H
+#define __WINE_DPLOBBY8_H
+
+#include <ole2.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+/*****************************************************************************
+ * DirectPlay8Lobby defines
+ */
+#define DPL_MSGID_LOBBY                   0x8000
+#define DPL_MSGID_RECEIVE                 (0x0001 | DPL_MSGID_LOBBY)
+#define DPL_MSGID_CONNECT                 (0x0002 | DPL_MSGID_LOBBY)
+#define DPL_MSGID_DISCONNECT              (0x0003 | DPL_MSGID_LOBBY)
+#define DPL_MSGID_SESSION_STATUS          (0x0004 | DPL_MSGID_LOBBY)
+#define DPL_MSGID_CONNECTION_SETTINGS     (0x0005 | DPL_MSGID_LOBBY)
+#define DPLHANDLE_ALLCONNECTIONS          0xFFFFFFFF
+#define DPLSESSION_CONNECTED              0x0001
+#define DPLSESSION_COULDNOTCONNECT        0x0002
+#define DPLSESSION_DISCONNECTED           0x0003
+#define DPLSESSION_TERMINATED             0x0004
+#define DPLSESSION_HOSTMIGRATED           0x0005
+#define DPLSESSION_HOSTMIGRATEDHERE       0x0006
+#define DPLAVAILABLE_ALLOWMULTIPLECONNECT 0x0001
+#define DPLCONNECT_LAUNCHNEW              0x0001
+#define DPLCONNECT_LAUNCHNOTFOUND         0x0002
+#define DPLCONNECTSETTINGS_HOST           0x0001
+#define DPLINITIALIZE_DISABLEPARAMVAL     0x0001
+
+/*****************************************************************************
+ * DirectPlay8Lobby structures Typedefs
+ */
+typedef struct _DPL_APPLICATION_INFO {
+  GUID    guidApplication;
+  PWSTR   pwszApplicationName;
+  DWORD   dwNumRunning;
+  DWORD   dwNumWaiting;
+  DWORD   dwFlags;
+} DPL_APPLICATION_INFO, *PDPL_APPLICATION_INFO;
+
+typedef struct _DPL_CONNECTION_SETTINGS {
+  DWORD                 dwSize;
+  DWORD                 dwFlags;
+  DPN_APPLICATION_DESC  dpnAppDesc;
+  IDirectPlay8Address*  pdp8HostAddress;
+  IDirectPlay8Address** ppdp8DeviceAddresses;
+  DWORD                 cNumDeviceAddresses;
+  PWSTR                 pwszPlayerName;
+} DPL_CONNECTION_SETTINGS, *PDPL_CONNECTION_SETTINGS;
+
+typedef struct _DPL_CONNECT_INFO {
+  DWORD	                   dwSize;
+  DWORD	                   dwFlags;
+  GUID                     guidApplication;
+  PDPL_CONNECTION_SETTINGS pdplConnectionSettings;
+  PVOID                    pvLobbyConnectData;
+  DWORD                    dwLobbyConnectDataSize;
+} DPL_CONNECT_INFO, *PDPL_CONNECT_INFO;
+
+typedef struct  _DPL_PROGRAM_DESC {
+  DWORD   dwSize;
+  DWORD   dwFlags;
+  GUID    guidApplication;
+  PWSTR   pwszApplicationName;
+  PWSTR   pwszCommandLine;
+  PWSTR   pwszCurrentDirectory;
+  PWSTR   pwszDescription;
+  PWSTR   pwszExecutableFilename;
+  PWSTR   pwszExecutablePath;
+  PWSTR   pwszLauncherFilename;
+  PWSTR   pwszLauncherPath;
+} DPL_PROGRAM_DESC, *PDPL_PROGRAM_DESC;
+
+typedef struct _DPL_MESSAGE_CONNECT {
+  DWORD                    dwSize;
+  DPNHANDLE                hConnectId;
+  PDPL_CONNECTION_SETTINGS pdplConnectionSettings;
+  PVOID	                   pvLobbyConnectData;
+  DWORD	                   dwLobbyConnectDataSize;
+  PVOID	                   pvConnectionContext;
+} DPL_MESSAGE_CONNECT, *PDPL_MESSAGE_CONNECT;
+
+typedef struct _DPL_MESSAGE_CONNECTION_SETTINGS {
+  DWORD                     dwSize;
+  DPNHANDLE                 hSender;
+  PDPL_CONNECTION_SETTINGS  pdplConnectionSettings;
+  PVOID	                    pvConnectionContext;
+} DPL_MESSAGE_CONNECTION_SETTINGS, *PDPL_MESSAGE_CONNECTION_SETTINGS;
+
+typedef struct _DPL_MESSAGE_DISCONNECT {
+  DWORD	    dwSize;
+  DPNHANDLE hDisconnectId;
+  HRESULT   hrReason;
+  PVOID	    pvConnectionContext;
+} DPL_MESSAGE_DISCONNECT, *PDPL_MESSAGE_DISCONNECT;
+
+typedef struct _DPL_MESSAGE_RECEIVE {
+  DWORD	    dwSize;
+  DPNHANDLE hSender;
+  BYTE*     pBuffer;
+  DWORD	    dwBufferSize;
+  PVOID	    pvConnectionContext;
+} DPL_MESSAGE_RECEIVE, *PDPL_MESSAGE_RECEIVE;
+
+typedef struct _DPL_MESSAGE_SESSION_STATUS {
+  DWORD     dwSize;
+  DPNHANDLE hSender;
+  DWORD     dwStatus;
+  PVOID	    pvConnectionContext;
+} DPL_MESSAGE_SESSION_STATUS, *PDPL_MESSAGE_SESSION_STATUS;
+
+/*****************************************************************************
+ * Predeclare the interfaces
+ */
+DEFINE_GUID(CLSID_DirectPlay8LobbiedApplication,  0x667955ad,0x6b3b,0x43ca,0xb9,0x49,0xbc,0x69,0xb5,0xba,0xff,0x7f);
+DEFINE_GUID(CLSID_DirectPlay8LobbyClient,         0x3b2b6775,0x70b6,0x45af,0x8d,0xea,0xa2,0x09,0xc6,0x95,0x59,0xf3);
+
+DEFINE_GUID(IID_IDirectPlay8LobbiedApplication,   0x819074a3,0x16c,0x11d3,0xae,0x14,0x00,0x60,0x97,0xb0,0x14,0x11);
+typedef struct IDirectPlay8LobbiedApplication *PDIRECTPLAY8LOBBIEDAPPLICATION;
+DEFINE_GUID(IID_IDirectPlay8LobbyClient,          0x819074a2,0x16c,0x11d3,0xae,0x14,0x00,0x60,0x97,0xb0,0x14,0x11);
+typedef struct IDirectPlay8LobbyClient *PDIRECTPLAY8LOBBYCLIENT;
+
+/*****************************************************************************
+ * IDirectPlay8LobbiedApplication interface
+ */
+#define INTERFACE IDirectPlay8LobbiedApplication
+DECLARE_INTERFACE_(IDirectPlay8LobbiedApplication,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectPlay8LobbiedApplication methods ***/
+    STDMETHOD(Initialize)(THIS_ CONST PVOID pvUserContext, CONST PFNDPNMESSAGEHANDLER pfn, DPNHANDLE* CONST pdpnhConnection, CONST DWORD dwFlags) PURE;
+    STDMETHOD(RegisterProgram)(THIS_ PDPL_PROGRAM_DESC pdplProgramDesc, CONST DWORD dwFlags) PURE;
+    STDMETHOD(UnRegisterProgram)(THIS_ GUID* pguidApplication, CONST DWORD dwFlags) PURE;
+    STDMETHOD(Send)(THIS_ CONST DPNHANDLE hConnection, BYTE* CONST pBuffer, CONST DWORD pBufferSize, CONST DWORD dwFlags) PURE;
+    STDMETHOD(SetAppAvailable)(THIS_ CONST BOOL fAvailable, CONST DWORD dwFlags) PURE;
+    STDMETHOD(UpdateStatus)(THIS_ CONST DPNHANDLE hConnection, CONST DWORD dwStatus, CONST DWORD dwFlags) PURE;
+    STDMETHOD(Close)(THIS_ CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetConnectionSettings)(THIS_ CONST DPNHANDLE hConnection, DPL_CONNECTION_SETTINGS* CONST pdplSessionInfo, DWORD* pdwInfoSize, CONST DWORD dwFlags) PURE;
+    STDMETHOD(SetConnectionSettings)(THIS_ CONST DPNHANDLE hConnection, CONST DPL_CONNECTION_SETTINGS* CONST pdplSessionInfo, CONST DWORD dwFlags) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectPlay8LobbiedApplication_QueryInterface(p,a,b)                (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectPlay8LobbiedApplication_AddRef(p)                            (p)->lpVtbl->AddRef(p)
+#define IDirectPlay8LobbiedApplication_Release(p)                           (p)->lpVtbl->Release(p)
+/*** IDirectPlay8LobbiedApplication methods ***/
+#define IDirectPlay8LobbiedApplication_Initialize(p,a,b,c,d)                (p)->lpVtbl->Initialize(p,a,b,c,d)
+#define IDirectPlay8LobbiedApplication_RegisterProgram(p,a,b)               (p)->lpVtbl->RegisterProgram(p,a,b)
+#define IDirectPlay8LobbiedApplication_UnRegisterProgram(p,a,b)             (p)->lpVtbl->UnRegisterProgram(p,a,b)
+#define IDirectPlay8LobbiedApplication_Send(p,a,b,c,d)                      (p)->lpVtbl->Send(p,a,b,c,d)
+#define IDirectPlay8LobbiedApplication_SetAppAvailable(p,a,b)               (p)->lpVtbl->SetAppAvailable(p,a,b)
+#define IDirectPlay8LobbiedApplication_UpdateStatus(p,a,b,c)                (p)->lpVtbl->UpdateStatus(p,a,b,c)
+#define IDirectPlay8LobbiedApplication_Close(p,a)                           (p)->lpVtbl->Close(p,a)
+#define IDirectPlay8LobbiedApplication_GetConnectionSettings(p,a,b,c,d)     (p)->lpVtbl->GetConnectionSettings(p,a,b,c,d)
+#define IDirectPlay8LobbiedApplication_SetConnectionSettings(p,a,b,c)       (p)->lpVtbl->SetConnectionSettings(p,a,b,c)
+#else
+/*** IUnknown methods ***/
+#define IDirectPlay8LobbiedApplication_QueryInterface(p,a,b)                (p)->QueryInterface(a,b)
+#define IDirectPlay8LobbiedApplication_AddRef(p)                            (p)->AddRef()
+#define IDirectPlay8LobbiedApplication_Release(p)                           (p)->Release()
+/*** IDirectPlay8LobbiedApplication methods ***/
+#define IDirectPlay8LobbiedApplication_Initialize(p,a,b,c,d)                (p)->Initialize(a,b,c,d)
+#define IDirectPlay8LobbiedApplication_RegisterProgram(p,a,b)               (p)->RegisterProgram(a,b)
+#define IDirectPlay8LobbiedApplication_UnRegisterProgram(p,a,b)             (p)->UnRegisterProgram(a,b)
+#define IDirectPlay8LobbiedApplication_Send(p,a,b,c,d)                      (p)->Send(a,b,c,d)
+#define IDirectPlay8LobbiedApplication_SetAppAvailable(p,a,b)               (p)->SetAppAvailable(a,b)
+#define IDirectPlay8LobbiedApplication_UpdateStatus(p,a,b,c)                (p)->UpdateStatus(a,b,c)
+#define IDirectPlay8LobbiedApplication_Close(p,a)                           (p)->Close(a)
+#define IDirectPlay8LobbiedApplication_GetConnectionSettings(p,a,b,c,d)     (p)->GetConnectionSettings(a,b,c,d)
+#define IDirectPlay8LobbiedApplication_SetConnectionSettings(p,a,b,c)       (p)->SetConnectionSettings(a,b,c)
+#endif
+
+/*****************************************************************************
+ * IDirectPlay8LobbyClient interface
+ */
+#define INTERFACE IDirectPlay8LobbyClient
+DECLARE_INTERFACE_(IDirectPlay8LobbyClient,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectPlay8LobbyClient methods ***/
+    STDMETHOD(Initialize)(THIS_ CONST PVOID pvUserContext, CONST PFNDPNMESSAGEHANDLER pfn, CONST DWORD dwFlags) PURE;
+    STDMETHOD(EnumLocalPrograms)(THIS_ GUID* CONST pGuidApplication, BYTE* CONST pEnumData, DWORD* CONST pdwEnumData, DWORD* CONST pdwItems, CONST DWORD dwFlags) PURE;
+    STDMETHOD(ConnectApplication)(THIS_ DPL_CONNECT_INFO* CONST pdplConnectionInfo, CONST PVOID pvConnectionContext, DPNHANDLE* CONST hApplication, CONST DWORD dwTimeOut, CONST DWORD dwFlags) PURE;
+    STDMETHOD(Send)(THIS_ CONST DPNHANDLE hConnection, BYTE* CONST pBuffer, CONST DWORD pBufferSize, CONST DWORD dwFlags) PURE;
+    STDMETHOD(ReleaseApplication)(THIS_ CONST DPNHANDLE hConnection, CONST DWORD dwFlags) PURE;
+    STDMETHOD(Close)(THIS_ CONST DWORD dwFlags) PURE;
+    STDMETHOD(GetConnectionSettings)(THIS_ CONST DPNHANDLE hConnection, DPL_CONNECTION_SETTINGS* CONST pdplSessionInfo, DWORD* pdwInfoSize, CONST DWORD dwFlags) PURE;	
+    STDMETHOD(SetConnectionSettings)(THIS_ CONST DPNHANDLE hConnection, CONST DPL_CONNECTION_SETTINGS* CONST pdplSessionInfo, CONST DWORD dwFlags) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectPlay8LobbyClient_QueryInterface(p,a,b)                (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectPlay8LobbyClient_AddRef(p)                            (p)->lpVtbl->AddRef(p)
+#define IDirectPlay8LobbyClient_Release(p)                           (p)->lpVtbl->Release(p)
+/*** IDirectPlay8LobbyClient methods ***/
+#define IDirectPlay8LobbyClient_Initialize(p,a,b,c)                  (p)->lpVtbl->Initialize(p,a,b,c)
+#define IDirectPlay8LobbyClient_EnumLocalPrograms(p,a,b,c,d,e)       (p)->lpVtbl->EnumLocalPrograms(p,a,b,c,d,e)
+#define IDirectPlay8LobbyClient_ConnectApplication(p,a,b,c,d,e)      (p)->lpVtbl->ConnectApplication(p,a,b,c,d,e)
+#define IDirectPlay8LobbyClient_Send(p,a,b,c,d)                      (p)->lpVtbl->Send(p,a,b,c,d)
+#define IDirectPlay8LobbyClient_ReleaseApplication(p,a,b)            (p)->lpVtbl->ReleaseApplication(p,a,b)
+#define IDirectPlay8LobbyClient_Close(p,a)                           (p)->lpVtbl->Close(p,a)
+#define IDirectPlay8LobbyClient_GetConnectionSettings(p,a,b,c,d)     (p)->lpVtbl->GetConnectionSettings(p,a,b,c,d)
+#define IDirectPlay8LobbyClient_SetConnectionSettings(p,a,b,c)       (p)->lpVtbl->SetConnectionSettings(p,a,b,c)
+#else
+/*** IUnknown methods ***/
+#define IDirectPlay8LobbyClient_QueryInterface(p,a,b)                (p)->QueryInterface(a,b)
+#define IDirectPlay8LobbyClient_AddRef(p)                            (p)->AddRef()
+#define IDirectPlay8LobbyClient_Release(p)                           (p)->Release()
+/*** IDirectPlay8LobbyClient methods ***/
+#define IDirectPlay8LobbyClient_Initialize(p,a,b,c)                  (p)->Initialize(a,b,c)
+#define IDirectPlay8LobbyClient_EnumLocalPrograms(p,a,b,c,d,e)       (p)->EnumLocalPrograms(a,b,c,d,e)
+#define IDirectPlay8LobbyClient_ConnectApplication(p,a,b,c,d,e)      (p)->ConnectApplication(a,b,c,d,e)
+#define IDirectPlay8LobbyClient_Send(p,a,b,c,d)                      (p)->Send(a,b,c,d)
+#define IDirectPlay8LobbyClient_ReleaseApplication(p,a,b)            (p)->ReleaseApplication(a,b)
+#define IDirectPlay8LobbyClient_Close(p,a)                           (p)->Close(a)
+#define IDirectPlay8LobbyClient_GetConnectionSettings(p,a,b,c,d)     (p)->GetConnectionSettings(a,b,c,d)
+#define IDirectPlay8LobbyClient_SetConnectionSettings(p,a,b,c)       (p)->SetConnectionSettings(a,b,c)
+#endif
+
+
+/* Export functions */
+
+HRESULT WINAPI DirectPlay8LobbyCreate(CONST GUID* pcIID, LPVOID* ppvInterface, IUnknown* pUnknown);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif 
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dpnathlp.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dpnathlp.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dpnathlp.h	(revision 16410)
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2006 Maarten Lankhorst
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __DPNATHLP_H__
+#define __DPNATHLP_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+HRESULT DirectPlayNATHelpCreate(LPCGUID pIID, LPVOID *ppvInterface);
+
+DEFINE_GUID(CLSID_DirectPlayNATHelpUPnP, 0xb9c2e9c4,0x68c1,0x4d42,0xa7,0xa1,0xe7,0x6a,0x26,0x98,0x2a,0xd6);
+DEFINE_GUID(CLSID_DirectPlayNATHelpPAST, 0x963ab779,0x16a1,0x477c,0xa3,0x6d,0xcb,0x5e,0x71,0x19,0x38,0xf7);
+DEFINE_GUID(IID_IDirectPlayNATHelp,      0x154940b6,0x2278,0x4a2f,0x91,0x01,0x9b,0xa9,0xf4,0x31,0xf6,0x03);
+
+#define DPNHGETCAPS_UPDATESERVERSTATUS  0x01
+
+#define DPNHREGISTERPORTS_TCP           0x01
+#define DPNHREGISTERPORTS_FIXEDPORTS    0x02
+#define DPNHREGISTERPORTS_SHAREDPORTS   0x04
+
+#define DPNHADDRESSTYPE_TCP             0x01
+#define DPNHADDRESSTYPE_FIXEDPORTS      0x02
+#define DPNHADDRESSTYPE_SHAREDPORTS     0x04
+#define DPNHADDRESSTYPE_LOCALFIREWALL   0x08
+#define DPNHADDRESSTYPE_GATEWAY         0x10
+#define DPNHADDRESSTYPE_GATEWAYISLOCAL  0x20
+
+#define DPNHCAPSFLAG_LOCALFIREWALLPRESENT       0x01
+#define DPNHCAPSFLAG_GATEWAYPRESENT             0x02
+#define DPNHCAPSFLAG_GATEWAYISLOCAL             0x04
+#define DPNHCAPSFLAG_PUBLICADDRESSAVAILABLE     0x08
+#define DPNHCAPSFLAG_NOTALLSUPPORTACTIVENOTIFY  0x10
+
+#define DPNHINITIALIZE_DISABLEGATEWAYSUPPORT        0x01
+#define DPNHINITIALIZE_DISABLELOCALFIREWALLSUPPORT  0x02
+
+#define DPNHQUERYADDRESS_TCP                        0x01
+#define DPNHQUERYADDRESS_CACHEFOUND                 0x02
+#define DPNHQUERYADDRESS_CACHENOTFOUND              0x04
+#define DPNHQUERYADDRESS_CHECKFORPRIVATEBUTUNMAPPED 0x08
+
+#define DPNHGETREGISTEREDADDRESSES_LOCALFIREWALLREMAPONLY 0x01
+
+#define _DPNH_FACILITY_CODE   0x015
+#define _DPNH_HRESULT_BASE    0xF000
+
+#define MAKE_DPNHSUCCESS(code) \
+               MAKE_HRESULT(0, _DPNH_FACILITY_CODE, (code + _DPNH_HRESULT_BASE))
+#define MAKE_DPNHFAILURE(code) \
+               MAKE_HRESULT(1, _DPNH_FACILITY_CODE, (code + _DPNH_HRESULT_BASE))
+
+#define DPNH_OK                         S_OK
+#define DPNHSUCCESS_ADDRESSESCHANGED    MAKE_DPNHSUCCESS(0x10)
+
+#define DPNHERR_ALREADYINITIALIZED      MAKE_DPNHFAILURE(0x10)
+#define DPNHERR_BUFFERTOOSMALL          MAKE_DPNHFAILURE(0x20)
+#define DPNHERR_GENERIC                 E_FAIL
+#define DPNHERR_INVALIDFLAGS            MAKE_DPNHFAILURE(0x30)
+#define DPNHERR_INVALIDOBJECT           MAKE_DPNHFAILURE(0x40)
+#define DPNHERR_INVALIDPARAM            E_INVALIDARG
+#define DPNHERR_INVALIDPOINTER          E_POINTER
+#define DPNHERR_NOMAPPING               MAKE_DPNHFAILURE(0x50)
+#define DPNHERR_NOMAPPINGBUTPRIVATE     MAKE_DPNHFAILURE(0x60)
+#define DPNHERR_NOTINITIALIZED          MAKE_DPNHFAILURE(0x70)
+#define DPNHERR_OUTOFMEMORY             E_OUTOFMEMORY
+#define DPNHERR_PORTALREADYREGISTERED   MAKE_DPNHFAILURE(0x80)
+#define DPNHERR_PORTUNAVAILABLE         MAKE_DPNHFAILURE(0x90)
+#define DPNHERR_REENTRANT               MAKE_DPNHFAILURE(0x95)
+#define DPNHERR_SERVERNOTAVAILABLE      MAKE_DPNHFAILURE(0xA0)
+#define DPNHERR_UPDATESERVERSTATUS      MAKE_DPNHFAILURE(0xC0)
+	
+typedef DWORD_PTR DPNHHANDLE;
+typedef DWORD_PTR *PDPNHHANDLE;
+
+typedef struct _DPNHCAPS
+{
+   DWORD dwSize;
+   DWORD dwFlags;
+   DWORD dwNumRegisteredPorts;
+   DWORD dwMinLeaseTimeRemaining;
+   DWORD dwRecommendedGetCapsInterval;
+} DPNHCAPS, *PDPNHCAPS;
+
+
+#define INTERFACE IDirectPlayNATHelp
+DECLARE_INTERFACE_(IDirectPlayNATHelp,IUnknown)
+{
+   /*** IUnknown methods ***/
+   STDMETHOD(QueryInterface) (THIS_
+                              REFIID riid,
+                              void** ppvObject) PURE;
+
+   STDMETHOD_(ULONG,AddRef)  (THIS) PURE;
+
+   STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+   /*** IDirectPlayNATHelp functions ***/
+   STDMETHOD(Initialize)     (THIS_
+                              const DWORD dwFlags) PURE;
+
+   STDMETHOD(Close)          (THIS_
+                              const DWORD dwFlags) PURE;
+
+   STDMETHOD(GetCaps)        (THIS_
+                              const PDPNHCAPS pCaps,
+                              const DWORD dwFlags) PURE;
+
+   STDMETHOD(RegisterPorts)  (THIS_
+                              const PSOCKADDR aLocalAddresses,
+                              const DWORD dwAddressSize,
+                              const DWORD dwAddresses,
+                              const DWORD dwTime,
+                              const PDPNHHANDLE phRegisteredPorts,
+                              const DWORD dwFlags) PURE;
+
+   STDMETHOD(GetRegisteredAddresses) (THIS_
+                              const PDPNHHANDLE hRegisteredPorts,
+                              const PSOCKADDR paPublicAddresses,
+                              const DWORD *dwAddressSize,
+                              const DWORD *dwAddressFlags,
+                              const DWORD *dwRemaining,
+                              const DWORD dwFlags) PURE;
+
+   STDMETHOD(DeregisterPorts)(THIS_
+                              const DPNHHANDLE hRegPorts,
+                              const DWORD dwFlags) PURE;
+
+   STDMETHOD(QueryAddress)   (THIS_
+                              const PSOCKADDR pSource,
+                              const PSOCKADDR pQuery,
+                              const PSOCKADDR pResponse,
+                              const INT iAddresses,
+                              const DWORD dwFlags) PURE;
+
+   STDMETHOD(SetAlertEvent)  (THIS_
+                              const HANDLE hEvent,
+                              const DWORD dwFlags) PURE;
+
+   STDMETHOD(SetAlertIOCompletionPort)(THIS_
+                              const HANDLE hIOCompletionPort,
+                              const DWORD dwCompletion,
+                              const DWORD dwMaxThreads,
+                              const DWORD dwFlags) PURE;
+
+   STDMETHOD(ExtendRegisteredPortsLease)(THIS_
+                              const DPNHHANDLE hRegisteredPorts,
+                              const DWORD dwLeaseTime,
+                              const DWORD dwFlags) PURE;
+};
+
+#undef INTERFACE
+
+#ifdef COBJMACROS
+#define IDirectPlayNATHelp_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectPlayNATHelp_AddRef(p)  (p)->lpVtbl->AddRef(p)
+#define IDirectPlayNATHelp_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectPlayNATHelp_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
+#define IDirectPlayNATHelp_Close(p,a) (p)->lpVtbl->Close(p,a)
+#define IDirectPlayNATHelp_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b)
+#define IDirectPlayNATHelp_RegisterPorts(p,a,b,c,d,e,f) (p)->lpVtbl->RegisterPorts(p,a,b,c,d,e,f)
+#define IDirectPlayNATHelp_GetRegisteredAddresses(p,a,b,c,d,e,f) (p)->lpVtbl->GetRegisteredAddresses(p,a,b,c,d,e,f)
+#define IDirectPlayNATHelp_DeregisterPorts(p,a,b) (p)->lpVtbl->DeregisterPorts(p,a,b)
+#define IDirectPlayNATHelp_QueryAddress(p,a,b,c,d,e) (p)->lpVtbl->QueryAddress(p,a,b,c,d,e)
+#define IDirectPlayNATHelp_SetAlertEvent(p,a,b) (p)->lpVtbl->SetAlertEvent(p,a,b)
+#define IDirectPlayNATHelp_SetAlertIOCompletionPort(p,a,b,c,d) (p)->lpVtbl->SetAlertIOCompletionPort(p,a,b,c,d)
+#define IDirectPlayNATHelp_ExtendRegisteredPortsLease(p,a,b,c) (p)->lpVtbl->SetAlertIOCompletionPort(p,a,b,c)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __DPNATHLP_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dsconf.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dsconf.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dsconf.h	(revision 16410)
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2003 Robert Reif
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DSCONF_H
+#define __WINE_DSCONF_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+/*****************************************************************************
+ * Predeclare the interfaces
+ */
+DEFINE_GUID(CLSID_DirectSoundPrivate,           0x11ab3ec0,0x25ec,0x11d1,0xa4,0xd8,0x00,0xc0,0x4f,0xc2,0x8a,0xca);
+
+DEFINE_GUID(DSPROPSETID_DirectSoundDevice,      0x84624f82,0x25ec,0x11d1,0xa4,0xd8,0x00,0xc0,0x4f,0xc2,0x8a,0xca);
+
+typedef enum
+{
+        DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A = 1,
+        DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1       = 2,
+        DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1         = 3,
+        DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W = 4,
+        DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A       = 5,
+        DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W       = 6,
+        DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A         = 7,
+        DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W         = 8,
+} DSPROPERTY_DIRECTSOUNDDEVICE;
+
+#ifdef UNICODE
+#define DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING  DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W
+#define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION        DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W
+#define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE          DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W
+#else
+#define DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING  DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A
+#define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION        DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A
+#define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE          DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A
+#endif
+
+typedef enum
+{
+        DIRECTSOUNDDEVICE_TYPE_EMULATED,
+        DIRECTSOUNDDEVICE_TYPE_VXD,
+        DIRECTSOUNDDEVICE_TYPE_WDM
+} DIRECTSOUNDDEVICE_TYPE;
+
+typedef enum
+{
+        DIRECTSOUNDDEVICE_DATAFLOW_RENDER,
+        DIRECTSOUNDDEVICE_DATAFLOW_CAPTURE
+} DIRECTSOUNDDEVICE_DATAFLOW;
+
+typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA
+{
+        LPSTR                           DeviceName;
+        DIRECTSOUNDDEVICE_DATAFLOW      DataFlow;
+        GUID                            DeviceId;
+} DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA;
+
+typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA
+{
+        LPWSTR                          DeviceName;
+        DIRECTSOUNDDEVICE_DATAFLOW      DataFlow;
+        GUID                            DeviceId;
+} DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA;
+
+#ifdef UNICODE
+#define DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_DATA     DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA
+#define PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_DATA    PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA
+#else
+#define DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_DATA     DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA
+#define PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_DATA    PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA
+#endif
+
+typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA
+{
+        GUID                            DeviceId;
+        CHAR                            DescriptionA[0x100];
+        WCHAR                           DescriptionW[0x100];
+        CHAR                            ModuleA[MAX_PATH];
+        WCHAR                           ModuleW[MAX_PATH];
+        DIRECTSOUNDDEVICE_TYPE          Type;
+        DIRECTSOUNDDEVICE_DATAFLOW      DataFlow;
+        ULONG                           WaveDeviceId;
+        ULONG                           Devnode;
+} DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA;
+
+typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA
+{
+        DIRECTSOUNDDEVICE_TYPE          Type;
+        DIRECTSOUNDDEVICE_DATAFLOW      DataFlow;
+        GUID                            DeviceId;
+        LPSTR                           Description;
+        LPSTR                           Module;
+        LPSTR                           Interface;
+        ULONG                           WaveDeviceId;
+} DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA;
+
+typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA
+{
+        DIRECTSOUNDDEVICE_TYPE          Type;
+        DIRECTSOUNDDEVICE_DATAFLOW      DataFlow;
+        GUID                            DeviceId;
+        LPWSTR                          Description;
+        LPWSTR                          Module;
+        LPWSTR                          Interface;
+        ULONG                           WaveDeviceId;
+} DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA;
+
+#ifdef UNICODE
+#define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA   DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA
+#define PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA  PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA
+#else
+#define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA   DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA
+#define PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA  PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA
+#endif
+
+typedef BOOL (CALLBACK *LPFNDIRECTSOUNDDEVICEENUMERATECALLBACK1)(PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA, LPVOID);
+typedef BOOL (CALLBACK *LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKA)(PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA, LPVOID);
+typedef BOOL (CALLBACK *LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKW)(PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA, LPVOID);
+
+typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1_DATA
+{
+        LPFNDIRECTSOUNDDEVICEENUMERATECALLBACK1 Callback;
+        LPVOID                                  Context;
+} DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1_DATA;
+
+typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA
+{
+        LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKA Callback;
+        LPVOID                                  Context;
+} DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA;
+
+typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA
+{
+        LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKW Callback;
+        LPVOID                                  Context;
+} DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA;
+
+#ifdef UNICODE
+#define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA     DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA
+#define PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA    PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA
+#else
+#define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA     DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA
+#define PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA    PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA
+#endif
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif /* __WINE_DSCONF_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dsdriver.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dsdriver.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dsdriver.h	(revision 16410)
@@ -0,0 +1,366 @@
+/*
+ * DirectSound driver
+ * (DirectX 5 version)
+ *
+ * Copyright (C) 2000 Ove Kaaven
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DSDRIVER_H
+#define __WINE_DSDRIVER_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*****************************************************************************
+ * Predeclare the interfaces
+ */
+DEFINE_GUID(IID_IDsDriver,		0x8C4233C0l, 0xB4CC, 0x11CE, 0x92, 0x94, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00);
+typedef struct IDsDriver *PIDSDRIVER;
+
+DEFINE_GUID(IID_IDsDriverBuffer,	0x8C4233C1l, 0xB4CC, 0x11CE, 0x92, 0x94, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00);
+typedef struct IDsDriverBuffer *PIDSDRIVERBUFFER;
+
+DEFINE_GUID(IID_IDsDriverPropertySet,	0x0F6F2E8E0, 0xD842, 0x11D0, 0x8F, 0x75, 0x00, 0xC0, 0x4F, 0xC2, 0x8A, 0xCA);
+typedef struct IDsDriverPropertySet *PIDSDRIVERPROPERTYSET;
+
+DEFINE_GUID(IID_IDsDriverNotify,	0x00363EF44, 0x3B57, 0x11D3, 0xAC, 0x79, 0x00, 0x10, 0x5A, 0x01, 0x7f, 0xe1);
+typedef struct IDsDriverNotify *PIDSDRIVERNOTIFY;
+
+DEFINE_GUID(IID_IDsCaptureDriver,	0x03DD10C47, 0x74FB, 0x11D3, 0x90, 0x49, 0xCB, 0xB4, 0xB3, 0x2E, 0xAA, 0x08);
+typedef struct IDsCaptureDriver *PIDSCDRIVER;
+
+DEFINE_GUID(IID_IDsCaptureDriverBuffer,	0x03DD10C48, 0x74FB, 0x11D3, 0x90, 0x49, 0xCB, 0xB4, 0xB3, 0x2E, 0xAA, 0x08);
+typedef struct IDsCaptureDriverBuffer *PIDSCDRIVERBUFFER;
+
+#define DSDDESC_DOMMSYSTEMOPEN		0x00000001
+#define DSDDESC_DOMMSYSTEMSETFORMAT	0x00000002
+#define DSDDESC_USESYSTEMMEMORY		0x00000004
+#define DSDDESC_DONTNEEDPRIMARYLOCK	0x00000008
+#define DSDDESC_DONTNEEDSECONDARYLOCK	0x00000010
+#define DSDDESC_DONTNEEDWRITELEAD	0x00000020
+
+#define DSDHEAP_NOHEAP			0
+#define DSDHEAP_CREATEHEAP		1
+#define DSDHEAP_USEDIRECTDRAWHEAP	2
+#define DSDHEAP_PRIVATEHEAP		3
+
+typedef struct _DSDRIVERDESC
+{
+    DWORD      	dwFlags;
+    CHAR	szDesc[256];
+    CHAR	szDrvname[256];
+    DWORD	dnDevNode;
+    WORD	wVxdId;
+    WORD	wReserved;
+    ULONG	ulDeviceNum;
+    DWORD	dwHeapType;
+    LPVOID	pvDirectDrawHeap;
+    DWORD	dwMemStartAddress;
+    DWORD	dwMemEndAddress;
+    DWORD	dwMemAllocExtra;
+    LPVOID	pvReserved1;
+    LPVOID	pvReserved2;
+} DSDRIVERDESC,*PDSDRIVERDESC;
+
+typedef struct _DSDRIVERCAPS
+{
+    DWORD	dwFlags;
+    DWORD	dwMinSecondarySampleRate;
+    DWORD	dwMaxSecondarySampleRate;
+    DWORD	dwPrimaryBuffers;
+    DWORD	dwMaxHwMixingAllBuffers;
+    DWORD	dwMaxHwMixingStaticBuffers;
+    DWORD	dwMaxHwMixingStreamingBuffers;
+    DWORD	dwFreeHwMixingAllBuffers;
+    DWORD	dwFreeHwMixingStaticBuffers;
+    DWORD	dwFreeHwMixingStreamingBuffers;
+    DWORD	dwMaxHw3DAllBuffers;
+    DWORD	dwMaxHw3DStaticBuffers;
+    DWORD	dwMaxHw3DStreamingBuffers;
+    DWORD	dwFreeHw3DAllBuffers;
+    DWORD	dwFreeHw3DStaticBuffers;
+    DWORD	dwFreeHw3DStreamingBuffers;
+    DWORD	dwTotalHwMemBytes;
+    DWORD	dwFreeHwMemBytes;
+    DWORD	dwMaxContigFreeHwMemBytes;
+} DSDRIVERCAPS,*PDSDRIVERCAPS;
+
+typedef struct _DSVOLUMEPAN
+{
+    DWORD	dwTotalLeftAmpFactor;
+    DWORD	dwTotalRightAmpFactor;
+    LONG	lVolume;
+    DWORD	dwVolAmpFactor;
+    LONG	lPan;
+    DWORD	dwPanLeftAmpFactor;
+    DWORD	dwPanRightAmpFactor;
+} DSVOLUMEPAN,*PDSVOLUMEPAN;
+
+typedef union _DSPROPERTY
+{
+    struct {
+	GUID	Set;
+	ULONG	Id;
+	ULONG	Flags;
+	ULONG	InstanceId;
+    } DUMMYSTRUCTNAME;
+    ULONGLONG	Alignment;
+} DSPROPERTY,*PDSPROPERTY;
+
+typedef struct _DSCDRIVERCAPS
+{
+    DWORD	dwSize;
+    DWORD	dwFlags;
+    DWORD	dwFormats;
+    DWORD	dwChannels;
+} DSCDRIVERCAPS,*PDSCDRIVERCAPS;
+
+/*****************************************************************************
+ * IDsDriver interface
+ */
+#define INTERFACE IDsDriver
+DECLARE_INTERFACE_(IDsDriver,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDsDriver methods ***/
+    STDMETHOD(GetDriverDesc)(THIS_ PDSDRIVERDESC pDsDriverDesc) PURE;
+    STDMETHOD(Open)(THIS) PURE;
+    STDMETHOD(Close)(THIS) PURE;
+    STDMETHOD(GetCaps)(THIS_ PDSDRIVERCAPS pDsDrvCaps) PURE;
+    STDMETHOD(CreateSoundBuffer)(THIS_ LPWAVEFORMATEX pwfx,DWORD dwFlags,DWORD dwCardAddress,LPDWORD pdwcbBufferSize,LPBYTE *ppbBuffer,LPVOID *ppvObj) PURE;
+    STDMETHOD(DuplicateSoundBuffer)(THIS_ PIDSDRIVERBUFFER pIDsDriverBuffer,LPVOID *ppvObj) PURE;
+};
+#undef INTERFACE
+
+#if !defined (__cplusplus) || defined(CINTERFACE)
+    /*** IUnknown methods ***/
+#define IDsDriver_QueryInterface(p,a,b)         (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDsDriver_AddRef(p)                     (p)->lpVtbl->AddRef(p)
+#define IDsDriver_Release(p)                    (p)->lpVtbl->Release(p)
+    /*** IDsDriver methods ***/
+#define IDsDriver_GetDriverDesc(p,a)            (p)->lpVtbl->GetDriverDesc(p,a)
+#define IDsDriver_Open(p)                       (p)->lpVtbl->Open(p)
+#define IDsDriver_Close(p)                      (p)->lpVtbl->Close(p)
+#define IDsDriver_GetCaps(p,a)                  (p)->lpVtbl->GetCaps(p,a)
+#define IDsDriver_CreateSoundBuffer(p,a,b,c,d,e,f) (p)->lpVtbl->CreateSoundBuffer(p,a,b,c,d,e,f)
+#define IDsDriver_DuplicateSoundBuffer(p,a,b)   (p)->lpVtbl->DuplicateSoundBuffer(p,a,b)
+#endif
+
+/*****************************************************************************
+ * IDsDriverBuffer interface
+ */
+#define INTERFACE IDsDriverBuffer
+DECLARE_INTERFACE_(IDsDriverBuffer,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDsDriverBuffer methods ***/
+    STDMETHOD(Lock)(THIS_ LPVOID *ppvAudio1,LPDWORD pdwLen1,LPVOID *pdwAudio2,LPDWORD pdwLen2,DWORD dwWritePosition,DWORD dwWriteLen,DWORD dwFlags) PURE;
+    STDMETHOD(Unlock)(THIS_ LPVOID pvAudio1,DWORD dwLen1,LPVOID pvAudio2,DWORD dwLen2) PURE;
+    STDMETHOD(SetFormat)(THIS_ LPWAVEFORMATEX pwfxToSet) PURE;
+    STDMETHOD(SetFrequency)(THIS_ DWORD dwFrequency) PURE;
+    STDMETHOD(SetVolumePan)(THIS_ PDSVOLUMEPAN pDsVolumePan) PURE;
+    STDMETHOD(SetPosition)(THIS_ DWORD dwNewPosition) PURE;
+    STDMETHOD(GetPosition)(THIS_ LPDWORD lpdwCurrentPlayCursor,LPDWORD lpdwCurrentWriteCursor) PURE;
+    STDMETHOD(Play)(THIS_ DWORD dwReserved1,DWORD dwReserved2,DWORD dwFlags) PURE;
+    STDMETHOD(Stop)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined (__cplusplus) || defined(CINTERFACE)
+    /*** IUnknown methods ***/
+#define IDsDriverBuffer_QueryInterface(p,a,b)   (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDsDriverBuffer_AddRef(p)               (p)->lpVtbl->AddRef(p)
+#define IDsDriverBuffer_Release(p)              (p)->lpVtbl->Release(p)
+    /*** IDsDriverBuffer methods ***/
+#define IDsDriverBuffer_Lock(p,a,b,c,d,e,f,g)   (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g)
+#define IDsDriverBuffer_Unlock(p,a,b,c,d)       (p)->lpVtbl->Unlock(p,a,b,c,d)
+#define IDsDriverBuffer_SetFormat(p,a)          (p)->lpVtbl->SetFormat(p,a)
+#define IDsDriverBuffer_SetFrequency(p,a)       (p)->lpVtbl->SetFrequency(p,a)
+#define IDsDriverBuffer_SetVolumePan(p,a)       (p)->lpVtbl->SetVolumePan(p,a)
+#define IDsDriverBuffer_SetPosition(p,a)        (p)->lpVtbl->SetPosition(p,a)
+#define IDsDriverBuffer_GetPosition(p,a,b)      (p)->lpVtbl->GetPosition(p,a,b)
+#define IDsDriverBuffer_Play(p,a,b,c)           (p)->lpVtbl->Play(p,a,b,c)
+#define IDsDriverBuffer_Stop(p)                 (p)->lpVtbl->Stop(p)
+#endif
+
+/*****************************************************************************
+ * IDsDriverPropertySet interface
+ */
+#define INTERFACE IDsDriverPropertySet
+DECLARE_INTERFACE_(IDsDriverPropertySet,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDsDriverPropertySet methods ***/
+    STDMETHOD(Get)(THIS_ PDSPROPERTY pDsProperty,LPVOID pPropertyParams,ULONG cbPropertyParams,LPVOID pPropertyData,ULONG cbPropertyData,PULONG pcbReturnedData) PURE;
+    STDMETHOD(Set)(THIS_ PDSPROPERTY pDsProperty,LPVOID pPropertyParams,ULONG cbPropertyParams,LPVOID pPropertyData,ULONG cbPropertyData) PURE;
+    STDMETHOD(QuerySupport)(THIS_ REFGUID PropertySetId,ULONG PropertyId,PULONG pSupport) PURE;
+};
+#undef INTERFACE
+
+#if !defined (__cplusplus) || defined(CINTERFACE)
+    /*** IUnknown methods ***/
+#define IDsDriverPropertySet_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDsDriverPropertySet_AddRef(p)                  (p)->lpVtbl->AddRef(p)
+#define IDsDriverPropertySet_Release(p)                 (p)->lpVtbl->Release(p)
+    /*** IDsDriverPropertySet methods ***/
+#define IDsDriverPropertySet_Get(p,a,b,c,d,e,f)         (p)->lpVtbl->Get(p,a,b,c,d,e,f)
+#define IDsDriverPropertySet_Set(p,a,b,c,d,e)           (p)->lpVtbl->Set(p,a,b,c,d,e)
+#define IDsDriverPropertySet_QuerySupport(p,a,b,c)      (p)->lpVtbl->QuerySupport(p,a,b,c)
+#endif
+
+/* Defined property sets */
+DEFINE_GUID(DSPROPSETID_DirectSound3DListener,	  0x6D047B40, 0x7AF9, 0x11D0, 0x92, 0x94, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0);
+typedef enum
+{
+    DSPROPERTY_DIRECTSOUND3DLISTENER_ALL,
+    DSPROPERTY_DIRECTSOUND3DLISTENER_POSITION,
+    DSPROPERTY_DIRECTSOUND3DLISTENER_VELOCITY,
+    DSPROPERTY_DIRECTSOUND3DLISTENER_ORIENTATION,
+    DSPROPERTY_DIRECTSOUND3DLISTENER_DISTANCEFACTOR,
+    DSPROPERTY_DIRECTSOUND3DLISTENER_ROLLOFFFACTOR,
+    DSPROPERTY_DIRECTSOUND3DLISTENER_DOPPLERFACTOR,
+    DSPROPERTY_DIRECTSOUND3DLISTENER_BATCH,
+    DSPROPERTY_DIRECTSOUND3DLISTENER_ALLOCATION
+} DSPROPERTY_DIRECTSOUND3DLISTENER;
+
+DEFINE_GUID(DSPROPSETID_DirectSound3DBuffer,	  0x6D047B41, 0x7AF9, 0x11D0, 0x92, 0x94, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0);
+typedef enum
+{
+    DSPROPERTY_DIRECTSOUND3DBUFFER_ALL,
+    DSPROPERTY_DIRECTSOUND3DBUFFER_POSITION,
+    DSPROPERTY_DIRECTSOUND3DBUFFER_VELOCITY,
+    DSPROPERTY_DIRECTSOUND3DBUFFER_CONEANGLES,
+    DSPROPERTY_DIRECTSOUND3DBUFFER_CONEORIENTATION,
+    DSPROPERTY_DIRECTSOUND3DBUFFER_CONEOUTSIDEVOLUME,
+    DSPROPERTY_DIRECTSOUND3DBUFFER_MINDISTANCE,
+    DSPROPERTY_DIRECTSOUND3DBUFFER_MAXDISTANCE,
+    DSPROPERTY_DIRECTSOUND3DBUFFER_MODE
+} DSPROPERTY_DIRECTSOUND3DBUFFER;
+
+DEFINE_GUID(DSPROPSETID_DirectSoundSpeakerConfig, 0x6D047B42, 0x7AF9, 0x11D0, 0x92, 0x94, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0);
+typedef enum
+{
+    DSPROPERTY_DIRECTSOUNDSPEAKERCONFIG_SPEAKERCONFIG
+} DSPROPERTY_DIRECTSOUNDSPEAKERCONFIG;
+
+/*****************************************************************************
+ * IDsDriverNotify interface
+ */
+#define INTERFACE IDsDriverNotify
+DECLARE_INTERFACE_(IDsDriverNotify,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDsDriverNotify methods ***/
+    STDMETHOD(SetNotificationPositions)(THIS_ DWORD dwPositionNotifies,LPCDSBPOSITIONNOTIFY pcPositionNotifies) PURE;
+};
+#undef INTERFACE
+
+#if !defined (__cplusplus) || defined(CINTERFACE)
+    /*** IUnknown methods ***/
+#define IDsDriverNotify_QueryInterface(p,a,b)           (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDsDriverNotify_AddRef(p)                       (p)->lpVtbl->AddRef(p)
+#define IDsDriverNotify_Release(p)                      (p)->lpVtbl->Release(p)
+    /*** IDsDriverNotify methods ***/
+#define IDsDriverNotify_SetNotificationPositions(p,a,b) (p)->lpVtbl->SetNotificationPositions(p,a,b)
+#endif
+
+/*****************************************************************************
+ * IDsCaptureDriver interface
+ */
+#define INTERFACE IDsCaptureDriver
+DECLARE_INTERFACE_(IDsCaptureDriver,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDsCaptureDriver methods ***/
+    STDMETHOD(GetDriverDesc)(THIS_ PDSDRIVERDESC pDsDriverDesc) PURE;
+    STDMETHOD(Open)(THIS) PURE;
+    STDMETHOD(Close)(THIS) PURE;
+    STDMETHOD(GetCaps)(THIS_ PDSCDRIVERCAPS pDsDrvCaps) PURE;
+    STDMETHOD(CreateCaptureBuffer)(THIS_ LPWAVEFORMATEX pwfx,DWORD dwFlags,DWORD dwCardAddress,LPDWORD pdwcbBufferSize,LPBYTE *ppbBuffer,LPVOID *ppvObj) PURE;
+};
+#undef INTERFACE
+
+#if !defined (__cplusplus) || defined(CINTERFACE)
+    /*** IUnknown methods ***/
+#define IDsCaptureDriver_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDsCaptureDriver_AddRef(p)                      (p)->lpVtbl->AddRef(p)
+#define IDsCaptureDriver_Release(p)                     (p)->lpVtbl->Release(p)
+    /*** IDsCaptureDriver methods ***/
+#define IDsCaptureDriver_GetDriverDesc(p,a)             (p)->lpVtbl->GetDriverDesc(p,a)
+#define IDsCaptureDriver_Open(p)                        (p)->lpVtbl->Open(p)
+#define IDsCaptureDriver_Close(p)                       (p)->lpVtbl->Close(p)
+#define IDsCaptureDriver_GetCaps(p,a)                   (p)->lpVtbl->GetCaps(p,a)
+#define IDsCaptureDriver_CreateCaptureBuffer(p,a,b,c,d,e,f) (p)->lpVtbl->CreateCaptureBuffer(p,a,b,c,d,e,f)
+#endif
+
+/*****************************************************************************
+ * IDsCaptureDriverBuffer interface
+ */
+#define INTERFACE IDsCaptureDriverBuffer
+DECLARE_INTERFACE_(IDsCaptureDriverBuffer,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDsCaptureDriverBuffer methods ***/
+    STDMETHOD(Lock)(THIS_ LPVOID *ppvAudio1,LPDWORD pdwLen1,LPVOID *ppvAudio2,LPDWORD pdwLen2,DWORD dwWritePosition,DWORD dwWriteLen,DWORD dwFlags) PURE;
+    STDMETHOD(Unlock)(THIS_ LPVOID pvAudio1,DWORD dwLen1,LPVOID pvAudio2,DWORD dwLen2) PURE;
+    STDMETHOD(SetFormat)(THIS_ LPWAVEFORMATEX pwfxToSet) PURE;
+    STDMETHOD(GetPosition)(THIS_ LPDWORD lpdwCurrentPlayCursor,LPDWORD lpdwCurrentWriteCursor) PURE;
+    STDMETHOD(GetStatus)(THIS_ LPDWORD lpdwStatus) PURE;
+    STDMETHOD(Start)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(Stop)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined (__cplusplus) || defined(CINTERFACE)
+    /*** IUnknown methods ***/
+#define IDsCaptureDriverBuffer_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDsCaptureDriverBuffer_AddRef(p)                (p)->lpVtbl->AddRef(p)
+#define IDsCaptureDriverBuffer_Release(p)               (p)->lpVtbl->Release(p)
+    /*** IDsCaptureDriverBuffer methods ***/
+#define IDsCaptureDriverBuffer_Lock(p,a,b,c,d,e,f,g)    (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g)
+#define IDsCaptureDriverBuffer_Unlock(p,a,b,c,d)        (p)->lpVtbl->Unlock(p,a,b,c,d)
+#define IDsCaptureDriverBuffer_SetFormat(p,a)           (p)->lpVtbl->SetFormat(p,a)
+#define IDsCaptureDriverBuffer_GetPosition(p,a,b)       (p)->lpVtbl->GetPosition(p,a,b)
+#define IDsCaptureDriverBuffer_GetStatus(p,a)           (p)->lpVtbl->GetStatus(p,a)
+#define IDsCaptureDriverBuffer_Start(p,a)               (p)->lpVtbl->Start(p,a)
+#define IDsCaptureDriverBuffer_Stop(p)                  (p)->lpVtbl->Stop(p)
+#endif
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __WINE_DSDRIVER_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dsgetdc.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dsgetdc.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dsgetdc.h	(revision 16410)
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2006 Robert Reif
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DSGETDC_H
+#define __WINE_DSGETDC_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define DS_FORCE_REDISCOVERY            0x00000001
+#define DS_DIRECTORY_SERVICE_REQUIRED   0x00000010
+#define DS_DIRECTORY_SERVICE_PREFERRED  0x00000020
+#define DS_GC_SERVER_REQUIRED           0x00000040
+#define DS_PDC_REQUIRED                 0x00000080
+#define DS_BACKGROUND_ONLY              0x00000100
+#define DS_IP_REQUIRED                  0x00000200
+#define DS_KDC_REQUIRED                 0x00000400
+#define DS_TIMESERV_REQUIRED            0x00000800
+#define DS_WRITABLE_REQUIRED            0x00001000
+#define DS_GOOD_TIMESERV_PREFERRED      0x00002000
+#define DS_AVOID_SELF                   0x00004000
+#define DS_ONLY_LDAP_NEEDED             0x00008000
+
+#define DS_IS_FLAT_NAME                 0x00010000
+#define DS_IS_DNS_NAME                  0x00020000
+
+#define DS_RETURN_DNS_NAME              0x40000000
+#define DS_RETURN_FLAT_NAME             0x80000000
+
+#define DSGETDC_VALID_FLAGS ( \
+    DS_FORCE_REDISCOVERY | \
+    DS_DIRECTORY_SERVICE_REQUIRED | \
+    DS_DIRECTORY_SERVICE_PREFERRED | \
+    DS_GC_SERVER_REQUIRED | \
+    DS_PDC_REQUIRED | \
+    DS_BACKGROUND_ONLY | \
+    DS_IP_REQUIRED | \
+    DS_KDC_REQUIRED | \
+    DS_TIMESERV_REQUIRED | \
+    DS_WRITABLE_REQUIRED | \
+    DS_GOOD_TIMESERV_PREFERRED | \
+    DS_AVOID_SELF | \
+    DS_ONLY_LDAP_NEEDED | \
+    DS_IS_FLAT_NAME | \
+    DS_IS_DNS_NAME | \
+    DS_RETURN_FLAT_NAME  | \
+    DS_RETURN_DNS_NAME )
+
+typedef struct _DOMAIN_CONTROLLER_INFOA {
+    LPSTR DomainControllerName;
+    LPSTR DomainControllerAddress;
+    ULONG DomainControllerAddressType;
+    GUID DomainGuid;
+    LPSTR DomainName;
+    LPSTR DnsForestName;
+    ULONG Flags;
+    LPSTR DcSiteName;
+    LPSTR ClientSiteName;
+} DOMAIN_CONTROLLER_INFOA, *PDOMAIN_CONTROLLER_INFOA;
+
+typedef struct _DOMAIN_CONTROLLER_INFOW {
+    LPWSTR DomainControllerName;
+    LPWSTR DomainControllerAddress;
+    ULONG DomainControllerAddressType;
+    GUID DomainGuid;
+    LPWSTR DomainName;
+    LPWSTR DnsForestName;
+    ULONG Flags;
+    LPWSTR DcSiteName;
+    LPWSTR ClientSiteName;
+} DOMAIN_CONTROLLER_INFOW, *PDOMAIN_CONTROLLER_INFOW;
+
+DECL_WINELIB_TYPE_AW(DOMAIN_CONTROLLER_INFO)
+
+DWORD WINAPI DsGetDcNameA(LPCSTR,LPCSTR,GUID*,LPCSTR,ULONG,PDOMAIN_CONTROLLER_INFOA*);
+DWORD WINAPI DsGetDcNameW(LPCWSTR,LPCWSTR,GUID*,LPCWSTR,ULONG,PDOMAIN_CONTROLLER_INFOW*);
+#define     DsGetDcName WINELIB_NAME_AW(DsGetDcName)
+
+DWORD WINAPI DsGetSiteNameA(LPCSTR ComputerName, LPSTR *SiteName);
+DWORD WINAPI DsGetSiteNameW(LPCWSTR ComputerName, LPWSTR *SiteName);
+#define     DsGetSiteName WINELIB_NAME_AW(DsGetSiteName)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_DSGETDC_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dshow.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dshow.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dshow.h	(revision 16410)
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2002 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __DSHOW_INCLUDED__
+#define __DSHOW_INCLUDED__
+
+#define AM_NOVTABLE
+
+#ifndef __WINESRC__
+# include <windows.h>
+# include <windowsx.h>
+#else
+# include <windef.h>
+# include <wingdi.h>
+# include <objbase.h>
+#endif
+#include <olectl.h>
+#include <ddraw.h>
+#include <mmsystem.h>
+/* FIXME: #include <strsafe.h>*/
+
+#ifndef NUMELMS
+#define NUMELMS(array) (sizeof(array)/sizeof((array)[0]))
+#endif
+
+#include <strmif.h>
+#include <amvideo.h>
+#ifdef DSHOW_USE_AMAUDIO
+/* FIXME: #include <amaudio.h>*/
+#endif
+#include <control.h>
+#include <evcode.h>
+#include <uuids.h>
+#include <errors.h>
+/* FIXME: #include <edevdefs.h> */
+#include <audevcod.h>
+/* FIXME: #include <dvdevcod.h> */
+
+#ifndef OATRUE
+#define OATRUE (-1)
+#endif
+#ifndef OAFALSE
+#define OAFALSE (0)
+#endif
+
+#endif /* __DSHOW_INCLUDED__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dsound.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dsound.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dsound.h	(revision 16410)
@@ -0,0 +1,1195 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DSOUND_H
+#define __WINE_DSOUND_H
+
+#ifndef DIRECTSOUND_VERSION
+#define DIRECTSOUND_VERSION 0x0900
+#endif
+
+#define COM_NO_WINDOWS_H
+#include <objbase.h>
+#include <float.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+#ifndef DX_SHARED_DEFINES
+
+typedef float D3DVALUE, *LPD3DVALUE;
+
+#ifndef D3DCOLOR_DEFINED
+typedef DWORD D3DCOLOR, *LPD3DCOLOR;
+#define D3DCOLOR_DEFINED
+#endif
+
+#ifndef D3DVECTOR_DEFINED
+typedef struct _D3DVECTOR {
+    float x;
+    float y;
+    float z;
+} D3DVECTOR;
+#define D3DVECTOR_DEFINED
+#endif
+
+#ifndef LPD3DVECTOR_DEFINED
+typedef D3DVECTOR *LPD3DVECTOR;
+#define LPD3DVECTOR_DEFINED
+#endif
+
+#define DX_SHARED_DEFINES
+#endif /* DX_SHARED_DEFINES */
+
+/*****************************************************************************
+ * Predeclare the interfaces
+ */
+DEFINE_GUID(CLSID_DirectSound,		0x47d4d946, 0x62e8, 0x11cf, 0x93, 0xbc, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00);
+DEFINE_GUID(CLSID_DirectSound8,		0x3901cc3f, 0x84b5, 0x4fa4, 0xba, 0x35, 0xaa, 0x81, 0x72, 0xb8, 0xa0, 0x9b);
+DEFINE_GUID(CLSID_DirectSoundCapture,	0xb0210780, 0x89cd, 0x11d0, 0xaf, 0x08, 0x00, 0xa0, 0xc9, 0x25, 0xcd, 0x16);
+DEFINE_GUID(CLSID_DirectSoundCapture8,	0xe4bcac13, 0x7f99, 0x4908, 0x9a, 0x8e, 0x74, 0xe3, 0xbf, 0x24, 0xb6, 0xe1);
+DEFINE_GUID(CLSID_DirectSoundFullDuplex,0xfea4300c, 0x7959, 0x4147, 0xb2, 0x6a, 0x23, 0x77, 0xb9, 0xe7, 0xa9, 0x1d);
+
+DEFINE_GUID(IID_IDirectSound,		0x279AFA83,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
+typedef struct IDirectSound *LPDIRECTSOUND,**LPLPDIRECTSOUND;
+
+DEFINE_GUID(IID_IDirectSound8,		0xC50A7E93,0xF395,0x4834,0x9E,0xF6,0x7F,0xA9,0x9D,0xE5,0x09,0x66);
+typedef struct IDirectSound8 *LPDIRECTSOUND8,**LPLPDIRECTSOUND8;
+
+DEFINE_GUID(IID_IDirectSoundBuffer,	0x279AFA85,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
+typedef struct IDirectSoundBuffer *LPDIRECTSOUNDBUFFER,**LPLPDIRECTSOUNDBUFFER;
+
+DEFINE_GUID(IID_IDirectSoundBuffer8,	0x6825A449,0x7524,0x4D82,0x92,0x0F,0x50,0xE3,0x6A,0xB3,0xAB,0x1E);
+typedef struct IDirectSoundBuffer8 *LPDIRECTSOUNDBUFFER8,**LPLPDIRECTSOUNDBUFFER8;
+
+DEFINE_GUID(IID_IDirectSoundNotify,	0xB0210783,0x89cd,0x11d0,0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16);
+typedef struct IDirectSoundNotify *LPDIRECTSOUNDNOTIFY,**LPLPDIRECTSOUNDNOTIFY;
+#define	IID_IDirectSoundNotify8		IID_IDirectSoundNotify
+
+DEFINE_GUID(IID_IDirectSound3DListener,	0x279AFA84,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
+typedef struct IDirectSound3DListener *LPDIRECTSOUND3DLISTENER,**LPLPDIRECTSOUND3DLISTENER;
+
+DEFINE_GUID(IID_IDirectSound3DBuffer,	0x279AFA86,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
+typedef struct IDirectSound3DBuffer *LPDIRECTSOUND3DBUFFER,**LPLPDIRECTSOUND3DBUFFER;
+
+DEFINE_GUID(IID_IDirectSoundCapture,	0xB0210781,0x89CD,0x11D0,0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16);
+typedef struct IDirectSoundCapture *LPDIRECTSOUNDCAPTURE,**LPLPDIRECTSOUNDCAPTURE;
+#define	IID_IDirectSoundCapture8	IID_IDirectSoundCapture
+typedef struct IDirectSoundCapture IDirectSoundCapture8,*LPDIRECTSOUNDCAPTURE8,**LPLPDIRECTSOUNDCAPTURE8;
+
+DEFINE_GUID(IID_IDirectSoundCaptureBuffer,0xB0210782,0x89CD,0x11D0,0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16);
+typedef struct IDirectSoundCaptureBuffer *LPDIRECTSOUNDCAPTUREBUFFER,**LPLPDIRECTSOUNDCAPTUREBUFFER;
+
+DEFINE_GUID(IID_IDirectSoundCaptureBuffer8,0x00990DF4,0x0DBB,0x4872,0x83,0x3E,0x6D,0x30,0x3E,0x80,0xAE,0xB6);
+typedef struct IDirectSoundCaptureBuffer8 *LPDIRECTSOUNDCAPTUREBUFFER8,**LPLPDIRECTSOUNDCAPTUREBUFFER8;
+
+DEFINE_GUID(IID_IDirectSoundFullDuplex,	0xEDCB4C7A,0xDAAB,0x4216,0xA4,0x2E,0x6C,0x50,0x59,0x6D,0xDC,0x1D);
+typedef struct IDirectSoundFullDuplex *LPDIRECTSOUNDFULLDUPLEX,**LPLPDIRECTSOUNDFULLDUPLEX;
+#define	IID_IDirectSoundFullDuplex8	IID_IDirectSoundFullDuplex
+
+DEFINE_GUID(DSDEVID_DefaultPlayback,     0xDEF00000,0x9C6D,0x47Ed,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03);
+DEFINE_GUID(DSDEVID_DefaultCapture,      0xDEF00001,0x9C6D,0x47Ed,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03);
+DEFINE_GUID(DSDEVID_DefaultVoicePlayback,0xDEF00002,0x9C6D,0x47Ed,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03);
+DEFINE_GUID(DSDEVID_DefaultVoiceCapture, 0xDEF00003,0x9C6D,0x47ED,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03);
+
+DEFINE_GUID(DSDEVID_WinePlayback,        0x40316A1D,0x605B,0xD611,0x87,0xC6,0x00,0x80,0xAD,0x00,0x02,0xFE);
+
+#define	_FACDS		0x878
+#define	MAKE_DSHRESULT(code)		MAKE_HRESULT(1,_FACDS,code)
+
+#define DS_OK				0
+#define DS_NO_VIRTUALIZATION            MAKE_HRESULT(0, _FACDS, 10)
+#define DS_INCOMPLETE                   MAKE_HRESULT(0, _FACDS, 20)
+#define DSERR_ALLOCATED			MAKE_DSHRESULT(10)
+#define DSERR_CONTROLUNAVAIL		MAKE_DSHRESULT(30)
+#define DSERR_INVALIDPARAM		E_INVALIDARG
+#define DSERR_INVALIDCALL		MAKE_DSHRESULT(50)
+#define DSERR_GENERIC			E_FAIL
+#define DSERR_PRIOLEVELNEEDED		MAKE_DSHRESULT(70)
+#define DSERR_OUTOFMEMORY		E_OUTOFMEMORY
+#define DSERR_BADFORMAT			MAKE_DSHRESULT(100)
+#define DSERR_UNSUPPORTED		E_NOTIMPL
+#define DSERR_NODRIVER			MAKE_DSHRESULT(120)
+#define DSERR_ALREADYINITIALIZED	MAKE_DSHRESULT(130)
+#define DSERR_NOAGGREGATION		CLASS_E_NOAGGREGATION
+#define DSERR_BUFFERLOST		MAKE_DSHRESULT(150)
+#define DSERR_OTHERAPPHASPRIO		MAKE_DSHRESULT(160)
+#define DSERR_UNINITIALIZED		MAKE_DSHRESULT(170)
+#define DSERR_NOINTERFACE               E_NOINTERFACE
+#define DSERR_ACCESSDENIED              E_ACCESSDENIED
+#define DSERR_BUFFERTOOSMALL            MAKE_DSHRESULT(180)
+#define DSERR_DS8_REQUIRED              MAKE_DSHRESULT(190)
+#define DSERR_SENDLOOP                  MAKE_DSHRESULT(200)
+#define DSERR_BADSENDBUFFERGUID         MAKE_DSHRESULT(210)
+#define DSERR_FXUNAVAILABLE             MAKE_DSHRESULT(220)
+#define DSERR_OBJECTNOTFOUND            MAKE_DSHRESULT(4449)
+
+#define DSCAPS_PRIMARYMONO          0x00000001
+#define DSCAPS_PRIMARYSTEREO        0x00000002
+#define DSCAPS_PRIMARY8BIT          0x00000004
+#define DSCAPS_PRIMARY16BIT         0x00000008
+#define DSCAPS_CONTINUOUSRATE       0x00000010
+#define DSCAPS_EMULDRIVER           0x00000020
+#define DSCAPS_CERTIFIED            0x00000040
+#define DSCAPS_SECONDARYMONO        0x00000100
+#define DSCAPS_SECONDARYSTEREO      0x00000200
+#define DSCAPS_SECONDARY8BIT        0x00000400
+#define DSCAPS_SECONDARY16BIT       0x00000800
+
+#define	DSSCL_NORMAL		1
+#define	DSSCL_PRIORITY		2
+#define	DSSCL_EXCLUSIVE		3
+#define	DSSCL_WRITEPRIMARY	4
+
+typedef struct _DSCAPS
+{
+    DWORD	dwSize;
+    DWORD	dwFlags;
+    DWORD	dwMinSecondarySampleRate;
+    DWORD	dwMaxSecondarySampleRate;
+    DWORD	dwPrimaryBuffers;
+    DWORD	dwMaxHwMixingAllBuffers;
+    DWORD	dwMaxHwMixingStaticBuffers;
+    DWORD	dwMaxHwMixingStreamingBuffers;
+    DWORD	dwFreeHwMixingAllBuffers;
+    DWORD	dwFreeHwMixingStaticBuffers;
+    DWORD	dwFreeHwMixingStreamingBuffers;
+    DWORD	dwMaxHw3DAllBuffers;
+    DWORD	dwMaxHw3DStaticBuffers;
+    DWORD	dwMaxHw3DStreamingBuffers;
+    DWORD	dwFreeHw3DAllBuffers;
+    DWORD	dwFreeHw3DStaticBuffers;
+    DWORD	dwFreeHw3DStreamingBuffers;
+    DWORD	dwTotalHwMemBytes;
+    DWORD	dwFreeHwMemBytes;
+    DWORD	dwMaxContigFreeHwMemBytes;
+    DWORD	dwUnlockTransferRateHwBuffers;
+    DWORD	dwPlayCpuOverheadSwBuffers;
+    DWORD	dwReserved1;
+    DWORD	dwReserved2;
+} DSCAPS,*LPDSCAPS;
+typedef const DSCAPS *LPCDSCAPS;
+
+#define DSBPLAY_LOOPING             0x00000001
+#define DSBPLAY_LOCHARDWARE         0x00000002
+#define DSBPLAY_LOCSOFTWARE         0x00000004
+#define DSBPLAY_TERMINATEBY_TIME    0x00000008
+#define DSBPLAY_TERMINATEBY_DISTANCE    0x000000010
+#define DSBPLAY_TERMINATEBY_PRIORITY    0x000000020
+
+#define DSBSTATUS_PLAYING           0x00000001
+#define DSBSTATUS_BUFFERLOST        0x00000002
+#define DSBSTATUS_LOOPING           0x00000004
+#define DSBSTATUS_LOCHARDWARE       0x00000008
+#define DSBSTATUS_LOCSOFTWARE       0x00000010
+#define DSBSTATUS_TERMINATED        0x00000020
+
+#define DSBLOCK_FROMWRITECURSOR     0x00000001
+#define DSBLOCK_ENTIREBUFFER        0x00000002
+
+#define DSBCAPS_PRIMARYBUFFER       0x00000001
+#define DSBCAPS_STATIC              0x00000002
+#define DSBCAPS_LOCHARDWARE         0x00000004
+#define DSBCAPS_LOCSOFTWARE         0x00000008
+#define DSBCAPS_CTRL3D              0x00000010
+#define DSBCAPS_CTRLFREQUENCY       0x00000020
+#define DSBCAPS_CTRLPAN             0x00000040
+#define DSBCAPS_CTRLVOLUME          0x00000080
+#define DSBCAPS_CTRLDEFAULT         0x000000E0  /* Pan + volume + frequency. */
+#define DSBCAPS_CTRLPOSITIONNOTIFY  0x00000100
+#define DSBCAPS_CTRLFX              0x00000200
+#define DSBCAPS_CTRLALL             0x000001F0  /* All control capabilities */
+#define DSBCAPS_STICKYFOCUS         0x00004000
+#define DSBCAPS_GLOBALFOCUS         0x00008000
+#define DSBCAPS_GETCURRENTPOSITION2 0x00010000  /* More accurate play cursor under emulation*/
+#define DSBCAPS_MUTE3DATMAXDISTANCE 0x00020000
+#define DSBCAPS_LOCDEFER            0x00040000
+
+#define DSBSIZE_MIN                 4
+#define DSBSIZE_MAX                 0xFFFFFFF
+#define DSBPAN_LEFT                 -10000
+#define DSBPAN_CENTER               0
+#define DSBPAN_RIGHT                 10000
+#define DSBVOLUME_MAX                    0
+#define DSBVOLUME_MIN               -10000
+#define DSBFREQUENCY_MIN            100
+#define DSBFREQUENCY_MAX            200000
+#define DSBFREQUENCY_ORIGINAL       0
+
+typedef struct _DSBCAPS
+{
+    DWORD	dwSize;
+    DWORD	dwFlags;
+    DWORD	dwBufferBytes;
+    DWORD	dwUnlockTransferRate;
+    DWORD	dwPlayCpuOverhead;
+} DSBCAPS,*LPDSBCAPS;
+typedef const DSBCAPS *LPCDSBCAPS;
+
+#define DSSCL_NORMAL                1
+#define DSSCL_PRIORITY              2
+#define DSSCL_EXCLUSIVE             3
+#define DSSCL_WRITEPRIMARY          4
+
+typedef struct _DSEFFECTDESC
+{
+    DWORD	dwSize;
+    DWORD	dwFlags;
+    GUID	guidDSFXClass;
+    DWORD_PTR	dwReserved1;
+    DWORD_PTR	dwReserved2;
+} DSEFFECTDESC,*LPDSEFFECTDESC;
+typedef const DSEFFECTDESC *LPCDSEFFECTDESC;
+
+#define DSFX_LOCHARDWARE    0x00000001
+#define DSFX_LOCSOFTWARE    0x00000002
+
+enum
+{
+    DSFXR_PRESENT,
+    DSFXR_LOCHARDWARE,
+    DSFXR_LOCSOFTWARE,
+    DSFXR_UNALLOCATED,
+    DSFXR_FAILED,
+    DSFXR_UNKNOWN,
+    DSFXR_SENDLOOP
+};
+
+typedef struct _DSBUFFERDESC1
+{
+    DWORD		dwSize;
+    DWORD		dwFlags;
+    DWORD		dwBufferBytes;
+    DWORD		dwReserved;
+    LPWAVEFORMATEX	lpwfxFormat;
+} DSBUFFERDESC1,*LPDSBUFFERDESC1;
+typedef const DSBUFFERDESC1 *LPCDSBUFFERDESC1;
+
+typedef struct _DSBUFFERDESC
+{
+    DWORD		dwSize;
+    DWORD		dwFlags;
+    DWORD		dwBufferBytes;
+    DWORD		dwReserved;
+    LPWAVEFORMATEX	lpwfxFormat;
+    GUID		guid3DAlgorithm;
+} DSBUFFERDESC,*LPDSBUFFERDESC;
+typedef const DSBUFFERDESC *LPCDSBUFFERDESC;
+
+typedef struct _DSBPOSITIONNOTIFY
+{
+    DWORD	dwOffset;
+    HANDLE	hEventNotify;
+} DSBPOSITIONNOTIFY,*LPDSBPOSITIONNOTIFY;
+typedef const DSBPOSITIONNOTIFY *LPCDSBPOSITIONNOTIFY;
+
+#define DSSPEAKER_HEADPHONE     1
+#define DSSPEAKER_MONO          2
+#define DSSPEAKER_QUAD          3
+#define DSSPEAKER_STEREO        4
+#define DSSPEAKER_SURROUND      5
+#define DSSPEAKER_5POINT1       6
+#define DSSPEAKER_7POINT1       7
+
+#define DSSPEAKER_GEOMETRY_MIN      0x00000005  /* 5 degrees */
+#define DSSPEAKER_GEOMETRY_NARROW   0x0000000A  /* 10 degrees */
+#define DSSPEAKER_GEOMETRY_WIDE     0x00000014  /* 20 degrees */
+#define DSSPEAKER_GEOMETRY_MAX      0x000000B4  /* 180 degrees */
+
+#define DSSPEAKER_COMBINED(c, g)    ((DWORD)(((BYTE)(c)) | ((DWORD)((BYTE)(g))) << 16))
+#define DSSPEAKER_CONFIG(a)         ((BYTE)(a))
+#define DSSPEAKER_GEOMETRY(a)       ((BYTE)(((DWORD)(a) >> 16) & 0x00FF))
+
+#define DS_CERTIFIED                0x00000000
+#define DS_UNCERTIFIED              0x00000001
+
+typedef struct _DSCEFFECTDESC
+{
+    DWORD       dwSize;
+    DWORD       dwFlags;
+    GUID        guidDSCFXClass;
+    GUID        guidDSCFXInstance;
+    DWORD       dwReserved1;
+    DWORD       dwReserved2;
+} DSCEFFECTDESC, *LPDSCEFFECTDESC;
+typedef const DSCEFFECTDESC *LPCDSCEFFECTDESC;
+
+#define DSCFX_LOCHARDWARE   0x00000001
+#define DSCFX_LOCSOFTWARE   0x00000002
+
+#define DSCFXR_LOCHARDWARE  0x00000010
+#define DSCFXR_LOCSOFTWARE  0x00000020
+
+typedef struct _DSCBUFFERDESC1
+{
+  DWORD           dwSize;
+  DWORD           dwFlags;
+  DWORD           dwBufferBytes;
+  DWORD           dwReserved;
+  LPWAVEFORMATEX  lpwfxFormat;
+} DSCBUFFERDESC1, *LPDSCBUFFERDESC1;
+
+typedef struct _DSCBUFFERDESC
+{
+  DWORD           dwSize;
+  DWORD           dwFlags;
+  DWORD           dwBufferBytes;
+  DWORD           dwReserved;
+  LPWAVEFORMATEX  lpwfxFormat;
+  DWORD           dwFXCount;
+  LPDSCEFFECTDESC lpDSCFXDesc;
+} DSCBUFFERDESC, *LPDSCBUFFERDESC;
+typedef const DSCBUFFERDESC *LPCDSCBUFFERDESC;
+
+typedef struct _DSCCAPS
+{
+  DWORD dwSize;
+  DWORD dwFlags;
+  DWORD dwFormats;
+  DWORD dwChannels;
+} DSCCAPS, *LPDSCCAPS;
+typedef const DSCCAPS *LPCDSCCAPS;
+
+typedef struct _DSCBCAPS
+{
+  DWORD dwSize;
+  DWORD dwFlags;
+  DWORD dwBufferBytes;
+  DWORD dwReserved;
+} DSCBCAPS, *LPDSCBCAPS;
+typedef const DSCBCAPS *LPCDSCBCAPS;
+
+#define DSCCAPS_EMULDRIVER          DSCAPS_EMULDRIVER
+#define DSCCAPS_CERTIFIED           DSCAPS_CERTIFIED
+#define DSCCAPS_MULTIPLECAPTURE     0x00000001
+
+#define DSCBCAPS_WAVEMAPPED         0x80000000
+#define DSCBCAPS_CTRLFX             0x00000200
+
+#define DSCBLOCK_ENTIREBUFFER       0x00000001
+#define DSCBSTART_LOOPING           0x00000001
+#define DSCBPN_OFFSET_STOP          0xffffffff
+
+#define DSCBSTATUS_CAPTURING        0x00000001
+#define DSCBSTATUS_LOOPING          0x00000002
+
+#ifndef __LPCGUID_DEFINED__
+#define __LPCGUID_DEFINED__
+typedef const GUID *LPCGUID;
+#endif
+
+typedef BOOL (CALLBACK *LPDSENUMCALLBACKW)(LPGUID,LPCWSTR,LPCWSTR,LPVOID);
+typedef BOOL (CALLBACK *LPDSENUMCALLBACKA)(LPGUID,LPCSTR,LPCSTR,LPVOID);
+DECL_WINELIB_TYPE_AW(LPDSENUMCALLBACK)
+
+extern HRESULT WINAPI DirectSoundCreate(LPCGUID lpGUID,LPDIRECTSOUND *ppDS,LPUNKNOWN pUnkOuter);
+extern HRESULT WINAPI DirectSoundEnumerateA(LPDSENUMCALLBACKA, LPVOID);
+extern HRESULT WINAPI DirectSoundEnumerateW(LPDSENUMCALLBACKW, LPVOID);
+#define DirectSoundEnumerate WINELIB_NAME_AW(DirectSoundEnumerate)
+extern HRESULT WINAPI DirectSoundCaptureCreate(LPCGUID lpGUID, LPDIRECTSOUNDCAPTURE *ppDSC, LPUNKNOWN pUnkOuter);
+extern HRESULT WINAPI DirectSoundCaptureEnumerateA(LPDSENUMCALLBACKA, LPVOID);
+extern HRESULT WINAPI DirectSoundCaptureEnumerateW(LPDSENUMCALLBACKW, LPVOID);
+#define DirectSoundCaptureEnumerate WINELIB_NAME_AW(DirectSoundCaptureEnumerate)
+
+extern HRESULT WINAPI DirectSoundCreate8(LPCGUID lpGUID,LPDIRECTSOUND8 *ppDS8,LPUNKNOWN pUnkOuter);
+extern HRESULT WINAPI DirectSoundCaptureCreate8(LPCGUID lpGUID, LPDIRECTSOUNDCAPTURE8 *ppDSC8, LPUNKNOWN pUnkOuter);
+extern HRESULT WINAPI DirectSoundFullDuplexCreate(LPCGUID pcGuidCaptureDevice, LPCGUID pcGuidRenderDevice,
+    LPCDSCBUFFERDESC pcDSCBufferDesc, LPCDSBUFFERDESC pcDSBufferDesc, HWND hWnd, DWORD dwLevel,
+    LPDIRECTSOUNDFULLDUPLEX *ppDSFD, LPDIRECTSOUNDCAPTUREBUFFER8 *ppDSCBuffer8, LPDIRECTSOUNDBUFFER8 *ppDSBuffer8, LPUNKNOWN pUnkOuter);
+#define DirectSoundFullDuplexCreate8 DirectSoundFullDuplexCreate
+extern HRESULT WINAPI GetDeviceID(LPCGUID lpGuidSrc, LPGUID lpGuidDest);
+
+
+/*****************************************************************************
+ * IDirectSound interface
+ */
+#define INTERFACE IDirectSound
+DECLARE_INTERFACE_(IDirectSound,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectSound methods ***/
+    STDMETHOD(CreateSoundBuffer)(THIS_ LPCDSBUFFERDESC lpcDSBufferDesc, LPLPDIRECTSOUNDBUFFER lplpDirectSoundBuffer, IUnknown *pUnkOuter) PURE;
+    STDMETHOD(GetCaps)(THIS_ LPDSCAPS lpDSCaps) PURE;
+    STDMETHOD(DuplicateSoundBuffer)(THIS_ LPDIRECTSOUNDBUFFER lpDsbOriginal, LPLPDIRECTSOUNDBUFFER lplpDsbDuplicate) PURE;
+    STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwLevel) PURE;
+    STDMETHOD(Compact)(THIS) PURE;
+    STDMETHOD(GetSpeakerConfig)(THIS_ LPDWORD lpdwSpeakerConfig) PURE;
+    STDMETHOD(SetSpeakerConfig)(THIS_ DWORD dwSpeakerConfig) PURE;
+    STDMETHOD(Initialize)(THIS_ LPCGUID lpcGuid) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectSound_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectSound_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectSound_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectSound methods ***/
+#define IDirectSound_CreateSoundBuffer(p,a,b,c)  (p)->lpVtbl->CreateSoundBuffer(p,a,b,c)
+#define IDirectSound_GetCaps(p,a)                (p)->lpVtbl->GetCaps(p,a)
+#define IDirectSound_DuplicateSoundBuffer(p,a,b) (p)->lpVtbl->DuplicateSoundBuffer(p,a,b)
+#define IDirectSound_SetCooperativeLevel(p,a,b)  (p)->lpVtbl->SetCooperativeLevel(p,a,b)
+#define IDirectSound_Compact(p)                  (p)->lpVtbl->Compact(p)
+#define IDirectSound_GetSpeakerConfig(p,a)       (p)->lpVtbl->GetSpeakerConfig(p,a)
+#define IDirectSound_SetSpeakerConfig(p,a)       (p)->lpVtbl->SetSpeakerConfig(p,a)
+#define IDirectSound_Initialize(p,a)             (p)->lpVtbl->Initialize(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirectSound_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectSound_AddRef(p)             (p)->AddRef()
+#define IDirectSound_Release(p)            (p)->Release()
+/*** IDirectSound methods ***/
+#define IDirectSound_CreateSoundBuffer(p,a,b,c)  (p)->CreateSoundBuffer(a,b,c)
+#define IDirectSound_GetCaps(p,a)                (p)->GetCaps(a)
+#define IDirectSound_DuplicateSoundBuffer(p,a,b) (p)->DuplicateSoundBuffer(a,b)
+#define IDirectSound_SetCooperativeLevel(p,a,b)  (p)->SetCooperativeLevel(a,b)
+#define IDirectSound_Compact(p)                  (p)->Compact()
+#define IDirectSound_GetSpeakerConfig(p,a)       (p)->GetSpeakerConfig(a)
+#define IDirectSound_SetSpeakerConfig(p,a)       (p)->SetSpeakerConfig(a)
+#define IDirectSound_Initialize(p,a)             (p)->Initialize(a)
+#endif
+
+
+/*****************************************************************************
+ * IDirectSound8 interface
+ */
+#define INTERFACE IDirectSound8
+DECLARE_INTERFACE_(IDirectSound8,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectSound8 methods ***/
+    STDMETHOD(CreateSoundBuffer)(THIS_ LPCDSBUFFERDESC lpcDSBufferDesc, LPLPDIRECTSOUNDBUFFER lplpDirectSoundBuffer, IUnknown *pUnkOuter) PURE;
+    STDMETHOD(GetCaps)(THIS_ LPDSCAPS lpDSCaps) PURE;
+    STDMETHOD(DuplicateSoundBuffer)(THIS_ LPDIRECTSOUNDBUFFER lpDsbOriginal, LPLPDIRECTSOUNDBUFFER lplpDsbDuplicate) PURE;
+    STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwLevel) PURE;
+    STDMETHOD(Compact)(THIS) PURE;
+    STDMETHOD(GetSpeakerConfig)(THIS_ LPDWORD lpdwSpeakerConfig) PURE;
+    STDMETHOD(SetSpeakerConfig)(THIS_ DWORD dwSpeakerConfig) PURE;
+    STDMETHOD(Initialize)(THIS_ LPCGUID lpcGuid) PURE;
+    STDMETHOD(VerifyCertification)(THIS_ LPDWORD pdwCertified) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectSound8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectSound8_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectSound8_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectSound methods ***/
+#define IDirectSound8_CreateSoundBuffer(p,a,b,c)  (p)->lpVtbl->CreateSoundBuffer(p,a,b,c)
+#define IDirectSound8_GetCaps(p,a)                (p)->lpVtbl->GetCaps(p,a)
+#define IDirectSound8_DuplicateSoundBuffer(p,a,b) (p)->lpVtbl->DuplicateSoundBuffer(p,a,b)
+#define IDirectSound8_SetCooperativeLevel(p,a,b)  (p)->lpVtbl->SetCooperativeLevel(p,a,b)
+#define IDirectSound8_Compact(p)                  (p)->lpVtbl->Compact(p)
+#define IDirectSound8_GetSpeakerConfig(p,a)       (p)->lpVtbl->GetSpeakerConfig(p,a)
+#define IDirectSound8_SetSpeakerConfig(p,a)       (p)->lpVtbl->SetSpeakerConfig(p,a)
+#define IDirectSound8_Initialize(p,a)             (p)->lpVtbl->Initialize(p,a)
+/*** IDirectSound8 methods ***/
+#define IDirectSound8_VerifyCertification(p,a)    (p)->lpVtbl->VerifyCertification(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirectSound8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectSound8_AddRef(p)             (p)->AddRef()
+#define IDirectSound8_Release(p)            (p)->Release()
+/*** IDirectSound methods ***/
+#define IDirectSound8_CreateSoundBuffer(p,a,b,c)  (p)->CreateSoundBuffer(a,b,c)
+#define IDirectSound8_GetCaps(p,a)                (p)->GetCaps(a)
+#define IDirectSound8_DuplicateSoundBuffer(p,a,b) (p)->DuplicateSoundBuffer(a,b)
+#define IDirectSound8_SetCooperativeLevel(p,a,b)  (p)->SetCooperativeLevel(a,b)
+#define IDirectSound8_Compact(p)                  (p)->Compact()
+#define IDirectSound8_GetSpeakerConfig(p,a)       (p)->GetSpeakerConfig(a)
+#define IDirectSound8_SetSpeakerConfig(p,a)       (p)->SetSpeakerConfig(a)
+#define IDirectSound8_Initialize(p,a)             (p)->Initialize(a)
+/*** IDirectSound8 methods ***/
+#define IDirectSound8_VerifyCertification(p,a)    (p)->VerifyCertification(a)
+#endif
+
+
+/*****************************************************************************
+ * IDirectSoundBuffer interface
+ */
+#define INTERFACE IDirectSoundBuffer
+DECLARE_INTERFACE_(IDirectSoundBuffer,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectSoundBuffer methods ***/
+    STDMETHOD(GetCaps)(THIS_ LPDSBCAPS lpDSBufferCaps) PURE;
+    STDMETHOD(GetCurrentPosition)(THIS_ LPDWORD lpdwCurrentPlayCursor, LPDWORD lpdwCurrentWriteCursor) PURE;
+    STDMETHOD(GetFormat)(THIS_ LPWAVEFORMATEX lpwfxFormat, DWORD dwSizeAllocated, LPDWORD lpdwSizeWritten) PURE;
+    STDMETHOD(GetVolume)(THIS_ LPLONG lplVolume) PURE;
+    STDMETHOD(GetPan)(THIS_ LPLONG lplpan) PURE;
+    STDMETHOD(GetFrequency)(THIS_ LPDWORD lpdwFrequency) PURE;
+    STDMETHOD(GetStatus)(THIS_ LPDWORD lpdwStatus) PURE;
+    STDMETHOD(Initialize)(THIS_ LPDIRECTSOUND lpDirectSound, LPCDSBUFFERDESC lpcDSBufferDesc) PURE;
+    STDMETHOD(Lock)(THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE;
+    STDMETHOD(Play)(THIS_ DWORD dwReserved1, DWORD dwReserved2, DWORD dwFlags) PURE;
+    STDMETHOD(SetCurrentPosition)(THIS_ DWORD dwNewPosition) PURE;
+    STDMETHOD(SetFormat)(THIS_ LPCWAVEFORMATEX lpcfxFormat) PURE;
+    STDMETHOD(SetVolume)(THIS_ LONG lVolume) PURE;
+    STDMETHOD(SetPan)(THIS_ LONG lPan) PURE;
+    STDMETHOD(SetFrequency)(THIS_ DWORD dwFrequency) PURE;
+    STDMETHOD(Stop)(THIS) PURE;
+    STDMETHOD(Unlock)(THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioPtr2) PURE;
+    STDMETHOD(Restore)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectSoundBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectSoundBuffer_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectSoundBuffer_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectSoundBuffer methods ***/
+#define IDirectSoundBuffer_GetCaps(p,a)                (p)->lpVtbl->GetCaps(p,a)
+#define IDirectSoundBuffer_GetCurrentPosition(p,a,b)   (p)->lpVtbl->GetCurrentPosition(p,a,b)
+#define IDirectSoundBuffer_GetFormat(p,a,b,c)          (p)->lpVtbl->GetFormat(p,a,b,c)
+#define IDirectSoundBuffer_GetVolume(p,a)              (p)->lpVtbl->GetVolume(p,a)
+#define IDirectSoundBuffer_GetPan(p,a)                 (p)->lpVtbl->GetPan(p,a)
+#define IDirectSoundBuffer_GetFrequency(p,a)           (p)->lpVtbl->GetFrequency(p,a)
+#define IDirectSoundBuffer_GetStatus(p,a)              (p)->lpVtbl->GetStatus(p,a)
+#define IDirectSoundBuffer_Initialize(p,a,b)           (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g)       (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g)
+#define IDirectSoundBuffer_Play(p,a,b,c)               (p)->lpVtbl->Play(p,a,b,c)
+#define IDirectSoundBuffer_SetCurrentPosition(p,a)     (p)->lpVtbl->SetCurrentPosition(p,a)
+#define IDirectSoundBuffer_SetFormat(p,a)              (p)->lpVtbl->SetFormat(p,a)
+#define IDirectSoundBuffer_SetVolume(p,a)              (p)->lpVtbl->SetVolume(p,a)
+#define IDirectSoundBuffer_SetPan(p,a)                 (p)->lpVtbl->SetPan(p,a)
+#define IDirectSoundBuffer_SetFrequency(p,a)           (p)->lpVtbl->SetFrequency(p,a)
+#define IDirectSoundBuffer_Stop(p)                     (p)->lpVtbl->Stop(p)
+#define IDirectSoundBuffer_Unlock(p,a,b,c,d)           (p)->lpVtbl->Unlock(p,a,b,c,d)
+#define IDirectSoundBuffer_Restore(p)                  (p)->lpVtbl->Restore(p)
+#else
+/*** IUnknown methods ***/
+#define IDirectSoundBuffer_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectSoundBuffer_AddRef(p)             (p)->AddRef()
+#define IDirectSoundBuffer_Release(p)            (p)->Release()
+/*** IDirectSoundBuffer methods ***/
+#define IDirectSoundBuffer_GetCaps(p,a)                (p)->GetCaps(a)
+#define IDirectSoundBuffer_GetCurrentPosition(p,a,b)   (p)->GetCurrentPosition(a,b)
+#define IDirectSoundBuffer_GetFormat(p,a,b,c)          (p)->GetFormat(a,b,c)
+#define IDirectSoundBuffer_GetVolume(p,a)              (p)->GetVolume(a)
+#define IDirectSoundBuffer_GetPan(p,a)                 (p)->GetPan(a)
+#define IDirectSoundBuffer_GetFrequency(p,a)           (p)->GetFrequency(a)
+#define IDirectSoundBuffer_GetStatus(p,a)              (p)->GetStatus(a)
+#define IDirectSoundBuffer_Initialize(p,a,b)           (p)->Initialize(a,b)
+#define IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g)       (p)->Lock(a,b,c,d,e,f,g)
+#define IDirectSoundBuffer_Play(p,a,b,c)               (p)->Play(a,b,c)
+#define IDirectSoundBuffer_SetCurrentPosition(p,a)     (p)->SetCurrentPosition(a)
+#define IDirectSoundBuffer_SetFormat(p,a)              (p)->SetFormat(a)
+#define IDirectSoundBuffer_SetVolume(p,a)              (p)->SetVolume(a)
+#define IDirectSoundBuffer_SetPan(p,a)                 (p)->SetPan(a)
+#define IDirectSoundBuffer_SetFrequency(p,a)           (p)->SetFrequency(a)
+#define IDirectSoundBuffer_Stop(p)                     (p)->Stop()
+#define IDirectSoundBuffer_Unlock(p,a,b,c,d)           (p)->Unlock(a,b,c,d)
+#define IDirectSoundBuffer_Restore(p)                  (p)->Restore()
+#endif
+
+
+/*****************************************************************************
+ * IDirectSoundBuffer8 interface
+ */
+#define INTERFACE IDirectSoundBuffer8
+DECLARE_INTERFACE_(IDirectSoundBuffer8,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectSoundBuffer8 methods ***/
+    STDMETHOD(GetCaps)(THIS_ LPDSBCAPS lpDSBufferCaps) PURE;
+    STDMETHOD(GetCurrentPosition)(THIS_ LPDWORD lpdwCurrentPlayCursor, LPDWORD lpdwCurrentWriteCursor) PURE;
+    STDMETHOD(GetFormat)(THIS_ LPWAVEFORMATEX lpwfxFormat, DWORD dwSizeAllocated, LPDWORD lpdwSizeWritten) PURE;
+    STDMETHOD(GetVolume)(THIS_ LPLONG lplVolume) PURE;
+    STDMETHOD(GetPan)(THIS_ LPLONG lplpan) PURE;
+    STDMETHOD(GetFrequency)(THIS_ LPDWORD lpdwFrequency) PURE;
+    STDMETHOD(GetStatus)(THIS_ LPDWORD lpdwStatus) PURE;
+    STDMETHOD(Initialize)(THIS_ LPDIRECTSOUND lpDirectSound, LPCDSBUFFERDESC lpcDSBufferDesc) PURE;
+    STDMETHOD(Lock)(THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE;
+    STDMETHOD(Play)(THIS_ DWORD dwReserved1, DWORD dwReserved2, DWORD dwFlags) PURE;
+    STDMETHOD(SetCurrentPosition)(THIS_ DWORD dwNewPosition) PURE;
+    STDMETHOD(SetFormat)(THIS_ LPCWAVEFORMATEX lpcfxFormat) PURE;
+    STDMETHOD(SetVolume)(THIS_ LONG lVolume) PURE;
+    STDMETHOD(SetPan)(THIS_ LONG lPan) PURE;
+    STDMETHOD(SetFrequency)(THIS_ DWORD dwFrequency) PURE;
+    STDMETHOD(Stop)(THIS) PURE;
+    STDMETHOD(Unlock)(THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioPtr2) PURE;
+    STDMETHOD(Restore)(THIS) PURE;
+    STDMETHOD(SetFX)(THIS_ DWORD dwEffectsCount, LPDSEFFECTDESC pDSFXDesc, LPDWORD pdwResultCodes) PURE;
+    STDMETHOD(AcquireResources)(THIS_ DWORD dwFlags, DWORD dwEffectsCount, LPDWORD pdwResultCodes) PURE;
+    STDMETHOD(GetObjectInPath)(THIS_ REFGUID rguidObject, DWORD dwIndex, REFGUID rguidInterface, LPVOID *ppObject) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectSoundBuffer8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectSoundBuffer8_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectSoundBuffer8_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectSoundBuffer methods ***/
+#define IDirectSoundBuffer8_GetCaps(p,a)                (p)->lpVtbl->GetCaps(p,a)
+#define IDirectSoundBuffer8_GetCurrentPosition(p,a,b)   (p)->lpVtbl->GetCurrentPosition(p,a,b)
+#define IDirectSoundBuffer8_GetFormat(p,a,b,c)          (p)->lpVtbl->GetFormat(p,a,b,c)
+#define IDirectSoundBuffer8_GetVolume(p,a)              (p)->lpVtbl->GetVolume(p,a)
+#define IDirectSoundBuffer8_GetPan(p,a)                 (p)->lpVtbl->GetPan(p,a)
+#define IDirectSoundBuffer8_GetFrequency(p,a)           (p)->lpVtbl->GetFrequency(p,a)
+#define IDirectSoundBuffer8_GetStatus(p,a)              (p)->lpVtbl->GetStatus(p,a)
+#define IDirectSoundBuffer8_Initialize(p,a,b)           (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectSoundBuffer8_Lock(p,a,b,c,d,e,f,g)       (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g)
+#define IDirectSoundBuffer8_Play(p,a,b,c)               (p)->lpVtbl->Play(p,a,b,c)
+#define IDirectSoundBuffer8_SetCurrentPosition(p,a)     (p)->lpVtbl->SetCurrentPosition(p,a)
+#define IDirectSoundBuffer8_SetFormat(p,a)              (p)->lpVtbl->SetFormat(p,a)
+#define IDirectSoundBuffer8_SetVolume(p,a)              (p)->lpVtbl->SetVolume(p,a)
+#define IDirectSoundBuffer8_SetPan(p,a)                 (p)->lpVtbl->SetPan(p,a)
+#define IDirectSoundBuffer8_SetFrequency(p,a)           (p)->lpVtbl->SetFrequency(p,a)
+#define IDirectSoundBuffer8_Stop(p)                     (p)->lpVtbl->Stop(p)
+#define IDirectSoundBuffer8_Unlock(p,a,b,c,d)           (p)->lpVtbl->Unlock(p,a,b,c,d)
+#define IDirectSoundBuffer8_Restore(p)                  (p)->lpVtbl->Restore(p)
+/*** IDirectSoundBuffer8 methods ***/
+#define IDirectSoundBuffer8_SetFX(p,a,b,c)              (p)->lpVtbl->SetFX(p,a,b,c)
+#define IDirectSoundBuffer8_AcquireResources(p,a,b,c)   (p)->lpVtbl->AcquireResources(p,a,b,c)
+#define IDirectSoundBuffer8_GetObjectInPath(p,a,b,c,d)  (p)->lpVtbl->GetObjectInPath(p,a,b,c,d)
+#else
+/*** IUnknown methods ***/
+#define IDirectSoundBuffer8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectSoundBuffer8_AddRef(p)             (p)->AddRef()
+#define IDirectSoundBuffer8_Release(p)            (p)->Release()
+/*** IDirectSoundBuffer methods ***/
+#define IDirectSoundBuffer8_GetCaps(p,a)                (p)->GetCaps(a)
+#define IDirectSoundBuffer8_GetCurrentPosition(p,a,b)   (p)->GetCurrentPosition(a,b)
+#define IDirectSoundBuffer8_GetFormat(p,a,b,c)          (p)->GetFormat(a,b,c)
+#define IDirectSoundBuffer8_GetVolume(p,a)              (p)->GetVolume(a)
+#define IDirectSoundBuffer8_GetPan(p,a)                 (p)->GetPan(a)
+#define IDirectSoundBuffer8_GetFrequency(p,a)           (p)->GetFrequency(a)
+#define IDirectSoundBuffer8_GetStatus(p,a)              (p)->GetStatus(a)
+#define IDirectSoundBuffer8_Initialize(p,a,b)           (p)->Initialize(a,b)
+#define IDirectSoundBuffer8_Lock(p,a,b,c,d,e,f,g)       (p)->Lock(a,b,c,d,e,f,g)
+#define IDirectSoundBuffer8_Play(p,a,b,c)               (p)->Play(a,b,c)
+#define IDirectSoundBuffer8_SetCurrentPosition(p,a)     (p)->SetCurrentPosition(a)
+#define IDirectSoundBuffer8_SetFormat(p,a)              (p)->SetFormat(a)
+#define IDirectSoundBuffer8_SetVolume(p,a)              (p)->SetVolume(a)
+#define IDirectSoundBuffer8_SetPan(p,a)                 (p)->SetPan(a)
+#define IDirectSoundBuffer8_SetFrequency(p,a)           (p)->SetFrequency(a)
+#define IDirectSoundBuffer8_Stop(p)                     (p)->Stop()
+#define IDirectSoundBuffer8_Unlock(p,a,b,c,d)           (p)->Unlock(a,b,c,d)
+#define IDirectSoundBuffer8_Restore(p)                  (p)->Restore()
+/*** IDirectSoundBuffer8 methods ***/
+#define IDirectSoundBuffer8_SetFX(p,a,b,c)              (p)->SetFX(a,b,c)
+#define IDirectSoundBuffer8_AcquireResources(p,a,b,c)   (p)->AcquireResources(a,b,c)
+#define IDirectSoundBuffer8_GetObjectInPath(p,a,b,c,d)  (p)->GetObjectInPath(a,b,c,d)
+#endif
+
+
+/*****************************************************************************
+ * IDirectSoundCapture interface
+ */
+#define INTERFACE IDirectSoundCapture
+DECLARE_INTERFACE_(IDirectSoundCapture,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectSoundCapture methods ***/
+    STDMETHOD(CreateCaptureBuffer)(THIS_ LPCDSCBUFFERDESC lpcDSCBufferDesc,LPDIRECTSOUNDCAPTUREBUFFER *lplpDSCaptureBuffer, LPUNKNOWN pUnk) PURE;
+    STDMETHOD(GetCaps)(THIS_ LPDSCCAPS lpDSCCaps) PURE;
+    STDMETHOD(Initialize)(THIS_ LPCGUID lpcGUID) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectSoundCapture_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectSoundCapture_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IDirectSoundCapture_Release(p)                   (p)->lpVtbl->Release(p)
+/*** IDirectSoundCapture methods ***/
+#define IDirectSoundCapture_CreateCaptureBuffer(p,a,b,c) (p)->lpVtbl->CreateCaptureBuffer(p,a,b,c)
+#define IDirectSoundCapture_GetCaps(p,a)                 (p)->lpVtbl->GetCaps(p,a)
+#define IDirectSoundCapture_Initialize(p,a)              (p)->lpVtbl->Initialize(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirectSoundCapture_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
+#define IDirectSoundCapture_AddRef(p)                    (p)->AddRef()
+#define IDirectSoundCapture_Release(p)                   (p)->Release()
+/*** IDirectSoundCapture methods ***/
+#define IDirectSoundCapture_CreateCaptureBuffer(p,a,b,c) (p)->CreateCaptureBuffer(a,b,c)
+#define IDirectSoundCapture_GetCaps(p,a)                 (p)->GetCaps(a)
+#define IDirectSoundCapture_Initialize(p,a)              (p)->Initialize(a)
+#endif
+
+/*****************************************************************************
+ * IDirectSoundCaptureBuffer interface
+ */
+#define INTERFACE IDirectSoundCaptureBuffer
+DECLARE_INTERFACE_(IDirectSoundCaptureBuffer,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectSoundCaptureBuffer methods ***/
+    STDMETHOD(GetCaps)(THIS_ LPDSCBCAPS lpDSCBCaps) PURE;
+    STDMETHOD(GetCurrentPosition)(THIS_ LPDWORD lpdwCapturePosition,LPDWORD lpdwReadPosition) PURE;
+    STDMETHOD(GetFormat)(THIS_ LPWAVEFORMATEX lpwfxFormat, DWORD dwSizeAllocated, LPDWORD lpdwSizeWritten) PURE;
+    STDMETHOD(GetStatus)(THIS_ LPDWORD lpdwStatus) PURE;
+    STDMETHOD(Initialize)(THIS_ LPDIRECTSOUNDCAPTURE lpDSC, LPCDSCBUFFERDESC lpcDSCBDesc) PURE;
+    STDMETHOD(Lock)(THIS_ DWORD dwReadCusor, DWORD dwReadBytes, LPVOID *lplpvAudioPtr1, LPDWORD lpdwAudioBytes1, LPVOID *lplpvAudioPtr2, LPDWORD lpdwAudioBytes2, DWORD dwFlags) PURE;
+    STDMETHOD(Start)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(Stop)(THIS) PURE;
+    STDMETHOD(Unlock)(THIS_ LPVOID lpvAudioPtr1, DWORD dwAudioBytes1, LPVOID lpvAudioPtr2, DWORD dwAudioBytes2) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectSoundCaptureBuffer_QueryInterface(p,a,b)     (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectSoundCaptureBuffer_AddRef(p)                 (p)->lpVtbl->AddRef(p)
+#define IDirectSoundCaptureBuffer_Release(p)                (p)->lpVtbl->Release(p)
+/*** IDirectSoundCaptureBuffer methods ***/
+#define IDirectSoundCaptureBuffer_GetCaps(p,a)              (p)->lpVtbl->GetCaps(p,a)
+#define IDirectSoundCaptureBuffer_GetCurrentPosition(p,a,b) (p)->lpVtbl->GetCurrentPosition(p,a,b)
+#define IDirectSoundCaptureBuffer_GetFormat(p,a,b,c)        (p)->lpVtbl->GetFormat(p,a,b,c)
+#define IDirectSoundCaptureBuffer_GetStatus(p,a)            (p)->lpVtbl->GetStatus(p,a)
+#define IDirectSoundCaptureBuffer_Initialize(p,a,b)         (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectSoundCaptureBuffer_Lock(p,a,b,c,d,e,f,g)     (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g)
+#define IDirectSoundCaptureBuffer_Start(p,a)                (p)->lpVtbl->Start(p,a)
+#define IDirectSoundCaptureBuffer_Stop(p)                   (p)->lpVtbl->Stop(p)
+#define IDirectSoundCaptureBuffer_Unlock(p,a,b,c,d)         (p)->lpVtbl->Unlock(p,a,b,c,d)
+#else
+/*** IUnknown methods ***/
+#define IDirectSoundCaptureBuffer_QueryInterface(p,a,b)     (p)->QueryInterface(a,b)
+#define IDirectSoundCaptureBuffer_AddRef(p)                 (p)->AddRef()
+#define IDirectSoundCaptureBuffer_Release(p)                (p)->Release()
+/*** IDirectSoundCaptureBuffer methods ***/
+#define IDirectSoundCaptureBuffer_GetCaps(p,a)              (p)->GetCaps(a)
+#define IDirectSoundCaptureBuffer_GetCurrentPosition(p,a,b) (p)->GetCurrentPosition(a,b)
+#define IDirectSoundCaptureBuffer_GetFormat(p,a,b,c)        (p)->GetFormat(a,b,c)
+#define IDirectSoundCaptureBuffer_GetStatus(p,a)            (p)->GetStatus(a)
+#define IDirectSoundCaptureBuffer_Initialize(p,a,b)         (p)->Initialize(a,b)
+#define IDirectSoundCaptureBuffer_Lock(p,a,b,c,d,e,f,g)     (p)->Lock(a,b,c,d,e,f,g)
+#define IDirectSoundCaptureBuffer_Start(p,a)                (p)->Start(a)
+#define IDirectSoundCaptureBuffer_Stop(p)                   (p)->Stop()
+#define IDirectSoundCaptureBuffer_Unlock(p,a,b,c,d)         (p)->Unlock(a,b,c,d)
+#endif
+
+/*****************************************************************************
+ * IDirectSoundCaptureBuffer8 interface
+ */
+#define INTERFACE IDirectSoundCaptureBuffer8
+DECLARE_INTERFACE_(IDirectSoundCaptureBuffer8,IDirectSoundCaptureBuffer)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectSoundCaptureBuffer methods ***/
+    STDMETHOD(GetCaps)(THIS_ LPDSCBCAPS lpDSCBCaps) PURE;
+    STDMETHOD(GetCurrentPosition)(THIS_ LPDWORD lpdwCapturePosition,LPDWORD lpdwReadPosition) PURE;
+    STDMETHOD(GetFormat)(THIS_ LPWAVEFORMATEX lpwfxFormat, DWORD dwSizeAllocated, LPDWORD lpdwSizeWritten) PURE;
+    STDMETHOD(GetStatus)(THIS_ LPDWORD lpdwStatus) PURE;
+    STDMETHOD(Initialize)(THIS_ LPDIRECTSOUNDCAPTURE lpDSC, LPCDSCBUFFERDESC lpcDSCBDesc) PURE;
+    STDMETHOD(Lock)(THIS_ DWORD dwReadCusor, DWORD dwReadBytes, LPVOID *lplpvAudioPtr1, LPDWORD lpdwAudioBytes1, LPVOID *lplpvAudioPtr2, LPDWORD lpdwAudioBytes2, DWORD dwFlags) PURE;
+    STDMETHOD(Start)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(Stop)(THIS) PURE;
+    STDMETHOD(Unlock)(THIS_ LPVOID lpvAudioPtr1, DWORD dwAudioBytes1, LPVOID lpvAudioPtr2, DWORD dwAudioBytes2) PURE;
+    /*** IDirectSoundCaptureBuffer8 methods ***/
+    STDMETHOD(GetObjectInPath)(THIS_ REFGUID rguidObject, DWORD dwIndex, REFGUID rguidInterface, LPVOID *ppObject) PURE;
+    STDMETHOD(GetFXStatus)(THIS_ DWORD dwFXCount, LPDWORD pdwFXStatus) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectSoundCaptureBuffer8_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectSoundCaptureBuffer8_AddRef(p)                  (p)->lpVtbl->AddRef(p)
+#define IDirectSoundCaptureBuffer8_Release(p)                 (p)->lpVtbl->Release(p)
+/*** IDirectSoundCaptureBuffer methods ***/
+#define IDirectSoundCaptureBuffer8_GetCaps(p,a)               (p)->lpVtbl->GetCaps(p,a)
+#define IDirectSoundCaptureBuffer8_GetCurrentPosition(p,a,b)  (p)->lpVtbl->GetCurrentPosition(p,a,b)
+#define IDirectSoundCaptureBuffer8_GetFormat(p,a,b,c)         (p)->lpVtbl->GetFormat(p,a,b,c)
+#define IDirectSoundCaptureBuffer8_GetStatus(p,a)             (p)->lpVtbl->GetStatus(p,a)
+#define IDirectSoundCaptureBuffer8_Initialize(p,a,b)          (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectSoundCaptureBuffer8_Lock(p,a,b,c,d,e,f,g)      (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g)
+#define IDirectSoundCaptureBuffer8_Start(p,a)                 (p)->lpVtbl->Start(p,a)
+#define IDirectSoundCaptureBuffer8_Stop(p)                    (p)->lpVtbl->Stop(p)
+#define IDirectSoundCaptureBuffer8_Unlock(p,a,b,c,d)          (p)->lpVtbl->Unlock(p,a,b,c,d)
+/*** IDirectSoundCaptureBuffer8 methods ***/
+#define IDirectSoundCaptureBuffer8_GetObjectInPath(p,a,b,c,d) (p)->lpVtbl->GetObjectInPath(p,a,b,c,d)
+#define IDirectSoundCaptureBuffer8_GetFXStatus(p,a,b)         (p)->lpVtbl->GetFXStatus(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirectSoundCaptureBuffer8_QueryInterface(p,a,b)      (p)->QueryInterface(a,b)
+#define IDirectSoundCaptureBuffer8_AddRef(p)                  (p)->AddRef()
+#define IDirectSoundCaptureBuffer8_Release(p)                 (p)->Release()
+/*** IDirectSoundCaptureBuffer methods ***/
+#define IDirectSoundCaptureBuffer8_GetCaps(p,a)               (p)->GetCaps(a)
+#define IDirectSoundCaptureBuffer8_GetCurrentPosition(p,a,b)  (p)->GetCurrentPosition(a,b)
+#define IDirectSoundCaptureBuffer8_GetFormat(p,a,b,c)         (p)->GetFormat(a,b,c)
+#define IDirectSoundCaptureBuffer8_GetStatus(p,a)             (p)->GetStatus(a)
+#define IDirectSoundCaptureBuffer8_Initialize(p,a,b)          (p)->Initialize(a,b)
+#define IDirectSoundCaptureBuffer8_Lock(p,a,b,c,d,e,f,g)      (p)->Lock(a,b,c,d,e,f,g)
+#define IDirectSoundCaptureBuffer8_Start(p,a)                 (p)->Start(a)
+#define IDirectSoundCaptureBuffer8_Stop(p)                    (p)->Stop()
+#define IDirectSoundCaptureBuffer8_Unlock(p,a,b,c,d)          (p)->Unlock(a,b,c,d)
+/*** IDirectSoundCaptureBuffer8 methods ***/
+#define IDirectSoundCaptureBuffer8_GetObjectInPath(p,a,b,c,d) (p)->GetObjectInPath(a,b,c,d)
+#define IDirectSoundCaptureBuffer8_GetFXStatus(p,a,b)         (p)->GetFXStatus(a,b)
+#endif
+
+/*****************************************************************************
+ * IDirectSoundNotify interface
+ */
+#define WINE_NOBUFFER                   0x80000000
+
+#define DSBPN_OFFSETSTOP		-1
+
+#define INTERFACE IDirectSoundNotify
+DECLARE_INTERFACE_(IDirectSoundNotify,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectSoundNotify methods ***/
+    STDMETHOD(SetNotificationPositions)(THIS_ DWORD cPositionNotifies, LPCDSBPOSITIONNOTIFY lpcPositionNotifies) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectSoundNotify_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectSoundNotify_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectSoundNotify_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectSoundNotify methods ***/
+#define IDirectSoundNotify_SetNotificationPositions(p,a,b) (p)->lpVtbl->SetNotificationPositions(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirectSoundNotify_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectSoundNotify_AddRef(p)             (p)->AddRef()
+#define IDirectSoundNotify_Release(p)            (p)->Release()
+/*** IDirectSoundNotify methods ***/
+#define IDirectSoundNotify_SetNotificationPositions(p,a,b) (p)->SetNotificationPositions(a,b)
+#endif
+
+
+/*****************************************************************************
+ * IDirectSound3DListener interface
+ */
+#define DS3DMODE_NORMAL             0x00000000
+#define DS3DMODE_HEADRELATIVE       0x00000001
+#define DS3DMODE_DISABLE            0x00000002
+
+#define DS3D_IMMEDIATE              0x00000000
+#define DS3D_DEFERRED               0x00000001
+
+#define DS3D_MINDISTANCEFACTOR      FLT_MIN
+#define DS3D_MAXDISTANCEFACTOR      FLT_MAX
+#define DS3D_DEFAULTDISTANCEFACTOR  1.0f
+
+#define DS3D_MINROLLOFFFACTOR       0.0f
+#define DS3D_MAXROLLOFFFACTOR       10.0f
+#define DS3D_DEFAULTROLLOFFFACTOR   1.0f
+
+#define DS3D_MINDOPPLERFACTOR       0.0f
+#define DS3D_MAXDOPPLERFACTOR       10.0f
+#define DS3D_DEFAULTDOPPLERFACTOR   1.0f
+
+#define DS3D_DEFAULTMINDISTANCE     1.0f
+#define DS3D_DEFAULTMAXDISTANCE     1000000000.0f
+
+#define DS3D_MINCONEANGLE           0
+#define DS3D_MAXCONEANGLE           360
+#define DS3D_DEFAULTCONEANGLE       360
+
+#define DS3D_DEFAULTCONEOUTSIDEVOLUME   DSBVOLUME_MAX
+
+typedef struct _DS3DLISTENER {
+	DWORD				dwSize;
+	D3DVECTOR			vPosition;
+	D3DVECTOR			vVelocity;
+	D3DVECTOR			vOrientFront;
+	D3DVECTOR			vOrientTop;
+	D3DVALUE			flDistanceFactor;
+	D3DVALUE			flRolloffFactor;
+	D3DVALUE			flDopplerFactor;
+} DS3DLISTENER, *LPDS3DLISTENER;
+
+typedef const DS3DLISTENER *LPCDS3DLISTENER;
+
+#define INTERFACE IDirectSound3DListener
+DECLARE_INTERFACE_(IDirectSound3DListener,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectSound3DListener methods ***/
+    STDMETHOD(GetAllParameters)(THIS_ LPDS3DLISTENER lpListener) PURE;
+    STDMETHOD(GetDistanceFactor)(THIS_ LPD3DVALUE lpflDistanceFactor) PURE;
+    STDMETHOD(GetDopplerFactor)(THIS_ LPD3DVALUE lpflDopplerFactor) PURE;
+    STDMETHOD(GetOrientation)(THIS_ LPD3DVECTOR lpvOrientFront, LPD3DVECTOR lpvOrientTop) PURE;
+    STDMETHOD(GetPosition)(THIS_ LPD3DVECTOR lpvPosition) PURE;
+    STDMETHOD(GetRolloffFactor)(THIS_ LPD3DVALUE lpflRolloffFactor) PURE;
+    STDMETHOD(GetVelocity)(THIS_ LPD3DVECTOR lpvVelocity) PURE;
+    STDMETHOD(SetAllParameters)(THIS_ LPCDS3DLISTENER lpcListener, DWORD dwApply) PURE;
+    STDMETHOD(SetDistanceFactor)(THIS_ D3DVALUE flDistanceFactor, DWORD dwApply) PURE;
+    STDMETHOD(SetDopplerFactor)(THIS_ D3DVALUE flDopplerFactor, DWORD dwApply) PURE;
+    STDMETHOD(SetOrientation)(THIS_ D3DVALUE xFront, D3DVALUE yFront, D3DVALUE zFront, D3DVALUE xTop, D3DVALUE yTop, D3DVALUE zTop, DWORD dwApply) PURE;
+    STDMETHOD(SetPosition)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE;
+    STDMETHOD(SetRolloffFactor)(THIS_ D3DVALUE flRolloffFactor, DWORD dwApply) PURE;
+    STDMETHOD(SetVelocity)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE;
+    STDMETHOD(CommitDeferredSettings)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectSound3DListener_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectSound3DListener_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectSound3DListener_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectSound3DListener methods ***/
+#define IDirectSound3DListener_GetAllParameters(p,a)           (p)->lpVtbl->GetAllParameters(p,a)
+#define IDirectSound3DListener_GetDistanceFactor(p,a)          (p)->lpVtbl->GetDistanceFactor(p,a)
+#define IDirectSound3DListener_GetDopplerFactor(p,a)           (p)->lpVtbl->GetDopplerFactor(p,a)
+#define IDirectSound3DListener_GetOrientation(p,a,b)           (p)->lpVtbl->GetOrientation(p,a,b)
+#define IDirectSound3DListener_GetPosition(p,a)                (p)->lpVtbl->GetPosition(p,a)
+#define IDirectSound3DListener_GetRolloffFactor(p,a)           (p)->lpVtbl->GetRolloffFactor(p,a)
+#define IDirectSound3DListener_GetVelocity(p,a)                (p)->lpVtbl->GetVelocity(p,a)
+#define IDirectSound3DListener_SetAllParameters(p,a,b)         (p)->lpVtbl->SetAllParameters(p,a,b)
+#define IDirectSound3DListener_SetDistanceFactor(p,a,b)        (p)->lpVtbl->SetDistanceFactor(p,a,b)
+#define IDirectSound3DListener_SetDopplerFactor(p,a,b)         (p)->lpVtbl->SetDopplerFactor(p,a,b)
+#define IDirectSound3DListener_SetOrientation(p,a,b,c,d,e,f,g) (p)->lpVtbl->SetOrientation(p,a,b,c,d,e,f,g)
+#define IDirectSound3DListener_SetPosition(p,a,b,c,d)          (p)->lpVtbl->SetPosition(p,a,b,c,d)
+#define IDirectSound3DListener_SetRolloffFactor(p,a,b)         (p)->lpVtbl->SetRolloffFactor(p,a,b)
+#define IDirectSound3DListener_SetVelocity(p,a,b,c,d)          (p)->lpVtbl->SetVelocity(p,a,b,c,d)
+#define IDirectSound3DListener_CommitDeferredSettings(p)       (p)->lpVtbl->CommitDeferredSettings(p)
+#else
+/*** IUnknown methods ***/
+#define IDirectSound3DListener_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectSound3DListener_AddRef(p)             (p)->AddRef()
+#define IDirectSound3DListener_Release(p)            (p)->Release()
+/*** IDirectSound3DListener methods ***/
+#define IDirectSound3DListener_GetAllParameters(p,a)           (p)->GetAllParameters(a)
+#define IDirectSound3DListener_GetDistanceFactor(p,a)          (p)->GetDistanceFactor(a)
+#define IDirectSound3DListener_GetDopplerFactor(p,a)           (p)->GetDopplerFactor(a)
+#define IDirectSound3DListener_GetOrientation(p,a,b)           (p)->GetOrientation(a,b)
+#define IDirectSound3DListener_GetPosition(p,a)                (p)->GetPosition(a)
+#define IDirectSound3DListener_GetRolloffFactor(p,a)           (p)->GetRolloffFactor(a)
+#define IDirectSound3DListener_GetVelocity(p,a)                (p)->GetVelocity(a)
+#define IDirectSound3DListener_SetAllParameters(p,a,b)         (p)->SetAllParameters(a,b)
+#define IDirectSound3DListener_SetDistanceFactor(p,a,b)        (p)->SetDistanceFactor(a,b)
+#define IDirectSound3DListener_SetDopplerFactor(p,a,b)         (p)->SetDopplerFactor(a,b)
+#define IDirectSound3DListener_SetOrientation(p,a,b,c,d,e,f,g) (p)->SetOrientation(a,b,c,d,e,f,g)
+#define IDirectSound3DListener_SetPosition(p,a,b,c,d)          (p)->SetPosition(a,b,c,d)
+#define IDirectSound3DListener_SetRolloffFactor(p,a,b)         (p)->SetRolloffFactor(a,b)
+#define IDirectSound3DListener_SetVelocity(p,a,b,c,d)          (p)->SetVelocity(a,b,c,d)
+#define IDirectSound3DListener_CommitDeferredSettings(p)       (p)->CommitDeferredSettings()
+#endif
+
+
+/*****************************************************************************
+ * IDirectSound3DBuffer interface
+ */
+typedef struct  _DS3DBUFFER {
+	DWORD				dwSize;
+	D3DVECTOR			vPosition;
+	D3DVECTOR			vVelocity;
+	DWORD				dwInsideConeAngle;
+	DWORD				dwOutsideConeAngle;
+	D3DVECTOR			vConeOrientation;
+	LONG				lConeOutsideVolume;
+	D3DVALUE			flMinDistance;
+	D3DVALUE			flMaxDistance;
+	DWORD				dwMode;
+} DS3DBUFFER, *LPDS3DBUFFER;
+
+typedef const DS3DBUFFER *LPCDS3DBUFFER;
+
+#define INTERFACE IDirectSound3DBuffer
+DECLARE_INTERFACE_(IDirectSound3DBuffer,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectSound3DBuffer methods ***/
+    STDMETHOD(GetAllParameters)(THIS_ LPDS3DBUFFER lpDs3dBuffer) PURE;
+    STDMETHOD(GetConeAngles)(THIS_ LPDWORD lpdwInsideConeAngle, LPDWORD lpdwOutsideConeAngle) PURE;
+    STDMETHOD(GetConeOrientation)(THIS_ LPD3DVECTOR lpvOrientation) PURE;
+    STDMETHOD(GetConeOutsideVolume)(THIS_ LPLONG lplConeOutsideVolume) PURE;
+    STDMETHOD(GetMaxDistance)(THIS_ LPD3DVALUE lpflMaxDistance) PURE;
+    STDMETHOD(GetMinDistance)(THIS_ LPD3DVALUE lpflMinDistance) PURE;
+    STDMETHOD(GetMode)(THIS_ LPDWORD lpwdMode) PURE;
+    STDMETHOD(GetPosition)(THIS_ LPD3DVECTOR lpvPosition) PURE;
+    STDMETHOD(GetVelocity)(THIS_ LPD3DVECTOR lpvVelocity) PURE;
+    STDMETHOD(SetAllParameters)(THIS_ LPCDS3DBUFFER lpcDs3dBuffer, DWORD dwApply) PURE;
+    STDMETHOD(SetConeAngles)(THIS_ DWORD dwInsideConeAngle, DWORD dwOutsideConeAngle, DWORD dwApply) PURE;
+    STDMETHOD(SetConeOrientation)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE;
+    STDMETHOD(SetConeOutsideVolume)(THIS_ LONG lConeOutsideVolume, DWORD dwApply) PURE;
+    STDMETHOD(SetMaxDistance)(THIS_ D3DVALUE flMaxDistance, DWORD dwApply) PURE;
+    STDMETHOD(SetMinDistance)(THIS_ D3DVALUE flMinDistance, DWORD dwApply) PURE;
+    STDMETHOD(SetMode)(THIS_ DWORD dwMode, DWORD dwApply) PURE;
+    STDMETHOD(SetPosition)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE;
+    STDMETHOD(SetVelocity)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectSound3DBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectSound3DBuffer_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectSound3DBuffer_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirectSound3DBuffer methods ***/
+#define IDirectSound3DBuffer_GetAllParameters(p,a)         (p)->lpVtbl->GetAllParameters(p,a)
+#define IDirectSound3DBuffer_GetConeAngles(p,a,b)          (p)->lpVtbl->GetConeAngles(p,a,b)
+#define IDirectSound3DBuffer_GetConeOrientation(p,a)       (p)->lpVtbl->GetConeOrientation(p,a)
+#define IDirectSound3DBuffer_GetConeOutsideVolume(p,a)     (p)->lpVtbl->GetConeOutsideVolume(p,a)
+#define IDirectSound3DBuffer_GetMaxDistance(p,a)           (p)->lpVtbl->GetMaxDistance(p,a)
+#define IDirectSound3DBuffer_GetMinDistance(p,a)           (p)->lpVtbl->GetMinDistance(p,a)
+#define IDirectSound3DBuffer_GetMode(p,a)                  (p)->lpVtbl->GetMode(p,a)
+#define IDirectSound3DBuffer_GetPosition(p,a)              (p)->lpVtbl->GetPosition(p,a)
+#define IDirectSound3DBuffer_GetVelocity(p,a)              (p)->lpVtbl->GetVelocity(p,a)
+#define IDirectSound3DBuffer_SetAllParameters(p,a,b)       (p)->lpVtbl->SetAllParameters(p,a,b)
+#define IDirectSound3DBuffer_SetConeAngles(p,a,b)          (p)->lpVtbl->SetConeAngles(p,a,b)
+#define IDirectSound3DBuffer_SetConeOrientation(p,a,b,c,d) (p)->lpVtbl->SetConeOrientation(p,a,b,c,d)
+#define IDirectSound3DBuffer_SetConeOutsideVolume(p,a,b)   (p)->lpVtbl->SetConeOutsideVolume(p,a,b)
+#define IDirectSound3DBuffer_SetMaxDistance(p,a,b)         (p)->lpVtbl->SetMaxDistance(p,a,b)
+#define IDirectSound3DBuffer_SetMinDistance(p,a,b)         (p)->lpVtbl->SetMinDistance(p,a,b)
+#define IDirectSound3DBuffer_SetMode(p,a,b)                (p)->lpVtbl->SetMode(p,a,b)
+#define IDirectSound3DBuffer_SetPosition(p,a,b,c,d)        (p)->lpVtbl->SetPosition(p,a,b,c,d)
+#define IDirectSound3DBuffer_SetVelocity(p,a,b,c,d)        (p)->lpVtbl->SetVelocity(p,a,b,c,d)
+#else
+/*** IUnknown methods ***/
+#define IDirectSound3DBuffer_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectSound3DBuffer_AddRef(p)             (p)->AddRef()
+#define IDirectSound3DBuffer_Release(p)            (p)->Release()
+/*** IDirectSound3DBuffer methods ***/
+#define IDirectSound3DBuffer_GetAllParameters(p,a)         (p)->GetAllParameters(a)
+#define IDirectSound3DBuffer_GetConeAngles(p,a,b)          (p)->GetConeAngles(a,b)
+#define IDirectSound3DBuffer_GetConeOrientation(p,a)       (p)->GetConeOrientation(a)
+#define IDirectSound3DBuffer_GetConeOutsideVolume(p,a)     (p)->GetConeOutsideVolume(a)
+#define IDirectSound3DBuffer_GetMaxDistance(p,a)           (p)->GetMaxDistance(a)
+#define IDirectSound3DBuffer_GetMinDistance(p,a)           (p)->GetMinDistance(a)
+#define IDirectSound3DBuffer_GetMode(p,a)                  (p)->GetMode(a)
+#define IDirectSound3DBuffer_GetPosition(p,a)              (p)->GetPosition(a)
+#define IDirectSound3DBuffer_GetVelocity(p,a)              (p)->GetVelocity(a)
+#define IDirectSound3DBuffer_SetAllParameters(p,a,b)       (p)->SetAllParameters(a,b)
+#define IDirectSound3DBuffer_SetConeAngles(p,a,b)          (p)->SetConeAngles(a,b)
+#define IDirectSound3DBuffer_SetConeOrientation(p,a,b,c,d) (p)->SetConeOrientation(a,b,c,d)
+#define IDirectSound3DBuffer_SetConeOutsideVolume(p,a,b)   (p)->SetConeOutsideVolume(a,b)
+#define IDirectSound3DBuffer_SetMaxDistance(p,a,b)         (p)->SetMaxDistance(a,b)
+#define IDirectSound3DBuffer_SetMinDistance(p,a,b)         (p)->SetMinDistance(a,b)
+#define IDirectSound3DBuffer_SetMode(p,a,b)                (p)->SetMode(a,b)
+#define IDirectSound3DBuffer_SetPosition(p,a,b,c,d)        (p)->SetPosition(a,b,c,d)
+#define IDirectSound3DBuffer_SetVelocity(p,a,b,c,d)        (p)->SetVelocity(a,b,c,d)
+#endif
+
+/*****************************************************************************
+ * IKsPropertySet interface
+ */
+#ifndef _IKsPropertySet_
+#define _IKsPropertySet_
+
+typedef struct IKsPropertySet *LPKSPROPERTYSET;
+
+DEFINE_GUID(IID_IKsPropertySet,0x31EFAC30,0x515C,0x11D0,0xA9,0xAA,0x00,0xAA,0x00,0x61,0xBE,0x93);
+
+#define KSPROPERTY_SUPPORT_GET	1
+#define KSPROPERTY_SUPPORT_SET	2
+
+#define INTERFACE IKsPropertySet
+DECLARE_INTERFACE_(IKsPropertySet,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IKsPropertySet methods ***/
+    STDMETHOD(Get)(THIS_ REFGUID rgid,ULONG x1,LPVOID p1,ULONG x2,LPVOID p2,ULONG x3,ULONG *px4) PURE;
+    STDMETHOD(Set)(THIS_ REFGUID rgid,ULONG x1,LPVOID p1,ULONG x2,LPVOID p2,ULONG x3) PURE;
+    STDMETHOD(QuerySupport)(THIS_ REFGUID rgid,ULONG x1,ULONG *px2) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IKsPropertySet_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
+#define IKsPropertySet_AddRef(p)                (p)->lpVtbl->AddRef(p)
+#define IKsPropertySet_Release(p)               (p)->lpVtbl->Release(p)
+/*** IKsPropertySet methods ***/
+#define IKsPropertySet_Get(p,a,b,c,d,e,f,g)     (p)->lpVtbl->Get(p,a,b,c,d,e,f,g)
+#define IKsPropertySet_Set(p,a,b,c,d,e,f)       (p)->lpVtbl->Set(p,a,b,c,d,e,f)
+#define IKsPropertySet_QuerySupport(p,a,b,c)    (p)->lpVtbl->QuerySupport(p,a,b,c)
+#else
+/*** IUnknown methods ***/
+#define IKsPropertySet_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
+#define IKsPropertySet_AddRef(p)                (p)->AddRef()
+#define IKsPropertySet_Release(p)               (p)->Release()
+/*** IKsPropertySet methods ***/
+#define IKsPropertySet_Get(p,a,b,c,d,e,f,g)     (p)->Get(a,b,c,d,e,f,g)
+#define IKsPropertySet_Set(p,a,b,c,d,e,f)       (p)->Set(a,b,c,d,e,f)
+#define IKsPropertySet_QuerySupport(p,a,b,c)    (p)->QuerySupport(a,b,c)
+#endif
+
+#endif /* _IKsPropertySet_ */
+
+/*****************************************************************************
+ * IDirectSoundFullDuplex interface
+ */
+#define INTERFACE IDirectSoundFullDuplex
+DECLARE_INTERFACE_(IDirectSoundFullDuplex,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectSoundFullDuplex methods ***/
+    STDMETHOD(Initialize)(THIS_ LPCGUID pCaptureGuid,LPCGUID pRendererGuid,LPCDSCBUFFERDESC lpDscBufferDesc,LPCDSBUFFERDESC lpDsBufferDesc,HWND hWnd,DWORD dwLevel,LPLPDIRECTSOUNDCAPTUREBUFFER8 lplpDirectSoundCaptureBuffer8,LPLPDIRECTSOUNDBUFFER8 lplpDirectSoundBuffer8) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectSoundFullDuplex_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectSoundFullDuplex_AddRef(p)                (p)->lpVtbl->AddRef(p)
+#define IDirectSoundFullDuplex_Release(p)               (p)->lpVtbl->Release(p)
+/*** IDirectSoundFullDuplex methods ***/
+#define IDirectSoundFullDuplex_Initialize(p,a,b,c,d,e,f,g,h)    (p)->lpVtbl->Initialize(p,a,b,c,d,e,f,g,h)
+#else
+/*** IUnknown methods ***/
+#define IDirectSoundFullDuplex_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
+#define IDirectSoundFullDuplex_AddRef(p)                (p)->AddRef()
+#define IDirectSoundFullDuplex_Release(p)               (p)->Release()
+/*** IDirectSoundFullDuplex methods ***/
+#define IDirectSoundFullDuplex_Initialize(p,a,b,c,d,e,f,g,h)    (p)->Initialize(a,b,c,d,e,f,g,h)
+#endif
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif /* __WINE_DSOUND_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dsrole.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dsrole.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dsrole.h	(revision 16410)
@@ -0,0 +1,84 @@
+/*
+ * Directory Services definitions
+ *
+ * Copyright 2005 Paul Vriens
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DSROLE_H
+#define __WINE_DSROLE_H
+
+#define DSROLE_PRIMARY_DS_RUNNING           0x00000001
+#define DSROLE_PRIMARY_DS_MIXED_MODE        0x00000002
+#define DSROLE_UPGRADE_IN_PROGRESS          0x00000004
+#define DSROLE_PRIMARY_DOMAIN_GUID_PRESENT  0x01000000
+
+typedef enum _DSROLE_PRIMARY_DOMAIN_INFO_LEVEL
+{
+    DsRolePrimaryDomainInfoBasic = 1,
+    DsRoleUpgradeStatus,
+    DsRoleOperationState
+} DSROLE_PRIMARY_DOMAIN_INFO_LEVEL;
+
+typedef enum _DSROLE_MACHINE_ROLE
+{
+  DsRole_RoleStandaloneWorkstation = 0,
+  DsRole_RoleMemberWorkstation,
+  DsRole_RoleStandaloneServer,
+  DsRole_RoleMemberServer,
+  DsRole_RoleBackupDomainController,
+  DsRole_RolePrimaryDomainController
+} DSROLE_MACHINE_ROLE;
+
+typedef enum _DSROLE_SERVER_STATE
+{
+  DsRoleServerUnknown = 0,
+  DsRoleServerPrimary,
+  DsRoleServerBackup
+} DSROLE_SERVER_STATE;
+
+typedef enum _DSROLE_OPERATION_STATE
+{
+  DsRoleOperationIdle = 0,
+  DsRoleOperationActive,
+  DsRoleOperationNeedReboot
+} DSROLE_OPERATION_STATE;
+
+typedef struct _DSROLE_PRIMARY_DOMAIN_INFO_BASIC
+{
+    DSROLE_MACHINE_ROLE MachineRole;
+    ULONG Flags;
+    LPWSTR DomainNameFlat;
+    LPWSTR DomainNameDns;
+    LPWSTR DomainForestName;
+    GUID DomainGuid;
+} DSROLE_PRIMARY_DOMAIN_INFO_BASIC, *PDSROLE_PRIMARY_DOMAIN_INFO_BASIC;
+
+typedef struct _DSROLE_UPGRADE_STATUS_INFO
+{
+    ULONG OperationState;
+    DSROLE_SERVER_STATE PreviousServerState;
+} DSROLE_UPGRADE_STATUS_INFO, *PDSROLE_UPGRADE_STATUS_INFO;
+
+typedef struct _DSROLE_OPERATION_STATE_INFO
+{
+    DSROLE_OPERATION_STATE OperationState;
+} DSROLE_OPERATION_STATE_INFO, *PDSROLE_OPERATION_STATE_INFO;
+
+VOID WINAPI DsRoleFreeMemory(IN PVOID Buffer);
+DWORD WINAPI DsRoleGetPrimaryDomainInformation(IN LPCWSTR lpServer OPTIONAL, IN DSROLE_PRIMARY_DOMAIN_INFO_LEVEL InfoLevel, OUT PBYTE *Buffer);
+
+#endif /* __WINE_DSROLE_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dvdmedia.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dvdmedia.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dvdmedia.h	(revision 16410)
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2008 Maarten Lankhorst
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __DVDMEDIA_H__
+#define __DVDMEDIA_H__
+
+#define AMCONTROL_USED 0x00000001
+#define AMCONTROL_PAD_TO_4x3 0x00000002
+#define AMCONTROL_PAD_TO_16x9 0x00000004
+
+typedef struct tagVIDEOINFOHEADER2 {
+    RECT rcSource;
+    RECT rcTarget;
+    DWORD dwBitRate;
+    DWORD dwBitErrorRate;
+    REFERENCE_TIME AvgTimePerFrame;
+    DWORD dwInterlaceFlags;
+    DWORD dwCopyProtectFlags;
+    DWORD dwPictAspectRatioX;
+    DWORD dwPictAspectRatioY;
+    union {
+        DWORD dwControlFlags;
+        DWORD dwReserved1;
+    } DUMMYUNIONNAME;
+    DWORD dwReserved2;
+    BITMAPINFOHEADER bmiHeader;
+} VIDEOINFOHEADER2;
+
+#endif /* __DVDMEDIA_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dwmapi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dwmapi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dwmapi.h	(revision 16410)
@@ -0,0 +1,45 @@
+/*
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DWMAPI_H
+#define __WINE_DWMAPI_H
+
+#include "wtypes.h"
+#include "uxtheme.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef DWMAPI
+# define DWMAPI        STDAPI
+# define DWMAPI_(type) STDAPI_(type)
+#endif
+
+DECLARE_HANDLE(HTHUMBNAIL);
+
+DWMAPI DwmEnableComposition(UINT);
+DWMAPI DwmExtendFrameIntoClientArea(HWND,const MARGINS*);
+DWMAPI DwmGetColorizationColor(DWORD*,BOOL);
+DWMAPI DwmIsCompositionEnabled(BOOL*);
+DWMAPI DwmSetWindowAttribute(HWND, DWORD, LPCVOID, DWORD);
+DWMAPI DwmUnregisterThumbnail(HTHUMBNAIL);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* __WINE_DWMAPI_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dxdiag.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dxdiag.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dxdiag.h	(revision 16410)
@@ -0,0 +1,155 @@
+/*
+ * Copyright (C) 2004 Raphael Junqueira
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DXDIAG_H
+#define __WINE_DXDIAG_H
+
+#include <ole2.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+/*****************************************************************************
+ * #defines and error codes
+ */
+#define DXDIAG_DX9_SDK_VERSION 111
+
+#define _FACDXDIAG  0x007
+#define MAKE_DXDIAGHRESULT( code )  MAKE_HRESULT( 1, _FACDXDIAG, code )
+
+/*
+ * DXDiag Errors
+ */
+#define DXDIAG_E_INSUFFICIENT_BUFFER       MAKE_DXDIAGHRESULT(0x007A)
+
+
+/*****************************************************************************
+ * DXDiag structures Typedefs
+ */
+typedef struct _DXDIAG_INIT_PARAMS {
+  DWORD  dwSize;
+  DWORD  dwDxDiagHeaderVersion;
+  BOOL   bAllowWHQLChecks;
+  VOID*  pReserved;
+} DXDIAG_INIT_PARAMS;
+
+
+/*****************************************************************************
+ * Predeclare the interfaces
+ */
+/* CLSIDs */
+DEFINE_GUID(CLSID_DxDiagProvider,   0xA65B8071, 0x3BFE, 0x4213, 0x9A, 0x5B, 0x49, 0x1D, 0xA4, 0x46, 0x1C, 0xA7);
+
+/* IIDs */
+DEFINE_GUID(IID_IDxDiagProvider,    0x9C6B4CB0, 0x23F8, 0x49CC, 0xA3, 0xED, 0x45, 0xA5, 0x50, 0x00, 0xA6, 0xD2);
+DEFINE_GUID(IID_IDxDiagContainer,   0x7D0F462F, 0x4064, 0x4862, 0xBC, 0x7F, 0x93, 0x3E, 0x50, 0x58, 0xC1, 0x0F);
+
+/* typedef definitions */
+typedef struct IDxDiagProvider *LPDXDIAGPROVIDER,   *PDXDIAGPROVIDER;
+typedef struct IDxDiagContainer *LPDXDIAGCONTAINER,  *PDXDIAGCONTAINER;
+
+/*****************************************************************************
+ * IDxDiagContainer interface
+ */
+#ifdef WINE_NO_UNICODE_MACROS
+#undef GetProp
+#endif
+
+#define INTERFACE IDxDiagContainer
+DECLARE_INTERFACE_(IDxDiagContainer,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDxDiagContainer methods ***/
+    STDMETHOD(GetNumberOfChildContainers)(THIS_  DWORD* pdwCount) PURE;
+    STDMETHOD(EnumChildContainerNames)(THIS_ DWORD dwIndex, LPWSTR pwszContainer, DWORD cchContainer) PURE;
+    STDMETHOD(GetChildContainer)(THIS_ LPCWSTR pwszContainer, IDxDiagContainer** ppInstance) PURE;
+    STDMETHOD(GetNumberOfProps)(THIS_ DWORD* pdwCount) PURE;
+    STDMETHOD(EnumPropNames)(THIS_ DWORD dwIndex, LPWSTR pwszPropName, DWORD cchPropName) PURE;
+    STDMETHOD(GetProp)(THIS_ LPCWSTR pwszPropName, VARIANT* pvarProp) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define	IDxDiagContainer_QueryInterface(p,a,b)               (p)->lpVtbl->QueryInterface(p,a,b)
+#define	IDxDiagContainer_AddRef(p)                           (p)->lpVtbl->AddRef(p)
+#define	IDxDiagContainer_Release(p)                          (p)->lpVtbl->Release(p)
+/*** IDxDiagContainer methods ***/
+#define IDxDiagContainer_GetNumberOfChildContainers(p,a)     (p)->lpVtbl->GetNumberOfChildContainers(p,a)
+#define IDxDiagContainer_EnumChildContainerNames(p,a,b,c)    (p)->lpVtbl->EnumChildContainerNames(p,a,b,c)
+#define IDxDiagContainer_GetChildContainer(p,a,b)            (p)->lpVtbl->GetChildContainer(p,a,b)
+#define IDxDiagContainer_GetNumberOfProps(p,a)               (p)->lpVtbl->GetNumberOfProps(p,a)
+#define IDxDiagContainer_EnumPropNames(p,a,b,c)              (p)->lpVtbl->EnumPropNames(p,a,b,c)
+#define IDxDiagContainer_GetProp(p,a,b)                      (p)->lpVtbl->GetProp(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define	IDxDiagContainer_QueryInterface(p,a,b)               (p)->QueryInterface(a,b)
+#define	IDxDiagContainer_AddRef(p)                           (p)->AddRef()
+#define	IDxDiagContainer_Release(p)                          (p)->Release()
+/*** IDxDiagContainer methods ***/
+#define IDxDiagContainer_GetNumberOfChildContainers(p,a)     (p)->GetNumberOfChildContainers(a)
+#define IDxDiagContainer_EnumChildContainerNames(p,a,b,c)    (p)->EnumChildContainerNames(a,b,c)
+#define IDxDiagContainer_GetChildContainer(p,a,b)            (p)->GetChildContainer(a,b)
+#define IDxDiagContainer_GetNumberOfProps(p,a)               (p)->GetNumberOfProps(a)
+#define IDxDiagContainer_EnumPropNames(p,a,b,c)              (p)->EnumPropNames(a,b,c)
+#define IDxDiagContainer_GetProp(p,a,b)                      (p)->GetProp(a,b)
+#endif
+
+/*****************************************************************************
+ * IDxDiagProvider interface
+ */
+#define INTERFACE IDxDiagProvider
+DECLARE_INTERFACE_(IDxDiagProvider,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDxDiagProvider methods ***/
+    STDMETHOD(Initialize)(THIS_ DXDIAG_INIT_PARAMS* pParams) PURE;
+    STDMETHOD(GetRootContainer)(THIS_ IDxDiagContainer** ppInstance) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define	IDxDiagProvider_QueryInterface(p,a,b)                (p)->lpVtbl->QueryInterface(p,a,b)
+#define	IDxDiagProvider_AddRef(p)                            (p)->lpVtbl->AddRef(p)
+#define	IDxDiagProvider_Release(p)                           (p)->lpVtbl->Release(p)
+/*** IDxDiagProvider methods ***/
+#define IDxDiagProvider_Initialize(p,a)                      (p)->lpVtbl->Initialize(p,a)
+#define IDxDiagProvider_GetRootContainer(p,a)                (p)->lpVtbl->GetRootContainer(p,a)
+#else
+/*** IUnknown methods ***/
+#define	IDxDiagProvider_QueryInterface(p,a,b)                (p)->QueryInterface(a,b)
+#define	IDxDiagProvider_AddRef(p)                            (p)->AddRef()
+#define	IDxDiagProvider_Release(p)                           (p)->Release()
+/*** IDxDiagProvider methods ***/
+#define IDxDiagProvider_Initialize(p,a)                      (p)->Initialize(a)
+#define IDxDiagProvider_GetRootContainer(p,a)                (p)->GetRootContainer(a)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dxerr8.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dxerr8.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dxerr8.h	(revision 16410)
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2004 Robert Reif
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DXERR8_H
+#define __WINE_DXERR8_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+const char*     WINAPI DXGetErrorString8A(HRESULT hr);
+const WCHAR*    WINAPI DXGetErrorString8W(HRESULT hr);
+#define DXGetErrorString8 WINELIB_NAME_AW(DXGetErrorString8)
+
+const char*    WINAPI DXGetErrorDescription8A(HRESULT hr);
+const WCHAR*   WINAPI DXGetErrorDescription8W(HRESULT hr);
+#define DXGetErrorDescription8 WINELIB_NAME_AW(DXGetErrorDescription8)
+
+HRESULT WINAPI  DXTraceA(const char* strFile, DWORD dwLine, HRESULT hr, const char*  strMsg, BOOL bPopMsgBox);
+HRESULT WINAPI  DXTraceW(const char* strFile, DWORD dwLine, HRESULT hr, const WCHAR* strMsg, BOOL bPopMsgBox);
+#define DXTrace WINELIB_NAME_AW(DXTrace)
+
+#if defined(DEBUG) || defined(_DEBUG)
+#define DXTRACE_MSG(str)                DXTrace(__FILE__, (DWORD)__LINE__, 0,  str, FALSE)
+#define DXTRACE_ERR(str,hr)             DXTrace(__FILE__, (DWORD)__LINE__, hr, str, TRUE)
+#define DXTRACE_ERR_NOMSGBOX(str,hr)    DXTrace(__FILE__, (DWORD)__LINE__, hr, str, FALSE)
+#else
+#define DXTRACE_MSG(str)                (0L)
+#define DXTRACE_ERR(str,hr)             (hr)
+#define DXTRACE_ERR_NOMSGBOX(str,hr)    (hr)
+#endif
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif /* __WINE_DXERR8_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dxerr9.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dxerr9.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dxerr9.h	(revision 16410)
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2004 Robert Reif
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DXERR9_H
+#define __WINE_DXERR9_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+const char*     WINAPI DXGetErrorString9A(HRESULT hr);
+const WCHAR*    WINAPI DXGetErrorString9W(HRESULT hr);
+#define DXGetErrorString9 WINELIB_NAME_AW(DXGetErrorString9)
+
+const char*     WINAPI DXGetErrorDescription9A(HRESULT hr);
+const WCHAR*    WINAPI DXGetErrorDescription9W(HRESULT hr);
+#define DXGetErrorDescription9 WINELIB_NAME_AW(DXGetErrorDescription9)
+
+HRESULT WINAPI DXTraceA(const char* strFile, DWORD dwLine, HRESULT hr, const char*  strMsg, BOOL bPopMsgBox);
+HRESULT WINAPI DXTraceW(const char* strFile, DWORD dwLine, HRESULT hr, const WCHAR* strMsg, BOOL bPopMsgBox);
+#define DXTrace WINELIB_NAME_AW(DXTrace)
+
+#if defined(DEBUG) || defined(_DEBUG)
+#define DXTRACE_MSG(str)                DXTrace(__FILE__, (DWORD)__LINE__, 0,  str, FALSE)
+#define DXTRACE_ERR(str,hr)             DXTrace(__FILE__, (DWORD)__LINE__, hr, str, TRUE)
+#define DXTRACE_ERR_NOMSGBOX(str,hr)    DXTrace(__FILE__, (DWORD)__LINE__, hr, str, FALSE)
+#else
+#define DXTRACE_MSG(str)                (0L)
+#define DXTRACE_ERR(str,hr)             (hr)
+#define DXTRACE_ERR_NOMSGBOX(str,hr)    (hr)
+#endif
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif /* __WINE_DXERR9_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dxfile.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dxfile.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dxfile.h	(revision 16410)
@@ -0,0 +1,299 @@
+/*
+ * Copyright 2004 Christian Costa
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DXFILE_H
+#define __WINE_DXFILE_H
+
+#include <objbase.h>
+#include <winnt.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+typedef DWORD DXFILEFORMAT;
+
+#define DXFILEFORMAT_BINARY     0
+#define DXFILEFORMAT_TEXT       1
+#define DXFILEFORMAT_COMPRESSED 2
+
+typedef DWORD DXFILELOADOPTIONS;
+
+#define DXFILELOAD_FROMFILE     0x00L
+#define DXFILELOAD_FROMRESOURCE 0x01L
+#define DXFILELOAD_FROMMEMORY   0x02L
+#define DXFILELOAD_FROMSTREAM   0x04L
+#define DXFILELOAD_FROMURL      0x08L
+
+typedef struct _DXFILELOADRESOURCE {
+    HMODULE hModule;
+    LPCSTR /*LPCTSTR*/ lpName;
+    LPCSTR /*LPCTSTR*/ lpType;
+} DXFILELOADRESOURCE, *LPDXFILELOADRESOURCE;
+
+typedef struct _DXFILELOADMEMORY {
+    LPVOID lpMemory;
+    DWORD dSize;
+} DXFILELOADMEMORY, *LPDXFILELOADMEMORY;
+
+typedef struct IDirectXFile *LPDIRECTXFILE;
+typedef struct IDirectXFileEnumObject *LPDIRECTXFILEENUMOBJECT;
+typedef struct IDirectXFileSaveObject *LPDIRECTXFILESAVEOBJECT;
+typedef struct IDirectXFileObject *LPDIRECTXFILEOBJECT;
+typedef struct IDirectXFileData *LPDIRECTXFILEDATA;
+typedef struct IDirectXFileDataReference *LPDIRECTXFILEDATAREFERENCE;
+typedef struct IDirectXFileBinary *LPDIRECTXFILEBINARY;
+
+STDAPI DirectXFileCreate(LPDIRECTXFILE *lplpDirectXFile);
+
+#define INTERFACE IDirectXFile
+DECLARE_INTERFACE_(IDirectXFile,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectXFile methods ***/
+    STDMETHOD(CreateEnumObject) (THIS_ LPVOID, DXFILELOADOPTIONS, LPDIRECTXFILEENUMOBJECT *) PURE;
+    STDMETHOD(CreateSaveObject) (THIS_ LPCSTR, DXFILEFORMAT, LPDIRECTXFILESAVEOBJECT *) PURE;
+    STDMETHOD(RegisterTemplates) (THIS_ LPVOID, DWORD) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+    /*** IUnknown methods ***/
+#define IDirectXFile_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectXFile_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectXFile_Release(p)            (p)->lpVtbl->Release(p)
+    /*** IDirectXFile methods ***/
+#define IDirectXFile_CreateEnumObject(p,a,b,c) (p)->lpVtbl->CreateEnumObject(p,a,b,c)
+#define IDirectXFile_CreateSaveObject(p,a,b,c) (p)->lpVtbl->CreateSaveObject(p,a,b,c)
+#define IDirectXFile_RegisterTemplates(p,a,b)  (p)->lpVtbl->RegisterTemplates(p,a,b)
+#endif
+
+#define INTERFACE IDirectXFileEnumObject
+DECLARE_INTERFACE_(IDirectXFileEnumObject,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectXFileEnumObject methods ***/
+    STDMETHOD(GetNextDataObject)    (THIS_ LPDIRECTXFILEDATA *) PURE;
+    STDMETHOD(GetDataObjectById)    (THIS_ REFGUID, LPDIRECTXFILEDATA *) PURE;
+    STDMETHOD(GetDataObjectByName)  (THIS_ LPCSTR, LPDIRECTXFILEDATA *) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+    /*** IUnknown methods ***/
+#define IDirectXFileEnumObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectXFileEnumObject_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectXFileEnumObject_Release(p)            (p)->lpVtbl->Release(p)
+    /*** IDirectXFileEnumObject methods ***/
+#define IDirectXFileEnumObject_GetNextDataObject(p,a)     (p)->lpVtbl->GetNextDataObject(p,a)
+#define IDirectXFileEnumObject_GetDataObjectById(p,a,b)   (p)->lpVtbl->GetDataObjectById(p,a,b)
+#define IDirectXFileEnumObject_GetDataObjectByName(p,a,b) (p)->lpVtbl->GetDataObjectByName(p,a,b)
+#endif
+
+#define INTERFACE IDirectXFileSaveObject
+DECLARE_INTERFACE_(IDirectXFileSaveObject,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectXFileSaveObject methods ***/
+    STDMETHOD(SaveTemplates) (THIS_ DWORD, const GUID **) PURE;
+    STDMETHOD(CreateDataObject) (THIS_ REFGUID, LPCSTR, const GUID *, DWORD, LPVOID, LPDIRECTXFILEDATA *) PURE;
+    STDMETHOD(SaveData) (THIS_ LPDIRECTXFILEDATA) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+    /*** IUnknown methods ***/
+#define IDirectXFileSaveObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectXFileSaveObject_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectXFileSaveObject_Release(p)            (p)->lpVtbl->Release(p)
+    /*** IDirectXFileSaveObject methods ***/
+#define IDirectXFileSaveObject_SaveTemplates(p,a,b)            (p)->lpVtbl->SaveTemplates(p,a,b)
+#define IDirectXFileSaveObject_CreateDataObject(p,a,b,c,d,e,f) (p)->lpVtbl->CreateDataObject(p,a,b,c,d,e,f)
+#define IDirectXFileSaveObject_SaveData(p,a)                   (p)->lpVtbl->SaveData(p,a)
+#endif
+
+#define IUNKNOWN_METHODS(kind) \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) kind; \
+    STDMETHOD_(ULONG,AddRef)(THIS) kind; \
+    STDMETHOD_(ULONG,Release)(THIS) kind
+
+#define IDIRECTXFILEOBJECT_METHODS(kind) \
+    STDMETHOD(GetName) (THIS_ LPSTR, LPDWORD) kind; \
+    STDMETHOD(GetId) (THIS_ LPGUID) kind
+
+#define INTERFACE IDirectXFileObject
+DECLARE_INTERFACE_(IDirectXFileObject,IUnknown)
+{
+    IUNKNOWN_METHODS(PURE);
+    IDIRECTXFILEOBJECT_METHODS(PURE);
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+    /*** IUnknown methods ***/
+#define IDirectXFileObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectXFileObject_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectXFileObject_Release(p)            (p)->lpVtbl->Release(p)
+    /*** IDirectXFileObject methods ***/
+#define IDirectXFileObject_GetName(p,a,b) (p)->lpVtbl->GetName(p,a,b)
+#define IDirectXFileObject_GetId(p,a)     (p)->lpVtbl->GetId(p,a)
+#endif
+
+#define INTERFACE IDirectXFileData
+DECLARE_INTERFACE_(IDirectXFileData,IDirectXFileObject)
+{
+    IUNKNOWN_METHODS(PURE);
+    IDIRECTXFILEOBJECT_METHODS(PURE);
+    /*** IDirectXFileData methods ***/
+    STDMETHOD(GetData) (THIS_ LPCSTR, DWORD *, void **) PURE;
+    STDMETHOD(GetType) (THIS_ const GUID **) PURE;
+    STDMETHOD(GetNextObject) (THIS_ LPDIRECTXFILEOBJECT *) PURE;
+    STDMETHOD(AddDataObject) (THIS_ LPDIRECTXFILEDATA) PURE;
+    STDMETHOD(AddDataReference) (THIS_ LPCSTR, const GUID *) PURE;
+    STDMETHOD(AddBinaryObject) (THIS_ LPCSTR, const GUID *, LPCSTR, LPVOID, DWORD) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+    /*** IUnknown methods ***/
+#define IDirectXFileData_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectXFileData_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectXFileData_Release(p)            (p)->lpVtbl->Release(p)
+    /*** IDirectXFileObject methods ***/
+#define IDirectXFileData_GetName(p,a,b) (p)->lpVtbl->GetName(p,a,b)
+#define IDirectXFileData_GetId(p,a)     (p)->lpVtbl->GetId(p,a)
+    /*** IDirectXFileData methods ***/
+#define IDirectXFileData_GetData(p,a,b,c)             (p)->lpVtbl->GetData(p,a,b,c)
+#define IDirectXFileData_GetType(p,a)                 (p)->lpVtbl->GetType(p,a)
+#define IDirectXFileData_GetNextObject(p,a)           (p)->lpVtbl->GetNextObject(p,a)
+#define IDirectXFileData_AddDataObject(p,a)           (p)->lpVtbl->AddDataObject(p,a)
+#define IDirectXFileData_AddDataReference(p,a,b)      (p)->lpVtbl->AddDataReference(p,a,b)
+#define IDirectXFileData_AddBinaryObject(p,a,b,c,d,e) (p)->lpVtbl->AddBinaryObject(p,a,b,c,d,e)
+#endif
+
+#define INTERFACE IDirectXFileDataReference
+DECLARE_INTERFACE_(IDirectXFileDataReference,IDirectXFileObject)
+{
+    IUNKNOWN_METHODS(PURE);
+    IDIRECTXFILEOBJECT_METHODS(PURE);
+    /*** IDirectXFileDataReference methods ***/
+    STDMETHOD(Resolve) (THIS_ LPDIRECTXFILEDATA *) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+    /*** IUnknown methods ***/
+#define IDirectXFileDataReference_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectXFileDataReference_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectXFileDataReference_Release(p)            (p)->lpVtbl->Release(p)
+    /*** IDirectXFileObject methods ***/
+#define IDirectXFileDataReference_GetName(p,a,b) (p)->lpVtbl->GetName(p,a,b)
+#define IDirectXFileDataReference_GetId(p,a)     (p)->lpVtbl->GetId(p,a)
+    /*** IDirectXFileDataReference methods ***/
+#define IDirectXFileDataReference_Resolve(p,a) (p)->lpVtbl->Resolve(p,a)
+#endif
+
+#define INTERFACE IDirectXFileBinary
+DECLARE_INTERFACE_(IDirectXFileBinary,IDirectXFileObject)
+{
+    IUNKNOWN_METHODS(PURE);
+    IDIRECTXFILEOBJECT_METHODS(PURE);
+    /*** IDirectXFileBinary methods ***/
+    STDMETHOD(GetSize)      (THIS_ DWORD *) PURE;
+    STDMETHOD(GetMimeType)  (THIS_ LPCSTR *) PURE;
+    STDMETHOD(Read)         (THIS_ LPVOID, DWORD, LPDWORD) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+    /*** IUnknown methods ***/
+#define IDirectXFileBinary_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectXFileBinary_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectXFileBinary_Release(p)            (p)->lpVtbl->Release(p)
+    /*** IDirectXFileObject methods ***/
+#define IDirectXFileBinary_GetName(p,a,b) (p)->lpVtbl->GetName(p,a,b)
+#define IDirectXFileBinary_GetId(p,a)     (p)->lpVtbl->GetId(p,a)
+    /*** IDirectXFileBinary methods ***/
+#define IDirectXFileBinary_GetSize(p,a)     (p)->lpVtbl->GetSize(p,a)
+#define IDirectXFileBinary_GetMimeType(p,a) (p)->lpVtbl->GetMimeType(p,a)
+#define IDirectXFileBinary_Read(p,a,b,c)    (p)->lpVtbl->Read(p,a,b,c)
+#endif
+
+/* DirectXFile Object CLSID */
+DEFINE_GUID(CLSID_CDirectXFile,             0x4516ec43, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
+
+/* DirectX File Interface GUIDs */
+DEFINE_GUID(IID_IDirectXFile,               0x3d82ab40, 0x62da, 0x11cf, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
+DEFINE_GUID(IID_IDirectXFileEnumObject,     0x3d82ab41, 0x62da, 0x11cf, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
+DEFINE_GUID(IID_IDirectXFileSaveObject,     0x3d82ab42, 0x62da, 0x11cf, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
+DEFINE_GUID(IID_IDirectXFileObject,         0x3d82ab43, 0x62da, 0x11cf, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
+DEFINE_GUID(IID_IDirectXFileData,           0x3d82ab44, 0x62da, 0x11cf, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
+DEFINE_GUID(IID_IDirectXFileDataReference,  0x3d82ab45, 0x62da, 0x11cf, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
+DEFINE_GUID(IID_IDirectXFileBinary,         0x3d82ab46, 0x62da, 0x11cf, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
+
+/* DirectX File Header template's GUID */
+DEFINE_GUID(TID_DXFILEHeader,               0x3d82ab43, 0x62da, 0x11cf, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
+
+/* DirectX File errors */
+#define _FACDD  0x876
+#define MAKE_DDHRESULT( code )  MAKE_HRESULT( 1, _FACDD, code )
+
+#define DXFILE_OK   0
+
+#define DXFILEERR_BADOBJECT                 MAKE_DDHRESULT(850)
+#define DXFILEERR_BADVALUE                  MAKE_DDHRESULT(851)
+#define DXFILEERR_BADTYPE                   MAKE_DDHRESULT(852)
+#define DXFILEERR_BADSTREAMHANDLE           MAKE_DDHRESULT(853)
+#define DXFILEERR_BADALLOC                  MAKE_DDHRESULT(854)
+#define DXFILEERR_NOTFOUND                  MAKE_DDHRESULT(855)
+#define DXFILEERR_NOTDONEYET                MAKE_DDHRESULT(856)
+#define DXFILEERR_FILENOTFOUND              MAKE_DDHRESULT(857)
+#define DXFILEERR_RESOURCENOTFOUND          MAKE_DDHRESULT(858)
+#define DXFILEERR_URLNOTFOUND               MAKE_DDHRESULT(859)
+#define DXFILEERR_BADRESOURCE               MAKE_DDHRESULT(860)
+#define DXFILEERR_BADFILETYPE               MAKE_DDHRESULT(861)
+#define DXFILEERR_BADFILEVERSION            MAKE_DDHRESULT(862)
+#define DXFILEERR_BADFILEFLOATSIZE          MAKE_DDHRESULT(863)
+#define DXFILEERR_BADFILECOMPRESSIONTYPE    MAKE_DDHRESULT(864)
+#define DXFILEERR_BADFILE                   MAKE_DDHRESULT(865)
+#define DXFILEERR_PARSEERROR                MAKE_DDHRESULT(866)
+#define DXFILEERR_NOTEMPLATE                MAKE_DDHRESULT(867)
+#define DXFILEERR_BADARRAYSIZE              MAKE_DDHRESULT(868)
+#define DXFILEERR_BADDATAREFERENCE          MAKE_DDHRESULT(869)
+#define DXFILEERR_INTERNALERROR             MAKE_DDHRESULT(870)
+#define DXFILEERR_NOMOREOBJECTS             MAKE_DDHRESULT(871)
+#define DXFILEERR_BADINTRINSICS             MAKE_DDHRESULT(872)
+#define DXFILEERR_NOMORESTREAMHANDLES       MAKE_DDHRESULT(873)
+#define DXFILEERR_NOMOREDATA                MAKE_DDHRESULT(874)
+#define DXFILEERR_BADCACHEFILE              MAKE_DDHRESULT(875)
+#define DXFILEERR_NOINTERNET                MAKE_DDHRESULT(876)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif /* __WINE_DXFILE_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dxgi.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dxgi.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dxgi.idl	(revision 16410)
@@ -0,0 +1,362 @@
+/*
+ * Copyright 2007 Andras Kovacs
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "dxgitype.idl";
+
+const UINT _FACDXGI = 0x87a;
+
+cpp_quote("#define MAKE_DXGI_STATUS(x)                         MAKE_HRESULT(0, _FACDXGI, x)")
+cpp_quote("#define DXGI_STATUS_OCCLUDED                        MAKE_DXGI_STATUS(1)")
+cpp_quote("#define DXGI_STATUS_CLIPPED                         MAKE_DXGI_STATUS(2)")
+cpp_quote("#define DXGI_STATUS_NO_REDIRECTION                  MAKE_DXGI_STATUS(4)")
+cpp_quote("#define DXGI_STATUS_NO_DESKTOP_ACCESS               MAKE_DXGI_STATUS(5)")
+cpp_quote("#define DXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE    MAKE_DXGI_STATUS(6)")
+cpp_quote("#define DXGI_STATUS_MODE_CHANGED                    MAKE_DXGI_STATUS(7)")
+cpp_quote("#define DXGI_STATUS_MODE_CHANGE_IN_PROGRESS         MAKE_DXGI_STATUS(8)")
+
+cpp_quote("#define MAKE_DXGI_HRESULT(x)                        MAKE_HRESULT(1, _FACDXGI, x)")
+cpp_quote("#define DXGI_ERROR_INVALID_CALL                     MAKE_DXGI_HRESULT(1)")
+cpp_quote("#define DXGI_ERROR_NOT_FOUND                        MAKE_DXGI_HRESULT(2)")
+cpp_quote("#define DXGI_ERROR_MORE_DATA                        MAKE_DXGI_HRESULT(3)")
+cpp_quote("#define DXGI_ERROR_UNSUPPORTED                      MAKE_DXGI_HRESULT(4)")
+cpp_quote("#define DXGI_ERROR_DEVICE_REMOVED                   MAKE_DXGI_HRESULT(5)")
+cpp_quote("#define DXGI_ERROR_DEVICE_HUNG                      MAKE_DXGI_HRESULT(6)")
+cpp_quote("#define DXGI_ERROR_DEVICE_RESET                     MAKE_DXGI_HRESULT(7)")
+cpp_quote("#define DXGI_ERROR_WAS_STILL_DRAWING                MAKE_DXGI_HRESULT(10)")
+cpp_quote("#define DXGI_ERROR_FRAME_STATISTICS_DISJOINT        MAKE_DXGI_HRESULT(11)")
+cpp_quote("#define DXGI_ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE     MAKE_DXGI_HRESULT(12)")
+cpp_quote("#define DXGI_ERROR_DRIVER_INTERNAL_ERROR            MAKE_DXGI_HRESULT(32)")
+cpp_quote("#define DXGI_ERROR_NONEXCLUSIVE                     MAKE_DXGI_HRESULT(33)")
+cpp_quote("#define DXGI_ERROR_NOT_CURRENTLY_AVAILABLE          MAKE_DXGI_HRESULT(34)")
+
+cpp_quote("#if 0")
+typedef HANDLE HMONITOR;
+typedef struct _LUID {
+    DWORD LowPart;
+    LONG HighPart;
+} LUID, *PLUID;
+cpp_quote("#endif")
+
+typedef UINT DXGI_USAGE;
+const DXGI_USAGE DXGI_USAGE_SHADER_INPUT            = 0x10L;
+const DXGI_USAGE DXGI_USAGE_RENDER_TARGET_OUTPUT    = 0x20L;
+const DXGI_USAGE DXGI_USAGE_BACK_BUFFER             = 0x40L;
+const DXGI_USAGE DXGI_USAGE_SHARED                  = 0x80L;
+const DXGI_USAGE DXGI_USAGE_READ_ONLY               = 0x100L;
+
+typedef enum DXGI_SWAP_EFFECT {
+    DXGI_SWAP_EFFECT_DISCARD    = 0,
+    DXGI_SWAP_EFFECT_SEQUENTIAL = 1,
+} DXGI_SWAP_EFFECT;
+
+typedef enum DXGI_RESIDENCY {
+    DXGI_RESIDENCY_FULLY_RESIDENT               = 1,
+    DXGI_RESIDENCY_RESIDENT_IN_SHARED_MEMORY    = 2,
+    DXGI_RESIDENCY_EVICTED_TO_DISK              = 3,
+} DXGI_RESIDENCY;
+
+typedef struct DXGI_SURFACE_DESC {
+    UINT Width;
+    UINT Height;
+    DXGI_FORMAT Format;
+    DXGI_SAMPLE_DESC SampleDesc;
+} DXGI_SURFACE_DESC;
+
+typedef struct DXGI_MAPPED_RECT {
+    INT Pitch;
+    BYTE *pBits;
+} DXGI_MAPPED_RECT;
+
+typedef struct DXGI_OUTPUT_DESC {
+    WCHAR DeviceName[32];
+    RECT DesktopCoordinates;
+    BOOL AttachedToDesktop;
+    DXGI_MODE_ROTATION Rotation;
+    HMONITOR Monitor;
+} DXGI_OUTPUT_DESC;
+
+typedef struct DXGI_FRAME_STATISTICS {
+    UINT PresentCount;
+    UINT PresentRefreshCount;
+    UINT SyncRefreshCount;
+    LARGE_INTEGER SyncQPCTime;
+    LARGE_INTEGER SyncGPUTime;
+} DXGI_FRAME_STATISTICS;
+
+typedef struct DXGI_ADAPTER_DESC {
+    WCHAR Description[128];
+    UINT VendorId;
+    UINT DeviceId;
+    UINT SubSysId;
+    UINT Revision;
+    SIZE_T DedicatedVideoMemory;
+    SIZE_T DedicatedSystemMemory;
+    SIZE_T SharedSystemMemory;
+    LUID AdapterLuid;
+} DXGI_ADAPTER_DESC;
+
+typedef struct DXGI_SWAP_CHAIN_DESC {
+    DXGI_MODE_DESC BufferDesc;
+    DXGI_SAMPLE_DESC SampleDesc;
+    DXGI_USAGE BufferUsage;
+    UINT BufferCount;
+    HWND OutputWindow;
+    BOOL Windowed;
+    DXGI_SWAP_EFFECT SwapEffect;
+    UINT Flags;
+} DXGI_SWAP_CHAIN_DESC;
+
+typedef struct DXGI_SHARED_RESOURCE {
+    HANDLE Handle;
+} DXGI_SHARED_RESOURCE;
+
+[
+    object,
+    local,
+    uuid(aec22fb8-76f3-4639-9be0-28eb43a67a2e)
+]
+interface IDXGIObject : IUnknown
+{
+    HRESULT SetPrivateData(
+        [in] REFGUID guid,
+        [in] UINT data_size,
+        [in] const void *data
+    );
+    HRESULT SetPrivateDataInterface(
+        [in] REFGUID guid,
+        [in] const IUnknown *object
+    );
+    HRESULT GetPrivateData(
+        [in] REFGUID guid,
+        [in, out] UINT *data_size,
+        [out] void *data
+    );
+    HRESULT GetParent(
+        [in] REFIID riid,
+        [out] void **parent
+    );
+}
+
+[
+    object,
+    local,
+    uuid(3d3e0379-f9de-4d58-bb6c-18d62992f1a6)
+]
+interface IDXGIDeviceSubObject : IDXGIObject
+{
+    HRESULT GetDevice(
+        [in] REFIID riid,
+        [out] void **device
+    );
+}
+
+[
+    object,
+    local,
+    uuid(cafcb56c-6ac3-4889-bf47-9e23bbd260ec)
+]
+interface IDXGISurface : IDXGIDeviceSubObject
+{
+    HRESULT GetDesc(
+        [out] DXGI_SURFACE_DESC *desc
+    );
+    HRESULT Map(
+        [out] DXGI_MAPPED_RECT *mapped_rect,
+        [in] UINT flags
+    );
+    HRESULT Unmap(
+    );
+}
+
+[
+    object,
+    local,
+    uuid(ae02eedb-c735-4690-8d52-5a8dc20213aa)
+]
+interface IDXGIOutput : IDXGIObject
+{
+    HRESULT GetDesc(
+        [out] DXGI_OUTPUT_DESC *desc
+    );
+    HRESULT GetDisplayModeList(
+        [in] DXGI_FORMAT format,
+        [in] UINT flags,
+        [in, out] UINT *mode_count,
+        [out] DXGI_MODE_DESC *desc
+    );
+    HRESULT FindClosestMatchingMode(
+        [in] const DXGI_MODE_DESC *mode,
+        [out] DXGI_MODE_DESC *closest_match,
+        [in] IUnknown *device
+    );
+    HRESULT WaitForVBlank(
+    );
+    HRESULT TakeOwnership(
+        [in] IUnknown *device,
+        [in] BOOL exclusive
+    );
+    void ReleaseOwnership(
+    );
+    HRESULT GetGammaControlCapabilities(
+        [out] DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps
+    );
+    HRESULT SetGammaControl(
+        [in] const DXGI_GAMMA_CONTROL *gamma_control
+    );
+    HRESULT GetGammaControl(
+        [out] DXGI_GAMMA_CONTROL *gamma_control
+    );
+    HRESULT SetDisplaySurface(
+        [in] IDXGISurface *surface
+    );
+    HRESULT GetDisplaySurfaceData(
+        [in] IDXGISurface *surface
+    );
+    HRESULT GetFrameStatistics(
+        [out] DXGI_FRAME_STATISTICS *stats
+    );
+}
+
+[
+    object,
+    local,
+    uuid(2411e7e1-12ac-4ccf-bd14-9798e8534dc0)
+]
+interface IDXGIAdapter : IDXGIObject
+{
+    HRESULT EnumOutputs(
+        [in] UINT output_idx,
+        [in, out] IDXGIOutput **output
+    );
+    HRESULT GetDesc(
+        [out] DXGI_ADAPTER_DESC *desc
+    );
+    HRESULT CheckInterfaceSupport(
+        [in] REFGUID guid,
+        [out] LARGE_INTEGER *umd_version
+    );
+}
+
+[
+    object,
+    local,
+    uuid(310d36a0-d2e7-4c0a-aa04-6a9d23b8886a)
+]
+interface IDXGISwapChain : IDXGIDeviceSubObject
+{
+    HRESULT Present(
+        [in] UINT sync_interval,
+        [in] UINT flags
+    );
+    HRESULT GetBuffer(
+        [in] UINT buffer_idx,
+        [in] REFIID riid,
+        [in, out] void **surface
+    );
+    HRESULT SetFullscreenState(
+        [in] BOOL fullscreen,
+        [in] IDXGIOutput *target
+    );
+    HRESULT GetFullscreenState(
+        [out] BOOL *fullscreen,
+        [out] IDXGIOutput **target
+    );
+    HRESULT GetDesc(
+        [out] DXGI_SWAP_CHAIN_DESC *desc
+    );
+    HRESULT ResizeBuffers(
+        [in] UINT buffer_count,
+        [in] UINT width,
+        [in] UINT height,
+        [in] DXGI_FORMAT format,
+        [in] UINT flags
+    );
+    HRESULT ResizeTarget(
+        [in] const DXGI_MODE_DESC *target_mode_desc
+    );
+    HRESULT GetContainingOutput(
+        [out] IDXGIOutput **output
+    );
+    HRESULT GetFrameStatistics(
+        [out] DXGI_FRAME_STATISTICS *stats
+    );
+    HRESULT GetLastPresentCount(
+        [out] UINT *last_present_count
+    );
+}
+
+[
+    object,
+    local,
+    uuid(7b7166ec-21c7-44ae-b21a-c9ae321ae369)
+]
+interface IDXGIFactory : IDXGIObject
+{
+    HRESULT EnumAdapters(
+        [in] UINT adapter_idx,
+        [out] IDXGIAdapter **adapter
+    );
+    HRESULT MakeWindowAssociation(
+        [in] HWND window,
+        [in] UINT flags
+    );
+    HRESULT GetWindowAssociation(
+        [in] HWND *window
+    );
+    HRESULT CreateSwapChain(
+        [in] IUnknown *device,
+        [in] DXGI_SWAP_CHAIN_DESC *desc,
+        [out] IDXGISwapChain **swapchain
+    );
+    HRESULT CreateSoftwareAdapter(
+        [in] HMODULE swrast,
+        [out] IDXGIAdapter **adapter
+    );
+}
+
+[local] HRESULT CreateDXGIFactory(REFIID riid, void **factory);
+
+[
+    object,
+    local,
+    uuid(54ec77fa-1377-44e6-8c32-88fd5f44c84c)
+]
+interface IDXGIDevice : IDXGIObject
+{
+    HRESULT GetAdapter(
+        [out] IDXGIAdapter **adapter
+    );
+    HRESULT CreateSurface(
+        [in] const DXGI_SURFACE_DESC *desc,
+        [in] UINT surface_count,
+        [in] DXGI_USAGE usage,
+        [in] const DXGI_SHARED_RESOURCE *shared_resource,
+        [out] IDXGISurface **surface
+    );
+    HRESULT QueryResourceResidency(
+        [in] IUnknown *const *resources,
+        [out] DXGI_RESIDENCY *residency,
+        [in] UINT resource_count
+    );
+    HRESULT SetGPUThreadPriority(
+        [in] INT priority
+    );
+    HRESULT GetGPUThreadPriority(
+        [out] INT *priority
+    );
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dxgitype.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dxgitype.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dxgitype.idl	(revision 16410)
@@ -0,0 +1,172 @@
+/*
+ * Copyright 2007 Andras Kovacs
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+import "oaidl.idl";
+import "ocidl.idl";
+
+typedef struct DXGI_SAMPLE_DESC {
+    UINT Count;
+    UINT Quality;
+} DXGI_SAMPLE_DESC;
+
+typedef enum DXGI_FORMAT {
+    DXGI_FORMAT_UNKNOWN                 = 0,
+    DXGI_FORMAT_R32G32B32A32_TYPELESS   = 1,
+    DXGI_FORMAT_R32G32B32A32_FLOAT      = 2,
+    DXGI_FORMAT_R32G32B32A32_UINT       = 3,
+    DXGI_FORMAT_R32G32B32A32_SINT       = 4,
+    DXGI_FORMAT_R32G32B32_TYPELESS      = 5,
+    DXGI_FORMAT_R32G32B32_FLOAT         = 6,
+    DXGI_FORMAT_R32G32B32_UINT          = 7,
+    DXGI_FORMAT_R32G32B32_SINT          = 8,
+    DXGI_FORMAT_R16G16B16A16_TYPELESS   = 9,
+    DXGI_FORMAT_R16G16B16A16_FLOAT      = 10,
+    DXGI_FORMAT_R16G16B16A16_UNORM      = 11,
+    DXGI_FORMAT_R16G16B16A16_UINT       = 12,
+    DXGI_FORMAT_R16G16B16A16_SNORM      = 13,
+    DXGI_FORMAT_R16G16B16A16_SINT       = 14,
+    DXGI_FORMAT_R32G32_TYPELESS         = 15,
+    DXGI_FORMAT_R32G32_FLOAT            = 16,
+    DXGI_FORMAT_R32G32_UINT             = 17,
+    DXGI_FORMAT_R32G32_SINT             = 18,
+    DXGI_FORMAT_R32G8X24_TYPELESS       = 19,
+    DXGI_FORMAT_D32_FLOAT_S8X24_UINT    = 20,
+    DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS= 21,
+    DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = 22,
+    DXGI_FORMAT_R10G10B10A2_TYPELESS    = 23,
+    DXGI_FORMAT_R10G10B10A2_UNORM       = 24,
+    DXGI_FORMAT_R10G10B10A2_UINT        = 25,
+    DXGI_FORMAT_R11G11B10_FLOAT         = 26,
+    DXGI_FORMAT_R8G8B8A8_TYPELESS       = 27,
+    DXGI_FORMAT_R8G8B8A8_UNORM          = 28,
+    DXGI_FORMAT_R8G8B8A8_UNORM_SRGB     = 29,
+    DXGI_FORMAT_R8G8B8A8_UINT           = 30,
+    DXGI_FORMAT_R8G8B8A8_SNORM          = 31,
+    DXGI_FORMAT_R8G8B8A8_SINT           = 32,
+    DXGI_FORMAT_R16G16_TYPELESS         = 33,
+    DXGI_FORMAT_R16G16_FLOAT            = 34,
+    DXGI_FORMAT_R16G16_UNORM            = 35,
+    DXGI_FORMAT_R16G16_UINT             = 36,
+    DXGI_FORMAT_R16G16_SNORM            = 37,
+    DXGI_FORMAT_R16G16_SINT             = 38,
+    DXGI_FORMAT_R32_TYPELESS            = 39,
+    DXGI_FORMAT_D32_FLOAT               = 40,
+    DXGI_FORMAT_R32_FLOAT               = 41,
+    DXGI_FORMAT_R32_UINT                = 42,
+    DXGI_FORMAT_R32_SINT                = 43,
+    DXGI_FORMAT_R24G8_TYPELESS          = 44,
+    DXGI_FORMAT_D24_UNORM_S8_UINT       = 45,
+    DXGI_FORMAT_R24_UNORM_X8_TYPELESS   = 46,
+    DXGI_FORMAT_X24_TYPELESS_G8_UINT    = 47,
+    DXGI_FORMAT_R8G8_TYPELESS           = 48,
+    DXGI_FORMAT_R8G8_UNORM              = 49,
+    DXGI_FORMAT_R8G8_UINT               = 50,
+    DXGI_FORMAT_R8G8_SNORM              = 51,
+    DXGI_FORMAT_R8G8_SINT               = 52,
+    DXGI_FORMAT_R16_TYPELESS            = 53,
+    DXGI_FORMAT_R16_FLOAT               = 54,
+    DXGI_FORMAT_D16_UNORM               = 55,
+    DXGI_FORMAT_R16_UNORM               = 56,
+    DXGI_FORMAT_R16_UINT                = 57,
+    DXGI_FORMAT_R16_SNORM               = 58,
+    DXGI_FORMAT_R16_SINT                = 59,
+    DXGI_FORMAT_R8_TYPELESS             = 60,
+    DXGI_FORMAT_R8_UNORM                = 61,
+    DXGI_FORMAT_R8_UINT                 = 62,
+    DXGI_FORMAT_R8_SNORM                = 63,
+    DXGI_FORMAT_R8_SINT                 = 64,
+    DXGI_FORMAT_A8_UNORM                = 65,
+    DXGI_FORMAT_R1_UNORM                = 66,
+    DXGI_FORMAT_R9G9B9E5_SHAREDEXP      = 67,
+    DXGI_FORMAT_R8G8_B8G8_UNORM         = 68,
+    DXGI_FORMAT_G8R8_G8B8_UNORM         = 69,
+    DXGI_FORMAT_BC1_TYPELESS            = 70,
+    DXGI_FORMAT_BC1_UNORM               = 71,
+    DXGI_FORMAT_BC1_UNORM_SRGB          = 72,
+    DXGI_FORMAT_BC2_TYPELESS            = 73,
+    DXGI_FORMAT_BC2_UNORM               = 74,
+    DXGI_FORMAT_BC2_UNORM_SRGB          = 75,
+    DXGI_FORMAT_BC3_TYPELESS            = 76,
+    DXGI_FORMAT_BC3_UNORM               = 77,
+    DXGI_FORMAT_BC3_UNORM_SRGB          = 78,
+    DXGI_FORMAT_BC4_TYPELESS            = 79,
+    DXGI_FORMAT_BC4_UNORM               = 80,
+    DXGI_FORMAT_BC4_SNORM               = 81,
+    DXGI_FORMAT_BC5_TYPELESS            = 82,
+    DXGI_FORMAT_BC5_UNORM               = 83,
+    DXGI_FORMAT_BC5_SNORM               = 84,
+    DXGI_FORMAT_B5G6R5_UNORM            = 85,
+    DXGI_FORMAT_B5G5R5A1_UNORM          = 86,
+    DXGI_FORMAT_B8G8R8A8_UNORM          = 87,
+    DXGI_FORMAT_B8G8R8X8_UNORM          = 88,
+    DXGI_FORMAT_FORCE_UINT              = 0xffffffff
+} DXGI_FORMAT;
+
+typedef enum DXGI_MODE_ROTATION {
+    DXGI_MODE_ROTATION_UNSPECIFIED  = 0,
+    DXGI_MODE_ROTATION_IDENTITY     = 1,
+    DXGI_MODE_ROTATION_ROTATE90     = 2,
+    DXGI_MODE_ROTATION_ROTATE180    = 3,
+    DXGI_MODE_ROTATION_ROTATE270    = 4,
+} DXGI_MODE_ROTATION;
+
+typedef enum DXGI_MODE_SCANLINE_ORDER {
+    DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED        = 0,
+    DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE        = 1,
+    DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST  = 2,
+    DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST  = 3,
+} DXGI_MODE_SCANLINE_ORDER;
+
+typedef enum DXGI_MODE_SCALING {
+    DXGI_MODE_SCALING_UNSPECIFIED   = 0,
+    DXGI_MODE_SCALING_CENTERED      = 1,
+    DXGI_MODE_SCALING_STRETCHED     = 2,
+} DXGI_MODE_SCALING;
+
+typedef struct DXGI_RATIONAL {
+    UINT Numerator;
+    UINT Denominator;
+} DXGI_RATIONAL;
+
+typedef struct DXGI_MODE_DESC {
+    UINT Width;
+    UINT Height;
+    DXGI_RATIONAL RefreshRate;
+    DXGI_FORMAT Format;
+    DXGI_MODE_SCANLINE_ORDER ScanlineOrdering;
+    DXGI_MODE_SCALING Scaling;
+} DXGI_MODE_DESC;
+
+typedef struct DXGI_GAMMA_CONTROL_CAPABILITIES {
+    BOOL ScaleAndOffsetSupported;
+    float MaxConvertedValue;
+    float MinConvertedValue;
+    UINT NumGammaControlPoints;
+    float ControlPointPositions[1025];
+} DXGI_GAMMA_CONTROL_CAPABILITIES;
+
+typedef struct DXGI_RGB {
+    float Red;
+    float Green;
+    float Blue;
+} DXGI_RGB;
+
+typedef struct DXGI_GAMMA_CONTROL {
+    DXGI_RGB Scale;
+    DXGI_RGB Offset;
+    DXGI_RGB GammaCurve[1025];
+} DXGI_GAMMA_CONTROL;
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dyngraph.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dyngraph.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/dyngraph.idl	(revision 16410)
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2002 Robert Shearman
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+interface IPinConnection;
+interface IPinFlowControl;
+interface IGraphConfig;
+interface IGraphConfigCallback;
+
+[
+    local,
+    object,
+    uuid(4a9a62d3-27d4-403d-91e9-89f540e55534),
+    pointer_default(unique)
+]
+interface IPinConnection : IUnknown
+{
+    HRESULT DynamicQueryAccept([in] const AM_MEDIA_TYPE *pmt);
+
+    HRESULT NotifyEndOfStream([in] HANDLE hNotifyEvent);
+
+    HRESULT IsEndPin();
+
+    HRESULT DynamicDisconnect();
+}
+
+[
+    local,
+    object,
+    uuid(c56e9858-dbf3-4f6b-8119-384af2060deb),
+    pointer_default(unique)
+]
+interface IPinFlowControl : IUnknown
+{
+    HRESULT Block([in] DWORD dwBlockFlags, [in] HANDLE hEvent);
+}
+
+enum _AM_PIN_FLOW_CONTROL_BLOCK_FLAGS
+{
+    AM_PIN_FLOW_CONTROL_BLOCK = 0x00000001,
+};
+
+typedef enum _AM_GRAPH_CONFIG_RECONNECT_FLAGS
+{
+    AM_GRAPH_CONFIG_RECONNECT_DIRECTCONNECT = 0x00000001,
+    AM_GRAPH_CONFIG_RECONNECT_CACHE_REMOVED_FILTERS = 0x00000002,
+    AM_GRAPH_CONFIG_RECONNECT_USE_ONLY_CACHED_FILTERS = 0x00000004
+} AM_GRAPH_CONFIG_RECONNECT_FLAGS;
+
+enum _REM_FILTER_FLAGS
+{
+    REMFILTERF_LEAVECONNECTED = 0x00000001
+};
+
+typedef enum _AM_FILTER_FLAGS
+{
+     AM_FILTER_FLAGS_REMOVABLE = 0x00000001
+} AM_FILTER_FLAGS;
+
+[
+    local,
+    object,
+    uuid(03A1EB8E-32BF-4245-8502-114D08A9CB88),
+    pointer_default(unique)
+]
+interface IGraphConfig : IUnknown
+{
+    HRESULT Reconnect(
+        [in] IPin *pOutputPin,
+        [in] IPin *pInputPin,
+        [in] const AM_MEDIA_TYPE *pmtFirstConnection,
+        [in] IBaseFilter *pUsingFilter,
+        [in] HANDLE hAbortEvent,
+        [in] DWORD dwFlags);
+
+    HRESULT Reconfigure(
+        [in] IGraphConfigCallback *pCallback,
+        [in] PVOID pvContext,
+        [in] DWORD dwFlags,
+        [in] HANDLE hAbortEvent);
+
+    HRESULT AddFilterToCache([in] IBaseFilter *pFilter);
+
+    HRESULT EnumCacheFilter([out] IEnumFilters **pEnum);
+
+    HRESULT RemoveFilterFromCache([in]IBaseFilter *pFilter);
+
+    HRESULT GetStartTime([out] REFERENCE_TIME *prtStart);
+
+    HRESULT PushThroughData(
+        [in] IPin *pOutputPin,
+        [in] IPinConnection *pConnection,
+        [in] HANDLE hEventAbort);
+
+    HRESULT SetFilterFlags([in] IBaseFilter *pFilter, [in] DWORD dwFlags);
+
+    HRESULT GetFilterFlags([in] IBaseFilter *pFilter, [out] DWORD *pdwFlags);
+
+    HRESULT RemoveFilterEx([in] IBaseFilter *pFilter, DWORD Flags);
+}
+
+[
+    local,
+    object,
+    uuid(ade0fd60-d19d-11d2-abf6-00a0c905f375),
+    pointer_default(unique)
+]
+interface IGraphConfigCallback : IUnknown
+{
+    HRESULT Reconfigure(PVOID pvContext, DWORD dwFlags);
+}
+
+[
+    local,
+    object,
+    uuid(DCFBDCF6-0DC2-45f5-9AB2-7C330EA09C29),
+    pointer_default(unique)
+]
+interface IFilterChain : IUnknown
+{
+    HRESULT StartChain(
+        [in] IBaseFilter *pStartFilter,
+        [in] IBaseFilter *pEndFilter);
+
+    HRESULT PauseChain(
+        [in] IBaseFilter *pStartFilter,
+        [in] IBaseFilter *pEndFilter);
+
+    HRESULT StopChain(
+        [in] IBaseFilter *pStartFilter,
+        [in] IBaseFilter *pEndFilter);
+
+    HRESULT RemoveChain(
+        [in] IBaseFilter *pStartFilter,
+        [in] IBaseFilter *pEndFilter);
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/errorrep.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/errorrep.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/errorrep.h	(revision 16410)
@@ -0,0 +1,43 @@
+/*
+ * errorrep.h - error reporting APIs (implemented in faultrep.dll)
+ *
+ * Copyright 2007 Google (Mikolaj Zalewski)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_ERRORREP_H
+#define __WINE_ERRORREP_H
+
+typedef enum tagEFaultRepRetVal
+{
+    frrvOk,
+    frrvOkManifest,
+    frrvOkQueued,
+    frrvOkErr,
+    frrvErrNoDW,
+    frrvErrTimeout,
+    frrvLaunchDebugger,
+    frrvOkHeadless,
+    frrvErrAnotherInstance
+} EFaultRepRetVal;
+
+EFaultRepRetVal WINAPI ReportFault(LPEXCEPTION_POINTERS, DWORD);
+
+BOOL WINAPI AddERExcludedApplicationA(LPCSTR);
+BOOL WINAPI AddERExcludedApplicationW(LPCWSTR);
+#define     AddERExcludedApplication WINELIB_NAME_AW(AddERExcludedApplication)
+
+#endif  /* __WINE_ERORREP_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/errors.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/errors.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/errors.h	(revision 16410)
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2006 Hans Leidekker
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __ERRORS__
+#define __ERRORS__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define AMOVIEAPI
+
+#define VFW_FIRST_CODE      0x200
+#define MAX_ERROR_TEXT_LEN  160
+
+#include <vfwmsgs.h>
+
+typedef BOOL (WINAPI* AMGETERRORTEXTPROCA)(HRESULT,char*,DWORD);
+typedef BOOL (WINAPI* AMGETERRORTEXTPROCW)(HRESULT,WCHAR*,DWORD);
+DECL_WINELIB_TYPE_AW(AMGETERRORTEXTPROC)
+
+DWORD WINAPI AMGetErrorTextA(HRESULT,LPSTR,DWORD);
+DWORD WINAPI AMGetErrorTextW(HRESULT,LPWSTR,DWORD);
+#define AMGetErrorText WINELIB_NAME_AW(AMGetErrorText)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __ERRORS__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/evcode.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/evcode.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/evcode.h	(revision 16410)
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2004 Christian Costa
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_EVCODE_H
+#define __WINE_EVCODE_H
+
+#define EC_SYSTEMBASE                       0x00
+#define EC_USER                             0x8000
+
+#define EC_COMPLETE                         0x01
+#define EC_USERABORT                        0x02
+#define EC_ERRORABORT                       0x03
+#define EC_TIME                             0x04
+#define EC_REPAINT                          0x05
+#define EC_STREAM_ERROR_STOPPED             0x06
+#define EC_STREAM_ERROR_STILLPLAYING        0x07
+#define EC_ERROR_STILLPLAYING               0x08
+#define EC_PALETTE_CHANGED                  0x09
+#define EC_VIDEO_SIZE_CHANGED               0x0A
+#define EC_QUALITY_CHANGE                   0x0B
+#define EC_SHUTTING_DOWN                    0x0C
+#define EC_CLOCK_CHANGED                    0x0D
+#define EC_OPENING_FILE                     0x10
+#define EC_BUFFERING_DATA                   0x11
+#define EC_FULLSCREEN_LOST                  0x12
+#define EC_ACTIVATE                         0x13
+#define EC_NEED_RESTART                     0x14
+#define EC_WINDOW_DESTROYED                 0x15
+#define EC_DISPLAY_CHANGED                  0x16
+#define EC_STARVATION                       0x17
+#define EC_OLE_EVENT                        0x18
+#define EC_NOTIFY_WINDOW                    0x19
+#define EC_STREAM_CONTROL_STOPPED           0x1A
+#define EC_STREAM_CONTROL_STARTED           0x1B
+#define EC_END_OF_SEGMENT                   0x1C
+#define EC_SEGMENT_STARTED                  0x1D
+#define EC_LENGTH_CHANGED                   0x1E
+
+#endif /* __WINE_EVCODE_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/evntrace.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/evntrace.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/evntrace.h	(revision 16410)
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 2005 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _EVNTRACE_
+#define _EVNTRACE_
+
+#include <guiddef.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef ULONG64 TRACEHANDLE, *PTRACEHANDLE;
+
+struct _EVENT_TRACE_LOGFILEA;
+struct _EVENT_TRACE_LOGFILEW;
+
+typedef struct _EVENT_TRACE_LOGFILEA EVENT_TRACE_LOGFILEA, *PEVENT_TRACE_LOGFILEA;
+typedef struct _EVENT_TRACE_LOGFILEW EVENT_TRACE_LOGFILEW, *PEVENT_TRACE_LOGFILEW;
+
+typedef ULONG (WINAPI * PEVENT_TRACE_BUFFER_CALLBACKA)( PEVENT_TRACE_LOGFILEA );
+typedef ULONG (WINAPI * PEVENT_TRACE_BUFFER_CALLBACKW)( PEVENT_TRACE_LOGFILEW );
+
+typedef ULONG (WINAPI * WMIDPREQUEST)( WMIDPREQUESTCODE, PVOID, ULONG*, PVOID );
+
+typedef struct _TRACE_GUID_REGISTRATION
+{
+    LPCGUID Guid;
+    HANDLE RegHandle;
+} TRACE_GUID_REGISTRATION, *PTRACE_GUID_REGISTRATION;
+
+typedef struct _EVENT_TRACE_HEADER
+{
+    USHORT Size;
+    union
+    {
+        USHORT FieldTypeFlags;
+        struct
+        {
+            UCHAR HeaderType;
+            UCHAR MarkerFlags;
+        } DUMMYSTRUCTNAME;
+    } DUMMYUNIONNAME;
+    union
+    {
+        ULONG Version;
+        struct
+        {
+            UCHAR Type;
+            UCHAR Level;
+            USHORT Version;
+        } Class;
+    } DUMMYUNIONNAME1;
+    ULONG ThreadId;
+    ULONG ProcessId;
+    LARGE_INTEGER TimeStamp;
+    union
+    {
+        GUID Guid;
+        ULONGLONG GuidPtr;
+    } DUMMYUNIONNAME2;
+    union
+    {
+        struct
+        {
+            ULONG ClientContext;
+            ULONG Flags;
+        } DUMMYSTRUCTNAME1;
+        struct
+        {
+            ULONG KernelTime;
+            ULONG UserTime;
+        } DUMMYSTRUCTNAME2;
+    } DUMMYUNIONNAME3;
+} EVENT_TRACE_HEADER, *PEVENT_TRACE_HEADER;
+
+typedef struct _EVENT_TRACE
+{
+    EVENT_TRACE_HEADER Header;
+    ULONG InstanceId;
+    ULONG ParentInstanceId;
+    GUID ParentGuid;
+    PVOID MofData;
+    ULONG MofLength;
+    ULONG ClientContext;
+} EVENT_TRACE, *PEVENT_TRACE;
+
+typedef VOID (WINAPI * PEVENT_CALLBACK)( PEVENT_TRACE );
+
+typedef struct _TRACE_LOGFILE_HEADER
+{
+    ULONG BufferSize;
+    union
+    {
+        ULONG Version;
+        struct 
+        {
+            UCHAR MajorVersion;
+            UCHAR MinorVersion;
+            UCHAR SubVersion;
+            UCHAR SubMinorVersion;
+        } VersionDetail;
+    } DUMMYUNIONNAME;
+    ULONG ProviderVersion;
+    ULONG NumberOfProcessors;
+    LARGE_INTEGER EndTime;
+    ULONG TimerResolution;
+    ULONG MaximumFileSize;
+    ULONG LogFileMode;
+    ULONG BuffersWritten;
+    union
+    {
+        GUID LogInstanceGuid;
+        struct
+        {
+            ULONG StartBuffers;
+            ULONG PointerSize;
+            ULONG EventsLost;
+            ULONG CpuSpeedInMHZ;
+        } DUMMYSTRUCTNAME;
+    } DUMMYUNIONNAME1;
+    LPWSTR LoggerName;
+    LPWSTR LogFileName;
+    TIME_ZONE_INFORMATION TimeZone;
+    LARGE_INTEGER BootTime;
+    LARGE_INTEGER PerfFreq;
+    LARGE_INTEGER StartTime;
+    ULONG ReservedTime;
+    ULONG BuffersLost;
+} TRACE_LOGFILE_HEADER, *PTRACE_LOGFILE_HEADER;
+
+struct _EVENT_TRACE_LOGFILEW
+{
+    LPWSTR LogFileName;
+    LPWSTR LoggerName;
+    LONGLONG CurrentTime;
+    ULONG LogFileMode;
+    EVENT_TRACE CurrentEvent;
+    TRACE_LOGFILE_HEADER LogfileHeader;
+    PEVENT_TRACE_BUFFER_CALLBACKW BufferCallback;
+    ULONG BufferSize;
+    ULONG Filled;
+    ULONG EventsLost;
+    PEVENT_CALLBACK EventCallback;
+    PVOID Context;
+};
+
+struct _EVENT_TRACE_LOGFILEA
+{
+    LPSTR LogFileName;
+    LPSTR LoggerName;
+    LONGLONG CurrentTime;
+    ULONG LogFileMode;
+    EVENT_TRACE CurrentEvent;
+    TRACE_LOGFILE_HEADER LogfileHeader;
+    PEVENT_TRACE_BUFFER_CALLBACKA BufferCallback;
+    ULONG BufferSize;
+    ULONG Filled;
+    ULONG EventsLost;
+    PEVENT_CALLBACK EventCallback;
+    PVOID Context;
+};
+
+ULONG WINAPI CloseTrace(TRACEHANDLE);
+ULONG WINAPI EnableTrace(ULONG,ULONG,ULONG,LPCGUID,TRACEHANDLE);
+ULONG WINAPI RegisterTraceGuidsA(WMIDPREQUEST,PVOID,LPCGUID,ULONG,PTRACE_GUID_REGISTRATION,LPCSTR,LPCSTR,PTRACEHANDLE);
+ULONG WINAPI RegisterTraceGuidsW(WMIDPREQUEST,PVOID,LPCGUID,ULONG,PTRACE_GUID_REGISTRATION,LPCWSTR,LPCWSTR,PTRACEHANDLE);
+#define      RegisterTraceGuids WINELIB_NAME_AW(RegisterTraceGuids)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EVNTRACE_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/excpt.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/excpt.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/excpt.h	(revision 16410)
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2002 Peter Hunnisett
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_EXCPT_H
+#define __WINE_EXCPT_H
+
+/*
+ * Return values from the actual exception handlers
+ */
+typedef enum _EXCEPTION_DISPOSITION
+{
+  ExceptionContinueExecution,
+  ExceptionContinueSearch,
+  ExceptionNestedException,
+  ExceptionCollidedUnwind
+} EXCEPTION_DISPOSITION;
+
+/*
+ * Return values from filters in except() and from UnhandledExceptionFilter
+ */
+#define EXCEPTION_EXECUTE_HANDLER        1
+#define EXCEPTION_CONTINUE_SEARCH        0
+#define EXCEPTION_CONTINUE_EXECUTION    -1
+
+
+#if defined(_MSC_VER) && defined(USE_COMPILER_EXCEPTIONS)
+#define GetExceptionCode    _exception_code
+#define GetExceptionInformation (struct _EXCEPTION_POINTERS *)_exception_info
+#define AbnormalTermination _abnormal_termination
+
+unsigned long __cdecl _exception_code(void);
+void * __cdecl _exception_info(void);
+int __cdecl _abnormal_termination(void);
+#endif /* defined(_MSC_VER) && defined(USE_COMPILER_EXCEPTIONS) */
+
+#endif /* __WINE_EXCPT_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/exdisp.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/exdisp.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/exdisp.idl	(revision 16410)
@@ -0,0 +1,911 @@
+/*
+ * Defines the COM interfaces and APIs related to the IE Web browser
+ *
+ * Copyright (C) 2001 John R. Sheets (for CodeWeavers)
+ * Copyright (C) 2003 Alexandre Julliard
+ * Copyright (C) 2004 Jacek Caban
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "ocidl.idl";
+import "docobj.idl";
+
+#include <olectl.h>
+#include <exdispid.h>
+
+cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
+cpp_quote("#undef FindText")
+cpp_quote("#endif")
+
+/*****************************************************************************
+ * SHDocVw library
+ */
+[
+    uuid(EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B),
+    version(1.1),
+    helpstring("Microsoft Internet Controls")
+]
+library SHDocVw
+{
+
+importlib("stdole2.tlb");
+
+
+/*****************************************************************************
+ * IWebBrowser interface
+ */
+[
+    object,
+    oleautomation,
+    uuid(eab22ac1-30c1-11cf-a7eb-0000c05bae0b),
+    hidden,
+    dual
+]
+interface IWebBrowser : IDispatch
+{
+    typedef enum BrowserNavConstants
+    {
+        navOpenInNewWindow   = 0x1,
+        navNoHistory         = 0x2,
+        navNoReadFromCache   = 0x4,
+        navNoWriteToCache    = 0x8,
+        navAllowAutosearch   = 0x10,
+        navBrowserBar        = 0x20,
+        navHyperlink         = 0x40,
+        navEnforceRestricted = 0x80
+    } BrowserNavConstants;
+
+    typedef enum RefreshConstants
+    {
+        REFRESH_NORMAL     = 0,
+        REFRESH_IFEXPIRED  = 1,
+        REFRESH_COMPLETELY = 3
+    } RefreshConstants;
+
+    [id(100)] HRESULT GoBack();
+    [id(101)] HRESULT GoForward();
+    [id(102)] HRESULT GoHome();
+    [id(103)] HRESULT GoSearch();
+
+    [id(104)]
+    HRESULT Navigate(
+        [in] BSTR URL,
+        [in, optional] VARIANT *Flags,
+        [in, optional] VARIANT *TargetFrameName,
+        [in, optional] VARIANT *PostData,
+        [in, optional] VARIANT *Headers);
+
+    [id(DISPID_REFRESH)] HRESULT Refresh();
+    [id(105)] HRESULT Refresh2([in, optional] VARIANT *Level);
+    [id(106)] HRESULT Stop();
+    [id(200), propget] HRESULT Application([out, retval] IDispatch** ppDisp);
+    [id(201), propget] HRESULT Parent([out, retval] IDispatch** ppDisp);
+    [id(202), propget] HRESULT Container([out, retval] IDispatch** ppDisp);
+    [id(203), propget] HRESULT Document([out, retval] IDispatch** ppDisp);
+    [id(204), propget] HRESULT TopLevelContainer([out, retval] VARIANT_BOOL* pBool);
+    [id(205), propget] HRESULT Type([out, retval] BSTR* Type);
+    [id(206), propget] HRESULT Left([out, retval] long *pl);
+    [id(206), propput] HRESULT Left([in] long Left);
+    [id(207), propget] HRESULT Top([out, retval] long *pl);
+    [id(207), propput] HRESULT Top([in] long Top);
+    [id(208), propget] HRESULT Width([out, retval] long *pl);
+    [id(208), propput] HRESULT Width([in] long Width);
+    [id(209), propget] HRESULT Height([out, retval] long *pl);
+    [id(209), propput] HRESULT Height([in] long Height);
+    [id(210), propget] HRESULT LocationName([out, retval] BSTR *LocationName);
+    [id(211), propget] HRESULT LocationURL([out, retval] BSTR *LocationURL);
+    [id(212), propget] HRESULT Busy([out, retval] VARIANT_BOOL *pBool);
+}
+
+/*****************************************************************************
+ * DWebBrowserEvents dispinterface
+ */
+[
+    uuid(eab22ac2-30c1-11CF-a7eb-0000C05bae0b),
+    hidden
+]
+dispinterface DWebBrowserEvents
+{
+    properties:
+    methods:
+    [id(DISPID_BEFORENAVIGATE)]
+    void BeforeNavigate(
+        [in] BSTR URL,
+        long Flags,
+        BSTR TargetFrameName,
+        VARIANT *PostData,
+        BSTR Headers,
+        [in, out] VARIANT_BOOL *Cancel);
+
+    [id(DISPID_NAVIGATECOMPLETE)]
+    void NavigateComplete([in] BSTR URL);
+
+    [id(DISPID_STATUSTEXTCHANGE)]
+    void StatusTextChange([in] BSTR Text);
+
+    [id(DISPID_PROGRESSCHANGE)]
+    void ProgressChange([in] long Progress, [in] long ProgressMax);
+
+    [id(DISPID_DOWNLOADCOMPLETE)]
+    void DownloadComplete();
+
+    [id(DISPID_COMMANDSTATECHANGE)]
+    void CommandStateChange([in] long Command, [in]VARIANT_BOOL Enable);
+
+    [id(DISPID_DOWNLOADBEGIN)]
+    void DownloadBegin();
+
+    [id(DISPID_NEWWINDOW)]
+    void NewWindow(
+        [in] BSTR URL,
+        [in] long Flags,
+        [in] BSTR TargetFrameName,
+        [in] VARIANT *PostData,
+        [in] BSTR Headers,
+        [in,out] VARIANT_BOOL *Processed);
+
+    [id(DISPID_TITLECHANGE)]
+    void TitleChange([in] BSTR Text);
+
+    [id(DISPID_FRAMEBEFORENAVIGATE)]
+    void FrameBeforeNavigate(
+        [in] BSTR URL,
+        long Flags,
+        BSTR TargetFrameName,
+        VARIANT *PostData,
+        BSTR Headers,
+        [in, out]VARIANT_BOOL *Cancel);
+
+    [id(DISPID_FRAMENAVIGATECOMPLETE)]
+    void FrameNavigateComplete([in] BSTR URL);
+
+    [id(DISPID_FRAMENEWWINDOW)]
+    void FrameNewWindow(
+        [in] BSTR URL,
+        [in] long Flags,
+        [in] BSTR TargetFrameName,
+        [in] VARIANT *PostData,
+        [in] BSTR Headers,
+        [in,out] VARIANT_BOOL *Processed);
+
+    [id(DISPID_QUIT)]
+    void Quit([in, out] VARIANT_BOOL *Cancel);
+
+    [id(DISPID_WINDOWMOVE)]
+    void WindowMove();
+
+    [id(DISPID_WINDOWRESIZE)]
+    void WindowResize();
+
+    [id(DISPID_WINDOWACTIVATE)]
+    void WindowActivate();
+
+    [id(DISPID_PROPERTYCHANGE)]
+    void PropertyChange([in] BSTR Property);
+}
+
+typedef
+[
+    uuid(34a226e0-df30-11cf-89a9-00a0c9054129)
+]
+enum CommandStateChangeConstants {
+    CSC_UPDATECOMMANDS  = -1,
+    CSC_NAVIGATEFORWARD = 1,
+    CSC_NAVIGATEBACK    = 2
+} CommandStateChangeConstants;
+
+/*****************************************************************************
+ * IWebBrowserApp interface
+ */
+[
+    object,
+    oleautomation,
+    uuid(0002df05-0000-0000-c000-000000000046),
+    hidden,
+    dual
+]
+interface IWebBrowserApp : IWebBrowser
+{
+    [id(300)] HRESULT Quit();
+    [id(301)] HRESULT ClientToWindow([in,out] int* pcx, [in,out] int* pcy);
+    [id(302)] HRESULT PutProperty([in] BSTR Property, [in] VARIANT vtValue);
+    [id(303)] HRESULT GetProperty([in] BSTR Property, [out, retval] VARIANT *pvtValue);
+    [id(0), propget] HRESULT Name([out, retval] BSTR* Name);
+    [id(DISPID_HWND), propget] HRESULT HWND([out, retval] long *pHWND);
+    [id(400), propget] HRESULT FullName([out, retval] BSTR* FullName);
+    [id(401), propget] HRESULT Path([out, retval] BSTR* Path);
+    [id(402), propget] HRESULT Visible([out, retval] VARIANT_BOOL* pBool);
+    [id(402), propput] HRESULT Visible([in] VARIANT_BOOL Value);
+    [id(403), propget] HRESULT StatusBar([out, retval] VARIANT_BOOL* pBool);
+    [id(403), propput] HRESULT StatusBar([in] VARIANT_BOOL Value);
+    [id(404), propget] HRESULT StatusText([out, retval] BSTR *StatusText);
+    [id(404), propput] HRESULT StatusText([in] BSTR StatusText);
+    [id(405), propget] HRESULT ToolBar([out, retval] int * Value);
+    [id(405), propput] HRESULT ToolBar([in] int Value);
+    [id(406), propget] HRESULT MenuBar([out, retval] VARIANT_BOOL *Value);
+    [id(406), propput] HRESULT MenuBar([in] VARIANT_BOOL Value);
+    [id(407), propget] HRESULT FullScreen([out, retval] VARIANT_BOOL *pbFullScreen);
+    [id(407), propput] HRESULT FullScreen([in] VARIANT_BOOL bFullScreen);
+}
+
+/*****************************************************************************
+ * IWebBrowser2 interface
+ */
+[
+    object,
+    oleautomation,
+    uuid(d30c1661-cdaf-11d0-8a3e-00c04fc9e26e),
+    hidden,
+    dual
+]
+interface IWebBrowser2 : IWebBrowserApp
+{
+    [id(500)] HRESULT Navigate2(
+        [in] VARIANT *URL,
+        [in, optional] VARIANT *Flags,
+        [in, optional] VARIANT *TargetFrameName,
+        [in, optional] VARIANT *PostData,
+        [in, optional] VARIANT *Headers);
+
+    [id(501)] HRESULT QueryStatusWB(
+        [in] OLECMDID cmdID,
+        [out, retval] OLECMDF *pcmdf);
+
+    [id(502)] HRESULT ExecWB(
+        [in] OLECMDID cmdID,
+        [in] OLECMDEXECOPT cmdexecopt,
+        [in, optional] VARIANT *pvaIn,
+        [out, in, optional] VARIANT *pvaOut);
+
+    [id(503)] HRESULT ShowBrowserBar(
+        [in] VARIANT *pvaClsid,
+        [in, optional] VARIANT *pvarShow,
+        [in, optional] VARIANT *pvarSize);
+
+    [id(DISPID_READYSTATE), propget, bindable]
+    HRESULT ReadyState([out, retval] READYSTATE *plReadyState);
+
+    [id(550), propget] HRESULT Offline([out, retval] VARIANT_BOOL *pbOffline);
+    [id(550), propput] HRESULT Offline([in] VARIANT_BOOL bOffline);
+    [id(551), propget] HRESULT Silent([out, retval] VARIANT_BOOL *pbSilent);
+    [id(551), propput] HRESULT Silent([in] VARIANT_BOOL bSilent);
+    [id(552), propget] HRESULT RegisterAsBrowser([out, retval] VARIANT_BOOL *pbRegister);
+    [id(552), propput] HRESULT RegisterAsBrowser([in] VARIANT_BOOL bRegister);
+    [id(553), propget] HRESULT RegisterAsDropTarget([out, retval] VARIANT_BOOL *pbRegister);
+    [id(553), propput] HRESULT RegisterAsDropTarget([in] VARIANT_BOOL bRegister);
+    [id(554), propget] HRESULT TheaterMode([out, retval] VARIANT_BOOL *pbRegister);
+    [id(554), propput] HRESULT TheaterMode([in] VARIANT_BOOL bRegister);
+    [id(555), propget] HRESULT AddressBar([out, retval] VARIANT_BOOL *Value);
+    [id(555), propput] HRESULT AddressBar([in] VARIANT_BOOL Value);
+    [id(556), propget] HRESULT Resizable([out, retval] VARIANT_BOOL *Value);
+    [id(556), propput] HRESULT Resizable([in] VARIANT_BOOL Value);
+}
+
+typedef
+[
+    uuid(65507be0-91a8-11d3-a845-009027220e6d)
+]
+enum SecureLockIconConstants {
+    secureLockIconUnsecure          = 0,
+    secureLockIconMixed             = 1,
+    secureLockIconSecureUnknownBits = 2,
+    secureLockIconSecure40Bit       = 3,
+    secureLockIconSecure56Bit       = 4,
+    secureLockIconSecureFortezza    = 5,
+    secureLockIconSecure128Bit      = 6
+} SecureLockIconConstants;
+
+/*****************************************************************************
+ * DWebBrowserEvents2 dispinterface
+ */
+[
+    uuid(34a715a0-6587-11d0-924a-0020afc7ac4d),
+    hidden
+]
+dispinterface DWebBrowserEvents2
+{
+    properties:
+    methods:
+    [id(DISPID_STATUSTEXTCHANGE)]
+    void StatusTextChange([in] BSTR Text);
+
+    [id(DISPID_PROGRESSCHANGE)]
+    void ProgressChange([in] long Progress, [in] long ProgressMax);
+
+    [id(DISPID_COMMANDSTATECHANGE)]
+    void CommandStateChange([in] long Command, [in] VARIANT_BOOL Enable);
+
+    [id(DISPID_DOWNLOADBEGIN)]
+    void DownloadBegin();
+
+    [id(DISPID_DOWNLOADCOMPLETE)]
+    void DownloadComplete();
+
+    [id(DISPID_TITLECHANGE)]
+    void TitleChange([in] BSTR Text);
+
+    [id(DISPID_PROPERTYCHANGE)]
+    void PropertyChange([in] BSTR szProperty);
+
+    [id(DISPID_BEFORENAVIGATE2)]
+    void BeforeNavigate2(
+        [in] IDispatch *pDisp,
+        [in] VARIANT *URL,
+        [in] VARIANT *Flags,
+        [in] VARIANT *TargetFrameName,
+        [in] VARIANT *PostData,
+        [in] VARIANT *Headers,
+        [in, out] VARIANT_BOOL *Cancel);
+
+    [id(DISPID_NEWWINDOW2)]
+    void NewWindow2([in, out] IDispatch **ppDisp, [in, out] VARIANT_BOOL *Cancel);
+
+    [id(DISPID_NAVIGATECOMPLETE2)]
+    void NavigateComplete2([in] IDispatch *pDisp, [in] VARIANT *URL);
+
+    [id(DISPID_DOCUMENTCOMPLETE)]
+    void DocumentComplete([in] IDispatch *pDisp, [in] VARIANT *URL);
+
+    [id(DISPID_ONQUIT)]
+    void OnQuit();
+
+    [id(DISPID_ONVISIBLE)]
+    void OnVisible([in] VARIANT_BOOL Visible);
+
+    [id(DISPID_ONTOOLBAR)]
+    void OnToolBar([in] VARIANT_BOOL ToolBar);
+
+    [id(DISPID_ONMENUBAR)]
+    void OnMenuBar([in] VARIANT_BOOL MenuBar);
+
+    [id(DISPID_ONSTATUSBAR)]
+    void OnStatusBar([in] VARIANT_BOOL StatusBar);
+
+    [id(DISPID_ONFULLSCREEN)]
+    void OnFullScreen([in] VARIANT_BOOL FullScreen);
+
+    [id(DISPID_ONTHEATERMODE)]
+    void OnTheaterMode([in] VARIANT_BOOL TheaterMode);
+
+    [id(DISPID_WINDOWSETRESIZABLE)]
+    void WindowSetResizable([in] VARIANT_BOOL Resizable);
+
+    [id(DISPID_WINDOWSETLEFT)]
+    void WindowSetLeft([in] long Left);
+
+    [id(DISPID_WINDOWSETTOP)]
+    void WindowSetTop([in] long Top);
+
+    [id(DISPID_WINDOWSETWIDTH)]
+    void WindowSetWidth([in] long Width);
+
+    [id(DISPID_WINDOWSETHEIGHT)]
+    void WindowSetHeight([in] long Height);
+
+    [id(DISPID_WINDOWCLOSING)]
+    void WindowClosing(
+            [in] VARIANT_BOOL IsChildWindow,
+            [in, out] VARIANT_BOOL *Cancel);
+
+    [id(DISPID_CLIENTTOHOSTWINDOW)]
+    void ClientToHostWindow(
+            [in, out] long *CX,
+            [in, out] long *CY);
+
+    [id(DISPID_SETSECURELOCKICON)]
+    void SetSecureLockIcon([in] long SecureLockIcon);
+
+    [id(DISPID_FILEDOWNLOAD)]
+    void FileDownload([in, out] VARIANT_BOOL* Cancel);
+
+    [id(DISPID_NAVIGATEERROR)]
+    void NavigateError(
+            [in] IDispatch *pDisp,
+            [in] VARIANT *URL,
+            [in] VARIANT *Frame,
+            [in] VARIANT *StatusCode,
+            [in, out] VARIANT_BOOL *Cancel);
+
+    [id(DISPID_PRINTTEMPLATEINSTANTIATION)]
+    void PrintTemplateInstantiation([in] IDispatch *pDisp);
+
+    [id(DISPID_PRINTTEMPLATETEARDOWN)]
+    void PrintTemplateTeardown([in] IDispatch *pDisp);
+
+    [id(DISPID_UPDATEPAGESTATUS)]
+    void UpdatePageStatus(
+            [in] IDispatch *pDisp,
+            [in] VARIANT *nPage,
+            [in] VARIANT *fDone);
+
+    [id(DISPID_PRIVACYIMPACTEDSTATECHANGE)]
+    void PrivacyImpactedStateChange([in] VARIANT_BOOL bImpacted);
+}
+
+[
+    uuid(eab22ac3-30c1-11cf-a7eb-0000c05bae0b),
+    control
+]
+coclass WebBrowser_V1
+{
+    interface IWebBrowser2;
+    [default] interface IWebBrowser;
+    [source] dispinterface DWebBrowserEvents2;
+    [default, source] dispinterface DWebBrowserEvents;
+}
+
+[
+    uuid(8856f961-340a-11d0-a96b-00c04fd705a2),
+    control
+]
+coclass WebBrowser
+{
+    [default] interface IWebBrowser2;
+    interface IWebBrowser;
+    [default, source] dispinterface DWebBrowserEvents2;
+    [source] dispinterface DWebBrowserEvents;
+}
+
+[
+    uuid(0002df01-0000-0000-c000-000000000046)
+]
+coclass InternetExplorer
+{
+    [default] interface IWebBrowser2;
+              interface IWebBrowserApp;
+    [default, source] dispinterface DWebBrowserEvents2;
+    [source]          dispinterface DWebBrowserEvents;
+}
+
+[
+    uuid(C08AFD90-F2A1-11D1-8455-00A0C91F3880),
+    hidden
+]
+coclass ShellBrowserWindow
+{
+    [default] interface IWebBrowser2;
+    interface IWebBrowserApp;
+    [default, source] dispinterface DWebBrowserEvents2;
+    [source] dispinterface DWebBrowserEvents;
+}
+
+typedef
+[
+    uuid(f41e6981-28e5-11d0-82b4-00a0c90c29c5)
+]
+enum ShellWindowTypeConstants {
+    SWC_EXPLORER = 0,
+    SWC_BROWSER  = 1,
+    SWC_3RDPARTY = 2,
+    SWC_CALLBACK = 4
+} ShellWindowTypeConstants;
+
+typedef
+[
+    uuid(7716a370-38Ca-11d0-a48B-00a0c90a8f39)
+]
+enum ShellWindowFindWindowOptions {
+    SWFO_NEEDDISPATCH   = 1,
+    SWFO_INCLUDEPENDING = 2,
+    SWFO_COOKIEPASSED   = 4
+} ShellWindowFindWindowOptions;
+
+[
+    uuid(FE4106E0-399A-11D0-A48C-00A0C90A8F39)
+]
+dispinterface DShellWindowsEvents {
+    properties:
+    methods:
+    [id(DISPID_WINDOWREGISTERED)]
+    void WindowRegistered([in] long lCookie);
+
+    [id(DISPID_WINDOWREVOKED)]
+    void WindowRevoked([in] long lCookie);
+}
+
+[
+    object,
+    oleautomation,
+    uuid(85cb6900-4d95-11cf-960c-0080c7f4ee85),
+    dual
+]
+interface IShellWindows : IDispatch
+{
+    [propget] HRESULT Count([out, retval] long *Count);
+
+    [id(0)] HRESULT Item(
+            [in, optional] VARIANT index,
+            [out, retval] IDispatch **Folder);
+
+    [id(-4)] HRESULT _NewEnum([out, retval] IUnknown **ppunk);
+
+    [hidden] HRESULT Register(
+            [in] IDispatch *pid,
+            [in] long hWnd,
+            [in] int swClass,
+            [out] long *plCookie);
+
+    [hidden] HRESULT RegisterPending(
+            [in] long lThreadId,
+            [in] VARIANT *pvarloc,
+            [in] VARIANT *pvarlocRoot,
+            [in] int swClass,
+            [out] long *plCookie);
+
+    [hidden] HRESULT Revoke([in] long lCookie);
+    [hidden] HRESULT OnNavigate([in] long lCookie, [in] VARIANT *pvarLoc);
+    [hidden] HRESULT OnActivated([in] long lCookie, [in] VARIANT_BOOL fActive);
+    [hidden] HRESULT FindWindowSW(
+            [in] VARIANT *pvarLoc,
+            [in] VARIANT *pvarLocRoot,
+            [in] int swClass,
+            [out] long *phwnd,
+            [in] int swfwOptions,
+            [out, retval] IDispatch **ppdispOut);
+
+    [hidden] HRESULT OnCreated([in] long lCookie, [in] IUnknown *punk);
+    [hidden] HRESULT ProcessAttachDetach([in] VARIANT_BOOL fAttach);
+}
+
+[
+    uuid(9ba05972-f6a8-11cf-a442-00a0c90a8f39)
+]
+coclass ShellWindows
+{
+    [default] interface IShellWindows;
+    [default, source] dispinterface DShellWindowsEvents;
+}
+
+[
+    odl,
+    uuid(729fe2f8-1ea8-11d1-8f85-00C04fc2fbe1),
+    dual,
+    oleautomation
+]
+interface IShellUIHelper : IDispatch {
+    [id(1), hidden] HRESULT ResetFirstBootMode();
+    [id(2), hidden] HRESULT ResetSafeMode();
+    [id(3), hidden] HRESULT RefreshOfflineDesktop();
+
+    [id(4)] HRESULT AddFavorite(
+            [in] BSTR URL,
+            [in, optional] VARIANT* Title);
+
+    [id(5)] HRESULT AddChannel([in] BSTR URL);
+
+    [id(6)] HRESULT AddDesktopComponent(
+            [in] BSTR URL,
+            [in] BSTR Type,
+            [in, optional] VARIANT *Left,
+            [in, optional] VARIANT *Top,
+            [in, optional] VARIANT *Width,
+            [in, optional] VARIANT *Height);
+
+    [id(7)] HRESULT IsSubscribed(
+            [in] BSTR URL,
+            [out, retval] VARIANT_BOOL *pBool);
+
+    [id(8)] HRESULT NavigateAndFind(
+            [in] BSTR URL,
+            [in] BSTR strQuery,
+            [in] VARIANT *varTargetFrame);
+
+    [id(9)] HRESULT ImportExportFavorites(
+            [in] VARIANT_BOOL fImport,
+            [in] BSTR strImpExpPath);
+
+    [id(10)] HRESULT AutoCompleteSaveForm([in, optional] VARIANT *Form);
+
+    [id(11)] HRESULT AutoScan(
+            [in] BSTR strSearch,
+            [in] BSTR strFailureUrl,
+            [in, optional] VARIANT *pvarTargetFrame);
+
+    [id(12), hidden] HRESULT AutoCompleteAttach([in, optional] VARIANT *Reserved);
+
+    [id(13)] HRESULT ShowBrowserUI(
+            [in] BSTR bstrName,
+            [in] VARIANT *pvarIn,
+            [out, retval] VARIANT *pvarOut);
+}
+
+[
+    uuid(64ab4bb7-111e-11d1-8f79-00c04fc2fbe1)
+]
+coclass ShellUIHelper {
+    [default] interface IShellUIHelper;
+}
+
+[
+    uuid(55136806-b2de-11d1-b9f2-00a0c98bc547)
+]
+dispinterface DShellNameSpaceEvents {
+    properties:
+    methods:
+    [id(1)] void FavoritesSelectionChange(
+            [in] long cItems,
+            [in] long hItem,
+            [in] BSTR strName,
+            [in] BSTR strUrl,
+            [in] long cVisits,
+            [in] BSTR strDate,
+            [in] long fAvailableOffline);
+
+    [id(2)] void SelectionChange();
+    [id(3)] void DoubleClick();
+    [id(4)] void Initialized();
+}
+
+[
+    odl,
+    uuid(55136804-b2de-11d1-b9f2-00a0c98bc547),
+    hidden,
+    dual,
+    oleautomation
+]
+interface IShellFavoritesNameSpace : IDispatch {
+    [id(1)] HRESULT MoveSelectionUp();
+    [id(2)] HRESULT MoveSelectionDown();
+    [id(3)] HRESULT ResetSort();
+    [id(4)] HRESULT NewFolder();
+    [id(5)] HRESULT Synchronize();
+    [id(6)] HRESULT Import();
+    [id(7)] HRESULT Export();
+    [id(8)] HRESULT InvokeContextMenuCommand([in] BSTR strCommand);
+    [id(9)] HRESULT MoveSelectionTo();
+    [id(10), propget] HRESULT SubscriptionsEnabled([out, retval] VARIANT_BOOL *pBool);
+    [id(11)] HRESULT CreateSubscriptionForSelection([out, retval] VARIANT_BOOL *pBool);
+    [id(12)] HRESULT DeleteSubscriptionForSelection([out, retval] VARIANT_BOOL *pBool);
+    [id(13)] HRESULT SetRoot([in] BSTR bstrFullPath);
+}
+
+[
+    odl,
+    uuid(e572d3c9-37be-4ae2-825d-d521763e3108),
+    hidden,
+    dual,
+    oleautomation
+]
+interface IShellNameSpace : IShellFavoritesNameSpace {
+    [id(14), propget] HRESULT EnumOptions([out, retval] long* pgrfEnumFlags);
+    [id(14), propput] HRESULT EnumOptions([in] long pgrfEnumFlags);
+
+    [id(15), propget] HRESULT SelectedItem([out, retval] IDispatch **pItem);
+    [id(15), propput] HRESULT SelectedItem([in] IDispatch *pItem);
+
+    [id(16), propget] HRESULT Root([out, retval] VARIANT *pvar);
+    [id(16), propput] HRESULT Root([in] VARIANT pvar);
+
+    [id(17), propget] HRESULT Depth([out, retval] int *piDepth);
+    [id(17), propput] HRESULT Depth([in] int piDepth);
+
+    [id(18), propget] HRESULT Mode([out, retval] unsigned int *puMode);
+    [id(18), propput] HRESULT Mode([in] unsigned int puMode);
+
+    [id(19), propget] HRESULT Flags([out, retval] unsigned long *pdwFlags);
+    [id(19), propput] HRESULT Flags([in] unsigned long pdwFlags);
+
+    [id(20), propput] HRESULT TVFlags([in] unsigned long dwFlags);
+    [id(20), propget] HRESULT TVFlags([out, retval] unsigned long *dwFlags);
+
+    [id(21), propget] HRESULT Columns([out, retval] BSTR *bstrColumns);
+    [id(21), propput] HRESULT Columns([in] BSTR bstrColumns);
+
+    [id(22), propget] HRESULT CountViewTypes([out, retval] int *piTypes);
+
+    [id(23)] HRESULT SetViewType([in] int iType);
+    [id(24)] HRESULT SelectedItems([out, retval] IDispatch **ppid);
+    [id(25)] HRESULT Expand([in] VARIANT var,  int iDepth);
+    [id(26)] HRESULT UnselectAll();
+}
+
+[
+    uuid(55136805-b2de-11d1-b9f2-00a0c98bc547)
+]
+coclass ShellNameSpace {
+    [default] interface IShellNameSpace;
+    [default, source] dispinterface DShellNameSpaceEvents;
+}
+
+[
+    uuid(2f2f1f96-2bc1-4b1c-be28-ea3774f4676a)
+]
+coclass ShellShellNameSpace {
+    [default] interface IShellNameSpace;
+    [default, source] dispinterface DShellNameSpaceEvents;
+}
+
+[
+    odl,
+    uuid(f3470f24-15fd-11d2-bb2e-00805ff7efca),
+    hidden,
+    dual,
+    oleautomation
+]
+interface IScriptErrorList : IDispatch {
+    [id(10)] HRESULT advanceError();
+    [id(11)] HRESULT retreatError();
+    [id(12)] HRESULT canAdvanceError([out, retval] long *pfCanAdvance);
+    [id(13)] HRESULT canRetreatError([out, retval] long *pfCanRetreat);
+    [id(14)] HRESULT getErrorLine([out, retval] long *plLine);
+    [id(15)] HRESULT getErrorChar([out, retval] long *plChar);
+    [id(16)] HRESULT getErrorCode([out, retval] long *plCode);
+    [id(17)] HRESULT getErrorMsg([out, retval] BSTR *pstr);
+    [id(18)] HRESULT getErrorUrl([out, retval] BSTR *pstr);
+    [id(23)] HRESULT getAlwaysShowLockState([out, retval] long *pfAlwaysShowLocked);
+    [id(19)] HRESULT getDetailsPaneOpen([out, retval] long *pfDetailsPaneOpen);
+    [id(20)] HRESULT setDetailsPaneOpen(long fDetailsPaneOpen);
+    [id(21)] HRESULT getPerErrorDisplay([out, retval] long *pfPerErrorDisplay);
+    [id(22)] HRESULT setPerErrorDisplay(long fPerErrorDisplay);
+}
+
+[
+    uuid(efd01300-160f-11d2-bb2e-00805ff7efca),
+    hidden
+]
+coclass CScriptErrorList {
+    [default] interface IScriptErrorList;
+}
+
+[
+    odl,
+    uuid(ba9239a4-3dd5-11d2-bf8b-00c04fb93661),
+    hidden,
+    dual,
+    oleautomation
+]
+interface ISearch : IDispatch {
+    [propget] HRESULT Title([out, retval] BSTR *pbstrTitle);
+    [propget] HRESULT Id([out, retval] BSTR *pbstrId);
+    [propget] HRESULT URL([out, retval] BSTR *pbstrUrl);
+}
+
+[
+    odl,
+    uuid(47c922a2-3dd5-11d2-bf8b-00c04fb93661),
+    hidden,
+    dual,
+    oleautomation
+]
+interface ISearches : IDispatch {
+    [propget] HRESULT Count([out, retval] long *plCount);
+    [propget] HRESULT Default([out, retval] BSTR *pbstrDefault);
+
+    HRESULT Item(
+            [in, optional] VARIANT index,
+            [out, retval] ISearch **ppid);
+
+    [id(-4)] HRESULT _NewEnum([out, retval] IUnknown **ppunk);
+}
+
+[
+    odl,
+    uuid(72423e8f-8011-11d2-be79-00a0c9a83da1),
+    hidden,
+    dual,
+    oleautomation
+]
+interface ISearchAssistantOC : IDispatch {
+    [id(1)] HRESULT AddNextMenuItem([in] BSTR bstrText, [in] long idItem);
+    [id(2)] HRESULT SetDefaultSearchUrl([in] BSTR bstrUrl);
+    [id(3)] HRESULT NavigateToDefaultSearch();
+
+    [id(4)] HRESULT IsRestricted(
+            [in] BSTR bstrGuid,
+            [out, retval] VARIANT_BOOL *pVal);
+
+    [id(5), propget] HRESULT ShellFeaturesEnabled([out, retval] VARIANT_BOOL *pVal);
+    [id(6), propget] HRESULT SearchAssistantDefault([out, retval] VARIANT_BOOL *pVal);
+    [id(7), propget] HRESULT Searches([out, retval] ISearches **ppid);
+    [id(8), propget] HRESULT InWebFolder([out, retval] VARIANT_BOOL *pVal);
+
+    [id(9)] HRESULT PutProperty(
+            [in] VARIANT_BOOL bPerLocale,
+            [in] BSTR bstrName,
+            [in] BSTR bstrValue);
+
+    [id(10)] HRESULT GetProperty(
+            [in] VARIANT_BOOL bPerLocale,
+            [in] BSTR bstrName,
+            [out, retval] BSTR *pbstrValue);
+
+    [id(11), propput] HRESULT EventHandled([in] VARIANT_BOOL rhs);
+    [id(12)] HRESULT ResetNextMenu();
+    [id(13)] HRESULT FindOnWeb();
+    [id(14)] HRESULT FindFilesOrFolders();
+    [id(15)] HRESULT FindComputer();
+    [id(16)] HRESULT FindPrinter();
+    [id(17)] HRESULT FindPeople();
+
+    [id(18)] HRESULT GetSearchAssistantURL(
+            [in] VARIANT_BOOL bSubstitute,
+            [in] VARIANT_BOOL bCustomize,
+            [out, retval] BSTR *pbstrValue);
+
+    [id(19)] HRESULT NotifySearchSettingsChanged();
+
+    [id(20), propput] HRESULT ASProvider([in] BSTR pProvider);
+    [id(20), propget] HRESULT ASProvider([out, retval] BSTR *pProvider);
+
+    [id(21), propput] HRESULT ASSetting([in] int pSetting);
+    [id(21), propget] HRESULT ASSetting([out, retval] int *pSetting);
+
+    [id(22)] HRESULT NETDetectNextNavigate();
+    [id(23)] HRESULT PutFindText([in] BSTR FindText);
+    [id(24), propget] HRESULT Version([out, retval] int *pVersion);
+
+    [id(25)] HRESULT EncodeString(
+            [in] BSTR bstrValue,
+            [in] BSTR bstrCharSet,
+            [in] VARIANT_BOOL bUseUTF8,
+            [out, retval] BSTR* pbstrResult);
+}
+
+[
+    odl,
+    uuid(72423e8f-8011-11d2-be79-00a0c9a83da2),
+    hidden,
+    dual,
+    oleautomation
+]
+interface ISearchAssistantOC2 : ISearchAssistantOC {
+    [id(26), propget] HRESULT ShowFindPrinter([out, retval] VARIANT_BOOL *pbShowFindPrinter);
+}
+
+[
+    odl,
+    uuid(72423e8f-8011-11d2-be79-00a0c9a83da3),
+    hidden,
+    dual,
+    oleautomation
+]
+interface ISearchAssistantOC3 : ISearchAssistantOC2 {
+    [id(27), propget] HRESULT SearchCompanionAvailable([out, retval] VARIANT_BOOL *pbAvailable);
+
+    [id(28), propput] HRESULT UseSearchCompanion([in] VARIANT_BOOL pbUseSC);
+    [id(28), propget] HRESULT UseSearchCompanion([out, retval] VARIANT_BOOL *pbUseSC);
+}
+
+[
+    uuid(1611fdda-445b-11d2-85de-00C04fa35c89),
+    hidden
+]
+dispinterface _SearchAssistantEvents {
+    properties:
+    methods:
+    [id(1)] void OnNextMenuSelect([in] long idItem);
+    [id(2)] void OnNewSearch();
+}
+
+[
+    uuid(b45ff030-4447-11d2-85de-00C04fa35c89),
+    hidden
+]
+coclass SearchAssistantOC {
+    [default] interface ISearchAssistantOC3;
+    [default, source] dispinterface _SearchAssistantEvents;
+}
+
+[
+    uuid(2e71fd0f-aab1-42c0-9146-6d2c4edcf07d),
+    hidden
+]
+coclass ShellSearchAssistantOC {
+    [default] interface ISearchAssistantOC3;
+    [default, source] dispinterface _SearchAssistantEvents;
+}
+
+} /* library */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/exdispid.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/exdispid.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/exdispid.h	(revision 16410)
@@ -0,0 +1,136 @@
+/*
+ * Copyright 2004 Jacek Caban
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef EXDISPID_H_
+#define EXDISPID_H_
+
+#define DISPID_BEFORENAVIGATE        100
+#define DISPID_NAVIGATECOMPLETE      101
+#define DISPID_STATUSTEXTCHANGE      102
+#define DISPID_QUIT                  103
+#define DISPID_DOWNLOADCOMPLETE      104
+#define DISPID_COMMANDSTATECHANGE    105
+#define DISPID_DOWNLOADBEGIN         106
+#define DISPID_NEWWINDOW             107
+#define DISPID_PROGRESSCHANGE        108
+#define DISPID_WINDOWMOVE            109
+#define DISPID_WINDOWRESIZE          110
+#define DISPID_WINDOWACTIVATE        111
+#define DISPID_PROPERTYCHANGE        112
+#define DISPID_TITLECHANGE           113
+#define DISPID_TITLEICONCHANGE       114
+
+#define DISPID_FRAMEBEFORENAVIGATE   200
+#define DISPID_FRAMENAVIGATECOMPLETE 201
+
+#define DISPID_FRAMENEWWINDOW        204
+
+#define DISPID_BEFORENAVIGATE2       250
+#define DISPID_NEWWINDOW2            251
+#define DISPID_NAVIGATECOMPLETE2     252
+#define DISPID_ONQUIT                253
+#define DISPID_ONVISIBLE             254
+#define DISPID_ONTOOLBAR             255
+#define DISPID_ONMENUBAR             256
+#define DISPID_ONSTATUSBAR           257
+#define DISPID_ONFULLSCREEN          258
+#define DISPID_DOCUMENTCOMPLETE      259
+#define DISPID_ONTHEATERMODE         260
+#define DISPID_ONADDRESSBAR          261
+#define DISPID_WINDOWSETRESIZABLE    262
+#define DISPID_WINDOWCLOSING         263
+#define DISPID_WINDOWSETLEFT         264
+#define DISPID_WINDOWSETTOP          265
+#define DISPID_WINDOWSETWIDTH        266
+#define DISPID_WINDOWSETHEIGHT       267
+#define DISPID_CLIENTTOHOSTWINDOW    268
+#define DISPID_SETSECURELOCKICON     269
+#define DISPID_FILEDOWNLOAD          270
+#define DISPID_NAVIGATEERROR         271
+#define DISPID_PRIVACYIMPACTEDSTATECHANGE 272
+
+#define DISPID_PRINTTEMPLATEINSTANTIATION 225
+#define DISPID_PRINTTEMPLATETEARDOWN      226
+#define DISPID_UPDATEPAGESTATUS           227
+
+#define DISPID_WINDOWREGISTERED 200
+#define DISPID_WINDOWREVOKED    201
+
+#define DISPID_RESETFIRSTBOOTMODE    1
+#define DISPID_RESETSAFEMODE         2
+#define DISPID_REFRESHOFFLINEDESKTOP 3
+#define DISPID_ADDFAVORITE           4
+#define DISPID_ADDCHANNEL            5
+#define DISPID_ADDDESKTOPCOMPONENT   6
+#define DISPID_ISSUBSCRIBED          7
+#define DISPID_NAVIGATEANDFIND       8
+#define DISPID_IMPORTEXPORTFAVORITES 9
+#define DISPID_AUTOCOMPLETESAVEFORM  10
+#define DISPID_AUTOSCAN              11
+#define DISPID_AUTOCOMPLETEATTACH    12
+#define DISPID_SHOWBROWSERUI         13
+#define DISPID_SHELLUIHELPERLAST     13
+
+#define DISPID_ADVANCEERROR            10
+#define DISPID_RETREATERROR            11
+#define DISPID_CANADVANCEERROR         12
+#define DISPID_CANRETREATERROR         13
+#define DISPID_GETERRORLINE            14
+#define DISPID_GETERRORCHAR            15
+#define DISPID_GETERRORCODE            16
+#define DISPID_GETERRORMSG             17
+#define DISPID_GETERRORURL             18
+#define DISPID_GETDETAILSSTATE         19
+#define DISPID_SETDETAILSSTATE         20
+#define DISPID_GETPERERRSTATE          21
+#define DISPID_SETPERERRSTATE          22
+#define DISPID_GETALWAYSSHOWLOCKSTATE  23
+
+#define DISPID_FAVSELECTIONCHANGE  1
+#define DISPID_SELECTIONCHANGE     2
+#define DISPID_DOUBLECLICK         3
+#define DISPID_INITIALIZED         4
+
+#define DISPID_MOVESELECTIONUP       1
+#define DISPID_MOVESELECTIONDOWN     2
+#define DISPID_RESETSORT             3
+#define DISPID_NEWFOLDER             4
+#define DISPID_SYNCHRONIZE           5
+#define DISPID_IMPORT                6
+#define DISPID_EXPORT                7
+#define DISPID_INVOKECONTEXTMENU     8
+#define DISPID_MOVESELECTIONTO       9
+#define DISPID_SUBSCRIPTIONSENABLED  10
+#define DISPID_CREATESUBSCRIPTION    11
+#define DISPID_DELETESUBSCRIPTION    12
+#define DISPID_SETROOT               13
+#define DISPID_ENUMOPTIONS           14
+#define DISPID_SELECTEDITEM          15
+#define DISPID_ROOT                  16
+#define DISPID_DEPTH                 17
+#define DISPID_MODE                  18
+#define DISPID_FLAGS                 19
+#define DISPID_TVFLAGS               20
+#define DISPID_NSCOLUMNS             21
+#define DISPID_COUNTVIEWTYPES        22
+#define DISPID_SETVIEWTYPE           23
+#define DISPID_SELECTEDITEMS         24
+#define DISPID_EXPAND                25
+#define DISPID_UNSELECTALL           26
+
+#endif /* EXDISPID_H_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/fci.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/fci.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/fci.h	(revision 16410)
@@ -0,0 +1,259 @@
+/*
+ * Copyright (C) 2002 Patrik Stridvall
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_FCI_H
+#define __WINE_FCI_H
+
+#include <basetsd.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+#include <pshpack4.h>
+
+#ifndef INCLUDED_TYPES_FCI_FDI
+#define INCLUDED_TYPES_FCI_FDI 1
+
+/***********************************************************************
+ * Common FCI/TDI declarations
+ */
+
+typedef unsigned long CHECKSUM;
+
+typedef unsigned long UOFF;
+typedef unsigned long COFF;
+
+/**********************************************************************/
+
+typedef struct {
+    int   erfOper;  /* FCI/FDI error code - see {FCI,FDI}ERROR_XXX for details. */
+    int   erfType;  /* Optional error value filled in by FCI/FDI. */
+    BOOL  fError;   /* TRUE => error present */
+} ERF, *PERF;
+
+/**********************************************************************/
+
+#define CB_MAX_CHUNK         32768U
+#define CB_MAX_DISK          0x7fffffffL
+#define CB_MAX_FILENAME      256
+#define CB_MAX_CABINET_NAME  256
+#define CB_MAX_CAB_PATH      256
+#define CB_MAX_DISK_NAME     256
+
+/**********************************************************************/
+
+typedef unsigned short TCOMP;
+
+#define tcompMASK_TYPE          0x000F  /* Mask for compression type */
+#define tcompTYPE_NONE          0x0000  /* No compression */
+#define tcompTYPE_MSZIP         0x0001  /* MSZIP */
+#define tcompTYPE_QUANTUM       0x0002  /* Quantum */
+#define tcompTYPE_LZX           0x0003  /* LZX */
+#define tcompBAD                0x000F  /* Unspecified compression type */
+
+#define tcompMASK_LZX_WINDOW    0x1F00  /* Mask for LZX Compression Memory */
+#define tcompLZX_WINDOW_LO      0x0F00  /* Lowest LZX Memory (15) */
+#define tcompLZX_WINDOW_HI      0x1500  /* Highest LZX Memory (21) */
+#define tcompSHIFT_LZX_WINDOW        8  /* Amount to shift over to get int */
+
+#define tcompMASK_QUANTUM_LEVEL 0x00F0  /* Mask for Quantum Compression Level */
+#define tcompQUANTUM_LEVEL_LO   0x0010  /* Lowest Quantum Level (1) */
+#define tcompQUANTUM_LEVEL_HI   0x0070  /* Highest Quantum Level (7) */
+#define tcompSHIFT_QUANTUM_LEVEL     4  /* Amount to shift over to get int */
+
+#define tcompMASK_QUANTUM_MEM   0x1F00  /* Mask for Quantum Compression Memory */
+#define tcompQUANTUM_MEM_LO     0x0A00  /* Lowest Quantum Memory (10) */
+#define tcompQUANTUM_MEM_HI     0x1500  /* Highest Quantum Memory (21) */
+#define tcompSHIFT_QUANTUM_MEM       8  /* Amount to shift over to get int */
+
+#define tcompMASK_RESERVED      0xE000  /* Reserved bits (high 3 bits) */
+
+/**********************************************************************/
+
+#define CompressionTypeFromTCOMP(tc) \
+    ((tc) & tcompMASK_TYPE)
+
+#define CompressionLevelFromTCOMP(tc) \
+    (((tc) & tcompMASK_QUANTUM_LEVEL) >> tcompSHIFT_QUANTUM_LEVEL)
+
+#define CompressionMemoryFromTCOMP(tc) \
+    (((tc) & tcompMASK_QUANTUM_MEM) >> tcompSHIFT_QUANTUM_MEM)
+
+#define TCOMPfromTypeLevelMemory(t, l, m) \
+    (((m) << tcompSHIFT_QUANTUM_MEM  ) | \
+     ((l) << tcompSHIFT_QUANTUM_LEVEL) | \
+     ( t                             ))
+
+#define LZXCompressionWindowFromTCOMP(tc) \
+    (((tc) & tcompMASK_LZX_WINDOW) >> tcompSHIFT_LZX_WINDOW)
+
+#define TCOMPfromLZXWindow(w) \
+    (((w) << tcompSHIFT_LZX_WINDOW) | \
+     ( tcompTYPE_LZX              ))
+
+#endif /* !defined(INCLUDED_TYPES_FCI_FDI) */
+
+/***********************************************************************
+ * FCI declarations
+ */
+
+typedef enum {
+    FCIERR_NONE,
+    FCIERR_OPEN_SRC,
+    FCIERR_READ_SRC,
+    FCIERR_ALLOC_FAIL,
+    FCIERR_TEMP_FILE,
+    FCIERR_BAD_COMPR_TYPE,
+    FCIERR_CAB_FILE,
+    FCIERR_USER_ABORT,
+    FCIERR_MCI_FAIL,
+} FCIERROR;
+
+/**********************************************************************/
+
+#ifndef _A_NAME_IS_UTF
+#define _A_NAME_IS_UTF  0x80
+#endif
+
+#ifndef _A_EXEC
+#define _A_EXEC         0x40
+#endif
+
+/**********************************************************************/
+
+typedef void *HFCI;
+
+/**********************************************************************/
+
+typedef struct {
+    ULONG cb;              /* Size available for cabinet on this media */
+    ULONG cbFolderThresh;  /* Threshold for forcing a new Folder */
+
+    UINT  cbReserveCFHeader;     /* Space to reserve in CFHEADER */
+    UINT  cbReserveCFFolder;     /* Space to reserve in CFFOLDER */
+    UINT  cbReserveCFData;       /* Space to reserve in CFDATA */
+    int   iCab;                  /* Sequential numbers for cabinets */
+    int   iDisk;                 /* Disk number */
+#ifndef REMOVE_CHICAGO_M6_HACK
+    int   fFailOnIncompressible; /* TRUE => Fail if a block is incompressible */
+#endif
+
+    USHORT setID; /* Cabinet set ID */
+
+    char szDisk[CB_MAX_DISK_NAME];   /* Current disk name */
+    char szCab[CB_MAX_CABINET_NAME]; /* Current cabinet name */
+    char szCabPath[CB_MAX_CAB_PATH]; /* Path for creating cabinet */
+} CCAB, *PCCAB;
+
+/**********************************************************************/
+
+typedef void * (__cdecl __WINE_ALLOC_SIZE(1) *PFNFCIALLOC)(ULONG cb);
+#define FNFCIALLOC(fn) void * __cdecl fn(ULONG cb)
+
+typedef void (__cdecl *PFNFCIFREE)(void *memory);
+#define FNFCIFREE(fn) void __cdecl fn(void *memory)
+
+typedef INT_PTR (__cdecl *PFNFCIOPEN) (char *pszFile, int oflag, int pmode, int *err, void *pv);
+#define FNFCIOPEN(fn) INT_PTR __cdecl fn(char *pszFile, int oflag, int pmode, int *err, void *pv)
+
+typedef UINT (__cdecl *PFNFCIREAD) (INT_PTR hf, void *memory, UINT cb, int *err, void *pv);
+#define FNFCIREAD(fn) UINT __cdecl fn(INT_PTR hf, void *memory, UINT cb, int *err, void *pv)
+
+typedef UINT (__cdecl *PFNFCIWRITE)(INT_PTR hf, void *memory, UINT cb, int *err, void *pv);
+#define FNFCIWRITE(fn) UINT __cdecl fn(INT_PTR hf, void *memory, UINT cb, int *err, void *pv)
+
+typedef int  (__cdecl *PFNFCICLOSE)(INT_PTR hf, int *err, void *pv);
+#define FNFCICLOSE(fn) int __cdecl fn(INT_PTR hf, int *err, void *pv)
+
+typedef long (__cdecl *PFNFCISEEK) (INT_PTR hf, long dist, int seektype, int *err, void *pv);
+#define FNFCISEEK(fn) long __cdecl fn(INT_PTR hf, long dist, int seektype, int *err, void *pv)
+
+typedef int  (__cdecl *PFNFCIDELETE) (char *pszFile, int *err, void *pv);
+#define FNFCIDELETE(fn) int __cdecl fn(char *pszFile, int *err, void *pv)
+
+typedef BOOL (__cdecl *PFNFCIGETNEXTCABINET)(PCCAB pccab, ULONG  cbPrevCab, void *pv);
+#define FNFCIGETNEXTCABINET(fn) BOOL __cdecl fn(PCCAB pccab, \
+						ULONG  cbPrevCab, \
+						void *pv)
+
+typedef int (__cdecl *PFNFCIFILEPLACED)(PCCAB pccab,
+					char *pszFile,
+					long  cbFile,
+					BOOL  fContinuation,
+					void *pv);
+#define FNFCIFILEPLACED(fn) int __cdecl fn(PCCAB pccab, \
+					   char *pszFile, \
+					   long  cbFile, \
+					   BOOL  fContinuation, \
+					   void *pv)
+
+typedef INT_PTR (__cdecl *PFNFCIGETOPENINFO)(char *pszName,
+					     USHORT *pdate,
+					     USHORT *ptime,
+					     USHORT *pattribs,
+					     int *err,
+					     void *pv);
+#define FNFCIGETOPENINFO(fn) INT_PTR __cdecl fn(char *pszName, \
+						USHORT *pdate, \
+						USHORT *ptime, \
+						USHORT *pattribs, \
+						int *err, \
+						void *pv)
+
+#define statusFile     0  /* Add File to Folder callback */
+#define statusFolder   1  /* Add Folder to Cabinet callback */
+#define statusCabinet  2  /* Write out a completed cabinet callback */
+
+typedef long (__cdecl *PFNFCISTATUS)(UINT typeStatus,
+				     ULONG cb1,
+				     ULONG cb2,
+				     void *pv);
+#define FNFCISTATUS(fn) long __cdecl fn(UINT typeStatus, \
+					ULONG  cb1, \
+					ULONG  cb2, \
+					void *pv)
+
+typedef BOOL (__cdecl *PFNFCIGETTEMPFILE)(char *pszTempName,
+					  int   cbTempName,
+					  void *pv);
+#define FNFCIGETTEMPFILE(fn) BOOL __cdecl fn(char *pszTempName, \
+                                             int   cbTempName, \
+                                             void *pv)
+
+/**********************************************************************/
+
+HFCI __cdecl FCICreate(PERF, PFNFCIFILEPLACED, PFNFCIALLOC, PFNFCIFREE,
+		       PFNFCIOPEN, PFNFCIREAD, PFNFCIWRITE, PFNFCICLOSE,
+		       PFNFCISEEK, PFNFCIDELETE, PFNFCIGETTEMPFILE, PCCAB,
+		       void *);
+BOOL __cdecl FCIAddFile(HFCI, char *, char *, BOOL, PFNFCIGETNEXTCABINET,
+			PFNFCISTATUS, PFNFCIGETOPENINFO, TCOMP);
+BOOL __cdecl FCIFlushCabinet(HFCI, BOOL, PFNFCIGETNEXTCABINET, PFNFCISTATUS);
+BOOL __cdecl FCIFlushFolder(HFCI, PFNFCIGETNEXTCABINET, PFNFCISTATUS);
+BOOL __cdecl FCIDestroy(HFCI hfci);
+
+/**********************************************************************/
+
+#include <poppack.h>
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif  /* __WINE_FCI_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/fdi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/fdi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/fdi.h	(revision 16410)
@@ -0,0 +1,291 @@
+/*
+ * Copyright (C) 2002 Patrik Stridvall
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_FDI_H
+#define __WINE_FDI_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+#include <pshpack4.h>
+
+#ifndef INCLUDED_TYPES_FCI_FDI
+#define INCLUDED_TYPES_FCI_FDI 1
+
+/***********************************************************************
+ * Common FCI/TDI declarations
+ */
+
+typedef unsigned long CHECKSUM;
+
+typedef unsigned long UOFF;
+typedef unsigned long COFF;
+
+/**********************************************************************/
+
+typedef struct {
+    int   erfOper;  /* FCI/FDI error code - see {FCI,FDI}ERROR_XXX for details. */
+    int   erfType;  /* Optional error value filled in by FCI/FDI. */
+    BOOL  fError;   /* TRUE => error present */
+} ERF, *PERF;
+
+/**********************************************************************/
+
+#define CB_MAX_CHUNK         32768U
+#define CB_MAX_DISK          0x7fffffffL
+#define CB_MAX_FILENAME      256
+#define CB_MAX_CABINET_NAME  256
+#define CB_MAX_CAB_PATH      256
+#define CB_MAX_DISK_NAME     256
+
+/**********************************************************************/
+
+typedef unsigned short TCOMP;
+
+#define tcompMASK_TYPE          0x000F  /* Mask for compression type */
+#define tcompTYPE_NONE          0x0000  /* No compression */
+#define tcompTYPE_MSZIP         0x0001  /* MSZIP */
+#define tcompTYPE_QUANTUM       0x0002  /* Quantum */
+#define tcompTYPE_LZX           0x0003  /* LZX */
+#define tcompBAD                0x000F  /* Unspecified compression type */
+
+#define tcompMASK_LZX_WINDOW    0x1F00  /* Mask for LZX Compression Memory */
+#define tcompLZX_WINDOW_LO      0x0F00  /* Lowest LZX Memory (15) */
+#define tcompLZX_WINDOW_HI      0x1500  /* Highest LZX Memory (21) */
+#define tcompSHIFT_LZX_WINDOW        8  /* Amount to shift over to get int */
+
+#define tcompMASK_QUANTUM_LEVEL 0x00F0  /* Mask for Quantum Compression Level */
+#define tcompQUANTUM_LEVEL_LO   0x0010  /* Lowest Quantum Level (1) */
+#define tcompQUANTUM_LEVEL_HI   0x0070  /* Highest Quantum Level (7) */
+#define tcompSHIFT_QUANTUM_LEVEL     4  /* Amount to shift over to get int */
+
+#define tcompMASK_QUANTUM_MEM   0x1F00  /* Mask for Quantum Compression Memory */
+#define tcompQUANTUM_MEM_LO     0x0A00  /* Lowest Quantum Memory (10) */
+#define tcompQUANTUM_MEM_HI     0x1500  /* Highest Quantum Memory (21) */
+#define tcompSHIFT_QUANTUM_MEM       8  /* Amount to shift over to get int */
+
+#define tcompMASK_RESERVED      0xE000  /* Reserved bits (high 3 bits) */
+
+/**********************************************************************/
+
+#define CompressionTypeFromTCOMP(tc) \
+    ((tc) & tcompMASK_TYPE)
+
+#define CompressionLevelFromTCOMP(tc) \
+    (((tc) & tcompMASK_QUANTUM_LEVEL) >> tcompSHIFT_QUANTUM_LEVEL)
+
+#define CompressionMemoryFromTCOMP(tc) \
+    (((tc) & tcompMASK_QUANTUM_MEM) >> tcompSHIFT_QUANTUM_MEM)
+
+#define TCOMPfromTypeLevelMemory(t, l, m) \
+    (((m) << tcompSHIFT_QUANTUM_MEM  ) | \
+     ((l) << tcompSHIFT_QUANTUM_LEVEL) | \
+     ( t                             ))
+
+#define LZXCompressionWindowFromTCOMP(tc) \
+    (((tc) & tcompMASK_LZX_WINDOW) >> tcompSHIFT_LZX_WINDOW)
+
+#define TCOMPfromLZXWindow(w) \
+    (((w) << tcompSHIFT_LZX_WINDOW) | \
+     ( tcompTYPE_LZX              ))
+
+#endif /* !defined(INCLUDED_TYPES_FCI_FDI) */
+
+/***********************************************************************
+ * FDI declarations
+ */
+
+typedef enum {
+    FDIERROR_NONE,
+    FDIERROR_CABINET_NOT_FOUND,
+    FDIERROR_NOT_A_CABINET,
+    FDIERROR_UNKNOWN_CABINET_VERSION,
+    FDIERROR_CORRUPT_CABINET,
+    FDIERROR_ALLOC_FAIL,
+    FDIERROR_BAD_COMPR_TYPE,
+    FDIERROR_MDI_FAIL,
+    FDIERROR_TARGET_FILE,
+    FDIERROR_RESERVE_MISMATCH,
+    FDIERROR_WRONG_CABINET,
+    FDIERROR_USER_ABORT,
+} FDIERROR;
+
+/**********************************************************************/
+
+#ifndef _A_NAME_IS_UTF
+#define _A_NAME_IS_UTF  0x80
+#endif
+
+#ifndef _A_EXEC
+#define _A_EXEC         0x40
+#endif
+
+/**********************************************************************/
+
+typedef void *HFDI;
+
+/**********************************************************************/
+
+typedef struct {
+    long    cbCabinet;  /* Total length of cabinet file */
+    USHORT  cFolders;   /* Count of folders in cabinet */
+    USHORT  cFiles;     /* Count of files in cabinet */
+    USHORT  setID;      /* Cabinet set ID */
+    USHORT  iCabinet;   /* Cabinet number in set (0 based) */
+    BOOL    fReserve;   /* TRUE => RESERVE present in cabinet */
+    BOOL    hasprev;    /* TRUE => Cabinet is chained prev */
+    BOOL    hasnext;    /* TRUE => Cabinet is chained next */
+} FDICABINETINFO, *PFDICABINETINFO; /* pfdici */
+
+/**********************************************************************/
+
+typedef enum {
+    fdidtNEW_CABINET,  /* New cabinet */
+    fdidtNEW_FOLDER,   /* New folder */
+    fdidtDECRYPT,      /* Decrypt a data block */
+} FDIDECRYPTTYPE;
+
+/**********************************************************************/
+
+typedef struct {
+    FDIDECRYPTTYPE fdidt; /* Command type (selects union below) */
+
+    void *pvUser; /* Decryption context */
+
+    union {
+        struct {                      /* fdidtNEW_CABINET */
+	    void   *pHeaderReserve;   /* RESERVE section from CFHEADER */
+	    USHORT  cbHeaderReserve;  /* Size of pHeaderReserve */
+	    USHORT  setID;            /* Cabinet set ID */
+	    int     iCabinet;         /* Cabinet number in set (0 based) */
+        } cabinet;
+
+        struct {                      /* fdidtNEW_FOLDER */
+	    void   *pFolderReserve;   /* RESERVE section from CFFOLDER */
+	    USHORT  cbFolderReserve;  /* Size of pFolderReserve */
+	    USHORT  iFolder;          /* Folder number in cabinet (0 based) */
+        } folder;
+
+        struct {                      /* fdidtDECRYPT */
+	    void   *pDataReserve;     /* RESERVE section from CFDATA */
+	    USHORT  cbDataReserve;    /* Size of pDataReserve */
+	    void   *pbData;           /* Data buffer */
+	    USHORT  cbData;           /* Size of data buffer */
+	    BOOL    fSplit;           /* TRUE if this is a split data block */
+	    USHORT  cbPartial;        /* 0 if this is not a split block, or
+				       * the first piece of a split block;
+                                       * Greater than 0 if this is the
+                                       * second piece of a split block.
+                                       */
+        } decrypt;
+    } DUMMYUNIONNAME;
+} FDIDECRYPT, *PFDIDECRYPT;
+
+/**********************************************************************/
+
+typedef void * (__cdecl *PFNALLOC)(ULONG cb);
+#define FNALLOC(fn) void * __cdecl fn(ULONG cb)
+
+typedef void (__cdecl *PFNFREE)(void *pv);
+#define FNFREE(fn) void __cdecl fn(void *pv)
+
+typedef INT_PTR (__cdecl *PFNOPEN) (char *pszFile, int oflag, int pmode);
+#define FNOPEN(fn) INT_PTR __cdecl fn(char *pszFile, int oflag, int pmode)
+
+typedef UINT (__cdecl *PFNREAD) (INT_PTR hf, void *pv, UINT cb);
+#define FNREAD(fn) UINT __cdecl fn(INT_PTR hf, void *pv, UINT cb)
+
+typedef UINT (__cdecl *PFNWRITE)(INT_PTR hf, void *pv, UINT cb);
+#define FNWRITE(fn) UINT __cdecl fn(INT_PTR hf, void *pv, UINT cb)
+
+typedef int  (__cdecl *PFNCLOSE)(INT_PTR hf);
+#define FNCLOSE(fn) int __cdecl fn(INT_PTR hf)
+
+typedef long (__cdecl *PFNSEEK) (INT_PTR hf, long dist, int seektype);
+#define FNSEEK(fn) long __cdecl fn(INT_PTR hf, long dist, int seektype)
+
+typedef int (__cdecl *PFNFDIDECRYPT)(PFDIDECRYPT pfdid);
+#define FNFDIDECRYPT(fn) int __cdecl fn(PFDIDECRYPT pfdid)
+
+typedef struct {
+    long  cb;
+    char *psz1;
+    char *psz2;
+    char *psz3;  /* Points to a 256 character buffer */
+    void *pv;    /* Value for client */
+
+    INT_PTR hf;
+
+    USHORT date;
+    USHORT time;
+    USHORT attribs;
+
+    USHORT setID;     /* Cabinet set ID */
+    USHORT iCabinet;  /* Cabinet number (0-based) */
+    USHORT iFolder;   /* Folder number (0-based) */
+
+    FDIERROR fdie;
+} FDINOTIFICATION, *PFDINOTIFICATION;
+
+typedef enum {
+    fdintCABINET_INFO,     /* General information about cabinet */
+    fdintPARTIAL_FILE,     /* First file in cabinet is continuation */
+    fdintCOPY_FILE,        /* File to be copied */
+    fdintCLOSE_FILE_INFO,  /* Close the file, set relevant info */
+    fdintNEXT_CABINET,     /* File continued to next cabinet */
+    fdintENUMERATE,        /* Enumeration status */
+} FDINOTIFICATIONTYPE;
+
+typedef INT_PTR (__cdecl *PFNFDINOTIFY)(FDINOTIFICATIONTYPE fdint,
+					PFDINOTIFICATION  pfdin);
+#define FNFDINOTIFY(fn) INT_PTR __cdecl fn(FDINOTIFICATIONTYPE fdint, \
+					   PFDINOTIFICATION pfdin)
+
+#include <pshpack1.h>
+
+typedef struct {
+    char ach[2];  /* Set to { '*', '\0' } */
+    long cbFile;  /* Required spill file size */
+} FDISPILLFILE, *PFDISPILLFILE;
+
+#include <poppack.h>
+
+#define cpuUNKNOWN (-1)  /* FDI does detection */
+#define cpu80286   (0)   /* '286 opcodes only */
+#define cpu80386   (1)   /* '386 opcodes used */
+
+/**********************************************************************/
+
+HFDI __cdecl FDICreate(PFNALLOC, PFNFREE, PFNOPEN, PFNREAD, PFNWRITE,
+		       PFNCLOSE, PFNSEEK, int, PERF);
+BOOL __cdecl FDIIsCabinet(HFDI, INT_PTR, PFDICABINETINFO);
+BOOL __cdecl FDICopy(HFDI, char *, char *, int, PFNFDINOTIFY,
+		     PFNFDIDECRYPT, void *pvUser);
+BOOL __cdecl FDIDestroy(HFDI);
+BOOL __cdecl FDITruncateCabinet(HFDI, char *, USHORT);
+
+/**********************************************************************/
+
+#include <poppack.h>
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif  /* __WINE_FDI_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/fusion.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/fusion.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/fusion.idl	(revision 16410)
@@ -0,0 +1,354 @@
+/*
+ * Copyright 2008 James Hawkins
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "objidl.idl";
+
+interface IAssemblyCache;
+interface IAssemblyCacheItem;
+interface IAssemblyEnum;
+interface IAssemblyName;
+
+typedef enum
+{
+    ASM_CACHE_ZAP       = 0x1,
+    ASM_CACHE_GAC       = 0x2,
+    ASM_CACHE_DOWNLOAD  = 0x4,
+    ASM_CACHE_ROOT      = 0x8
+} ASM_CACHE_FLAGS;
+
+typedef enum
+{
+    peNone      = 0x00000000,
+    peMSIL      = 0x00000001,
+    peI386      = 0x00000002,
+    peIA64      = 0x00000003,
+    peAMD64     = 0x00000004,
+    peInvalid   = 0xffffffff
+} PEKIND;
+
+typedef enum _tagAssemblyComparisonResult
+{
+    ACR_Unknown,
+    ACR_EquivalentFullMatch,
+    ACR_EquivalentWeakNamed,
+    ACR_EquivalentFXUnified,
+    ACR_EquivalentUnified,
+    ACR_NonEquivalentVersion,
+    ACR_NonEquivalent,
+    ACR_EquivalentPartialMatch,
+    ACR_EquivalentPartialWeakNamed,
+    ACR_EquivalentPartialUnified,
+    ACR_EquivalentPartialFXUnified,
+    ACR_NonEquivalentPartialVersion
+} AssemblyComparisonResult;
+
+[
+    local,
+    object,
+    uuid(e707dcde-d1cd-11d2-bab9-00c04f8eceae),
+    pointer_default(unique)
+]
+interface IAssemblyCache : IUnknown
+{
+    typedef struct _FUSION_INSTALL_REFERENCE_
+    {
+        DWORD cbSize;
+        DWORD dwFlags;
+        GUID guidScheme;
+        LPCWSTR szIdentifier;
+        LPCWSTR szNonCannonicalData;
+    } FUSION_INSTALL_REFERENCE, *LPFUSION_INSTALL_REFERENCE;
+
+    typedef const FUSION_INSTALL_REFERENCE  *LPCFUSION_INSTALL_REFERENCE;
+
+    typedef struct _ASSEMBLY_INFO
+    {
+        ULONG cbAssemblyInfo;
+        DWORD dwAssemblyFlags;
+        ULARGE_INTEGER uliAssemblySizeInKB;
+        LPWSTR pszCurrentAssemblyPathBuf;
+        ULONG cchBuf;
+    } ASSEMBLY_INFO;
+
+    cpp_quote("#define IASSEMBLYCACHE_INSTALL_FLAG_REFRESH       0x00000001")
+    cpp_quote("#define IASSEMBLYCACHE_INSTALL_FLAG_FORCE_REFRESH 0x00000002")
+
+    cpp_quote("#define IASSEMBLYCACHE_UNINSTALL_DISPOSITION_UNINSTALLED 1")
+    cpp_quote("#define IASSEMBLYCACHE_UNINSTALL_DISPOSITION_STILL_IN_USE 2")
+    cpp_quote("#define IASSEMBLYCACHE_UNINSTALL_DISPOSITION_ALREADY_UNINSTALLED 3")
+    cpp_quote("#define IASSEMBLYCACHE_UNINSTALL_DISPOSITION_DELETE_PENDING 4")
+    cpp_quote("#define IASSEMBLYCACHE_UNINSTALL_DISPOSITION_HAS_INSTALL_REFERENCES 5")
+    cpp_quote("#define IASSEMBLYCACHE_UNINSTALL_DISPOSITION_REFERENCE_NOT_FOUND 6")
+
+    cpp_quote("#define QUERYASMINFO_FLAG_VALIDATE   0x00000001")
+    cpp_quote("#define QUERYASMINFO_FLAG_GETSIZE    0x00000002")
+
+    cpp_quote("#define ASSEMBLYINFO_FLAG_INSTALLED       0x00000001")
+    cpp_quote("#define ASSEMBLYINFO_FLAG_PAYLOADRESIDENT 0x00000002")
+
+    HRESULT UninstallAssembly(
+        [in] DWORD dwFlags,
+        [in] LPCWSTR pszAssemblyName,
+        [in] LPCFUSION_INSTALL_REFERENCE pRefData,
+        [out, optional] ULONG *pulDisposition);
+
+    HRESULT QueryAssemblyInfo(
+        [in] DWORD dwFlags,
+        [in] LPCWSTR pszAssemblyName,
+        [in, out] ASSEMBLY_INFO *pAsmInfo);
+
+    HRESULT CreateAssemblyCacheItem(
+        [in] DWORD dwFlags,
+        [in] PVOID pvReserved,
+        [out] IAssemblyCacheItem **ppAsmItem,
+        [in, optional] LPCWSTR pszAssemblyName);
+
+    HRESULT CreateAssemblyScavenger([out] IUnknown **ppUnkReserved);
+
+    HRESULT InstallAssembly(
+        [in] DWORD dwFlags,
+        [in] LPCWSTR pszManifestFilePath,
+        [in] LPCFUSION_INSTALL_REFERENCE pRefData);
+}
+
+[
+    local,
+    object,
+    uuid(9e3aaeb4-d1cd-11d2-bab9-00c04f8eceae),
+    pointer_default(unique)
+]
+interface IAssemblyCacheItem : IUnknown
+{
+    cpp_quote("#define STREAM_FORMAT_COMPLIB_MODULE    0")
+    cpp_quote("#define STREAM_FORMAT_COMPLIB_MANIFEST  1")
+    cpp_quote("#define STREAM_FORMAT_WIN32_MODULE      2")
+    cpp_quote("#define STREAM_FORMAT_WIN32_MANIFEST    4")
+
+    cpp_quote("#define IASSEMBLYCACHEITEM_COMMIT_FLAG_REFRESH       0x00000001")
+    cpp_quote("#define IASSEMBLYCACHEITEM_COMMIT_FLAG_FORCE_REFRESH 0x00000002")
+
+    cpp_quote("#define IASSEMBLYCACHEITEM_COMMIT_DISPOSITION_INSTALLED 1")
+    cpp_quote("#define IASSEMBLYCACHEITEM_COMMIT_DISPOSITION_REFRESHED 2")
+    cpp_quote("#define IASSEMBLYCACHEITEM_COMMIT_DISPOSITION_ALREADY_INSTALLED 3")
+
+    HRESULT CreateStream(
+        [in] DWORD dwFlags,
+        [in] LPCWSTR pszStreamName,
+        [in] DWORD dwFormat,
+        [in] DWORD dwFormatFlags,
+        [out] IStream **ppIStream,
+        [in, optional] ULARGE_INTEGER *puliMaxSize);
+
+    HRESULT Commit(
+        [in] DWORD dwFlags,
+        [out, optional] ULONG *pulDisposition);
+
+    HRESULT AbortItem();
+}
+
+[
+    local,
+    object,
+    uuid(CD193BC0-B4BC-11d2-9833-00C04FC31D2E),
+    pointer_default(unique)
+]
+interface IAssemblyName: IUnknown
+{
+    typedef [unique] IAssemblyName *LPASSEMBLYNAME;
+
+    typedef enum
+    {
+        CANOF_PARSE_DISPLAY_NAME = 0x1,
+        CANOF_SET_DEFAULT_VALUES = 0x2,
+        CANOF_VERIFY_FRIEND_ASSEMBLYNAME = 0x4,
+        CANOF_PARSE_FRIEND_DISPLAY_NAME = CANOF_PARSE_DISPLAY_NAME |
+                                          CANOF_VERIFY_FRIEND_ASSEMBLYNAME
+    } CREATE_ASM_NAME_OBJ_FLAGS;
+
+    typedef enum
+    {
+        ASM_NAME_PUBLIC_KEY = 0,
+        ASM_NAME_PUBLIC_KEY_TOKEN,
+        ASM_NAME_HASH_VALUE,
+        ASM_NAME_NAME,
+        ASM_NAME_MAJOR_VERSION,
+        ASM_NAME_MINOR_VERSION,
+        ASM_NAME_BUILD_NUMBER,
+        ASM_NAME_REVISION_NUMBER,
+        ASM_NAME_CULTURE,
+        ASM_NAME_PROCESSOR_ID_ARRAY,
+        ASM_NAME_OSINFO_ARRAY,
+        ASM_NAME_HASH_ALGID,
+        ASM_NAME_ALIAS,
+        ASM_NAME_CODEBASE_URL,
+        ASM_NAME_CODEBASE_LASTMOD,
+        ASM_NAME_NULL_PUBLIC_KEY,
+        ASM_NAME_NULL_PUBLIC_KEY_TOKEN,
+        ASM_NAME_CUSTOM,
+        ASM_NAME_NULL_CUSTOM,
+        ASM_NAME_MVID,
+        ASM_NAME_FILE_MAJOR_VERSION,
+        ASM_NAME_FILE_MINOR_VERSION,
+        ASM_NAME_FILE_BUILD_NUMBER,
+        ASM_NAME_FILE_REVISION_NUMBER,
+        ASM_NAME_RETARGET,
+        ASM_NAME_SIGNATURE_BLOB,
+        ASM_NAME_CONFIG_MASK,
+        ASM_NAME_ARCHITECTURE,
+        ASM_NAME_MAX_PARAMS
+    } ASM_NAME;
+
+    typedef enum
+    {
+        ASM_DISPLAYF_VERSION = 0x1,
+        ASM_DISPLAYF_CULTURE = 0x2,
+        ASM_DISPLAYF_PUBLIC_KEY_TOKEN = 0x4,
+        ASM_DISPLAYF_PUBLIC_KEY = 0x8,
+        ASM_DISPLAYF_CUSTOM = 0x10,
+        ASM_DISPLAYF_PROCESSORARCHITECTURE = 0x20,
+        ASM_DISPLAYF_LANGUAGEID = 0x40,
+        ASM_DISPLAYF_RETARGET = 0x80,
+        ASM_DISPLAYF_CONFIG_MASK = 0x100,
+        ASM_DISPLAYF_MVID = 0x200,
+
+        ASM_DISPLAYF_FULL = ASM_DISPLAYF_VERSION |
+                            ASM_DISPLAYF_CULTURE |
+                            ASM_DISPLAYF_PUBLIC_KEY_TOKEN |
+                            ASM_DISPLAYF_RETARGET |
+                            ASM_DISPLAYF_PROCESSORARCHITECTURE,
+    } ASM_DISPLAY_FLAGS;
+
+    typedef enum
+    {
+        ASM_CMPF_NAME               = 0x1,
+        ASM_CMPF_MAJOR_VERSION      = 0x2,
+        ASM_CMPF_MINOR_VERSION      = 0x4,
+        ASM_CMPF_BUILD_NUMBER       = 0x8,
+        ASM_CMPF_REVISION_NUMBER    = 0x10,
+        ASM_CMPF_VERSION = ASM_CMPF_MAJOR_VERSION |
+                           ASM_CMPF_MINOR_VERSION |
+                           ASM_CMPF_BUILD_NUMBER |
+                           ASM_CMPF_REVISION_NUMBER,
+        ASM_CMPF_PUBLIC_KEY_TOKEN   = 0x20,
+        ASM_CMPF_CULTURE            = 0x40,
+        ASM_CMPF_CUSTOM             = 0x80,
+        ASM_CMPF_DEFAULT            = 0x100,
+        ASM_CMPF_RETARGET           = 0x200,
+        ASM_CMPF_ARCHITECTURE       = 0x400,
+        ASM_CMPF_CONFIG_MASK        = 0x800,
+        ASM_CMPF_MVID               = 0x1000,
+        ASM_CMPF_SIGNATURE          = 0x2000,
+        ASM_CMPF_IL_ALL = ASM_CMPF_NAME |
+                          ASM_CMPF_VERSION |
+                          ASM_CMPF_PUBLIC_KEY_TOKEN |
+                          ASM_CMPF_CULTURE,
+        ASM_CMPF_IL_NO_VERSION = ASM_CMPF_NAME |
+                                 ASM_CMPF_PUBLIC_KEY_TOKEN |
+                                 ASM_CMPF_CULTURE
+    } ASM_CMP_FLAGS;
+
+    HRESULT SetProperty(
+        [in] DWORD PropertyId,
+        [in] LPVOID pvProperty,
+        [in] DWORD cbProperty);
+
+    HRESULT GetProperty(
+        [in] DWORD PropertyId,
+        [out] LPVOID pvProperty,
+        [in, out] LPDWORD pcbProperty);
+
+    HRESULT Finalize();
+
+    HRESULT GetDisplayName(
+        [out] LPOLESTR szDisplayName,
+        [in, out] LPDWORD pccDisplayName,
+        [in] DWORD dwDisplayFlags);
+
+    HRESULT Reserved(
+        [in] REFIID refIID,
+        [in] IUnknown *pUnkReserved1,
+        [in] IUnknown *pUnkReserved2,
+        [in] LPCOLESTR szReserved,
+        [in] LONGLONG llReserved,
+        [in] LPVOID pvReserved,
+        [in] DWORD cbReserved,
+        [out] LPVOID *ppReserved);
+
+    HRESULT GetName(
+        [in, out] LPDWORD lpcwBuffer,
+        [out] WCHAR *pwzName);
+
+    HRESULT GetVersion(
+        [out] LPDWORD pdwVersionHi,
+        [out] LPDWORD pdwVersionLow);
+
+    HRESULT IsEqual(
+        [in] IAssemblyName *pName,
+        [in] DWORD dwCmpFlags);
+
+    HRESULT Clone([out] IAssemblyName **pName);
+}
+
+[
+    local,
+    object,
+    uuid(21b8916c-f28e-11d2-a473-00c04f8ef448),
+    pointer_default(unique)
+]
+interface IAssemblyEnum : IUnknown
+{
+    HRESULT GetNextAssembly(
+        [in] LPVOID pvReserved,
+        [out] IAssemblyName **ppName,
+        [in] DWORD dwFlags);
+
+    HRESULT Reset(void);
+
+    HRESULT Clone([out] IAssemblyEnum **ppEnum);
+}
+
+[
+    local,
+    object,
+    uuid(582dac66-e678-449f-aba6-6faaec8a9394),
+    pointer_default(unique)
+]
+interface IInstallReferenceItem : IUnknown
+{
+
+}
+
+[
+    local,
+    object,
+    uuid(56b1a988-7c0c-4aa2-8639-c3eb5a90226f),
+    pointer_default(unique)
+]
+interface IInstallReferenceEnum : IUnknown
+{
+
+}
+
+cpp_quote("HRESULT WINAPI ClearDownloadCache(void);")
+cpp_quote("HRESULT WINAPI CompareAssemblyIdentity(LPCWSTR,BOOL,LPCWSTR,BOOL,BOOL*,AssemblyComparisonResult*);")
+cpp_quote("HRESULT WINAPI CreateAssemblyCache(IAssemblyCache**,DWORD);")
+cpp_quote("HRESULT WINAPI CreateAssemblyEnum(IAssemblyEnum**,IUnknown*,IAssemblyName*,DWORD,LPVOID);")
+cpp_quote("HRESULT WINAPI CreateAssemblyNameObject(LPASSEMBLYNAME*,LPCWSTR,DWORD,LPVOID);")
+cpp_quote("HRESULT WINAPI CreateInstallReferenceEnum(IInstallReferenceEnum**,IAssemblyName*,DWORD,LPVOID);")
+cpp_quote("HRESULT WINAPI GetAssemblyIdentityFromFile(LPCWSTR,REFIID,IUnknown**);")
+cpp_quote("HRESULT WINAPI GetCachePath(ASM_CACHE_FLAGS,LPWSTR,PDWORD);")
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdiplus.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdiplus.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdiplus.h	(revision 16410)
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2007 Google (Evan Stade)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _GDIPLUS_H
+#define _GDIPLUS_H
+
+#ifdef __cplusplus
+
+namespace Gdiplus
+{
+    namespace DllExports
+    {
+#include "gdiplusmem.h"
+    };
+
+#include "gdiplustypes.h"
+#include "gdiplusenums.h"
+#include "gdiplusinit.h"
+#include "gdipluspixelformats.h"
+#include "gdiplusmetaheader.h"
+#include "gdiplusimaging.h"
+#include "gdipluscolor.h"
+#include "gdipluscolormatrix.h"
+#include "gdiplusgpstubs.h"
+
+    namespace DllExports
+    {
+#include "gdiplusflat.h"
+    };
+};
+
+#else /* end c++ includes */
+
+#include "gdiplusmem.h"
+
+#include "gdiplustypes.h"
+#include "gdiplusenums.h"
+#include "gdiplusinit.h"
+#include "gdipluspixelformats.h"
+#include "gdiplusmetaheader.h"
+#include "gdiplusimaging.h"
+#include "gdipluscolor.h"
+#include "gdipluscolormatrix.h"
+#include "gdiplusgpstubs.h"
+
+#include "gdiplusflat.h"
+
+#endif /* end c includes */
+
+#endif /* _GDIPLUS_H_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdipluscolor.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdipluscolor.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdipluscolor.h	(revision 16410)
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2808 Google (Lei Zhang)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _GDIPLUSCOLOR_H
+#define _GDIPLUSCOLOR_H
+
+enum ColorChannelFlags
+{
+    ColorChannelFlagsC,
+    ColorChannelFlagsM,
+    ColorChannelFlagsY,
+    ColorChannelFlagsK,
+    ColorChannelFlagsLast
+};
+
+#ifdef __cplusplus
+
+/* FIXME: missing the methods. */
+class Color
+{
+protected:
+    ARGB Argb;
+};
+
+#else /* end of c++ typedefs */
+
+typedef struct Color
+{
+    ARGB Argb;
+} Color;
+
+typedef enum ColorChannelFlags ColorChannelFlags;
+
+#endif  /* end of c typedefs */
+
+#endif  /* _GDIPLUSCOLOR_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdipluscolormatrix.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdipluscolormatrix.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdipluscolormatrix.h	(revision 16410)
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2007 Google (Evan Stade)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _GDIPLUSCOLORMATRIX_H
+#define _GDIPLUSCOLORMATRIX_H
+
+struct ColorMatrix
+{
+    REAL m[5][5];
+};
+
+enum ColorMatrixFlags
+{
+    ColorMatrixFlagsDefault    = 0,
+    ColorMatrixFlagsSkipGrays  = 1,
+    ColorMatrixFlagsAltGray    = 2
+};
+
+enum ColorAdjustType
+{
+    ColorAdjustTypeDefault,
+    ColorAdjustTypeBitmap,
+    ColorAdjustTypeBrush,
+    ColorAdjustTypePen,
+    ColorAdjustTypeText,
+    ColorAdjustTypeCount,
+    ColorAdjustTypeAny
+};
+
+struct ColorMap
+{
+    Color oldColor;
+    Color newCOlor;
+};
+
+#ifndef __cplusplus
+
+typedef enum ColorAdjustType ColorAdjustType;
+typedef enum ColorMatrixFlags ColorMatrixFlags;
+typedef struct ColorMatrix ColorMatrix;
+typedef struct ColorMap ColorMap;
+
+#endif  /* end of c typedefs */
+
+#endif  /* _GDIPLUSCOLORMATRIX_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdiplusenums.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdiplusenums.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdiplusenums.h	(revision 16410)
@@ -0,0 +1,401 @@
+/*
+ * Copyright (C) 2007 Google (Evan Stade)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _GDIPLUSENUMS_H
+#define _GDIPLUSENUMS_H
+
+typedef UINT GraphicsState;
+typedef UINT GraphicsContainer;
+
+enum Unit
+{
+    UnitWorld       = 0,
+    UnitDisplay     = 1,
+    UnitPixel       = 2,
+    UnitPoint       = 3,
+    UnitInch        = 4,
+    UnitDocument    = 5,
+    UnitMillimeter  = 6
+};
+
+enum BrushType
+{
+   BrushTypeSolidColor       = 0,
+   BrushTypeHatchFill        = 1,
+   BrushTypeTextureFill      = 2,
+   BrushTypePathGradient     = 3,
+   BrushTypeLinearGradient   = 4
+};
+
+enum FillMode
+{
+    FillModeAlternate   = 0,
+    FillModeWinding     = 1
+};
+
+enum LineCap
+{
+    LineCapFlat             = 0x00,
+    LineCapSquare           = 0x01,
+    LineCapRound            = 0x02,
+    LineCapTriangle         = 0x03,
+
+    LineCapNoAnchor         = 0x10,
+    LineCapSquareAnchor     = 0x11,
+    LineCapRoundAnchor      = 0x12,
+    LineCapDiamondAnchor    = 0x13,
+    LineCapArrowAnchor      = 0x14,
+
+    LineCapCustom           = 0xff,
+    LineCapAnchorMask       = 0xf0
+};
+
+enum PathPointType{
+    PathPointTypeStart          = 0,    /* start of a figure */
+    PathPointTypeLine           = 1,
+    PathPointTypeBezier         = 3,
+    PathPointTypePathTypeMask   = 7,
+    PathPointTypePathDashMode   = 16,   /* not used */
+    PathPointTypePathMarker     = 32,
+    PathPointTypeCloseSubpath   = 128,  /* end of a closed figure */
+    PathPointTypeBezier3        = 3
+};
+
+enum PenType
+{
+   PenTypeSolidColor       = BrushTypeSolidColor,
+   PenTypeHatchFill        = BrushTypeHatchFill,
+   PenTypeTextureFill      = BrushTypeTextureFill,
+   PenTypePathGradient     = BrushTypePathGradient,
+   PenTypeLinearGradient   = BrushTypeLinearGradient,
+   PenTypeUnknown          = -1
+};
+
+enum LineJoin
+{
+    LineJoinMiter           = 0,
+    LineJoinBevel           = 1,
+    LineJoinRound           = 2,
+    LineJoinMiterClipped    = 3
+};
+
+enum QualityMode
+{
+    QualityModeInvalid  = -1,
+    QualityModeDefault  = 0,
+    QualityModeLow      = 1,
+    QualityModeHigh     = 2
+};
+
+enum SmoothingMode
+{
+    SmoothingModeInvalid     = QualityModeInvalid,
+    SmoothingModeDefault     = QualityModeDefault,
+    SmoothingModeHighSpeed   = QualityModeLow,
+    SmoothingModeHighQuality = QualityModeHigh,
+    SmoothingModeNone,
+    SmoothingModeAntiAlias
+};
+
+enum CompositingQuality
+{
+    CompositingQualityInvalid          = QualityModeInvalid,
+    CompositingQualityDefault          = QualityModeDefault,
+    CompositingQualityHighSpeed        = QualityModeLow,
+    CompositingQualityHighQuality      = QualityModeHigh,
+    CompositingQualityGammaCorrected,
+    CompositingQualityAssumeLinear
+};
+
+enum InterpolationMode
+{
+    InterpolationModeInvalid        = QualityModeInvalid,
+    InterpolationModeDefault        = QualityModeDefault,
+    InterpolationModeLowQuality     = QualityModeLow,
+    InterpolationModeHighQuality    = QualityModeHigh,
+    InterpolationModeBilinear,
+    InterpolationModeBicubic,
+    InterpolationModeNearestNeighbor,
+    InterpolationModeHighQualityBilinear,
+    InterpolationModeHighQualityBicubic
+};
+
+enum PenAlignment
+{
+    PenAlignmentCenter   = 0,
+    PenAlignmentInset    = 1
+};
+
+enum PixelOffsetMode
+{
+    PixelOffsetModeInvalid     = QualityModeInvalid,
+    PixelOffsetModeDefault     = QualityModeDefault,
+    PixelOffsetModeHighSpeed   = QualityModeLow,
+    PixelOffsetModeHighQuality = QualityModeHigh,
+    PixelOffsetModeNone,
+    PixelOffsetModeHalf
+};
+
+enum DashCap
+{
+    DashCapFlat     = 0,
+    DashCapRound    = 2,
+    DashCapTriangle = 3
+};
+
+enum DashStyle
+{
+    DashStyleSolid,
+    DashStyleDash,
+    DashStyleDot,
+    DashStyleDashDot,
+    DashStyleDashDotDot,
+    DashStyleCustom
+};
+
+enum MatrixOrder
+{
+    MatrixOrderPrepend = 0,
+    MatrixOrderAppend  = 1
+};
+
+enum ImageType
+{
+    ImageTypeUnknown,
+    ImageTypeBitmap,
+    ImageTypeMetafile
+};
+
+enum WrapMode
+{
+    WrapModeTile,
+    WrapModeTileFlipX,
+    WrapModeTileFlipY,
+    WrapModeTileFlipXY,
+    WrapModeClamp
+};
+
+enum MetafileType
+{
+    MetafileTypeInvalid,
+    MetafileTypeWmf,
+    MetafileTypeWmfPlaceable,
+    MetafileTypeEmf,
+    MetafileTypeEmfPlusOnly,
+    MetafileTypeEmfPlusDual
+};
+
+enum LinearGradientMode
+{
+    LinearGradientModeHorizontal,
+    LinearGradientModeVertical,
+    LinearGradientModeForwardDiagonal,
+    LinearGradientModeBackwardDiagonal
+};
+
+enum EmfType
+{
+    EmfTypeEmfOnly     = MetafileTypeEmf,
+    EmfTypeEmfPlusOnly = MetafileTypeEmfPlusOnly,
+    EmfTypeEmfPlusDual = MetafileTypeEmfPlusDual
+};
+
+enum CompositingMode
+{
+    CompositingModeSourceOver,
+    CompositingModeSourceCopy
+};
+
+enum TextRenderingHint
+{
+    TextRenderingHintSystemDefault = 0,
+    TextRenderingHintSingleBitPerPixelGridFit,
+    TextRenderingHintSingleBitPerPixel,
+    TextRenderingHintAntiAliasGridFit,
+    TextRenderingHintAntiAlias,
+    TextRenderingHintClearTypeGridFit
+};
+
+enum StringAlignment
+{
+    StringAlignmentNear    = 0,
+    StringAlignmentCenter  = 1,
+    StringAlignmentFar     = 2
+};
+
+enum  StringDigitSubstitute
+{
+    StringDigitSubstituteUser        = 0,
+    StringDigitSubstituteNone        = 1,
+    StringDigitSubstituteNational    = 2,
+    StringDigitSubstituteTraditional = 3
+};
+
+enum StringFormatFlags
+{
+    StringFormatFlagsDirectionRightToLeft  = 0x00000001,
+    StringFormatFlagsDirectionVertical     = 0x00000002,
+    StringFormatFlagsNoFitBlackBox         = 0x00000004,
+    StringFormatFlagsDisplayFormatControl  = 0x00000020,
+    StringFormatFlagsNoFontFallback        = 0x00000400,
+    StringFormatFlagsMeasureTrailingSpaces = 0x00000800,
+    StringFormatFlagsNoWrap                = 0x00001000,
+    StringFormatFlagsLineLimit             = 0x00002000,
+    StringFormatFlagsNoClip                = 0x00004000
+};
+
+enum StringTrimming
+{
+    StringTrimmingNone                 = 0,
+    StringTrimmingCharacter            = 1,
+    StringTrimmingWord                 = 2,
+    StringTrimmingEllipsisCharacter    = 3,
+    StringTrimmingEllipsisWord         = 4,
+    StringTrimmingEllipsisPath         = 5
+};
+
+enum FontStyle
+{
+    FontStyleRegular    = 0,
+    FontStyleBold       = 1,
+    FontStyleItalic     = 2,
+    FontStyleBoldItalic = 3,
+    FontStyleUnderline  = 4,
+    FontStyleStrikeout  = 8
+};
+
+enum HotkeyPrefix
+{
+    HotkeyPrefixNone   = 0,
+    HotkeyPrefixShow   = 1,
+    HotkeyPrefixHide   = 2
+};
+
+enum ImageCodecFlags
+{
+    ImageCodecFlagsEncoder          = 1,
+    ImageCodecFlagsDecoder          = 2,
+    ImageCodecFlagsSupportBitmap    = 4,
+    ImageCodecFlagsSupportVector    = 8,
+    ImageCodecFlagsSeekableEncode   = 16,
+    ImageCodecFlagsBlockingDecode   = 32,
+    ImageCodecFlagsBuiltin          = 65536,
+    ImageCodecFlagsSystem           = 131072,
+    ImageCodecFlagsUser             = 262144
+};
+
+enum ImageFlags
+{
+    ImageFlagsNone              = 0,
+    ImageFlagsScalable          = 0x0001,
+    ImageFlagsHasAlpha          = 0x0002,
+    ImageFlagsHasTranslucent    = 0x0004,
+    ImageFlagsPartiallyScalable = 0x0008,
+    ImageFlagsColorSpaceRGB     = 0x0010,
+    ImageFlagsColorSpaceCMYK    = 0x0020,
+    ImageFlagsColorSpaceGRAY    = 0x0040,
+    ImageFlagsColorSpaceYCBCR   = 0x0080,
+    ImageFlagsColorSpaceYCCK    = 0x0100,
+    ImageFlagsHasRealDPI        = 0x1000,
+    ImageFlagsHasRealPixelSize  = 0x2000,
+    ImageFlagsReadOnly          = 0x00010000,
+    ImageFlagsCaching           = 0x00020000
+};
+
+enum CombineMode
+{
+    CombineModeReplace,
+    CombineModeIntersect,
+    CombineModeUnion,
+    CombineModeXor,
+    CombineModeExclude,
+    CombineModeComplement
+};
+
+enum FlushIntention
+{
+    FlushIntentionFlush = 0,
+    FlushIntentionSync  = 1
+};
+
+enum CoordinateSpace
+{
+    CoordinateSpaceWorld,
+    CoordinateSpacePage,
+    CoordinateSpaceDevice
+};
+
+enum GpTestControlEnum
+{
+    TestControlForceBilinear  = 0,
+    TestControlNoICM          = 1,
+    TestControlGetBuildNumber = 2
+};
+
+enum MetafileFrameUnit
+{
+    MetafileFrameUnitPixel      = UnitPixel,
+    MetafileFrameUnitPoint      = UnitPoint,
+    MetafileFrameUnitInch       = UnitInch,
+    MetafileFrameUnitDocument   = UnitDocument,
+    MetafileFrameUnitMillimeter = UnitMillimeter,
+    MetafileFrameUnitGdi
+};
+
+#ifndef __cplusplus
+
+typedef enum Unit Unit;
+typedef enum BrushType BrushType;
+typedef enum FillMode FillMode;
+typedef enum LineCap LineCap;
+typedef enum PathPointType PathPointType;
+typedef enum LineJoin LineJoin;
+typedef enum QualityMode QualityMode;
+typedef enum SmoothingMode SmoothingMode;
+typedef enum CompositingQuality CompositingQuality;
+typedef enum InterpolationMode InterpolationMode;
+typedef enum PixelOffsetMode PixelOffsetMode;
+typedef enum DashCap DashCap;
+typedef enum DashStyle DashStyle;
+typedef enum MatrixOrder MatrixOrder;
+typedef enum ImageType ImageType;
+typedef enum ImageFlags ImageFlags;
+typedef enum WrapMode WrapMode;
+typedef enum MetafileType MetafileType;
+typedef enum LinearGradientMode LinearGradientMode;
+typedef enum EmfType EmfType;
+typedef enum CompositingMode CompositingMode;
+typedef enum TextRenderingHint TextRenderingHint;
+typedef enum StringAlignment StringAlignment;
+typedef enum StringDigitSubstitute StringDigitSubstitute;
+typedef enum StringTrimming StringTrimming;
+typedef enum FontStyle FontStyle;
+typedef enum StringFormatFlags StringFormatFlags;
+typedef enum HotkeyPrefix HotkeyPrefix;
+typedef enum PenAlignment GpPenAlignment;
+typedef enum ImageCodecFlags ImageCodecFlags;
+typedef enum CombineMode CombineMode;
+typedef enum FlushIntention FlushIntention;
+typedef enum CoordinateSpace CoordinateSpace;
+typedef enum GpTestControlEnum GpTestControlEnum;
+typedef enum MetafileFrameUnit MetafileFrameUnit;
+typedef enum PenType PenType;
+
+#endif /* end of c typedefs */
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdiplusflat.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdiplusflat.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdiplusflat.h	(revision 16410)
@@ -0,0 +1,588 @@
+/*
+ * Copyright (C) 2007 Google (Evan Stade)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _FLATAPI_H
+#define _FLATAPI_H
+
+#define WINGDIPAPI __stdcall
+
+#define GDIPCONST const
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* AdjustableArrowCap */
+GpStatus WINGDIPAPI GdipCreateAdjustableArrowCap(REAL,REAL,BOOL,GpAdjustableArrowCap**);
+GpStatus WINGDIPAPI GdipGetAdjustableArrowCapFillState(GpAdjustableArrowCap*,BOOL*);
+GpStatus WINGDIPAPI GdipGetAdjustableArrowCapHeight(GpAdjustableArrowCap*,REAL*);
+GpStatus WINGDIPAPI GdipGetAdjustableArrowCapMiddleInset(GpAdjustableArrowCap*,REAL*);
+GpStatus WINGDIPAPI GdipGetAdjustableArrowCapWidth(GpAdjustableArrowCap*,REAL*);
+GpStatus WINGDIPAPI GdipSetAdjustableArrowCapFillState(GpAdjustableArrowCap*,BOOL);
+GpStatus WINGDIPAPI GdipSetAdjustableArrowCapHeight(GpAdjustableArrowCap*,REAL);
+GpStatus WINGDIPAPI GdipSetAdjustableArrowCapMiddleInset(GpAdjustableArrowCap*,REAL);
+GpStatus WINGDIPAPI GdipSetAdjustableArrowCapWidth(GpAdjustableArrowCap*,REAL);
+
+/* Bitmap */
+GpStatus WINGDIPAPI GdipBitmapGetPixel(GpBitmap*,INT,INT,ARGB*);
+GpStatus WINGDIPAPI GdipBitmapLockBits(GpBitmap*,GDIPCONST GpRect*,UINT,
+    PixelFormat,BitmapData*);
+GpStatus WINGDIPAPI GdipBitmapSetPixel(GpBitmap*,INT,INT,ARGB);
+GpStatus WINGDIPAPI GdipBitmapUnlockBits(GpBitmap*,BitmapData*);
+GpStatus WINGDIPAPI GdipCreateBitmapFromFile(GDIPCONST WCHAR*,GpBitmap**);
+GpStatus WINGDIPAPI GdipCreateBitmapFromFileICM(GDIPCONST WCHAR*,GpBitmap**);
+GpStatus WINGDIPAPI GdipCreateBitmapFromGdiDib(GDIPCONST BITMAPINFO*,VOID*,GpBitmap**);
+GpStatus WINGDIPAPI GdipCreateBitmapFromGraphics(INT,INT,GpGraphics*,GpBitmap**);
+GpStatus WINGDIPAPI GdipCreateBitmapFromHBITMAP(HBITMAP, HPALETTE, GpBitmap**);
+GpStatus WINGDIPAPI GdipCreateBitmapFromResource(HINSTANCE,GDIPCONST WCHAR*,GpBitmap**);
+GpStatus WINGDIPAPI GdipCreateBitmapFromScan0(INT,INT,INT,PixelFormat,BYTE*,
+    GpBitmap**);
+GpStatus WINGDIPAPI GdipCreateBitmapFromStream(IStream*,GpBitmap**);
+GpStatus WINGDIPAPI GdipCreateBitmapFromStreamICM(IStream*,GpBitmap**);
+
+/* Brush */
+GpStatus WINGDIPAPI GdipCloneBrush(GpBrush*,GpBrush**);
+GpStatus WINGDIPAPI GdipDeleteBrush(GpBrush*);
+GpStatus WINGDIPAPI GdipGetBrushType(GpBrush*,GpBrushType*);
+
+/* CustomLineCap */
+GpStatus WINGDIPAPI GdipCloneCustomLineCap(GpCustomLineCap*,GpCustomLineCap**);
+GpStatus WINGDIPAPI GdipCreateCustomLineCap(GpPath*,GpPath*,GpLineCap,REAL,
+    GpCustomLineCap**);
+GpStatus WINGDIPAPI GdipDeleteCustomLineCap(GpCustomLineCap*);
+GpStatus WINGDIPAPI GdipGetCustomLineCapBaseCap(GpCustomLineCap*,GpLineCap*);
+GpStatus WINGDIPAPI GdipGetCustomLineCapBaseInset(GpCustomLineCap*,REAL*);
+GpStatus WINGDIPAPI GdipSetCustomLineCapStrokeCaps(GpCustomLineCap*,GpLineCap,
+    GpLineCap);
+GpStatus WINGDIPAPI GdipGetCustomLineCapStrokeJoin(GpCustomLineCap*,GpLineJoin*);
+GpStatus WINGDIPAPI GdipSetCustomLineCapStrokeJoin(GpCustomLineCap*,GpLineJoin);
+GpStatus WINGDIPAPI GdipGetCustomLineCapWidthScale(GpCustomLineCap*,REAL*);
+
+/* Font */
+GpStatus WINGDIPAPI GdipCloneFont(GpFont*,GpFont**);
+GpStatus WINGDIPAPI GdipCreateFont(GDIPCONST GpFontFamily*, REAL, INT, Unit,
+    GpFont**);
+GpStatus WINGDIPAPI GdipCreateFontFromDC(HDC,GpFont**);
+GpStatus WINGDIPAPI GdipCreateFontFromLogfontA(HDC,GDIPCONST LOGFONTA*,GpFont**);
+GpStatus WINGDIPAPI GdipCreateFontFromLogfontW(HDC,GDIPCONST LOGFONTW*,GpFont**);
+GpStatus WINGDIPAPI GdipDeleteFont(GpFont*);
+GpStatus WINGDIPAPI GdipGetLogFontW(GpFont*,GpGraphics*,LOGFONTW*);
+GpStatus WINGDIPAPI GdipGetFamily(GpFont*, GpFontFamily**);
+GpStatus WINGDIPAPI GdipGetFontUnit(GpFont*, Unit*);
+GpStatus WINGDIPAPI GdipGetFontSize(GpFont*, REAL*);
+GpStatus WINGDIPAPI GdipGetFontStyle(GpFont*, INT*);
+GpStatus WINGDIPAPI GdipGetFontHeight(GDIPCONST GpFont*, GDIPCONST GpGraphics*,
+        REAL*);
+GpStatus WINGDIPAPI GdipGetFontHeightGivenDPI(GDIPCONST GpFont*, REAL, REAL*);
+
+/* FontCollection */
+GpStatus WINGDIPAPI GdipNewPrivateFontCollection(GpFontCollection**);
+GpStatus WINGDIPAPI GdipDeletePrivateFontCollection(GpFontCollection**);
+GpStatus WINGDIPAPI GdipPrivateAddFontFile(GpFontCollection*, GDIPCONST WCHAR*);
+GpStatus WINGDIPAPI GdipGetFontCollectionFamilyCount(GpFontCollection*, INT*);
+GpStatus WINGDIPAPI GdipGetFontCollectionFamilyList(GpFontCollection*, INT,
+        GpFontFamily*[], INT*);
+
+/* FontFamily */
+GpStatus WINGDIPAPI GdipCloneFontFamily(GpFontFamily*, GpFontFamily**);
+GpStatus WINGDIPAPI GdipCreateFontFamilyFromName(GDIPCONST WCHAR*,
+    GpFontCollection*, GpFontFamily**);
+GpStatus WINGDIPAPI GdipDeleteFontFamily(GpFontFamily*);
+GpStatus WINGDIPAPI GdipGetFamilyName(GDIPCONST GpFontFamily*, WCHAR*, LANGID);
+GpStatus WINGDIPAPI GdipGetCellAscent(GDIPCONST GpFontFamily*, INT, UINT16*);
+GpStatus WINGDIPAPI GdipGetCellDescent(GDIPCONST GpFontFamily*, INT, UINT16*);
+GpStatus WINGDIPAPI GdipGetEmHeight(GDIPCONST GpFontFamily*, INT, UINT16*);
+GpStatus WINGDIPAPI GdipGetGenericFontFamilySansSerif(GpFontFamily**);
+GpStatus WINGDIPAPI GdipGetGenericFontFamilySerif(GpFontFamily**);
+GpStatus WINGDIPAPI GdipGetGenericFontFamilyMonospace(GpFontFamily**);
+GpStatus WINGDIPAPI GdipGetLineSpacing(GDIPCONST GpFontFamily*, INT, UINT16*);
+GpStatus WINGDIPAPI GdipIsStyleAvailable(GDIPCONST GpFontFamily *, INT, BOOL*);
+
+/* Graphics */
+GpStatus WINGDIPAPI GdipFlush(GpGraphics*, GpFlushIntention);
+GpStatus WINGDIPAPI GdipCreateFromHDC(HDC,GpGraphics**);
+GpStatus WINGDIPAPI GdipCreateFromHDC2(HDC,HANDLE,GpGraphics**);
+GpStatus WINGDIPAPI GdipCreateFromHWND(HWND,GpGraphics**);
+GpStatus WINGDIPAPI GdipCreateFromHWNDICM(HWND,GpGraphics**);
+GpStatus WINGDIPAPI GdipDeleteGraphics(GpGraphics *);
+GpStatus WINGDIPAPI GdipDrawArc(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipDrawArcI(GpGraphics*,GpPen*,INT,INT,INT,INT,REAL,REAL);
+GpStatus WINGDIPAPI GdipDrawBezier(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipDrawBezierI(GpGraphics*,GpPen*,INT,INT,INT,INT,INT,INT,INT,INT);
+GpStatus WINGDIPAPI GdipDrawBeziers(GpGraphics*,GpPen*,GDIPCONST GpPointF*,INT);
+GpStatus WINGDIPAPI GdipDrawBeziersI(GpGraphics*,GpPen*,GDIPCONST GpPoint*,INT);
+GpStatus WINGDIPAPI GdipDrawClosedCurve(GpGraphics*,GpPen*,GDIPCONST GpPointF*,INT);
+GpStatus WINGDIPAPI GdipDrawClosedCurveI(GpGraphics*,GpPen*,GDIPCONST GpPoint*,INT);
+GpStatus WINGDIPAPI GdipDrawClosedCurve2(GpGraphics*,GpPen*,GDIPCONST GpPointF*,INT,REAL);
+GpStatus WINGDIPAPI GdipDrawClosedCurve2I(GpGraphics*,GpPen*,GDIPCONST GpPoint*,INT,REAL);
+GpStatus WINGDIPAPI GdipDrawCurve(GpGraphics*,GpPen*,GDIPCONST GpPointF*,INT);
+GpStatus WINGDIPAPI GdipDrawCurveI(GpGraphics*,GpPen*,GDIPCONST GpPoint*,INT);
+GpStatus WINGDIPAPI GdipDrawCurve2(GpGraphics*,GpPen*,GDIPCONST GpPointF*,INT,REAL);
+GpStatus WINGDIPAPI GdipDrawCurve2I(GpGraphics*,GpPen*,GDIPCONST GpPoint*,INT,REAL);
+GpStatus WINGDIPAPI GdipDrawEllipse(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipDrawEllipseI(GpGraphics*,GpPen*,INT,INT,INT,INT);
+GpStatus WINGDIPAPI GdipDrawImage(GpGraphics*,GpImage*,REAL,REAL);
+GpStatus WINGDIPAPI GdipDrawImageI(GpGraphics*,GpImage*,INT,INT);
+GpStatus WINGDIPAPI GdipDrawImagePointsRect(GpGraphics*,GpImage*,
+    GDIPCONST GpPointF*,INT,REAL,REAL,REAL,REAL,GpUnit,
+    GDIPCONST GpImageAttributes*,DrawImageAbort,VOID*);
+GpStatus WINGDIPAPI GdipDrawImagePointsRectI(GpGraphics*,GpImage*,
+    GDIPCONST GpPoint*,INT,INT,INT,INT,INT,GpUnit,
+    GDIPCONST GpImageAttributes*,DrawImageAbort,VOID*);
+GpStatus WINGDIPAPI GdipDrawImageRect(GpGraphics*,GpImage*,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipDrawImageRectI(GpGraphics*,GpImage*,INT,INT,INT,INT);
+GpStatus WINGDIPAPI GdipDrawImageRectRect(GpGraphics*,GpImage*,REAL,REAL,REAL,
+    REAL,REAL,REAL,REAL,REAL,GpUnit,GDIPCONST GpImageAttributes*,DrawImageAbort,
+    VOID*);
+GpStatus WINGDIPAPI GdipDrawImageRectRectI(GpGraphics*,GpImage*,INT,INT,INT,
+    INT,INT,INT,INT,INT,GpUnit,GDIPCONST GpImageAttributes*,DrawImageAbort,
+    VOID*);
+GpStatus WINGDIPAPI GdipDrawLine(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipDrawLineI(GpGraphics*,GpPen*,INT,INT,INT,INT);
+GpStatus WINGDIPAPI GdipDrawLines(GpGraphics*,GpPen*,GDIPCONST GpPointF*,INT);
+GpStatus WINGDIPAPI GdipDrawLinesI(GpGraphics*,GpPen*,GDIPCONST GpPoint*,INT);
+GpStatus WINGDIPAPI GdipDrawPath(GpGraphics*,GpPen*,GpPath*);
+GpStatus WINGDIPAPI GdipDrawPie(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipDrawPieI(GpGraphics*,GpPen*,INT,INT,INT,INT,REAL,REAL);
+GpStatus WINGDIPAPI GdipDrawPolygon(GpGraphics*,GpPen*,GDIPCONST GpPointF*, INT);
+GpStatus WINGDIPAPI GdipDrawPolygonI(GpGraphics*,GpPen*,GDIPCONST GpPoint*, INT);
+GpStatus WINGDIPAPI GdipDrawRectangle(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipDrawRectangleI(GpGraphics*,GpPen*,INT,INT,INT,INT);
+GpStatus WINGDIPAPI GdipDrawRectangles(GpGraphics*,GpPen*,GDIPCONST GpRectF*,INT);
+GpStatus WINGDIPAPI GdipDrawRectanglesI(GpGraphics*,GpPen*,GDIPCONST GpRect*,INT);
+GpStatus WINGDIPAPI GdipDrawString(GpGraphics*,GDIPCONST WCHAR*,INT,
+    GDIPCONST GpFont*,GDIPCONST RectF*, GDIPCONST GpStringFormat*,
+    GDIPCONST GpBrush*);
+GpStatus WINGDIPAPI GdipFillClosedCurve2(GpGraphics*,GpBrush*,GDIPCONST GpPointF*,INT,
+    REAL,GpFillMode);
+GpStatus WINGDIPAPI GdipFillClosedCurve2I(GpGraphics*,GpBrush*,GDIPCONST GpPoint*,INT,
+    REAL,GpFillMode);
+GpStatus WINGDIPAPI GdipFillEllipse(GpGraphics*,GpBrush*,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipFillEllipseI(GpGraphics*,GpBrush*,INT,INT,INT,INT);
+GpStatus WINGDIPAPI GdipFillPath(GpGraphics*,GpBrush*,GpPath*);
+GpStatus WINGDIPAPI GdipFillPie(GpGraphics*,GpBrush*,REAL,REAL,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipFillPieI(GpGraphics*,GpBrush*,INT,INT,INT,INT,REAL,REAL);
+GpStatus WINGDIPAPI GdipFillPolygon(GpGraphics*,GpBrush*,GDIPCONST GpPointF*,
+    INT,GpFillMode);
+GpStatus WINGDIPAPI GdipFillPolygonI(GpGraphics*,GpBrush*,GDIPCONST GpPoint*,
+    INT,GpFillMode);
+GpStatus WINGDIPAPI GdipFillPolygon2(GpGraphics*,GpBrush*,GDIPCONST GpPointF*,INT);
+GpStatus WINGDIPAPI GdipFillPolygon2I(GpGraphics*,GpBrush*,GDIPCONST GpPoint*,INT);
+GpStatus WINGDIPAPI GdipFillRectangle(GpGraphics*,GpBrush*,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipFillRectangleI(GpGraphics*,GpBrush*,INT,INT,INT,INT);
+GpStatus WINGDIPAPI GdipFillRectangles(GpGraphics*,GpBrush*,GDIPCONST GpRectF*,INT);
+GpStatus WINGDIPAPI GdipFillRectanglesI(GpGraphics*,GpBrush*,GDIPCONST GpRect*,INT);
+GpStatus WINGDIPAPI GdipFillRegion(GpGraphics*,GpBrush*,GpRegion*);
+GpStatus WINGDIPAPI GdipGetClip(GpGraphics*,GpRegion*);
+GpStatus WINGDIPAPI GdipGetCompositingMode(GpGraphics*,CompositingMode*);
+GpStatus WINGDIPAPI GdipGetCompositingQuality(GpGraphics*,CompositingQuality*);
+GpStatus WINGDIPAPI GdipGetDC(GpGraphics*,HDC*);
+GpStatus WINGDIPAPI GdipGetDpiX(GpGraphics*,REAL*);
+GpStatus WINGDIPAPI GdipGetDpiY(GpGraphics*,REAL*);
+GpStatus WINGDIPAPI GdipGetImageGraphicsContext(GpImage*,GpGraphics**);
+GpStatus WINGDIPAPI GdipGetInterpolationMode(GpGraphics*,InterpolationMode*);
+GpStatus WINGDIPAPI GdipGetPageScale(GpGraphics*,REAL*);
+GpStatus WINGDIPAPI GdipGetPageUnit(GpGraphics*,GpUnit*);
+GpStatus WINGDIPAPI GdipGetPixelOffsetMode(GpGraphics*,PixelOffsetMode*);
+GpStatus WINGDIPAPI GdipGetSmoothingMode(GpGraphics*,SmoothingMode*);
+GpStatus WINGDIPAPI GdipGetTextContrast(GpGraphics*,UINT*);
+GpStatus WINGDIPAPI GdipGetTextRenderingHint(GpGraphics*,TextRenderingHint*);
+GpStatus WINGDIPAPI GdipGetWorldTransform(GpGraphics*,GpMatrix*);
+GpStatus WINGDIPAPI GdipGraphicsClear(GpGraphics*,ARGB);
+GpStatus WINGDIPAPI GdipIsClipEmpty(GpGraphics*, BOOL*);
+GpStatus WINGDIPAPI GdipIsVisiblePoint(GpGraphics*,REAL,REAL,BOOL*);
+GpStatus WINGDIPAPI GdipIsVisiblePointI(GpGraphics*,INT,INT,BOOL*);
+GpStatus WINGDIPAPI GdipMeasureCharacterRanges(GpGraphics*, GDIPCONST WCHAR*,
+    INT, GDIPCONST GpFont*, GDIPCONST RectF*, GDIPCONST GpStringFormat*, INT,
+    GpRegion**);
+GpStatus WINGDIPAPI GdipMeasureString(GpGraphics*,GDIPCONST WCHAR*,INT,
+    GDIPCONST GpFont*,GDIPCONST RectF*,GDIPCONST GpStringFormat*,RectF*,INT*,INT*);
+GpStatus WINGDIPAPI GdipMultiplyWorldTransform(GpGraphics*,GDIPCONST GpMatrix*,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipReleaseDC(GpGraphics*,HDC);
+GpStatus WINGDIPAPI GdipResetClip(GpGraphics*);
+GpStatus WINGDIPAPI GdipResetWorldTransform(GpGraphics*);
+GpStatus WINGDIPAPI GdipRestoreGraphics(GpGraphics*,GraphicsState);
+GpStatus WINGDIPAPI GdipRotateWorldTransform(GpGraphics*,REAL,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipSaveGraphics(GpGraphics*,GraphicsState*);
+GpStatus WINGDIPAPI GdipScaleWorldTransform(GpGraphics*,REAL,REAL,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipSetClipPath(GpGraphics*,GpPath*,CombineMode);
+GpStatus WINGDIPAPI GdipSetClipRect(GpGraphics*,REAL,REAL,REAL,REAL,CombineMode);
+GpStatus WINGDIPAPI GdipSetClipRectI(GpGraphics*,INT,INT,INT,INT,CombineMode);
+GpStatus WINGDIPAPI GdipSetClipRegion(GpGraphics*,GpRegion*,CombineMode);
+GpStatus WINGDIPAPI GdipSetCompositingMode(GpGraphics*,CompositingMode);
+GpStatus WINGDIPAPI GdipSetCompositingQuality(GpGraphics*,CompositingQuality);
+GpStatus WINGDIPAPI GdipSetInterpolationMode(GpGraphics*,InterpolationMode);
+GpStatus WINGDIPAPI GdipSetPageScale(GpGraphics*,REAL);
+GpStatus WINGDIPAPI GdipSetPageUnit(GpGraphics*,GpUnit);
+GpStatus WINGDIPAPI GdipSetPixelOffsetMode(GpGraphics*,PixelOffsetMode);
+GpStatus WINGDIPAPI GdipSetSmoothingMode(GpGraphics*,SmoothingMode);
+GpStatus WINGDIPAPI GdipSetTextContrast(GpGraphics*,UINT);
+GpStatus WINGDIPAPI GdipSetTextRenderingHint(GpGraphics*,TextRenderingHint);
+GpStatus WINGDIPAPI GdipSetWorldTransform(GpGraphics*,GpMatrix*);
+GpStatus WINGDIPAPI GdipTransformPoints(GpGraphics*, GpCoordinateSpace, GpCoordinateSpace,
+                                        GpPointF *, INT);
+GpStatus WINGDIPAPI GdipTransformPointsI(GpGraphics*, GpCoordinateSpace, GpCoordinateSpace,
+                                         GpPoint *, INT);
+GpStatus WINGDIPAPI GdipTranslateWorldTransform(GpGraphics*,REAL,REAL,GpMatrixOrder);
+
+/* GraphicsPath */
+GpStatus WINGDIPAPI GdipAddPathArc(GpPath*,REAL,REAL,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipAddPathArcI(GpPath*,INT,INT,INT,INT,REAL,REAL);
+GpStatus WINGDIPAPI GdipAddPathBezier(GpPath*,REAL,REAL,REAL,REAL,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipAddPathBezierI(GpPath*,INT,INT,INT,INT,INT,INT,INT,INT);
+GpStatus WINGDIPAPI GdipAddPathBeziers(GpPath*,GDIPCONST GpPointF*,INT);
+GpStatus WINGDIPAPI GdipAddPathBeziersI(GpPath*,GDIPCONST GpPoint*,INT);
+GpStatus WINGDIPAPI GdipAddPathClosedCurve(GpPath*,GDIPCONST GpPointF*,INT);
+GpStatus WINGDIPAPI GdipAddPathClosedCurveI(GpPath*,GDIPCONST GpPoint*,INT);
+GpStatus WINGDIPAPI GdipAddPathClosedCurve2(GpPath*,GDIPCONST GpPointF*,INT,REAL);
+GpStatus WINGDIPAPI GdipAddPathClosedCurve2I(GpPath*,GDIPCONST GpPoint*,INT,REAL);
+GpStatus WINGDIPAPI GdipAddPathCurve(GpPath*,GDIPCONST GpPointF*,INT);
+GpStatus WINGDIPAPI GdipAddPathCurveI(GpPath*,GDIPCONST GpPoint*,INT);
+GpStatus WINGDIPAPI GdipAddPathCurve2(GpPath*,GDIPCONST GpPointF*,INT,REAL);
+GpStatus WINGDIPAPI GdipAddPathCurve2I(GpPath*,GDIPCONST GpPoint*,INT,REAL);
+GpStatus WINGDIPAPI GdipAddPathEllipse(GpPath*,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipAddPathEllipseI(GpPath*,INT,INT,INT,INT);
+GpStatus WINGDIPAPI GdipAddPathLine(GpPath*,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipAddPathLineI(GpPath*,INT,INT,INT,INT);
+GpStatus WINGDIPAPI GdipAddPathLine2(GpPath*,GDIPCONST GpPointF*,INT);
+GpStatus WINGDIPAPI GdipAddPathLine2I(GpPath*,GDIPCONST GpPoint*,INT);
+GpStatus WINGDIPAPI GdipAddPathPath(GpPath*,GDIPCONST GpPath*,BOOL);
+GpStatus WINGDIPAPI GdipAddPathPie(GpPath*,REAL,REAL,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipAddPathPieI(GpPath*,INT,INT,INT,INT,REAL,REAL);
+GpStatus WINGDIPAPI GdipAddPathPolygon(GpPath*,GDIPCONST GpPointF*,INT);
+GpStatus WINGDIPAPI GdipAddPathPolygonI(GpPath*,GDIPCONST GpPoint*,INT);
+GpStatus WINGDIPAPI GdipAddPathRectangle(GpPath*,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipAddPathRectangleI(GpPath*,INT,INT,INT,INT);
+GpStatus WINGDIPAPI GdipAddPathRectangles(GpPath*,GDIPCONST GpRectF*,INT);
+GpStatus WINGDIPAPI GdipAddPathRectanglesI(GpPath*,GDIPCONST GpRect*,INT);
+GpStatus WINGDIPAPI GdipClearPathMarkers(GpPath*);
+GpStatus WINGDIPAPI GdipClonePath(GpPath*,GpPath**);
+GpStatus WINGDIPAPI GdipClosePathFigure(GpPath*);
+GpStatus WINGDIPAPI GdipClosePathFigures(GpPath*);
+GpStatus WINGDIPAPI GdipCreatePath(GpFillMode,GpPath**);
+GpStatus WINGDIPAPI GdipCreatePath2(GDIPCONST GpPointF*,GDIPCONST BYTE*,INT,
+    GpFillMode,GpPath**);
+GpStatus WINGDIPAPI GdipCreatePath2I(GDIPCONST GpPoint*,GDIPCONST BYTE*,INT,GpFillMode,GpPath**);
+GpStatus WINGDIPAPI GdipDeletePath(GpPath*);
+GpStatus WINGDIPAPI GdipFlattenPath(GpPath*,GpMatrix*,REAL);
+GpStatus WINGDIPAPI GdipIsOutlineVisiblePathPoint(GpPath*,REAL,REAL,GpPen*,
+    GpGraphics*,BOOL*);
+GpStatus WINGDIPAPI GdipIsOutlineVisiblePathPointI(GpPath*,INT,INT,GpPen*,
+    GpGraphics*,BOOL*);
+GpStatus WINGDIPAPI GdipIsVisiblePathPoint(GpPath*,REAL,REAL,GpGraphics*,BOOL*);
+GpStatus WINGDIPAPI GdipIsVisiblePathPointI(GpPath*,INT,INT,GpGraphics*,BOOL*);
+GpStatus WINGDIPAPI GdipGetPathData(GpPath*,GpPathData*);
+GpStatus WINGDIPAPI GdipGetPathFillMode(GpPath*,GpFillMode*);
+GpStatus WINGDIPAPI GdipGetPathLastPoint(GpPath*,GpPointF*);
+GpStatus WINGDIPAPI GdipGetPathPoints(GpPath*,GpPointF*,INT);
+GpStatus WINGDIPAPI GdipGetPathPointsI(GpPath*,GpPoint*,INT);
+GpStatus WINGDIPAPI GdipGetPathTypes(GpPath*,BYTE*,INT);
+GpStatus WINGDIPAPI GdipGetPathWorldBounds(GpPath*,GpRectF*,GDIPCONST GpMatrix*,GDIPCONST GpPen*);
+GpStatus WINGDIPAPI GdipGetPathWorldBoundsI(GpPath*,GpRect*,GDIPCONST GpMatrix*,GDIPCONST GpPen*);
+GpStatus WINGDIPAPI GdipGetPointCount(GpPath*,INT*);
+GpStatus WINGDIPAPI GdipResetPath(GpPath*);
+GpStatus WINGDIPAPI GdipReversePath(GpPath*);
+GpStatus WINGDIPAPI GdipSetPathFillMode(GpPath*,GpFillMode);
+GpStatus WINGDIPAPI GdipSetPathMarker(GpPath*);
+GpStatus WINGDIPAPI GdipStartPathFigure(GpPath*);
+GpStatus WINGDIPAPI GdipTransformPath(GpPath*,GpMatrix*);
+
+/* Image */
+GpStatus WINGDIPAPI GdipCloneImage(GpImage*, GpImage**);
+GpStatus WINGDIPAPI GdipCloneImageAttributes(GDIPCONST GpImageAttributes*,GpImageAttributes**);
+GpStatus WINGDIPAPI GdipDisposeImage(GpImage*);
+GpStatus WINGDIPAPI GdipFindFirstImageItem(GpImage*,ImageItemData*);
+GpStatus WINGDIPAPI GdipFindNextImageItem(GpImage*,ImageItemData*);
+GpStatus WINGDIPAPI GdipGetAllPropertyItems(GpImage*,UINT,UINT,PropertyItem*);
+GpStatus WINGDIPAPI GdipGetImageBounds(GpImage*,GpRectF*,GpUnit*);
+GpStatus WINGDIPAPI GdipGetImageDimension(GpImage*,REAL*,REAL*);
+GpStatus WINGDIPAPI GdipGetImageFlags(GpImage*,UINT*);
+GpStatus WINGDIPAPI GdipGetImageHeight(GpImage*,UINT*);
+GpStatus WINGDIPAPI GdipGetImageHorizontalResolution(GpImage*,REAL*);
+GpStatus WINGDIPAPI GdipGetImageItemData(GpImage*,ImageItemData*);
+GpStatus WINGDIPAPI GdipGetImagePixelFormat(GpImage*,PixelFormat*);
+GpStatus WINGDIPAPI GdipGetImageRawFormat(GpImage*,GUID*);
+GpStatus WINGDIPAPI GdipGetImageType(GpImage*,ImageType*);
+GpStatus WINGDIPAPI GdipGetImageVerticalResolution(GpImage*,REAL*);
+GpStatus WINGDIPAPI GdipGetImageWidth(GpImage*,UINT*);
+GpStatus WINGDIPAPI GdipGetPropertyCount(GpImage*,UINT*);
+GpStatus WINGDIPAPI GdipGetPropertyIdList(GpImage*,UINT,PROPID*);
+GpStatus WINGDIPAPI GdipGetPropertyItem(GpImage*,PROPID,UINT,PropertyItem*);
+GpStatus WINGDIPAPI GdipGetPropertyItemSize(GpImage*,PROPID,UINT*);
+GpStatus WINGDIPAPI GdipGetPropertySize(GpImage*,UINT*,UINT*);
+GpStatus WINGDIPAPI GdipImageGetFrameCount(GpImage*,GDIPCONST GUID*,UINT*);
+GpStatus WINGDIPAPI GdipImageGetFrameDimensionsCount(GpImage*,UINT*);
+GpStatus WINGDIPAPI GdipImageGetFrameDimensionsList(GpImage*,GUID*,UINT);
+GpStatus WINGDIPAPI GdipImageSelectActiveFrame(GpImage*,GDIPCONST GUID*,UINT);
+GpStatus WINGDIPAPI GdipLoadImageFromFile(GDIPCONST WCHAR*,GpImage**);
+GpStatus WINGDIPAPI GdipLoadImageFromFileICM(GDIPCONST WCHAR*,GpImage**);
+GpStatus WINGDIPAPI GdipLoadImageFromStream(IStream*,GpImage**);
+GpStatus WINGDIPAPI GdipLoadImageFromStreamICM(IStream*,GpImage**);
+GpStatus WINGDIPAPI GdipRemovePropertyItem(GpImage*,PROPID);
+GpStatus WINGDIPAPI GdipSaveImageToFile(GpImage*,GDIPCONST WCHAR*,GDIPCONST CLSID*,GDIPCONST EncoderParameters*);
+GpStatus WINGDIPAPI GdipSaveImageToStream(GpImage*,IStream*,
+    GDIPCONST CLSID*,GDIPCONST EncoderParameters*);
+GpStatus WINGDIPAPI GdipSetImagePalette(GpImage*,GDIPCONST ColorPalette*);
+GpStatus WINGDIPAPI GdipSetPropertyItem(GpImage*,GDIPCONST PropertyItem*);
+
+/* ImageAttributes */
+GpStatus WINGDIPAPI GdipCreateImageAttributes(GpImageAttributes**);
+GpStatus WINGDIPAPI GdipDisposeImageAttributes(GpImageAttributes*);
+GpStatus WINGDIPAPI GdipSetImageAttributesColorKeys(GpImageAttributes*,
+    ColorAdjustType,BOOL,ARGB,ARGB);
+GpStatus WINGDIPAPI GdipSetImageAttributesColorMatrix(GpImageAttributes*,
+    ColorAdjustType,BOOL,GDIPCONST ColorMatrix*,GDIPCONST ColorMatrix*,
+    ColorMatrixFlags);
+GpStatus WINGDIPAPI GdipSetImageAttributesWrapMode(GpImageAttributes*,WrapMode,
+    ARGB,BOOL);
+
+/* LinearGradientBrush */
+GpStatus WINGDIPAPI GdipCreateLineBrush(GDIPCONST GpPointF*,GDIPCONST GpPointF*,
+    ARGB,ARGB,GpWrapMode,GpLineGradient**);
+GpStatus WINGDIPAPI GdipCreateLineBrushI(GDIPCONST GpPoint*,GDIPCONST GpPoint*,
+    ARGB,ARGB,GpWrapMode,GpLineGradient**);
+GpStatus WINGDIPAPI GdipCreateLineBrushFromRect(GDIPCONST GpRectF*,ARGB,ARGB,
+    LinearGradientMode,GpWrapMode,GpLineGradient**);
+GpStatus WINGDIPAPI GdipCreateLineBrushFromRectI(GDIPCONST GpRect*,ARGB,ARGB,
+    LinearGradientMode,GpWrapMode,GpLineGradient**);
+GpStatus WINGDIPAPI GdipCreateLineBrushFromRectWithAngle(GDIPCONST GpRectF*,
+    ARGB,ARGB,REAL,BOOL,GpWrapMode,GpLineGradient**);
+GpStatus WINGDIPAPI GdipCreateLineBrushFromRectWithAngleI(GDIPCONST GpRect*,
+    ARGB,ARGB,REAL,BOOL,GpWrapMode,GpLineGradient**);
+GpStatus WINGDIPAPI GdipGetLineColors(GpLineGradient*,ARGB*);
+GpStatus WINGDIPAPI GdipGetLineGammaCorrection(GpLineGradient*,BOOL*);
+GpStatus WINGDIPAPI GdipGetLineRect(GpLineGradient*,GpRectF*);
+GpStatus WINGDIPAPI GdipGetLineRectI(GpLineGradient*,GpRect*);
+GpStatus WINGDIPAPI GdipGetLineWrapMode(GpLineGradient*,GpWrapMode*);
+GpStatus WINGDIPAPI GdipSetLineBlend(GpLineGradient*,GDIPCONST REAL*,
+    GDIPCONST REAL*,INT);
+GpStatus WINGDIPAPI GdipSetLineColors(GpLineGradient*,ARGB,ARGB);
+GpStatus WINGDIPAPI GdipSetLineGammaCorrection(GpLineGradient*,BOOL);
+GpStatus WINGDIPAPI GdipSetLineSigmaBlend(GpLineGradient*,REAL,REAL);
+GpStatus WINGDIPAPI GdipSetLineWrapMode(GpLineGradient*,GpWrapMode);
+
+/* Matrix */
+GpStatus WINGDIPAPI GdipCloneMatrix(GpMatrix*,GpMatrix**);
+GpStatus WINGDIPAPI GdipCreateMatrix(GpMatrix**);
+GpStatus WINGDIPAPI GdipCreateMatrix2(REAL,REAL,REAL,REAL,REAL,REAL,GpMatrix**);
+GpStatus WINGDIPAPI GdipCreateMatrix3(GDIPCONST GpRectF *,GDIPCONST GpPointF*,GpMatrix**);
+GpStatus WINGDIPAPI GdipCreateMatrix3I(GDIPCONST GpRect*,GDIPCONST GpPoint*,GpMatrix**);
+GpStatus WINGDIPAPI GdipDeleteMatrix(GpMatrix*);
+GpStatus WINGDIPAPI GdipGetMatrixElements(GDIPCONST GpMatrix*,REAL*);
+GpStatus WINGDIPAPI GdipInvertMatrix(GpMatrix*);
+GpStatus WINGDIPAPI GdipIsMatrixEqual(GDIPCONST GpMatrix*, GDIPCONST GpMatrix*, BOOL*);
+GpStatus WINGDIPAPI GdipIsMatrixIdentity(GDIPCONST GpMatrix*, BOOL*);
+GpStatus WINGDIPAPI GdipIsMatrixInvertible(GDIPCONST GpMatrix*, BOOL*);
+GpStatus WINGDIPAPI GdipMultiplyMatrix(GpMatrix*,GDIPCONST GpMatrix*,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipRotateMatrix(GpMatrix*,REAL,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipShearMatrix(GpMatrix*,REAL,REAL,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipScaleMatrix(GpMatrix*,REAL,REAL,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipSetMatrixElements(GpMatrix*,REAL,REAL,REAL,REAL,REAL,REAL);
+GpStatus WINGDIPAPI GdipTransformMatrixPoints(GpMatrix*,GpPointF*,INT);
+GpStatus WINGDIPAPI GdipTransformMatrixPointsI(GpMatrix*,GpPoint*,INT);
+GpStatus WINGDIPAPI GdipTranslateMatrix(GpMatrix*,REAL,REAL,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipVectorTransformMatrixPoints(GpMatrix*,GpPointF*,INT);
+GpStatus WINGDIPAPI GdipVectorTransformMatrixPointsI(GpMatrix*,GpPoint*,INT);
+
+/* Metafile */
+GpStatus WINGDIPAPI GdipConvertToEmfPlus(const GpGraphics*,GpMetafile*,INT*,
+    EmfType,const WCHAR*,GpMetafile**);
+GpStatus WINGDIPAPI GdipConvertToEmfPlusToFile(const GpGraphics*,GpMetafile*,INT*,const WCHAR*,EmfType,const WCHAR*,GpMetafile**);
+GpStatus WINGDIPAPI GdipConvertToEmfPlusToStream(const GpGraphics*,GpMetafile*,INT*,IStream*,EmfType,const WCHAR*,GpMetafile**);
+GpStatus WINGDIPAPI GdipCreateMetafileFromEmf(HENHMETAFILE,BOOL,GpMetafile**);
+GpStatus WINGDIPAPI GdipCreateMetafileFromWmf(HMETAFILE,BOOL,
+    GDIPCONST WmfPlaceableFileHeader*,GpMetafile**);
+GpStatus WINGDIPAPI GdipCreateMetafileFromWmfFile(GDIPCONST WCHAR*, GDIPCONST WmfPlaceableFileHeader*,
+    GpMetafile**);
+GpStatus WINGDIPAPI GdipSetMetafileDownLevelRasterizationLimit(GpMetafile*,UINT);
+
+/* MetafileHeader */
+GpStatus WINGDIPAPI GdipGetMetafileHeaderFromEmf(HENHMETAFILE,MetafileHeader*);
+GpStatus WINGDIPAPI GdipGetMetafileHeaderFromFile(GDIPCONST WCHAR*,MetafileHeader*);
+GpStatus WINGDIPAPI GdipGetMetafileHeaderFromMetafile(GpMetafile*,MetafileHeader*);
+GpStatus WINGDIPAPI GdipGetMetafileHeaderFromStream(IStream*,MetafileHeader*);
+GpStatus WINGDIPAPI GdipGetMetafileHeaderFromWmf(HMETAFILE,GDIPCONST WmfPlaceableFileHeader*,MetafileHeader*);
+
+/* PathGradientBrush */
+GpStatus WINGDIPAPI GdipCreatePathGradient(GDIPCONST GpPointF*,INT,GpWrapMode,GpPathGradient**);
+GpStatus WINGDIPAPI GdipCreatePathGradientI(GDIPCONST GpPoint*,INT,GpWrapMode,GpPathGradient**);
+GpStatus WINGDIPAPI GdipCreatePathGradientFromPath(GDIPCONST GpPath*,
+    GpPathGradient**);
+GpStatus WINGDIPAPI GdipGetPathGradientBlend(GpPathGradient*,REAL*,REAL*,INT);
+GpStatus WINGDIPAPI GdipGetPathGradientBlendCount(GpPathGradient*,INT*);
+GpStatus WINGDIPAPI GdipGetPathGradientCenterColor(GpPathGradient*,ARGB*);
+GpStatus WINGDIPAPI GdipGetPathGradientCenterPoint(GpPathGradient*,GpPointF*);
+GpStatus WINGDIPAPI GdipGetPathGradientCenterPointI(GpPathGradient*,GpPoint*);
+GpStatus WINGDIPAPI GdipGetPathGradientFocusScales(GpPathGradient*,REAL*,REAL*);
+GpStatus WINGDIPAPI GdipGetPathGradientGammaCorrection(GpPathGradient*,BOOL*);
+GpStatus WINGDIPAPI GdipGetPathGradientPointCount(GpPathGradient*,INT*);
+GpStatus WINGDIPAPI GdipGetPathGradientRect(GpPathGradient*,GpRectF*);
+GpStatus WINGDIPAPI GdipGetPathGradientRectI(GpPathGradient*,GpRect*);
+GpStatus WINGDIPAPI GdipGetPathGradientSurroundColorsWithCount(GpPathGradient*,
+    ARGB*,INT*);
+GpStatus WINGDIPAPI GdipGetPathGradientWrapMode(GpPathGradient*,GpWrapMode*);
+GpStatus WINGDIPAPI GdipSetPathGradientBlend(GpPathGradient*,GDIPCONST REAL*,GDIPCONST REAL*,INT);
+GpStatus WINGDIPAPI GdipSetPathGradientCenterColor(GpPathGradient*,ARGB);
+GpStatus WINGDIPAPI GdipSetPathGradientCenterPoint(GpPathGradient*,GpPointF*);
+GpStatus WINGDIPAPI GdipSetPathGradientCenterPointI(GpPathGradient*,GpPoint*);
+GpStatus WINGDIPAPI GdipSetPathGradientFocusScales(GpPathGradient*,REAL,REAL);
+GpStatus WINGDIPAPI GdipSetPathGradientGammaCorrection(GpPathGradient*,BOOL);
+GpStatus WINGDIPAPI GdipSetPathGradientSigmaBlend(GpPathGradient*,REAL,REAL);
+GpStatus WINGDIPAPI GdipSetPathGradientSurroundColorsWithCount(GpPathGradient*,
+    ARGB*,INT*);
+GpStatus WINGDIPAPI GdipSetPathGradientWrapMode(GpPathGradient*,GpWrapMode);
+
+/* PathIterator */
+GpStatus WINGDIPAPI GdipCreatePathIter(GpPathIterator**,GpPath*);
+GpStatus WINGDIPAPI GdipDeletePathIter(GpPathIterator*);
+GpStatus WINGDIPAPI GdipPathIterCopyData(GpPathIterator*,INT*,GpPointF*,BYTE*,
+    INT,INT);
+GpStatus WINGDIPAPI GdipPathIterGetCount(GpPathIterator*,INT*);
+GpStatus WINGDIPAPI GdipPathIterGetSubpathCount(GpPathIterator*,INT*);
+GpStatus WINGDIPAPI GdipPathIterEnumerate(GpPathIterator*,INT*,GpPointF*,BYTE*,INT);
+GpStatus WINGDIPAPI GdipPathIterHasCurve(GpPathIterator*,BOOL*);
+GpStatus WINGDIPAPI GdipPathIterIsValid(GpPathIterator*,BOOL*);
+GpStatus WINGDIPAPI GdipPathIterNextMarker(GpPathIterator*,INT*,INT*,INT*);
+GpStatus WINGDIPAPI GdipPathIterNextMarkerPath(GpPathIterator*,INT*,GpPath*);
+GpStatus WINGDIPAPI GdipPathIterNextPathType(GpPathIterator*,INT*,BYTE*,INT*,INT*);
+GpStatus WINGDIPAPI GdipPathIterNextSubpath(GpPathIterator*,INT*,INT*,INT*,BOOL*);
+GpStatus WINGDIPAPI GdipPathIterNextSubpathPath(GpPathIterator*,INT*,GpPath*,BOOL*);
+GpStatus WINGDIPAPI GdipPathIterRewind(GpPathIterator*);
+
+/* Pen */
+GpStatus WINGDIPAPI GdipClonePen(GpPen*,GpPen**);
+GpStatus WINGDIPAPI GdipCreatePen1(ARGB,REAL,GpUnit,GpPen**);
+GpStatus WINGDIPAPI GdipCreatePen2(GpBrush*,REAL,GpUnit,GpPen**);
+GpStatus WINGDIPAPI GdipDeletePen(GpPen*);
+GpStatus WINGDIPAPI GdipGetPenBrushFill(GpPen*,GpBrush**);
+GpStatus WINGDIPAPI GdipGetPenColor(GpPen*,ARGB*);
+GpStatus WINGDIPAPI GdipGetPenCustomStartCap(GpPen*,GpCustomLineCap**);
+GpStatus WINGDIPAPI GdipGetPenCustomEndCap(GpPen*,GpCustomLineCap**);
+GpStatus WINGDIPAPI GdipGetPenDashArray(GpPen*,REAL*,INT);
+GpStatus WINGDIPAPI GdipGetPenDashCount(GpPen*,INT*);
+GpStatus WINGDIPAPI GdipGetPenDashOffset(GpPen*,REAL*);
+GpStatus WINGDIPAPI GdipGetPenDashStyle(GpPen*,GpDashStyle*);
+GpStatus WINGDIPAPI GdipGetPenMode(GpPen*,GpPenAlignment*);
+GpStatus WINGDIPAPI GdipSetPenBrushFill(GpPen*,GpBrush*);
+GpStatus WINGDIPAPI GdipSetPenColor(GpPen*,ARGB);
+GpStatus WINGDIPAPI GdipSetPenCompoundArray(GpPen*,GDIPCONST REAL*,INT);
+GpStatus WINGDIPAPI GdipSetPenCustomEndCap(GpPen*,GpCustomLineCap*);
+GpStatus WINGDIPAPI GdipSetPenCustomStartCap(GpPen*,GpCustomLineCap*);
+GpStatus WINGDIPAPI GdipSetPenDashArray(GpPen*,GDIPCONST REAL*,INT);
+GpStatus WINGDIPAPI GdipSetPenDashCap197819(GpPen*,GpDashCap);
+GpStatus WINGDIPAPI GdipSetPenDashOffset(GpPen*,REAL);
+GpStatus WINGDIPAPI GdipSetPenDashStyle(GpPen*,GpDashStyle);
+GpStatus WINGDIPAPI GdipSetPenEndCap(GpPen*,GpLineCap);
+GpStatus WINGDIPAPI GdipGetPenFillType(GpPen*,GpPenType*);
+GpStatus WINGDIPAPI GdipSetPenLineCap197819(GpPen*,GpLineCap,GpLineCap,GpDashCap);
+GpStatus WINGDIPAPI GdipSetPenLineJoin(GpPen*,GpLineJoin);
+GpStatus WINGDIPAPI GdipSetPenMode(GpPen*,GpPenAlignment);
+GpStatus WINGDIPAPI GdipSetPenMiterLimit(GpPen*,REAL);
+GpStatus WINGDIPAPI GdipSetPenStartCap(GpPen*,GpLineCap);
+GpStatus WINGDIPAPI GdipSetPenWidth(GpPen*,REAL);
+GpStatus WINGDIPAPI GdipGetPenDashCap197819(GpPen*,GpDashCap*);
+GpStatus WINGDIPAPI GdipGetPenEndCap(GpPen*,GpLineCap*);
+GpStatus WINGDIPAPI GdipGetPenLineJoin(GpPen*,GpLineJoin*);
+GpStatus WINGDIPAPI GdipGetPenMiterLimit(GpPen*,REAL*);
+GpStatus WINGDIPAPI GdipGetPenStartCap(GpPen*,GpLineCap*);
+GpStatus WINGDIPAPI GdipGetPenUnit(GpPen*,GpUnit*);
+GpStatus WINGDIPAPI GdipGetPenWidth(GpPen*,REAL*);
+
+/* Region */
+GpStatus WINGDIPAPI GdipCloneRegion(GpRegion *, GpRegion **);
+GpStatus WINGDIPAPI GdipCombineRegionPath(GpRegion *, GpPath *, CombineMode);
+GpStatus WINGDIPAPI GdipCombineRegionRect(GpRegion *, GDIPCONST GpRectF *, CombineMode);
+GpStatus WINGDIPAPI GdipCombineRegionRectI(GpRegion *, GDIPCONST GpRect *, CombineMode);
+GpStatus WINGDIPAPI GdipCombineRegionRegion(GpRegion *, GpRegion *, CombineMode);
+GpStatus WINGDIPAPI GdipCreateRegion(GpRegion **);
+GpStatus WINGDIPAPI GdipCreateRegionPath(GpPath *, GpRegion **);
+GpStatus WINGDIPAPI GdipCreateRegionRect(GDIPCONST GpRectF *, GpRegion **);
+GpStatus WINGDIPAPI GdipCreateRegionRectI(GDIPCONST GpRect *, GpRegion **);
+GpStatus WINGDIPAPI GdipCreateRegionRgnData(GDIPCONST BYTE *, INT, GpRegion **);
+GpStatus WINGDIPAPI GdipCreateRegionHrgn(HRGN, GpRegion **);
+GpStatus WINGDIPAPI GdipDeleteRegion(GpRegion *);
+GpStatus WINGDIPAPI GdipGetRegionBounds(GpRegion *, GpGraphics *, GpRectF *);
+GpStatus WINGDIPAPI GdipGetRegionBoundsI(GpRegion *, GpGraphics *, GpRect *);
+GpStatus WINGDIPAPI GdipGetRegionData(GpRegion *, BYTE *, UINT, UINT *);
+GpStatus WINGDIPAPI GdipGetRegionDataSize(GpRegion *, UINT *);
+GpStatus WINGDIPAPI GdipGetRegionHRgn(GpRegion *, GpGraphics *, HRGN *);
+GpStatus WINGDIPAPI GdipIsEmptyRegion(GpRegion *, GpGraphics *, BOOL *);
+GpStatus WINGDIPAPI GdipIsEqualRegion(GpRegion *, GpRegion *, GpGraphics *, BOOL *);
+GpStatus WINGDIPAPI GdipIsInfiniteRegion(GpRegion *, GpGraphics *, BOOL *);
+GpStatus WINGDIPAPI GdipSetEmpty(GpRegion *);
+GpStatus WINGDIPAPI GdipSetInfinite(GpRegion *);
+GpStatus WINGDIPAPI GdipTransformRegion(GpRegion *, GpMatrix *);
+GpStatus WINGDIPAPI GdipTranslateRegion(GpRegion *, REAL, REAL);
+GpStatus WINGDIPAPI GdipTranslateRegionI(GpRegion *, INT, INT);
+
+/* SolidBrush */
+GpStatus WINGDIPAPI GdipCreateSolidFill(ARGB,GpSolidFill**);
+GpStatus WINGDIPAPI GdipGetSolidFillColor(GpSolidFill*,ARGB*);
+GpStatus WINGDIPAPI GdipSetSolidFillColor(GpSolidFill*,ARGB);
+
+/* StringFormat */
+GpStatus WINGDIPAPI GdipCloneStringFormat(GDIPCONST GpStringFormat*,GpStringFormat**);
+GpStatus WINGDIPAPI GdipCreateStringFormat(INT,LANGID,GpStringFormat**);
+GpStatus WINGDIPAPI GdipDeleteStringFormat(GpStringFormat*);
+GpStatus WINGDIPAPI GdipGetStringFormatAlign(GpStringFormat*,StringAlignment*);
+GpStatus WINGDIPAPI GdipGetStringFormatDigitSubstitution(GDIPCONST GpStringFormat*,LANGID*,
+        StringDigitSubstitute*);
+GpStatus WINGDIPAPI GdipGetStringFormatFlags(GDIPCONST GpStringFormat*, INT*);
+GpStatus WINGDIPAPI GdipGetStringFormatHotkeyPrefix(GDIPCONST GpStringFormat*,INT*);
+GpStatus WINGDIPAPI GdipGetStringFormatLineAlign(GpStringFormat*,StringAlignment*);
+GpStatus WINGDIPAPI GdipGetStringFormatMeasurableCharacterRangeCount(
+        GDIPCONST GpStringFormat*, INT*);
+GpStatus WINGDIPAPI GdipGetStringFormatTabStopCount(GDIPCONST GpStringFormat*,INT*);
+GpStatus WINGDIPAPI GdipGetStringFormatTabStops(GDIPCONST GpStringFormat*,INT,REAL*,REAL*);
+GpStatus WINGDIPAPI GdipGetStringFormatTrimming(GpStringFormat*,StringTrimming*);
+GpStatus WINGDIPAPI GdipSetStringFormatAlign(GpStringFormat*,StringAlignment);
+GpStatus WINGDIPAPI GdipSetStringFormatDigitSubstitution(GpStringFormat*,LANGID,StringDigitSubstitute);
+GpStatus WINGDIPAPI GdipSetStringFormatHotkeyPrefix(GpStringFormat*,INT);
+GpStatus WINGDIPAPI GdipSetStringFormatLineAlign(GpStringFormat*,StringAlignment);
+GpStatus WINGDIPAPI GdipSetStringFormatMeasurableCharacterRanges(
+        GpStringFormat*, INT, GDIPCONST CharacterRange*);
+GpStatus WINGDIPAPI GdipSetStringFormatTabStops(GpStringFormat*,REAL,INT,GDIPCONST REAL*);
+GpStatus WINGDIPAPI GdipSetStringFormatTrimming(GpStringFormat*,StringTrimming);
+GpStatus WINGDIPAPI GdipStringFormatGetGenericDefault(GpStringFormat **);
+GpStatus WINGDIPAPI GdipStringFormatGetGenericTypographic(GpStringFormat **);
+
+/* Texture */
+GpStatus WINGDIPAPI GdipCreateTexture(GpImage*,GpWrapMode,GpTexture**);
+GpStatus WINGDIPAPI GdipCreateTexture2(GpImage*,GpWrapMode,REAL,REAL,REAL,REAL,GpTexture**);
+GpStatus WINGDIPAPI GdipCreateTexture2I(GpImage*,GpWrapMode,INT,INT,INT,INT,GpTexture**);
+GpStatus WINGDIPAPI GdipCreateTextureIA(GpImage*,GDIPCONST GpImageAttributes*,
+    REAL,REAL,REAL,REAL,GpTexture**);
+GpStatus WINGDIPAPI GdipCreateTextureIAI(GpImage*,GDIPCONST GpImageAttributes*,
+    INT,INT,INT,INT,GpTexture**);
+GpStatus WINGDIPAPI GdipGetTextureTransform(GpTexture*,GpMatrix*);
+GpStatus WINGDIPAPI GdipGetTextureWrapMode(GpTexture*, GpWrapMode*);
+GpStatus WINGDIPAPI GdipResetTextureTransform(GpTexture*);
+GpStatus WINGDIPAPI GdipSetTextureTransform(GpTexture *,GDIPCONST GpMatrix*);
+GpStatus WINGDIPAPI GdipSetTextureWrapMode(GpTexture*, GpWrapMode);
+
+/* Without wrapper methods */
+GpStatus WINGDIPAPI GdipCreateStreamOnFile(GDIPCONST WCHAR*,UINT,IStream**);
+GpStatus WINGDIPAPI GdipGetImageEncodersSize(UINT *numEncoders, UINT *size);
+GpStatus WINGDIPAPI GdipGetImageEncoders(UINT numEncoders, UINT size, ImageCodecInfo *encoders);
+GpStatus WINGDIPAPI GdipTestControl(GpTestControlEnum,void*);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdiplusgpstubs.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdiplusgpstubs.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdiplusgpstubs.h	(revision 16410)
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2007 Google (Evan Stade)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _GDIPLUSGPSTUBS_H
+#define _GDIPLUSGPSTUBS_H
+
+#ifdef __cplusplus
+
+class GpGraphics {};
+class GpBrush {};
+class GpSolidFill : public GpBrush {};
+class GpPath {};
+class GpMatrix {};
+class GpPathIterator {};
+class GpCustomLineCap {};
+class GpAdjustableArrowCap : public GpCustomLineCap {};
+class GpImage {};
+class GpMetafile : public GpImage {};
+class GpImageAttributes {};
+class GpCachedBitmap {};
+class GpBitmap : public GpImage {};
+class GpPathGradient : public GpBrush {};
+class GpLineGradient : public GpBrush {};
+class GpTexture : public GpBrush {};
+class GpFont {};
+class GpFontCollection {};
+class GpFontFamily {};
+class GpStringFormat {};
+class GpRegion {};
+class CGpEffect {};
+
+#else /* end of c++ declarations */
+
+typedef struct GpGraphics GpGraphics;
+typedef struct GpPen GpPen;
+typedef struct GpBrush GpBrush;
+typedef struct GpSolidFill GpSolidFill;
+typedef struct GpPath GpPath;
+typedef struct GpMatrix GpMatrix;
+typedef struct GpPathIterator GpPathIterator;
+typedef struct GpCustomLineCap GpCustomLineCap;
+typedef struct GpAdjustableArrowCap GpAdjustableArrowCap;
+typedef struct GpImage GpImage;
+typedef struct GpMetafile GpMetafile;
+typedef struct GpImageAttributes GpImageAttributes;
+typedef struct GpCachedBitmap GpCachedBitmap;
+typedef struct GpBitmap GpBitmap;
+typedef struct GpPathGradient GpPathGradient;
+typedef struct GpLineGradient GpLineGradient;
+typedef struct GpTexture GpTexture;
+typedef struct GpFont GpFont;
+typedef struct GpFontCollection GpFontCollection;
+typedef struct GpFontFamily GpFontFamily;
+typedef struct GpStringFormat GpStringFormat;
+typedef struct GpRegion GpRegion;
+typedef struct CGpEffect CGpEffect;
+
+#endif /* end of c declarations */
+
+typedef Status GpStatus;
+typedef Unit GpUnit;
+typedef BrushType GpBrushType;
+typedef PointF GpPointF;
+typedef FillMode GpFillMode;
+typedef PathData GpPathData;
+typedef LineCap GpLineCap;
+typedef RectF GpRectF;
+typedef Rect GpRect;
+typedef LineJoin GpLineJoin;
+typedef DashCap GpDashCap;
+typedef DashStyle GpDashStyle;
+typedef MatrixOrder GpMatrixOrder;
+typedef Point GpPoint;
+typedef WrapMode GpWrapMode;
+typedef Color GpColor;
+typedef FlushIntention GpFlushIntention;
+typedef CoordinateSpace GpCoordinateSpace;
+typedef PenType GpPenType;
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdiplusimaging.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdiplusimaging.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdiplusimaging.h	(revision 16410)
@@ -0,0 +1,418 @@
+/*
+ * Copyright (C) 2007 Google (Evan Stade)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _GDIPLUSIMAGING_H
+#define _GDIPLUSIMAGING_H
+
+DEFINE_GUID(ImageFormatUndefined, 0xb96b3ca9, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
+DEFINE_GUID(ImageFormatMemoryBMP, 0xb96b3caa, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
+DEFINE_GUID(ImageFormatBMP,       0xb96b3cab, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
+DEFINE_GUID(ImageFormatEMF,       0xb96b3cac, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
+DEFINE_GUID(ImageFormatWMF,       0xb96b3cad, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
+DEFINE_GUID(ImageFormatJPEG,      0xb96b3cae, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
+DEFINE_GUID(ImageFormatPNG,       0xb96b3caf, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
+DEFINE_GUID(ImageFormatGIF,       0xb96b3cb0, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
+DEFINE_GUID(ImageFormatTIFF,      0xb96b3cb1, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
+DEFINE_GUID(ImageFormatEXIF,      0xb96b3cb2, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
+DEFINE_GUID(ImageFormatIcon,      0xb96b3cb5, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
+
+enum ImageLockMode
+{
+    ImageLockModeRead           = 1,
+    ImageLockModeWrite          = 2,
+    ImageLockModeUserInputBuf   = 4
+};
+
+#ifdef __cplusplus
+class EncoderParameter
+{
+public:
+    GUID    Guid;
+    ULONG   NumberOfValues;
+    ULONG   Type;
+    VOID*   Value;
+};
+
+class EncoderParameters
+{
+public:
+    UINT Count;
+    EncoderParameter Parameter[1];
+};
+
+class ImageCodecInfo
+{
+public:
+    CLSID Clsid;
+    GUID  FormatID;
+    const WCHAR* CodecName;
+    const WCHAR* DllName;
+    const WCHAR* FormatDescription;
+    const WCHAR* FilenameExtension;
+    const WCHAR* MimeType;
+    DWORD Flags;
+    DWORD Version;
+    DWORD SigCount;
+    DWORD SigSize;
+    const BYTE* SigPattern;
+    const BYTE* SigMask;
+};
+
+class BitmapData
+{
+public:
+    UINT Width;
+    UINT Height;
+    INT Stride;
+    PixelFormat PixelFormat;
+    VOID* Scan0;
+    UINT_PTR Reserved;
+};
+
+class ImageItemData
+{
+public:
+    UINT  Size;
+    UINT  Position;
+    VOID* Desc;
+    UINT  DescSize;
+    VOID* Data;
+    UINT  DataSize;
+    UINT  Cookie;
+};
+
+class PropertyItem
+{
+public:
+    PROPID id;
+    ULONG  length;
+    WORD   type;
+    VOID*  value;
+};
+
+#else /* end of c++ typedefs */
+
+typedef enum ImageLockMode ImageLockMode;
+
+typedef struct EncoderParameter
+{
+    GUID Guid;
+    ULONG NumberOfValues;
+    ULONG Type;
+    VOID* Value;
+} EncoderParameter;
+
+typedef struct EncoderParameters
+{
+    UINT Count;
+    EncoderParameter Parameter[1];
+} EncoderParameters;
+
+typedef struct ImageCodecInfo
+{
+    CLSID Clsid;
+    GUID  FormatID;
+    const WCHAR* CodecName;
+    const WCHAR* DllName;
+    const WCHAR* FormatDescription;
+    const WCHAR* FilenameExtension;
+    const WCHAR* MimeType;
+    DWORD Flags;
+    DWORD Version;
+    DWORD SigCount;
+    DWORD SigSize;
+    const BYTE* SigPattern;
+    const BYTE* SigMask;
+} ImageCodecInfo;
+
+typedef struct BitmapData
+{
+    UINT Width;
+    UINT Height;
+    INT Stride;
+    PixelFormat PixelFormat;
+    VOID* Scan0;
+    UINT_PTR Reserved; /* undocumented: stores the lock mode */
+} BitmapData;
+
+typedef struct ImageItemData
+{
+    UINT  Size;
+    UINT  Position;
+    VOID* Desc;
+    UINT  DescSize;
+    VOID* Data;
+    UINT  DataSize;
+    UINT  Cookie;
+} ImageItemData;
+
+typedef struct PropertyItem
+{
+    PROPID id;
+    ULONG  length;
+    WORD   type;
+    VOID*  value;
+} PropertyItem;
+
+#endif /* end of c typedefs */
+
+/* property types */
+#define PropertyTagTypeByte       1
+#define PropertyTagTypeASCII      2
+#define PropertyTagTypeShort      3
+#define PropertyTagTypeLong       4
+#define PropertyTagTypeRational   5
+#define PropertyTagTypeUndefined  7
+#define PropertyTagTypeSLONG      9
+#define PropertyTagTypeSRational 10
+
+/* property IDs */
+#define PropertyTagExifIFD                0x8769
+#define PropertyTagGpsIFD                 0x8825
+
+#define PropertyTagNewSubfileType         0x00FE
+#define PropertyTagSubfileType            0x00FF
+#define PropertyTagImageWidth             0x0100
+#define PropertyTagImageHeight            0x0101
+#define PropertyTagBitsPerSample          0x0102
+#define PropertyTagCompression            0x0103
+#define PropertyTagPhotometricInterp      0x0106
+#define PropertyTagThreshHolding          0x0107
+#define PropertyTagCellWidth              0x0108
+#define PropertyTagCellHeight             0x0109
+#define PropertyTagFillOrder              0x010A
+#define PropertyTagDocumentName           0x010D
+#define PropertyTagImageDescription       0x010E
+#define PropertyTagEquipMake              0x010F
+#define PropertyTagEquipModel             0x0110
+#define PropertyTagStripOffsets           0x0111
+#define PropertyTagOrientation            0x0112
+#define PropertyTagSamplesPerPixel        0x0115
+#define PropertyTagRowsPerStrip           0x0116
+#define PropertyTagStripBytesCount        0x0117
+#define PropertyTagMinSampleValue         0x0118
+#define PropertyTagMaxSampleValue         0x0119
+#define PropertyTagXResolution            0x011A
+#define PropertyTagYResolution            0x011B
+#define PropertyTagPlanarConfig           0x011C
+#define PropertyTagPageName               0x011D
+#define PropertyTagXPosition              0x011E
+#define PropertyTagYPosition              0x011F
+#define PropertyTagFreeOffset             0x0120
+#define PropertyTagFreeByteCounts         0x0121
+#define PropertyTagGrayResponseUnit       0x0122
+#define PropertyTagGrayResponseCurve      0x0123
+#define PropertyTagT4Option               0x0124
+#define PropertyTagT6Option               0x0125
+#define PropertyTagResolutionUnit         0x0128
+#define PropertyTagPageNumber             0x0129
+#define PropertyTagTransferFuncition      0x012D
+#define PropertyTagSoftwareUsed           0x0131
+#define PropertyTagDateTime               0x0132
+#define PropertyTagArtist                 0x013B
+#define PropertyTagHostComputer           0x013C
+#define PropertyTagPredictor              0x013D
+#define PropertyTagWhitePoint             0x013E
+#define PropertyTagPrimaryChromaticities  0x013F
+#define PropertyTagColorMap               0x0140
+#define PropertyTagHalftoneHints          0x0141
+#define PropertyTagTileWidth              0x0142
+#define PropertyTagTileLength             0x0143
+#define PropertyTagTileOffset             0x0144
+#define PropertyTagTileByteCounts         0x0145
+#define PropertyTagInkSet                 0x014C
+#define PropertyTagInkNames               0x014D
+#define PropertyTagNumberOfInks           0x014E
+#define PropertyTagDotRange               0x0150
+#define PropertyTagTargetPrinter          0x0151
+#define PropertyTagExtraSamples           0x0152
+#define PropertyTagSampleFormat           0x0153
+#define PropertyTagSMinSampleValue        0x0154
+#define PropertyTagSMaxSampleValue        0x0155
+#define PropertyTagTransferRange          0x0156
+
+#define PropertyTagJPEGProc               0x0200
+#define PropertyTagJPEGInterFormat        0x0201
+#define PropertyTagJPEGInterLength        0x0202
+#define PropertyTagJPEGRestartInterval    0x0203
+#define PropertyTagJPEGLosslessPredictors 0x0205
+#define PropertyTagJPEGPointTransforms    0x0206
+#define PropertyTagJPEGQTables            0x0207
+#define PropertyTagJPEGDCTables           0x0208
+#define PropertyTagJPEGACTables           0x0209
+
+#define PropertyTagYCbCrCoefficients      0x0211
+#define PropertyTagYCbCrSubsampling       0x0212
+#define PropertyTagYCbCrPositioning       0x0213
+#define PropertyTagREFBlackWhite          0x0214
+
+#define PropertyTagICCProfile          0x8773
+
+#define PropertyTagGamma                0x0301
+#define PropertyTagICCProfileDescriptor 0x0302
+#define PropertyTagSRGBRenderingIntent  0x0303
+
+#define PropertyTagImageTitle          0x0320
+#define PropertyTagCopyright           0x8298
+
+#define PropertyTagResolutionXUnit            0x5001
+#define PropertyTagResolutionYUnit            0x5002
+#define PropertyTagResolutionXLengthUnit      0x5003
+#define PropertyTagResolutionYLengthUnit      0x5004
+#define PropertyTagPrintFlags                 0x5005
+#define PropertyTagPrintFlagsVersion          0x5006
+#define PropertyTagPrintFlagsCrop             0x5007
+#define PropertyTagPrintFlagsBleedWidth       0x5008
+#define PropertyTagPrintFlagsBleedWidthScale  0x5009
+#define PropertyTagHalftoneLPI                0x500A
+#define PropertyTagHalftoneLPIUnit            0x500B
+#define PropertyTagHalftoneDegree             0x500C
+#define PropertyTagHalftoneShape              0x500D
+#define PropertyTagHalftoneMisc               0x500E
+#define PropertyTagHalftoneScreen             0x500F
+#define PropertyTagJPEGQuality                0x5010
+#define PropertyTagGridSize                   0x5011
+#define PropertyTagThumbnailFormat            0x5012
+#define PropertyTagThumbnailWidth             0x5013
+#define PropertyTagThumbnailHeight            0x5014
+#define PropertyTagThumbnailColorDepth        0x5015
+#define PropertyTagThumbnailPlanes            0x5016
+#define PropertyTagThumbnailRawBytes          0x5017
+#define PropertyTagThumbnailSize              0x5018
+#define PropertyTagThumbnailCompressedSize    0x5019
+#define PropertyTagColorTransferFunction      0x501A
+#define PropertyTagThumbnailData              0x501B
+
+#define PropertyTagThumbnailImageWidth        0x5020
+#define PropertyTagThumbnailImageHeight       0x5021
+#define PropertyTagThumbnailBitsPerSample     0x5022
+#define PropertyTagThumbnailCompression       0x5023
+#define PropertyTagThumbnailPhotometricInterp 0x5024
+#define PropertyTagThumbnailImageDescription  0x5025
+#define PropertyTagThumbnailEquipMake         0x5026
+#define PropertyTagThumbnailEquipModel        0x5027
+#define PropertyTagThumbnailStripOffsets      0x5028
+#define PropertyTagThumbnailOrientation       0x5029
+#define PropertyTagThumbnailSamplesPerPixel   0x502A
+#define PropertyTagThumbnailRowsPerStrip      0x502B
+#define PropertyTagThumbnailStripBytesCount   0x502C
+#define PropertyTagThumbnailResolutionX       0x502D
+#define PropertyTagThumbnailResolutionY       0x502E
+#define PropertyTagThumbnailPlanarConfig      0x502F
+#define PropertyTagThumbnailResolutionUnit    0x5030
+#define PropertyTagThumbnailTransferFunction  0x5031
+#define PropertyTagThumbnailSoftwareUsed      0x5032
+#define PropertyTagThumbnailDateTime          0x5033
+#define PropertyTagThumbnailArtist            0x5034
+#define PropertyTagThumbnailWhitePoint        0x5035
+#define PropertyTagThumbnailPrimaryChromaticities 0x5036
+#define PropertyTagThumbnailYCbCrCoefficients 0x5037
+#define PropertyTagThumbnailYCbCrSubsampling  0x5038
+#define PropertyTagThumbnailYCbCrPositioning  0x5039
+#define PropertyTagThumbnailRefBlackWhite     0x503A
+#define PropertyTagThumbnailCopyRight         0x503B
+
+#define PropertyTagLuminanceTable    0x5090
+#define PropertyTagChrominanceTable  0x5091
+
+#define PropertyTagFrameDelay        0x5100
+#define PropertyTagLoopCount         0x5101
+
+#define PropertyTagPixelUnit         0x5110
+#define PropertyTagPixelPerUnitX     0x5111
+#define PropertyTagPixelPerUnitY     0x5112
+#define PropertyTagPaletteHistogram  0x5113
+
+#define PropertyTagExifExposureTime  0x829A
+#define PropertyTagExifFNumber       0x829D
+
+#define PropertyTagExifExposureProg  0x8822
+#define PropertyTagExifSpectralSense 0x8824
+#define PropertyTagExifISOSpeed      0x8827
+#define PropertyTagExifOECF          0x8828
+
+#define PropertyTagExifVer           0x9000
+#define PropertyTagExifDTOrig        0x9003
+#define PropertyTagExifDTDigitized   0x9004
+
+#define PropertyTagExifCompConfig    0x9101
+#define PropertyTagExifCompBPP       0x9102
+
+#define PropertyTagExifShutterSpeed  0x9201
+#define PropertyTagExifAperture      0x9202
+#define PropertyTagExifBrightness    0x9203
+#define PropertyTagExifExposureBias  0x9204
+#define PropertyTagExifMaxAperture   0x9205
+#define PropertyTagExifSubjectDist   0x9206
+#define PropertyTagExifMeteringMode  0x9207
+#define PropertyTagExifLightSource   0x9208
+#define PropertyTagExifFlash         0x9209
+#define PropertyTagExifFocalLength   0x920A
+#define PropertyTagExifMakerNote     0x927C
+#define PropertyTagExifUserComment   0x9286
+#define PropertyTagExifDTSubsec      0x9290
+#define PropertyTagExifDTOrigSS      0x9291
+#define PropertyTagExifDTDigSS       0x9292
+
+#define PropertyTagExifFPXVer        0xA000
+#define PropertyTagExifColorSpace    0xA001
+#define PropertyTagExifPixXDim       0xA002
+#define PropertyTagExifPixYDim       0xA003
+#define PropertyTagExifRelatedWav    0xA004
+#define PropertyTagExifInterop       0xA005
+#define PropertyTagExifFlashEnergy   0xA20B
+#define PropertyTagExifSpatialFR     0xA20C
+#define PropertyTagExifFocalXRes     0xA20E
+#define PropertyTagExifFocalYRes     0xA20F
+#define PropertyTagExifFocalResUnit  0xA210
+#define PropertyTagExifSubjectLoc    0xA214
+#define PropertyTagExifExposureIndex 0xA215
+#define PropertyTagExifSensingMethod 0xA217
+#define PropertyTagExifFileSource    0xA300
+#define PropertyTagExifSceneType     0xA301
+#define PropertyTagExifCfaPattern    0xA302
+
+#define PropertyTagGpsVer            0x0000
+#define PropertyTagGpsLatitudeRef    0x0001
+#define PropertyTagGpsLatitude       0x0002
+#define PropertyTagGpsLongitudeRef   0x0003
+#define PropertyTagGpsLongitude      0x0004
+#define PropertyTagGpsAltitudeRef    0x0005
+#define PropertyTagGpsAltitude       0x0006
+#define PropertyTagGpsGpsTime        0x0007
+#define PropertyTagGpsGpsSatellites  0x0008
+#define PropertyTagGpsGpsStatus      0x0009
+#define PropertyTagGpsGpsMeasureMode 0x000A
+#define PropertyTagGpsGpsDop         0x000B
+#define PropertyTagGpsSpeedRef       0x000C
+#define PropertyTagGpsSpeed          0x000D
+#define PropertyTagGpsTrackRef       0x000E
+#define PropertyTagGpsTrack          0x000F
+#define PropertyTagGpsImgDirRef      0x0010
+#define PropertyTagGpsImgDir         0x0011
+#define PropertyTagGpsMapDatum       0x0012
+#define PropertyTagGpsDestLatRef     0x0013
+#define PropertyTagGpsDestLat        0x0014
+#define PropertyTagGpsDestLongRef    0x0015
+#define PropertyTagGpsDestLong       0x0016
+#define PropertyTagGpsDestBearRef    0x0017
+#define PropertyTagGpsDestBear       0x0018
+#define PropertyTagGpsDestDistRef    0x0019
+#define PropertyTagGpsDestDist       0x001A
+
+#endif /* _GDIPLUSIMAGING_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdiplusinit.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdiplusinit.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdiplusinit.h	(revision 16410)
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2007 Google (Evan Stade)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _GDIPLUSINIT_H
+#define _GDIPLUSINIT_H
+
+enum DebugEventLevel
+{
+    DebugEventLevelFatal,
+    DebugEventLevelWarning
+};
+
+typedef VOID (WINAPI *DebugEventProc)(enum DebugEventLevel, CHAR *);
+typedef Status (WINAPI *NotificationHookProc)(ULONG_PTR *);
+typedef void (WINAPI *NotificationUnhookProc)(ULONG_PTR);
+
+struct GdiplusStartupInput
+{
+    UINT32 GdiplusVersion;
+    DebugEventProc DebugEventCallback;
+    BOOL SuppressBackgroundThread;
+    BOOL SuppressExternalCodecs;
+
+#ifdef __cplusplus
+    GdiplusStartupInput(DebugEventProc debugEventCallback = NULL,
+        BOOL suppressBackgroundThread = FALSE,
+        BOOL suppressExternalCodecs = FALSE)
+    {
+        GdiplusVersion = 1;
+        DebugEventCallback = debugEventCallback;
+        SuppressBackgroundThread = suppressBackgroundThread;
+        SuppressExternalCodecs = suppressExternalCodecs;
+    }
+#endif
+};
+
+struct GdiplusStartupOutput
+{
+    NotificationHookProc NotificationHook;
+    NotificationUnhookProc NotificationUnhook;
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+Status WINAPI GdiplusStartup(ULONG_PTR *, const struct GdiplusStartupInput *, struct GdiplusStartupOutput *);
+void WINAPI GdiplusShutdown(ULONG_PTR);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdiplusmem.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdiplusmem.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdiplusmem.h	(revision 16410)
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2007 Google (Evan Stade)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _GDIPLUSMEM_H
+#define _GDIPLUSMEM_H
+
+#define WINGDIPAPI __stdcall
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void* WINGDIPAPI GdipAlloc(SIZE_T) __WINE_ALLOC_SIZE(1);
+void WINGDIPAPI GdipFree(void*);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdiplusmetaheader.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdiplusmetaheader.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdiplusmetaheader.h	(revision 16410)
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2007 Google (Evan Stade)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _GDIPLUSMETAHEADER_H
+#define _GDIPLUSMETAHEADER_H
+
+typedef struct
+{
+    DWORD   iType;
+    DWORD   nSize;
+    RECTL   rclBounds;
+    RECTL   rclFrame;
+    DWORD   dSignature;
+    DWORD   nVersion;
+    DWORD   nBytes;
+    DWORD   nRecords;
+    WORD    nHandles;
+    WORD    sReserved;
+    DWORD   nDescription;
+    DWORD   offDescription;
+    DWORD   nPalEntries;
+    SIZEL   szlDevice;
+    SIZEL   szlMillimeters;
+} ENHMETAHEADER3;
+
+#include <pshpack2.h>
+
+typedef struct
+{
+    INT16  Left;
+    INT16  Top;
+    INT16  Right;
+    INT16  Bottom;
+} PWMFRect16;
+
+typedef struct
+{
+    UINT32     Key;
+    INT16      Hmf;
+    PWMFRect16 BoundingBox;
+    INT16      Inch;
+    UINT32     Reserved;
+    INT16      Checksum;
+} WmfPlaceableFileHeader;
+
+#include <poppack.h>
+
+#define GDIP_EMFPLUSFLAGS_DISPLAY       0x00000001
+
+#ifdef __cplusplus
+class MetafileHeader
+{
+public:
+    MetafileType        Type;
+    UINT                Size;
+    UINT                Version;
+    UINT                EmfPlusFlags;
+    REAL                DpiX;
+    REAL                DpiY;
+    INT                 X;
+    INT                 Y;
+    INT                 Width;
+    INT                 Height;
+    union
+    {
+        METAHEADER      WmfHeader;
+        ENHMETAHEADER3  EmfHeader;
+    };
+    INT                 EmfPlusHeaderSize;
+    INT                 LogicalDpiX;
+    INT                 LogicalDpiY;
+
+public:
+    MetafileType GetType() const { return Type; }
+
+    UINT GetMetafileSize() const { return Size; }
+
+    UINT GetVersion() const { return Version; }
+
+    UINT GetEmfPlusFlags() const { return EmfPlusFlags; }
+
+    REAL GetDpiX() const { return DpiX; }
+
+    REAL GetDpiY() const { return DpiY; }
+
+    VOID GetBounds (OUT Rect *r) const
+    {
+        r->X = X;
+        r->Y = Y;
+        r->Width = Width;
+        r->Height = Height;
+    }
+
+    BOOL IsWmf() const
+    {
+       return ((Type == MetafileTypeWmf) || (Type == MetafileTypeWmfPlaceable));
+    }
+
+    BOOL IsWmfPlaceable() const { return (Type == MetafileTypeWmfPlaceable); }
+
+    BOOL IsEmf() const { return (Type == MetafileTypeEmf); }
+
+    BOOL IsEmfOrEmfPlus() const { return (Type >= MetafileTypeEmf); }
+
+    BOOL IsEmfPlus() const { return (Type >= MetafileTypeEmfPlusOnly); }
+
+    BOOL IsEmfPlusDual() const { return (Type == MetafileTypeEmfPlusDual); }
+
+    BOOL IsEmfPlusOnly() const { return (Type == MetafileTypeEmfPlusOnly); }
+
+    BOOL IsDisplay() const
+    {
+        return IsEmfPlus() && ((EmfPlusFlags & GDIP_EMFPLUSFLAGS_DISPLAY) != 0);
+    }
+
+    const METAHEADER * GetWmfHeader() const
+    {
+        return IsWmf() ? &WmfHeader : NULL;
+    }
+
+    const ENHMETAHEADER3 * GetEmfHeader() const
+    {
+        return IsEmfOrEmfPlus() ? &EmfHeader : NULL;
+    }
+};
+#else /* end of c++ typedefs */
+
+typedef struct MetafileHeader
+{
+    MetafileType        Type;
+    UINT                Size;
+    UINT                Version;
+    UINT                EmfPlusFlags;
+    REAL                DpiX;
+    REAL                DpiY;
+    INT                 X;
+    INT                 Y;
+    INT                 Width;
+    INT                 Height;
+    union
+    {
+        METAHEADER      WmfHeader;
+        ENHMETAHEADER3  EmfHeader;
+    } DUMMYUNIONNAME;
+    INT                 EmfPlusHeaderSize;
+    INT                 LogicalDpiX;
+    INT                 LogicalDpiY;
+} MetafileHeader;
+
+#endif /* end of c typedefs */
+
+#endif /* _GDIPLUSMETAHEADER_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdipluspixelformats.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdipluspixelformats.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdipluspixelformats.h	(revision 16410)
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2007 Google (Evan Stade)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _GDIPLUSPIXELFORMATS_H
+#define _GDIPLUSPIXELFORMATS_H
+
+typedef DWORD ARGB;
+typedef INT PixelFormat;
+
+#define    PixelFormatIndexed   0x00010000
+#define    PixelFormatGDI       0x00020000
+#define    PixelFormatAlpha     0x00040000
+#define    PixelFormatPAlpha    0x00080000
+#define    PixelFormatExtended  0x00100000
+#define    PixelFormatCanonical 0x00200000
+
+#define    PixelFormatUndefined 0
+#define    PixelFormatDontCare  0
+
+#define    PixelFormat1bppIndexed       (1 | ( 1 << 8) | PixelFormatIndexed | PixelFormatGDI)
+#define    PixelFormat4bppIndexed       (2 | ( 4 << 8) | PixelFormatIndexed | PixelFormatGDI)
+#define    PixelFormat8bppIndexed       (3 | ( 8 << 8) | PixelFormatIndexed | PixelFormatGDI)
+#define    PixelFormat16bppGrayScale    (4 | (16 << 8) | PixelFormatExtended)
+#define    PixelFormat16bppRGB555       (5 | (16 << 8) | PixelFormatGDI)
+#define    PixelFormat16bppRGB565       (6 | (16 << 8) | PixelFormatGDI)
+#define    PixelFormat16bppARGB1555     (7 | (16 << 8) | PixelFormatAlpha | PixelFormatGDI)
+#define    PixelFormat24bppRGB          (8 | (24 << 8) | PixelFormatGDI)
+#define    PixelFormat32bppRGB          (9 | (32 << 8) | PixelFormatGDI)
+#define    PixelFormat32bppARGB         (10 | (32 << 8) | PixelFormatAlpha | PixelFormatGDI | PixelFormatCanonical)
+#define    PixelFormat32bppPARGB        (11 | (32 << 8) | PixelFormatAlpha | PixelFormatPAlpha | PixelFormatGDI)
+#define    PixelFormat48bppRGB          (12 | (48 << 8) | PixelFormatExtended)
+#define    PixelFormat64bppARGB         (13 | (64 << 8) | PixelFormatAlpha  | PixelFormatCanonical | PixelFormatExtended)
+#define    PixelFormat64bppPARGB        (14 | (64 << 8) | PixelFormatAlpha  | PixelFormatPAlpha | PixelFormatExtended)
+#define    PixelFormatMax               15
+
+#ifdef __cplusplus
+
+struct ColorPalette
+{
+public:
+    UINT Flags;
+    UINT Count;
+    ARGB Entries[1];
+};
+
+#else /* end of c++ typedefs */
+
+typedef struct ColorPalette
+{
+    UINT Flags;
+    UINT Count;
+    ARGB Entries[1];
+} ColorPalette;
+
+#endif  /* end of c typedefs */
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdiplustypes.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdiplustypes.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/gdiplustypes.h	(revision 16410)
@@ -0,0 +1,249 @@
+/*
+ * Copyright (C) 2007 Google (Evan Stade)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _GDIPLUSTYPES_H
+#define _GDIPLUSTYPES_H
+
+typedef float REAL;
+
+enum Status{
+    Ok                          = 0,
+    GenericError                = 1,
+    InvalidParameter            = 2,
+    OutOfMemory                 = 3,
+    ObjectBusy                  = 4,
+    InsufficientBuffer          = 5,
+    NotImplemented              = 6,
+    Win32Error                  = 7,
+    WrongState                  = 8,
+    Aborted                     = 9,
+    FileNotFound                = 10,
+    ValueOverflow               = 11,
+    AccessDenied                = 12,
+    UnknownImageFormat          = 13,
+    FontFamilyNotFound          = 14,
+    FontStyleNotFound           = 15,
+    NotTrueTypeFont             = 16,
+    UnsupportedGdiplusVersion   = 17,
+    GdiplusNotInitialized       = 18,
+    PropertyNotFound            = 19,
+    PropertyNotSupported        = 20,
+    ProfileNotFound             = 21
+};
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef BOOL (CALLBACK * ImageAbort)(VOID *);
+typedef ImageAbort DrawImageAbort;
+typedef ImageAbort GetThumbnailImageAbort;
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#ifdef __cplusplus
+
+class Point
+{
+public:
+   Point()
+   {
+       X = Y = 0;
+   }
+
+   Point(IN const Point &pt)
+   {
+       X = pt.X;
+       Y = pt.Y;
+   }
+
+   /* FIXME: missing constructor that takes a Size */
+
+   Point(IN INT x, IN INT y)
+   {
+       X = x;
+       Y = y;
+   }
+
+   Point operator+(IN const Point& pt) const
+   {
+       return Point(X + pt.X, Y + pt.Y);
+   }
+
+   Point operator-(IN const Point& pt) const
+   {
+       return Point(X - pt.X, Y - pt.Y);
+   }
+
+   BOOL Equals(IN const Point& pt)
+   {
+       return (X == pt.X) && (Y == pt.Y);
+   }
+
+public:
+    INT X;
+    INT Y;
+};
+
+class PointF
+{
+public:
+   PointF()
+   {
+       X = Y = 0.0f;
+   }
+
+   PointF(IN const PointF &pt)
+   {
+       X = pt.X;
+       Y = pt.Y;
+   }
+
+   /* FIXME: missing constructor that takes a SizeF */
+
+   PointF(IN REAL x, IN REAL y)
+   {
+       X = x;
+       Y = y;
+   }
+
+   PointF operator+(IN const PointF& pt) const
+   {
+       return PointF(X + pt.X, Y + pt.Y);
+   }
+
+   PointF operator-(IN const PointF& pt) const
+   {
+       return PointF(X - pt.X, Y - pt.Y);
+   }
+
+   BOOL Equals(IN const PointF& pt)
+   {
+       return (X == pt.X) && (Y == pt.Y);
+   }
+
+public:
+    REAL X;
+    REAL Y;
+};
+
+class PathData
+{
+public:
+    PathData()
+    {
+        Count = 0;
+        Points = NULL;
+        Types = NULL;
+    }
+
+    ~PathData()
+    {
+        if (Points != NULL)
+        {
+            delete Points;
+        }
+
+        if (Types != NULL)
+        {
+            delete Types;
+        }
+    }
+
+private:
+    PathData(const PathData &);
+    PathData& operator=(const PathData &);
+
+public:
+    INT Count;
+    PointF* Points;
+    BYTE* Types;
+};
+
+/* FIXME: missing the methods. */
+class RectF
+{
+public:
+    REAL X;
+    REAL Y;
+    REAL Width;
+    REAL Height;
+};
+
+/* FIXME: missing the methods. */
+class Rect
+{
+public:
+    INT X;
+    INT Y;
+    INT Width;
+    INT Height;
+};
+
+#else /* end of c++ typedefs */
+
+typedef struct Point
+{
+    INT X;
+    INT Y;
+} Point;
+
+typedef struct PointF
+{
+    REAL X;
+    REAL Y;
+} PointF;
+
+typedef struct PathData
+{
+    INT Count;
+    PointF* Points;
+    BYTE* Types;
+} PathData;
+
+typedef struct RectF
+{
+    REAL X;
+    REAL Y;
+    REAL Width;
+    REAL Height;
+} RectF;
+
+typedef struct Rect
+{
+    INT X;
+    INT Y;
+    INT Width;
+    INT Height;
+} Rect;
+
+typedef struct CharacterRange
+{
+    INT First;
+    INT Length;
+} CharacterRange;
+
+typedef enum Status Status;
+
+#endif /* end of c typedefs */
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/guiddef.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/guiddef.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/guiddef.h	(revision 16410)
@@ -0,0 +1,122 @@
+/*
+ * Copyright (C) 2000 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef GUID_DEFINED
+#define GUID_DEFINED
+typedef struct _GUID
+{
+#ifdef _MSC_VER
+    unsigned long  Data1;
+#else
+    unsigned int   Data1;
+#endif
+    unsigned short Data2;
+    unsigned short Data3;
+    unsigned char  Data4[ 8 ];
+} GUID;
+#endif
+
+#undef DEFINE_GUID
+
+#ifdef INITGUID
+#ifdef __cplusplus
+#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+        EXTERN_C const GUID name DECLSPEC_HIDDEN; \
+        EXTERN_C const GUID name = \
+	{ l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }
+#else
+#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+        const GUID name DECLSPEC_HIDDEN; \
+        const GUID name = \
+	{ l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }
+#endif
+#else
+#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+    EXTERN_C const GUID name DECLSPEC_HIDDEN
+#endif
+
+#define DEFINE_OLEGUID(name, l, w1, w2) \
+	DEFINE_GUID(name, l, w1, w2, 0xC0,0,0,0,0,0,0,0x46)
+
+#ifndef _GUIDDEF_H_
+#define _GUIDDEF_H_
+
+#ifndef __LPGUID_DEFINED__
+#define __LPGUID_DEFINED___
+typedef GUID *LPGUID;
+#endif
+
+#ifndef __LPCGUID_DEFINED__
+#define __LPCGUID_DEFINED__
+typedef const GUID *LPCGUID;
+#endif
+
+#ifndef __IID_DEFINED__
+#define __IID_DEFINED__
+
+typedef GUID IID,*LPIID;
+typedef GUID CLSID,*LPCLSID;
+typedef GUID FMTID,*LPFMTID;
+#define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2)
+#define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2)
+#define IsEqualFMTID(rfmtid1, rfmtid2) IsEqualGUID(rfmtid1, rfmtid2)
+#define IID_NULL   GUID_NULL
+#define CLSID_NULL GUID_NULL
+#define FMTID_NULL GUID_NULL
+
+#ifdef __midl_proxy
+#define __MIDL_CONST
+#else
+#define __MIDL_CONST const
+#endif
+
+#endif /* ndef __IID_DEFINED__ */
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+#define REFGUID             const GUID &
+#define REFCLSID            const CLSID &
+#define REFIID              const IID &
+#define REFFMTID            const FMTID &
+#else /* !defined(__cplusplus) && !defined(CINTERFACE) */
+#define REFGUID             const GUID* __MIDL_CONST
+#define REFCLSID            const CLSID* __MIDL_CONST
+#define REFIID              const IID* __MIDL_CONST
+#define REFFMTID            const FMTID* __MIDL_CONST
+#endif /* !defined(__cplusplus) && !defined(CINTERFACE) */
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+#define IsEqualGUID(rguid1, rguid2) (!memcmp(&(rguid1), &(rguid2), sizeof(GUID)))
+#else /* defined(__cplusplus) && !defined(CINTERFACE) */
+#define IsEqualGUID(rguid1, rguid2) (!memcmp(rguid1, rguid2, sizeof(GUID)))
+#endif /* defined(__cplusplus) && !defined(CINTERFACE) */
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+#include <string.h>
+inline bool operator==(const GUID& guidOne, const GUID& guidOther)
+{
+    return !memcmp(&guidOne,&guidOther,sizeof(GUID));
+}
+inline bool operator!=(const GUID& guidOne, const GUID& guidOther)
+{
+    return !(guidOne == guidOther);
+}
+#endif
+
+extern const IID GUID_NULL;
+
+#endif /* _GUIDDEF_H_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/hlguids.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/hlguids.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/hlguids.h	(revision 16410)
@@ -0,0 +1,31 @@
+/*
+ * Implementation of hyperlinking (hlink.dll)
+ *
+ * Copyright 2005 Aric Stewart for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_HLGUIDS_H__
+#define __WINE_HLGUIDS_H__
+
+DEFINE_GUID(CLSID_StdHlink,
+    0x79eac9d0, 0xbaf9, 0x11ce, 0x8c, 0x82, 0x00, 0xaa,0x00,0x4b,0xa9,0x0b);
+DEFINE_GUID(CLSID_StdHlinkBrowseContext,
+    0x79eac9d1, 0xbaf9, 0x11ce, 0x8c, 0x82, 0x00, 0xaa,0x00,0x4b,0xa9,0x0b);
+DEFINE_GUID(CLSID_IID_IExtensionServices,
+    0x79eac9cb, 0xbaf9, 0x11ce, 0x8c, 0x82, 0x00, 0xaa,0x00,0x4b,0xa9,0x0b);
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/hlink.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/hlink.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/hlink.idl	(revision 16410)
@@ -0,0 +1,440 @@
+/*
+ * Copyright 2005 Jacek Caban
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "urlmon.idl";
+
+interface IHlink;
+interface IHlinkSite;
+interface IHlinkFrame;
+interface IHlinkBrowseContext;
+
+cpp_quote("HRESULT WINAPI HlinkCreateFromMoniker(IMoniker*, LPCWSTR, LPCWSTR, IHlinkSite*, DWORD, IUnknown*, REFIID, void**);")
+cpp_quote("HRESULT WINAPI HlinkCreateFromString(LPCWSTR, LPCWSTR, LPCWSTR, IHlinkSite*, DWORD, IUnknown*, REFIID, void**);")
+cpp_quote("HRESULT WINAPI HlinkCreateFromData(IDataObject*, IHlinkSite*, DWORD dwSiteData, IUnknown*, REFIID, void**);")
+cpp_quote("HRESULT WINAPI HlinkCreateExtensionServices(LPCWSTR, HWND, LPCWSTR, LPCWSTR, IUnknown*, REFIID, void**);")
+cpp_quote("HRESULT WINAPI HlinkQueryCreateFromData(IDataObject*);")
+cpp_quote("HRESULT WINAPI HlinkClone(IHlink*, REFIID, IHlinkSite*, DWORD, void **);")
+cpp_quote("HRESULT WINAPI HlinkCreateBrowseContext(IUnknown*, REFIID, void **);")
+cpp_quote("HRESULT WINAPI HlinkNavigateToStringReference(LPCWSTR, LPCWSTR, IHlinkSite*, DWORD, IHlinkFrame*, DWORD, LPBC, IBindStatusCallback*, IHlinkBrowseContext*);")
+cpp_quote("HRESULT WINAPI HlinkNavigate(IHlink*, IHlinkFrame*, DWORD, LPBC, IBindStatusCallback*, IHlinkBrowseContext*);")
+cpp_quote("HRESULT WINAPI HlinkOnNavigate(IHlinkFrame*, IHlinkBrowseContext*, DWORD, IMoniker*, LPCWSTR, LPCWSTR, ULONG*);")
+cpp_quote("HRESULT WINAPI HlinkIsShortcut(LPCWSTR);")
+cpp_quote("HRESULT WINAPI HlinkTranslateURL(LPCWSTR,DWORD,LPWSTR*);")
+cpp_quote("HRESULT WINAPI HlinkParseDisplayName(LPBC,LPCWSTR,BOOL,ULONG*,IMoniker**);")
+cpp_quote("HRESULT WINAPI HlinkResolveMonikerForData(LPMONIKER,DWORD,LPBC,ULONG,FORMATETC*,IBindStatusCallback*,LPMONIKER);")
+
+typedef enum _HLSR_NOREDEF10 {
+    HLSR_HOME,
+    HLSR_SEARCHPAGE,
+    HLSR_HISTORYFOLDER
+} HLSR;
+
+cpp_quote("HRESULT WINAPI HlinkSetSpecialReference(ULONG uReference, LPCWSTR pwzReference);")
+cpp_quote("HRESULT WINAPI HlinkGetSpecialReference(ULONG uReference, LPWSTR *ppwzReference);")
+
+cpp_quote("#define SID_SHlinkFrame IID_IHlinkFrame")
+
+/*****************************************************************************
+ *    IHlink interface
+ */
+[
+    object,
+    uuid(79EAC9C3-BAF9-11CE-8C82-00AA004BA90B),
+    pointer_default(unique)
+]
+interface IHlink: IUnknown
+{
+    typedef [unique] IHlink *LPHLINK;
+
+    typedef enum {
+        HLNF_INTERNALJUMP          = 0x00000001,
+        HLNF_OPENINNEWWINDOW       = 0x00000002,
+        HLNF_NAVIGATINGBACK        = 0x00000004,
+        HLNF_NAVIGATINGFORWARD     = 0x00000008,
+        HLNF_NAVIGATINGTOSTACKITEM = 0x00000010,
+        HLNF_CREATENOHISTORY       = 0x00000020
+    } HLNF;
+
+    typedef enum {
+        HLINKGETREF_DEFAULT  = 0,
+        HLINKGETREF_ABSOLUTE = 1,
+        HLINKGETREF_RELATIVE = 2,
+    } HLINKGETREF;
+
+    typedef enum {
+        HLFNAMEF_DEFAULT          = 0x00000000,
+        HLFNAMEF_TRYCACHE         = 0x00000001,
+        HLFNAMEF_TRYPRETTYTARGET  = 0x00000002,
+        HLFNAMEF_TRYFULLTARGET    = 0x00000004,
+        HLFNAMEF_TRYWIN95SHORTCUT = 0x00000008
+    } HLFNAMEF;
+
+    typedef enum {
+        HLINKMISC_RELATIVE = 0x00000001,
+    } HLINKMISC;
+
+    typedef enum {
+        HLINKSETF_TARGET   = 0x00000001,
+        HLINKSETF_LOCATION = 0x00000002
+    } HLINKSETF;
+
+    HRESULT SetHlinkSite(
+        [in, unique] IHlinkSite *pihlSite,
+        [in] DWORD dwSiteData);
+
+    HRESULT GetHlinkSite(
+        [out] IHlinkSite **ppihlSite,
+        [out] DWORD *pdwSiteData);
+
+    HRESULT SetMonikerReference(
+        [in] DWORD grfHLSETF,
+        [in, unique] IMoniker *pimkTarget,
+        [in, unique] LPCWSTR pwzLocation);
+
+    HRESULT GetMonikerReference(
+        [in]  DWORD dwWhichRef,
+        [out] IMoniker **ppimkTarget,
+        [out] LPWSTR *ppwzLocation);
+
+    HRESULT SetStringReference(
+        [in] DWORD grfHLSETF,
+        [in, unique] LPCWSTR pwzTarget,
+        [in, unique] LPCWSTR pwzLocation);
+
+    HRESULT GetStringReference(
+        [in]  DWORD dwWhichRef,
+        [out] LPWSTR *ppwzTarget,
+        [out] LPWSTR *ppwzLocation);
+
+    HRESULT SetFriendlyName(
+        [in, unique] LPCWSTR pwzFriendlyName);
+
+    HRESULT GetFriendlyName(
+        [in]  DWORD grfHLFNAMEF,
+        [out] LPWSTR *ppwzFriendlyName);
+
+    HRESULT SetTargetFrameName(
+        [in, unique] LPCWSTR pwzTargetFrameName);
+
+    HRESULT GetTargetFrameName(
+        [out] LPWSTR *ppwzTargetFrameName);
+
+    HRESULT GetMiscStatus(
+        [out] DWORD *pdwStatus);
+
+    HRESULT Navigate(
+        [in] DWORD grfHLNF,
+        [in, unique] LPBC pibc,
+        [in, unique] IBindStatusCallback *pibsc,
+        [in, unique] IHlinkBrowseContext *pihlbc);
+
+    HRESULT SetAdditionalParams(
+        [in, unique] LPCWSTR pwzAdditionalParams);
+
+    HRESULT GetAdditionalParams(
+        [out] LPWSTR *ppwzAdditionalParams);
+}
+
+/*****************************************************************************
+ *    IHlink interface
+ */
+[
+    object,
+    uuid(79EAC9C2-BAF9-11CE-8C82-00AA004BA90B),
+    pointer_default(unique)
+]
+interface IHlinkSite: IUnknown
+{
+    typedef [unique] IHlinkSite *LPHLINKSITE;
+
+    typedef enum {
+        HLINKWHICHMK_CONTAINER = 1,
+        HLINKWHICHMK_BASE      = 2,
+    } HLINKWHICHMK;
+
+    HRESULT QueryService(
+        [in] DWORD dwSiteData,
+        [in] REFGUID guidService,
+        [in] REFIID riid,
+        [out, iid_is(riid)] IUnknown **ppiunk);
+
+    HRESULT GetMoniker(
+        [in] DWORD dwSiteData,
+        [in] DWORD dwAssign,
+        [in] DWORD dwWhich,
+        [out] IMoniker **ppimk);
+
+    HRESULT ReadyToNavigate(
+        [in] DWORD dwSiteData,
+        [in] DWORD dwReserved);
+
+    HRESULT OnNavigationComplete(
+        [in] DWORD dwSiteData,
+        [in] DWORD dwreserved,
+        [in] HRESULT hrError,
+        [in, unique] LPCWSTR pwzError);
+}
+
+/*****************************************************************************
+ *    IEnumHLITEM interface
+ */
+[
+    local,
+    object,
+    uuid(79EAC9C6-BAF9-11CE-8C82-00AA004BA90B),
+    pointer_default(unique)
+]
+interface IEnumHLITEM : IUnknown
+{
+    typedef [unique] IEnumHLITEM *LPENUMHLITEM;
+
+    typedef struct tagHLITEM {
+        ULONG  uHLID;
+        LPWSTR pwzFriendlyName;
+    } HLITEM;
+    typedef [unique] HLITEM *LPHLITEM;
+
+    HRESULT Next(
+        [in]  ULONG celt,
+        [out] HLITEM *rgelt,
+        [out] ULONG *pceltFetched);
+
+    HRESULT Skip(
+        [in] ULONG celt);
+
+    HRESULT Reset();
+
+    HRESULT Clone(
+        [out] IEnumHLITEM **ppienumhlitem);
+}
+
+/*****************************************************************************
+ *    IHlinkBrowseContext interface
+ */
+[
+    local,
+    object,
+    uuid(79EAC9C7-BAF9-11CE-8C82-00AA004BA90B),
+    pointer_default(unique)
+]
+interface IHlinkBrowseContext : IUnknown
+{
+    typedef [unique] IHlinkBrowseContext *LPHLINKBROWSECONTEXT;
+
+    enum {
+        HLTB_DOCKEDLEFT    = 0,
+        HLTB_DOCKEDTOP     = 1,
+        HLTB_DOCKEDRIGHT   = 2,
+        HLTB_DOCKEDBOTTOM  = 3,
+        HLTB_FLOATING      = 4
+    };
+
+    typedef struct _tagHLTBINFO {
+        ULONG uDockType;
+        RECT  rcTbPos;
+    } HLTBINFO;
+
+    enum {
+        HLBWIF_HASFRAMEWNDINFO   = 0x00000001,
+        HLBWIF_HASDOCWNDINFO     = 0x00000002,
+        HLBWIF_FRAMEWNDMAXIMIZED = 0x00000004,
+        HLBWIF_DOCWNDMAXIMIZED   = 0x00000008,
+        HLBWIF_HASWEBTOOLBARINFO = 0x00000010,
+        HLBWIF_WEBTOOLBARHIDDEN  = 0x00000020
+    };
+
+    typedef struct _tagHLBWINFO {
+        ULONG    cbSize;
+        DWORD    grfHLBWIF;
+        RECT     rcFramePos;
+        RECT     rcDocPos;
+        HLTBINFO hltbinfo;
+    } HLBWINFO;
+
+    typedef [unique] HLBWINFO *LPHLBWINFO;
+
+    enum {
+        HLID_INVALID     = 0x00000000,
+        HLID_PREVIOUS    = 0xFFFFFFFF,
+        HLID_NEXT        = 0xFFFFFFFE,
+        HLID_CURRENT     = 0xFFFFFFFD,
+        HLID_STACKBOTTOM = 0xFFFFFFFC,
+        HLID_STACKTOP    = 0xFFFFFFFB
+    };
+
+    enum {
+        HLQF_ISVALID   = 0x00000001,
+        HLQF_ISCURRENT = 0x00000002
+    };
+
+    HRESULT Register(
+        [in] DWORD reserved,
+        [in, unique] IUnknown *piunk,
+        [in, unique] IMoniker *pimk,
+        [out] DWORD *pdwRegister);
+
+cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
+cpp_quote("#undef GetObject")
+cpp_quote("#endif")
+
+    HRESULT GetObject(
+        [in, unique] IMoniker *pimk,
+        [in] BOOL fBindIfRootRegistered,
+        [out] IUnknown **ppiunk);
+
+    HRESULT Revoke(
+        [in] DWORD dwRegister);
+
+    HRESULT SetBrowseWindowInfo(
+        [in, unique] HLBWINFO *phlbwi);
+
+    HRESULT GetBrowseWindowInfo(
+        [out] HLBWINFO *phlbwi);
+
+    HRESULT SetInitialHlink(
+        [in, unique] IMoniker * pimkTarget,
+        [in, unique] LPCWSTR pwzLocation,
+        [in, unique] LPCWSTR pwzFriendlyName);
+
+    HRESULT OnNavigateHlink(
+        [in] DWORD grfHLNF,
+        [in, unique] IMoniker *pimkTarget,
+        [in, unique] LPCWSTR pwzLocation,
+        [in, unique] LPCWSTR pwzFriendlyName,
+        [out] ULONG *puHLID);
+
+    HRESULT UpdateHlink(
+        [in] ULONG uHLID,
+        [in, unique] IMoniker *pimkTarget,
+        [in, unique] LPCWSTR pwzLocation,
+        [in, unique] LPCWSTR pwzFriendlyName);
+
+    HRESULT EnumNavigationStack(
+        [in] DWORD dwReserved,
+        [in] DWORD grfHLFNAMEF,
+        [out] IEnumHLITEM **ppienumhlitem);
+
+    HRESULT QueryHlink(
+        [in] DWORD grfHLQF,
+        [in] ULONG uHLID);
+
+    HRESULT GetHlink(
+        [in] ULONG uHLID,
+        [out] IHlink **ppihl);
+
+    HRESULT SetCurrentHlink(
+        [in] ULONG uHLID);
+
+    HRESULT Clone(
+        [in, unique] IUnknown *piunkOuter,
+        [in] REFIID riid,
+        [out, iid_is(riid)] IUnknown **ppiunkObj);
+
+    HRESULT Close(
+        [in] DWORD reserved);
+}
+
+
+/*****************************************************************************
+ *    IHlinkTarget interface
+ */
+[
+    object,
+    uuid(79EAC9C4-BAF9-11CE-8C82-00AA004BA90B),
+    pointer_default(unique)
+]
+interface IHlinkTarget : IUnknown
+{
+    typedef [unique] IHlinkTarget *LPHLINKTARGET;
+
+    HRESULT SetBrowseContext(
+        [in, unique] IHlinkBrowseContext *pihlbc);
+
+    HRESULT GetBrowseContext(
+        [out] IHlinkBrowseContext **ppihlbc);
+
+    HRESULT Navigate(
+        [in] DWORD grfHLNF,
+        [in, unique] LPCWSTR pwzJumpLocation);
+
+    HRESULT GetMoniker(
+        [in,unique]  LPCWSTR pwzLocation,
+        [in] DWORD dwAssign,
+        [out] IMoniker **ppimkLocation);
+
+    HRESULT GetFriendlyName(
+        [in,unique]  LPCWSTR pwzLocation,
+        [out] LPWSTR *ppwzFriendlyName);
+}
+
+/*****************************************************************************
+ *    IHlinkFrame interface
+ */
+[
+    object,
+    uuid(79eac9c5-baf9-11ce-8c82-00aa004ba90b),
+    pointer_default(unique)
+]
+
+interface IHlinkFrame : IUnknown
+{
+    typedef IHlinkFrame *LPHLINKFRAME;
+
+    HRESULT SetBrowseContext( 
+        [in, unique] IHlinkBrowseContext * pihlbc);
+    HRESULT GetBrowseContext( 
+        [out] IHlinkBrowseContext ** ppihlbc);
+    HRESULT Navigate( 
+        [in] DWORD grfHLNF, 
+        [in, unique] LPBC pbc, 
+        [in, unique] IBindStatusCallback *pibsc, 
+        [in, unique] IHlink *pihlNavigate);
+    HRESULT OnNavigate( 
+        [in] DWORD grfHLNF, 
+        [in, unique] IMoniker *pimkTarget, 
+        [in, unique] LPCWSTR pwzLocation, 
+        [in, unique] LPCWSTR pwzFriendlyName, 
+        [in] DWORD dwreserved);
+    HRESULT UpdateHlink( 
+        [in] ULONG uHLID, 
+        [in, unique] IMoniker *pimkTarget, 
+        [in, unique] LPCWSTR pwzLocation, 
+        [in, unique] LPCWSTR pwzFriendlyName);
+}
+
+/*****************************************************************************
+ *    IExtensionServices interface
+ */
+[
+    object,
+    uuid(79eac9cb-baf9-11ce-8c82-00aa004ba90b),
+    pointer_default(unique)
+]
+
+interface IExtensionServices: IUnknown
+{
+    typedef IExtensionServices *LPEXTENSIONSERVICES;
+
+    HRESULT SetAdditionalHeaders(
+        [in] LPCWSTR pwzAdditionalHeaders);
+
+    HRESULT SetAuthenticateData(
+        [in] HWND phwnd,
+        [in] LPCWSTR pwzUsername,
+        [in] LPCWSTR pwzPassword);
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/htiframe.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/htiframe.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/htiframe.idl	(revision 16410)
@@ -0,0 +1,134 @@
+/*
+ * Copyright 2006 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "objidl.idl";
+import "oleidl.idl";
+
+/*****************************************************************************
+ *    ITargetNotify interface
+ */
+[
+    object,
+    uuid(863a99a0-21bc-11d0-82b4-00a0c90c29c5),
+    pointer_default(unique)
+]
+interface ITargetNotify : IUnknown
+{
+    typedef [unique] ITargetNotify *LPTARGETNOTIFY;
+
+    HRESULT OnCreate(
+            [in] IUnknown *pUnkDestination,
+            [in] ULONG cbCookie);
+
+    HRESULT OnReuse([in] IUnknown *pUnkDestination);
+}
+
+/*****************************************************************************
+ *    ITargetNotify2 interface
+ */
+[
+    object,
+    uuid(3050f6b1-98b5-11cf-bb82-00aa00bdce0b),
+    pointer_default(unique)
+]
+interface ITargetNotify2 : ITargetNotify
+{
+    typedef [unique] ITargetNotify2 *LPTARGETNOTIFY2;
+
+    HRESULT GetOptionString([in,out] BSTR *pbstrOptions);
+}
+
+/*****************************************************************************
+ *    ITargetFrame2 interface
+ */
+[
+    object,
+    uuid(86d52e11-94a8-11d0-82af-00c04fd5ae38),
+    pointer_default(unique)
+]
+interface ITargetFrame2 : IUnknown
+{
+    typedef [unique] ITargetFrame2 *LPTARGETFRAME2;
+
+    typedef enum {
+        FINDFRAME_NONE               = 0,
+        FINDFRAME_JUSTTESTEXISTENCE  = 1,
+        FINDFRAME_INTERNAL           = 0x80000000
+    } FINDFRAME_FLAGS;
+
+    typedef enum {
+        FRAMEOPTIONS_SCROLL_YES   = 0x00000001,
+        FRAMEOPTIONS_SCROLL_NO    = 0x00000002,
+        FRAMEOPTIONS_SCROLL_AUTO  = 0x00000004,
+        FRAMEOPTIONS_NORESIZE     = 0x00000008,
+        FRAMEOPTIONS_NO3DBORDER   = 0x00000010,
+        FRAMEOPTIONS_DESKTOP      = 0x00000020,
+        FRAMEOPTIONS_BROWSERBAND  = 0x00000040
+    } FRAMEOPTIONS_FLAGS;
+
+    HRESULT SetFrameName([in] LPCWSTR pszFrameName);
+
+    HRESULT GetFrameName([out] LPWSTR *ppszFrameName);
+
+    HRESULT GetParentFrame([out] IUnknown **ppunkParent);
+
+    HRESULT SetFrameSrc([in] LPCWSTR pszFrameSrc);
+
+    HRESULT GetFrameSrc([out] LPWSTR *ppszFrameSrc);
+
+    HRESULT GetFramesContainer([out] IOleContainer **ppContainer);
+
+    HRESULT SetFrameOptions([in] DWORD dwFlags);
+
+    HRESULT GetFrameOptions([out] DWORD *pdwFlags);
+
+    HRESULT SetFrameMargins(
+            [in] DWORD dwWidth,
+            [in] DWORD dwHeight);
+
+    HRESULT GetFrameMargins(
+            [out] DWORD *pdwWidth,
+            [out] DWORD *pdwHeight);
+
+    HRESULT FindFrame(
+            [in,unique] LPCWSTR pszTargetName,
+            [in] DWORD dwFlags,
+            [out] IUnknown **ppunkTargetFrame);
+
+    HRESULT GetTargetAlias(
+            [in,unique] LPCWSTR pszTargetName,
+             [out] LPWSTR *ppszTargetAlias);
+}
+
+/*****************************************************************************
+ *    ITargetContainer interface
+ */
+[
+    object,
+    uuid(7847ec01-2bec-11d0-82b4-00a0c90C29c5),
+    pointer_default(unique)
+]
+interface ITargetContainer : IUnknown
+{
+    typedef [unique] ITargetContainer *LPTARGETCONTAINER;
+
+    HRESULT GetFrameUrl([out] LPWSTR *ppszFrameSrc);
+
+    HRESULT GetFramesContainer([out] IOleContainer **ppContainer);
+
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/htmlhelp.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/htmlhelp.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/htmlhelp.h	(revision 16410)
@@ -0,0 +1,452 @@
+/*
+ * Copyright 2004 Jacek Caban
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __HTMLHELP_H__
+#define __HTMLHELP_H__
+
+#define HH_DISPLAY_TOPIC        0x00
+#define HH_HELP_FINDER          0x00
+#define HH_DISPLAY_TOC          0x01
+#define HH_DISPLAY_INDEX        0x02
+#define HH_DISPLAY_SEARCH       0x03
+#define HH_SET_WIN_TYPE         0x04
+#define HH_GET_WIN_TYPE         0x05
+#define HH_GET_WIN_HANDLE       0x06
+#define HH_ENUM_INFO_TYPE       0x07
+#define HH_SET_INFO_TYPE        0x08
+#define HH_SYNC                 0x09
+#define HH_RESERVED1            0x0A
+#define HH_RESERVED2            0x0B
+#define HH_RESERVED3            0x0C
+#define HH_KEYWORD_LOOKUP       0x0D
+#define HH_DISPLAY_TEXT_POPUP   0x0E
+#define HH_HELP_CONTEXT         0x0F
+#define HH_TP_HELP_CONTEXTMENU  0x10
+#define HH_TP_HELP_WM_HELP      0x11
+#define HH_CLOSE_ALL            0x12
+#define HH_ALINK_LOOKUP         0x13
+#define HH_GET_LAST_ERROR       0x14
+#define HH_ENUM_CATEGORY        0x15
+#define HH_ENUM_CATEGORY_IT     0x16
+#define HH_RESET_IT_FILTER      0x17
+#define HH_SET_INCLUSIVE_FILTER 0x18
+#define HH_SET_EXCLUSIVE_FILTER 0x19
+#define HH_INITIALIZE           0x1C
+#define HH_UNINITIALIZE         0x1D
+#define HH_SAFE_DISPLAY_TOPIC   0x20
+#define HH_PRETRANSLATEMESSAGE  0xFD
+#define HH_SET_GLOBAL_PROPERTY  0xFC
+
+#define HHWIN_PROP_TAB_AUTOHIDESHOW  0x00000001
+#define HHWIN_PROP_ONTOP             0x00000002
+#define HHWIN_PROP_NOTITLEBAR        0x00000004
+#define HHWIN_PROP_NODEF_STYLES      0x00000008
+#define HHWIN_PROP_NODEF_EXSTYLES    0x00000010
+#define HHWIN_PROP_TRI_PANE          0x00000020
+#define HHWIN_PROP_NOTB_TEXT         0x00000040
+#define HHWIN_PROP_POST_QUIT         0x00000080
+#define HHWIN_PROP_AUTO_SYNC         0x00000100
+#define HHWIN_PROP_TRACKING          0x00000200
+#define HHWIN_PROP_TAB_SEARCH        0x00000400
+#define HHWIN_PROP_TAB_HISTORY       0x00000800
+#define HHWIN_PROP_TAB_FAVORITES     0x00001000
+#define HHWIN_PROP_CHANGE_TITLE      0x00002000
+#define HHWIN_PROP_NAV_ONLY_WIN      0x00004000
+#define HHWIN_PROP_NO_TOOLBAR        0x00008000
+#define HHWIN_PROP_MENU              0x00010000
+#define HHWIN_PROP_TAB_ADVSEARCH     0x00020000
+#define HHWIN_PROP_USER_POS          0x00040000
+#define HHWIN_PROP_TAB_CUSTOM1       0x00080000
+#define HHWIN_PROP_TAB_CUSTOM2       0x00100000
+#define HHWIN_PROP_TAB_CUSTOM3       0x00200000
+#define HHWIN_PROP_TAB_CUSTOM4       0x00400000
+#define HHWIN_PROP_TAB_CUSTOM5       0x00800000
+#define HHWIN_PROP_TAB_CUSTOM6       0x01000000
+#define HHWIN_PROP_TAB_CUSTOM7       0x02000000
+#define HHWIN_PROP_TAB_CUSTOM8       0x04000000
+#define HHWIN_PROP_TAB_CUSTOM9       0x08000000
+#define HHWIN_TB_MARGIN              0x10000000
+
+#define HHWIN_PARAM_PROPERTIES     0x00000002
+#define HHWIN_PARAM_STYLES         0x00000004
+#define HHWIN_PARAM_EXSTYLES       0x00000008
+#define HHWIN_PARAM_RECT           0x00000010
+#define HHWIN_PARAM_NAV_WIDTH      0x00000020
+#define HHWIN_PARAM_SHOWSTATE      0x00000040
+#define HHWIN_PARAM_INFOTYPES      0x00000080
+#define HHWIN_PARAM_TB_FLAGS       0x00000100
+#define HHWIN_PARAM_EXPANSION      0x00000200
+#define HHWIN_PARAM_TABPOS         0x00000400
+#define HHWIN_PARAM_TABORDER       0x00000800
+#define HHWIN_PARAM_HISTORY_COUNT  0x00001000
+#define HHWIN_PARAM_CUR_TAB        0x00002000
+
+#define HHWIN_BUTTON_EXPAND      0x00000002
+#define HHWIN_BUTTON_BACK        0x00000004
+#define HHWIN_BUTTON_FORWARD     0x00000008
+#define HHWIN_BUTTON_STOP        0x00000010
+#define HHWIN_BUTTON_REFRESH     0x00000020
+#define HHWIN_BUTTON_HOME        0x00000040
+#define HHWIN_BUTTON_BROWSE_FWD  0x00000080
+#define HHWIN_BUTTON_BROWSE_BCK  0x00000100
+#define HHWIN_BUTTON_NOTES       0x00000200
+#define HHWIN_BUTTON_CONTENTS    0x00000400
+#define HHWIN_BUTTON_SYNC        0x00000800
+#define HHWIN_BUTTON_OPTIONS     0x00001000
+#define HHWIN_BUTTON_PRINT       0x00002000
+#define HHWIN_BUTTON_INDEX       0x00004000
+#define HHWIN_BUTTON_SEARCH      0x00008000
+#define HHWIN_BUTTON_HISTORY     0x00010000
+#define HHWIN_BUTTON_FAVORITES   0x00020000
+#define HHWIN_BUTTON_JUMP1       0x00040000
+#define HHWIN_BUTTON_JUMP2       0x00080000
+#define HHWIN_BUTTON_ZOOM        0x00100000
+#define HHWIN_BUTTON_TOC_NEXT    0x00200000
+#define HHWIN_BUTTON_TOC_PREV    0x00400000
+
+#define HHWIN_DEF_BUTTONS  \
+    (HHWIN_BUTTON_EXPAND | HHWIN_BUTTON_BACK | HHWIN_BUTTON_OPTIONS | HHWIN_BUTTON_PRINT)
+
+#define IDTB_EXPAND       200
+#define IDTB_CONTRACT     201
+#define IDTB_STOP         202
+#define IDTB_REFRESH      203
+#define IDTB_BACK         204
+#define IDTB_HOME         205
+#define IDTB_SYNC         206
+#define IDTB_PRINT        207
+#define IDTB_OPTIONS      208
+#define IDTB_FORWARD      209
+#define IDTB_NOTES        210
+#define IDTB_BROWSE_FWD   211
+#define IDTB_BROWSE_BACK  212
+#define IDTB_CONTENTS     213
+#define IDTB_INDEX        214
+#define IDTB_SEARCH       215
+#define IDTB_HISTORY      216
+#define IDTB_FAVORITES    217
+#define IDTB_JUMP1        218
+#define IDTB_JUMP2        219
+#define IDTB_CUSTOMIZE    221
+#define IDTB_ZOOM         222
+#define IDTB_TOC_NEXT     223
+#define IDTB_TOC_PREV     224
+
+#define HHN_FIRST          (0U-860U)
+#define HHN_LAST           (0U-879U)
+#define HHN_NAVCOMPLETE    HHN_FIRST
+#define HHN_TRACK          (HHN_FIRST-1)
+#define HHN_WINDOW_CREATE  (HHN_FIRST-2)
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct tagHH_NOTIFY {
+    NMHDR hdr;
+    PCSTR pszurl;
+} HH_NOTIFY;
+
+typedef struct tagHH_POPUPA {
+    int       cbStruct;
+    HINSTANCE hinst;
+    UINT      idString;
+    LPCSTR    pszText;
+    POINT     pt;
+    COLORREF  clrForeground;
+    COLORREF  clrBackground;
+    RECT      rcMargins;
+    LPCSTR    pszFont;
+} HH_POPUPA;
+
+typedef struct tagHH_POPUPW {
+    int       cbStruct;
+    HINSTANCE hinst;
+    UINT      idString;
+    LPCWSTR   pszText;
+    POINT     pt;
+    COLORREF  clrForeground;
+    COLORREF  clrBackground;
+    RECT      rcMargins;
+    LPCWSTR   pszFont;
+} HH_POPUPW;
+
+DECL_WINELIB_TYPE_AW(HH_POPUP)
+
+typedef struct tagHH_ALINKA {
+    int    cbStruct;
+    BOOL   fReserved;
+    LPCSTR pszKeywords;
+    LPCSTR pszUrl;
+    LPCSTR pszMsgText;
+    LPCSTR pszMsgTitle;
+    LPCSTR pszWindow;
+    BOOL   fIndexOnFail;
+} HH_ALINKA;
+
+typedef struct tagHH_ALINKW {
+    int     cbStruct;
+    BOOL    fReserved;
+    LPCWSTR pszKeywords;
+    LPCWSTR pszUrl;
+    LPCWSTR pszMsgText;
+    LPCWSTR pszMsgTitle;
+    LPCWSTR pszWindow;
+    BOOL    fIndexOnFail;
+} HH_ALINKW;
+
+DECL_WINELIB_TYPE_AW(HH_ALINK)
+
+enum {
+    HHWIN_NAVTYPE_TOC,
+    HHWIN_NAVTYPE_INDEX,
+    HHWIN_NAVTYPE_SEARCH,
+    HHWIN_NAVTYPE_FAVORITES,
+    HHWIN_NAVTYPE_HISTORY,
+    HHWIN_NAVTYPE_AUTHOR,
+    HHWIN_NAVTYPE_CUSTOM_FIRST = 11
+};
+
+enum {
+    IT_INCLUSIVE,
+    IT_EXCLUSIVE,
+    IT_HIDDEN
+};
+
+typedef struct tagHH_ENUM_IT {
+    int    cbStruct;
+    int    iType;
+    LPCSTR pszCatName;
+    LPCSTR pszITName;
+    LPCSTR pszITDescription;
+} HH_ENUM_IT, *PHH_ENUM_IT;
+
+typedef struct tagHH_ENUM_CAT {
+    int    cbStruct;
+    LPCSTR pszCatName;
+    LPCSTR pszCatDescription;
+} HH_ENUM_CAT, *PHH_ENUM_CAT;
+
+typedef struct tagHH_SET_INFOTYPE {
+    int    cbStruct;
+    LPCSTR pszCatName;
+    LPCSTR pszInfoTypeName;
+} HH_SET_INFOTYPE;
+
+typedef DWORD HH_INFOTYPE, *PHH_INFOTYPE;
+
+enum {
+    HHWIN_NAVTAB_TOP,
+    HHWIN_NAVTAB_LEFT,
+    HHWIN_NAVTAB_BOTTOM
+};
+
+#define HH_MAX_TABS 19
+
+enum {
+    HH_TAB_CONTENTS,
+    HH_TAB_INDEX,
+    HH_TAB_SEARCH,
+    HH_TAB_FAVORITES,
+    HH_TAB_HISTORY,
+    HH_TAB_AUTHOR,
+    HH_TAB_CUSTOM_FIRST = 11,
+    HH_TAB_CUSTOM_LAST = HH_MAX_TABS
+};
+
+#define HH_MAX_TABS_CUSTOM        (HH_TAB_CUSTOM_LAST-HH_TAB_CUSTOM_FIRST+1)
+#define HH_FTS_DEFAULT_PROXIMITY  -1
+
+typedef struct tagHH_FTS_QUERYA {
+    int    cbStruct;
+    BOOL   fUniCodeStrings;
+    LPCSTR pszSearchQuery;
+    LONG   iProximity;
+    BOOL   fStemmedSearch;
+    BOOL   fTitleOnly;
+    BOOL   fExecute;
+    LPCSTR pszWindow;
+} HH_FTS_QUERYA;
+
+typedef struct tagHH_FTS_QUERYW {
+    int     cbStruct;
+    BOOL    fUniCodeStrings;
+    LPCWSTR pszSearchQuery;
+    LONG    iProximity;
+    BOOL    fStemmedSearch;
+    BOOL    fTitleOnly;
+    BOOL    fExecute;
+    LPCWSTR pszWindow;
+} HH_FTS_QUERYW;
+
+DECL_WINELIB_TYPE_AW(HH_FTS_QUERY)
+
+typedef struct tagHH_WINTYPEA {
+    int          cbStruct;
+    BOOL         fUniCodeStrings;
+    LPCSTR       pszType;
+    DWORD        fsValidMembers;
+    DWORD        fsWinProperties;
+    LPCSTR       pszCaption;
+    DWORD        dwStyles;
+    DWORD        dwExStyles;
+    RECT         rcWindowPos;
+    int          nShowState;
+    HWND         hwndHelp;
+    HWND         hwndCaller;
+    PHH_INFOTYPE paInfoTypes;
+    HWND         hwndToolBar;
+    HWND         hwndNavigation;
+    HWND         hwndHTML;
+    int          iNavWidth;
+    RECT         rcHTML;
+    LPCSTR       pszToc;
+    LPCSTR       pszIndex;
+    LPCSTR       pszFile;
+    LPCSTR       pszHome;
+    DWORD        fsToolBarFlags;
+    BOOL         fNotExpanded;
+    int          curNavType;
+    int          tabpos;
+    int          idNotify;
+    BYTE         tabOrder[HH_MAX_TABS+1];
+    int          cHistory;
+    LPCSTR       pszJump1;
+    LPCSTR       pszJump2;
+    LPCSTR       pszUrlJump1;
+    LPCSTR       pszUrlJump2;
+    RECT         rcMinSize;
+    int          cbInfoTypes;
+    LPCSTR       pszCustomTabs;
+} HH_WINTYPEA, *PHH_WINTYPEA;
+
+typedef struct tagHH_WINTYPEW {
+    int          cbStruct;
+    BOOL         fUniCodeStrings;
+    LPCWSTR      pszType;
+    DWORD        fsValidMembers;
+    DWORD        fsWinProperties;
+    LPCWSTR      pszCaption;
+    DWORD        dwStyles;
+    DWORD        dwExStyles;
+    RECT         rcWindowPos;
+    int          nShowState;
+    HWND         hwndHelp;
+    HWND         hwndCaller;
+    PHH_INFOTYPE paInfoTypes;
+    HWND         hwndToolBar;
+    HWND         hwndNavigation;
+    HWND         hwndHTML;
+    int          iNavWidth;
+    RECT         rcHTML;
+    LPCWSTR      pszToc;
+    LPCWSTR      pszIndex;
+    LPCWSTR      pszFile;
+    LPCWSTR      pszHome;
+    DWORD        fsToolBarFlags;
+    BOOL         fNotExpanded;
+    int          curNavType;
+    int          tabpos;
+    int          idNotify;
+    BYTE         tabOrder[HH_MAX_TABS+1];
+    int          cHistory;
+    LPCWSTR      pszJump1;
+    LPCWSTR      pszJump2;
+    LPCWSTR      pszUrlJump1;
+    LPCWSTR      pszUrlJump2;
+    RECT         rcMinSize;
+    int          cbInfoTypes;
+    LPCWSTR      pszCustomTabs;
+} HH_WINTYPEW, *PHH_WINTYPEW;
+
+DECL_WINELIB_TYPE_AW(HH_WINTYPE)
+
+enum {
+    HHACT_TAB_CONTENTS,
+    HHACT_TAB_INDEX,
+    HHACT_TAB_SEARCH,
+    HHACT_TAB_HISTORY,
+    HHACT_TAB_FAVORITES,
+    HHACT_EXPAND,
+    HHACT_CONTRACT,
+    HHACT_BACK,
+    HHACT_FORWARD,
+    HHACT_STOP,
+    HHACT_REFRESH,
+    HHACT_HOME,
+    HHACT_SYNC,
+    HHACT_OPTIONS,
+    HHACT_PRINT,
+    HHACT_HIGHLIGHT,
+    HHACT_CUSTOMIZE,
+    HHACT_JUMP1,
+    HHACT_JUMP2,
+    HHACT_ZOOM,
+    HHACT_TOC_NEXT,
+    HHACT_TOC_PREV,
+    HHACT_NOTES,
+    HHACT_LAST_ENUM
+};
+
+typedef struct tagHH_NTRACKA {
+    NMHDR        hdr;
+    PCSTR        pszCurUrl;
+    int          idAction;
+    PHH_WINTYPEA phhWinType;
+} HH_NTRACKA;
+
+typedef struct tagHH_NTRACKW {
+    NMHDR        hdr;
+    PCSTR        pszCurUrl;
+    int          idAction;
+    PHH_WINTYPEW phhWinType;
+} HH_NTRACKW;
+
+DECL_WINELIB_TYPE_AW(HH_NTRACK)
+
+HWND WINAPI HtmlHelpA(HWND,LPCSTR,UINT,DWORD_PTR);
+HWND WINAPI HtmlHelpW(HWND,LPCWSTR,UINT,DWORD_PTR);
+#define HtmlHelp WINELIB_NAME_AW(HtmlHelp)
+
+#define ATOM_HTMLHELP_API_ANSI    (LPTSTR)14
+#define ATOM_HTMLHELP_API_UNICODE (LPTSTR)15
+
+typedef enum tagHH_GPROPID {
+    HH_GPROPID_SINGLETHREAD     = 1,
+    HH_GPROPID_TOOLBAR_MARGIN   = 2,
+    HH_GPROPID_UI_LANGUAGE      = 3,
+    HH_GPROPID_CURRENT_SUBSET   = 4,
+    HH_GPROPID_CONTENT_LANGUAGE = 5
+} HH_GPROPID;
+
+#ifdef __WIDL_OAIDL_H
+
+typedef struct tagHH_GLOBAL_PROPERTY
+{
+    HH_GPROPID  id;
+    VARIANT     var;
+} HH_GLOBAL_PROPERTY ;
+
+#endif /* __WIDL_OAIDL_H */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __HTMLHELP_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/i_cryptasn1tls.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/i_cryptasn1tls.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/i_cryptasn1tls.h	(revision 16410)
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2007 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_I_CRYPTASN1TLS_H
+#define __WINE_I_CRYPTASN1TLS_H
+
+typedef void *ASN1decoding_t;
+typedef void *ASN1encoding_t;
+typedef void *ASN1module_t;
+typedef DWORD HCRYPTASN1MODULE;
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ASN1decoding_t WINAPI I_CryptGetAsn1Decoder(HCRYPTASN1MODULE);
+ASN1encoding_t WINAPI I_CryptGetAsn1Encoder(HCRYPTASN1MODULE);
+BOOL        WINAPI I_CryptInstallAsn1Module(ASN1module_t, DWORD, void*);
+BOOL        WINAPI I_CryptUninstallAsn1Module(HCRYPTASN1MODULE);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* __WINE_I_CRYPTASN1TLS_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/iads.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/iads.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/iads.idl	(revision 16410)
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2005 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "oaidl.idl";
+
+typedef enum
+{
+    ADS_RIGHT_DS_CREATE_CHILD         = 0x00000001,
+    ADS_RIGHT_DS_DELETE_CHILD         = 0x00000002,
+    ADS_RIGHT_ACTRL_DS_LIST           = 0x00000004,
+    ADS_RIGHT_DS_SELF                 = 0x00000008,
+    ADS_RIGHT_DS_READ_PROP            = 0x00000010,
+    ADS_RIGHT_DS_WRITE_PROP           = 0x00000020,
+    ADS_RIGHT_DS_DELETE_TREE          = 0x00000040,
+    ADS_RIGHT_DS_LIST_OBJECT          = 0x00000080,
+    ADS_RIGHT_DS_CONTROL_ACCESS       = 0x00000100,
+
+    ADS_RIGHT_DELETE                  = 0x00010000,
+    ADS_RIGHT_READ_CONTROL            = 0x00020000,
+    ADS_RIGHT_WRITE_DAC               = 0x00040000,
+    ADS_RIGHT_WRITE_OWNER             = 0x00080000,
+    ADS_RIGHT_SYNCHRONIZE             = 0x00100000,
+    ADS_RIGHT_ACCESS_SYSTEM_SECURITY  = 0x00200000,
+
+    ADS_RIGHT_GENERIC_ALL             = 0x10000000,
+    ADS_RIGHT_GENERIC_EXECUTE         = 0x20000000,
+    ADS_RIGHT_GENERIC_WRITE           = 0x40000000,
+    ADS_RIGHT_GENERIC_READ            = 0x80000000
+} ADS_RIGHTS_ENUM;
+
+/*****************************************************************************
+ *    IADsContainer interface
+ */
+[
+    object,
+    uuid(001677d0-fd16-11ce-abc4-02608c9e7553)
+]
+interface IADsContainer: IDispatch
+{
+    [propget] HRESULT Count(
+        [out, retval] long *retval);
+    [propget, restricted] HRESULT _NewEnum(
+        [out, retval] IUnknown **retval);
+    [propget] HRESULT Filter(
+        [out, retval] VARIANT *pvFilter);
+    [propput] HRESULT Filter(
+        [in] VARIANT vFilter);
+    [propget] HRESULT Hints(
+        [out, retval] VARIANT *pvHints);
+    [propput] HRESULT Hints(
+        [in] VARIANT vHints);
+    HRESULT GetObject(
+        [in] BSTR bstrClassName,
+        [in] BSTR bstrRelativeName,
+        [out, retval] IDispatch **ppObject);
+    HRESULT Create(
+        [in] BSTR bstrClassName,
+        [in] BSTR bstrRelativeName,
+        [out, retval] IDispatch **ppObject);
+    HRESULT Delete(
+        [in] BSTR bstrClassName,
+        [in] BSTR bstrRelativeName);
+    HRESULT CopyHere(
+        [in] BSTR bstrSourceName,
+        [in] BSTR bstrNewName,
+        [out, retval] IDispatch **ppObject);
+    HRESULT MoveHere(
+        [in] BSTR bstrSourceName,
+        [in] BSTR bstrNewName,
+        [out, retval] IDispatch **ppObject);
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/icftypes.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/icftypes.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/icftypes.idl	(revision 16410)
@@ -0,0 +1,69 @@
+/*
+ * Types for the ICF api
+ *
+ * Copyright 2007 Jeff Latimer
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+import "wtypes.idl";
+
+typedef enum NET_FW_PROFILE_TYPE_
+{
+    NET_FW_PROFILE_DOMAIN,
+    NET_FW_PROFILE_STANDARD,
+    NET_FW_PROFILE_CURRENT,
+    NET_FW_PROFILE_TYPE_MAX
+}   NET_FW_PROFILE_TYPE;
+
+typedef enum NET_FW_IP_VERSION_
+{
+    NET_FW_IP_VERSION_V4,
+    NET_FW_IP_VERSION_V6,
+    NET_FW_IP_VERSION_ANY,
+    NET_FW_IP_VERSION_MAX
+}   NET_FW_IP_VERSION;
+
+typedef enum NET_FW_POLICY_TYPE_
+{
+    NET_FW_POLICY_GROUP,
+    NET_FW_POLICY_LOCAL,
+    NET_FW_POLICY_EFFECTIVE,
+    NET_FW_POLICY_TYPE_MAX
+}   NET_FW_POLICY_TYPE;
+
+typedef enum NET_FW_SCOPE_
+{
+    NET_FW_SCOPE_ALL,
+    NET_FW_SCOPE_LOCAL_SUBNET,
+    NET_FW_SCOPE_CUSTOM,
+    NET_FW_SCOPE_MAX
+}   NET_FW_SCOPE;
+
+typedef enum NET_FW_SERVICE_TYPE_
+{
+    NET_FW_SERVICE_FILE_AND_PRINT,
+    NET_FW_SERVICE_UPNP,
+    NET_FW_SERVICE_REMOTE_DESKTOP,
+    NET_FW_SERVICE_NONE,
+    NET_FW_SERVICE_TYPE_MAX
+}   NET_FW_SERVICE_TYPE;
+
+typedef enum NET_FW_IP_PROTOCOL_
+{
+    NET_FW_IP_PROTOCOL_TCP =  6,
+    NET_FW_IP_PROTOCOL_UDP = 17
+}   NET_FW_IP_PROTOCOL;
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/icm.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/icm.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/icm.h	(revision 16410)
@@ -0,0 +1,431 @@
+/*
+ * Copyright 2004 (C) Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_ICM_H
+#define __WINE_ICM_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef HANDLE HPROFILE;
+typedef HPROFILE *PHPROFILE;
+typedef HANDLE HTRANSFORM;
+
+typedef DWORD TAGTYPE, *PTAGTYPE, *LPTAGTYPE;
+
+typedef char COLOR_NAME[32];
+typedef COLOR_NAME *PCOLOR_NAME, *LPCOLOR_NAME;
+
+typedef struct tagNAMED_PROFILE_INFO
+{
+    DWORD       dwFlags;
+    DWORD       dwCount;
+    DWORD       dwCountDevCoordinates;
+    COLOR_NAME  szPrefix;
+    COLOR_NAME  szSuffix;
+} NAMED_PROFILE_INFO, *PNAMED_PROFILE_INFO, *LPNAMED_PROFILE_INFO;
+
+#define MAX_COLOR_CHANNELS  8
+
+struct GRAYCOLOR
+{
+    WORD    gray;
+};
+
+struct RGBCOLOR
+{
+    WORD    red;
+    WORD    green;
+    WORD    blue;
+};
+
+struct CMYKCOLOR
+{
+    WORD    cyan;
+    WORD    magenta;
+    WORD    yellow;
+    WORD    black;
+};
+
+struct XYZCOLOR
+{
+    WORD    X;
+    WORD    Y;
+    WORD    Z;
+};
+
+struct YxyCOLOR
+{
+    WORD    Y;
+    WORD    x;
+    WORD    y;
+};
+
+struct LabCOLOR
+{
+    WORD    L;
+    WORD    a;
+    WORD    b;
+};
+
+struct GENERIC3CHANNEL
+{
+    WORD    ch1;
+    WORD    ch2;
+    WORD    ch3;
+};
+
+struct NAMEDCOLOR
+{
+    DWORD   dwIndex;
+};
+
+struct HiFiCOLOR
+{
+    BYTE    channel[MAX_COLOR_CHANNELS];
+};
+
+typedef union tagCOLOR
+{
+    struct GRAYCOLOR        gray;
+    struct RGBCOLOR         rgb;
+    struct CMYKCOLOR        cmyk;
+    struct XYZCOLOR         XYZ;
+    struct YxyCOLOR         Yxy;
+    struct LabCOLOR         Lab;
+    struct GENERIC3CHANNEL  gen3ch;
+    struct NAMEDCOLOR       named;
+    struct HiFiCOLOR        hifi;
+    struct
+    {
+        DWORD reserved1;
+        VOID *reserved2;
+    } DUMMYSTRUCTNAME;
+} COLOR, *PCOLOR, *LPCOLOR;
+
+typedef enum
+{
+    COLOR_GRAY  = 1,
+    COLOR_RGB,
+    COLOR_XYZ,
+    COLOR_Yxy,
+    COLOR_Lab,
+    COLOR_3_CHANNEL,
+    COLOR_CMYK,
+    COLOR_5_CHANNEL,
+    COLOR_6_CHANNEL,
+    COLOR_7_CHANNEL,
+    COLOR_8_CHANNEL,
+    COLOR_NAMED,
+} COLORTYPE, *PCOLORTYPE, *LPCOLORTYPE;
+
+typedef enum
+{
+    BM_x555RGB     = 0x00,
+    BM_565RGB      = 0x01,
+    BM_RGBTRIPLETS = 0x02,
+    BM_BGRTRIPLETS = 0x04,
+    BM_xRGBQUADS   = 0x08,
+    BM_10b_RGB     = 0x09,
+    BM_16b_RGB     = 0x0a,
+    BM_xBGRQUADS   = 0x10,
+    BM_CMYKQUADS   = 0x20,
+    BM_x555XYZ     = 0x101,
+    BM_x555Yxz,
+    BM_x555Lab,
+    BM_x555G3CH,
+    BM_XYZTRIPLETS = 0x201,
+    BM_YxyTRIPLETS,
+    BM_LabTRIPLETS,
+    BM_G3CHTRIPLETS,
+    BM_5CHANNEL,
+    BM_6CHANNEL,
+    BM_7CHANNEL,
+    BM_8CHANNEL,
+    BM_GRAY,
+    BM_xXYZQUADS   = 0x301,
+    BM_xYxyQUADS,
+    BM_xLabQUADS,
+    BM_xG3CHQUADS,
+    BM_KYMCQUADS,
+    BM_10b_XYZ     = 0x401,
+    BM_10b_Yxy,
+    BM_10b_Lab,
+    BM_10b_G3CH,
+    BM_NAMED_INDEX,
+    BM_16b_XYZ     = 0x501,
+    BM_16b_Yxy,
+    BM_16b_Lab,
+    BM_16b_G3CH,
+    BM_16b_GRAY,
+} BMFORMAT, *PBMFORMAT, *LPBMFORMAT;
+
+typedef BOOL (CALLBACK *PBMCALLBACKFN)(ULONG,ULONG,LPARAM);
+typedef PBMCALLBACKFN LPPBMCALLBACKFN;
+
+typedef struct tagPROFILEHEADER
+{
+    DWORD phSize;
+    DWORD phCMMType;
+    DWORD phVersion;
+    DWORD phClass;
+    DWORD phDataColorSpace;
+    DWORD phConnectionSpace;
+    DWORD phDateTime[3];
+    DWORD phSignature;
+    DWORD phPlatform;
+    DWORD phProfileFlags;
+    DWORD phManufacturer;
+    DWORD phModel;
+    DWORD phAttributes[2];
+    DWORD phRenderingIntent;
+    CIEXYZ phIlluminant;
+    DWORD phCreator;
+    BYTE phReserved[44];
+} PROFILEHEADER, *PPROFILEHEADER, *LPPROFILEHEADER;
+
+typedef struct tagPROFILE
+{
+    DWORD dwType;
+    PVOID pProfileData;
+    DWORD cbDataSize;
+} PROFILE, *PPROFILE, *LPPROFILE;
+
+#define ENUM_TYPE_VERSION   0x0300
+
+typedef struct tagENUMTYPEA
+{
+    DWORD   dwSize;
+    DWORD   dwVersion;
+    DWORD   dwFields;
+    PCSTR   pDeviceName;
+    DWORD   dwMediaType;
+    DWORD   dwDitheringMode;
+    DWORD   dwResolution[2];
+    DWORD   dwCMMType;
+    DWORD   dwClass;
+    DWORD   dwDataColorSpace;
+    DWORD   dwConnectionSpace;
+    DWORD   dwSignature;
+    DWORD   dwPlatform;
+    DWORD   dwProfileFlags;
+    DWORD   dwManufacturer;
+    DWORD   dwModel;
+    DWORD   dwAttributes[2];
+    DWORD   dwRenderingIntent;
+    DWORD   dwCreator;
+    DWORD   dwDeviceClass;
+} ENUMTYPEA, *PENUMTYPEA, *LPENUMTYPEA;
+
+typedef struct tagENUMTYPEW
+{
+    DWORD   dwSize;
+    DWORD   dwVersion;
+    DWORD   dwFields;
+    PCWSTR  pDeviceName;
+    DWORD   dwMediaType;
+    DWORD   dwDitheringMode;
+    DWORD   dwResolution[2];
+    DWORD   dwCMMType;
+    DWORD   dwClass;
+    DWORD   dwDataColorSpace;
+    DWORD   dwConnectionSpace;
+    DWORD   dwSignature;
+    DWORD   dwPlatform;
+    DWORD   dwProfileFlags;
+    DWORD   dwManufacturer;
+    DWORD   dwModel;
+    DWORD   dwAttributes[2];
+    DWORD   dwRenderingIntent;
+    DWORD   dwCreator;
+    DWORD   dwDeviceClass;
+} ENUMTYPEW, *PENUMTYPEW, *LPENUMTYPEW;
+
+#define ET_DEVICENAME       0x00000001
+#define ET_MEDIATYPE        0x00000002
+#define ET_DITHERMODE       0x00000004
+#define ET_RESOLUTION       0x00000008
+#define ET_CMMTYPE          0x00000010
+#define ET_CLASS            0x00000020
+#define ET_DATACOLORSPACE   0x00000040
+#define ET_CONNECTIONSPACE  0x00000080
+#define ET_SIGNATURE        0x00000100
+#define ET_PLATFORM         0x00000200
+#define ET_PROFILEFLAGS     0x00000400
+#define ET_MANUFACTURER     0x00000800
+#define ET_MODEL            0x00001000
+#define ET_ATTRIBUTES       0x00002000
+#define ET_RENDERINGINTENT  0x00004000
+#define ET_CREATOR          0x00008000
+#define ET_DEVICECLASS      0x00010000
+
+struct _tagCOLORMATCHSETUPA;
+struct _tagCOLORMATCHSETUPW;
+
+typedef BOOL (WINAPI *PCMSCALLBACKA)(struct _tagCOLORMATCHSETUPA*,LPARAM);
+typedef BOOL (WINAPI *PCMSCALLBACKW)(struct _tagCOLORMATCHSETUPW*,LPARAM);
+
+typedef struct _tagCOLORMATCHSETUPA
+{
+    DWORD dwSize;
+    DWORD dwVersion;
+    DWORD dwFlags;
+    HWND  hwndOwner;
+    PCSTR pSourceName;
+    PCSTR pDisplayName;
+    PCSTR pPrinterName;
+    DWORD dwRenderIntent;
+    DWORD dwProofingIntent;
+    PSTR  pMonitorProfile;
+    DWORD ccMonitorProfile;
+    PSTR  pPrinterProfile;
+    DWORD ccPrinterProfile;
+    PSTR  pTargetProfile;
+    DWORD ccTargetProfile;
+    DLGPROC lpfnHook;
+    LPARAM lParam;
+    PCMSCALLBACKA lpfnApplyCallback;
+    LPARAM lParamApplyCallback;
+} COLORMATCHSETUPA, *PCOLORMATCHSETUPA, *LPCOLORMATCHSETUPA;
+
+typedef struct _tagCOLORMATCHSETUPW
+{
+    DWORD dwSize;
+    DWORD dwVersion;
+    DWORD dwFlags;
+    HWND  hwndOwner;
+    PCWSTR pSourceName;
+    PCWSTR pDisplayName;
+    PCWSTR pPrinterName;
+    DWORD dwRenderIntent;
+    DWORD dwProofingIntent;
+    PWSTR  pMonitorProfile;
+    DWORD ccMonitorProfile;
+    PWSTR  pPrinterProfile;
+    DWORD ccPrinterProfile;
+    PWSTR  pTargetProfile;
+    DWORD ccTargetProfile;
+    DLGPROC lpfnHook;
+    LPARAM lParam;
+    PCMSCALLBACKW lpfnApplyCallback;
+    LPARAM lParamApplyCallback;
+} COLORMATCHSETUPW, *PCOLORMATCHSETUPW, *LPCOLORMATCHSETUPW;
+
+BOOL       WINAPI AssociateColorProfileWithDeviceA(PCSTR,PCSTR,PCSTR);
+BOOL       WINAPI AssociateColorProfileWithDeviceW(PCWSTR,PCWSTR,PCWSTR);
+#define    AssociateColorProfileWithDevice WINELIB_NAME_AW(AssociateColorProfileWithDevice)
+BOOL       WINAPI CheckBitmapBits(HTRANSFORM,PVOID,BMFORMAT,DWORD,DWORD,DWORD,PBYTE,PBMCALLBACKFN,LPARAM);
+BOOL       WINAPI CheckColors(HTRANSFORM,PCOLOR,DWORD,COLORTYPE,PBYTE);
+BOOL       WINAPI ConvertColorNameToIndex(HPROFILE,PCOLOR_NAME,PDWORD,DWORD);
+BOOL       WINAPI ConvertIndexToColorName(HPROFILE,PDWORD,PCOLOR_NAME,DWORD);
+BOOL       WINAPI CloseColorProfile(HPROFILE);
+HTRANSFORM WINAPI CreateColorTransformA(LPLOGCOLORSPACEA,HPROFILE,HPROFILE,DWORD);
+HTRANSFORM WINAPI CreateColorTransformW(LPLOGCOLORSPACEW,HPROFILE,HPROFILE,DWORD);
+#define    CreateColorTransform WINELIB_NAME_AW(CreateColorTransform)
+BOOL       WINAPI CreateDeviceLinkProfile(PHPROFILE,DWORD,PDWORD,DWORD,DWORD,PBYTE*,DWORD);
+HTRANSFORM WINAPI CreateMultiProfileTransform(PHPROFILE,DWORD,PDWORD,DWORD,DWORD,DWORD);
+BOOL       WINAPI CreateProfileFromLogColorSpaceA(LPLOGCOLORSPACEA,PBYTE*);
+BOOL       WINAPI CreateProfileFromLogColorSpaceW(LPLOGCOLORSPACEW,PBYTE*);
+#define    CreateProfileFromLogColorSpace WINELIB_NAME_AW(CreateProfileFromLogColorSpace)
+BOOL       WINAPI DeleteColorTransform(HTRANSFORM);
+BOOL       WINAPI DisassociateColorProfileFromDeviceA(PCSTR,PCSTR,PCSTR);
+BOOL       WINAPI DisassociateColorProfileFromDeviceW(PCWSTR,PCWSTR,PCWSTR);
+#define    DisassociateColorProfileFromDevice WINELIB_NAME_AW(DisassociateColorProfileFromDevice)
+BOOL       WINAPI EnumColorProfilesA(PCSTR,PENUMTYPEA,PBYTE,PDWORD,PDWORD);
+BOOL       WINAPI EnumColorProfilesW(PCWSTR,PENUMTYPEW,PBYTE,PDWORD,PDWORD);
+#define    EnumColorProfiles  WINELIB_NAME_AW(EnumColorProfiles)
+DWORD      WINAPI GenerateCopyFilePaths(LPCWSTR,LPCWSTR,LPBYTE,DWORD,LPWSTR,LPDWORD,LPWSTR,LPDWORD,DWORD);
+DWORD      WINAPI GetCMMInfo(HTRANSFORM,DWORD);
+BOOL       WINAPI GetColorDirectoryA(PCSTR,PSTR,PDWORD);
+BOOL       WINAPI GetColorDirectoryW(PCWSTR,PWSTR,PDWORD);
+#define    GetColorDirectory WINELIB_NAME_AW(GetColorDirectory)
+BOOL       WINAPI GetColorProfileElement(HPROFILE,TAGTYPE,DWORD,PDWORD,PVOID,PBOOL);
+BOOL       WINAPI GetColorProfileElementTag(HPROFILE,DWORD,PTAGTYPE);
+BOOL       WINAPI GetColorProfileFromHandle(HPROFILE,PBYTE,PDWORD);
+BOOL       WINAPI GetColorProfileHeader(HPROFILE,PPROFILEHEADER);
+BOOL       WINAPI GetCountColorProfileElements(HPROFILE,PDWORD);
+BOOL       WINAPI GetNamedProfileInfo(HPROFILE,PNAMED_PROFILE_INFO);
+BOOL       WINAPI GetPS2ColorRenderingDictionary(HPROFILE,DWORD,PBYTE,PDWORD,PBOOL);
+BOOL       WINAPI GetPS2ColorRenderingIntent(HPROFILE,DWORD,PBYTE,PDWORD);
+BOOL       WINAPI GetPS2ColorSpaceArray(HPROFILE,DWORD,DWORD,PBYTE,PDWORD,PBOOL);
+BOOL       WINAPI GetStandardColorSpaceProfileA(PCSTR,DWORD,PSTR,PDWORD);
+BOOL       WINAPI GetStandardColorSpaceProfileW(PCWSTR,DWORD,PWSTR,PDWORD);
+#define    GetStandardColorSpaceProfile WINELIB_NAME_AW(GetStandardColorSpaceProfile)
+BOOL       WINAPI InstallColorProfileA(PCSTR,PCSTR);
+BOOL       WINAPI InstallColorProfileW(PCWSTR,PCWSTR);
+#define    InstallColorProfile WINELIB_NAME_AW(InstallColorProfile)
+BOOL       WINAPI IsColorProfileTagPresent(HPROFILE,TAGTYPE,PBOOL);
+BOOL       WINAPI IsColorProfileValid(HPROFILE,PBOOL);
+HPROFILE   WINAPI OpenColorProfileA(PPROFILE,DWORD,DWORD,DWORD);
+HPROFILE   WINAPI OpenColorProfileW(PPROFILE,DWORD,DWORD,DWORD);
+#define    OpenColorProfile WINELIB_NAME_AW(OpenColorProfile)
+BOOL       WINAPI RegisterCMMA(PCSTR,DWORD,PCSTR);
+BOOL       WINAPI RegisterCMMW(PCWSTR,DWORD,PCWSTR);
+#define    RegisterCMM WINELIB_NAME_AW(RegisterCMM)
+BOOL       WINAPI SelectCMM(DWORD id);
+BOOL       WINAPI SetColorProfileElement(HPROFILE,TAGTYPE,DWORD,PDWORD,PVOID);
+BOOL       WINAPI SetColorProfileElementReference(HPROFILE,TAGTYPE,TAGTYPE);
+BOOL       WINAPI SetColorProfileElementSize(HPROFILE,TAGTYPE,DWORD);
+BOOL       WINAPI SetColorProfileHeader(HPROFILE,PPROFILEHEADER);
+BOOL       WINAPI SetStandardColorSpaceProfileA(PCSTR,DWORD,PSTR);
+BOOL       WINAPI SetStandardColorSpaceProfileW(PCWSTR,DWORD,PWSTR);
+#define    SetStandardColorSpaceProfile WINELIB_NAME_AW(SetStandardColorSpaceProfile)
+BOOL       WINAPI SetupColorMatchingA(PCOLORMATCHSETUPA);
+BOOL       WINAPI SetupColorMatchingW(PCOLORMATCHSETUPW);
+#define    SetupColorMatching WINELIB_NAME_AW(SetupColorMatching)
+BOOL       WINAPI SpoolerCopyFileEvent(LPWSTR,LPWSTR,DWORD);
+BOOL       WINAPI TranslateBitmapBits(HTRANSFORM,PVOID,BMFORMAT,DWORD,DWORD,DWORD,PVOID,BMFORMAT,DWORD,PBMCALLBACKFN,ULONG);
+BOOL       WINAPI TranslateColors(HTRANSFORM,PCOLOR,DWORD,COLORTYPE,PCOLOR,COLORTYPE);
+BOOL       WINAPI UninstallColorProfileA(PCSTR,PCSTR,BOOL);
+BOOL       WINAPI UninstallColorProfileW(PCWSTR,PCWSTR,BOOL);
+#define    UninstallColorProfile WINELIB_NAME_AW(UninstallColorProfile)
+BOOL       WINAPI UnregisterCMMA(PCSTR,DWORD);
+BOOL       WINAPI UnregisterCMMW(PCWSTR,DWORD);
+#define    UnregisterCMM WINELIB_NAME_AW(UnregisterCMM)
+
+#define PROFILE_FILENAME    1
+#define PROFILE_MEMBUFFER   2
+
+#define PROFILE_READ        1
+#define PROFILE_READWRITE   2
+
+#define SPACE_XYZ   0x58595A20   /* 'XYZ ' */
+#define SPACE_Lab   0x4C616220   /* 'Lab ' */
+#define SPACE_Luv   0x4C757620   /* 'Luv ' */
+#define SPACE_YCbCr 0x59436272   /* 'YCbr' */
+#define SPACE_Yxy   0x59787920   /* 'Yxy ' */
+#define SPACE_RGB   0x52474220   /* 'RGB ' */
+#define SPACE_GRAY  0x47524159   /* 'GRAY' */
+#define SPACE_HSV   0x48535620   /* 'HSV ' */
+#define SPACE_HLS   0x484C5320   /* 'HLS ' */
+#define SPACE_CMYK  0x434D594B   /* 'CMYK' */
+#define SPACE_CMY   0x434D5920   /* 'CMY ' */
+#define SPACE_2_CHANNEL 0x32434c52   /* '2CLR' */
+#define SPACE_3_CHANNEL 0x33434c52   /* '3CLR' */
+#define SPACE_4_CHANNEL 0x34434c52   /* '4CLR' */
+#define SPACE_5_CHANNEL 0x35434c52   /* '5CLR' */
+#define SPACE_6_CHANNEL 0x36434c52   /* '6CLR' */
+#define SPACE_7_CHANNEL 0x37434c52   /* '7CLR' */
+#define SPACE_8_CHANNEL 0x38434c52   /* '8CLR' */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_ICM_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/icmpapi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/icmpapi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/icmpapi.h	(revision 16410)
@@ -0,0 +1,53 @@
+/*
+ * Interface to the ICMP functions.
+ *
+ * Copyright (C) 1999 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_ICMPAPI_H
+#define __WINE_ICMPAPI_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+HANDLE WINAPI IcmpCreateFile(
+    VOID
+    );
+
+BOOL WINAPI IcmpCloseHandle(
+    HANDLE  IcmpHandle
+    );
+
+DWORD WINAPI IcmpSendEcho(
+    HANDLE                 IcmpHandle,
+    IPAddr                 DestinationAddress,
+    LPVOID                 RequestData,
+    WORD                   RequestSize,
+    PIP_OPTION_INFORMATION RequestOptions,
+    LPVOID                 ReplyBuffer,
+    DWORD                  ReplySize,
+    DWORD                  Timeout
+    );
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_ICMPAPI_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/idispids.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/idispids.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/idispids.h	(revision 16410)
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2005 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_IDISPIDS_H__
+#define __WINE_IDISPIDS_H__
+
+#define DISPID_READYSTATE (-525)
+#define DISPID_READYSTATECHANGE (-609)
+#define DISPID_AMBIENT_TRANSFERPRIORITY (-728)
+#define DISPID_AMBIENT_OFFLINEIFNOTCONNECTED (-5501)
+#define DISPID_AMBIENT_SILENT (-5502)
+
+#ifndef DISPID_AMBIENT_CODEPAGE
+#define DISPID_AMBIENT_CODEPAGE (-725)
+#define DISPID_AMBIENT_CHARSET (-727)
+#endif /* DISPID_AMBIENT_CODEPAGE */
+
+#endif /* __WINE_IDISPIDS_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/imagehlp.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/imagehlp.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/imagehlp.h	(revision 16410)
@@ -0,0 +1,1340 @@
+/*
+ * Declarations for IMAGEHLP
+ *
+ * Copyright (C) 1998 Patrik Stridvall
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_IMAGEHLP_H
+#define __WINE_IMAGEHLP_H
+
+#include <wintrust.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+#define IMAGEAPI WINAPI
+#define DBHLPAPI IMAGEAPI
+
+#define API_VERSION_NUMBER 7 		/* 7 is the default */
+
+/***********************************************************************
+ * Types
+ */
+
+typedef PVOID DIGEST_HANDLE;
+
+/***********************************************************************
+ * Enums/Defines
+ */
+
+typedef enum _IMAGEHLP_STATUS_REASON {
+  BindOutOfMemory,
+  BindRvaToVaFailed,
+  BindNoRoomInImage,
+  BindImportModuleFailed,
+  BindImportProcedureFailed,
+  BindImportModule,
+  BindImportProcedure,
+  BindForwarder,
+  BindForwarderNOT,
+  BindImageModified,
+  BindExpandFileHeaders,
+  BindImageComplete,
+  BindMismatchedSymbols,
+  BindSymbolsNotUpdated
+} IMAGEHLP_STATUS_REASON;
+
+#define BIND_NO_BOUND_IMPORTS  0x00000001
+#define BIND_NO_UPDATE         0x00000002
+#define BIND_ALL_IMAGES        0x00000004
+#define BIND_CACHE_IMPORT_DLLS 0x00000008
+
+#define CERT_PE_IMAGE_DIGEST_DEBUG_INFO      0x01
+#define CERT_PE_IMAGE_DIGEST_RESOURCES       0x02
+#define CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO 0x04
+#define CERT_PE_IMAGE_DIGEST_NON_PE_INFO     0x08
+
+#define CERT_SECTION_TYPE_ANY 0xFF
+
+#define SPLITSYM_REMOVE_PRIVATE    0x00000001
+#define SPLITSYM_EXTRACT_ALL       0x00000002
+#define SPLITSYM_SYMBOLPATH_IS_SRC 0x00000004
+
+#define FRAME_FPO    0
+#define FRAME_TRAP   1
+#define FRAME_TSS    2
+#define FRAME_NONFPO 3
+
+#define CHECKSUM_SUCCESS         0
+#define CHECKSUM_OPEN_FAILURE    1
+#define CHECKSUM_MAP_FAILURE     2
+#define CHECKSUM_MAPVIEW_FAILURE 3
+#define CHECKSUM_UNICODE_FAILURE 4
+
+typedef enum _ADDRESS_MODE {
+  AddrMode1616,
+  AddrMode1632,
+  AddrModeReal,
+  AddrModeFlat
+} ADDRESS_MODE;
+
+#define SYMOPT_CASE_INSENSITIVE  0x00000001
+#define SYMOPT_UNDNAME           0x00000002
+#define SYMOPT_DEFERRED_LOADS    0x00000004
+#define SYMOPT_NO_CPP            0x00000008
+#define SYMOPT_LOAD_LINES        0x00000010
+#define SYMOPT_OMAP_FIND_NEAREST 0x00000020
+
+#define SYMF_OMAP_GENERATED   0x00000001
+#define SYMF_OMAP_MODIFIED    0x00000002
+/* 0x00000004 has been obsoleted */
+#define SYMF_REGISTER         0x00000008
+#define SYMF_REGREL           0x00000010
+#define SYMF_FRAMEREL         0x00000020
+#define SYMF_PARAMETER        0x00000040
+#define SYMF_LOCAL            0x00000080
+#define SYMF_CONSTANT         0x00000100
+#define SYMF_EXPORT           0x00000200
+#define SYMF_FORWARDER        0x00000400
+#define SYMF_FUNCTION         0x00000800
+
+typedef enum {
+  SymNone,
+  SymCoff,
+  SymCv,
+  SymPdb,
+  SymExport,
+  SymDeferred,
+  SymSym,
+  SymDia,
+  SymVirtual,
+  NumSymTypes
+} SYM_TYPE;
+
+#define UNDNAME_COMPLETE               0x0000
+#define UNDNAME_NO_LEADING_UNDERSCORES 0x0001
+#define UNDNAME_NO_MS_KEYWORDS         0x0002
+#define UNDNAME_NO_FUNCTION_RETURNS    0x0004
+#define UNDNAME_NO_ALLOCATION_MODEL    0x0008
+#define UNDNAME_NO_ALLOCATION_LANGUAGE 0x0010
+#define UNDNAME_NO_MS_THISTYPE         0x0020
+#define UNDNAME_NO_CV_THISTYPE         0x0040
+#define UNDNAME_NO_THISTYPE            0x0060
+#define UNDNAME_NO_ACCESS_SPECIFIERS   0x0080
+#define UNDNAME_NO_THROW_SIGNATURES    0x0100
+#define UNDNAME_NO_MEMBER_TYPE         0x0200
+#define UNDNAME_NO_RETURN_UDT_MODEL    0x0400
+#define UNDNAME_32_BIT_DECODE          0x0800
+#define UNDNAME_NAME_ONLY              0x1000
+#define UNDNAME_NO_ARGUMENTS           0x2000
+#define UNDNAME_NO_SPECIAL_SYMS        0x4000
+
+#define CBA_DEFERRED_SYMBOL_LOAD_START          0x00000001
+#define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE       0x00000002
+#define CBA_DEFERRED_SYMBOL_LOAD_FAILURE        0x00000003
+#define CBA_SYMBOLS_UNLOADED                    0x00000004
+#define CBA_DUPLICATE_SYMBOL                    0x00000005
+
+/***********************************************************************
+ * Structures
+ */
+
+typedef struct _LOADED_IMAGE
+{
+    PSTR                        ModuleName;
+    HANDLE                      hFile;
+    PUCHAR                      MappedAddress;
+    PIMAGE_NT_HEADERS           FileHeader;
+    PIMAGE_SECTION_HEADER       LastRvaSection;
+    ULONG                       NumberOfSections;
+    PIMAGE_SECTION_HEADER       Sections;
+    ULONG                       Characteristics;
+    BOOLEAN                     fSystemImage;
+    BOOLEAN                     fDOSImage;
+    BOOLEAN                     fReadOnly;
+    UCHAR                       Version;
+    LIST_ENTRY                  Links;
+    ULONG                       SizeOfImage;
+} LOADED_IMAGE, *PLOADED_IMAGE;
+
+typedef struct _API_VERSION {
+  USHORT  MajorVersion;
+  USHORT  MinorVersion;
+  USHORT  Revision;
+  USHORT  Reserved;
+} API_VERSION, *LPAPI_VERSION;
+
+typedef struct _IMAGE_DEBUG_INFORMATION {
+  LIST_ENTRY List;
+  DWORD        Size;
+  PVOID        MappedBase;
+  USHORT       Machine;
+  USHORT       Characteristics;
+  DWORD        CheckSum;
+  DWORD        ImageBase;
+  DWORD        SizeOfImage;
+
+  DWORD NumberOfSections;
+  PIMAGE_SECTION_HEADER Sections;
+
+  DWORD ExportedNamesSize;
+  PSTR ExportedNames;
+
+  DWORD NumberOfFunctionTableEntries;
+  PIMAGE_FUNCTION_ENTRY FunctionTableEntries;
+  DWORD LowestFunctionStartingAddress;
+  DWORD HighestFunctionEndingAddress;
+
+  DWORD NumberOfFpoTableEntries;
+  PFPO_DATA FpoTableEntries;
+
+  DWORD SizeOfCoffSymbols;
+  PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols;
+
+  DWORD SizeOfCodeViewSymbols;
+  PVOID CodeViewSymbols;
+
+  PSTR ImageFilePath;
+  PSTR ImageFileName;
+  PSTR DebugFilePath;
+
+  DWORD TimeDateStamp;
+
+  BOOL RomImage;
+  PIMAGE_DEBUG_DIRECTORY DebugDirectory;
+  DWORD  NumberOfDebugDirectories;
+
+  DWORD Reserved[3];
+} IMAGE_DEBUG_INFORMATION, *PIMAGE_DEBUG_INFORMATION;
+
+typedef struct _ADDRESS {
+    DWORD          Offset;
+    WORD           Segment;
+    ADDRESS_MODE Mode;
+} ADDRESS, *LPADDRESS;
+
+typedef struct _ADDRESS64 {
+    DWORD64        Offset;
+    WORD           Segment;
+    ADDRESS_MODE   Mode;
+} ADDRESS64, *LPADDRESS64;
+
+typedef struct _KDHELP {
+  DWORD Thread;
+  DWORD ThCallbackStack;
+  DWORD NextCallback;
+  DWORD FramePointer;
+  DWORD KiCallUserMode;
+  DWORD KeUserCallbackDispatcher;
+  DWORD SystemRangeStart;
+} KDHELP, *PKDHELP;
+
+typedef struct _KDHELP64 {
+    DWORD64 Thread;
+    DWORD   ThCallbackStack;
+    DWORD   ThCallbackBStore;
+    DWORD   NextCallback;
+    DWORD   FramePointer;
+    DWORD64 KiCallUserMode;
+    DWORD64 KeUserCallbackDispatcher;
+    DWORD64 SystemRangeStart;
+    DWORD64 Reserved[8];
+} KDHELP64, *PKDHELP64;
+
+typedef struct _STACKFRAME {
+  ADDRESS AddrPC;
+  ADDRESS AddrReturn;
+  ADDRESS AddrFrame;
+  ADDRESS AddrStack;
+  PVOID     FuncTableEntry;
+  DWORD     Params[4];
+  BOOL    Far;
+  BOOL    Virtual;
+  DWORD     Reserved[3];
+  KDHELP  KdHelp;
+} STACKFRAME, *LPSTACKFRAME;
+
+typedef struct _STACKFRAME64 {
+    ADDRESS64 AddrPC;
+    ADDRESS64 AddrReturn;
+    ADDRESS64 AddrFrame;
+    ADDRESS64 AddrStack;
+    ADDRESS64 AddrBStore;
+    PVOID     FuncTableEntry;
+    DWORD64   Params[4];
+    BOOL      Far;
+    BOOL      Virtual;
+    DWORD64   Reserved[3];
+    KDHELP64  KdHelp;
+} STACKFRAME64, *LPSTACKFRAME64;
+
+typedef struct _SOURCEFILE {
+    DWORD64                     ModBase;
+    PCHAR                       FileName;
+} SOURCEFILE, *PSOURCEFILE;
+
+typedef struct _SOURCEFILEW
+{
+    DWORD64                     ModBase;
+    PWSTR                       FileName;
+} SOURCEFILEW, *PSOURCEFILEW;
+
+typedef struct _IMAGEHLP_STACK_FRAME
+{
+  DWORD InstructionOffset;
+  DWORD ReturnOffset;
+  DWORD FrameOffset;
+  DWORD StackOffset;
+  DWORD BackingStoreOffset;
+  DWORD FuncTableEntry;
+  DWORD Params[4];
+  DWORD Reserved[5];
+  DWORD Virtual;
+  DWORD Reserved2;
+} IMAGEHLP_STACK_FRAME, *PIMAGEHLP_STACK_FRAME;
+
+typedef VOID IMAGEHLP_CONTEXT, *PIMAGEHLP_CONTEXT;
+
+typedef struct _IMAGEHLP_SYMBOL {
+  DWORD SizeOfStruct;
+  DWORD Address;
+  DWORD Size;
+  DWORD Flags;
+  DWORD MaxNameLength;
+  CHAR  Name[ANYSIZE_ARRAY];
+} IMAGEHLP_SYMBOL, *PIMAGEHLP_SYMBOL;
+
+typedef struct _IMAGEHLP_SYMBOLW {
+  DWORD SizeOfStruct;
+  DWORD Address;
+  DWORD Size;
+  DWORD Flags;
+  DWORD MaxNameLength;
+  WCHAR Name[ANYSIZE_ARRAY];
+} IMAGEHLP_SYMBOLW, *PIMAGEHLP_SYMBOLW;
+
+typedef struct _IMAGEHLP_SYMBOL64
+{
+    DWORD                       SizeOfStruct;
+    DWORD64                     Address;
+    DWORD                       Size;
+    DWORD                       Flags;
+    DWORD                       MaxNameLength;
+    CHAR                        Name[1];
+} IMAGEHLP_SYMBOL64, *PIMAGEHLP_SYMBOL64;
+
+typedef struct _IMAGEHLP_SYMBOLW64
+{
+    DWORD                       SizeOfStruct;
+    DWORD64                     Address;
+    DWORD                       Size;
+    DWORD                       Flags;
+    DWORD                       MaxNameLength;
+    WCHAR                       Name[1];
+} IMAGEHLP_SYMBOLW64, *PIMAGEHLP_SYMBOLW64;
+
+typedef struct _IMAGEHLP_MODULE {
+  DWORD      SizeOfStruct;
+  DWORD      BaseOfImage;
+  DWORD      ImageSize;
+  DWORD      TimeDateStamp;
+  DWORD      CheckSum;
+  DWORD      NumSyms;
+  SYM_TYPE   SymType;
+  CHAR       ModuleName[32];
+  CHAR       ImageName[256];
+  CHAR       LoadedImageName[256];
+} IMAGEHLP_MODULE, *PIMAGEHLP_MODULE;
+
+typedef struct _IMAGEHLP_MODULEW {
+  DWORD      SizeOfStruct;
+  DWORD      BaseOfImage;
+  DWORD      ImageSize;
+  DWORD      TimeDateStamp;
+  DWORD      CheckSum;
+  DWORD      NumSyms;
+  SYM_TYPE   SymType;
+  WCHAR      ModuleName[32];
+  WCHAR      ImageName[256];
+  WCHAR      LoadedImageName[256];
+} IMAGEHLP_MODULEW, *PIMAGEHLP_MODULEW;
+
+typedef struct _IMAGEHLP_MODULE64
+{
+    DWORD                       SizeOfStruct;
+    DWORD64                     BaseOfImage;
+    DWORD                       ImageSize;
+    DWORD                       TimeDateStamp;
+    DWORD                       CheckSum;
+    DWORD                       NumSyms;
+    SYM_TYPE                    SymType;
+    CHAR                        ModuleName[32];
+    CHAR                        ImageName[256];
+    CHAR                        LoadedImageName[256];
+    CHAR                        LoadedPdbName[256];
+    DWORD                       CVSig;
+    CHAR                        CVData[MAX_PATH*3];
+    DWORD                       PdbSig;
+    GUID                        PdbSig70;
+    DWORD                       PdbAge;
+    BOOL                        PdbUnmatched;
+    BOOL                        DbgUnmatched;
+    BOOL                        LineNumbers;
+    BOOL                        GlobalSymbols;
+    BOOL                        TypeInfo;
+    BOOL                        SourceIndexed;
+    BOOL                        Publics;
+} IMAGEHLP_MODULE64, *PIMAGEHLP_MODULE64;
+
+typedef struct _IMAGEHLP_MODULEW64
+{
+    DWORD                       SizeOfStruct;
+    DWORD64                     BaseOfImage;
+    DWORD                       ImageSize;
+    DWORD                       TimeDateStamp;
+    DWORD                       CheckSum;
+    DWORD                       NumSyms;
+    SYM_TYPE                    SymType;
+    WCHAR                       ModuleName[32];
+    WCHAR                       ImageName[256];
+    WCHAR                       LoadedImageName[256];
+    WCHAR                       LoadedPdbName[256];
+    DWORD                       CVSig;
+    WCHAR                       CVData[MAX_PATH*3];
+    DWORD                       PdbSig;
+    GUID                        PdbSig70;
+    DWORD                       PdbAge;
+    BOOL                        PdbUnmatched;
+    BOOL                        DbgUnmatched;
+    BOOL                        LineNumbers;
+    BOOL                        GlobalSymbols;
+    BOOL                        TypeInfo;
+    BOOL                        SourceIndexed;
+    BOOL                        Publics;
+} IMAGEHLP_MODULEW64, *PIMAGEHLP_MODULEW64;
+
+typedef struct _IMAGEHLP_LINE {
+  DWORD SizeOfStruct;
+  PVOID Key;
+  DWORD LineNumber;
+  PCHAR FileName;
+  DWORD Address;
+} IMAGEHLP_LINE, *PIMAGEHLP_LINE;
+
+typedef struct _IMAGEHLP_LINEW {
+  DWORD SizeOfStruct;
+  PVOID Key;
+  DWORD LineNumber;
+  PWSTR FileName;
+  DWORD Address;
+} IMAGEHLP_LINEW, *PIMAGEHLP_LINEW;
+
+typedef struct _IMAGEHLP_LINE64 {
+  DWORD SizeOfStruct;
+  PVOID Key;
+  DWORD LineNumber;
+  PCHAR FileName;
+  DWORD64 Address;
+} IMAGEHLP_LINE64, *PIMAGEHLP_LINE64;
+
+typedef struct _IMAGEHLP_LINEW64 {
+  DWORD SizeOfStruct;
+  PVOID Key;
+  DWORD LineNumber;
+  PWSTR FileName;
+  DWORD64 Address;
+} IMAGEHLP_LINEW64, *PIMAGEHLP_LINEW64;
+
+typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD {
+  DWORD   SizeOfStruct;
+  DWORD   BaseOfImage;
+  DWORD   CheckSum;
+  DWORD   TimeDateStamp;
+  CHAR    FileName[MAX_PATH];
+  BOOLEAN Reparse;
+} IMAGEHLP_DEFERRED_SYMBOL_LOAD, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD;
+
+typedef struct _IMAGEHLP_DUPLICATE_SYMBOL {
+  DWORD              SizeOfStruct;
+  DWORD              NumberOfDups;
+  PIMAGEHLP_SYMBOL Symbol;
+  ULONG              SelectedSymbol;
+} IMAGEHLP_DUPLICATE_SYMBOL, *PIMAGEHLP_DUPLICATE_SYMBOL;
+
+typedef enum _IMAGEHLP_SYMBOL_TYPE_INFO
+{
+    TI_GET_SYMTAG,
+    TI_GET_SYMNAME,
+    TI_GET_LENGTH,
+    TI_GET_TYPE,
+    TI_GET_TYPEID,
+    TI_GET_BASETYPE,
+    TI_GET_ARRAYINDEXTYPEID,
+    TI_FINDCHILDREN,
+    TI_GET_DATAKIND,
+    TI_GET_ADDRESSOFFSET,
+    TI_GET_OFFSET,
+    TI_GET_VALUE,
+    TI_GET_COUNT,
+    TI_GET_CHILDRENCOUNT,
+    TI_GET_BITPOSITION,
+    TI_GET_VIRTUALBASECLASS,
+    TI_GET_VIRTUALTABLESHAPEID,
+    TI_GET_VIRTUALBASEPOINTEROFFSET,
+    TI_GET_CLASSPARENTID,
+    TI_GET_NESTED,
+    TI_GET_SYMINDEX,
+    TI_GET_LEXICALPARENT,
+    TI_GET_ADDRESS,
+    TI_GET_THISADJUST,
+    TI_GET_UDTKIND,
+    TI_IS_EQUIV_TO,
+    TI_GET_CALLING_CONVENTION,
+} IMAGEHLP_SYMBOL_TYPE_INFO;
+
+#define IMAGEHLP_GET_TYPE_INFO_UNCACHED            0x00000001
+#define IMAGEHLP_GET_TYPE_INFO_CHILDREN            0x00000002
+typedef struct _IMAGEHLP_GET_TYPE_INFO_PARAMS
+{
+    ULONG       SizeOfStruct;
+    ULONG       Flags;
+    ULONG       NumIds;
+    PULONG      TypeIds;
+    ULONG64     TagFilter;
+    ULONG       NumReqs;
+    IMAGEHLP_SYMBOL_TYPE_INFO* ReqKinds;
+    PULONG_PTR  ReqOffsets;
+    PULONG      ReqSizes;
+    ULONG_PTR   ReqStride;
+    ULONG_PTR   BufferSize;
+    PVOID       Buffer;
+    ULONG       EntriesMatched;
+    ULONG       EntriesFilled;
+    ULONG64     TagsFound;
+    ULONG64     AllReqsValid;
+    ULONG       NumReqsValid;
+    PULONG64    ReqsValid;
+} IMAGEHLP_GET_TYPE_INFO_PARAMS, *PIMAGEHLP_GET_TYPE_INFO_PARAMS;
+
+#define IMAGEHLP_SYMBOL_INFO_VALUEPRESENT          1
+#define IMAGEHLP_SYMBOL_INFO_REGISTER              SYMF_REGISTER
+#define IMAGEHLP_SYMBOL_INFO_REGRELATIVE           SYMF_REGREL
+#define IMAGEHLP_SYMBOL_INFO_FRAMERELATIVE         SYMF_FRAMEREL
+#define IMAGEHLP_SYMBOL_INFO_PARAMETER             SYMF_PARAMETER
+#define IMAGEHLP_SYMBOL_INFO_LOCAL                 SYMF_LOCAL
+#define IMAGEHLP_SYMBOL_INFO_CONSTANT              SYMF_CONSTANT
+#define IMAGEHLP_SYMBOL_FUNCTION                   SYMF_FUNCTION
+
+#define MAX_SYM_NAME                               2000
+
+typedef struct _SYMBOL_INFO {
+    ULONG       SizeOfStruct;
+    ULONG       TypeIndex;
+    ULONG64     Reserved[2];
+    ULONG       info;
+    ULONG       Size;
+    ULONG64     ModBase;
+    ULONG       Flags;
+    ULONG64     Value;
+    ULONG64     Address;
+    ULONG       Register;
+    ULONG       Scope;
+    ULONG       Tag;
+    ULONG       NameLen;
+    ULONG       MaxNameLen;
+    CHAR        Name[1];
+} SYMBOL_INFO, *PSYMBOL_INFO;
+
+typedef struct _SYMBOL_INFOW
+{
+    ULONG       SizeOfStruct;
+    ULONG       TypeIndex;
+    ULONG64     Reserved[2];
+    ULONG       Index;
+    ULONG       Size;
+    ULONG64     ModBase;
+    ULONG       Flags;
+    ULONG64     Value;
+    ULONG64     Address;
+    ULONG       Register;
+    ULONG       Scope;
+    ULONG       Tag;
+    ULONG       NameLen;
+    ULONG       MaxNameLen;
+    WCHAR       Name[1];
+} SYMBOL_INFOW, *PSYMBOL_INFOW;
+
+typedef struct _SYMBOL_INFO_PACKAGE
+{
+    SYMBOL_INFO si;
+    CHAR        name[MAX_SYM_NAME+1];
+} SYMBOL_INFO_PACKAGE, *PSYMBOL_INFO_PACKAGE;
+
+typedef struct _SYMBOL_INFO_PACKAGEW
+{
+    SYMBOL_INFOW si;
+    WCHAR        name[MAX_SYM_NAME+1];
+} SYMBOL_INFO_PACKAGEW, *PSYMBOL_INFO_PACKAGEW;
+
+#define DBHHEADER_DEBUGDIRS     0x1
+typedef struct _MODLOAD_DATA
+{
+    DWORD               ssize;
+    DWORD               ssig;
+    PVOID               data;
+    DWORD               size;
+    DWORD               flags;
+} MODLOAD_DATA, *PMODLOAD_DATA;
+
+typedef struct _SRCCODEINFO
+{
+    DWORD       SizeOfStruct;
+    PVOID       Key;
+    DWORD64     ModBase;
+    CHAR        Obj[MAX_PATH+1];
+    CHAR        FileName[MAX_PATH+1];
+    DWORD       LineNumber;
+    DWORD64     Address;
+} SRCCODEINFO, *PSRCCODEINFO;
+
+typedef struct _SRCCODEINFOW
+{
+    DWORD       SizeOfStruct;
+    PVOID       Key;
+    DWORD64     ModBase;
+    WCHAR       Obj[MAX_PATH+1];
+    WCHAR       FileName[MAX_PATH+1];
+    DWORD       LineNumber;
+    DWORD64     Address;
+} SRCCODEINFOW, *PSRCCODEINFOW;
+
+/***********************************************************************
+ * Callbacks
+ */
+
+typedef BOOL (CALLBACK *PENUMDIRTREE_CALLBACK)(
+  PCSTR, PVOID
+);
+typedef BOOL (CALLBACK *PENUMDIRTREE_CALLBACKW)(
+  PCWSTR, PVOID
+);
+
+typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK)(
+  PCSTR ModuleName, ULONG ModuleBase, ULONG ModuleSize,
+  PVOID UserContext
+);
+typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK64)(
+  PCSTR, DWORD64, ULONG, PVOID
+);
+typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACKW64)(
+  PCWSTR, DWORD64, ULONG, PVOID
+);
+
+typedef BOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACK)(
+  HANDLE, PCSTR, PVOID
+);
+typedef BOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACKW)(
+  HANDLE, PCWSTR, PVOID
+);
+
+typedef BOOL (CALLBACK *PFIND_EXE_FILE_CALLBACK)(
+  HANDLE, PCSTR, PVOID
+);
+typedef BOOL (CALLBACK *PFIND_EXE_FILE_CALLBACKW)(
+  HANDLE, PCWSTR, PVOID
+);
+
+typedef BOOL (CALLBACK *PFINDFILEINPATHCALLBACK)(
+  PCSTR, PVOID
+);
+typedef BOOL (CALLBACK *PFINDFILEINPATHCALLBACKW)(
+  PCWSTR, PVOID
+);
+
+typedef BOOL (CALLBACK *PIMAGEHLP_STATUS_ROUTINE)(
+  IMAGEHLP_STATUS_REASON Reason, PCSTR ImageName, PCSTR DllName,
+  ULONG_PTR Va, ULONG_PTR Parameter
+);
+typedef BOOL (CALLBACK *PIMAGEHLP_STATUS_ROUTINE32)(
+  IMAGEHLP_STATUS_REASON Reason, PCSTR ImageName, PCSTR DllName,
+  ULONG Va, ULONG_PTR Parameter
+);
+typedef BOOL (CALLBACK *PIMAGEHLP_STATUS_ROUTINE64)(
+  IMAGEHLP_STATUS_REASON Reason, PCSTR ImageName, PCSTR DllName,
+  ULONG64 Va, ULONG_PTR Parameter
+);
+
+typedef BOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACK)(
+  PSYMBOL_INFO pSymInfo, ULONG SymbolSize, PVOID UserContext
+);
+typedef BOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACKW)(
+  PSYMBOL_INFOW pSymInfo, ULONG SymbolSize, PVOID UserContext
+);
+
+typedef BOOL (CALLBACK* PSYM_ENUMLINES_CALLBACK)(
+  PSRCCODEINFO, PVOID
+);
+typedef BOOL (CALLBACK* PSYM_ENUMLINES_CALLBACKW)(
+  PSRCCODEINFOW, PVOID
+);
+
+typedef BOOL (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACK)(
+  PSOURCEFILE pSourceFile, PVOID UserContext
+);
+typedef BOOL (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACKW)(
+  PSOURCEFILEW pSourceFile, PVOID UserContext
+);
+
+typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK)(
+  PCSTR ModuleName, ULONG BaseOfDll, PVOID UserContext
+);
+typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK64)(
+  PCSTR, DWORD64, PVOID
+);
+typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACKW64)(
+  PCWSTR, DWORD64, PVOID
+);
+
+typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(
+  PCSTR, ULONG, ULONG, PVOID
+);
+typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACKW)(
+  PCWSTR, ULONG, ULONG, PVOID
+);
+typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64)(
+  PCSTR, DWORD64, ULONG, PVOID
+);
+typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64W)(
+  PCWSTR, DWORD64, ULONG, PVOID
+);
+
+typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK)(
+  HANDLE, DWORD, PVOID
+);
+typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK64)(
+  HANDLE, ULONG64, ULONG64
+);
+
+typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(
+  HANDLE hProcess, ULONG ActionCode, PVOID CallbackData,
+  PVOID UserContext
+);
+typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK64)(
+  HANDLE, ULONG, ULONG64, ULONG64
+);
+
+typedef BOOL (CALLBACK *DIGEST_FUNCTION)(
+  DIGEST_HANDLE refdata, PBYTE pData, DWORD dwLength
+);
+
+typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE)(
+  HANDLE  hProcess, DWORD lpBaseAddress, PVOID lpBuffer,
+  DWORD nSize, PDWORD lpNumberOfBytesRead
+);
+
+typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE64)(
+  HANDLE  hProcess, DWORD64 lpBaseAddress, PVOID lpBuffer,
+  DWORD nSize, LPDWORD lpNumberOfBytesRead
+);
+
+typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE)(
+  HANDLE hProcess, DWORD AddrBase
+);
+
+typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE64)(
+  HANDLE hProcess, DWORD64 AddrBase
+);
+
+typedef DWORD (CALLBACK *PGET_MODULE_BASE_ROUTINE)(
+  HANDLE hProcess, DWORD ReturnAddress);
+
+typedef DWORD (CALLBACK *PGET_MODULE_BASE_ROUTINE64)(
+  HANDLE hProcess, DWORD64 ReturnAddress);
+
+typedef DWORD (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE)(
+  HANDLE hProcess, HANDLE hThread, LPADDRESS lpaddr
+);
+
+typedef DWORD (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE64)(
+  HANDLE hProcess, HANDLE hThread, LPADDRESS64 lpaddr
+);
+
+
+/***********************************************************************
+ * Functions
+ */
+
+BOOL WINAPI BindImage(
+  PCSTR ImageName, PCSTR DllPath, PCSTR SymbolPath
+);
+BOOL WINAPI BindImageEx(
+  DWORD Flags, PCSTR ImageName, PCSTR DllPath, PCSTR SymbolPath,
+  PIMAGEHLP_STATUS_ROUTINE StatusRoutine
+);
+PIMAGE_NT_HEADERS WINAPI CheckSumMappedFile(
+  LPVOID BaseAddress, DWORD FileLength,
+  LPDWORD HeaderSum, LPDWORD CheckSum
+);
+BOOL WINAPI EnumDirTree(
+  HANDLE, PCSTR, PCSTR, PSTR, PENUMDIRTREE_CALLBACK, PVOID
+);
+BOOL WINAPI EnumDirTreeW(
+  HANDLE, PCWSTR, PCWSTR, PWSTR, PENUMDIRTREE_CALLBACKW, PVOID
+);
+BOOL WINAPI EnumerateLoadedModules(
+  HANDLE hProcess,
+  PENUMLOADED_MODULES_CALLBACK EnumLoadedModulesCallback,
+  PVOID UserContext
+);
+BOOL WINAPI EnumerateLoadedModules64(
+  HANDLE, PENUMLOADED_MODULES_CALLBACK64, PVOID
+);
+BOOL WINAPI EnumerateLoadedModulesW64(
+  HANDLE, PENUMLOADED_MODULES_CALLBACKW64, PVOID
+);
+HANDLE WINAPI FindDebugInfoFile(
+  PCSTR FileName, PCSTR SymbolPath, PSTR DebugFilePath
+);
+HANDLE WINAPI FindDebugInfoFileEx(
+  PCSTR, PCSTR, PSTR, PFIND_DEBUG_FILE_CALLBACK, PVOID
+);
+HANDLE WINAPI FindDebugInfoFileExW(
+  PCWSTR, PCWSTR, PWSTR, PFIND_DEBUG_FILE_CALLBACKW, PVOID
+);
+HANDLE WINAPI FindExecutableImage(
+  PCSTR, PCSTR, PSTR
+);
+HANDLE WINAPI FindExecutableImageEx(
+  PCSTR, PCSTR, PSTR, PFIND_EXE_FILE_CALLBACK, PVOID
+);
+HANDLE WINAPI FindExecutableImageExW(
+  PCWSTR, PCWSTR, PWSTR, PFIND_EXE_FILE_CALLBACKW, PVOID
+);
+BOOL WINAPI FindFileInPath(
+  HANDLE, PCSTR, PCSTR, PVOID, DWORD, DWORD, DWORD,
+  PSTR, PFINDFILEINPATHCALLBACK, PVOID
+);
+BOOL WINAPI GetImageConfigInformation(
+  PLOADED_IMAGE LoadedImage,
+  PIMAGE_LOAD_CONFIG_DIRECTORY ImageConfigInformation
+);
+DWORD WINAPI GetImageUnusedHeaderBytes(
+  PLOADED_IMAGE LoadedImage,
+  LPDWORD SizeUnusedHeaderBytes
+);
+DWORD WINAPI GetTimestampForLoadedLibrary(
+  HMODULE Module
+);
+BOOL WINAPI ImageAddCertificate(
+  HANDLE FileHandle, LPWIN_CERTIFICATE Certificate, PDWORD Index
+);
+PVOID WINAPI ImageDirectoryEntryToData(
+  PVOID Base, BOOLEAN MappedAsImage, USHORT DirectoryEntry, PULONG Size
+);
+BOOL WINAPI ImageEnumerateCertificates(
+  HANDLE FileHandle, WORD TypeFilter, PDWORD CertificateCount,
+  PDWORD Indices, DWORD IndexCount
+);
+BOOL WINAPI ImageGetCertificateData(
+  HANDLE FileHandle, DWORD CertificateIndex,
+  LPWIN_CERTIFICATE Certificate, PDWORD RequiredLength
+);
+BOOL WINAPI ImageGetCertificateHeader(
+  HANDLE FileHandle, DWORD CertificateIndex,
+  LPWIN_CERTIFICATE Certificateheader
+);
+BOOL WINAPI ImageGetDigestStream(
+  HANDLE FileHandle, DWORD DigestLevel,
+  DIGEST_FUNCTION DigestFunction, DIGEST_HANDLE DigestHandle
+);
+PLOADED_IMAGE WINAPI ImageLoad(
+  PCSTR DllName, PCSTR DllPath
+);
+PIMAGE_NT_HEADERS WINAPI ImageNtHeader(
+  PVOID Base
+);
+BOOL WINAPI ImageRemoveCertificate(
+  HANDLE FileHandle, DWORD Index
+);
+PIMAGE_SECTION_HEADER WINAPI ImageRvaToSection(
+  PIMAGE_NT_HEADERS NtHeaders, PVOID Base, ULONG Rva
+);
+PVOID WINAPI ImageRvaToVa(
+  PIMAGE_NT_HEADERS NtHeaders, PVOID Base, ULONG Rva,
+  PIMAGE_SECTION_HEADER *LastRvaSection
+);
+BOOL WINAPI ImageUnload(
+  PLOADED_IMAGE LoadedImage
+);
+LPAPI_VERSION WINAPI ImagehlpApiVersion(
+  void
+);
+LPAPI_VERSION WINAPI ImagehlpApiVersionEx(
+  LPAPI_VERSION AppVersion
+);
+BOOL WINAPI MakeSureDirectoryPathExists(
+  PCSTR DirPath
+);
+BOOL WINAPI MapAndLoad(
+  PCSTR ImageName, PCSTR DllPath, PLOADED_IMAGE LoadedImage,
+  BOOL DotDll, BOOL ReadOnly
+);
+PIMAGE_DEBUG_INFORMATION WINAPI MapDebugInformation(
+  HANDLE FileHandle, PCSTR FileName,
+  PCSTR SymbolPath, ULONG ImageBase
+);
+DWORD WINAPI MapFileAndCheckSumA(
+  PCSTR Filename, PDWORD HeaderSum, PDWORD CheckSum
+);
+DWORD WINAPI MapFileAndCheckSumW(
+  PCWSTR Filename, PDWORD HeaderSum, PDWORD CheckSum
+);
+BOOL WINAPI ReBaseImage(
+  PCSTR CurrentImageName, PCSTR SymbolPath, BOOL fReBase,
+  BOOL fRebaseSysfileOk, BOOL fGoingDown, ULONG CheckImageSize,
+  ULONG *OldImageSize, ULONG_PTR *OldImageBase, ULONG *NewImageSize,
+  ULONG_PTR *NewImageBase, ULONG TimeStamp
+);
+BOOL WINAPI ReBaseImage64(
+  PCSTR CurrentImageName, PCSTR SymbolPath, BOOL fReBase,
+  BOOL fRebaseSysfileOk, BOOL fGoingDown, ULONG CheckImageSize,
+  ULONG *OldImageSize, ULONG64 *OldImageBase, ULONG *NewImageSize,
+  ULONG64 *NewImageBase, ULONG TimeStamp
+);
+BOOL WINAPI RemovePrivateCvSymbolic(
+  PCHAR DebugData, PCHAR *NewDebugData, ULONG *NewDebugSize
+);
+BOOL WINAPI SearchTreeForFile(
+  PCSTR RootPath, PCSTR InputPathName, PSTR OutputPathBuffer
+);
+BOOL WINAPI SearchTreeForFileW(
+  PCWSTR RootPath, PCWSTR InputPathName, PWSTR OutputPathBuffer
+);
+BOOL WINAPI SetImageConfigInformation(
+  PLOADED_IMAGE LoadedImage,
+  PIMAGE_LOAD_CONFIG_DIRECTORY ImageConfigInformation
+);
+BOOL WINAPI SplitSymbols(
+  PSTR ImageName, PCSTR SymbolsPath,
+  PSTR SymbolFilePath, ULONG Flags
+);
+BOOL WINAPI StackWalk(
+  DWORD MachineType, HANDLE hProcess, HANDLE hThread,
+  LPSTACKFRAME StackFrame, PVOID ContextRecord,
+  PREAD_PROCESS_MEMORY_ROUTINE ReadMemoryRoutine,
+  PFUNCTION_TABLE_ACCESS_ROUTINE FunctionTableAccessRoutine,
+  PGET_MODULE_BASE_ROUTINE GetModuleBaseRoutine,
+  PTRANSLATE_ADDRESS_ROUTINE TranslateAddress
+);
+BOOL WINAPI StackWalk64(
+  DWORD MachineType, HANDLE hProcess, HANDLE hThread,
+  LPSTACKFRAME64 StackFrame, PVOID ContextRecord,
+  PREAD_PROCESS_MEMORY_ROUTINE64 ReadMemoryRoutine,
+  PFUNCTION_TABLE_ACCESS_ROUTINE64 FunctionTableAccessRoutine,
+  PGET_MODULE_BASE_ROUTINE64 GetModuleBaseRoutine,
+  PTRANSLATE_ADDRESS_ROUTINE64 TranslateAddress
+);
+BOOL WINAPI SymAddSymbol(
+  HANDLE, ULONG64, PCSTR, DWORD64, DWORD, DWORD
+);
+BOOL WINAPI SymAddSymbolW(
+  HANDLE, ULONG64, PCWSTR, DWORD64, DWORD, DWORD
+);
+BOOL WINAPI SymCleanup(
+  HANDLE hProcess
+);
+BOOL WINAPI SymDeleteSymbol(
+  HANDLE, ULONG64, PCSTR, DWORD64, DWORD
+);
+BOOL WINAPI SymDeleteSymbolW(
+  HANDLE, ULONG64, PCWSTR, DWORD64, DWORD
+);
+BOOL WINAPI SymEnumerateModules(
+  HANDLE hProcess, PSYM_ENUMMODULES_CALLBACK EnumModulesCallback,
+  PVOID UserContext
+);
+BOOL WINAPI SymEnumerateModules64(
+  HANDLE, PSYM_ENUMMODULES_CALLBACK64, PVOID
+);
+BOOL WINAPI SymEnumerateModulesW64(
+  HANDLE, PSYM_ENUMMODULES_CALLBACKW64, PVOID
+);
+BOOL WINAPI SymEnumerateSymbols(
+  HANDLE hProcess, DWORD BaseOfDll,
+  PSYM_ENUMSYMBOLS_CALLBACK EnumSymbolsCallback, PVOID UserContext
+);
+BOOL WINAPI SymEnumerateSymbolsW(
+  HANDLE hProcess, DWORD BaseOfDll,
+  PSYM_ENUMSYMBOLS_CALLBACKW EnumSymbolsCallback, PVOID UserContext
+);
+BOOL WINAPI SymEnumerateSymbols64(
+  HANDLE, ULONG64, PSYM_ENUMSYMBOLS_CALLBACK64, PVOID
+);
+BOOL WINAPI SymEnumerateSymbolsW64(
+  HANDLE, ULONG64, PSYM_ENUMSYMBOLS_CALLBACK64W, PVOID
+);
+BOOL WINAPI SymEnumLines(
+  HANDLE, ULONG64, PCSTR, PCSTR, PSYM_ENUMLINES_CALLBACK, PVOID
+);
+BOOL WINAPI SymEnumLinesW(
+  HANDLE, ULONG64, PCWSTR, PCWSTR, PSYM_ENUMLINES_CALLBACKW, PVOID
+);
+BOOL WINAPI SymEnumSourceFiles(
+  HANDLE hProcess, ULONG64 ModBase, PCSTR Mask,
+  PSYM_ENUMSOURCEFILES_CALLBACK cbSrcFiles, PVOID UserContext
+);
+BOOL WINAPI SymEnumSourceFilesW(
+  HANDLE hProcess, ULONG64 ModBase, PCWSTR Mask,
+  PSYM_ENUMSOURCEFILES_CALLBACKW cbSrcFiles, PVOID UserContext
+);
+BOOL WINAPI SymEnumSourceLines(
+  HANDLE, ULONG64, PCSTR, PCSTR, DWORD, DWORD, PSYM_ENUMLINES_CALLBACK, PVOID
+);
+BOOL WINAPI SymEnumSourceLinesW(
+  HANDLE, ULONG64, PCWSTR, PCWSTR, DWORD, DWORD, PSYM_ENUMLINES_CALLBACKW, PVOID
+);
+BOOL WINAPI SymEnumSymbols(
+  HANDLE hProcess, DWORD BaseOfDll, PCSTR Mask, 
+  PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback, PVOID UserContext
+);
+BOOL WINAPI SymEnumSymbolsW(
+  HANDLE hProcess, DWORD BaseOfDll, PCWSTR Mask,
+  PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback, PVOID UserContext
+);
+BOOL WINAPI SymEnumSymbolsForAddr(
+  HANDLE, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID
+);
+BOOL WINAPI SymEnumSymbolsForAddrW(
+  HANDLE, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID
+);
+BOOL WINAPI SymEnumTypes(
+  HANDLE, ULONG64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID
+);
+BOOL WINAPI SymEnumTypesW(
+  HANDLE, ULONG64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID
+);
+HANDLE WINAPI SymFindExecutableImage(
+  HANDLE, PCSTR, PSTR, PFIND_EXE_FILE_CALLBACK, PVOID
+);
+HANDLE WINAPI SymFindExecutableImageW(
+  HANDLE, PCWSTR, PWSTR, PFIND_EXE_FILE_CALLBACKW, PVOID
+);
+BOOL WINAPI SymFindFileInPath(
+  HANDLE, PCSTR, PCSTR, PVOID, DWORD, DWORD, DWORD,
+  PSTR, PFINDFILEINPATHCALLBACK, PVOID
+);
+BOOL WINAPI SymFindFileInPathW(
+  HANDLE, PCWSTR, PCWSTR, PVOID, DWORD, DWORD, DWORD,
+  PWSTR, PFINDFILEINPATHCALLBACKW, PVOID
+);
+BOOL WINAPI SymFromAddr(
+  HANDLE, DWORD64, DWORD64*, SYMBOL_INFO*
+);
+BOOL WINAPI SymFromAddrW(
+  HANDLE, DWORD64, DWORD64*, SYMBOL_INFOW*
+);
+BOOL WINAPI SymFromIndex(
+  HANDLE, ULONG64, DWORD, PSYMBOL_INFO
+);
+BOOL WINAPI SymFromIndexW(
+  HANDLE, ULONG64, DWORD, PSYMBOL_INFOW
+);
+BOOL WINAPI SymFromName(
+  HANDLE, PCSTR, PSYMBOL_INFO
+);
+BOOL WINAPI SymFromNameW(
+  HANDLE, PCWSTR, PSYMBOL_INFOW
+);
+BOOL WINAPI SymFromToken(
+  HANDLE, DWORD64, DWORD, PSYMBOL_INFO
+);
+BOOL WINAPI SymFromTokenW(
+  HANDLE, DWORD64, DWORD, PSYMBOL_INFOW
+);
+PVOID WINAPI SymFunctionTableAccess(
+  HANDLE hProcess, DWORD AddrBase
+);
+PVOID WINAPI SymFunctionTableAccess64(
+  HANDLE hProcess, DWORD64 AddrBase
+);
+ULONG WINAPI SymGetFileLineOffsets64(
+  HANDLE, PCSTR, PCSTR, PDWORD64, ULONG
+);
+PCHAR WINAPI SymGetHomeDirectory(
+  DWORD, PSTR, size_t
+);
+PWSTR WINAPI SymGetHomeDirectoryW(
+  DWORD, PWSTR, size_t
+);
+BOOL WINAPI SymGetLineFromAddr(
+  HANDLE, DWORD, PDWORD, PIMAGEHLP_LINE
+);
+BOOL WINAPI SymGetLineFromAddrW(
+  HANDLE, DWORD, PDWORD, PIMAGEHLP_LINEW
+);
+BOOL WINAPI SymGetLineFromAddr64(
+  HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINE64
+);
+BOOL WINAPI SymGetLineFromAddrW64(
+  HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINEW64
+);
+BOOL WINAPI SymGetLineFromName(
+  HANDLE, PCSTR, PCSTR, DWORD, PLONG, PIMAGEHLP_LINE
+);
+BOOL WINAPI SymGetLineFromName64(
+  HANDLE, PCSTR, PCSTR, DWORD, PLONG, PIMAGEHLP_LINE64
+);
+BOOL WINAPI SymGetLineFromNameW64(
+  HANDLE, PCWSTR, PCWSTR, DWORD, PLONG, PIMAGEHLP_LINEW64
+);
+BOOL WINAPI SymGetLineNext(
+  HANDLE, PIMAGEHLP_LINE
+);
+BOOL WINAPI SymGetLineNextW(
+  HANDLE, PIMAGEHLP_LINEW
+);
+BOOL WINAPI SymGetLineNext64(
+  HANDLE, PIMAGEHLP_LINE64
+);
+BOOL WINAPI SymGetLineNextW64(
+  HANDLE, PIMAGEHLP_LINEW64
+);
+BOOL WINAPI SymGetLinePrev(
+  HANDLE, PIMAGEHLP_LINE
+);
+BOOL WINAPI SymGetLinePrevW(
+  HANDLE, PIMAGEHLP_LINEW
+);
+BOOL WINAPI SymGetLinePrev64(
+  HANDLE, PIMAGEHLP_LINE64
+);
+BOOL WINAPI SymGetLinePrevW64(
+  HANDLE, PIMAGEHLP_LINEW64
+);
+DWORD WINAPI SymGetModuleBase(
+  HANDLE hProcess, DWORD dwAddr
+);
+BOOL WINAPI SymGetModuleInfo(
+  HANDLE hProcess, DWORD dwAddr,
+  PIMAGEHLP_MODULE ModuleInfo
+);
+BOOL WINAPI SymGetModuleInfoW(
+  HANDLE, DWORD, PIMAGEHLP_MODULEW
+);
+BOOL WINAPI SymGetModuleInfo64(
+  HANDLE, DWORD64, PIMAGEHLP_MODULE64
+);
+BOOL WINAPI SymGetModuleInfoW64(
+  HANDLE, DWORD64, PIMAGEHLP_MODULEW64
+);
+DWORD WINAPI SymGetOptions(
+  void
+);
+BOOL WINAPI SymGetScope(
+  HANDLE, ULONG64, DWORD, PSYMBOL_INFO
+);
+BOOL WINAPI SymGetScopeW(
+  HANDLE, ULONG64, DWORD, PSYMBOL_INFOW
+);
+BOOL WINAPI SymGetSearchPath(
+  HANDLE hProcess, PSTR szSearchPath, DWORD SearchPathLength
+);
+BOOL WINAPI SymGetSearchPathW(
+  HANDLE hProcess, PWSTR szSearchPath, DWORD SearchPathLength
+);
+BOOL WINAPI SymGetSourceFile(
+  HANDLE, ULONG64, PCSTR, PCSTR, PSTR, DWORD
+);
+BOOL WINAPI SymGetSourceFileW(
+  HANDLE, ULONG64, PCWSTR, PCWSTR, PWSTR, DWORD
+);
+BOOL WINAPI SymGetSourceFileFromToken(
+  HANDLE, PVOID, PCSTR, PSTR, DWORD
+);
+BOOL WINAPI SymGetSourceFileFromTokenW(
+  HANDLE, PVOID, PCWSTR, PWSTR, DWORD
+);
+BOOL WINAPI SymGetSourceFileToken(
+  HANDLE, ULONG64, PCSTR, PVOID*, DWORD*
+);
+BOOL WINAPI SymGetSourceFileTokenW(
+  HANDLE, ULONG64, PCWSTR, PVOID*, DWORD*
+);
+BOOL WINAPI SymGetSourceVarFromToken(
+  HANDLE, PVOID, PCSTR, PCSTR, PSTR, DWORD
+);
+BOOL WINAPI SymGetSourceVarFromTokenW(
+  HANDLE, PVOID, PCWSTR, PCWSTR, PWSTR, DWORD
+);
+BOOL WINAPI SymGetSymFromAddr(
+  HANDLE hProcess, DWORD dwAddr,
+  PDWORD pdwDisplacement, PIMAGEHLP_SYMBOL Symbol
+);
+BOOL WINAPI SymGetSymFromAddr64(
+  HANDLE, DWORD64, PDWORD64, PIMAGEHLP_SYMBOL64
+);
+BOOL WINAPI SymGetSymFromName(
+  HANDLE hProcess, PCSTR Name, PIMAGEHLP_SYMBOL Symbol
+);
+BOOL WINAPI SymGetSymFromName64(
+  HANDLE, PCSTR, PIMAGEHLP_SYMBOL64
+);
+BOOL WINAPI SymGetSymNext(
+  HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol
+);
+BOOL WINAPI SymGetSymNext64(
+  HANDLE, PIMAGEHLP_SYMBOL64
+);
+BOOL WINAPI SymGetSymPrev(
+  HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol
+);
+BOOL WINAPI SymGetSymPrev64(
+  HANDLE, PIMAGEHLP_SYMBOL64
+);
+BOOL WINAPI SymGetTypeFromName(
+  HANDLE, ULONG64, PCSTR, PSYMBOL_INFO
+);
+BOOL WINAPI SymGetTypeFromNameW(
+  HANDLE, ULONG64, PCWSTR, PSYMBOL_INFOW
+);
+BOOL WINAPI SymGetTypeInfo(
+  HANDLE, DWORD64, ULONG, IMAGEHLP_SYMBOL_TYPE_INFO, PVOID
+);
+BOOL WINAPI SymGetTypeInfoEx(
+  HANDLE, DWORD64, PIMAGEHLP_GET_TYPE_INFO_PARAMS
+);
+BOOL WINAPI SymInitialize(
+  HANDLE hProcess, PCSTR UserSearchPath, BOOL fInvadeProcess
+);
+BOOL WINAPI SymInitializeW(
+  HANDLE hProcess, PCWSTR UserSearchPath, BOOL fInvadeProcess
+);
+DWORD WINAPI SymLoadModule(
+  HANDLE hProcess, HANDLE hFile, PCSTR ImageName, PCSTR ModuleName,
+  DWORD BaseOfDll, DWORD SizeOfDll
+);
+DWORD64 WINAPI SymLoadModule64(
+  HANDLE, HANDLE, PCSTR, PCSTR, DWORD64, DWORD
+);
+DWORD64 WINAPI SymLoadModuleEx(
+  HANDLE, HANDLE, PCSTR, PCSTR, DWORD64, DWORD, PMODLOAD_DATA, DWORD
+);
+DWORD64 WINAPI SymLoadModuleExW(
+  HANDLE, HANDLE, PCWSTR, PCWSTR, DWORD64, DWORD, PMODLOAD_DATA, DWORD
+);
+BOOL WINAPI SymMatchFileName(
+  PCSTR, PCSTR, PSTR*, PSTR*
+);
+BOOL WINAPI SymMatchFileNameW(
+  PCWSTR, PCWSTR, PWSTR*, PWSTR*
+);
+BOOL WINAPI SymMatchString(
+  PCSTR, PCSTR, BOOL
+);
+BOOL WINAPI SymMatchStringA(
+  PCSTR, PCSTR, BOOL
+);
+BOOL WINAPI SymMatchStringW(
+  PCWSTR, PCWSTR, BOOL
+);
+BOOL WINAPI SymRegisterCallback(
+  HANDLE hProcess, PSYMBOL_REGISTERED_CALLBACK CallbackFunction,
+  PVOID UserContext
+);
+BOOL WINAPI SymRegisterCallback64(
+  HANDLE, PSYMBOL_REGISTERED_CALLBACK64, ULONG64
+);
+BOOL WINAPI SymRegisterCallbackW64(
+  HANDLE, PSYMBOL_REGISTERED_CALLBACK64, ULONG64
+);
+BOOL WINAPI SymRegisterFunctionEntryCallback(
+  HANDLE, PSYMBOL_FUNCENTRY_CALLBACK, PVOID
+);
+BOOL WINAPI SymRegisterFunctionEntryCallback64(
+  HANDLE, PSYMBOL_FUNCENTRY_CALLBACK64, ULONG64
+);
+BOOL WINAPI SymSearch(
+  HANDLE, ULONG64, DWORD, DWORD, PCSTR, DWORD64,
+  PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID, DWORD
+);
+BOOL WINAPI SymSearchW(
+  HANDLE, ULONG64, DWORD, DWORD, PCWSTR, DWORD64,
+  PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID, DWORD
+);
+DWORD WINAPI SymSetContext(
+  HANDLE hProcess, PIMAGEHLP_STACK_FRAME StackFrame, 
+  PIMAGEHLP_CONTEXT Context
+);
+PCHAR WINAPI SymSetHomeDirectory(
+  HANDLE, PCSTR
+);
+PWSTR WINAPI SymSetHomeDirectoryW(
+  HANDLE, PCWSTR
+);
+DWORD WINAPI SymSetOptions(
+  DWORD SymOptions
+);
+BOOL WINAPI SymSetParentWindow(
+  HWND
+);
+BOOL WINAPI SymSetSearchPath(
+  HANDLE hProcess, PCSTR szSearchPath
+);
+BOOL WINAPI SymSetSearchPathW(
+  HANDLE hProcess, PCWSTR szSearchPath
+);
+BOOL WINAPI SymUnDName(
+  PIMAGEHLP_SYMBOL sym, PSTR UnDecName, DWORD UnDecNameLength
+);
+BOOL WINAPI SymUnDName64(
+  PIMAGEHLP_SYMBOL64, PSTR, DWORD
+);
+BOOL WINAPI SymUnloadModule(
+  HANDLE hProcess, DWORD BaseOfDll
+);
+BOOL WINAPI TouchFileTimes(
+  HANDLE FileHandle, LPSYSTEMTIME lpSystemTime
+);
+DWORD WINAPI UnDecorateSymbolName(
+  PCSTR DecoratedName, PSTR UnDecoratedName,
+  DWORD UndecoratedLength, DWORD Flags
+);
+DWORD WINAPI UnDecorateSymbolNameW(
+  PCWSTR DecoratedName, PWSTR UnDecoratedName,
+  DWORD UndecoratedLength, DWORD Flags
+);
+BOOL WINAPI UnMapAndLoad(
+  PLOADED_IMAGE LoadedImage
+);
+BOOL WINAPI UnmapDebugInformation(
+  PIMAGE_DEBUG_INFORMATION DebugInfo
+);
+BOOL WINAPI UpdateDebugInfoFile(
+  PCSTR ImageFileName, PCSTR SymbolPath,
+  PSTR DebugFilePath, PIMAGE_NT_HEADERS32 NtHeaders
+);
+BOOL WINAPI UpdateDebugInfoFileEx(
+  PCSTR ImageFileName, PCSTR SymbolPath, PSTR DebugFilePath,
+  PIMAGE_NT_HEADERS32 NtHeaders, DWORD OldChecksum
+);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif  /* __WINE_IMAGEHLP_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/imm.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/imm.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/imm.h	(revision 16410)
@@ -0,0 +1,566 @@
+/*
+ * Declarations for IMM32
+ *
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_IMM_H
+#define __WINE_IMM_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef HANDLE HIMC;
+typedef HANDLE HIMCC;
+
+typedef struct tagREGISTERWORDA {
+    LPSTR lpReading;
+    LPSTR lpWord;
+} REGISTERWORDA, *PREGISTERWORDA, *NPREGISTERWORDA, *LPREGISTERWORDA;
+
+typedef struct tagREGISTERWORDW {
+    LPWSTR lpReading;
+    LPWSTR lpWord;
+} REGISTERWORDW, *PREGISTERWORDW, *NPREGISTERWORDW, *LPREGISTERWORDW;
+
+typedef int (CALLBACK *REGISTERWORDENUMPROCA)(LPCSTR, DWORD, LPCSTR, LPVOID);
+typedef int (CALLBACK *REGISTERWORDENUMPROCW)(LPCWSTR, DWORD, LPCWSTR, LPVOID);
+
+typedef struct tagCANDIDATEFORM
+{
+				DWORD   dwIndex;
+				DWORD   dwStyle;
+				POINT ptCurrentPos;
+				RECT  rcArea;
+} CANDIDATEFORM, *LPCANDIDATEFORM;
+
+typedef struct tagCANDIDATELIST
+{
+				DWORD dwSize;
+				DWORD dwStyle;
+				DWORD dwCount;
+				DWORD dwSelection;
+				DWORD dwPageStart;
+				DWORD dwPageSize;
+				DWORD dwOffset[1];
+} CANDIDATELIST, *LPCANDIDATELIST;
+
+typedef struct tagSTYLEBUFA
+{
+				DWORD dwStyle;
+				CHAR  szDescription[32];
+} STYLEBUFA, *LPSTYLEBUFA;
+
+typedef struct tagSTYLEBUFW
+{
+				DWORD dwStyle;
+				WCHAR  szDescription[32];
+} STYLEBUFW, *LPSTYLEBUFW;
+
+DECL_WINELIB_TYPE_AW(STYLEBUF)
+DECL_WINELIB_TYPE_AW(LPSTYLEBUF)
+
+typedef struct tagRECONVERTSTRING
+{
+	DWORD	dwSize;
+	DWORD	dwVersion;
+	DWORD	dwStrLen;
+	DWORD	dwStrOffset;
+	DWORD	dwCompStrLen;
+	DWORD	dwCompStrOffset;
+	DWORD	dwTargetStrLen;
+	DWORD	dwTargetStrOffset;
+} RECONVERTSTRING, *LPRECONVERTSTRING;
+
+
+#define IMEMENUITEM_STRING_SIZE 80
+
+typedef struct tagIMEMENUITEMINFOA
+{
+	UINT		cbSize;
+	UINT		fType;
+	UINT		fState;
+	UINT		wID;
+	HBITMAP		hbmpChecked;
+	HBITMAP		hbmpUnchecked;
+	DWORD		dwItemData;
+	CHAR		szString[IMEMENUITEM_STRING_SIZE];
+	HBITMAP		hbmpItem;
+} IMEMENUITEMINFOA, *LPIMEMENUITEMINFOA;
+
+typedef struct tagIMEMENUITEMINFOW
+{
+	UINT		cbSize;
+	UINT		fType;
+	UINT		fState;
+	UINT		wID;
+	HBITMAP		hbmpChecked;
+	HBITMAP		hbmpUnchecked;
+	DWORD		dwItemData;
+	WCHAR		szString[IMEMENUITEM_STRING_SIZE];
+	HBITMAP		hbmpItem;
+} IMEMENUITEMINFOW, *LPIMEMENUITEMINFOW;
+
+DECL_WINELIB_TYPE_AW(IMEMENUITEMINFO)
+DECL_WINELIB_TYPE_AW(LPIMEMENUITEMINFO)
+
+
+typedef struct _tagCOMPOSITIONFORM
+{
+				DWORD   dwStyle;
+				POINT ptCurrentPos;
+				RECT  rcArea;
+} COMPOSITIONFORM, *LPCOMPOSITIONFORM;
+
+/* wParam for WM_IME_CONTROL */
+#define IMC_GETCANDIDATEPOS             0x0007
+#define IMC_SETCANDIDATEPOS             0x0008
+#define IMC_GETCOMPOSITIONFONT          0x0009
+#define IMC_SETCOMPOSITIONFONT          0x000A
+#define IMC_GETCOMPOSITIONWINDOW        0x000B
+#define IMC_SETCOMPOSITIONWINDOW        0x000C
+#define IMC_GETSTATUSWINDOWPOS          0x000F
+#define IMC_SETSTATUSWINDOWPOS          0x0010
+#define IMC_CLOSESTATUSWINDOW           0x0021
+#define IMC_OPENSTATUSWINDOW            0x0022
+
+/*
+ * wParam for WM_IME_CONTROL to the soft keyboard
+ * dwAction for ImmNotifyIME
+ */
+#define NI_OPENCANDIDATE                0x0010
+#define NI_CLOSECANDIDATE               0x0011
+#define NI_SELECTCANDIDATESTR           0x0012
+#define NI_CHANGECANDIDATELIST          0x0013
+#define NI_FINALIZECONVERSIONRESULT     0x0014
+#define NI_COMPOSITIONSTR               0x0015
+#define NI_SETCANDIDATE_PAGESTART       0x0016
+#define NI_SETCANDIDATE_PAGESIZE        0x0017
+#define NI_IMEMENUSELECTED		0x0018
+
+/* lParam for WM_IME_SETCONTEXT */
+#define ISC_SHOWUICANDIDATEWINDOW       0x00000001
+#define ISC_SHOWUICOMPOSITIONWINDOW     0x80000000
+#define ISC_SHOWUIGUIDELINE             0x40000000
+#define ISC_SHOWUIALLCANDIDATEWINDOW    0x0000000F
+#define ISC_SHOWUIALL                   0xC000000F
+
+
+/* dwIndex for ImmNotifyIME/NI_COMPOSITIONSTR */
+#define CPS_COMPLETE                    0x0001
+#define CPS_CONVERT                     0x0002
+#define CPS_REVERT                      0x0003
+#define CPS_CANCEL                      0x0004
+
+
+/* the modifiers of hot key */
+#define MOD_ALT                         0x0001
+#define MOD_CONTROL                     0x0002
+#define MOD_SHIFT                       0x0004
+
+#define MOD_LEFT                        0x8000
+#define MOD_RIGHT                       0x4000
+
+#define MOD_ON_KEYUP                    0x0800
+#define MOD_IGNORE_ALL_MODIFIER         0x0400
+
+
+/* Windows for Simplified Chinese Edition hot key ID from 0x10 - 0x2F */
+#define IME_CHOTKEY_IME_NONIME_TOGGLE           0x10
+#define IME_CHOTKEY_SHAPE_TOGGLE                0x11
+#define IME_CHOTKEY_SYMBOL_TOGGLE               0x12
+
+/* Windows for Japanese Edition hot key ID from 0x30 - 0x4F */
+#define IME_JHOTKEY_CLOSE_OPEN                  0x30
+
+/* Windows for Korean Edition hot key ID from 0x50 - 0x6F */
+#define IME_KHOTKEY_SHAPE_TOGGLE                0x50
+#define IME_KHOTKEY_HANJACONVERT                0x51
+#define IME_KHOTKEY_ENGLISH                     0x52
+/* Windows for Tranditional Chinese Edition hot key ID from 0x70 - 0x8F */
+#define IME_THOTKEY_IME_NONIME_TOGGLE           0x70
+#define IME_THOTKEY_SHAPE_TOGGLE                0x71
+#define IME_THOTKEY_SYMBOL_TOGGLE               0x72
+
+/* direct switch hot key ID from 0x100 - 0x11F */
+#define IME_HOTKEY_DSWITCH_FIRST                0x100
+#define IME_HOTKEY_DSWITCH_LAST                 0x11F
+
+/* IME private hot key from 0x200 - 0x21F */
+#define IME_HOTKEY_PRIVATE_FIRST                0x200
+#define IME_ITHOTKEY_RESEND_RESULTSTR           0x200
+#define IME_ITHOTKEY_PREVIOUS_COMPOSITION       0x201
+#define IME_ITHOTKEY_UISTYLE_TOGGLE             0x202
+#define IME_ITHOTKEY_RECONVERTSTRING		0x203
+#define IME_HOTKEY_PRIVATE_LAST                 0x21F
+
+
+/*
+ * dwSystemInfoFlags bits
+ * parameter of ImmGetCompositionString
+ */
+#define GCS_COMPREADSTR                 0x0001
+#define GCS_COMPREADATTR                0x0002
+#define GCS_COMPREADCLAUSE              0x0004
+#define GCS_COMPSTR                     0x0008
+#define GCS_COMPATTR                    0x0010
+#define GCS_COMPCLAUSE                  0x0020
+#define GCS_CURSORPOS                   0x0080
+#define GCS_DELTASTART                  0x0100
+#define GCS_RESULTREADSTR               0x0200
+#define GCS_RESULTREADCLAUSE            0x0400
+#define GCS_RESULTSTR                   0x0800
+#define GCS_RESULTCLAUSE                0x1000
+
+/* style bit flags for WM_IME_COMPOSITION */
+#define CS_INSERTCHAR                   0x2000
+#define CS_NOMOVECARET                  0x4000
+
+
+/*
+ * bits of fdwInit of INPUTCONTEXT
+ * IME version constants
+ */
+#define IMEVER_0310                     0x0003000A
+#define IMEVER_0400                     0x00040000
+
+
+/* IME property bits */
+#define IME_PROP_AT_CARET               0x00010000
+#define IME_PROP_SPECIAL_UI             0x00020000
+#define IME_PROP_CANDLIST_START_FROM_1  0x00040000
+#define IME_PROP_UNICODE                0x00080000
+#define IME_PROP_COMPLETE_ON_UNSELECT	0x00100000
+
+
+/* IME UICapability bits */
+#define UI_CAP_2700                     0x00000001
+#define UI_CAP_ROT90                    0x00000002
+#define UI_CAP_ROTANY                   0x00000004
+/* ImmSetCompositionString Capability bits */
+#define SCS_CAP_COMPSTR                 0x00000001
+#define SCS_CAP_MAKEREAD                0x00000002
+#define SCS_CAP_SETRECONVERTSTRING	0x00000004
+
+
+/* IME WM_IME_SELECT inheritance Capability bits */
+#define SELECT_CAP_CONVERSION           0x00000001
+#define SELECT_CAP_SENTENCE             0x00000002
+
+
+/* ID for deIndex of ImmGetGuideLine */
+#define GGL_LEVEL                       0x00000001
+#define GGL_INDEX                       0x00000002
+#define GGL_STRING                      0x00000003
+#define GGL_PRIVATE                     0x00000004
+
+/* ID for dwLevel of GUIDELINE Structure */
+#define GL_LEVEL_NOGUIDELINE            0x00000000
+#define GL_LEVEL_FATAL                  0x00000001
+#define GL_LEVEL_ERROR                  0x00000002
+#define GL_LEVEL_WARNING                0x00000003
+#define GL_LEVEL_INFORMATION            0x00000004
+
+/* ID for dwIndex of GUIDELINE Structure */
+#define GL_ID_UNKNOWN                   0x00000000
+#define GL_ID_NOMODULE                  0x00000001
+#define GL_ID_NODICTIONARY              0x00000010
+#define GL_ID_CANNOTSAVE                0x00000011
+#define GL_ID_NOCONVERT                 0x00000020
+#define GL_ID_TYPINGERROR               0x00000021
+#define GL_ID_TOOMANYSTROKE             0x00000022
+#define GL_ID_READINGCONFLICT           0x00000023
+#define GL_ID_INPUTREADING              0x00000024
+#define GL_ID_INPUTRADICAL              0x00000025
+#define GL_ID_INPUTCODE                 0x00000026
+#define GL_ID_INPUTSYMBOL               0x00000027
+#define GL_ID_CHOOSECANDIDATE           0x00000028
+#define GL_ID_REVERSECONVERSION         0x00000029
+#define GL_ID_PRIVATE_FIRST             0x00008000
+#define GL_ID_PRIVATE_LAST              0x0000FFFF
+
+/* ID for dwIndex of ImmGetProperty */
+#define IGP_GETIMEVERSION               (DWORD)(-4)
+#define IGP_PROPERTY                    0x00000004
+#define IGP_CONVERSION                  0x00000008
+#define IGP_SENTENCE                    0x0000000c
+#define IGP_UI                          0x00000010
+#define IGP_SETCOMPSTR                  0x00000014
+#define IGP_SELECT                      0x00000018
+
+
+/* dwIndex for ImmSetCompositionString API */
+#define SCS_SETSTR          (GCS_COMPREADSTR|GCS_COMPSTR)
+#define SCS_CHANGEATTR      (GCS_COMPREADATTR|GCS_COMPATTR)
+#define SCS_CHANGECLAUSE    (GCS_COMPREADCLAUSE|GCS_COMPCLAUSE)
+#define SCS_SETRECONVERTSTRING		0x00010000
+#define SCS_QUERYRECONVERTSTRING	0x00020000
+
+/* attribute for COMPOSITIONSTRING Structure */
+#define ATTR_INPUT                      0x00
+#define ATTR_TARGET_CONVERTED           0x01
+#define ATTR_CONVERTED                  0x02
+#define ATTR_TARGET_NOTCONVERTED        0x03
+#define ATTR_INPUT_ERROR                0x04
+#define ATTR_FIXEDCONVERTED		0x05
+
+
+/* bit field for IMC_SETCOMPOSITIONWINDOW, IMC_SETCANDIDATEWINDOW */
+#define CFS_DEFAULT                     0x0000
+#define CFS_RECT                        0x0001
+#define CFS_POINT                       0x0002
+#define CFS_FORCE_POSITION              0x0020
+#define CFS_CANDIDATEPOS                0x0040
+#define CFS_EXCLUDE                     0x0080
+
+/* conversion direction for ImmGetConversionList */
+#define GCL_CONVERSION                  0x0001
+#define GCL_REVERSECONVERSION           0x0002
+#define GCL_REVERSE_LENGTH              0x0003
+
+
+/* bit field for conversion mode */
+#define IME_CMODE_ALPHANUMERIC          0x0000
+#define IME_CMODE_NATIVE                0x0001
+#define IME_CMODE_CHINESE               IME_CMODE_NATIVE
+/* IME_CMODE_HANGEUL is old name of IME_CMODE_HANGUL. It will be gone eventually. */
+#define IME_CMODE_HANGEUL               IME_CMODE_NATIVE
+#define IME_CMODE_HANGUL                IME_CMODE_NATIVE
+#define IME_CMODE_JAPANESE              IME_CMODE_NATIVE
+#define IME_CMODE_KATAKANA              0x0002  /* only effect under IME_CMODE_NATIVE */
+#define IME_CMODE_LANGUAGE              0x0003
+#define IME_CMODE_FULLSHAPE             0x0008
+#define IME_CMODE_ROMAN                 0x0010
+#define IME_CMODE_CHARCODE              0x0020
+#define IME_CMODE_HANJACONVERT          0x0040
+#define IME_CMODE_SOFTKBD               0x0080
+#define IME_CMODE_NOCONVERSION          0x0100
+#define IME_CMODE_EUDC                  0x0200
+#define IME_CMODE_SYMBOL                0x0400
+#define IME_CMODE_FIXED			0x0800
+
+
+#define IME_SMODE_NONE                  0x0000
+#define IME_SMODE_PLAURALCLAUSE         0x0001
+#define IME_SMODE_SINGLECONVERT         0x0002
+#define IME_SMODE_AUTOMATIC             0x0004
+#define IME_SMODE_PHRASEPREDICT         0x0008
+#define IME_SMODE_CONVERSATION		0x0010
+
+/* style of candidate */
+#define IME_CAND_UNKNOWN                0x0000
+#define IME_CAND_READ                   0x0001
+#define IME_CAND_CODE                   0x0002
+#define IME_CAND_MEANING                0x0003
+#define IME_CAND_RADICAL                0x0004
+#define IME_CAND_STROKE                 0x0005
+
+
+/* wParam of report message WM_IME_NOTIFY */
+#define IMN_CLOSESTATUSWINDOW           0x0001
+#define IMN_OPENSTATUSWINDOW            0x0002
+#define IMN_CHANGECANDIDATE             0x0003
+#define IMN_CLOSECANDIDATE              0x0004
+#define IMN_OPENCANDIDATE               0x0005
+#define IMN_SETCONVERSIONMODE           0x0006
+#define IMN_SETSENTENCEMODE             0x0007
+#define IMN_SETOPENSTATUS               0x0008
+#define IMN_SETCANDIDATEPOS             0x0009
+#define IMN_SETCOMPOSITIONFONT          0x000A
+#define IMN_SETCOMPOSITIONWINDOW        0x000B
+#define IMN_SETSTATUSWINDOWPOS          0x000C
+#define IMN_GUIDELINE                   0x000D
+#define IMN_PRIVATE                     0x000E
+
+
+/* wParam of report message WM_IME_REQUEST */
+#define IMR_COMPOSITIONWINDOW		0x0001
+#define IMR_CANDIDATEWINDOW		0x0002
+#define IMR_COMPOSITIONFONT		0x0003
+#define IMR_RECONVERTSTRING		0x0004
+#define IMR_CONFIRMRECONVERTSTRING	0x0005
+#define IMR_QUERYCHARPOSITION		0x0006
+#define IMR_DOCUMENTFEED		0x0007
+
+
+/* error code of ImmGetCompositionString */
+#define IMM_ERROR_NODATA                (-1)
+#define IMM_ERROR_GENERAL               (-2)
+
+
+/* dialog mode of ImmConfigureIME */
+#define IME_CONFIG_GENERAL              1
+#define IME_CONFIG_REGISTERWORD         2
+#define IME_CONFIG_SELECTDICTIONARY     3
+
+/* dialog mode of ImmEscape */
+#define IME_ESC_QUERY_SUPPORT           0x0003
+#define IME_ESC_RESERVED_FIRST          0x0004
+#define IME_ESC_RESERVED_LAST           0x07FF
+#define IME_ESC_PRIVATE_FIRST           0x0800
+#define IME_ESC_PRIVATE_LAST            0x0FFF
+#define IME_ESC_SEQUENCE_TO_INTERNAL    0x1001
+#define IME_ESC_GET_EUDC_DICTIONARY     0x1003
+#define IME_ESC_SET_EUDC_DICTIONARY     0x1004
+#define IME_ESC_MAX_KEY                 0x1005
+#define IME_ESC_IME_NAME                0x1006
+#define IME_ESC_SYNC_HOTKEY             0x1007
+#define IME_ESC_HANJA_MODE              0x1008
+#define IME_ESC_AUTOMATA                0x1009
+#define IME_ESC_PRIVATE_HOTKEY          0x100a
+#define IME_ESC_GETHELPFILENAME		0x100b
+
+
+/* style of word registration */
+#define IME_REGWORD_STYLE_EUDC          0x00000001
+#define IME_REGWORD_STYLE_USER_FIRST    0x80000000
+#define IME_REGWORD_STYLE_USER_LAST     0xFFFFFFFF
+
+
+/* dwFlags for ImmAssociateContextEx */
+#define IACE_CHILDREN			0x0001
+#define IACE_DEFAULT			0x0010
+#define IACE_IGNORENOCONTEXT		0x0020
+
+/* dwFlags for ImmGetImeMenuItems */
+#define IGIMIF_RIGHTMENU		0x0001
+
+/* dwType for ImmGetImeMenuItems */
+#define IGIMII_CMODE			0x0001
+#define IGIMII_SMODE			0x0002
+#define IGIMII_CONFIGURE		0x0004
+#define IGIMII_TOOLS			0x0008
+#define IGIMII_HELP			0x0010
+#define IGIMII_OTHER			0x0020
+#define IGIMII_INPUTTOOLS		0x0040
+
+/* fType of IMEMENUITEMINFO structure */
+#define IMFT_RADIOCHECK			0x00001
+#define IMFT_SEPARATOR			0x00002
+#define IMFT_SUBMENU			0x00004
+
+/* fState of IMEMENUITEMINFO structure */
+#define IMFS_GRAYED			MFS_GRAYED
+#define IMFS_DISABLED			MFS_DISABLED
+#define IMFS_CHECKED			MFS_CHECKED
+#define IMFS_HILITE			MFS_HILITE
+#define IMFS_ENABLED			MFS_ENABLED
+#define IMFS_UNCHECKED			MFS_UNCHECKED
+#define IMFS_UNHILITE			MFS_UNHILITE
+#define IMFS_DEFAULT			MFS_DEFAULT
+
+
+/*
+ * type of soft keyboard
+ * for Windows Tranditional Chinese Edition
+ */
+#define SOFTKEYBOARD_TYPE_T1            0x0001
+/* for Windows Simplified Chinese Edition */
+#define SOFTKEYBOARD_TYPE_C1            0x0002
+
+
+HIMC   WINAPI ImmAssociateContext(HWND, HIMC);
+BOOL   WINAPI ImmAssociateContextEx(HWND, HIMC, DWORD);
+BOOL   WINAPI ImmConfigureIMEA(HKL, HWND, DWORD, LPVOID);
+BOOL   WINAPI ImmConfigureIMEW(HKL, HWND, DWORD, LPVOID);
+#define  ImmConfigureIME WINELIB_NAME_AW(ImmConfigureIME)
+HIMC   WINAPI ImmCreateContext(void);
+BOOL   WINAPI ImmDestroyContext(HIMC hIMC);
+BOOL   WINAPI ImmDisableIME(DWORD idThread);
+UINT   WINAPI ImmEnumRegisterWordA(HKL, REGISTERWORDENUMPROCA, LPCSTR, DWORD, LPCSTR, LPVOID);
+UINT   WINAPI ImmEnumRegisterWordW(HKL, REGISTERWORDENUMPROCW, LPCWSTR, DWORD, LPCWSTR, LPVOID);
+#define  ImmEnumRegisterWord WINELIB_NAME_AW(ImmEnumRegisterWord)
+LRESULT  WINAPI ImmEscapeA(HKL, HIMC, UINT, LPVOID);
+LRESULT  WINAPI ImmEscapeW(HKL, HIMC, UINT, LPVOID);
+#define  ImmEscape WINELIB_NAME_AW(ImmEscape)
+DWORD    WINAPI ImmGetCandidateListA(HIMC, DWORD, LPCANDIDATELIST, DWORD);
+DWORD    WINAPI ImmGetCandidateListW(HIMC, DWORD, LPCANDIDATELIST, DWORD);
+#define  ImmGetCandidateList WINELIB_NAME_AW(ImmGetCandidateList)
+DWORD    WINAPI ImmGetCandidateListCountA(HIMC, LPDWORD);
+DWORD    WINAPI ImmGetCandidateListCountW(HIMC, LPDWORD);
+#define  ImmGetCandidateListCount WINELIB_NAME_AW(ImmGetCandidateListCount)
+BOOL   WINAPI ImmGetCandidateWindow(HIMC, DWORD, LPCANDIDATEFORM);
+#if defined(_WINGDI_) && !defined(NOGDI)
+BOOL   WINAPI ImmGetCompositionFontA(HIMC, LPLOGFONTA);
+BOOL   WINAPI ImmGetCompositionFontW(HIMC, LPLOGFONTW);
+#define  ImmGetCompositionFont WINELIB_NAME_AW(ImmGetCompositionFont)
+BOOL   WINAPI ImmSetCompositionFontA(HIMC, LPLOGFONTA);
+BOOL   WINAPI ImmSetCompositionFontW(HIMC, LPLOGFONTW);
+#define  ImmSetCompositionFont WINELIB_NAME_AW(ImmSetCompositionFont)
+#endif
+LONG     WINAPI ImmGetCompositionStringA(HIMC, DWORD, LPVOID, DWORD);
+LONG     WINAPI ImmGetCompositionStringW(HIMC, DWORD, LPVOID, DWORD);
+#define  ImmGetCompositionString WINELIB_NAME_AW(ImmGetCompositionString)
+BOOL   WINAPI ImmGetCompositionWindow(HIMC, LPCOMPOSITIONFORM);
+HIMC   WINAPI ImmGetContext(HWND);
+DWORD    WINAPI ImmGetConversionListA(HKL, HIMC, LPCSTR, LPCANDIDATELIST, DWORD, UINT);
+DWORD    WINAPI ImmGetConversionListW(HKL, HIMC, LPCWSTR, LPCANDIDATELIST, DWORD, UINT);
+#define  ImmGetConversionList WINELIB_NAME_AW(ImmGetConversionList)
+BOOL   WINAPI ImmGetConversionStatus(HIMC, LPDWORD, LPDWORD);
+HWND   WINAPI ImmGetDefaultIMEWnd(HWND);
+UINT   WINAPI ImmGetDescriptionA(HKL, LPSTR, UINT);
+UINT   WINAPI ImmGetDescriptionW(HKL, LPWSTR, UINT);
+#define  ImmGetDescription WINELIB_NAME_AW(ImmGetDescription)
+DWORD    WINAPI ImmGetGuideLineA(HIMC, DWORD, LPSTR, DWORD);
+DWORD    WINAPI ImmGetGuideLineW(HIMC, DWORD, LPWSTR, DWORD);
+#define  ImmGetGuideLine WINELIB_NAME_AW(ImmGetGuideLine)
+UINT   WINAPI ImmGetIMEFileNameA(HKL, LPSTR, UINT);
+UINT   WINAPI ImmGetIMEFileNameW(HKL, LPWSTR, UINT);
+#define  ImmGetIMEFileName WINELIB_NAME_AW(ImmGetIMEFileName)
+DWORD  WINAPI ImmGetImeMenuItemsA(HIMC, DWORD, DWORD, LPIMEMENUITEMINFOA, LPIMEMENUITEMINFOA, DWORD);
+DWORD  WINAPI ImmGetImeMenuItemsW(HIMC, DWORD, DWORD, LPIMEMENUITEMINFOW, LPIMEMENUITEMINFOW, DWORD);
+#define ImmGetImeMenuItems  WINELIB_NAME_AW(ImmGetImeMenuItems)
+BOOL   WINAPI ImmGetOpenStatus(HIMC);
+DWORD    WINAPI ImmGetProperty(HKL, DWORD);
+UINT   WINAPI ImmGetRegisterWordStyleA(HKL, UINT, LPSTYLEBUFA);
+UINT   WINAPI ImmGetRegisterWordStyleW(HKL, UINT, LPSTYLEBUFW);
+#define  ImmGetRegisterWordStyle WINELIB_NAME_AW(ImmGetRegisterWordStyle)
+BOOL   WINAPI ImmGetStatusWindowPos(HIMC, LPPOINT);
+UINT   WINAPI ImmGetVirtualKey(HWND);
+HKL    WINAPI ImmInstallIMEA(LPCSTR, LPCSTR);
+HKL    WINAPI ImmInstallIMEW(LPCWSTR, LPCWSTR);
+#define  ImmInstallIME WINELIB_NAME_AW(ImmInstallIME)
+BOOL   WINAPI ImmIsIME(HKL);
+BOOL   WINAPI ImmIsUIMessageA(HWND, UINT, WPARAM, LPARAM);
+BOOL   WINAPI ImmIsUIMessageW(HWND, UINT, WPARAM, LPARAM);
+#define  ImmIsUIMessage WINELIB_NAME_AW(ImmIsUIMessage)
+BOOL   WINAPI ImmNotifyIME(HIMC, DWORD, DWORD, DWORD);
+BOOL   WINAPI ImmProcessKey(HWND, HKL, UINT, LPARAM, DWORD);
+BOOL   WINAPI ImmRegisterWordA(HKL, LPCSTR, DWORD, LPCSTR);
+BOOL   WINAPI ImmRegisterWordW(HKL, LPCWSTR, DWORD, LPCWSTR);
+#define  ImmRegisterWord WINELIB_NAME_AW(ImmRegisterWord)
+BOOL   WINAPI ImmReleaseContext(HWND, HIMC);
+BOOL   WINAPI ImmSetCandidateWindow(HIMC, LPCANDIDATEFORM);
+BOOL   WINAPI ImmSetCompositionStringA(HIMC, DWORD, LPCVOID, DWORD, LPCVOID, DWORD);
+BOOL   WINAPI ImmSetCompositionStringW(HIMC, DWORD, LPCVOID, DWORD, LPCVOID, DWORD);
+#define  ImmSetCompositionString WINELIB_NAME_AW(ImmSetCompositionString)
+BOOL   WINAPI ImmSetCompositionWindow(HIMC, LPCOMPOSITIONFORM);
+BOOL   WINAPI ImmSetConversionStatus(HIMC, DWORD, DWORD);
+BOOL   WINAPI ImmSetOpenStatus(HIMC, BOOL);
+BOOL   WINAPI ImmSetStatusWindowPos(HIMC, LPPOINT);
+BOOL   WINAPI ImmSimulateHotKey(HWND, DWORD);
+BOOL   WINAPI ImmUnregisterWordA(HKL, LPCSTR, DWORD, LPCSTR);
+BOOL   WINAPI ImmUnregisterWordW(HKL, LPCWSTR, DWORD, LPCWSTR);
+#define  ImmUnregisterWord WINELIB_NAME_AW(ImmUnregisterWord)
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* __WINE_IMM_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/imnact.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/imnact.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/imnact.idl	(revision 16410)
@@ -0,0 +1,299 @@
+/*
+ * Copyright 2006 Robert Shearman for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "objidl.idl";
+
+interface IImnAccount;
+
+cpp_quote("#ifndef HR_E")
+cpp_quote("#define HR_E(n) MAKE_SCODE(SEVERITY_ERROR, FACILITY_INTERNET, n)")
+cpp_quote("#endif")
+cpp_quote("#ifndef HR_S")
+cpp_quote("#define HR_S(n) MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_INTERNET, n)")
+cpp_quote("#endif")
+
+typedef enum tagSMTPAUTHTYPE
+{
+    SMTP_AUTH_NONE,
+    SMTP_AUTH_SICILY,
+    SMTP_AUTH_USE_POP3ORIMAP_SETTINGS,
+    SMTP_AUTH_USE_SMTP_SETTINGS,
+} SMTPAUTHTYPE;
+
+const SHORT CCHMAX_ORG_NAME = 256;
+const SHORT CCHMAX_DISPLAY_NAME = 256;
+const SHORT CCHMAX_ACCOUNT_NAME = 256;
+const SHORT CCHMAX_SERVER_NAME = 256;
+const SHORT CCHMAX_PASSWORD = 256;
+const SHORT CCHMAX_USERNAME = 256;
+const SHORT CCHMAX_EMAIL_ADDRESS = 256;
+const SHORT CCHMAX_CONNECTOID = 256;
+const SHORT CCHMAX_SEARCH_BASE = 256;
+const SHORT CCHMAX_ROOT_FOLDER = 256;
+const SHORT CCHMAX_SIGNATURE = 16;
+const SHORT CCHMAX_SERVICE = 256;
+
+[
+    object,
+    uuid(0A06BD31-166F-11D0-81B9-00C04FD85AB4),
+    pointer_default(unique)
+]
+interface IImnAdviseAccount : IUnknown
+{
+    typedef enum
+    {
+        ACCT_NEWS,
+        ACCT_MAIL,
+        ACCT_DIR_SERV,
+        ACCT_LAST
+    } ACCTTYPE;
+
+    typedef struct tagAccountContext
+    {
+        ACCTTYPE AcctType;
+        LPSTR pszAccountID;
+        LPSTR pszOldName;
+        DWORD dwServerType;
+    } ACTX;
+
+    HRESULT AdviseAccount(
+        [in]    DWORD dwAdviseType,
+        [in]    ACTX *pAcctCtx);
+}
+
+[
+    object,
+    uuid(8D0AED11-1638-11D0-81B9-00C04FD85AB4),
+    pointer_default(unique)
+]
+interface IImnAdviseMigrateServer : IUnknown
+{
+    HRESULT MigrateServer(
+        [in]    DWORD dwSrvType,
+        [in]    IImnAccount *pAccount);
+}
+
+[
+    object,
+    uuid(FD465483-1384-11D0-ABBD-0020AFDFD10A),
+    pointer_default(unique)
+]
+interface IImnEnumAccounts : IUnknown
+{
+    HRESULT GetCount(
+        [out]   ULONG *pcItems);
+
+    HRESULT SortByAccountName();
+
+    HRESULT GetNext(
+        [out]   IImnAccount **ppAccount);
+
+    HRESULT Reset();
+}
+
+[
+    object,
+    uuid(FD465481-1384-11D0-ABBD-0020AFDFD10A),
+    pointer_default(unique)
+]
+interface IImnAccountManager : IUnknown
+{
+    typedef struct tagACCTLISTINFO
+    {
+        DWORD cbSize;
+        ACCTTYPE AcctTypeInit;
+        DWORD dwAcctFlags;
+        DWORD dwFlags;
+    } ACCTLISTINFO;
+
+    HRESULT Init(
+        [in]    IImnAdviseMigrateServer *pAdviseMigrateServer);
+
+    HRESULT CreateAccountObject(
+        [in]    ACCTTYPE AcctType,
+        [out]   IImnAccount **ppAccount);
+
+    HRESULT Enumerate(
+        [in]    DWORD dwSrvTypes,
+        [out]   IImnEnumAccounts **ppEnumAccounts);
+
+    HRESULT GetAccountCount(
+        [in]    ACCTTYPE AcctType,
+        [out]   ULONG *pcServers);
+
+    HRESULT FindAccount(
+        [in]    DWORD dwPropTag,
+        [in]    LPCSTR pszSearchData,
+        [out]   IImnAccount **ppAccount);
+
+    HRESULT GetDefaultAccountName(
+        [in]    ACCTTYPE AcctType,
+        [in,ref] LPSTR pszAccount,
+        [in]    ULONG cchMax);
+
+    HRESULT ProcessNotification(
+        [in]    UINT uMsg,
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam);
+
+    HRESULT ValidateDefaultSendAccount();
+
+    HRESULT AccountListDialog(
+        [in]    HWND hwnd,
+        [in]    ACCTLISTINFO *pinfo);
+
+    HRESULT Advise(
+        [in]    IImnAdviseAccount *pAdviseAccount,
+        [out]   DWORD *pdwConnection);
+
+    HRESULT Unadvise(
+        [in]    DWORD dwConnection);
+
+    HRESULT GetUniqueAccountName(
+        [in]    LPSTR szName,
+        [in]    UINT cch);
+
+    HRESULT InitEx(
+        [in]    IImnAdviseMigrateServer *pAdviseMigrateServer,
+        [in]    DWORD dwFlags);
+}
+
+[
+    object,
+    uuid(C43DFC6F-62BB-11D2-A727-00C04F79E7C8),
+    pointer_default(unique)
+]
+interface IImnAccountManager2 : IImnAccountManager
+{
+    HRESULT InitUser(
+        [in]    IImnAdviseMigrateServer *pAdviseMigrateServer,
+        [in]    REFGUID rguidID,
+        [in]    DWORD dwFlags);
+
+    HRESULT GetIncompleteAccount(
+        [in]    ACCTTYPE AcctType,
+        [in,ref] LPSTR pszAccountId,
+        [in]    ULONG cchMax);
+
+    HRESULT SetIncompleteAccount(
+        [in]    ACCTTYPE AcctType,
+        [in]    LPCSTR pszAccountId);
+}
+
+[
+    object,
+    uuid(FD465484-1384-11D0-ABBD-0020AFDFD10A),
+    pointer_default(unique)
+]
+interface IPropertyContainer : IUnknown
+{
+    typedef enum
+    {
+        TYPE_ERROR = 1000,
+        TYPE_DWORD,
+        TYPE_LONG,
+        TYPE_WORD,
+        TYPE_SHORT,
+        TYPE_BYTE,
+        TYPE_CHAR,
+        TYPE_FILETIME,
+        TYPE_STRING,
+        TYPE_BINARY,
+        TYPE_FLAGS,
+        TYPE_STREAM,
+        TYPE_WSTRING,
+        TYPE_BOOL,
+        TYPE_PASS,
+        TYPE_LAST
+    } PROPTYPE;
+
+cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
+cpp_quote("#undef GetProp")
+cpp_quote("#undef SetProp")
+cpp_quote("#endif")
+
+    HRESULT GetProp(
+        [in]    DWORD dwPropTag,
+        [in,size_is(*pcb),ref] BYTE *pb,
+        [in]    ULONG *pcb);
+
+    HRESULT GetPropDw(
+        [in]    DWORD dwPropTag,
+        [out]   DWORD *pdw);
+
+    HRESULT GetPropSz(
+        [in]    DWORD dwPropTag,
+        [in,ref] LPSTR psz,
+        [in]    ULONG cchMax);
+
+    HRESULT SetProp(
+        [in]    DWORD dwPropTag,
+        [in,size_is(cb)] BYTE *pb,
+        [in]    ULONG cb);
+
+    HRESULT SetPropDw(
+        [in]    DWORD dwPropTag,
+        [in]    DWORD dw);
+
+    HRESULT SetPropSz(
+        [in]    DWORD dwPropTag,
+        [in]    LPSTR psz);
+}
+
+[
+    object,
+    uuid(FD465482-1384-11D0-ABBD-0020AFDFD10A),
+    pointer_default(unique)
+]
+interface IImnAccount : IPropertyContainer
+{
+    HRESULT Exist();
+
+    HRESULT SetAsDefault();
+
+    HRESULT Delete();
+
+    HRESULT SaveChanges();
+
+    HRESULT GetAccountType(
+        [out]   ACCTTYPE *pAcctType);
+
+    HRESULT GetServerTypes(
+        [out]   DWORD *pdwSrvTypes);
+
+    HRESULT ShowProperties(
+        [in]    HWND hwnd,
+        [in]    DWORD dwFlags);
+
+    HRESULT ValidateProperty(
+        [in]    DWORD dwPropTag,
+        [in,size_is(cb)] BYTE *pb,
+        [in]    ULONG cb);
+
+    HRESULT DoWizard(
+        [in]    HWND hwnd,
+        [in]    DWORD dwFlags);
+
+    HRESULT DoImportWizard(
+        [in]    HWND hwnd,
+        [in]    CLSID clsid,
+        [in]    DWORD dwFlags);
+}
+
+cpp_quote("HRESULT WINAPI HrCreateAccountManager(IImnAccountManager **ppAccountManager);")
+cpp_quote("HRESULT WINAPI ValidEmailAddress(LPSTR lpAddress);")
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/imnxport.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/imnxport.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/imnxport.idl	(revision 16410)
@@ -0,0 +1,1114 @@
+/*
+ * Copyright 2006 Robert Shearman for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "imnact.idl";
+
+interface IInternetTransport;
+interface ISMTPTransport;
+interface IPOP3Transport;
+interface IIMAPTransport;
+
+/* CLSIDs */
+
+cpp_quote("DEFINE_GUID(CLSID_IInternetMessageUrl, 0xca30cc91, 0xb1b3, 0x11d0, 0x85, 0xd0, 0x00, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
+cpp_quote("DEFINE_GUID(CLSID_ISMTPTransport, 0xfd853ce6, 0x7f86, 0x11d0, 0x82, 0x52, 0x00, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
+cpp_quote("DEFINE_GUID(CLSID_ISMTPTransport2, 0xdf2c7eC, 0x3435, 0x11d0, 0x81, 0xd0, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
+cpp_quote("DEFINE_GUID(CLSID_IPOP3Transport, 0xfd853ce7, 0x7f86, 0x11d0, 0x82, 0x52, 0x00, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
+cpp_quote("DEFINE_GUID(CLSID_INNTPTransport, 0xfd853ce8, 0x7f86, 0x11d0, 0x82, 0x52, 0x00, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
+cpp_quote("DEFINE_GUID(CLSID_IRASTransport, 0xfd853ce9, 0x7f86, 0x11d0, 0x82, 0x52, 0x00, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
+cpp_quote("DEFINE_GUID(CLSID_IRangeList, 0xfd853cea, 0x7f86, 0x11d0, 0x82, 0x52, 0x00, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
+cpp_quote("DEFINE_GUID(CLSID_IIMAPTransport, 0xfd853ceb, 0x7f86, 0x11d0, 0x82, 0x52, 0x00, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
+cpp_quote("DEFINE_GUID(CLSID_IHTTPMailTransport, 0x5a580c11, 0xe5eb, 0x11d1, 0xa8, 0x6e, 0x00, 0x00, 0xf8, 0x08, 0x4f, 0x96);")
+cpp_quote("DEFINE_GUID(CLSID_IPropFindRequest, 0xbb847b8a, 0x054a, 0x11d2, 0xa8, 0x94, 0x00, 0x00, 0xf8, 0x08, 0x4f, 0x96);")
+cpp_quote("DEFINE_GUID(CLSID_IPropPatchRequest, 0xea678830, 0x235d, 0x11d2, 0xa8, 0xb6, 0x00, 0x00, 0xf8, 0x08, 0x4f, 0x96);")
+
+/* Error Codes */
+
+cpp_quote("#ifndef HR_E")
+cpp_quote("#define HR_E(n) MAKE_SCODE(SEVERITY_ERROR, FACILITY_INTERNET, n)")
+cpp_quote("#endif")
+cpp_quote("#ifndef HR_S")
+cpp_quote("#define HR_S(n) MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_INTERNET, n)")
+cpp_quote("#endif")
+
+/* General Error Codes */
+cpp_quote("#define IXP_E_LOAD_SICILY_FAILED     HR_E(0xCC00)")
+cpp_quote("#define IXP_E_INVALID_CERT_CN        HR_E(0xCC01)")
+cpp_quote("#define IXP_E_INVALID_CERT_DATE      HR_E(0xCC02)")
+cpp_quote("#define IXP_E_ALREADY_CONNECTED      HR_E(0xCC03)")
+cpp_quote("#define IXP_E_CONN                   HR_E(0xCC04)")
+cpp_quote("#define IXP_E_NOT_CONNECTED          HR_E(0xCC05)")
+cpp_quote("#define IXP_E_CONN_SEND              HR_E(0xCC06)")
+cpp_quote("#define IXP_E_WOULD_BLOCK            HR_E(0xCC07)")
+cpp_quote("#define IXP_E_INVALID_STATE          HR_E(0xCC08)")
+cpp_quote("#define IXP_E_CONN_RECV              HR_E(0xCC09)")
+cpp_quote("#define IXP_E_INCOMPLETE             HR_E(0xCC0A)")
+cpp_quote("#define IXP_E_BUSY                   HR_E(0xCC0B)")
+cpp_quote("#define IXP_E_NOT_INIT               HR_E(0xCC0C)")
+cpp_quote("#define IXP_E_CANT_FIND_HOST         HR_E(0xCC0D)")
+cpp_quote("#define IXP_E_FAILED_TO_CONNECT      HR_E(0xCC0E)")
+cpp_quote("#define IXP_E_CONNECTION_DROPPED     HR_E(0xCC0F)")
+cpp_quote("#define IXP_E_INVALID_ADDRESS        HR_E(0xCC10)")
+cpp_quote("#define IXP_E_INVALID_ADDRESS_LIST   HR_E(0xCC11)")
+cpp_quote("#define IXP_E_SOCKET_READ_ERROR      HR_E(0xCC12)")
+cpp_quote("#define IXP_E_SOCKET_WRITE_ERROR     HR_E(0xCC13)")
+cpp_quote("#define IXP_E_SCOKET_INIT_ERROR      HR_E(0xCC14)")
+cpp_quote("#define IXP_E_SOCKET_CONNECT_ERROR   HR_E(0xCC15)")
+cpp_quote("#define IXP_E_INVALID_ACCOUNT        HR_E(0xCC16)")
+cpp_quote("#define IXP_E_USER_CANCEL            HR_E(0xCC17)")
+cpp_quote("#define IXP_E_SICILY_LOGON_FAILED    HR_E(0xCC18)")
+cpp_quote("#define IXP_E_TIMEOUT                HR_E(0xCC19)")
+cpp_quote("#define IXP_E_SECURE_CONNECT_FAILED  HR_E(0xCC1A)")
+
+/* SMTP Failure Statuses */
+cpp_quote("#define IXP_E_SMTP_RESPONSE_ERROR            HR_E(0xCC60)")
+cpp_quote("#define IXP_E_SMTP_UNKNOWN_RESPONSE_CODE     HR_E(0xCC61)")
+cpp_quote("#define IXP_E_SMTP_500_SYNTAX_ERROR          HR_E(0xCC62)")
+cpp_quote("#define IXP_E_SMTP_501_PARAM_SYNTAX          HR_E(0xCC63)")
+cpp_quote("#define IXP_E_SMTP_502_COMMAND_NOTIMPL       HR_E(0xCC64)")
+cpp_quote("#define IXP_E_SMTP_503_COMMAND_SEQ           HR_E(0xCC65)")
+cpp_quote("#define IXP_E_SMTP_504_COMMAND_PARAM_NOTIMPL HR_E(0xCC66)")
+cpp_quote("#define IXP_E_SMTP_421_NOT_AVAILABLE         HR_E(0xCC67)")
+cpp_quote("#define IXP_E_SMTP_450_MAILBOX_BUSY          HR_E(0xCC68)")
+cpp_quote("#define IXP_E_SMTP_550_MAILBOX_NOT_FOUND     HR_E(0xCC69)")
+cpp_quote("#define IXP_E_SMTP_451_ERROR_PROCESSING      HR_E(0xCC6A)")
+cpp_quote("#define IXP_E_SMTP_551_USER_NOT_LOCAL        HR_E(0xCC6B)")
+cpp_quote("#define IXP_E_SMTP_452_NO_SYSTEM_STORAGE     HR_E(0xCC6C)")
+cpp_quote("#define IXP_E_SMTP_552_STORAGE_OVERFLOW      HR_E(0xCC6D)")
+cpp_quote("#define IXP_E_SMTP_553_MAILBOX_NAME_SYNTAX   HR_E(0xCC6E)")
+cpp_quote("#define IXP_E_SMTP_554_TRANSACT_FAILED       HR_E(0xCC6F)")
+
+/* SMTP Success Statuses */
+cpp_quote("#define IXP_E_SMTP_211_SYSTEM_STATUS         HR_S(0xCC70)")
+cpp_quote("#define IXP_E_SMTP_214_HELP_MESSAGE          HR_S(0xCC71)")
+cpp_quote("#define IXP_E_SMTP_220_READY                 HR_S(0xCC72)")
+cpp_quote("#define IXP_E_SMTP_221_CLOSING               HR_S(0xCC73)")
+cpp_quote("#define IXP_E_SMTP_250_MAIL_ACTION_OKAY      HR_S(0xCC74)")
+cpp_quote("#define IXP_E_SMTP_251_FORWARDING_MAIL       HR_S(0xCC75)")
+cpp_quote("#define IXP_E_SMTP_354_START_MAIL_INPUT      HR_S(0xCC76)")
+cpp_quote("#define IXP_E_SMTP_CONTINUE                  HR_S(0xCC77)")
+cpp_quote("#define IXP_E_SMTP_334_AUTH_READY_RESPONSE   HR_S(0xCC78)")
+cpp_quote("#define IXP_E_SMTP_245_AUTH_SUCCESS          HR_S(0xCC79)")
+
+/* More SMTP Failure Statuses */
+cpp_quote("#define IXP_E_SMTP_REJECTED_SENDER           HR_E(0xCC78)")
+cpp_quote("#define IXP_E_SMTP_REJECTED_RECIPIENTS       HR_E(0xCC79)")
+cpp_quote("#define IXP_E_SMTP_NO_SENDER                 HR_E(0xCC7A)")
+cpp_quote("#define IXP_E_SMTP_NO_RECIPIENTS             HR_E(0xCC7B)")
+cpp_quote("#define IXP_E_SMTP_530_STARTTLS_REQUIRED     HR_E(0xCC7C)")
+cpp_quote("#define IXP_E_SMTP_NO_STARTTLS_SUPPORT       HR_E(0xCC7D)")
+cpp_quote("#define IXP_E_SMTP_NO_DSN_SUPPORT            HR_E(0xCC7E)")
+cpp_quote("#define IXP_E_SMTP_454_STARTTLS_FAILED       HR_E(0xCC7F)")
+
+const SHORT CCHMAX_DOMAIN = 256;
+const SHORT CCHMAX_PHONE_NUMBER = 128;
+
+const DWORD DEFAULT_IMAP_PORT = 143;
+const DWORD DEFAULT_POP3_PORT = 110;
+const DWORD DEFAULT_SMTP_PORT = 25;
+const DWORD DEFAULT_NNTP_PORT = 119;
+
+typedef enum tagINETADDRTYPE
+{
+    ADDR_TO,
+    ADDR_FROM,
+    ADDR_DSN_NEVER = 16,
+    ADDR_DSN_SUCCESS = 32,
+    ADDR_DSN_FAILURE = 64,
+    ADDR_DSN_DELAY = 128
+} INETADDRTYPE;
+
+const DWORD ADDR_TOFROM_MASK = 0x1;
+const DWORD ADDR_DSN_MASK = 0xf0;
+
+typedef enum tagDSNRET
+{
+    DSNRET_DEFAULT,
+    DSNRET_HDRS,
+    DSNRET_FULL,
+} DSNRET;
+
+typedef struct tagINETADDR
+{
+    INETADDRTYPE addrtype;
+    CHAR szEmail[CCHMAX_EMAIL_ADDRESS];
+} INETADDR, *LPINETADDR;
+
+typedef struct tagINETADDRLIST
+{
+    ULONG cAddress;
+    LPINETADDR prgAddress;
+} INETADDRLIST, *LPINETADDRLIST;
+
+typedef enum tagRASCONNTYPE
+{
+    RAS_CONNECT_LAN,
+    RAS_CONNECT_MANUAL,
+    RAS_CONNECT_RAS
+} RASCONNTYPE;
+
+typedef enum tagHTTPMAILPROPTYPE
+{
+    HTTPMAIL_PROP_INVALID,
+    HTTPMAIL_PROP_ADBAR,
+    HTTPMAIL_PROP_CONTACTS,
+    HTTPMAIL_PROP_INBOX,
+    HTTPMAIL_PROP_OUTBOX,
+    HTTPMAIL_PROP_SENDMSG,
+    HTTPMAIL_PROP_SENTITEMS,
+    HTTPMAIL_PROP_DELETEDITEMS,
+    HTTPMAIL_PROP_DRAFTS,
+    HTTPMAIL_PROP_MSGFOLDERROOT,
+    HTTPMAIL_PROP_SIG,
+    HTTPMAIL_PROP_LAST
+} HTTPMAILPROPTYPE;
+
+typedef enum tagHTTPMAILSPECIALFOLDER
+{
+    HTTPMAIL_SF_NONE,
+    HTTPMAIL_SF_UNRECOGNIZED,
+    HTTPMAIL_SF_INBOX,
+    HTTPMAIL_SF_DELETEDITEMS,
+    HTTPMAIL_SF_DRAFTS,
+    HTTPMAIL_SF_OUTBOX,
+    HTTPMAIL_SF_SENTITEMS,
+    HTTPMAIL_SF_CONTACTS,
+    HTTPMAIL_SF_CALENDAR,
+    HTTPMAIL_SF_MSNPROMO,
+    HTTPMAIL_SF_LAST
+} HTTPMAILSPECIALFOLDER;
+
+typedef enum tagHTTPMAILCONTACTTYPE
+{
+    HTTPMAIL_CT_CONTACT,
+    HTTPMAIL_CT_GROUP,
+    HTTPMAIL_CT_LAST
+} HTTPMAILCONTACTTYPE;
+
+const DWORD DAVNAMESPACE_UNKNOWN = 0xFFFFFFFF;
+const DWORD DAVNAMESPACE_DAV = 0;
+const DWORD DAVNAMESPACE_HOTMAIL = 1;
+const DWORD DAVNAMESPACE_HTTPMAIL = 2;
+const DWORD DAVNAMESPACE_MAIL = 3;
+const DWORD DAVNAMESPACE_CONTACTS = 4;
+
+cpp_quote("#define ISF_SMTP_USEIPFORHELO        0x01")
+cpp_quote("#define ISF_ALWAYSPROMPTFORPASSWORD  0x02")
+/* for SMTP - send EHLO and use STARTTLS if available: */
+cpp_quote("#define ISF_SSLONSAMEPORT            0x04")
+cpp_quote("#define ISF_QUERYDSNSUPPORT          0x08")
+/* for SMTP - send EHLO and use AUTH if available: */
+cpp_quote("#define ISF_QUERYAUTHSUPPORT         0x10")
+
+typedef struct INETSERVER
+{
+    CHAR szAccount[CCHMAX_ACCOUNT_NAME];
+    CHAR szUserName[CCHMAX_USERNAME];
+    CHAR szPassword[CCHMAX_PASSWORD];
+    CHAR szServerName[CCHMAX_SERVER_NAME];
+    CHAR szConnectoid[CCHMAX_CONNECTOID];
+    RASCONNTYPE rasconntype;
+    DWORD dwPort;
+    BOOL fSSL;
+    BOOL fTrySicily;
+    DWORD dwTimeout;
+    DWORD dwFlags;
+} INETSERVER, *LPINETSERVER;
+
+typedef enum tagIXPTYPE
+{
+    IXP_NNTP,
+    IXP_SMTP,
+    IXP_POP3,
+    IXP_IMAP,
+    IXP_RAS,
+    IXP_HTTPMail
+} IXPTYPE;
+
+typedef enum tagIXPSTATUS
+{
+    IXP_FINDINGHOST,
+    IXP_CONNECTING,
+    IXP_SECURING,
+    IXP_CONNECTED,
+    IXP_AUTHORIZING,
+    IXP_AUTHRETRY,
+    IXP_AUTHORIZED,
+    IXP_DISCONNECTING,
+    IXP_DISCONNECTED,
+    IXP_LAST
+} IXPSTATUS;
+
+const DWORD DEPTH_INFINITY = 0xFFFFFFFE;
+
+typedef DWORD MEMBERINFOFLAGS;
+
+const MEMBERINFOFLAGS HTTP_MEMBERINFO_COMMONPROPS = 0x0;
+const MEMBERINFOFLAGS HTTP_MEMBERINFO_FOLDERPROPS = 0x1;
+const MEMBERINFOFLAGS HTTP_MEMBERINFO_MESSAGEPROPS = 0x2;
+const MEMBERINFOFLAGS HTTP_MEMBERINFO_ALLPROPS = HTTP_MEMBERINFO_FOLDERPROPS | HTTP_MEMBERINFO_MESSAGEPROPS;
+
+typedef DWORD IMAP_MSGFLAGS;
+
+const IMAP_MSGFLAGS IMAP_MSG_NOFLAGS = 0x00;
+const IMAP_MSGFLAGS IMAP_MSG_ANSWERED = 0x01;
+const IMAP_MSGFLAGS IMAP_MSG_FLAGGED = 0x02;
+const IMAP_MSGFLAGS IMAP_MSG_DELETED = 0x04;
+const IMAP_MSGFLAGS IMAP_MSG_SEEN = 0x08;
+const IMAP_MSGFLAGS IMAP_MSG_DRAFT = 0x10;
+const IMAP_MSGFLAGS IMAP_MSG_ALLFLAGS = 0x1f;
+
+[
+    object,
+    uuid(CA30F3FF-C9AC-11D1-9A3A-00C04FA309D4),
+    local
+]
+interface ITransportCallbackService : IUnknown
+{
+    HRESULT GetParentWindow(
+        [in]    DWORD dwReserved,
+        [out]   HWND *phwndParent);
+
+    HRESULT GetAccount(
+        [out]   LPDWORD pdwServerType,
+        [out]   IImnAccount **ppAccount);
+}
+
+[
+    object,
+    uuid(0DF2C7E1-3435-11D0-81D0-00C04FD85AB4),
+    local
+]
+interface ITransportCallback : IUnknown
+{
+    typedef struct tagIXPRESULT
+    {
+        HRESULT hrResult;
+        LPSTR pszResponse;
+        UINT uiServerError;
+        HRESULT hrServerError;
+        DWORD dwSocketError;
+        LPSTR pszProblem;
+    } IXPRESULT, *LPIXPRESULT;
+
+    typedef enum tagCMDTYPE
+    {
+        CMD_SEND,
+        CMD_RESP
+    } CMDTYPE;
+
+    HRESULT OnTimeout(
+        [in,out]    DWORD *pdwTimeout,
+        [in]        IInternetTransport *pTransport);
+
+    HRESULT OnLogonPrompt(
+        [in,out]    LPINETSERVER pInetServer,
+        [in]        IInternetTransport *pTransport);
+
+    INT OnPrompt(
+        [in]    HRESULT hrError,
+        [in]    LPCSTR pszText,
+        [in]    LPCSTR pszCaption,
+        [in]    UINT uType,
+        [in]    IInternetTransport *pTransport);
+
+    HRESULT OnStatus(
+        [in]    IXPSTATUS ixpstatus,
+        [in]    IInternetTransport *pTransport);
+
+    HRESULT OnError(
+        [in]    IXPSTATUS ixpstatus,
+        [in]    LPIXPRESULT pResult,
+        [in]    IInternetTransport *pTransport);
+
+    HRESULT OnCommand(
+        [in]    CMDTYPE cmdtype,
+        [in]    LPSTR pszLine,
+        [in]    HRESULT hrResponse,
+        [in]    IInternetTransport *pTransport);
+}
+
+[
+    object,
+    uuid(1F636C01-364E-11D0-81D3-00C04FD85AB4),
+    local
+]
+interface IInternetTransport : IUnknown
+{
+    const boolean iitAUTHENTICATE = TRUE;
+    const boolean iitDONT_AUTHENTICATe = FALSE;
+    const boolean iitENABLE_ONCOMMAND = TRUE;
+    const boolean iitDISABLE_ONCOMMAND = FALSE;
+
+    typedef enum tagIXPISSTATE
+    {
+        IXP_IS_CONNECTED,
+        IXP_IS_BUSY,
+        IXP_IS_READY,
+        IXP_IS_AUTHENTICATED
+    } IXPISSTATE;
+
+    HRESULT GetServerInfo(
+        [in,out]    LPINETSERVER pInetServer);
+
+    IXPTYPE GetIXPType();
+
+    HRESULT IsState(
+        [in]    IXPISSTATE isstate);
+
+    HRESULT InetServerFromAccount(
+        [in]        IImnAccount *pAccount,
+        [in,out]    LPINETSERVER pInetServer);
+
+    HRESULT Connect(
+        [in]    LPINETSERVER pInetServer,
+        [in]    boolean fAuthenticate,
+        [in]    boolean fCommandLogging);
+
+    HRESULT HandsOffCallback();
+
+    HRESULT Disconnect();
+
+    HRESULT DropConnection();
+
+    HRESULT GetStatus(
+        [out]   IXPSTATUS *pCurrentStatus);
+}
+
+[
+    object,
+    uuid(1F636C02-364E-11D0-81D3-00C04FD85AB4),
+    local
+]
+interface ISMTPCallback : ITransportCallback
+{
+    typedef enum tagSMTPCOMMAND
+    {
+        SMTP_NONE,
+        SMTP_BANNER,
+        SMTP_CONNECTED,
+        SMTP_SEND_MESSAGE,
+        SMTP_AUTH,
+        SMTP_EHLO,
+        SMTP_HELO,
+        SMTP_MAIL,
+        SMTP_RCPT,
+        SMTP_RSET,
+        SMTP_QUIT,
+        SMTP_DATA,
+        SMTP_DOT,
+        SMTP_SEND_STREAM,
+        SMTP_CUSTOM
+    } SMTPCOMMAND;
+
+    typedef struct tagSMTPSTREAM
+    {
+        DWORD cbIncrement;
+        DWORD cbCurrent;
+        DWORD cbTotal;
+    } SMTPSTREAM, *LPSMTPSTREAM;
+
+    typedef struct tagSMTPRESPONSE
+    {
+        SMTPCOMMAND command;
+        BOOL fDone;
+        IXPRESULT rIxpResult;
+        ISMTPTransport *pTransport;
+
+        [switch_type(SMTPCOMMAND), switch_is(command)]
+        union
+        {
+        [case(SMTP_SEND_STREAM)]    SMTPSTREAM rStreamInfo;
+        [default];
+        } DUMMYUNIONNAME;
+    } SMTPRESPONSE, *LPSMTPRESPONSE;
+
+    HRESULT OnResponse(
+        [in] LPSMTPRESPONSE pResponse);
+}
+
+[
+    object,
+    uuid(0DF2C7E2-3435-11D0-81D0-00C04FD85AB4),
+    local
+]
+interface ISMTPTransport : IInternetTransport
+{
+    typedef struct tagSMTPMESSAGE
+    {
+        ULONG cbSize;
+        LPSTREAM pstmMsg;
+        INETADDRLIST rAddressList;
+    } SMTPMESSAGE, *LPSMTPMESSAGE;
+
+    HRESULT InitNew(
+        [in]    LPSTR pszLogFilePath,
+        [in]    ISMTPCallback *pCallback);
+
+cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
+cpp_quote("#undef SendMessage")
+cpp_quote("#endif")
+
+    HRESULT SendMessage(
+        [in]    LPSMTPMESSAGE pMessage);
+
+    HRESULT CommandMAIL(
+        [in]    LPSTR pszEmailFrom);
+
+    HRESULT CommandRCPT(
+        [in]    LPSTR pszEmailTo);
+
+    HRESULT CommandEHLO();
+
+    HRESULT CommandHELO();
+
+    HRESULT CommandAUTH(
+        [in]    LPSTR pszAuthType);
+
+    HRESULT CommandQUIT();
+
+    HRESULT CommandRSET();
+
+    HRESULT CommandDATA();
+
+    HRESULT CommandDOT();
+
+    HRESULT SendDataStream(
+        [in]    IStream *pStream,
+        [in]    ULONG cbSize);
+}
+
+[
+    object,
+    uuid(0DF2C7EC-3435-11D0-81D0-00C04FD85AB4),
+    local
+]
+interface ISMTPTransport2 : ISMTPTransport
+{
+    typedef struct tagSMTPMESSAGE2
+    {
+        SMTPMESSAGE smtpMsg;
+        LPSTR pszDSNENVID;
+        DSNRET dsnRet;
+        DWORD dwReserved;
+        DWORD dwReserved2;
+    } SMTPMESSAGE2, *LPSMTPMESSAGE2;
+
+    HRESULT SetWindow();
+
+    HRESULT ResetWindow();
+
+    HRESULT SendMessage2(
+        [in]    LPSMTPMESSAGE2 pMessage);
+
+    HRESULT CommandRCPT2(
+        [in]    LPSTR pszEmailTo,
+        [in]    INETADDRTYPE atDSN);
+}
+
+/* FIXME: IDAVNamespaceArbiter, IPropPatchRequest, IPropFindRequest, IPropFindMultiResponse, IPropFindResponse, IHTTPMailCallback, IHTTPMailTransport */
+
+[
+    object,
+    uuid(0DF2C7E3-3435-11D0-81D0-00C04FD85AB4),
+    local
+]
+interface IPOP3Callback : ITransportCallback
+{
+    typedef enum tagPOP3COMMAND
+    {
+        POP3_NONE,
+        POP3_BANNER,
+        POP3_CONNECTED,
+        POP3_USER,
+        POP3_PASS,
+        POP3_AUTH,
+        POP3_UIDL,
+        POP3_STAT,
+        POP3_LIST,
+        POP3_DELE,
+        POP3_RETR,
+        POP3_TOP,
+        POP3_NOOP,
+        POP3_QUIT,
+        POP3_RSET,
+        POP3_CUSTOM
+    } POP3COMMAND;
+
+    typedef struct tagPOP3RETR
+    {
+        BOOL fHeader;
+        BOOL fBody;
+        DWORD dwPopId;
+        DWORD cbSoFar;
+        LPSTR pszLines;
+        ULONG cbLines;
+    } POP3RETR, *LPPOP3RETR;
+
+    typedef struct tagPOP3TOP
+    {
+        BOOL fHeader;
+        BOOL fBody;
+        DWORD dwPopId;
+        DWORD cPreviewLines;
+        DWORD cbSoFar;
+        LPSTR pszLines;
+        ULONG cbLines;
+    } POP3TOP, *LPPOP3TOP;
+
+    typedef struct tagPOP3LIST
+    {
+        DWORD dwPopId;
+        DWORD cbSize;
+    } POP3LIST, *LPPOP3LIST;
+
+    typedef struct tagPOP3UIDL
+    {
+        DWORD dwPopId;
+        LPSTR pszUidl;
+    } POP3UIDL, *LPPOP3UIDL;
+
+    typedef struct tagPOP3STAT
+    {
+        DWORD cMessages;
+        DWORD cbMessages;
+    } POP3STAT, *LPPOP3STAT;
+
+    typedef struct tagPOP3RESPONSE
+    {
+        POP3COMMAND command;
+        BOOL fDone;
+        IXPRESULT rIxpResult;
+        IPOP3Transport *pTransport;
+        BOOL fValidInfo;
+        [switch_type(POP3COMMAND), switch_is(command)]
+        union
+        {
+        [case(POP3_UIDL)] POP3UIDL rUidlInfo;
+        [case(POP3_STAT)] POP3STAT rStatInfo;
+        [case(POP3_LIST)] POP3LIST rListInfo;
+        [case(POP3_DELE)] DWORD dwPopId;
+        [case(POP3_RETR)] POP3RETR rRetrInfo;
+        [case(POP3_TOP)]  POP3TOP rTopInfo;
+        [default];
+        } DUMMYUNIONNAME;
+    } POP3RESPONSE, *LPPOP3RESPONSE;
+
+    HRESULT OnResponse(
+        [in]    LPPOP3RESPONSE pResponse);
+}
+
+[
+    object,
+    uuid(0DF2C7E4-3435-11D0-81D0-00C04FD85AB4),
+    local
+]
+interface IPOP3Transport : IInternetTransport
+{
+    typedef enum tagPOP3CMDTYPE
+    {
+        POP3CMD_GET_POPID,
+        POP3CMD_GET_MARKED,
+        POP3CMD_GET_ALL
+    } POP3CMDTYPE;
+
+    typedef enum tagPOP3MARKTYPE
+    {
+        POP3_MARK_FOR_TOP = 0x01,
+        POP3_MARK_FOR_RETR = 0x02,
+        POP3_MARK_FOR_DELE = 0x04,
+        POP3_MARK_FOR_UIDL = 0x08,
+        POP3_MARK_FOR_LIST = 0x10
+    } POP3MARKTYPE;
+
+    HRESULT InitNew(
+        [in]    LPSTR pszLogFilePath,
+        [in]    IPOP3Callback *pCallback);
+
+    HRESULT MarkItem(
+        [in]    POP3MARKTYPE marktype,
+        [in]    DWORD dwPopId,
+        [in]    boolean fMarked);
+
+    HRESULT CommandAUTH(
+        [in]    LPSTR pszAuthType);
+
+    HRESULT CommandUSER(
+        [in]    LPSTR pszUserName);
+
+    HRESULT CommandPASS(
+        [in]    LPSTR pszPassword);
+
+    HRESULT CommandLIST(
+        [in]    POP3CMDTYPE cmdtype,
+        [in]    DWORD dwPopId);
+
+    HRESULT CommandTOP(
+        [in]    POP3CMDTYPE cmdtype,
+        [in]    DWORD dwPopId,
+        [in]    DWORD cPreviewLines);
+
+    HRESULT CommandQUIT();
+
+    HRESULT CommandSTAT();
+
+    HRESULT CommandNOOP();
+
+    HRESULT CommandRSET();
+
+    HRESULT CommandUIDL(
+        [in]    POP3CMDTYPE cmdtype,
+        [in]    DWORD dwPopId);
+
+    HRESULT CommandDELE(
+        [in]    POP3CMDTYPE cmdtype,
+        [in]    DWORD dwPopId);
+
+    HRESULT CommandRETR(
+        [in]    POP3CMDTYPE cmdtype,
+        [in]    DWORD dwPopId);
+}
+
+/* FIXME: INNTPCallback, INNTPTransport */
+
+[
+    object,
+    uuid(8C438160-4EF6-11d0-874F-00AA00530EE9),
+    local,
+]
+interface IRangeList : IUnknown
+{
+    const ULONG RL_RANGE_ERROR = ((ULONG)-1);
+    const ULONG RL_LAST_MESSAGE = ((ULONG)-1);
+
+    HRESULT Clear();
+
+    HRESULT IsInRange(
+        [in]    const ULONG value);
+
+    HRESULT Min(
+        [out]   ULONG *pulMin);
+
+    HRESULT Max(
+        [out]   ULONG *pulMax);
+
+    HRESULT Save(
+        [out]   byte **ppbDestination,
+        [out]   ULONG *pulSizeOfDestination);
+
+    HRESULT Load(
+        [in, size_is(ulSizeOfSource)]   byte *pbSource,
+        [in]    const ULONG ulSizeOfSource);
+
+    HRESULT AddRange(
+        [in]    const ULONG low,
+        [in]    const ULONG high);
+
+    HRESULT AddSingleValue(
+        [in]    const ULONG value);
+
+    HRESULT AddRangeList(
+        [in]    const IRangeList *prl);
+
+    HRESULT DeleteRange(
+        [in]    const ULONG low,
+        [in]    const ULONG high);
+
+    HRESULT DeleteSingleValue(
+        [in]    const ULONG value);
+
+    HRESULT DeleteRangeList(
+        [in]    const IRangeList *prl);
+
+    HRESULT MinOfRange(
+        [in]    const ULONG value,
+        [out]   ULONG *pulMinOfRange);
+
+    HRESULT MaxOfRange(
+        [in]    const ULONG value,
+        [out]   ULONG *pulMaxOfRange);
+
+    HRESULT RangeToIMAPString(
+        [out]   LPSTR *ppszDestination,
+        [out]   LPDWORD pdwLengthOfDestination);
+
+    HRESULT Next(
+        [in]    const ULONG current,
+        [out]   ULONG *pulNext);
+
+    HRESULT Prev(
+        [in]    const ULONG current,
+        [out]   ULONG *pulPrev);
+
+    HRESULT Cardinality(
+        [out]   ULONG *pulCardinality);
+
+    HRESULT CardinalityFrom(
+        [in]    const ULONG ulStartPoint,
+        [out]   ULONG *pulCardinalityFrom);
+}
+
+[
+    object,
+    uuid(E9E9D8A3-4EDD-11d0-874F-00AA00530EE9),
+    local
+]
+interface IIMAPCallback : ITransportCallback
+{
+    typedef DWORD IMAP_MBOXFLAGS;
+    const IMAP_MBOXFLAGS IMAP_MBOX_NOFLAGS = 0x0;
+    const IMAP_MBOXFLAGS IMAP_MBOX_MARKED = 0x1;
+    const IMAP_MBOXFLAGS IMAP_MBOX_NOINFERIORS = 0x2;
+    const IMAP_MBOXFLAGS IMAP_MBOX_NOSELECT = 0x4;
+    const IMAP_MBOXFLAGS IMAP_MBOX_UNMARKED = 0x8;
+    const IMAP_MBOXFLAGS IMAP_MBOX_ALLFLAGS = 0xf;
+
+    typedef enum tagIMAP_RESPONSE_TYPE
+    {
+        irtERROR_NOTIFICATION,
+        irtCOMMAND_COMPLETION,
+        irtSERVER_ALERT,
+        irtPARSE_ERROR,
+        irtMAILBOX_UPDATE,
+        irtDELETED_MSG,
+        irtFETCH_BODY,
+        irtUPDATE_MSG,
+        irtAPPLICABLE_FLAGS,
+        irtPERMANENT_FLAGS,
+        irtUIDVALIDITY,
+        irtREADWRITE_STATUS,
+        irtTRYCREATE,
+        irtSEARCH,
+        irtMAILBOX_LISTING,
+        irtMAILBOX_STATUS,
+        irtAPPEND_PROGRESS,
+        irtUPDATE_MSG_EX
+    } IMAP_RESPONSE_TYPE;
+
+    typedef struct tagFETCH_BODY_PART
+    {
+        DWORD dwMsgSeqNum;
+        LPSTR pszBodyTag;
+        DWORD dwTotalBytes;
+        DWORD dwSizeOfData;
+        DWORD dwOffset;
+        BOOL fDone;
+        LPSTR pszData;
+        LPARAM lpFetchCookie1;
+        LPARAM lpFetchCookie2;
+    } FETCH_BODY_PART;
+
+    typedef struct tagFETCH_CMD_RESULTS
+    {
+        DWORD dwMsgSeqNum;
+        BOOL bMsgFlags;
+        IMAP_MSGFLAGS mfMsgFlags;
+        BOOL bRFC822Size;
+        DWORD dwRFC822Size;
+        BOOL bUID;
+        DWORD dwUID;
+        BOOL bInternalDate;
+        FILETIME ftInternalDate;
+        LPARAM lpFetchCookie1;
+        LPARAM lpFetchCookie2;
+    } FETCH_CMD_RESULTS;
+
+    typedef struct tagIMAPADDR
+    {
+        LPSTR pszName;
+        LPSTR pszADL;
+        LPSTR pszMailbox;
+        LPSTR pszHost;
+        struct tagIMAPADDR *pNext;
+    } IMAPADDR;
+
+    typedef struct tagFETCH_CMD_RESULTS_EX
+    {
+        DWORD dwMsgSeqNum;
+        BOOL bMsgFlags;
+        IMAP_MSGFLAGS mfMsgFlags;
+        BOOL bRFC822Size;
+        DWORD dwRFC822Size;
+        BOOL bUID;
+        DWORD dwUID;
+        BOOL bInternalDate;
+        FILETIME ftInternalDate;
+        LPARAM lpFetchCookie1;
+        LPARAM lpFetchCookie2;
+        BOOL bEnvelope;
+        FILETIME ftENVDate;
+        LPSTR pszENVSubject;
+        IMAPADDR *piaENVFrom;
+        IMAPADDR *piaENVSender;
+        IMAPADDR *piaENVReplyTo;
+        IMAPADDR *piaENVTo;
+        IMAPADDR *piaENVCc;
+        IMAPADDR *piaENVBcc;
+        LPSTR pszENVInReplyTo;
+        LPSTR pszENVMessageID;
+        DWORD dwReserved1;
+        DWORD dwReserved2;
+        DWORD dwReserved3;
+    } FETCH_CMD_RESULTS_EX;
+
+    typedef struct tagMBOX_MSGCOUNT
+    {
+        BOOL bGotExistsResponse;
+        DWORD dwExists;
+        BOOL bGotRecentResponse;
+        DWORD dwRecent;
+        BOOL bGotUnseenResponse;
+        DWORD dwUnseen;
+    } MBOX_MSGCOUNT;
+
+    typedef struct tagIMAP_LISTLSUB_RESPONSE
+    {
+        LPSTR pszMailboxName;
+        IMAP_MBOXFLAGS imfMboxFlags;
+        char cHierarchyChar;
+    } IMAP_LISTLSUB_RESPONSE;
+
+    typedef struct tagIMAP_STATUS_RESPONSE
+    {
+        LPSTR pszMailboxName;
+        BOOL fMessages;
+        DWORD dwMessages;
+        BOOL fRecent;
+        DWORD dwRecent;
+        BOOL fUIDNext;
+        DWORD dwUIDNext;
+        BOOL fUIDValidity;
+        DWORD dwUIDValidity;
+        BOOL fUnseen;
+        DWORD dwUnseen;
+    } IMAP_STATUS_RESPONSE;
+
+    typedef struct tagAPPEND_PROGRESS
+    {
+        DWORD dwUploaded;
+        DWORD dwTotal;
+    } APPEND_PROGRESS;
+
+    typedef [switch_type(IMAP_RESPONSE_TYPE)] union tagIMAP_RESPONSE_DATA
+    {
+        [case (irtMAILBOX_UPDATE)] MBOX_MSGCOUNT *pmcMsgCount;
+        [case (irtDELETED_MSG)] DWORD dwDeletedMsgSeqNum;
+        [case (irtFETCH_BODY)] FETCH_BODY_PART *pFetchBodyPart;
+        [case (irtUPDATE_MSG)] FETCH_CMD_RESULTS *pFetchResults;
+        [case (irtAPPLICABLE_FLAGS, irtPERMANENT_FLAGS)] IMAP_MSGFLAGS imfImapMessageFlags;
+        [case (irtUIDVALIDITY)] DWORD dwUIDValidity;
+        [case (irtREADWRITE_STATUS)] BOOL bReadWrite;
+        [case (irtSEARCH)] IRangeList *prlSearchResults;
+        [case (irtMAILBOX_LISTING)] IMAP_LISTLSUB_RESPONSE illrdMailboxListing;
+        [case (irtMAILBOX_STATUS)] IMAP_STATUS_RESPONSE *pisrStatusResponse;
+        [case (irtAPPEND_PROGRESS)] APPEND_PROGRESS *papAppendProgress;
+        [case (irtUPDATE_MSG_EX)] FETCH_CMD_RESULTS_EX *pFetchResultsEx;
+    } IMAP_RESPONSE_DATA;
+
+    typedef struct tagIMAP_RESPONSE
+    {
+        WPARAM wParam;
+        LPARAM lParam;
+        HRESULT hrResult;
+        LPSTR lpszResponseText;
+        IMAP_RESPONSE_TYPE irtResponseType;
+        [switch_is(irtResponseType)] IMAP_RESPONSE_DATA irdResponseData;
+    } IMAP_RESPONSE;
+
+    HRESULT OnResponse([in] const IMAP_RESPONSE *pirIMAPResponse);
+}
+
+[
+object,
+uuid(E9E9D8A8-4EDD-11d0-874F-00AA00530EE9),
+local,
+]
+interface IIMAPTransport : IInternetTransport
+{
+    const DWORD IMAP_CAPABILITY_IMAP4 = 0x1;
+    const DWORD IMAP_CAPABILITY_IMAP4rev1 = 0x2;
+    const DWORD IMAP_CAPABILITY_IDLE = 0x4;
+    const DWORD IMAP_CAPABILITY_ALLFLAGS = 0x7;
+
+    HRESULT InitNew(
+        [in]    LPSTR pszLogFilePath,
+        [in]    IIMAPCallback *pCBHandler);
+
+    HRESULT NewIRangeList(
+        [out]   IRangeList **pprlNewRangeList);
+
+    HRESULT Capability(
+        [out]   DWORD *pdwCapabilityFlags);
+
+    HRESULT Select(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    LPSTR lpszMailboxName);
+
+    HRESULT Examine(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    LPSTR lpszMailboxName);
+
+    HRESULT Create(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    LPSTR lpszMailboxName);
+
+    HRESULT Delete(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    LPSTR lpszMailboxName);
+
+    HRESULT Rename(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    LPSTR lpszMailboxName,
+        [in]    LPSTR lpszNewMailboxName);
+
+    HRESULT Subscribe(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    LPSTR lpszMailboxName);
+
+    HRESULT Unsubscribe(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    LPSTR lpszMailboxName);
+
+    HRESULT List(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    LPSTR lpszMailboxNameReference,
+        [in]    LPSTR lpszMailboxNamePattern);
+
+    HRESULT Lsub(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    LPSTR lpszMailboxNameReference,
+        [in]    LPSTR lpszMailboxNamePattern);
+
+    HRESULT Append(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    LPSTR lpszMailboxName,
+        [in]    LPSTR lpszMessageFlags,
+        [in]    FILETIME ftMessageDateTime,
+        [in]    LPSTREAM lpstmMessageToSave);
+
+    HRESULT Close(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler);
+
+    HRESULT Expunge(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler);
+
+    HRESULT Search(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    LPSTR lpszSearchCriteria,
+        [in]    boolean bReturnUIDs,
+        [in]    IRangeList *pMsgRange,
+        [in]    boolean bUIDRangeList);
+
+    HRESULT Fetch(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    IRangeList *pMsgRange,
+        [in]    boolean bUIDMsgRange,
+        [in]    LPSTR lpszFetchArgs);
+
+    HRESULT Store(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    IRangeList *pMsgRange,
+        [in]    boolean bUIDRangeList,
+        [in]    LPSTR lpszStoreArgs);
+
+    HRESULT Copy(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    IRangeList *pMsgRange,
+        [in]    boolean bUIDRangeList,
+        [in]    LPSTR lpszMailboxName);
+
+    HRESULT Noop(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler);
+
+    HRESULT ResizeMsgSeqNumTable(
+        [in]    DWORD dwSizeOfMbox);
+
+    HRESULT UpdateSeqNumToUID(
+        [in]    DWORD dwMsgSeqNum,
+        [in]    DWORD dwUID);
+
+    HRESULT RemoveSequenceNum(
+        [in]    DWORD dwDeletedMsgSeqNum);
+
+    HRESULT MsgSeqNumToUID(
+        [in]    DWORD dwMsgSeqNum,
+        [out]   DWORD *pdwUID);
+
+    HRESULT GetMsgSeqNumToUIDArray(
+        [out]   DWORD **ppdwMsgSeqNumToUIDArray,
+        [out]   DWORD *pdwNumberOfElements);
+
+    HRESULT GetHighestMsgSeqNum(
+        [out]   DWORD *pdwHighestMSN);
+
+    HRESULT ResetMsgSeqNumToUID();
+
+    HRESULT SetDefaultCBHandler(
+        [in]    IIMAPCallback *pCBHandler);
+
+    HRESULT Status(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    LPSTR pszMailboxName,
+        [in]    LPSTR pszStatusCmdArgs);
+}
+
+#if 0
+cpp_quote("HRESULT WINAPI CreateRASTransport(IRASTransport **ppTransport);")
+cpp_quote("HRESULT WINAPI CreateNNTPTransport(INNTPTransport **ppTransport);")
+cpp_quote("HRESULT WINAPI CreateIMAPTransport2(IIMAPTransport2 **ppTransport);")
+#endif
+cpp_quote("HRESULT WINAPI CreateRangeList(IRangeList **ppRangeList);")
+cpp_quote("HRESULT WINAPI CreateSMTPTransport(ISMTPTransport **ppTransport);")
+cpp_quote("HRESULT WINAPI CreatePOP3Transport(IPOP3Transport **ppTransport);")
+cpp_quote("HRESULT WINAPI CreateIMAPTransport(IIMAPTransport **ppTransport);")
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/indexsrv.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/indexsrv.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/indexsrv.idl	(revision 16410)
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2006 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "objidl.idl";
+/* FIXME: import "filter.idl"; */
+
+/*
+ * widl doesn't like the declaration of PFNFILLTEXTBUFFER, so work around it...
+ * Not sure that function pointers are even legal in idl.
+ */
+cpp_quote("struct tagTEXT_SOURCE;")
+cpp_quote("typedef HRESULT (WINAPI *PFNFILLTEXTBUFFER)(struct tagTEXT_SOURCE *pTextSource);")
+cpp_quote("#if 0")
+typedef void* PFNFILLTEXTBUFFER;
+cpp_quote("#endif")
+
+typedef struct tagTEXT_SOURCE
+{
+    PFNFILLTEXTBUFFER pfnFillTextBuffer;
+    const WCHAR *awcBuffer;
+    ULONG iEnd;
+    ULONG iCur;
+} TEXT_SOURCE;
+
+typedef enum tagWORDREP_BREAK_TYPE
+{
+    WORDREP_BREAK_EOW = 0,
+    WORDREP_BREAK_EOS = 1,
+    WORDREP_BREAK_EOP = 2,
+    WORDREP_BREAK_EOC = 3
+} WORDREP_BREAK_TYPE;
+
+
+/*****************************************************************************
+ *    IWordSink interface
+ */
+[
+    uuid(cc907054-c058-101a-b554-08002b33b0e6),
+    object,
+    local
+]
+interface IWordSink : IUnknown
+{
+    HRESULT PutWord(
+              [in] ULONG cwc,
+              [size_is(cwcSrcLen)][in] const WCHAR *pwcInBuf,
+              [in] ULONG cwcSrcLen,
+              [in] ULONG cwcSrcPos);
+    HRESULT PutAltWord(
+              [in] ULONG cwc,
+              [size_is(cwcSrcLen)][in] const WCHAR *pwcInBuf,
+              [in] ULONG cwcSrcLen,
+              [in] ULONG cwcSrcPos);
+    HRESULT StartAltPhrase(void);
+    HRESULT EndAltPhrase(void);
+    HRESULT PutBreak(
+              [in] WORDREP_BREAK_TYPE breakType);
+}
+
+/*****************************************************************************
+ *    IPhraseSink interface
+ */
+[
+    uuid(cc906ff0-c058-101a-b554-08002b33b0e6),
+    object,
+    local
+]
+interface IPhraseSink: IUnknown
+{
+    HRESULT PutSmallPhrase(
+              [size_is(cwcNoun)][in] const WCHAR *pwcNoun,
+              [in] ULONG cwcNoun,
+              [size_is(cwcModifier)][in] const WCHAR *pwcModifier,
+              [in] ULONG cwcModifier,
+              [in] ULONG ulAttachmentType);
+    HRESULT PutPhrase(
+              [size_is(cwcPhrase)][in] const WCHAR *pwcPhrase,
+              [in] ULONG cwcPhrase);
+}
+
+/*****************************************************************************
+ *    IWordBreaker interface
+ */
+[
+    uuid(d53552c8-77e3-101a-b552-08002b33b0e6),
+    object,
+    local
+]
+interface IWordBreaker: IUnknown
+{
+    HRESULT Init(
+              [in] BOOL fQuery,
+              [in] ULONG ulMaxTokenSize,
+              [out] BOOL *pfLicense);
+    HRESULT BreakText(
+              [in] TEXT_SOURCE *pTextSource,
+              [in] IWordSink *pWordSink,
+              [in] IPhraseSink *pPhraseSink);
+    HRESULT ComposePhrase(
+              [size_is(cwcNoun)][in] const WCHAR *pwcNoun,
+              [in] ULONG cwcNoun,
+              [size_is(cwcModifier)][in] const WCHAR *pwcModifier,
+              [in] ULONG cwcModifier,
+              [in] ULONG ulAttachmentType,
+              [size_is(*pcwcPhrase)][out] WCHAR *pwcPhrase,
+              [out][in] ULONG *pcwcPhrase);
+    HRESULT GetLicenseToUse(
+              [string][out] const WCHAR **ppwcsLicense);
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/initguid.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/initguid.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/initguid.h	(revision 16410)
@@ -0,0 +1,26 @@
+/*
+ * Defines a minimum set of macros create GUID's to keep the size
+ * small
+ *
+ * This file should be included into "only GUID definition *.h" like
+ * shlguid.h
+ *
+ * Copyright (C) 1999 Juergen Schmied
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define INITGUID
+#include <guiddef.h>
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/intshcut.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/intshcut.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/intshcut.h	(revision 16410)
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2007 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_INTSHCUT_H
+#define __WINE_INTSHCUT_H
+
+#include <isguids.h>
+
+#define INTSHCUTAPI
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define E_FLAGS MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x1000)
+#define IS_E_EXEC_FAILED MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x2002)
+#define URL_E_INVALID_SYNTAX MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x1001)
+#define URL_E_UNREGISTERED_PROTOCOL MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x1002)
+
+typedef enum iurl_seturl_flags {
+    IURL_SETURL_FL_GUESS_PROTOCOL=1,
+    IURL_SETURL_FL_USE_DEFAULT_PROTOCOL,
+    ALL_IURL_SETURL_FLAGS=(IURL_SETURL_FL_GUESS_PROTOCOL|IURL_SETURL_FL_USE_DEFAULT_PROTOCOL)
+} IURL_SETURL_FLAGS;
+
+typedef enum iurl_invokecommand_flags {
+    IURL_INVOKECOMMAND_FL_ALLOW_UI=1,
+    IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB,
+    ALL_IURL_INVOKECOMMAND_FLAGS=(IURL_INVOKECOMMAND_FL_ALLOW_UI|IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB)
+} IURL_INVOKECOMMAND_FLAGS;
+
+typedef struct urlinvokecommandinfoA {
+    DWORD dwcbSize;
+    DWORD dwFlags;
+    HWND hwndParent;
+    LPCSTR pcszVerb;
+} URLINVOKECOMMANDINFOA, *PURLINVOKECOMMANDINFOA;
+typedef const URLINVOKECOMMANDINFOA CURLINVOKECOMMANDINFOA;
+typedef const URLINVOKECOMMANDINFOA *PCURLINVOKECOMMANDINFOA;
+
+typedef struct urlinvokecommandinfoW {
+    DWORD dwcbSize;
+    DWORD dwFlags;
+    HWND hwndParent;
+    LPCWSTR pcszVerb;
+} URLINVOKECOMMANDINFOW, *PURLINVOKECOMMANDINFOW;
+typedef const URLINVOKECOMMANDINFOW CURLINVOKECOMMANDINFOW;
+typedef const URLINVOKECOMMANDINFOW *PCURLINVOKECOMMANDINFOW;
+
+#define INTERFACE IUniformResourceLocatorA
+DECLARE_INTERFACE_(IUniformResourceLocatorA,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, VOID **ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IUniformResourceLocatorA methods ***/
+    STDMETHOD(SetURL)(THIS_ LPCSTR pcszURL, DWORD dwInFlags) PURE;
+    STDMETHOD(GetURL)(THIS_ LPSTR *ppszURL) PURE;
+    STDMETHOD(InvokeCommand)(THIS_ PURLINVOKECOMMANDINFOA pURLCommandInfo) PURE;
+};
+#undef INTERFACE
+
+#define INTERFACE IUniformResourceLocatorW
+DECLARE_INTERFACE_(IUniformResourceLocatorW,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, VOID **ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IUniformResourceLocatorW methods ***/
+    STDMETHOD(SetURL)(THIS_ LPCWSTR pcszURL, DWORD dwInFlags) PURE;
+    STDMETHOD(GetURL)(THIS_ LPWSTR *ppszURL) PURE;
+    STDMETHOD(InvokeCommand)(THIS_ PURLINVOKECOMMANDINFOW pURLCommandInfo) PURE;
+};
+#undef INTERFACE
+
+DECL_WINELIB_TYPE_AW(URLINVOKECOMMANDINFO)
+DECL_WINELIB_TYPE_AW(PURLINVOKECOMMANDINFO)
+DECL_WINELIB_TYPE_AW(CURLINVOKECOMMANDINFO)
+DECL_WINELIB_TYPE_AW(PCURLINVOKECOMMANDINFO)
+
+
+typedef enum translateurl_in_flags {
+    TRANSLATEURL_FL_GUESS_PROTOCOL=1,
+    TRANSLATEURL_FL_USE_DEFAULT_PROTOCOL
+} TRANSLATEURL_IN_FLAGS;
+
+HRESULT WINAPI TranslateURLA(LPCSTR, DWORD, LPSTR *);
+HRESULT WINAPI TranslateURLW(LPCWSTR, DWORD, LPWSTR *);
+#define TranslateURL WINELIB_NAME_AW(TranslateURL)
+
+BOOL    WINAPI InetIsOffline(DWORD);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* __WINE_INTSHCUT_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ipexport.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ipexport.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ipexport.h	(revision 16410)
@@ -0,0 +1,116 @@
+/*
+ * Defines the types and macros used by the ICMP API, see icmpapi.h.
+ *
+ * Copyright (C) 1999 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_IPEXPORT_H
+#define __WINE_IPEXPORT_H
+
+typedef unsigned long   IPAddr;
+typedef unsigned long   IPMask;
+typedef unsigned long   IP_STATUS;
+
+struct ip_option_information
+{
+    unsigned char  Ttl;
+    unsigned char  Tos;
+    unsigned char  Flags;
+    unsigned char  OptionsSize;
+    unsigned char* OptionsData;
+};
+
+#define IP_FLAG_DF      0x2
+
+#define IP_OPT_EOL      0
+#define IP_OPT_NOP      1
+#define IP_OPT_SECURITY 0x82
+#define IP_OPT_LSRR     0x83
+#define IP_OPT_SSRR     0x89
+#define IP_OPT_RR       0x7
+#define IP_OPT_TS       0x44
+#define IP_OPT_SID      0x88
+
+#define MAX_OPT_SIZE    40
+
+
+struct icmp_echo_reply
+{
+    IPAddr                       Address;
+    unsigned long                Status;
+    unsigned long                RoundTripTime;
+    unsigned short               DataSize;
+    unsigned short               Reserved;
+    void*                        Data;
+    struct ip_option_information Options;
+};
+
+typedef struct ip_option_information IP_OPTION_INFORMATION, *PIP_OPTION_INFORMATION;
+
+typedef struct icmp_echo_reply ICMP_ECHO_REPLY, *PICMP_ECHO_REPLY;
+
+
+#define IP_STATUS_BASE              11000
+
+#define IP_SUCCESS                  0
+#define IP_BUF_TOO_SMALL            (IP_STATUS_BASE + 1)
+#define IP_DEST_NET_UNREACHABLE     (IP_STATUS_BASE + 2)
+#define IP_DEST_HOST_UNREACHABLE    (IP_STATUS_BASE + 3)
+#define IP_DEST_PROT_UNREACHABLE    (IP_STATUS_BASE + 4)
+#define IP_DEST_PORT_UNREACHABLE    (IP_STATUS_BASE + 5)
+#define IP_NO_RESOURCES             (IP_STATUS_BASE + 6)
+#define IP_BAD_OPTION               (IP_STATUS_BASE + 7)
+#define IP_HW_ERROR                 (IP_STATUS_BASE + 8)
+#define IP_PACKET_TOO_BIG           (IP_STATUS_BASE + 9)
+#define IP_REQ_TIMED_OUT            (IP_STATUS_BASE + 10)
+#define IP_BAD_REQ                  (IP_STATUS_BASE + 11)
+#define IP_BAD_ROUTE                (IP_STATUS_BASE + 12)
+#define IP_TTL_EXPIRED_TRANSIT      (IP_STATUS_BASE + 13)
+#define IP_TTL_EXPIRED_REASSEM      (IP_STATUS_BASE + 14)
+#define IP_PARAM_PROBLEM            (IP_STATUS_BASE + 15)
+#define IP_SOURCE_QUENCH            (IP_STATUS_BASE + 16)
+#define IP_OPTION_TOO_BIG           (IP_STATUS_BASE + 17)
+#define IP_BAD_DESTINATION          (IP_STATUS_BASE + 18)
+
+#define IP_ADDR_DELETED             (IP_STATUS_BASE + 19)
+#define IP_SPEC_MTU_CHANGE          (IP_STATUS_BASE + 20)
+#define IP_MTU_CHANGE               (IP_STATUS_BASE + 21)
+#define IP_UNLOAD                   (IP_STATUS_BASE + 22)
+
+#define IP_GENERAL_FAILURE          (IP_STATUS_BASE + 50)
+#define MAX_IP_STATUS               IP_GENERAL_FAILURE
+#define IP_PENDING                  (IP_STATUS_BASE + 255)
+
+
+#define MAX_ADAPTER_NAME 128
+
+typedef struct _IP_ADAPTER_INDEX_MAP {
+  ULONG Index;
+  WCHAR Name[MAX_ADAPTER_NAME];
+} IP_ADAPTER_INDEX_MAP, *PIP_ADAPTER_INDEX_MAP;
+
+typedef struct _IP_INTERFACE_INFO {
+  LONG                 NumAdapters;
+  IP_ADAPTER_INDEX_MAP Adapter[1];
+} IP_INTERFACE_INFO,*PIP_INTERFACE_INFO;
+
+typedef struct _IP_UNIDIRECTIONAL_ADAPTER_ADDRESS {
+  ULONG  NumAdapters;
+  IPAddr Address[1];
+} IP_UNIDIRECTIONAL_ADAPTER_ADDRESS, *PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS;
+
+#endif /* __WINE_IPEXPORT_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/iphlpapi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/iphlpapi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/iphlpapi.h	(revision 16410)
@@ -0,0 +1,148 @@
+/* WINE iphlpapi.h
+ * Copyright (C) 2003 Juan Lang
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef WINE_IPHLPAPI_H__
+#define WINE_IPHLPAPI_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <iprtrmib.h>
+#include <ipexport.h>
+#include <iptypes.h>
+
+DWORD WINAPI GetNumberOfInterfaces(PDWORD pdwNumIf);
+
+DWORD WINAPI GetIfEntry(PMIB_IFROW pIfRow);
+
+DWORD WINAPI GetIfTable(PMIB_IFTABLE pIfTable, PULONG pdwSize, BOOL bOrder);
+
+DWORD WINAPI GetIpAddrTable(PMIB_IPADDRTABLE pIpAddrTable, PULONG pdwSize,
+ BOOL bOrder);
+
+DWORD WINAPI GetIpNetTable(PMIB_IPNETTABLE pIpNetTable, PULONG pdwSize,
+ BOOL bOrder);
+
+DWORD WINAPI GetIpForwardTable(PMIB_IPFORWARDTABLE pIpForwardTable,
+ PULONG pdwSize, BOOL bOrder);
+
+DWORD WINAPI GetTcpTable(PMIB_TCPTABLE pTcpTable, PDWORD pdwSize, BOOL bOrder);
+
+DWORD WINAPI GetUdpTable(PMIB_UDPTABLE pUdpTable, PDWORD pdwSize, BOOL bOrder);
+
+DWORD WINAPI GetIpStatistics(PMIB_IPSTATS pStats);
+
+DWORD WINAPI GetIpStatisticsEx(PMIB_IPSTATS pStats, DWORD dwFamily);
+
+DWORD WINAPI GetIcmpStatistics(PMIB_ICMP pStats);
+
+DWORD WINAPI GetTcpStatistics(PMIB_TCPSTATS pStats);
+
+DWORD WINAPI GetTcpStatisticsEx(PMIB_TCPSTATS pStats, DWORD dwFamily);
+
+DWORD WINAPI GetUdpStatistics(PMIB_UDPSTATS pStats);
+
+DWORD WINAPI GetUdpStatisticsEx(PMIB_UDPSTATS pStats, DWORD dwFamily);
+
+DWORD WINAPI SetIfEntry(PMIB_IFROW pIfRow);
+
+DWORD WINAPI CreateIpForwardEntry(PMIB_IPFORWARDROW pRoute);
+
+DWORD WINAPI SetIpForwardEntry(PMIB_IPFORWARDROW pRoute);
+
+DWORD WINAPI DeleteIpForwardEntry(PMIB_IPFORWARDROW pRoute);
+
+DWORD WINAPI SetIpStatistics(PMIB_IPSTATS pIpStats);
+
+DWORD WINAPI SetIpTTL(UINT nTTL);
+
+DWORD WINAPI CreateIpNetEntry(PMIB_IPNETROW pArpEntry);
+
+DWORD WINAPI SetIpNetEntry(PMIB_IPNETROW pArpEntry);
+
+DWORD WINAPI DeleteIpNetEntry(PMIB_IPNETROW pArpEntry);
+
+DWORD WINAPI FlushIpNetTable(DWORD dwIfIndex);
+
+DWORD WINAPI CreateProxyArpEntry(DWORD dwAddress, DWORD dwMask,
+ DWORD dwIfIndex);
+
+DWORD WINAPI DeleteProxyArpEntry(DWORD dwAddress, DWORD dwMask,
+ DWORD dwIfIndex);
+
+DWORD WINAPI SetTcpEntry(PMIB_TCPROW pTcpRow);
+
+DWORD WINAPI GetInterfaceInfo(PIP_INTERFACE_INFO pIfTable, PULONG dwOutBufLen);
+
+DWORD WINAPI GetUniDirectionalAdapterInfo(
+ PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS pIPIfInfo, PULONG dwOutBufLen);
+
+DWORD WINAPI GetBestInterface(IPAddr dwDestAddr, PDWORD pdwBestIfIndex);
+
+#ifdef __WINE_WINSOCKAPI_STDLIB_H
+DWORD WINAPI GetBestInterfaceEx(
+#ifdef USE_WS_PREFIX
+    struct WS_sockaddr *pDestAddr,
+#else
+    struct sockaddr *pDestAddr,
+#endif
+    PDWORD pdwBestIfIndex);
+#endif
+
+DWORD WINAPI GetBestRoute(DWORD dwDestAddr, DWORD dwSourceAddr,
+ PMIB_IPFORWARDROW   pBestRoute);
+
+DWORD WINAPI NotifyAddrChange(PHANDLE Handle, LPOVERLAPPED overlapped);
+
+DWORD WINAPI NotifyRouteChange(PHANDLE Handle, LPOVERLAPPED overlapped);
+
+DWORD WINAPI GetAdapterIndex(IN LPWSTR AdapterName, OUT PULONG IfIndex);
+
+DWORD WINAPI AddIPAddress(IPAddr Address, IPMask IpMask, DWORD IfIndex,
+ PULONG NTEContext, PULONG NTEInstance);
+
+DWORD WINAPI DeleteIPAddress(ULONG NTEContext);
+
+DWORD WINAPI GetNetworkParams(PFIXED_INFO pFixedInfo, PULONG pOutBufLen);
+
+DWORD WINAPI GetAdaptersInfo(PIP_ADAPTER_INFO pAdapterInfo, PULONG pOutBufLen);
+
+DWORD WINAPI GetPerAdapterInfo(ULONG IfIndex,
+ PIP_PER_ADAPTER_INFO pPerAdapterInfo, PULONG pOutBufLen);
+
+DWORD WINAPI IpReleaseAddress(PIP_ADAPTER_INDEX_MAP AdapterInfo);
+
+DWORD WINAPI IpRenewAddress(PIP_ADAPTER_INDEX_MAP AdapterInfo);
+
+DWORD WINAPI SendARP(IPAddr DestIP, IPAddr SrcIP, PULONG pMacAddr,
+ PULONG  PhyAddrLen);
+
+BOOL WINAPI GetRTTAndHopCount(IPAddr DestIpAddress, PULONG HopCount,
+ ULONG  MaxHops, PULONG RTT);
+
+DWORD WINAPI GetFriendlyIfIndex(DWORD IfIndex);
+
+DWORD WINAPI EnableRouter(HANDLE* pHandle, OVERLAPPED* pOverlapped);
+
+DWORD WINAPI UnenableRouter(OVERLAPPED* pOverlapped, LPDWORD lpdwEnableCount);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* WINE_IPHLPAPI_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ipifcons.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ipifcons.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ipifcons.h	(revision 16410)
@@ -0,0 +1,40 @@
+/* WINE ipifcons.h
+ * Copyright (C) 2003 Juan Lang
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef WINE_IPIFCONS_H__
+#define WINE_IPIFCONS_H__
+
+#define MIB_IF_TYPE_OTHER               1
+#define MIB_IF_TYPE_ETHERNET            6
+#define MIB_IF_TYPE_TOKENRING           9
+#define MIB_IF_TYPE_FDDI                15
+#define MIB_IF_TYPE_PPP                 23
+#define MIB_IF_TYPE_LOOPBACK            24
+#define MIB_IF_TYPE_SLIP                28
+
+#define MIB_IF_ADMIN_STATUS_UP          1
+#define MIB_IF_ADMIN_STATUS_DOWN        2
+#define MIB_IF_ADMIN_STATUS_TESTING     3
+
+#define MIB_IF_OPER_STATUS_NON_OPERATIONAL      0
+#define MIB_IF_OPER_STATUS_UNREACHABLE          1
+#define MIB_IF_OPER_STATUS_DISCONNECTED         2
+#define MIB_IF_OPER_STATUS_CONNECTING           3
+#define MIB_IF_OPER_STATUS_CONNECTED            4
+#define MIB_IF_OPER_STATUS_OPERATIONAL          5
+
+#endif /* WINE_ROUTING_IPIFCONS_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/iprtrmib.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/iprtrmib.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/iprtrmib.h	(revision 16410)
@@ -0,0 +1,279 @@
+/* WINE iprtrmib.h
+ * Copyright (C) 2003 Juan Lang
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef WINE_IPRTRMIB_H__
+#define WINE_IPRTRMIB_H__
+
+#include <mprapi.h>
+#include <ipifcons.h>
+
+#define MAXLEN_IFDESCR 256
+#define MAXLEN_PHYSADDR 8
+
+typedef struct _MIB_IFROW
+{
+    WCHAR wszName[MAX_INTERFACE_NAME_LEN];
+    DWORD dwIndex;
+    DWORD dwType;
+    DWORD dwMtu;
+    DWORD dwSpeed;
+    DWORD dwPhysAddrLen;
+    BYTE  bPhysAddr[MAXLEN_PHYSADDR];
+    DWORD dwAdminStatus;
+    DWORD dwOperStatus;
+    DWORD dwLastChange;
+    DWORD dwInOctets;
+    DWORD dwInUcastPkts;
+    DWORD dwInNUcastPkts;
+    DWORD dwInDiscards;
+    DWORD dwInErrors;
+    DWORD dwInUnknownProtos;
+    DWORD dwOutOctets;
+    DWORD dwOutUcastPkts;
+    DWORD dwOutNUcastPkts;
+    DWORD dwOutDiscards;
+    DWORD dwOutErrors;
+    DWORD dwOutQLen;
+    DWORD dwDescrLen;
+    BYTE  bDescr[MAXLEN_IFDESCR];
+} MIB_IFROW,*PMIB_IFROW;
+
+typedef struct _MIB_IFTABLE
+{
+    DWORD     dwNumEntries;
+    MIB_IFROW table[1];
+} MIB_IFTABLE, *PMIB_IFTABLE;
+
+typedef struct _MIBICMPSTATS
+{
+    DWORD dwMsgs;
+    DWORD dwErrors;
+    DWORD dwDestUnreachs;
+    DWORD dwTimeExcds;
+    DWORD dwParmProbs;
+    DWORD dwSrcQuenchs;
+    DWORD dwRedirects;
+    DWORD dwEchos;
+    DWORD dwEchoReps;
+    DWORD dwTimestamps;
+    DWORD dwTimestampReps;
+    DWORD dwAddrMasks;
+    DWORD dwAddrMaskReps;
+} MIBICMPSTATS;
+
+typedef    struct _MIBICMPINFO
+{
+    MIBICMPSTATS icmpInStats;
+    MIBICMPSTATS icmpOutStats;
+} MIBICMPINFO;
+
+typedef struct _MIB_ICMP
+{
+    MIBICMPINFO stats;
+} MIB_ICMP,*PMIB_ICMP;
+
+typedef struct _MIB_UDPSTATS
+{
+    DWORD dwInDatagrams;
+    DWORD dwNoPorts;
+    DWORD dwInErrors;
+    DWORD dwOutDatagrams;
+    DWORD dwNumAddrs;
+} MIB_UDPSTATS,*PMIB_UDPSTATS;
+
+typedef struct _MIB_UDPROW
+{
+    DWORD dwLocalAddr;
+    DWORD dwLocalPort;
+} MIB_UDPROW, *PMIB_UDPROW;
+
+typedef struct _MIB_UDPTABLE
+{
+    DWORD      dwNumEntries;
+    MIB_UDPROW table[1];
+} MIB_UDPTABLE, *PMIB_UDPTABLE;
+
+typedef struct _MIB_TCPSTATS
+{
+    DWORD dwRtoAlgorithm;
+    DWORD dwRtoMin;
+    DWORD dwRtoMax;
+    DWORD dwMaxConn;
+    DWORD dwActiveOpens;
+    DWORD dwPassiveOpens;
+    DWORD dwAttemptFails;
+    DWORD dwEstabResets;
+    DWORD dwCurrEstab;
+    DWORD dwInSegs;
+    DWORD dwOutSegs;
+    DWORD dwRetransSegs;
+    DWORD dwInErrs;
+    DWORD dwOutRsts;
+    DWORD dwNumConns;
+} MIB_TCPSTATS, *PMIB_TCPSTATS;
+
+typedef struct _MIB_TCPROW
+{
+    DWORD dwState;
+    DWORD dwLocalAddr;
+    DWORD dwLocalPort;
+    DWORD dwRemoteAddr;
+    DWORD dwRemotePort;
+} MIB_TCPROW, *PMIB_TCPROW;
+
+#define MIB_TCP_STATE_CLOSED            1
+#define MIB_TCP_STATE_LISTEN            2
+#define MIB_TCP_STATE_SYN_SENT          3
+#define MIB_TCP_STATE_SYN_RCVD          4
+#define MIB_TCP_STATE_ESTAB             5
+#define MIB_TCP_STATE_FIN_WAIT1         6
+#define MIB_TCP_STATE_FIN_WAIT2         7
+#define MIB_TCP_STATE_CLOSE_WAIT        8
+#define MIB_TCP_STATE_CLOSING           9
+#define MIB_TCP_STATE_LAST_ACK         10
+#define MIB_TCP_STATE_TIME_WAIT        11
+#define MIB_TCP_STATE_DELETE_TCB       12
+
+typedef struct _MIB_TCPTABLE
+{
+    DWORD      dwNumEntries;
+    MIB_TCPROW table[1];
+} MIB_TCPTABLE, *PMIB_TCPTABLE;
+
+typedef struct _MIB_IPSTATS
+{
+    DWORD dwForwarding;
+    DWORD dwDefaultTTL;
+    DWORD dwInReceives;
+    DWORD dwInHdrErrors;
+    DWORD dwInAddrErrors;
+    DWORD dwForwDatagrams;
+    DWORD dwInUnknownProtos;
+    DWORD dwInDiscards;
+    DWORD dwInDelivers;
+    DWORD dwOutRequests;
+    DWORD dwRoutingDiscards;
+    DWORD dwOutDiscards;
+    DWORD dwOutNoRoutes;
+    DWORD dwReasmTimeout;
+    DWORD dwReasmReqds;
+    DWORD dwReasmOks;
+    DWORD dwReasmFails;
+    DWORD dwFragOks;
+    DWORD dwFragFails;
+    DWORD dwFragCreates;
+    DWORD dwNumIf;
+    DWORD dwNumAddr;
+    DWORD dwNumRoutes;
+} MIB_IPSTATS, *PMIB_IPSTATS;
+
+typedef struct _MIB_IPADDRROW
+{
+    DWORD        dwAddr;
+    DWORD        dwIndex;
+    DWORD        dwMask;
+    DWORD        dwBCastAddr;
+    DWORD        dwReasmSize;
+    unsigned short    unused1;
+    unsigned short    wType;
+} MIB_IPADDRROW, *PMIB_IPADDRROW;
+
+typedef struct _MIB_IPADDRTABLE
+{
+    DWORD         dwNumEntries;
+    MIB_IPADDRROW table[1];
+} MIB_IPADDRTABLE, *PMIB_IPADDRTABLE;
+
+
+typedef struct _MIB_IPFORWARDNUMBER
+{
+    DWORD      dwValue;
+}MIB_IPFORWARDNUMBER,*PMIB_IPFORWARDNUMBER;
+
+typedef struct _MIB_IPFORWARDROW
+{
+    DWORD dwForwardDest;
+    DWORD dwForwardMask;
+    DWORD dwForwardPolicy;
+    DWORD dwForwardNextHop;
+    DWORD dwForwardIfIndex;
+    DWORD dwForwardType;
+    DWORD dwForwardProto;
+    DWORD dwForwardAge;
+    DWORD dwForwardNextHopAS;
+    DWORD dwForwardMetric1;
+    DWORD dwForwardMetric2;
+    DWORD dwForwardMetric3;
+    DWORD dwForwardMetric4;
+    DWORD dwForwardMetric5;
+}MIB_IPFORWARDROW, *PMIB_IPFORWARDROW;
+
+#define MIB_IPROUTE_TYPE_OTHER      1
+#define MIB_IPROUTE_TYPE_INVALID    2
+#define MIB_IPROUTE_TYPE_DIRECT     3
+#define MIB_IPROUTE_TYPE_INDIRECT   4
+
+#define MIB_IPPROTO_OTHER             1
+#define MIB_IPPROTO_LOCAL             2
+#define MIB_IPPROTO_NETMGMT           3
+#define MIB_IPPROTO_ICMP              4
+#define MIB_IPPROTO_EGP               5
+#define MIB_IPPROTO_GGP               6
+#define MIB_IPPROTO_HELLO             7
+#define MIB_IPPROTO_RIP               8
+#define MIB_IPPROTO_IS_IS             9
+#define MIB_IPPROTO_ES_IS             10
+#define MIB_IPPROTO_CISCO             11
+#define MIB_IPPROTO_BBN               12
+#define MIB_IPPROTO_OSPF              13
+#define MIB_IPPROTO_BGP               14
+
+#define MIB_IPPROTO_NT_AUTOSTATIC     10002
+#define MIB_IPPROTO_NT_STATIC         10006
+#define MIB_IPPROTO_NT_STATIC_NON_DOD 10007
+
+typedef struct _MIB_IPFORWARDTABLE
+{
+    DWORD            dwNumEntries;
+    MIB_IPFORWARDROW table[1];
+} MIB_IPFORWARDTABLE, *PMIB_IPFORWARDTABLE;
+
+typedef struct _MIB_IPNETROW
+{
+    DWORD dwIndex;
+    DWORD dwPhysAddrLen;
+    BYTE  bPhysAddr[MAXLEN_PHYSADDR];
+    DWORD dwAddr;
+    DWORD dwType;
+} MIB_IPNETROW, *PMIB_IPNETROW;
+
+#define MIB_TCP_RTO_OTHER               1
+#define MIB_TCP_RTO_CONSTANT            2
+#define MIB_TCP_RTO_RSRE                3
+#define MIB_TCP_RTO_VANJ                4
+#define    MIB_IPNET_TYPE_OTHER        1
+#define    MIB_IPNET_TYPE_INVALID        2
+#define    MIB_IPNET_TYPE_DYNAMIC        3
+#define    MIB_IPNET_TYPE_STATIC        4
+
+typedef struct _MIB_IPNETTABLE
+{
+    DWORD        dwNumEntries;
+    MIB_IPNETROW table[1];
+} MIB_IPNETTABLE, *PMIB_IPNETTABLE;
+
+#endif /* WINE_IPRTRMIB_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/iptypes.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/iptypes.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/iptypes.h	(revision 16410)
@@ -0,0 +1,87 @@
+/* WINE iptypes.h
+ * Copyright (C) 2003 Juan Lang
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef WINE_IPTYPES_H_
+#define WINE_IPTYPES_H_
+
+#include <time.h>
+
+#define MAX_ADAPTER_DESCRIPTION_LENGTH  128
+#define MAX_ADAPTER_NAME_LENGTH         256
+#define MAX_ADAPTER_ADDRESS_LENGTH      8
+#define MAX_HOSTNAME_LEN                128
+#define MAX_DOMAIN_NAME_LEN             128
+#define MAX_SCOPE_ID_LEN                256
+
+#define BROADCAST_NODETYPE              1
+#define PEER_TO_PEER_NODETYPE           2
+#define MIXED_NODETYPE                  4
+#define HYBRID_NODETYPE                 8
+
+typedef struct {
+    char String[4 * 4];
+} IP_ADDRESS_STRING, *PIP_ADDRESS_STRING, IP_MASK_STRING, *PIP_MASK_STRING;
+
+typedef struct _IP_ADDR_STRING {
+    struct _IP_ADDR_STRING* Next;
+    IP_ADDRESS_STRING IpAddress;
+    IP_MASK_STRING IpMask;
+    DWORD Context;
+} IP_ADDR_STRING, *PIP_ADDR_STRING;
+
+typedef struct _IP_ADAPTER_INFO {
+    struct _IP_ADAPTER_INFO* Next;
+    DWORD ComboIndex;
+    char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];
+    char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
+    UINT AddressLength;
+    BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
+    DWORD Index;
+    UINT Type;
+    UINT DhcpEnabled;
+    PIP_ADDR_STRING CurrentIpAddress;
+    IP_ADDR_STRING IpAddressList;
+    IP_ADDR_STRING GatewayList;
+    IP_ADDR_STRING DhcpServer;
+    BOOL HaveWins;
+    IP_ADDR_STRING PrimaryWinsServer;
+    IP_ADDR_STRING SecondaryWinsServer;
+    time_t LeaseObtained;
+    time_t LeaseExpires;
+} IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;
+
+typedef struct _IP_PER_ADAPTER_INFO {
+    UINT AutoconfigEnabled;
+    UINT AutoconfigActive;
+    PIP_ADDR_STRING CurrentDnsServer;
+    IP_ADDR_STRING DnsServerList;
+} IP_PER_ADAPTER_INFO, *PIP_PER_ADAPTER_INFO;
+
+typedef struct {
+    char HostName[MAX_HOSTNAME_LEN + 4] ;
+    char DomainName[MAX_DOMAIN_NAME_LEN + 4];
+    PIP_ADDR_STRING CurrentDnsServer;
+    IP_ADDR_STRING DnsServerList;
+    UINT NodeType;
+    char ScopeId[MAX_SCOPE_ID_LEN + 4];
+    UINT EnableRouting;
+    UINT EnableProxy;
+    UINT EnableDns;
+} FIXED_INFO, *PFIXED_INFO;
+
+#endif /* WINE_IPTYPES_H_*/
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/isguids.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/isguids.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/isguids.h	(revision 16410)
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2007 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _ISGUIDS_H_
+#define _ISGUIDS_H_
+
+DEFINE_GUID(CLSID_InternetShortcut, 0xfbf23b40,0xe3f0,0x101b,0x84,0x88,0x00,0xaa,0x00,0x3e,0x56,0xf8);
+
+DEFINE_GUID(IID_IUniformResourceLocatorA, 0xfbf23b80,0xe3f0,0x101b,0x84,0x88,0x00,0xaa,0x00,0x3e,0x56,0xf8);
+DEFINE_GUID(IID_IUniformResourceLocatorW, 0xcabb0da0,0xda57,0x11cf,0x99,0x74,0x00,0x20,0xaf,0xd7,0x97,0x62);
+#define IID_IUniformResourceLocator WINELIB_NAME_AW(IID_IUniformResourceLocator)
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ks.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ks.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ks.h	(revision 16410)
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2004 Robert Reif
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _KS_
+#define _KS_
+
+/* FIXME dummy placeholder for now */
+
+#endif  /* _KS_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ksguid.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ksguid.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ksguid.h	(revision 16410)
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2004 Robert Reif
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define INITGUID
+#include <guiddef.h>
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ksmedia.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ksmedia.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ksmedia.h	(revision 16410)
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2004 Robert Reif
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _KS_
+#error must include ks.h before ksmedia.h
+#endif
+
+#ifndef _KSMEDIA_
+#define _KSMEDIA_
+
+DEFINE_GUID(KSDATAFORMAT_SUBTYPE_PCM, 0x00000001, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
+DEFINE_GUID(KSDATAFORMAT_SUBTYPE_IEEE_FLOAT, 0x00000003, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
+
+#define KSAUDIO_SPEAKER_DIRECTOUT 0
+#define KSAUDIO_SPEAKER_MONO SPEAKER_FRONT_CENTER
+#define KSAUDIO_SPEAKER_STEREO (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT)
+#define KSAUDIO_SPEAKER_QUAD (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT)
+#define KSAUDIO_SPEAKER_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | SPEAKER_BACK_CENTER)
+#define KSAUDIO_SPEAKER_5POINT1 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | SPEAKER_LOWFREQUENCY | SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT)
+#define KSAUDIO_SPEAKER_7POINT1 (KSAUDIO_SPEAKER_5POINT1 | SPEAKER_FRONT_LEFT_OF_CENTER | SPEAKER_FRONT_RIGHT_OF_CENTER)
+
+#endif  /* _KSMEDIA_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lm.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lm.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lm.h	(revision 16410)
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2002 Andriy Palamarchuk
+ *
+ * General lm header which includes other lm headers.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_LM_H
+#define __WINE_LM_H
+
+#include <lmcons.h>
+#include <lmerr.h>
+#include <lmshare.h>
+#include <lmaccess.h>
+#include <lmserver.h>
+#include <lmwksta.h>
+#include <lmapibuf.h>
+#include <lmstats.h>
+#include <lmjoin.h>
+#include <lmmsg.h>
+#include <lmuse.h>
+/* FIXME: #include <lmalert.h> */
+/* FIXME: #include <lmremutl.h> */
+/* FIXME: #include <lmrepl.h> */
+/* FIXME: #include <lmsvc.h> */
+/* FIXME: #include <lmerrlog.h> */
+/* FIXME: #include <lmconfig.h> */
+/* FIXME: #include <lmaudit.h> */
+
+/* The following are obsolete headers */
+#include <lmbrowsr.h>
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmaccess.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmaccess.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmaccess.h	(revision 16410)
@@ -0,0 +1,477 @@
+/*
+ * Copyright 2002 Andriy Palamarchuk
+ *
+ * User information Net API.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_LMACCESS_H
+#define __WINE_LMACCESS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <lmcons.h>
+
+#define UF_SCRIPT                               0x000001
+#define UF_ACCOUNTDISABLE                       0x000002
+#define UF_HOMEDIR_REQUIRED                     0x000008
+#define UF_LOCKOUT                              0x000010
+#define UF_PASSWD_NOTREQD                       0x000020
+#define UF_PASSWD_CANT_CHANGE                   0x000040
+#define UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED      0x000080
+#define UF_TEMP_DUPLICATE_ACCOUNT               0x000100
+#define UF_NORMAL_ACCOUNT                       0x000200
+#define UF_INTERDOMAIN_TRUST_ACCOUNT            0x000800
+#define UF_WORKSTATION_TRUST_ACCOUNT            0x001000
+#define UF_SERVER_TRUST_ACCOUNT                 0x002000
+#define UF_DONT_EXPIRE_PASSWD                   0x010000
+#define UF_MNS_LOGON_ACCOUNT                    0x020000
+#define UF_SMARTCARD_REQUIRED                   0x040000
+#define UF_TRUSTED_FOR_DELEGATION               0x080000
+#define UF_NOT_DELEGATED                        0x100000
+#define UF_USE_DES_KEY_ONLY                     0x200000
+#define UF_DONT_REQUIRE_PREAUTH                 0x400000
+#define UF_PASSWORD_EXPIRED                     0x800000
+
+
+#define UF_MACHINE_ACCOUNT_MASK ( \
+    UF_INTERDOMAIN_TRUST_ACCOUNT | \
+    UF_WORKSTATION_TRUST_ACCOUNT | \
+    UF_SERVER_TRUST_ACCOUNT)
+
+#define UF_ACCOUNT_TYPE_MASK ( \
+    UF_TEMP_DUPLICATE_ACCOUNT | \
+    UF_NORMAL_ACCOUNT | \
+    UF_INTERDOMAIN_TRUST_ACCOUNT | \
+    UF_WORKSTATION_TRUST_ACCOUNT | \
+    UF_SERVER_TRUST_ACCOUNT)
+
+#define UF_SETTABLE_BITS ( \
+    UF_SCRIPT | \
+    UF_ACCOUNTDISABLE | \
+    UF_LOCKOUT | \
+    UF_HOMEDIR_REQUIRED  | \
+    UF_PASSWD_NOTREQD | \
+    UF_PASSWD_CANT_CHANGE | \
+    UF_ACCOUNT_TYPE_MASK | \
+    UF_DONT_EXPIRE_PASSWD | \
+    UF_MNS_LOGON_ACCOUNT |\
+    UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED |\
+    UF_SMARTCARD_REQUIRED | \
+    UF_TRUSTED_FOR_DELEGATION | \
+    UF_NOT_DELEGATED | \
+    UF_USE_DES_KEY_ONLY  | \
+    UF_DONT_REQUIRE_PREAUTH |\
+    UF_PASSWORD_EXPIRED)
+
+#if defined(__GNUC__)
+# define GROUP_SPECIALGRP_USERS (const WCHAR []){ 'U','S','E','R','S',0 }
+#elif defined(_MSC_VER)
+# define GROUP_SPECIALGRP_USERS         L"USERS"
+#else
+static const WCHAR GROUP_SPECIALGRP_USERS[] = { 'U','S','E','R','S',0 };
+#endif
+
+#if defined(__GNUC__)
+# define GROUP_SPECIALGRP_ADMINS (const WCHAR []){ 'A','D','M','I','N','S',0 }
+#elif defined(_MSC_VER)
+# define GROUP_SPECIALGRP_ADMINS        L"ADMINS"
+#else
+static const WCHAR GROUP_SPECIALGRP_ADMINS[] = { 'A','D','M','I','N','S',0 };
+#endif
+
+#if defined(__GNUC__)
+# define GROUP_SPECIALGRP_GUESTS  (const WCHAR []){ 'G','U','E','S','T','S',0 }
+#elif defined(_MSC_VER)
+# define GROUP_SPECIALGRP_GUESTS        L"GUESTS"
+#else
+static const WCHAR GROUP_SPECIALGRP_GUESTS[] = { 'G','U','E','S','T','S',0 };
+#endif
+
+#if defined(__GNUC__)
+# define GROUP_SPECIALGRP_LOCAL (const WCHAR []){ 'L','O','C','A','L',0 }
+#elif defined(_MSC_VER)
+# define GROUP_SPECIALGRP_LOCAL         L"LOCAL"
+#else
+static const WCHAR GROUP_SPECIALGRP_LOCAL[] = { 'L','O','C','A','L',0 };
+#endif
+
+#ifndef WINE_NTSTATUS_DECLARED
+#define WINE_NTSTATUS_DECLARED
+typedef LONG NTSTATUS;
+#endif
+#ifndef WINE_PNTSTATUS_DECLARED
+#define WINE_PNTSTATUS_DECLARED
+typedef NTSTATUS *PNTSTATUS;
+#endif
+
+/* NetGetUserInfo structures */
+typedef struct _USER_INFO_0 {
+    LPWSTR usri0_name;
+} USER_INFO_0, *PUSER_INFO_0, *LPUSER_INFO_0;
+
+typedef struct _USER_INFO_1 {
+    LPWSTR usri1_name;
+    LPWSTR usri1_password;
+    DWORD usri1_password_age;
+    DWORD usri1_priv;
+    LPWSTR usri1_home_dir;
+    LPWSTR usri1_comment;
+    DWORD usri1_flags;
+    LPWSTR usri1_script_path;
+} USER_INFO_1, *PUSER_INFO_1, *LPUSER_INFO_1;
+
+typedef struct _USER_INFO_2 {
+    LPWSTR usri2_name;
+    LPWSTR usri2_password;
+    DWORD usri2_password_age;
+    DWORD usri2_priv;
+    LPWSTR usri2_home_dir;
+    LPWSTR usri2_comment;
+    DWORD usri2_flags;
+    LPWSTR usri2_script_path;
+    DWORD usri2_auth_flags;
+    LPWSTR usri2_full_name;
+    LPWSTR usri2_usr_comment;
+    LPWSTR usri2_parms;
+    LPWSTR usri2_workstations;
+    DWORD usri2_last_logon;
+    DWORD usri2_last_logoff;
+    DWORD usri2_acct_expires;
+    DWORD usri2_max_storage;
+    DWORD usri2_units_per_week;
+    PBYTE usri2_logon_hours;
+    DWORD usri2_bad_pw_count;
+    DWORD usri2_num_logons;
+    LPWSTR usri2_logon_server;
+    DWORD usri2_country_code;
+    DWORD usri2_code_page;
+} USER_INFO_2, *PUSER_INFO_2, *LPUSER_INFO_2;
+
+typedef struct _USER_INFO_3 {
+    LPWSTR usri3_name;
+    LPWSTR usri3_password;
+    DWORD usri3_password_age;
+    DWORD usri3_priv;
+    LPWSTR usri3_home_dir;
+    LPWSTR usri3_comment;
+    DWORD usri3_flags;
+    LPWSTR usri3_script_path;
+    DWORD usri3_auth_flags;
+    LPWSTR usri3_full_name;
+    LPWSTR usri3_usr_comment;
+    LPWSTR usri3_parms;
+    LPWSTR usri3_workstations;
+    DWORD usri3_last_logon;
+    DWORD usri3_last_logoff;
+    DWORD usri3_acct_expires;
+    DWORD usri3_max_storage;
+    DWORD usri3_units_per_week;
+    PBYTE usri3_logon_hours;
+    DWORD usri3_bad_pw_count;
+    DWORD usri3_num_logons;
+    LPWSTR usri3_logon_server;
+    DWORD usri3_country_code;
+    DWORD usri3_code_page;
+    DWORD usri3_user_id;
+    DWORD usri3_primary_group_id;
+    LPWSTR usri3_profile;
+    LPWSTR usri3_home_dir_drive;
+    DWORD usri3_password_expired;
+} USER_INFO_3, *PUSER_INFO_3, *LPUSER_INFO_3;
+
+typedef struct _USER_INFO_4 {
+    LPWSTR usri4_name;
+    LPWSTR usri4_password;
+    DWORD usri4_password_age;
+    DWORD usri4_priv;
+    LPWSTR usri4_home_dir;
+    LPWSTR usri4_comment;
+    DWORD usri4_flags;
+    LPWSTR usri4_script_path;
+    DWORD usri4_auth_flags;
+    LPWSTR usri4_full_name;
+    LPWSTR usri4_usr_comment;
+    LPWSTR usri4_parms;
+    LPWSTR usri4_workstations;
+    DWORD usri4_last_logon;
+    DWORD usri4_last_logoff;
+    DWORD usri4_acct_expires;
+    DWORD usri4_max_storage;
+    DWORD usri4_units_per_week;
+    PBYTE usri4_logon_hours;
+    DWORD usri4_bad_pw_count;
+    DWORD usri4_num_logons;
+    LPWSTR usri4_logon_server;
+    DWORD usri4_country_code;
+    DWORD usri4_code_page;
+    PSID usri4_user_sid;
+    DWORD usri4_primary_group_id;
+    LPWSTR usri4_profile;
+    LPWSTR usri4_home_dir_drive;
+    DWORD usri4_password_expired;
+} USER_INFO_4, *PUSER_INFO_4, *LPUSER_INFO_4;
+
+typedef struct _USER_INFO_10 {
+    LPWSTR usri10_name;
+    LPWSTR usri10_comment;
+    LPWSTR usri10_usr_comment;
+    LPWSTR usri10_full_name;
+} USER_INFO_10, *PUSER_INFO_10, *LPUSER_INFO_10;
+
+typedef struct _USER_INFO_11 {
+    LPWSTR usri11_name;
+    LPWSTR usri11_comment;
+    LPWSTR usri11_usr_comment;
+    LPWSTR usri11_full_name;
+    DWORD usri11_priv;
+    DWORD usri11_auth_flags;
+    DWORD usri11_password_age;
+    LPWSTR usri11_home_dir;
+    LPWSTR usri11_parms;
+    DWORD usri11_last_logon;
+    DWORD usri11_last_logoff;
+    DWORD usri11_bad_pw_count;
+    DWORD usri11_num_logons;
+    LPWSTR usri11_logon_server;
+    DWORD usri11_country_code;
+    LPWSTR usri11_workstations;
+    DWORD usri11_max_storage;
+    DWORD usri11_units_per_week;
+    PBYTE usri11_logon_hours;
+    DWORD usri11_code_page;
+} USER_INFO_11, *PUSER_INFO_11, *LPUSER_INFO_11;
+
+typedef struct _USER_INFO_20 {
+    LPWSTR usri20_name;
+    LPWSTR usri20_full_name;
+    LPWSTR usri20_comment;
+    DWORD usri20_flags;
+    DWORD usri20_user_id;
+} USER_INFO_20, *PUSER_INFO_20, *LPUSER_INFO_20;
+
+typedef struct _USER_INFO_23 {
+    LPWSTR usri23_name;
+    LPWSTR usri23_full_name;
+    LPWSTR usri23_comment;
+    DWORD usri23_flags;
+    PSID usri23_user_sid;
+} USER_INFO_23, *PUSER_INFO_23, *LPUSER_INFO_23;
+
+typedef struct _USER_INFO_1003 {
+    LPWSTR  usri1003_password;
+} USER_INFO_1003, *PUSER_INFO_1003, *LPUSER_INFO_1003;
+
+typedef struct _USER_INFO_1005 {
+    DWORD   usri1005_priv;
+} USER_INFO_1005, *PUSER_INFO_1005, *LPUSER_INFO_1005;
+
+typedef struct _USER_INFO_1006 {
+    LPWSTR  usri1006_home_dir;
+} USER_INFO_1006, *PUSER_INFO_1006, *LPUSER_INFO_1006;
+
+typedef struct _USER_INFO_1007 {
+    LPWSTR  usri1007_comment;
+} USER_INFO_1007, *PUSER_INFO_1007, *LPUSER_INFO_1007;
+
+typedef struct _USER_INFO_1008 {
+    DWORD   usri1008_flags;
+} USER_INFO_1008, *PUSER_INFO_1008, *LPUSER_INFO_1008;
+
+typedef struct _USER_INFO_1009 {
+    LPWSTR  usri1009_script_path;
+} USER_INFO_1009, *PUSER_INFO_1009, *LPUSER_INFO_1009;
+
+typedef struct _USER_INFO_1010 {
+    DWORD   usri1010_auth_flags;
+} USER_INFO_1010, *PUSER_INFO_1010, *LPUSER_INFO_1010;
+
+typedef struct _USER_INFO_1011 {
+    LPWSTR  usri1011_full_name;
+} USER_INFO_1011, *PUSER_INFO_1011, *LPUSER_INFO_1011;
+
+typedef struct _USER_INFO_1012 {
+    LPWSTR  usri1012_usr_comment;
+} USER_INFO_1012, *PUSER_INFO_1012, *LPUSER_INFO_1012;
+
+typedef struct _USER_INFO_1013 {
+    LPWSTR  usri1013_parms;
+} USER_INFO_1013, *PUSER_INFO_1013, *LPUSER_INFO_1013;
+
+typedef struct _USER_INFO_1014 {
+    LPWSTR  usri1014_workstations;
+} USER_INFO_1014, *PUSER_INFO_1014, *LPUSER_INFO_1014;
+
+typedef struct _USER_INFO_1017 {
+    DWORD   usri1017_acct_expires;
+} USER_INFO_1017, *PUSER_INFO_1017, *LPUSER_INFO_1017;
+
+typedef struct _USER_INFO_1018 {
+    DWORD   usri1018_max_storage;
+} USER_INFO_1018, *PUSER_INFO_1018, *LPUSER_INFO_1018;
+
+typedef struct _USER_INFO_1020 {
+    DWORD   usri1020_units_per_week;
+    LPBYTE  usri1020_logon_hours;
+} USER_INFO_1020, *PUSER_INFO_1020, *LPUSER_INFO_1020;
+
+typedef struct _USER_INFO_1023 {
+    LPWSTR  usri1023_logon_server;
+} USER_INFO_1023, *PUSER_INFO_1023, *LPUSER_INFO_1023;
+
+typedef struct _USER_INFO_1024 {
+    DWORD   usri1024_country_code;
+} USER_INFO_1024, *PUSER_INFO_1024, *LPUSER_INFO_1024;
+
+typedef struct _USER_INFO_1025 {
+    DWORD   usri1025_code_page;
+} USER_INFO_1025, *PUSER_INFO_1025, *LPUSER_INFO_1025;
+
+typedef struct _USER_INFO_1051 {
+    DWORD   usri1051_primary_group_id;
+} USER_INFO_1051, *PUSER_INFO_1051, *LPUSER_INFO_1051;
+
+typedef struct _USER_INFO_1052 {
+    LPWSTR  usri1052_profile;
+} USER_INFO_1052, *PUSER_INFO_1052, *LPUSER_INFO_1052;
+
+typedef struct _USER_INFO_1053 {
+    LPWSTR  usri1053_home_dir_drive;
+} USER_INFO_1053, *PUSER_INFO_1053, *LPUSER_INFO_1053;
+
+typedef struct _USER_MODALS_INFO_0 {
+    DWORD usrmod0_min_passwd_len;
+    DWORD usrmod0_max_passwd_age;
+    DWORD usrmod0_min_passwd_age;
+    DWORD usrmod0_force_logoff;
+    DWORD usrmod0_password_hist_len;
+} USER_MODALS_INFO_0, *PUSER_MODALS_INFO_0, *LPUSER_MODALS_INFO_0;
+
+typedef struct _USER_MODALS_INFO_1 {
+    DWORD usrmod1_role;
+    LPWSTR usrmod1_primary;
+} USER_MODALS_INFO_1, *PUSER_MODALS_INFO_1, *LPUSER_MODALS_INFO_1;
+
+typedef struct _USER_MODALS_INFO_2 {
+    LPWSTR usrmod2_domain_name;
+    PSID usrmod2_domain_id;
+} USER_MODALS_INFO_2, *PUSER_MODALS_INFO_2, *LPUSER_MODALS_INFO_2;
+
+typedef struct _USER_MODALS_INFO_3 {
+    DWORD usrmod3_lockout_duration;
+    DWORD usrmod3_lockout_observation_window;
+    DWORD usrmod3_lockout_threshold;
+} USER_MODALS_INFO_3, *PUSER_MODALS_INFO_3, *LPUSER_MODALS_INFO_3;
+
+typedef struct _NET_DISPLAY_USER {
+    LPWSTR usri1_name;
+    LPWSTR usri1_comment;
+    DWORD usri1_flags;
+    LPWSTR usri1_full_name;
+    DWORD usri1_user_id;
+    DWORD usri1_next_index;
+} NET_DISPLAY_USER, *PNET_DISPLAY_USER;
+
+typedef struct _NET_DISPLAY_MACHINE {
+    LPWSTR usri2_name;
+    LPWSTR usri2_comment;
+    DWORD usri2_flags;
+    DWORD usri2_user_id;
+    DWORD usri2_next_index;
+} NET_DISPLAY_MACHINE, *PNET_DISPLAY_MACHINE;
+
+typedef struct _NET_DISPLAY_GROUP {
+    LPWSTR grpi3_name;
+    LPWSTR grpi3_comment;
+    DWORD grpi3_group_id;
+    DWORD grpi3_attributes;
+    DWORD grpi3_next_index;
+} NET_DISPLAY_GROUP, *PNET_DISPLAY_GROUP;
+
+typedef struct _LOCALGROUP_INFO_0 {
+    LPWSTR lgrpi0_name;
+} LOCALGROUP_INFO_0, *PLOCALGROUP_INFO_0, *LPLOCALGROUP_INFO_0;
+
+typedef struct _LOCALGROUP_INFO_1 {
+    LPWSTR lgrpi1_name;
+    LPWSTR lgrpi1_comment;
+} LOCALGROUP_INFO_1, *PLOCALGROUP_INFO_1, *LPLOCALGROUP_INFO_1;
+
+typedef struct _LOCALGROUP_INFO_1002 {
+    LPWSTR lgrpi1002_comment;
+} LOCALGROUP_INFO_1002, *PLOCALGROUP_INFO_1002, *LPLOCALGROUP_INFO_1002;
+
+typedef struct _LOCALGROUP_MEMBERS_INFO_0 {
+    PSID lgrmi0_sid;
+} LOCALGROUP_MEMBERS_INFO_0, *PLOCALGROUP_MEMBERS_INFO_0, *LPLOCALGROUP_MEMBERS_INFO_0;
+
+typedef struct _LOCALGROUP_MEMBERS_INFO_1 {
+    PSID lgrmi1_sid;
+    SID_NAME_USE lgrmi1_sidusage;
+    LPWSTR lgrmi1_name;
+} LOCALGROUP_MEMBERS_INFO_1, *PLOCALGROUP_MEMBERS_INFO_1, *LPLOCALGROUP_MEMBERS_INFO_1;
+
+typedef struct _LOCALGROUP_MEMBERS_INFO_2 {
+    PSID lgrmi2_sid;
+    SID_NAME_USE lgrmi2_sidusage;
+    LPWSTR lgrmi2_domainandname;
+} LOCALGROUP_MEMBERS_INFO_2, *PLOCALGROUP_MEMBERS_INFO_2, *LPLOCALGROUP_MEMBERS_INFO_2;
+
+typedef struct _LOCALGROUP_MEMBERS_INFO_3 {
+    LPWSTR lgrmi3_domainandname;
+} LOCALGROUP_MEMBERS_INFO_3, *PLOCALGROUP_MEMBERS_INFO_3, *LPLOCALGROUP_MEMBERS_INFO_3;
+
+typedef struct _LOCALGROUP_USERS_INFO_0 {
+    LPWSTR lgrui0_name;
+} LOCALGROUP_USERS_INFO_0, *PLOCALGROUP_USERS_INFO_0, *LPLOCALGROUP_USERS_INFO_0;
+
+#define USER_PRIV_GUEST   0
+#define USER_PRIV_USER    1
+#define USER_PRIV_ADMIN   2
+#define USER_PRIV_MASK    3
+
+#define LOCALGROUP_NAME_PARMNUM         1
+#define LOCALGROUP_COMMENT_PARMNUM      2
+
+NET_API_STATUS WINAPI NetGetDCName(LPCWSTR,LPCWSTR,LPBYTE*);
+NET_API_STATUS WINAPI NetGroupEnum(LPCWSTR,DWORD,LPBYTE*,DWORD,LPDWORD,LPDWORD,LPDWORD);
+NET_API_STATUS WINAPI NetLocalGroupAdd(LPCWSTR,DWORD,LPBYTE,LPDWORD);
+NET_API_STATUS WINAPI NetLocalGroupAddMember(LPCWSTR,LPCWSTR,PSID);
+NET_API_STATUS WINAPI NetLocalGroupAddMembers(LPCWSTR,LPCWSTR,DWORD,LPBYTE,DWORD);
+NET_API_STATUS WINAPI NetLocalGroupDel(LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetLocalGroupDelMember(LPCWSTR,LPCWSTR,PSID);
+NET_API_STATUS WINAPI NetLocalGroupDelMembers(LPCWSTR,LPCWSTR,DWORD,LPBYTE,DWORD);
+NET_API_STATUS WINAPI NetLocalGroupEnum(LPCWSTR,DWORD,LPBYTE*,DWORD,LPDWORD,LPDWORD,PDWORD_PTR);
+NET_API_STATUS WINAPI NetLocalGroupGetInfo(LPCWSTR,LPCWSTR,DWORD,LPBYTE*);
+NET_API_STATUS WINAPI NetLocalGroupGetMembers(LPCWSTR,LPCWSTR,DWORD,LPBYTE*,DWORD,LPDWORD,LPDWORD,PDWORD_PTR);
+NET_API_STATUS WINAPI NetLocalGroupSetInfo(LPCWSTR,LPCWSTR,DWORD,LPBYTE,LPDWORD);
+NET_API_STATUS WINAPI NetLocalGroupSetMembers(LPCWSTR,LPCWSTR,DWORD,LPBYTE,DWORD);
+NET_API_STATUS WINAPI NetQueryDisplayInformation(LPCWSTR,DWORD,DWORD,DWORD,DWORD,LPDWORD,PVOID*);
+NET_API_STATUS WINAPI NetUserAdd(LPCWSTR,DWORD,LPBYTE,LPDWORD);
+NET_API_STATUS WINAPI NetUserChangePassword(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetUserDel(LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetUserEnum(LPCWSTR,DWORD,DWORD,LPBYTE*,DWORD,LPDWORD,LPDWORD,LPDWORD);
+NET_API_STATUS WINAPI NetUserGetInfo(LPCWSTR,LPCWSTR,DWORD,LPBYTE*);
+NET_API_STATUS WINAPI NetUserGetLocalGroups(LPCWSTR,LPCWSTR,DWORD,DWORD,LPBYTE*,DWORD,LPDWORD,LPDWORD);
+NET_API_STATUS WINAPI NetUserModalsGet(LPCWSTR,DWORD,LPBYTE*);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmapibuf.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmapibuf.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmapibuf.h	(revision 16410)
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2002 Andriy Palamarchuk
+ *
+ * Net API buffer calls
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_LMAPIBUF_H
+#define __WINE_LMAPIBUF_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Buffer functions */
+NET_API_STATUS WINAPI NetApiBufferAllocate(DWORD ByteCount, LPVOID* Buffer);
+NET_API_STATUS WINAPI NetApiBufferFree(LPVOID Buffer);
+NET_API_STATUS WINAPI NetApiBufferReallocate(LPVOID OldBuffer, DWORD NewByteCount,
+                                             LPVOID* NewBuffer);
+NET_API_STATUS WINAPI NetApiBufferSize(LPVOID Buffer, LPDWORD ByteCount);
+NET_API_STATUS WINAPI NetapipBufferAllocate(DWORD ByteCount, LPVOID* Buffer);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmbrowsr.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmbrowsr.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmbrowsr.h	(revision 16410)
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2002 Andriy Palamarchuk
+ *
+ * Browser NET API calls
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_LMBROWSR_H
+#define __WINE_LMBROWSR_H
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct _BROWSER_EMULATED_DOMAIN {
+    LPWSTR DomainName;
+    LPWSTR EmulatedServerName;
+    DWORD Role;
+} BROWSER_EMULATED_DOMAIN, *PBROWSER_EMULATED_DOMAIN;
+
+NET_API_STATUS WINAPI I_BrowserSetNetlogonState(
+    LPWSTR ServerName, LPWSTR DomainName, LPWSTR EmulatedServerName,
+    DWORD Role);
+
+NET_API_STATUS WINAPI I_BrowserQueryEmulatedDomains(
+    LPWSTR ServerName, PBROWSER_EMULATED_DOMAIN *EmulatedDomains,
+    LPDWORD EntriesRead);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmcons.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmcons.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmcons.h	(revision 16410)
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 1999 Rein Klazes
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_LMCONS_H
+#define __WINE_LMCONS_H
+
+/* Types */
+
+#define NET_API_STATUS          DWORD
+#define API_RET_TYPE            NET_API_STATUS
+#define NET_API_FUNCTION        WINAPI
+
+#define MAX_PREFERRED_LENGTH            ((DWORD) -1)
+
+/* Lan manager API defines */
+
+#define UNLEN       256
+#define LM20_UNLEN  20
+#define GNLEN       UNLEN
+#define LM20_GNLEN  LM20_UNLEN
+#define PWLEN       256
+#define LM20_PWLEN  14
+#define SHPWLEN     8
+#define CNLEN       15
+#define LM20_CNLEN  CNLEN
+#define DNLEN       CNLEN
+#define LM20_DNLEN  DNLEN
+#define UNCLEN      (CNLEN+2)
+#define LM20_UNCLEN (LM20_CNLEN+2)
+#define NNLEN       80
+#define LM20_NNLEN  12
+#define RMLEN       (UNCLEN+1+NNLEN)
+#define LM20_RMLEN  (LM20_UNCLEN+1+LM20_NNLEN)
+#define SNLEN       80
+#define LM20_SNLEN  15
+#define STXTLEN     256
+#define LM20_STXTLEN 63
+#define PATHLEN     256
+#define LM20_PATHLEN 256
+#define DEVLEN      80
+#define LM20_DEVLEN 8
+#define EVLEN       16
+#define CLTYPE_LEN  12
+
+/* platform IDs */
+#define PLATFORM_ID_DOS 300
+#define PLATFORM_ID_OS2 400
+#define PLATFORM_ID_NT  500
+#define PLATFORM_ID_OSF 600
+#define PLATFORM_ID_VMS 700
+
+#define LMSTR LPWSTR
+#define LMCSTR LPCWSTR
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmerr.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmerr.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmerr.h	(revision 16410)
@@ -0,0 +1,318 @@
+/*
+ * Copyright 2002 Andriy Palamarchuk
+ *
+ * NERR error codes.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_LMERR_H
+#define __WINE_LMERR_H
+
+#include <winerror.h>
+
+#define NERR_Success    0
+
+#define NERR_BASE                         2100
+
+#define NERR_NetNotStarted                (NERR_BASE + 2)
+#define NERR_UnknownServer                (NERR_BASE + 3)
+#define NERR_ShareMem                     (NERR_BASE + 4)
+#define NERR_NoNetworkResource            (NERR_BASE + 5)
+#define NERR_RemoteOnly                   (NERR_BASE + 6)
+#define NERR_DevNotRedirected             (NERR_BASE + 7)
+#define NERR_ServerNotStarted             (NERR_BASE + 14)
+#define NERR_ItemNotFound                 (NERR_BASE + 15)
+#define NERR_UnknownDevDir                (NERR_BASE + 16)
+#define NERR_RedirectedPath               (NERR_BASE + 17)
+#define NERR_DuplicateShare               (NERR_BASE + 18)
+#define NERR_NoRoom                       (NERR_BASE + 19)
+#define NERR_TooManyItems                 (NERR_BASE + 21)
+#define NERR_InvalidMaxUsers              (NERR_BASE + 22)
+#define NERR_BufTooSmall                  (NERR_BASE + 23)
+#define NERR_RemoteErr                    (NERR_BASE + 27)
+#define NERR_LanmanIniError               (NERR_BASE + 31)
+#define NERR_NetworkError                 (NERR_BASE + 36)
+#define NERR_WkstaInconsistentState       (NERR_BASE + 37)
+#define NERR_WkstaNotStarted              (NERR_BASE + 38)
+#define NERR_BrowserNotStarted            (NERR_BASE + 39)
+#define NERR_InternalError                (NERR_BASE + 40)
+#define NERR_BadTransactConfig            (NERR_BASE + 41)
+#define NERR_InvalidAPI                   (NERR_BASE + 42)
+#define NERR_BadEventName                 (NERR_BASE + 43)
+#define NERR_DupNameReboot                (NERR_BASE + 44)
+#define NERR_CfgCompNotFound              (NERR_BASE + 46)
+#define NERR_CfgParamNotFound             (NERR_BASE + 47)
+#define NERR_LineTooLong                  (NERR_BASE + 49)
+#define NERR_QNotFound                    (NERR_BASE + 50)
+#define NERR_JobNotFound                  (NERR_BASE + 51)
+#define NERR_DestNotFound                 (NERR_BASE + 52)
+#define NERR_DestExists                   (NERR_BASE + 53)
+#define NERR_QExists                      (NERR_BASE + 54)
+#define NERR_QNoRoom                      (NERR_BASE + 55)
+#define NERR_JobNoRoom                    (NERR_BASE + 56)
+#define NERR_DestNoRoom                   (NERR_BASE + 57)
+#define NERR_DestIdle                     (NERR_BASE + 58)
+#define NERR_DestInvalidOp                (NERR_BASE + 59)
+#define NERR_ProcNoRespond                (NERR_BASE + 60)
+#define NERR_SpoolerNotLoaded             (NERR_BASE + 61)
+#define NERR_DestInvalidState             (NERR_BASE + 62)
+#define NERR_QInvalidState                (NERR_BASE + 63)
+#define NERR_JobInvalidState              (NERR_BASE + 64)
+#define NERR_SpoolNoMemory                (NERR_BASE + 65)
+#define NERR_DriverNotFound               (NERR_BASE + 66)
+#define NERR_DataTypeInvalid              (NERR_BASE + 67)
+#define NERR_ProcNotFound                 (NERR_BASE + 68)
+#define NERR_ServiceTableLocked           (NERR_BASE + 80)
+#define NERR_ServiceTableFull             (NERR_BASE + 81)
+#define NERR_ServiceInstalled             (NERR_BASE + 82)
+#define NERR_ServiceEntryLocked           (NERR_BASE + 83)
+#define NERR_ServiceNotInstalled          (NERR_BASE + 84)
+#define NERR_BadServiceName               (NERR_BASE + 85)
+#define NERR_ServiceCtlTimeout            (NERR_BASE + 86)
+#define NERR_ServiceCtlBusy               (NERR_BASE + 87)
+#define NERR_BadServiceProgName           (NERR_BASE + 88)
+#define NERR_ServiceNotCtrl               (NERR_BASE + 89)
+#define NERR_ServiceKillProc              (NERR_BASE + 90)
+#define NERR_ServiceCtlNotValid           (NERR_BASE + 91)
+#define NERR_NotInDispatchTbl             (NERR_BASE + 92)
+#define NERR_BadControlRecv               (NERR_BASE + 93)
+#define NERR_ServiceNotStarting           (NERR_BASE + 94)
+#define NERR_AlreadyLoggedOn              (NERR_BASE + 100)
+#define NERR_NotLoggedOn                  (NERR_BASE + 101)
+#define NERR_BadUsername                  (NERR_BASE + 102)
+#define NERR_BadPassword                  (NERR_BASE + 103)
+#define NERR_UnableToAddName_W            (NERR_BASE + 104)
+#define NERR_UnableToAddName_F            (NERR_BASE + 105)
+#define NERR_UnableToDelName_W            (NERR_BASE + 106)
+#define NERR_UnableToDelName_F            (NERR_BASE + 107)
+#define NERR_LogonsPaused                 (NERR_BASE + 109)
+#define NERR_LogonServerConflict          (NERR_BASE + 110)
+#define NERR_LogonNoUserPath              (NERR_BASE + 111)
+#define NERR_LogonScriptError             (NERR_BASE + 112)
+#define NERR_StandaloneLogon              (NERR_BASE + 114)
+#define NERR_LogonServerNotFound          (NERR_BASE + 115)
+#define NERR_LogonDomainExists            (NERR_BASE + 116)
+#define NERR_NonValidatedLogon            (NERR_BASE + 117)
+#define NERR_ACFNotFound                  (NERR_BASE + 119)
+#define NERR_GroupNotFound                (NERR_BASE + 120)
+#define NERR_UserNotFound                 (NERR_BASE + 121)
+#define NERR_ResourceNotFound             (NERR_BASE + 122)
+#define NERR_GroupExists                  (NERR_BASE + 123)
+#define NERR_UserExists                   (NERR_BASE + 124)
+#define NERR_ResourceExists               (NERR_BASE + 125)
+#define NERR_NotPrimary                   (NERR_BASE + 126)
+#define NERR_ACFNotLoaded                 (NERR_BASE + 127)
+#define NERR_ACFNoRoom                    (NERR_BASE + 128)
+#define NERR_ACFFileIOFail                (NERR_BASE + 129)
+#define NERR_ACFTooManyLists              (NERR_BASE + 130)
+#define NERR_UserLogon                    (NERR_BASE + 131)
+#define NERR_ACFNoParent                  (NERR_BASE + 132)
+#define NERR_CanNotGrowSegment            (NERR_BASE + 133)
+#define NERR_SpeGroupOp                   (NERR_BASE + 134)
+#define NERR_NotInCache                   (NERR_BASE + 135)
+#define NERR_UserInGroup                  (NERR_BASE + 136)
+#define NERR_UserNotInGroup               (NERR_BASE + 137)
+#define NERR_AccountUndefined             (NERR_BASE + 138)
+#define NERR_AccountExpired               (NERR_BASE + 139)
+#define NERR_InvalidWorkstation           (NERR_BASE + 140)
+#define NERR_InvalidLogonHours            (NERR_BASE + 141)
+#define NERR_PasswordExpired              (NERR_BASE + 142)
+#define NERR_PasswordCantChange           (NERR_BASE + 143)
+#define NERR_PasswordHistConflict         (NERR_BASE + 144)
+#define NERR_PasswordTooShort             (NERR_BASE + 145)
+#define NERR_PasswordTooRecent            (NERR_BASE + 146)
+#define NERR_InvalidDatabase              (NERR_BASE + 147)
+#define NERR_DatabaseUpToDate             (NERR_BASE + 148)
+#define NERR_SyncRequired                 (NERR_BASE + 149)
+#define NERR_UseNotFound                  (NERR_BASE + 150)
+#define NERR_BadAsgType                   (NERR_BASE + 151)
+#define NERR_DeviceIsShared               (NERR_BASE + 152)
+#define NERR_NoComputerName               (NERR_BASE + 170)
+#define NERR_MsgAlreadyStarted            (NERR_BASE + 171)
+#define NERR_MsgInitFailed                (NERR_BASE + 172)
+#define NERR_NameNotFound                 (NERR_BASE + 173)
+#define NERR_AlreadyForwarded             (NERR_BASE + 174)
+#define NERR_AddForwarded                 (NERR_BASE + 175)
+#define NERR_AlreadyExists                (NERR_BASE + 176)
+#define NERR_TooManyNames                 (NERR_BASE + 177)
+#define NERR_DelComputerName              (NERR_BASE + 178)
+#define NERR_LocalForward                 (NERR_BASE + 179)
+#define NERR_GrpMsgProcessor              (NERR_BASE + 180)
+#define NERR_PausedRemote                 (NERR_BASE + 181)
+#define NERR_BadReceive                   (NERR_BASE + 182)
+#define NERR_NameInUse                    (NERR_BASE + 183)
+#define NERR_MsgNotStarted                (NERR_BASE + 184)
+#define NERR_NotLocalName                 (NERR_BASE + 185)
+#define NERR_NoForwardName                (NERR_BASE + 186)
+#define NERR_RemoteFull                   (NERR_BASE + 187)
+#define NERR_NameNotForwarded             (NERR_BASE + 188)
+#define NERR_TruncatedBroadcast           (NERR_BASE + 189)
+#define NERR_InvalidDevice                (NERR_BASE + 194)
+#define NERR_WriteFault                   (NERR_BASE + 195)
+#define NERR_DuplicateName                (NERR_BASE + 197)
+#define NERR_DeleteLater                  (NERR_BASE + 198)
+#define NERR_IncompleteDel                (NERR_BASE + 199)
+#define NERR_MultipleNets                 (NERR_BASE + 200)
+#define NERR_NetNameNotFound              (NERR_BASE + 210)
+#define NERR_DeviceNotShared              (NERR_BASE + 211)
+#define NERR_ClientNameNotFound           (NERR_BASE + 212)
+#define NERR_FileIdNotFound               (NERR_BASE + 214)
+#define NERR_ExecFailure                  (NERR_BASE + 215)
+#define NERR_TmpFile                      (NERR_BASE + 216)
+#define NERR_TooMuchData                  (NERR_BASE + 217)
+#define NERR_DeviceShareConflict          (NERR_BASE + 218)
+#define NERR_BrowserTableIncomplete       (NERR_BASE + 219)
+#define NERR_NotLocalDomain               (NERR_BASE + 220)
+#define NERR_IsDfsShare                   (NERR_BASE + 221)
+#define NERR_DevInvalidOpCode             (NERR_BASE + 231)
+#define NERR_DevNotFound                  (NERR_BASE + 232)
+#define NERR_DevNotOpen                   (NERR_BASE + 233)
+#define NERR_BadQueueDevString            (NERR_BASE + 234)
+#define NERR_BadQueuePriority             (NERR_BASE + 235)
+#define NERR_NoCommDevs                   (NERR_BASE + 237)
+#define NERR_QueueNotFound                (NERR_BASE + 238)
+#define NERR_BadDevString                 (NERR_BASE + 240)
+#define NERR_BadDev                       (NERR_BASE + 241)
+#define NERR_InUseBySpooler               (NERR_BASE + 242)
+#define NERR_CommDevInUse                 (NERR_BASE + 243)
+#define NERR_InvalidComputer              (NERR_BASE + 251)
+#define NERR_MaxLenExceeded               (NERR_BASE + 254)
+#define NERR_BadComponent                 (NERR_BASE + 256)
+#define NERR_CantType                     (NERR_BASE + 257)
+#define NERR_TooManyEntries               (NERR_BASE + 262)
+#define NERR_ProfileFileTooBig            (NERR_BASE + 270)
+#define NERR_ProfileOffset                (NERR_BASE + 271)
+#define NERR_ProfileCleanup               (NERR_BASE + 272)
+#define NERR_ProfileUnknownCmd            (NERR_BASE + 273)
+#define NERR_ProfileLoadErr               (NERR_BASE + 274)
+#define NERR_ProfileSaveErr               (NERR_BASE + 275)
+#define NERR_LogOverflow                  (NERR_BASE + 277)
+#define NERR_LogFileChanged               (NERR_BASE + 278)
+#define NERR_LogFileCorrupt               (NERR_BASE + 279)
+#define NERR_SourceIsDir                  (NERR_BASE + 280)
+#define NERR_BadSource                    (NERR_BASE + 281)
+#define NERR_BadDest                      (NERR_BASE + 282)
+#define NERR_DifferentServers             (NERR_BASE + 283)
+#define NERR_RunSrvPaused                 (NERR_BASE + 285)
+#define NERR_ErrCommRunSrv                (NERR_BASE + 289)
+#define NERR_ErrorExecingGhost            (NERR_BASE + 291)
+#define NERR_ShareNotFound                (NERR_BASE + 292)
+#define NERR_InvalidLana                  (NERR_BASE + 300)
+#define NERR_OpenFiles                    (NERR_BASE + 301)
+#define NERR_ActiveConns                  (NERR_BASE + 302)
+#define NERR_BadPasswordCore              (NERR_BASE + 303)
+#define NERR_DevInUse                     (NERR_BASE + 304)
+#define NERR_LocalDrive                   (NERR_BASE + 305)
+#define NERR_AlertExists                  (NERR_BASE + 330)
+#define NERR_TooManyAlerts                (NERR_BASE + 331)
+#define NERR_NoSuchAlert                  (NERR_BASE + 332)
+#define NERR_BadRecipient                 (NERR_BASE + 333)
+#define NERR_AcctLimitExceeded            (NERR_BASE + 334)
+#define NERR_InvalidLogSeek               (NERR_BASE + 340)
+#define NERR_BadUasConfig                 (NERR_BASE + 350)
+#define NERR_InvalidUASOp                 (NERR_BASE + 351)
+#define NERR_LastAdmin                    (NERR_BASE + 352)
+#define NERR_DCNotFound                   (NERR_BASE + 353)
+#define NERR_LogonTrackingError           (NERR_BASE + 354)
+#define NERR_NetlogonNotStarted           (NERR_BASE + 355)
+#define NERR_CanNotGrowUASFile            (NERR_BASE + 356)
+#define NERR_TimeDiffAtDC                 (NERR_BASE + 357)
+#define NERR_PasswordMismatch             (NERR_BASE + 358)
+#define NERR_NoSuchServer                 (NERR_BASE + 360)
+#define NERR_NoSuchSession                (NERR_BASE + 361)
+#define NERR_NoSuchConnection             (NERR_BASE + 362)
+#define NERR_TooManyServers               (NERR_BASE + 363)
+#define NERR_TooManySessions              (NERR_BASE + 364)
+#define NERR_TooManyConnections           (NERR_BASE + 365)
+#define NERR_TooManyFiles                 (NERR_BASE + 366)
+#define NERR_NoAlternateServers           (NERR_BASE + 367)
+#define NERR_TryDownLevel                 (NERR_BASE + 370)
+#define NERR_UPSDriverNotStarted          (NERR_BASE + 380)
+#define NERR_UPSInvalidConfig             (NERR_BASE + 381)
+#define NERR_UPSInvalidCommPort           (NERR_BASE + 382)
+#define NERR_UPSSignalAsserted            (NERR_BASE + 383)
+#define NERR_UPSShutdownFailed            (NERR_BASE + 384)
+#define NERR_BadDosRetCode                (NERR_BASE + 400)
+#define NERR_ProgNeedsExtraMem            (NERR_BASE + 401)
+#define NERR_BadDosFunction               (NERR_BASE + 402)
+#define NERR_RemoteBootFailed             (NERR_BASE + 403)
+#define NERR_BadFileCheckSum              (NERR_BASE + 404)
+#define NERR_NoRplBootSystem              (NERR_BASE + 405)
+#define NERR_RplLoadrNetBiosErr           (NERR_BASE + 406)
+#define NERR_RplLoadrDiskErr              (NERR_BASE + 407)
+#define NERR_ImageParamErr                (NERR_BASE + 408)
+#define NERR_TooManyImageParams           (NERR_BASE + 409)
+#define NERR_NonDosFloppyUsed             (NERR_BASE + 410)
+#define NERR_RplBootRestart               (NERR_BASE + 411)
+#define NERR_RplSrvrCallFailed            (NERR_BASE + 412)
+#define NERR_CantConnectRplSrvr           (NERR_BASE + 413)
+#define NERR_CantOpenImageFile            (NERR_BASE + 414)
+#define NERR_CallingRplSrvr               (NERR_BASE + 415)
+#define NERR_StartingRplBoot              (NERR_BASE + 416)
+#define NERR_RplBootServiceTerm           (NERR_BASE + 417)
+#define NERR_RplBootStartFailed           (NERR_BASE + 418)
+#define NERR_RPL_CONNECTED                (NERR_BASE + 419)
+#define NERR_BrowserConfiguredToNotRun    (NERR_BASE + 450)
+#define NERR_RplNoAdaptersStarted         (NERR_BASE + 510)
+#define NERR_RplBadRegistry               (NERR_BASE + 511)
+#define NERR_RplBadDatabase               (NERR_BASE + 512)
+#define NERR_RplRplfilesShare             (NERR_BASE + 513)
+#define NERR_RplNotRplServer              (NERR_BASE + 514)
+#define NERR_RplCannotEnum                (NERR_BASE + 515)
+#define NERR_RplWkstaInfoCorrupted        (NERR_BASE + 516)
+#define NERR_RplWkstaNotFound             (NERR_BASE + 517)
+#define NERR_RplWkstaNameUnavailable      (NERR_BASE + 518)
+#define NERR_RplProfileInfoCorrupted      (NERR_BASE + 519)
+#define NERR_RplProfileNotFound           (NERR_BASE + 520)
+#define NERR_RplProfileNameUnavailable    (NERR_BASE + 521)
+#define NERR_RplProfileNotEmpty           (NERR_BASE + 522)
+#define NERR_RplConfigInfoCorrupted       (NERR_BASE + 523)
+#define NERR_RplConfigNotFound            (NERR_BASE + 524)
+#define NERR_RplAdapterInfoCorrupted      (NERR_BASE + 525)
+#define NERR_RplInternal                  (NERR_BASE + 526)
+#define NERR_RplVendorInfoCorrupted       (NERR_BASE + 527)
+#define NERR_RplBootInfoCorrupted         (NERR_BASE + 528)
+#define NERR_RplWkstaNeedsUserAcct        (NERR_BASE + 529)
+#define NERR_RplNeedsRPLUSERAcct          (NERR_BASE + 530)
+#define NERR_RplBootNotFound              (NERR_BASE + 531)
+#define NERR_RplIncompatibleProfile       (NERR_BASE + 532)
+#define NERR_RplAdapterNameUnavailable    (NERR_BASE + 533)
+#define NERR_RplConfigNotEmpty            (NERR_BASE + 534)
+#define NERR_RplBootInUse                 (NERR_BASE + 535)
+#define NERR_RplBackupDatabase            (NERR_BASE + 536)
+#define NERR_RplAdapterNotFound           (NERR_BASE + 537)
+#define NERR_RplVendorNotFound            (NERR_BASE + 538)
+#define NERR_RplVendorNameUnavailable     (NERR_BASE + 539)
+#define NERR_RplBootNameUnavailable       (NERR_BASE + 540)
+#define NERR_RplConfigNameUnavailable     (NERR_BASE + 541)
+#define NERR_DfsInternalCorruption        (NERR_BASE + 560)
+#define NERR_DfsVolumeDataCorrupt         (NERR_BASE + 561)
+#define NERR_DfsNoSuchVolume              (NERR_BASE + 562)
+#define NERR_DfsVolumeAlreadyExists       (NERR_BASE + 563)
+#define NERR_DfsAlreadyShared             (NERR_BASE + 564)
+#define NERR_DfsNoSuchShare               (NERR_BASE + 565)
+#define NERR_DfsNotALeafVolume            (NERR_BASE + 566)
+#define NERR_DfsLeafVolume                (NERR_BASE + 567)
+#define NERR_DfsVolumeHasMultipleServers  (NERR_BASE + 568)
+#define NERR_DfsCantCreateJunctionPoint   (NERR_BASE + 569)
+#define NERR_DfsServerNotDfsAware         (NERR_BASE + 570)
+#define NERR_DfsBadRenamePath             (NERR_BASE + 571)
+#define NERR_DfsVolumeIsOffline           (NERR_BASE + 572)
+#define NERR_DfsInternalError             (NERR_BASE + 590)
+
+#define MAX_NERR                          (NERR_BASE + 899)
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmjoin.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmjoin.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmjoin.h	(revision 16410)
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2005 Ulrich Czekalla (For CodeWeavers)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_LMJOIN_H
+#define __WINE_LMJOIN_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum tagNETSETUP_JOIN_STATUS
+{
+    NetSetupUnknownStatus = 0,
+    NetSetupUnjoined,
+    NetSetupWorkgroupName,
+    NetSetupDomainName
+} NETSETUP_JOIN_STATUS, *PNETSETUP_JOIN_STATUS;
+
+NET_API_STATUS NET_API_FUNCTION NetGetJoinInformation(
+    LPCWSTR Server,
+    LPWSTR *Name,
+    PNETSETUP_JOIN_STATUS type);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmmsg.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmmsg.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmmsg.h	(revision 16410)
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2006 Robert Reif
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef _LMMSG_
+#define _LMMSG_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define MSGNAME_NOT_FORWARDED   0x00
+#define MSGNAME_FORWARDED_TO    0x04
+#define MSGNAME_FORWARDED_FROM  0x10
+
+typedef struct _MSG_INFO_0
+{
+    LPWSTR msgi0_name;
+} MSG_INFO_0, *PMSG_INFO_0, *LPMSG_INFO_0;
+
+typedef struct _MSG_INFO_1
+{
+    LPWSTR msgi1_name;
+    DWORD msgi1_forward_flag;
+    LPWSTR msgi1_forward;
+} MSG_INFO_1, *PMSG_INFO_1, *LPMSG_INFO_1;
+
+NET_API_STATUS NET_API_FUNCTION NetMessageBufferSend(LPCWSTR,LPCWSTR,LPCWSTR,LPBYTE,DWORD);
+NET_API_STATUS NET_API_FUNCTION NetMessageNameAdd(LPCWSTR,LPCWSTR);
+NET_API_STATUS NET_API_FUNCTION NetMessageNameDel(LPCWSTR,LPCWSTR);
+NET_API_STATUS NET_API_FUNCTION NetMessageNameEnum(LPCWSTR,DWORD,LPBYTE*,DWORD,LPDWORD,LPDWORD,LPDWORD);
+NET_API_STATUS NET_API_FUNCTION NetMessageNameGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmserver.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmserver.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmserver.h	(revision 16410)
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2003 Juan Lang
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef _LMSERVER_
+#define _LMSERVER_
+
+#include <winsvc.h>
+#include <lmcons.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct _SERVER_INFO_100 {
+    DWORD sv100_platform_id;
+    LMSTR sv100_name;
+} SERVER_INFO_100, *PSERVER_INFO_100, *LPSERVER_INFO_100;
+
+typedef struct _SERVER_INFO_101 {
+    DWORD sv101_platform_id;
+    LMSTR sv101_name;
+    DWORD sv101_version_major;
+    DWORD sv101_version_minor;
+    DWORD sv101_type;
+    LMSTR sv101_comment;
+} SERVER_INFO_101, *PSERVER_INFO_101, *LPSERVER_INFO_101;
+
+NET_API_STATUS WINAPI NetServerEnum(LMCSTR,DWORD,LPBYTE*,DWORD,LPDWORD,LPDWORD,DWORD,LMCSTR,LPDWORD);
+NET_API_STATUS WINAPI NetServerEnumEx(LMCSTR,DWORD,LPBYTE*,DWORD,LPDWORD,LPDWORD,DWORD,LMCSTR,LMCSTR);
+NET_API_STATUS WINAPI NetServerGetInfo(LMSTR,DWORD,LPBYTE*);
+BOOL WINAPI SetServiceBits(SERVICE_STATUS_HANDLE,DWORD,BOOL,BOOL);
+
+#define SV_TYPE_WORKSTATION       0x00000001
+#define SV_TYPE_SERVER            0x00000002
+#define SV_TYPE_SQLSERVER         0x00000004
+#define SV_TYPE_DOMAIN_CTRL       0x00000008
+#define SV_TYPE_DOMAIN_BAKCTRL    0x00000010
+#define SV_TYPE_TIME_SOURCE       0x00000020
+#define SV_TYPE_AFP               0x00000040
+#define SV_TYPE_NOVELL            0x00000080
+#define SV_TYPE_DOMAIN_MEMBER     0x00000100
+#define SV_TYPE_PRINTQ_SERVER     0x00000200
+#define SV_TYPE_DIALIN_SERVER     0x00000400
+#define SV_TYPE_XENIX_SERVER      0x00000800
+#define SV_TYPE_SERVER_UNIX       SV_TYPE_XENIX_SERVER
+#define SV_TYPE_NT                0x00001000
+#define SV_TYPE_WFW               0x00002000
+#define SV_TYPE_SERVER_MFPN       0x00004000
+#define SV_TYPE_SERVER_NT         0x00008000
+#define SV_TYPE_POTENTIAL_BROWSER 0x00010000
+#define SV_TYPE_BACKUP_BROWSER    0x00020000
+#define SV_TYPE_MASTER_BROWSER    0x00040000
+#define SV_TYPE_DOMAIN_MASTER     0x00080000
+#define SV_TYPE_SERVER_OSF        0x00100000
+#define SV_TYPE_SERVER_VMS        0x00200000
+#define SV_TYPE_WINDOWS           0x00400000
+#define SV_TYPE_DFS               0x00800000
+#define SV_TYPE_ALTERNATE_XPORT   0x20000000
+#define SV_TYPE_LOCAL_LIST_ONLY   0x40000000
+#define SV_TYPE_DOMAIN_ENUM       0x80000000
+#define SV_TYPE_ALL               0xFFFFFFFF
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ndef _LMSERVER_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmshare.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmshare.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmshare.h	(revision 16410)
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2003 Juan Lang
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef _LMSHARE_H
+#define _LMSHARE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <lmcons.h>
+
+typedef struct _SHARE_INFO_0 {
+    LMSTR shi0_netname;
+} SHARE_INFO_0, *PSHARE_INFO_0, *LPSHARE_INFO_0;
+
+typedef struct _SHARE_INFO_1 {
+    LMSTR shi1_netname;
+    DWORD shi1_type;
+    LMSTR shi1_remark;
+} SHARE_INFO_1, *PSHARE_INFO_1, *LPSHARE_INFO_1;
+
+NET_API_STATUS WINAPI NetShareAdd(LMSTR,DWORD,LPBYTE,LPDWORD);
+NET_API_STATUS WINAPI NetShareCheck(LMSTR,LMSTR,LPDWORD);
+NET_API_STATUS WINAPI NetShareDel(LMSTR,LMSTR,DWORD);
+NET_API_STATUS WINAPI NetShareDelEx(LMSTR,DWORD,LPBYTE);
+NET_API_STATUS WINAPI NetShareDelSticky(LMSTR,LMSTR,DWORD);
+NET_API_STATUS WINAPI NetShareEnum(LMSTR,DWORD,LPBYTE*,DWORD,LPDWORD,LPDWORD,LPDWORD);
+NET_API_STATUS WINAPI NetShareEnumSticky(LMSTR,DWORD,LPBYTE*,DWORD,LPDWORD,LPDWORD,LPDWORD);
+NET_API_STATUS WINAPI NetShareGetInfo(LMSTR,LMSTR,DWORD,LPBYTE*);
+NET_API_STATUS WINAPI NetShareSetInfo(LMSTR,LMSTR,DWORD,LPBYTE,LPDWORD);
+
+#define STYPE_DISKTREE 0
+#define STYPE_PRINTQ   1
+#define STYPE_DEVICE   2
+#define STYPE_IPC      3
+#define STYPE_SPECIAL  0x80000000
+
+NET_API_STATUS WINAPI NetSessionDel(LMSTR,LMSTR,LMSTR);
+NET_API_STATUS WINAPI NetSessionEnum(LMSTR,LMSTR,LMSTR,DWORD,LPBYTE*,DWORD,LPDWORD,LPDWORD,LPDWORD);
+NET_API_STATUS WINAPI NetSessionGetInfo(LMSTR,LMSTR,LMSTR,DWORD,LPBYTE*);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ndef _LMSHARE_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmstats.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmstats.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmstats.h	(revision 16410)
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2003 Geoff Thorpe
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_LMSTATS_H
+#define __WINE_LMSTATS_H
+
+#include <lmcons.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct _STAT_WORKSTATION_0 {
+    LARGE_INTEGER StatisticsStartTime;
+    LARGE_INTEGER BytesReceived;
+    LARGE_INTEGER SmbsReceived;
+    LARGE_INTEGER PagingReadBytesRequested;
+    LARGE_INTEGER NonPagingReadBytesRequested;
+    LARGE_INTEGER CacheReadBytesRequested;
+    LARGE_INTEGER NetworkReadBytesRequested;
+    LARGE_INTEGER BytesTransmitted;
+    LARGE_INTEGER SmbsTransmitted;
+    LARGE_INTEGER PagingWriteBytesRequested;
+    LARGE_INTEGER NonPagingWriteBytesRequested;
+    LARGE_INTEGER CacheWriteBytesRequested;
+    LARGE_INTEGER NetworkWriteBytesRequested;
+    DWORD InitiallyFailedOperations;
+    DWORD FailedCompletionOperations;
+    DWORD ReadOperations;
+    DWORD RandomReadOperations;
+    DWORD ReadSmbs;
+    DWORD LargeReadSmbs;
+    DWORD SmallReadSmbs;
+    DWORD WriteOperations;
+    DWORD RandomWriteOperations;
+    DWORD WriteSmbs;
+    DWORD LargeWriteSmbs;
+    DWORD SmallWriteSmbs;
+    DWORD RawReadsDenied;
+    DWORD RawWritesDenied;
+    DWORD NetworkErrors;
+    DWORD Sessions;
+    DWORD FailedSessions;
+    DWORD Reconnects;
+    DWORD CoreConnects;
+    DWORD Lanman20Connects;
+    DWORD Lanman21Connects;
+    DWORD LanmanNtConnects;
+    DWORD ServerDisconnects;
+    DWORD HungSessions;
+    DWORD UseCount;
+    DWORD FailedUseCount;
+    DWORD CurrentCommands;
+} STAT_WORKSTATION_0, *PSTAT_WORKSTATION_0, *LPSTAT_WORKSTATION_0;
+
+typedef struct _STAT_SERVER_0 {
+    DWORD sts0_start;
+    DWORD sts0_fopens;
+    DWORD sts0_devopens;
+    DWORD sts0_jobsqueued;
+    DWORD sts0_sopens;
+    DWORD sts0_stimedout;
+    DWORD sts0_serrorout;
+    DWORD sts0_pwerrors;
+    DWORD sts0_permerrors;
+    DWORD sts0_syserrors;
+    DWORD sts0_bytessent_low;
+    DWORD sts0_bytessent_high;
+    DWORD sts0_bytesrcvd_low;
+    DWORD sts0_bytesrcvd_high;
+    DWORD sts0_avresponse;
+    DWORD sts0_reqbufneed;
+    DWORD sts0_bigbufneed;
+} STAT_SERVER_0, *PSTAT_SERVER_0, *LPSTAT_SERVER_0;
+
+NET_API_STATUS WINAPI NetStatisticsGet(LPWSTR server, LPWSTR service, DWORD level,
+                                       DWORD options, LPBYTE *bufptr);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmuse.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmuse.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmuse.h	(revision 16410)
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2007 Tim Schwartz
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef _LMUSE_H
+#define _LMUSE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "lmcons.h"
+#include "lmuseflg.h"
+
+typedef struct _USE_INFO_1
+{
+    LMSTR ui1_local;
+    LMSTR ui1_remote;
+    LMSTR ui1_password;
+    DWORD ui1_status;
+    DWORD ui1_asg_type;
+    DWORD ui1_refcount;
+    DWORD ui1_usecount;
+} USE_INFO_1, *PUSE_INFO_1, *LPUSE_INFO_1;
+
+typedef struct _USE_INFO_2
+{
+    LMSTR ui2_local;
+    LMSTR ui2_remote;
+    LMSTR ui2_password;
+    DWORD ui2_status;
+    DWORD ui2_asg_type;
+    DWORD ui2_refcount;
+    DWORD ui2_usecount;
+    LMSTR ui2_username;
+    LMSTR ui2_domainname;
+} USE_INFO_2, *PUSE_INFO_2, *LPUSE_INFO_2;
+
+NET_API_STATUS WINAPI NetUseAdd(LMSTR,DWORD,LPBYTE,LPDWORD);
+NET_API_STATUS WINAPI NetUseDel(LMSTR,LMSTR,DWORD);
+NET_API_STATUS WINAPI NetUseEnum(LMSTR,DWORD,LPBYTE*,DWORD,LPDWORD,LPDWORD,LPDWORD);
+NET_API_STATUS WINAPI NetUseGetInfo(LMSTR,LMSTR,DWORD,LPBYTE*);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LMUSE_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmuseflg.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmuseflg.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmuseflg.h	(revision 16410)
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2007 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_LMUSEFLG_H
+#define __WINE_LMUSEFLG_H
+
+#define USE_NOFORCE           0
+#define USE_FORCE             1
+#define USE_LOTS_OF_FORCE     2
+
+#endif  /* __WINE_LMUSEFLG_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmwksta.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmwksta.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lmwksta.h	(revision 16410)
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2002 Andriy Palamarchuk
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_LMWKSTA_H
+#define __WINE_LMWKSTA_H
+
+#include <lmcons.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct _WKSTA_TRANSPORT_INFO_0 {
+  DWORD wkti0_quality_of_service;
+  DWORD wkti0_number_of_vcs;
+  LMSTR wkti0_transport_name;
+  LMSTR wkti0_transport_address;
+  BOOL wkti0_wan_ish;
+} WKSTA_TRANSPORT_INFO_0, *PWKSTA_TRANSPORT_INFO_0, *LPWKSTA_TRANSPORT_INFO_0;
+
+typedef struct _WKSTA_USER_INFO_0 {
+    LMSTR  wkui0_username;
+} WKSTA_USER_INFO_0, *PWKSTA_USER_INFO_0, *LPWKSTA_USER_INFO_0;
+
+typedef struct _WKSTA_USER_INFO_1 {
+    LMSTR  wkui1_username;
+    LMSTR  wkui1_logon_domain;
+    LMSTR  wkui1_oth_domains;
+    LMSTR  wkui1_logon_server;
+} WKSTA_USER_INFO_1, *PWKSTA_USER_INFO_1, *LPWKSTA_USER_INFO_1;
+
+typedef struct _WKSTA_USER_INFO_1101 {
+    LMSTR  wkui1101_oth_domains;
+} WKSTA_USER_INFO_1101, *PWKSTA_USER_INFO_1101, *LPWKSTA_USER_INFO_1101;
+
+typedef struct _WKSTA_INFO_100 {
+    DWORD   wki100_platform_id;
+    LMSTR   wki100_computername;
+    LMSTR   wki100_langroup;
+    DWORD   wki100_ver_major;
+    DWORD   wki100_ver_minor;
+} WKSTA_INFO_100, *PWKSTA_INFO_100, *LPWKSTA_INFO_100;
+
+typedef struct _WKSTA_INFO_101 {
+    DWORD   wki101_platform_id;
+    LMSTR   wki101_computername;
+    LMSTR   wki101_langroup;
+    DWORD   wki101_ver_major;
+    DWORD   wki101_ver_minor;
+    LMSTR   wki101_lanroot;
+} WKSTA_INFO_101, *PWKSTA_INFO_101, *LPWKSTA_INFO_101;
+
+typedef struct _WKSTA_INFO_102 {
+    DWORD   wki102_platform_id;
+    LMSTR   wki102_computername;
+    LMSTR   wki102_langroup;
+    DWORD   wki102_ver_major;
+    DWORD   wki102_ver_minor;
+    LMSTR   wki102_lanroot;
+    DWORD   wki102_logged_on_users;
+} WKSTA_INFO_102, *PWKSTA_INFO_102, *LPWKSTA_INFO_102;
+
+/* workstation */
+NET_API_STATUS WINAPI NetWkstaGetInfo(LMSTR,DWORD,LPBYTE*);
+NET_API_STATUS WINAPI NetWkstaSetInfo(LMSTR,DWORD,LPBYTE,LPDWORD);
+NET_API_STATUS WINAPI NetWkstaTransportAdd(LMSTR,DWORD,LPBYTE,LPDWORD);
+NET_API_STATUS WINAPI NetWkstaTransportDel(LMSTR,LMSTR,DWORD);
+NET_API_STATUS WINAPI NetWkstaTransportEnum(LMSTR,DWORD,LPBYTE*,DWORD,LPDWORD,LPDWORD,LPDWORD);
+NET_API_STATUS WINAPI NetWkstaUserGetInfo(LMSTR,DWORD,LPBYTE*);
+NET_API_STATUS WINAPI NetWkstaUserSetInfo(LMSTR,DWORD,LPBYTE,LPDWORD);
+NET_API_STATUS WINAPI NetWkstaUserEnum(LMSTR,DWORD,LPBYTE*,DWORD,LPDWORD,LPDWORD,LPDWORD);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lzexpand.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lzexpand.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/lzexpand.h	(revision 16410)
@@ -0,0 +1,55 @@
+/* Includefile for the decompression library, lzexpand
+ *
+ * Copyright 1996 Marcus Meissner
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_LZEXPAND_H
+#define __WINE_LZEXPAND_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+#define LZERROR_BADINHANDLE	-1	/* -1 */
+#define LZERROR_BADOUTHANDLE	-2	/* -2 */
+#define LZERROR_READ		-3	/* -3 */
+#define LZERROR_WRITE		-4	/* -4 */
+#define LZERROR_GLOBALLOC	-5	/* -5 */
+#define LZERROR_GLOBLOCK	-6	/* -6 */
+#define LZERROR_BADVALUE	-7	/* -7 */
+#define LZERROR_UNKNOWNALG	-8	/* -8 */
+
+VOID        WINAPI LZDone(void);
+LONG        WINAPI CopyLZFile(HFILE,HFILE);
+HFILE       WINAPI LZOpenFileA(LPSTR,LPOFSTRUCT,WORD);
+HFILE       WINAPI LZOpenFileW(LPWSTR,LPOFSTRUCT,WORD);
+#define     LZOpenFile WINELIB_NAME_AW(LZOpenFile)
+INT         WINAPI LZRead(INT,LPSTR,INT);
+INT         WINAPI LZStart(void);
+void        WINAPI LZClose(HFILE);
+LONG        WINAPI LZCopy(HFILE,HFILE);
+HFILE       WINAPI LZInit(HFILE);
+LONG        WINAPI LZSeek(HFILE,LONG,INT);
+INT         WINAPI GetExpandedNameA(LPSTR,LPSTR);
+INT         WINAPI GetExpandedNameW(LPWSTR,LPWSTR);
+#define     GetExpandedName WINELIB_NAME_AW(GetExpandedName)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif  /* __WINE_LZEXPAND_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapi.h	(revision 16410)
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2000 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef MAPI_H
+#define MAPI_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Some types */
+
+#ifndef __LHANDLE
+#define __LHANDLE
+typedef unsigned long           LHANDLE, *LPLHANDLE;
+#endif
+#define lhSessionNull           ((LHANDLE)0)
+
+#ifndef WINE_FLAGS_DEFINED
+#define WINE_FLAGS_DEFINED
+typedef unsigned long           FLAGS;
+#endif
+typedef unsigned long*          LPULONG;
+
+typedef struct
+{
+    ULONG ulReserved;
+    ULONG flFlags;
+    ULONG nPosition;
+    LPSTR lpszPathName;
+    LPSTR lpszFileName;
+    LPVOID lpFileType;
+} MapiFileDesc, *lpMapiFileDesc;
+
+#ifndef MAPI_ORIG
+#define MAPI_ORIG   0
+#define MAPI_TO     1
+#define MAPI_CC     2
+#define MAPI_BCC    3
+#endif
+
+typedef struct
+{
+    ULONG ulReserved;
+    ULONG ulRecipClass;
+    LPSTR lpszName;
+    LPSTR lpszAddress;
+    ULONG ulEIDSize;
+    LPVOID lpEntryID;
+} MapiRecipDesc, *lpMapiRecipDesc;
+
+typedef struct
+{
+    ULONG ulReserved;
+    LPSTR lpszSubject;
+    LPSTR lpszNoteText;
+    LPSTR lpszMessageType;
+    LPSTR lpszDateReceived;
+    LPSTR lpszConversationID;
+    FLAGS flFlags;
+    lpMapiRecipDesc lpOriginator;
+    ULONG nRecipCount;
+    lpMapiRecipDesc lpRecips;
+    ULONG nFileCount;
+    lpMapiFileDesc lpFiles;
+} MapiMessage, *lpMapiMessage;
+
+
+/* Error codes */
+
+#ifndef SUCCESS_SUCCESS
+#define SUCCESS_SUCCESS                 0L
+#endif
+
+#define MAPI_USER_ABORT                 1
+#define MAPI_E_USER_ABORT               MAPI_USER_ABORT
+#define MAPI_E_FAILURE                  2
+#define MAPI_E_LOGON_FAILURE            3
+#define MAPI_E_LOGIN_FAILURE            MAPI_E_LOGON_FAILURE
+#define MAPI_E_DISK_FULL                4
+#define MAPI_E_INSUFFICIENT_MEMORY      5
+#define MAPI_E_ACCESS_DENIED            6
+#define MAPI_E_TOO_MANY_SESSIONS        8
+#define MAPI_E_TOO_MANY_FILES           9
+#define MAPI_E_TOO_MANY_RECIPIENTS      10
+#define MAPI_E_ATTACHMENT_NOT_FOUND     11
+#define MAPI_E_ATTACHMENT_OPEN_FAILURE  12
+#define MAPI_E_ATTACHMENT_WRITE_FAILURE 13
+#define MAPI_E_UNKNOWN_RECIPIENT        14
+#define MAPI_E_BAD_RECIPTYPE            15
+#define MAPI_E_NO_MESSAGES              16
+#define MAPI_E_INVALID_MESSAGE          17
+#define MAPI_E_TEXT_TOO_LARGE           18
+#define MAPI_E_INVALID_SESSION          19
+#define MAPI_E_TYPE_NOT_SUPPORTED       20
+#define MAPI_E_AMBIGUOUS_RECIPIENT      21
+#define MAPI_E_AMBIG_RECIP              MAPI_E_AMBIGUOUS_RECIPIENT
+#define MAPI_E_MESSAGE_IN_USE           22
+#define MAPI_E_NETWORK_FAILURE          23
+#define MAPI_E_INVALID_EDITFIELDS       24
+#define MAPI_E_INVALID_RECIPS           25
+#define MAPI_E_NOT_SUPPORTED            26
+
+
+/* MAPILogon */
+
+#ifndef MAPI_LOGON_UI
+#define MAPI_LOGON_UI           0x00000001
+#endif
+#ifndef MAPI_NEW_SESSION
+#define MAPI_NEW_SESSION        0x00000002
+#endif
+#ifndef MAPI_EXTENDED
+#define MAPI_EXTENDED           0x00000020
+#endif
+#ifndef MAPI_FORCE_DOWNLOAD
+#define MAPI_FORCE_DOWNLOAD     0x00001000
+#endif
+#ifndef MAPI_PASSWORD_UI
+#define MAPI_PASSWORD_UI        0x00020000
+#endif
+
+
+/* MAPISendMail */
+
+#define MAPI_DIALOG             0x00000008
+
+
+/* API typedefs and prototypes */
+
+typedef ULONG (WINAPI MAPIADDRESS)(LHANDLE,ULONG_PTR,LPSTR,ULONG,LPSTR,ULONG,lpMapiRecipDesc,FLAGS,ULONG,LPULONG,lpMapiRecipDesc*);
+typedef MAPIADDRESS *LPMAPIADDRESS;
+MAPIADDRESS MAPIAddress;
+
+typedef ULONG (WINAPI MAPIDELETEMAIL)(LHANDLE,ULONG_PTR,LPSTR,FLAGS,ULONG);
+typedef MAPIDELETEMAIL *LPMAPIDELETEMAIL;
+MAPIDELETEMAIL MAPIDeleteMail;
+
+typedef ULONG (WINAPI MAPIDETAILS)(LHANDLE,ULONG_PTR,lpMapiRecipDesc,FLAGS,ULONG);
+typedef MAPIDETAILS *LPMAPIDETAILS;
+MAPIDETAILS MAPIDetails;
+
+typedef ULONG (WINAPI MAPIFINDNEXT)(LHANDLE,ULONG_PTR,LPSTR,LPSTR,FLAGS,ULONG,LPSTR);
+typedef MAPIFINDNEXT *LPMAPIFINDNEXT;
+MAPIFINDNEXT MAPIFindNext;
+
+#ifndef MAPIFREEBUFFER_DEFINED
+#define MAPIFREEBUFFER_DEFINED
+typedef ULONG (WINAPI MAPIFREEBUFFER)(LPVOID);
+typedef MAPIFREEBUFFER *LPMAPIFREEBUFFER;
+MAPIFREEBUFFER MAPIFreeBuffer;
+#endif
+
+typedef ULONG (WINAPI MAPILOGOFF)(LHANDLE,ULONG_PTR,FLAGS,ULONG);
+typedef MAPILOGOFF *LPMAPILOGOFF;
+MAPILOGOFF MAPILogoff;
+
+typedef ULONG (WINAPI MAPILOGON)(ULONG_PTR,LPSTR,LPSTR,FLAGS,ULONG,LPLHANDLE);
+typedef MAPILOGON *LPMAPILOGON;
+MAPILOGON MAPILogon;
+
+typedef ULONG (WINAPI MAPIREADMAIL)(LHANDLE,ULONG_PTR,LPSTR,FLAGS,ULONG,lpMapiMessage);
+typedef MAPIREADMAIL *LPMAPIREADMAIL;
+MAPIREADMAIL MAPIReadMail;
+
+typedef ULONG (WINAPI MAPIRESOLVENAME)(LHANDLE,ULONG_PTR,LPSTR,FLAGS,ULONG,lpMapiRecipDesc*);
+typedef MAPIRESOLVENAME *LPMAPIRESOLVENAME;
+MAPIRESOLVENAME MAPIResolveName;
+
+typedef ULONG (WINAPI MAPISAVEMAIL)(LHANDLE,ULONG_PTR,lpMapiMessage,FLAGS,ULONG,LPSTR);
+typedef MAPISAVEMAIL *LPMAPISAVEMAIL;
+MAPISAVEMAIL MAPISaveMail;
+
+typedef ULONG (WINAPI MAPISENDDOCUMENTS)(ULONG_PTR,LPSTR,LPSTR,LPSTR,ULONG);
+typedef MAPISENDDOCUMENTS *LPMAPISENDDOCUMENTS;
+MAPISENDDOCUMENTS MAPISendDocuments;
+
+typedef ULONG (WINAPI MAPISENDMAIL)(LHANDLE,ULONG_PTR,lpMapiMessage,FLAGS,ULONG);
+typedef MAPISENDMAIL *LPMAPISENDMAIL;
+MAPISENDMAIL MAPISendMail;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* MAPI_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapicode.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapicode.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapicode.h	(revision 16410)
@@ -0,0 +1,114 @@
+/*
+ * Status codes returned by MAPI
+ *
+ * Copyright (C) 2002 Aric Stewart
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef MAPICODE_H
+#define MAPICODE_H
+
+#include <winerror.h>
+
+#define MAKE_MAPI_SCODE(sev,fac,code) \
+    ((SCODE)(((ULONG)(sev)<<31)|((ULONG)(fac)<<16)|((ULONG)(code))))
+
+#define MAKE_MAPI_E(e) (MAKE_MAPI_SCODE(1,FACILITY_ITF,(e)))
+#define MAKE_MAPI_S(e) (MAKE_MAPI_SCODE(0,FACILITY_ITF,(e)))
+
+#ifndef SUCCESS_SUCCESS
+#define SUCCESS_SUCCESS     0L
+#endif
+
+/* Errors */
+#define MAPI_E_ACCOUNT_DISABLED            ((SCODE)0x80040124)
+#define MAPI_E_AMBIGUOUS_RECIP             ((SCODE)0x80040700)
+#define MAPI_E_BAD_CHARWIDTH               ((SCODE)0x80040103)
+#define MAPI_E_BAD_COLUMN                  ((SCODE)0x80040118)
+#define MAPI_E_BAD_VALUE                   ((SCODE)0x80040301)
+#define MAPI_E_BUSY                        ((SCODE)0x8004010B)
+#define MAPI_E_CALL_FAILED                 E_FAIL
+#define MAPI_E_CANCEL                      ((SCODE)0x80040501)
+#define MAPI_E_COLLISION                   ((SCODE)0x80040604)
+#define MAPI_E_COMPUTED                    ((SCODE)0x8004011A)
+#define MAPI_E_CORRUPT_DATA                ((SCODE)0x8004011B)
+#define MAPI_E_CORRUPT_STORE               ((SCODE)0x80040600)
+#define MAPI_E_DECLINE_COPY                ((SCODE)0x80040306)
+#define MAPI_E_DISK_ERROR                  ((SCODE)0x80040116)
+#define MAPI_E_END_OF_SESSION              ((SCODE)0x80040200)
+#define MAPI_E_EXTENDED_ERROR              ((SCODE)0x80040119)
+#define MAPI_E_FAILONEPROVIDER             ((SCODE)0x8004011D)
+#define MAPI_E_FOLDER_CYCLE                ((SCODE)0x8004060B)
+#define MAPI_E_HAS_FOLDERS                 ((SCODE)0x80040609)
+#define MAPI_E_HAS_MESSAGES                ((SCODE)0x8004060A)
+#define MAPI_E_INTERFACE_NOT_SUPPORTED     E_NOINTERFACE
+#define MAPI_E_INVALID_ACCESS_TIME         ((SCODE)0x80040123)
+#define MAPI_E_INVALID_BOOKMARK            ((SCODE)0x80040405)
+#define MAPI_E_INVALID_ENTRYID             ((SCODE)0x80040107)
+#define MAPI_E_INVALID_OBJECT              ((SCODE)0x80040108)
+#define MAPI_E_INVALID_PARAMETER           E_INVALIDARG
+#define MAPI_E_INVALID_TYPE                ((SCODE)0x80040302)
+#define MAPI_E_INVALID_WORKSTATION_ACCOUNT ((SCODE)0x80040122)
+#define MAPI_E_LOGON_FAILED                ((SCODE)0x80040111)
+#define MAPI_E_MISSING_REQUIRED_COLUMN     ((SCODE)0x80040202)
+#define MAPI_E_NETWORK_ERROR               ((SCODE)0x80040115)
+#define MAPI_E_NO_ACCESS                   E_ACCESSDENIED
+#define MAPI_E_NON_STANDARD                ((SCODE)0x80040606)
+#define MAPI_E_NO_RECIPIENTS               ((SCODE)0x80040607)
+#define MAPI_E_NO_SUPPORT                  ((SCODE)0x80040102)
+#define MAPI_E_NO_SUPPRESS                 ((SCODE)0x80040602)
+#define MAPI_E_NOT_ENOUGH_DISK             ((SCODE)0x8004010D)
+#define MAPI_E_NOT_ENOUGH_MEMORY           E_OUTOFMEMORY
+#define MAPI_E_NOT_ENOUGH_RESOURCES        ((SCODE)0x8004010E)
+#define MAPI_E_NOT_FOUND                   ((SCODE)0x8004010F)
+#define MAPI_E_NOT_INITIALIZED             ((SCODE)0x80040605)
+#define MAPI_E_NOT_IN_QUEUE                ((SCODE)0x80040601)
+#define MAPI_E_NOT_ME                      ((SCODE)0x80040502)
+#define MAPI_E_OBJECT_CHANGED              ((SCODE)0x80040109)
+#define MAPI_E_OBJECT_DELETED              ((SCODE)0x8004010A)
+#define MAPI_E_PASSWORD_CHANGE_REQUIRED    ((SCODE)0x80040120)
+#define MAPI_E_PASSWORD_EXPIRED            ((SCODE)0x80040121)
+#define MAPI_E_SESSION_LIMIT               ((SCODE)0x80040112)
+#define MAPI_E_STRING_TOO_LONG             ((SCODE)0x80040105)
+#define MAPI_E_SUBMITTED                   ((SCODE)0x80040608)
+#define MAPI_E_TABLE_EMPTY                 ((SCODE)0x80040402)
+#define MAPI_E_TABLE_TOO_BIG               ((SCODE)0x80040403)
+#define MAPI_E_TIMEOUT                     ((SCODE)0x80040401)
+#define MAPI_E_TOO_BIG                     ((SCODE)0x80040305)
+#define MAPI_E_TOO_COMPLEX                 ((SCODE)0x80040117)
+#define MAPI_E_TYPE_NO_SUPPORT             ((SCODE)0x80040303)
+#define MAPI_E_UNABLE_TO_ABORT             ((SCODE)0x80040114)
+#define MAPI_E_UNABLE_TO_COMPLETE          ((SCODE)0x80040400)
+#define MAPI_E_UNCONFIGURED                ((SCODE)0x8004011C)
+#define MAPI_E_UNEXPECTED_ID               ((SCODE)0x80040307)
+#define MAPI_E_UNEXPECTED_TYPE             ((SCODE)0x80040304)
+#define MAPI_E_UNKNOWN_CPID                ((SCODE)0x8004011E)
+#define MAPI_E_UNKNOWN_ENTRYID             ((SCODE)0x80040201)
+#define MAPI_E_UNKNOWN_FLAGS               ((SCODE)0x80040106)
+#define MAPI_E_UNKNOWN_LCID                ((SCODE)0x8004011F)
+#define MAPI_E_USER_CANCEL                 ((SCODE)0x80040113)
+#define MAPI_E_VERSION                     ((SCODE)0x80040110)
+#define MAPI_E_WAIT                        ((SCODE)0x80040500)
+
+/* Warnings */
+#define MAPI_W_APPROX_COUNT                ((SCODE)0x00040482)
+#define MAPI_W_CANCEL_MESSAGE              ((SCODE)0x00040580)
+#define MAPI_W_ERRORS_RETURNED             ((SCODE)0x00040380)
+#define MAPI_W_NO_SERVICE                  ((SCODE)0x00040203)
+#define MAPI_W_PARTIAL_COMPLETION          ((SCODE)0x00040680)
+#define MAPI_W_POSITION_CHANGED            ((SCODE)0x00040481)
+
+#endif /* MAPICODE_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapidefs.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapidefs.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapidefs.h	(revision 16410)
@@ -0,0 +1,952 @@
+/*
+ * Copyright (C) 1998 Justin Bradford
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef MAPIDEFS_H
+#define MAPIDEFS_H
+
+#ifndef __WINESRC__
+# include <windows.h>
+#endif
+
+#include <winerror.h>
+#include <objbase.h>
+#include <stddef.h>
+
+/* Some types from other headers */
+#ifndef __LHANDLE
+#define __LHANDLE
+typedef ULONG_PTR LHANDLE, *LPLHANDLE;
+#endif
+
+#ifndef _tagCY_DEFINED
+#define _tagCY_DEFINED
+typedef union tagCY
+{
+    struct
+    {
+#ifdef WORDS_BIGENDIAN
+        LONG  Hi;
+        ULONG Lo;
+#else
+        ULONG Lo;
+        LONG  Hi;
+#endif
+    } DUMMYSTRUCTNAME;
+    LONGLONG int64;
+} CY;
+typedef CY CURRENCY;
+#endif /* _tagCY_DEFINED */
+
+
+#ifndef _FILETIME_
+#define _FILETIME_
+typedef struct _FILETIME
+{
+#ifdef WORDS_BIGENDIAN
+    DWORD dwHighDateTime;
+    DWORD dwLowDateTime;
+#else
+    DWORD dwLowDateTime;
+    DWORD dwHighDateTime;
+#endif
+} FILETIME, *PFILETIME, *LPFILETIME;
+#endif
+
+/* Memory allocation routines */
+typedef SCODE (WINAPI ALLOCATEBUFFER)(ULONG,LPVOID*);
+typedef SCODE (WINAPI ALLOCATEMORE)(ULONG,LPVOID,LPVOID*);
+typedef ULONG (WINAPI FREEBUFFER)(LPVOID);
+
+typedef ALLOCATEBUFFER *LPALLOCATEBUFFER;
+typedef ALLOCATEMORE *LPALLOCATEMORE;
+typedef FREEBUFFER *LPFREEBUFFER;
+
+/* MAPI exposed interfaces */
+typedef const IID *LPCIID;
+
+typedef struct IAddrBook IAddrBook;
+typedef IAddrBook *LPADRBOOK;
+typedef struct IABContainer IABContainer;
+typedef IABContainer *LPABCONT;
+typedef struct IAttach IAttach;
+typedef IAttach *LPATTACH;
+typedef struct IDistList IDistList;
+typedef IDistList *LPDISTLIST;
+typedef struct IMailUser IMailUser;
+typedef IMailUser *LPMAILUSER;
+typedef struct IMAPIAdviseSink *LPMAPIADVISESINK;
+typedef struct IMAPIContainer IMAPIContainer;
+typedef IMAPIContainer *LPMAPICONTAINER;
+typedef struct IMAPIFolder IMAPIFolder;
+typedef IMAPIFolder *LPMAPIFOLDER;
+typedef struct IMAPIProgress IMAPIProgress;
+typedef IMAPIProgress *LPMAPIPROGRESS;
+typedef struct IMAPIStatus IMAPIStatus;
+typedef IMAPIStatus *LPMAPISTATUS;
+typedef struct IMessage IMessage;
+typedef IMessage *LPMESSAGE;
+typedef struct IMsgStore IMsgStore;
+typedef IMsgStore *LPMDB;
+typedef struct IProfSect IProfSect;
+typedef IProfSect *LPPROFSECT;
+typedef struct IProviderAdmin IProviderAdmin;
+typedef IProviderAdmin *LPPROVIDERADMIN;
+
+#ifndef MAPI_DIM
+# define MAPI_DIM 1 /* Default to one dimension for variable length arrays */
+#endif
+
+/* Flags for abFlags[0] */
+#define MAPI_NOTRESERVED 0x08
+#define MAPI_NOW         0x10
+#define MAPI_THISSESSION 0x20
+#define MAPI_NOTRECIP    0x40
+#define MAPI_SHORTTERM   0x80
+
+/* Flags for abFlags[1]  */
+#define MAPI_COMPOUND    0x80
+
+typedef struct _ENTRYID
+{
+    BYTE abFlags[4];
+    BYTE ab[MAPI_DIM];
+} ENTRYID, *LPENTRYID;
+
+/* MAPI GUID's */
+typedef struct _MAPIUID
+{
+    BYTE ab[sizeof(GUID)];
+} MAPIUID, *LPMAPIUID;
+
+#define IsEqualMAPIUID(pl,pr) (!memcmp((pl),(pr),sizeof(MAPIUID)))
+
+#define MAPI_ONE_OFF_UID { 0x81,0x2b,0x1f,0xa4,0xbe,0xa3,0x10,0x19,0x9d,0x6e, \
+                           0x00,0xdd,0x01,0x0f,0x54,0x02 }
+#define MAPI_ONE_OFF_UNICODE      0x8000
+#define MAPI_ONE_OFF_NO_RICH_INFO 0x0001
+
+/* Object types */
+#define MAPI_STORE    1U
+#define MAPI_ADDRBOOK 2U
+#define MAPI_FOLDER   3U
+#define MAPI_ABCONT   4U
+#define MAPI_MESSAGE  5U
+#define MAPI_MAILUSER 6U
+#define MAPI_ATTACH   7U
+#define MAPI_DISTLIST 8U
+#define MAPI_PROFSECT 9U
+#define MAPI_STATUS   10U
+#define MAPI_SESSION  11U
+#define MAPI_FORMINFO 12U
+
+/* Flags for various calls */
+#define MAPI_MODIFY                   0x00000001U /* Object can be modified */
+#define MAPI_ACCESS_MODIFY            MAPI_MODIFY /* Want write access */
+#define MAPI_ACCESS_READ              0x00000002U /* Want read access */
+#define MAPI_ACCESS_DELETE            0x00000004U /* Want delete access */
+#define MAPI_ACCESS_CREATE_HIERARCHY  0x00000008U
+#define MAPI_ACCESS_CREATE_CONTENTS   0x00000010U
+#define MAPI_ACCESS_CREATE_ASSOCIATED 0x00000020U
+#define MAPI_UNICODE                  0x80000000U /* Strings in this call are Unicode */
+
+#if defined (UNICODE) || defined (__WINESRC__)
+#define fMapiUnicode MAPI_UNICODE
+#else
+#define fMapiUnicode 0U
+#endif
+
+/* Types of message receivers */
+#ifndef MAPI_ORIG
+#define MAPI_ORIG      0          /* The original author */
+#define MAPI_TO        1          /* The primary message receiver */
+#define MAPI_CC        2          /* A carbon copy receiver */
+#define MAPI_BCC       3          /* A blind carbon copy receiver */
+#define MAPI_P1        0x10000000 /* A message resend */
+#define MAPI_SUBMITTED 0x80000000 /* This message has already been sent */
+#endif
+
+#ifndef cchProfileNameMax
+#define cchProfileNameMax 64 /* Maximum length of a profile name */
+#define cchProfilePassMax 64 /* Maximum length of a profile password */
+#endif
+
+/* Properties: The are the contents of cells in MAPI tables, as well as the
+ * values returned when object properties are queried.
+ */
+
+/* Property types */
+#define PT_UNSPECIFIED 0U
+#define PT_NULL        1U
+#define PT_I2          2U
+#define PT_SHORT       PT_I2
+#define PT_LONG        3U
+#define PT_I4          PT_LONG
+#define PT_R4          4U
+#define PT_FLOAT       PT_R4
+#define PT_DOUBLE      5U
+#define PT_R8          PT_DOUBLE
+#define PT_CURRENCY    6U
+#define PT_APPTIME     7U
+#define PT_ERROR       10U
+#define PT_BOOLEAN     11U
+#define PT_OBJECT      13U
+#define PT_I8          20U
+#define PT_LONGLONG    PT_I8
+#define PT_STRING8     30U
+#define PT_UNICODE     31U
+#define PT_SYSTIME     64U
+#define PT_CLSID       72U
+#define PT_BINARY      258U
+
+#define MV_FLAG     0x1000 /* This property type is multi-valued (an array) */
+#define MV_INSTANCE 0x2000
+#define MVI_FLAG    (MV_FLAG|MV_INSTANCE)
+#define MVI_PROP(t) ((t)|MVI_FLAG)
+
+#ifndef WINE_NO_UNICODE_MACROS
+# ifdef UNICODE
+# define PT_TSTRING      PT_UNICODE
+# define PT_MV_TSTRING   (MV_FLAG|PT_UNICODE)
+# define LPSZ            lpszW
+# define LPPSZ           lppszW
+# define MVSZ            MVszW
+# else
+# define PT_TSTRING      PT_STRING8
+# define PT_MV_TSTRING   (MV_FLAG|PT_STRING8)
+# define LPSZ            lpszA
+# define LPPSZ           lppszA
+# define MVSZ            MVszA
+# endif
+#endif
+
+#define PROP_TYPE_MASK  0xFFFFU
+#define PROP_TYPE(t)    ((t) & PROP_TYPE_MASK)
+#define PROP_ID(t)      ((t) >> 16)
+#define PROP_TAG(t,id)  (((id) << 16) | t)
+#define PROP_ID_NULL    0
+#define PROP_ID_INVALID 0xFFFF
+#define PR_NULL         PROP_TAG(PT_NULL, PROP_ID_NULL)
+
+#define CHANGE_PROP_TYPE(t,typ) ((0xFFFF0000 & t) | typ)
+
+/* Multi-valued property types */
+#define PT_MV_I2       (MV_FLAG|PT_I2)
+#define PT_MV_SHORT    PT_MV_I2
+#define PT_MV_LONG     (MV_FLAG|PT_LONG)
+#define PT_MV_I4       PT_MV_LONG
+#define PT_MV_R4       (MV_FLAG|PT_R4)
+#define PT_MV_FLOAT    PT_MV_R4
+#define PT_MV_DOUBLE   (MV_FLAG|PT_DOUBLE)
+#define PT_MV_R8       PT_MV_DOUBLE
+#define PT_MV_CURRENCY (MV_FLAG|PT_CURRENCY)
+#define PT_MV_APPTIME  (MV_FLAG|PT_APPTIME)
+#define PT_MV_SYSTIME  (MV_FLAG|PT_SYSTIME)
+#define PT_MV_STRING8  (MV_FLAG|PT_STRING8)
+#define PT_MV_BINARY   (MV_FLAG|PT_BINARY)
+#define PT_MV_UNICODE  (MV_FLAG|PT_UNICODE)
+#define PT_MV_CLSID    (MV_FLAG|PT_CLSID)
+#define PT_MV_I8       (MV_FLAG|PT_I8)
+#define PT_MV_LONGLONG PT_MV_I8
+
+
+/* The property tag structure. This describes a list of columns */
+typedef struct _SPropTagArray
+{
+    ULONG cValues;              /* Number of elements in aulPropTag */
+    ULONG aulPropTag[MAPI_DIM]; /* Property tags */
+} SPropTagArray, *LPSPropTagArray;
+
+#define CbNewSPropTagArray(c) (offsetof(SPropTagArray,aulPropTag)+(c)*sizeof(ULONG))
+#define CbSPropTagArray(p)    CbNewSPropTagArray((p)->cValues)
+#define SizedSPropTagArray(n,id) \
+    struct _SPropTagArray_##id { ULONG cValues; ULONG aulPropTag[n]; } id
+
+/* Multi-valued PT_APPTIME property value */
+typedef struct _SAppTimeArray
+{
+    ULONG   cValues; /* Number of doubles in lpat */
+    double *lpat;    /* Pointer to double array of length cValues */
+} SAppTimeArray;
+
+/* PT_BINARY property value */
+typedef struct _SBinary
+{
+    ULONG  cb;  /* Number of bytes in lpb */
+    LPBYTE lpb; /* Pointer to byte array of length cb */
+} SBinary, *LPSBinary;
+
+/* Multi-valued PT_BINARY property value */
+typedef struct _SBinaryArray
+{
+    ULONG    cValues; /* Number of SBinarys in lpbin */
+    SBinary *lpbin;   /* Pointer to SBinary array of length cValues */
+} SBinaryArray;
+
+typedef SBinaryArray ENTRYLIST, *LPENTRYLIST;
+
+/* Multi-valued PT_CY property value */
+typedef struct _SCurrencyArray
+{
+    ULONG  cValues; /* Number of CYs in lpcu */
+    CY    *lpcur;   /* Pointer to CY array of length cValues */
+} SCurrencyArray;
+
+/* Multi-valued PT_SYSTIME property value */
+typedef struct _SDateTimeArray
+{
+    ULONG     cValues; /* Number of FILETIMEs in lpft */
+    FILETIME *lpft;    /* Pointer to FILETIME array of length cValues */
+} SDateTimeArray;
+
+/* Multi-valued PT_DOUBLE property value */
+typedef struct _SDoubleArray
+{
+    ULONG   cValues; /* Number of doubles in lpdbl */
+    double *lpdbl;   /* Pointer to double array of length cValues */
+} SDoubleArray;
+
+/* Multi-valued PT_CLSID property value */
+typedef struct _SGuidArray
+{
+    ULONG cValues; /* Number of GUIDs in lpguid */
+    GUID *lpguid;  /* Pointer to GUID array of length cValues */
+} SGuidArray;
+
+/* Multi-valued PT_LONGLONG property value */
+typedef struct _SLargeIntegerArray
+{
+    ULONG          cValues; /* Number of long64s in lpli */
+    LARGE_INTEGER *lpli;    /* Pointer to long64 array of length cValues */
+} SLargeIntegerArray;
+
+/* Multi-valued PT_LONG property value */
+typedef struct _SLongArray
+{
+    ULONG  cValues; /* Number of longs in lpl */
+    LONG  *lpl;     /* Pointer to long array of length cValues */
+} SLongArray;
+
+/* Multi-valued PT_STRING8 property value */
+typedef struct _SLPSTRArray
+{
+    ULONG  cValues; /* Number of Ascii strings in lppszA */
+    LPSTR *lppszA;  /* Pointer to Ascii string array of length cValues */
+} SLPSTRArray;
+
+/* Multi-valued PT_FLOAT property value */
+typedef struct _SRealArray
+{
+    ULONG cValues; /* Number of floats in lpflt */
+    float *lpflt;  /* Pointer to float array of length cValues */
+} SRealArray;
+
+/* Multi-valued PT_SHORT property value */
+typedef struct _SShortArray
+{
+    ULONG      cValues; /* Number of shorts in lpb */
+    short int *lpi;     /* Pointer to short array of length cValues */
+} SShortArray;
+
+/* Multi-valued PT_UNICODE property value */
+typedef struct _SWStringArray
+{
+    ULONG   cValues; /* Number of Unicode strings in lppszW */
+    LPWSTR *lppszW;  /* Pointer to Unicode string array of length cValues */
+} SWStringArray;
+
+/* A property value */
+typedef union _PV
+{
+    short int          i;
+    LONG               l;
+    ULONG              ul;
+    float              flt;
+    double             dbl;
+    unsigned short     b;
+    CY                 cur;
+    double             at;
+    FILETIME           ft;
+    LPSTR              lpszA;
+    SBinary            bin;
+    LPWSTR             lpszW;
+    LPGUID             lpguid;
+    LARGE_INTEGER      li;
+    SShortArray        MVi;
+    SLongArray         MVl;
+    SRealArray         MVflt;
+    SDoubleArray       MVdbl;
+    SCurrencyArray     MVcur;
+    SAppTimeArray      MVat;
+    SDateTimeArray     MVft;
+    SBinaryArray       MVbin;
+    SLPSTRArray        MVszA;
+    SWStringArray      MVszW;
+    SGuidArray         MVguid;
+    SLargeIntegerArray MVli;
+    SCODE              err;
+    LONG               x;
+} __UPV;
+
+/* Property value structure. This is essentially a mini-Variant */
+typedef struct _SPropValue
+{
+    ULONG     ulPropTag;  /* The property type */
+    ULONG     dwAlignPad; /* Alignment, treat as reserved */
+    union _PV Value;      /* The property value */
+} SPropValue, *LPSPropValue;
+
+/* Structure describing a table row (a collection of property values) */
+typedef struct _SRow
+{
+    ULONG        ulAdrEntryPad; /* Padding, treat as reserved */
+    ULONG        cValues;       /* Count of property values in lpProbs */
+    LPSPropValue lpProps;       /* Pointer to an array of property values of length cValues */
+} SRow, *LPSRow;
+
+/* Structure describing a set of table rows */
+typedef struct _SRowSet
+{
+    ULONG cRows;          /* Count of rows in aRow */
+    SRow  aRow[MAPI_DIM]; /* Array of rows of length cRows */
+} SRowSet, *LPSRowSet;
+
+#define CbNewSRowSet(c) (offsetof(SRowSet,aRow)+(c)*sizeof(SRow))
+#define CbSRowSet(p)    CbNewSRowSet((p)->cRows)
+#define SizedSRowSet(n,id) \
+    struct _SRowSet_##id { ULONG cRows; SRow aRow[n]; } id
+
+/* Structure describing a problem with a property */
+typedef struct _SPropProblem
+{
+    ULONG ulIndex;   /* Index of the property */
+    ULONG ulPropTag; /* Property tag of the property */
+    SCODE scode;     /* Error code of the problem */
+} SPropProblem, *LPSPropProblem;
+
+/* A collection of property problems */
+typedef struct _SPropProblemArray
+{
+    ULONG        cProblem;           /* Number of problems in aProblem */
+    SPropProblem aProblem[MAPI_DIM]; /* Array of problems of length cProblem */
+} SPropProblemArray, *LPSPropProblemArray;
+
+/* FPropContainsProp flags */
+#define FL_FULLSTRING     0x00000ul /* Exact string match */
+#define FL_SUBSTRING      0x00001ul /* Substring match */
+#define FL_PREFIX         0x00002ul /* Prefix match */
+#define FL_IGNORECASE     0x10000ul /* Case insensitive */
+#define FL_IGNORENONSPACE 0x20000ul /* Ignore non spacing characters */
+#define FL_LOOSE          0x40000ul /* Try very hard to match */
+
+
+/* Table types returned by IMAPITable_GetStatus() */
+#define TBLTYPE_SNAPSHOT 0U /* Table is fixed at creation time and contents do not change */
+#define TBLTYPE_KEYSET   1U /* Table has a fixed number of rows, but row values may change */
+#define TBLTYPE_DYNAMIC  2U /* Table values and the number of rows may change */
+
+/* Table status returned by IMAPITable_GetStatus() */
+#define TBLSTAT_COMPLETE       0U  /* All operations have completed (normal status) */
+#define TBLSTAT_QCHANGED       7U  /* Table data has changed as expected */
+#define TBLSTAT_SORTING        9U  /* Table is being asynchronously sorted */
+#define TBLSTAT_SORT_ERROR     10U /* An error occurred while sorting the table */
+#define TBLSTAT_SETTING_COLS   11U /* Table columns are being asynchronously changed */
+#define TBLSTAT_SETCOL_ERROR   13U /* An error occurred during column changing */
+#define TBLSTAT_RESTRICTING    14U /* Table rows are being asynchronously restricted */
+#define TBLSTAT_RESTRICT_ERROR 15U /* An error occurred during row restriction */
+
+/* Flags for IMAPITable operations that can be asynchronous */
+#define TBL_NOWAIT 1U         /* Perform the operation asynchronously */
+#define TBL_BATCH  2U         /* Perform the operation when the results are needed */
+#define TBL_ASYNC  TBL_NOWAIT /* Synonym for TBL_NOWAIT */
+
+/* Flags for IMAPITable_FindRow() */
+#define DIR_BACKWARD 1U /* Read rows backwards from the start bookmark */
+
+/* Table bookmarks */
+typedef ULONG BOOKMARK;
+
+#define BOOKMARK_BEGINNING ((BOOKMARK)0) /* The first row */
+#define BOOKMARK_CURRENT   ((BOOKMARK)1) /* The curent table row */
+#define BOOKMARK_END       ((BOOKMARK)2) /* The last row */
+
+/* Row restrictions */
+typedef struct _SRestriction* LPSRestriction;
+
+typedef struct _SAndRestriction
+{
+    ULONG          cRes;
+    LPSRestriction lpRes;
+} SAndRestriction;
+
+typedef struct _SBitMaskRestriction
+{
+    ULONG relBMR;
+    ULONG ulPropTag;
+    ULONG ulMask;
+} SBitMaskRestriction;
+
+typedef struct _SCommentRestriction
+{
+    ULONG          cValues;
+    LPSRestriction lpRes;
+    LPSPropValue   lpProp;
+} SCommentRestriction;
+
+#define RELOP_LT 0U
+#define RELOP_LE 1U
+#define RELOP_GT 2U
+#define RELOP_GE 3U
+#define RELOP_EQ 4U
+#define RELOP_NE 5U
+#define RELOP_RE 6U
+
+typedef struct _SComparePropsRestriction
+{
+    ULONG relop;
+    ULONG ulPropTag1;
+    ULONG ulPropTag2;
+} SComparePropsRestriction;
+
+typedef struct _SContentRestriction
+{
+    ULONG        ulFuzzyLevel;
+    ULONG        ulPropTag;
+    LPSPropValue lpProp;
+} SContentRestriction;
+
+typedef struct _SExistRestriction
+{
+    ULONG ulReserved1;
+    ULONG ulPropTag;
+    ULONG ulReserved2;
+} SExistRestriction;
+
+typedef struct _SNotRestriction
+{
+    ULONG          ulReserved;
+    LPSRestriction lpRes;
+} SNotRestriction;
+
+typedef struct _SOrRestriction
+{
+    ULONG          cRes;
+    LPSRestriction lpRes;
+} SOrRestriction;
+
+typedef struct _SPropertyRestriction
+{
+    ULONG        relop;
+    ULONG        ulPropTag;
+    LPSPropValue lpProp;
+} SPropertyRestriction;
+
+typedef struct _SSizeRestriction
+{
+    ULONG relop;
+    ULONG ulPropTag;
+    ULONG cb;
+} SSizeRestriction;
+
+typedef struct _SSubRestriction
+{
+    ULONG          ulSubObject;
+    LPSRestriction lpRes;
+} SSubRestriction;
+
+/* Restriction types */
+#define RES_AND            0U
+#define RES_OR             1U
+#define RES_NOT            2U
+#define RES_CONTENT        3U
+#define RES_PROPERTY       4U
+#define RES_COMPAREPROPS   5U
+#define RES_BITMASK        6U
+#define RES_SIZE           7U
+#define RES_EXIST          8U
+#define RES_SUBRESTRICTION 9U
+#define RES_COMMENT        10U
+
+typedef struct _SRestriction
+{
+    ULONG rt;
+    union
+    {
+        SAndRestriction          resAnd;
+        SBitMaskRestriction      resBitMask;
+        SCommentRestriction      resComment;
+        SComparePropsRestriction resCompareProps;
+        SContentRestriction      resContent;
+        SExistRestriction        resExist;
+        SNotRestriction          resNot;
+        SOrRestriction           resOr;
+        SPropertyRestriction     resProperty;
+        SSizeRestriction         resSize;
+        SSubRestriction          resSub;
+    } res;
+} SRestriction;
+
+/* Errors */
+typedef struct _MAPIERROR
+{
+    ULONG  ulVersion;       /* Mapi version */
+#if defined (UNICODE) || defined (__WINESRC__)
+    LPWSTR lpszError;       /* Error and component strings. These are Ascii */
+    LPWSTR lpszComponent;   /* unless the MAPI_UNICODE flag is passed in */
+#else
+    LPSTR  lpszError;
+    LPSTR  lpszComponent;
+#endif
+    ULONG  ulLowLevelError;
+    ULONG  ulContext;
+} MAPIERROR, *LPMAPIERROR;
+
+/* Sorting */
+#define TABLE_SORT_ASCEND  0U
+#define TABLE_SORT_DESCEND 1U
+#define TABLE_SORT_COMBINE 2U
+
+typedef struct _SSortOrder
+{
+    ULONG ulPropTag;
+    ULONG ulOrder;
+} SSortOrder, *LPSSortOrder;
+
+typedef struct _SSortOrderSet
+{
+    ULONG      cSorts;
+    ULONG      cCategories;
+    ULONG      cExpanded;
+    SSortOrder aSort[MAPI_DIM];
+} SSortOrderSet, * LPSSortOrderSet;
+
+#define MNID_ID     0
+#define MNID_STRING 1
+
+typedef struct _MAPINAMEID
+{
+    LPGUID lpguid;
+    ULONG ulKind;
+    union
+    {
+        LONG lID;
+        LPWSTR lpwstrName;
+    } Kind;
+} MAPINAMEID, *LPMAPINAMEID;
+
+/* Desired notification types (bitflags) */
+#define fnevCriticalError        0x00000001UL
+#define fnevNewMail              0x00000002UL
+#define fnevObjectCreated        0x00000004UL
+#define fnevObjectDeleted        0x00000008UL
+#define fnevObjectModified       0x00000010UL
+#define fnevObjectMoved          0x00000020UL
+#define fnevObjectCopied         0x00000040UL
+#define fnevSearchComplete       0x00000080UL
+#define fnevTableModified        0x00000100UL
+#define fnevStatusObjectModified 0x00000200UL
+#define fnevReservedForMapi      0x40000000UL
+#define fnevExtended             0x80000000UL
+
+/* Type of notification event */
+#define TABLE_CHANGED       1U
+#define TABLE_ERROR         2U
+#define TABLE_ROW_ADDED     3U
+#define TABLE_ROW_DELETED   4U
+#define TABLE_ROW_MODIFIED  5U
+#define TABLE_SORT_DONE     6U
+#define TABLE_RESTRICT_DONE 7U
+#define TABLE_SETCOL_DONE   8U
+#define TABLE_RELOAD        9U
+
+/* fnevCriticalError notification */
+typedef struct _ERROR_NOTIFICATION
+{
+    ULONG       cbEntryID;
+    LPENTRYID   lpEntryID;
+    SCODE       scode;
+    ULONG       ulFlags;
+    LPMAPIERROR lpMAPIError;
+} ERROR_NOTIFICATION;
+
+/* fnevNewMail notification */
+typedef struct _NEWMAIL_NOTIFICATION
+{
+    ULONG     cbEntryID;
+    LPENTRYID lpEntryID;
+    ULONG     cbParentID;
+    LPENTRYID lpParentID;
+    ULONG     ulFlags;
+#if defined (UNICODE) || defined (__WINESRC__)
+    LPWSTR    lpszMessageClass;
+#else
+    LPSTR     lpszMessageClass;
+#endif
+    ULONG     ulMessageFlags;
+} NEWMAIL_NOTIFICATION;
+
+/* fnevObjectCreated/Deleted/Modified/Moved/Copied notification */
+typedef struct _OBJECT_NOTIFICATION
+{
+    ULONG           cbEntryID;
+    LPENTRYID       lpEntryID;
+    ULONG           ulObjType;
+    ULONG           cbParentID;
+    LPENTRYID       lpParentID;
+    ULONG           cbOldID;
+    LPENTRYID       lpOldID;
+    ULONG           cbOldParentID;
+    LPENTRYID       lpOldParentID;
+    LPSPropTagArray lpPropTagArray;
+} OBJECT_NOTIFICATION;
+
+/* fnevTableModified notification */
+typedef struct _TABLE_NOTIFICATION
+{
+    ULONG      ulTableEvent;
+    HRESULT    hResult;
+    SPropValue propIndex;
+    SPropValue propPrior;
+    SRow       row;
+    ULONG      ulPad;
+} TABLE_NOTIFICATION;
+
+/* fnevExtended notification */
+typedef struct _EXTENDED_NOTIFICATION
+{
+    ULONG  ulEvent;
+    ULONG  cb;
+    LPBYTE pbEventParameters;
+} EXTENDED_NOTIFICATION;
+
+/* fnevStatusObjectModified notification */
+typedef struct
+{
+    ULONG        cbEntryID;
+    LPENTRYID    lpEntryID;
+    ULONG        cValues;
+    LPSPropValue lpPropVals;
+} STATUS_OBJECT_NOTIFICATION;
+
+/* The notification structure passed to advise sinks */
+typedef struct _NOTIFICATION
+{
+    ULONG ulEventType;
+    ULONG ulAlignPad;
+    union
+    {
+        ERROR_NOTIFICATION         err;
+        NEWMAIL_NOTIFICATION       newmail;
+        OBJECT_NOTIFICATION        obj;
+        TABLE_NOTIFICATION         tab;
+        EXTENDED_NOTIFICATION      ext;
+        STATUS_OBJECT_NOTIFICATION statobj;
+    } info;
+} NOTIFICATION, *LPNOTIFICATION;
+
+typedef LONG (WINAPI NOTIFCALLBACK)(LPVOID,ULONG,LPNOTIFICATION);
+typedef NOTIFCALLBACK *LPNOTIFCALLBACK;
+
+/*****************************************************************************
+ * IMAPITable interface
+ *
+ * This is the read-only 'view' over an I(MAPI)TableData object.
+ */
+#define INTERFACE IMAPITable
+DECLARE_INTERFACE_(IMAPITable,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IMAPITable methods ***/
+    STDMETHOD(GetLastError)(THIS_ HRESULT hRes, ULONG ulFlags, LPMAPIERROR *lppError) PURE;
+    STDMETHOD(Advise)(THIS_ ULONG ulMask, LPMAPIADVISESINK lpSink, ULONG *lpCxn) PURE;
+    STDMETHOD(Unadvise)(THIS_ ULONG ulCxn) PURE;
+    STDMETHOD(GetStatus)(THIS_ ULONG *lpStatus, ULONG *lpType) PURE;
+    STDMETHOD(SetColumns)(THIS_ LPSPropTagArray lpProps, ULONG ulFlags) PURE;
+    STDMETHOD(QueryColumns)(THIS_ ULONG ulFlags, LPSPropTagArray *lpCols) PURE;
+    STDMETHOD(GetRowCount)(THIS_ ULONG ulFlags, ULONG *lpCount) PURE;
+    STDMETHOD(SeekRow)(THIS_ BOOKMARK lpStart, LONG lRows, LONG *lpSeeked) PURE;
+    STDMETHOD(SeekRowApprox)(THIS_ ULONG ulNum, ULONG ulDenom) PURE;
+    STDMETHOD(QueryPosition)(THIS_ ULONG *lpRow, ULONG *lpNum, ULONG *lpDenom) PURE;
+    STDMETHOD(FindRow)(THIS_ LPSRestriction lpRestrict, BOOKMARK lpOrigin, ULONG ulFlags) PURE;
+    STDMETHOD(Restrict)(THIS_ LPSRestriction lpRestrict, ULONG ulFlags) PURE;
+    STDMETHOD(CreateBookmark)(THIS_ BOOKMARK *lppPos) PURE;
+    STDMETHOD(FreeBookmark)(THIS_ BOOKMARK lpPos) PURE;
+    STDMETHOD(SortTable)(THIS_ LPSSortOrderSet lpSortOpts, ULONG ulFlags) PURE;
+    STDMETHOD(QuerySortOrder)(THIS_ LPSSortOrderSet *lppSortOpts) PURE;
+    STDMETHOD(QueryRows)(THIS_ LONG lRows, ULONG ulFlags, LPSRowSet *lppRows) PURE;
+    STDMETHOD(Abort) (THIS) PURE;
+    STDMETHOD(ExpandRow)(THIS_ ULONG cbKey, LPBYTE lpKey, ULONG ulRows,
+                         ULONG ulFlags, LPSRowSet *lppRows, ULONG *lpMore) PURE;
+    STDMETHOD(CollapseRow)(THIS_ ULONG cbKey, LPBYTE lpKey, ULONG ulFlags, ULONG *lpRows) PURE;
+    STDMETHOD(WaitForCompletion)(THIS_ ULONG ulFlags, ULONG ulTime, ULONG *lpState) PURE;
+    STDMETHOD(GetCollapseState)(THIS_ ULONG ulFlags, ULONG cbKey, LPBYTE lpKey,
+                                ULONG *lpStateLen, LPBYTE *lpState) PURE;
+    STDMETHOD(SetCollapseState)(THIS_ ULONG ulFlags, ULONG ulLen,
+                                LPBYTE lpStart, BOOKMARK *lppWhere) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+        /*** IUnknown methods ***/
+#define IMAPITable_QueryInterface(p,a,b)         (p)->lpVtbl->QueryInterface(p,a,b)
+#define IMAPITable_AddRef(p)                     (p)->lpVtbl->AddRef(p)
+#define IMAPITable_Release(p)                    (p)->lpVtbl->Release(p)
+        /*** IMAPITable methods ***/
+#define IMAPITable_GetLastError(p,a,b,c)         (p)->lpVtbl->GetLastError(p,a,b,c)
+#define IMAPITable_Advise(p,a,b,c)               (p)->lpVtbl->Advise(p,a,b,c)
+#define IMAPITable_Unadvise(p,a)                 (p)->lpVtbl->Unadvise(p,a)
+#define IMAPITable_GetStatus(p,a,b)              (p)->lpVtbl->GetStatus(p,a,b)
+#define IMAPITable_SetColumns(p,a,b)             (p)->lpVtbl->SetColumns(p,a,b)
+#define IMAPITable_QueryColumns(p,a,b)           (p)->lpVtbl->QueryColumns(p,a,b)
+#define IMAPITable_GetRowCount(p,a,b)            (p)->lpVtbl->GetRowCount(p,a,b)
+#define IMAPITable_SeekRow(p,a,b)                (p)->lpVtbl->SeekRow(p,a,b)
+#define IMAPITable_SeekRowApprox(p,a,b)          (p)->lpVtbl->SeekRowApprox(p,a,b)
+#define IMAPITable_QueryPosition(p,a,b)          (p)->lpVtbl->QueryPosition(p,a,b)
+#define IMAPITable_FindRow(p,a,b,c)              (p)->lpVtbl->FindRow(p,a,b,c)
+#define IMAPITable_Restrict(p,a,b)               (p)->lpVtbl->Recstrict(p,a,b)
+#define IMAPITable_CreateBookmark(p,a)           (p)->lpVtbl->CreateBookmark(p,a)
+#define IMAPITable_FreeBookmark(p,a)             (p)->lpVtbl->FreeBookmark(p,a)
+#define IMAPITable_SortTable(p,a,b)              (p)->lpVtbl->SortTable(p,a,b)
+#define IMAPITable_QuerySortOrder(p,a)           (p)->lpVtbl->QuerySortOrder(p,a)
+#define IMAPITable_QueryRows(p,a,b,c)            (p)->lpVtbl->QueryRows(p,a,b,c)
+#define IMAPITable_Abort(p)                      (p)->lpVtbl->Abort(p)
+#define IMAPITable_ExpandRow(p,a,b,c,d,e,f)      (p)->lpVtbl->ExpandRow(p,a,b,c,d,e,f)
+#define IMAPITable_CollapseRow(p,a,b,c,d)        (p)->lpVtbl->CollapseRow(p,a,b,c,d)
+#define IMAPITable_WaitForCompletion(p,a,b,c)    (p)->lpVtbl->WaitForCompletion(p,a,b,c)
+#define IMAPITable_GetCollapseState(p,a,b,c,d,e) (p)->lpVtbl->GetCollapseState(p,a,b,c,d,e)
+#define IMAPITable_SetCollapseState(p,a,b,c,d)   (p)->lpVtbl->SetCollapseState(p,a,b,c,d)
+#endif
+
+typedef IMAPITable *LPMAPITABLE;
+
+/*****************************************************************************
+ * IMAPIAdviseSink interface
+ */
+#define INTERFACE IMAPIAdviseSink
+DECLARE_INTERFACE_(IMAPIAdviseSink,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IMAPIAdviseSink methods ***/
+    STDMETHOD(OnNotify)(THIS_ ULONG NumNotif, LPNOTIFICATION lpNotif) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+        /*** IUnknown methods ***/
+#define IMAPIAdviseSink_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IMAPIAdviseSink_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IMAPIAdviseSink_Release(p)            (p)->lpVtbl->Release(p)
+        /*** IMAPIAdviseSink methods ***/
+#define IMAPIAdviseSink_OnNotify(p,a,b)       (p)->lpVtbl->OnNotify(p,a,b)
+#endif
+
+/*****************************************************************************
+ * IMAPIProp interface
+ */
+#define INTERFACE IMAPIProp
+DECLARE_INTERFACE_(IMAPIProp,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IMAPIProp methods ***/
+    STDMETHOD(GetLastError)(THIS_ HRESULT hRes, ULONG ulFlags, LPMAPIERROR *lppErr) PURE;
+    STDMETHOD(SaveChanges)(THIS_ ULONG ulFlags) PURE;
+    STDMETHOD(GetProps)(THIS_ LPSPropTagArray lpPropTags, ULONG ulFlags, ULONG *lpValues, LPSPropValue *lppProps) PURE;
+    STDMETHOD(GetPropList)(THIS_ ULONG  ulFlags, LPSPropTagArray *lppPropTagArray) PURE;
+    STDMETHOD(OpenProperty)(THIS_ ULONG ulPropTag, LPCIID lpIid, ULONG ulOpts, ULONG ulFlags, LPUNKNOWN *lppUnk) PURE;
+    STDMETHOD(SetProps)(THIS_ ULONG cValues, LPSPropValue lpProps, LPSPropProblemArray *lppProbs) PURE;
+    STDMETHOD(DeleteProps)(THIS_ LPSPropTagArray lpPropTags, LPSPropProblemArray *lppProbs) PURE;
+    STDMETHOD(CopyTo)(THIS_ ULONG ciidExclude, LPCIID lpIid, LPSPropTagArray lpProps, ULONG ulParam,
+                      LPMAPIPROGRESS lpProgress, LPCIID lpIface,LPVOID lpDest, ULONG ulFlags,
+                      LPSPropProblemArray *lppProbs) PURE;
+    STDMETHOD(CopyProps)(THIS_ LPSPropTagArray lpIncludeProps, ULONG ulParam, LPMAPIPROGRESS lpProgress,
+                         LPCIID lpIid, LPVOID lpDestObj, ULONG ulFlags, LPSPropProblemArray *lppProblems) PURE;
+    STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray *lppPropTags, LPGUID lpIid, ULONG ulFlags, ULONG *lpCount,
+                               LPMAPINAMEID **lpppNames) PURE;
+    STDMETHOD(GetIDsFromNames)(THIS_ ULONG cPropNames, LPMAPINAMEID *lppNames, ULONG ulFlags, LPSPropTagArray *lppPropTags) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+        /*** IUnknown methods ***/
+#define IMAPIProp_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IMAPIProp_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IMAPIProp_Release(p)                   (p)->lpVtbl->Release(p)
+        /*** IMAPIProp methods ***/
+#define IMAPIProp_GetLastError(p,a,b,c)        (p)->lpVtbl->GetLastError(p,a,b,c)        
+#define IMAPIProp_SaveChanges(p,a)             (p)->lpVtbl->SaveChanges(p,a)             
+#define IMAPIProp_GetProps(p,a,b,c,d)          (p)->lpVtbl->GetProps(p,a,b,c,d)          
+#define IMAPIProp_GetPropList(p,a,b)           (p)->lpVtbl->GetPropList(p,a,b)           
+#define IMAPIProp_OpenProperty(p,a,b,c,d,e)    (p)->lpVtbl->OpenProperty(p,a,b,c,d,e)    
+#define IMAPIProp_SetProps(p,a,b,c)            (p)->lpVtbl->SetProps(p,a,b,c)            
+#define IMAPIProp_DeleteProps(p,a,b)           (p)->lpVtbl->DeleteProps(p,a,b)           
+#define IMAPIProp_CopyTo(p,a,b,c,d,e,f,g,h,i)  (p)->lpVtbl->CopyTo(p,a,b,c,d,e,f,g,h,i)  
+#define IMAPIProp_CopyProps(p,a,b,c,d,e,f,g)   (p)->lpVtbl->CopyProps(p,a,b,c,d,e,f,g)   
+#define IMAPIProp_GetNamesFromIDs(p,a,b,c,d,e) (p)->lpVtbl->GetNamesFromIDs(p,a,b,c,d,e) 
+#define IMAPIProp_GetIDsFromNames(p,a,b,c,d)   (p)->lpVtbl->GetIDsFromNames(p,a,b,c,d)   
+#endif
+
+typedef IMAPIProp *LPMAPIPROP;
+
+typedef struct
+{
+    ULONG cb;
+    BYTE  abEntry[MAPI_DIM];
+} FLATENTRY, *LPFLATENTRY;
+
+typedef struct
+{
+    ULONG cEntries;
+    ULONG cbEntries;
+    BYTE  abEntries[MAPI_DIM];
+} FLATENTRYLIST, *LPFLATENTRYLIST;
+
+typedef struct
+{
+    ULONG cb;
+    BYTE  ab[MAPI_DIM];
+} MTSID, *LPMTSID;
+
+typedef struct
+{
+    ULONG cMTSIDs;
+    ULONG cbMTSIDs;
+    BYTE  abMTSIDs[MAPI_DIM];
+} FLATMTSIDLIST, *LPFLATMTSIDLIST;
+
+typedef struct _ADRENTRY
+{
+    ULONG        ulReserved1;
+    ULONG        cValues;
+    LPSPropValue rgPropVals;
+} ADRENTRY, *LPADRENTRY;
+
+typedef struct _ADRLIST
+{
+    ULONG    cEntries;
+    ADRENTRY aEntries[MAPI_DIM];
+} ADRLIST, *LPADRLIST;
+
+#endif /*MAPIDEFS_H*/
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapiform.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapiform.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapiform.h	(revision 16410)
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 1998 Justin Bradford
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef MAPIFORM_H
+#define MAPIFORM_H
+
+#include <mapidefs.h>
+#include <mapicode.h>
+#include <mapiguid.h>
+#include <mapitags.h>
+
+
+typedef ULONG HFRMREG;
+#define HFRMREG_DEFAULT            0
+#define HFRMREG_LOCAL              1
+#define HFRMREG_PERSONAL           2
+#define HFRMREG_FOLDER             3
+
+typedef const char **LPPCSTR;
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+HRESULT     WINAPI MAPIOpenLocalFormContainer(LPVOID*);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* MAPIFORM_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapiguid.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapiguid.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapiguid.h	(revision 16410)
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2004 Jon Griffiths
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef MAPIGUID_H
+#define MAPIGUID_H
+
+#define DEFINE_MAPIGUID(n,l,w1,w2) DEFINE_OLEGUID(n,l,w1,w2)
+
+DEFINE_MAPIGUID(IID_IABContainer,0x2030D,0,0);
+DEFINE_MAPIGUID(IID_IABLogon,0x20314,0,0);
+DEFINE_MAPIGUID(IID_IABProvider,0x20311,0,0);
+DEFINE_MAPIGUID(IID_IAddrBook,0x20309,0,0);
+DEFINE_MAPIGUID(IID_IAttachment,0x20308,0,0);
+DEFINE_MAPIGUID(IID_IDistList,0x2030E,0,0);
+DEFINE_MAPIGUID(IID_IEnumMAPIFormProp,0x20323,0,0);
+DEFINE_MAPIGUID(IID_IMailUser,0x2030A,0,0);
+DEFINE_MAPIGUID(IID_IMAPIAdviseSink,0x20302,0,0);
+DEFINE_MAPIGUID(IID_IMAPIContainer,0x2030B,0,0);
+DEFINE_MAPIGUID(IID_IMAPIControl,0x2031B,0,0);
+DEFINE_MAPIGUID(IID_IMAPIFolder,0x2030C,0,0);
+DEFINE_MAPIGUID(IID_IMAPIForm,0x20327,0,0);
+DEFINE_MAPIGUID(IID_IMAPIFormAdviseSink,0x2032F,0,0);
+DEFINE_MAPIGUID(IID_IMAPIFormContainer,0x2032E,0,0);
+DEFINE_MAPIGUID(IID_IMAPIFormFactory,0x20350,0,0);
+DEFINE_MAPIGUID(IID_IMAPIFormInfo,0x20324,0,0);
+DEFINE_MAPIGUID(IID_IMAPIFormMgr,0x20322,0,0);
+DEFINE_MAPIGUID(IID_IMAPIFormProp,0x2032D,0,0);
+DEFINE_MAPIGUID(IID_IMAPIMessageSite,0x20370,0,0);
+DEFINE_MAPIGUID(IID_IMAPIProgress,0x2031F,0,0);
+DEFINE_MAPIGUID(IID_IMAPIProp,0x20303,0,0);
+DEFINE_MAPIGUID(IID_IMAPIPropData,0x2031A,0,0);
+DEFINE_MAPIGUID(IID_IMAPISession,0x20300,0,0);
+DEFINE_MAPIGUID(IID_IMAPISpoolerInit,0x20317,0,0);
+DEFINE_MAPIGUID(IID_IMAPISpoolerService,0x2031E,0,0);
+DEFINE_MAPIGUID(IID_IMAPISpoolerSession,0x20318,0,0);
+DEFINE_MAPIGUID(IID_IMAPIStatus,0x20305,0,0);
+DEFINE_MAPIGUID(IID_IMAPISup,0x2030F,0,0);
+DEFINE_MAPIGUID(IID_IMAPITable,0x20301,0,0);
+DEFINE_MAPIGUID(IID_IMAPITableData,0x20316,0,0);
+DEFINE_MAPIGUID(IID_IMAPIViewAdviseSink,0x2032B,0,0);
+DEFINE_MAPIGUID(IID_IMAPIViewContext,0x20321,0,0);
+DEFINE_MAPIGUID(IID_IMessage,0x20307,0,0);
+DEFINE_MAPIGUID(IID_IMsgServiceAdmin,0x2031D,0,0);
+DEFINE_MAPIGUID(IID_IMsgStore,0x20306,0,0);
+DEFINE_MAPIGUID(IID_IMSLogon,0x20313,0,0);
+DEFINE_MAPIGUID(IID_IMSProvider,0x20310,0,0);
+DEFINE_MAPIGUID(IID_IPersistMessage,0x2032A,0,0);
+DEFINE_MAPIGUID(IID_IProfAdmin,0x2031C,0,0);
+DEFINE_MAPIGUID(IID_IProfSect,0x20304,0,0);
+DEFINE_MAPIGUID(IID_IProviderAdmin,0x20325,0,0);
+DEFINE_MAPIGUID(IID_ISpoolerHook,0x20320,0,0);
+DEFINE_MAPIGUID(IID_IStreamDocfile,0x2032C,0,0);
+DEFINE_MAPIGUID(IID_IStreamTnef,0x20330,0,0);
+DEFINE_MAPIGUID(IID_ITNEF,0x20319,0,0);
+DEFINE_MAPIGUID(IID_IXPLogon,0x20315,0,0);
+DEFINE_MAPIGUID(IID_IXPProvider,0x20312,0,0);
+DEFINE_MAPIGUID(MUID_PROFILE_INSTANCE,0x20385,0,0);
+DEFINE_MAPIGUID(PS_MAPI,0x20328,0,0);
+DEFINE_MAPIGUID(PS_PUBLIC_STRINGS,0x20329,0,0);
+DEFINE_MAPIGUID(PS_ROUTING_ADDRTYPE,0x20381,0,0);
+DEFINE_MAPIGUID(PS_ROUTING_DISPLAY_NAME,0x20382,0,0);
+DEFINE_MAPIGUID(PS_ROUTING_EMAIL_ADDRESSES,0x20380,0,0);
+DEFINE_MAPIGUID(PS_ROUTING_ENTRYID,0x20383,0,0);
+DEFINE_MAPIGUID(PS_ROUTING_SEARCH_KEY,0x20384,0,0);
+
+#endif/* MAPIGUID_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapitags.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapitags.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapitags.h	(revision 16410)
@@ -0,0 +1,813 @@
+/*
+ * MAPI property tag declarations
+ *
+ * Copyright 2004 Jon Griffiths
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef MAPITAGS_H
+#define MAPITAGS_H
+
+#define FIsTransmittable(t) (PROP_ID(t) < 0x0E00 || PROP_ID(t) >= 0x8000 || \
+ (PROP_ID(t) >= 0x1000 && PROP_ID(t) < 0x6000) || \
+ (PROP_ID(t) >= 0x6800 && PROP_ID(t) < 0x7C00))
+
+#define PR_ACKNOWLEDGEMENT_MODE PROP_TAG(PT_I4,0x01)
+#define PR_ALTERNATE_RECIPIENT_ALLOWED PROP_TAG(PT_BOOLEAN,0x02)
+#define PR_AUTHORIZING_USERS PROP_TAG(PT_BINARY,0x03)
+/* Comment on an automatically forwarded message */
+#define PR_AUTO_FORWARD_COMMENT_W PROP_TAG(PT_UNICODE,0x04)
+#define PR_AUTO_FORWARD_COMMENT_A PROP_TAG(PT_STRING8,0x04)
+#define PR_AUTO_FORWARD_COMMENT   WINELIB_NAME_AW(PR_AUTO_FORWARD_COMMENT_)
+/* Whether a message has been automatically forwarded */
+#define PR_AUTO_FORWARDED PROP_TAG(PT_BOOLEAN,0x05)
+#define PR_CONTENT_CONFIDENTIALITY_ALGORITHM_ID PROP_TAG(PT_BINARY,0x06)
+#define PR_CONTENT_CORRELATOR PROP_TAG(PT_BINARY,0x07)
+#define PR_CONTENT_IDENTIFIER_W PROP_TAG(PT_UNICODE,0x08)
+#define PR_CONTENT_IDENTIFIER_A PROP_TAG(PT_STRING8,0x08)
+#define PR_CONTENT_IDENTIFIER   WINELIB_NAME_AW(PR_CONTENT_IDENTIFIER_)
+/* MIME content length */
+#define PR_CONTENT_LENGTH PROP_TAG(PT_I4,0x09)
+#define PR_CONTENT_RETURN_REQUESTED PROP_TAG(PT_BOOLEAN,0x0A)
+#define PR_CONVERSATION_KEY PROP_TAG(PT_BINARY,0x0B)
+#define PR_CONVERSION_EITS PROP_TAG(PT_BINARY,0x0C)
+#define PR_CONVERSION_WITH_LOSS_PROHIBITED PROP_TAG(PT_BOOLEAN,0x0D)
+#define PR_CONVERTED_EITS PROP_TAG(PT_BINARY,0x0E)
+/* Time to deliver for delayed delivery messages */
+#define PR_DEFERRED_DELIVERY_TIME PROP_TAG(PT_SYSTIME,0x0F)
+#define PR_DELIVER_TIME PROP_TAG(PT_SYSTIME,0x10)
+/* Reason a message was discarded */
+#define PR_DISCARD_REASON PROP_TAG(PT_I4,0x11)
+#define PR_DISCLOSURE_OF_RECIPIENTS PROP_TAG(PT_BOOLEAN,0x12)
+#define PR_DL_EXPANSION_HISTORY PROP_TAG(PT_BINARY,0x13)
+#define PR_DL_EXPANSION_PROHIBITED PROP_TAG(PT_BOOLEAN,0x14)
+#define PR_EXPIRY_TIME PROP_TAG(PT_SYSTIME,0x15)
+#define PR_IMPLICIT_CONVERSION_PROHIBITED PROP_TAG(PT_BOOLEAN,0x16)
+/* Message importance */
+#define PR_IMPORTANCE PROP_TAG(PT_I4,0x17)
+#define PR_IPM_ID PROP_TAG(PT_BINARY,0x18)
+#define PR_LATEST_DELIVERY_TIME PROP_TAG(PT_SYSTIME,0x19)
+#define PR_MESSAGE_CLASS_W PROP_TAG(PT_UNICODE,0x1A)
+#define PR_MESSAGE_CLASS_A PROP_TAG(PT_STRING8,0x1A)
+#define PR_MESSAGE_CLASS   WINELIB_NAME_AW(PR_MESSAGE_CLASS_)
+#define PR_MESSAGE_DELIVERY_ID PROP_TAG(PT_BINARY,0x1B)
+#define PR_MESSAGE_SECURITY_LABEL PROP_TAG(PT_BINARY,0x1E)
+#define PR_OBSOLETED_IPMS PROP_TAG(PT_BINARY,0x1F)
+/* Person a message was originally for */
+#define PR_ORIGINALLY_INTENDED_RECIPIENT_NAME PROP_TAG(PT_BINARY,0x20)
+#define PR_ORIGINAL_EITS PROP_TAG(PT_BINARY,0x21)
+#define PR_ORIGINATOR_CERTIFICATE PROP_TAG(PT_BINARY,0x22)
+#define PR_ORIGINATOR_DELIVERY_REPORT_REQUESTED PROP_TAG(PT_BOOLEAN,0x23)
+/* Address of the message sender */
+#define PR_ORIGINATOR_RETURN_ADDRESS PROP_TAG(PT_BINARY,0x24)
+#define PR_PARENT_KEY PROP_TAG(PT_BINARY,0x25)
+#define PR_PRIORITY PROP_TAG(PT_I4,0x26)
+#define PR_ORIGIN_CHECK PROP_TAG(PT_BINARY,0x27)
+#define PR_PROOF_OF_SUBMISSION_REQUESTED PROP_TAG(PT_BOOLEAN,0x28)
+/* Whether a read receipt is desired */
+#define PR_READ_RECEIPT_REQUESTED PROP_TAG(PT_BOOLEAN,0x29)
+/* Time a message was received */
+#define PR_RECEIPT_TIME PROP_TAG(PT_SYSTIME,0x2A)
+#define PR_RECIPIENT_REASSIGNMENT_PROHIBITED PROP_TAG(PT_BOOLEAN,0x2B)
+#define PR_REDIRECTION_HISTORY PROP_TAG(PT_BINARY,0x2C)
+#define PR_RELATED_IPMS PROP_TAG(PT_BINARY,0x2D)
+/* Sensitivity of the original message */
+#define PR_ORIGINAL_SENSITIVITY PROP_TAG(PT_I4,0x2E)
+#define PR_LANGUAGES_W PROP_TAG(PT_UNICODE,0x2F)
+#define PR_LANGUAGES_A PROP_TAG(PT_STRING8,0x2F)
+#define PR_LANGUAGES   WINELIB_NAME_AW(PR_LANGUAGES_)
+#define PR_REPLY_TIME PROP_TAG(PT_SYSTIME,0x30)
+#define PR_REPORT_TAG PROP_TAG(PT_BINARY,0x31)
+#define PR_REPORT_TIME PROP_TAG(PT_SYSTIME,0x32)
+#define PR_RETURNED_IPM PROP_TAG(PT_BOOLEAN,0x33)
+#define PR_SECURITY PROP_TAG(PT_I4,0x34)
+#define PR_INCOMPLETE_COPY PROP_TAG(PT_BOOLEAN,0x35)
+#define PR_SENSITIVITY PROP_TAG(PT_I4,0x36)
+/* The message subject */
+#define PR_SUBJECT_W PROP_TAG(PT_UNICODE,0x37)
+#define PR_SUBJECT_A PROP_TAG(PT_STRING8,0x37)
+#define PR_SUBJECT   WINELIB_NAME_AW(PR_SUBJECT_)
+#define PR_SUBJECT_IPM PROP_TAG(PT_BINARY,0x38)
+#define PR_CLIENT_SUBMIT_TIME PROP_TAG(PT_SYSTIME,0x39)
+#define PR_REPORT_NAME_W PROP_TAG(PT_UNICODE,0x3A)
+#define PR_REPORT_NAME_A PROP_TAG(PT_STRING8,0x3A)
+#define PR_REPORT_NAME   WINELIB_NAME_AW(PR_REPORT_NAME_)
+#define PR_SENT_REPRESENTING_SEARCH_KEY PROP_TAG(PT_BINARY,0x3B)
+#define PR_X400_CONTENT_TYPE PROP_TAG(PT_BINARY,0x3C)
+#define PR_SUBJECT_PREFIX_W PROP_TAG(PT_UNICODE,0x3D)
+#define PR_SUBJECT_PREFIX_A PROP_TAG(PT_STRING8,0x3D)
+#define PR_SUBJECT_PREFIX   WINELIB_NAME_AW(PR_SUBJECT_PREFIX_)
+#define PR_NON_RECEIPT_REASON PROP_TAG(PT_I4,0x3E)
+#define PR_RECEIVED_BY_ENTRYID PROP_TAG(PT_BINARY,0x3F)
+/* Received by: entry */
+#define PR_RECEIVED_BY_NAME_W PROP_TAG(PT_UNICODE,0x40)
+#define PR_RECEIVED_BY_NAME_A PROP_TAG(PT_STRING8,0x40)
+#define PR_RECEIVED_BY_NAME   WINELIB_NAME_AW(PR_RECEIVED_BY_NAME_)
+#define PR_SENT_REPRESENTING_ENTRYID PROP_TAG(PT_BINARY,0x41)
+#define PR_SENT_REPRESENTING_NAME_W PROP_TAG(PT_UNICODE,0x42)
+#define PR_SENT_REPRESENTING_NAME_A PROP_TAG(PT_STRING8,0x42)
+#define PR_SENT_REPRESENTING_NAME   WINELIB_NAME_AW(PR_SENT_REPRESENTING_NAME_)
+#define PR_RCVD_REPRESENTING_ENTRYID PROP_TAG(PT_BINARY,0x43)
+#define PR_RCVD_REPRESENTING_NAME_W PROP_TAG(PT_UNICODE,0x44)
+#define PR_RCVD_REPRESENTING_NAME_A PROP_TAG(PT_STRING8,0x44)
+#define PR_RCVD_REPRESENTING_NAME   WINELIB_NAME_AW(PR_RCVD_REPRESENTING_NAME_)
+#define PR_REPORT_ENTRYID PROP_TAG(PT_BINARY,0x45)
+#define PR_READ_RECEIPT_ENTRYID PROP_TAG(PT_BINARY,0x46)
+#define PR_MESSAGE_SUBMISSION_ID PROP_TAG(PT_BINARY,0x47)
+#define PR_PROVIDER_SUBMIT_TIME PROP_TAG(PT_SYSTIME,0x48)
+/* Subject of the original message */
+#define PR_ORIGINAL_SUBJECT_W PROP_TAG(PT_UNICODE,0x49)
+#define PR_ORIGINAL_SUBJECT_A PROP_TAG(PT_STRING8,0x49)
+#define PR_ORIGINAL_SUBJECT   WINELIB_NAME_AW(PR_ORIGINAL_SUBJECT_)
+#define PR_DISC_VAL PROP_TAG(PT_BOOLEAN,0x4A)
+#define PR_ORIG_MESSAGE_CLASS_W PROP_TAG(PT_UNICODE,0x4B)
+#define PR_ORIG_MESSAGE_CLASS_A PROP_TAG(PT_STRING8,0x4B)
+#define PR_ORIG_MESSAGE_CLASS   WINELIB_NAME_AW(PR_ORIG_MESSAGE_CLASS_)
+#define PR_ORIGINAL_AUTHOR_ENTRYID PROP_TAG(PT_BINARY,0x4C)
+/* Author of the original message */
+#define PR_ORIGINAL_AUTHOR_NAME_W PROP_TAG(PT_UNICODE,0x4D)
+#define PR_ORIGINAL_AUTHOR_NAME_A PROP_TAG(PT_STRING8,0x4D)
+#define PR_ORIGINAL_AUTHOR_NAME   WINELIB_NAME_AW(PR_ORIGINAL_AUTHOR_NAME_)
+/* Time the original message was submitted */
+#define PR_ORIGINAL_SUBMIT_TIME PROP_TAG(PT_SYSTIME,0x4E)
+#define PR_REPLY_RECIPIENT_ENTRIES PROP_TAG(PT_BINARY,0x4F)
+#define PR_REPLY_RECIPIENT_NAMES_W PROP_TAG(PT_UNICODE,0x50)
+#define PR_REPLY_RECIPIENT_NAMES_A PROP_TAG(PT_STRING8,0x50)
+#define PR_REPLY_RECIPIENT_NAMES   WINELIB_NAME_AW(PR_REPLY_RECIPIENT_NAMES_)
+#define PR_RECEIVED_BY_SEARCH_KEY PROP_TAG(PT_BINARY,0x51)
+#define PR_RCVD_REPRESENTING_SEARCH_KEY PROP_TAG(PT_BINARY,0x52)
+#define PR_READ_RECEIPT_SEARCH_KEY PROP_TAG(PT_BINARY,0x53)
+#define PR_REPORT_SEARCH_KEY PROP_TAG(PT_BINARY,0x54)
+#define PR_ORIGINAL_DELIVERY_TIME PROP_TAG(PT_SYSTIME,0x55)
+#define PR_ORIGINAL_AUTHOR_SEARCH_KEY PROP_TAG(PT_BINARY,0x56)
+#define PR_MESSAGE_TO_ME PROP_TAG(PT_BOOLEAN,0x57)
+#define PR_MESSAGE_CC_ME PROP_TAG(PT_BOOLEAN,0x58)
+#define PR_MESSAGE_RECIP_ME PROP_TAG(PT_BOOLEAN,0x59)
+/* Sender of the original message */
+#define PR_ORIGINAL_SENDER_NAME_W PROP_TAG(PT_UNICODE,0x5A)
+#define PR_ORIGINAL_SENDER_NAME_A PROP_TAG(PT_STRING8,0x5A)
+#define PR_ORIGINAL_SENDER_NAME   WINELIB_NAME_AW(PR_ORIGINAL_SENDER_NAME_)
+#define PR_ORIGINAL_SENDER_ENTRYID PROP_TAG(PT_BINARY,0x5B)
+#define PR_ORIGINAL_SENDER_SEARCH_KEY PROP_TAG(PT_BINARY,0x5C)
+#define PR_ORIGINAL_SENT_REPRESENTING_NAME_W PROP_TAG(PT_UNICODE,0x5D)
+#define PR_ORIGINAL_SENT_REPRESENTING_NAME_A PROP_TAG(PT_STRING8,0x5D)
+#define PR_ORIGINAL_SENT_REPRESENTING_NAME   WINELIB_NAME_AW(PR_ORIGINAL_SENT_REPRESENTING_NAME_)
+#define PR_ORIGINAL_SENT_REPRESENTING_ENTRYID PROP_TAG(PT_BINARY,0x5E)
+#define PR_ORIGINAL_SENT_REPRESENTING_SEARCH_KEY PROP_TAG(PT_BINARY,0x5F)
+#define PR_START_DATE PROP_TAG(PT_SYSTIME,0x60)
+#define PR_END_DATE PROP_TAG(PT_SYSTIME,0x61)
+#define PR_OWNER_APPT_ID PROP_TAG(PT_I4,0x62)
+/* Whether a response to the message is desired */
+#define PR_RESPONSE_REQUESTED PROP_TAG(PT_BOOLEAN,0x63)
+#define PR_SENT_REPRESENTING_ADDRTYPE_W PROP_TAG(PT_UNICODE,0x64)
+#define PR_SENT_REPRESENTING_ADDRTYPE_A PROP_TAG(PT_STRING8,0x64)
+#define PR_SENT_REPRESENTING_ADDRTYPE   WINELIB_NAME_AW(PR_SENT_REPRESENTING_ADDRTYPE_)
+#define PR_SENT_REPRESENTING_EMAIL_ADDRESS_W PROP_TAG(PT_UNICODE,0x65)
+#define PR_SENT_REPRESENTING_EMAIL_ADDRESS_A PROP_TAG(PT_STRING8,0x65)
+#define PR_SENT_REPRESENTING_EMAIL_ADDRESS   WINELIB_NAME_AW(PR_SENT_REPRESENTING_EMAIL_ADDRESS_)
+#define PR_ORIGINAL_SENDER_ADDRTYPE_W PROP_TAG(PT_UNICODE,0x66)
+#define PR_ORIGINAL_SENDER_ADDRTYPE_A PROP_TAG(PT_STRING8,0x66)
+#define PR_ORIGINAL_SENDER_ADDRTYPE   WINELIB_NAME_AW(PR_ORIGINAL_SENDER_ADDRTYPE_)
+/* Email of the original message sender */
+#define PR_ORIGINAL_SENDER_EMAIL_ADDRESS_W PROP_TAG(PT_UNICODE,0x67)
+#define PR_ORIGINAL_SENDER_EMAIL_ADDRESS_A PROP_TAG(PT_STRING8,0x67)
+#define PR_ORIGINAL_SENDER_EMAIL_ADDRESS   WINELIB_NAME_AW(PR_ORIGINAL_SENDER_EMAIL_ADDRESS_)
+#define PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE_W PROP_TAG(PT_UNICODE,0x68)
+#define PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE_A PROP_TAG(PT_STRING8,0x68)
+#define PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE   WINELIB_NAME_AW(PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE_)
+#define PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS_W PROP_TAG(PT_UNICODE,0x69)
+#define PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS_A PROP_TAG(PT_STRING8,0x69)
+#define PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS   WINELIB_NAME_AW(PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS_)
+#define PR_CONVERSATION_TOPIC_W PROP_TAG(PT_UNICODE,0x70)
+#define PR_CONVERSATION_TOPIC_A PROP_TAG(PT_STRING8,0x70)
+#define PR_CONVERSATION_TOPIC   WINELIB_NAME_AW(PR_CONVERSATION_TOPIC_)
+#define PR_CONVERSATION_INDEX PROP_TAG(PT_BINARY,0x71)
+#define PR_ORIGINAL_DISPLAY_BCC_W PROP_TAG(PT_UNICODE,0x72)
+#define PR_ORIGINAL_DISPLAY_BCC_A PROP_TAG(PT_STRING8,0x72)
+#define PR_ORIGINAL_DISPLAY_BCC   WINELIB_NAME_AW(PR_ORIGINAL_DISPLAY_BCC_)
+#define PR_ORIGINAL_DISPLAY_CC_W PROP_TAG(PT_UNICODE,0x73)
+#define PR_ORIGINAL_DISPLAY_CC_A PROP_TAG(PT_STRING8,0x73)
+#define PR_ORIGINAL_DISPLAY_CC   WINELIB_NAME_AW(PR_ORIGINAL_DISPLAY_CC_)
+#define PR_ORIGINAL_DISPLAY_TO_W PROP_TAG(PT_UNICODE,0x74)
+#define PR_ORIGINAL_DISPLAY_TO_A PROP_TAG(PT_STRING8,0x74)
+#define PR_ORIGINAL_DISPLAY_TO   WINELIB_NAME_AW(PR_ORIGINAL_DISPLAY_TO_)
+#define PR_RECEIVED_BY_ADDRTYPE_W PROP_TAG(PT_UNICODE,0x75)
+#define PR_RECEIVED_BY_ADDRTYPE_A PROP_TAG(PT_STRING8,0x75)
+#define PR_RECEIVED_BY_ADDRTYPE   WINELIB_NAME_AW(PR_RECEIVED_BY_ADDRTYPE_)
+#define PR_RECEIVED_BY_EMAIL_ADDRESS_W PROP_TAG(PT_UNICODE,0x76)
+#define PR_RECEIVED_BY_EMAIL_ADDRESS_A PROP_TAG(PT_STRING8,0x76)
+#define PR_RECEIVED_BY_EMAIL_ADDRESS   WINELIB_NAME_AW(PR_RECEIVED_BY_EMAIL_ADDRESS_)
+#define PR_RCVD_REPRESENTING_ADDRTYPE_W PROP_TAG(PT_UNICODE,0x77)
+#define PR_RCVD_REPRESENTING_ADDRTYPE_A PROP_TAG(PT_STRING8,0x77)
+#define PR_RCVD_REPRESENTING_ADDRTYPE   WINELIB_NAME_AW(PR_RCVD_REPRESENTING_ADDRTYPE_)
+#define PR_RCVD_REPRESENTING_EMAIL_ADDRESS_W PROP_TAG(PT_UNICODE,0x78)
+#define PR_RCVD_REPRESENTING_EMAIL_ADDRESS_A PROP_TAG(PT_STRING8,0x78)
+#define PR_RCVD_REPRESENTING_EMAIL_ADDRESS   WINELIB_NAME_AW(PR_RCVD_REPRESENTING_EMAIL_ADDRESS_)
+#define PR_ORIGINAL_AUTHOR_ADDRTYPE_W PROP_TAG(PT_UNICODE,0x79)
+#define PR_ORIGINAL_AUTHOR_ADDRTYPE_A PROP_TAG(PT_STRING8,0x79)
+#define PR_ORIGINAL_AUTHOR_ADDRTYPE   WINELIB_NAME_AW(PR_ORIGINAL_AUTHOR_ADDRTYPE_)
+#define PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS_W PROP_TAG(PT_UNICODE,0x7A)
+#define PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS_A PROP_TAG(PT_STRING8,0x7A)
+#define PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS   WINELIB_NAME_AW(PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS_)
+#define PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE_W PROP_TAG(PT_UNICODE,0x7B)
+#define PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE_A PROP_TAG(PT_STRING8,0x7B)
+#define PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE   WINELIB_NAME_AW(PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE_)
+#define PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS_W PROP_TAG(PT_UNICODE,0x7C)
+#define PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS_A PROP_TAG(PT_STRING8,0x7C)
+#define PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS   WINELIB_NAME_AW(PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS_)
+#define PR_TRANSPORT_MESSAGE_HEADERS_W PROP_TAG(PT_UNICODE,0x7D)
+#define PR_TRANSPORT_MESSAGE_HEADERS_A PROP_TAG(PT_STRING8,0x7D)
+#define PR_TRANSPORT_MESSAGE_HEADERS   WINELIB_NAME_AW(PR_TRANSPORT_MESSAGE_HEADERS_)
+#define PR_DELEGATION PROP_TAG(PT_BINARY,0x7E)
+#define PR_TNEF_CORRELATION_KEY PROP_TAG(PT_BINARY,0x7F)
+#define PR_BODY_W PROP_TAG(PT_UNICODE,0x1000)
+#define PR_BODY_A PROP_TAG(PT_STRING8,0x1000)
+#define PR_BODY   WINELIB_NAME_AW(PR_BODY_)
+#define PR_REPORT_TEXT_W PROP_TAG(PT_UNICODE,0x1001)
+#define PR_REPORT_TEXT_A PROP_TAG(PT_STRING8,0x1001)
+#define PR_REPORT_TEXT   WINELIB_NAME_AW(PR_REPORT_TEXT_)
+#define PR_ORIGINATOR_AND_DL_EXPANSION_HISTORY PROP_TAG(PT_BINARY,0x1002)
+#define PR_REPORTING_DL_NAME PROP_TAG(PT_BINARY,0x1003)
+#define PR_REPORTING_MTA_CERTIFICATE PROP_TAG(PT_BINARY,0x1004)
+#define PR_RTF_SYNC_BODY_CRC PROP_TAG(PT_I4,0x1006)
+#define PR_RTF_SYNC_BODY_COUNT PROP_TAG(PT_I4,0x1007)
+#define PR_RTF_SYNC_BODY_TAG_W PROP_TAG(PT_UNICODE,0x1008)
+#define PR_RTF_SYNC_BODY_TAG_A PROP_TAG(PT_STRING8,0x1008)
+#define PR_RTF_SYNC_BODY_TAG   WINELIB_NAME_AW(PR_RTF_SYNC_BODY_TAG_)
+#define PR_RTF_COMPRESSED PROP_TAG(PT_BINARY,0x1009)
+#define PR_RTF_SYNC_PREFIX_COUNT PROP_TAG(PT_I4,0x1010)
+#define PR_RTF_SYNC_TRAILING_COUNT PROP_TAG(PT_I4,0x1011)
+#define PR_ORIGINALLY_INTENDED_RECIP_ENTRYID PROP_TAG(PT_BINARY,0x1012)
+#define PR_CONTENT_INTEGRITY_CHECK PROP_TAG(PT_BINARY,0x0C00)
+#define PR_EXPLICIT_CONVERSION PROP_TAG(PT_I4,0x0C01)
+#define PR_IPM_RETURN_REQUESTED PROP_TAG(PT_BOOLEAN,0x0C02)
+#define PR_MESSAGE_TOKEN PROP_TAG(PT_BINARY,0x0C03)
+#define PR_NDR_REASON_CODE PROP_TAG(PT_I4,0x0C04)
+#define PR_NDR_DIAG_CODE PROP_TAG(PT_I4,0x0C05)
+#define PR_NON_RECEIPT_NOTIFICATION_REQUESTED PROP_TAG(PT_BOOLEAN,0x0C06)
+#define PR_DELIVERY_POINT PROP_TAG(PT_I4,0x0C07)
+#define PR_ORIGINATOR_NON_DELIVERY_REPORT_REQUESTED PROP_TAG(PT_BOOLEAN,0x0C08)
+#define PR_ORIGINATOR_REQUESTED_ALTERNATE_RECIPIENT PROP_TAG(PT_BINARY,0x0C09)
+#define PR_PHYSICAL_DELIVERY_BUREAU_FAX_DELIVERY PROP_TAG(PT_BOOLEAN,0x0C0A)
+#define PR_PHYSICAL_DELIVERY_MODE PROP_TAG(PT_I4,0x0C0B)
+#define PR_PHYSICAL_DELIVERY_REPORT_REQUEST PROP_TAG(PT_I4,0x0C0C)
+#define PR_PHYSICAL_FORWARDING_ADDRESS PROP_TAG(PT_BINARY,0x0C0D)
+#define PR_PHYSICAL_FORWARDING_ADDRESS_REQUESTED PROP_TAG(PT_BOOLEAN,0x0C0E)
+#define PR_PHYSICAL_FORWARDING_PROHIBITED PROP_TAG(PT_BOOLEAN,0x0C0F)
+#define PR_PHYSICAL_RENDITION_ATTRIBUTES PROP_TAG(PT_BINARY,0x0C10)
+#define PR_PROOF_OF_DELIVERY PROP_TAG(PT_BINARY,0x0C11)
+#define PR_PROOF_OF_DELIVERY_REQUESTED PROP_TAG(PT_BOOLEAN,0x0C12)
+#define PR_RECIPIENT_CERTIFICATE PROP_TAG(PT_BINARY,0x0C13)
+#define PR_RECIPIENT_NUMBER_FOR_ADVICE_W PROP_TAG(PT_UNICODE,0x0C14)
+#define PR_RECIPIENT_NUMBER_FOR_ADVICE_A PROP_TAG(PT_STRING8,0x0C14)
+#define PR_RECIPIENT_NUMBER_FOR_ADVICE   WINELIB_NAME_AW(PR_RECIPIENT_NUMBER_FOR_ADVICE_)
+#define PR_RECIPIENT_TYPE PROP_TAG(PT_I4,0x0C15)
+#define PR_REGISTERED_MAIL_TYPE PROP_TAG(PT_I4,0x0C16)
+#define PR_REPLY_REQUESTED PROP_TAG(PT_BOOLEAN,0x0C17)
+#define PR_REQUESTED_DELIVERY_METHOD PROP_TAG(PT_I4,0x0C18)
+#define PR_SENDER_ENTRYID PROP_TAG(PT_BINARY,0x0C19)
+#define PR_SENDER_NAME_W PROP_TAG(PT_UNICODE,0x0C1A)
+#define PR_SENDER_NAME_A PROP_TAG(PT_STRING8,0x0C1A)
+#define PR_SENDER_NAME   WINELIB_NAME_AW(PR_SENDER_NAME_)
+#define PR_SUPPLEMENTARY_INFO_W PROP_TAG(PT_UNICODE,0x0C1B)
+#define PR_SUPPLEMENTARY_INFO_A PROP_TAG(PT_STRING8,0x0C1B)
+#define PR_SUPPLEMENTARY_INFO   WINELIB_NAME_AW(PR_SUPPLEMENTARY_INFO_)
+#define PR_TYPE_OF_MTS_USER PROP_TAG(PT_I4,0x0C1C)
+#define PR_SENDER_SEARCH_KEY PROP_TAG(PT_BINARY,0x0C1D)
+#define PR_SENDER_ADDRTYPE_W PROP_TAG(PT_UNICODE,0x0C1E)
+#define PR_SENDER_ADDRTYPE_A PROP_TAG(PT_STRING8,0x0C1E)
+#define PR_SENDER_ADDRTYPE   WINELIB_NAME_AW(PR_SENDER_ADDRTYPE_)
+#define PR_SENDER_EMAIL_ADDRESS_W PROP_TAG(PT_UNICODE,0x0C1F)
+#define PR_SENDER_EMAIL_ADDRESS_A PROP_TAG(PT_STRING8,0x0C1F)
+#define PR_SENDER_EMAIL_ADDRESS   WINELIB_NAME_AW(PR_SENDER_EMAIL_ADDRESS_)
+#define PR_CURRENT_VERSION PROP_TAG(PT_I8,0x0E00)
+#define PR_DELETE_AFTER_SUBMIT PROP_TAG(PT_BOOLEAN,0x0E01)
+#define PR_DISPLAY_BCC_W PROP_TAG(PT_UNICODE,0x0E02)
+#define PR_DISPLAY_BCC_A PROP_TAG(PT_STRING8,0x0E02)
+#define PR_DISPLAY_BCC   WINELIB_NAME_AW(PR_DISPLAY_BCC_)
+#define PR_DISPLAY_CC_W PROP_TAG(PT_UNICODE,0x0E03)
+#define PR_DISPLAY_CC_A PROP_TAG(PT_STRING8,0x0E03)
+#define PR_DISPLAY_CC   WINELIB_NAME_AW(PR_DISPLAY_CC_)
+#define PR_DISPLAY_TO_W PROP_TAG(PT_UNICODE,0x0E04)
+#define PR_DISPLAY_TO_A PROP_TAG(PT_STRING8,0x0E04)
+#define PR_DISPLAY_TO   WINELIB_NAME_AW(PR_DISPLAY_TO_)
+#define PR_PARENT_DISPLAY_W PROP_TAG(PT_UNICODE,0x0E05)
+#define PR_PARENT_DISPLAY_A PROP_TAG(PT_STRING8,0x0E05)
+#define PR_PARENT_DISPLAY   WINELIB_NAME_AW(PR_PARENT_DISPLAY_)
+#define PR_MESSAGE_DELIVERY_TIME PROP_TAG(PT_SYSTIME,0x0E06)
+#define PR_MESSAGE_FLAGS PROP_TAG(PT_I4,0x0E07)
+#define PR_MESSAGE_SIZE PROP_TAG(PT_I4,0x0E08)
+#define PR_PARENT_ENTRYID PROP_TAG(PT_BINARY,0x0E09)
+#define PR_SENTMAIL_ENTRYID PROP_TAG(PT_BINARY,0x0E0A)
+#define PR_CORRELATE PROP_TAG(PT_BOOLEAN,0x0E0C)
+#define PR_CORRELATE_MTSID PROP_TAG(PT_BINARY,0x0E0D)
+#define PR_DISCRETE_VALUES PROP_TAG(PT_BOOLEAN,0x0E0E)
+#define PR_RESPONSIBILITY PROP_TAG(PT_BOOLEAN,0x0E0F)
+#define PR_SPOOLER_STATUS PROP_TAG(PT_I4,0x0E10)
+#define PR_TRANSPORT_STATUS PROP_TAG(PT_I4,0x0E11)
+#define PR_MESSAGE_RECIPIENTS PROP_TAG(PT_OBJECT,0x0E12)
+#define PR_MESSAGE_ATTACHMENTS PROP_TAG(PT_OBJECT,0x0E13)
+#define PR_SUBMIT_FLAGS PROP_TAG(PT_I4,0x0E14)
+#define PR_RECIPIENT_STATUS PROP_TAG(PT_I4,0x0E15)
+#define PR_TRANSPORT_KEY PROP_TAG(PT_I4,0x0E16)
+#define PR_MSG_STATUS PROP_TAG(PT_I4,0x0E17)
+#define PR_MESSAGE_DOWNLOAD_TIME PROP_TAG(PT_I4,0x0E18)
+#define PR_CREATION_VERSION PROP_TAG(PT_I8,0x0E19)
+#define PR_MODIFY_VERSION PROP_TAG(PT_I8,0x0E1A)
+#define PR_HASATTACH PROP_TAG(PT_BOOLEAN,0x0E1B)
+#define PR_BODY_CRC PROP_TAG(PT_I4, 0x0E1C)
+#define PR_NORMALIZED_SUBJECT_W PROP_TAG(PT_UNICODE,0x0E1D)
+#define PR_NORMALIZED_SUBJECT_A PROP_TAG(PT_STRING8,0x0E1D)
+#define PR_NORMALIZED_SUBJECT   WINELIB_NAME_AW(PR_NORMALIZED_SUBJECT_)
+#define PR_RTF_IN_SYNC PROP_TAG(PT_BOOLEAN,0x0E1F)
+#define PR_ATTACH_SIZE PROP_TAG(PT_I4,0x0E20)
+#define PR_ATTACH_NUM PROP_TAG(PT_I4,0x0E21)
+#define PR_PREPROCESS PROP_TAG(PT_BOOLEAN,0x0E22)
+#define PR_ORIGINATING_MTA_CERTIFICATE PROP_TAG(PT_BINARY,0x0E25)
+#define PR_PROOF_OF_SUBMISSION PROP_TAG(PT_BINARY,0x0E26)
+/* A unique identifier for editing the properties of a MAPI object */
+#define PR_ENTRYID PROP_TAG(PT_BINARY,0x0FFF)
+/* The type of an object */
+#define PR_OBJECT_TYPE PROP_TAG(PT_I4,0x0FFE)
+#define PR_ICON PROP_TAG(PT_BINARY,0x0FFD)
+#define PR_MINI_ICON PROP_TAG(PT_BINARY,0x0FFC)
+#define PR_STORE_ENTRYID PROP_TAG(PT_BINARY,0x0FFB)
+#define PR_STORE_RECORD_KEY PROP_TAG(PT_BINARY,0x0FFA)
+/* Binary identifer for an individual object */
+#define PR_RECORD_KEY PROP_TAG(PT_BINARY,0x0FF9)
+#define PR_MAPPING_SIGNATURE PROP_TAG(PT_BINARY,0x0FF8)
+#define PR_ACCESS_LEVEL PROP_TAG(PT_I4,0x0FF7)
+/* The primary key of a column in a table */
+#define PR_INSTANCE_KEY PROP_TAG(PT_BINARY,0x0FF6)
+#define PR_ROW_TYPE PROP_TAG(PT_I4,0x0FF5)
+#define PR_ACCESS PROP_TAG(PT_I4,0x0FF4)
+#define PR_ROWID PROP_TAG(PT_I4,0x3000)
+/* The name to display for a given MAPI object */
+#define PR_DISPLAY_NAME_W PROP_TAG(PT_UNICODE,0x3001)
+#define PR_DISPLAY_NAME_A PROP_TAG(PT_STRING8,0x3001)
+#define PR_DISPLAY_NAME   WINELIB_NAME_AW(PR_DISPLAY_NAME_)
+#define PR_ADDRTYPE_W PROP_TAG(PT_UNICODE,0x3002)
+#define PR_ADDRTYPE_A PROP_TAG(PT_STRING8,0x3002)
+#define PR_ADDRTYPE   WINELIB_NAME_AW(PR_ADDRTYPE_)
+/* An email address */
+#define PR_EMAIL_ADDRESS_W PROP_TAG(PT_UNICODE,0x3003)
+#define PR_EMAIL_ADDRESS_A PROP_TAG(PT_STRING8,0x3003)
+#define PR_EMAIL_ADDRESS   WINELIB_NAME_AW(PR_EMAIL_ADDRESS_)
+/* A comment field */
+#define PR_COMMENT_W PROP_TAG(PT_UNICODE,0x3004)
+#define PR_COMMENT_A PROP_TAG(PT_STRING8,0x3004)
+#define PR_COMMENT   WINELIB_NAME_AW(PR_COMMENT_)
+#define PR_DEPTH PROP_TAG(PT_I4,0x3005)
+/* Provider-defined display name for a service provider */
+#define PR_PROVIDER_DISPLAY_W PROP_TAG(PT_UNICODE,0x3006)
+#define PR_PROVIDER_DISPLAY_A PROP_TAG(PT_STRING8,0x3006)
+#define PR_PROVIDER_DISPLAY   WINELIB_NAME_AW(PR_PROVIDER_DISPLAY_)
+/* The time an object was created */
+#define PR_CREATION_TIME PROP_TAG(PT_SYSTIME,0x3007)
+/* The time an object was last modified */
+#define PR_LAST_MODIFICATION_TIME PROP_TAG(PT_SYSTIME,0x3008)
+/* Flags describing a service provider, message service, or status object */
+#define PR_RESOURCE_FLAGS PROP_TAG(PT_I4,0x3009)
+/* The name of a provider dll, minus any "32" suffix and ".dll" */
+#define PR_PROVIDER_DLL_NAME_W PROP_TAG(PT_UNICODE,0x300A)
+#define PR_PROVIDER_DLL_NAME_A PROP_TAG(PT_STRING8,0x300A)
+#define PR_PROVIDER_DLL_NAME   WINELIB_NAME_AW(PR_PROVIDER_DLL_NAME_)
+#define PR_SEARCH_KEY PROP_TAG(PT_BINARY,0x300B)
+#define PR_PROVIDER_UID PROP_TAG(PT_BINARY,0x300C)
+#define PR_PROVIDER_ORDINAL PROP_TAG(PT_I4,0x300D)
+#define PR_FORM_VERSION_W PROP_TAG(PT_UNICODE,0x3301)
+#define PR_FORM_VERSION_A PROP_TAG(PT_STRING8,0x3301)
+#define PR_FORM_VERSION   WINELIB_NAME_AW(PR_FORM_VERSION_)
+#define PR_FORM_CLSID PROP_TAG(PT_CLSID,0x3302)
+#define PR_FORM_CONTACT_NAME_W PROP_TAG(PT_UNICODE,0x3303)
+#define PR_FORM_CONTACT_NAME_A PROP_TAG(PT_STRING8,0x3303)
+#define PR_FORM_CONTACT_NAME   WINELIB_NAME_AW(PR_FORM_CONTACT_NAME_)
+#define PR_FORM_CATEGORY_W PROP_TAG(PT_UNICODE,0x3304)
+#define PR_FORM_CATEGORY_A PROP_TAG(PT_STRING8,0x3304)
+#define PR_FORM_CATEGORY   WINELIB_NAME_AW(PR_FORM_CATEGORY_)
+#define PR_FORM_CATEGORY_SUB_W PROP_TAG(PT_UNICODE,0x3305)
+#define PR_FORM_CATEGORY_SUB_A PROP_TAG(PT_STRING8,0x3305)
+#define PR_FORM_CATEGORY_SUB   WINELIB_NAME_AW(PR_FORM_CATEGORY_SUB_)
+#define PR_FORM_HOST_MAP PROP_TAG(PT_MV_LONG,0x3306)
+#define PR_FORM_HIDDEN PROP_TAG(PT_BOOLEAN,0x3307)
+#define PR_FORM_DESIGNER_NAME_W PROP_TAG(PT_UNICODE,0x3308)
+#define PR_FORM_DESIGNER_NAME_A PROP_TAG(PT_STRING8,0x3308)
+#define PR_FORM_DESIGNER_NAME   WINELIB_NAME_AW(PR_FORM_DESIGNER_NAME_)
+#define PR_FORM_DESIGNER_GUID PROP_TAG(PT_CLSID,0x3309)
+#define PR_FORM_MESSAGE_BEHAVIOR PROP_TAG(PT_I4,0x330A)
+/* Is this row the default message store? */
+#define PR_DEFAULT_STORE PROP_TAG(PT_BOOLEAN,0x3400)
+#define PR_STORE_SUPPORT_MASK PROP_TAG(PT_I4,0x340D)
+#define PR_STORE_STATE PROP_TAG(PT_I4,0x340E)
+#define PR_IPM_SUBTREE_SEARCH_KEY PROP_TAG(PT_BINARY,0x3410)
+#define PR_IPM_OUTBOX_SEARCH_KEY PROP_TAG(PT_BINARY,0x3411)
+#define PR_IPM_WASTEBASKET_SEARCH_KEY PROP_TAG(PT_BINARY,0x3412)
+#define PR_IPM_SENTMAIL_SEARCH_KEY PROP_TAG(PT_BINARY,0x3413)
+/* Provider-defined message store type */
+#define PR_MDB_PROVIDER PROP_TAG(PT_BINARY,0x3414)
+#define PR_RECEIVE_FOLDER_SETTINGS PROP_TAG(PT_OBJECT,0x3415)
+#define PR_VALID_FOLDER_MASK PROP_TAG(PT_I4,0x35DF)
+#define PR_IPM_SUBTREE_ENTRYID PROP_TAG(PT_BINARY,0x35E0)
+#define PR_IPM_OUTBOX_ENTRYID PROP_TAG(PT_BINARY,0x35E2)
+#define PR_IPM_WASTEBASKET_ENTRYID PROP_TAG(PT_BINARY,0x35E3)
+#define PR_IPM_SENTMAIL_ENTRYID PROP_TAG(PT_BINARY,0x35E4)
+#define PR_VIEWS_ENTRYID PROP_TAG(PT_BINARY,0x35E5)
+#define PR_COMMON_VIEWS_ENTRYID PROP_TAG(PT_BINARY,0x35E6)
+#define PR_FINDER_ENTRYID PROP_TAG(PT_BINARY,0x35E7)
+#define PR_CONTAINER_FLAGS PROP_TAG(PT_I4,0x3600)
+#define PR_FOLDER_TYPE PROP_TAG(PT_I4,0x3601)
+#define PR_CONTENT_COUNT PROP_TAG(PT_I4,0x3602)
+#define PR_CONTENT_UNREAD PROP_TAG(PT_I4,0x3603)
+#define PR_CREATE_TEMPLATES PROP_TAG(PT_OBJECT,0x3604)
+#define PR_DETAILS_TABLE PROP_TAG(PT_OBJECT,0x3605)
+#define PR_SEARCH PROP_TAG(PT_OBJECT,0x3607)
+#define PR_SELECTABLE PROP_TAG(PT_BOOLEAN,0x3609)
+#define PR_SUBFOLDERS PROP_TAG(PT_BOOLEAN,0x360A)
+#define PR_STATUS PROP_TAG(PT_I4,0x360B)
+#define PR_ANR_W PROP_TAG(PT_UNICODE,0x360C)
+#define PR_ANR_A PROP_TAG(PT_STRING8,0x360C)
+#define PR_ANR   WINELIB_NAME_AW(PR_ANR_)
+#define PR_CONTENTS_SORT_ORDER PROP_TAG(PT_MV_LONG,0x360D)
+#define PR_CONTAINER_HIERARCHY PROP_TAG(PT_OBJECT,0x360E)
+#define PR_CONTAINER_CONTENTS PROP_TAG(PT_OBJECT,0x360F)
+#define PR_FOLDER_ASSOCIATED_CONTENTS PROP_TAG(PT_OBJECT,0x3610)
+#define PR_DEF_CREATE_DL PROP_TAG(PT_BINARY,0x3611)
+#define PR_DEF_CREATE_MAILUSER PROP_TAG(PT_BINARY,0x3612)
+#define PR_CONTAINER_CLASS_W PROP_TAG(PT_UNICODE,0x3613)
+#define PR_CONTAINER_CLASS_A PROP_TAG(PT_STRING8,0x3613)
+#define PR_CONTAINER_CLASS   WINELIB_NAME_AW(PR_CONTAINER_CLASS_)
+#define PR_CONTAINER_MODIFY_VERSION PROP_TAG(PT_I8,0x3614)
+#define PR_AB_PROVIDER_ID PROP_TAG(PT_BINARY,0x3615)
+#define PR_DEFAULT_VIEW_ENTRYID PROP_TAG(PT_BINARY,0x3616)
+#define PR_ASSOC_CONTENT_COUNT PROP_TAG(PT_I4,0x3617)
+#define PR_ATTACHMENT_X400_PARAMETERS PROP_TAG(PT_BINARY,0x3700)
+#define PR_ATTACH_DATA_OBJ PROP_TAG(PT_OBJECT,0x3701)
+#define PR_ATTACH_DATA_BIN PROP_TAG(PT_BINARY,0x3701)
+#define PR_ATTACH_ENCODING PROP_TAG(PT_BINARY,0x3702)
+#define PR_ATTACH_EXTENSION_W PROP_TAG(PT_UNICODE,0x3703)
+#define PR_ATTACH_EXTENSION_A PROP_TAG(PT_STRING8,0x3703)
+#define PR_ATTACH_EXTENSION   WINELIB_NAME_AW(PR_ATTACH_EXTENSION_)
+#define PR_ATTACH_FILENAME_W PROP_TAG(PT_UNICODE,0x3704)
+#define PR_ATTACH_FILENAME_A PROP_TAG(PT_STRING8,0x3704)
+#define PR_ATTACH_FILENAME   WINELIB_NAME_AW(PR_ATTACH_FILENAME_)
+#define PR_ATTACH_METHOD PROP_TAG(PT_I4,0x3705)
+#define PR_ATTACH_LONG_FILENAME_W PROP_TAG(PT_UNICODE,0x3707)
+#define PR_ATTACH_LONG_FILENAME_A PROP_TAG(PT_STRING8,0x3707)
+#define PR_ATTACH_LONG_FILENAME   WINELIB_NAME_AW(PR_ATTACH_LONG_FILENAME_)
+#define PR_ATTACH_PATHNAME_W PROP_TAG(PT_UNICODE,0x3708)
+#define PR_ATTACH_PATHNAME_A PROP_TAG(PT_STRING8,0x3708)
+#define PR_ATTACH_PATHNAME   WINELIB_NAME_AW(PR_ATTACH_PATHNAME_)
+#define PR_ATTACH_RENDERING PROP_TAG(PT_BINARY, 0x3709)
+#define PR_ATTACH_TAG PROP_TAG(PT_BINARY,0x370A)
+#define PR_RENDERING_POSITION PROP_TAG(PT_I4,0x370B)
+#define PR_ATTACH_TRANSPORT_NAME_W PROP_TAG(PT_UNICODE,0x370C)
+#define PR_ATTACH_TRANSPORT_NAME_A PROP_TAG(PT_STRING8,0x370C)
+#define PR_ATTACH_TRANSPORT_NAME   WINELIB_NAME_AW(PR_ATTACH_TRANSPORT_NAME_)
+#define PR_ATTACH_LONG_PATHNAME_W PROP_TAG(PT_UNICODE,0x370D)
+#define PR_ATTACH_LONG_PATHNAME_A PROP_TAG(PT_STRING8,0x370D)
+#define PR_ATTACH_LONG_PATHNAME   WINELIB_NAME_AW(PR_ATTACH_LONG_PATHNAME_)
+#define PR_ATTACH_MIME_TAG_W PROP_TAG(PT_UNICODE,0x370E)
+#define PR_ATTACH_MIME_TAG_A PROP_TAG(PT_STRING8,0x370E)
+#define PR_ATTACH_MIME_TAG   WINELIB_NAME_AW(PR_ATTACH_MIME_TAG_)
+#define PR_ATTACH_ADDITIONAL_INFO PROP_TAG(PT_BINARY,0x370F)
+#define PR_DISPLAY_TYPE PROP_TAG(PT_I4,0x3900)
+#define PR_TEMPLATEID PROP_TAG(PT_BINARY,0x3902)
+#define PR_PRIMARY_CAPABILITY PROP_TAG(PT_BINARY,0x3904)
+#define PR_7BIT_DISPLAY_NAME PROP_TAG(PT_STRING8,0x39FF)
+#define PR_ACCOUNT_W PROP_TAG(PT_UNICODE,0x3A00)
+#define PR_ACCOUNT_A PROP_TAG(PT_STRING8,0x3A00)
+#define PR_ACCOUNT   WINELIB_NAME_AW(PR_ACCOUNT_)
+#define PR_ALTERNATE_RECIPIENT PROP_TAG(PT_BINARY,0x3A01)
+#define PR_CALLBACK_TELEPHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A02)
+#define PR_CALLBACK_TELEPHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A02)
+#define PR_CALLBACK_TELEPHONE_NUMBER   WINELIB_NAME_AW(PR_CALLBACK_TELEPHONE_NUMBER_)
+#define PR_CONVERSION_PROHIBITED PROP_TAG(PT_BOOLEAN,0x3A03)
+#define PR_DISCLOSE_RECIPIENTS PROP_TAG(PT_BOOLEAN,0x3A04)
+#define PR_GENERATION_W PROP_TAG(PT_UNICODE,0x3A05)
+#define PR_GENERATION_A PROP_TAG(PT_STRING8,0x3A05)
+#define PR_GENERATION   WINELIB_NAME_AW(PR_GENERATION_)
+#define PR_GIVEN_NAME_W PROP_TAG(PT_UNICODE,0x3A06)
+#define PR_GIVEN_NAME_A PROP_TAG(PT_STRING8,0x3A06)
+#define PR_GIVEN_NAME   WINELIB_NAME_AW(PR_GIVEN_NAME_)
+#define PR_GOVERNMENT_ID_NUMBER_W PROP_TAG(PT_UNICODE,0x3A07)
+#define PR_GOVERNMENT_ID_NUMBER_A PROP_TAG(PT_STRING8,0x3A07)
+#define PR_GOVERNMENT_ID_NUMBER   WINELIB_NAME_AW(PR_GOVERNMENT_ID_NUMBER_)
+#define PR_BUSINESS_TELEPHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A08)
+#define PR_BUSINESS_TELEPHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A08)
+#define PR_BUSINESS_TELEPHONE_NUMBER   WINELIB_NAME_AW(PR_BUSINESS_TELEPHONE_NUMBER_)
+#define PR_OFFICE_TELEPHONE_NUMBER_W PR_BUSINESS_TELEPHONE_NUMBER_W
+#define PR_OFFICE_TELEPHONE_NUMBER_A PR_BUSINESS_TELEPHONE_NUMBER_A
+#define PR_OFFICE_TELEPHONE_NUMBER   WINELIB_NAME_AW(PR_OFFICE_TELEPHONE_NUMBER_)
+#define PR_HOME_TELEPHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A09)
+#define PR_HOME_TELEPHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A09)
+#define PR_HOME_TELEPHONE_NUMBER   WINELIB_NAME_AW(PR_HOME_TELEPHONE_NUMBER_)
+#define PR_INITIALS_W PROP_TAG(PT_UNICODE,0x3A0A)
+#define PR_INITIALS_A PROP_TAG(PT_STRING8,0x3A0A)
+#define PR_INITIALS   WINELIB_NAME_AW(PR_INITIALS_)
+#define PR_KEYWORD_W PROP_TAG(PT_UNICODE,0x3A0B)
+#define PR_KEYWORD_A PROP_TAG(PT_STRING8,0x3A0B)
+#define PR_KEYWORD   WINELIB_NAME_AW(PR_KEYWORD_)
+#define PR_LANGUAGE_W PROP_TAG(PT_UNICODE,0x3A0C)
+#define PR_LANGUAGE_A PROP_TAG(PT_STRING8,0x3A0C)
+#define PR_LANGUAGE   WINELIB_NAME_AW(PR_LANGUAGE_)
+#define PR_LOCATION_W PROP_TAG(PT_UNICODE,0x3A0D)
+#define PR_LOCATION_A PROP_TAG(PT_STRING8,0x3A0D)
+#define PR_LOCATION   WINELIB_NAME_AW(PR_LOCATION_)
+#define PR_MAIL_PERMISSION PROP_TAG(PT_BOOLEAN,0x3A0E)
+#define PR_MHS_COMMON_NAME_W PROP_TAG(PT_UNICODE,0x3A0F)
+#define PR_MHS_COMMON_NAME_A PROP_TAG(PT_STRING8,0x3A0F)
+#define PR_MHS_COMMON_NAME   WINELIB_NAME_AW(PR_MHS_COMMON_NAME_)
+#define PR_ORGANIZATIONAL_ID_NUMBER_W PROP_TAG(PT_UNICODE,0x3A10)
+#define PR_ORGANIZATIONAL_ID_NUMBER_A PROP_TAG(PT_STRING8,0x3A10)
+#define PR_ORGANIZATIONAL_ID_NUMBER   WINELIB_NAME_AW(PR_ORGANIZATIONAL_ID_NUMBER_)
+#define PR_SURNAME_W PROP_TAG(PT_UNICODE,0x3A11)
+#define PR_SURNAME_A PROP_TAG(PT_STRING8,0x3A11)
+#define PR_SURNAME   WINELIB_NAME_AW(PR_SURNAME_)
+#define PR_ORIGINAL_ENTRYID PROP_TAG(PT_BINARY,0x3A12)
+#define PR_ORIGINAL_DISPLAY_NAME_W PROP_TAG(PT_UNICODE,0x3A13)
+#define PR_ORIGINAL_DISPLAY_NAME_A PROP_TAG(PT_STRING8,0x3A13)
+#define PR_ORIGINAL_DISPLAY_NAME   WINELIB_NAME_AW(PR_ORIGINAL_DISPLAY_NAME_)
+#define PR_ORIGINAL_SEARCH_KEY PROP_TAG(PT_BINARY,0x3A14)
+#define PR_POSTAL_ADDRESS_W PROP_TAG(PT_UNICODE,0x3A15)
+#define PR_POSTAL_ADDRESS_A PROP_TAG(PT_STRING8,0x3A15)
+#define PR_POSTAL_ADDRESS   WINELIB_NAME_AW(PR_POSTAL_ADDRESS_)
+#define PR_COMPANY_NAME_W PROP_TAG(PT_UNICODE,0x3A16)
+#define PR_COMPANY_NAME_A PROP_TAG(PT_STRING8,0x3A16)
+#define PR_COMPANY_NAME   WINELIB_NAME_AW(PR_COMPANY_NAME_)
+#define PR_TITLE_W PROP_TAG(PT_UNICODE,0x3A17)
+#define PR_TITLE_A PROP_TAG(PT_STRING8,0x3A17)
+#define PR_TITLE   WINELIB_NAME_AW(PR_TITLE_)
+#define PR_DEPARTMENT_NAME_W PROP_TAG(PT_UNICODE,0x3A18)
+#define PR_DEPARTMENT_NAME_A PROP_TAG(PT_STRING8,0x3A18)
+#define PR_DEPARTMENT_NAME   WINELIB_NAME_AW(PR_DEPARTMENT_NAME_)
+#define PR_OFFICE_LOCATION_W PROP_TAG(PT_UNICODE,0x3A19)
+#define PR_OFFICE_LOCATION_A PROP_TAG(PT_STRING8,0x3A19)
+#define PR_OFFICE_LOCATION   WINELIB_NAME_AW(PR_OFFICE_LOCATION_)
+#define PR_PRIMARY_TELEPHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A1A)
+#define PR_PRIMARY_TELEPHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A1A)
+#define PR_PRIMARY_TELEPHONE_NUMBER   WINELIB_NAME_AW(PR_PRIMARY_TELEPHONE_NUMBER_)
+#define PR_BUSINESS2_TELEPHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A1B)
+#define PR_BUSINESS2_TELEPHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A1B)
+#define PR_BUSINESS2_TELEPHONE_NUMBER   WINELIB_NAME_AW(PR_BUSINESS2_TELEPHONE_NUMBER_)
+#define PR_OFFICE2_TELEPHONE_NUMBER_W PR_BUSINESS2_TELEPHONE_NUMBER_W
+#define PR_OFFICE2_TELEPHONE_NUMBER_A PR_BUSINESS2_TELEPHONE_NUMBER_A
+#define PR_OFFICE2_TELEPHONE_NUMBER   WINELIB_NAME_AW(PR_OFFICE2_TELEPHONE_NUMBER_)
+#define PR_MOBILE_TELEPHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A1C)
+#define PR_MOBILE_TELEPHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A1C)
+#define PR_MOBILE_TELEPHONE_NUMBER   WINELIB_NAME_AW(PR_MOBILE_TELEPHONE_NUMBER_)
+#define PR_CELLULAR_TELEPHONE_NUMBER_W PR_MOBILE_TELEPHONE_NUMBER_W
+#define PR_CELLULAR_TELEPHONE_NUMBER_A PR_MOBILE_TELEPHONE_NUMBER_A
+#define PR_CELLULAR_TELEPHONE_NUMBER   WINELIB_NAME_AW(PR_CELLULAR_TELEPHONE_NUMBER_)
+#define PR_RADIO_TELEPHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A1D)
+#define PR_RADIO_TELEPHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A1D)
+#define PR_RADIO_TELEPHONE_NUMBER   WINELIB_NAME_AW(PR_RADIO_TELEPHONE_NUMBER_)
+#define PR_CAR_TELEPHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A1E)
+#define PR_CAR_TELEPHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A1E)
+#define PR_CAR_TELEPHONE_NUMBER   WINELIB_NAME_AW(PR_CAR_TELEPHONE_NUMBER_)
+#define PR_OTHER_TELEPHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A1F)
+#define PR_OTHER_TELEPHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A1F)
+#define PR_OTHER_TELEPHONE_NUMBER   WINELIB_NAME_AW(PR_OTHER_TELEPHONE_NUMBER_)
+#define PR_TRANSMITABLE_DISPLAY_NAME_W PROP_TAG(PT_UNICODE,0x3A20)
+#define PR_TRANSMITABLE_DISPLAY_NAME_A PROP_TAG(PT_STRING8,0x3A20)
+#define PR_TRANSMITABLE_DISPLAY_NAME   WINELIB_NAME_AW(PR_TRANSMITABLE_DISPLAY_NAME_)
+#define PR_PAGER_TELEPHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A21)
+#define PR_PAGER_TELEPHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A21)
+#define PR_PAGER_TELEPHONE_NUMBER   WINELIB_NAME_AW(PR_PAGER_TELEPHONE_NUMBER_)
+#define PR_BEEPER_TELEPHONE_NUMBER_W PR_PAGER_TELEPHONE_NUMBER_W
+#define PR_BEEPER_TELEPHONE_NUMBER_A PR_PAGER_TELEPHONE_NUMBER_A
+#define PR_BEEPER_TELEPHONE_NUMBER   WINELIB_NAME_AW(PR_BEEPER_TELEPHONE_NUMBER_)
+#define PR_USER_CERTIFICATE PROP_TAG(PT_BINARY,0x3A22)
+#define PR_PRIMARY_FAX_NUMBER_W PROP_TAG(PT_UNICODE,0x3A23)
+#define PR_PRIMARY_FAX_NUMBER_A PROP_TAG(PT_STRING8,0x3A23)
+#define PR_PRIMARY_FAX_NUMBER   WINELIB_NAME_AW(PR_PRIMARY_FAX_NUMBER_)
+#define PR_BUSINESS_FAX_NUMBER_W PROP_TAG(PT_UNICODE,0x3A24)
+#define PR_BUSINESS_FAX_NUMBER_A PROP_TAG(PT_STRING8,0x3A24)
+#define PR_BUSINESS_FAX_NUMBER   WINELIB_NAME_AW(PR_BUSINESS_FAX_NUMBER_)
+#define PR_HOME_FAX_NUMBER_W PROP_TAG(PT_UNICODE,0x3A25)
+#define PR_HOME_FAX_NUMBER_A PROP_TAG(PT_STRING8,0x3A25)
+#define PR_HOME_FAX_NUMBER   WINELIB_NAME_AW(PR_HOME_FAX_NUMBER_)
+#define PR_COUNTRY_W PROP_TAG(PT_UNICODE,0x3A26)
+#define PR_COUNTRY_A PROP_TAG(PT_STRING8,0x3A26)
+#define PR_COUNTRY   WINELIB_NAME_AW(PR_COUNTRY_)
+#define PR_BUSINESS_ADDRESS_COUNTRY_W PR_COUNTRY_W
+#define PR_BUSINESS_ADDRESS_COUNTRY_A PR_COUNTRY_A
+#define PR_BUSINESS_ADDRESS_COUNTRY   WINELIB_NAME_AW(PR_BUSINESS_ADDRESS_COUNTRY_)
+#define PR_LOCALITY_W PROP_TAG(PT_UNICODE,0x3A27)
+#define PR_LOCALITY_A PROP_TAG(PT_STRING8,0x3A27)
+#define PR_LOCALITY   WINELIB_NAME_AW(PR_LOCALITY_)
+#define PR_BUSINESS_ADDRESS_CITY_W PR_LOCALITY_W
+#define PR_BUSINESS_ADDRESS_CITY_A PR_LOCALITY_A
+#define PR_BUSINESS_ADDRESS_CITY   WINELIB_NAME_AW(PR_BUSINESS_ADDRESS_CITY_)
+#define PR_STATE_OR_PROVINCE_W PROP_TAG(PT_UNICODE,0x3A28)
+#define PR_STATE_OR_PROVINCE_A PROP_TAG(PT_STRING8,0x3A28)
+#define PR_STATE_OR_PROVINCE   WINELIB_NAME_AW(PR_STATE_OR_PROVINCE_)
+#define PR_BUSINESS_ADDRESS_STATE_OR_PROVINCE_W PR_STATE_OR_PROVINCE_W
+#define PR_BUSINESS_ADDRESS_STATE_OR_PROVINCE_A PR_STATE_OR_PROVINCE_A
+#define PR_BUSINESS_ADDRESS_STATE_OR_PROVINCE   WINELIB_NAME_AW(PR_BUSINESS_ADDRESS_STATE_OR_PROVINCE_)
+#define PR_STREET_ADDRESS_W PROP_TAG(PT_UNICODE,0x3A29)
+#define PR_STREET_ADDRESS_A PROP_TAG(PT_STRING8,0x3A29)
+#define PR_STREET_ADDRESS   WINELIB_NAME_AW(PR_STREET_ADDRESS_)
+#define PR_BUSINESS_ADDRESS_STREET_W PR_STREET_ADDRESS_W
+#define PR_BUSINESS_ADDRESS_STREET_A PR_STREET_ADDRESS_A
+#define PR_BUSINESS_ADDRESS_STREET   WINELIB_NAME_AW(PR_BUSINESS_ADDRESS_STREET_)
+#define PR_POSTAL_CODE_W PROP_TAG(PT_UNICODE,0x3A2A)
+#define PR_POSTAL_CODE_A PROP_TAG(PT_STRING8,0x3A2A)
+#define PR_POSTAL_CODE   WINELIB_NAME_AW(PR_POSTAL_CODE_)
+#define PR_BUSINESS_ADDRESS_POSTAL_CODE_W PR_POSTAL_CODE_W
+#define PR_BUSINESS_ADDRESS_POSTAL_CODE_A PR_POSTAL_CODE_A
+#define PR_BUSINESS_ADDRESS_POSTAL_CODE   WINELIB_NAME_AW(PR_BUSINESS_ADDRESS_POSTAL_CODE_)
+#define PR_POST_OFFICE_BOX_W PROP_TAG(PT_UNICODE,0x3A2B)
+#define PR_POST_OFFICE_BOX_A PROP_TAG(PT_STRING8,0x3A2B)
+#define PR_POST_OFFICE_BOX   WINELIB_NAME_AW(PR_POST_OFFICE_BOX_)
+#define PR_BUSINESS_ADDRESS_POST_OFFICE_BOX_W PR_POST_OFFICE_BOX_W
+#define PR_BUSINESS_ADDRESS_POST_OFFICE_BOX_A PR_POST_OFFICE_BOX_A
+#define PR_BUSINESS_ADDRESS_POST_OFFICE_BOX   WINELIB_NAME_AW(PR_BUSINESS_ADDRESS_POST_OFFICE_BOX_)
+#define PR_TELEX_NUMBER_W PROP_TAG(PT_UNICODE,0x3A2C)
+#define PR_TELEX_NUMBER_A PROP_TAG(PT_STRING8,0x3A2C)
+#define PR_TELEX_NUMBER   WINELIB_NAME_AW(PR_TELEX_NUMBER_)
+#define PR_ISDN_NUMBER_W PROP_TAG(PT_UNICODE,0x3A2D)
+#define PR_ISDN_NUMBER_A PROP_TAG(PT_STRING8,0x3A2D)
+#define PR_ISDN_NUMBER   WINELIB_NAME_AW(PR_ISDN_NUMBER_)
+#define PR_ASSISTANT_TELEPHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A2E)
+#define PR_ASSISTANT_TELEPHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A2E)
+#define PR_ASSISTANT_TELEPHONE_NUMBER   WINELIB_NAME_AW(PR_ASSISTANT_TELEPHONE_NUMBER_)
+#define PR_HOME2_TELEPHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A2F)
+#define PR_HOME2_TELEPHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A2F)
+#define PR_HOME2_TELEPHONE_NUMBER   WINELIB_NAME_AW(PR_HOME2_TELEPHONE_NUMBER_)
+#define PR_ASSISTANT_W PROP_TAG(PT_UNICODE,0x3A30)
+#define PR_ASSISTANT_A PROP_TAG(PT_STRING8,0x3A30)
+#define PR_ASSISTANT   WINELIB_NAME_AW(PR_ASSISTANT_)
+#define PR_SEND_RICH_INFO PROP_TAG(PT_BOOLEAN,0x3A40)
+#define PR_WEDDING_ANNIVERSARY PROP_TAG(PT_SYSTIME,0x3A41)
+#define PR_BIRTHDAY PROP_TAG(PT_SYSTIME,0x3A42)
+#define PR_HOBBIES_W PROP_TAG(PT_UNICODE,0x3A43)
+#define PR_HOBBIES_A PROP_TAG(PT_STRING8,0x3A43)
+#define PR_HOBBIES   WINELIB_NAME_AW(PR_HOBBIES_)
+#define PR_MIDDLE_NAME_W PROP_TAG(PT_UNICODE,0x3A44)
+#define PR_MIDDLE_NAME_A PROP_TAG(PT_STRING8,0x3A44)
+#define PR_MIDDLE_NAME   WINELIB_NAME_AW(PR_MIDDLE_NAME_)
+#define PR_DISPLAY_NAME_PREFIX_W PROP_TAG(PT_UNICODE,0x3A45)
+#define PR_DISPLAY_NAME_PREFIX_A PROP_TAG(PT_STRING8,0x3A45)
+#define PR_DISPLAY_NAME_PREFIX   WINELIB_NAME_AW(PR_DISPLAY_NAME_PREFIX_)
+#define PR_PROFESSION_W PROP_TAG(PT_UNICODE,0x3A46)
+#define PR_PROFESSION_A PROP_TAG(PT_STRING8,0x3A46)
+#define PR_PROFESSION   WINELIB_NAME_AW(PR_PROFESSION_)
+#define PR_PREFERRED_BY_NAME_W PROP_TAG(PT_UNICODE,0x3A47)
+#define PR_PREFERRED_BY_NAME_A PROP_TAG(PT_STRING8,0x3A47)
+#define PR_PREFERRED_BY_NAME   WINELIB_NAME_AW(PR_PREFERRED_BY_NAME_)
+#define PR_SPOUSE_NAME_W PROP_TAG(PT_UNICODE,0x3A48)
+#define PR_SPOUSE_NAME_A PROP_TAG(PT_STRING8,0x3A48)
+#define PR_SPOUSE_NAME   WINELIB_NAME_AW(PR_SPOUSE_NAME_)
+#define PR_COMPUTER_NETWORK_NAME_W PROP_TAG(PT_UNICODE,0x3A49)
+#define PR_COMPUTER_NETWORK_NAME_A PROP_TAG(PT_STRING8,0x3A49)
+#define PR_COMPUTER_NETWORK_NAME   WINELIB_NAME_AW(PR_COMPUTER_NETWORK_NAME_)
+#define PR_CUSTOMER_ID_W PROP_TAG(PT_UNICODE,0x3A4A)
+#define PR_CUSTOMER_ID_A PROP_TAG(PT_STRING8,0x3A4A)
+#define PR_CUSTOMER_ID   WINELIB_NAME_AW(PR_CUSTOMER_ID_)
+#define PR_TTYTDD_PHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A4B)
+#define PR_TTYTDD_PHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A4B)
+#define PR_TTYTDD_PHONE_NUMBER   WINELIB_NAME_AW(PR_TTYTDD_PHONE_NUMBER_)
+#define PR_FTP_SITE_W PROP_TAG(PT_UNICODE,0x3A4C)
+#define PR_FTP_SITE_A PROP_TAG(PT_STRING8,0x3A4C)
+#define PR_FTP_SITE   WINELIB_NAME_AW(PR_FTP_SITE_)
+#define PR_GENDER PROP_TAG(PT_I2,0x3A4D)
+#define PR_MANAGER_NAME_W PROP_TAG(PT_UNICODE,0x3A4E)
+#define PR_MANAGER_NAME_A PROP_TAG(PT_STRING8,0x3A4E)
+#define PR_MANAGER_NAME   WINELIB_NAME_AW(PR_MANAGER_NAME_)
+#define PR_NICKNAME_W PROP_TAG(PT_UNICODE,0x3A4F)
+#define PR_NICKNAME_A PROP_TAG(PT_STRING8,0x3A4F)
+#define PR_NICKNAME   WINELIB_NAME_AW(PR_NICKNAME_)
+#define PR_PERSONAL_HOME_PAGE_W PROP_TAG(PT_UNICODE,0x3A50)
+#define PR_PERSONAL_HOME_PAGE_A PROP_TAG(PT_STRING8,0x3A50)
+#define PR_PERSONAL_HOME_PAGE   WINELIB_NAME_AW(PR_PERSONAL_HOME_PAGE_)
+#define PR_BUSINESS_HOME_PAGE_W PROP_TAG(PT_UNICODE,0x3A51)
+#define PR_BUSINESS_HOME_PAGE_A PROP_TAG(PT_STRING8,0x3A51)
+#define PR_BUSINESS_HOME_PAGE   WINELIB_NAME_AW(PR_BUSINESS_HOME_PAGE_)
+#define PR_CONTACT_VERSION PROP_TAG(PT_CLSID,0x3A52)
+#define PR_CONTACT_ENTRYIDS PROP_TAG(PT_MV_BINARY,0x3A53)
+#define PR_CONTACT_ADDRTYPES_W PROP_TAG(PT_MV_UNICODE,0x3A54)
+#define PR_CONTACT_ADDRTYPES_A PROP_TAG(PT_MV_STRING8,0x3A54)
+#define PR_CONTACT_ADDRTYPES   WINELIB_NAME_AW(PR_CONTACT_ADDRTYPES_)
+#define PR_CONTACT_DEFAULT_ADDRESS_INDEX PROP_TAG(PT_I4,0x3A55)
+#define PR_CONTACT_EMAIL_ADDRESSES_W PROP_TAG(PT_MV_UNICODE,0x3A56)
+#define PR_CONTACT_EMAIL_ADDRESSES_A PROP_TAG(PT_MV_STRING8,0x3A56)
+#define PR_CONTACT_EMAIL_ADDRESSES   WINELIB_NAME_AW(PR_CONTACT_EMAIL_ADDRESSES_)
+#define PR_COMPANY_MAIN_PHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A57)
+#define PR_COMPANY_MAIN_PHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A57)
+#define PR_COMPANY_MAIN_PHONE_NUMBER   WINELIB_NAME_AW(PR_COMPANY_MAIN_PHONE_NUMBER_)
+#define PR_CHILDRENS_NAMES_W PROP_TAG(PT_MV_UNICODE,0x3A58)
+#define PR_CHILDRENS_NAMES_A PROP_TAG(PT_MV_STRING8,0x3A58)
+#define PR_CHILDRENS_NAMES   WINELIB_NAME_AW(PR_CHILDRENS_NAMES_)
+#define PR_HOME_ADDRESS_CITY_W PROP_TAG(PT_UNICODE,0x3A59)
+#define PR_HOME_ADDRESS_CITY_A PROP_TAG(PT_STRING8,0x3A59)
+#define PR_HOME_ADDRESS_CITY   WINELIB_NAME_AW(PR_HOME_ADDRESS_CITY_)
+#define PR_HOME_ADDRESS_COUNTRY_W PROP_TAG(PT_UNICODE,0x3A5A)
+#define PR_HOME_ADDRESS_COUNTRY_A PROP_TAG(PT_STRING8,0x3A5A)
+#define PR_HOME_ADDRESS_COUNTRY   WINELIB_NAME_AW(PR_HOME_ADDRESS_COUNTRY_)
+#define PR_HOME_ADDRESS_POSTAL_CODE_W PROP_TAG(PT_UNICODE,0x3A5B)
+#define PR_HOME_ADDRESS_POSTAL_CODE_A PROP_TAG(PT_STRING8,0x3A5B)
+#define PR_HOME_ADDRESS_POSTAL_CODE   WINELIB_NAME_AW(PR_HOME_ADDRESS_POSTAL_CODE_)
+#define PR_HOME_ADDRESS_STATE_OR_PROVINCE_W PROP_TAG(PT_UNICODE,0x3A5C)
+#define PR_HOME_ADDRESS_STATE_OR_PROVINCE_A PROP_TAG(PT_STRING8,0x3A5C)
+#define PR_HOME_ADDRESS_STATE_OR_PROVINCE   WINELIB_NAME_AW(PR_HOME_ADDRESS_STATE_OR_PROVINCE_)
+#define PR_HOME_ADDRESS_STREET_W PROP_TAG(PT_UNICODE,0x3A5D)
+#define PR_HOME_ADDRESS_STREET_A PROP_TAG(PT_STRING8,0x3A5D)
+#define PR_HOME_ADDRESS_STREET   WINELIB_NAME_AW(PR_HOME_ADDRESS_STREET_)
+#define PR_HOME_ADDRESS_POST_OFFICE_BOX_W PROP_TAG(PT_UNICODE,0x3A5E)
+#define PR_HOME_ADDRESS_POST_OFFICE_BOX_A PROP_TAG(PT_STRING8,0x3A5E)
+#define PR_HOME_ADDRESS_POST_OFFICE_BOX   WINELIB_NAME_AW(PR_HOME_ADDRESS_POST_OFFICE_BOX_)
+#define PR_OTHER_ADDRESS_CITY_W PROP_TAG(PT_UNICODE,0x3A5F)
+#define PR_OTHER_ADDRESS_CITY_A PROP_TAG(PT_STRING8,0x3A5F)
+#define PR_OTHER_ADDRESS_CITY   WINELIB_NAME_AW(PR_OTHER_ADDRESS_CITY_)
+#define PR_OTHER_ADDRESS_COUNTRY_W PROP_TAG(PT_UNICODE,0x3A60)
+#define PR_OTHER_ADDRESS_COUNTRY_A PROP_TAG(PT_STRING8,0x3A60)
+#define PR_OTHER_ADDRESS_COUNTRY   WINELIB_NAME_AW(PR_OTHER_ADDRESS_COUNTRY_)
+#define PR_OTHER_ADDRESS_POSTAL_CODE_W PROP_TAG(PT_UNICODE,0x3A61)
+#define PR_OTHER_ADDRESS_POSTAL_CODE_A PROP_TAG(PT_STRING8,0x3A61)
+#define PR_OTHER_ADDRESS_POSTAL_CODE   WINELIB_NAME_AW(PR_OTHER_ADDRESS_POSTAL_CODE_)
+#define PR_OTHER_ADDRESS_STATE_OR_PROVINCE_W PROP_TAG(PT_UNICODE,0x3A62)
+#define PR_OTHER_ADDRESS_STATE_OR_PROVINCE_A PROP_TAG(PT_STRING8,0x3A62)
+#define PR_OTHER_ADDRESS_STATE_OR_PROVINCE   WINELIB_NAME_AW(PR_OTHER_ADDRESS_STATE_OR_PROVINCE_)
+#define PR_OTHER_ADDRESS_STREET_W PROP_TAG(PT_UNICODE,0x3A63)
+#define PR_OTHER_ADDRESS_STREET_A PROP_TAG(PT_STRING8,0x3A63)
+#define PR_OTHER_ADDRESS_STREET   WINELIB_NAME_AW(PR_OTHER_ADDRESS_STREET_)
+#define PR_OTHER_ADDRESS_POST_OFFICE_BOX_W PROP_TAG(PT_UNICODE,0x3A64)
+#define PR_OTHER_ADDRESS_POST_OFFICE_BOX_A PROP_TAG(PT_STRING8,0x3A64)
+#define PR_OTHER_ADDRESS_POST_OFFICE_BOX   WINELIB_NAME_AW(PR_OTHER_ADDRESS_POST_OFFICE_BOX_)
+#define PR_STORE_PROVIDERS PROP_TAG(PT_BINARY,0x3D00)
+#define PR_AB_PROVIDERS PROP_TAG(PT_BINARY,0x3D01)
+#define PR_TRANSPORT_PROVIDERS PROP_TAG(PT_BINARY,0x3D02)
+#define PR_DEFAULT_PROFILE PROP_TAG(PT_BOOLEAN,0x3D04)
+#define PR_AB_SEARCH_PATH PROP_TAG(PT_MV_BINARY,0x3D05)
+#define PR_AB_DEFAULT_DIR PROP_TAG(PT_BINARY,0x3D06)
+#define PR_AB_DEFAULT_PAB PROP_TAG(PT_BINARY,0x3D07)
+#define PR_FILTERING_HOOKS PROP_TAG(PT_BINARY, 0x3D08)
+#define PR_SERVICE_NAME_W PROP_TAG(PT_UNICODE,0x3D09)
+#define PR_SERVICE_NAME_A PROP_TAG(PT_STRING8,0x3D09)
+#define PR_SERVICE_NAME   WINELIB_NAME_AW(PR_SERVICE_NAME_)
+#define PR_SERVICE_DLL_NAME_W PROP_TAG(PT_UNICODE,0x3D0A)
+#define PR_SERVICE_DLL_NAME_A PROP_TAG(PT_STRING8,0x3D0A)
+#define PR_SERVICE_DLL_NAME   WINELIB_NAME_AW(PR_SERVICE_DLL_NAME_)
+#define PR_SERVICE_ENTRY_NAME PROP_TAG(PT_STRING8,0x3D0B)
+#define PR_SERVICE_UID PROP_TAG(PT_BINARY,0x3D0C)
+#define PR_SERVICE_EXTRA_UIDS PROP_TAG(PT_BINARY,0x3D0D)
+#define PR_SERVICES PROP_TAG(PT_BINARY,0x3D0E)
+#define PR_SERVICE_SUPPORT_FILES_W PROP_TAG(PT_MV_UNICODE,0x3D0F)
+#define PR_SERVICE_SUPPORT_FILES_A PROP_TAG(PT_MV_STRING8,0x3D0F)
+#define PR_SERVICE_SUPPORT_FILES   WINELIB_NAME_AW(PR_SERVICE_SUPPORT_FILES_)
+#define PR_SERVICE_DELETE_FILES_W PROP_TAG(PT_MV_UNICODE,0x3D10)
+#define PR_SERVICE_DELETE_FILES_A PROP_TAG(PT_MV_STRING8,0x3D10)
+#define PR_SERVICE_DELETE_FILES   WINELIB_NAME_AW(PR_SERVICE_DELETE_FILES_)
+#define PR_AB_SEARCH_PATH_UPDATE PROP_TAG(PT_BINARY,0x3D11)
+#define PR_PROFILE_NAME_A PROP_TAG(PT_STRING8,0x3D12)
+#define PR_PROFILE_NAME_W PROP_TAG(PT_UNICODE,0x3D12)
+#define PR_PROFILE_NAME   WINELIB_NAME_AW(PR_PROFILE_NAME_)
+#define PR_IDENTITY_DISPLAY_W PROP_TAG(PT_UNICODE,0x3E00)
+#define PR_IDENTITY_DISPLAY_A PROP_TAG(PT_STRING8,0x3E00)
+#define PR_IDENTITY_DISPLAY   WINELIB_NAME_AW(PR_IDENTITY_DISPLAY_)
+#define PR_IDENTITY_ENTRYID PROP_TAG(PT_BINARY,0x3E01)
+#define PR_RESOURCE_METHODS PROP_TAG(PT_I4,0x3E02)
+/* Service provider type */
+#define PR_RESOURCE_TYPE PROP_TAG(PT_I4,0x3E03)
+#define PR_STATUS_CODE PROP_TAG(PT_I4,0x3E04)
+#define PR_IDENTITY_SEARCH_KEY PROP_TAG(PT_BINARY,0x3E05)
+#define PR_OWN_STORE_ENTRYID PROP_TAG(PT_BINARY,0x3E06)
+#define PR_RESOURCE_PATH_W PROP_TAG(PT_UNICODE,0x3E07)
+#define PR_RESOURCE_PATH_A PROP_TAG(PT_STRING8,0x3E07)
+#define PR_RESOURCE_PATH   WINELIB_NAME_AW(PR_RESOURCE_PATH_)
+#define PR_STATUS_STRING_W PROP_TAG(PT_UNICODE,0x3E08)
+#define PR_STATUS_STRING_A PROP_TAG(PT_STRING8,0x3E08)
+#define PR_STATUS_STRING   WINELIB_NAME_AW(PR_STATUS_STRING_)
+#define PR_X400_DEFERRED_DELIVERY_CANCEL PROP_TAG(PT_BOOLEAN,0x3E09)
+#define PR_HEADER_FOLDER_ENTRYID PROP_TAG(PT_BINARY,0x3E0A)
+#define PR_REMOTE_PROGRESS PROP_TAG(PT_I4,0x3E0B)
+#define PR_REMOTE_PROGRESS_TEXT_W PROP_TAG(PT_UNICODE,0x3E0C)
+#define PR_REMOTE_PROGRESS_TEXT_A PROP_TAG(PT_STRING8,0x3E0C)
+#define PR_REMOTE_PROGRESS_TEXT   WINELIB_NAME_AW(PR_REMOTE_PROGRESS_TEXT_)
+#define PR_REMOTE_VALIDATE_OK PROP_TAG(PT_BOOLEAN,0x3E0D)
+#define PR_CONTROL_FLAGS PROP_TAG(PT_I4,0x3F00)
+#define PR_CONTROL_STRUCTURE PROP_TAG(PT_BINARY,0x3F01)
+#define PR_CONTROL_TYPE PROP_TAG(PT_I4,0x3F02)
+#define PR_DELTAX PROP_TAG(PT_I4,0x3F03)
+#define PR_DELTAY PROP_TAG(PT_I4,0x3F04)
+#define PR_XPOS PROP_TAG(PT_I4,0x3F05)
+#define PR_YPOS PROP_TAG(PT_I4,0x3F06)
+#define PR_CONTROL_ID PROP_TAG(PT_BINARY,0x3F07)
+#define PR_INITIAL_DETAILS_PANE PROP_TAG(PT_I4,0x3F08)
+
+#define PROP_ID_SECURE_MIN 0x67F0
+#define PROP_ID_SECURE_MAX 0x67FF
+
+#endif /* MAPITAGS_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapiutil.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapiutil.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapiutil.h	(revision 16410)
@@ -0,0 +1,277 @@
+/*
+ * Copyright 2004 Jon Griffiths
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef MAPIUTIL_H_
+#define MAPIUTIL_H_
+
+#include <mapix.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define TAD_ALL_ROWS 1 /* Delete all rows */
+
+LPMALLOC WINAPI MAPIGetDefaultMalloc(void);
+
+#define SOF_UNIQUEFILENAME 0x80000000U /* Create a unique (temporary) filename */
+
+#if defined (UNICODE) || defined (__WINESRC__)
+typedef HRESULT (WINAPI * LPOPENSTREAMONFILE)(LPALLOCATEBUFFER,LPFREEBUFFER,
+                                              ULONG,LPWSTR,LPWSTR,LPSTREAM*);
+HRESULT WINAPI OpenStreamOnFile(LPALLOCATEBUFFER,LPFREEBUFFER,
+                                ULONG,LPWSTR,LPWSTR,LPSTREAM*);
+#else
+typedef HRESULT (WINAPI * LPOPENSTREAMONFILE)(LPALLOCATEBUFFER,LPFREEBUFFER,
+                                              ULONG,LPSTR,LPSTR,LPSTREAM*);
+HRESULT WINAPI OpenStreamOnFile(LPALLOCATEBUFFER,LPFREEBUFFER,
+                                ULONG,LPSTR,LPSTR,LPSTREAM*);
+#endif
+#define OPENSTREAMONFILE "OpenStreamOnFile"
+
+BOOL WINAPI FEqualNames(LPMAPINAMEID,LPMAPINAMEID);
+
+typedef struct IPropData *LPPROPDATA;
+
+#define IPROP_READONLY  0x00001U
+#define IPROP_READWRITE 0x00002U
+#define IPROP_CLEAN     0x10000U
+#define IPROP_DIRTY     0x20000U
+
+SCODE WINAPI CreateIProp(LPCIID,ALLOCATEBUFFER*,ALLOCATEMORE*,FREEBUFFER*,
+                         LPVOID,LPPROPDATA*);
+SCODE WINAPI PropCopyMore(LPSPropValue,LPSPropValue,ALLOCATEMORE*,LPVOID);
+ULONG WINAPI UlPropSize(LPSPropValue);
+VOID  WINAPI GetInstance(LPSPropValue,LPSPropValue,ULONG);
+BOOL  WINAPI FPropContainsProp(LPSPropValue,LPSPropValue,ULONG);
+BOOL  WINAPI FPropCompareProp(LPSPropValue,ULONG,LPSPropValue);
+LONG  WINAPI LPropCompareProp(LPSPropValue,LPSPropValue);
+
+HRESULT WINAPI HrAddColumns(LPMAPITABLE,LPSPropTagArray,LPALLOCATEBUFFER,LPFREEBUFFER);
+HRESULT WINAPI HrAddColumnsEx(LPMAPITABLE,LPSPropTagArray,LPALLOCATEBUFFER,
+                              LPFREEBUFFER,void (*)(LPSPropTagArray));
+HRESULT WINAPI HrAllocAdviseSink(LPNOTIFCALLBACK,LPVOID,LPMAPIADVISESINK*);
+HRESULT WINAPI HrThisThreadAdviseSink(LPMAPIADVISESINK,LPMAPIADVISESINK*);
+HRESULT WINAPI HrDispatchNotifications (ULONG);
+
+ULONG WINAPI UlAddRef(void*);
+ULONG WINAPI UlRelease(void*);
+
+HRESULT WINAPI HrGetOneProp(LPMAPIPROP,ULONG,LPSPropValue*);
+HRESULT WINAPI HrSetOneProp(LPMAPIPROP,LPSPropValue);
+BOOL    WINAPI FPropExists(LPMAPIPROP,ULONG);
+void    WINAPI FreePadrlist(LPADRLIST);
+void    WINAPI FreeProws(LPSRowSet);
+HRESULT WINAPI HrQueryAllRows(LPMAPITABLE,LPSPropTagArray,LPSRestriction,
+                              LPSSortOrderSet,LONG,LPSRowSet*);
+LPSPropValue WINAPI PpropFindProp(LPSPropValue,ULONG,ULONG);
+
+#if defined (UNICODE) || defined (__WINESRC__)
+BOOL   WINAPI FBinFromHex(LPWSTR,LPBYTE);
+SCODE  WINAPI ScBinFromHexBounded(LPWSTR,LPBYTE,ULONG);
+void   WINAPI HexFromBin(LPBYTE,int,LPWSTR);
+ULONG  WINAPI UlFromSzHex(LPCWSTR);
+LPWSTR WINAPI SzFindCh(LPCWSTR,USHORT);
+LPWSTR WINAPI SzFindLastCh(LPCWSTR,USHORT);
+LPWSTR WINAPI SzFindSz(LPCWSTR,LPCWSTR);
+UINT   WINAPI UFromSz(LPCSTR);
+#else
+BOOL  WINAPI FBinFromHex(LPSTR,LPBYTE);
+SCODE WINAPI ScBinFromHexBounded(LPSTR,LPBYTE,ULONG);
+void  WINAPI HexFromBin(LPBYTE,int,LPSTR);
+ULONG WINAPI UlFromSzHex(LPCSTR);
+LPSTR WINAPI SzFindCh(LPCSTR,USHORT);
+LPSTR WINAPI SzFindLastCh(LPCSTR,USHORT);
+LPSTR WINAPI SzFindSz(LPCSTR,LPCSTR);
+UINT  WINAPI UFromSz(LPCSTR);
+#endif
+
+SCODE WINAPI ScInitMapiUtil(ULONG);
+void  WINAPI DeinitMapiUtil(void);
+
+#define szHrDispatchNotifications "_HrDispatchNotifications@4"
+#define szScCreateConversationIndex "_ScCreateConversationIndex@16"
+
+typedef HRESULT (WINAPI DISPATCHNOTIFICATIONS)(ULONG);
+typedef DISPATCHNOTIFICATIONS *LPDISPATCHNOTIFICATIONS;
+typedef SCODE (WINAPI CREATECONVERSATIONINDEX)(ULONG,LPBYTE,ULONG*,LPBYTE*);
+typedef CREATECONVERSATIONINDEX *LPCREATECONVERSATIONINDEX;
+
+typedef struct ITableData *LPTABLEDATA;
+
+typedef void (WINAPI CALLERRELEASE)(ULONG,LPTABLEDATA,LPMAPITABLE);
+
+/*****************************************************************************
+ * ITableData interface
+ *
+ * The underlying table data structure for IMAPITable.
+ */
+#define INTERFACE ITableData
+DECLARE_INTERFACE_(ITableData,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** ITableData methods ***/
+    STDMETHOD(HrGetView)(THIS_ LPSSortOrderSet lpSort, CALLERRELEASE *lpRel,
+                         ULONG ulData, LPMAPITABLE *lppTable) PURE;
+    STDMETHOD(HrModifyRow)(THIS_ LPSRow lpRow) PURE;
+    STDMETHOD(HrDeleteRow)(THIS_ LPSPropValue lpKey) PURE;
+    STDMETHOD(HrQueryRow)(THIS_ LPSPropValue lpKey, LPSRow *lppRow, ULONG *lpRowNum) PURE;
+    STDMETHOD(HrEnumRow)(THIS_ ULONG ulRowNum, LPSRow *lppRow) PURE;
+    STDMETHOD(HrNotify)(THIS_ ULONG ulFlags, ULONG cValues, LPSPropValue lpValues) PURE;
+    STDMETHOD(HrInsertRow)(THIS_ ULONG ulRow, LPSRow lpRow) PURE;
+    STDMETHOD(HrModifyRows)(THIS_ ULONG ulFlags, LPSRowSet lpRows) PURE;
+    STDMETHOD(HrDeleteRows)(THIS_ ULONG ulFlags, LPSRowSet lpRows, ULONG *lpCount) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+        /*** IUnknown methods ***/
+#define ITableData_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define ITableData_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define ITableData_Release(p)            (p)->lpVtbl->Release(p)
+        /*** ITableData methods ***/
+#define ITableData_HrGetView(p,a,b,c,d)  (p)->lpVtbl->HrGetView(p,a,b,c,d)
+#define ITableData_HrModifyRow(p,a)      (p)->lpVtbl->HrModifyRow(p,a)
+#define ITableData_HrDeleteRow(p,a)      (p)->lpVtbl->HrDeleteRow(p,a)
+#define ITableData_HrQueryRow(p,a,b,c)   (p)->lpVtbl->HrQueryRow(p,a,b,c)
+#define ITableData_HrEnumRow(p,a,b)      (p)->lpVtbl->HrEnumRow(p,a,b)
+#define ITableData_HrNotify(p,a,b,c)     (p)->lpVtbl->HrNotify(p,a,b,c)
+#define ITableData_HrInsertRow(p,a,b)    (p)->lpVtbl->HrInsertRow(p,a,b)
+#define ITableData_HrModifyRows(p,a,b)   (p)->lpVtbl->HrModifyRows(p,a,b)
+#define ITableData_HrDeleteRows(p,a,b,c) (p)->lpVtbl->HrDeleteRows(p,a,b,c)
+#endif
+
+SCODE WINAPI CreateTable(LPCIID,ALLOCATEBUFFER*,ALLOCATEMORE*,FREEBUFFER*,
+                         LPVOID,ULONG,ULONG,LPSPropTagArray,LPTABLEDATA*);
+
+SCODE WINAPI ScCountNotifications(int,LPNOTIFICATION,ULONG*);
+SCODE WINAPI ScCountProps(int,LPSPropValue,ULONG*);
+SCODE WINAPI ScCopyNotifications(int,LPNOTIFICATION,LPVOID,ULONG*);
+SCODE WINAPI ScCopyProps(int,LPSPropValue,LPVOID,ULONG*);
+SCODE WINAPI ScDupPropset(int,LPSPropValue,LPALLOCATEBUFFER,LPSPropValue*);
+SCODE WINAPI ScRelocNotifications(int,LPNOTIFICATION,LPVOID,LPVOID,ULONG*);
+SCODE WINAPI ScRelocProps(int,LPSPropValue,LPVOID,LPVOID,ULONG*);
+
+LPSPropValue WINAPI LpValFindProp(ULONG,ULONG,LPSPropValue);
+
+static inline FILETIME FtAddFt(FILETIME ftLeft, FILETIME ftRight)
+{
+    LONG64 *pl = (LONG64*)&ftLeft, *pr = (LONG64*)&ftRight;
+    union { FILETIME ft; LONG64 ll; } ftmap;    
+    ftmap.ll = *pl + *pr;
+    return ftmap.ft;
+}
+
+static inline FILETIME FtSubFt(FILETIME ftLeft, FILETIME ftRight)
+{
+    LONG64 *pl = (LONG64*)&ftLeft, *pr = (LONG64*)&ftRight;
+    union { FILETIME ft; LONG64 ll; } ftmap;    
+    ftmap.ll = *pl - *pr;
+    return ftmap.ft;
+}
+
+static inline FILETIME FtNegFt(FILETIME ftLeft)
+{
+    LONG64 *p = (LONG64*)&ftLeft;
+    union { FILETIME ft; LONG64 ll; } ftmap;    
+    ftmap.ll = -*p;
+    return ftmap.ft;
+}
+
+static inline FILETIME FtMulDw(DWORD dwLeft, FILETIME ftRight)
+{
+    LONG64 l = (LONG64)dwLeft, *pr = (LONG64*)&ftRight;
+    union { FILETIME ft; LONG64 ll; } ftmap;    
+    ftmap.ll = l * (*pr);
+    return ftmap.ft;
+}
+
+static inline FILETIME FtMulDwDw(DWORD dwLeft, DWORD dwRight)
+{
+    LONG64 l = (LONG64)dwLeft, r = (LONG64)dwRight;
+    union { FILETIME ft; LONG64 ll; } ftmap;    
+    ftmap.ll = l * r;
+    return ftmap.ft;
+}
+
+/*****************************************************************************
+ * IPropData interface
+ *
+ */
+#define INTERFACE IPropData
+DECLARE_INTERFACE_(IPropData,IMAPIProp)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IMAPIProp methods ***/
+    STDMETHOD(GetLastError)(THIS_ HRESULT hRes, ULONG ulFlags, LPMAPIERROR *lppErr) PURE;
+    STDMETHOD(SaveChanges)(THIS_ ULONG ulFlags) PURE;
+    STDMETHOD(GetProps)(THIS_ LPSPropTagArray lpPropTags, ULONG ulFlags, ULONG *lpValues, LPSPropValue *lppProps) PURE;
+    STDMETHOD(GetPropList)(THIS_ ULONG  ulFlags, LPSPropTagArray *lppPropTagArray) PURE;
+    STDMETHOD(OpenProperty)(THIS_ ULONG ulPropTag, LPCIID lpIid, ULONG ulOpts, ULONG ulFlags, LPUNKNOWN *lppUnk) PURE;
+    STDMETHOD(SetProps)(THIS_ ULONG cValues, LPSPropValue lpProps, LPSPropProblemArray *lppProbs) PURE;
+    STDMETHOD(DeleteProps)(THIS_ LPSPropTagArray lpPropTags, LPSPropProblemArray *lppProbs) PURE;
+    STDMETHOD(CopyTo)(THIS_ ULONG ciidExclude, LPCIID lpIid, LPSPropTagArray lpProps, ULONG ulParam,
+                      LPMAPIPROGRESS lpProgress, LPCIID lpIface,LPVOID lpDest, ULONG ulFlags,
+                      LPSPropProblemArray *lppProbs) PURE;
+    STDMETHOD(CopyProps)(THIS_ LPSPropTagArray lpIncludeProps, ULONG ulParam, LPMAPIPROGRESS lpProgress,
+                         LPCIID lpIid, LPVOID lpDestObj, ULONG ulFlags, LPSPropProblemArray *lppProblems) PURE;
+    STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray *lppPropTags, LPGUID lpIid, ULONG ulFlags, ULONG *lpCount,
+                               LPMAPINAMEID **lpppNames) PURE;
+    STDMETHOD(GetIDsFromNames)(THIS_ ULONG cPropNames, LPMAPINAMEID *lppNames, ULONG ulFlags, LPSPropTagArray *lppPropTags) PURE;
+    /*** IPropData methods ***/
+    STDMETHOD(HrSetObjAccess)(THIS_ ULONG ulAccess) PURE;
+    STDMETHOD(HrSetPropAccess)(THIS_ LPSPropTagArray lpPropTags, ULONG *lpAccess) PURE;
+    STDMETHOD(HrGetPropAccess)(THIS_ LPSPropTagArray *lppPropTags, ULONG **lppAccess) PURE;
+    STDMETHOD(HrAddObjProps)(THIS_ LPSPropTagArray lppPropTags, LPSPropProblemArray *lppProbs) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+        /*** IUnknown methods ***/
+#define IPropData_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IPropData_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IPropData_Release(p)                   (p)->lpVtbl->Release(p)
+        /*** IMAPIProp methods ***/
+#define IPropData_GetLastError(p,a,b,c)        (p)->lpVtbl->GetLastError(p,a,b,c)        
+#define IPropData_SaveChanges(p,a)             (p)->lpVtbl->SaveChanges(p,a)             
+#define IPropData_GetProps(p,a,b,c,d)          (p)->lpVtbl->GetProps(p,a,b,c,d)          
+#define IPropData_GetPropList(p,a,b)           (p)->lpVtbl->GetPropList(p,a,b)           
+#define IPropData_OpenProperty(p,a,b,c,d,e)    (p)->lpVtbl->OpenProperty(p,a,b,c,d,e)    
+#define IPropData_SetProps(p,a,b,c)            (p)->lpVtbl->SetProps(p,a,b,c)            
+#define IPropData_DeleteProps(p,a,b)           (p)->lpVtbl->DeleteProps(p,a,b)           
+#define IPropData_CopyTo(p,a,b,c,d,e,f,g,h,i)  (p)->lpVtbl->CopyTo(p,a,b,c,d,e,f,g,h,i)  
+#define IPropData_CopyProps(p,a,b,c,d,e,f,g)   (p)->lpVtbl->CopyProps(p,a,b,c,d,e,f,g)   
+#define IPropData_GetNamesFromIDs(p,a,b,c,d,e) (p)->lpVtbl->GetNamesFromIDs(p,a,b,c,d,e) 
+#define IPropData_GetIDsFromNames(p,a,b,c,d)   (p)->lpVtbl->GetIDsFromNames(p,a,b,c,d)   
+#define IPropData_HrSetObjAccess(p,a)          (p)->lpVtbl->HrSetObjAccess(p,a)
+#define IPropData_HrSetPropAccess(p,a,b)       (p)->lpVtbl->HrSetPropAccess(p,a,b)
+#define IPropData_HrGetPropAccess(p,a,b)       (p)->lpVtbl->HrGetPropAccess(p,a,b)
+#define IPropData_HrAddObjProps(p,a,b)         (p)->lpVtbl->HrAddObjProps(p,a,b)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* MAPIUTIL_H_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapival.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapival.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapival.h	(revision 16410)
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2004 Jon Griffiths
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef MAPIVAL_H
+#define MAPIVAL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <mapiutil.h>
+#include <stddef.h>
+#include <stdarg.h>
+
+BOOL  WINAPI FBadRglpszW(LPWSTR*,ULONG);
+BOOL  WINAPI FBadRowSet(LPSRowSet);
+BOOL  WINAPI FBadRglpNameID(LPMAPINAMEID*,ULONG);
+BOOL  WINAPI FBadEntryList(LPENTRYLIST);
+ULONG WINAPI FBadRestriction(LPSRestriction);
+ULONG WINAPI FBadPropTag(ULONG);
+ULONG WINAPI FBadRow(LPSRow);
+ULONG WINAPI FBadProp(LPSPropValue);
+ULONG WINAPI FBadSortOrderSet(LPSSortOrderSet);
+ULONG WINAPI FBadColumnSet(LPSPropTagArray);
+
+#define FBadRgPropVal(p,n) FAILED(ScCountProps((n),(p),NULL))
+#define FBadPropVal(p)     FBadRgPropVal(1,(p))
+#define FBadAdrList(p)     FBadRowSet((LPSRowSet)(p))
+
+#define BAD_STANDARD_OBJ(a,b,c,d)         FALSE
+#define FBadUnknown(a)                    FALSE
+#define FBadQueryInterface(a,b,c)         FALSE
+#define FBadAddRef(a)                     FALSE
+#define FBadRelease(a)                    FALSE
+#define FBadGetLastError(a,b,c,d)         FALSE
+#define FBadSaveChanges(a,b)              FALSE
+#define FBadGetProps(a,b,c,d)             FALSE
+#define FBadGetPropList(a,b)              FALSE
+#define FBadOpenProperty(a,b,c,d,e,f)     FALSE
+#define FBadSetProps(a,b,c,d)             FALSE
+#define FBadDeleteProps(a,b,c)            FALSE
+#define FBadCopyTo(a,b,c,d,e,f,g,h,i,j)   FALSE
+#define FBadCopyProps(a,b,c,d,e,f,g,h)    FALSE
+#define FBadGetNamesFromIDs(a,b,c,d,e,f)  FALSE
+#define FBadGetIDsFromNames(a,b,c,d,e)    FALSE
+
+#define ValidateParms(x)   do { } while(0)
+#define UlValidateParms(x) do { } while(0)
+#define CheckParms(x)      do { } while(0)
+
+#define ValidateParameters1(a,b) do { } while(0)
+#define ValidateParameters2(a,b,c) do { } while(0)
+#define ValidateParameters3(a,b,c,d) do { } while(0)
+#define ValidateParameters4(a,b,c,d,e) do { } while(0)
+#define ValidateParameters5(a,b,c,d,e,f) do { } while(0)
+#define ValidateParameters6(a,b,c,d,e,f,g) do { } while(0)
+#define ValidateParameters7(a,b,c,d,e,f,g,h) do { } while(0)
+#define ValidateParameters8(a,b,c,d,e,f,g,h,i) do { } while(0)
+#define ValidateParameters9(a,b,c,d,e,f,g,h,i,j) do { } while(0)
+#define ValidateParameters10(a,b,c,d,e,f,g,h,i,j,k) do { } while(0)
+#define ValidateParameters11(a,b,c,d,e,f,g,h,i,j,k,l) do { } while(0)
+#define ValidateParameters12(a,b,c,d,e,f,g,h,i,j,k,l,m) do { } while(0)
+#define ValidateParameters13(a,b,c,d,e,f,g,h,i,j,k,l,m,n) do { } while(0)
+#define ValidateParameters14(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) do { } while(0)
+#define ValidateParameters15(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) do { } while(0)
+#define ValidateParameters16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q) do { } while(0)
+
+#define UlValidateParameters1(a,b) do { } while(0)
+#define UlValidateParameters2(a,b,c) do { } while(0)
+#define UlValidateParameters3(a,b,c,d) do { } while(0)
+#define UlValidateParameters4(a,b,c,d,e) do { } while(0)
+#define UlValidateParameters5(a,b,c,d,e,f) do { } while(0)
+#define UlValidateParameters6(a,b,c,d,e,f,g) do { } while(0)
+#define UlValidateParameters7(a,b,c,d,e,f,g,h) do { } while(0)
+#define UlValidateParameters8(a,b,c,d,e,f,g,h,i) do { } while(0)
+#define UlValidateParameters9(a,b,c,d,e,f,g,h,i,j) do { } while(0)
+#define UlValidateParameters10(a,b,c,d,e,f,g,h,i,j,k) do { } while(0)
+#define UlValidateParameters11(a,b,c,d,e,f,g,h,i,j,k,l) do { } while(0)
+#define UlValidateParameters12(a,b,c,d,e,f,g,h,i,j,k,l,m) do { } while(0)
+#define UlValidateParameters13(a,b,c,d,e,f,g,h,i,j,k,l,m,n) do { } while(0)
+#define UlValidateParameters14(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) do { } while(0)
+#define UlValidateParameters15(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) do { } while(0)
+#define UlValidateParameters16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q) do { } while(0)
+
+#define CheckParameters1(a,b) do { } while(0)
+#define CheckParameters2(a,b,c) do { } while(0)
+#define CheckParameters3(a,b,c,d) do { } while(0)
+#define CheckParameters4(a,b,c,d,e) do { } while(0)
+#define CheckParameters5(a,b,c,d,e,f) do { } while(0)
+#define CheckParameters6(a,b,c,d,e,f,g) do { } while(0)
+#define CheckParameters7(a,b,c,d,e,f,g,h) do { } while(0)
+#define CheckParameters8(a,b,c,d,e,f,g,h,i) do { } while(0)
+#define CheckParameters9(a,b,c,d,e,f,g,h,i,j) do { } while(0)
+#define CheckParameters10(a,b,c,d,e,f,g,h,i,j,k) do { } while(0)
+#define CheckParameters11(a,b,c,d,e,f,g,h,i,j,k,l) do { } while(0)
+#define CheckParameters12(a,b,c,d,e,f,g,h,i,j,k,l,m) do { } while(0)
+#define CheckParameters13(a,b,c,d,e,f,g,h,i,j,k,l,m,n) do { } while(0)
+#define CheckParameters14(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) do { } while(0)
+#define CheckParameters15(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) do { } while(0)
+#define CheckParameters16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q) do { } while(0)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* MAPIVAL_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapix.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapix.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapix.h	(revision 16410)
@@ -0,0 +1,187 @@
+/*
+ * Copyright 2004 Jon Griffiths
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef MAPIX_H
+#define MAPIX_H
+
+#include <mapidefs.h>
+#include <mapicode.h>
+#include <mapiguid.h>
+#include <mapitags.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct IProfAdmin IProfAdmin;
+typedef IProfAdmin *LPPROFADMIN;
+typedef struct IMsgServiceAdmin IMsgServiceAdmin;
+typedef IMsgServiceAdmin *LPSERVICEADMIN;
+typedef struct IMAPISession *LPMAPISESSION;
+
+#ifndef WINE_FLAGS_DEFINED
+#define WINE_FLAGS_DEFINED
+typedef unsigned long           FLAGS;
+#endif
+
+/* Flags for MAPILogon and MAPILogonEx */
+#ifndef MAPI_LOGON_UI
+#define MAPI_LOGON_UI           0x00000001
+#endif
+#ifndef MAPI_NEW_SESSION
+#define MAPI_NEW_SESSION        0x00000002
+#endif
+#define MAPI_ALLOW_OTHERS       0x00000008
+#define MAPI_EXPLICIT_PROFILE   0x00000010
+#ifndef MAPI_EXTENDED
+#define MAPI_EXTENDED           0x00000020
+#endif
+#ifndef MAPI_FORCE_DOWNLOAD
+#define MAPI_FORCE_DOWNLOAD     0x00001000
+#endif
+#ifndef MAPI_PASSWORD_UI
+#define MAPI_PASSWORD_UI        0x00020000
+#endif
+#define MAPI_SERVICE_UI_ALWAYS  0x00002000
+#define MAPI_NO_MAIL            0x00008000
+#define MAPI_NT_SERVICE         0x00010000
+#define MAPI_TIMEOUT_SHORT      0x00100000
+
+#define MAPI_SIMPLE_DEFAULT  (MAPI_LOGON_UI|MAPI_ALLOW_OTHERS|MAPI_FORCE_DOWNLOAD)
+#define MAPI_SIMPLE_EXPLICIT (MAPI_NEW_SESSION|MAPI_EXPLICIT_PROFILE|MAPI_FORCE_DOWNLOAD)
+
+typedef struct tagMAPIINIT_0
+{
+    ULONG ulVersion;
+    ULONG ulFlags;
+} MAPIINIT_0, *LPMAPIINIT_0;
+
+typedef MAPIINIT_0 MAPIINIT, *LPMAPIINIT;
+
+#define MAPI_INIT_VERSION 0U
+
+typedef HRESULT (WINAPI MAPIINITIALIZE)(void*);
+typedef MAPIINITIALIZE *LPMAPIINITIALIZE;
+MAPIINITIALIZE MAPIInitialize;
+
+typedef void (WINAPI MAPIUNINITIALIZE)(void);
+typedef MAPIUNINITIALIZE *LPMAPIUNINITIALIZE;
+MAPIUNINITIALIZE MAPIUninitialize;
+
+#if defined (UNICODE) || defined (__WINESRC__)
+typedef HRESULT (STDMETHODCALLTYPE MAPILOGONEX)(ULONG_PTR,LPWSTR,LPWSTR,ULONG,LPMAPISESSION*);
+#else
+typedef HRESULT (STDMETHODCALLTYPE MAPILOGONEX)(ULONG_PTR,LPSTR,LPSTR,ULONG,LPMAPISESSION *);
+#endif
+typedef MAPILOGONEX *LPMAPILOGONEX;
+MAPILOGONEX MAPILogonEx;
+
+typedef SCODE (WINAPI MAPIALLOCATEBUFFER)(ULONG,LPVOID*);
+typedef MAPIALLOCATEBUFFER *LPMAPIALLOCATEBUFFER;
+MAPIALLOCATEBUFFER MAPIAllocateBuffer;
+
+typedef SCODE (WINAPI MAPIALLOCATEMORE)(ULONG,LPVOID,LPVOID*);
+typedef MAPIALLOCATEMORE *LPMAPIALLOCATEMORE;
+MAPIALLOCATEMORE MAPIAllocateMore;
+
+#ifndef MAPIFREEBUFFER_DEFINED
+#define MAPIFREEBUFFER_DEFINED
+typedef ULONG (WINAPI MAPIFREEBUFFER)(LPVOID);
+typedef MAPIFREEBUFFER *LPMAPIFREEBUFFER;
+MAPIFREEBUFFER MAPIFreeBuffer;
+#endif
+
+typedef HRESULT (WINAPI MAPIADMINPROFILES)(ULONG,LPPROFADMIN*);
+typedef MAPIADMINPROFILES *LPMAPIADMINPROFILES;
+MAPIADMINPROFILES MAPIAdminProfiles;
+
+/*****************************************************************************
+ * IMAPISession interface
+ */
+#define INTERFACE IMAPISession
+DECLARE_INTERFACE_(IMAPISession,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IMAPISession methods ***/
+    STDMETHOD(GetLastError)(THIS_ HRESULT hResult, ULONG ulFlags, LPMAPIERROR *lppMAPIError) PURE;
+    STDMETHOD(GetMsgStoresTable)(THIS_ ULONG ulFlags, LPMAPITABLE *lppTable) PURE;
+    STDMETHOD(OpenMsgStore)(THIS_ ULONG_PTR ulUIParam, ULONG cbId,
+                            LPENTRYID lpId, LPCIID lpIFace, ULONG ulFlags, LPMDB *lppMDB) PURE;
+    STDMETHOD(OpenAddressBook)(THIS_ ULONG_PTR ulUIParam, LPCIID iid, ULONG ulFlags, LPADRBOOK *lppAdrBook) PURE;
+    STDMETHOD(OpenProfileSection)(THIS_ LPMAPIUID lpUID, LPCIID iid, ULONG ulFlags, LPPROFSECT *lppProf) PURE;
+    STDMETHOD(GetStatusTable)(THIS_ ULONG ulFlags, LPMAPITABLE *lppTable) PURE;
+    STDMETHOD(OpenEntry)(THIS_ ULONG cbId, LPENTRYID lpId, LPCIID iid,
+                         ULONG ulFlags, ULONG *lpType, LPUNKNOWN *lppUnk) PURE;
+    STDMETHOD(CompareEntryIDs)(THIS_ ULONG cbLID, LPENTRYID lpLID, ULONG cbRID,
+                               LPENTRYID lpRID, ULONG ulFlags, ULONG *lpRes) PURE;
+    STDMETHOD(Advise)(THIS_ ULONG cbId, LPENTRYID lpId, ULONG ulMask,
+                      LPMAPIADVISESINK lpSink, ULONG *lpCxn) PURE;
+    STDMETHOD(Unadvise)(THIS_ ULONG ulConnection) PURE;
+    STDMETHOD(MessageOptions)(THIS_ ULONG_PTR ulUIParam, ULONG ulFlags, LPSTR lpszAddr, LPMESSAGE lpMsg) PURE;
+    STDMETHOD(QueryDefaultMessageOpt)(THIS_ LPSTR lpszAddr, ULONG ulFlags,
+                                      ULONG *lpcVals, LPSPropValue *lppOpts) PURE;
+    STDMETHOD(EnumAdrTypes)(THIS_ ULONG ulFlags, ULONG *lpcTypes, LPSTR **lpppszTypes) PURE;
+    STDMETHOD(QueryIdentity)(THIS_ ULONG *lpcbId, LPENTRYID *lppEntryID) PURE;
+    STDMETHOD(Logoff)(THIS_ ULONG_PTR ulUIParam, ULONG ulFlags, ULONG ulReserved) PURE;
+    STDMETHOD(SetDefaultStore)(THIS_ ULONG ulFlags, ULONG cbId, LPENTRYID lpId) PURE;
+    STDMETHOD(AdminServices)(THIS_ ULONG ulFlags, LPSERVICEADMIN *lppAdmin) PURE;
+    STDMETHOD(ShowForm)(THIS_ ULONG_PTR ulUIParam, LPMDB lpStore,
+                        LPMAPIFOLDER lpParent, LPCIID iid, ULONG ulToken,
+                        LPMESSAGE lpSent, ULONG ulFlags, ULONG ulStatus,
+                        ULONG ulMsgFlags, ULONG ulAccess, LPSTR lpszClass) PURE;
+    STDMETHOD(PrepareForm)(THIS_ LPCIID lpIFace, LPMESSAGE lpMsg, ULONG *lpToken) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+        /*** IUnknown methods ***/
+#define IMAPISession_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
+#define IMAPISession_AddRef(p)                      (p)->lpVtbl->AddRef(p)
+#define IMAPISession_Release(p)                     (p)->lpVtbl->Release(p)
+        /*** IMAPISession methods ***/
+#define IMAPISession_GetLastError(p,a,b,c)          (p)->lpVtbl->GetLastError(p,a,b,c)
+#define IMAPISession_GetMsgStoresTable(p,a,b)       (p)->lpVtbl->GetMsgStoresTable(p,a,b)
+#define IMAPISession_OpenMsgStore(p,a,b,c,d,e,f)    (p)->lpVtbl->OpenMsgStore(p,a,b,c,d,e,f)
+#define IMAPISession_OpenAddressBook(p,a,b,c,d)     (p)->lpVtbl->OpenAddressBook(p,a,b,c,d)
+#define IMAPISession_OpenProfileSection(p,a,b,c,d)  (p)->lpVtbl->OpenProfileSection(p,a,b,c,d)
+#define IMAPISession_GetStatusTable(p,a,b)          (p)->lpVtbl->GetStatusTable(p,a,b)
+#define IMAPISession_OpenEntry(p,a,b,c,d,e,f)       (p)->lpVtbl->OpenEntry(p,a,b,c,d,e,f)
+#define IMAPISession_CompareEntryIDs(p,a,b,c,d,e,f) (p)->lpVtbl->CompareEntryIDs(p,a,b,c,d,e,f)
+#define IMAPISession_Advise(p,a,b,c,d,e)            (p)->lpVtbl->Advise(p,a,b,c,d,e)
+#define IMAPISession_Unadvise(p,a)                  (p)->lpVtbl->Unadvise(p,a)
+#define IMAPISession_MessageOptions(p,a,b,c,d)      (p)->lpVtbl->MessageOptions)(p,a,b,c,d)
+#define IMAPISession_QueryDefaultMessageOpt(p,a,b,c,d) \
+                                                    (p)->lpVtbl->QueryDefaultMessageOpt(p,a,b,c,d)
+#define IMAPISession_EnumAdrTypes(p,a,b,c)          (p)->lpVtbl->EnumAdrTypes(p,a,b,c)
+#define IMAPISession_QueryIdentity(p,a,b)           (p)->lpVtbl->QueryIdentity(p,a,b)
+#define IMAPISession_Logoff(p,a,b,c)                (p)->lpVtbl->Logoff(p,a,b,c)
+#define IMAPISession_SetDefaultStore(p,a,b,c)       (p)->lpVtbl->SetDefaultStore(p,a,b,c)
+#define IMAPISession_AdminServices(p,a,b)           (p)->lpVtbl->AdminServices(p,a,b)
+#define IMAPISession_ShowForm(p,a,b,c,d,e,f,g,h,i,j,k) \
+                                                    (p)->lpVtbl->ShowForm(p,a,b,c,d,e,f,g,h,i,j,k)
+#define IMAPISession_PrepareForm(p,a,b,c)           (p)->lpVtbl->PrepareForm(p,a,b,c)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* MAPIX_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mciavi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mciavi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mciavi.h	(revision 16410)
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2001 Eric Pouech
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define MCI_MCIAVI_PLAY_WINDOW		0x01000000L
+#define MCI_MCIAVI_PLAY_FULLSCREEN	0x02000000L
+#define MCI_MCIAVI_PLAY_FULLBY2		0x04000000L
+
+#define MCI_AVI_STATUS_FRAMES_SKIPPED	0x8001L
+
+#define MCI_AVI_STATUS_LAST_PLAY_SPEED		0x8002L
+
+#define MCI_AVI_STATUS_AUDIO_BREAKS		0x8003L
+
+#define MCI_AVI_SETVIDEO_DRAW_PROCEDURE		0x8000L
+
+#define MCI_AVI_SETVIDEO_PALETTE_COLOR		0x8100L
+
+#define MCI_AVI_SETVIDEO_PALETTE_HALFTONE       0x0000FFFFL
+
+#define MCIERR_AVI_OLDAVIFORMAT		(MCIERR_CUSTOM_DRIVER_BASE + 100)
+#define MCIERR_AVI_NOTINTERLEAVED	(MCIERR_CUSTOM_DRIVER_BASE + 101)
+#define MCIERR_AVI_NODISPDIB		(MCIERR_CUSTOM_DRIVER_BASE + 102)
+#define MCIERR_AVI_CANTPLAYFULLSCREEN	(MCIERR_CUSTOM_DRIVER_BASE + 103)
+#define MCIERR_AVI_TOOBIGFORVGA		(MCIERR_CUSTOM_DRIVER_BASE + 104)
+#define MCIERR_AVI_NOCOMPRESSOR         (MCIERR_CUSTOM_DRIVER_BASE + 105)
+#define MCIERR_AVI_DISPLAYERROR         (MCIERR_CUSTOM_DRIVER_BASE + 106)
+#define MCIERR_AVI_AUDIOERROR		(MCIERR_CUSTOM_DRIVER_BASE + 107)
+#define MCIERR_AVI_BADPALETTE		(MCIERR_CUSTOM_DRIVER_BASE + 108)
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mcx.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mcx.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mcx.h	(revision 16410)
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2000 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_MCX_H
+#define __WINE_MCX_H
+
+typedef struct tagMODEMDEVCAPS {
+       DWORD dwActualSize;
+       DWORD dwRequiredSize;
+       DWORD dwDevSpecificOffset;
+       DWORD dwDevSpecificSize;
+       DWORD dwModemProviderVersion;
+       DWORD dwModemManufacturerOffset;
+       DWORD dwModemManufacturerSize;
+       DWORD dwModemModelOffset;
+       DWORD dwModemModelSize;
+       DWORD dwModemVersionOffset;
+       DWORD dwModemVersionSize;
+       DWORD dwDialOptions;
+       DWORD dwCallSetupFailTimer;
+       DWORD dwInactivityTimeout;
+       DWORD dwSpeakerVolume;
+       DWORD dwSpeakerMode;
+       DWORD dwModemoptions;
+       DWORD dwMaxDTERate;
+       DWORD dwMaxDCERate;
+       BYTE  abVariablePortion[1];
+} MODEMDEVCAPS, *LPMODEMDEVCAPS;
+
+typedef struct tagMODEMSETTINGS {
+       DWORD dwActualSize;
+       DWORD dwRequiredSize;
+       DWORD dwDevSpecificOffset;
+       DWORD dwDevSpecificSize;
+       DWORD dwCallSetupFailTimer;
+       DWORD dwInactivityTimeout;
+       DWORD dwSpeakerVolume;
+       DWORD dwSpeakerMode;
+       DWORD dwPreferredModemOptions;
+       DWORD dwNegotiatedModemOptions;
+       DWORD dwNegotiatedDCERate;
+       BYTE  abVariablePortion[1];
+} MODEMSETTINGS, *LPMODEMSETTINGS;
+
+#endif  /* __WINE_MCX_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mediaerr.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mediaerr.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mediaerr.h	(revision 16410)
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2002 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _MEDIAERR_H_
+#define _MEDIAERR_H_
+
+#define DMO_E_INVALIDSTREAMINDEX   0x80040201
+#define DMO_E_INVALIDTYPE          0x80040202
+#define DMO_E_TYPE_NOT_SET         0x80040203
+#define DMO_E_NOTACCEPTING         0x80040204
+#define DMO_E_TYPE_NOT_ACCEPTED    0x80040205
+#define DMO_E_NO_MORE_ITEMS        0x80040206
+
+#endif /* _MEDIAERR_H_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mediaobj.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mediaobj.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mediaobj.idl	(revision 16410)
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2002 Alexandre Julliard
+ * Copyright (C) 2004 Vincent Béron
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+cpp_quote("#if !defined(COM_NO_WINDOWS_H) && !defined(__WINESRC__)")
+cpp_quote("#include <windows.h>")
+cpp_quote("#include <ole2.h>")
+cpp_quote("#endif")
+
+import "unknwn.idl";
+import "objidl.idl";
+
+interface IDMOQualityControl;
+interface IDMOVideoOutputOptimizations;
+interface IMediaBuffer;
+interface IMediaObject;
+interface IMediaObjectInPlace;
+
+typedef struct _DMOMediaType
+{
+    GUID majortype;
+    GUID subtype;
+    BOOL bFixedSizeSamples;
+    BOOL bTemporalCompression;
+    ULONG lSampleSize;
+    GUID formattype;
+    IUnknown *pUnk;
+    ULONG cbFormat;
+    BYTE *pbFormat;
+} DMO_MEDIA_TYPE;
+
+/*****************************************************************************
+ * IEnumDMO interface
+ */
+[
+    object,
+    uuid(2C3CD98A-2BFA-4A53-9C27-5249BA64BA0F),
+    pointer_default(unique)
+]
+interface IEnumDMO : IUnknown
+{
+    [local]
+    HRESULT Next(
+        [in] DWORD cItemsToFetch,
+        [out] CLSID *pCLSID,
+        [out] WCHAR **Names,
+        [out] DWORD *pcItemsFetched
+    );
+
+    HRESULT Skip(
+        [in] DWORD cItemsToSkip
+    );
+
+    HRESULT Reset();
+
+    HRESULT Clone(
+        [out] IEnumDMO **ppEnum
+    );
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/midles.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/midles.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/midles.h	(revision 16410)
@@ -0,0 +1,133 @@
+/*
+ * NDR Serialization Services
+ *
+ * Copyright (c) 2007 Robert Shearman for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_MIDLES_H__
+#define __WINE_MIDLES_H__
+
+#include <rpcndr.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum
+{
+    MES_ENCODE,
+    MES_DECODE
+} MIDL_ES_CODE;
+
+typedef enum
+{
+    MES_INCREMENTAL_HANDLE,
+    MES_FIXED_BUFFER_HANDLE,
+    MES_DYNAMIC_BUFFER_HANDLE
+} MIDL_ES_HANDLE_STYLE;
+
+typedef void (__RPC_USER * MIDL_ES_ALLOC)(void *,char **,unsigned int *);
+typedef void (__RPC_USER * MIDL_ES_WRITE)(void *,char *,unsigned int);
+typedef void (__RPC_USER * MIDL_ES_READ)(void *,char **,unsigned int *);
+
+typedef struct _MIDL_ES_MESSAGE
+{
+    MIDL_STUB_MESSAGE       StubMsg;
+    MIDL_ES_CODE            Operation;
+    void                   *UserState;
+    ULONG                   MesVersion : 8;
+    ULONG                   HandleStyle : 8;
+    ULONG                   HandleFlags : 8;
+    ULONG                   Reserve : 8;
+    MIDL_ES_ALLOC           Alloc;
+    MIDL_ES_WRITE           Write;
+    MIDL_ES_READ            Read;
+    unsigned char          *Buffer;
+    ULONG                   BufferSize;
+    unsigned char         **pDynBuffer;
+    ULONG                  *pEncodedSize;
+    RPC_SYNTAX_IDENTIFIER   InterfaceId;
+    ULONG                   ProcNumber;
+    ULONG                   AlienDataRep;
+    ULONG                   IncrDataSize;
+    ULONG                   ByteCount;
+} MIDL_ES_MESSAGE, *PMIDL_ES_MESSAGE;
+
+typedef PMIDL_ES_MESSAGE MIDL_ES_HANDLE;
+
+typedef struct _MIDL_TYPE_PICKLING_INFO
+{
+    ULONG       Version;
+    ULONG       Flags;
+    UINT_PTR    Reserved[3];
+} MIDL_TYPE_PICKLING_INFO, *PMIDL_TYPE_PICKLING_INFO;
+
+RPC_STATUS RPC_ENTRY
+ MesEncodeIncrementalHandleCreate(void *,MIDL_ES_ALLOC,MIDL_ES_WRITE,handle_t *);
+RPC_STATUS RPC_ENTRY
+ MesDecodeIncrementalHandleCreate(void *,MIDL_ES_READ,handle_t *);
+RPC_STATUS RPC_ENTRY
+ MesIncrementalHandleReset(handle_t,void *,MIDL_ES_ALLOC,MIDL_ES_WRITE,MIDL_ES_READ,MIDL_ES_CODE);
+
+RPC_STATUS RPC_ENTRY
+ MesEncodeFixedBufferHandleCreate(char *,ULONG,ULONG *,handle_t *);
+RPC_STATUS RPC_ENTRY
+ MesEncodeDynBufferHandleCreate(char **,ULONG *,handle_t *);
+RPC_STATUS RPC_ENTRY
+ MesDecodeBufferHandleCreate(char *,ULONG,handle_t *);
+RPC_STATUS RPC_ENTRY
+ MesBufferHandleReset(handle_t,ULONG,MIDL_ES_CODE,char **,ULONG,ULONG *);
+
+RPC_STATUS RPC_ENTRY
+ MesHandleFree(handle_t);
+
+RPC_STATUS RPC_ENTRY
+ MesInqProcEncodingId(handle_t,PRPC_SYNTAX_IDENTIFIER,ULONG *);
+
+SIZE_T RPC_ENTRY
+ NdrMesSimpleTypeAlignSize(handle_t);
+void RPC_ENTRY
+ NdrMesSimpleTypeDecode(handle_t,void *,short);
+void RPC_ENTRY
+ NdrMesSimpleTypeEncode(handle_t,const MIDL_STUB_DESC *,const void *,short);
+
+SIZE_T RPC_ENTRY
+ NdrMesTypeAlignSize(handle_t,const MIDL_STUB_DESC *,PFORMAT_STRING,const void *);
+void RPC_ENTRY
+ NdrMesTypeEncode(handle_t,const MIDL_STUB_DESC *,PFORMAT_STRING,const void *);
+void RPC_ENTRY
+ NdrMesTypeDecode(handle_t,const MIDL_STUB_DESC *,PFORMAT_STRING,void *);
+
+SIZE_T RPC_ENTRY
+ NdrMesTypeAlignSize2(handle_t,const MIDL_TYPE_PICKLING_INFO *,const MIDL_STUB_DESC *,PFORMAT_STRING,const void *);
+void RPC_ENTRY
+ NdrMesTypeEncode2(handle_t,const MIDL_TYPE_PICKLING_INFO *,const MIDL_STUB_DESC *,PFORMAT_STRING,const void *);
+void RPC_ENTRY
+ NdrMesTypeDecode2(handle_t,const MIDL_TYPE_PICKLING_INFO *,const MIDL_STUB_DESC *,PFORMAT_STRING,void *);
+void RPC_ENTRY
+ NdrMesTypeFree2(handle_t,const MIDL_TYPE_PICKLING_INFO *,const MIDL_STUB_DESC *,PFORMAT_STRING,void *);
+
+void RPC_VAR_ENTRY
+ NdrMesProcEncodeDecode(handle_t,const MIDL_STUB_DESC *,PFORMAT_STRING,...);
+CLIENT_CALL_RETURN RPC_VAR_ENTRY
+ NdrMesProcEncodeDeocde2(handle_t,const MIDL_STUB_DESC *,PFORMAT_STRING,...);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_MIDLES_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mimeinfo.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mimeinfo.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mimeinfo.idl	(revision 16410)
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2005 Vijay Kiran Kamuju
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "objidl.idl";
+
+[
+  local,
+  object,
+  uuid(f77459a0-bf9a-11cf-ba4e-00c04fd70816),
+  pointer_default(unique)
+]
+interface IMimeInfo : IUnknown
+{
+    typedef [unique] IMimeInfo *LPMIMEINFO;
+
+    HRESULT GetMimeCLSIDMapping( [out] UINT      *pcTypes,
+                                 [out] LPCSTR  * *ppszTypes,
+                                 [out] CLSID   * *ppclsID );
+}
+
+cpp_quote("#define SID_IMimeInfo IID_IMimeInfo")
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mimeole.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mimeole.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mimeole.idl	(revision 16410)
@@ -0,0 +1,1337 @@
+/*
+ * Copyright 2007 Robert Shearman for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "ocidl.idl";
+import "objidl.idl";
+import "propidl.idl";
+
+#define DECLARE_HANDLE(name) typedef void *name
+
+interface IMimeMessageCallback;
+interface IMimeEnumAddressTypes;
+interface IMimeMessageParts;
+interface IMimeMessageTree;
+interface IMimeBody;
+interface IMimeEnumProperties;
+
+cpp_quote("DEFINE_GUID(CLSID_IMimeBody,      0xfd853cdb, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
+cpp_quote("DEFINE_GUID(CLSID_IMimeAllocator, 0xfd853cdd, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
+cpp_quote("DEFINE_GUID(CLSID_IMimeMessage,   0xfd853ce3, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
+cpp_quote("DEFINE_GUID(CLSID_IMimeSecurity,  0xfd853cde, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
+cpp_quote("DEFINE_GUID(CLSID_IVirtualStream, 0xfd853cdf, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
+
+cpp_quote("#define MIME_E_REG_CREATE_KEY         0x800cce01")
+cpp_quote("#define MIME_E_REG_QUERY_INFO         0x800cce02")
+cpp_quote("#define MIME_E_INVALID_ENCTYPE        0x800cce03")
+cpp_quote("#define MIME_E_BOUNDARY_MISMATCH      0x800cce04")
+cpp_quote("#define MIME_E_NOT_FOUND              0x800cce05")
+cpp_quote("#define MIME_E_NO_DATA                0x800cce05")
+cpp_quote("#define MIME_E_BUFFER_TOO_SMALL       0x800cce06")
+cpp_quote("#define MIME_E_INVALID_ITEM_FLAGS     0x800cce07")
+cpp_quote("#define MIME_E_ONE_LINE_ITEME         0x800cce08")
+cpp_quote("#define MIME_E_INVALID_HANDLE         0x800cce09")
+cpp_quote("#define MIME_E_CHARSET_TRANSLATE      0x800cce0a")
+cpp_quote("#define MIME_E_NOT_INITIALIZED        0x800cce0b")
+
+cpp_quote("#define MIME_E_INVALID_CHARSET_TYPE   0x800cce31")
+
+cpp_quote("#define MIME_E_INVALID_TEXT_TYPE      0x800cce38")
+
+cpp_quote("#define MIME_E_SECURITY_NOOP          0x800cceb1")
+cpp_quote("#define MIME_S_SECURITY_NOOP          0x000cceb1")
+
+cpp_quote("typedef enum tagMIMEPROPID {")
+cpp_quote("    PID_HDR_NEWSGROUP  = 2,")
+cpp_quote("    PID_HDR_NEWSGROUPS = 3,")
+cpp_quote("    PID_HDR_REFS       = 4,")
+cpp_quote("    PID_HDR_SUBJECT    = 5,")
+cpp_quote("    PID_HDR_FROM       = 6,")
+cpp_quote("    PID_HDR_MESSAGEID  = 7,")
+cpp_quote("    PID_HDR_RETURNPATH = 8,")
+cpp_quote("    PID_HDR_RR         = 9,")
+cpp_quote("    PID_HDR_RETRCPTO   = 10,")
+cpp_quote("    PID_HDR_APPARTO    = 11,")
+cpp_quote("    PID_HDR_DATE       = 12,")
+cpp_quote("    PID_HDR_RECEIVED   = 13,")
+cpp_quote("    PID_HDR_REPLYTO    = 14,")
+cpp_quote("    PID_HDR_XMAILER    = 15,")
+cpp_quote("    PID_HDR_BCC        = 16,")
+cpp_quote("    PID_HDR_MIMEVER    = 17,")
+cpp_quote("    PID_HDR_CNTTYPE    = 18,")
+cpp_quote("    PID_HDR_CNTXFER    = 19,")
+cpp_quote("    PID_HDR_CNTID      = 20,")
+cpp_quote("    PID_HDR_CNTDESC    = 21,")
+cpp_quote("    PID_HDR_CNTDISP    = 22,")
+cpp_quote("    PID_HDR_CNTBASE    = 23,")
+cpp_quote("    PID_HDR_CNTLOC     = 24,")
+cpp_quote("    PID_HDR_TO         = 25,")
+cpp_quote("    PID_HDR_PATH       = 26,")
+cpp_quote("    PID_HDR_FOLLOWUPTO = 27,")
+cpp_quote("    PID_HDR_EXPIRES    = 28,")
+cpp_quote("    PID_HDR_CC         = 29,")
+
+cpp_quote("    PID_HDR_SENDER     = 61,")
+
+cpp_quote("    PID_HDR_INREPLYTO  = 77,")
+cpp_quote("} MIMEPROPID;")
+
+cpp_quote("#define TYPEDID_MASK                  ((ULONG)0xffff)")
+cpp_quote("#define TYPEDID_TYPE(t)               ((VARTYPE)((t) & TYPEDID_MASK))")
+
+cpp_quote("#define OID_HIDE_TNEF_ATTACHMENTS     (0x000e0000 | VT_BOOL)")
+cpp_quote("#define OID_SECURITY_TYPE             (0x00180000 | VT_UI4)")
+cpp_quote("#define OID_SECURITY_HWND_OWNER       (0x00320000 | VT_UI4)")
+cpp_quote("#define OID_HEADER_RELOAD_TYPE        (0x00370000 | VT_UI4)")
+cpp_quote("#define OID_SHOW_MACBINARY            (0x00390000 | VT_BOOL)")
+
+
+[
+    uuid(e4b28371-83b0-11d0-8259-00c04fd85ab4),
+    version(1.0)
+]
+library MIMEOLE
+{
+    importlib("stdole2.tlb");
+
+    DECLARE_HANDLE(HCHARSET);
+    DECLARE_HANDLE(HBODY);
+    DECLARE_HANDLE(HHEADERROW);
+
+    typedef HCHARSET *LPHCHARSET;
+    typedef HBODY *LPHBODY;
+    typedef HHEADERROW *LPHHEADERROW;
+    typedef DWORD TYPEDID;
+    typedef const PROPVARIANT *LPCPROPVARIANT;
+    typedef const BLOB *LPCBLOB;
+
+    typedef enum tagRELOADTYPE
+    {
+        RELOAD_HEADER_NONE,
+        RELOAD_HEADER_RESET,
+        RELOAD_HEADER_APPEND,
+        RELOAD_HEADER_REPLACE,
+    } RELOADTYPE;
+
+    typedef enum tagMIMESAVETYPE
+    {
+        SAVE_RFC822,
+        SAVE_RFC1521,
+    } MIMESAVETYPE;
+
+    typedef enum tagCSETAPPLYTYPE
+    {
+        CSET_APPLY_UNTAGGED,
+        CSET_APPLY_ALL,
+        CSET_APPLY_TAG_ALL,
+    } CSETAPPLYTYPE;
+
+    typedef enum tagENCODINGTYPE
+    {
+        IET_BINARY,
+        IET_BASE64,
+        IET_UUENCODE,
+        IET_QP,
+        IET_7BIT,
+        IET_8BIT,
+        IET_INETCSET,
+        IET_UNICODE,
+        IET_RFC1522,
+        IET_ENCODED,
+        IET_CURRENT,
+        IET_UNKNOWN,
+        IET_BINHEX40,
+        IET_LAST
+    } ENCODINGTYPE;
+
+    const SHORT IET_DECODED = IET_BINARY;
+
+    const SHORT CCHMAX_HEADER_LINE = 1000;
+
+    [
+        uuid(c5588349-7f86-11d0-8252-00c04fd85ab4),
+        object
+    ]
+    interface IMimeInternational : IUnknown
+    {
+        typedef [unique] IMimeInternational *LPMIMEINTERNATIONAL;
+        typedef DWORD CODEPAGEID;
+
+        const CODEPAGEID CP_USASCII = 1252;
+        const CODEPAGEID CP_UNICODE = 1200;
+        const CODEPAGEID CP_JAUTODETECT = 50932;
+        const CODEPAGEID CP_KAUTODETECT = 50949;
+        const CODEPAGEID CP_ISO2022JPESC = 50221;
+        const CODEPAGEID CP_ISO2022JPSIO = 50222;
+
+        const SHORT CCHMAX_CSET_NAME = 128;
+        const SHORT CCHMAX_LANG_NAME = 128;
+        const SHORT CCHMAX_FACE_NAME = 128;
+
+        typedef struct tagINETCSETINFO
+        {
+            CHAR        szName[CCHMAX_CSET_NAME];
+            HCHARSET    hCharset;
+            CODEPAGEID  cpiWindows;
+            CODEPAGEID  cpiInternet;
+            DWORD       dwReserved1;
+        } INETCSETINFO, *LPINETCSETINFO;
+
+        typedef enum tagINETLANGMASK
+        {
+            ILM_FAMILY          = 0x01,
+            ILM_NAME            = 0x02,
+            ILM_BODYCSET        = 0x04,
+            ILM_HEADERCSET      = 0x08,
+            ILM_WEBCSET         = 0x10,
+            ILM_FIXEDFONT       = 0x20,
+            ILM_VARIABLEFONT    = 0x40,
+        } INETLANGMASK;
+
+        typedef struct tagCODEPAGEINFO
+        {
+            DWORD dwMask;
+            CODEPAGEID cpiCodePage;
+            BOOL fIsValidCodePage;
+            ULONG ulMaxCharSize;
+            BOOL fInternetCP;
+            CODEPAGEID cpiFamily;
+            CHAR szName[CCHMAX_LANG_NAME];
+            CHAR szBodyCset[CCHMAX_CSET_NAME];
+            CHAR szHeaderCset[CCHMAX_CSET_NAME];
+            CHAR szWebCset[CCHMAX_CSET_NAME];
+            CHAR szFixedFont[CCHMAX_FACE_NAME];
+            CHAR szVariableFont[CCHMAX_FACE_NAME];
+            ENCODINGTYPE ietNewsDefault;
+            ENCODINGTYPE ietMailDefault;
+            DWORD dwReserved1;
+        } CODEPAGEINFO, *LPCODEPAGEINFO;
+
+        typedef struct tagRFC1522INFO
+        {
+            BOOL fRfc1522Allowed;
+            BOOL fRfc1522Used;
+            BOOL fAllow8bit;
+            HCHARSET hRfc1522Cset;
+        } RFC1522INFO, *LPRFC1522INFO;
+
+        typedef enum tagCHARSETTYPE
+        {
+            CHARSET_BODY,
+            CHARSET_HEADER,
+            CHARSET_WEB,
+        } CHARSETTYPE;
+
+
+        HRESULT SetDefaultCharset(
+            [in]        HCHARSET hCharset);
+        HRESULT GetDefaultCharset(
+            [out]       LPHCHARSET phCharset);
+        HRESULT GetCodePageCharset(
+            [in]        CODEPAGEID cpiCodePage,
+            [in]        CHARSETTYPE ctCsetType,
+            [out]       LPHCHARSET phCharset);
+        HRESULT FindCharset(
+            [in]        LPCSTR pszCharset,
+            [out]       LPHCHARSET phCharset);
+        HRESULT GetCharsetInfo(
+            [in]        HCHARSET hCharset,
+            [in, out]   LPINETCSETINFO pCsetInfo);
+        HRESULT GetCodePageInfo(
+            [in]        CODEPAGEID cpiCodePage,
+            [in, out]   LPCODEPAGEINFO pCodePageInfo);
+        HRESULT CanConvertCodePages(
+            [in]        CODEPAGEID cpiSource,
+            [in]        CODEPAGEID cpiDest);
+        HRESULT DecodeHeader(
+            [in]        HCHARSET hCharset,
+            [in]        LPCSTR pszData,
+            [in, out]   LPPROPVARIANT pDecoded,
+            [in, out]   LPRFC1522INFO pRfc1522Info);
+        HRESULT EncodeHeader(
+            [in]        HCHARSET hCharset,
+            [in]        LPPROPVARIANT pData,
+            [out]       LPSTR *ppszEncoded,
+            [in, out]   LPRFC1522INFO pRfc1522Info);
+        HRESULT ConvertBuffer(
+            [in]        CODEPAGEID cpiSource,
+            [in]        CODEPAGEID cpiDest,
+            [in]        LPBLOB pIn,
+            [in, out]   LPBLOB pOut,
+            [out]       ULONG *pcbRead);
+        HRESULT ConvertString(
+            [in]        CODEPAGEID cpiSource,
+            [in]        CODEPAGEID cpiDest,
+            [in]        LPPROPVARIANT pIn,
+            [in, out]   LPPROPVARIANT pOut);
+        HRESULT MLANG_ConvertInetReset(void);
+        HRESULT MLANG_ConvertInetString(
+            [in]        CODEPAGEID cpiSource,
+            [in]        CODEPAGEID cpiDest,
+            [in]        LPCSTR pSource,
+            [in]        int *pnSizeOfSource,
+            [in,out,unique]  LPSTR pDestination,
+            [in]        int *pnDstSize);
+        HRESULT Rfc1522Decode(
+            [in]        LPCSTR pszValue,
+            [in,ref]    LPSTR pszCharset,
+            [in]        ULONG cchmax,
+            [out]       LPSTR *ppszDecoded);
+        HRESULT Rfc1522Encode(
+            [in]        LPCSTR pszValue,
+            [in]        HCHARSET hCharset,
+            [out]       LPSTR *ppszEncoded);
+    }
+
+    [
+        uuid(c5588353-7f86-11d0-8252-00c04fd85ab4),
+        object
+    ]
+    interface IMimeSecurity : IUnknown
+    {
+        typedef [unique] IMimeSecurity *LPMIMESECURITY;
+
+        cpp_quote("#ifdef __WINE_WINCRYPT_H")
+        cpp_quote("typedef PCCERT_CONTEXT PCX509CERT;")
+        cpp_quote("#else")
+        typedef const void *PCX509CERT;
+        typedef void *HCERTSTORE;
+        cpp_quote("#endif")
+
+        typedef BLOB THUMBBLOB;
+        typedef void *HCAPICERTSTORE;
+
+        cpp_quote("#define MST_NONE             0x00000000")
+        cpp_quote("#define MST_THIS_SIGN        0x00000001")
+        cpp_quote("#define MST_THIS_ENCRYPT     0x00000002")
+        cpp_quote("#define MST_BLOB_FLAG        0x00000004")
+        cpp_quote("#define MST_THIS_BLOBSIGN    (MST_BLOB_FLAG | MST_THIS_SIGN)")
+        cpp_quote("#define MST_CHILD_SIGN       0x00000100")
+        cpp_quote("#define MST_CHILD_ENCRYPT    0x00000200")
+        cpp_quote("#define MST_SUBMSG_SIGN      0x00001000")
+        cpp_quote("#define MST_SUBMSG_ENCRYPT   0x00002000")
+        cpp_quote("#define MST_RECEIPT_REQUEST  0x00010000")
+        cpp_quote("#define MST_CLASS_SMIME_V1   0x00000000")
+        cpp_quote("#define MST_CLASS_PGP        0x01000000")
+
+        typedef enum tagCERTSTATE
+        {
+            CERTIFICATE_OK,
+            CERTIFICATE_NOT_PRESENT,
+            CERTIFICATE_EXPIRED,
+            CERTIFICATE_CHAIN_TOO_LONG,
+            CERTIFICATE_MISSING_ISSUER,
+            CERTIFICATE_CRL_LISTED,
+            CERTIFICATE_NOT_TRUSTED,
+            CERTIFICATE_INVALID,
+            CERTIFICATE_ERROR,
+            CERTIFICATE_NOPRINT,
+            CERTIFICATE_UNKNOWN
+        } CERTSTATE;
+
+        typedef enum tagCERTNAMETYPE
+        {
+            SIMPLE,
+            OID,
+            X500,
+        } CERTNAMETYPE;
+
+        typedef enum tagCERTDATAID
+        {
+            CDID_EMAIL,
+            CDID_MAX
+        } CERTDATAID;
+
+        typedef struct tagX509CERTRESULT
+        {
+            DWORD       cEntries;
+            CERTSTATE  *rgcs;
+            PCX509CERT *rgpCert;
+        } X509CERTRESULT, *PX509CERTRESULT;
+        typedef const X509CERTRESULT *PCX509CERTRESULT;
+
+        HRESULT InitNew(void);
+
+        HRESULT CheckInit(void);
+
+        HRESULT EncodeMessage(
+            [in]    IMimeMessageTree */*const*/ pTree,
+            [in]    DWORD dwFlags);
+
+        HRESULT EncodeBody(
+            [in]    IMimeMessageTree */*const*/ pTree,
+            [in]    HBODY hEncodeRoot,
+            [in]    DWORD dwFlags);
+
+        HRESULT DecodeMessage(
+            [in]    IMimeMessageTree */*const*/ pTree,
+            [in]    DWORD dwFlags);
+
+        HRESULT DecodeBody(
+            [in]    IMimeMessageTree */*const*/ pTree,
+            [in]    HBODY hDecodeRoot,
+            [in]    DWORD dwFlags);
+
+        HRESULT EnumCertificates(
+            [in]    HCAPICERTSTORE hc,
+            [in]    DWORD dwUsage,
+            [in]    PCX509CERT pPrev,
+            [out]   PCX509CERT *ppCert);
+
+        HRESULT GetCertificateName(
+            [in]    const PCX509CERT pX509Cert,
+            [in]    const CERTNAMETYPE cn,
+            [out]   LPSTR *ppszName);
+
+        HRESULT GetMessageType(
+            [in]    const HWND hwndParent,
+            [in]    IMimeBody */*const*/ pBody,
+            [out]   DWORD */*const*/ pdwSecType);
+
+        HRESULT GetCertData(
+            [in]        const PCX509CERT pX509Cert,
+            [in]        const CERTDATAID dataid,
+            [out, ref]  LPPROPVARIANT pValue);
+    }
+
+    [
+        uuid(fd853cd1-7f86-11d0-8252-00c04fd85ab4),
+        object
+    ]
+    interface IMimeHeaderTable : IPersistStream
+    {
+        /* FIXME: fill this in */
+    }
+
+    [
+        uuid(fd853cec-7f86-11d0-8252-00c04fd85ab4),
+        object
+    ]
+    interface IMimePropertySchema : IUnknown
+    {
+        typedef enum tagMIMEPROPFLAGS
+        {
+            MPF_INETCSET            = 0x01,
+            MPF_RFC1522             = 0x02,
+            MPF_ADDRESS             = 0x04,
+            MPF_HASPARAMS           = 0x08,
+            MPF_MIME                = 0x10,
+            MPF_READONLY            = 0x20
+        } MIMEPROPFLAGS;
+
+        /* FIXME: fill this in */
+    }
+
+    [
+        uuid(fd853cd3-7f86-11d0-8252-00c04fd85ab4),
+        object
+    ]
+    interface IMimePropertySet : IPersistStreamInit
+    {
+        typedef [unique] IMimePropertySet *LPMIMEPROPERTYSET;
+
+        cpp_quote("#define PDF_ENCODED              0x00000001")
+        cpp_quote("#define PDF_NAMEINDATA           0x00000002")
+        cpp_quote("#define PDF_HEADERFORMAT        (0x00000004 | PDF_ENCODED)")
+        cpp_quote("#define PDF_NOCOMMENTS           0x00000008")
+        cpp_quote("#define PDF_SAVENOENCODE         0x00000010")
+        cpp_quote("#define PDF_VECTOR               0x00000020")
+
+        typedef struct tagMIMEPARAMINFO
+        {
+            LPSTR           pszName;
+            LPSTR           pszData;
+        } MIMEPARAMINFO, *LPMIMEPARAMINFO;
+
+        typedef enum tagPROPINFOMASK
+        {
+            PIM_CHARSET           = 0x01,
+            PIM_ENCODINGTYPE      = 0x02,
+            PIM_ROWNUMBER         = 0x04,
+            PIM_FLAGS             = 0x08,
+            PIM_PROPID            = 0x10,
+            PIM_VALUES            = 0x20,
+            PIM_VTDEFAULT         = 0x40,
+            PIM_VTCURRENT         = 0x80
+        } PROPINFOMASK;
+
+        typedef struct tagMIMEPROPINFO
+        {
+            DWORD           dwMask;
+            HCHARSET        hCharset;
+            ENCODINGTYPE    ietEncoding;
+            DWORD           dwRowNumber;
+            DWORD           dwFlags;
+            DWORD           dwPropId;
+            DWORD           cValues;
+            VARTYPE         vtDefault;
+            VARTYPE         vtCurrent;
+        } MIMEPROPINFO, *LPMIMEPROPINFO;
+        typedef const MIMEPROPINFO *LPCMIMEPROPINFO;
+
+        HRESULT GetPropInfo(
+            [in]        LPCSTR               pszName,
+            [in,out]    LPMIMEPROPINFO       pInfo);
+
+        HRESULT SetPropInfo(
+            [in]        LPCSTR               pszName,
+            [in]        LPCMIMEPROPINFO      pInfo);
+
+cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
+cpp_quote("#undef GetProp")
+cpp_quote("#undef SetProp")
+cpp_quote("#undef EnumProps")
+cpp_quote("#endif")
+        HRESULT GetProp(
+            [in]        LPCSTR               pszName,
+            [in]        DWORD                dwFlags,
+            [in,out]    LPPROPVARIANT        pValue);
+
+        HRESULT SetProp(
+            [in]        LPCSTR               pszName,
+            [in]        DWORD                dwFlags,
+            [in]        LPCPROPVARIANT       pValue);
+
+        HRESULT AppendProp(
+            [in]        LPCSTR               pszName,
+            [in]        DWORD                dwFlags,
+            [in]        LPPROPVARIANT        pValue);
+
+        HRESULT DeleteProp(
+            [in]        LPCSTR               pszName);
+
+        HRESULT CopyProps(
+            [in]        ULONG                cNames,
+            [in,unique] LPCSTR               *prgszName,
+            [in]        IMimePropertySet     *pPropertySet);
+
+        HRESULT MoveProps(
+            [in]        ULONG                cNames,
+            [in]        LPCSTR               *prgszName,
+            [in]        IMimePropertySet     *pPropertySet);
+
+        HRESULT DeleteExcept(
+            [in]        ULONG                cNames,
+            [in]        LPCSTR               *prgszName);
+
+        HRESULT QueryProp(
+            [in]        LPCSTR               pszName,
+            [in]        LPCSTR               pszCriteria,
+            [in]        boolean              fSubString,
+            [in]        boolean              fCaseSensitive);
+
+        HRESULT GetCharset(
+            [out]       LPHCHARSET           phCharset);
+
+        HRESULT SetCharset(
+            [in]        HCHARSET             hCharset,
+            [in]        CSETAPPLYTYPE        applytype);
+
+        HRESULT GetParameters(
+            [in]        LPCSTR               pszName,
+            [out]       ULONG                *pcParams,
+            [out]       LPMIMEPARAMINFO      *pprgParam);
+
+        HRESULT IsContentType(
+            [in]        LPCSTR               pszPriType,
+            [in,unique] LPCSTR               pszSubType);
+
+        HRESULT BindToObject(
+            [in]        REFIID               riid,
+            [out,iid_is(riid)] void          **ppvObject);
+
+        HRESULT Clone(
+            [out]       IMimePropertySet     **ppPropertySet);
+
+        HRESULT SetOption(
+            [in]        const TYPEDID        oid,
+            [in]        LPCPROPVARIANT       pValue);
+
+        HRESULT GetOption(
+            [in]        const TYPEDID        oid,
+            [in,out]    LPPROPVARIANT        pValue);
+
+        cpp_quote("#define EPF_NONAME 0x00000001")
+
+        HRESULT EnumProps(
+            [in]        DWORD                dwFlags,
+            [out]       IMimeEnumProperties  **ppEnum);
+
+    }
+
+    [
+        uuid(c558834a-7f86-11d0-8252-00c04fd85ab4),
+        object
+    ]
+    interface IMimeAddressTable : IUnknown
+    {
+        typedef [unique] IMimeAddressTable *LPMIMEADDRESSTABLE;
+
+        DECLARE_HANDLE(HADDRESS);
+        typedef HADDRESS *LPHADDRESS;
+        typedef DWORD IADDRESSTYPE;
+
+        typedef enum tagADDRESSFORMAT
+        {
+            AFT_DISPLAY_FRIENDLY,
+            AFT_DISPLAY_EMAIL,
+            AFT_DISPLAY_BOTH,
+            AFT_RFC822_DECODED,
+            AFT_RFC822_ENCODED,
+            AFT_RFC822_TRANSMIT,
+        } ADDRESSFORMAT;
+
+        typedef struct tagADDRESSPROPS
+        {
+            DWORD           dwProps;
+            HADDRESS        hAddress;
+            ENCODINGTYPE    ietFriendly;
+            HCHARSET        hCharset;
+            DWORD           dwAdrType;
+            LPSTR           pszFriendly;
+            LPWSTR          pwszReserved;
+            LPSTR           pszEmail;
+            CERTSTATE       certstate;
+            THUMBBLOB       tbSigning;
+            THUMBBLOB       tbEncryption;
+            DWORD           dwCookie;
+            DWORD           dwReserved1;
+            DWORD           dwReserved2;
+        } ADRESSPROPS, *LPADDRESSPROPS;
+
+        typedef struct tagADDRESSLIST
+        {
+            ULONG           cAdrs;
+            LPADDRESSPROPS  prgAdr;
+        } ADDRESSLIST, *LPADDRESSLIST;
+
+        /* FIXME: fill this in */
+    }
+
+    [
+        uuid(ee519f11-851a-11d0-8252-00c04fd85ab4),
+        object
+    ]
+    interface IMimeWebDocument : IUnknown
+    {
+        /* FIXME: fill this in */
+    }
+
+    [
+        uuid(c558834c-7f86-11d0-8252-00c04fd85ab4),
+        object
+    ]
+    interface IMimeBody : IMimePropertySet
+    {
+        typedef [unique] IMimeBody *LPMIMEBODY;
+
+        typedef enum tagIMSGBODYTYPE
+        {
+            IBT_SECURE,
+            IBT_ATTACHMENT,
+            IBT_EMPTY,
+            IBT_CSETTAGGED,
+            IBT_AUTOATTACH,
+        } IMSGBODYTYPE;
+
+        typedef struct tagBODYOFFSETS
+        {
+            DWORD cbBoundaryStart;
+            DWORD cbHeaderStart;
+            DWORD cbBodyStart;
+            DWORD cbBodyEnd;
+        } BODYOFFSETS, *LPBODYOFFSETS;
+
+        typedef struct tagTRANSMITINFO
+        {
+            ENCODINGTYPE ietCurrent;
+            ENCODINGTYPE ietXmitMime;
+            ENCODINGTYPE ietXmit822;
+            ULONG cbLongestLine;
+            ULONG cExtended;
+            ULONG ulPercentExt;
+            ULONG cbSize;
+            ULONG cLines;
+        } TRANSMITINFO, *LPTRANSMITINFO;
+
+        HRESULT IsType(
+            [in]        IMSGBODYTYPE     bodytype);
+
+        HRESULT SetDisplayName(
+            [in]        LPCSTR           pszDisplay);
+
+        HRESULT GetDisplayName(
+            [out]       LPSTR            *ppszDisplay);
+
+        HRESULT GetOffsets(
+            [out]       LPBODYOFFSETS     pOffsets);
+
+        HRESULT GetCurrentEncoding(
+            [out]       ENCODINGTYPE     *pietEncoding);
+
+        HRESULT SetCurrentEncoding(
+            [in]        ENCODINGTYPE     ietEncoding);
+
+        HRESULT GetEstimatedSize(
+            [in]        ENCODINGTYPE     ietEncoding,
+            [out]       ULONG            *pcbSize);
+
+        HRESULT GetDataHere(
+            [in]        ENCODINGTYPE     ietEncoding,
+            [in]        IStream          *pStream);
+
+        HRESULT GetData(
+            [in]        ENCODINGTYPE     ietEncoding,
+            [out]       IStream          **ppStream);
+
+        HRESULT SetData(
+            [in]        ENCODINGTYPE     ietEncoding,
+            [in,unique] LPCSTR           pszPriType,
+            [in,unique] LPCSTR           pszSubType,
+            [in]        REFIID           riid,
+            [in,iid_is(riid)]  LPVOID    pvObject);
+
+        HRESULT EmptyData(void);
+
+        HRESULT CopyTo(
+            [in]        IMimeBody        *pBody);
+
+        HRESULT GetTransmitInfo(
+            [in,out]    LPTRANSMITINFO   pTransmitInfo);
+
+        HRESULT SaveToFile(
+            [in]        ENCODINGTYPE     ietEncoding,
+            [in]        LPCSTR           pszFilePath);
+
+        HRESULT GetHandle(
+           [out]        LPHBODY          phBody);
+
+    }
+
+    [
+        uuid(fd853cd4-7f86-11d0-8252-00c04fd85ab4),
+        object
+    ]
+    interface IMimeMessageTree : IPersistStreamInit
+    {
+        typedef [unique] IMimeMessageTree *LPMIMEMESSAGETREE;
+
+        const HBODY HBODY_ROOT = (HBODY)-1;
+
+        typedef enum tagBODYLOCATION
+        {
+            IBL_ROOT,
+            IBL_PARENT,
+            IBL_FIRST,
+            IBL_LAST,
+            IBL_NEXT,
+            IBL_PREVIOUS,
+        } BODYLOCATION;
+
+        typedef struct tagFINDBODY
+        {
+            LPSTR pszPriType;
+            LPSTR pszSubType;
+            DWORD dwReserved;
+        } FINDBODY, *LPFINDBODY;
+
+        HRESULT GetMessageSource(
+            [out]       IStream **ppStream,
+            [in]        DWORD dwFlags);
+
+        HRESULT GetMessageSize(
+            [out]       ULONG *pcbSize,
+            [in]        DWORD dwFlags);
+
+        HRESULT LoadOffsetTable(
+            [in]        IStream *pStream);
+
+        HRESULT SaveOffsetTable(
+            [in]        IStream *pStream,
+            [in]        DWORD dwFlags);
+
+        HRESULT GetFlags(
+            [out]       DWORD *pdwFlags);
+
+        HRESULT Commit(
+            [in]        DWORD dwFlags);
+
+        HRESULT HandsOffStorage();
+
+        HRESULT BindToObject(
+            [in]        const HBODY hBody,
+            [in]        REFIID riid,
+            [out, iid_is(riid)] void **ppvObject);
+
+        HRESULT SaveBody(
+            [in]        HBODY hBody,
+            [in]        DWORD dwFlags,
+            [in]        IStream *pStream);
+
+        HRESULT InsertBody(
+            [in]        BODYLOCATION location,
+            [in]        HBODY hPivot,
+            [out]       LPHBODY phBody);
+
+        HRESULT GetBody(
+            [in]        BODYLOCATION location,
+            [in]        HBODY hPivot,
+            [out]       LPHBODY phBody);
+
+        HRESULT DeleteBody(
+            [in]        HBODY hBody,
+            [in]        DWORD dwFlags);
+
+        HRESULT MoveBody(
+            [in]        HBODY hBody,
+            [in]        BODYLOCATION location);
+
+        HRESULT CountBodies(
+            [in]        HBODY hParent,
+            [in]        boolean fRecurse,
+            [out]       ULONG *pcBodies);
+
+        HRESULT FindFirst(
+            [in, out]   LPFINDBODY pFindBody,
+            [out]       LPHBODY phBody);
+
+        HRESULT FindNext(
+            [in, out]   LPFINDBODY pFindBody,
+            [out]       LPHBODY phBody);
+
+        HRESULT ResolveURL(
+            [in]        HBODY hRelated,
+            [in]        LPCSTR pszBase,
+            [in]        LPCSTR pszURL,
+            [in]        DWORD dwFlags,
+            [out]       LPHBODY phBody);
+
+        HRESULT ToMultipart(
+            [in]        HBODY hBody,
+            [in]        LPCSTR pszSubType,
+            [out]       LPHBODY phMultipart);
+
+        HRESULT GetBodyOffsets(
+            [in]        HBODY hBody,
+            [in, out]   LPBODYOFFSETS pOffsets);
+
+        HRESULT GetCharset(
+            [out]       LPHCHARSET phCharset);
+
+        HRESULT SetCharset(
+            [in]        HCHARSET hCharset,
+            [in]        CSETAPPLYTYPE applytype);
+
+        HRESULT IsBodyType(
+            [in]        HBODY hBody,
+            [in]        IMSGBODYTYPE bodytype);
+
+        HRESULT IsContentType(
+            [in]        HBODY hBody,
+            [in]        LPCSTR pszPriType,
+            [in]        LPCSTR pszSubType);
+
+        HRESULT QueryBodyProp(
+            [in]        HBODY hBody,
+            [in]        LPCSTR pszName,
+            [in]        LPCSTR pszCriteria,
+            [in]        boolean fSubString,
+            [in]        boolean fCaseSensitive);
+
+        HRESULT GetBodyProp(
+            [in]        HBODY hBody,
+            [in]        LPCSTR pszName,
+            [in]        DWORD dwFlags,
+            [in, out]   LPPROPVARIANT pValue);
+
+        HRESULT SetBodyProp(
+            [in]        HBODY hBody,
+            [in]        LPCSTR pszName,
+            [in]        DWORD dwFlags,
+            [in]        LPCPROPVARIANT pValue);
+
+        HRESULT DeleteBodyProp(
+            [in]        HBODY hBody,
+            [in]        LPCSTR pszName);
+
+        HRESULT SetOption(
+            [in]        const TYPEDID oid,
+            [in]        LPCPROPVARIANT pValue);
+
+        HRESULT GetOption(
+            [in]        const TYPEDID oid,
+            [in, out]   LPPROPVARIANT pValue);
+    }
+
+    [
+        uuid(fd853cd5-7f86-11d0-8252-00c04fd85ab4),
+        object
+    ]
+    interface IMimeMessage : IMimeMessageTree
+    {
+        typedef [unique] IMimeMessage *LPMIMEMESSAGE;
+
+        typedef DWORD TEXTTYPE;
+
+        typedef enum tagIMSGFLAGS
+        {
+            IMF_ATTACHMENTS     = 0x00000001,
+            IMF_MULTIPART       = 0x00000002,
+            IMF_SUBMULTIPART    = 0x00000004,
+            IMF_MIME            = 0x00000008,
+            IMF_HTML            = 0x00000010,
+            IMF_PLAIN           = 0x00000020,
+            IMF_PARTIAL         = 0x00000040,
+            IMF_SIGNED          = 0x00000080,
+            IMF_ENCRYPTED       = 0x00000100,
+            IMF_TNEF            = 0x00000200,
+            IMF_MHTML           = 0x00000400,
+            IMF_SECURE          = 0x00000800,
+            IMF_TEXT            = 0x00001000,
+            IMF_CSETTAGGED      = 0x00002000,
+            IMF_NEWS            = 0x00004000,
+            IMF_VOICEMAIL       = 0x00008000,
+            IMF_HASVCARD        = 0x00010000,
+            IMF_RFC1154         = 0x00020000,
+        } IMSGFLAGS;
+
+        typedef enum tagIMSGPRIORITY
+        {
+            IMSG_PRI_LOW    = 5,
+            IMSG_PRI_NORMAL = 3,
+            IMSG_PRI_HIGH   = 1,
+        } IMSGPRIORITY;
+
+        cpp_quote("#define WPF_HTML             0x00000001")
+        cpp_quote("#define WPF_AUTOINLINE       0x00000002")
+        cpp_quote("#define WPF_SLIDESHOW        0x00000004")
+        cpp_quote("#define WPF_ATTACHLINKS      0x00000008")
+        cpp_quote("#define WPF_IMAGESONLY       0x00000010")
+        cpp_quote("#define WPF_NOMETACHARSET    0x00000020")
+
+        typedef struct tagWEPAGEOPTIONS
+        {
+            DWORD cbSize;
+            DWORD dwFlags;
+            DWORD dwDelay;
+            WCHAR wchQuote;
+        } WEBPAGEOPTIONS, *LPWEBPAGEOPTIONS;
+
+        cpp_quote("#define TXT_PLAIN       1")
+        cpp_quote("#define TXT_HTML        2")
+
+        HRESULT CreateWebPage(
+            [in]        IStream *pRootStm,
+            [in]        LPWEBPAGEOPTIONS pOptions,
+            [in]        IMimeMessageCallback *pCallback,
+            [out]       IMoniker **ppMoniker);
+
+        HRESULT GetProp(
+            [in]        LPCSTR pszName,
+            [in]        DWORD dwFlags,
+            [in,out]    LPPROPVARIANT pValue);
+
+        HRESULT SetProp(
+            [in]        LPCSTR pszName,
+            [in]        DWORD dwFlags,
+            [in]        LPCPROPVARIANT pValue);
+
+        HRESULT DeleteProp(
+            [in]        LPCSTR pszName);
+
+        HRESULT QueryProp(
+            [in]        LPCSTR pszName,
+            [in]        LPCSTR pszCriteria,
+            [in]        boolean fSubString,
+            [in]        boolean fCaseSensitive);
+
+        HRESULT GetTextBody(
+            [in]        DWORD dwTxtType,
+            [in]        ENCODINGTYPE ietEncoding,
+            [out]       IStream **pStream,
+            [out]       LPHBODY phBody);
+
+        HRESULT SetTextBody(
+            [in]        DWORD dwTxtType,
+            [in]        ENCODINGTYPE ietEncoding,
+            [in]        HBODY hAlternative,
+            [in]        IStream *pStream,
+            [out]       LPHBODY phBody);
+
+        HRESULT AttachObject(
+            [in]        REFIID riid,
+            [in, iid_is(riid)] void *pvObject,
+            [out]       LPHBODY phBody);
+
+        HRESULT AttachFile(
+            [in]        LPCSTR pszFilePath,
+            [in]        IStream *pstmFile,
+            [out]       LPHBODY phBody);
+
+        HRESULT AttachURL(
+            [in]        LPCSTR pszBase,
+            [in]        LPCSTR pszURL,
+            [in]        DWORD dwFlags,
+            [in]        IStream *pstmURL,
+            [out]       LPSTR *ppszCIDURL,
+            [out]       LPHBODY phBody);
+
+        HRESULT GetAttachments(
+            [out]       ULONG *pcAttach,
+            [out]       LPHBODY *pprghAttach);
+
+        HRESULT GetAddressTable(
+            [out]       IMimeAddressTable **ppTable);
+
+        HRESULT GetSender(
+            [in, out]   LPADDRESSPROPS pAddress);
+
+        HRESULT GetAddressTypes(
+            [in]        DWORD dwAdrTypes,
+            [in]        DWORD dwProps,
+            [in, out]   LPADDRESSLIST pList);
+
+        HRESULT GetAddressFormat(
+            [in]        DWORD dwAdrTypes,
+            [in]        ADDRESSFORMAT format,
+            [out]       LPSTR *ppszFormat);
+
+        HRESULT EnumAddressTypes(
+            [in]        DWORD dwAdrTypes,
+            [in]        DWORD dwProps,
+            [out]       IMimeEnumAddressTypes **ppEnum);
+
+        HRESULT SplitMessage(
+            [in]        ULONG cbMaxPart,
+            [out]       IMimeMessageParts **ppParts);
+
+        HRESULT GetRootMoniker(
+            [out]       IMoniker **ppMoniker);
+    }
+
+    [
+        uuid(761aa741-7bda-11d1-8aa9-00c04fb951f3),
+        object
+    ]
+    interface IMimeMessageCallback : IUnknown
+    {
+        HRESULT OnWebPageSplitter(
+            [in]       DWORD cInlined,
+            [in]       IStream *ppStream);
+    }
+
+    [
+        uuid(de4ad8da-555f-11d1-8dd0-00c04fb951f9),
+        object
+    ]
+    interface IPersistMime : IPersist
+    {
+        /* FIXME: fill this in */
+    }
+
+    [
+        uuid(c558834f-7f86-11d0-8252-00c04fd85ab4),
+        object
+    ]
+    interface IMimeMessageParts : IUnknown
+    {
+        /* FIXME: fill this in */
+    }
+
+    [
+        uuid(c558834d-7f86-11d0-8252-00c04fd85ab4),
+        object
+    ]
+    interface IMimeEnumHeaderRows : IUnknown
+    {
+        typedef struct tagENUMHEADERROW
+        {
+            HHEADERROW   hRow;
+            LPSTR        pszHeader;
+            LPSTR        pszData;
+            ULONG        cchData;
+            DWORD_PTR    dwReserved;
+        } ENUMHEADERROW, *LPENUMHEADERROW;
+
+        /* FIXME: fill this in */
+    }
+
+    [
+        uuid(fd853cee-7f86-11d0-8252-00c04fd85ab4),
+        object
+    ]
+    interface IMimeEnumProperties : IUnknown
+    {
+        typedef [unique] IMimeEnumProperties *LPMIMEENUMPROPERTIES;
+
+        typedef struct tagENUMPROPERTY
+        {
+            LPSTR       pszName;
+            HHEADERROW  hRow;
+            DWORD       dwPropId;
+        } ENUMPROPERTY, *LPENUMPROPERTY;
+
+        HRESULT Next(
+            [in]      ULONG cFetch,
+            [in, out] LPENUMPROPERTY prgProp,
+            [out]     ULONG *pcFetched);
+
+        HRESULT Skip(
+            [in]      ULONG cItems);
+
+        HRESULT Reset(void);
+
+        HRESULT Clone(
+            [out]      IMimeEnumProperties **ppEnum);
+
+        HRESULT Count(
+            [out]      ULONG *pcItems);
+
+    }
+
+    [
+        uuid(c5588354-7f86-11d0-8252-00c04fd85ab4),
+        object
+    ]
+    interface IMimeEnumAddressTypes : IUnknown
+    {
+        /* FIXME: fill this in */
+    }
+
+    [
+        uuid(c5588350-7f86-11d0-8252-00c04fd85ab4),
+        object
+    ]
+    interface IMimeEnumMessageParts : IUnknown
+    {
+        /* FIXME: fill this in */
+    }
+
+    [
+        uuid(64577981-86d7-11d1-bdfc-00c04fa31009),
+        object
+    ]
+    interface IHashTable : IUnknown
+    {
+        /* FIXME: fill this in */
+    }
+
+    [
+        uuid(c5588351-7f86-11d0-8252-00c04fd85ab4),
+        object
+    ]
+    interface IMimeAllocator : IMalloc
+    {
+        typedef [unique] IMimeAllocator *LPMIMEALLOCATOR;
+
+        HRESULT FreeParamInfoArray(
+            [in] ULONG            cParams,
+            [in] LPMIMEPARAMINFO  prgParam,
+            [in] boolean          fFreeArray);
+
+        HRESULT FreeAddressList(
+            [in,out] LPADDRESSLIST pList);
+
+        HRESULT FreeAddressProps(
+            [in,out] LPADDRESSPROPS pAddress);
+
+        HRESULT ReleaseObjects(
+            [in] ULONG            cObjects,
+            [in] IUnknown         **prgpUnknown,
+            [in] boolean          fFreeArray);
+
+        HRESULT FreeEnumHeaderRowArray(
+            [in] ULONG            cRows,
+            [in] LPENUMHEADERROW  prgRow,
+            [in] boolean          fFreeArray);
+
+        HRESULT FreeEnumPropertyArray(
+            [in] ULONG            cProps,
+            [in] LPENUMPROPERTY   prgProp,
+            [in] boolean          fFreeArray);
+
+        HRESULT FreeThumbprint(
+            [in] THUMBBLOB         *pthumbprint);
+
+        HRESULT PropVariantClear(
+            [in] LPPROPVARIANT     pProp);
+
+    }
+
+    [
+        uuid(feceaffd-c441-11d1-960e-00c04fbd7c09),
+        object
+    ]
+    interface IMimeObjResolver : IUnknown
+    {
+        /* FIXME: fill this in */
+    }
+
+    [
+        uuid(b0d17fc2-7bc4-11d1-bdfa-00c04fa31009),
+        object
+    ]
+    interface IFontCache : IUnknown
+    {
+        /* FIXME: fill this in */
+    }
+
+    [
+        uuid(b0d17fc5-7bc4-11d1-bdfa-00c04fa31009),
+        object
+    ]
+    interface IFontCacheNotify : IUnknown
+    {
+        /* FIXME: fill this in */
+    }
+
+    [
+        uuid(70183210-7b36-11d2-8c12-00c04fa31009),
+        object
+    ]
+    interface IMimeEditTag : IUnknown
+    {
+        /* FIXME: fill this in */
+    }
+
+    [
+        uuid(d09ee528-7b38-11d2-8c12-00c04fa31009),
+        object
+    ]
+    interface IMimeEditTagCollection : IUnknown
+    {
+        /* FIXME: fill this in */
+    }
+
+    [
+         uuid(ba715ae0-a740-11d2-8b22-0080c76b34c6),
+         local
+    ]
+    interface IMimeSecurityCallback : IUnknown
+    {
+        /* FIXME: fill this in */
+
+        cpp_quote("#define CMS_RECIPIENT_INFO_TYPE_UNKNOWN                0")
+        cpp_quote("#define CMS_RECIPIENT_INFO_TYPE_KEYTRANS               1")
+        cpp_quote("#define CMS_RECIPIENT_INFO_TYPE_KEYAGREE               2")
+        cpp_quote("#define CMS_RECIPIENT_INFO_TYPE_MAIL_LIST              3")
+
+        cpp_quote("#define CMS_RECIPIENT_INFO_PUBKEY_CERTIFICATE          0")
+        cpp_quote("#define CMS_RECIPIENT_INFO_PUBKEY_KEYTRANS             1")
+        cpp_quote("#define CMS_RECIPIENT_INFO_PUBKEY_PROVIDER             2")
+        cpp_quote("#define CMS_RECIPIENT_INFO_PUBKEY_EPHEMERAL_KEYAGREE   3")
+        cpp_quote("#define CMS_RECIPIENT_INFO_PUBKEY_STATIC_KEYAGREE      4")
+
+        cpp_quote("#define CMS_RECIPIENT_INFO_KEYID_CERTIFICATE           0")
+        cpp_quote("#define CMS_RECIPIENT_INFO_KEYID_ISSUERSERIAL          1")
+        cpp_quote("#define CMS_RECIPIENT_INFO_KEYID_KEY_ID                2")
+
+    }
+}
+
+cpp_quote("#ifdef __cplusplus")
+cpp_quote(" extern \"C\" {")
+cpp_quote("#endif")
+
+cpp_quote("")
+cpp_quote("HRESULT WINAPI MimeOleSetCompatMode(DWORD);")
+cpp_quote("HRESULT WINAPI MimeOleContentTypeFromUrl(LPCSTR,LPCSTR,LPSTR*);")
+cpp_quote("HRESULT WINAPI MimeOleParseMhtmlUrl(LPSTR,LPSTR*,LPSTR*);")
+cpp_quote("HRESULT WINAPI MimeOleObjectFromUrl(LPCSTR,BOOL,REFIID,LPVOID*,IUnknown**);")
+cpp_quote("HRESULT WINAPI MimeOleObjectFromMoniker(BINDF,IMoniker*,IBindCtx*,REFIID,LPVOID*,IMoniker**);")
+cpp_quote("HRESULT WINAPI MimeOleCombineURL(LPCSTR,ULONG,LPCSTR,ULONG,BOOL,LPSTR*);")
+cpp_quote("HRESULT WINAPI MimeOleGetSubjectFileName(IMimePropertySet*,ULONG*,ULONG*,LPSTR,ULONG);")
+cpp_quote("HRESULT WINAPI MimeOleCreateWebDocument(LPCSTR,LPCSTR,IMimeWebDocument**);")
+cpp_quote("HRESULT WINAPI MimeOleGetRelatedSection(IMimeMessageTree*,boolean,LPHBODY,boolean*);")
+cpp_quote("HRESULT WINAPI MimeOleGetMixedSection(IMimeMessageTree*,boolean,LPHBODY,boolean*);")
+cpp_quote("HRESULT WINAPI MimeOleGetAlternativeSection(IMimeMessageTree*,LPHBODY,boolean*);")
+cpp_quote("HRESULT WINAPI MimeOleGenerateCID(LPSTR,ULONG,boolean);")
+cpp_quote("HRESULT WINAPI MimeOleGenerateMID(LPSTR,ULONG,boolean);")
+cpp_quote("HRESULT WINAPI MimeOleCreateByteStream(IStream**);")
+cpp_quote("HRESULT WINAPI MimeOlGetPropertySchema(IMimePropertySchema**);")
+cpp_quote("HRESULT WINAPI MimeOleQueryString(LPCSTR,LPCSTR,boolean,boolean);")
+cpp_quote("HRESULT WINAPI MimeOleGetPropA(IMimePropertySet*,LPCSTR,DWORD,LPSTR*);")
+cpp_quote("HRESULT WINAPI MimeOleSetPropA(IMimePropertySet*,LPCSTR,DWORD,LPCSTR);")
+cpp_quote("HRESULT WINAPI MimeOleGetPropW(IMimePropertySet*,LPCSTR,DWORD,LPWSTR*);")
+cpp_quote("HRESULT WINAPI MimeOleSetPropW(IMimePropertySet*,LPCSTR,DWORD,LPCWSTR);")
+cpp_quote("HRESULT WINAPI MimeOleGetBodyPropA(IMimeMessageTree*,HBODY,LPCSTR,DWORD,LPSTR*);")
+cpp_quote("HRESULT WINAPI MimeOleSetBodyPropA(IMimeMessageTree*,HBODY,LPCSTR,DWORD,LPCSTR);")
+cpp_quote("HRESULT WINAPI MimeOleGetBodyPropW(IMimeMessageTree*,HBODY,LPCSTR,DWORD,LPWSTR*);")
+cpp_quote("HRESULT WINAPI MimeOleSetBodyPropW(IMimeMessageTree*,HBODY,LPCSTR,DWORD,LPCWSTR);")
+cpp_quote("HRESULT WINAPI MimeOleCreateHeaderTable(IMimeHeaderTable**);")
+cpp_quote("HRESULT WINAPI MimeOleVariantFree(LPPROPVARIANT);")
+cpp_quote("HRESULT WINAPI MimeOleVariantCopy(LPPROPVARIANT,LPPROPVARIANT);")
+cpp_quote("HRESULT WINAPI MimeOleGetExtClassId(LPCSTR,LPCLSID);")
+cpp_quote("HRESULT WINAPI MimeOleEncodeHeader(HCHARSET,LPPROPVARIANT,LPSTR*,LPRFC1522INFO);")
+cpp_quote("HRESULT WINAPI MimeOleDecodeHeader(HCHARSET,LPCSTR,LPPROPVARIANT,LPRFC1522INFO);")
+cpp_quote("HRESULT WINAPI MimeOleRfc1522Decode(LPCSTR,LPSTR,ULONG,LPSTR*);")
+cpp_quote("HRESULT WINAPI MimeOleRfc1522Encode(LPCSTR,HCHARSET,LPSTR*);")
+cpp_quote("HRESULT WINAPI MimeOleGetInternat(IMimeInternational**);")
+cpp_quote("HRESULT WINAPI MimeOleFindCharset(LPCSTR,LPHCHARSET);")
+cpp_quote("HRESULT WINAPI MimeOleGetCharsetInfo(HCHARSET,LPINETCSETINFO);")
+cpp_quote("HRESULT WINAPI MimeOleGetCodePageInfo(HCHARSET,LPCODEPAGEINFO);")
+cpp_quote("HRESULT WINAPI MimeOleGetDefaultCharset(LPHCHARSET);")
+cpp_quote("HRESULT WINAPI MimeOleSetDefaultCharset(HCHARSET);")
+cpp_quote("HRESULT WINAPI MimeOleGetCodePageCharset(CODEPAGEID,CHARSETTYPE,LPHCHARSET);")
+cpp_quote("HRESULT WINAPI MimeOleCreateVirtualStream(IStream**);")
+cpp_quote("HRESULT WINAPI MimeOleOpenFileStream(LPCSTR,DWORD,DWORD,IStream**);")
+cpp_quote("HRESULT WINAPI MimeOleIsTnefStream(IStream*);")
+cpp_quote("HRESULT WINAPI MimeOleGenerateFileName(LPCSTR,LPCSTR,LPCSTR,LPSTR*);")
+cpp_quote("HRESULT WINAPI MimeOleGetFileExtension(LPCSTR,LPSTR,ULONG);")
+cpp_quote("HRESULT WINAPI MimeOleCreateSecurity(IMimeSecurity**);")
+cpp_quote("HRESULT WINAPI MimeOleInetDateToFileTime(LPCSTR,LPFILETIME);")
+cpp_quote("HRESULT WINAPI MimeOleFileTimeToInetDate(LPFILETIME,LPSTR,ULONG);")
+cpp_quote("HRESULT WINAPI MimeOleCreateMessageParts(IMimeMessageParts**);")
+cpp_quote("HRESULT WINAPI MimeOleGetAllocator(IMimeAllocator**);")
+cpp_quote("HRESULT WINAPI MimeOleParseRfc822Address(DWORD,ENCODINGTYPE,LPCSTR,LPADDRESSLIST);")
+cpp_quote("HRESULT WINAPI MimeOleCreateMessage(IUnknown*,IMimeMessage**);")
+cpp_quote("HRESULT WINAPI MimeOleMergePartialHeaders(IStream*,IStream*);")
+cpp_quote("HRESULT WINAPI MimeOleEscapeString(CODEPAGEID,LPCSTR,LPSTR*);")
+cpp_quote("HRESULT WINAPI MimeOleGetExtContentType(LPCSTR,LPSTR*);")
+cpp_quote("HRESULT WINAPI MimeOleGetContentTypeExt(LPCSTR,LPSTR*);")
+cpp_quote("HRESULT WINAPI MimeOleGetFileInfo(LPSTR,LPSTR*,LPSTR*,LPSTR*,LPSTR*,LPSTR*);")
+cpp_quote("HRESULT WINAPI MimeOleCreateBody(IMimeBody**);")
+cpp_quote("HRESULT WINAPI MimeOleCreatePropertySet(IUnknown*,IMimePropertySet**);")
+cpp_quote("HRESULT WINAPI MimeOleCreateMessageTree(IUnknown*,IMimeMessageTree**);")
+cpp_quote("HRESULT WINAPI MimeOleGetCertsFromThumbprints(THUMBBLOB*,X509CERTRESULT*,const HCERTSTORE*,DWORD);")
+cpp_quote("HRESULT WINAPI MimeOleSplitMessage(IMimeMessage*,ULONG,IMimeMessageParts**);")
+cpp_quote("HRESULT WINAPI MimeOleClearDirtyTree(IMimeMessageTree*);")
+cpp_quote("HRESULT WINAPI MimeOleConvertEnrichedToHTML(CODEPAGEID,IStream*,IStream*);")
+cpp_quote("HRESULT WINAPI MimeOleSMimeCapsToDlg(LPBYTE,DWORD,DWORD,PCX509CERT*,HWND,DWORD,DWORD,DWORD);")
+cpp_quote("HRESULT WINAPI MimeOleSMimeCapsFromDlg(HWND,DWORD,DWORD,DWORD,LPBYTE,DWORD*);")
+cpp_quote("HRESULT WINAPI MimeOleSMimeCapInit(LPBYTE,DWORD,LPVOID*);")
+cpp_quote("HRESULT WINAPI MimeOleSMimeCapAddSMimeCap(LPBYTE,DWORD,LPVOID);")
+cpp_quote("HRESULT WINAPI MimeOleSMimeCapAddCert(LPBYTE,DWORD,BOOL,LPVOID);")
+cpp_quote("HRESULT WINAPI MimeOleSMimeCapGetEncAlg(LPVOID,LPBYTE,DWORD*,DWORD*);")
+cpp_quote("HRESULT WINAPI MimeOleSMimeCapGetHashAlg(LPVOID,LPBYTE,DWORD*,DWORD*);")
+cpp_quote("HRESULT WINAPI MimeOleSMimeCapRelease(LPVOID);")
+cpp_quote("HRESULT WINAPI MimeOleAlgNameFromSMimeap(LPBYTE,DWORD,LPCSTR*);")
+cpp_quote("HRESULT WINAPI MimeOleAlgStrengthFromSMimeCap(LPBYTE,DWORD,BOOL,DWORD*);")
+cpp_quote("HRESULT WINAPI MimeOleSMimeCapsFull(LPVOID,BOOL,BOOL,LPBYTE,DWORD*);")
+cpp_quote("HRESULT WINAPI MimeOleCreateHashTable(DWORD,BOOL,IHashTable**);")
+cpp_quote("HRESULT WINAPI MimeOleStripHeaders(IMimeMessage*,HBODY,LPCSTR,LPCSTR,IStream**);")
+
+cpp_quote("HRESULT WINAPI MimeEditViewSource(HWND,IMimeMessage*);")
+cpp_quote("HRESULT WINAPI MimeEditIsSafeToRun(HWND,LPCSTR);")
+cpp_quote("HRESULT WINAPI MimeEditVerifyTrust(HWND,LPCSTR,LPCSTR);")
+cpp_quote("HRESULT WINAPI MimeEditCreateMimeDocument(IUnknown*,IMimeMessage*,DWORD,IMimeMessage**);")
+cpp_quote("HRESULT WINAPI MimeEditGetBackgroundImageUrl(IUnknown*,BSTR*);")
+cpp_quote("HRESULT WINAPI MimeEditDocumentFromStream(IStream*,REFIID,void**);")
+
+cpp_quote("#ifdef __cplusplus")
+cpp_quote("}")
+cpp_quote("#endif")
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/minmax.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/minmax.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/minmax.h	(revision 16410)
@@ -0,0 +1,31 @@
+/*
+ * min/max macros
+ *
+ * Copyright 2001 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_MINMAX_H
+#define __WINE_MINMAX_H
+
+#ifndef max
+#define max(a,b)   (((a) > (b)) ? (a) : (b))
+#endif
+#ifndef min
+#define min(a,b)   (((a) < (b)) ? (a) : (b))
+#endif
+
+#endif /* __WINE_MINMAX_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mlang.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mlang.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mlang.idl	(revision 16410)
@@ -0,0 +1,748 @@
+/*
+ * Copyright (C) 2004 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef DO_NO_IMPORTS
+import "unknwn.idl";
+#endif
+
+interface IStream;
+
+/* FIXME: LANGID is defined in winnt.h and mlang.h in the platform SDK */
+cpp_quote("#ifndef _WINNT_")
+typedef WORD LANGID;
+cpp_quote("#endif")
+
+[
+  object,
+  uuid(359f3443-bd4a-11d0-b188-00aa0038c969),
+  pointer_default(unique)
+]
+interface IMLangCodePages : IUnknown
+{
+    HRESULT GetCharCodePages(      
+        [in] WCHAR chSrc,
+        [out] DWORD *pdwCodePages);
+    HRESULT GetStrCodePages(      
+        [in, size_is(cchSrc)] const WCHAR *pszSrc,
+        [in] long cchSrc,
+        [in] DWORD dwPriorityCodePages,
+        [out] DWORD *pdwCodePages,
+        [out] long *pcchCodePages);
+    HRESULT CodePageToCodePages(      
+        [in] UINT uCodePage,
+        [out] DWORD *pdwCodePages);
+    HRESULT CodePagesToCodePage(      
+        [in] DWORD dwCodePages,
+        [in] UINT uDefaultCodePage,
+        [out] UINT *puCodePage);
+}
+
+[
+  object,
+  uuid(359f3441-bd4a-11d0-b188-00aa0038c969),
+  pointer_default(unique)
+]
+interface IMLangFontLink : IMLangCodePages
+{
+    HRESULT GetFontCodePages(
+        [in] HDC hDC,
+        [in] HFONT hFont,
+        [out] DWORD *pdwCodePages );
+
+    HRESULT MapFont(      
+        [in] HDC hDC,
+        [in] DWORD dwCodePages,
+        [in] HFONT hSrcFont,
+        [out] HFONT *phDestFont);
+
+    HRESULT ReleaseFont(      
+        [in] HFONT hFont);
+
+    HRESULT ResetFontMapping();
+}
+
+[
+  object,
+  uuid(ae5f1430-388b-11d2-8380-00c04f8f5da1),
+  pointer_default(unique)
+]
+interface IEnumScript : IUnknown
+{
+    const USHORT MAX_SCRIPT_NAME = 48;
+    const USHORT MAX_MIMEFACE_NAME = 32;
+
+    typedef BYTE SCRIPT_ID;
+    typedef __int64 SCRIPT_IDS;
+
+    typedef enum tagSCRIPTCONTF
+    {
+        sidDefault = 0,
+        sidMerge = sidDefault + 1,
+        sidAsciiSym = sidMerge + 1,
+        sidAsciiLatin = sidAsciiSym + 1,
+        sidLatin = sidAsciiLatin + 1,
+        sidGreek = sidLatin + 1,
+        sidCyrillic = sidGreek + 1,
+        sidArmenian = sidCyrillic + 1,
+        sidHebrew = sidArmenian + 1,
+        sidArabic = sidHebrew + 1,
+        sidDevanagari = sidArabic + 1,
+        sidBengali = sidDevanagari + 1,
+        sidGurmukhi = sidBengali + 1,
+        sidGujarati = sidGurmukhi + 1,
+        sidOriya = sidGujarati + 1,
+        sidTamil = sidOriya + 1,
+        sidTelugu = sidTamil + 1,
+        sidKannada = sidTelugu + 1,
+        sidMalayalam = sidKannada + 1,
+        sidThai = sidMalayalam + 1,
+        sidLao = sidThai + 1,
+        sidTibetan = sidLao + 1,
+        sidGeorgian = sidTibetan + 1,
+        sidHangul = sidGeorgian + 1,
+        sidKana = sidHangul + 1,
+        sidBopomofo = sidKana + 1,
+        sidHan = sidBopomofo + 1,
+        sidEthiopic = sidHan + 1,
+        sidCanSyllabic = sidEthiopic + 1,
+        sidCherokee = sidCanSyllabic + 1,
+        sidYi = sidCherokee + 1,
+        sidBraille = sidYi + 1,
+        sidRunic = sidBraille + 1,
+        sidOgham = sidRunic + 1,
+        sidSinhala = sidOgham + 1,
+        sidSyriac = sidSinhala + 1,
+        sidBurmese = sidSyriac + 1,
+        sidKhmer = sidBurmese + 1,
+        sidThaana = sidKhmer + 1,
+        sidMongolian = sidThaana + 1,
+        sidUserDefined = sidMongolian + 1,
+        sidLim = sidUserDefined + 1,
+        sidFEFirst = sidHangul,
+        sidFELast = sidHan
+    } SCRIPTCONTF;
+
+    typedef enum tagSCRIPTFONTCONTF
+    {
+        SCRIPTCONTF_FIXED_FONT = 0x1,
+        SCRIPTCONTF_PROPORTIONAL_FONT = 0x2,
+        SCRIPTCONTF_SCRIPT_USER = 0x10000,
+        SCRIPTCONTF_SCRIPT_HIDE = 0x20000,
+        SCRIPTCONTF_SCRIPT_SYSTEM = 0x40000
+    } SCRIPTFONTCONTF;
+
+    typedef struct tagSCRIPFONTINFO
+    {
+        SCRIPT_IDS scripts;
+        WCHAR wszFont[MAX_MIMEFACE_NAME];
+    } SCRIPTFONTINFO, *PSCRIPTFONTINFO;
+
+    typedef struct tagSCRIPTINFO {
+        SCRIPT_ID ScriptId;
+        UINT uiCodePage;
+        WCHAR wszDescription[MAX_SCRIPT_NAME];
+        WCHAR wszFixedWidthFont[MAX_MIMEFACE_NAME];
+        WCHAR wszProportionalFont[MAX_MIMEFACE_NAME];
+    } SCRIPTINFO, *PSCRIPTINFO;
+
+    HRESULT Clone( 
+        [out] IEnumScript **ppEnum);
+
+    HRESULT Next(      
+        [in] ULONG celt,
+        [out] PSCRIPTINFO rgelt,
+        [out] ULONG *pceltFetched);
+
+    HRESULT Reset();
+
+    HRESULT Skip(      
+        [in] ULONG celt);
+}
+
+[
+  object,
+  uuid(dccfc162-2b38-11d2-b7ec-00c04f8f5d9a),
+  pointer_default(unique)
+]
+interface IMLangFontLink2 : IMLangCodePages
+{
+    typedef struct tagUNICODERANGE
+    {
+        WCHAR wcFrom;
+        WCHAR wcTo;
+    } UNICODERANGE;
+
+    typedef [unique] IMLangFontLink2 *PMLANGFONTLINK2;
+
+    HRESULT GetFontCodePages(
+        [in] HDC hDC,
+        [in] HFONT hFont,
+        [out] DWORD *pdwCodePages );
+
+    HRESULT ReleaseFont(
+        [in] HFONT hFont);
+
+    HRESULT ResetFontMapping();
+
+    HRESULT MapFont(
+        [in] HDC hDC,
+        [in] DWORD dwCodePages,
+        [in] WCHAR chSrc,
+        [out] HFONT *pFont);
+
+    HRESULT GetFontUnicodeRanges(
+        [in] HDC hDC,
+        [in,out] UINT *puiRanges,
+        [out] UNICODERANGE* pUranges);
+
+    HRESULT GetScriptFontInfo(
+        [in] SCRIPT_ID sid,
+        [in] DWORD dwFlags,
+        [in,out] UINT *puiFonts,
+        [out] SCRIPTFONTINFO* pScriptFont);
+
+    HRESULT CodePageToScriptID(
+        [in] UINT uiCodePage,
+        [out] SCRIPT_ID *pSid);
+}
+
+[
+ object,
+ uuid(c04d65ce-b70d-11d0-b188-00aa0038c969),
+ pointer_default(unique)
+]
+interface IMLangString : IUnknown
+{
+#ifdef NEWMLSTR
+    HRESULT LockMLStr(
+        [in] long lPos,
+        [in] DWORD dwFlags,
+        [out] DWORD* pdwCookie,
+        [out] long* plActualPos,
+        [out] long* plActualLen);
+
+    HRESULT UnlockMLStr(
+        [in] DWORD dwCookie);
+#else
+    HRESULT Sync(
+        [in] BOOL fNoAccess);
+#endif
+    HRESULT GetLength(
+        [out, retval] long* plLen);
+    HRESULT SetMLStr(
+        [in] long lDestPos,
+        [in] long lDestLen,
+        [in] IUnknown *pSrcMLStr,
+        [in] long lSrcPos,
+        [in] long lSrcLen);
+#ifdef NEWMLSTR
+    HRESULT RegisterAttr(
+        [in] IUnknown *pUnk,
+        [out] DWORD* pdwCookie);
+    HRESULT UnregisterAttr(
+        [in] DWORD dwCookie);
+    HRESULT EnumAttr(
+        [out] IEnumUnknown **ppEnumUnk);
+    HRESULT FindAttr(
+        [in] REFIID riid,
+        [in] LPARAM lParam,
+        [out] IUnknown **ppUnk);
+#else
+    HRESULT GetMLStr(
+        [in] long lSrcPos,
+        [in] long lSrcLen,
+        [in] IUnknown *pUnkOuter,
+        [in] DWORD dwClsContext,
+        [in] const IID* piid,
+        [out] IUnknown** ppDestMLStr,
+        [out] long* plDestPos,
+        [out] long* plDestLen);
+#endif
+}
+
+[
+ object,
+ uuid(f5be2ee1-bfd7-11d0-b188-00aa0038c969),
+ pointer_default(unique)
+]
+interface IMLangLineBreakConsole : IUnknown
+{
+    HRESULT BreakLineML(
+        [in] IMLangString* pSrcMLStr,
+        [in] long lSrcPos,
+        [in] long lSrcLen,
+        [in] long cMinColumns,
+        [in] long cMaxColumns,
+        [out] long* plLineLen,
+        [out] long* plSkipLen);
+
+    HRESULT BreakLineW(
+        [in] LCID locale,
+        [in, size_is(cchSrc)] const WCHAR* pszSrc,
+        [in] long cchSrc,
+        [in] long cMaxColumns,
+        [out] long* pcchLine,
+        [out] long* pcchSkip );
+
+    HRESULT BreakLineA(
+        [in] LCID locale,
+        [in] UINT uCodePage,
+        [in, size_is(cchSrc)] const CHAR* pszSrc,
+        [in] long cchSrc,
+        [in] long cMaxColumns,
+        [out] long* pcchLine,
+        [out] long* pcchSkip);
+}
+
+[
+  object,
+  uuid(275c23e3-3747-11d0-9fea-00aa003f8646),
+  pointer_default(unique)
+]
+interface IEnumCodePage : IUnknown
+{
+    const USHORT MAX_MIMECP_NAME = 64;
+    const USHORT MAX_MIMECSET_NAME = 50;
+
+    typedef enum tagMIMECONTF
+    {
+        MIMECONTF_MAILNEWS = 0x00000001,
+        MIMECONTF_BROWSER = 0x00000002,
+        MIMECONTF_MINIMAL = 0x00000004,
+        MIMECONTF_IMPORT = 0x00000008,
+        MIMECONTF_SAVABLE_MAILNEWS = 0x00000100,
+        MIMECONTF_SAVABLE_BROWSER = 0x00000200,
+        MIMECONTF_EXPORT = 0x00000400,
+        MIMECONTF_PRIVCONVERTER = 0x00010000,
+        MIMECONTF_VALID = 0x00020000,
+        MIMECONTF_VALID_NLS = 0x00040000,
+        MIMECONTF_MIME_IE4 = 0x10000000,
+        MIMECONTF_MIME_LATEST = 0x20000000,
+        MIMECONTF_MIME_REGISTRY = 0x40000000
+    } MIMECONTF;
+
+    typedef struct tagMIMECPINFO {
+        DWORD dwFlags;
+        UINT uiCodePage;
+        UINT uiFamilyCodePage;
+        WCHAR wszDescription[MAX_MIMECP_NAME];
+        WCHAR wszWebCharset[MAX_MIMECSET_NAME];
+        WCHAR wszHeaderCharset[MAX_MIMECSET_NAME];
+        WCHAR wszBodyCharset[MAX_MIMECSET_NAME];
+        WCHAR wszFixedWidthFont[MAX_MIMEFACE_NAME];
+        WCHAR wszProportionalFont[MAX_MIMEFACE_NAME];
+        BYTE bGDICharset;
+    } MIMECPINFO, *PMIMECPINFO;
+
+    typedef struct tagMIMECSETINFO
+    {
+        UINT uiCodePage;
+        UINT uiInternetEncoding;
+        WCHAR wszCharset[MAX_MIMECSET_NAME];
+    } MIMECSETINFO, *PMIMECSETINFO;
+
+    HRESULT Clone( 
+        [out] IEnumCodePage **ppEnum);
+
+    HRESULT Next(      
+        [in] ULONG celt,
+        [out] PMIMECPINFO rgelt,
+        [out] ULONG *pceltFetched);
+
+    HRESULT Reset();
+
+    HRESULT Skip(      
+        [in] ULONG celt);
+}
+
+[
+  object,
+  uuid(d66d6f98-cdaa-11d0-b822-00c04fc9b31f),
+  pointer_default(unique)
+]
+interface IMLangConvertCharset : IUnknown
+{
+    HRESULT Initialize(      
+        [in] UINT uiSrcCodePage,
+        [in] UINT uiDstCodePage,
+        [in] DWORD dwProperty);
+
+    HRESULT GetSourceCodePage(      
+        [out] UINT *puiSrcCodePage);
+
+    HRESULT GetDestinationCodePage(      
+        [out] UINT *puiDstCodePage);
+
+    HRESULT GetProperty(      
+        [out] DWORD *pdwProperty);
+
+    HRESULT DoConversion(      
+        [in] BYTE *pSrcStr,
+        [in,out] UINT *pcSrcSize,
+        [in] BYTE *pDstStr,
+        [in,out] UINT *pcDstSize);
+
+    HRESULT DoConversionToUnicode(      
+        [in] CHAR *pSrcStr,
+        [in,out] UINT *pcSrcSize,
+        [in] WCHAR *pDstStr,
+        [in,out] UINT *pcDstSize);
+
+    HRESULT DoConversionFromUnicode(      
+        [in] WCHAR *pSrcStr,
+        [in,out] UINT *pcSrcSize,
+        [in] CHAR *pDstStr,
+        [in,out] UINT *pcDstSize);
+}
+
+[
+    uuid(d66d6f99-cdaa-11d0-b822-00c04fc9b31f)
+]
+coclass CMLangConvertCharset
+{
+    [default] interface IMLangConvertCharset;
+};
+
+[
+  object,
+  uuid(3dc39d1d-c030-11d0-b81b-00c04fc9b31f),
+  pointer_default(unique)
+]
+interface IEnumRfc1766 : IUnknown
+{
+    const USHORT MAX_RFC1766_NAME = 6;
+    const USHORT MAX_LOCALE_NAME = 32;
+
+    typedef struct tagRFC1766INFO
+    {
+        LCID lcid;
+        WCHAR wszRfc1766[MAX_RFC1766_NAME];
+        WCHAR wszLocaleName[MAX_LOCALE_NAME];
+    } RFC1766INFO, *PRFC1766INFO;
+
+    HRESULT Clone( 
+        [out] IEnumRfc1766 **ppEnum);
+
+    HRESULT Next(      
+        [in] ULONG celt,
+        [out] PRFC1766INFO rgelt,
+        [out] ULONG *pceltFetched);
+
+    HRESULT Reset();
+
+    HRESULT Skip(      
+        [in] ULONG celt);
+}
+
+[
+  object,
+  uuid(275c23e1-3747-11d0-9fea-00aa003f8646),
+  pointer_default(unique)
+]
+interface IMultiLanguage : IUnknown
+{
+    HRESULT GetNumberOfCodePageInfo(      
+        [out] UINT *pcCodePage);
+
+    HRESULT GetCodePageInfo(      
+        [in] UINT uiCodePage,
+        [out] PMIMECPINFO pCodePageInfo);
+
+    HRESULT GetFamilyCodePage(      
+        [in] UINT uiCodePage,
+        [out] UINT *puiFamilyCodePage);
+
+    HRESULT EnumCodePages(      
+        [in] DWORD grfFlags,
+        [out] IEnumCodePage **ppEnumCodePage);
+
+    HRESULT GetCharsetInfo(      
+        [in] BSTR Charset,
+        [in] PMIMECSETINFO pCharsetInfo);
+
+    HRESULT IsConvertible(      
+        [in] DWORD dwSrcEncoding,
+        [in] DWORD dwDstEncoding);
+
+    HRESULT ConvertString(      
+        [in,out] DWORD *pdwMode,
+        [in] DWORD dwSrcEncoding,
+        [in] DWORD dwDstEncoding,
+        [in] BYTE *pSrcStr,
+        [in,out] UINT *pcSrcSize,
+        [in] BYTE *pDstStr,
+        [in,out] UINT *pcDstSize);
+
+    HRESULT ConvertStringToUnicode(      
+        [in,out] DWORD *pdwMode,
+        [in] DWORD dwEncoding,
+        [in] CHAR *pSrcStr,
+        [in,out] UINT *pcSrcSize,
+        [in] WCHAR *pDstStr,
+        [in,out] UINT *pcDstSize);
+
+    HRESULT ConvertStringFromUnicode(      
+        [in,out] DWORD *pdwMode,
+        [in] DWORD dwEncoding,
+        [in] WCHAR *pSrcStr,
+        [in,out] UINT *pcSrcSize,
+        [in] CHAR *pDstStr,
+        [in,out] UINT *pcDstSize);
+
+    HRESULT ConvertStringReset();
+
+    HRESULT GetRfc1766FromLcid(      
+        [in] LCID Locale,
+        [out] BSTR *pbstrRfc1766);
+
+    HRESULT GetLcidFromRfc1766(      
+        [out] LCID *pLocale,
+        [in] BSTR bstrRfc1766);
+
+    HRESULT EnumRfc1766(      
+        [out] IEnumRfc1766 **ppEnumRfc1766);
+
+    HRESULT GetRfc1766Info(      
+        [in] LCID Locale,
+        [out] PRFC1766INFO pRfc1766Info);
+
+    HRESULT CreateConvertCharset(      
+        [in] UINT uiSrcCodePage,
+        [in] UINT uiDstCodePage,
+        [in] DWORD dwProperty,
+        [out] IMLangConvertCharset **ppMLangConvertCharset);
+
+}
+
+[
+  object,
+  uuid(dccfc164-2b38-11d2-b7ec-00c04f8f5d9a),
+  pointer_default(unique)
+]
+interface IMultiLanguage2 : IUnknown
+{
+    typedef struct tagDetectEncodingInfo
+    {
+        UINT nLangID;
+        UINT nCodePage;
+        INT nDocPercent;
+        INT nConfidence;
+    } DetectEncodingInfo, *pDetectEncodingInfo;
+
+    HRESULT GetNumberOfCodePageInfo(      
+        [out] UINT *pcCodePage);
+
+    HRESULT GetCodePageInfo(      
+        [in] UINT uiCodePage,
+        [in] LANGID LangId,
+        [out] PMIMECPINFO pCodePageInfo);
+
+    HRESULT GetFamilyCodePage(      
+        [in] UINT uiCodePage,
+        [out] UINT *puiFamilyCodePage);
+
+    HRESULT EnumCodePages(      
+        [in] DWORD grfFlags,
+        [in] LANGID LangId,
+        [out] IEnumCodePage **ppEnumCodePage);
+
+    HRESULT GetCharsetInfo(      
+        [in] BSTR Charset,
+        [in] PMIMECSETINFO pCharsetInfo);
+
+    HRESULT IsConvertible(      
+        [in] DWORD dwSrcEncoding,
+        [in] DWORD dwDstEncoding);
+
+    HRESULT ConvertString(      
+        [in,out] DWORD *pdwMode,
+        [in] DWORD dwSrcEncoding,
+        [in] DWORD dwDstEncoding,
+        [in] BYTE *pSrcStr,
+        [in,out] UINT *pcSrcSize,
+        [in] BYTE *pDstStr,
+        [in,out] UINT *pcDstSize);
+
+    HRESULT ConvertStringToUnicode(      
+        [in,out] DWORD *pdwMode,
+        [in] DWORD dwEncoding,
+        [in] CHAR *pSrcStr,
+        [in,out] UINT *pcSrcSize,
+        [in] WCHAR *pDstStr,
+        [in,out] UINT *pcDstSize);
+
+    HRESULT ConvertStringFromUnicode(      
+        [in,out] DWORD *pdwMode,
+        [in] DWORD dwEncoding,
+        [in] WCHAR *pSrcStr,
+        [in,out] UINT *pcSrcSize,
+        [in] CHAR *pDstStr,
+        [in,out] UINT *pcDstSize);
+
+    HRESULT ConvertStringReset();
+
+    HRESULT GetRfc1766FromLcid(      
+        [in] LCID Locale,
+        [out] BSTR *pbstrRfc1766);
+
+    HRESULT GetLcidFromRfc1766(      
+        [out] LCID *pLocale,
+        [in] BSTR bstrRfc1766);
+
+    HRESULT EnumRfc1766(      
+        [in] LANGID LangId,
+        [out] IEnumRfc1766 **ppEnumRfc1766);
+
+    HRESULT GetRfc1766Info(      
+        [in] LCID Locale,
+        [in] LANGID LangId,
+        [out] PRFC1766INFO pRfc1766Info);
+
+    HRESULT CreateConvertCharset(      
+        [in] UINT uiSrcCodePage,
+        [in] UINT uiDstCodePage,
+        [in] DWORD dwProperty,
+        [out] IMLangConvertCharset **ppMLangConvertCharset);
+
+    HRESULT ConvertStringInIStream(      
+        [in,out] DWORD *pdwMode,
+        [in] DWORD dwFlag,
+        [in] WCHAR *lpFallBack,
+        [in] DWORD dwSrcEncoding,
+        [in] DWORD dwDstEncoding,
+        [in] IStream *pstmIn,
+        [in] IStream *pstmOut);
+
+    HRESULT ConvertStringToUnicodeEx(      
+        [in,out] DWORD *pdwMode,
+        [in] DWORD dwEncoding,
+        [in] CHAR *pSrcStr,
+        [in,out] UINT *pcSrcSize,
+        [in] WCHAR *pDstStr,
+        [in,out] UINT *pcDstSize,
+        [in] DWORD dwFlag,
+        [in] WCHAR *lpFallBack);
+
+    HRESULT ConvertStringFromUnicodeEx(
+        [in,out] DWORD *pdwMode,
+        [in] DWORD dwEncoding,
+        [in] WCHAR *pSrcStr,
+        [in,out] UINT *pcSrcSize,
+        [in] CHAR *pDstStr,
+        [in,out] UINT *pcDstSize,
+        [in] DWORD dwFlag,
+        [in] WCHAR *lpFallBack);
+
+    HRESULT DetectCodepageInIStream(      
+        [in] DWORD dwFlag,
+        [in] DWORD dwPrefWinCodePage,
+        [in] IStream *pstmIn,
+        [in,out] DetectEncodingInfo *lpEncoding,
+        [in,out] INT *pnScores);
+
+    HRESULT DetectInputCodepage(      
+        [in] DWORD dwFlag,
+        [in] DWORD dwPrefWinCodePage,
+        [in] CHAR *pSrcStr,
+        [in,out] INT *pcSrcSize,
+        [in,out] DetectEncodingInfo *lpEncoding,
+        [in,out] INT *pnScores);
+
+    HRESULT ValidateCodePage(
+        [in] UINT uiCodePage,
+        [in] HWND hwnd);
+
+    HRESULT GetCodePageDescription(      
+        [in] UINT uiCodePage,
+        [in] LCID lcid,
+        [in,out] LPWSTR lpWideCharStr,
+        [in] int cchWideChar);
+
+    HRESULT IsCodePageInstallable(
+        [in] UINT uiCodePage);
+
+    HRESULT SetMimeDBSource(      
+        [in] MIMECONTF dwSource);
+
+    HRESULT GetNumberOfScripts(      
+        [out] UINT *pnScripts);
+
+    HRESULT EnumScripts(      
+        [in] DWORD dwFlags,
+        [in] LANGID LangId,
+        [out] IEnumScript **ppEnumScript);
+
+    HRESULT ValidateCodePageEx( /* undocumented on MSDN */
+        [in] UINT uiCodePage,
+        [in] HWND hwnd,
+        [in] DWORD dwfIODControl);
+}
+
+[
+    object,
+    uuid(4e5868ab-b157-4623-9acc-6a1d9caebe04),
+    pointer_default(unique)
+]
+interface IMultiLanguage3 : IMultiLanguage2
+{
+    typedef [unique] IMultiLanguage3 *LPMULTILANGUAGE3;
+    HRESULT DetectOutboundCodePage(
+        [in] DWORD dwFlags,
+        [in] LPCWSTR lpWideCharStr,
+        [in] UINT cchWideChar,
+        [in] UINT *puiPreferredCodePages,
+        [in] UINT nPreferredCodePages,
+        [in] UINT *puiDetectedCodePages,
+        [in, out] UINT *pnDetectedCodePages,
+        [in] WCHAR *lpSpecialChar);
+
+    HRESULT DetectOutboundCodePageInIStream(
+        [in] DWORD dwFlags,
+        [in] IStream *pStrIn,
+        [in] UINT *puiPreferredCodePages,
+        [in] UINT nPreferredCodePages,
+        [in] UINT *puiDetectedCodePages,
+        [in, out] UINT *pnDetectedCodePages,
+        [in] WCHAR *lpSpecialChar);
+}
+
+[
+    uuid(275C23E2-3747-11d0-9FEA-00AA003f8646)
+]
+coclass CMultiLanguage
+{
+    [default] interface IMultiLanguage;
+    interface IMLangCodePages;
+    interface IMLangFontLink;
+    /* interface IMLangLineBreakConsole; */
+    interface IMLangFontLink2;
+}
+
+cpp_quote("STDAPI LcidToRfc1766A(LCID, LPSTR, INT);")
+cpp_quote("STDAPI LcidToRfc1766W(LCID, LPWSTR, INT);")
+cpp_quote("#define LcidToRfc1766 WINELIB_NAME_AW(LcidToRfc1766)")
+
+cpp_quote("STDAPI Rfc1766ToLcidA(LCID *, LPCSTR);")
+cpp_quote("STDAPI Rfc1766ToLcidW(LCID *, LPCWSTR);")
+cpp_quote("#define Rfc1766ToLcid WINELIB_NAME_AW(Rfc1766ToLcid)")
+
+cpp_quote("STDAPI GetGlobalFontLinkObject(void);")
+cpp_quote("STDAPI IsConvertINetStringAvailable(DWORD, DWORD);")
+cpp_quote("STDAPI ConvertINetString(LPDWORD, DWORD, DWORD, LPCSTR, LPINT, LPSTR, LPINT);")
+cpp_quote("STDAPI ConvertINetMultiByteToUnicode(LPDWORD, DWORD, LPCSTR, LPINT, LPWSTR, LPINT);")
+cpp_quote("STDAPI ConvertINetUnicodeToMultiByte(LPDWORD, DWORD, LPCWSTR, LPINT, LPSTR, LPINT);")
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mmddk.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mmddk.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mmddk.h	(revision 16410)
@@ -0,0 +1,476 @@
+/*
+ * Copyright 1998, Luiz Otavio L. Zorzella
+ *           1999, Eric Pouech
+ *
+ * Purpose:   multimedia declarations (external to WINMM & MMSYSTEM DLLs
+ *                                     for other DLLs (MCI, drivers...))
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __MMDDK_H
+#define __MMDDK_H
+
+#include <mmsystem.h>
+#include <winbase.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define MAX_MIDIINDRV 	(16)
+/* For now I'm making 16 the maximum number of midi devices one can
+ * have. This should be more than enough for everybody. But as a purist,
+ * I intend to make it unbounded in the future, as soon as I figure
+ * a good way to do so.
+ */
+#define MAX_MIDIOUTDRV 	(16)
+
+/* ==================================
+ *   Multimedia DDK compatible part
+ * ================================== */
+
+#include <pshpack1.h>
+
+#define DRVM_INIT		100
+#define DRVM_EXIT		101
+#define DRVM_DISABLE		102
+#define DRVM_ENABLE		103
+
+/* messages that have IOCTL format
+ *    dw1 = NULL or handle
+ *    dw2 = NULL or ptr to DRVM_IOCTL_DATA
+ *    return is MMRESULT
+ */
+#define DRVM_IOCTL		0x100
+#define DRVM_ADD_THRU		(DRVM_IOCTL+1)
+#define DRVM_REMOVE_THRU	(DRVM_IOCTL+2)
+#define DRVM_IOCTL_LAST		(DRVM_IOCTL+5)
+typedef struct {
+    DWORD  dwSize; 	/* size of this structure */
+    DWORD  dwCmd;  	/* IOCTL command code, 0x80000000 and above reserved for system */
+} DRVM_IOCTL_DATA, *LPDRVM_IOCTL_DATA;
+
+/* command code ranges for dwCmd field of DRVM_IOCTL message
+ * - codes from 0 to 0x7FFFFFFF are user defined
+ * - codes from 0x80000000 to 0xFFFFFFFF are reserved for future definition by microsoft
+ */
+#define DRVM_IOCTL_CMD_USER   0x00000000L
+#define DRVM_IOCTL_CMD_SYSTEM 0x80000000L
+
+#define DRVM_MAPPER			0x2000
+#define DRVM_USER			0x4000
+#define DRVM_MAPPER_STATUS		(DRVM_MAPPER+0)
+#define DRVM_MAPPER_RECONFIGURE 	(DRVM_MAPPER+1)
+#define DRVM_MAPPER_PREFERRED_GET	(DRVM_MAPPER+21)
+#define DRVM_MAPPER_CONSOLEVOICECOM_GET	(DRVM_MAPPER+23)
+
+#define DRV_QUERYDRVENTRY		(DRV_RESERVED + 1)
+#define DRV_QUERYDEVNODE		(DRV_RESERVED + 2)
+#define DRV_QUERYNAME			(DRV_RESERVED + 3)
+#define DRV_QUERYDRIVERIDS		(DRV_RESERVED + 4)
+#define DRV_QUERYMAPPABLE		(DRV_RESERVED + 5)
+#define DRV_QUERYMODULE			(DRV_RESERVED + 9)
+#define DRV_PNPINSTALL			(DRV_RESERVED + 11)
+#define DRV_QUERYDEVICEINTERFACE	(DRV_RESERVED + 12)
+#define DRV_QUERYDEVICEINTERFACESIZE	(DRV_RESERVED + 13)
+#define DRV_QUERYSTRINGID		(DRV_RESERVED + 14)
+#define DRV_QUERYSTRINGIDSIZE		(DRV_RESERVED + 15)
+#define DRV_QUERYIDFROMSTRINGID		(DRV_RESERVED + 16)
+#ifdef __WINESRC__
+#define DRV_QUERYDSOUNDIFACE		(DRV_RESERVED + 20)
+#define DRV_QUERYDSOUNDDESC		(DRV_RESERVED + 21)
+#endif
+
+#define DRVM_MAPPER_PREFERRED_FLAGS_PREFERREDONLY   0x00000001
+
+#define WODM_INIT		DRVM_INIT
+#define WODM_GETNUMDEVS		 3
+#define WODM_GETDEVCAPS		 4
+#define WODM_OPEN		 5
+#define WODM_CLOSE		 6
+#define WODM_PREPARE		 7
+#define WODM_UNPREPARE		 8
+#define WODM_WRITE		 9
+#define WODM_PAUSE		10
+#define WODM_RESTART		11
+#define WODM_RESET		12
+#define WODM_GETPOS		13
+#define WODM_GETPITCH		14
+#define WODM_SETPITCH		15
+#define WODM_GETVOLUME		16
+#define WODM_SETVOLUME		17
+#define WODM_GETPLAYBACKRATE	18
+#define WODM_SETPLAYBACKRATE	19
+#define WODM_BREAKLOOP		20
+#define WODM_PREFERRED		21
+
+#define WODM_MAPPER_STATUS      (DRVM_MAPPER_STATUS + 0)
+#define WAVEOUT_MAPPER_STATUS_DEVICE    0
+#define WAVEOUT_MAPPER_STATUS_MAPPED    1
+#define WAVEOUT_MAPPER_STATUS_FORMAT    2
+
+#define WODM_BUSY		21
+
+#define WIDM_INIT		DRVM_INIT
+#define WIDM_GETNUMDEVS		50
+#define WIDM_GETDEVCAPS		51
+#define WIDM_OPEN		52
+#define WIDM_CLOSE		53
+#define WIDM_PREPARE		54
+#define WIDM_UNPREPARE		55
+#define WIDM_ADDBUFFER		56
+#define WIDM_START		57
+#define WIDM_STOP		58
+#define WIDM_RESET		59
+#define WIDM_GETPOS		60
+#define WIDM_PREFERRED		61
+#define WIDM_MAPPER_STATUS      (DRVM_MAPPER_STATUS + 0)
+#define WAVEIN_MAPPER_STATUS_DEVICE     0
+#define WAVEIN_MAPPER_STATUS_MAPPED     1
+#define WAVEIN_MAPPER_STATUS_FORMAT     2
+
+#define MODM_INIT		DRVM_INIT
+#define MODM_GETNUMDEVS		1
+#define MODM_GETDEVCAPS		2
+#define MODM_OPEN		3
+#define MODM_CLOSE		4
+#define MODM_PREPARE		5
+#define MODM_UNPREPARE		6
+#define MODM_DATA		7
+#define MODM_LONGDATA		8
+#define MODM_RESET          	9
+#define MODM_GETVOLUME		10
+#define MODM_SETVOLUME		11
+#define MODM_CACHEPATCHES	12
+#define MODM_CACHEDRUMPATCHES	13
+
+#define MIDM_INIT		DRVM_INIT
+#define MIDM_GETNUMDEVS  	53
+#define MIDM_GETDEVCAPS  	54
+#define MIDM_OPEN        	55
+#define MIDM_CLOSE       	56
+#define MIDM_PREPARE     	57
+#define MIDM_UNPREPARE   	58
+#define MIDM_ADDBUFFER   	59
+#define MIDM_START       	60
+#define MIDM_STOP        	61
+#define MIDM_RESET       	62
+
+
+#define AUXM_INIT             	DRVM_INIT
+#define AUXDM_GETNUMDEVS    	3
+#define AUXDM_GETDEVCAPS    	4
+#define AUXDM_GETVOLUME     	5
+#define AUXDM_SETVOLUME     	6
+
+#define MXDM_INIT		DRVM_INIT
+#define MXDM_USER               DRVM_USER
+#define MXDM_MAPPER             DRVM_MAPPER
+
+#define	MXDM_GETNUMDEVS		1
+#define	MXDM_GETDEVCAPS		2
+#define	MXDM_OPEN		3
+#define	MXDM_CLOSE		4
+#define	MXDM_GETLINEINFO	5
+#define	MXDM_GETLINECONTROLS	6
+#define	MXDM_GETCONTROLDETAILS	7
+#define	MXDM_SETCONTROLDETAILS	8
+
+/* pre-defined joystick types */
+#define JOY_HW_NONE			0
+#define JOY_HW_CUSTOM			1
+#define JOY_HW_2A_2B_GENERIC		2
+#define JOY_HW_2A_4B_GENERIC		3
+#define JOY_HW_2B_GAMEPAD		4
+#define JOY_HW_2B_FLIGHTYOKE		5
+#define JOY_HW_2B_FLIGHTYOKETHROTTLE	6
+#define JOY_HW_3A_2B_GENERIC		7
+#define JOY_HW_3A_4B_GENERIC		8
+#define JOY_HW_4B_GAMEPAD		9
+#define JOY_HW_4B_FLIGHTYOKE		10
+#define JOY_HW_4B_FLIGHTYOKETHROTTLE	11
+#define JOY_HW_LASTENTRY		12
+
+/* calibration flags */
+#define	JOY_ISCAL_XY		0x00000001l	/* XY are calibrated */
+#define	JOY_ISCAL_Z		0x00000002l	/* Z is calibrated */
+#define	JOY_ISCAL_R		0x00000004l	/* R is calibrated */
+#define	JOY_ISCAL_U		0x00000008l	/* U is calibrated */
+#define	JOY_ISCAL_V		0x00000010l	/* V is calibrated */
+#define	JOY_ISCAL_POV		0x00000020l	/* POV is calibrated */
+
+/* point of view constants */
+#define JOY_POV_NUMDIRS          4
+#define JOY_POVVAL_FORWARD       0
+#define JOY_POVVAL_BACKWARD      1
+#define JOY_POVVAL_LEFT          2
+#define JOY_POVVAL_RIGHT         3
+
+/* Specific settings for joystick hardware */
+#define JOY_HWS_HASZ		0x00000001l	/* has Z info? */
+#define JOY_HWS_HASPOV		0x00000002l	/* point of view hat present */
+#define JOY_HWS_POVISBUTTONCOMBOS 0x00000004l	/* pov done through combo of buttons */
+#define JOY_HWS_POVISPOLL	0x00000008l	/* pov done through polling */
+#define JOY_HWS_ISYOKE		0x00000010l	/* joystick is a flight yoke */
+#define JOY_HWS_ISGAMEPAD	0x00000020l	/* joystick is a game pad */
+#define JOY_HWS_ISCARCTRL	0x00000040l	/* joystick is a car controller */
+/* X defaults to J1 X axis */
+#define JOY_HWS_XISJ1Y		0x00000080l	/* X is on J1 Y axis */
+#define JOY_HWS_XISJ2X		0x00000100l	/* X is on J2 X axis */
+#define JOY_HWS_XISJ2Y		0x00000200l	/* X is on J2 Y axis */
+/* Y defaults to J1 Y axis */
+#define JOY_HWS_YISJ1X		0x00000400l	/* Y is on J1 X axis */
+#define JOY_HWS_YISJ2X		0x00000800l	/* Y is on J2 X axis */
+#define JOY_HWS_YISJ2Y		0x00001000l	/* Y is on J2 Y axis */
+/* Z defaults to J2 Y axis */
+#define JOY_HWS_ZISJ1X		0x00002000l	/* Z is on J1 X axis */
+#define JOY_HWS_ZISJ1Y		0x00004000l	/* Z is on J1 Y axis */
+#define JOY_HWS_ZISJ2X		0x00008000l	/* Z is on J2 X axis */
+/* POV defaults to J2 Y axis, if it is not button based */
+#define JOY_HWS_POVISJ1X	0x00010000l	/* pov done through J1 X axis */
+#define JOY_HWS_POVISJ1Y	0x00020000l	/* pov done through J1 Y axis */
+#define JOY_HWS_POVISJ2X	0x00040000l	/* pov done through J2 X axis */
+/* R defaults to J2 X axis */
+#define JOY_HWS_HASR		0x00080000l	/* has R (4th axis) info */
+#define JOY_HWS_RISJ1X		0x00100000l	/* R done through J1 X axis */
+#define JOY_HWS_RISJ1Y		0x00200000l	/* R done through J1 Y axis */
+#define JOY_HWS_RISJ2Y		0x00400000l	/* R done through J2 X axis */
+/* U & V for future hardware */
+#define JOY_HWS_HASU		0x00800000l	/* has U (5th axis) info */
+#define JOY_HWS_HASV		0x01000000l	/* has V (6th axis) info */
+
+/* Usage settings */
+#define JOY_US_HASRUDDER	0x00000001l	/* joystick configured with rudder */
+#define JOY_US_PRESENT		0x00000002l	/* is joystick actually present? */
+#define JOY_US_ISOEM		0x00000004l	/* joystick is an OEM defined type */
+
+
+/* struct for storing x,y, z, and rudder values */
+typedef struct joypos_tag {
+    DWORD	dwX;
+    DWORD	dwY;
+    DWORD	dwZ;
+    DWORD	dwR;
+    DWORD	dwU;
+    DWORD	dwV;
+} JOYPOS, *LPJOYPOS;
+
+/* struct for storing ranges */
+typedef struct joyrange_tag {
+    JOYPOS	jpMin;
+    JOYPOS	jpMax;
+    JOYPOS	jpCenter;
+} JOYRANGE,*LPJOYRANGE;
+
+typedef struct joyreguservalues_tag {
+    DWORD	dwTimeOut;	/* value at which to timeout joystick polling */
+    JOYRANGE	jrvRanges;	/* range of values app wants returned for axes */
+    JOYPOS	jpDeadZone;	/* area around center to be considered
+    				   as "dead". specified as a percentage
+				   (0-100). Only X & Y handled by system driver */
+} JOYREGUSERVALUES, *LPJOYREGUSERVALUES;
+
+typedef struct joyreghwsettings_tag {
+    DWORD	dwFlags;
+    DWORD	dwNumButtons;		/* number of buttons */
+} JOYREGHWSETTINGS, *LPJOYHWSETTINGS;
+
+/* range of values returned by the hardware (filled in by calibration) */
+typedef struct joyreghwvalues_tag {
+    JOYRANGE	jrvHardware;		/* values returned by hardware */
+    DWORD	dwPOVValues[JOY_POV_NUMDIRS];/* POV values returned by hardware */
+    DWORD	dwCalFlags;		/* what has been calibrated */
+} JOYREGHWVALUES, *LPJOYREGHWVALUES;
+
+/* hardware configuration */
+typedef struct joyreghwconfig_tag {
+    JOYREGHWSETTINGS	hws;		/* hardware settings */
+    DWORD		dwUsageSettings;/* usage settings */
+    JOYREGHWVALUES	hwv;		/* values returned by hardware */
+    DWORD		dwType;		/* type of joystick */
+    DWORD		dwReserved;	/* reserved for OEM drivers */
+} JOYREGHWCONFIG, *LPJOYREGHWCONFIG;
+
+/* joystick calibration info structure */
+typedef struct joycalibrate_tag {
+    UINT    wXbase;
+    UINT    wXdelta;
+    UINT    wYbase;
+    UINT    wYdelta;
+    UINT    wZbase;
+    UINT    wZdelta;
+} JOYCALIBRATE;
+typedef JOYCALIBRATE *LPJOYCALIBRATE;
+
+/* prototype for joystick message function */
+typedef UINT (CALLBACK * JOYDEVMSGPROC)(DWORD dwID, UINT uMessage, LPARAM lParam1, LPARAM lParam2);
+typedef JOYDEVMSGPROC *LPJOYDEVMSGPROC;
+
+/* messages sent to joystick driver's DriverProc() function */
+#define JDD_GETNUMDEVS          (DRV_RESERVED + 0x0001)
+#define JDD_GETDEVCAPS          (DRV_RESERVED + 0x0002)
+#define JDD_GETPOS              (DRV_RESERVED + 0x0101)
+#define JDD_SETCALIBRATION      (DRV_RESERVED + 0x0102)
+#define JDD_CONFIGCHANGED       (DRV_RESERVED + 0x0103)
+#define JDD_GETPOSEX            (DRV_RESERVED + 0x0104)
+
+#define MCI_MAX_DEVICE_TYPE_LENGTH 80
+
+#define MCI_FALSE                       (MCI_STRING_OFFSET + 19)
+#define MCI_TRUE                        (MCI_STRING_OFFSET + 20)
+
+#define MCI_FORMAT_RETURN_BASE          MCI_FORMAT_MILLISECONDS_S
+#define MCI_FORMAT_MILLISECONDS_S       (MCI_STRING_OFFSET + 21)
+#define MCI_FORMAT_HMS_S                (MCI_STRING_OFFSET + 22)
+#define MCI_FORMAT_MSF_S                (MCI_STRING_OFFSET + 23)
+#define MCI_FORMAT_FRAMES_S             (MCI_STRING_OFFSET + 24)
+#define MCI_FORMAT_SMPTE_24_S           (MCI_STRING_OFFSET + 25)
+#define MCI_FORMAT_SMPTE_25_S           (MCI_STRING_OFFSET + 26)
+#define MCI_FORMAT_SMPTE_30_S           (MCI_STRING_OFFSET + 27)
+#define MCI_FORMAT_SMPTE_30DROP_S       (MCI_STRING_OFFSET + 28)
+#define MCI_FORMAT_BYTES_S              (MCI_STRING_OFFSET + 29)
+#define MCI_FORMAT_SAMPLES_S            (MCI_STRING_OFFSET + 30)
+#define MCI_FORMAT_TMSF_S               (MCI_STRING_OFFSET + 31)
+
+#define MCI_VD_FORMAT_TRACK_S           (MCI_VD_OFFSET + 5)
+
+#define WAVE_FORMAT_PCM_S               (MCI_WAVE_OFFSET + 0)
+#define WAVE_MAPPER_S                   (MCI_WAVE_OFFSET + 1)
+
+#define MCI_SEQ_MAPPER_S                (MCI_SEQ_OFFSET + 5)
+#define MCI_SEQ_FILE_S                  (MCI_SEQ_OFFSET + 6)
+#define MCI_SEQ_MIDI_S                  (MCI_SEQ_OFFSET + 7)
+#define MCI_SEQ_SMPTE_S                 (MCI_SEQ_OFFSET + 8)
+#define MCI_SEQ_FORMAT_SONGPTR_S        (MCI_SEQ_OFFSET + 9)
+#define MCI_SEQ_NONE_S                  (MCI_SEQ_OFFSET + 10)
+#define MIDIMAPPER_S                    (MCI_SEQ_OFFSET + 11)
+
+#define MCI_RESOURCE_RETURNED       0x00010000  /* resource ID */
+#define MCI_COLONIZED3_RETURN       0x00020000  /* colonized ID, 3 bytes data */
+#define MCI_COLONIZED4_RETURN       0x00040000  /* colonized ID, 4 bytes data */
+#define MCI_INTEGER_RETURNED        0x00080000  /* integer conversion needed */
+#define MCI_RESOURCE_DRIVER         0x00100000  /* driver owns returned resource */
+
+#define MCI_NO_COMMAND_TABLE    0xFFFF
+
+#define MCI_COMMAND_HEAD        0
+#define MCI_STRING              1
+#define MCI_INTEGER             2
+#define MCI_END_COMMAND         3
+#define MCI_RETURN              4
+#define MCI_FLAG                5
+#define MCI_END_COMMAND_LIST    6
+#define MCI_RECT                7
+#define MCI_CONSTANT            8
+#define MCI_END_CONSTANT        9
+
+#define MAKEMCIRESOURCE(wRet, wRes) MAKELRESULT((wRet), (wRes))
+
+typedef struct {
+	DWORD   		dwCallback;
+	DWORD   		dwInstance;
+	HMIDIOUT		hMidi;
+	DWORD   		dwFlags;
+} PORTALLOC, *LPPORTALLOC;
+
+typedef struct {
+	HWAVE			hWave;
+	LPWAVEFORMATEX		lpFormat;
+	DWORD			dwCallback;
+	DWORD			dwInstance;
+	UINT			uMappedDeviceID;
+        DWORD			dnDevNode;
+} WAVEOPENDESC, *LPWAVEOPENDESC;
+
+typedef struct {
+        DWORD  			dwStreamID;
+        WORD   			wDeviceID;
+} MIDIOPENSTRMID;
+
+typedef struct {
+	HMIDI			hMidi;
+	DWORD			dwCallback;
+	DWORD			dwInstance;
+        DWORD          		dnDevNode;
+        DWORD          		cIds;
+        MIDIOPENSTRMID 		rgIds;
+} MIDIOPENDESC, *LPMIDIOPENDESC;
+
+typedef struct tMIXEROPENDESC
+{
+	HMIXEROBJ		hmx;
+        LPVOID			pReserved0;
+	DWORD_PTR		dwCallback;
+	DWORD_PTR		dwInstance;
+} MIXEROPENDESC, *LPMIXEROPENDESC;
+
+typedef struct {
+	UINT			wDeviceID;		/* device ID */
+	LPSTR			lpstrParams;		/* parameter string for entry in SYSTEM.INI */
+	UINT			wCustomCommandTable;	/* custom command table (0xFFFF if none) * filled in by the driver */
+	UINT			wType;			/* driver type (filled in by the driver) */
+} MCI_OPEN_DRIVER_PARMSA, *LPMCI_OPEN_DRIVER_PARMSA;
+
+typedef struct {
+	UINT			wDeviceID;		/* device ID */
+	LPWSTR			lpstrParams;		/* parameter string for entry in SYSTEM.INI */
+	UINT			wCustomCommandTable;	/* custom command table (0xFFFF if none) * filled in by the driver */
+	UINT			wType;			/* driver type (filled in by the driver) */
+} MCI_OPEN_DRIVER_PARMSW, *LPMCI_OPEN_DRIVER_PARMSW;
+DECL_WINELIB_TYPE_AW(MCI_OPEN_DRIVER_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_OPEN_DRIVER_PARMS)
+
+DWORD 			WINAPI	mciGetDriverData(UINT uDeviceID);
+BOOL			WINAPI	mciSetDriverData(UINT uDeviceID, DWORD dwData);
+UINT			WINAPI	mciDriverYield(UINT uDeviceID);
+BOOL			WINAPI	mciDriverNotify(HWND hwndCallback, UINT uDeviceID,
+						UINT uStatus);
+UINT			WINAPI	mciLoadCommandResource(HINSTANCE hInstance,
+					       LPCWSTR lpResName, UINT uType);
+BOOL			WINAPI	mciFreeCommandResource(UINT uTable);
+
+#define DCB_NULL		0x0000
+#define DCB_WINDOW		0x0001			/* dwCallback is a HWND */
+#define DCB_TASK		0x0002			/* dwCallback is a HTASK */
+#define DCB_FUNCTION		0x0003			/* dwCallback is a FARPROC */
+#define DCB_EVENT		0x0005			/* dwCallback is an EVENT Handler */
+#define DCB_TYPEMASK		0x0007
+#define DCB_NOSWITCH		0x0008			/* don't switch stacks for callback */
+
+BOOL WINAPI DriverCallback(DWORD_PTR dwCallBack, DWORD uFlags, HDRVR hDev,
+                           DWORD wMsg, DWORD_PTR dwUser, DWORD_PTR dwParam1, DWORD_PTR dwParam2);
+
+typedef VOID (*LPTASKCALLBACK)(DWORD dwInst);
+
+#define TASKERR_NOTASKSUPPORT 1
+#define TASKERR_OUTOFMEMORY   2
+UINT     WINAPI mmTaskCreate(LPTASKCALLBACK, HANDLE*, DWORD_PTR);
+VOID     WINAPI mmTaskBlock(DWORD);
+BOOL     WINAPI mmTaskSignal(DWORD);
+VOID     WINAPI mmTaskYield(VOID);
+DWORD    WINAPI mmGetCurrentTask(VOID);
+
+#ifdef __WINESRC__
+#define  WAVE_DIRECTSOUND               0x0080
+#endif
+
+#include <poppack.h>
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MMDDK_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mmreg.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mmreg.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mmreg.h	(revision 16410)
@@ -0,0 +1,498 @@
+/*
+ * Declarations for MultiMedia-REGistration
+ *
+ * Copyright (C) 1999 Eric Pouech
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_MMREG_H
+#define __WINE_MMREG_H
+
+/***********************************************************************
+ * Defines/Enums
+ */
+
+#ifndef _ACM_WAVEFILTER
+#define _ACM_WAVEFILTER
+
+#define WAVE_FILTER_UNKNOWN     0x0000
+#define WAVE_FILTER_DEVELOPMENT 0xFFFF
+
+typedef struct _WAVEFILTER {
+  DWORD   cbStruct;
+  DWORD   dwFilterTag;
+  DWORD   fdwFilter;
+  DWORD   dwReserved[5];
+} WAVEFILTER, *PWAVEFILTER, *NPWAVEFILTER, *LPWAVEFILTER;
+#endif /* _ACM_WAVEFILTER */
+
+#ifndef WAVE_FILTER_VOLUME
+#define WAVE_FILTER_VOLUME      0x0001
+
+typedef struct _WAVEFILTER_VOLUME {
+   WAVEFILTER      wfltr;
+   DWORD           dwVolume;
+} VOLUMEWAVEFILTER, *PVOLUMEWAVEFILTER, *NPVOLUMEWAVEFILTER, *LPVOLUMEWAVEFILTER;
+#endif  /* WAVE_FILTER_VOLUME */
+
+#ifndef WAVE_FILTER_ECHO
+#define WAVE_FILTER_ECHO        0x0002
+
+typedef struct WAVEFILTER_ECHO {
+   WAVEFILTER      wfltr;
+   DWORD           dwVolume;
+   DWORD           dwDelay;
+} ECHOWAVEFILTER, *PECHOWAVEFILTER, *NPECHOWAVEFILTER, *LPECHOWAVEFILTER;
+#endif  /* WAVEFILTER_ECHO */
+
+#ifndef _WAVEFORMATEX_
+#define _WAVEFORMATEX_
+typedef struct _WAVEFORMATEX {
+  WORD   wFormatTag;
+  WORD   nChannels;
+  DWORD  nSamplesPerSec;
+  DWORD  nAvgBytesPerSec;
+  WORD   nBlockAlign;
+  WORD   wBitsPerSample;
+  WORD   cbSize;
+} WAVEFORMATEX, *PWAVEFORMATEX, *NPWAVEFORMATEX, *LPWAVEFORMATEX;
+#endif /* _WAVEFORMATEX_ */
+
+/* WAVE form wFormatTag IDs */
+#define  WAVE_FORMAT_UNKNOWN			0x0000	/*  Microsoft Corporation  */
+#define  WAVE_FORMAT_ADPCM			0x0002	/*  Microsoft Corporation  */
+#define  WAVE_FORMAT_IBM_CVSD			0x0005	/*  IBM Corporation  */
+#define  WAVE_FORMAT_ALAW			0x0006	/*  Microsoft Corporation  */
+#define  WAVE_FORMAT_MULAW			0x0007	/*  Microsoft Corporation  */
+#define  WAVE_FORMAT_OKI_ADPCM			0x0010	/*  OKI  */
+#define  WAVE_FORMAT_DVI_ADPCM			0x0011	/*  Intel Corporation  */
+#define  WAVE_FORMAT_IMA_ADPCM			(WAVE_FORMAT_DVI_ADPCM)	/*  Intel Corporation  */
+#define  WAVE_FORMAT_MEDIASPACE_ADPCM		0x0012	/*  Videologic  */
+#define  WAVE_FORMAT_SIERRA_ADPCM		0x0013	/*  Sierra Semiconductor Corp  */
+#define  WAVE_FORMAT_G723_ADPCM			0x0014	/*  Antex Electronics Corporation  */
+#define  WAVE_FORMAT_DIGISTD			0x0015	/*  DSP Solutions, Inc.  */
+#define  WAVE_FORMAT_DIGIFIX			0x0016	/*  DSP Solutions, Inc.  */
+#define  WAVE_FORMAT_DIALOGIC_OKI_ADPCM		0x0017	/*  Dialogic Corporation  */
+#define  WAVE_FORMAT_YAMAHA_ADPCM		0x0020	/*  Yamaha Corporation of America  */
+#define  WAVE_FORMAT_SONARC			0x0021	/*  Speech Compression  */
+#define  WAVE_FORMAT_DSPGROUP_TRUESPEECH	0x0022	/*  DSP Group, Inc  */
+#define  WAVE_FORMAT_ECHOSC1			0x0023	/*  Echo Speech Corporation  */
+#define  WAVE_FORMAT_AUDIOFILE_AF36		0x0024	/*    */
+#define  WAVE_FORMAT_APTX			0x0025	/*  Audio Processing Technology  */
+#define  WAVE_FORMAT_AUDIOFILE_AF10		0x0026	/*    */
+#define  WAVE_FORMAT_DOLBY_AC2			0x0030	/*  Dolby Laboratories  */
+#define  WAVE_FORMAT_GSM610			0x0031	/*  Microsoft Corporation  */
+#define  WAVE_FORMAT_ANTEX_ADPCME		0x0033	/*  Antex Electronics Corporation  */
+#define  WAVE_FORMAT_CONTROL_RES_VQLPC		0x0034	/*  Control Resources Limited  */
+#define  WAVE_FORMAT_DIGIREAL			0x0035	/*  DSP Solutions, Inc.  */
+#define  WAVE_FORMAT_DIGIADPCM			0x0036	/*  DSP Solutions, Inc.  */
+#define  WAVE_FORMAT_CONTROL_RES_CR10		0x0037	/*  Control Resources Limited  */
+#define  WAVE_FORMAT_NMS_VBXADPCM		0x0038	/*  Natural MicroSystems  */
+#define  WAVE_FORMAT_G721_ADPCM			0x0040	/*  Antex Electronics Corporation  */
+#define  WAVE_FORMAT_MPEG			0x0050	/*  Microsoft Corporation  */
+#define  WAVE_FORMAT_MPEGLAYER3			0x0055
+#define  WAVE_FORMAT_CREATIVE_ADPCM		0x0200	/*  Creative Labs, Inc  */
+#define  WAVE_FORMAT_CREATIVE_FASTSPEECH8	0x0202	/*  Creative Labs, Inc  */
+#define  WAVE_FORMAT_CREATIVE_FASTSPEECH10	0x0203	/*  Creative Labs, Inc  */
+#define  WAVE_FORMAT_FM_TOWNS_SND		0x0300	/*  Fujitsu Corp.  */
+#define  WAVE_FORMAT_OLIGSM			0x1000	/*  Ing C. Olivetti & C., S.p.A.  */
+#define  WAVE_FORMAT_OLIADPCM			0x1001	/*  Ing C. Olivetti & C., S.p.A.  */
+#define  WAVE_FORMAT_OLICELP			0x1002	/*  Ing C. Olivetti & C., S.p.A.  */
+#define  WAVE_FORMAT_OLISBC			0x1003	/*  Ing C. Olivetti & C., S.p.A.  */
+#define  WAVE_FORMAT_OLIOPR			0x1004	/*  Ing C. Olivetti & C., S.p.A.  */
+
+#if !defined(WAVE_FORMAT_EXTENSIBLE)
+#define  WAVE_FORMAT_EXTENSIBLE			0xFFFE  /* Microsoft */
+#endif
+
+#define WAVE_FORMAT_DEVELOPMENT         	(0xFFFF)
+
+typedef struct adpcmcoef_tag {
+	short   iCoef1;
+	short   iCoef2;
+} ADPCMCOEFSET;
+typedef ADPCMCOEFSET *PADPCMCOEFSET,
+	*NPADPCMCOEFSET, *LPADPCMCOEFSET;
+
+typedef struct adpcmwaveformat_tag {
+	WAVEFORMATEX    wfx;
+	WORD            wSamplesPerBlock;
+	WORD            wNumCoef;
+	/* FIXME: this should be aCoef[0] */
+	ADPCMCOEFSET    aCoef[1];
+} ADPCMWAVEFORMAT;
+typedef ADPCMWAVEFORMAT *PADPCMWAVEFORMAT,
+	*NPADPCMWAVEFORMAT, *LPADPCMWAVEFORMAT;
+
+typedef struct dvi_adpcmwaveformat_tag {
+	WAVEFORMATEX    wfx;
+	WORD            wSamplesPerBlock;
+} DVIADPCMWAVEFORMAT;
+typedef DVIADPCMWAVEFORMAT *PDVIADPCMWAVEFORMAT,
+	*NPDVIADPCMWAVEFORMAT, *LPDVIADPCMWAVEFORMAT;
+
+typedef struct ima_adpcmwaveformat_tag {
+	WAVEFORMATEX    wfx;
+	WORD            wSamplesPerBlock;
+} IMAADPCMWAVEFORMAT;
+typedef IMAADPCMWAVEFORMAT *PIMAADPCMWAVEFORMAT, *NPIMAADPCMWAVEFORMAT,
+	*LPIMAADPCMWAVEFORMAT;
+
+typedef struct mediaspace_adpcmwaveformat_tag {
+	WAVEFORMATEX    wfx;
+	WORD            wRevision;
+} MEDIASPACEADPCMWAVEFORMAT;
+typedef MEDIASPACEADPCMWAVEFORMAT *PMEDIASPACEADPCMWAVEFORMAT,
+	*NPMEDIASPACEADPCMWAVEFORMAT, *LPMEDIASPACEADPCMWAVEFORMAT;
+
+typedef struct sierra_adpcmwaveformat_tag {
+	WAVEFORMATEX    wfx;
+	WORD            wRevision;
+} SIERRAADPCMWAVEFORMAT;
+typedef SIERRAADPCMWAVEFORMAT *PSIERRAADPCMWAVEFORMAT,
+	*NPSIERRAADPCMWAVEFORMAT, *LPSIERRAADPCMWAVEFORMAT;
+
+typedef struct g723_adpcmwaveformat_tag {
+	WAVEFORMATEX    wfx;
+	WORD            cbExtraSize;
+	WORD            nAuxBlockSize;
+} G723_ADPCMWAVEFORMAT;
+typedef G723_ADPCMWAVEFORMAT *PG723_ADPCMWAVEFORMAT,
+	*NPG723_ADPCMWAVEFORMAT, *LPG723_ADPCMWAVEFORMAT;
+
+typedef struct digistdwaveformat_tag {
+	WAVEFORMATEX    wfx;
+} DIGISTDWAVEFORMAT;
+typedef DIGISTDWAVEFORMAT *PDIGISTDWAVEFORMAT,
+	*NPDIGISTDWAVEFORMAT, *LPDIGISTDWAVEFORMAT;
+
+typedef struct digifixwaveformat_tag {
+	WAVEFORMATEX    wfx;
+} DIGIFIXWAVEFORMAT;
+typedef DIGIFIXWAVEFORMAT *PDIGIFIXWAVEFORMAT,
+	*NPDIGIFIXWAVEFORMAT, *LPDIGIFIXWAVEFORMAT;
+
+typedef struct creative_fastspeechformat_tag {
+	WAVEFORMATEX    ewf;
+} DIALOGICOKIADPCMWAVEFORMAT;
+typedef DIALOGICOKIADPCMWAVEFORMAT *PDIALOGICOKIADPCMWAVEFORMAT,
+	*NPDIALOGICOKIADPCMWAVEFORMAT, *LPDIALOGICOKIADPCMWAVEFORMAT;
+
+typedef struct yamaha_adpmcwaveformat_tag {
+	WAVEFORMATEX    wfx;
+} YAMAHA_ADPCMWAVEFORMAT;
+typedef YAMAHA_ADPCMWAVEFORMAT *PYAMAHA_ADPCMWAVEFORMAT,
+	*NPYAMAHA_ADPCMWAVEFORMAT, *LPYAMAHA_ADPCMWAVEFORMAT;
+
+typedef struct sonarcwaveformat_tag {
+	WAVEFORMATEX    wfx;
+	WORD            wCompType;
+} SONARCWAVEFORMAT;
+typedef SONARCWAVEFORMAT *PSONARCWAVEFORMAT,
+	*NPSONARCWAVEFORMAT,*LPSONARCWAVEFORMAT;
+
+typedef struct truespeechwaveformat_tag {
+	WAVEFORMATEX    wfx;
+	WORD            wRevision;
+	WORD            nSamplesPerBlock;
+	BYTE            abReserved[28];
+} TRUESPEECHWAVEFORMAT;
+typedef TRUESPEECHWAVEFORMAT *PTRUESPEECHWAVEFORMAT,
+	*NPTRUESPEECHWAVEFORMAT, *LPTRUESPEECHWAVEFORMAT;
+
+typedef struct echosc1waveformat_tag {
+	WAVEFORMATEX    wfx;
+} ECHOSC1WAVEFORMAT;
+typedef ECHOSC1WAVEFORMAT *PECHOSC1WAVEFORMAT,
+	*NPECHOSC1WAVEFORMAT, *LPECHOSC1WAVEFORMAT;
+
+typedef struct audiofile_af36waveformat_tag {
+	WAVEFORMATEX    wfx;
+} AUDIOFILE_AF36WAVEFORMAT;
+typedef AUDIOFILE_AF36WAVEFORMAT *PAUDIOFILE_AF36WAVEFORMAT,
+	*NPAUDIOFILE_AF36WAVEFORMAT, *LPAUDIOFILE_AF36WAVEFORMAT;
+
+typedef struct aptxwaveformat_tag {
+	WAVEFORMATEX    wfx;
+} APTXWAVEFORMAT;
+typedef APTXWAVEFORMAT *PAPTXWAVEFORMAT,
+	*NPAPTXWAVEFORMAT, *LPAPTXWAVEFORMAT;
+
+typedef struct audiofile_af10waveformat_tag {
+	WAVEFORMATEX    wfx;
+} AUDIOFILE_AF10WAVEFORMAT;
+typedef AUDIOFILE_AF10WAVEFORMAT *PAUDIOFILE_AF10WAVEFORMAT,
+	*NPAUDIOFILE_AF10WAVEFORMAT,  *LPAUDIOFILE_AF10WAVEFORMAT;
+
+typedef struct dolbyac2waveformat_tag {
+	WAVEFORMATEX    wfx;
+	WORD            nAuxBitsCode;
+} DOLBYAC2WAVEFORMAT;
+
+typedef struct gsm610waveformat_tag {
+	WAVEFORMATEX    wfx;
+	WORD            wSamplesPerBlock;
+} GSM610WAVEFORMAT;
+typedef GSM610WAVEFORMAT *PGSM610WAVEFORMAT,
+	*NPGSM610WAVEFORMAT, *LPGSM610WAVEFORMAT;
+
+typedef struct adpcmewaveformat_tag {
+	WAVEFORMATEX    wfx;
+	WORD            wSamplesPerBlock;
+} ADPCMEWAVEFORMAT;
+typedef ADPCMEWAVEFORMAT *PADPCMEWAVEFORMAT,
+	*NPADPCMEWAVEFORMAT, *LPADPCMEWAVEFORMAT;
+
+typedef struct contres_vqlpcwaveformat_tag {
+	WAVEFORMATEX    wfx;
+	WORD            wSamplesPerBlock;
+} CONTRESVQLPCWAVEFORMAT;
+typedef CONTRESVQLPCWAVEFORMAT *PCONTRESVQLPCWAVEFORMAT,
+	*NPCONTRESVQLPCWAVEFORMAT, *LPCONTRESVQLPCWAVEFORMAT;
+
+typedef struct digirealwaveformat_tag {
+	WAVEFORMATEX    wfx;
+	WORD            wSamplesPerBlock;
+} DIGIREALWAVEFORMAT;
+typedef DIGIREALWAVEFORMAT *PDIGIREALWAVEFORMAT,
+	*NPDIGIREALWAVEFORMAT, *LPDIGIREALWAVEFORMAT;
+
+typedef struct digiadpcmmwaveformat_tag {
+	WAVEFORMATEX    wfx;
+	WORD            wSamplesPerBlock;
+} DIGIADPCMWAVEFORMAT;
+typedef DIGIADPCMWAVEFORMAT *PDIGIADPCMWAVEFORMAT,
+	*NPDIGIADPCMWAVEFORMAT, *LPDIGIADPCMWAVEFORMAT;
+
+typedef struct contres_cr10waveformat_tag {
+	WAVEFORMATEX    wfx;
+	WORD            wSamplesPerBlock;
+} CONTRESCR10WAVEFORMAT;
+typedef CONTRESCR10WAVEFORMAT *PCONTRESCR10WAVEFORMAT,
+	*NPCONTRESCR10WAVEFORMAT, *LPCONTRESCR10WAVEFORMAT;
+
+typedef struct nms_vbxadpcmmwaveformat_tag {
+	WAVEFORMATEX    wfx;
+	WORD            wSamplesPerBlock;
+} NMS_VBXADPCMWAVEFORMAT;
+typedef NMS_VBXADPCMWAVEFORMAT *PNMS_VBXADPCMWAVEFORMAT,
+	*NPNMS_VBXADPCMWAVEFORMAT, *LPNMS_VBXADPCMWAVEFORMAT;
+
+typedef struct g721_adpcmwaveformat_tag {
+	WAVEFORMATEX    wfx;
+	WORD            nAuxBlockSize;
+} G721_ADPCMWAVEFORMAT;
+typedef G721_ADPCMWAVEFORMAT *PG721_ADPCMWAVEFORMAT,
+	*NG721_ADPCMWAVEFORMAT, *LPG721_ADPCMWAVEFORMAT;
+
+typedef struct creative_adpcmwaveformat_tag {
+	WAVEFORMATEX    wfx;
+	WORD            wRevision;
+} CREATIVEADPCMWAVEFORMAT;
+typedef CREATIVEADPCMWAVEFORMAT *PCREATIVEADPCMWAVEFORMAT,
+	*NPCREATIVEADPCMWAVEFORMAT, *LPCREATIVEADPCMWAVEFORMAT;
+
+typedef struct creative_fastspeech8format_tag {
+	WAVEFORMATEX    wfx;
+	WORD wRevision;
+} CREATIVEFASTSPEECH8WAVEFORMAT;
+typedef CREATIVEFASTSPEECH8WAVEFORMAT *PCREATIVEFASTSPEECH8WAVEFORMAT,
+	*NPCREATIVEFASTSPEECH8WAVEFORMAT, *LPCREATIVEFASTSPEECH8WAVEFORMAT;
+
+typedef struct creative_fastspeech10format_tag {
+	WAVEFORMATEX    wfx;
+	WORD wRevision;
+} CREATIVEFASTSPEECH10WAVEFORMAT;
+typedef CREATIVEFASTSPEECH10WAVEFORMAT *PCREATIVEFASTSPEECH10WAVEFORMAT,
+	*NPCREATIVEFASTSPEECH10WAVEFORMAT, *LPCREATIVEFASTSPEECH10WAVEFORMAT;
+
+typedef struct fmtowns_snd_waveformat_tag {
+	WAVEFORMATEX    wfx;
+	WORD            wRevision;
+} FMTOWNS_SND_WAVEFORMAT;
+typedef FMTOWNS_SND_WAVEFORMAT *PFMTOWNS_SND_WAVEFORMAT,
+	*NPFMTOWNS_SND_WAVEFORMAT, *LPFMTOWNS_SND_WAVEFORMAT;
+
+typedef struct oligsmwaveformat_tag {
+	WAVEFORMATEX    wfx;
+} OLIGSMWAVEFORMAT;
+typedef OLIGSMWAVEFORMAT *POLIGSMWAVEFORMAT,
+	*NPOLIGSMWAVEFORMAT, *LPOLIGSMWAVEFORMAT;
+
+typedef struct oliadpcmwaveformat_tag {
+	WAVEFORMATEX    wfx;
+} OLIADPCMWAVEFORMAT;
+typedef OLIADPCMWAVEFORMAT *POLIADPCMWAVEFORMAT,
+	*NPOLIADPCMWAVEFORMAT, *LPOLIADPCMWAVEFORMAT;
+
+typedef struct olicelpwaveformat_tag {
+	WAVEFORMATEX    wfx;
+} OLICELPWAVEFORMAT;
+typedef OLICELPWAVEFORMAT *POLICELPWAVEFORMAT,
+	*NPOLICELPWAVEFORMAT, *LPOLICELPWAVEFORMAT;
+
+typedef struct olisbcwaveformat_tag {
+	WAVEFORMATEX    wfx;
+} OLISBCWAVEFORMAT;
+typedef OLISBCWAVEFORMAT *POLISBCWAVEFORMAT,
+	*NPOLISBCWAVEFORMAT, *LPOLISBCWAVEFORMAT;
+
+typedef struct olioprwaveformat_tag {
+	WAVEFORMATEX    wfx;
+} OLIOPRWAVEFORMAT;
+typedef OLIOPRWAVEFORMAT *POLIOPRWAVEFORMAT,
+	*NPOLIOPRWAVEFORMAT, *LPOLIOPRWAVEFORMAT;
+
+typedef struct csimaadpcmwaveformat_tag {
+	WAVEFORMATEX    wfx;
+} CSIMAADPCMWAVEFORMAT;
+typedef CSIMAADPCMWAVEFORMAT *PCSIMAADPCMWAVEFORMAT,
+	*NPCSIMAADPCMWAVEFORMAT, *LPCSIMAADPCMWAVEFORMAT;
+
+typedef struct mpeg1waveformat_tag {
+	WAVEFORMATEX	wfx;
+	WORD		fwHeadLayer;
+	DWORD		dwHeadBitrate;
+	WORD		fwHeadMode;
+	WORD		fwHeadModeExt;
+	WORD		wHeadEmphasis;
+	WORD		fwHeadFlags;
+	DWORD		dwPTSLow;
+	DWORD		dwPTSHigh;
+} MPEG1WAVEFORMAT,* PMPEG1WAVEFORMAT;
+
+#define	ACM_MPEG_LAYER1		0x0001
+#define	ACM_MPEG_LAYER2		0x0002
+#define	ACM_MPEG_LAYER3		0x0004
+
+#define	ACM_MPEG_STEREO		0x0001
+#define	ACM_MPEG_JOINTSTEREO	0x0002
+#define	ACM_MPEG_DUALCHANNEL	0x0004
+#define	ACM_MPEG_SINGLECHANNEL	0x0008
+#define	ACM_MPEG_PRIVATEBIT	0x0001
+#define	ACM_MPEG_COPYRIGHT	0x0002
+#define	ACM_MPEG_ORIGINALHOME	0x0004
+#define	ACM_MPEG_PROTECTIONBIT	0x0008
+#define	ACM_MPEG_ID_MPEG1	0x0010
+
+typedef struct mpeglayer3waveformat_tag {
+	WAVEFORMATEX	wfx;
+	WORD		wID;
+	DWORD		fdwFlags;
+	WORD		nBlockSize;
+	WORD		nFramesPerBlock;
+	WORD		nCodecDelay;
+} MPEGLAYER3WAVEFORMAT;
+
+#define MPEGLAYER3_WFX_EXTRA_BYTES   12
+
+#define MPEGLAYER3_ID_UNKNOWN           0
+#define MPEGLAYER3_ID_MPEG		1
+#define MPEGLAYER3_ID_CONSTANTFRAMESIZE	2
+
+#define MPEGLAYER3_FLAG_PADDING_ISO	0x00000000
+#define MPEGLAYER3_FLAG_PADDING_ON	0x00000001
+#define MPEGLAYER3_FLAG_PADDING_OFF	0x00000002
+
+#ifdef GUID_DEFINED
+
+#ifndef _WAVEFORMATEXTENSIBLE_
+#define _WAVEFORMATEXTENSIBLE_
+typedef struct {
+    WAVEFORMATEX    Format;
+    union {
+        WORD        wValidBitsPerSample;
+        WORD        wSamplesPerBlock;
+        WORD        wReserved;
+    } Samples;
+    DWORD           dwChannelMask;
+    GUID            SubFormat;
+} WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE;
+#endif /* _WAVEFORMATEXTENSIBLE_ */
+
+#endif /* GUID_DEFINED */
+
+typedef WAVEFORMATEXTENSIBLE    WAVEFORMATPCMEX;
+typedef WAVEFORMATPCMEX*        PWAVEFORMATPCMEX;
+typedef WAVEFORMATPCMEX*        NPWAVEFORMATPCMEX;
+typedef WAVEFORMATPCMEX*        LPWAVEFORMATPCMEX;
+
+typedef WAVEFORMATEXTENSIBLE    WAVEFORMATIEEEFLOATEX;
+typedef WAVEFORMATIEEEFLOATEX*  PWAVEFORMATIEEEFLOATEX;
+typedef WAVEFORMATIEEEFLOATEX*  NPWAVEFORMATIEEEFLOATEX;
+typedef WAVEFORMATIEEEFLOATEX*  LPWAVEFORMATIEEEFLOATEX;
+
+#ifndef _SPEAKER_POSITIONS_
+#define _SPEAKER_POSITIONS_
+
+#define SPEAKER_FRONT_LEFT              0x00000001
+#define SPEAKER_FRONT_RIGHT             0x00000002
+#define SPEAKER_FRONT_CENTER            0x00000004
+#define SPEAKER_LOW_FREQUENCY           0x00000008
+#define SPEAKER_BACK_LEFT               0x00000010
+#define SPEAKER_BACK_RIGHT              0x00000020
+#define SPEAKER_FRONT_LEFT_OF_CENTER    0x00000040
+#define SPEAKER_FRONT_RIGHT_OF_CENTER   0x00000080
+#define SPEAKER_BACK_CENTER             0x00000100
+#define SPEAKER_SIDE_LEFT               0x00000200
+#define SPEAKER_SIDE_RIGHT              0x00000400
+#define SPEAKER_TOP_CENTER              0x00000800
+#define SPEAKER_TOP_FRONT_LEFT          0x00001000
+#define SPEAKER_TOP_FRONT_CENTER        0x00002000
+#define SPEAKER_TOP_FRONT_RIGHT         0x00004000
+#define SPEAKER_TOP_BACK_LEFT           0x00008000
+#define SPEAKER_TOP_BACK_CENTER         0x00010000
+#define SPEAKER_TOP_BACK_RIGHT          0x00020000
+#define SPEAKER_RESERVED                0x7FFC0000
+#define SPEAKER_ALL                     0x80000000
+
+#endif /* _SPEAKER_POSITIONS_ */
+
+
+/* DIB stuff */
+
+#ifndef BI_BITFIELDS
+#define BI_BITFIELDS     3
+#endif
+
+#ifndef QUERYDIBSUPPORT
+#define	QUERYDIBSUPPORT		3073
+#define	QDI_SETDIBITS		1
+#define	QDI_GETDIBITS		2
+#define	QDI_DIBTOSCREEN		4
+#define	QDI_STRETCHDIB		8
+#endif
+
+#ifndef NOBITMAP
+typedef struct tagEXBMINFOHEADER {
+    BITMAPINFOHEADER bmi;
+    DWORD biExtDataOffset;
+} EXBMINFOHEADER;
+#endif
+
+
+/* Video stuff */
+
+#ifndef NONEWIC
+
+#ifndef ICTYPE_VIDEO
+#define ICTYPE_VIDEO		mmioFOURCC('v', 'i', 'd', 'c')
+#define ICTYPE_AUDIO		mmioFOURCC('a', 'u', 'd', 'c')
+#endif
+
+#endif
+
+#endif /* __WINE_MMREG_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mmstream.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mmstream.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mmstream.idl	(revision 16410)
@@ -0,0 +1,184 @@
+/*
+ * Copyright 2004 Christian Costa
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "unknwn.idl";
+
+cpp_quote("#define MS_ERROR_CODE(x)                  MAKE_HRESULT(1, FACILITY_ITF, (x) + 0x400)")
+cpp_quote("#define MS_SUCCESS_CODE(x)                MAKE_HRESULT(0, FACILITY_ITF, x)")
+cpp_quote("#define MS_S_PENDING                      MS_SUCCESS_CODE(1)")
+cpp_quote("#define MS_S_NOUPDATE                     MS_SUCCESS_CODE(2)")
+cpp_quote("#define MS_S_ENDOFSTREAM                  MS_SUCCESS_CODE(3)")
+
+cpp_quote("#define MS_E_SAMPLEALLOC                  MS_ERROR_CODE(1)")
+cpp_quote("#define MS_E_PURPOSEID                    MS_ERROR_CODE(2)")
+cpp_quote("#define MS_E_NOSTREAM                     MS_ERROR_CODE(3)")
+cpp_quote("#define MS_E_NOSEEKING                    MS_ERROR_CODE(4)")
+cpp_quote("#define MS_E_INCOMPATIBLE                 MS_ERROR_CODE(5)")
+cpp_quote("#define MS_E_BUSY                         MS_ERROR_CODE(6)")
+cpp_quote("#define MS_E_NOTINIT                      MS_ERROR_CODE(7)")
+cpp_quote("#define MS_E_SOURCEALREADYDEFINED         MS_ERROR_CODE(8)")
+cpp_quote("#define MS_E_INVALIDSTREAMTYPE            MS_ERROR_CODE(9)")
+cpp_quote("#define MS_E_NOTRUNNING                   MS_ERROR_CODE(10)")
+
+cpp_quote("DEFINE_GUID(MSPID_PrimaryVideo,  0xa35ff56a, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);")
+cpp_quote("DEFINE_GUID(MSPID_PrimaryAudio,  0xa35ff56b, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);")
+
+cpp_quote("#if 0")
+typedef void* PAPCFUNC;
+cpp_quote("#endif")
+
+typedef LONGLONG STREAM_TIME;
+
+typedef GUID MSPID;
+typedef REFGUID REFMSPID;
+
+typedef enum {
+	STREAMTYPE_READ         = 0,
+	STREAMTYPE_WRITE        = 1,
+	STREAMTYPE_TRANSFORM    = 2
+} STREAM_TYPE;
+
+typedef enum {
+	STREAMSTATE_STOP        = 0,
+	STREAMSTATE_RUN         = 1
+} STREAM_STATE;
+
+
+typedef enum {
+	COMPSTAT_NOUPDATEOK                             = 0x00000001,
+	COMPSTAT_WAIT                                   = 0x00000002,
+	COMPSTAT_ABORT                                  = 0x00000004
+} COMPLETION_STATUS_FLAGS;
+
+enum {
+	MMSSF_HASCLOCK                                  = 0x00000001,
+	MMSSF_SUPPORTSEEK                               = 0x00000002,
+	MMSSF_ASYNCHRONOUS                              = 0x00000004
+};
+
+enum {
+	SSUPDATE_ASYNC                                  = 0x00000001,
+	SSUPDATE_CONTINUOUS                             = 0x00000002
+};
+
+interface IMultiMediaStream;
+interface IMediaStream;
+interface IStreamSample;
+
+
+[
+object,
+local,
+uuid(B502D1BC-9A57-11d0-8FDE-00C04FD9189D),
+pointer_default(unique)
+]
+interface IMultiMediaStream : IUnknown {
+
+	HRESULT GetInformation(
+		[out, optional] DWORD *pdwFlags,
+		[out, optional] STREAM_TYPE *pStreamType);
+
+	HRESULT GetMediaStream(
+		[in] REFMSPID idPurpose,
+		[out] IMediaStream **ppMediaStream);
+
+	HRESULT EnumMediaStreams(
+		[in] long Index,
+		[out] IMediaStream **ppMediaStream);
+
+	HRESULT GetState(
+		[out] STREAM_STATE *pCurrentState);
+
+	HRESULT SetState(
+		[in] STREAM_STATE NewState);
+
+	HRESULT GetTime(
+		[out] STREAM_TIME *pCurrentTime);
+
+	HRESULT GetDuration(
+		[out] STREAM_TIME *pDuration);
+
+	HRESULT Seek(
+		[in] STREAM_TIME SeekTime);
+
+	HRESULT GetEndOfStreamEventHandle(
+		[out] HANDLE *phEOS);
+}
+
+
+[
+object,
+uuid(B502D1BD-9A57-11d0-8FDE-00C04FD9189D),
+pointer_default(unique)
+]
+interface IMediaStream : IUnknown {
+	
+	HRESULT GetMultiMediaStream(
+		[out] IMultiMediaStream **ppMultiMediaStream);
+
+	HRESULT GetInformation(
+		[out, optional] MSPID *pPurposeId,
+		[out, optional] STREAM_TYPE *pType);
+
+	HRESULT SetSameFormat(
+		[in] IMediaStream *pStreamThatHasDesiredFormat,
+		[in] DWORD dwFlags);
+
+	HRESULT AllocateSample(
+		[in]  DWORD dwFlags,
+		[out] IStreamSample **ppSample);
+
+	HRESULT CreateSharedSample(
+		[in]  IStreamSample *pExistingSample,
+		[in]  DWORD dwFlags,
+		[out] IStreamSample **ppNewSample);
+
+	HRESULT SendEndOfStream(DWORD dwFlags);
+}
+
+
+[
+object,
+local,
+uuid(B502D1BE-9A57-11d0-8FDE-00C04FD9189D),
+pointer_default(unique)
+]
+interface IStreamSample : IUnknown {
+	
+	HRESULT GetMediaStream(
+		[in] IMediaStream **ppMediaStream);
+
+	HRESULT GetSampleTimes(
+		[out, optional] STREAM_TIME * pStartTime,
+		[out, optional] STREAM_TIME * pEndTime,
+		[out, optional] STREAM_TIME * pCurrentTime);
+
+	HRESULT SetSampleTimes(
+		[in, optional] const STREAM_TIME *pStartTime,
+		[in, optional] const STREAM_TIME *pEndTime);
+
+	HRESULT Update(
+		[in] DWORD dwFlags,
+		[in, optional] HANDLE hEvent,
+		[in, optional] PAPCFUNC pfnAPC,
+		[in, optional] DWORD dwAPCData);
+
+	HRESULT CompletionStatus(
+		[in] DWORD dwFlags,
+		[in, optional] DWORD dwMilliseconds);
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mmsystem.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mmsystem.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mmsystem.h	(revision 16410)
@@ -0,0 +1,2504 @@
+/*
+ * MMSYSTEM - Multimedia Wine Extension ... :-)
+ *
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_MMSYSTEM_H
+#define __WINE_MMSYSTEM_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef LPSTR		HPSTR;          /* a huge version of LPSTR */
+typedef LPCSTR		HPCSTR;         /* a huge version of LPCSTR */
+typedef UINT*           LPUINT;
+
+DECLARE_HANDLE(HDRVR);
+DECLARE_HANDLE(HWAVE);
+DECLARE_HANDLE(HWAVEIN);
+DECLARE_HANDLE(HWAVEOUT);
+DECLARE_HANDLE(HMIDI);
+DECLARE_HANDLE(HMIDIIN);
+DECLARE_HANDLE(HMIDIOUT);
+DECLARE_HANDLE(HMIDISTRM);
+DECLARE_HANDLE(HMIXER);
+DECLARE_HANDLE(HMIXEROBJ);
+DECLARE_HANDLE(HMMIO);
+
+typedef HMIDI *LPHMIDI;
+typedef HMIDIIN *LPHMIDIIN;
+typedef HMIDIOUT *LPHMIDIOUT;
+typedef HMIDISTRM *LPHMIDISTRM;
+typedef HMIXER *LPHMIXER;
+typedef HMIXEROBJ *LPHMIXEROBJ;
+typedef HWAVEIN *LPHWAVEIN;
+typedef HWAVEOUT *LPHWAVEOUT;
+
+#include <pshpack1.h>
+
+typedef LRESULT (CALLBACK *DRIVERPROC)(DWORD_PTR,HDRVR,UINT,LPARAM,LPARAM);
+
+#define MAXWAVEDRIVERS	10
+#define MAXMIDIDRIVERS	10
+#define MAXAUXDRIVERS	10
+#define MAXMCIDRIVERS	32
+#define MAXMIXERDRIVERS	10
+
+#define MAXPNAMELEN      32     /* max product name length (including NULL) */
+#define MAXERRORLENGTH   256    /* max error text length (including NULL) */
+#define MAX_JOYSTICKOEMVXDNAME	260
+
+#ifndef _MCIERROR_
+#define _MCIERROR_
+typedef DWORD   MCIERROR;
+#endif
+typedef UINT	MMVERSION;
+#ifndef _MCIDEVICEID_
+#define _MCIDEVICEID_
+typedef UINT	MCIDEVICEID;
+#endif
+typedef	UINT	MMRESULT;
+
+typedef struct mmtime_tag {
+    UINT    wType;
+    union {
+	DWORD ms;
+	DWORD sample;
+	DWORD cb;
+        DWORD ticks;
+	struct {
+	    BYTE hour;
+	    BYTE min;
+	    BYTE sec;
+	    BYTE frame;
+	    BYTE fps;
+	    BYTE dummy;
+	    BYTE pad[2];
+	} smpte;
+	struct {
+	    DWORD songptrpos;
+	} midi;
+    } u;
+} MMTIME, *PMMTIME, *LPMMTIME;
+
+#define TIME_MS         0x0001  /* time in milliseconds */
+#define TIME_SAMPLES    0x0002  /* number of wave samples */
+#define TIME_BYTES      0x0004  /* current byte offset */
+#define TIME_SMPTE      0x0008  /* SMPTE time */
+#define TIME_MIDI       0x0010  /* MIDI time */
+#define TIME_TICKS	0x0020  /* MIDI ticks */
+
+#define MM_JOY1MOVE         0x3A0           /* joystick */
+#define MM_JOY2MOVE         0x3A1
+#define MM_JOY1ZMOVE        0x3A2
+#define MM_JOY2ZMOVE        0x3A3
+#define MM_JOY1BUTTONDOWN   0x3B5
+#define MM_JOY2BUTTONDOWN   0x3B6
+#define MM_JOY1BUTTONUP     0x3B7
+#define MM_JOY2BUTTONUP     0x3B8
+
+#define MM_MCINOTIFY        0x3B9           /* MCI */
+
+#define MM_WOM_OPEN         0x3BB           /* waveform output */
+#define MM_WOM_CLOSE        0x3BC
+#define MM_WOM_DONE         0x3BD
+
+#define MM_WIM_OPEN         0x3BE           /* waveform input */
+#define MM_WIM_CLOSE        0x3BF
+#define MM_WIM_DATA         0x3C0
+
+#define MM_MIM_OPEN         0x3C1           /* MIDI input */
+#define MM_MIM_CLOSE        0x3C2
+#define MM_MIM_DATA         0x3C3
+#define MM_MIM_LONGDATA     0x3C4
+#define MM_MIM_ERROR        0x3C5
+#define MM_MIM_LONGERROR    0x3C6
+
+#define MM_MOM_OPEN         0x3C7           /* MIDI output */
+#define MM_MOM_CLOSE        0x3C8
+#define MM_MOM_DONE         0x3C9
+#define MM_MOM_POSITIONCB   0x3CA
+
+#define MM_MIM_MOREDATA     0x3CC
+
+#define MM_MIXM_LINE_CHANGE 0x3D0
+#define MM_MIXM_CONTROL_CHANGE 0x3D1
+
+#define MMSYSERR_BASE          0
+#define WAVERR_BASE            32
+#define MIDIERR_BASE           64
+#define TIMERR_BASE            96
+#define JOYERR_BASE            160
+#define MCIERR_BASE            256
+
+#define MCI_STRING_OFFSET      512
+#define MCI_VD_OFFSET          1024
+#define MCI_CD_OFFSET          1088
+#define MCI_WAVE_OFFSET        1152
+#define MCI_SEQ_OFFSET         1216
+
+#define MMSYSERR_NOERROR      0
+#define MMSYSERR_ERROR        (MMSYSERR_BASE + 1)
+#define MMSYSERR_BADDEVICEID  (MMSYSERR_BASE + 2)
+#define MMSYSERR_NOTENABLED   (MMSYSERR_BASE + 3)
+#define MMSYSERR_ALLOCATED    (MMSYSERR_BASE + 4)
+#define MMSYSERR_INVALHANDLE  (MMSYSERR_BASE + 5)
+#define MMSYSERR_NODRIVER     (MMSYSERR_BASE + 6)
+#define MMSYSERR_NOMEM        (MMSYSERR_BASE + 7)
+#define MMSYSERR_NOTSUPPORTED (MMSYSERR_BASE + 8)
+#define MMSYSERR_BADERRNUM    (MMSYSERR_BASE + 9)
+#define MMSYSERR_INVALFLAG    (MMSYSERR_BASE + 10)
+#define MMSYSERR_INVALPARAM   (MMSYSERR_BASE + 11)
+#define MMSYSERR_HANDLEBUSY   (MMSYSERR_BASE + 12)
+#define MMSYSERR_INVALIDALIAS (MMSYSERR_BASE + 13)
+#define MMSYSERR_BADDB        (MMSYSERR_BASE + 14)
+#define MMSYSERR_KEYNOTFOUND  (MMSYSERR_BASE + 15)
+#define MMSYSERR_READERROR    (MMSYSERR_BASE + 16)
+#define MMSYSERR_WRITEERROR   (MMSYSERR_BASE + 17)
+#define MMSYSERR_DELETEERROR  (MMSYSERR_BASE + 18)
+#define MMSYSERR_VALNOTFOUND  (MMSYSERR_BASE + 19)
+#define MMSYSERR_NODRIVERCB   (MMSYSERR_BASE + 20)
+#define MMSYSERR_MOREDATA     (MMSYSERR_BASE + 21)
+#define MMSYSERR_LASTERROR    (MMSYSERR_BASE + 21)
+
+#define CALLBACK_TYPEMASK   	0x00070000l    	/* callback type mask */
+#define CALLBACK_NULL       	0x00000000l    	/* no callback */
+#define CALLBACK_WINDOW     	0x00010000l    	/* dwCallback is a HWND */
+#define CALLBACK_TASK       	0x00020000l    	/* dwCallback is a HTASK */
+#define CALLBACK_THREAD		(CALLBACK_TASK)	/* dwCallback is a thread ID */
+#define CALLBACK_FUNCTION   	0x00030000l    	/* dwCallback is a FARPROC */
+#define CALLBACK_EVENT		0x00050000l	/* dwCallback is an EVENT Handler */
+
+#define DRV_LOAD                0x0001
+#define DRV_ENABLE              0x0002
+#define DRV_OPEN                0x0003
+#define DRV_CLOSE               0x0004
+#define DRV_DISABLE             0x0005
+#define DRV_FREE                0x0006
+#define DRV_CONFIGURE           0x0007
+#define DRV_QUERYCONFIGURE      0x0008
+#define DRV_INSTALL             0x0009
+#define DRV_REMOVE              0x000A
+#define DRV_EXITSESSION         0x000B
+#define DRV_EXITAPPLICATION     0x000C
+#define DRV_POWER               0x000F
+
+#define DRV_RESERVED            0x0800
+#define DRV_USER                0x4000
+
+#define DRVCNF_CANCEL           0x0000
+#define DRVCNF_OK               0x0001
+#define DRVCNF_RESTART 		0x0002
+
+#define DRVEA_NORMALEXIT  	0x0001
+#define DRVEA_ABNORMALEXIT 	0x0002
+
+#define DRV_SUCCESS		0x0001
+#define DRV_FAILURE		0x0000
+
+#define GND_FIRSTINSTANCEONLY 	0x00000001
+
+#define GND_FORWARD  		0x00000000
+#define GND_REVERSE    		0x00000002
+
+typedef struct tagDRVCONFIGINFO {
+    DWORD   			dwDCISize;
+    LPCWSTR  			lpszDCISectionName;
+    LPCWSTR  			lpszDCIAliasName;
+} DRVCONFIGINFO, *LPDRVCONFIGINFO;
+
+
+LRESULT WINAPI DefDriverProc(DWORD_PTR,HDRVR,UINT,LPARAM,LPARAM);
+/* this sounds odd, but it's the way it is. OpenDriverA even disappeared
+ * from latest SDK
+ */
+HDRVR 	WINAPI OpenDriverA(LPCSTR szDriverName, LPCSTR szSectionName,
+			   LPARAM lParam2);
+HDRVR 	WINAPI OpenDriver(LPCWSTR szDriverName, LPCWSTR szSectionName,
+                          LPARAM lParam2);
+LRESULT WINAPI CloseDriver(HDRVR hDriver, LPARAM lParam1, LPARAM lParam2);
+LRESULT WINAPI SendDriverMessage(HDRVR hDriver, UINT message,
+				 LPARAM lParam1, LPARAM lParam2);
+HMODULE WINAPI GetDriverModuleHandle(HDRVR hDriver);
+
+DWORD	WINAPI GetDriverFlags(HDRVR hDriver);
+
+typedef void (CALLBACK *LPDRVCALLBACK)(HDRVR,UINT,DWORD_PTR,DWORD_PTR,DWORD_PTR);
+
+#define MM_MICROSOFT            1       /* Microsoft Corp. */
+#define MM_CREATIVE             2       /* Creative labs   */
+
+#define MM_MIDI_MAPPER          1       /* MIDI Mapper */
+#define MM_WAVE_MAPPER          2       /* Wave Mapper */
+
+#define MM_SNDBLST_MIDIOUT      3       /* Sound Blaster MIDI output port */
+#define MM_SNDBLST_MIDIIN       4       /* Sound Blaster MIDI input port  */
+#define MM_SNDBLST_SYNTH        5       /* Sound Blaster internal synthesizer */
+#define MM_SNDBLST_WAVEOUT      6       /* Sound Blaster waveform output */
+#define MM_SNDBLST_WAVEIN       7       /* Sound Blaster waveform input */
+
+#define MM_ADLIB                9       /* Ad Lib-compatible synthesizer */
+
+#define MM_MPU401_MIDIOUT       10      /* MPU401-compatible MIDI output port */
+#define MM_MPU401_MIDIIN        11      /* MPU401-compatible MIDI input port */
+
+#define MM_PC_JOYSTICK          12      /* Joystick adapter */
+
+#define MM_CREATIVE_SBP16_WAVEOUT   104 
+
+UINT 		WINAPI 	mmsystemGetVersion(void);
+BOOL 		WINAPI	sndPlaySoundA(LPCSTR lpszSound, UINT fuSound);
+BOOL 		WINAPI	sndPlaySoundW(LPCWSTR lpszSound, UINT fuSound);
+#define 		sndPlaySound WINELIB_NAME_AW(sndPlaySound)
+BOOL 		WINAPI 	PlaySoundA(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound);
+BOOL 		WINAPI 	PlaySoundW(LPCWSTR pszSound, HMODULE hmod, DWORD fdwSound);
+#define 		PlaySound WINELIB_NAME_AW(PlaySound)
+
+#define SND_SYNC            	0x0000  /* play synchronously (default) */
+#define SND_ASYNC           	0x0001  /* play asynchronously */
+#define SND_NODEFAULT       	0x0002  /* don't use default sound */
+#define SND_MEMORY          	0x0004  /* lpszSoundName points to a memory file */
+#define SND_LOOP            	0x0008  /* loop the sound until next sndPlaySound */
+#define SND_NOSTOP          	0x0010  /* don't stop any currently playing sound */
+
+#define SND_NOWAIT		0x00002000L /* don't wait if the driver is busy */
+#define SND_ALIAS       	0x00010000L /* name is a registry alias */
+#define SND_ALIAS_ID		0x00110000L /* alias is a predefined ID */
+#define SND_FILENAME    	0x00020000L /* name is file name */
+#define SND_RESOURCE    	0x00040004L /* name is resource name or atom */
+#define SND_PURGE		0x00000040L /* purge all sounds */
+#define SND_APPLICATION     	0x00000080L /* look for application specific association */
+
+/* waveform audio error return values */
+#define WAVERR_BADFORMAT      (WAVERR_BASE + 0)    /* unsupported wave format */
+#define WAVERR_STILLPLAYING   (WAVERR_BASE + 1)    /* still something playing */
+#define WAVERR_UNPREPARED     (WAVERR_BASE + 2)    /* header not prepared */
+#define WAVERR_SYNC           (WAVERR_BASE + 3)    /* device is synchronous */
+#define WAVERR_LASTERROR      (WAVERR_BASE + 3)    /* last error in range */
+
+typedef LPDRVCALLBACK LPWAVECALLBACK;
+
+#define WOM_OPEN        MM_WOM_OPEN
+#define WOM_CLOSE       MM_WOM_CLOSE
+#define WOM_DONE        MM_WOM_DONE
+#define WIM_OPEN        MM_WIM_OPEN
+#define WIM_CLOSE       MM_WIM_CLOSE
+#define WIM_DATA        MM_WIM_DATA
+
+#define WAVE_MAPPER     (-1)
+
+#define  WAVE_FORMAT_QUERY     		0x0001
+#define  WAVE_ALLOWSYNC        		0x0002
+#define  WAVE_MAPPED               	0x0004
+#define  WAVE_FORMAT_DIRECT        	0x0008
+#define  WAVE_FORMAT_DIRECT_QUERY  	(WAVE_FORMAT_QUERY | WAVE_FORMAT_DIRECT)
+
+typedef struct wavehdr_tag {
+    LPSTR       lpData;
+    DWORD       dwBufferLength;
+    DWORD       dwBytesRecorded;
+    DWORD       dwUser;
+    DWORD       dwFlags;
+    DWORD       dwLoops;
+    struct wavehdr_tag *lpNext;
+    DWORD       reserved;
+} WAVEHDR, *PWAVEHDR, *NPWAVEHDR, *LPWAVEHDR;
+
+#define WHDR_DONE       0x00000001
+#define WHDR_PREPARED   0x00000002
+#define WHDR_BEGINLOOP  0x00000004
+#define WHDR_ENDLOOP    0x00000008
+#define WHDR_INQUEUE    0x00000010
+
+typedef struct tagWAVEOUTCAPSA {
+    WORD	wMid;
+    WORD	wPid;
+    MMVERSION	vDriverVersion;
+    CHAR	szPname[MAXPNAMELEN];
+    DWORD	dwFormats;
+    WORD	wChannels;
+    WORD	wReserved1;
+    DWORD	dwSupport;
+} WAVEOUTCAPSA, *LPWAVEOUTCAPSA;
+
+typedef struct tagWAVEOUTCAPSW {
+    WORD	wMid;
+    WORD	wPid;
+    MMVERSION	vDriverVersion;
+    WCHAR	szPname[MAXPNAMELEN];
+    DWORD	dwFormats;
+    WORD	wChannels;
+    WORD	wReserved1;
+    DWORD	dwSupport;
+} WAVEOUTCAPSW, *LPWAVEOUTCAPSW;
+DECL_WINELIB_TYPE_AW(WAVEOUTCAPS)
+DECL_WINELIB_TYPE_AW(LPWAVEOUTCAPS)
+
+typedef struct tagWAVEOUTCAPS2A {
+    WORD	wMid;
+    WORD	wPid;
+    MMVERSION	vDriverVersion;
+    CHAR	szPname[MAXPNAMELEN];
+    DWORD	dwFormats;
+    WORD	wChannels;
+    WORD	wReserved1;
+    DWORD	dwSupport;
+    GUID	ManufacturerGuid;
+    GUID	ProductGuid;
+    GUID	NameGuid;
+} WAVEOUTCAPS2A, *LPWAVEOUTCAPS2A;
+
+typedef struct tagWAVEOUTCAPS2W {
+    WORD	wMid;
+    WORD	wPid;
+    MMVERSION	vDriverVersion;
+    WCHAR	szPname[MAXPNAMELEN];
+    DWORD	dwFormats;
+    WORD	wChannels;
+    WORD	wReserved1;
+    DWORD	dwSupport;
+    GUID	ManufacturerGuid;
+    GUID	ProductGuid;
+    GUID	NameGuid;
+} WAVEOUTCAPS2W, *LPWAVEOUTCAPS2W;
+DECL_WINELIB_TYPE_AW(WAVEOUTCAPS2)
+DECL_WINELIB_TYPE_AW(LPWAVEOUTCAPS2)
+
+#define WAVECAPS_PITCH          0x0001   /* supports pitch control */
+#define WAVECAPS_PLAYBACKRATE   0x0002   /* supports playback rate control */
+#define WAVECAPS_VOLUME         0x0004   /* supports volume control */
+#define WAVECAPS_LRVOLUME       0x0008   /* separate left-right volume control */
+#define WAVECAPS_SYNC           0x0010	 /* driver is synchronous and playing is blocking */
+#define WAVECAPS_SAMPLEACCURATE 0x0020	 /* position is sample accurate */
+#define WAVECAPS_DIRECTSOUND	0x0040   /* ? */
+
+typedef struct tagWAVEINCAPSA {
+    WORD	wMid;
+    WORD	wPid;
+    MMVERSION	vDriverVersion;
+    CHAR	szPname[MAXPNAMELEN];
+    DWORD	dwFormats;
+    WORD	wChannels;
+    WORD	wReserved1;
+} WAVEINCAPSA, *LPWAVEINCAPSA;
+typedef struct tagWAVEINCAPSW {
+    WORD	wMid;
+    WORD	wPid;
+    MMVERSION	vDriverVersion;
+    WCHAR	szPname[MAXPNAMELEN];
+    DWORD	dwFormats;
+    WORD	wChannels;
+    WORD	wReserved1;
+} WAVEINCAPSW, *LPWAVEINCAPSW;
+DECL_WINELIB_TYPE_AW(WAVEINCAPS)
+DECL_WINELIB_TYPE_AW(LPWAVEINCAPS)
+
+typedef struct tagWAVEINCAPS2A {
+    WORD	wMid;
+    WORD	wPid;
+    MMVERSION	vDriverVersion;
+    CHAR	szPname[MAXPNAMELEN];
+    DWORD	dwFormats;
+    WORD	wChannels;
+    WORD	wReserved1;
+    GUID	ManufacturerGuid;
+    GUID	ProductGuid;
+    GUID	NameGuid;
+} WAVEINCAPS2A, *LPWAVEINCAPS2A;
+typedef struct tagWAVEINCAPS2W {
+    WORD	wMid;
+    WORD	wPid;
+    MMVERSION	vDriverVersion;
+    WCHAR	szPname[MAXPNAMELEN];
+    DWORD	dwFormats;
+    WORD	wChannels;
+    WORD	wReserved1;
+    GUID	ManufacturerGuid;
+    GUID	ProductGuid;
+    GUID	NameGuid;
+} WAVEINCAPS2W, *LPWAVEINCAPS2W;
+DECL_WINELIB_TYPE_AW(WAVEINCAPS2)
+DECL_WINELIB_TYPE_AW(LPWAVEINCAPS2)
+
+#define WAVE_INVALIDFORMAT     0x00000000    /* invalid format */
+#define WAVE_FORMAT_1M08       0x00000001    /* 11.025 kHz, Mono,   8-bit  */
+#define WAVE_FORMAT_1S08       0x00000002    /* 11.025 kHz, Stereo, 8-bit  */
+#define WAVE_FORMAT_1M16       0x00000004    /* 11.025 kHz, Mono,   16-bit */
+#define WAVE_FORMAT_1S16       0x00000008    /* 11.025 kHz, Stereo, 16-bit */
+#define WAVE_FORMAT_2M08       0x00000010    /* 22.05  kHz, Mono,   8-bit  */
+#define WAVE_FORMAT_2S08       0x00000020    /* 22.05  kHz, Stereo, 8-bit  */
+#define WAVE_FORMAT_2M16       0x00000040    /* 22.05  kHz, Mono,   16-bit */
+#define WAVE_FORMAT_2S16       0x00000080    /* 22.05  kHz, Stereo, 16-bit */
+#define WAVE_FORMAT_4M08       0x00000100    /* 44.1   kHz, Mono,   8-bit  */
+#define WAVE_FORMAT_4S08       0x00000200    /* 44.1   kHz, Stereo, 8-bit  */
+#define WAVE_FORMAT_4M16       0x00000400    /* 44.1   kHz, Mono,   16-bit */
+#define WAVE_FORMAT_4S16       0x00000800    /* 44.1   kHz, Stereo, 16-bit */
+#define WAVE_FORMAT_48M08      0x00001000    /* 48     kHz, Mono,   8-bit  */
+#define WAVE_FORMAT_48S08      0x00002000    /* 48     kHz, Stereo, 8-bit  */
+#define WAVE_FORMAT_48M16      0x00004000    /* 48     kHz, Mono,   16-bit */
+#define WAVE_FORMAT_48S16      0x00008000    /* 48     kHz, Stereo, 16-bit */
+#define WAVE_FORMAT_96M08      0x00010000    /* 96     kHz, Mono,   8-bit  */
+#define WAVE_FORMAT_96S08      0x00020000    /* 96     kHz, Stereo, 8-bit  */
+#define WAVE_FORMAT_96M16      0x00040000    /* 96     kHz, Mono,   16-bit */
+#define WAVE_FORMAT_96S16      0x00080000    /* 96     kHz, Stereo, 16-bit */
+
+/* General format structure common to all formats, same for Win16 and Win32 */
+typedef struct waveformat_tag {
+    WORD	wFormatTag;
+    WORD	nChannels;
+    DWORD	nSamplesPerSec;
+    DWORD	nAvgBytesPerSec;
+    WORD	nBlockAlign;
+} WAVEFORMAT, *LPWAVEFORMAT;
+
+#define WAVE_FORMAT_PCM     1
+
+typedef struct pcmwaveformat_tag {
+    WAVEFORMAT	wf;
+    WORD	wBitsPerSample;
+} PCMWAVEFORMAT, *LPPCMWAVEFORMAT;
+
+#ifndef _WAVEFORMATEX_
+#define _WAVEFORMATEX_
+/* ditto same for Win16 / Win32 */
+typedef struct tWAVEFORMATEX {
+    WORD	wFormatTag;
+    WORD	nChannels;
+    DWORD	nSamplesPerSec;
+    DWORD	nAvgBytesPerSec;
+    WORD	nBlockAlign;
+    WORD	wBitsPerSample;
+    WORD	cbSize;
+} WAVEFORMATEX, *LPWAVEFORMATEX, *NPWAVEFORMATEX, *PWAVEFORMATEX;
+#endif
+typedef const WAVEFORMATEX *LPCWAVEFORMATEX;
+
+UINT 		WINAPI 	waveOutGetNumDevs(void);
+UINT           WINAPI  waveOutGetDevCapsA(UINT_PTR,LPWAVEOUTCAPSA,UINT);
+UINT           WINAPI  waveOutGetDevCapsW(UINT_PTR,LPWAVEOUTCAPSW,UINT);
+#define 		waveOutGetDevCaps WINELIB_NAME_AW(waveOutGetDevCaps)
+UINT 		WINAPI	waveOutGetVolume(HWAVEOUT,DWORD*);
+UINT 		WINAPI 	waveOutSetVolume(HWAVEOUT,DWORD);
+UINT 		WINAPI 	waveOutGetErrorTextA(UINT,LPSTR,UINT);
+UINT 		WINAPI 	waveOutGetErrorTextW(UINT,LPWSTR,UINT);
+#define 	    	waveOutGetErrorText WINELIB_NAME_AW(waveOutGetErrorText)
+MMRESULT        WINAPI  waveOutOpen(HWAVEOUT*,UINT,LPCWAVEFORMATEX,DWORD_PTR,DWORD_PTR,DWORD);
+UINT 		WINAPI 	waveOutClose(HWAVEOUT);
+UINT 		WINAPI 	waveOutPrepareHeader(HWAVEOUT,WAVEHDR*,UINT);
+UINT 		WINAPI 	waveOutUnprepareHeader(HWAVEOUT,WAVEHDR*,UINT);
+UINT 		WINAPI 	waveOutWrite(HWAVEOUT,WAVEHDR*,UINT);
+UINT 		WINAPI 	waveOutPause(HWAVEOUT);
+UINT 		WINAPI 	waveOutRestart(HWAVEOUT);
+UINT 		WINAPI 	waveOutReset(HWAVEOUT);
+UINT 		WINAPI 	waveOutBreakLoop(HWAVEOUT);
+UINT 		WINAPI 	waveOutGetPosition(HWAVEOUT,LPMMTIME,UINT);
+UINT 		WINAPI 	waveOutGetPitch(HWAVEOUT,DWORD*);
+UINT 		WINAPI 	waveOutSetPitch(HWAVEOUT,DWORD);
+UINT 		WINAPI 	waveOutGetPlaybackRate(HWAVEOUT,DWORD*);
+UINT 		WINAPI 	waveOutSetPlaybackRate(HWAVEOUT,DWORD);
+UINT 		WINAPI 	waveOutGetID(HWAVEOUT,UINT*);
+UINT           WINAPI  waveOutMessage(HWAVEOUT,UINT,DWORD_PTR,DWORD_PTR);
+UINT 		WINAPI 	waveInGetNumDevs(void);
+UINT           WINAPI  waveInGetDevCapsA(UINT_PTR,LPWAVEINCAPSA,UINT);
+UINT           WINAPI  waveInGetDevCapsW(UINT_PTR,LPWAVEINCAPSW,UINT);
+#define 		waveInGetDevCaps WINELIB_NAME_AW(waveInGetDevCaps)
+UINT 		WINAPI 	waveInGetErrorTextA(UINT,LPSTR,UINT);
+UINT 		WINAPI 	waveInGetErrorTextW(UINT,LPWSTR,UINT);
+#define 		waveInGetErrorText WINELIB_NAME_AW(waveInGetErrorText)
+MMRESULT        WINAPI  waveInOpen(HWAVEIN*,UINT,LPCWAVEFORMATEX,DWORD_PTR,DWORD_PTR,DWORD);
+UINT 		WINAPI  waveInClose(HWAVEIN);
+UINT 		WINAPI  waveInPrepareHeader(HWAVEIN,WAVEHDR*,UINT);
+UINT 		WINAPI  waveInUnprepareHeader(HWAVEIN,WAVEHDR*,UINT);
+UINT 		WINAPI  waveInAddBuffer(HWAVEIN,WAVEHDR*,UINT);
+UINT 		WINAPI  waveInStart(HWAVEIN);
+UINT 		WINAPI  waveInStop(HWAVEIN);
+UINT 		WINAPI  waveInReset(HWAVEIN);
+UINT 		WINAPI  waveInGetPosition(HWAVEIN,LPMMTIME,UINT);
+UINT 		WINAPI  waveInGetID(HWAVEIN,UINT*);
+UINT           WINAPI  waveInMessage(HWAVEIN,UINT,DWORD_PTR,DWORD_PTR);
+
+#define MIDIERR_UNPREPARED    (MIDIERR_BASE + 0)
+#define MIDIERR_STILLPLAYING  (MIDIERR_BASE + 1)
+#define MIDIERR_NOMAP         (MIDIERR_BASE + 2)
+#define MIDIERR_NOTREADY      (MIDIERR_BASE + 3)
+#define MIDIERR_NODEVICE      (MIDIERR_BASE + 4)
+#define MIDIERR_INVALIDSETUP  (MIDIERR_BASE + 5)
+#define MIDIERR_BADOPENMODE   (MIDIERR_BASE + 6)
+#define MIDIERR_DONT_CONTINUE (MIDIERR_BASE + 7)
+#define MIDIERR_LASTERROR     (MIDIERR_BASE + 7)
+
+typedef LPDRVCALLBACK LPMIDICALLBACK;
+#define MIDIPATCHSIZE   128
+typedef WORD PATCHARRAY[MIDIPATCHSIZE];
+typedef WORD *LPPATCHARRAY;
+typedef WORD KEYARRAY[MIDIPATCHSIZE];
+typedef WORD *LPKEYARRAY;
+
+#define MIM_OPEN        MM_MIM_OPEN
+#define MIM_CLOSE       MM_MIM_CLOSE
+#define MIM_DATA        MM_MIM_DATA
+#define MIM_LONGDATA    MM_MIM_LONGDATA
+#define MIM_ERROR       MM_MIM_ERROR
+#define MIM_LONGERROR   MM_MIM_LONGERROR
+#define MIM_MOREDATA	MM_MIM_MOREDATA
+
+#define MOM_OPEN        MM_MOM_OPEN
+#define MOM_CLOSE       MM_MOM_CLOSE
+#define MOM_DONE        MM_MOM_DONE
+#define MOM_POSITIONCB	MM_MOM_POSITIONCB
+
+/* device ID for MIDI mapper */
+
+#define MIDIMAPPER     (-1)
+#define MIDI_MAPPER    (-1)
+
+/* Only on Win95 and up */
+#define MIDI_IO_STATUS	0x00000020L
+
+/* flags for wFlags parm of
+	midiOutCachePatches(),
+	midiOutCacheDrumPatches() */
+#define MIDI_CACHE_ALL      1
+#define MIDI_CACHE_BESTFIT  2
+#define MIDI_CACHE_QUERY    3
+#define MIDI_UNCACHE        4
+
+typedef struct tagMIDIOUTCAPSA {
+    WORD	wMid;
+    WORD	wPid;
+    MMVERSION	vDriverVersion;
+    CHAR	szPname[MAXPNAMELEN];
+    WORD	wTechnology;
+    WORD	wVoices;
+    WORD	wNotes;
+    WORD	wChannelMask;
+    DWORD	dwSupport;
+} MIDIOUTCAPSA, *LPMIDIOUTCAPSA;
+
+typedef struct tagMIDIOUTCAPSW {
+    WORD	wMid;
+    WORD	wPid;
+    MMVERSION	vDriverVersion;
+    WCHAR	szPname[MAXPNAMELEN];
+    WORD	wTechnology;
+    WORD	wVoices;
+    WORD	wNotes;
+    WORD	wChannelMask;
+    DWORD	dwSupport;
+} MIDIOUTCAPSW, *LPMIDIOUTCAPSW;
+
+DECL_WINELIB_TYPE_AW(MIDIOUTCAPS)
+DECL_WINELIB_TYPE_AW(LPMIDIOUTCAPS)
+
+typedef struct tagMIDIOUTCAPS2A {
+    WORD	wMid;
+    WORD	wPid;
+    MMVERSION	vDriverVersion;
+    CHAR	szPname[MAXPNAMELEN];
+    WORD	wTechnology;
+    WORD	wVoices;
+    WORD	wNotes;
+    WORD	wChannelMask;
+    DWORD	dwSupport;
+    GUID	ManufacturerGuid;
+    GUID	ProductGuid;
+    GUID	NameGuid;
+} MIDIOUTCAPS2A, *LPMIDIOUTCAPS2A;
+
+typedef struct tagMIDIOUTCAPS2W {
+    WORD	wMid;
+    WORD	wPid;
+    MMVERSION	vDriverVersion;
+    WCHAR	szPname[MAXPNAMELEN];
+    WORD	wTechnology;
+    WORD	wVoices;
+    WORD	wNotes;
+    WORD	wChannelMask;
+    DWORD	dwSupport;
+    GUID	ManufacturerGuid;
+    GUID	ProductGuid;
+    GUID	NameGuid;
+} MIDIOUTCAPS2W, *LPMIDIOUTCAPS2W;
+
+DECL_WINELIB_TYPE_AW(MIDIOUTCAPS2)
+DECL_WINELIB_TYPE_AW(LPMIDIOUTCAPS2)
+
+#define MOD_MIDIPORT    1  /* output port */
+#define MOD_SYNTH       2  /* generic internal synth */
+#define MOD_SQSYNTH     3  /* square wave internal synth */
+#define MOD_FMSYNTH     4  /* FM internal synth */
+#define MOD_MAPPER      5  /* MIDI mapper */
+
+#define MIDICAPS_VOLUME		0x0001  /* supports volume control */
+#define MIDICAPS_LRVOLUME	0x0002  /* separate left-right volume control */
+#define MIDICAPS_CACHE		0x0004
+#define MIDICAPS_STREAM		0x0008  /* capable of supporting stream buffer */
+
+typedef struct tagMIDIINCAPSA {
+    WORD	wMid;
+    WORD	wPid;
+    MMVERSION	vDriverVersion;
+    CHAR	szPname[MAXPNAMELEN];
+    DWORD	dwSupport;
+} MIDIINCAPSA, *LPMIDIINCAPSA;
+
+typedef struct tagMIDIINCAPSW {
+    WORD	wMid;
+    WORD	wPid;
+    MMVERSION	vDriverVersion;
+    WCHAR	szPname[MAXPNAMELEN];
+    DWORD	dwSupport;
+} MIDIINCAPSW, *LPMIDIINCAPSW;
+
+DECL_WINELIB_TYPE_AW(MIDIINCAPS)
+DECL_WINELIB_TYPE_AW(LPMIDIINCAPS)
+
+typedef struct tagMIDIINCAPS2A {
+    WORD	wMid;
+    WORD	wPid;
+    MMVERSION	vDriverVersion;
+    CHAR	szPname[MAXPNAMELEN];
+    DWORD	dwSupport;
+    GUID	ManufacturerGuid;
+    GUID	ProductGuid;
+    GUID	NameGuid;
+} MIDIINCAPS2A, *LPMIDIINCAPS2A;
+
+typedef struct tagMIDIINCAPS2W {
+    WORD	wMid;
+    WORD	wPid;
+    MMVERSION	vDriverVersion;
+    WCHAR	szPname[MAXPNAMELEN];
+    DWORD	dwSupport;
+    GUID	ManufacturerGuid;
+    GUID	ProductGuid;
+    GUID	NameGuid;
+} MIDIINCAPS2W, *LPMIDIINCAPS2W;
+
+DECL_WINELIB_TYPE_AW(MIDIINCAPS2)
+DECL_WINELIB_TYPE_AW(LPMIDIINCAPS2)
+
+/* It seems that Win32 has a slightly different structure than Win 16.
+ * sigh....
+ */
+typedef struct midihdr_tag {
+    LPSTR	lpData;
+    DWORD	dwBufferLength;
+    DWORD	dwBytesRecorded;
+    DWORD_PTR	dwUser;
+    DWORD	dwFlags;
+    struct midihdr_tag *lpNext;
+    DWORD	reserved;
+    DWORD	dwOffset;
+    DWORD_PTR	dwReserved[8];
+} MIDIHDR, *LPMIDIHDR;
+
+#define MHDR_DONE       0x00000001       /* done bit */
+#define MHDR_PREPARED   0x00000002       /* set if header prepared */
+#define MHDR_INQUEUE    0x00000004       /* reserved for driver */
+#define MHDR_ISSTRM	0x00000008	 /* data is sent by Stream functions */
+
+typedef struct midiproptempo_tag {
+    DWORD		cbStruct;
+    DWORD		dwTempo;
+} MIDIPROPTEMPO, *LPMIDIPROPTEMPO;
+
+typedef struct midiproptimediv_tag {
+    DWORD		cbStruct;
+    DWORD		dwTimeDiv;
+} MIDIPROPTIMEDIV, *LPMIDIPROPTIMEDIV;
+
+#define MIDIPROP_GET		0x40000000
+#define MIDIPROP_SET		0x80000000
+#define MIDIPROP_TEMPO		0x00000002
+#define MIDIPROP_TIMEDIV	0x00000001
+
+typedef struct midievent_tag {
+    DWORD dwDeltaTime;	/* Time, in MIDI ticks, between the previous
+			 * event and the current event. */
+    DWORD dwStreamID;	/* Reserved; must be zero. */
+    DWORD dwEvent;  	/* event => see MEVT_XXX macros */
+    DWORD dwParms[1];	/* extra pmts to dwEvent if F_LONG is set */
+} MIDIEVENT, *LPMIDIEVENT;
+
+#define MEVT_EVENTTYPE(x) ((BYTE) (((x)>>24)&0xFF))
+#define MEVT_EVENTPARM(x) ((DWORD) ((x)&0x00FFFFFFL))
+
+#define MEVT_F_CALLBACK 0x40000000l
+#define	MEVT_F_LONG     0x80000000l
+#define	MEVT_F_SHORT    0x00000000l
+#define	MEVT_COMMENT	((BYTE)0x82)
+#define	MEVT_LONGMSG	((BYTE)0x80)
+#define	MEVT_NOP	((BYTE)0x02)
+#define	MEVT_SHORTMSG	((BYTE)0x00)
+#define	MEVT_TEMPO	((BYTE)0x01)
+#define	MEVT_VERSION	((BYTE)0x84)
+
+UINT		WINAPI	midiOutGetNumDevs(void);
+UINT           WINAPI  midiOutGetDevCapsA(UINT_PTR,LPMIDIOUTCAPSA,UINT);
+UINT           WINAPI  midiOutGetDevCapsW(UINT_PTR,LPMIDIOUTCAPSW,UINT);
+#define 		midiOutGetDevCaps WINELIB_NAME_AW(midiOutGetDevCaps)
+UINT		WINAPI	midiOutGetVolume(HMIDIOUT,DWORD*);
+UINT		WINAPI	midiOutSetVolume(HMIDIOUT,DWORD);
+UINT		WINAPI	midiOutGetErrorTextA(UINT,LPSTR,UINT);
+UINT		WINAPI	midiOutGetErrorTextW(UINT,LPWSTR,UINT);
+#define 		midiOutGetErrorText WINELIB_NAME_AW(midiOutGetErrorText)
+UINT           WINAPI  midiOutOpen(LPHMIDIOUT,UINT,DWORD_PTR,DWORD_PTR,DWORD);
+UINT		WINAPI	midiOutClose(HMIDIOUT);
+UINT		WINAPI	midiOutPrepareHeader(HMIDIOUT,MIDIHDR*,UINT);
+UINT		WINAPI	midiOutUnprepareHeader(HMIDIOUT,MIDIHDR*,UINT);
+UINT		WINAPI	midiOutShortMsg(HMIDIOUT,DWORD);
+UINT		WINAPI	midiOutLongMsg(HMIDIOUT,MIDIHDR*,UINT);
+UINT		WINAPI	midiOutReset(HMIDIOUT);
+UINT		WINAPI	midiOutCachePatches(HMIDIOUT,UINT,WORD*,UINT);
+UINT		WINAPI	midiOutCacheDrumPatches(HMIDIOUT,UINT,WORD*,UINT);
+UINT		WINAPI	midiOutGetID(HMIDIOUT,UINT*);
+UINT           WINAPI  midiOutMessage(HMIDIOUT,UINT,DWORD_PTR,DWORD_PTR);
+
+UINT		WINAPI	midiInGetNumDevs(void);
+UINT           WINAPI  midiInGetDevCapsA(UINT_PTR,LPMIDIINCAPSA,UINT);
+UINT           WINAPI  midiInGetDevCapsW(UINT_PTR,LPMIDIINCAPSW,UINT);
+#define 		midiInGetDevCaps WINELIB_NAME_AW(midiInGetDevCaps)
+UINT		WINAPI	midiInGetErrorTextA(UINT,LPSTR,UINT);
+UINT		WINAPI	midiInGetErrorTextW(UINT,LPWSTR,UINT);
+#define 		midiInGetErrorText WINELIB_NAME_AW(midiInGetErrorText)
+UINT           WINAPI  midiInOpen(LPHMIDIIN,UINT,DWORD_PTR,DWORD_PTR,DWORD);
+UINT		WINAPI	midiInClose(HMIDIIN);
+UINT		WINAPI	midiInPrepareHeader(HMIDIIN,MIDIHDR*,UINT);
+UINT		WINAPI	midiInUnprepareHeader(HMIDIIN,MIDIHDR*,UINT);
+UINT		WINAPI	midiInAddBuffer(HMIDIIN,MIDIHDR*,UINT);
+UINT		WINAPI	midiInStart(HMIDIIN);
+UINT		WINAPI	midiInStop(HMIDIIN);
+UINT		WINAPI	midiInReset(HMIDIIN);
+UINT		WINAPI	midiInGetID(HMIDIIN,UINT*);
+UINT           WINAPI  midiInMessage(HMIDIIN,UINT,DWORD_PTR,DWORD_PTR);
+MMRESULT	WINAPI	midiStreamClose(HMIDISTRM hms);
+MMRESULT       WINAPI  midiStreamOpen(LPHMIDISTRM,LPUINT,DWORD,DWORD_PTR,DWORD_PTR,DWORD);
+MMRESULT	WINAPI	midiStreamOut(HMIDISTRM hms, LPMIDIHDR lpMidiHdr, UINT cbMidiHdr);
+MMRESULT	WINAPI	midiStreamPause(HMIDISTRM hms);
+MMRESULT	WINAPI	midiStreamPosition(HMIDISTRM hms, LPMMTIME lpmmt, UINT cbmmt);
+MMRESULT	WINAPI	midiStreamProperty(HMIDISTRM hms, LPBYTE lpPropData, DWORD dwProperty);
+MMRESULT	WINAPI	midiStreamRestart(HMIDISTRM hms);
+MMRESULT	WINAPI	midiStreamStop(HMIDISTRM hms);
+
+#define AUX_MAPPER     (-1)
+
+typedef struct tagAUXCAPSA {
+    WORD	wMid;
+    WORD	wPid;
+    MMVERSION	vDriverVersion;
+    CHAR	szPname[MAXPNAMELEN];
+    WORD	wTechnology;
+    WORD	wReserved1;
+    DWORD	dwSupport;
+} AUXCAPSA, *LPAUXCAPSA;
+
+typedef struct tagAUXCAPSW {
+    WORD	wMid;
+    WORD	wPid;
+    MMVERSION	vDriverVersion;
+    WCHAR	szPname[MAXPNAMELEN];
+    WORD	wTechnology;
+    WORD	wReserved1;
+    DWORD	dwSupport;
+} AUXCAPSW, *LPAUXCAPSW;
+
+DECL_WINELIB_TYPE_AW(AUXCAPS)
+DECL_WINELIB_TYPE_AW(LPAUXCAPS)
+
+typedef struct tagAUXCAPS2A {
+    WORD	wMid;
+    WORD	wPid;
+    MMVERSION	vDriverVersion;
+    CHAR	szPname[MAXPNAMELEN];
+    WORD	wTechnology;
+    WORD	wReserved1;
+    DWORD	dwSupport;
+    GUID	ManufacturerGuid;
+    GUID	ProductGuid;
+    GUID	NameGuid;
+} AUXCAPS2A, *LPAUXCAPS2A;
+
+typedef struct tagAUXCAPS2W {
+    WORD	wMid;
+    WORD	wPid;
+    MMVERSION	vDriverVersion;
+    WCHAR	szPname[MAXPNAMELEN];
+    WORD	wTechnology;
+    WORD	wReserved1;
+    DWORD	dwSupport;
+    GUID	ManufacturerGuid;
+    GUID	ProductGuid;
+    GUID	NameGuid;
+} AUXCAPS2W, *LPAUXCAPS2W;
+
+DECL_WINELIB_TYPE_AW(AUXCAPS2)
+DECL_WINELIB_TYPE_AW(LPAUXCAPS2)
+
+#define AUXCAPS_CDAUDIO    1       /* audio from internal CD-ROM drive */
+#define AUXCAPS_AUXIN      2       /* audio from auxiliary input jacks */
+
+#define AUXCAPS_VOLUME          0x0001  /* supports volume control */
+#define AUXCAPS_LRVOLUME        0x0002  /* separate left-right volume control */
+
+UINT		WINAPI	auxGetNumDevs(void);
+UINT           WINAPI  auxGetDevCapsA(UINT_PTR,LPAUXCAPSA,UINT);
+UINT           WINAPI  auxGetDevCapsW(UINT_PTR,LPAUXCAPSW,UINT);
+#define 		auxGetDevCaps WINELIB_NAME_AW(auxGetDevCaps)
+UINT		WINAPI	auxSetVolume(UINT,DWORD);
+UINT		WINAPI	auxGetVolume(UINT,LPDWORD);
+UINT           WINAPI  auxOutMessage(UINT,UINT,DWORD_PTR,DWORD_PTR);
+
+#define TIMERR_NOERROR        (0)                  /* no error */
+#define TIMERR_NOCANDO        (TIMERR_BASE+1)      /* request not completed */
+#define TIMERR_STRUCT         (TIMERR_BASE+33)     /* time struct size */
+
+typedef void (CALLBACK *LPTIMECALLBACK)(UINT,UINT,DWORD_PTR,DWORD_PTR,DWORD_PTR);
+
+#define TIME_ONESHOT			0x0000	/* program timer for single event */
+#define TIME_PERIODIC			0x0001	/* program for continuous periodic event */
+#define TIME_CALLBACK_FUNCTION		0x0000	/* callback is function */
+#define TIME_CALLBACK_EVENT_SET		0x0010	/* callback is event - use SetEvent */
+#define TIME_CALLBACK_EVENT_PULSE 	0x0020	/* callback is event - use PulseEvent */
+#define TIME_KILL_SYNCHRONOUS           0x0100
+
+typedef struct timecaps_tag {
+    UINT	wPeriodMin;
+    UINT	wPeriodMax;
+} TIMECAPS, *LPTIMECAPS;
+
+
+MMRESULT	WINAPI	timeGetSystemTime(LPMMTIME,UINT);
+DWORD		WINAPI	timeGetTime(void);	/* same for win32/win16 */
+MMRESULT       WINAPI  timeSetEvent(UINT,UINT,LPTIMECALLBACK,DWORD_PTR,UINT);
+MMRESULT	WINAPI	timeKillEvent(UINT);
+MMRESULT	WINAPI	timeGetDevCaps(LPTIMECAPS,UINT);
+MMRESULT	WINAPI	timeBeginPeriod(UINT);
+MMRESULT	WINAPI	timeEndPeriod(UINT);
+
+#define JOYERR_NOERROR        (0)                  /* no error */
+#define JOYERR_PARMS          (JOYERR_BASE+5)      /* bad parameters */
+#define JOYERR_NOCANDO        (JOYERR_BASE+6)      /* request not completed */
+#define JOYERR_UNPLUGGED      (JOYERR_BASE+7)      /* joystick is unplugged */
+
+/* JOYINFO, JOYINFOEX, MM_JOY* */
+#define JOY_BUTTON1         	0x0001
+#define JOY_BUTTON2         	0x0002
+#define JOY_BUTTON3         	0x0004
+#define JOY_BUTTON4         	0x0008
+#define JOY_BUTTON1CHG      	0x0100
+#define JOY_BUTTON2CHG      	0x0200
+#define JOY_BUTTON3CHG      	0x0400
+#define JOY_BUTTON4CHG      	0x0800
+
+#define JOYSTICKID1         	0
+#define JOYSTICKID2         	1
+
+/* JOYCAPS.wCaps */
+#define JOYCAPS_HASZ		0x0001
+#define JOYCAPS_HASR		0x0002
+#define JOYCAPS_HASU		0x0004
+#define JOYCAPS_HASV		0x0008
+#define JOYCAPS_HASPOV		0x0010
+#define JOYCAPS_POV4DIR		0x0020
+#define JOYCAPS_POVCTS		0x0040
+
+/* JOYINFOEX stuff */
+#define JOY_POVCENTERED		(WORD) -1
+#define JOY_POVFORWARD		0
+#define JOY_POVRIGHT		9000
+#define JOY_POVBACKWARD		18000
+#define JOY_POVLEFT		27000
+
+#define JOY_RETURNX		0x00000001
+#define JOY_RETURNY		0x00000002
+#define JOY_RETURNZ		0x00000004
+#define JOY_RETURNR		0x00000008
+#define JOY_RETURNU		0x00000010
+#define JOY_RETURNV		0x00000020
+#define JOY_RETURNPOV		0x00000040
+#define JOY_RETURNBUTTONS	0x00000080
+#define JOY_RETURNRAWDATA	0x00000100
+#define JOY_RETURNPOVCTS	0x00000200
+#define JOY_RETURNCENTERED	0x00000400
+#define JOY_USEDEADZONE		0x00000800
+#define JOY_RETURNALL		(JOY_RETURNX | JOY_RETURNY | JOY_RETURNZ | \
+				 JOY_RETURNR | JOY_RETURNU | JOY_RETURNV | \
+				 JOY_RETURNPOV | JOY_RETURNBUTTONS)
+#define JOY_CAL_READALWAYS	0x00010000
+#define JOY_CAL_READXYONLY	0x00020000
+#define JOY_CAL_READ3		0x00040000
+#define JOY_CAL_READ4		0x00080000
+#define JOY_CAL_READXONLY	0x00100000
+#define JOY_CAL_READYONLY	0x00200000
+#define JOY_CAL_READ5		0x00400000
+#define JOY_CAL_READ6		0x00800000
+#define JOY_CAL_READZONLY	0x01000000
+#define JOY_CAL_READRONLY	0x02000000
+#define JOY_CAL_READUONLY	0x04000000
+#define JOY_CAL_READVONLY	0x08000000
+
+typedef struct tagJOYCAPSA {
+    WORD wMid;
+    WORD wPid;
+    CHAR szPname[MAXPNAMELEN];
+    UINT wXmin;
+    UINT wXmax;
+    UINT wYmin;
+    UINT wYmax;
+    UINT wZmin;
+    UINT wZmax;
+    UINT wNumButtons;
+    UINT wPeriodMin;
+    UINT wPeriodMax;
+    UINT wRmin;
+    UINT wRmax;
+    UINT wUmin;
+    UINT wUmax;
+    UINT wVmin;
+    UINT wVmax;
+    UINT wCaps;
+    UINT wMaxAxes;
+    UINT wNumAxes;
+    UINT wMaxButtons;
+    CHAR szRegKey[MAXPNAMELEN];
+    CHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
+} JOYCAPSA, *LPJOYCAPSA;
+
+typedef struct tagJOYCAPSW {
+    WORD wMid;
+    WORD wPid;
+    WCHAR szPname[MAXPNAMELEN];
+    UINT wXmin;
+    UINT wXmax;
+    UINT wYmin;
+    UINT wYmax;
+    UINT wZmin;
+    UINT wZmax;
+    UINT wNumButtons;
+    UINT wPeriodMin;
+    UINT wPeriodMax;
+    UINT wRmin;
+    UINT wRmax;
+    UINT wUmin;
+    UINT wUmax;
+    UINT wVmin;
+    UINT wVmax;
+    UINT wCaps;
+    UINT wMaxAxes;
+    UINT wNumAxes;
+    UINT wMaxButtons;
+    WCHAR szRegKey[MAXPNAMELEN];
+    WCHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
+} JOYCAPSW, *LPJOYCAPSW;
+DECL_WINELIB_TYPE_AW(JOYCAPS)
+DECL_WINELIB_TYPE_AW(LPJOYCAPS)
+
+typedef struct tagJOYCAPS2A {
+    WORD wMid;
+    WORD wPid;
+    CHAR szPname[MAXPNAMELEN];
+    UINT wXmin;
+    UINT wXmax;
+    UINT wYmin;
+    UINT wYmax;
+    UINT wZmin;
+    UINT wZmax;
+    UINT wNumButtons;
+    UINT wPeriodMin;
+    UINT wPeriodMax;
+    UINT wRmin;
+    UINT wRmax;
+    UINT wUmin;
+    UINT wUmax;
+    UINT wVmin;
+    UINT wVmax;
+    UINT wCaps;
+    UINT wMaxAxes;
+    UINT wNumAxes;
+    UINT wMaxButtons;
+    CHAR szRegKey[MAXPNAMELEN];
+    CHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
+    GUID ManufacturerGuid;
+    GUID ProductGuid;
+    GUID NameGuid;
+} JOYCAPS2A, *LPJOYCAPS2A;
+
+typedef struct tagJOYCAPS2W {
+    WORD wMid;
+    WORD wPid;
+    WCHAR szPname[MAXPNAMELEN];
+    UINT wXmin;
+    UINT wXmax;
+    UINT wYmin;
+    UINT wYmax;
+    UINT wZmin;
+    UINT wZmax;
+    UINT wNumButtons;
+    UINT wPeriodMin;
+    UINT wPeriodMax;
+    UINT wRmin;
+    UINT wRmax;
+    UINT wUmin;
+    UINT wUmax;
+    UINT wVmin;
+    UINT wVmax;
+    UINT wCaps;
+    UINT wMaxAxes;
+    UINT wNumAxes;
+    UINT wMaxButtons;
+    WCHAR szRegKey[MAXPNAMELEN];
+    WCHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
+    GUID ManufacturerGuid;
+    GUID ProductGuid;
+    GUID NameGuid;
+} JOYCAPS2W, *LPJOYCAPS2W;
+DECL_WINELIB_TYPE_AW(JOYCAPS2)
+DECL_WINELIB_TYPE_AW(LPJOYCAPS2)
+
+typedef struct joyinfo_tag {
+    UINT wXpos;
+    UINT wYpos;
+    UINT wZpos;
+    UINT wButtons;
+} JOYINFO, *LPJOYINFO;
+
+typedef struct joyinfoex_tag {
+    DWORD	dwSize;
+    DWORD	dwFlags;
+    DWORD	dwXpos;
+    DWORD	dwYpos;
+    DWORD	dwZpos;
+    DWORD	dwRpos;
+    DWORD	dwUpos;
+    DWORD	dwVpos;
+    DWORD	dwButtons;
+    DWORD	dwButtonNumber;
+    DWORD	dwPOV;
+    DWORD	dwReserved1;
+    DWORD	dwReserved2;
+} JOYINFOEX,*LPJOYINFOEX;
+
+
+MMRESULT       WINAPI  joyGetDevCapsA(UINT_PTR,LPJOYCAPSA,UINT);
+MMRESULT       WINAPI  joyGetDevCapsW(UINT_PTR,LPJOYCAPSW,UINT);
+#define joyGetDevCaps WINELIB_NAME_AW(joyGetDevCaps)
+UINT		WINAPI	joyGetNumDevs(void);
+MMRESULT	WINAPI	joyGetPos(UINT,LPJOYINFO);
+MMRESULT	WINAPI	joyGetPosEx(UINT,LPJOYINFOEX);
+MMRESULT	WINAPI	joyGetThreshold(UINT,UINT*);
+MMRESULT	WINAPI	joyReleaseCapture(UINT);
+MMRESULT	WINAPI	joySetCapture(HWND,UINT,UINT,BOOL);
+MMRESULT	WINAPI	joySetThreshold(UINT,UINT);
+
+#define	MIXERR_BASE		1024
+#define	MIXERR_INVALLINE	(MIXERR_BASE + 0)
+#define MIXERR_INVALCONTROL	(MIXERR_BASE + 1)
+#define MIXERR_INVALVALUE	(MIXERR_BASE + 2)
+#define MIXERR_LASTERROR	(MIXERR_BASE + 2)
+
+typedef struct tagMIXERCAPSA {
+	WORD		wMid;
+	WORD		wPid;
+	MMVERSION	vDriverVersion;
+	CHAR		szPname[MAXPNAMELEN];
+	DWORD		fdwSupport;
+	DWORD		cDestinations;
+} MIXERCAPSA,*LPMIXERCAPSA;
+
+typedef struct tagMIXERCAPSW {
+	WORD		wMid;
+	WORD		wPid;
+	MMVERSION	vDriverVersion;
+	WCHAR		szPname[MAXPNAMELEN];
+	DWORD		fdwSupport;
+	DWORD		cDestinations;
+} MIXERCAPSW,*LPMIXERCAPSW;
+
+DECL_WINELIB_TYPE_AW(MIXERCAPS)
+DECL_WINELIB_TYPE_AW(LPMIXERCAPS)
+
+typedef struct tagMIXERCAPS2A {
+	WORD		wMid;
+	WORD		wPid;
+	MMVERSION	vDriverVersion;
+	CHAR		szPname[MAXPNAMELEN];
+	DWORD		fdwSupport;
+	DWORD		cDestinations;
+	GUID		ManufacturerGuid;
+	GUID		ProductGuid;
+	GUID		NameGuid;
+} MIXERCAPS2A,*LPMIXERCAPS2A;
+
+typedef struct tagMIXERCAPS2W {
+	WORD		wMid;
+	WORD		wPid;
+	MMVERSION	vDriverVersion;
+	WCHAR		szPname[MAXPNAMELEN];
+	DWORD		fdwSupport;
+	DWORD		cDestinations;
+	GUID		ManufacturerGuid;
+	GUID		ProductGuid;
+	GUID		NameGuid;
+} MIXERCAPS2W,*LPMIXERCAPS2W;
+
+DECL_WINELIB_TYPE_AW(MIXERCAPS2)
+DECL_WINELIB_TYPE_AW(LPMIXERCAPS2)
+
+#define MIXER_SHORT_NAME_CHARS		16
+#define MIXER_LONG_NAME_CHARS		64
+
+/*  MIXERLINE.fdwLine */
+#define	MIXERLINE_LINEF_ACTIVE		0x00000001
+#define	MIXERLINE_LINEF_DISCONNECTED	0x00008000
+#define	MIXERLINE_LINEF_SOURCE		0x80000000
+
+/* Mixer flags */
+#define MIXER_OBJECTF_HANDLE	0x80000000L
+#define MIXER_OBJECTF_MIXER	0x00000000L
+#define MIXER_OBJECTF_HMIXER	(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIXER)
+#define MIXER_OBJECTF_WAVEOUT	0x10000000L
+#define MIXER_OBJECTF_HWAVEOUT	(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEOUT)
+#define MIXER_OBJECTF_WAVEIN	0x20000000L
+#define MIXER_OBJECTF_HWAVEIN	(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEIN)
+#define MIXER_OBJECTF_MIDIOUT	0x30000000L
+#define MIXER_OBJECTF_HMIDIOUT	(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIOUT)
+#define MIXER_OBJECTF_MIDIIN	0x40000000L
+#define MIXER_OBJECTF_HMIDIIN	(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIIN)
+#define MIXER_OBJECTF_AUX	0x50000000L
+
+/*  MIXERLINE.dwComponentType */
+/*  component types for destinations and sources */
+#define	MIXERLINE_COMPONENTTYPE_DST_FIRST	0x00000000L
+#define	MIXERLINE_COMPONENTTYPE_DST_UNDEFINED	(MIXERLINE_COMPONENTTYPE_DST_FIRST + 0)
+#define	MIXERLINE_COMPONENTTYPE_DST_DIGITAL	(MIXERLINE_COMPONENTTYPE_DST_FIRST + 1)
+#define	MIXERLINE_COMPONENTTYPE_DST_LINE	(MIXERLINE_COMPONENTTYPE_DST_FIRST + 2)
+#define	MIXERLINE_COMPONENTTYPE_DST_MONITOR	(MIXERLINE_COMPONENTTYPE_DST_FIRST + 3)
+#define	MIXERLINE_COMPONENTTYPE_DST_SPEAKERS	(MIXERLINE_COMPONENTTYPE_DST_FIRST + 4)
+#define	MIXERLINE_COMPONENTTYPE_DST_HEADPHONES	(MIXERLINE_COMPONENTTYPE_DST_FIRST + 5)
+#define	MIXERLINE_COMPONENTTYPE_DST_TELEPHONE	(MIXERLINE_COMPONENTTYPE_DST_FIRST + 6)
+#define	MIXERLINE_COMPONENTTYPE_DST_WAVEIN	(MIXERLINE_COMPONENTTYPE_DST_FIRST + 7)
+#define	MIXERLINE_COMPONENTTYPE_DST_VOICEIN	(MIXERLINE_COMPONENTTYPE_DST_FIRST + 8)
+#define	MIXERLINE_COMPONENTTYPE_DST_LAST	(MIXERLINE_COMPONENTTYPE_DST_FIRST + 8)
+
+#define	MIXERLINE_COMPONENTTYPE_SRC_FIRST	0x00001000L
+#define	MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED	(MIXERLINE_COMPONENTTYPE_SRC_FIRST + 0)
+#define	MIXERLINE_COMPONENTTYPE_SRC_DIGITAL	(MIXERLINE_COMPONENTTYPE_SRC_FIRST + 1)
+#define	MIXERLINE_COMPONENTTYPE_SRC_LINE	(MIXERLINE_COMPONENTTYPE_SRC_FIRST + 2)
+#define	MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE	(MIXERLINE_COMPONENTTYPE_SRC_FIRST + 3)
+#define	MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER	(MIXERLINE_COMPONENTTYPE_SRC_FIRST + 4)
+#define	MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC	(MIXERLINE_COMPONENTTYPE_SRC_FIRST + 5)
+#define	MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE	(MIXERLINE_COMPONENTTYPE_SRC_FIRST + 6)
+#define	MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER	(MIXERLINE_COMPONENTTYPE_SRC_FIRST + 7)
+#define	MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT	(MIXERLINE_COMPONENTTYPE_SRC_FIRST + 8)
+#define	MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY	(MIXERLINE_COMPONENTTYPE_SRC_FIRST + 9)
+#define	MIXERLINE_COMPONENTTYPE_SRC_ANALOG	(MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10)
+#define	MIXERLINE_COMPONENTTYPE_SRC_LAST	(MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10)
+
+/*  MIXERLINE.Target.dwType */
+#define	MIXERLINE_TARGETTYPE_UNDEFINED	0
+#define	MIXERLINE_TARGETTYPE_WAVEOUT	1
+#define	MIXERLINE_TARGETTYPE_WAVEIN	2
+#define	MIXERLINE_TARGETTYPE_MIDIOUT	3
+#define	MIXERLINE_TARGETTYPE_MIDIIN	4
+#define MIXERLINE_TARGETTYPE_AUX	5
+
+typedef struct tagMIXERLINEA {
+    DWORD	cbStruct;
+    DWORD	dwDestination;
+    DWORD	dwSource;
+    DWORD	dwLineID;
+    DWORD	fdwLine;
+    DWORD	dwUser;
+    DWORD	dwComponentType;
+    DWORD	cChannels;
+    DWORD	cConnections;
+    DWORD	cControls;
+    CHAR	szShortName[MIXER_SHORT_NAME_CHARS];
+    CHAR	szName[MIXER_LONG_NAME_CHARS];
+    struct {
+	DWORD	dwType;
+	DWORD	dwDeviceID;
+	WORD	wMid;
+	WORD	wPid;
+	MMVERSION	vDriverVersion;
+	CHAR	szPname[MAXPNAMELEN];
+    } Target;
+} MIXERLINEA, *LPMIXERLINEA;
+
+typedef struct tagMIXERLINEW {
+    DWORD	cbStruct;
+    DWORD	dwDestination;
+    DWORD	dwSource;
+    DWORD	dwLineID;
+    DWORD	fdwLine;
+    DWORD	dwUser;
+    DWORD	dwComponentType;
+    DWORD	cChannels;
+    DWORD	cConnections;
+    DWORD	cControls;
+    WCHAR	szShortName[MIXER_SHORT_NAME_CHARS];
+    WCHAR	szName[MIXER_LONG_NAME_CHARS];
+    struct {
+	DWORD	dwType;
+	DWORD	dwDeviceID;
+	WORD	wMid;
+	WORD	wPid;
+	MMVERSION	vDriverVersion;
+	WCHAR	szPname[MAXPNAMELEN];
+    } Target;
+} MIXERLINEW, *LPMIXERLINEW;
+
+DECL_WINELIB_TYPE_AW(MIXERLINE)
+DECL_WINELIB_TYPE_AW(LPMIXERLINE)
+
+/*  MIXERCONTROL.fdwControl */
+#define	MIXERCONTROL_CONTROLF_UNIFORM		0x00000001L
+#define	MIXERCONTROL_CONTROLF_MULTIPLE		0x00000002L
+#define	MIXERCONTROL_CONTROLF_DISABLED		0x80000000L
+
+/*  MIXERCONTROL_CONTROLTYPE_xxx building block defines */
+#define	MIXERCONTROL_CT_CLASS_MASK		0xF0000000L
+#define	MIXERCONTROL_CT_CLASS_CUSTOM		0x00000000L
+#define	MIXERCONTROL_CT_CLASS_METER		0x10000000L
+#define	MIXERCONTROL_CT_CLASS_SWITCH		0x20000000L
+#define	MIXERCONTROL_CT_CLASS_NUMBER		0x30000000L
+#define	MIXERCONTROL_CT_CLASS_SLIDER		0x40000000L
+#define	MIXERCONTROL_CT_CLASS_FADER		0x50000000L
+#define	MIXERCONTROL_CT_CLASS_TIME		0x60000000L
+#define	MIXERCONTROL_CT_CLASS_LIST		0x70000000L
+
+#define	MIXERCONTROL_CT_SUBCLASS_MASK		0x0F000000L
+
+#define	MIXERCONTROL_CT_SC_SWITCH_BOOLEAN	0x00000000L
+#define	MIXERCONTROL_CT_SC_SWITCH_BUTTON	0x01000000L
+
+#define	MIXERCONTROL_CT_SC_METER_POLLED		0x00000000L
+
+#define	MIXERCONTROL_CT_SC_TIME_MICROSECS	0x00000000L
+#define	MIXERCONTROL_CT_SC_TIME_MILLISECS	0x01000000L
+
+#define	MIXERCONTROL_CT_SC_LIST_SINGLE		0x00000000L
+#define	MIXERCONTROL_CT_SC_LIST_MULTIPLE	0x01000000L
+
+#define	MIXERCONTROL_CT_UNITS_MASK		0x00FF0000L
+#define	MIXERCONTROL_CT_UNITS_CUSTOM		0x00000000L
+#define	MIXERCONTROL_CT_UNITS_BOOLEAN		0x00010000L
+#define	MIXERCONTROL_CT_UNITS_SIGNED		0x00020000L
+#define	MIXERCONTROL_CT_UNITS_UNSIGNED		0x00030000L
+#define	MIXERCONTROL_CT_UNITS_DECIBELS		0x00040000L /* in 10ths */
+#define	MIXERCONTROL_CT_UNITS_PERCENT		0x00050000L /* in 10ths */
+
+/*  Commonly used control types for specifying MIXERCONTROL.dwControlType */
+#define MIXERCONTROL_CONTROLTYPE_CUSTOM		(MIXERCONTROL_CT_CLASS_CUSTOM | MIXERCONTROL_CT_UNITS_CUSTOM)
+#define MIXERCONTROL_CONTROLTYPE_BOOLEANMETER	(MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_BOOLEAN)
+#define MIXERCONTROL_CONTROLTYPE_SIGNEDMETER	(MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_SIGNED)
+#define MIXERCONTROL_CONTROLTYPE_PEAKMETER	(MIXERCONTROL_CONTROLTYPE_SIGNEDMETER + 1)
+#define MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER	(MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_UNSIGNED)
+#define MIXERCONTROL_CONTROLTYPE_BOOLEAN	(MIXERCONTROL_CT_CLASS_SWITCH | MIXERCONTROL_CT_SC_SWITCH_BOOLEAN | MIXERCONTROL_CT_UNITS_BOOLEAN)
+#define MIXERCONTROL_CONTROLTYPE_ONOFF		(MIXERCONTROL_CONTROLTYPE_BOOLEAN + 1)
+#define MIXERCONTROL_CONTROLTYPE_MUTE		(MIXERCONTROL_CONTROLTYPE_BOOLEAN + 2)
+#define MIXERCONTROL_CONTROLTYPE_MONO		(MIXERCONTROL_CONTROLTYPE_BOOLEAN + 3)
+#define MIXERCONTROL_CONTROLTYPE_LOUDNESS	(MIXERCONTROL_CONTROLTYPE_BOOLEAN + 4)
+#define MIXERCONTROL_CONTROLTYPE_STEREOENH	(MIXERCONTROL_CONTROLTYPE_BOOLEAN + 5)
+#define MIXERCONTROL_CONTROLTYPE_BASS_BOOST     (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 0x00002277)
+#define MIXERCONTROL_CONTROLTYPE_BUTTON		(MIXERCONTROL_CT_CLASS_SWITCH | MIXERCONTROL_CT_SC_SWITCH_BUTTON | MIXERCONTROL_CT_UNITS_BOOLEAN)
+#define MIXERCONTROL_CONTROLTYPE_DECIBELS	(MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_DECIBELS)
+#define MIXERCONTROL_CONTROLTYPE_SIGNED		(MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_SIGNED)
+#define MIXERCONTROL_CONTROLTYPE_UNSIGNED	(MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_UNSIGNED)
+#define MIXERCONTROL_CONTROLTYPE_PERCENT	(MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_PERCENT)
+#define MIXERCONTROL_CONTROLTYPE_SLIDER		(MIXERCONTROL_CT_CLASS_SLIDER | MIXERCONTROL_CT_UNITS_SIGNED)
+#define MIXERCONTROL_CONTROLTYPE_PAN		(MIXERCONTROL_CONTROLTYPE_SLIDER + 1)
+#define MIXERCONTROL_CONTROLTYPE_QSOUNDPAN	(MIXERCONTROL_CONTROLTYPE_SLIDER + 2)
+#define MIXERCONTROL_CONTROLTYPE_FADER		(MIXERCONTROL_CT_CLASS_FADER | MIXERCONTROL_CT_UNITS_UNSIGNED)
+#define MIXERCONTROL_CONTROLTYPE_VOLUME		(MIXERCONTROL_CONTROLTYPE_FADER + 1)
+#define MIXERCONTROL_CONTROLTYPE_BASS		(MIXERCONTROL_CONTROLTYPE_FADER + 2)
+#define MIXERCONTROL_CONTROLTYPE_TREBLE		(MIXERCONTROL_CONTROLTYPE_FADER + 3)
+#define MIXERCONTROL_CONTROLTYPE_EQUALIZER	(MIXERCONTROL_CONTROLTYPE_FADER + 4)
+#define MIXERCONTROL_CONTROLTYPE_SINGLESELECT	(MIXERCONTROL_CT_CLASS_LIST | MIXERCONTROL_CT_SC_LIST_SINGLE | MIXERCONTROL_CT_UNITS_BOOLEAN)
+#define MIXERCONTROL_CONTROLTYPE_MUX		(MIXERCONTROL_CONTROLTYPE_SINGLESELECT + 1)
+#define MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT	(MIXERCONTROL_CT_CLASS_LIST | MIXERCONTROL_CT_SC_LIST_MULTIPLE | MIXERCONTROL_CT_UNITS_BOOLEAN)
+#define MIXERCONTROL_CONTROLTYPE_MIXER		(MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT + 1)
+#define MIXERCONTROL_CONTROLTYPE_MICROTIME	(MIXERCONTROL_CT_CLASS_TIME | MIXERCONTROL_CT_SC_TIME_MICROSECS | MIXERCONTROL_CT_UNITS_UNSIGNED)
+#define MIXERCONTROL_CONTROLTYPE_MILLITIME	(MIXERCONTROL_CT_CLASS_TIME | MIXERCONTROL_CT_SC_TIME_MILLISECS | MIXERCONTROL_CT_UNITS_UNSIGNED)
+
+
+typedef struct tagMIXERCONTROLA {
+    DWORD		cbStruct;
+    DWORD		dwControlID;
+    DWORD		dwControlType;
+    DWORD		fdwControl;
+    DWORD		cMultipleItems;
+    CHAR		szShortName[MIXER_SHORT_NAME_CHARS];
+    CHAR		szName[MIXER_LONG_NAME_CHARS];
+    union {
+	struct {
+	    LONG	lMinimum;
+	    LONG	lMaximum;
+	} DUMMYSTRUCTNAME;
+	struct {
+	    DWORD	dwMinimum;
+	    DWORD	dwMaximum;
+	} DUMMYSTRUCTNAME1;
+	DWORD       	dwReserved[6];
+    } Bounds;
+    union {
+	DWORD		cSteps;
+	DWORD		cbCustomData;
+	DWORD		dwReserved[6];
+    } Metrics;
+} MIXERCONTROLA, *LPMIXERCONTROLA;
+
+typedef struct MIXERCONTROLW {
+    DWORD		cbStruct;
+    DWORD		dwControlID;
+    DWORD		dwControlType;
+    DWORD		fdwControl;
+    DWORD		cMultipleItems;
+    WCHAR		szShortName[MIXER_SHORT_NAME_CHARS];
+    WCHAR		szName[MIXER_LONG_NAME_CHARS];
+    union {
+	struct {
+	    LONG	lMinimum;
+	    LONG	lMaximum;
+	} DUMMYSTRUCTNAME;
+	struct {
+	    DWORD	dwMinimum;
+	    DWORD	dwMaximum;
+	} DUMMYSTRUCTNAME1;
+	DWORD       	dwReserved[6];
+    } Bounds;
+    union {
+	DWORD		cSteps;
+	DWORD		cbCustomData;
+	DWORD		dwReserved[6];
+    } Metrics;
+} MIXERCONTROLW, *LPMIXERCONTROLW;
+
+DECL_WINELIB_TYPE_AW(MIXERCONTROL)
+DECL_WINELIB_TYPE_AW(LPMIXERCONTROL)
+
+typedef struct tagMIXERLINECONTROLSA {
+    DWORD	cbStruct;
+    DWORD	dwLineID;
+    union {
+	DWORD	dwControlID;
+	DWORD	dwControlType;
+    } DUMMYUNIONNAME;
+    DWORD	cControls;
+    DWORD	cbmxctrl;
+    LPMIXERCONTROLA	pamxctrl;
+} MIXERLINECONTROLSA, *LPMIXERLINECONTROLSA;
+
+typedef struct tagMIXERLINECONTROLSW {
+    DWORD	cbStruct;
+    DWORD	dwLineID;
+    union {
+	DWORD	dwControlID;
+	DWORD	dwControlType;
+    } DUMMYUNIONNAME;
+    DWORD	cControls;
+    DWORD	cbmxctrl;
+    LPMIXERCONTROLW	pamxctrl;
+} MIXERLINECONTROLSW, *LPMIXERLINECONTROLSW;
+
+DECL_WINELIB_TYPE_AW(MIXERLINECONTROLS)
+DECL_WINELIB_TYPE_AW(LPMIXERLINECONTROLS)
+
+typedef struct tMIXERCONTROLDETAILS {
+    DWORD	cbStruct;
+    DWORD	dwControlID;
+    DWORD	cChannels;
+    union {
+        HWND	hwndOwner;
+        DWORD	cMultipleItems;
+    } DUMMYUNIONNAME;
+    DWORD	cbDetails;
+    LPVOID	paDetails;
+} MIXERCONTROLDETAILS,*LPMIXERCONTROLDETAILS;
+
+typedef struct tagMIXERCONTROLDETAILS_LISTTEXTA {
+    DWORD	dwParam1;
+    DWORD	dwParam2;
+    CHAR	szName[MIXER_LONG_NAME_CHARS];
+} MIXERCONTROLDETAILS_LISTTEXTA,*LPMIXERCONTROLDETAILS_LISTTEXTA;
+
+typedef struct tagMIXERCONTROLDETAILS_LISTTEXTW {
+    DWORD	dwParam1;
+    DWORD	dwParam2;
+    WCHAR	szName[MIXER_LONG_NAME_CHARS];
+} MIXERCONTROLDETAILS_LISTTEXTW,*LPMIXERCONTROLDETAILS_LISTTEXTW;
+
+DECL_WINELIB_TYPE_AW(MIXERCONTROLDETAILS_LISTTEXT)
+DECL_WINELIB_TYPE_AW(LPMIXERCONTROLDETAILS_LISTTEXT)
+
+/*  MIXER_GETCONTROLDETAILSF_VALUE */
+typedef struct {
+	LONG	fValue;
+} MIXERCONTROLDETAILS_BOOLEAN,*LPMIXERCONTROLDETAILS_BOOLEAN;
+
+typedef struct {
+	LONG	lValue;
+} MIXERCONTROLDETAILS_SIGNED,*LPMIXERCONTROLDETAILS_SIGNED;
+
+typedef struct {
+	DWORD	dwValue;
+} MIXERCONTROLDETAILS_UNSIGNED,*LPMIXERCONTROLDETAILS_UNSIGNED;
+
+/* bits passed to mixerGetLineInfo.fdwInfo */
+#define MIXER_GETLINEINFOF_DESTINATION		0x00000000L
+#define MIXER_GETLINEINFOF_SOURCE		0x00000001L
+#define MIXER_GETLINEINFOF_LINEID		0x00000002L
+#define MIXER_GETLINEINFOF_COMPONENTTYPE	0x00000003L
+#define MIXER_GETLINEINFOF_TARGETTYPE		0x00000004L
+#define MIXER_GETLINEINFOF_QUERYMASK		0x0000000FL
+
+/* bitmask passed to mixerGetLineControl */
+#define MIXER_GETLINECONTROLSF_ALL		0x00000000L
+#define MIXER_GETLINECONTROLSF_ONEBYID		0x00000001L
+#define MIXER_GETLINECONTROLSF_ONEBYTYPE	0x00000002L
+#define MIXER_GETLINECONTROLSF_QUERYMASK	0x0000000FL
+
+/* bitmask passed to mixerGetControlDetails */
+#define MIXER_GETCONTROLDETAILSF_VALUE		0x00000000L
+#define MIXER_GETCONTROLDETAILSF_LISTTEXT	0x00000001L
+#define MIXER_GETCONTROLDETAILSF_QUERYMASK	0x0000000FL
+
+/* bitmask passed to mixerSetControlDetails */
+#define	MIXER_SETCONTROLDETAILSF_VALUE		0x00000000L
+#define	MIXER_SETCONTROLDETAILSF_CUSTOM		0x00000001L
+#define	MIXER_SETCONTROLDETAILSF_QUERYMASK	0x0000000FL
+
+UINT		WINAPI	mixerGetNumDevs(void);
+UINT           WINAPI  mixerOpen(LPHMIXER,UINT,DWORD_PTR,DWORD_PTR,DWORD);
+UINT		WINAPI	mixerClose(HMIXER);
+DWORD           WINAPI  mixerMessage(HMIXER,UINT,DWORD_PTR,DWORD_PTR);
+UINT           WINAPI  mixerGetDevCapsA(UINT_PTR,LPMIXERCAPSA,UINT);
+UINT           WINAPI  mixerGetDevCapsW(UINT_PTR,LPMIXERCAPSW,UINT);
+#define 		mixerGetDevCaps WINELIB_NAME_AW(mixerGetDevCaps)
+UINT		WINAPI	mixerGetLineInfoA(HMIXEROBJ,LPMIXERLINEA,DWORD);
+UINT		WINAPI	mixerGetLineInfoW(HMIXEROBJ,LPMIXERLINEW,DWORD);
+#define 		mixerGetLineInfo WINELIB_NAME_AW(mixerGetLineInfo)
+UINT		WINAPI	mixerGetID(HMIXEROBJ,LPUINT,DWORD);
+UINT		WINAPI	mixerGetLineControlsA(HMIXEROBJ,LPMIXERLINECONTROLSA,DWORD);
+UINT		WINAPI	mixerGetLineControlsW(HMIXEROBJ,LPMIXERLINECONTROLSW,DWORD);
+#define 		mixerGetLineControls WINELIB_NAME_AW(mixerGetLineControls)
+UINT		WINAPI	mixerGetControlDetailsA(HMIXEROBJ,LPMIXERCONTROLDETAILS,DWORD);
+UINT		WINAPI	mixerGetControlDetailsW(HMIXEROBJ,LPMIXERCONTROLDETAILS,DWORD);
+#define 		mixerGetControlDetails WINELIB_NAME_AW(mixerGetControlDetails)
+UINT		WINAPI	mixerSetControlDetails(HMIXEROBJ,LPMIXERCONTROLDETAILS,DWORD);
+
+#define MMIOERR_BASE            256
+#define MMIOERR_FILENOTFOUND    (MMIOERR_BASE + 1)  /* file not found */
+#define MMIOERR_OUTOFMEMORY     (MMIOERR_BASE + 2)  /* out of memory */
+#define MMIOERR_CANNOTOPEN      (MMIOERR_BASE + 3)  /* cannot open */
+#define MMIOERR_CANNOTCLOSE     (MMIOERR_BASE + 4)  /* cannot close */
+#define MMIOERR_CANNOTREAD      (MMIOERR_BASE + 5)  /* cannot read */
+#define MMIOERR_CANNOTWRITE     (MMIOERR_BASE + 6)  /* cannot write */
+#define MMIOERR_CANNOTSEEK      (MMIOERR_BASE + 7)  /* cannot seek */
+#define MMIOERR_CANNOTEXPAND    (MMIOERR_BASE + 8)  /* cannot expand file */
+#define MMIOERR_CHUNKNOTFOUND   (MMIOERR_BASE + 9)  /* chunk not found */
+#define MMIOERR_UNBUFFERED      (MMIOERR_BASE + 10) /* file is unbuffered */
+#define MMIOERR_PATHNOTFOUND     (MMIOERR_BASE + 11)
+#define MMIOERR_ACCESSDENIED     (MMIOERR_BASE + 12)
+#define MMIOERR_SHARINGVIOLATION (MMIOERR_BASE + 13)
+#define MMIOERR_NETWORKERROR     (MMIOERR_BASE + 14)
+#define MMIOERR_TOOMANYOPENFILES (MMIOERR_BASE + 15)
+#define MMIOERR_INVALIDFILE      (MMIOERR_BASE + 16)
+
+#define CFSEPCHAR       '+'             /* compound file name separator char. */
+
+typedef DWORD           FOURCC;         /* a four character code */
+typedef LRESULT (CALLBACK *LPMMIOPROC)  (LPSTR lpmmioinfo, UINT uMessage,
+					 LPARAM lParam1, LPARAM lParam2);
+
+typedef struct _MMIOINFO {
+        DWORD		dwFlags;
+        FOURCC		fccIOProc;
+        LPMMIOPROC	pIOProc;
+        UINT		wErrorRet;
+        HTASK		hTask;
+        /* fields maintained by MMIO functions during buffered I/O */
+        LONG		cchBuffer;
+        HPSTR		pchBuffer;
+        HPSTR		pchNext;
+        HPSTR		pchEndRead;
+        HPSTR		pchEndWrite;
+        LONG		lBufOffset;
+        /* fields maintained by I/O procedure */
+        LONG		lDiskOffset;
+        DWORD		adwInfo[3];
+        /* other fields maintained by MMIO */
+        DWORD		dwReserved1;
+        DWORD		dwReserved2;
+        HMMIO		hmmio;
+} MMIOINFO, *PMMIOINFO, *LPMMIOINFO;
+
+
+typedef struct _MMCKINFO
+{
+        FOURCC          ckid;           /* chunk ID */
+        DWORD           cksize;         /* chunk size */
+        FOURCC          fccType;        /* form type or list type */
+        DWORD           dwDataOffset;   /* offset of data portion of chunk */
+        DWORD           dwFlags;        /* flags used by MMIO functions */
+} MMCKINFO, *LPMMCKINFO;
+
+#define MMIO_RWMODE     0x00000003      /* open file for reading/writing/both */
+#define MMIO_SHAREMODE  0x00000070      /* file sharing mode number */
+
+#define MMIO_CREATE     0x00001000      /* create new file (or truncate file) */
+#define MMIO_PARSE      0x00000100      /* parse new file returning path */
+#define MMIO_DELETE     0x00000200      /* create new file (or truncate file) */
+#define MMIO_EXIST      0x00004000      /* checks for existence of file */
+#define MMIO_ALLOCBUF   0x00010000      /* mmioOpen() should allocate a buffer */
+#define MMIO_GETTEMP    0x00020000      /* mmioOpen() should retrieve temp name */
+
+#define MMIO_DIRTY      0x10000000      /* I/O buffer is dirty */
+
+#define MMIO_READ       0x00000000      /* open file for reading only */
+#define MMIO_WRITE      0x00000001      /* open file for writing only */
+#define MMIO_READWRITE  0x00000002      /* open file for reading and writing */
+
+#define MMIO_COMPAT     0x00000000      /* compatibility mode */
+#define MMIO_EXCLUSIVE  0x00000010      /* exclusive-access mode */
+#define MMIO_DENYWRITE  0x00000020      /* deny writing to other processes */
+#define MMIO_DENYREAD   0x00000030      /* deny reading to other processes */
+#define MMIO_DENYNONE   0x00000040      /* deny nothing to other processes */
+
+#define MMIO_FHOPEN             0x0010  /* mmioClose: keep file handle open */
+#define MMIO_EMPTYBUF           0x0010  /* mmioFlush: empty the I/O buffer */
+#define MMIO_TOUPPER            0x0010  /* mmioStringToFOURCC: to u-case */
+#define MMIO_INSTALLPROC    0x00010000  /* mmioInstallIOProc: install MMIOProc */
+#define MMIO_GLOBALPROC     0x10000000  /* mmioInstallIOProc: install globally */
+#define MMIO_REMOVEPROC     0x00020000  /* mmioInstallIOProc: remove MMIOProc */
+#define MMIO_FINDPROC       0x00040000  /* mmioInstallIOProc: find an MMIOProc */
+#define MMIO_FINDCHUNK          0x0010  /* mmioDescend: find a chunk by ID */
+#define MMIO_FINDRIFF           0x0020  /* mmioDescend: find a LIST chunk */
+#define MMIO_FINDLIST           0x0040  /* mmioDescend: find a RIFF chunk */
+#define MMIO_CREATERIFF         0x0020  /* mmioCreateChunk: make a LIST chunk */
+#define MMIO_CREATELIST         0x0040  /* mmioCreateChunk: make a RIFF chunk */
+
+#ifndef SEEK_SET
+#define SEEK_SET   0
+#define SEEK_CUR   1
+#define SEEK_END   2
+#endif  /* SEEK_SET */
+
+#define MMIOM_READ      MMIO_READ       /* read */
+#define MMIOM_WRITE    MMIO_WRITE       /* write */
+#define MMIOM_SEEK              2       /* seek to a new position in file */
+#define MMIOM_OPEN              3       /* open file */
+#define MMIOM_CLOSE             4       /* close file */
+#define MMIOM_WRITEFLUSH        5       /* write and flush */
+
+#define MMIOM_RENAME            6       /* rename specified file */
+
+#define MMIOM_USER         0x8000       /* beginning of user-defined messages */
+
+#define FOURCC_RIFF     mmioFOURCC('R', 'I', 'F', 'F')
+#define FOURCC_LIST     mmioFOURCC('L', 'I', 'S', 'T')
+
+#define FOURCC_DOS      mmioFOURCC('D', 'O', 'S', ' ')
+#define FOURCC_MEM      mmioFOURCC('M', 'E', 'M', ' ')
+
+#define MMIO_DEFAULTBUFFER      8192    /* default buffer size */
+
+#define mmioFOURCC( ch0, ch1, ch2, ch3 )                                \
+                ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) |    \
+                ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )
+
+LPMMIOPROC 	WINAPI 	mmioInstallIOProcA(FOURCC,LPMMIOPROC,DWORD);
+LPMMIOPROC 	WINAPI 	mmioInstallIOProcW(FOURCC,LPMMIOPROC,DWORD);
+#define      		mmioInstallIOProc WINELIB_NAME_AW(mmioInstallIOProc)
+
+FOURCC 		WINAPI	mmioStringToFOURCCA(LPCSTR,UINT);
+FOURCC 		WINAPI	mmioStringToFOURCCW(LPCWSTR,UINT);
+#define 		mmioStringToFOURCC WINELIB_NAME_AW(mmioStringToFOURCC)
+HMMIO		WINAPI	mmioOpenA(LPSTR,MMIOINFO*,DWORD);
+HMMIO		WINAPI	mmioOpenW(LPWSTR,MMIOINFO*,DWORD);
+#define			mmioOpen WINELIB_NAME_AW(mmioOpen)
+
+MMRESULT	WINAPI	mmioRenameA(LPCSTR szFileName, LPCSTR szNewFileName,
+				    const MMIOINFO * lpmmioinfo, DWORD dwRenameFlags);
+MMRESULT	WINAPI	mmioRenameW(LPCWSTR szFileName, LPCWSTR szNewFileName,
+				    const MMIOINFO * lpmmioinfo, DWORD dwRenameFlags);
+#define 		mmioRename WINELIB_NAME_AW(mmioRename)
+
+MMRESULT 	WINAPI	mmioClose(HMMIO,UINT);
+LONG 		WINAPI	mmioRead(HMMIO,HPSTR,LONG);
+LONG 		WINAPI	mmioWrite(HMMIO,HPCSTR,LONG);
+LONG 		WINAPI	mmioSeek(HMMIO,LONG,INT);
+MMRESULT 	WINAPI	mmioGetInfo(HMMIO,MMIOINFO*,UINT);
+MMRESULT 	WINAPI	mmioSetInfo(HMMIO,const MMIOINFO*,UINT);
+MMRESULT	WINAPI	mmioSetBuffer(HMMIO,LPSTR,LONG,UINT);
+MMRESULT	WINAPI	mmioFlush(HMMIO,UINT);
+MMRESULT	WINAPI	mmioAdvance(HMMIO,MMIOINFO*,UINT);
+LRESULT		WINAPI	mmioSendMessage(HMMIO,UINT,LPARAM,LPARAM);
+MMRESULT	WINAPI	mmioDescend(HMMIO,MMCKINFO*,const MMCKINFO*,UINT);
+MMRESULT	WINAPI	mmioAscend(HMMIO,MMCKINFO*,UINT);
+MMRESULT	WINAPI	mmioCreateChunk(HMMIO,MMCKINFO*,UINT);
+
+typedef UINT (CALLBACK *YIELDPROC)(MCIDEVICEID,DWORD);
+
+BOOL            WINAPI  mciExecute(LPCSTR);
+DWORD           WINAPI  mciSendCommandA(MCIDEVICEID,UINT,DWORD_PTR,DWORD_PTR);
+DWORD           WINAPI  mciSendCommandW(MCIDEVICEID,UINT,DWORD_PTR,DWORD_PTR);
+#define 		mciSendCommand WINELIB_NAME_AW(mciSendCommand)
+DWORD		WINAPI	mciSendStringA(LPCSTR,LPSTR,UINT,HWND);
+DWORD		WINAPI	mciSendStringW(LPCWSTR,LPWSTR,UINT,HWND);
+#define 		mciSendString WINELIB_NAME_AW(mciSendString)
+MCIDEVICEID	WINAPI	mciGetDeviceIDA(LPCSTR);
+MCIDEVICEID	WINAPI	mciGetDeviceIDW(LPCWSTR);
+#define 		mciGetDeviceID WINELIB_NAME_AW(mciGetDeviceID)
+MCIDEVICEID     WINAPI  mciGetDeviceIDFromElementIDA(DWORD,LPCSTR);
+MCIDEVICEID     WINAPI  mciGetDeviceIDFromElementIDW(DWORD,LPCWSTR);
+#define                 mciGetDeviceIDFromElementID WINELIB_NAME_AW(mciGetDeviceIDFromElementID)
+BOOL            WINAPI  mciGetErrorStringA(MCIERROR,LPSTR,UINT);
+BOOL            WINAPI  mciGetErrorStringW(MCIERROR,LPWSTR,UINT);
+#define 		mciGetErrorString WINELIB_NAME_AW(mciGetErrorString)
+BOOL            WINAPI  mciSetYieldProc(MCIDEVICEID,YIELDPROC,DWORD);
+HTASK           WINAPI  mciGetCreatorTask(MCIDEVICEID);
+YIELDPROC       WINAPI  mciGetYieldProc(MCIDEVICEID,DWORD*);
+
+#define MCIERR_INVALID_DEVICE_ID        (MCIERR_BASE + 1)
+#define MCIERR_UNRECOGNIZED_KEYWORD     (MCIERR_BASE + 3)
+#define MCIERR_UNRECOGNIZED_COMMAND     (MCIERR_BASE + 5)
+#define MCIERR_HARDWARE                 (MCIERR_BASE + 6)
+#define MCIERR_INVALID_DEVICE_NAME      (MCIERR_BASE + 7)
+#define MCIERR_OUT_OF_MEMORY            (MCIERR_BASE + 8)
+#define MCIERR_DEVICE_OPEN              (MCIERR_BASE + 9)
+#define MCIERR_CANNOT_LOAD_DRIVER       (MCIERR_BASE + 10)
+#define MCIERR_MISSING_COMMAND_STRING   (MCIERR_BASE + 11)
+#define MCIERR_PARAM_OVERFLOW           (MCIERR_BASE + 12)
+#define MCIERR_MISSING_STRING_ARGUMENT  (MCIERR_BASE + 13)
+#define MCIERR_BAD_INTEGER              (MCIERR_BASE + 14)
+#define MCIERR_PARSER_INTERNAL          (MCIERR_BASE + 15)
+#define MCIERR_DRIVER_INTERNAL          (MCIERR_BASE + 16)
+#define MCIERR_MISSING_PARAMETER        (MCIERR_BASE + 17)
+#define MCIERR_UNSUPPORTED_FUNCTION     (MCIERR_BASE + 18)
+#define MCIERR_FILE_NOT_FOUND           (MCIERR_BASE + 19)
+#define MCIERR_DEVICE_NOT_READY         (MCIERR_BASE + 20)
+#define MCIERR_INTERNAL                 (MCIERR_BASE + 21)
+#define MCIERR_DRIVER                   (MCIERR_BASE + 22)
+#define MCIERR_CANNOT_USE_ALL           (MCIERR_BASE + 23)
+#define MCIERR_MULTIPLE                 (MCIERR_BASE + 24)
+#define MCIERR_EXTENSION_NOT_FOUND      (MCIERR_BASE + 25)
+#define MCIERR_OUTOFRANGE               (MCIERR_BASE + 26)
+#define MCIERR_FLAGS_NOT_COMPATIBLE     (MCIERR_BASE + 28)
+#define MCIERR_FILE_NOT_SAVED           (MCIERR_BASE + 30)
+#define MCIERR_DEVICE_TYPE_REQUIRED     (MCIERR_BASE + 31)
+#define MCIERR_DEVICE_LOCKED            (MCIERR_BASE + 32)
+#define MCIERR_DUPLICATE_ALIAS          (MCIERR_BASE + 33)
+#define MCIERR_BAD_CONSTANT             (MCIERR_BASE + 34)
+#define MCIERR_MUST_USE_SHAREABLE       (MCIERR_BASE + 35)
+#define MCIERR_MISSING_DEVICE_NAME      (MCIERR_BASE + 36)
+#define MCIERR_BAD_TIME_FORMAT          (MCIERR_BASE + 37)
+#define MCIERR_NO_CLOSING_QUOTE         (MCIERR_BASE + 38)
+#define MCIERR_DUPLICATE_FLAGS          (MCIERR_BASE + 39)
+#define MCIERR_INVALID_FILE             (MCIERR_BASE + 40)
+#define MCIERR_NULL_PARAMETER_BLOCK     (MCIERR_BASE + 41)
+#define MCIERR_UNNAMED_RESOURCE         (MCIERR_BASE + 42)
+#define MCIERR_NEW_REQUIRES_ALIAS       (MCIERR_BASE + 43)
+#define MCIERR_NOTIFY_ON_AUTO_OPEN      (MCIERR_BASE + 44)
+#define MCIERR_NO_ELEMENT_ALLOWED       (MCIERR_BASE + 45)
+#define MCIERR_NONAPPLICABLE_FUNCTION   (MCIERR_BASE + 46)
+#define MCIERR_ILLEGAL_FOR_AUTO_OPEN    (MCIERR_BASE + 47)
+#define MCIERR_FILENAME_REQUIRED        (MCIERR_BASE + 48)
+#define MCIERR_EXTRA_CHARACTERS         (MCIERR_BASE + 49)
+#define MCIERR_DEVICE_NOT_INSTALLED     (MCIERR_BASE + 50)
+#define MCIERR_GET_CD                   (MCIERR_BASE + 51)
+#define MCIERR_SET_CD                   (MCIERR_BASE + 52)
+#define MCIERR_SET_DRIVE                (MCIERR_BASE + 53)
+#define MCIERR_DEVICE_LENGTH            (MCIERR_BASE + 54)
+#define MCIERR_DEVICE_ORD_LENGTH        (MCIERR_BASE + 55)
+#define MCIERR_NO_INTEGER               (MCIERR_BASE + 56)
+
+#define MCIERR_WAVE_OUTPUTSINUSE        (MCIERR_BASE + 64)
+#define MCIERR_WAVE_SETOUTPUTINUSE      (MCIERR_BASE + 65)
+#define MCIERR_WAVE_INPUTSINUSE         (MCIERR_BASE + 66)
+#define MCIERR_WAVE_SETINPUTINUSE       (MCIERR_BASE + 67)
+#define MCIERR_WAVE_OUTPUTUNSPECIFIED   (MCIERR_BASE + 68)
+#define MCIERR_WAVE_INPUTUNSPECIFIED    (MCIERR_BASE + 69)
+#define MCIERR_WAVE_OUTPUTSUNSUITABLE   (MCIERR_BASE + 70)
+#define MCIERR_WAVE_SETOUTPUTUNSUITABLE (MCIERR_BASE + 71)
+#define MCIERR_WAVE_INPUTSUNSUITABLE    (MCIERR_BASE + 72)
+#define MCIERR_WAVE_SETINPUTUNSUITABLE  (MCIERR_BASE + 73)
+
+#define MCIERR_SEQ_DIV_INCOMPATIBLE     (MCIERR_BASE + 80)
+#define MCIERR_SEQ_PORT_INUSE           (MCIERR_BASE + 81)
+#define MCIERR_SEQ_PORT_NONEXISTENT     (MCIERR_BASE + 82)
+#define MCIERR_SEQ_PORT_MAPNODEVICE     (MCIERR_BASE + 83)
+#define MCIERR_SEQ_PORT_MISCERROR       (MCIERR_BASE + 84)
+#define MCIERR_SEQ_TIMER                (MCIERR_BASE + 85)
+#define MCIERR_SEQ_PORTUNSPECIFIED      (MCIERR_BASE + 86)
+#define MCIERR_SEQ_NOMIDIPRESENT        (MCIERR_BASE + 87)
+
+#define MCIERR_NO_WINDOW                (MCIERR_BASE + 90)
+#define MCIERR_CREATEWINDOW             (MCIERR_BASE + 91)
+#define MCIERR_FILE_READ                (MCIERR_BASE + 92)
+#define MCIERR_FILE_WRITE               (MCIERR_BASE + 93)
+
+#define MCIERR_NO_IDENTITY		(MCIERR_BASE + 94)
+
+#define MCIERR_CUSTOM_DRIVER_BASE       (MCIERR_BASE + 256)
+
+#define MCI_OPEN_DRIVER			0x0801
+#define MCI_CLOSE_DRIVER		0x0802
+#define MCI_OPEN			0x0803
+#define MCI_CLOSE			0x0804
+#define MCI_ESCAPE                      0x0805
+#define MCI_PLAY                        0x0806
+#define MCI_SEEK                        0x0807
+#define MCI_STOP                        0x0808
+#define MCI_PAUSE                       0x0809
+#define MCI_INFO                        0x080A
+#define MCI_GETDEVCAPS                  0x080B
+#define MCI_SPIN                        0x080C
+#define MCI_SET                         0x080D
+#define MCI_STEP                        0x080E
+#define MCI_RECORD                      0x080F
+#define MCI_SYSINFO                     0x0810
+#define MCI_BREAK                       0x0811
+#define MCI_SOUND                       0x0812
+#define MCI_SAVE                        0x0813
+#define MCI_STATUS                      0x0814
+#define MCI_CUE                         0x0830
+#define MCI_REALIZE                     0x0840
+#define MCI_WINDOW                      0x0841
+#define MCI_PUT                         0x0842
+#define MCI_WHERE                       0x0843
+#define MCI_FREEZE                      0x0844
+#define MCI_UNFREEZE                    0x0845
+#define MCI_LOAD                        0x0850
+#define MCI_CUT                         0x0851
+#define MCI_COPY                        0x0852
+#define MCI_PASTE                       0x0853
+#define MCI_UPDATE                      0x0854
+#define MCI_RESUME                      0x0855
+#define MCI_DELETE                      0x0856
+
+#define MCI_USER_MESSAGES               (0x400 + DRV_MCI_FIRST)
+
+#define MCI_ALL_DEVICE_ID               0xFFFF
+
+#define MCI_DEVTYPE_VCR                 (MCI_STRING_OFFSET + 1)
+#define MCI_DEVTYPE_VIDEODISC           (MCI_STRING_OFFSET + 2)
+#define MCI_DEVTYPE_OVERLAY             (MCI_STRING_OFFSET + 3)
+#define MCI_DEVTYPE_CD_AUDIO            (MCI_STRING_OFFSET + 4)
+#define MCI_DEVTYPE_DAT                 (MCI_STRING_OFFSET + 5)
+#define MCI_DEVTYPE_SCANNER             (MCI_STRING_OFFSET + 6)
+#define MCI_DEVTYPE_ANIMATION           (MCI_STRING_OFFSET + 7)
+#define MCI_DEVTYPE_DIGITAL_VIDEO       (MCI_STRING_OFFSET + 8)
+#define MCI_DEVTYPE_OTHER               (MCI_STRING_OFFSET + 9)
+#define MCI_DEVTYPE_WAVEFORM_AUDIO      (MCI_STRING_OFFSET + 10)
+#define MCI_DEVTYPE_SEQUENCER           (MCI_STRING_OFFSET + 11)
+
+#define MCI_DEVTYPE_FIRST               MCI_DEVTYPE_VCR
+#define MCI_DEVTYPE_LAST                MCI_DEVTYPE_SEQUENCER
+
+#define MCI_MODE_NOT_READY              (MCI_STRING_OFFSET + 12)
+#define MCI_MODE_STOP                   (MCI_STRING_OFFSET + 13)
+#define MCI_MODE_PLAY                   (MCI_STRING_OFFSET + 14)
+#define MCI_MODE_RECORD                 (MCI_STRING_OFFSET + 15)
+#define MCI_MODE_SEEK                   (MCI_STRING_OFFSET + 16)
+#define MCI_MODE_PAUSE                  (MCI_STRING_OFFSET + 17)
+#define MCI_MODE_OPEN                   (MCI_STRING_OFFSET + 18)
+
+#define MCI_FORMAT_MILLISECONDS         0
+#define MCI_FORMAT_HMS                  1
+#define MCI_FORMAT_MSF                  2
+#define MCI_FORMAT_FRAMES               3
+#define MCI_FORMAT_SMPTE_24             4
+#define MCI_FORMAT_SMPTE_25             5
+#define MCI_FORMAT_SMPTE_30             6
+#define MCI_FORMAT_SMPTE_30DROP         7
+#define MCI_FORMAT_BYTES                8
+#define MCI_FORMAT_SAMPLES              9
+#define MCI_FORMAT_TMSF                 10
+
+#define MCI_MSF_MINUTE(msf)             ((BYTE)(msf))
+#define MCI_MSF_SECOND(msf)             ((BYTE)(((WORD)(msf)) >> 8))
+#define MCI_MSF_FRAME(msf)              ((BYTE)((msf)>>16))
+
+#define MCI_MAKE_MSF(m, s, f)           ((DWORD)(((BYTE)(m) | \
+                                                  ((WORD)(s)<<8)) | \
+                                                 (((DWORD)(BYTE)(f))<<16)))
+
+#define MCI_TMSF_TRACK(tmsf)            ((BYTE)(tmsf))
+#define MCI_TMSF_MINUTE(tmsf)           ((BYTE)(((WORD)(tmsf)) >> 8))
+#define MCI_TMSF_SECOND(tmsf)           ((BYTE)((tmsf)>>16))
+#define MCI_TMSF_FRAME(tmsf)            ((BYTE)((tmsf)>>24))
+
+#define MCI_MAKE_TMSF(t, m, s, f)       ((DWORD)(((BYTE)(t) | \
+                                                  ((WORD)(m)<<8)) | \
+                                                 (((DWORD)(BYTE)(s) | \
+                                                   ((WORD)(f)<<8))<<16)))
+
+#define MCI_HMS_HOUR(hms)               ((BYTE)(hms))
+#define MCI_HMS_MINUTE(hms)             ((BYTE)(((WORD)(hms)) >> 8))
+#define MCI_HMS_SECOND(hms)             ((BYTE)((hms)>>16))
+
+#define MCI_MAKE_HMS(h, m, s)           ((DWORD)(((BYTE)(h) | \
+                                                  ((WORD)(m)<<8)) | \
+                                                 (((DWORD)(BYTE)(s))<<16)))
+
+#define MCI_NOTIFY_SUCCESSFUL           0x0001
+#define MCI_NOTIFY_SUPERSEDED           0x0002
+#define MCI_NOTIFY_ABORTED              0x0004
+#define MCI_NOTIFY_FAILURE              0x0008
+
+#define MCI_NOTIFY                      0x00000001L
+#define MCI_WAIT                        0x00000002L
+#define MCI_FROM                        0x00000004L
+#define MCI_TO                          0x00000008L
+#define MCI_TRACK                       0x00000010L
+
+#define MCI_OPEN_SHAREABLE              0x00000100L
+#define MCI_OPEN_ELEMENT                0x00000200L
+#define MCI_OPEN_ALIAS                  0x00000400L
+#define MCI_OPEN_ELEMENT_ID             0x00000800L
+#define MCI_OPEN_TYPE_ID                0x00001000L
+#define MCI_OPEN_TYPE                   0x00002000L
+
+#define MCI_SEEK_TO_START               0x00000100L
+#define MCI_SEEK_TO_END                 0x00000200L
+
+#define MCI_STATUS_ITEM                 0x00000100L
+#define MCI_STATUS_START                0x00000200L
+
+#define MCI_STATUS_LENGTH               0x00000001L
+#define MCI_STATUS_POSITION             0x00000002L
+#define MCI_STATUS_NUMBER_OF_TRACKS     0x00000003L
+#define MCI_STATUS_MODE                 0x00000004L
+#define MCI_STATUS_MEDIA_PRESENT        0x00000005L
+#define MCI_STATUS_TIME_FORMAT          0x00000006L
+#define MCI_STATUS_READY                0x00000007L
+#define MCI_STATUS_CURRENT_TRACK        0x00000008L
+
+#define MCI_INFO_PRODUCT                0x00000100L
+#define MCI_INFO_FILE                   0x00000200L
+#define MCI_INFO_MEDIA_UPC              0x00000400L
+#define MCI_INFO_MEDIA_IDENTITY         0x00000800L
+#define MCI_INFO_NAME                   0x00001000L
+#define MCI_INFO_COPYRIGHT              0x00002000L
+
+#define MCI_GETDEVCAPS_ITEM             0x00000100L
+
+#define MCI_GETDEVCAPS_CAN_RECORD       0x00000001L
+#define MCI_GETDEVCAPS_HAS_AUDIO        0x00000002L
+#define MCI_GETDEVCAPS_HAS_VIDEO        0x00000003L
+#define MCI_GETDEVCAPS_DEVICE_TYPE      0x00000004L
+#define MCI_GETDEVCAPS_USES_FILES       0x00000005L
+#define MCI_GETDEVCAPS_COMPOUND_DEVICE  0x00000006L
+#define MCI_GETDEVCAPS_CAN_EJECT        0x00000007L
+#define MCI_GETDEVCAPS_CAN_PLAY         0x00000008L
+#define MCI_GETDEVCAPS_CAN_SAVE         0x00000009L
+
+#define MCI_SYSINFO_QUANTITY            0x00000100L
+#define MCI_SYSINFO_OPEN                0x00000200L
+#define MCI_SYSINFO_NAME                0x00000400L
+#define MCI_SYSINFO_INSTALLNAME         0x00000800L
+
+#define MCI_SET_DOOR_OPEN               0x00000100L
+#define MCI_SET_DOOR_CLOSED             0x00000200L
+#define MCI_SET_TIME_FORMAT             0x00000400L
+#define MCI_SET_AUDIO                   0x00000800L
+#define MCI_SET_VIDEO                   0x00001000L
+#define MCI_SET_ON                      0x00002000L
+#define MCI_SET_OFF                     0x00004000L
+
+#define MCI_SET_AUDIO_ALL               0x00000000L
+#define MCI_SET_AUDIO_LEFT              0x00000001L
+#define MCI_SET_AUDIO_RIGHT             0x00000002L
+
+#define MCI_BREAK_KEY                   0x00000100L
+#define MCI_BREAK_HWND                  0x00000200L
+#define MCI_BREAK_OFF                   0x00000400L
+
+#define MCI_RECORD_INSERT               0x00000100L
+#define MCI_RECORD_OVERWRITE            0x00000200L
+
+#define MCI_SOUND_NAME                  0x00000100L
+
+#define MCI_SAVE_FILE                   0x00000100L
+
+#define MCI_LOAD_FILE                   0x00000100L
+
+typedef struct tagMCI_GENERIC_PARMS {
+       DWORD_PTR dwCallback;
+} MCI_GENERIC_PARMS, *LPMCI_GENERIC_PARMS;
+
+typedef struct tagMCI_OPEN_PARMSA {
+       DWORD_PTR       dwCallback;
+	MCIDEVICEID	wDeviceID;
+	LPCSTR		lpstrDeviceType;
+	LPCSTR		lpstrElementName;
+	LPCSTR		lpstrAlias;
+} MCI_OPEN_PARMSA, *LPMCI_OPEN_PARMSA;
+
+typedef struct tagMCI_OPEN_PARMSW {
+       DWORD_PTR       dwCallback;
+	MCIDEVICEID	wDeviceID;
+	LPCWSTR		lpstrDeviceType;
+	LPCWSTR		lpstrElementName;
+	LPCWSTR		lpstrAlias;
+} MCI_OPEN_PARMSW, *LPMCI_OPEN_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_OPEN_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_OPEN_PARMS)
+
+typedef struct tagMCI_PLAY_PARMS{
+       DWORD_PTR dwCallback;
+	DWORD   dwFrom;
+	DWORD   dwTo;
+} MCI_PLAY_PARMS, *LPMCI_PLAY_PARMS;
+
+typedef struct tagMCI_SEEK_PARMS {
+       DWORD_PTR dwCallback;
+	DWORD   dwTo;
+} MCI_SEEK_PARMS, *LPMCI_SEEK_PARMS;
+
+typedef struct tagMCI_STATUS_PARMS {
+       DWORD_PTR dwCallback;
+	DWORD   dwReturn;
+	DWORD   dwItem;
+	DWORD   dwTrack;
+} MCI_STATUS_PARMS, *LPMCI_STATUS_PARMS;
+
+typedef struct tagMCI_INFO_PARMSA {
+    DWORD_PTR   dwCallback;
+    LPSTR       lpstrReturn;
+    DWORD       dwRetSize;
+} MCI_INFO_PARMSA, *LPMCI_INFO_PARMSA;
+
+typedef struct tagMCI_INFO_PARMSW {
+    DWORD_PTR   dwCallback;
+    LPWSTR      lpstrReturn;
+    DWORD       dwRetSize;
+} MCI_INFO_PARMSW, *LPMCI_INFO_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_INFO_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_INFO_PARMS)
+
+typedef struct tagMCI_GETDEVCAPS_PARMS {
+       DWORD_PTR dwCallback;
+	DWORD   dwReturn;
+	DWORD   dwItem;
+} MCI_GETDEVCAPS_PARMS, *LPMCI_GETDEVCAPS_PARMS;
+
+typedef struct tagMCI_SYSINFO_PARMSA {
+    DWORD_PTR   dwCallback;
+    LPSTR	lpstrReturn;
+    DWORD	dwRetSize;
+    DWORD	dwNumber;
+    UINT	wDeviceType;
+} MCI_SYSINFO_PARMSA, *LPMCI_SYSINFO_PARMSA;
+
+typedef struct tagMCI_SYSINFO_PARMSW {
+    DWORD_PTR   dwCallback;
+    LPWSTR	lpstrReturn;
+    DWORD	dwRetSize;
+    DWORD	dwNumber;
+    UINT	wDeviceType;
+} MCI_SYSINFO_PARMSW, *LPMCI_SYSINFO_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_SYSINFO_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_SYSINFO_PARMS)
+
+typedef struct tagMCI_SET_PARMS {
+       DWORD_PTR dwCallback;
+	DWORD   dwTimeFormat;
+	DWORD   dwAudio;
+} MCI_SET_PARMS, *LPMCI_SET_PARMS;
+
+typedef struct tagMCI_BREAK_PARMS {
+       DWORD_PTR dwCallback;
+	INT	nVirtKey;
+	HWND	hwndBreak;
+} MCI_BREAK_PARMS, *LPMCI_BREAK_PARMS;
+
+
+typedef struct tagMCI_SOUND_PARMSA {
+    DWORD_PTR   dwCallback;
+    LPCSTR      lpstrSoundName;
+} MCI_SOUND_PARMSA, *LPMCI_SOUND_PARMSA;
+
+typedef struct tagMCI_SOUND_PARMSW {
+    DWORD_PTR   dwCallback;
+    LPCWSTR     lpstrSoundName;
+} MCI_SOUND_PARMSW, *LPMCI_SOUND_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_SOUND_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_SOUND_PARMS)
+
+typedef struct tagMCI_SAVE_PARMSA {
+    DWORD_PTR dwCallback;
+    LPCSTR  lpfilename;
+} MCI_SAVE_PARMSA, *LPMCI_SAVE_PARMSA;
+
+typedef struct tagMCI_SAVE_PARMSW {
+    DWORD_PTR dwCallback;
+    LPCWSTR  lpfilename;
+} MCI_SAVE_PARMSW, *LPMCI_SAVE_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_SAVE_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_SAVE_PARMS)
+
+typedef struct tagMCI_LOAD_PARMSA {
+       DWORD_PTR dwCallback;
+	LPCSTR	lpfilename;
+} MCI_LOAD_PARMSA, *LPMCI_LOAD_PARMSA;
+
+typedef struct tagMCI_LOAD_PARMSW {
+       DWORD_PTR dwCallback;
+	LPCWSTR	lpfilename;
+} MCI_LOAD_PARMSW, *LPMCI_LOAD_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_LOAD_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_LOAD_PARMS)
+
+typedef struct tagMCI_RECORD_PARMS {
+       DWORD_PTR dwCallback;
+	DWORD   dwFrom;
+	DWORD   dwTo;
+} MCI_RECORD_PARMS, *LPMCI_RECORD_PARMS;
+
+#define MCI_CDA_STATUS_TYPE_TRACK 	0x00004001
+
+#define MCI_CDA_TRACK_AUDIO		(MCI_CD_OFFSET + 0)
+#define MCI_CDA_TRACK_OTHER		(MCI_CD_OFFSET + 1)
+
+#define MCI_VD_MODE_PARK                (MCI_VD_OFFSET + 1)
+
+#define MCI_VD_MEDIA_CLV                (MCI_VD_OFFSET + 2)
+#define MCI_VD_MEDIA_CAV                (MCI_VD_OFFSET + 3)
+#define MCI_VD_MEDIA_OTHER              (MCI_VD_OFFSET + 4)
+
+#define MCI_VD_FORMAT_TRACK             0x4001
+
+#define MCI_VD_PLAY_REVERSE             0x00010000L
+#define MCI_VD_PLAY_FAST                0x00020000L
+#define MCI_VD_PLAY_SPEED               0x00040000L
+#define MCI_VD_PLAY_SCAN                0x00080000L
+#define MCI_VD_PLAY_SLOW                0x00100000L
+
+#define MCI_VD_SEEK_REVERSE             0x00010000L
+
+#define MCI_VD_STATUS_SPEED             0x00004002L
+#define MCI_VD_STATUS_FORWARD           0x00004003L
+#define MCI_VD_STATUS_MEDIA_TYPE        0x00004004L
+#define MCI_VD_STATUS_SIDE              0x00004005L
+#define MCI_VD_STATUS_DISC_SIZE         0x00004006L
+
+#define MCI_VD_GETDEVCAPS_CLV           0x00010000L
+#define MCI_VD_GETDEVCAPS_CAV           0x00020000L
+
+#define MCI_VD_SPIN_UP                  0x00010000L
+#define MCI_VD_SPIN_DOWN                0x00020000L
+
+#define MCI_VD_GETDEVCAPS_CAN_REVERSE   0x00004002L
+#define MCI_VD_GETDEVCAPS_FAST_RATE     0x00004003L
+#define MCI_VD_GETDEVCAPS_SLOW_RATE     0x00004004L
+#define MCI_VD_GETDEVCAPS_NORMAL_RATE   0x00004005L
+
+#define MCI_VD_STEP_FRAMES              0x00010000L
+#define MCI_VD_STEP_REVERSE             0x00020000L
+
+#define MCI_VD_ESCAPE_STRING            0x00000100L
+
+typedef struct tagMCI_VD_PLAY_PARMS {
+       DWORD_PTR dwCallback;
+	DWORD   dwFrom;
+	DWORD   dwTo;
+	DWORD   dwSpeed;
+} MCI_VD_PLAY_PARMS, *LPMCI_VD_PLAY_PARMS;
+
+typedef struct tagMCI_VD_STEP_PARMS {
+       DWORD_PTR dwCallback;
+	DWORD   dwFrames;
+} MCI_VD_STEP_PARMS, *LPMCI_VD_STEP_PARMS;
+
+typedef struct tagMCI_VD_ESCAPE_PARMSA {
+       DWORD_PTR dwCallback;
+	LPCSTR	lpstrCommand;
+} MCI_VD_ESCAPE_PARMSA, *LPMCI_VD_ESCAPE_PARMSA;
+
+typedef struct tagMCI_VD_ESCAPE_PARMSW {
+       DWORD_PTR dwCallback;
+	LPCWSTR	lpstrCommand;
+} MCI_VD_ESCAPE_PARMSW, *LPMCI_VD_ESCAPE_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_VD_ESCAPE_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_VD_ESCAPE_PARMS)
+
+#define MCI_WAVE_OPEN_BUFFER            0x00010000L
+
+#define MCI_WAVE_SET_FORMATTAG          0x00010000L
+#define MCI_WAVE_SET_CHANNELS           0x00020000L
+#define MCI_WAVE_SET_SAMPLESPERSEC      0x00040000L
+#define MCI_WAVE_SET_AVGBYTESPERSEC     0x00080000L
+#define MCI_WAVE_SET_BLOCKALIGN         0x00100000L
+#define MCI_WAVE_SET_BITSPERSAMPLE      0x00200000L
+
+#define MCI_WAVE_INPUT                  0x00400000L
+#define MCI_WAVE_OUTPUT                 0x00800000L
+
+#define MCI_WAVE_STATUS_FORMATTAG       0x00004001L
+#define MCI_WAVE_STATUS_CHANNELS        0x00004002L
+#define MCI_WAVE_STATUS_SAMPLESPERSEC   0x00004003L
+#define MCI_WAVE_STATUS_AVGBYTESPERSEC  0x00004004L
+#define MCI_WAVE_STATUS_BLOCKALIGN      0x00004005L
+#define MCI_WAVE_STATUS_BITSPERSAMPLE   0x00004006L
+#define MCI_WAVE_STATUS_LEVEL           0x00004007L
+
+#define MCI_WAVE_SET_ANYINPUT           0x04000000L
+#define MCI_WAVE_SET_ANYOUTPUT          0x08000000L
+
+#define MCI_WAVE_GETDEVCAPS_INPUTS      0x00004001L
+#define MCI_WAVE_GETDEVCAPS_OUTPUTS     0x00004002L
+
+typedef struct tagMCI_WAVE_OPEN_PARMSA {
+       DWORD_PTR       dwCallback;
+	MCIDEVICEID	wDeviceID;
+	LPCSTR		lpstrDeviceType;
+	LPCSTR		lpstrElementName;
+	LPCSTR		lpstrAlias;
+	DWORD   	dwBufferSeconds;
+} MCI_WAVE_OPEN_PARMSA, *LPMCI_WAVE_OPEN_PARMSA;
+
+typedef struct tagMCI_WAVE_OPEN_PARMSW {
+       DWORD_PTR       dwCallback;
+	MCIDEVICEID	wDeviceID;
+	LPCWSTR		lpstrDeviceType;
+	LPCWSTR		lpstrElementName;
+	LPCWSTR		lpstrAlias;
+	DWORD   	dwBufferSeconds;
+} MCI_WAVE_OPEN_PARMSW, *LPMCI_WAVE_OPEN_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_WAVE_OPEN_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_WAVE_OPEN_PARMS)
+
+typedef struct tagMCI_WAVE_DELETE_PARMS {
+       DWORD_PTR dwCallback;
+	DWORD   dwFrom;
+	DWORD   dwTo;
+} MCI_WAVE_DELETE_PARMS, *LPMCI_WAVE_DELETE_PARMS;
+
+typedef struct tagMCI_WAVE_SET_PARMS {
+       DWORD_PTR dwCallback;
+	DWORD	dwTimeFormat;
+	DWORD	dwAudio;
+	UINT	wInput;
+	UINT	wOutput;
+	UINT	wFormatTag;
+	UINT	nChannels;
+	DWORD	nSamplesPerSec;
+	DWORD	nAvgBytesPerSec;
+	UINT	nBlockAlign;
+	UINT	wBitsPerSample;
+} MCI_WAVE_SET_PARMS, * LPMCI_WAVE_SET_PARMS;
+
+
+#define     MCI_SEQ_DIV_PPQN            (0 + MCI_SEQ_OFFSET)
+#define     MCI_SEQ_DIV_SMPTE_24        (1 + MCI_SEQ_OFFSET)
+#define     MCI_SEQ_DIV_SMPTE_25        (2 + MCI_SEQ_OFFSET)
+#define     MCI_SEQ_DIV_SMPTE_30DROP    (3 + MCI_SEQ_OFFSET)
+#define     MCI_SEQ_DIV_SMPTE_30        (4 + MCI_SEQ_OFFSET)
+
+#define     MCI_SEQ_FORMAT_SONGPTR      0x4001
+#define     MCI_SEQ_FILE                0x4002
+#define     MCI_SEQ_MIDI                0x4003
+#define     MCI_SEQ_SMPTE               0x4004
+#define     MCI_SEQ_NONE                65533
+
+#define MCI_SEQ_STATUS_TEMPO            0x00004002L
+#define MCI_SEQ_STATUS_PORT             0x00004003L
+#define MCI_SEQ_STATUS_SLAVE            0x00004007L
+#define MCI_SEQ_STATUS_MASTER           0x00004008L
+#define MCI_SEQ_STATUS_OFFSET           0x00004009L
+#define MCI_SEQ_STATUS_DIVTYPE          0x0000400AL
+
+#define MCI_SEQ_SET_TEMPO               0x00010000L
+#define MCI_SEQ_SET_PORT                0x00020000L
+#define MCI_SEQ_SET_SLAVE               0x00040000L
+#define MCI_SEQ_SET_MASTER              0x00080000L
+#define MCI_SEQ_SET_OFFSET              0x01000000L
+
+typedef struct tagMCI_SEQ_SET_PARMS {
+       DWORD_PTR dwCallback;
+	DWORD   dwTimeFormat;
+	DWORD   dwAudio;
+	DWORD   dwTempo;
+	DWORD   dwPort;
+	DWORD   dwSlave;
+	DWORD   dwMaster;
+	DWORD   dwOffset;
+} MCI_SEQ_SET_PARMS, *LPMCI_SEQ_SET_PARMS;
+
+#define MCI_ANIM_OPEN_WS                0x00010000L
+#define MCI_ANIM_OPEN_PARENT            0x00020000L
+#define MCI_ANIM_OPEN_NOSTATIC          0x00040000L
+
+#define MCI_ANIM_PLAY_SPEED             0x00010000L
+#define MCI_ANIM_PLAY_REVERSE           0x00020000L
+#define MCI_ANIM_PLAY_FAST              0x00040000L
+#define MCI_ANIM_PLAY_SLOW              0x00080000L
+#define MCI_ANIM_PLAY_SCAN              0x00100000L
+
+#define MCI_ANIM_STEP_REVERSE           0x00010000L
+#define MCI_ANIM_STEP_FRAMES            0x00020000L
+
+#define MCI_ANIM_STATUS_SPEED           0x00004001L
+#define MCI_ANIM_STATUS_FORWARD         0x00004002L
+#define MCI_ANIM_STATUS_HWND            0x00004003L
+#define MCI_ANIM_STATUS_HPAL            0x00004004L
+#define MCI_ANIM_STATUS_STRETCH         0x00004005L
+
+#define MCI_ANIM_INFO_TEXT              0x00010000L
+
+#define MCI_ANIM_GETDEVCAPS_CAN_REVERSE 0x00004001L
+#define MCI_ANIM_GETDEVCAPS_FAST_RATE   0x00004002L
+#define MCI_ANIM_GETDEVCAPS_SLOW_RATE   0x00004003L
+#define MCI_ANIM_GETDEVCAPS_NORMAL_RATE 0x00004004L
+#define MCI_ANIM_GETDEVCAPS_PALETTES    0x00004006L
+#define MCI_ANIM_GETDEVCAPS_CAN_STRETCH 0x00004007L
+#define MCI_ANIM_GETDEVCAPS_MAX_WINDOWS 0x00004008L
+
+#define MCI_ANIM_REALIZE_NORM           0x00010000L
+#define MCI_ANIM_REALIZE_BKGD           0x00020000L
+
+#define MCI_ANIM_WINDOW_HWND            0x00010000L
+#define MCI_ANIM_WINDOW_STATE           0x00040000L
+#define MCI_ANIM_WINDOW_TEXT            0x00080000L
+#define MCI_ANIM_WINDOW_ENABLE_STRETCH  0x00100000L
+#define MCI_ANIM_WINDOW_DISABLE_STRETCH 0x00200000L
+
+#define MCI_ANIM_WINDOW_DEFAULT         0x00000000L
+
+#define MCI_ANIM_RECT                   0x00010000L
+#define MCI_ANIM_PUT_SOURCE             0x00020000L
+#define MCI_ANIM_PUT_DESTINATION        0x00040000L
+
+#define MCI_ANIM_WHERE_SOURCE           0x00020000L
+#define MCI_ANIM_WHERE_DESTINATION      0x00040000L
+
+#define MCI_ANIM_UPDATE_HDC             0x00020000L
+
+typedef struct tagMCI_ANIM_OPEN_PARMSA {
+       DWORD_PTR       dwCallback;
+	MCIDEVICEID	wDeviceID;
+	LPCSTR		lpstrDeviceType;
+	LPCSTR		lpstrElementName;
+	LPCSTR		lpstrAlias;
+	DWORD		dwStyle;
+	HWND		hWndParent;
+} MCI_ANIM_OPEN_PARMSA, *LPMCI_ANIM_OPEN_PARMSA;
+
+typedef struct tagMCI_ANIM_OPEN_PARMSW {
+       DWORD_PTR       dwCallback;
+	MCIDEVICEID	wDeviceID;
+	LPCWSTR		lpstrDeviceType;
+	LPCWSTR		lpstrElementName;
+	LPCWSTR		lpstrAlias;
+	DWORD		dwStyle;
+	HWND		hWndParent;
+} MCI_ANIM_OPEN_PARMSW, *LPMCI_ANIM_OPEN_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_ANIM_OPEN_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_ANIM_OPEN_PARMS)
+
+typedef struct tagMCI_ANIM_PLAY_PARMS {
+       DWORD_PTR dwCallback;
+	DWORD   dwFrom;
+	DWORD   dwTo;
+	DWORD   dwSpeed;
+} MCI_ANIM_PLAY_PARMS, *LPMCI_ANIM_PLAY_PARMS;
+
+typedef struct tagMCI_ANIM_STEP_PARMS {
+       DWORD_PTR dwCallback;
+	DWORD   dwFrames;
+} MCI_ANIM_STEP_PARMS, *LPMCI_ANIM_STEP_PARMS;
+
+typedef struct tagMCI_ANIM_WINDOW_PARMSA {
+       DWORD_PTR dwCallback;
+	HWND	hWnd;
+	UINT	nCmdShow;
+	LPCSTR	lpstrText;
+} MCI_ANIM_WINDOW_PARMSA, *LPMCI_ANIM_WINDOW_PARMSA;
+
+typedef struct tagMCI_ANIM_WINDOW_PARMSW {
+       DWORD_PTR dwCallback;
+	HWND	hWnd;
+	UINT	nCmdShow;
+	LPCWSTR	lpstrText;
+} MCI_ANIM_WINDOW_PARMSW, *LPMCI_ANIM_WINDOW_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_ANIM_WINDOW_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_ANIM_WINDOW_PARMS)
+
+typedef struct tagMCI_ANIM_RECT_PARMS {
+       DWORD_PTR dwCallback;
+#ifdef MCI_USE_OFFEXT
+	POINT	ptOffset;
+	POINT	ptExtent;
+#else   /* ifdef MCI_USE_OFFEXT */
+	RECT	rc;
+#endif  /* ifdef MCI_USE_OFFEXT */
+} MCI_ANIM_RECT_PARMS, *LPMCI_ANIM_RECT_PARMS;
+
+
+typedef struct tagMCI_ANIM_UPDATE_PARMS {
+       DWORD_PTR dwCallback;
+	RECT  rc;
+	HDC   hDC;
+} MCI_ANIM_UPDATE_PARMS, *LPMCI_ANIM_UPDATE_PARMS;
+
+
+#define MCI_OVLY_OPEN_WS                0x00010000L
+#define MCI_OVLY_OPEN_PARENT            0x00020000L
+
+#define MCI_OVLY_STATUS_HWND            0x00004001L
+#define MCI_OVLY_STATUS_STRETCH         0x00004002L
+
+#define MCI_OVLY_INFO_TEXT              0x00010000L
+
+#define MCI_OVLY_GETDEVCAPS_CAN_STRETCH 0x00004001L
+#define MCI_OVLY_GETDEVCAPS_CAN_FREEZE  0x00004002L
+#define MCI_OVLY_GETDEVCAPS_MAX_WINDOWS 0x00004003L
+
+#define MCI_OVLY_WINDOW_HWND            0x00010000L
+#define MCI_OVLY_WINDOW_STATE           0x00040000L
+#define MCI_OVLY_WINDOW_TEXT            0x00080000L
+#define MCI_OVLY_WINDOW_ENABLE_STRETCH  0x00100000L
+#define MCI_OVLY_WINDOW_DISABLE_STRETCH 0x00200000L
+
+#define MCI_OVLY_WINDOW_DEFAULT         0x00000000L
+
+#define MCI_OVLY_RECT                   0x00010000L
+#define MCI_OVLY_PUT_SOURCE             0x00020000L
+#define MCI_OVLY_PUT_DESTINATION        0x00040000L
+#define MCI_OVLY_PUT_FRAME              0x00080000L
+#define MCI_OVLY_PUT_VIDEO              0x00100000L
+
+#define MCI_OVLY_WHERE_SOURCE           0x00020000L
+#define MCI_OVLY_WHERE_DESTINATION      0x00040000L
+#define MCI_OVLY_WHERE_FRAME            0x00080000L
+#define MCI_OVLY_WHERE_VIDEO            0x00100000L
+
+typedef struct tagMCI_OVLY_OPEN_PARMSA {
+       DWORD_PTR       dwCallback;
+	MCIDEVICEID	wDeviceID;
+	LPCSTR		lpstrDeviceType;
+	LPCSTR		lpstrElementName;
+	LPCSTR		lpstrAlias;
+	DWORD		dwStyle;
+	HWND		hWndParent;
+} MCI_OVLY_OPEN_PARMSA, *LPMCI_OVLY_OPEN_PARMSA;
+
+typedef struct tagMCI_OVLY_OPEN_PARMSW {
+       DWORD_PTR       dwCallback;
+	MCIDEVICEID	wDeviceID;
+	LPCWSTR		lpstrDeviceType;
+	LPCWSTR		lpstrElementName;
+	LPCWSTR		lpstrAlias;
+	DWORD		dwStyle;
+	HWND		hWndParent;
+} MCI_OVLY_OPEN_PARMSW, *LPMCI_OVLY_OPEN_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_OVLY_OPEN_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_OVLY_OPEN_PARMS)
+
+typedef struct tagMCI_OVLY_WINDOW_PARMSA {
+       DWORD_PTR dwCallback;
+	HWND	hWnd;
+	UINT	nCmdShow;
+	LPCSTR	lpstrText;
+} MCI_OVLY_WINDOW_PARMSA, *LPMCI_OVLY_WINDOW_PARMSA;
+
+typedef struct tagMCI_OVLY_WINDOW_PARMSW {
+       DWORD_PTR dwCallback;
+	HWND	hWnd;
+	UINT	nCmdShow;
+	LPCWSTR	lpstrText;
+} MCI_OVLY_WINDOW_PARMSW, *LPMCI_OVLY_WINDOW_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_OVLY_WINDOW_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_OVLY_WINDOW_PARMS)
+
+typedef struct tagMCI_OVLY_RECT_PARMS {
+       DWORD_PTR dwCallback;
+#ifdef MCI_USE_OFFEXT
+	POINT ptOffset;
+	POINT ptExtent;
+#else   /* ifdef MCI_USE_OFFEXT */
+	RECT  rc;
+#endif  /* ifdef MCI_USE_OFFEXT */
+} MCI_OVLY_RECT_PARMS, *LPMCI_OVLY_RECT_PARMS;
+
+
+typedef struct tagMCI_OVLY_SAVE_PARMSA {
+       DWORD_PTR dwCallback;
+	LPCSTR  lpfilename;
+	RECT  rc;
+} MCI_OVLY_SAVE_PARMSA, *LPMCI_OVLY_SAVE_PARMSA;
+
+typedef struct tagMCI_OVLY_SAVE_PARMSW {
+       DWORD_PTR dwCallback;
+	LPCWSTR  lpfilename;
+	RECT  rc;
+} MCI_OVLY_SAVE_PARMSW, *LPMCI_OVLY_SAVE_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_OVLY_SAVE_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_OVLY_SAVE_PARMS)
+
+typedef struct tagMCI_OVLY_LOAD_PARMSA {
+       DWORD_PTR dwCallback;
+	LPCSTR	lpfilename;
+	RECT	rc;
+} MCI_OVLY_LOAD_PARMSA, *LPMCI_OVLY_LOAD_PARMSA;
+
+typedef struct tagMCI_OVLY_LOAD_PARMSW {
+       DWORD_PTR dwCallback;
+	LPCWSTR	lpfilename;
+	RECT	rc;
+} MCI_OVLY_LOAD_PARMSW, *LPMCI_OVLY_LOAD_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_OVLY_LOAD_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_OVLY_LOAD_PARMS)
+
+#ifndef NEWTRANSPARENT
+#define NEWTRANSPARENT 3
+#define QUERYROPSUPPORT 40
+#endif
+
+#define SELECTDIB 41
+#define DIBINDEX(n) MAKELONG((n),0x10FF)
+
+#ifndef SC_SCREENSAVE
+#define SC_SCREENSAVE 0xf140
+#endif
+
+#include <poppack.h>
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_MMSYSTEM_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mprapi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mprapi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mprapi.h	(revision 16410)
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2006 Dmitry Timoshkov
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_MPRAPI_H
+#define __WINE_MPRAPI_H
+
+#include <lmcons.h>
+#include <ras.h>
+/* FIXME: #include <in6addr.h> */
+
+#define MAX_DEVICE_NAME                 128
+#define MAX_DEVICETYPE_NAME              16
+#define MAX_INTERFACE_NAME_LEN          256
+#define MAX_MEDIA_NAME                   16
+#define MAX_PHONE_NUMBER_LEN            128
+#define MAX_PORT_NAME                    16
+#define MAX_TRANSPORT_NAME_LEN           40
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+BOOL APIENTRY MprAdminIsServiceRunning(LPWSTR);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_MPRAPI_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msacm.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msacm.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msacm.h	(revision 16410)
@@ -0,0 +1,780 @@
+/*
+ * Declarations for MSACM
+ *
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_MSACM_H
+#define __WINE_MSACM_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+#define ACMAPI              WINAPI
+
+/***********************************************************************
+ * Defines/Enums
+ */
+#define ACMERR_BASE        512
+#define ACMERR_NOTPOSSIBLE (ACMERR_BASE + 0)
+#define ACMERR_BUSY        (ACMERR_BASE + 1)
+#define ACMERR_UNPREPARED  (ACMERR_BASE + 2)
+#define ACMERR_CANCELED    (ACMERR_BASE + 3)
+
+#define MM_ACM_OPEN  MM_STREAM_OPEN
+#define MM_ACM_CLOSE MM_STREAM_CLOSE
+#define MM_ACM_DONE  MM_STREAM_DONE
+
+#define ACM_DRIVERADDF_NAME       0x00000001L
+#define ACM_DRIVERADDF_FUNCTION   0x00000003L
+#define ACM_DRIVERADDF_NOTIFYHWND 0x00000004L
+#define ACM_DRIVERADDF_TYPEMASK   0x00000007L
+#define ACM_DRIVERADDF_LOCAL      0x00000000L
+#define ACM_DRIVERADDF_GLOBAL     0x00000008L
+
+#define ACMDRIVERDETAILS_SHORTNAME_CHARS  32
+#define ACMDRIVERDETAILS_LONGNAME_CHARS  128
+#define ACMDRIVERDETAILS_COPYRIGHT_CHARS  80
+#define ACMDRIVERDETAILS_LICENSING_CHARS 128
+#define ACMDRIVERDETAILS_FEATURES_CHARS  512
+
+#define ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC mmioFOURCC('a', 'u', 'd', 'c')
+#define ACMDRIVERDETAILS_FCCCOMP_UNDEFINED  mmioFOURCC('\0', '\0', '\0', '\0')
+
+#define ACMDRIVERDETAILS_SUPPORTF_CODEC     0x00000001L
+#define ACMDRIVERDETAILS_SUPPORTF_CONVERTER 0x00000002L
+#define ACMDRIVERDETAILS_SUPPORTF_FILTER    0x00000004L
+#define ACMDRIVERDETAILS_SUPPORTF_HARDWARE  0x00000008L
+#define ACMDRIVERDETAILS_SUPPORTF_ASYNC     0x00000010L
+#define ACMDRIVERDETAILS_SUPPORTF_LOCAL     0x40000000L
+#define ACMDRIVERDETAILS_SUPPORTF_DISABLED  0x80000000L
+
+#define ACM_DRIVERENUMF_NOLOCAL  0x40000000L
+#define ACM_DRIVERENUMF_DISABLED 0x80000000L
+
+#define ACM_DRIVERPRIORITYF_ENABLE    0x00000001L
+#define ACM_DRIVERPRIORITYF_DISABLE   0x00000002L
+#define ACM_DRIVERPRIORITYF_ABLEMASK  0x00000003L
+#define ACM_DRIVERPRIORITYF_BEGIN     0x00010000L
+#define ACM_DRIVERPRIORITYF_END       0x00020000L
+#define ACM_DRIVERPRIORITYF_DEFERMASK 0x00030000L
+
+#define MM_ACM_FILTERCHOOSE 0x8000
+
+#define FILTERCHOOSE_MESSAGE          0
+#define FILTERCHOOSE_FILTERTAG_VERIFY (FILTERCHOOSE_MESSAGE+0)
+#define FILTERCHOOSE_FILTER_VERIFY    (FILTERCHOOSE_MESSAGE+1)
+#define FILTERCHOOSE_CUSTOM_VERIFY    (FILTERCHOOSE_MESSAGE+2)
+
+#define ACMFILTERCHOOSE_STYLEF_SHOWHELP             0x00000004L
+#define ACMFILTERCHOOSE_STYLEF_ENABLEHOOK           0x00000008L
+#define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATE       0x00000010L
+#define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATEHANDLE 0x00000020L
+#define ACMFILTERCHOOSE_STYLEF_INITTOFILTERSTRUCT   0x00000040L
+#define ACMFILTERCHOOSE_STYLEF_CONTEXTHELP          0x00000080L
+
+#define ACMFILTERDETAILS_FILTER_CHARS 128
+
+#define ACM_FILTERDETAILSF_INDEX     0x00000000L
+#define ACM_FILTERDETAILSF_FILTER    0x00000001L
+#define ACM_FILTERDETAILSF_QUERYMASK 0x0000000FL
+
+#define ACMFILTERTAGDETAILS_FILTERTAG_CHARS 48
+
+#define ACM_FILTERTAGDETAILSF_INDEX       0x00000000L
+#define ACM_FILTERTAGDETAILSF_FILTERTAG   0x00000001L
+#define ACM_FILTERTAGDETAILSF_LARGESTSIZE 0x00000002L
+#define ACM_FILTERTAGDETAILSF_QUERYMASK   0x0000000FL
+
+#define ACM_FILTERENUMF_DWFILTERTAG 0x00010000L
+
+#define ACMHELPMSGSTRINGA       "acmchoose_help"
+#if defined(__GNUC__)
+# define ACMHELPMSGSTRINGW (const WCHAR []){ 'a','c','m', \
+  'c','h','o','o','s','e','_','h','e','l','p',0 }
+#elif defined(_MSC_VER)
+# define ACMHELPMSGSTRINGW      L"acmchoose_help"
+#else
+static const WCHAR ACMHELPMSGSTRINGW[] = { 'a','c','m',
+  'c','h','o','o','s','e','_','h','e','l','p',0 };
+#endif
+#define ACMHELPMSGSTRING WINELIB_NAME_AW(ACMHELPMSGSTRING)
+
+#define ACMHELPMSGCONTEXTMENUA  "acmchoose_contextmenu"
+#if defined(__GNUC__)
+# define ACMHELPMSGCONTEXTMENUW (const WCHAR []){ 'a','c','m', \
+  'c','h','o','o','s','e','_','c','o','n','t','e','x','t','m','e','n','u',0 }
+#elif defined(_MSC_VER)
+# define ACMHELPMSGCONTEXTMENUW L"acmchoose_contextmenu"
+#else
+static const WCHAR ACMHELPMSGCONTEXTMENUW[] = { 'a','c','m',
+  'c','h','o','o','s','e','_','c','o','n','t','e','x','t','m','e','n','u',0 };
+#endif
+#define ACMHELPMSGCONTEXTMENU WINELIB_NAME_AW(ACMHELPMSGCONTEXTMENU)
+
+#define ACMHELPMSGCONTEXTHELPA  "acmchoose_contexthelp"
+#if defined(__GNUC__)
+# define ACMHELPMSGCONTEXTHELPW (const WCHAR []){ 'a','c','m', \
+  'c','h','o','o','s','e','_','c','o','n','t','e','x','t','h','e','l','p',0 }
+#elif defined(_MSC_VER)
+# define ACMHELPMSGCONTEXTHELPW L"acmchoose_contexthelp"
+#else
+static const WCHAR ACMHELPMSGCONTEXTHELPW[] = { 'a','c','m',
+  'c','h','o','o','s','e','_','c','o','n','t','e','x','t','h','e','l','p',0 };
+#endif
+#define ACMHELPMSGCONTEXTHELP WINELIB_NAME_AW(ACMHELPMSGCONTEXTHELP)
+
+#define MM_ACM_FORMATCHOOSE 0x8000
+
+#define FORMATCHOOSE_MESSAGE          0
+#define FORMATCHOOSE_FORMATTAG_VERIFY (FORMATCHOOSE_MESSAGE+0)
+#define FORMATCHOOSE_FORMAT_VERIFY    (FORMATCHOOSE_MESSAGE+1)
+#define FORMATCHOOSE_CUSTOM_VERIFY    (FORMATCHOOSE_MESSAGE+2)
+
+#define ACMFORMATCHOOSE_STYLEF_SHOWHELP             0x00000004L
+#define ACMFORMATCHOOSE_STYLEF_ENABLEHOOK           0x00000008L
+#define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATE       0x00000010L
+#define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATEHANDLE 0x00000020L
+#define ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT      0x00000040L
+#define ACMFORMATCHOOSE_STYLEF_CONTEXTHELP          0x00000080L
+
+#define ACMFORMATDETAILS_FORMAT_CHARS   128
+
+#define ACM_FORMATDETAILSF_INDEX     0x00000000L
+#define ACM_FORMATDETAILSF_FORMAT    0x00000001L
+#define ACM_FORMATDETAILSF_QUERYMASK 0x0000000FL
+
+#define ACM_FORMATENUMF_WFORMATTAG     0x00010000L
+#define ACM_FORMATENUMF_NCHANNELS      0x00020000L
+#define ACM_FORMATENUMF_NSAMPLESPERSEC 0x00040000L
+#define ACM_FORMATENUMF_WBITSPERSAMPLE 0x00080000L
+#define ACM_FORMATENUMF_CONVERT        0x00100000L
+#define ACM_FORMATENUMF_SUGGEST        0x00200000L
+#define ACM_FORMATENUMF_HARDWARE       0x00400000L
+#define ACM_FORMATENUMF_INPUT          0x00800000L
+#define ACM_FORMATENUMF_OUTPUT         0x01000000L
+
+#define ACM_FORMATSUGGESTF_WFORMATTAG     0x00010000L
+#define ACM_FORMATSUGGESTF_NCHANNELS      0x00020000L
+#define ACM_FORMATSUGGESTF_NSAMPLESPERSEC 0x00040000L
+#define ACM_FORMATSUGGESTF_WBITSPERSAMPLE 0x00080000L
+#define ACM_FORMATSUGGESTF_TYPEMASK       0x00FF0000L
+
+#define ACMFORMATTAGDETAILS_FORMATTAG_CHARS 48
+
+#define ACM_FORMATTAGDETAILSF_INDEX       0x00000000L
+#define ACM_FORMATTAGDETAILSF_FORMATTAG   0x00000001L
+#define ACM_FORMATTAGDETAILSF_LARGESTSIZE 0x00000002L
+#define ACM_FORMATTAGDETAILSF_QUERYMASK   0x0000000FL
+
+#define ACM_METRIC_COUNT_DRIVERS            1
+#define ACM_METRIC_COUNT_CODECS             2
+#define ACM_METRIC_COUNT_CONVERTERS         3
+#define ACM_METRIC_COUNT_FILTERS            4
+#define ACM_METRIC_COUNT_DISABLED           5
+#define ACM_METRIC_COUNT_HARDWARE           6
+#define ACM_METRIC_COUNT_LOCAL_DRIVERS     20
+#define ACM_METRIC_COUNT_LOCAL_CODECS      21
+#define ACM_METRIC_COUNT_LOCAL_CONVERTERS  22
+#define ACM_METRIC_COUNT_LOCAL_FILTERS     23
+#define ACM_METRIC_COUNT_LOCAL_DISABLED    24
+#define ACM_METRIC_HARDWARE_WAVE_INPUT     30
+#define ACM_METRIC_HARDWARE_WAVE_OUTPUT    31
+#define ACM_METRIC_MAX_SIZE_FORMAT         50
+#define ACM_METRIC_MAX_SIZE_FILTER         51
+#define ACM_METRIC_DRIVER_SUPPORT         100
+#define ACM_METRIC_DRIVER_PRIORITY        101
+
+#define ACM_STREAMCONVERTF_BLOCKALIGN 0x00000004
+#define ACM_STREAMCONVERTF_START      0x00000010
+#define ACM_STREAMCONVERTF_END        0x00000020
+
+#define ACMSTREAMHEADER_STATUSF_DONE     0x00010000L
+#define ACMSTREAMHEADER_STATUSF_PREPARED 0x00020000L
+#define ACMSTREAMHEADER_STATUSF_INQUEUE  0x00100000L
+
+#define ACM_STREAMOPENF_QUERY       0x00000001
+#define ACM_STREAMOPENF_ASYNC       0x00000002
+#define ACM_STREAMOPENF_NONREALTIME 0x00000004
+
+#define ACM_STREAMSIZEF_SOURCE      0x00000000L
+#define ACM_STREAMSIZEF_DESTINATION 0x00000001L
+#define ACM_STREAMSIZEF_QUERYMASK   0x0000000FL
+
+#define ACMDM_USER                  (DRV_USER + 0x0000)
+#define ACMDM_RESERVED_LOW          (DRV_USER + 0x2000)
+#define ACMDM_RESERVED_HIGH         (DRV_USER + 0x2FFF)
+
+#define ACMDM_BASE                  ACMDM_RESERVED_LOW
+
+#define ACMDM_DRIVER_ABOUT          (ACMDM_BASE + 11)
+
+/* handles */
+
+DECLARE_HANDLE(HACMDRIVERID);
+DECLARE_HANDLE(HACMDRIVER);
+DECLARE_HANDLE(HACMSTREAM);
+DECLARE_HANDLE(HACMOBJ);
+typedef HACMDRIVERID *PHACMDRIVERID, *LPHACMDRIVERID;
+typedef HACMDRIVER   *PHACMDRIVER, *LPHACMDRIVER;
+typedef HACMSTREAM   *PHACMSTREAM, *LPHACMSTREAM;
+typedef HACMOBJ      *PHACMOBJ, *LPHACMOBJ;
+
+/***********************************************************************
+ * Callbacks
+ */
+
+typedef BOOL (CALLBACK *ACMDRIVERENUMCB)(
+  HACMDRIVERID hadid, DWORD dwInstance, DWORD fdwSupport
+);
+
+typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROCA)(
+  HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
+);
+
+typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROCW)(
+  HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
+);
+#define	ACMFILTERCHOOSEHOOKPROC WINELIB_NAME_AW(ACMFILTERCHOOSEHOOKPROC)
+
+typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROCA)(
+  HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
+);
+
+typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROCW)(
+  HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
+);
+#define	ACMFORMATCHOOSEHOOKPROC WINELIB_NAME_AW(ACMFORMATCHOOSEHOOKPROC)
+
+/***********************************************************************
+ * Structures
+ */
+
+typedef struct _ACMDRIVERDETAILSA
+{
+  DWORD    cbStruct;
+
+  FOURCC   fccType;
+  FOURCC   fccComp;
+
+  WORD     wMid;
+  WORD     wPid;
+
+  DWORD    vdwACM;
+  DWORD    vdwDriver;
+
+  DWORD    fdwSupport;
+  DWORD    cFormatTags;
+  DWORD    cFilterTags;
+
+  HICON  hicon;
+
+  CHAR     szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
+  CHAR     szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
+  CHAR     szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
+  CHAR     szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
+  CHAR     szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
+} ACMDRIVERDETAILSA, *PACMDRIVERDETAILSA, *LPACMDRIVERDETAILSA;
+
+typedef struct _ACMDRIVERDETAILSW
+{
+  DWORD    cbStruct;
+
+  FOURCC   fccType;
+  FOURCC   fccComp;
+
+  WORD     wMid;
+  WORD     wPid;
+
+  DWORD    vdwACM;
+  DWORD    vdwDriver;
+
+  DWORD    fdwSupport;
+  DWORD    cFormatTags;
+  DWORD    cFilterTags;
+
+  HICON  hicon;
+
+  WCHAR    szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
+  WCHAR    szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
+  WCHAR    szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
+  WCHAR    szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
+  WCHAR    szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
+} ACMDRIVERDETAILSW, *PACMDRIVERDETAILSW, *LPACMDRIVERDETAILSW;
+
+DECL_WINELIB_TYPE_AW(ACMDRIVERDETAILS)
+DECL_WINELIB_TYPE_AW(PACMDRIVERDETAILS)
+DECL_WINELIB_TYPE_AW(LPACMDRIVERDETAILS)
+
+typedef struct _ACMFILTERCHOOSEA
+{
+  DWORD         cbStruct;
+  DWORD         fdwStyle;
+
+  HWND        hwndOwner;
+
+  PWAVEFILTER   pwfltr;
+  DWORD         cbwfltr;
+
+  LPCSTR        pszTitle;
+
+  CHAR          szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
+  CHAR          szFilter[ACMFILTERDETAILS_FILTER_CHARS];
+  LPSTR         pszName;
+  DWORD         cchName;
+
+  DWORD         fdwEnum;
+  PWAVEFILTER   pwfltrEnum;
+
+  HINSTANCE   hInstance;
+  LPCSTR        pszTemplateName;
+  LPARAM        lCustData;
+  ACMFILTERCHOOSEHOOKPROCA pfnHook;
+} ACMFILTERCHOOSEA, *PACMFILTERCHOOSEA, *LPACMFILTERCHOOSEA;
+
+typedef struct _ACMFILTERCHOOSEW
+{
+  DWORD         cbStruct;
+  DWORD         fdwStyle;
+
+  HWND        hwndOwner;
+
+  PWAVEFILTER   pwfltr;
+  DWORD         cbwfltr;
+
+  LPCWSTR       pszTitle;
+
+  WCHAR         szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
+  WCHAR         szFilter[ACMFILTERDETAILS_FILTER_CHARS];
+  LPWSTR        pszName;
+  DWORD         cchName;
+
+  DWORD         fdwEnum;
+  PWAVEFILTER   pwfltrEnum;
+
+  HINSTANCE   hInstance;
+  LPCWSTR       pszTemplateName;
+  LPARAM        lCustData;
+  ACMFILTERCHOOSEHOOKPROCW pfnHook;
+} ACMFILTERCHOOSEW, *PACMFILTERCHOOSEW, *LPACMFILTERCHOOSEW;
+
+DECL_WINELIB_TYPE_AW(ACMFILTERCHOOSE)
+DECL_WINELIB_TYPE_AW(PACMFILTERCHOOSE)
+DECL_WINELIB_TYPE_AW(LPACMFILTERCHOOSE)
+
+typedef struct _ACMFILTERDETAILSA
+{
+  DWORD           cbStruct;
+  DWORD           dwFilterIndex;
+  DWORD           dwFilterTag;
+  DWORD           fdwSupport;
+  PWAVEFILTER     pwfltr;
+  DWORD           cbwfltr;
+  CHAR            szFilter[ACMFILTERDETAILS_FILTER_CHARS];
+} ACMFILTERDETAILSA, *PACMFILTERDETAILSA, *LPACMFILTERDETAILSA;
+
+typedef struct _ACMFILTERDETAILSW
+{
+  DWORD          cbStruct;
+  DWORD          dwFilterIndex;
+  DWORD          dwFilterTag;
+  DWORD          fdwSupport;
+  PWAVEFILTER    pwfltr;
+  DWORD          cbwfltr;
+  WCHAR          szFilter[ACMFILTERDETAILS_FILTER_CHARS];
+} ACMFILTERDETAILSW, *PACMFILTERDETAILSW, *LPACMFILTERDETAILSW;
+
+DECL_WINELIB_TYPE_AW(ACMFILTERDETAILS)
+DECL_WINELIB_TYPE_AW(PACMFILTERDETAILS)
+DECL_WINELIB_TYPE_AW(LPACMFILTERDETAILS)
+
+typedef struct _ACMFILTERTAGDETAILSA
+{
+  DWORD cbStruct;
+  DWORD dwFilterTagIndex;
+  DWORD dwFilterTag;
+  DWORD cbFilterSize;
+  DWORD fdwSupport;
+  DWORD cStandardFilters;
+  CHAR  szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
+} ACMFILTERTAGDETAILSA, *PACMFILTERTAGDETAILSA, *LPACMFILTERTAGDETAILSA;
+
+typedef struct _ACMFILTERTAGDETAILSW
+{
+  DWORD cbStruct;
+  DWORD dwFilterTagIndex;
+  DWORD dwFilterTag;
+  DWORD cbFilterSize;
+  DWORD fdwSupport;
+  DWORD cStandardFilters;
+  WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
+} ACMFILTERTAGDETAILSW, *PACMFILTERTAGDETAILSW, *LPACMFILTERTAGDETAILSW;
+
+DECL_WINELIB_TYPE_AW(ACMFILTERTAGDETAILS)
+DECL_WINELIB_TYPE_AW(PACMFILTERTAGDETAILS)
+DECL_WINELIB_TYPE_AW(LPACMFILTERTAGDETAILS)
+
+typedef struct _ACMFORMATCHOOSEA
+{
+  DWORD           cbStruct;
+  DWORD           fdwStyle;
+
+  HWND          hwndOwner;
+
+  PWAVEFORMATEX   pwfx;
+  DWORD           cbwfx;
+  LPCSTR          pszTitle;
+
+  CHAR            szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
+  CHAR            szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
+
+  LPSTR           pszName;
+  DWORD           cchName;
+
+  DWORD           fdwEnum;
+  PWAVEFORMATEX   pwfxEnum;
+
+  HINSTANCE     hInstance;
+  LPCSTR          pszTemplateName;
+  LPARAM          lCustData;
+  ACMFORMATCHOOSEHOOKPROCA pfnHook;
+} ACMFORMATCHOOSEA, *PACMFORMATCHOOSEA, *LPACMFORMATCHOOSEA;
+
+typedef struct _ACMFORMATCHOOSEW
+{
+  DWORD           cbStruct;
+  DWORD           fdwStyle;
+
+  HWND          hwndOwner;
+
+  PWAVEFORMATEX   pwfx;
+  DWORD           cbwfx;
+  LPCWSTR         pszTitle;
+
+  WCHAR           szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
+  WCHAR           szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
+
+  LPWSTR          pszName;
+  DWORD           cchName;
+
+  DWORD           fdwEnum;
+  LPWAVEFORMATEX  pwfxEnum;
+
+  HINSTANCE     hInstance;
+  LPCWSTR         pszTemplateName;
+  LPARAM          lCustData;
+  ACMFORMATCHOOSEHOOKPROCW pfnHook;
+} ACMFORMATCHOOSEW, *PACMFORMATCHOOSEW, *LPACMFORMATCHOOSEW;
+
+DECL_WINELIB_TYPE_AW(ACMFORMATCHOOSE)
+DECL_WINELIB_TYPE_AW(PACMFORMATCHOOSE)
+DECL_WINELIB_TYPE_AW(LPACMFORMATCHOOSE)
+
+typedef struct _ACMFORMATDETAILSA
+{
+  DWORD           cbStruct;
+  DWORD           dwFormatIndex;
+  DWORD           dwFormatTag;
+  DWORD           fdwSupport;
+  PWAVEFORMATEX   pwfx;
+  DWORD           cbwfx;
+  CHAR            szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
+} ACMFORMATDETAILSA, *PACMFORMATDETAILSA, *LPACMFORMATDETAILSA;
+
+typedef struct _ACMFORMATDETAILSW
+{
+    DWORD           cbStruct;
+    DWORD           dwFormatIndex;
+    DWORD           dwFormatTag;
+    DWORD           fdwSupport;
+    PWAVEFORMATEX   pwfx;
+    DWORD           cbwfx;
+    WCHAR           szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
+} ACMFORMATDETAILSW, *PACMFORMATDETAILSW, *LPACMFORMATDETAILSW;
+
+DECL_WINELIB_TYPE_AW(ACMFORMATDETAILS)
+DECL_WINELIB_TYPE_AW(PACMFORMATDETAILS)
+DECL_WINELIB_TYPE_AW(LPACMFORMATDETAILS)
+
+typedef struct _ACMFORMATTAGDETAILSA
+{
+  DWORD cbStruct;
+  DWORD dwFormatTagIndex;
+  DWORD dwFormatTag;
+  DWORD cbFormatSize;
+  DWORD fdwSupport;
+  DWORD cStandardFormats;
+  CHAR  szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
+} ACMFORMATTAGDETAILSA, *PACMFORMATTAGDETAILSA, *LPACMFORMATTAGDETAILSA;
+
+typedef struct _ACMFORMATTAGDETAILSW
+{
+  DWORD cbStruct;
+  DWORD dwFormatTagIndex;
+  DWORD dwFormatTag;
+  DWORD cbFormatSize;
+  DWORD fdwSupport;
+  DWORD cStandardFormats;
+  WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
+} ACMFORMATTAGDETAILSW, *PACMFORMATTAGDETAILSW, *LPACMFORMATTAGDETAILSW;
+
+DECL_WINELIB_TYPE_AW(ACMFORMATTAGDETAILS)
+DECL_WINELIB_TYPE_AW(PACMFORMATTAGDETAILS)
+DECL_WINELIB_TYPE_AW(LPACMFORMATTAGDETAILS)
+
+typedef struct _ACMSTREAMHEADER
+{
+  DWORD  cbStruct;
+  DWORD  fdwStatus;
+  DWORD  dwUser;
+  LPBYTE pbSrc;
+  DWORD  cbSrcLength;
+  DWORD  cbSrcLengthUsed;
+  DWORD  dwSrcUser;
+  LPBYTE pbDst;
+  DWORD  cbDstLength;
+  DWORD  cbDstLengthUsed;
+  DWORD  dwDstUser;
+  DWORD  dwReservedDriver[10];
+} ACMSTREAMHEADER, *PACMSTREAMHEADER, *LPACMSTREAMHEADER;
+
+/***********************************************************************
+ * Callbacks 2
+ */
+
+typedef BOOL (CALLBACK *ACMFILTERENUMCBA)(
+  HACMDRIVERID hadid, PACMFILTERDETAILSA pafd,
+  DWORD dwInstance, DWORD fdwSupport
+);
+
+typedef BOOL (CALLBACK *ACMFILTERENUMCBW)(
+  HACMDRIVERID hadid, PACMFILTERDETAILSW pafd,
+  DWORD dwInstance, DWORD fdwSupport
+);
+
+#define ACMFILTERENUMCB WINELIB_NAME_AW(ACMFILTERENUMCB)
+
+typedef BOOL (CALLBACK *ACMFILTERTAGENUMCBA)(
+  HACMDRIVERID hadid, PACMFILTERTAGDETAILSA paftd,
+  DWORD dwInstance, DWORD fdwSupport
+);
+
+typedef BOOL (CALLBACK *ACMFILTERTAGENUMCBW)(
+  HACMDRIVERID hadid, PACMFILTERTAGDETAILSW paftd,
+  DWORD dwInstance, DWORD fdwSupport
+);
+
+#define ACMFILTERTAGENUMCB WINELIB_NAME_AW(ACMFILTERTAGENUMCB)
+
+typedef BOOL (CALLBACK *ACMFORMATENUMCBA)(
+  HACMDRIVERID hadid, PACMFORMATDETAILSA pafd,
+  DWORD dwInstance, DWORD fdwSupport
+);
+
+typedef BOOL (CALLBACK *ACMFORMATENUMCBW)(
+  HACMDRIVERID hadid, PACMFORMATDETAILSW pafd,
+  DWORD dwInstance, DWORD fdwSupport
+);
+
+#define ACMFORMATENUMCB WINELIB_NAME_AW(ACMFORMATENUMCB)
+
+typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBA)(
+  HACMDRIVERID hadid, PACMFORMATTAGDETAILSA paftd,
+  DWORD dwInstance, DWORD fdwSupport
+);
+
+typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBW)(
+  HACMDRIVERID hadid, PACMFORMATTAGDETAILSW paftd,
+  DWORD dwInstance, DWORD fdwSupport
+);
+
+#define ACMFORMATTAGENUMCB WINELIB_NAME_AW(ACMFORMATTAGENUMCB)
+
+/***********************************************************************
+ * Functions - Win32
+ */
+
+MMRESULT WINAPI acmDriverAddA(
+  PHACMDRIVERID phadid, HINSTANCE hinstModule,
+  LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
+);
+MMRESULT WINAPI acmDriverAddW(
+  PHACMDRIVERID phadid, HINSTANCE hinstModule,
+  LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
+);
+#define acmDriverAdd WINELIB_NAME_AW(acmDriverAdd)
+
+MMRESULT WINAPI acmDriverClose(
+  HACMDRIVER had, DWORD fdwClose
+);
+MMRESULT WINAPI acmDriverDetailsA(
+  HACMDRIVERID hadid, PACMDRIVERDETAILSA padd, DWORD fdwDetails
+);
+MMRESULT WINAPI acmDriverDetailsW(
+  HACMDRIVERID hadid, PACMDRIVERDETAILSW padd, DWORD fdwDetails
+);
+#define acmDriverDetails WINELIB_NAME_AW(acmDriverDetails)
+
+MMRESULT WINAPI acmDriverEnum(
+  ACMDRIVERENUMCB fnCallback, DWORD dwInstance, DWORD fdwEnum
+);
+MMRESULT WINAPI acmDriverID(
+  HACMOBJ hao, PHACMDRIVERID phadid, DWORD fdwDriverID
+);
+LRESULT WINAPI acmDriverMessage(
+  HACMDRIVER had, UINT uMsg, LPARAM lParam1, LPARAM lParam2
+);
+MMRESULT WINAPI acmDriverOpen(
+  PHACMDRIVER phad, HACMDRIVERID hadid, DWORD fdwOpen
+);
+MMRESULT WINAPI acmDriverPriority(
+  HACMDRIVERID hadid, DWORD dwPriority, DWORD fdwPriority
+);
+MMRESULT WINAPI acmDriverRemove(
+  HACMDRIVERID hadid, DWORD fdwRemove
+);
+MMRESULT WINAPI acmFilterChooseA(
+  PACMFILTERCHOOSEA pafltrc
+);
+MMRESULT WINAPI acmFilterChooseW(
+  PACMFILTERCHOOSEW pafltrc
+);
+#define acmFilterChoose WINELIB_NAME_AW(acmFilterChoose)
+
+MMRESULT WINAPI acmFilterDetailsA(
+  HACMDRIVER had, PACMFILTERDETAILSA pafd, DWORD fdwDetails
+);
+MMRESULT WINAPI acmFilterDetailsW(
+  HACMDRIVER had, PACMFILTERDETAILSW pafd, DWORD fdwDetails
+);
+#define acmFilterDetails WINELIB_NAME_AW(acmFilterDetails)
+
+MMRESULT WINAPI acmFilterEnumA(
+  HACMDRIVER had, PACMFILTERDETAILSA pafd,
+  ACMFILTERENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
+);
+MMRESULT WINAPI acmFilterEnumW(
+  HACMDRIVER had, PACMFILTERDETAILSW pafd,
+  ACMFILTERENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum
+);
+#define acmFilterEnum WINELIB_NAME_AW(acmFilterEnum)
+
+MMRESULT WINAPI acmFilterTagDetailsA(
+  HACMDRIVER had, PACMFILTERTAGDETAILSA paftd, DWORD fdwDetails
+);
+MMRESULT WINAPI acmFilterTagDetailsW(
+  HACMDRIVER had, PACMFILTERTAGDETAILSW paftd, DWORD fdwDetails
+);
+#define acmFilterTagDetails WINELIB_NAME_AW(acmFilterTagDetails)
+
+MMRESULT WINAPI acmFilterTagEnumA(
+  HACMDRIVER had, PACMFILTERTAGDETAILSA paftd,
+  ACMFILTERTAGENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
+);
+MMRESULT WINAPI acmFilterTagEnumW(
+  HACMDRIVER had, PACMFILTERTAGDETAILSW paftd,
+  ACMFILTERTAGENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum
+);
+#define acmFilterTagEnum WINELIB_NAME_AW(acmFilterTagEnum)
+
+MMRESULT WINAPI acmFormatChooseA(
+  PACMFORMATCHOOSEA pafmtc
+);
+MMRESULT WINAPI acmFormatChooseW(
+  PACMFORMATCHOOSEW pafmtc
+);
+#define acmFormatChoose WINELIB_NAME_AW(acmFormatChoose)
+
+MMRESULT WINAPI acmFormatDetailsA(
+  HACMDRIVER had, PACMFORMATDETAILSA pafd, DWORD fdwDetails
+);
+MMRESULT WINAPI acmFormatDetailsW(
+  HACMDRIVER had, PACMFORMATDETAILSW pafd, DWORD fdwDetails
+);
+#define acmFormatDetails WINELIB_NAME_AW(acmFormatDetails)
+
+MMRESULT WINAPI acmFormatEnumA(
+  HACMDRIVER had, PACMFORMATDETAILSA pafd,
+  ACMFORMATENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
+);
+MMRESULT WINAPI acmFormatEnumW(
+  HACMDRIVER had, PACMFORMATDETAILSW pafd,
+  ACMFORMATENUMCBW fnCallback, DWORD dwInstance,  DWORD fdwEnum
+);
+#define acmFormatEnum WINELIB_NAME_AW(acmFormatEnum)
+
+MMRESULT WINAPI acmFormatSuggest(
+  HACMDRIVER had, PWAVEFORMATEX pwfxSrc, PWAVEFORMATEX pwfxDst,
+  DWORD cbwfxDst, DWORD fdwSuggest
+);
+MMRESULT WINAPI acmFormatTagDetailsA(
+  HACMDRIVER had, PACMFORMATTAGDETAILSA paftd, DWORD fdwDetails
+);
+MMRESULT WINAPI acmFormatTagDetailsW(
+  HACMDRIVER had, PACMFORMATTAGDETAILSW paftd, DWORD fdwDetails
+);
+#define acmFormatTagDetails WINELIB_NAME_AW(acmFormatTagDetails)
+
+MMRESULT WINAPI acmFormatTagEnumA(
+  HACMDRIVER had, PACMFORMATTAGDETAILSA paftd,
+  ACMFORMATTAGENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
+);
+MMRESULT WINAPI acmFormatTagEnumW(
+  HACMDRIVER had, PACMFORMATTAGDETAILSW paftd,
+  ACMFORMATTAGENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum
+);
+#define acmFormatTagEnum WINELIB_NAME_AW(acmFormatTagEnum)
+
+DWORD WINAPI acmGetVersion(void
+);
+MMRESULT WINAPI acmMetrics(
+  HACMOBJ hao, UINT  uMetric, LPVOID  pMetric
+);
+MMRESULT WINAPI acmStreamClose(
+  HACMSTREAM has, DWORD fdwClose
+);
+MMRESULT WINAPI acmStreamConvert(
+  HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwConvert
+);
+MMRESULT WINAPI acmStreamMessage(
+  HACMSTREAM has, UINT uMsg, LPARAM lParam1, LPARAM lParam2
+);
+MMRESULT WINAPI acmStreamOpen(
+  PHACMSTREAM phas, HACMDRIVER had, PWAVEFORMATEX pwfxSrc,
+  PWAVEFORMATEX pwfxDst, PWAVEFILTER pwfltr, DWORD dwCallback,
+  DWORD dwInstance, DWORD fdwOpen
+);
+MMRESULT WINAPI acmStreamPrepareHeader(
+  HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwPrepare
+);
+MMRESULT WINAPI acmStreamReset(
+  HACMSTREAM has, DWORD fdwReset
+);
+MMRESULT WINAPI acmStreamSize(
+  HACMSTREAM has, DWORD cbInput,
+  LPDWORD pdwOutputBytes, DWORD fdwSize
+);
+MMRESULT WINAPI acmStreamUnprepareHeader(
+  HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwUnprepare
+);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif  /* __WINE_MSACM_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msacmdlg.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msacmdlg.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msacmdlg.h	(revision 16410)
@@ -0,0 +1,36 @@
+/*
+ * definitions for MSACM dialog boxes
+ *
+ * Copyright (C) 2001 Eric Pouech
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define DLG_ACMFORMATCHOOSE_ID              70
+#define IDD_ACMFORMATCHOOSE_BTN_HELP        9
+#define IDD_ACMFORMATCHOOSE_CMB_CUSTOM      100
+#define IDD_ACMFORMATCHOOSE_CMB_FORMATTAG   101
+#define IDD_ACMFORMATCHOOSE_CMB_FORMAT      102
+#define IDD_ACMFORMATCHOOSE_BTN_SETNAME     103
+#define IDD_ACMFORMATCHOOSE_BTN_DELNAME     104
+
+#define DLG_ACMFILTERCHOOSE_ID              71
+#define IDD_ACMFILTERCHOOSE_BTN_HELP        9
+#define IDD_ACMFILTERCHOOSE_CMB_CUSTOM      100
+#define IDD_ACMFILTERCHOOSE_CMB_FILTERTAG   101
+#define IDD_ACMFILTERCHOOSE_CMB_FILTER      102
+#define IDD_ACMFILTERCHOOSE_BTN_SETNAME     103
+#define IDD_ACMFILTERCHOOSE_BTN_DELNAME     104
+
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msacmdrv.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msacmdrv.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msacmdrv.h	(revision 16410)
@@ -0,0 +1,157 @@
+/*
+ * Declarations for MSACM driver
+ *
+ * Copyright 1998 Patrik Stridvall
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_MSACMDRV_H
+#define __WINE_MSACMDRV_H
+
+#include <stdarg.h>
+
+#include <windef.h>
+#include <winbase.h>
+#include <mmsystem.h>
+#include <mmreg.h>
+#include <msacm.h>
+
+/***********************************************************************
+ * Types
+ */
+
+/***********************************************************************
+ * Defines/Enums
+ */
+
+#define MAKE_ACM_VERSION(mjr, mnr, bld) \
+  (((long)(mjr)<<24) | ((long)(mnr)<<16) | ((long)bld))
+
+#define ACMDRVOPENDESC_SECTIONNAME_CHARS
+
+#define ACMDM_DRIVER_NOTIFY             (ACMDM_BASE + 1)
+#define ACMDM_DRIVER_DETAILS            (ACMDM_BASE + 10)
+
+#define ACMDM_HARDWARE_WAVE_CAPS_INPUT  (ACMDM_BASE + 20)
+#define ACMDM_HARDWARE_WAVE_CAPS_OUTPUT (ACMDM_BASE + 21)
+
+#define ACMDM_FORMATTAG_DETAILS         (ACMDM_BASE + 25)
+#define ACMDM_FORMAT_DETAILS            (ACMDM_BASE + 26)
+#define ACMDM_FORMAT_SUGGEST            (ACMDM_BASE + 27)
+
+#define ACMDM_FILTERTAG_DETAILS         (ACMDM_BASE + 50)
+#define ACMDM_FILTER_DETAILS            (ACMDM_BASE + 51)
+
+#define ACMDM_STREAM_OPEN               (ACMDM_BASE + 76)
+#define ACMDM_STREAM_CLOSE              (ACMDM_BASE + 77)
+#define ACMDM_STREAM_SIZE               (ACMDM_BASE + 78)
+#define ACMDM_STREAM_CONVERT            (ACMDM_BASE + 79)
+#define ACMDM_STREAM_RESET              (ACMDM_BASE + 80)
+#define ACMDM_STREAM_PREPARE            (ACMDM_BASE + 81)
+#define ACMDM_STREAM_UNPREPARE          (ACMDM_BASE + 82)
+#define ACMDM_STREAM_UPDATE             (ACMDM_BASE + 83)
+
+/***********************************************************************
+ * Structures
+ */
+
+typedef struct _ACMDRVOPENDESCA
+{
+  DWORD  cbStruct;
+  FOURCC fccType;
+  FOURCC fccComp;
+  DWORD  dwVersion;
+  DWORD  dwFlags;
+  DWORD  dwError;
+  LPCSTR pszSectionName;
+  LPCSTR pszAliasName;
+  DWORD  dnDevNode;
+} ACMDRVOPENDESCA, *PACMDRVOPENDESCA;
+
+typedef struct _ACMDRVOPENDESCW
+{
+  DWORD   cbStruct;
+  FOURCC  fccType;
+  FOURCC  fccComp;
+  DWORD   dwVersion;
+  DWORD   dwFlags;
+  DWORD   dwError;
+  LPCWSTR pszSectionName;
+  LPCWSTR pszAliasName;
+  DWORD   dnDevNode;
+} ACMDRVOPENDESCW, *PACMDRVOPENDESCW;
+
+typedef struct _ACMDRVSTREAMINSTANCE
+{
+  DWORD           cbStruct;
+  PWAVEFORMATEX   pwfxSrc;
+  PWAVEFORMATEX   pwfxDst;
+  PWAVEFILTER     pwfltr;
+  DWORD           dwCallback;
+  DWORD           dwInstance;
+  DWORD           fdwOpen;
+  DWORD           fdwDriver;
+  DWORD           dwDriver;
+  HACMSTREAM    has;
+} ACMDRVSTREAMINSTANCE, *PACMDRVSTREAMINSTANCE;
+
+typedef struct _ACMDRVSTREAMHEADER *PACMDRVSTREAMHEADER;
+typedef struct _ACMDRVSTREAMHEADER {
+  DWORD  cbStruct;
+  DWORD  fdwStatus;
+  DWORD  dwUser;
+  LPBYTE pbSrc;
+  DWORD  cbSrcLength;
+  DWORD  cbSrcLengthUsed;
+  DWORD  dwSrcUser;
+  LPBYTE pbDst;
+  DWORD  cbDstLength;
+  DWORD  cbDstLengthUsed;
+  DWORD  dwDstUser;
+
+  DWORD fdwConvert;
+  PACMDRVSTREAMHEADER *padshNext;
+  DWORD fdwDriver;
+  DWORD dwDriver;
+
+  /* Internal fields for ACM */
+  DWORD  fdwPrepared;
+  DWORD  dwPrepared;
+  LPBYTE pbPreparedSrc;
+  DWORD  cbPreparedSrcLength;
+  LPBYTE pbPreparedDst;
+  DWORD  cbPreparedDstLength;
+} ACMDRVSTREAMHEADER;
+
+typedef struct _ACMDRVSTREAMSIZE
+{
+  DWORD cbStruct;
+  DWORD fdwSize;
+  DWORD cbSrcLength;
+  DWORD cbDstLength;
+} ACMDRVSTREAMSIZE, *PACMDRVSTREAMSIZE;
+
+typedef struct _ACMDRVFORMATSUGGEST
+{
+  DWORD           cbStruct;
+  DWORD           fdwSuggest;
+  PWAVEFORMATEX   pwfxSrc;
+  DWORD           cbwfxSrc;
+  PWAVEFORMATEX   pwfxDst;
+  DWORD           cbwfxDst;
+} ACMDRVFORMATSUGGEST, *PACMDRVFORMATSUGGEST;
+
+#endif  /* __WINE_MSACMDRV_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mscat.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mscat.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mscat.h	(revision 16410)
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2004 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_MSCAT_H
+#define __WINE_MSCAT_H
+
+#include <mssip.h>
+
+typedef HANDLE HCATADMIN;
+typedef HANDLE HCATINFO;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#include <pshpack8.h>
+
+typedef struct CRYPTCATMEMBER_ {
+    DWORD cbStruct;
+    LPWSTR pwszReferenceTag;
+    LPWSTR pwszFileName;
+    GUID gSubjectType;
+    DWORD fdwMemberFlags;
+    struct SIP_INDIRECT_DATA_* pIndirectData;
+    DWORD dwCertVersion;
+    DWORD dwReserved;
+    HANDLE hReserved;
+    CRYPT_ATTR_BLOB sEncodedIndirectData;
+    CRYPT_ATTR_BLOB sEncodedMemberInfo;
+} CRYPTCATMEMBER;
+
+#include <poppack.h>
+
+
+BOOL      WINAPI CryptCATAdminAcquireContext(HCATADMIN*,const GUID*,DWORD);
+HCATINFO  WINAPI CryptCATAdminAddCatalog(HCATADMIN,PWSTR,PWSTR,DWORD);
+BOOL      WINAPI CryptCATAdminCalcHashFromFileHandle(HANDLE,DWORD*,BYTE*,DWORD);
+HCATINFO  WINAPI CryptCATAdminEnumCatalogFromHash(HCATADMIN,BYTE*,DWORD,DWORD,HCATINFO*);
+BOOL      WINAPI CryptCATAdminReleaseCatalogContext(HCATADMIN,HCATINFO,DWORD);
+BOOL      WINAPI CryptCATAdminReleaseContext(HCATADMIN,DWORD);
+BOOL      WINAPI CryptCATAdminRemoveCatalog(HCATADMIN,LPCWSTR,DWORD);
+BOOL      WINAPI CryptCATClose(HANDLE);
+CRYPTCATMEMBER* WINAPI CryptCATEnumerateMember(HANDLE,CRYPTCATMEMBER*);
+HANDLE    WINAPI CryptCATOpen(LPWSTR,DWORD,HCRYPTPROV,DWORD,DWORD);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mscoree.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mscoree.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mscoree.idl	(revision 16410)
@@ -0,0 +1,166 @@
+/*
+ * Copyright (C) 2007 Francois Gouget
+ * Copyright (C) 2008 Alistair Leslie-Hughes
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "unknwn.idl";
+cpp_quote("/* FIXME: #include <gcghost.h> */")
+cpp_quote("/* FIXME: #include <ivalidator.h> */")
+
+cpp_quote("HRESULT     WINAPI CorBindToRuntimeHost(LPCWSTR,LPCWSTR,LPCWSTR,VOID*,DWORD,REFCLSID,REFIID,LPVOID*);")
+cpp_quote("void        WINAPI CorExitProcess(int);")
+cpp_quote("HRESULT     WINAPI GetCORSystemDirectory(LPWSTR,DWORD,DWORD*);")
+cpp_quote("HRESULT     WINAPI GetCORVersion(LPWSTR,DWORD,DWORD*);")
+cpp_quote("HRESULT     WINAPI GetRequestedRuntimeInfo(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,DWORD,LPWSTR,DWORD,DWORD*,LPWSTR,DWORD,DWORD*);")
+cpp_quote("HRESULT     WINAPI LoadLibraryShim(LPCWSTR,LPCWSTR,LPVOID,HMODULE*);")
+
+typedef void* HDOMAINENUM;
+
+[
+    uuid(F31D1788-C397-4725-87A5-6AF3472C2791),
+    version(1.0),
+    object,
+    local
+]
+interface IGCThreadControl : IUnknown
+{
+    HRESULT ThreadIsBlockingForSuspension();
+
+    HRESULT SuspensionStarting();
+
+    HRESULT SuspensionEnding(DWORD generation);
+}
+
+[
+    uuid(5513D564-8374-4cb9-AED9-0083F4160A1D),
+    version(1.1),
+    local,
+    object
+]
+interface IGCHostControl : IUnknown
+{
+    HRESULT RequestVirtualMemLimit([in] SIZE_T nMaxVirtualMemMB,
+                                   [in, out] SIZE_T* nNewMaxVirtualMemMB);
+}
+
+[
+    uuid(23D86786-0BB5-4774-8FB5-E3522ADD6246),
+    version(1.0),
+    local,
+    object
+]
+interface IDebuggerThreadControl : IUnknown
+{
+    HRESULT ThreadIsBlockingForDebugger();
+
+    HRESULT ReleaseAllRuntimeThreads();
+
+    HRESULT StartBlockingForDebugger(DWORD dwUnused);
+}
+
+[
+    uuid(5C2B07A5-1E98-11d3-872F-00C04F79ED0D),
+    version(1.0),
+    local,
+    object
+]
+interface ICorConfiguration : IUnknown
+{
+    HRESULT SetGCThreadControl([in] IGCThreadControl* GCThreadControl);
+
+    HRESULT SetGCHostControl([in] IGCHostControl* GCHostControl);
+
+    HRESULT SetDebuggerThreadControl([in] IDebuggerThreadControl* debuggerThreadControl);
+
+    HRESULT AddDebuggerSpecialThread([in] DWORD specialThreadId);
+}
+
+[
+    uuid(9065597E-D1A1-4fb2-B6BA-7E1FCE230F61),
+    version(1.0),
+    local
+]
+interface ICLRControl : IUnknown
+{
+    HRESULT GetCLRManager([in] REFIID riid, [out] void **ppObject);
+
+        HRESULT SetAppDomainManagerType([in] LPCWSTR appDomainManagerAssembly,
+                          [in] LPCWSTR appDomainManagerType);
+}
+
+[
+    uuid(02CA073C-7079-4860-880A-C2F7A449C991),
+    version(1.0),
+    local
+]
+interface IHostControl : IUnknown
+{
+    HRESULT GetHostManager( [in] REFIID riid, [out] void **ppObject);
+
+    HRESULT SetAppDomainManager([in] DWORD appDomainID,
+                            [in] IUnknown* appDomainManager);
+}
+
+[
+    uuid(CB2F6722-AB3A-11d2-9C40-00C04FA30A3E),
+    version(1.0),
+    local,
+    object
+]
+interface ICorRuntimeHost : IUnknown
+{
+    HRESULT CreateLogicalThreadState();
+    HRESULT DeleteLogicalThreadState();
+    HRESULT SwitchInLogicalThreadState([in] DWORD *fiberCookie);
+
+    HRESULT SwitchOutLogicalThreadState([out] DWORD **fiberCookie);
+
+    HRESULT LocksHeldByLogicalThread( [out] DWORD *pCount );
+
+    HRESULT MapFile([in] HANDLE hFile, [out] HMODULE* mapAddress);
+
+    HRESULT GetConfiguration([out] ICorConfiguration** pConfiguration);
+
+    HRESULT Start();
+
+    HRESULT Stop();
+
+    HRESULT CreateDomain([in] LPCWSTR friendlyName,
+                         [in] IUnknown* identityArray,
+                         [out] IUnknown** appDomain);
+
+    HRESULT GetDefaultDomain([out] IUnknown** pAppDomain);
+
+    HRESULT EnumDomains([out] HDOMAINENUM *hEnum);
+
+    HRESULT NextDomain([in] HDOMAINENUM hEnum, [out] IUnknown** appDomain);
+
+    HRESULT CloseEnum([in] HDOMAINENUM hEnum);
+
+    HRESULT CreateDomainEx([in] LPCWSTR friendlyName,
+                           [in] IUnknown* setup,
+                           [in] IUnknown* evidence,
+                           [out] IUnknown** appDomain);
+
+    HRESULT CreateDomainSetup([out] IUnknown** appDomainSetup);
+
+    HRESULT CreateEvidence([out] IUnknown** evidence);
+
+    HRESULT UnloadDomain([in] IUnknown* appDomain);
+
+    HRESULT CurrentDomain([out] IUnknown** appDomain);
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mshtmcid.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mshtmcid.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mshtmcid.h	(revision 16410)
@@ -0,0 +1,425 @@
+/*
+ * Copyright 2006 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __mshtmcid_h__
+#define __mshtmcid_h__
+
+#define IDM_UNKNOWN                 0
+#define IDM_ALIGNBOTTOM             1
+#define IDM_ALIGNHORIZONTALCENTERS  2
+#define IDM_ALIGNLEFT               3
+#define IDM_ALIGNRIGHT              4
+#define IDM_ALIGNTOGRID             5
+#define IDM_ALIGNTOP                6
+#define IDM_ALIGNVERTICALCENTERS    7
+#define IDM_ARRANGEBOTTOM           8
+#define IDM_ARRANGERIGHT            9
+#define IDM_BRINGFORWARD            10
+#define IDM_BRINGTOFRONT            11
+#define IDM_CENTERHORIZONTALLY      12
+#define IDM_CENTERVERTICALLY        13
+#define IDM_CODE                    14
+#define IDM_COPY                    15
+#define IDM_CUT                     16
+#define IDM_DELETE                  17
+#define IDM_FONTNAME                18
+#define IDM_FONTSIZE                19
+#define IDM_GROUP                   20
+#define IDM_HORIZSPACECONCATENATE   21
+#define IDM_HORIZSPACEDECREASE      22
+#define IDM_HORIZSPACEINCREASE      23
+#define IDM_HORIZSPACEMAKEEQUAL     24
+#define IDM_INSERTOBJECT            25
+#define IDM_PASTE                   26
+#define IDM_PRINT                   27
+#define IDM_PROPERTIES              28
+#define IDM_REDO                    29
+#define IDM_MULTILEVELREDO          30
+#define IDM_SELECTALL               31
+#define IDM_SENDBACKWARD            32
+#define IDM_SENDTOBACK              33
+#define IDM_SHOWTABLE               34
+#define IDM_SIZETOCONTROL           35
+#define IDM_SIZETOCONTROLHEIGHT     36
+#define IDM_SIZETOCONTROLWIDTH      37
+#define IDM_SIZETOFIT               38
+#define IDM_SIZETOGRID              39
+#define IDM_SNAPTOGRID              40
+#define IDM_TABORDER                41
+#define IDM_TOOLBOX                 42
+#define IDM_UNDO                    43
+#define IDM_MULTILEVELUNDO          44
+#define IDM_UNGROUP                 45
+#define IDM_VERTSPACECONCATENATE    46
+#define IDM_VERTSPACEDECREASE       47
+#define IDM_VERTSPACEINCREASE       48
+#define IDM_VERTSPACEMAKEEQUAL      49
+#define IDM_JUSTIFYFULL             50
+#define IDM_ZOOMPERCENT             50
+#define IDM_BACKCOLOR               51
+#define IDM_BOLD                    52
+#define IDM_BORDERCOLOR             53
+#define IDM_FLAT                    54
+#define IDM_FORECOLOR               55
+#define IDM_ITALIC                  56
+#define IDM_JUSTIFYCENTER           57
+#define IDM_JUSTIFYGENERAL          58
+#define IDM_JUSTIFYLEFT             59
+#define IDM_JUSTIFYRIGHT            60
+#define IDM_RAISED                  61
+#define IDM_SUNKEN                  62
+#define IDM_UNDERLINE               63
+#define IDM_CHISELED                64
+#define IDM_ETCHED                  65
+#define IDM_SHADOWED                66
+#define IDM_FIND                    67
+#define IDM_GETZOOM                 68
+#define IDM_SHOWGRID                69
+#define IDM_SAVE                    70
+#define IDM_SAVEAS                  71
+#define IDM_OBJECTVERBLIST0         72
+#define IDM_OBJECTVERBLIST1         73
+#define IDM_OBJECTVERBLIST2         74
+#define IDM_OBJECTVERBLIST3         75
+#define IDM_OBJECTVERBLIST4         76
+#define IDM_OBJECTVERBLIST5         77
+#define IDM_OBJECTVERBLIST6         78
+#define IDM_OBJECTVERBLIST7         79
+#define IDM_OBJECTVERBLIST8         80
+#define IDM_OBJECTVERBLIST9         81
+
+#define IDM_OBJECTVERBLISTLAST      IDM_OBJECTVERBLIST9
+
+#define IDM_CONVERTOBJECT           82
+#define IDM_CUSTOMCONTROL           83
+#define IDM_CUSTOMIZEITEM           84
+#define IDM_RENAME                  85
+#define IDM_IMPORT                  86
+#define IDM_NEWPAGE                 87
+#define IDM_MOVE                    88
+#define IDM_CANCEL                  89
+#define IDM_FONT                    90
+#define IDM_STRIKETHROUGH           91
+#define IDM_DELETEWORD              92
+#define IDM_EXECPRINT               93
+#define IDM_JUSTIFYNONE             94
+#define IDM_TRISTATEBOLD            95
+#define IDM_TRISTATEITALIC          96
+#define IDM_TRISTATEUNDERLINE       97
+
+#define IDM_OPEN                          2000
+#define IDM_NEW                           2001
+#define IDM_SAVECOPYAS                    2002
+#define IDM_PRINTPREVIEW                  2003
+#define IDM_PAGESETUP                     2004
+#define IDM_SPELL                         2005
+#define IDM_PASTESPECIAL                  2006
+#define IDM_CLEARSELECTION                2007
+#define IDM_FOLLOW_ANCHOR                 2008
+
+#define IDM_SHOWPRINT                     2010
+#define IDM_SHOWPAGESETUP                 2011
+
+#define IDM_INSINPUTIMAGE                 2114
+#define IDM_INSINPUTBUTTON                2115
+#define IDM_INSINPUTRESET                 2116
+#define IDM_INSINPUTSUBMIT                2117
+#define IDM_INSINPUTUPLOAD                2118
+#define IDM_INSFIELDSET                   2119
+#define IDM_PASTEINSERT                   2120
+#define IDM_REPLACE                       2121
+#define IDM_EDITSOURCE                    2122
+#define IDM_BOOKMARK                      2123
+#define IDM_HYPERLINK                     2124
+#define IDM_UNLINK                        2125
+#define IDM_BROWSEMODE                    2126
+#define IDM_EDITMODE                      2127
+#define IDM_UNBOOKMARK                    2128
+
+#define IDM_TOOLBARS                      2130
+#define IDM_STATUSBAR                     2131
+#define IDM_FORMATMARK                    2132
+#define IDM_TEXTONLY                      2133
+
+#define IDM_OPTIONS                       2135
+#define IDM_FOLLOWLINKC                   2136
+#define IDM_FOLLOWLINKN                   2137
+#define IDM_STOP                          2138
+#define IDM_VIEWSOURCE                    2139
+#define IDM_ZOOMPOPUP                     2140
+#define IDM_BASELINEFONT1                 2141
+#define IDM_BASELINEFONT2                 2142
+#define IDM_BASELINEFONT3                 2143
+#define IDM_BASELINEFONT4                 2144
+#define IDM_BASELINEFONT5                 2145
+
+#define IDM_HORIZONTALLINE                2150
+#define IDM_LINEBREAKNORMAL               2151
+#define IDM_LINEBREAKLEFT                 2152
+#define IDM_LINEBREAKRIGHT                2153
+#define IDM_LINEBREAKBOTH                 2154
+#define IDM_NONBREAK                      2155
+#define IDM_SPECIALCHAR                   2156
+#define IDM_HTMLSOURCE                    2157
+#define IDM_IFRAME                        2158
+#define IDM_HTMLCONTAIN                   2159
+
+#define IDM_TEXTBOX                       2161
+#define IDM_TEXTAREA                      2162
+#define IDM_CHECKBOX                      2163
+#define IDM_RADIOBUTTON                   2164
+#define IDM_DROPDOWNBOX                   2165
+#define IDM_LISTBOX                       2166
+#define IDM_BUTTON                        2167
+#define IDM_IMAGE                         2168
+#define IDM_OBJECT                        2169
+#define IDM_1D                            2170
+#define IDM_IMAGEMAP                      2171
+#define IDM_FILE                          2172
+#define IDM_COMMENT                       2173
+#define IDM_SCRIPT                        2174
+#define IDM_JAVAAPPLET                    2175
+#define IDM_PLUGIN                        2176
+#define IDM_PAGEBREAK                     2177
+#define IDM_HTMLAREA                      2178
+
+#define IDM_PARAGRAPH                     2180
+#define IDM_FORM                          2181
+#define IDM_MARQUEE                       2182
+#define IDM_LIST                          2183
+#define IDM_ORDERLIST                     2184
+#define IDM_UNORDERLIST                   2185
+#define IDM_INDENT                        2186
+#define IDM_OUTDENT                       2187
+#define IDM_PREFORMATTED                  2188
+#define IDM_ADDRESS                       2189
+#define IDM_BLINK                         2190
+#define IDM_DIV                           2191
+
+#define IDM_TABLEINSERT                   2200
+#define IDM_RCINSERT                      2201
+#define IDM_CELLINSERT                    2202
+#define IDM_CAPTIONINSERT                 2203
+#define IDM_CELLMERGE                     2204
+#define IDM_CELLSPLIT                     2205
+#define IDM_CELLSELECT                    2206
+#define IDM_ROWSELECT                     2207
+#define IDM_COLUMNSELECT                  2208
+#define IDM_TABLESELECT                   2209
+#define IDM_TABLEPROPERTIES               2210
+#define IDM_CELLPROPERTIES                2211
+#define IDM_ROWINSERT                     2212
+#define IDM_COLUMNINSERT                  2213
+
+#define IDM_HELP_CONTENT                  2220
+#define IDM_HELP_ABOUT                    2221
+#define IDM_HELP_README                   2222
+
+#define IDM_REMOVEFORMAT                  2230
+#define IDM_PAGEINFO                      2231
+#define IDM_TELETYPE                      2232
+#define IDM_GETBLOCKFMTS                  2233
+#define IDM_BLOCKFMT                      2234
+#define IDM_SHOWHIDE_CODE                 2235
+#define IDM_TABLE                         2236
+#define IDM_COPYFORMAT                    2237
+#define IDM_PASTEFORMAT                   2238
+#define IDM_GOTO                          2239
+#define IDM_CHANGEFONT                    2240
+#define IDM_CHANGEFONTSIZE                2241
+
+#define IDM_CHANGECASE                    2246
+#define IDM_SUBSCRIPT                     2247
+#define IDM_SUPERSCRIPT                   2248
+#define IDM_SHOWSPECIALCHAR               2249
+#define IDM_CENTERALIGNPARA               2250
+#define IDM_LEFTALIGNPARA                 2251
+#define IDM_RIGHTALIGNPARA                2252
+#define IDM_REMOVEPARAFORMAT              2253
+#define IDM_APPLYNORMAL                   2254
+#define IDM_APPLYHEADING1                 2255
+#define IDM_APPLYHEADING2                 2256
+#define IDM_APPLYHEADING3                 2257
+
+#define IDM_DOCPROPERTIES                 2260
+#define IDM_ADDFAVORITES                  2261
+#define IDM_COPYSHORTCUT                  2262
+#define IDM_SAVEBACKGROUND                2263
+#define IDM_SETWALLPAPER                  2264
+#define IDM_COPYBACKGROUND                2265
+#define IDM_CREATESHORTCUT                2266
+#define IDM_PAGE                          2267
+#define IDM_SAVETARGET                    2268
+#define IDM_SHOWPICTURE                   2269
+#define IDM_SAVEPICTURE                   2270
+#define IDM_DYNSRCPLAY                    2271
+#define IDM_DYNSRCSTOP                    2272
+#define IDM_PRINTTARGET                   2273
+#define IDM_IMGARTPLAY                    2274
+#define IDM_IMGARTSTOP                    2275
+#define IDM_IMGARTREWIND                  2276
+#define IDM_PRINTQUERYJOBSPENDING         2277
+#define IDM_SETDESKTOPITEM                2278
+
+#define IDM_CONTEXTMENU                   2280
+
+#define IDM_GOBACKWARD                    2282
+#define IDM_GOFORWARD                     2283
+#define IDM_PRESTOP                       2284
+
+#define IDM_MP_MYPICS                     2287
+#define IDM_MP_EMAILPICTURE               2288
+#define IDM_MP_PRINTPICTURE               2289
+#define IDM_CREATELINK                    2290
+#define IDM_COPYCONTENT                   2291
+#define IDM_LANGUAGE                      2292
+ 
+#define IDM_GETPRINTTEMPLATE              2295
+#define IDM_SETPRINTTEMPLATE              2296
+#define IDM_TEMPLATE_PAGESETUP            2298
+
+#define IDM_REFRESH                       2300
+#define IDM_STOPDOWNLOAD                  2301
+#define IDM_ENABLE_INTERACTION            2302
+
+#define IDM_LAUNCHDEBUGGER                2310
+#define IDM_BREAKATNEXT                   2311
+#define IDM_INSINPUTHIDDEN                2312
+#define IDM_INSINPUTPASSWORD              2313
+#define IDM_OVERWRITE                     2314
+#define IDM_PARSECOMPLETE                 2315
+#define IDM_HTMLEDITMODE                  2316
+#define IDM_REGISTRYREFRESH               2317
+#define IDM_COMPOSESETTINGS               2318
+
+#define IDM_SHOWMISCTAGS                  2320
+#define IDM_SHOWALIGNEDSITETAGS           2321
+#define IDM_SHOWSCRIPTTAGS                2322
+#define IDM_SHOWSTYLETAGS                 2323
+#define IDM_SHOWCOMMENTTAGS               2324
+#define IDM_SHOWAREATAGS                  2325
+#define IDM_SHOWUNKNOWNTAGS               2326
+#define IDM_SHOWALLTAGS                   2327
+#define IDM_SHOWZEROBORDERATDESIGNTIME    2328
+#define IDM_AUTODETECT                    2329
+#define IDM_SCRIPTDEBUGGER                2330
+#define IDM_GETBYTESDOWNLOADED            2331
+#define IDM_NOACTIVATENORMALOLECONTROLS   2332
+#define IDM_NOACTIVATEDESIGNTIMECONTROLS  2333
+#define IDM_NOACTIVATEJAVAAPPLETS         2334
+#define IDM_NOFIXUPURLSONPASTE            2335
+#define IDM_EMPTYGLYPHTABLE               2336
+#define IDM_ADDTOGLYPHTABLE               2337
+#define IDM_REMOVEFROMGLYPHTABLE          2338
+#define IDM_REPLACEGLYPHCONTENTS          2339
+#define IDM_SHOWWBRTAGS                   2340
+#define IDM_PERSISTSTREAMSYNC             2341
+#define IDM_SETDIRTY                      2342
+#define IDM_RUNURLSCRIPT                  2343
+
+#ifdef IE5_ZOOM
+#define IDM_ZOOMRATIO                     2344
+#define IDM_GETZOOMNUMERATOR              2345
+#define IDM_GETZOOMDENOMINATOR            2346
+#endif
+
+#define IDM_DIRLTR                        2350
+#define IDM_DIRRTL                        2351
+#define IDM_BLOCKDIRLTR                   2352
+#define IDM_BLOCKDIRRTL                   2353
+#define IDM_INLINEDIRLTR                  2354
+#define IDM_INLINEDIRRTL                  2355
+#define IDM_ISTRUSTEDDLG                  2356
+#define IDM_INSERTSPAN                    2357
+#define IDM_LOCALIZEEDITOR                2358
+
+#define IDM_SAVEPRETRANSFORMSOURCE        2370
+#define IDM_VIEWPRETRANSFORMSOURCE        2371
+
+#define IDM_SCROLL_HERE                   2380
+#define IDM_SCROLL_TOP                    2381
+#define IDM_SCROLL_BOTTOM                 2382
+#define IDM_SCROLL_PAGEUP                 2383
+#define IDM_SCROLL_PAGEDOWN               2384
+#define IDM_SCROLL_UP                     2385
+#define IDM_SCROLL_DOWN                   2386
+#define IDM_SCROLL_LEFTEDGE               2387
+#define IDM_SCROLL_RIGHTEDGE              2388
+#define IDM_SCROLL_PAGELEFT               2389
+#define IDM_SCROLL_PAGERIGHT              2390
+#define IDM_SCROLL_LEFT                   2391
+#define IDM_SCROLL_RIGHT                  2392
+#define IDM_MULTIPLESELECTION             2393
+#define IDM_2D_POSITION                   2394
+#define IDM_2D_ELEMENT                    2395
+#define IDM_1D_ELEMENT                    2396
+#define IDM_ABSOLUTE_POSITION             2397
+#define IDM_LIVERESIZE                    2398
+#define IDM_ATOMICSELECTION               2399
+#define IDM_AUTOURLDETECT_MODE            2400
+#define IDM_IE50_PASTE                    2401
+#define IDM_IE50_PASTE_MODE               2402
+#define IDM_GETIPRINT                     2403
+#define IDM_DISABLE_EDITFOCUS_UI          2404
+#define IDM_RESPECTVISIBILITY_INDESIGN    2405
+#define IDM_CSSEDITING_LEVEL              2406
+#define IDM_UI_OUTDENT                    2407
+#define IDM_UPDATEPAGESTATUS              2408
+#define IDM_IME_ENABLE_RECONVERSION       2409
+#define IDM_KEEPSELECTION                 2410
+#define IDM_UNLOADDOCUMENT                2411
+
+#define IDM_OVERRIDE_CURSOR               2420
+
+#define IDM_PEERHITTESTSAMEINEDIT         2423
+
+#define IDM_TRUSTAPPCACHE                 2425
+
+#define IDM_BACKGROUNDIMAGECACHE          2430
+
+#define IDM_MIMECSET__FIRST_  3609
+#define IDM_MIMECSET__LAST__  3699
+
+#define IDM_MENUEXT_FIRST__  3700
+#define IDM_MENUEXT_LAST__   3732
+#define IDM_MENUEXT_COUNT    3733
+
+#define IDM_DEFAULTBLOCK  6046
+
+#define IDM_NEW_TOPLEVELWINDOW  7050
+
+#define IDM_PRESERVEUNDOALWAYS    6049
+#define IDM_PERSISTDEFAULTVALUES  7100
+#define IDM_PROTECTMETATAGS       7101
+
+#define IDM_GETFRAMEZONE  6037
+
+#define IDM_FIRE_PRINTTEMPLATEUP    15000
+#define IDM_FIRE_PRINTTEMPLATEDOWN  15001
+#define IDM_SETPRINTHANDLES         15002
+
+#define CMD_ZOOM_PAGEWIDTH  -1
+#define CMD_ZOOM_ONEPAGE    -2
+#define CMD_ZOOM_TWOPAGES   -3
+#define CMD_ZOOM_SELECTION  -4
+#define CMD_ZOOM_FIT -5
+
+#define IDM_CONTEXT  1
+#define IDM_HWND     2
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mshtmdid.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mshtmdid.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mshtmdid.h	(revision 16410)
@@ -0,0 +1,2417 @@
+/*
+ * Copyright 2004,2006 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __MSHTMDID_H__
+#define __MSHTMDID_H__
+
+#define DISPID_NORMAL_FIRST     1000
+#define DISPID_OMDOCUMENT       DISPID_NORMAL_FIRST
+#define DISPID_DATATRANSFER     DISPID_NORMAL_FIRST
+#define DISPID_ANCHOR           DISPID_NORMAL_FIRST
+#define DISPID_BLOCK            DISPID_NORMAL_FIRST
+#define DISPID_BR               DISPID_NORMAL_FIRST
+#define DISPID_BGSOUND          DISPID_NORMAL_FIRST
+#define DISPID_DD               DISPID_NORMAL_FIRST
+#define DISPID_DIR              DISPID_NORMAL_FIRST
+#define DISPID_DIV              DISPID_NORMAL_FIRST
+#define DISPID_DL               DISPID_NORMAL_FIRST
+#define DISPID_DT               DISPID_NORMAL_FIRST
+#define DISPID_EFONT            DISPID_NORMAL_FIRST
+#define DISPID_FORM             DISPID_NORMAL_FIRST
+#define DISPID_HEADER           DISPID_NORMAL_FIRST
+#define DISPID_HEDELEMS         DISPID_NORMAL_FIRST
+#define DISPID_HR               DISPID_NORMAL_FIRST
+#define DISPID_LABEL            DISPID_NORMAL_FIRST
+#define DISPID_LI               DISPID_NORMAL_FIRST
+#define DISPID_IMGBASE          DISPID_NORMAL_FIRST
+#define DISPID_MENU             DISPID_NORMAL_FIRST
+#define DISPID_OL               DISPID_NORMAL_FIRST
+#define DISPID_PARA             DISPID_NORMAL_FIRST
+#define DISPID_SELECT           DISPID_NORMAL_FIRST
+#define DISPID_SELECTOBJ        DISPID_NORMAL_FIRST
+#define DISPID_TABLE            DISPID_NORMAL_FIRST
+#define DISPID_TEXTSITE         DISPID_NORMAL_FIRST
+#define DISPID_UL               DISPID_NORMAL_FIRST
+#define DISPID_PHRASE           DISPID_NORMAL_FIRST
+#define DISPID_UNKNOWNPDL       DISPID_NORMAL_FIRST
+#define DISPID_COMMENTPDL       DISPID_NORMAL_FIRST
+#define DISPID_RANGE            DISPID_NORMAL_FIRST
+#define DISPID_SELECTION        DISPID_NORMAL_FIRST
+#define DISPID_OPTION           DISPID_NORMAL_FIRST
+#define DISPID_RANGE            DISPID_NORMAL_FIRST
+#define DISPID_SELECTION        DISPID_NORMAL_FIRST
+#define DISPID_OPTION           DISPID_NORMAL_FIRST
+#define DISPID_RANGE            DISPID_NORMAL_FIRST
+#define DISPID_SELECTION        DISPID_NORMAL_FIRST
+#define DISPID_OPTION           DISPID_NORMAL_FIRST
+#define DISPID_RANGE            DISPID_NORMAL_FIRST
+#define DISPID_SELECTION        DISPID_NORMAL_FIRST
+#define DISPID_OPTION           DISPID_NORMAL_FIRST
+#define DISPID_RANGE            DISPID_NORMAL_FIRST
+#define DISPID_SELECTION        DISPID_NORMAL_FIRST
+#define DISPID_OPTION           DISPID_NORMAL_FIRST
+#define DISPID_MAP              DISPID_NORMAL_FIRST
+#define DISPID_AREA             DISPID_NORMAL_FIRST
+#define DISPID_PARAM            DISPID_NORMAL_FIRST
+#define DISPID_TABLESECTION     DISPID_NORMAL_FIRST
+#define DISPID_TABLEROW         DISPID_NORMAL_FIRST
+#define DISPID_TABLECOL         DISPID_NORMAL_FIRST
+#define DISPID_SCRIPT           DISPID_NORMAL_FIRST
+#define DISPID_STYLESHEET       DISPID_NORMAL_FIRST
+#define DISPID_STYLERULE        DISPID_NORMAL_FIRST
+#define DISPID_STYLESHEETS_COL  DISPID_NORMAL_FIRST
+#define DISPID_STYLERULES_COL   DISPID_NORMAL_FIRST
+#define DISPID_MIMETYPES_COL    DISPID_NORMAL_FIRST
+#define DISPID_PLUGINS_COL      DISPID_NORMAL_FIRST
+#define DISPID_2D               DISPID_NORMAL_FIRST
+#define DISPID_OMWINDOW         DISPID_NORMAL_FIRST
+#define DISPID_EVENTOBJ         DISPID_NORMAL_FIRST
+#define DISPID_OLESITE          DISPID_NORMAL_FIRST
+#define DISPID_FRAMESET         DISPID_NORMAL_FIRST
+#define DISPID_LINK             DISPID_NORMAL_FIRST
+#define DISPID_STYLEELEMENT     DISPID_NORMAL_FIRST
+#define DISPID_FILTERS          DISPID_NORMAL_FIRST
+#define DISPID_TABLESECTION     DISPID_NORMAL_FIRST
+#define DISPID_OMRECT           DISPID_NORMAL_FIRST
+#define DISPID_OMDOCUMENT       DISPID_NORMAL_FIRST
+#define DISPID_SCREEN           DISPID_NORMAL_FIRST
+#define DISPID_DOMATTRIBUTE     DISPID_NORMAL_FIRST
+#define DISPID_DOMTEXTNODE      DISPID_NORMAL_FIRST
+#define DISPID_GENERIC          DISPID_NORMAL_FIRST
+#define DISPID_DOMIMPLEMENTATION  DISPID_NORMAL_FIRST
+
+#define DISPID_COLLECTION      (DISPID_NORMAL_FIRST+500)
+#define DISPID_OPTIONS_COL     (DISPID_NORMAL_FIRST+500)
+#define DISPID_IMG             (DISPID_IMGBASE+1000)
+#define DISPID_INPUTIMAGE      (DISPID_IMGBASE+1000)
+#define DISPID_INPUT           (DISPID_TEXTSITE+1000)
+#define DISPID_TABLECELL       (DISPID_TEXTSITE+1000)
+#define DISPID_1D              (DISPID_TEXTSITE+1000)
+#define DISPID_BODY            (DISPID_TEXTSITE+1000)
+#define DISPID_INPUTTEXTBASE   (DISPID_INPUT+1000)
+#define DISPID_INPUTTEXT       (DISPID_INPUTTEXTBASE+1000)
+#define DISPID_TEXTAREA        (DISPID_INPUTTEXT+1000)
+#define DISPID_MARQUEE         (DISPID_TEXTAREA+1000)
+#define DISPID_RICHTEXT        (DISPID_MARQUEE+1000)
+#define DISPID_BUTTON          (DISPID_RICHTEXT+1000)
+
+#define DISPID_XOBJ_MIN       0x80010000
+#define DISPID_XOBJ_MAX       0x8001FFFF
+#define DISPID_XOBJ_BASE      DISPID_XOBJ_MIN
+#define DISPID_HTMLOBJECT     (DISPID_XOBJ_BASE+500)
+#define DISPID_ELEMENT        (DISPID_HTMLOBJECT+500)
+#define DISPID_SITE           (DISPID_ELEMENT+1000)
+#define DISPID_OBJECT         (DISPID_SITE+1000)
+#define DISPID_STYLE          (DISPID_OBJECT+1000)
+#define DISPID_ATTRS          (DISPID_STYLE+1000)
+#define DISPID_EVENTS         (DISPID_ATTRS+1000)
+#define DISPID_XOBJ_EXPANDO   (DISPID_EVENTS+1000)
+#define DISPID_XOBJ_ORDINAL   (DISPID_XOBJ_EXPANDO+1000)
+#define DISPID_RADIO          (DISPID_CHECKBOX+1000)
+#define DISPID_FRAMESITE      (DISPID_SITE+1000)
+#define DISPID_FRAME          (DISPID_FRAMESITE+1000)
+#define DISPID_IFRAME         (DISPID_FRAMESITE+1000)
+
+#define DISPID_WINDOW      1
+#define DISPID_HISTORY     1
+#define DISPID_LOCATION    1
+#define DISPID_NAVIGATOR   1
+
+#define STDPROPID_XOBJ_NAME              (DISPID_XOBJ_BASE+0)
+#define STDPROPID_XOBJ_INDEX             (DISPID_XOBJ_BASE+1)
+#define STDPROPID_XOBJ_BASEHREF          (DISPID_XOBJ_BASE+2)
+#define STDPROPID_XOBJ_LEFT              (DISPID_XOBJ_BASE+3)
+#define STDPROPID_XOBJ_TOP               (DISPID_XOBJ_BASE+4)
+#define STDPROPID_XOBJ_WIDTH             (DISPID_XOBJ_BASE+5)
+#define STDPROPID_XOBJ_HEIGHT            (DISPID_XOBJ_BASE+6)
+#define STDPROPID_XOBJ_VISIBLE           (DISPID_XOBJ_BASE+7)
+#define STDPROPID_XOBJ_PARENT            (DISPID_XOBJ_BASE+8)
+#define STDPROPID_XOBJ_DRAGMODE          (DISPID_XOBJ_BASE+9)
+#define STDPROPID_XOBJ_DRAGICON          (DISPID_XOBJ_BASE+10)
+#define STDPROPID_XOBJ_TAG               (DISPID_XOBJ_BASE+11)
+#define STDPROPID_XOBJ_TABSTOP           (DISPID_XOBJ_BASE+14)
+#define STDPROPID_XOBJ_TABINDEX          (DISPID_XOBJ_BASE+15)
+#define STDPROPID_XOBJ_HELPCONTEXTID     (DISPID_XOBJ_BASE+50)
+#define STDPROPID_XOBJ_DEFAULT           (DISPID_XOBJ_BASE+55)
+#define STDPROPID_XOBJ_CANCEL            (DISPID_XOBJ_BASE+56)
+#define STDPROPID_XOBJ_LEFTNORUN         (DISPID_XOBJ_BASE+57)
+#define STDPROPID_XOBJ_TOPNORUN          (DISPID_XOBJ_BASE+58)
+#define STDPROPID_XOBJ_ALIGNPERSIST      (DISPID_XOBJ_BASE+60)
+#define STDPROPID_XOBJ_LINKTIMEOUT       (DISPID_XOBJ_BASE+61)
+#define STDPROPID_XOBJ_LINKTOPIC         (DISPID_XOBJ_BASE+62)
+#define STDPROPID_XOBJ_LINKITEM          (DISPID_XOBJ_BASE+63)
+#define STDPROPID_XOBJ_LINKMODE          (DISPID_XOBJ_BASE+64)
+#define STDPROPID_XOBJ_DATACHANGED       (DISPID_XOBJ_BASE+65)
+#define STDPROPID_XOBJ_DATAFIELD         (DISPID_XOBJ_BASE+66)
+#define STDPROPID_XOBJ_DATASOURCE        (DISPID_XOBJ_BASE+67)
+#define STDPROPID_XOBJ_WHATSTHISHELPID   (DISPID_XOBJ_BASE+68)
+#define STDPROPID_XOBJ_CONTROLTIPTEXT    (DISPID_XOBJ_BASE+69)
+#define STDPROPID_XOBJ_STATUSBARTEXT     (DISPID_XOBJ_BASE+70)
+#define STDPROPID_XOBJ_APPLICATION       (DISPID_XOBJ_BASE+71)
+#define STDPROPID_XOBJ_BLOCKALIGN        (DISPID_XOBJ_BASE+72)
+#define STDPROPID_XOBJ_CONTROLALIGN      (DISPID_XOBJ_BASE+73)
+#define STDPROPID_XOBJ_STYLE             (DISPID_XOBJ_BASE+74)
+#define STDPROPID_XOBJ_COUNT             (DISPID_XOBJ_BASE+75)
+#define STDPROPID_XOBJ_DISABLED          (DISPID_XOBJ_BASE+76)
+#define STDPROPID_XOBJ_RIGHT             (DISPID_XOBJ_BASE+77)
+#define STDPROPID_XOBJ_BOTTOM            (DISPID_XOBJ_BASE+78)
+
+#define STDDISPID_XOBJ_ONBLUR             (DISPID_XOBJ_BASE+0)
+#define STDDISPID_XOBJ_ONFOCUS            (DISPID_XOBJ_BASE+1)
+#define STDDISPID_XOBJ_BEFOREUPDATE       (DISPID_XOBJ_BASE+4)
+#define STDDISPID_XOBJ_AFTERUPDATE        (DISPID_XOBJ_BASE+5)
+#define STDDISPID_XOBJ_ONROWEXIT          (DISPID_XOBJ_BASE+6)
+#define STDDISPID_XOBJ_ONROWENTER         (DISPID_XOBJ_BASE+7)
+#define STDDISPID_XOBJ_ONMOUSEOVER        (DISPID_XOBJ_BASE+8)
+#define STDDISPID_XOBJ_ONMOUSEOUT         (DISPID_XOBJ_BASE+9)
+#define STDDISPID_XOBJ_ONHELP             (DISPID_XOBJ_BASE+10)
+#define STDDISPID_XOBJ_ONDRAGSTART        (DISPID_XOBJ_BASE+11)
+#define STDDISPID_XOBJ_ONSELECTSTART      (DISPID_XOBJ_BASE+12)
+#define STDDISPID_XOBJ_ERRORUPDATE        (DISPID_XOBJ_BASE+13)
+#define STDDISPID_XOBJ_ONDATASETCHANGED   (DISPID_XOBJ_BASE+14)
+#define STDDISPID_XOBJ_ONDATAAVAILABLE    (DISPID_XOBJ_BASE+15)
+#define STDDISPID_XOBJ_ONDATASETCOMPLETE  (DISPID_XOBJ_BASE+16)
+#define STDDISPID_XOBJ_ONFILTER           (DISPID_XOBJ_BASE+17)
+#define STDDISPID_XOBJ_ONLOSECAPTURE      (DISPID_XOBJ_BASE+18)
+#define STDDISPID_XOBJ_ONPROPERTYCHANGE   (DISPID_XOBJ_BASE+19)
+#define STDDISPID_XOBJ_ONDRAG             (DISPID_XOBJ_BASE+20)
+#define STDDISPID_XOBJ_ONDRAGEND          (DISPID_XOBJ_BASE+21)
+#define STDDISPID_XOBJ_ONDRAGENTER        (DISPID_XOBJ_BASE+22)
+#define STDDISPID_XOBJ_ONDRAGOVER         (DISPID_XOBJ_BASE+23)
+#define STDDISPID_XOBJ_ONDRAGLEAVE        (DISPID_XOBJ_BASE+24)
+#define STDDISPID_XOBJ_ONDROP             (DISPID_XOBJ_BASE+25)
+#define STDDISPID_XOBJ_ONCUT              (DISPID_XOBJ_BASE+26)
+#define STDDISPID_XOBJ_ONCOPY             (DISPID_XOBJ_BASE+27)
+#define STDDISPID_XOBJ_ONPASTE            (DISPID_XOBJ_BASE+28)
+#define STDDISPID_XOBJ_ONBEFORECUT        (DISPID_XOBJ_BASE+29)
+#define STDDISPID_XOBJ_ONBEFORECOPY       (DISPID_XOBJ_BASE+30)
+#define STDDISPID_XOBJ_ONBEFOREPASTE      (DISPID_XOBJ_BASE+31)
+#define STDDISPID_XOBJ_ONROWSDELETE       (DISPID_XOBJ_BASE+32)
+#define STDDISPID_XOBJ_ONROWSINSERTED     (DISPID_XOBJ_BASE+33)
+#define STDDISPID_XOBJ_ONCELLCHANGE       (DISPID_XOBJ_BASE+34)
+
+#define DISPID_A_FIRST                       DISPID_ATTRS
+#define DISPID_A_BACKGROUNDIMAGE             (DISPID_A_FIRST+1)
+#define DISPID_A_COLOR                       (DISPID_A_FIRST+2)
+#define DISPID_A_TEXTTRANSFORM               (DISPID_A_FIRST+4)
+#define DISPID_A_NOWRAP                      (DISPID_A_FIRST+5)
+#define DISPID_A_LINEHEIGHT                  (DISPID_A_FIRST+6)
+#define DISPID_A_TEXTINDENT                  (DISPID_A_FIRST+7)
+#define DISPID_A_LETTERSPACING               (DISPID_A_FIRST+8)
+#define DISPID_A_LANG                        (DISPID_A_FIRST+9)
+#define DISPID_A_OVERFLOW                    (DISPID_A_FIRST+10)
+#define DISPID_A_PADDING                     (DISPID_A_FIRST+11)
+#define DISPID_A_PADDINGTOP                  (DISPID_A_FIRST+12)
+#define DISPID_A_PADDINGRIGHT                (DISPID_A_FIRST+13)
+#define DISPID_A_PADDINGBOTTOM               (DISPID_A_FIRST+14)
+#define DISPID_A_PADDINGLEFT                 (DISPID_A_FIRST+15)
+#define DISPID_A_CLEAR                       (DISPID_A_FIRST+16)
+#define DISPID_A_LISTTYPE                    (DISPID_A_FIRST+17)
+#define DISPID_A_FONTFACE                    (DISPID_A_FIRST+18)
+#define DISPID_A_FONTSIZE                    (DISPID_A_FIRST+19)
+#define DISPID_A_TEXTDECORATIONLINETHROUGH   (DISPID_A_FIRST+20)
+#define DISPID_A_TEXTDECORATIONUNDERLINE     (DISPID_A_FIRST+21)
+#define DISPID_A_TEXTDECORATIONBLINK         (DISPID_A_FIRST+22)
+#define DISPID_A_TEXTDECORATIONNONE          (DISPID_A_FIRST+23)
+#define DISPID_A_FONTSTYLE                   (DISPID_A_FIRST+24)
+#define DISPID_A_FONTVARIANT                 (DISPID_A_FIRST+25)
+#define DISPID_A_BASEFONT                    (DISPID_A_FIRST+26)
+#define DISPID_A_FONTWEIGHT                  (DISPID_A_FIRST+27)
+#define DISPID_A_TABLEBORDERCOLOR            (DISPID_A_FIRST+28)
+#define DISPID_A_TABLEBORDERCOLORLIGHT       (DISPID_A_FIRST+29)
+#define DISPID_A_TABLEBORDERCOLORDARK        (DISPID_A_FIRST+30)
+#define DISPID_A_TABLEVALIGN                 (DISPID_A_FIRST+31)
+#define DISPID_A_BACKGROUND                  (DISPID_A_FIRST+32)
+#define DISPID_A_BACKGROUNDPOSX              (DISPID_A_FIRST+33)
+#define DISPID_A_BACKGROUNDPOSY              (DISPID_A_FIRST+34)
+#define DISPID_A_TEXTDECORATION              (DISPID_A_FIRST+35)
+#define DISPID_A_MARGIN                      (DISPID_A_FIRST+36)
+#define DISPID_A_MARGINTOP                   (DISPID_A_FIRST+37)
+#define DISPID_A_MARGINRIGHT                 (DISPID_A_FIRST+38)
+#define DISPID_A_MARGINBOTTOM                (DISPID_A_FIRST+39)
+#define DISPID_A_MARGINLEFT                  (DISPID_A_FIRST+40)
+#define DISPID_A_FONT                        (DISPID_A_FIRST+41)
+#define DISPID_A_FONTSIZEKEYWORD             (DISPID_A_FIRST+42)
+#define DISPID_A_FONTSIZECOMBINE             (DISPID_A_FIRST+43)
+#define DISPID_A_BACKGROUNDREPEAT            (DISPID_A_FIRST+44)
+#define DISPID_A_BACKGROUNDATTACHMENT        (DISPID_A_FIRST+45)
+#define DISPID_A_BACKGROUNDPOSITION          (DISPID_A_FIRST+46)
+#define DISPID_A_WORDSPACING                 (DISPID_A_FIRST+47)
+#define DISPID_A_VERTICALALIGN               (DISPID_A_FIRST+48)
+#define DISPID_A_BORDER                      (DISPID_A_FIRST+49)
+#define DISPID_A_BORDERTOP                   (DISPID_A_FIRST+50)
+#define DISPID_A_BORDERRIGHT                 (DISPID_A_FIRST+51)
+#define DISPID_A_BORDERBOTTOM                (DISPID_A_FIRST+52)
+#define DISPID_A_BORDERLEFT                  (DISPID_A_FIRST+53)
+#define DISPID_A_BORDERCOLOR                 (DISPID_A_FIRST+54)
+#define DISPID_A_BORDERTOPCOLOR              (DISPID_A_FIRST+55)
+#define DISPID_A_BORDERRIGHTCOLOR            (DISPID_A_FIRST+56)
+#define DISPID_A_BORDERBOTTOMCOLOR           (DISPID_A_FIRST+57)
+#define DISPID_A_BORDERLEFTCOLOR             (DISPID_A_FIRST+58)
+#define DISPID_A_BORDERWIDTH                 (DISPID_A_FIRST+59)
+#define DISPID_A_BORDERTOPWIDTH              (DISPID_A_FIRST+60)
+#define DISPID_A_BORDERRIGHTWIDTH            (DISPID_A_FIRST+61)
+#define DISPID_A_BORDERBOTTOMWIDTH           (DISPID_A_FIRST+62)
+#define DISPID_A_BORDERLEFTWIDTH             (DISPID_A_FIRST+63)
+#define DISPID_A_BORDERSTYLE                 (DISPID_A_FIRST+64)
+#define DISPID_A_BORDERTOPSTYLE              (DISPID_A_FIRST+65)
+#define DISPID_A_BORDERRIGHTSTYLE            (DISPID_A_FIRST+66)
+#define DISPID_A_BORDERBOTTOMSTYLE           (DISPID_A_FIRST+67)
+#define DISPID_A_BORDERLEFTSTYLE             (DISPID_A_FIRST+68)
+#define DISPID_A_TEXTDECORATIONOVERLINE      (DISPID_A_FIRST+69)
+#define DISPID_A_FLOAT                       (DISPID_A_FIRST+70)
+#define DISPID_A_DISPLAY                     (DISPID_A_FIRST+71)
+#define DISPID_A_LISTSTYLETYPE               (DISPID_A_FIRST+72)
+#define DISPID_A_LISTSTYLEPOSITION           (DISPID_A_FIRST+73)
+#define DISPID_A_LISTSTYLEIMAGE              (DISPID_A_FIRST+74)
+#define DISPID_A_LISTSTYLE                   (DISPID_A_FIRST+75)
+#define DISPID_A_WHITESPACE                  (DISPID_A_FIRST+76)
+#define DISPID_A_PAGEBREAKBEFORE             (DISPID_A_FIRST+77)
+#define DISPID_A_PAGEBREAKAFTER              (DISPID_A_FIRST+78)
+#define DISPID_A_SCROLL                      (DISPID_A_FIRST+79)
+#define DISPID_A_VISIBILITY                  (DISPID_A_FIRST+80)
+#define DISPID_A_HIDDEN                      (DISPID_A_FIRST+81)
+#define DISPID_A_FILTER                      (DISPID_A_FIRST+82)
+#define DISPID_DEFAULTVALUE                  (DISPID_A_FIRST+83)
+#define DISPID_A_BORDERCOLLAPSE              (DISPID_A_FIRST+84)
+#define DISPID_A_POSITION                    (DISPID_A_FIRST+90)
+#define DISPID_A_ZINDEX                      (DISPID_A_FIRST+91)
+#define DISPID_A_CLIP                        (DISPID_A_FIRST+92)
+#define DISPID_A_CLIPRECTTOP                 (DISPID_A_FIRST+93)
+#define DISPID_A_CLIPRECTRIGHT               (DISPID_A_FIRST+94)
+#define DISPID_A_CLIPRECTBOTTOM              (DISPID_A_FIRST+95)
+#define DISPID_A_CLIPRECTLEFT                (DISPID_A_FIRST+96)
+#define DISPID_A_FONTFACESRC                 (DISPID_A_FIRST+97)
+#define DISPID_A_TABLELAYOUT                 (DISPID_A_FIRST+98)
+#define DISPID_A_STYLETEXT                   (DISPID_A_FIRST+99)
+#define DISPID_A_LANGUAGE                    (DISPID_A_FIRST+100)
+#define DISPID_A_VALUE                       (DISPID_A_FIRST+101)
+#define DISPID_A_CURSOR                      (DISPID_A_FIRST+102)
+#define DISPID_A_EVENTSINK                   (DISPID_A_FIRST+103)
+#define DISPID_A_PROPNOTIFYSINK              (DISPID_A_FIRST+104)
+#define DISPID_A_ROWSETNOTIFYSINK            (DISPID_A_FIRST+105)
+#define DISPID_INTERNAL_INLINESTYLEAA        (DISPID_A_FIRST+106)
+#define DISPID_INTERNAL_CSTYLEPTRCACHE       (DISPID_A_FIRST+107)
+#define DISPID_INTERNAL_CRUNTIMESTYLEPTRCACHE  (DISPID_A_FIRST+108)
+#define DISPID_INTERNAL_INVOKECONTEXT        (DISPID_A_FIRST+109)
+#define DISPID_A_BGURLIMGCTXCACHEINDEX       (DISPID_A_FIRST+110)
+#define DISPID_A_LIURLIMGCTXCACHEINDEX       (DISPID_A_FIRST+111)
+#define DISPID_A_ROWSETASYNCHNOTIFYSINK      (DISPID_A_FIRST+112)
+#define DISPID_INTERNAL_FILTERPTRCACHE       (DISPID_A_FIRST+113)
+#define DISPID_A_ROWPOSITIONCHANGESINK       (DISPID_A_FIRST+114)
+#define DISPID_A_BEHAVIOR                    (DISPID_A_FIRST+115)
+#define DISPID_A_READYSTATE                  (DISPID_A_FIRST+116)
+#define DISPID_A_DIR                         (DISPID_A_FIRST+117)
+#define DISPID_A_UNICODEBIDI                 (DISPID_A_FIRST+118)
+#define DISPID_A_DIRECTION                   (DISPID_A_FIRST+119)
+#define DISPID_A_IMEMODE                     (DISPID_A_FIRST+120)
+#define DISPID_A_RUBYALIGN                   (DISPID_A_FIRST+121)
+#define DISPID_A_RUBYPOSITION                (DISPID_A_FIRST+122)
+#define DISPID_A_RUBYOVERHANG                (DISPID_A_FIRST+123)
+#define DISPID_INTERNAL_ONBEHAVIOR_CONTENTREADY   (DISPID_A_FIRST+124)
+#define DISPID_INTERNAL_ONBEHAVIOR_DOCUMENTREADY  (DISPID_A_FIRST+125)
+#define DISPID_INTERNAL_CDOMCHILDRENPTRCACHE (DISPID_A_FIRST+126)
+#define DISPID_A_LAYOUTGRIDCHAR              (DISPID_A_FIRST+127)
+#define DISPID_A_LAYOUTGRIDLINE              (DISPID_A_FIRST+128)
+#define DISPID_A_LAYOUTGRIDMODE              (DISPID_A_FIRST+129)
+#define DISPID_A_LAYOUTGRIDTYPE              (DISPID_A_FIRST+130)
+#define DISPID_A_LAYOUTGRID                  (DISPID_A_FIRST+131)
+#define DISPID_A_TEXTAUTOSPACE               (DISPID_A_FIRST+132)
+#define DISPID_A_LINEBREAK                   (DISPID_A_FIRST+133)
+#define DISPID_A_WORDBREAK                   (DISPID_A_FIRST+134)
+#define DISPID_A_TEXTJUSTIFY                 (DISPID_A_FIRST+135)
+#define DISPID_A_TEXTJUSTIFYTRIM             (DISPID_A_FIRST+136)
+#define DISPID_A_TEXTKASHIDA                 (DISPID_A_FIRST+137)
+#define DISPID_A_OVERFLOWX                   (DISPID_A_FIRST+139)
+#define DISPID_A_OVERFLOWY                   (DISPID_A_FIRST+140)
+#define DISPID_A_HTCDISPATCHITEM_VALUE       (DISPID_A_FIRST+141)
+#define DISPID_A_DOCFRAGMENT                 (DISPID_A_FIRST+142)
+#define DISPID_A_HTCDD_ELEMENT               (DISPID_A_FIRST+143)
+#define DISPID_A_HTCDD_CREATEEVENTOBJECT     (DISPID_A_FIRST+144)
+#define DISPID_A_URNATOM                     (DISPID_A_FIRST+145)
+#define DISPID_A_UNIQUEPEERNUMBER            (DISPID_A_FIRST+146)
+#define DISPID_A_ACCELERATOR                 (DISPID_A_FIRST+147)
+#define DISPID_INTERNAL_ONBEHAVIOR_APPLYSTYLE       (DISPID_A_FIRST+148)
+#define DISPID_INTERNAL_RUNTIMESTYLEAA              (DISPID_A_FIRST+149)
+#define DISPID_A_HTCDISPATCHITEM_VALUE_SCRIPTSONLY  (DISPID_A_FIRST+150)
+#define DISPID_A_EXTENDEDTAGDESC             (DISPID_A_FIRST+151)
+#define DISPID_A_ROTATE                      (DISPID_A_FIRST+152)
+#define DISPID_A_ZOOM                        (DISPID_A_FIRST+153)
+#define DISPID_A_HTCDD_PROTECTEDELEMENT      (DISPID_A_FIRST+154)
+#define DISPID_A_LAYOUTFLOW                  (DISPID_A_FIRST+155)
+#define DISPID_A_HTCDD_ISMARKUPSHARED        (DISPID_A_FIRST+157)
+#define DISPID_A_WORDWRAP                    (DISPID_A_FIRST+158)
+#define DISPID_A_TEXTUNDERLINEPOSITION       (DISPID_A_FIRST+159)
+#define DISPID_A_HASLAYOUT                   (DISPID_A_FIRST+160)
+#define DISPID_A_MEDIA                       (DISPID_A_FIRST+161)
+#define DISPID_A_EDITABLE                    (DISPID_A_FIRST+162)
+#define DISPID_A_HIDEFOCUS                   (DISPID_A_FIRST+163)
+#define DISPID_INTERNAL_LAYOUTRECTREGISTRYPTRCACHE  (DISPID_A_FIRST+164)
+#define DISPID_A_HTCDD_DEFAULTS              (DISPID_A_FIRST+165)
+#define DISPID_A_TEXTLINETHROUGHSTYLE        (DISPID_A_FIRST+166)
+#define DISPID_A_TEXTUNDERLINESTYLE          (DISPID_A_FIRST+167)
+#define DISPID_A_TEXTEFFECT                  (DISPID_A_FIRST+168)
+#define DISPID_A_TEXTBACKGROUNDCOLOR         (DISPID_A_FIRST+169)
+#define DISPID_A_RENDERINGPRIORITY           (DISPID_A_FIRST+170)
+#define DISPID_INTERNAL_DWNPOSTPTRCACHE      (DISPID_A_FIRST+171)
+#define DISPID_INTERNAL_CODEPAGESETTINGSPTRCACHE  (DISPID_A_FIRST+172)
+#define DISPID_INTERNAL_DWNDOCPTRCACHE       (DISPID_A_FIRST+173)
+#define DISPID_INTERNAL_DATABINDTASKPTRCACHE (DISPID_A_FIRST+174)
+#define DISPID_INTERNAL_URLLOCATIONCACHE     (DISPID_A_FIRST+175)
+#define DISPID_INTERNAL_ARYELEMENTRELEASENOTIFYPTRCACHE  (DISPID_A_FIRST+176)
+#define DISPID_INTERNAL_PEERFACTORYURLMAPPTRCACHE        (DISPID_A_FIRST+177)
+#define DISPID_INTERNAL_STMDIRTYPTRCACHE     (DISPID_A_FIRST+178)
+#define DISPID_INTERNAL_COMPUTEFORMATSTATECACHE  (DISPID_A_FIRST+179)
+#define DISPID_A_SCROLLBARBASECOLOR          (DISPID_A_FIRST+180)
+#define DISPID_A_SCROLLBARFACECOLOR          (DISPID_A_FIRST+181)
+#define DISPID_A_SCROLLBAR3DLIGHTCOLOR       (DISPID_A_FIRST+182)
+#define DISPID_A_SCROLLBARSHADOWCOLOR        (DISPID_A_FIRST+183)
+#define DISPID_A_SCROLLBARHIGHLIGHTCOLOR     (DISPID_A_FIRST+184)
+#define DISPID_A_SCROLLBARDARKSHADOWCOLOR    (DISPID_A_FIRST+185)
+#define DISPID_A_SCROLLBARARROWCOLOR         (DISPID_A_FIRST+186)
+#define DISPID_INTERNAL_ONBEHAVIOR_CONTENTSAVE  (DISPID_A_FIRST+187)
+#define DISPID_A_DEFAULTTEXTSELECTION        (DISPID_A_FIRST+188)
+#define DISPID_A_TEXTDECORATIONCOLOR         (DISPID_A_FIRST+189)
+#define DISPID_A_TEXTCOLOR                   (DISPID_A_FIRST+190)
+#define DISPID_A_STYLETEXTDECORATION         (DISPID_A_FIRST+191)
+#define DISPID_A_WRITINGMODE                 (DISPID_A_FIRST+192)
+#define DISPID_INTERNAL_MEDIA_REFERENCE      (DISPID_A_FIRST+193)
+#define DISPID_INTERNAL_GENERICCOMPLUSREF    (DISPID_A_FIRST+194)
+#define DISPID_INTERNAL_FOCUSITEMS           (DISPID_A_FIRST+195)
+#define DISPID_A_SCROLLBARTRACKCOLOR         (DISPID_A_FIRST+196)
+#define DISPID_INTERNAL_DWNHEADERCACHE       (DISPID_A_FIRST+197)
+#define DISPID_A_FROZEN                      (DISPID_A_FIRST+198)
+#define DISPID_A_VIEWINHERITSTYLE            (DISPID_A_FIRST+199)
+#define DISPID_INTERNAL_FRAMESCOLLECTION     (DISPID_A_FIRST+200)
+#define DISPID_A_BGURLIMGCTXCACHEINDEX_FLINE (DISPID_A_FIRST+201)
+#define DISPID_A_BGURLIMGCTXCACHEINDEX_FLETTER  (DISPID_A_FIRST+202)
+#define DISPID_A_TEXTALIGNLAST               (DISPID_A_FIRST+203)
+#define DISPID_A_TEXTKASHIDASPACE            (DISPID_A_FIRST+204)
+#define DISPID_INTERNAL_FONTHISTORYINDEX     (DISPID_A_FIRST+205)
+#define DISPID_A_ALLOWTRANSPARENCY           (DISPID_A_FIRST+206)
+#define DISPID_INTERNAL_URLSEARCHCACHE       (DISPID_A_FIRST+207)
+#define DISPID_A_ISBLOCK                     (DISPID_A_FIRST+208)
+#define DISPID_A_TEXTOVERFLOW                (DISPID_A_FIRST+209)
+#define DISPID_INTERNAL_CATTRIBUTECOLLPTRCACHE  (DISPID_A_FIRST+210)
+#define DISPID_A_MINHEIGHT                   (DISPID_A_FIRST+211)
+
+#define DISPID_WINDOWOBJECT          (-5500)
+#define DISPID_LOCATIONOBJECT        (-5506)
+#define DISPID_HISTORYOBJECT         (-5507)
+#define DISPID_NAVIGATOROBJECT       (-5508)
+#define DISPID_SECURITYCTX           (-5511)
+#define DISPID_AMBIENT_DLCONTROL     (-5512)
+#define DISPID_AMBIENT_USERAGENT     (-5513)
+#define DISPID_SECURITYDOMAIN        (-5514)
+
+#define DLCTL_DLIMAGES               0x00000010
+#define DLCTL_VIDEOS                 0x00000020
+#define DLCTL_BGSOUNDS               0x00000040
+#define DLCTL_NO_SCRIPTS             0x00000080
+#define DLCTL_NO_JAVA                0x00000100
+#define DLCTL_NO_RUNACTIVEXCTLS      0x00000200
+#define DLCTL_NO_DLACTIVEXCTLS       0x00000400
+#define DLCTL_DOWNLOADONLY           0x00000800
+#define DLCTL_NO_FRAMEDOWNLOAD       0x00001000
+#define DLCTL_RESYNCHRONIZE          0x00002000
+#define DLCTL_PRAGMA_NO_CACHE        0x00004000
+#define DLCTL_FORCEOFFLINE           0x10000000
+#define DLCTL_NO_CLIENTPULL          0x20000000
+#define DLCTL_SILENT                 0x40000000
+#define DLCTL_OFFLINEIFNOTCONNECTED  0x80000000
+#define DLCTL_OFFLINE                DLCTL_OFFLINEIFNOTCONNECTED
+
+/* events */
+#define DISPID_EVPROP_ONMOUSEOVER          (DISPID_EVENTS+0)
+#define DISPID_EVPROP_ONMOUSEOUT           (DISPID_EVENTS+1)
+#define DISPID_EVPROP_ONMOUSEDOWN          (DISPID_EVENTS+2)
+#define DISPID_EVPROP_ONMOUSEUP            (DISPID_EVENTS+3)
+#define DISPID_EVPROP_ONMOUSEMOVE          (DISPID_EVENTS+4)
+#define DISPID_EVPROP_ONKEYDOWN            (DISPID_EVENTS+5)
+#define DISPID_EVPROP_ONKEYUP              (DISPID_EVENTS+6)
+#define DISPID_EVPROP_ONKEYPRESS           (DISPID_EVENTS+7)
+#define DISPID_EVPROP_ONCLICK              (DISPID_EVENTS+8)
+#define DISPID_EVPROP_ONDBLCLICK           (DISPID_EVENTS+9)
+#define DISPID_EVPROP_ONSELECT             (DISPID_EVENTS+10)
+#define DISPID_EVPROP_ONSUBMIT             (DISPID_EVENTS+11)
+#define DISPID_EVPROP_ONRESET              (DISPID_EVENTS+12)
+#define DISPID_EVPROP_ONHELP               (DISPID_EVENTS+13)
+#define DISPID_EVPROP_ONFOCUS              (DISPID_EVENTS+14)
+#define DISPID_EVPROP_ONBLUR               (DISPID_EVENTS+15)
+#define DISPID_EVPROP_ONROWEXIT            (DISPID_EVENTS+18)
+#define DISPID_EVPROP_ONROWENTER           (DISPID_EVENTS+19)
+#define DISPID_EVPROP_ONBOUNCE             (DISPID_EVENTS+20)
+#define DISPID_EVPROP_ONBEFOREUPDATE       (DISPID_EVENTS+21)
+#define DISPID_EVPROP_ONAFTERUPDATE        (DISPID_EVENTS+22)
+#define DISPID_EVPROP_ONBEFOREDRAGOVER     (DISPID_EVENTS+23)
+#define DISPID_EVPROP_ONBEFOREDROPORPASTE  (DISPID_EVENTS+24)
+#define DISPID_EVPROP_ONREADYSTATECHANGE   (DISPID_EVENTS+25)
+#define DISPID_EVPROP_ONFINISH             (DISPID_EVENTS+26)
+#define DISPID_EVPROP_ONSTART              (DISPID_EVENTS+27)
+#define DISPID_EVPROP_ONABORT              (DISPID_EVENTS+28)
+#define DISPID_EVPROP_ONERROR              (DISPID_EVENTS+29)
+#define DISPID_EVPROP_ONCHANGE             (DISPID_EVENTS+30)
+#define DISPID_EVPROP_ONSCROLL             (DISPID_EVENTS+31)
+#define DISPID_EVPROP_ONLOAD               (DISPID_EVENTS+32)
+#define DISPID_EVPROP_ONUNLOAD             (DISPID_EVENTS+33)
+#define DISPID_EVPROP_ONLAYOUT             (DISPID_EVENTS+34)
+#define DISPID_EVPROP_ONDRAGSTART          (DISPID_EVENTS+35)
+#define DISPID_EVPROP_ONRESIZE             (DISPID_EVENTS+36)
+#define DISPID_EVPROP_ONSELECTSTART        (DISPID_EVENTS+37)
+#define DISPID_EVPROP_ONERRORUPDATE        (DISPID_EVENTS+38)
+#define DISPID_EVPROP_ONBEFOREUNLOAD       (DISPID_EVENTS+39)
+#define DISPID_EVPROP_ONDATASETCHANGED     (DISPID_EVENTS+40)
+#define DISPID_EVPROP_ONDATAAVAILABLE      (DISPID_EVENTS+41)
+#define DISPID_EVPROP_ONDATASETCOMPLETE    (DISPID_EVENTS+42)
+#define DISPID_EVPROP_ONFILTER             (DISPID_EVENTS+43)
+#define DISPID_EVPROP_ONCHANGEFOCUS        (DISPID_EVENTS+44)
+#define DISPID_EVPROP_ONCHANGEBLUR         (DISPID_EVENTS+45)
+#define DISPID_EVPROP_ONLOSECAPTURE        (DISPID_EVENTS+46)
+#define DISPID_EVPROP_ONPROPERTYCHANGE     (DISPID_EVENTS+47)
+#define DISPID_EVPROP_ONPERSISTSAVE        (DISPID_EVENTS+48)
+#define DISPID_EVPROP_ONDRAG               (DISPID_EVENTS+49)
+#define DISPID_EVPROP_ONDRAGEND            (DISPID_EVENTS+50)
+#define DISPID_EVPROP_ONDRAGENTER          (DISPID_EVENTS+51)
+#define DISPID_EVPROP_ONDRAGOVER           (DISPID_EVENTS+52)
+#define DISPID_EVPROP_ONDRAGLEAVE          (DISPID_EVENTS+53)
+#define DISPID_EVPROP_ONDROP               (DISPID_EVENTS+54)
+#define DISPID_EVPROP_ONCUT                (DISPID_EVENTS+55)
+#define DISPID_EVPROP_ONCOPY               (DISPID_EVENTS+56)
+#define DISPID_EVPROP_ONPASTE              (DISPID_EVENTS+57)
+#define DISPID_EVPROP_ONBEFORECUT          (DISPID_EVENTS+58)
+#define DISPID_EVPROP_ONBEFORECOPY         (DISPID_EVENTS+59)
+#define DISPID_EVPROP_ONBEFOREPASTE        (DISPID_EVENTS+60)
+#define DISPID_EVPROP_ONPERSISTLOAD        (DISPID_EVENTS+61)
+#define DISPID_EVPROP_ONROWSDELETE         (DISPID_EVENTS+62)
+#define DISPID_EVPROP_ONROWSINSERTED       (DISPID_EVENTS+63)
+#define DISPID_EVPROP_ONCELLCHANGE         (DISPID_EVENTS+64)
+#define DISPID_EVPROP_ONCONTEXTMENU        (DISPID_EVENTS+65)
+#define DISPID_EVPROP_ONBEFOREPRINT        (DISPID_EVENTS+66)
+#define DISPID_EVPROP_ONAFTERPRINT         (DISPID_EVENTS+67)
+#define DISPID_EVPROP_ONSTOP               (DISPID_EVENTS+68)
+#define DISPID_EVPROP_ONBEFOREEDITFOCUS    (DISPID_EVENTS+69)
+#define DISPID_EVPROP_ONATTACHEVENT        (DISPID_EVENTS+70)
+#define DISPID_EVPROP_ONMOUSEHOVER         (DISPID_EVENTS+71)
+#define DISPID_EVPROP_ONCONTENTREADY       (DISPID_EVENTS+72)
+#define DISPID_EVPROP_ONLAYOUTCOMPLETE     (DISPID_EVENTS+73)
+#define DISPID_EVPROP_ONPAGE               (DISPID_EVENTS+74)
+#define DISPID_EVPROP_ONLINKEDOVERFLOW     (DISPID_EVENTS+75)
+#define DISPID_EVPROP_ONMOUSEWHEEL         (DISPID_EVENTS+76)
+#define DISPID_EVPROP_ONBEFOREDEACTIVATE   (DISPID_EVENTS+77)
+#define DISPID_EVPROP_ONMOVE               (DISPID_EVENTS+78)
+#define DISPID_EVPROP_ONCONTROLSELECT      (DISPID_EVENTS+79)
+#define DISPID_EVPROP_ONSELECTIONCHANGE    (DISPID_EVENTS+80)
+#define DISPID_EVPROP_ONMOVESTART          (DISPID_EVENTS+81)
+#define DISPID_EVPROP_ONMOVEEND            (DISPID_EVENTS+82)
+#define DISPID_EVPROP_ONRESIZESTART        (DISPID_EVENTS+83)
+#define DISPID_EVPROP_ONRESIZEEND          (DISPID_EVENTS+84)
+#define DISPID_EVPROP_ONMOUSEENTER         (DISPID_EVENTS+85)
+#define DISPID_EVPROP_ONMOUSELEAVE         (DISPID_EVENTS+86)
+#define DISPID_EVPROP_ONACTIVATE           (DISPID_EVENTS+87)
+#define DISPID_EVPROP_ONDEACTIVATE         (DISPID_EVENTS+88)
+#define DISPID_EVPROP_ONMULTILAYOUTCLEANUP (DISPID_EVENTS+89)
+#define DISPID_EVPROP_ONBEFOREACTIVATE     (DISPID_EVENTS+90)
+#define DISPID_EVPROP_ONFOCUSIN            (DISPID_EVENTS+91)
+#define DISPID_EVPROP_ONFOCUSOUT           (DISPID_EVENTS+92)
+#define DISPID_EVPROPS_COUNT               93
+
+#define DISPID_EVMETH_ONMOUSEOVER           STDDISPID_XOBJ_ONMOUSEOVER
+#define DISPID_EVMETH_ONMOUSEOUT            STDDISPID_XOBJ_ONMOUSEOUT
+#define DISPID_EVMETH_ONMOUSEDOWN           DISPID_MOUSEDOWN
+#define DISPID_EVMETH_ONMOUSEUP             DISPID_MOUSEUP
+#define DISPID_EVMETH_ONMOUSEMOVE           DISPID_MOUSEMOVE
+#define DISPID_EVMETH_ONKEYDOWN             DISPID_KEYDOWN
+#define DISPID_EVMETH_ONKEYUP               DISPID_KEYUP
+#define DISPID_EVMETH_ONKEYPRESS            DISPID_KEYPRESS
+#define DISPID_EVMETH_ONCLICK               DISPID_CLICK
+#define DISPID_EVMETH_ONDBLCLICK            DISPID_DBLCLICK
+#define DISPID_EVMETH_ONSELECT              DISPID_ONSELECT
+#define DISPID_EVMETH_ONSUBMIT              DISPID_ONSUBMIT
+#define DISPID_EVMETH_ONRESET               DISPID_ONRESET
+#define DISPID_EVMETH_ONHELP                STDDISPID_XOBJ_ONHELP
+#define DISPID_EVMETH_ONFOCUS               STDDISPID_XOBJ_ONFOCUS
+#define DISPID_EVMETH_ONBLUR                STDDISPID_XOBJ_ONBLUR
+#define DISPID_EVMETH_ONROWEXIT             STDDISPID_XOBJ_ONROWEXIT
+#define DISPID_EVMETH_ONROWENTER            STDDISPID_XOBJ_ONROWENTER
+#define DISPID_EVMETH_ONBOUNCE              DISPID_ONBOUNCE
+#define DISPID_EVMETH_ONBEFOREUPDATE        STDDISPID_XOBJ_BEFOREUPDATE
+#define DISPID_EVMETH_ONAFTERUPDATE         STDDISPID_XOBJ_AFTERUPDATE
+#define DISPID_EVMETH_ONBEFOREDRAGOVER      EVENTID_CommonCtrlEvent_BeforeDragOver
+#define DISPID_EVMETH_ONBEFOREDROPORPASTE   EVENTID_CommonCtrlEvent_BeforeDropOrPaste
+#define DISPID_EVMETH_ONREADYSTATECHANGE    DISPID_READYSTATECHANGE
+#define DISPID_EVMETH_ONFINISH              DISPID_ONFINISH
+#define DISPID_EVMETH_ONSTART               DISPID_ONSTART
+#define DISPID_EVMETH_ONABORT               DISPID_ONABORT
+#define DISPID_EVMETH_ONERROR               DISPID_ONERROR
+#define DISPID_EVMETH_ONCHANGE              DISPID_ONCHANGE
+#define DISPID_EVMETH_ONSCROLL              DISPID_ONSCROLL
+#define DISPID_EVMETH_ONLOAD                DISPID_ONLOAD
+#define DISPID_EVMETH_ONUNLOAD              DISPID_ONUNLOAD
+#define DISPID_EVMETH_ONLAYOUT              DISPID_ONLAYOUT
+#define DISPID_EVMETH_ONDRAGSTART           STDDISPID_XOBJ_ONDRAGSTART
+#define DISPID_EVMETH_ONRESIZE              DISPID_ONRESIZE
+#define DISPID_EVMETH_ONSELECTSTART         STDDISPID_XOBJ_ONSELECTSTART
+#define DISPID_EVMETH_ONERRORUPDATE         STDDISPID_XOBJ_ERRORUPDATE
+#define DISPID_EVMETH_ONBEFOREUNLOAD        DISPID_ONBEFOREUNLOAD
+#define DISPID_EVMETH_ONDATASETCHANGED      STDDISPID_XOBJ_ONDATASETCHANGED
+#define DISPID_EVMETH_ONDATAAVAILABLE       STDDISPID_XOBJ_ONDATAAVAILABLE
+#define DISPID_EVMETH_ONDATASETCOMPLETE     STDDISPID_XOBJ_ONDATASETCOMPLETE
+#define DISPID_EVMETH_ONFILTER              STDDISPID_XOBJ_ONFILTER
+#define DISPID_EVMETH_ONCHANGEFOCUS         DISPID_ONCHANGEFOCUS
+#define DISPID_EVMETH_ONCHANGEBLUR          DISPID_ONCHANGEBLUR
+#define DISPID_EVMETH_ONLOSECAPTURE         STDDISPID_XOBJ_ONLOSECAPTURE
+#define DISPID_EVMETH_ONPROPERTYCHANGE      STDDISPID_XOBJ_ONPROPERTYCHANGE
+#define DISPID_EVMETH_ONPERSISTSAVE         DISPID_ONPERSISTSAVE
+#define DISPID_EVMETH_ONDRAG                STDDISPID_XOBJ_ONDRAG
+#define DISPID_EVMETH_ONDRAGEND             STDDISPID_XOBJ_ONDRAGEND
+#define DISPID_EVMETH_ONDRAGENTER           STDDISPID_XOBJ_ONDRAGENTER
+#define DISPID_EVMETH_ONDRAGOVER            STDDISPID_XOBJ_ONDRAGOVER
+#define DISPID_EVMETH_ONDRAGLEAVE           STDDISPID_XOBJ_ONDRAGLEAVE
+#define DISPID_EVMETH_ONDROP                STDDISPID_XOBJ_ONDROP
+#define DISPID_EVMETH_ONCUT                 STDDISPID_XOBJ_ONCUT
+#define DISPID_EVMETH_ONCOPY                STDDISPID_XOBJ_ONCOPY
+#define DISPID_EVMETH_ONPASTE               STDDISPID_XOBJ_ONPASTE
+#define DISPID_EVMETH_ONBEFORECUT           STDDISPID_XOBJ_ONBEFORECUT
+#define DISPID_EVMETH_ONBEFORECOPY          STDDISPID_XOBJ_ONBEFORECOPY
+#define DISPID_EVMETH_ONBEFOREPASTE         STDDISPID_XOBJ_ONBEFOREPASTE
+#define DISPID_EVMETH_ONPERSISTLOAD         DISPID_ONPERSISTLOAD
+#define DISPID_EVMETH_ONROWSDELETE          STDDISPID_XOBJ_ONROWSDELETE
+#define DISPID_EVMETH_ONROWSINSERTED        STDDISPID_XOBJ_ONROWSINSERTED
+#define DISPID_EVMETH_ONCELLCHANGE          STDDISPID_XOBJ_ONCELLCHANGE
+#define DISPID_EVMETH_ONCONTEXTMENU         DISPID_ONCONTEXTMENU
+#define DISPID_EVMETH_ONBEFOREPRINT         DISPID_ONBEFOREPRINT
+#define DISPID_EVMETH_ONAFTERPRINT          DISPID_ONAFTERPRINT
+#define DISPID_EVMETH_ONSTOP                DISPID_ONSTOP
+#define DISPID_EVMETH_ONBEFOREEDITFOCUS     DISPID_ONBEFOREEDITFOCUS
+#define DISPID_EVMETH_ONMOUSEHOVER          DISPID_ONMOUSEHOVER
+#define DISPID_EVMETH_ONCONTENTREADY        DISPID_ONCONTENTREADY
+#define DISPID_EVMETH_ONLAYOUTCOMPLETE      DISPID_ONLAYOUTCOMPLETE
+#define DISPID_EVMETH_ONPAGE                DISPID_ONPAGE
+#define DISPID_EVMETH_ONLINKEDOVERFLOW      DISPID_ONLINKEDOVERFLOW
+#define DISPID_EVMETH_ONMOUSEWHEEL          DISPID_ONMOUSEWHEEL
+#define DISPID_EVMETH_ONBEFOREDEACTIVAT     DISPID_ONBEFOREDEACTIVATE
+#define DISPID_EVMETH_ONMOVE                DISPID_ONMOVE
+#define DISPID_EVMETH_ONCONTROLSELECT       DISPID_ONCONTROLSELECT
+#define DISPID_EVMETH_ONSELECTIONCHANGE     DISPID_ONSELECTIONCHANGE
+#define DISPID_EVMETH_ONMOVESTART           DISPID_ONMOVESTART
+#define DISPID_EVMETH_ONMOVEEND             DISPID_ONMOVEEND
+#define DISPID_EVMETH_ONRESIZESTART         DISPID_ONRESIZESTART
+#define DISPID_EVMETH_ONRESIZEEND           DISPID_ONRESIZEEND
+#define DISPID_EVMETH_ONMOUSEENTER          DISPID_ONMOUSEENTER
+#define DISPID_EVMETH_ONMOUSELEAVE          DISPID_ONMOUSELEAVE
+#define DISPID_EVMETH_ONACTIVATE            DISPID_ONACTIVATE
+#define DISPID_EVMETH_ONDEACTIVATE          DISPID_ONDEACTIVATE
+#define DISPID_EVMETH_ONMULTILAYOUTCLEANUP  DISPID_ONMULTILAYOUTCLEANUP
+#define DISPID_EVMETH_ONBEFOREACTIVATE      DISPID_ONBEFOREACTIVATE
+#define DISPID_EVMETH_ONFOCUSIN             DISPID_ONFOCUSIN
+#define DISPID_EVMETH_ONFOCUSOUT            DISPID_ONFOCUSOUT
+#define DISPID_EVPROPS_COUNT                93
+
+
+#define DISPID_EVMETH_ONMOUSEOVER           STDDISPID_XOBJ_ONMOUSEOVER
+#define DISPID_EVMETH_ONMOUSEOUT            STDDISPID_XOBJ_ONMOUSEOUT
+#define DISPID_EVMETH_ONMOUSEDOWN           DISPID_MOUSEDOWN
+#define DISPID_EVMETH_ONMOUSEUP             DISPID_MOUSEUP
+#define DISPID_EVMETH_ONMOUSEMOVE           DISPID_MOUSEMOVE
+#define DISPID_EVMETH_ONKEYDOWN             DISPID_KEYDOWN
+#define DISPID_EVMETH_ONKEYUP               DISPID_KEYUP
+#define DISPID_EVMETH_ONKEYPRESS            DISPID_KEYPRESS
+#define DISPID_EVMETH_ONCLICK               DISPID_CLICK
+#define DISPID_EVMETH_ONDBLCLICK            DISPID_DBLCLICK
+#define DISPID_EVMETH_ONSELECT              DISPID_ONSELECT
+#define DISPID_EVMETH_ONSUBMIT              DISPID_ONSUBMIT
+#define DISPID_EVMETH_ONRESET               DISPID_ONRESET
+#define DISPID_EVMETH_ONHELP                STDDISPID_XOBJ_ONHELP
+#define DISPID_EVMETH_ONFOCUS               STDDISPID_XOBJ_ONFOCUS
+#define DISPID_EVMETH_ONBLUR                STDDISPID_XOBJ_ONBLUR
+#define DISPID_EVMETH_ONROWEXIT             STDDISPID_XOBJ_ONROWEXIT
+#define DISPID_EVMETH_ONROWENTER            STDDISPID_XOBJ_ONROWENTER
+#define DISPID_EVMETH_ONBOUNCE              DISPID_ONBOUNCE
+#define DISPID_EVMETH_ONBEFOREUPDATE        STDDISPID_XOBJ_BEFOREUPDATE
+#define DISPID_EVMETH_ONAFTERUPDATE         STDDISPID_XOBJ_AFTERUPDATE
+#define DISPID_EVMETH_ONBEFOREDRAGOVER      EVENTID_CommonCtrlEvent_BeforeDragOver
+#define DISPID_EVMETH_ONBEFOREDROPORPASTE   EVENTID_CommonCtrlEvent_BeforeDropOrPaste
+#define DISPID_EVMETH_ONREADYSTATECHANGE    DISPID_READYSTATECHANGE
+#define DISPID_EVMETH_ONFINISH              DISPID_ONFINISH
+#define DISPID_EVMETH_ONSTART               DISPID_ONSTART
+#define DISPID_EVMETH_ONABORT               DISPID_ONABORT
+#define DISPID_EVMETH_ONERROR               DISPID_ONERROR
+#define DISPID_EVMETH_ONCHANGE              DISPID_ONCHANGE
+#define DISPID_EVMETH_ONSCROLL              DISPID_ONSCROLL
+#define DISPID_EVMETH_ONLOAD                DISPID_ONLOAD
+#define DISPID_EVMETH_ONUNLOAD              DISPID_ONUNLOAD
+#define DISPID_EVMETH_ONLAYOUT              DISPID_ONLAYOUT
+#define DISPID_EVMETH_ONDRAGSTART           STDDISPID_XOBJ_ONDRAGSTART
+#define DISPID_EVMETH_ONRESIZE              DISPID_ONRESIZE
+#define DISPID_EVMETH_ONSELECTSTART         STDDISPID_XOBJ_ONSELECTSTART
+#define DISPID_EVMETH_ONERRORUPDATE         STDDISPID_XOBJ_ERRORUPDATE
+#define DISPID_EVMETH_ONBEFOREUNLOAD        DISPID_ONBEFOREUNLOAD
+#define DISPID_EVMETH_ONDATASETCHANGED      STDDISPID_XOBJ_ONDATASETCHANGED
+#define DISPID_EVMETH_ONDATAAVAILABLE       STDDISPID_XOBJ_ONDATAAVAILABLE
+#define DISPID_EVMETH_ONDATASETCOMPLETE     STDDISPID_XOBJ_ONDATASETCOMPLETE
+#define DISPID_EVMETH_ONFILTER              STDDISPID_XOBJ_ONFILTER
+#define DISPID_EVMETH_ONCHANGEFOCUS         DISPID_ONCHANGEFOCUS
+#define DISPID_EVMETH_ONCHANGEBLUR          DISPID_ONCHANGEBLUR
+#define DISPID_EVMETH_ONLOSECAPTURE         STDDISPID_XOBJ_ONLOSECAPTURE
+#define DISPID_EVMETH_ONPROPERTYCHANGE      STDDISPID_XOBJ_ONPROPERTYCHANGE
+#define DISPID_EVMETH_ONPERSISTSAVE         DISPID_ONPERSISTSAVE
+#define DISPID_EVMETH_ONDRAG                STDDISPID_XOBJ_ONDRAG
+#define DISPID_EVMETH_ONDRAGEND             STDDISPID_XOBJ_ONDRAGEND
+#define DISPID_EVMETH_ONDRAGENTER           STDDISPID_XOBJ_ONDRAGENTER
+#define DISPID_EVMETH_ONDRAGOVER            STDDISPID_XOBJ_ONDRAGOVER
+#define DISPID_EVMETH_ONDRAGLEAVE           STDDISPID_XOBJ_ONDRAGLEAVE
+#define DISPID_EVMETH_ONDROP                STDDISPID_XOBJ_ONDROP
+#define DISPID_EVMETH_ONCUT                 STDDISPID_XOBJ_ONCUT
+#define DISPID_EVMETH_ONCOPY                STDDISPID_XOBJ_ONCOPY
+#define DISPID_EVMETH_ONPASTE               STDDISPID_XOBJ_ONPASTE
+#define DISPID_EVMETH_ONBEFORECUT           STDDISPID_XOBJ_ONBEFORECUT
+#define DISPID_EVMETH_ONBEFORECOPY          STDDISPID_XOBJ_ONBEFORECOPY
+#define DISPID_EVMETH_ONBEFOREPASTE         STDDISPID_XOBJ_ONBEFOREPASTE
+#define DISPID_EVMETH_ONPERSISTLOAD         DISPID_ONPERSISTLOAD
+#define DISPID_EVMETH_ONROWSDELETE          STDDISPID_XOBJ_ONROWSDELETE
+#define DISPID_EVMETH_ONROWSINSERTED        STDDISPID_XOBJ_ONROWSINSERTED
+#define DISPID_EVMETH_ONCELLCHANGE          STDDISPID_XOBJ_ONCELLCHANGE
+#define DISPID_EVMETH_ONCONTEXTMENU         DISPID_ONCONTEXTMENU
+#define DISPID_EVMETH_ONBEFOREPRINT         DISPID_ONBEFOREPRINT
+#define DISPID_EVMETH_ONAFTERPRINT          DISPID_ONAFTERPRINT
+#define DISPID_EVMETH_ONSTOP                DISPID_ONSTOP
+#define DISPID_EVMETH_ONBEFOREEDITFOCUS     DISPID_ONBEFOREEDITFOCUS
+#define DISPID_EVMETH_ONMOUSEHOVER          DISPID_ONMOUSEHOVER
+#define DISPID_EVMETH_ONCONTENTREADY        DISPID_ONCONTENTREADY
+#define DISPID_EVMETH_ONLAYOUTCOMPLETE      DISPID_ONLAYOUTCOMPLETE
+#define DISPID_EVMETH_ONPAGE                DISPID_ONPAGE
+#define DISPID_EVMETH_ONLINKEDOVERFLOW      DISPID_ONLINKEDOVERFLOW
+#define DISPID_EVMETH_ONMOUSEWHEEL          DISPID_ONMOUSEWHEEL
+#define DISPID_EVMETH_ONBEFOREDEACTIVATE    DISPID_ONBEFOREDEACTIVATE
+#define DISPID_EVMETH_ONMOVE                DISPID_ONMOVE
+#define DISPID_EVMETH_ONCONTROLSELECT       DISPID_ONCONTROLSELECT
+#define DISPID_EVMETH_ONSELECTIONCHANGE     DISPID_ONSELECTIONCHANGE
+#define DISPID_EVMETH_ONMOVESTART           DISPID_ONMOVESTART
+#define DISPID_EVMETH_ONMOVEEND             DISPID_ONMOVEEND
+#define DISPID_EVMETH_ONRESIZESTART         DISPID_ONRESIZESTART
+#define DISPID_EVMETH_ONRESIZEEND           DISPID_ONRESIZEEND
+#define DISPID_EVMETH_ONMOUSEENTER          DISPID_ONMOUSEENTER
+#define DISPID_EVMETH_ONMOUSELEAVE          DISPID_ONMOUSELEAVE
+#define DISPID_EVMETH_ONACTIVATE            DISPID_ONACTIVATE
+#define DISPID_EVMETH_ONDEACTIVATE          DISPID_ONDEACTIVATE
+#define DISPID_EVMETH_ONMULTILAYOUTCLEANUP  DISPID_ONMULTILAYOUTCLEANUP
+#define DISPID_EVMETH_ONBEFOREACTIVATE      DISPID_ONBEFOREACTIVATE
+#define DISPID_EVMETH_ONFOCUSIN             DISPID_ONFOCUSIN
+#define DISPID_EVMETH_ONFOCUSOUT            DISPID_ONFOCUSOUT
+
+#define DISPID_ONABORT               (DISPID_NORMAL_FIRST)
+#define DISPID_ONCHANGE              (DISPID_NORMAL_FIRST+1)
+#define DISPID_ONERROR               (DISPID_NORMAL_FIRST+2)
+#define DISPID_ONLOAD                (DISPID_NORMAL_FIRST+3)
+#define DISPID_ONSELECT              (DISPID_NORMAL_FIRST+6)
+#define DISPID_ONSUBMIT              (DISPID_NORMAL_FIRST+7)
+#define DISPID_ONUNLOAD              (DISPID_NORMAL_FIRST+8)
+#define DISPID_ONBOUNCE              (DISPID_NORMAL_FIRST+9)
+#define DISPID_ONFINISH              (DISPID_NORMAL_FIRST+10)
+#define DISPID_ONSTART               (DISPID_NORMAL_FIRST+11)
+#define DISPID_ONLAYOUT              (DISPID_NORMAL_FIRST+13)
+#define DISPID_ONSCROLL              (DISPID_NORMAL_FIRST+14)
+#define DISPID_ONRESET               (DISPID_NORMAL_FIRST+15)
+#define DISPID_ONRESIZE              (DISPID_NORMAL_FIRST+16)
+#define DISPID_ONBEFOREUNLOAD        (DISPID_NORMAL_FIRST+17)
+#define DISPID_ONCHANGEFOCUS         (DISPID_NORMAL_FIRST+18)
+#define DISPID_ONCHANGEBLUR          (DISPID_NORMAL_FIRST+19)
+#define DISPID_ONPERSIST             (DISPID_NORMAL_FIRST+20)
+#define DISPID_ONPERSISTSAVE         (DISPID_NORMAL_FIRST+21)
+#define DISPID_ONPERSISTLOAD         (DISPID_NORMAL_FIRST+22)
+#define DISPID_ONCONTEXTMENU         (DISPID_NORMAL_FIRST+23)
+#define DISPID_ONBEFOREPRINT         (DISPID_NORMAL_FIRST+24)
+#define DISPID_ONAFTERPRINT          (DISPID_NORMAL_FIRST+25)
+#define DISPID_ONSTOP                (DISPID_NORMAL_FIRST+26)
+#define DISPID_ONBEFOREEDITFOCUS     (DISPID_NORMAL_FIRST+27)
+#define DISPID_ONMOUSEHOVER          (DISPID_NORMAL_FIRST+28)
+#define DISPID_ONCONTENTREADY        (DISPID_NORMAL_FIRST+29)
+#define DISPID_ONLAYOUTCOMPLETE      (DISPID_NORMAL_FIRST+30)
+#define DISPID_ONPAGE                (DISPID_NORMAL_FIRST+31)
+#define DISPID_ONLINKEDOVERFLOW      (DISPID_NORMAL_FIRST+32)
+#define DISPID_ONMOUSEWHEEL          (DISPID_NORMAL_FIRST+33)
+#define DISPID_ONBEFOREDEACTIVATE    (DISPID_NORMAL_FIRST+34)
+#define DISPID_ONMOVE                (DISPID_NORMAL_FIRST+35)
+#define DISPID_ONCONTROLSELECT       (DISPID_NORMAL_FIRST+36)
+#define DISPID_ONSELECTIONCHANGE     (DISPID_NORMAL_FIRST+37)
+#define DISPID_ONMOVESTART           (DISPID_NORMAL_FIRST+38)
+#define DISPID_ONMOVEEND             (DISPID_NORMAL_FIRST+39)
+#define DISPID_ONRESIZESTART         (DISPID_NORMAL_FIRST+40)
+#define DISPID_ONRESIZEEND           (DISPID_NORMAL_FIRST+41)
+#define DISPID_ONMOUSEENTER          (DISPID_NORMAL_FIRST+42)
+#define DISPID_ONMOUSELEAVE          (DISPID_NORMAL_FIRST+43)
+#define DISPID_ONACTIVATE            (DISPID_NORMAL_FIRST+44)
+#define DISPID_ONDEACTIVATE          (DISPID_NORMAL_FIRST+45)
+#define DISPID_ONMULTILAYOUTCLEANUP  (DISPID_NORMAL_FIRST+46)
+#define DISPID_ONBEFOREACTIVATE      (DISPID_NORMAL_FIRST+47)
+#define DISPID_ONFOCUSIN             (DISPID_NORMAL_FIRST+48)
+#define DISPID_ONFOCUSOUT            (DISPID_NORMAL_FIRST+49)
+
+/* HTMLDocumentEvents */
+#define DISPID_HTMLDOCUMENTEVENTS_ONHELP              DISPID_EVMETH_ONHELP
+#define DISPID_HTMLDOCUMENTEVENTS_ONCLICK             DISPID_EVMETH_ONCLICK
+#define DISPID_HTMLDOCUMENTEVENTS_ONDBLCLICK          DISPID_EVMETH_ONDBLCLICK
+#define DISPID_HTMLDOCUMENTEVENTS_ONKEYDOWN           DISPID_EVMETH_ONKEYDOWN
+#define DISPID_HTMLDOCUMENTEVENTS_ONKEYUP             DISPID_EVMETH_ONKEYUP
+#define DISPID_HTMLDOCUMENTEVENTS_ONKEYPRESS          DISPID_EVMETH_ONKEYPRESS
+#define DISPID_HTMLDOCUMENTEVENTS_ONMOUSEDOWN         DISPID_EVMETH_ONMOUSEDOWN
+#define DISPID_HTMLDOCUMENTEVENTS_ONMOUSEMOVE         DISPID_EVMETH_ONMOUSEMOVE
+#define DISPID_HTMLDOCUMENTEVENTS_ONMOUSEUP           DISPID_EVMETH_ONMOUSEUP
+#define DISPID_HTMLDOCUMENTEVENTS_ONMOUSEOUT          DISPID_EVMETH_ONMOUSEOUT
+#define DISPID_HTMLDOCUMENTEVENTS_ONMOUSEOVER         DISPID_EVMETH_ONMOUSEOVER
+#define DISPID_HTMLDOCUMENTEVENTS_ONREADYSTATECHANGE  DISPID_EVMETH_ONREADYSTATECHANGE
+#define DISPID_HTMLDOCUMENTEVENTS_ONBEFOREUPDATE      DISPID_EVMETH_ONBEFOREUPDATE
+#define DISPID_HTMLDOCUMENTEVENTS_ONAFTERUPDATE       DISPID_EVMETH_ONAFTERUPDATE
+#define DISPID_HTMLDOCUMENTEVENTS_ONROWEXIT           DISPID_EVMETH_ONROWEXIT
+#define DISPID_HTMLDOCUMENTEVENTS_ONROWENTER          DISPID_EVMETH_ONROWENTER
+#define DISPID_HTMLDOCUMENTEVENTS_ONDRAGSTART         DISPID_EVMETH_ONDRAGSTART
+#define DISPID_HTMLDOCUMENTEVENTS_ONSELECTSTART       DISPID_EVMETH_ONSELECTSTART
+#define DISPID_HTMLDOCUMENTEVENTS_ONERRORUPDATE       DISPID_EVMETH_ONERRORUPDATE
+#define DISPID_HTMLDOCUMENTEVENTS_ONCONTEXTMENU       DISPID_EVMETH_ONCONTEXTMENU
+#define DISPID_HTMLDOCUMENTEVENTS_ONSTOP              DISPID_EVMETH_ONSTOP
+#define DISPID_HTMLDOCUMENTEVENTS_ONROWSDELETE        DISPID_EVMETH_ONROWSDELETE
+#define DISPID_HTMLDOCUMENTEVENTS_ONROWSINSERTED      DISPID_EVMETH_ONROWSINSERTED
+#define DISPID_HTMLDOCUMENTEVENTS_ONCELLCHANGE        DISPID_EVMETH_ONCELLCHANGE
+#define DISPID_HTMLDOCUMENTEVENTS_ONPROPERTYCHANGE    DISPID_EVMETH_ONPROPERTYCHANGE
+#define DISPID_HTMLDOCUMENTEVENTS_ONDATASETCHANGED    DISPID_EVMETH_ONDATASETCHANGED
+#define DISPID_HTMLDOCUMENTEVENTS_ONDATAAVAILABLE     DISPID_EVMETH_ONDATAAVAILABLE
+#define DISPID_HTMLDOCUMENTEVENTS_ONDATASETCOMPLETE   DISPID_EVMETH_ONDATASETCOMPLETE
+#define DISPID_HTMLDOCUMENTEVENTS_ONBEFOREEDITFOCUS   DISPID_EVMETH_ONBEFOREEDITFOCUS
+#define DISPID_HTMLDOCUMENTEVENTS_ONSELECTIONCHANGE   DISPID_EVMETH_ONSELECTIONCHANGE
+#define DISPID_HTMLDOCUMENTEVENTS_ONCONTROLSELECT     DISPID_EVMETH_ONCONTROLSELECT
+#define DISPID_HTMLDOCUMENTEVENTS_ONMOUSEWHEEL        DISPID_EVMETH_ONMOUSEWHEEL
+#define DISPID_HTMLDOCUMENTEVENTS_ONFOCUSIN           DISPID_EVMETH_ONFOCUSIN
+#define DISPID_HTMLDOCUMENTEVENTS_ONFOCUSOUT          DISPID_EVMETH_ONFOCUSOUT
+#define DISPID_HTMLDOCUMENTEVENTS_ONACTIVATE          DISPID_EVMETH_ONACTIVATE
+#define DISPID_HTMLDOCUMENTEVENTS_ONDEACTIVATE        DISPID_EVMETH_ONDEACTIVATE
+#define DISPID_HTMLDOCUMENTEVENTS_ONBEFOREACTIVATE    DISPID_EVMETH_ONBEFOREACTIVATE
+#define DISPID_HTMLDOCUMENTEVENTS_ONBEFOREDEACTIVATE  DISPID_EVMETH_ONBEFOREDEACTIVATE
+
+/* HTMLDocumentEvents2 */
+#define DISPID_HTMLDOCUMENTEVENTS2_ONHELP              DISPID_EVMETH_ONHELP
+#define DISPID_HTMLDOCUMENTEVENTS2_ONCLICK             DISPID_EVMETH_ONCLICK
+#define DISPID_HTMLDOCUMENTEVENTS2_ONDBLCLICK          DISPID_EVMETH_ONDBLCLICK
+#define DISPID_HTMLDOCUMENTEVENTS2_ONKEYDOWN           DISPID_EVMETH_ONKEYDOWN
+#define DISPID_HTMLDOCUMENTEVENTS2_ONKEYUP             DISPID_EVMETH_ONKEYUP
+#define DISPID_HTMLDOCUMENTEVENTS2_ONKEYPRESS          DISPID_EVMETH_ONKEYPRESS
+#define DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEDOWN         DISPID_EVMETH_ONMOUSEDOWN
+#define DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEMOVE         DISPID_EVMETH_ONMOUSEMOVE
+#define DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEUP           DISPID_EVMETH_ONMOUSEUP
+#define DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEOUT          DISPID_EVMETH_ONMOUSEOUT
+#define DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEOVER         DISPID_EVMETH_ONMOUSEOVER
+#define DISPID_HTMLDOCUMENTEVENTS2_ONREADYSTATECHANGE  DISPID_EVMETH_ONREADYSTATECHANGE
+#define DISPID_HTMLDOCUMENTEVENTS2_ONBEFOREUPDATE      DISPID_EVMETH_ONBEFOREUPDATE
+#define DISPID_HTMLDOCUMENTEVENTS2_ONAFTERUPDATE       DISPID_EVMETH_ONAFTERUPDATE
+#define DISPID_HTMLDOCUMENTEVENTS2_ONROWEXIT           DISPID_EVMETH_ONROWEXIT
+#define DISPID_HTMLDOCUMENTEVENTS2_ONROWENTER          DISPID_EVMETH_ONROWENTER
+#define DISPID_HTMLDOCUMENTEVENTS2_ONDRAGSTART         DISPID_EVMETH_ONDRAGSTART
+#define DISPID_HTMLDOCUMENTEVENTS2_ONSELECTSTART       DISPID_EVMETH_ONSELECTSTART
+#define DISPID_HTMLDOCUMENTEVENTS2_ONERRORUPDATE       DISPID_EVMETH_ONERRORUPDATE
+#define DISPID_HTMLDOCUMENTEVENTS2_ONCONTEXTMENU       DISPID_EVMETH_ONCONTEXTMENU
+#define DISPID_HTMLDOCUMENTEVENTS2_ONSTOP              DISPID_EVMETH_ONSTOP
+#define DISPID_HTMLDOCUMENTEVENTS2_ONROWSDELETE        DISPID_EVMETH_ONROWSDELETE
+#define DISPID_HTMLDOCUMENTEVENTS2_ONROWSINSERTED      DISPID_EVMETH_ONROWSINSERTED
+#define DISPID_HTMLDOCUMENTEVENTS2_ONCELLCHANGE        DISPID_EVMETH_ONCELLCHANGE
+#define DISPID_HTMLDOCUMENTEVENTS2_ONPROPERTYCHANGE    DISPID_EVMETH_ONPROPERTYCHANGE
+#define DISPID_HTMLDOCUMENTEVENTS2_ONDATASETCHANGED    DISPID_EVMETH_ONDATASETCHANGED
+#define DISPID_HTMLDOCUMENTEVENTS2_ONDATAAVAILABLE     DISPID_EVMETH_ONDATAAVAILABLE
+#define DISPID_HTMLDOCUMENTEVENTS2_ONDATASETCOMPLETE   DISPID_EVMETH_ONDATASETCOMPLETE
+#define DISPID_HTMLDOCUMENTEVENTS2_ONBEFOREEDITFOCUS   DISPID_EVMETH_ONBEFOREEDITFOCUS
+#define DISPID_HTMLDOCUMENTEVENTS2_ONSELECTIONCHANGE   DISPID_EVMETH_ONSELECTIONCHANGE
+#define DISPID_HTMLDOCUMENTEVENTS2_ONCONTROLSELECT     DISPID_EVMETH_ONCONTROLSELECT
+#define DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEWHEEL        DISPID_EVMETH_ONMOUSEWHEEL
+#define DISPID_HTMLDOCUMENTEVENTS2_ONFOCUSIN           DISPID_EVMETH_ONFOCUSIN
+#define DISPID_HTMLDOCUMENTEVENTS2_ONFOCUSOUT          DISPID_EVMETH_ONFOCUSOUT
+#define DISPID_HTMLDOCUMENTEVENTS2_ONACTIVATE          DISPID_EVMETH_ONACTIVATE
+#define DISPID_HTMLDOCUMENTEVENTS2_ONDEACTIVATE        DISPID_EVMETH_ONDEACTIVATE
+#define DISPID_HTMLDOCUMENTEVENTS2_ONBEFOREACTIVATE    DISPID_EVMETH_ONBEFOREACTIVATE
+#define DISPID_HTMLDOCUMENTEVENTS2_ONBEFOREDEACTIVATE  DISPID_EVMETH_ONBEFOREDEACTIVATE
+
+/* IHTMLDocument */
+#define DISPID_IHTMLDOCUMENT_SCRIPT    (DISPID_OMDOCUMENT+1)
+
+/* IHTMLDocument2 */
+#define DISPID_IHTMLDOCUMENT2_ALL                     (DISPID_OMDOCUMENT+3)
+#define DISPID_IHTMLDOCUMENT2_BODY                    (DISPID_OMDOCUMENT+4)
+#define DISPID_IHTMLDOCUMENT2_ACTIVEELEMENT           (DISPID_OMDOCUMENT+5)
+#define DISPID_IHTMLDOCUMENT2_APPLETS                 (DISPID_OMDOCUMENT+8)
+#define DISPID_IHTMLDOCUMENT2_ANCHORS                 (DISPID_OMDOCUMENT+7)
+#define DISPID_IHTMLDOCUMENT2_LINKS                   (DISPID_OMDOCUMENT+9)
+#define DISPID_IHTMLDOCUMENT2_FORMS                   (DISPID_OMDOCUMENT+10)
+#define DISPID_IHTMLDOCUMENT2_IMAGES                  (DISPID_OMDOCUMENT+11)
+#define DISPID_IHTMLDOCUMENT2_TITLE                   (DISPID_OMDOCUMENT+12)
+#define DISPID_IHTMLDOCUMENT2_SCRIPTS                 (DISPID_OMDOCUMENT+13)
+#define DISPID_IHTMLDOCUMENT2_DESIGNMODE              (DISPID_OMDOCUMENT+14)
+#define DISPID_IHTMLDOCUMENT2_EMBEDS                  (DISPID_OMDOCUMENT+15)
+#define DISPID_IHTMLDOCUMENT2_SELECTION               (DISPID_OMDOCUMENT+17)
+#define DISPID_IHTMLDOCUMENT2_READYSTATE              (DISPID_OMDOCUMENT+18)
+#define DISPID_IHTMLDOCUMENT2_FRAMES                  (DISPID_OMDOCUMENT+19)
+#define DISPID_IHTMLDOCUMENT2_PLUGINS                 (DISPID_OMDOCUMENT+21)
+#define DISPID_IHTMLDOCUMENT2_ALINKCOLOR              (DISPID_OMDOCUMENT+22)
+#define DISPID_IHTMLDOCUMENT2_VLINKCOLOR              (DISPID_OMDOCUMENT+23)
+#define DISPID_IHTMLDOCUMENT2_LINKCOLOR               (DISPID_OMDOCUMENT+24)
+#define DISPID_IHTMLDOCUMENT2_URL                     (DISPID_OMDOCUMENT+25)
+#define DISPID_IHTMLDOCUMENT2_LOCATION                (DISPID_OMDOCUMENT+26)
+#define DISPID_IHTMLDOCUMENT2_REFERRER                (DISPID_OMDOCUMENT+27)
+#define DISPID_IHTMLDOCUMENT2_LASTMODIFIED            (DISPID_OMDOCUMENT+28)
+#define DISPID_IHTMLDOCUMENT2_DOMAIN                  (DISPID_OMDOCUMENT+29)
+#define DISPID_IHTMLDOCUMENT2_COOKIE                  (DISPID_OMDOCUMENT+30)
+#define DISPID_IHTMLDOCUMENT2_EXPANDO                 (DISPID_OMDOCUMENT+31)
+#define DISPID_IHTMLDOCUMENT2_CHARSET                 (DISPID_OMDOCUMENT+32)
+#define DISPID_IHTMLDOCUMENT2_DEFAULTCHARSET          (DISPID_OMDOCUMENT+33)
+#define DISPID_IHTMLDOCUMENT2_PARENTWINDOW            (DISPID_OMDOCUMENT+34)
+#define DISPID_IHTMLDOCUMENT2_MIMETYPE                (DISPID_OMDOCUMENT+41)
+#define DISPID_IHTMLDOCUMENT2_FILESIZE                (DISPID_OMDOCUMENT+42)
+#define DISPID_IHTMLDOCUMENT2_FILECREATEDDATE         (DISPID_OMDOCUMENT+43)
+#define DISPID_IHTMLDOCUMENT2_FILEMODIFIEDDATE        (DISPID_OMDOCUMENT+44)
+#define DISPID_IHTMLDOCUMENT2_FILEUPDATEDDATE         (DISPID_OMDOCUMENT+45)
+#define DISPID_IHTMLDOCUMENT2_SECURITY                (DISPID_OMDOCUMENT+46)
+#define DISPID_IHTMLDOCUMENT2_PROTOCOL                (DISPID_OMDOCUMENT+47)
+#define DISPID_IHTMLDOCUMENT2_NAMEPROP                (DISPID_OMDOCUMENT+48)
+#define DISPID_IHTMLDOCUMENT2_WRITE                   (DISPID_OMDOCUMENT+54)
+#define DISPID_IHTMLDOCUMENT2_WRITELN                 (DISPID_OMDOCUMENT+55)
+#define DISPID_IHTMLDOCUMENT2_OPEN                    (DISPID_OMDOCUMENT+56)
+#define DISPID_IHTMLDOCUMENT2_CLOSE                   (DISPID_OMDOCUMENT+57)
+#define DISPID_IHTMLDOCUMENT2_CLEAR                   (DISPID_OMDOCUMENT+58)
+#define DISPID_IHTMLDOCUMENT2_QUERYCOMMANDSUPPORTED   (DISPID_OMDOCUMENT+59)
+#define DISPID_IHTMLDOCUMENT2_QUERYCOMMANDENABLED     (DISPID_OMDOCUMENT+60)
+#define DISPID_IHTMLDOCUMENT2_QUERYCOMMANDSTATE       (DISPID_OMDOCUMENT+61)
+#define DISPID_IHTMLDOCUMENT2_QUERYCOMMANDINDETERM    (DISPID_OMDOCUMENT+62)
+#define DISPID_IHTMLDOCUMENT2_QUERYCOMMANDTEXT        (DISPID_OMDOCUMENT+63)
+#define DISPID_IHTMLDOCUMENT2_QUERYCOMMANDVALUE       (DISPID_OMDOCUMENT+64)
+#define DISPID_IHTMLDOCUMENT2_EXECCOMMAND             (DISPID_OMDOCUMENT+65)
+#define DISPID_IHTMLDOCUMENT2_EXECCOMMANDSHOWHELP     (DISPID_OMDOCUMENT+66)
+#define DISPID_IHTMLDOCUMENT2_CREATEELEMENT           (DISPID_OMDOCUMENT+67)
+#define DISPID_IHTMLDOCUMENT2_ELEMENTFROMPOINT        (DISPID_OMDOCUMENT+68)
+#define DISPID_IHTMLDOCUMENT2_STYLESHEETS             (DISPID_OMDOCUMENT+69)
+#define DISPID_IHTMLDOCUMENT2_TOSTRING                (DISPID_OMDOCUMENT+70)
+#define DISPID_IHTMLDOCUMENT2_CREATESTYLESHEET        (DISPID_OMDOCUMENT+71)
+#define DISPID_IHTMLDOCUMENT2_ONHELP                  DISPID_EVPROP_ONHELP
+#define DISPID_IHTMLDOCUMENT2_ONCLICK                 DISPID_EVPROP_ONCLICK
+#define DISPID_IHTMLDOCUMENT2_ONDBLCLICK              DISPID_EVPROP_ONDBLCLICK
+#define DISPID_IHTMLDOCUMENT2_ONKEYUP                 DISPID_EVPROP_ONKEYUP
+#define DISPID_IHTMLDOCUMENT2_ONKEYDOWN               DISPID_EVPROP_ONKEYDOWN
+#define DISPID_IHTMLDOCUMENT2_ONKEYPRESS              DISPID_EVPROP_ONKEYPRESS
+#define DISPID_IHTMLDOCUMENT2_ONMOUSEUP               DISPID_EVPROP_ONMOUSEUP
+#define DISPID_IHTMLDOCUMENT2_ONMOUSEDOWN             DISPID_EVPROP_ONMOUSEDOWN
+#define DISPID_IHTMLDOCUMENT2_ONMOUSEMOVE             DISPID_EVPROP_ONMOUSEMOVE
+#define DISPID_IHTMLDOCUMENT2_ONMOUSEOUT              DISPID_EVPROP_ONMOUSEOUT
+#define DISPID_IHTMLDOCUMENT2_ONMOUSEOVER             DISPID_EVPROP_ONMOUSEOVER
+#define DISPID_IHTMLDOCUMENT2_ONREADYSTATECHANGE      DISPID_EVPROP_ONREADYSTATECHANGE
+#define DISPID_IHTMLDOCUMENT2_ONAFTERUPDATE           DISPID_EVPROP_ONAFTERUPDATE
+#define DISPID_IHTMLDOCUMENT2_ONROWEXIT               DISPID_EVPROP_ONROWEXIT
+#define DISPID_IHTMLDOCUMENT2_ONROWENTER              DISPID_EVPROP_ONROWENTER
+#define DISPID_IHTMLDOCUMENT2_ONDRAGSTART             DISPID_EVPROP_ONDRAGSTART
+#define DISPID_IHTMLDOCUMENT2_ONSELECTSTART           DISPID_EVPROP_ONSELECTSTART
+#define DISPID_IHTMLDOCUMENT2_ONBEFOREUPDATE          DISPID_EVPROP_ONBEFOREUPDATE
+#define DISPID_IHTMLDOCUMENT2_ONERRORUPDATE           DISPID_EVPROP_ONERRORUPDATE
+#define DISPID_IHTMLDOCUMENT2_BGCOLOR                 DISPID_BACKCOLOR
+#define DISPID_IHTMLDOCUMENT2_FGCOLOR                 DISPID_A_COLOR
+
+/* IHTMLDocument3 */
+#define DISPID_IHTMLDOCUMENT3_RELEASECAPTURE          DISPID_OMDOCUMENT+72
+#define DISPID_IHTMLDOCUMENT3_RECALC                  DISPID_OMDOCUMENT+73
+#define DISPID_IHTMLDOCUMENT3_CREATETEXTNODE          DISPID_OMDOCUMENT+74
+#define DISPID_IHTMLDOCUMENT3_DOCUMENTELEMENT         DISPID_OMDOCUMENT+75
+#define DISPID_IHTMLDOCUMENT3_UNIQUEID                DISPID_OMDOCUMENT+77
+#define DISPID_IHTMLDOCUMENT3_ATTACHEVENT             DISPID_HTMLOBJECT+7
+#define DISPID_IHTMLDOCUMENT3_DETACHEVENT             DISPID_HTMLOBJECT+8
+#define DISPID_IHTMLDOCUMENT3_ONROWSDELETE            DISPID_EVPROP_ONROWSDELETE
+#define DISPID_IHTMLDOCUMENT3_ONROWSINSERTED          DISPID_EVPROP_ONROWSINSERTED
+#define DISPID_IHTMLDOCUMENT3_ONCELLCHANGE            DISPID_EVPROP_ONCELLCHANGE
+#define DISPID_IHTMLDOCUMENT3_ONDATASETCHANGED        DISPID_EVPROP_ONDATASETCHANGED
+#define DISPID_IHTMLDOCUMENT3_ONDATAAVAILABLE         DISPID_EVPROP_ONDATAAVAILABLE
+#define DISPID_IHTMLDOCUMENT3_ONDATASETCOMPLETE       DISPID_EVPROP_ONDATASETCOMPLETE
+#define DISPID_IHTMLDOCUMENT3_ONPROPERTYCHANGE        DISPID_EVPROP_ONPROPERTYCHANGE
+#define DISPID_IHTMLDOCUMENT3_DIR                     DISPID_A_DIR
+#define DISPID_IHTMLDOCUMENT3_ONCONTEXTMENU           DISPID_EVPROP_ONCONTEXTMENU
+#define DISPID_IHTMLDOCUMENT3_ONSTOP                  DISPID_EVPROP_ONSTOP
+#define DISPID_IHTMLDOCUMENT3_CREATEDOCUMENTFRAGMENT  DISPID_OMDOCUMENT+76
+#define DISPID_IHTMLDOCUMENT3_PARENTDOCUMENT          DISPID_OMDOCUMENT+78
+#define DISPID_IHTMLDOCUMENT3_ENABLEDOWNLOAD          DISPID_OMDOCUMENT+79
+#define DISPID_IHTMLDOCUMENT3_BASEURL                 DISPID_OMDOCUMENT+80
+#define DISPID_IHTMLDOCUMENT3_CHILDNODES              DISPID_ELEMENT+49
+#define DISPID_IHTMLDOCUMENT3_INHERITSTYLESHEETS      DISPID_OMDOCUMENT+82
+#define DISPID_IHTMLDOCUMENT3_ONBEFOREEDITFOCUS       DISPID_EVPROP_ONBEFOREEDITFOCUS
+#define DISPID_IHTMLDOCUMENT3_GETELEMENTSBYNAME       DISPID_OMDOCUMENT+86
+#define DISPID_IHTMLDOCUMENT3_GETELEMENTBYID          DISPID_OMDOCUMENT+88
+#define DISPID_IHTMLDOCUMENT3_GETELEMENTSBYTAGNAME    DISPID_OMDOCUMENT+87
+
+
+/* IHTMLDocument4 */
+#define DISPID_IHTMLDOCUMENT4_FOCUS                  DISPID_OMDOCUMENT+89
+#define DISPID_IHTMLDOCUMENT4_HASFOCUS               DISPID_OMDOCUMENT+90
+#define DISPID_IHTMLDOCUMENT4_ONSELECTIONCHANGE      DISPID_EVPROP_ONSELECTIONCHANGE
+#define DISPID_IHTMLDOCUMENT4_NAMESPACES             DISPID_OMDOCUMENT+91
+#define DISPID_IHTMLDOCUMENT4_CREATEDOCUMENTFROMURL  DISPID_OMDOCUMENT+92
+#define DISPID_IHTMLDOCUMENT4_MEDIA                  DISPID_OMDOCUMENT+93
+#define DISPID_IHTMLDOCUMENT4_CREATEEVENTOBJECT      DISPID_OMDOCUMENT+94
+#define DISPID_IHTMLDOCUMENT4_FIREEVENT              DISPID_OMDOCUMENT+95
+#define DISPID_IHTMLDOCUMENT4_CREATERENDERSTYLE      DISPID_OMDOCUMENT+96
+#define DISPID_IHTMLDOCUMENT4_ONCONTROLSELECT        DISPID_EVPROP_ONCONTROLSELECT
+#define DISPID_IHTMLDOCUMENT4_URLUNENCODED           DISPID_OMDOCUMENT+97
+
+/* IHTMLDocument5 */
+#define DISPID_IHTMLDOCUMENT5_ONMOUSEWHEEL        DISPID_EVPROP_ONMOUSEWHEEL
+#define DISPID_IHTMLDOCUMENT5_DOCTYPE             DISPID_OMDOCUMENT+98
+#define DISPID_IHTMLDOCUMENT5_IMPLEMENTATION      DISPID_OMDOCUMENT+99
+#define DISPID_IHTMLDOCUMENT5_CREATEATTRIBUTE     DISPID_OMDOCUMENT+100
+#define DISPID_IHTMLDOCUMENT5_CREATECOMMENT       DISPID_OMDOCUMENT+101
+#define DISPID_IHTMLDOCUMENT5_ONFOCUSIN           DISPID_EVPROP_ONFOCUSIN
+#define DISPID_IHTMLDOCUMENT5_ONFOCUSOUT          DISPID_EVPROP_ONFOCUSOUT
+#define DISPID_IHTMLDOCUMENT5_ONACTIVATE          DISPID_EVPROP_ONACTIVATE
+#define DISPID_IHTMLDOCUMENT5_ONDEACTIVATE        DISPID_EVPROP_ONDEACTIVATE
+#define DISPID_IHTMLDOCUMENT5_ONBEFOREACTIVATE    DISPID_EVPROP_ONBEFOREACTIVATE
+#define DISPID_IHTMLDOCUMENT5_ONBEFOREDEACTIVATE  DISPID_EVPROP_ONBEFOREDEACTIVATE
+#define DISPID_IHTMLDOCUMENT5_COMPATMODE          DISPID_OMDOCUMENT+102
+
+
+/* IHTMLElementCollection */
+#define DISPID_IHTMLELEMENTCOLLECTION_LENGTH     DISPID_COLLECTION
+#define DISPID_IHTMLELEMENTCOLLECTION_TOSTRING   (DISPID_COLLECTION+1)
+#define DISPID_IHTMLELEMENTCOLLECTION_TAGS       (DISPID_COLLECTION+2)
+#define DISPID_IHTMLELEMENTCOLLECTION__NEWENUM   DISPID_NEWENUM
+#define DISPID_IHTMLELEMENTCOLLECTION_ITEM       DISPID_VALUE
+
+/* IHTMLElementCollection2 */
+#define DISPID_IHTMLELEMENTCOLLECTION2_URNS  DISPID_COLLECTION+5
+
+/* IHTMLElementCollection3 */
+#define DISPID_IHTMLELEMENTCOLLECTION3_NAMEDITEM  DISPID_COLLECTION+6
+
+/* IHTMLDOMChildrenCollection */
+#define DISPID_IHTMLDOMCHILDRENCOLLECTION_LENGTH    DISPID_COLLECTION
+#define DISPID_IHTMLDOMCHILDRENCOLLECTION__NEWENUM  DISPID_NEWENUM
+#define DISPID_IHTMLDOMCHILDRENCOLLECTION_ITEM      DISPID_VALUE
+
+/* HTMLElementEvents */
+#define DISPID_HTMLELEMENTEVENTS_ONHELP             DISPID_EVMETH_ONHELP
+#define DISPID_HTMLELEMENTEVENTS_ONCLICK            DISPID_EVMETH_ONCLICK
+#define DISPID_HTMLELEMENTEVENTS_ONDBLCLICK         DISPID_EVMETH_ONDBLCLICK
+#define DISPID_HTMLELEMENTEVENTS_ONKEYPRESS         DISPID_EVMETH_ONKEYPRESS
+#define DISPID_HTMLELEMENTEVENTS_ONKEYDOWN          DISPID_EVMETH_ONKEYDOWN
+#define DISPID_HTMLELEMENTEVENTS_ONKEYUP            DISPID_EVMETH_ONKEYUP
+#define DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT         DISPID_EVMETH_ONMOUSEOUT
+#define DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER        DISPID_EVMETH_ONMOUSEOVER
+#define DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE        DISPID_EVMETH_ONMOUSEMOVE
+#define DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN        DISPID_EVMETH_ONMOUSEDOWN
+#define DISPID_HTMLELEMENTEVENTS_ONMOUSEUP          DISPID_EVMETH_ONMOUSEUP
+#define DISPID_HTMLELEMENTEVENTS_ONSELECTSTART      DISPID_EVMETH_ONSELECTSTART
+#define DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE     DISPID_EVMETH_ONFILTER
+#define DISPID_HTMLELEMENTEVENTS_ONDRAGSTART        DISPID_EVMETH_ONDRAGSTART
+#define DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE     DISPID_EVMETH_ONBEFOREUPDATE
+#define DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE      DISPID_EVMETH_ONAFTERUPDATE
+#define DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE      DISPID_EVMETH_ONERRORUPDATE
+#define DISPID_HTMLELEMENTEVENTS_ONROWEXIT          DISPID_EVMETH_ONROWEXIT
+#define DISPID_HTMLELEMENTEVENTS_ONROWENTER         DISPID_EVMETH_ONROWENTER
+#define DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED   DISPID_EVMETH_ONDATASETCHANGED
+#define DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE    DISPID_EVMETH_ONDATAAVAILABLE
+#define DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE  DISPID_EVMETH_ONDATASETCOMPLETE
+#define DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE      DISPID_EVMETH_ONLOSECAPTURE
+#define DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE   DISPID_EVMETH_ONPROPERTYCHANGE
+#define DISPID_HTMLELEMENTEVENTS_ONSCROLL           DISPID_EVMETH_ONSCROLL
+#define DISPID_HTMLELEMENTEVENTS_ONFOCUS            DISPID_EVMETH_ONFOCUS
+#define DISPID_HTMLELEMENTEVENTS_ONBLUR             DISPID_EVMETH_ONBLUR
+#define DISPID_HTMLELEMENTEVENTS_ONRESIZE           DISPID_EVMETH_ONRESIZE
+#define DISPID_HTMLELEMENTEVENTS_ONDRAG             DISPID_EVMETH_ONDRAG
+#define DISPID_HTMLELEMENTEVENTS_ONDRAGEND          DISPID_EVMETH_ONDRAGEND
+#define DISPID_HTMLELEMENTEVENTS_ONDRAGENTER        DISPID_EVMETH_ONDRAGENTER
+#define DISPID_HTMLELEMENTEVENTS_ONDRAGOVER         DISPID_EVMETH_ONDRAGOVER
+#define DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE        DISPID_EVMETH_ONDRAGLEAVE
+#define DISPID_HTMLELEMENTEVENTS_ONDROP             DISPID_EVMETH_ONDROP
+#define DISPID_HTMLELEMENTEVENTS_ONBEFORECUT        DISPID_EVMETH_ONBEFORECUT
+#define DISPID_HTMLELEMENTEVENTS_ONCUT              DISPID_EVMETH_ONCUT
+#define DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY       DISPID_EVMETH_ONBEFORECOPY
+#define DISPID_HTMLELEMENTEVENTS_ONCOPY             DISPID_EVMETH_ONCOPY
+#define DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE      DISPID_EVMETH_ONBEFOREPASTE
+#define DISPID_HTMLELEMENTEVENTS_ONPASTE            DISPID_EVMETH_ONPASTE
+#define DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU      DISPID_EVMETH_ONCONTEXTMENU
+#define DISPID_HTMLELEMENTEVENTS_ONROWSDELETE       DISPID_EVMETH_ONROWSDELETE
+#define DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED     DISPID_EVMETH_ONROWSINSERTED
+#define DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE       DISPID_EVMETH_ONCELLCHANGE
+#define DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE DISPID_EVMETH_ONREADYSTATECHANGE
+#define DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS  DISPID_EVMETH_ONBEFOREEDITFOCUS
+#define DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE   DISPID_EVMETH_ONLAYOUTCOMPLETE
+#define DISPID_HTMLELEMENTEVENTS_ONPAGE             DISPID_EVMETH_ONPAGE
+#define DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE DISPID_EVMETH_ONBEFOREDEACTIVATE
+#define DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE   DISPID_EVMETH_ONBEFOREACTIVATE
+#define DISPID_HTMLELEMENTEVENTS_ONMOVE             DISPID_EVMETH_ONMOVE
+#define DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT    DISPID_EVMETH_ONCONTROLSELECT
+#define DISPID_HTMLELEMENTEVENTS_ONMOVESTART        DISPID_EVMETH_ONMOVESTART
+#define DISPID_HTMLELEMENTEVENTS_ONMOVEEND          DISPID_EVMETH_ONMOVEEND
+#define DISPID_HTMLELEMENTEVENTS_ONRESIZESTART      DISPID_EVMETH_ONRESIZESTART
+#define DISPID_HTMLELEMENTEVENTS_ONRESIZEEND        DISPID_EVMETH_ONRESIZEEND
+#define DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER       DISPID_EVMETH_ONMOUSEENTER
+#define DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE       DISPID_EVMETH_ONMOUSELEAVE
+#define DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL       DISPID_EVMETH_ONMOUSEWHEEL
+#define DISPID_HTMLELEMENTEVENTS_ONACTIVATE         DISPID_EVMETH_ONACTIVATE
+#define DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE       DISPID_EVMETH_ONDEACTIVATE
+#define DISPID_HTMLELEMENTEVENTS_ONFOCUSIN          DISPID_EVMETH_ONFOCUSIN
+#define DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT         DISPID_EVMETH_ONFOCUSOUT
+
+/* HTMLElementEvents2 */
+
+#define DISPID_HTMLELEMENTEVENTS2_ONHELP            DISPID_EVMETH_ONHELP
+#define DISPID_HTMLELEMENTEVENTS2_ONCLICK           DISPID_EVMETH_ONCLICK
+#define DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK        DISPID_EVMETH_ONDBLCLICK
+#define DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS        DISPID_EVMETH_ONKEYPRESS
+#define DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN         DISPID_EVMETH_ONKEYDOWN
+#define DISPID_HTMLELEMENTEVENTS2_ONKEYUP           DISPID_EVMETH_ONKEYUP
+#define DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT        DISPID_EVMETH_ONMOUSEOUT
+#define DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER       DISPID_EVMETH_ONMOUSEOVER
+#define DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE       DISPID_EVMETH_ONMOUSEMOVE
+#define DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN       DISPID_EVMETH_ONMOUSEDOWN
+#define DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP         DISPID_EVMETH_ONMOUSEUP
+#define DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART     DISPID_EVMETH_ONSELECTSTART
+#define DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE    DISPID_EVMETH_ONFILTER
+#define DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART       DISPID_EVMETH_ONDRAGSTART
+#define DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE    DISPID_EVMETH_ONBEFOREUPDATE
+#define DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE     DISPID_EVMETH_ONAFTERUPDATE
+#define DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE     DISPID_EVMETH_ONERRORUPDATE
+#define DISPID_HTMLELEMENTEVENTS2_ONROWEXIT         DISPID_EVMETH_ONROWEXIT
+#define DISPID_HTMLELEMENTEVENTS2_ONROWENTER        DISPID_EVMETH_ONROWENTER
+#define DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED  DISPID_EVMETH_ONDATASETCHANGED
+#define DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE   DISPID_EVMETH_ONDATAAVAILABLE
+#define DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE DISPID_EVMETH_ONDATASETCOMPLETE
+#define DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE     DISPID_EVMETH_ONLOSECAPTURE
+#define DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE  DISPID_EVMETH_ONPROPERTYCHANGE
+#define DISPID_HTMLELEMENTEVENTS2_ONSCROLL          DISPID_EVMETH_ONSCROLL
+#define DISPID_HTMLELEMENTEVENTS2_ONFOCUS           DISPID_EVMETH_ONFOCUS
+#define DISPID_HTMLELEMENTEVENTS2_ONBLUR            DISPID_EVMETH_ONBLUR
+#define DISPID_HTMLELEMENTEVENTS2_ONRESIZE          DISPID_EVMETH_ONRESIZE
+#define DISPID_HTMLELEMENTEVENTS2_ONDRAG            DISPID_EVMETH_ONDRAG
+#define DISPID_HTMLELEMENTEVENTS2_ONDRAGEND         DISPID_EVMETH_ONDRAGEND
+#define DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER       DISPID_EVMETH_ONDRAGENTER
+#define DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER        DISPID_EVMETH_ONDRAGOVER
+#define DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE       DISPID_EVMETH_ONDRAGLEAVE
+#define DISPID_HTMLELEMENTEVENTS2_ONDROP            DISPID_EVMETH_ONDROP
+#define DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT       DISPID_EVMETH_ONBEFORECUT
+#define DISPID_HTMLELEMENTEVENTS2_ONCUT             DISPID_EVMETH_ONCUT
+#define DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY      DISPID_EVMETH_ONBEFORECOPY
+#define DISPID_HTMLELEMENTEVENTS2_ONCOPY            DISPID_EVMETH_ONCOPY
+#define DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE     DISPID_EVMETH_ONBEFOREPASTE
+#define DISPID_HTMLELEMENTEVENTS2_ONPASTE           DISPID_EVMETH_ONPASTE
+#define DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU     DISPID_EVMETH_ONCONTEXTMENU
+#define DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE      DISPID_EVMETH_ONROWSDELETE
+#define DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED    DISPID_EVMETH_ONROWSINSERTED
+#define DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE      DISPID_EVMETH_ONCELLCHANGE
+#define DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE DISPID_EVMETH_ONREADYSTATECHANGE
+#define DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE  DISPID_EVMETH_ONLAYOUTCOMPLETE
+#define DISPID_HTMLELEMENTEVENTS2_ONPAGE            DISPID_EVMETH_ONPAGE
+#define DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER      DISPID_EVMETH_ONMOUSEENTER
+#define DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE      DISPID_EVMETH_ONMOUSELEAVE
+#define DISPID_HTMLELEMENTEVENTS2_ONACTIVATE        DISPID_EVMETH_ONACTIVATE
+#define DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE      DISPID_EVMETH_ONDEACTIVATE
+#define DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE DISPID_EVMETH_ONBEFOREDEACTIVATE
+#define DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE  DISPID_EVMETH_ONBEFOREACTIVATE
+#define DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN         DISPID_EVMETH_ONFOCUSIN
+#define DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT        DISPID_EVMETH_ONFOCUSOUT
+#define DISPID_HTMLELEMENTEVENTS2_ONMOVE            DISPID_EVMETH_ONMOVE
+#define DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT   DISPID_EVMETH_ONCONTROLSELECT
+#define DISPID_HTMLELEMENTEVENTS2_ONMOVESTART       DISPID_EVMETH_ONMOVESTART
+#define DISPID_HTMLELEMENTEVENTS2_ONMOVEEND         DISPID_EVMETH_ONMOVEEND
+#define DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART     DISPID_EVMETH_ONRESIZESTART
+#define DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND       DISPID_EVMETH_ONRESIZEEND
+#define DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL      DISPID_EVMETH_ONMOUSEWHEEL
+
+/* IHTMLElement */
+#define DISPID_IHTMLELEMENT_SETATTRIBUTE         (DISPID_HTMLOBJECT+1)
+#define DISPID_IHTMLELEMENT_GETATTRIBUTE         (DISPID_HTMLOBJECT+2)
+#define DISPID_IHTMLELEMENT_REMOVEATTRIBUTE      (DISPID_HTMLOBJECT+3)
+#define DISPID_IHTMLELEMENT_CLASSNAME            (DISPID_ELEMENT+1)
+#define DISPID_IHTMLELEMENT_ID                   (DISPID_ELEMENT+2)
+#define DISPID_IHTMLELEMENT_TAGNAME              (DISPID_ELEMENT+4)
+#define DISPID_IHTMLELEMENT_OFFSETLEFT           (DISPID_ELEMENT+8)
+#define DISPID_IHTMLELEMENT_OFFSETTOP            (DISPID_ELEMENT+9)
+#define DISPID_IHTMLELEMENT_OFFSETWIDTH          (DISPID_ELEMENT+10)
+#define DISPID_IHTMLELEMENT_OFFSETHEIGHT         (DISPID_ELEMENT+11)
+#define DISPID_IHTMLELEMENT_OFFSETPARENT         (DISPID_ELEMENT+12)
+#define DISPID_IHTMLELEMENT_DOCUMENT             (DISPID_ELEMENT+18)
+#define DISPID_IHTMLELEMENT_SCROLLINTOVIEW       (DISPID_ELEMENT+19)
+#define DISPID_IHTMLELEMENT_CONTAINS             (DISPID_ELEMENT+20)
+#define DISPID_IHTMLELEMENT_SOURCEINDEX          (DISPID_ELEMENT+24)
+#define DISPID_IHTMLELEMENT_RECORDNUMBER         (DISPID_ELEMENT+25)
+#define DISPID_IHTMLELEMENT_INNERHTML            (DISPID_ELEMENT+26)
+#define DISPID_IHTMLELEMENT_INNERTEXT            (DISPID_ELEMENT+27)
+#define DISPID_IHTMLELEMENT_OUTERHTML            (DISPID_ELEMENT+28)
+#define DISPID_IHTMLELEMENT_OUTERTEXT            (DISPID_ELEMENT+29)
+#define DISPID_IHTMLELEMENT_INSERTADJACENTHTML   (DISPID_ELEMENT+30)
+#define DISPID_IHTMLELEMENT_INSERTADJACENTTEXT   (DISPID_ELEMENT+31)
+#define DISPID_IHTMLELEMENT_PARENTTEXTEDIT       (DISPID_ELEMENT+32)
+#define DISPID_IHTMLELEMENT_ISTEXTEDIT           (DISPID_ELEMENT+34)
+#define DISPID_IHTMLELEMENT_CLICK                (DISPID_ELEMENT+33)
+#define DISPID_IHTMLELEMENT_FILTERS              (DISPID_ELEMENT+35)
+#define DISPID_IHTMLELEMENT_TOSTRING             (DISPID_ELEMENT+36)
+#define DISPID_IHTMLELEMENT_CHILDREN             (DISPID_ELEMENT+37)
+#define DISPID_IHTMLELEMENT_ALL                  (DISPID_ELEMENT+38)
+#define DISPID_IHTMLELEMENT_PARENTELEMENT        STDPROPID_XOBJ_PARENT
+#define DISPID_IHTMLELEMENT_STYLE                STDPROPID_XOBJ_STYLE
+#define DISPID_IHTMLELEMENT_ONHELP               DISPID_EVPROP_ONHELP
+#define DISPID_IHTMLELEMENT_ONCLICK              DISPID_EVPROP_ONCLICK
+#define DISPID_IHTMLELEMENT_ONDBLCLICK           DISPID_EVPROP_ONDBLCLICK
+#define DISPID_IHTMLELEMENT_ONKEYDOWN            DISPID_EVPROP_ONKEYDOWN
+#define DISPID_IHTMLELEMENT_ONKEYUP              DISPID_EVPROP_ONKEYUP
+#define DISPID_IHTMLELEMENT_ONKEYPRESS           DISPID_EVPROP_ONKEYPRESS
+#define DISPID_IHTMLELEMENT_ONMOUSEOUT           DISPID_EVPROP_ONMOUSEOUT
+#define DISPID_IHTMLELEMENT_ONMOUSEOVER          DISPID_EVPROP_ONMOUSEOVER
+#define DISPID_IHTMLELEMENT_ONMOUSEMOVE          DISPID_EVPROP_ONMOUSEMOVE
+#define DISPID_IHTMLELEMENT_ONMOUSEDOWN          DISPID_EVPROP_ONMOUSEDOWN
+#define DISPID_IHTMLELEMENT_ONMOUSEUP            DISPID_EVPROP_ONMOUSEUP
+#define DISPID_IHTMLELEMENT_TITLE                STDPROPID_XOBJ_CONTROLTIPTEXT
+#define DISPID_IHTMLELEMENT_LANGUAGE             DISPID_A_LANGUAGE
+#define DISPID_IHTMLELEMENT_ONSELECTSTART        DISPID_EVPROP_ONSELECTSTART
+#define DISPID_IHTMLELEMENT_LANG                 DISPID_A_LANG
+#define DISPID_IHTMLELEMENT_ONDRAGSTART          DISPID_EVPROP_ONDRAGSTART
+#define DISPID_IHTMLELEMENT_ONBEFOREUPDATE       DISPID_EVPROP_ONBEFOREUPDATE
+#define DISPID_IHTMLELEMENT_ONAFTERUPDATE        DISPID_EVPROP_ONAFTERUPDATE
+#define DISPID_IHTMLELEMENT_ONERRORUPDATE        DISPID_EVPROP_ONERRORUPDATE
+#define DISPID_IHTMLELEMENT_ONROWEXIT            DISPID_EVPROP_ONROWEXIT
+#define DISPID_IHTMLELEMENT_ONROWENTER           DISPID_EVPROP_ONROWENTER
+#define DISPID_IHTMLELEMENT_ONDATASETCHANGED     DISPID_EVPROP_ONDATASETCHANGED
+#define DISPID_IHTMLELEMENT_ONDATAAVAILABLE      DISPID_EVPROP_ONDATAAVAILABLE
+#define DISPID_IHTMLELEMENT_ONDATASETCOMPLETE    DISPID_EVPROP_ONDATASETCOMPLETE
+#define DISPID_IHTMLELEMENT_ONFILTERCHANGE       DISPID_EVPROP_ONFILTER
+
+/* IHTMLElement2 */
+#define DISPID_IHTMLELEMENT2_SCOPENAME              DISPID_ELEMENT+39
+#define DISPID_IHTMLELEMENT2_SETCAPTURE             DISPID_ELEMENT+40
+#define DISPID_IHTMLELEMENT2_RELEASECAPTURE         DISPID_ELEMENT+41
+#define DISPID_IHTMLELEMENT2_ONLOSECAPTURE          DISPID_EVPROP_ONLOSECAPTURE
+#define DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT     DISPID_ELEMENT+42
+#define DISPID_IHTMLELEMENT2_DOSCROLL               DISPID_ELEMENT+43
+#define DISPID_IHTMLELEMENT2_ONSCROLL               DISPID_EVPROP_ONSCROLL
+#define DISPID_IHTMLELEMENT2_ONDRAG                 DISPID_EVPROP_ONDRAG
+#define DISPID_IHTMLELEMENT2_ONDRAGEND              DISPID_EVPROP_ONDRAGEND
+#define DISPID_IHTMLELEMENT2_ONDRAGENTER            DISPID_EVPROP_ONDRAGENTER
+#define DISPID_IHTMLELEMENT2_ONDRAGOVER             DISPID_EVPROP_ONDRAGOVER
+#define DISPID_IHTMLELEMENT2_ONDRAGLEAVE            DISPID_EVPROP_ONDRAGLEAVE
+#define DISPID_IHTMLELEMENT2_ONDROP                 DISPID_EVPROP_ONDROP
+#define DISPID_IHTMLELEMENT2_ONBEFORECUT            DISPID_EVPROP_ONBEFORECUT
+#define DISPID_IHTMLELEMENT2_ONCUT                  DISPID_EVPROP_ONCUT
+#define DISPID_IHTMLELEMENT2_ONBEFORECOPY           DISPID_EVPROP_ONBEFORECOPY
+#define DISPID_IHTMLELEMENT2_ONCOPY                 DISPID_EVPROP_ONCOPY
+#define DISPID_IHTMLELEMENT2_ONBEFOREPASTE          DISPID_EVPROP_ONBEFOREPASTE
+#define DISPID_IHTMLELEMENT2_ONPASTE                DISPID_EVPROP_ONPASTE
+#define DISPID_IHTMLELEMENT2_CURRENTSTYLE           DISPID_ELEMENT+7
+#define DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE       DISPID_EVPROP_ONPROPERTYCHANGE
+#define DISPID_IHTMLELEMENT2_GETCLIENTRECTS         DISPID_ELEMENT+44
+#define DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT  DISPID_ELEMENT+45
+#define DISPID_IHTMLELEMENT2_SETEXPRESSION          DISPID_HTMLOBJECT+4
+#define DISPID_IHTMLELEMENT2_GETEXPRESSION          DISPID_HTMLOBJECT+5
+#define DISPID_IHTMLELEMENT2_REMOVEEXPRESSION       DISPID_HTMLOBJECT+6
+#define DISPID_IHTMLELEMENT2_TABINDEX               STDPROPID_XOBJ_TABINDEX
+#define DISPID_IHTMLELEMENT2_FOCUS                  DISPID_SITE
+#define DISPID_IHTMLELEMENT2_ACCESSKEY              DISPID_SITE+5
+#define DISPID_IHTMLELEMENT2_ONBLUR                 DISPID_EVPROP_ONBLUR
+#define DISPID_IHTMLELEMENT2_ONFOCUS                DISPID_EVPROP_ONFOCUS
+#define DISPID_IHTMLELEMENT2_ONRESIZE               DISPID_EVPROP_ONRESIZE
+#define DISPID_IHTMLELEMENT2_BLUR                   DISPID_SITE+2
+#define DISPID_IHTMLELEMENT2_ADDFILTER              DISPID_SITE+17
+#define DISPID_IHTMLELEMENT2_REMOVEFILTER           DISPID_SITE+18
+#define DISPID_IHTMLELEMENT2_CLIENTHEIGHT           DISPID_SITE+19
+#define DISPID_IHTMLELEMENT2_CLIENTWIDTH            DISPID_SITE+20
+#define DISPID_IHTMLELEMENT2_CLIENTTOP              DISPID_SITE+21
+#define DISPID_IHTMLELEMENT2_CLIENTLEFT             DISPID_SITE+22
+#define DISPID_IHTMLELEMENT2_ATTACHEVENT            DISPID_HTMLOBJECT+7
+#define DISPID_IHTMLELEMENT2_DETACHEVENT            DISPID_HTMLOBJECT+8
+#define DISPID_IHTMLELEMENT2_READYSTATE             DISPID_A_READYSTATE
+#define DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE     DISPID_EVPROP_ONREADYSTATECHANGE
+#define DISPID_IHTMLELEMENT2_ONROWSDELETE           DISPID_EVPROP_ONROWSDELETE
+#define DISPID_IHTMLELEMENT2_ONROWSINSERTED         DISPID_EVPROP_ONROWSINSERTED
+#define DISPID_IHTMLELEMENT2_ONCELLCHANGE           DISPID_EVPROP_ONCELLCHANGE
+#define DISPID_IHTMLELEMENT2_DIR                    DISPID_A_DIR
+#define DISPID_IHTMLELEMENT2_CREATECONTROLRANGE     DISPID_ELEMENT+56
+#define DISPID_IHTMLELEMENT2_SCROLLHEIGHT           DISPID_ELEMENT+57
+#define DISPID_IHTMLELEMENT2_SCROLLWIDTH            DISPID_ELEMENT+58
+#define DISPID_IHTMLELEMENT2_SCROLLTOP              DISPID_ELEMENT+59
+#define DISPID_IHTMLELEMENT2_SCROLLLEFT             DISPID_ELEMENT+60
+#define DISPID_IHTMLELEMENT2_CLEARATTRIBUTES        DISPID_ELEMENT+62
+#define DISPID_IHTMLELEMENT2_MERGEATTRIBUTES        DISPID_ELEMENT+63
+#define DISPID_IHTMLELEMENT2_ONCONTEXTMENU          DISPID_EVPROP_ONCONTEXTMENU
+#define DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT  DISPID_ELEMENT+69
+#define DISPID_IHTMLELEMENT2_APPLYELEMENT           DISPID_ELEMENT+65
+#define DISPID_IHTMLELEMENT2_GETADJACENTTEXT        DISPID_ELEMENT+70
+#define DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT    DISPID_ELEMENT+71
+#define DISPID_IHTMLELEMENT2_CANHAVECHILDREN        DISPID_ELEMENT+72
+#define DISPID_IHTMLELEMENT2_ADDBEHAVIOR            DISPID_ELEMENT+80
+#define DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR         DISPID_ELEMENT+81
+#define DISPID_IHTMLELEMENT2_RUNTIMESTYLE           DISPID_ELEMENT+64
+#define DISPID_IHTMLELEMENT2_BEHAVIORURNS           DISPID_ELEMENT+82
+#define DISPID_IHTMLELEMENT2_TAGURN                 DISPID_ELEMENT+83
+#define DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS      DISPID_EVPROP_ONBEFOREEDITFOCUS
+#define DISPID_IHTMLELEMENT2_READYSTATEVALUE        DISPID_ELEMENT+84
+#define DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME   DISPID_ELEMENT+85
+
+/* IHTMLElement3 */
+#define DISPID_IHTMLELEMENT3_MERGEATTRIBUTES     DISPID_ELEMENT+96
+#define DISPID_IHTMLELEMENT3_ISMULTILINE         DISPID_ELEMENT+97
+#define DISPID_IHTMLELEMENT3_CANHAVEHTML         DISPID_ELEMENT+98
+#define DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE    DISPID_EVPROP_ONLAYOUTCOMPLETE
+#define DISPID_IHTMLELEMENT3_ONPAGE              DISPID_EVPROP_ONPAGE
+#define DISPID_IHTMLELEMENT3_INFLATEBLOCK        DISPID_ELEMENT+100
+#define DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE  DISPID_EVPROP_ONBEFOREDEACTIVATE
+#define DISPID_IHTMLELEMENT3_SETACTIVE           DISPID_ELEMENT+101
+#define DISPID_IHTMLELEMENT3_CONTENTEDITABLE     DISPID_A_EDITABLE
+#define DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE   DISPID_ELEMENT+102
+#define DISPID_IHTMLELEMENT3_HIDEFOCUS           DISPID_A_HIDEFOCUS
+#define DISPID_IHTMLELEMENT3_DISABLED            STDPROPID_XOBJ_DISABLED
+#define DISPID_IHTMLELEMENT3_ISDISABLED          DISPID_ELEMENT+105
+#define DISPID_IHTMLELEMENT3_ONMOVE              DISPID_EVPROP_ONMOVE
+#define DISPID_IHTMLELEMENT3_ONCONTROLSELECT     DISPID_EVPROP_ONCONTROLSELECT
+#define DISPID_IHTMLELEMENT3_FIREEVENT           DISPID_ELEMENT+106
+#define DISPID_IHTMLELEMENT3_ONRESIZESTART       DISPID_EVPROP_ONRESIZESTART
+#define DISPID_IHTMLELEMENT3_ONRESIZEEND         DISPID_EVPROP_ONRESIZEEND
+#define DISPID_IHTMLELEMENT3_ONMOVESTART         DISPID_EVPROP_ONMOVESTART
+#define DISPID_IHTMLELEMENT3_ONMOVEEND           DISPID_EVPROP_ONMOVEEND
+#define DISPID_IHTMLELEMENT3_ONMOUSEENTER        DISPID_EVPROP_ONMOUSEENTER
+#define DISPID_IHTMLELEMENT3_ONMOUSELEAVE        DISPID_EVPROP_ONMOUSELEAVE
+#define DISPID_IHTMLELEMENT3_ONACTIVATE          DISPID_EVPROP_ONACTIVATE
+#define DISPID_IHTMLELEMENT3_ONDEACTIVATE        DISPID_EVPROP_ONDEACTIVATE
+#define DISPID_IHTMLELEMENT3_DRAGDROP            DISPID_ELEMENT+107
+#define DISPID_IHTMLELEMENT3_GLYPHMODE           DISPID_ELEMENT+108
+
+/* IHTMLElement4 */
+#define DISPID_IHTMLELEMENT4_ONMOUSEWHEEL         DISPID_EVPROP_ONMOUSEWHEEL
+#define DISPID_IHTMLELEMENT4_NORMALIZE            DISPID_ELEMENT+112
+#define DISPID_IHTMLELEMENT4_GETATTRIBUTENODE     DISPID_ELEMENT+109
+#define DISPID_IHTMLELEMENT4_SETATTRIBUTENODE     DISPID_ELEMENT+110
+#define DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE  DISPID_ELEMENT+111
+#define DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE     DISPID_EVPROP_ONBEFOREACTIVATE
+#define DISPID_IHTMLELEMENT4_ONFOCUSIN            DISPID_EVPROP_ONFOCUSIN
+#define DISPID_IHTMLELEMENT4_ONFOCUSOUT           DISPID_EVPROP_ONFOCUSOUT
+
+/* IHTMLGenericElement */
+#define DISPID_IHTMLGENERICELEMENT_RECORDSET       DISPID_GENERIC+1
+#define DISPID_IHTMLGENERICELEMENT_NAMEDRECORDSET  DISPID_GENERIC+2
+
+/* IHTMLUniqueName */
+#define DISPID_IHTMLUNIQUENAME_UNIQUENUMBER  DISPID_ELEMENT+54
+#define DISPID_IHTMLUNIQUENAME_UNIQUEID      DISPID_ELEMENT+55
+
+/* IHTMLDatabinding */
+#define DISPID_IHTMLDATABINDING_DATAFLD       DISPID_ELEMENT+21
+#define DISPID_IHTMLDATABINDING_DATASRC       DISPID_ELEMENT+22
+#define DISPID_IHTMLDATABINDING_DATAFORMATAS  DISPID_ELEMENT+23
+
+/* IHTMLStyle */
+#define DISPID_IHTMLSTYLE_PIXELTOP                    DISPID_STYLE
+#define DISPID_IHTMLSTYLE_PIXELLEFT                   (DISPID_STYLE+1)
+#define DISPID_IHTMLSTYLE_PIXELWIDTH                  (DISPID_STYLE+2)
+#define DISPID_IHTMLSTYLE_PIXELHEIGHT                 (DISPID_STYLE+3)
+#define DISPID_IHTMLSTYLE_POSTOP                      (DISPID_STYLE+4)
+#define DISPID_IHTMLSTYLE_POSLEFT                     (DISPID_STYLE+5)
+#define DISPID_IHTMLSTYLE_POSWIDTH                    (DISPID_STYLE+6)
+#define DISPID_IHTMLSTYLE_POSHEIGHT                   (DISPID_STYLE+7)
+#define DISPID_IHTMLSTYLE_TOSTRING                    (DISPID_STYLE+8)
+#define DISPID_IHTMLSTYLE_SETATTRIBUTE                (DISPID_HTMLOBJECT+1)
+#define DISPID_IHTMLSTYLE_GETATTRIBUTE                (DISPID_HTMLOBJECT+2)
+#define DISPID_IHTMLSTYLE_REMOVEATTRIBUTE             (DISPID_HTMLOBJECT+3)
+#define DISPID_IHTMLSTYLE_FONTFAMILY                  DISPID_A_FONTFACE
+#define DISPID_IHTMLSTYLE_FONTSTYLE                   DISPID_A_FONTSTYLE
+#define DISPID_IHTMLSTYLE_FONTVARIANT                 DISPID_A_FONTVARIANT
+#define DISPID_IHTMLSTYLE_FONTWEIGHT                  DISPID_A_FONTWEIGHT
+#define DISPID_IHTMLSTYLE_FONTSIZE                    DISPID_A_FONTSIZE
+#define DISPID_IHTMLSTYLE_FONT                        DISPID_A_FONT
+#define DISPID_IHTMLSTYLE_COLOR                       DISPID_A_COLOR
+#define DISPID_IHTMLSTYLE_BACKGROUND                  DISPID_A_BACKGROUND
+#define DISPID_IHTMLSTYLE_BACKGROUNDIMAGE             DISPID_A_BACKGROUNDIMAGE
+#define DISPID_IHTMLSTYLE_BACKGROUNDREPEAT            DISPID_A_BACKGROUNDREPEAT
+#define DISPID_IHTMLSTYLE_BACKGROUNDATTACHMENT        DISPID_A_BACKGROUNDATTACHMENT
+#define DISPID_IHTMLSTYLE_BACKGROUNDPOSITION          DISPID_A_BACKGROUNDPOSITION
+#define DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONX         DISPID_A_BACKGROUNDPOSX
+#define DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONY         DISPID_A_BACKGROUNDPOSY
+#define DISPID_IHTMLSTYLE_WORDSPACING                 DISPID_A_WORDSPACING
+#define DISPID_IHTMLSTYLE_LETTERSPACING               DISPID_A_LETTERSPACING
+#define DISPID_IHTMLSTYLE_TEXTDECORATION              DISPID_A_TEXTDECORATION
+#define DISPID_IHTMLSTYLE_TEXTDECORATIONNONE          DISPID_A_TEXTDECORATIONNONE
+#define DISPID_IHTMLSTYLE_TEXTDECORATIONUNDERLINE     DISPID_A_TEXTDECORATIONUNDERLINE
+#define DISPID_IHTMLSTYLE_TEXTDECORATIONOVERLINE      DISPID_A_TEXTDECORATIONOVERLINE
+#define DISPID_IHTMLSTYLE_TEXTDECORATIONLINETHROUGH   DISPID_A_TEXTDECORATIONLINETHROUGH
+#define DISPID_IHTMLSTYLE_TEXTDECORATIONBLINK         DISPID_A_TEXTDECORATIONBLINK
+#define DISPID_IHTMLSTYLE_VERTICALALIGN               DISPID_A_VERTICALALIGN
+#define DISPID_IHTMLSTYLE_TEXTTRANSFORM               DISPID_A_TEXTTRANSFORM
+#define DISPID_IHTMLSTYLE_TEXTINDENT                  DISPID_A_TEXTINDENT
+#define DISPID_IHTMLSTYLE_LINEHEIGHT                  DISPID_A_LINEHEIGHT
+#define DISPID_IHTMLSTYLE_MARGINTOP                   DISPID_A_MARGINTOP
+#define DISPID_IHTMLSTYLE_MARGINRIGHT                 DISPID_A_MARGINRIGHT
+#define DISPID_IHTMLSTYLE_MARGINBOTTOM                DISPID_A_MARGINBOTTOM
+#define DISPID_IHTMLSTYLE_MARGINLEFT                  DISPID_A_MARGINLEFT
+#define DISPID_IHTMLSTYLE_MARGIN                      DISPID_A_MARGIN
+#define DISPID_IHTMLSTYLE_PADDINGTOP                  DISPID_A_PADDINGTOP
+#define DISPID_IHTMLSTYLE_PADDINGRIGHT                DISPID_A_PADDINGRIGHT
+#define DISPID_IHTMLSTYLE_PADDINGBOTTOM               DISPID_A_PADDINGBOTTOM
+#define DISPID_IHTMLSTYLE_PADDINGLEFT                 DISPID_A_PADDINGLEFT
+#define DISPID_IHTMLSTYLE_PADDING                     DISPID_A_PADDING
+#define DISPID_IHTMLSTYLE_BORDER                      DISPID_A_BORDER
+#define DISPID_IHTMLSTYLE_BORDERTOP                   DISPID_A_BORDERTOP
+#define DISPID_IHTMLSTYLE_BORDERRIGHT                 DISPID_A_BORDERRIGHT
+#define DISPID_IHTMLSTYLE_BORDERBOTTOM                DISPID_A_BORDERBOTTOM
+#define DISPID_IHTMLSTYLE_BORDERLEFT                  DISPID_A_BORDERLEFT
+#define DISPID_IHTMLSTYLE_BORDERCOLOR                 DISPID_A_BORDERCOLOR
+#define DISPID_IHTMLSTYLE_BORDERTOPCOLOR              DISPID_A_BORDERTOPCOLOR
+#define DISPID_IHTMLSTYLE_BORDERRIGHTCOLOR            DISPID_A_BORDERRIGHTCOLOR
+#define DISPID_IHTMLSTYLE_BORDERBOTTOMCOLOR           DISPID_A_BORDERBOTTOMCOLOR
+#define DISPID_IHTMLSTYLE_BORDERLEFTCOLOR             DISPID_A_BORDERLEFTCOLOR
+#define DISPID_IHTMLSTYLE_BORDERWIDTH                 DISPID_A_BORDERWIDTH
+#define DISPID_IHTMLSTYLE_BORDERTOPWIDTH              DISPID_A_BORDERTOPWIDTH
+#define DISPID_IHTMLSTYLE_BORDERRIGHTWIDTH            DISPID_A_BORDERRIGHTWIDTH
+#define DISPID_IHTMLSTYLE_BORDERBOTTOMWIDTH           DISPID_A_BORDERBOTTOMWIDTH
+#define DISPID_IHTMLSTYLE_BORDERLEFTWIDTH             DISPID_A_BORDERLEFTWIDTH
+#define DISPID_IHTMLSTYLE_BORDERSTYLE                 DISPID_A_BORDERSTYLE
+#define DISPID_IHTMLSTYLE_BORDERTOPSTYLE              DISPID_A_BORDERTOPSTYLE
+#define DISPID_IHTMLSTYLE_BORDERRIGHTSTYLE            DISPID_A_BORDERRIGHTSTYLE
+#define DISPID_IHTMLSTYLE_BORDERBOTTOMSTYLE           DISPID_A_BORDERBOTTOMSTYLE
+#define DISPID_IHTMLSTYLE_BORDERLEFTSTYLE             DISPID_A_BORDERLEFTSTYLE
+#define DISPID_IHTMLSTYLE_STYLEFLOAT                  DISPID_A_FLOAT
+#define DISPID_IHTMLSTYLE_CLEAR                       DISPID_A_CLEAR
+#define DISPID_IHTMLSTYLE_DISPLAY                     DISPID_A_DISPLAY
+#define DISPID_IHTMLSTYLE_VISIBILITY                  DISPID_A_VISIBILITY
+#define DISPID_IHTMLSTYLE_LISTSTYLETYPE               DISPID_A_LISTSTYLETYPE
+#define DISPID_IHTMLSTYLE_LISTSTYLEPOSITION           DISPID_A_LISTSTYLEPOSITION
+#define DISPID_IHTMLSTYLE_LISTSTYLEIMAGE              DISPID_A_LISTSTYLEIMAGE
+#define DISPID_IHTMLSTYLE_LISTSTYLE                   DISPID_A_LISTSTYLE
+#define DISPID_IHTMLSTYLE_WHITESPACE                  DISPID_A_WHITESPACE
+#define DISPID_IHTMLSTYLE_POSITION                    DISPID_A_POSITION
+#define DISPID_IHTMLSTYLE_ZINDEX                      DISPID_A_ZINDEX
+#define DISPID_IHTMLSTYLE_OVERFLOW                    DISPID_A_OVERFLOW
+#define DISPID_IHTMLSTYLE_PAGEBREAKBEFORE             DISPID_A_PAGEBREAKBEFORE
+#define DISPID_IHTMLSTYLE_PAGEBREAKAFTER              DISPID_A_PAGEBREAKAFTER
+#define DISPID_IHTMLSTYLE_CSSTEXT                     DISPID_A_STYLETEXT
+#define DISPID_IHTMLSTYLE_CURSOR                      DISPID_A_CURSOR
+#define DISPID_IHTMLSTYLE_CLIP                        DISPID_A_CLIP
+#define DISPID_IHTMLSTYLE_FILTER                      DISPID_A_FILTER
+#define DISPID_IHTMLSTYLE_WIDTH                       STDPROPID_XOBJ_WIDTH
+#define DISPID_IHTMLSTYLE_HEIGHT                      STDPROPID_XOBJ_HEIGHT
+#define DISPID_IHTMLSTYLE_TOP                         STDPROPID_XOBJ_TOP
+#define DISPID_IHTMLSTYLE_LEFT                        STDPROPID_XOBJ_LEFT
+#define DISPID_IHTMLSTYLE_TEXTALIGN                   STDPROPID_XOBJ_BLOCKALIGN
+#define DISPID_IHTMLSTYLE_BACKGROUNDCOLOR             DISPID_BACKCOLOR
+
+/* IHTMLStyle2 */
+#define DISPID_IHTMLSTYLE2_TABLELAYOUT       DISPID_A_TABLELAYOUT
+#define DISPID_IHTMLSTYLE2_BORDERCOLLAPSE    DISPID_A_BORDERCOLLAPSE
+#define DISPID_IHTMLSTYLE2_DIRECTION         DISPID_A_DIRECTION
+#define DISPID_IHTMLSTYLE2_BEHAVIOR          DISPID_A_BEHAVIOR
+#define DISPID_IHTMLSTYLE2_SETEXPRESSION     DISPID_HTMLOBJECT+4
+#define DISPID_IHTMLSTYLE2_GETEXPRESSION     DISPID_HTMLOBJECT+5
+#define DISPID_IHTMLSTYLE2_REMOVEEXPRESSION  DISPID_HTMLOBJECT+6
+#define DISPID_IHTMLSTYLE2_POSITION          DISPID_A_POSITION
+#define DISPID_IHTMLSTYLE2_UNICODEBIDI       DISPID_A_UNICODEBIDI
+#define DISPID_IHTMLSTYLE2_BOTTOM            STDPROPID_XOBJ_BOTTOM
+#define DISPID_IHTMLSTYLE2_RIGHT             STDPROPID_XOBJ_RIGHT
+#define DISPID_IHTMLSTYLE2_PIXELBOTTOM       DISPID_STYLE+9
+#define DISPID_IHTMLSTYLE2_PIXELRIGHT        DISPID_STYLE+10
+#define DISPID_IHTMLSTYLE2_POSBOTTOM         DISPID_STYLE+11
+#define DISPID_IHTMLSTYLE2_POSRIGHT          DISPID_STYLE+12
+#define DISPID_IHTMLSTYLE2_IMEMODE           DISPID_A_IMEMODE
+#define DISPID_IHTMLSTYLE2_RUBYALIGN         DISPID_A_RUBYALIGN
+#define DISPID_IHTMLSTYLE2_RUBYPOSITION      DISPID_A_RUBYPOSITION
+#define DISPID_IHTMLSTYLE2_RUBYOVERHANG      DISPID_A_RUBYOVERHANG
+#define DISPID_IHTMLSTYLE2_LAYOUTGRIDCHAR    DISPID_A_LAYOUTGRIDCHAR
+#define DISPID_IHTMLSTYLE2_LAYOUTGRIDLINE    DISPID_A_LAYOUTGRIDLINE
+#define DISPID_IHTMLSTYLE2_LAYOUTGRIDMODE    DISPID_A_LAYOUTGRIDMODE
+#define DISPID_IHTMLSTYLE2_LAYOUTGRIDTYPE    DISPID_A_LAYOUTGRIDTYPE
+#define DISPID_IHTMLSTYLE2_LAYOUTGRID        DISPID_A_LAYOUTGRID
+#define DISPID_IHTMLSTYLE2_WORDBREAK         DISPID_A_WORDBREAK
+#define DISPID_IHTMLSTYLE2_LINEBREAK         DISPID_A_LINEBREAK
+#define DISPID_IHTMLSTYLE2_TEXTJUSTIFY       DISPID_A_TEXTJUSTIFY
+#define DISPID_IHTMLSTYLE2_TEXTJUSTIFYTRIM   DISPID_A_TEXTJUSTIFYTRIM
+#define DISPID_IHTMLSTYLE2_TEXTKASHIDA       DISPID_A_TEXTKASHIDA
+#define DISPID_IHTMLSTYLE2_TEXTAUTOSPACE     DISPID_A_TEXTAUTOSPACE
+#define DISPID_IHTMLSTYLE2_OVERFLOWX         DISPID_A_OVERFLOWX
+#define DISPID_IHTMLSTYLE2_OVERFLOWY         DISPID_A_OVERFLOWY
+#define DISPID_IHTMLSTYLE2_ACCELERATOR       DISPID_A_ACCELERATOR
+
+/* IHTMLStyle3 */
+#define DISPID_IHTMLSTYLE3_LAYOUTFLOW                DISPID_A_LAYOUTFLOW
+#define DISPID_IHTMLSTYLE3_ZOOM                      DISPID_A_ZOOM
+#define DISPID_IHTMLSTYLE3_WORDWRAP                  DISPID_A_WORDWRAP
+#define DISPID_IHTMLSTYLE3_TEXTUNDERLINEPOSITION     DISPID_A_TEXTUNDERLINEPOSITION
+#define DISPID_IHTMLSTYLE3_SCROLLBARBASECOLOR        DISPID_A_SCROLLBARBASECOLOR
+#define DISPID_IHTMLSTYLE3_SCROLLBARFACECOLOR        DISPID_A_SCROLLBARFACECOLOR
+#define DISPID_IHTMLSTYLE3_SCROLLBAR3DLIGHTCOLOR     DISPID_A_SCROLLBAR3DLIGHTCOLOR
+#define DISPID_IHTMLSTYLE3_SCROLLBARSHADOWCOLOR      DISPID_A_SCROLLBARSHADOWCOLOR
+#define DISPID_IHTMLSTYLE3_SCROLLBARHIGHLIGHTCOLOR   DISPID_A_SCROLLBARHIGHLIGHTCOLOR
+#define DISPID_IHTMLSTYLE3_SCROLLBARDARKSHADOWCOLOR  DISPID_A_SCROLLBARDARKSHADOWCOLOR
+#define DISPID_IHTMLSTYLE3_SCROLLBARARROWCOLOR       DISPID_A_SCROLLBARARROWCOLOR
+#define DISPID_IHTMLSTYLE3_SCROLLBARTRACKCOLOR       DISPID_A_SCROLLBARTRACKCOLOR
+#define DISPID_IHTMLSTYLE3_WRITINGMODE               DISPID_A_WRITINGMODE
+#define DISPID_IHTMLSTYLE3_TEXTALIGNLAST             DISPID_A_TEXTALIGNLAST
+#define DISPID_IHTMLSTYLE3_TEXTKASHIDASPACE          DISPID_A_TEXTKASHIDASPACE
+
+/* IHTMLStyle4 */
+#define DISPID_IHTMLSTYLE4_TEXTOVERFLOW  DISPID_A_TEXTOVERFLOW
+#define DISPID_IHTMLSTYLE4_MINHEIGHT     DISPID_A_MINHEIGHT
+
+/* IHTMLFiltersCollection */
+#define DISPID_IHTMLFILTERSCOLLECTION_LENGTH     (DISPID_FILTERS+1)
+#define DISPID_IHTMLFILTERSCOLLECTION__NEWENUM   DISPID_NEWENUM
+#define DISPID_IHTMLFILTERSCOLLECTION_ITEM       DISPID_VALUE
+
+/* IHTMLSelectionObject */
+#define DISPID_IHTMLSELECTIONOBJECT_CREATERANGE   (DISPID_SELECTOBJ+1)
+#define DISPID_IHTMLSELECTIONOBJECT_EMPTY         (DISPID_SELECTOBJ+2)
+#define DISPID_IHTMLSELECTIONOBJECT_CLEAR         (DISPID_SELECTOBJ+3)
+#define DISPID_IHTMLSELECTIONOBJECT_TYPE          (DISPID_SELECTOBJ+4)
+
+/* IHTMLFramesCollection2 */
+#define DISPID_IHTMLFRAMESCOLLECTION2_ITEM     0
+#define DISPID_IHTMLFRAMESCOLLECTION2_LENGTH   1001
+
+/* IHTMLLocation */
+#define DISPID_IHTMLLOCATION_HOST       (DISPID_LOCATION+1)
+#define DISPID_IHTMLLOCATION_HOSTNAME   (DISPID_LOCATION+2)
+#define DISPID_IHTMLLOCATION_PORT       (DISPID_LOCATION+3)
+#define DISPID_IHTMLLOCATION_PATHNAME   (DISPID_LOCATION+4)
+#define DISPID_IHTMLLOCATION_SEARCH     (DISPID_LOCATION+5)
+#define DISPID_IHTMLLOCATION_HASH       (DISPID_LOCATION+6)
+#define DISPID_IHTMLLOCATION_RELOAD     (DISPID_LOCATION+7)
+#define DISPID_IHTMLLOCATION_REPLACE    (DISPID_LOCATION+8)
+#define DISPID_IHTMLLOCATION_ASSIGN     (DISPID_LOCATION+9)
+#define DISPID_IHTMLLOCATION_TOSTRING   (DISPID_LOCATION+10)
+#define DISPID_IHTMLLOCATION_HREF       DISPID_VALUE
+#define DISPID_IHTMLLOCATION_PROTOCOL   DISPID_LOCATION
+
+/* IHTMLBookmarkCollection */
+#define DISPID_IHTMLBOOKMARKCOLLECTION_LENGTH    DISPID_OPTIONS_COL+1
+#define DISPID_IHTMLBOOKMARKCOLLECTION__NEWENUM  DISPID_NEWENUM
+#define DISPID_IHTMLBOOKMARKCOLLECTION_ITEM      DISPID_VALUE
+
+/* IHTMLWindow2 */
+#define DISPID_IHTMLWINDOW2_HISTORY              2
+#define DISPID_IHTMLWINDOW2_CLOSE                3
+#define DISPID_IHTMLWINDOW2_OPENER               4
+#define DISPID_IHTMLWINDOW2_NAVIGATOR            5
+#define DISPID_IHTMLWINDOW2_MOVETO               6
+#define DISPID_IHTMLWINDOW2_MOVEBY               7
+#define DISPID_IHTMLWINDOW2_RESIZETO             9
+#define DISPID_IHTMLWINDOW2_RESIZEBY             8
+#define DISPID_IHTMLWINDOW2_NAME                 11
+#define DISPID_IHTMLWINDOW2_PARENT               12
+#define DISPID_IHTMLWINDOW2_OPEN                 13
+#define DISPID_IHTMLWINDOW2_LOCATION             14
+#define DISPID_IHTMLWINDOW2_SELF                 20
+#define DISPID_IHTMLWINDOW2_TOP                  21
+#define DISPID_IHTMLWINDOW2_WINDOW               22
+#define DISPID_IHTMLWINDOW2_CLOSED               23
+#define DISPID_IHTMLWINDOW2_NAVIGATE             25
+#define DISPID_IHTMLWINDOW2_FRAMES               1100
+#define DISPID_IHTMLWINDOW2_DEFAULTSTATUS        1101
+#define DISPID_IHTMLWINDOW2_STATUS               1102
+#define DISPID_IHTMLWINDOW2_SETTIMEOUT           1172
+#define DISPID_IHTMLWINDOW2_CLEARTIMEOUT         1104
+#define DISPID_IHTMLWINDOW2_ALERT                1105
+#define DISPID_IHTMLWINDOW2_CONFIRM              1110
+#define DISPID_IHTMLWINDOW2_PROMPT               1111
+#define DISPID_IHTMLWINDOW2_IMAGE                1125
+#define DISPID_IHTMLWINDOW2_DOCUMENT             1151
+#define DISPID_IHTMLWINDOW2_EVENT                1152
+#define DISPID_IHTMLWINDOW2__NEWENUM             1153
+#define DISPID_IHTMLWINDOW2_SHOWMODALDIALOG      1154
+#define DISPID_IHTMLWINDOW2_SHOWHELP             1155
+#define DISPID_IHTMLWINDOW2_SCREEN               1156
+#define DISPID_IHTMLWINDOW2_OPTION               1157
+#define DISPID_IHTMLWINDOW2_FOCUS                1158
+#define DISPID_IHTMLWINDOW2_BLUR                 1159
+#define DISPID_IHTMLWINDOW2_SCROLL               1160
+#define DISPID_IHTMLWINDOW2_CLIENTINFORMATION    1161
+#define DISPID_IHTMLWINDOW2_SETINTERVAL          1173
+#define DISPID_IHTMLWINDOW2_CLEARINTERVAL        1163
+#define DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING   1164
+#define DISPID_IHTMLWINDOW2_EXECSCRIPT           1165
+#define DISPID_IHTMLWINDOW2_TOSTRING             1166
+#define DISPID_IHTMLWINDOW2_SCROLLBY             1167
+#define DISPID_IHTMLWINDOW2_SCROLLTO             1168
+#define DISPID_IHTMLWINDOW2_EXTERNAL             1169
+#define DISPID_IHTMLWINDOW2_ONFOCUS              DISPID_EVPROP_ONFOCUS
+#define DISPID_IHTMLWINDOW2_ONBLUR               DISPID_EVPROP_ONBLUR
+#define DISPID_IHTMLWINDOW2_ONLOAD               DISPID_EVPROP_ONLOAD
+#define DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD       DISPID_EVPROP_ONBEFOREUNLOAD
+#define DISPID_IHTMLWINDOW2_ONUNLOAD             DISPID_EVPROP_ONUNLOAD
+#define DISPID_IHTMLWINDOW2_ONHELP               DISPID_EVPROP_ONHELP
+#define DISPID_IHTMLWINDOW2_ONERROR              DISPID_EVPROP_ONERROR
+#define DISPID_IHTMLWINDOW2_ONRESIZE             DISPID_EVPROP_ONRESIZE
+#define DISPID_IHTMLWINDOW2_ONSCROLL             DISPID_EVPROP_ONSCROLL
+
+/* IHTMLWindow3 */
+#define DISPID_IHTMLWINDOW3_SCREENLEFT          1170
+#define DISPID_IHTMLWINDOW3_SCREENTOP           1171
+#define DISPID_IHTMLWINDOW3_ATTACHEVENT         DISPID_HTMLOBJECT+7
+#define DISPID_IHTMLWINDOW3_DETACHEVENT         DISPID_HTMLOBJECT+8
+#define DISPID_IHTMLWINDOW3_SETTIMEOUT          1103
+#define DISPID_IHTMLWINDOW3_SETINTERVAL         1162
+#define DISPID_IHTMLWINDOW3_PRINT               1174
+#define DISPID_IHTMLWINDOW3_ONBEFOREPRINT       DISPID_EVPROP_ONBEFOREPRINT
+#define DISPID_IHTMLWINDOW3_ONAFTERPRINT        DISPID_EVPROP_ONAFTERPRINT
+#define DISPID_IHTMLWINDOW3_CLIPBOARDDATA       1175
+#define DISPID_IHTMLWINDOW3_SHOWMODELESSDIALOG  1176
+
+/* IHTMLWindow4 */
+#define DISPID_IHTMLWINDOW4_CREATEPOPUP   1180
+#define DISPID_IHTMLWINDOW4_FRAMEELEMENT  1181
+
+/* IHTMLImageElementFactory */
+#define DISPID_IHTMLIMAGEELEMENTFACTORY_CREATE                    DISPID_VALUE
+
+/* IHTMLImgElement */
+#define DISPID_IHTMLIMGELEMENT_BORDER             (DISPID_IMGBASE+4)
+#define DISPID_IHTMLIMGELEMENT_VSPACE             (DISPID_IMGBASE+5)
+#define DISPID_IHTMLIMGELEMENT_HSPACE             (DISPID_IMGBASE+6)
+#define DISPID_IHTMLIMGELEMENT_ALT                (DISPID_IMGBASE+2)
+#define DISPID_IHTMLIMGELEMENT_SRC                (DISPID_IMGBASE+3)
+#define DISPID_IHTMLIMGELEMENT_LOWSRC             (DISPID_IMGBASE+7)
+#define DISPID_IHTMLIMGELEMENT_VRML               (DISPID_IMGBASE+8)
+#define DISPID_IHTMLIMGELEMENT_DYNSRC             (DISPID_IMGBASE+9)
+#define DISPID_IHTMLIMGELEMENT_READYSTATE         (DISPID_IMGBASE+12)
+#define DISPID_IHTMLIMGELEMENT_COMPLETE           (DISPID_IMGBASE+10)
+#define DISPID_IHTMLIMGELEMENT_LOOP               (DISPID_IMGBASE+11)
+#define DISPID_IHTMLIMGELEMENT_ISMAP              (DISPID_IMG+2)
+#define DISPID_IHTMLIMGELEMENT_USEMAP             (DISPID_IMG+8)
+#define DISPID_IHTMLIMGELEMENT_MIMETYPE           (DISPID_IMG+10)
+#define DISPID_IHTMLIMGELEMENT_FILESIZE           (DISPID_IMG+11)
+#define DISPID_IHTMLIMGELEMENT_FILECREATEDDATE    (DISPID_IMG+12)
+#define DISPID_IHTMLIMGELEMENT_FILEMODIFIEDDATE   (DISPID_IMG+13)
+#define DISPID_IHTMLIMGELEMENT_FILEUPDATEDDATE    (DISPID_IMG+14)
+#define DISPID_IHTMLIMGELEMENT_PROTOCOL           (DISPID_IMG+15)
+#define DISPID_IHTMLIMGELEMENT_HREF               (DISPID_IMG+16)
+#define DISPID_IHTMLIMGELEMENT_NAMEPROP           (DISPID_IMG+17)
+#define DISPID_IHTMLIMGELEMENT_ALIGN              STDPROPID_XOBJ_CONTROLALIGN
+#define DISPID_IHTMLIMGELEMENT_ONLOAD             DISPID_EVPROP_ONLOAD
+#define DISPID_IHTMLIMGELEMENT_ONERROR            DISPID_EVPROP_ONERROR
+#define DISPID_IHTMLIMGELEMENT_ONABORT            DISPID_EVPROP_ONABORT
+#define DISPID_IHTMLIMGELEMENT_NAME               STDPROPID_XOBJ_NAME
+#define DISPID_IHTMLIMGELEMENT_WIDTH              STDPROPID_XOBJ_WIDTH
+#define DISPID_IHTMLIMGELEMENT_HEIGHT             STDPROPID_XOBJ_HEIGHT
+#define DISPID_IHTMLIMGELEMENT_START              DISPID_IMGBASE+13
+
+/* IHTMLImgElement2 */
+#define DISPID_IHTMLIMGELEMENT2_LONGDESC  DISPID_IMG+19
+
+/* IOmHistory */
+#define DISPID_IOMHISTORY_LENGTH    DISPID_HISTORY
+#define DISPID_IOMHISTORY_BACK      (DISPID_HISTORY+1)
+#define DISPID_IOMHISTORY_FORWARD   (DISPID_HISTORY+2)
+#define DISPID_IOMHISTORY_GO        (DISPID_HISTORY+3)
+
+/* IOmNavigator */
+#define DISPID_IOMNAVIGATOR_APPCODENAME       DISPID_NAVIGATOR
+#define DISPID_IOMNAVIGATOR_APPNAME           (DISPID_NAVIGATOR+1)
+#define DISPID_IOMNAVIGATOR_APPVERSION        (DISPID_NAVIGATOR+2)
+#define DISPID_IOMNAVIGATOR_USERAGENT         (DISPID_NAVIGATOR+3)
+#define DISPID_IOMNAVIGATOR_JAVAENABLED       (DISPID_NAVIGATOR+4)
+#define DISPID_IOMNAVIGATOR_TAINTENABLED      (DISPID_NAVIGATOR+5)
+#define DISPID_IOMNAVIGATOR_MIMETYPES         (DISPID_NAVIGATOR+6)
+#define DISPID_IOMNAVIGATOR_PLUGINS           (DISPID_NAVIGATOR+7)
+#define DISPID_IOMNAVIGATOR_COOKIEENABLED     (DISPID_NAVIGATOR+8)
+#define DISPID_IOMNAVIGATOR_OPSPROFILE        (DISPID_NAVIGATOR+9)
+#define DISPID_IOMNAVIGATOR_TOSTRING          (DISPID_NAVIGATOR+10)
+#define DISPID_IOMNAVIGATOR_CPUCLASS          (DISPID_NAVIGATOR+11)
+#define DISPID_IOMNAVIGATOR_SYSTEMLANGUAGE    (DISPID_NAVIGATOR+12)
+#define DISPID_IOMNAVIGATOR_BROWSERLANGUAGE   (DISPID_NAVIGATOR+13)
+#define DISPID_IOMNAVIGATOR_USERLANGUAGE      (DISPID_NAVIGATOR+14)
+#define DISPID_IOMNAVIGATOR_PLATFORM          (DISPID_NAVIGATOR+15)
+#define DISPID_IOMNAVIGATOR_APPMINORVERSION   (DISPID_NAVIGATOR+16)
+#define DISPID_IOMNAVIGATOR_CONNECTIONSPEED   (DISPID_NAVIGATOR+17)
+#define DISPID_IOMNAVIGATOR_ONLINE            (DISPID_NAVIGATOR+18)
+#define DISPID_IOMNAVIGATOR_USERPROFILE       (DISPID_NAVIGATOR+19)
+
+/* IHTMLMimeTypesCollection */
+#define DISPID_IHTMLMIMETYPESCOLLECTION_LENGTH   1
+
+/* IHTMLPluginsCollection */
+#define DISPID_IHTMLPLUGINSCOLLECTION_LENGTH    1
+#define DISPID_IHTMLPLUGINSCOLLECTION_REFRESH   2
+
+/* IHTMLOpsProfile */
+#define DISPID_IHTMLOPSPROFILE_ADDREQUEST       1
+#define DISPID_IHTMLOPSPROFILE_CLEARREQUEST     2
+#define DISPID_IHTMLOPSPROFILE_DOREQUEST        3
+#define DISPID_IHTMLOPSPROFILE_GETATTRIBUTE     4
+#define DISPID_IHTMLOPSPROFILE_SETATTRIBUTE     5
+#define DISPID_IHTMLOPSPROFILE_COMMITCHANGES    6
+#define DISPID_IHTMLOPSPROFILE_ADDREADREQUEST   7
+#define DISPID_IHTMLOPSPROFILE_DOREADREQUEST    8
+#define DISPID_IHTMLOPSPROFILE_DOWRITEREQUEST   9
+
+/* IHTMLDataTransfer */
+#define DISPID_IHTMLDATATRANSFER_SETDATA        DISPID_DATATRANSFER+1
+#define DISPID_IHTMLDATATRANSFER_GETDATA        DISPID_DATATRANSFER+2
+#define DISPID_IHTMLDATATRANSFER_CLEARDATA      DISPID_DATATRANSFER+3
+#define DISPID_IHTMLDATATRANSFER_DROPEFFECT     DISPID_DATATRANSFER+4
+#define DISPID_IHTMLDATATRANSFER_EFFECTALLOWED  DISPID_DATATRANSFER+5
+
+/* IHTMLEventObj */
+#define DISPID_IHTMLEVENTOBJ_SRCELEMENT     (DISPID_EVENTOBJ+1)
+#define DISPID_IHTMLEVENTOBJ_ALTKEY         (DISPID_EVENTOBJ+2)
+#define DISPID_IHTMLEVENTOBJ_CTRLKEY        (DISPID_EVENTOBJ+3)
+#define DISPID_IHTMLEVENTOBJ_SHIFTKEY       (DISPID_EVENTOBJ+4)
+#define DISPID_IHTMLEVENTOBJ_X              (DISPID_EVENTOBJ+5)
+#define DISPID_IHTMLEVENTOBJ_Y              (DISPID_EVENTOBJ+6)
+#define DISPID_IHTMLEVENTOBJ_RETURNVALUE    (DISPID_EVENTOBJ+7)
+#define DISPID_IHTMLEVENTOBJ_CANCELBUBBLE   (DISPID_EVENTOBJ+8)
+#define DISPID_IHTMLEVENTOBJ_FROMELEMENT    (DISPID_EVENTOBJ+9)
+#define DISPID_IHTMLEVENTOBJ_TOELEMENT      (DISPID_EVENTOBJ+10)
+#define DISPID_IHTMLEVENTOBJ_KEYCODE        (DISPID_EVENTOBJ+11)
+#define DISPID_IHTMLEVENTOBJ_BUTTON         (DISPID_EVENTOBJ+12)
+#define DISPID_IHTMLEVENTOBJ_TYPE           (DISPID_EVENTOBJ+13)
+#define DISPID_IHTMLEVENTOBJ_QUALIFIER      (DISPID_EVENTOBJ+14)
+#define DISPID_IHTMLEVENTOBJ_REASON         (DISPID_EVENTOBJ+15)
+#define DISPID_IHTMLEVENTOBJ_CLIENTX        (DISPID_EVENTOBJ+20)
+#define DISPID_IHTMLEVENTOBJ_CLIENTY        (DISPID_EVENTOBJ+21)
+#define DISPID_IHTMLEVENTOBJ_OFFSETX        (DISPID_EVENTOBJ+22)
+#define DISPID_IHTMLEVENTOBJ_OFFSETY        (DISPID_EVENTOBJ+23)
+#define DISPID_IHTMLEVENTOBJ_SCREENX        (DISPID_EVENTOBJ+24)
+#define DISPID_IHTMLEVENTOBJ_SCREENY        (DISPID_EVENTOBJ+25)
+#define DISPID_IHTMLEVENTOBJ_SRCFILTER      (DISPID_EVENTOBJ+26)
+
+/* IHTMLEventObj2 */
+#define DISPID_IHTMLEVENTOBJ2_SETATTRIBUTE     DISPID_HTMLOBJECT+1
+#define DISPID_IHTMLEVENTOBJ2_GETATTRIBUTE     DISPID_HTMLOBJECT+2
+#define DISPID_IHTMLEVENTOBJ2_REMOVEATTRIBUTE  DISPID_HTMLOBJECT+3
+#define DISPID_IHTMLEVENTOBJ2_PROPERTYNAME     DISPID_EVENTOBJ+27
+#define DISPID_IHTMLEVENTOBJ2_BOOKMARKS        DISPID_EVENTOBJ+31
+#define DISPID_IHTMLEVENTOBJ2_RECORDSET        DISPID_EVENTOBJ+32
+#define DISPID_IHTMLEVENTOBJ2_DATAFLD          DISPID_EVENTOBJ+33
+#define DISPID_IHTMLEVENTOBJ2_BOUNDELEMENTS    DISPID_EVENTOBJ+34
+#define DISPID_IHTMLEVENTOBJ2_REPEAT           DISPID_EVENTOBJ+35
+#define DISPID_IHTMLEVENTOBJ2_SRCURN           DISPID_EVENTOBJ+36
+#define DISPID_IHTMLEVENTOBJ2_SRCELEMENT       DISPID_EVENTOBJ+1
+#define DISPID_IHTMLEVENTOBJ2_ALTKEY           DISPID_EVENTOBJ+2
+#define DISPID_IHTMLEVENTOBJ2_CTRLKEY          DISPID_EVENTOBJ+3
+#define DISPID_IHTMLEVENTOBJ2_SHIFTKEY         DISPID_EVENTOBJ+4
+#define DISPID_IHTMLEVENTOBJ2_FROMELEMENT      DISPID_EVENTOBJ+9
+#define DISPID_IHTMLEVENTOBJ2_TOELEMENT        DISPID_EVENTOBJ+10
+#define DISPID_IHTMLEVENTOBJ2_BUTTON           DISPID_EVENTOBJ+12
+#define DISPID_IHTMLEVENTOBJ2_TYPE             DISPID_EVENTOBJ+13
+#define DISPID_IHTMLEVENTOBJ2_QUALIFIER        DISPID_EVENTOBJ+14
+#define DISPID_IHTMLEVENTOBJ2_REASON           DISPID_EVENTOBJ+15
+#define DISPID_IHTMLEVENTOBJ2_X                DISPID_EVENTOBJ+5
+#define DISPID_IHTMLEVENTOBJ2_Y                DISPID_EVENTOBJ+6
+#define DISPID_IHTMLEVENTOBJ2_CLIENTX          DISPID_EVENTOBJ+20
+#define DISPID_IHTMLEVENTOBJ2_CLIENTY          DISPID_EVENTOBJ+21
+#define DISPID_IHTMLEVENTOBJ2_OFFSETX          DISPID_EVENTOBJ+22
+#define DISPID_IHTMLEVENTOBJ2_OFFSETY          DISPID_EVENTOBJ+23
+#define DISPID_IHTMLEVENTOBJ2_SCREENX          DISPID_EVENTOBJ+24
+#define DISPID_IHTMLEVENTOBJ2_SCREENY          DISPID_EVENTOBJ+25
+#define DISPID_IHTMLEVENTOBJ2_SRCFILTER        DISPID_EVENTOBJ+26
+#define DISPID_IHTMLEVENTOBJ2_DATATRANSFER     DISPID_EVENTOBJ+37
+
+/* IHTMLEventObj3 */
+#define DISPID_IHTMLEVENTOBJ3_CONTENTOVERFLOW       DISPID_EVENTOBJ+38
+#define DISPID_IHTMLEVENTOBJ3_SHIFTLEFT             DISPID_EVENTOBJ+39
+#define DISPID_IHTMLEVENTOBJ3_ALTLEFT               DISPID_EVENTOBJ+40
+#define DISPID_IHTMLEVENTOBJ3_CTRLLEFT              DISPID_EVENTOBJ+41
+#define DISPID_IHTMLEVENTOBJ3_IMECOMPOSITIONCHANGE  DISPID_EVENTOBJ+42
+#define DISPID_IHTMLEVENTOBJ3_IMENOTIFYCOMMAND      DISPID_EVENTOBJ+43
+#define DISPID_IHTMLEVENTOBJ3_IMENOTIFYDATA         DISPID_EVENTOBJ+44
+#define DISPID_IHTMLEVENTOBJ3_IMEREQUEST            DISPID_EVENTOBJ+46
+#define DISPID_IHTMLEVENTOBJ3_IMEREQUESTDATA        DISPID_EVENTOBJ+47
+#define DISPID_IHTMLEVENTOBJ3_KEYBOARDLAYOUT        DISPID_EVENTOBJ+45
+#define DISPID_IHTMLEVENTOBJ3_BEHAVIORCOOKIE        DISPID_EVENTOBJ+48
+#define DISPID_IHTMLEVENTOBJ3_BEHAVIORPART          DISPID_EVENTOBJ+49
+#define DISPID_IHTMLEVENTOBJ3_NEXTPAGE              DISPID_EVENTOBJ+50
+
+/* IHTMLEventObj4 */
+#define DISPID_IHTMLEVENTOBJ4_WHEELDELTA  DISPID_EVENTOBJ+51
+
+/* IHTMLScreen */
+#define DISPID_IHTMLSCREEN_COLORDEPTH             (DISPID_SCREEN+1)
+#define DISPID_IHTMLSCREEN_BUFFERDEPTH            (DISPID_SCREEN+2)
+#define DISPID_IHTMLSCREEN_WIDTH                  (DISPID_SCREEN+3)
+#define DISPID_IHTMLSCREEN_HEIGHT                 (DISPID_SCREEN+4)
+#define DISPID_IHTMLSCREEN_UPDATEINTERVAL         (DISPID_SCREEN+5)
+#define DISPID_IHTMLSCREEN_AVAILHEIGHT            (DISPID_SCREEN+6)
+#define DISPID_IHTMLSCREEN_AVAILWIDTH             (DISPID_SCREEN+7)
+#define DISPID_IHTMLSCREEN_FONTSMOOTHINGENABLED   (DISPID_SCREEN+8)
+
+/* IHTMLOptionElementFactory */
+#define DISPID_IHTMLOPTIONELEMENTFACTORY_CREATE   DISPID_VALUE
+
+/* IHTMLOptionElement */
+#define DISPID_IHTMLOPTIONELEMENT_SELECTED          (DISPID_OPTION+1)
+#define DISPID_IHTMLOPTIONELEMENT_VALUE             (DISPID_OPTION+2)
+#define DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED   (DISPID_OPTION+3)
+#define DISPID_IHTMLOPTIONELEMENT_INDEX             (DISPID_OPTION+5)
+#define DISPID_IHTMLOPTIONELEMENT_TEXT              (DISPID_OPTION+4)
+#define DISPID_IHTMLOPTIONELEMENT_FORM              (DISPID_OPTION+6)
+
+/* IHTMLOptionElement3 */
+#define DISPID_IHTMLOPTIONELEMENT3_LABEL  DISPID_OPTION+7
+
+/* IHTMLFormElement */
+#define DISPID_IHTMLFORMELEMENT_ACTION     (DISPID_FORM+1)
+#define DISPID_IHTMLFORMELEMENT_DIR        (DISPID_FORM+2)
+#define DISPID_IHTMLFORMELEMENT_ENCODING   (DISPID_FORM+3)
+#define DISPID_IHTMLFORMELEMENT_METHOD     (DISPID_FORM+4)
+#define DISPID_IHTMLFORMELEMENT_ELEMENTS   (DISPID_FORM+5)
+#define DISPID_IHTMLFORMELEMENT_TARGET     (DISPID_FORM+6)
+#define DISPID_IHTMLFORMELEMENT_SUBMIT     (DISPID_FORM+9)
+#define DISPID_IHTMLFORMELEMENT_RESET      (DISPID_FORM+10)
+#define DISPID_IHTMLFORMELEMENT_TAGS       (DISPID_COLLECTION+2)
+#define DISPID_IHTMLFORMELEMENT_NAME       STDPROPID_XOBJ_NAME
+#define DISPID_IHTMLFORMELEMENT_ONSUBMIT   DISPID_EVPROP_ONSUBMIT
+#define DISPID_IHTMLFORMELEMENT_ONRESET    DISPID_EVPROP_ONRESET
+#define DISPID_IHTMLFORMELEMENT_LENGTH     DISPID_COLLECTION
+#define DISPID_IHTMLFORMELEMENT__NEWENUM   DISPID_NEWENUM
+#define DISPID_IHTMLFORMELEMENT_ITEM       DISPID_VALUE
+
+/* IHTMLStyleSheetsCollection */
+#define DISPID_IHTMLSTYLESHEETSCOLLECTION_LENGTH     (DISPID_STYLESHEETS_COL+1)
+#define DISPID_IHTMLSTYLESHEETSCOLLECTION__NEWENUM   DISPID_NEWENUM
+#define DISPID_IHTMLSTYLESHEETSCOLLECTION_ITEM       DISPID_VALUE
+
+/* IHTMLStyleSheet */
+#define DISPID_IHTMLSTYLESHEET_TITLE              (DISPID_STYLESHEET+1)
+#define DISPID_IHTMLSTYLESHEET_PARENTSTYLESHEET   (DISPID_STYLESHEET+2)
+#define DISPID_IHTMLSTYLESHEET_OWNINGELEMENT      (DISPID_STYLESHEET+3)
+#define DISPID_IHTMLSTYLESHEET_READONLY           (DISPID_STYLESHEET+4)
+#define DISPID_IHTMLSTYLESHEET_IMPORTS            (DISPID_STYLESHEET+5)
+#define DISPID_IHTMLSTYLESHEET_HREF               (DISPID_STYLESHEET+6)
+#define DISPID_IHTMLSTYLESHEET_TYPE               (DISPID_STYLESHEET+7)
+#define DISPID_IHTMLSTYLESHEET_ID                 (DISPID_STYLESHEET+8)
+#define DISPID_IHTMLSTYLESHEET_ADDIMPORT          (DISPID_STYLESHEET+9)
+#define DISPID_IHTMLSTYLESHEET_ADDRULE            (DISPID_STYLESHEET+10)
+#define DISPID_IHTMLSTYLESHEET_REMOVEIMPORT       (DISPID_STYLESHEET+11)
+#define DISPID_IHTMLSTYLESHEET_REMOVERULE         (DISPID_STYLESHEET+12)
+#define DISPID_IHTMLSTYLESHEET_MEDIA              (DISPID_STYLESHEET+13)
+#define DISPID_IHTMLSTYLESHEET_CSSTEXT            (DISPID_STYLESHEET+14)
+#define DISPID_IHTMLSTYLESHEET_RULES              (DISPID_STYLESHEET+15)
+#define DISPID_IHTMLSTYLESHEET_DISABLED           STDPROPID_XOBJ_DISABLED
+
+/* IHTMLStyleSheetRulesCollection */
+#define DISPID_IHTMLSTYLESHEETRULESCOLLECTION_LENGTH   (DISPID_STYLERULES_COL+1)
+#define DISPID_IHTMLSTYLESHEETRULESCOLLECTION_ITEM     DISPID_VALUE
+
+/* IHTMLStyleSheetRule */
+#define DISPID_IHTMLSTYLESHEETRULE_SELECTORTEXT   (DISPID_STYLERULE+1)
+#define DISPID_IHTMLSTYLESHEETRULE_READONLY       (DISPID_STYLERULE+2)
+#define DISPID_IHTMLSTYLESHEETRULE_STYLE          STDPROPID_XOBJ_STYLE
+
+/* IHTMLRuleStyle */
+#define DISPID_IHTMLRULESTYLE_SETATTRIBUTE                (DISPID_HTMLOBJECT+1)
+#define DISPID_IHTMLRULESTYLE_GETATTRIBUTE                (DISPID_HTMLOBJECT+2)
+#define DISPID_IHTMLRULESTYLE_REMOVEATTRIBUTE             (DISPID_HTMLOBJECT+3)
+#define DISPID_IHTMLRULESTYLE_FONTFAMILY                  DISPID_A_FONTFACE
+#define DISPID_IHTMLRULESTYLE_FONTSTYLE                   DISPID_A_FONTSTYLE
+#define DISPID_IHTMLRULESTYLE_FONTVARIANT                 DISPID_A_FONTVARIANT
+#define DISPID_IHTMLRULESTYLE_FONTWEIGHT                  DISPID_A_FONTWEIGHT
+#define DISPID_IHTMLRULESTYLE_FONTSIZE                    DISPID_A_FONTSIZE
+#define DISPID_IHTMLRULESTYLE_FONT                        DISPID_A_FONT
+#define DISPID_IHTMLRULESTYLE_COLOR                       DISPID_A_COLOR
+#define DISPID_IHTMLRULESTYLE_BACKGROUND                  DISPID_A_BACKGROUND
+#define DISPID_IHTMLRULESTYLE_BACKGROUNDIMAGE             DISPID_A_BACKGROUNDIMAGE
+#define DISPID_IHTMLRULESTYLE_BACKGROUNDREPEAT            DISPID_A_BACKGROUNDREPEAT
+#define DISPID_IHTMLRULESTYLE_BACKGROUNDATTACHMENT        DISPID_A_BACKGROUNDATTACHMENT
+#define DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITION          DISPID_A_BACKGROUNDPOSITION
+#define DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONX         DISPID_A_BACKGROUNDPOSX
+#define DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONY         DISPID_A_BACKGROUNDPOSY
+#define DISPID_IHTMLRULESTYLE_WORDSPACING                 DISPID_A_WORDSPACING
+#define DISPID_IHTMLRULESTYLE_LETTERSPACING               DISPID_A_LETTERSPACING
+#define DISPID_IHTMLRULESTYLE_TEXTDECORATION              DISPID_A_TEXTDECORATION
+#define DISPID_IHTMLRULESTYLE_TEXTDECORATIONNONE          DISPID_A_TEXTDECORATIONNONE
+#define DISPID_IHTMLRULESTYLE_TEXTDECORATIONUNDERLINE     DISPID_A_TEXTDECORATIONUNDERLINE
+#define DISPID_IHTMLRULESTYLE_TEXTDECORATIONOVERLINE      DISPID_A_TEXTDECORATIONOVERLINE
+#define DISPID_IHTMLRULESTYLE_TEXTDECORATIONLINETHROUGH   DISPID_A_TEXTDECORATIONLINETHROUGH
+#define DISPID_IHTMLRULESTYLE_TEXTDECORATIONBLINK         DISPID_A_TEXTDECORATIONBLINK
+#define DISPID_IHTMLRULESTYLE_VERTICALALIGN               DISPID_A_VERTICALALIGN
+#define DISPID_IHTMLRULESTYLE_TEXTTRANSFORM               DISPID_A_TEXTTRANSFORM
+#define DISPID_IHTMLRULESTYLE_TEXTINDENT                  DISPID_A_TEXTINDENT
+#define DISPID_IHTMLRULESTYLE_LINEHEIGHT                  DISPID_A_LINEHEIGHT
+#define DISPID_IHTMLRULESTYLE_MARGINTOP                   DISPID_A_MARGINTOP
+#define DISPID_IHTMLRULESTYLE_MARGINRIGHT                 DISPID_A_MARGINRIGHT
+#define DISPID_IHTMLRULESTYLE_MARGINBOTTOM                DISPID_A_MARGINBOTTOM
+#define DISPID_IHTMLRULESTYLE_MARGINLEFT                  DISPID_A_MARGINLEFT
+#define DISPID_IHTMLRULESTYLE_MARGIN                      DISPID_A_MARGIN
+#define DISPID_IHTMLRULESTYLE_PADDINGTOP                  DISPID_A_PADDINGTOP
+#define DISPID_IHTMLRULESTYLE_PADDINGRIGHT                DISPID_A_PADDINGRIGHT
+#define DISPID_IHTMLRULESTYLE_PADDINGBOTTOM               DISPID_A_PADDINGBOTTOM
+#define DISPID_IHTMLRULESTYLE_PADDINGLEFT                 DISPID_A_PADDINGLEFT
+#define DISPID_IHTMLRULESTYLE_PADDING                     DISPID_A_PADDING
+#define DISPID_IHTMLRULESTYLE_BORDER                      DISPID_A_BORDER
+#define DISPID_IHTMLRULESTYLE_BORDERTOP                   DISPID_A_BORDERTOP
+#define DISPID_IHTMLRULESTYLE_BORDERRIGHT                 DISPID_A_BORDERRIGHT
+#define DISPID_IHTMLRULESTYLE_BORDERBOTTOM                DISPID_A_BORDERBOTTOM
+#define DISPID_IHTMLRULESTYLE_BORDERLEFT                  DISPID_A_BORDERLEFT
+#define DISPID_IHTMLRULESTYLE_BORDERCOLOR                 DISPID_A_BORDERCOLOR
+#define DISPID_IHTMLRULESTYLE_BORDERTOPCOLOR              DISPID_A_BORDERTOPCOLOR
+#define DISPID_IHTMLRULESTYLE_BORDERRIGHTCOLOR            DISPID_A_BORDERRIGHTCOLOR
+#define DISPID_IHTMLRULESTYLE_BORDERBOTTOMCOLOR           DISPID_A_BORDERBOTTOMCOLOR
+#define DISPID_IHTMLRULESTYLE_BORDERLEFTCOLOR             DISPID_A_BORDERLEFTCOLOR
+#define DISPID_IHTMLRULESTYLE_BORDERWIDTH                 DISPID_A_BORDERWIDTH
+#define DISPID_IHTMLRULESTYLE_BORDERTOPWIDTH              DISPID_A_BORDERTOPWIDTH
+#define DISPID_IHTMLRULESTYLE_BORDERRIGHTWIDTH            DISPID_A_BORDERRIGHTWIDTH
+#define DISPID_IHTMLRULESTYLE_BORDERBOTTOMWIDTH           DISPID_A_BORDERBOTTOMWIDTH
+#define DISPID_IHTMLRULESTYLE_BORDERLEFTWIDTH             DISPID_A_BORDERLEFTWIDTH
+#define DISPID_IHTMLRULESTYLE_BORDERSTYLE                 DISPID_A_BORDERSTYLE
+#define DISPID_IHTMLRULESTYLE_BORDERTOPSTYLE              DISPID_A_BORDERTOPSTYLE
+#define DISPID_IHTMLRULESTYLE_BORDERRIGHTSTYLE            DISPID_A_BORDERRIGHTSTYLE
+#define DISPID_IHTMLRULESTYLE_BORDERBOTTOMSTYLE           DISPID_A_BORDERBOTTOMSTYLE
+#define DISPID_IHTMLRULESTYLE_BORDERLEFTSTYLE             DISPID_A_BORDERLEFTSTYLE
+#define DISPID_IHTMLRULESTYLE_STYLEFLOAT                  DISPID_A_FLOAT
+#define DISPID_IHTMLRULESTYLE_CLEAR                       DISPID_A_CLEAR
+#define DISPID_IHTMLRULESTYLE_DISPLAY                     DISPID_A_DISPLAY
+#define DISPID_IHTMLRULESTYLE_VISIBILITY                  DISPID_A_VISIBILITY
+#define DISPID_IHTMLRULESTYLE_LISTSTYLETYPE               DISPID_A_LISTSTYLETYPE
+#define DISPID_IHTMLRULESTYLE_LISTSTYLEPOSITION           DISPID_A_LISTSTYLEPOSITION
+#define DISPID_IHTMLRULESTYLE_LISTSTYLEIMAGE              DISPID_A_LISTSTYLEIMAGE
+#define DISPID_IHTMLRULESTYLE_LISTSTYLE                   DISPID_A_LISTSTYLE
+#define DISPID_IHTMLRULESTYLE_WHITESPACE                  DISPID_A_WHITESPACE
+#define DISPID_IHTMLRULESTYLE_POSITION                    DISPID_A_POSITION
+#define DISPID_IHTMLRULESTYLE_ZINDEX                      DISPID_A_ZINDEX
+#define DISPID_IHTMLRULESTYLE_OVERFLOW                    DISPID_A_OVERFLOW
+#define DISPID_IHTMLRULESTYLE_PAGEBREAKBEFORE             DISPID_A_PAGEBREAKBEFORE
+#define DISPID_IHTMLRULESTYLE_PAGEBREAKAFTER              DISPID_A_PAGEBREAKAFTER
+#define DISPID_IHTMLRULESTYLE_CSSTEXT                     DISPID_A_STYLETEXT
+#define DISPID_IHTMLRULESTYLE_CURSOR                      DISPID_A_CURSOR
+#define DISPID_IHTMLRULESTYLE_CLIP                        DISPID_A_CLIP
+#define DISPID_IHTMLRULESTYLE_FILTER                      DISPID_A_FILTER
+#define DISPID_IHTMLRULESTYLE_TOP                         STDPROPID_XOBJ_TOP
+#define DISPID_IHTMLRULESTYLE_LEFT                        STDPROPID_XOBJ_LEFT
+#define DISPID_IHTMLRULESTYLE_WIDTH                       STDPROPID_XOBJ_WIDTH
+#define DISPID_IHTMLRULESTYLE_HEIGHT                      STDPROPID_XOBJ_HEIGHT
+#define DISPID_IHTMLRULESTYLE_TEXTALIGN                   STDPROPID_XOBJ_BLOCKALIGN
+#define DISPID_IHTMLRULESTYLE_BACKGROUNDCOLOR             DISPID_BACKCOLOR
+
+/* IHTMLDOMNode */
+#define DISPID_IHTMLDOMNODE_NODETYPE           DISPID_ELEMENT+46
+#define DISPID_IHTMLDOMNODE_PARENTNODE         DISPID_ELEMENT+47
+#define DISPID_IHTMLDOMNODE_HASCHILDNODES      DISPID_ELEMENT+48
+#define DISPID_IHTMLDOMNODE_CHILDNODES         DISPID_ELEMENT+49
+#define DISPID_IHTMLDOMNODE_ATTRIBUTES         DISPID_ELEMENT+50
+#define DISPID_IHTMLDOMNODE_INSERTBEFORE       DISPID_ELEMENT+51
+#define DISPID_IHTMLDOMNODE_REMOVECHILD        DISPID_ELEMENT+52
+#define DISPID_IHTMLDOMNODE_REPLACECHILD       DISPID_ELEMENT+53
+#define DISPID_IHTMLDOMNODE_CLONENODE          DISPID_ELEMENT+61
+#define DISPID_IHTMLDOMNODE_REMOVENODE         DISPID_ELEMENT+66
+#define DISPID_IHTMLDOMNODE_SWAPNODE           DISPID_ELEMENT+68
+#define DISPID_IHTMLDOMNODE_REPLACENODE        DISPID_ELEMENT+67
+#define DISPID_IHTMLDOMNODE_APPENDCHILD        DISPID_ELEMENT+73
+#define DISPID_IHTMLDOMNODE_NODENAME           DISPID_ELEMENT+74
+#define DISPID_IHTMLDOMNODE_NODEVALUE          DISPID_ELEMENT+75
+#define DISPID_IHTMLDOMNODE_FIRSTCHILD         DISPID_ELEMENT+76
+#define DISPID_IHTMLDOMNODE_LASTCHILD          DISPID_ELEMENT+77
+#define DISPID_IHTMLDOMNODE_PREVIOUSSIBLING    DISPID_ELEMENT+78
+#define DISPID_IHTMLDOMNODE_NEXTSIBLING        DISPID_ELEMENT+79
+
+/* IHTMLDOMNode2 */
+#define DISPID_IHTMLDOMNODE2_OWNERDOCUMENT     DISPID_ELEMENT+113
+
+/* IHTMLDOMTextNode */
+#define DISPID_IHTMLDOMTEXTNODE_DATA       DISPID_DOMTEXTNODE
+#define DISPID_IHTMLDOMTEXTNODE_TOSTRING   DISPID_DOMTEXTNODE+1
+#define DISPID_IHTMLDOMTEXTNODE_LENGTH     DISPID_DOMTEXTNODE+2
+#define DISPID_IHTMLDOMTEXTNODE_SPLITTEXT  DISPID_DOMTEXTNODE+3
+
+/* IHTMLDOMTextNode2 */
+#define DISPID_IHTMLDOMTEXTNODE2_SUBSTRINGDATA  DISPID_DOMTEXTNODE+4
+#define DISPID_IHTMLDOMTEXTNODE2_APPENDDATA     DISPID_DOMTEXTNODE+5
+#define DISPID_IHTMLDOMTEXTNODE2_INSERTDATA     DISPID_DOMTEXTNODE+6
+#define DISPID_IHTMLDOMTEXTNODE2_DELETEDATA     DISPID_DOMTEXTNODE+7
+#define DISPID_IHTMLDOMTEXTNODE2_REPLACEDATA    DISPID_DOMTEXTNODE+8
+
+/* IHTMLRenderStyle */
+#define DISPID_IHTMLRENDERSTYLE_TEXTLINETHROUGHSTYLE  DISPID_A_TEXTLINETHROUGHSTYLE
+#define DISPID_IHTMLRENDERSTYLE_TEXTUNDERLINESTYLE    DISPID_A_TEXTUNDERLINESTYLE
+#define DISPID_IHTMLRENDERSTYLE_TEXTEFFECT            DISPID_A_TEXTEFFECT
+#define DISPID_IHTMLRENDERSTYLE_TEXTCOLOR             DISPID_A_TEXTCOLOR
+#define DISPID_IHTMLRENDERSTYLE_TEXTBACKGROUNDCOLOR   DISPID_A_TEXTBACKGROUNDCOLOR
+#define DISPID_IHTMLRENDERSTYLE_TEXTDECORATIONCOLOR   DISPID_A_TEXTDECORATIONCOLOR
+#define DISPID_IHTMLRENDERSTYLE_RENDERINGPRIORITY     DISPID_A_RENDERINGPRIORITY
+#define DISPID_IHTMLRENDERSTYLE_DEFAULTTEXTSELECTION  DISPID_A_DEFAULTTEXTSELECTION
+#define DISPID_IHTMLRENDERSTYLE_TEXTDECORATION        DISPID_A_STYLETEXTDECORATION
+
+/* IHTMLDOMImplementation */
+#define DISPID_IHTMLDOMIMPLEMENTATION_HASFEATURE  DISPID_DOMIMPLEMENTATION
+
+/* IHTMLDOMAttribute */
+#define DISPID_IHTMLDOMATTRIBUTE_NODENAME   DISPID_DOMATTRIBUTE
+#define DISPID_IHTMLDOMATTRIBUTE_NODEVALUE  DISPID_DOMATTRIBUTE+2
+#define DISPID_IHTMLDOMATTRIBUTE_SPECIFIED  DISPID_DOMATTRIBUTE+1
+
+/* IHTMLBodyElement */
+#define DISPID_IHTMLBODYELEMENT_BACKGROUND        DISPID_A_BACKGROUNDIMAGE
+#define DISPID_IHTMLBODYELEMENT_BGPROPERTIES      DISPID_A_BACKGROUNDATTACHMENT
+#define DISPID_IHTMLBODYELEMENT_LEFTMARGIN        DISPID_A_MARGINLEFT
+#define DISPID_IHTMLBODYELEMENT_TOPMARGIN         DISPID_A_MARGINTOP
+#define DISPID_IHTMLBODYELEMENT_RIGHTMARGIN       DISPID_A_MARGINRIGHT
+#define DISPID_IHTMLBODYELEMENT_BOTTOMMARGIN      DISPID_A_MARGINBOTTOM
+#define DISPID_IHTMLBODYELEMENT_NOWRAP            DISPID_A_NOWRAP
+#define DISPID_IHTMLBODYELEMENT_BGCOLOR           DISPID_BACKCOLOR
+#define DISPID_IHTMLBODYELEMENT_TEXT              DISPID_A_COLOR
+#define DISPID_IHTMLBODYELEMENT_LINK              DISPID_BODY+10
+#define DISPID_IHTMLBODYELEMENT_VLINK             DISPID_BODY+12
+#define DISPID_IHTMLBODYELEMENT_ALINK             DISPID_BODY+11
+#define DISPID_IHTMLBODYELEMENT_ONLOAD            DISPID_EVPROP_ONLOAD
+#define DISPID_IHTMLBODYELEMENT_ONUNLOAD          DISPID_EVPROP_ONUNLOAD
+#define DISPID_IHTMLBODYELEMENT_SCROLL            DISPID_A_SCROLL
+#define DISPID_IHTMLBODYELEMENT_ONSELECT          DISPID_EVPROP_ONSELECT
+#define DISPID_IHTMLBODYELEMENT_ONBEFOREUNLOAD    DISPID_EVPROP_ONBEFOREUNLOAD
+#define DISPID_IHTMLBODYELEMENT_CREATETEXTRANGE   DISPID_BODY+13
+
+/* IHTMLBodyElement2 */
+#define DISPID_IHTMLBODYELEMENT2_ONBEFOREPRINT   DISPID_EVPROP_ONBEFOREPRINT
+#define DISPID_IHTMLBODYELEMENT2_ONAFTERPRINT    DISPID_EVPROP_ONAFTERPRINT
+
+/* IHTMLAnchorElement */
+#define DISPID_IHTMLANCHORELEMENT_HREF          DISPID_VALUE
+#define DISPID_IHTMLANCHORELEMENT_TARGET        DISPID_ANCHOR+3
+#define DISPID_IHTMLANCHORELEMENT_REL           DISPID_ANCHOR+5
+#define DISPID_IHTMLANCHORELEMENT_REV           DISPID_ANCHOR+6
+#define DISPID_IHTMLANCHORELEMENT_URN           DISPID_ANCHOR+7
+#define DISPID_IHTMLANCHORELEMENT_METHODS       DISPID_ANCHOR+8
+#define DISPID_IHTMLANCHORELEMENT_NAME          STDPROPID_XOBJ_NAME
+#define DISPID_IHTMLANCHORELEMENT_HOST          DISPID_ANCHOR+12
+#define DISPID_IHTMLANCHORELEMENT_HOSTNAME      DISPID_ANCHOR+13
+#define DISPID_IHTMLANCHORELEMENT_PATHNAME      DISPID_ANCHOR+14
+#define DISPID_IHTMLANCHORELEMENT_PORT          DISPID_ANCHOR+15
+#define DISPID_IHTMLANCHORELEMENT_PROTOCOL      DISPID_ANCHOR+16
+#define DISPID_IHTMLANCHORELEMENT_SEARCH        DISPID_ANCHOR+17
+#define DISPID_IHTMLANCHORELEMENT_HASH          DISPID_ANCHOR+18
+#define DISPID_IHTMLANCHORELEMENT_ONBLUR        DISPID_EVPROP_ONBLUR
+#define DISPID_IHTMLANCHORELEMENT_ONFOCUS       DISPID_EVPROP_ONFOCUS
+#define DISPID_IHTMLANCHORELEMENT_ACCESSKEY     DISPID_SITE+5
+#define DISPID_IHTMLANCHORELEMENT_PROTOCOLLONG  DISPID_ANCHOR+31
+#define DISPID_IHTMLANCHORELEMENT_MIMETYPE      DISPID_ANCHOR+30
+#define DISPID_IHTMLANCHORELEMENT_NAMEPROP      DISPID_ANCHOR+32
+#define DISPID_IHTMLANCHORELEMENT_TABINDEX      STDPROPID_XOBJ_TABINDEX
+#define DISPID_IHTMLANCHORELEMENT_FOCUS         DISPID_SITE+0
+#define DISPID_IHTMLANCHORELEMENT_BLUR          DISPID_SITE+2
+
+/* IHTMLTxtRange */
+#define DISPID_IHTMLTXTRANGE_HTMLTEXT                DISPID_RANGE+3
+#define DISPID_IHTMLTXTRANGE_TEXT                    DISPID_RANGE+4
+#define DISPID_IHTMLTXTRANGE_PARENTELEMENT           DISPID_RANGE+6
+#define DISPID_IHTMLTXTRANGE_DUPLICATE               DISPID_RANGE+8
+#define DISPID_IHTMLTXTRANGE_INRANGE                 DISPID_RANGE+10
+#define DISPID_IHTMLTXTRANGE_ISEQUAL                 DISPID_RANGE+11
+#define DISPID_IHTMLTXTRANGE_SCROLLINTOVIEW          DISPID_RANGE+12
+#define DISPID_IHTMLTXTRANGE_COLLAPSE                DISPID_RANGE+13
+#define DISPID_IHTMLTXTRANGE_EXPAND                  DISPID_RANGE+14
+#define DISPID_IHTMLTXTRANGE_MOVE                    DISPID_RANGE+15
+#define DISPID_IHTMLTXTRANGE_MOVESTART               DISPID_RANGE+16
+#define DISPID_IHTMLTXTRANGE_MOVEEND                 DISPID_RANGE+17
+#define DISPID_IHTMLTXTRANGE_SELECT                  DISPID_RANGE+24
+#define DISPID_IHTMLTXTRANGE_PASTEHTML               DISPID_RANGE+26
+#define DISPID_IHTMLTXTRANGE_MOVETOELEMENTTEXT       DISPID_RANGE+1
+#define DISPID_IHTMLTXTRANGE_SETENDPOINT             DISPID_RANGE+25
+#define DISPID_IHTMLTXTRANGE_COMPAREENDPOINTS        DISPID_RANGE+18
+#define DISPID_IHTMLTXTRANGE_FINDTEXT                DISPID_RANGE+19
+#define DISPID_IHTMLTXTRANGE_MOVETOPOINT             DISPID_RANGE+20
+#define DISPID_IHTMLTXTRANGE_GETBOOKMARK             DISPID_RANGE+21
+#define DISPID_IHTMLTXTRANGE_MOVETOBOOKMARK          DISPID_RANGE+9
+#define DISPID_IHTMLTXTRANGE_QUERYCOMMANDSUPPORTED   DISPID_RANGE+27
+#define DISPID_IHTMLTXTRANGE_QUERYCOMMANDENABLED     DISPID_RANGE+28
+#define DISPID_IHTMLTXTRANGE_QUERYCOMMANDSTATE       DISPID_RANGE+29
+#define DISPID_IHTMLTXTRANGE_QUERYCOMMANDINDETERM    DISPID_RANGE+30
+#define DISPID_IHTMLTXTRANGE_QUERYCOMMANDTEXT        DISPID_RANGE+31
+#define DISPID_IHTMLTXTRANGE_QUERYCOMMANDVALUE       DISPID_RANGE+32
+#define DISPID_IHTMLTXTRANGE_EXECCOMMAND             DISPID_RANGE+33
+#define DISPID_IHTMLTXTRANGE_EXECCOMMANDSHOWHELP     DISPID_RANGE+34
+
+/* IHTMLTextAreaElement */
+#define DISPID_IHTMLTEXTAREAELEMENT_TYPE             DISPID_INPUT
+#define DISPID_IHTMLTEXTAREAELEMENT_VALUE            DISPID_A_VALUE
+#define DISPID_IHTMLTEXTAREAELEMENT_NAME             STDPROPID_XOBJ_NAME
+#define DISPID_IHTMLTEXTAREAELEMENT_STATUS           DISPID_INPUT+1
+#define DISPID_IHTMLTEXTAREAELEMENT_DISABLED         STDPROPID_XOBJ_DISABLED
+#define DISPID_IHTMLTEXTAREAELEMENT_FORM             DISPID_SITE+4
+#define DISPID_IHTMLTEXTAREAELEMENT_DEFAULTVALUE     DISPID_DEFAULTVALUE
+#define DISPID_IHTMLTEXTAREAELEMENT_SELECT           DISPID_RICHTEXT+5
+#define DISPID_IHTMLTEXTAREAELEMENT_ONCHANGE         DISPID_EVPROP_ONCHANGE
+#define DISPID_IHTMLTEXTAREAELEMENT_ONSELECT         DISPID_EVPROP_ONSELECT
+#define DISPID_IHTMLTEXTAREAELEMENT_READONLY         DISPID_RICHTEXT+4
+#define DISPID_IHTMLTEXTAREAELEMENT_ROWS             DISPID_RICHTEXT+1
+#define DISPID_IHTMLTEXTAREAELEMENT_COLS             DISPID_RICHTEXT+2
+#define DISPID_IHTMLTEXTAREAELEMENT_WRAP             DISPID_RICHTEXT+3
+#define DISPID_IHTMLTEXTAREAELEMENT_CREATETEXTRANGE  DISPID_RICHTEXT+6
+
+/* IHTMLInputElement */
+#define DISPID_IHTMLINPUTELEMENT_TYPE             DISPID_INPUT
+#define DISPID_IHTMLINPUTELEMENT_VALUE            DISPID_A_VALUE
+#define DISPID_IHTMLINPUTELEMENT_NAME             STDPROPID_XOBJ_NAME
+#define DISPID_IHTMLINPUTELEMENT_STATUS           DISPID_INPUT+1
+#define DISPID_IHTMLINPUTELEMENT_DISABLED         STDPROPID_XOBJ_DISABLED
+#define DISPID_IHTMLINPUTELEMENT_FORM             DISPID_SITE+4
+#define DISPID_IHTMLINPUTELEMENT_SIZE             DISPID_INPUT+2
+#define DISPID_IHTMLINPUTELEMENT_MAXLENGTH        DISPID_INPUT+3
+#define DISPID_IHTMLINPUTELEMENT_SELECT           DISPID_INPUT+4
+#define DISPID_IHTMLINPUTELEMENT_ONCHANGE         DISPID_EVPROP_ONCHANGE
+#define DISPID_IHTMLINPUTELEMENT_ONSELECT         DISPID_EVPROP_ONSELECT
+#define DISPID_IHTMLINPUTELEMENT_DEFAULTVALUE     DISPID_DEFAULTVALUE
+#define DISPID_IHTMLINPUTELEMENT_READONLY         DISPID_INPUT+5
+#define DISPID_IHTMLINPUTELEMENT_CREATETEXTRANGE  DISPID_INPUT+6
+#define DISPID_IHTMLINPUTELEMENT_INDETERMINATE    DISPID_INPUT+7
+#define DISPID_IHTMLINPUTELEMENT_DEFAULTCHECKED   DISPID_INPUT+8
+#define DISPID_IHTMLINPUTELEMENT_CHECKED          DISPID_INPUT+9
+#define DISPID_IHTMLINPUTELEMENT_BORDER           DISPID_INPUT+12
+#define DISPID_IHTMLINPUTELEMENT_VSPACE           DISPID_INPUT+13
+#define DISPID_IHTMLINPUTELEMENT_HSPACE           DISPID_INPUT+14
+#define DISPID_IHTMLINPUTELEMENT_ALT              DISPID_INPUT+10
+#define DISPID_IHTMLINPUTELEMENT_SRC              DISPID_INPUT+11
+#define DISPID_IHTMLINPUTELEMENT_LOWSRC           DISPID_INPUT+15
+#define DISPID_IHTMLINPUTELEMENT_VRML             DISPID_INPUT+16
+#define DISPID_IHTMLINPUTELEMENT_DYNSRC           DISPID_INPUT+17
+#define DISPID_IHTMLINPUTELEMENT_READYSTATE       DISPID_A_READYSTATE
+#define DISPID_IHTMLINPUTELEMENT_COMPLETE         DISPID_INPUT+18
+#define DISPID_IHTMLINPUTELEMENT_LOOP             DISPID_INPUT+19
+#define DISPID_IHTMLINPUTELEMENT_ALIGN            STDPROPID_XOBJ_CONTROLALIGN
+#define DISPID_IHTMLINPUTELEMENT_ONLOAD           DISPID_EVPROP_ONLOAD
+#define DISPID_IHTMLINPUTELEMENT_ONERROR          DISPID_EVPROP_ONERROR
+#define DISPID_IHTMLINPUTELEMENT_ONABORT          DISPID_EVPROP_ONABORT
+#define DISPID_IHTMLINPUTELEMENT_WIDTH            STDPROPID_XOBJ_WIDTH
+#define DISPID_IHTMLINPUTELEMENT_HEIGHT           STDPROPID_XOBJ_HEIGHT
+#define DISPID_IHTMLINPUTELEMENT_START            DISPID_INPUT+20
+
+/* IHTMLInputElement2 */
+#define DISPID_IHTMLINPUTELEMENT2_ACCEPT  DISPID_INPUT+22
+#define DISPID_IHTMLINPUTELEMENT2_USEMAP  DISPID_INPUT+23
+
+/* IHTMLInputTextElement */
+#define DISPID_IHTMLINPUTTEXTELEMENT_TYPE             DISPID_INPUT
+#define DISPID_IHTMLINPUTTEXTELEMENT_VALUE            DISPID_A_VALUE
+#define DISPID_IHTMLINPUTTEXTELEMENT_NAME             STDPROPID_XOBJ_NAME
+#define DISPID_IHTMLINPUTTEXTELEMENT_STATUS           DISPID_INPUT+21
+#define DISPID_IHTMLINPUTTEXTELEMENT_DISABLED         STDPROPID_XOBJ_DISABLED
+#define DISPID_IHTMLINPUTTEXTELEMENT_FORM             DISPID_SITE+4
+#define DISPID_IHTMLINPUTTEXTELEMENT_DEFAULTVALUE     DISPID_DEFAULTVALUE
+#define DISPID_IHTMLINPUTTEXTELEMENT_SIZE             DISPID_INPUT+2
+#define DISPID_IHTMLINPUTTEXTELEMENT_MAXLENGTH        DISPID_INPUT+3
+#define DISPID_IHTMLINPUTTEXTELEMENT_SELECT           DISPID_INPUT+4
+#define DISPID_IHTMLINPUTTEXTELEMENT_ONCHANGE         DISPID_EVPROP_ONCHANGE
+#define DISPID_IHTMLINPUTTEXTELEMENT_ONSELECT         DISPID_EVPROP_ONSELECT
+#define DISPID_IHTMLINPUTTEXTELEMENT_READONLY         DISPID_INPUT+5
+#define DISPID_IHTMLINPUTTEXTELEMENT_CREATETEXTRANGE  DISPID_INPUT+6
+
+/* IHTMLSelectElement */
+#define DISPID_IHTMLSELECTELEMENT_SIZE           DISPID_SELECT+2
+#define DISPID_IHTMLSELECTELEMENT_MULTIPLE       DISPID_SELECT+3
+#define DISPID_IHTMLSELECTELEMENT_NAME           STDPROPID_XOBJ_NAME
+#define DISPID_IHTMLSELECTELEMENT_OPTIONS        DISPID_SELECT+5
+#define DISPID_IHTMLSELECTELEMENT_ONCHANGE       DISPID_EVPROP_ONCHANGE
+#define DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX  DISPID_SELECT+10
+#define DISPID_IHTMLSELECTELEMENT_TYPE           DISPID_SELECT+12
+#define DISPID_IHTMLSELECTELEMENT_VALUE          DISPID_SELECT+11
+#define DISPID_IHTMLSELECTELEMENT_DISABLED       STDPROPID_XOBJ_DISABLED
+#define DISPID_IHTMLSELECTELEMENT_FORM           DISPID_SITE+4
+#define DISPID_IHTMLSELECTELEMENT_ADD            DISPID_COLLECTION+3
+#define DISPID_IHTMLSELECTELEMENT_REMOVE         DISPID_COLLECTION+4
+#define DISPID_IHTMLSELECTELEMENT_LENGTH         DISPID_COLLECTION
+#define DISPID_IHTMLSELECTELEMENT__NEWENUM       DISPID_NEWENUM
+#define DISPID_IHTMLSELECTELEMENT_ITEM           DISPID_VALUE
+#define DISPID_IHTMLSELECTELEMENT_TAGS           DISPID_COLLECTION+2
+
+/* IHTMLSelectElement2 */
+#define DISPID_IHTMLSELECTELEMENT2_URNS  DISPID_COLLECTION+5
+
+/* IHTMLSelectElement4 */
+#define DISPID_IHTMLSELECTELEMENT4_NAMEDITEM  DISPID_COLLECTION+6
+
+/* IHTMLRect */
+#define DISPID_IHTMLRECT_LEFT    DISPID_OMRECT+1
+#define DISPID_IHTMLRECT_TOP     DISPID_OMRECT+2
+#define DISPID_IHTMLRECT_RIGHT   DISPID_OMRECT+3
+#define DISPID_IHTMLRECT_BOTTOM  DISPID_OMRECT+4
+
+/* IHTMLRectCollection */
+#define DISPID_IHTMLRECTCOLLECTION_LENGTH    DISPID_COLLECTION
+#define DISPID_IHTMLRECTCOLLECTION__NEWENUM  DISPID_NEWENUM
+#define DISPID_IHTMLRECTCOLLECTION_ITEM      DISPID_VALUE
+
+/* IHTMLCurrentStyle */
+#define DISPID_IHTMLCURRENTSTYLE_POSITION              DISPID_A_POSITION
+#define DISPID_IHTMLCURRENTSTYLE_STYLEFLOAT            DISPID_A_FLOAT
+#define DISPID_IHTMLCURRENTSTYLE_COLOR                 DISPID_A_COLOR
+#define DISPID_IHTMLCURRENTSTYLE_BACKGROUNDCOLOR       DISPID_BACKCOLOR
+#define DISPID_IHTMLCURRENTSTYLE_FONTFAMILY            DISPID_A_FONTFACE
+#define DISPID_IHTMLCURRENTSTYLE_FONTSTYLE             DISPID_A_FONTSTYLE
+#define DISPID_IHTMLCURRENTSTYLE_FONTVARIANT           DISPID_A_FONTVARIANT
+#define DISPID_IHTMLCURRENTSTYLE_FONTWEIGHT            DISPID_A_FONTWEIGHT
+#define DISPID_IHTMLCURRENTSTYLE_FONTSIZE              DISPID_A_FONTSIZE
+#define DISPID_IHTMLCURRENTSTYLE_BACKGROUNDIMAGE       DISPID_A_BACKGROUNDIMAGE
+#define DISPID_IHTMLCURRENTSTYLE_BACKGROUNDPOSITIONX   DISPID_A_BACKGROUNDPOSX
+#define DISPID_IHTMLCURRENTSTYLE_BACKGROUNDPOSITIONY   DISPID_A_BACKGROUNDPOSY
+#define DISPID_IHTMLCURRENTSTYLE_BACKGROUNDREPEAT      DISPID_A_BACKGROUNDREPEAT
+#define DISPID_IHTMLCURRENTSTYLE_BORDERLEFTCOLOR       DISPID_A_BORDERLEFTCOLOR
+#define DISPID_IHTMLCURRENTSTYLE_BORDERTOPCOLOR        DISPID_A_BORDERTOPCOLOR
+#define DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTCOLOR      DISPID_A_BORDERRIGHTCOLOR
+#define DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMCOLOR     DISPID_A_BORDERBOTTOMCOLOR
+#define DISPID_IHTMLCURRENTSTYLE_BORDERTOPSTYLE        DISPID_A_BORDERTOPSTYLE
+#define DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTSTYLE      DISPID_A_BORDERRIGHTSTYLE
+#define DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMSTYLE     DISPID_A_BORDERBOTTOMSTYLE
+#define DISPID_IHTMLCURRENTSTYLE_BORDERLEFTSTYLE       DISPID_A_BORDERLEFTSTYLE
+#define DISPID_IHTMLCURRENTSTYLE_BORDERTOPWIDTH        DISPID_A_BORDERTOPWIDTH
+#define DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTWIDTH      DISPID_A_BORDERRIGHTWIDTH
+#define DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMWIDTH     DISPID_A_BORDERBOTTOMWIDTH
+#define DISPID_IHTMLCURRENTSTYLE_BORDERLEFTWIDTH       DISPID_A_BORDERLEFTWIDTH
+#define DISPID_IHTMLCURRENTSTYLE_LEFT                  STDPROPID_XOBJ_LEFT
+#define DISPID_IHTMLCURRENTSTYLE_TOP                   STDPROPID_XOBJ_TOP
+#define DISPID_IHTMLCURRENTSTYLE_WIDTH                 STDPROPID_XOBJ_WIDTH
+#define DISPID_IHTMLCURRENTSTYLE_HEIGHT                STDPROPID_XOBJ_HEIGHT
+#define DISPID_IHTMLCURRENTSTYLE_PADDINGLEFT           DISPID_A_PADDINGLEFT
+#define DISPID_IHTMLCURRENTSTYLE_PADDINGTOP            DISPID_A_PADDINGTOP
+#define DISPID_IHTMLCURRENTSTYLE_PADDINGRIGHT          DISPID_A_PADDINGRIGHT
+#define DISPID_IHTMLCURRENTSTYLE_PADDINGBOTTOM         DISPID_A_PADDINGBOTTOM
+#define DISPID_IHTMLCURRENTSTYLE_TEXTALIGN             STDPROPID_XOBJ_BLOCKALIGN
+#define DISPID_IHTMLCURRENTSTYLE_TEXTDECORATION        DISPID_A_TEXTDECORATION
+#define DISPID_IHTMLCURRENTSTYLE_DISPLAY               DISPID_A_DISPLAY
+#define DISPID_IHTMLCURRENTSTYLE_VISIBILITY            DISPID_A_VISIBILITY
+#define DISPID_IHTMLCURRENTSTYLE_ZINDEX                DISPID_A_ZINDEX
+#define DISPID_IHTMLCURRENTSTYLE_LETTERSPACING         DISPID_A_LETTERSPACING
+#define DISPID_IHTMLCURRENTSTYLE_LINEHEIGHT            DISPID_A_LINEHEIGHT
+#define DISPID_IHTMLCURRENTSTYLE_TEXTINDENT            DISPID_A_TEXTINDENT
+#define DISPID_IHTMLCURRENTSTYLE_VERTICALALIGN         DISPID_A_VERTICALALIGN
+#define DISPID_IHTMLCURRENTSTYLE_BACKGROUNDATTACHMENT  DISPID_A_BACKGROUNDATTACHMENT
+#define DISPID_IHTMLCURRENTSTYLE_MARGINTOP             DISPID_A_MARGINTOP
+#define DISPID_IHTMLCURRENTSTYLE_MARGINRIGHT           DISPID_A_MARGINRIGHT
+#define DISPID_IHTMLCURRENTSTYLE_MARGINBOTTOM          DISPID_A_MARGINBOTTOM
+#define DISPID_IHTMLCURRENTSTYLE_MARGINLEFT            DISPID_A_MARGINLEFT
+#define DISPID_IHTMLCURRENTSTYLE_CLEAR                 DISPID_A_CLEAR
+#define DISPID_IHTMLCURRENTSTYLE_LISTSTYLETYPE         DISPID_A_LISTSTYLETYPE
+#define DISPID_IHTMLCURRENTSTYLE_LISTSTYLEPOSITION     DISPID_A_LISTSTYLEPOSITION
+#define DISPID_IHTMLCURRENTSTYLE_LISTSTYLEIMAGE        DISPID_A_LISTSTYLEIMAGE
+#define DISPID_IHTMLCURRENTSTYLE_CLIPTOP               DISPID_A_CLIPRECTTOP
+#define DISPID_IHTMLCURRENTSTYLE_CLIPRIGHT             DISPID_A_CLIPRECTRIGHT
+#define DISPID_IHTMLCURRENTSTYLE_CLIPBOTTOM            DISPID_A_CLIPRECTBOTTOM
+#define DISPID_IHTMLCURRENTSTYLE_CLIPLEFT              DISPID_A_CLIPRECTLEFT
+#define DISPID_IHTMLCURRENTSTYLE_OVERFLOW              DISPID_A_OVERFLOW
+#define DISPID_IHTMLCURRENTSTYLE_PAGEBREAKBEFORE       DISPID_A_PAGEBREAKBEFORE
+#define DISPID_IHTMLCURRENTSTYLE_PAGEBREAKAFTER        DISPID_A_PAGEBREAKAFTER
+#define DISPID_IHTMLCURRENTSTYLE_CURSOR                DISPID_A_CURSOR
+#define DISPID_IHTMLCURRENTSTYLE_TABLELAYOUT           DISPID_A_TABLELAYOUT
+#define DISPID_IHTMLCURRENTSTYLE_BORDERCOLLAPSE        DISPID_A_BORDERCOLLAPSE
+#define DISPID_IHTMLCURRENTSTYLE_DIRECTION             DISPID_A_DIRECTION
+#define DISPID_IHTMLCURRENTSTYLE_BEHAVIOR              DISPID_A_BEHAVIOR
+#define DISPID_IHTMLCURRENTSTYLE_GETATTRIBUTE          DISPID_HTMLOBJECT+2
+#define DISPID_IHTMLCURRENTSTYLE_UNICODEBIDI           DISPID_A_UNICODEBIDI
+#define DISPID_IHTMLCURRENTSTYLE_RIGHT                 STDPROPID_XOBJ_RIGHT
+#define DISPID_IHTMLCURRENTSTYLE_BOTTOM                STDPROPID_XOBJ_BOTTOM
+#define DISPID_IHTMLCURRENTSTYLE_IMEMODE               DISPID_A_IMEMODE
+#define DISPID_IHTMLCURRENTSTYLE_RUBYALIGN             DISPID_A_RUBYALIGN
+#define DISPID_IHTMLCURRENTSTYLE_RUBYPOSITION          DISPID_A_RUBYPOSITION
+#define DISPID_IHTMLCURRENTSTYLE_RUBYOVERHANG          DISPID_A_RUBYOVERHANG
+#define DISPID_IHTMLCURRENTSTYLE_TEXTAUTOSPACE         DISPID_A_TEXTAUTOSPACE
+#define DISPID_IHTMLCURRENTSTYLE_LINEBREAK             DISPID_A_LINEBREAK
+#define DISPID_IHTMLCURRENTSTYLE_WORDBREAK             DISPID_A_WORDBREAK
+#define DISPID_IHTMLCURRENTSTYLE_TEXTJUSTIFY           DISPID_A_TEXTJUSTIFY
+#define DISPID_IHTMLCURRENTSTYLE_TEXTJUSTIFYTRIM       DISPID_A_TEXTJUSTIFYTRIM
+#define DISPID_IHTMLCURRENTSTYLE_TEXTKASHIDA           DISPID_A_TEXTKASHIDA
+#define DISPID_IHTMLCURRENTSTYLE_BLOCKDIRECTION        DISPID_A_DIR
+#define DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDCHAR        DISPID_A_LAYOUTGRIDCHAR
+#define DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDLINE        DISPID_A_LAYOUTGRIDLINE
+#define DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDMODE        DISPID_A_LAYOUTGRIDMODE
+#define DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDTYPE        DISPID_A_LAYOUTGRIDTYPE
+#define DISPID_IHTMLCURRENTSTYLE_BORDERSTYLE           DISPID_A_BORDERSTYLE
+#define DISPID_IHTMLCURRENTSTYLE_BORDERCOLOR           DISPID_A_BORDERCOLOR
+#define DISPID_IHTMLCURRENTSTYLE_BORDERWIDTH           DISPID_A_BORDERWIDTH
+#define DISPID_IHTMLCURRENTSTYLE_PADDING               DISPID_A_PADDING
+#define DISPID_IHTMLCURRENTSTYLE_MARGIN                DISPID_A_MARGIN
+#define DISPID_IHTMLCURRENTSTYLE_ACCELERATOR           DISPID_A_ACCELERATOR
+#define DISPID_IHTMLCURRENTSTYLE_OVERFLOWX             DISPID_A_OVERFLOWX
+#define DISPID_IHTMLCURRENTSTYLE_OVERFLOWY             DISPID_A_OVERFLOWY
+#define DISPID_IHTMLCURRENTSTYLE_TEXTTRANSFORM         DISPID_A_TEXTTRANSFORM
+
+/* IHTMLCurrentStyle2 */
+#define DISPID_IHTMLCURRENTSTYLE2_LAYOUTFLOW                DISPID_A_LAYOUTFLOW
+#define DISPID_IHTMLCURRENTSTYLE2_WORDWRAP                  DISPID_A_WORDWRAP
+#define DISPID_IHTMLCURRENTSTYLE2_TEXTUNDERLINEPOSITION     DISPID_A_TEXTUNDERLINEPOSITION
+#define DISPID_IHTMLCURRENTSTYLE2_HASLAYOUT                 DISPID_A_HASLAYOUT
+#define DISPID_IHTMLCURRENTSTYLE2_SCROLLBARBASECOLOR        DISPID_A_SCROLLBARBASECOLOR
+#define DISPID_IHTMLCURRENTSTYLE2_SCROLLBARFACECOLOR        DISPID_A_SCROLLBARFACECOLOR
+#define DISPID_IHTMLCURRENTSTYLE2_SCROLLBAR3DLIGHTCOLOR     DISPID_A_SCROLLBAR3DLIGHTCOLOR
+#define DISPID_IHTMLCURRENTSTYLE2_SCROLLBARSHADOWCOLOR      DISPID_A_SCROLLBARSHADOWCOLOR
+#define DISPID_IHTMLCURRENTSTYLE2_SCROLLBARHIGHLIGHTCOLOR   DISPID_A_SCROLLBARHIGHLIGHTCOLOR
+#define DISPID_IHTMLCURRENTSTYLE2_SCROLLBARDARKSHADOWCOLOR  DISPID_A_SCROLLBARDARKSHADOWCOLOR
+#define DISPID_IHTMLCURRENTSTYLE2_SCROLLBARARROWCOLOR       DISPID_A_SCROLLBARARROWCOLOR
+#define DISPID_IHTMLCURRENTSTYLE2_SCROLLBARTRACKCOLOR       DISPID_A_SCROLLBARTRACKCOLOR
+#define DISPID_IHTMLCURRENTSTYLE2_WRITINGMODE               DISPID_A_WRITINGMODE
+#define DISPID_IHTMLCURRENTSTYLE2_ZOOM                      DISPID_A_ZOOM
+#define DISPID_IHTMLCURRENTSTYLE2_FILTER                    DISPID_A_FILTER
+#define DISPID_IHTMLCURRENTSTYLE2_TEXTALIGNLAST             DISPID_A_TEXTALIGNLAST
+#define DISPID_IHTMLCURRENTSTYLE2_TEXTKASHIDASPACE          DISPID_A_TEXTKASHIDASPACE
+#define DISPID_IHTMLCURRENTSTYLE2_ISBLOCK                   DISPID_A_ISBLOCK
+
+/* IHTMLCurrentStyle3 */
+#define DISPID_IHTMLCURRENTSTYLE3_TEXTOVERFLOW  DISPID_A_TEXTOVERFLOW
+#define DISPID_IHTMLCURRENTSTYLE3_MINHEIGHT     DISPID_A_MINHEIGHT
+#define DISPID_IHTMLCURRENTSTYLE3_WORDSPACING   DISPID_A_WORDSPACING
+#define DISPID_IHTMLCURRENTSTYLE3_WHITESPACE    DISPID_A_WHITESPACE
+
+/* HTMLTextContainerEvents2 */
+#define DISPID_HTMLTEXTCONTAINEREVENTS2_ONCHANGE       DISPID_EVMETH_ONCHANGE
+#define DISPID_HTMLTEXTCONTAINEREVENTS2_ONSELECT       DISPID_EVMETH_ONSELECT
+
+/* HTMLTextContainerEvents */
+#define DISPID_HTMLTEXTCONTAINEREVENTS_ONCHANGE        DISPID_EVMETH_ONCHANGE
+#define DISPID_HTMLTEXTCONTAINEREVENTS_ONSELECT        DISPID_EVMETH_ONSELECT
+
+/* IHTMLTextContainer */
+#define DISPID_IHTMLTEXTCONTAINER_CREATECONTROLRANGE  DISPID_TEXTSITE+1
+#define DISPID_IHTMLTEXTCONTAINER_SCROLLHEIGHT        DISPID_TEXTSITE+2
+#define DISPID_IHTMLTEXTCONTAINER_SCROLLWIDTH         DISPID_TEXTSITE+3
+#define DISPID_IHTMLTEXTCONTAINER_SCROLLTOP           DISPID_TEXTSITE+4
+#define DISPID_IHTMLTEXTCONTAINER_SCROLLLEFT          DISPID_TEXTSITE+5
+#define DISPID_IHTMLTEXTCONTAINER_ONSCROLL            DISPID_EVPROP_ONSCROLL
+
+/* IHTMLTableCaption */
+#define DISPID_IHTMLTABLECAPTION_ALIGN   STDPROPID_XOBJ_BLOCKALIGN
+#define DISPID_IHTMLTABLECAPTION_VALIGN  DISPID_A_TABLEVALIGN
+
+ /* IHTMLCommentElement */
+#define DISPID_IHTMLCOMMENTELEMENT_TEXT    DISPID_COMMENTPDL+1
+#define DISPID_IHTMLCOMMENTELEMENT_ATOMIC  DISPID_COMMENTPDL+2
+
+ /* IHTMLCommentElement2 */
+#define DISPID_IHTMLCOMMENTELEMENT2_DATA           DISPID_COMMENTPDL+3
+#define DISPID_IHTMLCOMMENTELEMENT2_LENGTH         DISPID_COMMENTPDL+4
+#define DISPID_IHTMLCOMMENTELEMENT2_SUBSTRINGDATA  DISPID_COMMENTPDL+5
+#define DISPID_IHTMLCOMMENTELEMENT2_APPENDDATA     DISPID_COMMENTPDL+6
+#define DISPID_IHTMLCOMMENTELEMENT2_INSERTDATA     DISPID_COMMENTPDL+7
+#define DISPID_IHTMLCOMMENTELEMENT2_DELETEDATA     DISPID_COMMENTPDL+8
+#define DISPID_IHTMLCOMMENTELEMENT2_REPLACEDATA    DISPID_COMMENTPDL+9
+
+/* IHTMLTable */
+#define DISPID_IHTMLTABLE_COLS                DISPID_TABLE+1
+#define DISPID_IHTMLTABLE_BORDER              DISPID_TABLE+2
+#define DISPID_IHTMLTABLE_FRAME               DISPID_TABLE+4
+#define DISPID_IHTMLTABLE_RULES               DISPID_TABLE+3
+#define DISPID_IHTMLTABLE_CELLSPACING         DISPID_TABLE+5
+#define DISPID_IHTMLTABLE_CELLPADDING         DISPID_TABLE+6
+#define DISPID_IHTMLTABLE_BACKGROUND          DISPID_A_BACKGROUNDIMAGE
+#define DISPID_IHTMLTABLE_BGCOLOR             DISPID_BACKCOLOR
+#define DISPID_IHTMLTABLE_BORDERCOLOR         DISPID_A_TABLEBORDERCOLOR
+#define DISPID_IHTMLTABLE_BORDERCOLORLIGHT    DISPID_A_TABLEBORDERCOLORLIGHT
+#define DISPID_IHTMLTABLE_BORDERCOLORDARK     DISPID_A_TABLEBORDERCOLORDARK
+#define DISPID_IHTMLTABLE_ALIGN               STDPROPID_XOBJ_CONTROLALIGN
+#define DISPID_IHTMLTABLE_REFRESH             DISPID_TABLE+15
+#define DISPID_IHTMLTABLE_ROWS                DISPID_TABLE+16
+#define DISPID_IHTMLTABLE_WIDTH               STDPROPID_XOBJ_WIDTH
+#define DISPID_IHTMLTABLE_HEIGHT              STDPROPID_XOBJ_HEIGHT
+#define DISPID_IHTMLTABLE_DATAPAGESIZE        DISPID_TABLE+17
+#define DISPID_IHTMLTABLE_NEXTPAGE            DISPID_TABLE+18
+#define DISPID_IHTMLTABLE_PREVIOUSPAGE        DISPID_TABLE+19
+#define DISPID_IHTMLTABLE_THEAD               DISPID_TABLE+20
+#define DISPID_IHTMLTABLE_TFOOT               DISPID_TABLE+21
+#define DISPID_IHTMLTABLE_TBODIES             DISPID_TABLE+24
+#define DISPID_IHTMLTABLE_CAPTION             DISPID_TABLE+25
+#define DISPID_IHTMLTABLE_CREATETHEAD         DISPID_TABLE+26
+#define DISPID_IHTMLTABLE_DELETETHEAD         DISPID_TABLE+27
+#define DISPID_IHTMLTABLE_CREATETFOOT         DISPID_TABLE+28
+#define DISPID_IHTMLTABLE_DELETETFOOT         DISPID_TABLE+29
+#define DISPID_IHTMLTABLE_CREATECAPTION       DISPID_TABLE+30
+#define DISPID_IHTMLTABLE_DELETECAPTION       DISPID_TABLE+31
+#define DISPID_IHTMLTABLE_INSERTROW           DISPID_TABLE+32
+#define DISPID_IHTMLTABLE_DELETEROW           DISPID_TABLE+33
+#define DISPID_IHTMLTABLE_READYSTATE          DISPID_A_READYSTATE
+#define DISPID_IHTMLTABLE_ONREADYSTATECHANGE  DISPID_EVPROP_ONREADYSTATECHANGE
+
+/* IHTMLTable2 */
+#define DISPID_IHTMLTABLE2_FIRSTPAGE  DISPID_TABLE+35
+#define DISPID_IHTMLTABLE2_LASTPAGE   DISPID_TABLE+36
+#define DISPID_IHTMLTABLE2_CELLS      DISPID_TABLE+37
+#define DISPID_IHTMLTABLE2_MOVEROW    DISPID_TABLE+38
+
+/* IHTMLTable3 */
+#define DISPID_IHTMLTABLE3_SUMMARY  DISPID_TABLE+39
+
+/* IHTMLTableSection */
+#define DISPID_IHTMLTABLESECTION_ALIGN      STDPROPID_XOBJ_BLOCKALIGN
+#define DISPID_IHTMLTABLESECTION_VALIGN     DISPID_A_TABLEVALIGN
+#define DISPID_IHTMLTABLESECTION_BGCOLOR    DISPID_BACKCOLOR
+#define DISPID_IHTMLTABLESECTION_ROWS       DISPID_TABLESECTION
+#define DISPID_IHTMLTABLESECTION_INSERTROW  DISPID_TABLESECTION+1
+#define DISPID_IHTMLTABLESECTION_DELETEROW  DISPID_TABLESECTION+2
+
+/* IHTMLTableRow */
+#define DISPID_IHTMLTABLEROW_ALIGN             STDPROPID_XOBJ_BLOCKALIGN
+#define DISPID_IHTMLTABLEROW_VALIGN            DISPID_A_TABLEVALIGN
+#define DISPID_IHTMLTABLEROW_BGCOLOR           DISPID_BACKCOLOR
+#define DISPID_IHTMLTABLEROW_BORDERCOLOR       DISPID_A_TABLEBORDERCOLOR
+#define DISPID_IHTMLTABLEROW_BORDERCOLORLIGHT  DISPID_A_TABLEBORDERCOLORLIGHT
+#define DISPID_IHTMLTABLEROW_BORDERCOLORDARK   DISPID_A_TABLEBORDERCOLORDARK
+#define DISPID_IHTMLTABLEROW_ROWINDEX          DISPID_TABLEROW
+#define DISPID_IHTMLTABLEROW_SECTIONROWINDEX   DISPID_TABLEROW+1
+#define DISPID_IHTMLTABLEROW_CELLS             DISPID_TABLEROW+2
+#define DISPID_IHTMLTABLEROW_INSERTCELL        DISPID_TABLEROW+3
+#define DISPID_IHTMLTABLEROW_DELETECELL        DISPID_TABLEROW+4
+
+/* IHTMLTableRow2 */
+#define DISPID_IHTMLTABLEROW2_HEIGHT  STDPROPID_XOBJ_HEIGHT
+
+/* IHTMLTableRow3 */
+#define DISPID_IHTMLTABLEROW3_CH     DISPID_TABLEROW+9
+#define DISPID_IHTMLTABLEROW3_CHOFF  DISPID_TABLEROW+10
+
+/* IHTMLScriptElement */
+#define DISPID_IHTMLSCRIPTELEMENT_SRC         DISPID_SCRIPT+1
+#define DISPID_IHTMLSCRIPTELEMENT_HTMLFOR     DISPID_SCRIPT+4
+#define DISPID_IHTMLSCRIPTELEMENT_EVENT       DISPID_SCRIPT+5
+#define DISPID_IHTMLSCRIPTELEMENT_TEXT        DISPID_SCRIPT+6
+#define DISPID_IHTMLSCRIPTELEMENT_DEFER       DISPID_SCRIPT+7
+#define DISPID_IHTMLSCRIPTELEMENT_READYSTATE  DISPID_A_READYSTATE
+#define DISPID_IHTMLSCRIPTELEMENT_ONERROR     DISPID_EVPROP_ONERROR
+#define DISPID_IHTMLSCRIPTELEMENT_TYPE        DISPID_SCRIPT+9
+
+/* IHTMLScriptElement2 */
+#define DISPID_IHTMLSCRIPTELEMENT2_CHARSET  DISPID_SCRIPT+10
+
+/* IHTMLFrameBase */
+#define DISPID_IHTMLFRAMEBASE_SRC           DISPID_FRAMESITE+0
+#define DISPID_IHTMLFRAMEBASE_NAME          STDPROPID_XOBJ_NAME
+#define DISPID_IHTMLFRAMEBASE_BORDER        DISPID_FRAMESITE+2
+#define DISPID_IHTMLFRAMEBASE_FRAMEBORDER   DISPID_FRAMESITE+3
+#define DISPID_IHTMLFRAMEBASE_FRAMESPACING  DISPID_FRAMESITE+4
+#define DISPID_IHTMLFRAMEBASE_MARGINWIDTH   DISPID_FRAMESITE+5
+#define DISPID_IHTMLFRAMEBASE_MARGINHEIGHT  DISPID_FRAMESITE+6
+#define DISPID_IHTMLFRAMEBASE_NORESIZE      DISPID_FRAMESITE+7
+#define DISPID_IHTMLFRAMEBASE_SCROLLING     DISPID_FRAMESITE+8
+
+/* IHTMLFrameBase2 */
+#define DISPID_IHTMLFRAMEBASE2_CONTENTWINDOW       DISPID_FRAMESITE+9
+#define DISPID_IHTMLFRAMEBASE2_ONLOAD              DISPID_EVPROP_ONLOAD
+#define DISPID_IHTMLFRAMEBASE2_ONREADYSTATECHANGE  DISPID_EVPROP_ONREADYSTATECHANGE
+#define DISPID_IHTMLFRAMEBASE2_READYSTATE          DISPID_A_READYSTATE
+#define DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY   DISPID_A_ALLOWTRANSPARENCY
+
+/* IHTMLFrameBase3 */
+#define DISPID_IHTMLFRAMEBASE3_LONGDESC  DISPID_FRAMESITE+10
+
+/* IHTMLIFrameElement */
+#define DISPID_IHTMLIFRAMEELEMENT_VSPACE  DISPID_IFRAME+1
+#define DISPID_IHTMLIFRAMEELEMENT_HSPACE  DISPID_IFRAME+2
+#define DISPID_IHTMLIFRAMEELEMENT_ALIGN   STDPROPID_XOBJ_CONTROLALIGN
+
+/* IHTMLIFrameElement2 */
+#define DISPID_IHTMLIFRAMEELEMENT2_HEIGHT  STDPROPID_XOBJ_HEIGHT
+#define DISPID_IHTMLIFRAMEELEMENT2_WIDTH   STDPROPID_XOBJ_WIDTH
+
+/* IHTMLControlElement */
+#define DISPID_IHTMLCONTROLELEMENT_TABINDEX        STDPROPID_XOBJ_TABINDEX
+#define DISPID_IHTMLCONTROLELEMENT_FOCUS           (DISPID_SITE+0)
+#define DISPID_IHTMLCONTROLELEMENT_ACCESSKEY       (DISPID_SITE+5)
+#define DISPID_IHTMLCONTROLELEMENT_ONBLUR          DISPID_EVPROP_ONBLUR
+#define DISPID_IHTMLCONTROLELEMENT_ONFOCUS         DISPID_EVPROP_ONFOCUS
+#define DISPID_IHTMLCONTROLELEMENT_ONRESIZE        DISPID_EVPROP_ONRESIZE
+#define DISPID_IHTMLCONTROLELEMENT_BLUR            (DISPID_SITE+2)
+#define DISPID_IHTMLCONTROLELEMENT_ADDFILTER       (DISPID_SITE+17)
+#define DISPID_IHTMLCONTROLELEMENT_REMOVEFILTER    (DISPID_SITE+18)
+#define DISPID_IHTMLCONTROLELEMENT_CLIENTHEIGHT    (DISPID_SITE+19)
+#define DISPID_IHTMLCONTROLELEMENT_CLIENTWIDTH     (DISPID_SITE+20)
+#define DISPID_IHTMLCONTROLELEMENT_CLIENTTOP       (DISPID_SITE+21)
+#define DISPID_IHTMLCONTROLELEMENT_CLIENTLEFT      (DISPID_SITE+22)
+
+#endif /* __MSHTMDID_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mshtmhst.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mshtmhst.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mshtmhst.idl	(revision 16410)
@@ -0,0 +1,302 @@
+/*
+ * Copyright 2005 Jacek Caban
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "ocidl.idl";
+import "objidl.idl";
+import "oleidl.idl";
+import "oaidl.idl";
+import "docobj.idl";
+
+cpp_quote("#define CONTEXT_MENU_DEFAULT     0")
+cpp_quote("#define CONTEXT_MENU_IMAGE       1")
+cpp_quote("#define CONTEXT_MENU_CONTROL     2")
+cpp_quote("#define CONTEXT_MENU_TABLE       3")
+cpp_quote("#define CONTEXT_MENU_TEXTSELECT  4")
+cpp_quote("#define CONTEXT_MENU_ANCHOR      5")
+cpp_quote("#define CONTEXT_MENU_UNKNOWN     6")
+cpp_quote("#define CONTEXT_MENU_IMGDYNSRC   7")
+cpp_quote("#define CONTEXT_MENU_IMGART      8")
+cpp_quote("#define CONTEXT_MENU_DEBUG       9")
+cpp_quote("#define CONTEXT_MENU_VSCROLL    10")
+cpp_quote("#define CONTEXT_MENU_HSCROLL    11")
+
+cpp_quote("#define MENUEXT_SHOWDIALOG 1")
+
+cpp_quote("#define DOCHOSTUIFLAG_BROWSER (DOCHOSTUIFLAG_DISABLE_HELP_MENU|DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE)")
+
+cpp_quote("#define HTMLDLG_NOUI            0x0010")
+cpp_quote("#define HTMLDLG_MODAL           0x0020")
+cpp_quote("#define HTMLDLG_MODELESS        0x0040")
+cpp_quote("#define HTMLDLG_PRINT_TEMPLATE  0x0080")
+cpp_quote("#define HTMLDLG_VERIFY          0x0100")
+
+cpp_quote("#define PRINT_DONTBOTHERUSER     0x0001")
+cpp_quote("#define PRINT_WAITFORCOMPLETION  0x0002")
+
+cpp_quote("DEFINE_GUID(CGID_MSHTML, 0xde4ba900,0x59ca,0x11cf,0x95,0x92,0x44,0x45,0x53,0x54,0x00,0x00);")
+cpp_quote("#define CMDSETID_Forms3 CGID_MSHTML")
+
+cpp_quote("#if defined(__GNUC__)")
+cpp_quote("#define SZ_HTML_CLIENTSITE_OBJECTPARAM (const WCHAR[]) {'{','d','4','d','b','6','8','5','0','-','5','3','8','5','-','1','1','d','0','-','8','9','e','9','-','0','0','a','0','c','9','0','a','9','0','a','c','}',0}")
+cpp_quote("#elif defined(_MSC_VER)")
+cpp_quote("#define SZ_HTML_CLIENTSITE_OBJECTPARAM L\"{d4db6850-5385-11d0-89e9-00a0c90a90ac}\"")
+cpp_quote("#else")
+cpp_quote("static const WCHAR SZ_HTML_CLIENTSITE_OBJECTPARAM[] = {'{','d','4','d','b','6','8','5','0','-','5','3','8','5','-','1','1','d','0','-','8','9','e','9','-','0','0','a','0','c','9','0','a','9','0','a','c','}',0};")
+cpp_quote("#endif")
+
+cpp_quote("#ifndef __IHTMLWindow2_FWD_DEFINED__")
+cpp_quote("#define __IHTMLWindow2_FWD_DEFINED__")
+cpp_quote("typedef interface IHTMLWindow2 IHTMLWindow2;")
+cpp_quote("#endif")
+
+/*****************************************************************************
+ *    IHostDialogHelper interface
+ */
+[
+    object,
+    uuid(53DEC138-A51E-11d2-861E-00C04FA35C89),
+    pointer_default(unique),
+    local
+]
+interface IHostDialogHelper : IUnknown
+{
+    HRESULT ShowHTMLDialog(
+        HWND hwndParent,
+        IMoniker *pMk,
+        VARIANT *pvarArgIn,
+        WCHAR *pchOptions,
+        VARIANT *pvarArgOut,
+        IUnknown *punkHost);
+}
+
+/*****************************************************************************
+ *    HostDialogHelper coclass
+ */
+[
+    uuid(429AF92C-A51F-11d2-861E-00C04FA35C89)
+]
+coclass HostDialogHelper
+{
+    [default] interface IHostDialogHelper;
+}
+
+/*****************************************************************************
+ *    IDocHostUIHandler interface
+ */
+
+typedef enum tagDOCHOSTUITYPE {
+    DOCHOSTUITYPE_BROWSE = 0,
+    DOCHOSTUITYPE_AUTHOR = 1
+} DOCHOSTUITYPE;
+
+typedef enum tagDOCHOSTUIDBLCLK
+{
+    DOCHOSTUIDBLCLK_DEFAULT         = 0,
+    DOCHOSTUIDBLCLK_SHOWPROPERTIES  = 1,
+    DOCHOSTUIDBLCLK_SHOWCODE        = 2
+} DOCHOSTUIDBLCLK;
+
+typedef enum tagDOCHOSTUIFLAG
+{
+    DOCHOSTUIFLAG_DIALOG                      = 0x00000001,
+    DOCHOSTUIFLAG_DISABLE_HELP_MENU           = 0x00000002,
+    DOCHOSTUIFLAG_NO3DBORDER                  = 0x00000004,
+    DOCHOSTUIFLAG_SCROLL_NO                   = 0x00000008,
+    DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE     = 0x00000010,
+    DOCHOSTUIFLAG_OPENNEWWIN                  = 0x00000020,
+    DOCHOSTUIFLAG_DISABLE_OFFSCREEN           = 0x00000040,
+    DOCHOSTUIFLAG_FLAT_SCROLLBAR              = 0x00000080,
+    DOCHOSTUIFLAG_DIV_BLOCKDEFAULT            = 0x00000100,
+    DOCHOSTUIFLAG_ACTIVATE_CLIENTHIT_ONLY     = 0x00000200,
+    DOCHOSTUIFLAG_OVERRIDEBEHAVIORFACTORY     = 0x00000400,
+    DOCHOSTUIFLAG_CODEPAGELINKEDFONTS         = 0x00000800,
+    DOCHOSTUIFLAG_URL_ENCODING_DISABLE_UTF8   = 0x00001000,
+    DOCHOSTUIFLAG_URL_ENCODING_ENABLE_UTF8    = 0x00002000,
+    DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE   = 0x00004000,
+    DOCHOSTUIFLAG_ENABLE_INPLACE_NAVIGATION   = 0x00010000,
+    DOCHOSTUIFLAG_IME_ENABLE_RECONVERSION     = 0x00020000,
+    DOCHOSTUIFLAG_THEME                       = 0x00040000,
+    DOCHOSTUIFLAG_NOTHEME                     = 0x00080000,
+    DOCHOSTUIFLAG_NOPICS                      = 0x00100000,
+    DOCHOSTUIFLAG_NO3DOUTERBORDER             = 0x00200000,
+    DOCHOSTUIFLAG_DISABLE_EDIT_NS_FIXUP       = 0x00400000,
+    DOCHOSTUIFLAG_LOCAL_MACHINE_ACCESS_CHECK  = 0x00800000,
+    DOCHOSTUIFLAG_DISABLE_UNTRUSTEDPROTOCOL   = 0x01000000
+} DOCHOSTUIFLAG;
+
+[
+    object,
+    uuid(BD3F23C0-D43E-11CF-893B-00AA00BDCE1A),
+    pointer_default(unique),
+    local
+]
+interface IDocHostUIHandler : IUnknown
+{
+    typedef struct _DOCHOSTUIINFO
+    {
+        ULONG cbSize;
+        DWORD dwFlags;
+        DWORD dwDoubleClick;
+        OLECHAR *pchHostCss;
+        OLECHAR *pchHostNS;
+    } DOCHOSTUIINFO;
+
+    HRESULT ShowContextMenu(
+        [in] DWORD dwID, 
+        [in] POINT *ppt, 
+        [in] IUnknown *pcmdtReserved,  
+        [in] IDispatch *pdispReserved);
+
+    HRESULT GetHostInfo([in, out] DOCHOSTUIINFO *pInfo);
+
+    HRESULT ShowUI(
+        [in] DWORD dwID,
+        [in] IOleInPlaceActiveObject *pActiveObject,
+        [in] IOleCommandTarget *pCommandTarget,
+        [in] IOleInPlaceFrame *pFrame,
+        [in] IOleInPlaceUIWindow *pDoc);
+
+    HRESULT HideUI();
+
+    HRESULT UpdateUI();
+
+    HRESULT EnableModeless([in] BOOL fEnable);
+
+    HRESULT OnDocWindowActivate([in] BOOL fActivate);
+
+    HRESULT OnFrameWindowActivate([in] BOOL fActivate);
+
+    HRESULT ResizeBorder(
+        [in] LPCRECT prcBorder,
+        [in] IOleInPlaceUIWindow *pUIWindow,
+        [in] BOOL fRameWindow);
+
+    HRESULT TranslateAccelerator(
+        [in] LPMSG lpMsg,
+        [in] const GUID *pguidCmdGroup, 
+        [in] DWORD nCmdID);
+
+    HRESULT GetOptionKeyPath(
+        [out] LPOLESTR *pchKey,
+        [in] DWORD dw);
+
+    HRESULT GetDropTarget(
+        [in] IDropTarget *pDropTarget, 
+        [out] IDropTarget **ppDropTarget);
+
+    HRESULT GetExternal([out] IDispatch **ppDispatch);
+
+    HRESULT TranslateUrl(
+        [in] DWORD dwTranslate,
+        [in] OLECHAR *pchURLIn,
+        [out] OLECHAR **ppchURLOut);
+
+    HRESULT FilterDataObject(
+        [in] IDataObject *pDO,
+        [out] IDataObject **ppDORet);
+}
+
+cpp_quote("DEFINE_GUID(CGID_DocHostCommandHandler,0xf38bc242,0xb950,0x11d1,0x89,0x18,0x00,0xc0,0x4f,0xc2,0xc8,0x36);")
+
+[
+    object,
+    uuid(3050F6D0-98b5-11CF-BB82-00AA00BDCE0B),
+    pointer_default(unique),
+    local
+]
+interface IDocHostUIHandler2 : IDocHostUIHandler
+{
+    HRESULT GetOverrideKeyPath(
+        [out] LPOLESTR *pchKey,
+        [in] DWORD dw);
+}
+
+/*****************************************************************************
+ *    ICustomDoc interface
+ */
+[
+    object,
+    uuid(3050f3f0-98b5-11cf-bb82-00aa00bdce0b),
+    pointer_default(unique),
+    local
+]
+interface ICustomDoc : IUnknown
+{
+    HRESULT SetUIHandler([in] IDocHostUIHandler *pUIHandler);
+}
+
+/*****************************************************************************
+ *    IDocHostShowUI interface
+ */
+[
+    object,
+    uuid(c4d244b0-d43e-11cf-893b-00aa00bdce1a),
+    pointer_default(unique),
+    local
+]
+interface IDocHostShowUI : IUnknown
+{
+    HRESULT ShowMessage(
+        [in] HWND hwnd,
+        [in] LPOLESTR lpstrText,
+        [in] LPOLESTR lpstrCaption,
+        [in] DWORD dwType,
+        [in] LPOLESTR lpstrHelpFile,
+        [in] DWORD dwHelpContext,
+        [out] LRESULT *plResult);
+
+    HRESULT ShowHelp(
+        [in] HWND hwnd,
+        [in] LPOLESTR pszHelpFile,
+        [in] UINT uCommand,
+        [in] DWORD dwData,
+        [in] POINT ptMouse,
+        [out] IDispatch *pDispatchObjectHit);
+}
+
+/*****************************************************************************
+ *    IClassFactoryEx interface
+ */
+
+cpp_quote("#define IClassFactory3 IClassFactoryEx")
+cpp_quote("#define IID_IClassFactory3 IID_IClassFactoryEx")
+
+[
+    object,
+    uuid(342D1EA0-AE25-11D1-89C5-006008C3FBFC),
+    pointer_default(unique),
+    local
+]
+interface IClassFactoryEx : IClassFactory
+{
+    HRESULT CreateInstanceWithContext(
+        IUnknown *punkContext,
+        IUnknown *punkOuter,
+        REFIID riid,
+        [out] void **ppv);
+}
+
+cpp_quote("typedef HRESULT WINAPI SHOWHTMLDIALOGFN(HWND,IMoniker*,VARIANT*,WCHAR*,VARIANT*);")
+cpp_quote("typedef HRESULT WINAPI SHOWHTMLDIALOGEXFN(HWND,IMoniker*,DWORD,VARIANT*,WCHAR*,VARIANT*);")
+cpp_quote("typedef HRESULT WINAPI SHOWMODELESSHTMLDIALOGFN(HWND,IMoniker*,VARIANT*,VARIANT*,IHTMLWindow2**);")
+
+cpp_quote("EXTERN_C HRESULT WINAPI ShowHTMLDialog(HWND,IMoniker*,VARIANT*,WCHAR*,VARIANT*);")
+cpp_quote("EXTERN_C HRESULT WINAPI ShowHTMLDialogEx(HWND,IMoniker*,DWORD,VARIANT*,WCHAR*,VARIANT*);")
+cpp_quote("EXTERN_C HRESULT WINAPI ShowModelessHTMLDialog(HWND,IMoniker*,VARIANT*,VARIANT*,IHTMLWindow2**);")
+cpp_quote("EXTERN_C HRESULT WINAPI RunHTMLApplication(HINSTANCE,HINSTANCE,LPSTR,int);")
+cpp_quote("EXTERN_C HRESULT WINAPI CreateHTMLPropertyPage(IMoniker*,IPropertyPage**);")
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mshtml.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mshtml.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mshtml.idl	(revision 16410)
@@ -0,0 +1,20329 @@
+/*
+ * Copyright 2004-2007 Jacek Caban for CodeWeavers
+ * Copyright 2008      Konstantin Kondratyuk (Etersoft)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <mshtmdid.h>
+#include <mshtmcid.h>
+#include <olectl.h>
+
+import "ocidl.idl";
+import "dimm.idl";
+import "shtypes.idl";
+
+cpp_quote("#include <olectl.h>")
+
+cpp_quote("DEFINE_GUID(SID_SEditCommandTarget,  0x3050f4b5,0x98b5,0x11cf,0xbb,0x82,0x00,0xaa,0x00,0xbd,0xce,0x0b);")
+cpp_quote("DEFINE_GUID(SID_SHTMLEditHost,       0x3050f6a0,0x98b5,0x11cf,0xbb,0x82,0x00,0xaa,0x00,0xbd,0xce,0x0b);")
+cpp_quote("DEFINE_GUID(SID_SHTMLEditServices,   0x3050f7f9,0x98b5,0x11cf,0xbb,0x82,0x00,0xaa,0x00,0xbd,0xce,0x0b);")
+cpp_quote("#define SID_SHTMLWindow IID_IHTMLWindow2")
+cpp_quote("#define SID_SElementBehaviorFactory IID_IElementBehaviorFactory")
+
+typedef enum {
+    POINTER_GRAVITY_Left,
+    POINTER_GRAVITY_Right,
+    POINTER_GRAVITY_Max = 2147483647
+} POINTER_GRAVITY;
+
+typedef enum {
+    CONTEXT_TYPE_None,
+    CONTEXT_TYPE_Text,
+    CONTEXT_TYPE_EnterScope,
+    CONTEXT_TYPE_ExitScope,
+    CONTEXT_TYPE_NoScope,
+    MARKUP_CONTEXT_TYPE_Max = 2147483647
+} MARKUP_CONTEXT_TYPE;
+
+typedef enum {
+    ELEM_ADJ_BeforeBegin,
+    ELEM_ADJ_AfterBegin,
+    ELEM_ADJ_BeforeEnd,
+    ELEM_ADJ_AfterEnd,
+    ELEMENT_ADJACENCY_Max = 2147483647
+} ELEMENT_ADJACENCY;
+
+typedef enum {
+    MOVEUNIT_PREVCHAR,
+    MOVEUNIT_NEXTCHAR,
+    MOVEUNIT_PREVCLUSTERBEG,
+    MOVEUNIT_NEXTCLUSTERBEG,
+    MOVEUNIT_PREVCLUSTEREND,
+    MOVEUNIT_NEXTCLUSTEREND,
+    MOVEUNIT_PREVWORDBEG,
+    MOVEUNIT_NEXTWORDBEG,
+    MOVEUNIT_PREVWORDEND,
+    MOVEUNIT_NEXTWORDEND,
+    MOVEUNIT_PREVPROOFWORD,
+    MOVEUNIT_NEXTPROOFWORD,
+    MOVEUNIT_NEXTURLBEG,
+    MOVEUNIT_PREVURLBEG,
+    MOVEUNIT_NEXTURLEND,
+    MOVEUNIT_PREVURLEND,
+    MOVEUNIT_PREVSENTENCE,
+    MOVEUNIT_NEXTSENTENCE,
+    MOVEUNIT_PREVBLOCK,
+    MOVEUNIT_NEXTBLOCK,
+    MOVEUNIT_ACTION_Max = 2147483647
+} MOVEUNIT_ACTION;
+
+typedef enum _SELECTION_TYPE {
+    SELECTION_TYPE_None,
+    SELECTION_TYPE_Caret,
+    SELECTION_TYPE_Text,
+    SELECTION_TYPE_Control,
+    SELECTION_TYPE_Max = 2147483647
+} SELECTION_TYPE;
+
+interface IHTMLDocument2;
+interface IHTMLStyleSheetsCollection;
+interface IHTMLFrameBase;
+
+/*****************************************************************************
+ *    IHTMLFiltersCollection interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F3EE-98B5-11Cf-BB82-00AA00BDCE0B)
+]
+interface IHTMLFiltersCollection : IDispatch
+{
+    [propget, id(DISPID_IHTMLFILTERSCOLLECTION_LENGTH)]
+    HRESULT length([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLFILTERSCOLLECTION__NEWENUM)]
+    HRESULT _newEnum([retval, out] IUnknown **p);
+
+    [id(DISPID_IHTMLFILTERSCOLLECTION_ITEM)]
+    HRESULT item(
+        [in] VARIANT *pvarIndex,
+        [retval, out] VARIANT *pvarResult);
+}
+
+[
+    version(4.0),
+    uuid(3050F1C5-98B5-11CF-BB82-00AA00BDCE0B)
+]
+library MSHTML
+{
+
+importlib("stdole2.tlb");
+
+/*****************************************************************************
+ *    IHTMLStyle interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F25E-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLStyle : IDispatch
+{
+    [propput, id(DISPID_IHTMLSTYLE_FONTFAMILY), bindable, displaybind]
+    HRESULT fontFamily([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_FONTFAMILY), bindable, displaybind]
+    HRESULT fontFamily([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_FONTSTYLE), bindable, displaybind]
+    HRESULT fontStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_FONTSTYLE), bindable, displaybind]
+    HRESULT fontStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_FONTVARIANT), bindable, displaybind]
+    HRESULT fontVariant([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_FONTVARIANT), bindable, displaybind]
+    HRESULT fontVariant([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_FONTWEIGHT), bindable, displaybind]
+    HRESULT fontWeight([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_FONTWEIGHT), bindable, displaybind]
+    HRESULT fontWeight([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_FONTSIZE), bindable, displaybind]
+    HRESULT fontSize([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_FONTSIZE), bindable, displaybind]
+    HRESULT fontSize([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_FONT), bindable, displaybind]
+    HRESULT font([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_FONT), bindable, displaybind]
+    HRESULT font([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_COLOR), bindable, displaybind]
+    HRESULT color([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_COLOR), bindable, displaybind]
+    HRESULT color([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BACKGROUND), bindable, displaybind]
+    HRESULT background([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BACKGROUND), bindable, displaybind]
+    HRESULT background([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDCOLOR), bindable, displaybind]
+    HRESULT backgroundColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDCOLOR), bindable, displaybind]
+    HRESULT backgroundColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDIMAGE), bindable, displaybind]
+    HRESULT backgroundImage([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDIMAGE), bindable, displaybind]
+    HRESULT backgroundImage([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDREPEAT), bindable, displaybind]
+    HRESULT backgroundRepeat([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDREPEAT), bindable, displaybind]
+    HRESULT backgroundRepeat([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDATTACHMENT), bindable, displaybind]
+    HRESULT backgroundAttachment([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDATTACHMENT), bindable, displaybind]
+    HRESULT backgroundAttachment([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITION), bindable, displaybind]
+    HRESULT backgroundPosition([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITION), bindable, displaybind]
+    HRESULT backgroundPosition([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONX), bindable, displaybind]
+    HRESULT backgroundPositionX([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONX), bindable, displaybind]
+    HRESULT backgroundPositionX([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONY), bindable, displaybind]
+    HRESULT backgroundPositionY([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONY), bindable, displaybind]
+    HRESULT backgroundPositionY([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_WORDSPACING), bindable, displaybind]
+    HRESULT wordSpacing([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_WORDSPACING), bindable, displaybind]
+    HRESULT wordSpacing([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_LETTERSPACING), bindable, displaybind]
+    HRESULT letterSpacing([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_LETTERSPACING), bindable, displaybind]
+    HRESULT letterSpacing([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATION), bindable, displaybind]
+    HRESULT textDecoration([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATION), bindable, displaybind]
+    HRESULT textDecoration([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONNONE), bindable, displaybind]
+    HRESULT textDecorationNone([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONNONE), bindable, displaybind]
+    HRESULT textDecorationNone([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONUNDERLINE), bindable, displaybind]
+    HRESULT textDecorationUnderline([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONUNDERLINE), bindable, displaybind]
+    HRESULT textDecorationUnderline([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONOVERLINE), bindable, displaybind]
+    HRESULT textDecorationOverline([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONOVERLINE), bindable, displaybind]
+    HRESULT textDecorationOverline([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONLINETHROUGH), bindable, displaybind]
+    HRESULT textDecorationLineThrough([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONLINETHROUGH), bindable, displaybind]
+    HRESULT textDecorationLineThrough([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONBLINK), bindable, displaybind]
+    HRESULT textDecorationBlink([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONBLINK), bindable, displaybind]
+    HRESULT textDecorationBlink([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_VERTICALALIGN), bindable, displaybind]
+    HRESULT verticalAlign([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_VERTICALALIGN), bindable, displaybind]
+    HRESULT verticalAlign([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_TEXTTRANSFORM), bindable, displaybind]
+    HRESULT textTransform([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TEXTTRANSFORM), bindable, displaybind]
+    HRESULT textTransform([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_TEXTALIGN), bindable, displaybind]
+    HRESULT textAlign([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TEXTALIGN), bindable, displaybind]
+    HRESULT textAlign([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_TEXTINDENT), bindable, displaybind]
+    HRESULT textIndent([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TEXTINDENT), bindable, displaybind]
+    HRESULT textIndent([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_LINEHEIGHT), bindable, displaybind]
+    HRESULT lineHeight([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_LINEHEIGHT), bindable, displaybind]
+    HRESULT lineHeight([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_MARGINTOP), bindable, displaybind]
+    HRESULT marginTop([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_MARGINTOP), bindable, displaybind]
+    HRESULT marginTop([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_MARGINRIGHT), bindable, displaybind]
+    HRESULT marginRight([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_MARGINRIGHT), bindable, displaybind]
+    HRESULT marginRight([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_MARGINBOTTOM), bindable, displaybind]
+    HRESULT marginBottom([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_MARGINBOTTOM), bindable, displaybind]
+    HRESULT marginBottom([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_MARGINLEFT), bindable, displaybind]
+    HRESULT marginLeft([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_MARGINLEFT), bindable, displaybind]
+    HRESULT marginLeft([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_MARGIN), bindable, displaybind]
+    HRESULT margin([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_MARGIN), bindable, displaybind]
+    HRESULT margin([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_PADDINGTOP), bindable, displaybind]
+    HRESULT paddingTop([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PADDINGTOP), bindable, displaybind]
+    HRESULT paddingTop([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_PADDINGRIGHT), bindable, displaybind]
+    HRESULT paddingRight([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PADDINGRIGHT), bindable, displaybind]
+    HRESULT paddingRight([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_PADDINGBOTTOM), bindable, displaybind]
+    HRESULT paddingBottom([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PADDINGBOTTOM), bindable, displaybind]
+    HRESULT paddingBottom([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_PADDINGLEFT), bindable, displaybind]
+    HRESULT paddingLeft([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PADDINGLEFT), bindable, displaybind]
+    HRESULT paddingLeft([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_PADDING), bindable, displaybind]
+    HRESULT padding([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PADDING), bindable, displaybind]
+    HRESULT padding([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDER), bindable, displaybind]
+    HRESULT border([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDER), bindable, displaybind]
+    HRESULT border([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERTOP), bindable, displaybind]
+    HRESULT borderTop([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERTOP), bindable, displaybind]
+    HRESULT borderTop([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHT), bindable, displaybind]
+    HRESULT borderRight([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHT), bindable, displaybind]
+    HRESULT borderRight([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOM), bindable, displaybind]
+    HRESULT borderBottom([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOM), bindable, displaybind]
+    HRESULT borderBottom([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERLEFT), bindable, displaybind]
+    HRESULT borderLeft([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERLEFT), bindable, displaybind]
+    HRESULT borderLeft([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERCOLOR), bindable, displaybind]
+    HRESULT borderColor([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERCOLOR), bindable, displaybind]
+    HRESULT borderColor([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERTOPCOLOR), bindable, displaybind]
+    HRESULT borderTopColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERTOPCOLOR), bindable, displaybind]
+    HRESULT borderTopColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHTCOLOR), bindable, displaybind]
+    HRESULT borderRightColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHTCOLOR), bindable, displaybind]
+    HRESULT borderRightColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOMCOLOR), bindable, displaybind]
+    HRESULT borderBottomColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOMCOLOR), bindable, displaybind]
+    HRESULT borderBottomColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERLEFTCOLOR), bindable, displaybind]
+    HRESULT borderLeftColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERLEFTCOLOR), bindable, displaybind]
+    HRESULT borderLeftColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERWIDTH), bindable, displaybind]
+    HRESULT borderWidth([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERWIDTH), bindable, displaybind]
+    HRESULT borderWidth([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERTOPWIDTH), bindable, displaybind]
+    HRESULT borderTopWidth([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERTOPWIDTH), bindable, displaybind]
+    HRESULT borderTopWidth([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHTWIDTH), bindable, displaybind]
+    HRESULT borderRightWidth([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHTWIDTH), bindable, displaybind]
+    HRESULT borderRightWidth([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOMWIDTH), bindable, displaybind]
+    HRESULT borderBottomWidth([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOMWIDTH), bindable, displaybind]
+    HRESULT borderBottomWidth([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERLEFTWIDTH), bindable, displaybind]
+    HRESULT borderLeftWidth([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERLEFTWIDTH), bindable, displaybind]
+    HRESULT borderLeftWidth([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERSTYLE), bindable, displaybind]
+    HRESULT borderStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERSTYLE), bindable, displaybind]
+    HRESULT borderStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERTOPSTYLE), bindable, displaybind]
+    HRESULT borderTopStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERTOPSTYLE), bindable, displaybind]
+    HRESULT borderTopStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHTSTYLE), bindable, displaybind]
+    HRESULT borderRightStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHTSTYLE), bindable, displaybind]
+    HRESULT borderRightStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOMSTYLE), bindable, displaybind]
+    HRESULT borderBottomStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOMSTYLE), bindable, displaybind]
+    HRESULT borderBottomStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERLEFTSTYLE), bindable, displaybind]
+    HRESULT borderLeftStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERLEFTSTYLE), bindable, displaybind]
+    HRESULT borderLeftStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_WIDTH), bindable, displaybind]
+    HRESULT width([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_WIDTH), bindable, displaybind]
+    HRESULT width([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_HEIGHT), bindable, displaybind]
+    HRESULT height([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_HEIGHT), bindable, displaybind]
+    HRESULT height([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_STYLEFLOAT), bindable, displaybind]
+    HRESULT styleFloat([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_STYLEFLOAT), bindable, displaybind]
+    HRESULT styleFloat([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_CLEAR), bindable, displaybind]
+    HRESULT clear([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_CLEAR), bindable, displaybind]
+    HRESULT clear([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_DISPLAY), bindable, displaybind]
+    HRESULT display([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_DISPLAY), bindable, displaybind]
+    HRESULT display([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_VISIBILITY), bindable, displaybind]
+    HRESULT visibility([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_VISIBILITY), bindable, displaybind]
+    HRESULT visibility([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_LISTSTYLETYPE), bindable, displaybind]
+    HRESULT listStyleType([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_LISTSTYLETYPE), bindable, displaybind]
+    HRESULT listStyleType([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_LISTSTYLEPOSITION), bindable, displaybind]
+    HRESULT listStylePosition([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_LISTSTYLEPOSITION), bindable, displaybind]
+    HRESULT listStylePosition([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_LISTSTYLEIMAGE), bindable, displaybind]
+    HRESULT listStyleImage([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_LISTSTYLEIMAGE), bindable, displaybind]
+    HRESULT listStyleImage([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_LISTSTYLE), bindable, displaybind]
+    HRESULT listStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_LISTSTYLE), bindable, displaybind]
+    HRESULT listStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_WHITESPACE), bindable, displaybind]
+    HRESULT whiteSpace([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_WHITESPACE), bindable, displaybind]
+    HRESULT whiteSpace([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_TOP), bindable, displaybind]
+    HRESULT top([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TOP), bindable, displaybind]
+    HRESULT top([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_LEFT), bindable, displaybind]
+    HRESULT left([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_LEFT), bindable, displaybind]
+    HRESULT left([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLSTYLE_POSITION), bindable, displaybind]
+    HRESULT position([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_ZINDEX), bindable, displaybind]
+    HRESULT zIndex([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_ZINDEX), bindable, displaybind]
+    HRESULT zIndex([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_OVERFLOW), bindable, displaybind]
+    HRESULT overflow([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_OVERFLOW), bindable, displaybind]
+    HRESULT overflow([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_PAGEBREAKBEFORE), bindable, displaybind]
+    HRESULT pageBreakBefore([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PAGEBREAKBEFORE), bindable, displaybind]
+    HRESULT pageBreakBefore([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_PAGEBREAKAFTER), bindable, displaybind]
+    HRESULT pageBreakAfter([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PAGEBREAKAFTER), bindable, displaybind]
+    HRESULT pageBreakAfter([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_CSSTEXT), bindable, displaybind]
+    HRESULT cssText([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_CSSTEXT), bindable, displaybind]
+    HRESULT cssText([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_PIXELTOP), bindable, displaybind, hidden]
+    HRESULT pixelTop([in] long v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PIXELTOP), bindable, displaybind, hidden]
+    HRESULT pixelTop([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_PIXELLEFT), bindable, displaybind, hidden]
+    HRESULT pixelLeft([in] long v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PIXELLEFT), bindable, displaybind, hidden]
+    HRESULT pixelLeft([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_PIXELWIDTH), bindable, displaybind, hidden]
+    HRESULT pixelWidth([in] long v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PIXELWIDTH), bindable, displaybind, hidden]
+    HRESULT pixelWidth([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_PIXELHEIGHT), bindable, displaybind, hidden]
+    HRESULT pixelHeight([in] long v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PIXELHEIGHT), bindable, displaybind, hidden]
+    HRESULT pixelHeight([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_POSTOP), bindable, displaybind]
+    HRESULT posTop([in] float v);
+
+    [propget, id(DISPID_IHTMLSTYLE_POSTOP), bindable, displaybind]
+    HRESULT posTop([retval, out] float *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_POSLEFT), bindable, displaybind]
+    HRESULT posLeft([in] float v);
+
+    [propget, id(DISPID_IHTMLSTYLE_POSLEFT), bindable, displaybind]
+    HRESULT posLeft([retval, out] float *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_POSWIDTH), bindable, displaybind]
+    HRESULT posWidth([in] float v);
+
+    [propget, id(DISPID_IHTMLSTYLE_POSWIDTH), bindable, displaybind]
+    HRESULT posWidth([retval, out] float *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_POSHEIGHT), bindable, displaybind]
+    HRESULT posHeight([in] float v);
+
+    [propget, id(DISPID_IHTMLSTYLE_POSHEIGHT), bindable, displaybind]
+    HRESULT posHeight([retval, out] float *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_CURSOR), bindable, displaybind]
+    HRESULT cursor([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_CURSOR), bindable, displaybind]
+    HRESULT cursor([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_CLIP), bindable, displaybind]
+    HRESULT clip([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_CLIP), bindable, displaybind]
+    HRESULT clip([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_FILTER), bindable, displaybind]
+    HRESULT filter([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_FILTER), bindable, displaybind]
+    HRESULT filter([retval, out] BSTR *p);
+
+    [id(DISPID_IHTMLSTYLE_SETATTRIBUTE)]
+    HRESULT setAttribute(
+        [in] BSTR strAttributeName,
+        [in] VARIANT AttributeValue,
+        [defaultvalue(1), in] LONG lFlags);
+
+    [id(DISPID_IHTMLSTYLE_GETATTRIBUTE)]
+    HRESULT getAttribute(
+        [in] BSTR strAttributeName,
+        [defaultvalue(0), in] LONG lFlags,
+        [retval, out] VARIANT *AttributeValue);
+
+    [id(DISPID_IHTMLSTYLE_REMOVEATTRIBUTE)]
+    HRESULT removeAttribute(
+        [in] BSTR strAttributeName,
+        [defaultvalue(1), in]
+        LONG lFlags,
+        [retval, out] VARIANT_BOOL *pfSuccess);
+
+    [id(DISPID_IHTMLSTYLE_TOSTRING)]
+    HRESULT toString([retval, out] BSTR *String);
+}
+
+/*****************************************************************************
+ *    IHTMLStyle2 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f4a2-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLStyle2 : IDispatch
+{
+    [propput, id(DISPID_IHTMLSTYLE2_TABLELAYOUT), displaybind, bindable]
+    HRESULT tableLayout([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_TABLELAYOUT), displaybind, bindable]
+    HRESULT tableLayout([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_BORDERCOLLAPSE), displaybind, bindable]
+    HRESULT borderCollapse([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_BORDERCOLLAPSE), displaybind, bindable]
+    HRESULT borderCollapse([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_DIRECTION), displaybind, bindable]
+    HRESULT direction([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_DIRECTION), displaybind, bindable]
+    HRESULT direction([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_BEHAVIOR), displaybind, bindable]
+    HRESULT behavior([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_BEHAVIOR), displaybind, bindable]
+    HRESULT behavior([out, retval] BSTR *p);
+
+    [id(DISPID_IHTMLSTYLE2_SETEXPRESSION)]
+    HRESULT setExpression(
+            [in] BSTR propname,
+            [in] BSTR expression,
+            [in, defaultvalue("")] BSTR language);
+
+    [id(DISPID_IHTMLSTYLE2_GETEXPRESSION)]
+    HRESULT getExpression(
+            [in] BSTR propname,
+            [out, retval] VARIANT *expression);
+
+    [id(DISPID_IHTMLSTYLE2_REMOVEEXPRESSION)]
+    HRESULT removeExpression(
+            [in] BSTR propname,
+            [out, retval] VARIANT_BOOL *pfSuccess);
+
+    [propput, id(DISPID_IHTMLSTYLE2_POSITION), displaybind, bindable]
+    HRESULT position([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_POSITION), displaybind, bindable]
+    HRESULT position([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_UNICODEBIDI), displaybind, bindable]
+    HRESULT unicodeBidi([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_UNICODEBIDI), displaybind, bindable]
+    HRESULT unicodeBidi([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_BOTTOM), displaybind, bindable]
+    HRESULT bottom([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_BOTTOM), displaybind, bindable]
+    HRESULT bottom([out, retval] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_RIGHT), displaybind, bindable]
+    HRESULT right([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_RIGHT), displaybind, bindable]
+    HRESULT right([out, retval] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_PIXELBOTTOM), displaybind, bindable, hidden]
+    HRESULT pixelBottom([in] long v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_PIXELBOTTOM), displaybind, bindable, hidden]
+    HRESULT pixelBottom([out, retval] long *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_PIXELRIGHT), displaybind, bindable, hidden]
+    HRESULT pixelRight([in] long v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_PIXELRIGHT), displaybind, bindable, hidden]
+    HRESULT pixelRight([out, retval] long *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_POSBOTTOM), displaybind, bindable]
+    HRESULT posBottom([in] float v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_POSBOTTOM), displaybind, bindable]
+    HRESULT posBottom([out, retval] float *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_POSRIGHT), displaybind, bindable]
+    HRESULT posRight([in] float v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_POSRIGHT), displaybind, bindable]
+    HRESULT posRight([out, retval] float *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_IMEMODE), displaybind, bindable]
+    HRESULT imeMode([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_IMEMODE), displaybind, bindable]
+    HRESULT imeMode([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_RUBYALIGN), displaybind, bindable]
+    HRESULT rubyAlign([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_RUBYALIGN), displaybind, bindable]
+    HRESULT rubyAlign([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_RUBYPOSITION), displaybind, bindable]
+    HRESULT rubyPosition([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_RUBYPOSITION), displaybind, bindable]
+    HRESULT rubyPosition([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_RUBYOVERHANG), displaybind, bindable]
+    HRESULT rubyOverhang([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_RUBYOVERHANG), displaybind, bindable]
+    HRESULT rubyOverhang([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDCHAR), displaybind, bindable]
+    HRESULT layoutGridChar([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDCHAR), displaybind, bindable]
+    HRESULT layoutGridChar([out, retval] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDLINE), displaybind, bindable]
+    HRESULT layoutGridLine([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDLINE), displaybind, bindable]
+    HRESULT layoutGridLine([out, retval] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDMODE), displaybind, bindable]
+    HRESULT layoutGridMode([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDMODE), displaybind, bindable]
+    HRESULT layoutGridMode([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDTYPE), displaybind, bindable]
+    HRESULT layoutGridType([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDTYPE), displaybind, bindable]
+    HRESULT layoutGridType([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRID), displaybind, bindable, nonbrowsable]
+    HRESULT layoutGrid([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRID), displaybind, bindable, nonbrowsable]
+    HRESULT layoutGrid([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_WORDBREAK), displaybind, bindable]
+    HRESULT wordBreak([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_WORDBREAK), displaybind, bindable]
+    HRESULT wordBreak([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_LINEBREAK), displaybind, bindable]
+    HRESULT lineBreak([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_LINEBREAK), displaybind, bindable]
+    HRESULT lineBreak([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_TEXTJUSTIFY), displaybind, bindable]
+    HRESULT textJustify([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_TEXTJUSTIFY), displaybind, bindable]
+    HRESULT textJustify([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_TEXTJUSTIFYTRIM), displaybind, bindable]
+    HRESULT textJustifyTrim([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_TEXTJUSTIFYTRIM), displaybind, bindable]
+    HRESULT textJustifyTrim([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_TEXTKASHIDA), displaybind, bindable]
+    HRESULT textKashida([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_TEXTKASHIDA), displaybind, bindable]
+    HRESULT textKashida([out, retval] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_TEXTAUTOSPACE), displaybind, bindable]
+    HRESULT textAutospace([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_TEXTAUTOSPACE), displaybind, bindable]
+    HRESULT textAutospace([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_OVERFLOWX), displaybind, bindable]
+    HRESULT overflowX([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_OVERFLOWX), displaybind, bindable]
+    HRESULT overflowX([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_OVERFLOWY), displaybind, bindable]
+    HRESULT overflowY([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_OVERFLOWY), displaybind, bindable]
+    HRESULT overflowY([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_ACCELERATOR), displaybind, bindable]
+    HRESULT accelerator([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_ACCELERATOR), displaybind, bindable]
+    HRESULT accelerator([out, retval] BSTR *p);
+}
+
+/*****************************************************************************
+ *    IHTMLRuleStyle interface
+ */
+[
+	odl,
+	oleautomation,
+	dual,
+	uuid(3050F3CF-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLRuleStyle : IDispatch
+{
+    [propput, id(DISPID_IHTMLRULESTYLE_FONTFAMILY), bindable, displaybind]
+    HRESULT fontFamily([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_FONTFAMILY), bindable, displaybind]
+    HRESULT fontFamily([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_FONTSTYLE), bindable, displaybind]
+    HRESULT fontStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_FONTSTYLE), bindable, displaybind]
+    HRESULT fontStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_FONTVARIANT), bindable, displaybind]
+    HRESULT fontVariant([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_FONTVARIANT), bindable, displaybind]
+    HRESULT fontVariant([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_FONTWEIGHT), bindable, displaybind]
+    HRESULT fontWeight([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_FONTWEIGHT), bindable, displaybind]
+    HRESULT fontWeight([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_FONTSIZE), bindable, displaybind]
+    HRESULT fontSize([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_FONTSIZE), bindable, displaybind]
+    HRESULT fontSize([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_FONT), bindable, displaybind]
+    HRESULT font([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_FONT), bindable, displaybind]
+    HRESULT font([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_COLOR), bindable, displaybind]
+    HRESULT color([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_COLOR), bindable, displaybind]
+    HRESULT color([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUND), bindable, displaybind]
+    HRESULT background([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUND), bindable, displaybind]
+    HRESULT background([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDCOLOR), bindable, displaybind]
+    HRESULT backgroundColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDCOLOR), bindable, displaybind]
+    HRESULT backgroundColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDIMAGE), bindable, displaybind]
+    HRESULT backgroundImage([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDIMAGE), bindable, displaybind]
+    HRESULT backgroundImage([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDREPEAT), bindable, displaybind]
+    HRESULT backgroundRepeat([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDREPEAT), bindable, displaybind]
+    HRESULT backgroundRepeat([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDATTACHMENT), bindable, displaybind]
+    HRESULT backgroundAttachment([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDATTACHMENT), bindable, displaybind]
+    HRESULT backgroundAttachment([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITION), bindable, displaybind]
+    HRESULT backgroundPosition([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITION), bindable, displaybind]
+    HRESULT backgroundPosition([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONX), bindable, displaybind]
+    HRESULT backgroundPositionX([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONX), bindable, displaybind]
+    HRESULT backgroundPositionX([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONY), bindable, displaybind]
+    HRESULT backgroundPositionY([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONY), bindable, displaybind]
+    HRESULT backgroundPositionY([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_WORDSPACING), bindable, displaybind]
+    HRESULT wordSpacing([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_WORDSPACING), bindable, displaybind]
+    HRESULT wordSpacing([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_LETTERSPACING), bindable, displaybind]
+    HRESULT letterSpacing([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_LETTERSPACING), bindable, displaybind]
+    HRESULT letterSpacing([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_TEXTDECORATION), bindable, displaybind]
+    HRESULT textDecoration([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_TEXTDECORATION), bindable, displaybind]
+    HRESULT textDecoration([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONNONE), bindable, displaybind]
+    HRESULT textDecorationNone([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONNONE), bindable, displaybind]
+    HRESULT textDecorationNone([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONUNDERLINE), bindable, displaybind]
+    HRESULT textDecorationUnderline([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONUNDERLINE), bindable, displaybind]
+    HRESULT textDecorationUnderline([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONOVERLINE), bindable, displaybind]
+    HRESULT textDecorationOverline([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONOVERLINE), bindable, displaybind]
+    HRESULT textDecorationOverline([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONLINETHROUGH), bindable, displaybind]
+    HRESULT textDecorationLineThrough([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONLINETHROUGH), bindable, displaybind]
+    HRESULT textDecorationLineThrough([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONBLINK), bindable, displaybind]
+    HRESULT textDecorationBlink([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONBLINK), bindable, displaybind]
+    HRESULT textDecorationBlink([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_VERTICALALIGN), bindable, displaybind]
+    HRESULT verticalAlign([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_VERTICALALIGN), bindable, displaybind]
+    HRESULT verticalAlign([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_TEXTTRANSFORM), bindable, displaybind]
+    HRESULT textTransform([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_TEXTTRANSFORM), bindable, displaybind]
+    HRESULT textTransform([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_TEXTALIGN), bindable, displaybind]
+    HRESULT textAlign([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_TEXTALIGN), bindable, displaybind]
+    HRESULT textAlign([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_TEXTINDENT), bindable, displaybind]
+    HRESULT textIndent([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_TEXTINDENT), bindable, displaybind]
+    HRESULT textIndent([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_LINEHEIGHT), bindable, displaybind]
+    HRESULT lineHeight([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_LINEHEIGHT), bindable, displaybind]
+    HRESULT lineHeight([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_MARGINTOP), bindable, displaybind]
+    HRESULT marginTop([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_MARGINTOP), bindable, displaybind]
+    HRESULT marginTop([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_MARGINRIGHT), bindable, displaybind]
+    HRESULT marginRight([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_MARGINRIGHT), bindable, displaybind]
+    HRESULT marginRight([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_MARGINBOTTOM), bindable, displaybind]
+    HRESULT marginBottom([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_MARGINBOTTOM), bindable, displaybind]
+    HRESULT marginBottom([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_MARGINLEFT), bindable, displaybind]
+    HRESULT marginLeft([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_MARGINLEFT), bindable, displaybind]
+    HRESULT marginLeft([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_MARGIN), bindable, displaybind]
+    HRESULT margin([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_MARGIN), bindable, displaybind]
+    HRESULT margin([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_PADDINGTOP), bindable, displaybind]
+    HRESULT paddingTop([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_PADDINGTOP), bindable, displaybind]
+    HRESULT paddingTop([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_PADDINGRIGHT), bindable, displaybind]
+    HRESULT paddingRight([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_PADDINGRIGHT), bindable, displaybind]
+    HRESULT paddingRight([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_PADDINGBOTTOM), bindable, displaybind]
+    HRESULT paddingBottom([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_PADDINGBOTTOM), bindable, displaybind]
+    HRESULT paddingBottom([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_PADDINGLEFT), bindable, displaybind]
+    HRESULT paddingLeft([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_PADDINGLEFT), bindable, displaybind]
+    HRESULT paddingLeft([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_PADDING), bindable, displaybind]
+    HRESULT padding([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_PADDING), bindable, displaybind]
+    HRESULT padding([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDER), bindable, displaybind]
+    HRESULT border([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDER), bindable, displaybind]
+    HRESULT border([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERTOP), bindable, displaybind]
+    HRESULT borderTop([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERTOP), bindable, displaybind]
+    HRESULT borderTop([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERRIGHT), bindable, displaybind]
+    HRESULT borderRight([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERRIGHT), bindable, displaybind]
+    HRESULT borderRight([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOM), bindable, displaybind]
+    HRESULT borderBottom([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOM), bindable, displaybind]
+    HRESULT borderBottom([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERLEFT), bindable, displaybind]
+    HRESULT borderLeft([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERLEFT), bindable, displaybind]
+    HRESULT borderLeft([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERCOLOR), bindable, displaybind]
+    HRESULT borderColor([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERCOLOR), bindable, displaybind]
+    HRESULT borderColor([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERTOPCOLOR), bindable, displaybind]
+    HRESULT borderTopColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERTOPCOLOR), bindable, displaybind]
+    HRESULT borderTopColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERRIGHTCOLOR), bindable, displaybind]
+    HRESULT borderRightColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERRIGHTCOLOR), bindable, displaybind]
+    HRESULT borderRightColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOMCOLOR), bindable, displaybind]
+    HRESULT borderBottomColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOMCOLOR), bindable, displaybind]
+    HRESULT borderBottomColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERLEFTCOLOR), bindable, displaybind]
+    HRESULT borderLeftColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERLEFTCOLOR), bindable, displaybind]
+    HRESULT borderLeftColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERWIDTH), bindable, displaybind]
+    HRESULT borderWidth([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERWIDTH), bindable, displaybind]
+    HRESULT borderWidth([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERTOPWIDTH), bindable, displaybind]
+    HRESULT borderTopWidth([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERTOPWIDTH), bindable, displaybind]
+    HRESULT borderTopWidth([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERRIGHTWIDTH), bindable, displaybind]
+    HRESULT borderRightWidth([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERRIGHTWIDTH), bindable, displaybind]
+    HRESULT borderRightWidth([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOMWIDTH), bindable, displaybind]
+    HRESULT borderBottomWidth([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOMWIDTH), bindable, displaybind]
+    HRESULT borderBottomWidth([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERLEFTWIDTH), bindable, displaybind]
+    HRESULT borderLeftWidth([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERLEFTWIDTH), bindable, displaybind]
+    HRESULT borderLeftWidth([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERSTYLE), bindable, displaybind]
+    HRESULT borderStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERSTYLE), bindable, displaybind]
+    HRESULT borderStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERTOPSTYLE), bindable, displaybind]
+    HRESULT borderTopStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERTOPSTYLE), bindable, displaybind]
+    HRESULT borderTopStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERRIGHTSTYLE), bindable, displaybind]
+    HRESULT borderRightStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERRIGHTSTYLE), bindable, displaybind]
+    HRESULT borderRightStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOMSTYLE), bindable, displaybind]
+    HRESULT borderBottomStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOMSTYLE), bindable, displaybind]
+    HRESULT borderBottomStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERLEFTSTYLE), bindable, displaybind]
+    HRESULT borderLeftStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERLEFTSTYLE), bindable, displaybind]
+    HRESULT borderLeftStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_WIDTH), bindable, displaybind]
+    HRESULT width([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_WIDTH), bindable, displaybind]
+    HRESULT width([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_HEIGHT), bindable, displaybind]
+    HRESULT height([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_HEIGHT), bindable, displaybind]
+    HRESULT height([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_STYLEFLOAT), bindable, displaybind]
+    HRESULT styleFloat([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_STYLEFLOAT), bindable, displaybind]
+    HRESULT styleFloat([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_CLEAR), bindable, displaybind]
+    HRESULT clear([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_CLEAR), bindable, displaybind]
+    HRESULT clear([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_DISPLAY), bindable, displaybind]
+    HRESULT display([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_DISPLAY), bindable, displaybind]
+    HRESULT display([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_VISIBILITY), bindable, displaybind]
+    HRESULT visibility([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_VISIBILITY), bindable, displaybind]
+    HRESULT visibility([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_LISTSTYLETYPE), bindable, displaybind]
+    HRESULT listStyleType([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_LISTSTYLETYPE), bindable, displaybind]
+    HRESULT listStyleType([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_LISTSTYLEPOSITION), bindable, displaybind]
+    HRESULT listStylePosition([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_LISTSTYLEPOSITION), bindable, displaybind]
+    HRESULT listStylePosition([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_LISTSTYLEIMAGE), bindable, displaybind]
+    HRESULT listStyleImage([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_LISTSTYLEIMAGE), bindable, displaybind]
+    HRESULT listStyleImage([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_LISTSTYLE), bindable, displaybind]
+    HRESULT listStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_LISTSTYLE), bindable, displaybind]
+    HRESULT listStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_WHITESPACE), bindable, displaybind]
+    HRESULT whiteSpace([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_WHITESPACE), bindable, displaybind]
+    HRESULT whiteSpace([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_TOP), bindable, displaybind]
+    HRESULT top([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_TOP), bindable, displaybind]
+    HRESULT top([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_LEFT), bindable, displaybind]
+    HRESULT left([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_LEFT), bindable, displaybind]
+    HRESULT left([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_POSITION), bindable, displaybind]
+    HRESULT position([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_ZINDEX), bindable, displaybind]
+    HRESULT zIndex([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_ZINDEX), bindable, displaybind]
+    HRESULT zIndex([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_OVERFLOW), bindable, displaybind]
+    HRESULT overflow([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_OVERFLOW), bindable, displaybind]
+    HRESULT overflow([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_PAGEBREAKBEFORE), bindable, displaybind]
+    HRESULT pageBreakBefore([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_PAGEBREAKBEFORE), bindable, displaybind]
+    HRESULT pageBreakBefore([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_PAGEBREAKAFTER), bindable, displaybind]
+    HRESULT pageBreakAfter([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_PAGEBREAKAFTER), bindable, displaybind]
+    HRESULT pageBreakAfter([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_CSSTEXT), bindable, displaybind]
+    HRESULT cssText([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_CSSTEXT), bindable, displaybind]
+    HRESULT cssText([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_CURSOR), bindable, displaybind]
+    HRESULT cursor([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_CURSOR), bindable, displaybind]
+    HRESULT cursor([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_CLIP), bindable, displaybind]
+    HRESULT clip([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_CLIP), bindable, displaybind]
+    HRESULT clip([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_FILTER), bindable, displaybind]
+    HRESULT filter([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_FILTER), bindable, displaybind]
+    HRESULT filter([retval, out] BSTR *p);
+
+    [id(DISPID_IHTMLRULESTYLE_SETATTRIBUTE)]
+    HRESULT setAttribute(
+        [in] BSTR strAttributeName,
+        [in] VARIANT AttributeValue,
+        [defaultvalue(1), in] LONG lFlags);
+
+    [id(DISPID_IHTMLRULESTYLE_GETATTRIBUTE)]
+    HRESULT getAttribute(
+        [in] BSTR strAttributeName,
+        [defaultvalue(0), in] LONG lFlags,
+        [retval, out] VARIANT *AttributeValue);
+
+    [id(DISPID_IHTMLRULESTYLE_REMOVEATTRIBUTE)]
+    HRESULT removeAttribute(
+        [in] BSTR strAttributeName,
+        [defaultvalue(1), in] LONG lFlags,
+        [retval, out] VARIANT_BOOL *pfSuccess);
+}
+
+/*****************************************************************************
+ *    DispHTMLStyle dispinterface
+ */
+[
+    hidden,
+    uuid(3050f55a-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLStyle
+{
+properties:
+methods:
+    [propput, id(DISPID_IHTMLSTYLE_FONTFAMILY), displaybind, bindable]
+    void fontFamily(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_FONTFAMILY), displaybind, bindable]
+    BSTR fontFamily();
+
+    [propput, id(DISPID_IHTMLSTYLE_FONTSTYLE), displaybind, bindable]
+    void fontStyle(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_FONTSTYLE), displaybind, bindable]
+    BSTR fontStyle();
+
+    [propput, id(DISPID_IHTMLSTYLE_FONTVARIANT), displaybind, bindable]
+    void fontVariant(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_FONTVARIANT), displaybind, bindable]
+    BSTR fontVariant();
+
+    [propput, id(DISPID_IHTMLSTYLE_FONTWEIGHT), displaybind, bindable]
+    void fontWeight(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_FONTWEIGHT), displaybind, bindable]
+    BSTR fontWeight();
+
+    [propput, id(DISPID_IHTMLSTYLE_FONTSIZE), displaybind, bindable]
+    void fontSize(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_FONTSIZE), displaybind, bindable]
+    VARIANT fontSize();
+
+    [propput, id(DISPID_IHTMLSTYLE_FONT), displaybind, bindable, nonbrowsable]
+    void font(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_FONT), displaybind, bindable, nonbrowsable]
+    BSTR font();
+
+    [propput, id(DISPID_IHTMLSTYLE_COLOR), displaybind, bindable]
+    void color(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_COLOR), displaybind, bindable]
+    VARIANT color();
+
+    [propput, id(DISPID_IHTMLSTYLE_BACKGROUND), displaybind, bindable, nonbrowsable]
+    void background(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BACKGROUND), displaybind, bindable, nonbrowsable]
+    BSTR background();
+
+    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDCOLOR), displaybind, bindable]
+    void backgroundColor(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDCOLOR), displaybind, bindable]
+    VARIANT backgroundColor();
+
+    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDIMAGE), displaybind, bindable]
+    void backgroundImage(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDIMAGE), displaybind, bindable]
+    BSTR backgroundImage();
+
+    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDREPEAT), displaybind, bindable]
+    void backgroundRepeat(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDREPEAT), displaybind, bindable]
+    BSTR backgroundRepeat();
+
+    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDATTACHMENT), displaybind, bindable]
+    void backgroundAttachment(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDATTACHMENT), displaybind, bindable]
+    BSTR backgroundAttachment();
+
+    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITION), displaybind, bindable, nonbrowsable]
+    void backgroundPosition(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITION), displaybind, bindable, nonbrowsable]
+    BSTR backgroundPosition();
+
+    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONX), displaybind, bindable]
+    void backgroundPositionX(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONX), displaybind, bindable]
+    VARIANT backgroundPositionX();
+
+    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONY), displaybind, bindable]
+    void backgroundPositionY(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONY), displaybind, bindable]
+    VARIANT backgroundPositionY();
+
+    [propput, id(DISPID_IHTMLSTYLE_WORDSPACING), displaybind, bindable]
+    void wordSpacing(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_WORDSPACING), displaybind, bindable]
+    VARIANT wordSpacing();
+
+    [propput, id(DISPID_IHTMLSTYLE_LETTERSPACING), displaybind, bindable]
+    void letterSpacing(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_LETTERSPACING), displaybind, bindable]
+    VARIANT letterSpacing();
+
+    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATION), displaybind, bindable]
+    void textDecoration(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATION), displaybind, bindable]
+    BSTR textDecoration();
+
+    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONNONE), displaybind, bindable]
+    void textDecorationNone(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONNONE), displaybind, bindable]
+    VARIANT_BOOL textDecorationNone();
+
+    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONUNDERLINE), displaybind, bindable]
+    void textDecorationUnderline(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONUNDERLINE), displaybind, bindable]
+    VARIANT_BOOL textDecorationUnderline();
+
+    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONOVERLINE), displaybind, bindable]
+    void textDecorationOverline(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONOVERLINE), displaybind, bindable]
+    VARIANT_BOOL textDecorationOverline();
+
+    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONLINETHROUGH), displaybind, bindable]
+    void textDecorationLineThrough(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONLINETHROUGH), displaybind, bindable]
+    VARIANT_BOOL textDecorationLineThrough();
+
+    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONBLINK), displaybind, bindable]
+    void textDecorationBlink(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONBLINK), displaybind, bindable]
+    VARIANT_BOOL textDecorationBlink();
+
+    [propput, id(DISPID_IHTMLSTYLE_VERTICALALIGN), displaybind, bindable]
+    void verticalAlign(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_VERTICALALIGN), displaybind, bindable]
+    VARIANT verticalAlign();
+
+    [propput, id(DISPID_IHTMLSTYLE_TEXTTRANSFORM), displaybind, bindable]
+    void textTransform(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TEXTTRANSFORM), displaybind, bindable]
+    BSTR textTransform();
+
+    [propput, id(DISPID_IHTMLSTYLE_TEXTALIGN), displaybind, bindable]
+    void textAlign(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TEXTALIGN), displaybind, bindable]
+    BSTR textAlign();
+
+    [propput, id(DISPID_IHTMLSTYLE_TEXTINDENT), displaybind, bindable]
+    void textIndent(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TEXTINDENT), displaybind, bindable]
+    VARIANT textIndent();
+
+    [propput, id(DISPID_IHTMLSTYLE_LINEHEIGHT), displaybind, bindable]
+    void lineHeight(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_LINEHEIGHT), displaybind, bindable]
+    VARIANT lineHeight();
+
+    [propput, id(DISPID_IHTMLSTYLE_MARGINTOP), displaybind, bindable]
+    void marginTop(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_MARGINTOP), displaybind, bindable]
+    VARIANT marginTop();
+
+    [propput, id(DISPID_IHTMLSTYLE_MARGINRIGHT), displaybind, bindable]
+    void marginRight(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_MARGINRIGHT), displaybind, bindable]
+    VARIANT marginRight();
+
+    [propput, id(DISPID_IHTMLSTYLE_MARGINBOTTOM), displaybind, bindable]
+    void marginBottom(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_MARGINBOTTOM), displaybind, bindable]
+    VARIANT marginBottom();
+
+    [propput, id(DISPID_IHTMLSTYLE_MARGINLEFT), displaybind, bindable]
+    void marginLeft(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_MARGINLEFT), displaybind, bindable]
+    VARIANT marginLeft();
+
+    [propput, id(DISPID_IHTMLSTYLE_MARGIN), displaybind, bindable, nonbrowsable]
+    void margin(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_MARGIN), displaybind, bindable, nonbrowsable]
+    BSTR margin();
+
+    [propput, id(DISPID_IHTMLSTYLE_PADDINGTOP), displaybind, bindable]
+    void paddingTop(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PADDINGTOP), displaybind, bindable]
+    VARIANT paddingTop();
+
+    [propput, id(DISPID_IHTMLSTYLE_PADDINGRIGHT), displaybind, bindable]
+    void paddingRight(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PADDINGRIGHT), displaybind, bindable]
+    VARIANT paddingRight();
+
+    [propput, id(DISPID_IHTMLSTYLE_PADDINGBOTTOM), displaybind, bindable]
+    void paddingBottom(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PADDINGBOTTOM), displaybind, bindable]
+    VARIANT paddingBottom();
+
+    [propput, id(DISPID_IHTMLSTYLE_PADDINGLEFT), displaybind, bindable]
+    void paddingLeft(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PADDINGLEFT), displaybind, bindable]
+    VARIANT paddingLeft();
+
+    [propput, id(DISPID_IHTMLSTYLE_PADDING), displaybind, bindable, nonbrowsable]
+    void padding(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PADDING), displaybind, bindable, nonbrowsable]
+    BSTR padding();
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDER), displaybind, bindable, nonbrowsable]
+    void border(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDER), displaybind, bindable, nonbrowsable]
+    BSTR border();
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERTOP), displaybind, bindable]
+    void borderTop(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERTOP), displaybind, bindable]
+    BSTR borderTop();
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHT), displaybind, bindable]
+    void borderRight(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHT), displaybind, bindable]
+    BSTR borderRight();
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOM), displaybind, bindable]
+    void borderBottom(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOM), displaybind, bindable]
+    BSTR borderBottom();
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERLEFT), displaybind, bindable]
+    void borderLeft(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERLEFT), displaybind, bindable]
+    BSTR borderLeft();
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERCOLOR), displaybind, bindable]
+    void borderColor(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERCOLOR), displaybind, bindable]
+    BSTR borderColor();
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERTOPCOLOR), displaybind, bindable]
+    void borderTopColor(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERTOPCOLOR), displaybind, bindable]
+    VARIANT borderTopColor();
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHTCOLOR), displaybind, bindable]
+    void borderRightColor(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHTCOLOR), displaybind, bindable]
+    VARIANT borderRightColor();
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOMCOLOR), displaybind, bindable]
+    void borderBottomColor(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOMCOLOR), displaybind, bindable]
+    VARIANT borderBottomColor();
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERLEFTCOLOR), displaybind, bindable]
+    void borderLeftColor(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERLEFTCOLOR), displaybind, bindable]
+    VARIANT borderLeftColor();
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERWIDTH), displaybind, bindable]
+    void borderWidth(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERWIDTH), displaybind, bindable]
+    BSTR borderWidth();
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERTOPWIDTH), displaybind, bindable]
+    void borderTopWidth(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERTOPWIDTH), displaybind, bindable]
+    VARIANT borderTopWidth();
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHTWIDTH), displaybind, bindable]
+    void borderRightWidth(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHTWIDTH), displaybind, bindable]
+    VARIANT borderRightWidth();
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOMWIDTH), displaybind, bindable]
+    void borderBottomWidth(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOMWIDTH), displaybind, bindable]
+    VARIANT borderBottomWidth();
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERLEFTWIDTH), displaybind, bindable]
+    void borderLeftWidth(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERLEFTWIDTH), displaybind, bindable]
+    VARIANT borderLeftWidth();
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERSTYLE), displaybind, bindable]
+    void borderStyle(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERSTYLE), displaybind, bindable]
+    BSTR borderStyle();
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERTOPSTYLE), displaybind, bindable]
+    void borderTopStyle(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERTOPSTYLE), displaybind, bindable]
+    BSTR borderTopStyle();
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHTSTYLE), displaybind, bindable]
+    void borderRightStyle(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHTSTYLE), displaybind, bindable]
+    BSTR borderRightStyle();
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOMSTYLE), displaybind, bindable]
+    void borderBottomStyle(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOMSTYLE), displaybind, bindable]
+    BSTR borderBottomStyle();
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERLEFTSTYLE), displaybind, bindable]
+    void borderLeftStyle(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERLEFTSTYLE), displaybind, bindable]
+    BSTR borderLeftStyle();
+
+    [propput, id(DISPID_IHTMLSTYLE_WIDTH), displaybind, bindable]
+    void width(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_WIDTH), displaybind, bindable]
+    VARIANT width();
+
+    [propput, id(DISPID_IHTMLSTYLE_HEIGHT), displaybind, bindable]
+    void height(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_HEIGHT), displaybind, bindable]
+    VARIANT height();
+
+    [propput, id(DISPID_IHTMLSTYLE_STYLEFLOAT), displaybind, bindable]
+    void styleFloat(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_STYLEFLOAT), displaybind, bindable]
+    BSTR styleFloat();
+
+    [propput, id(DISPID_IHTMLSTYLE_CLEAR), displaybind, bindable]
+    void clear(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_CLEAR), displaybind, bindable]
+    BSTR clear();
+
+    [propput, id(DISPID_IHTMLSTYLE_DISPLAY), displaybind, bindable]
+    void display(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_DISPLAY), displaybind, bindable]
+    BSTR display();
+
+    [propput, id(DISPID_IHTMLSTYLE_VISIBILITY), displaybind, bindable]
+    void visibility(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_VISIBILITY), displaybind, bindable]
+    BSTR visibility();
+
+    [propput, id(DISPID_IHTMLSTYLE_LISTSTYLETYPE), displaybind, bindable]
+    void listStyleType(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_LISTSTYLETYPE), displaybind, bindable]
+    BSTR listStyleType();
+
+    [propput, id(DISPID_IHTMLSTYLE_LISTSTYLEPOSITION), displaybind, bindable]
+    void listStylePosition(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_LISTSTYLEPOSITION), displaybind, bindable]
+    BSTR listStylePosition();
+
+    [propput, id(DISPID_IHTMLSTYLE_LISTSTYLEIMAGE), displaybind, bindable]
+    void listStyleImage(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_LISTSTYLEIMAGE), displaybind, bindable]
+    BSTR listStyleImage();
+
+    [propput, id(DISPID_IHTMLSTYLE_LISTSTYLE), displaybind, bindable, nonbrowsable]
+    void listStyle(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_LISTSTYLE), displaybind, bindable, nonbrowsable]
+    BSTR listStyle();
+
+    [propput, id(DISPID_IHTMLSTYLE_WHITESPACE), displaybind, bindable]
+    void whiteSpace(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_WHITESPACE), displaybind, bindable]
+    BSTR whiteSpace();
+
+    [propput, id(DISPID_IHTMLSTYLE_TOP), displaybind, bindable]
+    void top(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TOP), displaybind, bindable]
+    VARIANT top();
+
+    [propput, id(DISPID_IHTMLSTYLE_LEFT), displaybind, bindable]
+    void left(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_LEFT), displaybind, bindable]
+    VARIANT left();
+
+    [propput, id(DISPID_IHTMLSTYLE_ZINDEX), displaybind, bindable]
+    void zIndex(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_ZINDEX), displaybind, bindable]
+    VARIANT zIndex();
+
+    [propput, id(DISPID_IHTMLSTYLE_OVERFLOW), displaybind, bindable]
+    void overflow(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_OVERFLOW), displaybind, bindable]
+    BSTR overflow();
+
+    [propput, id(DISPID_IHTMLSTYLE_PAGEBREAKBEFORE), displaybind, bindable]
+    void pageBreakBefore(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PAGEBREAKBEFORE), displaybind, bindable]
+    BSTR pageBreakBefore();
+
+    [propput, id(DISPID_IHTMLSTYLE_PAGEBREAKAFTER), displaybind, bindable]
+    void pageBreakAfter(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PAGEBREAKAFTER), displaybind, bindable]
+    BSTR pageBreakAfter();
+
+    [propput, id(DISPID_IHTMLSTYLE_CSSTEXT), displaybind, bindable, nonbrowsable]
+    void cssText(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_CSSTEXT), displaybind, bindable, nonbrowsable]
+    BSTR cssText();
+
+    [propput, id(DISPID_IHTMLSTYLE_PIXELTOP), displaybind, bindable, hidden]
+    void pixelTop(long v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PIXELTOP), displaybind, bindable, hidden]
+    long pixelTop();
+
+    [propput, id(DISPID_IHTMLSTYLE_PIXELLEFT), displaybind, bindable, hidden]
+    void pixelLeft(long v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PIXELLEFT), displaybind, bindable, hidden]
+    long pixelLeft();
+
+    [propput, id(DISPID_IHTMLSTYLE_PIXELWIDTH), displaybind, bindable, hidden]
+    void pixelWidth(long v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PIXELWIDTH), displaybind, bindable, hidden]
+    long pixelWidth();
+
+    [propput, id(DISPID_IHTMLSTYLE_PIXELHEIGHT), displaybind, bindable, hidden]
+    void pixelHeight(long v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PIXELHEIGHT), displaybind, bindable, hidden]
+    long pixelHeight();
+
+    [propput, id(DISPID_IHTMLSTYLE_POSTOP), displaybind, bindable]
+    void posTop(float v);
+
+    [propget, id(DISPID_IHTMLSTYLE_POSTOP), displaybind, bindable]
+    float posTop();
+
+    [propput, id(DISPID_IHTMLSTYLE_POSLEFT), displaybind, bindable]
+    void posLeft(float v);
+
+    [propget, id(DISPID_IHTMLSTYLE_POSLEFT), displaybind, bindable]
+    float posLeft();
+
+    [propput, id(DISPID_IHTMLSTYLE_POSWIDTH), displaybind, bindable]
+    void posWidth(float v);
+
+    [propget, id(DISPID_IHTMLSTYLE_POSWIDTH), displaybind, bindable]
+    float posWidth();
+
+    [propput, id(DISPID_IHTMLSTYLE_POSHEIGHT), displaybind, bindable]
+    void posHeight(float v);
+
+    [propget, id(DISPID_IHTMLSTYLE_POSHEIGHT), displaybind, bindable]
+    float posHeight();
+
+    [propput, id(DISPID_IHTMLSTYLE_CURSOR), displaybind, bindable]
+    void cursor(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_CURSOR), displaybind, bindable]
+    BSTR cursor();
+
+    [propput, id(DISPID_IHTMLSTYLE_CLIP), displaybind, bindable]
+    void clip(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_CLIP), displaybind, bindable]
+    BSTR clip();
+
+    [propput, id(DISPID_IHTMLSTYLE_FILTER), displaybind, bindable]
+    void filter(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_FILTER), displaybind, bindable]
+    BSTR filter();
+
+    [id(DISPID_IHTMLSTYLE_SETATTRIBUTE)]
+    void setAttribute(
+            [in] BSTR strAttributeName,
+            [in] VARIANT AttributeValue,
+            [in, defaultvalue(1)] LONG lFlags);
+
+    [id(DISPID_IHTMLSTYLE_GETATTRIBUTE)]
+    VARIANT getAttribute(
+            [in] BSTR strAttributeName,
+            [in, defaultvalue(0)] LONG lFlags);
+
+    [id(DISPID_IHTMLSTYLE_REMOVEATTRIBUTE)]
+    VARIANT_BOOL removeAttribute(
+            [in] BSTR strAttributeName,
+            [in, defaultvalue(1)] LONG lFlags);
+
+    [id(DISPID_IHTMLSTYLE_TOSTRING)]
+    BSTR toString();
+
+    [propput, id(DISPID_IHTMLSTYLE2_TABLELAYOUT), displaybind, bindable]
+    void tableLayout(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_TABLELAYOUT), displaybind, bindable]
+    BSTR tableLayout();
+
+    [propput, id(DISPID_IHTMLSTYLE2_BORDERCOLLAPSE), displaybind, bindable]
+    void borderCollapse(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_BORDERCOLLAPSE), displaybind, bindable]
+    BSTR borderCollapse();
+
+    [propput, id(DISPID_IHTMLSTYLE2_DIRECTION), displaybind, bindable]
+    void direction(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_DIRECTION), displaybind, bindable]
+    BSTR direction();
+
+    [propput, id(DISPID_IHTMLSTYLE2_BEHAVIOR), displaybind, bindable]
+    void behavior(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_BEHAVIOR), displaybind, bindable]
+    BSTR behavior();
+
+    [id(DISPID_IHTMLSTYLE2_SETEXPRESSION)]
+    void setExpression(
+            [in] BSTR propname,
+            [in] BSTR expression,
+            [in, defaultvalue("")] BSTR language);
+
+    [id(DISPID_IHTMLSTYLE2_GETEXPRESSION)]
+    VARIANT getExpression([in] BSTR propname);
+
+    [id(DISPID_IHTMLSTYLE2_REMOVEEXPRESSION)]
+    VARIANT_BOOL removeExpression([in] BSTR propname);
+
+    [propput, id(DISPID_IHTMLSTYLE2_POSITION), displaybind, bindable]
+    void position(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_POSITION), displaybind, bindable]
+    BSTR position();
+
+    [propput, id(DISPID_IHTMLSTYLE2_UNICODEBIDI), displaybind, bindable]
+    void unicodeBidi(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_UNICODEBIDI), displaybind, bindable]
+    BSTR unicodeBidi();
+
+    [propput, id(DISPID_IHTMLSTYLE2_BOTTOM), displaybind, bindable]
+    void bottom(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_BOTTOM), displaybind, bindable]
+    VARIANT bottom();
+
+    [propput, id(DISPID_IHTMLSTYLE2_RIGHT), displaybind, bindable]
+    void right(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_RIGHT), displaybind, bindable]
+    VARIANT right();
+
+    [propput, id(DISPID_IHTMLSTYLE2_PIXELBOTTOM), displaybind, bindable, hidden]
+    void pixelBottom(long v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_PIXELBOTTOM), displaybind, bindable, hidden]
+    long pixelBottom();
+
+    [propput, id(DISPID_IHTMLSTYLE2_PIXELRIGHT), displaybind, bindable, hidden]
+    void pixelRight(long v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_PIXELRIGHT), displaybind, bindable, hidden]
+    long pixelRight();
+
+    [propput, id(DISPID_IHTMLSTYLE2_POSBOTTOM), displaybind, bindable]
+    void posBottom(float v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_POSBOTTOM), displaybind, bindable]
+    float posBottom();
+
+    [propput, id(DISPID_IHTMLSTYLE2_POSRIGHT), displaybind, bindable]
+    void posRight(float v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_POSRIGHT), displaybind, bindable]
+    float posRight();
+
+    [propput, id(DISPID_IHTMLSTYLE2_IMEMODE), displaybind, bindable]
+    void imeMode(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_IMEMODE), displaybind, bindable]
+    BSTR imeMode();
+
+    [propput, id(DISPID_IHTMLSTYLE2_RUBYALIGN), displaybind, bindable]
+    void rubyAlign(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_RUBYALIGN), displaybind, bindable]
+    BSTR rubyAlign();
+
+    [propput, id(DISPID_IHTMLSTYLE2_RUBYPOSITION), displaybind, bindable]
+    void rubyPosition(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_RUBYPOSITION), displaybind, bindable]
+    BSTR rubyPosition();
+
+    [propput, id(DISPID_IHTMLSTYLE2_RUBYOVERHANG), displaybind, bindable]
+    void rubyOverhang(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_RUBYOVERHANG), displaybind, bindable]
+    BSTR rubyOverhang();
+
+    [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDCHAR), displaybind, bindable]
+    void layoutGridChar(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDCHAR), displaybind, bindable]
+    VARIANT layoutGridChar();
+
+    [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDLINE), displaybind, bindable]
+    void layoutGridLine(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDLINE), displaybind, bindable]
+    VARIANT layoutGridLine();
+
+    [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDMODE), displaybind, bindable]
+    void layoutGridMode(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDMODE), displaybind, bindable]
+    BSTR layoutGridMode();
+
+    [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDTYPE), displaybind, bindable]
+    void layoutGridType(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDTYPE), displaybind, bindable]
+    BSTR layoutGridType();
+
+    [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRID), displaybind, bindable, nonbrowsable]
+    void layoutGrid(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRID), displaybind, bindable, nonbrowsable]
+    BSTR layoutGrid();
+
+    [propput, id(DISPID_IHTMLSTYLE2_WORDBREAK), displaybind, bindable]
+    void wordBreak(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_WORDBREAK), displaybind, bindable]
+    BSTR wordBreak();
+
+    [propput, id(DISPID_IHTMLSTYLE2_LINEBREAK), displaybind, bindable]
+    void lineBreak(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_LINEBREAK), displaybind, bindable]
+    BSTR lineBreak();
+
+    [propput, id(DISPID_IHTMLSTYLE2_TEXTJUSTIFY), displaybind, bindable]
+    void textJustify(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_TEXTJUSTIFY), displaybind, bindable]
+    BSTR textJustify();
+
+    [propput, id(DISPID_IHTMLSTYLE2_TEXTJUSTIFYTRIM), displaybind, bindable]
+    void textJustifyTrim(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_TEXTJUSTIFYTRIM), displaybind, bindable]
+    BSTR textJustifyTrim();
+
+    [propput, id(DISPID_IHTMLSTYLE2_TEXTKASHIDA), displaybind, bindable]
+    void textKashida(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_TEXTKASHIDA), displaybind, bindable]
+    VARIANT textKashida();
+
+    [propput, id(DISPID_IHTMLSTYLE2_TEXTAUTOSPACE), displaybind, bindable]
+    void textAutospace(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_TEXTAUTOSPACE), displaybind, bindable]
+    BSTR textAutospace();
+
+    [propput, id(DISPID_IHTMLSTYLE2_OVERFLOWX), displaybind, bindable]
+    void overflowX(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_OVERFLOWX), displaybind, bindable]
+    BSTR overflowX();
+
+    [propput, id(DISPID_IHTMLSTYLE2_OVERFLOWY), displaybind, bindable]
+    void overflowY(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_OVERFLOWY), displaybind, bindable]
+    BSTR overflowY();
+
+    [propput, id(DISPID_IHTMLSTYLE2_ACCELERATOR), displaybind, bindable]
+    void accelerator(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_ACCELERATOR), displaybind, bindable]
+    BSTR accelerator();
+
+    [propput, id(DISPID_IHTMLSTYLE3_LAYOUTFLOW), displaybind, bindable]
+    void layoutFlow(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_LAYOUTFLOW), displaybind, bindable]
+    BSTR layoutFlow();
+
+    [propput, id(DISPID_IHTMLSTYLE3_ZOOM), displaybind, bindable]
+    void zoom(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_ZOOM), displaybind, bindable]
+    VARIANT zoom();
+
+    [propput, id(DISPID_IHTMLSTYLE3_WORDWRAP), displaybind, bindable]
+    void wordWrap(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_WORDWRAP), displaybind, bindable]
+    BSTR wordWrap();
+
+    [propput, id(DISPID_IHTMLSTYLE3_TEXTUNDERLINEPOSITION), displaybind, bindable]
+    void textUnderlinePosition(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_TEXTUNDERLINEPOSITION), displaybind, bindable]
+    BSTR textUnderlinePosition();
+
+    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARBASECOLOR), displaybind, bindable]
+    void scrollbarBaseColor(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARBASECOLOR), displaybind, bindable]
+    VARIANT scrollbarBaseColor();
+
+    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARFACECOLOR), displaybind, bindable]
+    void scrollbarFaceColor(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARFACECOLOR), displaybind, bindable]
+    VARIANT scrollbarFaceColor();
+
+    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable]
+    void scrollbar3dLightColor(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable]
+    VARIANT scrollbar3dLightColor();
+
+    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARSHADOWCOLOR), displaybind, bindable]
+    void scrollbarShadowColor(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARSHADOWCOLOR), displaybind, bindable]
+    VARIANT scrollbarShadowColor();
+
+    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable]
+    void scrollbarHighlightColor(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable]
+    VARIANT scrollbarHighlightColor();
+
+    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable]
+    void scrollbarDarkShadowColor(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable]
+    VARIANT scrollbarDarkShadowColor();
+
+    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARARROWCOLOR), displaybind, bindable]
+    void scrollbarArrowColor(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARARROWCOLOR), displaybind, bindable]
+    VARIANT scrollbarArrowColor();
+
+    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARTRACKCOLOR), displaybind, bindable]
+    void scrollbarTrackColor(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARTRACKCOLOR), displaybind, bindable]
+    VARIANT scrollbarTrackColor();
+
+    [propput, id(DISPID_IHTMLSTYLE3_WRITINGMODE), displaybind, bindable]
+    void writingMode(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_WRITINGMODE), displaybind, bindable]
+    BSTR writingMode();
+
+    [propput, id(DISPID_IHTMLSTYLE3_TEXTALIGNLAST), displaybind, bindable]
+    void textAlignLast(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_TEXTALIGNLAST), displaybind, bindable]
+    BSTR textAlignLast();
+
+    [propput, id(DISPID_IHTMLSTYLE3_TEXTKASHIDASPACE), displaybind, bindable]
+    void textKashidaSpace(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_TEXTKASHIDASPACE), displaybind, bindable]
+    VARIANT textKashidaSpace();
+
+    [propput, id(DISPID_IHTMLSTYLE4_TEXTOVERFLOW), displaybind, bindable]
+    void textOverflow(BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE4_TEXTOVERFLOW), displaybind, bindable]
+    BSTR textOverflow();
+
+    [propput, id(DISPID_IHTMLSTYLE4_MINHEIGHT), displaybind, bindable]
+    void minHeight(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE4_MINHEIGHT), displaybind, bindable]
+    VARIANT minHeight();
+}
+
+/*****************************************************************************
+ *    IHTMLRenderStyle interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f6ae-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLRenderStyle : IDispatch
+{
+    [propput, id(DISPID_IHTMLRENDERSTYLE_TEXTLINETHROUGHSTYLE), displaybind, bindable]
+    HRESULT textLineThroughStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRENDERSTYLE_TEXTLINETHROUGHSTYLE), displaybind, bindable]
+    HRESULT textLineThroughStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRENDERSTYLE_TEXTUNDERLINESTYLE), displaybind, bindable]
+    HRESULT textUnderlineStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRENDERSTYLE_TEXTUNDERLINESTYLE), displaybind, bindable]
+    HRESULT textUnderlineStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRENDERSTYLE_TEXTEFFECT), displaybind, bindable]
+    HRESULT textEffect([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRENDERSTYLE_TEXTEFFECT), displaybind, bindable]
+    HRESULT textEffect([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRENDERSTYLE_TEXTCOLOR), displaybind, bindable]
+    HRESULT textColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRENDERSTYLE_TEXTCOLOR), displaybind, bindable]
+    HRESULT textColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRENDERSTYLE_TEXTBACKGROUNDCOLOR), displaybind, bindable]
+    HRESULT textBackgroundColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRENDERSTYLE_TEXTBACKGROUNDCOLOR), displaybind, bindable]
+    HRESULT textBackgroundColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRENDERSTYLE_TEXTDECORATIONCOLOR), displaybind, bindable]
+    HRESULT textDecorationColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRENDERSTYLE_TEXTDECORATIONCOLOR), displaybind, bindable]
+    HRESULT textDecorationColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRENDERSTYLE_RENDERINGPRIORITY), displaybind, bindable]
+    HRESULT renderingPriority([in] long v);
+
+    [propget, id(DISPID_IHTMLRENDERSTYLE_RENDERINGPRIORITY), displaybind, bindable]
+    HRESULT renderingPriority([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLRENDERSTYLE_DEFAULTTEXTSELECTION), displaybind, bindable]
+    HRESULT defaultTextSelection([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRENDERSTYLE_DEFAULTTEXTSELECTION), displaybind, bindable]
+    HRESULT defaultTextSelection([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRENDERSTYLE_TEXTDECORATION), displaybind, bindable]
+    HRESULT textDecoration([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRENDERSTYLE_TEXTDECORATION), displaybind, bindable]
+    HRESULT textDecoration([retval, out] BSTR *p);
+}
+
+/*****************************************************************************
+ *    IHTMLCurrentStyle interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f3db-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLCurrentStyle : IDispatch
+{
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_POSITION), displaybind, bindable]
+    HRESULT position([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_STYLEFLOAT), displaybind, bindable]
+    HRESULT styleFloat([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_COLOR), displaybind, bindable]
+    HRESULT color([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDCOLOR), displaybind, bindable]
+    HRESULT backgroundColor([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTFAMILY), displaybind, bindable]
+    HRESULT fontFamily([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTSTYLE), displaybind, bindable]
+    HRESULT fontStyle([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTVARIANT), displaybind, bindable, hidden]
+    HRESULT fontVariant([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTWEIGHT), displaybind, bindable]
+    HRESULT fontWeight([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTSIZE), displaybind, bindable]
+    HRESULT fontSize([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDIMAGE), displaybind, bindable]
+    HRESULT backgroundImage([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDPOSITIONX), displaybind, bindable]
+    HRESULT backgroundPositionX([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDPOSITIONY), displaybind, bindable]
+    HRESULT backgroundPositionY([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDREPEAT), displaybind, bindable]
+    HRESULT backgroundRepeat([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERLEFTCOLOR), displaybind, bindable]
+    HRESULT borderLeftColor([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERTOPCOLOR), displaybind, bindable]
+    HRESULT borderTopColor([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTCOLOR), displaybind, bindable]
+    HRESULT borderRightColor([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMCOLOR), displaybind, bindable]
+    HRESULT borderBottomColor([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERTOPSTYLE), displaybind, bindable]
+    HRESULT borderTopStyle([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTSTYLE), displaybind, bindable]
+    HRESULT borderRightStyle([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMSTYLE), displaybind, bindable]
+    HRESULT borderBottomStyle([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERLEFTSTYLE), displaybind, bindable]
+    HRESULT borderLeftStyle([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERTOPWIDTH), displaybind, bindable]
+    HRESULT borderTopWidth([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTWIDTH), displaybind, bindable]
+    HRESULT borderRightWidth([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMWIDTH), displaybind, bindable]
+    HRESULT borderBottomWidth([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERLEFTWIDTH), displaybind, bindable]
+    HRESULT borderLeftWidth([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LEFT), displaybind, bindable]
+    HRESULT left([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TOP), displaybind, bindable]
+    HRESULT top([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_WIDTH), displaybind, bindable]
+    HRESULT width([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_HEIGHT), displaybind, bindable]
+    HRESULT height([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGLEFT), displaybind, bindable]
+    HRESULT paddingLeft([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGTOP), displaybind, bindable]
+    HRESULT paddingTop([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGRIGHT), displaybind, bindable]
+    HRESULT paddingRight([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGBOTTOM), displaybind, bindable]
+    HRESULT paddingBottom([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTALIGN), displaybind, bindable]
+    HRESULT textAlign([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTDECORATION), displaybind, bindable]
+    HRESULT textDecoration([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_DISPLAY), displaybind, bindable]
+    HRESULT display([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_VISIBILITY), displaybind, bindable]
+    HRESULT visibility([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_ZINDEX), displaybind, bindable]
+    HRESULT zIndex([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LETTERSPACING), displaybind, bindable]
+    HRESULT letterSpacing([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LINEHEIGHT), displaybind, bindable]
+    HRESULT lineHeight([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTINDENT), displaybind, bindable]
+    HRESULT textIndent([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_VERTICALALIGN), displaybind, bindable]
+    HRESULT verticalAlign([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDATTACHMENT), displaybind, bindable]
+    HRESULT backgroundAttachment([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINTOP), displaybind, bindable]
+    HRESULT marginTop([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINRIGHT), displaybind, bindable]
+    HRESULT marginRight([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINBOTTOM), displaybind, bindable]
+    HRESULT marginBottom([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINLEFT), displaybind, bindable]
+    HRESULT marginLeft([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLEAR), displaybind, bindable]
+    HRESULT clear([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LISTSTYLETYPE), displaybind, bindable]
+    HRESULT listStyleType([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LISTSTYLEPOSITION), displaybind, bindable]
+    HRESULT listStylePosition([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LISTSTYLEIMAGE), displaybind, bindable]
+    HRESULT listStyleImage([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPTOP), displaybind, bindable]
+    HRESULT clipTop([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPRIGHT), displaybind, bindable]
+    HRESULT clipRight([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPBOTTOM), displaybind, bindable]
+    HRESULT clipBottom([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPLEFT), displaybind, bindable]
+    HRESULT clipLeft([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_OVERFLOW), displaybind, bindable]
+    HRESULT overflow([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PAGEBREAKBEFORE), displaybind, bindable]
+    HRESULT pageBreakBefore([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PAGEBREAKAFTER), displaybind, bindable]
+    HRESULT pageBreakAfter([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_CURSOR), displaybind, bindable]
+    HRESULT cursor([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TABLELAYOUT), displaybind, bindable]
+    HRESULT tableLayout([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERCOLLAPSE), displaybind, bindable]
+    HRESULT borderCollapse([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_DIRECTION), displaybind, bindable]
+    HRESULT direction([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BEHAVIOR), displaybind, bindable]
+    HRESULT behavior([retval, out] BSTR *p);
+
+    [id(DISPID_IHTMLCURRENTSTYLE_GETATTRIBUTE)]
+    HRESULT getAttribute(
+        [in] BSTR strAttributeName,
+        [defaultvalue(0), in] LONG lFlags,
+        [retval, out] VARIANT *AttributeValue);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_UNICODEBIDI), displaybind, bindable]
+    HRESULT unicodeBidi([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_RIGHT), displaybind, bindable]
+    HRESULT right([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BOTTOM), displaybind, bindable]
+    HRESULT bottom([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_IMEMODE), displaybind, bindable]
+    HRESULT imeMode([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_RUBYALIGN), displaybind, bindable]
+    HRESULT rubyAlign([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_RUBYPOSITION), displaybind, bindable]
+    HRESULT rubyPosition([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_RUBYOVERHANG), displaybind, bindable]
+    HRESULT rubyOverhang([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTAUTOSPACE), displaybind, bindable]
+    HRESULT textAutospace([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LINEBREAK), displaybind, bindable]
+    HRESULT lineBreak([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_WORDBREAK), displaybind, bindable]
+    HRESULT wordBreak([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTJUSTIFY), displaybind, bindable]
+    HRESULT textJustify([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTJUSTIFYTRIM), displaybind, bindable]
+    HRESULT textJustifyTrim([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTKASHIDA), displaybind, bindable]
+    HRESULT textKashida([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BLOCKDIRECTION), displaybind, bindable]
+    HRESULT blockDirection([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDCHAR), displaybind, bindable]
+    HRESULT layoutGridChar([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDLINE), displaybind, bindable]
+    HRESULT layoutGridLine([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDMODE), displaybind, bindable]
+    HRESULT layoutGridMode([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDTYPE), displaybind, bindable]
+    HRESULT layoutGridType([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERSTYLE), displaybind, bindable]
+    HRESULT borderStyle([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERCOLOR), displaybind, bindable]
+    HRESULT borderColor([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERWIDTH), displaybind, bindable]
+    HRESULT borderWidth([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDING), displaybind, bindable]
+    HRESULT padding([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGIN), displaybind, bindable]
+    HRESULT margin([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_ACCELERATOR), displaybind, bindable]
+    HRESULT accelerator([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_OVERFLOWX), displaybind, bindable]
+    HRESULT overflowX([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_OVERFLOWY), displaybind, bindable]
+    HRESULT overflowY([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTTRANSFORM), displaybind, bindable]
+    HRESULT textTransform([retval, out] BSTR *p);
+}
+
+/*****************************************************************************
+ *    DispHTMLCurrentStyle dispinterface
+ */
+[
+    hidden,
+    uuid(3050f557-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLCurrentStyle
+{
+properties:
+methods:
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_POSITION), displaybind, bindable]
+    BSTR position();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_STYLEFLOAT), displaybind, bindable]
+    BSTR styleFloat();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_COLOR), displaybind, bindable]
+    VARIANT color();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDCOLOR), displaybind, bindable]
+    VARIANT backgroundColor();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTFAMILY), displaybind, bindable]
+    BSTR fontFamily();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTSTYLE), displaybind, bindable]
+    BSTR fontStyle();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTVARIANT), displaybind, bindable, hidden]
+    BSTR fontVariant();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTWEIGHT), displaybind, bindable]
+    VARIANT fontWeight();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTSIZE), displaybind, bindable]
+    VARIANT fontSize();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDIMAGE), displaybind, bindable]
+    BSTR backgroundImage();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDPOSITIONX), displaybind, bindable]
+    VARIANT backgroundPositionX();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDPOSITIONY), displaybind, bindable]
+    VARIANT backgroundPositionY();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDREPEAT), displaybind, bindable]
+    BSTR backgroundRepeat();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERLEFTCOLOR), displaybind, bindable]
+    VARIANT borderLeftColor();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERTOPCOLOR), displaybind, bindable]
+    VARIANT borderTopColor();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTCOLOR), displaybind, bindable]
+    VARIANT borderRightColor();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMCOLOR), displaybind, bindable]
+    VARIANT borderBottomColor();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERTOPSTYLE), displaybind, bindable]
+    BSTR borderTopStyle();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTSTYLE), displaybind, bindable]
+    BSTR borderRightStyle();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMSTYLE), displaybind, bindable]
+    BSTR borderBottomStyle();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERLEFTSTYLE), displaybind, bindable]
+    BSTR borderLeftStyle();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERTOPWIDTH), displaybind, bindable]
+    VARIANT borderTopWidth();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTWIDTH), displaybind, bindable]
+    VARIANT borderRightWidth();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMWIDTH), displaybind, bindable]
+    VARIANT borderBottomWidth();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERLEFTWIDTH), displaybind, bindable]
+    VARIANT borderLeftWidth();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LEFT), displaybind, bindable]
+    VARIANT left();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TOP), displaybind, bindable]
+    VARIANT top();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_WIDTH), displaybind, bindable]
+    VARIANT width();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_HEIGHT), displaybind, bindable]
+    VARIANT height();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGLEFT), displaybind, bindable]
+    VARIANT paddingLeft();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGTOP), displaybind, bindable]
+    VARIANT paddingTop();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGRIGHT), displaybind, bindable]
+    VARIANT paddingRight();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGBOTTOM), displaybind, bindable]
+    VARIANT paddingBottom();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTALIGN), displaybind, bindable]
+    BSTR textAlign();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTDECORATION), displaybind, bindable]
+    BSTR textDecoration();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_DISPLAY), displaybind, bindable]
+    BSTR display();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_VISIBILITY), displaybind, bindable]
+    BSTR visibility();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_ZINDEX), displaybind, bindable]
+    VARIANT zIndex();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LETTERSPACING), displaybind, bindable]
+    VARIANT letterSpacing();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LINEHEIGHT), displaybind, bindable]
+    VARIANT lineHeight();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTINDENT), displaybind, bindable]
+    VARIANT textIndent();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_VERTICALALIGN), displaybind, bindable]
+    VARIANT verticalAlign();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDATTACHMENT), displaybind, bindable]
+    BSTR backgroundAttachment();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINTOP), displaybind, bindable]
+    VARIANT marginTop();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINRIGHT), displaybind, bindable]
+    VARIANT marginRight();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINBOTTOM), displaybind, bindable]
+    VARIANT marginBottom();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINLEFT), displaybind, bindable]
+    VARIANT marginLeft();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLEAR), displaybind, bindable]
+    BSTR clear();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LISTSTYLETYPE), displaybind, bindable]
+    BSTR listStyleType();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LISTSTYLEPOSITION), displaybind, bindable]
+    BSTR listStylePosition();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LISTSTYLEIMAGE), displaybind, bindable]
+    BSTR listStyleImage();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPTOP), displaybind, bindable]
+    VARIANT clipTop();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPRIGHT), displaybind, bindable]
+    VARIANT clipRight();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPBOTTOM), displaybind, bindable]
+    VARIANT clipBottom();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPLEFT), displaybind, bindable]
+    VARIANT clipLeft();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_OVERFLOW), displaybind, bindable]
+    BSTR overflow();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PAGEBREAKBEFORE), displaybind, bindable]
+    BSTR pageBreakBefore();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PAGEBREAKAFTER), displaybind, bindable]
+    BSTR pageBreakAfter();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_CURSOR), displaybind, bindable]
+    BSTR cursor();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TABLELAYOUT), displaybind, bindable]
+    BSTR tableLayout();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERCOLLAPSE), displaybind, bindable]
+    BSTR borderCollapse();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_DIRECTION), displaybind, bindable]
+    BSTR direction();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BEHAVIOR), displaybind, bindable]
+    BSTR behavior();
+
+    [id(DISPID_IHTMLCURRENTSTYLE_GETATTRIBUTE)]
+    VARIANT getAttribute(
+            [in] BSTR strAttributeName,
+            [in, defaultvalue(0)] LONG lFlags);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_UNICODEBIDI), displaybind, bindable]
+    BSTR unicodeBidi();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_RIGHT), displaybind, bindable]
+    VARIANT right();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BOTTOM), displaybind, bindable]
+    VARIANT bottom();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_IMEMODE), displaybind, bindable]
+    BSTR imeMode();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_RUBYALIGN), displaybind, bindable]
+    BSTR rubyAlign();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_RUBYPOSITION), displaybind, bindable]
+    BSTR rubyPosition();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_RUBYOVERHANG), displaybind, bindable]
+    BSTR rubyOverhang();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTAUTOSPACE), displaybind, bindable]
+    BSTR textAutospace();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LINEBREAK), displaybind, bindable]
+    BSTR lineBreak();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_WORDBREAK), displaybind, bindable]
+    BSTR wordBreak();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTJUSTIFY), displaybind, bindable]
+    BSTR textJustify();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTJUSTIFYTRIM), displaybind, bindable]
+    BSTR textJustifyTrim();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTKASHIDA), displaybind, bindable]
+    VARIANT textKashida();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BLOCKDIRECTION), displaybind, bindable]
+    BSTR blockDirection();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDCHAR), displaybind, bindable]
+    VARIANT layoutGridChar();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDLINE), displaybind, bindable]
+    VARIANT layoutGridLine();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDMODE), displaybind, bindable]
+    BSTR layoutGridMode();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDTYPE), displaybind, bindable]
+    BSTR layoutGridType();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERSTYLE), displaybind, bindable]
+    BSTR borderStyle();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERCOLOR), displaybind, bindable]
+    BSTR borderColor();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERWIDTH), displaybind, bindable]
+    BSTR borderWidth();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDING), displaybind, bindable]
+    BSTR padding();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGIN), displaybind, bindable]
+    BSTR margin();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_ACCELERATOR), displaybind, bindable]
+    BSTR accelerator();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_OVERFLOWX), displaybind, bindable]
+    BSTR overflowX();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_OVERFLOWY), displaybind, bindable]
+    BSTR overflowY();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTTRANSFORM), displaybind, bindable]
+    BSTR textTransform();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_LAYOUTFLOW), displaybind, bindable]
+    BSTR layoutFlow();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_WORDWRAP), displaybind, bindable]
+    BSTR wordWrap();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_TEXTUNDERLINEPOSITION), displaybind, bindable]
+    BSTR textUnderlinePosition();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_HASLAYOUT), displaybind, bindable]
+    VARIANT_BOOL hasLayout();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARBASECOLOR), displaybind, bindable]
+    VARIANT scrollbarBaseColor();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARFACECOLOR), displaybind, bindable]
+    VARIANT scrollbarFaceColor();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable]
+    VARIANT scrollbar3dLightColor();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARSHADOWCOLOR), displaybind, bindable]
+    VARIANT scrollbarShadowColor();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable]
+    VARIANT scrollbarHighlightColor();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable]
+    VARIANT scrollbarDarkShadowColor();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARARROWCOLOR), displaybind, bindable]
+    VARIANT scrollbarArrowColor();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARTRACKCOLOR), displaybind, bindable]
+    VARIANT scrollbarTrackColor();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_WRITINGMODE), displaybind, bindable]
+    BSTR writingMode();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_ZOOM), displaybind, bindable]
+    VARIANT zoom();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_FILTER), displaybind, bindable]
+    BSTR filter();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_TEXTALIGNLAST), displaybind, bindable]
+    BSTR textAlignLast();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_TEXTKASHIDASPACE), displaybind, bindable]
+    VARIANT textKashidaSpace();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_ISBLOCK), displaybind, bindable, hidden, restricted, nonbrowsable]
+    VARIANT_BOOL isBlock();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE3_TEXTOVERFLOW), displaybind, bindable]
+    BSTR textOverflow();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE3_MINHEIGHT), displaybind, bindable]
+    VARIANT minHeight();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE3_WORDSPACING), displaybind, bindable]
+    VARIANT wordSpacing();
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE3_WHITESPACE), displaybind, bindable]
+    BSTR whiteSpace();
+}
+
+/*****************************************************************************
+ *    IHTMLRect interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f4a3-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLRect : IDispatch
+{
+    [propput, id(DISPID_IHTMLRECT_LEFT)]
+    HRESULT left([in] long v);
+
+    [propget, id(DISPID_IHTMLRECT_LEFT)]
+    HRESULT left([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLRECT_TOP)]
+    HRESULT top([in] long v);
+
+    [propget, id(DISPID_IHTMLRECT_TOP)]
+    HRESULT top([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLRECT_RIGHT)]
+    HRESULT right([in] long v);
+
+    [propget, id(DISPID_IHTMLRECT_RIGHT)]
+    HRESULT right([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLRECT_BOTTOM)]
+    HRESULT bottom([in] long v);
+
+    [propget, id(DISPID_IHTMLRECT_BOTTOM)]
+    HRESULT bottom([retval, out] long *p);
+}
+
+/*****************************************************************************
+ *    IHTMLRectCollection interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f4a4-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLRectCollection : IDispatch
+{
+    [propget, id(DISPID_IHTMLRECTCOLLECTION_LENGTH)]
+    HRESULT length([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLRECTCOLLECTION__NEWENUM), hidden, restricted]
+    HRESULT _newEnum([retval, out] IUnknown **p);
+
+    [id(DISPID_IHTMLRECTCOLLECTION_ITEM)]
+    HRESULT item(
+        [in] VARIANT *pvarIndex,
+        [retval, out] VARIANT *pvarResult);
+}
+
+/*****************************************************************************
+ *    IHTMLDOMNode interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f5da-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLDOMNode : IDispatch
+{
+    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
+    HRESULT nodeType([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
+    HRESULT parentNode([retval, out] IHTMLDOMNode **p);
+
+    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
+    HRESULT hasChildNodes([retval, out] VARIANT_BOOL *fChildren);
+
+    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
+    HRESULT childNodes([retval, out] IDispatch **p);
+
+    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
+    HRESULT attributes([retval, out] IDispatch **p);
+
+    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
+    HRESULT insertBefore(
+        [in] IHTMLDOMNode *newChild,
+        [optional, in] VARIANT refChild,
+        [retval, out] IHTMLDOMNode **node);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
+    HRESULT removeChild(
+        [in] IHTMLDOMNode *oldChild,
+        [retval, out] IHTMLDOMNode **node);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
+    HRESULT replaceChild(
+        [in] IHTMLDOMNode *newChild,
+        [in] IHTMLDOMNode *oldChild,
+        [retval, out] IHTMLDOMNode **node);
+
+    [id(DISPID_IHTMLDOMNODE_CLONENODE)]
+    HRESULT cloneNode(
+        [in] VARIANT_BOOL fDeep,
+        [retval, out] IHTMLDOMNode **clonedNode);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
+    HRESULT removeNode(
+        [defaultvalue(0), in] VARIANT_BOOL fDeep,
+        [retval, out] IHTMLDOMNode **removed);
+
+    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
+    HRESULT swapNode(
+        [in] IHTMLDOMNode *otherNode,
+        [retval, out] IHTMLDOMNode **swappedNode);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
+    HRESULT replaceNode(
+        [in] IHTMLDOMNode *replacement,
+        [retval, out] IHTMLDOMNode **replaced);
+
+    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
+    HRESULT appendChild(
+        [in] IHTMLDOMNode *newChild,
+        [retval, out] IHTMLDOMNode **node);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
+    HRESULT nodeName([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    HRESULT nodeValue([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    HRESULT nodeValue([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
+    HRESULT firstChild([retval, out] IHTMLDOMNode **p);
+
+    [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
+    HRESULT lastChild([retval, out] IHTMLDOMNode **p);
+
+    [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
+    HRESULT previousSibling([retval, out] IHTMLDOMNode **p);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
+    HRESULT nextSibling([retval, out] IHTMLDOMNode **p);
+}
+
+/*****************************************************************************
+ *    IHTMLDOMNode2 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f80b-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLDOMNode2 : IDispatch
+{
+    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
+    HRESULT ownerDocument([retval, out] IDispatch **p);
+}
+
+/*****************************************************************************
+ *    IHTMLDOMAttribute interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f4b0-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLDOMAttribute : IDispatch
+{
+    [propget, id(DISPID_IHTMLDOMATTRIBUTE_NODENAME)]
+    HRESULT nodeName([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLDOMATTRIBUTE_NODEVALUE)]
+    HRESULT nodeValue([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOMATTRIBUTE_NODEVALUE)]
+    HRESULT nodeValue([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLDOMATTRIBUTE_SPECIFIED)]
+    HRESULT specified([retval, out] VARIANT_BOOL *p);
+}
+
+/*****************************************************************************
+ *    IHTMLDOMTextNode interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f4b1-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLDOMTextNode : IDispatch
+{
+    [propput, id(DISPID_IHTMLDOMTEXTNODE_DATA)]
+    HRESULT data([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLDOMTEXTNODE_DATA)]
+    HRESULT data([out, retval] BSTR *p);
+
+    [id(DISPID_IHTMLDOMTEXTNODE_TOSTRING)]
+    HRESULT toString([out, retval] BSTR *String);
+
+    [propget, id(DISPID_IHTMLDOMTEXTNODE_LENGTH)]
+    HRESULT length([out, retval] long *p);
+
+    [id(DISPID_IHTMLDOMTEXTNODE_SPLITTEXT)]
+    HRESULT splitText(
+            [in] long offset,
+            [out, retval] IHTMLDOMNode **pRetNode);
+}
+
+/*****************************************************************************
+ *    IHTMLDOMImplementation interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f80d-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLDOMImplementation : IDispatch
+{
+    [id(DISPID_IHTMLDOMIMPLEMENTATION_HASFEATURE)]
+    HRESULT hasFeature(
+        [in] BSTR bstrfeature,
+        [optional, in] VARIANT version,
+        [retval, out] VARIANT_BOOL *pfHasFeature);
+}
+
+/*****************************************************************************
+ *    DispHTMLDOMTextNode dispinterface
+ */
+[
+    hidden,
+    uuid(3050f565-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLDOMTextNode
+{
+properties:
+methods:
+    [propput, id(DISPID_IHTMLDOMTEXTNODE_DATA)]
+    void data(BSTR v);
+
+    [propget, id(DISPID_IHTMLDOMTEXTNODE_DATA)]
+    BSTR data();
+
+    [id(DISPID_IHTMLDOMTEXTNODE_TOSTRING)]
+    BSTR toString();
+
+    [propget, id(DISPID_IHTMLDOMTEXTNODE_LENGTH)]
+    long length();
+
+    [id(DISPID_IHTMLDOMTEXTNODE_SPLITTEXT)]
+    IHTMLDOMNode *splitText([in] long offset);
+
+    [id(DISPID_IHTMLDOMTEXTNODE2_SUBSTRINGDATA)]
+    BSTR substringData(
+            [in] long offset,
+            [in] long Count);
+
+    [id(DISPID_IHTMLDOMTEXTNODE2_APPENDDATA)]
+    void appendData([in] BSTR bstrstring);
+
+    [id(DISPID_IHTMLDOMTEXTNODE2_INSERTDATA)]
+    void insertData(
+            [in] long offset,
+            [in] BSTR bstrstring);
+
+    [id(DISPID_IHTMLDOMTEXTNODE2_DELETEDATA)]
+    void deleteData(
+            [in] long offset,
+            [in] long Count);
+
+    [id(DISPID_IHTMLDOMTEXTNODE2_REPLACEDATA)]
+    void replaceData(
+            [in] long offset,
+            [in] long Count,
+            [in] BSTR bstrstring);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
+    long nodeType();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
+    IHTMLDOMNode *parentNode();
+
+    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
+    VARIANT_BOOL hasChildNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
+    IDispatch *childNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
+    IDispatch *attributes();
+
+    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
+    IHTMLDOMNode *insertBefore(
+            [in] IHTMLDOMNode *newChild,
+            [in, optional] VARIANT refChild);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
+    IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
+    IHTMLDOMNode *replaceChild(
+            [in] IHTMLDOMNode *newChild,
+            [in] IHTMLDOMNode *oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_CLONENODE)]
+    IHTMLDOMNode* cloneNode([in] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
+    IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
+    IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
+    IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
+
+    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
+    IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
+    BSTR nodeName();
+
+    [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    void nodeValue(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    VARIANT nodeValue();
+
+    [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
+    IHTMLDOMNode *firstChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
+    IHTMLDOMNode *lastChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
+    IHTMLDOMNode *previousSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
+    IHTMLDOMNode* nextSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
+    IDispatch *ownerDocument();
+}
+
+/*****************************************************************************
+ *    IHTMLDOMChildrenCollection interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f5ab-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLDOMChildrenCollection : IDispatch
+{
+    [propget, id(DISPID_IHTMLDOMCHILDRENCOLLECTION_LENGTH)]
+    HRESULT length([out, retval] long *p);
+
+    [propget, id(DISPID_IHTMLDOMCHILDRENCOLLECTION__NEWENUM), hidden, restricted]
+    HRESULT _newEnum([out, retval] IUnknown **p);
+
+    [id(DISPID_IHTMLDOMCHILDRENCOLLECTION_ITEM)]
+    HRESULT item(
+            [in] long index,
+            [out, retval] IDispatch **ppItem);
+}
+
+/*****************************************************************************
+ *    DispDOMChildrenCollection dispinterface
+ */
+[
+    hidden,
+    uuid(3050f577-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispDOMChildrenCollection
+{
+properties:
+methods:
+    [propget, id(DISPID_IHTMLDOMCHILDRENCOLLECTION_LENGTH)]
+    long length();
+
+    [propget, id(DISPID_IHTMLDOMCHILDRENCOLLECTION__NEWENUM), hidden, restricted]
+    IUnknown *_newEnum();
+
+    [id(DISPID_IHTMLDOMCHILDRENCOLLECTION_ITEM)]
+    IDispatch *item([in] long index);
+}
+
+interface IHTMLElementCollection;
+
+/*****************************************************************************
+ *    IHTMLElement interface
+ */
+[
+    odl,
+    dual,
+    oleautomation,
+    uuid(3050f1FF-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLElement : IDispatch
+{
+    [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
+    HRESULT setAttribute(
+        [in] BSTR strAttributeName,
+        [in] VARIANT AttributeValue,
+        [defaultvalue(1), in] LONG lFlags);
+
+    [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
+    HRESULT getAttribute(
+        [in] BSTR strAttributeName,
+        [defaultvalue(0), in] LONG lFlags,
+        [retval, out] VARIANT *AttributeValue);
+
+    [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
+    HRESULT removeAttribute(
+        [in] BSTR strAttributeName,
+        [defaultvalue(1), in] LONG lFlags,
+        [retval, out] VARIANT_BOOL *pfSuccess);
+
+    [propput, id(DISPID_IHTMLELEMENT_CLASSNAME)]
+    HRESULT className([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_CLASSNAME)]
+    HRESULT className([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ID)]
+    HRESULT id([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ID)]
+    HRESULT id([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
+    HRESULT tagName([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
+    HRESULT parentElement([retval, out] IHTMLElement **p);
+
+    [propget, id(DISPID_IHTMLELEMENT_STYLE)]
+    HRESULT style([retval, out] IHTMLStyle **p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONHELP)]
+    HRESULT onhelp([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONHELP)]
+    HRESULT onhelp([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONCLICK)]
+    HRESULT onclick([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONCLICK)]
+    HRESULT onclick([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK)]
+    HRESULT ondblclick([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK)]
+    HRESULT ondblclick([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN)]
+    HRESULT onkeydown([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN)]
+    HRESULT onkeydown([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYUP)]
+    HRESULT onkeyup([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYUP)]
+    HRESULT onkeyup([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS)]
+    HRESULT onkeypress([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS)]
+    HRESULT onkeypress([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT)]
+    HRESULT onmouseout([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT)]
+    HRESULT onmouseout([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER)]
+    HRESULT onmouseover([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER)]
+    HRESULT onmouseover([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE)]
+    HRESULT onmousemove([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE)]
+    HRESULT onmousemove([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN)]
+    HRESULT onmousedown([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN)]
+    HRESULT onmousedown([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP)]
+    HRESULT onmouseup([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP)]
+    HRESULT onmouseup([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
+    HRESULT document([retval, out] IDispatch **p);
+
+    [propput, id(DISPID_IHTMLELEMENT_TITLE)]
+    HRESULT title([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_TITLE)]
+    HRESULT title([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_LANGUAGE)]
+    HRESULT language([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANGUAGE)]
+    HRESULT language([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART)]
+    HRESULT onselectstart([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART)]
+    HRESULT onselectstart([retval, out] VARIANT *p);
+
+    [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
+    HRESULT scrollIntoView([optional, in] VARIANT varargStart);
+
+    [id(DISPID_IHTMLELEMENT_CONTAINS)]
+    HRESULT contains(
+        [in] IHTMLElement *pChild,
+        [retval, out] VARIANT_BOOL *pfResult);
+
+    [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX)]
+    HRESULT sourceIndex([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
+    HRESULT recordNumber([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_LANG)]
+    HRESULT lang([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANG)]
+    HRESULT lang([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
+    HRESULT offsetLeft([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
+    HRESULT offsetTop([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
+    HRESULT offsetWidth([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
+    HRESULT offsetHeight([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
+    HRESULT offsetParent([retval, out] IHTMLElement **p);
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    HRESULT innerHTML([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    HRESULT innerHTML([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    HRESULT innerText([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    HRESULT innerText([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    HRESULT outerHTML([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    HRESULT outerHTML([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    HRESULT outerText([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    HRESULT outerText([retval, out] BSTR *p);
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
+    HRESULT insertAdjacentHTML([in] BSTR where, [in] BSTR html);
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
+    HRESULT insertAdjacentText([in] BSTR where, [in] BSTR text);
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
+    HRESULT parentTextEdit([retval, out] IHTMLElement **p);
+
+    [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
+    HRESULT isTextEdit([retval, out] VARIANT_BOOL *p);
+
+    [id(DISPID_IHTMLELEMENT_CLICK)]
+    HRESULT click();
+
+    [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
+    HRESULT filters([retval, out] IHTMLFiltersCollection **p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART)]
+    HRESULT ondragstart([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART)]
+    HRESULT ondragstart([retval, out] VARIANT *p);
+
+    [id(DISPID_IHTMLELEMENT_TOSTRING)]
+    HRESULT toString([retval, out] BSTR *String);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE)]
+    HRESULT onbeforeupdate([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE)]
+    HRESULT onbeforeupdate([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE)]
+    HRESULT onafterupdate([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE)]
+    HRESULT onafterupdate([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE)]
+    HRESULT onerrorupdate([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE)]
+    HRESULT onerrorupdate([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT)]
+    HRESULT onrowexit([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT)]
+    HRESULT onrowexit([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWENTER)]
+    HRESULT onrowenter([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWENTER)]
+    HRESULT onrowenter([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED)]
+    HRESULT ondatasetchanged([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED)]
+    HRESULT ondatasetchanged([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE)]
+    HRESULT ondataavailable([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE)]
+    HRESULT ondataavailable([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE)]
+    HRESULT ondatasetcomplete([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE)]
+    HRESULT ondatasetcomplete([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE)]
+    HRESULT onfilterchange([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE)]
+    HRESULT onfilterchange([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
+    HRESULT children([retval, out] IDispatch **p);
+
+    [propget, id(DISPID_IHTMLELEMENT_ALL)]
+    HRESULT all([retval, out] IDispatch **p);
+}
+
+/*****************************************************************************
+ *    IHTMLElement2 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f434-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLElement2 : IDispatch
+{
+    [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
+    HRESULT scopeName([retval, out] BSTR *p);
+
+    [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
+    HRESULT setCapture([defaultvalue(-1), in] VARIANT_BOOL containerCapture);
+
+    [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
+    HRESULT releaseCapture();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    HRESULT onlosecapture([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    HRESULT onlosecapture([retval, out] VARIANT *p);
+
+    [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
+    HRESULT componentFromPoint(
+        [in] long x,
+        [in] long y,
+        [retval, out] BSTR *component);
+
+    [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
+    HRESULT doScroll([optional, in] VARIANT component);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    HRESULT onscroll([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    HRESULT onscroll([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    HRESULT ondrag([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    HRESULT ondrag([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    HRESULT ondragend([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    HRESULT ondragend([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    HRESULT ondragenter([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    HRESULT ondragenter([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    HRESULT ondragover([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    HRESULT ondragover([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    HRESULT ondragleave([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    HRESULT ondragleave([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+    HRESULT ondrop([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+    HRESULT ondrop([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    HRESULT onbeforecut([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    HRESULT onbeforecut([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    HRESULT oncut([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    HRESULT oncut([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    HRESULT onbeforecopy([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    HRESULT onbeforecopy([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    HRESULT oncopy([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    HRESULT oncopy([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+    HRESULT onbeforepaste([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+    HRESULT onbeforepaste([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    HRESULT onpaste([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    HRESULT onpaste([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
+    HRESULT currentStyle([retval, out] IHTMLCurrentStyle **p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    HRESULT onpropertychange([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    HRESULT onpropertychange([retval, out] VARIANT *p);
+
+    [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
+    HRESULT getClientRects([retval, out] IHTMLRectCollection **pRectCol);
+
+    [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
+    HRESULT getBoundingClientRect([retval, out] IHTMLRect **pRect);
+
+    [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
+    HRESULT setExpression(
+        [in] BSTR propname,
+        [in] BSTR expression,
+        [defaultvalue(""), in] BSTR language);
+
+    [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
+    HRESULT getExpression(
+        [in] BSTR propname,
+        [retval, out] VARIANT *expression);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
+    HRESULT removeExpression(
+        [in] BSTR propname,
+        [retval, out] VARIANT_BOOL *pfSuccess);
+
+    [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    HRESULT tabIndex([in] short v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    HRESULT tabIndex([retval, out] short *p);
+
+    [id(DISPID_IHTMLELEMENT2_FOCUS)]
+    HRESULT focus();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    HRESULT accessKey([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    HRESULT accessKey([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+    HRESULT onblur([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+    HRESULT onblur([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    HRESULT onfocus([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    HRESULT onfocus([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    HRESULT onresize([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    HRESULT onresize([retval, out] VARIANT *p);
+
+    [id(DISPID_IHTMLELEMENT2_BLUR)]
+    HRESULT blur();
+
+    [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
+    HRESULT addFilter([in] IUnknown *pUnk);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
+    HRESULT removeFilter([in] IUnknown *pUnk);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
+    HRESULT clientHeight([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
+    HRESULT clientWidth([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
+    HRESULT clientTop([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
+    HRESULT clientLeft([retval, out] long *p);
+
+    [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
+    HRESULT attachEvent(
+        [in] BSTR event,
+        [in] IDispatch *pDisp,
+        [retval, out] VARIANT_BOOL *pfResult);
+
+    [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
+    HRESULT detachEvent(
+        [in] BSTR event,
+        [in] IDispatch *pDisp);
+
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
+    HRESULT readyState([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    HRESULT onreadystatechange([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    HRESULT onreadystatechange([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    HRESULT onrowsdelete([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    HRESULT onrowsdelete([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+    HRESULT onrowsinserted([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+    HRESULT onrowsinserted([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+    HRESULT oncellchange([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+    HRESULT oncellchange([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    HRESULT dir([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    HRESULT dir([retval, out] BSTR *p);
+
+    [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
+    HRESULT createControlRange([retval, out] IDispatch **range);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
+    HRESULT scrollHeight([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
+    HRESULT scrollWidth([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    HRESULT scrollTop([in] long v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    HRESULT scrollTop([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    HRESULT scrollLeft([in] long v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    HRESULT scrollLeft([retval, out] long *p);
+
+    [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
+    HRESULT clearAttributes();
+
+    [id(DISPID_IHTMLELEMENT2_MERGEATTRIBUTES)]
+    HRESULT mergeAttributes([in] IHTMLElement *mergeThis);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    HRESULT oncontextmenu([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    HRESULT oncontextmenu([retval, out] VARIANT *p);
+
+    [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
+    HRESULT insertAdjacentElement(
+        [in] BSTR where,
+        [in] IHTMLElement *insertedElement,
+        [retval, out] IHTMLElement **inserted);
+
+    [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
+    HRESULT applyElement(
+        [in] IHTMLElement *apply,
+        [in] BSTR where,
+        [retval, out] IHTMLElement **applied);
+
+    [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
+    HRESULT getAdjacentText(
+        [in] BSTR where,
+        [retval, out] BSTR *text);
+
+    [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
+    HRESULT replaceAdjacentText(
+        [in] BSTR where,
+        [in] BSTR newText,
+        [retval, out] BSTR *oldText);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
+    HRESULT canHaveChildren([retval, out] VARIANT_BOOL *p);
+
+    [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
+    HRESULT addBehavior(
+        [in] BSTR bstrUrl,
+        [optional, in] VARIANT *pvarFactory,
+        [retval, out] long *pCookie);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
+    HRESULT removeBehavior(
+        [in] long cookie,
+        [retval, out] VARIANT_BOOL *pfResult);
+
+    [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
+    HRESULT runtimeStyle([retval, out] IHTMLStyle **p);
+
+    [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
+    HRESULT behaviorUrns([retval, out] IDispatch **p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    HRESULT tagUrn([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    HRESULT tagUrn([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    HRESULT onbeforeeditfocus([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    HRESULT onbeforeeditfocus([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
+    HRESULT readyStateValue([retval, out] long *p);
+
+    [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
+    HRESULT getElementsByTagName(
+        [in] BSTR v,
+        [retval, out] IHTMLElementCollection **pelColl);
+}
+
+
+/*****************************************************************************
+ *    IHTMLElement3 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f673-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLElement3 : IDispatch
+{
+    [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] HRESULT mergeAttributes([in]
+    IHTMLElement* mergeThis,[optional, in] VARIANT* pvarFlags);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
+    HRESULT isMultiLine([retval, out] VARIANT_BOOL * p);
+
+    [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
+    HRESULT canHaveHTML([retval, out] VARIANT_BOOL * p);
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    HRESULT onlayoutcomplete([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    HRESULT onlayoutcomplete([retval, out] VARIANT * p);
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    HRESULT onpage([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    HRESULT onpage([retval, out] VARIANT * p);
+
+    [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    HRESULT inflateBlock([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    HRESULT inflateBlock([retval, out] VARIANT_BOOL * p);
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    HRESULT onbeforedeactivate([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    HRESULT onbeforedeactivate([retval, out] VARIANT * p);
+
+    [id(DISPID_IHTMLELEMENT3_SETACTIVE)] HRESULT setActive();
+
+    [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    HRESULT contentEditable([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    HRESULT contentEditable([retval, out] BSTR * p);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
+    HRESULT isContentEditable([retval, out] VARIANT_BOOL * p);
+
+    [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    HRESULT hideFocus([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    HRESULT hideFocus([retval, out] VARIANT_BOOL * p);
+
+    [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    HRESULT disabled([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    HRESULT disabled([retval, out] VARIANT_BOOL * p);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
+    HRESULT isDisabled([retval, out] VARIANT_BOOL * p);
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    HRESULT onmove([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    HRESULT onmove([retval, out] VARIANT * p);
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    HRESULT oncontrolselect([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    HRESULT oncontrolselect([retval, out] VARIANT * p);
+
+    [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
+    HRESULT fireEvent(
+        [in] BSTR bstrEventName,
+        [optional, in] VARIANT* pvarEventObject,
+        [retval, out] VARIANT_BOOL* pfCancelled);
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+    HRESULT onresizestart([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+    HRESULT onresizestart([retval, out] VARIANT * p);
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    HRESULT onresizeend([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    HRESULT onresizeend([retval, out] VARIANT * p);
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    HRESULT onmovestart([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    HRESULT onmovestart([retval, out] VARIANT * p);
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    HRESULT onmoveend([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    HRESULT onmoveend([retval, out] VARIANT * p);
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    HRESULT onmouseenter([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    HRESULT onmouseenter([retval, out] VARIANT * p);
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    HRESULT onmouseleave([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    HRESULT onmouseleave([retval, out] VARIANT * p);
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+    HRESULT onactivate([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+    HRESULT onactivate([retval, out] VARIANT * p);
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    HRESULT ondeactivate([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    HRESULT ondeactivate([retval, out] VARIANT * p);
+
+    [id(DISPID_IHTMLELEMENT3_DRAGDROP)] HRESULT dragDrop([retval, out]
+    VARIANT_BOOL* pfRet);
+
+    [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
+    HRESULT glyphMode([retval, out] LONG * p);
+};
+/*****************************************************************************
+ *    IHTMLElement4 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f80f-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLElement4 : IDispatch
+{
+    [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    HRESULT onmousewheel([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    HRESULT onmousewheel([retval, out] VARIANT * p);
+
+    [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
+    HRESULT normalize();
+
+    [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
+    HRESULT getAttributeNode([in] BSTR bstrname,
+        [retval, out] IHTMLDOMAttribute** ppAttribute);
+
+    [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
+    HRESULT setAttributeNode(
+        [in] IHTMLDOMAttribute* pattr,
+        [retval, out] IHTMLDOMAttribute** ppretAttribute);
+
+    [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
+    HRESULT removeAttributeNode(
+        [in] IHTMLDOMAttribute* pattr,
+        [retval, out] IHTMLDOMAttribute** ppretAttribute);
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    HRESULT onbeforeactivate([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    HRESULT onbeforeactivate([retval, out] VARIANT * p);
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    HRESULT onfocusin([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    HRESULT onfocusin([retval, out] VARIANT * p);
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    HRESULT onfocusout([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    HRESULT onfocusout([retval, out] VARIANT * p);
+};
+
+/*****************************************************************************
+ *    IHTMLGenericElement interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f4b7-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLGenericElement : IDispatch
+{
+    [propget, id(DISPID_IHTMLGENERICELEMENT_RECORDSET), hidden]
+    HRESULT recordset([out, retval] IDispatch **p);
+
+    [id(DISPID_IHTMLGENERICELEMENT_NAMEDRECORDSET)]
+    HRESULT namedRecordset(
+            [in] BSTR dataMember,
+            [in, optional] VARIANT *hierarchy,
+            [out, retval] IDispatch **ppRecordset);
+}
+
+/*****************************************************************************
+ *    DispHTMLGenericElement dispinterface
+ */
+[
+    hidden,
+    uuid(3050f563-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLGenericElement
+{
+properties:
+methods:
+    [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
+    void setAttribute(
+            [in] BSTR strAttributeName,
+            [in] VARIANT AttributeValue,
+            [in, defaultvalue(1)] LONG lFlags);
+
+    [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
+    VARIANT getAttribute(
+             [in] BSTR strAttributeName,
+             [in, defaultvalue(0)] LONG lFlags);
+
+    [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
+    VARIANT_BOOL removeAttribute(
+            [in] BSTR strAttributeName,
+            [in, defaultvalue(1)] LONG lFlags);
+
+    [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+    void className(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+    BSTR className();
+
+    [propput, id(DISPID_IHTMLELEMENT_ID), bindable]
+    void id(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ID), bindable]
+    BSTR id();
+
+    [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
+    BSTR tagName();
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
+    IHTMLElement *parentElement();
+
+    [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]
+    IHTMLStyle *style();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+    void onhelp(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+    VARIANT onhelp();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+    void onclick(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+    VARIANT onclick();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+    void ondblclick(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+    VARIANT ondblclick();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+    void onkeydown(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+    VARIANT onkeydown();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+    void onkeyup(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+    VARIANT onkeyup();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+    void onkeypress(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+    VARIANT onkeypress();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+    void onmouseout(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+    VARIANT onmouseout();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+    void onmouseover(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+    VARIANT onmouseover();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+    void onmousemove(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+    VARIANT onmousemove();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+    void onmousedown(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+    VARIANT onmousedown();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+    void onmouseup(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+    VARIANT onmouseup();
+
+    [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
+    IDispatch *document();
+
+    [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+    void title(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+    BSTR title();
+
+    [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+    void language(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+    BSTR language();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+    void onselectstart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+    VARIANT onselectstart();
+
+    [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
+    void scrollIntoView([in, optional] VARIANT varargStart);
+
+    [id(DISPID_IHTMLELEMENT_CONTAINS)]
+    VARIANT_BOOL contains([in] IHTMLElement *pChild);
+
+    [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]
+    long sourceIndex();
+
+    [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
+    VARIANT recordNumber();
+
+    [propput, id(DISPID_IHTMLELEMENT_LANG)]
+    void lang(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANG)]
+    BSTR lang();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
+    long offsetLeft();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
+    long offsetTop();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
+    long offsetWidth();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
+    long offsetHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
+    IHTMLElement *offsetParent();
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    void innerHTML(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    BSTR innerHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    void innerText(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    BSTR innerText();
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    void outerHTML(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    BSTR outerHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    void outerText(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    BSTR outerText();
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
+    void insertAdjacentHTML(
+            [in] BSTR where,
+            [in] BSTR html);
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
+    void insertAdjacentText(
+            [in] BSTR where,
+            [in] BSTR text);
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
+    IHTMLElement *parentTextEdit();
+
+    [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
+    VARIANT_BOOL isTextEdit();
+
+    [id(DISPID_IHTMLELEMENT_CLICK)]
+    void click();
+
+    [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
+    IHTMLFiltersCollection *filters();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+    void ondragstart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+    VARIANT ondragstart();
+
+    [id(DISPID_IHTMLELEMENT_TOSTRING)]
+    BSTR toString();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+    void onbeforeupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+    VARIANT onbeforeupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+    void onafterupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+    VARIANT onafterupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+    void onerrorupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+    VARIANT onerrorupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+    void onrowexit(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+    VARIANT onrowexit();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+    void onrowenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+    VARIANT onrowenter();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+    void ondatasetchanged(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+    VARIANT ondatasetchanged();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+    void ondataavailable(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+    VARIANT ondataavailable();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+    void ondatasetcomplete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+    VARIANT ondatasetcomplete();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+    void onfilterchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+    VARIANT onfilterchange();
+
+    [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
+    IDispatch *children();
+
+    [propget, id(DISPID_IHTMLELEMENT_ALL)]
+    IDispatch *all();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
+    BSTR scopeName();
+
+    [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
+    void setCapture([in, defaultvalue(-1)] VARIANT_BOOL containerCapture);
+
+    [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
+    void releaseCapture();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    void onlosecapture(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    VARIANT onlosecapture();
+
+    [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
+    BSTR componentFromPoint(
+            [in] long x,
+            [in] long y);
+
+    [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
+    void doScroll([in, optional] VARIANT component);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    void onscroll(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    VARIANT onscroll();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    void ondrag(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    VARIANT ondrag();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    void ondragend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    VARIANT ondragend();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    void ondragenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    VARIANT ondragenter();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    void ondragover(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    VARIANT ondragover();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    void ondragleave(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    VARIANT ondragleave();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+    void ondrop(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+    VARIANT ondrop();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    void onbeforecut(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    VARIANT onbeforecut();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    void oncut(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    VARIANT oncut();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    void onbeforecopy(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    VARIANT onbeforecopy();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    void oncopy(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    VARIANT oncopy();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+    void onbeforepaste(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+    VARIANT onbeforepaste();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    void onpaste(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    VARIANT onpaste();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
+    IHTMLCurrentStyle *currentStyle();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    void onpropertychange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    VARIANT onpropertychange();
+
+    [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
+    IHTMLRectCollection *getClientRects();
+
+    [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
+    IHTMLRect *getBoundingClientRect();
+
+    [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
+    void setExpression(
+            [in] BSTR propname,
+            [in] BSTR expression,
+            [in, defaultvalue("")] BSTR language);
+
+    [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
+    VARIANT getExpression([in] BSTR propname);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
+    VARIANT_BOOL removeExpression([in] BSTR propname);
+
+    [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    void tabIndex(short v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    short tabIndex();
+
+    [id(DISPID_IHTMLELEMENT2_FOCUS)]
+    void focus();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    void accessKey(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    BSTR accessKey();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+    void onblur(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+    VARIANT onblur();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    void onfocus(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    VARIANT onfocus();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    void onresize(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    VARIANT onresize();
+
+    [id(DISPID_IHTMLELEMENT2_BLUR)]
+    void blur();
+
+    [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
+    void addFilter([in] IUnknown *pUnk);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
+    void removeFilter([in] IUnknown *pUnk);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
+    long clientHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
+    long clientWidth();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
+    long clientTop();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
+    long clientLeft();
+
+    [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
+    VARIANT_BOOL attachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp);
+
+    [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
+    void detachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp);
+
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
+    VARIANT readyState();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    void onreadystatechange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    VARIANT onreadystatechange();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    void onrowsdelete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    VARIANT onrowsdelete();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+    void onrowsinserted(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+     VARIANT onrowsinserted();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+     void oncellchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+    VARIANT oncellchange();
+
+    [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    void dir(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    BSTR dir();
+
+    [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
+    IDispatch *createControlRange();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
+    long scrollHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
+    long scrollWidth();
+
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    void scrollTop(long v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    long scrollTop();
+
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    void scrollLeft(long v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    long scrollLeft();
+
+    [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
+    void clearAttributes();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    void oncontextmenu(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    VARIANT oncontextmenu();
+
+    [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
+    IHTMLElement *insertAdjacentElement(
+            [in] BSTR where,
+            [in] IHTMLElement *insertedElement);
+
+    [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
+    IHTMLElement *applyElement(
+            [in] IHTMLElement *apply,
+            [in] BSTR where);
+
+    [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
+    BSTR getAdjacentText([in] BSTR where);
+
+    [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
+    BSTR replaceAdjacentText(
+            [in] BSTR where,
+            [in] BSTR newText);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
+    VARIANT_BOOL canHaveChildren();
+
+    [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
+    long addBehavior(
+            [in] BSTR bstrUrl,
+            [in, optional] VARIANT *pvarFactory);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
+    VARIANT_BOOL removeBehavior([in] long cookie);
+
+    [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
+    IHTMLStyle *runtimeStyle();
+
+    [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
+    IDispatch *behaviorUrns();
+
+    [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    void tagUrn(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    BSTR tagUrn();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    void onbeforeeditfocus(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    VARIANT onbeforeeditfocus();
+
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
+    long readyStateValue();
+
+    [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
+    IHTMLElementCollection *getElementsByTagName([in] BSTR v);
+
+    [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]
+    void mergeAttributes(
+            [in] IHTMLElement *mergeThis,
+            [in, optional] VARIANT *pvarFlags);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
+    VARIANT_BOOL isMultiLine();
+
+    [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
+    VARIANT_BOOL canHaveHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    void onlayoutcomplete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    VARIANT onlayoutcomplete();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    void onpage(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    VARIANT onpage();
+
+    [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    void inflateBlock(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    VARIANT_BOOL inflateBlock();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    void onbeforedeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    VARIANT onbeforedeactivate();
+
+    [id(DISPID_IHTMLELEMENT3_SETACTIVE)]
+    void setActive();
+
+    [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    void contentEditable(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    BSTR contentEditable();
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
+    VARIANT_BOOL isContentEditable();
+
+    [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    void hideFocus(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    VARIANT_BOOL hideFocus();
+
+    [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    void disabled(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    VARIANT_BOOL disabled();
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
+    VARIANT_BOOL isDisabled();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    void onmove(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    VARIANT onmove();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    void oncontrolselect(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    VARIANT oncontrolselect();
+
+    [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
+    VARIANT_BOOL fireEvent(
+            [in] BSTR bstrEventName,
+            [in, optional] VARIANT *pvarEventObject);
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+    void onresizestart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+    VARIANT onresizestart();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    void onresizeend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    VARIANT onresizeend();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    void onmovestart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    VARIANT onmovestart();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    void onmoveend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    VARIANT onmoveend();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    void onmouseenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    VARIANT onmouseenter();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    void onmouseleave(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    VARIANT onmouseleave();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+    void onactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+    VARIANT onactivate();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    void ondeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    VARIANT ondeactivate();
+
+    [id(DISPID_IHTMLELEMENT3_DRAGDROP)]
+    VARIANT_BOOL dragDrop();
+
+    [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
+    LONG glyphMode();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    void onmousewheel(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    VARIANT onmousewheel();
+
+    [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
+    void normalize();
+
+    [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
+    IHTMLDOMAttribute *getAttributeNode([in] BSTR bstrname);
+
+    [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
+    IHTMLDOMAttribute *setAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+    [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
+    IHTMLDOMAttribute *removeAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    void onbeforeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    VARIANT onbeforeactivate();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    void onfocusin(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    VARIANT onfocusin();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    void onfocusout(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    VARIANT onfocusout();
+
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
+    long uniqueNumber();
+
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
+    BSTR uniqueID();
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
+    long nodeType();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
+    IHTMLDOMNode *parentNode();
+
+    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
+    VARIANT_BOOL hasChildNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
+    IDispatch *childNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
+    IDispatch *attributes();
+
+    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
+    IHTMLDOMNode *insertBefore(
+            [in] IHTMLDOMNode *newChild,
+            [in, optional] VARIANT refChild);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
+    IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
+    IHTMLDOMNode *replaceChild(
+            [in] IHTMLDOMNode *newChild,
+            [in] IHTMLDOMNode *oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_CLONENODE)]
+    IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
+    IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
+    IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
+    IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
+
+    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
+    IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
+    BSTR nodeName();
+
+    [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    void nodeValue(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    VARIANT nodeValue();
+
+    [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
+    IHTMLDOMNode *firstChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
+    IHTMLDOMNode *lastChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
+    IHTMLDOMNode *previousSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
+    IHTMLDOMNode *nextSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
+    IDispatch *ownerDocument();
+
+    [propget, id(DISPID_IHTMLGENERICELEMENT_RECORDSET), hidden]
+    IDispatch *recordset();
+
+    [id(DISPID_IHTMLGENERICELEMENT_NAMEDRECORDSET)]
+    IDispatch *namedRecordset(
+            [in] BSTR dataMember,
+            [in, optional] VARIANT *hierarchy);
+}
+
+/*****************************************************************************
+ *    IHTMLStyleSheetRule interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F357-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLStyleSheetRule : IDispatch
+{
+    [propput, id(DISPID_IHTMLSTYLESHEETRULE_SELECTORTEXT)]
+    HRESULT selectorText([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLESHEETRULE_SELECTORTEXT)]
+    HRESULT selectorText([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLSTYLESHEETRULE_STYLE)]
+    HRESULT style([retval, out] IHTMLRuleStyle **p);
+
+    [propget, id(DISPID_IHTMLSTYLESHEETRULE_READONLY)]
+    HRESULT readOnly([retval, out] VARIANT_BOOL *p);
+}
+
+/*****************************************************************************
+ *    IHTMLStyleSheetRulesCollection interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F2E5-98B5-11Cf-BB82-00AA00BDCE0B)
+]
+interface IHTMLStyleSheetRulesCollection : IDispatch
+{
+    [propget, id(DISPID_IHTMLSTYLESHEETRULESCOLLECTION_LENGTH)]
+    HRESULT length([retval, out] long *p);
+
+    [id(DISPID_IHTMLSTYLESHEETRULESCOLLECTION_ITEM)]
+    HRESULT item(
+        [in] long index,
+        [retval, out] IHTMLStyleSheetRule **ppHTMLStyleSheetRule);
+}
+
+/*****************************************************************************
+ *    IHTMLStyleSheet interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F2E3-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLStyleSheet : IDispatch
+{
+    [propput, id(DISPID_IHTMLSTYLESHEET_TITLE)]
+    HRESULT title([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLESHEET_TITLE)]
+    HRESULT title([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLSTYLESHEET_PARENTSTYLESHEET)]
+    HRESULT parentStyleSheet([retval, out] IHTMLStyleSheet **p);
+
+    [propget, id(DISPID_IHTMLSTYLESHEET_OWNINGELEMENT)]
+    HRESULT owningElement([retval, out] IHTMLElement **p);
+
+    [propput, id(DISPID_IHTMLSTYLESHEET_DISABLED)]
+    HRESULT disabled([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLSTYLESHEET_DISABLED)]
+    HRESULT disabled([retval, out] VARIANT_BOOL *p);
+
+    [propget, id(DISPID_IHTMLSTYLESHEET_READONLY)]
+    HRESULT readOnly([retval, out] VARIANT_BOOL *p);
+
+    [propget, id(DISPID_IHTMLSTYLESHEET_IMPORTS)]
+    HRESULT imports([retval, out] IHTMLStyleSheetsCollection **p);
+
+    [propput, id(DISPID_IHTMLSTYLESHEET_HREF)]
+    HRESULT href([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLESHEET_HREF)]
+    HRESULT href([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLSTYLESHEET_TYPE)]
+    HRESULT type([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLSTYLESHEET_ID)]
+    HRESULT id([retval, out] BSTR *p);
+
+    [id(DISPID_IHTMLSTYLESHEET_ADDIMPORT)]
+    HRESULT addImport(
+        [in] BSTR bstrURL,
+        [defaultvalue(-1), in] long lIndex,
+        [retval, out] long *plIndex);
+
+    [id(DISPID_IHTMLSTYLESHEET_ADDRULE)]
+    HRESULT addRule(
+        [in] BSTR bstrSelector,
+        [in] BSTR bstrStyle,
+        [defaultvalue(-1), in] long lIndex,
+        [retval, out] long *plNewIndex);
+
+    [id(DISPID_IHTMLSTYLESHEET_REMOVEIMPORT)]
+    HRESULT removeImport([in] long lIndex);
+
+    [id(DISPID_IHTMLSTYLESHEET_REMOVERULE)]
+    HRESULT removeRule([in] long lIndex);
+
+    [propput, id(DISPID_IHTMLSTYLESHEET_MEDIA)]
+    HRESULT media([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLESHEET_MEDIA)]
+    HRESULT media([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLESHEET_CSSTEXT)]
+    HRESULT cssText([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLESHEET_CSSTEXT)]
+    HRESULT cssText([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLSTYLESHEET_RULES)]
+    HRESULT rules([retval, out] IHTMLStyleSheetRulesCollection **p);
+}
+
+/*****************************************************************************
+ *    IHTMLStyleSheetsCollection interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F37E-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLStyleSheetsCollection : IDispatch
+{
+    [propget, id(DISPID_IHTMLSTYLESHEETSCOLLECTION_LENGTH)]
+    HRESULT length([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLSTYLESHEETSCOLLECTION__NEWENUM)]
+    HRESULT _newEnum([retval, out] IUnknown **p);
+
+    [id(DISPID_IHTMLSTYLESHEETSCOLLECTION_ITEM)]
+    HRESULT item(
+        [in] VARIANT *pvarIndex,
+        [retval, out] VARIANT *pvarResult);
+}
+
+/*****************************************************************************
+ *    IHTMLTxtRange interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f220-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLTxtRange : IDispatch
+{
+    [propget, id(DISPID_IHTMLTXTRANGE_HTMLTEXT)]
+    HRESULT htmlText([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLTXTRANGE_TEXT)]
+    HRESULT text([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLTXTRANGE_TEXT)]
+    HRESULT text([retval, out] BSTR *p);
+
+    [id(DISPID_IHTMLTXTRANGE_PARENTELEMENT)]
+    HRESULT parentElement([retval, out] IHTMLElement **parent);
+
+    [id(DISPID_IHTMLTXTRANGE_DUPLICATE)]
+    HRESULT duplicate([retval, out] IHTMLTxtRange **Duplicate);
+
+    [id(DISPID_IHTMLTXTRANGE_INRANGE)]
+    HRESULT inRange(
+        [in] IHTMLTxtRange *Range,
+        [retval, out] VARIANT_BOOL *InRange);
+
+    [id(DISPID_IHTMLTXTRANGE_ISEQUAL)]
+    HRESULT isEqual(
+        [in] IHTMLTxtRange *Range,
+        [retval, out] VARIANT_BOOL *IsEqual);
+
+    [id(DISPID_IHTMLTXTRANGE_SCROLLINTOVIEW)]
+    HRESULT scrollIntoView([defaultvalue(-1), in] VARIANT_BOOL fStart);
+
+    [id(DISPID_IHTMLTXTRANGE_COLLAPSE)]
+    HRESULT collapse([defaultvalue(-1), in] VARIANT_BOOL Start);
+
+    [id(DISPID_IHTMLTXTRANGE_EXPAND)]
+    HRESULT expand(
+        [in] BSTR Unit,
+        [retval, out] VARIANT_BOOL *Success);
+
+    [id(DISPID_IHTMLTXTRANGE_MOVE)]
+    HRESULT move(
+        [in] BSTR Unit,
+        [defaultvalue(1), in] long Count,
+        [retval, out] long *ActualCount);
+
+    [id(DISPID_IHTMLTXTRANGE_MOVESTART)]
+    HRESULT moveStart(
+        [in] BSTR Unit,
+        [defaultvalue(1), in] long Count,
+        [retval, out] long *ActualCount);
+
+    [id(DISPID_IHTMLTXTRANGE_MOVEEND)]
+    HRESULT moveEnd(
+        [in] BSTR Unit,
+        [defaultvalue(1), in] long Count,
+        [retval, out] long *ActualCount);
+
+    [id(DISPID_IHTMLTXTRANGE_SELECT)]
+    HRESULT select();
+
+    [id(DISPID_IHTMLTXTRANGE_PASTEHTML)]
+    HRESULT pasteHTML([in] BSTR html);
+
+    [id(DISPID_IHTMLTXTRANGE_MOVETOELEMENTTEXT)]
+    HRESULT moveToElementText([in] IHTMLElement *element);
+
+    [id(DISPID_IHTMLTXTRANGE_SETENDPOINT)]
+    HRESULT setEndPoint(
+        [in] BSTR how,
+        [in] IHTMLTxtRange *SourceRange);
+
+    [id(DISPID_IHTMLTXTRANGE_COMPAREENDPOINTS)]
+    HRESULT compareEndPoints(
+        [in] BSTR how,
+        [in] IHTMLTxtRange *SourceRange,
+        [retval, out] long *ret);
+
+    [id(DISPID_IHTMLTXTRANGE_FINDTEXT)]
+    HRESULT findText(
+        [in] BSTR String,
+        [defaultvalue(1073741823), in] long count,
+        [defaultvalue(0), in] long Flags,
+        [retval, out] VARIANT_BOOL *Success);
+
+    [id(DISPID_IHTMLTXTRANGE_MOVETOPOINT)]
+    HRESULT moveToPoint(
+        [in] long x,
+        [in] long y);
+
+    [id(DISPID_IHTMLTXTRANGE_GETBOOKMARK)]
+    HRESULT getBookmark([retval, out] BSTR *Boolmark);
+
+    [id(DISPID_IHTMLTXTRANGE_MOVETOBOOKMARK)]
+    HRESULT moveToBookmark(
+        [in] BSTR Bookmark,
+        [retval, out] VARIANT_BOOL *Success);
+
+    [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDSUPPORTED)]
+    HRESULT queryCommandSupported(
+        [in] BSTR cmdID,
+        [retval, out] VARIANT_BOOL *pfRet);
+
+    [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDENABLED)]
+    HRESULT queryCommandEnabled(
+        [in] BSTR cmdID,
+        [retval, out] VARIANT_BOOL *pfRet);
+
+    [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDSTATE)]
+    HRESULT queryCommandState(
+        [in] BSTR cmdID,
+        [retval, out] VARIANT_BOOL *pfRet);
+
+    [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDINDETERM)]
+    HRESULT queryCommandIndeterm(
+        [in] BSTR cmdID,
+        [retval, out] VARIANT_BOOL *pfRet);
+
+    [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDTEXT)]
+    HRESULT queryCommandText(
+        [in] BSTR cmdID,
+        [retval, out] BSTR *pcmdText);
+
+    [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDVALUE)]
+    HRESULT queryCommandValue(
+        [in] BSTR cmdID,
+        [retval, out] VARIANT *pcmdValue);
+
+    [id(DISPID_IHTMLTXTRANGE_EXECCOMMAND)]
+    HRESULT execCommand(
+        [in] BSTR cmdID,
+        [defaultvalue(0), in] VARIANT_BOOL showUI,
+        [optional, in] VARIANT value,
+        [retval, out] VARIANT_BOOL *pfRet);
+
+    [id(DISPID_IHTMLTXTRANGE_EXECCOMMANDSHOWHELP)]
+    HRESULT execCommandShowHelp(
+        [in] BSTR cmdID,
+        [retval, out] VARIANT_BOOL *pfRet);
+}
+
+/*****************************************************************************
+ *    IHTMLFormElement interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F1F7-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLFormElement : IDispatch
+{
+    [propput, id(DISPID_IHTMLFORMELEMENT_ACTION)]
+    HRESULT action([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLFORMELEMENT_ACTION)]
+    HRESULT action([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLFORMELEMENT_DIR)]
+    HRESULT dir([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLFORMELEMENT_DIR)]
+    HRESULT dir([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLFORMELEMENT_ENCODING)]
+    HRESULT encoding([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLFORMELEMENT_ENCODING)]
+    HRESULT encoding([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLFORMELEMENT_METHOD)]
+    HRESULT method([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLFORMELEMENT_METHOD)]
+    HRESULT method([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLFORMELEMENT_ELEMENTS)]
+    HRESULT elements([retval, out] IDispatch **p);
+
+    [propput, id(DISPID_IHTMLFORMELEMENT_TARGET)]
+    HRESULT target([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLFORMELEMENT_TARGET)]
+    HRESULT target([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLFORMELEMENT_NAME)]
+    HRESULT name([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLFORMELEMENT_NAME)]
+    HRESULT name([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLFORMELEMENT_ONSUBMIT)]
+    HRESULT onsubmit([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLFORMELEMENT_ONSUBMIT)]
+    HRESULT onsubmit([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLFORMELEMENT_ONRESET)]
+    HRESULT onreset([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLFORMELEMENT_ONRESET)]
+    HRESULT onreset([retval, out] VARIANT *p);
+
+    [id(DISPID_IHTMLFORMELEMENT_SUBMIT)]
+    HRESULT submit();
+
+    [id(DISPID_IHTMLFORMELEMENT_RESET)]
+    HRESULT reset();
+
+    [propput, id(DISPID_IHTMLFORMELEMENT_LENGTH)]
+    HRESULT length([in] long v);
+
+    [propget, id(DISPID_IHTMLFORMELEMENT_LENGTH)]
+    HRESULT length([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLFORMELEMENT__NEWENUM)]
+    HRESULT _newEnum([retval, out] IUnknown **p);
+
+    [id(DISPID_IHTMLFORMELEMENT_ITEM)]
+    HRESULT item(
+        [optional, in] VARIANT name,
+        [optional, in] VARIANT index,
+        [retval, out] IDispatch **pdisp);
+
+    [id(DISPID_IHTMLFORMELEMENT_TAGS)]
+    HRESULT tags(
+        [in] VARIANT tagName,
+        [retval, out] IDispatch **pdisp);
+}
+
+/*****************************************************************************
+ *    IHTMLTextContainer interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f230-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLTextContainer : IDispatch
+{
+    [id(DISPID_IHTMLTEXTCONTAINER_CREATECONTROLRANGE)]
+    HRESULT createControlRange([retval, out] IDispatch **range);
+
+    [propget, id(DISPID_IHTMLTEXTCONTAINER_SCROLLHEIGHT), displaybind, bindable]
+    HRESULT scrollHeight([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLTEXTCONTAINER_SCROLLWIDTH), displaybind, bindable]
+    HRESULT scrollWidth([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLTEXTCONTAINER_SCROLLTOP), displaybind, bindable]
+    HRESULT scrollTop([in] long v);
+
+    [propget, id(DISPID_IHTMLTEXTCONTAINER_SCROLLTOP), displaybind, bindable]
+    HRESULT scrollTop([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLTEXTCONTAINER_SCROLLLEFT), displaybind, bindable]
+    HRESULT scrollLeft([in] long v);
+
+    [propget, id(DISPID_IHTMLTEXTCONTAINER_SCROLLLEFT), displaybind, bindable]
+    HRESULT scrollLeft([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLTEXTCONTAINER_ONSCROLL), displaybind, bindable]
+    HRESULT onscroll([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLTEXTCONTAINER_ONSCROLL), displaybind, bindable]
+    HRESULT onscroll([retval, out] VARIANT *p);
+}
+
+/*****************************************************************************
+ *    IHTMLImgElement interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F240-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLImgElement : IDispatch
+{
+    [propput, id(DISPID_IHTMLIMGELEMENT_ISMAP)]
+    HRESULT isMap([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_ISMAP)]
+    HRESULT isMap([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_USEMAP)]
+    HRESULT useMap([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_USEMAP)]
+    HRESULT useMap([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_MIMETYPE)]
+    HRESULT mimeType([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_FILESIZE)]
+    HRESULT fileSize([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_FILECREATEDDATE)]
+    HRESULT fileCreatedDate([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_FILEMODIFIEDDATE)]
+    HRESULT fileModifiedDate([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_FILEUPDATEDDATE)]
+    HRESULT fileUpdatedDate([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_PROTOCOL)]
+    HRESULT protocol([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_HREF)]
+    HRESULT href([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_NAMEPROP)]
+    HRESULT nameProp([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_BORDER)]
+    HRESULT border([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_BORDER)]
+    HRESULT border([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_VSPACE)]
+    HRESULT vspace([in] long v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_VSPACE)]
+    HRESULT vspace([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_HSPACE)]
+    HRESULT hspace([in] long v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_HSPACE)]
+    HRESULT hspace([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_ALT)]
+    HRESULT alt([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_ALT)]
+    HRESULT alt([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_SRC)]
+    HRESULT src([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_SRC)]
+    HRESULT src([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_LOWSRC)]
+    HRESULT lowsrc([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_LOWSRC)]
+    HRESULT lowsrc([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_VRML)]
+    HRESULT vrml([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_VRML)]
+    HRESULT vrml([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_DYNSRC)]
+    HRESULT dynsrc([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_DYNSRC)]
+    HRESULT dynsrc([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_READYSTATE)]
+    HRESULT readyState([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_COMPLETE)]
+    HRESULT complete([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_LOOP)]
+    HRESULT loop([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_LOOP)]
+    HRESULT loop([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_ALIGN)]
+    HRESULT align([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_ALIGN)]
+    HRESULT align([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_ONLOAD)]
+    HRESULT onload([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_ONLOAD)]
+    HRESULT onload([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_ONERROR)]
+    HRESULT onerror([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_ONERROR)]
+    HRESULT onerror([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_ONABORT)]
+    HRESULT onabort([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_ONABORT)]
+    HRESULT onabort([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_NAME)]
+    HRESULT name([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_NAME)]
+    HRESULT name([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_WIDTH)]
+    HRESULT width([in] long v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_WIDTH)]
+    HRESULT width([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_HEIGHT)]
+    HRESULT height([in] long v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_HEIGHT)]
+    HRESULT height([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_START)]
+    HRESULT start([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_START)]
+    HRESULT start([retval, out] BSTR *p);
+}
+
+/*****************************************************************************
+ *    IHTMLImageElementFactory interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F38E-98B5-11CF-BB82-00AAA0BDCE0B)
+]
+interface IHTMLImageElementFactory : IDispatch
+{
+    [id(DISPID_IHTMLIMAGEELEMENTFACTORY_CREATE)]
+    HRESULT create(
+        [optional, in] VARIANT width,
+        [optional, in] VARIANT height,
+        [retval, out]  IHTMLImgElement **elem);
+}
+
+/*****************************************************************************
+ *    DispHTMLImg interface
+ */
+[
+    hidden,
+    uuid(3050f51c-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLImg
+{
+properties:
+methods:
+    [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
+    void setAttribute(
+            [in] BSTR strAttributeName,
+            [in] VARIANT AttributeValue,
+            [in, defaultvalue(1)] LONG lFlags);
+
+    [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
+    VARIANT getAttribute(
+             [in] BSTR strAttributeName,
+             [in, defaultvalue(0)] LONG lFlags);
+
+    [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
+    VARIANT_BOOL removeAttribute(
+            [in] BSTR strAttributeName,
+            [in, defaultvalue(1)] LONG lFlags);
+
+    [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+    void className(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+    BSTR className();
+
+    [propput, id(DISPID_IHTMLELEMENT_ID), bindable]
+    void id(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ID), bindable]
+    BSTR id();
+
+    [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
+    BSTR tagName();
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
+    IHTMLElement *parentElement();
+
+    [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]
+    IHTMLStyle *style();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+    void onhelp(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+    VARIANT onhelp();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+    void onclick(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+    VARIANT onclick();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+    void ondblclick(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+    VARIANT ondblclick();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+    void onkeydown(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+    VARIANT onkeydown();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+    void onkeyup(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+    VARIANT onkeyup();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+    void onkeypress(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+    VARIANT onkeypress();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+    void onmouseout(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+    VARIANT onmouseout();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+    void onmouseover(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+    VARIANT onmouseover();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+    void onmousemove(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+    VARIANT onmousemove();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+    void onmousedown(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+    VARIANT onmousedown();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+    void onmouseup(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+    VARIANT onmouseup();
+
+    [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
+    IDispatch *document();
+
+    [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+    void title(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+    BSTR title();
+
+    [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+    void language(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+    BSTR language();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+    void onselectstart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+    VARIANT onselectstart();
+
+    [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
+    void scrollIntoView([in, optional] VARIANT varargStart);
+
+    [id(DISPID_IHTMLELEMENT_CONTAINS)]
+    VARIANT_BOOL contains([in] IHTMLElement *pChild);
+
+    [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]
+    long sourceIndex();
+
+    [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
+    VARIANT recordNumber();
+
+    [propput, id(DISPID_IHTMLELEMENT_LANG)]
+    void lang(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANG)]
+    BSTR lang();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
+    long offsetLeft();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
+    long offsetTop();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
+    long offsetWidth();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
+    long offsetHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
+    IHTMLElement *offsetParent();
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    void innerHTML(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    BSTR innerHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    void innerText(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    BSTR innerText();
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    void outerHTML(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    BSTR outerHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    void outerText(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    BSTR outerText();
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
+    void insertAdjacentHTML(
+            [in] BSTR where,
+            [in] BSTR html);
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
+    void insertAdjacentText(
+            [in] BSTR where,
+            [in] BSTR text);
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
+    IHTMLElement *parentTextEdit();
+
+    [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
+    VARIANT_BOOL isTextEdit();
+
+    [id(DISPID_IHTMLELEMENT_CLICK)]
+    void click();
+
+    [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
+    IHTMLFiltersCollection *filters();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+    void ondragstart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+    VARIANT ondragstart();
+
+    [id(DISPID_IHTMLELEMENT_TOSTRING)]
+    BSTR toString();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+    void onbeforeupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+    VARIANT onbeforeupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+    void onafterupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+    VARIANT onafterupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+    void onerrorupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+    VARIANT onerrorupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+    void onrowexit(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+    VARIANT onrowexit();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+    void onrowenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+    VARIANT onrowenter();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+    void ondatasetchanged(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+    VARIANT ondatasetchanged();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+    void ondataavailable(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+    VARIANT ondataavailable();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+    void ondatasetcomplete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+    VARIANT ondatasetcomplete();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+    void onfilterchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+    VARIANT onfilterchange();
+
+    [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
+    IDispatch *children();
+
+    [propget, id(DISPID_IHTMLELEMENT_ALL)]
+    IDispatch *all();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
+    BSTR scopeName();
+
+    [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
+    void setCapture([in, defaultvalue(-1)] VARIANT_BOOL containerCapture);
+
+    [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
+    void releaseCapture();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    void onlosecapture(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    VARIANT onlosecapture();
+
+    [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
+    BSTR componentFromPoint(
+            [in] long x,
+            [in] long y);
+
+    [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
+    void doScroll([in, optional] VARIANT component);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    void onscroll(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    VARIANT onscroll();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    void ondrag(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    VARIANT ondrag();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    void ondragend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    VARIANT ondragend();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    void ondragenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    VARIANT ondragenter();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    void ondragover(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    VARIANT ondragover();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    void ondragleave(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    VARIANT ondragleave();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+    void ondrop(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+    VARIANT ondrop();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    void onbeforecut(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    VARIANT onbeforecut();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    void oncut(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    VARIANT oncut();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    void onbeforecopy(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    VARIANT onbeforecopy();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    void oncopy(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    VARIANT oncopy();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+    void onbeforepaste(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+    VARIANT onbeforepaste();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    void onpaste(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    VARIANT onpaste();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
+    IHTMLCurrentStyle *currentStyle();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    void onpropertychange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    VARIANT onpropertychange();
+
+    [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
+    IHTMLRectCollection *getClientRects();
+
+    [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
+    IHTMLRect *getBoundingClientRect();
+
+    [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
+    void setExpression(
+            [in] BSTR propname,
+            [in] BSTR expression,
+            [in, defaultvalue("")] BSTR language);
+
+    [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
+    VARIANT getExpression([in] BSTR propname);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
+    VARIANT_BOOL removeExpression([in] BSTR propname);
+
+    [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    void tabIndex(short v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    short tabIndex();
+
+    [id(DISPID_IHTMLELEMENT2_FOCUS)]
+    void focus();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    void accessKey(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    BSTR accessKey();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+    void onblur(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+    VARIANT onblur();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    void onfocus(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    VARIANT onfocus();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    void onresize(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    VARIANT onresize();
+
+    [id(DISPID_IHTMLELEMENT2_BLUR)]
+    void blur();
+
+    [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
+    void addFilter([in] IUnknown *pUnk);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
+    void removeFilter([in] IUnknown *pUnk);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
+    long clientHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
+    long clientWidth();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
+    long clientTop();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
+    long clientLeft();
+
+    [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
+    VARIANT_BOOL attachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp);
+
+    [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
+    void detachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp);
+
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
+    VARIANT readyState();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    void onreadystatechange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    VARIANT onreadystatechange();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    void onrowsdelete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    VARIANT onrowsdelete();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+    void onrowsinserted(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+     VARIANT onrowsinserted();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+     void oncellchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+    VARIANT oncellchange();
+
+    [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    void dir(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    BSTR dir();
+
+    [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
+    IDispatch *createControlRange();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
+    long scrollHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
+    long scrollWidth();
+
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    void scrollTop(long v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    long scrollTop();
+
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    void scrollLeft(long v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    long scrollLeft();
+
+    [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
+    void clearAttributes();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    void oncontextmenu(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    VARIANT oncontextmenu();
+
+    [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
+    IHTMLElement *insertAdjacentElement(
+            [in] BSTR where,
+            [in] IHTMLElement *insertedElement);
+
+    [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
+    IHTMLElement *applyElement(
+            [in] IHTMLElement *apply,
+            [in] BSTR where);
+
+    [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
+    BSTR getAdjacentText([in] BSTR where);
+
+    [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
+    BSTR replaceAdjacentText(
+            [in] BSTR where,
+            [in] BSTR newText);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
+    VARIANT_BOOL canHaveChildren();
+
+    [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
+    long addBehavior(
+            [in] BSTR bstrUrl,
+            [in, optional] VARIANT *pvarFactory);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
+    VARIANT_BOOL removeBehavior([in] long cookie);
+
+    [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
+    IHTMLStyle *runtimeStyle();
+
+    [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
+    IDispatch *behaviorUrns();
+
+    [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    void tagUrn(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    BSTR tagUrn();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    void onbeforeeditfocus(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    VARIANT onbeforeeditfocus();
+
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
+    long readyStateValue();
+
+    [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
+    IHTMLElementCollection *getElementsByTagName([in] BSTR v);
+
+    [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]
+    void mergeAttributes(
+            [in] IHTMLElement *mergeThis,
+            [in, optional] VARIANT *pvarFlags);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
+    VARIANT_BOOL isMultiLine();
+
+    [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
+    VARIANT_BOOL canHaveHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    void onlayoutcomplete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    VARIANT onlayoutcomplete();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    void onpage(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    VARIANT onpage();
+
+    [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    void inflateBlock(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    VARIANT_BOOL inflateBlock();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    void onbeforedeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    VARIANT onbeforedeactivate();
+
+    [id(DISPID_IHTMLELEMENT3_SETACTIVE)]
+    void setActive();
+
+    [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    void contentEditable(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    BSTR contentEditable();
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
+    VARIANT_BOOL isContentEditable();
+
+    [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    void hideFocus(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    VARIANT_BOOL hideFocus();
+
+    [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    void disabled(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    VARIANT_BOOL disabled();
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
+    VARIANT_BOOL isDisabled();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    void onmove(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    VARIANT onmove();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    void oncontrolselect(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    VARIANT oncontrolselect();
+
+    [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
+    VARIANT_BOOL fireEvent(
+            [in] BSTR bstrEventName,
+            [in, optional] VARIANT *pvarEventObject);
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+    void onresizestart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+    VARIANT onresizestart();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    void onresizeend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    VARIANT onresizeend();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    void onmovestart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    VARIANT onmovestart();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    void onmoveend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    VARIANT onmoveend();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    void onmouseenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    VARIANT onmouseenter();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    void onmouseleave(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    VARIANT onmouseleave();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+    void onactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+    VARIANT onactivate();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    void ondeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    VARIANT ondeactivate();
+
+    [id(DISPID_IHTMLELEMENT3_DRAGDROP)]
+    VARIANT_BOOL dragDrop();
+
+    [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
+    LONG glyphMode();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    void onmousewheel(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    VARIANT onmousewheel();
+
+    [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
+    void normalize();
+
+    [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
+    IHTMLDOMAttribute *getAttributeNode([in] BSTR bstrname);
+
+    [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
+    IHTMLDOMAttribute *setAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+    [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
+    IHTMLDOMAttribute *removeAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    void onbeforeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    VARIANT onbeforeactivate();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    void onfocusin(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    VARIANT onfocusin();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    void onfocusout(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    VARIANT onfocusout();
+
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
+    long uniqueNumber();
+
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
+    BSTR uniqueID();
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
+    long nodeType();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
+    IHTMLDOMNode *parentNode();
+
+    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
+    VARIANT_BOOL hasChildNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
+    IDispatch *childNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
+    IDispatch *attributes();
+
+    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
+    IHTMLDOMNode *insertBefore(
+            [in] IHTMLDOMNode *newChild,
+            [in, optional] VARIANT refChild);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
+    IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
+    IHTMLDOMNode *replaceChild(
+            [in] IHTMLDOMNode *newChild,
+            [in] IHTMLDOMNode *oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_CLONENODE)]
+    IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
+    IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
+    IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
+    IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
+
+    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
+    IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
+    BSTR nodeName();
+
+    [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    void nodeValue(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    VARIANT nodeValue();
+
+    [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
+    IHTMLDOMNode *firstChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
+    IHTMLDOMNode *lastChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
+    IHTMLDOMNode *previousSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
+    IHTMLDOMNode *nextSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
+    IDispatch *ownerDocument();
+
+    [propput, id(DISPID_IHTMLDATABINDING_DATAFLD)]
+    void dataFld(BSTR v);
+
+    [propget, id(DISPID_IHTMLDATABINDING_DATAFLD)]
+    BSTR dataFld();
+
+    [propput, id(DISPID_IHTMLDATABINDING_DATASRC)]
+    void dataSrc(BSTR v);
+
+    [propget, id(DISPID_IHTMLDATABINDING_DATASRC)]
+    BSTR dataSrc();
+
+    [propput, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
+    void dataFormatAs(BSTR v);
+
+    [propget, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
+    BSTR dataFormatAs();
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_ISMAP), displaybind, bindable]
+    void isMap(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_ISMAP), displaybind, bindable]
+    VARIANT_BOOL isMap();
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_USEMAP), displaybind, bindable]
+    void useMap(BSTR v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_USEMAP), displaybind, bindable]
+    BSTR useMap();
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_MIMETYPE)]
+    BSTR mimeType();
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_FILESIZE)]
+    BSTR fileSize();
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_FILECREATEDDATE)]
+    BSTR fileCreatedDate();
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_FILEMODIFIEDDATE)]
+    BSTR fileModifiedDate();
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_FILEUPDATEDDATE)]
+    BSTR fileUpdatedDate();
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_PROTOCOL)]
+    BSTR protocol();
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_HREF)]
+    BSTR href();
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_NAMEPROP)]
+    BSTR nameProp();
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_BORDER), displaybind, bindable]
+    void border(VARIANT v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_BORDER), displaybind, bindable]
+    VARIANT border();
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_VSPACE), displaybind, bindable]
+    void vspace(long v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_VSPACE), displaybind, bindable]
+    long vspace();
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_HSPACE), displaybind, bindable]
+    void hspace(long v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_HSPACE), displaybind, bindable]
+    long hspace();
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_ALT), displaybind, bindable]
+    void alt(BSTR v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_ALT), displaybind, bindable]
+    BSTR alt();
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_SRC), displaybind, bindable]
+    void src(BSTR v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_SRC), displaybind, bindable]
+    BSTR src();
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_LOWSRC), displaybind, bindable]
+    void lowsrc(BSTR v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_LOWSRC), displaybind, bindable]
+    BSTR lowsrc();
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_VRML), displaybind, bindable]
+    void vrml(BSTR v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_VRML), displaybind, bindable]
+    BSTR vrml();
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_DYNSRC), displaybind, bindable]
+    void dynsrc(BSTR v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_DYNSRC), displaybind, bindable]
+    BSTR dynsrc();
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_COMPLETE)]
+    VARIANT_BOOL complete();
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_LOOP), displaybind, bindable]
+    void loop(VARIANT v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_LOOP), displaybind, bindable]
+    VARIANT loop();
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_ALIGN), displaybind, bindable]
+    void align(BSTR v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_ALIGN), displaybind, bindable]
+    BSTR align();
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_ONLOAD), displaybind, bindable]
+    void onload(VARIANT v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_ONLOAD), displaybind, bindable]
+    VARIANT onload();
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_ONERROR), displaybind, bindable]
+    void onerror(VARIANT v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_ONERROR), displaybind, bindable]
+    VARIANT onerror();
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_ONABORT), displaybind, bindable]
+    void onabort(VARIANT v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_ONABORT), displaybind, bindable]
+    VARIANT onabort();
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_NAME), displaybind, bindable]
+    void name(BSTR v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_NAME), displaybind, bindable]
+    BSTR name();
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_WIDTH)]
+    void width(long v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_WIDTH)]
+    long width();
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_HEIGHT)]
+    void height(long v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_HEIGHT)]
+    long height();
+
+    [propput, id(DISPID_IHTMLIMGELEMENT_START), displaybind, bindable]
+    void start(BSTR v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT_START), displaybind, bindable]
+    BSTR start();
+
+    [propput, id(DISPID_IHTMLIMGELEMENT2_LONGDESC), displaybind, bindable]
+    void longDesc(BSTR v);
+
+    [propget, id(DISPID_IHTMLIMGELEMENT2_LONGDESC), displaybind, bindable]
+    BSTR longDesc();
+};
+
+/*****************************************************************************
+ *    IHTMLUniqueName interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f4d0-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLUniqueName : IDispatch
+{
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
+    HRESULT uniqueNumber([retval, out] long * p);
+
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
+    HRESULT uniqueID([retval, out] BSTR * p);
+};
+
+/*****************************************************************************
+ *    IHTMLControlElement interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f4e9-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLControlElement : IDispatch
+{
+    [propput, id(DISPID_IHTMLCONTROLELEMENT_TABINDEX), displaybind, bindable]
+    HRESULT tabIndex([in] short v);
+
+    [propget, id(DISPID_IHTMLCONTROLELEMENT_TABINDEX), displaybind, bindable]
+    HRESULT tabIndex([retval, out] short * p);
+
+    [id(DISPID_IHTMLCONTROLELEMENT_FOCUS)]
+    HRESULT focus();
+
+    [propput, id(DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), displaybind, bindable]
+    HRESULT accessKey([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), displaybind, bindable]
+    HRESULT accessKey([retval, out] BSTR * p);
+
+    [propput, id(DISPID_IHTMLCONTROLELEMENT_ONBLUR), displaybind, bindable]
+    HRESULT onblur([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLCONTROLELEMENT_ONBLUR), displaybind, bindable]
+    HRESULT onblur([retval, out] VARIANT * p);
+
+    [propput, id(DISPID_IHTMLCONTROLELEMENT_ONFOCUS), displaybind, bindable]
+    HRESULT onfocus([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLCONTROLELEMENT_ONFOCUS), displaybind, bindable]
+    HRESULT onfocus([retval, out] VARIANT * p);
+
+    [propput, id(DISPID_IHTMLCONTROLELEMENT_ONRESIZE), displaybind, bindable]
+    HRESULT onresize([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLCONTROLELEMENT_ONRESIZE), displaybind, bindable]
+    HRESULT onresize([retval, out] VARIANT * p);
+
+    [id(DISPID_IHTMLCONTROLELEMENT_BLUR)]
+    HRESULT blur();
+
+    [id(DISPID_IHTMLCONTROLELEMENT_ADDFILTER)]
+    HRESULT addFilter([in] IUnknown* pUnk);
+
+    [id(DISPID_IHTMLCONTROLELEMENT_REMOVEFILTER)]
+    HRESULT removeFilter([in] IUnknown* pUnk);
+
+    [propget, id(DISPID_IHTMLCONTROLELEMENT_CLIENTHEIGHT), displaybind, bindable]
+    HRESULT clientHeight([retval, out] long * p);
+
+    [propget, id(DISPID_IHTMLCONTROLELEMENT_CLIENTWIDTH), displaybind, bindable]
+    HRESULT clientWidth([retval, out] long * p);
+
+    [propget, id(DISPID_IHTMLCONTROLELEMENT_CLIENTTOP), displaybind, bindable]
+    HRESULT clientTop([retval, out] long * p);
+
+    [propget, id(DISPID_IHTMLCONTROLELEMENT_CLIENTLEFT), displaybind, bindable]
+    HRESULT clientLeft([retval, out] long * p);
+};
+
+/*****************************************************************************
+ *    IHTMLBodyElement interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f1d8-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLBodyElement : IDispatch
+{
+    [propput, id(DISPID_IHTMLBODYELEMENT_BACKGROUND), displaybind, bindable]
+    HRESULT background([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_BACKGROUND), displaybind, bindable]
+    HRESULT background([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_BGPROPERTIES), displaybind, bindable]
+    HRESULT bgProperties([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_BGPROPERTIES), displaybind, bindable]
+    HRESULT bgProperties([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_LEFTMARGIN), displaybind, bindable]
+    HRESULT leftMargin([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_LEFTMARGIN), displaybind, bindable]
+    HRESULT leftMargin([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_TOPMARGIN), displaybind, bindable]
+    HRESULT topMargin([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_TOPMARGIN), displaybind, bindable]
+    HRESULT topMargin([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_RIGHTMARGIN), displaybind, bindable]
+    HRESULT rightMargin([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_RIGHTMARGIN), displaybind, bindable]
+    HRESULT rightMargin([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_BOTTOMMARGIN), displaybind, bindable]
+    HRESULT bottomMargin([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_BOTTOMMARGIN), displaybind, bindable]
+    HRESULT bottomMargin([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_NOWRAP), displaybind, bindable]
+    HRESULT noWrap([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_NOWRAP), displaybind, bindable]
+    HRESULT noWrap([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_BGCOLOR), displaybind, bindable]
+    HRESULT bgColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_BGCOLOR), displaybind, bindable]
+    HRESULT bgColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_TEXT), displaybind, bindable]
+    HRESULT text([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_TEXT), displaybind, bindable]
+    HRESULT text([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_LINK), displaybind, bindable]
+    HRESULT link([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_LINK), displaybind, bindable]
+    HRESULT link([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_VLINK), displaybind, bindable]
+    HRESULT vLink([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_VLINK), displaybind, bindable]
+    HRESULT vLink([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_ALINK), displaybind, bindable]
+    HRESULT aLink([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_ALINK), displaybind, bindable]
+    HRESULT aLink([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_ONLOAD), displaybind, bindable]
+    HRESULT onload([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_ONLOAD), displaybind, bindable]
+    HRESULT onload([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_ONUNLOAD), displaybind, bindable]
+    HRESULT onunload([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_ONUNLOAD), displaybind, bindable]
+    HRESULT onunload([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_SCROLL), displaybind, bindable]
+    HRESULT scroll([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_SCROLL), displaybind, bindable]
+    HRESULT scroll([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_ONSELECT), displaybind, bindable]
+    HRESULT onselect([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_ONSELECT), displaybind, bindable]
+    HRESULT onselect([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_ONBEFOREUNLOAD), displaybind, bindable]
+    HRESULT onbeforeunload([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_ONBEFOREUNLOAD), displaybind, bindable]
+    HRESULT onbeforeunload([retval, out] VARIANT *p);
+
+    [id(DISPID_IHTMLBODYELEMENT_CREATETEXTRANGE)]
+    HRESULT createTextRange([retval, out] IHTMLTxtRange **range);
+}
+
+/*****************************************************************************
+ *    IHTMLBodyElement2 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f5c5-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLBodyElement2 : IDispatch
+{
+    [propput, id(DISPID_IHTMLBODYELEMENT2_ONBEFOREPRINT), displaybind, bindable]
+    HRESULT onbeforeprint([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT2_ONBEFOREPRINT), displaybind, bindable]
+    HRESULT onbeforeprint([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLBODYELEMENT2_ONAFTERPRINT), displaybind, bindable]
+    HRESULT onafterprint([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT2_ONAFTERPRINT), displaybind, bindable]
+    HRESULT onafterprint([retval, out] VARIANT *p);
+}
+
+[
+    hidden,
+    uuid(3050f507-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLBody
+{
+properties:
+methods:
+    [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
+    void setAttribute(
+        [in] BSTR strAttributeName,
+        [in] VARIANT AttValue,
+        [defaultvalue(1), in] LONG lFlags);
+
+    [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
+    VARIANT getAttribute(
+        [in] BSTR strAttributeName,
+        [defaultvalue(0), in] LONG lFlags);
+
+    [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
+    VARIANT_BOOL removeAttribute(
+        [in] BSTR strAttributeName,
+        [defaultvalue(1), in] LONG lFlags);
+
+    [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+    void className(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+    BSTR className();
+
+    [propput, id(DISPID_IHTMLELEMENT_ID), bindable]
+    void id(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ID), bindable]
+    BSTR id();
+
+    [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
+    BSTR tagName();
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
+    IHTMLElement* parentElement();
+
+    [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]
+    IHTMLStyle* style();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+    void onhelp(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+    VARIANT onhelp();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+    void onclick(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+    VARIANT onclick();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+    void ondblclick(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+    VARIANT ondblclick();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+    void onkeydown(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+    VARIANT onkeydown();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+    void onkeyup(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+    VARIANT onkeyup();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+    void onkeypress(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+    VARIANT onkeypress();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+    void onmouseout(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+    VARIANT onmouseout();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+    void onmouseover(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+    VARIANT onmouseover();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+    void onmousemove(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+    VARIANT onmousemove();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+    void onmousedown(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+    VARIANT onmousedown();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+    void onmouseup(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+    VARIANT onmouseup();
+
+    [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch* document();
+
+    [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+    void title(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+    BSTR title();
+
+    [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+    void language(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+    BSTR language();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+    void onselectstart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+    VARIANT onselectstart();
+
+    [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
+    void scrollIntoView([optional, in] VARIANT varargStart);
+
+    [id(DISPID_IHTMLELEMENT_CONTAINS)]
+    VARIANT_BOOL contains([in] IHTMLElement* pChild);
+
+    [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]
+    long sourceIndex();
+
+    [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
+    VARIANT recordNumber();
+
+    [propput, id(DISPID_IHTMLELEMENT_LANG)]
+    void lang(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANG)]
+    BSTR lang();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
+    long offsetLeft();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
+    long offsetTop();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
+    long offsetWidth();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
+    long offsetHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
+    IHTMLElement* offsetParent();
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    void innerHTML(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    BSTR innerHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    void innerText(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    BSTR innerText();
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    void outerHTML(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    BSTR outerHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    void outerText(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    BSTR outerText();
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
+    void insertAdjacentHTML(
+        [in] BSTR where,
+        [in] BSTR html);
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
+    void insertAdjacentText(
+        [in] BSTR where,
+        [in] BSTR text);
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
+    IHTMLElement* parentTextEdit();
+
+    [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
+    VARIANT_BOOL isTextEdit();
+
+    [id(DISPID_IHTMLELEMENT_CLICK)] void click();
+
+    [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
+    IHTMLFiltersCollection* filters();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+    void ondragstart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+    VARIANT ondragstart();
+
+    [id(DISPID_IHTMLELEMENT_TOSTRING)]
+    BSTR toString();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+    void onbeforeupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+    VARIANT onbeforeupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+    void onafterupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+    VARIANT onafterupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+    void onerrorupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+    VARIANT onerrorupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+    void onrowexit(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+    VARIANT onrowexit();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+    void onrowenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+    VARIANT onrowenter();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+    void ondatasetchanged(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+    VARIANT ondatasetchanged();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+    void ondataavailable(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+    VARIANT ondataavailable();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+    void ondatasetcomplete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+    VARIANT ondatasetcomplete();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+    void onfilterchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+    VARIANT onfilterchange();
+
+    [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
+    IDispatch* children();
+
+    [propget, id(DISPID_IHTMLELEMENT_ALL)]
+    IDispatch* all();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
+    BSTR scopeName();
+
+    [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
+    void setCapture([defaultvalue(-1), in] VARIANT_BOOL containerCapture);
+
+    [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
+    void releaseCapture();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    void onlosecapture(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    VARIANT onlosecapture();
+
+    [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
+    BSTR componentFromPoint([in] long x,[in] long y);
+
+    [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
+    void doScroll([optional, in] VARIANT component);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    void onscroll(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    VARIANT onscroll();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    void ondrag(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    VARIANT ondrag();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    void ondragend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    VARIANT ondragend();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    void ondragenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    VARIANT ondragenter();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    void ondragover(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    VARIANT ondragover();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    void ondragleave(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    VARIANT ondragleave();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+     void ondrop(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+    VARIANT ondrop();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    void onbeforecut(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    VARIANT onbeforecut();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    void oncut(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    VARIANT oncut();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    void onbeforecopy(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    VARIANT onbeforecopy();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    void oncopy(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    VARIANT oncopy();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+    void onbeforepaste(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+     VARIANT onbeforepaste();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    void onpaste(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    VARIANT onpaste();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
+    IHTMLCurrentStyle* currentStyle();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    void onpropertychange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    VARIANT onpropertychange();
+
+    [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
+    IHTMLRectCollection* getClientRects();
+
+    [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
+    IHTMLRect* getBoundingClientRect();
+
+    [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
+    void setExpression(
+        [in] BSTR propname,
+        [in] BSTR expr,
+        [defaultvalue(""), in] BSTR lang);
+
+    [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
+    VARIANT getExpression([in] BSTR propname);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
+    VARIANT_BOOL removeExpression([in] BSTR propname);
+
+    [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    void tabIndex(short v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    short tabIndex();
+
+    [id(DISPID_IHTMLELEMENT2_FOCUS)]
+    void focus();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    void accessKey(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    BSTR accessKey();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+    void onblur(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+     VARIANT onblur();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    void onfocus(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    VARIANT onfocus();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    void onresize(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    VARIANT onresize();
+
+    [id(DISPID_IHTMLELEMENT2_BLUR)]
+    void blur();
+
+    [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
+    void addFilter([in] IUnknown* pUnk);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
+    void removeFilter([in] IUnknown* pUnk);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
+    long clientHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
+    long clientWidth();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
+    long clientTop();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
+    long clientLeft();
+
+    [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
+    VARIANT_BOOL attachEvent(
+        [in] BSTR event,
+        [in] IDispatch* pDisp);
+
+    [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
+    void detachEvent(
+        [in] BSTR event,
+        [in] IDispatch* pDisp);
+
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+     void onreadystatechange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    VARIANT onreadystatechange();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    void onrowsdelete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    VARIANT onrowsdelete();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+    void onrowsinserted(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+    VARIANT onrowsinserted();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+    void oncellchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+    VARIANT oncellchange();
+
+    [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    void dir(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    BSTR dir();
+
+    [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
+    IDispatch* createControlRange();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
+    long scrollHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
+    long scrollWidth();
+
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    void scrollTop(long v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    long scrollTop();
+
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    void scrollLeft(long v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    long scrollLeft();
+
+    [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
+    void clearAttributes();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    void oncontextmenu(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    VARIANT oncontextmenu();
+
+    [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
+    IHTMLElement* insertAdjacentElement(
+        [in] BSTR where,
+        [in] IHTMLElement* insertedElement);
+
+    [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
+    IHTMLElement* applyElement([in] IHTMLElement* apply,[in] BSTR where);
+
+    [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
+    BSTR getAdjacentText([in] BSTR where);
+
+    [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
+    BSTR replaceAdjacentText([in] BSTR where,[in] BSTR newText);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
+    VARIANT_BOOL canHaveChildren();
+
+    [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
+    long addBehavior([in] BSTR bstrUrl,[optional, in] VARIANT* pvarFactory);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
+    VARIANT_BOOL removeBehavior([in] long cookie);
+
+    [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
+    IHTMLStyle* runtimeStyle();
+
+    [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
+    IDispatch* behaviorUrns();
+
+    [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    void tagUrn(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    BSTR tagUrn();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    void onbeforeeditfocus(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    VARIANT onbeforeeditfocus();
+
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
+    long readyStateValue();
+
+    [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
+    IHTMLElementCollection* getElementsByTagName([in] BSTR v);
+
+    [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]
+    void mergeAttributes(
+        [in] IHTMLElement* mergeThis,
+        [optional, in] VARIANT* pvarFlags);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
+    VARIANT_BOOL isMultiLine();
+
+    [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
+    VARIANT_BOOL canHaveHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    void onlayoutcomplete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    VARIANT onlayoutcomplete();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    void onpage(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    VARIANT onpage();
+
+    [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    void inflateBlock(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    VARIANT_BOOL inflateBlock();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    void onbeforedeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    VARIANT onbeforedeactivate();
+
+    [id(DISPID_IHTMLELEMENT3_SETACTIVE)]
+    void setActive();
+
+    [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    void contentEditable(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    BSTR contentEditable();
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
+    VARIANT_BOOL isContentEditable();
+
+    [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    void hideFocus(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    VARIANT_BOOL hideFocus();
+
+    [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    void disabled(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    VARIANT_BOOL disabled();
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
+    VARIANT_BOOL isDisabled();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    void onmove(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    VARIANT onmove();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    void oncontrolselect(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    VARIANT oncontrolselect();
+
+    [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
+    VARIANT_BOOL fireEvent(
+        [in] BSTR bstrEventName,
+        [optional, in] VARIANT* pvarEventObject);
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+     void onresizestart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+    VARIANT onresizestart();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    void onresizeend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    VARIANT onresizeend();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    void onmovestart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    VARIANT onmovestart();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    void onmoveend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    VARIANT onmoveend();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    void onmouseenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    VARIANT onmouseenter();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    void onmouseleave(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    VARIANT onmouseleave();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+    void onactivate(VARIANT v);
+    [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    void ondeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    VARIANT ondeactivate();
+
+    [id(DISPID_IHTMLELEMENT3_DRAGDROP)]
+    VARIANT_BOOL dragDrop();
+
+    [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
+    LONG glyphMode();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    void onmousewheel(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    VARIANT onmousewheel();
+
+    [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
+    void normalize();
+
+    [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
+     IHTMLDOMAttribute* getAttributeNode([in] BSTR bstrname);
+
+    [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
+    IHTMLDOMAttribute* setAttributeNode([in] IHTMLDOMAttribute* pattr);
+
+    [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
+    IHTMLDOMAttribute* removeAttributeNode([in] IHTMLDOMAttribute* pattr);
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    void onbeforeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    VARIANT onbeforeactivate();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    void onfocusin(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    VARIANT onfocusin();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    void onfocusout(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    VARIANT onfocusout();
+
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
+    long uniqueNumber();
+
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
+    BSTR uniqueID();
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
+    long nodeType();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
+    IHTMLDOMNode* parentNode();
+
+    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
+    VARIANT_BOOL hasChildNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
+    IDispatch* childNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
+    IDispatch* attributes();
+
+    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
+    IHTMLDOMNode* insertBefore(
+        [in] IHTMLDOMNode* newChild,
+        [optional, in] VARIANT refChild);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
+    IHTMLDOMNode* removeChild([in] IHTMLDOMNode* oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
+    IHTMLDOMNode* replaceChild(
+        [in] IHTMLDOMNode* newChild,
+        [in] IHTMLDOMNode* oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_CLONENODE)]
+    IHTMLDOMNode* cloneNode([in] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
+    IHTMLDOMNode* removeNode([defaultvalue(0), in] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
+    IHTMLDOMNode* swapNode([in] IHTMLDOMNode* otherNode);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
+    IHTMLDOMNode* replaceNode([in] IHTMLDOMNode* replacement);
+
+    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
+    IHTMLDOMNode* appendChild([in] IHTMLDOMNode* newChild);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
+    BSTR nodeName();
+
+    [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    void nodeValue(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    VARIANT nodeValue();
+
+    [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
+    IHTMLDOMNode* firstChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
+    IHTMLDOMNode* lastChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
+    IHTMLDOMNode* previousSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
+    IHTMLDOMNode* nextSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
+    IDispatch* ownerDocument();
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_BACKGROUND), displaybind, bindable]
+    void background(BSTR v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_BACKGROUND), displaybind, bindable]
+    BSTR background();
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_BGPROPERTIES), displaybind, bindable]
+    void bgProperties(BSTR v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_BGPROPERTIES), displaybind, bindable]
+    BSTR bgProperties();
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_LEFTMARGIN), displaybind, bindable]
+    void leftMargin(VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_LEFTMARGIN), displaybind, bindable]
+    VARIANT leftMargin();
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_TOPMARGIN), displaybind, bindable]
+    void topMargin(VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_TOPMARGIN), displaybind, bindable]
+    VARIANT topMargin();
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_RIGHTMARGIN), displaybind, bindable]
+    void rightMargin(VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_RIGHTMARGIN), displaybind, bindable]
+    VARIANT rightMargin();
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_BOTTOMMARGIN), displaybind, bindable]
+    void bottomMargin(VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_BOTTOMMARGIN), displaybind, bindable]
+    VARIANT bottomMargin();
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_NOWRAP), displaybind, bindable]
+    void noWrap(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_NOWRAP), displaybind, bindable]
+    VARIANT_BOOL noWrap();
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_BGCOLOR), displaybind, bindable]
+    void bgColor(VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_BGCOLOR), displaybind, bindable]
+    VARIANT bgColor();
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_TEXT), displaybind, bindable]
+    void text(VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_TEXT), displaybind, bindable]
+    VARIANT text();
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_LINK), displaybind, bindable]
+    void link(VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_LINK), displaybind, bindable]
+    VARIANT link();
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_VLINK), displaybind, bindable]
+    void vLink(VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_VLINK), displaybind, bindable]
+    VARIANT vLink();
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_ALINK), displaybind, bindable]
+    void aLink(VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_ALINK), displaybind, bindable]
+    VARIANT aLink();
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_ONLOAD), displaybind, bindable]
+    void onload(VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_ONLOAD), displaybind, bindable]
+    VARIANT onload();
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_ONUNLOAD), displaybind, bindable]
+    void onunload(VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_ONUNLOAD), displaybind, bindable]
+    VARIANT onunload();
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_SCROLL), displaybind, bindable]
+    void scroll(BSTR v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_SCROLL), displaybind, bindable]
+    BSTR scroll();
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_ONSELECT), displaybind, bindable]
+    void onselect(VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_ONSELECT), displaybind, bindable]
+    VARIANT onselect();
+
+    [propput, id(DISPID_IHTMLBODYELEMENT_ONBEFOREUNLOAD), displaybind, bindable]
+    void onbeforeunload(VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT_ONBEFOREUNLOAD), displaybind, bindable]
+    VARIANT onbeforeunload();
+
+    [id(DISPID_IHTMLBODYELEMENT_CREATETEXTRANGE)]
+    IHTMLTxtRange* createTextRange();
+
+    [propput, id(DISPID_IHTMLBODYELEMENT2_ONBEFOREPRINT), displaybind, bindable]
+    void onbeforeprint(VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT2_ONBEFOREPRINT), displaybind, bindable]
+    VARIANT onbeforeprint();
+
+    [propput, id(DISPID_IHTMLBODYELEMENT2_ONAFTERPRINT), displaybind, bindable]
+    void onafterprint(VARIANT v);
+
+    [propget, id(DISPID_IHTMLBODYELEMENT2_ONAFTERPRINT), displaybind, bindable]
+    VARIANT onafterprint();
+};
+
+[
+    uuid(3050f24a-98b5-11cf-bb82-00aa00bdce0b)
+]
+coclass HTMLBody
+{
+    [default]           dispinterface DispHTMLBody;
+    [source, default]   dispinterface HTMLTextContainerEvents;
+    [source]            dispinterface HTMLTextContainerEvents2;
+                        interface IHTMLElement;
+                        interface IHTMLElement2;
+                        interface IHTMLElement3;
+                        interface IHTMLElement4;
+                        interface IHTMLUniqueName;
+                        interface IHTMLDOMNode;
+                        interface IHTMLDOMNode2;
+                        interface IHTMLControlElement;
+                        interface IHTMLTextContainer;
+                        interface IHTMLBodyElement;
+                        interface IHTMLBodyElement2;
+};
+
+/*****************************************************************************
+ *    IHTMLAnchorElement interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f1da-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLAnchorElement : IDispatch
+{
+    [propput, id(DISPID_IHTMLANCHORELEMENT_HREF), displaybind, bindable]
+    HRESULT href([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLANCHORELEMENT_HREF), displaybind, bindable]
+    HRESULT href([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLANCHORELEMENT_TARGET), displaybind, bindable]
+    HRESULT target([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLANCHORELEMENT_TARGET), displaybind, bindable]
+    HRESULT target([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLANCHORELEMENT_REL), displaybind, bindable]
+    HRESULT rel([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLANCHORELEMENT_REL), displaybind, bindable]
+    HRESULT rel([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLANCHORELEMENT_REV), displaybind, bindable]
+    HRESULT rev([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLANCHORELEMENT_REV), displaybind, bindable]
+    HRESULT rev([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLANCHORELEMENT_URN), displaybind, bindable]
+    HRESULT urn([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLANCHORELEMENT_URN), displaybind, bindable]
+    HRESULT urn([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLANCHORELEMENT_METHODS), displaybind, bindable]
+    HRESULT Methods([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLANCHORELEMENT_METHODS), displaybind, bindable]
+    HRESULT Methods([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLANCHORELEMENT_NAME), displaybind, bindable]
+    HRESULT name([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLANCHORELEMENT_NAME), displaybind, bindable]
+    HRESULT name([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLANCHORELEMENT_HOST)]
+    HRESULT host([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLANCHORELEMENT_HOST)]
+    HRESULT host([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLANCHORELEMENT_HOSTNAME)]
+    HRESULT hostname([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLANCHORELEMENT_HOSTNAME)]
+    HRESULT hostname([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLANCHORELEMENT_PATHNAME)]
+    HRESULT pathname([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLANCHORELEMENT_PATHNAME)]
+    HRESULT pathname([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLANCHORELEMENT_PORT)]
+    HRESULT port([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLANCHORELEMENT_PORT)]
+    HRESULT port([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLANCHORELEMENT_PROTOCOL)]
+    HRESULT protocol([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLANCHORELEMENT_PROTOCOL)]
+    HRESULT protocol([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLANCHORELEMENT_SEARCH)]
+    HRESULT search([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLANCHORELEMENT_SEARCH)]
+    HRESULT search([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLANCHORELEMENT_HASH)]
+    HRESULT hash([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLANCHORELEMENT_HASH)]
+    HRESULT hash([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLANCHORELEMENT_ONBLUR), displaybind, bindable]
+    HRESULT onblur([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLANCHORELEMENT_ONBLUR), displaybind, bindable]
+    HRESULT onblur([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLANCHORELEMENT_ONFOCUS), displaybind, bindable]
+    HRESULT onfocus([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLANCHORELEMENT_ONFOCUS), displaybind, bindable]
+    HRESULT onfocus([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLANCHORELEMENT_ACCESSKEY), displaybind, bindable]
+    HRESULT accessKey([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLANCHORELEMENT_ACCESSKEY), displaybind, bindable]
+    HRESULT accessKey([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLANCHORELEMENT_PROTOCOLLONG)]
+    HRESULT protocolLong([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLANCHORELEMENT_MIMETYPE)]
+    HRESULT mimeType([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLANCHORELEMENT_NAMEPROP)]
+    HRESULT nameProp([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLANCHORELEMENT_TABINDEX), displaybind, bindable]
+    HRESULT tabIndex([in] short v);
+
+    [propget, id(DISPID_IHTMLANCHORELEMENT_TABINDEX), displaybind, bindable]
+    HRESULT tabIndex([retval, out] short *p);
+
+    [id(DISPID_IHTMLANCHORELEMENT_FOCUS)]
+    HRESULT focus();
+
+    [id(DISPID_IHTMLANCHORELEMENT_BLUR)]
+    HRESULT blur();
+}
+
+/*****************************************************************************
+ *    IHTMLElementCollection interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F21F-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLElementCollection : IDispatch
+{
+    [id(DISPID_IHTMLELEMENTCOLLECTION_TOSTRING)]
+    HRESULT toString([retval, out] BSTR *String);
+
+    [propput, id(DISPID_IHTMLELEMENTCOLLECTION_LENGTH)]
+    HRESULT length([in] long v);
+
+    [propget, id(DISPID_IHTMLELEMENTCOLLECTION_LENGTH)]
+    HRESULT length([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLELEMENTCOLLECTION__NEWENUM)]
+    HRESULT _newEnum([retval, out] IUnknown **p);
+
+    [id(DISPID_IHTMLELEMENTCOLLECTION_ITEM)]
+    HRESULT item(
+        [optional, in] VARIANT name,
+        [optional, in] VARIANT index,
+        [retval,  out] IDispatch **pdisp);
+
+    [id(DISPID_IHTMLELEMENTCOLLECTION_TAGS)]
+    HRESULT tags(
+        [in] VARIANT tagName,
+        [retval, out] IDispatch **pdisp);
+}
+
+/*****************************************************************************
+ *    DispHTMLElementCollection dispinterface
+ */
+[
+    hidden,
+    uuid(3050f56b-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLElementCollection
+{
+properties:
+methods:
+    [id(DISPID_IHTMLELEMENTCOLLECTION_TOSTRING)]
+    BSTR toString();
+
+    [propput, id(DISPID_IHTMLELEMENTCOLLECTION_LENGTH)]
+    void length(long v);
+
+    [propget, id(DISPID_IHTMLELEMENTCOLLECTION_LENGTH)]
+    long length();
+
+    [propget, id(DISPID_IHTMLELEMENTCOLLECTION__NEWENUM), hidden, restricted]
+    IUnknown *_newEnum();
+
+    [id(DISPID_IHTMLELEMENTCOLLECTION_ITEM)]
+    IDispatch *item(
+            [in, optional] VARIANT name,
+            [in, optional] VARIANT index);
+
+    [id(DISPID_IHTMLELEMENTCOLLECTION_TAGS)]
+    IDispatch *tags(
+            [in] VARIANT tagName);
+
+    [id(DISPID_IHTMLELEMENTCOLLECTION2_URNS)]
+    IDispatch *urns([in] VARIANT urn);
+
+    [id(DISPID_IHTMLELEMENTCOLLECTION3_NAMEDITEM)]
+    IDispatch *namedItem([in] BSTR name);
+}
+
+/*****************************************************************************
+ *    IHTMLSelectElement interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f244-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLSelectElement : IDispatch
+{
+    [propput, id(DISPID_IHTMLSELECTELEMENT_SIZE), displaybind, bindable]
+    HRESULT size([in] long v);
+
+    [propget, id(DISPID_IHTMLSELECTELEMENT_SIZE), displaybind, bindable]
+    HRESULT size([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLSELECTELEMENT_MULTIPLE), displaybind, bindable]
+    HRESULT multiple([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLSELECTELEMENT_MULTIPLE), displaybind, bindable]
+    HRESULT multiple([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLSELECTELEMENT_NAME), displaybind, bindable]
+    HRESULT name([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSELECTELEMENT_NAME), displaybind, bindable]
+    HRESULT name([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLSELECTELEMENT_OPTIONS)]
+    HRESULT options([retval, out] IDispatch **p);
+
+    [propput, id(DISPID_IHTMLSELECTELEMENT_ONCHANGE), displaybind, bindable]
+    HRESULT onchange([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSELECTELEMENT_ONCHANGE), displaybind, bindable]
+    HRESULT onchange([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX)]
+    HRESULT selectedIndex([in] long v);
+
+    [propget, id(DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX)]
+    HRESULT selectedIndex([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLSELECTELEMENT_TYPE), displaybind, bindable]
+    HRESULT type([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSELECTELEMENT_VALUE), displaybind, bindable]
+    HRESULT value([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSELECTELEMENT_VALUE), displaybind, bindable]
+    HRESULT value([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSELECTELEMENT_DISABLED), displaybind, bindable]
+    HRESULT disabled([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLSELECTELEMENT_DISABLED), displaybind, bindable]
+    HRESULT disabled([retval, out] VARIANT_BOOL *p);
+
+    [propget, id(DISPID_IHTMLSELECTELEMENT_FORM)]
+    HRESULT form([retval, out] IHTMLFormElement **p);
+
+    [id(DISPID_IHTMLSELECTELEMENT_ADD)]
+    HRESULT add(
+        [in] IHTMLElement *element,
+        [optional, in] VARIANT before);
+
+    [id(DISPID_IHTMLSELECTELEMENT_REMOVE)]
+    HRESULT remove([defaultvalue(-1), in] long index);
+
+    [propput, id(DISPID_IHTMLSELECTELEMENT_LENGTH)]
+    HRESULT length([in] long v);
+
+    [propget, id(DISPID_IHTMLSELECTELEMENT_LENGTH)]
+    HRESULT length([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLSELECTELEMENT__NEWENUM), hidden, restricted]
+    HRESULT _newEnum([retval, out] IUnknown **p);
+
+    [id(DISPID_IHTMLSELECTELEMENT_ITEM)]
+    HRESULT item(
+        [optional, in] VARIANT name,
+        [optional, in] VARIANT index,
+        [retval, out] IDispatch **pdisp);
+
+    [id(DISPID_IHTMLSELECTELEMENT_TAGS)]
+    HRESULT tags(
+        [in] VARIANT tagName,
+        [retval, out] IDispatch **pdisp);
+}
+
+/*****************************************************************************
+ *    DispHTMLSelectElement dispinterface
+ */
+[
+    hidden,
+    uuid(3050f531-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLSelectElement
+{
+properties:
+methods:
+    [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
+    void setAttribute(
+            [in] BSTR strAttributeName,
+            [in] VARIANT AttributeValue,
+            [in, defaultvalue(1)] LONG lFlags);
+
+    [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
+    VARIANT getAttribute(
+             [in] BSTR strAttributeName,
+             [in, defaultvalue(0)] LONG lFlags);
+
+    [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
+    VARIANT_BOOL removeAttribute(
+            [in] BSTR strAttributeName,
+            [in, defaultvalue(1)] LONG lFlags);
+
+    [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+    void className(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+    BSTR className();
+
+    [propput, id(DISPID_IHTMLELEMENT_ID), bindable]
+    void id(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ID), bindable]
+    BSTR id();
+
+    [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
+    BSTR tagName();
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
+    IHTMLElement *parentElement();
+
+    [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]
+    IHTMLStyle *style();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+    void onhelp(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+    VARIANT onhelp();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+    void onclick(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+    VARIANT onclick();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+    void ondblclick(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+    VARIANT ondblclick();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+    void onkeydown(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+    VARIANT onkeydown();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+    void onkeyup(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+    VARIANT onkeyup();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+    void onkeypress(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+    VARIANT onkeypress();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+    void onmouseout(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+    VARIANT onmouseout();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+    void onmouseover(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+    VARIANT onmouseover();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+    void onmousemove(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+    VARIANT onmousemove();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+    void onmousedown(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+    VARIANT onmousedown();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+    void onmouseup(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+    VARIANT onmouseup();
+
+    [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
+    IDispatch *document();
+
+    [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+    void title(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+    BSTR title();
+
+    [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+    void language(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+    BSTR language();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+    void onselectstart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+    VARIANT onselectstart();
+
+    [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
+    void scrollIntoView([in, optional] VARIANT varargStart);
+
+    [id(DISPID_IHTMLELEMENT_CONTAINS)]
+    VARIANT_BOOL contains([in] IHTMLElement *pChild);
+
+    [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]
+    long sourceIndex();
+
+    [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
+    VARIANT recordNumber();
+
+    [propput, id(DISPID_IHTMLELEMENT_LANG)]
+    void lang(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANG)]
+    BSTR lang();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
+    long offsetLeft();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
+    long offsetTop();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
+    long offsetWidth();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
+    long offsetHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
+    IHTMLElement *offsetParent();
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    void innerHTML(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    BSTR innerHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    void innerText(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    BSTR innerText();
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    void outerHTML(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    BSTR outerHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    void outerText(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    BSTR outerText();
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
+    void insertAdjacentHTML(
+            [in] BSTR where,
+            [in] BSTR html);
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
+    void insertAdjacentText(
+            [in] BSTR where,
+            [in] BSTR text);
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
+    IHTMLElement *parentTextEdit();
+
+    [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
+    VARIANT_BOOL isTextEdit();
+
+    [id(DISPID_IHTMLELEMENT_CLICK)]
+    void click();
+
+    [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
+    IHTMLFiltersCollection *filters();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+    void ondragstart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+    VARIANT ondragstart();
+
+    [id(DISPID_IHTMLELEMENT_TOSTRING)]
+    BSTR toString();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+    void onbeforeupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+    VARIANT onbeforeupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+    void onafterupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+    VARIANT onafterupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+    void onerrorupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+    VARIANT onerrorupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+    void onrowexit(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+    VARIANT onrowexit();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+    void onrowenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+    VARIANT onrowenter();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+    void ondatasetchanged(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+    VARIANT ondatasetchanged();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+    void ondataavailable(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+    VARIANT ondataavailable();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+    void ondatasetcomplete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+    VARIANT ondatasetcomplete();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+    void onfilterchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+    VARIANT onfilterchange();
+
+    [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
+    IDispatch *children();
+
+    [propget, id(DISPID_IHTMLELEMENT_ALL)]
+    IDispatch *all();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
+    BSTR scopeName();
+
+    [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
+    void setCapture([in, defaultvalue(-1)] VARIANT_BOOL containerCapture);
+
+    [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
+    void releaseCapture();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    void onlosecapture(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    VARIANT onlosecapture();
+
+    [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
+    BSTR componentFromPoint(
+            [in] long x,
+            [in] long y);
+
+    [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
+    void doScroll([in, optional] VARIANT component);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    void onscroll(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    VARIANT onscroll();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    void ondrag(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    VARIANT ondrag();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    void ondragend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    VARIANT ondragend();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    void ondragenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    VARIANT ondragenter();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    void ondragover(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    VARIANT ondragover();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    void ondragleave(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    VARIANT ondragleave();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+    void ondrop(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+    VARIANT ondrop();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    void onbeforecut(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    VARIANT onbeforecut();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    void oncut(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    VARIANT oncut();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    void onbeforecopy(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    VARIANT onbeforecopy();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    void oncopy(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    VARIANT oncopy();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+    void onbeforepaste(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+    VARIANT onbeforepaste();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    void onpaste(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    VARIANT onpaste();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
+    IHTMLCurrentStyle *currentStyle();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    void onpropertychange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    VARIANT onpropertychange();
+
+    [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
+    IHTMLRectCollection *getClientRects();
+
+    [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
+    IHTMLRect *getBoundingClientRect();
+
+    [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
+    void setExpression(
+            [in] BSTR propname,
+            [in] BSTR expression,
+            [in, defaultvalue("")] BSTR language);
+
+    [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
+    VARIANT getExpression([in] BSTR propname);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
+    VARIANT_BOOL removeExpression([in] BSTR propname);
+
+    [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    void tabIndex(short v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    short tabIndex();
+
+    [id(DISPID_IHTMLELEMENT2_FOCUS)]
+    void focus();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    void accessKey(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    BSTR accessKey();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+    void onblur(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+    VARIANT onblur();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    void onfocus(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    VARIANT onfocus();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    void onresize(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    VARIANT onresize();
+
+    [id(DISPID_IHTMLELEMENT2_BLUR)]
+    void blur();
+
+    [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
+    void addFilter([in] IUnknown *pUnk);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
+    void removeFilter([in] IUnknown *pUnk);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
+    long clientHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
+    long clientWidth();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
+    long clientTop();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
+    long clientLeft();
+
+    [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
+    VARIANT_BOOL attachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp);
+
+    [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
+    void detachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp);
+
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
+    VARIANT readyState();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    void onreadystatechange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    VARIANT onreadystatechange();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    void onrowsdelete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    VARIANT onrowsdelete();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+    void onrowsinserted(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+     VARIANT onrowsinserted();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+     void oncellchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+    VARIANT oncellchange();
+
+    [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    void dir(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    BSTR dir();
+
+    [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
+    IDispatch *createControlRange();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
+    long scrollHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
+    long scrollWidth();
+
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    void scrollTop(long v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    long scrollTop();
+
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    void scrollLeft(long v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    long scrollLeft();
+
+    [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
+    void clearAttributes();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    void oncontextmenu(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    VARIANT oncontextmenu();
+
+    [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
+    IHTMLElement *insertAdjacentElement(
+            [in] BSTR where,
+            [in] IHTMLElement *insertedElement);
+
+    [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
+    IHTMLElement *applyElement(
+            [in] IHTMLElement *apply,
+            [in] BSTR where);
+
+    [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
+    BSTR getAdjacentText([in] BSTR where);
+
+    [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
+    BSTR replaceAdjacentText(
+            [in] BSTR where,
+            [in] BSTR newText);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
+    VARIANT_BOOL canHaveChildren();
+
+    [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
+    long addBehavior(
+            [in] BSTR bstrUrl,
+            [in, optional] VARIANT *pvarFactory);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
+    VARIANT_BOOL removeBehavior([in] long cookie);
+
+    [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
+    IHTMLStyle *runtimeStyle();
+
+    [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
+    IDispatch *behaviorUrns();
+
+    [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    void tagUrn(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    BSTR tagUrn();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    void onbeforeeditfocus(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    VARIANT onbeforeeditfocus();
+
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
+    long readyStateValue();
+
+    [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
+    IHTMLElementCollection *getElementsByTagName([in] BSTR v);
+
+    [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]
+    void mergeAttributes(
+            [in] IHTMLElement *mergeThis,
+            [in, optional] VARIANT *pvarFlags);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
+    VARIANT_BOOL isMultiLine();
+
+    [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
+    VARIANT_BOOL canHaveHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    void onlayoutcomplete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    VARIANT onlayoutcomplete();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    void onpage(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    VARIANT onpage();
+
+    [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    void inflateBlock(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    VARIANT_BOOL inflateBlock();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    void onbeforedeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    VARIANT onbeforedeactivate();
+
+    [id(DISPID_IHTMLELEMENT3_SETACTIVE)]
+    void setActive();
+
+    [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    void contentEditable(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    BSTR contentEditable();
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
+    VARIANT_BOOL isContentEditable();
+
+    [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    void hideFocus(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    VARIANT_BOOL hideFocus();
+
+    [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    void disabled(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    VARIANT_BOOL disabled();
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
+    VARIANT_BOOL isDisabled();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    void onmove(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    VARIANT onmove();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    void oncontrolselect(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    VARIANT oncontrolselect();
+
+    [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
+    VARIANT_BOOL fireEvent(
+            [in] BSTR bstrEventName,
+            [in, optional] VARIANT *pvarEventObject);
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+    void onresizestart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+    VARIANT onresizestart();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    void onresizeend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    VARIANT onresizeend();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    void onmovestart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    VARIANT onmovestart();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    void onmoveend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    VARIANT onmoveend();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    void onmouseenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    VARIANT onmouseenter();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    void onmouseleave(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    VARIANT onmouseleave();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+    void onactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+    VARIANT onactivate();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    void ondeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    VARIANT ondeactivate();
+
+    [id(DISPID_IHTMLELEMENT3_DRAGDROP)]
+    VARIANT_BOOL dragDrop();
+
+    [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
+    LONG glyphMode();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    void onmousewheel(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    VARIANT onmousewheel();
+
+    [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
+    void normalize();
+
+    [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
+    IHTMLDOMAttribute *getAttributeNode([in] BSTR bstrname);
+
+    [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
+    IHTMLDOMAttribute *setAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+    [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
+    IHTMLDOMAttribute *removeAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    void onbeforeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    VARIANT onbeforeactivate();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    void onfocusin(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    VARIANT onfocusin();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    void onfocusout(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    VARIANT onfocusout();
+
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
+    long uniqueNumber();
+
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
+    BSTR uniqueID();
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
+    long nodeType();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
+    IHTMLDOMNode *parentNode();
+
+    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
+    VARIANT_BOOL hasChildNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
+    IDispatch *childNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
+    IDispatch *attributes();
+
+    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
+    IHTMLDOMNode *insertBefore(
+            [in] IHTMLDOMNode *newChild,
+            [in, optional] VARIANT refChild);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
+    IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
+    IHTMLDOMNode *replaceChild(
+            [in] IHTMLDOMNode *newChild,
+            [in] IHTMLDOMNode *oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_CLONENODE)]
+    IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
+    IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
+    IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
+    IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
+
+    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
+    IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
+    BSTR nodeName();
+
+    [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    void nodeValue(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    VARIANT nodeValue();
+
+    [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
+    IHTMLDOMNode *firstChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
+    IHTMLDOMNode *lastChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
+    IHTMLDOMNode *previousSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
+    IHTMLDOMNode *nextSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
+    IDispatch *ownerDocument();
+
+    [propput, id(DISPID_IHTMLDATABINDING_DATAFLD)]
+    void dataFld(BSTR v);
+
+    [propget, id(DISPID_IHTMLDATABINDING_DATAFLD)]
+    BSTR dataFld();
+
+    [propput, id(DISPID_IHTMLDATABINDING_DATASRC)]
+    void dataSrc(BSTR v);
+
+    [propget, id(DISPID_IHTMLDATABINDING_DATASRC)]
+    BSTR dataSrc();
+
+    [propput, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
+    void dataFormatAs(BSTR v);
+
+    [propget, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
+    BSTR dataFormatAs();
+
+    [propput, id(DISPID_IHTMLSELECTELEMENT_SIZE), displaybind, bindable]
+    void size(long v);
+
+    [propget, id(DISPID_IHTMLSELECTELEMENT_SIZE), displaybind, bindable]
+    long size();
+
+    [propput, id(DISPID_IHTMLSELECTELEMENT_MULTIPLE), displaybind, bindable]
+    void multiple(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLSELECTELEMENT_MULTIPLE), displaybind, bindable]
+    VARIANT_BOOL multiple();
+
+    [propput, id(DISPID_IHTMLSELECTELEMENT_NAME), displaybind, bindable]
+    void name(BSTR v);
+
+    [propget, id(DISPID_IHTMLSELECTELEMENT_NAME), displaybind, bindable]
+    BSTR name();
+
+    [propget, id(DISPID_IHTMLSELECTELEMENT_OPTIONS)]
+    IDispatch *options();
+
+    [propput, id(DISPID_IHTMLSELECTELEMENT_ONCHANGE), displaybind, bindable]
+    void onchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLSELECTELEMENT_ONCHANGE), displaybind, bindable]
+    VARIANT onchange();
+
+    [propput, id(DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX)]
+    void selectedIndex(long v);
+
+    [propget, id(DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX)]
+    long selectedIndex();
+
+    [propget, id(DISPID_IHTMLSELECTELEMENT_TYPE), displaybind, bindable]
+    BSTR type();
+
+    [propput, id(DISPID_IHTMLSELECTELEMENT_VALUE), displaybind, bindable]
+    void value(BSTR v);
+
+    [propget, id(DISPID_IHTMLSELECTELEMENT_VALUE), displaybind, bindable]
+    BSTR value();
+
+    [propget, id(DISPID_IHTMLSELECTELEMENT_FORM)]
+    IHTMLFormElement *form();
+
+    [id(DISPID_IHTMLSELECTELEMENT_ADD)]
+    void add(
+            [in] IHTMLElement *element,
+            [in, optional] VARIANT before);
+
+    [id(DISPID_IHTMLSELECTELEMENT_REMOVE)]
+    void remove([in, defaultvalue(-1)] long index);
+
+    [propput, id(DISPID_IHTMLSELECTELEMENT_LENGTH)]
+    void length(long v);
+
+    [propget, id(DISPID_IHTMLSELECTELEMENT_LENGTH)]
+    long length();
+
+    [propget, id(DISPID_IHTMLSELECTELEMENT__NEWENUM), hidden, restricted]
+    IUnknown *_newEnum();
+
+    [id(DISPID_IHTMLSELECTELEMENT_ITEM)]
+    IDispatch *item(
+            [in, optional] VARIANT name,
+            [in, optional] VARIANT index);
+
+    [id(DISPID_IHTMLSELECTELEMENT_TAGS)]
+    IDispatch *tags([in] VARIANT tagName);
+
+    [id(DISPID_IHTMLSELECTELEMENT2_URNS)]
+    IDispatch *urns([in] VARIANT urn);
+
+    [id(DISPID_IHTMLSELECTELEMENT4_NAMEDITEM)]
+    IDispatch *namedItem([in] BSTR name);
+}
+
+/*****************************************************************************
+ *    IHTMLSelectionObject interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F25A-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLSelectionObject : IDispatch
+{
+    [id(DISPID_IHTMLSELECTIONOBJECT_CREATERANGE)]
+    HRESULT createRange([retval, out] IDispatch **range);
+
+    [id(DISPID_IHTMLSELECTIONOBJECT_EMPTY)]
+    HRESULT empty();
+
+    [id(DISPID_IHTMLSELECTIONOBJECT_CLEAR)]
+    HRESULT clear();
+
+    [propget, id(DISPID_IHTMLSELECTIONOBJECT_TYPE)]
+    HRESULT type([retval, out] BSTR *p);
+}
+
+/*****************************************************************************
+ *    IHTMLOptionElement interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F211-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLOptionElement : IDispatch
+{
+    [propput, id(DISPID_IHTMLOPTIONELEMENT_SELECTED)]
+    HRESULT selected([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_SELECTED)]
+    HRESULT selected([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLOPTIONELEMENT_VALUE)]
+    HRESULT value([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_VALUE)]
+    HRESULT value([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)]
+    HRESULT defaultSelected([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)]
+    HRESULT defaultSelected([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLOPTIONELEMENT_INDEX)]
+    HRESULT index([in] LONG v);
+
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_INDEX)]
+    HRESULT index([retval, out] LONG *p);
+
+    [propput, id(DISPID_IHTMLOPTIONELEMENT_TEXT)]
+    HRESULT text([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_TEXT)]
+    HRESULT text([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_FORM)]
+    HRESULT form([retval, out] IHTMLFormElement **p);
+}
+
+/*****************************************************************************
+ *    IHTMLOptionElementFactory interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F38C-98B5-11Cf-BB82-00AA00BDCE0B)
+]
+interface IHTMLOptionElementFactory : IDispatch
+{
+    [id(DISPID_IHTMLOPTIONELEMENTFACTORY_CREATE)]
+    HRESULT create(
+        [optional, in] VARIANT text,
+        [optional, in] VARIANT value,
+        [optional, in] VARIANT defaultselected,
+        [optional, in] VARIANT selected,
+        [retval, out] IHTMLOptionElement **optelem);
+}
+
+/*****************************************************************************
+ *    DispHTMLOptionElement dispinterface
+ */
+[
+    hidden,
+    uuid(3050f52b-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLOptionElement
+{
+properties:
+methods:
+    [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
+    void setAttribute(
+            [in] BSTR strAttributeName,
+            [in] VARIANT AttributeValue,
+            [in, defaultvalue(1)] LONG lFlags);
+
+    [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
+    VARIANT getAttribute(
+             [in] BSTR strAttributeName,
+             [in, defaultvalue(0)] LONG lFlags);
+
+    [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
+    VARIANT_BOOL removeAttribute(
+            [in] BSTR strAttributeName,
+            [in, defaultvalue(1)] LONG lFlags);
+
+    [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+    void className(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+    BSTR className();
+
+    [propput, id(DISPID_IHTMLELEMENT_ID), bindable]
+    void id(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ID), bindable]
+    BSTR id();
+
+    [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
+    BSTR tagName();
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
+    IHTMLElement *parentElement();
+
+    [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]
+    IHTMLStyle *style();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+    void onhelp(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+    VARIANT onhelp();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+    void onclick(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+    VARIANT onclick();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+    void ondblclick(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+    VARIANT ondblclick();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+    void onkeydown(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+    VARIANT onkeydown();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+    void onkeyup(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+    VARIANT onkeyup();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+    void onkeypress(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+    VARIANT onkeypress();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+    void onmouseout(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+    VARIANT onmouseout();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+    void onmouseover(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+    VARIANT onmouseover();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+    void onmousemove(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+    VARIANT onmousemove();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+    void onmousedown(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+    VARIANT onmousedown();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+    void onmouseup(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+    VARIANT onmouseup();
+
+    [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
+    IDispatch *document();
+
+    [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+    void title(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+    BSTR title();
+
+    [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+    void language(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+    BSTR language();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+    void onselectstart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+    VARIANT onselectstart();
+
+    [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
+    void scrollIntoView([in, optional] VARIANT varargStart);
+
+    [id(DISPID_IHTMLELEMENT_CONTAINS)]
+    VARIANT_BOOL contains([in] IHTMLElement *pChild);
+
+    [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]
+    long sourceIndex();
+
+    [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
+    VARIANT recordNumber();
+
+    [propput, id(DISPID_IHTMLELEMENT_LANG)]
+    void lang(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANG)]
+    BSTR lang();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
+    long offsetLeft();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
+    long offsetTop();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
+    long offsetWidth();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
+    long offsetHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
+    IHTMLElement *offsetParent();
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    void innerHTML(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    BSTR innerHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    void innerText(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    BSTR innerText();
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    void outerHTML(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    BSTR outerHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    void outerText(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    BSTR outerText();
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
+    void insertAdjacentHTML(
+            [in] BSTR where,
+            [in] BSTR html);
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
+    void insertAdjacentText(
+            [in] BSTR where,
+            [in] BSTR text);
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
+    IHTMLElement *parentTextEdit();
+
+    [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
+    VARIANT_BOOL isTextEdit();
+
+    [id(DISPID_IHTMLELEMENT_CLICK)]
+    void click();
+
+    [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
+    IHTMLFiltersCollection *filters();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+    void ondragstart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+    VARIANT ondragstart();
+
+    [id(DISPID_IHTMLELEMENT_TOSTRING)]
+    BSTR toString();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+    void onbeforeupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+    VARIANT onbeforeupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+    void onafterupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+    VARIANT onafterupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+    void onerrorupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+    VARIANT onerrorupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+    void onrowexit(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+    VARIANT onrowexit();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+    void onrowenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+    VARIANT onrowenter();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+    void ondatasetchanged(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+    VARIANT ondatasetchanged();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+    void ondataavailable(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+    VARIANT ondataavailable();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+    void ondatasetcomplete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+    VARIANT ondatasetcomplete();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+    void onfilterchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+    VARIANT onfilterchange();
+
+    [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
+    IDispatch *children();
+
+    [propget, id(DISPID_IHTMLELEMENT_ALL)]
+    IDispatch *all();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
+    BSTR scopeName();
+
+    [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
+    void setCapture([in, defaultvalue(-1)] VARIANT_BOOL containerCapture);
+
+    [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
+    void releaseCapture();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    void onlosecapture(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    VARIANT onlosecapture();
+
+    [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
+    BSTR componentFromPoint(
+            [in] long x,
+            [in] long y);
+
+    [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
+    void doScroll([in, optional] VARIANT component);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    void onscroll(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    VARIANT onscroll();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    void ondrag(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    VARIANT ondrag();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    void ondragend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    VARIANT ondragend();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    void ondragenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    VARIANT ondragenter();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    void ondragover(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    VARIANT ondragover();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    void ondragleave(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    VARIANT ondragleave();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+    void ondrop(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+    VARIANT ondrop();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    void onbeforecut(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    VARIANT onbeforecut();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    void oncut(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    VARIANT oncut();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    void onbeforecopy(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    VARIANT onbeforecopy();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    void oncopy(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    VARIANT oncopy();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+    void onbeforepaste(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+    VARIANT onbeforepaste();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    void onpaste(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    VARIANT onpaste();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
+    IHTMLCurrentStyle *currentStyle();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    void onpropertychange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    VARIANT onpropertychange();
+
+    [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
+    IHTMLRectCollection *getClientRects();
+
+    [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
+    IHTMLRect *getBoundingClientRect();
+
+    [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
+    void setExpression(
+            [in] BSTR propname,
+            [in] BSTR expression,
+            [in, defaultvalue("")] BSTR language);
+
+    [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
+    VARIANT getExpression([in] BSTR propname);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
+    VARIANT_BOOL removeExpression([in] BSTR propname);
+
+    [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    void tabIndex(short v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    short tabIndex();
+
+    [id(DISPID_IHTMLELEMENT2_FOCUS)]
+    void focus();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    void accessKey(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    BSTR accessKey();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+    void onblur(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+    VARIANT onblur();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    void onfocus(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    VARIANT onfocus();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    void onresize(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    VARIANT onresize();
+
+    [id(DISPID_IHTMLELEMENT2_BLUR)]
+    void blur();
+
+    [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
+    void addFilter([in] IUnknown *pUnk);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
+    void removeFilter([in] IUnknown *pUnk);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
+    long clientHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
+    long clientWidth();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
+    long clientTop();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
+    long clientLeft();
+
+    [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
+    VARIANT_BOOL attachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp);
+
+    [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
+    void detachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp);
+
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
+    VARIANT readyState();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    void onreadystatechange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    VARIANT onreadystatechange();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    void onrowsdelete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    VARIANT onrowsdelete();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+    void onrowsinserted(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+     VARIANT onrowsinserted();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+     void oncellchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+    VARIANT oncellchange();
+
+    [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    void dir(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    BSTR dir();
+
+    [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
+    IDispatch *createControlRange();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
+    long scrollHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
+    long scrollWidth();
+
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    void scrollTop(long v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    long scrollTop();
+
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    void scrollLeft(long v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    long scrollLeft();
+
+    [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
+    void clearAttributes();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    void oncontextmenu(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    VARIANT oncontextmenu();
+
+    [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
+    IHTMLElement *insertAdjacentElement(
+            [in] BSTR where,
+            [in] IHTMLElement *insertedElement);
+
+    [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
+    IHTMLElement *applyElement(
+            [in] IHTMLElement *apply,
+            [in] BSTR where);
+
+    [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
+    BSTR getAdjacentText([in] BSTR where);
+
+    [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
+    BSTR replaceAdjacentText(
+            [in] BSTR where,
+            [in] BSTR newText);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
+    VARIANT_BOOL canHaveChildren();
+
+    [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
+    long addBehavior(
+            [in] BSTR bstrUrl,
+            [in, optional] VARIANT *pvarFactory);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
+    VARIANT_BOOL removeBehavior([in] long cookie);
+
+    [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
+    IHTMLStyle *runtimeStyle();
+
+    [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
+    IDispatch *behaviorUrns();
+
+    [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    void tagUrn(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    BSTR tagUrn();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    void onbeforeeditfocus(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    VARIANT onbeforeeditfocus();
+
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
+    long readyStateValue();
+
+    [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
+    IHTMLElementCollection *getElementsByTagName([in] BSTR v);
+
+    [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]
+    void mergeAttributes(
+            [in] IHTMLElement *mergeThis,
+            [in, optional] VARIANT *pvarFlags);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
+    VARIANT_BOOL isMultiLine();
+
+    [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
+    VARIANT_BOOL canHaveHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    void onlayoutcomplete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    VARIANT onlayoutcomplete();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    void onpage(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    VARIANT onpage();
+
+    [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    void inflateBlock(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    VARIANT_BOOL inflateBlock();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    void onbeforedeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    VARIANT onbeforedeactivate();
+
+    [id(DISPID_IHTMLELEMENT3_SETACTIVE)]
+    void setActive();
+
+    [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    void contentEditable(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    BSTR contentEditable();
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
+    VARIANT_BOOL isContentEditable();
+
+    [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    void hideFocus(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    VARIANT_BOOL hideFocus();
+
+    [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    void disabled(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    VARIANT_BOOL disabled();
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
+    VARIANT_BOOL isDisabled();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    void onmove(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    VARIANT onmove();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    void oncontrolselect(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    VARIANT oncontrolselect();
+
+    [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
+    VARIANT_BOOL fireEvent(
+            [in] BSTR bstrEventName,
+            [in, optional] VARIANT *pvarEventObject);
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+    void onresizestart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+    VARIANT onresizestart();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    void onresizeend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    VARIANT onresizeend();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    void onmovestart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    VARIANT onmovestart();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    void onmoveend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    VARIANT onmoveend();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    void onmouseenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    VARIANT onmouseenter();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    void onmouseleave(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    VARIANT onmouseleave();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+    void onactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+    VARIANT onactivate();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    void ondeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    VARIANT ondeactivate();
+
+    [id(DISPID_IHTMLELEMENT3_DRAGDROP)]
+    VARIANT_BOOL dragDrop();
+
+    [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
+    LONG glyphMode();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    void onmousewheel(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    VARIANT onmousewheel();
+
+    [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
+    void normalize();
+
+    [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
+    IHTMLDOMAttribute *getAttributeNode([in] BSTR bstrname);
+
+    [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
+    IHTMLDOMAttribute *setAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+    [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
+    IHTMLDOMAttribute *removeAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    void onbeforeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    VARIANT onbeforeactivate();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    void onfocusin(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    VARIANT onfocusin();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    void onfocusout(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    VARIANT onfocusout();
+
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
+    long uniqueNumber();
+
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
+    BSTR uniqueID();
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
+    long nodeType();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
+    IHTMLDOMNode *parentNode();
+
+    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
+    VARIANT_BOOL hasChildNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
+    IDispatch *childNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
+    IDispatch *attributes();
+
+    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
+    IHTMLDOMNode *insertBefore(
+            [in] IHTMLDOMNode *newChild,
+            [in, optional] VARIANT refChild);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
+    IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
+    IHTMLDOMNode *replaceChild(
+            [in] IHTMLDOMNode *newChild,
+            [in] IHTMLDOMNode *oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_CLONENODE)]
+    IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
+    IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
+    IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
+    IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
+
+    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
+    IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
+    BSTR nodeName();
+
+    [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    void nodeValue(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    VARIANT nodeValue();
+
+    [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
+    IHTMLDOMNode *firstChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
+    IHTMLDOMNode *lastChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
+    IHTMLDOMNode *previousSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
+    IHTMLDOMNode *nextSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
+    IDispatch *ownerDocument();
+
+    [propput, id(DISPID_IHTMLDATABINDING_DATAFLD)]
+    void dataFld(BSTR v);
+
+    [propget, id(DISPID_IHTMLDATABINDING_DATAFLD)]
+    BSTR dataFld();
+
+    [propput, id(DISPID_IHTMLDATABINDING_DATASRC)]
+    void dataSrc(BSTR v);
+
+    [propget, id(DISPID_IHTMLDATABINDING_DATASRC)]
+    BSTR dataSrc();
+
+    [propput, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
+    void dataFormatAs(BSTR v);
+
+    [propget, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
+    BSTR dataFormatAs();
+
+    [propput, id(DISPID_IHTMLOPTIONELEMENT_SELECTED)]
+    void selected(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_SELECTED)]
+    VARIANT_BOOL selected();
+
+    [propput, id(DISPID_IHTMLOPTIONELEMENT_VALUE)]
+    void value(BSTR v);
+
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_VALUE)]
+    BSTR value();
+
+    [propput, id(DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)]
+    void defaultSelected(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)]
+    VARIANT_BOOL defaultSelected();
+
+    [propput, id(DISPID_IHTMLOPTIONELEMENT_INDEX)]
+    void index(LONG v);
+
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_INDEX)]
+    LONG index();
+
+    [propput, id(DISPID_IHTMLOPTIONELEMENT_TEXT)]
+    void text(BSTR v);
+
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_TEXT)]
+    BSTR text();
+
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_FORM)]
+    IHTMLFormElement *form();
+
+    [propput, id(DISPID_IHTMLOPTIONELEMENT3_LABEL), displaybind, bindable]
+    void label(BSTR v);
+
+    [propget, id(DISPID_IHTMLOPTIONELEMENT3_LABEL), displaybind, bindable]
+    BSTR label();
+}
+
+/*****************************************************************************
+ *    IHTMLInputElement interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f5d2-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLInputElement : IDispatch
+{
+    [propput, id(DISPID_IHTMLINPUTELEMENT_TYPE)]
+    HRESULT type([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_TYPE)]
+    HRESULT type([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_VALUE), displaybind, bindable]
+    HRESULT value([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_VALUE), displaybind, bindable]
+    HRESULT value([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_NAME), displaybind, bindable]
+    HRESULT name([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_NAME), displaybind, bindable]
+    HRESULT name([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_STATUS)]
+    HRESULT status([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_STATUS)]
+    HRESULT status([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_DISABLED), displaybind, bindable]
+    HRESULT disabled([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_DISABLED), displaybind, bindable]
+    HRESULT disabled([retval, out] VARIANT_BOOL *p);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_FORM)]
+    HRESULT form([retval, out] IHTMLFormElement **p);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_SIZE), displaybind, bindable]
+    HRESULT size([in] long v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_SIZE), displaybind, bindable]
+    HRESULT size([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_MAXLENGTH), displaybind, bindable]
+    HRESULT maxLength([in] long v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_MAXLENGTH), displaybind, bindable]
+    HRESULT maxLength([retval, out] long *p);
+
+    [id(DISPID_IHTMLINPUTELEMENT_SELECT)]
+    HRESULT select();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ONCHANGE), displaybind, bindable]
+    HRESULT onchange([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ONCHANGE), displaybind, bindable]
+    HRESULT onchange([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ONSELECT), displaybind, bindable]
+    HRESULT onselect([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ONSELECT), displaybind, bindable]
+    HRESULT onselect([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
+    HRESULT defaultValue([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
+    HRESULT defaultValue([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_READONLY), displaybind, bindable]
+    HRESULT readOnly([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_READONLY), displaybind, bindable]
+    HRESULT readOnly([retval, out] VARIANT_BOOL *p);
+
+    [id(DISPID_IHTMLINPUTELEMENT_CREATETEXTRANGE)]
+    HRESULT createTextRange([retval, out] IHTMLTxtRange **range);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_INDETERMINATE), bindable]
+    HRESULT indeterminate([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_INDETERMINATE), bindable]
+    HRESULT indeterminate([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_DEFAULTCHECKED), bindable]
+    HRESULT defaultChecked([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_DEFAULTCHECKED), bindable]
+    HRESULT defaultChecked([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_CHECKED), bindable]
+    HRESULT checked([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_CHECKED), bindable]
+    HRESULT checked([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_BORDER), displaybind, bindable]
+    HRESULT border([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_BORDER), displaybind, bindable]
+    HRESULT border([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_VSPACE), displaybind, bindable]
+    HRESULT vspace([in] long v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_VSPACE), displaybind, bindable]
+    HRESULT vspace([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_HSPACE), displaybind, bindable]
+    HRESULT hspace([in] long v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_HSPACE), displaybind, bindable]
+    HRESULT hspace([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ALT), displaybind, bindable]
+    HRESULT alt([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ALT), displaybind, bindable]
+    HRESULT alt([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_SRC), displaybind, bindable]
+    HRESULT src([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_SRC), displaybind, bindable]
+    HRESULT src([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_LOWSRC), displaybind, bindable]
+    HRESULT lowsrc([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_LOWSRC), displaybind, bindable]
+    HRESULT lowsrc([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_VRML), displaybind, bindable]
+    HRESULT vrml([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_VRML), displaybind, bindable]
+    HRESULT vrml([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_DYNSRC), displaybind, bindable]
+    HRESULT dynsrc([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_DYNSRC), displaybind, bindable]
+    HRESULT dynsrc([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_READYSTATE)]
+    HRESULT readyState([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_COMPLETE)]
+    HRESULT complete([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_LOOP), displaybind, bindable]
+    HRESULT loop([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_LOOP), displaybind, bindable]
+    HRESULT loop([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ALIGN), displaybind, bindable]
+    HRESULT align([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ALIGN), displaybind, bindable]
+    HRESULT align([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ONLOAD), displaybind, bindable]
+    HRESULT onload([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ONLOAD), displaybind, bindable]
+    HRESULT onload([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ONERROR), displaybind, bindable]
+    HRESULT onerror([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ONERROR), displaybind, bindable]
+    HRESULT onerror([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ONABORT), displaybind, bindable]
+    HRESULT onabort([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ONABORT), displaybind, bindable]
+    HRESULT onabort([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_WIDTH)]
+    HRESULT width([in] long v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_WIDTH)]
+    HRESULT width([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_HEIGHT)]
+    HRESULT height([in] long v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_HEIGHT)]
+    HRESULT height([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_START), displaybind, bindable]
+    HRESULT start([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_START), displaybind, bindable]
+    HRESULT start([retval, out] BSTR *p);
+}
+
+/*****************************************************************************
+ *    IHTMLInputTextElement interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f2a6-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLInputTextElement : IDispatch
+{
+    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_TYPE)]
+    HRESULT type([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_VALUE), displaybind, bindable]
+    HRESULT value([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_VALUE), displaybind, bindable]
+    HRESULT value([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_NAME), displaybind, bindable]
+    HRESULT name([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_NAME), displaybind, bindable]
+    HRESULT name([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_STATUS)]
+    HRESULT status([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_STATUS)]
+    HRESULT status([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_DISABLED), displaybind, bindable]
+    HRESULT disabled([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_DISABLED), displaybind, bindable]
+    HRESULT disabled([retval, out] VARIANT_BOOL *p);
+
+    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_FORM)]
+    HRESULT form([retval, out] IHTMLFormElement **p);
+
+    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
+    HRESULT defaultValue([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
+    HRESULT defaultValue([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_SIZE), displaybind, bindable]
+    HRESULT size([in] long v);
+
+    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_SIZE), displaybind, bindable]
+    HRESULT size([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_MAXLENGTH), displaybind, bindable]
+    HRESULT maxLength([in] long v);
+
+    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_MAXLENGTH), displaybind, bindable]
+    HRESULT maxLength([retval, out] long *p);
+
+    [id(DISPID_IHTMLINPUTTEXTELEMENT_SELECT)]
+    HRESULT select();
+
+    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_ONCHANGE), displaybind, bindable]
+    HRESULT onchange([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_ONCHANGE), displaybind, bindable]
+    HRESULT onchange([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_ONSELECT), displaybind, bindable]
+    HRESULT onselect([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_ONSELECT), displaybind, bindable]
+    HRESULT onselect([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_READONLY), displaybind, bindable]
+    HRESULT readOnly([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_READONLY), displaybind, bindable]
+    HRESULT readOnly([retval, out] VARIANT_BOOL *p);
+
+    [id(DISPID_IHTMLINPUTTEXTELEMENT_CREATETEXTRANGE)]
+    HRESULT createTextRange([retval, out] IHTMLTxtRange **range);
+}
+
+[
+    hidden,
+    uuid(3050f57d-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLInputElement
+{
+properties:
+methods:
+    [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
+    void setAttribute(
+            [in] BSTR strAttributeName,
+            [in] VARIANT AttributeValue,
+            [in, defaultvalue(1)] LONG lFlags);
+
+    [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
+    VARIANT getAttribute(
+             [in] BSTR strAttributeName,
+             [in, defaultvalue(0)] LONG lFlags);
+
+    [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
+    VARIANT_BOOL removeAttribute(
+            [in] BSTR strAttributeName,
+            [in, defaultvalue(1)] LONG lFlags);
+
+    [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+    void className(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+    BSTR className();
+
+    [propput, id(DISPID_IHTMLELEMENT_ID), bindable]
+    void id(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ID), bindable]
+    BSTR id();
+
+    [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
+    BSTR tagName();
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
+    IHTMLElement *parentElement();
+
+    [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]
+    IHTMLStyle *style();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+    void onhelp(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+    VARIANT onhelp();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+    void onclick(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+    VARIANT onclick();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+    void ondblclick(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+    VARIANT ondblclick();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+    void onkeydown(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+    VARIANT onkeydown();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+    void onkeyup(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+    VARIANT onkeyup();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+    void onkeypress(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+    VARIANT onkeypress();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+    void onmouseout(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+    VARIANT onmouseout();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+    void onmouseover(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+    VARIANT onmouseover();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+    void onmousemove(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+    VARIANT onmousemove();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+    void onmousedown(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+    VARIANT onmousedown();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+    void onmouseup(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+    VARIANT onmouseup();
+
+    [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
+    IDispatch *document();
+
+    [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+    void title(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+    BSTR title();
+
+    [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+    void language(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+    BSTR language();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+    void onselectstart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+    VARIANT onselectstart();
+
+    [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
+    void scrollIntoView([in, optional] VARIANT varargStart);
+
+    [id(DISPID_IHTMLELEMENT_CONTAINS)]
+    VARIANT_BOOL contains([in] IHTMLElement *pChild);
+
+    [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]
+    long sourceIndex();
+
+    [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
+    VARIANT recordNumber();
+
+    [propput, id(DISPID_IHTMLELEMENT_LANG)]
+    void lang(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANG)]
+    BSTR lang();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
+    long offsetLeft();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
+    long offsetTop();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
+    long offsetWidth();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
+    long offsetHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
+    IHTMLElement *offsetParent();
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    void innerHTML(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    BSTR innerHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    void innerText(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    BSTR innerText();
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    void outerHTML(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    BSTR outerHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    void outerText(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    BSTR outerText();
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
+    void insertAdjacentHTML(
+            [in] BSTR where,
+            [in] BSTR html);
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
+    void insertAdjacentText(
+            [in] BSTR where,
+            [in] BSTR text);
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
+    IHTMLElement *parentTextEdit();
+
+    [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
+    VARIANT_BOOL isTextEdit();
+
+    [id(DISPID_IHTMLELEMENT_CLICK)]
+    void click();
+
+    [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
+    IHTMLFiltersCollection *filters();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+    void ondragstart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+    VARIANT ondragstart();
+
+    [id(DISPID_IHTMLELEMENT_TOSTRING)]
+    BSTR toString();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+    void onbeforeupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+    VARIANT onbeforeupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+    void onafterupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+    VARIANT onafterupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+    void onerrorupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+    VARIANT onerrorupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+    void onrowexit(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+    VARIANT onrowexit();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+    void onrowenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+    VARIANT onrowenter();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+    void ondatasetchanged(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+    VARIANT ondatasetchanged();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+    void ondataavailable(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+    VARIANT ondataavailable();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+    void ondatasetcomplete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+    VARIANT ondatasetcomplete();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+    void onfilterchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+    VARIANT onfilterchange();
+
+    [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
+    IDispatch *children();
+
+    [propget, id(DISPID_IHTMLELEMENT_ALL)]
+    IDispatch *all();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
+    BSTR scopeName();
+
+    [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
+    void setCapture([in, defaultvalue(-1)] VARIANT_BOOL containerCapture);
+
+    [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
+    void releaseCapture();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    void onlosecapture(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    VARIANT onlosecapture();
+
+    [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
+    BSTR componentFromPoint(
+            [in] long x,
+            [in] long y);
+
+    [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
+    void doScroll([in, optional] VARIANT component);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    void onscroll(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    VARIANT onscroll();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    void ondrag(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    VARIANT ondrag();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    void ondragend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    VARIANT ondragend();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    void ondragenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    VARIANT ondragenter();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    void ondragover(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    VARIANT ondragover();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    void ondragleave(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    VARIANT ondragleave();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+    void ondrop(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+    VARIANT ondrop();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    void onbeforecut(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    VARIANT onbeforecut();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    void oncut(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    VARIANT oncut();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    void onbeforecopy(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    VARIANT onbeforecopy();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    void oncopy(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    VARIANT oncopy();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+    void onbeforepaste(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+    VARIANT onbeforepaste();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    void onpaste(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    VARIANT onpaste();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
+    IHTMLCurrentStyle *currentStyle();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    void onpropertychange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    VARIANT onpropertychange();
+
+    [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
+    IHTMLRectCollection *getClientRects();
+
+    [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
+    IHTMLRect *getBoundingClientRect();
+
+    [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
+    void setExpression(
+            [in] BSTR propname,
+            [in] BSTR expression,
+            [in, defaultvalue("")] BSTR language);
+
+    [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
+    VARIANT getExpression([in] BSTR propname);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
+    VARIANT_BOOL removeExpression([in] BSTR propname);
+
+    [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    void tabIndex(short v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    short tabIndex();
+
+    [id(DISPID_IHTMLELEMENT2_FOCUS)]
+    void focus();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    void accessKey(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    BSTR accessKey();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+    void onblur(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+    VARIANT onblur();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    void onfocus(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    VARIANT onfocus();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    void onresize(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    VARIANT onresize();
+
+    [id(DISPID_IHTMLELEMENT2_BLUR)]
+    void blur();
+
+    [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
+    void addFilter([in] IUnknown *pUnk);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
+    void removeFilter([in] IUnknown *pUnk);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
+    long clientHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
+    long clientWidth();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
+    long clientTop();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
+    long clientLeft();
+
+    [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
+    VARIANT_BOOL attachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp);
+
+    [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
+    void detachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp);
+
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
+    VARIANT readyState();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    void onreadystatechange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    VARIANT onreadystatechange();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    void onrowsdelete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    VARIANT onrowsdelete();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+    void onrowsinserted(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+     VARIANT onrowsinserted();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+     void oncellchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+    VARIANT oncellchange();
+
+    [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    void dir(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    BSTR dir();
+
+    [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
+    IDispatch *createControlRange();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
+    long scrollHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
+    long scrollWidth();
+
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    void scrollTop(long v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    long scrollTop();
+
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    void scrollLeft(long v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    long scrollLeft();
+
+    [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
+    void clearAttributes();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    void oncontextmenu(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    VARIANT oncontextmenu();
+
+    [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
+    IHTMLElement *insertAdjacentElement(
+            [in] BSTR where,
+            [in] IHTMLElement *insertedElement);
+
+    [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
+    IHTMLElement *applyElement(
+            [in] IHTMLElement *apply,
+            [in] BSTR where);
+
+    [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
+    BSTR getAdjacentText([in] BSTR where);
+
+    [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
+    BSTR replaceAdjacentText(
+            [in] BSTR where,
+            [in] BSTR newText);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
+    VARIANT_BOOL canHaveChildren();
+
+    [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
+    long addBehavior(
+            [in] BSTR bstrUrl,
+            [in, optional] VARIANT *pvarFactory);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
+    VARIANT_BOOL removeBehavior([in] long cookie);
+
+    [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
+    IHTMLStyle *runtimeStyle();
+
+    [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
+    IDispatch *behaviorUrns();
+
+    [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    void tagUrn(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    BSTR tagUrn();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    void onbeforeeditfocus(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    VARIANT onbeforeeditfocus();
+
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
+    long readyStateValue();
+
+    [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
+    IHTMLElementCollection *getElementsByTagName([in] BSTR v);
+
+    [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]
+    void mergeAttributes(
+            [in] IHTMLElement *mergeThis,
+            [in, optional] VARIANT *pvarFlags);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
+    VARIANT_BOOL isMultiLine();
+
+    [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
+    VARIANT_BOOL canHaveHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    void onlayoutcomplete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    VARIANT onlayoutcomplete();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    void onpage(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    VARIANT onpage();
+
+    [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    void inflateBlock(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    VARIANT_BOOL inflateBlock();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    void onbeforedeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    VARIANT onbeforedeactivate();
+
+    [id(DISPID_IHTMLELEMENT3_SETACTIVE)]
+    void setActive();
+
+    [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    void contentEditable(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    BSTR contentEditable();
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
+    VARIANT_BOOL isContentEditable();
+
+    [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    void hideFocus(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    VARIANT_BOOL hideFocus();
+
+    [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    void disabled(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    VARIANT_BOOL disabled();
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
+    VARIANT_BOOL isDisabled();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    void onmove(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    VARIANT onmove();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    void oncontrolselect(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    VARIANT oncontrolselect();
+
+    [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
+    VARIANT_BOOL fireEvent(
+            [in] BSTR bstrEventName,
+            [in, optional] VARIANT *pvarEventObject);
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+    void onresizestart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+    VARIANT onresizestart();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    void onresizeend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    VARIANT onresizeend();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    void onmovestart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    VARIANT onmovestart();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    void onmoveend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    VARIANT onmoveend();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    void onmouseenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    VARIANT onmouseenter();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    void onmouseleave(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    VARIANT onmouseleave();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+    void onactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+    VARIANT onactivate();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    void ondeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    VARIANT ondeactivate();
+
+    [id(DISPID_IHTMLELEMENT3_DRAGDROP)]
+    VARIANT_BOOL dragDrop();
+
+    [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
+    LONG glyphMode();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    void onmousewheel(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    VARIANT onmousewheel();
+
+    [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
+    void normalize();
+
+    [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
+    IHTMLDOMAttribute *getAttributeNode([in] BSTR bstrname);
+
+    [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
+    IHTMLDOMAttribute *setAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+    [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
+    IHTMLDOMAttribute *removeAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    void onbeforeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    VARIANT onbeforeactivate();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    void onfocusin(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    VARIANT onfocusin();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    void onfocusout(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    VARIANT onfocusout();
+
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
+    long uniqueNumber();
+
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
+    BSTR uniqueID();
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
+    long nodeType();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
+    IHTMLDOMNode *parentNode();
+
+    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
+    VARIANT_BOOL hasChildNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
+    IDispatch *childNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
+    IDispatch *attributes();
+
+    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
+    IHTMLDOMNode *insertBefore(
+            [in] IHTMLDOMNode *newChild,
+            [in, optional] VARIANT refChild);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
+    IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
+    IHTMLDOMNode *replaceChild(
+            [in] IHTMLDOMNode *newChild,
+            [in] IHTMLDOMNode *oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_CLONENODE)]
+    IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
+    IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
+    IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
+    IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
+
+    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
+    IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
+    BSTR nodeName();
+
+    [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    void nodeValue(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    VARIANT nodeValue();
+
+    [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
+    IHTMLDOMNode *firstChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
+    IHTMLDOMNode *lastChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
+    IHTMLDOMNode *previousSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
+    IHTMLDOMNode *nextSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
+    IDispatch *ownerDocument();
+
+    [propput, id(DISPID_IHTMLDATABINDING_DATAFLD)]
+    void dataFld(BSTR v);
+
+    [propget, id(DISPID_IHTMLDATABINDING_DATAFLD)]
+    BSTR dataFld();
+
+    [propput, id(DISPID_IHTMLDATABINDING_DATASRC)]
+    void dataSrc(BSTR v);
+
+    [propget, id(DISPID_IHTMLDATABINDING_DATASRC)]
+    BSTR dataSrc();
+
+    [propput, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
+    void dataFormatAs(BSTR v);
+
+    [propget, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
+    BSTR dataFormatAs();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_TYPE)]
+    void type(BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_TYPE)]
+    BSTR type();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_VALUE), displaybind, bindable]
+    void value(BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_VALUE), displaybind, bindable]
+    BSTR value();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_NAME), displaybind, bindable]
+    void name(BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_NAME), displaybind, bindable]
+    BSTR name();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_STATUS)]
+    void status(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_STATUS)]
+    VARIANT_BOOL status();
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_FORM)]
+    IHTMLFormElement *form();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_SIZE), displaybind, bindable]
+    void size(long v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_SIZE), displaybind, bindable]
+    long size();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_MAXLENGTH), displaybind, bindable]
+    void maxLength(long v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_MAXLENGTH), displaybind, bindable]
+    long maxLength();
+
+    [id(DISPID_IHTMLINPUTELEMENT_SELECT)]
+    void select();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ONCHANGE), displaybind, bindable]
+    void onchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ONCHANGE), displaybind, bindable]
+    VARIANT onchange();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ONSELECT), displaybind, bindable]
+    void onselect(VARIANT v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ONSELECT), displaybind, bindable]
+    VARIANT onselect();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
+    void defaultValue(BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
+    BSTR defaultValue();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_READONLY), displaybind, bindable]
+    void readOnly(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_READONLY), displaybind, bindable]
+    VARIANT_BOOL readOnly();
+
+    [id(DISPID_IHTMLINPUTELEMENT_CREATETEXTRANGE)]
+    IHTMLTxtRange *createTextRange();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_INDETERMINATE), bindable]
+    void indeterminate(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_INDETERMINATE), bindable]
+    VARIANT_BOOL indeterminate();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_DEFAULTCHECKED), bindable]
+    void defaultChecked(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_DEFAULTCHECKED), bindable]
+    VARIANT_BOOL defaultChecked();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_CHECKED), bindable]
+    void checked(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_CHECKED), bindable]
+    VARIANT_BOOL checked();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_BORDER), displaybind, bindable]
+    void border(VARIANT v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_BORDER), displaybind, bindable]
+    VARIANT border();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_VSPACE), displaybind, bindable]
+    void vspace(long v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_VSPACE), displaybind, bindable]
+    long vspace();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_HSPACE), displaybind, bindable]
+    void hspace(long v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_HSPACE), displaybind, bindable]
+    long hspace();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ALT), displaybind, bindable]
+    void alt(BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ALT), displaybind, bindable]
+    BSTR alt();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_SRC), displaybind, bindable]
+    void src(BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_SRC), displaybind, bindable]
+    BSTR src();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_LOWSRC), displaybind, bindable]
+    void lowsrc(BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_LOWSRC), displaybind, bindable]
+    BSTR lowsrc();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_VRML), displaybind, bindable]
+    void vrml(BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_VRML), displaybind, bindable]
+    BSTR vrml();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_DYNSRC), displaybind, bindable]
+    void dynsrc(BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_DYNSRC), displaybind, bindable]
+    BSTR dynsrc();
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_COMPLETE)]
+    VARIANT_BOOL complete();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_LOOP), displaybind, bindable]
+    void loop(VARIANT v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_LOOP), displaybind, bindable]
+    VARIANT loop();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ALIGN), displaybind, bindable]
+    void align(BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ALIGN), displaybind, bindable]
+    BSTR align();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ONLOAD), displaybind, bindable]
+    void onload(VARIANT v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ONLOAD), displaybind, bindable]
+    VARIANT onload();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ONERROR), displaybind, bindable]
+    void onerror(VARIANT v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ONERROR), displaybind, bindable]
+    VARIANT onerror();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ONABORT), displaybind, bindable]
+    void onabort(VARIANT v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ONABORT), displaybind, bindable]
+    VARIANT onabort();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_WIDTH)]
+    void width(long v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_WIDTH)]
+    long width();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_HEIGHT)]
+    void height(long v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_HEIGHT)]
+    long height();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_START), displaybind, bindable]
+    void start(BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_START), displaybind, bindable]
+    BSTR start();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT2_ACCEPT), displaybind, bindable]
+    void accept(BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT2_ACCEPT), displaybind, bindable]
+    BSTR accept();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT2_USEMAP), displaybind, bindable]
+    void useMap(BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT2_USEMAP), displaybind, bindable]
+    BSTR useMap();
+}
+
+/*****************************************************************************
+ *    IHTMLTextAreaElement interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f2aa-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLTextAreaElement : IDispatch
+{
+    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_TYPE)]
+    HRESULT type([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_VALUE), displaybind, bindable]
+    HRESULT value([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_VALUE), displaybind, bindable]
+    HRESULT value([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_NAME), displaybind, bindable]
+    HRESULT name([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_NAME), displaybind, bindable]
+    HRESULT name([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_STATUS)]
+    HRESULT status([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_STATUS)]
+    HRESULT status([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_DISABLED), displaybind, bindable]
+    HRESULT disabled([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_DISABLED), displaybind, bindable]
+    HRESULT disabled([retval, out] VARIANT_BOOL *p);
+
+    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_FORM)]
+    HRESULT form([retval, out] IHTMLFormElement **p);
+
+    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
+    HRESULT defaultValue([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
+    HRESULT defaultValue([retval, out] BSTR *p);
+
+    [id(DISPID_IHTMLTEXTAREAELEMENT_SELECT)]
+    HRESULT select();
+
+    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_ONCHANGE), displaybind, bindable]
+    HRESULT onchange([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_ONCHANGE), displaybind, bindable]
+    HRESULT onchange([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_ONSELECT), displaybind, bindable]
+    HRESULT onselect([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_ONSELECT), displaybind, bindable]
+    HRESULT onselect([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_READONLY), displaybind, bindable]
+    HRESULT readOnly([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_READONLY), displaybind, bindable]
+    HRESULT readOnly([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_ROWS), displaybind, bindable]
+    HRESULT rows([in] long v);
+
+    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_ROWS), displaybind, bindable]
+    HRESULT rows([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_COLS), displaybind, bindable]
+    HRESULT cols([in] long v);
+
+    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_COLS), displaybind, bindable]
+    HRESULT cols([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_WRAP), displaybind, bindable]
+    HRESULT wrap([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_WRAP), displaybind, bindable]
+    HRESULT wrap([retval, out] BSTR *p);
+
+    [id(DISPID_IHTMLTEXTAREAELEMENT_CREATETEXTRANGE)]
+    HRESULT createTextRange([retval, out] IHTMLTxtRange **range);
+}
+
+/*****************************************************************************
+ *    DispHTMLUnknownElement interface
+ */
+[
+    hidden,
+    uuid(3050f539-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLUnknownElement
+{
+properties:
+methods:
+    [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
+    void setAttribute(
+            [in] BSTR strAttributeName,
+            [in] VARIANT AttributeValue,
+            [in, defaultvalue(1)] LONG lFlags);
+
+    [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
+    VARIANT getAttribute(
+             [in] BSTR strAttributeName,
+             [in, defaultvalue(0)] LONG lFlags);
+
+    [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
+    VARIANT_BOOL removeAttribute(
+            [in] BSTR strAttributeName,
+            [in, defaultvalue(1)] LONG lFlags);
+
+    [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+    void className(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+    BSTR className();
+
+    [propput, id(DISPID_IHTMLELEMENT_ID), bindable]
+    void id(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ID), bindable]
+    BSTR id();
+
+    [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
+    BSTR tagName();
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
+    IHTMLElement *parentElement();
+
+    [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]
+    IHTMLStyle *style();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+    void onhelp(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+    VARIANT onhelp();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+    void onclick(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+    VARIANT onclick();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+    void ondblclick(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+    VARIANT ondblclick();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+    void onkeydown(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+    VARIANT onkeydown();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+    void onkeyup(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+    VARIANT onkeyup();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+    void onkeypress(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+    VARIANT onkeypress();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+    void onmouseout(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+    VARIANT onmouseout();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+    void onmouseover(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+    VARIANT onmouseover();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+    void onmousemove(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+    VARIANT onmousemove();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+    void onmousedown(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+    VARIANT onmousedown();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+    void onmouseup(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+    VARIANT onmouseup();
+
+    [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
+    IDispatch *document();
+
+    [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+    void title(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+    BSTR title();
+
+    [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+    void language(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+    BSTR language();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+    void onselectstart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+    VARIANT onselectstart();
+
+    [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
+    void scrollIntoView([in, optional] VARIANT varargStart);
+
+    [id(DISPID_IHTMLELEMENT_CONTAINS)]
+    VARIANT_BOOL contains([in] IHTMLElement *pChild);
+
+    [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]
+    long sourceIndex();
+
+    [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
+    VARIANT recordNumber();
+
+    [propput, id(DISPID_IHTMLELEMENT_LANG)]
+    void lang(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANG)]
+    BSTR lang();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
+    long offsetLeft();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
+    long offsetTop();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
+    long offsetWidth();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
+    long offsetHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
+    IHTMLElement *offsetParent();
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    void innerHTML(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    BSTR innerHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    void innerText(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    BSTR innerText();
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    void outerHTML(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    BSTR outerHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    void outerText(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    BSTR outerText();
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
+    void insertAdjacentHTML(
+            [in] BSTR where,
+            [in] BSTR html);
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
+    void insertAdjacentText(
+            [in] BSTR where,
+            [in] BSTR text);
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
+    IHTMLElement *parentTextEdit();
+
+    [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
+    VARIANT_BOOL isTextEdit();
+
+    [id(DISPID_IHTMLELEMENT_CLICK)]
+    void click();
+
+    [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
+    IHTMLFiltersCollection *filters();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+    void ondragstart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+    VARIANT ondragstart();
+
+    [id(DISPID_IHTMLELEMENT_TOSTRING)]
+    BSTR toString();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+    void onbeforeupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+    VARIANT onbeforeupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+    void onafterupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+    VARIANT onafterupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+    void onerrorupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+    VARIANT onerrorupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+    void onrowexit(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+    VARIANT onrowexit();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+    void onrowenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+    VARIANT onrowenter();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+    void ondatasetchanged(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+    VARIANT ondatasetchanged();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+    void ondataavailable(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+    VARIANT ondataavailable();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+    void ondatasetcomplete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+    VARIANT ondatasetcomplete();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+    void onfilterchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+    VARIANT onfilterchange();
+
+    [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
+    IDispatch *children();
+
+    [propget, id(DISPID_IHTMLELEMENT_ALL)]
+    IDispatch *all();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
+    BSTR scopeName();
+
+    [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
+    void setCapture([in, defaultvalue(-1)] VARIANT_BOOL containerCapture);
+
+    [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
+    void releaseCapture();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    void onlosecapture(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    VARIANT onlosecapture();
+
+    [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
+    BSTR componentFromPoint(
+            [in] long x,
+            [in] long y);
+
+    [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
+    void doScroll([in, optional] VARIANT component);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    void onscroll(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    VARIANT onscroll();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    void ondrag(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    VARIANT ondrag();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    void ondragend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    VARIANT ondragend();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    void ondragenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    VARIANT ondragenter();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    void ondragover(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    VARIANT ondragover();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    void ondragleave(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    VARIANT ondragleave();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+    void ondrop(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+    VARIANT ondrop();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    void onbeforecut(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    VARIANT onbeforecut();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    void oncut(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    VARIANT oncut();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    void onbeforecopy(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    VARIANT onbeforecopy();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    void oncopy(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    VARIANT oncopy();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+    void onbeforepaste(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+    VARIANT onbeforepaste();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    void onpaste(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    VARIANT onpaste();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
+    IHTMLCurrentStyle *currentStyle();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    void onpropertychange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    VARIANT onpropertychange();
+
+    [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
+    IHTMLRectCollection *getClientRects();
+
+    [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
+    IHTMLRect *getBoundingClientRect();
+
+    [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
+    void setExpression(
+            [in] BSTR propname,
+            [in] BSTR expression,
+            [in, defaultvalue("")] BSTR language);
+
+    [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
+    VARIANT getExpression([in] BSTR propname);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
+    VARIANT_BOOL removeExpression([in] BSTR propname);
+
+    [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    void tabIndex(short v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    short tabIndex();
+
+    [id(DISPID_IHTMLELEMENT2_FOCUS)]
+    void focus();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    void accessKey(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    BSTR accessKey();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+    void onblur(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+    VARIANT onblur();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    void onfocus(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    VARIANT onfocus();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    void onresize(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    VARIANT onresize();
+
+    [id(DISPID_IHTMLELEMENT2_BLUR)]
+    void blur();
+
+    [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
+    void addFilter([in] IUnknown *pUnk);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
+    void removeFilter([in] IUnknown *pUnk);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
+    long clientHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
+    long clientWidth();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
+    long clientTop();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
+    long clientLeft();
+
+    [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
+    VARIANT_BOOL attachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp);
+
+    [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
+    void detachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp);
+
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
+    VARIANT readyState();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    void onreadystatechange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    VARIANT onreadystatechange();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    void onrowsdelete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    VARIANT onrowsdelete();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+    void onrowsinserted(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+     VARIANT onrowsinserted();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+     void oncellchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+    VARIANT oncellchange();
+
+    [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    void dir(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    BSTR dir();
+
+    [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
+    IDispatch *createControlRange();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
+    long scrollHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
+    long scrollWidth();
+
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    void scrollTop(long v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    long scrollTop();
+
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    void scrollLeft(long v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    long scrollLeft();
+
+    [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
+    void clearAttributes();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    void oncontextmenu(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    VARIANT oncontextmenu();
+
+    [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
+    IHTMLElement *insertAdjacentElement(
+            [in] BSTR where,
+            [in] IHTMLElement *insertedElement);
+
+    [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
+    IHTMLElement *applyElement(
+            [in] IHTMLElement *apply,
+            [in] BSTR where);
+
+    [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
+    BSTR getAdjacentText([in] BSTR where);
+
+    [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
+    BSTR replaceAdjacentText(
+            [in] BSTR where,
+            [in] BSTR newText);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
+    VARIANT_BOOL canHaveChildren();
+
+    [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
+    long addBehavior(
+            [in] BSTR bstrUrl,
+            [in, optional] VARIANT *pvarFactory);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
+    VARIANT_BOOL removeBehavior([in] long cookie);
+
+    [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
+    IHTMLStyle *runtimeStyle();
+
+    [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
+    IDispatch *behaviorUrns();
+
+    [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    void tagUrn(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    BSTR tagUrn();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    void onbeforeeditfocus(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    VARIANT onbeforeeditfocus();
+
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
+    long readyStateValue();
+
+    [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
+    IHTMLElementCollection *getElementsByTagName([in] BSTR v);
+
+    [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]
+    void mergeAttributes(
+            [in] IHTMLElement *mergeThis,
+            [in, optional] VARIANT *pvarFlags);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
+    VARIANT_BOOL isMultiLine();
+
+    [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
+    VARIANT_BOOL canHaveHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    void onlayoutcomplete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    VARIANT onlayoutcomplete();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    void onpage(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    VARIANT onpage();
+
+    [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    void inflateBlock(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    VARIANT_BOOL inflateBlock();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    void onbeforedeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    VARIANT onbeforedeactivate();
+
+    [id(DISPID_IHTMLELEMENT3_SETACTIVE)]
+    void setActive();
+
+    [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    void contentEditable(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    BSTR contentEditable();
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
+    VARIANT_BOOL isContentEditable();
+
+    [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    void hideFocus(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    VARIANT_BOOL hideFocus();
+
+    [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    void disabled(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    VARIANT_BOOL disabled();
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
+    VARIANT_BOOL isDisabled();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    void onmove(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    VARIANT onmove();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    void oncontrolselect(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    VARIANT oncontrolselect();
+
+    [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
+    VARIANT_BOOL fireEvent(
+            [in] BSTR bstrEventName,
+            [in, optional] VARIANT *pvarEventObject);
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+    void onresizestart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+    VARIANT onresizestart();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    void onresizeend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    VARIANT onresizeend();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    void onmovestart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    VARIANT onmovestart();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    void onmoveend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    VARIANT onmoveend();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    void onmouseenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    VARIANT onmouseenter();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    void onmouseleave(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    VARIANT onmouseleave();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+    void onactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+    VARIANT onactivate();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    void ondeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    VARIANT ondeactivate();
+
+    [id(DISPID_IHTMLELEMENT3_DRAGDROP)]
+    VARIANT_BOOL dragDrop();
+
+    [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
+    LONG glyphMode();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    void onmousewheel(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    VARIANT onmousewheel();
+
+    [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
+    void normalize();
+
+    [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
+    IHTMLDOMAttribute *getAttributeNode([in] BSTR bstrname);
+
+    [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
+    IHTMLDOMAttribute *setAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+    [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
+    IHTMLDOMAttribute *removeAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    void onbeforeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    VARIANT onbeforeactivate();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    void onfocusin(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    VARIANT onfocusin();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    void onfocusout(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    VARIANT onfocusout();
+
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
+    long uniqueNumber();
+
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
+    BSTR uniqueID();
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
+    long nodeType();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
+    IHTMLDOMNode *parentNode();
+
+    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
+    VARIANT_BOOL hasChildNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
+    IDispatch *childNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
+    IDispatch *attributes();
+
+    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
+    IHTMLDOMNode *insertBefore(
+            [in] IHTMLDOMNode *newChild,
+            [in, optional] VARIANT refChild);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
+    IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
+    IHTMLDOMNode *replaceChild(
+            [in] IHTMLDOMNode *newChild,
+            [in] IHTMLDOMNode *oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_CLONENODE)]
+    IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
+    IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
+    IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
+    IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
+
+    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
+    IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
+    BSTR nodeName();
+
+    [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    void nodeValue(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    VARIANT nodeValue();
+
+    [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
+    IHTMLDOMNode *firstChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
+    IHTMLDOMNode *lastChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
+    IHTMLDOMNode *previousSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
+    IHTMLDOMNode *nextSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
+    IDispatch *ownerDocument();
+}
+
+/*****************************************************************************
+ *    IOmHistory interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(FECEAAA2-8405-11CF-8BA1-00AA00476DA6)
+]
+interface IOmHistory : IDispatch
+{
+    [propget, id(DISPID_IOMHISTORY_LENGTH)]
+    HRESULT length([retval, out] short *p);
+
+    [id(DISPID_IOMHISTORY_BACK)]
+    HRESULT back([optional, in] VARIANT *pvargdistance);
+
+    [id(DISPID_IOMHISTORY_FORWARD)]
+    HRESULT forward([optional, in] VARIANT *pvargdistance);
+
+    [id(DISPID_IOMHISTORY_GO)]
+    HRESULT go([optional, in] VARIANT *pvargdistance);
+}
+
+/*****************************************************************************
+ *    IHTMLMimeTypesCollection interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F3FC-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLMimeTypesCollection : IDispatch
+{
+    [propget, id(DISPID_IHTMLMIMETYPESCOLLECTION_LENGTH)]
+    HRESULT length([retval, out] long *p);
+}
+
+/*****************************************************************************
+ *    IHTMLPluginsCollection interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F3FD-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLPluginsCollection : IDispatch
+{
+    [propget, id(DISPID_IHTMLPLUGINSCOLLECTION_LENGTH)]
+    HRESULT length([retval, out] long *p);
+
+    [id(DISPID_IHTMLPLUGINSCOLLECTION_REFRESH)]
+    HRESULT refresh([defaultvalue(0), in] VARIANT_BOOL reload);
+}
+
+/*****************************************************************************
+ *    IHTMLOpsProfile interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F401-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLOpsProfile : IDispatch
+{
+    [id(DISPID_IHTMLOPSPROFILE_ADDREQUEST)]
+    HRESULT addRequest(
+        [in] BSTR name,
+        [optional, in] VARIANT reserved,
+        [retval, out] VARIANT_BOOL *success);
+
+    [id(DISPID_IHTMLOPSPROFILE_CLEARREQUEST)]
+    HRESULT clearRequest();
+
+    [id(DISPID_IHTMLOPSPROFILE_DOREQUEST)]
+    HRESULT doRequest(
+        [in] VARIANT usage,
+        [optional, in] VARIANT fname,
+        [optional, in] VARIANT domain,
+        [optional, in] VARIANT path,
+        [optional, in] VARIANT expire,
+        [optional, in] VARIANT reserved);
+
+    [id(DISPID_IHTMLOPSPROFILE_GETATTRIBUTE)]
+    HRESULT getAttribute(
+        [in] BSTR name,
+        [retval, out] BSTR *value);
+
+    [id(DISPID_IHTMLOPSPROFILE_SETATTRIBUTE)]
+    HRESULT setAttribute(
+        [in] BSTR name,
+        [in] BSTR value,
+        [optional, in] VARIANT prefs,
+        [retval, out] VARIANT_BOOL *success);
+
+    [id(DISPID_IHTMLOPSPROFILE_COMMITCHANGES)]
+    HRESULT commitChanges([retval, out] VARIANT_BOOL *success);
+
+    [id(DISPID_IHTMLOPSPROFILE_ADDREADREQUEST)]
+    HRESULT addReadRequest(
+        [in] BSTR name,
+        [optional, in] VARIANT reserved,
+        [retval, out] VARIANT_BOOL *success);
+
+    [id(DISPID_IHTMLOPSPROFILE_DOREADREQUEST)]
+    HRESULT doReadRequest(
+        [in] VARIANT usage,
+        [optional, in] VARIANT fname,
+        [optional, in] VARIANT domain,
+        [optional, in] VARIANT path,
+        [optional, in] VARIANT expire,
+        [optional, in] VARIANT reserved);
+
+    [id(DISPID_IHTMLOPSPROFILE_DOWRITEREQUEST)]
+    HRESULT doWriteRequest([retval, out] VARIANT_BOOL *success);
+}
+
+/*****************************************************************************
+ *    IOmNavigator interface
+ */
+[
+	odl,
+	oleautomation,
+	dual,
+	uuid(FECEAAA5-8405-11CF-8BA1-00AA00476DA6)
+]
+interface IOmNavigator : IDispatch
+{
+    [propget, id(DISPID_IOMNAVIGATOR_APPCODENAME)]
+    HRESULT appCodeName([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IOMNAVIGATOR_APPNAME)]
+    HRESULT appName([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IOMNAVIGATOR_APPVERSION)]
+    HRESULT appVersion([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IOMNAVIGATOR_USERAGENT)]
+    HRESULT userAgent([retval, out] BSTR *p);
+
+    [id(DISPID_IOMNAVIGATOR_JAVAENABLED)]
+    HRESULT javaEnabled([retval, out] VARIANT_BOOL *enabled);
+
+    [id(DISPID_IOMNAVIGATOR_TAINTENABLED)]
+    HRESULT taintEnabled([retval, out] VARIANT_BOOL *enabled);
+
+    [propget, id(DISPID_IOMNAVIGATOR_MIMETYPES)]
+    HRESULT mimeTypes([retval, out] IHTMLMimeTypesCollection **p);
+
+    [propget, id(DISPID_IOMNAVIGATOR_PLUGINS)]
+    HRESULT plugins([retval, out] IHTMLPluginsCollection **p);
+
+    [propget, id(DISPID_IOMNAVIGATOR_COOKIEENABLED)]
+    HRESULT cookieEnabled([retval, out] VARIANT_BOOL *p);
+
+    [propget, id(DISPID_IOMNAVIGATOR_OPSPROFILE)]
+    HRESULT opsProfile([retval, out] IHTMLOpsProfile **p);
+
+    [id(DISPID_IOMNAVIGATOR_TOSTRING)]
+    HRESULT toString([retval, out] BSTR *String);
+
+    [propget, id(DISPID_IOMNAVIGATOR_CPUCLASS)]
+    HRESULT cpuClass([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IOMNAVIGATOR_SYSTEMLANGUAGE)]
+    HRESULT systemLanguage([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IOMNAVIGATOR_BROWSERLANGUAGE)]
+    HRESULT browserLanguage([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IOMNAVIGATOR_USERLANGUAGE)]
+    HRESULT userLanguage([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IOMNAVIGATOR_PLATFORM)]
+    HRESULT platform([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IOMNAVIGATOR_APPMINORVERSION)]
+    HRESULT appMinorVersion([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IOMNAVIGATOR_CONNECTIONSPEED)]
+    HRESULT connectionSpeed([retval, out] long *p);
+
+    [propget, id(DISPID_IOMNAVIGATOR_ONLINE)]
+    HRESULT onLine([retval, out] VARIANT_BOOL *p);
+
+    [propget, id(DISPID_IOMNAVIGATOR_USERPROFILE)]
+    HRESULT userProfile([retval, out] IHTMLOpsProfile **p);
+}
+
+/*****************************************************************************
+ *    IHTMLLocation interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(163BB1E0-6E00-11cf-837A-48DC04C10000)
+]
+interface IHTMLLocation : IDispatch
+{
+    [propput, id(DISPID_IHTMLLOCATION_HREF)]
+    HRESULT href([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLLOCATION_HREF)]
+    HRESULT href([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLLOCATION_PROTOCOL)]
+    HRESULT protocol([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLLOCATION_PROTOCOL)]
+    HRESULT protocol([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLLOCATION_HOST)]
+    HRESULT host([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLLOCATION_HOST)]
+    HRESULT host([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLLOCATION_HOSTNAME)]
+    HRESULT hostname([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLLOCATION_HOSTNAME)]
+    HRESULT hostname([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLLOCATION_PORT)]
+    HRESULT port([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLLOCATION_PORT)]
+    HRESULT port([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLLOCATION_PATHNAME)]
+    HRESULT pathname([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLLOCATION_PATHNAME)]
+    HRESULT pathname([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLLOCATION_SEARCH)]
+    HRESULT search([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLLOCATION_SEARCH)]
+    HRESULT search([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLLOCATION_HASH)]
+    HRESULT hash([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLLOCATION_HASH)]
+    HRESULT hash([retval, out] BSTR *p);
+
+    [id(DISPID_IHTMLLOCATION_RELOAD)]
+    HRESULT reload([defaultvalue(0), in] VARIANT_BOOL flag);
+
+    [id(DISPID_IHTMLLOCATION_REPLACE)]
+    HRESULT replace([in] BSTR bstr);
+
+    [id(DISPID_IHTMLLOCATION_ASSIGN)]
+    HRESULT assign([in] BSTR bstr);
+
+    [id(DISPID_IHTMLLOCATION_TOSTRING)]
+    HRESULT toString([retval, out] BSTR *String);
+}
+
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f4ce-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLBookmarkCollection : IDispatch
+{
+    [propget, id(DISPID_IHTMLBOOKMARKCOLLECTION_LENGTH), hidden]
+    HRESULT length([out, retval] long *p);
+
+    [propget, id(DISPID_IHTMLBOOKMARKCOLLECTION__NEWENUM), hidden, restricted]
+    HRESULT _newEnum([out, retval] IUnknown **p);
+
+    [id(DISPID_IHTMLBOOKMARKCOLLECTION_ITEM)]
+    HRESULT item(
+            [in] long index,
+            [out, retval] VARIANT *pVarBookmark);
+}
+
+/*****************************************************************************
+ *    IHTMLDataTransfer interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f4b3-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLDataTransfer : IDispatch
+{
+    [id(DISPID_IHTMLDATATRANSFER_SETDATA)]
+    HRESULT setData(
+            [in] BSTR format,
+            [in] VARIANT *data,
+            [out, retval] VARIANT_BOOL *pret);
+
+    [id(DISPID_IHTMLDATATRANSFER_GETDATA)]
+    HRESULT getData(
+            [in] BSTR format,
+            [out, retval] VARIANT *pvarRet);
+
+    [id(DISPID_IHTMLDATATRANSFER_CLEARDATA)]
+    HRESULT clearData(
+            [in] BSTR format,
+            [out, retval] VARIANT_BOOL *pret);
+
+    [propput, id(DISPID_IHTMLDATATRANSFER_DROPEFFECT)]
+    HRESULT dropEffect([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLDATATRANSFER_DROPEFFECT)]
+    HRESULT dropEffect([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLDATATRANSFER_EFFECTALLOWED)]
+    HRESULT effectAllowed([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLDATATRANSFER_EFFECTALLOWED)]
+    HRESULT effectAllowed([out, retval] BSTR *p);
+}
+
+/*****************************************************************************
+ *    IHTMLEventObj interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F32D-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLEventObj : IDispatch
+{
+    [propget, id(DISPID_IHTMLEVENTOBJ_SRCELEMENT)]
+    HRESULT srcElement([retval, out] IHTMLElement **p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_ALTKEY)]
+    HRESULT altKey([retval, out] VARIANT_BOOL *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_CTRLKEY)]
+    HRESULT ctrlKey([retval, out] VARIANT_BOOL *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_SHIFTKEY)]
+    HRESULT shiftKey([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLEVENTOBJ_RETURNVALUE)]
+    HRESULT returnValue([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_RETURNVALUE)]
+    HRESULT returnValue([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLEVENTOBJ_CANCELBUBBLE)]
+    HRESULT cancelBubble([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_CANCELBUBBLE)]
+    HRESULT cancelBubble([retval, out] VARIANT_BOOL *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_FROMELEMENT)]
+    HRESULT fromElement([retval, out] IHTMLElement **p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_TOELEMENT)]
+    HRESULT toElement([retval, out] IHTMLElement **p);
+
+    [propput, id(DISPID_IHTMLEVENTOBJ_KEYCODE)]
+    HRESULT keyCode([in] long v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_KEYCODE)]
+    HRESULT keyCode([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_BUTTON)]
+    HRESULT button([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_TYPE)]
+    HRESULT type([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_QUALIFIER)]
+    HRESULT qualifier([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_REASON)]
+    HRESULT reason([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_X)]
+    HRESULT x([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_Y)]
+    HRESULT y([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_CLIENTX)]
+    HRESULT clientX([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_CLIENTY)]
+    HRESULT clientY([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_OFFSETX)]
+    HRESULT offsetX([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_OFFSETY)]
+    HRESULT offsetY([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_SCREENX)]
+    HRESULT screenX([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_SCREENY)]
+    HRESULT screenY([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_SRCFILTER)]
+    HRESULT srcFilter([retval, out] IDispatch **p);
+}
+
+/*****************************************************************************
+ *    DispCEventObj dispinterface
+ */
+[
+    hidden,
+    uuid(3050f558-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispCEventObj
+{
+properties:
+methods:
+    [propput, id(DISPID_IHTMLEVENTOBJ_RETURNVALUE)]
+    void returnValue(VARIANT v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_RETURNVALUE)]
+    VARIANT returnValue();
+
+    [propput, id(DISPID_IHTMLEVENTOBJ_CANCELBUBBLE)]
+    void cancelBubble(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_CANCELBUBBLE)]
+    VARIANT_BOOL cancelBubble();
+
+    [propput, id(DISPID_IHTMLEVENTOBJ_KEYCODE)]
+    void keyCode(long v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_KEYCODE)]
+    long keyCode();
+
+    [id(DISPID_IHTMLEVENTOBJ2_SETATTRIBUTE)]
+    void setAttribute(
+            [in] BSTR strAttributeName,
+            [in] VARIANT AttributeValue,
+            [in, defaultvalue(1)] LONG lFlags);
+
+    [id(DISPID_IHTMLEVENTOBJ2_GETATTRIBUTE)]
+    VARIANT getAttribute(
+            [in] BSTR strAttributeName,
+            [in, defaultvalue(0)] LONG lFlags);
+
+    [id(DISPID_IHTMLEVENTOBJ2_REMOVEATTRIBUTE)]
+    VARIANT_BOOL removeAttribute(
+            [in] BSTR strAttributeName,
+            [in, defaultvalue(1)] LONG lFlags);
+
+    [propput, id(DISPID_IHTMLEVENTOBJ2_PROPERTYNAME)]
+    void propertyName(BSTR v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ2_PROPERTYNAME)]
+    BSTR propertyName();
+
+    [propputref, id(DISPID_IHTMLEVENTOBJ2_BOOKMARKS)]
+    void bookmarks(IHTMLBookmarkCollection *v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ2_BOOKMARKS)]
+    IHTMLBookmarkCollection *bookmarks();
+
+    [propputref, id(DISPID_IHTMLEVENTOBJ2_RECORDSET)]
+    void recordset(IDispatch *v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ2_RECORDSET)]
+    IDispatch *recordset();
+
+    [propput, id(DISPID_IHTMLEVENTOBJ2_DATAFLD)]
+    void dataFld(BSTR v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ2_DATAFLD)]
+    BSTR dataFld();
+
+    [propputref, id(DISPID_IHTMLEVENTOBJ2_BOUNDELEMENTS)]
+    void boundElements(IHTMLElementCollection *v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ2_BOUNDELEMENTS)]
+    IHTMLElementCollection *boundElements();
+
+    [propput, id(DISPID_IHTMLEVENTOBJ2_REPEAT)]
+    void repeat(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ2_REPEAT)]
+    VARIANT_BOOL repeat();
+
+    [propput, id(DISPID_IHTMLEVENTOBJ2_SRCURN)]
+    void srcUrn(BSTR v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ2_SRCURN)]
+    BSTR srcUrn();
+
+    [propputref, id(DISPID_IHTMLEVENTOBJ2_SRCELEMENT)]
+    void srcElement(IHTMLElement *v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ2_SRCELEMENT)]
+    IHTMLElement *srcElement();
+
+    [propput, id(DISPID_IHTMLEVENTOBJ2_ALTKEY)]
+    void altKey(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ2_ALTKEY)]
+    VARIANT_BOOL altKey();
+
+    [propput, id(DISPID_IHTMLEVENTOBJ2_CTRLKEY)]
+    void ctrlKey(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ2_CTRLKEY)]
+    VARIANT_BOOL ctrlKey();
+
+    [propput, id(DISPID_IHTMLEVENTOBJ2_SHIFTKEY)]
+    void shiftKey(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ2_SHIFTKEY)]
+    VARIANT_BOOL shiftKey();
+
+    [propputref, id(DISPID_IHTMLEVENTOBJ2_FROMELEMENT)]
+    void fromElement(IHTMLElement *v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ2_FROMELEMENT)]
+    IHTMLElement *fromElement();
+
+    [propputref, id(DISPID_IHTMLEVENTOBJ2_TOELEMENT)]
+    void toElement(IHTMLElement *v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ2_TOELEMENT)]
+    IHTMLElement *toElement();
+
+    [propput, id(DISPID_IHTMLEVENTOBJ2_BUTTON)]
+    void button(long v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ2_BUTTON)]
+    long button();
+
+    [propput, id(DISPID_IHTMLEVENTOBJ2_TYPE)]
+    void type(BSTR v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ2_TYPE)]
+    BSTR type();
+
+    [propput, id(DISPID_IHTMLEVENTOBJ2_QUALIFIER)]
+    void qualifier(BSTR v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ2_QUALIFIER)]
+    BSTR qualifier();
+
+    [propput, id(DISPID_IHTMLEVENTOBJ2_REASON)]
+    void reason(long v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ2_REASON)]
+    long reason();
+
+    [propput, id(DISPID_IHTMLEVENTOBJ2_X)]
+    void x(long v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ2_X)]
+    long x();
+
+    [propput, id(DISPID_IHTMLEVENTOBJ2_Y)]
+    void y(long v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ2_Y)]
+    long y();
+
+    [propput, id(DISPID_IHTMLEVENTOBJ2_CLIENTX)]
+    void clientX(long v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ2_CLIENTX)]
+    long clientX();
+
+    [propput, id(DISPID_IHTMLEVENTOBJ2_CLIENTY)]
+    void clientY(long v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ2_CLIENTY)]
+    long clientY();
+    [propput, id(DISPID_IHTMLEVENTOBJ2_OFFSETX)]
+    void offsetX(long v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ2_OFFSETX)]
+    long offsetX();
+
+    [propput, id(DISPID_IHTMLEVENTOBJ2_OFFSETY)]
+    void offsetY(long v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ2_OFFSETY)]
+    long offsetY();
+
+    [propput, id(DISPID_IHTMLEVENTOBJ2_SCREENX)]
+    void screenX(long v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ2_SCREENX)]
+    long screenX();
+
+    [propput, id(DISPID_IHTMLEVENTOBJ2_SCREENY)]
+    void screenY(long v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ2_SCREENY)]
+    long screenY();
+
+    [propputref, id(DISPID_IHTMLEVENTOBJ2_SRCFILTER)]
+    void srcFilter(IDispatch *v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ2_SRCFILTER)]
+    IDispatch *srcFilter();
+
+    [propget, id(DISPID_IHTMLEVENTOBJ2_DATATRANSFER)]
+    IHTMLDataTransfer *dataTransfer();
+
+    [propget, id(DISPID_IHTMLEVENTOBJ3_CONTENTOVERFLOW)]
+    VARIANT_BOOL contentOverflow();
+
+    [propput, id(DISPID_IHTMLEVENTOBJ3_SHIFTLEFT)]
+    void shiftLeft(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ3_SHIFTLEFT)]
+    VARIANT_BOOL shiftLeft();
+
+    [propput, id(DISPID_IHTMLEVENTOBJ3_ALTLEFT)]
+    void altLeft(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ3_ALTLEFT)]
+    VARIANT_BOOL altLeft();
+
+    [propput, id(DISPID_IHTMLEVENTOBJ3_CTRLLEFT)]
+    void ctrlLeft(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ3_CTRLLEFT)]
+    VARIANT_BOOL ctrlLeft();
+
+    [propget, id(DISPID_IHTMLEVENTOBJ3_IMECOMPOSITIONCHANGE), hidden, restricted, nonbrowsable]
+    LONG_PTR imeCompositionChange();
+
+    [propget, id(DISPID_IHTMLEVENTOBJ3_IMENOTIFYCOMMAND), hidden, restricted, nonbrowsable]
+    LONG_PTR imeNotifyCommand();
+
+    [propget, id(DISPID_IHTMLEVENTOBJ3_IMENOTIFYDATA), hidden, restricted, nonbrowsable]
+    LONG_PTR imeNotifyData();
+
+    [propget, id(DISPID_IHTMLEVENTOBJ3_IMEREQUEST), hidden, restricted, nonbrowsable]
+    LONG_PTR imeRequest();
+
+    [propget, id(DISPID_IHTMLEVENTOBJ3_IMEREQUESTDATA), hidden, restricted, nonbrowsable]
+    LONG_PTR imeRequestData();
+
+    [propget, id(DISPID_IHTMLEVENTOBJ3_KEYBOARDLAYOUT), hidden, restricted, nonbrowsable]
+    LONG_PTR keyboardLayout();
+
+    [propget, id(DISPID_IHTMLEVENTOBJ3_BEHAVIORCOOKIE)]
+    long behaviorCookie();
+
+    [propget, id(DISPID_IHTMLEVENTOBJ3_BEHAVIORPART)]
+    long behaviorPart();
+
+    [propget, id(DISPID_IHTMLEVENTOBJ3_NEXTPAGE)]
+    BSTR nextPage();
+
+    [propget, id(DISPID_IHTMLEVENTOBJ4_WHEELDELTA)]
+    long wheelDelta();
+}
+
+/*****************************************************************************
+ *    IHTMLFramesCollection2 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(332C4426-26CB-11D0-B483-00C04FD90119)
+]
+interface IHTMLFramesCollection2 : IDispatch
+{
+    [id(DISPID_IHTMLFRAMESCOLLECTION2_ITEM)]
+    HRESULT item(
+        [in] VARIANT *pvarIndex,
+        [retval, out] VARIANT *pvarResult);
+
+    [propget, id(DISPID_IHTMLFRAMESCOLLECTION2_LENGTH)]
+    HRESULT length([retval, out] long *p);
+}
+
+/*****************************************************************************
+ *    IHTMLScreen interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f35C-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLScreen : IDispatch
+{
+    [propget, id(DISPID_IHTMLSCREEN_COLORDEPTH)]
+    HRESULT colorDepth([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLSCREEN_BUFFERDEPTH)]
+    HRESULT bufferDepth([in] long v);
+
+    [propget, id(DISPID_IHTMLSCREEN_BUFFERDEPTH)]
+    HRESULT bufferDepth([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLSCREEN_WIDTH)]
+    HRESULT width([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLSCREEN_HEIGHT)]
+    HRESULT height([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLSCREEN_UPDATEINTERVAL)]
+    HRESULT updateInterval([in] long v);
+
+    [propget, id(DISPID_IHTMLSCREEN_UPDATEINTERVAL)]
+    HRESULT updateInterval([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLSCREEN_AVAILHEIGHT)]
+    HRESULT availHeight([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLSCREEN_AVAILWIDTH)]
+    HRESULT availWidth([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLSCREEN_FONTSMOOTHINGENABLED)]
+    HRESULT fontSmoothingEnabled([retval, out] VARIANT_BOOL *p);
+}
+
+/*****************************************************************************
+ *    IHTMLWindow2 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(332C4427-26CB-11D0-B483-00C04FD90119)
+]
+interface IHTMLWindow2 : IHTMLFramesCollection2
+{
+    [propget, id(DISPID_IHTMLWINDOW2_FRAMES)]
+    HRESULT frames([retval, out] IHTMLFramesCollection2 **p);
+
+    [propput, id(DISPID_IHTMLWINDOW2_DEFAULTSTATUS)]
+    HRESULT defaultStatus([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_DEFAULTSTATUS)]
+    HRESULT defaultStatus([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLWINDOW2_STATUS)]
+    HRESULT status([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_STATUS)]
+    HRESULT status([retval, out] BSTR *p);
+
+    [id(DISPID_IHTMLWINDOW2_SETTIMEOUT)]
+    HRESULT setTimeout(
+        [in] BSTR expression,
+        [in] long msec,
+        [optional, in] VARIANT *language,
+        [retval, out] long *timerID);
+
+    [id(DISPID_IHTMLWINDOW2_CLEARTIMEOUT)]
+    HRESULT clearTimeout([in] long timerID);
+
+    [id(DISPID_IHTMLWINDOW2_ALERT)]
+    HRESULT alert([defaultvalue(""), in] BSTR message);
+
+    [id(DISPID_IHTMLWINDOW2_CONFIRM)]
+    HRESULT confirm(
+        [defaultvalue(""), in] BSTR message,
+        [retval, out] VARIANT_BOOL *confirmed);
+
+    [id(DISPID_IHTMLWINDOW2_PROMPT)]
+    HRESULT prompt(
+        [defaultvalue(""), in] BSTR message,
+        [defaultvalue("undefined"), in] BSTR defstr,
+        [retval, out] VARIANT *textdata);
+
+    [propget, id(DISPID_IHTMLWINDOW2_IMAGE)]
+    HRESULT Image([retval, out] IHTMLImageElementFactory **p);
+
+    [propget, id(DISPID_IHTMLWINDOW2_LOCATION)]
+    HRESULT location([retval, out] IHTMLLocation **p);
+
+    [propget, id(DISPID_IHTMLWINDOW2_HISTORY)]
+    HRESULT history([retval, out] IOmHistory **p);
+
+    [id(DISPID_IHTMLWINDOW2_CLOSE)]
+    HRESULT close();
+
+    [propput, id(DISPID_IHTMLWINDOW2_OPENER)]
+    HRESULT opener([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_OPENER)]
+    HRESULT opener([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLWINDOW2_NAVIGATOR)]
+    HRESULT navigator([retval, out] IOmNavigator **p);
+
+    [propput, id(DISPID_IHTMLWINDOW2_NAME)]
+    HRESULT name([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_NAME)]
+    HRESULT name([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLWINDOW2_PARENT)]
+    HRESULT parent([retval, out] IHTMLWindow2 **p);
+
+    [id(DISPID_IHTMLWINDOW2_OPEN)]
+    HRESULT open(
+        [defaultvalue(""), in] BSTR url,
+        [defaultvalue(""), in] BSTR name,
+        [defaultvalue(""), in] BSTR features,
+        [defaultvalue(0), in] VARIANT_BOOL replace,
+        [retval, out] IHTMLWindow2 **pomWindowResult);
+
+    [propget, id(DISPID_IHTMLWINDOW2_SELF)]
+    HRESULT self([retval, out] IHTMLWindow2 **p);
+
+    [propget, id(DISPID_IHTMLWINDOW2_TOP)]
+    HRESULT top([retval, out] IHTMLWindow2 **p);
+
+    [propget, id(DISPID_IHTMLWINDOW2_WINDOW)]
+    HRESULT window([retval, out] IHTMLWindow2 **p);
+
+    [id(DISPID_IHTMLWINDOW2_NAVIGATE)]
+    HRESULT navigate([in] BSTR url);
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONFOCUS)]
+    HRESULT onfocus([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONFOCUS)]
+    HRESULT onfocus([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONBLUR)]
+    HRESULT onblur([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONBLUR)]
+    HRESULT onblur([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONLOAD)]
+    HRESULT onload([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONLOAD)]
+    HRESULT onload([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD)]
+    HRESULT onbeforeunload([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD)]
+    HRESULT onbeforeunload([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONUNLOAD)]
+    HRESULT onunload([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONUNLOAD)]
+    HRESULT onunload([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONHELP)]
+    HRESULT onhelp([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONHELP)]
+    HRESULT onhelp([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONERROR)]
+    HRESULT onerror([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONERROR)]
+    HRESULT onerror([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONRESIZE)]
+    HRESULT onresize([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONRESIZE)]
+    HRESULT onresize([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONSCROLL)]
+    HRESULT onscroll([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONSCROLL)]
+    HRESULT onscroll([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLWINDOW2_DOCUMENT)]
+    HRESULT document([retval, out] IHTMLDocument2 **p);
+
+    [propget, id(DISPID_IHTMLWINDOW2_EVENT)]
+    HRESULT event([retval, out] IHTMLEventObj **p);
+
+    [propget, id(DISPID_IHTMLWINDOW2__NEWENUM)]
+    HRESULT _newEnum([retval, out] IUnknown **p);
+
+    [id(DISPID_IHTMLWINDOW2_SHOWMODALDIALOG)]
+    HRESULT showModalDialog(
+        [in] BSTR dialog,
+        [optional, in] VARIANT *varArgIn,
+        [optional, in] VARIANT *varOptions,
+        [retval, out] VARIANT *varArgOut);
+
+    [id(DISPID_IHTMLWINDOW2_SHOWHELP)]
+    HRESULT showHelp(
+        [in] BSTR helpURL,
+        [optional, in] VARIANT helpArg,
+        [defaultvalue(""), in] BSTR features);
+
+    [propget, id(DISPID_IHTMLWINDOW2_SCREEN)]
+    HRESULT screen([retval, out] IHTMLScreen **p);
+
+    [propget, id(DISPID_IHTMLWINDOW2_OPTION)]
+    HRESULT Option([retval, out] IHTMLOptionElementFactory **p);
+
+    [id(DISPID_IHTMLWINDOW2_FOCUS)]
+    HRESULT focus();
+
+    [propget, id(DISPID_IHTMLWINDOW2_CLOSED)]
+    HRESULT closed([retval, out] VARIANT_BOOL *p);
+
+    [id(DISPID_IHTMLWINDOW2_BLUR)]
+    HRESULT blur();
+
+    [id(DISPID_IHTMLWINDOW2_SCROLL)]
+    HRESULT scroll([in] long x, [in] long y);
+
+    [propget, id(DISPID_IHTMLWINDOW2_CLIENTINFORMATION)]
+    HRESULT clientInformation([retval, out] IOmNavigator **p);
+
+    [id(DISPID_IHTMLWINDOW2_SETINTERVAL)]
+    HRESULT setInterval([
+        in] BSTR expression,
+        [in] long msec,
+        [optional, in] VARIANT *language,
+        [retval, out] long *timerID);
+
+    [id(DISPID_IHTMLWINDOW2_CLEARINTERVAL)]
+    HRESULT clearInterval([in] long timerID);
+
+    [propput, id(DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)]
+    HRESULT offscreenBuffering([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)]
+    HRESULT offscreenBuffering([retval, out] VARIANT *p);
+
+    [id(DISPID_IHTMLWINDOW2_EXECSCRIPT)]
+    HRESULT execScript(
+        [in] BSTR scode,
+        [defaultvalue("JScript"), in] BSTR language,
+        [retval, out] VARIANT *pvarRet);
+
+    [id(DISPID_IHTMLWINDOW2_TOSTRING)]
+    HRESULT toString([retval, out] BSTR *String);
+
+    [id(DISPID_IHTMLWINDOW2_SCROLLBY)]
+    HRESULT scrollBy([in] long x, [in] long y);
+
+    [id(DISPID_IHTMLWINDOW2_SCROLLTO)]
+    HRESULT scrollTo([in] long x, [in] long y);
+
+    [id(DISPID_IHTMLWINDOW2_MOVETO)]
+    HRESULT moveTo([in] long x, [in] long y);
+
+    [id(DISPID_IHTMLWINDOW2_MOVEBY)]
+    HRESULT moveBy([in] long x, [in] long y);
+
+    [id(DISPID_IHTMLWINDOW2_RESIZETO)]
+    HRESULT resizeTo([in] long x, [in] long y);
+
+    [id(DISPID_IHTMLWINDOW2_RESIZEBY)]
+    HRESULT resizeBy([in] long x, [in] long y);
+
+    [propget, id(DISPID_IHTMLWINDOW2_EXTERNAL)]
+    HRESULT external([retval, out] IDispatch **p);
+}
+
+/*****************************************************************************
+ *    IHTMLWindow3 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f4ae-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLWindow3 : IDispatch
+{
+    [propget, id(DISPID_IHTMLWINDOW3_SCREENLEFT)]
+    HRESULT screenLeft([out, retval] long *p);
+
+    [propget, id(DISPID_IHTMLWINDOW3_SCREENTOP)]
+    HRESULT screenTop([out, retval] long *p);
+
+    [id(DISPID_IHTMLWINDOW3_ATTACHEVENT)]
+    HRESULT attachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp,
+            [out, retval] VARIANT_BOOL *pfResult);
+
+    [id(DISPID_IHTMLWINDOW3_DETACHEVENT)]
+    HRESULT detachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp);
+
+    [id(DISPID_IHTMLWINDOW3_SETTIMEOUT)]
+    HRESULT setTimeout(
+            [in] VARIANT *expression,
+            [in] long msec,
+            [in, optional] VARIANT *language,
+            [out, retval] long *timerID);
+
+    [id(DISPID_IHTMLWINDOW3_SETINTERVAL)]
+    HRESULT setInterval(
+            [in] VARIANT *expression,
+            [in] long msec,
+            [in, optional] VARIANT *language,
+            [out, retval] long *timerID);
+
+    [id(DISPID_IHTMLWINDOW3_PRINT)]
+    HRESULT print();
+
+    [propput, id(DISPID_IHTMLWINDOW3_ONBEFOREPRINT), displaybind, bindable]
+    HRESULT onbeforeprint([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW3_ONBEFOREPRINT), displaybind, bindable]
+    HRESULT onbeforeprint([out, retval] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable]
+    HRESULT onafterprint([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable]
+    HRESULT onafterprint([out, retval] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLWINDOW3_CLIPBOARDDATA)]
+    HRESULT clipboardData([out, retval] IHTMLDataTransfer **p);
+
+    [id(DISPID_IHTMLWINDOW3_SHOWMODELESSDIALOG)]
+    HRESULT showModelessDialog(
+            [in, defaultvalue("")] BSTR url,
+            [in, optional] VARIANT *varArgIn,
+            [in, optional] VARIANT *options,
+            [out, retval] IHTMLWindow2 **pDialog);
+}
+
+/*****************************************************************************
+ *    DispHTMLWindow2 dispinterface
+ */
+[
+    hidden,
+    uuid(3050f55d-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLWindow2
+{
+properties:
+methods:
+    [id(DISPID_IHTMLFRAMESCOLLECTION2_ITEM)]
+    VARIANT item([in] VARIANT *pvarIndex);
+
+    [propget, id(DISPID_IHTMLFRAMESCOLLECTION2_LENGTH)]
+    long length();
+
+    [propget, id(DISPID_IHTMLWINDOW2_FRAMES)]
+    IHTMLFramesCollection2 *frames();
+
+    [propput, id(DISPID_IHTMLWINDOW2_DEFAULTSTATUS)]
+    void defaultStatus(BSTR v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_DEFAULTSTATUS)]
+    BSTR defaultStatus();
+
+    [propput, id(DISPID_IHTMLWINDOW2_STATUS)]
+    void status(BSTR v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_STATUS)]
+    BSTR status();
+
+    [id(DISPID_IHTMLWINDOW2_CLEARTIMEOUT)]
+    void clearTimeout([in] long timerID);
+
+    [id(DISPID_IHTMLWINDOW2_ALERT)]
+    void alert([in, defaultvalue("")] BSTR message);
+
+    [id(DISPID_IHTMLWINDOW2_CONFIRM)]
+    VARIANT_BOOL confirm([in, defaultvalue("")] BSTR message);
+
+    [id(DISPID_IHTMLWINDOW2_PROMPT)]
+    VARIANT prompt(
+            [in, defaultvalue("")] BSTR message,
+            [in, defaultvalue("undefined")] BSTR defstr);
+
+    [propget, id(DISPID_IHTMLWINDOW2_IMAGE)]
+    IHTMLImageElementFactory *Image();
+
+    [propget, id(DISPID_IHTMLWINDOW2_LOCATION)]
+    IHTMLLocation *location();
+
+    [propget, id(DISPID_IHTMLWINDOW2_HISTORY)]
+    IOmHistory *history();
+
+    [id(DISPID_IHTMLWINDOW2_CLOSE)]
+    void close();
+
+    [propput, id(DISPID_IHTMLWINDOW2_OPENER)]
+    void opener(VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_OPENER)]
+    VARIANT opener();
+
+    [propget, id(DISPID_IHTMLWINDOW2_NAVIGATOR)]
+    IOmNavigator *navigator();
+
+    [propput, id(DISPID_IHTMLWINDOW2_NAME)]
+    void name(BSTR v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_NAME)]
+    BSTR name();
+
+    [propget, id(DISPID_IHTMLWINDOW2_PARENT)]
+    IHTMLWindow2 *parent();
+
+    [id(DISPID_IHTMLWINDOW2_OPEN)]
+    IHTMLWindow2 *open(
+            [in, defaultvalue("")] BSTR url,
+            [in, defaultvalue("")] BSTR name,
+            [in, defaultvalue("")] BSTR features,
+            [in, defaultvalue(0)]  VARIANT_BOOL replace);
+
+    [propget, id(DISPID_IHTMLWINDOW2_SELF)]
+    IHTMLWindow2 *self();
+
+    [propget, id(DISPID_IHTMLWINDOW2_TOP)]
+    IHTMLWindow2 *top();
+
+    [propget, id(DISPID_IHTMLWINDOW2_WINDOW)]
+    IHTMLWindow2 *window();
+
+    [id(DISPID_IHTMLWINDOW2_NAVIGATE)]
+    void navigate([in] BSTR url);
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONFOCUS), displaybind, bindable]
+    void onfocus(VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONFOCUS), displaybind, bindable]
+    VARIANT onfocus();
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONBLUR), displaybind, bindable]
+    void onblur(VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONBLUR), displaybind, bindable]
+    VARIANT onblur();
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONLOAD), displaybind, bindable]
+    VARIANT onload();
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD), displaybind, bindable]
+    void onbeforeunload(VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD), displaybind, bindable]
+    VARIANT onbeforeunload();
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONUNLOAD), displaybind, bindable]
+    void onunload(VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONUNLOAD), displaybind, bindable]
+    VARIANT onunload();
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONHELP), displaybind, bindable]
+    void onhelp(VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONHELP), displaybind, bindable]
+    VARIANT onhelp();
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONERROR), displaybind, bindable]
+    void onerror(VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONERROR), displaybind, bindable]
+    VARIANT onerror();
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONRESIZE), displaybind, bindable]
+    void onresize(VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONRESIZE), displaybind, bindable]
+    VARIANT onresize();
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONSCROLL), displaybind, bindable]
+    void onscroll(VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONSCROLL), displaybind, bindable]
+    VARIANT onscroll();
+
+    [propget, id(DISPID_IHTMLWINDOW2_DOCUMENT), source]
+    IHTMLDocument2 *document();
+
+    [propget, id(DISPID_IHTMLWINDOW2_EVENT)]
+    IHTMLEventObj *event();
+
+    [propget, id(DISPID_IHTMLWINDOW2__NEWENUM), hidden, restricted]
+    IUnknown *_newEnum();
+
+    [id(DISPID_IHTMLWINDOW2_SHOWMODALDIALOG)]
+    VARIANT showModalDialog(
+            [in] BSTR dialog,
+            [in, optional] VARIANT *varArgIn,
+            [in, optional] VARIANT *varOptions);
+
+    [id(DISPID_IHTMLWINDOW2_SHOWHELP)]
+    void showHelp(
+            [in] BSTR helpURL,
+            [in, optional] VARIANT helpArg,
+            [in, defaultvalue("")] BSTR features);
+
+    [propget, id(DISPID_IHTMLWINDOW2_SCREEN)]
+    IHTMLScreen *screen();
+
+    [propget, id(DISPID_IHTMLWINDOW2_OPTION)]
+    IHTMLOptionElementFactory *Option();
+
+    [id(DISPID_IHTMLWINDOW2_FOCUS)]
+    void focus();
+
+    [propget, id(DISPID_IHTMLWINDOW2_CLOSED)]
+    VARIANT_BOOL closed();
+
+    [id(DISPID_IHTMLWINDOW2_BLUR)]
+    void blur();
+
+    [id(DISPID_IHTMLWINDOW2_SCROLL)]
+    void scroll([in] long x, [in] long y);
+
+    [propget, id(DISPID_IHTMLWINDOW2_CLIENTINFORMATION)]
+    IOmNavigator *clientInformation();
+
+    [id(DISPID_IHTMLWINDOW2_CLEARINTERVAL)]
+    void clearInterval([in] long timerID);
+
+    [propput, id(DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)]
+    void offscreenBuffering(VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)]
+    VARIANT offscreenBuffering();
+
+    [id(DISPID_IHTMLWINDOW2_EXECSCRIPT)]
+    VARIANT execScript(
+            [in] BSTR _code,
+            [in, defaultvalue("JScript")] BSTR language);
+
+    [id(DISPID_IHTMLWINDOW2_TOSTRING)]
+    BSTR toString();
+
+    [id(DISPID_IHTMLWINDOW2_SCROLLBY)]
+    void scrollBy([in] long x, [in] long y);
+
+    [id(DISPID_IHTMLWINDOW2_SCROLLTO)]
+    void scrollTo([in] long x, [in] long y);
+
+    [id(DISPID_IHTMLWINDOW2_MOVETO)]
+    void moveTo([in] long x, [in] long y);
+
+    [id(DISPID_IHTMLWINDOW2_MOVEBY)]
+    void moveBy([in] long x, [in] long y);
+
+    [id(DISPID_IHTMLWINDOW2_RESIZETO)]
+    void resizeTo([in] long x, [in] long y);
+
+    [id(DISPID_IHTMLWINDOW2_RESIZEBY)]
+    void resizeBy([in] long x, [in] long y);
+
+    [propget, id(DISPID_IHTMLWINDOW2_EXTERNAL)]
+    IDispatch *external();
+
+    [propget, id(DISPID_IHTMLWINDOW3_SCREENLEFT)]
+    long screenLeft();
+
+    [propget, id(DISPID_IHTMLWINDOW3_SCREENTOP)]
+    long screenTop();
+
+    [id(DISPID_IHTMLWINDOW3_ATTACHEVENT)]
+    VARIANT_BOOL attachEvent(
+             [in] BSTR event,
+             [in] IDispatch *pDisp);
+
+    [id(DISPID_IHTMLWINDOW3_DETACHEVENT)]
+    void detachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp);
+
+    [id(DISPID_IHTMLWINDOW3_SETTIMEOUT)]
+    long setTimeout(
+            [in] VARIANT *expression,
+            [in] long msec,
+            [in, optional] VARIANT *language);
+
+    [id(DISPID_IHTMLWINDOW3_SETINTERVAL)]
+    long setInterval(
+            [in] VARIANT *expression,
+            [in] long msec,
+            [in, optional] VARIANT *language);
+
+    [id(DISPID_IHTMLWINDOW3_PRINT)]
+    void print();
+
+    [propput, id(DISPID_IHTMLWINDOW3_ONBEFOREPRINT), displaybind, bindable]
+    void onbeforeprint(VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW3_ONBEFOREPRINT), displaybind, bindable]
+    VARIANT onbeforeprint();
+
+    [propput, id(DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable]
+    void onafterprint(VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable]
+    VARIANT onafterprint();
+
+    [propget, id(DISPID_IHTMLWINDOW3_CLIPBOARDDATA)]
+    IHTMLDataTransfer *clipboardData();
+
+    [id(DISPID_IHTMLWINDOW3_SHOWMODELESSDIALOG)]
+    IHTMLWindow2 *showModelessDialog(
+            [in, defaultvalue("")] BSTR url,
+            [in, optional] VARIANT *varArgIn,
+            [in, optional] VARIANT *options);
+
+    [id(DISPID_IHTMLWINDOW4_CREATEPOPUP)]
+    IDispatch *createPopup([in, optional] VARIANT *varArgIn);
+
+    [propget, id(DISPID_IHTMLWINDOW4_FRAMEELEMENT)]
+    IHTMLFrameBase *frameElement();
+}
+
+/*****************************************************************************
+ *    HTMLDocumentEvents2 interface
+ */
+[
+    hidden,
+    uuid(3050f613-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface HTMLDocumentEvents2
+{
+    properties:
+    methods:
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONHELP)]
+    VARIANT_BOOL onhelp([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONCLICK)]
+    VARIANT_BOOL onclick([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONDBLCLICK)]
+    VARIANT_BOOL ondblclick([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONKEYDOWN)]
+    void onkeydown([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONKEYUP)]
+    void onkeyup([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONKEYPRESS)]
+    VARIANT_BOOL onkeypress([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEDOWN)]
+    void onmousedown([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEMOVE)]
+    void onmousemove([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEUP)]
+    void onmouseup([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEOUT)]
+    void onmouseout([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEOVER)]
+    void onmouseover([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONREADYSTATECHANGE)]
+    void onreadystatechange([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONBEFOREUPDATE)]
+    VARIANT_BOOL onbeforeupdate([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONAFTERUPDATE)]
+    void onafterupdate([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONROWEXIT)]
+    VARIANT_BOOL onrowexit([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONROWENTER)]
+    void onrowenter([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONDRAGSTART)]
+    VARIANT_BOOL ondragstart([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONSELECTSTART)]
+    VARIANT_BOOL onselectstart([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONERRORUPDATE)]
+    VARIANT_BOOL onerrorupdate([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONCONTEXTMENU)]
+    VARIANT_BOOL oncontextmenu([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONSTOP)]
+    VARIANT_BOOL onstop([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONROWSDELETE)]
+    void onrowsdelete([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONROWSINSERTED)]
+    void onrowsinserted([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONCELLCHANGE)]
+    void oncellchange([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONPROPERTYCHANGE)]
+    void onpropertychange([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONDATASETCHANGED)]
+    void ondatasetchanged([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONDATAAVAILABLE)]
+    void ondataavailable([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONDATASETCOMPLETE)]
+    void ondatasetcomplete([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONBEFOREEDITFOCUS)]
+    void onbeforeeditfocus([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONSELECTIONCHANGE)]
+    void onselectionchange([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONCONTROLSELECT)]
+    VARIANT_BOOL oncontrolselect([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEWHEEL)]
+    VARIANT_BOOL onmousewheel([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONFOCUSIN)]
+    void onfocusin([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONFOCUSOUT)]
+    void onfocusout([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONACTIVATE)]
+    void onactivate([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONDEACTIVATE)]
+    void ondeactivate([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONBEFOREACTIVATE)]
+    VARIANT_BOOL onbeforeactivate([in] IHTMLEventObj *pEvtObj);
+
+    [id(DISPID_HTMLDOCUMENTEVENTS2_ONBEFOREDEACTIVATE)]
+    VARIANT_BOOL onbeforedeactivate([in] IHTMLEventObj *pEvtObj);
+}
+
+/*****************************************************************************
+ *    HTMLDocumentEvents interface
+ */
+[
+    hidden,
+    uuid(3050f260-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface HTMLDocumentEvents
+{
+    properties:
+    methods:
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONHELP)]
+    VARIANT_BOOL onhelp();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONCLICK)]
+    VARIANT_BOOL onclick();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONDBLCLICK)]
+    VARIANT_BOOL ondblclick();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONKEYDOWN)]
+    void onkeydown();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONKEYUP)]
+    void onkeyup();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONKEYPRESS)]
+    VARIANT_BOOL onkeypress();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONMOUSEDOWN)]
+    void onmousedown();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONMOUSEMOVE)]
+    void onmousemove();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONMOUSEUP)]
+    void onmouseup();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONMOUSEOUT)]
+    void onmouseout();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONMOUSEOVER)]
+    void onmouseover();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONREADYSTATECHANGE)]
+    void onreadystatechange();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONBEFOREUPDATE)]
+    VARIANT_BOOL onbeforeupdate();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONAFTERUPDATE)]
+    void onafterupdate();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONROWEXIT)]
+    VARIANT_BOOL onrowexit();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONROWENTER)]
+    void onrowenter();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONDRAGSTART)]
+    VARIANT_BOOL ondragstart();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONSELECTSTART)]
+    VARIANT_BOOL onselectstart();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONERRORUPDATE)]
+    VARIANT_BOOL onerrorupdate();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONCONTEXTMENU)]
+    VARIANT_BOOL oncontextmenu();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONSTOP)]
+    VARIANT_BOOL onstop();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONROWSDELETE)]
+    void onrowsdelete();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONROWSINSERTED)]
+    void onrowsinserted();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONCELLCHANGE)]
+    void oncellchange();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONPROPERTYCHANGE)]
+    void onpropertychange();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONDATASETCHANGED)]
+    void ondatasetchanged();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONDATAAVAILABLE)]
+    void ondataavailable();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONDATASETCOMPLETE)]
+    void ondatasetcomplete();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONBEFOREEDITFOCUS)]
+    void onbeforeeditfocus();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONSELECTIONCHANGE)]
+    void onselectionchange();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONCONTROLSELECT)]
+    VARIANT_BOOL oncontrolselect();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONMOUSEWHEEL)]
+    VARIANT_BOOL onmousewheel();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONFOCUSIN)]
+    void onfocusin();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONFOCUSOUT)]
+    void onfocusout();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONACTIVATE)]
+    void onactivate();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONDEACTIVATE)]
+    void ondeactivate();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONBEFOREACTIVATE)]
+    VARIANT_BOOL onbeforeactivate();
+
+    [id(DISPID_HTMLDOCUMENTEVENTS_ONBEFOREDEACTIVATE)]
+    VARIANT_BOOL onbeforedeactivate();
+}
+
+/*****************************************************************************
+ *    HTMLTextContainerEvents interface
+ */
+[
+    hidden,
+    uuid(1ff6aa72-5842-11cf-a707-00aa00c0098d)
+]
+dispinterface HTMLTextContainerEvents
+{
+properties:
+
+methods:
+    [id(DISPID_HTMLELEMENTEVENTS_ONHELP)]
+    VARIANT_BOOL onhelp();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONCLICK)]
+    VARIANT_BOOL onclick();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)]
+    VARIANT_BOOL ondblclick();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)]
+    VARIANT_BOOL onkeypress();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)]
+    void onkeydown();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONKEYUP)]
+    void onkeyup();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)]
+    void onmouseout();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)]
+    void onmouseover();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)]
+    void onmousemove();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)]
+    void onmousedown();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)]
+    void onmouseup();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)]
+    VARIANT_BOOL onselectstart();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)]
+    void onfilterchange();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)]
+    VARIANT_BOOL ondragstart();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)]
+    VARIANT_BOOL onbeforeupdate();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)]
+    void onafterupdate();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)]
+    VARIANT_BOOL onerrorupdate();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONROWEXIT)]
+    VARIANT_BOOL onrowexit();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONROWENTER)]
+    void onrowenter();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)]
+    void ondatasetchanged();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)]
+    void ondataavailable();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)]
+    void ondatasetcomplete();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)]
+    void onlosecapture();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)]
+    void onpropertychange();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONSCROLL)]
+    void onscroll();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUS)]
+    void onfocus();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONBLUR)]
+    void onblur();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZE)]
+    void onresize();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAG)]
+    VARIANT_BOOL ondrag();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGEND)]
+    void ondragend();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)]
+    VARIANT_BOOL ondragenter();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)]
+    VARIANT_BOOL ondragover();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)]
+    void ondragleave();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONDROP)]
+    VARIANT_BOOL ondrop();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)]
+    VARIANT_BOOL onbeforecut();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONCUT)]
+    VARIANT_BOOL oncut();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)]
+    VARIANT_BOOL onbeforecopy();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONCOPY)]
+    VARIANT_BOOL oncopy();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)]
+    VARIANT_BOOL onbeforepaste();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONPASTE)]
+    VARIANT_BOOL onpaste();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)]
+    VARIANT_BOOL oncontextmenu();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)]
+    void onrowsdelete();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)]
+    void onrowsinserted();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)]
+    void oncellchange();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)]
+    void onreadystatechange();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)]
+    void onbeforeeditfocus();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)]
+    void onlayoutcomplete();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONPAGE)]
+    void onpage();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)]
+    VARIANT_BOOL onbeforedeactivate();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)]
+    VARIANT_BOOL onbeforeactivate();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOVE)]
+    void onmove();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)]
+    VARIANT_BOOL oncontrolselect();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOVESTART)]
+    VARIANT_BOOL onmovestart();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOVEEND)]
+    void onmoveend();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)]
+    VARIANT_BOOL onresizestart();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)]
+    void onresizeend();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)]
+    void onmouseenter();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)]
+    void onmouseleave();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)]
+    VARIANT_BOOL onmousewheel();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONACTIVATE)]
+    void onactivate();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)]
+    void ondeactivate();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)]
+    void onfocusin();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)]
+    void onfocusout();
+
+    [id(DISPID_HTMLTEXTCONTAINEREVENTS_ONCHANGE)]
+    void onchange();
+
+    [id(DISPID_HTMLTEXTCONTAINEREVENTS_ONSELECT)]
+    void onselect();
+};
+
+/*****************************************************************************
+ *    HTMLTextContainerEvents2 interface
+ */
+[
+    hidden,
+    uuid(3050f624-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface HTMLTextContainerEvents2
+{
+properties:
+methods:
+    [id(DISPID_HTMLELEMENTEVENTS2_ONHELP)]
+    VARIANT_BOOL onhelp([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCLICK)]
+    VARIANT_BOOL onclick([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)]
+    VARIANT_BOOL ondblclick([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)]
+    VARIANT_BOOL onkeypress([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)]
+    void onkeydown([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONKEYUP)]
+    void onkeyup([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)]
+    void onmouseout([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)]
+    void onmouseover([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)]
+    void onmousemove([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)]
+    void onmousedown([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)]
+    void onmouseup([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)]
+    VARIANT_BOOL onselectstart([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)]
+    void onfilterchange([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)]
+    VARIANT_BOOL ondragstart([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)]
+    VARIANT_BOOL onbeforeupdate([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)]
+    void onafterupdate([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)]
+    VARIANT_BOOL onerrorupdate([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)]
+    VARIANT_BOOL onrowexit([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONROWENTER)]
+    void onrowenter([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)]
+    void ondatasetchanged([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)]
+    void ondataavailable([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)]
+    void ondatasetcomplete([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)]
+    void onlosecapture([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)]
+    void onpropertychange([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONSCROLL)]
+    void onscroll([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONFOCUS)]
+    void onfocus([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBLUR)]
+    void onblur([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONRESIZE)]
+    void onresize([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAG)]
+    VARIANT_BOOL ondrag([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)]
+    void ondragend([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)]
+    VARIANT_BOOL ondragenter([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)]
+    VARIANT_BOOL ondragover([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)]
+    void ondragleave([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDROP)]
+    VARIANT_BOOL ondrop([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)]
+    VARIANT_BOOL onbeforecut([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCUT)]
+    VARIANT_BOOL oncut([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)]
+    VARIANT_BOOL onbeforecopy([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCOPY)]
+    VARIANT_BOOL oncopy([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)]
+    VARIANT_BOOL onbeforepaste([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONPASTE)]
+    VARIANT_BOOL onpaste([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)]
+    VARIANT_BOOL oncontextmenu([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)]
+    void onrowsdelete([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)]
+    void onrowsinserted([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)]
+    void oncellchange([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)]
+    void onreadystatechange([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)]
+    void onlayoutcomplete([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONPAGE)]
+    void onpage([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)]
+    void onmouseenter([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)]
+    void onmouseleave([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)]
+    void onactivate([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)]
+    void ondeactivate([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)]
+    VARIANT_BOOL onbeforedeactivate([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)]
+    VARIANT_BOOL onbeforeactivate([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)]
+    void onfocusin([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)]
+    void onfocusout([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOVE)]
+    void onmove([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)]
+    VARIANT_BOOL oncontrolselect([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)]
+    VARIANT_BOOL onmovestart([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)]
+    void onmoveend([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)]
+    VARIANT_BOOL onresizestart([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)]
+    void onresizeend([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)]
+    VARIANT_BOOL onmousewheel([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLTEXTCONTAINEREVENTS2_ONCHANGE)]
+    void onchange([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLTEXTCONTAINEREVENTS2_ONSELECT)]
+    void onselect([in] IHTMLEventObj* pEvtObj);
+};
+
+/*****************************************************************************
+ *    IHTMLDocument interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(626FC520-A41E-11CF-A731-00A0C9082637)
+]
+interface IHTMLDocument : IDispatch
+{
+    [propget, id(DISPID_IHTMLDOCUMENT_SCRIPT)]
+    HRESULT Script([retval, out] IDispatch **p);
+}
+
+/*****************************************************************************
+ *    IHTMLDocument2 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(332C4425-26CB-11D0-B483-00C04FD90119)
+]
+interface IHTMLDocument2 : IHTMLDocument
+{
+    [propget, id(DISPID_IHTMLDOCUMENT2_ALL)]
+    HRESULT all([retval, out] IHTMLElementCollection **p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_BODY)]
+    HRESULT body([retval, out] IHTMLElement **p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ACTIVEELEMENT)]
+    HRESULT activeElement([retval, out] IHTMLElement **p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_IMAGES)]
+    HRESULT images([retval, out] IHTMLElementCollection **p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_APPLETS)]
+    HRESULT applets([retval, out] IHTMLElementCollection **p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_LINKS)]
+    HRESULT links([retval, out] IHTMLElementCollection **p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_FORMS)]
+    HRESULT forms([retval, out] IHTMLElementCollection **p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ANCHORS)]
+    HRESULT anchors([retval, out] IHTMLElementCollection **p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_TITLE)]
+    HRESULT title([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_TITLE)]
+    HRESULT title([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_SCRIPTS)]
+    HRESULT scripts([retval, out] IHTMLElementCollection **p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_DESIGNMODE)]
+    HRESULT designMode([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_DESIGNMODE)]
+    HRESULT designMode([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_SELECTION)]
+    HRESULT selection([retval, out] IHTMLSelectionObject **p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_READYSTATE)]
+     HRESULT readyState([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_FRAMES)]
+    HRESULT frames([retval, out] IHTMLFramesCollection2 **p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_EMBEDS)]
+    HRESULT embeds([retval, out] IHTMLElementCollection **p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_PLUGINS)]
+    HRESULT plugins([retval, out] IHTMLElementCollection **p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ALINKCOLOR)]
+    HRESULT alinkColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ALINKCOLOR)]
+    HRESULT alinkColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_BGCOLOR)]
+    HRESULT bgColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_BGCOLOR)]
+    HRESULT bgColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_FGCOLOR)]
+    HRESULT fgColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_FGCOLOR)]
+    HRESULT fgColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_LINKCOLOR)]
+    HRESULT linkColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_LINKCOLOR)]
+    HRESULT linkColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_VLINKCOLOR)]
+    HRESULT vlinkColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_VLINKCOLOR)]
+    HRESULT vlinkColor([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_REFERRER)]
+    HRESULT referrer([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_LOCATION)]
+    HRESULT location([retval, out] IHTMLLocation **p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_LASTMODIFIED)]
+    HRESULT lastModified([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_URL)]
+    HRESULT URL([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_URL)]
+    HRESULT URL([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_DOMAIN)]
+    HRESULT domain([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_DOMAIN)]
+    HRESULT domain([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_COOKIE)]
+    HRESULT cookie([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_COOKIE)]
+    HRESULT cookie([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_EXPANDO)]
+    HRESULT expando([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_EXPANDO)]
+    HRESULT expando([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_CHARSET)]
+     HRESULT charset([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_CHARSET)]
+    HRESULT charset([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_DEFAULTCHARSET)]
+    HRESULT defaultCharset([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_DEFAULTCHARSET)]
+    HRESULT defaultCharset([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_MIMETYPE)]
+    HRESULT mimeType([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_FILESIZE)]
+    HRESULT fileSize([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_FILECREATEDDATE)]
+    HRESULT fileCreatedDate([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_FILEMODIFIEDDATE)]
+    HRESULT fileModifiedDate([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_FILEUPDATEDDATE)]
+    HRESULT fileUpdatedDate([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_SECURITY)]
+    HRESULT security([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_PROTOCOL)]
+    HRESULT protocol([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_NAMEPROP)]
+     HRESULT nameProp([retval, out] BSTR *p);
+
+    [vararg, id(DISPID_IHTMLDOCUMENT2_WRITE)]
+    HRESULT write([in] SAFEARRAY(VARIANT) psarray);
+
+    [vararg, id(DISPID_IHTMLDOCUMENT2_WRITELN)]
+    HRESULT writeln([in] SAFEARRAY(VARIANT) psarray);
+
+    [id(DISPID_IHTMLDOCUMENT2_OPEN)]
+    HRESULT open(
+        [defaultvalue("text/html"), in] BSTR url,
+        [optional, in] VARIANT name,
+        [optional, in] VARIANT features,
+        [optional, in] VARIANT replace,
+        [retval, out]  IDispatch **pomWindowResult);
+
+    [id(DISPID_IHTMLDOCUMENT2_CLOSE)]
+    HRESULT close();
+
+    [id(DISPID_IHTMLDOCUMENT2_CLEAR)]
+    HRESULT clear();
+
+    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDSUPPORTED)]
+    HRESULT queryCommandSupported(
+        [in] BSTR cmdID,
+        [retval, out] VARIANT_BOOL *pfRet);
+
+    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDENABLED)]
+    HRESULT queryCommandEnabled(
+        [in] BSTR cmdID,
+        [retval, out] VARIANT_BOOL *pfRet);
+
+    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDSTATE)]
+    HRESULT queryCommandState(
+        [in] BSTR cmdID,
+        [retval, out] VARIANT_BOOL *pfRet);
+
+    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDINDETERM)]
+    HRESULT queryCommandIndeterm(
+        [in] BSTR cmdID,
+        [retval, out] VARIANT_BOOL *pfRet);
+
+    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDTEXT)]
+    HRESULT queryCommandText(
+        [in] BSTR cmdID,
+        [retval, out] BSTR *pcmdText);
+
+    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDVALUE)]
+    HRESULT queryCommandValue(
+        [in] BSTR cmdID,
+        [retval, out] VARIANT *pcmdValue);
+
+    [id(DISPID_IHTMLDOCUMENT2_EXECCOMMAND)]
+    HRESULT execCommand(
+        [in] BSTR cmdID,
+        [defaultvalue(0), in] VARIANT_BOOL showUI,
+        [optional, in] VARIANT value,
+        [retval, out] VARIANT_BOOL *pfRet);
+
+    [id(DISPID_IHTMLDOCUMENT2_EXECCOMMANDSHOWHELP)]
+    HRESULT execCommandShowHelp(
+        [in] BSTR cmdID,
+        [retval, out] VARIANT_BOOL *pfRet);
+
+    [id(DISPID_IHTMLDOCUMENT2_CREATEELEMENT)]
+     HRESULT createElement(
+        [in] BSTR eTag,
+        [retval, out] IHTMLElement **newElem);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONHELP)]
+    HRESULT onhelp([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONHELP)]
+    HRESULT onhelp([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONCLICK)]
+    HRESULT onclick([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONCLICK)]
+    HRESULT onclick([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONDBLCLICK)]
+    HRESULT ondblclick([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONDBLCLICK)]
+    HRESULT ondblclick([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONKEYUP)]
+    HRESULT onkeyup([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONKEYUP)]
+    HRESULT onkeyup([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONKEYDOWN)]
+    HRESULT onkeydown([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONKEYDOWN)]
+    HRESULT onkeydown([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONKEYPRESS)]
+     HRESULT onkeypress([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONKEYPRESS)]
+    HRESULT onkeypress([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEUP)]
+    HRESULT onmouseup([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEUP)]
+    HRESULT onmouseup([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEDOWN)]
+    HRESULT onmousedown([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEDOWN)]
+    HRESULT onmousedown([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEMOVE)]
+    HRESULT onmousemove([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEMOVE)]
+    HRESULT onmousemove([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOUT)]
+    HRESULT onmouseout([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOUT)]
+    HRESULT onmouseout([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOVER)]
+    HRESULT onmouseover([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOVER)]
+    HRESULT onmouseover([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONREADYSTATECHANGE)]
+    HRESULT onreadystatechange([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONREADYSTATECHANGE)]
+    HRESULT onreadystatechange([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONAFTERUPDATE)]
+    HRESULT onafterupdate([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONAFTERUPDATE)]
+    HRESULT onafterupdate([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONROWEXIT)]
+    HRESULT onrowexit([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONROWEXIT)]
+    HRESULT onrowexit([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONROWENTER)]
+    HRESULT onrowenter([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONROWENTER)]
+    HRESULT onrowenter([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONDRAGSTART)]
+    HRESULT ondragstart([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONDRAGSTART)]
+    HRESULT ondragstart([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONSELECTSTART)]
+    HRESULT onselectstart([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONSELECTSTART)]
+    HRESULT onselectstart([retval, out] VARIANT *p);
+
+    [id(DISPID_IHTMLDOCUMENT2_ELEMENTFROMPOINT)]
+    HRESULT elementFromPoint(
+        [in] long x,
+        [in] long y,
+        [retval, out] IHTMLElement **elementHit);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_PARENTWINDOW)]
+    HRESULT parentWindow([retval, out] IHTMLWindow2 **p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_STYLESHEETS)]
+    HRESULT styleSheets([retval, out] IHTMLStyleSheetsCollection **p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONBEFOREUPDATE)]
+    HRESULT onbeforeupdate([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONBEFOREUPDATE)]
+    HRESULT onbeforeupdate([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONERRORUPDATE)]
+    HRESULT onerrorupdate([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONERRORUPDATE)]
+    HRESULT onerrorupdate([retval, out] VARIANT *p);
+
+    [id(DISPID_IHTMLDOCUMENT2_TOSTRING)]
+    HRESULT toString([retval, out] BSTR *String);
+
+    [id(DISPID_IHTMLDOCUMENT2_CREATESTYLESHEET)]
+    HRESULT createStyleSheet(
+        [defaultvalue(""), in] BSTR bstrHref,
+        [defaultvalue(-1), in] long lIndex,
+        [retval, out] IHTMLStyleSheet **ppnewStyleSheet);
+}
+
+/*****************************************************************************
+ *    IHTMLDocument3 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f485-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLDocument3 : IDispatch
+{
+    [id(DISPID_IHTMLDOCUMENT3_RELEASECAPTURE)]
+    HRESULT releaseCapture();
+
+    [id(DISPID_IHTMLDOCUMENT3_RECALC)]
+    HRESULT recalc([defaultvalue(0), in] VARIANT_BOOL fForce);
+
+    [id(DISPID_IHTMLDOCUMENT3_CREATETEXTNODE)]
+    HRESULT createTextNode(
+        [in] BSTR text,
+        [retval, out] IHTMLDOMNode **newTextNode);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_DOCUMENTELEMENT)]
+    HRESULT documentElement([retval, out] IHTMLElement **p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_UNIQUEID), hidden]
+    HRESULT uniqueID([retval, out] BSTR *p);
+
+    [id(DISPID_IHTMLDOCUMENT3_ATTACHEVENT)]
+    HRESULT attachEvent(
+        [in] BSTR event,
+        [in] IDispatch* pDisp,
+        [retval, out] VARIANT_BOOL *pfResult);
+
+    [id(DISPID_IHTMLDOCUMENT3_DETACHEVENT)]
+    HRESULT detachEvent(
+        [in] BSTR event,
+        [in] IDispatch *pDisp);
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_ONROWSDELETE), displaybind, bindable]
+    HRESULT onrowsdelete([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_ONROWSDELETE), displaybind, bindable]
+    HRESULT onrowsdelete([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_ONROWSINSERTED), displaybind, bindable]
+    HRESULT onrowsinserted([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_ONROWSINSERTED), displaybind, bindable]
+    HRESULT onrowsinserted([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_ONCELLCHANGE), displaybind, bindable]
+    HRESULT oncellchange([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_ONCELLCHANGE), displaybind, bindable]
+    HRESULT oncellchange([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_ONDATASETCHANGED), displaybind, bindable]
+    HRESULT ondatasetchanged([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_ONDATASETCHANGED), displaybind, bindable]
+    HRESULT ondatasetchanged([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_ONDATAAVAILABLE), displaybind, bindable]
+    HRESULT ondataavailable([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_ONDATAAVAILABLE), displaybind, bindable]
+    HRESULT ondataavailable([retval, out] VARIANT * p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_ONDATASETCOMPLETE), displaybind, bindable]
+    HRESULT ondatasetcomplete([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_ONDATASETCOMPLETE), displaybind, bindable]
+    HRESULT ondatasetcomplete([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_ONPROPERTYCHANGE), displaybind, bindable]
+    HRESULT onpropertychange([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_ONPROPERTYCHANGE), displaybind, bindable]
+    HRESULT onpropertychange([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_DIR)]
+    HRESULT dir([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_DIR)]
+    HRESULT dir([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_ONCONTEXTMENU), displaybind, bindable]
+    HRESULT oncontextmenu([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_ONCONTEXTMENU), displaybind, bindable]
+    HRESULT oncontextmenu([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_ONSTOP), displaybind, bindable]
+    HRESULT onstop([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_ONSTOP), displaybind, bindable]
+    HRESULT onstop([retval, out] VARIANT *p);
+
+    [id(DISPID_IHTMLDOCUMENT3_CREATEDOCUMENTFRAGMENT)]
+    HRESULT createDocumentFragment([retval, out] IHTMLDocument2 **pNewDoc);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_PARENTDOCUMENT), hidden, restricted]
+    HRESULT parentDocument([retval, out] IHTMLDocument2 **p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_ENABLEDOWNLOAD), hidden, restricted]
+    HRESULT enableDownload([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_ENABLEDOWNLOAD), hidden, restricted]
+    HRESULT enableDownload([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_BASEURL), hidden, restricted]
+    HRESULT baseUrl([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_BASEURL), hidden, restricted]
+    HRESULT baseUrl([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_CHILDNODES)]
+    HRESULT childNodes([retval, out] IDispatch **p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_INHERITSTYLESHEETS), hidden, restricted]
+    HRESULT inheritStyleSheets([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_INHERITSTYLESHEETS), hidden, restricted]
+    HRESULT inheritStyleSheets([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_ONBEFOREEDITFOCUS), displaybind, bindable]
+    HRESULT onbeforeeditfocus([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_ONBEFOREEDITFOCUS), displaybind, bindable]
+    HRESULT onbeforeeditfocus([retval, out] VARIANT *p);
+
+    [id(DISPID_IHTMLDOCUMENT3_GETELEMENTSBYNAME)]
+    HRESULT getElementsByName(
+        [in] BSTR v,
+        [retval, out] IHTMLElementCollection **pelColl);
+
+    [id(DISPID_IHTMLDOCUMENT3_GETELEMENTBYID)]
+    HRESULT getElementById(
+        [in] BSTR v,
+        [retval, out] IHTMLElement **pel);
+
+    [id(DISPID_IHTMLDOCUMENT3_GETELEMENTSBYTAGNAME)]
+    HRESULT getElementsByTagName(
+        [in] BSTR v,
+        [retval, out] IHTMLElementCollection **pelColl);
+}
+
+/*****************************************************************************
+ *    IHTMLDocument4 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f69a-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLDocument4 : IDispatch
+{
+    [id(DISPID_IHTMLDOCUMENT4_FOCUS)]
+    HRESULT focus();
+
+    [id(DISPID_IHTMLDOCUMENT4_HASFOCUS)]
+    HRESULT hasFocus([retval, out] VARIANT_BOOL *pfFocus);
+
+    [propput, id(DISPID_IHTMLDOCUMENT4_ONSELECTIONCHANGE), displaybind, bindable]
+    HRESULT onselectionchange([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT4_ONSELECTIONCHANGE), displaybind, bindable]
+    HRESULT onselectionchange([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT4_NAMESPACES)]
+    HRESULT namespaces([retval, out] IDispatch **p);
+
+    [id(DISPID_IHTMLDOCUMENT4_CREATEDOCUMENTFROMURL)]
+    HRESULT createDocumentFromUrl(
+        [in] BSTR bstrUrl,
+        [in] BSTR bstrOptions,
+        [retval, out] IHTMLDocument2 **newDoc);
+
+    [propput, id(DISPID_IHTMLDOCUMENT4_MEDIA)]
+    HRESULT media([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT4_MEDIA)]
+    HRESULT media([retval, out] BSTR *p);
+
+    [id(DISPID_IHTMLDOCUMENT4_CREATEEVENTOBJECT)]
+    HRESULT createEventObject(
+        [optional, in] VARIANT *pvarEventObject,
+        [retval, out] IHTMLEventObj **ppEventObj);
+
+    [id(DISPID_IHTMLDOCUMENT4_FIREEVENT)]
+    HRESULT fireEvent(
+        [in] BSTR bstrEventName,
+        [optional, in] VARIANT *pvarEventObject,
+        [retval, out] VARIANT_BOOL *pfCancelled);
+
+    [id(DISPID_IHTMLDOCUMENT4_CREATERENDERSTYLE)]
+    HRESULT createRenderStyle(
+        [in] BSTR v,
+        [retval, out] IHTMLRenderStyle **ppIHTMLRenderStyle);
+
+    [propput, id(DISPID_IHTMLDOCUMENT4_ONCONTROLSELECT), displaybind, bindable]
+    HRESULT oncontrolselect([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT4_ONCONTROLSELECT), displaybind, bindable]
+    HRESULT oncontrolselect([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT4_URLUNENCODED)]
+    HRESULT URLUnencoded([retval, out] BSTR *p);
+}
+
+/*****************************************************************************
+ *    IHTMLDocument5 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f80c-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLDocument5 : IDispatch
+{
+    [propput, id(DISPID_IHTMLDOCUMENT5_ONMOUSEWHEEL), displaybind, bindable]
+    HRESULT onmousewheel([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT5_ONMOUSEWHEEL), displaybind, bindable]
+    HRESULT onmousewheel([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT5_DOCTYPE)]
+    HRESULT doctype([retval, out] IHTMLDOMNode **p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT5_IMPLEMENTATION)]
+    HRESULT implementation([retval, out] IHTMLDOMImplementation **p);
+
+    [id(DISPID_IHTMLDOCUMENT5_CREATEATTRIBUTE)]
+    HRESULT createAttribute(
+        [in] BSTR bstrattrName,
+        [retval, out] IHTMLDOMAttribute **ppattribute);
+
+    [id(DISPID_IHTMLDOCUMENT5_CREATECOMMENT)]
+    HRESULT createComment(
+        [in] BSTR bstrdata,
+        [retval, out] IHTMLDOMNode **ppRetNode);
+
+    [propput, id(DISPID_IHTMLDOCUMENT5_ONFOCUSIN), displaybind, bindable]
+    HRESULT onfocusin([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT5_ONFOCUSIN), displaybind, bindable]
+    HRESULT onfocusin([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT5_ONFOCUSOUT), displaybind, bindable]
+    HRESULT onfocusout([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT5_ONFOCUSOUT), displaybind, bindable]
+    HRESULT onfocusout([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT5_ONACTIVATE), displaybind, bindable]
+    HRESULT onactivate([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT5_ONACTIVATE), displaybind, bindable]
+    HRESULT onactivate([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT5_ONDEACTIVATE), displaybind, bindable]
+    HRESULT ondeactivate([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT5_ONDEACTIVATE), displaybind, bindable]
+    HRESULT ondeactivate([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT5_ONBEFOREACTIVATE), displaybind, bindable]
+    HRESULT onbeforeactivate([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT5_ONBEFOREACTIVATE), displaybind, bindable]
+    HRESULT onbeforeactivate([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT5_ONBEFOREDEACTIVATE), displaybind, bindable]
+    HRESULT onbeforedeactivate([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT5_ONBEFOREDEACTIVATE), displaybind, bindable]
+    HRESULT onbeforedeactivate([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT5_COMPATMODE)]
+    HRESULT compatMode([retval, out] BSTR *p);
+}
+
+/*****************************************************************************
+ *    DispHTMLDocument dispinterface
+ */
+[
+    hidden,
+    uuid(3050f55f-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLDocument
+{
+properties:
+methods:
+    [propget, id(DISPID_IHTMLDOCUMENT_SCRIPT), hidden, nonbrowsable]
+    IDispatch *Script();
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ALL)]
+    IHTMLElementCollection *all();
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_BODY)]
+    IHTMLElement *body();
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ACTIVEELEMENT)]
+    IHTMLElement *activeElement();
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_IMAGES)]
+    IHTMLElementCollection *images();
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_APPLETS)]
+    IHTMLElementCollection *applets();
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_LINKS)]
+    IHTMLElementCollection *links();
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_FORMS)]
+    IHTMLElementCollection *forms();
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ANCHORS)]
+    IHTMLElementCollection *anchors();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_TITLE)]
+    void title(BSTR v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_TITLE)]
+    BSTR title();
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_SCRIPTS)]
+    IHTMLElementCollection *scripts();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_DESIGNMODE), hidden]
+    void designMode(BSTR v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_DESIGNMODE), hidden]
+    BSTR designMode();
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_SELECTION)]
+    IHTMLSelectionObject *selection();
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_READYSTATE), bindable]
+    BSTR readyState();
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_FRAMES)]
+    IHTMLFramesCollection2 *frames();
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_EMBEDS)]
+    IHTMLElementCollection *embeds();
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_PLUGINS)]
+    IHTMLElementCollection *plugins();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ALINKCOLOR)]
+    void alinkColor(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ALINKCOLOR)]
+    VARIANT alinkColor();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_BGCOLOR)]
+    void bgColor(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_BGCOLOR)]
+    VARIANT bgColor();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_FGCOLOR)]
+    void fgColor(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_FGCOLOR)]
+    VARIANT fgColor();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_LINKCOLOR)]
+    void linkColor(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_LINKCOLOR)]
+    VARIANT linkColor();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_VLINKCOLOR)]
+    void vlinkColor(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_VLINKCOLOR)]
+    VARIANT vlinkColor();
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_REFERRER)]
+    BSTR referrer();
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_LOCATION)]
+    IHTMLLocation *location();
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_LASTMODIFIED)]
+    BSTR lastModified();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_URL)]
+    void URL(BSTR v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_URL)]
+    BSTR URL();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_DOMAIN)]
+    void domain(BSTR v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_DOMAIN)]
+    BSTR domain();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_COOKIE)]
+    void cookie(BSTR v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_COOKIE)]
+    BSTR cookie();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_EXPANDO), bindable, hidden]
+    void expando(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_EXPANDO), bindable, hidden]
+    VARIANT_BOOL expando();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_CHARSET), hidden]
+    void charset(BSTR v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_CHARSET), hidden]
+    BSTR charset();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_DEFAULTCHARSET)]
+    void defaultCharset(BSTR v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_DEFAULTCHARSET)]
+    BSTR defaultCharset();
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_MIMETYPE)]
+    BSTR mimeType();
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_FILESIZE)]
+    BSTR fileSize();
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_FILECREATEDDATE)]
+    BSTR fileCreatedDate();
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_FILEMODIFIEDDATE)]
+    BSTR fileModifiedDate();
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_FILEUPDATEDDATE)]
+    BSTR fileUpdatedDate();
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_SECURITY)]
+    BSTR security();
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_PROTOCOL)]
+    BSTR protocol();
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_NAMEPROP)]
+    BSTR nameProp();
+
+    [vararg, id(DISPID_IHTMLDOCUMENT2_WRITE)]
+    void write([in] SAFEARRAY(VARIANT) psarray);
+
+    [vararg, id(DISPID_IHTMLDOCUMENT2_WRITELN)]
+    void writeln([in] SAFEARRAY(VARIANT) psarray);
+
+    [id(DISPID_IHTMLDOCUMENT2_OPEN)]
+    IDispatch *open(
+        [defaultvalue("text/html"), in] BSTR url,
+        [optional, in] VARIANT name,
+        [optional, in] VARIANT features,
+        [optional, in] VARIANT replace);
+
+    [id(DISPID_IHTMLDOCUMENT2_CLOSE)]
+    void close();
+
+    [id(DISPID_IHTMLDOCUMENT2_CLEAR)]
+    void clear();
+
+    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDSUPPORTED)]
+    VARIANT_BOOL queryCommandSupported([in] BSTR cmdID);
+
+    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDENABLED)]
+    VARIANT_BOOL queryCommandEnabled([in] BSTR cmdID);
+
+    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDSTATE)]
+    VARIANT_BOOL queryCommandState([in] BSTR cmdID);
+
+    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDINDETERM)]
+    VARIANT_BOOL queryCommandIndeterm([in] BSTR cmdID);
+
+    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDTEXT)]
+    BSTR queryCommandText([in] BSTR cmdID);
+
+    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDVALUE)]
+    VARIANT queryCommandValue([in] BSTR cmdID);
+
+    [id(DISPID_IHTMLDOCUMENT2_EXECCOMMAND)]
+    VARIANT_BOOL execCommand(
+        [in] BSTR cmdID,
+        [defaultvalue(0), in] VARIANT_BOOL showUI,
+        [optional, in] VARIANT value);
+
+    [id(DISPID_IHTMLDOCUMENT2_EXECCOMMANDSHOWHELP)]
+    VARIANT_BOOL execCommandShowHelp([in] BSTR cmdID);
+
+    [id(DISPID_IHTMLDOCUMENT2_CREATEELEMENT)]
+    IHTMLElement *createElement([in] BSTR eTag);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONHELP), displaybind, bindable]
+    void onhelp(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONHELP), displaybind, bindable]
+    VARIANT onhelp();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONCLICK), displaybind, bindable]
+    void onclick(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONCLICK), displaybind, bindable]
+    VARIANT onclick();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONDBLCLICK), displaybind, bindable]
+    void ondblclick(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONDBLCLICK), displaybind, bindable]
+    VARIANT ondblclick();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONKEYUP), displaybind, bindable]
+    void onkeyup(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONKEYUP), displaybind, bindable]
+    VARIANT onkeyup();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONKEYDOWN), displaybind, bindable]
+    void onkeydown(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONKEYDOWN), displaybind, bindable]
+    VARIANT onkeydown();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONKEYPRESS), displaybind, bindable]
+    void onkeypress(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONKEYPRESS), displaybind, bindable]
+    VARIANT onkeypress();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEUP), displaybind, bindable]
+    void onmouseup(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEUP), displaybind, bindable]
+    VARIANT onmouseup();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEDOWN), displaybind, bindable]
+    void onmousedown(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEDOWN), displaybind, bindable]
+    VARIANT onmousedown();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEMOVE), displaybind, bindable]
+    void onmousemove(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEMOVE), displaybind, bindable]
+    VARIANT onmousemove();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOUT), displaybind, bindable]
+    void onmouseout(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOUT), displaybind, bindable]
+    VARIANT onmouseout();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOVER), displaybind, bindable]
+    void onmouseover(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOVER), displaybind, bindable]
+    VARIANT onmouseover();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    void onreadystatechange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    VARIANT onreadystatechange();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONAFTERUPDATE), displaybind, bindable]
+    void onafterupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONAFTERUPDATE), displaybind, bindable]
+    VARIANT onafterupdate();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONROWEXIT), displaybind, bindable]
+    void onrowexit(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONROWEXIT), displaybind, bindable]
+    VARIANT onrowexit();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONROWENTER), displaybind, bindable]
+    void onrowenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONROWENTER), displaybind, bindable]
+    VARIANT onrowenter();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONDRAGSTART), displaybind, bindable]
+    void ondragstart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONDRAGSTART), displaybind, bindable]
+    VARIANT ondragstart();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONSELECTSTART), displaybind, bindable]
+    void onselectstart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONSELECTSTART), displaybind, bindable]
+    VARIANT onselectstart();
+
+    [id(DISPID_IHTMLDOCUMENT2_ELEMENTFROMPOINT)]
+    IHTMLElement *elementFromPoint(
+        [in] long x,
+        [in] long y);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_PARENTWINDOW)]
+    IHTMLWindow2 *parentWindow();
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_STYLESHEETS)]
+    IHTMLStyleSheetsCollection *styleSheets();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONBEFOREUPDATE), displaybind, bindable]
+    void onbeforeupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONBEFOREUPDATE), displaybind, bindable]
+    VARIANT onbeforeupdate();
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONERRORUPDATE), displaybind, bindable]
+    void onerrorupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONERRORUPDATE), displaybind, bindable]
+    VARIANT onerrorupdate();
+
+    [id(DISPID_IHTMLDOCUMENT2_TOSTRING)]
+    BSTR toString();
+
+    [id(DISPID_IHTMLDOCUMENT2_CREATESTYLESHEET)]
+    IHTMLStyleSheet *createStyleSheet(
+        [defaultvalue(""), in] BSTR bstrHref,
+        [defaultvalue(-1), in] long lIndex);
+
+    [id(DISPID_IHTMLDOCUMENT3_RELEASECAPTURE)]
+    void releaseCapture();
+
+    [id(DISPID_IHTMLDOCUMENT3_RECALC)]
+    void recalc([defaultvalue(0), in] VARIANT_BOOL fForce);
+
+    [id(DISPID_IHTMLDOCUMENT3_CREATETEXTNODE)]
+    IHTMLDOMNode *createTextNode([in] BSTR text);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_DOCUMENTELEMENT)]
+    IHTMLElement *documentElement();
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_UNIQUEID), hidden]
+    BSTR uniqueID();
+
+    [id(DISPID_IHTMLDOCUMENT3_ATTACHEVENT)]
+    VARIANT_BOOL attachEvent(
+        [in] BSTR event,
+        [in] IDispatch *pDisp);
+
+    [id(DISPID_IHTMLDOCUMENT3_DETACHEVENT)]
+    void detachEvent(
+        [in] BSTR event,
+        [in] IDispatch *pDisp);
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_ONROWSDELETE), displaybind, bindable]
+    void onrowsdelete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_ONROWSDELETE), displaybind, bindable]
+    VARIANT onrowsdelete();
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_ONROWSINSERTED), displaybind, bindable]
+    void onrowsinserted(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_ONROWSINSERTED), displaybind, bindable]
+    VARIANT onrowsinserted();
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_ONCELLCHANGE), displaybind, bindable]
+    void oncellchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_ONCELLCHANGE), displaybind, bindable]
+    VARIANT oncellchange();
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_ONDATASETCHANGED), displaybind, bindable]
+    void ondatasetchanged(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_ONDATASETCHANGED), displaybind, bindable]
+    VARIANT ondatasetchanged();
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_ONDATAAVAILABLE), displaybind, bindable]
+    void ondataavailable(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_ONDATAAVAILABLE), displaybind, bindable]
+    VARIANT ondataavailable();
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_ONDATASETCOMPLETE), displaybind, bindable]
+    void ondatasetcomplete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_ONDATASETCOMPLETE), displaybind, bindable]
+    VARIANT ondatasetcomplete();
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_ONPROPERTYCHANGE), displaybind, bindable]
+    void onpropertychange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_ONPROPERTYCHANGE), displaybind, bindable]
+    VARIANT onpropertychange();
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_DIR)]
+    void dir(BSTR v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_DIR)]
+    BSTR dir();
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_ONCONTEXTMENU), displaybind, bindable]
+    void oncontextmenu(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_ONCONTEXTMENU), displaybind, bindable]
+    VARIANT oncontextmenu();
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_ONSTOP), displaybind, bindable]
+    void onstop(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_ONSTOP), displaybind, bindable]
+    VARIANT onstop();
+
+    [id(DISPID_IHTMLDOCUMENT3_CREATEDOCUMENTFRAGMENT)]
+    IHTMLDocument2 *createDocumentFragment();
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_PARENTDOCUMENT), hidden, restricted]
+    IHTMLDocument2 *parentDocument();
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_ENABLEDOWNLOAD), hidden, restricted]
+    void enableDownload(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_ENABLEDOWNLOAD), hidden, restricted]
+    VARIANT_BOOL enableDownload();
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_BASEURL), hidden, restricted]
+    void baseUrl(BSTR v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_BASEURL), hidden, restricted]
+    BSTR baseUrl();
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_INHERITSTYLESHEETS), hidden, restricted]
+    void inheritStyleSheets(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_INHERITSTYLESHEETS), hidden, restricted]
+    VARIANT_BOOL inheritStyleSheets();
+
+    [propput, id(DISPID_IHTMLDOCUMENT3_ONBEFOREEDITFOCUS), displaybind, bindable]
+    void onbeforeeditfocus(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT3_ONBEFOREEDITFOCUS), displaybind, bindable]
+    VARIANT onbeforeeditfocus();
+
+    [id(DISPID_IHTMLDOCUMENT3_GETELEMENTSBYNAME)]
+    IHTMLElementCollection *getElementsByName([in] BSTR v);
+
+    [id(DISPID_IHTMLDOCUMENT3_GETELEMENTBYID)]
+    IHTMLElement *getElementById([in] BSTR v);
+
+    [id(DISPID_IHTMLDOCUMENT3_GETELEMENTSBYTAGNAME)]
+    IHTMLElementCollection *getElementsByTagName([in] BSTR v);
+
+    [id(DISPID_IHTMLDOCUMENT4_FOCUS)]
+    void focus();
+
+    [id(DISPID_IHTMLDOCUMENT4_HASFOCUS)]
+    VARIANT_BOOL hasFocus();
+
+    [propput, id(DISPID_IHTMLDOCUMENT4_ONSELECTIONCHANGE), displaybind, bindable]
+    void onselectionchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT4_ONSELECTIONCHANGE), displaybind, bindable]
+    VARIANT onselectionchange();
+
+    [propget, id(DISPID_IHTMLDOCUMENT4_NAMESPACES)]
+    IDispatch *namespaces();
+
+    [id(DISPID_IHTMLDOCUMENT4_CREATEDOCUMENTFROMURL)]
+    IHTMLDocument2 *createDocumentFromUrl(
+        [in] BSTR bstrUrl,
+        [in] BSTR bstrOptions);
+
+    [propput, id(DISPID_IHTMLDOCUMENT4_MEDIA)]
+    void media(BSTR v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT4_MEDIA)]
+    BSTR media();
+
+    [id(DISPID_IHTMLDOCUMENT4_CREATEEVENTOBJECT)]
+    IHTMLEventObj *createEventObject([optional, in] VARIANT *pvarEventObject);
+
+    [id(DISPID_IHTMLDOCUMENT4_FIREEVENT)]
+    VARIANT_BOOL fireEvent(
+        [in] BSTR bstrEventName,
+        [optional, in] VARIANT *pvarEventObject);
+
+    [id(DISPID_IHTMLDOCUMENT4_CREATERENDERSTYLE)]
+    IHTMLRenderStyle *createRenderStyle([in] BSTR v);
+
+    [propput, id(DISPID_IHTMLDOCUMENT4_ONCONTROLSELECT), displaybind, bindable]
+    void oncontrolselect(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT4_ONCONTROLSELECT), displaybind, bindable]
+    VARIANT oncontrolselect();
+
+    [propget, id(DISPID_IHTMLDOCUMENT4_URLUNENCODED)]
+    BSTR URLUnencoded();
+
+    [propput, id(DISPID_IHTMLDOCUMENT5_ONMOUSEWHEEL), displaybind, bindable]
+    void onmousewheel(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT5_ONMOUSEWHEEL), displaybind, bindable]
+    VARIANT onmousewheel();
+
+    [propget, id(DISPID_IHTMLDOCUMENT5_DOCTYPE)]
+    IHTMLDOMNode *doctype();
+
+    [propget, id(DISPID_IHTMLDOCUMENT5_IMPLEMENTATION)]
+    IHTMLDOMImplementation *implementation();
+
+    [id(DISPID_IHTMLDOCUMENT5_CREATEATTRIBUTE)]
+    IHTMLDOMAttribute *createAttribute([in] BSTR bstrattrName);
+
+    [id(DISPID_IHTMLDOCUMENT5_CREATECOMMENT)]
+    IHTMLDOMNode *createComment([in] BSTR bstrdata);
+
+    [propput, id(DISPID_IHTMLDOCUMENT5_ONFOCUSIN), displaybind, bindable]
+    void onfocusin(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT5_ONFOCUSIN), displaybind, bindable]
+    VARIANT onfocusin();
+
+    [propput, id(DISPID_IHTMLDOCUMENT5_ONFOCUSOUT), displaybind, bindable]
+    void onfocusout(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT5_ONFOCUSOUT), displaybind, bindable]
+    VARIANT onfocusout();
+
+    [propput, id(DISPID_IHTMLDOCUMENT5_ONACTIVATE), displaybind, bindable]
+    void onactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT5_ONACTIVATE), displaybind, bindable]
+    VARIANT onactivate();
+
+    [propput, id(DISPID_IHTMLDOCUMENT5_ONDEACTIVATE), displaybind, bindable]
+    void ondeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT5_ONDEACTIVATE), displaybind, bindable]
+    VARIANT ondeactivate();
+
+    [propput, id(DISPID_IHTMLDOCUMENT5_ONBEFOREACTIVATE), displaybind, bindable]
+    void onbeforeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT5_ONBEFOREACTIVATE), displaybind, bindable]
+    VARIANT onbeforeactivate();
+
+    [propput, id(DISPID_IHTMLDOCUMENT5_ONBEFOREDEACTIVATE), displaybind, bindable]
+    void onbeforedeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT5_ONBEFOREDEACTIVATE), displaybind, bindable]
+    VARIANT onbeforedeactivate();
+
+    [propget, id(DISPID_IHTMLDOCUMENT5_COMPATMODE)]
+    BSTR compatMode();
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
+    long nodeType();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
+    IHTMLDOMNode *parentNode();
+
+    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
+    VARIANT_BOOL hasChildNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
+    IDispatch *childNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
+    IDispatch *attributes();
+
+    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
+    IHTMLDOMNode *insertBefore(
+        [in] IHTMLDOMNode *newChild,
+        [optional, in] VARIANT refChild);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
+    IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
+    IHTMLDOMNode *replaceChild(
+        [in] IHTMLDOMNode *newChild,
+        [in] IHTMLDOMNode *oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_CLONENODE)]
+    IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
+    IHTMLDOMNode *removeNode([defaultvalue(0), in] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
+    IHTMLDOMNode *swapNode([in] IHTMLDOMNode* otherNode);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
+    IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
+
+    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
+    IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
+    BSTR nodeName();
+
+    [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    void nodeValue(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    VARIANT nodeValue();
+
+    [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
+    IHTMLDOMNode *firstChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
+    IHTMLDOMNode *lastChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
+    IHTMLDOMNode *previousSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
+    IHTMLDOMNode *nextSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
+    IDispatch *ownerDocument();
+}
+
+/*****************************************************************************
+ *    HTMLDocument coclass
+ */
+[
+    uuid(25336920-03F9-11cf-8FD0-00AA00686F13)
+]
+coclass HTMLDocument
+{
+    [default]         dispinterface DispHTMLDocument;
+    [source, default] dispinterface HTMLDocumentEvents;
+    [source]          dispinterface HTMLDocumentEvents2;
+                      interface IHTMLDocument2;
+                      interface IHTMLDocument3;
+                      interface IHTMLDocument4;
+                      interface IHTMLDocument5;
+                      interface IHTMLDOMNode;
+                      interface IHTMLDOMNode2;
+}
+
+/*****************************************************************************
+ *    IHTMLCommentElement interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f20c-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLCommentElement : IDispatch
+{
+    [propput, id(DISPID_IHTMLCOMMENTELEMENT_TEXT), displaybind, bindable]
+    HRESULT text([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLCOMMENTELEMENT_TEXT), displaybind, bindable]
+    HRESULT text([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLCOMMENTELEMENT_ATOMIC), displaybind, bindable]
+    HRESULT atomic([in] long v);
+
+    [propget, id(DISPID_IHTMLCOMMENTELEMENT_ATOMIC), displaybind, bindable]
+    HRESULT atomic([out, retval] long *p);
+}
+
+/*****************************************************************************
+ *    IHTMLCommentElement2 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f813-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLCommentElement2 : IDispatch
+{
+    [propput, id(DISPID_IHTMLCOMMENTELEMENT2_DATA)]
+    HRESULT data([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLCOMMENTELEMENT2_DATA)]
+    HRESULT data([out, retval] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCOMMENTELEMENT2_LENGTH)]
+    HRESULT length([out, retval] long *p);
+
+    [id(DISPID_IHTMLCOMMENTELEMENT2_SUBSTRINGDATA)]
+    HRESULT substringData(
+            [in] long offset,
+            [in] long Count,
+            [out, retval] BSTR *pbstrsubString);
+
+    [id(DISPID_IHTMLCOMMENTELEMENT2_APPENDDATA)]
+    HRESULT appendData([in] BSTR bstrstring);
+
+    [id(DISPID_IHTMLCOMMENTELEMENT2_INSERTDATA)]
+    HRESULT insertData(
+            [in] long offset,
+            [in] BSTR bstrstring);
+
+    [id(DISPID_IHTMLCOMMENTELEMENT2_DELETEDATA)]
+    HRESULT deleteData(
+            [in] long offset,
+            [in] long Count);
+
+    [id(DISPID_IHTMLCOMMENTELEMENT2_REPLACEDATA)]
+    HRESULT replaceData(
+            [in] long offset,
+            [in] long Count,
+            [in] BSTR bstrstring);
+}
+
+/*****************************************************************************
+ *    DispHTMLCommentElement dispinterface
+ */
+[
+    hidden,
+    uuid(3050f50a-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLCommentElement
+{
+properties:
+methods:
+    [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
+    void setAttribute(
+            [in] BSTR strAttributeName,
+            [in] VARIANT AttributeValue,
+            [in, defaultvalue(1)] LONG lFlags);
+
+    [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
+    VARIANT getAttribute(
+             [in] BSTR strAttributeName,
+             [in, defaultvalue(0)] LONG lFlags);
+
+    [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
+    VARIANT_BOOL removeAttribute(
+            [in] BSTR strAttributeName,
+            [in, defaultvalue(1)] LONG lFlags);
+
+    [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+    void className(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+    BSTR className();
+
+    [propput, id(DISPID_IHTMLELEMENT_ID), bindable]
+    void id(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ID), bindable]
+    BSTR id();
+
+    [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
+    BSTR tagName();
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
+    IHTMLElement *parentElement();
+
+    [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]
+    IHTMLStyle *style();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+    void onhelp(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+    VARIANT onhelp();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+    void onclick(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+    VARIANT onclick();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+    void ondblclick(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+    VARIANT ondblclick();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+    void onkeydown(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+    VARIANT onkeydown();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+    void onkeyup(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+    VARIANT onkeyup();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+    void onkeypress(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+    VARIANT onkeypress();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+    void onmouseout(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+    VARIANT onmouseout();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+    void onmouseover(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+    VARIANT onmouseover();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+    void onmousemove(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+    VARIANT onmousemove();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+    void onmousedown(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+    VARIANT onmousedown();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+    void onmouseup(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+    VARIANT onmouseup();
+
+    [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
+    IDispatch *document();
+
+    [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+    void title(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+    BSTR title();
+
+    [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+    void language(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+    BSTR language();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+    void onselectstart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+    VARIANT onselectstart();
+
+    [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
+    void scrollIntoView([in, optional] VARIANT varargStart);
+
+    [id(DISPID_IHTMLELEMENT_CONTAINS)]
+    VARIANT_BOOL contains([in] IHTMLElement *pChild);
+
+    [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]
+    long sourceIndex();
+
+    [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
+    VARIANT recordNumber();
+
+    [propput, id(DISPID_IHTMLELEMENT_LANG)]
+    void lang(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANG)]
+    BSTR lang();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
+    long offsetLeft();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
+    long offsetTop();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
+    long offsetWidth();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
+    long offsetHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
+    IHTMLElement *offsetParent();
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    void innerHTML(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    BSTR innerHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    void innerText(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    BSTR innerText();
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    void outerHTML(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    BSTR outerHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    void outerText(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    BSTR outerText();
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
+    void insertAdjacentHTML(
+            [in] BSTR where,
+            [in] BSTR html);
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
+    void insertAdjacentText(
+            [in] BSTR where,
+            [in] BSTR text);
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
+    IHTMLElement *parentTextEdit();
+
+    [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
+    VARIANT_BOOL isTextEdit();
+
+    [id(DISPID_IHTMLELEMENT_CLICK)]
+    void click();
+
+    [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
+    IHTMLFiltersCollection *filters();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+    void ondragstart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+    VARIANT ondragstart();
+
+    [id(DISPID_IHTMLELEMENT_TOSTRING)]
+    BSTR toString();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+    void onbeforeupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+    VARIANT onbeforeupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+    void onafterupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+    VARIANT onafterupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+    void onerrorupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+    VARIANT onerrorupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+    void onrowexit(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+    VARIANT onrowexit();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+    void onrowenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+    VARIANT onrowenter();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+    void ondatasetchanged(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+    VARIANT ondatasetchanged();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+    void ondataavailable(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+    VARIANT ondataavailable();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+    void ondatasetcomplete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+    VARIANT ondatasetcomplete();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+    void onfilterchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+    VARIANT onfilterchange();
+
+    [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
+    IDispatch *children();
+
+    [propget, id(DISPID_IHTMLELEMENT_ALL)]
+    IDispatch *all();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
+    BSTR scopeName();
+
+    [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
+    void setCapture([in, defaultvalue(-1)] VARIANT_BOOL containerCapture);
+
+    [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
+    void releaseCapture();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    void onlosecapture(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    VARIANT onlosecapture();
+
+    [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
+    BSTR componentFromPoint(
+            [in] long x,
+            [in] long y);
+
+    [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
+    void doScroll([in, optional] VARIANT component);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    void onscroll(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    VARIANT onscroll();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    void ondrag(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    VARIANT ondrag();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    void ondragend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    VARIANT ondragend();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    void ondragenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    VARIANT ondragenter();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    void ondragover(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    VARIANT ondragover();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    void ondragleave(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    VARIANT ondragleave();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+    void ondrop(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+    VARIANT ondrop();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    void onbeforecut(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    VARIANT onbeforecut();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    void oncut(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    VARIANT oncut();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    void onbeforecopy(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    VARIANT onbeforecopy();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    void oncopy(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    VARIANT oncopy();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+    void onbeforepaste(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+    VARIANT onbeforepaste();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    void onpaste(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    VARIANT onpaste();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
+    IHTMLCurrentStyle *currentStyle();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    void onpropertychange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    VARIANT onpropertychange();
+
+    [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
+    IHTMLRectCollection *getClientRects();
+
+    [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
+    IHTMLRect *getBoundingClientRect();
+
+    [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
+    void setExpression(
+            [in] BSTR propname,
+            [in] BSTR expression,
+            [in, defaultvalue("")] BSTR language);
+
+    [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
+    VARIANT getExpression([in] BSTR propname);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
+    VARIANT_BOOL removeExpression([in] BSTR propname);
+
+    [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    void tabIndex(short v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    short tabIndex();
+
+    [id(DISPID_IHTMLELEMENT2_FOCUS)]
+    void focus();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    void accessKey(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    BSTR accessKey();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+    void onblur(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+    VARIANT onblur();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    void onfocus(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    VARIANT onfocus();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    void onresize(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    VARIANT onresize();
+
+    [id(DISPID_IHTMLELEMENT2_BLUR)]
+    void blur();
+
+    [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
+    void addFilter([in] IUnknown *pUnk);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
+    void removeFilter([in] IUnknown *pUnk);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
+    long clientHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
+    long clientWidth();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
+    long clientTop();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
+    long clientLeft();
+
+    [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
+    VARIANT_BOOL attachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp);
+
+    [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
+    void detachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp);
+
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
+    VARIANT readyState();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    void onreadystatechange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    VARIANT onreadystatechange();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    void onrowsdelete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    VARIANT onrowsdelete();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+    void onrowsinserted(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+     VARIANT onrowsinserted();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+     void oncellchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+    VARIANT oncellchange();
+
+    [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    void dir(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    BSTR dir();
+
+    [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
+    IDispatch *createControlRange();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
+    long scrollHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
+    long scrollWidth();
+
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    void scrollTop(long v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    long scrollTop();
+
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    void scrollLeft(long v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    long scrollLeft();
+
+    [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
+    void clearAttributes();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    void oncontextmenu(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    VARIANT oncontextmenu();
+
+    [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
+    IHTMLElement *insertAdjacentElement(
+            [in] BSTR where,
+            [in] IHTMLElement *insertedElement);
+
+    [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
+    IHTMLElement *applyElement(
+            [in] IHTMLElement *apply,
+            [in] BSTR where);
+
+    [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
+    BSTR getAdjacentText([in] BSTR where);
+
+    [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
+    BSTR replaceAdjacentText(
+            [in] BSTR where,
+            [in] BSTR newText);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
+    VARIANT_BOOL canHaveChildren();
+
+    [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
+    long addBehavior(
+            [in] BSTR bstrUrl,
+            [in, optional] VARIANT *pvarFactory);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
+    VARIANT_BOOL removeBehavior([in] long cookie);
+
+    [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
+    IHTMLStyle *runtimeStyle();
+
+    [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
+    IDispatch *behaviorUrns();
+
+    [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    void tagUrn(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    BSTR tagUrn();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    void onbeforeeditfocus(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    VARIANT onbeforeeditfocus();
+
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
+    long readyStateValue();
+
+    [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
+    IHTMLElementCollection *getElementsByTagName([in] BSTR v);
+
+    [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]
+    void mergeAttributes(
+            [in] IHTMLElement *mergeThis,
+            [in, optional] VARIANT *pvarFlags);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
+    VARIANT_BOOL isMultiLine();
+
+    [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
+    VARIANT_BOOL canHaveHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    void onlayoutcomplete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    VARIANT onlayoutcomplete();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    void onpage(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    VARIANT onpage();
+
+    [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    void inflateBlock(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    VARIANT_BOOL inflateBlock();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    void onbeforedeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    VARIANT onbeforedeactivate();
+
+    [id(DISPID_IHTMLELEMENT3_SETACTIVE)]
+    void setActive();
+
+    [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    void contentEditable(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    BSTR contentEditable();
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
+    VARIANT_BOOL isContentEditable();
+
+    [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    void hideFocus(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    VARIANT_BOOL hideFocus();
+
+    [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    void disabled(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    VARIANT_BOOL disabled();
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
+    VARIANT_BOOL isDisabled();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    void onmove(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    VARIANT onmove();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    void oncontrolselect(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    VARIANT oncontrolselect();
+
+    [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
+    VARIANT_BOOL fireEvent(
+            [in] BSTR bstrEventName,
+            [in, optional] VARIANT *pvarEventObject);
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+    void onresizestart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+    VARIANT onresizestart();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    void onresizeend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    VARIANT onresizeend();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    void onmovestart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    VARIANT onmovestart();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    void onmoveend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    VARIANT onmoveend();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    void onmouseenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    VARIANT onmouseenter();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    void onmouseleave(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    VARIANT onmouseleave();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+    void onactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+    VARIANT onactivate();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    void ondeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    VARIANT ondeactivate();
+
+    [id(DISPID_IHTMLELEMENT3_DRAGDROP)]
+    VARIANT_BOOL dragDrop();
+
+    [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
+    LONG glyphMode();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    void onmousewheel(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    VARIANT onmousewheel();
+
+    [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
+    void normalize();
+
+    [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
+    IHTMLDOMAttribute *getAttributeNode([in] BSTR bstrname);
+
+    [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
+    IHTMLDOMAttribute *setAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+    [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
+    IHTMLDOMAttribute *removeAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    void onbeforeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    VARIANT onbeforeactivate();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    void onfocusin(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    VARIANT onfocusin();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    void onfocusout(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    VARIANT onfocusout();
+
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
+    long uniqueNumber();
+
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
+    BSTR uniqueID();
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
+    long nodeType();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
+    IHTMLDOMNode *parentNode();
+
+    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
+    VARIANT_BOOL hasChildNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
+    IDispatch *childNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
+    IDispatch *attributes();
+
+    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
+    IHTMLDOMNode *insertBefore(
+            [in] IHTMLDOMNode *newChild,
+            [in, optional] VARIANT refChild);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
+    IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
+    IHTMLDOMNode *replaceChild(
+            [in] IHTMLDOMNode *newChild,
+            [in] IHTMLDOMNode *oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_CLONENODE)]
+    IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
+    IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
+    IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
+    IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
+
+    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
+    IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
+    BSTR nodeName();
+
+    [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    void nodeValue(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    VARIANT nodeValue();
+
+    [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
+    IHTMLDOMNode *firstChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
+    IHTMLDOMNode *lastChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
+    IHTMLDOMNode *previousSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
+    IHTMLDOMNode *nextSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
+    IDispatch *ownerDocument();
+
+    [propput, id(DISPID_IHTMLCOMMENTELEMENT_TEXT), displaybind, bindable]
+    void text(BSTR v);
+
+    [propget, id(DISPID_IHTMLCOMMENTELEMENT_TEXT), displaybind, bindable]
+    BSTR text();
+
+    [propput, id(DISPID_IHTMLCOMMENTELEMENT_ATOMIC), displaybind, bindable]
+    void atomic(long v);
+
+    [propget, id(DISPID_IHTMLCOMMENTELEMENT_ATOMIC), displaybind, bindable]
+    long atomic();
+
+    [propput, id(DISPID_IHTMLCOMMENTELEMENT2_DATA)]
+    void data(BSTR v);
+
+    [propget, id(DISPID_IHTMLCOMMENTELEMENT2_DATA)]
+    BSTR data();
+
+    [propget, id(DISPID_IHTMLCOMMENTELEMENT2_LENGTH)]
+    long length();
+
+    [id(DISPID_IHTMLCOMMENTELEMENT2_SUBSTRINGDATA)]
+    BSTR substringData(
+            [in] long offset,
+            [in] long Count);
+
+    [id(DISPID_IHTMLCOMMENTELEMENT2_APPENDDATA)]
+    void appendData([in] BSTR bstrstring);
+
+    [id(DISPID_IHTMLCOMMENTELEMENT2_INSERTDATA)]
+     void insertData(
+            [in] long offset,
+            [in] BSTR bstrstring);
+
+    [id(DISPID_IHTMLCOMMENTELEMENT2_DELETEDATA)]
+    void deleteData(
+            [in] long offset,
+            [in] long Count);
+
+    [id(DISPID_IHTMLCOMMENTELEMENT2_REPLACEDATA)]
+    void replaceData(
+            [in] long offset,
+            [in] long Count,
+            [in] BSTR bstrstring);
+}
+
+/*****************************************************************************
+ *    HTMLTableEvents dispinterface
+ */
+[
+    hidden,
+    uuid(3050f407-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface HTMLTableEvents
+{
+properties:
+methods:
+    [id(DISPID_HTMLELEMENTEVENTS_ONHELP)]
+    VARIANT_BOOL onhelp();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONCLICK)]
+    VARIANT_BOOL onclick();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)]
+    VARIANT_BOOL ondblclick();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)]
+    VARIANT_BOOL onkeypress();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)]
+    void onkeydown();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONKEYUP)]
+    void onkeyup();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)]
+    void onmouseout();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)]
+    void onmouseover();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)]
+    void onmousemove();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)]
+    void onmousedown();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)]
+    void onmouseup();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)]
+    VARIANT_BOOL onselectstart();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)]
+    void onfilterchange();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)]
+    VARIANT_BOOL ondragstart();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)]
+    VARIANT_BOOL onbeforeupdate();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)]
+    void onafterupdate();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)]
+    VARIANT_BOOL onerrorupdate();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONROWEXIT)]
+    VARIANT_BOOL onrowexit();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONROWENTER)]
+    void onrowenter();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)]
+    void ondatasetchanged();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)]
+    void ondataavailable();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)]
+    void ondatasetcomplete();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)]
+    void onlosecapture();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)]
+    void onpropertychange();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONSCROLL)]
+    void onscroll();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUS)]
+    void onfocus();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONBLUR)]
+    void onblur();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZE)]
+    void onresize();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAG)]
+    VARIANT_BOOL ondrag();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGEND)]
+    void ondragend();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)]
+    VARIANT_BOOL ondragenter();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)]
+    VARIANT_BOOL ondragover();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)]
+    void ondragleave();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONDROP)]
+    VARIANT_BOOL ondrop();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)]
+    VARIANT_BOOL onbeforecut();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONCUT)]
+    VARIANT_BOOL oncut();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)]
+    VARIANT_BOOL onbeforecopy();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONCOPY)]
+    VARIANT_BOOL oncopy();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)]
+    VARIANT_BOOL onbeforepaste();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONPASTE)]
+    VARIANT_BOOL onpaste();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)]
+    VARIANT_BOOL oncontextmenu();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)]
+    void onrowsdelete();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)]
+    void onrowsinserted();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)]
+    void oncellchange();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)]
+    void onreadystatechange();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)]
+    void onbeforeeditfocus();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)]
+    void onlayoutcomplete();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONPAGE)]
+    void onpage();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)]
+    VARIANT_BOOL onbeforedeactivate();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)]
+    VARIANT_BOOL onbeforeactivate();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOVE)]
+    void onmove();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)]
+    VARIANT_BOOL oncontrolselect();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOVESTART)]
+    VARIANT_BOOL onmovestart();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOVEEND)]
+    void onmoveend();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)]
+    VARIANT_BOOL onresizestart();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)]
+    void onresizeend();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)]
+    void onmouseenter();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)]
+    void onmouseleave();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)]
+    VARIANT_BOOL onmousewheel();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONACTIVATE)]
+    void onactivate();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)]
+    void ondeactivate();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)]
+    void onfocusin();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)]
+    void onfocusout();
+}
+
+/*****************************************************************************
+ *    IHTMLTableCaption interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f2eb-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLTableCaption : IDispatch
+{
+    [propput, id(DISPID_IHTMLTABLECAPTION_ALIGN)]
+    HRESULT align([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLTABLECAPTION_ALIGN)]
+    HRESULT align([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLTABLECAPTION_VALIGN)]
+    HRESULT vAlign([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLTABLECAPTION_VALIGN)]
+    HRESULT vAlign([retval, out] BSTR *p);
+}
+
+interface IHTMLTableSection;
+
+/*****************************************************************************
+ *    IHTMLTable interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f21e-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLTable : IDispatch
+{
+    [propput, id(DISPID_IHTMLTABLE_COLS)]
+    HRESULT cols([in] long v);
+
+    [propget, id(DISPID_IHTMLTABLE_COLS)]
+    HRESULT cols([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLTABLE_BORDER)]
+    HRESULT border([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLE_BORDER)]
+    HRESULT border([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLTABLE_FRAME)]
+    HRESULT frame([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLTABLE_FRAME)]
+    HRESULT frame([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLTABLE_RULES)]
+    HRESULT rules([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLTABLE_RULES)]
+    HRESULT rules([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLTABLE_CELLSPACING)]
+    HRESULT cellSpacing([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLE_CELLSPACING)]
+    HRESULT cellSpacing([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLTABLE_CELLPADDING)]
+    HRESULT cellPadding([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLE_CELLPADDING)]
+    HRESULT cellPadding([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLTABLE_BACKGROUND)]
+    HRESULT background([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLTABLE_BACKGROUND)]
+    HRESULT background([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLTABLE_BGCOLOR)]
+    HRESULT bgColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLE_BGCOLOR)]
+    HRESULT bgColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLTABLE_BORDERCOLOR)]
+    HRESULT borderColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLE_BORDERCOLOR)]
+    HRESULT borderColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLTABLE_BORDERCOLORLIGHT)]
+    HRESULT borderColorLight([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLE_BORDERCOLORLIGHT)]
+    HRESULT borderColorLight([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLTABLE_BORDERCOLORDARK)]
+    HRESULT borderColorDark([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLE_BORDERCOLORDARK)]
+    HRESULT borderColorDark([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLTABLE_ALIGN)]
+    HRESULT align([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLTABLE_ALIGN)]
+    HRESULT align([retval, out] BSTR * p);
+
+    [id(DISPID_IHTMLTABLE_REFRESH)]
+    HRESULT refresh();
+
+    [propget, id(DISPID_IHTMLTABLE_ROWS)]
+    HRESULT rows([retval, out] IHTMLElementCollection **p);
+
+    [propput, id(DISPID_IHTMLTABLE_WIDTH)]
+    HRESULT width([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLE_WIDTH)]
+    HRESULT width([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLTABLE_HEIGHT)]
+    HRESULT height([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLE_HEIGHT)]
+    HRESULT height([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLTABLE_DATAPAGESIZE)]
+    HRESULT dataPageSize([in] long v);
+
+    [propget, id(DISPID_IHTMLTABLE_DATAPAGESIZE)]
+    HRESULT dataPageSize([retval, out] long *p);
+
+    [id(DISPID_IHTMLTABLE_NEXTPAGE)]
+    HRESULT nextPage();
+
+    [id(DISPID_IHTMLTABLE_PREVIOUSPAGE)]
+    HRESULT previousPage();
+
+    [propget, id(DISPID_IHTMLTABLE_THEAD)]
+    HRESULT tHead([retval, out] IHTMLTableSection **p);
+
+    [propget, id(DISPID_IHTMLTABLE_TFOOT)]
+    HRESULT tFoot([retval, out] IHTMLTableSection **p);
+
+    [propget, id(DISPID_IHTMLTABLE_TBODIES)]
+    HRESULT tBodies([retval, out] IHTMLElementCollection **p);
+
+    [propget, id(DISPID_IHTMLTABLE_CAPTION)]
+    HRESULT caption([retval, out] IHTMLTableCaption **p);
+
+    [id(DISPID_IHTMLTABLE_CREATETHEAD)]
+    HRESULT createTHead([retval, out] IDispatch **head);
+
+    [id(DISPID_IHTMLTABLE_DELETETHEAD)]
+    HRESULT deleteTHead();
+
+    [id(DISPID_IHTMLTABLE_CREATETFOOT)]
+    HRESULT createTFoot([retval, out] IDispatch **foot);
+
+    [id(DISPID_IHTMLTABLE_DELETETFOOT)]
+    HRESULT deleteTFoot();
+
+    [id(DISPID_IHTMLTABLE_CREATECAPTION)]
+    HRESULT createCaption([retval, out] IHTMLTableCaption **caption);
+
+    [id(DISPID_IHTMLTABLE_DELETECAPTION)]
+    HRESULT deleteCaption();
+
+    [id(DISPID_IHTMLTABLE_INSERTROW)]
+    HRESULT insertRow(
+            [defaultvalue(-1), in] long index,
+            [retval, out] IDispatch **row);
+
+    [id(DISPID_IHTMLTABLE_DELETEROW)]
+    HRESULT deleteRow([defaultvalue(-1), in] long index);
+
+    [propget, id(DISPID_IHTMLTABLE_READYSTATE)]
+    HRESULT readyState([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLTABLE_ONREADYSTATECHANGE), displaybind, bindable]
+    HRESULT onreadystatechange([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLE_ONREADYSTATECHANGE), displaybind, bindable]
+    HRESULT onreadystatechange([retval, out] VARIANT *p);
+}
+
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f23b-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLTableSection : IDispatch
+{
+    [propput, id(DISPID_IHTMLTABLESECTION_ALIGN)]
+    HRESULT align([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLTABLESECTION_ALIGN)]
+    HRESULT align([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLTABLESECTION_VALIGN)]
+    HRESULT vAlign([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLTABLESECTION_VALIGN)]
+    HRESULT vAlign([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLTABLESECTION_BGCOLOR)]
+    HRESULT bgColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLESECTION_BGCOLOR)]
+    HRESULT bgColor([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLTABLESECTION_ROWS)]
+    HRESULT rows([retval, out] IHTMLElementCollection **p);
+
+    [id(DISPID_IHTMLTABLESECTION_INSERTROW)]
+    HRESULT insertRow(
+            [defaultvalue(-1), in] long index,
+            [retval, out] IDispatch **row);
+
+    [id(DISPID_IHTMLTABLESECTION_DELETEROW)]
+    HRESULT deleteRow([defaultvalue(-1), in] long index);
+}
+
+/*****************************************************************************
+ *    IHTMLTableRow interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f23c-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLTableRow : IDispatch
+{
+    [propput, id(DISPID_IHTMLTABLEROW_ALIGN)]
+    HRESULT align([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLTABLEROW_ALIGN)]
+    HRESULT align([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLTABLEROW_VALIGN)]
+    HRESULT vAlign([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLTABLEROW_VALIGN)]
+    HRESULT vAlign([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLTABLEROW_BGCOLOR)]
+    HRESULT bgColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLEROW_BGCOLOR)]
+    HRESULT bgColor([out, retval] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLTABLEROW_BORDERCOLOR)]
+    HRESULT borderColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLEROW_BORDERCOLOR)]
+    HRESULT borderColor([out, retval] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLTABLEROW_BORDERCOLORLIGHT)]
+    HRESULT borderColorLight([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLEROW_BORDERCOLORLIGHT)]
+    HRESULT borderColorLight([out, retval] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLTABLEROW_BORDERCOLORDARK)]
+    HRESULT borderColorDark([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLEROW_BORDERCOLORDARK)]
+    HRESULT borderColorDark([out, retval] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLTABLEROW_ROWINDEX)]
+    HRESULT rowIndex([out, retval] long *p);
+
+    [propget, id(DISPID_IHTMLTABLEROW_SECTIONROWINDEX)]
+    HRESULT sectionRowIndex([out, retval] long *p);
+
+    [propget, id(DISPID_IHTMLTABLEROW_CELLS)]
+    HRESULT cells([out, retval] IHTMLElementCollection **p);
+
+    [id(DISPID_IHTMLTABLEROW_INSERTCELL)]
+    HRESULT insertCell(
+            [in, defaultvalue(-1)] long index,
+            [out, retval] IDispatch **row);
+
+    [id(DISPID_IHTMLTABLEROW_DELETECELL)]
+    HRESULT deleteCell([in, defaultvalue(-1)] long index);
+}
+
+/*****************************************************************************
+ *    DispHTMLTable interface
+ */
+[
+    hidden,
+    uuid(3050f532-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLTable
+{
+properties:
+methods:
+    [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
+    void setAttribute(
+            [in] BSTR strAttributeName,
+            [in] VARIANT AttributeValue,
+            [in, defaultvalue(1)] LONG lFlags);
+
+    [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
+    VARIANT getAttribute(
+             [in] BSTR strAttributeName,
+             [in, defaultvalue(0)] LONG lFlags);
+
+    [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
+    VARIANT_BOOL removeAttribute(
+            [in] BSTR strAttributeName,
+            [in, defaultvalue(1)] LONG lFlags);
+
+    [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+    void className(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+    BSTR className();
+
+    [propput, id(DISPID_IHTMLELEMENT_ID), bindable]
+    void id(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ID), bindable]
+    BSTR id();
+
+    [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
+    BSTR tagName();
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
+    IHTMLElement *parentElement();
+
+    [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]
+    IHTMLStyle *style();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+    void onhelp(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+    VARIANT onhelp();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+    void onclick(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+    VARIANT onclick();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+    void ondblclick(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+    VARIANT ondblclick();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+    void onkeydown(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+    VARIANT onkeydown();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+    void onkeyup(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+    VARIANT onkeyup();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+    void onkeypress(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+    VARIANT onkeypress();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+    void onmouseout(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+    VARIANT onmouseout();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+    void onmouseover(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+    VARIANT onmouseover();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+    void onmousemove(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+    VARIANT onmousemove();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+    void onmousedown(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+    VARIANT onmousedown();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+    void onmouseup(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+    VARIANT onmouseup();
+
+    [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
+    IDispatch *document();
+
+    [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+    void title(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+    BSTR title();
+
+    [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+    void language(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+    BSTR language();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+    void onselectstart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+    VARIANT onselectstart();
+
+    [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
+    void scrollIntoView([in, optional] VARIANT varargStart);
+
+    [id(DISPID_IHTMLELEMENT_CONTAINS)]
+    VARIANT_BOOL contains([in] IHTMLElement *pChild);
+
+    [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]
+    long sourceIndex();
+
+    [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
+    VARIANT recordNumber();
+
+    [propput, id(DISPID_IHTMLELEMENT_LANG)]
+    void lang(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANG)]
+    BSTR lang();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
+    long offsetLeft();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
+    long offsetTop();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
+    long offsetWidth();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
+    long offsetHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
+    IHTMLElement *offsetParent();
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    void innerHTML(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    BSTR innerHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    void innerText(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    BSTR innerText();
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    void outerHTML(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    BSTR outerHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    void outerText(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    BSTR outerText();
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
+    void insertAdjacentHTML(
+            [in] BSTR where,
+            [in] BSTR html);
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
+    void insertAdjacentText(
+            [in] BSTR where,
+            [in] BSTR text);
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
+    IHTMLElement *parentTextEdit();
+
+    [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
+    VARIANT_BOOL isTextEdit();
+
+    [id(DISPID_IHTMLELEMENT_CLICK)]
+    void click();
+
+    [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
+    IHTMLFiltersCollection *filters();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+    void ondragstart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+    VARIANT ondragstart();
+
+    [id(DISPID_IHTMLELEMENT_TOSTRING)]
+    BSTR toString();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+    void onbeforeupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+    VARIANT onbeforeupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+    void onafterupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+    VARIANT onafterupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+    void onerrorupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+    VARIANT onerrorupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+    void onrowexit(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+    VARIANT onrowexit();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+    void onrowenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+    VARIANT onrowenter();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+    void ondatasetchanged(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+    VARIANT ondatasetchanged();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+    void ondataavailable(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+    VARIANT ondataavailable();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+    void ondatasetcomplete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+    VARIANT ondatasetcomplete();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+    void onfilterchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+    VARIANT onfilterchange();
+
+    [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
+    IDispatch *children();
+
+    [propget, id(DISPID_IHTMLELEMENT_ALL)]
+    IDispatch *all();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
+    BSTR scopeName();
+
+    [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
+    void setCapture([in, defaultvalue(-1)] VARIANT_BOOL containerCapture);
+
+    [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
+    void releaseCapture();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    void onlosecapture(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    VARIANT onlosecapture();
+
+    [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
+    BSTR componentFromPoint(
+            [in] long x,
+            [in] long y);
+
+    [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
+    void doScroll([in, optional] VARIANT component);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    void onscroll(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    VARIANT onscroll();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    void ondrag(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    VARIANT ondrag();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    void ondragend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    VARIANT ondragend();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    void ondragenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    VARIANT ondragenter();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    void ondragover(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    VARIANT ondragover();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    void ondragleave(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    VARIANT ondragleave();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+    void ondrop(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+    VARIANT ondrop();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    void onbeforecut(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    VARIANT onbeforecut();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    void oncut(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    VARIANT oncut();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    void onbeforecopy(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    VARIANT onbeforecopy();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    void oncopy(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    VARIANT oncopy();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+    void onbeforepaste(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+    VARIANT onbeforepaste();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    void onpaste(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    VARIANT onpaste();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
+    IHTMLCurrentStyle *currentStyle();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    void onpropertychange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    VARIANT onpropertychange();
+
+    [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
+    IHTMLRectCollection *getClientRects();
+
+    [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
+    IHTMLRect *getBoundingClientRect();
+
+    [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
+    void setExpression(
+            [in] BSTR propname,
+            [in] BSTR expression,
+            [in, defaultvalue("")] BSTR language);
+
+    [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
+    VARIANT getExpression([in] BSTR propname);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
+    VARIANT_BOOL removeExpression([in] BSTR propname);
+
+    [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    void tabIndex(short v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    short tabIndex();
+
+    [id(DISPID_IHTMLELEMENT2_FOCUS)]
+    void focus();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    void accessKey(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    BSTR accessKey();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+    void onblur(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+    VARIANT onblur();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    void onfocus(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    VARIANT onfocus();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    void onresize(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    VARIANT onresize();
+
+    [id(DISPID_IHTMLELEMENT2_BLUR)]
+    void blur();
+
+    [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
+    void addFilter([in] IUnknown *pUnk);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
+    void removeFilter([in] IUnknown *pUnk);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
+    long clientHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
+    long clientWidth();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
+    long clientTop();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
+    long clientLeft();
+
+    [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
+    VARIANT_BOOL attachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp);
+
+    [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
+    void detachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp);
+
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
+    VARIANT readyState();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    void onreadystatechange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    VARIANT onreadystatechange();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    void onrowsdelete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    VARIANT onrowsdelete();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+    void onrowsinserted(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+    VARIANT onrowsinserted();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+     void oncellchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+    VARIANT oncellchange();
+
+    [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    void dir(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    BSTR dir();
+
+    [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
+    IDispatch *createControlRange();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
+    long scrollHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
+    long scrollWidth();
+
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    void scrollTop(long v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    long scrollTop();
+
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    void scrollLeft(long v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    long scrollLeft();
+
+    [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
+    void clearAttributes();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    void oncontextmenu(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    VARIANT oncontextmenu();
+
+    [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
+    IHTMLElement *insertAdjacentElement(
+            [in] BSTR where,
+            [in] IHTMLElement *insertedElement);
+
+    [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
+    IHTMLElement *applyElement(
+            [in] IHTMLElement *apply,
+            [in] BSTR where);
+
+    [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
+    BSTR getAdjacentText([in] BSTR where);
+
+    [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
+    BSTR replaceAdjacentText(
+            [in] BSTR where,
+            [in] BSTR newText);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
+    VARIANT_BOOL canHaveChildren();
+
+    [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
+    long addBehavior(
+            [in] BSTR bstrUrl,
+            [in, optional] VARIANT *pvarFactory);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
+    VARIANT_BOOL removeBehavior([in] long cookie);
+
+    [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
+    IHTMLStyle *runtimeStyle();
+
+    [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
+    IDispatch *behaviorUrns();
+
+    [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    void tagUrn(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    BSTR tagUrn();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    void onbeforeeditfocus(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    VARIANT onbeforeeditfocus();
+
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
+    long readyStateValue();
+
+    [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
+    IHTMLElementCollection *getElementsByTagName([in] BSTR v);
+
+    [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]
+    void mergeAttributes(
+            [in] IHTMLElement *mergeThis,
+            [in, optional] VARIANT *pvarFlags);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
+    VARIANT_BOOL isMultiLine();
+
+    [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
+    VARIANT_BOOL canHaveHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    void onlayoutcomplete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    VARIANT onlayoutcomplete();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    void onpage(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    VARIANT onpage();
+
+    [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    void inflateBlock(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    VARIANT_BOOL inflateBlock();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    void onbeforedeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    VARIANT onbeforedeactivate();
+
+    [id(DISPID_IHTMLELEMENT3_SETACTIVE)]
+    void setActive();
+
+    [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    void contentEditable(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    BSTR contentEditable();
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
+    VARIANT_BOOL isContentEditable();
+
+    [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    void hideFocus(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    VARIANT_BOOL hideFocus();
+
+    [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    void disabled(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    VARIANT_BOOL disabled();
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
+    VARIANT_BOOL isDisabled();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    void onmove(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    VARIANT onmove();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    void oncontrolselect(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    VARIANT oncontrolselect();
+
+    [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
+    VARIANT_BOOL fireEvent(
+            [in] BSTR bstrEventName,
+            [in, optional] VARIANT *pvarEventObject);
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+    void onresizestart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+    VARIANT onresizestart();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    void onresizeend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    VARIANT onresizeend();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    void onmovestart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    VARIANT onmovestart();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    void onmoveend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    VARIANT onmoveend();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    void onmouseenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    VARIANT onmouseenter();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    void onmouseleave(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    VARIANT onmouseleave();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+    void onactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+    VARIANT onactivate();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    void ondeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    VARIANT ondeactivate();
+
+    [id(DISPID_IHTMLELEMENT3_DRAGDROP)]
+    VARIANT_BOOL dragDrop();
+
+    [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
+    LONG glyphMode();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    void onmousewheel(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    VARIANT onmousewheel();
+
+    [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
+    void normalize();
+
+    [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
+    IHTMLDOMAttribute *getAttributeNode([in] BSTR bstrname);
+
+    [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
+    IHTMLDOMAttribute *setAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+    [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
+    IHTMLDOMAttribute *removeAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    void onbeforeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    VARIANT onbeforeactivate();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    void onfocusin(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    VARIANT onfocusin();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    void onfocusout(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    VARIANT onfocusout();
+
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
+    long uniqueNumber();
+
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
+    BSTR uniqueID();
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
+    long nodeType();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
+    IHTMLDOMNode *parentNode();
+
+    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
+    VARIANT_BOOL hasChildNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
+    IDispatch *childNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
+    IDispatch *attributes();
+
+    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
+    IHTMLDOMNode *insertBefore(
+            [in] IHTMLDOMNode *newChild,
+            [in, optional] VARIANT refChild);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
+    IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
+    IHTMLDOMNode *replaceChild(
+            [in] IHTMLDOMNode *newChild,
+            [in] IHTMLDOMNode *oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_CLONENODE)]
+    IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
+    IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
+    IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
+    IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
+
+    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
+    IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
+    BSTR nodeName();
+
+    [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    void nodeValue(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    VARIANT nodeValue();
+
+    [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
+    IHTMLDOMNode *firstChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
+    IHTMLDOMNode *lastChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
+    IHTMLDOMNode *previousSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
+    IHTMLDOMNode *nextSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
+    IDispatch *ownerDocument();
+
+    [propput, id(DISPID_IHTMLDATABINDING_DATAFLD)]
+    void dataFld(BSTR v);
+
+    [propget, id(DISPID_IHTMLDATABINDING_DATAFLD)]
+    BSTR dataFld();
+
+    [propput, id(DISPID_IHTMLDATABINDING_DATASRC)]
+    void dataSrc(BSTR v);
+
+    [propget, id(DISPID_IHTMLDATABINDING_DATASRC)]
+    BSTR dataSrc();
+
+    [propput, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
+    void dataFormatAs(BSTR v);
+
+    [propget, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
+    BSTR dataFormatAs();
+
+    [propput, id(DISPID_IHTMLTABLE_COLS)]
+    void cols(long v);
+
+    [propget, id(DISPID_IHTMLTABLE_COLS)]
+    long cols();
+
+    [propput, id(DISPID_IHTMLTABLE_BORDER)]
+    void border(VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLE_BORDER)]
+    VARIANT border();
+
+    [propput, id(DISPID_IHTMLTABLE_FRAME)]
+    void frame(BSTR v);
+
+    [propget, id(DISPID_IHTMLTABLE_FRAME)]
+    BSTR frame();
+
+    [propput, id(DISPID_IHTMLTABLE_RULES)]
+    void rules(BSTR v);
+
+    [propget, id(DISPID_IHTMLTABLE_RULES)]
+    BSTR rules();
+
+    [propput, id(DISPID_IHTMLTABLE_CELLSPACING)]
+    void cellSpacing(VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLE_CELLSPACING)]
+    VARIANT cellSpacing();
+
+    [propput, id(DISPID_IHTMLTABLE_CELLPADDING)]
+    void cellPadding(VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLE_CELLPADDING)]
+    VARIANT cellPadding();
+
+    [propput, id(DISPID_IHTMLTABLE_BACKGROUND)]
+    void background(BSTR v);
+
+    [propget, id(DISPID_IHTMLTABLE_BACKGROUND)]
+    BSTR background();
+
+    [propput, id(DISPID_IHTMLTABLE_BGCOLOR)]
+    void bgColor(VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLE_BGCOLOR)]
+    VARIANT bgColor();
+
+    [propput, id(DISPID_IHTMLTABLE_BORDERCOLOR)]
+    void borderColor(VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLE_BORDERCOLOR)]
+    VARIANT borderColor();
+
+    [propput, id(DISPID_IHTMLTABLE_BORDERCOLORLIGHT)]
+    void borderColorLight(VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLE_BORDERCOLORLIGHT)]
+    VARIANT borderColorLight();
+
+    [propput, id(DISPID_IHTMLTABLE_BORDERCOLORDARK)]
+    void borderColorDark(VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLE_BORDERCOLORDARK)]
+    VARIANT borderColorDark();
+
+    [propput, id(DISPID_IHTMLTABLE_ALIGN)]
+    void align(BSTR v);
+
+    [propget, id(DISPID_IHTMLTABLE_ALIGN)]
+    BSTR align();
+
+    [id(DISPID_IHTMLTABLE_REFRESH)]
+    void refresh();
+
+    [propget, id(DISPID_IHTMLTABLE_ROWS)]
+    IHTMLElementCollection *rows();
+
+    [propput, id(DISPID_IHTMLTABLE_WIDTH)]
+    void width(VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLE_WIDTH)]
+    VARIANT width();
+
+    [propput, id(DISPID_IHTMLTABLE_HEIGHT)]
+    void height(VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLE_HEIGHT)]
+    VARIANT height();
+
+    [propput, id(DISPID_IHTMLTABLE_DATAPAGESIZE)]
+    void dataPageSize(long v);
+
+    [propget, id(DISPID_IHTMLTABLE_DATAPAGESIZE)]
+    long dataPageSize();
+
+    [id(DISPID_IHTMLTABLE_NEXTPAGE)]
+    void nextPage();
+
+    [id(DISPID_IHTMLTABLE_PREVIOUSPAGE)]
+    void previousPage();
+
+    [propget, id(DISPID_IHTMLTABLE_THEAD)]
+    IHTMLTableSection *tHead();
+
+    [propget, id(DISPID_IHTMLTABLE_TFOOT)]
+    IHTMLTableSection *tFoot();
+
+    [propget, id(DISPID_IHTMLTABLE_TBODIES)]
+    IHTMLElementCollection *tBodies();
+
+    [propget, id(DISPID_IHTMLTABLE_CAPTION)]
+    IHTMLTableCaption *caption();
+
+    [id(DISPID_IHTMLTABLE_CREATETHEAD)]
+    IDispatch *createTHead();
+
+    [id(DISPID_IHTMLTABLE_DELETETHEAD)]
+    void deleteTHead();
+
+    [id(DISPID_IHTMLTABLE_CREATETFOOT)]
+    IDispatch *createTFoot();
+
+    [id(DISPID_IHTMLTABLE_DELETETFOOT)]
+    void deleteTFoot();
+
+    [id(DISPID_IHTMLTABLE_CREATECAPTION)]
+    IHTMLTableCaption *createCaption();
+
+    [id(DISPID_IHTMLTABLE_DELETECAPTION)]
+    void deleteCaption();
+
+    [id(DISPID_IHTMLTABLE_INSERTROW)]
+    IDispatch *insertRow([in, defaultvalue(-1)] long index);
+
+    [id(DISPID_IHTMLTABLE_DELETEROW)]
+    void deleteRow([in, defaultvalue(-1)] long index);
+
+    [id(DISPID_IHTMLTABLE2_FIRSTPAGE)]
+    void firstPage();
+
+    [id(DISPID_IHTMLTABLE2_LASTPAGE)]
+    void lastPage();
+
+    [propget, id(DISPID_IHTMLTABLE2_CELLS)]
+    IHTMLElementCollection *cells();
+
+    [id(DISPID_IHTMLTABLE2_MOVEROW)]
+    IDispatch *moveRow(
+            [in, defaultvalue(-1)] long indexFrom,
+            [in, defaultvalue(-1)] long indexTo);
+
+    [propput, id(DISPID_IHTMLTABLE3_SUMMARY), displaybind, bindable]
+    void summary(BSTR v);
+
+    [propget, id(DISPID_IHTMLTABLE3_SUMMARY), displaybind, bindable]
+    BSTR summary();
+}
+
+/*****************************************************************************
+ *    DispHTMLTableRow dispinterface
+ */
+[
+    hidden,
+    uuid(3050f535-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLTableRow
+{
+properties:
+methods:
+    [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
+    void setAttribute(
+            [in] BSTR strAttributeName,
+            [in] VARIANT AttributeValue,
+            [in, defaultvalue(1)] LONG lFlags);
+
+    [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
+    VARIANT getAttribute(
+             [in] BSTR strAttributeName,
+             [in, defaultvalue(0)] LONG lFlags);
+
+    [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
+    VARIANT_BOOL removeAttribute(
+            [in] BSTR strAttributeName,
+            [in, defaultvalue(1)] LONG lFlags);
+
+    [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+    void className(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+    BSTR className();
+
+    [propput, id(DISPID_IHTMLELEMENT_ID), bindable]
+    void id(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ID), bindable]
+    BSTR id();
+
+    [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
+    BSTR tagName();
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
+    IHTMLElement *parentElement();
+
+    [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]
+    IHTMLStyle *style();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+    void onhelp(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+    VARIANT onhelp();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+    void onclick(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+    VARIANT onclick();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+    void ondblclick(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+    VARIANT ondblclick();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+    void onkeydown(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+    VARIANT onkeydown();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+    void onkeyup(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+    VARIANT onkeyup();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+    void onkeypress(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+    VARIANT onkeypress();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+    void onmouseout(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+    VARIANT onmouseout();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+    void onmouseover(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+    VARIANT onmouseover();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+    void onmousemove(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+    VARIANT onmousemove();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+    void onmousedown(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+    VARIANT onmousedown();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+    void onmouseup(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+    VARIANT onmouseup();
+
+    [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
+    IDispatch *document();
+
+    [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+    void title(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+    BSTR title();
+
+    [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+    void language(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+    BSTR language();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+    void onselectstart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+    VARIANT onselectstart();
+
+    [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
+    void scrollIntoView([in, optional] VARIANT varargStart);
+
+    [id(DISPID_IHTMLELEMENT_CONTAINS)]
+    VARIANT_BOOL contains([in] IHTMLElement *pChild);
+
+    [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]
+    long sourceIndex();
+
+    [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
+    VARIANT recordNumber();
+
+    [propput, id(DISPID_IHTMLELEMENT_LANG)]
+    void lang(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANG)]
+    BSTR lang();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
+    long offsetLeft();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
+    long offsetTop();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
+    long offsetWidth();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
+    long offsetHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
+    IHTMLElement *offsetParent();
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    void innerHTML(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    BSTR innerHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    void innerText(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    BSTR innerText();
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    void outerHTML(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    BSTR outerHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    void outerText(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    BSTR outerText();
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
+    void insertAdjacentHTML(
+            [in] BSTR where,
+            [in] BSTR html);
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
+    void insertAdjacentText(
+            [in] BSTR where,
+            [in] BSTR text);
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
+    IHTMLElement *parentTextEdit();
+
+    [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
+    VARIANT_BOOL isTextEdit();
+
+    [id(DISPID_IHTMLELEMENT_CLICK)]
+    void click();
+
+    [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
+    IHTMLFiltersCollection *filters();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+    void ondragstart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+    VARIANT ondragstart();
+
+    [id(DISPID_IHTMLELEMENT_TOSTRING)]
+    BSTR toString();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+    void onbeforeupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+    VARIANT onbeforeupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+    void onafterupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+    VARIANT onafterupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+    void onerrorupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+    VARIANT onerrorupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+    void onrowexit(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+    VARIANT onrowexit();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+    void onrowenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+    VARIANT onrowenter();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+    void ondatasetchanged(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+    VARIANT ondatasetchanged();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+    void ondataavailable(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+    VARIANT ondataavailable();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+    void ondatasetcomplete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+    VARIANT ondatasetcomplete();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+    void onfilterchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+    VARIANT onfilterchange();
+
+    [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
+    IDispatch *children();
+
+    [propget, id(DISPID_IHTMLELEMENT_ALL)]
+    IDispatch *all();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
+    BSTR scopeName();
+
+    [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
+    void setCapture([in, defaultvalue(-1)] VARIANT_BOOL containerCapture);
+
+    [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
+    void releaseCapture();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    void onlosecapture(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    VARIANT onlosecapture();
+
+    [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
+    BSTR componentFromPoint(
+            [in] long x,
+            [in] long y);
+
+    [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
+    void doScroll([in, optional] VARIANT component);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    void onscroll(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    VARIANT onscroll();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    void ondrag(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    VARIANT ondrag();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    void ondragend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    VARIANT ondragend();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    void ondragenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    VARIANT ondragenter();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    void ondragover(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    VARIANT ondragover();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    void ondragleave(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    VARIANT ondragleave();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+    void ondrop(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+    VARIANT ondrop();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    void onbeforecut(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    VARIANT onbeforecut();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    void oncut(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    VARIANT oncut();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    void onbeforecopy(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    VARIANT onbeforecopy();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    void oncopy(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    VARIANT oncopy();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+    void onbeforepaste(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+    VARIANT onbeforepaste();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    void onpaste(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    VARIANT onpaste();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
+    IHTMLCurrentStyle *currentStyle();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    void onpropertychange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    VARIANT onpropertychange();
+
+    [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
+    IHTMLRectCollection *getClientRects();
+
+    [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
+    IHTMLRect *getBoundingClientRect();
+
+    [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
+    void setExpression(
+            [in] BSTR propname,
+            [in] BSTR expression,
+            [in, defaultvalue("")] BSTR language);
+
+    [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
+    VARIANT getExpression([in] BSTR propname);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
+    VARIANT_BOOL removeExpression([in] BSTR propname);
+
+    [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    void tabIndex(short v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    short tabIndex();
+
+    [id(DISPID_IHTMLELEMENT2_FOCUS)]
+    void focus();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    void accessKey(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    BSTR accessKey();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+    void onblur(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+    VARIANT onblur();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    void onfocus(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    VARIANT onfocus();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    void onresize(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    VARIANT onresize();
+
+    [id(DISPID_IHTMLELEMENT2_BLUR)]
+    void blur();
+
+    [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
+    void addFilter([in] IUnknown *pUnk);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
+    void removeFilter([in] IUnknown *pUnk);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
+    long clientHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
+    long clientWidth();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
+    long clientTop();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
+    long clientLeft();
+
+    [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
+    VARIANT_BOOL attachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp);
+
+    [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
+    void detachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp);
+
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
+    VARIANT readyState();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    void onreadystatechange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    VARIANT onreadystatechange();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    void onrowsdelete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    VARIANT onrowsdelete();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+    void onrowsinserted(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+     VARIANT onrowsinserted();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+     void oncellchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+    VARIANT oncellchange();
+
+    [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    void dir(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    BSTR dir();
+
+    [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
+    IDispatch *createControlRange();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
+    long scrollHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
+    long scrollWidth();
+
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    void scrollTop(long v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    long scrollTop();
+
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    void scrollLeft(long v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    long scrollLeft();
+
+    [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
+    void clearAttributes();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    void oncontextmenu(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    VARIANT oncontextmenu();
+
+    [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
+    IHTMLElement *insertAdjacentElement(
+            [in] BSTR where,
+            [in] IHTMLElement *insertedElement);
+
+    [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
+    IHTMLElement *applyElement(
+            [in] IHTMLElement *apply,
+            [in] BSTR where);
+
+    [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
+    BSTR getAdjacentText([in] BSTR where);
+
+    [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
+    BSTR replaceAdjacentText(
+            [in] BSTR where,
+            [in] BSTR newText);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
+    VARIANT_BOOL canHaveChildren();
+
+    [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
+    long addBehavior(
+            [in] BSTR bstrUrl,
+            [in, optional] VARIANT *pvarFactory);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
+    VARIANT_BOOL removeBehavior([in] long cookie);
+
+    [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
+    IHTMLStyle *runtimeStyle();
+
+    [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
+    IDispatch *behaviorUrns();
+
+    [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    void tagUrn(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    BSTR tagUrn();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    void onbeforeeditfocus(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    VARIANT onbeforeeditfocus();
+
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
+    long readyStateValue();
+
+    [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
+    IHTMLElementCollection *getElementsByTagName([in] BSTR v);
+
+    [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]
+    void mergeAttributes(
+            [in] IHTMLElement *mergeThis,
+            [in, optional] VARIANT *pvarFlags);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
+    VARIANT_BOOL isMultiLine();
+
+    [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
+    VARIANT_BOOL canHaveHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    void onlayoutcomplete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    VARIANT onlayoutcomplete();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    void onpage(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    VARIANT onpage();
+
+    [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    void inflateBlock(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    VARIANT_BOOL inflateBlock();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    void onbeforedeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    VARIANT onbeforedeactivate();
+
+    [id(DISPID_IHTMLELEMENT3_SETACTIVE)]
+    void setActive();
+
+    [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    void contentEditable(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    BSTR contentEditable();
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
+    VARIANT_BOOL isContentEditable();
+
+    [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    void hideFocus(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    VARIANT_BOOL hideFocus();
+
+    [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    void disabled(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    VARIANT_BOOL disabled();
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
+    VARIANT_BOOL isDisabled();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    void onmove(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    VARIANT onmove();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    void oncontrolselect(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    VARIANT oncontrolselect();
+
+    [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
+    VARIANT_BOOL fireEvent(
+            [in] BSTR bstrEventName,
+            [in, optional] VARIANT *pvarEventObject);
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+    void onresizestart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+    VARIANT onresizestart();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    void onresizeend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    VARIANT onresizeend();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    void onmovestart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    VARIANT onmovestart();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    void onmoveend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    VARIANT onmoveend();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    void onmouseenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    VARIANT onmouseenter();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    void onmouseleave(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    VARIANT onmouseleave();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+    void onactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+    VARIANT onactivate();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    void ondeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    VARIANT ondeactivate();
+
+    [id(DISPID_IHTMLELEMENT3_DRAGDROP)]
+    VARIANT_BOOL dragDrop();
+
+    [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
+    LONG glyphMode();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    void onmousewheel(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    VARIANT onmousewheel();
+
+    [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
+    void normalize();
+
+    [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
+    IHTMLDOMAttribute *getAttributeNode([in] BSTR bstrname);
+
+    [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
+    IHTMLDOMAttribute *setAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+    [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
+    IHTMLDOMAttribute *removeAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    void onbeforeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    VARIANT onbeforeactivate();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    void onfocusin(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    VARIANT onfocusin();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    void onfocusout(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    VARIANT onfocusout();
+
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
+    long uniqueNumber();
+
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
+    BSTR uniqueID();
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
+    long nodeType();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
+    IHTMLDOMNode *parentNode();
+
+    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
+    VARIANT_BOOL hasChildNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
+    IDispatch *childNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
+    IDispatch *attributes();
+
+    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
+    IHTMLDOMNode *insertBefore(
+            [in] IHTMLDOMNode *newChild,
+            [in, optional] VARIANT refChild);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
+    IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
+    IHTMLDOMNode *replaceChild(
+            [in] IHTMLDOMNode *newChild,
+            [in] IHTMLDOMNode *oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_CLONENODE)]
+    IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
+    IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
+    IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
+    IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
+
+    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
+    IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
+    BSTR nodeName();
+
+    [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    void nodeValue(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    VARIANT nodeValue();
+
+    [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
+    IHTMLDOMNode *firstChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
+    IHTMLDOMNode *lastChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
+    IHTMLDOMNode *previousSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
+    IHTMLDOMNode *nextSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
+    IDispatch *ownerDocument();
+
+    [propput, id(DISPID_IHTMLTABLEROW_ALIGN)]
+    void align(BSTR v);
+
+    [propget, id(DISPID_IHTMLTABLEROW_ALIGN)]
+    BSTR align();
+
+    [propput, id(DISPID_IHTMLTABLEROW_VALIGN)]
+    void vAlign(BSTR v);
+
+    [propget, id(DISPID_IHTMLTABLEROW_VALIGN)]
+    BSTR vAlign();
+
+    [propput, id(DISPID_IHTMLTABLEROW_BGCOLOR)]
+    void bgColor(VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLEROW_BGCOLOR)]
+    VARIANT bgColor();
+
+    [propput, id(DISPID_IHTMLTABLEROW_BORDERCOLOR)]
+    void borderColor(VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLEROW_BORDERCOLOR)]
+    VARIANT borderColor();
+
+    [propput, id(DISPID_IHTMLTABLEROW_BORDERCOLORLIGHT)]
+    void borderColorLight(VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLEROW_BORDERCOLORLIGHT)]
+    VARIANT borderColorLight();
+
+    [propput, id(DISPID_IHTMLTABLEROW_BORDERCOLORDARK)]
+    void borderColorDark(VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLEROW_BORDERCOLORDARK)]
+    VARIANT borderColorDark();
+
+    [propget, id(DISPID_IHTMLTABLEROW_ROWINDEX)]
+    long rowIndex();
+
+    [propget, id(DISPID_IHTMLTABLEROW_SECTIONROWINDEX)]
+    long sectionRowIndex();
+
+    [propget, id(DISPID_IHTMLTABLEROW_CELLS)]
+    IHTMLElementCollection *cells();
+
+    [id(DISPID_IHTMLTABLEROW_INSERTCELL)]
+    IDispatch *insertCell([in, defaultvalue(-1)] long index);
+
+    [id(DISPID_IHTMLTABLEROW_DELETECELL)]
+    void deleteCell([in, defaultvalue(-1)] long index);
+
+    [propput, id(DISPID_IHTMLTABLEROW2_HEIGHT)]
+    void height(VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLEROW2_HEIGHT)]
+    VARIANT height();
+
+    [propput, id(DISPID_IHTMLTABLEROW3_CH), displaybind, bindable]
+    void ch(BSTR v);
+
+    [propget, id(DISPID_IHTMLTABLEROW3_CH), displaybind, bindable]
+    BSTR ch();
+
+    [propput, id(DISPID_IHTMLTABLEROW3_CHOFF), displaybind, bindable]
+    void chOff(BSTR v);
+
+    [propget, id(DISPID_IHTMLTABLEROW3_CHOFF), displaybind, bindable]
+    BSTR chOff();
+}
+
+/*****************************************************************************
+ *    IHTMLScriptElement interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f28b-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLScriptElement : IDispatch
+{
+    [propput, id(DISPID_IHTMLSCRIPTELEMENT_SRC), displaybind, bindable]
+    HRESULT src([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSCRIPTELEMENT_SRC), displaybind, bindable]
+    HRESULT src([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSCRIPTELEMENT_HTMLFOR), displaybind, bindable]
+    HRESULT htmlFor([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSCRIPTELEMENT_HTMLFOR), displaybind, bindable]
+    HRESULT htmlFor([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSCRIPTELEMENT_EVENT), displaybind, bindable]
+    HRESULT event([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSCRIPTELEMENT_EVENT), displaybind, bindable]
+    HRESULT event([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSCRIPTELEMENT_TEXT), displaybind, bindable]
+    HRESULT text([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSCRIPTELEMENT_TEXT), displaybind, bindable]
+    HRESULT text([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSCRIPTELEMENT_DEFER), displaybind, bindable]
+    HRESULT defer([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLSCRIPTELEMENT_DEFER), displaybind, bindable]
+    HRESULT defer([retval, out] VARIANT_BOOL *p);
+
+    [propget, id(DISPID_IHTMLSCRIPTELEMENT_READYSTATE)]
+    HRESULT readyState([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSCRIPTELEMENT_ONERROR), displaybind, bindable]
+    HRESULT onerror([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSCRIPTELEMENT_ONERROR), displaybind, bindable]
+    HRESULT onerror([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSCRIPTELEMENT_TYPE), displaybind, bindable]
+    HRESULT type([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSCRIPTELEMENT_TYPE), displaybind, bindable]
+    HRESULT type([retval, out] BSTR *p);
+}
+
+/*****************************************************************************
+ *    IHTMLScriptElement2 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f828-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLScriptElement2 : IDispatch
+{
+    [propput, id(DISPID_IHTMLSCRIPTELEMENT2_CHARSET), displaybind, bindable]
+    HRESULT charset([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSCRIPTELEMENT2_CHARSET), displaybind, bindable]
+    HRESULT charset([retval, out] BSTR *p);
+}
+
+/*****************************************************************************
+ *    IHTMLFrameBase interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f311-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLFrameBase : IDispatch
+{
+    [propput, id(DISPID_IHTMLFRAMEBASE_SRC)]
+    HRESULT src([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE_SRC)]
+    HRESULT src([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLFRAMEBASE_NAME)]
+    HRESULT name([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE_NAME)]
+    HRESULT name([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLFRAMEBASE_BORDER)]
+    HRESULT border([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE_BORDER)]
+    HRESULT border([out, retval] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLFRAMEBASE_FRAMEBORDER)]
+    HRESULT frameBorder([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE_FRAMEBORDER)]
+    HRESULT frameBorder([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLFRAMEBASE_FRAMESPACING)]
+    HRESULT frameSpacing([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE_FRAMESPACING)]
+    HRESULT frameSpacing([out, retval] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLFRAMEBASE_MARGINWIDTH)]
+    HRESULT marginWidth([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE_MARGINWIDTH)]
+    HRESULT marginWidth([out, retval] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)]
+    HRESULT marginHeight([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)]
+    HRESULT marginHeight([out, retval] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLFRAMEBASE_NORESIZE)]
+    HRESULT noResize([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE_NORESIZE)]
+    HRESULT noResize([out, retval] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLFRAMEBASE_SCROLLING)]
+    HRESULT scrolling([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE_SCROLLING)]
+    HRESULT scrolling([out, retval] BSTR *p);
+}
+
+/*****************************************************************************
+ *    IHTMLFrameBase2 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f6db-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLFrameBase2 : IDispatch
+{
+    [propget, id(DISPID_IHTMLFRAMEBASE2_CONTENTWINDOW)]
+    HRESULT contentWindow([retval, out] IHTMLWindow2 **p);
+
+    [propput, id(DISPID_IHTMLFRAMEBASE2_ONLOAD), displaybind, bindable]
+    HRESULT onload([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE2_ONLOAD), displaybind, bindable]
+    HRESULT onload([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLFRAMEBASE2_ONREADYSTATECHANGE), displaybind, bindable]
+    HRESULT onreadystatechange([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE2_ONREADYSTATECHANGE), displaybind, bindable]
+    HRESULT onreadystatechange([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE2_READYSTATE)]
+    HRESULT readyState([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)]
+    HRESULT allowTransparency([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)]
+    HRESULT allowTransparency([retval, out] VARIANT_BOOL *p);
+}
+
+/*****************************************************************************
+ *    DispHTMLIFrame dispinterface
+ */
+[
+    hidden,
+    uuid(3050f51b-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLIFrame
+{
+properties:
+methods:
+    [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
+    void setAttribute(
+            [in] BSTR strAttributeName,
+            [in] VARIANT AttributeValue,
+            [in, defaultvalue(1)] LONG lFlags);
+
+    [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
+    VARIANT getAttribute(
+             [in] BSTR strAttributeName,
+             [in, defaultvalue(0)] LONG lFlags);
+
+    [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
+    VARIANT_BOOL removeAttribute(
+            [in] BSTR strAttributeName,
+            [in, defaultvalue(1)] LONG lFlags);
+
+    [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+    void className(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+    BSTR className();
+
+    [propput, id(DISPID_IHTMLELEMENT_ID), bindable]
+    void id(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ID), bindable]
+    BSTR id();
+
+    [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
+    BSTR tagName();
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
+    IHTMLElement *parentElement();
+
+    [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]
+    IHTMLStyle *style();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+    void onhelp(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+    VARIANT onhelp();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+    void onclick(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+    VARIANT onclick();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+    void ondblclick(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+    VARIANT ondblclick();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+    void onkeydown(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+    VARIANT onkeydown();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+    void onkeyup(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+    VARIANT onkeyup();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+    void onkeypress(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+    VARIANT onkeypress();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+    void onmouseout(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+    VARIANT onmouseout();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+    void onmouseover(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+    VARIANT onmouseover();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+    void onmousemove(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+    VARIANT onmousemove();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+    void onmousedown(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+    VARIANT onmousedown();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+    void onmouseup(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+    VARIANT onmouseup();
+
+    [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
+    IDispatch *document();
+
+    [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+    void title(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+    BSTR title();
+
+    [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+    void language(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+    BSTR language();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+    void onselectstart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+    VARIANT onselectstart();
+
+    [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
+    void scrollIntoView([in, optional] VARIANT varargStart);
+
+    [id(DISPID_IHTMLELEMENT_CONTAINS)]
+    VARIANT_BOOL contains([in] IHTMLElement *pChild);
+
+    [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]
+    long sourceIndex();
+
+    [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
+    VARIANT recordNumber();
+
+    [propput, id(DISPID_IHTMLELEMENT_LANG)]
+    void lang(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANG)]
+    BSTR lang();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
+    long offsetLeft();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
+    long offsetTop();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
+    long offsetWidth();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
+    long offsetHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
+    IHTMLElement *offsetParent();
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    void innerHTML(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    BSTR innerHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    void innerText(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    BSTR innerText();
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    void outerHTML(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    BSTR outerHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    void outerText(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    BSTR outerText();
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
+    void insertAdjacentHTML(
+            [in] BSTR where,
+            [in] BSTR html);
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
+    void insertAdjacentText(
+            [in] BSTR where,
+            [in] BSTR text);
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
+    IHTMLElement *parentTextEdit();
+
+    [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
+    VARIANT_BOOL isTextEdit();
+
+    [id(DISPID_IHTMLELEMENT_CLICK)]
+    void click();
+
+    [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
+    IHTMLFiltersCollection *filters();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+    void ondragstart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+    VARIANT ondragstart();
+
+    [id(DISPID_IHTMLELEMENT_TOSTRING)]
+    BSTR toString();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+    void onbeforeupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+    VARIANT onbeforeupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+    void onafterupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+    VARIANT onafterupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+    void onerrorupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+    VARIANT onerrorupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+    void onrowexit(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+    VARIANT onrowexit();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+    void onrowenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+    VARIANT onrowenter();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+    void ondatasetchanged(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+    VARIANT ondatasetchanged();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+    void ondataavailable(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+    VARIANT ondataavailable();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+    void ondatasetcomplete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+    VARIANT ondatasetcomplete();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+    void onfilterchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+    VARIANT onfilterchange();
+
+    [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
+    IDispatch *children();
+
+    [propget, id(DISPID_IHTMLELEMENT_ALL)]
+    IDispatch *all();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
+    BSTR scopeName();
+
+    [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
+    void setCapture([in, defaultvalue(-1)] VARIANT_BOOL containerCapture);
+
+    [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
+    void releaseCapture();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    void onlosecapture(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    VARIANT onlosecapture();
+
+    [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
+    BSTR componentFromPoint(
+            [in] long x,
+            [in] long y);
+
+    [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
+    void doScroll([in, optional] VARIANT component);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    void onscroll(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    VARIANT onscroll();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    void ondrag(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    VARIANT ondrag();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    void ondragend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    VARIANT ondragend();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    void ondragenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    VARIANT ondragenter();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    void ondragover(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    VARIANT ondragover();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    void ondragleave(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    VARIANT ondragleave();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+    void ondrop(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+    VARIANT ondrop();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    void onbeforecut(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    VARIANT onbeforecut();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    void oncut(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    VARIANT oncut();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    void onbeforecopy(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    VARIANT onbeforecopy();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    void oncopy(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    VARIANT oncopy();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+    void onbeforepaste(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+    VARIANT onbeforepaste();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    void onpaste(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    VARIANT onpaste();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
+    IHTMLCurrentStyle *currentStyle();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    void onpropertychange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    VARIANT onpropertychange();
+
+    [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
+    IHTMLRectCollection *getClientRects();
+
+    [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
+    IHTMLRect *getBoundingClientRect();
+
+    [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
+    void setExpression(
+            [in] BSTR propname,
+            [in] BSTR expression,
+            [in, defaultvalue("")] BSTR language);
+
+    [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
+    VARIANT getExpression([in] BSTR propname);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
+    VARIANT_BOOL removeExpression([in] BSTR propname);
+
+    [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    void tabIndex(short v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    short tabIndex();
+
+    [id(DISPID_IHTMLELEMENT2_FOCUS)]
+    void focus();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    void accessKey(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    BSTR accessKey();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+    void onblur(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+    VARIANT onblur();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    void onfocus(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    VARIANT onfocus();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    void onresize(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    VARIANT onresize();
+
+    [id(DISPID_IHTMLELEMENT2_BLUR)]
+    void blur();
+
+    [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
+    void addFilter([in] IUnknown *pUnk);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
+    void removeFilter([in] IUnknown *pUnk);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
+    long clientHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
+    long clientWidth();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
+    long clientTop();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
+    long clientLeft();
+
+    [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
+    VARIANT_BOOL attachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp);
+
+    [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
+    void detachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp);
+
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
+    VARIANT readyState();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    void onreadystatechange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    VARIANT onreadystatechange();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    void onrowsdelete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    VARIANT onrowsdelete();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+    void onrowsinserted(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+     VARIANT onrowsinserted();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+     void oncellchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+    VARIANT oncellchange();
+
+    [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    void dir(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    BSTR dir();
+
+    [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
+    IDispatch *createControlRange();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
+    long scrollHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
+    long scrollWidth();
+
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    void scrollTop(long v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    long scrollTop();
+
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    void scrollLeft(long v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    long scrollLeft();
+
+    [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
+    void clearAttributes();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    void oncontextmenu(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    VARIANT oncontextmenu();
+
+    [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
+    IHTMLElement *insertAdjacentElement(
+            [in] BSTR where,
+            [in] IHTMLElement *insertedElement);
+
+    [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
+    IHTMLElement *applyElement(
+            [in] IHTMLElement *apply,
+            [in] BSTR where);
+
+    [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
+    BSTR getAdjacentText([in] BSTR where);
+
+    [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
+    BSTR replaceAdjacentText(
+            [in] BSTR where,
+            [in] BSTR newText);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
+    VARIANT_BOOL canHaveChildren();
+
+    [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
+    long addBehavior(
+            [in] BSTR bstrUrl,
+            [in, optional] VARIANT *pvarFactory);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
+    VARIANT_BOOL removeBehavior([in] long cookie);
+
+    [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
+    IHTMLStyle *runtimeStyle();
+
+    [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
+    IDispatch *behaviorUrns();
+
+    [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    void tagUrn(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    BSTR tagUrn();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    void onbeforeeditfocus(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    VARIANT onbeforeeditfocus();
+
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
+    long readyStateValue();
+
+    [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
+    IHTMLElementCollection *getElementsByTagName([in] BSTR v);
+
+    [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]
+    void mergeAttributes(
+            [in] IHTMLElement *mergeThis,
+            [in, optional] VARIANT *pvarFlags);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
+    VARIANT_BOOL isMultiLine();
+
+    [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
+    VARIANT_BOOL canHaveHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    void onlayoutcomplete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    VARIANT onlayoutcomplete();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    void onpage(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    VARIANT onpage();
+
+    [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    void inflateBlock(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    VARIANT_BOOL inflateBlock();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    void onbeforedeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    VARIANT onbeforedeactivate();
+
+    [id(DISPID_IHTMLELEMENT3_SETACTIVE)]
+    void setActive();
+
+    [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    void contentEditable(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    BSTR contentEditable();
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
+    VARIANT_BOOL isContentEditable();
+
+    [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    void hideFocus(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    VARIANT_BOOL hideFocus();
+
+    [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    void disabled(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    VARIANT_BOOL disabled();
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
+    VARIANT_BOOL isDisabled();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    void onmove(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    VARIANT onmove();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    void oncontrolselect(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    VARIANT oncontrolselect();
+
+    [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
+    VARIANT_BOOL fireEvent(
+            [in] BSTR bstrEventName,
+            [in, optional] VARIANT *pvarEventObject);
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+    void onresizestart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+    VARIANT onresizestart();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    void onresizeend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    VARIANT onresizeend();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    void onmovestart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    VARIANT onmovestart();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    void onmoveend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    VARIANT onmoveend();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    void onmouseenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    VARIANT onmouseenter();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    void onmouseleave(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    VARIANT onmouseleave();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+    void onactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+    VARIANT onactivate();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    void ondeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    VARIANT ondeactivate();
+
+    [id(DISPID_IHTMLELEMENT3_DRAGDROP)]
+    VARIANT_BOOL dragDrop();
+
+    [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
+    LONG glyphMode();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    void onmousewheel(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    VARIANT onmousewheel();
+
+    [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
+    void normalize();
+
+    [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
+    IHTMLDOMAttribute *getAttributeNode([in] BSTR bstrname);
+
+    [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
+    IHTMLDOMAttribute *setAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+    [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
+    IHTMLDOMAttribute *removeAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    void onbeforeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    VARIANT onbeforeactivate();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    void onfocusin(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    VARIANT onfocusin();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    void onfocusout(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    VARIANT onfocusout();
+
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
+    long uniqueNumber();
+
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
+    BSTR uniqueID();
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
+    long nodeType();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
+    IHTMLDOMNode *parentNode();
+
+    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
+    VARIANT_BOOL hasChildNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
+    IDispatch *childNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
+    IDispatch *attributes();
+
+    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
+    IHTMLDOMNode *insertBefore(
+            [in] IHTMLDOMNode *newChild,
+            [in, optional] VARIANT refChild);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
+    IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
+    IHTMLDOMNode *replaceChild(
+            [in] IHTMLDOMNode *newChild,
+            [in] IHTMLDOMNode *oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_CLONENODE)]
+    IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
+    IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
+    IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
+    IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
+
+    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
+    IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
+    BSTR nodeName();
+
+    [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    void nodeValue(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    VARIANT nodeValue();
+
+    [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
+    IHTMLDOMNode *firstChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
+    IHTMLDOMNode *lastChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
+    IHTMLDOMNode *previousSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
+    IHTMLDOMNode *nextSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
+    IDispatch *ownerDocument();
+
+    [propput, id(DISPID_IHTMLDATABINDING_DATAFLD)]
+    void dataFld(BSTR v);
+
+    [propget, id(DISPID_IHTMLDATABINDING_DATAFLD)]
+    BSTR dataFld();
+
+    [propput, id(DISPID_IHTMLDATABINDING_DATASRC)]
+    void dataSrc(BSTR v);
+
+    [propget, id(DISPID_IHTMLDATABINDING_DATASRC)]
+    BSTR dataSrc();
+
+    [propput, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
+    void dataFormatAs(BSTR v);
+
+    [propget, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
+    BSTR dataFormatAs();
+
+    [propput, id(DISPID_IHTMLFRAMEBASE_SRC)]
+    void src(BSTR v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE_SRC)]
+    BSTR src();
+
+    [propput, id(DISPID_IHTMLFRAMEBASE_NAME)]
+    void name(BSTR v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE_NAME)]
+    BSTR name();
+
+    [propput, id(DISPID_IHTMLFRAMEBASE_BORDER)]
+    void border(VARIANT v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE_BORDER)]
+    VARIANT border();
+
+    [propput, id(DISPID_IHTMLFRAMEBASE_FRAMEBORDER)]
+    void frameBorder(BSTR v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE_FRAMEBORDER)]
+    BSTR frameBorder();
+
+    [propput, id(DISPID_IHTMLFRAMEBASE_FRAMESPACING)]
+    void frameSpacing(VARIANT v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE_FRAMESPACING)]
+    VARIANT frameSpacing();
+
+    [propput, id(DISPID_IHTMLFRAMEBASE_MARGINWIDTH)]
+    void marginWidth(VARIANT v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE_MARGINWIDTH)]
+    VARIANT marginWidth();
+
+    [propput, id(DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)]
+    void marginHeight(VARIANT v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)]
+    VARIANT marginHeight();
+
+    [propput, id(DISPID_IHTMLFRAMEBASE_NORESIZE)]
+    void noResize(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE_NORESIZE)]
+    VARIANT_BOOL noResize();
+
+    [propput, id(DISPID_IHTMLFRAMEBASE_SCROLLING)]
+    void scrolling(BSTR v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE_SCROLLING)]
+    BSTR scrolling();
+
+    [propget, id(DISPID_IHTMLFRAMEBASE2_CONTENTWINDOW)]
+    IHTMLWindow2 *contentWindow();
+
+    [propput, id(DISPID_IHTMLFRAMEBASE2_ONLOAD), displaybind, bindable]
+    void onload(VARIANT v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE2_ONLOAD), displaybind, bindable]
+    VARIANT onload();
+
+    [propput, id(DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)]
+    void allowTransparency(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)]
+    VARIANT_BOOL allowTransparency();
+
+    [propput, id(DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable]
+    void longDesc(BSTR v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable]
+    BSTR longDesc();
+
+    [propput, id(DISPID_IHTMLIFRAMEELEMENT_VSPACE)]
+    void vspace(long v);
+
+    [propget, id(DISPID_IHTMLIFRAMEELEMENT_VSPACE)]
+    long vspace();
+
+    [propput, id(DISPID_IHTMLIFRAMEELEMENT_HSPACE)]
+    void hspace(long v);
+
+    [propget, id(DISPID_IHTMLIFRAMEELEMENT_HSPACE)]
+    long hspace();
+
+    [propput, id(DISPID_IHTMLIFRAMEELEMENT_ALIGN), displaybind, bindable]
+    void align(BSTR v);
+
+    [propget, id(DISPID_IHTMLIFRAMEELEMENT_ALIGN), displaybind, bindable]
+    BSTR align();
+
+    [propput, id(DISPID_IHTMLIFRAMEELEMENT2_HEIGHT)]
+    void height(VARIANT v);
+
+    [propget, id(DISPID_IHTMLIFRAMEELEMENT2_HEIGHT)]
+    VARIANT height();
+
+    [propput, id(DISPID_IHTMLIFRAMEELEMENT2_WIDTH)]
+    void width(VARIANT v);
+
+    [propget, id(DISPID_IHTMLIFRAMEELEMENT2_WIDTH)]
+    VARIANT width();
+}
+
+/*****************************************************************************
+ *    IMarkupContainer interface
+ */
+[
+    object,
+    pointer_default(unique),
+    uuid(3050f5f9-98b5-11cf-bb82-00aa00bdce0B)
+]
+interface IMarkupContainer : IUnknown
+{
+    HRESULT OwningDoc([out] IHTMLDocument2 **ppDoc);
+}
+
+/*****************************************************************************
+ *    IMarkupPointer interface
+ */
+[
+    object,
+    pointer_default(unique),
+    uuid(3050f49f-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IMarkupPointer : IUnknown
+{
+    HRESULT OwningDoc([out] IHTMLDocument2 **ppDoc);
+
+    HRESULT Gravity([out] POINTER_GRAVITY *pGravity);
+
+    HRESULT SetGravity([in] POINTER_GRAVITY Gravity);
+
+    HRESULT Cling([out] BOOL *pfCling);
+
+    HRESULT SetCling([in] BOOL fCLing);
+
+    HRESULT UnPosition();
+
+    HRESULT IsPositioned([out] BOOL *pfPositioned);
+
+    HRESULT GetContainer([out] IMarkupContainer **ppContainer);
+
+    HRESULT MoveAdjacentToElement(
+        [in] IHTMLElement *pElement,
+        [in] ELEMENT_ADJACENCY eAdj);
+
+    HRESULT MoveToPointer([in] IMarkupPointer *pPointer);
+
+    HRESULT MoveToContainer(
+        [in] IMarkupContainer *pContainer,
+        [in] BOOL fAtStart);
+
+    HRESULT Left(
+        [in] BOOL fMove,
+        [out] MARKUP_CONTEXT_TYPE *pContext,
+        [out] IHTMLElement **ppElement,
+        [in, out] long *pcch,
+        [out, size_is(*pcch)] OLECHAR *pchText);
+
+    HRESULT Right(
+        [in] BOOL fMove,
+        [out] MARKUP_CONTEXT_TYPE *pContext,
+        [out] IHTMLElement **ppElement,
+        [in, out] long *pcch,
+        [out, size_is(*pcch)] OLECHAR *pchText);
+
+    HRESULT CurrentScope([out] IHTMLElement **ppElemCurrent);
+
+    HRESULT IsLeftOf(
+        [in] IMarkupPointer *pPointerThat,
+        [out] BOOL *pfResult);
+
+    HRESULT IsLeftOfOrEqualTo(
+        [in] IMarkupPointer *pPointerThat,
+        [out] BOOL *pfResult);
+
+    HRESULT IsRightOf(
+        [in] IMarkupPointer *pPointerThat,
+        [out] BOOL *pfResult);
+
+    HRESULT IsRightOfOrEqualTo(
+        [in] IMarkupPointer *pPointerThat,
+        [out] BOOL *pfResult);
+
+    HRESULT IsEqualTo(
+        [in] IMarkupPointer *pPointerThat,
+        [out] BOOL *pfAreEqual);
+
+    HRESULT MoveUnit([in] MOVEUNIT_ACTION muAction);
+
+    HRESULT FindText(
+        [in] OLECHAR *pchFindText,
+        [in] DWORD dwFlags,
+        [in] IMarkupPointer *pIEndMatch,
+        [in] IMarkupPointer *pIEndSearch);
+}
+
+/*****************************************************************************
+ *    ISegment interface
+ */
+[
+    object,
+    pointer_default(unique),
+    uuid(83f65030-b598-cf11-bb82-00aa00bdce0b)
+]
+interface ISegment : IUnknown
+{
+    HRESULT GetPointers(
+        [in] IMarkupPointer *pIStart,
+        [in] IMarkupPointer *pIEnd);
+}
+
+/*****************************************************************************
+ *    IElementSegment interface
+ */
+[
+    object,
+    pointer_default(unique),
+    uuid(3050f68f-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IElementSegment : ISegment
+{
+    HRESULT GetElement([out] IHTMLElement **ppIElement);
+
+    HRESULT SetPrimary([in] BOOL fPrimary);
+
+    HRESULT IsPrimary([out] BOOL *pfPrimary);
+}
+
+/*****************************************************************************
+ *    ISelectionServicesListener interface
+ */
+[
+    object,
+    pointer_default(unique),
+    uuid(99f65030-b598-cf11-bb82-00aa00bdce0b)
+]
+interface ISelectionServicesListener : IUnknown
+{
+    HRESULT BeginSelectionUndo();
+
+    HRESULT EndSelectionUndo();
+
+    HRESULT OnSelectedElementExit(
+        [in] IMarkupPointer *pIElementStart,
+        [in] IMarkupPointer *pIElementEnd,
+        [in] IMarkupPointer *pIElementContentStart,
+        [in] IMarkupPointer *pIElementContentEnd);
+
+    HRESULT OnChangeType(
+        [in] SELECTION_TYPE eType,
+        [in] ISelectionServicesListener *pIListener);
+
+    HRESULT GetTypeDetail([out] BSTR *pTypeDetail);
+}
+
+/*****************************************************************************
+ *    ISelectionServices interface
+ */
+[
+    object,
+    pointer_default(unique),
+    uuid(3050f684-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface ISelectionServices : IUnknown
+{
+    HRESULT SetSelectionType(
+        [in] SELECTION_TYPE eType,
+        [in] ISelectionServicesListener *pIListener);
+
+    HRESULT GetMarkupContainer([out] IMarkupContainer **ppIContainer);
+
+    HRESULT AddSegment(
+        [in] IMarkupPointer *pIStart,
+        [in] IMarkupPointer *pIEnd,
+        [out] ISegment **ppISegmentAdded);
+
+    HRESULT AddElementSegment(
+        [in] IHTMLElement *pIElement,
+        [out] IElementSegment **ppISegmentAdded);
+
+    HRESULT RemoveSegment([in] ISegment *pISegment);
+
+    HRESULT GetSelectionServicesListener([out] ISelectionServicesListener **ppISelectionServicesListener);
+}
+
+/*****************************************************************************
+ *    IHTMLEditDesigner interface
+ */
+[
+    object,
+    pointer_default(unique),
+    uuid(3050f662-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLEditDesigner : IUnknown
+{
+    HRESULT PreHandleEvent(
+        [in] DISPID inEvtDispId,
+        [in] IHTMLEventObj *pIEventObj);
+
+    HRESULT PostHandleEvent(
+        [in] DISPID inEvtDispId,
+        [in] IHTMLEventObj *pIEventObj);
+
+    HRESULT TranslateAccelerator(
+        [in] DISPID inEvtDispId,
+        [in] IHTMLEventObj *pIEventObj);
+
+    HRESULT PostEditorEventNotify(
+        [in] DISPID inEvtDispId,
+        [in] IHTMLEventObj *pIEventObj);
+}
+
+/*****************************************************************************
+ *    IHTMLEditServices interface
+ */
+[
+    object,
+    pointer_default(unique),
+    uuid(3050f663-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLEditServices : IUnknown
+{
+    HRESULT AddDesigner([in] IHTMLEditDesigner *pIDesigner);
+
+    HRESULT RemoveDesigner([in] IHTMLEditDesigner *pIDesigner);
+
+    HRESULT GetSelectionServices(
+        [in] IMarkupContainer *pIContainer,
+        [out] ISelectionServices **ppSelSvc);
+
+    HRESULT MoveToSelectionAnchor([in] IMarkupPointer *pIStartAnchor);
+
+    HRESULT MoveToSelectionEnd([in] IMarkupPointer *pIEndAnchor);
+
+    HRESULT SelectRange(
+        [in] IMarkupPointer* pStart,
+        [in] IMarkupPointer* pEnd,
+        [in] SELECTION_TYPE eType);
+}
+
+} /* library MSHTML */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msi.h	(revision 16410)
@@ -0,0 +1,647 @@
+/*
+ * Copyright (C) 2002,2003 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_MSI_H
+#define __WINE_MSI_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _MSI_NO_CRYPTO
+#include <wincrypt.h>
+#endif
+
+typedef unsigned long MSIHANDLE;
+
+typedef enum tagINSTALLSTATE
+{
+    INSTALLSTATE_NOTUSED = -7,
+    INSTALLSTATE_BADCONFIG = -6,
+    INSTALLSTATE_INCOMPLETE = -5,
+    INSTALLSTATE_SOURCEABSENT = -4,
+    INSTALLSTATE_MOREDATA = -3,
+    INSTALLSTATE_INVALIDARG = -2,
+    INSTALLSTATE_UNKNOWN = -1,
+    INSTALLSTATE_BROKEN = 0,
+    INSTALLSTATE_ADVERTISED = 1,
+    INSTALLSTATE_ABSENT = 2,
+    INSTALLSTATE_LOCAL = 3,
+    INSTALLSTATE_SOURCE = 4,
+    INSTALLSTATE_DEFAULT = 5
+} INSTALLSTATE;
+
+typedef enum tagINSTALLUILEVEL
+{
+    INSTALLUILEVEL_NOCHANGE = 0,
+    INSTALLUILEVEL_DEFAULT = 1,
+    INSTALLUILEVEL_NONE = 2,
+    INSTALLUILEVEL_BASIC = 3,
+    INSTALLUILEVEL_REDUCED = 4,
+    INSTALLUILEVEL_FULL = 5,
+    INSTALLUILEVEL_HIDECANCEL = 0x20,
+    INSTALLUILEVEL_PROGRESSONLY = 0x40,
+    INSTALLUILEVEL_ENDDIALOG = 0x80,
+    INSTALLUILEVEL_SOURCERESONLY = 0x100
+} INSTALLUILEVEL;
+
+typedef enum tagUSERINFOSTATE
+{
+    USERINFOSTATE_MOREDATA = -3,
+    USERINFOSTATE_INVALIDARG = -2,
+    USERINFOSTATE_UNKNOWN = -1,
+    USERINFOSTATE_ABSENT = 0,
+    USERINFOSTATE_PRESENT = 1,
+} USERINFOSTATE;
+
+typedef enum tagINSTALLLEVEL
+{
+    INSTALLLEVEL_DEFAULT = 0,
+    INSTALLLEVEL_MINIMUM = 1,
+    INSTALLLEVEL_MAXIMUM = 0xFFFF
+} INSTALLLEVEL;
+
+typedef enum tagINSTALLMESSAGE
+{
+    INSTALLMESSAGE_FATALEXIT = 0,
+    INSTALLMESSAGE_ERROR = 0x01000000,
+    INSTALLMESSAGE_WARNING = 0x02000000,
+    INSTALLMESSAGE_USER = 0x03000000,
+    INSTALLMESSAGE_INFO = 0x04000000,
+    INSTALLMESSAGE_FILESINUSE = 0x05000000,
+    INSTALLMESSAGE_RESOLVESOURCE = 0x06000000,
+    INSTALLMESSAGE_OUTOFDISKSPACE = 0x07000000,
+    INSTALLMESSAGE_ACTIONSTART = 0x08000000,
+    INSTALLMESSAGE_ACTIONDATA = 0x09000000,
+    INSTALLMESSAGE_PROGRESS = 0x0a000000,
+    INSTALLMESSAGE_COMMONDATA = 0x0b000000,
+    INSTALLMESSAGE_INITIALIZE = 0x0c000000,
+    INSTALLMESSAGE_TERMINATE = 0x0d000000,
+    INSTALLMESSAGE_SHOWDIALOG = 0x0e000000
+} INSTALLMESSAGE;
+
+typedef enum tagREINSTALLMODE
+{
+    REINSTALLMODE_REPAIR = 0x00000001,
+    REINSTALLMODE_FILEMISSING = 0x00000002,
+    REINSTALLMODE_FILEOLDERVERSION = 0x00000004,
+    REINSTALLMODE_FILEEQUALVERSION = 0x00000008,
+    REINSTALLMODE_FILEEXACT = 0x00000010,
+    REINSTALLMODE_FILEVERIFY = 0x00000020,
+    REINSTALLMODE_FILEREPLACE = 0x00000040,
+    REINSTALLMODE_MACHINEDATA = 0x00000080,
+    REINSTALLMODE_USERDATA = 0x00000100,
+    REINSTALLMODE_SHORTCUT = 0x00000200,
+    REINSTALLMODE_PACKAGE = 0x00000400
+} REINSTALLMODE;
+
+typedef enum tagINSTALLLOGMODE
+{
+    INSTALLLOGMODE_FATALEXIT      = (1 << (INSTALLMESSAGE_FATALEXIT >> 24)),
+    INSTALLLOGMODE_ERROR          = (1 << (INSTALLMESSAGE_ERROR >> 24)),
+    INSTALLLOGMODE_WARNING        = (1 << (INSTALLMESSAGE_WARNING >> 24)),
+    INSTALLLOGMODE_USER           = (1 << (INSTALLMESSAGE_USER >> 24)),
+    INSTALLLOGMODE_INFO           = (1 << (INSTALLMESSAGE_INFO >> 24)),
+    INSTALLLOGMODE_RESOLVESOURCE  = (1 << (INSTALLMESSAGE_RESOLVESOURCE >> 24)),
+    INSTALLLOGMODE_OUTOFDISKSPACE = (1 << (INSTALLMESSAGE_OUTOFDISKSPACE >> 24)),
+    INSTALLLOGMODE_ACTIONSTART    = (1 << (INSTALLMESSAGE_ACTIONSTART >> 24)),
+    INSTALLLOGMODE_ACTIONDATA     = (1 << (INSTALLMESSAGE_ACTIONDATA >> 24)),
+    INSTALLLOGMODE_COMMONDATA     = (1 << (INSTALLMESSAGE_COMMONDATA >> 24)),
+    INSTALLLOGMODE_PROPERTYDUMP   = (1 << (INSTALLMESSAGE_PROGRESS >> 24)),
+    INSTALLLOGMODE_VERBOSE        = (1 << (INSTALLMESSAGE_INITIALIZE >> 24)),
+    INSTALLLOGMODE_EXTRADEBUG     = (1 << (INSTALLMESSAGE_TERMINATE >> 24)),
+    INSTALLLOGMODE_PROGRESS       = (1 << (INSTALLMESSAGE_PROGRESS >> 24)),
+    INSTALLLOGMODE_INITIALIZE     = (1 << (INSTALLMESSAGE_INITIALIZE >> 24)),
+    INSTALLLOGMODE_TERMINATE      = (1 << (INSTALLMESSAGE_TERMINATE >> 24)),
+    INSTALLLOGMODE_SHOWDIALOG     = (1 << (INSTALLMESSAGE_SHOWDIALOG >> 24))
+} INSTALLLOGMODE;
+
+typedef enum tagINSTALLLOGATTRIBUTES
+{
+    INSTALLLOGATTRIBUTES_APPEND = 0x00000001,
+    INSTALLLOGATTRIBUTES_FLUSHEACHLINE = 0x00000002
+} INSTALLLOGATTRIBUTES;
+
+typedef enum tagINSTALLMODE
+{
+    INSTALLMODE_NODETECTION_ANY     = -4,
+    INSTALLMODE_NOSOURCERESOLUTION  = -3,
+    INSTALLMODE_NODETECTION         = -2,
+    INSTALLMODE_EXISTING            = -1,
+    INSTALLMODE_DEFAULT             = 0
+} INSTALLMODE;
+
+typedef enum tagADVERTISEFLAGS
+{
+    ADVERTISEFLAGS_MACHINEASSIGN = 0,
+    ADVERTISEFLAGS_USERASSIGN = 1
+} ADVERTISEFLAGS;
+
+typedef enum tagSCRIPTFLAGS
+{
+    SCRIPTFLAGS_CACHEINFO = 1,
+    SCRIPTFLAGS_SHORTCUTS = 4,
+    SCRIPTFLAGS_MACHINEASSIGN = 8,
+    SCRIPTFLAGS_REGDATA_APPINFO = 0x10,
+    SCRIPTFLAGS_REGDATA_CNFGINFO = 0x20,
+    SCRIPTFLAGS_VALIDATE_TRANSFORMS_LIST = 0x40,
+    SCRIPTFLAGS_REGDATA_CLASSINFO = 0x80,
+    SCRIPTFLAGS_REGDATA_EXTENSIONINFO = 0x100,
+} SCRIPTFLAGS;
+
+typedef enum tagINSTALLTYPE
+{
+    INSTALLTYPE_DEFAULT = 0,
+    INSTALLTYPE_NETWORK_IMAGE = 1,
+    INSTALLTYPE_SINGLE_INSTANCE = 2,
+} INSTALLTYPE;
+
+typedef enum tagMSIINSTALLCONTEXT
+{
+    MSIINSTALLCONTEXT_FIRSTVISIBLE  =   0,
+    MSIINSTALLCONTEXT_NONE          =   0,
+    MSIINSTALLCONTEXT_USERMANAGED   =   1,
+    MSIINSTALLCONTEXT_USERUNMANAGED =   2,
+    MSIINSTALLCONTEXT_MACHINE       =   4,
+    MSIINSTALLCONTEXT_ALL           = (MSIINSTALLCONTEXT_USERMANAGED | MSIINSTALLCONTEXT_USERUNMANAGED | MSIINSTALLCONTEXT_MACHINE),
+    MSIINSTALLCONTEXT_ALLUSERMANAGED=   8,
+} MSIINSTALLCONTEXT;
+
+typedef enum tagMSISOURCETYPE
+{
+    MSISOURCETYPE_UNKNOWN = 0x00000000L,
+    MSISOURCETYPE_NETWORK = 0x00000001L,
+    MSISOURCETYPE_URL     = 0x00000002L,
+    MSISOURCETYPE_MEDIA   = 0x00000004
+} MSISOURCETYPE;
+
+typedef enum tagMSICODE
+{
+    MSICODE_PRODUCT = 0x00000000L,
+    MSICODE_PATCH = 0x40000000L
+} MSICODE;
+
+typedef struct _MSIFILEHASHINFO {
+    ULONG dwFileHashInfoSize;
+    ULONG dwData[4];
+} MSIFILEHASHINFO, *PMSIFILEHASHINFO;
+
+typedef enum tagMSIPATCHDATATYPE
+{
+    MSIPATCH_DATATYPE_PATCHFILE = 0,
+    MSIPATCH_DATATYPE_XMLPATH = 1,
+    MSIPATCH_DATATYPE_XMLBLOB = 2,
+} MSIPATCHDATATYPE, *PMSIPATCHDATATYPE;
+
+typedef struct tagMSIPATCHSEQUENCEINFOA
+{
+    LPCSTR szPatchData;
+    MSIPATCHDATATYPE ePatchDataType;
+    DWORD dwOrder;
+    UINT uStatus;
+} MSIPATCHSEQUENCEINFOA, *PMSIPATCHSEQUENCEINFOA;
+
+typedef struct tagMSIPATCHSEQUENCEINFOW
+{
+    LPCWSTR szPatchData;
+    MSIPATCHDATATYPE ePatchDataType;
+    DWORD dwOrder;
+    UINT uStatus;
+} MSIPATCHSEQUENCEINFOW, *PMSIPATCHSEQUENCEINFOW;
+
+#define MAX_FEATURE_CHARS 38
+
+/* Strings defined in msi.h */
+/* Advertised Information */
+
+#define INSTALLPROPERTY_PACKAGENAMEA "PackageName"
+static const WCHAR INSTALLPROPERTY_PACKAGENAMEW[] = {'P','a','c','k','a','g','e','N','a','m','e',0};
+#define INSTALLPROPERTY_PACKAGENAME WINELIB_NAME_AW(INSTALLPROPERTY_PACKAGENAME)
+
+#define INSTALLPROPERTY_TRANSFORMSA "Transforms"
+static const WCHAR INSTALLPROPERTY_TRANSFORMSW[] = {'T','r','a','n','s','f','o','r','m','s',0};
+#define INSTALLPROPERTY_TRANSFORMS WINELIB_NAME_AW(INSTALLPROPERTY_TRANSFORMS)
+
+#define INSTALLPROPERTY_LANGUAGEA "Language"
+static const WCHAR INSTALLPROPERTY_LANGUAGEW[] = {'L','a','n','g','u','a','g','e',0};
+#define INSTALLPROPERTY_LANGUAGE WINELIB_NAME_AW(INSTALLPROPERTY_LANGUAGE)
+
+#define INSTALLPROPERTY_PRODUCTNAMEA "ProductName"
+static const WCHAR INSTALLPROPERTY_PRODUCTNAMEW[] = {'P','r','o','d','u','c','t','N','a','m','e',0};
+#define INSTALLPROPERTY_PRODUCTNAME WINELIB_NAME_AW(INSTALLPROPERTY_PRODUCTNAME)
+
+#define INSTALLPROPERTY_ASSIGNMENTTYPEA "AssignmentType"
+static const WCHAR INSTALLPROPERTY_ASSIGNMENTTYPEW[] = {'A','s','s','i','g','n','m','e','n','t','T','y','p','e',0};
+#define INSTALLPROPERTY_ASSIGNMENTTYPE WINELIB_NAME_AW(INSTALLPROPERTY_ASSIGNMENTTYPE)
+
+#define INSTALLPROPERTY_PACKAGECODEA "PackageCode"
+static const WCHAR INSTALLPROPERTY_PACKAGECODEW[] = {'P','a','c','k','a','g','e','C','o','d','e',0};
+#define INSTALLPROPERTY_PACKAGECODE WINELIB_NAME_AW(INSTALLPROPERTY_PACKAGECODE)
+
+#define INSTALLPROPERTY_VERSIONA "Version"
+static const WCHAR INSTALLPROPERTY_VERSIONW[]= {'V','e','r','s','i','o','n',0};
+#define INSTALLPROPERTY_VERSION WINELIB_NAME_AW(INSTALLPROPERTY_VERSION)
+
+/* MSI version 1.1 and above */
+
+#define INSTALLPROPERTY_PRODUCTICONA "ProductIcon"
+static const WCHAR INSTALLPROPERTY_PRODUCTICONW[]  = {'P','r','o','d','u','c','t','I','c','o','n',0};
+#define INSTALLPROPERTY_PRODUCTICON WINELIB_NAME_AW(INSTALLPROPERTY_PRODUCTICON)
+
+/* MSI version 1.5 and above */
+#define INSTALLPROPERTY_INSTANCETYPEA "InstanceType"
+static const WCHAR INSTALLPROPERTY_INSTANCETYPEW[] = {'I','n','s','t','a','n','c','e','T','y','p','e',0};
+#define INSTALLPROPERTY_INSTANCETYPE WINELIB_NAME_AW(INSTALLPROPERTY_INSTANCETYPE)
+
+/* MSI version 3 and above */
+#define INSTALLPROPERTY_AUTHORIZED_LUA_APPA "AuthorizedLUAApp"
+static const WCHAR INSTALLPROPERTY_AUTHORIZED_LUA_APPW[] = {'A','u','t','h','o','r','i','z','e','d','L','U','A','A','p','p',0};
+#define INSTALLPROPERTY_AUTHORIZED_LUA_APP WINELIB_NAME_AW(INSTALLPROPERTY_AUTHORIZED_LUA_APP)
+
+
+/* Installed Information */
+#define INSTALLPROPERTY_INSTALLEDPRODUCTNAMEA "InstalledProductName"
+static const WCHAR INSTALLPROPERTY_INSTALLEDPRODUCTNAMEW[] = {'I','n','s','t','a','l','l','e','d','P','r','o','d','u','c','t','N','a','m','e',0};
+#define INSTALLPROPERTY_INSTALLEDPRODUCTNAME WINELIB_NAME_AW(INSTALLPROPERTY_INSTALLEDPRODUCTNAME)
+
+#define INSTALLPROPERTY_VERSIONSTRINGA "VersionString"
+static const WCHAR INSTALLPROPERTY_VERSIONSTRINGW[] = {'V','e','r','s','i','o','n','S','t','r','i','n','g',0};
+#define INSTALLPROPERTY_VERSIONSTRING WINELIB_NAME_AW(INSTALLPROPERTY_VERSIONSTRING)
+
+#define INSTALLPROPERTY_HELPLINKA "HelpLink"
+static const WCHAR INSTALLPROPERTY_HELPLINKW[] = {'H','e','l','p','L','i','n','k',0};
+#define INSTALLPROPERTY_HELPLINK WINELIB_NAME_AW(INSTALLPROPERTY_HELPLINK)
+
+#define INSTALLPROPERTY_HELPTELEPHONEA "HelpTelephone"
+static const WCHAR INSTALLPROPERTY_HELPTELEPHONEW[] = {'H','e','l','p','T','e','l','e','p','h','o','n','e',0};
+#define INSTALLPROPERTY_HELPTELEPHONE WINELIB_NAME_AW(INSTALLPROPERTY_HELPTELEPHONE)
+
+#define INSTALLPROPERTY_INSTALLLOCATIONA "InstallLocation"
+static const WCHAR INSTALLPROPERTY_INSTALLLOCATIONW[] = {'I','n','s','t','a','l','l','L','o','c','a','t','i','o','n',0};
+#define INSTALLPROPERTY_INSTALLLOCATION WINELIB_NAME_AW(INSTALLPROPERTY_INSTALLLOCATION)
+
+#define INSTALLPROPERTY_INSTALLSOURCEA "InstallSource"
+static const WCHAR INSTALLPROPERTY_INSTALLSOURCEW[] = {'I','n','s','t','a','l','l','S','o','u','r','c','e',0};
+#define INSTALLPROPERTY_INSTALLSOURCE WINELIB_NAME_AW(INSTALLPROPERTY_INSTALLSOURCE)
+
+#define INSTALLPROPERTY_INSTALLDATEA "InstallDate"
+static const WCHAR INSTALLPROPERTY_INSTALLDATEW[] = {'I','n','s','t','a','l','l','D','a','t','e',0};
+#define INSTALLPROPERTY_INSTALLDATE WINELIB_NAME_AW(INSTALLPROPERTY_INSTALLDATE)
+
+#define INSTALLPROPERTY_PUBLISHERA "Publisher"
+static const WCHAR INSTALLPROPERTY_PUBLISHERW[] ={'P','u','b','l','i','s','h','e','r',0};
+#define INSTALLPROPERTY_PUBLISHER WINELIB_NAME_AW(INSTALLPROPERTY_PUBLISHER)
+
+#define INSTALLPROPERTY_LOCALPACKAGEA "LocalPackage"
+static const WCHAR INSTALLPROPERTY_LOCALPACKAGEW[] = {'L','o','c','a','l','P','a','c','k','a','g','e',0};
+#define INSTALLPROPERTY_LOCALPACKAGE WINELIB_NAME_AW(INSTALLPROPERTY_LOCALPACKAGE)
+
+#define INSTALLPROPERTY_URLINFOABOUTA "URLInfoAbout"
+static const WCHAR INSTALLPROPERTY_URLINFOABOUTW[] = {'U','R','L','I','n','f','o','A','b','o','u','t',0};
+#define INSTALLPROPERTY_URLINFOABOUT WINELIB_NAME_AW(INSTALLPROPERTY_URLINFOABOUT)
+
+#define INSTALLPROPERTY_URLUPDATEINFOA "URLUpdateInfo"
+static const WCHAR INSTALLPROPERTY_URLUPDATEINFOW[] = {'U','R','L','U','p','d','a','t','e','I','n','f','o',0};
+#define INSTALLPROPERTY_URLUPDATEINFO WINELIB_NAME_AW(INSTALLPROPERTY_URLUPDATEINFO)
+
+#define INSTALLPROPERTY_VERSIONMINORA "VersionMinor"
+static const WCHAR INSTALLPROPERTY_VERSIONMINORW[] = {'V','e','r','s','i','o','n','M','i','n','o','r',0};
+#define INSTALLPROPERTY_VERSIONMINOR WINELIB_NAME_AW(INSTALLPROPERTY_VERSIONMINOR)
+
+#define INSTALLPROPERTY_VERSIONMAJORA "VersionMajor"
+static const WCHAR INSTALLPROPERTY_VERSIONMAJORW[] = {'V','e','r','s','i','o','n','M','a','j','o','r',0};
+#define INSTALLPROPERTY_VERSIONMAJOR WINELIB_NAME_AW(INSTALLPROPERTY_VERSIONMAJOR)
+
+#define INSTALLPROPERTY_PRODUCTIDA "ProductID"
+static const WCHAR INSTALLPROPERTY_PRODUCTIDW[] = {'P','r','o','d','u','c','t','I','D',0};
+#define INSTALLPROPERTY_PRODUCTID WINELIB_NAME_AW(INSTALLPROPERTY_PRODUCTID)
+
+#define INSTALLPROPERTY_REGCOMPANYA "RegCompany"
+static const WCHAR INSTALLPROPERTY_REGCOMPANYW[] = {'R','e','g','C','o','m','p','a','n','y',0};
+#define INSTALLPROPERTY_REGCOMPANY WINELIB_NAME_AW(INSTALLPROPERTY_REGCOMPANY)
+
+#define INSTALLPROPERTY_REGOWNERA "RegOwner"
+static const WCHAR INSTALLPROPERTY_REGOWNERW[] = {'R','e','g','O','w','n','e','r',0};
+#define INSTALLPROPERTY_REGOWNER WINELIB_NAME_AW(INSTALLPROPERTY_REGOWNER)
+
+/* MSI Version 3.0 and greater */
+#define INSTALLPROPERTY_UNINSTALLABLEA "Uninstallable"
+static const WCHAR INSTALLPROPERTY_UNINSTALLABLEW[] = {'U','n','i','n','s','t','a','l','l','a','b','l','e',0};
+#define INSTALLPROPERTY_UNINSTALLABLE WINELIB_NAME_AW(INSTALLPROPERTY_UNINSTALLABLE)
+
+#define INSTALLPROPERTY_PRODUCTSTATEA "State"
+static const WCHAR INSTALLPROPERTY_PRODUCTSTATEW[] = {'S','t','a','t','e',0};
+#define INSTALLPROPERTY_PRODUCTSTATE WINELIB_NAME_AW(INSTALLPROPERTY_PRODUCTSTATE)
+
+#define INSTALLPROPERTY_PATCHSTATEA "State"
+static const WCHAR INSTALLPROPERTY_PATCHSTATEW[] ={'S','t','a','t','e',0};
+#define INSTALLPROPERTY_PATCHSTATE WINELIB_NAME_AW(INSTALLPROPERTY_PATCHSTATE)
+
+#define INSTALLPROPERTY_PATCHTYPEA "PatchType"
+static const WCHAR INSTALLPROPERTY_PATCHTYPEW[] = {'P','a','t','c','h','T','y','p','e',0};
+#define INSTALLPROPERTY_PATCHTYPE WINELIB_NAME_AW(INSTALLPROPERTY_PATCHTYPE)
+
+#define INSTALLPROPERTY_LUAENABLEDA "LUAEnabled"
+static const WCHAR INSTALLPROPERTY_LUAENABLEDW[] = {'L','U','A','E','n','a','b','l','e','d',0};
+#define INSTALLPROPERTY_LUAENABLED WINELIB_NAME_AW(INSTALLPROPERTY_LUAENABLED)
+
+#define INSTALLPROPERTY_DISPLAYNAMEA "DisplayName"
+static const WCHAR INSTALLPROPERTY_DISPLAYNAMEW[] = {'D','i','s','p','l','a','y','N','a','m','e',0};
+#define INSTALLPROPERTY_DISPLAYNAME WINELIB_NAME_AW(INSTALLPROPERTY_DISPLAYNAME)
+
+#define INSTALLPROPERTY_MOREINFOURLA "MoreInfoURL"
+static const WCHAR INSTALLPROPERTY_MOREINFOURLW[] = {'M','o','r','e','I','n','f','o','U','R','L',0};
+#define INSTALLPROPERTY_MOREINFOURL WINELIB_NAME_AW(INSTALLPROPERTY_MOREINFOURL)
+
+/* Source List Info */
+#define INSTALLPROPERTY_LASTUSEDSOURCEA "LastUsedSource"
+static const WCHAR INSTALLPROPERTY_LASTUSEDSOURCEW[] = {'L','a','s','t','U','s','e','d','S','o','u','r','c','e',0};
+#define INSTALLPROPERTY_LASTUSEDSOURCE WINELIB_NAME_AW(INSTALLPROPERTY_LASTUSEDSOURCE)
+
+#define INSTALLPROPERTY_LASTUSEDTYPEA "LastUsedType"
+static const WCHAR INSTALLPROPERTY_LASTUSEDTYPEW[] = {'L','a','s','t','U','s','e','d','T','y','p','e',0};
+#define INSTALLPROPERTY_LASTUSEDTYPE WINELIB_NAME_AW(INSTALLPROPERTY_LASTUSEDTYPE)
+
+#define INSTALLPROPERTY_MEDIAPACKAGEPATHA "MediaPackagePath"
+static const WCHAR INSTALLPROPERTY_MEDIAPACKAGEPATHW[] = {'M','e','d','i','a','P','a','c','k','a','g','e','P','a','t','h',0};
+#define INSTALLPROPERTY_MEDIAPACKAGEPATH WINELIB_NAME_AW(INSTALLPROPERTY_MEDIAPACKAGEPATH)
+
+#define INSTALLPROPERTY_DISKPROMPTA "DiskPrompt"
+static const WCHAR INSTALLPROPERTY_DISKPROMPTW[] = {'D','i','s','k','P','r','o','m','p','t',0};
+#define INSTALLPROPERTY_DISKPROMPT WINELIB_NAME_AW(INSTALLPROPERTY_DISKPROMPT)
+
+typedef INT (CALLBACK *INSTALLUI_HANDLERA)(LPVOID, UINT, LPCSTR);
+typedef INT (CALLBACK *INSTALLUI_HANDLERW)(LPVOID, UINT, LPCWSTR);
+typedef INT (CALLBACK *INSTALLUI_HANDLER_RECORD)(LPVOID, UINT, MSIHANDLE);
+typedef INSTALLUI_HANDLER_RECORD* PINSTALLUI_HANDLER_RECORD;
+
+UINT WINAPI MsiAdvertiseProductA(LPCSTR, LPCSTR, LPCSTR, LANGID);
+UINT WINAPI MsiAdvertiseProductW(LPCWSTR, LPCWSTR, LPCWSTR, LANGID);
+#define     MsiAdvertiseProduct WINELIB_NAME_AW(MsiAdvertiseProduct)
+
+UINT WINAPI MsiAdvertiseProductExA(LPCSTR, LPCSTR, LPCSTR, LANGID, DWORD, DWORD);
+UINT WINAPI MsiAdvertiseProductExW(LPCWSTR, LPCWSTR, LPCWSTR, LANGID, DWORD, DWORD);
+#define     MsiAdvertiseProductEx WINELIB_NAME_AW(MsiAdvertiseProductEx)
+
+UINT WINAPI MsiInstallProductA(LPCSTR, LPCSTR);
+UINT WINAPI MsiInstallProductW(LPCWSTR, LPCWSTR);
+#define     MsiInstallProduct WINELIB_NAME_AW(MsiInstallProduct)
+
+UINT WINAPI MsiReinstallProductA(LPCSTR, DWORD);
+UINT WINAPI MsiReinstallProductW(LPCWSTR, DWORD);
+#define     MsiReinstallProduct WINELIB_NAME_AW(MsiReinstallProduct)
+
+UINT WINAPI MsiApplyPatchA(LPCSTR, LPCSTR, INSTALLTYPE, LPCSTR);
+UINT WINAPI MsiApplyPatchW(LPCWSTR, LPCWSTR, INSTALLTYPE, LPCWSTR);
+#define     MsiApplyPatch WINELIB_NAME_AW(MsiApplyPatch)
+
+UINT WINAPI MsiEnumComponentCostsA(MSIHANDLE, LPCSTR, DWORD, INSTALLSTATE, LPSTR, LPDWORD, LPINT, LPINT);
+UINT WINAPI MsiEnumComponentCostsW(MSIHANDLE, LPCWSTR, DWORD, INSTALLSTATE, LPWSTR, LPDWORD, LPINT, LPINT);
+#define     MsiEnumComponentCosts WINELIB_NAME_AW(MsiEnumComponentCosts)
+
+UINT WINAPI MsiEnumProductsA(DWORD, LPSTR);
+UINT WINAPI MsiEnumProductsW(DWORD, LPWSTR);
+#define     MsiEnumProducts WINELIB_NAME_AW(MsiEnumProducts)
+
+UINT WINAPI MsiEnumProductsExA(LPCSTR, LPCSTR, DWORD, DWORD, CHAR[39], MSIINSTALLCONTEXT*, LPSTR, LPDWORD);
+UINT WINAPI MsiEnumProductsExW(LPCWSTR, LPCWSTR, DWORD, DWORD, WCHAR[39], MSIINSTALLCONTEXT*, LPWSTR, LPDWORD);
+#define     MsiEnumProductsEx WINELIB_NAME_AW(MsiEnumProductsEx)
+
+UINT WINAPI MsiEnumFeaturesA(LPCSTR, DWORD, LPSTR, LPSTR);
+UINT WINAPI MsiEnumFeaturesW(LPCWSTR, DWORD, LPWSTR, LPWSTR);
+#define     MsiEnumFeatures WINELIB_NAME_AW(MsiEnumFeatures)
+
+UINT WINAPI MsiEnumComponentsA(DWORD, LPSTR);
+UINT WINAPI MsiEnumComponentsW(DWORD, LPWSTR);
+#define     MsiEnumComponents WINELIB_NAME_AW(MsiEnumComponents)
+
+UINT WINAPI MsiEnumClientsA(LPCSTR, DWORD, LPSTR);
+UINT WINAPI MsiEnumClientsW(LPCWSTR, DWORD, LPWSTR);
+#define     MsiEnumClients WINELIB_NAME_AW(MsiEnumClients)
+
+UINT WINAPI MsiOpenPackageA(LPCSTR, MSIHANDLE*);
+UINT WINAPI MsiOpenPackageW(LPCWSTR, MSIHANDLE*);
+#define     MsiOpenPackage WINELIB_NAME_AW(MsiOpenPackage)
+
+UINT WINAPI MsiOpenPackageExA(LPCSTR, DWORD, MSIHANDLE*);
+UINT WINAPI MsiOpenPackageExW(LPCWSTR, DWORD, MSIHANDLE*);
+#define     MsiOpenPackageEx WINELIB_NAME_AW(MsiOpenPackageEx)
+
+UINT WINAPI MsiOpenProductA(LPCSTR, MSIHANDLE*);
+UINT WINAPI MsiOpenProductW(LPCWSTR, MSIHANDLE*);
+#define     MsiOpenProduct WINELIB_NAME_AW(MsiOpenProduct)
+
+UINT WINAPI MsiGetProductPropertyA(MSIHANDLE,LPCSTR,LPSTR,LPDWORD);
+UINT WINAPI MsiGetProductPropertyW(MSIHANDLE,LPCWSTR,LPWSTR,LPDWORD);
+#define     MsiGetProductProperty WINELIB_NAME_AW(MsiGetProductProperty)
+
+UINT WINAPI MsiVerifyPackageA(LPCSTR);
+UINT WINAPI MsiVerifyPackageW(LPCWSTR);
+#define     MsiVerifyPackage WINELIB_NAME_AW(MsiVerifyPackage)
+
+UINT WINAPI MsiQueryComponentStateA(LPCSTR,LPCSTR,MSIINSTALLCONTEXT,LPCSTR,INSTALLSTATE*);
+UINT WINAPI MsiQueryComponentStateW(LPCWSTR,LPCWSTR,MSIINSTALLCONTEXT,LPCWSTR,INSTALLSTATE*);
+#define     MsiQueryComponentState WINELIB_NAME_AW(MsiQueryComponentState)
+
+INSTALLSTATE WINAPI MsiQueryProductStateA(LPCSTR);
+INSTALLSTATE WINAPI MsiQueryProductStateW(LPCWSTR);
+#define      MsiQueryProductState WINELIB_NAME_AW(MsiQueryProductState)
+
+UINT WINAPI MsiConfigureProductA(LPCSTR, int, INSTALLSTATE);
+UINT WINAPI MsiConfigureProductW(LPCWSTR, int, INSTALLSTATE);
+#define     MsiConfigureProduct WINELIB_NAME_AW(MsiConfigureProduct);
+
+UINT WINAPI MsiConfigureProductExA(LPCSTR, int, INSTALLSTATE, LPCSTR);
+UINT WINAPI MsiConfigureProductExW(LPCWSTR, int, INSTALLSTATE, LPCWSTR);
+#define     MsiConfigureProductEx WINELIB_NAME_AW(MsiConfigureProductEx);
+
+UINT WINAPI MsiConfigureFeatureA(LPCSTR, LPCSTR, INSTALLSTATE);
+UINT WINAPI MsiConfigureFeatureW(LPCWSTR, LPCWSTR, INSTALLSTATE);
+#define     MsiConfigureFeature WINELIB_NAME_AW(MsiConfigureFeature);
+
+UINT WINAPI MsiGetProductCodeA(LPCSTR, LPSTR);
+UINT WINAPI MsiGetProductCodeW(LPCWSTR, LPWSTR);
+#define     MsiGetProductCode WINELIB_NAME_AW(MsiGetProductCode)
+
+UINT WINAPI MsiGetProductInfoA(LPCSTR, LPCSTR, LPSTR, LPDWORD);
+UINT WINAPI MsiGetProductInfoW(LPCWSTR, LPCWSTR, LPWSTR, LPDWORD);
+#define     MsiGetProductInfo WINELIB_NAME_AW(MsiGetProductInfo)
+
+UINT WINAPI MsiGetProductInfoExA(LPCSTR, LPCSTR, MSIINSTALLCONTEXT, LPCSTR, LPSTR, LPDWORD);
+UINT WINAPI MsiGetProductInfoExW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, LPCWSTR, LPWSTR, LPDWORD);
+#define     MsiGetProductInfoEx WINELIB_NAME_AW(MsiGetProductInfoEx)
+
+UINT WINAPI MsiEnableLogA(DWORD, LPCSTR, DWORD);
+UINT WINAPI MsiEnableLogW(DWORD, LPCWSTR, DWORD);
+#define     MsiEnableLog WINELIB_NAME_AW(MsiEnableLog)
+
+INSTALLUI_HANDLERA WINAPI MsiSetExternalUIA(INSTALLUI_HANDLERA, DWORD, LPVOID);
+INSTALLUI_HANDLERW WINAPI MsiSetExternalUIW(INSTALLUI_HANDLERW, DWORD, LPVOID);
+#define MsiSetExternalUI WINELIB_NAME_AW(MsiSetExternalUI)
+
+INSTALLSTATE WINAPI MsiGetComponentPathA(LPCSTR, LPCSTR, LPSTR, LPDWORD);
+INSTALLSTATE WINAPI MsiGetComponentPathW(LPCWSTR, LPCWSTR, LPWSTR, LPDWORD);
+#define MsiGetComponentPath WINELIB_NAME_AW(MsiGetComponentPath)
+
+INSTALLSTATE WINAPI MsiQueryFeatureStateA(LPCSTR, LPCSTR);
+INSTALLSTATE WINAPI MsiQueryFeatureStateW(LPCWSTR, LPCWSTR);
+#define MsiQueryFeatureState WINELIB_NAME_AW(MsiQueryFeatureState)
+
+UINT WINAPI MsiGetFeatureUsageA(LPCSTR, LPCSTR, LPDWORD, LPWORD);
+UINT WINAPI MsiGetFeatureUsageW(LPCWSTR, LPCWSTR, LPDWORD, LPWORD);
+#define MsiGetFeatureUsage WINELIB_NAME_AW(MsiGetFeatureUsage)
+
+UINT WINAPI MsiEnumRelatedProductsA(LPCSTR, DWORD, DWORD, LPSTR);
+UINT WINAPI MsiEnumRelatedProductsW(LPCWSTR, DWORD, DWORD, LPWSTR);
+#define MsiEnumRelatedProducts WINELIB_NAME_AW(MsiEnumRelatedProducts)
+
+UINT WINAPI MsiProvideAssemblyA(LPCSTR, LPCSTR, DWORD, DWORD, LPSTR, LPDWORD);
+UINT WINAPI MsiProvideAssemblyW(LPCWSTR, LPCWSTR, DWORD, DWORD, LPWSTR, LPDWORD);
+#define MsiProvideAssembly WINELIB_NAME_AW(MsiProvideAssembly)
+
+UINT WINAPI MsiEnumComponentQualifiersA(LPCSTR, DWORD, LPSTR, LPDWORD, LPSTR, LPDWORD);
+UINT WINAPI MsiEnumComponentQualifiersW(LPCWSTR, DWORD, LPWSTR, LPDWORD, LPWSTR, LPDWORD);
+#define MsiEnumComponentQualifiers WINELIB_NAME_AW(MsiEnumComponentQualifiers)
+
+UINT WINAPI MsiGetFileVersionA(LPCSTR, LPSTR, LPDWORD, LPSTR, LPDWORD);
+UINT WINAPI MsiGetFileVersionW(LPCWSTR, LPWSTR, LPDWORD, LPWSTR, LPDWORD);
+#define MsiGetFileVersion WINELIB_NAME_AW(MsiGetFileVersion)
+
+UINT WINAPI MsiMessageBoxA(HWND, LPCSTR, LPCSTR, UINT, WORD, DWORD);
+UINT WINAPI MsiMessageBoxW(HWND, LPCWSTR, LPCWSTR, UINT, WORD, DWORD);
+#define MsiMessageBox WINELIB_NAME_AW(MsiMessageBox)
+
+UINT WINAPI MsiProvideQualifiedComponentExA(LPCSTR, LPCSTR, DWORD, LPCSTR, DWORD, DWORD, LPSTR, LPDWORD);
+UINT WINAPI MsiProvideQualifiedComponentExW(LPCWSTR, LPCWSTR, DWORD, LPCWSTR, DWORD, DWORD, LPWSTR, LPDWORD);
+#define MsiProvideQualifiedComponentEx WINELIB_NAME_AW(MsiProvideQualifiedComponentEx)
+
+UINT WINAPI MsiProvideQualifiedComponentA(LPCSTR, LPCSTR, DWORD, LPSTR, LPDWORD);
+UINT WINAPI MsiProvideQualifiedComponentW(LPCWSTR, LPCWSTR, DWORD, LPWSTR, LPDWORD);
+#define MsiProvideQualifiedComponent WINELIB_NAME_AW(MsiProvideQualifiedComponent)
+
+USERINFOSTATE WINAPI MsiGetUserInfoA(LPCSTR, LPSTR, LPDWORD, LPSTR, LPDWORD, LPSTR, LPDWORD);
+USERINFOSTATE WINAPI MsiGetUserInfoW(LPCWSTR, LPWSTR, LPDWORD, LPWSTR, LPDWORD, LPWSTR, LPDWORD);
+#define MsiGetUserInfo WINELIB_NAME_AW(MsiGetUserInfo)
+
+UINT WINAPI MsiCollectUserInfoA(LPCSTR);
+UINT WINAPI MsiCollectUserInfoW(LPCWSTR);
+#define MsiCollectUserInfo WINELIB_NAME_AW(MsiCollectUserInfo)
+
+UINT WINAPI MsiReinstallFeatureA(LPCSTR, LPCSTR, DWORD);
+UINT WINAPI MsiReinstallFeatureW(LPCWSTR, LPCWSTR, DWORD);
+#define MsiReinstallFeature WINELIB_NAME_AW(MsiReinstallFeature)
+
+UINT WINAPI MsiGetShortcutTargetA(LPCSTR, LPSTR, LPSTR, LPSTR);
+UINT WINAPI MsiGetShortcutTargetW(LPCWSTR, LPWSTR, LPWSTR, LPWSTR);
+#define MsiGetShortcutTarget WINELIB_NAME_AW(MsiGetShortcutTarget)
+
+INSTALLSTATE WINAPI MsiUseFeatureW(LPCWSTR, LPCWSTR);
+INSTALLSTATE WINAPI MsiUseFeatureA(LPCSTR, LPCSTR);
+#define MsiUseFeature WINELIB_NAME_AW(MsiUseFeature)
+
+INSTALLSTATE WINAPI MsiUseFeatureExW(LPCWSTR, LPCWSTR, DWORD, DWORD);
+INSTALLSTATE WINAPI MsiUseFeatureExA(LPCSTR, LPCSTR, DWORD, DWORD);
+#define MsiUseFeatureEx WINELIB_NAME_AW(MsiUseFeatureEx)
+
+HRESULT WINAPI MsiGetFileSignatureInformationA(LPCSTR, DWORD, PCCERT_CONTEXT*, LPBYTE, LPDWORD);
+HRESULT WINAPI MsiGetFileSignatureInformationW(LPCWSTR, DWORD, PCCERT_CONTEXT*, LPBYTE, LPDWORD);
+#define MsiGetFileSignatureInformation WINELIB_NAME_AW(MsiGetFileSignatureInformation)
+
+INSTALLSTATE WINAPI MsiLocateComponentA(LPCSTR, LPSTR, LPDWORD);
+INSTALLSTATE WINAPI MsiLocateComponentW(LPCWSTR, LPWSTR, LPDWORD);
+#define  MsiLocateComponent WINELIB_NAME_AW(MsiLocateComponent)
+
+UINT WINAPI MsiSourceListAddSourceA(LPCSTR, LPCSTR, DWORD, LPCSTR);
+UINT WINAPI MsiSourceListAddSourceW(LPCWSTR, LPCWSTR, DWORD, LPCWSTR);
+#define     MsiSourceListAddSource WINELIB_NAME_AW(MsiSourceListAddSource)
+
+UINT WINAPI MsiSourceListEnumMediaDisksA(LPCSTR, LPCSTR, MSIINSTALLCONTEXT, DWORD, DWORD, LPDWORD,
+                                         LPSTR, LPDWORD, LPSTR, LPDWORD);
+UINT WINAPI MsiSourceListEnumMediaDisksW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, DWORD, DWORD, LPDWORD,
+                                         LPWSTR, LPDWORD, LPWSTR, LPDWORD);
+#define     MsiSourceListEnumMediaDisks WINELIB_NAME_AW(MsiSourceListEnumMediaDisks)
+
+UINT WINAPI MsiSourceListEnumSourcesA(LPCSTR, LPCSTR, MSIINSTALLCONTEXT, DWORD, DWORD, LPSTR, LPDWORD);
+UINT WINAPI MsiSourceListEnumSourcesW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, DWORD, DWORD, LPWSTR, LPDWORD);
+#define     MsiSourceListEnumSources WINELIB_NAME_AW(MsiSourceListEnumSources)
+
+UINT WINAPI MsiSourceListClearAllA(LPCSTR, LPCSTR, DWORD);
+UINT WINAPI MsiSourceListClearAllW(LPCWSTR, LPCWSTR, DWORD);
+#define     MsiSourceListClearAll WINELIB_NAME_AW(MsiSourceListClearAll)
+
+UINT WINAPI MsiSourceListGetInfoA(LPCSTR, LPCSTR, MSIINSTALLCONTEXT, DWORD, LPCSTR, LPSTR, LPDWORD);
+UINT WINAPI MsiSourceListGetInfoW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, DWORD, LPCWSTR, LPWSTR, LPDWORD);
+#define     MsiSourceListGetInfo WINELIB_NAME_AW(MsiSourceListGetInfo)
+
+UINT WINAPI MsiSourceListSetInfoA(LPCSTR, LPCSTR, MSIINSTALLCONTEXT, DWORD, LPCSTR, LPCSTR);
+UINT WINAPI MsiSourceListSetInfoW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, DWORD, LPCWSTR, LPCWSTR);
+#define     MsiSourceListSetInfo WINELIB_NAME_AW(MsiSourceListSetInfo)
+
+UINT WINAPI MsiSourceListAddSourceExA(LPCSTR, LPCSTR, MSIINSTALLCONTEXT, DWORD, LPCSTR, DWORD);
+UINT WINAPI MsiSourceListAddSourceExW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, DWORD, LPCWSTR, DWORD);
+#define     MsiSourceListAddSourceEx WINELIB_NAME_AW(MsiSourceListAddSourceEx)
+
+UINT WINAPI MsiSourceListAddMediaDiskA(LPCSTR, LPCSTR, MSIINSTALLCONTEXT, DWORD, DWORD, LPCSTR, LPCSTR);
+UINT WINAPI MsiSourceListAddMediaDiskW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, DWORD, DWORD, LPCWSTR, LPCWSTR);
+#define     MsiSourceListAddMediaDisk WINELIB_NAME_AW(MsiSourceListAddMediaDisk)
+
+UINT WINAPI MsiEnumPatchesA(LPCSTR, DWORD, LPSTR, LPSTR, LPDWORD);
+UINT WINAPI MsiEnumPatchesW(LPCWSTR, DWORD, LPWSTR, LPWSTR, LPDWORD);
+#define     MsiEnumPatches WINELIB_NAME_AW(MsiEnumPatches)
+
+UINT WINAPI MsiEnumPatchesExA(LPCSTR, LPCSTR, DWORD, DWORD, DWORD, LPSTR, LPSTR,
+                              MSIINSTALLCONTEXT*, LPSTR, LPSTR);
+UINT WINAPI MsiEnumPatchesExW(LPCWSTR, LPCWSTR, DWORD, DWORD, DWORD, LPWSTR, LPWSTR,
+                              MSIINSTALLCONTEXT*, LPWSTR, LPWSTR);
+#define     MsiEnumPatchesEx WINELIB_NAME_AW(MsiEnumPatchesEx)
+
+UINT WINAPI MsiGetFileHashA(LPCSTR, DWORD, PMSIFILEHASHINFO);
+UINT WINAPI MsiGetFileHashW(LPCWSTR, DWORD, PMSIFILEHASHINFO);
+#define     MsiGetFileHash WINELIB_NAME_AW(MsiGetFileHash)
+
+UINT WINAPI MsiAdvertiseScriptA(LPCSTR, DWORD, PHKEY, BOOL);
+UINT WINAPI MsiAdvertiseScriptW(LPCWSTR, DWORD, PHKEY, BOOL);
+#define     MsiAdvertiseScript WINELIB_NAME_AW(MsiAdvertiseScript)
+
+UINT WINAPI MsiIsProductElevatedA(LPCSTR, BOOL *);
+UINT WINAPI MsiIsProductElevatedW(LPCWSTR, BOOL *);
+#define     MsiIsProductElevated WINELIB_NAME_AW(MsiIsProductElevated)
+
+UINT WINAPI MsiDatabaseMergeA(MSIHANDLE, MSIHANDLE, LPCSTR);
+UINT WINAPI MsiDatabaseMergeW(MSIHANDLE, MSIHANDLE, LPCWSTR);
+#define     MsiDatabaseMerge WINELIB_NAME_AW(MsiDatabaseMerge)
+
+UINT WINAPI MsiInstallMissingComponentA(LPCSTR, LPCSTR, INSTALLSTATE);
+UINT WINAPI MsiInstallMissingComponentW(LPCWSTR, LPCWSTR, INSTALLSTATE);
+#define     MsiInstallMissingComponent WINELIB_NAME_AW(MsiInstallMissingComponent)
+
+UINT WINAPI MsiDetermineApplicablePatchesA(LPCSTR, DWORD, PMSIPATCHSEQUENCEINFOA);
+UINT WINAPI MsiDetermineApplicablePatchesW(LPCWSTR, DWORD, PMSIPATCHSEQUENCEINFOW);
+#define     MsiDetermineApplicablePatches WINELIB_NAME_AW(MsiDetermineApplicablePatches)
+
+/* Non Unicode */
+UINT WINAPI MsiCloseHandle(MSIHANDLE);
+UINT WINAPI MsiCloseAllHandles(void);
+INSTALLUILEVEL WINAPI MsiSetInternalUI(INSTALLUILEVEL, HWND*);
+UINT WINAPI MsiSetExternalUIRecord(INSTALLUI_HANDLER_RECORD, DWORD, LPVOID, PINSTALLUI_HANDLER_RECORD);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_MSI_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msidefs.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msidefs.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msidefs.h	(revision 16410)
@@ -0,0 +1,268 @@
+/*
+ * Copyright (C) 2005 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_MSIDEFS_H
+#define __WINE_MSIDEFS_H
+
+enum msidbUpgradeAttributes {
+    msidbUpgradeAttributesMigrateFeatures = 0x0000001,
+    msidbUpgradeAttributesOnlyDetect = 0x00000002,
+    msidbUpgradeAttributesIgnoreRemoveFailure = 0x00000004,
+    msidbUpgradeAttributesVersionMinInclusive = 0x00000100,
+    msidbUpgradeAttributesVersionMaxInclusive = 0x00000200,
+    msidbUpgradeAttributesLanguagesExclusive = 0x00000400
+};
+
+enum msidbFileAttributes {
+    msidbFileAttributesReadOnly = 0x00000001,
+    msidbFileAttributesHidden = 0x00000002,
+    msidbFileAttributesSystem = 0x00000004,
+    msidbFileAttributesVital = 0x00000200,
+    msidbFileAttributesChecksum = 0x00000400,
+    msidbFileAttributesPatchAdded = 0x00001000,
+    msidbFileAttributesNoncompressed = 0x00002000,
+    msidbFileAttributesCompressed = 0x00004000
+};
+        
+enum msidbDialogAttributes {
+    msidbDialogAttributesVisible = 0x00000001,
+    msidbDialogAttributesModal = 0x00000002,
+    msidbDialogAttributesMinimize = 0x00000004,
+    msidbDialogAttributesSysModal = 0x00000008,
+    msidbDialogAttributesKeepModeless = 0x00000010,
+    msidbDialogAttributesTrackDiskSpace = 0x00000020,
+    msidbDialogAttributesUseCustomPalette = 0x00000040,
+    msidbDialogAttributesRTLRO = 0x00000080,
+    msidbDialogAttributesRightAligned = 0x00000100,
+    msidbDialogAttributesLeftScroll = 0x00000200,
+    msidbDialogAttributesBidi = 0x00000380,
+    msidbDialogAttributesError = 0x00010000
+};
+
+enum msidbControlAttributes {
+    msidbControlAttributesVisible = 0x00000001,
+    msidbControlAttributesEnabled = 0x00000002,
+    msidbControlAttributesSunken = 0x00000004,
+    msidbControlAttributesIndirect = 0x00000008,
+    msidbControlAttributesInteger = 0x00000010,
+    msidbControlAttributesRTLRO = 0x00000020,
+    msidbControlAttributesRightAligned = 0x00000040,
+    msidbControlAttributesLeftScroll = 0x00000080,
+    msidbControlAttributesBiDi = 0x000000c0,
+
+    msidbControlAttributesTransparent = 0x00010000,
+    msidbControlAttributesNoPrefix = 0x00020000,
+    msidbControlAttributesNoWrap = 0x00040000,
+    msidbControlAttributesFormatSize = 0x00080000,
+    msidbControlAttributesUsersLanguage = 0x00100000,
+
+    msidbControlAttributesMultiline = 0x00010000,
+    msidbControlAttributesPasswordInput = 0x00200000,
+
+    msidbControlAttributesProgress95 = 0x00010000,
+
+    msidbControlAttributesRemovableVolume = 0x00010000,
+    msidbControlAttributesFixedVolume = 0x00020000,
+    msidbControlAttributesRemoteVolume = 0x00040000,
+    msidbControlAttributesCDROMVolume = 0x00080000,
+    msidbControlAttributesRAMdiskVolume = 0x00100000,
+    msidbControlAttributesFloppyVolume = 0x00200000,
+    msidbControlShowRollbackCost = 0x00400000,
+
+    msidbControlAttributesSorted = 0x00010000,
+    msidbControlAttributesComboList = 0x00020000,
+
+    msidbControlAttributesImageHandle = 0x00010000,
+    msidbControlAttributesPushLike = 0x00020000,
+    msidbControlAttributesBitmap = 0x00040000,
+    msidbControlAttributesIcon = 0x00080000,
+    msidbControlAttributesFixedSize = 0x00100000,
+    msidbControlAttributesIconSize16 = 0x00200000,
+    msidbControlAttributesIconSize32 = 0x00400000,
+    msidbControlAttributesIconSize48 = 0x00600000,
+
+    msidbControlAttributesHasBorder = 0x01000000,
+};
+
+enum msidbTextStyleStyleBits
+{
+    msidbTextStyleStyleBitsBold = 0x00000001,
+    msidbTextStyleStyleBitsItalic = 0x00000002,
+    msidbTextStyleStyleBitsUnderline = 0x00000004,
+    msidbTextStyleStyleBitsStrike = 0x00000008,
+};
+
+enum msidbCustomActionType
+{
+    msidbCustomActionTypeDll = 0x00000001,
+    msidbCustomActionTypeExe = 0x00000002,
+    msidbCustomActionTypeTextData = 0x00000003,
+    msidbCustomActionTypeJScript = 0x00000005,
+    msidbCustomActionTypeVBScript = 0x00000006,
+    msidbCustomActionTypeInstall = 0x00000007,
+
+    msidbCustomActionTypeBinaryData = 0x00000000,
+    msidbCustomActionTypeSourceFile = 0x00000010,
+    msidbCustomActionTypeDirectory = 0x00000020,
+    msidbCustomActionTypeProperty = 0x00000030,
+
+    msidbCustomActionTypeContinue = 0x00000040,
+    msidbCustomActionTypeAsync = 0x00000080,
+
+    msidbCustomActionTypeFirstSequence = 0x00000100,
+    msidbCustomActionTypeOncePerProcess = 0x00000200,
+    msidbCustomActionTypeClientRepeat = 0x00000300,
+    msidbCustomActionTypeInScript = 0x00000400,
+
+    msidbCustomActionTypeRollback = 0x00000100,
+    msidbCustomActionTypeCommit = 0x00000200,
+
+    msidbCustomActionTypeNoImpersonate = 0x00000800,
+    msidbCustomActionTypeTSAware = 0x00004000,
+
+    msidbCustomActionType64BitScript = 0x00001000,
+    msidbCustomActionTypeHideTarget = 0x00002000
+};
+
+enum msidbFeatureAttributes
+{
+    msidbFeatureAttributesFavorLocal = 0x00000000,
+    msidbFeatureAttributesFavorSource = 0x00000001,
+    msidbFeatureAttributesFollowParent = 0x00000002,
+    msidbFeatureAttributesFavorAdvertise = 0x00000004,
+    msidbFeatureAttributesDisallowAdvertise = 0x00000008,
+    msidbFeatureAttributesUIDisallowAbsent = 0x00000010,
+    msidbFeatureAttributesNoUnsupportedAdvertise = 0x00000020
+};
+
+enum msidbComponentAttributes
+{
+    msidbComponentAttributesLocalOnly = 0x00000000,
+    msidbComponentAttributesSourceOnly = 0x00000001,
+    msidbComponentAttributesOptional = 0x00000002,
+    msidbComponentAttributesRegistryKeyPath = 0x00000004,
+    msidbComponentAttributesSharedDllRefCount = 0x00000008,
+    msidbComponentAttributesPermanent = 0x00000010,
+    msidbComponentAttributesODBCDataSource = 0x00000020,
+    msidbComponentAttributesTransitive = 0x00000040,
+    msidbComponentAttributesNeverOverwrite = 0x00000080,
+    msidbComponentAttributes64bit = 0x00000100
+};
+
+enum msidbODBCDataSourceRegistration
+{
+    msidbODBCDataSourceRegistrationPerMachine = 0x00000000,
+    msidbODBCDataSourceRegistrationPerUser = 0x00000001
+};
+
+enum msidbRegistryRoot
+{
+    msidbRegistryRootClassesRoot = 0,
+    msidbRegistryRootCurrentUser = 1,
+    msidbRegistryRootLocalMachine = 2,
+    msidbRegistryRootUsers = 3,
+};
+
+enum msidbLocatorType
+{
+    msidbLocatorTypeDirectory = 0x000,
+    msidbLocatorTypeFileName = 0x001,
+    msidbLocatorTypeRawValue = 0x002,
+    msidbLocatorType64bit = 0x010,
+};
+
+enum msidbServiceControlEvent
+{
+    msidbServiceControlEventStart = 0x00000001,
+    msidbServiceControlEventStop = 0x00000002,
+    msidbServiceControlEventDelete = 0x00000008,
+    msidbServiceControlEventUninstallStart = 0x00000010,
+    msidbServiceControlEventUninstallStop = 0x00000020,
+    msidbServiceControlEventUninstallDelete = 0x00000080,
+};
+
+enum msidbMoveFileOptions
+{
+    msidbMoveFileOptionsMove = 0x00000001,
+};
+
+enum msidbAssemblyAttributes
+{
+    msidbAssemblyAttributesURT = 0x00000000,
+    msidbAssemblyAttributesWin32 = 0x00000001,
+};
+
+enum msidbSumInfoSourceType
+{
+    msidbSumInfoSourceTypeSFN = 0x00000001,
+    msidbSumInfoSourceTypeCompressed = 0x00000002,
+    msidbSumInfoSourceTypeAdminImage = 0x00000004,
+    msidbSumInfoSourceTypeLUAPackage = 0x00000008,
+};
+
+enum msidbRemoveFileInstallMode
+{
+    msidbRemoveFileInstallModeOnInstall = 0x00000001,
+    msidbRemoveFileInstallModeOnRemove = 0x00000002,
+    msidbRemoveFileInstallModeOnBoth = 0x00000003,
+};
+
+/*
+ * Windows SDK braindamage alert
+ *
+ * PID_DICTIONARY and PID_CODEPAGE are defined by propidl.h too
+ * PID_SECURITY is defined in propidl.h with a different value!
+ * So these need to be undefined first.
+ */
+#ifdef PID_DICTIONARY
+#undef PID_DICTIONARY
+#endif
+
+#ifdef PID_CODEPAGE
+#undef PID_CODEPAGE
+#endif
+
+#ifdef PID_SECURITY
+#undef PID_SECURITY
+#endif
+
+#define PID_DICTIONARY 0
+#define PID_CODEPAGE 1
+#define PID_TITLE 2
+#define PID_SUBJECT 3
+#define PID_AUTHOR 4
+#define PID_KEYWORDS 5
+#define PID_COMMENTS 6
+#define PID_TEMPLATE 7
+#define PID_LASTAUTHOR 8
+#define PID_REVNUMBER 9
+#define PID_EDITTIME 10
+#define PID_LASTPRINTED 11
+#define PID_CREATE_DTM 12
+#define PID_LASTSAVE_DTM 13
+#define PID_PAGECOUNT 14
+#define PID_WORDCOUNT 15
+#define PID_CHARCOUNT 16
+#define PID_THUMBNAIL 17
+#define PID_APPNAME 18
+#define PID_SECURITY 19
+#define PID_MSIVERSION PID_PAGECOUNT
+#define PID_MSISOURCE PID_WORDCOUNT
+#define PID_MSIRESTRICT PID_CHARCOUNT
+
+#endif /* __WINE_MSIDEFS_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msinkaut.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msinkaut.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msinkaut.idl	(revision 16410)
@@ -0,0 +1,1009 @@
+/* Copyright (C) 2007 C John Klehm
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "oaidl.idl";
+import "ocidl.idl";
+
+[
+    uuid(7D868ACD-1A5D-4A47-A247-F39741353012),
+    version(1.0)
+]
+library MSINKAUTLib
+{
+    importlib("stdole2.tlb");
+
+    typedef float single;
+
+    typedef enum InkBoundingBoxMode {
+        IBBM_Default = 0,
+        IBBM_NoCurveFit = 1,
+        IBBM_CurveFit = 2,
+        IBBM_PointsOnly = 3,
+        IBBM_Union = 4
+    } InkBoundingBoxMode;
+
+    typedef enum InkExtractFlags {
+        IEF_CopyFromOriginal = 0x0,
+        IEF_RemoveFromOriginal = 0x1,
+        IEF_Default = IEF_RemoveFromOriginal
+    } InkExtractFlags;
+
+    typedef enum InkPersistenceFormat {
+        IPF_InkSerializeFormat = 0,
+        IPF_Base64InkSerializedFormat = 1,
+        IPF_GIF = 2,
+        IPF_Base64GIF = 3
+    } InkPersistenceFormat;
+
+    typedef enum InkPersistenceCompressionMode
+    {
+        IPCM_Default = 0,
+        IPCM_MaximumCompression = 1,
+        IPCM_NoCompression = 2
+    } InkPersistenceCompressionMode;
+
+    typedef enum InkPenTip {
+        IPT_Ball = 0,
+        IPT_Rectangle = 1
+    } InkPenTip;
+
+    typedef enum InkRasterOperation {
+        IRO_Black = 1,
+        IRO_NotMergePen,
+        IRO_MaskNotPen,
+        IRO_NotCopyPen,
+        IRO_MaskPenNot,
+        IRO_Not,
+        IRO_XOrPen,
+        IRO_NotMaskPen,
+        IRO_MaskPen,
+        IRO_NotXOrPen,
+        IRO_NoOperation,
+        IRO_MergeNotPen,
+        IRO_CopyPen,
+        IRO_MergePenNot,
+        IRO_MergePen,
+        IRO_White
+    } InkRasterOperation;
+
+    typedef enum InkClipboardModes {
+        ICB_Copy = 0,
+        ICB_Cut = 0x1,
+        ICB_DelayedCopy = 0x20,
+        ICB_ExtractOnly = 0x30,
+        ICB_Default = ICB_Copy
+    } InkClipboardModes;
+
+    typedef enum InkClipboardFormats {
+        ICF_None = 0,
+        ICF_InkSerializedFormat = 0x1,
+        ICF_SketchInk = 0x2,
+        ICF_TextInk = 0x6,
+        ICF_EnhancedMetafile = 0x8,
+        ICF_Metafile = 0x20,
+        ICF_Bitmap = 0x40,
+        ICF_PasteMask = 0x7,
+        ICF_CopyMask = 0x7f,
+        ICF_Default = ICF_CopyMask
+    } InkClipboardFormats;
+
+    typedef enum InkRecognitionConfidence
+    {
+        IRC_Strong = 0,
+        IRC_Intermediate = 1,
+        IRC_Poor = 2
+    } InkRecognitionConfidence;
+
+    [
+        odl,
+        uuid(DB489209-B7C3-411D-90F6-1548CFFF271E),
+        dual,
+        oleautomation
+    ]
+    interface IInkExtendedProperty : IDispatch {
+        [id(0x00000001), propget] HRESULT Guid([out, retval] BSTR* Guid);
+        [id(0x00000002), propget] HRESULT Data([out, retval] VARIANT* Data);
+        [id(0x00000002), propput] HRESULT Data([in] VARIANT Data);
+    };
+
+    [
+        odl,
+        uuid(89F2A8BE-95A9-4530-8B8F-88E971E3E25F),
+        dual,
+        oleautomation
+    ]
+    interface IInkExtendedProperties : IDispatch {
+        HRESULT Count([out, retval] long* Count);
+        HRESULT _NewEnum([out, retval] IUnknown** _NewEnum);
+        HRESULT Item(
+            [in] VARIANT Identifier,
+            [out, retval] IInkExtendedProperty** Item);
+        HRESULT Add(
+            [in] BSTR Guid,
+            [in] VARIANT Data,
+            [out, retval] IInkExtendedProperty** InkExtendedProperty);
+        HRESULT Remove([in] VARIANT Identifier);
+        HRESULT Clear();
+        HRESULT DoesPropertyExist(
+            [in] BSTR Guid,
+            [out, retval] VARIANT_BOOL* DoesPropertyExist);
+    };
+
+    [
+        odl,
+        uuid(BF519B75-0A15-4623-ADC9-C00D436A8092),
+        dual,
+        oleautomation
+    ]
+    interface IInkDrawingAttributes : IDispatch {
+        [id(0x00000002), propget] HRESULT Color(
+            [out, retval] long* CurrentColor);
+        [id(0x00000002), propput] HRESULT Color([in] long CurrentColor);
+        [id(0x00000003), propget] HRESULT Width(
+            [out, retval] single* CurrentWidth);
+        [id(0x00000003), propput] HRESULT Width([in] single CurrentWidth);
+        [id(0x00000001), propget] HRESULT Height(
+            [out, retval] single* CurrentHeight);
+        [id(0x00000001), propput] HRESULT Height([in] single CurrentHeight);
+        [id(0x00000004), propget] HRESULT FitToCurve(
+            [out, retval] VARIANT_BOOL* Flag);
+        [id(0x00000004), propput] HRESULT FitToCurve([in] VARIANT_BOOL Flag);
+        [id(0x00000005), propget] HRESULT IgnorePressure(
+            [out, retval] VARIANT_BOOL* Flag);
+        [id(0x00000005), propput] HRESULT IgnorePressure(
+            [in] VARIANT_BOOL Flag);
+        [id(0x00000006), propget] HRESULT AntiAliased(
+            [out, retval] VARIANT_BOOL* Flag);
+        [id(0x00000006), propput] HRESULT AntiAliased([in] VARIANT_BOOL Flag);
+        [id(0x00000007), propget] HRESULT Transparency(
+            [out, retval] long* CurrentTransparency);
+        [id(0x00000007), propput] HRESULT Transparency(
+            [in] long CurrentTransparency);
+        [id(0x00000008), propget] HRESULT RasterOperation(
+            [out, retval] InkRasterOperation* CurrentRasterOperation);
+        [id(0x00000008), propput] HRESULT RasterOperation(
+            [in] InkRasterOperation CurrentRasterOperation);
+        [id(0x00000009), propget] HRESULT PenTip(
+            [out, retval] InkPenTip* CurrentPenTip);
+        [id(0x00000009), propput] HRESULT PenTip([in] InkPenTip CurrentPenTip);
+        [id(0x0000000b), propget] HRESULT ExtendedProperties(
+            [out, retval] IInkExtendedProperties** Properties);
+        [id(0x0000000a)]          HRESULT Clone(
+            [out, retval] IInkDrawingAttributes** DrawingAttributes);
+    };
+
+cpp_quote("#ifndef _WINGDI_")
+/* already defined in wingdi.h but needed for WIDL */
+    typedef struct tagXFORM {
+        single eM11;
+        single eM12;
+        single eM21;
+        single eM22;
+        single eDx;
+        single eDy;
+    } XFORM;
+cpp_quote("#endif /* _WINGDI_ */")
+
+    [
+        odl,
+        uuid(615F1D43-8703-4565-88E2-8201D2ECD7B7),
+        dual,
+        oleautomation
+    ]
+    interface IInkTransform : IDispatch {
+        [id(0x00000001)] HRESULT Reset();
+        [id(0x00000002)] HRESULT Translate(
+            [in] single HorizontalComponent,
+            [in] single VerticalComponent);
+        [id(0x00000003)] HRESULT Rotate(
+            [in] single Degrees,
+            [in, optional, defaultvalue(0)] single x,
+            [in, optional, defaultvalue(0)] single y);
+        [id(0x00000004)] HRESULT Reflect(
+            [in] VARIANT_BOOL Horizontally,
+            [in] VARIANT_BOOL Vertically);
+        [id(0x00000005)] HRESULT Shear(
+            [in] single HorizontalComponent,
+            [in] single VerticalComponent);
+        [id(0x00000006)] HRESULT ScaleTransform(
+            [in] single HorizontalMultiplier,
+            [in] single VerticalMultiplier);
+        [id(0x0000000d)] HRESULT GetTransform(
+            [out] single* eM11,
+            [out] single* eM12,
+            [out] single* eM21,
+            [out] single* eM22,
+            [out] single* eDx,
+            [out] single* eDy);
+        [id(0x0000000e)] HRESULT SetTransform(
+            [in] single eM11,
+            [in] single eM12,
+            [in] single eM21,
+            [in] single eM22,
+            [in] single eDx,
+            [in] single eDy);
+        [id(0x00000007), propget, hidden] HRESULT eM11(
+            [out, retval] single* Value);
+        [id(0x00000007), propput, hidden] HRESULT eM11([in] single Value);
+        [id(0x00000008), propget, hidden] HRESULT eM12(
+            [out, retval] single* Value);
+        [id(0x00000008), propput, hidden] HRESULT eM12([in] single Value);
+        [id(0x00000009), propget, hidden] HRESULT eM21(
+            [out, retval] single* Value);
+        [id(0x00000009), propput, hidden] HRESULT eM21([in] single Value);
+        [id(0x0000000a), propget, hidden] HRESULT eM22(
+            [out, retval] single* Value);
+        [id(0x0000000a), propput, hidden] HRESULT eM22([in] single Value);
+        [id(0x0000000b), propget, hidden] HRESULT eDx(
+            [out, retval] single* Value);
+        [id(0x0000000b), propput, hidden] HRESULT eDx([in] single Value);
+        [id(0x0000000c), propget, hidden] HRESULT eDy(
+            [out, retval] single* Value);
+        [id(0x0000000c), propput, hidden] HRESULT eDy([in] single Value);
+        [id(0x0000000f), propget, hidden] HRESULT Data(
+            [out, retval] XFORM* XFORM);
+        [id(0x0000000f), propput, hidden] HRESULT Data([in] XFORM XFORM);
+    };
+
+    interface IInkDisp;
+
+    [
+        odl,
+        uuid(9794FF82-6071-4717-8A8B-6AC7C64A686E),
+        dual,
+        oleautomation
+    ]
+    interface IInkRectangle
+    {
+        [id(1), propget] HRESULT Top([out, retval] long* Units);
+        [id(1), propput] HRESULT Top([in] long Units);
+        [id(2), propget] HRESULT Left([out, retval] long* Units);
+        [id(2), propput] HRESULT Left([in] long Units);
+        [id(3), propget] HRESULT Bottom([out, retval] long* Units);
+        [id(3), propput] HRESULT Bottom([in] long Units);
+        [id(4), propget] HRESULT Right([out, retval] long* Units);
+        [id(4), propput] HRESULT Right([in] long Units);
+        [id(7), propget] HRESULT Data([out, retval] RECT* Rect);
+        [id(7), propput] HRESULT Data([in] RECT Rect);
+        [id(5)] HRESULT GetRectangle(
+            [out] long* Top,
+            [out] long* Left,
+            [out] long* Bottom,
+            [out] long* Right);
+        [id(6)] HRESULT SetRectangle(
+            [in] long Top,
+            [in] long Left,
+            [in] long Bottom,
+            [in] long Right);
+    };
+
+    interface IInkStrokes;
+
+    typedef enum {
+        TPMU_Default,
+        TPMU_Inches,
+        TPMU_Centimeters,
+        TPMU_Degrees,
+        TPMU_Radians,
+        TPMU_Seconds,
+        TPMU_Pounds,
+        TPMU_Grams
+    } TabletPropertyMetricUnit;
+
+    [
+        odl,
+        uuid(43242FEA-91D1-4A72-963E-FBB91829CFA2),
+        dual,
+        oleautomation
+    ]
+    interface IInkStrokeDisp : IDispatch {
+        [id(0x00000002), propget]    HRESULT Id([out, retval] long* Id);
+        [id(0x0000000d), propget]    HRESULT BezierPoints(
+            [out, retval] VARIANT* Points);
+        [id(0x00000004), propget]    HRESULT DrawingAttributes(
+            [out, retval] IInkDrawingAttributes** DrawAttrs);
+        [id(0x00000004), propputref] HRESULT DrawingAttributes(
+            [in] IInkDrawingAttributes* DrawAttrs);
+        [id(0x0000000c), propget]    HRESULT Ink([out, retval] IInkDisp** Ink);
+        [id(0x0000000b), propget]    HRESULT ExtendedProperties(
+            [out, retval] IInkExtendedProperties** Properties);
+        [id(0x0000000e), propget]    HRESULT PolylineCusps(
+            [out, retval] VARIANT* Cusps);
+        [id(0x0000000f), propget]    HRESULT BezierCusps(
+            [out, retval] VARIANT* Cusps);
+        [id(0x00000010), propget]    HRESULT SelfIntersections(
+            [out, retval] VARIANT* Intersections);
+        [id(0x00000011), propget]    HRESULT PacketCount(
+            [out, retval] long* plCount);
+        [id(0x00000012), propget]    HRESULT PacketSize(
+            [out, retval] long* plSize);
+        [id(0x00000013), propget]    HRESULT PacketDescription(
+            [out, retval] VARIANT* PacketDescription);
+        [id(0x00000014), propget]    HRESULT Deleted(
+            [out, retval] VARIANT_BOOL* Deleted);
+        [id(0x00000003)]             HRESULT GetBoundingBox(
+            [in, optional, defaultvalue(0)] InkBoundingBoxMode BoundingBoxMode,
+            [out, retval] IInkRectangle** Rectangle);
+        [id(0x00000005)]             HRESULT FindIntersections(
+            [in] IInkStrokes* Strokes,
+            [out, retval] VARIANT* Intersections);
+        [id(0x00000006)]             HRESULT GetRectangleIntersections(
+            [in] IInkRectangle* Rectangle,
+            [out, retval] VARIANT* Intersections);
+        [id(0x00000007)]             HRESULT Clip(
+            [in] IInkRectangle* Rectangle);
+        [id(0x00000008)]             HRESULT HitTestCircle(
+            [in] long x,
+            [in] long y,
+            [in] single radius,
+            [out, retval] VARIANT_BOOL* Intersects);
+        [id(0x00000009)]             HRESULT NearestPoint(
+            [in] long x,
+            [in] long y,
+            [in, out, optional, defaultvalue(0)] single* Distance,
+            [out, retval] single* Point);
+        [id(0x0000000a)]             HRESULT Split(
+            [in] single SplitAt,
+            [out, retval] IInkStrokeDisp** NewStroke);
+        [id(0x00000015)]             HRESULT GetPacketDescriptionPropertyMetrics(
+            [in] BSTR propertyName,
+            [out] long* Minimum,
+            [out] long* Maximum,
+            [out] TabletPropertyMetricUnit* Units,
+            [out] single* Resolution);
+        [id(0x00000016)]             HRESULT GetPoints(
+            [in, optional, defaultvalue(0)] long Index,
+            [in, optional, defaultvalue(-1)] long Count,
+            [out, retval] VARIANT* Points);
+        [id(0x00000017)]             HRESULT SetPoints(
+            [in] VARIANT Points,
+            [in, optional, defaultvalue(0)] long Index,
+            [in, optional, defaultvalue(-1)] long Count,
+            [out, retval] long* NumberOfPointsSet);
+        [id(0x00000018)]             HRESULT GetPacketData(
+            [in, optional, defaultvalue(0)] long Index,
+            [in, optional, defaultvalue(-1)] long Count,
+            [out, retval] VARIANT* PacketData);
+        [id(0x00000019)]             HRESULT GetPacketValuesByProperty(
+            [in] BSTR propertyName,
+            [in, optional, defaultvalue(0)] long Index,
+            [in, optional, defaultvalue(-1)] long Count,
+            [out, retval] VARIANT* PacketValues);
+        [id(0x0000001a)]             HRESULT SetPacketValuesByProperty(
+            [in] BSTR bstrPropertyName,
+            [in] VARIANT PacketValues,
+            [in, optional, defaultvalue(0)] long Index,
+            [in, optional, defaultvalue(-1)] long Count,
+            [out, retval] long* NumberOfPacketsSet);
+        [id(0x0000001b)]             HRESULT GetFlattenedBezierPoints(
+            [in, optional, defaultvalue(0)] long FittingError,
+            [out, retval] VARIANT* FlattenedBezierPoints);
+        [id(0x0000001d)]             HRESULT Transform(
+            [in] IInkTransform* Transform,
+            [in, optional, defaultvalue(0)] VARIANT_BOOL ApplyOnPenWidth);
+        [id(0x0000001c)]             HRESULT ScaleToRectangle(
+            [in] IInkRectangle* Rectangle);
+        [id(0x0000001e)]             HRESULT Move(
+            [in] single HorizontalComponent,
+            [in] single VerticalComponent);
+        [id(0x0000001f)]             HRESULT Rotate(
+            [in] single Degrees,
+            [in, optional, defaultvalue(0)] single x,
+            [in, optional, defaultvalue(0)] single y);
+        [id(0x00000020)]             HRESULT Shear(
+            [in] single HorizontalMultiplier,
+            [in] single VerticalMultiplier);
+        [id(0x00000021)]             HRESULT ScaleTransform(
+            [in] single HorizontalMultiplier,
+            [in] single VerticalMultiplier);
+    };
+
+    interface IInkRecognitionResult;
+
+    [
+        odl,
+        uuid(F1F4C9D8-590A-4963-B3AE-1935671BB6F3),
+        dual,
+        oleautomation
+    ]
+    interface IInkStrokes : IDispatch {
+        [propget]                   HRESULT Count(
+            [out, retval] long *Count);
+        [propget, restricted]       HRESULT _NewEnum(
+            [out, retval] IUnknown **_NewEnum);
+        [propget]                   HRESULT Ink(
+            [out, retval] IInkDisp **Ink);
+        [propget]                   HRESULT RecognitionResult(
+            [out, retval] IInkRecognitionResult **RecognitionResult);
+        HRESULT ToString(
+            [out, retval] BSTR *ToString);
+        HRESULT Item(
+            [in] long Index,
+            [out, retval] IInkStrokeDisp **Stroke);
+        HRESULT Add(
+            [in] IInkStrokeDisp *InkStroke);
+        HRESULT AddStrokes(
+            [in] IInkStrokes *InkStrokes);
+        HRESULT Remove(
+            [in] IInkStrokeDisp *InkStroke);
+        HRESULT RemoveStrokes(
+            [in] IInkStrokes *InkStrokes);
+        HRESULT ModifyDrawingAttributes(
+            [in] IInkDrawingAttributes *DrawAttrs);
+        HRESULT GetBoundingBox(
+            [in] InkBoundingBoxMode BoundingBoxMode,
+            [out, retval] IInkRectangle **BoundingBox);
+        HRESULT Transform(
+            [in] IInkTransform *Transform,
+            [in] VARIANT_BOOL ApplyOnPenWidth);
+        HRESULT ScaleToRectangle(
+            [in] IInkRectangle *Rectangle);
+        HRESULT Move(
+            [in] float HorizontalComponent,
+            [in] float VerticalComponent);
+        HRESULT Rotate(
+            [in] float Degrees,
+            [in] float x,
+            [in] float y);
+        HRESULT Shear(
+            [in] float HorizontalMultiplier,
+            [in] float VerticalMultiplier);
+        HRESULT ScaleTransform(
+            [in] float HorizontalMultiplier,
+            [in] float VerticalMultiplier);
+        HRESULT Clip(
+            [in] IInkRectangle *Rectangle);
+        HRESULT RemoveRecognitionResult();
+    };
+
+    [
+        odl,
+        uuid(7E23A88F-C30E-420f-9BDB-28902543F0C1),
+        dual,
+        oleautomation
+    ]
+    interface IInkCustomStrokes : IDispatch {
+        [propget]               HRESULT Count(
+            [out, retval] long *Count);
+        [propget]               HRESULT _NewEnum(
+            [out, retval] IUnknown **_NewEnum);
+        HRESULT Item(
+            [in] VARIANT Identifier,
+            [out, retval] IInkStrokes **Strokes);
+        HRESULT Add(
+            [in] BSTR Name,
+            [in] IInkStrokes *Strokes);
+        HRESULT Remove(
+            [in] VARIANT Identifier);
+        HRESULT Clear();
+    };
+
+    interface IInkRecognitionAlternate;
+    interface IInkRecognitionAlternates;
+
+    [
+        odl,
+        uuid(3BC129A8-86CD-45ad-BDE8-E0D32D61C16D),
+        dual,
+        oleautomation
+    ]
+    interface IInkRecognitionResult : IDispatch {
+        [propget]               HRESULT TopString(
+            [out, retval] BSTR *TopString);
+        [propget]               HRESULT TopAlternate(
+            [out, retval] IInkRecognitionAlternate **TopAlternate);
+        [propget]               HRESULT TopConfidence(
+            [out, retval] InkRecognitionConfidence *TopConfidence);
+        [propget]               HRESULT Strokes(
+            [out, retval] IInkStrokes **Strokes);
+        HRESULT AlternatesFromSelection(
+            [in] long selectionStart,
+            [in] long selectionLength,
+            [in] long maximumAlternates,
+            [out, retval] IInkRecognitionAlternates **AlternatesFromSelection);
+        HRESULT ModifyTopAlternate(
+            [in] IInkRecognitionAlternate *Alternate);
+        HRESULT SetResultOnStrokes();
+    };
+
+    [
+        odl,
+        uuid(B7E660AD-77E4-429b-ADDA-873780D1FC4A),
+        dual,
+        oleautomation
+    ]
+    interface IInkRecognitionAlternate : IDispatch {
+        [propget]               HRESULT String(
+            [out, retval] BSTR *RecoString);
+        [propget]               HRESULT Confidence(
+            [out, retval] InkRecognitionConfidence *Confidence);
+        [propget]               HRESULT Baseline(
+            [out, retval] VARIANT *Baseline);
+        [propget]               HRESULT Midline(
+            [out, retval] VARIANT *Midline);
+        [propget]               HRESULT Ascender(
+            [out, retval] VARIANT *Ascender);
+        [propget]               HRESULT Descender(
+            [out, retval] VARIANT *Descender);
+        [propget]               HRESULT LineNumber(
+            [out, retval] long *LineNumber);
+        [propget]               HRESULT Strokes(
+            [out, retval] IInkStrokes **Strokes);
+        [propget]               HRESULT LineAlternates(
+            [out, retval] IInkRecognitionAlternates **LineAlternates);
+        [propget]               HRESULT ConfidenceAlternates(
+            [out, retval] IInkRecognitionAlternates **ConfidenceAlternates);
+        HRESULT GetStrokesFromStrokeRanges(
+            [in] IInkStrokes *Stroke,
+            [out, retval] IInkStrokes **GetStrokesFromTextRange);
+        HRESULT GetStrokesFromTextRange(
+            [in, out] long *selectionStart,
+            [in, out] long *selectionLength,
+            [out, retval] IInkStrokes **GetStrokesFromTextRange);
+        HRESULT GetTextRangeFromStrokes(
+            [in] IInkStrokes *Strokes,
+            [in, out] long *selectionStart,
+            [in, out] long *selectionLength);
+        HRESULT AlternatesWithConstantPropertyValues(
+            [in] BSTR PropertyType,
+            [out, retval] IInkRecognitionAlternates **AlternatesWithConstantPropertyValues);
+        HRESULT GetPropertyValue(
+            [in] BSTR PropertyType,
+            [out, retval] VARIANT *PropertyValue);
+    };
+
+    [
+        odl,
+        uuid(286A167F-9F19-4c61-9D53-4F07BE622B84),
+        dual,
+        oleautomation
+    ]
+    interface IInkRecognitionAlternates : IDispatch {
+    [propget]                   HRESULT Count(
+        [out, retval] long *Count);
+    [propget, restricted]       HRESULT _NewEnum(
+        [out, retval] IUnknown **_NewEnum);
+    [propget]                   HRESULT Strokes(
+        [out, retval] IInkStrokes **Strokes);
+    HRESULT Item(
+        [in] long Index,
+        [out, retval] IInkRecognitionAlternate **InkRecoAlternate);
+    };
+
+    [
+        odl,
+        uuid(9D398FA0-C4E2-4fcd-9973-975CAAF47EA6),
+        dual,
+        oleautomation
+    ]
+    interface IInkDisp : IDispatch {
+        [propget]               HRESULT Strokes(
+            [out, retval] IInkStrokes **Strokes);
+        [propget]               HRESULT ExtendedProperties(
+            [out, retval] IInkExtendedProperties **Properties);
+        [propget]               HRESULT Dirty(
+            [out, retval] VARIANT_BOOL *Dirty);
+        [propput]               HRESULT Dirty(
+            [in] VARIANT_BOOL Dirty);
+        [propget]               HRESULT CustomStrokes(
+            [out, retval] IInkCustomStrokes **CustomStrokes);
+        HRESULT GetBoundingBox(
+            [in] InkBoundingBoxMode BoundingBoxMode,
+            [out] IInkRectangle **Rectangle);
+        HRESULT DeleteStrokes(
+            [in, unique] IInkStrokes *Strokes);
+        HRESULT DeleteStroke(
+            [in] IInkStrokeDisp *Stroke);
+        HRESULT ExtractStrokes(
+            [in] IInkStrokes *Strokes,
+            [in] InkExtractFlags ExtractFlags,
+            [out, retval] IInkDisp **ExtractedInk);
+        HRESULT ExtractWithRectangle(
+            [in] IInkRectangle *Rectangle,
+            [in] InkExtractFlags ExtractFlags,
+            [out, retval] IInkDisp **ExtractedInk);
+        HRESULT Clip(
+            [in] IInkRectangle *Rectangle);
+        HRESULT Clone(
+            [out, retval] IInkDisp **NewInk);
+        HRESULT HitTestCircle(
+            [in] long X,
+            [in] long Y,
+            [in] float radius,
+            [out, retval] IInkStrokes **Strokes);
+        HRESULT HitTestWithRectangle(
+            [in] IInkRectangle *SelectionRectangle,
+            [in] float IntersectPercent,
+            [out, retval] IInkStrokes **Strokes);
+        HRESULT HitTestWithLasso(
+            [in] VARIANT Points,
+            [in] float IntersectPercent,
+            [in, out, unique] VARIANT *LassoPoints,
+            [out, retval] IInkStrokes **Strokes);
+        HRESULT NearestPoint(
+            [in] long X,
+            [in] long Y,
+            [in, out] float *PointOnStroke,
+            [in, out] float *DistanceFromPacket,
+            [out, retval] IInkStrokeDisp **Stroke);
+        HRESULT CreateStrokes(
+            [in] VARIANT StrokeIds,
+            [out, retval] IInkStrokes **Strokes);
+        HRESULT AddStrokesAtRectangle(
+            [in] IInkStrokes *SourceStrokes,
+            [in] IInkRectangle *TargetRectangle);
+        HRESULT Save(
+            [in] InkPersistenceFormat PersistenceFormat,
+            [in] InkPersistenceCompressionMode CompressionMode,
+            [out, retval] VARIANT *Data);
+        HRESULT Load(
+            [in] VARIANT Data);
+        HRESULT CreateStroke(
+            [in] VARIANT PacketData,
+            [in] VARIANT PacketDescription,
+            [out, retval] IInkStrokeDisp **Stroke);
+        HRESULT ClipboardCopyWithRectangle(
+            [in] IInkRectangle *Rectangle,
+            [in] InkClipboardFormats ClipboardFormats,
+            [in] InkClipboardModes ClipboardModes,
+            [out, retval] IDataObject **DataObject);
+        HRESULT ClipboardCopy(
+            [in] IInkStrokes *strokes,
+            [in] InkClipboardFormats ClipboardFormats,
+            [in] InkClipboardModes ClipboardModes,
+            [out, retval] IDataObject **DataObject);
+        HRESULT CanPaste(
+            [in] IDataObject *DataObject,
+            [out, retval] VARIANT_BOOL *CanPaste);
+        HRESULT ClipboardPaste(
+            [in] long x,
+            [in] long y,
+            [in, unique] IDataObject *DataObject,
+            [out, retval] IInkStrokes **Strokes);
+    };
+
+    [
+        odl,
+        uuid(E6257A9C-B511-4F4C-A8B0-A7DBC9506B83),
+        dual,
+        oleautomation
+    ]
+    interface IInkRenderer : IDispatch {
+        HRESULT GetViewTransform([in] IInkTransform* ViewTransform);
+        HRESULT SetViewTransform([in] IInkTransform* ViewTransform);
+        HRESULT GetObjectTransform([in] IInkTransform* ObjectTransform);
+        HRESULT SetObjectTransform([in] IInkTransform* ObjectTransform);
+        HRESULT Draw(
+            [in] long hDC,
+            [in] IInkStrokes* Strokes);
+        HRESULT DrawStroke(
+            [in] long hDC,
+            [in] IInkStrokeDisp* Stroke,
+            [in, optional, defaultvalue(0)]
+            IInkDrawingAttributes* DrawingAttributes);
+        HRESULT PixelToInkSpace(
+            [in] long hDC,
+            [in, out] long* x,
+            [in, out] long* y);
+        HRESULT InkSpaceToPixel(
+            [in] long hdcDisplay,
+            [in, out] long* x,
+            [in, out] long* y);
+        HRESULT PixelToInkSpaceFromPoints(
+            [in] long hDC,
+            [in, out] VARIANT* Points);
+        HRESULT InkSpaceToPixelFromPoints(
+            [in] long hDC,
+            [in, out] VARIANT* Points);
+        HRESULT Measure(
+            [in] IInkStrokes* Strokes,
+            [out, retval] IInkRectangle** Rectangle);
+        HRESULT MeasureStroke(
+            [in] IInkStrokeDisp* Stroke,
+            [in, optional, defaultvalue(0)] IInkDrawingAttributes* DrawingAttributes,
+            [out, retval] IInkRectangle** Rectangle);
+        HRESULT Move(
+            [in] single HorizontalComponent,
+            [in] single VerticalComponent);
+        HRESULT Rotate(
+            [in] single Degrees,
+            [in, optional, defaultvalue(0)] single x,
+            [in, optional, defaultvalue(0)] single y);
+        HRESULT ScaleTransform(
+            [in] single HorizontalMultiplier,
+            [in] single VerticalMultiplier,
+            [in, optional, defaultvalue(-1)] VARIANT_BOOL ApplyOnPenWidth);
+    };
+
+    typedef enum {
+        ICM_InkOnly,
+        ICM_GestureOnly,
+        ICM_InkAndGesture
+    } InkCollectionMode;
+
+    typedef enum {
+        IMP_Default,
+        IMP_Arrow,
+        IMP_Crosshair,
+        IMP_Ibeam,
+        IMP_SizeNESW,
+        IMP_SizeNS,
+        IMP_SizeNWSE,
+        IMP_SizeWE,
+        IMP_UpArrow,
+        IMP_Hourglass,
+        IMP_NoDrop,
+        IMP_ArrowHourglass,
+        IMP_ArrowQuestion,
+        IMP_SizeAll,
+        IMP_Hand,
+        IMP_Custom = 99
+    } InkMousePointer;
+
+    typedef enum {
+        THWC_Integrated = 1,
+        THWC_CursorMustTouch = 2,
+        THWC_HardProximity = 4,
+        THWC_CursorsHavePhysicalIds = 8
+    } TabletHardwareCapabilities;
+
+    [
+        odl,
+        uuid(2DE25EAA-6EF8-42D5-AEE9-185BC81B912D),
+        dual,
+        oleautomation
+    ]
+    interface IInkTablet : IDispatch {
+        [propget] HRESULT Name([out, retval] BSTR* Name);
+        [propget] HRESULT PlugAndPlayId([out, retval] BSTR* Id);
+        [propget] HRESULT MaximumInputRectangle([out, retval] IInkRectangle** Rectangle);
+        [propget] HRESULT HardwareCapabilities(
+            [out, retval] TabletHardwareCapabilities* Capabilities);
+        HRESULT IsPacketPropertySupported(
+            [in] BSTR packetPropertyName,
+            [out, retval] VARIANT_BOOL* Supported);
+        HRESULT GetPropertyMetrics(
+            [in] BSTR propertyName,
+            [out] long* Minimum,
+            [out] long* Maximum,
+            [out] TabletPropertyMetricUnit* Units,
+            [out] single* Resolution);
+    };
+
+    typedef enum {
+        ICBS_Unavailable,
+        ICBS_Up,
+        ICBS_Down
+    } InkCursorButtonState;
+
+    [
+        odl,
+        uuid(85EF9417-1D59-49B2-A13C-702C85430894),
+        dual,
+        oleautomation
+    ]
+    interface IInkCursorButton : IDispatch {
+        [propget] HRESULT Name([out, retval] BSTR* Name);
+        [propget] HRESULT Id([out, retval] BSTR* Id);
+        [propget] HRESULT State([out, retval] InkCursorButtonState* CurrentState);
+    };
+
+    [
+        odl,
+        uuid(3671CC40-B624-4671-9FA0-DB119D952D54),
+        dual,
+        oleautomation
+    ]
+    interface IInkCursorButtons : IDispatch {
+        [propget] HRESULT Count([out, retval] long* Count);
+        [propget] HRESULT _NewEnum([out, retval] IUnknown** _NewEnum);
+        HRESULT Item(
+            [in] VARIANT Identifier,
+            [out, retval] IInkCursorButton** Button);
+    };
+
+    [
+        odl,
+        uuid(AD30C630-40C5-4350-8405-9C71012FC558),
+        dual,
+        oleautomation
+    ]
+    interface IInkCursor : IDispatch {
+        [id(0x00000000), propget]    HRESULT Name([out, retval] BSTR* Name);
+        [id(0x00000001), propget]    HRESULT Id([out, retval] long* Id);
+        [id(0x00000004), propget]    HRESULT Inverted(
+            [out, retval] VARIANT_BOOL* Status);
+        [id(0x00000002), propget]    HRESULT DrawingAttributes(
+            [out, retval] IInkDrawingAttributes** Attributes);
+        [id(0x00000002), propputref] HRESULT DrawingAttributes(
+            [in] IInkDrawingAttributes* Attributes);
+        [id(0x00000005), propget]    HRESULT Tablet(
+            [out, retval] IInkTablet** Tablet);
+        [id(0x00000003), propget]    HRESULT Buttons(
+            [out, retval] IInkCursorButtons** Buttons);
+    };
+
+    [
+        odl,
+        uuid(A248C1AC-C698-4E06-9E5C-D57F77C7E647),
+        dual,
+        oleautomation
+    ]
+    interface IInkCursors : IDispatch {
+        [propget] HRESULT Count([out, retval] long* Count);
+        [propget] HRESULT _NewEnum([out, retval] IUnknown** _NewEnum);
+        HRESULT Item(
+            [in] long Index,
+            [out, retval] IInkCursor** Cursor);
+    };
+
+    typedef enum {
+        IAG_AllGestures = 0,
+        IAG_NoGesture = 61440,
+        IAG_Scratchout = 61441,
+        IAG_Triangle = 61442,
+        IAG_Square = 61443,
+        IAG_Star = 61444,
+        IAG_Check = 61445,
+        IAG_Curlicue = 61456,
+        IAG_DoubleCurlicue = 61457,
+        IAG_Circle = 61472,
+        IAG_DoubleCircle = 61473,
+        IAG_SemiCircleLeft = 61480,
+        IAG_SemiCircleRight = 61481,
+        IAG_ChevronUp = 61488,
+        IAG_ChevronDown = 61489,
+        IAG_ChevronLeft = 61490,
+        IAG_ChevronRight = 61491,
+        IAG_ArrowUp = 61496,
+        IAG_ArrowDown = 61497,
+        IAG_ArrowLeft = 61498,
+        IAG_ArrowRight = 61499,
+        IAG_Up = 61528,
+        IAG_Down = 61529,
+        IAG_Left = 61530,
+        IAG_Right = 61531,
+        IAG_UpDown = 61536,
+        IAG_DownUp = 61537,
+        IAG_LeftRight = 61538,
+        IAG_RightLeft = 61539,
+        IAG_UpLeftLong = 61540,
+        IAG_UpRightLong = 61541,
+        IAG_DownLeftLong = 61542,
+        IAG_DownRightLong = 61543,
+        IAG_UpLeft = 61544,
+        IAG_UpRight = 61545,
+        IAG_DownLeft = 61546,
+        IAG_DownRight = 61547,
+        IAG_LeftUp = 61548,
+        IAG_LeftDown = 61549,
+        IAG_RightUp = 61550,
+        IAG_RightDown = 61551,
+        IAG_Exclamation = 61604,
+        IAG_Tap = 61680,
+        IAG_DoubleTap = 61681
+    } InkApplicationGesture;
+
+    typedef enum {
+        ICEI_DefaultEvents = -1,
+        ICEI_CursorDown = 0,
+        ICEI_Stroke,
+        ICEI_NewPackets,
+        ICEI_NewInAirPackets,
+        ICEI_CursorButtonDown,
+        ICEI_CursorButtonUp,
+        ICEI_CursorInRange,
+        ICEI_CursorOutOfRange,
+        ICEI_SystemGesture,
+        ICEI_TabletAdded,
+        ICEI_TabletRemoved,
+        ICEI_MouseDown,
+        ICEI_MouseMove,
+        ICEI_MouseUp,
+        ICEI_MouseWheel,
+        ICEI_DblClick,
+        ICEI_AllEvents
+    } InkCollectorEventInterest;
+
+    [
+        odl,
+        uuid(F0F060B5-8B1F-4A7C-89EC-880692588A4F),
+        dual,
+        oleautomation
+    ]
+    interface IInkCollector : IDispatch {
+        [id(0x00000002), propget]    HRESULT hWnd(
+            [out, retval] long* CurrentWindow);
+        [id(0x00000002), propput]    HRESULT hWnd([in] long CurrentWindow);
+        [id(0x00000001), propget]    HRESULT Enabled(
+            [out, retval] VARIANT_BOOL* Collecting);
+        [id(0x00000001), propput]    HRESULT Enabled(
+            [in] VARIANT_BOOL Collecting);
+        [id(0x00000005), propget]    HRESULT DefaultDrawingAttributes(
+            [out, retval] IInkDrawingAttributes** CurrentAttributes);
+        [id(0x00000005), propputref] HRESULT DefaultDrawingAttributes(
+            [in] IInkDrawingAttributes* CurrentAttributes);
+        [id(0x00000006), propget]    HRESULT Renderer(
+            [out, retval] IInkRenderer** CurrentInkRenderer);
+        [id(0x00000006), propputref] HRESULT Renderer(
+            [in] IInkRenderer* CurrentInkRenderer);
+        [id(0x00000007), propget]    HRESULT Ink([out, retval] IInkDisp** Ink);
+        [id(0x00000007), propputref] HRESULT Ink([in] IInkDisp* Ink);
+        [id(0x00000008), propget]    HRESULT AutoRedraw(
+            [out, retval] VARIANT_BOOL* AutoRedraw);
+        [id(0x00000008), propput]    HRESULT AutoRedraw(
+            [in] VARIANT_BOOL AutoRedraw);
+        [id(0x00000009), propget]    HRESULT CollectingInk(
+            [out, retval] VARIANT_BOOL* Collecting);
+        [id(0x0000001c), propget]    HRESULT CollectionMode(
+            [out, retval] InkCollectionMode* Mode);
+        [id(0x0000001c), propput]    HRESULT CollectionMode(
+            [in] InkCollectionMode Mode);
+        [id(0x0000001f), propget]    HRESULT DynamicRendering(
+            [out, retval] VARIANT_BOOL* Enabled);
+        [id(0x0000001f), propput]    HRESULT DynamicRendering(
+            [in] VARIANT_BOOL Enabled);
+        [id(0x00000020), propget]    HRESULT DesiredPacketDescription(
+            [out, retval] VARIANT* PacketGuids);
+        [id(0x00000020), propput]    HRESULT DesiredPacketDescription(
+            [in] VARIANT PacketGuids);
+        [id(0x00000023), propget]    HRESULT MouseIcon(
+            [out, retval] IPictureDisp** MouseIcon);
+        [id(0x00000023), propput]    HRESULT MouseIcon(
+            [in] IPictureDisp* MouseIcon);
+        [id(0x00000023), propputref] HRESULT MouseIcon(
+            [in] IPictureDisp* MouseIcon);
+        [id(0x00000024), propget]    HRESULT MousePointer(
+            [out, retval] InkMousePointer* MousePointer);
+        [id(0x00000024), propput]    HRESULT MousePointer(
+            [in] InkMousePointer MousePointer);
+        [id(0x00000014), propget]    HRESULT Cursors(
+            [out, retval] IInkCursors** Cursors);
+        [id(0x00000015), propget]    HRESULT MarginX(
+            [out, retval] long* MarginX);
+        [id(0x00000015), propput]    HRESULT MarginX([in] long MarginX);
+        [id(0x00000016), propget]    HRESULT MarginY(
+            [out, retval] long* MarginY);
+        [id(0x00000016), propput]    HRESULT MarginY([in] long MarginY);
+        [id(0x00000019), propget]    HRESULT Tablet(
+            [out, retval] IInkTablet** SingleTablet);
+        [id(0x00000026), propget]    HRESULT SupportHighContrastInk(
+            [out, retval] VARIANT_BOOL* Support);
+        [id(0x00000026), propput]    HRESULT SupportHighContrastInk(
+            [in] VARIANT_BOOL Support);
+        [id(0x0000001d)]             HRESULT SetGestureStatus(
+            [in] InkApplicationGesture Gesture,
+            [in] VARIANT_BOOL Listen);
+        [id(0x0000001e)]             HRESULT GetGestureStatus(
+            [in] InkApplicationGesture Gesture,
+            [out, retval] VARIANT_BOOL* Listening);
+        [id(0x00000018)]             HRESULT GetWindowInputRectangle(
+            [in, out] IInkRectangle** WindowInputRectangle);
+        [id(0x00000017)]             HRESULT SetWindowInputRectangle(
+            [in] IInkRectangle* WindowInputRectangle);
+        [id(0x0000001a)]             HRESULT SetAllTabletsMode(
+            [in, optional, defaultvalue(-1)] VARIANT_BOOL UseMouseForInput);
+        [id(0x0000001b)]             HRESULT SetSingleTabletIntegratedMode(
+            [in] IInkTablet* Tablet);
+        [id(0x0000000b)]             HRESULT GetEventInterest(
+            [in] InkCollectorEventInterest EventId,
+            [out, retval] VARIANT_BOOL* Listen);
+        [id(0x0000000a)]             HRESULT SetEventInterest(
+            [in] InkCollectorEventInterest EventId,
+            [in] VARIANT_BOOL Listen);
+    };
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msiquery.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msiquery.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msiquery.h	(revision 16410)
@@ -0,0 +1,321 @@
+/*
+ * Copyright (C) 2002,2003 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_MSIQUERY_H
+#define __WINE_MSIQUERY_H
+
+#include <msi.h>
+
+typedef enum tagMSICONDITION
+{
+    MSICONDITION_FALSE = 0,
+    MSICONDITION_TRUE  = 1,
+    MSICONDITION_NONE  = 2,
+    MSICONDITION_ERROR = 3,
+} MSICONDITION;
+
+#define MSI_NULL_INTEGER 0x80000000
+
+typedef enum tagMSICOLINFO
+{
+    MSICOLINFO_NAMES = 0,
+    MSICOLINFO_TYPES = 1
+} MSICOLINFO;
+
+typedef enum tagMSICOSTTREE
+{
+    MSICOSTTREE_SELFONLY = 0,
+    MSICOSTTREE_CHILDREN = 1,
+    MSICOSTTREE_PARENTS  = 2,
+    MSICOSTTREE_PRODUCT  = 3,
+} MSICOSTTREE;
+
+typedef enum tagMSIMODIFY
+{
+    MSIMODIFY_REFRESH = 0,
+    MSIMODIFY_INSERT = 1,
+    MSIMODIFY_UPDATE = 2,
+    MSIMODIFY_ASSIGN = 3,
+    MSIMODIFY_REPLACE = 4,
+    MSIMODIFY_MERGE = 5,
+    MSIMODIFY_DELETE = 6,
+    MSIMODIFY_INSERT_TEMPORARY = 7,
+    MSIMODIFY_VALIDATE = 8,
+    MSIMODIFY_VALIDATE_NEW = 9,
+    MSIMODIFY_VALIDATE_FIELD = 10,
+    MSIMODIFY_VALIDATE_DELETE = 11
+} MSIMODIFY;
+
+#ifndef WINE_NO_UNICODE_MACROS
+#define MSIDBOPEN_READONLY (LPCTSTR)0
+#define MSIDBOPEN_TRANSACT (LPCTSTR)1
+#define MSIDBOPEN_DIRECT   (LPCTSTR)2
+#define MSIDBOPEN_CREATE   (LPCTSTR)3
+#define MSIDBOPEN_CREATEDIRECT (LPCTSTR)4
+#else
+#define MSIDBOPEN_READONLY (LPCWSTR)0
+#define MSIDBOPEN_TRANSACT (LPCWSTR)1
+#define MSIDBOPEN_DIRECT   (LPCWSTR)2
+#define MSIDBOPEN_CREATE   (LPCWSTR)3
+#define MSIDBOPEN_CREATEDIRECT (LPCWSTR)4
+#endif
+
+#define MSIDBOPEN_PATCHFILE 32 / sizeof(*MSIDBOPEN_READONLY)
+
+typedef enum tagMSIRUNMODE
+{
+    MSIRUNMODE_ADMIN = 0,
+    MSIRUNMODE_ADVERTISE = 1,
+    MSIRUNMODE_MAINTENANCE = 2,
+    MSIRUNMODE_ROLLBACKENABLED = 3,
+    MSIRUNMODE_LOGENABLED = 4,
+    MSIRUNMODE_OPERATIONS = 5,
+    MSIRUNMODE_REBOOTATEND = 6,
+    MSIRUNMODE_REBOOTNOW = 7,
+    MSIRUNMODE_CABINET = 8,
+    MSIRUNMODE_SOURCESHORTNAMES = 9,
+    MSIRUNMODE_TARGETSHORTNAMES = 10,
+    MSIRUNMODE_RESERVED11 = 11,
+    MSIRUNMODE_WINDOWS9X = 12,
+    MSIRUNMODE_ZAWENABLED = 13,
+    MSIRUNMODE_RESERVED14 = 14,
+    MSIRUNMODE_RESERVED15 = 15,
+    MSIRUNMODE_SCHEDULED = 16,
+    MSIRUNMODE_ROLLBACK = 17,
+    MSIRUNMODE_COMMIT = 18
+} MSIRUNMODE;
+
+typedef enum tagMSIDBERROR
+{
+    MSIDBERROR_INVALIDARG = -3,
+    MSIDBERROR_MOREDATA = -2,
+    MSIDBERROR_FUNCTIONERROR = -1,
+    MSIDBERROR_NOERROR = 0,
+    MSIDBERROR_DUPLICATEKEY = 1,
+    MSIDBERROR_REQUIRED = 2,
+    MSIDBERROR_BADLINK = 3,
+    MSIDBERROR_OVERFLOW = 4,
+    MSIDBERROR_UNDERFLOW = 5,
+    MSIDBERROR_NOTINSET = 6,
+    MSIDBERROR_BADVERSION = 7,
+    MSIDBERROR_BADCASE = 8,
+    MSIDBERROR_BADGUID = 9,
+    MSIDBERROR_BADWILDCARD = 10,
+    MSIDBERROR_BADIDENTIFIER = 11,
+    MSIDBERROR_BADLANGUAGE = 12,
+    MSIDBERROR_BADFILENAME = 13,
+    MSIDBERROR_BADPATH = 14,
+    MSIDBERROR_BADCONDITION = 15,
+    MSIDBERROR_BADFORMATTED = 16,
+    MSIDBERROR_BADTEMPLATE = 17,
+    MSIDBERROR_BADDEFAULTDIR = 18,
+    MSIDBERROR_BADREGPATH = 19,
+    MSIDBERROR_BADCUSTOMSOURCE = 20,
+    MSIDBERROR_BADPROPERTY = 21,
+    MSIDBERROR_MISSINGDATA = 22,
+    MSIDBERROR_BADCATEGORY = 23,
+    MSIDBERROR_BADKEYTABLE = 24,
+    MSIDBERROR_BADMAXMINVALUES = 25,
+    MSIDBERROR_BADCABINET = 26,
+    MSIDBERROR_BADSHORTCUT= 27,
+    MSIDBERROR_STRINGOVERFLOW = 28,
+    MSIDBERROR_BADLOCALIZEATTRIB = 29
+} MSIDBERROR; 
+
+typedef enum tagMSIDBSTATE
+{
+    MSIDBSTATE_ERROR = -1,
+    MSIDBSTATE_READ = 0,
+    MSIDBSTATE_WRITE = 1
+} MSIDBSTATE;
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* view manipulation */
+UINT WINAPI MsiViewFetch(MSIHANDLE,MSIHANDLE*);
+UINT WINAPI MsiViewExecute(MSIHANDLE,MSIHANDLE);
+UINT WINAPI MsiViewClose(MSIHANDLE);
+UINT WINAPI MsiDatabaseOpenViewA(MSIHANDLE,LPCSTR,MSIHANDLE*);
+UINT WINAPI MsiDatabaseOpenViewW(MSIHANDLE,LPCWSTR,MSIHANDLE*);
+#define     MsiDatabaseOpenView WINELIB_NAME_AW(MsiDatabaseOpenView)
+MSIDBERROR WINAPI MsiViewGetErrorA(MSIHANDLE,LPSTR,LPDWORD);
+MSIDBERROR WINAPI MsiViewGetErrorW(MSIHANDLE,LPWSTR,LPDWORD);
+#define     MsiViewGetError WINELIB_NAME_AW(MsiViewGetError)
+
+MSIDBSTATE WINAPI MsiGetDatabaseState(MSIHANDLE);
+
+/* record manipulation */
+MSIHANDLE WINAPI MsiCreateRecord(UINT);
+UINT WINAPI MsiRecordClearData(MSIHANDLE);
+UINT WINAPI MsiRecordSetInteger(MSIHANDLE,UINT,int);
+UINT WINAPI MsiRecordSetStringA(MSIHANDLE,UINT,LPCSTR);
+UINT WINAPI MsiRecordSetStringW(MSIHANDLE,UINT,LPCWSTR);
+#define     MsiRecordSetString WINELIB_NAME_AW(MsiRecordSetString)
+UINT WINAPI MsiRecordGetStringA(MSIHANDLE,UINT,LPSTR,LPDWORD);
+UINT WINAPI MsiRecordGetStringW(MSIHANDLE,UINT,LPWSTR,LPDWORD);
+#define     MsiRecordGetString WINELIB_NAME_AW(MsiRecordGetString)
+UINT WINAPI MsiRecordGetFieldCount(MSIHANDLE);
+int WINAPI MsiRecordGetInteger(MSIHANDLE,UINT);
+UINT WINAPI MsiRecordDataSize(MSIHANDLE,UINT);
+BOOL WINAPI MsiRecordIsNull(MSIHANDLE,UINT);
+UINT WINAPI MsiFormatRecordA(MSIHANDLE,MSIHANDLE,LPSTR,LPDWORD);
+UINT WINAPI MsiFormatRecordW(MSIHANDLE,MSIHANDLE,LPWSTR,LPDWORD);
+#define     MsiFormatRecord WINELIB_NAME_AW(MsiFormatRecord)
+UINT WINAPI MsiRecordSetStreamA(MSIHANDLE,UINT,LPCSTR);
+UINT WINAPI MsiRecordSetStreamW(MSIHANDLE,UINT,LPCWSTR);
+#define     MsiRecordSetStream WINELIB_NAME_AW(MsiRecordSetStream)
+UINT WINAPI MsiRecordReadStream(MSIHANDLE,UINT,char*,LPDWORD);
+
+UINT WINAPI MsiDatabaseGetPrimaryKeysA(MSIHANDLE,LPCSTR,MSIHANDLE*);
+UINT WINAPI MsiDatabaseGetPrimaryKeysW(MSIHANDLE,LPCWSTR,MSIHANDLE*);
+#define     MsiDatabaseGetPrimaryKeys WINELIB_NAME_AW(MsiDatabaseGetPrimaryKeys)
+
+/* installing */
+UINT WINAPI MsiDoActionA(MSIHANDLE,LPCSTR );
+UINT WINAPI MsiDoActionW(MSIHANDLE,LPCWSTR );
+#define     MsiDoAction WINELIB_NAME_AW(MsiDoAction)
+
+/* database transforms */
+UINT WINAPI MsiDatabaseApplyTransformA(MSIHANDLE,LPCSTR,int);
+UINT WINAPI MsiDatabaseApplyTransformW(MSIHANDLE,LPCWSTR,int);
+#define     MsiDatabaseApplyTransform WINELIB_NAME_AW(MsiDatabaseApplyTransform)
+UINT WINAPI MsiDatabaseGenerateTransformA(MSIHANDLE,MSIHANDLE,LPCSTR,int,int);
+UINT WINAPI MsiDatabaseGenerateTransformW(MSIHANDLE,MSIHANDLE,LPCWSTR,int,int);
+#define     MsiDatabaseGenerateTransform WINELIB_NAME_AW(MsiDatabaseGenerateTransform)
+
+UINT WINAPI MsiDatabaseCommit(MSIHANDLE);
+
+/* install state */
+UINT WINAPI MsiGetFeatureStateA(MSIHANDLE,LPCSTR,INSTALLSTATE*,INSTALLSTATE*);
+UINT WINAPI MsiGetFeatureStateW(MSIHANDLE,LPCWSTR,INSTALLSTATE*,INSTALLSTATE*);
+#define     MsiGetFeatureState WINELIB_NAME_AW(MsiGetFeatureState)
+UINT WINAPI MsiGetFeatureValidStatesA(MSIHANDLE,LPCSTR,LPDWORD);
+UINT WINAPI MsiGetFeatureValidStatesW(MSIHANDLE,LPCWSTR,LPDWORD);
+#define     MsiGetFeatureValidStates WINELIB_NAME_AW(MsiGetFeatureValidStates)
+UINT WINAPI MsiSetComponentStateA(MSIHANDLE,LPCSTR,INSTALLSTATE);
+UINT WINAPI MsiSetComponentStateW(MSIHANDLE,LPCWSTR,INSTALLSTATE);
+#define     MsiSetComponentState WINELIB_NAME_AW(MsiSetComponentState)
+UINT WINAPI MsiGetComponentStateA(MSIHANDLE,LPCSTR,INSTALLSTATE*,INSTALLSTATE*);
+UINT WINAPI MsiGetComponentStateW(MSIHANDLE,LPCWSTR,INSTALLSTATE*,INSTALLSTATE*);
+#define     MsiGetComponentState WINELIB_NAME_AW(MsiGetComponentState)
+
+MSICONDITION WINAPI MsiEvaluateConditionA(MSIHANDLE,LPCSTR);
+MSICONDITION WINAPI MsiEvaluateConditionW(MSIHANDLE,LPCWSTR);
+#define     MsiEvaluateCondition WINELIB_NAME_AW(MsiEvaluateCondition)
+
+/* property functions */
+UINT WINAPI MsiGetPropertyA(MSIHANDLE, LPCSTR, LPSTR, LPDWORD);
+UINT WINAPI MsiGetPropertyW(MSIHANDLE, LPCWSTR, LPWSTR, LPDWORD);
+#define     MsiGetProperty WINELIB_NAME_AW(MsiGetProperty)
+
+UINT WINAPI MsiSetPropertyA(MSIHANDLE, LPCSTR, LPCSTR);
+UINT WINAPI MsiSetPropertyW(MSIHANDLE, LPCWSTR, LPCWSTR);
+#define     MsiSetProperty WINELIB_NAME_AW(MsiSetProperty)
+
+UINT WINAPI MsiGetTargetPathA(MSIHANDLE,LPCSTR,LPSTR,LPDWORD);
+UINT WINAPI MsiGetTargetPathW(MSIHANDLE,LPCWSTR,LPWSTR,LPDWORD);
+#define     MsiGetTargetPath WINELIB_NAME_AW(MsiGetTargetPath)
+
+UINT WINAPI MsiSetTargetPathA(MSIHANDLE, LPCSTR, LPCSTR);
+UINT WINAPI MsiSetTargetPathW(MSIHANDLE, LPCWSTR, LPCWSTR);
+#define     MsiSetTargetPath WINELIB_NAME_AW(MsiSetTargetPath)
+
+UINT WINAPI MsiGetSourcePathA(MSIHANDLE,LPCSTR,LPSTR,LPDWORD);
+UINT WINAPI MsiGetSourcePathW(MSIHANDLE,LPCWSTR,LPWSTR,LPDWORD);
+#define     MsiGetSourcePath WINELIB_NAME_AW(MsiGetSourcePath)
+
+MSIHANDLE WINAPI MsiGetActiveDatabase(MSIHANDLE);
+
+UINT WINAPI MsiViewGetColumnInfo(MSIHANDLE, MSICOLINFO, MSIHANDLE*);
+INT WINAPI MsiProcessMessage(MSIHANDLE, INSTALLMESSAGE, MSIHANDLE);
+
+UINT WINAPI MsiSetFeatureStateA(MSIHANDLE, LPCSTR, INSTALLSTATE);
+UINT WINAPI MsiSetFeatureStateW(MSIHANDLE, LPCWSTR, INSTALLSTATE);
+#define     MsiSetFeatureState WINELIB_NAME_AW(MsiSetFeatureState)
+
+UINT WINAPI MsiPreviewDialogA(MSIHANDLE, LPCSTR);
+UINT WINAPI MsiPreviewDialogW(MSIHANDLE, LPCWSTR);
+#define     MsiPreviewDialog WINELIB_NAME_AW(MsiPreviewDialog)
+
+UINT WINAPI MsiPreviewBillboardA(MSIHANDLE, LPCSTR, LPCSTR);
+UINT WINAPI MsiPreviewBillboardW(MSIHANDLE, LPCWSTR, LPCWSTR);
+#define     MsiPreviewBillboard WINELIB_NAME_AW(MsiPreviewBillboard)
+
+UINT WINAPI MsiCreateTransformSummaryInfoA(MSIHANDLE, MSIHANDLE, LPCSTR, int, int);
+UINT WINAPI MsiCreateTransformSummaryInfoW(MSIHANDLE, MSIHANDLE, LPCWSTR, int, int);
+#define     MsiCreateTransformSummaryInfo WINELIB_NAME_AW(MsiCreateTransformSummaryInfo)
+
+UINT WINAPI MsiGetSummaryInformationA(MSIHANDLE, LPCSTR, UINT, MSIHANDLE *);
+UINT WINAPI MsiGetSummaryInformationW(MSIHANDLE, LPCWSTR, UINT, MSIHANDLE *);
+#define     MsiGetSummaryInformation WINELIB_NAME_AW(MsiGetSummaryInformation)
+
+UINT WINAPI MsiSummaryInfoGetPropertyA(MSIHANDLE,UINT,PUINT,LPINT,FILETIME*,LPSTR,LPDWORD);
+UINT WINAPI MsiSummaryInfoGetPropertyW(MSIHANDLE,UINT,PUINT,LPINT,FILETIME*,LPWSTR,LPDWORD);
+#define     MsiSummaryInfoGetProperty WINELIB_NAME_AW(MsiSummaryInfoGetProperty)
+
+UINT WINAPI MsiSummaryInfoSetPropertyA(MSIHANDLE, UINT, UINT, INT, FILETIME*, LPCSTR);
+UINT WINAPI MsiSummaryInfoSetPropertyW(MSIHANDLE, UINT, UINT, INT, FILETIME*, LPCWSTR);
+#define     MsiSummaryInfoSetProperty WINELIB_NAME_AW(MsiSummaryInfoSetProperty)
+
+UINT WINAPI MsiDatabaseExportA(MSIHANDLE, LPCSTR, LPCSTR, LPCSTR);
+UINT WINAPI MsiDatabaseExportW(MSIHANDLE, LPCWSTR, LPCWSTR, LPCWSTR);
+#define     MsiDatabaseExport WINELIB_NAME_AW(MsiDatabaseExport)
+
+UINT WINAPI MsiDatabaseImportA(MSIHANDLE, LPCSTR, LPCSTR);
+UINT WINAPI MsiDatabaseImportW(MSIHANDLE, LPCWSTR, LPCWSTR);
+#define     MsiDatabaseImport WINELIB_NAME_AW(MsiDatabaseImport)
+
+UINT WINAPI MsiOpenDatabaseW(LPCWSTR, LPCWSTR, MSIHANDLE*);
+UINT WINAPI MsiOpenDatabaseA(LPCSTR, LPCSTR, MSIHANDLE*);
+#define     MsiOpenDatabase WINELIB_NAME_AW(MsiOpenDatabase)
+
+MSICONDITION WINAPI MsiDatabaseIsTablePersistentA(MSIHANDLE, LPCSTR);
+MSICONDITION WINAPI MsiDatabaseIsTablePersistentW(MSIHANDLE, LPCWSTR);
+#define     MsiDatabaseIsTablePersistent WINELIB_NAME_AW(MsiDatabaseIsTablePersistent)
+
+UINT WINAPI MsiSequenceA(MSIHANDLE, LPCSTR, INT);
+UINT WINAPI MsiSequenceW(MSIHANDLE, LPCWSTR, INT);
+#define     MsiSequence WINELIB_NAME_AW(MsiSequence)
+
+UINT WINAPI MsiSummaryInfoPersist(MSIHANDLE);
+UINT WINAPI MsiSummaryInfoGetPropertyCount(MSIHANDLE,PUINT);
+
+UINT WINAPI MsiEnableUIPreview(MSIHANDLE, MSIHANDLE*);
+BOOL WINAPI MsiGetMode(MSIHANDLE, MSIRUNMODE);
+BOOL WINAPI MsiSetMode(MSIHANDLE, MSIRUNMODE, BOOL);
+
+UINT WINAPI MsiViewModify(MSIHANDLE, MSIMODIFY, MSIHANDLE);
+
+UINT WINAPI MsiGetFeatureCostA(MSIHANDLE, LPCSTR, MSICOSTTREE, INSTALLSTATE, LPINT);
+UINT WINAPI MsiGetFeatureCostW(MSIHANDLE, LPCWSTR, MSICOSTTREE, INSTALLSTATE, LPINT);
+#define     MsiGetFeatureCost WINELIB_NAME_AW(MsiGetFeatureCost)
+
+LANGID WINAPI MsiGetLanguage(MSIHANDLE);
+
+UINT WINAPI MsiSetInstallLevel(MSIHANDLE, int);
+
+MSIHANDLE WINAPI MsiGetLastErrorRecord(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_MSIQUERY_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mssip.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mssip.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mssip.h	(revision 16410)
@@ -0,0 +1,180 @@
+/*
+ * Copyright (C) 2002 Patrik Stridvall
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_MSSIP_H
+#define __WINE_MSSIP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+/**********************************************************************/
+
+typedef CRYPT_HASH_BLOB CRYPT_DIGEST_DATA;
+
+/**********************************************************************/
+
+#define MSSIP_FLAGS_PROHIBIT_RESIZE_ON_CREATE 0x00010000
+#define MSSIP_FLAGS_USE_CATALOG               0x00020000
+
+#define SPC_INC_PE_RESOURCES_FLAG         0x80
+#define SPC_INC_PE_DEBUG_INFO_FLAG        0x40
+#define SPC_INC_PE_IMPORT_ADDR_TABLE_FLAG 0x20
+
+#define MSSIP_ADDINFO_NONE      0
+#define MSSIP_ADDINFO_FLAT      1
+#define MSSIP_ADDINFO_CATMEMBER 2
+#define MSSIP_ADDINFO_BLOB      3
+#define MSSIP_ADDINFO_NONMSSIP  500
+
+#define SIP_MAX_MAGIC_NUMBER 4
+
+/**********************************************************************/
+
+#include <pshpack8.h>
+typedef struct SIP_SUBJECTINFO_ {
+    DWORD cbSize;
+    GUID *pgSubjectType;
+    HANDLE hFile;
+    LPCWSTR pwsFileName;
+    LPCWSTR pwsDisplayName;
+
+    DWORD dwReserved1;
+    DWORD dwIntVersion;
+
+    HCRYPTPROV hProv;
+    CRYPT_ALGORITHM_IDENTIFIER DigestAlgorithm;
+    DWORD dwFlags;
+    DWORD dwEncodingType;
+    DWORD dwReserved2;
+    DWORD fdwCAPISettings;
+    DWORD fdwSecuritySettings;
+    DWORD dwIndex;
+
+    DWORD dwUnionChoice;
+    union {
+      struct MS_ADDINFO_FLAT_          *psFlat;
+      struct MS_ADDINFO_CATALOGMEMBER_ *psCatMember;
+      struct MS_ADDINFO_BLOB_          *psBlob;
+    } DUMMYUNIONNAME;
+
+    LPVOID pClientData;
+} SIP_SUBJECTINFO, *LPSIP_SUBJECTINFO;
+#include <poppack.h>
+
+#include <pshpack8.h>
+typedef struct MS_ADDINFO_FLAT_ {
+  DWORD cbStruct;
+
+  struct SIP_INDIRECT_DATA_ *pIndirectData;
+} MS_ADDINFO_FLAT, *PMS_ADDINFO_FLAT;
+#include <poppack.h>
+
+#include <pshpack8.h>
+typedef struct MS_ADDINFO_CATALOGMEMBER_ {
+  DWORD cbStruct;
+
+  struct CRYPTCATSTORE_  *pStore;
+  struct CRYPTCATMEMBER_ *pMember;
+} MS_ADDINFO_CATALOGMEMBER, *PMS_ADDINFO_CATALOGMEMBER;
+#include <poppack.h>
+
+#include <pshpack8.h>
+typedef struct MS_ADDINFO_BLOB_ {
+  DWORD cbStruct;
+
+  DWORD cbMemObject;
+  BYTE *pbMemObject;
+
+  DWORD cbMemSignedMsg;
+  BYTE *pbMemSignedMsg;
+} MS_ADDINFO_BLOB, *PMS_ADDINFO_BLOB;
+#include <poppack.h>
+
+#include <pshpack8.h>
+typedef struct SIP_INDIRECT_DATA_ {
+  CRYPT_ATTRIBUTE_TYPE_VALUE Data;
+  CRYPT_ALGORITHM_IDENTIFIER DigestAlgorithm;
+  CRYPT_HASH_BLOB            Digest;
+} SIP_INDIRECT_DATA, *PSIP_INDIRECT_DATA;
+#include <poppack.h>
+
+typedef BOOL (WINAPI * pCryptSIPGetSignedDataMsg)(SIP_SUBJECTINFO *,DWORD *,DWORD,DWORD *,BYTE *);
+typedef BOOL (WINAPI * pCryptSIPPutSignedDataMsg)(SIP_SUBJECTINFO *,DWORD,DWORD *,DWORD,BYTE *);
+typedef BOOL (WINAPI * pCryptSIPCreateIndirectData)(SIP_SUBJECTINFO *,DWORD *,SIP_INDIRECT_DATA *);
+typedef BOOL (WINAPI * pCryptSIPVerifyIndirectData)(SIP_SUBJECTINFO *,SIP_INDIRECT_DATA *);
+typedef BOOL (WINAPI * pCryptSIPRemoveSignedDataMsg)(SIP_SUBJECTINFO *,DWORD);
+
+#include <pshpack8.h>
+typedef struct SIP_DISPATCH_INFO_ {
+  DWORD cbSize;
+
+  HANDLE hSIP;
+
+  pCryptSIPGetSignedDataMsg    pfGet;
+  pCryptSIPPutSignedDataMsg    pfPut;
+  pCryptSIPCreateIndirectData  pfCreate;
+  pCryptSIPVerifyIndirectData  pfVerify;
+  pCryptSIPRemoveSignedDataMsg pfRemove;
+} SIP_DISPATCH_INFO, *LPSIP_DISPATCH_INFO;
+#include <poppack.h>
+
+typedef BOOL (WINAPI *pfnIsFileSupported)(HANDLE,GUID *);
+typedef BOOL (WINAPI *pfnIsFileSupportedName)(WCHAR *,GUID *);
+
+#include <pshpack8.h>
+typedef struct SIP_ADD_NEWPROVIDER_
+{
+  DWORD cbStruct;
+
+  GUID  *pgSubject;
+
+  WCHAR *pwszDLLFileName;
+  WCHAR *pwszMagicNumber;
+
+  WCHAR *pwszIsFunctionName;
+
+  WCHAR *pwszGetFuncName;
+  WCHAR *pwszPutFuncName;
+  WCHAR *pwszCreateFuncName;
+  WCHAR *pwszVerifyFuncName;
+  WCHAR *pwszRemoveFuncName;
+
+  WCHAR *pwszIsFunctionNameFmt2;
+} SIP_ADD_NEWPROVIDER, *PSIP_ADD_NEWPROVIDER;
+#include <poppack.h>
+
+/**********************************************************************/
+
+BOOL WINAPI CryptSIPGetSignedDataMsg(SIP_SUBJECTINFO *,DWORD *,DWORD,DWORD *,BYTE *);
+BOOL WINAPI CryptSIPPutSignedDataMsg(SIP_SUBJECTINFO *,DWORD,DWORD *,DWORD,BYTE *);
+BOOL WINAPI CryptSIPCreateIndirectData(SIP_SUBJECTINFO *,DWORD *,SIP_INDIRECT_DATA *);
+BOOL WINAPI CryptSIPVerifyIndirectData(SIP_SUBJECTINFO *,SIP_INDIRECT_DATA *);
+BOOL WINAPI CryptSIPRemoveSignedDataMsg(SIP_SUBJECTINFO *,DWORD);
+
+BOOL WINAPI CryptSIPLoad(const GUID *,DWORD,SIP_DISPATCH_INFO *);
+BOOL WINAPI CryptSIPRetrieveSubjectGuid(LPCWSTR,HANDLE,GUID *);
+BOOL WINAPI CryptSIPRetrieveSubjectGuidForCatalogFile(LPCWSTR,HANDLE,GUID *);
+BOOL WINAPI CryptSIPAddProvider(SIP_ADD_NEWPROVIDER *);
+BOOL WINAPI CryptSIPRemoveProvider(GUID *);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif  /* __WINE_MSSIP_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mstask.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mstask.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mstask.idl	(revision 16410)
@@ -0,0 +1,385 @@
+/*
+ * Task Scheduler Service interface
+ *
+ * Copyright (C) 2008 Google (Roy Shea)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+import "oaidl.idl";
+import "oleidl.idl";
+
+cpp_quote("#define TASK_SUNDAY 0x1")
+cpp_quote("#define TASK_MONDAY 0x2")
+cpp_quote("#define TASK_TUESDAY 0x4")
+cpp_quote("#define TASK_WEDNESDAY 0x8")
+cpp_quote("#define TASK_THURSDAY 0x10")
+cpp_quote("#define TASK_FRIDAY 0x20")
+cpp_quote("#define TASK_SATURDAY 0x40")
+
+cpp_quote("#define TASK_FIRST_WEEK 1")
+cpp_quote("#define TASK_SECOND_WEEK 2")
+cpp_quote("#define TASK_THIRD_WEEK 3")
+cpp_quote("#define TASK_FOURTH_WEEK 4")
+cpp_quote("#define TASK_LAST_WEEK 5")
+
+cpp_quote("#define TASK_JANUARY 0x1")
+cpp_quote("#define TASK_FEBRUARY 0x2")
+cpp_quote("#define TASK_MARCH 0x4")
+cpp_quote("#define TASK_APRIL 0x8")
+cpp_quote("#define TASK_MAY 0x10")
+cpp_quote("#define TASK_JUNE 0x20")
+cpp_quote("#define TASK_JULY 0x40")
+cpp_quote("#define TASK_AUGUST 0x80")
+cpp_quote("#define TASK_SEPTEMBER 0x100")
+cpp_quote("#define TASK_OCTOBER 0x200")
+cpp_quote("#define TASK_NOVEMBER 0x400")
+cpp_quote("#define TASK_DECEMBER 0x800")
+
+cpp_quote("#define TASK_TRIGGER_FLAG_HAS_END_DATE 0x1")
+cpp_quote("#define TASK_TRIGGER_FLAG_KILL_AT_DURATION_END 0x2")
+cpp_quote("#define TASK_TRIGGER_FLAG_DISABLED 0x4")
+
+[
+    local,
+    object,
+    uuid(148BD528-A2AB-11CE-B11F-00AA00530503),
+    pointer_default(unique)
+]
+interface IEnumWorkItems : IUnknown
+{
+    HRESULT Next(
+            [in]   ULONG celt,
+            [out]  LPWSTR **rgpwszNames,
+            [out]  ULONG *pceltFetched);
+
+    HRESULT Skip(
+            [in]  ULONG celt);
+
+    HRESULT Reset();
+
+    HRESULT Clone(
+            [out]  IEnumWorkItems **ppEnumWorkItems);
+}
+
+cpp_quote("#ifndef _HPROPSHEETPAGE_DEFINED")
+typedef struct _PSP *HPROPSHEETPAGE;
+cpp_quote("#define _HPROPSHEETPAGE_DEFINED")
+cpp_quote("#endif")
+
+[
+    local,
+    object,
+    uuid(4086658a-cbbb-11cf-b604-00c04fd8d565),
+    pointer_default(unique)
+]
+interface IProvideTaskPage : IUnknown
+{
+    typedef enum _TASKPAGE {
+        TASKPAGE_TASK       = 0,
+        TASKPAGE_SCHEDULE   = 1,
+        TASKPAGE_SETTINGS   = 2
+    } TASKPAGE;
+
+    HRESULT GetPage(
+            [in]   TASKPAGE tpType,
+            [in]   BOOL fPersistChanges,
+            [out]  HPROPSHEETPAGE *phPage);
+}
+
+[
+    local,
+    object,
+    uuid(148BD52B-A2AB-11CE-B11F-00AA00530503),
+    pointer_default(unique)
+]
+interface ITaskTrigger : IUnknown
+{
+    typedef enum _TASK_TRIGGER_TYPE {
+        TASK_TIME_TRIGGER_ONCE              = 0,
+        TASK_TIME_TRIGGER_DAILY             = 1,
+        TASK_TIME_TRIGGER_WEEKLY            = 2,
+        TASK_TIME_TRIGGER_MONTHLYDATE       = 3,
+        TASK_TIME_TRIGGER_MONTHLYDOW        = 4,
+        TASK_EVENT_TRIGGER_ON_IDLE          = 5,
+        TASK_EVENT_TRIGGER_AT_SYSTEMSTART   = 6,
+        TASK_EVENT_TRIGGER_AT_LOGON         = 7
+    } TASK_TRIGGER_TYPE, *PTASK_TRIGGER_TYPE;
+
+    typedef struct _DAILY {
+        WORD DaysInterval;
+    } DAILY;
+
+    typedef struct _WEEKLY {
+        WORD WeeksInterval;
+        WORD rgfDaysOfTheWeek;
+    } WEEKLY;
+
+    typedef struct _MONTHLYDATE {
+        DWORD rgfDays;
+        WORD rgfMonths;
+    } MONTHLYDATE;
+
+    typedef struct _MONTHLYDOW {
+        WORD wWhichWeek;
+        WORD rgfDaysOfTheWeek;
+        WORD rgfMonths;
+    } MONTHLYDOW;
+
+    typedef union _TRIGGER_TYPE_UNION {
+        DAILY Daily;
+        WEEKLY Weekly;
+        MONTHLYDATE MonthlyDate;
+        MONTHLYDOW MonthlyDOW;
+    } TRIGGER_TYPE_UNION;
+
+    typedef struct _TASK_TRIGGER {
+        WORD cbTriggerSize;
+        WORD Reserved1;
+        WORD wBeginYear;
+        WORD wBeginMonth;
+        WORD wBeginDay;
+        WORD wEndYear;
+        WORD wEndMonth;
+        WORD wEndDay;
+        WORD wStartHour;
+        WORD wStartMinute;
+        DWORD MinutesDuration;
+        DWORD MinutesInterval;
+        DWORD rgFlags;
+        TASK_TRIGGER_TYPE TriggerType;
+        TRIGGER_TYPE_UNION Type;
+        WORD Reserved2;
+        WORD wRandomMinutesInterval;
+    } TASK_TRIGGER, *PTASK_TRIGGER;
+
+    HRESULT SetTrigger(
+            [in]  const PTASK_TRIGGER pTrigger);
+
+    HRESULT GetTrigger(
+            [out]  PTASK_TRIGGER pTrigger);
+
+    HRESULT GetTriggerString(
+            [out]  LPWSTR *ppwszTrigger);
+}
+
+[
+    local,
+    object,
+    uuid(a6b952f0-a4b1-11d0-997d-00aa006887ec),
+    pointer_default(unique)
+]
+interface IScheduledWorkItem : IUnknown
+{
+    HRESULT CreateTrigger(
+            [out]  WORD *piNewTrigger,
+            [out]  ITaskTrigger **ppTrigger);
+
+    HRESULT DeleteTrigger(
+            [in]  WORD iTrigger);
+
+    HRESULT GetTriggerCount(
+            [out]  WORD *plCount);
+
+    HRESULT GetTrigger(
+            [in]   WORD iTrigger,
+            [out]  ITaskTrigger **ppTrigger);
+
+    HRESULT GetTriggerString(
+            [in]   WORD iTrigger,
+            [out]  LPWSTR *ppwszTrigger);
+
+    HRESULT GetRunTimes(
+            [in]       const LPSYSTEMTIME pstBegin,
+            [in]       const LPSYSTEMTIME pstEnd,
+            [in, out]  WORD *pCount,
+            [out]      LPSYSTEMTIME *rgstTaskTimes);
+
+    HRESULT GetNextRunTime(
+            [out]  SYSTEMTIME *pstNextRun);
+
+    HRESULT SetIdleWait(
+            [in]  WORD wIdleMinutes,
+            [in]  WORD wDeadlineMinutes);
+
+    HRESULT GetIdleWait(
+            [out]  WORD *pwIdleMinutes,
+            [out]  WORD *pwDeadlineMinutes);
+
+    HRESULT Run();
+
+    HRESULT Terminate();
+
+    HRESULT EditWorkItem(
+            [in]  HWND hParent,
+            [in]  DWORD dwReserved);
+
+    HRESULT GetMostRecentRunTime(
+            [out]  SYSTEMTIME *pstLastRun);
+
+    HRESULT GetStatus(
+            [out]  HRESULT *phrStatus);
+
+    HRESULT GetExitCode(
+            [out]  DWORD *pdwExitCode);
+
+    HRESULT SetComment(
+            [in]  LPCWSTR pwszComment);
+
+    HRESULT GetComment(
+            [out]  LPWSTR *ppwszComment);
+
+    HRESULT SetCreator(
+            LPCWSTR pwszCreator);
+
+    HRESULT GetCreator(
+            [out]  LPWSTR *ppwszCreator);
+
+    HRESULT SetWorkItemData(
+            [in]  WORD cBytes,
+            [in]  BYTE rgbData[]);
+
+    HRESULT GetWorkItemData(
+            [out]  WORD *pcBytes,
+            [out]  BYTE **ppBytes);
+
+    HRESULT SetErrorRetryCount(
+            WORD wRetryCount);
+
+    HRESULT GetErrorRetryCount(
+            [out]  WORD *pwRetryCount);
+
+    HRESULT SetErrorRetryInterval(
+            WORD wRetryInterval);
+
+    HRESULT GetErrorRetryInterval(
+            [out]  WORD *pwRetryInterval);
+
+    HRESULT SetFlags(
+            DWORD dwFlags);
+
+    HRESULT GetFlags(
+            [out]  DWORD *pdwFlags);
+
+    HRESULT SetAccountInformation(
+            [in]  LPCWSTR pwszAccountName,
+            [in]  LPCWSTR pwszPassword);
+
+    HRESULT GetAccountInformation(
+            [out]  LPWSTR *ppwszAccountName);
+}
+
+[
+    local,
+    object,
+    uuid(148BD524-A2AB-11CE-B11F-00AA00530503),
+    pointer_default(unique)
+]
+interface ITask : IScheduledWorkItem
+{
+    HRESULT SetApplicationName(
+            [in]  LPCWSTR pwszApplicationName);
+
+    HRESULT GetApplicationName(
+            [out]  LPWSTR *ppwszApplicationName);
+
+    HRESULT SetParameters(
+            [in]  LPCWSTR pwszParameters);
+
+    HRESULT GetParameters(
+            [out]  LPWSTR *ppwszParameters);
+
+    HRESULT SetWorkingDirectory(
+            [in]  LPCWSTR pwszWorkingDirectory);
+
+    HRESULT GetWorkingDirectory(
+            [in]  LPWSTR *ppwszWorkingDirectory);
+
+    HRESULT SetPriority(
+            [in]  DWORD dwPriority);
+
+    HRESULT GetPriority(
+            [out]  DWORD *pdwPriority);
+
+    HRESULT SetTaskFlags(
+            [in]  DWORD dwFlags);
+
+    HRESULT GetTaskFlags(
+            [out]  DWORD *pdwFlags);
+
+    HRESULT SetMaxRunTime(
+            [in]  DWORD dwMaxRunTime);
+
+    HRESULT GetMaxRunTime(
+            [out]  DWORD *pdwMaxRunTime);
+}
+
+[
+    local,
+    object,
+    uuid(148BD527-A2AB-11CE-B11F-00AA00530503),
+    pointer_default(unique)
+]
+interface ITaskScheduler : IUnknown
+{
+    HRESULT SetTargetComputer(
+            [in]  LPCWSTR pwszComputer);
+
+    HRESULT GetTargetComputer(
+            [out]  LPWSTR *ppwszComputer);
+
+    HRESULT Enum(
+            [out]  IEnumWorkItems **ppEnumTasks);
+
+    HRESULT Activate(
+            [in]   LPCWSTR pwszName,
+            [in]   REFIID riid,
+            [out]  IUnknown **ppunk);
+
+    HRESULT Delete(
+            [in]  LPCWSTR pwszName);
+
+    HRESULT NewWorkItem(
+            [in]   LPCWSTR pwszTaskName,
+            [in]   REFCLSID rclsid,
+            [in]   REFIID riid,
+            [out]  IUnknown **ppunk);
+
+    HRESULT AddWorkItem(
+            [in]  LPCWSTR pwszTaskName,
+            [in]  IScheduledWorkItem *pWorkItem);
+
+    HRESULT IsOfType(
+            [in]  LPCWSTR pwszName,
+            [in]  REFIID riid);
+}
+
+[
+    uuid(148BD52A-A2AB-11CE-B11F-00AA00530503)
+]
+coclass CTaskScheduler
+{
+    [default] interface ITaskScheduler;
+};
+
+
+[
+    uuid(148BD520-A2AB-11CE-B11F-00AA00530503)
+]
+coclass CTask
+{
+    [default] interface ITask;
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/conio.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/conio.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/conio.h	(revision 16410)
@@ -0,0 +1,64 @@
+/*
+ * Console I/O definitions
+ *
+ * Derived from the mingw header written by Colin Peters.
+ * Modified for Wine use by Jon Griffiths and Francois Gouget.
+ * This file is in the public domain.
+ */
+#ifndef __WINE_CONIO_H
+#define __WINE_CONIO_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+char*       _cgets(char*);
+int         _cprintf(const char*,...);
+int         _cputs(const char*);
+int         _cscanf(const char*,...);
+int         _getch(void);
+int         _getche(void);
+int         _kbhit(void);
+int         _putch(int);
+int         _ungetch(int);
+
+#ifdef _M_IX86
+int         _inp(unsigned short);
+unsigned long _inpd(unsigned short);
+unsigned short _inpw(unsigned short);
+int         _outp(unsigned short, int);
+unsigned long _outpd(unsigned short, unsigned long);
+unsigned short _outpw(unsigned short, unsigned short);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+
+static inline char* cgets(char* str) { return _cgets(str); }
+static inline int cputs(const char* str) { return _cputs(str); }
+static inline int getch(void) { return _getch(); }
+static inline int getche(void) { return _getche(); }
+static inline int kbhit(void) { return _kbhit(); }
+static inline int putch(int c) { return _putch(c); }
+static inline int ungetch(int c) { return _ungetch(c); }
+#ifdef _M_IX86
+static inline int inp(unsigned short i) { return _inp(i); }
+static inline unsigned short inpw(unsigned short i) { return _inpw(i); }
+static inline int outp(unsigned short i, int j) { return _outp(i, j); }
+static inline unsigned short outpw(unsigned short i, unsigned short j) { return _outpw(i, j); }
+#endif
+
+#if defined(__GNUC__) && (__GNUC__ < 4)
+extern int cprintf(const char*,...) __attribute__((alias("_cprintf"),format(printf,1,2)));
+extern int cscanf(const char*,...) __attribute__((alias("_cscanf"),format(scanf,1,2)));
+#else
+#define cprintf _cprintf
+#define cscanf _cscanf
+#endif /* __GNUC__ */
+
+#endif /* __WINE_CONIO_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/crtdbg.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/crtdbg.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/crtdbg.h	(revision 16410)
@@ -0,0 +1,131 @@
+/*
+ * Debug API
+ *
+ * Copyright 2001 Francois Gouget.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __WINE_CRTDBG_H_
+#define __WINE_CRTDBG_H_
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+/* The debug API is not implemented in Winelib.
+ * Redirect everything to the regular APIs.
+ */
+
+#define _CRT_WARN                       0
+#define _CRT_ERROR                      1
+#define _CRT_ASSERT                     2
+#define _CRT_ERRCNT                     3
+
+#define _FREE_BLOCK                     0
+#define _NORMAL_BLOCK                   1
+#define _CRT_BLOCK                      2
+#define _IGNORE_BLOCK                   3
+#define _CLIENT_BLOCK                   4
+#define _MAX_BLOCKS                     5
+
+#define _BLOCK_TYPE(block)              (block & 0xFFFF)
+#define _BLOCK_SUBTYPE(block)           (block >> 16 & 0xFFFF)
+
+typedef struct _CrtMemState
+{
+    struct _CrtMemBlockHeader* pBlockHeader;
+    unsigned long lCounts[_MAX_BLOCKS];
+    unsigned long lSizes[_MAX_BLOCKS];
+    unsigned long lHighWaterCount;
+    unsigned long lTotalCount;
+} _CrtMemState;
+
+
+#ifndef _DEBUG
+
+#define _ASSERT(expr)                   ((void)0)
+#define _ASSERTE(expr)                  ((void)0)
+#define _CrtDbgBreak()                  ((void)0)
+
+#define _CrtCheckMemory()               ((int)1)
+#define _CrtDbgReport(...)              ((int)0)
+#define _CrtDumpMemoryLeaks()           ((int)0)
+#define _CrtSetBreakAlloc(a)            ((long)0)
+#define _CrtSetDbgFlag(f)               ((int)0)
+#define _CrtSetDumpClient(f)            ((void)0)
+#define _CrtSetReportMode(t,m)          ((int)0)
+
+#else /* _DEBUG */
+
+#include <assert.h>
+#define _ASSERT(expr)                   assert(expr)
+#define _ASSERTE(expr)                  assert(expr)
+#if defined(__GNUC__) && defined(__i386__)
+#define _CrtDbgBreak()                  __asm__ ("\tint $0x3\n")
+#else
+#define _CrtDbgBreak()                  ((void)0)
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int _crtAssertBusy;
+extern int _crtBreakAlloc;
+extern int _crtDbgFlag;
+
+int   _CrtCheckMemory(void);
+int   _CrtDbgReport(int reportType, const char *filename, int linenumber,
+                    const char *moduleName, const char *format, ...);
+int   _CrtDumpMemoryLeaks(void);
+int   _CrtSetBreakAlloc(int new);
+int   _CrtSetDbgFlag(int new);
+void *_CrtSetDumpClient(void *dumpClient);
+int   _CrtSetReportMode(int reportType, int reportMode);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DEBUG */
+
+#define _CrtDoForAllClientObjects(f,c)  ((void)0)
+#define _CrtIsMemoryBlock(p,s,r,f,l)    ((int)1)
+#define _CrtIsValidHeapPointer(p)       ((int)1)
+#define _CrtIsValidPointer(p,s,a)       ((int)1)
+#define _CrtMemCheckpoint(s)            ((void)0)
+#define _CrtMemDifference(s1,s2,s3)     ((int)0)
+#define _CrtMemDumpAllObjectsSince(s)   ((void)0)
+#define _CrtMemDumpStatistics(s)        ((void)0)
+#define _CrtSetAllocHook(f)             ((void)0)
+
+#define _RPT0(t,m)
+#define _RPT1(t,m,p1)
+#define _RPT2(t,m,p1,p2)
+#define _RPT3(t,m,p1,p2,p3)
+#define _RPT4(t,m,p1,p2,p3,p4)
+#define _RPTF0(t,m)
+#define _RPTF1(t,m,p1)
+#define _RPTF2(t,m,p1,p2)
+#define _RPTF3(t,m,p1,p2,p3)
+#define _RPTF4(t,m,p1,p2,p3,p4)
+
+
+#define _malloc_dbg(s,t,f,l)            malloc(s)
+#define _calloc_dbg(c,s,t,f,l)          calloc(c,s)
+#define _expand_dbg(p,s,t,f,l)          _expand(p,s)
+#define _free_dbg(p,t)                  free(p)
+#define _realloc_dbg(p,s,t,f,l)         realloc(p,s)
+
+#endif /* __WINE_CRTDBG_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/ctype.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/ctype.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/ctype.h	(revision 16410)
@@ -0,0 +1,99 @@
+/*
+ * Character type definitions
+ *
+ * Derived from the mingw header written by Colin Peters.
+ * Modified for Wine use by Jon Griffiths and Francois Gouget.
+ * This file is in the public domain.
+ */
+#ifndef __WINE_CTYPE_H
+#define __WINE_CTYPE_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _WCHAR_T_DEFINED
+#define _WCHAR_T_DEFINED
+#ifndef __cplusplus
+typedef unsigned short wchar_t;
+#endif
+#endif
+
+#ifndef WEOF
+#define WEOF        (wint_t)(0xFFFF)
+#endif
+
+#ifndef _WCTYPE_T_DEFINED
+typedef unsigned short  wint_t;
+typedef unsigned short  wctype_t;
+#define _WCTYPE_T_DEFINED
+#endif
+
+/* ASCII char classification table - binary compatible */
+#define _UPPER        0x0001  /* C1_UPPER */
+#define _LOWER        0x0002  /* C1_LOWER */
+#define _DIGIT        0x0004  /* C1_DIGIT */
+#define _SPACE        0x0008  /* C1_SPACE */
+#define _PUNCT        0x0010  /* C1_PUNCT */
+#define _CONTROL      0x0020  /* C1_CNTRL */
+#define _BLANK        0x0040  /* C1_BLANK */
+#define _HEX          0x0080  /* C1_XDIGIT */
+#define _LEADBYTE     0x8000
+#define _ALPHA       (0x0100|_UPPER|_LOWER)  /* (C1_ALPHA|_UPPER|_LOWER) */
+
+int __isascii(int);
+int __iscsym(int);
+int __iscsymf(int);
+int __toascii(int);
+int _isctype(int,int);
+int _tolower(int);
+int _toupper(int);
+int isalnum(int);
+int isalpha(int);
+int iscntrl(int);
+int isdigit(int);
+int isgraph(int);
+int islower(int);
+int isprint(int);
+int ispunct(int);
+int isspace(int);
+int isupper(int);
+int isxdigit(int);
+int tolower(int);
+int toupper(int);
+
+#ifndef _WCTYPE_DEFINED
+#define _WCTYPE_DEFINED
+int is_wctype(wint_t,wctype_t);
+int isleadbyte(int);
+int iswalnum(wint_t);
+int iswalpha(wint_t);
+int iswascii(wint_t);
+int iswcntrl(wint_t);
+int iswctype(wint_t,wctype_t);
+int iswdigit(wint_t);
+int iswgraph(wint_t);
+int iswlower(wint_t);
+int iswprint(wint_t);
+int iswpunct(wint_t);
+int iswspace(wint_t);
+int iswupper(wint_t);
+int iswxdigit(wint_t);
+wchar_t towlower(wchar_t);
+wchar_t towupper(wchar_t);
+#endif /* _WCTYPE_DEFINED */
+
+#ifdef __cplusplus
+}
+#endif
+
+
+static inline int isascii(int c) { return __isascii(c); }
+static inline int iscsym(int c) { return __iscsym(c); }
+static inline int iscsymf(int c) { return __iscsymf(c); }
+static inline int toascii(int c) { return __toascii(c); }
+
+#endif /* __WINE_CTYPE_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/direct.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/direct.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/direct.h	(revision 16410)
@@ -0,0 +1,88 @@
+/*
+ * Path and directory definitions
+ *
+ * Derived from the mingw header written by Colin Peters.
+ * Modified for Wine use by Jon Griffiths and Francois Gouget.
+ * This file is in the public domain.
+ */
+#ifndef __WINE_DIRECT_H
+#define __WINE_DIRECT_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#include <pshpack8.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _WCHAR_T_DEFINED
+#define _WCHAR_T_DEFINED
+#ifndef __cplusplus
+typedef unsigned short wchar_t;
+#endif
+#endif
+
+#if defined(__x86_64__) && !defined(_WIN64)
+#define _WIN64
+#endif
+
+#if !defined(_MSC_VER) && !defined(__int64)
+# ifdef _WIN64
+#   define __int64 long
+# else
+#   define __int64 long long
+# endif
+#endif
+
+#ifndef _SIZE_T_DEFINED
+#ifdef _WIN64
+typedef unsigned __int64 size_t;
+#else
+typedef unsigned int size_t;
+#endif
+#define _SIZE_T_DEFINED
+#endif
+
+#ifndef _DISKFREE_T_DEFINED
+#define _DISKFREE_T_DEFINED
+struct _diskfree_t {
+  unsigned int total_clusters;
+  unsigned int avail_clusters;
+  unsigned int sectors_per_cluster;
+  unsigned int bytes_per_sector;
+};
+#endif /* _DISKFREE_T_DEFINED */
+
+int         _chdir(const char*);
+int         _chdrive(int);
+char*       _getcwd(char*,int);
+char*       _getdcwd(int,char*,int);
+int         _getdrive(void);
+unsigned long _getdrives(void);
+int         _mkdir(const char*);
+int         _rmdir(const char*);
+
+#ifndef _WDIRECT_DEFINED
+#define _WDIRECT_DEFINED
+int              _wchdir(const wchar_t*);
+wchar_t* _wgetcwd(wchar_t*,int);
+wchar_t* _wgetdcwd(int,wchar_t*,int);
+int              _wmkdir(const wchar_t*);
+int              _wrmdir(const wchar_t*);
+#endif /* _WDIRECT_DEFINED */
+
+#ifdef __cplusplus
+}
+#endif
+
+
+static inline int chdir(const char* newdir) { return _chdir(newdir); }
+static inline char* getcwd(char * buf, int size) { return _getcwd(buf, size); }
+static inline int mkdir(const char* newdir) { return _mkdir(newdir); }
+static inline int rmdir(const char* dir) { return _rmdir(dir); }
+
+#include <poppack.h>
+
+#endif /* __WINE_DIRECT_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/dirent.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/dirent.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/dirent.h	(revision 16410)
@@ -0,0 +1,1 @@
+#include <direct.h>
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/dos.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/dos.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/dos.h	(revision 16410)
@@ -0,0 +1,51 @@
+/*
+ * DOS definitions
+ *
+ * Derived from the mingw header written by Colin Peters.
+ * Modified for Wine use by Jon Griffiths and Francois Gouget.
+ * This file is in the public domain.
+ */
+#ifndef __WINE_DOS_H
+#define __WINE_DOS_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#include <pshpack8.h>
+
+/* The following are also defined in io.h */
+#define _A_NORMAL 0x00000000
+#define _A_RDONLY 0x00000001
+#define _A_HIDDEN 0x00000002
+#define _A_SYSTEM 0x00000004
+#define _A_VOLID  0x00000008
+#define _A_SUBDIR 0x00000010
+#define _A_ARCH   0x00000020
+
+#ifndef _DISKFREE_T_DEFINED
+#define _DISKFREE_T_DEFINED
+struct _diskfree_t {
+  unsigned int total_clusters;
+  unsigned int avail_clusters;
+  unsigned int sectors_per_cluster;
+  unsigned int bytes_per_sector;
+};
+#endif /* _DISKFREE_T_DEFINED */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+unsigned int _getdiskfree(unsigned int, struct _diskfree_t *);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#define diskfree_t _diskfree_t
+
+#include <poppack.h>
+
+#endif /* __WINE_DOS_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/eh.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/eh.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/eh.h	(revision 16410)
@@ -0,0 +1,49 @@
+/*
+ * C++ exception handling facility
+ *
+ * Copyright 2000 Francois Gouget.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __WINE_EH_H
+#define __WINE_EH_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#if !defined(__cplusplus) && !defined(__WINE_MSVCRT_TEST)
+#error "eh.h is meant only for C++ applications"
+#endif
+
+#include <pshpack8.h>
+
+struct _EXCEPTION_POINTERS;
+
+typedef void (*terminate_handler)(void);
+typedef void (*terminate_function)(void);
+typedef void (*unexpected_handler)(void);
+typedef void (*unexpected_function)(void);
+typedef void (*_se_translator_function)(unsigned int code, struct _EXCEPTION_POINTERS *info);
+
+terminate_function set_terminate(terminate_function func);
+unexpected_function set_unexpected(unexpected_function func);
+_se_translator_function _set_se_translator(_se_translator_function func);
+
+void        terminate(void);
+void        unexpected(void);
+
+#include <poppack.h>
+
+#endif /* __WINE_EH_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/errno.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/errno.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/errno.h	(revision 16410)
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2001 Jon Griffiths
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_ERRNO_H
+#define __WINE_ERRNO_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#  define EPERM   1
+#  define ENOENT  2
+#  define ESRCH   3
+#  define EINTR   4
+#  define EIO     5
+#  define ENXIO   6
+#  define E2BIG   7
+#  define ENOEXEC 8
+#  define EBADF   9
+#  define ECHILD  10
+#  define EAGAIN  11
+#  define ENOMEM  12
+#  define EACCES  13
+#  define EFAULT  14
+#  define EBUSY   16
+#  define EEXIST  17
+#  define EXDEV   18
+#  define ENODEV  19
+#  define ENOTDIR 20
+#  define EISDIR  21
+#  define EINVAL  22
+#  define ENFILE  23
+#  define EMFILE  24
+#  define ENOTTY  25
+#  define EFBIG   27
+#  define ENOSPC  28
+#  define ESPIPE  29
+#  define EROFS   30
+#  define EMLINK  31
+#  define EPIPE   32
+#  define EDOM    33
+#  define ERANGE  34
+#  define EDEADLK 36
+#  define EDEADLOCK EDEADLK
+#  define ENAMETOOLONG 38
+#  define ENOLCK  39
+#  define ENOSYS  40
+#  define ENOTEMPTY 41
+#  define EILSEQ    42
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int* _errno(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#define errno        (*_errno())
+
+#endif  /* __WINE_ERRNO_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/fcntl.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/fcntl.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/fcntl.h	(revision 16410)
@@ -0,0 +1,48 @@
+/*
+ * File definitions
+ *
+ * Derived from the mingw header written by Colin Peters.
+ * Modified for Wine use by Jon Griffiths and Francois Gouget.
+ * This file is in the public domain.
+ */
+#ifndef __WINE_FCNTL_H
+#define __WINE_FCNTL_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#define _O_RDONLY      0
+#define _O_WRONLY      1
+#define _O_RDWR        2
+#define _O_ACCMODE     (_O_RDONLY|_O_WRONLY|_O_RDWR)
+#define _O_APPEND      0x0008
+#define _O_RANDOM      0x0010
+#define _O_SEQUENTIAL  0x0020
+#define _O_TEMPORARY   0x0040
+#define _O_NOINHERIT   0x0080
+#define _O_CREAT       0x0100
+#define _O_TRUNC       0x0200
+#define _O_EXCL        0x0400
+#define _O_SHORT_LIVED 0x1000
+#define _O_TEXT        0x4000
+#define _O_BINARY      0x8000
+#define _O_RAW         _O_BINARY
+
+
+#define O_RDONLY    _O_RDONLY
+#define O_WRONLY    _O_WRONLY
+#define O_RDWR      _O_RDWR
+#define O_ACCMODE   _O_ACCMODE
+#define O_APPEND    _O_APPEND
+#define O_RANDOM    _O_RANDOM
+#define O_SEQENTIAL _O_SEQUENTIAL
+#define O_TEMPORARY _O_TEMPORARY
+#define O_NOINHERIT _O_NOINHERIT
+#define O_CREAT     _O_CREAT
+#define O_TRUNC     _O_TRUNC
+#define O_EXCL      _O_EXCL
+#define O_TEXT      _O_TEXT
+#define O_BINARY    _O_BINARY
+#define O_RAW       _O_BINARY
+
+#endif /* __WINE_FCNTL_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/float.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/float.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/float.h	(revision 16410)
@@ -0,0 +1,143 @@
+/*
+ * Floating point arithmetic.
+ *
+ * Derived from the mingw header written by Colin Peters.
+ * Modified for Wine use by Hans Leidekker.
+ * This file is in the public domain.
+ */
+
+#ifndef __WINE_FLOAT_H
+#define __WINE_FLOAT_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define DBL_DIG        15
+#define DBL_EPSILON    2.2204460492503131e-016
+#define DBL_MANT_DIG   53
+#define DBL_MAX        1.7976931348623158e+308
+#define DBL_MAX_10_EXP 308
+#define DBL_MAX_EXP    1024
+#define DBL_MIN        2.2250738585072014e-308
+#define DBL_MIN_10_EXP (-307)
+#define DBL_MIN_EXP    (-1021)
+
+#define _DBL_RADIX  2
+#define _DBL_ROUNDS 1
+
+#define DBL_RADIX  _DBL_RADIX
+#define DBL_ROUNDS _DBL_ROUNDS
+
+#define FLT_DIG        6
+#define FLT_EPSILON    1.192092896e-07F
+#define FLT_MANT_DIG   24
+#define FLT_MAX        3.402823466e+38F
+#define FLT_MAX_10_EXP 38
+#define FLT_MAX_EXP    128
+#define FLT_MIN        1.175494351e-38F
+#define FLT_MIN_10_EXP (-37)
+#define FLT_MIN_EXP    (-125)
+
+#define FLT_RADIX  2
+#define FLT_ROUNDS 1
+
+#define LDBL_DIG        DBL_DIG
+#define LDBL_EPSILON    DBL_EPSILON
+#define LDBL_MANT_DIG   DBL_MANT_DIG
+#define LDBL_MAX        DBL_MAX
+#define LDBL_MAX_10_EXP DBL_MAX_10_EXP
+#define LDBL_MAX_EXP    DBL_MAX_EXP
+#define LDBL_MIN        DBL_MIN
+#define LDBL_MIN_10_EXP DBL_MIN_10_EXP
+#define LDBL_MIN_EXP    DBL_MIN_EXP
+
+#define _LDBL_RADIX  _DBL_RADIX
+#define _LDBL_ROUNDS _DBL_ROUNDS
+
+#define LDBL_RADIX  _LDBL_RADIX
+#define LDBL_ROUNDS _LDBL_ROUNDS
+
+/* _controlfp masks and bitflags - x86 only so far */
+#ifdef __i386__
+
+/* Control word masks for unMask */
+#define _MCW_EM 0x0008001F  /* Error masks */
+#define _MCW_IC 0x00040000  /* Infinity */
+#define _MCW_RC 0x00000300  /* Rounding */
+#define _MCW_PC 0x00030000  /* Precision */
+
+/* Control word values for unNew (use with related unMask above) */
+#define _EM_INVALID    0x00000010
+#define _EM_DENORMAL   0x00080000
+#define _EM_ZERODIVIDE 0x00000008
+#define _EM_OVERFLOW   0x00000004
+#define _EM_UNDERFLOW  0x00000002
+#define _EM_INEXACT    0x00000001
+#define _IC_AFFINE     0x00040000
+#define _IC_PROJECTIVE 0x00000000
+#define _RC_CHOP       0x00000300
+#define _RC_UP         0x00000200
+#define _RC_DOWN       0x00000100
+#define _RC_NEAR       0x00000000
+#define _PC_24         0x00020000
+#define _PC_53         0x00010000
+#define _PC_64         0x00000000
+#endif
+
+/* _statusfp bit flags */
+#define _SW_INEXACT    0x00000001 /* inexact (precision) */
+#define _SW_UNDERFLOW  0x00000002 /* underflow */
+#define _SW_OVERFLOW   0x00000004 /* overflow */
+#define _SW_ZERODIVIDE 0x00000008 /* zero divide */
+#define _SW_INVALID    0x00000010 /* invalid */
+
+#define _SW_UNEMULATED     0x00000040  /* unemulated instruction */
+#define _SW_SQRTNEG        0x00000080  /* square root of a neg number */
+#define _SW_STACKOVERFLOW  0x00000200  /* FP stack overflow */
+#define _SW_STACKUNDERFLOW 0x00000400  /* FP stack underflow */
+
+#define _SW_DENORMAL 0x00080000 /* denormal status bit */
+
+/* fpclass constants */
+#define _FPCLASS_SNAN 0x0001  /* Signaling "Not a Number" */
+#define _FPCLASS_QNAN 0x0002  /* Quiet "Not a Number" */
+#define _FPCLASS_NINF 0x0004  /* Negative Infinity */
+#define _FPCLASS_NN   0x0008  /* Negative Normal */
+#define _FPCLASS_ND   0x0010  /* Negative Denormal */
+#define _FPCLASS_NZ   0x0020  /* Negative Zero */
+#define _FPCLASS_PZ   0x0040  /* Positive Zero */
+#define _FPCLASS_PD   0x0080  /* Positive Denormal */
+#define _FPCLASS_PN   0x0100  /* Positive Normal */
+#define _FPCLASS_PINF 0x0200  /* Positive Infinity */
+
+/* floating point error signals */
+#define _FPE_INVALID            0x81
+#define _FPE_DENORMAL           0x82
+#define _FPE_ZERODIVIDE         0x83
+#define _FPE_OVERFLOW           0x84
+#define _FPE_UNDERFLOW          0x85
+#define _FPE_INEXACT            0x86
+#define _FPE_UNEMULATED         0x87
+#define _FPE_SQRTNEG            0x88
+#define _FPE_STACKOVERFLOW      0x8a
+#define _FPE_STACKUNDERFLOW     0x8b
+#define _FPE_EXPLICITGEN        0x8c
+
+double _copysign (double, double);
+double _chgsign (double);
+double _scalb(double, long);
+double _logb(double);
+double _nextafter(double, double);
+int    _finite(double);
+int    _isnan(double);
+int    _fpclass(double);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_FLOAT_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/io.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/io.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/io.h	(revision 16410)
@@ -0,0 +1,196 @@
+/*
+ * System I/O definitions.
+ *
+ * Derived from the mingw header written by Colin Peters.
+ * Modified for Wine use by Jon Griffiths and Francois Gouget.
+ * This file is in the public domain.
+ */
+#ifndef __WINE_IO_H
+#define __WINE_IO_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#include <pshpack8.h>
+
+#ifndef _WCHAR_T_DEFINED
+#define _WCHAR_T_DEFINED
+#ifndef __cplusplus
+typedef unsigned short wchar_t;
+#endif
+#endif
+
+#if defined(__x86_64__) && !defined(_WIN64)
+#define _WIN64
+#endif
+
+#if !defined(_MSC_VER) && !defined(__int64)
+# ifdef _WIN64
+#   define __int64 long
+# else
+#   define __int64 long long
+# endif
+#endif
+
+/* The following are also defined in dos.h */
+#define _A_NORMAL 0x00000000
+#define _A_RDONLY 0x00000001
+#define _A_HIDDEN 0x00000002
+#define _A_SYSTEM 0x00000004
+#define _A_VOLID  0x00000008
+#define _A_SUBDIR 0x00000010
+#define _A_ARCH   0x00000020
+
+#ifndef _TIME_T_DEFINED
+typedef long time_t;
+#define _TIME_T_DEFINED
+#endif
+
+#ifndef _FSIZE_T_DEFINED
+typedef unsigned long _fsize_t;
+#define _FSIZE_T_DEFINED
+#endif
+
+#ifndef _FINDDATA_T_DEFINED
+#define _FINDDATA_T_DEFINED
+struct _finddata_t
+{
+  unsigned attrib;
+  time_t   time_create;
+  time_t   time_access;
+  time_t   time_write;
+  _fsize_t size;
+  char             name[260];
+};
+
+struct _finddatai64_t
+{
+  unsigned attrib;
+  time_t time_create;
+  time_t time_access;
+  time_t time_write;
+  __int64        size;
+  char           name[260];
+};
+#endif /* _FINDDATA_T_DEFINED */
+
+#ifndef _WFINDDATA_T_DEFINED
+#define _WFINDDATA_T_DEFINED
+struct _wfinddata_t {
+  unsigned attrib;
+  time_t   time_create;
+  time_t   time_access;
+  time_t   time_write;
+  _fsize_t size;
+  wchar_t  name[260];
+};
+
+struct _wfinddatai64_t {
+  unsigned attrib;
+  time_t  time_create;
+  time_t  time_access;
+  time_t  time_write;
+  __int64         size;
+  wchar_t name[260];
+};
+#endif /* _WFINDDATA_T_DEFINED */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int         _access(const char*,int);
+int         _chmod(const char*,int);
+int         _chsize(int,long);
+int         _close(int);
+int         _commit(int);
+int         _creat(const char*,int);
+int         _dup(int);
+int         _dup2(int,int);
+int         _eof(int);
+__int64     _filelengthi64(int);
+long        _filelength(int);
+int         _findclose(long);
+long        _findfirst(const char*,struct _finddata_t*);
+long        _findfirsti64(const char*, struct _finddatai64_t*);
+int         _findnext(long,struct _finddata_t*);
+int         _findnexti64(long, struct _finddatai64_t*);
+long        _get_osfhandle(int);
+int         _isatty(int);
+int         _locking(int,int,long);
+long        _lseek(int,long,int);
+__int64     _lseeki64(int,__int64,int);
+char*       _mktemp(char*);
+int         _open(const char*,int,...);
+int         _open_osfhandle(long,int);
+int         _pipe(int*,unsigned int,int);
+int         _read(int,void*,unsigned int);
+int         _setmode(int,int);
+int         _sopen(const char*,int,int,...);
+long        _tell(int);
+__int64     _telli64(int);
+int         _umask(int);
+int         _unlink(const char*);
+int         _write(int,const void*,unsigned int);
+
+int         remove(const char*);
+int         rename(const char*,const char*);
+
+#ifndef _WIO_DEFINED
+#define _WIO_DEFINED
+int         _waccess(const wchar_t*,int);
+int         _wchmod(const wchar_t*,int);
+int         _wcreat(const wchar_t*,int);
+long        _wfindfirst(const wchar_t*,struct _wfinddata_t*);
+long        _wfindfirsti64(const wchar_t*, struct _wfinddatai64_t*);
+int         _wfindnext(long,struct _wfinddata_t*);
+int         _wfindnexti64(long, struct _wfinddatai64_t*);
+wchar_t*_wmktemp(wchar_t*);
+int         _wopen(const wchar_t*,int,...);
+int         _wrename(const wchar_t*,const wchar_t*);
+int         _wsopen(const wchar_t*,int,int,...);
+int         _wunlink(const wchar_t*);
+#endif /* _WIO_DEFINED */
+
+#ifdef __cplusplus
+}
+#endif
+
+
+static inline int access(const char* path, int mode) { return _access(path, mode); }
+static inline int chmod(const char* path, int mode) { return _chmod(path, mode); }
+static inline int chsize(int fd, long size) { return _chsize(fd, size); }
+static inline int close(int fd) { return _close(fd); }
+static inline int creat(const char* path, int mode) { return _creat(path, mode); }
+static inline int dup(int od) { return _dup(od); }
+static inline int dup2(int od, int nd) { return _dup2(od, nd); }
+static inline int eof(int fd) { return _eof(fd); }
+static inline long filelength(int fd) { return _filelength(fd); }
+static inline int isatty(int fd) { return _isatty(fd); }
+static inline int locking(int fd, int mode, long size) { return _locking(fd, mode, size); }
+static inline long lseek(int fd, long off, int where) { return _lseek(fd, off, where); }
+static inline char* mktemp(char* pat) { return _mktemp(pat); }
+static inline int read(int fd, void* buf, unsigned int size) { return _read(fd, buf, size); }
+static inline int setmode(int fd, int mode) { return _setmode(fd, mode); }
+static inline long tell(int fd) { return _tell(fd); }
+#ifndef _UMASK_DEFINED
+static inline int umask(int fd) { return _umask(fd); }
+#define _UMASK_DEFINED
+#endif
+#ifndef _UNLINK_DEFINED
+static inline int unlink(const char* path) { return _unlink(path); }
+#define _UNLINK_DEFINED
+#endif
+static inline int write(int fd, const void* buf, unsigned int size) { return _write(fd, buf, size); }
+
+#if defined(__GNUC__) && (__GNUC__ < 4)
+extern int open(const char*,int,...) __attribute__((alias("_open")));
+extern int sopen(const char*,int,int,...) __attribute__((alias("_sopen")));
+#else
+#define open _open
+#define sopen _sopen
+#endif /* __GNUC__ */
+
+#include <poppack.h>
+
+#endif /* __WINE_IO_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/limits.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/limits.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/limits.h	(revision 16410)
@@ -0,0 +1,39 @@
+#ifndef __WINE_LIMITS_H
+#define __WINE_LIMITS_H
+
+#define CHAR_BIT 8
+#define MB_LEN_MAX 2
+
+#define SCHAR_MIN (-0x80)
+#define SCHAR_MAX   0x7f
+#define UCHAR_MAX   0xff
+
+#ifdef __CHAR_UNSIGNED__
+# define CHAR_MIN 0
+# define CHAR_MAX UCHAR_MAX
+#else
+# define CHAR_MIN SCHAR_MIN
+# define CHAR_MAX SCHAR_MAX
+#endif
+
+#define SHRT_MIN  (-0x8000)
+#define SHRT_MAX    0x7fff
+#define USHRT_MAX   0xffff
+
+#define INT_MIN   (-0x80000000)
+#define INT_MAX     0x7fffffff
+#define UINT_MAX    0xffffffff
+
+#define LONG_MIN  (-0x80000000L)
+#define LONG_MAX    0x7fffffffL
+#define ULONG_MAX   0xffffffffUL
+
+#define _I64_MAX    (((__int64)0x7fffffff << 32) | 0xffffffff)
+#define _I64_MIN    (-_I64_MAX-1)
+#define _UI64_MAX   (((unsigned __int64)0xffffffff << 32) | 0xffffffff)
+
+#define I64_MIN  _I64_MIN
+#define I64_MAX  _I64_MAX
+#define UI64_MAX _UI64_MAX
+
+#endif /* __WINE_LIMITS_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/locale.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/locale.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/locale.h	(revision 16410)
@@ -0,0 +1,84 @@
+/*
+ * Locale definitions
+ *
+ * Copyright 2000 Francois Gouget.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __WINE_LOCALE_H
+#define __WINE_LOCALE_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#ifndef _WCHAR_T_DEFINED
+#define _WCHAR_T_DEFINED
+#ifndef __cplusplus
+typedef unsigned short wchar_t;
+#endif
+#endif
+
+#define LC_ALL                 0
+#define LC_COLLATE             1
+#define LC_CTYPE               2
+#define LC_MONETARY            3
+#define LC_NUMERIC             4
+#define LC_TIME                5
+#define LC_MIN                 LC_ALL
+#define LC_MAX                 LC_TIME
+
+#ifndef _LCONV_DEFINED
+#define _LCONV_DEFINED
+struct lconv
+{
+    char* decimal_point;
+    char* thousands_sep;
+    char* grouping;
+    char* int_curr_symbol;
+    char* currency_symbol;
+    char* mon_decimal_point;
+    char* mon_thousands_sep;
+    char* mon_grouping;
+    char* positive_sign;
+    char* negative_sign;
+    char int_frac_digits;
+    char frac_digits;
+    char p_cs_precedes;
+    char p_sep_by_space;
+    char n_cs_precedes;
+    char n_sep_by_space;
+    char p_sign_posn;
+    char n_sign_posn;
+};
+#endif /* _LCONV_DEFINED */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+char*       setlocale(int,const char*);
+struct lconv* localeconv(void);
+
+#ifndef _WLOCALE_DEFINED
+#define _WLOCALE_DEFINED
+wchar_t* _wsetlocale(int,const wchar_t*);
+#endif /* _WLOCALE_DEFINED */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_LOCALE_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/malloc.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/malloc.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/malloc.h	(revision 16410)
@@ -0,0 +1,107 @@
+/*
+ * Heap definitions
+ *
+ * Copyright 2001 Francois Gouget.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __WINE_MALLOC_H
+#define __WINE_MALLOC_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+/* heap function constants */
+#define _HEAPEMPTY    -1
+#define _HEAPOK       -2
+#define _HEAPBADBEGIN -3
+#define _HEAPBADNODE  -4
+#define _HEAPEND      -5
+#define _HEAPBADPTR   -6
+
+#define _FREEENTRY     0
+#define _USEDENTRY     1
+
+#if defined(__x86_64__) && !defined(_WIN64)
+#define _WIN64
+#endif
+
+#if !defined(_MSC_VER) && !defined(__int64)
+# ifdef _WIN64
+#   define __int64 long
+# else
+#   define __int64 long long
+# endif
+#endif
+
+#ifndef _SIZE_T_DEFINED
+#ifdef _WIN64
+typedef unsigned __int64 size_t;
+#else
+typedef unsigned int size_t;
+#endif
+#define _SIZE_T_DEFINED
+#endif
+
+#ifndef _HEAPINFO_DEFINED
+#define _HEAPINFO_DEFINED
+typedef struct _heapinfo
+{
+  int*           _pentry;
+  size_t _size;
+  int            _useflag;
+} _HEAPINFO;
+#endif /* _HEAPINFO_DEFINED */
+
+extern unsigned int* __p__amblksiz(void);
+#define _amblksiz (*__p__amblksiz());
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void*       _expand(void*,size_t);
+int         _heapadd(void*,size_t);
+int         _heapchk(void);
+int         _heapmin(void);
+int         _heapset(unsigned int);
+size_t _heapused(size_t*,size_t*);
+int         _heapwalk(_HEAPINFO*);
+size_t _msize(void*);
+
+void*       calloc(size_t,size_t);
+void        free(void*);
+void*       malloc(size_t);
+void*       realloc(void*,size_t);
+
+void        _aligned_free(void*);
+void*       _aligned_malloc(size_t,size_t);
+void*       _aligned_offset_malloc(size_t,size_t,size_t);
+void*       _aligned_realloc(void*,size_t,size_t);
+void*       _aligned_offset_realloc(void*,size_t,size_t,size_t);
+
+size_t _get_sbh_threshold(void);
+int _set_sbh_threshold(size_t size);
+
+#ifdef __cplusplus
+}
+#endif
+
+# ifdef __GNUC__
+# define _alloca(x) __builtin_alloca((x))
+# define alloca(x) __builtin_alloca((x))
+# endif
+
+#endif /* __WINE_MALLOC_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/math.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/math.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/math.h	(revision 16410)
@@ -0,0 +1,101 @@
+/*
+ * Math functions.
+ *
+ * Derived from the mingw header written by Colin Peters.
+ * Modified for Wine use by Hans Leidekker.
+ * This file is in the public domain.
+ */
+
+#ifndef __WINE_MATH_H
+#define __WINE_MATH_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#include <pshpack8.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define _DOMAIN         1       /* domain error in argument */
+#define _SING           2       /* singularity */
+#define _OVERFLOW       3       /* range overflow */
+#define _UNDERFLOW      4       /* range underflow */
+#define _TLOSS          5       /* total loss of precision */
+#define _PLOSS          6       /* partial loss of precision */
+
+#ifndef _EXCEPTION_DEFINED
+#define _EXCEPTION_DEFINED
+struct _exception
+{
+  int     type;
+  char    *name;
+  double  arg1;
+  double  arg2;
+  double  retval;
+};
+#endif /* _EXCEPTION_DEFINED */
+
+#ifndef _COMPLEX_DEFINED
+#define _COMPLEX_DEFINED
+struct _complex
+{
+  double x;      /* Real part */
+  double y;      /* Imaginary part */
+};
+#endif /* _COMPLEX_DEFINED */
+
+double sin(double);
+double cos(double);
+double tan(double);
+double sinh(double);
+double cosh(double);
+double tanh(double);
+double asin(double);
+double acos(double);
+double atan(double);
+double atan2(double, double);
+double exp(double);
+double log(double);
+double log10(double);
+double pow(double, double);
+double sqrt(double);
+double ceil(double);
+double floor(double);
+double fabs(double);
+double ldexp(double, int);
+double frexp(double, int*);
+double modf(double, double*);
+double fmod(double, double);
+
+double hypot(double, double);
+double j0(double);
+double j1(double);
+double jn(int, double);
+double y0(double);
+double y1(double);
+double yn(int, double);
+
+int _matherr(struct _exception*);
+double _cabs(struct _complex);
+
+#ifndef HUGE_VAL
+#  if defined(__GNUC__) && (__GNUC__ >= 3)
+#    define HUGE_VAL    (__extension__ 0x1.0p2047)
+#  else
+static const union {
+    unsigned char __c[8];
+    double __d;
+} __huge_val = { { 0, 0, 0, 0, 0, 0, 0xf0, 0x7f } };
+#    define HUGE_VAL    (__huge_val.__d)
+#  endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <poppack.h>
+
+#endif /* __WINE_MATH_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/mbctype.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/mbctype.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/mbctype.h	(revision 16410)
@@ -0,0 +1,77 @@
+/*
+ * Multibyte char definitions
+ *
+ * Copyright 2001 Francois Gouget.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __WINE_MBCTYPE_H
+#define __WINE_MBCTYPE_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+unsigned char* __p__mbctype(void);
+#define _mbctype                   (__p__mbctype())
+
+#define _MS     0x01
+#define _MP     0x02
+#define _M1     0x04
+#define _M2     0x08
+
+#define _SBUP   0x10
+#define _SBLOW  0x20
+
+#define _MBC_SINGLE     0
+#define _MBC_LEAD       1
+#define _MBC_TRAIL      2
+#define _MBC_ILLEGAL    -1
+
+#define _KANJI_CP   932
+
+#define _MB_CP_SBCS     0
+#define _MB_CP_OEM      -2
+#define _MB_CP_ANSI     -3
+#define _MB_CP_LOCALE   -4
+
+int         _getmbcp(void);
+int         _ismbbalnum(unsigned int);
+int         _ismbbalpha(unsigned int);
+int         _ismbbgraph(unsigned int);
+int         _ismbbkalnum(unsigned int);
+int         _ismbbkana(unsigned int);
+int         _ismbbkprint(unsigned int);
+int         _ismbbkpunct(unsigned int);
+int         _ismbbprint(unsigned int);
+int         _ismbbpunct(unsigned int);
+int         _setmbcp(int);
+
+#ifndef _MBLEADTRAIL_DEFINED
+#define _MBLEADTRAIL_DEFINED
+int         _ismbblead(unsigned int);
+int         _ismbbtrail(unsigned int);
+int         _ismbslead(const unsigned char*,const unsigned char*);
+int         _ismbstrail(const unsigned char*,const unsigned char*);
+#endif /* _MBLEADTRAIL_DEFINED */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_MBCTYPE_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/mbstring.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/mbstring.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/mbstring.h	(revision 16410)
@@ -0,0 +1,145 @@
+/*
+ * Multibyte string definitions
+ *
+ * Copyright 2001 Francois Gouget.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __WINE_MBSTRING_H
+#define __WINE_MBSTRING_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#include <pshpack8.h>
+
+#if defined(__x86_64__) && !defined(_WIN64)
+#define _WIN64
+#endif
+
+#if !defined(_MSC_VER) && !defined(__int64)
+# ifdef _WIN64
+#   define __int64 long
+# else
+#   define __int64 long long
+# endif
+#endif
+
+#ifndef _SIZE_T_DEFINED
+#ifdef _WIN64
+typedef unsigned __int64 size_t;
+#else
+typedef unsigned int size_t;
+#endif
+#define _SIZE_T_DEFINED
+#endif
+
+#ifndef _NLSCMP_DEFINED
+#define _NLSCMPERROR               ((unsigned int)0x7fffffff)
+#define _NLSCMP_DEFINED
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int         _ismbcalnum(unsigned int);
+int         _ismbcalpha(unsigned int);
+int         _ismbcdigit(unsigned int);
+int         _ismbcgraph(unsigned int);
+int         _ismbchira(unsigned int);
+int         _ismbckata(unsigned int);
+int         _ismbcl0(unsigned int);
+int         _ismbcl1(unsigned int);
+int         _ismbcl2(unsigned int);
+int         _ismbclegal(unsigned int);
+int         _ismbclower(unsigned int);
+int         _ismbcprint(unsigned int);
+int         _ismbcpunct(unsigned int);
+int         _ismbcspace(unsigned int);
+int         _ismbcsymbol(unsigned int);
+int         _ismbcupper(unsigned int);
+unsigned int _mbbtombc(unsigned int);
+int         _mbbtype(unsigned char,int);
+#define     _mbccmp(_cpc1,_cpc2) _mbsncmp((_cpc1),(_cpc2),1)
+void        _mbccpy(unsigned char*,const unsigned char*);
+unsigned int _mbcjistojms(unsigned int);
+unsigned int _mbcjmstojis(unsigned int);
+size_t _mbclen(const unsigned char*);
+unsigned int _mbctohira(unsigned int);
+unsigned int _mbctokata(unsigned int);
+unsigned int _mbctolower(unsigned int);
+unsigned int _mbctombb(unsigned int);
+unsigned int _mbctoupper(unsigned int);
+int         _mbsbtype(const unsigned char*,size_t);
+unsigned char* _mbscat(unsigned char*,const unsigned char*);
+unsigned char* _mbschr(const unsigned char*,unsigned int);
+int         _mbscmp(const unsigned char*,const unsigned char*);
+int         _mbscoll(const unsigned char*,const unsigned char*);
+unsigned char* _mbscpy(unsigned char*,const unsigned char*);
+size_t _mbscspn(const unsigned char*,const unsigned char*);
+unsigned char* _mbsdec(const unsigned char*,const unsigned char*);
+unsigned char* _mbsdup(const unsigned char*);
+int         _mbsicmp(const unsigned char*,const unsigned char*);
+int         _mbsicoll(const unsigned char*,const unsigned char*);
+unsigned char* _mbsinc(const unsigned char*);
+size_t _mbslen(const unsigned char*);
+unsigned char* _mbslwr(unsigned char*);
+unsigned char* _mbsnbcat(unsigned char*,const unsigned char*,size_t);
+int         _mbsnbcmp(const unsigned char*,const unsigned char*,size_t);
+int         _mbsnbcoll(const unsigned char*,const unsigned char*,size_t);
+size_t _mbsnbcnt(const unsigned char*,size_t);
+unsigned char* _mbsnbcpy(unsigned char*,const unsigned char*
+,size_t);
+int         _mbsnbicmp(const unsigned char*,const unsigned char*,size_t);
+int         _mbsnbicoll(const unsigned char*,const unsigned char*,size_t);
+unsigned char* _mbsnbset(unsigned char*,unsigned int,size_t)
+;
+unsigned char* _mbsncat(unsigned char*,const unsigned char*,
+ size_t);
+size_t _mbsnccnt(const unsigned char*,size_t);
+int         _mbsncmp(const unsigned char*,const unsigned char*,size_t);
+int         _mbsncoll(const unsigned char*,const unsigned char*,size_t);
+unsigned char* _mbsncpy(unsigned char*,const unsigned char*,size_t);
+unsigned int _mbsnextc (const unsigned char*);
+int         _mbsnicmp(const unsigned char*,const unsigned char*,size_t);
+int         _mbsnicoll(const unsigned char*,const unsigned char*,size_t);
+unsigned char* _mbsninc(const unsigned char*,size_t);
+unsigned char* _mbsnset(unsigned char*,unsigned int,size_t);
+unsigned char* _mbspbrk(const unsigned char*,const unsigned char*);
+unsigned char* _mbsrchr(const unsigned char*,unsigned int);
+unsigned char* _mbsrev(unsigned char*);
+unsigned char* _mbsset(unsigned char*,unsigned int);
+size_t _mbsspn(const unsigned char*,const unsigned char*);
+unsigned char* _mbsspnp(const unsigned char*,const unsigned char*);
+unsigned char* _mbsstr(const unsigned char*,const unsigned char*);
+unsigned char* _mbstok(unsigned char*,const unsigned char*);
+unsigned char* _mbsupr(unsigned char*);
+
+#ifndef _MBLEADTRAIL_DEFINED
+#define _MBLEADTRAIL_DEFINED
+int         _ismbblead(unsigned int);
+int         _ismbbtrail(unsigned int);
+int         _ismbslead(const unsigned char*,const unsigned char*);
+int         _ismbstrail(const unsigned char*,const unsigned char*);
+#endif /* _MBLEADTRAIL_DEFINED */
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <poppack.h>
+
+#endif /* __WINE_MBSTRING_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/process.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/process.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/process.h	(revision 16410)
@@ -0,0 +1,154 @@
+/*
+ * Process definitions
+ *
+ * Derived from the mingw header written by Colin Peters.
+ * Modified for Wine use by Jon Griffiths and Francois Gouget.
+ * This file is in the public domain.
+ */
+#ifndef __WINE_PROCESS_H
+#define __WINE_PROCESS_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#ifndef _WCHAR_T_DEFINED
+#define _WCHAR_T_DEFINED
+#ifndef __cplusplus
+typedef unsigned short wchar_t;
+#endif
+#endif
+
+/* Process creation flags */
+#define _P_WAIT    0
+#define _P_NOWAIT  1
+#define _P_OVERLAY 2
+#define _P_NOWAITO 3
+#define _P_DETACH  4
+
+#define _WAIT_CHILD      0
+#define _WAIT_GRANDCHILD 1
+
+#ifndef __stdcall
+# ifdef __i386__
+#  ifdef __GNUC__
+#   ifdef __APPLE__ /* Mac OS X uses a 16-byte aligned stack and not a 4-byte one */
+#    define __stdcall __attribute__((__stdcall__)) __attribute__((__force_align_arg_pointer__))
+#   else
+#    define __stdcall __attribute__((__stdcall__))
+#   endif
+#  elif defined(_MSC_VER)
+    /* Nothing needs to be done. __stdcall already exists */
+#  else
+#   error You need to define __stdcall for your compiler
+#  endif
+# elif defined(__x86_64__) && defined (__GNUC__)
+#  define __stdcall __attribute__((ms_abi))
+# else
+#  define __stdcall
+# endif
+#endif /* __stdcall */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef void (*_beginthread_start_routine_t)(void *);
+typedef unsigned int (__stdcall *_beginthreadex_start_routine_t)(void *);
+
+uintptr_t _beginthread(_beginthread_start_routine_t,unsigned int,void*);
+uintptr_t _beginthreadex(void*,unsigned int,_beginthreadex_start_routine_t,void*,unsigned int,unsigned int*);
+intptr_t    _cwait(int*,intptr_t,int);
+void        _endthread(void);
+void        _endthreadex(unsigned int);
+intptr_t    _execl(const char*,const char*,...);
+intptr_t    _execle(const char*,const char*,...);
+intptr_t    _execlp(const char*,const char*,...);
+intptr_t    _execlpe(const char*,const char*,...);
+intptr_t    _execv(const char*,char* const *);
+intptr_t    _execve(const char*,char* const *,const char* const *);
+intptr_t    _execvp(const char*,char* const *);
+intptr_t    _execvpe(const char*,char* const *,const char* const *);
+int         _getpid(void);
+intptr_t    _spawnl(int,const char*,const char*,...);
+intptr_t    _spawnle(int,const char*,const char*,...);
+intptr_t    _spawnlp(int,const char*,const char*,...);
+intptr_t    _spawnlpe(int,const char*,const char*,...);
+intptr_t    _spawnv(int,const char*,const char* const *);
+intptr_t    _spawnve(int,const char*,const char* const *,const char* const *);
+intptr_t    _spawnvp(int,const char*,const char* const *);
+intptr_t    _spawnvpe(int,const char*,const char* const *,const char* const *);
+
+void        _c_exit(void);
+void        _cexit(void);
+void        _exit(int);
+void        abort(void);
+void        exit(int);
+int         system(const char*);
+
+#ifndef _WPROCESS_DEFINED
+#define _WPROCESS_DEFINED
+intptr_t    _wexecl(const wchar_t*,const wchar_t*,...);
+intptr_t    _wexecle(const wchar_t*,const wchar_t*,...);
+intptr_t    _wexeclp(const wchar_t*,const wchar_t*,...);
+intptr_t    _wexeclpe(const wchar_t*,const wchar_t*,...);
+intptr_t    _wexecv(const wchar_t*,const wchar_t* const *);
+intptr_t    _wexecve(const wchar_t*,const wchar_t* const *,const wchar_t* const *);
+intptr_t    _wexecvp(const wchar_t*,const wchar_t* const *);
+intptr_t    _wexecvpe(const wchar_t*,const wchar_t* const *,const wchar_t* const *);
+intptr_t    _wspawnl(int,const wchar_t*,const wchar_t*,...);
+intptr_t    _wspawnle(int,const wchar_t*,const wchar_t*,...);
+intptr_t    _wspawnlp(int,const wchar_t*,const wchar_t*,...);
+intptr_t    _wspawnlpe(int,const wchar_t*,const wchar_t*,...);
+intptr_t    _wspawnv(int,const wchar_t*,const wchar_t* const *);
+intptr_t    _wspawnve(int,const wchar_t*,const wchar_t* const *,const wchar_t* const *);
+intptr_t    _wspawnvp(int,const wchar_t*,const wchar_t* const *);
+intptr_t    _wspawnvpe(int,const wchar_t*,const wchar_t* const *,const wchar_t* const *);
+int         _wsystem(const wchar_t*);
+#endif /* _WPROCESS_DEFINED */
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#define P_WAIT          _P_WAIT
+#define P_NOWAIT        _P_NOWAIT
+#define P_OVERLAY       _P_OVERLAY
+#define P_NOWAITO       _P_NOWAITO
+#define P_DETACH        _P_DETACH
+
+#define WAIT_CHILD      _WAIT_CHILD
+#define WAIT_GRANDCHILD _WAIT_GRANDCHILD
+
+static inline intptr_t cwait(int *status, intptr_t pid, int action) { return _cwait(status, pid, action); }
+static inline int getpid(void) { return _getpid(); }
+static inline intptr_t execv(const char* name, char* const* argv) { return _execv(name, argv); }
+static inline intptr_t execve(const char* name, char* const* argv, const char* const* envv) { return _execve(name, argv, envv); }
+static inline intptr_t execvp(const char* name, char* const* argv) { return _execvp(name, argv); }
+static inline intptr_t execvpe(const char* name, char* const* argv, const char* const* envv) { return _execvpe(name, argv, envv); }
+static inline intptr_t spawnv(int flags, const char* name, const char* const* argv) { return _spawnv(flags, name, argv); }
+static inline intptr_t spawnve(int flags, const char* name, const char* const* argv, const char* const* envv) { return _spawnve(flags, name, argv, envv); }
+static inline intptr_t spawnvp(int flags, const char* name, const char* const* argv) { return _spawnvp(flags, name, argv); }
+static inline intptr_t spawnvpe(int flags, const char* name, const char* const* argv, const char* const* envv) { return _spawnvpe(flags, name, argv, envv); }
+
+#if defined(__GNUC__) && (__GNUC__ < 4)
+extern intptr_t execl(const char*,const char*,...) __attribute__((alias("_execl")));
+extern intptr_t execle(const char*,const char*,...) __attribute__((alias("_execle")));
+extern intptr_t execlp(const char*,const char*,...) __attribute__((alias("_execlp")));
+extern intptr_t execlpe(const char*,const char*,...) __attribute__((alias("_execlpe")));
+extern intptr_t spawnl(int,const char*,const char*,...) __attribute__((alias("_spawnl")));
+extern intptr_t spawnle(int,const char*,const char*,...) __attribute__((alias("_spawnle")));
+extern intptr_t spawnlp(int,const char*,const char*,...) __attribute__((alias("_spawnlp")));
+extern intptr_t spawnlpe(int,const char*,const char*,...) __attribute__((alias("_spawnlpe")));
+#else
+#define execl    _execl
+#define execle   _execle
+#define execlp   _execlp
+#define execlpe  _execlpe
+#define spawnl   _spawnl
+#define spawnle  _spawnle
+#define spawnlp  _spawnlp
+#define spawnlpe _spawnlpe
+#endif  /* __GNUC__ */
+
+#endif /* __WINE_PROCESS_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/search.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/search.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/search.h	(revision 16410)
@@ -0,0 +1,69 @@
+/*
+ * Heap definitions
+ *
+ * Copyright 2001 Francois Gouget.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __WINE_SEARCH_H
+#define __WINE_SEARCH_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#if defined(__x86_64__) && !defined(_WIN64)
+#define _WIN64
+#endif
+
+#if !defined(_MSC_VER) && !defined(__int64)
+# ifdef _WIN64
+#   define __int64 long
+# else
+#   define __int64 long long
+# endif
+#endif
+
+#ifndef _SIZE_T_DEFINED
+#ifdef _WIN64
+typedef unsigned __int64 size_t;
+#else
+typedef unsigned int size_t;
+#endif
+#define _SIZE_T_DEFINED
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void*       _lfind(const void*,const void*,unsigned int*,unsigned int,
+                   int (*)(const void*,const void*));
+void*       _lsearch(const void*,void*,unsigned int*,unsigned int,
+                     int (*)(const void*,const void*));
+void*       bsearch(const void*,const void*,size_t,size_t,
+                            int (*)(const void*,const void*));
+void        qsort(void*,size_t,size_t,
+                          int (*)(const void*,const void*));
+
+#ifdef __cplusplus
+}
+#endif
+
+
+static inline void* lfind(const void* match, const void* start, unsigned int* array_size, unsigned int elem_size, int (*cf)(const void*,const void*)) { return _lfind(match, start, array_size, elem_size, cf); }
+static inline void* lsearch(const void* match, void* start, unsigned int* array_size, unsigned int elem_size, int (*cf)(const void*,const void*) ) { return _lsearch(match, start, array_size, elem_size, cf); }
+
+#endif /* __WINE_SEARCH_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/setjmp.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/setjmp.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/setjmp.h	(revision 16410)
@@ -0,0 +1,68 @@
+/*
+ * Setjmp/Longjmp definitions
+ *
+ * Copyright 2001 Francois Gouget.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __WINE_SETJMP_H
+#define __WINE_SETJMP_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#include <pshpack8.h>
+
+#ifdef __i386__
+
+typedef struct __JUMP_BUFFER
+{
+    unsigned long Ebp;
+    unsigned long Ebx;
+    unsigned long Edi;
+    unsigned long Esi;
+    unsigned long Esp;
+    unsigned long Eip;
+    unsigned long Registration;
+    unsigned long TryLevel;
+    /* Start of new struct members */
+    unsigned long Cookie;
+    unsigned long UnwindFunc;
+    unsigned long UnwindData[6];
+} _JUMP_BUFFER;
+
+#endif /* __i386__ */
+
+#define _JBLEN                     16
+#define _JBTYPE                    int
+typedef _JBTYPE                    jmp_buf[_JBLEN];
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int         _setjmp(jmp_buf);
+int         longjmp(jmp_buf,int);
+
+#ifdef __cplusplus
+}
+#endif
+
+#define setjmp _setjmp
+
+#include <poppack.h>
+
+#endif /* __WINE_SETJMP_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/share.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/share.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/share.h	(revision 16410)
@@ -0,0 +1,42 @@
+/*
+ * share.h
+ *
+ * Constants for file sharing functions.
+ *
+ * Derived from the Mingw32 header written by Colin Peters.
+ * Modified for Wine use by Bill Medland
+ * This file is in the public domain.
+ *
+ * Original header contained the following
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __WINE_SHARE_H
+#define __WINE_SHARE_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#define	SH_COMPAT	0x00	/* Compatibility */
+#define	SH_DENYRW	0x10	/* Deny read/write */
+#define	SH_DENYWR	0x20	/* Deny write */
+#define	SH_DENYRD	0x30	/* Deny read */
+#define	SH_DENYNO	0x40	/* Deny nothing */
+
+#define _SH_COMPAT SH_COMPAT
+#define _SH_DENYRW SH_DENYRW
+#define _SH_DENYWR SH_DENYWR
+#define _SH_DENYRD SH_DENYRD
+#define _SH_DENYNO SH_DENYNO
+
+#endif	/* __WINE_SHARE_H_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/signal.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/signal.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/signal.h	(revision 16410)
@@ -0,0 +1,53 @@
+/*
+ * Signal definitions
+ *
+ * Copyright 2005 Juan Lang
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef _WINE_SIGNAL_H
+#define _WINE_SIGNAL_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#define SIGINT   2
+#define SIGILL   4
+#define SIGFPE   8
+#define SIGSEGV  11
+#define SIGTERM  15
+#define SIGBREAK 21
+#define SIGABRT  22
+
+#define NSIG     (SIGABRT + 1)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef void (*__sighandler_t)(int);
+
+#define SIG_DFL ((__sighandler_t)0)
+#define SIG_IGN ((__sighandler_t)1)
+#define SIG_ERR ((__sighandler_t)-1)
+
+__sighandler_t signal(int sig, __sighandler_t func);
+int raise(int sig);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _WINE_SIGNAL_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/stddef.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/stddef.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/stddef.h	(revision 16410)
@@ -0,0 +1,108 @@
+/*
+ * Time definitions
+ *
+ * Copyright 2000 Francois Gouget.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __WINE_STDDEF_H
+#define __WINE_STDDEF_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#if defined(__x86_64__) && !defined(_WIN64)
+#define _WIN64
+#endif
+
+#if !defined(_MSC_VER) && !defined(__int64)
+# ifdef _WIN64
+#   define __int64 long
+# else
+#   define __int64 long long
+# endif
+#endif
+
+#ifndef _WCHAR_T_DEFINED
+#define _WCHAR_T_DEFINED
+#ifndef __cplusplus
+typedef unsigned short wchar_t;
+#endif
+#endif
+
+#ifndef _INTPTR_T_DEFINED
+#ifdef  _WIN64
+typedef __int64 intptr_t;
+#else
+typedef int intptr_t;
+#endif
+#define _INTPTR_T_DEFINED
+#endif
+
+#ifndef _UINTPTR_T_DEFINED
+#ifdef  _WIN64
+typedef unsigned __int64 uintptr_t;
+#else
+typedef unsigned int uintptr_t;
+#endif
+#define _UINTPTR_T_DEFINED
+#endif
+
+#ifndef _PTRDIFF_T_DEFINED
+#ifdef _WIN64
+typedef __int64 ptrdiff_t;
+#else
+typedef int ptrdiff_t;
+#endif
+#define _PTRDIFF_T_DEFINED
+#endif
+
+#ifndef _SIZE_T_DEFINED
+#ifdef _WIN64
+typedef unsigned __int64 size_t;
+#else
+typedef unsigned int size_t;
+#endif
+#define _SIZE_T_DEFINED
+#endif
+
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL  0
+#else
+#define NULL  ((void *)0)
+#endif
+#endif
+
+#ifdef _WIN64
+#define offsetof(s,m)       (size_t)((ptrdiff_t)&(((s*)NULL)->m))
+#else
+#define offsetof(s,m)       (size_t)&(((s*)NULL)->m)
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+unsigned long               __threadid(void);
+unsigned long               __threadhandle(void);
+#define _threadid          (__threadid())
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_STDDEF_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/stdio.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/stdio.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/stdio.h	(revision 16410)
@@ -0,0 +1,261 @@
+/*
+ * Standard I/O definitions.
+ *
+ * Derived from the mingw header written by Colin Peters.
+ * Modified for Wine use by Jon Griffiths and Francois Gouget.
+ * This file is in the public domain.
+ */
+#ifndef __WINE_STDIO_H
+#define __WINE_STDIO_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#include <pshpack8.h>
+
+#ifndef RC_INVOKED
+#include <stdarg.h>
+#endif
+
+#if defined(__x86_64__) && !defined(_WIN64)
+#define _WIN64
+#endif
+
+#if !defined(_MSC_VER) && !defined(__int64)
+# ifdef _WIN64
+#   define __int64 long
+# else
+#   define __int64 long long
+# endif
+#endif
+
+/* file._flag flags */
+#define _IOREAD          0x0001
+#define _IOWRT           0x0002
+#define _IOMYBUF         0x0008
+#define _IOEOF           0x0010
+#define _IOERR           0x0020
+#define _IOSTRG          0x0040
+#define _IORW            0x0080
+
+#ifndef NULL
+#ifdef  __cplusplus
+#define NULL  0
+#else
+#define NULL  ((void *)0)
+#endif
+#endif
+
+#define STDIN_FILENO  0
+#define STDOUT_FILENO 1
+#define STDERR_FILENO 2
+
+/* more file._flag flags, but these conflict with Unix */
+#define _IOFBF    0x0000
+#define _IONBF    0x0004
+#define _IOLBF    0x0040
+
+#define EOF       (-1)
+#define FILENAME_MAX 260
+#define TMP_MAX   0x7fff
+#define FOPEN_MAX 20
+#define L_tmpnam  260
+
+#define BUFSIZ    512
+
+#ifndef SEEK_SET
+#define SEEK_SET  0
+#define SEEK_CUR  1
+#define SEEK_END  2
+#endif
+
+#ifndef _FILE_DEFINED
+#define _FILE_DEFINED
+typedef struct _iobuf
+{
+  char* _ptr;
+  int   _cnt;
+  char* _base;
+  int   _flag;
+  int   _file;
+  int   _charbuf;
+  int   _bufsiz;
+  char* _tmpfname;
+} FILE;
+#endif  /* _FILE_DEFINED */
+
+#ifndef _FPOS_T_DEFINED
+typedef __int64 fpos_t;
+#define _FPOS_T_DEFINED
+#endif
+
+#ifndef _SIZE_T_DEFINED
+#ifdef _WIN64
+typedef unsigned __int64 size_t;
+#else
+typedef unsigned int size_t;
+#endif
+#define _SIZE_T_DEFINED
+#endif
+
+#ifndef _WCHAR_T_DEFINED
+#define _WCHAR_T_DEFINED
+#ifndef __cplusplus
+typedef unsigned short wchar_t;
+#endif
+#endif
+
+#ifndef _WCTYPE_T_DEFINED
+typedef unsigned short  wint_t;
+typedef unsigned short  wctype_t;
+#define _WCTYPE_T_DEFINED
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _STDIO_DEFINED
+FILE*        __p__iob(void);
+#define _iob               (__p__iob())
+#endif /* _STDIO_DEFINED */
+
+#define stdin              (_iob+STDIN_FILENO)
+#define stdout             (_iob+STDOUT_FILENO)
+#define stderr             (_iob+STDERR_FILENO)
+
+#ifndef _STDIO_DEFINED
+#define _STDIO_DEFINED
+int         _fcloseall(void);
+FILE* _fdopen(int,const char*);
+int         _fgetchar(void);
+int         _filbuf(FILE*);
+int         _fileno(FILE*);
+int         _flsbuf(int,FILE*);
+int         _flushall(void);
+int         _fputchar(int);
+FILE* _fsopen(const char*,const char*,int);
+int         _getmaxstdio(void);
+int         _getw(FILE*);
+int         _pclose(FILE*);
+FILE* _popen(const char*,const char*);
+int         _putw(int,FILE*);
+int         _rmtmp(void);
+int         _setmaxstdio(int);
+int         _snprintf(char*,size_t,const char*,...);
+char*       _tempnam(const char*,const char*);
+int         _unlink(const char*);
+int         _vsnprintf(char*,size_t,const char*,va_list);
+
+void        clearerr(FILE*);
+int         fclose(FILE*);
+int         feof(FILE*);
+int         ferror(FILE*);
+int         fflush(FILE*);
+int         fgetc(FILE*);
+int         fgetpos(FILE*,fpos_t*);
+char*       fgets(char*,int,FILE*);
+FILE* fopen(const char*,const char*);
+int         fprintf(FILE*,const char*,...);
+int         fputc(int,FILE*);
+int         fputs(const char*,FILE*);
+size_t fread(void*,size_t,size_t,FILE*);
+FILE* freopen(const char*,const char*,FILE*);
+int         fscanf(FILE*,const char*,...);
+int         fseek(FILE*,long,int);
+int         fsetpos(FILE*,fpos_t*);
+long        ftell(FILE*);
+size_t fwrite(const void*,size_t,size_t,FILE*);
+int         getc(FILE*);
+int         getchar(void);
+char*       gets(char*);
+void        perror(const char*);
+int         printf(const char*,...);
+int         putc(int,FILE*);
+int         putchar(int);
+int         puts(const char*);
+int         remove(const char*);
+int         rename(const char*,const char*);
+void        rewind(FILE*);
+int         scanf(const char*,...);
+void        setbuf(FILE*,char*);
+int         setvbuf(FILE*,char*,int,size_t);
+int         sprintf(char*,const char*,...);
+int         sscanf(const char*,const char*,...);
+FILE* tmpfile(void);
+char*       tmpnam(char*);
+int         ungetc(int,FILE*);
+int         vfprintf(FILE*,const char*,va_list);
+int         vprintf(const char*,va_list);
+int         vsprintf(char*,const char*,va_list);
+
+#ifndef _WSTDIO_DEFINED
+#define _WSTDIO_DEFINED
+wint_t  _fgetwchar(void);
+wint_t  _fputwchar(wint_t);
+wchar_t*_getws(wchar_t*);
+int             _putws(const wchar_t*);
+int             _snwprintf(wchar_t*,size_t,const wchar_t*,...);
+int             _vsnwprintf(wchar_t*,size_t,const wchar_t*,va_list);
+FILE*   _wfdopen(int,const wchar_t*);
+FILE*   _wfopen(const wchar_t*,const wchar_t*);
+FILE*   _wfreopen(const wchar_t*,const wchar_t*,FILE*);
+FILE*   _wfsopen(const wchar_t*,const wchar_t*,int);
+void            _wperror(const wchar_t*);
+FILE*   _wpopen(const wchar_t*,const wchar_t*);
+int             _wremove(const wchar_t*);
+wchar_t*_wtempnam(const wchar_t*,const wchar_t*);
+wchar_t*_wtmpnam(wchar_t*);
+
+wint_t  fgetwc(FILE*);
+wchar_t*fgetws(wchar_t*,int,FILE*);
+wint_t  fputwc(wint_t,FILE*);
+int             fputws(const wchar_t*,FILE*);
+int             fwprintf(FILE*,const wchar_t*,...);
+int             fputws(const wchar_t*,FILE*);
+int             fwscanf(FILE*,const wchar_t*,...);
+wint_t  getwc(FILE*);
+wint_t  getwchar(void);
+wchar_t*getws(wchar_t*);
+wint_t  putwc(wint_t,FILE*);
+wint_t  putwchar(wint_t);
+int             putws(const wchar_t*);
+int             swprintf(wchar_t*,const wchar_t*,...);
+int             swscanf(const wchar_t*,const wchar_t*,...);
+wint_t  ungetwc(wint_t,FILE*);
+int             vfwprintf(FILE*,const wchar_t*,va_list);
+int             vswprintf(wchar_t*,const wchar_t*,va_list);
+int             vwprintf(const wchar_t*,va_list);
+int             wprintf(const wchar_t*,...);
+int             wscanf(const wchar_t*,...);
+#endif /* _WSTDIO_DEFINED */
+
+#endif /* _STDIO_DEFINED */
+
+#ifdef __cplusplus
+}
+#endif
+
+
+static inline FILE* fdopen(int fd, const char *mode) { return _fdopen(fd, mode); }
+static inline int fgetchar(void) { return _fgetchar(); }
+static inline int fileno(FILE* file) { return _fileno(file); }
+static inline int fputchar(int c) { return _fputchar(c); }
+static inline int pclose(FILE* file) { return _pclose(file); }
+static inline FILE* popen(const char* command, const char* mode) { return _popen(command, mode); }
+static inline char* tempnam(const char *dir, const char *prefix) { return _tempnam(dir, prefix); }
+#ifndef _UNLINK_DEFINED
+static inline int unlink(const char* path) { return _unlink(path); }
+#define _UNLINK_DEFINED
+#endif
+static inline int vsnprintf(char *buffer, size_t size, const char *format, va_list args) { return _vsnprintf(buffer,size,format,args); }
+
+static inline wint_t fgetwchar(void) { return _fgetwchar(); }
+static inline wint_t fputwchar(wint_t wc) { return _fputwchar(wc); }
+static inline int getw(FILE* file) { return _getw(file); }
+static inline int putw(int val, FILE* file) { return _putw(val, file); }
+static inline FILE* wpopen(const wchar_t* command,const wchar_t* mode) { return _wpopen(command, mode); }
+
+#include <poppack.h>
+
+#endif /* __WINE_STDIO_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/stdlib.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/stdlib.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/stdlib.h	(revision 16410)
@@ -0,0 +1,280 @@
+/*
+ * Standard library definitions
+ *
+ * Derived from the mingw header written by Colin Peters.
+ * Modified for Wine use by Jon Griffiths and Francois Gouget.
+ * This file is in the public domain.
+ */
+#ifndef __WINE_STDLIB_H
+#define __WINE_STDLIB_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#include <pshpack8.h>
+
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL  0
+#else
+#define NULL  ((void*)0)
+#endif
+#endif
+
+#ifndef _WCHAR_T_DEFINED
+#define _WCHAR_T_DEFINED
+#ifndef __cplusplus
+typedef unsigned short wchar_t;
+#endif
+#endif
+
+
+typedef struct
+{
+    float f;
+} _CRT_FLOAT;
+
+typedef struct
+{
+    double x;
+} _CRT_DOUBLE;
+
+typedef struct
+{
+    unsigned char ld[10];
+} _LDOUBLE;
+
+#if defined(__x86_64__) && !defined(_WIN64)
+#define _WIN64
+#endif
+
+#if !defined(_MSC_VER) && !defined(__int64)
+# ifdef _WIN64
+#   define __int64 long
+# else
+#   define __int64 long long
+# endif
+#endif
+
+#define EXIT_SUCCESS        0
+#define EXIT_FAILURE        -1
+#define RAND_MAX            0x7FFF
+
+#ifndef _MAX_PATH
+#define _MAX_DRIVE          3
+#define _MAX_FNAME          256
+#define _MAX_DIR            _MAX_FNAME
+#define _MAX_EXT            _MAX_FNAME
+#define _MAX_PATH           260
+#endif
+
+
+typedef struct _div_t {
+    int quot;
+    int rem;
+} div_t;
+
+typedef struct _ldiv_t {
+    long quot;
+    long rem;
+} ldiv_t;
+
+#ifndef _SIZE_T_DEFINED
+#ifdef _WIN64
+typedef unsigned __int64 size_t;
+#else
+typedef unsigned int size_t;
+#endif
+#define _SIZE_T_DEFINED
+#endif
+
+#define __max(a,b) (((a) > (b)) ? (a) : (b))
+#define __min(a,b) (((a) < (b)) ? (a) : (b))
+#ifndef __cplusplus
+#define max(a,b)   (((a) > (b)) ? (a) : (b))
+#define min(a,b)   (((a) < (b)) ? (a) : (b))
+#endif
+
+/* _set_error_mode() constants */
+#define _OUT_TO_DEFAULT      0
+#define _OUT_TO_STDERR       1
+#define _OUT_TO_MSGBOX       2
+#define _REPORT_ERRMODE      3
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern unsigned int*         __p__osver(void);
+extern unsigned int*         __p__winver(void);
+extern unsigned int*         __p__winmajor(void);
+extern unsigned int*         __p__winminor(void);
+#define _osver             (*__p__osver())
+#define _winver            (*__p__winver())
+#define _winmajor          (*__p__winmajor())
+#define _winminor          (*__p__winminor())
+
+extern int*                  __p___argc(void);
+extern char***               __p___argv(void);
+extern wchar_t***    __p___wargv(void);
+extern char***               __p__environ(void);
+extern wchar_t***    __p__wenviron(void);
+extern int*                  __p___mb_cur_max(void);
+extern unsigned long*        __doserrno(void);
+extern unsigned int*         __p__fmode(void);
+/* FIXME: We need functions to access these:
+ * int _sys_nerr;
+ * char** _sys_errlist;
+ */
+#define __argc             (*__p___argc())
+#define __argv             (*__p___argv())
+#define __wargv            (*__p___wargv())
+#define _environ           (*__p__environ())
+#define _wenviron          (*__p__wenviron())
+#define __mb_cur_max       (*__p___mb_cur_max())
+#define _doserrno          (*__doserrno())
+#define _fmode             (*_fmode)
+
+
+extern int*           _errno(void);
+#define errno        (*_errno())
+
+
+typedef int (*_onexit_t)(void);
+
+
+int         _atodbl(_CRT_DOUBLE*,char*);
+int         _atoflt(_CRT_FLOAT*,char*);
+__int64     _atoi64(const char*);
+long double _atold(const char*);
+int         _atoldbl(_LDOUBLE*,char*);
+void        _beep(unsigned int,unsigned int);
+char*       _ecvt(double,int,int*,int*);
+char*       _fcvt(double,int,int*,int*);
+char*       _fullpath(char*,const char*,size_t);
+char*       _gcvt(double,int,char*);
+char*       _i64toa(__int64,char*,int);
+char*       _itoa(int,char*,int);
+char*       _ltoa(long,char*,int);
+unsigned long _lrotl(unsigned long,int);
+unsigned long _lrotr(unsigned long,int);
+void        _makepath(char*,const char*,const char*,const char*,const char*);
+size_t _mbstrlen(const char*);
+_onexit_t _onexit(_onexit_t);
+int         _putenv(const char*);
+unsigned int _rotl(unsigned int,int);
+unsigned int _rotr(unsigned int,int);
+void        _searchenv(const char*,const char*,char*);
+int         _set_error_mode(int);
+void        _seterrormode(int);
+void        _sleep(unsigned long);
+void        _splitpath(const char*,char*,char*,char*,char*);
+long double _strtold(const char*,char**);
+void        _swab(char*,char*,int);
+char*       _ui64toa(unsigned __int64,char*,int);
+char*       _ultoa(unsigned long,char*,int);
+
+void        _exit(int);
+void        abort(void);
+int         abs(int);
+int         atexit(void (*)(void));
+double      atof(const char*);
+int         atoi(const char*);
+long        atol(const char*);
+void*       calloc(size_t,size_t);
+#ifndef __i386__
+div_t div(int,int);
+ldiv_t ldiv(long,long);
+#endif
+void        exit(int);
+void        free(void*);
+char*       getenv(const char*);
+long        labs(long);
+void*       malloc(size_t);
+int         mblen(const char*,size_t);
+void        perror(const char*);
+int         rand(void);
+void*       realloc(void*,size_t);
+void        srand(unsigned int);
+double      strtod(const char*,char**);
+long        strtol(const char*,char**,int);
+unsigned long strtoul(const char*,char**,int);
+int         system(const char*);
+void*       bsearch(const void*,const void*,size_t,size_t,
+                            int (*)(const void*,const void*));
+void        qsort(void*,size_t,size_t,
+                          int (*)(const void*,const void*));
+
+#ifndef _WSTDLIB_DEFINED
+#define _WSTDLIB_DEFINED
+wchar_t*_itow(int,wchar_t*,int);
+wchar_t*_i64tow(__int64,wchar_t*,int);
+wchar_t*_ltow(long,wchar_t*,int);
+wchar_t*_ui64tow(unsigned __int64,wchar_t*,int);
+wchar_t*_ultow(unsigned long,wchar_t*,int);
+wchar_t*_wfullpath(wchar_t*,const wchar_t*,size_t);
+wchar_t*_wgetenv(const wchar_t*);
+void            _wmakepath(wchar_t*,const wchar_t*,const wchar_t*,const wchar_t*,const wchar_t*);
+void            _wperror(const wchar_t*);
+int             _wputenv(const wchar_t*);
+void            _wsearchenv(const wchar_t*,const wchar_t*,wchar_t*);
+void            _wsplitpath(const wchar_t*,wchar_t*,wchar_t*,wchar_t*,wchar_t*);
+int             _wsystem(const wchar_t*);
+int             _wtoi(const wchar_t*);
+__int64         _wtoi64(const wchar_t*);
+long            _wtol(const wchar_t*);
+
+size_t mbstowcs(wchar_t*,const char*,size_t);
+int            mbtowc(wchar_t*,const char*,size_t);
+double         wcstod(const wchar_t*,wchar_t**);
+long           wcstol(const wchar_t*,wchar_t**,int);
+size_t wcstombs(char*,const wchar_t*,size_t);
+unsigned long  wcstoul(const wchar_t*,wchar_t**,int);
+int            wctomb(char*,wchar_t);
+#endif /* _WSTDLIB_DEFINED */
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#define environ _environ
+#define onexit_t _onexit_t
+
+static inline char* ecvt(double value, int ndigit, int* decpt, int* sign) { return _ecvt(value, ndigit, decpt, sign); }
+static inline char* fcvt(double value, int ndigit, int* decpt, int* sign) { return _fcvt(value, ndigit, decpt, sign); }
+static inline char* gcvt(double value, int ndigit, char* buf) { return _gcvt(value, ndigit, buf); }
+static inline char* itoa(int value, char* str, int radix) { return _itoa(value, str, radix); }
+static inline char* ltoa(long value, char* str, int radix) { return _ltoa(value, str, radix); }
+static inline _onexit_t onexit(_onexit_t func) { return _onexit(func); }
+static inline int putenv(const char* str) { return _putenv(str); }
+static inline void swab(char* src, char* dst, int len) { _swab(src, dst, len); }
+static inline char* ultoa(unsigned long value, char* str, int radix) { return _ultoa(value, str, radix); }
+
+#ifdef __i386__
+static inline div_t __wine_msvcrt_div(int num, int denom)
+{
+    extern unsigned __int64 div(int,int);
+    div_t ret;
+    unsigned __int64 res = div(num,denom);
+    ret.quot = (int)res;
+    ret.rem  = (int)(res >> 32);
+    return ret;
+}
+static inline ldiv_t __wine_msvcrt_ldiv(long num, long denom)
+{
+    extern unsigned __int64 ldiv(long,long);
+    ldiv_t ret;
+    unsigned __int64 res = ldiv(num,denom);
+    ret.quot = (long)res;
+    ret.rem  = (long)(res >> 32);
+    return ret;
+}
+#define div(num,denom) __wine_msvcrt_div(num,denom)
+#define ldiv(num,denom) __wine_msvcrt_ldiv(num,denom)
+#endif
+
+#include <poppack.h>
+
+#endif /* __WINE_STDLIB_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/string.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/string.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/string.h	(revision 16410)
@@ -0,0 +1,155 @@
+/*
+ * String definitions
+ *
+ * Derived from the mingw header written by Colin Peters.
+ * Modified for Wine use by Jon Griffiths and Francois Gouget.
+ * This file is in the public domain.
+ */
+#ifndef __WINE_STRING_H
+#define __WINE_STRING_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#ifndef _WCHAR_T_DEFINED
+#define _WCHAR_T_DEFINED
+#ifndef __cplusplus
+typedef unsigned short wchar_t;
+#endif
+#endif
+
+#if defined(__x86_64__) && !defined(_WIN64)
+#define _WIN64
+#endif
+
+#if !defined(_MSC_VER) && !defined(__int64)
+# ifdef _WIN64
+#   define __int64 long
+# else
+#   define __int64 long long
+# endif
+#endif
+
+#ifndef _SIZE_T_DEFINED
+#ifdef _WIN64
+typedef unsigned __int64 size_t;
+#else
+typedef unsigned int size_t;
+#endif
+#define _SIZE_T_DEFINED
+#endif
+
+#ifndef _NLSCMP_DEFINED
+#define _NLSCMPERROR               ((unsigned int)0x7fffffff)
+#define _NLSCMP_DEFINED
+#endif
+
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL  0
+#else
+#define NULL  ((void *)0)
+#endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void*       _memccpy(void*,const void*,int,unsigned int);
+int         _memicmp(const void*,const void*,unsigned int);
+int         _strcmpi(const char*,const char*);
+char*       _strdup(const char*);
+char*       _strerror(const char*);
+int         _stricmp(const char*,const char*);
+int         _stricoll(const char*,const char*);
+char*       _strlwr(char*);
+int         _strnicmp(const char*,const char*,size_t);
+char*       _strnset(char*,int,size_t);
+char*       _strrev(char*);
+char*       _strset(char*,int);
+char*       _strupr(char*);
+
+void*       memchr(const void*,int,size_t);
+int         memcmp(const void*,const void*,size_t);
+void*       memcpy(void*,const void*,size_t);
+void*       memmove(void*,const void*,size_t);
+void*       memset(void*,int,size_t);
+char*       strcat(char*,const char*);
+char*       strchr(const char*,int);
+int         strcmp(const char*,const char*);
+int         strcoll(const char*,const char*);
+char*       strcpy(char*,const char*);
+size_t strcspn(const char*,const char*);
+char*       strerror(int);
+size_t strlen(const char*);
+char*       strncat(char*,const char*,size_t);
+int         strncmp(const char*,const char*,size_t);
+char*       strncpy(char*,const char*,size_t);
+char*       strpbrk(const char*,const char*);
+char*       strrchr(const char*,int);
+size_t strspn(const char*,const char*);
+char*       strstr(const char*,const char*);
+char*       strtok(char*,const char*);
+size_t strxfrm(char*,const char*,size_t);
+
+#ifndef _WSTRING_DEFINED
+#define _WSTRING_DEFINED
+wchar_t*_wcsdup(const wchar_t*);
+int             _wcsicmp(const wchar_t*,const wchar_t*);
+int             _wcsicoll(const wchar_t*,const wchar_t*);
+wchar_t*_wcslwr(wchar_t*);
+int             _wcsnicmp(const wchar_t*,const wchar_t*,size_t);
+wchar_t*_wcsnset(wchar_t*,wchar_t,size_t);
+wchar_t*_wcsrev(wchar_t*);
+wchar_t*_wcsset(wchar_t*,wchar_t);
+wchar_t*_wcsupr(wchar_t*);
+
+wchar_t*wcscat(wchar_t*,const wchar_t*);
+wchar_t*wcschr(const wchar_t*,wchar_t);
+int             wcscmp(const wchar_t*,const wchar_t*);
+int             wcscoll(const wchar_t*,const wchar_t*);
+wchar_t*wcscpy(wchar_t*,const wchar_t*);
+size_t  wcscspn(const wchar_t*,const wchar_t*);
+size_t  wcslen(const wchar_t*);
+wchar_t*wcsncat(wchar_t*,const wchar_t*,size_t);
+int             wcsncmp(const wchar_t*,const wchar_t*,size_t);
+wchar_t*wcsncpy(wchar_t*,const wchar_t*,size_t);
+wchar_t*wcspbrk(const wchar_t*,const wchar_t*);
+wchar_t*wcsrchr(const wchar_t*,wchar_t wcFor);
+size_t  wcsspn(const wchar_t*,const wchar_t*);
+wchar_t*wcsstr(const wchar_t*,const wchar_t*);
+wchar_t*wcstok(wchar_t*,const wchar_t*);
+size_t  wcsxfrm(wchar_t*,const wchar_t*,size_t);
+#endif /* _WSTRING_DEFINED */
+
+#ifdef __cplusplus
+}
+#endif
+
+
+static inline void* memccpy(void *s1, const void *s2, int c, size_t n) { return _memccpy(s1, s2, c, n); }
+static inline int memicmp(const void* s1, const void* s2, size_t len) { return _memicmp(s1, s2, len); }
+static inline int strcasecmp(const char* s1, const char* s2) { return _stricmp(s1, s2); }
+static inline int strcmpi(const char* s1, const char* s2) { return _strcmpi(s1, s2); }
+static inline char* strdup(const char* buf) { return _strdup(buf); }
+static inline int stricmp(const char* s1, const char* s2) { return _stricmp(s1, s2); }
+static inline int stricoll(const char* s1, const char* s2) { return _stricoll(s1, s2); }
+static inline char* strlwr(char* str) { return _strlwr(str); }
+static inline int strncasecmp(const char *str1, const char *str2, size_t n) { return _strnicmp(str1, str2, n); }
+static inline int strnicmp(const char* s1, const char* s2, size_t n) { return _strnicmp(s1, s2, n); }
+static inline char* strnset(char* str, int value, unsigned int len) { return _strnset(str, value, len); }
+static inline char* strrev(char* str) { return _strrev(str); }
+static inline char* strset(char* str, int value) { return _strset(str, value); }
+static inline char* strupr(char* str) { return _strupr(str); }
+
+static inline wchar_t* wcsdup(const wchar_t* str) { return _wcsdup(str); }
+static inline int wcsicoll(const wchar_t* str1, const wchar_t* str2) { return _wcsicoll(str1, str2); }
+static inline wchar_t* wcslwr(wchar_t* str) { return _wcslwr(str); }
+static inline int wcsnicmp(const wchar_t* str1, const wchar_t* str2, size_t n) { return _wcsnicmp(str1, str2, n); }
+static inline wchar_t* wcsnset(wchar_t* str, wchar_t c, size_t n) { return _wcsnset(str, c, n); }
+static inline wchar_t* wcsrev(wchar_t* str) { return _wcsrev(str); }
+static inline wchar_t* wcsset(wchar_t* str, wchar_t c) { return _wcsset(str, c); }
+static inline wchar_t* wcsupr(wchar_t* str) { return _wcsupr(str); }
+
+#endif /* __WINE_STRING_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/sys/locking.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/sys/locking.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/sys/locking.h	(revision 16410)
@@ -0,0 +1,32 @@
+/*
+ * _locking constants
+ *
+ * Copyright 2002 Bill Medland
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __WINE_SYS_LOCKING_H__
+#define __WINE_SYS_LOCKING_H__
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#define _LK_UNLCK 0
+#define _LK_LOCK 1
+#define _LK_NBLCK 2
+#define _LK_RLCK 3
+#define _LK_NBRLCK 4
+
+#endif /* __WINE_SYS_LOCKING_H__ : Do not place anything after this #endif */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/sys/stat.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/sys/stat.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/sys/stat.h	(revision 16410)
@@ -0,0 +1,170 @@
+/*
+ * _stat() definitions
+ *
+ * Derived from the mingw header written by Colin Peters.
+ * Modified for Wine use by Jon Griffiths and Francois Gouget.
+ * This file is in the public domain.
+ */
+#ifndef __WINE_SYS_STAT_H
+#define __WINE_SYS_STAT_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#include <pshpack8.h>
+
+#include <sys/types.h>
+
+#ifndef _WCHAR_T_DEFINED
+#define _WCHAR_T_DEFINED
+#ifndef __cplusplus
+typedef unsigned short wchar_t;
+#endif
+#endif
+
+#ifndef _DEV_T_DEFINED
+typedef unsigned int _dev_t;
+#define _DEV_T_DEFINED
+#endif
+
+#ifndef _INO_T_DEFINED
+typedef unsigned short _ino_t;
+#define _INO_T_DEFINED
+#endif
+
+#ifndef _TIME_T_DEFINED
+typedef long time_t;
+#define _TIME_T_DEFINED
+#endif
+
+#ifndef _OFF_T_DEFINED
+typedef int _off_t;
+#define _OFF_T_DEFINED
+#endif
+
+#ifndef DECLSPEC_ALIGN
+# if defined(_MSC_VER) && (_MSC_VER >= 1300) && !defined(MIDL_PASS)
+#  define DECLSPEC_ALIGN(x) __declspec(align(x))
+# elif defined(__GNUC__)
+#  define DECLSPEC_ALIGN(x) __attribute__((aligned(x)))
+# else
+#  define DECLSPEC_ALIGN(x)
+# endif
+#endif
+
+#define _S_IEXEC  0x0040
+#define _S_IWRITE 0x0080
+#define _S_IREAD  0x0100
+#define _S_IFIFO  0x1000
+#define _S_IFCHR  0x2000
+#define _S_IFDIR  0x4000
+#define _S_IFREG  0x8000
+#define _S_IFMT   0xF000
+
+/* for FreeBSD */
+#undef st_atime
+#undef st_ctime
+#undef st_mtime
+
+#ifndef _STAT_DEFINED
+#define _STAT_DEFINED
+
+struct _stat {
+  _dev_t st_dev;
+  _ino_t st_ino;
+  unsigned short st_mode;
+  short          st_nlink;
+  short          st_uid;
+  short          st_gid;
+  _dev_t st_rdev;
+  _off_t st_size;
+  time_t st_atime;
+  time_t st_mtime;
+  time_t st_ctime;
+};
+
+struct stat {
+  _dev_t st_dev;
+  _ino_t st_ino;
+  unsigned short st_mode;
+  short          st_nlink;
+  short          st_uid;
+  short          st_gid;
+  _dev_t st_rdev;
+  _off_t st_size;
+  time_t st_atime;
+  time_t st_mtime;
+  time_t st_ctime;
+};
+
+struct _stati64 {
+  _dev_t st_dev;
+  _ino_t st_ino;
+  unsigned short st_mode;
+  short          st_nlink;
+  short          st_uid;
+  short          st_gid;
+  _dev_t st_rdev;
+  __int64 DECLSPEC_ALIGN(8) st_size;
+  time_t st_atime;
+  time_t st_mtime;
+  time_t st_ctime;
+};
+
+struct _stat64 {
+  _dev_t st_dev;
+  _ino_t st_ino;
+  unsigned short st_mode;
+  short          st_nlink;
+  short          st_uid;
+  short          st_gid;
+  _dev_t st_rdev;
+  __int64 DECLSPEC_ALIGN(8) st_size;
+  __time64_t     st_atime;
+  __time64_t     st_mtime;
+  __time64_t     st_ctime;
+};
+#endif /* _STAT_DEFINED */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int _fstat(int,struct _stat*);
+int _stat(const char*,struct _stat*);
+int _fstati64(int,struct _stati64*);
+int _stati64(const char*,struct _stati64*);
+int _fstat64(int,struct _stat64*);
+int _stat64(const char*,struct _stat64*);
+int _umask(int);
+
+#ifndef _WSTAT_DEFINED
+#define _WSTAT_DEFINED
+int _wstat(const wchar_t*,struct _stat*);
+int _wstati64(const wchar_t*,struct _stati64*);
+int _wstat64(const wchar_t*,struct _stat64*);
+#endif /* _WSTAT_DEFINED */
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#define S_IFMT   _S_IFMT
+#define S_IFDIR  _S_IFDIR
+#define S_IFCHR  _S_IFCHR
+#define S_IFREG  _S_IFREG
+#define S_IREAD  _S_IREAD
+#define S_IWRITE _S_IWRITE
+#define S_IEXEC  _S_IEXEC
+
+static inline int fstat(int fd, struct stat* ptr) { return _fstat(fd, (struct _stat*)ptr); }
+static inline int stat(const char* path, struct stat* ptr) { return _stat(path, (struct _stat*)ptr); }
+#ifndef _UMASK_DEFINED
+static inline int umask(int fd) { return _umask(fd); }
+#define _UMASK_DEFINED
+#endif
+
+#include <poppack.h>
+
+#endif /* __WINE_SYS_STAT_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/sys/timeb.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/sys/timeb.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/sys/timeb.h	(revision 16410)
@@ -0,0 +1,62 @@
+/*
+ * Path and directory definitions
+ *
+ * Copyright 2000 Francois Gouget.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __WINE_SYS_TIMEB_H
+#define __WINE_SYS_TIMEB_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#include <pshpack8.h>
+
+#ifndef _TIME_T_DEFINED
+typedef long time_t;
+#define _TIME_T_DEFINED
+#endif
+
+#ifndef _TIMEB_DEFINED
+#define _TIMEB_DEFINED
+struct _timeb
+{
+    time_t time;
+    unsigned short millitm;
+    short          timezone;
+    short          dstflag;
+};
+#endif /* _TIMEB_DEFINED */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void        _ftime(struct _timeb*);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#define timeb _timeb
+
+static inline void ftime(struct _timeb* ptr) { return _ftime(ptr); }
+
+#include <poppack.h>
+
+#endif /* __WINE_SYS_TIMEB_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/sys/types.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/sys/types.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/sys/types.h	(revision 16410)
@@ -0,0 +1,95 @@
+/*
+ * _stat() definitions
+ *
+ * Copyright 2000 Francois Gouget.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __WINE_SYS_TYPES_H
+#define __WINE_SYS_TYPES_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#if defined(__x86_64__) && !defined(_WIN64)
+#define _WIN64
+#endif
+
+#if !defined(_MSC_VER) && !defined(__int64)
+# ifdef _WIN64
+#   define __int64 long
+# else
+#   define __int64 long long
+# endif
+#endif
+
+#ifndef _DEV_T_DEFINED
+typedef unsigned int   _dev_t;
+#define _DEV_T_DEFINED
+#endif
+
+#ifndef _INO_T_DEFINED
+typedef unsigned short _ino_t;
+#define _INO_T_DEFINED
+#endif
+
+#ifndef _MODE_T_DEFINED
+typedef unsigned short _mode_t;
+#define _MODE_T_DEFINED
+#endif
+
+#ifndef _OFF_T_DEFINED
+typedef int _off_t;
+#define _OFF_T_DEFINED
+#endif
+
+#ifndef _TIME_T_DEFINED
+typedef long time_t;
+#define _TIME_T_DEFINED
+#endif
+
+#ifndef _TIME64_T_DEFINED
+#define _TIME64_T_DEFINED
+typedef __int64 __time64_t;
+#endif
+
+#ifndef _BSDTYPES_DEFINED
+typedef unsigned char u_char;
+typedef unsigned short u_short;
+typedef unsigned int  u_int;
+typedef unsigned long u_long;
+#define _BSDTYPES_DEFINED
+#endif
+
+#define dev_t _dev_t
+#define ino_t _ino_t
+#define mode_t _mode_t
+#define off_t _off_t
+
+#ifndef _PID_T_DEFINED
+typedef int pid_t;
+#define _PID_T_DEFINED
+#endif
+
+#ifndef _SSIZE_T_DEFINED
+#ifdef _WIN64
+typedef __int64 ssize_t;
+#else
+typedef int ssize_t;
+#endif
+#define _SSIZE_T_DEFINED
+#endif
+
+#endif /* __WINE_SYS_TYPES_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/sys/unistd.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/sys/unistd.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/sys/unistd.h	(revision 16410)
@@ -0,0 +1,1 @@
+#include <unistd.h>
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/sys/utime.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/sys/utime.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/sys/utime.h	(revision 16410)
@@ -0,0 +1,69 @@
+/*
+ * Path and directory definitions
+ *
+ * Copyright 2000 Francois Gouget.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __WINE_SYS_UTIME_H
+#define __WINE_SYS_UTIME_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#include <pshpack8.h>
+
+#ifndef _WCHAR_T_DEFINED
+#define _WCHAR_T_DEFINED
+#ifndef __cplusplus
+typedef unsigned short wchar_t;
+#endif
+#endif
+
+#ifndef _TIME_T_DEFINED
+typedef long time_t;
+#define _TIME_T_DEFINED
+#endif
+
+#ifndef _UTIMBUF_DEFINED
+#define _UTIMBUF_DEFINED
+struct _utimbuf
+{
+    time_t actime;
+    time_t modtime;
+};
+#endif /* _UTIMBUF_DEFINED */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int         _futime(int,struct _utimbuf*);
+int         _utime(const char*,struct _utimbuf*);
+
+int         _wutime(const wchar_t*,struct _utimbuf*);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#define utimbuf _utimbuf
+
+static inline int utime(const char* path, struct _utimbuf* buf) { return _utime(path, buf); }
+
+#include <poppack.h>
+
+#endif /* __WINE_SYS_UTIME_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/time.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/time.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/time.h	(revision 16410)
@@ -0,0 +1,138 @@
+/*
+ * Time definitions
+ *
+ * Copyright 2000 Francois Gouget.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __WINE_TIME_H
+#define __WINE_TIME_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#include <pshpack8.h>
+
+#ifndef _WCHAR_T_DEFINED
+#define _WCHAR_T_DEFINED
+#ifndef __cplusplus
+typedef unsigned short wchar_t;
+#endif
+#endif
+
+#if defined(__x86_64__) && !defined(_WIN64)
+#define _WIN64
+#endif
+
+#if !defined(_MSC_VER) && !defined(__int64)
+# ifdef _WIN64
+#   define __int64 long
+# else
+#   define __int64 long long
+# endif
+#endif
+
+#ifndef _SIZE_T_DEFINED
+#ifdef _WIN64
+typedef unsigned __int64 size_t;
+#else
+typedef unsigned int size_t;
+#endif
+#define _SIZE_T_DEFINED
+#endif
+
+#ifndef _TIME_T_DEFINED
+typedef long time_t;
+#define _TIME_T_DEFINED
+#endif
+
+#ifndef _CLOCK_T_DEFINED
+typedef long clock_t;
+#define _CLOCK_T_DEFINED
+#endif
+
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL  0
+#else
+#define NULL  ((void *)0)
+#endif
+#endif
+
+#ifndef CLOCKS_PER_SEC
+#define CLOCKS_PER_SEC 1000
+#endif
+
+#ifndef _TM_DEFINED
+#define _TM_DEFINED
+struct tm {
+    int tm_sec;
+    int tm_min;
+    int tm_hour;
+    int tm_mday;
+    int tm_mon;
+    int tm_year;
+    int tm_wday;
+    int tm_yday;
+    int tm_isdst;
+};
+#endif /* _TM_DEFINED */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define _daylight (*__p__daylight())
+#define _dstbias (*__p__dstbias())
+#define _timezone (*__p__timezone())
+#define _tzname (__p__tzname())
+
+int *__p__daylight(void);
+long *__p__dstbias(void);
+long *__p__timezone(void);
+char **__p__tzname(void);
+
+unsigned    _getsystime(struct tm*);
+unsigned    _setsystime(struct tm*,unsigned);
+char*       _strdate(char*);
+char*       _strtime(char*);
+void        _tzset(void);
+
+char*       asctime(const struct tm*);
+clock_t clock(void);
+char*       ctime(const time_t*);
+double      difftime(time_t,time_t);
+struct tm* gmtime(const time_t*);
+struct tm* localtime(const time_t*);
+time_t mktime(struct tm*);
+size_t      strftime(char*,size_t,const char*,const struct tm*);
+time_t time(time_t*);
+
+#ifndef _WTIME_DEFINED
+#define _WTIME_DEFINED
+wchar_t* _wasctime(const struct tm*);
+size_t  wcsftime(wchar_t*,size_t,const wchar_t*,const struct tm*);
+wchar_t*_wctime(const time_t*);
+wchar_t*_wstrdate(wchar_t*);
+wchar_t*_wstrtime(wchar_t*);
+#endif /* _WTIME_DEFINED */
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <poppack.h>
+
+#endif /* __WINE_TIME_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/unistd.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/unistd.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/unistd.h	(revision 16410)
@@ -0,0 +1,2 @@
+#include <io.h>
+#include <process.h>
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/wchar.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/wchar.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/wchar.h	(revision 16410)
@@ -0,0 +1,439 @@
+/*
+ * Unicode definitions
+ *
+ * Derived from the mingw header written by Colin Peters.
+ * Modified for Wine use by Jon Griffiths and Francois Gouget.
+ * This file is in the public domain.
+ */
+#ifndef __WINE_WCHAR_H
+#define __WINE_WCHAR_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#include <pshpack8.h>
+
+#include <stdarg.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _WCHAR_T_DEFINED
+#define _WCHAR_T_DEFINED
+#ifndef __cplusplus
+typedef unsigned short wchar_t;
+#endif
+#endif
+
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL  0
+#else
+#define NULL  ((void *)0)
+#endif
+#endif
+
+#define WCHAR_MIN 0
+#define WCHAR_MAX ((wchar_t)-1)
+
+#if defined(__x86_64__) && !defined(_WIN64)
+#define _WIN64
+#endif
+
+#if !defined(_MSC_VER) && !defined(__int64)
+# ifdef _WIN64
+#   define __int64 long
+# else
+#   define __int64 long long
+# endif
+#endif
+
+#ifndef DECLSPEC_ALIGN
+# if defined(_MSC_VER) && (_MSC_VER >= 1300) && !defined(MIDL_PASS)
+#  define DECLSPEC_ALIGN(x) __declspec(align(x))
+# elif defined(__GNUC__)
+#  define DECLSPEC_ALIGN(x) __attribute__((aligned(x)))
+# else
+#  define DECLSPEC_ALIGN(x)
+# endif
+#endif
+
+typedef int mbstate_t;
+
+#ifndef _SIZE_T_DEFINED
+#ifdef _WIN64
+typedef unsigned __int64 size_t;
+#else
+typedef unsigned int size_t;
+#endif
+#define _SIZE_T_DEFINED
+#endif
+
+#ifndef _WCTYPE_T_DEFINED
+typedef unsigned short  wint_t;
+typedef unsigned short  wctype_t;
+#define _WCTYPE_T_DEFINED
+#endif
+
+#ifndef WEOF
+#define WEOF        (wint_t)(0xFFFF)
+#endif
+
+#ifndef _FSIZE_T_DEFINED
+typedef unsigned long _fsize_t;
+#define _FSIZE_T_DEFINED
+#endif
+
+#ifndef _DEV_T_DEFINED
+typedef unsigned int   _dev_t;
+#define _DEV_T_DEFINED
+#endif
+
+#ifndef _INO_T_DEFINED
+typedef unsigned short _ino_t;
+#define _INO_T_DEFINED
+#endif
+
+#ifndef _OFF_T_DEFINED
+typedef int _off_t;
+#define _OFF_T_DEFINED
+#endif
+
+#ifndef _TIME_T_DEFINED
+typedef long time_t;
+#define _TIME_T_DEFINED
+#endif
+
+#ifndef _TIME64_T_DEFINED
+#define _TIME64_T_DEFINED
+typedef __int64 __time64_t;
+#endif
+
+#ifndef _TM_DEFINED
+#define _TM_DEFINED
+struct tm {
+    int tm_sec;
+    int tm_min;
+    int tm_hour;
+    int tm_mday;
+    int tm_mon;
+    int tm_year;
+    int tm_wday;
+    int tm_yday;
+    int tm_isdst;
+};
+#endif /* _TM_DEFINED */
+
+#ifndef _FILE_DEFINED
+#define _FILE_DEFINED
+typedef struct _iobuf
+{
+  char* _ptr;
+  int   _cnt;
+  char* _base;
+  int   _flag;
+  int   _file;
+  int   _charbuf;
+  int   _bufsiz;
+  char* _tmpfname;
+} FILE;
+#endif  /* _FILE_DEFINED */
+
+#ifndef _WFINDDATA_T_DEFINED
+#define _WFINDDATA_T_DEFINED
+
+struct _wfinddata_t {
+  unsigned attrib;
+  time_t time_create;
+  time_t time_access;
+  time_t time_write;
+  _fsize_t size;
+  wchar_t name[260];
+};
+
+struct _wfinddatai64_t {
+  unsigned attrib;
+  time_t time_create;
+  time_t time_access;
+  time_t time_write;
+  __int64        size;
+  wchar_t name[260];
+};
+
+#endif /* _WFINDDATA_T_DEFINED */
+
+#ifndef _STAT_DEFINED
+#define _STAT_DEFINED
+
+struct _stat {
+  _dev_t st_dev;
+  _ino_t st_ino;
+  unsigned short st_mode;
+  short          st_nlink;
+  short          st_uid;
+  short          st_gid;
+  _dev_t st_rdev;
+  _off_t st_size;
+  time_t st_atime;
+  time_t st_mtime;
+  time_t st_ctime;
+};
+
+struct stat {
+  _dev_t st_dev;
+  _ino_t st_ino;
+  unsigned short st_mode;
+  short          st_nlink;
+  short          st_uid;
+  short          st_gid;
+  _dev_t st_rdev;
+  _off_t st_size;
+  time_t st_atime;
+  time_t st_mtime;
+  time_t st_ctime;
+};
+
+struct _stati64 {
+  _dev_t st_dev;
+  _ino_t st_ino;
+  unsigned short st_mode;
+  short          st_nlink;
+  short          st_uid;
+  short          st_gid;
+  _dev_t st_rdev;
+  __int64 DECLSPEC_ALIGN(8) st_size;
+  time_t st_atime;
+  time_t st_mtime;
+  time_t st_ctime;
+};
+
+struct _stat64 {
+  _dev_t st_dev;
+  _ino_t st_ino;
+  unsigned short st_mode;
+  short          st_nlink;
+  short          st_uid;
+  short          st_gid;
+  _dev_t st_rdev;
+  __int64 DECLSPEC_ALIGN(8) st_size;
+  __time64_t     st_atime;
+  __time64_t     st_mtime;
+  __time64_t     st_ctime;
+};
+#endif /* _STAT_DEFINED */
+
+/* ASCII char classification table - binary compatible */
+#define _UPPER        0x0001  /* C1_UPPER */
+#define _LOWER        0x0002  /* C1_LOWER */
+#define _DIGIT        0x0004  /* C1_DIGIT */
+#define _SPACE        0x0008  /* C1_SPACE */
+#define _PUNCT        0x0010  /* C1_PUNCT */
+#define _CONTROL      0x0020  /* C1_CNTRL */
+#define _BLANK        0x0040  /* C1_BLANK */
+#define _HEX          0x0080  /* C1_XDIGIT */
+#define _LEADBYTE     0x8000
+#define _ALPHA       (0x0100|_UPPER|_LOWER)  /* (C1_ALPHA|_UPPER|_LOWER) */
+
+#ifndef _WCTYPE_DEFINED
+#define _WCTYPE_DEFINED
+int is_wctype(wint_t,wctype_t);
+int isleadbyte(int);
+int iswalnum(wint_t);
+int iswalpha(wint_t);
+int iswascii(wint_t);
+int iswcntrl(wint_t);
+int iswctype(wint_t,wctype_t);
+int iswdigit(wint_t);
+int iswgraph(wint_t);
+int iswlower(wint_t);
+int iswprint(wint_t);
+int iswpunct(wint_t);
+int iswspace(wint_t);
+int iswupper(wint_t);
+int iswxdigit(wint_t);
+wchar_t towlower(wchar_t);
+wchar_t towupper(wchar_t);
+#endif /* _WCTYPE_DEFINED */
+
+#ifndef _WDIRECT_DEFINED
+#define _WDIRECT_DEFINED
+int              _wchdir(const wchar_t*);
+wchar_t* _wgetcwd(wchar_t*,int);
+wchar_t* _wgetdcwd(int,wchar_t*,int);
+int              _wmkdir(const wchar_t*);
+int              _wrmdir(const wchar_t*);
+#endif /* _WDIRECT_DEFINED */
+
+#ifndef _WIO_DEFINED
+#define _WIO_DEFINED
+int         _waccess(const wchar_t*,int);
+int         _wchmod(const wchar_t*,int);
+int         _wcreat(const wchar_t*,int);
+long        _wfindfirst(const wchar_t*,struct _wfinddata_t*);
+long        _wfindfirsti64(const wchar_t*, struct _wfinddatai64_t*);
+int         _wfindnext(long,struct _wfinddata_t*);
+int         _wfindnexti64(long, struct _wfinddatai64_t*);
+wchar_t*_wmktemp(wchar_t*);
+int         _wopen(const wchar_t*,int,...);
+int         _wrename(const wchar_t*,const wchar_t*);
+int         _wsopen(const wchar_t*,int,int,...);
+int         _wunlink(const wchar_t*);
+#endif /* _WIO_DEFINED */
+
+#ifndef _WLOCALE_DEFINED
+#define _WLOCALE_DEFINED
+wchar_t* _wsetlocale(int,const wchar_t*);
+#endif /* _WLOCALE_DEFINED */
+
+#ifndef _WPROCESS_DEFINED
+#define _WPROCESS_DEFINED
+int         _wexecl(const wchar_t*,const wchar_t*,...);
+int         _wexecle(const wchar_t*,const wchar_t*,...);
+int         _wexeclp(const wchar_t*,const wchar_t*,...);
+int         _wexeclpe(const wchar_t*,const wchar_t*,...);
+int         _wexecv(const wchar_t*,const wchar_t* const *);
+int         _wexecve(const wchar_t*,const wchar_t* const *,const wchar_t* const *);
+int         _wexecvp(const wchar_t*,const wchar_t* const *);
+int         _wexecvpe(const wchar_t*,const wchar_t* const *,const wchar_t* const *);
+int         _wspawnl(int,const wchar_t*,const wchar_t*,...);
+int         _wspawnle(int,const wchar_t*,const wchar_t*,...);
+int         _wspawnlp(int,const wchar_t*,const wchar_t*,...);
+int         _wspawnlpe(int,const wchar_t*,const wchar_t*,...);
+int         _wspawnv(int,const wchar_t*,const wchar_t* const *);
+int         _wspawnve(int,const wchar_t*,const wchar_t* const *,const wchar_t* const *);
+int         _wspawnvp(int,const wchar_t*,const wchar_t* const *);
+int         _wspawnvpe(int,const wchar_t*,const wchar_t* const *,const wchar_t* const *);
+int         _wsystem(const wchar_t*);
+#endif /* _WPROCESS_DEFINED */
+
+#ifndef _WSTAT_DEFINED
+#define _WSTAT_DEFINED
+int _wstat(const wchar_t*,struct _stat*);
+int _wstati64(const wchar_t*,struct _stati64*);
+int _wstat64(const wchar_t*,struct _stat64*);
+#endif /* _WSTAT_DEFINED */
+
+#ifndef _WSTDIO_DEFINED
+#define _WSTDIO_DEFINED
+wint_t  _fgetwchar(void);
+wint_t  _fputwchar(wint_t);
+wchar_t*_getws(wchar_t*);
+int             _putws(const wchar_t*);
+int             _snwprintf(wchar_t*,size_t,const wchar_t*,...);
+int             _vsnwprintf(wchar_t*,size_t,const wchar_t*,va_list);
+FILE*   _wfdopen(int,const wchar_t*);
+FILE*   _wfopen(const wchar_t*,const wchar_t*);
+FILE*   _wfreopen(const wchar_t*,const wchar_t*,FILE*);
+FILE*   _wfsopen(const wchar_t*,const wchar_t*,int);
+void            _wperror(const wchar_t*);
+FILE*   _wpopen(const wchar_t*,const wchar_t*);
+int             _wremove(const wchar_t*);
+wchar_t*_wtempnam(const wchar_t*,const wchar_t*);
+wchar_t*_wtmpnam(wchar_t*);
+
+wint_t  fgetwc(FILE*);
+wchar_t*fgetws(wchar_t*,int,FILE*);
+wint_t  fputwc(wint_t,FILE*);
+int             fputws(const wchar_t*,FILE*);
+int             fwprintf(FILE*,const wchar_t*,...);
+int             fputws(const wchar_t*,FILE*);
+int             fwscanf(FILE*,const wchar_t*,...);
+wint_t  getwc(FILE*);
+wint_t  getwchar(void);
+wchar_t*getws(wchar_t*);
+wint_t  putwc(wint_t,FILE*);
+wint_t  putwchar(wint_t);
+int             putws(const wchar_t*);
+int             swprintf(wchar_t*,const wchar_t*,...);
+int             swscanf(const wchar_t*,const wchar_t*,...);
+wint_t  ungetwc(wint_t,FILE*);
+int             vfwprintf(FILE*,const wchar_t*,va_list);
+int             vswprintf(wchar_t*,const wchar_t*,va_list);
+int             vwprintf(const wchar_t*,va_list);
+int             wprintf(const wchar_t*,...);
+int             wscanf(const wchar_t*,...);
+#endif /* _WSTDIO_DEFINED */
+
+#ifndef _WSTDLIB_DEFINED
+#define _WSTDLIB_DEFINED
+wchar_t*_itow(int,wchar_t*,int);
+wchar_t*_i64tow(__int64,wchar_t*,int);
+wchar_t*_ltow(long,wchar_t*,int);
+wchar_t*_ui64tow(unsigned __int64,wchar_t*,int);
+wchar_t*_ultow(unsigned long,wchar_t*,int);
+wchar_t*_wfullpath(wchar_t*,const wchar_t*,size_t);
+wchar_t*_wgetenv(const wchar_t*);
+void            _wmakepath(wchar_t*,const wchar_t*,const wchar_t*,const wchar_t*,const wchar_t*);
+void            _wperror(const wchar_t*);
+int             _wputenv(const wchar_t*);
+void            _wsearchenv(const wchar_t*,const wchar_t*,wchar_t*);
+void            _wsplitpath(const wchar_t*,wchar_t*,wchar_t*,wchar_t*,wchar_t*);
+int             _wsystem(const wchar_t*);
+int             _wtoi(const wchar_t*);
+__int64         _wtoi64(const wchar_t*);
+long            _wtol(const wchar_t*);
+
+size_t mbstowcs(wchar_t*,const char*,size_t);
+int            mbtowc(wchar_t*,const char*,size_t);
+double         wcstod(const wchar_t*,wchar_t**);
+long           wcstol(const wchar_t*,wchar_t**,int);
+size_t wcstombs(char*,const wchar_t*,size_t);
+unsigned long  wcstoul(const wchar_t*,wchar_t**,int);
+int            wctomb(char*,wchar_t);
+#endif /* _WSTDLIB_DEFINED */
+
+#ifndef _WSTRING_DEFINED
+#define _WSTRING_DEFINED
+wchar_t*_wcsdup(const wchar_t*);
+int             _wcsicmp(const wchar_t*,const wchar_t*);
+int             _wcsicoll(const wchar_t*,const wchar_t*);
+wchar_t*_wcslwr(wchar_t*);
+int             _wcsnicmp(const wchar_t*,const wchar_t*,size_t);
+wchar_t*_wcsnset(wchar_t*,wchar_t,size_t);
+wchar_t*_wcsrev(wchar_t*);
+wchar_t*_wcsset(wchar_t*,wchar_t);
+wchar_t*_wcsupr(wchar_t*);
+
+wchar_t*wcscat(wchar_t*,const wchar_t*);
+wchar_t*wcschr(const wchar_t*,wchar_t);
+int             wcscmp(const wchar_t*,const wchar_t*);
+int             wcscoll(const wchar_t*,const wchar_t*);
+wchar_t*wcscpy(wchar_t*,const wchar_t*);
+size_t  wcscspn(const wchar_t*,const wchar_t*);
+size_t  wcslen(const wchar_t*);
+wchar_t*wcsncat(wchar_t*,const wchar_t*,size_t);
+int             wcsncmp(const wchar_t*,const wchar_t*,size_t);
+wchar_t*wcsncpy(wchar_t*,const wchar_t*,size_t);
+wchar_t*wcspbrk(const wchar_t*,const wchar_t*);
+wchar_t*wcsrchr(const wchar_t*,wchar_t wcFor);
+size_t  wcsspn(const wchar_t*,const wchar_t*);
+wchar_t*wcsstr(const wchar_t*,const wchar_t*);
+wchar_t*wcstok(wchar_t*,const wchar_t*);
+size_t  wcsxfrm(wchar_t*,const wchar_t*,size_t);
+#endif /* _WSTRING_DEFINED */
+
+#ifndef _WTIME_DEFINED
+#define _WTIME_DEFINED
+wchar_t*_wasctime(const struct tm*);
+size_t  wcsftime(wchar_t*,size_t,const wchar_t*,const struct tm*);
+wchar_t*_wctime(const time_t*);
+wchar_t*_wstrdate(wchar_t*);
+wchar_t*_wstrtime(wchar_t*);
+#endif /* _WTIME_DEFINED */
+
+wchar_t btowc(int);
+size_t  mbrlen(const char *,size_t,mbstate_t*);
+size_t  mbrtowc(wchar_t*,const char*,size_t,mbstate_t*);
+size_t  mbsrtowcs(wchar_t*,const char**,size_t,mbstate_t*);
+size_t  wcrtomb(char*,wchar_t,mbstate_t*);
+size_t  wcsrtombs(char*,const wchar_t**,size_t,mbstate_t*);
+int             wctob(wint_t);
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <poppack.h>
+
+#endif /* __WINE_WCHAR_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/wctype.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/wctype.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msvcrt/wctype.h	(revision 16410)
@@ -0,0 +1,91 @@
+/*
+ * Unicode definitions
+ *
+ * Copyright 2000 Francois Gouget.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __WINE_WCTYPE_H
+#define __WINE_WCTYPE_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#include <pshpack8.h>
+
+#ifndef _WCHAR_T_DEFINED
+#define _WCHAR_T_DEFINED
+#ifndef __cplusplus
+typedef unsigned short wchar_t;
+#endif
+#endif
+
+/* ASCII char classification table - binary compatible */
+#define _UPPER        0x0001  /* C1_UPPER */
+#define _LOWER        0x0002  /* C1_LOWER */
+#define _DIGIT        0x0004  /* C1_DIGIT */
+#define _SPACE        0x0008  /* C1_SPACE */
+#define _PUNCT        0x0010  /* C1_PUNCT */
+#define _CONTROL      0x0020  /* C1_CNTRL */
+#define _BLANK        0x0040  /* C1_BLANK */
+#define _HEX          0x0080  /* C1_XDIGIT */
+#define _LEADBYTE     0x8000
+#define _ALPHA       (0x0100|_UPPER|_LOWER)  /* (C1_ALPHA|_UPPER|_LOWER) */
+
+#ifndef WEOF
+#define WEOF        (wint_t)(0xFFFF)
+#endif
+
+#ifndef _WCTYPE_T_DEFINED
+typedef unsigned short  wint_t;
+typedef unsigned short  wctype_t;
+#define _WCTYPE_T_DEFINED
+#endif
+
+/* FIXME: there's something to do with __p__pctype and __p__pwctype */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _WCTYPE_DEFINED
+#define _WCTYPE_DEFINED
+int is_wctype(wint_t,wctype_t);
+int isleadbyte(int);
+int iswalnum(wint_t);
+int iswalpha(wint_t);
+int iswascii(wint_t);
+int iswcntrl(wint_t);
+int iswctype(wint_t,wctype_t);
+int iswdigit(wint_t);
+int iswgraph(wint_t);
+int iswlower(wint_t);
+int iswprint(wint_t);
+int iswpunct(wint_t);
+int iswspace(wint_t);
+int iswupper(wint_t);
+int iswxdigit(wint_t);
+wchar_t towlower(wchar_t);
+wchar_t towupper(wchar_t);
+#endif /* _WCTYPE_DEFINED */
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <poppack.h>
+
+#endif /* __WINE_WCTYPE_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mswsock.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mswsock.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mswsock.h	(revision 16410)
@@ -0,0 +1,183 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef _MSWSOCK_
+#define _MSWSOCK_
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+#ifndef USE_WS_PREFIX
+#define SO_CONNDATA        0x7000
+#define SO_CONNOPT         0x7001
+#define SO_DISCDATA        0x7002
+#define SO_DISCOPT         0x7003
+#define SO_CONNDATALEN     0x7004
+#define SO_CONNOPTLEN      0x7005
+#define SO_DISCDATALEN     0x7006
+#define SO_DISCOPTLEN      0x7007
+#else
+#define WS_SO_CONNDATA     0x7000
+#define WS_SO_CONNOPT      0x7001
+#define WS_SO_DISCDATA     0x7002
+#define WS_SO_DISCOPT      0x7003
+#define WS_SO_CONNDATALEN  0x7004
+#define WS_SO_CONNOPTLEN   0x7005
+#define WS_SO_DISCDATALEN  0x7006
+#define WS_SO_DISCOPTLEN   0x7007
+#endif
+
+#ifndef USE_WS_PREFIX
+#define SO_OPENTYPE     0x7008
+#else
+#define WS_SO_OPENTYPE  0x7008
+#endif
+
+#ifndef USE_WS_PREFIX
+#define SO_SYNCHRONOUS_ALERT       0x10
+#define SO_SYNCHRONOUS_NONALERT    0x20
+#else
+#define WS_SO_SYNCHRONOUS_ALERT    0x10
+#define WS_SO_SYNCHRONOUS_NONALERT 0x20
+#endif
+
+#ifndef USE_WS_PREFIX
+#define SO_MAXDG                      0x7009
+#define SO_MAXPATHDG                  0x700A
+#define SO_UPDATE_ACCEPT_CONTEXT      0x700B
+#define SO_CONNECT_TIME               0x700C
+#define SO_UPDATE_CONNECT_CONTEXT     0x7010
+#else
+#define WS_SO_MAXDG                   0x7009
+#define WS_SO_MAXPATHDG               0x700A
+#define WS_SO_UPDATE_ACCEPT_CONTEXT   0x700B
+#define WS_SO_CONNECT_TIME            0x700C
+#define WS_SO_UPDATE_CONNECT_CONTEXT  0x7010
+#endif
+
+#ifndef USE_WS_PREFIX
+#define TCP_BSDURGENT              0x7000
+#else
+#define WS_TCP_BSDURGENT              0x7000
+#endif
+
+#ifndef USE_WS_PREFIX
+#define SIO_UDP_CONNRESET _WSAIOW(IOC_VENDOR,12)
+#else
+#define WS_SIO_UDP_CONNRESET _WSAIOW(WS_IOC_VENDOR,12)
+#endif
+
+#define DE_REUSE_SOCKET TF_REUSE_SOCKET
+
+#ifndef USE_WS_PREFIX
+#define MSG_TRUNC   0x0100
+#define MSG_CTRUNC  0x0200
+#define MSG_BCAST   0x0400
+#define MSG_MCAST   0x0800
+#else
+#define WS_MSG_TRUNC   0x0100
+#define WS_MSG_CTRUNC  0x0200
+#define WS_MSG_BCAST   0x0400
+#define WS_MSG_MCAST   0x0800
+#endif
+
+#define TF_DISCONNECT          0x01
+#define TF_REUSE_SOCKET        0x02
+#define TF_WRITE_BEHIND        0x04
+#define TF_USE_DEFAULT_WORKER  0x00
+#define TF_USE_SYSTEM_THREAD   0x10
+#define TF_USE_KERNEL_APC      0x20
+
+#define TP_DISCONNECT           TF_DISCONNECT
+#define TP_REUSE_SOCKET         TF_REUSE_SOCKET
+#define TP_USE_DEFAULT_WORKER   TF_USE_DEFAULT_WORKER
+#define TP_USE_SYSTEM_THREAD    TF_USE_SYSTEM_THREAD
+#define TP_USE_KERNEL_APC       TF_USE_KERNEL_APC
+
+#define TP_ELEMENT_MEMORY   1
+#define TP_ELEMENT_FILE     2
+#define TP_ELEMENT_EOP      4
+
+#define WSAID_ACCEPTEX \
+	{0xb5367df1,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}}
+#define WSAID_CONNECTEX \
+	{0x25a207b9,0xddf3,0x4660,{0x8e,0xe9,0x76,0xe5,0x8c,0x74,0x06,0x3e}}
+#define WSAID_DISCONNECTEX \
+	{0x7fda2e11,0x8630,0x436f,{0xa0, 0x31, 0xf5, 0x36, 0xa6, 0xee, 0xc1, 0x57}}
+#define WSAID_GETACCEPTEXSOCKADDRS \
+	{0xb5367df2,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}}
+#define WSAID_TRANSMITFILE \
+	{0xb5367df0,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}}
+#define WSAID_TRANSMITPACKETS \
+	{0xd9689da0,0x1f90,0x11d3,{0x99,0x71,0x00,0xc0,0x4f,0x68,0xc8,0x76}}
+#define WSAID_WSARECVMSG \
+	{0xf689d7c8,0x6f1f,0x436b,{0x8a,0x53,0xe5,0x4f,0xe3,0x51,0xc3,0x22}}
+
+typedef struct _TRANSMIT_FILE_BUFFERS {
+    LPVOID  Head;
+    DWORD   HeadLength;
+    LPVOID  Tail;
+    DWORD   TailLength;
+} TRANSMIT_FILE_BUFFERS, *PTRANSMIT_FILE_BUFFERS, *LPTRANSMIT_FILE_BUFFERS;
+
+typedef struct _TRANSMIT_PACKETS_ELEMENT {
+    ULONG  dwElFlags;
+    ULONG  cLength;
+    union {
+      struct {
+	LARGE_INTEGER  nFileOffset;
+	HANDLE         hFile;
+      } DUMMYSTRUCTNAME;
+      PVOID  pBuffer;
+    } DUMMYUNIONNAME;
+} TRANSMIT_PACKETS_ELEMENT, *PTRANSMIT_PACKETS_ELEMENT, *LPTRANSMIT_PACKETS_ELEMENT;
+
+typedef struct _WSAMSG {
+    LPSOCKADDR  name;
+    INT         namelen;
+    LPWSABUF    lpBuffers;
+    DWORD       dwBufferCount;
+    WSABUF      Control;
+    DWORD       dwFlags;
+} WSAMSG, *PWSAMSG, *LPWSAMSG;
+
+typedef struct _WSACMSGHDR {
+    SIZE_T      cmsg_len;
+    INT         cmsg_level;
+    INT         cmsg_type;
+    /* followed by UCHAR cmsg_data[] */
+} WSACMSGHDR, *PWSACMSGHDR, *LPWSACMSGHDR;
+
+typedef BOOL (WINAPI * LPFN_ACCEPTEX)(SOCKET, SOCKET, PVOID, DWORD, DWORD, DWORD, LPDWORD, LPOVERLAPPED);
+typedef BOOL (WINAPI * LPFN_CONNECTEX)(SOCKET, const struct sockaddr *, int, PVOID, DWORD, LPDWORD, LPOVERLAPPED);
+typedef BOOL (WINAPI * LPFN_DISCONNECTEX)(SOCKET, LPOVERLAPPED, DWORD, DWORD);
+typedef VOID (WINAPI * LPFN_GETACCEPTEXSOCKADDRS)(PVOID, DWORD, DWORD, DWORD, struct sockaddr **, LPINT, struct sockaddr **, LPINT);
+typedef BOOL (WINAPI * LPFN_TRANSMITFILE)(SOCKET, HANDLE, DWORD, DWORD, LPOVERLAPPED, LPTRANSMIT_FILE_BUFFERS, DWORD);
+typedef BOOL (WINAPI * LPFN_TRANSMITPACKETS)(SOCKET, LPTRANSMIT_PACKETS_ELEMENT, DWORD, DWORD, LPOVERLAPPED, DWORD);
+typedef INT  (WINAPI * LPFN_WSARECVMSG)(SOCKET, LPWSAMSG, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+
+BOOL WINAPI AcceptEx(SOCKET, SOCKET, PVOID, DWORD, DWORD, DWORD, LPDWORD, LPOVERLAPPED);
+VOID WINAPI GetAcceptExSockaddrs(PVOID, DWORD, DWORD, DWORD, struct sockaddr **, LPINT, struct sockaddr **, LPINT);
+BOOL WINAPI TransmitFile(SOCKET, HANDLE, DWORD, DWORD, LPOVERLAPPED, LPTRANSMIT_FILE_BUFFERS, DWORD);
+INT  WINAPI WSARecvEx(SOCKET, char *, INT, INT *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MSWSOCK_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msxml.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msxml.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msxml.h	(revision 16410)
@@ -0,0 +1,1773 @@
+/*** Autogenerated by WIDL 1.1.10 from ../../../dlls/wined3d/../../include/msxml.idl - Do not edit ***/
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef __WIDL_MSXML_H
+#define __WIDL_MSXML_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <unknwn.h>
+#include <wtypes.h>
+#include <objidl.h>
+#include <oaidl.h>
+#ifndef __IXMLElementCollection_FWD_DEFINED__
+#define __IXMLElementCollection_FWD_DEFINED__
+typedef interface IXMLElementCollection IXMLElementCollection;
+#endif
+
+/*****************************************************************************
+ * IXMLElementCollection interface
+ */
+#ifndef __IXMLElementCollection_INTERFACE_DEFINED__
+#define __IXMLElementCollection_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IXMLElementCollection, 0x65725580, 0x9b5d, 0x11d0, 0x9b,0xfe, 0x00,0xc0,0x4f,0xc9,0x9c,0x8e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IXMLElementCollection : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE put_length(
+        long v) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_length(
+        long *p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get__newEnum(
+        IUnknown **ppUnk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE item(
+        VARIANT var1,
+        VARIANT var2,
+        IDispatch **ppDisp) = 0;
+
+};
+#else
+typedef struct IXMLElementCollectionVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IXMLElementCollection* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IXMLElementCollection* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IXMLElementCollection* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IXMLElementCollection* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IXMLElementCollection* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IXMLElementCollection* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IXMLElementCollection* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IXMLElementCollection methods ***/
+    HRESULT (STDMETHODCALLTYPE *put_length)(
+        IXMLElementCollection* This,
+        long v);
+
+    HRESULT (STDMETHODCALLTYPE *get_length)(
+        IXMLElementCollection* This,
+        long *p);
+
+    HRESULT (STDMETHODCALLTYPE *get__newEnum)(
+        IXMLElementCollection* This,
+        IUnknown **ppUnk);
+
+    HRESULT (STDMETHODCALLTYPE *item)(
+        IXMLElementCollection* This,
+        VARIANT var1,
+        VARIANT var2,
+        IDispatch **ppDisp);
+
+    END_INTERFACE
+} IXMLElementCollectionVtbl;
+interface IXMLElementCollection {
+    CONST_VTBL IXMLElementCollectionVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IXMLElementCollection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IXMLElementCollection_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IXMLElementCollection_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IXMLElementCollection_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IXMLElementCollection_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IXMLElementCollection_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IXMLElementCollection_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IXMLElementCollection methods ***/
+#define IXMLElementCollection_put_length(This,v) (This)->lpVtbl->put_length(This,v)
+#define IXMLElementCollection_get_length(This,p) (This)->lpVtbl->get_length(This,p)
+#define IXMLElementCollection_get__newEnum(This,ppUnk) (This)->lpVtbl->get__newEnum(This,ppUnk)
+#define IXMLElementCollection_item(This,var1,var2,ppDisp) (This)->lpVtbl->item(This,var1,var2,ppDisp)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IXMLElementCollection_put_length_Proxy(
+    IXMLElementCollection* This,
+    long v);
+void __RPC_STUB IXMLElementCollection_put_length_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLElementCollection_get_length_Proxy(
+    IXMLElementCollection* This,
+    long *p);
+void __RPC_STUB IXMLElementCollection_get_length_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLElementCollection_get__newEnum_Proxy(
+    IXMLElementCollection* This,
+    IUnknown **ppUnk);
+void __RPC_STUB IXMLElementCollection_get__newEnum_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLElementCollection_item_Proxy(
+    IXMLElementCollection* This,
+    VARIANT var1,
+    VARIANT var2,
+    IDispatch **ppDisp);
+void __RPC_STUB IXMLElementCollection_item_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IXMLElementCollection_INTERFACE_DEFINED__ */
+
+#ifndef __IXMLElement_FWD_DEFINED__
+#define __IXMLElement_FWD_DEFINED__
+typedef interface IXMLElement IXMLElement;
+#endif
+
+/*****************************************************************************
+ * IXMLElement interface
+ */
+#ifndef __IXMLElement_INTERFACE_DEFINED__
+#define __IXMLElement_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IXMLElement, 0x3f7f31ac, 0xe15f, 0x11d0, 0x9c,0x25, 0x00,0xc0,0x4f,0xc9,0x9c,0x8e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IXMLElement : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_tagName(
+        BSTR *p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_tagName(
+        BSTR p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_parent(
+        IXMLElement **parent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE setAttribute(
+        BSTR strPropertyName,
+        VARIANT PropertyValue) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getAttribute(
+        BSTR strPropertyName,
+        VARIANT *PropertyValue) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE removeAttribute(
+        BSTR strPropertyName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_children(
+        IXMLElementCollection **p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_type(
+        long *p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_text(
+        BSTR *p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_text(
+        BSTR p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE addChild(
+        IXMLElement *pChildElem,
+        long lIndex,
+        long lreserved) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE removeChild(
+        IXMLElement *pChildElem) = 0;
+
+};
+#else
+typedef struct IXMLElementVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IXMLElement* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IXMLElement* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IXMLElement* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IXMLElement* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IXMLElement* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IXMLElement* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IXMLElement* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IXMLElement methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_tagName)(
+        IXMLElement* This,
+        BSTR *p);
+
+    HRESULT (STDMETHODCALLTYPE *put_tagName)(
+        IXMLElement* This,
+        BSTR p);
+
+    HRESULT (STDMETHODCALLTYPE *get_parent)(
+        IXMLElement* This,
+        IXMLElement **parent);
+
+    HRESULT (STDMETHODCALLTYPE *setAttribute)(
+        IXMLElement* This,
+        BSTR strPropertyName,
+        VARIANT PropertyValue);
+
+    HRESULT (STDMETHODCALLTYPE *getAttribute)(
+        IXMLElement* This,
+        BSTR strPropertyName,
+        VARIANT *PropertyValue);
+
+    HRESULT (STDMETHODCALLTYPE *removeAttribute)(
+        IXMLElement* This,
+        BSTR strPropertyName);
+
+    HRESULT (STDMETHODCALLTYPE *get_children)(
+        IXMLElement* This,
+        IXMLElementCollection **p);
+
+    HRESULT (STDMETHODCALLTYPE *get_type)(
+        IXMLElement* This,
+        long *p);
+
+    HRESULT (STDMETHODCALLTYPE *get_text)(
+        IXMLElement* This,
+        BSTR *p);
+
+    HRESULT (STDMETHODCALLTYPE *put_text)(
+        IXMLElement* This,
+        BSTR p);
+
+    HRESULT (STDMETHODCALLTYPE *addChild)(
+        IXMLElement* This,
+        IXMLElement *pChildElem,
+        long lIndex,
+        long lreserved);
+
+    HRESULT (STDMETHODCALLTYPE *removeChild)(
+        IXMLElement* This,
+        IXMLElement *pChildElem);
+
+    END_INTERFACE
+} IXMLElementVtbl;
+interface IXMLElement {
+    CONST_VTBL IXMLElementVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IXMLElement_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IXMLElement_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IXMLElement_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IXMLElement_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IXMLElement_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IXMLElement_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IXMLElement_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IXMLElement methods ***/
+#define IXMLElement_get_tagName(This,p) (This)->lpVtbl->get_tagName(This,p)
+#define IXMLElement_put_tagName(This,p) (This)->lpVtbl->put_tagName(This,p)
+#define IXMLElement_get_parent(This,parent) (This)->lpVtbl->get_parent(This,parent)
+#define IXMLElement_setAttribute(This,strPropertyName,PropertyValue) (This)->lpVtbl->setAttribute(This,strPropertyName,PropertyValue)
+#define IXMLElement_getAttribute(This,strPropertyName,PropertyValue) (This)->lpVtbl->getAttribute(This,strPropertyName,PropertyValue)
+#define IXMLElement_removeAttribute(This,strPropertyName) (This)->lpVtbl->removeAttribute(This,strPropertyName)
+#define IXMLElement_get_children(This,p) (This)->lpVtbl->get_children(This,p)
+#define IXMLElement_get_type(This,p) (This)->lpVtbl->get_type(This,p)
+#define IXMLElement_get_text(This,p) (This)->lpVtbl->get_text(This,p)
+#define IXMLElement_put_text(This,p) (This)->lpVtbl->put_text(This,p)
+#define IXMLElement_addChild(This,pChildElem,lIndex,lreserved) (This)->lpVtbl->addChild(This,pChildElem,lIndex,lreserved)
+#define IXMLElement_removeChild(This,pChildElem) (This)->lpVtbl->removeChild(This,pChildElem)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IXMLElement_get_tagName_Proxy(
+    IXMLElement* This,
+    BSTR *p);
+void __RPC_STUB IXMLElement_get_tagName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLElement_put_tagName_Proxy(
+    IXMLElement* This,
+    BSTR p);
+void __RPC_STUB IXMLElement_put_tagName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLElement_get_parent_Proxy(
+    IXMLElement* This,
+    IXMLElement **parent);
+void __RPC_STUB IXMLElement_get_parent_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLElement_setAttribute_Proxy(
+    IXMLElement* This,
+    BSTR strPropertyName,
+    VARIANT PropertyValue);
+void __RPC_STUB IXMLElement_setAttribute_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLElement_getAttribute_Proxy(
+    IXMLElement* This,
+    BSTR strPropertyName,
+    VARIANT *PropertyValue);
+void __RPC_STUB IXMLElement_getAttribute_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLElement_removeAttribute_Proxy(
+    IXMLElement* This,
+    BSTR strPropertyName);
+void __RPC_STUB IXMLElement_removeAttribute_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLElement_get_children_Proxy(
+    IXMLElement* This,
+    IXMLElementCollection **p);
+void __RPC_STUB IXMLElement_get_children_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLElement_get_type_Proxy(
+    IXMLElement* This,
+    long *p);
+void __RPC_STUB IXMLElement_get_type_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLElement_get_text_Proxy(
+    IXMLElement* This,
+    BSTR *p);
+void __RPC_STUB IXMLElement_get_text_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLElement_put_text_Proxy(
+    IXMLElement* This,
+    BSTR p);
+void __RPC_STUB IXMLElement_put_text_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLElement_addChild_Proxy(
+    IXMLElement* This,
+    IXMLElement *pChildElem,
+    long lIndex,
+    long lreserved);
+void __RPC_STUB IXMLElement_addChild_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLElement_removeChild_Proxy(
+    IXMLElement* This,
+    IXMLElement *pChildElem);
+void __RPC_STUB IXMLElement_removeChild_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IXMLElement_INTERFACE_DEFINED__ */
+
+#ifndef __IXMLDocument_FWD_DEFINED__
+#define __IXMLDocument_FWD_DEFINED__
+typedef interface IXMLDocument IXMLDocument;
+#endif
+
+/*****************************************************************************
+ * IXMLDocument interface
+ */
+#ifndef __IXMLDocument_INTERFACE_DEFINED__
+#define __IXMLDocument_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IXMLDocument, 0xf52e2b61, 0x18a1, 0x11d1, 0xb1,0x05, 0x00,0x80,0x5f,0x49,0x91,0x6b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IXMLDocument : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_root(
+        IXMLElement **p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_fileSize(
+        BSTR *p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_fileModifiedDate(
+        BSTR *p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_fileUpdatedDate(
+        BSTR *p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_URL(
+        BSTR *p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_URL(
+        BSTR p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_mimeType(
+        BSTR *p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_readyState(
+        long *p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_charset(
+        BSTR *p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_charset(
+        BSTR p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_version(
+        BSTR *p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_doctype(
+        BSTR *p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_dtdURl(
+        BSTR *p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE createElement(
+        VARIANT vType,
+        VARIANT var1,
+        IXMLElement **ppElem) = 0;
+
+};
+#else
+typedef struct IXMLDocumentVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IXMLDocument* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IXMLDocument* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IXMLDocument* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IXMLDocument* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IXMLDocument* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IXMLDocument* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IXMLDocument* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IXMLDocument methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_root)(
+        IXMLDocument* This,
+        IXMLElement **p);
+
+    HRESULT (STDMETHODCALLTYPE *get_fileSize)(
+        IXMLDocument* This,
+        BSTR *p);
+
+    HRESULT (STDMETHODCALLTYPE *get_fileModifiedDate)(
+        IXMLDocument* This,
+        BSTR *p);
+
+    HRESULT (STDMETHODCALLTYPE *get_fileUpdatedDate)(
+        IXMLDocument* This,
+        BSTR *p);
+
+    HRESULT (STDMETHODCALLTYPE *get_URL)(
+        IXMLDocument* This,
+        BSTR *p);
+
+    HRESULT (STDMETHODCALLTYPE *put_URL)(
+        IXMLDocument* This,
+        BSTR p);
+
+    HRESULT (STDMETHODCALLTYPE *get_mimeType)(
+        IXMLDocument* This,
+        BSTR *p);
+
+    HRESULT (STDMETHODCALLTYPE *get_readyState)(
+        IXMLDocument* This,
+        long *p);
+
+    HRESULT (STDMETHODCALLTYPE *get_charset)(
+        IXMLDocument* This,
+        BSTR *p);
+
+    HRESULT (STDMETHODCALLTYPE *put_charset)(
+        IXMLDocument* This,
+        BSTR p);
+
+    HRESULT (STDMETHODCALLTYPE *get_version)(
+        IXMLDocument* This,
+        BSTR *p);
+
+    HRESULT (STDMETHODCALLTYPE *get_doctype)(
+        IXMLDocument* This,
+        BSTR *p);
+
+    HRESULT (STDMETHODCALLTYPE *get_dtdURl)(
+        IXMLDocument* This,
+        BSTR *p);
+
+    HRESULT (STDMETHODCALLTYPE *createElement)(
+        IXMLDocument* This,
+        VARIANT vType,
+        VARIANT var1,
+        IXMLElement **ppElem);
+
+    END_INTERFACE
+} IXMLDocumentVtbl;
+interface IXMLDocument {
+    CONST_VTBL IXMLDocumentVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IXMLDocument_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IXMLDocument_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IXMLDocument_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IXMLDocument_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IXMLDocument_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IXMLDocument_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IXMLDocument_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IXMLDocument methods ***/
+#define IXMLDocument_get_root(This,p) (This)->lpVtbl->get_root(This,p)
+#define IXMLDocument_get_fileSize(This,p) (This)->lpVtbl->get_fileSize(This,p)
+#define IXMLDocument_get_fileModifiedDate(This,p) (This)->lpVtbl->get_fileModifiedDate(This,p)
+#define IXMLDocument_get_fileUpdatedDate(This,p) (This)->lpVtbl->get_fileUpdatedDate(This,p)
+#define IXMLDocument_get_URL(This,p) (This)->lpVtbl->get_URL(This,p)
+#define IXMLDocument_put_URL(This,p) (This)->lpVtbl->put_URL(This,p)
+#define IXMLDocument_get_mimeType(This,p) (This)->lpVtbl->get_mimeType(This,p)
+#define IXMLDocument_get_readyState(This,p) (This)->lpVtbl->get_readyState(This,p)
+#define IXMLDocument_get_charset(This,p) (This)->lpVtbl->get_charset(This,p)
+#define IXMLDocument_put_charset(This,p) (This)->lpVtbl->put_charset(This,p)
+#define IXMLDocument_get_version(This,p) (This)->lpVtbl->get_version(This,p)
+#define IXMLDocument_get_doctype(This,p) (This)->lpVtbl->get_doctype(This,p)
+#define IXMLDocument_get_dtdURl(This,p) (This)->lpVtbl->get_dtdURl(This,p)
+#define IXMLDocument_createElement(This,vType,var1,ppElem) (This)->lpVtbl->createElement(This,vType,var1,ppElem)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IXMLDocument_get_root_Proxy(
+    IXMLDocument* This,
+    IXMLElement **p);
+void __RPC_STUB IXMLDocument_get_root_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument_get_fileSize_Proxy(
+    IXMLDocument* This,
+    BSTR *p);
+void __RPC_STUB IXMLDocument_get_fileSize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument_get_fileModifiedDate_Proxy(
+    IXMLDocument* This,
+    BSTR *p);
+void __RPC_STUB IXMLDocument_get_fileModifiedDate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument_get_fileUpdatedDate_Proxy(
+    IXMLDocument* This,
+    BSTR *p);
+void __RPC_STUB IXMLDocument_get_fileUpdatedDate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument_get_URL_Proxy(
+    IXMLDocument* This,
+    BSTR *p);
+void __RPC_STUB IXMLDocument_get_URL_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument_put_URL_Proxy(
+    IXMLDocument* This,
+    BSTR p);
+void __RPC_STUB IXMLDocument_put_URL_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument_get_mimeType_Proxy(
+    IXMLDocument* This,
+    BSTR *p);
+void __RPC_STUB IXMLDocument_get_mimeType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument_get_readyState_Proxy(
+    IXMLDocument* This,
+    long *p);
+void __RPC_STUB IXMLDocument_get_readyState_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument_get_charset_Proxy(
+    IXMLDocument* This,
+    BSTR *p);
+void __RPC_STUB IXMLDocument_get_charset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument_put_charset_Proxy(
+    IXMLDocument* This,
+    BSTR p);
+void __RPC_STUB IXMLDocument_put_charset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument_get_version_Proxy(
+    IXMLDocument* This,
+    BSTR *p);
+void __RPC_STUB IXMLDocument_get_version_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument_get_doctype_Proxy(
+    IXMLDocument* This,
+    BSTR *p);
+void __RPC_STUB IXMLDocument_get_doctype_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument_get_dtdURl_Proxy(
+    IXMLDocument* This,
+    BSTR *p);
+void __RPC_STUB IXMLDocument_get_dtdURl_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument_createElement_Proxy(
+    IXMLDocument* This,
+    VARIANT vType,
+    VARIANT var1,
+    IXMLElement **ppElem);
+void __RPC_STUB IXMLDocument_createElement_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IXMLDocument_INTERFACE_DEFINED__ */
+
+#ifndef __IXMLElement2_FWD_DEFINED__
+#define __IXMLElement2_FWD_DEFINED__
+typedef interface IXMLElement2 IXMLElement2;
+#endif
+
+/*****************************************************************************
+ * IXMLElement2 interface
+ */
+#ifndef __IXMLElement2_INTERFACE_DEFINED__
+#define __IXMLElement2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IXMLElement2, 0x2b8de2ff, 0x8d2d, 0x11d1, 0xb2,0xfc, 0x00,0xc0,0x4f,0xd9,0x15,0xa9);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IXMLElement2 : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_tagName(
+        BSTR *p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_tagName(
+        BSTR p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_parent(
+        IXMLElement2 **ppParent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE setAttribute(
+        BSTR strPropertyName,
+        VARIANT PropertyValue) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getAttribute(
+        BSTR strPropertyName,
+        VARIANT *PropertyValue) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE removeAttribute(
+        BSTR strPropertyName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_children(
+        IXMLElementCollection **pp) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_type(
+        long *plType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_text(
+        BSTR *p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_text(
+        BSTR p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE addChild(
+        IXMLElement2 *pChildElem,
+        long lIndex,
+        long lReserved) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE removeChild(
+        IXMLElement2 *pChildElem) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_attributes(
+        IXMLElementCollection **pp) = 0;
+
+};
+#else
+typedef struct IXMLElement2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IXMLElement2* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IXMLElement2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IXMLElement2* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IXMLElement2* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IXMLElement2* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IXMLElement2* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IXMLElement2* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IXMLElement2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_tagName)(
+        IXMLElement2* This,
+        BSTR *p);
+
+    HRESULT (STDMETHODCALLTYPE *put_tagName)(
+        IXMLElement2* This,
+        BSTR p);
+
+    HRESULT (STDMETHODCALLTYPE *get_parent)(
+        IXMLElement2* This,
+        IXMLElement2 **ppParent);
+
+    HRESULT (STDMETHODCALLTYPE *setAttribute)(
+        IXMLElement2* This,
+        BSTR strPropertyName,
+        VARIANT PropertyValue);
+
+    HRESULT (STDMETHODCALLTYPE *getAttribute)(
+        IXMLElement2* This,
+        BSTR strPropertyName,
+        VARIANT *PropertyValue);
+
+    HRESULT (STDMETHODCALLTYPE *removeAttribute)(
+        IXMLElement2* This,
+        BSTR strPropertyName);
+
+    HRESULT (STDMETHODCALLTYPE *get_children)(
+        IXMLElement2* This,
+        IXMLElementCollection **pp);
+
+    HRESULT (STDMETHODCALLTYPE *get_type)(
+        IXMLElement2* This,
+        long *plType);
+
+    HRESULT (STDMETHODCALLTYPE *get_text)(
+        IXMLElement2* This,
+        BSTR *p);
+
+    HRESULT (STDMETHODCALLTYPE *put_text)(
+        IXMLElement2* This,
+        BSTR p);
+
+    HRESULT (STDMETHODCALLTYPE *addChild)(
+        IXMLElement2* This,
+        IXMLElement2 *pChildElem,
+        long lIndex,
+        long lReserved);
+
+    HRESULT (STDMETHODCALLTYPE *removeChild)(
+        IXMLElement2* This,
+        IXMLElement2 *pChildElem);
+
+    HRESULT (STDMETHODCALLTYPE *get_attributes)(
+        IXMLElement2* This,
+        IXMLElementCollection **pp);
+
+    END_INTERFACE
+} IXMLElement2Vtbl;
+interface IXMLElement2 {
+    CONST_VTBL IXMLElement2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IXMLElement2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IXMLElement2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IXMLElement2_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IXMLElement2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IXMLElement2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IXMLElement2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IXMLElement2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IXMLElement2 methods ***/
+#define IXMLElement2_get_tagName(This,p) (This)->lpVtbl->get_tagName(This,p)
+#define IXMLElement2_put_tagName(This,p) (This)->lpVtbl->put_tagName(This,p)
+#define IXMLElement2_get_parent(This,ppParent) (This)->lpVtbl->get_parent(This,ppParent)
+#define IXMLElement2_setAttribute(This,strPropertyName,PropertyValue) (This)->lpVtbl->setAttribute(This,strPropertyName,PropertyValue)
+#define IXMLElement2_getAttribute(This,strPropertyName,PropertyValue) (This)->lpVtbl->getAttribute(This,strPropertyName,PropertyValue)
+#define IXMLElement2_removeAttribute(This,strPropertyName) (This)->lpVtbl->removeAttribute(This,strPropertyName)
+#define IXMLElement2_get_children(This,pp) (This)->lpVtbl->get_children(This,pp)
+#define IXMLElement2_get_type(This,plType) (This)->lpVtbl->get_type(This,plType)
+#define IXMLElement2_get_text(This,p) (This)->lpVtbl->get_text(This,p)
+#define IXMLElement2_put_text(This,p) (This)->lpVtbl->put_text(This,p)
+#define IXMLElement2_addChild(This,pChildElem,lIndex,lReserved) (This)->lpVtbl->addChild(This,pChildElem,lIndex,lReserved)
+#define IXMLElement2_removeChild(This,pChildElem) (This)->lpVtbl->removeChild(This,pChildElem)
+#define IXMLElement2_get_attributes(This,pp) (This)->lpVtbl->get_attributes(This,pp)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IXMLElement2_get_tagName_Proxy(
+    IXMLElement2* This,
+    BSTR *p);
+void __RPC_STUB IXMLElement2_get_tagName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLElement2_put_tagName_Proxy(
+    IXMLElement2* This,
+    BSTR p);
+void __RPC_STUB IXMLElement2_put_tagName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLElement2_get_parent_Proxy(
+    IXMLElement2* This,
+    IXMLElement2 **ppParent);
+void __RPC_STUB IXMLElement2_get_parent_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLElement2_setAttribute_Proxy(
+    IXMLElement2* This,
+    BSTR strPropertyName,
+    VARIANT PropertyValue);
+void __RPC_STUB IXMLElement2_setAttribute_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLElement2_getAttribute_Proxy(
+    IXMLElement2* This,
+    BSTR strPropertyName,
+    VARIANT *PropertyValue);
+void __RPC_STUB IXMLElement2_getAttribute_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLElement2_removeAttribute_Proxy(
+    IXMLElement2* This,
+    BSTR strPropertyName);
+void __RPC_STUB IXMLElement2_removeAttribute_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLElement2_get_children_Proxy(
+    IXMLElement2* This,
+    IXMLElementCollection **pp);
+void __RPC_STUB IXMLElement2_get_children_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLElement2_get_type_Proxy(
+    IXMLElement2* This,
+    long *plType);
+void __RPC_STUB IXMLElement2_get_type_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLElement2_get_text_Proxy(
+    IXMLElement2* This,
+    BSTR *p);
+void __RPC_STUB IXMLElement2_get_text_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLElement2_put_text_Proxy(
+    IXMLElement2* This,
+    BSTR p);
+void __RPC_STUB IXMLElement2_put_text_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLElement2_addChild_Proxy(
+    IXMLElement2* This,
+    IXMLElement2 *pChildElem,
+    long lIndex,
+    long lReserved);
+void __RPC_STUB IXMLElement2_addChild_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLElement2_removeChild_Proxy(
+    IXMLElement2* This,
+    IXMLElement2 *pChildElem);
+void __RPC_STUB IXMLElement2_removeChild_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLElement2_get_attributes_Proxy(
+    IXMLElement2* This,
+    IXMLElementCollection **pp);
+void __RPC_STUB IXMLElement2_get_attributes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IXMLElement2_INTERFACE_DEFINED__ */
+
+#ifndef __IXMLDocument2_FWD_DEFINED__
+#define __IXMLDocument2_FWD_DEFINED__
+typedef interface IXMLDocument2 IXMLDocument2;
+#endif
+
+/*****************************************************************************
+ * IXMLDocument2 interface
+ */
+#ifndef __IXMLDocument2_INTERFACE_DEFINED__
+#define __IXMLDocument2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IXMLDocument2, 0x2b8de2fe, 0x8d2d, 0x11d1, 0xb2,0xfc, 0x00,0xc0,0x4f,0xd9,0x15,0xa9);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IXMLDocument2 : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_root(
+        IXMLElement2 **p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_fileSize(
+        BSTR *p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_fileModifiedDate(
+        BSTR *p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_fileUpdatedDate(
+        BSTR *p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_URL(
+        BSTR *p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_URL(
+        BSTR p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_mimeType(
+        BSTR *p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_readyState(
+        long *pl) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_charset(
+        BSTR *p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_charset(
+        BSTR p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_version(
+        BSTR *p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_doctype(
+        BSTR *p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_dtdURL(
+        BSTR *p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE createElement(
+        VARIANT vType,
+        VARIANT var,
+        IXMLElement2 **ppElem) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_async(
+        VARIANT_BOOL *pf) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_async(
+        VARIANT_BOOL f) = 0;
+
+};
+#else
+typedef struct IXMLDocument2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IXMLDocument2* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IXMLDocument2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IXMLDocument2* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IXMLDocument2* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IXMLDocument2* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IXMLDocument2* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IXMLDocument2* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IXMLDocument2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_root)(
+        IXMLDocument2* This,
+        IXMLElement2 **p);
+
+    HRESULT (STDMETHODCALLTYPE *get_fileSize)(
+        IXMLDocument2* This,
+        BSTR *p);
+
+    HRESULT (STDMETHODCALLTYPE *get_fileModifiedDate)(
+        IXMLDocument2* This,
+        BSTR *p);
+
+    HRESULT (STDMETHODCALLTYPE *get_fileUpdatedDate)(
+        IXMLDocument2* This,
+        BSTR *p);
+
+    HRESULT (STDMETHODCALLTYPE *get_URL)(
+        IXMLDocument2* This,
+        BSTR *p);
+
+    HRESULT (STDMETHODCALLTYPE *put_URL)(
+        IXMLDocument2* This,
+        BSTR p);
+
+    HRESULT (STDMETHODCALLTYPE *get_mimeType)(
+        IXMLDocument2* This,
+        BSTR *p);
+
+    HRESULT (STDMETHODCALLTYPE *get_readyState)(
+        IXMLDocument2* This,
+        long *pl);
+
+    HRESULT (STDMETHODCALLTYPE *get_charset)(
+        IXMLDocument2* This,
+        BSTR *p);
+
+    HRESULT (STDMETHODCALLTYPE *put_charset)(
+        IXMLDocument2* This,
+        BSTR p);
+
+    HRESULT (STDMETHODCALLTYPE *get_version)(
+        IXMLDocument2* This,
+        BSTR *p);
+
+    HRESULT (STDMETHODCALLTYPE *get_doctype)(
+        IXMLDocument2* This,
+        BSTR *p);
+
+    HRESULT (STDMETHODCALLTYPE *get_dtdURL)(
+        IXMLDocument2* This,
+        BSTR *p);
+
+    HRESULT (STDMETHODCALLTYPE *createElement)(
+        IXMLDocument2* This,
+        VARIANT vType,
+        VARIANT var,
+        IXMLElement2 **ppElem);
+
+    HRESULT (STDMETHODCALLTYPE *get_async)(
+        IXMLDocument2* This,
+        VARIANT_BOOL *pf);
+
+    HRESULT (STDMETHODCALLTYPE *put_async)(
+        IXMLDocument2* This,
+        VARIANT_BOOL f);
+
+    END_INTERFACE
+} IXMLDocument2Vtbl;
+interface IXMLDocument2 {
+    CONST_VTBL IXMLDocument2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IXMLDocument2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IXMLDocument2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IXMLDocument2_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IXMLDocument2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IXMLDocument2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IXMLDocument2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IXMLDocument2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IXMLDocument2 methods ***/
+#define IXMLDocument2_get_root(This,p) (This)->lpVtbl->get_root(This,p)
+#define IXMLDocument2_get_fileSize(This,p) (This)->lpVtbl->get_fileSize(This,p)
+#define IXMLDocument2_get_fileModifiedDate(This,p) (This)->lpVtbl->get_fileModifiedDate(This,p)
+#define IXMLDocument2_get_fileUpdatedDate(This,p) (This)->lpVtbl->get_fileUpdatedDate(This,p)
+#define IXMLDocument2_get_URL(This,p) (This)->lpVtbl->get_URL(This,p)
+#define IXMLDocument2_put_URL(This,p) (This)->lpVtbl->put_URL(This,p)
+#define IXMLDocument2_get_mimeType(This,p) (This)->lpVtbl->get_mimeType(This,p)
+#define IXMLDocument2_get_readyState(This,pl) (This)->lpVtbl->get_readyState(This,pl)
+#define IXMLDocument2_get_charset(This,p) (This)->lpVtbl->get_charset(This,p)
+#define IXMLDocument2_put_charset(This,p) (This)->lpVtbl->put_charset(This,p)
+#define IXMLDocument2_get_version(This,p) (This)->lpVtbl->get_version(This,p)
+#define IXMLDocument2_get_doctype(This,p) (This)->lpVtbl->get_doctype(This,p)
+#define IXMLDocument2_get_dtdURL(This,p) (This)->lpVtbl->get_dtdURL(This,p)
+#define IXMLDocument2_createElement(This,vType,var,ppElem) (This)->lpVtbl->createElement(This,vType,var,ppElem)
+#define IXMLDocument2_get_async(This,pf) (This)->lpVtbl->get_async(This,pf)
+#define IXMLDocument2_put_async(This,f) (This)->lpVtbl->put_async(This,f)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IXMLDocument2_get_root_Proxy(
+    IXMLDocument2* This,
+    IXMLElement2 **p);
+void __RPC_STUB IXMLDocument2_get_root_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument2_get_fileSize_Proxy(
+    IXMLDocument2* This,
+    BSTR *p);
+void __RPC_STUB IXMLDocument2_get_fileSize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument2_get_fileModifiedDate_Proxy(
+    IXMLDocument2* This,
+    BSTR *p);
+void __RPC_STUB IXMLDocument2_get_fileModifiedDate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument2_get_fileUpdatedDate_Proxy(
+    IXMLDocument2* This,
+    BSTR *p);
+void __RPC_STUB IXMLDocument2_get_fileUpdatedDate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument2_get_URL_Proxy(
+    IXMLDocument2* This,
+    BSTR *p);
+void __RPC_STUB IXMLDocument2_get_URL_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument2_put_URL_Proxy(
+    IXMLDocument2* This,
+    BSTR p);
+void __RPC_STUB IXMLDocument2_put_URL_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument2_get_mimeType_Proxy(
+    IXMLDocument2* This,
+    BSTR *p);
+void __RPC_STUB IXMLDocument2_get_mimeType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument2_get_readyState_Proxy(
+    IXMLDocument2* This,
+    long *pl);
+void __RPC_STUB IXMLDocument2_get_readyState_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument2_get_charset_Proxy(
+    IXMLDocument2* This,
+    BSTR *p);
+void __RPC_STUB IXMLDocument2_get_charset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument2_put_charset_Proxy(
+    IXMLDocument2* This,
+    BSTR p);
+void __RPC_STUB IXMLDocument2_put_charset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument2_get_version_Proxy(
+    IXMLDocument2* This,
+    BSTR *p);
+void __RPC_STUB IXMLDocument2_get_version_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument2_get_doctype_Proxy(
+    IXMLDocument2* This,
+    BSTR *p);
+void __RPC_STUB IXMLDocument2_get_doctype_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument2_get_dtdURL_Proxy(
+    IXMLDocument2* This,
+    BSTR *p);
+void __RPC_STUB IXMLDocument2_get_dtdURL_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument2_createElement_Proxy(
+    IXMLDocument2* This,
+    VARIANT vType,
+    VARIANT var,
+    IXMLElement2 **ppElem);
+void __RPC_STUB IXMLDocument2_createElement_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument2_get_async_Proxy(
+    IXMLDocument2* This,
+    VARIANT_BOOL *pf);
+void __RPC_STUB IXMLDocument2_get_async_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLDocument2_put_async_Proxy(
+    IXMLDocument2* This,
+    VARIANT_BOOL f);
+void __RPC_STUB IXMLDocument2_put_async_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IXMLDocument2_INTERFACE_DEFINED__ */
+
+typedef enum tagXMLEMEM_TYPE {
+    XMLELEMTYPE_ELEMENT = 0,
+    XMLELEMTYPE_TEXT = 1,
+    XMLELEMTYPE_COMMENT = 2,
+    XMLELEMTYPE_DOCUMENT = 3,
+    XMLELEMTYPE_DTD = 4,
+    XMLELEMTYPE_PI = 5,
+    XMLELEMTYPE_OTHER = 6
+} XMLELEM_TYPE;
+typedef struct _xml_error {
+    UINT _nLine;
+    BSTR _pchBuf;
+    BSTR _cchBuf;
+    UINT _ich;
+    BSTR _pszFound;
+    BSTR _pszExpected;
+    DWORD _reserved1;
+    DWORD _reserved2;
+} XML_ERROR;
+#ifndef __IXMLAttribute_FWD_DEFINED__
+#define __IXMLAttribute_FWD_DEFINED__
+typedef interface IXMLAttribute IXMLAttribute;
+#endif
+
+/*****************************************************************************
+ * IXMLAttribute interface
+ */
+#ifndef __IXMLAttribute_INTERFACE_DEFINED__
+#define __IXMLAttribute_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IXMLAttribute, 0xd4d4a0fc, 0x3b73, 0x11d1, 0xb2,0xb4, 0x00,0xc0,0x4f,0xb9,0x25,0x96);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IXMLAttribute : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_name(
+        BSTR *p) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_value(
+        BSTR *p) = 0;
+
+};
+#else
+typedef struct IXMLAttributeVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IXMLAttribute* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IXMLAttribute* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IXMLAttribute* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IXMLAttribute* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IXMLAttribute* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IXMLAttribute* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IXMLAttribute* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IXMLAttribute methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_name)(
+        IXMLAttribute* This,
+        BSTR *p);
+
+    HRESULT (STDMETHODCALLTYPE *get_value)(
+        IXMLAttribute* This,
+        BSTR *p);
+
+    END_INTERFACE
+} IXMLAttributeVtbl;
+interface IXMLAttribute {
+    CONST_VTBL IXMLAttributeVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IXMLAttribute_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IXMLAttribute_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IXMLAttribute_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IXMLAttribute_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IXMLAttribute_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IXMLAttribute_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IXMLAttribute_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IXMLAttribute methods ***/
+#define IXMLAttribute_get_name(This,p) (This)->lpVtbl->get_name(This,p)
+#define IXMLAttribute_get_value(This,p) (This)->lpVtbl->get_value(This,p)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IXMLAttribute_get_name_Proxy(
+    IXMLAttribute* This,
+    BSTR *p);
+void __RPC_STUB IXMLAttribute_get_name_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IXMLAttribute_get_value_Proxy(
+    IXMLAttribute* This,
+    BSTR *p);
+void __RPC_STUB IXMLAttribute_get_value_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IXMLAttribute_INTERFACE_DEFINED__ */
+
+#ifndef __IXMLError_FWD_DEFINED__
+#define __IXMLError_FWD_DEFINED__
+typedef interface IXMLError IXMLError;
+#endif
+
+/*****************************************************************************
+ * IXMLError interface
+ */
+#ifndef __IXMLError_INTERFACE_DEFINED__
+#define __IXMLError_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IXMLError, 0x948c5ad3, 0xc58d, 0x11d0, 0x9c,0x0b, 0x00,0xc0,0x4f,0xc9,0x9c,0x8e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IXMLError : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetErrorInfo(
+        XML_ERROR *pErrorReturn) = 0;
+
+};
+#else
+typedef struct IXMLErrorVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IXMLError* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IXMLError* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IXMLError* This);
+
+    /*** IXMLError methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetErrorInfo)(
+        IXMLError* This,
+        XML_ERROR *pErrorReturn);
+
+    END_INTERFACE
+} IXMLErrorVtbl;
+interface IXMLError {
+    CONST_VTBL IXMLErrorVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IXMLError_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IXMLError_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IXMLError_Release(This) (This)->lpVtbl->Release(This)
+/*** IXMLError methods ***/
+#define IXMLError_GetErrorInfo(This,pErrorReturn) (This)->lpVtbl->GetErrorInfo(This,pErrorReturn)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IXMLError_GetErrorInfo_Proxy(
+    IXMLError* This,
+    XML_ERROR *pErrorReturn);
+void __RPC_STUB IXMLError_GetErrorInfo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IXMLError_INTERFACE_DEFINED__ */
+
+#ifndef __IXMLElementNotificationSink_FWD_DEFINED__
+#define __IXMLElementNotificationSink_FWD_DEFINED__
+typedef interface IXMLElementNotificationSink IXMLElementNotificationSink;
+#endif
+
+/*****************************************************************************
+ * IXMLElementNotificationSink interface
+ */
+#ifndef __IXMLElementNotificationSink_INTERFACE_DEFINED__
+#define __IXMLElementNotificationSink_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IXMLElementNotificationSink, 0xd9f1e15a, 0xccdb, 0x11d0, 0x9c,0x0c, 0x00,0xc0,0x4f,0xc9,0x9c,0x8e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IXMLElementNotificationSink : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE ChildAdded(
+        IDispatch *pChildElem) = 0;
+
+};
+#else
+typedef struct IXMLElementNotificationSinkVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IXMLElementNotificationSink* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IXMLElementNotificationSink* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IXMLElementNotificationSink* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IXMLElementNotificationSink* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IXMLElementNotificationSink* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IXMLElementNotificationSink* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IXMLElementNotificationSink* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IXMLElementNotificationSink methods ***/
+    HRESULT (STDMETHODCALLTYPE *ChildAdded)(
+        IXMLElementNotificationSink* This,
+        IDispatch *pChildElem);
+
+    END_INTERFACE
+} IXMLElementNotificationSinkVtbl;
+interface IXMLElementNotificationSink {
+    CONST_VTBL IXMLElementNotificationSinkVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IXMLElementNotificationSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IXMLElementNotificationSink_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IXMLElementNotificationSink_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IXMLElementNotificationSink_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IXMLElementNotificationSink_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IXMLElementNotificationSink_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IXMLElementNotificationSink_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IXMLElementNotificationSink methods ***/
+#define IXMLElementNotificationSink_ChildAdded(This,pChildElem) (This)->lpVtbl->ChildAdded(This,pChildElem)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IXMLElementNotificationSink_ChildAdded_Proxy(
+    IXMLElementNotificationSink* This,
+    IDispatch *pChildElem);
+void __RPC_STUB IXMLElementNotificationSink_ChildAdded_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IXMLElementNotificationSink_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * XMLDocument coclass
+ */
+
+DEFINE_GUID(CLSID_XMLDocument, 0xcfc399af, 0xd876, 0x11d0, 0x9c,0x10, 0x00,0xc0,0x4f,0xc9,0x9c,0x8e);
+
+#ifndef __XMLDocument_FWD_DEFINED__
+#define __XMLDocument_FWD_DEFINED__
+typedef struct XMLDocument XMLDocument;
+#endif /* defined __XMLDocument_FWD_DEFINED__ */
+
+/* Begin additional prototypes for all interfaces */
+
+ULONG           __RPC_USER VARIANT_UserSize     (ULONG *, ULONG, VARIANT *);
+unsigned char * __RPC_USER VARIANT_UserMarshal  (ULONG *, unsigned char *, VARIANT *);
+unsigned char * __RPC_USER VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *);
+void            __RPC_USER VARIANT_UserFree     (ULONG *, VARIANT *);
+ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
+unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
+unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
+void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WIDL_MSXML_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msxml.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msxml.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msxml.idl	(revision 16410)
@@ -0,0 +1,336 @@
+/*
+ * Copyright (C) 2005 Mike McCormack
+ * Copyright (C) 2005 Vijay Kiran Kamuju
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <msxmldid.h>
+
+#ifndef DO_NO_IMPORTS
+import "unknwn.idl";
+import "wtypes.idl";
+import "objidl.idl";
+import "oaidl.idl";
+#endif
+
+[
+local,
+object,
+odl,
+dual,
+oleautomation,
+uuid(65725580-9b5d-11d0-9bfe-00c04fc99c8e)
+]
+interface IXMLElementCollection : IDispatch
+{
+    [propput, id(DISPID_XMLELEMENTCOLLECTION_LENGTH)]
+    HRESULT length( [in] long v );
+
+    [propget, id(DISPID_XMLELEMENTCOLLECTION_LENGTH)]
+    HRESULT length( [retval, out] long *p );
+
+    [propget, id(DISPID_XMLELEMENTCOLLECTION_NEWENUM)]
+    HRESULT _newEnum( [retval, out] IUnknown ** ppUnk );
+
+    [id(DISPID_XMLELEMENTCOLLECTION_ITEM)]
+    HRESULT item(
+            [optional, in] VARIANT var1,
+            [optional, in] VARIANT var2,
+            [retval, out] IDispatch ** ppDisp );
+}
+
+[
+local,
+object,
+uuid(3f7f31ac-e15f-11d0-9c25-00c04fc99c8e)
+]
+interface IXMLElement : IDispatch
+{
+    [propget, id(DISPID_XMLELEMENT_TAGNAME)]
+    HRESULT tagName( [retval, out] BSTR *p);
+
+    [propput, id(DISPID_XMLELEMENT_TAGNAME)]
+    HRESULT tagName( [in] BSTR p );
+
+    [propget, id(DISPID_XMLELEMENT_PARENT)]
+    HRESULT parent( [retval, out] IXMLElement **parent );
+
+    [id(DISPID_XMLELEMENT_SETATTRIBUTE)]
+    HRESULT setAttribute(
+            [in] BSTR strPropertyName,
+            [in] VARIANT PropertyValue );
+
+    [id(DISPID_XMLELEMENT_GETATTRIBUTE)]
+    HRESULT getAttribute(
+            [in] BSTR strPropertyName,
+            [retval, out] VARIANT *PropertyValue );
+
+    [id(DISPID_XMLELEMENT_REMOVEATTRIBUTE)]
+    HRESULT removeAttribute(
+            [in] BSTR strPropertyName );
+
+    [propget, id(DISPID_XMLELEMENT_CHILDREN)]
+    HRESULT children( [retval, out] IXMLElementCollection **p );
+
+    [propget, id(DISPID_XMLELEMENT_TYPE)]
+    HRESULT type( [retval, out] long *p );
+
+    [propget, id(DISPID_XMLELEMENT_TEXT)]
+    HRESULT text( [retval, out] BSTR *p );
+
+    [propput, id(DISPID_XMLELEMENT_TEXT)]
+    HRESULT text( [in] BSTR p );
+
+    [id(DISPID_XMLELEMENT_ADDCHILD)]
+    HRESULT addChild(
+            [in] IXMLElement *pChildElem,
+            [in] long lIndex,
+            [in] long lreserved );
+
+    [id(DISPID_XMLELEMENT_REMOVECHILD)]
+    HRESULT removeChild(
+            [in] IXMLElement *pChildElem );
+}
+
+[
+local,
+object,
+uuid(f52e2b61-18a1-11d1-b105-00805f49916b)
+]
+interface IXMLDocument : IDispatch
+{
+    [propget, id(DISPID_XMLDOCUMENT_ROOT)]
+    HRESULT root( [retval, out] IXMLElement **p );
+
+    [propget, id(DISPID_XMLDOCUMENT_FILESIZE)]
+    HRESULT fileSize( [retval, out] BSTR *p );
+
+    [propget, id(DISPID_XMLDOCUMENT_FILEMODIFIEDDATE)]
+    HRESULT fileModifiedDate( [retval, out] BSTR *p );
+
+    [propget, id(DISPID_XMLDOCUMENT_FILEUPDATEDDATE)]
+    HRESULT fileUpdatedDate( [retval, out] BSTR *p );
+
+    [propget, id(DISPID_XMLDOCUMENT_URL)]
+    HRESULT URL( [retval, out] BSTR *p );
+
+    [propput, id(DISPID_XMLDOCUMENT_URL)]
+    HRESULT URL( [in] BSTR p );
+
+    [propget, id(DISPID_XMLDOCUMENT_MIMETYPE)]
+    HRESULT mimeType( [retval, out] BSTR *p );
+
+    [propget, id(DISPID_XMLDOCUMENT_READYSTATE)]
+    HRESULT readyState( [retval, out] long *p );
+
+    [propget, id(DISPID_XMLDOCUMENT_CHARSET)]
+    HRESULT charset( [retval, out] BSTR *p );
+
+    [propput, id(DISPID_XMLDOCUMENT_CHARSET)]
+    HRESULT charset( [in] BSTR p );
+
+    [propget, id(DISPID_XMLDOCUMENT_VERSION)]
+    HRESULT version( [retval, out] BSTR *p );
+
+    [propget, id(DISPID_XMLDOCUMENT_DOCTYPE)]
+    HRESULT doctype( [retval, out] BSTR *p );
+
+    [propget, id(DISPID_XMLDOCUMENT_DTDURL)]
+    HRESULT dtdURl( [retval, out] BSTR *p );
+
+    [id(DISPID_XMLDOCUMENT_CREATEELEMENT)]
+    HRESULT createElement(
+            [in] VARIANT vType,
+            [optional, in] VARIANT var1,
+            [retval, out] IXMLElement **ppElem );
+}
+
+[
+local,
+object,
+uuid(2B8DE2FF-8D2D-11d1-B2FC-00C04FD915A9)
+]
+interface IXMLElement2 : IDispatch
+{
+    [propget, id(DISPID_XMLELEMENT_TAGNAME)]
+    HRESULT tagName([retval, out] BSTR *p);
+
+    [propput, id(DISPID_XMLELEMENT_TAGNAME)]
+    HRESULT tagName([in] BSTR p);
+
+    [propget, id(DISPID_XMLELEMENT_PARENT)]
+    HRESULT parent([retval, out]IXMLElement2 **ppParent);
+
+    [id(DISPID_XMLELEMENT_SETATTRIBUTE)]
+    HRESULT setAttribute(
+        [in] BSTR strPropertyName,
+        [in] VARIANT PropertyValue);
+
+    [id(DISPID_XMLELEMENT_GETATTRIBUTE)]
+    HRESULT getAttribute(
+        [in] BSTR strPropertyName,
+        [retval, out] VARIANT *PropertyValue);
+
+    [id(DISPID_XMLELEMENT_REMOVEATTRIBUTE)]
+    HRESULT removeAttribute([in] BSTR strPropertyName);
+
+    [propget, id(DISPID_XMLELEMENT_CHILDREN)]
+    HRESULT children([retval, out] IXMLElementCollection **pp);
+
+    [propget, id(DISPID_XMLELEMENT_TYPE)]
+    HRESULT type([retval, out] long *plType);
+
+    [propget, id(DISPID_XMLELEMENT_TEXT)]
+    HRESULT text([retval, out] BSTR *p);
+
+    [propput, id(DISPID_XMLELEMENT_TEXT)]
+    HRESULT text([in] BSTR p);
+
+    [id(DISPID_XMLELEMENT_ADDCHILD)]
+    HRESULT addChild(
+        [in] IXMLElement2 *pChildElem,
+        [in] long lIndex,
+        [in] long lReserved);
+
+    [id(DISPID_XMLELEMENT_REMOVECHILD)]
+    HRESULT removeChild([in]IXMLElement2 *pChildElem);
+
+    [propget, id(DISPID_XMLELEMENT_ATTRIBUTES)]
+    HRESULT attributes([retval, out] IXMLElementCollection **pp); 
+}
+
+[
+local,
+object,
+uuid(2B8DE2FE-8D2D-11d1-B2FC-00C04FD915A9)
+]
+interface IXMLDocument2 : IDispatch
+{
+    [propget, id(DISPID_XMLDOCUMENT_ROOT)]
+    HRESULT root([retval, out] IXMLElement2 **p);
+
+    [propget, id(DISPID_XMLDOCUMENT_FILESIZE)]
+    HRESULT fileSize([retval, out] BSTR *p);
+
+    [propget, id(DISPID_XMLDOCUMENT_FILEMODIFIEDDATE)]
+    HRESULT fileModifiedDate([retval, out] BSTR *p);
+
+    [propget, id(DISPID_XMLDOCUMENT_FILEUPDATEDDATE)]
+    HRESULT fileUpdatedDate([retval, out] BSTR *p);
+
+    [propget, id(DISPID_XMLDOCUMENT_URL)]
+    HRESULT URL([retval, out] BSTR *p);
+
+    [propput, id(DISPID_XMLDOCUMENT_URL)]
+    HRESULT URL([in] BSTR p);
+
+    [propget, id(DISPID_XMLDOCUMENT_MIMETYPE)]
+    HRESULT mimeType([retval, out] BSTR *p);
+   
+    [propget, id(DISPID_XMLDOCUMENT_READYSTATE)]
+    HRESULT readyState([retval, out]long *pl);
+
+    [propget, id(DISPID_XMLDOCUMENT_CHARSET)]
+    HRESULT charset([retval, out]BSTR *p);
+
+    [propput, id(DISPID_XMLDOCUMENT_CHARSET)]
+    HRESULT charset([in]BSTR p);
+
+    [propget, id(DISPID_XMLDOCUMENT_VERSION)]
+    HRESULT version([retval, out]BSTR *p);
+
+    [propget, id(DISPID_XMLDOCUMENT_DOCTYPE)]
+    HRESULT doctype([retval, out]BSTR *p);
+
+    [propget, restricted, id(DISPID_XMLDOCUMENT_DTDURL)]
+    HRESULT dtdURL([retval, out]BSTR *p);
+
+    [id(DISPID_XMLDOCUMENT_CREATEELEMENT)]
+    HRESULT createElement(
+        [in] VARIANT vType, 
+        [optional, in] VARIANT var, 
+        [retval, out] IXMLElement2 **ppElem);
+
+    [propget, id(DISPID_XMLDOCUMENT_ASYNC)]
+    HRESULT async([retval, out] VARIANT_BOOL *pf);
+
+    [propput, id(DISPID_XMLDOCUMENT_ASYNC)]
+    HRESULT async([in] VARIANT_BOOL f);
+}
+
+typedef enum tagXMLEMEM_TYPE {
+	XMLELEMTYPE_ELEMENT	= 0,
+	XMLELEMTYPE_TEXT 	= 1,
+	XMLELEMTYPE_COMMENT	= 2,
+	XMLELEMTYPE_DOCUMENT	= 3,
+	XMLELEMTYPE_DTD		= 4,
+	XMLELEMTYPE_PI		= 5,
+	XMLELEMTYPE_OTHER	= 6
+} XMLELEM_TYPE;
+
+typedef struct _xml_error {
+	UINT _nLine;
+	BSTR _pchBuf;
+	BSTR _cchBuf;
+	UINT _ich;
+	BSTR _pszFound;
+	BSTR _pszExpected;
+	DWORD _reserved1;
+	DWORD _reserved2;
+} XML_ERROR;
+
+[
+local,
+object,
+uuid(d4d4a0fc-3b73-11d1-b2b4-00c04fb92596)
+]
+interface IXMLAttribute : IDispatch
+{
+    [propget, id(DISPID_XMLATTRIBUTE_NAME)]
+    HRESULT name( [retval, out] BSTR *p );
+
+    [propget, id(DISPID_XMLATTRIBUTE_VALUE)]
+    HRESULT value( [retval, out] BSTR *p );
+}
+
+[
+local,
+object,
+uuid(948c5ad3-c58d-11d0-9c0b-00c04fc99c8e)
+]
+interface IXMLError : IUnknown
+{
+    HRESULT GetErrorInfo([out]XML_ERROR *pErrorReturn);
+}
+
+[
+    object,
+    local,
+    uuid(D9F1E15A-CCDB-11d0-9C0C-00C04FC99C8E)
+]
+interface IXMLElementNotificationSink : IDispatch
+{
+    [id(DISPID_XMLNOTIFSINK_CHILDADDED)] 
+    HRESULT ChildAdded([in]IDispatch *pChildElem); 
+}
+
+[
+uuid(cfc399af-d876-11d0-9c10-00c04fc99c8e)
+]
+coclass XMLDocument
+{
+    [default] interface IXMLDocument;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msxml2.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msxml2.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msxml2.idl	(revision 16410)
@@ -0,0 +1,2035 @@
+/*
+ * Copyright (C) 2005 Vijay Kiran Kamuju
+ * Copyright (C) 2008 Alistair Leslie-Hughes
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <msxml2did.h>
+#include <olectl.h>
+
+import "unknwn.idl";
+import "objidl.idl";
+import "oaidl.idl";
+
+[
+    uuid(f5078f18-c551-11d3-89b9-0000f81fe221),
+    version(3.0),
+    helpstring("Microsoft XML, v3.0")
+]
+library MSXML2
+{
+
+importlib("stdole2.tlb");
+
+interface IXMLDOMImplementation;
+interface IXMLDOMNode;
+interface IXMLDOMDocumentFragment;
+interface IXMLDOMDocument;
+interface IXMLDOMSchemaCollection;
+interface IXMLDOMDocument2;
+interface IXMLDOMNodeList;
+interface IXMLDOMNamedNodeMap;
+interface IXMLDOMCharacterData;
+interface IXMLDOMAttribute;
+interface IXMLDOMElement;
+interface IXMLDOMText;
+interface IXMLDOMComment;
+interface IXMLDOMProcessingInstruction;
+interface IXMLDOMCDATASection;
+interface IXMLDOMDocumentType;
+interface IXMLDOMNotation;
+interface IXMLDOMEntity;
+interface IXMLDOMEntityReference;
+interface IXMLDOMParseError;
+interface IXTLRuntime;
+interface IXSLTemplate;
+interface IXSLProcessor;
+
+/* SAX Interfaces */
+interface ISAXAttributes;
+interface ISAXContentHandler;
+interface ISAXDeclHandler;
+interface ISAXDTDHandler;
+interface ISAXEntityResolver;
+interface ISAXErrorHandler;
+interface ISAXLexicalHandler;
+interface ISAXLocator;
+interface ISAXXMLFilter;
+interface ISAXXMLReader;
+
+interface IVBSAXAttributes;
+interface IVBSAXContentHandler;
+interface IVBSAXDeclHandler;
+interface IVBSAXDTDHandler;
+interface IVBSAXEntityResolver;
+interface IVBSAXErrorHandler;
+interface IVBSAXLexicalHandler;
+interface IVBSAXLocator;
+interface IVBSAXXMLFilter;
+interface IVBSAXXMLReader;
+
+interface IMXAttributes;
+interface IMXReaderControl;
+interface IMXWriter;
+
+
+cpp_quote("#define DOMDocument DOMDocument2")
+cpp_quote("#define CLSID_DOMDocument CLSID_DOMDocument2")
+
+cpp_quote("#ifndef __WIDL_XMLDOM_H")
+typedef enum tagDOMNodeType 
+{  
+    NODE_INVALID  		= 0,
+    NODE_ELEMENT  		= 1,
+    NODE_ATTRIBUTE		= 2,
+    NODE_TEXT			= 3,
+    NODE_CDATA_SECTION		= 4,
+    NODE_ENTITY_REFERENCE 	= 5,
+    NODE_ENTITY 		= 6,
+    NODE_PROCESSING_INSTRUCTION = 7,
+    NODE_COMMENT		= 8,
+    NODE_DOCUMENT		= 9,
+    NODE_DOCUMENT_TYPE		= 10,
+    NODE_DOCUMENT_FRAGMENT 	= 11,
+    NODE_NOTATION 		= 12
+} DOMNodeType;
+cpp_quote("#endif   /* __WIDL_XMLDOM_H */")
+
+[
+local,
+object,
+uuid (2933BF80-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMNode : IDispatch
+{
+    [propget, id(DISPID_DOM_NODE_NODENAME)]
+    HRESULT nodeName([retval, out] BSTR *p);
+
+    [propget, id(DISPID_DOM_NODE_NODEVALUE)]
+    HRESULT nodeValue([retval, out] VARIANT *var1);
+
+    [propput, id(DISPID_DOM_NODE_NODEVALUE)]
+    HRESULT nodeValue([in] VARIANT var1);
+
+    [propget, id(DISPID_DOM_NODE_NODETYPE)]
+    HRESULT nodeType([retval, out] DOMNodeType *domNodeType);
+
+    [propget, id(DISPID_DOM_NODE_PARENTNODE)]
+    HRESULT parentNode([retval, out] IXMLDOMNode **parent);
+
+    [propget, id(DISPID_DOM_NODE_CHILDNODES)]
+    HRESULT childNodes([retval, out] IXMLDOMNodeList **outList);
+
+    [propget, id(DISPID_DOM_NODE_FIRSTCHILD)]
+    HRESULT firstChild([retval, out] IXMLDOMNode **domNode);
+
+    [propget, id(DISPID_DOM_NODE_LASTCHILD)]
+    HRESULT lastChild([retval, out] IXMLDOMNode **domNode);
+
+    [propget, id(DISPID_DOM_NODE_PREVIOUSSIBLING)]
+    HRESULT previousSibling([retval, out] IXMLDOMNode **domNode);
+
+    [propget, id(DISPID_DOM_NODE_NEXTSIBLING)]
+    HRESULT nextSibling([retval, out] IXMLDOMNode **domNode);
+
+    [propget, id(DISPID_DOM_NODE_ATTRIBUTES)]
+    HRESULT attributes([retval, out] IXMLDOMNamedNodeMap **attributeMap);
+
+    [id(DISPID_DOM_NODE_INSERTBEFORE)]
+    HRESULT insertBefore(
+        [in] IXMLDOMNode *newNode,
+        [in] VARIANT var1,
+        [retval, out] IXMLDOMNode **outOldNode);
+
+    [id(DISPID_DOM_NODE_REPLACECHILD)]
+    HRESULT replaceChild(
+        [in] IXMLDOMNode *newNode,
+        [in] IXMLDOMNode *oldNode,
+        [retval, out] IXMLDOMNode **outOldNode);
+
+    [id(DISPID_DOM_NODE_REMOVECHILD)]
+    HRESULT removeChild(
+        [in] IXMLDOMNode *domNode,
+        [retval, out] IXMLDOMNode **oldNode);
+
+    [id(DISPID_DOM_NODE_APPENDCHILD)]
+    HRESULT appendChild(
+        [in] IXMLDOMNode *newNode,
+        [retval, out] IXMLDOMNode **outNewNode);
+
+    [id(DISPID_DOM_NODE_HASCHILDNODES)]
+    HRESULT hasChildNodes(
+        [retval, out] VARIANT_BOOL *pbool);
+
+    [propget, id(DISPID_DOM_NODE_OWNERDOC)]
+    HRESULT ownerDocument([retval, out] IXMLDOMDocument **domDocument);
+
+    [id(DISPID_DOM_NODE_CLONENODE)]
+    HRESULT cloneNode(
+        [in] VARIANT_BOOL pbool,
+        [retval, out] IXMLDOMNode **outNode);
+
+    [propget, id(DISPID_XMLDOM_NODE_STRINGTYPE)]
+    HRESULT nodeTypeString([retval, out] BSTR *p);
+
+    [propget, id(DISPID_XMLDOM_NODE_TEXT)]
+    HRESULT text([retval, out] BSTR *p);
+
+    [propput, id(DISPID_XMLDOM_NODE_TEXT)]
+    HRESULT text([in] BSTR p);
+
+    [propget, id(DISPID_XMLDOM_NODE_SPECIFIED)]
+    HRESULT specified([retval, out] VARIANT_BOOL *pbool);
+
+    [propget, id(DISPID_XMLDOM_NODE_DEFINITION)]
+    HRESULT definition([retval,out] IXMLDOMNode **domNode);
+
+    [propget, id(DISPID_XMLDOM_NODE_NODETYPEDVALUE)]
+    HRESULT nodeTypedValue([retval, out] VARIANT *var1);
+
+    [propput, id(DISPID_XMLDOM_NODE_NODETYPEDVALUE)]
+    HRESULT nodeTypedValue([in] VARIANT var1);
+
+    [propget, id(DISPID_XMLDOM_NODE_DATATYPE)]
+    HRESULT dataType([retval, out] VARIANT *var1);
+
+    [propput, id(DISPID_XMLDOM_NODE_DATATYPE)]
+    HRESULT dataType([in] BSTR p);
+
+    [propget, id(DISPID_XMLDOM_NODE_XML)]
+    HRESULT xml([retval, out] BSTR *p);
+
+    [id(DISPID_XMLDOM_NODE_TRANSFORMNODE)]
+    HRESULT transformNode(
+        [in] IXMLDOMNode *domNode,
+        [retval, out] BSTR *p);
+
+    [id(DISPID_XMLDOM_NODE_SELECTNODES)]
+    HRESULT selectNodes(
+        [in] BSTR p,
+        [retval, out] IXMLDOMNodeList **outList);
+
+    [id(DISPID_XMLDOM_NODE_SELECTSINGLENODE)]
+    HRESULT selectSingleNode(
+        [in] BSTR p,
+        [retval, out] IXMLDOMNode **outNode);
+
+    [propget,id(DISPID_XMLDOM_NODE_PARSED)]
+    HRESULT parsed([retval, out] VARIANT_BOOL *pbool);
+
+    [propget, id(DISPID_XMLDOM_NODE_NAMESPACE)]
+    HRESULT namespaceURI([retval, out] BSTR *p);
+
+    [propget, id(DISPID_XMLDOM_NODE_PREFIX)]
+    HRESULT prefix([retval, out] BSTR *p);
+
+    [propget, id(DISPID_XMLDOM_NODE_BASENAME)]
+    HRESULT baseName([retval, out] BSTR *p);
+
+    [id(DISPID_XMLDOM_NODE_TRANSFORMNODETOOBJECT)]
+    HRESULT transformNodeToObject(
+        [in] IXMLDOMNode *domNode,
+        [in] VARIANT var1);
+}
+
+[
+local,
+object,
+uuid (2933BF81-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMDocument : IXMLDOMNode
+{
+    [propget, id(DISPID_DOM_DOCUMENT_DOCTYPE)]
+    HRESULT doctype([retval, out] IXMLDOMDocumentType **docType);
+
+    [propget, id(DISPID_DOM_DOCUMENT_IMPLEMENTATION)]
+    HRESULT implementation([retval, out] IXMLDOMImplementation **impl);
+
+    [propget, id(DISPID_DOM_DOCUMENT_DOCUMENTELEMENT)]
+    HRESULT documentElement([retval, out] IXMLDOMElement **domElement);
+
+    [propputref, id(DISPID_DOM_DOCUMENT_DOCUMENTELEMENT)]
+    HRESULT documentElement([in] IXMLDOMElement *domElement);
+
+    [id(DISPID_DOM_DOCUMENT_CREATEELEMENT)]
+    HRESULT createElement(
+        [in] BSTR p,
+        [retval, out] IXMLDOMElement **domElement);
+
+    [id(DISPID_DOM_DOCUMENT_CREATEDOCUMENTFRAGMENT)]
+    HRESULT createDocumentFragment(
+        [retval, out] IXMLDOMDocumentFragment **docFrag);
+
+    [id(DISPID_DOM_DOCUMENT_CREATETEXTNODE)]
+    HRESULT createTextNode(
+        [in] BSTR p,
+        [retval, out] IXMLDOMText **text);
+
+    [id(DISPID_DOM_DOCUMENT_CREATECOMMENT)]
+    HRESULT createComment(
+        [in] BSTR p,
+        [retval, out] IXMLDOMComment **comment);
+
+    [id(DISPID_DOM_DOCUMENT_CREATECDATASECTION)]
+    HRESULT createCDATASection(
+        [in] BSTR p,
+        [retval, out] IXMLDOMCDATASection **cdata);
+
+    [id(DISPID_DOM_DOCUMENT_CREATEPROCESSINGINSTRUCTION)]
+    HRESULT createProcessingInstruction(
+        [in] BSTR target,
+        [in] BSTR data,
+        [retval, out] IXMLDOMProcessingInstruction **pi);
+
+    [id(DISPID_DOM_DOCUMENT_CREATEATTRIBUTE)]
+    HRESULT createAttribute(
+        [in] BSTR p,
+        [retval, out] IXMLDOMAttribute **attribute);
+
+    [id(DISPID_DOM_DOCUMENT_CREATEENTITYREFERENCE)]
+    HRESULT createEntityReference(
+        [in] BSTR p,
+        [retval, out] IXMLDOMEntityReference **entityRef);
+
+    [id(DISPID_DOM_DOCUMENT_GETELEMENTSBYTAGNAME)]
+    HRESULT getElementsByTagName(
+        [in] BSTR p,
+        [retval, out] IXMLDOMNodeList **resultList);
+
+    [id(DISPID_XMLDOM_DOCUMENT_CREATENODE)]
+    HRESULT createNode(
+        [in] VARIANT var, 
+        [in] BSTR name, 
+        [in] BSTR uri,
+        [retval, out] IXMLDOMNode **node);
+
+    [id(DISPID_XMLDOM_DOCUMENT_NODEFROMID)]
+    HRESULT nodeFromID( 
+        [in] BSTR id,
+        [retval, out] IXMLDOMNode **node);
+
+    [id(DISPID_XMLDOM_DOCUMENT_LOAD)]
+    HRESULT load(
+        [in] VARIANT var1,
+        [retval, out] VARIANT_BOOL *pbool);
+
+    [propget, id(DISPID_READYSTATE)]
+    HRESULT readyState([retval, out] long *value);
+
+    [propget, id(DISPID_XMLDOM_DOCUMENT_PARSEERROR)]
+    HRESULT parseError([retval, out] IXMLDOMParseError **err);
+
+    [propget, id(DISPID_XMLDOM_DOCUMENT_URL)]
+    HRESULT url([retval, out] BSTR *p);
+
+    [propget, id(DISPID_XMLDOM_DOCUMENT_ASYNC)]
+    HRESULT async([retval, out] VARIANT_BOOL *pbool);
+
+    [propput, id(DISPID_XMLDOM_DOCUMENT_ASYNC)]
+    HRESULT async([in] VARIANT_BOOL pbool);
+
+    [id(DISPID_XMLDOM_DOCUMENT_ABORT)]
+    HRESULT abort();
+
+    [id(DISPID_XMLDOM_DOCUMENT_LOADXML)]
+    HRESULT loadXML( 
+        [in] BSTR p,
+        [out, retval] VARIANT_BOOL *pbool);
+
+    [id(DISPID_XMLDOM_DOCUMENT_SAVE)]
+    HRESULT save( 
+        [in] VARIANT var1);
+
+    [propget, id(DISPID_XMLDOM_DOCUMENT_VALIDATE)]
+    HRESULT validateOnParse([retval, out] VARIANT_BOOL *pbool);
+
+    [propput, id(DISPID_XMLDOM_DOCUMENT_VALIDATE)]
+    HRESULT validateOnParse([in] VARIANT_BOOL pbool);
+
+    [propget, id(DISPID_XMLDOM_DOCUMENT_RESOLVENAMESPACE)]
+    HRESULT resolveExternals([retval,out] VARIANT_BOOL *pbool);
+
+    [propput, id(DISPID_XMLDOM_DOCUMENT_RESOLVENAMESPACE)]
+    HRESULT resolveExternals([in] VARIANT_BOOL pbool);
+
+    [propget, id(DISPID_XMLDOM_DOCUMENT_PRESERVEWHITESPACE)]
+    HRESULT preserveWhiteSpace([retval,out] VARIANT_BOOL *pbool);
+
+    [propput, id(DISPID_XMLDOM_DOCUMENT_PRESERVEWHITESPACE)]
+    HRESULT preserveWhiteSpace([in] VARIANT_BOOL pbool);
+
+    [propput, id(DISPID_XMLDOM_DOCUMENT_ONREADYSTATECHANGE)]
+    HRESULT onreadystatechange([in] VARIANT var1);
+
+    [propput, id(DISPID_XMLDOM_DOCUMENT_ONDATAAVAILABLE)]
+    HRESULT ondataavailable([in] VARIANT var1);
+
+    [propput, id(DISPID_XMLDOM_DOCUMENT_ONTRANSFORMNODE)]
+    HRESULT ontransformnode([in] VARIANT var1);
+}
+
+[
+local,
+object,
+uuid (373984c8-b845-449b-91e7-45ac83036ade)
+]
+interface IXMLDOMSchemaCollection : IDispatch
+{
+    [id(DISPID_XMLDOM_SCHEMACOLLECTION_ADD)]
+    HRESULT add(
+        [in] BSTR uri,
+        [in] VARIANT var);
+
+    [id(DISPID_XMLDOM_SCHEMACOLLECTION_GET)]
+    HRESULT get(
+        [in] BSTR uri,
+        [retval, out] IXMLDOMNode **node);
+
+    [id(DISPID_XMLDOM_SCHEMACOLLECTION_REMOVE)]
+    HRESULT remove(
+        [in] BSTR uri);
+
+    [propget, id(DISPID_XMLDOM_SCHEMACOLLECTION_LENGTH)]
+    HRESULT length(
+        [retval, out] long *length);
+
+    [propget, id(DISPID_VALUE)]
+    HRESULT namespaceURI([in] long index, [out, retval] BSTR *len);
+
+    [id(DISPID_XMLDOM_SCHEMACOLLECTION_ADDCOLLECTION)]
+    HRESULT addCollection(
+        [in] IXMLDOMSchemaCollection *otherCollection);
+
+    [propget, id(DISPID_NEWENUM)]
+    HRESULT _newEnum([retval, out] IUnknown **ppUnk);
+}
+
+[
+local,
+object,
+uuid (2933BF95-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMDocument2 : IXMLDOMDocument
+{
+    [propget, id(DISPID_XMLDOM_DOCUMENT2_NAMESPACES)]
+    HRESULT namespaces([retval, out] IXMLDOMSchemaCollection **schemaCollection);
+
+    [propget, id(DISPID_XMLDOM_DOCUMENT2_SCHEMAS)]
+    HRESULT schemas([retval, out] VARIANT *var1);
+
+    [propputref, id(DISPID_XMLDOM_DOCUMENT2_SCHEMAS)]
+    HRESULT schemas([in] VARIANT var1);
+
+    [id(DISPID_XMLDOM_DOCUMENT2_VALIDATE)]
+    HRESULT validate(
+        [retval, out] IXMLDOMParseError **err);
+
+    [id(DISPID_XMLDOM_DOCUMENT2_SETPROPERTY)]
+    HRESULT setProperty(
+        [in] BSTR p,
+        [in] VARIANT var);
+
+    [id(DISPID_XMLDOM_DOCUMENT2_GETPROPERTY)]
+    HRESULT getProperty(
+        [in] BSTR p,
+        [retval, out] VARIANT *var);
+}
+
+[
+local,
+object,
+uuid (2933BF82-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMNodeList : IDispatch
+{
+    [propget, id(DISPID_VALUE)]
+    HRESULT item([in] long lIndex, [retval, out] IXMLDOMNode **outNode);
+
+    [propget, id(DISPID_DOM_NODELIST_LENGTH)]
+    HRESULT length([retval, out] long *lLength);
+
+    [id(DISPID_XMLDOM_NODELIST_NEXTNODE)]
+    HRESULT nextNode(
+        [retval, out] IXMLDOMNode **outNode);
+
+    [id(DISPID_XMLDOM_NODELIST_RESET)]
+    HRESULT reset();
+
+    [propget, id(DISPID_NEWENUM)]
+    HRESULT _newEnum([retval, out] IUnknown **ppUnk);
+}
+
+[
+local,
+object,
+uuid (AA634FC7-5888-44a7-A257-3A47150D3A0E)
+]
+interface IXMLDOMSelection : IXMLDOMNodeList
+{
+    [propget, id(DISPID_XMLDOM_SELECTION_EXPR)]
+    HRESULT expr([retval, out] BSTR *p);
+
+    [propput, id(DISPID_XMLDOM_SELECTION_EXPR)]
+    HRESULT expr([in] BSTR p);
+
+    [propget, id(DISPID_XMLDOM_SELECTION_CONTEXT)]
+    HRESULT context([retval, out] IXMLDOMNode **ppNode);
+
+    [propputref, id(DISPID_XMLDOM_SELECTION_CONTEXT)]
+    HRESULT context([in] IXMLDOMNode * pNode);
+
+    [id(DISPID_XMLDOM_SELECTION_PEEKNODE)]
+    HRESULT peekNode(
+        [retval, out] IXMLDOMNode **ppNode);
+
+    [id(DISPID_XMLDOM_SELECTION_MATCHES)]
+    HRESULT matches(
+        [in] IXMLDOMNode *pNode,
+        [retval, out] IXMLDOMNode **ppNode);
+
+    [id(DISPID_XMLDOM_SELECTION_REMOVENEXT)] 
+    HRESULT removeNext(
+        [retval, out] IXMLDOMNode **ppNode);
+
+    [id(DISPID_XMLDOM_SELECTION_REMOVEALL)]
+    HRESULT removeAll();
+
+    [id(DISPID_XMLDOM_SELECTION_CLONE)]
+    HRESULT clone(
+        [retval, out] IXMLDOMSelection **ppNode);
+
+    [id(DISPID_XMLDOM_SELECTION_GETPROPERTY)]
+    HRESULT getProperty(
+        [in] BSTR p,
+        [retval, out] VARIANT * var);
+
+    [id(DISPID_XMLDOM_SELECTION_SETPROPERTY)]
+    HRESULT setProperty(
+        [in] BSTR p,
+        [in] VARIANT var);
+}
+
+[
+local,
+object,
+uuid (2933BF83-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMNamedNodeMap : IDispatch
+{
+    [id(DISPID_DOM_NAMEDNODEMAP_GETNAMEDITEM)]
+    HRESULT getNamedItem(
+        [in] BSTR p,
+        [retval, out] IXMLDOMNode **outNode);
+
+    [id(DISPID_DOM_NAMEDNODEMAP_SETNAMEDITEM)]
+    HRESULT setNamedItem(
+        [in] IXMLDOMNode *newNode,
+        [retval, out] IXMLDOMNode **outNode);
+
+    [id(DISPID_DOM_NAMEDNODEMAP_REMOVENAMEDITEM)]
+    HRESULT removeNamedItem(
+        [in] BSTR p,
+        [retval, out] IXMLDOMNode **outNode);
+
+    [propget, id(DISPID_VALUE)]
+    HRESULT item([in] long lIndex, [retval, out] IXMLDOMNode **outNode);
+
+    [propget, id(DISPID_DOM_NODELIST_LENGTH)]
+    HRESULT length([retval, out] long *lLength);
+
+    [id(DISPID_XMLDOM_NAMEDNODEMAP_GETQUALIFIEDITEM)]
+    HRESULT getQualifiedItem(
+        [in] BSTR name,
+        [in] BSTR uri,
+        [retval, out] IXMLDOMNode **outNode);
+
+    [id(DISPID_XMLDOM_NAMEDNODEMAP_REMOVEQUALIFIEDITEM)]
+    HRESULT removeQualifiedItem(
+        [in] BSTR name,
+        [in] BSTR uri,
+        [retval, out] IXMLDOMNode **outNode);
+
+    [id(DISPID_XMLDOM_NAMEDNODEMAP_NEXTNODE)]
+    HRESULT nextNode(
+        [retval, out] IXMLDOMNode **outNode);
+
+    [id(DISPID_XMLDOM_NAMEDNODEMAP_RESET)]
+    HRESULT reset();
+
+    [propget, id(DISPID_NEWENUM)]
+    HRESULT _newEnum([retval, out] IUnknown **ppUnk);
+}
+ 
+[
+local,
+object,
+uuid (3efaa413-272f-11d2-836f-0000f87a7782)
+]
+interface IXMLDOMDocumentFragment : IXMLDOMNode 
+{
+}
+
+[
+local,
+object,
+uuid (2933BF84-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMCharacterData : IXMLDOMNode 
+{
+    [propget, id(DISPID_DOM_DATA_DATA)]
+    HRESULT data([retval, out] BSTR *p);
+
+    [propput, id(DISPID_DOM_DATA_DATA)]
+    HRESULT data([in] BSTR data);
+
+    [propget, id(DISPID_DOM_DATA_LENGTH)]
+    HRESULT length([retval, out] long *len);
+
+    [id(DISPID_DOM_DATA_SUBSTRING)]
+    HRESULT substringData(
+        [in] long offset,
+        [in] long count,
+        [retval, out] BSTR *p);
+
+    [id(DISPID_DOM_DATA_APPEND)]
+    HRESULT appendData(
+        [in] BSTR p);
+
+    [id(DISPID_DOM_DATA_INSERT)]
+    HRESULT insertData(
+        [in] long offset,
+        [in] BSTR p);
+
+    [id(DISPID_DOM_DATA_DELETE)]
+    HRESULT deleteData(
+        [in] long offset,
+        [in] long count);
+
+    [id(DISPID_DOM_DATA_REPLACE)]
+    HRESULT replaceData(
+        [in] long offset,
+        [in] long count,
+        [in] BSTR p);
+}
+
+[
+local,
+object,
+uuid (2933BF85-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMAttribute : IXMLDOMNode 
+{
+    [propget, id(DISPID_DOM_ATTRIBUTE_GETNAME)]
+    HRESULT name([retval, out] BSTR *p);
+
+    [propget, id(DISPID_DOM_ATTRIBUTE_VALUE)]
+    HRESULT value([retval, out] VARIANT *var1);
+
+    [propput, id(DISPID_DOM_ATTRIBUTE_VALUE)]
+    HRESULT value([in] VARIANT var1);
+}
+
+[
+local,
+object,
+uuid (2933BF86-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMElement : IXMLDOMNode 
+{
+    [propget, id(DISPID_DOM_ELEMENT_GETTAGNAME)]
+    HRESULT tagName([retval, out] BSTR *p);
+
+    [id(DISPID_DOM_ELEMENT_GETATTRIBUTE)]
+    HRESULT getAttribute(
+        [in] BSTR p,
+        [retval, out] VARIANT *var);
+
+    [id(DISPID_DOM_ELEMENT_SETATTRIBUTE)]
+    HRESULT setAttribute(
+        [in] BSTR p,
+        [in] VARIANT var);
+
+    [id(DISPID_DOM_ELEMENT_REMOVEATTRIBUTE)]
+    HRESULT removeAttribute(
+        [in] BSTR p);
+
+    [id(DISPID_DOM_ELEMENT_GETATTRIBUTENODE)]
+    HRESULT getAttributeNode(
+        [in] BSTR p,
+        [retval, out] IXMLDOMAttribute **attributeNode);
+
+    [id(DISPID_DOM_ELEMENT_SETATTRIBUTENODE)]
+    HRESULT setAttributeNode(
+        [in] IXMLDOMAttribute *domAttribute,
+        [retval, out] IXMLDOMAttribute **attributeNode);
+
+    [id(DISPID_DOM_ELEMENT_REMOVEATTRIBUTENODE)]
+    HRESULT removeAttributeNode(
+        [in] IXMLDOMAttribute *domAttribute,
+        [retval, out] IXMLDOMAttribute **attributeNode);
+
+    [id(DISPID_DOM_ELEMENT_GETELEMENTSBYTAGNAME)]
+    HRESULT getElementsByTagName(
+        [in] BSTR p,
+        [retval, out] IXMLDOMNodeList **resultList);
+
+    [id(DISPID_DOM_ELEMENT_NORMALIZE)]
+    HRESULT normalize();
+}
+
+[
+local,
+object,
+uuid (2933BF87-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMText : IXMLDOMCharacterData 
+{
+    [id(DISPID_DOM_TEXT_SPLITTEXT)]
+    HRESULT splitText(
+        [in] long offset,
+        [retval, out] IXMLDOMText **txtNode);
+}
+
+[
+local,
+object,
+uuid (2933BF88-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMComment : IXMLDOMCharacterData 
+{
+}
+
+[
+local,
+object,
+uuid (2933BF89-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMProcessingInstruction : IXMLDOMNode 
+{
+    [propget, id(DISPID_DOM_PI_TARGET)]
+    HRESULT target([retval, out] BSTR *p);
+
+    [propget, id(DISPID_DOM_PI_DATA)]
+    HRESULT data([retval, out] BSTR *p);
+
+    [propput, id(DISPID_DOM_PI_DATA)]
+    HRESULT data([in] BSTR p);
+}
+
+[
+local,
+object,
+uuid (2933BF8A-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMCDATASection : IXMLDOMText 
+{
+}
+
+[
+local,
+object,
+uuid (2933BF8B-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMDocumentType : IXMLDOMNode 
+{
+    [propget, id(DISPID_DOM_DOCUMENTTYPE_NAME)]
+    HRESULT name([retval, out] BSTR *p);
+
+    [propget, id(DISPID_DOM_DOCUMENTTYPE_ENTITIES)]
+    HRESULT entities([retval, out] IXMLDOMNamedNodeMap **entityMap);
+
+    [propget, id(DISPID_DOM_DOCUMENTTYPE_NOTATIONS)]
+    HRESULT notations([retval, out] IXMLDOMNamedNodeMap **notationMap);
+}
+
+[
+local,
+object,
+uuid (2933BF8C-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMNotation : IXMLDOMNode 
+{
+    [propget, id(DISPID_DOM_NOTATION_PUBLICID)]
+    HRESULT publicId([retval, out] VARIANT *id);
+
+    [propget, id(DISPID_DOM_NOTATION_SYSTEMID)]
+    HRESULT systemId([retval, out] VARIANT *id);
+}
+
+[
+local,
+object,
+uuid (2933BF8D-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMEntity : IXMLDOMNode 
+{
+    [propget, id(DISPID_DOM_ENTITY_PUBLICID)]
+    HRESULT publicId([retval, out] VARIANT *id1);
+
+    [propget, id(DISPID_DOM_ENTITY_SYSTEMID)]
+    HRESULT systemId([retval, out] VARIANT *id1);
+
+    [propget, id(DISPID_DOM_ENTITY_NOTATIONNAME)]
+    HRESULT notationName([retval, out] BSTR *p);
+}
+
+[
+local,
+object,
+uuid (2933BF8E-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMEntityReference : IXMLDOMNode 
+{
+}
+
+[
+local,
+object,
+uuid (2933BF8F-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMImplementation : IDispatch
+{
+    [id(DISPID_DOM_IMPLEMENTATION_HASFEATURE)]
+    HRESULT hasFeature(
+        [in] BSTR feature,
+        [in] BSTR version,
+        [retval, out] VARIANT_BOOL *pbool);
+}
+
+[
+local,
+object,
+uuid (3efaa425-272f-11d2-836f-0000f87a7782)
+]
+interface IXTLRuntime : IXMLDOMNode
+{
+    [id(DISPID_XTLRUNTIME_UNIQUEID)] 
+    HRESULT uniqueID(
+        [in]IXMLDOMNode *pNode, 
+        [retval, out]long *pID);
+
+    [id(DISPID_XTLRUNTIME_DEPTH)]
+    HRESULT depth(
+        [in] IXMLDOMNode *pNode, 
+        [retval, out]long * pDepth);
+
+    [id(DISPID_XTLRUNTIME_CHILDNUMBER)] 
+    HRESULT childNumber(
+        [in]IXMLDOMNode *pNode, 
+        [retval, out] long *pNumber);
+
+    [id(DISPID_XTLRUNTIME_ANCESTORCHILDNUMBER)]
+    HRESULT ancestorChildNumber(
+        [in]BSTR bstr, 
+        [in]IXMLDOMNode *pNode, 
+        [retval, out]long *pNumber);
+
+    [id(DISPID_XTLRUNTIME_ABSOLUTECHILDNUMBER)]
+    HRESULT absoluteChildNumber(
+        [in]IXMLDOMNode *pNode, 
+        [retval, out]long *pNumber);
+
+    [id(DISPID_XTLRUNTIME_FORMATINDEX)]
+    HRESULT formatIndex(
+        [in] long lIndex, 
+        [in] BSTR bstr, 
+        [retval, out]BSTR *pbstr);
+
+    [id(DISPID_XTLRUNTIME_FORMATNUMBER)]
+    HRESULT formatNumber(
+        [in] double dblNumber, 
+        [in] BSTR bstr, 
+        [retval, out]BSTR *pbstr);
+
+    [id(DISPID_XTLRUNTIME_FORMATDATE)]
+    HRESULT formatDate(
+        [in] VARIANT var1, 
+        [in] BSTR bstr, 
+        [optional, in] VARIANT var2,
+        [retval, out]BSTR *pbstr);
+
+    [id(DISPID_XTLRUNTIME_FORMATTIME)]
+    HRESULT formatTime(
+        [in] VARIANT var1, 
+        [in] BSTR bstr, 
+        [optional, in] VARIANT var2,
+        [retval, out]BSTR *pbstr);
+
+}
+
+[
+    uuid(3efaa427-272f-11d2-836f-0000f87a7782)
+]
+dispinterface XMLDOMDocumentEvents 
+{
+    properties:
+    methods:
+    [id (DISPID_XMLDOMEVENT_ONDATAAVAILABLE)]  
+    HRESULT ondataavailable();
+ 
+    [id (DISPID_XMLDOMEVENT_ONREADYSTATECHANGE)] 
+    HRESULT onreadystatechange();
+}
+
+[
+local,
+object,
+uuid (2933BF92-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXSLProcessor : IDispatch
+{
+    [propput, id(DISPID_XMLDOM_PROCESSOR_INPUT)]
+    HRESULT input([in] VARIANT var);
+
+    [propget, id(DISPID_XMLDOM_PROCESSOR_INPUT)]
+    HRESULT input([retval, out] VARIANT *var);
+
+    [propget, id(DISPID_XMLDOM_PROCESSOR_XSLTEMPLATE)]
+    HRESULT ownerTemplate([retval, out] IXSLTemplate **ppTemplate);
+
+    [id(DISPID_XMLDOM_PROCESSOR_SETSTARTMODE)]
+    HRESULT setStartMode(
+        [in] BSTR p, 
+        [in, defaultvalue("")] BSTR uri);
+
+    [propget, id(DISPID_XMLDOM_PROCESSOR_STARTMODE)]
+    HRESULT startMode([retval, out] BSTR *p);
+
+    [propget, id(DISPID_XMLDOM_PROCESSOR_STARTMODEURI)]
+    HRESULT startModeURI([retval, out] BSTR *uri);
+
+    [propput, id(DISPID_XMLDOM_PROCESSOR_OUTPUT)]
+    HRESULT output([in] VARIANT var);
+
+    [propget, id(DISPID_XMLDOM_PROCESSOR_OUTPUT)]
+    HRESULT output([retval, out] VARIANT *var);
+
+    [id(DISPID_XMLDOM_PROCESSOR_TRANSFORM)]
+    HRESULT transform(
+        [retval, out] VARIANT_BOOL *pbool);
+
+    [id(DISPID_XMLDOM_PROCESSOR_RESET)]
+    HRESULT reset();
+
+    [propget, id(DISPID_XMLDOM_PROCESSOR_READYSTATE)]
+    HRESULT readyState([retval, out] long *pstate);
+
+    [id(DISPID_XMLDOM_PROCESSOR_ADDPARAMETER)]
+    HRESULT addParameter(
+        [in] BSTR p, 
+        [in] VARIANT var, 
+        [in, defaultvalue("")] BSTR uri);
+
+    [id(DISPID_XMLDOM_PROCESSOR_ADDOBJECT)]
+    HRESULT addObject(
+        [in] IDispatch* obj, 
+        [in] BSTR uri);
+
+    [propget, id(DISPID_XMLDOM_PROCESSOR_STYLESHEET)]
+    HRESULT stylesheet([retval, out] IXMLDOMNode **node);
+} 
+
+[
+local,
+object,
+uuid (2933BF93-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXSLTemplate : IDispatch
+{
+    [propputref, id(DISPID_XMLDOM_TEMPLATE_STYLESHEET)]
+    HRESULT stylesheet([in] IXMLDOMNode *node);
+
+    [propget, id(DISPID_XMLDOM_TEMPLATE_STYLESHEET)]
+    HRESULT stylesheet([retval, out] IXMLDOMNode **node);
+
+    [id(DISPID_XMLDOM_TEMPLATE_CREATEPROCESSOR)]
+    HRESULT createProcessor(
+        [retval, out] IXSLProcessor **ppProcessor);
+} 
+
+[
+    object,
+    uuid(ED8C108D-4349-11D2-91A4-00C04F7969E8),
+    odl,
+    dual,
+    oleautomation,
+    pointer_default(unique)
+]
+interface IXMLHTTPRequest : IDispatch
+{
+    [id(1)]
+    HRESULT open([in] BSTR bstrMethod, [in] BSTR bstrUrl, [in, optional] VARIANT varAsync,
+                 [in,optional] VARIANT username, [in,optional] VARIANT password);
+
+    [id(2)]
+    HRESULT setRequestHeader([in] BSTR bstrHeader, [in] BSTR bstrValue);
+
+    [id(3)]
+    HRESULT getResponseHeader([in] BSTR bstrHeader, [out, retval] BSTR * value);
+
+    [id(4)]
+    HRESULT getAllResponseHeaders([out, retval] BSTR * pbstrHeaders);
+
+    [id(5)]
+    HRESULT send([in, optional] VARIANT body);
+
+    [id(6)]
+    HRESULT abort();
+
+    [propget, id(7)]
+    HRESULT status([out, retval] long *pStatus);
+
+    [propget, id(8)]
+    HRESULT statusText([out, retval] BSTR *pStatus);
+
+    [propget, id(9)]
+    HRESULT responseXML([out, retval] IDispatch **pBody);
+
+    [propget, id(10)]
+    HRESULT responseText([out, retval] BSTR *pBody);
+
+    [propget, id(11)]
+    HRESULT responseBody([out, retval] VARIANT *pBody);
+
+    [propget, id(12)]
+    HRESULT responseStream([out, retval] VARIANT *pBody);
+
+    [propget, id(13)]
+    HRESULT readyState([out, retval] long *pState);
+
+    [propput, id(14)]
+    HRESULT onreadystatechange([in] IDispatch *pReadyStateSink);
+};
+
+[
+local,
+object,
+uuid (3efaa426-272f-11d2-836f-0000f87a7782)
+]
+interface IXMLDOMParseError : IDispatch
+{
+    [propget, id(DISPID_VALUE)]
+    HRESULT errorCode([retval, out] long *errCode);
+
+    [propget, id(DISPID_DOM_ERROR_URL)]
+    HRESULT url([retval, out] BSTR *p);
+
+    [propget, id(DISPID_DOM_ERROR_REASON)]
+    HRESULT reason([retval, out] BSTR *p);
+
+    [propget, id(DISPID_DOM_ERROR_SRCTEXT)]
+    HRESULT srcText([retval, out] BSTR *p);
+
+    [propget, id(DISPID_DOM_ERROR_LINE)]
+    HRESULT line([retval, out] long *lineNo);
+
+    [propget, id(DISPID_DOM_ERROR_LINEPOS)]
+    HRESULT linepos([retval, out] long * linePos);
+
+    [propget, id(DISPID_DOM_ERROR_FILEPOS)]
+    HRESULT filepos([retval, out] long * filePos);
+}
+
+[
+    uuid(F6D90F11-9C73-11D3-B32E-00C04F990BB4)
+]
+coclass DOMDocument
+{
+    [default] interface IXMLDOMDocument2;
+    [default, source] dispinterface XMLDOMDocumentEvents;
+}
+
+[
+    uuid(f5078f1b-c551-11d3-89b9-0000f81fe221)
+]
+coclass DOMDocument26
+{
+    [default] interface IXMLDOMDocument2;
+    [default, source] dispinterface XMLDOMDocumentEvents;
+}
+
+[
+    uuid(f5078f32-c551-11d3-89b9-0000f81fe221)
+]
+coclass DOMDocument30
+{
+    [default] interface IXMLDOMDocument2;
+    [default, source] dispinterface XMLDOMDocumentEvents;
+}
+
+
+[
+    uuid(F6D90F12-9C73-11D3-B32E-00C04F990BB4)
+]
+coclass FreeThreadedDOMDocument
+{
+    [default] interface IXMLDOMDocument2;
+    [default, source] dispinterface XMLDOMDocumentEvents;
+}
+
+[
+    uuid(f5078f1c-c551-11d3-89b9-0000f81fe221)
+]
+coclass FreeThreadedDOMDocument26
+{
+    [default] interface IXMLDOMDocument2;
+    [default, source] dispinterface XMLDOMDocumentEvents;
+}
+
+[
+    uuid(f5078f33-c551-11d3-89b9-0000f81fe221)
+]
+coclass FreeThreadedDOMDocument30
+{
+    [default] interface IXMLDOMDocument2;
+    [default, source] dispinterface XMLDOMDocumentEvents;
+}
+
+[
+    uuid(373984c9-b845-449b-91e7-45ac83036ade)
+]
+coclass XMLSchemaCache
+{
+    [default] interface IXMLDOMSchemaCollection;
+}
+
+[
+    uuid(f5078f1d-c551-11d3-89b9-0000f81fe221)
+]
+coclass XMLSchemaCache26
+{
+    [default] interface IXMLDOMSchemaCollection;
+}
+
+[
+    uuid(f5078f34-c551-11d3-89b9-0000f81fe221)
+]
+coclass XMLSchemaCache30
+{
+    [default] interface IXMLDOMSchemaCollection;
+}
+
+[
+    uuid(2933BF94-7B36-11d2-B20E-00C04F983E60)
+]
+coclass XSLTemplate
+{
+    [default] interface IXSLTemplate;
+}
+
+[
+    uuid(f5078f21-c551-11d3-89b9-0000f81fe221)
+]
+coclass XSLTemplate26
+{
+    [default] interface IXSLTemplate;
+}
+
+[
+    uuid(f5078f36-c551-11d3-89b9-0000f81fe221)
+]
+coclass XSLTemplate30
+{
+    [default] interface IXSLTemplate;
+}
+
+/*
+ * Sax Interfaces
+ */
+[
+    object,
+    local,
+    uuid(f078abe1-45d2-4832-91ea-4466ce2f25c9)
+]
+interface ISAXAttributes : IUnknown
+{
+    HRESULT getLength(
+        [out, retval] int *length);
+
+    HRESULT getURI(
+        [in] int nIndex,
+        [out] const WCHAR **pUrl,
+        [out] int *pUriSize);
+
+    HRESULT getLocalName(
+        [in] int nIndex,
+        [out] const WCHAR **pLocalName,
+        [out] int *pLocalNameLength);
+
+    HRESULT getQName(
+        [in] int nIndex,
+        [out] const WCHAR **pQName,
+        [out] int *pQNameLength);
+
+    HRESULT getName(
+        [in] int nIndex,
+        [out] const WCHAR **pUri,
+        [out] int * pUriLength,
+        [out] const WCHAR ** pLocalName,
+        [out] int * pLocalNameSize,
+        [out] const WCHAR ** pQName,
+        [out] int * pQNameLength);
+
+    HRESULT getIndexFromName(
+        [in] const WCHAR * pUri,
+        [in] int cUriLength,
+        [in] const WCHAR * pLocalName,
+        [in] int cocalNameLength,
+        [out, retval] int * index);
+
+    HRESULT getIndexFromQName(
+        [in] const WCHAR * pQName,
+        [in] int nQNameLength,
+        [out, retval] int * index);
+
+    HRESULT getType(
+        [in] int nIndex,
+        [out] const WCHAR ** pType,
+        [out] int * pTypeLength);
+
+    HRESULT getTypeFromName(
+        [in] const WCHAR * pUri,
+        [in] int nUri,
+        [in] const WCHAR * pLocalName,
+        [in] int nLocalName,
+        [out] const WCHAR ** pType,
+        [out] int * nType);
+
+    HRESULT getTypeFromQName(
+        [in] const WCHAR * pQName,
+        [in] int nQName,
+        [out] const WCHAR ** pType,
+        [out] int * nType);
+
+    HRESULT getValue(
+        [in] int nIndex,
+        [out] const WCHAR ** pValue,
+        [out] int * nValue);
+
+    HRESULT getValueFromName(
+        [in] const WCHAR * pUri,
+        [in] int nUri,
+        [in] const WCHAR * pLocalName,
+        [in] int nLocalName,
+        [out] const WCHAR ** pValue,
+        [out] int * nValue);
+
+    HRESULT getValueFromQName(
+        [in] const WCHAR * pQName,
+        [in] int nQName,
+        [out] const WCHAR ** pValue,
+        [out] int * nValue);
+};
+
+[
+    object,
+    local,
+    uuid(1545cdfa-9e4e-4497-a8a4-2bf7d0112c44)
+]
+interface ISAXContentHandler : IUnknown
+{
+    HRESULT putDocumentLocator(
+        [in] ISAXLocator * pLocator);
+
+    HRESULT startDocument();
+
+    HRESULT endDocument();
+
+    HRESULT startPrefixMapping(
+        [in] const WCHAR * pPrefix,
+        [in] int nPrefix,
+        [in] const WCHAR * pUri,
+        [in] int nUri);
+
+    HRESULT endPrefixMapping(
+        [in] const WCHAR * pPrefix,
+        [in] int nPrefix);
+
+    HRESULT startElement(
+        [in] const WCHAR * pNamespaceUri,
+        [in] int nNamespaceUri,
+        [in] const WCHAR * pLocalName,
+        [in] int nLocalName,
+        [in] const WCHAR * pQName,
+        [in] int nQName,
+        [in] ISAXAttributes * pAttr);
+
+    HRESULT endElement(
+        [in] const WCHAR * pNamespaceUri,
+        [in] int nNamespaceUri,
+        [in] const WCHAR * pLocalName,
+        [in] int nLocalName,
+        [in] const WCHAR * pQName,
+        [in] int nQName);
+
+    HRESULT characters(
+        [in] const WCHAR * pChars,
+        [in] int nChars);
+
+    HRESULT ignorableWhitespace(
+        [in] const WCHAR * pChars,
+        [in] int nChars);
+
+    HRESULT processingInstruction(
+        [in] const WCHAR * pTarget,
+        [in] int nTarget,
+        [in] const WCHAR * pData,
+        [in] int nData);
+
+    HRESULT skippedEntity(
+        [in] const WCHAR * pName,
+        [in] int nName);
+};
+
+[
+    object,
+    local,
+    uuid(862629ac-771a-47b2-8337-4e6843c1be90)
+]
+interface ISAXDeclHandler : IUnknown
+{
+    HRESULT elementDecl(
+        [in] const WCHAR * pName,
+        [in] int nName,
+        [in] const WCHAR * pModel,
+        [in] int nModel);
+
+    HRESULT attributeDecl(
+        [in] const WCHAR * pElementName,
+        [in] int nElementName,
+        [in] const WCHAR * pAttributeName,
+        [in] int nAttributeName,
+        [in] const WCHAR * pType,
+        [in] int nType,
+        [in] const WCHAR * pValueDefault,
+        [in] int nValueDefault,
+        [in] const WCHAR * pValue,
+        [in] int nValue);
+
+    HRESULT internalEntityDecl(
+        [in] const WCHAR * pName,
+        [in] int nName,
+        [in] const WCHAR * pValue,
+        [in] int nValue);
+
+    HRESULT externalEntityDecl(
+        [in] const WCHAR * pName,
+        [in] int nName,
+        [in] const WCHAR * pPublicId,
+        [in] int nPublicId,
+        [in] const WCHAR * pSystemId,
+        [in] int nSystemId);
+};
+
+[
+    object,
+    local,
+    uuid(e15c1baf-afb3-4d60-8c36-19a8c45defed)
+]
+interface ISAXDTDHandler : IUnknown
+{
+    HRESULT notationDecl(
+        [in] const WCHAR * pName,
+        [in] int nName,
+        [in] const WCHAR * pPublicId,
+        [in] int nPublicId,
+        [in] const WCHAR * pSystemId,
+        [in] int nSystemId);
+
+    HRESULT unparsedEntityDecl(
+        [in] const WCHAR * pName,
+        [in] int nName,
+        [in] const WCHAR * pPublicId,
+        [in] int nPublicId,
+        [in] const WCHAR * pSystemId,
+        [in] int nSystemId,
+        [in] const WCHAR * pNotationName,
+        [in] int nNotationName);
+};
+
+[
+    object,
+    local,
+    uuid(99bca7bd-e8c4-4d5f-a0cf-6d907901ff07),
+]
+interface ISAXEntityResolver : IUnknown
+{
+    HRESULT resolveEntity(
+        [in] const WCHAR * pPublicId,
+        [in] const WCHAR * pSystemId,
+        [out, retval] VARIANT * ret);
+};
+
+[
+    object,
+    local,
+    uuid(a60511c4-ccf5-479e-98a3-dc8dc545b7d0)
+]
+interface ISAXErrorHandler : IUnknown
+{
+    HRESULT error(
+        [in] ISAXLocator * pLocator,
+        [in] const WCHAR * pErrorMessage,
+        [in] HRESULT hrErrorCode);
+
+    HRESULT fatalError(
+        [in] ISAXLocator * pLocator,
+        [in] const WCHAR * pErrorMessage,
+        [in] HRESULT hrErrorCode);
+
+    HRESULT ignorableWarning(
+        [in] ISAXLocator * pLocator,
+        [in] const WCHAR * pErrorMessage,
+        [in] HRESULT hrErrorCode);
+};
+
+[
+    object,
+    local,
+    uuid(7f85d5f5-47a8-4497-bda5-84ba04819ea6)
+]
+interface ISAXLexicalHandler : IUnknown
+{
+    HRESULT startDTD(
+        [in] const WCHAR * pName,
+        [in] int nName,
+        [in] const WCHAR * pPublicId,
+        [in] int nPublicId,
+        [in] const WCHAR * pSystemId,
+        [in] int nSystemId);
+
+    HRESULT endDTD();
+
+    HRESULT startEntity(
+        [in] const WCHAR * pName,
+        [in] int nName);
+
+    HRESULT endEntity(
+        [in] const WCHAR * pName,
+        [in] int nName);
+
+    HRESULT startCDATA();
+
+    HRESULT endCDATA();
+
+    HRESULT comment(
+        [in] const WCHAR * pChars,
+        [in] int nChars);
+};
+
+[
+    object,
+    local,
+    uuid(9b7e472a-0de4-4640-bff3-84d38a051c31)
+]
+interface ISAXLocator : IUnknown
+{
+    HRESULT getColumnNumber(
+        [out, retval] int * nColumn);
+
+    HRESULT getLineNumber(
+        [out, retval] int * nLine);
+
+    HRESULT getPublicId(
+        [out, retval] const WCHAR ** publicId);
+
+    HRESULT getSystemId(
+        [out, retval] const WCHAR ** systemId);
+};
+
+[
+    local,
+    object,
+    uuid(70409222-ca09-4475-acb8-40312fe8d145)
+]
+interface ISAXXMLFilter : ISAXXMLReader
+{
+    HRESULT getParent(
+        [out, retval] ISAXXMLReader ** pReader);
+    HRESULT putParent(
+        [in] ISAXXMLReader * reader);
+};
+
+[
+local,
+object,
+uuid (a4f96ed0-f829-476e-81c0-cdc7bd2a0802)
+]
+interface ISAXXMLReader : IUnknown
+{
+    HRESULT getFeature(
+        [in] const WCHAR * pFeature,
+        [out, retval] VARIANT_BOOL * pValue);
+    HRESULT putFeature(
+        [in] const WCHAR * pFeature,
+        [in] VARIANT_BOOL vfValue);
+
+    HRESULT getProperty(
+        [in] const WCHAR * pProp,
+        [out, retval] VARIANT * pValue);
+    HRESULT putProperty(
+        [in] const WCHAR * pProp,
+        [in] VARIANT value);
+
+    HRESULT getEntityResolver(
+        [out, retval] ISAXEntityResolver ** ppEntityResolver);
+    HRESULT putEntityResolver(
+        [in] ISAXEntityResolver * pEntityResolver);
+
+    HRESULT getContentHandler(
+        [out, retval] ISAXContentHandler ** pContentHandler);
+    HRESULT putContentHandler(
+        [in] ISAXContentHandler * contentHandler);
+
+    HRESULT getDTDHandler(
+        [out, retval] ISAXDTDHandler ** pDTDHandler);
+    HRESULT putDTDHandler(
+        [in] ISAXDTDHandler * pDTDHandler);
+
+    HRESULT getErrorHandler(
+        [out, retval] ISAXErrorHandler ** pErrorHandler);
+    HRESULT putErrorHandler(
+        [in] ISAXErrorHandler * errorHandler);
+
+    HRESULT getBaseURL(
+        [out, retval] const WCHAR ** pBaseUrl);
+    HRESULT putBaseURL(
+        [in] const WCHAR * pBaseUrl);
+
+    HRESULT getSecureBaseURL(
+        [out, retval] const WCHAR ** pSecureBaseUrl);
+    HRESULT putSecureBaseURL(
+        [in] const WCHAR * secureBaseUrl);
+
+    HRESULT parse(
+        [in] VARIANT varInput);
+    HRESULT parseURL(
+        [in] const WCHAR * url);
+}
+
+[
+    object,
+    dual,
+    uuid(10dc0586-132b-4cac-8bb3-db00ac8b7ee0)
+]
+interface IVBSAXAttributes : IDispatch
+{
+    [propget, id(DISPID_SAX_ATTRIBUTES_LENGTH)]
+    HRESULT length( [out, retval] int * nLength);
+
+    [id(DISPID_SAX_ATTRIBUTES_GETURI)]
+    HRESULT getURI( [in] int nIndex, [out, retval] BSTR * uri);
+
+    [id(DISPID_SAX_ATTRIBUTES_GETLOCALNAME)]
+    HRESULT getLocalName( [in] int nIndex, [out, retval] BSTR * localName);
+
+    [id(DISPID_SAX_ATTRIBUTES_GETQNAME)]
+    HRESULT getQName( [in] int nIndex, [out, retval] BSTR * QName);
+
+    [id(DISPID_SAX_ATTRIBUTES_GETINDEXFROMNAME)]
+    HRESULT getIndexFromName( [in] BSTR uri,
+                              [in] BSTR localName, [out, retval] int * nIndex);
+
+    [id(DISPID_SAX_ATTRIBUTES_GETINDEXFROMQNAME)]
+    HRESULT getIndexFromQName( [in] BSTR QName, [out, retval] int * nIndex);
+
+    [id(DISPID_SAX_ATTRIBUTES_GETTYPE)]
+    HRESULT getType( [in] int nIndex, [out, retval] BSTR * type);
+
+    [id(DISPID_SAX_ATTRIBUTES_GETTYPEFROMNAME)]
+    HRESULT getTypeFromName( [in] BSTR uri, [in] BSTR localName,
+                             [out, retval] BSTR * type);
+
+    [id(DISPID_SAX_ATTRIBUTES_GETTYPEFROMQNAME)]
+    HRESULT getTypeFromQName( [in] BSTR QName, [out, retval] BSTR * type);
+
+    [id(DISPID_SAX_ATTRIBUTES_GETVALUE)]
+    HRESULT getValue( [in] int nIndex, [out, retval] BSTR * value);
+
+    [id(DISPID_SAX_ATTRIBUTES_GETVALUEFROMNAME)]
+    HRESULT getValueFromName( [in] BSTR uri,
+                              [in] BSTR localName,
+                              [out, retval] BSTR * value);
+
+    [id(DISPID_SAX_ATTRIBUTES_GETVALUEFROMQNAME)]
+    HRESULT getValueFromQName( [in] BSTR QName, [out, retval] BSTR * value);
+};
+
+[
+    object,
+    dual,
+    uuid(2ed7290a-4dd5-4b46-bb26-4e4155e77faa)
+]
+interface IVBSAXContentHandler : IDispatch
+{
+    [propputref, id(DISPID_SAX_CONTENTHANDLER_DOCUMENTLOCATOR)]
+    HRESULT documentLocator( [in] IVBSAXLocator * oLocator);
+
+    [id(DISPID_SAX_CONTENTHANDLER_STARTDOCUMENT)]
+    HRESULT startDocument();
+
+    [id(DISPID_SAX_CONTENTHANDLER_ENDDOCUMENT)]
+    HRESULT endDocument();
+
+    [id(DISPID_SAX_CONTENTHANDLER_STARTPREFIXMAPPING)]
+    HRESULT startPrefixMapping( [in, out] BSTR * prefix, [in, out] BSTR * uri);
+
+    [id(DISPID_SAX_CONTENTHANDLER_ENDPREFIXMAPPING)]
+    HRESULT endPrefixMapping( [in, out] BSTR * prefix);
+
+    [id(DISPID_SAX_CONTENTHANDLER_STARTELEMENT)]
+    HRESULT startElement( [in, out] BSTR * namespaceURI,
+                          [in, out] BSTR * localName,
+                          [in, out] BSTR * QName,
+                          [in] IVBSAXAttributes * oAttributes);
+
+    [id(DISPID_SAX_CONTENTHANDLER_ENDELEMENT)]
+    HRESULT endElement( [in, out] BSTR * namespaceURI,
+                        [in, out] BSTR * localName, [in, out] BSTR * strQName);
+
+    [id(DISPID_SAX_CONTENTHANDLER_CHARACTERS)]
+    HRESULT characters( [in, out] BSTR * chars);
+
+    [id(DISPID_SAX_CONTENTHANDLER_IGNORABLEWHITESPACE)]
+    HRESULT ignorableWhitespace( [in, out] BSTR * chars);
+
+    [id(DISPID_SAX_CONTENTHANDLER_PROCESSINGINSTRUCTION)]
+    HRESULT processingInstruction( [in, out] BSTR * target,
+                                   [in, out] BSTR * data);
+
+    [id(DISPID_SAX_CONTENTHANDLER_SKIPPEDENTITY)]
+    HRESULT skippedEntity( [in, out] BSTR * name);
+};
+
+[
+    object,
+    dual,
+    uuid(e8917260-7579-4be1-b5dd-7afbfa6f077b)
+]
+interface IVBSAXDeclHandler : IDispatch
+{
+    [id(DISPID_SAX_DECLHANDLER_ELEMENTDECL)]
+    HRESULT elementDecl(
+        [in, out] BSTR * name,
+        [in, out] BSTR * model);
+
+    [id(DISPID_SAX_DECLHANDLER_ATTRIBUTEDECL)]
+    HRESULT attributeDecl(
+        [in, out] BSTR * elementName,
+        [in, out] BSTR * attributeName,
+        [in, out] BSTR * type,
+        [in, out] BSTR * valueDefault,
+        [in, out] BSTR * value);
+
+    [id(DISPID_SAX_DECLHANDLER_INTERNALENTITYDECL)]
+    HRESULT internalEntityDecl(
+        [in, out] BSTR * name,
+        [in, out] BSTR * value);
+
+    [id(DISPID_SAX_DECLHANDLER_EXTERNALENTITYDECL)]
+    HRESULT externalEntityDecl(
+        [in, out] BSTR * name,
+        [in, out] BSTR * publicId,
+        [in, out] BSTR * systemId);
+};
+
+[
+    object,
+    dual,
+    uuid(24fb3297-302d-4620-ba39-3a732d850558)
+]
+interface IVBSAXDTDHandler : IDispatch
+{
+    [id(DISPID_SAX_DTDHANDLER_NOTATIONDECL)]
+    HRESULT notationDecl(
+        [in, out] BSTR * name,
+        [in, out] BSTR * publicId,
+        [in, out] BSTR * systemId);
+
+    [id(DISPID_SAX_DTDHANDLER_UNPARSEDENTITYDECL)]
+    HRESULT unparsedEntityDecl(
+        [in, out] BSTR * name,
+        [in, out] BSTR * publicId,
+        [in, out] BSTR * systemId,
+        [in, out] BSTR * notationName);
+};
+
+[
+    object,
+    dual,
+    uuid(0c05d096-f45b-4aca-ad1a-aa0bc25518dc)
+]
+interface IVBSAXEntityResolver : IDispatch
+{
+    [id(DISPID_SAX_ENTITYRESOLVER_RESOLVEENTITY)]
+    HRESULT resolveEntity(
+        [in, out] BSTR * publicId,
+        [in, out] BSTR * systemId,
+        [out, retval] VARIANT * ret);
+};
+
+[
+    object,
+    dual,
+    uuid(d963d3fe-173c-4862-9095-b92f66995f52)
+]
+interface IVBSAXErrorHandler : IDispatch
+{
+    [id(DISPID_SAX_ERRORHANDLER_ERROR)]
+    HRESULT error(
+        [in] IVBSAXLocator * locator,
+	    [in, out] BSTR * errorMessage,
+	    [in] long errorCode);
+
+    [id(DISPID_SAX_ERRORHANDLER_FATALERROR)]
+    HRESULT fatalError(
+	    [in] IVBSAXLocator * locator,
+	    [in, out] BSTR * errorMessage,
+	    [in] long errorCode);
+
+    [id(DISPID_SAX_ERRORHANDLER_IGNORABLEWARNING)]
+    HRESULT ignorableWarning(
+	    [in] IVBSAXLocator * locator,
+	    [in, out] BSTR * errorMessage,
+	    [in] long errorCode);
+};
+
+[
+    object,
+    dual,
+    uuid(032aac35-8c0e-4d9d-979f-e3b702935576)
+]
+interface IVBSAXLexicalHandler : IDispatch
+{
+    [id(DISPID_SAX_LEXICALHANDLER_STARTDTD)]
+    HRESULT startDTD(
+        [in, out] BSTR * name,
+        [in, out] BSTR * publicId,
+        [in, out] BSTR * systemId);
+    [id(DISPID_SAX_LEXICALHANDLER_ENDDTD)]
+    HRESULT endDTD();
+
+    [id(DISPID_SAX_LEXICALHANDLER_STARTENTITY)]
+    HRESULT startEntity([in, out] BSTR * name);
+    [id(DISPID_SAX_LEXICALHANDLER_ENDENTITY)]
+    HRESULT endEntity([in, out] BSTR * name);
+
+    [id(DISPID_SAX_LEXICALHANDLER_STARTCDATA)]
+    HRESULT startCDATA();
+    [id(DISPID_SAX_LEXICALHANDLER_ENDCDATA)]
+    HRESULT endCDATA();
+
+    [id(DISPID_SAX_LEXICALHANDLER_COMMENT)]
+    HRESULT comment( [in, out] BSTR * chars);
+};
+
+[
+    object,
+    uuid(796e7ac5-5aa2-4eff-acad-3faaf01a3288)
+]
+interface IVBSAXLocator : IDispatch
+{
+    [propget, id(DISPID_SAX_LOCATOR_COLUMNNUMBER)]
+    HRESULT columnNumber( [out, retval] int * column);
+
+    [propget, id(DISPID_SAX_LOCATOR_LINENUMBER)]
+    HRESULT lineNumber( [out, retval] int * line);
+
+    [propget, id(DISPID_SAX_LOCATOR_PUBLICID)]
+    HRESULT publicId( [out, retval] BSTR * publicId);
+
+    [propget, id(DISPID_SAX_LOCATOR_SYSTEMID)]
+    HRESULT systemId( [out, retval] BSTR * systemId);
+};
+
+[
+    object,
+    dual,
+    uuid(1299eb1b-5b88-433e-82de-82ca75ad4e04)
+]
+interface IVBSAXXMLFilter : IDispatch
+{
+    [propget, id(DISPID_SAX_XMLFILTER_PARENT)]
+    HRESULT parent( [out, retval] IVBSAXXMLReader ** reader);
+    [propputref, id(DISPID_SAX_XMLFILTER_PARENT)]
+    HRESULT parent( [in] IVBSAXXMLReader * reader);
+
+};
+
+[
+    dual,
+    object,
+    uuid (8c033caa-6cd6-4f73-b728-4531af74945f)
+]
+interface IVBSAXXMLReader : IDispatch
+{
+    [id(DISPID_SAX_XMLREADER_GETFEATURE)]
+    HRESULT getFeature( [in] const WCHAR * pFeature,
+                        [out, retval] VARIANT_BOOL * pValue);
+    [id(DISPID_SAX_XMLREADER_PUTFEATURE)]
+    HRESULT putFeature( [in] const WCHAR * pFeature,
+                        [in] VARIANT_BOOL vfValue);
+
+    [id(DISPID_SAX_XMLREADER_GETPROPERTY)]
+    HRESULT getProperty( [in] const WCHAR * pProp,
+                         [out, retval] VARIANT * pValue);
+    [id(DISPID_SAX_XMLREADER_PUTPROPERTY)]
+    HRESULT putProperty( [in] const WCHAR * pProp, [in] VARIANT value);
+
+    [propget, id(DISPID_SAX_XMLREADER_ENTITYRESOLVER)]
+    HRESULT entityResolver(
+                    [out, retval] IVBSAXEntityResolver ** ppEntityResolver);
+    [propputref, id(DISPID_SAX_XMLREADER_ENTITYRESOLVER)]
+    HRESULT entityResolver( [in] IVBSAXEntityResolver * pEntityResolver);
+
+    [propget, id(DISPID_SAX_XMLREADER_CONTENTHANDLER)]
+    HRESULT contentHandler(
+                        [out, retval] IVBSAXContentHandler ** pContentHandler);
+    [propputref, id(DISPID_SAX_XMLREADER_CONTENTHANDLER)]
+    HRESULT contentHandler([in] IVBSAXContentHandler * contentHandler);
+
+    [propget, id(DISPID_SAX_XMLREADER_DTDHANDLER)]
+    HRESULT dtdHandler([out, retval] IVBSAXDTDHandler ** pDTDHandler);
+    [propputref, id(DISPID_SAX_XMLREADER_DTDHANDLER)]
+    HRESULT dtdHandler([in] IVBSAXDTDHandler * pDTDHandler);
+
+    [propget, id(DISPID_SAX_XMLREADER_ERRORHANDLER)]
+    HRESULT errorHandler([out, retval] IVBSAXErrorHandler ** pErrorHandler);
+    [propputref, id(DISPID_SAX_XMLREADER_ERRORHANDLER)]
+    HRESULT errorHandler([in] IVBSAXErrorHandler * errorHandler);
+
+    [propget, id(DISPID_SAX_XMLREADER_BASEURL)]
+    HRESULT baseURL([out, retval] const WCHAR ** pBaseUrl);
+    [propput, id(DISPID_SAX_XMLREADER_BASEURL)]
+    HRESULT baseURL([in] const WCHAR * pBaseUrl);
+
+    [propget, id(DISPID_SAX_XMLREADER_SECUREBASEURL)]
+    HRESULT secureBaseURL([out, retval] const WCHAR ** pSecureBaseUrl);
+    [propput, id(DISPID_SAX_XMLREADER_SECUREBASEURL)]
+    HRESULT secureBaseURL([in] const WCHAR * secureBaseUrl);
+
+    [id(DISPID_SAX_XMLREADER_PARSE)]
+    HRESULT parse( [in] VARIANT varInput);
+    [id(DISPID_SAX_XMLREADER_PARSEURL)]
+    HRESULT parseURL([in] const WCHAR * url);
+}
+
+[
+    object,
+    dual,
+    uuid(f10d27cc-3ec0-415c-8ed8-77ab1c5e7262)
+]
+interface IMXAttributes : IDispatch
+{
+    [id(DISPID_MX_ATTRIBUTES_ADDATTRIBUTE)]
+    HRESULT addAttribute(
+        [in] BSTR uri,
+        [in] BSTR localName,
+        [in] BSTR QName,
+        [in] BSTR type,
+        [in] BSTR value);
+
+    [id(DISPID_MX_ATTRIBUTES_ADDATTRIBUTEFROMINDEX)]
+    HRESULT addAttributeFromIndex( [in] VARIANT atts,
+                                   [in] int index);
+
+    [id(DISPID_MX_ATTRIBUTES_CLEAR)]
+    HRESULT clear();
+
+    [id(DISPID_MX_ATTRIBUTES_REMOVEATTRIBUTE)]
+    HRESULT removeAttribute( [in] int index);
+
+    [id(DISPID_MX_ATTRIBUTES_SETATTRIBUTE)]
+    HRESULT setAttribute(
+        [in] int index,
+        [in] BSTR uri,
+        [in] BSTR localName,
+        [in] BSTR QName,
+        [in] BSTR type,
+        [in] BSTR value);
+
+    [id(DISPID_MX_ATTRIBUTES_SETATTRIBUTES)]
+    HRESULT setAttributes( [in] VARIANT atts);
+
+    [id(DISPID_MX_ATTRIBUTES_SETLOCALNAME)]
+    HRESULT setLocalName( [in] int index,
+        [in] BSTR localName);
+
+    [id(DISPID_MX_ATTRIBUTES_SETQNAME)]
+    HRESULT setQName(
+        [in] int index,
+        [in] BSTR QName);
+
+    [id(DISPID_MX_ATTRIBUTES_SETTYPE)]
+    HRESULT setType( [in] int index, [in] BSTR type);
+
+    [id(DISPID_MX_ATTRIBUTES_SETURI)]
+    HRESULT setURI( [in] int index,  [in] BSTR uri);
+
+    [id(DISPID_MX_ATTRIBUTES_SETVALUE)]
+    HRESULT setValue([in] int index, [in] BSTR value);
+};
+
+[
+    object,
+    dual,
+    uuid(808f4e35-8d5a-4fbe-8466-33a41279ed30)
+]
+interface IMXReaderControl : IDispatch
+{
+    [id(DISPID_MX_READER_CONTROL_ABORT)]
+    HRESULT abort();
+
+    [id(DISPID_MX_READER_CONTROL_RESUME)]
+    HRESULT resume();
+
+    [id(DISPID_MX_READER_CONTROL_SUSPEND)]
+    HRESULT suspend();
+};
+
+[
+    object,
+    dual,
+    uuid(4d7ff4ba-1565-4ea8-94e1-6e724a46f98d)
+]
+interface IMXWriter :  IDispatch
+{
+    [propput, id(DISPID_MX_WRITER_OUTPUT)]
+    HRESULT output ( [in] VARIANT Destination);
+    [propget, id(DISPID_MX_WRITER_OUTPUT)]
+    HRESULT output ( [out, retval] VARIANT * Destination);
+
+    [propput, id(DISPID_MX_WRITER_ENCODING)]
+    HRESULT encoding ([in] BSTR encoding);
+    [propget, id(DISPID_MX_WRITER_ENCODING)]
+    HRESULT encoding ([out, retval] BSTR * encoding);
+
+    [propput, id(DISPID_MX_WRITER_BYTEORDERMARK)]
+    HRESULT byteOrderMark ([in] VARIANT_BOOL writeByteOrderMark);
+    [propget, id(DISPID_MX_WRITER_BYTEORDERMARK)]
+    HRESULT byteOrderMark ([out, retval] VARIANT_BOOL * writeByteOrderMark);
+
+    [propput, id(DISPID_MX_WRITER_INDENT)]
+    HRESULT indent ([in] VARIANT_BOOL indentMode);
+    [propget, id(DISPID_MX_WRITER_INDENT)]
+    HRESULT indent ([out, retval] VARIANT_BOOL * indentMode);
+
+    [propput, id(DISPID_MX_WRITER_STANDALONE)]
+    HRESULT standalone ([in] VARIANT_BOOL value);
+    [propget, id(DISPID_MX_WRITER_STANDALONE)]
+    HRESULT standalone ([out, retval] VARIANT_BOOL * value);
+
+    [propput, id(DISPID_MX_WRITER_OMITXMLDECLARATION)]
+    HRESULT omitXMLDeclaration ([in] VARIANT_BOOL value);
+    [propget, id(DISPID_MX_WRITER_OMITXMLDECLARATION)]
+    HRESULT omitXMLDeclaration ([out, retval] VARIANT_BOOL * value);
+
+    [propput, id(DISPID_MX_WRITER_VERSION)]
+    HRESULT version ([in] BSTR version);
+    [propget, id(DISPID_MX_WRITER_VERSION)]
+    HRESULT version ([out, retval] BSTR * version);
+
+    [propput, id(DISPID_MX_WRITER_DISABLEOUTPUTESCAPING)]
+    HRESULT disableOutputEscaping([in] VARIANT_BOOL value);
+    [propget, id(DISPID_MX_WRITER_DISABLEOUTPUTESCAPING)]
+    HRESULT disableOutputEscaping([out, retval] VARIANT_BOOL * value);
+
+    [id(DISPID_MX_WRITER_FLUSH)]
+    HRESULT flush();
+};
+
+[
+    uuid(079aa557-4a18-424a-8eee-e39f0a8d41b9)
+]
+coclass SAXXMLReader
+{
+    [default] interface IVBSAXXMLReader;
+    interface ISAXXMLReader;
+    interface IMXReaderControl;
+};
+
+[
+    uuid(3124c396-fb13-4836-a6ad-1317f1713688)
+]
+coclass SAXXMLReader30
+{
+    [default] interface IVBSAXXMLReader;
+    interface ISAXXMLReader;
+    interface IMXReaderControl;
+};
+
+[
+    uuid(fc220ad8-a72a-4ee8-926e-0b7ad152a020)
+]
+coclass MXXMLWriter
+{
+    [default] interface IMXWriter;
+
+    interface ISAXContentHandler;
+    interface ISAXErrorHandler;
+    interface ISAXDTDHandler;
+    interface ISAXLexicalHandler;
+    interface ISAXDeclHandler;
+
+    interface IVBSAXContentHandler;
+    interface IVBSAXDeclHandler;
+    interface IVBSAXDTDHandler;
+    interface IVBSAXErrorHandler;
+    interface IVBSAXLexicalHandler;
+};
+
+[
+    uuid(3d813dfe-6c91-4a4e-8f41-04346a841d9c)
+]
+coclass MXXMLWriter30
+{
+    [default] interface IMXWriter;
+
+    interface ISAXContentHandler;
+    interface ISAXDeclHandler;
+    interface ISAXDTDHandler;
+    interface ISAXErrorHandler;
+    interface ISAXLexicalHandler;
+
+    interface IVBSAXContentHandler;
+    interface IVBSAXDeclHandler;
+    interface IVBSAXDTDHandler;
+    interface IVBSAXErrorHandler;
+    interface IVBSAXLexicalHandler;
+};
+
+[
+    uuid(4dd441ad-526d-4a77-9f1b-9841ed802fb0)
+]
+coclass SAXAttributes
+{
+    [default] interface IMXAttributes;
+    interface IVBSAXAttributes;
+    interface ISAXAttributes;
+};
+
+[
+    uuid(3e784a01-f3ae-4dc0-9354-9526b9370eba)
+]
+coclass SAXAttributes30
+{
+    [default] interface IMXAttributes;
+    interface IVBSAXAttributes;
+    interface ISAXAttributes;
+};
+
+
+} /* Library MSXML */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msxml2did.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msxml2did.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msxml2did.h	(revision 16410)
@@ -0,0 +1,398 @@
+/*
+ * Copyright (C) 2005 Vijay Kiran Kamuju
+ * Copyright (C) 2008 Alistair Leslie-Hughes
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __MSXML2DID_H__
+#define __MSXML2DID_H__
+
+#define DISPID_DOM_BASE                     0x00000001
+#define DISPID_DOM_COLLECTION_BASE          0x000f4240
+#define DISPID_DOM_COLLECTION_MAX           0x002dc6bf
+
+#define DISPID_DOM_NODE                                 0x00000001
+#define DISPID_DOM_NODE_NODENAME                        0x00000002
+#define DISPID_DOM_NODE_NODEVALUE                       0x00000003
+#define DISPID_DOM_NODE_NODETYPE                        0x00000004
+#define DISPID_DOM_NODE_NODETYPEENUM                    0x00000005
+#define DISPID_DOM_NODE_PARENTNODE                      0x00000006
+#define DISPID_DOM_NODE_CHILDNODES                      0x00000007
+#define DISPID_DOM_NODE_FIRSTCHILD                      0x00000008
+#define DISPID_DOM_NODE_LASTCHILD                       0x00000009
+#define DISPID_DOM_NODE_PREVIOUSSIBLING                 0x0000000a
+#define DISPID_DOM_NODE_NEXTSIBLING                     0x0000000b
+#define DISPID_DOM_NODE_ATTRIBUTES                      0x0000000c
+#define DISPID_DOM_NODE_INSERTBEFORE                    0x0000000d
+#define DISPID_DOM_NODE_REPLACECHILD                    0x0000000e
+#define DISPID_DOM_NODE_REMOVECHILD                     0x0000000f
+#define DISPID_DOM_NODE_APPENDCHILD                     0x00000010
+#define DISPID_DOM_NODE_HASCHILDNODES                   0x00000011
+#define DISPID_DOM_NODE_OWNERDOC                        0x00000012
+#define DISPID_DOM_NODE_CLONENODE                       0x00000013
+
+#define DISPID_XMLDOM_NODE                              0x00000014
+#define DISPID_XMLDOM_NODE_STRINGTYPE                   0x00000015
+#define DISPID_XMLDOM_NODE_SPECIFIED                    0x00000016
+#define DISPID_XMLDOM_NODE_DEFINITION                   0x00000017
+#define DISPID_XMLDOM_NODE_TEXT                         0x00000018
+#define DISPID_XMLDOM_NODE_NODETYPEDVALUE               0x00000019
+#define DISPID_XMLDOM_NODE_DATATYPE                     0x0000001a
+#define DISPID_XMLDOM_NODE_XML                          0x0000001b
+#define DISPID_XMLDOM_NODE_TRANSFORMNODE                0x0000001c
+#define DISPID_XMLDOM_NODE_SELECTNODES                  0x0000001d
+#define DISPID_XMLDOM_NODE_SELECTSINGLENODE             0x0000001e
+#define DISPID_XMLDOM_NODE_PARSED                       0x0000001f
+#define DISPID_XMLDOM_NODE_NAMESPACE                    0x00000020
+#define DISPID_XMLDOM_NODE_PREFIX                       0x00000021
+#define DISPID_XMLDOM_NODE_BASENAME                     0x00000022
+#define DISPID_XMLDOM_NODE_TRANSFORMNODETOOBJECT        0x00000023
+#define DISPID_XMLDOM_NODE__TOP                         0x00000024
+
+#define DISPID_DOM_DOCUMENT                             0x00000025
+#define DISPID_DOM_DOCUMENT_DOCTYPE                     0x00000026
+#define DISPID_DOM_DOCUMENT_IMPLEMENTATION              0x00000027
+#define DISPID_DOM_DOCUMENT_DOCUMENTELEMENT             0x00000028
+#define DISPID_DOM_DOCUMENT_CREATEELEMENT               0x00000029
+#define DISPID_DOM_DOCUMENT_CREATEDOCUMENTFRAGMENT      0x0000002a
+#define DISPID_DOM_DOCUMENT_CREATETEXTNODE              0x0000002b
+#define DISPID_DOM_DOCUMENT_CREATECOMMENT               0x0000002c
+#define DISPID_DOM_DOCUMENT_CREATECDATASECTION          0x0000002d
+#define DISPID_DOM_DOCUMENT_CREATEPROCESSINGINSTRUCTION 0x0000002e
+#define DISPID_DOM_DOCUMENT_CREATEATTRIBUTE             0x0000002f
+#define DISPID_DOM_DOCUMENT_CREATEENTITY                0x00000030
+#define DISPID_DOM_DOCUMENT_CREATEENTITYREFERENCE       0x00000031
+#define DISPID_DOM_DOCUMENT_GETELEMENTSBYTAGNAME        0x00000032
+#define DISPID_DOM_DOCUMENT_TOP                         0x00000033
+
+#define DISPID_XMLDOM_DOCUMENT                          0x00000034
+#define DISPID_XMLDOM_DOCUMENT_DOCUMENTNODE             0x00000035
+#define DISPID_XMLDOM_DOCUMENT_CREATENODE               0x00000036
+#define DISPID_XMLDOM_DOCUMENT_CREATENODEEX             0x00000037
+#define DISPID_XMLDOM_DOCUMENT_NODEFROMID               0x00000038
+#define DISPID_XMLDOM_DOCUMENT_DOCUMENTNAMESPACES       0x00000039
+#define DISPID_XMLDOM_DOCUMENT_LOAD                     0x0000003a
+#define DISPID_XMLDOM_DOCUMENT_PARSEERROR               0x0000003b
+#define DISPID_XMLDOM_DOCUMENT_URL                      0x0000003c
+#define DISPID_XMLDOM_DOCUMENT_ASYNC                    0x0000003d
+#define DISPID_XMLDOM_DOCUMENT_ABORT                    0x0000003e
+#define DISPID_XMLDOM_DOCUMENT_LOADXML                  0x0000003f
+#define DISPID_XMLDOM_DOCUMENT_SAVE                     0x00000040
+#define DISPID_XMLDOM_DOCUMENT_VALIDATE                 0x00000041
+#define DISPID_XMLDOM_DOCUMENT_RESOLVENAMESPACE         0x00000042
+#define DISPID_XMLDOM_DOCUMENT_PRESERVEWHITESPACE       0x00000043
+#define DISPID_XMLDOM_DOCUMENT_ONREADYSTATECHANGE       0x00000044
+#define DISPID_XMLDOM_DOCUMENT_ONDATAAVAILABLE          0x00000045
+#define DISPID_XMLDOM_DOCUMENT_ONTRANSFORMNODE          0x00000046
+#define DISPID_XMLDOM_DOCUMENT__TOP                     0x00000047
+
+#define DISPID_DOM_NODELIST                             0x00000048
+#define DISPID_DOM_NODELIST_ITEM                        0x00000049
+#define DISPID_DOM_NODELIST_LENGTH                      0x0000004a
+#define DISPID_XMLDOM_NODELIST                          0x0000004b
+#define DISPID_XMLDOM_NODELIST_NEXTNODE                 0x0000004c
+#define DISPID_XMLDOM_NODELIST_RESET                    0x0000004d
+#define DISPID_XMLDOM_NODELIST_NEWENUM                  0x0000004e
+#define DISPID_XMLDOM_NODELIST__TOP                     0x0000004f
+
+#define DISPID_DOM_NAMEDNODEMAP                         0x00000050
+#define DISPID_DOM_NAMEDNODEMAP_GETNAMEDITEM            0x00000053
+#define DISPID_DOM_NAMEDNODEMAP_SETNAMEDITEM            0x00000054
+#define DISPID_DOM_NAMEDNODEMAP_REMOVENAMEDITEM         0x00000055
+#define DISPID_XMLDOM_NAMEDNODEMAP                      0x00000056
+#define DISPID_XMLDOM_NAMEDNODEMAP_GETQUALIFIEDITEM     0x00000057
+#define DISPID_XMLDOM_NAMEDNODEMAP_REMOVEQUALIFIEDITEM  0x00000058
+#define DISPID_XMLDOM_NAMEDNODEMAP_NEXTNODE             0x00000059
+#define DISPID_XMLDOM_NAMEDNODEMAP_RESET                0x0000005a
+#define DISPID_XMLDOM_NAMEDNODEMAP_NEWENUM              0x0000005b
+#define DISPID_XMLDOM_NAMEDNODEMAP__TOP                 0x0000005c
+
+#define DISPID_DOM_W3CWRAPPERS                          0x0000005d
+
+#define DISPID_DOM_DOCUMENTFRAGMENT                     0x0000005e
+#define DISPID_DOM_DOCUMENTFRAGMENT__TOP                0x0000005f
+
+#define DISPID_DOM_ELEMENT                              0x00000060
+#define DISPID_DOM_ELEMENT_GETTAGNAME                   0x00000061
+#define DISPID_DOM_ELEMENT_GETATTRIBUTES                0x00000062
+#define DISPID_DOM_ELEMENT_GETATTRIBUTE                 0x00000063
+#define DISPID_DOM_ELEMENT_SETATTRIBUTE                 0x00000064
+#define DISPID_DOM_ELEMENT_REMOVEATTRIBUTE              0x00000065
+#define DISPID_DOM_ELEMENT_GETATTRIBUTENODE             0x00000066
+#define DISPID_DOM_ELEMENT_SETATTRIBUTENODE             0x00000067
+#define DISPID_DOM_ELEMENT_REMOVEATTRIBUTENODE          0x00000068
+#define DISPID_DOM_ELEMENT_GETELEMENTSBYTAGNAME         0x00000069
+#define DISPID_DOM_ELEMENT_NORMALIZE                    0x0000006a
+#define DISPID_DOM_ELEMENT__TOP                         0x0000006b
+
+#define DISPID_DOM_DATA                0x0000006c
+#define DISPID_DOM_DATA_DATA           0x0000006d
+#define DISPID_DOM_DATA_LENGTH         0x0000006e
+#define DISPID_DOM_DATA_SUBSTRING      0x0000006f
+#define DISPID_DOM_DATA_APPEND         0x00000070
+#define DISPID_DOM_DATA_INSERT         0x00000071
+#define DISPID_DOM_DATA_DELETE         0x00000072
+#define DISPID_DOM_DATA_REPLACE        0x00000073
+#define DISPID_DOM_DATA__TOP           0x00000074
+
+#define DISPID_DOM_ATTRIBUTE           0x00000075
+#define DISPID_DOM_ATTRIBUTE_GETNAME   0x00000076
+#define DISPID_DOM_ATTRIBUTE_SPECIFIED 0x00000077
+#define DISPID_DOM_ATTRIBUTE_VALUE     0x00000078
+#define DISPID_DOM_ATTRIBUTE__TOP      0x00000079
+
+#define DISPID_DOM_TEXT                0x0000007a
+#define DISPID_DOM_TEXT_SPLITTEXT      0x0000007b
+#define DISPID_DOM_TEXT_JOINTEXT       0x0000007c
+#define DISPID_DOM_TEXT__TOP           0x0000007d
+
+#define DISPID_DOM_PI                  0x0000007e
+#define DISPID_DOM_PI_TARGET           0x0000007f
+#define DISPID_DOM_PI_DATA             0x00000080
+#define DISPID_DOM_PI__TOP             0x00000081
+
+#define DISPID_DOM_DOCUMENTTYPE                    0x00000082
+#define DISPID_DOM_DOCUMENTTYPE_NAME               0x00000083
+#define DISPID_DOM_DOCUMENTTYPE_ENTITIES           0x00000084
+#define DISPID_DOM_DOCUMENTTYPE_NOTATIONS          0x00000085
+#define DISPID_DOM_DOCUMENTTYPE__TOP               0x00000086
+
+#define DISPID_DOM_NOTATION            0x00000087
+#define DISPID_DOM_NOTATION_PUBLICID   0x00000088
+#define DISPID_DOM_NOTATION_SYSTEMID   0x00000089
+#define DISPID_DOM_NOTATION__TOP       0x0000008a
+
+#define DISPID_DOM_ENTITY              0x0000008b
+#define DISPID_DOM_ENTITY_PUBLICID     0x0000008c
+#define DISPID_DOM_ENTITY_SYSTEMID     0x0000008d
+#define DISPID_DOM_ENTITY_NOTATIONNAME 0x0000008e
+#define DISPID_DOM_ENTITY__TOP         0x0000008f
+
+#define DISPID_DOM_W3CWRAPPERS_TOP     0x0000008f
+
+#define DISPID_DOM_IMPLEMENTATION              0x00000090
+#define DISPID_DOM_IMPLEMENTATION_HASFEATURE   0x00000091
+#define DISPID_DOM_IMPLEMENTATION__TOP         0x00000092
+
+#define DISPID_DOM__TOP                0x000000af
+
+#define  DISPID_DOM_ERROR              0x000000b0
+#define  DISPID_DOM_ERROR_ERRORCODE    0x000000b1
+#define  DISPID_DOM_ERROR_URL          0x000000b2
+#define  DISPID_DOM_ERROR_REASON       0x000000b3
+#define  DISPID_DOM_ERROR_SRCTEXT      0x000000b4
+#define  DISPID_DOM_ERROR_LINE         0x000000b5
+#define  DISPID_DOM_ERROR_LINEPOS      0x000000b6
+#define  DISPID_DOM_ERROR_FILEPOS      0x000000b7
+#define  DISPID_DOM_ERROR__TOP         0x000000b8
+
+#define  DISPID_XTLRUNTIME                     0x000000b9
+#define  DISPID_XTLRUNTIME_UNIQUEID            0x000000ba
+#define  DISPID_XTLRUNTIME_DEPTH               0x000000bb
+#define  DISPID_XTLRUNTIME_CHILDNUMBER         0x000000bc
+#define  DISPID_XTLRUNTIME_ANCESTORCHILDNUMBER 0x000000bd
+#define  DISPID_XTLRUNTIME_ABSOLUTECHILDNUMBER 0x000000be
+#define  DISPID_XTLRUNTIME_FORMATINDEX         0x000000bf
+#define  DISPID_XTLRUNTIME_FORMATNUMBER        0x000000c0
+#define  DISPID_XTLRUNTIME_FORMATDATE          0x000000c1
+#define  DISPID_XTLRUNTIME_FORMATTIME          0x000000c2
+#define  DISPID_XTLRUNTIME__TOP                0x000000c3
+
+#define  DISPID_XMLDOMEVENT                    0x000000c4
+#define  DISPID_XMLDOMEVENT_ONREADYSTATECHANGE DISPID_READYSTATECHANGE
+#define  DISPID_XMLDOMEVENT_ONDATAAVAILABLE    0x000000c5
+#define  DISPID_XMLDOMEVENT__TOP               0x000000c6
+
+#define DISPID_XMLDOM_DOCUMENT2                0x000000c7
+#define DISPID_XMLDOM_DOCUMENT2_NAMESPACES     0x000000c8
+#define DISPID_XMLDOM_DOCUMENT2_SCHEMAS        0x000000c9
+#define DISPID_XMLDOM_DOCUMENT2_VALIDATE       0x000000ca
+#define DISPID_XMLDOM_DOCUMENT2_SETPROPERTY    0x000000cb
+#define DISPID_XMLDOM_DOCUMENT2_GETPROPERTY    0x000000cc
+#define DISPID_XMLDOM_DOCUMENT2__TOP           0x000000cd
+
+#define DISPID_XMLDOM_SCHEMACOLLECTION                 0x00000002
+#define DISPID_XMLDOM_SCHEMACOLLECTION_ADD             0x00000003
+#define DISPID_XMLDOM_SCHEMACOLLECTION_GET             0x00000004
+#define DISPID_XMLDOM_SCHEMACOLLECTION_REMOVE          0x00000005
+#define DISPID_XMLDOM_SCHEMACOLLECTION_LENGTH          0x00000006
+#define DISPID_XMLDOM_SCHEMACOLLECTION_NAMESPACEURI    0x00000007
+#define DISPID_XMLDOM_SCHEMACOLLECTION_ADDCOLLECTION   0x00000008
+#define DISPID_XMLDOM_SCHEMACOLLECTION__TOP            0x00000009
+
+#define DISPID_XMLDOM_SELECTION                0x0000000a
+#define DISPID_XMLDOM_SELECTION_EXPR           0x0000000b
+#define DISPID_XMLDOM_SELECTION_CONTEXT        0x0000000c
+#define DISPID_XMLDOM_SELECTION_PEEKNODE       0x0000000d
+#define DISPID_XMLDOM_SELECTION_MATCHES        0x0000000e
+#define DISPID_XMLDOM_SELECTION_REMOVENEXT     0x0000000f
+#define DISPID_XMLDOM_SELECTION_REMOVEALL      0x00000010
+#define DISPID_XMLDOM_SELECTION_CLONE          0x00000011
+#define DISPID_XMLDOM_SELECTION_GETPROPERTY    0x00000012
+#define DISPID_XMLDOM_SELECTION_SETPROPERTY    0x00000013
+#define DISPID_XMLDOM_SELECTION__TOP           0x00000014
+
+#define DISPID_XMLDOM_TEMPLATE                 0x00000001
+#define DISPID_XMLDOM_TEMPLATE_STYLESHEET      0x00000002
+#define DISPID_XMLDOM_TEMPLATE_CREATEPROCESSOR 0x00000003
+#define DISPID_XMLDOM_TEMPLATE__TOP            0x00000004
+
+#define DISPID_XMLDOM_PROCESSOR                0x00000001
+#define DISPID_XMLDOM_PROCESSOR_INPUT          0x00000002
+#define DISPID_XMLDOM_PROCESSOR_XSLTEMPLATE    0x00000003
+#define DISPID_XMLDOM_PROCESSOR_SETSTARTMODE   0x00000004
+#define DISPID_XMLDOM_PROCESSOR_STARTMODE      0x00000005
+#define DISPID_XMLDOM_PROCESSOR_STARTMODEURI   0x00000006
+#define DISPID_XMLDOM_PROCESSOR_OUTPUT         0x00000007
+#define DISPID_XMLDOM_PROCESSOR_TRANSFORM      0x00000008
+#define DISPID_XMLDOM_PROCESSOR_RESET          0x00000009
+#define DISPID_XMLDOM_PROCESSOR_READYSTATE     0x0000000a
+#define DISPID_XMLDOM_PROCESSOR_ADDPARAMETER   0x0000000b
+#define DISPID_XMLDOM_PROCESSOR_ADDOBJECT      0x0000000c
+#define DISPID_XMLDOM_PROCESSOR_STYLESHEET     0x0000000d
+#define DISPID_XMLDOM_PROCESSOR__TOP           0x0000000e
+
+#define  DISPID_XMLDSO                         0x10000
+#define  DISPID_XMLDSO_DOCUMENT                0x10001
+#define  DISPID_XMLDSO_JAVADSOCOMPATIBLE       0x10002
+
+/* SAX Defines */
+#define DISPID_SAX_XMLREADER__MIN              0x00000501
+#define DISPID_SAX_XMLREADER__MAX              0x00010000
+#define DISPID_SAX_XMLREADER__BASE             DISPID_SAX_XMLREADER__MIN
+
+#define DISPID_SAX_XMLREADER                   0x00000501
+#define DISPID_SAX_XMLREADER_GETFEATURE        0x00000502
+#define DISPID_SAX_XMLREADER_PUTFEATURE        0x00000503
+#define DISPID_SAX_XMLREADER_GETPROPERTY       0x00000504
+#define DISPID_SAX_XMLREADER_PUTPROPERTY       0x00000505
+#define DISPID_SAX_XMLREADER_ENTITYRESOLVER    0x00000506
+#define DISPID_SAX_XMLREADER_CONTENTHANDLER    0x00000507
+#define DISPID_SAX_XMLREADER_DTDHANDLER        0x00000508
+#define DISPID_SAX_XMLREADER_ERRORHANDLER      0x00000509
+#define DISPID_SAX_XMLREADER_BASEURL           0x0000050A
+#define DISPID_SAX_XMLREADER_SECUREBASEURL     0x0000050B
+#define DISPID_SAX_XMLREADER_PARSE             0x0000050C
+#define DISPID_SAX_XMLREADER_PARSEURL          0x0000050D
+#define DISPID_SAX_XMLREADER_PARENT            0x0000050E
+
+#define DISPID_SAX_XMLFILTER                   0x00000510
+#define DISPID_SAX_XMLFILTER_GETFEATURE        0x00000511
+#define DISPID_SAX_XMLFILTER_PUTFEATURE        0x00000512
+#define DISPID_SAX_XMLFILTER_GETPROPERTY       0x00000513
+#define DISPID_SAX_XMLFILTER_PUTPROPERTY       0x00000514
+#define DISPID_SAX_XMLFILTER_ENTITYRESOLVER    0x00000515
+#define DISPID_SAX_XMLFILTER_CONTENTHANDLER    0x00000516
+#define DISPID_SAX_XMLFILTER_DTDHANDLER        0x00000517
+#define DISPID_SAX_XMLFILTER_ERRORHANDLER      0x00000518
+#define DISPID_SAX_XMLFILTER_BASEURL           0x00000519
+#define DISPID_SAX_XMLFILTER_SECUREBASEURL     0x0000051A
+#define DISPID_SAX_XMLFILTER_PARSE             0x0000051B
+#define DISPID_SAX_XMLFILTER_PARSEURL          0x0000051C
+#define DISPID_SAX_XMLFILTER_PARENT            0x0000051D
+
+#define DISPID_SAX_LOCATOR                     0x00000520
+#define DISPID_SAX_LOCATOR_COLUMNNUMBER        0x00000521
+#define DISPID_SAX_LOCATOR_LINENUMBER          0x00000522
+#define DISPID_SAX_LOCATOR_PUBLICID            0x00000523
+#define DISPID_SAX_LOCATOR_SYSTEMID            0x00000524
+
+#define DISPID_SAX_ENTITYRESOLVER                       0x00000526
+#define DISPID_SAX_ENTITYRESOLVER_RESOLVEENTITY         0x00000527
+
+#define DISPID_SAX_CONTENTHANDLER                       0x00000529
+#define DISPID_SAX_CONTENTHANDLER_DOCUMENTLOCATOR       0x0000052A
+#define DISPID_SAX_CONTENTHANDLER_STARTDOCUMENT         0x0000052B
+#define DISPID_SAX_CONTENTHANDLER_ENDDOCUMENT           0x0000052C
+#define DISPID_SAX_CONTENTHANDLER_STARTPREFIXMAPPING    0x0000052D
+#define DISPID_SAX_CONTENTHANDLER_ENDPREFIXMAPPING      0x0000052E
+#define DISPID_SAX_CONTENTHANDLER_STARTELEMENT          0x0000052F
+#define DISPID_SAX_CONTENTHANDLER_ENDELEMENT            0x00000530
+#define DISPID_SAX_CONTENTHANDLER_CHARACTERS            0x00000531
+#define DISPID_SAX_CONTENTHANDLER_IGNORABLEWHITESPACE   0x00000532
+#define DISPID_SAX_CONTENTHANDLER_PROCESSINGINSTRUCTION 0x00000533
+#define DISPID_SAX_CONTENTHANDLER_SKIPPEDENTITY         0x00000534
+
+#define DISPID_SAX_DTDHANDLER                           0x00000536
+#define DISPID_SAX_DTDHANDLER_NOTATIONDECL              0x00000537
+#define DISPID_SAX_DTDHANDLER_UNPARSEDENTITYDECL        0x00000538
+
+#define DISPID_SAX_ERRORHANDLER                         0x0000053A
+#define DISPID_SAX_ERRORHANDLER_ERROR                   0x0000053B
+#define DISPID_SAX_ERRORHANDLER_FATALERROR              0x0000053C
+#define DISPID_SAX_ERRORHANDLER_IGNORABLEWARNING        0x0000053D
+
+#define DISPID_SAX_ATTRIBUTES                           0x0000053F
+#define DISPID_SAX_ATTRIBUTES_LENGTH                    0x00000540
+#define DISPID_SAX_ATTRIBUTES_GETURI                    0x00000541
+#define DISPID_SAX_ATTRIBUTES_GETLOCALNAME              0x00000542
+#define DISPID_SAX_ATTRIBUTES_GETQNAME                  0x00000543
+#define DISPID_SAX_ATTRIBUTES_GETINDEXFROMNAME          0x00000544
+#define DISPID_SAX_ATTRIBUTES_GETINDEXFROMQNAME         0x00000545
+#define DISPID_SAX_ATTRIBUTES_GETTYPE                   0x00000546
+#define DISPID_SAX_ATTRIBUTES_GETTYPEFROMNAME           0x00000547
+#define DISPID_SAX_ATTRIBUTES_GETTYPEFROMQNAME          0x00000548
+#define DISPID_SAX_ATTRIBUTES_GETVALUE                  0x00000549
+#define DISPID_SAX_ATTRIBUTES_GETVALUEFROMNAME          0x0000054A
+#define DISPID_SAX_ATTRIBUTES_GETVALUEFROMQNAME         0x0000054B
+
+#define DISPID_SAX_LEXICALHANDLER                       0x0000054D
+#define DISPID_SAX_LEXICALHANDLER_STARTDTD              0x0000054E
+#define DISPID_SAX_LEXICALHANDLER_ENDDTD                0x0000054F
+#define DISPID_SAX_LEXICALHANDLER_STARTENTITY           0x00000550
+#define DISPID_SAX_LEXICALHANDLER_ENDENTITY             0x00000551
+#define DISPID_SAX_LEXICALHANDLER_STARTCDATA            0x00000552
+#define DISPID_SAX_LEXICALHANDLER_ENDCDATA              0x00000553
+#define DISPID_SAX_LEXICALHANDLER_COMMENT               0x00000554
+
+#define DISPID_SAX_DECLHANDLER                          0x00000556
+#define DISPID_SAX_DECLHANDLER_ELEMENTDECL              0x00000557
+#define DISPID_SAX_DECLHANDLER_ATTRIBUTEDECL            0x00000558
+#define DISPID_SAX_DECLHANDLER_INTERNALENTITYDECL       0x00000559
+#define DISPID_SAX_DECLHANDLER_EXTERNALENTITYDECL       0x0000055A
+
+#define DISPID_MX_ATTRIBUTES_ADDATTRIBUTE               0x0000055D
+#define DISPID_MX_ATTRIBUTES_CLEAR                      0x0000055E
+#define DISPID_MX_ATTRIBUTES_REMOVEATTRIBUTE            0x0000055F
+#define DISPID_MX_ATTRIBUTES_SETATTRIBUTE               0x00000560
+#define DISPID_MX_ATTRIBUTES_SETATTRIBUTES              0x00000561
+#define DISPID_MX_ATTRIBUTES_SETLOCALNAME               0x00000562
+#define DISPID_MX_ATTRIBUTES_SETQNAME                   0x00000563
+#define DISPID_MX_ATTRIBUTES_SETTYPE                    0x00000564
+#define DISPID_MX_ATTRIBUTES_SETURI                     0x00000565
+#define DISPID_MX_ATTRIBUTES_SETVALUE                   0x00000566
+#define DISPID_MX_ATTRIBUTES_ADDATTRIBUTEFROMINDEX      0x00000567
+
+#define DISPID_MX_WRITER                                0x00000568
+#define DISPID_MX_WRITER_OUTPUT                         0x00000569
+#define DISPID_MX_WRITER_DESTINATION                    0x0000056A
+#define DISPID_MX_WRITER_ENCODING                       0x0000056B
+#define DISPID_MX_WRITER_BYTEORDERMARK                  0x0000056C
+#define DISPID_MX_WRITER_INDENT                         0x0000056D
+#define DISPID_MX_WRITER_STANDALONE                     0x0000056E
+#define DISPID_MX_WRITER_OMITXMLDECLARATION             0x0000056F
+#define DISPID_MX_WRITER_VERSION                        0x00000570
+#define DISPID_MX_WRITER_DISABLEOUTPUTESCAPING          0x00000571
+#define DISPID_MX_WRITER_FLUSH                          0x00000572
+#define DISPID_MX_WRITER_RESET                          0x00000573
+
+#define DISPID_MX_READER_CONTROL                        0x00000575
+#define DISPID_MX_READER_CONTROL_ABORT                  0x00000576
+#define DISPID_MX_READER_CONTROL_RESUME                 0x00000577
+#define DISPID_MX_READER_CONTROL_SUSPEND                0x00000578
+
+
+#endif /* __MSXML2DID_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msxmldid.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msxmldid.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/msxmldid.h	(revision 16410)
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2005 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __MSXMLDID_H__
+#define __MSXMLDID_H__
+
+#define DISPID_XOBJ_MIN                     0x10000
+#define DISPID_XOBJ_MAX                     0x1FFFF
+#define DISPID_XOBJ_BASE                    0x10000
+
+#define DISPID_XMLELEMENTCOLLECTION         0x10000
+#define DISPID_XMLELEMENTCOLLECTION_LENGTH  0x10001
+#define DISPID_XMLELEMENTCOLLECTION_NEWENUM DISPID_NEWENUM
+#define DISPID_XMLELEMENTCOLLECTION_ITEM    0x10003
+
+#define DISPID_XMLDOCUMENT                  0x10064
+#define DISPID_XMLDOCUMENT_ROOT             0x10065
+#define DISPID_XMLDOCUMENT_FILESIZE         0x10066
+#define DISPID_XMLDOCUMENT_FILEMODIFIEDDATE 0x10067
+#define DISPID_XMLDOCUMENT_FILEUPDATEDDATE  0x10068
+#define DISPID_XMLDOCUMENT_URL              0x10069
+#define DISPID_XMLDOCUMENT_MIMETYPE         0x1006a
+#define DISPID_XMLDOCUMENT_READYSTATE       0x1006b
+#define DISPID_XMLDOCUMENT_CREATEELEMENT    0x1006c
+#define DISPID_XMLDOCUMENT_CHARSET          0x1006d
+#define DISPID_XMLDOCUMENT_VERSION          0x1006e
+#define DISPID_XMLDOCUMENT_DOCTYPE          0x1006f
+#define DISPID_XMLDOCUMENT_DTDURL           0x10070
+#define DISPID_XMLDOCUMENT_ASYNC            0x10071
+#define DISPID_XMLDOCUMENT_CASEINSENSITIVE  0x10072
+
+#define DISPID_XMLELEMENT                   0x100c8
+#define DISPID_XMLELEMENT_TAGNAME           0x100c9
+#define DISPID_XMLELEMENT_PARENT            0x100ca
+#define DISPID_XMLELEMENT_SETATTRIBUTE      0x100cb
+#define DISPID_XMLELEMENT_GETATTRIBUTE      0x100cc
+#define DISPID_XMLELEMENT_REMOVEATTRIBUTE   0x100cd
+#define DISPID_XMLELEMENT_CHILDREN          0x100ce
+#define DISPID_XMLELEMENT_TYPE              0x100cf
+#define DISPID_XMLELEMENT_TEXT              0x100d0
+#define DISPID_XMLELEMENT_ADDCHILD          0x100d1
+#define DISPID_XMLELEMENT_REMOVECHILD       0x100d2
+#define DISPID_XMLELEMENT_ATTRIBUTES        0x100d3
+
+#define DISPID_XMLNOTIFSINK                 0x1012c
+#define DISPID_XMLNOTIFSINK_CHILDADDED      0x1012d
+
+#define DISPID_XMLATTRIBUTE                 0x10190
+#define DISPID_XMLATTRIBUTE_NAME            0x10191
+#define DISPID_XMLATTRIBUTE_VALUE           0x10192
+
+#endif /* __MSXMLDID_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/nb30.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/nb30.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/nb30.h	(revision 16410)
@@ -0,0 +1,222 @@
+/*
+ * Copyright (C) 2001 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef NCB_INCLUDED
+#define NCB_INCLUDED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define NCBNAMSZ 16
+#define MAX_LANA 0xfe
+
+#define NCBCALL        0x10
+#define NCBLISTEN      0x11
+#define NCBHANGUP      0x12
+#define NCBSEND        0x14
+#define NCBRECV        0x15
+#define NCBRECVANY     0x16
+#define NCBCHAINSEND   0x17
+#define NCBDGSEND      0x20
+#define NCBDGRECV      0x21
+#define NCBDGSENDBC    0x22
+#define NCBDGRECVBC    0x23
+#define NCBADDNAME     0x30
+#define NCBDELNAME     0x31
+#define NCBRESET       0x32
+#define NCBASTAT       0x33
+#define NCBSSTAT       0x34
+#define NCBCANCEL      0x35
+#define NCBADDGRNAME   0x36
+#define NCBENUM        0x37
+#define NCBUNLINK      0x70
+#define NCBSENDNA      0x71
+#define NCBCHAINSENDNA 0x72
+#define NCBLANSTALERT  0x73
+#define NCBACTION      0x77
+#define NCBFINDNAME    0x78
+#define NCBTRACE       0x79
+
+#define ASYNCH         0x80
+
+typedef struct _NCB
+{
+	UCHAR	ncb_command;
+	UCHAR	ncb_retcode;
+	UCHAR	ncb_lsn;
+	UCHAR	ncb_num;
+	PUCHAR	ncb_buffer;
+	WORD	ncb_length;
+	UCHAR	ncb_callname[NCBNAMSZ];
+	UCHAR	ncb_name[NCBNAMSZ];
+	UCHAR	ncb_rto;
+	UCHAR	ncb_sto;
+	VOID	(CALLBACK *ncb_post)(struct _NCB *);
+	UCHAR	ncb_lana_num;
+	UCHAR	ncb_cmd_cplt;
+#ifdef _WIN64
+	UCHAR	ncb_reserve[18];
+#else
+	UCHAR	ncb_reserve[10];
+#endif
+	HANDLE	ncb_event;
+} NCB, *PNCB;
+
+typedef struct _ADAPTER_STATUS
+{
+	UCHAR   adapter_address[6];
+	UCHAR	rev_major;
+	UCHAR	reserved0;
+	UCHAR	adapter_type;
+	UCHAR	rev_minor;
+	WORD	duration;
+	WORD	frmr_recv;
+	WORD	frmr_xmit;
+	WORD	iframe_recv_error;
+	WORD	xmit_aborts;
+	DWORD	xmit_success;
+	DWORD	recv_success;
+	WORD	iframe_xmit_error;
+	WORD	recv_buffer_unavail;
+	WORD	t1_timeouts;
+	WORD	ti_timeouts;
+	DWORD	reserved1;
+	WORD	free_ncbs;
+	WORD	max_cfg_ncbs;
+	WORD	max_ncbs;
+	WORD	xmit_buf_unavail;
+	WORD	max_dgram_size;
+	WORD	pending_sess;
+	WORD	max_cfg_sess;
+	WORD	max_sess;
+	WORD	max_sess_pkt_size;
+	WORD	name_count;
+} ADAPTER_STATUS, *PADAPTER_STATUS;
+
+typedef struct _NAME_BUFFER
+{
+  UCHAR name[NCBNAMSZ];
+  UCHAR name_num;
+  UCHAR name_flags;
+} NAME_BUFFER, *PNAME_BUFFER;
+
+#define NAME_FLAGS_MASK 0x87
+#define GROUP_NAME      0x80
+#define UNIQUE_NAME     0x00
+#define REGISTERING     0x00
+#define REGISTERED      0x04
+#define DEREGISTERED    0x05
+#define DUPLICATE       0x06
+#define DUPLICATE_DEREG 0x07
+
+typedef struct _LANA_ENUM
+{
+	UCHAR length;
+	UCHAR lana[MAX_LANA+1];
+} LANA_ENUM, *PLANA_ENUM;
+
+typedef struct _FIND_NAME_HEADER
+{
+  WORD  node_count;
+  UCHAR reserved;
+  UCHAR unique_group;
+} FIND_NAME_HEADER, *PFIND_NAME_HEADER;
+
+typedef struct _FIND_NAME_BUFFER
+{
+  UCHAR length;
+  UCHAR access_control;
+  UCHAR frame_control;
+  UCHAR destination_addr[6];
+  UCHAR source_addr[6];
+  UCHAR routing_info[6];
+} FIND_NAME_BUFFER, *PFIND_NAME_BUFFER;
+
+typedef struct _SESSION_HEADER {
+  UCHAR sess_name;
+  UCHAR num_sess;
+  UCHAR rcv_dg_outstanding;
+  UCHAR rcv_any_outstanding;
+} SESSION_HEADER, *PSESSION_HEADER;
+
+typedef struct _SESSION_BUFFER {
+  UCHAR lsn;
+  UCHAR state;
+  UCHAR local_name[NCBNAMSZ];
+  UCHAR remote_name[NCBNAMSZ];
+  UCHAR rcvs_outstanding;
+  UCHAR sends_outstanding;
+} SESSION_BUFFER, *PSESSION_BUFFER;
+
+#define LISTEN_OUTSTANDING  0x01
+#define CALL_PENDING        0x02
+#define SESSION_ESTABLISHED 0x03
+#define HANGUP_PENDING      0x04
+#define HANGUP_COMPLETE     0x05
+#define SESSION_ABORTED     0x06
+
+#define ALL_TRANSPORTS "M\0\0\0"
+
+#define NRC_GOODRET     0x00
+#define NRC_BUFLEN      0x01
+#define NRC_ILLCMD      0x03
+#define NRC_CMDTMO      0x05
+#define NRC_INCOMP      0x06
+#define NRC_BADDR       0x07
+#define NRC_SNUMOUT     0x08
+#define NRC_NORES       0x09
+#define NRC_SCLOSED     0x0a
+#define NRC_CMDCAN      0x0b
+#define NRC_DUPNAME     0x0d
+#define NRC_NAMTFUL     0x0e
+#define NRC_ACTSES      0x0f
+#define NRC_LOCTFUL     0x11
+#define NRC_REMTFUL     0x12
+#define NRC_ILLNN       0x13
+#define NRC_NOCALL      0x14
+#define NRC_NOWILD      0x15
+#define NRC_INUSE       0x16
+#define NRC_NAMERR      0x17
+#define NRC_SABORT      0x18
+#define NRC_NAMCONF     0x19
+#define NRC_IFBUSY      0x21
+#define NRC_TOOMANY     0x22
+#define NRC_BRIDGE      0x23
+#define NRC_CANOCCR     0x24
+#define NRC_CANCEL      0x26
+#define NRC_DUPENV      0x30
+#define NRC_ENVNOTDEF   0x34
+#define NRC_OSRESNOTAV  0x35
+#define NRC_MAXAPPS     0x36
+#define NRC_NOSAPS      0x37
+#define NRC_NORESOURCES 0x38
+#define NRC_INVADDRESS  0x39
+#define NRC_INVDDID     0x3b
+#define NRC_LOCKFAIL    0x3c
+#define NRC_OPENERROR   0x3f
+#define NRC_SYSTEM      0x40
+#define NRC_PENDING     0xff
+
+UCHAR WINAPI Netbios(PNCB pncb);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* NCB_INCLUDED */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ndrtypes.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ndrtypes.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ndrtypes.h	(revision 16410)
@@ -0,0 +1,181 @@
+/*
+ * NDR Types
+ *
+ * Copyright 2006 Robert Shearman (for CodeWeavers)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __NDRTYPES_H__
+#define __NDRTYPES_H__
+
+#include <limits.h>
+
+typedef struct
+{
+    unsigned short MustSize : 1; /* 0x0001 - client interpreter MUST size this
+     *  parameter, other parameters may be skipped, using the value in
+     *  NDR_PROC_PARTIAL_OIF_HEADER::constant_client_buffer_size instead. */
+    unsigned short MustFree : 1; /* 0x0002 - server interpreter MUST size this
+     *  parameter, other parameters may be skipped, using the value in
+     *  NDR_PROC_PARTIAL_OIF_HEADER::constant_server_buffer_size instead. */
+    unsigned short IsPipe : 1; /* 0x0004 - The parameter is a pipe handle */
+    unsigned short IsIn : 1; /* 0x0008 - The parameter is an input */
+    unsigned short IsOut : 1; /* 0x0010 - The parameter is an output */
+    unsigned short IsReturn : 1; /* 0x0020 - The parameter is to be returned */
+    unsigned short IsBasetype : 1; /* 0x0040 - The parameter is simple and has the
+     *  format defined by NDR_PARAM_OIF_BASETYPE rather than by
+     *  NDR_PARAM_OIF_OTHER. */
+    unsigned short IsByValue : 1; /* 0x0080 - Set for compound types being sent by
+     *  value. Can be of type: structure, union, transmit_as, represent_as,
+     *  wire_marshal and SAFEARRAY. */
+    unsigned short IsSimpleRef : 1; /* 0x0100 - parameter that is a reference
+     *  pointer to anything other than another pointer, and which has no
+     *  allocate attributes. */
+    unsigned short IsDontCallFreeInst : 1; /*  0x0200 - Used for some represent_as types
+     *  for when the free instance routine should not be called. */
+    unsigned short SaveForAsyncFinish : 1; /* 0x0400 - Unknown */
+    unsigned short Unused : 2;
+    unsigned short ServerAllocSize : 3; /* 0xe000 - If non-zero
+     *  specifies the size of the object in numbers of 8byte blocks needed.
+     *  It will be stored on the server's stack rather than using an allocate
+     *  call. */
+} PARAM_ATTRIBUTES;
+
+typedef struct
+{
+    unsigned char ServerMustSize : 1; /* 0x01 - the server must perform a
+     *  sizing pass. */
+    unsigned char ClientMustSize : 1; /* 0x02 - the client must perform a
+     *  sizing pass. */
+    unsigned char HasReturn : 1; /* 0x04 - procedure has a return value. */
+    unsigned char HasPipes : 1; /* 0x08 - the pipe package should be used. */
+    unsigned char Unused : 1; /* 0x10 - not used */
+    unsigned char HasAsyncUuid : 1; /* 0x20 - indicates an asynchronous DCOM
+     *  procedure. */
+    unsigned char HasExtensions : 1; /* 0x40 - indicates that Win2000
+     *  extensions are in use. */
+    unsigned char HasAsyncHandle : 1; /* 0x80 - indicates an asynchronous RPC
+     *  procedure. */
+} INTERPRETER_OPT_FLAGS, *PINTERPRETER_OPT_FLAGS;
+
+typedef struct
+{
+    unsigned char HasNewCorrDesc : 1; /* 0x01 - indicates new correlation
+     *  descriptors in use. */
+    unsigned char ClientCorrCheck : 1; /* 0x02 - client needs correlation
+     *  check. */
+    unsigned char ServerCorrCheck : 1; /* 0x04 - server needs correlation
+     *  check. */
+    unsigned char HasNotify : 1; /* 0x08 - should call MIDL [notify]
+     *  routine @ NotifyIndex. */
+    unsigned char HasNotify2 : 1; /* 0x10 - should call MIDL [notify_flag] routine @ 
+     *  NotifyIndex. */
+    unsigned char Unused : 3;
+} INTERPRETER_OPT_FLAGS2, *PINTERPRETER_OPT_FLAGS2;
+
+/* Win2000 extensions */
+typedef struct
+{
+    /* size in bytes of all following extensions */
+    unsigned char Size;
+
+    INTERPRETER_OPT_FLAGS2 Flags2;
+
+    /* client cache size hint */
+    unsigned short ClientCorrHint;
+
+    /* server cache size hint */
+    unsigned short ServerCorrHint;
+
+    /* index of routine in MIDL_STUB_DESC::NotifyRoutineTable to call if
+     * HasNotify or HasNotify2 flag set */
+    unsigned short NotifyIndex;
+} NDR_PROC_HEADER_EXTS;
+
+typedef struct
+{
+    /* size in bytes of all following extensions */
+    unsigned char Size;
+
+    INTERPRETER_OPT_FLAGS2 Flags2;
+
+    /* client cache size hint */
+    unsigned short ClientCorrHint;
+
+    /* server cache size hint */
+    unsigned short ServerCorrHint;
+
+    /* index of routine in MIDL_STUB_DESC::NotifyRoutineTable to call if
+     * HasNotify or HasNotify2 flag set */
+    unsigned short NotifyIndex;
+
+    /* needed only on IA64 to cope with float/register loading */
+    unsigned short FloatArgMask;
+} NDR_PROC_HEADER_EXTS64;
+
+typedef enum
+{
+    FC_BYTE = 0x01, /* 0x01 */
+    FC_CHAR, /* 0x02 */
+    FC_SMALL, /* 0x03 */
+    FC_USMALL, /* 0x04 */
+    FC_WCHAR, /* 0x05 */
+    FC_SHORT, /* 0x06 */
+    FC_USHORT, /* 0x07 */
+    FC_LONG, /* 0x08 */
+    FC_ULONG, /* 0x09 */
+    FC_FLOAT, /* 0x0a */
+    FC_HYPER, /* 0x0b */
+    FC_DOUBLE, /* 0x0c */
+    FC_ENUM16, /* 0x0d */
+    FC_ENUM32, /* 0x0e */
+    FC_IGNORE, /* 0x0f */
+    FC_ERROR_STATUS_T, /* 0x10 */
+
+    FC_RP, /* 0x11 */ /* reference pointer */
+    FC_UP, /* 0x12 */ /* unique pointer */
+    FC_OP, /* 0x13 */ /* object pointer */
+    FC_FP, /* 0x14 */ /* full pointer */
+
+    FC_STRUCT, /* 0x15 */ /* simple structure */
+    FC_PSTRUCT, /* 0x16 */ /* simple structure w/ pointers */
+    FC_CSTRUCT, /* 0x17 */ /* conformant structure */
+    FC_CPSTRUCT, /* 0x18 */ /* conformant structure w/ pointers */
+    FC_CVSTRUCT, /* 0x19 */ /* conformant varying struct */
+    FC_BOGUS_STRUCT, /* 0x1a */ /* complex structure */
+
+    FC_CARRAY, /* 0x1b */ /* conformant array */
+    FC_CVARRAY, /* 0x1c */ /* conformant varying array */
+    FC_SMFARRAY, /* 0x1d */ /* small (<64K) fixed array */
+    FC_LGFARRAY, /* 0x1e */ /* large (>= 64k) fixed array */
+    FC_SMVARRAY, /* 0x1f */ /* small (<64k) varying array */
+    FC_LGVARRAY, /* 0x20 */ /* large (>= 64k) varying array */
+    FC_BOGUS_ARRAY, /* 0x21 */ /* complex array */
+} FORMAT_CHARACTER;
+
+/* flags for all handle types */
+#define HANDLE_PARAM_IS_VIA_PTR 0x80
+#define HANDLE_PARAM_IS_IN      0x40
+#define HANDLE_PARAM_IS_OUT     0x20
+#define HANDLE_PARAM_IS_RETURN  0x10
+
+/* flags for context handles */
+#define NDR_STRICT_CONTEXT_HANDLE           0x08
+#define NDR_CONTEXT_HANDLE_NOSERIALIZE      0x04
+#define NDR_CONTEXT_HANDLE_SERIALIZE        0x02
+#define NDR_CONTEXT_HANDLE_CANNOT_BE_NULL   0x01
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/netfw.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/netfw.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/netfw.idl	(revision 16410)
@@ -0,0 +1,470 @@
+/*
+ * Copyright 2007 Jeff Latimer
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ *****************************************************************************
+ *
+ * The firewall management interface
+ *
+ */
+
+import "icftypes.idl";
+import "oaidl.idl";
+
+[
+   object,
+   uuid(A6207B2E-7CDD-426A-951E-5E1CBC5AFEAD),
+   dual
+]
+interface INetFwIcmpSettings : IDispatch
+{
+    [id(1), propget]
+    HRESULT AllowOutboundDestinationUnreachable([out, retval] VARIANT_BOOL* allow);
+
+    [id(1), propput]
+    HRESULT AllowOutboundDestinationUnreachable( [in] VARIANT_BOOL allow );
+
+    [id(2), propget]
+    HRESULT AllowRedirect( [out, retval] VARIANT_BOOL* allow );
+
+    [id(2), propput]
+    HRESULT AllowRedirect( [in] VARIANT_BOOL allow );
+
+    [id(3), propget]
+    HRESULT AllowInboundEchoRequest( [out, retval] VARIANT_BOOL* allow );
+
+    [id(3), propput]
+    HRESULT AllowInboundEchoRequest( [in] VARIANT_BOOL allow );
+
+    [id(4), propget]
+    HRESULT AllowOutboundTimeExceeded( [out, retval] VARIANT_BOOL* allow );
+
+    [id(4), propput]
+    HRESULT AllowOutboundTimeExceeded( [in] VARIANT_BOOL allow );
+
+    [id(5), propget]
+    HRESULT AllowOutboundParameterProblem( [out, retval] VARIANT_BOOL* allow );
+
+    [id(5), propput]
+    HRESULT AllowOutboundParameterProblem( [in] VARIANT_BOOL allow );
+
+    [id(6), propget]
+    HRESULT AllowOutboundSourceQuench( [out, retval] VARIANT_BOOL* allow );
+
+    [id(6), propput]
+    HRESULT AllowOutboundSourceQuench( [in] VARIANT_BOOL allow );
+
+    [id(7), propget]
+    HRESULT AllowInboundRouterRequest( [out, retval] VARIANT_BOOL* allow );
+
+    [id(7), propput]
+    HRESULT AllowInboundRouterRequest( [in] VARIANT_BOOL allow );
+
+    [id(8), propget]
+    HRESULT AllowInboundTimestampRequest( [out, retval] VARIANT_BOOL* allow );
+
+    [id(8), propput]
+    HRESULT AllowInboundTimestampRequest( [in] VARIANT_BOOL allow );
+
+    [id(9), propget]
+    HRESULT AllowInboundMaskRequest( [out, retval] VARIANT_BOOL* allow );
+
+    [id(9), propput]
+    HRESULT AllowInboundMaskRequest( [in] VARIANT_BOOL allow );
+
+    [id(10), propget]
+    HRESULT AllowOutboundPacketTooBig( [out, retval] VARIANT_BOOL* allow );
+
+    [id(10), propput]
+    HRESULT AllowOutboundPacketTooBig( [in] VARIANT_BOOL allow );
+}
+
+[
+    object,
+    uuid(E0483BA0-47FF-4D9C-A6D6-7741D0B195F7),
+    dual
+]
+interface INetFwOpenPort : IDispatch
+{
+    [id(1), propget]
+    HRESULT Name( [out, retval] BSTR* name );
+
+    [id(1), propput]
+    HRESULT Name( [in] BSTR name );
+
+    [id(2), propget]
+    HRESULT IpVersion( [out, retval] NET_FW_IP_VERSION* ipVersion );
+
+    [id(2), propput]
+    HRESULT IpVersion( [in] NET_FW_IP_VERSION ipVersion );
+
+    [id(3), propget]
+    HRESULT Protocol( [out, retval] NET_FW_IP_PROTOCOL* ipProtocol );
+
+    [id(3), propput]
+    HRESULT Protocol( [in] NET_FW_IP_PROTOCOL ipProtocol );
+
+    [id(4), propget]
+    HRESULT Port( [out, retval] LONG* portNumber );
+
+    [id(4), propput]
+    HRESULT Port( [in] LONG portNumber );
+
+    [id(5), propget]
+    HRESULT Scope( [out, retval] NET_FW_SCOPE* scope );
+
+    [id(5), propput]
+    HRESULT Scope( [in] NET_FW_SCOPE scope );
+
+    [id(6), propget]
+    HRESULT RemoteAddresses( [out, retval] BSTR* remoteAddrs );
+
+    [id(6), propput]
+    HRESULT RemoteAddresses( [in] BSTR remoteAddrs );
+
+    [id(7), propget]
+    HRESULT Enabled( [out, retval] VARIANT_BOOL* enabled );
+
+    [id(7), propput]
+    HRESULT Enabled( [in] VARIANT_BOOL enabled );
+
+    [id(8), propget]
+    HRESULT BuiltIn( [out, retval] VARIANT_BOOL* builtIn );
+}
+
+[
+    object,
+    uuid(C0E9D7FA-E07E-430A-B19A-090CE82D92E2),
+    dual
+]
+interface INetFwOpenPorts : IDispatch
+{
+    [id(1), propget]
+    HRESULT Count( [out, retval] long* count );
+
+    [id(2)]
+    HRESULT Add( [in] INetFwOpenPort* port );
+
+    [id(3)]
+    HRESULT Remove( [in] LONG portNumber, [in] NET_FW_IP_PROTOCOL ipProtocol );
+
+    [id(4)]
+    HRESULT Item( [in] LONG portNumber, [in] NET_FW_IP_PROTOCOL ipProtocol,
+                  [out, retval] INetFwOpenPort** openPort );
+
+    [id(DISPID_NEWENUM), propget, restricted]
+    HRESULT _NewEnum( [out, retval] IUnknown** newEnum );
+}
+
+[
+    object,
+    uuid(79FD57C8-908E-4A36-9888-D5B3F0A444CF),
+    dual
+]
+interface INetFwService : IDispatch
+{
+    [id(1), propget]
+    HRESULT Name( [out, retval] BSTR* name );
+
+    [id(2), propget]
+    HRESULT Type( [out, retval] NET_FW_SERVICE_TYPE* type );
+
+    [id(3), propget]
+    HRESULT Customized( [out, retval] VARIANT_BOOL* customized );
+
+    [id(4), propget]
+    HRESULT IpVersion( [out, retval] NET_FW_IP_VERSION* ipVersion );
+
+    [id(4), propput]
+    HRESULT IpVersion( [in] NET_FW_IP_VERSION ipVersion );
+
+    [id(5), propget]
+    HRESULT Scope( [out, retval] NET_FW_SCOPE* scope );
+
+    [id(5), propput]
+    HRESULT Scope( [in] NET_FW_SCOPE scope );
+
+    [id(6), propget]
+    HRESULT RemoteAddresses( [out, retval] BSTR* remoteAddrs );
+
+    [id(6), propput]
+    HRESULT RemoteAddresses( [in] BSTR remoteAddrs );
+
+    [id(7), propget]
+    HRESULT Enabled( [out, retval] VARIANT_BOOL* enabled );
+
+    [id(7), propput]
+    HRESULT Enabled( [in] VARIANT_BOOL enabled );
+
+    [id(8), propget]
+    HRESULT GloballyOpenPorts( [out, retval] INetFwOpenPorts** openPorts );
+}
+
+[
+    object,
+    uuid(79649BB4-903E-421B-94C9-79848E79F6EE),
+    dual
+]
+interface INetFwServices : IDispatch
+{
+    [id(1), propget]
+    HRESULT Count( [out, retval] long* count );
+
+     [id(2)]
+    HRESULT Item( [in] NET_FW_SERVICE_TYPE svcType,
+                  [out, retval] INetFwService** service );
+
+    [id(DISPID_NEWENUM), propget, restricted]
+    HRESULT _NewEnum( [out, retval] IUnknown** newEnum );
+}
+
+[
+    object,
+    uuid(B5E64FFA-C2C5-444E-A301-FB5E00018050),
+    dual
+]
+interface INetFwAuthorizedApplication : IDispatch
+{
+    [id(1), propget]
+    HRESULT Name( [out, retval] BSTR* name );
+
+    [id(1), propput]
+    HRESULT Name( [in] BSTR name );
+
+    [id(2), propget]
+    HRESULT ProcessImageFileName( [out, retval] BSTR* imageFileName );
+
+    [id(2), propput]
+    HRESULT ProcessImageFileName( [in] BSTR imageFileName );
+
+    [id(3), propget]
+    HRESULT IpVersion( [out, retval] NET_FW_IP_VERSION* ipVersion );
+
+    [id(3), propput]
+    HRESULT IpVersion( [in] NET_FW_IP_VERSION ipVersion );
+
+    [id(4), propget]
+    HRESULT Scope( [out, retval] NET_FW_SCOPE* scope );
+
+    [id(4), propput]
+    HRESULT Scope( [in] NET_FW_SCOPE scope );
+
+    [id(5), propget]
+    HRESULT RemoteAddresses( [out, retval] BSTR* remoteAddrs );
+
+    [id(5), propput]
+    HRESULT RemoteAddresses( [in] BSTR remoteAddrs );
+
+    [id(6), propget]
+    HRESULT Enabled( [out, retval] VARIANT_BOOL* enabled );
+
+    [id(6), propput]
+    HRESULT Enabled( [in] VARIANT_BOOL enabled );
+}
+
+[
+    object,
+    uuid(D4BECDDF-6F73-4A83-B832-9C66874CD20E),
+    dual
+]
+interface INetFwRemoteAdminSettings : IDispatch
+{
+    [id(1), propget]
+    HRESULT IpVersion( [out, retval] NET_FW_IP_VERSION* ipVersion );
+
+    [id(1), propput]
+    HRESULT IpVersion( [in] NET_FW_IP_VERSION ipVersion );
+
+    [id(2), propget]
+    HRESULT Scope( [out, retval] NET_FW_SCOPE* scope );
+
+    [id(2), propput]
+    HRESULT Scope( [in] NET_FW_SCOPE scope );
+
+    [id(3), propget]
+    HRESULT RemoteAddresses( [out, retval] BSTR* remoteAddrs );
+
+    [id(3), propput]
+    HRESULT RemoteAddresses( [in] BSTR remoteAddrs );
+
+    [id(4), propget]
+    HRESULT Enabled( [out, retval] VARIANT_BOOL* enabled );
+
+    [id(4), propput]
+    HRESULT Enabled( [in] VARIANT_BOOL enabled );
+}
+
+
+[
+    object,
+    uuid(644EFD52-CCF9-486C-97A2-39F352570B30),
+    dual
+]
+interface INetFwAuthorizedApplications : IDispatch
+{
+    [id(1), propget]
+    HRESULT Count( [out, retval] long* count );
+
+    [id(2)]
+    HRESULT Add( [in] INetFwAuthorizedApplication* app );
+
+    [id(3)]
+    HRESULT Remove( [in] BSTR imageFileName );
+
+    [id(4)]
+    HRESULT Item( [in] BSTR imageFileName,
+                  [out, retval] INetFwAuthorizedApplication** app );
+
+    [id(DISPID_NEWENUM), propget, restricted]
+    HRESULT _NewEnum( [out, retval] IUnknown** newEnum );
+}
+
+[
+     object,
+     uuid(174A0DDA-E9F9-449D-993B-21AB667CA456),
+     dual
+]
+interface INetFwProfile : IDispatch
+{
+    [id(1), propget]
+    HRESULT Type( [out, retval] NET_FW_PROFILE_TYPE* type );
+
+    [id(2), propget]
+    HRESULT FirewallEnabled( [out, retval] VARIANT_BOOL* enabled );
+
+    [id(2), propput]
+    HRESULT FirewallEnabled( [in] VARIANT_BOOL enabled );
+
+    [id(3), propget]
+    HRESULT ExceptionsNotAllowed( [out, retval] VARIANT_BOOL* notAllowed );
+
+    [id(3), propput]
+    HRESULT ExceptionsNotAllowed( [in] VARIANT_BOOL notAllowed );
+
+    [id(4), propget]
+    HRESULT NotificationsDisabled( [out, retval] VARIANT_BOOL* disabled );
+
+    [id(4), propput]
+    HRESULT NotificationsDisabled( [in] VARIANT_BOOL disabled );
+
+    [id(5), propget]
+    HRESULT UnicastResponsesToMulticastBroadcastDisabled( [out, retval] VARIANT_BOOL* disabled );
+
+    [id(5), propput]
+    HRESULT UnicastResponsesToMulticastBroadcastDisabled( [in] VARIANT_BOOL disabled );
+
+    [id(6), propget]
+    HRESULT RemoteAdminSettings( [out, retval] INetFwRemoteAdminSettings** remoteAdminSettings );
+
+    [id(7), propget]
+    HRESULT IcmpSettings( [out, retval] INetFwIcmpSettings** icmpSettings );
+
+    [id(8), propget]
+    HRESULT GloballyOpenPorts( [out, retval] INetFwOpenPorts** openPorts );
+
+    [id(9), propget]
+    HRESULT Services( [out, retval] INetFwServices** services );
+
+    [id(10), propget]
+    HRESULT AuthorizedApplications( [out, retval] INetFwAuthorizedApplications** apps );
+}
+
+[
+     object,
+     uuid(D46D2478-9AC9-4008-9DC7-5563CE5536CC),
+     dual
+]
+interface INetFwPolicy : IDispatch
+{
+    [id(1), propget]
+    HRESULT CurrentProfile( [out, retval] INetFwProfile** profile );
+
+    [id(2)]
+    HRESULT GetProfileByType( [in] NET_FW_PROFILE_TYPE profileType,
+                              [out, retval] INetFwProfile** profile );
+}
+
+[
+    object,
+    uuid(F7898AF5-CAC4-4632-A2EC-DA06E5111AF2),
+    dual
+]
+interface INetFwMgr : IDispatch
+{
+    [id(1), propget]
+    HRESULT LocalPolicy( [out, retval] INetFwPolicy** localPolicy );
+
+    [id(2), propget]
+    HRESULT CurrentProfileType( [out, retval] NET_FW_PROFILE_TYPE* profileType );
+
+    [id(3)]
+    HRESULT RestoreDefaults();
+
+    [id(4)]
+    HRESULT IsPortAllowed( [in] BSTR imageFileName, [in] NET_FW_IP_VERSION ipVersion,
+                           [in] LONG portNumber, [in] BSTR localAddress,
+                           [in] NET_FW_IP_PROTOCOL ipProtocol, [out] VARIANT* allowed,
+                           [out] VARIANT* restricted );
+
+    [id(5)]
+    HRESULT IsIcmpTypeAllowed( [in] NET_FW_IP_VERSION ipVersion, [in] BSTR localAddress,
+                               [in] BYTE type, [out] VARIANT* allowed,
+                               [out] VARIANT* restricted );
+}
+
+[
+    uuid(DB4F3345-3EF8-45ED-B976-25A6D3B81B71),
+    version(1.0)
+]
+library NetFwPublicTypeLib
+{
+    importlib("stdole2.tlb");
+    interface INetFwRemoteAdminSettings;
+    interface INetFwIcmpSettings;
+    interface INetFwOpenPort;
+    interface INetFwOpenPorts;
+    interface INetFwService;
+    interface INetFwServices;
+    interface INetFwAuthorizedApplication;
+    interface INetFwAuthorizedApplications;
+    interface INetFwProfile;
+    interface INetFwPolicy;
+    interface INetFwMgr;
+
+    [
+        uuid(0CA545C6-37AD-4A6C-BF92-9F7610067EF5)
+    ]
+    coclass NetFwOpenPort
+    {
+        [default] interface INetFwOpenPort;
+    }
+
+    [
+        uuid(EC9846B3-2762-4A6B-A214-6ACB603462D2)
+    ]
+    coclass NetFwAuthorizedApplication
+    {
+        [default] interface INetFwAuthorizedApplication;
+    }
+
+    [
+        uuid(304CE942-6E39-40D8-943A-B913C40C9CD4)
+    ]
+    coclass NetFwMgr
+    {
+        [default] interface INetFwMgr;
+    }
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/npapi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/npapi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/npapi.h	(revision 16410)
@@ -0,0 +1,211 @@
+/*
+ * Copyright (C) 2004 Juan Lang
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __WINE_NPAPI_H__
+#define __WINE_NPAPI_H__
+
+/* capabilities */
+#define WNNC_SPEC_VERSION          0x00000001
+#define WNNC_SPEC_VERSION51        0x00050001
+#define WNNC_NET_TYPE              0x00000002
+#define WNNC_NET_NONE              0x00000000
+
+#define WNNC_DRIVER_VERSION        0x00000003
+
+#define WNNC_USER                  0x00000004
+#define WNNC_USR_GETUSER           0x00000001
+
+#define WNNC_CONNECTION            0x00000006
+#define WNNC_CON_ADDCONNECTION     0x00000001
+#define WNNC_CON_CANCELCONNECTION  0x00000002
+#define WNNC_CON_GETCONNECTIONS    0x00000004
+#define WNNC_CON_ADDCONNECTION3    0x00000008
+#define WNNC_CON_GETPERFORMANCE    0x00000040
+#define WNNC_CON_DEFER             0x00000080
+
+#define WNNC_DIALOG                0x00000008
+#define WNNC_DLG_DEVICEMODE        0x00000001
+#define WNNC_DLG_PROPERTYDIALOG    0x00000020
+#define WNNC_DLG_SEARCHDIALOG      0x00000040
+#define WNNC_DLG_FORMATNETWORKNAME 0x00000080
+#define WNNC_DLG_PERMISSIONEDITOR  0x00000100
+#define WNNC_DLG_GETRESOURCEPARENT 0x00000200
+#define WNNC_DLG_GETRESOURCEINFORMATION 0x00000800
+
+#define WNNC_ADMIN                 0x00000009
+#define WNNC_ADM_GETDIRECTORYTYPE  0x00000001
+#define WNNC_ADM_DIRECTORYNOTIFY   0x00000002
+
+#define WNNC_ENUMERATION           0x0000000b
+#define WNNC_ENUM_GLOBAL           0x00000001
+#define WNNC_ENUM_LOCAL            0x00000002
+#define WNNC_ENUM_CONTEXT          0x00000004
+
+#define WNNC_START                 0x0000000c
+#define WNNC_WAIT_FOR_START        0x00000001
+
+typedef DWORD (APIENTRY *PF_NPGetCaps)(DWORD ndex);
+
+/* get user */
+typedef DWORD (APIENTRY *PF_NPGetUser)(LPWSTR lpName, LPWSTR lpUserName,
+ LPDWORD lpnBufferLen);
+
+/* enumeration-related */
+typedef DWORD (APIENTRY *PF_NPOpenEnum)(DWORD dwScope, DWORD dwType, DWORD dwUsage,
+ LPNETRESOURCEW lpNetResource, LPHANDLE lphEnum);
+typedef DWORD (APIENTRY *PF_NPEnumResource)(HANDLE hEnum, LPDWORD lpcCount,
+ LPVOID lpBuffer, LPDWORD lpBufferSize);
+typedef DWORD (APIENTRY *PF_NPCloseEnum)(HANDLE hEnum);
+typedef DWORD (APIENTRY *PF_NPGetResourceInformation)(LPNETRESOURCEW lpNetResource,
+ LPVOID lpBuffer, LPDWORD lpcbBuffer, LPWSTR* lplpSystem);
+
+/* connection-related */
+typedef DWORD (APIENTRY *PF_NPAddConnection)(LPNETRESOURCEW lpNetResource,
+ LPWSTR lpPassword, LPWSTR lpUserName);
+typedef DWORD (APIENTRY *PF_NPAddConnection3)(HWND hwndOwner,
+ LPNETRESOURCEW lpNetResource, LPWSTR lpPassword, LPWSTR lpUserName,
+ DWORD dwFlags);
+typedef DWORD (APIENTRY *PF_NPCancelConnection)(LPWSTR lpName, BOOL fForce);
+typedef DWORD (APIENTRY *PF_NPGetConnection)(LPWSTR lpLocalName,
+ LPWSTR lpRemoteName, LPDWORD lpnBufferLen);
+
+/* network name manipulation */
+typedef DWORD (APIENTRY *PF_NPGetUniversalName)(LPWSTR lpLocalPath,
+ DWORD dwInfoLevel, LPVOID lpBuffer, LPDWORD lpnBufferSize);
+typedef DWORD (APIENTRY *PF_NPFormatNetworkName)(LPWSTR lpRemoteName,
+ LPWSTR lpFormattedName, LPDWORD lpnLength, DWORD dwFlags,
+ DWORD dwAveCharPerLine);
+
+/* dialogs */
+typedef DWORD (APIENTRY *PF_NPDeviceMode)(HWND hParent);
+
+/* search dialog */
+#define WNSRCH_REFRESH_FIRST_LEVEL 0x00000001
+
+typedef DWORD (APIENTRY *PF_NPSearchDialog)(HWND hwndParent,
+ LPNETRESOURCEW lpNetResource, LPVOID lpBuffer, DWORD cbBuffer,
+ LPDWORD lpnFlags);
+
+/* property dialog */
+
+#define WNTYPE_DRIVE   1
+#define WNTYPE_FILE    2
+#define WNTYPE_PRINTER 3
+#define WNTYPE_COMM    4
+
+#define WNPS_FILE 0
+#define WNPS_DIR  1
+#define WNPS_MULT 2
+
+typedef DWORD (APIENTRY *PF_NPGetPropertyText)(DWORD iButton, DWORD nPropSel,
+ LPWSTR lpName, LPWSTR lpButtonName, DWORD nButtonNameLen, DWORD nType);
+
+typedef DWORD (APIENTRY *PF_NPPropertyDialog)(HWND hwndParent, DWORD iButtonDlg,
+ DWORD nPropSel, LPWSTR lpFileName, DWORD nType);
+
+/* admin */
+#define WNDT_NORMAL  0
+#define WNDT_NETWORK 1
+
+#define WNDN_MKDIR 1
+#define WNDN_RMDIR 2
+#define WNDN_MVDIR 3
+
+typedef DWORD (APIENTRY *PF_NPGetDirectoryType)(LPWSTR lpName, LPINT lpType,
+ BOOL bFlushCache);
+typedef DWORD (APIENTRY *PF_NPDirectoryNotify)(HWND hwnd, LPWSTR lpDir,
+ DWORD dwOper);
+
+/* permission editor dialogs */
+#define WNPERMC_PERM  0x00000001
+#define WNPERMC_AUDIT 0x00000002
+#define WNPERMC_OWNER 0x00000004
+
+typedef DWORD (APIENTRY *PF_NPFMXGetPermCaps)(LPWSTR lpDriveName);
+
+#define WNPERM_DLG_PERM  0
+#define WNPERM_DLG_AUDIT 1
+#define WNPERM_DLG_OWNER 2
+
+typedef DWORD (APIENTRY *PF_NPFMXEditPerm)(LPWSTR lpDriveName, HWND hwndFMX,
+ DWORD nDialogType);
+
+typedef DWORD (APIENTRY *PF_NPFMXGetPermHelp)(LPWSTR lpDriveName,
+ DWORD nDialogType, BOOL fDirectory, LPVOID lpFileNameBuffer,
+ LPDWORD lpBufferSize, LPDWORD lpnHelpContext);
+
+VOID WINAPI WNetSetLastErrorA(DWORD err, LPSTR lpError, LPSTR lpProviders);
+VOID WINAPI WNetSetLastErrorW(DWORD err, LPWSTR lpError, LPWSTR lpProviders);
+#define WNetSetLastError WINELIB_NAME_AW(WNetSetLastError)
+
+/* provider classes */
+#define WN_NETWORK_CLASS         0x00000001
+#define WN_CREDENTIAL_CLASS      0x00000002
+#define WN_PRIMARY_AUTHENT_CLASS 0x00000004
+#define WN_SERVICE_CLASS         0x00000008
+
+#define WN_VALID_LOGON_ACCOUNT   0x00000001
+#define WN_NT_PASSWORD_CHANGED   0x00000002
+
+/* notifications */
+typedef DWORD (APIENTRY *PF_NPLogonNotify)(PLUID lpLogonId,
+ LPCWSTR lpAuthentInfoType, LPVOID lpAuthentInfo,
+ LPCWSTR lpPreviousAuthentInfoType, LPVOID lpPreviousAuthentInfo,
+ LPWSTR lpStationName, LPVOID StationHandle, LPWSTR *lpLogonScript);
+typedef DWORD (APIENTRY *PF_NPPasswordChangeNotify)(LPCWSTR lpAuthentInfoType,
+ LPVOID lpAuthentInfo, LPCWSTR lpPreviousAuthentInfoType,
+ LPVOID lpPreviousAuthentInfo, LPWSTR lpStationName, LPVOID StationHandle,
+ DWORD dwChangeInfo);
+
+#define NOTIFY_PRE  0x00000001
+#define NOTIFY_POST 0x00000002
+
+typedef struct _NOTIFYINFO
+{
+    DWORD  dwNotifyStatus;
+    DWORD  dwOperationStatus;
+    LPVOID lpContext;
+} NOTIFYINFO, *LPNOTIFYINFO;
+
+/* FIXME: NetResource is declared as a NETRESOURCE in psdk, not a NETRESOURCEW,
+ * but how can the type change in a service provider?  Defaulting to wide-char
+ * for consistency with the rest of the api.
+ */
+typedef struct _NOTIFYADD
+{
+    HWND         hwndOwner;
+    NETRESOURCEW NetResource;
+    DWORD        dwAddFlags;
+} NOTIFYADD, *LPNOTIFYADD;
+
+/* FIXME: lpName and lpProvider are declared as LPTSTRs in psdk, but again
+ * for consistency with rest of api defaulting to LPWSTRs.
+ */
+typedef struct _NOTIFYCANCEL
+{
+    LPWSTR lpName;
+    LPWSTR lpProvider;
+    DWORD  dwFlags;
+    BOOL   fForce;
+} NOTIFYCANCEL, *LPNOTIFYCANCEL;
+
+typedef DWORD (APIENTRY *PF_AddConnectNotify)(LPNOTIFYINFO lpNotifyInfo,
+ LPNOTIFYADD lpAddInfo);
+typedef DWORD (APIENTRY *PF_CancelConnectNotify)(LPNOTIFYINFO lpNotifyInfo,
+ LPNOTIFYADD lpAddInfo);
+
+#endif /* ndef __WINE_NPAPI_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/nspapi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/nspapi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/nspapi.h	(revision 16410)
@@ -0,0 +1,205 @@
+/* NSPAPI.H -- winsock 1.1
+ * not supported on win95
+ *
+ * Copyright (C) 2001 Stefan Leichter
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _WINE_NSPAPI_
+#define _WINE_NSPAPI_
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+/*
+ * constants
+ */
+#define XP_CONNECTIONLESS		0x00000001
+#define XP_GUARANTEED_DELIVERY		0x00000002
+#define XP_GUARANTEED_ORDER		0x00000004
+#define XP_MESSAGE_ORIENTED		0x00000008
+#define XP_PSEUDO_STREAM		0x00000010
+#define XP_GRACEFUL_CLOSE		0x00000020
+#define XP_EXPEDITED_DATA		0x00000040
+#define XP_CONNECT_DATA			0x00000080
+#define XP_DISCONNECT_DATA		0x00000100
+#define XP_SUPPORTS_BROADCAST		0x00000200
+#define XP_SUPPORTS_MULTICAST		0x00000400
+#define XP_BANDWITH_ALLOCATION		0x00000800
+#define XP_FRAGMENTATION		0x00001000
+#define XP_ENCRYPTS			0x00002000
+
+/*
+ * structures
+ */
+typedef  struct _PROTOCOL_INFOA
+{
+         DWORD   dwServiceFlags;
+         INT     iAddressFamily;
+         INT     iMaxSockAddr;
+         INT     iMinSockAddr;
+         INT     iSocketType;
+         INT     iProtocol;
+         DWORD   dwMessageSize;
+         LPSTR   lpProtocol;
+} PROTOCOL_INFOA, *PPROTOCOL_INFOA, *LPPROTOCOL_INFOA;
+
+typedef  struct _PROTOCOL_INFOW
+{
+         DWORD   dwServiceFlags;
+         INT     iAddressFamily;
+         INT     iMaxSockAddr;
+         INT     iMinSockAddr;
+         INT     iSocketType;
+         INT     iProtocol;
+         DWORD   dwMessageSize;
+         LPWSTR  lpProtocol;
+} PROTOCOL_INFOW, *PPROTOCOL_INFOW, *LPPROTOCOL_INFOW;
+
+DECL_WINELIB_TYPE_AW(PROTOCOL_INFO)
+DECL_WINELIB_TYPE_AW(PPROTOCOL_INFO)
+DECL_WINELIB_TYPE_AW(LPPROTOCOL_INFO)
+
+typedef struct _SERVICE_ADDRESS
+{
+        DWORD   dwAddressType;
+        DWORD   dwAddressFlags;
+        DWORD   dwAddressLength;
+        DWORD   dwPrincipalLength;
+        BYTE*   lpAddress;
+        BYTE*   lpPrincipal;
+} SERVICE_ADDRESS, *PSERVICE_ADDRESS, *LPSERVICE_ADDRESS;
+
+typedef struct _SERVICE_ADDRESSES
+{
+        DWORD           dwAddressCount;
+        SERVICE_ADDRESS Addresses[1];
+} SERVICE_ADDRESSES, *PSERVICE_ADDRESSES, *LPSERVICE_ADDRESSES;
+
+typedef struct _SERVICE_INFOA
+{
+        LPGUID              lpServiceType;
+        LPSTR               lpServiceName;
+        LPSTR               lpComment;
+        LPSTR               lpLocale;
+        DWORD               dwDisplayHint;
+        DWORD               dwVersion;
+        DWORD               dwTime;
+        LPSTR               lpMachineName;
+        LPSERVICE_ADDRESSES lpServiceAddress;
+        BLOB                ServiceSpecificInfo;
+} SERVICE_INFOA, *PSERVICE_INFOA, *LPSERVICE_INFOA;
+
+typedef struct _SERVICE_INFOW
+{
+        LPGUID              lpServiceType;
+        LPWSTR              lpServiceName;
+        LPWSTR              lpComment;
+        LPWSTR              lpLocale;
+        DWORD               dwDisplayHint;
+        DWORD               dwVersion;
+        DWORD               dwTime;
+        LPSTR               lpMachineName;
+        LPSERVICE_ADDRESSES lpServiceAddress;
+        BLOB                ServiceSpecificInfo; /* May point to SERVICE_TYPE_INFO_ABS */
+} SERVICE_INFOW, *PSERVICE_INFOW, *LPSERVICE_INFOW;
+
+DECL_WINELIB_TYPE_AW(SERVICE_INFO)
+DECL_WINELIB_TYPE_AW(PSERVICE_INFO)
+DECL_WINELIB_TYPE_AW(LPSERVICE_INFO)
+
+typedef struct _SERVICE_TYPE_VALUE_ABSA
+{
+        DWORD   dwNameSpace; /* Name space or set of name spaces */
+        DWORD   dwValueType; /* Type of the value data */
+        DWORD   dwValueSize; /* Size of the value data */
+        LPSTR   lpValueName; /* Name of the value */
+        PVOID   lpValue;     /* Pointer to the value data */
+} SERVICE_TYPE_VALUE_ABSA, *PSERVICE_TYPE_VALUE_ABSA, *LPSERVICE_TYPE_VALUE_ABSA;
+
+typedef struct _SERVICE_TYPE_VALUE_ABSW
+{
+        DWORD   dwNameSpace; /* Name space or set of name spaces */
+        DWORD   dwValueType; /* Type of the value data */
+        DWORD   dwValueSize; /* Size of the value data */
+        LPWSTR  lpValueName; /* Name of the value */
+        PVOID   lpValue;     /* Pointer to the value data */
+} SERVICE_TYPE_VALUE_ABSW, *PSERVICE_TYPE_VALUE_ABSW, *LPSERVICE_TYPE_VALUE_ABSW;
+
+DECL_WINELIB_TYPE_AW(SERVICE_TYPE_VALUE_ABS)
+DECL_WINELIB_TYPE_AW(PSERVICE_TYPE_VALUE_ABS)
+DECL_WINELIB_TYPE_AW(LPSERVICE_TYPE_VALUE_ABS)
+
+typedef struct _SERVICE_TYPE_INFO_ABSA
+{
+        LPSTR                   lpTypeName;     /* Name of the network service type */
+        DWORD                   dwValueCount;   /* Number of SERVICE_TYPE_VALUE_ABS structures */
+        SERVICE_TYPE_VALUE_ABSA Values[1];      /* Array of SERVICE_TYPE_VALUE_ABS structures */
+} SERVICE_TYPE_INFO_ABSA, *PSERVICE_TYPE_INFO_ABSA, *LPSERVICE_TYPE_INFO_ABSA;
+
+typedef struct _SERVICE_TYPE_INFO_ABSW
+{
+        LPWSTR                  lpTypeName;     /* Name of the network service type */
+        DWORD                   dwValueCount;   /* Number of SERVICE_TYPE_VALUE_ABS structures */
+        SERVICE_TYPE_VALUE_ABSW Values[1];      /* Array of SERVICE_TYPE_VALUE_ABS structures */
+} SERVICE_TYPE_INFO_ABSW, *PSERVICE_TYPE_INFO_ABSW, *LPSERVICE_TYPE_INFO_ABSW;
+
+DECL_WINELIB_TYPE_AW(SERVICE_TYPE_INFO_ABS)
+DECL_WINELIB_TYPE_AW(PSERVICE_TYPE_INFO_ABS)
+DECL_WINELIB_TYPE_AW(LPSERVICE_TYPE_INFO_ABS)
+
+typedef void (*LPSERVICE_CALLBACK_PROC)(LPARAM lParam, HANDLE hAsyncTaskHandle);
+
+typedef struct _SERVICE_ASYNC_INFO
+{
+    LPSERVICE_CALLBACK_PROC lpServiceCallbackProc;
+    LPARAM                  lParam;
+    HANDLE                  hAsyncTaskHandle;
+} SERVICE_ASYNC_INFO, *PSERVICE_ASYNC_INFO, *LPSERVICE_ASYNC_INFO;
+
+/*
+ * function prototypes
+ */
+INT WINAPI GetAddressByNameA(DWORD dwNameSpace, LPGUID lpServiceType, LPSTR lpServiceName,
+    LPINT lpiProtocols, DWORD dwResolution, LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,
+    LPVOID lpCsaddrBuffer, LPDWORD lpdwBufferLength, LPSTR lpAliasBuffer,
+    LPDWORD lpdwAliasBufferLength);
+INT WINAPI GetAddressByNameW(DWORD dwNameSpace, LPGUID lpServiceType, LPWSTR lpServiceName,
+    LPINT lpiProtocols, DWORD dwResolution, LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,
+    LPVOID lpCsaddrBuffer, LPDWORD lpdwBufferLength, LPWSTR lpAliasBuffer,
+    LPDWORD lpdwAliasBufferLength);
+#define GetAddressByName WINELIB_NAME_AW(GetAddressByName)
+INT WINAPI GetTypeByNameA(LPSTR lpServiceName, LPGUID lpServiceType);
+INT WINAPI GetTypeByNameW(LPWSTR lpServiceName, LPGUID lpServiceType);
+#define GetTypeByName WINELIB_NAME_AW(GetTypeByName)
+INT WINAPI SetServiceA(DWORD dwNameSpace, DWORD dwOperation, DWORD dwFlags, LPSERVICE_INFOA lpServiceInfo,
+                       LPSERVICE_ASYNC_INFO lpServiceAsyncInfo, LPDWORD lpdwStatusFlags);
+INT WINAPI SetServiceW(DWORD dwNameSpace, DWORD dwOperation, DWORD dwFlags, LPSERVICE_INFOW lpServiceInfo,
+                       LPSERVICE_ASYNC_INFO lpServiceAsyncInfo, LPDWORD lpdwStatusFlags);
+#define SetService WINELIB_NAME_AW(SetService)
+INT WINAPI GetServiceA(DWORD dwNameSpace, LPGUID lpGuid, LPSTR lpServiceName,
+                       DWORD dwProperties, LPVOID lpBuffer, LPDWORD lpdwBufferSize,
+                       LPSERVICE_ASYNC_INFO lpServiceAsyncInfo);
+INT WINAPI GetServiceW(DWORD dwNameSpace, LPGUID lpGuid, LPSTR lpServiceName,
+                       DWORD dwProperties, LPVOID lpBuffer, LPDWORD lpdwBufferSize,
+                       LPSERVICE_ASYNC_INFO lpServiceAsyncInfo);
+#define GetService WINELIB_NAME_AW(GetService)
+
+#ifdef __cplusplus
+}      /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif /* _WINE_NSPAPI_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ntddcdrm.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ntddcdrm.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ntddcdrm.h	(revision 16410)
@@ -0,0 +1,185 @@
+/*
+ * DDK information for CD ROM
+ *
+ * Copyright (C) 2002 Eric Pouech
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __NTDDCDRM_H
+#define __NTDDCDRM_H
+
+#define IOCTL_CDROM_BASE                FILE_DEVICE_CD_ROM
+#define IOCTL_CDROM_UNLOAD_DRIVER       CTL_CODE(IOCTL_CDROM_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_READ_TOC            CTL_CODE(IOCTL_CDROM_BASE, 0x0000, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_GET_CONTROL         CTL_CODE(IOCTL_CDROM_BASE, 0x000D, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_PLAY_AUDIO_MSF      CTL_CODE(IOCTL_CDROM_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_SEEK_AUDIO_MSF      CTL_CODE(IOCTL_CDROM_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_STOP_AUDIO          CTL_CODE(IOCTL_CDROM_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_PAUSE_AUDIO         CTL_CODE(IOCTL_CDROM_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_RESUME_AUDIO        CTL_CODE(IOCTL_CDROM_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_GET_VOLUME          CTL_CODE(IOCTL_CDROM_BASE, 0x0005, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_SET_VOLUME          CTL_CODE(IOCTL_CDROM_BASE, 0x000A, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_READ_Q_CHANNEL      CTL_CODE(IOCTL_CDROM_BASE, 0x000B, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_GET_LAST_SESSION    CTL_CODE(IOCTL_CDROM_BASE, 0x000E, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_RAW_READ            CTL_CODE(IOCTL_CDROM_BASE, 0x000F, METHOD_OUT_DIRECT,  FILE_READ_ACCESS)
+#define IOCTL_CDROM_DISK_TYPE           CTL_CODE(IOCTL_CDROM_BASE, 0x0010, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_CDROM_GET_DRIVE_GEOMETRY  CTL_CODE(IOCTL_CDROM_BASE, 0x0013, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_CDROM_CHECK_VERIFY        CTL_CODE(IOCTL_CDROM_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_MEDIA_REMOVAL       CTL_CODE(IOCTL_CDROM_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_EJECT_MEDIA         CTL_CODE(IOCTL_CDROM_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_LOAD_MEDIA          CTL_CODE(IOCTL_CDROM_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_RESERVE             CTL_CODE(IOCTL_CDROM_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_RELEASE             CTL_CODE(IOCTL_CDROM_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_FIND_NEW_DEVICES    CTL_CODE(IOCTL_CDROM_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#include <ntddstor.h>
+
+#define MAXIMUM_NUMBER_TRACKS 100
+#define MAXIMUM_CDROM_SIZE 804
+
+typedef struct _TRACK_DATA {
+    UCHAR               Reserved;
+    UCHAR               Control : 4;
+    UCHAR               Adr : 4;
+    UCHAR               TrackNumber;
+    UCHAR               Reserved1;
+    UCHAR               Address[4];
+} TRACK_DATA, *PTRACK_DATA;
+
+typedef struct _CDROM_TOC {
+    UCHAR               Length[2];
+    UCHAR               FirstTrack;
+    UCHAR               LastTrack;
+    TRACK_DATA TrackData[MAXIMUM_NUMBER_TRACKS];
+} CDROM_TOC, *PCDROM_TOC;
+
+#define CDROM_TOC_SIZE sizeof(CDROM_TOC)
+
+typedef struct _CDROM_PLAY_AUDIO_MSF {
+    UCHAR               StartingM;
+    UCHAR               StartingS;
+    UCHAR               StartingF;
+    UCHAR               EndingM;
+    UCHAR               EndingS;
+    UCHAR               EndingF;
+} CDROM_PLAY_AUDIO_MSF, *PCDROM_PLAY_AUDIO_MSF;
+
+typedef struct _CDROM_SEEK_AUDIO_MSF {
+    UCHAR               M;
+    UCHAR               S;
+    UCHAR               F;
+} CDROM_SEEK_AUDIO_MSF, *PCDROM_SEEK_AUDIO_MSF;
+
+typedef struct _CDROM_DISK_DATA {
+    ULONG               DiskData;
+} CDROM_DISK_DATA, *PCDROM_DISK_DATA;
+
+#define CDROM_DISK_AUDIO_TRACK      (0x00000001)
+#define CDROM_DISK_DATA_TRACK       (0x00000002)
+
+#define IOCTL_CDROM_SUB_Q_CHANNEL    0x00
+#define IOCTL_CDROM_CURRENT_POSITION 0x01
+#define IOCTL_CDROM_MEDIA_CATALOG    0x02
+#define IOCTL_CDROM_TRACK_ISRC       0x03
+
+typedef struct _CDROM_SUB_Q_DATA_FORMAT {
+    UCHAR               Format;
+    UCHAR               Track;
+} CDROM_SUB_Q_DATA_FORMAT, *PCDROM_SUB_Q_DATA_FORMAT;
+
+typedef struct _SUB_Q_HEADER {
+    UCHAR               Reserved;
+    UCHAR               AudioStatus;
+    UCHAR               DataLength[2];
+} SUB_Q_HEADER, *PSUB_Q_HEADER;
+
+typedef struct _SUB_Q_CURRENT_POSITION {
+    SUB_Q_HEADER        Header;
+    UCHAR               FormatCode;
+    UCHAR               Control : 4;
+    UCHAR               ADR : 4;
+    UCHAR               TrackNumber;
+    UCHAR               IndexNumber;
+    UCHAR               AbsoluteAddress[4];
+    UCHAR               TrackRelativeAddress[4];
+} SUB_Q_CURRENT_POSITION, *PSUB_Q_CURRENT_POSITION;
+
+typedef struct _SUB_Q_MEDIA_CATALOG_NUMBER {
+    SUB_Q_HEADER        Header;
+    UCHAR               FormatCode;
+    UCHAR               Reserved[3];
+    UCHAR               Reserved1 : 7;
+    UCHAR               Mcval : 1;
+    UCHAR               MediaCatalog[15];
+} SUB_Q_MEDIA_CATALOG_NUMBER, *PSUB_Q_MEDIA_CATALOG_NUMBER;
+
+typedef struct _SUB_Q_TRACK_ISRC {
+    SUB_Q_HEADER        Header;
+    UCHAR               FormatCode;
+    UCHAR               Reserved0;
+    UCHAR               Track;
+    UCHAR               Reserved1;
+    UCHAR               Reserved2 : 7;
+    UCHAR               Tcval : 1;
+    UCHAR               TrackIsrc[15];
+} SUB_Q_TRACK_ISRC, *PSUB_Q_TRACK_ISRC;
+
+typedef union _SUB_Q_CHANNEL_DATA {
+    SUB_Q_CURRENT_POSITION      CurrentPosition;
+    SUB_Q_MEDIA_CATALOG_NUMBER  MediaCatalog;
+    SUB_Q_TRACK_ISRC            TrackIsrc;
+} SUB_Q_CHANNEL_DATA, *PSUB_Q_CHANNEL_DATA;
+
+#define AUDIO_STATUS_NOT_SUPPORTED      0x00
+#define AUDIO_STATUS_IN_PROGRESS        0x11
+#define AUDIO_STATUS_PAUSED             0x12
+#define AUDIO_STATUS_PLAY_COMPLETE      0x13
+#define AUDIO_STATUS_PLAY_ERROR         0x14
+#define AUDIO_STATUS_NO_STATUS          0x15
+
+#define ADR_NO_MODE_INFORMATION         0x0
+#define ADR_ENCODES_CURRENT_POSITION    0x1
+#define ADR_ENCODES_MEDIA_CATALOG       0x2
+#define ADR_ENCODES_ISRC                0x3
+
+#define AUDIO_WITH_PREEMPHASIS          0x0
+#define DIGITAL_COPY_PERMITTED          0x2
+#define AUDIO_DATA_TRACK                0x4
+#define TWO_FOUR_CHANNEL_AUDIO          0x8
+
+typedef struct _CDROM_AUDIO_CONTROL {
+    UCHAR               LbaFormat;
+    USHORT              LogicalBlocksPerSecond;
+} CDROM_AUDIO_CONTROL, *PCDROM_AUDIO_CONTROL;
+
+typedef struct _VOLUME_CONTROL {
+    UCHAR               PortVolume[4];
+} VOLUME_CONTROL, *PVOLUME_CONTROL;
+
+typedef enum _TRACK_MODE_TYPE {
+    YellowMode2,
+    XAForm2,
+    CDDA
+} TRACK_MODE_TYPE, *PTRACK_MODE_TYPE;
+
+typedef struct __RAW_READ_INFO {
+    LARGE_INTEGER       DiskOffset;
+    ULONG               SectorCount;
+    TRACK_MODE_TYPE     TrackMode;
+} RAW_READ_INFO, *PRAW_READ_INFO;
+
+#endif /* __NTDDCDRM_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ntddscsi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ntddscsi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ntddscsi.h	(revision 16410)
@@ -0,0 +1,122 @@
+/*
+ * Definitions for scsi media access
+ *
+ * Copyright (C) 2002 Laurent Pinchart
+ * Copyright 2005 Ivan Leo Puoti
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _NTDDSCSI_H_
+#define _NTDDSCSI_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define IOCTL_SCSI_BASE FILE_DEVICE_CONTROLLER
+
+#define IOCTL_SCSI_PASS_THROUGH         CTL_CODE(IOCTL_SCSI_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_SCSI_MINIPORT             CTL_CODE(IOCTL_SCSI_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_SCSI_GET_INQUIRY_DATA     CTL_CODE(IOCTL_SCSI_BASE, 0x0403, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SCSI_GET_CAPABILITIES     CTL_CODE(IOCTL_SCSI_BASE, 0x0404, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SCSI_PASS_THROUGH_DIRECT  CTL_CODE(IOCTL_SCSI_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_SCSI_GET_ADDRESS          CTL_CODE(IOCTL_SCSI_BASE, 0x0406, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SCSI_RESCAN_BUS           CTL_CODE(IOCTL_SCSI_BASE, 0x0407, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SCSI_GET_DUMP_POINTERS    CTL_CODE(IOCTL_SCSI_BASE, 0x0408, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SCSI_FREE_DUMP_POINTERS   CTL_CODE(IOCTL_SCSI_BASE, 0x0409, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_IDE_PASS_THROUGH          CTL_CODE(IOCTL_SCSI_BASE, 0x040a, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+#define SCSI_IOCTL_DATA_OUT             0
+#define SCSI_IOCTL_DATA_IN              1
+#define SCSI_IOCTL_DATA_UNSPECIFIED     2
+
+typedef struct _SCSI_PASS_THROUGH {
+    USHORT       Length;
+    UCHAR        ScsiStatus;
+    UCHAR        PathId;
+    UCHAR        TargetId;
+    UCHAR        Lun;
+    UCHAR        CdbLength;
+    UCHAR        SenseInfoLength;
+    UCHAR        DataIn;
+    ULONG        DataTransferLength;
+    ULONG        TimeOutValue;
+    ULONG_PTR    DataBufferOffset;
+    ULONG        SenseInfoOffset;
+    UCHAR        Cdb[16];
+} SCSI_PASS_THROUGH, *PSCSI_PASS_THROUGH;
+
+typedef struct _SCSI_PASS_THROUGH_DIRECT {
+    USHORT       Length;
+    UCHAR        ScsiStatus;
+    UCHAR        PathId;
+    UCHAR        TargetId;
+    UCHAR        Lun;
+    UCHAR        CdbLength;
+    UCHAR        SenseInfoLength;
+    UCHAR        DataIn;
+    ULONG        DataTransferLength;
+    ULONG        TimeOutValue;
+    PVOID        DataBuffer;
+    ULONG        SenseInfoOffset;
+    UCHAR        Cdb[16];
+} SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT;
+
+typedef struct _SCSI_ADDRESS {
+    ULONG        Length;
+    UCHAR        PortNumber;
+    UCHAR        PathId;
+    UCHAR        TargetId;
+    UCHAR        Lun;
+} SCSI_ADDRESS, *PSCSI_ADDRESS;
+
+typedef struct _IO_SCSI_CAPABILITIES {
+    ULONG       Length;
+    ULONG       MaximumTransferLength;
+    ULONG       MaximumPhysicalPages;
+    ULONG       SupportedAsynchronousEvents;
+    ULONG       AlignmentMask;
+    BOOLEAN     TaggedQueuing;
+    BOOLEAN     AdapterScansDown;
+    BOOLEAN     AdapterUsesPio;
+} IO_SCSI_CAPABILITIES, *PIO_SCSI_CAPABILITIES;
+
+typedef struct _SCSI_BUS_DATA {
+    UCHAR NumberOfLogicalUnits;
+    UCHAR InitiatorBusId;
+    ULONG InquiryDataOffset;
+} SCSI_BUS_DATA, *PSCSI_BUS_DATA;
+
+typedef struct _SCSI_ADAPTER_BUS_INFO {
+    UCHAR NumberOfBuses;
+    SCSI_BUS_DATA BusData[1];
+} SCSI_ADAPTER_BUS_INFO, *PSCSI_ADAPTER_BUS_INFO;
+
+typedef struct _SCSI_INQUIRY_DATA {
+    UCHAR PathId;
+    UCHAR TargetId;
+    UCHAR Lun;
+    BOOLEAN DeviceClaimed;
+    ULONG InquiryDataLength;
+    ULONG NextInquiryDataOffset;
+    UCHAR InquiryData[1];
+} SCSI_INQUIRY_DATA, *PSCSI_INQUIRY_DATA;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NTDDSCSI_H_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ntddstor.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ntddstor.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ntddstor.h	(revision 16410)
@@ -0,0 +1,270 @@
+/*
+ * DDK definitions for storage media access
+ *
+ * Copyright (C) 2002 Eric Pouech
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _NTDDSTOR_H_
+#define _NTDDSTOR_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define IOCTL_STORAGE_BASE FILE_DEVICE_MASS_STORAGE
+
+#define IOCTL_STORAGE_CHECK_VERIFY      CTL_CODE(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_MEDIA_REMOVAL     CTL_CODE(IOCTL_STORAGE_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_EJECT_MEDIA       CTL_CODE(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_LOAD_MEDIA        CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_RESERVE           CTL_CODE(IOCTL_STORAGE_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_RELEASE           CTL_CODE(IOCTL_STORAGE_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_FIND_NEW_DEVICES  CTL_CODE(IOCTL_STORAGE_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_GET_MEDIA_TYPES   CTL_CODE(IOCTL_STORAGE_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_STORAGE_GET_MEDIA_TYPES_EX CTL_CODE(IOCTL_STORAGE_BASE, 0x0301, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_STORAGE_RESET_BUS         CTL_CODE(IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_RESET_DEVICE      CTL_CODE(IOCTL_STORAGE_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_GET_DEVICE_NUMBER CTL_CODE(IOCTL_STORAGE_BASE, 0x0420, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_STORAGE_QUERY_PROPERTY    CTL_CODE(IOCTL_STORAGE_BASE, 0x0500, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+DEFINE_GUID(DiskClassGuid,
+  0x53f56307, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
+DEFINE_GUID(CdRomClassGuid,
+  0x53f56308, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
+DEFINE_GUID(PartitionClassGuid,
+  0x53f5630a, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
+DEFINE_GUID(TapeClassGuid,
+  0x53f5630b, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
+DEFINE_GUID(WriteOnceDiskClassGuid,
+  0x53f5630c, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
+DEFINE_GUID(VolumeClassGuid,
+  0x53f5630d, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
+DEFINE_GUID(MediumChangerClassGuid,
+  0x53f56310, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
+DEFINE_GUID(FloppyClassGuid,
+  0x53f56311, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
+DEFINE_GUID(CdChangerClassGuid,
+  0x53f56312, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
+DEFINE_GUID(StroagePortClassGuid,
+  0x2accfe60, 0xc130, 0x11d2, 0xb0, 0x82, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
+
+typedef struct _STORAGE_DEVICE_NUMBER {
+    DEVICE_TYPE         DeviceType;
+    ULONG               DeviceNumber;
+    ULONG               PartitionNumber;
+} STORAGE_DEVICE_NUMBER, *PSTORAGE_DEVICE_NUMBER;
+
+typedef struct _STORAGE_BUS_RESET_REQUEST {
+    UCHAR               PathId;
+} STORAGE_BUS_RESET_REQUEST, *PSTORAGE_BUS_RESET_REQUEST;
+
+typedef struct _PREVENT_MEDIA_REMOVAL {
+    BOOLEAN             PreventMediaRemoval;
+} PREVENT_MEDIA_REMOVAL, *PPREVENT_MEDIA_REMOVAL;
+
+typedef struct _TAPE_STATISTICS {
+    ULONG               Version;
+    ULONG               Flags;
+    LARGE_INTEGER       RecoveredWrites;
+    LARGE_INTEGER       UnrecoveredWrites;
+    LARGE_INTEGER       RecoveredReads;
+    LARGE_INTEGER       UnrecoveredReads;
+    UCHAR               CompressionRatioReads;
+    UCHAR               CompressionRatioWrites;
+} TAPE_STATISTICS, *PTAPE_STATISTICS;
+
+#define RECOVERED_WRITES_VALID          0x00000001
+#define UNRECOVERED_WRITES_VALID        0x00000002
+#define RECOVERED_READS_VALID           0x00000004
+#define UNRECOVERED_READS_VALID         0x00000008
+#define WRITE_COMPRESSION_INFO_VALID    0x00000010
+#define READ_COMPRESSION_INFO_VALID     0x00000020
+
+typedef struct _TAPE_GET_STATISTICS {
+    ULONG               Operation;
+} TAPE_GET_STATISTICS, *PTAPE_GET_STATISTICS;
+
+#define TAPE_RETURN_STATISTICS          0L
+#define TAPE_RETURN_ENV_INFO            1L
+#define TAPE_RESET_STATISTICS           2L
+
+typedef enum _STORAGE_MEDIA_TYPE {
+    /* see also defines in ntdddisk.h */
+
+    DDS_4mm = 0x20,
+    MiniQic,
+    Travan,
+    QIC,
+    MP_8mm,
+    AME_8mm,
+    AIT1_8mm,
+    DLT,
+    NCTP,
+    IBM_3480,
+    IBM_3490E,
+    IBM_Magstar_3590,
+    IBM_Magstar_MP,
+    STK_DATA_D3,
+    SONY_DTF,
+    DV_6mm,
+    DMI,
+    SONY_D2,
+    CLEANER_CARTRIDGE,
+    CD_ROM,
+    CD_R,
+    CD_RW,
+    DVD_ROM,
+    DVD_R,
+    DVD_RW,
+    MO_3_RW,
+    MO_5_WO,
+    MO_5_RW,
+    MO_5_LIMDOW,
+    PC_5_WO,
+    PC_5_RW,
+    PD_5_RW,
+    ABL_5_WO,
+    PINNACLE_APEX_5_RW,
+    SONY_12_WO,
+    PHILIPS_12_WO,
+    HITACHI_12_WO,
+    CYGNET_12_WO,
+    KODAK_14_WO,
+    MO_NFR_525,
+    NIKON_12_RW,
+    IOMEGA_ZIP,
+    IOMEGA_JAZ,
+    SYQUEST_EZ135,
+    SYQUEST_EZFLYER,
+    SYQUEST_SYJET,
+    AVATAR_F2,
+    MP2_8mm
+} STORAGE_MEDIA_TYPE, *PSTORAGE_MEDIA_TYPE;
+
+#define MEDIA_ERASEABLE         0x00000001
+#define MEDIA_WRITE_ONCE        0x00000002
+#define MEDIA_READ_ONLY         0x00000004
+#define MEDIA_READ_WRITE        0x00000008
+#define MEDIA_WRITE_PROTECTED   0x00000100
+#define MEDIA_CURRENTLY_MOUNTED 0x80000000
+
+typedef struct _DEVICE_MEDIA_INFO {
+    union {
+        struct {
+            LARGE_INTEGER       Cylinders;
+            STORAGE_MEDIA_TYPE  MediaType;
+            ULONG               TracksPerCylinder;
+            ULONG               SectorsPerTrack;
+            ULONG               BytesPerSector;
+            ULONG               NumberMediaSides;
+            ULONG               MediaCharacteristics;
+        } DiskInfo;
+        struct {
+            LARGE_INTEGER       Cylinders;
+            STORAGE_MEDIA_TYPE  MediaType;
+            ULONG               TracksPerCylinder;
+            ULONG               SectorsPerTrack;
+            ULONG               BytesPerSector;
+            ULONG               NumberMediaSides;
+            ULONG               MediaCharacteristics;
+        } RemovableDiskInfo;
+        struct {
+            STORAGE_MEDIA_TYPE  MediaType;
+            ULONG               MediaCharacteristics;
+            ULONG               CurrentBlockSize;
+        } TapeInfo;
+    } DeviceSpecific;
+} DEVICE_MEDIA_INFO, *PDEVICE_MEDIA_INFO;
+
+typedef struct _GET_MEDIA_TYPES {
+    ULONG               DeviceType;
+    ULONG               MediaInfoCount;
+    DEVICE_MEDIA_INFO   MediaInfo[1];
+} GET_MEDIA_TYPES, *PGET_MEDIA_TYPES;
+
+typedef enum _STORAGE_QUERY_TYPE {
+    PropertyStandardQuery = 0,
+    PropertyExistsQuery,
+    PropertyMaskQuery,
+    PropertyQueryMaxDefined
+} STORAGE_QUERY_TYPE, *PSTORAGE_QUERY_TYPE;
+
+typedef enum _STORAGE_PROPERTY_ID {
+    StorageDeviceProperty = 0,
+    StorageAdapterProperty
+} STORAGE_PROPERTY_ID, *PSTORAGE_PROPERTY_ID;
+
+typedef struct _STORAGE_PROPERTY_QUERY {
+    STORAGE_PROPERTY_ID         PropertyId;
+    STORAGE_QUERY_TYPE          QueryType;
+    UCHAR                       AdditionalParameters[1];
+} STORAGE_PROPERTY_QUERY, *PSTORAGE_PROPERTY_QUERY;
+
+typedef struct _STORAGE_DESCRIPTOR_HEADER {
+    ULONG                       Version;
+    ULONG                       Size;
+} STORAGE_DESCRIPTOR_HEADER, *PSTORAGE_DESCRIPTOR_HEADER;
+
+typedef enum _STORAGE_BUS_TYPE {
+    BusTypeUnknown = 0x00,
+    BusTypeScsi,
+    BusTypeAtapi,
+    BusTypeAta,
+    BusType1394,
+    BusTypeSsa,
+    BusTypeFibre,
+    BusTypeUsb,
+    BusTypeRAID,
+    BusTypeMaxReserved = 0x7F
+} STORAGE_BUS_TYPE, *PSTORAGE_BUS_TYPE;
+
+typedef struct _STORAGE_DEVICE_DESCRIPTOR {
+    ULONG                       Version;
+    ULONG                       Size;
+    UCHAR                       DeviceType;
+    UCHAR                       DeviceTypeModifier;
+    BOOLEAN                     RemovableMedia;
+    BOOLEAN                     CommandQueueing;
+    ULONG                       VendorIdOffset;
+    ULONG                       ProductIdOffset;
+    ULONG                       ProductRevisionOffset;
+    ULONG                       SerialNumberOffset;
+    STORAGE_BUS_TYPE            BusType;
+    ULONG                       RawPropertiesLength;
+    UCHAR                       RawDeviceProperties[1];
+} STORAGE_DEVICE_DESCRIPTOR, *PSTORAGE_DEVICE_DESCRIPTOR;
+
+typedef struct _STORAGE_ADAPTER_DESCRIPTOR {
+    ULONG                       Version;
+    ULONG                       Size;
+    ULONG                       MaximumTransferLength;
+    ULONG                       MaximumPhysicalPages;
+    ULONG                       AlignmentMask;
+    BOOLEAN                     AdapterUsesPio;
+    BOOLEAN                     AdapterScansDown;
+    BOOLEAN                     CommandQueueing;
+    BOOLEAN                     AcceleratedTransfer;
+    BOOLEAN                     BusType;
+    USHORT                      BusMajorVersion;
+    USHORT                      BusMinorVersion;
+} STORAGE_ADAPTER_DESCRIPTOR, *PSTORAGE_ADAPTER_DESCRIPTOR;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NTDDSTOR_H_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ntdsapi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ntdsapi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ntdsapi.h	(revision 16410)
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2006 Dmitry Timoshkov
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_NTDSAPI_H
+#define __WINE_NTDSAPI_H
+
+/* FIXME: #include <schedule.h> */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+DWORD WINAPI DsMakeSpnA(LPCSTR, LPCSTR, LPCSTR, USHORT, LPCSTR, DWORD*, LPSTR);
+DWORD WINAPI DsMakeSpnW(LPCWSTR, LPCWSTR, LPCWSTR, USHORT, LPCWSTR, DWORD*, LPWSTR);
+#define DsMakeSpn WINELIB_NAME_AW(DsMakeSpn)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_NTDSAPI_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ntquery.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ntquery.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ntquery.h	(revision 16410)
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2006 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_NTQUERY_H__
+#define __WINE_NTQUERY_H__
+
+/* FIXME: #include <stgprop.h> */
+
+#include <pshpack4.h>
+
+typedef struct _CI_STATE
+{
+    DWORD cbStruct;
+    DWORD cWordList;
+    DWORD cPersistentIndex;
+    DWORD cQueries;
+    DWORD cDocuments;
+    DWORD cFreshTest;
+    DWORD dwMergeProgress;
+    DWORD eState;
+    DWORD cFilteredDocuments;
+    DWORD cTotalDocuments;
+    DWORD cPendingScans;
+    DWORD dwIndexSize;
+    DWORD cUniqueKeys;
+    DWORD cSeqQDocuments;
+    DWORD dwPropCacheSize;
+} CI_STATE;
+
+#include <poppack.h>
+
+#define PSGUID_STORAGE {0xb725f130, 0x47ef, 0x101a, {0xa5, 0xf1, 0x02, 0x60, 0x8c, 0x9e, 0xeb, 0xac}}
+#define PID_STG_DIRECTORY      ((PROPID)0x02)
+#define PID_STG_CLASSID        ((PROPID)0x03)
+#define PID_STG_STORAGETYPE    ((PROPID)0x04)
+#define PID_STG_VOLUME_ID      ((PROPID)0x05)
+#define PID_STG_PARENT_WORKID  ((PROPID)0x06)
+#define PID_STG_SECONDARYSTORE ((PROPID)0x07)
+#define PID_STG_FILEINDEX      ((PROPID)0x08)
+#define PID_STG_LASTCHANGEUSN  ((PROPID)0x09)
+#define PID_STG_NAME           ((PROPID)0x0a)
+#define PID_STG_PATH           ((PROPID)0x0b)
+#define PID_STG_SIZE           ((PROPID)0x0c)
+#define PID_STG_ATTRIBUTES     ((PROPID)0x0d)
+#define PID_STG_WRITETIME      ((PROPID)0x0e)
+#define PID_STG_CREATETIME     ((PROPID)0x0f)
+#define PID_STG_ACCESSTIME     ((PROPID)0x10)
+#define PID_STG_CHANGETIME     ((PROPID)0x11)
+#define PID_STG_CONTENTS       ((PROPID)0x13)
+#define PID_STG_SHORTNAME      ((PROPID)0x14)
+#define PID_STG_MAX            PID_STG_SHORTNAME
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+STDAPI CIState(WCHAR const *, WCHAR const *, CI_STATE *);
+STDAPI LocateCatalogsA(CHAR const *, ULONG, CHAR *, ULONG *, CHAR *, ULONG *);
+STDAPI LocateCatalogsW(WCHAR const *, ULONG, WCHAR *, ULONG *, WCHAR *, ULONG *);
+#define LocateCatalogs WINELIB_NAME_AW(LocateCatalogs)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ntsecapi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ntsecapi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ntsecapi.h	(revision 16410)
@@ -0,0 +1,386 @@
+/*
+ * Copyright (C) 1999 Juergen Schmied
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_NTSECAPI_H
+#define __WINE_NTSECAPI_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+/* Policy access rights */
+#define POLICY_VIEW_LOCAL_INFORMATION           0x00000001L
+#define POLICY_VIEW_AUDIT_INFORMATION           0x00000002L
+#define POLICY_GET_PRIVATE_INFORMATION          0x00000004L
+#define POLICY_TRUST_ADMIN                      0x00000008L
+#define POLICY_CREATE_ACCOUNT                   0x00000010L
+#define POLICY_CREATE_SECRET                    0x00000020L
+#define POLICY_CREATE_PRIVILEGE                 0x00000040L
+#define POLICY_SET_DEFAULT_QUOTA_LIMITS         0x00000080L
+#define POLICY_SET_AUDIT_REQUIREMENTS           0x00000100L
+#define POLICY_AUDIT_LOG_ADMIN                  0x00000200L
+#define POLICY_SERVER_ADMIN                     0x00000400L
+#define POLICY_LOOKUP_NAMES                     0x00000800L
+#define POLICY_NOTIFICATION                     0x00001000L
+
+#define POLICY_ALL_ACCESS                       ( \
+    STANDARD_RIGHTS_REQUIRED | \
+    POLICY_VIEW_LOCAL_INFORMATION | \
+    POLICY_VIEW_AUDIT_INFORMATION | \
+    POLICY_GET_PRIVATE_INFORMATION | \
+    POLICY_TRUST_ADMIN | \
+    POLICY_CREATE_ACCOUNT | \
+    POLICY_CREATE_SECRET | \
+    POLICY_CREATE_PRIVILEGE | \
+    POLICY_SET_DEFAULT_QUOTA_LIMITS | \
+    POLICY_SET_AUDIT_REQUIREMENTS | \
+    POLICY_AUDIT_LOG_ADMIN | \
+    POLICY_SERVER_ADMIN | \
+    POLICY_LOOKUP_NAMES)
+
+
+#define POLICY_READ                             ( \
+    STANDARD_RIGHTS_READ | \
+    POLICY_VIEW_AUDIT_INFORMATION | \
+    POLICY_GET_PRIVATE_INFORMATION)
+
+#define POLICY_WRITE                            ( \
+   STANDARD_RIGHTS_WRITE | \
+   POLICY_TRUST_ADMIN | \
+   POLICY_CREATE_ACCOUNT | \
+   POLICY_CREATE_SECRET | \
+   POLICY_CREATE_PRIVILEGE | \
+   POLICY_SET_DEFAULT_QUOTA_LIMITS | \
+   POLICY_SET_AUDIT_REQUIREMENTS | \
+   POLICY_AUDIT_LOG_ADMIN | \
+   POLICY_SERVER_ADMIN)
+
+#define POLICY_EXECUTE                          ( \
+   STANDARD_RIGHTS_EXECUTE | \
+   POLICY_VIEW_LOCAL_INFORMATION | \
+   POLICY_LOOKUP_NAMES)
+
+#define POLICY_AUDIT_EVENT_UNCHANGED 0x00000000L
+#define POLICY_AUDIT_EVENT_SUCCESS   0x00000001L
+#define POLICY_AUDIT_EVENT_FAILURE   0x00000002L
+#define POLICY_AUDIT_EVENT_NONE      0x00000004L
+
+#define POLICY_AUDIT_EVENT_MASK (POLICY_AUDIT_EVENT_SUCCESS | \
+                                 POLICY_AUDIT_EVENT_FAILURE | \
+                                 POLICY_AUDIT_EVENT_NONE)
+
+/* logon rights names */
+#define SE_BATCH_LOGON_NAME \
+ TEXT("SeBatchLogonRight")
+#define SE_INTERACTIVE_LOGON_NAME \
+ TEXT("SeInteractiveLogonRight")
+#define SE_NETWORK_LOGON_NAME \
+ TEXT("SeNetworkLogonRight")
+#define SE_REMOTE_INTERACTIVE_LOGON_NAME \
+ TEXT("SeRemoteInteractiveLogonRight")
+#define SE_SERVICE_LOGON_NAME \
+ TEXT("SeServiceLogonRight")
+#define SE_DENY_BATCH_LOGON_NAME \
+ TEXT("SeDenyBatchLogonRight")
+#define SE_DENY_INTERACTIVE_LOGON_NAME \
+ TEXT("SeDenyInteractiveLogonRight")
+#define SE_DENY_NETWORK_LOGON_NAME \
+ TEXT("SeDenyNetworkLogonRight")
+#define SE_DENY_REMOTE_INTERACTIVE_LOGON_NAME \
+ TEXT("SeDenyRemoteInteractiveLogonRight")
+#define SE_DENY_SERVICE_LOGON_NAME \
+ TEXT("SeDenyServiceLogonRight")
+
+#ifndef WINE_NTSTATUS_DECLARED
+#define WINE_NTSTATUS_DECLARED
+typedef LONG NTSTATUS;
+#endif
+#ifndef WINE_PNTSTATUS_DECLARED
+#define WINE_PNTSTATUS_DECLARED
+typedef NTSTATUS *PNTSTATUS;
+#endif
+
+typedef enum _SECURITY_LOGON_TYPE
+{
+    Interactive = 2,
+    Network,
+    Batch,
+    Service,
+    Proxy
+} SECURITY_LOGON_TYPE, *PSECURITY_LOGON_TYPE;
+
+typedef enum _POLICY_AUDIT_EVENT_TYPE
+{
+    AuditCategorySystem,
+    AuditCategoryLogon,
+    AuditCategoryObjectAccess,
+    AuditCategoryPrivilegeUse,
+    AuditCategoryDetailedTracking,
+    AuditCategoryPolicyChange,
+    AuditCategoryAccountManagement
+} POLICY_AUDIT_EVENT_TYPE, *PPOLICY_AUDIT_EVENT_TYPE;
+
+#ifndef __STRING_DEFINED__
+#define __STRING_DEFINED__
+typedef struct _STRING {
+  USHORT Length;
+  USHORT MaximumLength;
+  PCHAR Buffer;
+} STRING, *PSTRING;
+#endif
+
+#ifndef __UNICODE_STRING_DEFINED__
+#define __UNICODE_STRING_DEFINED__
+typedef struct _UNICODE_STRING {
+  USHORT Length;        /* bytes */
+  USHORT MaximumLength; /* bytes */
+  PWSTR  Buffer;
+} UNICODE_STRING, *PUNICODE_STRING;
+#endif
+
+#ifndef __OBJECT_ATTRIBUTES_DEFINED__
+#define __OBJECT_ATTRIBUTES_DEFINED__
+typedef struct _OBJECT_ATTRIBUTES {
+  ULONG Length;
+  HANDLE RootDirectory;
+  PUNICODE_STRING ObjectName;
+  ULONG Attributes;
+  PVOID SecurityDescriptor;       /* type SECURITY_DESCRIPTOR */
+  PVOID SecurityQualityOfService; /* type SECURITY_QUALITY_OF_SERVICE */
+} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
+#endif
+
+typedef UNICODE_STRING LSA_UNICODE_STRING, *PLSA_UNICODE_STRING;
+typedef STRING LSA_STRING, *PLSA_STRING;
+typedef OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES, *PLSA_OBJECT_ATTRIBUTES;
+
+typedef PVOID LSA_HANDLE, *PLSA_HANDLE;
+typedef ULONG LSA_ENUMERATION_HANDLE, *PLSA_ENUMERATION_HANDLE;
+typedef ULONG LSA_OPERATIONAL_MODE, *PLSA_OPERATIONAL_MODE;
+
+typedef enum
+{
+	PolicyAuditLogInformation = 1,
+	PolicyAuditEventsInformation,
+	PolicyPrimaryDomainInformation,
+	PolicyPdAccountInformation,
+	PolicyAccountDomainInformation,
+	PolicyLsaServerRoleInformation,
+	PolicyReplicaSourceInformation,
+	PolicyDefaultQuotaInformation,
+	PolicyModificationInformation,
+	PolicyAuditFullSetInformation,
+	PolicyAuditFullQueryInformation,
+	PolicyDnsDomainInformation
+} POLICY_INFORMATION_CLASS, *PPOLICY_INFORMATION_CLASS;
+
+typedef ULONG POLICY_AUDIT_EVENT_OPTIONS, *PPOLICY_AUDIT_EVENT_OPTIONS;
+
+typedef struct _POLICY_AUDIT_EVENTS_INFO
+{
+	BOOLEAN AuditingMode;
+	PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions;
+	ULONG MaximumAuditEventCount;
+} POLICY_AUDIT_EVENTS_INFO, *PPOLICY_AUDIT_EVENTS_INFO;
+
+typedef struct _POLICY_PRIMARY_DOMAIN_INFO
+{
+    LSA_UNICODE_STRING Name;
+    PSID Sid;
+} POLICY_PRIMARY_DOMAIN_INFO, *PPOLICY_PRIMARY_DOMAIN_INFO;
+
+typedef struct _POLICY_ACCOUNT_DOMAIN_INFO
+{
+    LSA_UNICODE_STRING DomainName;
+    PSID DomainSid;
+} POLICY_ACCOUNT_DOMAIN_INFO, *PPOLICY_ACCOUNT_DOMAIN_INFO;
+
+typedef struct _POLICY_DNS_DOMAIN_INFO
+{
+    LSA_UNICODE_STRING Name;
+    LSA_UNICODE_STRING DnsDomainName;
+    LSA_UNICODE_STRING DnsForestName;
+    GUID DomainGuid;
+    PSID Sid;
+} POLICY_DNS_DOMAIN_INFO, *PPOLICY_DNS_DOMAIN_INFO;
+
+typedef enum _POLICY_LSA_SERVER_ROLE
+{
+    PolicyServerRoleBackup = 2,
+    PolicyServerRolePrimary
+} POLICY_LSA_SERVER_ROLE, *PPOLICY_LSA_SERVER_ROLE;
+
+typedef struct _POLICY_LSA_SERVER_ROLE_INFO
+{
+    POLICY_LSA_SERVER_ROLE LsaServerRole;
+} POLICY_LSA_SERVER_ROLE_INFO, *PPOLICY_LSA_SERVER_ROLE_INFO;
+
+typedef struct _POLICY_MODIFICATION_INFO
+{
+    LARGE_INTEGER ModifiedId;
+    LARGE_INTEGER DatabaseCreationTime;
+} POLICY_MODIFICATION_INFO, *PPOLICY_MODIFICATION_INFO;
+
+typedef struct _SECURITY_LOGON_SESSION_DATA {
+    ULONG Size;
+    LUID LogonId;
+    LSA_UNICODE_STRING UserName;
+    LSA_UNICODE_STRING LogonDomain;
+    LSA_UNICODE_STRING AuthenticationPackage;
+    ULONG LogonType;
+    ULONG Session;
+    PSID Sid;
+    LARGE_INTEGER LogonTime;
+    LSA_UNICODE_STRING LogonServer;
+    LSA_UNICODE_STRING DnsDomainName;
+    LSA_UNICODE_STRING Upn;
+} SECURITY_LOGON_SESSION_DATA, *PSECURITY_LOGON_SESSION_DATA;
+
+typedef struct
+{
+    SID_NAME_USE Use;
+    LSA_UNICODE_STRING Name;
+    LONG DomainIndex;
+} LSA_TRANSLATED_NAME, *PLSA_TRANSLATED_NAME;
+
+typedef struct
+{
+    LSA_UNICODE_STRING Name;
+    PSID Sid;
+} LSA_TRUST_INFORMATION, *PLSA_TRUST_INFORMATION;
+
+typedef struct
+{
+    ULONG Entries;
+    PLSA_TRUST_INFORMATION Domains;
+} LSA_REFERENCED_DOMAIN_LIST, *PLSA_REFERENCED_DOMAIN_LIST;
+
+typedef struct _LSA_TRANSLATED_SID
+{
+    SID_NAME_USE Use;
+    ULONG RelativeId;
+    LONG DomainIndex;
+} LSA_TRANSLATED_SID, *PLSA_TRANSLATED_SID;
+
+typedef struct _TRUSTED_DOMAIN_INFORMATION_EX
+{
+    LSA_UNICODE_STRING Name;
+    LSA_UNICODE_STRING FlatName;
+    PSID Sid;
+    ULONG TrustDirection;
+    ULONG TrustType;
+    ULONG TrustAttributes;
+} TRUSTED_DOMAIN_INFORMATION_EX, *PTRUSTED_DOMAIN_INFORMATION_EX;
+
+typedef struct _LSA_AUTH_INFORMATION
+{
+    LARGE_INTEGER LastUpdateTime;
+    ULONG AuthType;
+    ULONG AuthInfoLength;
+    PUCHAR AuthInfo;
+} LSA_AUTH_INFORMATION, *PLSA_AUTH_INFORMATION;
+
+typedef struct _TRUSTED_DOMAIN_AUTH_INFORMATION
+{
+    ULONG IncomingAuthInfos;
+    PLSA_AUTH_INFORMATION IncomingAuthenticationInformation;
+    PLSA_AUTH_INFORMATION IncomingPreviousAuthenticationInformation;
+    ULONG OutgoingAuthInfos;
+    PLSA_AUTH_INFORMATION OutgoingAuthenticationInformation;
+    PLSA_AUTH_INFORMATION OutgoingPreviousAuthenticationInformation;
+} TRUSTED_DOMAIN_AUTH_INFORMATION, *PTRUSTED_DOMAIN_AUTH_INFORMATION;
+
+typedef struct _LSA_TRANSLATED_SID2
+{
+    SID_NAME_USE Use;
+    PSID Sid;
+    LONG DomainIndex;
+    ULONG Flags;
+} LSA_TRANSLATED_SID2, *PLSA_TRANSLATED_SID2;
+
+typedef enum _TRUSTED_INFORMATION_CLASS
+{
+    TrustedDomainNameInformation = 1,
+    TrustedControllersInformation,
+    TrustedPosixOffsetInformation,
+    TrustedPasswordInformation,
+    TrustedDomainInformationBasic,
+    TrustedDomainInformationEx,
+    TrustedDomainAuthInformation,
+    TrustedDomainFullInformation
+} TRUSTED_INFORMATION_CLASS, *PTRUSTED_INFORMATION_CLASS;
+
+typedef enum _POLICY_NOTIFICATION_INFORMATION_CLASS
+{
+    PolicyNotifyAuditEventsInformation = 1,
+    PolicyNotifyAccountDomainInformation,
+    PolicyNotifyServerRoleInformation,
+    PolicyNotifyDnsDomainInformation,
+    PolicyNotifyDomainEfsInformation,
+    PolicyNotifyDomainKerberosTicketInformation,
+    PolicyNotifyMachineAccountPasswordInformation
+} POLICY_NOTIFICATION_INFORMATION_CLASS, *PPOLICY_NOTIFICATION_INFORMATION_CLASS;
+
+#define RtlGenRandom                    SystemFunction036
+
+BOOLEAN WINAPI RtlGenRandom(PVOID,ULONG);
+
+NTSTATUS WINAPI LsaAddAccountRights(LSA_HANDLE,PSID,PLSA_UNICODE_STRING,ULONG);
+NTSTATUS WINAPI LsaCallAuthenticationPackage(HANDLE,ULONG,PVOID,ULONG,PVOID*,PULONG,PNTSTATUS);
+NTSTATUS WINAPI LsaClose(LSA_HANDLE);
+NTSTATUS WINAPI LsaConnectUntrusted(PHANDLE);
+NTSTATUS WINAPI LsaCreateTrustedDomainEx(LSA_HANDLE,PTRUSTED_DOMAIN_INFORMATION_EX,
+                                         PTRUSTED_DOMAIN_AUTH_INFORMATION,ACCESS_MASK,PLSA_HANDLE);
+NTSTATUS WINAPI LsaDeleteTrustedDomain(LSA_HANDLE,PSID);
+NTSTATUS WINAPI LsaDeregisterLogonProcess(HANDLE);
+NTSTATUS WINAPI LsaEnumerateAccountRights(LSA_HANDLE,PSID,PLSA_UNICODE_STRING*,PULONG);
+NTSTATUS WINAPI LsaEnumerateAccountsWithUserRight(LSA_HANDLE,PLSA_UNICODE_STRING,PVOID*,PULONG);
+NTSTATUS WINAPI LsaEnumerateLogonSessions(PULONG,PLUID*);
+NTSTATUS WINAPI LsaEnumerateTrustedDomains(LSA_HANDLE,PLSA_ENUMERATION_HANDLE,PVOID*,ULONG,PULONG);
+NTSTATUS WINAPI LsaEnumerateTrustedDomainsEx(LSA_HANDLE,PLSA_ENUMERATION_HANDLE,PVOID*,ULONG,PULONG);
+NTSTATUS WINAPI LsaFreeMemory(PVOID);
+NTSTATUS WINAPI LsaFreeReturnBuffer(PVOID);
+NTSTATUS WINAPI LsaGetLogonSessionData(PLUID,PSECURITY_LOGON_SESSION_DATA*);
+NTSTATUS WINAPI LsaLogonUser(HANDLE,PLSA_STRING,SECURITY_LOGON_TYPE,ULONG,PVOID,ULONG,PTOKEN_GROUPS,PTOKEN_SOURCE,PVOID*,PULONG,PLUID,PHANDLE,PQUOTA_LIMITS,PNTSTATUS);
+NTSTATUS WINAPI LsaLookupAuthenticationPackage(HANDLE,PLSA_STRING,PULONG);
+NTSTATUS WINAPI LsaLookupNames(LSA_HANDLE,ULONG,PLSA_UNICODE_STRING,PLSA_REFERENCED_DOMAIN_LIST*,
+                               PLSA_TRANSLATED_SID*);
+NTSTATUS WINAPI LsaLookupNames2(LSA_HANDLE,ULONG,ULONG,PLSA_UNICODE_STRING,PLSA_REFERENCED_DOMAIN_LIST*,
+                                PLSA_TRANSLATED_SID2*);
+NTSTATUS WINAPI LsaLookupSids(LSA_HANDLE,ULONG,PSID *,PLSA_REFERENCED_DOMAIN_LIST *,PLSA_TRANSLATED_NAME *);
+ULONG WINAPI LsaNtStatusToWinError(NTSTATUS);
+NTSTATUS WINAPI LsaOpenPolicy(PLSA_UNICODE_STRING,PLSA_OBJECT_ATTRIBUTES,ACCESS_MASK,PLSA_HANDLE);
+NTSTATUS WINAPI LsaOpenTrustedDomainByName(LSA_HANDLE,PLSA_UNICODE_STRING,ACCESS_MASK,PLSA_HANDLE);
+NTSTATUS WINAPI LsaQueryInformationPolicy(LSA_HANDLE,POLICY_INFORMATION_CLASS,PVOID*);
+NTSTATUS WINAPI LsaQueryTrustedDomainInfo(LSA_HANDLE,PSID,TRUSTED_INFORMATION_CLASS,PVOID*);
+NTSTATUS WINAPI LsaQueryTrustedDomainInfoByName(LSA_HANDLE,PLSA_UNICODE_STRING,TRUSTED_INFORMATION_CLASS,PVOID*);
+NTSTATUS WINAPI LsaRegisterLogonProcess(PLSA_STRING,PHANDLE,PLSA_OPERATIONAL_MODE);
+NTSTATUS WINAPI LsaRegisterPolicyChangeNotification(POLICY_NOTIFICATION_INFORMATION_CLASS,HANDLE);
+NTSTATUS WINAPI LsaRemoveAccountRights(LSA_HANDLE,PSID,BOOLEAN,PLSA_UNICODE_STRING,ULONG);
+NTSTATUS WINAPI LsaRetrievePrivateData(LSA_HANDLE,PLSA_UNICODE_STRING,PLSA_UNICODE_STRING*);
+NTSTATUS WINAPI LsaSetInformationPolicy(LSA_HANDLE,POLICY_INFORMATION_CLASS,PVOID);
+NTSTATUS WINAPI LsaSetTrustedDomainInfoByName(LSA_HANDLE,PLSA_UNICODE_STRING,TRUSTED_INFORMATION_CLASS,PVOID);
+NTSTATUS WINAPI LsaSetTrustedDomainInformation(LSA_HANDLE,PSID,TRUSTED_INFORMATION_CLASS,PVOID);
+NTSTATUS WINAPI LsaStorePrivateData(LSA_HANDLE,PLSA_UNICODE_STRING,PLSA_UNICODE_STRING);
+NTSTATUS WINAPI LsaUnregisterPolicyChangeNotification(POLICY_NOTIFICATION_INFORMATION_CLASS,HANDLE);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif /* !defined(__WINE_NTSECAPI_H) */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ntsecpkg.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ntsecpkg.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ntsecpkg.h	(revision 16410)
@@ -0,0 +1,442 @@
+/*
+ * Copyright (C) 2007 Yuval Fledel
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _NTSECPKG_H
+#define _NTSECPKG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Flags for the MachineState field in SECPKG_PARAMETERS */
+#define SECPKG_STATE_ENCRYPTION_PERMITTED               0x01
+#define SECPKG_STATE_STRONG_ENCRYPTION_PERMITTED        0x02
+#define SECPKG_STATE_DOMAIN_CONTROLLER                  0x04
+#define SECPKG_STATE_WORKSTATION                        0x08
+#define SECPKG_STATE_STANDALONE                         0x10
+
+/* Version magics as passed to or returned from Sp[Lsa,Mode]ModeInitialize */
+#define SECPKG_INTERFACE_VERSION                     0x10000
+#define SECPKG_INTERFACE_VERSION_2                   0x20000
+#define SECPKG_INTERFACE_VERSION_3                   0x40000
+
+/* enum definitions for Secure Service Provider/Authentication Packages */
+typedef enum _LSA_TOKEN_INFORMATION_TYPE {
+    LsaTokenInformationNull,
+    LsaTokenInformationV1
+} LSA_TOKEN_INFORMATION_TYPE, *PLSA_TOKEN_INFORMATION_TYPE;
+
+typedef enum _SECPKG_EXTENDED_INFORMATION_CLASS
+{
+    SecpkgGssInfo = 1,
+    SecpkgContextThunks,
+    SecpkgMutualAuthLevel,
+    SecpkgMaxInfo
+} SECPKG_EXTENDED_INFORMATION_CLASS;
+
+typedef enum _SECPKG_NAME_TYPE {
+    SecNameSamCompatible,
+    SecNameAlternateId,
+    SecNameFlat,
+    SecNameDN
+} SECPKG_NAME_TYPE;
+
+/* struct definitions for SSP/AP */
+typedef struct _SECPKG_PRIMARY_CRED {
+    LUID LogonId;
+    UNICODE_STRING DownlevelName;
+    UNICODE_STRING DomainName;
+    UNICODE_STRING Password;
+    UNICODE_STRING OldPassword;
+    PSID UserSid;
+    ULONG Flags;
+    UNICODE_STRING DnsDomainName;
+    UNICODE_STRING Upn;
+    UNICODE_STRING LogonServer;
+    UNICODE_STRING Spare1;
+    UNICODE_STRING Spare2;
+    UNICODE_STRING Spare3;
+    UNICODE_STRING Spare4;
+} SECPKG_PRIMARY_CRED, *PSECPKG_PRIMARY_CRED;
+
+typedef struct _SECPKG_SUPPLEMENTAL_CRED {
+    UNICODE_STRING PackageName;
+    ULONG CredentialSize;
+    PUCHAR Credentials;
+} SECPKG_SUPPLEMENTAL_CRED, *PSECPKG_SUPPLEMENTAL_CRED;
+
+typedef struct _SECPKG_SUPPLEMENTAL_CRED_ARRAY {
+    ULONG CredentialCount;
+    SECPKG_SUPPLEMENTAL_CRED Credentials[1];
+} SECPKG_SUPPLEMENTAL_CRED_ARRAY, *PSECPKG_SUPPLEMENTAL_CRED_ARRAY;
+
+typedef struct _SECPKG_PARAMETERS {
+    ULONG Version;
+    ULONG MachineState;
+    ULONG SetupMode;
+    PSID DomainSid;
+    UNICODE_STRING DomainName;
+    UNICODE_STRING DnsDomainName;
+    GUID DomainGuid;
+} SECPKG_PARAMETERS, *PSECPKG_PARAMETERS,
+  SECPKG_EVENT_DOMAIN_CHANGE, *PSECPKG_EVENT_DOMAIN_CHANGE;
+
+typedef struct _SECPKG_CLIENT_INFO {
+    LUID LogonId;
+    ULONG ProcessID;
+    ULONG ThreadID;
+    BOOLEAN HasTcbPrivilege;
+    BOOLEAN Impersonating;
+    BOOLEAN Restricted;
+} SECPKG_CLIENT_INFO,
+ *PSECPKG_CLIENT_INFO;
+
+typedef struct _SECURITY_USER_DATA {
+    UNICODE_STRING UserName;
+    UNICODE_STRING LogonDomainName;
+    UNICODE_STRING LogonServer;
+    PSID pSid;
+} SECURITY_USER_DATA, *PSECURITY_USER_DATA,
+  SecurityUserData, *PSecurityUserData;
+
+typedef struct _SECPKG_GSS_INFO {
+    ULONG EncodedIdLength;
+    UCHAR EncodedId[4];
+} SECPKG_GSS_INFO, *PSECPKG_GSS_INFO;
+
+typedef struct _SECPKG_CONTEXT_THUNKS {
+    ULONG InfoLevelCount;
+    ULONG Levels[1];
+} SECPKG_CONTEXT_THUNKS, *PSECPKG_CONTEXT_THUNKS;
+
+typedef struct _SECPKG_MUTUAL_AUTH_LEVEL {
+    ULONG MutualAuthLevel;
+} SECPKG_MUTUAL_AUTH_LEVEL, *PSECPKG_MUTUAL_AUTH_LEVEL;
+
+typedef struct _SECPKG_CALL_INFO {
+    ULONG ProcessId;
+    ULONG ThreadId;
+    ULONG Attributes;
+    ULONG CallCount;
+} SECPKG_CALL_INFO, *PSECPKG_CALL_INFO;
+
+typedef struct _SECPKG_EXTENDED_INFORMATION {
+    SECPKG_EXTENDED_INFORMATION_CLASS Class;
+    union {
+        SECPKG_GSS_INFO GssInfo;
+        SECPKG_CONTEXT_THUNKS ContextThunks;
+        SECPKG_MUTUAL_AUTH_LEVEL MutualAuthLevel;
+    } Info;
+} SECPKG_EXTENDED_INFORMATION, *PSECPKG_EXTENDED_INFORMATION;
+
+/* callbacks implemented by SSP/AP dlls and called by the LSA */
+typedef VOID (NTAPI *PLSA_CALLBACK_FUNCTION)(ULONG_PTR, ULONG_PTR, PSecBuffer,
+ PSecBuffer);
+
+/* misc typedefs used in the below prototypes */
+typedef PVOID *PLSA_CLIENT_REQUEST;
+typedef ULONG LSA_SEC_HANDLE, *PLSA_SEC_HANDLE;
+typedef LPTHREAD_START_ROUTINE SEC_THREAD_START;
+typedef PSECURITY_ATTRIBUTES SEC_ATTRS;
+
+/* functions used by SSP/AP obtainable by dispatch tables */
+typedef NTSTATUS (NTAPI *PLSA_REGISTER_CALLBACK)(ULONG, PLSA_CALLBACK_FUNCTION);
+typedef NTSTATUS (NTAPI *PLSA_CREATE_LOGON_SESSION)(PLUID);
+typedef NTSTATUS (NTAPI *PLSA_DELETE_LOGON_SESSION)(PLUID);
+typedef NTSTATUS (NTAPI *PLSA_ADD_CREDENTIAL)(PLUID, ULONG, PLSA_STRING,
+ PLSA_STRING);
+typedef NTSTATUS (NTAPI *PLSA_GET_CREDENTIALS)(PLUID, ULONG, PULONG, BOOLEAN,
+ PLSA_STRING, PULONG, PLSA_STRING);
+typedef NTSTATUS (NTAPI *PLSA_DELETE_CREDENTIAL)(PLUID, ULONG, PLSA_STRING);
+typedef PVOID (NTAPI *PLSA_ALLOCATE_LSA_HEAP)(ULONG);
+typedef VOID (NTAPI *PLSA_FREE_LSA_HEAP)(PVOID);
+typedef NTSTATUS (NTAPI *PLSA_ALLOCATE_CLIENT_BUFFER)(PLSA_CLIENT_REQUEST,
+ ULONG, PVOID*);
+typedef NTSTATUS (NTAPI *PLSA_FREE_CLIENT_BUFFER)(PLSA_CLIENT_REQUEST, PVOID);
+typedef NTSTATUS (NTAPI *PLSA_COPY_TO_CLIENT_BUFFER)(PLSA_CLIENT_REQUEST, ULONG,
+ PVOID, PVOID);
+typedef NTSTATUS (NTAPI *PLSA_COPY_FROM_CLIENT_BUFFER)(PLSA_CLIENT_REQUEST,
+ ULONG, PVOID, PVOID);
+typedef NTSTATUS (NTAPI *PLSA_IMPERSONATE_CLIENT)(void);
+typedef NTSTATUS (NTAPI *PLSA_UNLOAD_PACKAGE)(void);
+typedef NTSTATUS (NTAPI *PLSA_DUPLICATE_HANDLE)(HANDLE, PHANDLE);
+typedef NTSTATUS (NTAPI *PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS)(PLUID, ULONG,
+ PVOID, BOOLEAN);
+typedef HANDLE (NTAPI *PLSA_CREATE_THREAD)(SEC_ATTRS, ULONG, SEC_THREAD_START,
+ PVOID, ULONG, PULONG);
+typedef NTSTATUS (NTAPI *PLSA_GET_CLIENT_INFO)(PSECPKG_CLIENT_INFO);
+typedef HANDLE (NTAPI *PLSA_REGISTER_NOTIFICATION)(SEC_THREAD_START, PVOID,
+ ULONG, ULONG, ULONG, ULONG, HANDLE);
+typedef NTSTATUS (NTAPI *PLSA_CANCEL_NOTIFICATION)(HANDLE);
+typedef NTSTATUS (NTAPI *PLSA_MAP_BUFFER)(PSecBuffer, PSecBuffer);
+typedef NTSTATUS (NTAPI *PLSA_CREATE_TOKEN)(PLUID, PTOKEN_SOURCE,
+ SECURITY_LOGON_TYPE, SECURITY_IMPERSONATION_LEVEL, LSA_TOKEN_INFORMATION_TYPE,
+ PVOID, PTOKEN_GROUPS, PUNICODE_STRING, PUNICODE_STRING, PUNICODE_STRING,
+ PUNICODE_STRING, PHANDLE, PNTSTATUS);
+typedef VOID (NTAPI *PLSA_AUDIT_LOGON)(NTSTATUS, NTSTATUS, PUNICODE_STRING,
+ PUNICODE_STRING, PUNICODE_STRING, OPTIONAL PSID, SECURITY_LOGON_TYPE,
+ PTOKEN_SOURCE, PLUID);
+typedef NTSTATUS (NTAPI *PLSA_CALL_PACKAGE)(PUNICODE_STRING, PVOID, ULONG,
+ PVOID*, PULONG, PNTSTATUS);
+typedef BOOLEAN (NTAPI *PLSA_GET_CALL_INFO)(PSECPKG_CALL_INFO);
+typedef NTSTATUS (NTAPI *PLSA_CALL_PACKAGEEX)(PUNICODE_STRING, PVOID, PVOID,
+ ULONG, PVOID*, PULONG, PNTSTATUS);
+typedef PVOID (NTAPI *PLSA_CREATE_SHARED_MEMORY)(ULONG, ULONG);
+typedef PVOID (NTAPI *PLSA_ALLOCATE_SHARED_MEMORY)(PVOID, ULONG);
+typedef VOID (NTAPI *PLSA_FREE_SHARED_MEMORY)(PVOID, PVOID);
+typedef BOOLEAN (NTAPI *PLSA_DELETE_SHARED_MEMORY)(PVOID);
+typedef NTSTATUS (NTAPI *PLSA_OPEN_SAM_USER)(PUNICODE_STRING, SECPKG_NAME_TYPE,
+ PUNICODE_STRING, BOOLEAN, ULONG, PVOID*);
+typedef NTSTATUS (NTAPI *PLSA_GET_USER_CREDENTIALS)(PVOID, PVOID *, PULONG,
+ PVOID *, PULONG);
+typedef NTSTATUS (NTAPI *PLSA_GET_USER_AUTH_DATA)(PVOID, PUCHAR *, PULONG);
+typedef NTSTATUS (NTAPI *PLSA_CLOSE_SAM_USER)(PVOID);
+typedef NTSTATUS (NTAPI *PLSA_CONVERT_AUTH_DATA_TO_TOKEN)(PVOID, ULONG,
+ SECURITY_IMPERSONATION_LEVEL, PTOKEN_SOURCE, SECURITY_LOGON_TYPE,
+ PUNICODE_STRING, PHANDLE, PLUID, PUNICODE_STRING, PNTSTATUS);
+typedef NTSTATUS (NTAPI *PLSA_CLIENT_CALLBACK)(PCHAR, ULONG_PTR, ULONG_PTR,
+ PSecBuffer, PSecBuffer);
+typedef NTSTATUS (NTAPI *PLSA_UPDATE_PRIMARY_CREDENTIALS)(PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED_ARRAY);
+typedef NTSTATUS (NTAPI *PLSA_GET_AUTH_DATA_FOR_USER)(PUNICODE_STRING,
+ SECPKG_NAME_TYPE, PUNICODE_STRING, PUCHAR *, PULONG, PUNICODE_STRING);
+typedef NTSTATUS (NTAPI *PLSA_CRACK_SINGLE_NAME)(ULONG, BOOLEAN,
+ PUNICODE_STRING, PUNICODE_STRING, ULONG, PUNICODE_STRING, PUNICODE_STRING,
+ PULONG);
+typedef NTSTATUS (NTAPI *PLSA_AUDIT_ACCOUNT_LOGON)(ULONG, BOOLEAN,
+ PUNICODE_STRING, PUNICODE_STRING, PUNICODE_STRING, NTSTATUS);
+typedef NTSTATUS (NTAPI *PLSA_CALL_PACKAGE_PASSTHROUGH)(PUNICODE_STRING, PVOID,
+ PVOID, ULONG, PVOID*, PULONG, PNTSTATUS);
+
+/* Dispatch tables of functions used by SSP/AP */
+typedef struct SECPKG_DLL_FUNCTIONS {
+    PLSA_ALLOCATE_LSA_HEAP AllocateHeap;
+    PLSA_FREE_LSA_HEAP FreeHeap;
+    PLSA_REGISTER_CALLBACK RegisterCallback;
+} SECPKG_DLL_FUNCTIONS,
+ *PSECPKG_DLL_FUNCTIONS;
+
+typedef struct LSA_DISPATCH_TABLE {
+    PLSA_CREATE_LOGON_SESSION CreateLogonSession;
+    PLSA_DELETE_LOGON_SESSION DeleteLogonSession;
+    PLSA_ADD_CREDENTIAL AddCredential;
+    PLSA_GET_CREDENTIALS GetCredentials;
+    PLSA_DELETE_CREDENTIAL DeleteCredential;
+    PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap;
+    PLSA_FREE_LSA_HEAP FreeLsaHeap;
+    PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer;
+    PLSA_FREE_CLIENT_BUFFER FreeClientBuffer;
+    PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer;
+    PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer;
+} LSA_DISPATCH_TABLE,
+ *PLSA_DISPATCH_TABLE;
+
+typedef struct _LSA_SECPKG_FUNCTION_TABLE {
+    PLSA_CREATE_LOGON_SESSION CreateLogonSession;
+    PLSA_DELETE_LOGON_SESSION DeleteLogonSession;
+    PLSA_ADD_CREDENTIAL AddCredential;
+    PLSA_GET_CREDENTIALS GetCredentials;
+    PLSA_DELETE_CREDENTIAL DeleteCredential;
+    PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap;
+    PLSA_FREE_LSA_HEAP FreeLsaHeap;
+    PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer;
+    PLSA_FREE_CLIENT_BUFFER FreeClientBuffer;
+    PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer;
+    PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer;
+    PLSA_IMPERSONATE_CLIENT ImpersonateClient;
+    PLSA_UNLOAD_PACKAGE UnloadPackage;
+    PLSA_DUPLICATE_HANDLE DuplicateHandle;
+    PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS SaveSupplementalCredentials;
+    PLSA_CREATE_THREAD CreateThread;
+    PLSA_GET_CLIENT_INFO GetClientInfo;
+    PLSA_REGISTER_NOTIFICATION RegisterNotification;
+    PLSA_CANCEL_NOTIFICATION CancelNotification;
+    PLSA_MAP_BUFFER MapBuffer;
+    PLSA_CREATE_TOKEN CreateToken;
+    PLSA_AUDIT_LOGON AuditLogon;
+    PLSA_CALL_PACKAGE CallPackage;
+    PLSA_FREE_LSA_HEAP FreeReturnBuffer;
+    PLSA_GET_CALL_INFO GetCallInfo;
+    PLSA_CALL_PACKAGEEX CallPackageEx;
+    PLSA_CREATE_SHARED_MEMORY CreateSharedMemory;
+    PLSA_ALLOCATE_SHARED_MEMORY AllocateSharedMemory;
+    PLSA_FREE_SHARED_MEMORY FreeSharedMemory;
+    PLSA_DELETE_SHARED_MEMORY DeleteSharedMemory;
+    PLSA_OPEN_SAM_USER OpenSamUser;
+    PLSA_GET_USER_CREDENTIALS GetUserCredentials;
+    PLSA_GET_USER_AUTH_DATA GetUserAuthData;
+    PLSA_CLOSE_SAM_USER CloseSamUser;
+    PLSA_CONVERT_AUTH_DATA_TO_TOKEN ConvertAuthDataToToken;
+    PLSA_CLIENT_CALLBACK ClientCallback;
+    PLSA_UPDATE_PRIMARY_CREDENTIALS UpdateCredentials;
+    PLSA_GET_AUTH_DATA_FOR_USER GetAuthDataForUser;
+    PLSA_CRACK_SINGLE_NAME CrackSingleName;
+    PLSA_AUDIT_ACCOUNT_LOGON AuditAccountLogon;
+    PLSA_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough;
+} LSA_SECPKG_FUNCTION_TABLE,
+ *PLSA_SECPKG_FUNCTION_TABLE;
+
+/* LSA-mode functions implemented by SSP/AP obtainable by a dispatch table */
+typedef NTSTATUS (NTAPI *PLSA_AP_INITIALIZE_PACKAGE)(ULONG, PLSA_DISPATCH_TABLE,
+ PLSA_STRING, PLSA_STRING, PLSA_STRING *);
+typedef NTSTATUS (NTAPI *PLSA_AP_LOGON_USER)(LPWSTR, LPWSTR, LPWSTR, LPWSTR,
+ DWORD, DWORD, PHANDLE);
+typedef NTSTATUS (NTAPI *PLSA_AP_CALL_PACKAGE)(PUNICODE_STRING, PVOID, ULONG,
+ PVOID *, PULONG, PNTSTATUS);
+typedef VOID (NTAPI *PLSA_AP_LOGON_TERMINATED)(PLUID);
+typedef NTSTATUS (NTAPI *PLSA_AP_CALL_PACKAGE_UNTRUSTED)(PLSA_CLIENT_REQUEST,
+ PVOID, PVOID, ULONG, PVOID *, PULONG, PNTSTATUS);
+typedef NTSTATUS (NTAPI *PLSA_AP_CALL_PACKAGE_PASSTHROUGH)(PUNICODE_STRING,
+ PVOID, PVOID, ULONG, PVOID *, PULONG, PNTSTATUS);
+typedef NTSTATUS (NTAPI *PLSA_AP_LOGON_USER_EX)(PLSA_CLIENT_REQUEST,
+ SECURITY_LOGON_TYPE, PVOID, PVOID, ULONG, PVOID *, PULONG, PLUID, PNTSTATUS,
+ PLSA_TOKEN_INFORMATION_TYPE, PVOID *, PUNICODE_STRING *, PUNICODE_STRING *,
+ PUNICODE_STRING *);
+typedef NTSTATUS (NTAPI *PLSA_AP_LOGON_USER_EX2)(PLSA_CLIENT_REQUEST,
+ SECURITY_LOGON_TYPE, PVOID, PVOID, ULONG, PVOID *, PULONG, PLUID, PNTSTATUS,
+ PLSA_TOKEN_INFORMATION_TYPE, PVOID *, PUNICODE_STRING *, PUNICODE_STRING *,
+ PUNICODE_STRING *, PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED_ARRAY *);
+typedef NTSTATUS (SpInitializeFn)(ULONG_PTR, PSECPKG_PARAMETERS,
+ PLSA_SECPKG_FUNCTION_TABLE);
+typedef NTSTATUS (NTAPI SpShutDownFn)(void);
+typedef NTSTATUS (NTAPI SpGetInfoFn)(PSecPkgInfoW);
+typedef NTSTATUS (NTAPI SpAcceptCredentialsFn)(SECURITY_LOGON_TYPE,
+ PUNICODE_STRING, PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED);
+typedef NTSTATUS (NTAPI SpAcquireCredentialsHandleFn)(PUNICODE_STRING, ULONG,
+ PLUID, PVOID, PVOID, PVOID, PLSA_SEC_HANDLE, PTimeStamp);
+typedef NTSTATUS (NTAPI SpQueryCredentialsAttributesFn)(LSA_SEC_HANDLE, ULONG,
+ PVOID);
+typedef NTSTATUS (NTAPI SpFreeCredentialsHandleFn)(LSA_SEC_HANDLE);
+typedef NTSTATUS (NTAPI SpSaveCredentialsFn)(LSA_SEC_HANDLE, PSecBuffer);
+typedef NTSTATUS (NTAPI SpGetCredentialsFn)(LSA_SEC_HANDLE, PSecBuffer);
+typedef NTSTATUS (NTAPI SpDeleteCredentialsFn)(LSA_SEC_HANDLE, PSecBuffer);
+typedef NTSTATUS (NTAPI SpInitLsaModeContextFn)(LSA_SEC_HANDLE, LSA_SEC_HANDLE,
+ PUNICODE_STRING, ULONG, ULONG, PSecBufferDesc, PLSA_SEC_HANDLE, PSecBufferDesc,
+ PULONG, PTimeStamp, PBOOLEAN, PSecBuffer);
+typedef NTSTATUS (NTAPI SpAcceptLsaModeContextFn)(LSA_SEC_HANDLE,
+ LSA_SEC_HANDLE, PSecBufferDesc, ULONG, ULONG, PLSA_SEC_HANDLE, PSecBufferDesc,
+ PULONG, PTimeStamp, PBOOLEAN, PSecBuffer);
+typedef NTSTATUS (NTAPI SpDeleteContextFn)(LSA_SEC_HANDLE);
+typedef NTSTATUS (NTAPI SpApplyControlTokenFn)(LSA_SEC_HANDLE, PSecBufferDesc);
+typedef NTSTATUS (NTAPI SpGetUserInfoFn)(PLUID, ULONG, PSecurityUserData *);
+typedef NTSTATUS (NTAPI SpGetExtendedInformationFn)(
+ SECPKG_EXTENDED_INFORMATION_CLASS, PSECPKG_EXTENDED_INFORMATION *);
+typedef NTSTATUS (NTAPI SpQueryContextAttributesFn)(LSA_SEC_HANDLE, ULONG,
+ PVOID);
+typedef NTSTATUS (NTAPI SpAddCredentialsFn)(LSA_SEC_HANDLE, PUNICODE_STRING,
+ PUNICODE_STRING, ULONG, PVOID, PVOID, PVOID, PTimeStamp);
+typedef NTSTATUS (NTAPI SpSetExtendedInformationFn)(
+ SECPKG_EXTENDED_INFORMATION_CLASS, PSECPKG_EXTENDED_INFORMATION);
+typedef NTSTATUS (NTAPI SpSetContextAttributesFn)(LSA_SEC_HANDLE, ULONG, PVOID,
+ ULONG);
+typedef NTSTATUS (NTAPI SpSetCredentialsAttributesFn)(LSA_SEC_HANDLE, ULONG,
+ PVOID, ULONG);
+
+/* User-mode functions implemented by SSP/AP obtainable by a dispatch table */
+typedef NTSTATUS (NTAPI SpInstanceInitFn)(ULONG, PSECPKG_DLL_FUNCTIONS,
+ PVOID *);
+typedef NTSTATUS (NTAPI SpInitUserModeContextFn)(LSA_SEC_HANDLE, PSecBuffer);
+typedef NTSTATUS (NTAPI SpMakeSignatureFn)(LSA_SEC_HANDLE, ULONG,
+ PSecBufferDesc, ULONG);
+typedef NTSTATUS (NTAPI SpVerifySignatureFn)(LSA_SEC_HANDLE, PSecBufferDesc,
+ ULONG, PULONG);
+typedef NTSTATUS (NTAPI SpSealMessageFn)(LSA_SEC_HANDLE, ULONG, PSecBufferDesc,
+ ULONG);
+typedef NTSTATUS (NTAPI SpUnsealMessageFn)(LSA_SEC_HANDLE, PSecBufferDesc,
+ ULONG, PULONG);
+typedef NTSTATUS (NTAPI SpGetContextTokenFn)(LSA_SEC_HANDLE, PHANDLE);
+typedef NTSTATUS (NTAPI SpCompleteAuthTokenFn)(LSA_SEC_HANDLE, PSecBufferDesc);
+typedef NTSTATUS (NTAPI SpFormatCredentialsFn)(PSecBuffer, PSecBuffer);
+typedef NTSTATUS (NTAPI SpMarshallSupplementalCredsFn)(ULONG, PUCHAR, PULONG,
+ PVOID *);
+typedef NTSTATUS (NTAPI SpExportSecurityContextFn)(LSA_SEC_HANDLE, ULONG,
+ PSecBuffer, PHANDLE);
+typedef NTSTATUS (NTAPI SpImportSecurityContextFn)(PSecBuffer, HANDLE,
+ PLSA_SEC_HANDLE);
+
+#ifdef WINE_NO_UNICODE_MACROS
+#undef SetContextAttributes
+#endif
+
+/* dispatch tables of LSA-mode functions implemented by SSP/AP */
+typedef struct SECPKG_FUNCTION_TABLE {
+    PLSA_AP_INITIALIZE_PACKAGE InitializePackage;
+    PLSA_AP_LOGON_USER LsaLogonUser;
+    PLSA_AP_CALL_PACKAGE CallPackage;
+    PLSA_AP_LOGON_TERMINATED LogonTerminated;
+    PLSA_AP_CALL_PACKAGE_UNTRUSTED CallPackageUntrusted;
+    PLSA_AP_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough;
+    PLSA_AP_LOGON_USER_EX LogonUserEx;
+    PLSA_AP_LOGON_USER_EX2 LogonUserEx2;
+    SpInitializeFn *Initialize;
+    SpShutDownFn *Shutdown;
+    SpGetInfoFn *GetInfo;
+    SpAcceptCredentialsFn *AcceptCredentials;
+    SpAcquireCredentialsHandleFn *SpAcquireCredentialsHandle;
+    SpQueryCredentialsAttributesFn *SpQueryCredentialsAttributes;
+    SpFreeCredentialsHandleFn *FreeCredentialsHandle;
+    SpSaveCredentialsFn *SaveCredentials;
+    SpGetCredentialsFn *GetCredentials;
+    SpDeleteCredentialsFn *DeleteCredentials;
+    SpInitLsaModeContextFn *InitLsaModeContext;
+    SpAcceptLsaModeContextFn *AcceptLsaModeContext;
+    SpDeleteContextFn *DeleteContext;
+    SpApplyControlTokenFn *ApplyControlToken;
+    SpGetUserInfoFn *GetUserInfo;
+    SpGetExtendedInformationFn *GetExtendedInformation;
+    SpQueryContextAttributesFn *SpQueryContextAttributes;
+    SpAddCredentialsFn *SpAddCredentials;
+    SpSetExtendedInformationFn *SetExtendedInformation;
+    /* Packages with version SECPKG_INTERFACE_VERSION end here */
+    SpSetContextAttributesFn *SetContextAttributes;
+    /* Packages with version SECPKG_INTERFACE_VERSION_2 end here */
+    SpSetCredentialsAttributesFn *SetCredentialsAttributes;
+    /* Packages with version SECPKG_INTERFACE_VERSION_3 end here */
+} SECPKG_FUNCTION_TABLE,
+ *PSECPKG_FUNCTION_TABLE;
+
+/* dispatch tables of user-mode functions implemented by SSP/AP */
+typedef struct SECPKG_USER_FUNCTION_TABLE {
+    SpInstanceInitFn *InstanceInit;
+    SpInitUserModeContextFn *InitUserModeContext;
+    SpMakeSignatureFn *MakeSignature;
+    SpVerifySignatureFn *VerifySignature;
+    SpSealMessageFn *SealMessage;
+    SpUnsealMessageFn *UnsealMessage;
+    SpGetContextTokenFn *GetContextToken;
+    SpQueryContextAttributesFn *SpQueryContextAttributes;
+    SpCompleteAuthTokenFn *CompleteAuthToken;
+    SpDeleteContextFn *DeleteUserModeContext;
+    SpFormatCredentialsFn *FormatCredentials;
+    SpMarshallSupplementalCredsFn *MarshallSupplementalCreds;
+    SpExportSecurityContextFn *ExportContext;
+    SpImportSecurityContextFn *ImportContext;
+} SECPKG_USER_FUNCTION_TABLE,
+ *PSECPKG_USER_FUNCTION_TABLE;
+
+/* LSA-mode entry point to SSP/APs */
+typedef NTSTATUS (NTAPI *SpLsaModeInitializeFn)(ULONG, PULONG,
+ PSECPKG_FUNCTION_TABLE *, PULONG);
+
+/* User-mode entry point to SSP/APs */
+typedef NTSTATUS (WINAPI *SpUserModeInitializeFn)(ULONG, PULONG,
+ PSECPKG_USER_FUNCTION_TABLE *, PULONG);
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _NTSECPKG_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ntstatus.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ntstatus.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ntstatus.h	(revision 16410)
@@ -0,0 +1,1119 @@
+/*
+ * Win32 definitions for Windows NT
+ *
+ * Copyright 1996 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_NTSTATUS_H
+#define __WINE_NTSTATUS_H
+
+#ifndef WIN32_NO_STATUS
+
+/*
+ * Exception codes
+ */
+
+#define STATUS_SUCCESS                   ((NTSTATUS) 0x00000000)
+#define STATUS_SEVERITY_SUCCESS          ((NTSTATUS) 0x00000000)
+#define STATUS_SEVERITY_INFORMATIONAL    ((NTSTATUS) 0x00000001)
+#define STATUS_SEVERITY_WARNING          ((NTSTATUS) 0x00000002)
+#define STATUS_SEVERITY_ERROR            ((NTSTATUS) 0x00000003)
+
+#define STATUS_WAIT_0                    ((NTSTATUS) 0x00000000)
+#define STATUS_WAIT_1                    ((NTSTATUS) 0x00000001)
+#define STATUS_WAIT_2                    ((NTSTATUS) 0x00000002)
+#define STATUS_WAIT_3                    ((NTSTATUS) 0x00000003)
+#define STATUS_WAIT_63                   ((NTSTATUS) 0x0000003f)
+#define STATUS_ABANDONED                 ((NTSTATUS) 0x00000080)
+#define STATUS_ABANDONED_WAIT_0          ((NTSTATUS) 0x00000080)
+#define STATUS_ABANDONED_WAIT_63         ((NTSTATUS) 0x000000BF)
+#define STATUS_USER_APC                  ((NTSTATUS) 0x000000C0)
+#define STATUS_KERNEL_APC                ((NTSTATUS) 0x00000100)
+#define STATUS_ALERTED                   ((NTSTATUS) 0x00000101)
+#define STATUS_TIMEOUT                   ((NTSTATUS) 0x00000102)
+#define STATUS_PENDING                   ((NTSTATUS) 0x00000103)
+#define STATUS_REPARSE                   ((NTSTATUS) 0x00000104)
+#define STATUS_MORE_ENTRIES              ((NTSTATUS) 0x00000105)
+#define STATUS_NOT_ALL_ASSIGNED          ((NTSTATUS) 0x00000106)
+#define STATUS_SOME_NOT_MAPPED           ((NTSTATUS) 0x00000107)
+#define STATUS_OPLOCK_BREAK_IN_PROGRESS  ((NTSTATUS) 0x00000108)
+#define STATUS_VOLUME_MOUNTED            ((NTSTATUS) 0x00000109)
+#define STATUS_RXACT_COMMITTED           ((NTSTATUS) 0x0000010A)
+#define STATUS_NOTIFY_CLEANUP            ((NTSTATUS) 0x0000010B)
+#define STATUS_NOTIFY_ENUM_DIR           ((NTSTATUS) 0x0000010C)
+#define STATUS_NO_QUOTAS_FOR_ACCOUNT     ((NTSTATUS) 0x0000010D)
+#define STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED ((NTSTATUS) 0x0000010E)
+#define STATUS_PAGE_FAULT_TRANSITION     ((NTSTATUS) 0x00000110)
+#define STATUS_PAGE_FAULT_DEMAND_ZERO    ((NTSTATUS) 0x00000111)
+#define STATUS_PAGE_FAULT_COPY_ON_WRITE  ((NTSTATUS) 0x00000112)
+#define STATUS_PAGE_FAULT_GUARD_PAGE     ((NTSTATUS) 0x00000113)
+#define STATUS_PAGE_FAULT_PAGING_FILE    ((NTSTATUS) 0x00000114)
+#define STATUS_CACHE_PAGE_LOCKED         ((NTSTATUS) 0x00000115)
+#define STATUS_CRASH_DUMP                ((NTSTATUS) 0x00000116)
+#define STATUS_BUFFER_ALL_ZEROS          ((NTSTATUS) 0x00000117)
+#define STATUS_REPARSE_OBJECT            ((NTSTATUS) 0x00000118)
+#define STATUS_RESOURCE_REQUIREMENTS_CHANGED ((NTSTATUS) 0x00000119)
+#define STATUS_TRANSLATION_COMPLETE      ((NTSTATUS) 0x00000120)
+#define STATUS_DS_MEMBERSHIP_EVALUATED_LOCALLY  ((NTSTATUS) 0x00000121)
+#define STATUS_NOTHING_TO_TERMINATE      ((NTSTATUS) 0x00000122)
+#define STATUS_PROCESS_NOT_IN_JOB        ((NTSTATUS) 0x00000123)
+#define STATUS_PROCESS_IN_JOB            ((NTSTATUS) 0x00000124)
+#define STATUS_VOLSNAP_HIBERNATE_READY   ((NTSTATUS) 0x00000125)
+#define STATUS_FSFILTER_OP_COMPLETED_SUCCESSFULLY ((NTSTATUS) 0x00000126)
+
+#define STATUS_OBJECT_NAME_EXISTS        ((NTSTATUS) 0x40000000)
+#define STATUS_THREAD_WAS_SUSPENDED      ((NTSTATUS) 0x40000001)
+#define STATUS_WORKING_SET_LIMIT_RANGE   ((NTSTATUS) 0x40000002)
+#define STATUS_IMAGE_NOT_AT_BASE         ((NTSTATUS) 0x40000003)
+#define STATUS_RXACT_STATE_CREATED       ((NTSTATUS) 0x40000004)
+#define STATUS_SEGMENT_NOTIFICATION      ((NTSTATUS) 0x40000005)
+#define STATUS_LOCAL_USER_SESSION_KEY    ((NTSTATUS) 0x40000006)
+#define STATUS_BAD_CURRENT_DIRECTORY     ((NTSTATUS) 0x40000007)
+#define STATUS_SERIAL_MORE_WRITES        ((NTSTATUS) 0x40000008)
+#define STATUS_REGISTRY_RECOVERED        ((NTSTATUS) 0x40000009)
+#define STATUS_FT_READ_RECOVERY_FROM_BACKUP ((NTSTATUS) 0x4000000A)
+#define STATUS_FT_WRITE_RECOVERY         ((NTSTATUS) 0x4000000B)
+#define STATUS_SERIAL_COUNTER_TIMEOUT    ((NTSTATUS) 0x4000000C)
+#define STATUS_NULL_LM_PASSWORD          ((NTSTATUS) 0x4000000D)
+#define STATUS_IMAGE_MACHINE_TYPE_MISMATCH ((NTSTATUS) 0x4000000E)
+#define STATUS_RECEIVE_PARTIAL           ((NTSTATUS) 0x4000000F)
+#define STATUS_RECEIVE_EXPEDITED         ((NTSTATUS) 0x40000010)
+#define STATUS_RECEIVE_PARTIAL_EXPEDITED ((NTSTATUS) 0x40000011)
+#define STATUS_EVENT_DONE                ((NTSTATUS) 0x40000012)
+#define STATUS_EVENT_PENDING             ((NTSTATUS) 0x40000013)
+#define STATUS_CHECKING_FILE_SYSTEM      ((NTSTATUS) 0x40000014)
+#define STATUS_FATAL_APP_EXIT            ((NTSTATUS) 0x40000015)
+#define STATUS_PREDEFINED_HANDLE         ((NTSTATUS) 0x40000016)
+#define STATUS_WAS_UNLOCKED              ((NTSTATUS) 0x40000017)
+#define STATUS_SERVICE_NOTIFICATION      ((NTSTATUS) 0x40000018)
+#define STATUS_WAS_LOCKED                ((NTSTATUS) 0x40000019)
+#define STATUS_LOG_HARD_ERROR            ((NTSTATUS) 0x4000001A)
+#define STATUS_ALREADY_WIN32             ((NTSTATUS) 0x4000001B)
+#define STATUS_WX86_UNSIMULATE           ((NTSTATUS) 0x4000001C)
+#define STATUS_WX86_CONTINUE             ((NTSTATUS) 0x4000001D)
+#define STATUS_WX86_SINGLE_STEP          ((NTSTATUS) 0x4000001E)
+#define STATUS_WX86_BREAKPOINT           ((NTSTATUS) 0x4000001F)
+#define STATUS_WX86_EXCEPTION_CONTINUE   ((NTSTATUS) 0x40000020)
+#define STATUS_WX86_EXCEPTION_LASTCHANCE ((NTSTATUS) 0x40000021)
+#define STATUS_WX86_EXCEPTION_CHAIN      ((NTSTATUS) 0x40000022)
+#define STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE ((NTSTATUS) 0x40000023)
+#define STATUS_NO_YIELD_PERFORMED        ((NTSTATUS) 0x40000024)
+#define STATUS_TIMER_RESUME_IGNORED      ((NTSTATUS) 0x40000025)
+#define STATUS_ARBITRATION_UNHANDLED     ((NTSTATUS) 0x40000026)
+#define STATUS_CARDBUS_NOT_SUPPORTED     ((NTSTATUS) 0x40000027)
+#define STATUS_WX86_CREATEWX86TIB        ((NTSTATUS) 0x40000028)
+#define STATUS_MP_PROCESSOR_MISMATCH     ((NTSTATUS) 0x40000029)
+#define STATUS_HIBERNATED                ((NTSTATUS) 0x4000002A)
+#define STATUS_RESUME_HIBERNATION        ((NTSTATUS) 0x4000002B)
+#define STATUS_FIRMWARE_UPDATED          ((NTSTATUS) 0x4000002C)
+#define STATUS_WAKE_SYSTEM               ((NTSTATUS) 0x40000294)
+#define STATUS_DS_SHUTTING_DOWN          ((NTSTATUS) 0x40000370)
+
+#define RPC_NT_UUID_LOCAL_ONLY           ((NTSTATUS) 0x40020056)
+#define RPC_NT_SEND_INCOMPLETE           ((NTSTATUS) 0x400200AF)
+
+#define STATUS_CTX_CDM_CONNECT           ((NTSTATUS) 0x400A0004)
+#define STATUS_CTX_CDM_DISCONNECT        ((NTSTATUS) 0x400A0005)
+
+#define STATUS_SXS_RELEASE_ACTIVATION_CONTEXT ((NTSTATUS) 0x4015000D)
+
+#define STATUS_GUARD_PAGE_VIOLATION      ((NTSTATUS) 0x80000001)
+#define STATUS_DATATYPE_MISALIGNMENT     ((NTSTATUS) 0x80000002)
+#define STATUS_BREAKPOINT                ((NTSTATUS) 0x80000003)
+#define STATUS_SINGLE_STEP               ((NTSTATUS) 0x80000004)
+#define STATUS_BUFFER_OVERFLOW           ((NTSTATUS) 0x80000005)
+#define STATUS_NO_MORE_FILES             ((NTSTATUS) 0x80000006)
+#define STATUS_WAKE_SYSTEM_DEBUGGER      ((NTSTATUS) 0x80000007)
+
+#define STATUS_HANDLES_CLOSED            ((NTSTATUS) 0x8000000A)
+#define STATUS_NO_INHERITANCE            ((NTSTATUS) 0x8000000B)
+#define STATUS_GUID_SUBSTITUTION_MADE    ((NTSTATUS) 0x8000000C)
+#define STATUS_PARTIAL_COPY              ((NTSTATUS) 0x8000000D)
+#define STATUS_DEVICE_PAPER_EMPTY        ((NTSTATUS) 0x8000000E)
+#define STATUS_DEVICE_POWERED_OFF        ((NTSTATUS) 0x8000000F)
+#define STATUS_DEVICE_OFF_LINE           ((NTSTATUS) 0x80000010)
+#define STATUS_DEVICE_BUSY               ((NTSTATUS) 0x80000011)
+#define STATUS_NO_MORE_EAS               ((NTSTATUS) 0x80000012)
+#define STATUS_INVALID_EA_NAME           ((NTSTATUS) 0x80000013)
+#define STATUS_EA_LIST_INCONSISTENT      ((NTSTATUS) 0x80000014)
+#define STATUS_INVALID_EA_FLAG           ((NTSTATUS) 0x80000015)
+#define STATUS_VERIFY_REQUIRED           ((NTSTATUS) 0x80000016)
+#define STATUS_EXTRANEOUS_INFORMATION    ((NTSTATUS) 0x80000017)
+#define STATUS_RXACT_COMMIT_NECESSARY    ((NTSTATUS) 0x80000018)
+#define STATUS_NO_MORE_ENTRIES           ((NTSTATUS) 0x8000001A)
+#define STATUS_FILEMARK_DETECTED         ((NTSTATUS) 0x8000001B)
+#define STATUS_MEDIA_CHANGED             ((NTSTATUS) 0x8000001C)
+#define STATUS_BUS_RESET                 ((NTSTATUS) 0x8000001D)
+#define STATUS_END_OF_MEDIA              ((NTSTATUS) 0x8000001E)
+#define STATUS_BEGINNING_OF_MEDIA        ((NTSTATUS) 0x8000001F)
+#define STATUS_MEDIA_CHECK               ((NTSTATUS) 0x80000020)
+#define STATUS_SETMARK_DETECTED          ((NTSTATUS) 0x80000021)
+#define STATUS_NO_DATA_DETECTED          ((NTSTATUS) 0x80000022)
+#define STATUS_REDIRECTOR_HAS_OPEN_HANDLES ((NTSTATUS) 0x80000023)
+#define STATUS_SERVER_HAS_OPEN_HANDLES   ((NTSTATUS) 0x80000024)
+#define STATUS_ALREADY_DISCONNECTED      ((NTSTATUS) 0x80000025)
+#define STATUS_LONGJUMP                  ((NTSTATUS) 0x80000026)
+#define STATUS_CLEANER_CARTRIDGE_INSTALLED      ((NTSTATUS) 0x80000027)
+#define STATUS_PLUGPLAY_QUERY_VETOED     ((NTSTATUS) 0x80000028)
+#define STATUS_UNWIND_CONSOLIDATE        ((NTSTATUS) 0x80000029)
+#define STATUS_REGISTRY_HIVE_RECOVERED   ((NTSTATUS) 0x8000002A)
+#define STATUS_DLL_MIGHT_BE_INSECURE     ((NTSTATUS) 0x8000002B)
+#define STATUS_DLL_MIGHT_BE_INCOMPATIBLE ((NTSTATUS) 0x8000002C)
+
+#define STATUS_DEVICE_REQUIRES_CLEANING  ((NTSTATUS) 0x80000288)
+#define STATUS_DEVICE_DOOR_OPEN          ((NTSTATUS) 0x80000289)
+
+#define STATUS_CLUSTER_NODE_ALREADY_UP   ((NTSTATUS) 0x80130001)
+#define STATUS_CLUSTER_NODE_ALREADY_DOWN ((NTSTATUS) 0x80130002)
+#define STATUS_CLUSTER_NETWORK_ALREADY_ONLINE   ((NTSTATUS) 0x80130003)
+#define STATUS_CLUSTER_NETWORK_ALREADY_OFFLINE  ((NTSTATUS) 0x80130004)
+#define STATUS_CLUSTER_NODE_ALREADY_MEMBER      ((NTSTATUS) 0x80130005)
+
+#define STATUS_UNSUCCESSFUL              ((NTSTATUS) 0xC0000001)
+#define STATUS_NOT_IMPLEMENTED           ((NTSTATUS) 0xC0000002)
+#define STATUS_INVALID_INFO_CLASS        ((NTSTATUS) 0xC0000003)
+#define STATUS_INFO_LENGTH_MISMATCH      ((NTSTATUS) 0xC0000004)
+#define STATUS_ACCESS_VIOLATION          ((NTSTATUS) 0xC0000005)
+#define STATUS_IN_PAGE_ERROR             ((NTSTATUS) 0xC0000006)
+#define STATUS_PAGEFILE_QUOTA            ((NTSTATUS) 0xC0000007)
+#define STATUS_INVALID_HANDLE            ((NTSTATUS) 0xC0000008)
+#define STATUS_BAD_INITIAL_STACK         ((NTSTATUS) 0xC0000009)
+#define STATUS_BAD_INITIAL_PC            ((NTSTATUS) 0xC000000A)
+#define STATUS_INVALID_CID               ((NTSTATUS) 0xC000000B)
+#define STATUS_TIMER_NOT_CANCELED        ((NTSTATUS) 0xC000000C)
+#define STATUS_INVALID_PARAMETER         ((NTSTATUS) 0xC000000D)
+#define STATUS_NO_SUCH_DEVICE            ((NTSTATUS) 0xC000000E)
+#define STATUS_NO_SUCH_FILE              ((NTSTATUS) 0xC000000F)
+#define STATUS_INVALID_DEVICE_REQUEST    ((NTSTATUS) 0xC0000010)
+#define STATUS_END_OF_FILE               ((NTSTATUS) 0xC0000011)
+#define STATUS_WRONG_VOLUME              ((NTSTATUS) 0xC0000012)
+#define STATUS_NO_MEDIA_IN_DEVICE        ((NTSTATUS) 0xC0000013)
+#define STATUS_UNRECOGNIZED_MEDIA        ((NTSTATUS) 0xC0000014)
+#define STATUS_NONEXISTENT_SECTOR        ((NTSTATUS) 0xC0000015)
+#define STATUS_MORE_PROCESSING_REQUIRED  ((NTSTATUS) 0xC0000016)
+#define STATUS_NO_MEMORY                 ((NTSTATUS) 0xC0000017)
+#define STATUS_CONFLICTING_ADDRESSES     ((NTSTATUS) 0xC0000018)
+#define STATUS_NOT_MAPPED_VIEW           ((NTSTATUS) 0xC0000019)
+#define STATUS_UNABLE_TO_FREE_VM         ((NTSTATUS) 0xC000001A)
+#define STATUS_UNABLE_TO_DELETE_SECTION  ((NTSTATUS) 0xC000001B)
+#define STATUS_INVALID_SYSTEM_SERVICE    ((NTSTATUS) 0xC000001C)
+#define STATUS_ILLEGAL_INSTRUCTION       ((NTSTATUS) 0xC000001D)
+#define STATUS_INVALID_LOCK_SEQUENCE     ((NTSTATUS) 0xC000001E)
+#define STATUS_INVALID_VIEW_SIZE         ((NTSTATUS) 0xC000001F)
+#define STATUS_INVALID_FILE_FOR_SECTION  ((NTSTATUS) 0xC0000020)
+#define STATUS_ALREADY_COMMITTED         ((NTSTATUS) 0xC0000021)
+#define STATUS_ACCESS_DENIED             ((NTSTATUS) 0xC0000022)
+#define STATUS_BUFFER_TOO_SMALL          ((NTSTATUS) 0xC0000023)
+#define STATUS_OBJECT_TYPE_MISMATCH      ((NTSTATUS) 0xC0000024)
+#define STATUS_NONCONTINUABLE_EXCEPTION  ((NTSTATUS) 0xC0000025)
+#define STATUS_INVALID_DISPOSITION       ((NTSTATUS) 0xC0000026)
+#define STATUS_UNWIND                    ((NTSTATUS) 0xC0000027)
+#define STATUS_BAD_STACK                 ((NTSTATUS) 0xC0000028)
+#define STATUS_INVALID_UNWIND_TARGET     ((NTSTATUS) 0xC0000029)
+#define STATUS_NOT_LOCKED                ((NTSTATUS) 0xC000002A)
+#define STATUS_PARITY_ERROR              ((NTSTATUS) 0xC000002B)
+#define STATUS_UNABLE_TO_DECOMMIT_VM     ((NTSTATUS) 0xC000002C)
+#define STATUS_NOT_COMMITTED             ((NTSTATUS) 0xC000002D)
+#define STATUS_INVALID_PORT_ATTRIBUTES   ((NTSTATUS) 0xC000002E)
+#define STATUS_PORT_MESSAGE_TOO_LONG     ((NTSTATUS) 0xC000002F)
+#define STATUS_INVALID_PARAMETER_MIX     ((NTSTATUS) 0xC0000030)
+#define STATUS_INVALID_QUOTA_LOWER       ((NTSTATUS) 0xC0000031)
+#define STATUS_DISK_CORRUPT_ERROR        ((NTSTATUS) 0xC0000032)
+#define STATUS_OBJECT_NAME_INVALID       ((NTSTATUS) 0xC0000033)
+#define STATUS_OBJECT_NAME_NOT_FOUND     ((NTSTATUS) 0xC0000034)
+#define STATUS_OBJECT_NAME_COLLISION     ((NTSTATUS) 0xC0000035)
+#define STATUS_PORT_DISCONNECTED         ((NTSTATUS) 0xC0000037)
+#define STATUS_DEVICE_ALREADY_ATTACHED   ((NTSTATUS) 0xC0000038)
+#define STATUS_OBJECT_PATH_INVALID       ((NTSTATUS) 0xC0000039)
+#define STATUS_OBJECT_PATH_NOT_FOUND     ((NTSTATUS) 0xC000003A)
+#define STATUS_OBJECT_PATH_SYNTAX_BAD    ((NTSTATUS) 0xC000003B)
+#define STATUS_DATA_OVERRUN              ((NTSTATUS) 0xC000003C)
+#define STATUS_DATA_LATE_ERROR           ((NTSTATUS) 0xC000003D)
+#define STATUS_DATA_ERROR                ((NTSTATUS) 0xC000003E)
+#define STATUS_CRC_ERROR                 ((NTSTATUS) 0xC000003F)
+#define STATUS_SECTION_TOO_BIG           ((NTSTATUS) 0xC0000040)
+#define STATUS_PORT_CONNECTION_REFUSED   ((NTSTATUS) 0xC0000041)
+#define STATUS_INVALID_PORT_HANDLE       ((NTSTATUS) 0xC0000042)
+#define STATUS_SHARING_VIOLATION         ((NTSTATUS) 0xC0000043)
+#define STATUS_QUOTA_EXCEEDED            ((NTSTATUS) 0xC0000044)
+#define STATUS_INVALID_PAGE_PROTECTION   ((NTSTATUS) 0xC0000045)
+#define STATUS_MUTANT_NOT_OWNED          ((NTSTATUS) 0xC0000046)
+#define STATUS_SEMAPHORE_LIMIT_EXCEEDED  ((NTSTATUS) 0xC0000047)
+#define STATUS_PORT_ALREADY_SET          ((NTSTATUS) 0xC0000048)
+#define STATUS_SECTION_NOT_IMAGE         ((NTSTATUS) 0xC0000049)
+#define STATUS_SUSPEND_COUNT_EXCEEDED    ((NTSTATUS) 0xC000004A)
+#define STATUS_THREAD_IS_TERMINATING     ((NTSTATUS) 0xC000004B)
+#define STATUS_BAD_WORKING_SET_LIMIT     ((NTSTATUS) 0xC000004C)
+#define STATUS_INCOMPATIBLE_FILE_MAP     ((NTSTATUS) 0xC000004D)
+#define STATUS_SECTION_PROTECTION        ((NTSTATUS) 0xC000004E)
+#define STATUS_EAS_NOT_SUPPORTED         ((NTSTATUS) 0xC000004F)
+#define STATUS_EA_TOO_LARGE              ((NTSTATUS) 0xC0000050)
+#define STATUS_NONEXISTENT_EA_ENTRY      ((NTSTATUS) 0xC0000051)
+#define STATUS_NO_EAS_ON_FILE            ((NTSTATUS) 0xC0000052)
+#define STATUS_EA_CORRUPT_ERROR          ((NTSTATUS) 0xC0000053)
+#define STATUS_FILE_LOCK_CONFLICT        ((NTSTATUS) 0xC0000054)
+#define STATUS_LOCK_NOT_GRANTED          ((NTSTATUS) 0xC0000055)
+#define STATUS_DELETE_PENDING            ((NTSTATUS) 0xC0000056)
+#define STATUS_CTL_FILE_NOT_SUPPORTED    ((NTSTATUS) 0xC0000057)
+#define STATUS_UNKNOWN_REVISION          ((NTSTATUS) 0xC0000058)
+#define STATUS_REVISION_MISMATCH         ((NTSTATUS) 0xC0000059)
+#define STATUS_INVALID_OWNER             ((NTSTATUS) 0xC000005A)
+#define STATUS_INVALID_PRIMARY_GROUP     ((NTSTATUS) 0xC000005B)
+#define STATUS_NO_IMPERSONATION_TOKEN    ((NTSTATUS) 0xC000005C)
+#define STATUS_CANT_DISABLE_MANDATORY    ((NTSTATUS) 0xC000005D)
+#define STATUS_NO_LOGON_SERVERS          ((NTSTATUS) 0xC000005E)
+#define STATUS_NO_SUCH_LOGON_SESSION     ((NTSTATUS) 0xC000005F)
+#define STATUS_NO_SUCH_PRIVILEGE         ((NTSTATUS) 0xC0000060)
+#define STATUS_PRIVILEGE_NOT_HELD        ((NTSTATUS) 0xC0000061)
+#define STATUS_INVALID_ACCOUNT_NAME      ((NTSTATUS) 0xC0000062)
+#define STATUS_USER_EXISTS               ((NTSTATUS) 0xC0000063)
+#define STATUS_NO_SUCH_USER              ((NTSTATUS) 0xC0000064)
+#define STATUS_GROUP_EXISTS              ((NTSTATUS) 0xC0000065)
+#define STATUS_NO_SUCH_GROUP             ((NTSTATUS) 0xC0000066)
+#define STATUS_MEMBER_IN_GROUP           ((NTSTATUS) 0xC0000067)
+#define STATUS_MEMBER_NOT_IN_GROUP       ((NTSTATUS) 0xC0000068)
+#define STATUS_LAST_ADMIN                ((NTSTATUS) 0xC0000069)
+#define STATUS_WRONG_PASSWORD            ((NTSTATUS) 0xC000006A)
+#define STATUS_ILL_FORMED_PASSWORD       ((NTSTATUS) 0xC000006B)
+#define STATUS_PASSWORD_RESTRICTION      ((NTSTATUS) 0xC000006C)
+#define STATUS_LOGON_FAILURE             ((NTSTATUS) 0xC000006D)
+#define STATUS_ACCOUNT_RESTRICTION       ((NTSTATUS) 0xC000006E)
+#define STATUS_INVALID_LOGON_HOURS       ((NTSTATUS) 0xC000006F)
+#define STATUS_INVALID_WORKSTATION       ((NTSTATUS) 0xC0000070)
+#define STATUS_PASSWORD_EXPIRED          ((NTSTATUS) 0xC0000071)
+#define STATUS_ACCOUNT_DISABLED          ((NTSTATUS) 0xC0000072)
+#define STATUS_NONE_MAPPED               ((NTSTATUS) 0xC0000073)
+#define STATUS_TOO_MANY_LUIDS_REQUESTED  ((NTSTATUS) 0xC0000074)
+#define STATUS_LUIDS_EXHAUSTED           ((NTSTATUS) 0xC0000075)
+#define STATUS_INVALID_SUB_AUTHORITY     ((NTSTATUS) 0xC0000076)
+#define STATUS_INVALID_ACL               ((NTSTATUS) 0xC0000077)
+#define STATUS_INVALID_SID               ((NTSTATUS) 0xC0000078)
+#define STATUS_INVALID_SECURITY_DESCR    ((NTSTATUS) 0xC0000079)
+#define STATUS_PROCEDURE_NOT_FOUND       ((NTSTATUS) 0xC000007A)
+#define STATUS_INVALID_IMAGE_FORMAT      ((NTSTATUS) 0xC000007B)
+#define STATUS_NO_TOKEN                  ((NTSTATUS) 0xC000007C)
+#define STATUS_BAD_INHERITANCE_ACL       ((NTSTATUS) 0xC000007D)
+#define STATUS_RANGE_NOT_LOCKED          ((NTSTATUS) 0xC000007E)
+#define STATUS_DISK_FULL                 ((NTSTATUS) 0xC000007F)
+#define STATUS_SERVER_DISABLED           ((NTSTATUS) 0xC0000080)
+#define STATUS_SERVER_NOT_DISABLED       ((NTSTATUS) 0xC0000081)
+#define STATUS_TOO_MANY_GUIDS_REQUESTED  ((NTSTATUS) 0xC0000082)
+#define STATUS_GUIDS_EXHAUSTED           ((NTSTATUS) 0xC0000083)
+#define STATUS_INVALID_ID_AUTHORITY      ((NTSTATUS) 0xC0000084)
+#define STATUS_AGENTS_EXHAUSTED          ((NTSTATUS) 0xC0000085)
+#define STATUS_INVALID_VOLUME_LABEL      ((NTSTATUS) 0xC0000086)
+#define STATUS_SECTION_NOT_EXTENDED      ((NTSTATUS) 0xC0000087)
+#define STATUS_NOT_MAPPED_DATA           ((NTSTATUS) 0xC0000088)
+#define STATUS_RESOURCE_DATA_NOT_FOUND   ((NTSTATUS) 0xC0000089)
+#define STATUS_RESOURCE_TYPE_NOT_FOUND   ((NTSTATUS) 0xC000008A)
+#define STATUS_RESOURCE_NAME_NOT_FOUND   ((NTSTATUS) 0xC000008B)
+#define STATUS_ARRAY_BOUNDS_EXCEEDED     ((NTSTATUS) 0xC000008C)
+#define STATUS_FLOAT_DENORMAL_OPERAND    ((NTSTATUS) 0xC000008D)
+#define STATUS_FLOAT_DIVIDE_BY_ZERO      ((NTSTATUS) 0xC000008E)
+#define STATUS_FLOAT_INEXACT_RESULT      ((NTSTATUS) 0xC000008F)
+#define STATUS_FLOAT_INVALID_OPERATION   ((NTSTATUS) 0xC0000090)
+#define STATUS_FLOAT_OVERFLOW            ((NTSTATUS) 0xC0000091)
+#define STATUS_FLOAT_STACK_CHECK         ((NTSTATUS) 0xC0000092)
+#define STATUS_FLOAT_UNDERFLOW           ((NTSTATUS) 0xC0000093)
+#define STATUS_INTEGER_DIVIDE_BY_ZERO    ((NTSTATUS) 0xC0000094)
+#define STATUS_INTEGER_OVERFLOW          ((NTSTATUS) 0xC0000095)
+#define STATUS_PRIVILEGED_INSTRUCTION    ((NTSTATUS) 0xC0000096)
+#define STATUS_TOO_MANY_PAGING_FILES     ((NTSTATUS) 0xC0000097)
+#define STATUS_FILE_INVALID              ((NTSTATUS) 0xC0000098)
+#define STATUS_ALLOTTED_SPACE_EXCEEDED   ((NTSTATUS) 0xC0000099)
+#define STATUS_INSUFFICIENT_RESOURCES    ((NTSTATUS) 0xC000009A)
+#define STATUS_DFS_EXIT_PATH_FOUND       ((NTSTATUS) 0xC000009B)
+#define STATUS_DEVICE_DATA_ERROR         ((NTSTATUS) 0xC000009C)
+#define STATUS_DEVICE_NOT_CONNECTED      ((NTSTATUS) 0xC000009D)
+#define STATUS_DEVICE_POWER_FAILURE      ((NTSTATUS) 0xC000009E)
+#define STATUS_FREE_VM_NOT_AT_BASE       ((NTSTATUS) 0xC000009F)
+#define STATUS_MEMORY_NOT_ALLOCATED      ((NTSTATUS) 0xC00000A0)
+#define STATUS_WORKING_SET_QUOTA         ((NTSTATUS) 0xC00000A1)
+#define STATUS_MEDIA_WRITE_PROTECTED     ((NTSTATUS) 0xC00000A2)
+#define STATUS_DEVICE_NOT_READY          ((NTSTATUS) 0xC00000A3)
+#define STATUS_INVALID_GROUP_ATTRIBUTES  ((NTSTATUS) 0xC00000A4)
+#define STATUS_BAD_IMPERSONATION_LEVEL   ((NTSTATUS) 0xC00000A5)
+#define STATUS_CANT_OPEN_ANONYMOUS       ((NTSTATUS) 0xC00000A6)
+#define STATUS_BAD_VALIDATION_CLASS      ((NTSTATUS) 0xC00000A7)
+#define STATUS_BAD_TOKEN_TYPE            ((NTSTATUS) 0xC00000A8)
+#define STATUS_BAD_MASTER_BOOT_RECORD    ((NTSTATUS) 0xC00000A9)
+#define STATUS_INSTRUCTION_MISALIGNMENT  ((NTSTATUS) 0xC00000AA)
+#define STATUS_INSTANCE_NOT_AVAILABLE    ((NTSTATUS) 0xC00000AB)
+#define STATUS_PIPE_NOT_AVAILABLE        ((NTSTATUS) 0xC00000AC)
+#define STATUS_INVALID_PIPE_STATE        ((NTSTATUS) 0xC00000AD)
+#define STATUS_PIPE_BUSY                 ((NTSTATUS) 0xC00000AE)
+#define STATUS_ILLEGAL_FUNCTION          ((NTSTATUS) 0xC00000AF)
+#define STATUS_PIPE_DISCONNECTED         ((NTSTATUS) 0xC00000B0)
+#define STATUS_PIPE_CLOSING              ((NTSTATUS) 0xC00000B1)
+#define STATUS_PIPE_CONNECTED            ((NTSTATUS) 0xC00000B2)
+#define STATUS_PIPE_LISTENING            ((NTSTATUS) 0xC00000B3)
+#define STATUS_INVALID_READ_MODE         ((NTSTATUS) 0xC00000B4)
+#define STATUS_IO_TIMEOUT                ((NTSTATUS) 0xC00000B5)
+#define STATUS_FILE_FORCED_CLOSED        ((NTSTATUS) 0xC00000B6)
+#define STATUS_PROFILING_NOT_STARTED     ((NTSTATUS) 0xC00000B7)
+#define STATUS_PROFILING_NOT_STOPPED     ((NTSTATUS) 0xC00000B8)
+#define STATUS_COULD_NOT_INTERPRET       ((NTSTATUS) 0xC00000B9)
+#define STATUS_FILE_IS_A_DIRECTORY       ((NTSTATUS) 0xC00000BA)
+#define STATUS_NOT_SUPPORTED             ((NTSTATUS) 0xC00000BB)
+#define STATUS_REMOTE_NOT_LISTENING      ((NTSTATUS) 0xC00000BC)
+#define STATUS_DUPLICATE_NAME            ((NTSTATUS) 0xC00000BD)
+#define STATUS_BAD_NETWORK_PATH          ((NTSTATUS) 0xC00000BE)
+#define STATUS_NETWORK_BUSY              ((NTSTATUS) 0xC00000BF)
+#define STATUS_DEVICE_DOES_NOT_EXIST     ((NTSTATUS) 0xC00000C0)
+#define STATUS_TOO_MANY_COMMANDS         ((NTSTATUS) 0xC00000C1)
+#define STATUS_ADAPTER_HARDWARE_ERROR    ((NTSTATUS) 0xC00000C2)
+#define STATUS_INVALID_NETWORK_RESPONSE  ((NTSTATUS) 0xC00000C3)
+#define STATUS_UNEXPECTED_NETWORK_ERROR  ((NTSTATUS) 0xC00000C4)
+#define STATUS_BAD_REMOTE_ADAPTER        ((NTSTATUS) 0xC00000C5)
+#define STATUS_PRINT_QUEUE_FULL          ((NTSTATUS) 0xC00000C6)
+#define STATUS_NO_SPOOL_SPACE            ((NTSTATUS) 0xC00000C7)
+#define STATUS_PRINT_CANCELLED           ((NTSTATUS) 0xC00000C8)
+#define STATUS_NETWORK_NAME_DELETED      ((NTSTATUS) 0xC00000C9)
+#define STATUS_NETWORK_ACCESS_DENIED     ((NTSTATUS) 0xC00000CA)
+#define STATUS_BAD_DEVICE_TYPE           ((NTSTATUS) 0xC00000CB)
+#define STATUS_BAD_NETWORK_NAME          ((NTSTATUS) 0xC00000CC)
+#define STATUS_TOO_MANY_NAMES            ((NTSTATUS) 0xC00000CD)
+#define STATUS_TOO_MANY_SESSIONS         ((NTSTATUS) 0xC00000CE)
+#define STATUS_SHARING_PAUSED            ((NTSTATUS) 0xC00000CF)
+#define STATUS_REQUEST_NOT_ACCEPTED      ((NTSTATUS) 0xC00000D0)
+#define STATUS_REDIRECTOR_PAUSED         ((NTSTATUS) 0xC00000D1)
+#define STATUS_NET_WRITE_FAULT           ((NTSTATUS) 0xC00000D2)
+#define STATUS_PROFILING_AT_LIMIT        ((NTSTATUS) 0xC00000D3)
+#define STATUS_NOT_SAME_DEVICE           ((NTSTATUS) 0xC00000D4)
+#define STATUS_FILE_RENAMED              ((NTSTATUS) 0xC00000D5)
+#define STATUS_VIRTUAL_CIRCUIT_CLOSED    ((NTSTATUS) 0xC00000D6)
+#define STATUS_NO_SECURITY_ON_OBJECT     ((NTSTATUS) 0xC00000D7)
+#define STATUS_CANT_WAIT                 ((NTSTATUS) 0xC00000D8)
+#define STATUS_PIPE_EMPTY                ((NTSTATUS) 0xC00000D9)
+#define STATUS_CANT_ACCESS_DOMAIN_INFO   ((NTSTATUS) 0xC00000DA)
+#define STATUS_CANT_TERMINATE_SELF       ((NTSTATUS) 0xC00000DB)
+#define STATUS_INVALID_SERVER_STATE      ((NTSTATUS) 0xC00000DC)
+#define STATUS_INVALID_DOMAIN_STATE      ((NTSTATUS) 0xC00000DD)
+#define STATUS_INVALID_DOMAIN_ROLE       ((NTSTATUS) 0xC00000DE)
+#define STATUS_NO_SUCH_DOMAIN            ((NTSTATUS) 0xC00000DF)
+#define STATUS_DOMAIN_EXISTS             ((NTSTATUS) 0xC00000E0)
+#define STATUS_DOMAIN_LIMIT_EXCEEDED     ((NTSTATUS) 0xC00000E1)
+#define STATUS_OPLOCK_NOT_GRANTED        ((NTSTATUS) 0xC00000E2)
+#define STATUS_INVALID_OPLOCK_PROTOCOL   ((NTSTATUS) 0xC00000E3)
+#define STATUS_INTERNAL_DB_CORRUPTION    ((NTSTATUS) 0xC00000E4)
+#define STATUS_INTERNAL_ERROR            ((NTSTATUS) 0xC00000E5)
+#define STATUS_GENERIC_NOT_MAPPED        ((NTSTATUS) 0xC00000E6)
+#define STATUS_BAD_DESCRIPTOR_FORMAT     ((NTSTATUS) 0xC00000E7)
+#define STATUS_INVALID_USER_BUFFER       ((NTSTATUS) 0xC00000E8)
+#define STATUS_UNEXPECTED_IO_ERROR       ((NTSTATUS) 0xC00000E9)
+#define STATUS_UNEXPECTED_MM_CREATE_ERR  ((NTSTATUS) 0xC00000EA)
+#define STATUS_UNEXPECTED_MM_MAP_ERROR   ((NTSTATUS) 0xC00000EB)
+#define STATUS_UNEXPECTED_MM_EXTEND_ERR  ((NTSTATUS) 0xC00000EC)
+#define STATUS_NOT_LOGON_PROCESS         ((NTSTATUS) 0xC00000ED)
+#define STATUS_LOGON_SESSION_EXISTS      ((NTSTATUS) 0xC00000EE)
+#define STATUS_INVALID_PARAMETER_1       ((NTSTATUS) 0xC00000EF)
+#define STATUS_INVALID_PARAMETER_2       ((NTSTATUS) 0xC00000F0)
+#define STATUS_INVALID_PARAMETER_3       ((NTSTATUS) 0xC00000F1)
+#define STATUS_INVALID_PARAMETER_4       ((NTSTATUS) 0xC00000F2)
+#define STATUS_INVALID_PARAMETER_5       ((NTSTATUS) 0xC00000F3)
+#define STATUS_INVALID_PARAMETER_6       ((NTSTATUS) 0xC00000F4)
+#define STATUS_INVALID_PARAMETER_7       ((NTSTATUS) 0xC00000F5)
+#define STATUS_INVALID_PARAMETER_8       ((NTSTATUS) 0xC00000F6)
+#define STATUS_INVALID_PARAMETER_9       ((NTSTATUS) 0xC00000F7)
+#define STATUS_INVALID_PARAMETER_10      ((NTSTATUS) 0xC00000F8)
+#define STATUS_INVALID_PARAMETER_11      ((NTSTATUS) 0xC00000F9)
+#define STATUS_INVALID_PARAMETER_12      ((NTSTATUS) 0xC00000FA)
+#define STATUS_REDIRECTOR_NOT_STARTED    ((NTSTATUS) 0xC00000FB)
+#define STATUS_REDIRECTOR_STARTED        ((NTSTATUS) 0xC00000FC)
+#define STATUS_STACK_OVERFLOW            ((NTSTATUS) 0xC00000FD)
+#define STATUS_NO_SUCH_PACKAGE           ((NTSTATUS) 0xC00000FE)
+#define STATUS_BAD_FUNCTION_TABLE        ((NTSTATUS) 0xC00000FF)
+#define STATUS_VARIABLE_NOT_FOUND        ((NTSTATUS) 0xC0000100)
+#define STATUS_DIRECTORY_NOT_EMPTY       ((NTSTATUS) 0xC0000101)
+#define STATUS_FILE_CORRUPT_ERROR        ((NTSTATUS) 0xC0000102)
+#define STATUS_NOT_A_DIRECTORY           ((NTSTATUS) 0xC0000103)
+#define STATUS_BAD_LOGON_SESSION_STATE   ((NTSTATUS) 0xC0000104)
+#define STATUS_LOGON_SESSION_COLLISION   ((NTSTATUS) 0xC0000105)
+#define STATUS_NAME_TOO_LONG             ((NTSTATUS) 0xC0000106)
+#define STATUS_FILES_OPEN                ((NTSTATUS) 0xC0000107)
+#define STATUS_CONNECTION_IN_USE         ((NTSTATUS) 0xC0000108)
+#define STATUS_MESSAGE_NOT_FOUND         ((NTSTATUS) 0xC0000109)
+#define STATUS_PROCESS_IS_TERMINATING    ((NTSTATUS) 0xC000010A)
+#define STATUS_INVALID_LOGON_TYPE        ((NTSTATUS) 0xC000010B)
+#define STATUS_NO_GUID_TRANSLATION       ((NTSTATUS) 0xC000010C)
+#define STATUS_CANNOT_IMPERSONATE        ((NTSTATUS) 0xC000010D)
+#define STATUS_IMAGE_ALREADY_LOADED      ((NTSTATUS) 0xC000010E)
+#define STATUS_ABIOS_NOT_PRESENT         ((NTSTATUS) 0xC000010F)
+#define STATUS_ABIOS_LID_NOT_EXIST       ((NTSTATUS) 0xC0000110)
+#define STATUS_ABIOS_LID_ALREADY_OWNED   ((NTSTATUS) 0xC0000111)
+#define STATUS_ABIOS_NOT_LID_OWNER       ((NTSTATUS) 0xC0000112)
+#define STATUS_ABIOS_INVALID_COMMAND     ((NTSTATUS) 0xC0000113)
+#define STATUS_ABIOS_INVALID_LID         ((NTSTATUS) 0xC0000114)
+#define STATUS_ABIOS_SELECTOR_NOT_AVAILABLE ((NTSTATUS) 0xC0000115)
+#define STATUS_ABIOS_INVALID_SELECTOR    ((NTSTATUS) 0xC0000116)
+#define STATUS_NO_LDT                    ((NTSTATUS) 0xC0000117)
+#define STATUS_INVALID_LDT_SIZE          ((NTSTATUS) 0xC0000118)
+#define STATUS_INVALID_LDT_OFFSET        ((NTSTATUS) 0xC0000119)
+#define STATUS_INVALID_LDT_DESCRIPTOR    ((NTSTATUS) 0xC000011A)
+#define STATUS_INVALID_IMAGE_NE_FORMAT   ((NTSTATUS) 0xC000011B)
+#define STATUS_RXACT_INVALID_STATE       ((NTSTATUS) 0xC000011C)
+#define STATUS_RXACT_COMMIT_FAILURE      ((NTSTATUS) 0xC000011D)
+#define STATUS_MAPPED_FILE_SIZE_ZERO     ((NTSTATUS) 0xC000011E)
+#define STATUS_TOO_MANY_OPENED_FILES     ((NTSTATUS) 0xC000011F)
+#define STATUS_CANCELLED                 ((NTSTATUS) 0xC0000120)
+#define STATUS_CANNOT_DELETE             ((NTSTATUS) 0xC0000121)
+#define STATUS_INVALID_COMPUTER_NAME     ((NTSTATUS) 0xC0000122)
+#define STATUS_FILE_DELETED              ((NTSTATUS) 0xC0000123)
+#define STATUS_SPECIAL_ACCOUNT           ((NTSTATUS) 0xC0000124)
+#define STATUS_SPECIAL_GROUP             ((NTSTATUS) 0xC0000125)
+#define STATUS_SPECIAL_USER              ((NTSTATUS) 0xC0000126)
+#define STATUS_MEMBERS_PRIMARY_GROUP     ((NTSTATUS) 0xC0000127)
+#define STATUS_FILE_CLOSED               ((NTSTATUS) 0xC0000128)
+#define STATUS_TOO_MANY_THREADS          ((NTSTATUS) 0xC0000129)
+#define STATUS_THREAD_NOT_IN_PROCESS     ((NTSTATUS) 0xC000012A)
+#define STATUS_TOKEN_ALREADY_IN_USE      ((NTSTATUS) 0xC000012B)
+#define STATUS_PAGEFILE_QUOTA_EXCEEDED   ((NTSTATUS) 0xC000012C)
+#define STATUS_COMMITMENT_LIMIT          ((NTSTATUS) 0xC000012D)
+#define STATUS_INVALID_IMAGE_LE_FORMAT   ((NTSTATUS) 0xC000012E)
+#define STATUS_INVALID_IMAGE_NOT_MZ      ((NTSTATUS) 0xC000012F)
+#define STATUS_INVALID_IMAGE_PROTECT     ((NTSTATUS) 0xC0000130)
+#define STATUS_INVALID_IMAGE_WIN_16      ((NTSTATUS) 0xC0000131)
+#define STATUS_LOGON_SERVER_CONFLICT     ((NTSTATUS) 0xC0000132)
+#define STATUS_TIME_DIFFERENCE_AT_DC     ((NTSTATUS) 0xC0000133)
+#define STATUS_SYNCHRONIZATION_REQUIRED  ((NTSTATUS) 0xC0000134)
+#define STATUS_DLL_NOT_FOUND             ((NTSTATUS) 0xC0000135)
+#define STATUS_OPEN_FAILED               ((NTSTATUS) 0xC0000136)
+#define STATUS_IO_PRIVILEGE_FAILED       ((NTSTATUS) 0xC0000137)
+#define STATUS_ORDINAL_NOT_FOUND         ((NTSTATUS) 0xC0000138)
+#define STATUS_ENTRYPOINT_NOT_FOUND      ((NTSTATUS) 0xC0000139)
+#define STATUS_CONTROL_C_EXIT            ((NTSTATUS) 0xC000013A)
+#define STATUS_LOCAL_DISCONNECT          ((NTSTATUS) 0xC000013B)
+#define STATUS_REMOTE_DISCONNECT         ((NTSTATUS) 0xC000013C)
+#define STATUS_REMOTE_RESOURCES          ((NTSTATUS) 0xC000013D)
+#define STATUS_LINK_FAILED               ((NTSTATUS) 0xC000013E)
+#define STATUS_LINK_TIMEOUT              ((NTSTATUS) 0xC000013F)
+#define STATUS_INVALID_CONNECTION        ((NTSTATUS) 0xC0000140)
+#define STATUS_INVALID_ADDRESS           ((NTSTATUS) 0xC0000141)
+#define STATUS_DLL_INIT_FAILED           ((NTSTATUS) 0xC0000142)
+#define STATUS_MISSING_SYSTEMFILE        ((NTSTATUS) 0xC0000143)
+#define STATUS_UNHANDLED_EXCEPTION       ((NTSTATUS) 0xC0000144)
+#define STATUS_APP_INIT_FAILURE          ((NTSTATUS) 0xC0000145)
+#define STATUS_PAGEFILE_CREATE_FAILED    ((NTSTATUS) 0xC0000146)
+#define STATUS_NO_PAGEFILE               ((NTSTATUS) 0xC0000147)
+#define STATUS_INVALID_LEVEL             ((NTSTATUS) 0xC0000148)
+#define STATUS_WRONG_PASSWORD_CORE       ((NTSTATUS) 0xC0000149)
+#define STATUS_ILLEGAL_FLOAT_CONTEXT     ((NTSTATUS) 0xC000014A)
+#define STATUS_PIPE_BROKEN               ((NTSTATUS) 0xC000014B)
+#define STATUS_REGISTRY_CORRUPT          ((NTSTATUS) 0xC000014C)
+#define STATUS_REGISTRY_IO_FAILED        ((NTSTATUS) 0xC000014D)
+#define STATUS_NO_EVENT_PAIR             ((NTSTATUS) 0xC000014E)
+#define STATUS_UNRECOGNIZED_VOLUME       ((NTSTATUS) 0xC000014F)
+#define STATUS_SERIAL_NO_DEVICE_INITED   ((NTSTATUS) 0xC0000150)
+#define STATUS_NO_SUCH_ALIAS             ((NTSTATUS) 0xC0000151)
+#define STATUS_MEMBER_NOT_IN_ALIAS       ((NTSTATUS) 0xC0000152)
+#define STATUS_MEMBER_IN_ALIAS           ((NTSTATUS) 0xC0000153)
+#define STATUS_ALIAS_EXISTS              ((NTSTATUS) 0xC0000154)
+#define STATUS_LOGON_NOT_GRANTED         ((NTSTATUS) 0xC0000155)
+#define STATUS_TOO_MANY_SECRETS          ((NTSTATUS) 0xC0000156)
+#define STATUS_SECRET_TOO_LONG           ((NTSTATUS) 0xC0000157)
+#define STATUS_INTERNAL_DB_ERROR         ((NTSTATUS) 0xC0000158)
+#define STATUS_FULLSCREEN_MODE           ((NTSTATUS) 0xC0000159)
+#define STATUS_TOO_MANY_CONTEXT_IDS      ((NTSTATUS) 0xC000015A)
+#define STATUS_LOGON_TYPE_NOT_GRANTED    ((NTSTATUS) 0xC000015B)
+#define STATUS_NOT_REGISTRY_FILE         ((NTSTATUS) 0xC000015C)
+#define STATUS_NT_CROSS_ENCRYPTION_REQUIRED ((NTSTATUS) 0xC000015D)
+#define STATUS_DOMAIN_CTRLR_CONFIG_ERROR ((NTSTATUS) 0xC000015E)
+#define STATUS_FT_MISSING_MEMBER         ((NTSTATUS) 0xC000015F)
+#define STATUS_ILL_FORMED_SERVICE_ENTRY  ((NTSTATUS) 0xC0000160)
+#define STATUS_ILLEGAL_CHARACTER         ((NTSTATUS) 0xC0000161)
+#define STATUS_UNMAPPABLE_CHARACTER      ((NTSTATUS) 0xC0000162)
+#define STATUS_UNDEFINED_CHARACTER       ((NTSTATUS) 0xC0000163)
+#define STATUS_FLOPPY_VOLUME             ((NTSTATUS) 0xC0000164)
+#define STATUS_FLOPPY_ID_MARK_NOT_FOUND  ((NTSTATUS) 0xC0000165)
+#define STATUS_FLOPPY_WRONG_CYLINDER     ((NTSTATUS) 0xC0000166)
+#define STATUS_FLOPPY_UNKNOWN_ERROR      ((NTSTATUS) 0xC0000167)
+#define STATUS_FLOPPY_BAD_REGISTERS      ((NTSTATUS) 0xC0000168)
+#define STATUS_DISK_RECALIBRATE_FAILED   ((NTSTATUS) 0xC0000169)
+#define STATUS_DISK_OPERATION_FAILED     ((NTSTATUS) 0xC000016A)
+#define STATUS_DISK_RESET_FAILED         ((NTSTATUS) 0xC000016B)
+#define STATUS_SHARED_IRQ_BUSY           ((NTSTATUS) 0xC000016C)
+#define STATUS_FT_ORPHANING              ((NTSTATUS) 0xC000016D)
+#define STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT ((NTSTATUS) 0xC000016E)
+
+#define STATUS_PARTITION_FAILURE         ((NTSTATUS) 0xC0000172)
+#define STATUS_INVALID_BLOCK_LENGTH      ((NTSTATUS) 0xC0000173)
+#define STATUS_DEVICE_NOT_PARTITIONED    ((NTSTATUS) 0xC0000174)
+#define STATUS_UNABLE_TO_LOCK_MEDIA      ((NTSTATUS) 0xC0000175)
+#define STATUS_UNABLE_TO_UNLOAD_MEDIA    ((NTSTATUS) 0xC0000176)
+#define STATUS_EOM_OVERFLOW              ((NTSTATUS) 0xC0000177)
+#define STATUS_NO_MEDIA                  ((NTSTATUS) 0xC0000178)
+#define STATUS_NO_SUCH_MEMBER            ((NTSTATUS) 0xC000017A)
+#define STATUS_INVALID_MEMBER            ((NTSTATUS) 0xC000017B)
+#define STATUS_KEY_DELETED               ((NTSTATUS) 0xC000017C)
+#define STATUS_NO_LOG_SPACE              ((NTSTATUS) 0xC000017D)
+#define STATUS_TOO_MANY_SIDS             ((NTSTATUS) 0xC000017E)
+#define STATUS_LM_CROSS_ENCRYPTION_REQUIRED ((NTSTATUS) 0xC000017F)
+#define STATUS_KEY_HAS_CHILDREN          ((NTSTATUS) 0xC0000180)
+#define STATUS_CHILD_MUST_BE_VOLATILE    ((NTSTATUS) 0xC0000181)
+#define STATUS_DEVICE_CONFIGURATION_ERROR ((NTSTATUS) 0xC0000182)
+#define STATUS_DRIVER_INTERNAL_ERROR     ((NTSTATUS) 0xC0000183)
+#define STATUS_INVALID_DEVICE_STATE      ((NTSTATUS) 0xC0000184)
+#define STATUS_IO_DEVICE_ERROR           ((NTSTATUS) 0xC0000185)
+#define STATUS_DEVICE_PROTOCOL_ERROR     ((NTSTATUS) 0xC0000186)
+#define STATUS_BACKUP_CONTROLLER         ((NTSTATUS) 0xC0000187)
+#define STATUS_LOG_FILE_FULL             ((NTSTATUS) 0xC0000188)
+#define STATUS_TOO_LATE                  ((NTSTATUS) 0xC0000189)
+#define STATUS_NO_TRUST_LSA_SECRET       ((NTSTATUS) 0xC000018A)
+#define STATUS_NO_TRUST_SAM_ACCOUNT      ((NTSTATUS) 0xC000018B)
+#define STATUS_TRUSTED_DOMAIN_FAILURE    ((NTSTATUS) 0xC000018C)
+#define STATUS_TRUSTED_RELATIONSHIP_FAILURE ((NTSTATUS) 0xC000018D)
+#define STATUS_EVENTLOG_FILE_CORRUPT     ((NTSTATUS) 0xC000018E)
+#define STATUS_EVENTLOG_CANT_START       ((NTSTATUS) 0xC000018F)
+#define STATUS_TRUST_FAILURE             ((NTSTATUS) 0xC0000190)
+#define STATUS_MUTANT_LIMIT_EXCEEDED     ((NTSTATUS) 0xC0000191)
+#define STATUS_NETLOGON_NOT_STARTED      ((NTSTATUS) 0xC0000192)
+#define STATUS_ACCOUNT_EXPIRED           ((NTSTATUS) 0xC0000193)
+#define STATUS_POSSIBLE_DEADLOCK         ((NTSTATUS) 0xC0000194)
+#define STATUS_NETWORK_CREDENTIAL_CONFLICT ((NTSTATUS) 0xC0000195)
+#define STATUS_REMOTE_SESSION_LIMIT      ((NTSTATUS) 0xC0000196)
+#define STATUS_EVENTLOG_FILE_CHANGED     ((NTSTATUS) 0xC0000197)
+#define STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT ((NTSTATUS) 0xC0000198)
+#define STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT ((NTSTATUS) 0xC0000199)
+#define STATUS_NOLOGON_SERVER_TRUST_ACCOUNT ((NTSTATUS) 0xC000019A)
+#define STATUS_DOMAIN_TRUST_INCONSISTENT ((NTSTATUS) 0xC000019B)
+#define STATUS_FS_DRIVER_REQUIRED        ((NTSTATUS) 0xC000019C)
+#define STATUS_NO_USER_SESSION_KEY       ((NTSTATUS) 0xC0000202)
+#define STATUS_USER_SESSION_DELETED      ((NTSTATUS) 0xC0000203)
+#define STATUS_RESOURCE_LANG_NOT_FOUND   ((NTSTATUS) 0xC0000204)
+#define STATUS_INSUFF_SERVER_RESOURCES   ((NTSTATUS) 0xC0000205)
+#define STATUS_INVALID_BUFFER_SIZE       ((NTSTATUS) 0xC0000206)
+#define STATUS_INVALID_ADDRESS_COMPONENT ((NTSTATUS) 0xC0000207)
+#define STATUS_INVALID_ADDRESS_WILDCARD  ((NTSTATUS) 0xC0000208)
+#define STATUS_TOO_MANY_ADDRESSES        ((NTSTATUS) 0xC0000209)
+#define STATUS_ADDRESS_ALREADY_EXISTS    ((NTSTATUS) 0xC000020A)
+#define STATUS_ADDRESS_CLOSED            ((NTSTATUS) 0xC000020B)
+#define STATUS_CONNECTION_DISCONNECTED   ((NTSTATUS) 0xC000020C)
+#define STATUS_CONNECTION_RESET          ((NTSTATUS) 0xC000020D)
+#define STATUS_TOO_MANY_NODES            ((NTSTATUS) 0xC000020E)
+#define STATUS_TRANSACTION_ABORTED       ((NTSTATUS) 0xC000020F)
+#define STATUS_TRANSACTION_TIMED_OUT     ((NTSTATUS) 0xC0000210)
+#define STATUS_TRANSACTION_NO_RELEASE    ((NTSTATUS) 0xC0000211)
+#define STATUS_TRANSACTION_NO_MATCH      ((NTSTATUS) 0xC0000212)
+#define STATUS_TRANSACTION_RESPONDED     ((NTSTATUS) 0xC0000213)
+#define STATUS_TRANSACTION_INVALID_ID    ((NTSTATUS) 0xC0000214)
+#define STATUS_TRANSACTION_INVALID_TYPE  ((NTSTATUS) 0xC0000215)
+#define STATUS_NOT_SERVER_SESSION        ((NTSTATUS) 0xC0000216)
+#define STATUS_NOT_CLIENT_SESSION        ((NTSTATUS) 0xC0000217)
+#define STATUS_CANNOT_LOAD_REGISTRY_FILE ((NTSTATUS) 0xC0000218)
+#define STATUS_DEBUG_ATTACH_FAILED       ((NTSTATUS) 0xC0000219)
+#define STATUS_SYSTEM_PROCESS_TERMINATED ((NTSTATUS) 0xC000021A)
+#define STATUS_DATA_NOT_ACCEPTED         ((NTSTATUS) 0xC000021B)
+#define STATUS_NO_BROWSER_SERVERS_FOUND  ((NTSTATUS) 0xC000021C)
+#define STATUS_VDM_HARD_ERROR            ((NTSTATUS) 0xC000021D)
+#define STATUS_DRIVER_CANCEL_TIMEOUT     ((NTSTATUS) 0xC000021E)
+#define STATUS_REPLY_MESSAGE_MISMATCH    ((NTSTATUS) 0xC000021F)
+#define STATUS_MAPPED_ALIGNMENT          ((NTSTATUS) 0xC0000220)
+#define STATUS_IMAGE_CHECKSUM_MISMATCH   ((NTSTATUS) 0xC0000221)
+#define STATUS_LOST_WRITEBEHIND_DATA     ((NTSTATUS) 0xC0000222)
+#define STATUS_CLIENT_SERVER_PARAMETERS_INVALID ((NTSTATUS) 0xC0000223)
+#define STATUS_PASSWORD_MUST_CHANGE      ((NTSTATUS) 0xC0000224)
+#define STATUS_NOT_FOUND                 ((NTSTATUS) 0xC0000225)
+#define STATUS_NOT_TINY_STREAM           ((NTSTATUS) 0xC0000226)
+#define STATUS_RECOVERY_FAILURE          ((NTSTATUS) 0xC0000227)
+#define STATUS_STACK_OVERFLOW_READ       ((NTSTATUS) 0xC0000228)
+#define STATUS_FAIL_CHECK                ((NTSTATUS) 0xC0000229)
+#define STATUS_DUPLICATE_OBJECTID        ((NTSTATUS) 0xC000022A)
+#define STATUS_OBJECTID_EXISTS           ((NTSTATUS) 0xC000022B)
+#define STATUS_CONVERT_TO_LARGE          ((NTSTATUS) 0xC000022C)
+#define STATUS_RETRY                     ((NTSTATUS) 0xC000022D)
+#define STATUS_FOUND_OUT_OF_SCOPE        ((NTSTATUS) 0xC000022E)
+#define STATUS_ALLOCATE_BUCKET           ((NTSTATUS) 0xC000022F)
+#define STATUS_PROPSET_NOT_FOUND         ((NTSTATUS) 0xC0000230)
+#define STATUS_MARSHALL_OVERFLOW         ((NTSTATUS) 0xC0000231)
+#define STATUS_INVALID_VARIANT           ((NTSTATUS) 0xC0000232)
+#define STATUS_DOMAIN_CONTROLLER_NOT_FOUND ((NTSTATUS) 0xC0000233)
+#define STATUS_ACCOUNT_LOCKED_OUT        ((NTSTATUS) 0xC0000234)
+#define STATUS_HANDLE_NOT_CLOSABLE       ((NTSTATUS) 0xC0000235)
+#define STATUS_CONNECTION_REFUSED        ((NTSTATUS) 0xC0000236)
+#define STATUS_GRACEFUL_DISCONNECT       ((NTSTATUS) 0xC0000237)
+#define STATUS_ADDRESS_ALREADY_ASSOCIATED ((NTSTATUS) 0xC0000238)
+#define STATUS_ADDRESS_NOT_ASSOCIATED    ((NTSTATUS) 0xC0000239)
+#define STATUS_CONNECTION_INVALID        ((NTSTATUS) 0xC000023A)
+#define STATUS_CONNECTION_ACTIVE         ((NTSTATUS) 0xC000023B)
+#define STATUS_NETWORK_UNREACHABLE       ((NTSTATUS) 0xC000023C)
+#define STATUS_HOST_UNREACHABLE          ((NTSTATUS) 0xC000023D)
+#define STATUS_PROTOCOL_UNREACHABLE      ((NTSTATUS) 0xC000023E)
+#define STATUS_PORT_UNREACHABLE          ((NTSTATUS) 0xC000023F)
+#define STATUS_REQUEST_ABORTED           ((NTSTATUS) 0xC0000240)
+#define STATUS_CONNECTION_ABORTED        ((NTSTATUS) 0xC0000241)
+#define STATUS_BAD_COMPRESSION_BUFFER    ((NTSTATUS) 0xC0000242)
+#define STATUS_USER_MAPPED_FILE          ((NTSTATUS) 0xC0000243)
+#define STATUS_AUDIT_FAILED              ((NTSTATUS) 0xC0000244)
+#define STATUS_TIMER_RESOLUTION_NOT_SET  ((NTSTATUS) 0xC0000245)
+#define STATUS_CONNECTION_COUNT_LIMIT    ((NTSTATUS) 0xC0000246)
+#define STATUS_LOGIN_TIME_RESTRICTION    ((NTSTATUS) 0xC0000247)
+#define STATUS_LOGIN_WKSTA_RESTRICTION   ((NTSTATUS) 0xC0000248)
+#define STATUS_IMAGE_MP_UP_MISMATCH      ((NTSTATUS) 0xC0000249)
+#define STATUS_INSUFFICIENT_LOGON_INFO   ((NTSTATUS) 0xC0000250)
+#define STATUS_BAD_DLL_ENTRYPOINT        ((NTSTATUS) 0xC0000251)
+#define STATUS_BAD_SERVICE_ENTRYPOINT    ((NTSTATUS) 0xC0000252)
+#define STATUS_LPC_REPLY_LOST            ((NTSTATUS) 0xC0000253)
+#define STATUS_IP_ADDRESS_CONFLICT1      ((NTSTATUS) 0xC0000254)
+#define STATUS_IP_ADDRESS_CONFLICT2      ((NTSTATUS) 0xC0000255)
+#define STATUS_REGISTRY_QUOTA_LIMIT      ((NTSTATUS) 0xC0000256)
+#define STATUS_PATH_NOT_COVERED          ((NTSTATUS) 0xC0000257)
+#define STATUS_NO_CALLBACK_ACTIVE        ((NTSTATUS) 0xC0000258)
+#define STATUS_LICENSE_QUOTA_EXCEEDED    ((NTSTATUS) 0xC0000259)
+#define STATUS_PWD_TOO_SHORT             ((NTSTATUS) 0xC000025A)
+#define STATUS_PWD_TOO_RECENT            ((NTSTATUS) 0xC000025B)
+#define STATUS_PWD_HISTORY_CONFLICT      ((NTSTATUS) 0xC000025C)
+#define STATUS_PLUGPLAY_NO_DEVICE        ((NTSTATUS) 0xC000025E)
+#define STATUS_UNSUPPORTED_COMPRESSION   ((NTSTATUS) 0xC000025F)
+#define STATUS_INVALID_HW_PROFILE        ((NTSTATUS) 0xC0000260)
+#define STATUS_INVALID_PLUGPLAY_DEVICE_PATH ((NTSTATUS) 0xC0000261)
+#define STATUS_DRIVER_ORDINAL_NOT_FOUND  ((NTSTATUS) 0xC0000262)
+#define STATUS_DRIVER_ENTRYPOINT_NOT_FOUND ((NTSTATUS) 0xC0000263)
+#define STATUS_RESOURCE_NOT_OWNED        ((NTSTATUS) 0xC0000264)
+#define STATUS_TOO_MANY_LINKS            ((NTSTATUS) 0xC0000265)
+#define STATUS_QUOTA_LIST_INCONSISTENT   ((NTSTATUS) 0xC0000266)
+#define STATUS_FILE_IS_OFFLINE           ((NTSTATUS) 0xC0000267)
+#define STATUS_EVALUATION_EXPIRATION     ((NTSTATUS) 0xC0000268)
+#define STATUS_ILLEGAL_DLL_RELOCATION    ((NTSTATUS) 0xC0000269)
+#define STATUS_LICENSE_VIOLATION         ((NTSTATUS) 0xC000026A)
+#define STATUS_DLL_INIT_FAILED_LOGOFF    ((NTSTATUS) 0xC000026B)
+#define STATUS_DRIVER_UNABLE_TO_LOAD     ((NTSTATUS) 0xC000026C)
+#define STATUS_DFS_UNAVAILABLE           ((NTSTATUS) 0xC000026D)
+#define STATUS_VOLUME_DISMOUNTED         ((NTSTATUS) 0xC000026E)
+#define STATUS_WX86_INTERNAL_ERROR       ((NTSTATUS) 0xC000026F)
+#define STATUS_WX86_FLOAT_STACK_CHECK    ((NTSTATUS) 0xC0000270)
+#define STATUS_VALIDATE_CONTINUE         ((NTSTATUS) 0xC0000271)
+#define STATUS_NO_MATCH                  ((NTSTATUS) 0xC0000272)
+#define STATUS_NO_MORE_MATCHES           ((NTSTATUS) 0xC0000273)
+#define STATUS_NOT_A_REPARSE_POINT       ((NTSTATUS) 0xC0000275)
+#define STATUS_IO_REPARSE_TAG_INVALID    ((NTSTATUS) 0xC0000276)
+#define STATUS_IO_REPARSE_TAG_MISMATCH   ((NTSTATUS) 0xC0000277)
+#define STATUS_IO_REPARSE_DATA_INVALID   ((NTSTATUS) 0xC0000278)
+#define STATUS_IO_REPARSE_TAG_NOT_HANDLED       ((NTSTATUS) 0xC0000279)
+#define STATUS_REPARSE_POINT_NOT_RESOLVED       ((NTSTATUS) 0xC0000280)
+#define STATUS_DIRECTORY_IS_A_REPARSE_POINT     ((NTSTATUS) 0xC0000281)
+#define STATUS_RANGE_LIST_CONFLICT       ((NTSTATUS) 0xC0000282)
+#define STATUS_SOURCE_ELEMENT_EMPTY      ((NTSTATUS) 0xC0000283)
+#define STATUS_DESTINATION_ELEMENT_FULL  ((NTSTATUS) 0xC0000284)
+#define STATUS_ILLEGAL_ELEMENT_ADDRESS   ((NTSTATUS) 0xC0000285)
+#define STATUS_MAGAZINE_NOT_PRESENT      ((NTSTATUS) 0xC0000286)
+#define STATUS_REINITIALIZATION_NEEDED   ((NTSTATUS) 0xC0000287)
+#define STATUS_ENCRYPTION_FAILED         ((NTSTATUS) 0xC000028A)
+#define STATUS_DECRYPTION_FAILED         ((NTSTATUS) 0xC000028B)
+#define STATUS_RANGE_NOT_FOUND           ((NTSTATUS) 0xC000028C)
+#define STATUS_NO_RECOVERY_POLICY        ((NTSTATUS) 0xC000028D)
+#define STATUS_NO_EFS                    ((NTSTATUS) 0xC000028E)
+#define STATUS_WRONG_EFS                 ((NTSTATUS) 0xC000028F)
+#define STATUS_NO_USER_KEYS              ((NTSTATUS) 0xC0000290)
+#define STATUS_FILE_NOT_ENCRYPTED        ((NTSTATUS) 0xC0000291)
+#define STATUS_NOT_EXPORT_FORMAT         ((NTSTATUS) 0xC0000292)
+#define STATUS_FILE_ENCRYPTED            ((NTSTATUS) 0xC0000293)
+#define STATUS_WMI_GUID_NOT_FOUND        ((NTSTATUS) 0xC0000295)
+#define STATUS_WMI_INSTANCE_NOT_FOUND    ((NTSTATUS) 0xC0000296)
+#define STATUS_WMI_ITEMID_NOT_FOUND      ((NTSTATUS) 0xC0000297)
+#define STATUS_WMI_TRY_AGAIN             ((NTSTATUS) 0xC0000298)
+#define STATUS_SHARED_POLICY             ((NTSTATUS) 0xC0000299)
+#define STATUS_POLICY_OBJECT_NOT_FOUND   ((NTSTATUS) 0xC000029A)
+#define STATUS_POLICY_ONLY_IN_DS         ((NTSTATUS) 0xC000029B)
+#define STATUS_VOLUME_NOT_UPGRADED       ((NTSTATUS) 0xC000029C)
+#define STATUS_REMOTE_STORAGE_NOT_ACTIVE ((NTSTATUS) 0xC000029D)
+#define STATUS_REMOTE_STORAGE_MEDIA_ERROR       ((NTSTATUS) 0xC000029E)
+#define STATUS_NO_TRACKING_SERVICE       ((NTSTATUS) 0xC000029F)
+#define STATUS_SERVER_SID_MISMATCH       ((NTSTATUS) 0xC00002A0)
+#define STATUS_DS_NO_ATTRIBUTE_OR_VALUE  ((NTSTATUS) 0xC00002A1)
+#define STATUS_DS_INVALID_ATTRIBUTE_SYNTAX      ((NTSTATUS) 0xC00002A2)
+#define STATUS_DS_ATTRIBUTE_TYPE_UNDEFINED      ((NTSTATUS) 0xC00002A3)
+#define STATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS     ((NTSTATUS) 0xC00002A4)
+#define STATUS_DS_BUSY                   ((NTSTATUS) 0xC00002A5)
+#define STATUS_DS_UNAVAILABLE            ((NTSTATUS) 0xC00002A6)
+#define STATUS_DS_NO_RIDS_ALLOCATED      ((NTSTATUS) 0xC00002A7)
+#define STATUS_DS_NO_MORE_RIDS           ((NTSTATUS) 0xC00002A8)
+#define STATUS_DS_INCORRECT_ROLE_OWNER   ((NTSTATUS) 0xC00002A9)
+#define STATUS_DS_RIDMGR_INIT_ERROR      ((NTSTATUS) 0xC00002AA)
+#define STATUS_DS_OBJ_CLASS_VIOLATION    ((NTSTATUS) 0xC00002AB)
+#define STATUS_DS_CANT_ON_NON_LEAF       ((NTSTATUS) 0xC00002AC)
+#define STATUS_DS_CANT_ON_RDN            ((NTSTATUS) 0xC00002AD)
+#define STATUS_DS_CANT_MOD_OBJ_CLASS     ((NTSTATUS) 0xC00002AE)
+#define STATUS_DS_CROSS_DOM_MOVE_FAILED  ((NTSTATUS) 0xC00002AF)
+#define STATUS_DS_GC_NOT_AVAILABLE       ((NTSTATUS) 0xC00002B0)
+#define STATUS_DIRECTORY_SERVICE_REQUIRED       ((NTSTATUS) 0xC00002B1)
+#define STATUS_REPARSE_ATTRIBUTE_CONFLICT       ((NTSTATUS) 0xC00002B2)
+#define STATUS_CANT_ENABLE_DENY_ONLY     ((NTSTATUS) 0xC00002B3)
+#define STATUS_FLOAT_MULTIPLE_FAULTS     ((NTSTATUS) 0xC00002B4)
+#define STATUS_FLOAT_MULTIPLE_TRAPS      ((NTSTATUS) 0xC00002B5)
+#define STATUS_DEVICE_REMOVED            ((NTSTATUS) 0xC00002B6)
+#define STATUS_JOURNAL_DELETE_IN_PROGRESS       ((NTSTATUS) 0xC00002B7)
+#define STATUS_JOURNAL_NOT_ACTIVE        ((NTSTATUS) 0xC00002B8)
+#define STATUS_NOINTERFACE               ((NTSTATUS) 0xC00002B9)
+#define STATUS_DS_ADMIN_LIMIT_EXCEEDED   ((NTSTATUS) 0xC00002C1)
+#define STATUS_DRIVER_FAILED_SLEEP       ((NTSTATUS) 0xC00002C2)
+#define STATUS_MUTUAL_AUTHENTICATION_FAILED     ((NTSTATUS) 0xC00002C3)
+#define STATUS_CORRUPT_SYSTEM_FILE       ((NTSTATUS) 0xC00002C4)
+#define STATUS_DATATYPE_MISALIGNMENT_ERROR      ((NTSTATUS) 0xC00002C5)
+#define STATUS_WMI_READ_ONLY             ((NTSTATUS) 0xC00002C6)
+#define STATUS_WMI_SET_FAILURE           ((NTSTATUS) 0xC00002C7)
+#define STATUS_COMMITMENT_MINIMUM        ((NTSTATUS) 0xC00002C8)
+#define STATUS_REG_NAT_CONSUMPTION       ((NTSTATUS) 0xC00002C9)
+#define STATUS_TRANSPORT_FULL            ((NTSTATUS) 0xC00002CA)
+#define STATUS_DS_SAM_INIT_FAILURE       ((NTSTATUS) 0xC00002CB)
+#define STATUS_ONLY_IF_CONNECTED         ((NTSTATUS) 0xC00002CC)
+#define STATUS_DS_SENSITIVE_GROUP_VIOLATION     ((NTSTATUS) 0xC00002CD)
+#define STATUS_PNP_RESTART_ENUMERATION   ((NTSTATUS) 0xC00002CE)
+#define STATUS_JOURNAL_ENTRY_DELETED     ((NTSTATUS) 0xC00002CF)
+#define STATUS_DS_CANT_MOD_PRIMARYGROUPID       ((NTSTATUS) 0xC00002D0)
+#define STATUS_SYSTEM_IMAGE_BAD_SIGNATURE ((NTSTATUS) 0xC00002D1)
+#define STATUS_PNP_REBOOT_REQUIRED       ((NTSTATUS) 0xC00002D2)
+#define STATUS_POWER_STATE_INVALID       ((NTSTATUS) 0xC00002D3)
+#define STATUS_DS_INVALID_GROUP_TYPE     ((NTSTATUS) 0xC00002D4)
+#define STATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN    ((NTSTATUS) 0xC00002D5)
+#define STATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN     ((NTSTATUS) 0xC00002D6)
+#define STATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER ((NTSTATUS) 0xC00002D7)
+#define STATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER     ((NTSTATUS) 0xC00002D8)
+#define STATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER      ((NTSTATUS) 0xC00002D9)
+#define STATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER   ((NTSTATUS) 0xC00002DA)
+#define STATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER      ((NTSTATUS) 0xC00002DB)
+#define STATUS_DS_HAVE_PRIMARY_MEMBERS   ((NTSTATUS) 0xC00002DC)
+#define STATUS_WMI_NOT_SUPPORTED         ((NTSTATUS) 0xC00002DD)
+#define STATUS_INSUFFICIENT_POWER        ((NTSTATUS) 0xC00002DE)
+#define STATUS_SAM_NEED_BOOTKEY_PASSWORD ((NTSTATUS) 0xC00002DF)
+#define STATUS_SAM_NEED_BOOTKEY_FLOPPY   ((NTSTATUS) 0xC00002E0)
+#define STATUS_DS_CANT_START             ((NTSTATUS) 0xC00002E1)
+#define STATUS_DS_INIT_FAILURE           ((NTSTATUS) 0xC00002E2)
+#define STATUS_SAM_INIT_FAILURE          ((NTSTATUS) 0xC00002E3)
+#define STATUS_DS_GC_REQUIRED            ((NTSTATUS) 0xC00002E4)
+#define STATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY    ((NTSTATUS) 0xC00002E5)
+#define STATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS    ((NTSTATUS) 0xC00002E6)
+#define STATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED        ((NTSTATUS) 0xC00002E7)
+#define STATUS_MULTIPLE_FAULT_VIOLATION  ((NTSTATUS) 0xC00002E8)
+#define STATUS_CURRENT_DOMAIN_NOT_ALLOWED       ((NTSTATUS) 0xC00002E9)
+#define STATUS_CANNOT_MAKE               ((NTSTATUS) 0xC00002EA)
+#define STATUS_SYSTEM_SHUTDOWN           ((NTSTATUS) 0xC00002EB)
+#define STATUS_DS_INIT_FAILURE_CONSOLE   ((NTSTATUS) 0xC00002EC)
+#define STATUS_DS_SAM_INIT_FAILURE_CONSOLE      ((NTSTATUS) 0xC00002ED)
+#define STATUS_UNFINISHED_CONTEXT_DELETED       ((NTSTATUS) 0xC00002EE)
+#define STATUS_NO_TGT_REPLY              ((NTSTATUS) 0xC00002EF)
+#define STATUS_OBJECTID_NOT_FOUND        ((NTSTATUS) 0xC00002F0)
+#define STATUS_NO_IP_ADDRESSES           ((NTSTATUS) 0xC00002F1)
+#define STATUS_WRONG_CREDENTIAL_HANDLE   ((NTSTATUS) 0xC00002F2)
+#define STATUS_CRYPTO_SYSTEM_INVALID     ((NTSTATUS) 0xC00002F3)
+#define STATUS_MAX_REFERRALS_EXCEEDED    ((NTSTATUS) 0xC00002F4)
+#define STATUS_MUST_BE_KDC               ((NTSTATUS) 0xC00002F5)
+#define STATUS_STRONG_CRYPTO_NOT_SUPPORTED      ((NTSTATUS) 0xC00002F6)
+#define STATUS_TOO_MANY_PRINCIPALS       ((NTSTATUS) 0xC00002F7)
+#define STATUS_NO_PA_DATA                ((NTSTATUS) 0xC00002F8)
+#define STATUS_PKINIT_NAME_MISMATCH      ((NTSTATUS) 0xC00002F9)
+#define STATUS_SMARTCARD_LOGON_REQUIRED  ((NTSTATUS) 0xC00002FA)
+#define STATUS_KDC_INVALID_REQUEST       ((NTSTATUS) 0xC00002FB)
+#define STATUS_KDC_UNABLE_TO_REFER       ((NTSTATUS) 0xC00002FC)
+#define STATUS_KDC_UNKNOWN_ETYPE         ((NTSTATUS) 0xC00002FD)
+#define STATUS_SHUTDOWN_IN_PROGRESS      ((NTSTATUS) 0xC00002FE)
+#define STATUS_SERVER_SHUTDOWN_IN_PROGRESS      ((NTSTATUS) 0xC00002FF)
+#define STATUS_NOT_SUPPORTED_ON_SBS      ((NTSTATUS) 0xC0000300)
+#define STATUS_WMI_GUID_DISCONNECTED     ((NTSTATUS) 0xC0000301)
+#define STATUS_WMI_ALREADY_DISABLED      ((NTSTATUS) 0xC0000302)
+#define STATUS_WMI_ALREADY_ENABLED       ((NTSTATUS) 0xC0000303)
+#define STATUS_MFT_TOO_FRAGMENTED        ((NTSTATUS) 0xC0000304)
+#define STATUS_COPY_PROTECTION_FAILURE   ((NTSTATUS) 0xC0000305)
+#define STATUS_CSS_AUTHENTICATION_FAILURE       ((NTSTATUS) 0xC0000306)
+#define STATUS_CSS_KEY_NOT_PRESENT       ((NTSTATUS) 0xC0000307)
+#define STATUS_CSS_KEY_NOT_ESTABLISHED   ((NTSTATUS) 0xC0000308)
+#define STATUS_CSS_SCRAMBLED_SECTOR      ((NTSTATUS) 0xC0000309)
+#define STATUS_CSS_REGION_MISMATCH       ((NTSTATUS) 0xC000030A)
+#define STATUS_CSS_RESETS_EXHAUSTED      ((NTSTATUS) 0xC000030B)
+#define STATUS_PKINIT_FAILURE            ((NTSTATUS) 0xC0000320)
+#define STATUS_SMARTCARD_SUBSYSTEM_FAILURE      ((NTSTATUS) 0xC0000321)
+#define STATUS_NO_KERB_KEY               ((NTSTATUS) 0xC0000322)
+#define STATUS_HOST_DOWN                 ((NTSTATUS) 0xC0000350)
+#define STATUS_UNSUPPORTED_PREAUTH       ((NTSTATUS) 0xC0000351)
+#define STATUS_EFS_ALG_BLOB_TOO_BIG      ((NTSTATUS) 0xC0000352)
+#define STATUS_PORT_NOT_SET              ((NTSTATUS) 0xC0000353)
+#define STATUS_DEBUGGER_INACTIVE         ((NTSTATUS) 0xC0000354)
+#define STATUS_DS_VERSION_CHECK_FAILURE  ((NTSTATUS) 0xC0000355)
+#define STATUS_AUDITING_DISABLED         ((NTSTATUS) 0xC0000356)
+#define STATUS_PRENT4_MACHINE_ACCOUNT    ((NTSTATUS) 0xC0000357)
+#define STATUS_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER ((NTSTATUS) 0xC0000358)
+#define STATUS_INVALID_IMAGE_WIN_32      ((NTSTATUS) 0xC0000359)
+#define STATUS_INVALID_IMAGE_WIN_64      ((NTSTATUS) 0xC000035A)
+#define STATUS_BAD_BINDINGS              ((NTSTATUS) 0xC000035B)
+#define STATUS_NETWORK_SESSION_EXPIRED   ((NTSTATUS) 0xC000035C)
+#define STATUS_APPHELP_BLOCK             ((NTSTATUS) 0xC000035D)
+#define STATUS_ALL_SIDS_FILTERED         ((NTSTATUS) 0xC000035E)
+#define STATUS_NOT_SAFE_MODE_DRIVER      ((NTSTATUS) 0xC000035F)
+#define STATUS_ACCESS_DISABLED_BY_POLICY_DEFAULT        ((NTSTATUS) 0xC0000361)
+#define STATUS_ACCESS_DISABLED_BY_POLICY_PATH   ((NTSTATUS) 0xC0000362)
+#define STATUS_ACCESS_DISABLED_BY_POLICY_PUBLISHER      ((NTSTATUS) 0xC0000363)
+#define STATUS_ACCESS_DISABLED_BY_POLICY_OTHER  ((NTSTATUS) 0xC0000364)
+#define STATUS_FAILED_DRIVER_ENTRY       ((NTSTATUS) 0xC0000365)
+#define STATUS_DEVICE_ENUMERATION_ERROR  ((NTSTATUS) 0xC0000366)
+#define STATUS_WAIT_FOR_OPLOCK           ((NTSTATUS) 0x00000367)
+#define STATUS_MOUNT_POINT_NOT_RESOLVED  ((NTSTATUS) 0xC0000368)
+#define STATUS_INVALID_DEVICE_OBJECT_PARAMETER ((NTSTATUS) 0xC0000369)
+/* STATUS_MCA_OCCURED is not a typo, as per Microsoft's headers */
+#define STATUS_MCA_OCCURED               ((NTSTATUS) 0xC000036A)
+#define STATUS_DRIVER_BLOCKED_CRITICAL   ((NTSTATUS) 0xC000036B)
+#define STATUS_DRIVER_BLOCKED            ((NTSTATUS) 0xC000036C)
+#define STATUS_DRIVER_DATABASE_ERROR     ((NTSTATUS) 0xC000036D)
+#define STATUS_SYSTEM_HIVE_TOO_LARGE     ((NTSTATUS) 0xC000036E)
+#define STATUS_INVALID_IMPORT_OF_NON_DLL ((NTSTATUS) 0xC000036F)
+#define STATUS_SMARTCARD_WRONG_PIN       ((NTSTATUS) 0xC0000380)
+#define STATUS_SMARTCARD_CARD_BLOCKED    ((NTSTATUS) 0xC0000381)
+#define STATUS_SMARTCARD_CARD_NOT_AUTHENTICATED ((NTSTATUS) 0xC0000382)
+#define STATUS_SMARTCARD_NO_CARD         ((NTSTATUS) 0xC0000383)
+#define STATUS_SMARTCARD_NO_KEY_CONTAINER       ((NTSTATUS) 0xC0000384)
+#define STATUS_SMARTCARD_NO_CERTIFICATE  ((NTSTATUS) 0xC0000385)
+#define STATUS_SMARTCARD_NO_KEYSET       ((NTSTATUS) 0xC0000386)
+#define STATUS_SMARTCARD_IO_ERROR        ((NTSTATUS) 0xC0000387)
+#define STATUS_DOWNGRADE_DETECTED        ((NTSTATUS) 0xC0000388)
+#define STATUS_SMARTCARD_CERT_REVOKED    ((NTSTATUS) 0xC0000389)
+#define STATUS_ISSUING_CA_UNTRUSTED      ((NTSTATUS) 0xC000038A)
+#define STATUS_REVOCATION_OFFLINE_C      ((NTSTATUS) 0xC000038B)
+#define STATUS_PKINIT_CLIENT_FAILURE     ((NTSTATUS) 0xC000038C)
+#define STATUS_SMARTCARD_CERT_EXPIRED    ((NTSTATUS) 0xC000038D)
+#define STATUS_DRIVER_FAILED_PRIOR_UNLOAD ((NTSTATUS) 0xC000038E)
+#define STATUS_SMARTCARD_SILENT_CONTEXT  ((NTSTATUS) 0xC000038F)
+#define STATUS_PER_USER_TRUST_QUOTA_EXCEEDED ((NTSTATUS) 0xC0000401)
+#define STATUS_ALL_USER_TRUST_QUOTA_EXCEEDED ((NTSTATUS) 0xC0000402)
+#define STATUS_USER_DELETE_TRUST_QUOTA_EXCEEDED ((NTSTATUS) 0xC0000403)
+#define STATUS_DS_NAME_NOT_UNIQUE        ((NTSTATUS) 0xC0000404)
+#define STATUS_DS_DUPLICATE_ID_FOUND     ((NTSTATUS) 0xC0000405)
+#define STATUS_DS_GROUP_CONVERSION_ERROR ((NTSTATUS) 0xC0000406)
+#define STATUS_VOLSNAP_PREPARE_HIBERNATE ((NTSTATUS) 0xC0000407)
+#define STATUS_USER2USER_REQUIRED        ((NTSTATUS) 0xC0000408)
+#define STATUS_STACK_BUFFER_OVERRUN      ((NTSTATUS) 0xC0000409)
+#define STATUS_NO_S4U_PROT_SUPPORT       ((NTSTATUS) 0xC000040A)
+#define STATUS_CROSSREALM_DELEGATION_FAILURE ((NTSTATUS) 0xC000040B)
+#define STATUS_REVOCATION_OFFLINE_KDC    ((NTSTATUS) 0xC000040C)
+#define STATUS_ISSUING_CA_UNTRUSTED_KDC  ((NTSTATUS) 0xC000040D)
+#define STATUS_KDC_CERT_EXPIRED          ((NTSTATUS) 0xC000040E)
+#define STATUS_KDC_CERT_REVOKED          ((NTSTATUS) 0xC000040F)
+#define STATUS_PARAMETER_QUOTA_EXCEEDED  ((NTSTATUS) 0xC0000410)
+#define STATUS_HIBERNATION_FAILURE       ((NTSTATUS) 0xC0000411)
+#define STATUS_DELAY_LOAD_FAILED         ((NTSTATUS) 0xC0000412)
+#define STATUS_AUTHENTICATION_FIREWALL_FAILED ((NTSTATUS) 0xC0000413)
+#define STATUS_VDM_DISALLOWED            ((NTSTATUS) 0xC0000414)
+#define STATUS_HUNG_DISPLAY_DRIVER_THREAD ((NTSTATUS) 0xC0000415)
+#define STATUS_WOW_ASSERTION             ((NTSTATUS) 0xC0009898)
+
+#define RPC_NT_INVALID_STRING_BINDING    ((NTSTATUS) 0xC0020001)
+#define RPC_NT_WRONG_KIND_OF_BINDING     ((NTSTATUS) 0xC0020002)
+#define RPC_NT_INVALID_BINDING           ((NTSTATUS) 0xC0020003)
+#define RPC_NT_PROTSEQ_NOT_SUPPORTED     ((NTSTATUS) 0xC0020004)
+#define RPC_NT_INVALID_RPC_PROTSEQ       ((NTSTATUS) 0xC0020005)
+#define RPC_NT_INVALID_STRING_UUID       ((NTSTATUS) 0xC0020006)
+#define RPC_NT_INVALID_ENDPOINT_FORMAT   ((NTSTATUS) 0xC0020007)
+#define RPC_NT_INVALID_NET_ADDR          ((NTSTATUS) 0xC0020008)
+#define RPC_NT_NO_ENDPOINT_FOUND         ((NTSTATUS) 0xC0020009)
+#define RPC_NT_INVALID_TIMEOUT           ((NTSTATUS) 0xC002000A)
+#define RPC_NT_OBJECT_NOT_FOUND          ((NTSTATUS) 0xC002000B)
+#define RPC_NT_ALREADY_REGISTERED        ((NTSTATUS) 0xC002000C)
+#define RPC_NT_TYPE_ALREADY_REGISTERED   ((NTSTATUS) 0xC002000D)
+#define RPC_NT_ALREADY_LISTENING         ((NTSTATUS) 0xC002000E)
+#define RPC_NT_NO_PROTSEQS_REGISTERED    ((NTSTATUS) 0xC002000F)
+#define RPC_NT_NOT_LISTENING             ((NTSTATUS) 0xC0020010)
+#define RPC_NT_UNKNOWN_MGR_TYPE          ((NTSTATUS) 0xC0020011)
+#define RPC_NT_UNKNOWN_IF                ((NTSTATUS) 0xC0020012)
+#define RPC_NT_NO_BINDINGS               ((NTSTATUS) 0xC0020013)
+#define RPC_NT_NO_PROTSEQS               ((NTSTATUS) 0xC0020014)
+#define RPC_NT_CANT_CREATE_ENDPOINT      ((NTSTATUS) 0xC0020015)
+#define RPC_NT_OUT_OF_RESOURCES          ((NTSTATUS) 0xC0020016)
+#define RPC_NT_SERVER_UNAVAILABLE        ((NTSTATUS) 0xC0020017)
+#define RPC_NT_SERVER_TOO_BUSY           ((NTSTATUS) 0xC0020018)
+#define RPC_NT_INVALID_NETWORK_OPTIONS   ((NTSTATUS) 0xC0020019)
+#define RPC_NT_NO_CALL_ACTIVE            ((NTSTATUS) 0xC002001A)
+#define RPC_NT_CALL_FAILED               ((NTSTATUS) 0xC002001B)
+#define RPC_NT_CALL_FAILED_DNE           ((NTSTATUS) 0xC002001C)
+#define RPC_NT_PROTOCOL_ERROR            ((NTSTATUS) 0xC002001D)
+#define RPC_NT_UNSUPPORTED_TRANS_SYN     ((NTSTATUS) 0xC002001F)
+#define RPC_NT_UNSUPPORTED_TYPE          ((NTSTATUS) 0xC0020021)
+#define RPC_NT_INVALID_TAG               ((NTSTATUS) 0xC0020022)
+#define RPC_NT_INVALID_BOUND             ((NTSTATUS) 0xC0020023)
+#define RPC_NT_NO_ENTRY_NAME             ((NTSTATUS) 0xC0020024)
+#define RPC_NT_INVALID_NAME_SYNTAX       ((NTSTATUS) 0xC0020025)
+#define RPC_NT_UNSUPPORTED_NAME_SYNTAX   ((NTSTATUS) 0xC0020026)
+#define RPC_NT_UUID_NO_ADDRESS           ((NTSTATUS) 0xC0020028)
+#define RPC_NT_DUPLICATE_ENDPOINT        ((NTSTATUS) 0xC0020029)
+#define RPC_NT_UNKNOWN_AUTHN_TYPE        ((NTSTATUS) 0xC002002A)
+#define RPC_NT_MAX_CALLS_TOO_SMALL       ((NTSTATUS) 0xC002002B)
+#define RPC_NT_STRING_TOO_LONG           ((NTSTATUS) 0xC002002C)
+#define RPC_NT_PROTSEQ_NOT_FOUND         ((NTSTATUS) 0xC002002D)
+#define RPC_NT_PROCNUM_OUT_OF_RANGE      ((NTSTATUS) 0xC002002E)
+#define RPC_NT_BINDING_HAS_NO_AUTH       ((NTSTATUS) 0xC002002F)
+#define RPC_NT_UNKNOWN_AUTHN_SERVICE     ((NTSTATUS) 0xC0020030)
+#define RPC_NT_UNKNOWN_AUTHN_LEVEL       ((NTSTATUS) 0xC0020031)
+#define RPC_NT_INVALID_AUTH_IDENTITY     ((NTSTATUS) 0xC0020032)
+#define RPC_NT_UNKNOWN_AUTHZ_SERVICE     ((NTSTATUS) 0xC0020033)
+#define EPT_NT_INVALID_ENTRY             ((NTSTATUS) 0xC0020034)
+#define EPT_NT_CANT_PERFORM_OP           ((NTSTATUS) 0xC0020035)
+#define EPT_NT_NOT_REGISTERED            ((NTSTATUS) 0xC0020036)
+#define RPC_NT_NOTHING_TO_EXPORT         ((NTSTATUS) 0xC0020037)
+#define RPC_NT_INCOMPLETE_NAME           ((NTSTATUS) 0xC0020038)
+#define RPC_NT_INVALID_VERS_OPTION       ((NTSTATUS) 0xC0020039)
+#define RPC_NT_NO_MORE_MEMBERS           ((NTSTATUS) 0xC002003A)
+#define RPC_NT_NOT_ALL_OBJS_UNEXPORTED   ((NTSTATUS) 0xC002003B)
+#define RPC_NT_INTERFACE_NOT_FOUND       ((NTSTATUS) 0xC002003C)
+#define RPC_NT_ENTRY_ALREADY_EXISTS      ((NTSTATUS) 0xC002003D)
+#define RPC_NT_ENTRY_NOT_FOUND           ((NTSTATUS) 0xC002003E)
+#define RPC_NT_NAME_SERVICE_UNAVAILABLE  ((NTSTATUS) 0xC002003F)
+#define RPC_NT_INVALID_NAF_ID            ((NTSTATUS) 0xC0020040)
+#define RPC_NT_CANNOT_SUPPORT            ((NTSTATUS) 0xC0020041)
+#define RPC_NT_NO_CONTEXT_AVAILABLE      ((NTSTATUS) 0xC0020042)
+#define RPC_NT_INTERNAL_ERROR            ((NTSTATUS) 0xC0020043)
+#define RPC_NT_ZERO_DIVIDE               ((NTSTATUS) 0xC0020044)
+#define RPC_NT_ADDRESS_ERROR             ((NTSTATUS) 0xC0020045)
+#define RPC_NT_FP_DIV_ZERO               ((NTSTATUS) 0xC0020046)
+#define RPC_NT_FP_UNDERFLOW              ((NTSTATUS) 0xC0020047)
+#define RPC_NT_FP_OVERFLOW               ((NTSTATUS) 0xC0020048)
+#define RPC_NT_CALL_IN_PROGRESS          ((NTSTATUS) 0xC0020049)
+#define RPC_NT_NO_MORE_BINDINGS          ((NTSTATUS) 0xC002004A)
+#define RPC_NT_GROUP_MEMBER_NOT_FOUND    ((NTSTATUS) 0xC002004B)
+#define EPT_NT_CANT_CREATE               ((NTSTATUS) 0xC002004C)
+#define RPC_NT_INVALID_OBJECT            ((NTSTATUS) 0xC002004D)
+#define RPC_NT_NO_INTERFACES             ((NTSTATUS) 0xC002004F)
+#define RPC_NT_CALL_CANCELLED            ((NTSTATUS) 0xC0020050)
+#define RPC_NT_BINDING_INCOMPLETE        ((NTSTATUS) 0xC0020051)
+#define RPC_NT_COMM_FAILURE              ((NTSTATUS) 0xC0020052)
+#define RPC_NT_UNSUPPORTED_AUTHN_LEVEL   ((NTSTATUS) 0xC0020053)
+#define RPC_NT_NO_PRINC_NAME             ((NTSTATUS) 0xC0020054)
+#define RPC_NT_NOT_RPC_ERROR             ((NTSTATUS) 0xC0020055)
+#define RPC_NT_SEC_PKG_ERROR             ((NTSTATUS) 0xC0020057)
+#define RPC_NT_NOT_CANCELLED             ((NTSTATUS) 0xC0020058)
+#define RPC_NT_INVALID_ASYNC_HANDLE      ((NTSTATUS) 0xC0020062)
+#define RPC_NT_INVALID_ASYNC_CALL        ((NTSTATUS) 0xC0020063)
+
+#define RPC_NT_NO_MORE_ENTRIES           ((NTSTATUS) 0xC0030001)
+#define RPC_NT_SS_CHAR_TRANS_OPEN_FAIL   ((NTSTATUS) 0xC0030002)
+#define RPC_NT_SS_CHAR_TRANS_SHORT_FILE  ((NTSTATUS) 0xC0030003)
+#define RPC_NT_SS_IN_NULL_CONTEXT        ((NTSTATUS) 0xC0030004)
+#define RPC_NT_SS_CONTEXT_MISMATCH       ((NTSTATUS) 0xC0030005)
+#define RPC_NT_SS_CONTEXT_DAMAGED        ((NTSTATUS) 0xC0030006)
+#define RPC_NT_SS_HANDLES_MISMATCH       ((NTSTATUS) 0xC0030007)
+#define RPC_NT_SS_CANNOT_GET_CALL_HANDLE ((NTSTATUS) 0xC0030008)
+#define RPC_NT_NULL_REF_POINTER          ((NTSTATUS) 0xC0030009)
+#define RPC_NT_ENUM_VALUE_OUT_OF_RANGE   ((NTSTATUS) 0xC003000A)
+#define RPC_NT_BYTE_COUNT_TOO_SMALL      ((NTSTATUS) 0xC003000B)
+#define RPC_NT_BAD_STUB_DATA             ((NTSTATUS) 0xC003000C)
+#define RPC_NT_INVALID_ES_ACTION         ((NTSTATUS) 0xC0030059)
+#define RPC_NT_WRONG_ES_VERSION          ((NTSTATUS) 0xC003005A)
+#define RPC_NT_WRONG_STUB_VERSION        ((NTSTATUS) 0xC003005B)
+#define RPC_NT_INVALID_PIPE_OBJECT       ((NTSTATUS) 0xC003005C)
+#define RPC_NT_INVALID_PIPE_OPERATION    ((NTSTATUS) 0xC003005D)
+#define RPC_NT_WRONG_PIPE_VERSION        ((NTSTATUS) 0xC003005E)
+#define RPC_NT_PIPE_CLOSED               ((NTSTATUS) 0xC003005F)
+#define RPC_NT_PIPE_DISCIPLINE_ERROR     ((NTSTATUS) 0xC0030060)
+#define RPC_NT_PIPE_EMPTY                ((NTSTATUS) 0xC0030061)
+
+#define STATUS_PNP_BAD_MPS_TABLE         ((NTSTATUS) 0xC0040035)
+#define STATUS_PNP_TRANSLATION_FAILED    ((NTSTATUS) 0xC0040036)
+#define STATUS_PNP_IRQ_TRANSLATION_FAILED ((NTSTATUS) 0xC0040037)
+#define STATUS_PNP_INVALID_ID            ((NTSTATUS) 0xC0040038)
+
+#define STATUS_CTX_WINSTATION_NAME_INVALID      ((NTSTATUS) 0xC00A0001)
+#define STATUS_CTX_INVALID_PD            ((NTSTATUS) 0xC00A0002)
+#define STATUS_CTX_PD_NOT_FOUND          ((NTSTATUS) 0xC00A0003)
+#define STATUS_CTX_CLOSE_PENDING         ((NTSTATUS) 0xC00A0006)
+#define STATUS_CTX_NO_OUTBUF             ((NTSTATUS) 0xC00A0007)
+#define STATUS_CTX_MODEM_INF_NOT_FOUND   ((NTSTATUS) 0xC00A0008)
+#define STATUS_CTX_INVALID_MODEMNAME     ((NTSTATUS) 0xC00A0009)
+#define STATUS_CTX_RESPONSE_ERROR        ((NTSTATUS) 0xC00A000A)
+#define STATUS_CTX_MODEM_RESPONSE_TIMEOUT       ((NTSTATUS) 0xC00A000B)
+#define STATUS_CTX_MODEM_RESPONSE_NO_CARRIER    ((NTSTATUS) 0xC00A000C)
+#define STATUS_CTX_MODEM_RESPONSE_NO_DIALTONE   ((NTSTATUS) 0xC00A000D)
+#define STATUS_CTX_MODEM_RESPONSE_BUSY   ((NTSTATUS) 0xC00A000E)
+#define STATUS_CTX_MODEM_RESPONSE_VOICE  ((NTSTATUS) 0xC00A000F)
+#define STATUS_CTX_TD_ERROR              ((NTSTATUS) 0xC00A0010)
+#define STATUS_CTX_LICENSE_CLIENT_INVALID       ((NTSTATUS) 0xC00A0012)
+#define STATUS_CTX_LICENSE_NOT_AVAILABLE ((NTSTATUS) 0xC00A0013)
+#define STATUS_CTX_LICENSE_EXPIRED       ((NTSTATUS) 0xC00A0014)
+#define STATUS_CTX_WINSTATION_NOT_FOUND  ((NTSTATUS) 0xC00A0015)
+#define STATUS_CTX_WINSTATION_NAME_COLLISION    ((NTSTATUS) 0xC00A0016)
+#define STATUS_CTX_WINSTATION_BUSY       ((NTSTATUS) 0xC00A0017)
+#define STATUS_CTX_BAD_VIDEO_MODE        ((NTSTATUS) 0xC00A0018)
+#define STATUS_CTX_GRAPHICS_INVALID      ((NTSTATUS) 0xC00A0022)
+#define STATUS_CTX_NOT_CONSOLE           ((NTSTATUS) 0xC00A0024)
+#define STATUS_CTX_CLIENT_QUERY_TIMEOUT  ((NTSTATUS) 0xC00A0026)
+#define STATUS_CTX_CONSOLE_DISCONNECT    ((NTSTATUS) 0xC00A0027)
+#define STATUS_CTX_CONSOLE_CONNECT       ((NTSTATUS) 0xC00A0028)
+#define STATUS_CTX_SHADOW_DENIED         ((NTSTATUS) 0xC00A002A)
+#define STATUS_CTX_WINSTATION_ACCESS_DENIED     ((NTSTATUS) 0xC00A002B)
+#define STATUS_CTX_INVALID_WD            ((NTSTATUS) 0xC00A002E)
+#define STATUS_CTX_WD_NOT_FOUND          ((NTSTATUS) 0xC00A002F)
+#define STATUS_CTX_SHADOW_INVALID        ((NTSTATUS) 0xC00A0030)
+#define STATUS_CTX_SHADOW_DISABLED       ((NTSTATUS) 0xC00A0031)
+#define STATUS_RDP_PROTOCOL_ERROR        ((NTSTATUS) 0xC00A0032)
+#define STATUS_CTX_CLIENT_LICENSE_NOT_SET       ((NTSTATUS) 0xC00A0033)
+#define STATUS_CTX_CLIENT_LICENSE_IN_USE ((NTSTATUS) 0xC00A0034)
+#define STATUS_CTX_SHADOW_ENDED_BY_MODE_CHANGE  ((NTSTATUS) 0xC00A0035)
+#define STATUS_CTX_SHADOW_NOT_RUNNING    ((NTSTATUS) 0xC00A0036)
+#define STATUS_CTX_LOGON_DISABLED        ((NTSTATUS) 0xC00A0037)
+#define STATUS_CTX_SECURITY_LAYER_ERROR  ((NTSTATUS) 0xC00A0038)
+
+#define STATUS_CLUSTER_INVALID_NODE      ((NTSTATUS) 0xC0130001)
+#define STATUS_CLUSTER_NODE_EXISTS       ((NTSTATUS) 0xC0130002)
+#define STATUS_CLUSTER_JOIN_IN_PROGRESS  ((NTSTATUS) 0xC0130003)
+#define STATUS_CLUSTER_NODE_NOT_FOUND    ((NTSTATUS) 0xC0130004)
+#define STATUS_CLUSTER_LOCAL_NODE_NOT_FOUND     ((NTSTATUS) 0xC0130005)
+#define STATUS_CLUSTER_NETWORK_EXISTS    ((NTSTATUS) 0xC0130006)
+#define STATUS_CLUSTER_NETWORK_NOT_FOUND ((NTSTATUS) 0xC0130007)
+#define STATUS_CLUSTER_NETINTERFACE_EXISTS      ((NTSTATUS) 0xC0130008)
+#define STATUS_CLUSTER_NETINTERFACE_NOT_FOUND   ((NTSTATUS) 0xC0130009)
+#define STATUS_CLUSTER_INVALID_REQUEST   ((NTSTATUS) 0xC013000A)
+#define STATUS_CLUSTER_INVALID_NETWORK_PROVIDER ((NTSTATUS) 0xC013000B)
+#define STATUS_CLUSTER_NODE_DOWN         ((NTSTATUS) 0xC013000C)
+#define STATUS_CLUSTER_NODE_UNREACHABLE  ((NTSTATUS) 0xC013000D)
+#define STATUS_CLUSTER_NODE_NOT_MEMBER   ((NTSTATUS) 0xC013000E)
+#define STATUS_CLUSTER_JOIN_NOT_IN_PROGRESS     ((NTSTATUS) 0xC013000F)
+#define STATUS_CLUSTER_INVALID_NETWORK   ((NTSTATUS) 0xC0130010)
+#define STATUS_CLUSTER_NO_NET_ADAPTERS   ((NTSTATUS) 0xC0130011)
+#define STATUS_CLUSTER_NODE_UP           ((NTSTATUS) 0xC0130012)
+#define STATUS_CLUSTER_NODE_PAUSED       ((NTSTATUS) 0xC0130013)
+#define STATUS_CLUSTER_NODE_NOT_PAUSED   ((NTSTATUS) 0xC0130014)
+#define STATUS_CLUSTER_NO_SECURITY_CONTEXT      ((NTSTATUS) 0xC0130015)
+#define STATUS_CLUSTER_NETWORK_NOT_INTERNAL     ((NTSTATUS) 0xC0130016)
+#define STATUS_CLUSTER_POISONED          ((NTSTATUS) 0xC0130017)
+
+#define STATUS_SXS_SECTION_NOT_FOUND     ((NTSTATUS) 0xC0150001)
+#define STATUS_SXS_CANT_GEN_ACTCTX       ((NTSTATUS) 0xC0150002)
+#define STATUS_SXS_INVALID_ACTCTXDATA_FORMAT    ((NTSTATUS) 0xC0150003)
+#define STATUS_SXS_ASSEMBLY_NOT_FOUND    ((NTSTATUS) 0xC0150004)
+#define STATUS_SXS_MANIFEST_FORMAT_ERROR ((NTSTATUS) 0xC0150005)
+#define STATUS_SXS_MANIFEST_PARSE_ERROR  ((NTSTATUS) 0xC0150006)
+#define STATUS_SXS_ACTIVATION_CONTEXT_DISABLED  ((NTSTATUS) 0xC0150007)
+#define STATUS_SXS_KEY_NOT_FOUND         ((NTSTATUS) 0xC0150008)
+#define STATUS_SXS_VERSION_CONFLICT      ((NTSTATUS) 0xC0150009)
+#define STATUS_SXS_WRONG_SECTION_TYPE    ((NTSTATUS) 0xC015000A)
+#define STATUS_SXS_THREAD_QUERIES_DISABLED      ((NTSTATUS) 0xC015000B)
+#define STATUS_SXS_ASSEMBLY_MISSING      ((NTSTATUS) 0xC015000C)
+#define STATUS_SXS_PROCESS_DEFAULT_ALREADY_SET  ((NTSTATUS) 0xC015000E)
+#define STATUS_SXS_EARLY_DEACTIVATION    ((NTSTATUS) 0xC015000F)
+#define STATUS_SXS_INVALID_DEACTIVATION  ((NTSTATUS) 0xC0150010)
+#define STATUS_SXS_MULTIPLE_DEACTIVATION ((NTSTATUS) 0xC0150011)
+#define STATUS_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY ((NTSTATUS) 0xC0150012)
+#define STATUS_SXS_PROCESS_TERMINATION_REQUESTED ((NTSTATUS) 0xC0150013)
+#define STATUS_SXS_CORRUPT_ACTIVATION_STACK ((NTSTATUS) 0xC0150014)
+#define STATUS_SXS_CORRUPTION            ((NTSTATUS) 0xC0150015)
+
+#define DBG_EXCEPTION_HANDLED       ((NTSTATUS) 0x00010001)
+#define DBG_CONTINUE                ((NTSTATUS) 0x00010002)
+#define DBG_TERMINATE_THREAD        ((NTSTATUS) 0x40010003)
+#define DBG_TERMINATE_PROCESS       ((NTSTATUS) 0x40010004)
+#define DBG_CONTROL_C               ((NTSTATUS) 0x40010005)
+#define DBG_CONTROL_BREAK           ((NTSTATUS) 0x40010008)
+#define DBG_COMMAND_EXCEPTION       ((NTSTATUS) 0x40010009)
+#define DBG_EXCEPTION_NOT_HANDLED   ((NTSTATUS) 0x80010001)
+
+#endif /* WIN32_NO_STATUS */
+
+#endif /* __WINE_NTSTATUS_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/oaidl.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/oaidl.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/oaidl.h	(revision 16410)
@@ -0,0 +1,5176 @@
+/*** Autogenerated by WIDL 1.1.10 from ../../../dlls/wined3d/../../include/oaidl.idl - Do not edit ***/
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef __WIDL_OAIDL_H
+#define __WIDL_OAIDL_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <objidl.h>
+#ifndef __IDispatch_FWD_DEFINED__
+#define __IDispatch_FWD_DEFINED__
+typedef interface IDispatch IDispatch;
+#endif
+
+#ifndef __ITypeInfo_FWD_DEFINED__
+#define __ITypeInfo_FWD_DEFINED__
+typedef interface ITypeInfo ITypeInfo;
+#endif
+
+#ifndef __ITypeLib_FWD_DEFINED__
+#define __ITypeLib_FWD_DEFINED__
+typedef interface ITypeLib ITypeLib;
+#endif
+
+#ifndef __IRecordInfo_FWD_DEFINED__
+#define __IRecordInfo_FWD_DEFINED__
+typedef interface IRecordInfo IRecordInfo;
+#endif
+
+typedef CY CURRENCY;
+typedef struct tagSAFEARRAYBOUND {
+    ULONG cElements;
+    LONG lLbound;
+} SAFEARRAYBOUND;
+typedef struct tagSAFEARRAYBOUND *LPSAFEARRAYBOUND;
+typedef struct _wireVARIANT *wireVARIANT;
+typedef struct _wireBRECORD *wireBRECORD;
+typedef struct _wireSAFEARR_BSTR {
+    ULONG Size;
+    wireBSTR *aBstr;
+} SAFEARR_BSTR;
+typedef struct _wireSAFEARR_UNKNOWN {
+    ULONG Size;
+    IUnknown **apUnknown;
+} SAFEARR_UNKNOWN;
+typedef struct _wireSAFEARR_DISPATCH {
+    ULONG Size;
+    IDispatch **apDispatch;
+} SAFEARR_DISPATCH;
+typedef struct _wireSAFEARR_VARIANT {
+    ULONG Size;
+    wireVARIANT *aVariant;
+} SAFEARR_VARIANT;
+typedef struct _wireSAFEARR_BRECORD {
+    ULONG Size;
+    wireBRECORD *aRecord;
+} SAFEARR_BRECORD;
+typedef struct _wireSAFEARR_HAVEIID {
+    ULONG Size;
+    IUnknown **apUnknown;
+    IID iid;
+} SAFEARR_HAVEIID;
+typedef enum tagSF_TYPE {
+    SF_ERROR = VT_ERROR,
+    SF_I1 = VT_I1,
+    SF_I2 = VT_I2,
+    SF_I4 = VT_I4,
+    SF_I8 = VT_I8,
+    SF_BSTR = VT_BSTR,
+    SF_UNKNOWN = VT_UNKNOWN,
+    SF_DISPATCH = VT_DISPATCH,
+    SF_VARIANT = VT_VARIANT,
+    SF_RECORD = VT_RECORD,
+    SF_HAVEIID = VT_UNKNOWN | VT_RESERVED
+} SF_TYPE;
+typedef struct _wireSAFEARRAY_UNION {
+    ULONG sfType;
+    union {
+        SAFEARR_BSTR BstrStr;
+        SAFEARR_UNKNOWN UnknownStr;
+        SAFEARR_DISPATCH DispatchStr;
+        SAFEARR_VARIANT VariantStr;
+        SAFEARR_BRECORD RecordStr;
+        SAFEARR_HAVEIID HaveIidStr;
+        BYTE_SIZEDARR ByteStr;
+        WORD_SIZEDARR WordStr;
+        DWORD_SIZEDARR LongStr;
+        HYPER_SIZEDARR HyperStr;
+    } u;
+} SAFEARRAYUNION;
+typedef struct _wireSAFEARRAY {
+    USHORT cDims;
+    USHORT fFeatures;
+    ULONG cbElements;
+    ULONG cLocks;
+    SAFEARRAYUNION uArrayStructs;
+    SAFEARRAYBOUND rgsabound[1];
+} *wireSAFEARRAY;
+typedef wireSAFEARRAY *wirePSAFEARRAY;
+typedef struct tagSAFEARRAY {
+    USHORT cDims;
+    USHORT fFeatures;
+    ULONG cbElements;
+    ULONG cLocks;
+    PVOID pvData;
+    SAFEARRAYBOUND rgsabound[1];
+} SAFEARRAY;
+typedef SAFEARRAY *LPSAFEARRAY;
+#define FADF_AUTO (0x1)
+
+#define FADF_STATIC (0x2)
+
+#define FADF_EMBEDDED (0x4)
+
+#define FADF_FIXEDSIZE (0x10)
+
+#define FADF_RECORD (0x20)
+
+#define FADF_HAVEIID (0x40)
+
+#define FADF_HAVEVARTYPE (0x80)
+
+#define FADF_BSTR (0x100)
+
+#define FADF_UNKNOWN (0x200)
+
+#define FADF_DISPATCH (0x400)
+
+#define FADF_VARIANT (0x800)
+
+#define FADF_RESERVED (0xf008)
+
+#define FADF_DATADELETED (0x1000)
+
+#define FADF_CREATEVECTOR (0x2000)
+
+#if (__STDC__ && !defined(_FORCENAMELESSUNION)) || defined(NONAMELESSUNION)
+#define __VARIANT_NAME_1 n1
+#define __VARIANT_NAME_2 n2
+#define __VARIANT_NAME_3 n3
+#define __VARIANT_NAME_4 brecVal
+#else
+#define __tagVARIANT
+#define __VARIANT_NAME_1
+#define __VARIANT_NAME_2
+#define __VARIANT_NAME_3
+#define __tagBRECORD
+#define __VARIANT_NAME_4
+#endif
+typedef struct tagVARIANT VARIANT;
+struct tagVARIANT {
+    union {
+        struct __tagVARIANT {
+            VARTYPE vt;
+            WORD wReserved1;
+            WORD wReserved2;
+            WORD wReserved3;
+            union {
+                signed char cVal;
+                USHORT uiVal;
+                ULONG ulVal;
+                INT intVal;
+                UINT uintVal;
+                BYTE bVal;
+                SHORT iVal;
+                LONG lVal;
+                FLOAT fltVal;
+                DOUBLE dblVal;
+                VARIANT_BOOL boolVal;
+                SCODE scode;
+                DATE date;
+                BSTR bstrVal;
+                CY cyVal;
+                IUnknown *punkVal;
+                IDispatch *pdispVal;
+                SAFEARRAY *parray;
+                LONGLONG llVal;
+                ULONGLONG ullVal;
+                signed char *pcVal;
+                USHORT *puiVal;
+                ULONG *pulVal;
+                INT *pintVal;
+                UINT *puintVal;
+                BYTE *pbVal;
+                SHORT *piVal;
+                LONG *plVal;
+                FLOAT *pfltVal;
+                DOUBLE *pdblVal;
+                VARIANT_BOOL *pboolVal;
+                SCODE *pscode;
+                DATE *pdate;
+                BSTR *pbstrVal;
+                VARIANT *pvarVal;
+                PVOID byref;
+                CY *pcyVal;
+                DECIMAL *pdecVal;
+                IUnknown **ppunkVal;
+                IDispatch **ppdispVal;
+                SAFEARRAY **pparray;
+                LONGLONG *pllVal;
+                ULONGLONG *pullVal;
+                struct __tagBRECORD {
+                    PVOID pvRecord;
+                    IRecordInfo *pRecInfo;
+                } __VARIANT_NAME_4;
+            } __VARIANT_NAME_3;
+        } __VARIANT_NAME_2;
+        DECIMAL decVal;
+    } __VARIANT_NAME_1;
+};
+
+typedef VARIANT *LPVARIANT;
+typedef VARIANT VARIANTARG;
+typedef VARIANTARG *LPVARIANTARG;
+struct _wireBRECORD {
+    ULONG fFlags;
+    ULONG clSize;
+    IRecordInfo *pRecInfo;
+    byte *pRecord;
+};
+
+struct _wireVARIANT {
+    DWORD clSize;
+    DWORD rpcReserved;
+    USHORT vt;
+    USHORT wReserved1;
+    USHORT wReserved2;
+    USHORT wReserved3;
+    union {
+        signed char cVal;
+        USHORT uiVal;
+        ULONG ulVal;
+        INT intVal;
+        UINT uintVal;
+        BYTE bVal;
+        SHORT iVal;
+        LONG lVal;
+        FLOAT fltVal;
+        DOUBLE dblVal;
+        VARIANT_BOOL boolVal;
+        SCODE scode;
+        DATE date;
+        wireBSTR bstrVal;
+        CY cyVal;
+        DECIMAL decVal;
+        IUnknown *punkVal;
+        IDispatch *pdispVal;
+        wireSAFEARRAY parray;
+        signed char *pcVal;
+        USHORT *puiVal;
+        ULONG *pulVal;
+        INT *pintVal;
+        UINT *puintVal;
+        BYTE *pbVal;
+        SHORT *piVal;
+        LONG *plVal;
+        FLOAT *pfltVal;
+        DOUBLE *pdblVal;
+        VARIANT_BOOL *pboolVal;
+        SCODE *pscode;
+        DATE *pdate;
+        wireBSTR *pbstrVal;
+        wireVARIANT *pvarVal;
+        CY *pcyVal;
+        DECIMAL *pdecVal;
+        IUnknown **ppunkVal;
+        IDispatch **ppdispVal;
+        wireSAFEARRAY *pparray;
+        wireBRECORD brecVal;
+    } DUMMYUNIONNAME;
+};
+
+typedef LONG DISPID;
+typedef DWORD HREFTYPE;
+typedef DISPID MEMBERID;
+typedef enum tagTYPEKIND {
+    TKIND_ENUM = 0,
+    TKIND_RECORD = 1,
+    TKIND_MODULE = 2,
+    TKIND_INTERFACE = 3,
+    TKIND_DISPATCH = 4,
+    TKIND_COCLASS = 5,
+    TKIND_ALIAS = 6,
+    TKIND_UNION = 7,
+    TKIND_MAX = 8
+} TYPEKIND;
+typedef struct tagTYPEDESC {
+    union {
+        struct tagTYPEDESC *lptdesc;
+        struct tagARRAYDESC *lpadesc;
+        HREFTYPE hreftype;
+    } DUMMYUNIONNAME;
+    VARTYPE vt;
+} TYPEDESC;
+typedef struct tagARRAYDESC {
+    TYPEDESC tdescElem;
+    USHORT cDims;
+    SAFEARRAYBOUND rgbounds[1];
+} ARRAYDESC;
+typedef struct tagPARAMDESCEX {
+    ULONG cBytes;
+    VARIANTARG varDefaultValue;
+} PARAMDESCEX;
+typedef struct tagPARAMDESCEX *LPPARAMDESCEX;
+typedef struct tagPARAMDESC {
+    LPPARAMDESCEX pparamdescex;
+    USHORT wParamFlags;
+} PARAMDESC;
+typedef struct tagPARAMDESC *LPPARAMDESC;
+#define PARAMFLAG_NONE (0x0)
+
+#define PARAMFLAG_FIN (0x1)
+
+#define PARAMFLAG_FOUT (0x2)
+
+#define PARAMFLAG_FLCID (0x4)
+
+#define PARAMFLAG_FRETVAL (0x8)
+
+#define PARAMFLAG_FOPT (0x10)
+
+#define PARAMFLAG_FHASDEFAULT (0x20)
+
+#define PARAMFLAG_FHASCUSTDATA (0x40)
+
+typedef struct tagIDLDESC {
+    ULONG dwReserved;
+    USHORT wIDLFlags;
+} IDLDESC;
+typedef struct tagIDLDESC *LPIDLDESC;
+#define IDLFLAG_NONE (PARAMFLAG_NONE)
+
+#define IDLFLAG_FIN (PARAMFLAG_FIN)
+
+#define IDLFLAG_FOUT (PARAMFLAG_FOUT)
+
+#define IDLFLAG_FLCID (PARAMFLAG_FLCID)
+
+#define IDLFLAG_FRETVAL (PARAMFLAG_FRETVAL)
+
+#if 0
+typedef struct tagELEMDESC {
+    TYPEDESC tdesc;
+    PARAMDESC paramdesc;
+} ELEMDESC;
+#else
+typedef struct tagELEMDESC {
+  TYPEDESC tdesc;
+  union {
+    IDLDESC idldesc;
+    PARAMDESC paramdesc;
+  } DUMMYUNIONNAME;
+} ELEMDESC, *LPELEMDESC;
+#endif
+typedef struct tagTYPEATTR {
+    GUID guid;
+    LCID lcid;
+    DWORD dwReserved;
+    MEMBERID memidConstructor;
+    MEMBERID memidDestructor;
+    LPOLESTR lpstrSchema;
+    ULONG cbSizeInstance;
+    TYPEKIND typekind;
+    WORD cFuncs;
+    WORD cVars;
+    WORD cImplTypes;
+    WORD cbSizeVft;
+    WORD cbAlignment;
+    WORD wTypeFlags;
+    WORD wMajorVerNum;
+    WORD wMinorVerNum;
+    TYPEDESC tdescAlias;
+    IDLDESC idldescType;
+} TYPEATTR;
+typedef struct tagTYPEATTR *LPTYPEATTR;
+typedef struct tagDISPPARAMS {
+    VARIANTARG *rgvarg;
+    DISPID *rgdispidNamedArgs;
+    UINT cArgs;
+    UINT cNamedArgs;
+} DISPPARAMS;
+#if 0
+typedef struct tagEXCEPINFO {
+    WORD wCode;
+    WORD wReserved;
+    BSTR bstrSource;
+    BSTR bstrDescription;
+    BSTR bstrHelpFile;
+    DWORD dwHelpContext;
+    ULONG pvReserved;
+    ULONG pfnDeferredFillIn;
+    SCODE scode;
+} EXCEPINFO;
+#else
+typedef struct tagEXCEPINFO {
+  WORD wCode;
+  WORD wReserved;
+  BSTR bstrSource;
+  BSTR bstrDescription;
+  BSTR bstrHelpFile;
+  DWORD dwHelpContext;
+  PVOID pvReserved;
+  HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *);
+  SCODE scode;
+} EXCEPINFO, *LPEXCEPINFO;
+#endif
+typedef enum tagCALLCONV {
+    CC_FASTCALL = 0,
+    CC_CDECL = 1,
+    CC_MSCPASCAL = 2,
+    CC_PASCAL = CC_MSCPASCAL,
+    CC_MACPASCAL = 3,
+    CC_STDCALL = 4,
+    CC_FPFASTCALL = 5,
+    CC_SYSCALL = 6,
+    CC_MPWCDECL = 7,
+    CC_MPWPASCAL = 8,
+    CC_MAX = 9
+} CALLCONV;
+typedef enum tagFUNCKIND {
+    FUNC_VIRTUAL = 0,
+    FUNC_PUREVIRTUAL = 1,
+    FUNC_NONVIRTUAL = 2,
+    FUNC_STATIC = 3,
+    FUNC_DISPATCH = 4
+} FUNCKIND;
+typedef enum tagINVOKEKIND {
+    INVOKE_FUNC = 1,
+    INVOKE_PROPERTYGET = 2,
+    INVOKE_PROPERTYPUT = 4,
+    INVOKE_PROPERTYPUTREF = 8
+} INVOKEKIND;
+typedef struct tagFUNCDESC {
+    MEMBERID memid;
+    SCODE *lprgscode;
+    ELEMDESC *lprgelemdescParam;
+    FUNCKIND funckind;
+    INVOKEKIND invkind;
+    CALLCONV callconv;
+    SHORT cParams;
+    SHORT cParamsOpt;
+    SHORT oVft;
+    SHORT cScodes;
+    ELEMDESC elemdescFunc;
+    WORD wFuncFlags;
+} FUNCDESC;
+typedef struct tagFUNCDESC *LPFUNCDESC;
+typedef enum tagVARKIND {
+    VAR_PERINSTANCE = 0,
+    VAR_STATIC = 1,
+    VAR_CONST = 2,
+    VAR_DISPATCH = 3
+} VARKIND;
+#define IMPLTYPEFLAG_FDEFAULT (0x1)
+
+#define IMPLTYPEFLAG_FSOURCE (0x2)
+
+#define IMPLTYPEFLAG_FRESTRICTED (0x4)
+
+#define IMPLTYPEFLAG_FDEFAULTVTABLE (0x8)
+
+typedef struct tagVARDESC {
+    MEMBERID memid;
+    LPOLESTR lpstrSchema;
+    union {
+        ULONG oInst;
+        VARIANT *lpvarValue;
+    } DUMMYUNIONNAME;
+    ELEMDESC elemdescVar;
+    WORD wVarFlags;
+    VARKIND varkind;
+} VARDESC;
+typedef struct tagVARDESC *LPVARDESC;
+typedef enum tagTYPEFLAGS {
+    TYPEFLAG_FAPPOBJECT = 0x1,
+    TYPEFLAG_FCANCREATE = 0x2,
+    TYPEFLAG_FLICENSED = 0x4,
+    TYPEFLAG_FPREDECLID = 0x8,
+    TYPEFLAG_FHIDDEN = 0x10,
+    TYPEFLAG_FCONTROL = 0x20,
+    TYPEFLAG_FDUAL = 0x40,
+    TYPEFLAG_FNONEXTENSIBLE = 0x80,
+    TYPEFLAG_FOLEAUTOMATION = 0x100,
+    TYPEFLAG_FRESTRICTED = 0x200,
+    TYPEFLAG_FAGGREGATABLE = 0x400,
+    TYPEFLAG_FREPLACEABLE = 0x800,
+    TYPEFLAG_FDISPATCHABLE = 0x1000,
+    TYPEFLAG_FREVERSEBIND = 0x2000,
+    TYPEFLAG_FPROXY = 0x4000
+} TYPEFLAGS;
+typedef enum tagFUNCFLAGS {
+    FUNCFLAG_FRESTRICTED = 0x1,
+    FUNCFLAG_FSOURCE = 0x2,
+    FUNCFLAG_FBINDABLE = 0x4,
+    FUNCFLAG_FREQUESTEDIT = 0x8,
+    FUNCFLAG_FDISPLAYBIND = 0x10,
+    FUNCFLAG_FDEFAULTBIND = 0x20,
+    FUNCFLAG_FHIDDEN = 0x40,
+    FUNCFLAG_FUSESGETLASTERROR = 0x80,
+    FUNCFLAG_FDEFAULTCOLLELEM = 0x100,
+    FUNCFLAG_FUIDEFAULT = 0x200,
+    FUNCFLAG_FNONBROWSABLE = 0x400,
+    FUNCFLAG_FREPLACEABLE = 0x800,
+    FUNCFLAG_FIMMEDIATEBIND = 0x1000
+} FUNCFLAGS;
+typedef enum tagVARFLAGS {
+    VARFLAG_FREADONLY = 0x1,
+    VARFLAG_FSOURCE = 0x2,
+    VARFLAG_FBINDABLE = 0x4,
+    VARFLAG_FREQUESTEDIT = 0x8,
+    VARFLAG_FDISPLAYBIND = 0x10,
+    VARFLAG_FDEFAULTBIND = 0x20,
+    VARFLAG_FHIDDEN = 0x40,
+    VARFLAG_FRESTRICTED = 0x80,
+    VARFLAG_FDEFAULTCOLLELEM = 0x100,
+    VARFLAG_FUIDEFAULT = 0x200,
+    VARFLAG_FNONBROWSABLE = 0x400,
+    VARFLAG_FREPLACEABLE = 0x800,
+    VARFLAG_FIMMEDIATEBIND = 0x1000
+} VARFLAGS;
+typedef struct tagCLEANLOCALSTORAGE {
+    IUnknown *pInterface;
+    PVOID pStorage;
+    DWORD flags;
+} CLEANLOCALSTORAGE;
+typedef struct tagCUSTDATAITEM {
+    GUID guid;
+    VARIANTARG varValue;
+} CUSTDATAITEM;
+typedef struct tagCUSTDATAITEM *LPCUSTDATAITEM;
+typedef struct tagCUSTDATA {
+    DWORD cCustData;
+    LPCUSTDATAITEM prgCustData;
+} CUSTDATA;
+typedef struct tagCUSTDATA *LPCUSTDATA;
+void * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free(void *);
+
+/*****************************************************************************
+ * IOleAutomationTypes interface (v1.0)
+ */
+#ifndef __IOleAutomationTypes_INTERFACE_DEFINED__
+#define __IOleAutomationTypes_INTERFACE_DEFINED__
+
+extern RPC_IF_HANDLE IOleAutomationTypes_v1_0_c_ifspec;
+extern RPC_IF_HANDLE IOleAutomationTypes_v1_0_s_ifspec;
+
+#endif  /* __IOleAutomationTypes_INTERFACE_DEFINED__ */
+
+typedef IDispatch *LPDISPATCH;
+#define DISPID_UNKNOWN (-1)
+
+#define DISPID_VALUE (0)
+
+#define DISPID_PROPERTYPUT (-3)
+
+#define DISPID_NEWENUM (-4)
+
+#define DISPID_EVALUATE (-5)
+
+#define DISPID_CONSTRUCTOR (-6)
+
+#define DISPID_DESTRUCTOR (-7)
+
+#define DISPID_COLLECT (-8)
+
+/*****************************************************************************
+ * IDispatch interface
+ */
+#ifndef __IDispatch_INTERFACE_DEFINED__
+#define __IDispatch_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDispatch, 0x00020400, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IDispatch : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(
+        UINT *pctinfo) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Invoke(
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr) = 0;
+
+};
+#else
+typedef struct IDispatchVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDispatch* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDispatch* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDispatch* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IDispatch* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IDispatch* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IDispatch* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IDispatch* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    END_INTERFACE
+} IDispatchVtbl;
+interface IDispatch {
+    CONST_VTBL IDispatchVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IDispatch_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDispatch_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDispatch_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IDispatch_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IDispatch_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IDispatch_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IDispatch_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IDispatch_GetTypeInfoCount_Proxy(
+    IDispatch* This,
+    UINT *pctinfo);
+void __RPC_STUB IDispatch_GetTypeInfoCount_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDispatch_GetTypeInfo_Proxy(
+    IDispatch* This,
+    UINT iTInfo,
+    LCID lcid,
+    ITypeInfo **ppTInfo);
+void __RPC_STUB IDispatch_GetTypeInfo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDispatch_GetIDsOfNames_Proxy(
+    IDispatch* This,
+    REFIID riid,
+    LPOLESTR *rgszNames,
+    UINT cNames,
+    LCID lcid,
+    DISPID *rgDispId);
+void __RPC_STUB IDispatch_GetIDsOfNames_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDispatch_RemoteInvoke_Proxy(
+    IDispatch* This,
+    DISPID dispIdMember,
+    REFIID riid,
+    LCID lcid,
+    DWORD dwFlags,
+    DISPPARAMS *pDispParams,
+    VARIANT *pVarResult,
+    EXCEPINFO *pExcepInfo,
+    UINT *pArgErr,
+    UINT cVarRef,
+    UINT *rgVarRefIdx,
+    VARIANTARG *rgVarRef);
+void __RPC_STUB IDispatch_RemoteInvoke_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IDispatch_Invoke_Proxy(
+    IDispatch* This,
+    DISPID dispIdMember,
+    REFIID riid,
+    LCID lcid,
+    WORD wFlags,
+    DISPPARAMS *pDispParams,
+    VARIANT *pVarResult,
+    EXCEPINFO *pExcepInfo,
+    UINT *puArgErr);
+HRESULT __RPC_STUB IDispatch_Invoke_Stub(
+    IDispatch* This,
+    DISPID dispIdMember,
+    REFIID riid,
+    LCID lcid,
+    DWORD dwFlags,
+    DISPPARAMS *pDispParams,
+    VARIANT *pVarResult,
+    EXCEPINFO *pExcepInfo,
+    UINT *pArgErr,
+    UINT cVarRef,
+    UINT *rgVarRefIdx,
+    VARIANTARG *rgVarRef);
+
+#endif  /* __IDispatch_INTERFACE_DEFINED__ */
+
+#ifndef __IEnumVARIANT_FWD_DEFINED__
+#define __IEnumVARIANT_FWD_DEFINED__
+typedef interface IEnumVARIANT IEnumVARIANT;
+#endif
+
+typedef IEnumVARIANT *LPENUMVARIANT;
+/*****************************************************************************
+ * IEnumVARIANT interface
+ */
+#ifndef __IEnumVARIANT_INTERFACE_DEFINED__
+#define __IEnumVARIANT_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IEnumVARIANT, 0x00020404, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IEnumVARIANT : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Next(
+        ULONG celt,
+        VARIANT *rgVar,
+        ULONG *pCeltFetched) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Skip(
+        ULONG celt) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IEnumVARIANT **ppEnum) = 0;
+
+};
+#else
+typedef struct IEnumVARIANTVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IEnumVARIANT* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IEnumVARIANT* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IEnumVARIANT* This);
+
+    /*** IEnumVARIANT methods ***/
+    HRESULT (STDMETHODCALLTYPE *Next)(
+        IEnumVARIANT* This,
+        ULONG celt,
+        VARIANT *rgVar,
+        ULONG *pCeltFetched);
+
+    HRESULT (STDMETHODCALLTYPE *Skip)(
+        IEnumVARIANT* This,
+        ULONG celt);
+
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        IEnumVARIANT* This);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IEnumVARIANT* This,
+        IEnumVARIANT **ppEnum);
+
+    END_INTERFACE
+} IEnumVARIANTVtbl;
+interface IEnumVARIANT {
+    CONST_VTBL IEnumVARIANTVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IEnumVARIANT_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumVARIANT_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumVARIANT_Release(This) (This)->lpVtbl->Release(This)
+/*** IEnumVARIANT methods ***/
+#define IEnumVARIANT_Next(This,celt,rgVar,pCeltFetched) (This)->lpVtbl->Next(This,celt,rgVar,pCeltFetched)
+#define IEnumVARIANT_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumVARIANT_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumVARIANT_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IEnumVARIANT_RemoteNext_Proxy(
+    IEnumVARIANT* This,
+    ULONG celt,
+    VARIANT *rgVar,
+    ULONG *pCeltFetched);
+void __RPC_STUB IEnumVARIANT_RemoteNext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumVARIANT_Skip_Proxy(
+    IEnumVARIANT* This,
+    ULONG celt);
+void __RPC_STUB IEnumVARIANT_Skip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumVARIANT_Reset_Proxy(
+    IEnumVARIANT* This);
+void __RPC_STUB IEnumVARIANT_Reset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumVARIANT_Clone_Proxy(
+    IEnumVARIANT* This,
+    IEnumVARIANT **ppEnum);
+void __RPC_STUB IEnumVARIANT_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IEnumVARIANT_Next_Proxy(
+    IEnumVARIANT* This,
+    ULONG celt,
+    VARIANT *rgVar,
+    ULONG *pCeltFetched);
+HRESULT __RPC_STUB IEnumVARIANT_Next_Stub(
+    IEnumVARIANT* This,
+    ULONG celt,
+    VARIANT *rgVar,
+    ULONG *pCeltFetched);
+
+#endif  /* __IEnumVARIANT_INTERFACE_DEFINED__ */
+
+#ifndef __ITypeComp_FWD_DEFINED__
+#define __ITypeComp_FWD_DEFINED__
+typedef interface ITypeComp ITypeComp;
+#endif
+
+typedef ITypeComp *LPTYPECOMP;
+typedef enum tagDESCKIND {
+    DESCKIND_NONE = 0,
+    DESCKIND_FUNCDESC = 1,
+    DESCKIND_VARDESC = 2,
+    DESCKIND_TYPECOMP = 3,
+    DESCKIND_IMPLICITAPPOBJ = 4,
+    DESCKIND_MAX = 5
+} DESCKIND;
+typedef union tagBINDPTR {
+    FUNCDESC *lpfuncdesc;
+    VARDESC *lpvardesc;
+    ITypeComp *lptcomp;
+} BINDPTR;
+typedef union tagBINDPTR *LPBINDPTR;
+/*****************************************************************************
+ * ITypeComp interface
+ */
+#ifndef __ITypeComp_INTERFACE_DEFINED__
+#define __ITypeComp_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ITypeComp, 0x00020403, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ITypeComp : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Bind(
+        LPOLESTR szName,
+        ULONG lHashVal,
+        WORD wFlags,
+        ITypeInfo **ppTInfo,
+        DESCKIND *pDescKind,
+        BINDPTR *pBindPtr) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE BindType(
+        LPOLESTR szName,
+        ULONG lHashVal,
+        ITypeInfo **ppTInfo,
+        ITypeComp **ppTComp) = 0;
+
+};
+#else
+typedef struct ITypeCompVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITypeComp* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITypeComp* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITypeComp* This);
+
+    /*** ITypeComp methods ***/
+    HRESULT (STDMETHODCALLTYPE *Bind)(
+        ITypeComp* This,
+        LPOLESTR szName,
+        ULONG lHashVal,
+        WORD wFlags,
+        ITypeInfo **ppTInfo,
+        DESCKIND *pDescKind,
+        BINDPTR *pBindPtr);
+
+    HRESULT (STDMETHODCALLTYPE *BindType)(
+        ITypeComp* This,
+        LPOLESTR szName,
+        ULONG lHashVal,
+        ITypeInfo **ppTInfo,
+        ITypeComp **ppTComp);
+
+    END_INTERFACE
+} ITypeCompVtbl;
+interface ITypeComp {
+    CONST_VTBL ITypeCompVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ITypeComp_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITypeComp_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITypeComp_Release(This) (This)->lpVtbl->Release(This)
+/*** ITypeComp methods ***/
+#define ITypeComp_Bind(This,szName,lHashVal,wFlags,ppTInfo,pDescKind,pBindPtr) (This)->lpVtbl->Bind(This,szName,lHashVal,wFlags,ppTInfo,pDescKind,pBindPtr)
+#define ITypeComp_BindType(This,szName,lHashVal,ppTInfo,ppTComp) (This)->lpVtbl->BindType(This,szName,lHashVal,ppTInfo,ppTComp)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ITypeComp_RemoteBind_Proxy(
+    ITypeComp* This,
+    LPOLESTR szName,
+    ULONG lHashVal,
+    WORD wFlags,
+    ITypeInfo **ppTInfo,
+    DESCKIND *pDescKind,
+    LPFUNCDESC *ppFuncDesc,
+    LPVARDESC *ppVarDesc,
+    ITypeComp **ppTypeComp,
+    CLEANLOCALSTORAGE *pDummy);
+void __RPC_STUB ITypeComp_RemoteBind_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeComp_RemoteBindType_Proxy(
+    ITypeComp* This,
+    LPOLESTR szName,
+    ULONG lHashVal,
+    ITypeInfo **ppTInfo);
+void __RPC_STUB ITypeComp_RemoteBindType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeComp_Bind_Proxy(
+    ITypeComp* This,
+    LPOLESTR szName,
+    ULONG lHashVal,
+    WORD wFlags,
+    ITypeInfo **ppTInfo,
+    DESCKIND *pDescKind,
+    BINDPTR *pBindPtr);
+HRESULT __RPC_STUB ITypeComp_Bind_Stub(
+    ITypeComp* This,
+    LPOLESTR szName,
+    ULONG lHashVal,
+    WORD wFlags,
+    ITypeInfo **ppTInfo,
+    DESCKIND *pDescKind,
+    LPFUNCDESC *ppFuncDesc,
+    LPVARDESC *ppVarDesc,
+    ITypeComp **ppTypeComp,
+    CLEANLOCALSTORAGE *pDummy);
+HRESULT CALLBACK ITypeComp_BindType_Proxy(
+    ITypeComp* This,
+    LPOLESTR szName,
+    ULONG lHashVal,
+    ITypeInfo **ppTInfo,
+    ITypeComp **ppTComp);
+HRESULT __RPC_STUB ITypeComp_BindType_Stub(
+    ITypeComp* This,
+    LPOLESTR szName,
+    ULONG lHashVal,
+    ITypeInfo **ppTInfo);
+
+#endif  /* __ITypeComp_INTERFACE_DEFINED__ */
+
+typedef ITypeInfo *LPTYPEINFO;
+/*****************************************************************************
+ * ITypeInfo interface
+ */
+#ifndef __ITypeInfo_INTERFACE_DEFINED__
+#define __ITypeInfo_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ITypeInfo, 0x00020401, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ITypeInfo : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetTypeAttr(
+        TYPEATTR **ppTypeAttr) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTypeComp(
+        ITypeComp **ppTComp) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFuncDesc(
+        UINT index,
+        FUNCDESC **ppFuncDesc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetVarDesc(
+        UINT index,
+        VARDESC **ppVarDesc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetNames(
+        MEMBERID memid,
+        BSTR *rgBstrNames,
+        UINT cMaxNames,
+        UINT *pcNames) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetRefTypeOfImplType(
+        UINT index,
+        HREFTYPE *pRefType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetImplTypeFlags(
+        UINT index,
+        INT *pImplTypeFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        MEMBERID *pMemId) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Invoke(
+        PVOID pvInstance,
+        MEMBERID memid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDocumentation(
+        MEMBERID memid,
+        BSTR *pBstrName,
+        BSTR *pBstrDocString,
+        DWORD *pdwHelpContext,
+        BSTR *pBstrHelpFile) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDllEntry(
+        MEMBERID memid,
+        INVOKEKIND invKind,
+        BSTR *pBstrDllName,
+        BSTR *pBstrName,
+        WORD *pwOrdinal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetRefTypeInfo(
+        HREFTYPE hRefType,
+        ITypeInfo **ppTInfo) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddressOfMember(
+        MEMBERID memid,
+        INVOKEKIND invKind,
+        PVOID *ppv) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateInstance(
+        IUnknown *pUnkOuter,
+        REFIID riid,
+        PVOID *ppvObj) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetMops(
+        MEMBERID memid,
+        BSTR *pBstrMops) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetContainingTypeLib(
+        ITypeLib **ppTLib,
+        UINT *pIndex) = 0;
+
+    virtual void STDMETHODCALLTYPE ReleaseTypeAttr(
+        TYPEATTR *pTypeAttr) = 0;
+
+    virtual void STDMETHODCALLTYPE ReleaseFuncDesc(
+        FUNCDESC *pFuncDesc) = 0;
+
+    virtual void STDMETHODCALLTYPE ReleaseVarDesc(
+        VARDESC *pVarDesc) = 0;
+
+};
+#else
+typedef struct ITypeInfoVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITypeInfo* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITypeInfo* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITypeInfo* This);
+
+    /*** ITypeInfo methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeAttr)(
+        ITypeInfo* This,
+        TYPEATTR **ppTypeAttr);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeComp)(
+        ITypeInfo* This,
+        ITypeComp **ppTComp);
+
+    HRESULT (STDMETHODCALLTYPE *GetFuncDesc)(
+        ITypeInfo* This,
+        UINT index,
+        FUNCDESC **ppFuncDesc);
+
+    HRESULT (STDMETHODCALLTYPE *GetVarDesc)(
+        ITypeInfo* This,
+        UINT index,
+        VARDESC **ppVarDesc);
+
+    HRESULT (STDMETHODCALLTYPE *GetNames)(
+        ITypeInfo* This,
+        MEMBERID memid,
+        BSTR *rgBstrNames,
+        UINT cMaxNames,
+        UINT *pcNames);
+
+    HRESULT (STDMETHODCALLTYPE *GetRefTypeOfImplType)(
+        ITypeInfo* This,
+        UINT index,
+        HREFTYPE *pRefType);
+
+    HRESULT (STDMETHODCALLTYPE *GetImplTypeFlags)(
+        ITypeInfo* This,
+        UINT index,
+        INT *pImplTypeFlags);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        ITypeInfo* This,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        MEMBERID *pMemId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        ITypeInfo* This,
+        PVOID pvInstance,
+        MEMBERID memid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    HRESULT (STDMETHODCALLTYPE *GetDocumentation)(
+        ITypeInfo* This,
+        MEMBERID memid,
+        BSTR *pBstrName,
+        BSTR *pBstrDocString,
+        DWORD *pdwHelpContext,
+        BSTR *pBstrHelpFile);
+
+    HRESULT (STDMETHODCALLTYPE *GetDllEntry)(
+        ITypeInfo* This,
+        MEMBERID memid,
+        INVOKEKIND invKind,
+        BSTR *pBstrDllName,
+        BSTR *pBstrName,
+        WORD *pwOrdinal);
+
+    HRESULT (STDMETHODCALLTYPE *GetRefTypeInfo)(
+        ITypeInfo* This,
+        HREFTYPE hRefType,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *AddressOfMember)(
+        ITypeInfo* This,
+        MEMBERID memid,
+        INVOKEKIND invKind,
+        PVOID *ppv);
+
+    HRESULT (STDMETHODCALLTYPE *CreateInstance)(
+        ITypeInfo* This,
+        IUnknown *pUnkOuter,
+        REFIID riid,
+        PVOID *ppvObj);
+
+    HRESULT (STDMETHODCALLTYPE *GetMops)(
+        ITypeInfo* This,
+        MEMBERID memid,
+        BSTR *pBstrMops);
+
+    HRESULT (STDMETHODCALLTYPE *GetContainingTypeLib)(
+        ITypeInfo* This,
+        ITypeLib **ppTLib,
+        UINT *pIndex);
+
+    void (STDMETHODCALLTYPE *ReleaseTypeAttr)(
+        ITypeInfo* This,
+        TYPEATTR *pTypeAttr);
+
+    void (STDMETHODCALLTYPE *ReleaseFuncDesc)(
+        ITypeInfo* This,
+        FUNCDESC *pFuncDesc);
+
+    void (STDMETHODCALLTYPE *ReleaseVarDesc)(
+        ITypeInfo* This,
+        VARDESC *pVarDesc);
+
+    END_INTERFACE
+} ITypeInfoVtbl;
+interface ITypeInfo {
+    CONST_VTBL ITypeInfoVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ITypeInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITypeInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITypeInfo_Release(This) (This)->lpVtbl->Release(This)
+/*** ITypeInfo methods ***/
+#define ITypeInfo_GetTypeAttr(This,ppTypeAttr) (This)->lpVtbl->GetTypeAttr(This,ppTypeAttr)
+#define ITypeInfo_GetTypeComp(This,ppTComp) (This)->lpVtbl->GetTypeComp(This,ppTComp)
+#define ITypeInfo_GetFuncDesc(This,index,ppFuncDesc) (This)->lpVtbl->GetFuncDesc(This,index,ppFuncDesc)
+#define ITypeInfo_GetVarDesc(This,index,ppVarDesc) (This)->lpVtbl->GetVarDesc(This,index,ppVarDesc)
+#define ITypeInfo_GetNames(This,memid,rgBstrNames,cMaxNames,pcNames) (This)->lpVtbl->GetNames(This,memid,rgBstrNames,cMaxNames,pcNames)
+#define ITypeInfo_GetRefTypeOfImplType(This,index,pRefType) (This)->lpVtbl->GetRefTypeOfImplType(This,index,pRefType)
+#define ITypeInfo_GetImplTypeFlags(This,index,pImplTypeFlags) (This)->lpVtbl->GetImplTypeFlags(This,index,pImplTypeFlags)
+#define ITypeInfo_GetIDsOfNames(This,rgszNames,cNames,pMemId) (This)->lpVtbl->GetIDsOfNames(This,rgszNames,cNames,pMemId)
+#define ITypeInfo_Invoke(This,pvInstance,memid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,pvInstance,memid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+#define ITypeInfo_GetDocumentation(This,memid,pBstrName,pBstrDocString,pdwHelpContext,pBstrHelpFile) (This)->lpVtbl->GetDocumentation(This,memid,pBstrName,pBstrDocString,pdwHelpContext,pBstrHelpFile)
+#define ITypeInfo_GetDllEntry(This,memid,invKind,pBstrDllName,pBstrName,pwOrdinal) (This)->lpVtbl->GetDllEntry(This,memid,invKind,pBstrDllName,pBstrName,pwOrdinal)
+#define ITypeInfo_GetRefTypeInfo(This,hRefType,ppTInfo) (This)->lpVtbl->GetRefTypeInfo(This,hRefType,ppTInfo)
+#define ITypeInfo_AddressOfMember(This,memid,invKind,ppv) (This)->lpVtbl->AddressOfMember(This,memid,invKind,ppv)
+#define ITypeInfo_CreateInstance(This,pUnkOuter,riid,ppvObj) (This)->lpVtbl->CreateInstance(This,pUnkOuter,riid,ppvObj)
+#define ITypeInfo_GetMops(This,memid,pBstrMops) (This)->lpVtbl->GetMops(This,memid,pBstrMops)
+#define ITypeInfo_GetContainingTypeLib(This,ppTLib,pIndex) (This)->lpVtbl->GetContainingTypeLib(This,ppTLib,pIndex)
+#define ITypeInfo_ReleaseTypeAttr(This,pTypeAttr) (This)->lpVtbl->ReleaseTypeAttr(This,pTypeAttr)
+#define ITypeInfo_ReleaseFuncDesc(This,pFuncDesc) (This)->lpVtbl->ReleaseFuncDesc(This,pFuncDesc)
+#define ITypeInfo_ReleaseVarDesc(This,pVarDesc) (This)->lpVtbl->ReleaseVarDesc(This,pVarDesc)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ITypeInfo_RemoteGetTypeAttr_Proxy(
+    ITypeInfo* This,
+    LPTYPEATTR *ppTypeAttr,
+    CLEANLOCALSTORAGE *pDummy);
+void __RPC_STUB ITypeInfo_RemoteGetTypeAttr_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo_GetTypeComp_Proxy(
+    ITypeInfo* This,
+    ITypeComp **ppTComp);
+void __RPC_STUB ITypeInfo_GetTypeComp_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo_RemoteGetFuncDesc_Proxy(
+    ITypeInfo* This,
+    UINT index,
+    LPFUNCDESC *ppFuncDesc,
+    CLEANLOCALSTORAGE *pDummy);
+void __RPC_STUB ITypeInfo_RemoteGetFuncDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo_RemoteGetVarDesc_Proxy(
+    ITypeInfo* This,
+    UINT index,
+    LPVARDESC *ppVarDesc,
+    CLEANLOCALSTORAGE *pDummy);
+void __RPC_STUB ITypeInfo_RemoteGetVarDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo_RemoteGetNames_Proxy(
+    ITypeInfo* This,
+    MEMBERID memid,
+    BSTR *rgBstrNames,
+    UINT cMaxNames,
+    UINT *pcNames);
+void __RPC_STUB ITypeInfo_RemoteGetNames_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo_GetRefTypeOfImplType_Proxy(
+    ITypeInfo* This,
+    UINT index,
+    HREFTYPE *pRefType);
+void __RPC_STUB ITypeInfo_GetRefTypeOfImplType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo_GetImplTypeFlags_Proxy(
+    ITypeInfo* This,
+    UINT index,
+    INT *pImplTypeFlags);
+void __RPC_STUB ITypeInfo_GetImplTypeFlags_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo_LocalGetIDsOfNames_Proxy(
+    ITypeInfo* This);
+void __RPC_STUB ITypeInfo_LocalGetIDsOfNames_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo_LocalInvoke_Proxy(
+    ITypeInfo* This);
+void __RPC_STUB ITypeInfo_LocalInvoke_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo_RemoteGetDocumentation_Proxy(
+    ITypeInfo* This,
+    MEMBERID memid,
+    DWORD refPtrFlags,
+    BSTR *pBstrName,
+    BSTR *pBstrDocString,
+    DWORD *pdwHelpContext,
+    BSTR *pBstrHelpFile);
+void __RPC_STUB ITypeInfo_RemoteGetDocumentation_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo_RemoteGetDllEntry_Proxy(
+    ITypeInfo* This,
+    MEMBERID memid,
+    INVOKEKIND invKind,
+    DWORD refPtrFlags,
+    BSTR *pBstrDllName,
+    BSTR *pBstrName,
+    WORD *pwOrdinal);
+void __RPC_STUB ITypeInfo_RemoteGetDllEntry_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo_GetRefTypeInfo_Proxy(
+    ITypeInfo* This,
+    HREFTYPE hRefType,
+    ITypeInfo **ppTInfo);
+void __RPC_STUB ITypeInfo_GetRefTypeInfo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo_LocalAddressOfMember_Proxy(
+    ITypeInfo* This);
+void __RPC_STUB ITypeInfo_LocalAddressOfMember_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo_RemoteCreateInstance_Proxy(
+    ITypeInfo* This,
+    REFIID riid,
+    IUnknown **ppvObj);
+void __RPC_STUB ITypeInfo_RemoteCreateInstance_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo_GetMops_Proxy(
+    ITypeInfo* This,
+    MEMBERID memid,
+    BSTR *pBstrMops);
+void __RPC_STUB ITypeInfo_GetMops_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo_RemoteGetContainingTypeLib_Proxy(
+    ITypeInfo* This,
+    ITypeLib **ppTLib,
+    UINT *pIndex);
+void __RPC_STUB ITypeInfo_RemoteGetContainingTypeLib_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo_LocalReleaseTypeAttr_Proxy(
+    ITypeInfo* This);
+void __RPC_STUB ITypeInfo_LocalReleaseTypeAttr_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo_LocalReleaseFuncDesc_Proxy(
+    ITypeInfo* This);
+void __RPC_STUB ITypeInfo_LocalReleaseFuncDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo_LocalReleaseVarDesc_Proxy(
+    ITypeInfo* This);
+void __RPC_STUB ITypeInfo_LocalReleaseVarDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeInfo_GetTypeAttr_Proxy(
+    ITypeInfo* This,
+    TYPEATTR **ppTypeAttr);
+HRESULT __RPC_STUB ITypeInfo_GetTypeAttr_Stub(
+    ITypeInfo* This,
+    LPTYPEATTR *ppTypeAttr,
+    CLEANLOCALSTORAGE *pDummy);
+HRESULT CALLBACK ITypeInfo_GetFuncDesc_Proxy(
+    ITypeInfo* This,
+    UINT index,
+    FUNCDESC **ppFuncDesc);
+HRESULT __RPC_STUB ITypeInfo_GetFuncDesc_Stub(
+    ITypeInfo* This,
+    UINT index,
+    LPFUNCDESC *ppFuncDesc,
+    CLEANLOCALSTORAGE *pDummy);
+HRESULT CALLBACK ITypeInfo_GetVarDesc_Proxy(
+    ITypeInfo* This,
+    UINT index,
+    VARDESC **ppVarDesc);
+HRESULT __RPC_STUB ITypeInfo_GetVarDesc_Stub(
+    ITypeInfo* This,
+    UINT index,
+    LPVARDESC *ppVarDesc,
+    CLEANLOCALSTORAGE *pDummy);
+HRESULT CALLBACK ITypeInfo_GetNames_Proxy(
+    ITypeInfo* This,
+    MEMBERID memid,
+    BSTR *rgBstrNames,
+    UINT cMaxNames,
+    UINT *pcNames);
+HRESULT __RPC_STUB ITypeInfo_GetNames_Stub(
+    ITypeInfo* This,
+    MEMBERID memid,
+    BSTR *rgBstrNames,
+    UINT cMaxNames,
+    UINT *pcNames);
+HRESULT CALLBACK ITypeInfo_GetIDsOfNames_Proxy(
+    ITypeInfo* This,
+    LPOLESTR *rgszNames,
+    UINT cNames,
+    MEMBERID *pMemId);
+HRESULT __RPC_STUB ITypeInfo_GetIDsOfNames_Stub(
+    ITypeInfo* This);
+HRESULT CALLBACK ITypeInfo_Invoke_Proxy(
+    ITypeInfo* This,
+    PVOID pvInstance,
+    MEMBERID memid,
+    WORD wFlags,
+    DISPPARAMS *pDispParams,
+    VARIANT *pVarResult,
+    EXCEPINFO *pExcepInfo,
+    UINT *puArgErr);
+HRESULT __RPC_STUB ITypeInfo_Invoke_Stub(
+    ITypeInfo* This);
+HRESULT CALLBACK ITypeInfo_GetDocumentation_Proxy(
+    ITypeInfo* This,
+    MEMBERID memid,
+    BSTR *pBstrName,
+    BSTR *pBstrDocString,
+    DWORD *pdwHelpContext,
+    BSTR *pBstrHelpFile);
+HRESULT __RPC_STUB ITypeInfo_GetDocumentation_Stub(
+    ITypeInfo* This,
+    MEMBERID memid,
+    DWORD refPtrFlags,
+    BSTR *pBstrName,
+    BSTR *pBstrDocString,
+    DWORD *pdwHelpContext,
+    BSTR *pBstrHelpFile);
+HRESULT CALLBACK ITypeInfo_GetDllEntry_Proxy(
+    ITypeInfo* This,
+    MEMBERID memid,
+    INVOKEKIND invKind,
+    BSTR *pBstrDllName,
+    BSTR *pBstrName,
+    WORD *pwOrdinal);
+HRESULT __RPC_STUB ITypeInfo_GetDllEntry_Stub(
+    ITypeInfo* This,
+    MEMBERID memid,
+    INVOKEKIND invKind,
+    DWORD refPtrFlags,
+    BSTR *pBstrDllName,
+    BSTR *pBstrName,
+    WORD *pwOrdinal);
+HRESULT CALLBACK ITypeInfo_AddressOfMember_Proxy(
+    ITypeInfo* This,
+    MEMBERID memid,
+    INVOKEKIND invKind,
+    PVOID *ppv);
+HRESULT __RPC_STUB ITypeInfo_AddressOfMember_Stub(
+    ITypeInfo* This);
+HRESULT CALLBACK ITypeInfo_CreateInstance_Proxy(
+    ITypeInfo* This,
+    IUnknown *pUnkOuter,
+    REFIID riid,
+    PVOID *ppvObj);
+HRESULT __RPC_STUB ITypeInfo_CreateInstance_Stub(
+    ITypeInfo* This,
+    REFIID riid,
+    IUnknown **ppvObj);
+HRESULT CALLBACK ITypeInfo_GetContainingTypeLib_Proxy(
+    ITypeInfo* This,
+    ITypeLib **ppTLib,
+    UINT *pIndex);
+HRESULT __RPC_STUB ITypeInfo_GetContainingTypeLib_Stub(
+    ITypeInfo* This,
+    ITypeLib **ppTLib,
+    UINT *pIndex);
+void CALLBACK ITypeInfo_ReleaseTypeAttr_Proxy(
+    ITypeInfo* This,
+    TYPEATTR *pTypeAttr);
+HRESULT __RPC_STUB ITypeInfo_ReleaseTypeAttr_Stub(
+    ITypeInfo* This);
+void CALLBACK ITypeInfo_ReleaseFuncDesc_Proxy(
+    ITypeInfo* This,
+    FUNCDESC *pFuncDesc);
+HRESULT __RPC_STUB ITypeInfo_ReleaseFuncDesc_Stub(
+    ITypeInfo* This);
+void CALLBACK ITypeInfo_ReleaseVarDesc_Proxy(
+    ITypeInfo* This,
+    VARDESC *pVarDesc);
+HRESULT __RPC_STUB ITypeInfo_ReleaseVarDesc_Stub(
+    ITypeInfo* This);
+
+#endif  /* __ITypeInfo_INTERFACE_DEFINED__ */
+
+#ifndef __ITypeInfo2_FWD_DEFINED__
+#define __ITypeInfo2_FWD_DEFINED__
+typedef interface ITypeInfo2 ITypeInfo2;
+#endif
+
+typedef ITypeInfo2 *LPTYPEINFO2;
+/*****************************************************************************
+ * ITypeInfo2 interface
+ */
+#ifndef __ITypeInfo2_INTERFACE_DEFINED__
+#define __ITypeInfo2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ITypeInfo2, 0x00020412, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ITypeInfo2 : public ITypeInfo
+{
+    virtual HRESULT STDMETHODCALLTYPE GetTypeKind(
+        TYPEKIND *pTypeKind) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTypeFlags(
+        ULONG *pTypeFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFuncIndexOfMemId(
+        MEMBERID memid,
+        INVOKEKIND invKind,
+        UINT *pFuncIndex) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetVarIndexOfMemId(
+        MEMBERID memid,
+        UINT *pVarIndex) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCustData(
+        REFGUID guid,
+        VARIANT *pVarVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFuncCustData(
+        UINT index,
+        REFGUID guid,
+        VARIANT *pVarVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetParamCustData(
+        UINT indexFunc,
+        UINT indexParam,
+        REFGUID guid,
+        VARIANT *pVarVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetVarCustData(
+        UINT index,
+        REFGUID guid,
+        VARIANT *pVarVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetImplTypeCustData(
+        UINT index,
+        REFGUID guid,
+        VARIANT *pVarVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDocumentation2(
+        MEMBERID memid,
+        LCID lcid,
+        BSTR *pbstrHelpString,
+        DWORD *pdwHelpStringContext,
+        BSTR *pbstrHelpStringDll) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetAllCustData(
+        CUSTDATA *pCustData) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetAllFuncCustData(
+        UINT index,
+        CUSTDATA *pCustData) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetAllParamCustData(
+        UINT indexFunc,
+        UINT indexParam,
+        CUSTDATA *pCustData) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetAllVarCustData(
+        UINT index,
+        CUSTDATA *pCustData) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetAllImplTypeCustData(
+        UINT index,
+        CUSTDATA *pCustData) = 0;
+
+};
+#else
+typedef struct ITypeInfo2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITypeInfo2* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITypeInfo2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITypeInfo2* This);
+
+    /*** ITypeInfo methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeAttr)(
+        ITypeInfo2* This,
+        TYPEATTR **ppTypeAttr);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeComp)(
+        ITypeInfo2* This,
+        ITypeComp **ppTComp);
+
+    HRESULT (STDMETHODCALLTYPE *GetFuncDesc)(
+        ITypeInfo2* This,
+        UINT index,
+        FUNCDESC **ppFuncDesc);
+
+    HRESULT (STDMETHODCALLTYPE *GetVarDesc)(
+        ITypeInfo2* This,
+        UINT index,
+        VARDESC **ppVarDesc);
+
+    HRESULT (STDMETHODCALLTYPE *GetNames)(
+        ITypeInfo2* This,
+        MEMBERID memid,
+        BSTR *rgBstrNames,
+        UINT cMaxNames,
+        UINT *pcNames);
+
+    HRESULT (STDMETHODCALLTYPE *GetRefTypeOfImplType)(
+        ITypeInfo2* This,
+        UINT index,
+        HREFTYPE *pRefType);
+
+    HRESULT (STDMETHODCALLTYPE *GetImplTypeFlags)(
+        ITypeInfo2* This,
+        UINT index,
+        INT *pImplTypeFlags);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        ITypeInfo2* This,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        MEMBERID *pMemId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        ITypeInfo2* This,
+        PVOID pvInstance,
+        MEMBERID memid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    HRESULT (STDMETHODCALLTYPE *GetDocumentation)(
+        ITypeInfo2* This,
+        MEMBERID memid,
+        BSTR *pBstrName,
+        BSTR *pBstrDocString,
+        DWORD *pdwHelpContext,
+        BSTR *pBstrHelpFile);
+
+    HRESULT (STDMETHODCALLTYPE *GetDllEntry)(
+        ITypeInfo2* This,
+        MEMBERID memid,
+        INVOKEKIND invKind,
+        BSTR *pBstrDllName,
+        BSTR *pBstrName,
+        WORD *pwOrdinal);
+
+    HRESULT (STDMETHODCALLTYPE *GetRefTypeInfo)(
+        ITypeInfo2* This,
+        HREFTYPE hRefType,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *AddressOfMember)(
+        ITypeInfo2* This,
+        MEMBERID memid,
+        INVOKEKIND invKind,
+        PVOID *ppv);
+
+    HRESULT (STDMETHODCALLTYPE *CreateInstance)(
+        ITypeInfo2* This,
+        IUnknown *pUnkOuter,
+        REFIID riid,
+        PVOID *ppvObj);
+
+    HRESULT (STDMETHODCALLTYPE *GetMops)(
+        ITypeInfo2* This,
+        MEMBERID memid,
+        BSTR *pBstrMops);
+
+    HRESULT (STDMETHODCALLTYPE *GetContainingTypeLib)(
+        ITypeInfo2* This,
+        ITypeLib **ppTLib,
+        UINT *pIndex);
+
+    void (STDMETHODCALLTYPE *ReleaseTypeAttr)(
+        ITypeInfo2* This,
+        TYPEATTR *pTypeAttr);
+
+    void (STDMETHODCALLTYPE *ReleaseFuncDesc)(
+        ITypeInfo2* This,
+        FUNCDESC *pFuncDesc);
+
+    void (STDMETHODCALLTYPE *ReleaseVarDesc)(
+        ITypeInfo2* This,
+        VARDESC *pVarDesc);
+
+    /*** ITypeInfo2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeKind)(
+        ITypeInfo2* This,
+        TYPEKIND *pTypeKind);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeFlags)(
+        ITypeInfo2* This,
+        ULONG *pTypeFlags);
+
+    HRESULT (STDMETHODCALLTYPE *GetFuncIndexOfMemId)(
+        ITypeInfo2* This,
+        MEMBERID memid,
+        INVOKEKIND invKind,
+        UINT *pFuncIndex);
+
+    HRESULT (STDMETHODCALLTYPE *GetVarIndexOfMemId)(
+        ITypeInfo2* This,
+        MEMBERID memid,
+        UINT *pVarIndex);
+
+    HRESULT (STDMETHODCALLTYPE *GetCustData)(
+        ITypeInfo2* This,
+        REFGUID guid,
+        VARIANT *pVarVal);
+
+    HRESULT (STDMETHODCALLTYPE *GetFuncCustData)(
+        ITypeInfo2* This,
+        UINT index,
+        REFGUID guid,
+        VARIANT *pVarVal);
+
+    HRESULT (STDMETHODCALLTYPE *GetParamCustData)(
+        ITypeInfo2* This,
+        UINT indexFunc,
+        UINT indexParam,
+        REFGUID guid,
+        VARIANT *pVarVal);
+
+    HRESULT (STDMETHODCALLTYPE *GetVarCustData)(
+        ITypeInfo2* This,
+        UINT index,
+        REFGUID guid,
+        VARIANT *pVarVal);
+
+    HRESULT (STDMETHODCALLTYPE *GetImplTypeCustData)(
+        ITypeInfo2* This,
+        UINT index,
+        REFGUID guid,
+        VARIANT *pVarVal);
+
+    HRESULT (STDMETHODCALLTYPE *GetDocumentation2)(
+        ITypeInfo2* This,
+        MEMBERID memid,
+        LCID lcid,
+        BSTR *pbstrHelpString,
+        DWORD *pdwHelpStringContext,
+        BSTR *pbstrHelpStringDll);
+
+    HRESULT (STDMETHODCALLTYPE *GetAllCustData)(
+        ITypeInfo2* This,
+        CUSTDATA *pCustData);
+
+    HRESULT (STDMETHODCALLTYPE *GetAllFuncCustData)(
+        ITypeInfo2* This,
+        UINT index,
+        CUSTDATA *pCustData);
+
+    HRESULT (STDMETHODCALLTYPE *GetAllParamCustData)(
+        ITypeInfo2* This,
+        UINT indexFunc,
+        UINT indexParam,
+        CUSTDATA *pCustData);
+
+    HRESULT (STDMETHODCALLTYPE *GetAllVarCustData)(
+        ITypeInfo2* This,
+        UINT index,
+        CUSTDATA *pCustData);
+
+    HRESULT (STDMETHODCALLTYPE *GetAllImplTypeCustData)(
+        ITypeInfo2* This,
+        UINT index,
+        CUSTDATA *pCustData);
+
+    END_INTERFACE
+} ITypeInfo2Vtbl;
+interface ITypeInfo2 {
+    CONST_VTBL ITypeInfo2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ITypeInfo2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITypeInfo2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITypeInfo2_Release(This) (This)->lpVtbl->Release(This)
+/*** ITypeInfo methods ***/
+#define ITypeInfo2_GetTypeAttr(This,ppTypeAttr) (This)->lpVtbl->GetTypeAttr(This,ppTypeAttr)
+#define ITypeInfo2_GetTypeComp(This,ppTComp) (This)->lpVtbl->GetTypeComp(This,ppTComp)
+#define ITypeInfo2_GetFuncDesc(This,index,ppFuncDesc) (This)->lpVtbl->GetFuncDesc(This,index,ppFuncDesc)
+#define ITypeInfo2_GetVarDesc(This,index,ppVarDesc) (This)->lpVtbl->GetVarDesc(This,index,ppVarDesc)
+#define ITypeInfo2_GetNames(This,memid,rgBstrNames,cMaxNames,pcNames) (This)->lpVtbl->GetNames(This,memid,rgBstrNames,cMaxNames,pcNames)
+#define ITypeInfo2_GetRefTypeOfImplType(This,index,pRefType) (This)->lpVtbl->GetRefTypeOfImplType(This,index,pRefType)
+#define ITypeInfo2_GetImplTypeFlags(This,index,pImplTypeFlags) (This)->lpVtbl->GetImplTypeFlags(This,index,pImplTypeFlags)
+#define ITypeInfo2_GetIDsOfNames(This,rgszNames,cNames,pMemId) (This)->lpVtbl->GetIDsOfNames(This,rgszNames,cNames,pMemId)
+#define ITypeInfo2_Invoke(This,pvInstance,memid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,pvInstance,memid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+#define ITypeInfo2_GetDocumentation(This,memid,pBstrName,pBstrDocString,pdwHelpContext,pBstrHelpFile) (This)->lpVtbl->GetDocumentation(This,memid,pBstrName,pBstrDocString,pdwHelpContext,pBstrHelpFile)
+#define ITypeInfo2_GetDllEntry(This,memid,invKind,pBstrDllName,pBstrName,pwOrdinal) (This)->lpVtbl->GetDllEntry(This,memid,invKind,pBstrDllName,pBstrName,pwOrdinal)
+#define ITypeInfo2_GetRefTypeInfo(This,hRefType,ppTInfo) (This)->lpVtbl->GetRefTypeInfo(This,hRefType,ppTInfo)
+#define ITypeInfo2_AddressOfMember(This,memid,invKind,ppv) (This)->lpVtbl->AddressOfMember(This,memid,invKind,ppv)
+#define ITypeInfo2_CreateInstance(This,pUnkOuter,riid,ppvObj) (This)->lpVtbl->CreateInstance(This,pUnkOuter,riid,ppvObj)
+#define ITypeInfo2_GetMops(This,memid,pBstrMops) (This)->lpVtbl->GetMops(This,memid,pBstrMops)
+#define ITypeInfo2_GetContainingTypeLib(This,ppTLib,pIndex) (This)->lpVtbl->GetContainingTypeLib(This,ppTLib,pIndex)
+#define ITypeInfo2_ReleaseTypeAttr(This,pTypeAttr) (This)->lpVtbl->ReleaseTypeAttr(This,pTypeAttr)
+#define ITypeInfo2_ReleaseFuncDesc(This,pFuncDesc) (This)->lpVtbl->ReleaseFuncDesc(This,pFuncDesc)
+#define ITypeInfo2_ReleaseVarDesc(This,pVarDesc) (This)->lpVtbl->ReleaseVarDesc(This,pVarDesc)
+/*** ITypeInfo2 methods ***/
+#define ITypeInfo2_GetTypeKind(This,pTypeKind) (This)->lpVtbl->GetTypeKind(This,pTypeKind)
+#define ITypeInfo2_GetTypeFlags(This,pTypeFlags) (This)->lpVtbl->GetTypeFlags(This,pTypeFlags)
+#define ITypeInfo2_GetFuncIndexOfMemId(This,memid,invKind,pFuncIndex) (This)->lpVtbl->GetFuncIndexOfMemId(This,memid,invKind,pFuncIndex)
+#define ITypeInfo2_GetVarIndexOfMemId(This,memid,pVarIndex) (This)->lpVtbl->GetVarIndexOfMemId(This,memid,pVarIndex)
+#define ITypeInfo2_GetCustData(This,guid,pVarVal) (This)->lpVtbl->GetCustData(This,guid,pVarVal)
+#define ITypeInfo2_GetFuncCustData(This,index,guid,pVarVal) (This)->lpVtbl->GetFuncCustData(This,index,guid,pVarVal)
+#define ITypeInfo2_GetParamCustData(This,indexFunc,indexParam,guid,pVarVal) (This)->lpVtbl->GetParamCustData(This,indexFunc,indexParam,guid,pVarVal)
+#define ITypeInfo2_GetVarCustData(This,index,guid,pVarVal) (This)->lpVtbl->GetVarCustData(This,index,guid,pVarVal)
+#define ITypeInfo2_GetImplTypeCustData(This,index,guid,pVarVal) (This)->lpVtbl->GetImplTypeCustData(This,index,guid,pVarVal)
+#define ITypeInfo2_GetDocumentation2(This,memid,lcid,pbstrHelpString,pdwHelpStringContext,pbstrHelpStringDll) (This)->lpVtbl->GetDocumentation2(This,memid,lcid,pbstrHelpString,pdwHelpStringContext,pbstrHelpStringDll)
+#define ITypeInfo2_GetAllCustData(This,pCustData) (This)->lpVtbl->GetAllCustData(This,pCustData)
+#define ITypeInfo2_GetAllFuncCustData(This,index,pCustData) (This)->lpVtbl->GetAllFuncCustData(This,index,pCustData)
+#define ITypeInfo2_GetAllParamCustData(This,indexFunc,indexParam,pCustData) (This)->lpVtbl->GetAllParamCustData(This,indexFunc,indexParam,pCustData)
+#define ITypeInfo2_GetAllVarCustData(This,index,pCustData) (This)->lpVtbl->GetAllVarCustData(This,index,pCustData)
+#define ITypeInfo2_GetAllImplTypeCustData(This,index,pCustData) (This)->lpVtbl->GetAllImplTypeCustData(This,index,pCustData)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetTypeKind_Proxy(
+    ITypeInfo2* This,
+    TYPEKIND *pTypeKind);
+void __RPC_STUB ITypeInfo2_GetTypeKind_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetTypeFlags_Proxy(
+    ITypeInfo2* This,
+    ULONG *pTypeFlags);
+void __RPC_STUB ITypeInfo2_GetTypeFlags_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetFuncIndexOfMemId_Proxy(
+    ITypeInfo2* This,
+    MEMBERID memid,
+    INVOKEKIND invKind,
+    UINT *pFuncIndex);
+void __RPC_STUB ITypeInfo2_GetFuncIndexOfMemId_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetVarIndexOfMemId_Proxy(
+    ITypeInfo2* This,
+    MEMBERID memid,
+    UINT *pVarIndex);
+void __RPC_STUB ITypeInfo2_GetVarIndexOfMemId_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetCustData_Proxy(
+    ITypeInfo2* This,
+    REFGUID guid,
+    VARIANT *pVarVal);
+void __RPC_STUB ITypeInfo2_GetCustData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetFuncCustData_Proxy(
+    ITypeInfo2* This,
+    UINT index,
+    REFGUID guid,
+    VARIANT *pVarVal);
+void __RPC_STUB ITypeInfo2_GetFuncCustData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetParamCustData_Proxy(
+    ITypeInfo2* This,
+    UINT indexFunc,
+    UINT indexParam,
+    REFGUID guid,
+    VARIANT *pVarVal);
+void __RPC_STUB ITypeInfo2_GetParamCustData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetVarCustData_Proxy(
+    ITypeInfo2* This,
+    UINT index,
+    REFGUID guid,
+    VARIANT *pVarVal);
+void __RPC_STUB ITypeInfo2_GetVarCustData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetImplTypeCustData_Proxy(
+    ITypeInfo2* This,
+    UINT index,
+    REFGUID guid,
+    VARIANT *pVarVal);
+void __RPC_STUB ITypeInfo2_GetImplTypeCustData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo2_RemoteGetDocumentation2_Proxy(
+    ITypeInfo2* This,
+    MEMBERID memid,
+    LCID lcid,
+    DWORD refPtrFlags,
+    BSTR *pbstrHelpString,
+    DWORD *pdwHelpStringContext,
+    BSTR *pbstrHelpStringDll);
+void __RPC_STUB ITypeInfo2_RemoteGetDocumentation2_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetAllCustData_Proxy(
+    ITypeInfo2* This,
+    CUSTDATA *pCustData);
+void __RPC_STUB ITypeInfo2_GetAllCustData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetAllFuncCustData_Proxy(
+    ITypeInfo2* This,
+    UINT index,
+    CUSTDATA *pCustData);
+void __RPC_STUB ITypeInfo2_GetAllFuncCustData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetAllParamCustData_Proxy(
+    ITypeInfo2* This,
+    UINT indexFunc,
+    UINT indexParam,
+    CUSTDATA *pCustData);
+void __RPC_STUB ITypeInfo2_GetAllParamCustData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetAllVarCustData_Proxy(
+    ITypeInfo2* This,
+    UINT index,
+    CUSTDATA *pCustData);
+void __RPC_STUB ITypeInfo2_GetAllVarCustData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetAllImplTypeCustData_Proxy(
+    ITypeInfo2* This,
+    UINT index,
+    CUSTDATA *pCustData);
+void __RPC_STUB ITypeInfo2_GetAllImplTypeCustData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeInfo2_GetDocumentation2_Proxy(
+    ITypeInfo2* This,
+    MEMBERID memid,
+    LCID lcid,
+    BSTR *pbstrHelpString,
+    DWORD *pdwHelpStringContext,
+    BSTR *pbstrHelpStringDll);
+HRESULT __RPC_STUB ITypeInfo2_GetDocumentation2_Stub(
+    ITypeInfo2* This,
+    MEMBERID memid,
+    LCID lcid,
+    DWORD refPtrFlags,
+    BSTR *pbstrHelpString,
+    DWORD *pdwHelpStringContext,
+    BSTR *pbstrHelpStringDll);
+
+#endif  /* __ITypeInfo2_INTERFACE_DEFINED__ */
+
+typedef ITypeLib *LPTYPELIB;
+typedef enum tagSYSKIND {
+    SYS_WIN16 = 0,
+    SYS_WIN32 = 1,
+    SYS_MAC = 2
+} SYSKIND;
+typedef enum tagLIBFLAGS {
+    LIBFLAG_FRESTRICTED = 0x1,
+    LIBFLAG_FCONTROL = 0x2,
+    LIBFLAG_FHIDDEN = 0x4,
+    LIBFLAG_FHASDISKIMAGE = 0x8
+} LIBFLAGS;
+typedef struct tagTLIBATTR {
+    GUID guid;
+    LCID lcid;
+    SYSKIND syskind;
+    WORD wMajorVerNum;
+    WORD wMinorVerNum;
+    WORD wLibFlags;
+} TLIBATTR;
+typedef struct tagTLIBATTR *LPTLIBATTR;
+/*****************************************************************************
+ * ITypeLib interface
+ */
+#ifndef __ITypeLib_INTERFACE_DEFINED__
+#define __ITypeLib_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ITypeLib, 0x00020402, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ITypeLib : public IUnknown
+{
+    virtual UINT STDMETHODCALLTYPE GetTypeInfoCount(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(
+        UINT index,
+        ITypeInfo **ppTInfo) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTypeInfoType(
+        UINT index,
+        TYPEKIND *pTKind) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTypeInfoOfGuid(
+        REFGUID guid,
+        ITypeInfo **ppTinfo) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetLibAttr(
+        TLIBATTR **ppTLibAttr) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTypeComp(
+        ITypeComp **ppTComp) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDocumentation(
+        INT index,
+        BSTR *pBstrName,
+        BSTR *pBstrDocString,
+        DWORD *pdwHelpContext,
+        BSTR *pBstrHelpFile) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsName(
+        LPOLESTR szNameBuf,
+        ULONG lHashVal,
+        BOOL *pfName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE FindName(
+        LPOLESTR szNameBuf,
+        ULONG lHashVal,
+        ITypeInfo **ppTInfo,
+        MEMBERID *rgMemId,
+        USHORT *pcFound) = 0;
+
+    virtual void STDMETHODCALLTYPE ReleaseTLibAttr(
+        TLIBATTR *pTLibAttr) = 0;
+
+};
+#else
+typedef struct ITypeLibVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITypeLib* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITypeLib* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITypeLib* This);
+
+    /*** ITypeLib methods ***/
+    UINT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        ITypeLib* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        ITypeLib* This,
+        UINT index,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoType)(
+        ITypeLib* This,
+        UINT index,
+        TYPEKIND *pTKind);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoOfGuid)(
+        ITypeLib* This,
+        REFGUID guid,
+        ITypeInfo **ppTinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetLibAttr)(
+        ITypeLib* This,
+        TLIBATTR **ppTLibAttr);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeComp)(
+        ITypeLib* This,
+        ITypeComp **ppTComp);
+
+    HRESULT (STDMETHODCALLTYPE *GetDocumentation)(
+        ITypeLib* This,
+        INT index,
+        BSTR *pBstrName,
+        BSTR *pBstrDocString,
+        DWORD *pdwHelpContext,
+        BSTR *pBstrHelpFile);
+
+    HRESULT (STDMETHODCALLTYPE *IsName)(
+        ITypeLib* This,
+        LPOLESTR szNameBuf,
+        ULONG lHashVal,
+        BOOL *pfName);
+
+    HRESULT (STDMETHODCALLTYPE *FindName)(
+        ITypeLib* This,
+        LPOLESTR szNameBuf,
+        ULONG lHashVal,
+        ITypeInfo **ppTInfo,
+        MEMBERID *rgMemId,
+        USHORT *pcFound);
+
+    void (STDMETHODCALLTYPE *ReleaseTLibAttr)(
+        ITypeLib* This,
+        TLIBATTR *pTLibAttr);
+
+    END_INTERFACE
+} ITypeLibVtbl;
+interface ITypeLib {
+    CONST_VTBL ITypeLibVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ITypeLib_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITypeLib_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITypeLib_Release(This) (This)->lpVtbl->Release(This)
+/*** ITypeLib methods ***/
+#define ITypeLib_GetTypeInfoCount(This) (This)->lpVtbl->GetTypeInfoCount(This)
+#define ITypeLib_GetTypeInfo(This,index,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,index,ppTInfo)
+#define ITypeLib_GetTypeInfoType(This,index,pTKind) (This)->lpVtbl->GetTypeInfoType(This,index,pTKind)
+#define ITypeLib_GetTypeInfoOfGuid(This,guid,ppTinfo) (This)->lpVtbl->GetTypeInfoOfGuid(This,guid,ppTinfo)
+#define ITypeLib_GetLibAttr(This,ppTLibAttr) (This)->lpVtbl->GetLibAttr(This,ppTLibAttr)
+#define ITypeLib_GetTypeComp(This,ppTComp) (This)->lpVtbl->GetTypeComp(This,ppTComp)
+#define ITypeLib_GetDocumentation(This,index,pBstrName,pBstrDocString,pdwHelpContext,pBstrHelpFile) (This)->lpVtbl->GetDocumentation(This,index,pBstrName,pBstrDocString,pdwHelpContext,pBstrHelpFile)
+#define ITypeLib_IsName(This,szNameBuf,lHashVal,pfName) (This)->lpVtbl->IsName(This,szNameBuf,lHashVal,pfName)
+#define ITypeLib_FindName(This,szNameBuf,lHashVal,ppTInfo,rgMemId,pcFound) (This)->lpVtbl->FindName(This,szNameBuf,lHashVal,ppTInfo,rgMemId,pcFound)
+#define ITypeLib_ReleaseTLibAttr(This,pTLibAttr) (This)->lpVtbl->ReleaseTLibAttr(This,pTLibAttr)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ITypeLib_RemoteGetTypeInfoCount_Proxy(
+    ITypeLib* This,
+    UINT *pcTInfo);
+void __RPC_STUB ITypeLib_RemoteGetTypeInfoCount_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeLib_GetTypeInfo_Proxy(
+    ITypeLib* This,
+    UINT index,
+    ITypeInfo **ppTInfo);
+void __RPC_STUB ITypeLib_GetTypeInfo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeLib_GetTypeInfoType_Proxy(
+    ITypeLib* This,
+    UINT index,
+    TYPEKIND *pTKind);
+void __RPC_STUB ITypeLib_GetTypeInfoType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeLib_GetTypeInfoOfGuid_Proxy(
+    ITypeLib* This,
+    REFGUID guid,
+    ITypeInfo **ppTinfo);
+void __RPC_STUB ITypeLib_GetTypeInfoOfGuid_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeLib_RemoteGetLibAttr_Proxy(
+    ITypeLib* This,
+    LPTLIBATTR *ppTLibAttr,
+    CLEANLOCALSTORAGE *pDummy);
+void __RPC_STUB ITypeLib_RemoteGetLibAttr_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeLib_GetTypeComp_Proxy(
+    ITypeLib* This,
+    ITypeComp **ppTComp);
+void __RPC_STUB ITypeLib_GetTypeComp_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeLib_RemoteGetDocumentation_Proxy(
+    ITypeLib* This,
+    INT index,
+    DWORD refPtrFlags,
+    BSTR *pBstrName,
+    BSTR *pBstrDocString,
+    DWORD *pdwHelpContext,
+    BSTR *pBstrHelpFile);
+void __RPC_STUB ITypeLib_RemoteGetDocumentation_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeLib_RemoteIsName_Proxy(
+    ITypeLib* This,
+    LPOLESTR szNameBuf,
+    ULONG lHashVal,
+    BOOL *pfName,
+    BSTR *pBstrLibName);
+void __RPC_STUB ITypeLib_RemoteIsName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeLib_RemoteFindName_Proxy(
+    ITypeLib* This,
+    LPOLESTR szNameBuf,
+    ULONG lHashVal,
+    ITypeInfo **ppTInfo,
+    MEMBERID *rgMemId,
+    USHORT *pcFound,
+    BSTR *pBstrLibName);
+void __RPC_STUB ITypeLib_RemoteFindName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeLib_LocalReleaseTLibAttr_Proxy(
+    ITypeLib* This);
+void __RPC_STUB ITypeLib_LocalReleaseTLibAttr_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+UINT CALLBACK ITypeLib_GetTypeInfoCount_Proxy(
+    ITypeLib* This);
+HRESULT __RPC_STUB ITypeLib_GetTypeInfoCount_Stub(
+    ITypeLib* This,
+    UINT *pcTInfo);
+HRESULT CALLBACK ITypeLib_GetLibAttr_Proxy(
+    ITypeLib* This,
+    TLIBATTR **ppTLibAttr);
+HRESULT __RPC_STUB ITypeLib_GetLibAttr_Stub(
+    ITypeLib* This,
+    LPTLIBATTR *ppTLibAttr,
+    CLEANLOCALSTORAGE *pDummy);
+HRESULT CALLBACK ITypeLib_GetDocumentation_Proxy(
+    ITypeLib* This,
+    INT index,
+    BSTR *pBstrName,
+    BSTR *pBstrDocString,
+    DWORD *pdwHelpContext,
+    BSTR *pBstrHelpFile);
+HRESULT __RPC_STUB ITypeLib_GetDocumentation_Stub(
+    ITypeLib* This,
+    INT index,
+    DWORD refPtrFlags,
+    BSTR *pBstrName,
+    BSTR *pBstrDocString,
+    DWORD *pdwHelpContext,
+    BSTR *pBstrHelpFile);
+HRESULT CALLBACK ITypeLib_IsName_Proxy(
+    ITypeLib* This,
+    LPOLESTR szNameBuf,
+    ULONG lHashVal,
+    BOOL *pfName);
+HRESULT __RPC_STUB ITypeLib_IsName_Stub(
+    ITypeLib* This,
+    LPOLESTR szNameBuf,
+    ULONG lHashVal,
+    BOOL *pfName,
+    BSTR *pBstrLibName);
+HRESULT CALLBACK ITypeLib_FindName_Proxy(
+    ITypeLib* This,
+    LPOLESTR szNameBuf,
+    ULONG lHashVal,
+    ITypeInfo **ppTInfo,
+    MEMBERID *rgMemId,
+    USHORT *pcFound);
+HRESULT __RPC_STUB ITypeLib_FindName_Stub(
+    ITypeLib* This,
+    LPOLESTR szNameBuf,
+    ULONG lHashVal,
+    ITypeInfo **ppTInfo,
+    MEMBERID *rgMemId,
+    USHORT *pcFound,
+    BSTR *pBstrLibName);
+void CALLBACK ITypeLib_ReleaseTLibAttr_Proxy(
+    ITypeLib* This,
+    TLIBATTR *pTLibAttr);
+HRESULT __RPC_STUB ITypeLib_ReleaseTLibAttr_Stub(
+    ITypeLib* This);
+
+#endif  /* __ITypeLib_INTERFACE_DEFINED__ */
+
+#ifndef __ITypeLib2_FWD_DEFINED__
+#define __ITypeLib2_FWD_DEFINED__
+typedef interface ITypeLib2 ITypeLib2;
+#endif
+
+typedef ITypeLib2 *LPTYPELIB2;
+/*****************************************************************************
+ * ITypeLib2 interface
+ */
+#ifndef __ITypeLib2_INTERFACE_DEFINED__
+#define __ITypeLib2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ITypeLib2, 0x00020411, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ITypeLib2 : public ITypeLib
+{
+    virtual HRESULT STDMETHODCALLTYPE GetCustData(
+        REFGUID guid,
+        VARIANT *pVarVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetLibStatistics(
+        ULONG *pcUniqueNames,
+        ULONG *pcchUniqueNames) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDocumentation2(
+        INT index,
+        LCID lcid,
+        BSTR *pbstrHelpString,
+        DWORD *pdwHelpStringContext,
+        BSTR *pbstrHelpStringDll) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetAllCustData(
+        CUSTDATA *pCustData) = 0;
+
+};
+#else
+typedef struct ITypeLib2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITypeLib2* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITypeLib2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITypeLib2* This);
+
+    /*** ITypeLib methods ***/
+    UINT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        ITypeLib2* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        ITypeLib2* This,
+        UINT index,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoType)(
+        ITypeLib2* This,
+        UINT index,
+        TYPEKIND *pTKind);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoOfGuid)(
+        ITypeLib2* This,
+        REFGUID guid,
+        ITypeInfo **ppTinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetLibAttr)(
+        ITypeLib2* This,
+        TLIBATTR **ppTLibAttr);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeComp)(
+        ITypeLib2* This,
+        ITypeComp **ppTComp);
+
+    HRESULT (STDMETHODCALLTYPE *GetDocumentation)(
+        ITypeLib2* This,
+        INT index,
+        BSTR *pBstrName,
+        BSTR *pBstrDocString,
+        DWORD *pdwHelpContext,
+        BSTR *pBstrHelpFile);
+
+    HRESULT (STDMETHODCALLTYPE *IsName)(
+        ITypeLib2* This,
+        LPOLESTR szNameBuf,
+        ULONG lHashVal,
+        BOOL *pfName);
+
+    HRESULT (STDMETHODCALLTYPE *FindName)(
+        ITypeLib2* This,
+        LPOLESTR szNameBuf,
+        ULONG lHashVal,
+        ITypeInfo **ppTInfo,
+        MEMBERID *rgMemId,
+        USHORT *pcFound);
+
+    void (STDMETHODCALLTYPE *ReleaseTLibAttr)(
+        ITypeLib2* This,
+        TLIBATTR *pTLibAttr);
+
+    /*** ITypeLib2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetCustData)(
+        ITypeLib2* This,
+        REFGUID guid,
+        VARIANT *pVarVal);
+
+    HRESULT (STDMETHODCALLTYPE *GetLibStatistics)(
+        ITypeLib2* This,
+        ULONG *pcUniqueNames,
+        ULONG *pcchUniqueNames);
+
+    HRESULT (STDMETHODCALLTYPE *GetDocumentation2)(
+        ITypeLib2* This,
+        INT index,
+        LCID lcid,
+        BSTR *pbstrHelpString,
+        DWORD *pdwHelpStringContext,
+        BSTR *pbstrHelpStringDll);
+
+    HRESULT (STDMETHODCALLTYPE *GetAllCustData)(
+        ITypeLib2* This,
+        CUSTDATA *pCustData);
+
+    END_INTERFACE
+} ITypeLib2Vtbl;
+interface ITypeLib2 {
+    CONST_VTBL ITypeLib2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ITypeLib2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITypeLib2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITypeLib2_Release(This) (This)->lpVtbl->Release(This)
+/*** ITypeLib methods ***/
+#define ITypeLib2_GetTypeInfoCount(This) (This)->lpVtbl->GetTypeInfoCount(This)
+#define ITypeLib2_GetTypeInfo(This,index,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,index,ppTInfo)
+#define ITypeLib2_GetTypeInfoType(This,index,pTKind) (This)->lpVtbl->GetTypeInfoType(This,index,pTKind)
+#define ITypeLib2_GetTypeInfoOfGuid(This,guid,ppTinfo) (This)->lpVtbl->GetTypeInfoOfGuid(This,guid,ppTinfo)
+#define ITypeLib2_GetLibAttr(This,ppTLibAttr) (This)->lpVtbl->GetLibAttr(This,ppTLibAttr)
+#define ITypeLib2_GetTypeComp(This,ppTComp) (This)->lpVtbl->GetTypeComp(This,ppTComp)
+#define ITypeLib2_GetDocumentation(This,index,pBstrName,pBstrDocString,pdwHelpContext,pBstrHelpFile) (This)->lpVtbl->GetDocumentation(This,index,pBstrName,pBstrDocString,pdwHelpContext,pBstrHelpFile)
+#define ITypeLib2_IsName(This,szNameBuf,lHashVal,pfName) (This)->lpVtbl->IsName(This,szNameBuf,lHashVal,pfName)
+#define ITypeLib2_FindName(This,szNameBuf,lHashVal,ppTInfo,rgMemId,pcFound) (This)->lpVtbl->FindName(This,szNameBuf,lHashVal,ppTInfo,rgMemId,pcFound)
+#define ITypeLib2_ReleaseTLibAttr(This,pTLibAttr) (This)->lpVtbl->ReleaseTLibAttr(This,pTLibAttr)
+/*** ITypeLib2 methods ***/
+#define ITypeLib2_GetCustData(This,guid,pVarVal) (This)->lpVtbl->GetCustData(This,guid,pVarVal)
+#define ITypeLib2_GetLibStatistics(This,pcUniqueNames,pcchUniqueNames) (This)->lpVtbl->GetLibStatistics(This,pcUniqueNames,pcchUniqueNames)
+#define ITypeLib2_GetDocumentation2(This,index,lcid,pbstrHelpString,pdwHelpStringContext,pbstrHelpStringDll) (This)->lpVtbl->GetDocumentation2(This,index,lcid,pbstrHelpString,pdwHelpStringContext,pbstrHelpStringDll)
+#define ITypeLib2_GetAllCustData(This,pCustData) (This)->lpVtbl->GetAllCustData(This,pCustData)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ITypeLib2_GetCustData_Proxy(
+    ITypeLib2* This,
+    REFGUID guid,
+    VARIANT *pVarVal);
+void __RPC_STUB ITypeLib2_GetCustData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeLib2_RemoteGetLibStatistics_Proxy(
+    ITypeLib2* This,
+    ULONG *pcUniqueNames,
+    ULONG *pcchUniqueNames);
+void __RPC_STUB ITypeLib2_RemoteGetLibStatistics_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeLib2_RemoteGetDocumentation2_Proxy(
+    ITypeLib2* This,
+    INT index,
+    LCID lcid,
+    DWORD refPtrFlags,
+    BSTR *pbstrHelpString,
+    DWORD *pdwHelpStringContext,
+    BSTR *pbstrHelpStringDll);
+void __RPC_STUB ITypeLib2_RemoteGetDocumentation2_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeLib2_GetAllCustData_Proxy(
+    ITypeLib2* This,
+    CUSTDATA *pCustData);
+void __RPC_STUB ITypeLib2_GetAllCustData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeLib2_GetLibStatistics_Proxy(
+    ITypeLib2* This,
+    ULONG *pcUniqueNames,
+    ULONG *pcchUniqueNames);
+HRESULT __RPC_STUB ITypeLib2_GetLibStatistics_Stub(
+    ITypeLib2* This,
+    ULONG *pcUniqueNames,
+    ULONG *pcchUniqueNames);
+HRESULT CALLBACK ITypeLib2_GetDocumentation2_Proxy(
+    ITypeLib2* This,
+    INT index,
+    LCID lcid,
+    BSTR *pbstrHelpString,
+    DWORD *pdwHelpStringContext,
+    BSTR *pbstrHelpStringDll);
+HRESULT __RPC_STUB ITypeLib2_GetDocumentation2_Stub(
+    ITypeLib2* This,
+    INT index,
+    LCID lcid,
+    DWORD refPtrFlags,
+    BSTR *pbstrHelpString,
+    DWORD *pdwHelpStringContext,
+    BSTR *pbstrHelpStringDll);
+
+#endif  /* __ITypeLib2_INTERFACE_DEFINED__ */
+
+#ifndef __ITypeChangeEvents_FWD_DEFINED__
+#define __ITypeChangeEvents_FWD_DEFINED__
+typedef interface ITypeChangeEvents ITypeChangeEvents;
+#endif
+
+typedef ITypeChangeEvents *LPTYPECHANGEEVENTS;
+typedef enum tagCHANGEKIND {
+    CHANGEKIND_ADDMEMBER = 0,
+    CHANGEKIND_DELETEMEMBER = 1,
+    CHANGEKIND_SETNAMES = 2,
+    CHANGEKIND_SETDOCUMENTATION = 3,
+    CHANGEKIND_GENERAL = 4,
+    CHANGEKIND_INVALIDATE = 5,
+    CHANGEKIND_CHANGEFAILED = 6,
+    CHANGEKIND_MAX = 7
+} CHANGEKIND;
+/*****************************************************************************
+ * ITypeChangeEvents interface
+ */
+#ifndef __ITypeChangeEvents_INTERFACE_DEFINED__
+#define __ITypeChangeEvents_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ITypeChangeEvents, 0x00020410, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ITypeChangeEvents : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE RequestTypeChange(
+        CHANGEKIND changeKind,
+        ITypeInfo *pTInfoBefore,
+        LPOLESTR pStrName,
+        INT *pfCancel) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AfterTypeChange(
+        CHANGEKIND changeKind,
+        ITypeInfo *pTInfoAfter,
+        LPOLESTR pStrName) = 0;
+
+};
+#else
+typedef struct ITypeChangeEventsVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITypeChangeEvents* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITypeChangeEvents* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITypeChangeEvents* This);
+
+    /*** ITypeChangeEvents methods ***/
+    HRESULT (STDMETHODCALLTYPE *RequestTypeChange)(
+        ITypeChangeEvents* This,
+        CHANGEKIND changeKind,
+        ITypeInfo *pTInfoBefore,
+        LPOLESTR pStrName,
+        INT *pfCancel);
+
+    HRESULT (STDMETHODCALLTYPE *AfterTypeChange)(
+        ITypeChangeEvents* This,
+        CHANGEKIND changeKind,
+        ITypeInfo *pTInfoAfter,
+        LPOLESTR pStrName);
+
+    END_INTERFACE
+} ITypeChangeEventsVtbl;
+interface ITypeChangeEvents {
+    CONST_VTBL ITypeChangeEventsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ITypeChangeEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITypeChangeEvents_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITypeChangeEvents_Release(This) (This)->lpVtbl->Release(This)
+/*** ITypeChangeEvents methods ***/
+#define ITypeChangeEvents_RequestTypeChange(This,changeKind,pTInfoBefore,pStrName,pfCancel) (This)->lpVtbl->RequestTypeChange(This,changeKind,pTInfoBefore,pStrName,pfCancel)
+#define ITypeChangeEvents_AfterTypeChange(This,changeKind,pTInfoAfter,pStrName) (This)->lpVtbl->AfterTypeChange(This,changeKind,pTInfoAfter,pStrName)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ITypeChangeEvents_RequestTypeChange_Proxy(
+    ITypeChangeEvents* This,
+    CHANGEKIND changeKind,
+    ITypeInfo *pTInfoBefore,
+    LPOLESTR pStrName,
+    INT *pfCancel);
+void __RPC_STUB ITypeChangeEvents_RequestTypeChange_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeChangeEvents_AfterTypeChange_Proxy(
+    ITypeChangeEvents* This,
+    CHANGEKIND changeKind,
+    ITypeInfo *pTInfoAfter,
+    LPOLESTR pStrName);
+void __RPC_STUB ITypeChangeEvents_AfterTypeChange_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ITypeChangeEvents_INTERFACE_DEFINED__ */
+
+#ifndef __IErrorInfo_FWD_DEFINED__
+#define __IErrorInfo_FWD_DEFINED__
+typedef interface IErrorInfo IErrorInfo;
+#endif
+
+typedef IErrorInfo *LPERRORINFO;
+/*****************************************************************************
+ * IErrorInfo interface
+ */
+#ifndef __IErrorInfo_INTERFACE_DEFINED__
+#define __IErrorInfo_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IErrorInfo, 0x1cf2b120, 0x547d, 0x101b, 0x8e,0x65, 0x08,0x00,0x2b,0x2b,0xd1,0x19);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IErrorInfo : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetGUID(
+        GUID *pGUID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSource(
+        BSTR *pBstrSource) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDescription(
+        BSTR *pBstrDescription) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetHelpFile(
+        BSTR *pBstrHelpFile) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetHelpContext(
+        DWORD *pdwHelpContext) = 0;
+
+};
+#else
+typedef struct IErrorInfoVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IErrorInfo* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IErrorInfo* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IErrorInfo* This);
+
+    /*** IErrorInfo methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetGUID)(
+        IErrorInfo* This,
+        GUID *pGUID);
+
+    HRESULT (STDMETHODCALLTYPE *GetSource)(
+        IErrorInfo* This,
+        BSTR *pBstrSource);
+
+    HRESULT (STDMETHODCALLTYPE *GetDescription)(
+        IErrorInfo* This,
+        BSTR *pBstrDescription);
+
+    HRESULT (STDMETHODCALLTYPE *GetHelpFile)(
+        IErrorInfo* This,
+        BSTR *pBstrHelpFile);
+
+    HRESULT (STDMETHODCALLTYPE *GetHelpContext)(
+        IErrorInfo* This,
+        DWORD *pdwHelpContext);
+
+    END_INTERFACE
+} IErrorInfoVtbl;
+interface IErrorInfo {
+    CONST_VTBL IErrorInfoVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IErrorInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IErrorInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IErrorInfo_Release(This) (This)->lpVtbl->Release(This)
+/*** IErrorInfo methods ***/
+#define IErrorInfo_GetGUID(This,pGUID) (This)->lpVtbl->GetGUID(This,pGUID)
+#define IErrorInfo_GetSource(This,pBstrSource) (This)->lpVtbl->GetSource(This,pBstrSource)
+#define IErrorInfo_GetDescription(This,pBstrDescription) (This)->lpVtbl->GetDescription(This,pBstrDescription)
+#define IErrorInfo_GetHelpFile(This,pBstrHelpFile) (This)->lpVtbl->GetHelpFile(This,pBstrHelpFile)
+#define IErrorInfo_GetHelpContext(This,pdwHelpContext) (This)->lpVtbl->GetHelpContext(This,pdwHelpContext)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IErrorInfo_GetGUID_Proxy(
+    IErrorInfo* This,
+    GUID *pGUID);
+void __RPC_STUB IErrorInfo_GetGUID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IErrorInfo_GetSource_Proxy(
+    IErrorInfo* This,
+    BSTR *pBstrSource);
+void __RPC_STUB IErrorInfo_GetSource_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IErrorInfo_GetDescription_Proxy(
+    IErrorInfo* This,
+    BSTR *pBstrDescription);
+void __RPC_STUB IErrorInfo_GetDescription_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IErrorInfo_GetHelpFile_Proxy(
+    IErrorInfo* This,
+    BSTR *pBstrHelpFile);
+void __RPC_STUB IErrorInfo_GetHelpFile_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IErrorInfo_GetHelpContext_Proxy(
+    IErrorInfo* This,
+    DWORD *pdwHelpContext);
+void __RPC_STUB IErrorInfo_GetHelpContext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IErrorInfo_INTERFACE_DEFINED__ */
+
+#ifndef __ICreateErrorInfo_FWD_DEFINED__
+#define __ICreateErrorInfo_FWD_DEFINED__
+typedef interface ICreateErrorInfo ICreateErrorInfo;
+#endif
+
+typedef ICreateErrorInfo *LPCREATEERRORINFO;
+/*****************************************************************************
+ * ICreateErrorInfo interface
+ */
+#ifndef __ICreateErrorInfo_INTERFACE_DEFINED__
+#define __ICreateErrorInfo_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ICreateErrorInfo, 0x22f03340, 0x547d, 0x101b, 0x8e,0x65, 0x08,0x00,0x2b,0x2b,0xd1,0x19);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ICreateErrorInfo : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SetGUID(
+        REFGUID rguid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetSource(
+        LPOLESTR szSource) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetDescription(
+        LPOLESTR szDescription) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetHelpFile(
+        LPOLESTR szHelpFile) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetHelpContext(
+        DWORD dwHelpContext) = 0;
+
+};
+#else
+typedef struct ICreateErrorInfoVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ICreateErrorInfo* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ICreateErrorInfo* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ICreateErrorInfo* This);
+
+    /*** ICreateErrorInfo methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetGUID)(
+        ICreateErrorInfo* This,
+        REFGUID rguid);
+
+    HRESULT (STDMETHODCALLTYPE *SetSource)(
+        ICreateErrorInfo* This,
+        LPOLESTR szSource);
+
+    HRESULT (STDMETHODCALLTYPE *SetDescription)(
+        ICreateErrorInfo* This,
+        LPOLESTR szDescription);
+
+    HRESULT (STDMETHODCALLTYPE *SetHelpFile)(
+        ICreateErrorInfo* This,
+        LPOLESTR szHelpFile);
+
+    HRESULT (STDMETHODCALLTYPE *SetHelpContext)(
+        ICreateErrorInfo* This,
+        DWORD dwHelpContext);
+
+    END_INTERFACE
+} ICreateErrorInfoVtbl;
+interface ICreateErrorInfo {
+    CONST_VTBL ICreateErrorInfoVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ICreateErrorInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ICreateErrorInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ICreateErrorInfo_Release(This) (This)->lpVtbl->Release(This)
+/*** ICreateErrorInfo methods ***/
+#define ICreateErrorInfo_SetGUID(This,rguid) (This)->lpVtbl->SetGUID(This,rguid)
+#define ICreateErrorInfo_SetSource(This,szSource) (This)->lpVtbl->SetSource(This,szSource)
+#define ICreateErrorInfo_SetDescription(This,szDescription) (This)->lpVtbl->SetDescription(This,szDescription)
+#define ICreateErrorInfo_SetHelpFile(This,szHelpFile) (This)->lpVtbl->SetHelpFile(This,szHelpFile)
+#define ICreateErrorInfo_SetHelpContext(This,dwHelpContext) (This)->lpVtbl->SetHelpContext(This,dwHelpContext)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ICreateErrorInfo_SetGUID_Proxy(
+    ICreateErrorInfo* This,
+    REFGUID rguid);
+void __RPC_STUB ICreateErrorInfo_SetGUID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateErrorInfo_SetSource_Proxy(
+    ICreateErrorInfo* This,
+    LPOLESTR szSource);
+void __RPC_STUB ICreateErrorInfo_SetSource_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateErrorInfo_SetDescription_Proxy(
+    ICreateErrorInfo* This,
+    LPOLESTR szDescription);
+void __RPC_STUB ICreateErrorInfo_SetDescription_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateErrorInfo_SetHelpFile_Proxy(
+    ICreateErrorInfo* This,
+    LPOLESTR szHelpFile);
+void __RPC_STUB ICreateErrorInfo_SetHelpFile_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateErrorInfo_SetHelpContext_Proxy(
+    ICreateErrorInfo* This,
+    DWORD dwHelpContext);
+void __RPC_STUB ICreateErrorInfo_SetHelpContext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ICreateErrorInfo_INTERFACE_DEFINED__ */
+
+#ifndef __ISupportErrorInfo_FWD_DEFINED__
+#define __ISupportErrorInfo_FWD_DEFINED__
+typedef interface ISupportErrorInfo ISupportErrorInfo;
+#endif
+
+typedef ISupportErrorInfo *LPSUPPORTERRORINFO;
+/*****************************************************************************
+ * ISupportErrorInfo interface
+ */
+#ifndef __ISupportErrorInfo_INTERFACE_DEFINED__
+#define __ISupportErrorInfo_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ISupportErrorInfo, 0xdf0b3d60, 0x548f, 0x101b, 0x8e,0x65, 0x08,0x00,0x2b,0x2b,0xd1,0x19);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ISupportErrorInfo : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE InterfaceSupportsErrorInfo(
+        REFIID riid) = 0;
+
+};
+#else
+typedef struct ISupportErrorInfoVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ISupportErrorInfo* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ISupportErrorInfo* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ISupportErrorInfo* This);
+
+    /*** ISupportErrorInfo methods ***/
+    HRESULT (STDMETHODCALLTYPE *InterfaceSupportsErrorInfo)(
+        ISupportErrorInfo* This,
+        REFIID riid);
+
+    END_INTERFACE
+} ISupportErrorInfoVtbl;
+interface ISupportErrorInfo {
+    CONST_VTBL ISupportErrorInfoVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ISupportErrorInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ISupportErrorInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ISupportErrorInfo_Release(This) (This)->lpVtbl->Release(This)
+/*** ISupportErrorInfo methods ***/
+#define ISupportErrorInfo_InterfaceSupportsErrorInfo(This,riid) (This)->lpVtbl->InterfaceSupportsErrorInfo(This,riid)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ISupportErrorInfo_InterfaceSupportsErrorInfo_Proxy(
+    ISupportErrorInfo* This,
+    REFIID riid);
+void __RPC_STUB ISupportErrorInfo_InterfaceSupportsErrorInfo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ISupportErrorInfo_INTERFACE_DEFINED__ */
+
+#ifndef __ITypeFactory_FWD_DEFINED__
+#define __ITypeFactory_FWD_DEFINED__
+typedef interface ITypeFactory ITypeFactory;
+#endif
+
+/*****************************************************************************
+ * ITypeFactory interface
+ */
+#ifndef __ITypeFactory_INTERFACE_DEFINED__
+#define __ITypeFactory_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ITypeFactory, 0x0000002e, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ITypeFactory : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE CreateFromTypeInfo(
+        ITypeInfo *pTypeInfo,
+        REFIID riid,
+        IUnknown **ppv) = 0;
+
+};
+#else
+typedef struct ITypeFactoryVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITypeFactory* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITypeFactory* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITypeFactory* This);
+
+    /*** ITypeFactory methods ***/
+    HRESULT (STDMETHODCALLTYPE *CreateFromTypeInfo)(
+        ITypeFactory* This,
+        ITypeInfo *pTypeInfo,
+        REFIID riid,
+        IUnknown **ppv);
+
+    END_INTERFACE
+} ITypeFactoryVtbl;
+interface ITypeFactory {
+    CONST_VTBL ITypeFactoryVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ITypeFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITypeFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITypeFactory_Release(This) (This)->lpVtbl->Release(This)
+/*** ITypeFactory methods ***/
+#define ITypeFactory_CreateFromTypeInfo(This,pTypeInfo,riid,ppv) (This)->lpVtbl->CreateFromTypeInfo(This,pTypeInfo,riid,ppv)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ITypeFactory_CreateFromTypeInfo_Proxy(
+    ITypeFactory* This,
+    ITypeInfo *pTypeInfo,
+    REFIID riid,
+    IUnknown **ppv);
+void __RPC_STUB ITypeFactory_CreateFromTypeInfo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ITypeFactory_INTERFACE_DEFINED__ */
+
+#ifndef __ITypeMarshal_FWD_DEFINED__
+#define __ITypeMarshal_FWD_DEFINED__
+typedef interface ITypeMarshal ITypeMarshal;
+#endif
+
+/*****************************************************************************
+ * ITypeMarshal interface
+ */
+#ifndef __ITypeMarshal_INTERFACE_DEFINED__
+#define __ITypeMarshal_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ITypeMarshal, 0x0000002d, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ITypeMarshal : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Size(
+        PVOID pvType,
+        DWORD dwDestContext,
+        PVOID pvDestContext,
+        ULONG *pSize) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Marshal(
+        PVOID pvType,
+        DWORD dwDestContext,
+        PVOID pvDestContext,
+        ULONG cbBufferLength,
+        BYTE *pBuffer,
+        ULONG *pcbWritten) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Unmarshal(
+        PVOID pvType,
+        DWORD dwFlags,
+        ULONG cbBufferLength,
+        BYTE *pBuffer,
+        ULONG *pcbRead) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Free(
+        PVOID pvType) = 0;
+
+};
+#else
+typedef struct ITypeMarshalVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITypeMarshal* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITypeMarshal* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITypeMarshal* This);
+
+    /*** ITypeMarshal methods ***/
+    HRESULT (STDMETHODCALLTYPE *Size)(
+        ITypeMarshal* This,
+        PVOID pvType,
+        DWORD dwDestContext,
+        PVOID pvDestContext,
+        ULONG *pSize);
+
+    HRESULT (STDMETHODCALLTYPE *Marshal)(
+        ITypeMarshal* This,
+        PVOID pvType,
+        DWORD dwDestContext,
+        PVOID pvDestContext,
+        ULONG cbBufferLength,
+        BYTE *pBuffer,
+        ULONG *pcbWritten);
+
+    HRESULT (STDMETHODCALLTYPE *Unmarshal)(
+        ITypeMarshal* This,
+        PVOID pvType,
+        DWORD dwFlags,
+        ULONG cbBufferLength,
+        BYTE *pBuffer,
+        ULONG *pcbRead);
+
+    HRESULT (STDMETHODCALLTYPE *Free)(
+        ITypeMarshal* This,
+        PVOID pvType);
+
+    END_INTERFACE
+} ITypeMarshalVtbl;
+interface ITypeMarshal {
+    CONST_VTBL ITypeMarshalVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ITypeMarshal_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITypeMarshal_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITypeMarshal_Release(This) (This)->lpVtbl->Release(This)
+/*** ITypeMarshal methods ***/
+#define ITypeMarshal_Size(This,pvType,dwDestContext,pvDestContext,pSize) (This)->lpVtbl->Size(This,pvType,dwDestContext,pvDestContext,pSize)
+#define ITypeMarshal_Marshal(This,pvType,dwDestContext,pvDestContext,cbBufferLength,pBuffer,pcbWritten) (This)->lpVtbl->Marshal(This,pvType,dwDestContext,pvDestContext,cbBufferLength,pBuffer,pcbWritten)
+#define ITypeMarshal_Unmarshal(This,pvType,dwFlags,cbBufferLength,pBuffer,pcbRead) (This)->lpVtbl->Unmarshal(This,pvType,dwFlags,cbBufferLength,pBuffer,pcbRead)
+#define ITypeMarshal_Free(This,pvType) (This)->lpVtbl->Free(This,pvType)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ITypeMarshal_Size_Proxy(
+    ITypeMarshal* This,
+    PVOID pvType,
+    DWORD dwDestContext,
+    PVOID pvDestContext,
+    ULONG *pSize);
+void __RPC_STUB ITypeMarshal_Size_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeMarshal_Marshal_Proxy(
+    ITypeMarshal* This,
+    PVOID pvType,
+    DWORD dwDestContext,
+    PVOID pvDestContext,
+    ULONG cbBufferLength,
+    BYTE *pBuffer,
+    ULONG *pcbWritten);
+void __RPC_STUB ITypeMarshal_Marshal_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeMarshal_Unmarshal_Proxy(
+    ITypeMarshal* This,
+    PVOID pvType,
+    DWORD dwFlags,
+    ULONG cbBufferLength,
+    BYTE *pBuffer,
+    ULONG *pcbRead);
+void __RPC_STUB ITypeMarshal_Unmarshal_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ITypeMarshal_Free_Proxy(
+    ITypeMarshal* This,
+    PVOID pvType);
+void __RPC_STUB ITypeMarshal_Free_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ITypeMarshal_INTERFACE_DEFINED__ */
+
+typedef IRecordInfo *LPRECORDINFO;
+/*****************************************************************************
+ * IRecordInfo interface
+ */
+#ifndef __IRecordInfo_INTERFACE_DEFINED__
+#define __IRecordInfo_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IRecordInfo, 0x0000002f, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IRecordInfo : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE RecordInit(
+        PVOID pvNew) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RecordClear(
+        PVOID pvExisting) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RecordCopy(
+        PVOID pvExisting,
+        PVOID pvNew) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetGuid(
+        GUID *pguid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetName(
+        BSTR *pbstrName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSize(
+        ULONG *pcbSize) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(
+        ITypeInfo **ppTypeInfo) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetField(
+        PVOID pvData,
+        LPCOLESTR szFieldName,
+        VARIANT *pvarField) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFieldNoCopy(
+        PVOID pvData,
+        LPCOLESTR szFieldName,
+        VARIANT *pvarField,
+        PVOID *ppvDataCArray) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PutField(
+        ULONG wFlags,
+        PVOID pvData,
+        LPCOLESTR szFieldName,
+        VARIANT *pvarField) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PutFieldNoCopy(
+        ULONG wFlags,
+        PVOID pvData,
+        LPCOLESTR szFieldName,
+        VARIANT *pvarField) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFieldNames(
+        ULONG *pcNames,
+        BSTR *rgBstrNames) = 0;
+
+    virtual BOOL STDMETHODCALLTYPE IsMatchingType(
+        IRecordInfo *pRecordInfo) = 0;
+
+    virtual PVOID STDMETHODCALLTYPE RecordCreate(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RecordCreateCopy(
+        PVOID pvSource,
+        PVOID *ppvDest) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RecordDestroy(
+        PVOID pvRecord) = 0;
+
+};
+#else
+typedef struct IRecordInfoVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IRecordInfo* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IRecordInfo* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IRecordInfo* This);
+
+    /*** IRecordInfo methods ***/
+    HRESULT (STDMETHODCALLTYPE *RecordInit)(
+        IRecordInfo* This,
+        PVOID pvNew);
+
+    HRESULT (STDMETHODCALLTYPE *RecordClear)(
+        IRecordInfo* This,
+        PVOID pvExisting);
+
+    HRESULT (STDMETHODCALLTYPE *RecordCopy)(
+        IRecordInfo* This,
+        PVOID pvExisting,
+        PVOID pvNew);
+
+    HRESULT (STDMETHODCALLTYPE *GetGuid)(
+        IRecordInfo* This,
+        GUID *pguid);
+
+    HRESULT (STDMETHODCALLTYPE *GetName)(
+        IRecordInfo* This,
+        BSTR *pbstrName);
+
+    HRESULT (STDMETHODCALLTYPE *GetSize)(
+        IRecordInfo* This,
+        ULONG *pcbSize);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IRecordInfo* This,
+        ITypeInfo **ppTypeInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetField)(
+        IRecordInfo* This,
+        PVOID pvData,
+        LPCOLESTR szFieldName,
+        VARIANT *pvarField);
+
+    HRESULT (STDMETHODCALLTYPE *GetFieldNoCopy)(
+        IRecordInfo* This,
+        PVOID pvData,
+        LPCOLESTR szFieldName,
+        VARIANT *pvarField,
+        PVOID *ppvDataCArray);
+
+    HRESULT (STDMETHODCALLTYPE *PutField)(
+        IRecordInfo* This,
+        ULONG wFlags,
+        PVOID pvData,
+        LPCOLESTR szFieldName,
+        VARIANT *pvarField);
+
+    HRESULT (STDMETHODCALLTYPE *PutFieldNoCopy)(
+        IRecordInfo* This,
+        ULONG wFlags,
+        PVOID pvData,
+        LPCOLESTR szFieldName,
+        VARIANT *pvarField);
+
+    HRESULT (STDMETHODCALLTYPE *GetFieldNames)(
+        IRecordInfo* This,
+        ULONG *pcNames,
+        BSTR *rgBstrNames);
+
+    BOOL (STDMETHODCALLTYPE *IsMatchingType)(
+        IRecordInfo* This,
+        IRecordInfo *pRecordInfo);
+
+    PVOID (STDMETHODCALLTYPE *RecordCreate)(
+        IRecordInfo* This);
+
+    HRESULT (STDMETHODCALLTYPE *RecordCreateCopy)(
+        IRecordInfo* This,
+        PVOID pvSource,
+        PVOID *ppvDest);
+
+    HRESULT (STDMETHODCALLTYPE *RecordDestroy)(
+        IRecordInfo* This,
+        PVOID pvRecord);
+
+    END_INTERFACE
+} IRecordInfoVtbl;
+interface IRecordInfo {
+    CONST_VTBL IRecordInfoVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IRecordInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IRecordInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRecordInfo_Release(This) (This)->lpVtbl->Release(This)
+/*** IRecordInfo methods ***/
+#define IRecordInfo_RecordInit(This,pvNew) (This)->lpVtbl->RecordInit(This,pvNew)
+#define IRecordInfo_RecordClear(This,pvExisting) (This)->lpVtbl->RecordClear(This,pvExisting)
+#define IRecordInfo_RecordCopy(This,pvExisting,pvNew) (This)->lpVtbl->RecordCopy(This,pvExisting,pvNew)
+#define IRecordInfo_GetGuid(This,pguid) (This)->lpVtbl->GetGuid(This,pguid)
+#define IRecordInfo_GetName(This,pbstrName) (This)->lpVtbl->GetName(This,pbstrName)
+#define IRecordInfo_GetSize(This,pcbSize) (This)->lpVtbl->GetSize(This,pcbSize)
+#define IRecordInfo_GetTypeInfo(This,ppTypeInfo) (This)->lpVtbl->GetTypeInfo(This,ppTypeInfo)
+#define IRecordInfo_GetField(This,pvData,szFieldName,pvarField) (This)->lpVtbl->GetField(This,pvData,szFieldName,pvarField)
+#define IRecordInfo_GetFieldNoCopy(This,pvData,szFieldName,pvarField,ppvDataCArray) (This)->lpVtbl->GetFieldNoCopy(This,pvData,szFieldName,pvarField,ppvDataCArray)
+#define IRecordInfo_PutField(This,wFlags,pvData,szFieldName,pvarField) (This)->lpVtbl->PutField(This,wFlags,pvData,szFieldName,pvarField)
+#define IRecordInfo_PutFieldNoCopy(This,wFlags,pvData,szFieldName,pvarField) (This)->lpVtbl->PutFieldNoCopy(This,wFlags,pvData,szFieldName,pvarField)
+#define IRecordInfo_GetFieldNames(This,pcNames,rgBstrNames) (This)->lpVtbl->GetFieldNames(This,pcNames,rgBstrNames)
+#define IRecordInfo_IsMatchingType(This,pRecordInfo) (This)->lpVtbl->IsMatchingType(This,pRecordInfo)
+#define IRecordInfo_RecordCreate(This) (This)->lpVtbl->RecordCreate(This)
+#define IRecordInfo_RecordCreateCopy(This,pvSource,ppvDest) (This)->lpVtbl->RecordCreateCopy(This,pvSource,ppvDest)
+#define IRecordInfo_RecordDestroy(This,pvRecord) (This)->lpVtbl->RecordDestroy(This,pvRecord)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IRecordInfo_RecordInit_Proxy(
+    IRecordInfo* This,
+    PVOID pvNew);
+void __RPC_STUB IRecordInfo_RecordInit_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRecordInfo_RecordClear_Proxy(
+    IRecordInfo* This,
+    PVOID pvExisting);
+void __RPC_STUB IRecordInfo_RecordClear_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRecordInfo_RecordCopy_Proxy(
+    IRecordInfo* This,
+    PVOID pvExisting,
+    PVOID pvNew);
+void __RPC_STUB IRecordInfo_RecordCopy_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRecordInfo_GetGuid_Proxy(
+    IRecordInfo* This,
+    GUID *pguid);
+void __RPC_STUB IRecordInfo_GetGuid_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRecordInfo_GetName_Proxy(
+    IRecordInfo* This,
+    BSTR *pbstrName);
+void __RPC_STUB IRecordInfo_GetName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRecordInfo_GetSize_Proxy(
+    IRecordInfo* This,
+    ULONG *pcbSize);
+void __RPC_STUB IRecordInfo_GetSize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRecordInfo_GetTypeInfo_Proxy(
+    IRecordInfo* This,
+    ITypeInfo **ppTypeInfo);
+void __RPC_STUB IRecordInfo_GetTypeInfo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRecordInfo_GetField_Proxy(
+    IRecordInfo* This,
+    PVOID pvData,
+    LPCOLESTR szFieldName,
+    VARIANT *pvarField);
+void __RPC_STUB IRecordInfo_GetField_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRecordInfo_GetFieldNoCopy_Proxy(
+    IRecordInfo* This,
+    PVOID pvData,
+    LPCOLESTR szFieldName,
+    VARIANT *pvarField,
+    PVOID *ppvDataCArray);
+void __RPC_STUB IRecordInfo_GetFieldNoCopy_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRecordInfo_PutField_Proxy(
+    IRecordInfo* This,
+    ULONG wFlags,
+    PVOID pvData,
+    LPCOLESTR szFieldName,
+    VARIANT *pvarField);
+void __RPC_STUB IRecordInfo_PutField_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRecordInfo_PutFieldNoCopy_Proxy(
+    IRecordInfo* This,
+    ULONG wFlags,
+    PVOID pvData,
+    LPCOLESTR szFieldName,
+    VARIANT *pvarField);
+void __RPC_STUB IRecordInfo_PutFieldNoCopy_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRecordInfo_GetFieldNames_Proxy(
+    IRecordInfo* This,
+    ULONG *pcNames,
+    BSTR *rgBstrNames);
+void __RPC_STUB IRecordInfo_GetFieldNames_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+BOOL STDMETHODCALLTYPE IRecordInfo_IsMatchingType_Proxy(
+    IRecordInfo* This,
+    IRecordInfo *pRecordInfo);
+void __RPC_STUB IRecordInfo_IsMatchingType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+PVOID STDMETHODCALLTYPE IRecordInfo_RecordCreate_Proxy(
+    IRecordInfo* This);
+void __RPC_STUB IRecordInfo_RecordCreate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRecordInfo_RecordCreateCopy_Proxy(
+    IRecordInfo* This,
+    PVOID pvSource,
+    PVOID *ppvDest);
+void __RPC_STUB IRecordInfo_RecordCreateCopy_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRecordInfo_RecordDestroy_Proxy(
+    IRecordInfo* This,
+    PVOID pvRecord);
+void __RPC_STUB IRecordInfo_RecordDestroy_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IRecordInfo_INTERFACE_DEFINED__ */
+
+#ifndef __ICreateTypeInfo_FWD_DEFINED__
+#define __ICreateTypeInfo_FWD_DEFINED__
+typedef interface ICreateTypeInfo ICreateTypeInfo;
+#endif
+
+typedef ICreateTypeInfo *LPCREATETYPEINFO;
+/*****************************************************************************
+ * ICreateTypeInfo interface
+ */
+#ifndef __ICreateTypeInfo_INTERFACE_DEFINED__
+#define __ICreateTypeInfo_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ICreateTypeInfo, 0x00020405, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ICreateTypeInfo : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SetGuid(
+        REFGUID guid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetTypeFlags(
+        UINT uTypeFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetDocString(
+        LPOLESTR pStrDoc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetHelpContext(
+        DWORD dwHelpContext) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetVersion(
+        WORD wMajorVerNum,
+        WORD wMinorVerNum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddRefTypeInfo(
+        ITypeInfo *pTInfo,
+        HREFTYPE *phRefType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddFuncDesc(
+        UINT index,
+        FUNCDESC *pFuncDesc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddImplType(
+        UINT index,
+        HREFTYPE hRefType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetImplTypeFlags(
+        UINT index,
+        INT implTypeFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetAlignment(
+        WORD cbAlignment) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetSchema(
+        LPOLESTR pStrSchema) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddVarDesc(
+        UINT index,
+        VARDESC *pVarDesc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetFuncAndParamNames(
+        UINT index,
+        LPOLESTR *rgszNames,
+        UINT cNames) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetVarName(
+        UINT index,
+        LPOLESTR szName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetTypeDescAlias(
+        TYPEDESC *pTDescAlias) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DefineFuncAsDllEntry(
+        UINT index,
+        LPOLESTR szDllName,
+        LPOLESTR szProcName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetFuncDocString(
+        UINT index,
+        LPOLESTR szDocString) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetVarDocString(
+        UINT index,
+        LPOLESTR szDocString) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetFuncHelpContext(
+        UINT index,
+        DWORD dwHelpContext) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetVarHelpContext(
+        UINT index,
+        DWORD dwHelpContext) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetMops(
+        UINT index,
+        BSTR bstrMops) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetTypeIdldesc(
+        IDLDESC *pIdlDesc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE LayOut(
+        ) = 0;
+
+};
+#else
+typedef struct ICreateTypeInfoVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ICreateTypeInfo* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ICreateTypeInfo* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ICreateTypeInfo* This);
+
+    /*** ICreateTypeInfo methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetGuid)(
+        ICreateTypeInfo* This,
+        REFGUID guid);
+
+    HRESULT (STDMETHODCALLTYPE *SetTypeFlags)(
+        ICreateTypeInfo* This,
+        UINT uTypeFlags);
+
+    HRESULT (STDMETHODCALLTYPE *SetDocString)(
+        ICreateTypeInfo* This,
+        LPOLESTR pStrDoc);
+
+    HRESULT (STDMETHODCALLTYPE *SetHelpContext)(
+        ICreateTypeInfo* This,
+        DWORD dwHelpContext);
+
+    HRESULT (STDMETHODCALLTYPE *SetVersion)(
+        ICreateTypeInfo* This,
+        WORD wMajorVerNum,
+        WORD wMinorVerNum);
+
+    HRESULT (STDMETHODCALLTYPE *AddRefTypeInfo)(
+        ICreateTypeInfo* This,
+        ITypeInfo *pTInfo,
+        HREFTYPE *phRefType);
+
+    HRESULT (STDMETHODCALLTYPE *AddFuncDesc)(
+        ICreateTypeInfo* This,
+        UINT index,
+        FUNCDESC *pFuncDesc);
+
+    HRESULT (STDMETHODCALLTYPE *AddImplType)(
+        ICreateTypeInfo* This,
+        UINT index,
+        HREFTYPE hRefType);
+
+    HRESULT (STDMETHODCALLTYPE *SetImplTypeFlags)(
+        ICreateTypeInfo* This,
+        UINT index,
+        INT implTypeFlags);
+
+    HRESULT (STDMETHODCALLTYPE *SetAlignment)(
+        ICreateTypeInfo* This,
+        WORD cbAlignment);
+
+    HRESULT (STDMETHODCALLTYPE *SetSchema)(
+        ICreateTypeInfo* This,
+        LPOLESTR pStrSchema);
+
+    HRESULT (STDMETHODCALLTYPE *AddVarDesc)(
+        ICreateTypeInfo* This,
+        UINT index,
+        VARDESC *pVarDesc);
+
+    HRESULT (STDMETHODCALLTYPE *SetFuncAndParamNames)(
+        ICreateTypeInfo* This,
+        UINT index,
+        LPOLESTR *rgszNames,
+        UINT cNames);
+
+    HRESULT (STDMETHODCALLTYPE *SetVarName)(
+        ICreateTypeInfo* This,
+        UINT index,
+        LPOLESTR szName);
+
+    HRESULT (STDMETHODCALLTYPE *SetTypeDescAlias)(
+        ICreateTypeInfo* This,
+        TYPEDESC *pTDescAlias);
+
+    HRESULT (STDMETHODCALLTYPE *DefineFuncAsDllEntry)(
+        ICreateTypeInfo* This,
+        UINT index,
+        LPOLESTR szDllName,
+        LPOLESTR szProcName);
+
+    HRESULT (STDMETHODCALLTYPE *SetFuncDocString)(
+        ICreateTypeInfo* This,
+        UINT index,
+        LPOLESTR szDocString);
+
+    HRESULT (STDMETHODCALLTYPE *SetVarDocString)(
+        ICreateTypeInfo* This,
+        UINT index,
+        LPOLESTR szDocString);
+
+    HRESULT (STDMETHODCALLTYPE *SetFuncHelpContext)(
+        ICreateTypeInfo* This,
+        UINT index,
+        DWORD dwHelpContext);
+
+    HRESULT (STDMETHODCALLTYPE *SetVarHelpContext)(
+        ICreateTypeInfo* This,
+        UINT index,
+        DWORD dwHelpContext);
+
+    HRESULT (STDMETHODCALLTYPE *SetMops)(
+        ICreateTypeInfo* This,
+        UINT index,
+        BSTR bstrMops);
+
+    HRESULT (STDMETHODCALLTYPE *SetTypeIdldesc)(
+        ICreateTypeInfo* This,
+        IDLDESC *pIdlDesc);
+
+    HRESULT (STDMETHODCALLTYPE *LayOut)(
+        ICreateTypeInfo* This);
+
+    END_INTERFACE
+} ICreateTypeInfoVtbl;
+interface ICreateTypeInfo {
+    CONST_VTBL ICreateTypeInfoVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ICreateTypeInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ICreateTypeInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ICreateTypeInfo_Release(This) (This)->lpVtbl->Release(This)
+/*** ICreateTypeInfo methods ***/
+#define ICreateTypeInfo_SetGuid(This,guid) (This)->lpVtbl->SetGuid(This,guid)
+#define ICreateTypeInfo_SetTypeFlags(This,uTypeFlags) (This)->lpVtbl->SetTypeFlags(This,uTypeFlags)
+#define ICreateTypeInfo_SetDocString(This,pStrDoc) (This)->lpVtbl->SetDocString(This,pStrDoc)
+#define ICreateTypeInfo_SetHelpContext(This,dwHelpContext) (This)->lpVtbl->SetHelpContext(This,dwHelpContext)
+#define ICreateTypeInfo_SetVersion(This,wMajorVerNum,wMinorVerNum) (This)->lpVtbl->SetVersion(This,wMajorVerNum,wMinorVerNum)
+#define ICreateTypeInfo_AddRefTypeInfo(This,pTInfo,phRefType) (This)->lpVtbl->AddRefTypeInfo(This,pTInfo,phRefType)
+#define ICreateTypeInfo_AddFuncDesc(This,index,pFuncDesc) (This)->lpVtbl->AddFuncDesc(This,index,pFuncDesc)
+#define ICreateTypeInfo_AddImplType(This,index,hRefType) (This)->lpVtbl->AddImplType(This,index,hRefType)
+#define ICreateTypeInfo_SetImplTypeFlags(This,index,implTypeFlags) (This)->lpVtbl->SetImplTypeFlags(This,index,implTypeFlags)
+#define ICreateTypeInfo_SetAlignment(This,cbAlignment) (This)->lpVtbl->SetAlignment(This,cbAlignment)
+#define ICreateTypeInfo_SetSchema(This,pStrSchema) (This)->lpVtbl->SetSchema(This,pStrSchema)
+#define ICreateTypeInfo_AddVarDesc(This,index,pVarDesc) (This)->lpVtbl->AddVarDesc(This,index,pVarDesc)
+#define ICreateTypeInfo_SetFuncAndParamNames(This,index,rgszNames,cNames) (This)->lpVtbl->SetFuncAndParamNames(This,index,rgszNames,cNames)
+#define ICreateTypeInfo_SetVarName(This,index,szName) (This)->lpVtbl->SetVarName(This,index,szName)
+#define ICreateTypeInfo_SetTypeDescAlias(This,pTDescAlias) (This)->lpVtbl->SetTypeDescAlias(This,pTDescAlias)
+#define ICreateTypeInfo_DefineFuncAsDllEntry(This,index,szDllName,szProcName) (This)->lpVtbl->DefineFuncAsDllEntry(This,index,szDllName,szProcName)
+#define ICreateTypeInfo_SetFuncDocString(This,index,szDocString) (This)->lpVtbl->SetFuncDocString(This,index,szDocString)
+#define ICreateTypeInfo_SetVarDocString(This,index,szDocString) (This)->lpVtbl->SetVarDocString(This,index,szDocString)
+#define ICreateTypeInfo_SetFuncHelpContext(This,index,dwHelpContext) (This)->lpVtbl->SetFuncHelpContext(This,index,dwHelpContext)
+#define ICreateTypeInfo_SetVarHelpContext(This,index,dwHelpContext) (This)->lpVtbl->SetVarHelpContext(This,index,dwHelpContext)
+#define ICreateTypeInfo_SetMops(This,index,bstrMops) (This)->lpVtbl->SetMops(This,index,bstrMops)
+#define ICreateTypeInfo_SetTypeIdldesc(This,pIdlDesc) (This)->lpVtbl->SetTypeIdldesc(This,pIdlDesc)
+#define ICreateTypeInfo_LayOut(This) (This)->lpVtbl->LayOut(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetGuid_Proxy(
+    ICreateTypeInfo* This,
+    REFGUID guid);
+void __RPC_STUB ICreateTypeInfo_SetGuid_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetTypeFlags_Proxy(
+    ICreateTypeInfo* This,
+    UINT uTypeFlags);
+void __RPC_STUB ICreateTypeInfo_SetTypeFlags_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetDocString_Proxy(
+    ICreateTypeInfo* This,
+    LPOLESTR pStrDoc);
+void __RPC_STUB ICreateTypeInfo_SetDocString_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetHelpContext_Proxy(
+    ICreateTypeInfo* This,
+    DWORD dwHelpContext);
+void __RPC_STUB ICreateTypeInfo_SetHelpContext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetVersion_Proxy(
+    ICreateTypeInfo* This,
+    WORD wMajorVerNum,
+    WORD wMinorVerNum);
+void __RPC_STUB ICreateTypeInfo_SetVersion_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_AddRefTypeInfo_Proxy(
+    ICreateTypeInfo* This,
+    ITypeInfo *pTInfo,
+    HREFTYPE *phRefType);
+void __RPC_STUB ICreateTypeInfo_AddRefTypeInfo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_AddFuncDesc_Proxy(
+    ICreateTypeInfo* This,
+    UINT index,
+    FUNCDESC *pFuncDesc);
+void __RPC_STUB ICreateTypeInfo_AddFuncDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_AddImplType_Proxy(
+    ICreateTypeInfo* This,
+    UINT index,
+    HREFTYPE hRefType);
+void __RPC_STUB ICreateTypeInfo_AddImplType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetImplTypeFlags_Proxy(
+    ICreateTypeInfo* This,
+    UINT index,
+    INT implTypeFlags);
+void __RPC_STUB ICreateTypeInfo_SetImplTypeFlags_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetAlignment_Proxy(
+    ICreateTypeInfo* This,
+    WORD cbAlignment);
+void __RPC_STUB ICreateTypeInfo_SetAlignment_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetSchema_Proxy(
+    ICreateTypeInfo* This,
+    LPOLESTR pStrSchema);
+void __RPC_STUB ICreateTypeInfo_SetSchema_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_AddVarDesc_Proxy(
+    ICreateTypeInfo* This,
+    UINT index,
+    VARDESC *pVarDesc);
+void __RPC_STUB ICreateTypeInfo_AddVarDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetFuncAndParamNames_Proxy(
+    ICreateTypeInfo* This,
+    UINT index,
+    LPOLESTR *rgszNames,
+    UINT cNames);
+void __RPC_STUB ICreateTypeInfo_SetFuncAndParamNames_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetVarName_Proxy(
+    ICreateTypeInfo* This,
+    UINT index,
+    LPOLESTR szName);
+void __RPC_STUB ICreateTypeInfo_SetVarName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetTypeDescAlias_Proxy(
+    ICreateTypeInfo* This,
+    TYPEDESC *pTDescAlias);
+void __RPC_STUB ICreateTypeInfo_SetTypeDescAlias_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_DefineFuncAsDllEntry_Proxy(
+    ICreateTypeInfo* This,
+    UINT index,
+    LPOLESTR szDllName,
+    LPOLESTR szProcName);
+void __RPC_STUB ICreateTypeInfo_DefineFuncAsDllEntry_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetFuncDocString_Proxy(
+    ICreateTypeInfo* This,
+    UINT index,
+    LPOLESTR szDocString);
+void __RPC_STUB ICreateTypeInfo_SetFuncDocString_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetVarDocString_Proxy(
+    ICreateTypeInfo* This,
+    UINT index,
+    LPOLESTR szDocString);
+void __RPC_STUB ICreateTypeInfo_SetVarDocString_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetFuncHelpContext_Proxy(
+    ICreateTypeInfo* This,
+    UINT index,
+    DWORD dwHelpContext);
+void __RPC_STUB ICreateTypeInfo_SetFuncHelpContext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetVarHelpContext_Proxy(
+    ICreateTypeInfo* This,
+    UINT index,
+    DWORD dwHelpContext);
+void __RPC_STUB ICreateTypeInfo_SetVarHelpContext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetMops_Proxy(
+    ICreateTypeInfo* This,
+    UINT index,
+    BSTR bstrMops);
+void __RPC_STUB ICreateTypeInfo_SetMops_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetTypeIdldesc_Proxy(
+    ICreateTypeInfo* This,
+    IDLDESC *pIdlDesc);
+void __RPC_STUB ICreateTypeInfo_SetTypeIdldesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_LayOut_Proxy(
+    ICreateTypeInfo* This);
+void __RPC_STUB ICreateTypeInfo_LayOut_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ICreateTypeInfo_INTERFACE_DEFINED__ */
+
+#ifndef __ICreateTypeInfo2_FWD_DEFINED__
+#define __ICreateTypeInfo2_FWD_DEFINED__
+typedef interface ICreateTypeInfo2 ICreateTypeInfo2;
+#endif
+
+typedef ICreateTypeInfo2 *LPCREATETYPEINFO2;
+/*****************************************************************************
+ * ICreateTypeInfo2 interface
+ */
+#ifndef __ICreateTypeInfo2_INTERFACE_DEFINED__
+#define __ICreateTypeInfo2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ICreateTypeInfo2, 0x0002040e, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ICreateTypeInfo2 : public ICreateTypeInfo
+{
+    virtual HRESULT STDMETHODCALLTYPE DeleteFuncDesc(
+        UINT index) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DeleteFuncDescByMemId(
+        MEMBERID memid,
+        INVOKEKIND invKind) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DeleteVarDesc(
+        UINT index) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DeleteVarDescByMemId(
+        MEMBERID memid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DeleteImplType(
+        UINT index) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetCustData(
+        REFGUID guid,
+        VARIANT *pVarVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetFuncCustData(
+        UINT index,
+        REFGUID guid,
+        VARIANT *pVarVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetParamCustData(
+        UINT indexFunc,
+        UINT indexParam,
+        REFGUID guid,
+        VARIANT *pVarVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetVarCustData(
+        UINT index,
+        REFGUID guid,
+        VARIANT *pVarVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetImplTypeCustData(
+        UINT index,
+        REFGUID guid,
+        VARIANT *pVarVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetHelpStringContext(
+        ULONG dwHelpStringContext) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetFuncHelpStringContext(
+        UINT index,
+        ULONG dwHelpStringContext) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetVarHelpStringContext(
+        UINT index,
+        ULONG dwHelpStringContext) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Invalidate(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetName(
+        LPOLESTR szName) = 0;
+
+};
+#else
+typedef struct ICreateTypeInfo2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ICreateTypeInfo2* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ICreateTypeInfo2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ICreateTypeInfo2* This);
+
+    /*** ICreateTypeInfo methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetGuid)(
+        ICreateTypeInfo2* This,
+        REFGUID guid);
+
+    HRESULT (STDMETHODCALLTYPE *SetTypeFlags)(
+        ICreateTypeInfo2* This,
+        UINT uTypeFlags);
+
+    HRESULT (STDMETHODCALLTYPE *SetDocString)(
+        ICreateTypeInfo2* This,
+        LPOLESTR pStrDoc);
+
+    HRESULT (STDMETHODCALLTYPE *SetHelpContext)(
+        ICreateTypeInfo2* This,
+        DWORD dwHelpContext);
+
+    HRESULT (STDMETHODCALLTYPE *SetVersion)(
+        ICreateTypeInfo2* This,
+        WORD wMajorVerNum,
+        WORD wMinorVerNum);
+
+    HRESULT (STDMETHODCALLTYPE *AddRefTypeInfo)(
+        ICreateTypeInfo2* This,
+        ITypeInfo *pTInfo,
+        HREFTYPE *phRefType);
+
+    HRESULT (STDMETHODCALLTYPE *AddFuncDesc)(
+        ICreateTypeInfo2* This,
+        UINT index,
+        FUNCDESC *pFuncDesc);
+
+    HRESULT (STDMETHODCALLTYPE *AddImplType)(
+        ICreateTypeInfo2* This,
+        UINT index,
+        HREFTYPE hRefType);
+
+    HRESULT (STDMETHODCALLTYPE *SetImplTypeFlags)(
+        ICreateTypeInfo2* This,
+        UINT index,
+        INT implTypeFlags);
+
+    HRESULT (STDMETHODCALLTYPE *SetAlignment)(
+        ICreateTypeInfo2* This,
+        WORD cbAlignment);
+
+    HRESULT (STDMETHODCALLTYPE *SetSchema)(
+        ICreateTypeInfo2* This,
+        LPOLESTR pStrSchema);
+
+    HRESULT (STDMETHODCALLTYPE *AddVarDesc)(
+        ICreateTypeInfo2* This,
+        UINT index,
+        VARDESC *pVarDesc);
+
+    HRESULT (STDMETHODCALLTYPE *SetFuncAndParamNames)(
+        ICreateTypeInfo2* This,
+        UINT index,
+        LPOLESTR *rgszNames,
+        UINT cNames);
+
+    HRESULT (STDMETHODCALLTYPE *SetVarName)(
+        ICreateTypeInfo2* This,
+        UINT index,
+        LPOLESTR szName);
+
+    HRESULT (STDMETHODCALLTYPE *SetTypeDescAlias)(
+        ICreateTypeInfo2* This,
+        TYPEDESC *pTDescAlias);
+
+    HRESULT (STDMETHODCALLTYPE *DefineFuncAsDllEntry)(
+        ICreateTypeInfo2* This,
+        UINT index,
+        LPOLESTR szDllName,
+        LPOLESTR szProcName);
+
+    HRESULT (STDMETHODCALLTYPE *SetFuncDocString)(
+        ICreateTypeInfo2* This,
+        UINT index,
+        LPOLESTR szDocString);
+
+    HRESULT (STDMETHODCALLTYPE *SetVarDocString)(
+        ICreateTypeInfo2* This,
+        UINT index,
+        LPOLESTR szDocString);
+
+    HRESULT (STDMETHODCALLTYPE *SetFuncHelpContext)(
+        ICreateTypeInfo2* This,
+        UINT index,
+        DWORD dwHelpContext);
+
+    HRESULT (STDMETHODCALLTYPE *SetVarHelpContext)(
+        ICreateTypeInfo2* This,
+        UINT index,
+        DWORD dwHelpContext);
+
+    HRESULT (STDMETHODCALLTYPE *SetMops)(
+        ICreateTypeInfo2* This,
+        UINT index,
+        BSTR bstrMops);
+
+    HRESULT (STDMETHODCALLTYPE *SetTypeIdldesc)(
+        ICreateTypeInfo2* This,
+        IDLDESC *pIdlDesc);
+
+    HRESULT (STDMETHODCALLTYPE *LayOut)(
+        ICreateTypeInfo2* This);
+
+    /*** ICreateTypeInfo2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *DeleteFuncDesc)(
+        ICreateTypeInfo2* This,
+        UINT index);
+
+    HRESULT (STDMETHODCALLTYPE *DeleteFuncDescByMemId)(
+        ICreateTypeInfo2* This,
+        MEMBERID memid,
+        INVOKEKIND invKind);
+
+    HRESULT (STDMETHODCALLTYPE *DeleteVarDesc)(
+        ICreateTypeInfo2* This,
+        UINT index);
+
+    HRESULT (STDMETHODCALLTYPE *DeleteVarDescByMemId)(
+        ICreateTypeInfo2* This,
+        MEMBERID memid);
+
+    HRESULT (STDMETHODCALLTYPE *DeleteImplType)(
+        ICreateTypeInfo2* This,
+        UINT index);
+
+    HRESULT (STDMETHODCALLTYPE *SetCustData)(
+        ICreateTypeInfo2* This,
+        REFGUID guid,
+        VARIANT *pVarVal);
+
+    HRESULT (STDMETHODCALLTYPE *SetFuncCustData)(
+        ICreateTypeInfo2* This,
+        UINT index,
+        REFGUID guid,
+        VARIANT *pVarVal);
+
+    HRESULT (STDMETHODCALLTYPE *SetParamCustData)(
+        ICreateTypeInfo2* This,
+        UINT indexFunc,
+        UINT indexParam,
+        REFGUID guid,
+        VARIANT *pVarVal);
+
+    HRESULT (STDMETHODCALLTYPE *SetVarCustData)(
+        ICreateTypeInfo2* This,
+        UINT index,
+        REFGUID guid,
+        VARIANT *pVarVal);
+
+    HRESULT (STDMETHODCALLTYPE *SetImplTypeCustData)(
+        ICreateTypeInfo2* This,
+        UINT index,
+        REFGUID guid,
+        VARIANT *pVarVal);
+
+    HRESULT (STDMETHODCALLTYPE *SetHelpStringContext)(
+        ICreateTypeInfo2* This,
+        ULONG dwHelpStringContext);
+
+    HRESULT (STDMETHODCALLTYPE *SetFuncHelpStringContext)(
+        ICreateTypeInfo2* This,
+        UINT index,
+        ULONG dwHelpStringContext);
+
+    HRESULT (STDMETHODCALLTYPE *SetVarHelpStringContext)(
+        ICreateTypeInfo2* This,
+        UINT index,
+        ULONG dwHelpStringContext);
+
+    HRESULT (STDMETHODCALLTYPE *Invalidate)(
+        ICreateTypeInfo2* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetName)(
+        ICreateTypeInfo2* This,
+        LPOLESTR szName);
+
+    END_INTERFACE
+} ICreateTypeInfo2Vtbl;
+interface ICreateTypeInfo2 {
+    CONST_VTBL ICreateTypeInfo2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ICreateTypeInfo2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ICreateTypeInfo2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ICreateTypeInfo2_Release(This) (This)->lpVtbl->Release(This)
+/*** ICreateTypeInfo methods ***/
+#define ICreateTypeInfo2_SetGuid(This,guid) (This)->lpVtbl->SetGuid(This,guid)
+#define ICreateTypeInfo2_SetTypeFlags(This,uTypeFlags) (This)->lpVtbl->SetTypeFlags(This,uTypeFlags)
+#define ICreateTypeInfo2_SetDocString(This,pStrDoc) (This)->lpVtbl->SetDocString(This,pStrDoc)
+#define ICreateTypeInfo2_SetHelpContext(This,dwHelpContext) (This)->lpVtbl->SetHelpContext(This,dwHelpContext)
+#define ICreateTypeInfo2_SetVersion(This,wMajorVerNum,wMinorVerNum) (This)->lpVtbl->SetVersion(This,wMajorVerNum,wMinorVerNum)
+#define ICreateTypeInfo2_AddRefTypeInfo(This,pTInfo,phRefType) (This)->lpVtbl->AddRefTypeInfo(This,pTInfo,phRefType)
+#define ICreateTypeInfo2_AddFuncDesc(This,index,pFuncDesc) (This)->lpVtbl->AddFuncDesc(This,index,pFuncDesc)
+#define ICreateTypeInfo2_AddImplType(This,index,hRefType) (This)->lpVtbl->AddImplType(This,index,hRefType)
+#define ICreateTypeInfo2_SetImplTypeFlags(This,index,implTypeFlags) (This)->lpVtbl->SetImplTypeFlags(This,index,implTypeFlags)
+#define ICreateTypeInfo2_SetAlignment(This,cbAlignment) (This)->lpVtbl->SetAlignment(This,cbAlignment)
+#define ICreateTypeInfo2_SetSchema(This,pStrSchema) (This)->lpVtbl->SetSchema(This,pStrSchema)
+#define ICreateTypeInfo2_AddVarDesc(This,index,pVarDesc) (This)->lpVtbl->AddVarDesc(This,index,pVarDesc)
+#define ICreateTypeInfo2_SetFuncAndParamNames(This,index,rgszNames,cNames) (This)->lpVtbl->SetFuncAndParamNames(This,index,rgszNames,cNames)
+#define ICreateTypeInfo2_SetVarName(This,index,szName) (This)->lpVtbl->SetVarName(This,index,szName)
+#define ICreateTypeInfo2_SetTypeDescAlias(This,pTDescAlias) (This)->lpVtbl->SetTypeDescAlias(This,pTDescAlias)
+#define ICreateTypeInfo2_DefineFuncAsDllEntry(This,index,szDllName,szProcName) (This)->lpVtbl->DefineFuncAsDllEntry(This,index,szDllName,szProcName)
+#define ICreateTypeInfo2_SetFuncDocString(This,index,szDocString) (This)->lpVtbl->SetFuncDocString(This,index,szDocString)
+#define ICreateTypeInfo2_SetVarDocString(This,index,szDocString) (This)->lpVtbl->SetVarDocString(This,index,szDocString)
+#define ICreateTypeInfo2_SetFuncHelpContext(This,index,dwHelpContext) (This)->lpVtbl->SetFuncHelpContext(This,index,dwHelpContext)
+#define ICreateTypeInfo2_SetVarHelpContext(This,index,dwHelpContext) (This)->lpVtbl->SetVarHelpContext(This,index,dwHelpContext)
+#define ICreateTypeInfo2_SetMops(This,index,bstrMops) (This)->lpVtbl->SetMops(This,index,bstrMops)
+#define ICreateTypeInfo2_SetTypeIdldesc(This,pIdlDesc) (This)->lpVtbl->SetTypeIdldesc(This,pIdlDesc)
+#define ICreateTypeInfo2_LayOut(This) (This)->lpVtbl->LayOut(This)
+/*** ICreateTypeInfo2 methods ***/
+#define ICreateTypeInfo2_DeleteFuncDesc(This,index) (This)->lpVtbl->DeleteFuncDesc(This,index)
+#define ICreateTypeInfo2_DeleteFuncDescByMemId(This,memid,invKind) (This)->lpVtbl->DeleteFuncDescByMemId(This,memid,invKind)
+#define ICreateTypeInfo2_DeleteVarDesc(This,index) (This)->lpVtbl->DeleteVarDesc(This,index)
+#define ICreateTypeInfo2_DeleteVarDescByMemId(This,memid) (This)->lpVtbl->DeleteVarDescByMemId(This,memid)
+#define ICreateTypeInfo2_DeleteImplType(This,index) (This)->lpVtbl->DeleteImplType(This,index)
+#define ICreateTypeInfo2_SetCustData(This,guid,pVarVal) (This)->lpVtbl->SetCustData(This,guid,pVarVal)
+#define ICreateTypeInfo2_SetFuncCustData(This,index,guid,pVarVal) (This)->lpVtbl->SetFuncCustData(This,index,guid,pVarVal)
+#define ICreateTypeInfo2_SetParamCustData(This,indexFunc,indexParam,guid,pVarVal) (This)->lpVtbl->SetParamCustData(This,indexFunc,indexParam,guid,pVarVal)
+#define ICreateTypeInfo2_SetVarCustData(This,index,guid,pVarVal) (This)->lpVtbl->SetVarCustData(This,index,guid,pVarVal)
+#define ICreateTypeInfo2_SetImplTypeCustData(This,index,guid,pVarVal) (This)->lpVtbl->SetImplTypeCustData(This,index,guid,pVarVal)
+#define ICreateTypeInfo2_SetHelpStringContext(This,dwHelpStringContext) (This)->lpVtbl->SetHelpStringContext(This,dwHelpStringContext)
+#define ICreateTypeInfo2_SetFuncHelpStringContext(This,index,dwHelpStringContext) (This)->lpVtbl->SetFuncHelpStringContext(This,index,dwHelpStringContext)
+#define ICreateTypeInfo2_SetVarHelpStringContext(This,index,dwHelpStringContext) (This)->lpVtbl->SetVarHelpStringContext(This,index,dwHelpStringContext)
+#define ICreateTypeInfo2_Invalidate(This) (This)->lpVtbl->Invalidate(This)
+#define ICreateTypeInfo2_SetName(This,szName) (This)->lpVtbl->SetName(This,szName)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_DeleteFuncDesc_Proxy(
+    ICreateTypeInfo2* This,
+    UINT index);
+void __RPC_STUB ICreateTypeInfo2_DeleteFuncDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_DeleteFuncDescByMemId_Proxy(
+    ICreateTypeInfo2* This,
+    MEMBERID memid,
+    INVOKEKIND invKind);
+void __RPC_STUB ICreateTypeInfo2_DeleteFuncDescByMemId_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_DeleteVarDesc_Proxy(
+    ICreateTypeInfo2* This,
+    UINT index);
+void __RPC_STUB ICreateTypeInfo2_DeleteVarDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_DeleteVarDescByMemId_Proxy(
+    ICreateTypeInfo2* This,
+    MEMBERID memid);
+void __RPC_STUB ICreateTypeInfo2_DeleteVarDescByMemId_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_DeleteImplType_Proxy(
+    ICreateTypeInfo2* This,
+    UINT index);
+void __RPC_STUB ICreateTypeInfo2_DeleteImplType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_SetCustData_Proxy(
+    ICreateTypeInfo2* This,
+    REFGUID guid,
+    VARIANT *pVarVal);
+void __RPC_STUB ICreateTypeInfo2_SetCustData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_SetFuncCustData_Proxy(
+    ICreateTypeInfo2* This,
+    UINT index,
+    REFGUID guid,
+    VARIANT *pVarVal);
+void __RPC_STUB ICreateTypeInfo2_SetFuncCustData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_SetParamCustData_Proxy(
+    ICreateTypeInfo2* This,
+    UINT indexFunc,
+    UINT indexParam,
+    REFGUID guid,
+    VARIANT *pVarVal);
+void __RPC_STUB ICreateTypeInfo2_SetParamCustData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_SetVarCustData_Proxy(
+    ICreateTypeInfo2* This,
+    UINT index,
+    REFGUID guid,
+    VARIANT *pVarVal);
+void __RPC_STUB ICreateTypeInfo2_SetVarCustData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_SetImplTypeCustData_Proxy(
+    ICreateTypeInfo2* This,
+    UINT index,
+    REFGUID guid,
+    VARIANT *pVarVal);
+void __RPC_STUB ICreateTypeInfo2_SetImplTypeCustData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_SetHelpStringContext_Proxy(
+    ICreateTypeInfo2* This,
+    ULONG dwHelpStringContext);
+void __RPC_STUB ICreateTypeInfo2_SetHelpStringContext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_SetFuncHelpStringContext_Proxy(
+    ICreateTypeInfo2* This,
+    UINT index,
+    ULONG dwHelpStringContext);
+void __RPC_STUB ICreateTypeInfo2_SetFuncHelpStringContext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_SetVarHelpStringContext_Proxy(
+    ICreateTypeInfo2* This,
+    UINT index,
+    ULONG dwHelpStringContext);
+void __RPC_STUB ICreateTypeInfo2_SetVarHelpStringContext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_Invalidate_Proxy(
+    ICreateTypeInfo2* This);
+void __RPC_STUB ICreateTypeInfo2_Invalidate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_SetName_Proxy(
+    ICreateTypeInfo2* This,
+    LPOLESTR szName);
+void __RPC_STUB ICreateTypeInfo2_SetName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ICreateTypeInfo2_INTERFACE_DEFINED__ */
+
+#ifndef __ICreateTypeLib_FWD_DEFINED__
+#define __ICreateTypeLib_FWD_DEFINED__
+typedef interface ICreateTypeLib ICreateTypeLib;
+#endif
+
+typedef ICreateTypeLib *LPCREATETYPELIB;
+/*****************************************************************************
+ * ICreateTypeLib interface
+ */
+#ifndef __ICreateTypeLib_INTERFACE_DEFINED__
+#define __ICreateTypeLib_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ICreateTypeLib, 0x00020406, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ICreateTypeLib : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE CreateTypeInfo(
+        LPOLESTR szName,
+        TYPEKIND tkind,
+        ICreateTypeInfo **ppCTInfo) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetName(
+        LPOLESTR szName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetVersion(
+        WORD wMajorVerNum,
+        WORD wMinorVerNum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetGuid(
+        REFGUID guid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetDocString(
+        LPOLESTR szDoc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetHelpFileName(
+        LPOLESTR szHelpFileName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetHelpContext(
+        DWORD dwHelpContext) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetLcid(
+        LCID lcid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetLibFlags(
+        UINT uLibFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SaveAllChanges(
+        ) = 0;
+
+};
+#else
+typedef struct ICreateTypeLibVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ICreateTypeLib* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ICreateTypeLib* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ICreateTypeLib* This);
+
+    /*** ICreateTypeLib methods ***/
+    HRESULT (STDMETHODCALLTYPE *CreateTypeInfo)(
+        ICreateTypeLib* This,
+        LPOLESTR szName,
+        TYPEKIND tkind,
+        ICreateTypeInfo **ppCTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *SetName)(
+        ICreateTypeLib* This,
+        LPOLESTR szName);
+
+    HRESULT (STDMETHODCALLTYPE *SetVersion)(
+        ICreateTypeLib* This,
+        WORD wMajorVerNum,
+        WORD wMinorVerNum);
+
+    HRESULT (STDMETHODCALLTYPE *SetGuid)(
+        ICreateTypeLib* This,
+        REFGUID guid);
+
+    HRESULT (STDMETHODCALLTYPE *SetDocString)(
+        ICreateTypeLib* This,
+        LPOLESTR szDoc);
+
+    HRESULT (STDMETHODCALLTYPE *SetHelpFileName)(
+        ICreateTypeLib* This,
+        LPOLESTR szHelpFileName);
+
+    HRESULT (STDMETHODCALLTYPE *SetHelpContext)(
+        ICreateTypeLib* This,
+        DWORD dwHelpContext);
+
+    HRESULT (STDMETHODCALLTYPE *SetLcid)(
+        ICreateTypeLib* This,
+        LCID lcid);
+
+    HRESULT (STDMETHODCALLTYPE *SetLibFlags)(
+        ICreateTypeLib* This,
+        UINT uLibFlags);
+
+    HRESULT (STDMETHODCALLTYPE *SaveAllChanges)(
+        ICreateTypeLib* This);
+
+    END_INTERFACE
+} ICreateTypeLibVtbl;
+interface ICreateTypeLib {
+    CONST_VTBL ICreateTypeLibVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ICreateTypeLib_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ICreateTypeLib_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ICreateTypeLib_Release(This) (This)->lpVtbl->Release(This)
+/*** ICreateTypeLib methods ***/
+#define ICreateTypeLib_CreateTypeInfo(This,szName,tkind,ppCTInfo) (This)->lpVtbl->CreateTypeInfo(This,szName,tkind,ppCTInfo)
+#define ICreateTypeLib_SetName(This,szName) (This)->lpVtbl->SetName(This,szName)
+#define ICreateTypeLib_SetVersion(This,wMajorVerNum,wMinorVerNum) (This)->lpVtbl->SetVersion(This,wMajorVerNum,wMinorVerNum)
+#define ICreateTypeLib_SetGuid(This,guid) (This)->lpVtbl->SetGuid(This,guid)
+#define ICreateTypeLib_SetDocString(This,szDoc) (This)->lpVtbl->SetDocString(This,szDoc)
+#define ICreateTypeLib_SetHelpFileName(This,szHelpFileName) (This)->lpVtbl->SetHelpFileName(This,szHelpFileName)
+#define ICreateTypeLib_SetHelpContext(This,dwHelpContext) (This)->lpVtbl->SetHelpContext(This,dwHelpContext)
+#define ICreateTypeLib_SetLcid(This,lcid) (This)->lpVtbl->SetLcid(This,lcid)
+#define ICreateTypeLib_SetLibFlags(This,uLibFlags) (This)->lpVtbl->SetLibFlags(This,uLibFlags)
+#define ICreateTypeLib_SaveAllChanges(This) (This)->lpVtbl->SaveAllChanges(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_CreateTypeInfo_Proxy(
+    ICreateTypeLib* This,
+    LPOLESTR szName,
+    TYPEKIND tkind,
+    ICreateTypeInfo **ppCTInfo);
+void __RPC_STUB ICreateTypeLib_CreateTypeInfo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_SetName_Proxy(
+    ICreateTypeLib* This,
+    LPOLESTR szName);
+void __RPC_STUB ICreateTypeLib_SetName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_SetVersion_Proxy(
+    ICreateTypeLib* This,
+    WORD wMajorVerNum,
+    WORD wMinorVerNum);
+void __RPC_STUB ICreateTypeLib_SetVersion_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_SetGuid_Proxy(
+    ICreateTypeLib* This,
+    REFGUID guid);
+void __RPC_STUB ICreateTypeLib_SetGuid_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_SetDocString_Proxy(
+    ICreateTypeLib* This,
+    LPOLESTR szDoc);
+void __RPC_STUB ICreateTypeLib_SetDocString_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_SetHelpFileName_Proxy(
+    ICreateTypeLib* This,
+    LPOLESTR szHelpFileName);
+void __RPC_STUB ICreateTypeLib_SetHelpFileName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_SetHelpContext_Proxy(
+    ICreateTypeLib* This,
+    DWORD dwHelpContext);
+void __RPC_STUB ICreateTypeLib_SetHelpContext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_SetLcid_Proxy(
+    ICreateTypeLib* This,
+    LCID lcid);
+void __RPC_STUB ICreateTypeLib_SetLcid_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_SetLibFlags_Proxy(
+    ICreateTypeLib* This,
+    UINT uLibFlags);
+void __RPC_STUB ICreateTypeLib_SetLibFlags_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_SaveAllChanges_Proxy(
+    ICreateTypeLib* This);
+void __RPC_STUB ICreateTypeLib_SaveAllChanges_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ICreateTypeLib_INTERFACE_DEFINED__ */
+
+#ifndef __ICreateTypeLib2_FWD_DEFINED__
+#define __ICreateTypeLib2_FWD_DEFINED__
+typedef interface ICreateTypeLib2 ICreateTypeLib2;
+#endif
+
+typedef ICreateTypeLib2 *LPCREATETYPELIB2;
+/*****************************************************************************
+ * ICreateTypeLib2 interface
+ */
+#ifndef __ICreateTypeLib2_INTERFACE_DEFINED__
+#define __ICreateTypeLib2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ICreateTypeLib2, 0x0002040f, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ICreateTypeLib2 : public ICreateTypeLib
+{
+    virtual HRESULT STDMETHODCALLTYPE DeleteTypeInfo(
+        LPOLESTR szName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetCustData(
+        REFGUID guid,
+        VARIANT *pVarVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetHelpStringContext(
+        ULONG dwHelpStringContext) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetHelpStringDll(
+        LPOLESTR szFileName) = 0;
+
+};
+#else
+typedef struct ICreateTypeLib2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ICreateTypeLib2* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ICreateTypeLib2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ICreateTypeLib2* This);
+
+    /*** ICreateTypeLib methods ***/
+    HRESULT (STDMETHODCALLTYPE *CreateTypeInfo)(
+        ICreateTypeLib2* This,
+        LPOLESTR szName,
+        TYPEKIND tkind,
+        ICreateTypeInfo **ppCTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *SetName)(
+        ICreateTypeLib2* This,
+        LPOLESTR szName);
+
+    HRESULT (STDMETHODCALLTYPE *SetVersion)(
+        ICreateTypeLib2* This,
+        WORD wMajorVerNum,
+        WORD wMinorVerNum);
+
+    HRESULT (STDMETHODCALLTYPE *SetGuid)(
+        ICreateTypeLib2* This,
+        REFGUID guid);
+
+    HRESULT (STDMETHODCALLTYPE *SetDocString)(
+        ICreateTypeLib2* This,
+        LPOLESTR szDoc);
+
+    HRESULT (STDMETHODCALLTYPE *SetHelpFileName)(
+        ICreateTypeLib2* This,
+        LPOLESTR szHelpFileName);
+
+    HRESULT (STDMETHODCALLTYPE *SetHelpContext)(
+        ICreateTypeLib2* This,
+        DWORD dwHelpContext);
+
+    HRESULT (STDMETHODCALLTYPE *SetLcid)(
+        ICreateTypeLib2* This,
+        LCID lcid);
+
+    HRESULT (STDMETHODCALLTYPE *SetLibFlags)(
+        ICreateTypeLib2* This,
+        UINT uLibFlags);
+
+    HRESULT (STDMETHODCALLTYPE *SaveAllChanges)(
+        ICreateTypeLib2* This);
+
+    /*** ICreateTypeLib2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *DeleteTypeInfo)(
+        ICreateTypeLib2* This,
+        LPOLESTR szName);
+
+    HRESULT (STDMETHODCALLTYPE *SetCustData)(
+        ICreateTypeLib2* This,
+        REFGUID guid,
+        VARIANT *pVarVal);
+
+    HRESULT (STDMETHODCALLTYPE *SetHelpStringContext)(
+        ICreateTypeLib2* This,
+        ULONG dwHelpStringContext);
+
+    HRESULT (STDMETHODCALLTYPE *SetHelpStringDll)(
+        ICreateTypeLib2* This,
+        LPOLESTR szFileName);
+
+    END_INTERFACE
+} ICreateTypeLib2Vtbl;
+interface ICreateTypeLib2 {
+    CONST_VTBL ICreateTypeLib2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ICreateTypeLib2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ICreateTypeLib2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ICreateTypeLib2_Release(This) (This)->lpVtbl->Release(This)
+/*** ICreateTypeLib methods ***/
+#define ICreateTypeLib2_CreateTypeInfo(This,szName,tkind,ppCTInfo) (This)->lpVtbl->CreateTypeInfo(This,szName,tkind,ppCTInfo)
+#define ICreateTypeLib2_SetName(This,szName) (This)->lpVtbl->SetName(This,szName)
+#define ICreateTypeLib2_SetVersion(This,wMajorVerNum,wMinorVerNum) (This)->lpVtbl->SetVersion(This,wMajorVerNum,wMinorVerNum)
+#define ICreateTypeLib2_SetGuid(This,guid) (This)->lpVtbl->SetGuid(This,guid)
+#define ICreateTypeLib2_SetDocString(This,szDoc) (This)->lpVtbl->SetDocString(This,szDoc)
+#define ICreateTypeLib2_SetHelpFileName(This,szHelpFileName) (This)->lpVtbl->SetHelpFileName(This,szHelpFileName)
+#define ICreateTypeLib2_SetHelpContext(This,dwHelpContext) (This)->lpVtbl->SetHelpContext(This,dwHelpContext)
+#define ICreateTypeLib2_SetLcid(This,lcid) (This)->lpVtbl->SetLcid(This,lcid)
+#define ICreateTypeLib2_SetLibFlags(This,uLibFlags) (This)->lpVtbl->SetLibFlags(This,uLibFlags)
+#define ICreateTypeLib2_SaveAllChanges(This) (This)->lpVtbl->SaveAllChanges(This)
+/*** ICreateTypeLib2 methods ***/
+#define ICreateTypeLib2_DeleteTypeInfo(This,szName) (This)->lpVtbl->DeleteTypeInfo(This,szName)
+#define ICreateTypeLib2_SetCustData(This,guid,pVarVal) (This)->lpVtbl->SetCustData(This,guid,pVarVal)
+#define ICreateTypeLib2_SetHelpStringContext(This,dwHelpStringContext) (This)->lpVtbl->SetHelpStringContext(This,dwHelpStringContext)
+#define ICreateTypeLib2_SetHelpStringDll(This,szFileName) (This)->lpVtbl->SetHelpStringDll(This,szFileName)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib2_DeleteTypeInfo_Proxy(
+    ICreateTypeLib2* This,
+    LPOLESTR szName);
+void __RPC_STUB ICreateTypeLib2_DeleteTypeInfo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeLib2_SetCustData_Proxy(
+    ICreateTypeLib2* This,
+    REFGUID guid,
+    VARIANT *pVarVal);
+void __RPC_STUB ICreateTypeLib2_SetCustData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeLib2_SetHelpStringContext_Proxy(
+    ICreateTypeLib2* This,
+    ULONG dwHelpStringContext);
+void __RPC_STUB ICreateTypeLib2_SetHelpStringContext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICreateTypeLib2_SetHelpStringDll_Proxy(
+    ICreateTypeLib2* This,
+    LPOLESTR szFileName);
+void __RPC_STUB ICreateTypeLib2_SetHelpStringDll_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ICreateTypeLib2_INTERFACE_DEFINED__ */
+
+#ifndef __IErrorLog_FWD_DEFINED__
+#define __IErrorLog_FWD_DEFINED__
+typedef interface IErrorLog IErrorLog;
+#endif
+
+typedef IErrorLog *LPERRORLOG;
+/*****************************************************************************
+ * IErrorLog interface
+ */
+#ifndef __IErrorLog_INTERFACE_DEFINED__
+#define __IErrorLog_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IErrorLog, 0x3127ca40, 0x446e, 0x11ce, 0x81,0x35, 0x00,0xaa,0x00,0x4b,0xb8,0x51);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IErrorLog : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE AddError(
+        LPCOLESTR pszPropName,
+        EXCEPINFO *pExcepInfo) = 0;
+
+};
+#else
+typedef struct IErrorLogVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IErrorLog* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IErrorLog* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IErrorLog* This);
+
+    /*** IErrorLog methods ***/
+    HRESULT (STDMETHODCALLTYPE *AddError)(
+        IErrorLog* This,
+        LPCOLESTR pszPropName,
+        EXCEPINFO *pExcepInfo);
+
+    END_INTERFACE
+} IErrorLogVtbl;
+interface IErrorLog {
+    CONST_VTBL IErrorLogVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IErrorLog_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IErrorLog_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IErrorLog_Release(This) (This)->lpVtbl->Release(This)
+/*** IErrorLog methods ***/
+#define IErrorLog_AddError(This,pszPropName,pExcepInfo) (This)->lpVtbl->AddError(This,pszPropName,pExcepInfo)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IErrorLog_AddError_Proxy(
+    IErrorLog* This,
+    LPCOLESTR pszPropName,
+    EXCEPINFO *pExcepInfo);
+void __RPC_STUB IErrorLog_AddError_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IErrorLog_INTERFACE_DEFINED__ */
+
+#ifndef __IPropertyBag_FWD_DEFINED__
+#define __IPropertyBag_FWD_DEFINED__
+typedef interface IPropertyBag IPropertyBag;
+#endif
+
+typedef IPropertyBag *LPPROPERTYBAG;
+/*****************************************************************************
+ * IPropertyBag interface
+ */
+#ifndef __IPropertyBag_INTERFACE_DEFINED__
+#define __IPropertyBag_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IPropertyBag, 0x55272a00, 0x42cb, 0x11ce, 0x81,0x35, 0x00,0xaa,0x00,0x4b,0xb8,0x51);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IPropertyBag : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Read(
+        LPCOLESTR pszPropName,
+        VARIANT *pVar,
+        IErrorLog *pErrorLog) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Write(
+        LPCOLESTR pszPropName,
+        VARIANT *pVar) = 0;
+
+};
+#else
+typedef struct IPropertyBagVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IPropertyBag* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IPropertyBag* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IPropertyBag* This);
+
+    /*** IPropertyBag methods ***/
+    HRESULT (STDMETHODCALLTYPE *Read)(
+        IPropertyBag* This,
+        LPCOLESTR pszPropName,
+        VARIANT *pVar,
+        IErrorLog *pErrorLog);
+
+    HRESULT (STDMETHODCALLTYPE *Write)(
+        IPropertyBag* This,
+        LPCOLESTR pszPropName,
+        VARIANT *pVar);
+
+    END_INTERFACE
+} IPropertyBagVtbl;
+interface IPropertyBag {
+    CONST_VTBL IPropertyBagVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IPropertyBag_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IPropertyBag_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IPropertyBag_Release(This) (This)->lpVtbl->Release(This)
+/*** IPropertyBag methods ***/
+#define IPropertyBag_Read(This,pszPropName,pVar,pErrorLog) (This)->lpVtbl->Read(This,pszPropName,pVar,pErrorLog)
+#define IPropertyBag_Write(This,pszPropName,pVar) (This)->lpVtbl->Write(This,pszPropName,pVar)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IPropertyBag_RemoteRead_Proxy(
+    IPropertyBag* This,
+    LPCOLESTR pszPropName,
+    VARIANT *pVar,
+    IErrorLog *pErrorLog,
+    DWORD varType,
+    IUnknown *pUnkObj);
+void __RPC_STUB IPropertyBag_RemoteRead_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPropertyBag_Write_Proxy(
+    IPropertyBag* This,
+    LPCOLESTR pszPropName,
+    VARIANT *pVar);
+void __RPC_STUB IPropertyBag_Write_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IPropertyBag_Read_Proxy(
+    IPropertyBag* This,
+    LPCOLESTR pszPropName,
+    VARIANT *pVar,
+    IErrorLog *pErrorLog);
+HRESULT __RPC_STUB IPropertyBag_Read_Stub(
+    IPropertyBag* This,
+    LPCOLESTR pszPropName,
+    VARIANT *pVar,
+    IErrorLog *pErrorLog,
+    DWORD varType,
+    IUnknown *pUnkObj);
+
+#endif  /* __IPropertyBag_INTERFACE_DEFINED__ */
+
+/* Begin additional prototypes for all interfaces */
+
+ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
+unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
+unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
+void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
+ULONG           __RPC_USER VARIANT_UserSize     (ULONG *, ULONG, VARIANT *);
+unsigned char * __RPC_USER VARIANT_UserMarshal  (ULONG *, unsigned char *, VARIANT *);
+unsigned char * __RPC_USER VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *);
+void            __RPC_USER VARIANT_UserFree     (ULONG *, VARIANT *);
+ULONG           __RPC_USER CLEANLOCALSTORAGE_UserSize     (ULONG *, ULONG, CLEANLOCALSTORAGE *);
+unsigned char * __RPC_USER CLEANLOCALSTORAGE_UserMarshal  (ULONG *, unsigned char *, CLEANLOCALSTORAGE *);
+unsigned char * __RPC_USER CLEANLOCALSTORAGE_UserUnmarshal(ULONG *, unsigned char *, CLEANLOCALSTORAGE *);
+void            __RPC_USER CLEANLOCALSTORAGE_UserFree     (ULONG *, CLEANLOCALSTORAGE *);
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WIDL_OAIDL_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/oaidl.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/oaidl.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/oaidl.idl	(revision 16410)
@@ -0,0 +1,1630 @@
+/*
+ * Copyright 2002 Ove Kaaven
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef DO_NO_IMPORTS
+import "objidl.idl";
+#endif
+
+interface IDispatch;
+interface ITypeInfo;
+interface ITypeLib;
+interface IRecordInfo;
+
+[
+  version(1.0),
+  pointer_default(unique)
+]
+interface IOleAutomationTypes
+{
+
+typedef CY CURRENCY;
+
+/* Safe Array */
+
+typedef struct tagSAFEARRAYBOUND {
+  ULONG cElements;
+  LONG lLbound;
+} SAFEARRAYBOUND, *LPSAFEARRAYBOUND;
+
+typedef [unique] struct _wireVARIANT *wireVARIANT;
+typedef [unique] struct _wireBRECORD *wireBRECORD;
+
+typedef struct _wireSAFEARR_BSTR {
+  ULONG Size;
+  [size_is(Size), ref] wireBSTR *aBstr;
+} SAFEARR_BSTR;
+
+typedef struct _wireSAFEARR_UNKNOWN {
+  ULONG Size;
+  [size_is(Size), ref] IUnknown **apUnknown;
+} SAFEARR_UNKNOWN;
+
+typedef struct _wireSAFEARR_DISPATCH {
+  ULONG Size;
+  [size_is(Size), ref] IDispatch **apDispatch;
+} SAFEARR_DISPATCH;
+
+typedef struct _wireSAFEARR_VARIANT {
+  ULONG Size;
+  [size_is(Size), ref] wireVARIANT *aVariant;
+} SAFEARR_VARIANT;
+
+typedef struct _wireSAFEARR_BRECORD {
+  ULONG Size;
+  [size_is(Size), ref] wireBRECORD *aRecord;
+} SAFEARR_BRECORD;
+
+typedef struct _wireSAFEARR_HAVEIID {
+  ULONG Size;
+  [size_is(Size), ref] IUnknown **apUnknown;
+  IID iid;
+} SAFEARR_HAVEIID;
+
+typedef [v1_enum] enum tagSF_TYPE {
+  SF_ERROR    = VT_ERROR,
+  SF_I1       = VT_I1,
+  SF_I2       = VT_I2,
+  SF_I4       = VT_I4,
+  SF_I8       = VT_I8,
+  SF_BSTR     = VT_BSTR,
+  SF_UNKNOWN  = VT_UNKNOWN,
+  SF_DISPATCH = VT_DISPATCH,
+  SF_VARIANT  = VT_VARIANT,
+  SF_RECORD   = VT_RECORD,
+  SF_HAVEIID  = VT_UNKNOWN|VT_RESERVED,
+} SF_TYPE;
+
+typedef union _wireSAFEARRAY_UNION switch(ULONG sfType) u {
+  case SF_BSTR:     SAFEARR_BSTR BstrStr;
+  case SF_UNKNOWN:  SAFEARR_UNKNOWN UnknownStr;
+  case SF_DISPATCH: SAFEARR_DISPATCH DispatchStr;
+  case SF_VARIANT:  SAFEARR_VARIANT VariantStr;
+  case SF_RECORD:   SAFEARR_BRECORD RecordStr;
+  case SF_HAVEIID:  SAFEARR_HAVEIID HaveIidStr;
+  case SF_I1:       BYTE_SIZEDARR ByteStr;
+  case SF_I2:       WORD_SIZEDARR WordStr;
+  case SF_I4:       DWORD_SIZEDARR LongStr;
+  case SF_I8:       HYPER_SIZEDARR HyperStr;
+} SAFEARRAYUNION;
+
+typedef [unique] struct _wireSAFEARRAY {
+  USHORT cDims;
+  USHORT fFeatures;
+  ULONG cbElements;
+  ULONG cLocks;
+  SAFEARRAYUNION uArrayStructs;
+  [size_is(cDims)] SAFEARRAYBOUND rgsabound[];
+} *wireSAFEARRAY;
+
+typedef [unique] wireSAFEARRAY *wirePSAFEARRAY;
+
+typedef struct tagSAFEARRAY {
+  USHORT cDims;
+  USHORT fFeatures;
+  ULONG cbElements;
+  ULONG cLocks;
+  PVOID pvData;
+  SAFEARRAYBOUND rgsabound[];
+} SAFEARRAY;
+
+typedef [wire_marshal(wirePSAFEARRAY)] SAFEARRAY *LPSAFEARRAY;
+
+const USHORT FADF_AUTO        = 0x0001;
+const USHORT FADF_STATIC      = 0x0002;
+const USHORT FADF_EMBEDDED    = 0x0004;
+const USHORT FADF_FIXEDSIZE   = 0x0010;
+const USHORT FADF_RECORD      = 0x0020;
+const USHORT FADF_HAVEIID     = 0x0040;
+const USHORT FADF_HAVEVARTYPE = 0x0080;
+const USHORT FADF_BSTR        = 0x0100;
+const USHORT FADF_UNKNOWN     = 0x0200;
+const USHORT FADF_DISPATCH    = 0x0400;
+const USHORT FADF_VARIANT     = 0x0800;
+const USHORT FADF_RESERVED    = 0xF008;
+/* Undocumented flags */
+const USHORT FADF_DATADELETED  = 0x1000; /* Data in a vector has been deleted */
+const USHORT FADF_CREATEVECTOR = 0x2000; /* This array is a vector */
+
+/* Variant */
+
+cpp_quote("#if (__STDC__ && !defined(_FORCENAMELESSUNION)) || defined(NONAMELESSUNION)")
+cpp_quote("#define __VARIANT_NAME_1 n1")
+cpp_quote("#define __VARIANT_NAME_2 n2")
+cpp_quote("#define __VARIANT_NAME_3 n3")
+cpp_quote("#define __VARIANT_NAME_4 brecVal")
+cpp_quote("#else")
+cpp_quote("#define __tagVARIANT")
+cpp_quote("#define __VARIANT_NAME_1")
+cpp_quote("#define __VARIANT_NAME_2")
+cpp_quote("#define __VARIANT_NAME_3")
+cpp_quote("#define __tagBRECORD")
+cpp_quote("#define __VARIANT_NAME_4")
+cpp_quote("#endif")
+
+typedef [wire_marshal(wireVARIANT)] struct tagVARIANT VARIANT;
+
+struct tagVARIANT {
+  union {
+    struct __tagVARIANT {
+      VARTYPE vt;
+      WORD wReserved1;
+      WORD wReserved2;
+      WORD wReserved3;
+      union {
+        signed char cVal;
+        USHORT uiVal;
+        ULONG ulVal;
+        INT intVal;
+        UINT uintVal;
+        BYTE bVal;
+        SHORT iVal;
+        LONG lVal;
+        FLOAT fltVal;
+        DOUBLE dblVal;
+        VARIANT_BOOL boolVal;
+#if 0 /* illegal in C++ */
+        _VARIANT_BOOL bool;
+#endif
+        SCODE scode;
+        DATE date;
+        BSTR bstrVal;
+        CY cyVal;
+        IUnknown *punkVal;
+        IDispatch *pdispVal;
+        SAFEARRAY *parray;
+        LONGLONG llVal;
+        ULONGLONG ullVal;
+        signed char *pcVal;
+        USHORT *puiVal;
+        ULONG *pulVal;
+        INT *pintVal;
+        UINT *puintVal;
+        BYTE *pbVal;
+        SHORT *piVal;
+        LONG *plVal;
+        FLOAT *pfltVal;
+        DOUBLE *pdblVal;
+        VARIANT_BOOL *pboolVal;
+#if 0
+        _VARIANT_BOOL *pbool;
+#endif
+        SCODE *pscode;
+        DATE *pdate;
+        BSTR *pbstrVal;
+        VARIANT *pvarVal;
+        PVOID byref;
+        CY *pcyVal;
+        DECIMAL *pdecVal;
+        IUnknown **ppunkVal;
+        IDispatch **ppdispVal;
+        SAFEARRAY **pparray;
+        LONGLONG *pllVal;
+        ULONGLONG *pullVal;
+        struct __tagBRECORD {
+          PVOID pvRecord;
+          IRecordInfo *pRecInfo;
+        } __VARIANT_NAME_4;
+      } __VARIANT_NAME_3;
+    } __VARIANT_NAME_2;
+
+    DECIMAL decVal;
+  } __VARIANT_NAME_1;
+};
+
+typedef VARIANT *LPVARIANT;
+typedef VARIANT VARIANTARG;
+typedef VARIANTARG *LPVARIANTARG;
+
+struct _wireBRECORD {
+  ULONG fFlags;
+  ULONG clSize;
+  IRecordInfo *pRecInfo;
+  [size_is(clSize)] byte *pRecord;
+};
+
+struct _wireVARIANT {
+  DWORD clSize;
+  DWORD rpcReserved;
+  USHORT vt;
+  USHORT wReserved1;
+  USHORT wReserved2;
+  USHORT wReserved3;
+  [switch_is(vt)] union {
+  [case(VT_EMPTY, VT_NULL)]    ;
+  [case(VT_I1)]                signed char cVal;
+  [case(VT_UI2)]               USHORT uiVal;
+  [case(VT_UI4)]               ULONG ulVal;
+  [case(VT_INT)]               INT intVal;
+  [case(VT_UINT)]              UINT uintVal;
+  [case(VT_UI1)]               BYTE bVal;
+  [case(VT_I2)]                SHORT iVal;
+  [case(VT_I4)]                LONG lVal;
+  [case(VT_R4)]                FLOAT fltVal;
+  [case(VT_R8)]                DOUBLE dblVal;
+  [case(VT_BOOL)]              VARIANT_BOOL boolVal;
+  [case(VT_ERROR)]             SCODE scode;
+  [case(VT_DATE)]              DATE date;
+  [case(VT_BSTR)]              wireBSTR bstrVal;
+  [case(VT_CY)]                CY cyVal;
+  [case(VT_DECIMAL)]           DECIMAL decVal;
+  [case(VT_UNKNOWN)]           IUnknown *punkVal;
+  [case(VT_DISPATCH)]          IDispatch *pdispVal;
+  [case(VT_ARRAY)]             wireSAFEARRAY parray;
+  [case(VT_I1|VT_BYREF)]       signed char *pcVal;
+  [case(VT_UI2|VT_BYREF)]      USHORT *puiVal;
+  [case(VT_UI4|VT_BYREF)]      ULONG *pulVal;
+  [case(VT_INT|VT_BYREF)]      INT *pintVal;
+  [case(VT_UINT|VT_BYREF)]     UINT *puintVal;
+  [case(VT_UI1|VT_BYREF)]      BYTE *pbVal;
+  [case(VT_I2|VT_BYREF)]       SHORT *piVal;
+  [case(VT_I4|VT_BYREF)]       LONG *plVal;
+  [case(VT_R4|VT_BYREF)]       FLOAT *pfltVal;
+  [case(VT_R8|VT_BYREF)]       DOUBLE *pdblVal;
+  [case(VT_BOOL|VT_BYREF)]     VARIANT_BOOL *pboolVal;
+  [case(VT_ERROR|VT_BYREF)]    SCODE *pscode;
+  [case(VT_DATE|VT_BYREF)]     DATE *pdate;
+  [case(VT_BSTR|VT_BYREF)]     wireBSTR *pbstrVal;
+  [case(VT_VARIANT|VT_BYREF)]  wireVARIANT *pvarVal;
+  [case(VT_CY|VT_BYREF)]       CY *pcyVal;
+  [case(VT_DECIMAL|VT_BYREF)]  DECIMAL *pdecVal;
+  [case(VT_UNKNOWN|VT_BYREF)]  IUnknown **ppunkVal;
+  [case(VT_DISPATCH|VT_BYREF)] IDispatch **ppdispVal;
+  [case(VT_ARRAY|VT_BYREF)]    wireSAFEARRAY *pparray;
+  [case(VT_RECORD, VT_RECORD|VT_BYREF)] wireBRECORD brecVal;
+  } DUMMYUNIONNAME;
+};
+
+/* Dispatch */
+
+typedef LONG DISPID;
+typedef DWORD HREFTYPE;
+typedef DISPID MEMBERID;
+
+typedef [v1_enum] enum tagTYPEKIND {
+  TKIND_ENUM = 0,
+  TKIND_RECORD,
+  TKIND_MODULE,
+  TKIND_INTERFACE,
+  TKIND_DISPATCH,
+  TKIND_COCLASS,
+  TKIND_ALIAS,
+  TKIND_UNION,
+  TKIND_MAX
+} TYPEKIND;
+
+typedef struct tagTYPEDESC {
+  [switch_is(vt)] union {
+  [case(VT_PTR, VT_SAFEARRAY)] struct tagTYPEDESC *lptdesc;
+  [case(VT_CARRAY)]            struct tagARRAYDESC *lpadesc;
+  [case(VT_USERDEFINED)]       HREFTYPE hreftype;
+  [default]                    ;
+  } DUMMYUNIONNAME;
+  VARTYPE vt;
+} TYPEDESC;
+
+typedef struct tagARRAYDESC {
+  TYPEDESC tdescElem;
+  USHORT cDims;
+  [size_is(cDims)] SAFEARRAYBOUND rgbounds[];
+} ARRAYDESC;
+
+typedef struct tagPARAMDESCEX {
+  ULONG cBytes;
+  VARIANTARG varDefaultValue;
+} PARAMDESCEX, *LPPARAMDESCEX;
+
+typedef struct tagPARAMDESC {
+  LPPARAMDESCEX pparamdescex;
+  USHORT wParamFlags;
+} PARAMDESC, *LPPARAMDESC;
+
+const USHORT PARAMFLAG_NONE         = 0x00;
+const USHORT PARAMFLAG_FIN          = 0x01;
+const USHORT PARAMFLAG_FOUT         = 0x02;
+const USHORT PARAMFLAG_FLCID        = 0x04;
+const USHORT PARAMFLAG_FRETVAL      = 0x08;
+const USHORT PARAMFLAG_FOPT         = 0x10;
+const USHORT PARAMFLAG_FHASDEFAULT  = 0x20;
+const USHORT PARAMFLAG_FHASCUSTDATA = 0x40;
+
+typedef struct tagIDLDESC {
+  ULONG dwReserved;
+  USHORT wIDLFlags;
+} IDLDESC, *LPIDLDESC;
+
+const USHORT IDLFLAG_NONE    = PARAMFLAG_NONE;
+const USHORT IDLFLAG_FIN     = PARAMFLAG_FIN;
+const USHORT IDLFLAG_FOUT    = PARAMFLAG_FOUT;
+const USHORT IDLFLAG_FLCID   = PARAMFLAG_FLCID;
+const USHORT IDLFLAG_FRETVAL = PARAMFLAG_FRETVAL;
+
+cpp_quote("#if 0") /* for IDL only */
+typedef struct tagELEMDESC {
+  TYPEDESC tdesc;
+  PARAMDESC paramdesc;
+} ELEMDESC;
+cpp_quote("#else") /* C/C++ defs */
+cpp_quote("typedef struct tagELEMDESC {")
+cpp_quote("  TYPEDESC tdesc;")
+cpp_quote("  union {")
+cpp_quote("    IDLDESC idldesc;")
+cpp_quote("    PARAMDESC paramdesc;")
+cpp_quote("  } DUMMYUNIONNAME;")
+cpp_quote("} ELEMDESC, *LPELEMDESC;")
+cpp_quote("#endif")
+
+typedef struct tagTYPEATTR {
+  GUID guid;
+  LCID lcid;
+  DWORD dwReserved;
+  MEMBERID memidConstructor;
+  MEMBERID memidDestructor;
+  LPOLESTR lpstrSchema;
+  ULONG cbSizeInstance;
+  TYPEKIND typekind;
+  WORD cFuncs;
+  WORD cVars;
+  WORD cImplTypes;
+  WORD cbSizeVft;
+  WORD cbAlignment;
+  WORD wTypeFlags;
+  WORD wMajorVerNum;
+  WORD wMinorVerNum;
+  TYPEDESC tdescAlias;
+  IDLDESC idldescType;
+} TYPEATTR, *LPTYPEATTR;
+
+typedef struct tagDISPPARAMS {
+  [size_is(cArgs)] VARIANTARG *rgvarg;
+  [size_is(cNamedArgs)] DISPID *rgdispidNamedArgs;
+  UINT cArgs;
+  UINT cNamedArgs;
+} DISPPARAMS;
+
+cpp_quote("#if 0") /* for IDL only */
+typedef struct tagEXCEPINFO {
+  WORD wCode;
+  WORD wReserved;
+  BSTR bstrSource;
+  BSTR bstrDescription;
+  BSTR bstrHelpFile;
+  DWORD dwHelpContext;
+  ULONG pvReserved;
+  ULONG pfnDeferredFillIn;
+  SCODE scode;
+} EXCEPINFO;
+cpp_quote("#else")
+cpp_quote("typedef struct tagEXCEPINFO {")
+cpp_quote("  WORD wCode;")
+cpp_quote("  WORD wReserved;")
+cpp_quote("  BSTR bstrSource;")
+cpp_quote("  BSTR bstrDescription;")
+cpp_quote("  BSTR bstrHelpFile;")
+cpp_quote("  DWORD dwHelpContext;")
+cpp_quote("  PVOID pvReserved;")
+cpp_quote("  HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *);")
+cpp_quote("  SCODE scode;")
+cpp_quote("} EXCEPINFO, *LPEXCEPINFO;")
+cpp_quote("#endif")
+
+typedef [v1_enum] enum tagCALLCONV {
+  CC_FASTCALL = 0,
+  CC_CDECL = 1,
+  CC_MSCPASCAL,
+  CC_PASCAL = CC_MSCPASCAL,
+  CC_MACPASCAL,
+  CC_STDCALL,
+  CC_FPFASTCALL,
+  CC_SYSCALL,
+  CC_MPWCDECL,
+  CC_MPWPASCAL,
+  CC_MAX
+} CALLCONV;
+
+typedef [v1_enum] enum tagFUNCKIND {
+  FUNC_VIRTUAL,
+  FUNC_PUREVIRTUAL,
+  FUNC_NONVIRTUAL,
+  FUNC_STATIC,
+  FUNC_DISPATCH
+} FUNCKIND;
+
+typedef [v1_enum] enum tagINVOKEKIND {
+  INVOKE_FUNC = 1,
+  INVOKE_PROPERTYGET = 2,
+  INVOKE_PROPERTYPUT = 4,
+  INVOKE_PROPERTYPUTREF = 8
+} INVOKEKIND;
+
+typedef struct tagFUNCDESC {
+  MEMBERID memid;
+  [size_is(cScodes)] SCODE *lprgscode;
+  [size_is(cParams)] ELEMDESC *lprgelemdescParam;
+  FUNCKIND funckind;
+  INVOKEKIND invkind;
+  CALLCONV callconv;
+  SHORT cParams;
+  SHORT cParamsOpt;
+  SHORT oVft;
+  SHORT cScodes;
+  ELEMDESC elemdescFunc;
+  WORD wFuncFlags;
+} FUNCDESC, *LPFUNCDESC;
+
+typedef [v1_enum] enum tagVARKIND {
+  VAR_PERINSTANCE,
+  VAR_STATIC,
+  VAR_CONST,
+  VAR_DISPATCH
+} VARKIND;
+
+const USHORT IMPLTYPEFLAG_FDEFAULT       = 0x1;
+const USHORT IMPLTYPEFLAG_FSOURCE        = 0x2;
+const USHORT IMPLTYPEFLAG_FRESTRICTED    = 0x4;
+const USHORT IMPLTYPEFLAG_FDEFAULTVTABLE = 0x8;
+
+typedef struct tagVARDESC {
+  MEMBERID memid;
+  LPOLESTR lpstrSchema;
+  [switch_is(varkind)] union {
+  [case(VAR_PERINSTANCE, VAR_DISPATCH, VAR_STATIC)] ULONG oInst;
+  [case(VAR_CONST)] VARIANT *lpvarValue;
+  } DUMMYUNIONNAME;
+  ELEMDESC elemdescVar;
+  WORD wVarFlags;
+  VARKIND varkind;
+} VARDESC, *LPVARDESC;
+
+typedef enum tagTYPEFLAGS {
+  TYPEFLAG_FAPPOBJECT     = 0x0001,
+  TYPEFLAG_FCANCREATE     = 0x0002,
+  TYPEFLAG_FLICENSED      = 0x0004,
+  TYPEFLAG_FPREDECLID     = 0x0008,
+  TYPEFLAG_FHIDDEN        = 0x0010,
+  TYPEFLAG_FCONTROL       = 0x0020,
+  TYPEFLAG_FDUAL          = 0x0040,
+  TYPEFLAG_FNONEXTENSIBLE = 0x0080,
+  TYPEFLAG_FOLEAUTOMATION = 0x0100,
+  TYPEFLAG_FRESTRICTED    = 0x0200,
+  TYPEFLAG_FAGGREGATABLE  = 0x0400,
+  TYPEFLAG_FREPLACEABLE   = 0x0800,
+  TYPEFLAG_FDISPATCHABLE  = 0x1000,
+  TYPEFLAG_FREVERSEBIND   = 0x2000,
+  TYPEFLAG_FPROXY         = 0x4000
+} TYPEFLAGS;
+
+typedef enum tagFUNCFLAGS {
+  FUNCFLAG_FRESTRICTED       = 0x0001,
+  FUNCFLAG_FSOURCE           = 0x0002,
+  FUNCFLAG_FBINDABLE         = 0x0004,
+  FUNCFLAG_FREQUESTEDIT      = 0x0008,
+  FUNCFLAG_FDISPLAYBIND      = 0x0010,
+  FUNCFLAG_FDEFAULTBIND      = 0x0020,
+  FUNCFLAG_FHIDDEN           = 0x0040,
+  FUNCFLAG_FUSESGETLASTERROR = 0x0080,
+  FUNCFLAG_FDEFAULTCOLLELEM  = 0x0100,
+  FUNCFLAG_FUIDEFAULT        = 0x0200,
+  FUNCFLAG_FNONBROWSABLE     = 0x0400,
+  FUNCFLAG_FREPLACEABLE      = 0x0800,
+  FUNCFLAG_FIMMEDIATEBIND    = 0x1000
+} FUNCFLAGS;
+
+typedef enum tagVARFLAGS {
+  VARFLAG_FREADONLY        = 0x0001,
+  VARFLAG_FSOURCE          = 0x0002,
+  VARFLAG_FBINDABLE        = 0x0004,
+  VARFLAG_FREQUESTEDIT     = 0x0008,
+  VARFLAG_FDISPLAYBIND     = 0x0010,
+  VARFLAG_FDEFAULTBIND     = 0x0020,
+  VARFLAG_FHIDDEN          = 0x0040,
+  VARFLAG_FRESTRICTED      = 0x0080,
+  VARFLAG_FDEFAULTCOLLELEM = 0x0100,
+  VARFLAG_FUIDEFAULT       = 0x0200,
+  VARFLAG_FNONBROWSABLE    = 0x0400,
+  VARFLAG_FREPLACEABLE     = 0x0800,
+  VARFLAG_FIMMEDIATEBIND   = 0x1000
+} VARFLAGS;
+
+typedef [wire_marshal(DWORD)] struct tagCLEANLOCALSTORAGE {
+  IUnknown *pInterface;
+  PVOID pStorage;
+  DWORD flags;
+} CLEANLOCALSTORAGE;
+
+typedef struct tagCUSTDATAITEM {
+  GUID guid;
+  VARIANTARG varValue;
+} CUSTDATAITEM, *LPCUSTDATAITEM;
+
+typedef struct tagCUSTDATA {
+  DWORD cCustData;
+  [size_is(cCustData)] LPCUSTDATAITEM prgCustData;
+} CUSTDATA, *LPCUSTDATA;
+
+} /* interface IOleAutomationTypes */
+
+/******************** INTERFACES ********************/
+
+[
+  object,
+  uuid(00020400-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface IDispatch : IUnknown
+{
+  typedef [unique] IDispatch *LPDISPATCH;
+
+  const DISPID DISPID_UNKNOWN     = -1;
+  const DISPID DISPID_VALUE       =  0;
+  const DISPID DISPID_PROPERTYPUT = -3;
+  const DISPID DISPID_NEWENUM     = -4;
+  const DISPID DISPID_EVALUATE    = -5;
+  const DISPID DISPID_CONSTRUCTOR = -6;
+  const DISPID DISPID_DESTRUCTOR  = -7;
+  const DISPID DISPID_COLLECT     = -8;
+
+  HRESULT GetTypeInfoCount(
+    [out] UINT *pctinfo);
+
+  HRESULT GetTypeInfo(
+    [in] UINT iTInfo,
+    [in] LCID lcid,
+    [out] ITypeInfo **ppTInfo);
+
+  HRESULT GetIDsOfNames(
+    [in] REFIID riid,
+    [in, size_is(cNames)] LPOLESTR *rgszNames,
+    [in] UINT cNames,
+    [in] LCID lcid,
+    [out, size_is(cNames)] DISPID *rgDispId);
+
+  [local]
+  HRESULT Invoke(
+    [in] DISPID dispIdMember,
+    [in] REFIID riid,
+    [in] LCID lcid,
+    [in] WORD wFlags,
+    [in, out] DISPPARAMS *pDispParams,
+    [out] VARIANT *pVarResult,
+    [out] EXCEPINFO *pExcepInfo,
+    [out] UINT *puArgErr);
+
+  [call_as(Invoke)]
+  HRESULT RemoteInvoke(
+    [in] DISPID dispIdMember,
+    [in] REFIID riid,
+    [in] LCID lcid,
+    [in] DWORD dwFlags,
+    [in] DISPPARAMS *pDispParams,
+    [out] VARIANT *pVarResult,
+    [out] EXCEPINFO *pExcepInfo,
+    [out] UINT *pArgErr,
+    [in] UINT cVarRef,
+    [in, size_is(cVarRef)] UINT *rgVarRefIdx,
+    [in, out, size_is(cVarRef)] VARIANTARG *rgVarRef);
+}
+
+[
+  object,
+  uuid(00020404-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface IEnumVARIANT : IUnknown
+{
+  typedef [unique] IEnumVARIANT *LPENUMVARIANT;
+
+  [local]
+  HRESULT Next(
+    [in] ULONG celt,
+    [out] VARIANT *rgVar,
+    [out] ULONG *pCeltFetched);
+
+  [call_as(Next)]
+  HRESULT RemoteNext(
+    [in] ULONG celt,
+    [out, size_is(celt), length_is(*pCeltFetched)]
+    VARIANT *rgVar,
+    [out] ULONG *pCeltFetched);
+
+  HRESULT Skip(
+    [in] ULONG celt);
+
+  HRESULT Reset();
+
+  HRESULT Clone(
+    [out] IEnumVARIANT **ppEnum);
+}
+
+[
+  object,
+  uuid(00020403-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface ITypeComp : IUnknown
+{
+  typedef [unique] ITypeComp *LPTYPECOMP;
+
+  typedef [v1_enum] enum tagDESCKIND {
+    DESCKIND_NONE = 0,
+    DESCKIND_FUNCDESC,
+    DESCKIND_VARDESC,
+    DESCKIND_TYPECOMP,
+    DESCKIND_IMPLICITAPPOBJ,
+    DESCKIND_MAX
+  } DESCKIND;
+
+  typedef union tagBINDPTR {
+    FUNCDESC *lpfuncdesc;
+    VARDESC *lpvardesc;
+    ITypeComp *lptcomp;
+  } BINDPTR, *LPBINDPTR;
+
+  [local]
+  HRESULT Bind(
+    [in] LPOLESTR szName,
+    [in] ULONG lHashVal,
+    [in] WORD wFlags,
+    [out] ITypeInfo **ppTInfo,
+    [out] DESCKIND *pDescKind,
+    [out] BINDPTR *pBindPtr);
+
+  [call_as(Bind)]
+  HRESULT RemoteBind(
+    [in] LPOLESTR szName,
+    [in] ULONG lHashVal,
+    [in] WORD wFlags,
+    [out] ITypeInfo **ppTInfo,
+    [out] DESCKIND *pDescKind,
+    [out] LPFUNCDESC *ppFuncDesc,
+    [out] LPVARDESC *ppVarDesc,
+    [out] ITypeComp **ppTypeComp,
+    [out] CLEANLOCALSTORAGE *pDummy);
+
+  [local]
+  HRESULT BindType(
+    [in] LPOLESTR szName,
+    [in] ULONG lHashVal,
+    [out] ITypeInfo **ppTInfo,
+    [out] ITypeComp **ppTComp);
+
+  [call_as(BindType)]
+  HRESULT RemoteBindType(
+    [in] LPOLESTR szName,
+    [in] ULONG lHashVal,
+    [out] ITypeInfo **ppTInfo);
+}
+
+[
+  object,
+  uuid(00020401-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface ITypeInfo : IUnknown
+{
+  typedef [unique] ITypeInfo *LPTYPEINFO;
+
+  [local]
+  HRESULT GetTypeAttr(
+    [out] TYPEATTR **ppTypeAttr);
+
+  [call_as(GetTypeAttr)]
+  HRESULT RemoteGetTypeAttr(
+    [out] LPTYPEATTR *ppTypeAttr,
+    [out] CLEANLOCALSTORAGE *pDummy);
+
+  HRESULT GetTypeComp(
+    [out] ITypeComp **ppTComp);
+
+  [local]
+  HRESULT GetFuncDesc(
+    [in] UINT index,
+    [out] FUNCDESC **ppFuncDesc);
+
+  [call_as(GetFuncDesc)]
+  HRESULT RemoteGetFuncDesc(
+    [in] UINT index,
+    [out] LPFUNCDESC *ppFuncDesc,
+    [out] CLEANLOCALSTORAGE *pDummy);
+
+  [local]
+  HRESULT GetVarDesc(
+    [in] UINT index,
+    [out] VARDESC **ppVarDesc);
+
+  [call_as(GetVarDesc)]
+  HRESULT RemoteGetVarDesc(
+    [in] UINT index,
+    [out] LPVARDESC *ppVarDesc,
+    [out] CLEANLOCALSTORAGE *pDummy);
+
+  [local]
+  HRESULT GetNames(
+    [in] MEMBERID memid,
+    [out, size_is(cMaxNames), length_is(*pcNames)] BSTR *rgBstrNames,
+    [in] UINT cMaxNames,
+    [out] UINT *pcNames);
+
+  [call_as(GetNames)]
+  HRESULT RemoteGetNames(
+    [in] MEMBERID memid,
+    [out, size_is(cMaxNames), length_is(*pcNames)] BSTR *rgBstrNames,
+    [in] UINT cMaxNames,
+    [out] UINT *pcNames);
+
+  HRESULT GetRefTypeOfImplType(
+    [in] UINT index,
+    [out] HREFTYPE *pRefType);
+
+  HRESULT GetImplTypeFlags(
+    [in] UINT index,
+    [out] INT *pImplTypeFlags);
+
+  [local]
+  HRESULT GetIDsOfNames(
+    [in, size_is(cNames)] LPOLESTR *rgszNames,
+    [in] UINT cNames,
+    [out, size_is(cNames)] MEMBERID *pMemId);
+
+  [call_as(GetIDsOfNames)]
+  HRESULT LocalGetIDsOfNames();
+
+  [local]
+  HRESULT Invoke(
+    [in] PVOID pvInstance,
+    [in] MEMBERID memid,
+    [in] WORD wFlags,
+    [in, out] DISPPARAMS *pDispParams,
+    [out] VARIANT *pVarResult,
+    [out] EXCEPINFO *pExcepInfo,
+    [out] UINT *puArgErr);
+
+  [call_as(Invoke)]
+  HRESULT LocalInvoke();
+
+  [local]
+  HRESULT GetDocumentation(
+    [in] MEMBERID memid,
+    [out] BSTR *pBstrName,
+    [out] BSTR *pBstrDocString,
+    [out] DWORD *pdwHelpContext,
+    [out] BSTR *pBstrHelpFile);
+
+  [call_as(GetDocumentation)]
+  HRESULT RemoteGetDocumentation(
+    [in] MEMBERID memid,
+    [in] DWORD refPtrFlags,
+    [out] BSTR *pBstrName,
+    [out] BSTR *pBstrDocString,
+    [out] DWORD *pdwHelpContext,
+    [out] BSTR *pBstrHelpFile);
+
+  [local]
+  HRESULT GetDllEntry(
+    [in] MEMBERID memid,
+    [in] INVOKEKIND invKind,
+    [out] BSTR *pBstrDllName,
+    [out] BSTR *pBstrName,
+    [out] WORD *pwOrdinal);
+
+  [call_as(GetDllEntry)]
+  HRESULT RemoteGetDllEntry(
+    [in] MEMBERID memid,
+    [in] INVOKEKIND invKind,
+    [in] DWORD refPtrFlags,
+    [out] BSTR *pBstrDllName,
+    [out] BSTR *pBstrName,
+    [out] WORD *pwOrdinal);
+
+  HRESULT GetRefTypeInfo(
+    [in] HREFTYPE hRefType,
+    [out] ITypeInfo **ppTInfo);
+
+  [local]
+  HRESULT AddressOfMember(
+    [in] MEMBERID memid,
+    [in] INVOKEKIND invKind,
+    [out] PVOID *ppv);
+
+  [call_as(AddressOfMember)]
+  HRESULT LocalAddressOfMember();
+
+  [local]
+  HRESULT CreateInstance(
+    [in] IUnknown *pUnkOuter,
+    [in] REFIID riid,
+    [out, iid_is(riid)] PVOID *ppvObj);
+
+  [call_as(CreateInstance)]
+  HRESULT RemoteCreateInstance(
+    [in] REFIID riid,
+    [out, iid_is(riid)] IUnknown **ppvObj);
+
+  HRESULT GetMops(
+    [in] MEMBERID memid,
+    [out] BSTR *pBstrMops);
+
+  [local]
+  HRESULT GetContainingTypeLib(
+    [out] ITypeLib **ppTLib,
+    [out] UINT *pIndex);
+
+  [call_as(GetContainingTypeLib)]
+  HRESULT RemoteGetContainingTypeLib(
+    [out] ITypeLib **ppTLib,
+    [out] UINT *pIndex);
+
+  [local]
+  void ReleaseTypeAttr(
+    [in] TYPEATTR *pTypeAttr);
+
+  [call_as(ReleaseTypeAttr)]
+  HRESULT LocalReleaseTypeAttr();
+
+  [local]
+  void ReleaseFuncDesc(
+    [in] FUNCDESC *pFuncDesc);
+
+  [call_as(ReleaseFuncDesc)]
+  HRESULT LocalReleaseFuncDesc();
+
+  [local]
+  void ReleaseVarDesc(
+    [in] VARDESC *pVarDesc);
+
+  [call_as(ReleaseVarDesc)]
+  HRESULT LocalReleaseVarDesc();
+}
+
+[
+  object,
+  uuid(00020412-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface ITypeInfo2 : ITypeInfo
+{
+  typedef [unique] ITypeInfo2 *LPTYPEINFO2;
+
+  HRESULT GetTypeKind(
+    [out] TYPEKIND *pTypeKind);
+
+  HRESULT GetTypeFlags(
+    [out] ULONG *pTypeFlags);
+
+  HRESULT GetFuncIndexOfMemId(
+    [in] MEMBERID memid,
+    [in] INVOKEKIND invKind,
+    [out] UINT *pFuncIndex);
+
+  HRESULT GetVarIndexOfMemId(
+    [in] MEMBERID memid,
+    [out] UINT *pVarIndex);
+
+  HRESULT GetCustData(
+    [in] REFGUID guid,
+    [out] VARIANT *pVarVal);
+
+  HRESULT GetFuncCustData(
+    [in] UINT index,
+    [in] REFGUID guid,
+    [out] VARIANT *pVarVal);
+
+  HRESULT GetParamCustData(
+    [in] UINT indexFunc,
+    [in] UINT indexParam,
+    [in] REFGUID guid,
+    [out] VARIANT *pVarVal);
+
+  HRESULT GetVarCustData(
+    [in] UINT index,
+    [in] REFGUID guid,
+    [out] VARIANT *pVarVal);
+
+  HRESULT GetImplTypeCustData(
+    [in] UINT index,
+    [in] REFGUID guid,
+    [out] VARIANT *pVarVal);
+
+  [local]
+  HRESULT GetDocumentation2(
+    [in] MEMBERID memid,
+    [in] LCID lcid,
+    [out] BSTR *pbstrHelpString,
+    [out] DWORD *pdwHelpStringContext,
+    [out] BSTR *pbstrHelpStringDll);
+
+  [call_as(GetDocumentation2)]
+  HRESULT RemoteGetDocumentation2(
+    [in] MEMBERID memid,
+    [in] LCID lcid,
+    [in] DWORD refPtrFlags,
+    [out] BSTR *pbstrHelpString,
+    [out] DWORD *pdwHelpStringContext,
+    [out] BSTR *pbstrHelpStringDll);
+
+  HRESULT GetAllCustData(
+    [out] CUSTDATA *pCustData);
+
+  HRESULT GetAllFuncCustData(
+    [in] UINT index,
+    [out] CUSTDATA *pCustData);
+
+  HRESULT GetAllParamCustData(
+    [in] UINT indexFunc,
+    [in] UINT indexParam,
+    [out] CUSTDATA *pCustData);
+
+  HRESULT GetAllVarCustData(
+    [in] UINT index,
+    [out] CUSTDATA *pCustData);
+
+  HRESULT GetAllImplTypeCustData(
+    [in] UINT index,
+    [out] CUSTDATA *pCustData);
+}
+
+[
+  object,
+  uuid(00020402-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface ITypeLib : IUnknown
+{
+  typedef [unique] ITypeLib *LPTYPELIB;
+
+  typedef [v1_enum] enum tagSYSKIND {
+    SYS_WIN16 = 0,
+    SYS_WIN32,
+    SYS_MAC
+  } SYSKIND;
+
+  typedef [v1_enum] enum tagLIBFLAGS {
+    LIBFLAG_FRESTRICTED   = 0x01,
+    LIBFLAG_FCONTROL      = 0x02,
+    LIBFLAG_FHIDDEN       = 0x04,
+    LIBFLAG_FHASDISKIMAGE = 0x08
+  } LIBFLAGS;
+
+  typedef struct tagTLIBATTR {
+    GUID guid;
+    LCID lcid;
+    SYSKIND syskind;
+    WORD wMajorVerNum;
+    WORD wMinorVerNum;
+    WORD wLibFlags;
+  } TLIBATTR, *LPTLIBATTR;
+
+  [local]
+  UINT GetTypeInfoCount();
+
+  [call_as(GetTypeInfoCount)]
+  HRESULT RemoteGetTypeInfoCount(
+    [out] UINT *pcTInfo);
+
+  HRESULT GetTypeInfo(
+    [in] UINT index,
+    [out] ITypeInfo **ppTInfo);
+
+  HRESULT GetTypeInfoType(
+    [in] UINT index,
+    [out] TYPEKIND *pTKind);
+
+  HRESULT GetTypeInfoOfGuid(
+    [in] REFGUID guid,
+    [out] ITypeInfo **ppTinfo);
+
+  [local]
+  HRESULT GetLibAttr(
+    [out] TLIBATTR **ppTLibAttr);
+
+  [call_as(GetLibAttr)]
+  HRESULT RemoteGetLibAttr(
+    [out] LPTLIBATTR *ppTLibAttr,
+    [out] CLEANLOCALSTORAGE *pDummy);
+
+  HRESULT GetTypeComp(
+    [out] ITypeComp **ppTComp);
+
+  [local]
+  HRESULT GetDocumentation(
+    [in] INT index,
+    [out] BSTR *pBstrName,
+    [out] BSTR *pBstrDocString,
+    [out] DWORD *pdwHelpContext,
+    [out] BSTR *pBstrHelpFile);
+
+  [call_as(GetDocumentation)]
+  HRESULT RemoteGetDocumentation(
+    [in] INT index,
+    [in] DWORD refPtrFlags,
+    [out] BSTR *pBstrName,
+    [out] BSTR *pBstrDocString,
+    [out] DWORD *pdwHelpContext,
+    [out] BSTR *pBstrHelpFile);
+
+  [local]
+  HRESULT IsName(
+    [in, out] LPOLESTR szNameBuf,
+    [in] ULONG lHashVal,
+    [out] BOOL *pfName);
+
+  [call_as(IsName)]
+  HRESULT RemoteIsName(
+    [in] LPOLESTR szNameBuf,
+    [in] ULONG lHashVal,
+    [out] BOOL *pfName,
+    [out] BSTR *pBstrLibName);
+
+  [local]
+  HRESULT FindName(
+    [in, out] LPOLESTR szNameBuf,
+    [in] ULONG lHashVal,
+    [out, size_is(*pcFound), length_is(*pcFound)] ITypeInfo **ppTInfo,
+    [out, size_is(*pcFound), length_is(*pcFound)] MEMBERID *rgMemId,
+    [in, out] USHORT *pcFound);
+
+  [call_as(FindName)]
+  HRESULT RemoteFindName(
+    [in] LPOLESTR szNameBuf,
+    [in] ULONG lHashVal,
+    [out, size_is(*pcFound), length_is(*pcFound)] ITypeInfo **ppTInfo,
+    [out, size_is(*pcFound), length_is(*pcFound)] MEMBERID *rgMemId,
+    [in, out] USHORT *pcFound,
+    [out] BSTR *pBstrLibName);
+
+  [local]
+  void ReleaseTLibAttr(
+    [in] TLIBATTR *pTLibAttr);
+
+  [call_as(ReleaseTLibAttr)]
+  HRESULT LocalReleaseTLibAttr();
+}
+
+[
+  object,
+  uuid(00020411-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface ITypeLib2 : ITypeLib
+{
+  typedef [unique] ITypeLib2 *LPTYPELIB2;
+
+  HRESULT GetCustData(
+    [in] REFGUID guid,
+    [out] VARIANT *pVarVal);
+
+  [local]
+  HRESULT GetLibStatistics(
+    [out] ULONG *pcUniqueNames,
+    [out] ULONG *pcchUniqueNames);
+
+  [call_as(GetLibStatistics)]
+  HRESULT RemoteGetLibStatistics(
+    [out] ULONG *pcUniqueNames,
+    [out] ULONG *pcchUniqueNames);
+
+  [local]
+  HRESULT GetDocumentation2(
+    [in] INT index,
+    [in] LCID lcid,
+    [out] BSTR *pbstrHelpString,
+    [out] DWORD *pdwHelpStringContext,
+    [out] BSTR *pbstrHelpStringDll);
+
+  [call_as(GetDocumentation2)]
+  HRESULT RemoteGetDocumentation2(
+    [in] INT index,
+    [in] LCID lcid,
+    [in] DWORD refPtrFlags,
+    [out] BSTR *pbstrHelpString,
+    [out] DWORD *pdwHelpStringContext,
+    [out] BSTR *pbstrHelpStringDll);
+
+  HRESULT GetAllCustData(
+    [out] CUSTDATA *pCustData);
+}
+
+[
+  local,
+  object,
+  uuid(00020410-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface ITypeChangeEvents : IUnknown
+{
+  typedef [unique] ITypeChangeEvents *LPTYPECHANGEEVENTS;
+
+  typedef enum tagCHANGEKIND {
+    CHANGEKIND_ADDMEMBER,
+    CHANGEKIND_DELETEMEMBER,
+    CHANGEKIND_SETNAMES,
+    CHANGEKIND_SETDOCUMENTATION,
+    CHANGEKIND_GENERAL,
+    CHANGEKIND_INVALIDATE,
+    CHANGEKIND_CHANGEFAILED,
+    CHANGEKIND_MAX
+  } CHANGEKIND;
+
+  HRESULT RequestTypeChange(
+    [in] CHANGEKIND changeKind,
+    [in] ITypeInfo *pTInfoBefore,
+    [in] LPOLESTR pStrName,
+    [out] INT *pfCancel);
+  
+  HRESULT AfterTypeChange(
+    [in] CHANGEKIND changeKind,
+    [in] ITypeInfo *pTInfoAfter,
+    [in] LPOLESTR pStrName);
+}
+
+[
+  object,
+  uuid(1CF2B120-547D-101B-8E65-08002B2BD119),
+  pointer_default(unique)
+]
+interface IErrorInfo : IUnknown
+{
+  typedef [unique] IErrorInfo *LPERRORINFO;
+
+  HRESULT GetGUID(
+    [out] GUID *pGUID);
+
+  HRESULT GetSource(
+    [out] BSTR *pBstrSource);
+
+  HRESULT GetDescription(
+    [out] BSTR *pBstrDescription);
+
+  HRESULT GetHelpFile(
+    [out] BSTR *pBstrHelpFile);
+
+  HRESULT GetHelpContext(
+    [out] DWORD *pdwHelpContext);
+}
+
+[
+  object,
+  uuid(22F03340-547D-101B-8E65-08002B2BD119),
+  pointer_default(unique)
+]
+interface ICreateErrorInfo : IUnknown
+{
+  typedef [unique] ICreateErrorInfo *LPCREATEERRORINFO;
+
+  HRESULT SetGUID(
+    [in] REFGUID rguid);
+
+  HRESULT SetSource(
+    [in] LPOLESTR szSource);
+
+  HRESULT SetDescription(
+    [in] LPOLESTR szDescription);
+
+  HRESULT SetHelpFile(
+    [in] LPOLESTR szHelpFile);
+
+  HRESULT SetHelpContext(
+    [in] DWORD dwHelpContext);
+}
+
+[
+  object,
+  uuid(DF0B3D60-548F-101B-8E65-08002B2BD119),
+  pointer_default(unique)
+]
+interface ISupportErrorInfo : IUnknown
+{
+  typedef [unique] ISupportErrorInfo *LPSUPPORTERRORINFO;
+
+  HRESULT InterfaceSupportsErrorInfo(
+    [in] REFIID riid);
+}
+
+[
+  object,
+  uuid(0000002E-0000-0000-C000-000000000046)
+]
+interface ITypeFactory : IUnknown
+{
+  HRESULT CreateFromTypeInfo(
+    [in] ITypeInfo *pTypeInfo,
+    [in] REFIID riid,
+    [out, iid_is(riid)] IUnknown **ppv);
+}
+
+[
+  local,
+  object,
+  uuid(0000002D-0000-0000-C000-000000000046)
+]
+interface ITypeMarshal : IUnknown
+{
+  HRESULT Size(
+    [in] PVOID pvType,
+    [in] DWORD dwDestContext,
+    [in] PVOID pvDestContext,
+    [out] ULONG *pSize);
+
+  HRESULT Marshal(
+    [in] PVOID pvType,
+    [in] DWORD dwDestContext,
+    [in] PVOID pvDestContext,
+    [in] ULONG cbBufferLength,
+    [out] BYTE *pBuffer,
+    [out] ULONG *pcbWritten);
+
+  HRESULT Unmarshal(
+    [out] PVOID pvType,
+    [in] DWORD dwFlags,
+    [in] ULONG cbBufferLength,
+    [in] BYTE *pBuffer,
+    [out] ULONG *pcbRead);
+
+  HRESULT Free(
+    [in] PVOID pvType);
+}
+
+[
+  local,
+  object,
+  uuid(0000002F-0000-0000-C000-000000000046)
+]
+interface IRecordInfo : IUnknown
+{
+  typedef [unique] IRecordInfo *LPRECORDINFO;
+
+  HRESULT RecordInit(
+    [out] PVOID pvNew);
+
+  HRESULT RecordClear(
+    [in] PVOID pvExisting);
+
+  HRESULT RecordCopy(
+    [in] PVOID pvExisting,
+    [out] PVOID pvNew);
+
+  HRESULT GetGuid(
+    [out] GUID *pguid);
+
+  HRESULT GetName(
+    [out] BSTR *pbstrName);
+
+  HRESULT GetSize(
+    [out] ULONG *pcbSize);
+
+  HRESULT GetTypeInfo(
+    [out] ITypeInfo **ppTypeInfo);
+
+  HRESULT GetField(
+    [in] PVOID pvData,
+    [in] LPCOLESTR szFieldName,
+    [out] VARIANT *pvarField);
+
+  HRESULT GetFieldNoCopy(
+    [in] PVOID pvData,
+    [in] LPCOLESTR szFieldName,
+    [out] VARIANT *pvarField,
+    [out] PVOID *ppvDataCArray);
+
+  HRESULT PutField(
+    [in] ULONG wFlags,
+    [in, out] PVOID pvData,
+    [in] LPCOLESTR szFieldName,
+    [in] VARIANT *pvarField);
+
+  HRESULT PutFieldNoCopy(
+    [in] ULONG wFlags,
+    [in, out] PVOID pvData,
+    [in] LPCOLESTR szFieldName,
+    [in] VARIANT *pvarField);
+
+  HRESULT GetFieldNames(
+    [in, out] ULONG *pcNames,
+    [out, size_is(*pcNames), length_is(*pcNames)] BSTR *rgBstrNames);
+
+  BOOL IsMatchingType(
+    [in] IRecordInfo *pRecordInfo);
+
+  PVOID RecordCreate();
+
+  HRESULT RecordCreateCopy(
+    [in] PVOID pvSource,
+    [out] PVOID *ppvDest);
+
+  HRESULT RecordDestroy(
+    [in] PVOID pvRecord);
+}
+
+[
+  local,
+  object,
+  uuid(00020405-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface ICreateTypeInfo : IUnknown
+{
+  typedef [unique] ICreateTypeInfo *LPCREATETYPEINFO;
+
+  HRESULT SetGuid(
+    [in] REFGUID guid);
+
+  HRESULT SetTypeFlags(
+    [in] UINT uTypeFlags);
+
+  HRESULT SetDocString(
+    [in] LPOLESTR pStrDoc);
+
+  HRESULT SetHelpContext(
+    [in] DWORD dwHelpContext);
+
+  HRESULT SetVersion(
+    [in] WORD wMajorVerNum,
+    [in] WORD wMinorVerNum);
+
+  HRESULT AddRefTypeInfo(
+    [in] ITypeInfo *pTInfo,
+    [in] HREFTYPE *phRefType);
+
+  HRESULT AddFuncDesc(
+    [in] UINT index,
+    [in] FUNCDESC *pFuncDesc);
+
+  HRESULT AddImplType(
+    [in] UINT index,
+    [in] HREFTYPE hRefType);
+
+  HRESULT SetImplTypeFlags(
+    [in] UINT index,
+    [in] INT implTypeFlags);
+
+  HRESULT SetAlignment(
+    [in] WORD cbAlignment);
+
+  HRESULT SetSchema(
+    [in] LPOLESTR pStrSchema);
+
+  HRESULT AddVarDesc(
+    [in] UINT index,
+    [in] VARDESC *pVarDesc);
+
+  HRESULT SetFuncAndParamNames(
+    [in] UINT index,
+    [in, size_is(cNames)] LPOLESTR *rgszNames,
+    [in] UINT cNames);
+
+  HRESULT SetVarName(
+    [in] UINT index,
+    [in] LPOLESTR szName);
+
+  HRESULT SetTypeDescAlias(
+    [in] TYPEDESC *pTDescAlias);
+
+  HRESULT DefineFuncAsDllEntry(
+    [in] UINT index,
+    [in] LPOLESTR szDllName,
+    [in] LPOLESTR szProcName);
+
+  HRESULT SetFuncDocString(
+    [in] UINT index,
+    [in] LPOLESTR szDocString);
+
+  HRESULT SetVarDocString(
+    [in] UINT index,
+    [in] LPOLESTR szDocString);
+
+  HRESULT SetFuncHelpContext(
+    [in] UINT index,
+    [in] DWORD dwHelpContext);
+
+  HRESULT SetVarHelpContext(
+    [in] UINT index,
+    [in] DWORD dwHelpContext);
+
+  HRESULT SetMops(
+    [in] UINT index,
+    [in] BSTR bstrMops);
+
+  HRESULT SetTypeIdldesc(
+    [in] IDLDESC * pIdlDesc);
+
+  HRESULT LayOut();
+}
+
+[
+  local,
+  object,
+  uuid(0002040E-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface ICreateTypeInfo2 : ICreateTypeInfo
+{
+  typedef [unique] ICreateTypeInfo2 *LPCREATETYPEINFO2;
+
+  HRESULT DeleteFuncDesc(
+    [in] UINT index);
+
+  HRESULT DeleteFuncDescByMemId(
+    [in] MEMBERID memid,
+    [in] INVOKEKIND invKind);
+
+  HRESULT DeleteVarDesc(
+    [in] UINT index);
+
+  HRESULT DeleteVarDescByMemId(
+    [in] MEMBERID memid);
+
+  HRESULT DeleteImplType(
+    [in] UINT index);
+
+  HRESULT SetCustData(
+    [in] REFGUID guid,
+    [in] VARIANT *pVarVal);
+
+  HRESULT SetFuncCustData( 
+    [in] UINT index, 
+    [in] REFGUID guid, 
+    [in] VARIANT *pVarVal);
+  
+  HRESULT SetParamCustData( 
+    [in] UINT indexFunc, 
+    [in] UINT indexParam, 
+    [in] REFGUID guid, 
+    [in] VARIANT *pVarVal);
+
+  HRESULT SetVarCustData( 
+    [in] UINT index, 
+    [in] REFGUID guid, 
+    [in] VARIANT *pVarVal);
+
+  HRESULT SetImplTypeCustData( 
+    [in] UINT index, 
+    [in] REFGUID guid, 
+    [in] VARIANT *pVarVal);
+
+  HRESULT SetHelpStringContext(
+    [in] ULONG dwHelpStringContext);
+
+  HRESULT SetFuncHelpStringContext(
+    [in] UINT index,
+    [in] ULONG dwHelpStringContext);
+
+  HRESULT SetVarHelpStringContext(
+    [in] UINT index,
+    [in] ULONG dwHelpStringContext);
+
+  HRESULT Invalidate();
+
+  HRESULT SetName(
+    [in] LPOLESTR szName);
+}
+
+[
+  local,
+  object,
+  uuid(00020406-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface ICreateTypeLib : IUnknown
+{
+  typedef [unique] ICreateTypeLib *LPCREATETYPELIB;
+
+  HRESULT CreateTypeInfo(
+    [in] LPOLESTR szName,
+    [in] TYPEKIND tkind,
+    [out] ICreateTypeInfo **ppCTInfo);
+
+  HRESULT SetName(
+    [in] LPOLESTR szName);
+
+  HRESULT SetVersion(
+    [in] WORD wMajorVerNum,
+    [in] WORD wMinorVerNum);
+
+  HRESULT SetGuid(
+    [in] REFGUID guid);
+
+  HRESULT SetDocString(
+    [in] LPOLESTR szDoc);
+
+  HRESULT SetHelpFileName(
+    [in] LPOLESTR szHelpFileName);
+
+  HRESULT SetHelpContext(
+    [in] DWORD dwHelpContext);
+
+  HRESULT SetLcid(
+    [in] LCID lcid);
+
+  HRESULT SetLibFlags(
+    [in] UINT uLibFlags);
+
+  HRESULT SaveAllChanges();
+}
+
+[
+  local,
+  object,
+  uuid(0002040F-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface ICreateTypeLib2 : ICreateTypeLib
+{
+  typedef [unique] ICreateTypeLib2 *LPCREATETYPELIB2;
+
+  HRESULT DeleteTypeInfo(
+    [in] LPOLESTR szName);
+
+  HRESULT SetCustData(
+    [in] REFGUID guid,
+    [in] VARIANT *pVarVal);
+
+  HRESULT SetHelpStringContext(
+    [in] ULONG dwHelpStringContext);
+
+  HRESULT SetHelpStringDll(
+    [in] LPOLESTR szFileName);
+}
+
+
+/*****************************************************************************
+ * IErrorLog interface
+ */
+[
+  object,
+  uuid(3127ca40-446e-11ce-8135-00aa004bb851),
+  pointer_default(unique)
+]
+interface IErrorLog : IUnknown
+{
+  typedef IErrorLog *LPERRORLOG;
+
+  HRESULT AddError(
+    [in] LPCOLESTR pszPropName,
+    [in] EXCEPINFO *pExcepInfo);
+}
+
+
+/*****************************************************************************
+ * IPropertyBag interface
+ */
+[
+  object,
+  uuid(55272a00-42cb-11ce-8135-00aa004bb851),
+  pointer_default(unique)
+]
+interface IPropertyBag : IUnknown
+{
+  typedef IPropertyBag *LPPROPERTYBAG;
+
+  [local]
+  HRESULT Read(
+    [in] LPCOLESTR pszPropName,
+    [in, out] VARIANT *pVar,
+    [in] IErrorLog *pErrorLog);
+
+  [call_as(Read)]
+  HRESULT RemoteRead(
+    [in] LPCOLESTR pszPropName,
+    [out] VARIANT *pVar,
+    [in] IErrorLog *pErrorLog,
+    [in] DWORD varType,
+    [in] IUnknown *pUnkObj);
+
+  HRESULT Write(
+    [in] LPCOLESTR pszPropName,
+    [in] VARIANT *pVar);
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/objbase.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/objbase.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/objbase.h	(revision 16410)
@@ -0,0 +1,540 @@
+/*
+ * Copyright (C) 1998-1999 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef _OBJBASE_H_
+#define _OBJBASE_H_
+
+/*****************************************************************************
+ * Macros to define a COM interface
+ */
+/*
+ * The goal of the following set of definitions is to provide a way to use the same
+ * header file definitions to provide both a C interface and a C++ object oriented
+ * interface to COM interfaces. The type of interface is selected automatically
+ * depending on the language but it is always possible to get the C interface in C++
+ * by defining CINTERFACE.
+ *
+ * It is based on the following assumptions:
+ *  - all COM interfaces derive from IUnknown, this should not be a problem.
+ *  - the header file only defines the interface, the actual fields are defined
+ *    separately in the C file implementing the interface.
+ *
+ * The natural approach to this problem would be to make sure we get a C++ class and
+ * virtual methods in C++ and a structure with a table of pointer to functions in C.
+ * Unfortunately the layout of the virtual table is compiler specific, the layout of
+ * g++ virtual tables is not the same as that of an egcs virtual table which is not the
+ * same as that generated by Visual C+. There are workarounds to make the virtual tables
+ * compatible via padding but unfortunately the one which is imposed to the WINE emulator
+ * by the Windows binaries, i.e. the Visual C++ one, is the most compact of all.
+ *
+ * So the solution I finally adopted does not use virtual tables. Instead I use inline
+ * non virtual methods that dereference the method pointer themselves and perform the call.
+ *
+ * Let's take Direct3D as an example:
+ *
+ *    #define INTERFACE IDirect3D
+ *    DECLARE_INTERFACE_(IDirect3D,IUnknown)
+ *    {
+ *        // *** IUnknown methods *** //
+ *        STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID, void**) PURE;
+ *        STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ *        STDMETHOD_(ULONG,Release)(THIS) PURE;
+ *        // *** IDirect3D methods *** //
+ *        STDMETHOD(Initialize)(THIS_ REFIID) PURE;
+ *        STDMETHOD(EnumDevices)(THIS_ LPD3DENUMDEVICESCALLBACK, LPVOID) PURE;
+ *        STDMETHOD(CreateLight)(THIS_ LPDIRECT3DLIGHT *, IUnknown *) PURE;
+ *        STDMETHOD(CreateMaterial)(THIS_ LPDIRECT3DMATERIAL *, IUnknown *) PURE;
+ *        STDMETHOD(CreateViewport)(THIS_ LPDIRECT3DVIEWPORT *, IUnknown *) PURE;
+ *        STDMETHOD(FindDevice)(THIS_ LPD3DFINDDEVICESEARCH, LPD3DFINDDEVICERESULT) PURE;
+ *    };
+ *    #undef INTERFACE
+ *
+ *    #ifdef COBJMACROS
+ *    // *** IUnknown methods *** //
+ *    #define IDirect3D_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+ *    #define IDirect3D_AddRef(p)             (p)->lpVtbl->AddRef(p)
+ *    #define IDirect3D_Release(p)            (p)->lpVtbl->Release(p)
+ *    // *** IDirect3D methods *** //
+ *    #define IDirect3D_Initialize(p,a)       (p)->lpVtbl->Initialize(p,a)
+ *    #define IDirect3D_EnumDevices(p,a,b)    (p)->lpVtbl->EnumDevice(p,a,b)
+ *    #define IDirect3D_CreateLight(p,a,b)    (p)->lpVtbl->CreateLight(p,a,b)
+ *    #define IDirect3D_CreateMaterial(p,a,b) (p)->lpVtbl->CreateMaterial(p,a,b)
+ *    #define IDirect3D_CreateViewport(p,a,b) (p)->lpVtbl->CreateViewport(p,a,b)
+ *    #define IDirect3D_FindDevice(p,a,b)     (p)->lpVtbl->FindDevice(p,a,b)
+ *    #endif
+ *
+ * Comments:
+ *  - The INTERFACE macro is used in the STDMETHOD macros to define the type of the 'this'
+ *    pointer. Defining this macro here saves us the trouble of having to repeat the interface
+ *    name everywhere. Note however that because of the way macros work, a macro like STDMETHOD
+ *    cannot use 'INTERFACE##_VTABLE' because this would give 'INTERFACE_VTABLE' and not
+ *    'IDirect3D_VTABLE'.
+ *  - The DECLARE_INTERFACE declares all the structures necessary for the interface. We have to
+ *    explicitly use the interface name for macro expansion reasons again. It defines the list of
+ *    methods that are inheritable from this interface. It must be written manually (rather than
+ *    using a macro to generate the equivalent code) to avoid macro recursion (which compilers
+ *    don't like). It must start with the methods definition of the parent interface so that
+ *    method inheritance works properly.
+ *  - The 'undef INTERFACE' is here to remind you that using INTERFACE in the following macros
+ *    will not work.
+ *  - Finally the set of 'IDirect3D_Xxx' macros is a standard set of macros defined to ease access
+ *    to the interface methods in C. Unfortunately I don't see any way to avoid having to duplicate
+ *    the inherited method definitions there. This time I could have used a trick to use only one
+ *    macro whatever the number of parameters but I preferred to have it work the same way as above.
+ *  - You probably have noticed that we don't define the fields we need to actually implement this
+ *    interface: reference count, pointer to other resources and miscellaneous fields. That's
+ *    because these interfaces are just that: interfaces. They may be implemented more than once, in
+ *    different contexts and sometimes not even in Wine. Thus it would not make sense to impose
+ *    that the interface contains some specific fields.
+ *
+ *
+ * In C this gives:
+ *    typedef struct IDirect3DVtbl IDirect3DVtbl;
+ *    struct IDirect3D {
+ *        IDirect3DVtbl* lpVtbl;
+ *    };
+ *    struct IDirect3DVtbl {
+ *        HRESULT (*QueryInterface)(IDirect3D* me, REFIID riid, LPVOID* ppvObj);
+ *        ULONG (*AddRef)(IDirect3D* me);
+ *        ULONG (*Release)(IDirect3D* me);
+ *        HRESULT (*Initialize)(IDirect3D* me, REFIID a);
+ *        HRESULT (*EnumDevices)(IDirect3D* me, LPD3DENUMDEVICESCALLBACK a, LPVOID b);
+ *        HRESULT (*CreateLight)(IDirect3D* me, LPDIRECT3DLIGHT* a, IUnknown* b);
+ *        HRESULT (*CreateMaterial)(IDirect3D* me, LPDIRECT3DMATERIAL* a, IUnknown* b);
+ *        HRESULT (*CreateViewport)(IDirect3D* me, LPDIRECT3DVIEWPORT* a, IUnknown* b);
+ *        HRESULT (*FindDevice)(IDirect3D* me, LPD3DFINDDEVICESEARCH a, LPD3DFINDDEVICERESULT b);
+ *    };
+ *
+ *    #ifdef COBJMACROS
+ *    // *** IUnknown methods *** //
+ *    #define IDirect3D_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+ *    #define IDirect3D_AddRef(p)             (p)->lpVtbl->AddRef(p)
+ *    #define IDirect3D_Release(p)            (p)->lpVtbl->Release(p)
+ *    // *** IDirect3D methods *** //
+ *    #define IDirect3D_Initialize(p,a)       (p)->lpVtbl->Initialize(p,a)
+ *    #define IDirect3D_EnumDevices(p,a,b)    (p)->lpVtbl->EnumDevice(p,a,b)
+ *    #define IDirect3D_CreateLight(p,a,b)    (p)->lpVtbl->CreateLight(p,a,b)
+ *    #define IDirect3D_CreateMaterial(p,a,b) (p)->lpVtbl->CreateMaterial(p,a,b)
+ *    #define IDirect3D_CreateViewport(p,a,b) (p)->lpVtbl->CreateViewport(p,a,b)
+ *    #define IDirect3D_FindDevice(p,a,b)     (p)->lpVtbl->FindDevice(p,a,b)
+ *    #endif
+ *
+ * Comments:
+ *  - IDirect3D only contains a pointer to the IDirect3D virtual/jump table. This is the only thing
+ *    the user needs to know to use the interface. Of course the structure we will define to
+ *    implement this interface will have more fields but the first one will match this pointer.
+ *  - The code generated by DECLARE_INTERFACE defines both the structure representing the interface and
+ *    the structure for the jump table.
+ *  - Each method is declared as a pointer to function field in the jump table. The implementation
+ *    will fill this jump table with appropriate values, probably using a static variable, and
+ *    initialize the lpVtbl field to point to this variable.
+ *  - The IDirect3D_Xxx macros then just derefence the lpVtbl pointer and use the function pointer
+ *    corresponding to the macro name. This emulates the behavior of a virtual table and should be
+ *    just as fast.
+ *  - This C code should be quite compatible with the Windows headers both for code that uses COM
+ *    interfaces and for code implementing a COM interface.
+ *
+ *
+ * And in C++ (with gcc's g++):
+ *
+ *    typedef struct IDirect3D: public IUnknown {
+ *        virtual HRESULT Initialize(REFIID a) = 0;
+ *        virtual HRESULT EnumDevices(LPD3DENUMDEVICESCALLBACK a, LPVOID b) = 0;
+ *        virtual HRESULT CreateLight(LPDIRECT3DLIGHT* a, IUnknown* b) = 0;
+ *        virtual HRESULT CreateMaterial(LPDIRECT3DMATERIAL* a, IUnknown* b) = 0;
+ *        virtual HRESULT CreateViewport(LPDIRECT3DVIEWPORT* a, IUnknown* b) = 0;
+ *        virtual HRESULT FindDevice(LPD3DFINDDEVICESEARCH a, LPD3DFINDDEVICERESULT b) = 0;
+ *    };
+ *
+ * Comments:
+ *  - Of course in C++ we use inheritance so that we don't have to duplicate the method definitions.
+ *  - Finally there is no IDirect3D_Xxx macro. These are not needed in C++ unless the CINTERFACE
+ *    macro is defined in which case we would not be here.
+ *
+ *
+ * Implementing a COM interface.
+ *
+ * This continues the above example. This example assumes that the implementation is in C.
+ *
+ *    typedef struct IDirect3DImpl {
+ *        void* lpVtbl;
+ *        // ...
+ *
+ *    } IDirect3DImpl;
+ *
+ *    static IDirect3DVtbl d3dvt;
+ *
+ *    // implement the IDirect3D methods here
+ *
+ *    int IDirect3D_QueryInterface(IDirect3D* me)
+ *    {
+ *        IDirect3DImpl *This = (IDirect3DImpl *)me;
+ *        // ...
+ *    }
+ *
+ *    // ...
+ *
+ *    static IDirect3DVtbl d3dvt = {
+ *        IDirect3D_QueryInterface,
+ *        IDirect3D_Add,
+ *        IDirect3D_Add2,
+ *        IDirect3D_Initialize,
+ *        IDirect3D_SetWidth
+ *    };
+ *
+ * Comments:
+ *  - We first define what the interface really contains. This is the IDirect3DImpl structure. The
+ *    first field must of course be the virtual table pointer. Everything else is free.
+ *  - Then we predeclare our static virtual table variable, we will need its address in some
+ *    methods to initialize the virtual table pointer of the returned interface objects.
+ *  - Then we implement the interface methods. To match what has been declared in the header file
+ *    they must take a pointer to an IDirect3D structure and we must cast it to an IDirect3DImpl so
+ *    that we can manipulate the fields.
+ *  - Finally we initialize the virtual table.
+ */
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+/* C++ interface */
+
+#define STDMETHOD(method)        virtual HRESULT STDMETHODCALLTYPE method
+#define STDMETHOD_(type,method)  virtual type STDMETHODCALLTYPE method
+#define STDMETHODV(method)       virtual HRESULT STDMETHODVCALLTYPE method
+#define STDMETHODV_(type,method) virtual type STDMETHODVCALLTYPE method
+
+#define PURE   = 0
+#define THIS_
+#define THIS   void
+
+#define interface struct
+#define DECLARE_INTERFACE(iface)        interface iface
+#define DECLARE_INTERFACE_(iface,ibase) interface iface : public ibase
+
+#define BEGIN_INTERFACE
+#define END_INTERFACE
+
+#else  /* __cplusplus && !CINTERFACE */
+
+/* C interface */
+
+#define STDMETHOD(method)        HRESULT (STDMETHODCALLTYPE *method)
+#define STDMETHOD_(type,method)  type (STDMETHODCALLTYPE *method)
+#define STDMETHODV(method)       HRESULT (STDMETHODVCALLTYPE *method)
+#define STDMETHODV_(type,method) type (STDMETHODVCALLTYPE *method)
+
+#define PURE
+#define THIS_ INTERFACE *This,
+#define THIS  INTERFACE *This
+
+#define interface struct
+
+#ifdef __WINESRC__
+#define CONST_VTABLE
+#endif
+
+#ifdef CONST_VTABLE
+#undef CONST_VTBL
+#define CONST_VTBL const
+#define DECLARE_INTERFACE(iface) \
+         typedef interface iface { const struct iface##Vtbl *lpVtbl; } iface; \
+         typedef struct iface##Vtbl iface##Vtbl; \
+         struct iface##Vtbl
+#else
+#undef CONST_VTBL
+#define CONST_VTBL
+#define DECLARE_INTERFACE(iface) \
+         typedef interface iface { struct iface##Vtbl *lpVtbl; } iface; \
+         typedef struct iface##Vtbl iface##Vtbl; \
+         struct iface##Vtbl
+#endif
+#define DECLARE_INTERFACE_(iface,ibase) DECLARE_INTERFACE(iface)
+
+#define BEGIN_INTERFACE
+#define END_INTERFACE
+
+#endif  /* __cplusplus && !CINTERFACE */
+
+#ifndef __IRpcStubBuffer_FWD_DEFINED__
+#define __IRpcStubBuffer_FWD_DEFINED__
+typedef interface IRpcStubBuffer IRpcStubBuffer;
+#endif
+#ifndef __IRpcChannelBuffer_FWD_DEFINED__
+#define __IRpcChannelBuffer_FWD_DEFINED__
+typedef interface IRpcChannelBuffer IRpcChannelBuffer;
+#endif
+
+#ifndef RC_INVOKED
+/* For compatibility only, at least for now */
+#include <stdlib.h>
+#endif
+
+#include <wtypes.h>
+#include <unknwn.h>
+#include <objidl.h>
+
+#include <guiddef.h>
+#ifndef INITGUID
+#include <cguid.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef NONAMELESSSTRUCT
+#define LISet32(li, v)   ((li).HighPart = (v) < 0 ? -1 : 0, (li).LowPart = (v))
+#define ULISet32(li, v)  ((li).HighPart = 0, (li).LowPart = (v))
+#else
+#define LISet32(li, v)   ((li).u.HighPart = (v) < 0 ? -1 : 0, (li).u.LowPart = (v))
+#define ULISet32(li, v)  ((li).u.HighPart = 0, (li).u.LowPart = (v))
+#endif
+
+/*****************************************************************************
+ *  Standard API
+ */
+DWORD WINAPI CoBuildVersion(void);
+
+typedef enum tagCOINIT
+{
+    COINIT_APARTMENTTHREADED  = 0x2, /* Apartment model */
+    COINIT_MULTITHREADED      = 0x0, /* OLE calls objects on any thread */
+    COINIT_DISABLE_OLE1DDE    = 0x4, /* Don't use DDE for Ole1 support */
+    COINIT_SPEED_OVER_MEMORY  = 0x8  /* Trade memory for speed */
+} COINIT;
+
+HRESULT WINAPI CoInitialize(LPVOID lpReserved);
+HRESULT WINAPI CoInitializeEx(LPVOID lpReserved, DWORD dwCoInit);
+void WINAPI CoUninitialize(void);
+DWORD WINAPI CoGetCurrentProcess(void);
+
+HINSTANCE WINAPI CoLoadLibrary(LPOLESTR lpszLibName, BOOL bAutoFree);
+void WINAPI CoFreeAllLibraries(void);
+void WINAPI CoFreeLibrary(HINSTANCE hLibrary);
+void WINAPI CoFreeUnusedLibraries(void);
+void WINAPI CoFreeUnusedLibrariesEx(DWORD dwUnloadDelay, DWORD dwReserved);
+
+HRESULT WINAPI CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv);
+HRESULT WINAPI CoCreateInstanceEx(REFCLSID      rclsid,
+                  LPUNKNOWN     pUnkOuter,
+                  DWORD         dwClsContext,
+                  COSERVERINFO* pServerInfo,
+                  ULONG         cmq,
+                  MULTI_QI*     pResults);
+
+HRESULT WINAPI CoGetInstanceFromFile(COSERVERINFO* pServerInfo, CLSID* pClsid, IUnknown* punkOuter, DWORD dwClsCtx, DWORD grfMode, OLECHAR* pwszName, DWORD dwCount, MULTI_QI* pResults);
+HRESULT WINAPI CoGetInstanceFromIStorage(COSERVERINFO* pServerInfo, CLSID* pClsid, IUnknown* punkOuter, DWORD dwClsCtx, IStorage* pstg, DWORD dwCount, MULTI_QI* pResults);
+
+HRESULT WINAPI CoGetMalloc(DWORD dwMemContext, LPMALLOC* lpMalloc);
+LPVOID WINAPI CoTaskMemAlloc(ULONG size) __WINE_ALLOC_SIZE(1);
+void WINAPI CoTaskMemFree(LPVOID ptr);
+LPVOID WINAPI CoTaskMemRealloc(LPVOID ptr, ULONG size);
+
+HRESULT WINAPI CoRegisterMallocSpy(LPMALLOCSPY pMallocSpy);
+HRESULT WINAPI CoRevokeMallocSpy(void);
+
+HRESULT WINAPI CoGetContextToken( ULONG_PTR *token );
+
+/* class registration flags; passed to CoRegisterClassObject */
+typedef enum tagREGCLS
+{
+    REGCLS_SINGLEUSE = 0,
+    REGCLS_MULTIPLEUSE = 1,
+    REGCLS_MULTI_SEPARATE = 2,
+    REGCLS_SUSPENDED = 4,
+    REGCLS_SURROGATE = 8
+} REGCLS;
+
+HRESULT WINAPI CoGetClassObject(REFCLSID rclsid, DWORD dwClsContext, COSERVERINFO *pServerInfo, REFIID iid, LPVOID *ppv);
+HRESULT WINAPI CoRegisterClassObject(REFCLSID rclsid,LPUNKNOWN pUnk,DWORD dwClsContext,DWORD flags,LPDWORD lpdwRegister);
+HRESULT WINAPI CoRevokeClassObject(DWORD dwRegister);
+HRESULT WINAPI CoGetPSClsid(REFIID riid,CLSID *pclsid);
+HRESULT WINAPI CoRegisterPSClsid(REFIID riid, REFCLSID rclsid);
+HRESULT WINAPI CoRegisterSurrogate(LPSURROGATE pSurrogate);
+HRESULT WINAPI CoSuspendClassObjects(void);
+HRESULT WINAPI CoResumeClassObjects(void);
+ULONG WINAPI CoAddRefServerProcess(void);
+ULONG WINAPI CoReleaseServerProcess(void);
+
+/* marshalling */
+HRESULT WINAPI CoCreateFreeThreadedMarshaler(LPUNKNOWN punkOuter, LPUNKNOWN* ppunkMarshal);
+HRESULT WINAPI CoGetInterfaceAndReleaseStream(LPSTREAM pStm, REFIID iid, LPVOID* ppv);
+HRESULT WINAPI CoGetMarshalSizeMax(ULONG* pulSize, REFIID riid, LPUNKNOWN pUnk, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags);
+HRESULT WINAPI CoGetStandardMarshal(REFIID riid, LPUNKNOWN pUnk, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags, LPMARSHAL* ppMarshal);
+HRESULT WINAPI CoMarshalHresult(LPSTREAM pstm, HRESULT hresult);
+HRESULT WINAPI CoMarshalInterface(LPSTREAM pStm, REFIID riid, LPUNKNOWN pUnk, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags);
+HRESULT WINAPI CoMarshalInterThreadInterfaceInStream(REFIID riid, LPUNKNOWN pUnk, LPSTREAM* ppStm);
+HRESULT WINAPI CoReleaseMarshalData(LPSTREAM pStm);
+HRESULT WINAPI CoDisconnectObject(LPUNKNOWN lpUnk, DWORD reserved);
+HRESULT WINAPI CoUnmarshalHresult(LPSTREAM pstm, HRESULT* phresult);
+HRESULT WINAPI CoUnmarshalInterface(LPSTREAM pStm, REFIID riid, LPVOID* ppv);
+HRESULT WINAPI CoLockObjectExternal(LPUNKNOWN pUnk, BOOL fLock, BOOL fLastUnlockReleases);
+BOOL WINAPI CoIsHandlerConnected(LPUNKNOWN pUnk);
+
+/* security */
+HRESULT WINAPI CoInitializeSecurity(PSECURITY_DESCRIPTOR pSecDesc, LONG cAuthSvc, SOLE_AUTHENTICATION_SERVICE* asAuthSvc, void* pReserved1, DWORD dwAuthnLevel, DWORD dwImpLevel, void* pReserved2, DWORD dwCapabilities, void* pReserved3);
+HRESULT WINAPI CoGetCallContext(REFIID riid, void** ppInterface);
+HRESULT WINAPI CoQueryAuthenticationServices(DWORD* pcAuthSvc, SOLE_AUTHENTICATION_SERVICE** asAuthSvc);
+
+HRESULT WINAPI CoQueryProxyBlanket(IUnknown* pProxy, DWORD* pwAuthnSvc, DWORD* pAuthzSvc, OLECHAR** pServerPrincName, DWORD* pAuthnLevel, DWORD* pImpLevel, RPC_AUTH_IDENTITY_HANDLE* pAuthInfo, DWORD* pCapabilities);
+HRESULT WINAPI CoSetProxyBlanket(IUnknown* pProxy, DWORD dwAuthnSvc, DWORD dwAuthzSvc, OLECHAR* pServerPrincName, DWORD dwAuthnLevel, DWORD dwImpLevel, RPC_AUTH_IDENTITY_HANDLE pAuthInfo, DWORD dwCapabilities);
+HRESULT WINAPI CoCopyProxy(IUnknown* pProxy, IUnknown** ppCopy);
+
+HRESULT WINAPI CoImpersonateClient(void);
+HRESULT WINAPI CoQueryClientBlanket(DWORD* pAuthnSvc, DWORD* pAuthzSvc, OLECHAR** pServerPrincName, DWORD* pAuthnLevel, DWORD* pImpLevel, RPC_AUTHZ_HANDLE* pPrivs, DWORD* pCapabilities);
+HRESULT WINAPI CoRevertToSelf(void);
+
+/* misc */
+HRESULT WINAPI CoGetTreatAsClass(REFCLSID clsidOld, LPCLSID pClsidNew);
+HRESULT WINAPI CoTreatAsClass(REFCLSID clsidOld, REFCLSID clsidNew);
+HRESULT WINAPI CoAllowSetForegroundWindow(IUnknown *pUnk, LPVOID lpvReserved);
+HRESULT WINAPI CoGetObjectContext(REFIID riid, LPVOID *ppv);
+
+HRESULT WINAPI CoCreateGuid(GUID* pguid);
+BOOL WINAPI CoIsOle1Class(REFCLSID rclsid);
+
+BOOL WINAPI CoDosDateTimeToFileTime(WORD nDosDate, WORD nDosTime, FILETIME* lpFileTime);
+BOOL WINAPI CoFileTimeToDosDateTime(FILETIME* lpFileTime, WORD* lpDosDate, WORD* lpDosTime);
+HRESULT WINAPI CoFileTimeNow(FILETIME* lpFileTime);
+HRESULT WINAPI CoRegisterMessageFilter(LPMESSAGEFILTER lpMessageFilter,LPMESSAGEFILTER *lplpMessageFilter);
+HRESULT WINAPI CoRegisterChannelHook(REFGUID ExtensionGuid, IChannelHook *pChannelHook);
+
+typedef enum tagCOWAIT_FLAGS
+{
+    COWAIT_WAITALL   = 0x00000001,
+    COWAIT_ALERTABLE = 0x00000002
+} COWAIT_FLAGS;
+
+HRESULT WINAPI CoWaitForMultipleHandles(DWORD dwFlags,DWORD dwTimeout,ULONG cHandles,LPHANDLE pHandles,LPDWORD lpdwindex);
+
+/*****************************************************************************
+ *  GUID API
+ */
+HRESULT WINAPI StringFromCLSID(REFCLSID id, LPOLESTR*);
+HRESULT WINAPI CLSIDFromString(LPOLESTR, CLSID *);
+HRESULT WINAPI CLSIDFromProgID(LPCOLESTR progid, LPCLSID riid);
+HRESULT WINAPI ProgIDFromCLSID(REFCLSID clsid, LPOLESTR *lplpszProgID);
+
+INT WINAPI StringFromGUID2(REFGUID id, LPOLESTR str, INT cmax);
+
+/*****************************************************************************
+ *  COM Server dll - exports
+ */
+HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID * ppv) DECLSPEC_HIDDEN;
+HRESULT WINAPI DllCanUnloadNow(void) DECLSPEC_HIDDEN;
+
+/* shouldn't be here, but is nice for type checking */
+#ifdef __WINESRC__
+HRESULT WINAPI DllRegisterServer(void) DECLSPEC_HIDDEN;
+HRESULT WINAPI DllUnregisterServer(void) DECLSPEC_HIDDEN;
+#endif
+
+
+/*****************************************************************************
+ *  Data Object
+ */
+HRESULT WINAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER* ppDAHolder);
+HRESULT WINAPI CreateDataCache(LPUNKNOWN pUnkOuter, REFCLSID rclsid, REFIID iid, LPVOID* ppv);
+
+/*****************************************************************************
+ *  Moniker API
+ */
+HRESULT WINAPI BindMoniker(LPMONIKER pmk, DWORD grfOpt, REFIID iidResult, LPVOID* ppvResult);
+HRESULT WINAPI CoGetObject(LPCWSTR pszName, BIND_OPTS *pBindOptions, REFIID riid, void **ppv);
+HRESULT WINAPI CreateAntiMoniker(LPMONIKER * ppmk);
+HRESULT WINAPI CreateBindCtx(DWORD reserved, LPBC* ppbc);
+HRESULT WINAPI CreateClassMoniker(REFCLSID rclsid, LPMONIKER* ppmk);
+HRESULT WINAPI CreateFileMoniker(LPCOLESTR lpszPathName, LPMONIKER* ppmk);
+HRESULT WINAPI CreateGenericComposite(LPMONIKER pmkFirst, LPMONIKER pmkRest, LPMONIKER* ppmkComposite);
+HRESULT WINAPI CreateItemMoniker(LPCOLESTR lpszDelim, LPCOLESTR  lpszItem, LPMONIKER* ppmk);
+HRESULT WINAPI CreateObjrefMoniker(LPUNKNOWN punk, LPMONIKER * ppmk);
+HRESULT WINAPI CreatePointerMoniker(LPUNKNOWN punk, LPMONIKER * ppmk);
+HRESULT WINAPI GetClassFile(LPCOLESTR filePathName,CLSID *pclsid);
+HRESULT WINAPI GetRunningObjectTable(DWORD reserved, LPRUNNINGOBJECTTABLE *pprot);
+HRESULT WINAPI MkParseDisplayName(LPBC pbc, LPCOLESTR szUserName, ULONG * pchEaten, LPMONIKER * ppmk);
+HRESULT WINAPI MonikerCommonPrefixWith(IMoniker* pmkThis,IMoniker* pmkOther,IMoniker** ppmkCommon);
+HRESULT WINAPI MonikerRelativePathTo(LPMONIKER pmkSrc, LPMONIKER pmkDest, LPMONIKER * ppmkRelPath, BOOL dwReserved);
+
+/*****************************************************************************
+ *  Storage API
+ */
+#define STGM_DIRECT     0x00000000
+#define STGM_TRANSACTED     0x00010000
+#define STGM_SIMPLE     0x08000000
+#define STGM_READ       0x00000000
+#define STGM_WRITE      0x00000001
+#define STGM_READWRITE      0x00000002
+#define STGM_SHARE_DENY_NONE    0x00000040
+#define STGM_SHARE_DENY_READ    0x00000030
+#define STGM_SHARE_DENY_WRITE   0x00000020
+#define STGM_SHARE_EXCLUSIVE    0x00000010
+#define STGM_PRIORITY       0x00040000
+#define STGM_DELETEONRELEASE    0x04000000
+#define STGM_CREATE     0x00001000
+#define STGM_CONVERT        0x00020000
+#define STGM_FAILIFTHERE    0x00000000
+#define STGM_NOSCRATCH      0x00100000
+#define STGM_NOSNAPSHOT     0x00200000
+#define STGM_DIRECT_SWMR    0x00400000
+
+#define STGFMT_STORAGE      0
+#define STGFMT_FILE         3
+#define STGFMT_ANY      4
+#define STGFMT_DOCFILE  5
+
+typedef struct tagSTGOPTIONS
+{
+    USHORT usVersion;
+    USHORT reserved;
+    ULONG ulSectorSize;
+    const WCHAR* pwcsTemplateFile;
+} STGOPTIONS;
+
+HRESULT WINAPI StgCreateDocfile(LPCOLESTR pwcsName,DWORD grfMode,DWORD reserved,IStorage **ppstgOpen);
+HRESULT WINAPI StgCreateStorageEx(const WCHAR*,DWORD,DWORD,DWORD,STGOPTIONS*,void*,REFIID,void**);
+HRESULT WINAPI StgIsStorageFile(LPCOLESTR fn);
+HRESULT WINAPI StgIsStorageILockBytes(ILockBytes *plkbyt);
+HRESULT WINAPI StgOpenStorage(const OLECHAR* pwcsName,IStorage* pstgPriority,DWORD grfMode,SNB snbExclude,DWORD reserved,IStorage**ppstgOpen);
+HRESULT WINAPI StgOpenStorageEx(const WCHAR* pwcwName,DWORD grfMode,DWORD stgfmt,DWORD grfAttrs,STGOPTIONS *pStgOptions, void *reserved, REFIID riid, void **ppObjectOpen);
+
+HRESULT WINAPI StgCreateDocfileOnILockBytes(ILockBytes *plkbyt,DWORD grfMode, DWORD reserved, IStorage** ppstgOpen);
+HRESULT WINAPI StgOpenStorageOnILockBytes(ILockBytes *plkbyt, IStorage *pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage **ppstgOpen);
+HRESULT WINAPI StgSetTimes( OLECHAR const *lpszName, FILETIME const *pctime, FILETIME const *patime, FILETIME const *pmtime);
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifndef __WINESRC__
+# include <urlmon.h>
+#endif
+#include <propidl.h>
+
+#ifndef __WINESRC__
+
+#define FARSTRUCT
+#define HUGEP
+
+#define WINOLEAPI        STDAPI
+#define WINOLEAPI_(type) STDAPI_(type)
+
+#endif /* __WINESRC__ */
+
+#endif /* _OBJBASE_H_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/objidl.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/objidl.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/objidl.h	(revision 16410)
@@ -0,0 +1,10227 @@
+/*** Autogenerated by WIDL 1.1.10 from ../../../dlls/wined3d/../../include/objidl.idl - Do not edit ***/
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef __WIDL_OBJIDL_H
+#define __WIDL_OBJIDL_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <unknwn.h>
+#ifndef __IStream_FWD_DEFINED__
+#define __IStream_FWD_DEFINED__
+typedef interface IStream IStream;
+#endif
+
+#ifndef __IEnumString_FWD_DEFINED__
+#define __IEnumString_FWD_DEFINED__
+typedef interface IEnumString IEnumString;
+#endif
+
+#ifndef __IRunningObjectTable_FWD_DEFINED__
+#define __IRunningObjectTable_FWD_DEFINED__
+typedef interface IRunningObjectTable IRunningObjectTable;
+#endif
+
+#ifndef __IMoniker_FWD_DEFINED__
+#define __IMoniker_FWD_DEFINED__
+typedef interface IMoniker IMoniker;
+#endif
+
+#ifndef __IAdviseSink_FWD_DEFINED__
+#define __IAdviseSink_FWD_DEFINED__
+typedef interface IAdviseSink IAdviseSink;
+#endif
+
+#ifndef __IAsyncManager_FWD_DEFINED__
+#define __IAsyncManager_FWD_DEFINED__
+typedef interface IAsyncManager IAsyncManager;
+#endif
+
+#ifndef __ISynchronize_FWD_DEFINED__
+#define __ISynchronize_FWD_DEFINED__
+typedef interface ISynchronize ISynchronize;
+#endif
+
+typedef struct _COSERVERINFO {
+    DWORD dwReserved1;
+    LPWSTR pwszName;
+    COAUTHINFO *pAuthInfo;
+    DWORD dwReserved2;
+} COSERVERINFO;
+#ifndef __IMarshal_FWD_DEFINED__
+#define __IMarshal_FWD_DEFINED__
+typedef interface IMarshal IMarshal;
+#endif
+
+typedef IMarshal *LPMARSHAL;
+/*****************************************************************************
+ * IMarshal interface
+ */
+#ifndef __IMarshal_INTERFACE_DEFINED__
+#define __IMarshal_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMarshal, 0x00000003, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IMarshal : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetUnmarshalClass(
+        REFIID riid,
+        void *pv,
+        DWORD dwDestContext,
+        void *pvDestContext,
+        DWORD mshlflags,
+        CLSID *pCid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetMarshalSizeMax(
+        REFIID riid,
+        void *pv,
+        DWORD dwDestContext,
+        void *pvDestContext,
+        DWORD mshlflags,
+        DWORD *pSize) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE MarshalInterface(
+        IStream *pStm,
+        REFIID riid,
+        void *pv,
+        DWORD dwDestContext,
+        void *pvDestContext,
+        DWORD mshlflags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnmarshalInterface(
+        IStream *pStm,
+        REFIID riid,
+        void **ppv) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ReleaseMarshalData(
+        IStream *pStm) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DisconnectObject(
+        DWORD dwReserved) = 0;
+
+};
+#else
+typedef struct IMarshalVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IMarshal* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IMarshal* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IMarshal* This);
+
+    /*** IMarshal methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetUnmarshalClass)(
+        IMarshal* This,
+        REFIID riid,
+        void *pv,
+        DWORD dwDestContext,
+        void *pvDestContext,
+        DWORD mshlflags,
+        CLSID *pCid);
+
+    HRESULT (STDMETHODCALLTYPE *GetMarshalSizeMax)(
+        IMarshal* This,
+        REFIID riid,
+        void *pv,
+        DWORD dwDestContext,
+        void *pvDestContext,
+        DWORD mshlflags,
+        DWORD *pSize);
+
+    HRESULT (STDMETHODCALLTYPE *MarshalInterface)(
+        IMarshal* This,
+        IStream *pStm,
+        REFIID riid,
+        void *pv,
+        DWORD dwDestContext,
+        void *pvDestContext,
+        DWORD mshlflags);
+
+    HRESULT (STDMETHODCALLTYPE *UnmarshalInterface)(
+        IMarshal* This,
+        IStream *pStm,
+        REFIID riid,
+        void **ppv);
+
+    HRESULT (STDMETHODCALLTYPE *ReleaseMarshalData)(
+        IMarshal* This,
+        IStream *pStm);
+
+    HRESULT (STDMETHODCALLTYPE *DisconnectObject)(
+        IMarshal* This,
+        DWORD dwReserved);
+
+    END_INTERFACE
+} IMarshalVtbl;
+interface IMarshal {
+    CONST_VTBL IMarshalVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IMarshal_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMarshal_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMarshal_Release(This) (This)->lpVtbl->Release(This)
+/*** IMarshal methods ***/
+#define IMarshal_GetUnmarshalClass(This,riid,pv,dwDestContext,pvDestContext,mshlflags,pCid) (This)->lpVtbl->GetUnmarshalClass(This,riid,pv,dwDestContext,pvDestContext,mshlflags,pCid)
+#define IMarshal_GetMarshalSizeMax(This,riid,pv,dwDestContext,pvDestContext,mshlflags,pSize) (This)->lpVtbl->GetMarshalSizeMax(This,riid,pv,dwDestContext,pvDestContext,mshlflags,pSize)
+#define IMarshal_MarshalInterface(This,pStm,riid,pv,dwDestContext,pvDestContext,mshlflags) (This)->lpVtbl->MarshalInterface(This,pStm,riid,pv,dwDestContext,pvDestContext,mshlflags)
+#define IMarshal_UnmarshalInterface(This,pStm,riid,ppv) (This)->lpVtbl->UnmarshalInterface(This,pStm,riid,ppv)
+#define IMarshal_ReleaseMarshalData(This,pStm) (This)->lpVtbl->ReleaseMarshalData(This,pStm)
+#define IMarshal_DisconnectObject(This,dwReserved) (This)->lpVtbl->DisconnectObject(This,dwReserved)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IMarshal_GetUnmarshalClass_Proxy(
+    IMarshal* This,
+    REFIID riid,
+    void *pv,
+    DWORD dwDestContext,
+    void *pvDestContext,
+    DWORD mshlflags,
+    CLSID *pCid);
+void __RPC_STUB IMarshal_GetUnmarshalClass_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMarshal_GetMarshalSizeMax_Proxy(
+    IMarshal* This,
+    REFIID riid,
+    void *pv,
+    DWORD dwDestContext,
+    void *pvDestContext,
+    DWORD mshlflags,
+    DWORD *pSize);
+void __RPC_STUB IMarshal_GetMarshalSizeMax_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMarshal_MarshalInterface_Proxy(
+    IMarshal* This,
+    IStream *pStm,
+    REFIID riid,
+    void *pv,
+    DWORD dwDestContext,
+    void *pvDestContext,
+    DWORD mshlflags);
+void __RPC_STUB IMarshal_MarshalInterface_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMarshal_UnmarshalInterface_Proxy(
+    IMarshal* This,
+    IStream *pStm,
+    REFIID riid,
+    void **ppv);
+void __RPC_STUB IMarshal_UnmarshalInterface_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMarshal_ReleaseMarshalData_Proxy(
+    IMarshal* This,
+    IStream *pStm);
+void __RPC_STUB IMarshal_ReleaseMarshalData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMarshal_DisconnectObject_Proxy(
+    IMarshal* This,
+    DWORD dwReserved);
+void __RPC_STUB IMarshal_DisconnectObject_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IMarshal_INTERFACE_DEFINED__ */
+
+#ifndef __IMarshal2_FWD_DEFINED__
+#define __IMarshal2_FWD_DEFINED__
+typedef interface IMarshal2 IMarshal2;
+#endif
+
+typedef IMarshal2 *LPMARSHAL2;
+/*****************************************************************************
+ * IMarshal2 interface
+ */
+#ifndef __IMarshal2_INTERFACE_DEFINED__
+#define __IMarshal2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMarshal2, 0x000001cf, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IMarshal2 : public IMarshal
+{
+};
+#else
+typedef struct IMarshal2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IMarshal2* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IMarshal2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IMarshal2* This);
+
+    /*** IMarshal methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetUnmarshalClass)(
+        IMarshal2* This,
+        REFIID riid,
+        void *pv,
+        DWORD dwDestContext,
+        void *pvDestContext,
+        DWORD mshlflags,
+        CLSID *pCid);
+
+    HRESULT (STDMETHODCALLTYPE *GetMarshalSizeMax)(
+        IMarshal2* This,
+        REFIID riid,
+        void *pv,
+        DWORD dwDestContext,
+        void *pvDestContext,
+        DWORD mshlflags,
+        DWORD *pSize);
+
+    HRESULT (STDMETHODCALLTYPE *MarshalInterface)(
+        IMarshal2* This,
+        IStream *pStm,
+        REFIID riid,
+        void *pv,
+        DWORD dwDestContext,
+        void *pvDestContext,
+        DWORD mshlflags);
+
+    HRESULT (STDMETHODCALLTYPE *UnmarshalInterface)(
+        IMarshal2* This,
+        IStream *pStm,
+        REFIID riid,
+        void **ppv);
+
+    HRESULT (STDMETHODCALLTYPE *ReleaseMarshalData)(
+        IMarshal2* This,
+        IStream *pStm);
+
+    HRESULT (STDMETHODCALLTYPE *DisconnectObject)(
+        IMarshal2* This,
+        DWORD dwReserved);
+
+    END_INTERFACE
+} IMarshal2Vtbl;
+interface IMarshal2 {
+    CONST_VTBL IMarshal2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IMarshal2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMarshal2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMarshal2_Release(This) (This)->lpVtbl->Release(This)
+/*** IMarshal methods ***/
+#define IMarshal2_GetUnmarshalClass(This,riid,pv,dwDestContext,pvDestContext,mshlflags,pCid) (This)->lpVtbl->GetUnmarshalClass(This,riid,pv,dwDestContext,pvDestContext,mshlflags,pCid)
+#define IMarshal2_GetMarshalSizeMax(This,riid,pv,dwDestContext,pvDestContext,mshlflags,pSize) (This)->lpVtbl->GetMarshalSizeMax(This,riid,pv,dwDestContext,pvDestContext,mshlflags,pSize)
+#define IMarshal2_MarshalInterface(This,pStm,riid,pv,dwDestContext,pvDestContext,mshlflags) (This)->lpVtbl->MarshalInterface(This,pStm,riid,pv,dwDestContext,pvDestContext,mshlflags)
+#define IMarshal2_UnmarshalInterface(This,pStm,riid,ppv) (This)->lpVtbl->UnmarshalInterface(This,pStm,riid,ppv)
+#define IMarshal2_ReleaseMarshalData(This,pStm) (This)->lpVtbl->ReleaseMarshalData(This,pStm)
+#define IMarshal2_DisconnectObject(This,dwReserved) (This)->lpVtbl->DisconnectObject(This,dwReserved)
+#endif
+
+#endif
+
+
+#endif  /* __IMarshal2_INTERFACE_DEFINED__ */
+
+#ifndef __IStdMarshalInfo_FWD_DEFINED__
+#define __IStdMarshalInfo_FWD_DEFINED__
+typedef interface IStdMarshalInfo IStdMarshalInfo;
+#endif
+
+typedef IStdMarshalInfo *LPSTDMARSHALINFO;
+/*****************************************************************************
+ * IStdMarshalInfo interface
+ */
+#ifndef __IStdMarshalInfo_INTERFACE_DEFINED__
+#define __IStdMarshalInfo_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IStdMarshalInfo, 0x00000018, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IStdMarshalInfo : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetClassForHandler(
+        DWORD dwDestContext,
+        void *pvDestContext,
+        CLSID *pClsid) = 0;
+
+};
+#else
+typedef struct IStdMarshalInfoVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IStdMarshalInfo* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IStdMarshalInfo* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IStdMarshalInfo* This);
+
+    /*** IStdMarshalInfo methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetClassForHandler)(
+        IStdMarshalInfo* This,
+        DWORD dwDestContext,
+        void *pvDestContext,
+        CLSID *pClsid);
+
+    END_INTERFACE
+} IStdMarshalInfoVtbl;
+interface IStdMarshalInfo {
+    CONST_VTBL IStdMarshalInfoVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IStdMarshalInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IStdMarshalInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IStdMarshalInfo_Release(This) (This)->lpVtbl->Release(This)
+/*** IStdMarshalInfo methods ***/
+#define IStdMarshalInfo_GetClassForHandler(This,dwDestContext,pvDestContext,pClsid) (This)->lpVtbl->GetClassForHandler(This,dwDestContext,pvDestContext,pClsid)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IStdMarshalInfo_GetClassForHandler_Proxy(
+    IStdMarshalInfo* This,
+    DWORD dwDestContext,
+    void *pvDestContext,
+    CLSID *pClsid);
+void __RPC_STUB IStdMarshalInfo_GetClassForHandler_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IStdMarshalInfo_INTERFACE_DEFINED__ */
+
+#ifndef __IExternalConnection_FWD_DEFINED__
+#define __IExternalConnection_FWD_DEFINED__
+typedef interface IExternalConnection IExternalConnection;
+#endif
+
+typedef IExternalConnection *LPEXTERNALCONNECTION;
+typedef enum tagEXTCONN {
+    EXTCONN_STRONG = 0x1,
+    EXTCONN_WEAK = 0x2,
+    EXTCONN_CALLABLE = 0x4
+} EXTCONN;
+/*****************************************************************************
+ * IExternalConnection interface
+ */
+#ifndef __IExternalConnection_INTERFACE_DEFINED__
+#define __IExternalConnection_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IExternalConnection, 0x00000019, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IExternalConnection : public IUnknown
+{
+    virtual DWORD STDMETHODCALLTYPE AddConnection(
+        DWORD extconn,
+        DWORD reserved) = 0;
+
+    virtual DWORD STDMETHODCALLTYPE ReleaseConnection(
+        DWORD extconn,
+        DWORD reserved,
+        BOOL fLastReleaseCloses) = 0;
+
+};
+#else
+typedef struct IExternalConnectionVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IExternalConnection* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IExternalConnection* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IExternalConnection* This);
+
+    /*** IExternalConnection methods ***/
+    DWORD (STDMETHODCALLTYPE *AddConnection)(
+        IExternalConnection* This,
+        DWORD extconn,
+        DWORD reserved);
+
+    DWORD (STDMETHODCALLTYPE *ReleaseConnection)(
+        IExternalConnection* This,
+        DWORD extconn,
+        DWORD reserved,
+        BOOL fLastReleaseCloses);
+
+    END_INTERFACE
+} IExternalConnectionVtbl;
+interface IExternalConnection {
+    CONST_VTBL IExternalConnectionVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IExternalConnection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IExternalConnection_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IExternalConnection_Release(This) (This)->lpVtbl->Release(This)
+/*** IExternalConnection methods ***/
+#define IExternalConnection_AddConnection(This,extconn,reserved) (This)->lpVtbl->AddConnection(This,extconn,reserved)
+#define IExternalConnection_ReleaseConnection(This,extconn,reserved,fLastReleaseCloses) (This)->lpVtbl->ReleaseConnection(This,extconn,reserved,fLastReleaseCloses)
+#endif
+
+#endif
+
+DWORD STDMETHODCALLTYPE IExternalConnection_AddConnection_Proxy(
+    IExternalConnection* This,
+    DWORD extconn,
+    DWORD reserved);
+void __RPC_STUB IExternalConnection_AddConnection_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+DWORD STDMETHODCALLTYPE IExternalConnection_ReleaseConnection_Proxy(
+    IExternalConnection* This,
+    DWORD extconn,
+    DWORD reserved,
+    BOOL fLastReleaseCloses);
+void __RPC_STUB IExternalConnection_ReleaseConnection_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IExternalConnection_INTERFACE_DEFINED__ */
+
+#ifndef __IMultiQI_FWD_DEFINED__
+#define __IMultiQI_FWD_DEFINED__
+typedef interface IMultiQI IMultiQI;
+#endif
+
+typedef IMultiQI *LPMULTIQI;
+typedef struct tagMULTI_QI {
+    const IID *pIID;
+    IUnknown *pItf;
+    HRESULT hr;
+} MULTI_QI;
+/*****************************************************************************
+ * IMultiQI interface
+ */
+#ifndef __IMultiQI_INTERFACE_DEFINED__
+#define __IMultiQI_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMultiQI, 0x00000020, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IMultiQI : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE QueryMultipleInterfaces(
+        ULONG cMQIs,
+        MULTI_QI *pMQIs) = 0;
+
+};
+#else
+typedef struct IMultiQIVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IMultiQI* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IMultiQI* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IMultiQI* This);
+
+    /*** IMultiQI methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryMultipleInterfaces)(
+        IMultiQI* This,
+        ULONG cMQIs,
+        MULTI_QI *pMQIs);
+
+    END_INTERFACE
+} IMultiQIVtbl;
+interface IMultiQI {
+    CONST_VTBL IMultiQIVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IMultiQI_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMultiQI_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMultiQI_Release(This) (This)->lpVtbl->Release(This)
+/*** IMultiQI methods ***/
+#define IMultiQI_QueryMultipleInterfaces(This,cMQIs,pMQIs) (This)->lpVtbl->QueryMultipleInterfaces(This,cMQIs,pMQIs)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IMultiQI_QueryMultipleInterfaces_Proxy(
+    IMultiQI* This,
+    ULONG cMQIs,
+    MULTI_QI *pMQIs);
+void __RPC_STUB IMultiQI_QueryMultipleInterfaces_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IMultiQI_INTERFACE_DEFINED__ */
+
+#ifndef __IMalloc_FWD_DEFINED__
+#define __IMalloc_FWD_DEFINED__
+typedef interface IMalloc IMalloc;
+#endif
+
+typedef IMalloc *LPMALLOC;
+/*****************************************************************************
+ * IMalloc interface
+ */
+#ifndef __IMalloc_INTERFACE_DEFINED__
+#define __IMalloc_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMalloc, 0x00000002, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IMalloc : public IUnknown
+{
+    virtual LPVOID STDMETHODCALLTYPE Alloc(
+        ULONG cb) = 0;
+
+    virtual LPVOID STDMETHODCALLTYPE Realloc(
+        LPVOID pv,
+        ULONG cb) = 0;
+
+    virtual void STDMETHODCALLTYPE Free(
+        LPVOID pv) = 0;
+
+    virtual ULONG STDMETHODCALLTYPE GetSize(
+        LPVOID pv) = 0;
+
+    virtual int STDMETHODCALLTYPE DidAlloc(
+        LPVOID pv) = 0;
+
+    virtual void STDMETHODCALLTYPE HeapMinimize(
+        ) = 0;
+
+};
+#else
+typedef struct IMallocVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IMalloc* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IMalloc* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IMalloc* This);
+
+    /*** IMalloc methods ***/
+    LPVOID (STDMETHODCALLTYPE *Alloc)(
+        IMalloc* This,
+        ULONG cb);
+
+    LPVOID (STDMETHODCALLTYPE *Realloc)(
+        IMalloc* This,
+        LPVOID pv,
+        ULONG cb);
+
+    void (STDMETHODCALLTYPE *Free)(
+        IMalloc* This,
+        LPVOID pv);
+
+    ULONG (STDMETHODCALLTYPE *GetSize)(
+        IMalloc* This,
+        LPVOID pv);
+
+    int (STDMETHODCALLTYPE *DidAlloc)(
+        IMalloc* This,
+        LPVOID pv);
+
+    void (STDMETHODCALLTYPE *HeapMinimize)(
+        IMalloc* This);
+
+    END_INTERFACE
+} IMallocVtbl;
+interface IMalloc {
+    CONST_VTBL IMallocVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IMalloc_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMalloc_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMalloc_Release(This) (This)->lpVtbl->Release(This)
+/*** IMalloc methods ***/
+#define IMalloc_Alloc(This,cb) (This)->lpVtbl->Alloc(This,cb)
+#define IMalloc_Realloc(This,pv,cb) (This)->lpVtbl->Realloc(This,pv,cb)
+#define IMalloc_Free(This,pv) (This)->lpVtbl->Free(This,pv)
+#define IMalloc_GetSize(This,pv) (This)->lpVtbl->GetSize(This,pv)
+#define IMalloc_DidAlloc(This,pv) (This)->lpVtbl->DidAlloc(This,pv)
+#define IMalloc_HeapMinimize(This) (This)->lpVtbl->HeapMinimize(This)
+#endif
+
+#endif
+
+LPVOID STDMETHODCALLTYPE IMalloc_Alloc_Proxy(
+    IMalloc* This,
+    ULONG cb);
+void __RPC_STUB IMalloc_Alloc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+LPVOID STDMETHODCALLTYPE IMalloc_Realloc_Proxy(
+    IMalloc* This,
+    LPVOID pv,
+    ULONG cb);
+void __RPC_STUB IMalloc_Realloc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IMalloc_Free_Proxy(
+    IMalloc* This,
+    LPVOID pv);
+void __RPC_STUB IMalloc_Free_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+ULONG STDMETHODCALLTYPE IMalloc_GetSize_Proxy(
+    IMalloc* This,
+    LPVOID pv);
+void __RPC_STUB IMalloc_GetSize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+int STDMETHODCALLTYPE IMalloc_DidAlloc_Proxy(
+    IMalloc* This,
+    LPVOID pv);
+void __RPC_STUB IMalloc_DidAlloc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IMalloc_HeapMinimize_Proxy(
+    IMalloc* This);
+void __RPC_STUB IMalloc_HeapMinimize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IMalloc_INTERFACE_DEFINED__ */
+
+#ifndef __IMallocSpy_FWD_DEFINED__
+#define __IMallocSpy_FWD_DEFINED__
+typedef interface IMallocSpy IMallocSpy;
+#endif
+
+typedef IMallocSpy *LPMALLOCSPY;
+/*****************************************************************************
+ * IMallocSpy interface
+ */
+#ifndef __IMallocSpy_INTERFACE_DEFINED__
+#define __IMallocSpy_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMallocSpy, 0x0000001d, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IMallocSpy : public IUnknown
+{
+    virtual ULONG STDMETHODCALLTYPE PreAlloc(
+        ULONG cbRequest) = 0;
+
+    virtual LPVOID STDMETHODCALLTYPE PostAlloc(
+        LPVOID pActual) = 0;
+
+    virtual LPVOID STDMETHODCALLTYPE PreFree(
+        LPVOID pRequest,
+        BOOL fSpyed) = 0;
+
+    virtual void STDMETHODCALLTYPE PostFree(
+        BOOL fSpyed) = 0;
+
+    virtual ULONG STDMETHODCALLTYPE PreRealloc(
+        LPVOID pRequest,
+        ULONG cbRequest,
+        LPVOID *ppNewRequest,
+        BOOL fSpyed) = 0;
+
+    virtual LPVOID STDMETHODCALLTYPE PostRealloc(
+        LPVOID pActual,
+        BOOL fSpyed) = 0;
+
+    virtual LPVOID STDMETHODCALLTYPE PreGetSize(
+        LPVOID pRequest,
+        BOOL fSpyed) = 0;
+
+    virtual ULONG STDMETHODCALLTYPE PostGetSize(
+        ULONG cbActual,
+        BOOL fSpyed) = 0;
+
+    virtual LPVOID STDMETHODCALLTYPE PreDidAlloc(
+        LPVOID pRequest,
+        BOOL fSpyed) = 0;
+
+    virtual int STDMETHODCALLTYPE PostDidAlloc(
+        LPVOID pRequest,
+        BOOL fSpyed,
+        int fActual) = 0;
+
+    virtual void STDMETHODCALLTYPE PreHeapMinimize(
+        ) = 0;
+
+    virtual void STDMETHODCALLTYPE PostHeapMinimize(
+        ) = 0;
+
+};
+#else
+typedef struct IMallocSpyVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IMallocSpy* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IMallocSpy* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IMallocSpy* This);
+
+    /*** IMallocSpy methods ***/
+    ULONG (STDMETHODCALLTYPE *PreAlloc)(
+        IMallocSpy* This,
+        ULONG cbRequest);
+
+    LPVOID (STDMETHODCALLTYPE *PostAlloc)(
+        IMallocSpy* This,
+        LPVOID pActual);
+
+    LPVOID (STDMETHODCALLTYPE *PreFree)(
+        IMallocSpy* This,
+        LPVOID pRequest,
+        BOOL fSpyed);
+
+    void (STDMETHODCALLTYPE *PostFree)(
+        IMallocSpy* This,
+        BOOL fSpyed);
+
+    ULONG (STDMETHODCALLTYPE *PreRealloc)(
+        IMallocSpy* This,
+        LPVOID pRequest,
+        ULONG cbRequest,
+        LPVOID *ppNewRequest,
+        BOOL fSpyed);
+
+    LPVOID (STDMETHODCALLTYPE *PostRealloc)(
+        IMallocSpy* This,
+        LPVOID pActual,
+        BOOL fSpyed);
+
+    LPVOID (STDMETHODCALLTYPE *PreGetSize)(
+        IMallocSpy* This,
+        LPVOID pRequest,
+        BOOL fSpyed);
+
+    ULONG (STDMETHODCALLTYPE *PostGetSize)(
+        IMallocSpy* This,
+        ULONG cbActual,
+        BOOL fSpyed);
+
+    LPVOID (STDMETHODCALLTYPE *PreDidAlloc)(
+        IMallocSpy* This,
+        LPVOID pRequest,
+        BOOL fSpyed);
+
+    int (STDMETHODCALLTYPE *PostDidAlloc)(
+        IMallocSpy* This,
+        LPVOID pRequest,
+        BOOL fSpyed,
+        int fActual);
+
+    void (STDMETHODCALLTYPE *PreHeapMinimize)(
+        IMallocSpy* This);
+
+    void (STDMETHODCALLTYPE *PostHeapMinimize)(
+        IMallocSpy* This);
+
+    END_INTERFACE
+} IMallocSpyVtbl;
+interface IMallocSpy {
+    CONST_VTBL IMallocSpyVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IMallocSpy_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMallocSpy_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMallocSpy_Release(This) (This)->lpVtbl->Release(This)
+/*** IMallocSpy methods ***/
+#define IMallocSpy_PreAlloc(This,cbRequest) (This)->lpVtbl->PreAlloc(This,cbRequest)
+#define IMallocSpy_PostAlloc(This,pActual) (This)->lpVtbl->PostAlloc(This,pActual)
+#define IMallocSpy_PreFree(This,pRequest,fSpyed) (This)->lpVtbl->PreFree(This,pRequest,fSpyed)
+#define IMallocSpy_PostFree(This,fSpyed) (This)->lpVtbl->PostFree(This,fSpyed)
+#define IMallocSpy_PreRealloc(This,pRequest,cbRequest,ppNewRequest,fSpyed) (This)->lpVtbl->PreRealloc(This,pRequest,cbRequest,ppNewRequest,fSpyed)
+#define IMallocSpy_PostRealloc(This,pActual,fSpyed) (This)->lpVtbl->PostRealloc(This,pActual,fSpyed)
+#define IMallocSpy_PreGetSize(This,pRequest,fSpyed) (This)->lpVtbl->PreGetSize(This,pRequest,fSpyed)
+#define IMallocSpy_PostGetSize(This,cbActual,fSpyed) (This)->lpVtbl->PostGetSize(This,cbActual,fSpyed)
+#define IMallocSpy_PreDidAlloc(This,pRequest,fSpyed) (This)->lpVtbl->PreDidAlloc(This,pRequest,fSpyed)
+#define IMallocSpy_PostDidAlloc(This,pRequest,fSpyed,fActual) (This)->lpVtbl->PostDidAlloc(This,pRequest,fSpyed,fActual)
+#define IMallocSpy_PreHeapMinimize(This) (This)->lpVtbl->PreHeapMinimize(This)
+#define IMallocSpy_PostHeapMinimize(This) (This)->lpVtbl->PostHeapMinimize(This)
+#endif
+
+#endif
+
+ULONG STDMETHODCALLTYPE IMallocSpy_PreAlloc_Proxy(
+    IMallocSpy* This,
+    ULONG cbRequest);
+void __RPC_STUB IMallocSpy_PreAlloc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+LPVOID STDMETHODCALLTYPE IMallocSpy_PostAlloc_Proxy(
+    IMallocSpy* This,
+    LPVOID pActual);
+void __RPC_STUB IMallocSpy_PostAlloc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+LPVOID STDMETHODCALLTYPE IMallocSpy_PreFree_Proxy(
+    IMallocSpy* This,
+    LPVOID pRequest,
+    BOOL fSpyed);
+void __RPC_STUB IMallocSpy_PreFree_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IMallocSpy_PostFree_Proxy(
+    IMallocSpy* This,
+    BOOL fSpyed);
+void __RPC_STUB IMallocSpy_PostFree_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+ULONG STDMETHODCALLTYPE IMallocSpy_PreRealloc_Proxy(
+    IMallocSpy* This,
+    LPVOID pRequest,
+    ULONG cbRequest,
+    LPVOID *ppNewRequest,
+    BOOL fSpyed);
+void __RPC_STUB IMallocSpy_PreRealloc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+LPVOID STDMETHODCALLTYPE IMallocSpy_PostRealloc_Proxy(
+    IMallocSpy* This,
+    LPVOID pActual,
+    BOOL fSpyed);
+void __RPC_STUB IMallocSpy_PostRealloc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+LPVOID STDMETHODCALLTYPE IMallocSpy_PreGetSize_Proxy(
+    IMallocSpy* This,
+    LPVOID pRequest,
+    BOOL fSpyed);
+void __RPC_STUB IMallocSpy_PreGetSize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+ULONG STDMETHODCALLTYPE IMallocSpy_PostGetSize_Proxy(
+    IMallocSpy* This,
+    ULONG cbActual,
+    BOOL fSpyed);
+void __RPC_STUB IMallocSpy_PostGetSize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+LPVOID STDMETHODCALLTYPE IMallocSpy_PreDidAlloc_Proxy(
+    IMallocSpy* This,
+    LPVOID pRequest,
+    BOOL fSpyed);
+void __RPC_STUB IMallocSpy_PreDidAlloc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+int STDMETHODCALLTYPE IMallocSpy_PostDidAlloc_Proxy(
+    IMallocSpy* This,
+    LPVOID pRequest,
+    BOOL fSpyed,
+    int fActual);
+void __RPC_STUB IMallocSpy_PostDidAlloc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IMallocSpy_PreHeapMinimize_Proxy(
+    IMallocSpy* This);
+void __RPC_STUB IMallocSpy_PreHeapMinimize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IMallocSpy_PostHeapMinimize_Proxy(
+    IMallocSpy* This);
+void __RPC_STUB IMallocSpy_PostHeapMinimize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IMallocSpy_INTERFACE_DEFINED__ */
+
+#ifndef __IInternalUnknown_FWD_DEFINED__
+#define __IInternalUnknown_FWD_DEFINED__
+typedef interface IInternalUnknown IInternalUnknown;
+#endif
+
+/*****************************************************************************
+ * IInternalUnknown interface
+ */
+#ifndef __IInternalUnknown_INTERFACE_DEFINED__
+#define __IInternalUnknown_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInternalUnknown, 0x00000021, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IInternalUnknown : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE QueryInternalInterface(
+        REFIID riid,
+        void **ppv) = 0;
+
+};
+#else
+typedef struct IInternalUnknownVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInternalUnknown* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInternalUnknown* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInternalUnknown* This);
+
+    /*** IInternalUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInternalInterface)(
+        IInternalUnknown* This,
+        REFIID riid,
+        void **ppv);
+
+    END_INTERFACE
+} IInternalUnknownVtbl;
+interface IInternalUnknown {
+    CONST_VTBL IInternalUnknownVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IInternalUnknown_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInternalUnknown_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInternalUnknown_Release(This) (This)->lpVtbl->Release(This)
+/*** IInternalUnknown methods ***/
+#define IInternalUnknown_QueryInternalInterface(This,riid,ppv) (This)->lpVtbl->QueryInternalInterface(This,riid,ppv)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInternalUnknown_QueryInternalInterface_Proxy(
+    IInternalUnknown* This,
+    REFIID riid,
+    void **ppv);
+void __RPC_STUB IInternalUnknown_QueryInternalInterface_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInternalUnknown_INTERFACE_DEFINED__ */
+
+#ifndef __IEnumUnknown_FWD_DEFINED__
+#define __IEnumUnknown_FWD_DEFINED__
+typedef interface IEnumUnknown IEnumUnknown;
+#endif
+
+typedef IEnumUnknown *LPENUMUNKNOWN;
+/*****************************************************************************
+ * IEnumUnknown interface
+ */
+#ifndef __IEnumUnknown_INTERFACE_DEFINED__
+#define __IEnumUnknown_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IEnumUnknown, 0x00000100, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IEnumUnknown : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Next(
+        ULONG celt,
+        IUnknown **rgelt,
+        ULONG *pceltFetched) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Skip(
+        ULONG celt) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IEnumUnknown **ppenum) = 0;
+
+};
+#else
+typedef struct IEnumUnknownVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IEnumUnknown* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IEnumUnknown* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IEnumUnknown* This);
+
+    /*** IEnumUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *Next)(
+        IEnumUnknown* This,
+        ULONG celt,
+        IUnknown **rgelt,
+        ULONG *pceltFetched);
+
+    HRESULT (STDMETHODCALLTYPE *Skip)(
+        IEnumUnknown* This,
+        ULONG celt);
+
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        IEnumUnknown* This);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IEnumUnknown* This,
+        IEnumUnknown **ppenum);
+
+    END_INTERFACE
+} IEnumUnknownVtbl;
+interface IEnumUnknown {
+    CONST_VTBL IEnumUnknownVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IEnumUnknown_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumUnknown_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumUnknown_Release(This) (This)->lpVtbl->Release(This)
+/*** IEnumUnknown methods ***/
+#define IEnumUnknown_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
+#define IEnumUnknown_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumUnknown_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumUnknown_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IEnumUnknown_RemoteNext_Proxy(
+    IEnumUnknown* This,
+    ULONG celt,
+    IUnknown **rgelt,
+    ULONG *pceltFetched);
+void __RPC_STUB IEnumUnknown_RemoteNext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumUnknown_Skip_Proxy(
+    IEnumUnknown* This,
+    ULONG celt);
+void __RPC_STUB IEnumUnknown_Skip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumUnknown_Reset_Proxy(
+    IEnumUnknown* This);
+void __RPC_STUB IEnumUnknown_Reset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumUnknown_Clone_Proxy(
+    IEnumUnknown* This,
+    IEnumUnknown **ppenum);
+void __RPC_STUB IEnumUnknown_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IEnumUnknown_Next_Proxy(
+    IEnumUnknown* This,
+    ULONG celt,
+    IUnknown **rgelt,
+    ULONG *pceltFetched);
+HRESULT __RPC_STUB IEnumUnknown_Next_Stub(
+    IEnumUnknown* This,
+    ULONG celt,
+    IUnknown **rgelt,
+    ULONG *pceltFetched);
+
+#endif  /* __IEnumUnknown_INTERFACE_DEFINED__ */
+
+#ifndef __ISurrogate_FWD_DEFINED__
+#define __ISurrogate_FWD_DEFINED__
+typedef interface ISurrogate ISurrogate;
+#endif
+
+typedef ISurrogate *LPSURROGATE;
+/*****************************************************************************
+ * ISurrogate interface
+ */
+#ifndef __ISurrogate_INTERFACE_DEFINED__
+#define __ISurrogate_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ISurrogate, 0x00000022, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ISurrogate : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE LoadDllServer(
+        REFCLSID Clsid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE FreeSurrogate(
+        ) = 0;
+
+};
+#else
+typedef struct ISurrogateVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ISurrogate* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ISurrogate* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ISurrogate* This);
+
+    /*** ISurrogate methods ***/
+    HRESULT (STDMETHODCALLTYPE *LoadDllServer)(
+        ISurrogate* This,
+        REFCLSID Clsid);
+
+    HRESULT (STDMETHODCALLTYPE *FreeSurrogate)(
+        ISurrogate* This);
+
+    END_INTERFACE
+} ISurrogateVtbl;
+interface ISurrogate {
+    CONST_VTBL ISurrogateVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ISurrogate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ISurrogate_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ISurrogate_Release(This) (This)->lpVtbl->Release(This)
+/*** ISurrogate methods ***/
+#define ISurrogate_LoadDllServer(This,Clsid) (This)->lpVtbl->LoadDllServer(This,Clsid)
+#define ISurrogate_FreeSurrogate(This) (This)->lpVtbl->FreeSurrogate(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ISurrogate_LoadDllServer_Proxy(
+    ISurrogate* This,
+    REFCLSID Clsid);
+void __RPC_STUB ISurrogate_LoadDllServer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISurrogate_FreeSurrogate_Proxy(
+    ISurrogate* This);
+void __RPC_STUB ISurrogate_FreeSurrogate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ISurrogate_INTERFACE_DEFINED__ */
+
+#ifndef __IGlobalInterfaceTable_FWD_DEFINED__
+#define __IGlobalInterfaceTable_FWD_DEFINED__
+typedef interface IGlobalInterfaceTable IGlobalInterfaceTable;
+#endif
+
+typedef IGlobalInterfaceTable *LPGLOBALINTERFACETABLE;
+/*****************************************************************************
+ * IGlobalInterfaceTable interface
+ */
+#ifndef __IGlobalInterfaceTable_INTERFACE_DEFINED__
+#define __IGlobalInterfaceTable_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IGlobalInterfaceTable, 0x00000146, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IGlobalInterfaceTable : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE RegisterInterfaceInGlobal(
+        IUnknown *pUnk,
+        REFIID riid,
+        DWORD *pdwCookie) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RevokeInterfaceFromGlobal(
+        DWORD dwCookie) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetInterfaceFromGlobal(
+        DWORD dwCookie,
+        REFIID riid,
+        void **ppv) = 0;
+
+};
+#else
+typedef struct IGlobalInterfaceTableVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IGlobalInterfaceTable* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IGlobalInterfaceTable* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IGlobalInterfaceTable* This);
+
+    /*** IGlobalInterfaceTable methods ***/
+    HRESULT (STDMETHODCALLTYPE *RegisterInterfaceInGlobal)(
+        IGlobalInterfaceTable* This,
+        IUnknown *pUnk,
+        REFIID riid,
+        DWORD *pdwCookie);
+
+    HRESULT (STDMETHODCALLTYPE *RevokeInterfaceFromGlobal)(
+        IGlobalInterfaceTable* This,
+        DWORD dwCookie);
+
+    HRESULT (STDMETHODCALLTYPE *GetInterfaceFromGlobal)(
+        IGlobalInterfaceTable* This,
+        DWORD dwCookie,
+        REFIID riid,
+        void **ppv);
+
+    END_INTERFACE
+} IGlobalInterfaceTableVtbl;
+interface IGlobalInterfaceTable {
+    CONST_VTBL IGlobalInterfaceTableVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IGlobalInterfaceTable_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IGlobalInterfaceTable_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IGlobalInterfaceTable_Release(This) (This)->lpVtbl->Release(This)
+/*** IGlobalInterfaceTable methods ***/
+#define IGlobalInterfaceTable_RegisterInterfaceInGlobal(This,pUnk,riid,pdwCookie) (This)->lpVtbl->RegisterInterfaceInGlobal(This,pUnk,riid,pdwCookie)
+#define IGlobalInterfaceTable_RevokeInterfaceFromGlobal(This,dwCookie) (This)->lpVtbl->RevokeInterfaceFromGlobal(This,dwCookie)
+#define IGlobalInterfaceTable_GetInterfaceFromGlobal(This,dwCookie,riid,ppv) (This)->lpVtbl->GetInterfaceFromGlobal(This,dwCookie,riid,ppv)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IGlobalInterfaceTable_RegisterInterfaceInGlobal_Proxy(
+    IGlobalInterfaceTable* This,
+    IUnknown *pUnk,
+    REFIID riid,
+    DWORD *pdwCookie);
+void __RPC_STUB IGlobalInterfaceTable_RegisterInterfaceInGlobal_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IGlobalInterfaceTable_RevokeInterfaceFromGlobal_Proxy(
+    IGlobalInterfaceTable* This,
+    DWORD dwCookie);
+void __RPC_STUB IGlobalInterfaceTable_RevokeInterfaceFromGlobal_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IGlobalInterfaceTable_GetInterfaceFromGlobal_Proxy(
+    IGlobalInterfaceTable* This,
+    DWORD dwCookie,
+    REFIID riid,
+    void **ppv);
+void __RPC_STUB IGlobalInterfaceTable_GetInterfaceFromGlobal_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IGlobalInterfaceTable_INTERFACE_DEFINED__ */
+
+#ifndef __IBindCtx_FWD_DEFINED__
+#define __IBindCtx_FWD_DEFINED__
+typedef interface IBindCtx IBindCtx;
+#endif
+
+typedef IBindCtx *LPBINDCTX;
+typedef IBindCtx *LPBC;
+typedef struct tagBIND_OPTS {
+    DWORD cbStruct;
+    DWORD grfFlags;
+    DWORD grfMode;
+    DWORD dwTickCountDeadline;
+} BIND_OPTS;
+typedef struct tagBIND_OPTS *LPBIND_OPTS;
+typedef struct tagBIND_OPTS2 {
+    DWORD cbStruct;
+    DWORD grfFlags;
+    DWORD grfMode;
+    DWORD dwTickCountDeadline;
+    DWORD dwTrackFlags;
+    DWORD dwClassContext;
+    LCID locale;
+    COSERVERINFO *pServerInfo;
+} BIND_OPTS2;
+typedef struct tagBIND_OPTS2 *LPBIND_OPTS2;
+typedef enum tagBIND_FLAGS {
+    BIND_MAYBOTHERUSER = 1,
+    BIND_JUSTTESTEXISTENCE = 2
+} BIND_FLAGS;
+/*****************************************************************************
+ * IBindCtx interface
+ */
+#ifndef __IBindCtx_INTERFACE_DEFINED__
+#define __IBindCtx_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBindCtx, 0x0000000e, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IBindCtx : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE RegisterObjectBound(
+        IUnknown *punk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RevokeObjectBound(
+        IUnknown *punk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ReleaseBoundObjects(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetBindOptions(
+        BIND_OPTS *pbindopts) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetBindOptions(
+        BIND_OPTS *pbindopts) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetRunningObjectTable(
+        IRunningObjectTable **pprot) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RegisterObjectParam(
+        LPOLESTR pszKey,
+        IUnknown *punk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetObjectParam(
+        LPOLESTR pszKey,
+        IUnknown **ppunk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumObjectParam(
+        IEnumString **ppenum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RevokeObjectParam(
+        LPOLESTR pszKey) = 0;
+
+};
+#else
+typedef struct IBindCtxVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBindCtx* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBindCtx* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBindCtx* This);
+
+    /*** IBindCtx methods ***/
+    HRESULT (STDMETHODCALLTYPE *RegisterObjectBound)(
+        IBindCtx* This,
+        IUnknown *punk);
+
+    HRESULT (STDMETHODCALLTYPE *RevokeObjectBound)(
+        IBindCtx* This,
+        IUnknown *punk);
+
+    HRESULT (STDMETHODCALLTYPE *ReleaseBoundObjects)(
+        IBindCtx* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetBindOptions)(
+        IBindCtx* This,
+        BIND_OPTS *pbindopts);
+
+    HRESULT (STDMETHODCALLTYPE *GetBindOptions)(
+        IBindCtx* This,
+        BIND_OPTS *pbindopts);
+
+    HRESULT (STDMETHODCALLTYPE *GetRunningObjectTable)(
+        IBindCtx* This,
+        IRunningObjectTable **pprot);
+
+    HRESULT (STDMETHODCALLTYPE *RegisterObjectParam)(
+        IBindCtx* This,
+        LPOLESTR pszKey,
+        IUnknown *punk);
+
+    HRESULT (STDMETHODCALLTYPE *GetObjectParam)(
+        IBindCtx* This,
+        LPOLESTR pszKey,
+        IUnknown **ppunk);
+
+    HRESULT (STDMETHODCALLTYPE *EnumObjectParam)(
+        IBindCtx* This,
+        IEnumString **ppenum);
+
+    HRESULT (STDMETHODCALLTYPE *RevokeObjectParam)(
+        IBindCtx* This,
+        LPOLESTR pszKey);
+
+    END_INTERFACE
+} IBindCtxVtbl;
+interface IBindCtx {
+    CONST_VTBL IBindCtxVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IBindCtx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBindCtx_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBindCtx_Release(This) (This)->lpVtbl->Release(This)
+/*** IBindCtx methods ***/
+#define IBindCtx_RegisterObjectBound(This,punk) (This)->lpVtbl->RegisterObjectBound(This,punk)
+#define IBindCtx_RevokeObjectBound(This,punk) (This)->lpVtbl->RevokeObjectBound(This,punk)
+#define IBindCtx_ReleaseBoundObjects(This) (This)->lpVtbl->ReleaseBoundObjects(This)
+#define IBindCtx_SetBindOptions(This,pbindopts) (This)->lpVtbl->SetBindOptions(This,pbindopts)
+#define IBindCtx_GetBindOptions(This,pbindopts) (This)->lpVtbl->GetBindOptions(This,pbindopts)
+#define IBindCtx_GetRunningObjectTable(This,pprot) (This)->lpVtbl->GetRunningObjectTable(This,pprot)
+#define IBindCtx_RegisterObjectParam(This,pszKey,punk) (This)->lpVtbl->RegisterObjectParam(This,pszKey,punk)
+#define IBindCtx_GetObjectParam(This,pszKey,ppunk) (This)->lpVtbl->GetObjectParam(This,pszKey,ppunk)
+#define IBindCtx_EnumObjectParam(This,ppenum) (This)->lpVtbl->EnumObjectParam(This,ppenum)
+#define IBindCtx_RevokeObjectParam(This,pszKey) (This)->lpVtbl->RevokeObjectParam(This,pszKey)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBindCtx_RegisterObjectBound_Proxy(
+    IBindCtx* This,
+    IUnknown *punk);
+void __RPC_STUB IBindCtx_RegisterObjectBound_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBindCtx_RevokeObjectBound_Proxy(
+    IBindCtx* This,
+    IUnknown *punk);
+void __RPC_STUB IBindCtx_RevokeObjectBound_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBindCtx_ReleaseBoundObjects_Proxy(
+    IBindCtx* This);
+void __RPC_STUB IBindCtx_ReleaseBoundObjects_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBindCtx_RemoteSetBindOptions_Proxy(
+    IBindCtx* This,
+    BIND_OPTS2 *pbindopts);
+void __RPC_STUB IBindCtx_RemoteSetBindOptions_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBindCtx_RemoteGetBindOptions_Proxy(
+    IBindCtx* This,
+    BIND_OPTS2 *pbindopts);
+void __RPC_STUB IBindCtx_RemoteGetBindOptions_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBindCtx_GetRunningObjectTable_Proxy(
+    IBindCtx* This,
+    IRunningObjectTable **pprot);
+void __RPC_STUB IBindCtx_GetRunningObjectTable_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBindCtx_RegisterObjectParam_Proxy(
+    IBindCtx* This,
+    LPOLESTR pszKey,
+    IUnknown *punk);
+void __RPC_STUB IBindCtx_RegisterObjectParam_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBindCtx_GetObjectParam_Proxy(
+    IBindCtx* This,
+    LPOLESTR pszKey,
+    IUnknown **ppunk);
+void __RPC_STUB IBindCtx_GetObjectParam_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBindCtx_EnumObjectParam_Proxy(
+    IBindCtx* This,
+    IEnumString **ppenum);
+void __RPC_STUB IBindCtx_EnumObjectParam_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBindCtx_RevokeObjectParam_Proxy(
+    IBindCtx* This,
+    LPOLESTR pszKey);
+void __RPC_STUB IBindCtx_RevokeObjectParam_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IBindCtx_SetBindOptions_Proxy(
+    IBindCtx* This,
+    BIND_OPTS *pbindopts);
+HRESULT __RPC_STUB IBindCtx_SetBindOptions_Stub(
+    IBindCtx* This,
+    BIND_OPTS2 *pbindopts);
+HRESULT CALLBACK IBindCtx_GetBindOptions_Proxy(
+    IBindCtx* This,
+    BIND_OPTS *pbindopts);
+HRESULT __RPC_STUB IBindCtx_GetBindOptions_Stub(
+    IBindCtx* This,
+    BIND_OPTS2 *pbindopts);
+
+#endif  /* __IBindCtx_INTERFACE_DEFINED__ */
+
+#ifndef __IEnumMoniker_FWD_DEFINED__
+#define __IEnumMoniker_FWD_DEFINED__
+typedef interface IEnumMoniker IEnumMoniker;
+#endif
+
+typedef IEnumMoniker *LPENUMMONIKER;
+/*****************************************************************************
+ * IEnumMoniker interface
+ */
+#ifndef __IEnumMoniker_INTERFACE_DEFINED__
+#define __IEnumMoniker_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IEnumMoniker, 0x00000102, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IEnumMoniker : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Next(
+        ULONG celt,
+        IMoniker **rgelt,
+        ULONG *pceltFetched) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Skip(
+        ULONG celt) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IEnumMoniker **ppenum) = 0;
+
+};
+#else
+typedef struct IEnumMonikerVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IEnumMoniker* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IEnumMoniker* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IEnumMoniker* This);
+
+    /*** IEnumMoniker methods ***/
+    HRESULT (STDMETHODCALLTYPE *Next)(
+        IEnumMoniker* This,
+        ULONG celt,
+        IMoniker **rgelt,
+        ULONG *pceltFetched);
+
+    HRESULT (STDMETHODCALLTYPE *Skip)(
+        IEnumMoniker* This,
+        ULONG celt);
+
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        IEnumMoniker* This);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IEnumMoniker* This,
+        IEnumMoniker **ppenum);
+
+    END_INTERFACE
+} IEnumMonikerVtbl;
+interface IEnumMoniker {
+    CONST_VTBL IEnumMonikerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IEnumMoniker_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumMoniker_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumMoniker_Release(This) (This)->lpVtbl->Release(This)
+/*** IEnumMoniker methods ***/
+#define IEnumMoniker_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
+#define IEnumMoniker_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumMoniker_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumMoniker_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IEnumMoniker_RemoteNext_Proxy(
+    IEnumMoniker* This,
+    ULONG celt,
+    IMoniker **rgelt,
+    ULONG *pceltFetched);
+void __RPC_STUB IEnumMoniker_RemoteNext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumMoniker_Skip_Proxy(
+    IEnumMoniker* This,
+    ULONG celt);
+void __RPC_STUB IEnumMoniker_Skip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumMoniker_Reset_Proxy(
+    IEnumMoniker* This);
+void __RPC_STUB IEnumMoniker_Reset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumMoniker_Clone_Proxy(
+    IEnumMoniker* This,
+    IEnumMoniker **ppenum);
+void __RPC_STUB IEnumMoniker_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IEnumMoniker_Next_Proxy(
+    IEnumMoniker* This,
+    ULONG celt,
+    IMoniker **rgelt,
+    ULONG *pceltFetched);
+HRESULT __RPC_STUB IEnumMoniker_Next_Stub(
+    IEnumMoniker* This,
+    ULONG celt,
+    IMoniker **rgelt,
+    ULONG *pceltFetched);
+
+#endif  /* __IEnumMoniker_INTERFACE_DEFINED__ */
+
+#ifndef __IRunnableObject_FWD_DEFINED__
+#define __IRunnableObject_FWD_DEFINED__
+typedef interface IRunnableObject IRunnableObject;
+#endif
+
+typedef IRunnableObject *LPRUNNABLEOBJECT;
+/*****************************************************************************
+ * IRunnableObject interface
+ */
+#ifndef __IRunnableObject_INTERFACE_DEFINED__
+#define __IRunnableObject_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IRunnableObject, 0x00000126, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IRunnableObject : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetRunningClass(
+        LPCLSID lpClsid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Run(
+        LPBINDCTX pbc) = 0;
+
+    virtual BOOL STDMETHODCALLTYPE IsRunning(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE LockRunning(
+        BOOL fLock,
+        BOOL fLastUnlockCloses) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetContainedObject(
+        BOOL fContained) = 0;
+
+};
+#else
+typedef struct IRunnableObjectVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IRunnableObject* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IRunnableObject* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IRunnableObject* This);
+
+    /*** IRunnableObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetRunningClass)(
+        IRunnableObject* This,
+        LPCLSID lpClsid);
+
+    HRESULT (STDMETHODCALLTYPE *Run)(
+        IRunnableObject* This,
+        LPBINDCTX pbc);
+
+    BOOL (STDMETHODCALLTYPE *IsRunning)(
+        IRunnableObject* This);
+
+    HRESULT (STDMETHODCALLTYPE *LockRunning)(
+        IRunnableObject* This,
+        BOOL fLock,
+        BOOL fLastUnlockCloses);
+
+    HRESULT (STDMETHODCALLTYPE *SetContainedObject)(
+        IRunnableObject* This,
+        BOOL fContained);
+
+    END_INTERFACE
+} IRunnableObjectVtbl;
+interface IRunnableObject {
+    CONST_VTBL IRunnableObjectVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IRunnableObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IRunnableObject_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRunnableObject_Release(This) (This)->lpVtbl->Release(This)
+/*** IRunnableObject methods ***/
+#define IRunnableObject_GetRunningClass(This,lpClsid) (This)->lpVtbl->GetRunningClass(This,lpClsid)
+#define IRunnableObject_Run(This,pbc) (This)->lpVtbl->Run(This,pbc)
+#define IRunnableObject_IsRunning(This) (This)->lpVtbl->IsRunning(This)
+#define IRunnableObject_LockRunning(This,fLock,fLastUnlockCloses) (This)->lpVtbl->LockRunning(This,fLock,fLastUnlockCloses)
+#define IRunnableObject_SetContainedObject(This,fContained) (This)->lpVtbl->SetContainedObject(This,fContained)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IRunnableObject_GetRunningClass_Proxy(
+    IRunnableObject* This,
+    LPCLSID lpClsid);
+void __RPC_STUB IRunnableObject_GetRunningClass_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRunnableObject_Run_Proxy(
+    IRunnableObject* This,
+    LPBINDCTX pbc);
+void __RPC_STUB IRunnableObject_Run_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRunnableObject_RemoteIsRunning_Proxy(
+    IRunnableObject* This);
+void __RPC_STUB IRunnableObject_RemoteIsRunning_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRunnableObject_LockRunning_Proxy(
+    IRunnableObject* This,
+    BOOL fLock,
+    BOOL fLastUnlockCloses);
+void __RPC_STUB IRunnableObject_LockRunning_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRunnableObject_SetContainedObject_Proxy(
+    IRunnableObject* This,
+    BOOL fContained);
+void __RPC_STUB IRunnableObject_SetContainedObject_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+BOOL CALLBACK IRunnableObject_IsRunning_Proxy(
+    IRunnableObject* This);
+HRESULT __RPC_STUB IRunnableObject_IsRunning_Stub(
+    IRunnableObject* This);
+
+#endif  /* __IRunnableObject_INTERFACE_DEFINED__ */
+
+#ifdef WINE_NO_UNICODE_MACROS
+#undef GetObject
+#endif
+typedef IRunningObjectTable *LPRUNNINGOBJECTTABLE;
+/*****************************************************************************
+ * IRunningObjectTable interface
+ */
+#ifndef __IRunningObjectTable_INTERFACE_DEFINED__
+#define __IRunningObjectTable_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IRunningObjectTable, 0x00000010, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IRunningObjectTable : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Register(
+        DWORD grfFlags,
+        IUnknown *punkObject,
+        IMoniker *pmkObjectName,
+        DWORD *pdwRegister) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Revoke(
+        DWORD dwRegister) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsRunning(
+        IMoniker *pmkObjectName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetObject(
+        IMoniker *pmkObjectName,
+        IUnknown **ppunkObject) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE NoteChangeTime(
+        DWORD dwRegister,
+        FILETIME *pfiletime) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTimeOfLastChange(
+        IMoniker *pmkObjectName,
+        FILETIME *pfiletime) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumRunning(
+        IEnumMoniker **ppenumMoniker) = 0;
+
+};
+#else
+typedef struct IRunningObjectTableVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IRunningObjectTable* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IRunningObjectTable* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IRunningObjectTable* This);
+
+    /*** IRunningObjectTable methods ***/
+    HRESULT (STDMETHODCALLTYPE *Register)(
+        IRunningObjectTable* This,
+        DWORD grfFlags,
+        IUnknown *punkObject,
+        IMoniker *pmkObjectName,
+        DWORD *pdwRegister);
+
+    HRESULT (STDMETHODCALLTYPE *Revoke)(
+        IRunningObjectTable* This,
+        DWORD dwRegister);
+
+    HRESULT (STDMETHODCALLTYPE *IsRunning)(
+        IRunningObjectTable* This,
+        IMoniker *pmkObjectName);
+
+    HRESULT (STDMETHODCALLTYPE *GetObject)(
+        IRunningObjectTable* This,
+        IMoniker *pmkObjectName,
+        IUnknown **ppunkObject);
+
+    HRESULT (STDMETHODCALLTYPE *NoteChangeTime)(
+        IRunningObjectTable* This,
+        DWORD dwRegister,
+        FILETIME *pfiletime);
+
+    HRESULT (STDMETHODCALLTYPE *GetTimeOfLastChange)(
+        IRunningObjectTable* This,
+        IMoniker *pmkObjectName,
+        FILETIME *pfiletime);
+
+    HRESULT (STDMETHODCALLTYPE *EnumRunning)(
+        IRunningObjectTable* This,
+        IEnumMoniker **ppenumMoniker);
+
+    END_INTERFACE
+} IRunningObjectTableVtbl;
+interface IRunningObjectTable {
+    CONST_VTBL IRunningObjectTableVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IRunningObjectTable_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IRunningObjectTable_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRunningObjectTable_Release(This) (This)->lpVtbl->Release(This)
+/*** IRunningObjectTable methods ***/
+#define IRunningObjectTable_Register(This,grfFlags,punkObject,pmkObjectName,pdwRegister) (This)->lpVtbl->Register(This,grfFlags,punkObject,pmkObjectName,pdwRegister)
+#define IRunningObjectTable_Revoke(This,dwRegister) (This)->lpVtbl->Revoke(This,dwRegister)
+#define IRunningObjectTable_IsRunning(This,pmkObjectName) (This)->lpVtbl->IsRunning(This,pmkObjectName)
+#define IRunningObjectTable_GetObject(This,pmkObjectName,ppunkObject) (This)->lpVtbl->GetObject(This,pmkObjectName,ppunkObject)
+#define IRunningObjectTable_NoteChangeTime(This,dwRegister,pfiletime) (This)->lpVtbl->NoteChangeTime(This,dwRegister,pfiletime)
+#define IRunningObjectTable_GetTimeOfLastChange(This,pmkObjectName,pfiletime) (This)->lpVtbl->GetTimeOfLastChange(This,pmkObjectName,pfiletime)
+#define IRunningObjectTable_EnumRunning(This,ppenumMoniker) (This)->lpVtbl->EnumRunning(This,ppenumMoniker)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_Register_Proxy(
+    IRunningObjectTable* This,
+    DWORD grfFlags,
+    IUnknown *punkObject,
+    IMoniker *pmkObjectName,
+    DWORD *pdwRegister);
+void __RPC_STUB IRunningObjectTable_Register_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_Revoke_Proxy(
+    IRunningObjectTable* This,
+    DWORD dwRegister);
+void __RPC_STUB IRunningObjectTable_Revoke_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_IsRunning_Proxy(
+    IRunningObjectTable* This,
+    IMoniker *pmkObjectName);
+void __RPC_STUB IRunningObjectTable_IsRunning_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_GetObject_Proxy(
+    IRunningObjectTable* This,
+    IMoniker *pmkObjectName,
+    IUnknown **ppunkObject);
+void __RPC_STUB IRunningObjectTable_GetObject_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_NoteChangeTime_Proxy(
+    IRunningObjectTable* This,
+    DWORD dwRegister,
+    FILETIME *pfiletime);
+void __RPC_STUB IRunningObjectTable_NoteChangeTime_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_GetTimeOfLastChange_Proxy(
+    IRunningObjectTable* This,
+    IMoniker *pmkObjectName,
+    FILETIME *pfiletime);
+void __RPC_STUB IRunningObjectTable_GetTimeOfLastChange_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_EnumRunning_Proxy(
+    IRunningObjectTable* This,
+    IEnumMoniker **ppenumMoniker);
+void __RPC_STUB IRunningObjectTable_EnumRunning_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IRunningObjectTable_INTERFACE_DEFINED__ */
+
+#ifndef __IPersist_FWD_DEFINED__
+#define __IPersist_FWD_DEFINED__
+typedef interface IPersist IPersist;
+#endif
+
+typedef IPersist *LPPERSIST;
+/*****************************************************************************
+ * IPersist interface
+ */
+#ifndef __IPersist_INTERFACE_DEFINED__
+#define __IPersist_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IPersist, 0x0000010c, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IPersist : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetClassID(
+        CLSID *pClassID) = 0;
+
+};
+#else
+typedef struct IPersistVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IPersist* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IPersist* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IPersist* This);
+
+    /*** IPersist methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetClassID)(
+        IPersist* This,
+        CLSID *pClassID);
+
+    END_INTERFACE
+} IPersistVtbl;
+interface IPersist {
+    CONST_VTBL IPersistVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IPersist_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IPersist_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IPersist_Release(This) (This)->lpVtbl->Release(This)
+/*** IPersist methods ***/
+#define IPersist_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IPersist_GetClassID_Proxy(
+    IPersist* This,
+    CLSID *pClassID);
+void __RPC_STUB IPersist_GetClassID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IPersist_INTERFACE_DEFINED__ */
+
+#ifndef __IPersistStream_FWD_DEFINED__
+#define __IPersistStream_FWD_DEFINED__
+typedef interface IPersistStream IPersistStream;
+#endif
+
+typedef IPersistStream *LPPERSISTSTREAM;
+/*****************************************************************************
+ * IPersistStream interface
+ */
+#ifndef __IPersistStream_INTERFACE_DEFINED__
+#define __IPersistStream_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IPersistStream, 0x00000109, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IPersistStream : public IPersist
+{
+    virtual HRESULT STDMETHODCALLTYPE IsDirty(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Load(
+        IStream *pStm) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Save(
+        IStream *pStm,
+        BOOL fClearDirty) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSizeMax(
+        ULARGE_INTEGER *pcbSize) = 0;
+
+};
+#else
+typedef struct IPersistStreamVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IPersistStream* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IPersistStream* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IPersistStream* This);
+
+    /*** IPersist methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetClassID)(
+        IPersistStream* This,
+        CLSID *pClassID);
+
+    /*** IPersistStream methods ***/
+    HRESULT (STDMETHODCALLTYPE *IsDirty)(
+        IPersistStream* This);
+
+    HRESULT (STDMETHODCALLTYPE *Load)(
+        IPersistStream* This,
+        IStream *pStm);
+
+    HRESULT (STDMETHODCALLTYPE *Save)(
+        IPersistStream* This,
+        IStream *pStm,
+        BOOL fClearDirty);
+
+    HRESULT (STDMETHODCALLTYPE *GetSizeMax)(
+        IPersistStream* This,
+        ULARGE_INTEGER *pcbSize);
+
+    END_INTERFACE
+} IPersistStreamVtbl;
+interface IPersistStream {
+    CONST_VTBL IPersistStreamVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IPersistStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IPersistStream_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IPersistStream_Release(This) (This)->lpVtbl->Release(This)
+/*** IPersist methods ***/
+#define IPersistStream_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)
+/*** IPersistStream methods ***/
+#define IPersistStream_IsDirty(This) (This)->lpVtbl->IsDirty(This)
+#define IPersistStream_Load(This,pStm) (This)->lpVtbl->Load(This,pStm)
+#define IPersistStream_Save(This,pStm,fClearDirty) (This)->lpVtbl->Save(This,pStm,fClearDirty)
+#define IPersistStream_GetSizeMax(This,pcbSize) (This)->lpVtbl->GetSizeMax(This,pcbSize)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IPersistStream_IsDirty_Proxy(
+    IPersistStream* This);
+void __RPC_STUB IPersistStream_IsDirty_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPersistStream_Load_Proxy(
+    IPersistStream* This,
+    IStream *pStm);
+void __RPC_STUB IPersistStream_Load_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPersistStream_Save_Proxy(
+    IPersistStream* This,
+    IStream *pStm,
+    BOOL fClearDirty);
+void __RPC_STUB IPersistStream_Save_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPersistStream_GetSizeMax_Proxy(
+    IPersistStream* This,
+    ULARGE_INTEGER *pcbSize);
+void __RPC_STUB IPersistStream_GetSizeMax_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IPersistStream_INTERFACE_DEFINED__ */
+
+typedef IMoniker *LPMONIKER;
+typedef enum tagMKSYS {
+    MKSYS_NONE = 0,
+    MKSYS_GENERICCOMPOSITE = 1,
+    MKSYS_FILEMONIKER = 2,
+    MKSYS_ANTIMONIKER = 3,
+    MKSYS_ITEMMONIKER = 4,
+    MKSYS_POINTERMONIKER = 5,
+    MKSYS_CLASSMONIKER = 7
+} MKSYS;
+typedef enum tagMKREDUCE {
+    MKRREDUCE_ONE = 3 << 16,
+    MKRREDUCE_TOUSER = 2 << 16,
+    MKRREDUCE_THROUGHUSER = 1 << 16,
+    MKRREDUCE_ALL = 0
+} MKRREDUCE;
+/*****************************************************************************
+ * IMoniker interface
+ */
+#ifndef __IMoniker_INTERFACE_DEFINED__
+#define __IMoniker_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMoniker, 0x0000000f, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IMoniker : public IPersistStream
+{
+    virtual HRESULT STDMETHODCALLTYPE BindToObject(
+        IBindCtx *pbc,
+        IMoniker *pmkToLeft,
+        REFIID riidResult,
+        void **ppvResult) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE BindToStorage(
+        IBindCtx *pbc,
+        IMoniker *pmkToLeft,
+        REFIID riid,
+        void **ppvObj) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reduce(
+        IBindCtx *pbc,
+        DWORD dwReduceHowFar,
+        IMoniker **ppmkToLeft,
+        IMoniker **ppmkReduced) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ComposeWith(
+        IMoniker *pmkRight,
+        BOOL fOnlyIfNotGeneric,
+        IMoniker **ppmkComposite) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Enum(
+        BOOL fForward,
+        IEnumMoniker **ppenumMoniker) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsEqual(
+        IMoniker *pmkOtherMoniker) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Hash(
+        DWORD *pdwHash) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsRunning(
+        IBindCtx *pbc,
+        IMoniker *pmkToLeft,
+        IMoniker *pmkNewlyRunning) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTimeOfLastChange(
+        IBindCtx *pbc,
+        IMoniker *pmkToLeft,
+        FILETIME *pFileTime) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Inverse(
+        IMoniker **ppmk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CommonPrefixWith(
+        IMoniker *pmkOther,
+        IMoniker **ppmkPrefix) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RelativePathTo(
+        IMoniker *pmkOther,
+        IMoniker **ppmkRelPath) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDisplayName(
+        IBindCtx *pbc,
+        IMoniker *pmkToLeft,
+        LPOLESTR *ppszDisplayName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ParseDisplayName(
+        IBindCtx *pbc,
+        IMoniker *pmkToLeft,
+        LPOLESTR pszDisplayName,
+        ULONG *pchEaten,
+        IMoniker **ppmkOut) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsSystemMoniker(
+        DWORD *pdwMksys) = 0;
+
+};
+#else
+typedef struct IMonikerVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IMoniker* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IMoniker* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IMoniker* This);
+
+    /*** IPersist methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetClassID)(
+        IMoniker* This,
+        CLSID *pClassID);
+
+    /*** IPersistStream methods ***/
+    HRESULT (STDMETHODCALLTYPE *IsDirty)(
+        IMoniker* This);
+
+    HRESULT (STDMETHODCALLTYPE *Load)(
+        IMoniker* This,
+        IStream *pStm);
+
+    HRESULT (STDMETHODCALLTYPE *Save)(
+        IMoniker* This,
+        IStream *pStm,
+        BOOL fClearDirty);
+
+    HRESULT (STDMETHODCALLTYPE *GetSizeMax)(
+        IMoniker* This,
+        ULARGE_INTEGER *pcbSize);
+
+    /*** IMoniker methods ***/
+    HRESULT (STDMETHODCALLTYPE *BindToObject)(
+        IMoniker* This,
+        IBindCtx *pbc,
+        IMoniker *pmkToLeft,
+        REFIID riidResult,
+        void **ppvResult);
+
+    HRESULT (STDMETHODCALLTYPE *BindToStorage)(
+        IMoniker* This,
+        IBindCtx *pbc,
+        IMoniker *pmkToLeft,
+        REFIID riid,
+        void **ppvObj);
+
+    HRESULT (STDMETHODCALLTYPE *Reduce)(
+        IMoniker* This,
+        IBindCtx *pbc,
+        DWORD dwReduceHowFar,
+        IMoniker **ppmkToLeft,
+        IMoniker **ppmkReduced);
+
+    HRESULT (STDMETHODCALLTYPE *ComposeWith)(
+        IMoniker* This,
+        IMoniker *pmkRight,
+        BOOL fOnlyIfNotGeneric,
+        IMoniker **ppmkComposite);
+
+    HRESULT (STDMETHODCALLTYPE *Enum)(
+        IMoniker* This,
+        BOOL fForward,
+        IEnumMoniker **ppenumMoniker);
+
+    HRESULT (STDMETHODCALLTYPE *IsEqual)(
+        IMoniker* This,
+        IMoniker *pmkOtherMoniker);
+
+    HRESULT (STDMETHODCALLTYPE *Hash)(
+        IMoniker* This,
+        DWORD *pdwHash);
+
+    HRESULT (STDMETHODCALLTYPE *IsRunning)(
+        IMoniker* This,
+        IBindCtx *pbc,
+        IMoniker *pmkToLeft,
+        IMoniker *pmkNewlyRunning);
+
+    HRESULT (STDMETHODCALLTYPE *GetTimeOfLastChange)(
+        IMoniker* This,
+        IBindCtx *pbc,
+        IMoniker *pmkToLeft,
+        FILETIME *pFileTime);
+
+    HRESULT (STDMETHODCALLTYPE *Inverse)(
+        IMoniker* This,
+        IMoniker **ppmk);
+
+    HRESULT (STDMETHODCALLTYPE *CommonPrefixWith)(
+        IMoniker* This,
+        IMoniker *pmkOther,
+        IMoniker **ppmkPrefix);
+
+    HRESULT (STDMETHODCALLTYPE *RelativePathTo)(
+        IMoniker* This,
+        IMoniker *pmkOther,
+        IMoniker **ppmkRelPath);
+
+    HRESULT (STDMETHODCALLTYPE *GetDisplayName)(
+        IMoniker* This,
+        IBindCtx *pbc,
+        IMoniker *pmkToLeft,
+        LPOLESTR *ppszDisplayName);
+
+    HRESULT (STDMETHODCALLTYPE *ParseDisplayName)(
+        IMoniker* This,
+        IBindCtx *pbc,
+        IMoniker *pmkToLeft,
+        LPOLESTR pszDisplayName,
+        ULONG *pchEaten,
+        IMoniker **ppmkOut);
+
+    HRESULT (STDMETHODCALLTYPE *IsSystemMoniker)(
+        IMoniker* This,
+        DWORD *pdwMksys);
+
+    END_INTERFACE
+} IMonikerVtbl;
+interface IMoniker {
+    CONST_VTBL IMonikerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IMoniker_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMoniker_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMoniker_Release(This) (This)->lpVtbl->Release(This)
+/*** IPersist methods ***/
+#define IMoniker_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)
+/*** IPersistStream methods ***/
+#define IMoniker_IsDirty(This) (This)->lpVtbl->IsDirty(This)
+#define IMoniker_Load(This,pStm) (This)->lpVtbl->Load(This,pStm)
+#define IMoniker_Save(This,pStm,fClearDirty) (This)->lpVtbl->Save(This,pStm,fClearDirty)
+#define IMoniker_GetSizeMax(This,pcbSize) (This)->lpVtbl->GetSizeMax(This,pcbSize)
+/*** IMoniker methods ***/
+#define IMoniker_BindToObject(This,pbc,pmkToLeft,riidResult,ppvResult) (This)->lpVtbl->BindToObject(This,pbc,pmkToLeft,riidResult,ppvResult)
+#define IMoniker_BindToStorage(This,pbc,pmkToLeft,riid,ppvObj) (This)->lpVtbl->BindToStorage(This,pbc,pmkToLeft,riid,ppvObj)
+#define IMoniker_Reduce(This,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced) (This)->lpVtbl->Reduce(This,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced)
+#define IMoniker_ComposeWith(This,pmkRight,fOnlyIfNotGeneric,ppmkComposite) (This)->lpVtbl->ComposeWith(This,pmkRight,fOnlyIfNotGeneric,ppmkComposite)
+#define IMoniker_Enum(This,fForward,ppenumMoniker) (This)->lpVtbl->Enum(This,fForward,ppenumMoniker)
+#define IMoniker_IsEqual(This,pmkOtherMoniker) (This)->lpVtbl->IsEqual(This,pmkOtherMoniker)
+#define IMoniker_Hash(This,pdwHash) (This)->lpVtbl->Hash(This,pdwHash)
+#define IMoniker_IsRunning(This,pbc,pmkToLeft,pmkNewlyRunning) (This)->lpVtbl->IsRunning(This,pbc,pmkToLeft,pmkNewlyRunning)
+#define IMoniker_GetTimeOfLastChange(This,pbc,pmkToLeft,pFileTime) (This)->lpVtbl->GetTimeOfLastChange(This,pbc,pmkToLeft,pFileTime)
+#define IMoniker_Inverse(This,ppmk) (This)->lpVtbl->Inverse(This,ppmk)
+#define IMoniker_CommonPrefixWith(This,pmkOther,ppmkPrefix) (This)->lpVtbl->CommonPrefixWith(This,pmkOther,ppmkPrefix)
+#define IMoniker_RelativePathTo(This,pmkOther,ppmkRelPath) (This)->lpVtbl->RelativePathTo(This,pmkOther,ppmkRelPath)
+#define IMoniker_GetDisplayName(This,pbc,pmkToLeft,ppszDisplayName) (This)->lpVtbl->GetDisplayName(This,pbc,pmkToLeft,ppszDisplayName)
+#define IMoniker_ParseDisplayName(This,pbc,pmkToLeft,pszDisplayName,pchEaten,ppmkOut) (This)->lpVtbl->ParseDisplayName(This,pbc,pmkToLeft,pszDisplayName,pchEaten,ppmkOut)
+#define IMoniker_IsSystemMoniker(This,pdwMksys) (This)->lpVtbl->IsSystemMoniker(This,pdwMksys)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IMoniker_RemoteBindToObject_Proxy(
+    IMoniker* This,
+    IBindCtx *pbc,
+    IMoniker *pmkToLeft,
+    REFIID riidResult,
+    IUnknown **ppvResult);
+void __RPC_STUB IMoniker_RemoteBindToObject_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMoniker_RemoteBindToStorage_Proxy(
+    IMoniker* This,
+    IBindCtx *pbc,
+    IMoniker *pmkToLeft,
+    REFIID riid,
+    IUnknown **ppvObj);
+void __RPC_STUB IMoniker_RemoteBindToStorage_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMoniker_Reduce_Proxy(
+    IMoniker* This,
+    IBindCtx *pbc,
+    DWORD dwReduceHowFar,
+    IMoniker **ppmkToLeft,
+    IMoniker **ppmkReduced);
+void __RPC_STUB IMoniker_Reduce_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMoniker_ComposeWith_Proxy(
+    IMoniker* This,
+    IMoniker *pmkRight,
+    BOOL fOnlyIfNotGeneric,
+    IMoniker **ppmkComposite);
+void __RPC_STUB IMoniker_ComposeWith_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMoniker_Enum_Proxy(
+    IMoniker* This,
+    BOOL fForward,
+    IEnumMoniker **ppenumMoniker);
+void __RPC_STUB IMoniker_Enum_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMoniker_IsEqual_Proxy(
+    IMoniker* This,
+    IMoniker *pmkOtherMoniker);
+void __RPC_STUB IMoniker_IsEqual_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMoniker_Hash_Proxy(
+    IMoniker* This,
+    DWORD *pdwHash);
+void __RPC_STUB IMoniker_Hash_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMoniker_IsRunning_Proxy(
+    IMoniker* This,
+    IBindCtx *pbc,
+    IMoniker *pmkToLeft,
+    IMoniker *pmkNewlyRunning);
+void __RPC_STUB IMoniker_IsRunning_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMoniker_GetTimeOfLastChange_Proxy(
+    IMoniker* This,
+    IBindCtx *pbc,
+    IMoniker *pmkToLeft,
+    FILETIME *pFileTime);
+void __RPC_STUB IMoniker_GetTimeOfLastChange_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMoniker_Inverse_Proxy(
+    IMoniker* This,
+    IMoniker **ppmk);
+void __RPC_STUB IMoniker_Inverse_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMoniker_CommonPrefixWith_Proxy(
+    IMoniker* This,
+    IMoniker *pmkOther,
+    IMoniker **ppmkPrefix);
+void __RPC_STUB IMoniker_CommonPrefixWith_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMoniker_RelativePathTo_Proxy(
+    IMoniker* This,
+    IMoniker *pmkOther,
+    IMoniker **ppmkRelPath);
+void __RPC_STUB IMoniker_RelativePathTo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMoniker_GetDisplayName_Proxy(
+    IMoniker* This,
+    IBindCtx *pbc,
+    IMoniker *pmkToLeft,
+    LPOLESTR *ppszDisplayName);
+void __RPC_STUB IMoniker_GetDisplayName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMoniker_ParseDisplayName_Proxy(
+    IMoniker* This,
+    IBindCtx *pbc,
+    IMoniker *pmkToLeft,
+    LPOLESTR pszDisplayName,
+    ULONG *pchEaten,
+    IMoniker **ppmkOut);
+void __RPC_STUB IMoniker_ParseDisplayName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IMoniker_IsSystemMoniker_Proxy(
+    IMoniker* This,
+    DWORD *pdwMksys);
+void __RPC_STUB IMoniker_IsSystemMoniker_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IMoniker_BindToObject_Proxy(
+    IMoniker* This,
+    IBindCtx *pbc,
+    IMoniker *pmkToLeft,
+    REFIID riidResult,
+    void **ppvResult);
+HRESULT __RPC_STUB IMoniker_BindToObject_Stub(
+    IMoniker* This,
+    IBindCtx *pbc,
+    IMoniker *pmkToLeft,
+    REFIID riidResult,
+    IUnknown **ppvResult);
+HRESULT CALLBACK IMoniker_BindToStorage_Proxy(
+    IMoniker* This,
+    IBindCtx *pbc,
+    IMoniker *pmkToLeft,
+    REFIID riid,
+    void **ppvObj);
+HRESULT __RPC_STUB IMoniker_BindToStorage_Stub(
+    IMoniker* This,
+    IBindCtx *pbc,
+    IMoniker *pmkToLeft,
+    REFIID riid,
+    IUnknown **ppvObj);
+
+#endif  /* __IMoniker_INTERFACE_DEFINED__ */
+
+#ifndef __IROTData_FWD_DEFINED__
+#define __IROTData_FWD_DEFINED__
+typedef interface IROTData IROTData;
+#endif
+
+/*****************************************************************************
+ * IROTData interface
+ */
+#ifndef __IROTData_INTERFACE_DEFINED__
+#define __IROTData_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IROTData, 0xf29f6bc0, 0x5021, 0x11ce, 0xaa,0x15, 0x00,0x00,0x69,0x01,0x29,0x3f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IROTData : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetComparisonData(
+        byte *pbData,
+        ULONG cbMax,
+        ULONG *pcbData) = 0;
+
+};
+#else
+typedef struct IROTDataVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IROTData* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IROTData* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IROTData* This);
+
+    /*** IROTData methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetComparisonData)(
+        IROTData* This,
+        byte *pbData,
+        ULONG cbMax,
+        ULONG *pcbData);
+
+    END_INTERFACE
+} IROTDataVtbl;
+interface IROTData {
+    CONST_VTBL IROTDataVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IROTData_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IROTData_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IROTData_Release(This) (This)->lpVtbl->Release(This)
+/*** IROTData methods ***/
+#define IROTData_GetComparisonData(This,pbData,cbMax,pcbData) (This)->lpVtbl->GetComparisonData(This,pbData,cbMax,pcbData)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IROTData_GetComparisonData_Proxy(
+    IROTData* This,
+    byte *pbData,
+    ULONG cbMax,
+    ULONG *pcbData);
+void __RPC_STUB IROTData_GetComparisonData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IROTData_INTERFACE_DEFINED__ */
+
+typedef IEnumString *LPENUMSTRING;
+/*****************************************************************************
+ * IEnumString interface
+ */
+#ifndef __IEnumString_INTERFACE_DEFINED__
+#define __IEnumString_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IEnumString, 0x00000101, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IEnumString : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Next(
+        ULONG celt,
+        LPOLESTR *rgelt,
+        ULONG *pceltFetched) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Skip(
+        ULONG celt) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IEnumString **ppenum) = 0;
+
+};
+#else
+typedef struct IEnumStringVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IEnumString* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IEnumString* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IEnumString* This);
+
+    /*** IEnumString methods ***/
+    HRESULT (STDMETHODCALLTYPE *Next)(
+        IEnumString* This,
+        ULONG celt,
+        LPOLESTR *rgelt,
+        ULONG *pceltFetched);
+
+    HRESULT (STDMETHODCALLTYPE *Skip)(
+        IEnumString* This,
+        ULONG celt);
+
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        IEnumString* This);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IEnumString* This,
+        IEnumString **ppenum);
+
+    END_INTERFACE
+} IEnumStringVtbl;
+interface IEnumString {
+    CONST_VTBL IEnumStringVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IEnumString_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumString_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumString_Release(This) (This)->lpVtbl->Release(This)
+/*** IEnumString methods ***/
+#define IEnumString_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
+#define IEnumString_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumString_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumString_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IEnumString_RemoteNext_Proxy(
+    IEnumString* This,
+    ULONG celt,
+    LPOLESTR *rgelt,
+    ULONG *pceltFetched);
+void __RPC_STUB IEnumString_RemoteNext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumString_Skip_Proxy(
+    IEnumString* This,
+    ULONG celt);
+void __RPC_STUB IEnumString_Skip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumString_Reset_Proxy(
+    IEnumString* This);
+void __RPC_STUB IEnumString_Reset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumString_Clone_Proxy(
+    IEnumString* This,
+    IEnumString **ppenum);
+void __RPC_STUB IEnumString_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IEnumString_Next_Proxy(
+    IEnumString* This,
+    ULONG celt,
+    LPOLESTR *rgelt,
+    ULONG *pceltFetched);
+HRESULT __RPC_STUB IEnumString_Next_Stub(
+    IEnumString* This,
+    ULONG celt,
+    LPOLESTR *rgelt,
+    ULONG *pceltFetched);
+
+#endif  /* __IEnumString_INTERFACE_DEFINED__ */
+
+#ifndef __IClassActivator_FWD_DEFINED__
+#define __IClassActivator_FWD_DEFINED__
+typedef interface IClassActivator IClassActivator;
+#endif
+
+/*****************************************************************************
+ * IClassActivator interface
+ */
+#ifndef __IClassActivator_INTERFACE_DEFINED__
+#define __IClassActivator_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IClassActivator, 0x00000140, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IClassActivator : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetClassObject(
+        REFCLSID rclsid,
+        DWORD dwClassContext,
+        LCID locale,
+        REFIID riid,
+        void **ppv) = 0;
+
+};
+#else
+typedef struct IClassActivatorVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IClassActivator* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IClassActivator* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IClassActivator* This);
+
+    /*** IClassActivator methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetClassObject)(
+        IClassActivator* This,
+        REFCLSID rclsid,
+        DWORD dwClassContext,
+        LCID locale,
+        REFIID riid,
+        void **ppv);
+
+    END_INTERFACE
+} IClassActivatorVtbl;
+interface IClassActivator {
+    CONST_VTBL IClassActivatorVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IClassActivator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IClassActivator_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IClassActivator_Release(This) (This)->lpVtbl->Release(This)
+/*** IClassActivator methods ***/
+#define IClassActivator_GetClassObject(This,rclsid,dwClassContext,locale,riid,ppv) (This)->lpVtbl->GetClassObject(This,rclsid,dwClassContext,locale,riid,ppv)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IClassActivator_GetClassObject_Proxy(
+    IClassActivator* This,
+    REFCLSID rclsid,
+    DWORD dwClassContext,
+    LCID locale,
+    REFIID riid,
+    void **ppv);
+void __RPC_STUB IClassActivator_GetClassObject_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IClassActivator_INTERFACE_DEFINED__ */
+
+#ifndef __ISequentialStream_FWD_DEFINED__
+#define __ISequentialStream_FWD_DEFINED__
+typedef interface ISequentialStream ISequentialStream;
+#endif
+
+/*****************************************************************************
+ * ISequentialStream interface
+ */
+#ifndef __ISequentialStream_INTERFACE_DEFINED__
+#define __ISequentialStream_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ISequentialStream, 0x0c733a30, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ISequentialStream : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Read(
+        void *pv,
+        ULONG cb,
+        ULONG *pcbRead) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Write(
+        const void *pv,
+        ULONG cb,
+        ULONG *pcbWritten) = 0;
+
+};
+#else
+typedef struct ISequentialStreamVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ISequentialStream* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ISequentialStream* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ISequentialStream* This);
+
+    /*** ISequentialStream methods ***/
+    HRESULT (STDMETHODCALLTYPE *Read)(
+        ISequentialStream* This,
+        void *pv,
+        ULONG cb,
+        ULONG *pcbRead);
+
+    HRESULT (STDMETHODCALLTYPE *Write)(
+        ISequentialStream* This,
+        const void *pv,
+        ULONG cb,
+        ULONG *pcbWritten);
+
+    END_INTERFACE
+} ISequentialStreamVtbl;
+interface ISequentialStream {
+    CONST_VTBL ISequentialStreamVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ISequentialStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ISequentialStream_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ISequentialStream_Release(This) (This)->lpVtbl->Release(This)
+/*** ISequentialStream methods ***/
+#define ISequentialStream_Read(This,pv,cb,pcbRead) (This)->lpVtbl->Read(This,pv,cb,pcbRead)
+#define ISequentialStream_Write(This,pv,cb,pcbWritten) (This)->lpVtbl->Write(This,pv,cb,pcbWritten)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ISequentialStream_RemoteRead_Proxy(
+    ISequentialStream* This,
+    byte *pv,
+    ULONG cb,
+    ULONG *pcbRead);
+void __RPC_STUB ISequentialStream_RemoteRead_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISequentialStream_RemoteWrite_Proxy(
+    ISequentialStream* This,
+    const byte *pv,
+    ULONG cb,
+    ULONG *pcbWritten);
+void __RPC_STUB ISequentialStream_RemoteWrite_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ISequentialStream_Read_Proxy(
+    ISequentialStream* This,
+    void *pv,
+    ULONG cb,
+    ULONG *pcbRead);
+HRESULT __RPC_STUB ISequentialStream_Read_Stub(
+    ISequentialStream* This,
+    byte *pv,
+    ULONG cb,
+    ULONG *pcbRead);
+HRESULT CALLBACK ISequentialStream_Write_Proxy(
+    ISequentialStream* This,
+    const void *pv,
+    ULONG cb,
+    ULONG *pcbWritten);
+HRESULT __RPC_STUB ISequentialStream_Write_Stub(
+    ISequentialStream* This,
+    const byte *pv,
+    ULONG cb,
+    ULONG *pcbWritten);
+
+#endif  /* __ISequentialStream_INTERFACE_DEFINED__ */
+
+typedef IStream *LPSTREAM;
+typedef struct tagSTATSTG {
+    LPOLESTR pwcsName;
+    DWORD type;
+    ULARGE_INTEGER cbSize;
+    FILETIME mtime;
+    FILETIME ctime;
+    FILETIME atime;
+    DWORD grfMode;
+    DWORD grfLocksSupported;
+    CLSID clsid;
+    DWORD grfStateBits;
+    DWORD reserved;
+} STATSTG;
+typedef enum tagSTGTY {
+    STGTY_STORAGE = 1,
+    STGTY_STREAM = 2,
+    STGTY_LOCKBYTES = 3,
+    STGTY_PROPERTY = 4
+} STGTY;
+typedef enum tagSTREAM_SEEK {
+    STREAM_SEEK_SET = 0,
+    STREAM_SEEK_CUR = 1,
+    STREAM_SEEK_END = 2
+} STREAM_SEEK;
+#undef LOCK_MAND
+#undef LOCK_READ
+#undef LOCK_WRITE
+#undef LOCK_RW
+typedef enum tagLOCKTYPE {
+    LOCK_WRITE = 1,
+    LOCK_EXCLUSIVE = 2,
+    LOCK_ONLYONCE = 4
+} LOCKTYPE;
+/*****************************************************************************
+ * IStream interface
+ */
+#ifndef __IStream_INTERFACE_DEFINED__
+#define __IStream_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IStream, 0x0000000c, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IStream : public ISequentialStream
+{
+    virtual HRESULT STDMETHODCALLTYPE Seek(
+        LARGE_INTEGER dlibMove,
+        DWORD dwOrigin,
+        ULARGE_INTEGER *plibNewPosition) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetSize(
+        ULARGE_INTEGER libNewSize) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CopyTo(
+        IStream *pstm,
+        ULARGE_INTEGER cb,
+        ULARGE_INTEGER *pcbRead,
+        ULARGE_INTEGER *pcbWritten) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Commit(
+        DWORD grfCommitFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Revert(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE LockRegion(
+        ULARGE_INTEGER libOffset,
+        ULARGE_INTEGER cb,
+        DWORD dwLockType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnlockRegion(
+        ULARGE_INTEGER libOffset,
+        ULARGE_INTEGER cb,
+        DWORD dwLockType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Stat(
+        STATSTG *pstatstg,
+        DWORD grfStatFlag) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IStream **ppstm) = 0;
+
+};
+#else
+typedef struct IStreamVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IStream* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IStream* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IStream* This);
+
+    /*** ISequentialStream methods ***/
+    HRESULT (STDMETHODCALLTYPE *Read)(
+        IStream* This,
+        void *pv,
+        ULONG cb,
+        ULONG *pcbRead);
+
+    HRESULT (STDMETHODCALLTYPE *Write)(
+        IStream* This,
+        const void *pv,
+        ULONG cb,
+        ULONG *pcbWritten);
+
+    /*** IStream methods ***/
+    HRESULT (STDMETHODCALLTYPE *Seek)(
+        IStream* This,
+        LARGE_INTEGER dlibMove,
+        DWORD dwOrigin,
+        ULARGE_INTEGER *plibNewPosition);
+
+    HRESULT (STDMETHODCALLTYPE *SetSize)(
+        IStream* This,
+        ULARGE_INTEGER libNewSize);
+
+    HRESULT (STDMETHODCALLTYPE *CopyTo)(
+        IStream* This,
+        IStream *pstm,
+        ULARGE_INTEGER cb,
+        ULARGE_INTEGER *pcbRead,
+        ULARGE_INTEGER *pcbWritten);
+
+    HRESULT (STDMETHODCALLTYPE *Commit)(
+        IStream* This,
+        DWORD grfCommitFlags);
+
+    HRESULT (STDMETHODCALLTYPE *Revert)(
+        IStream* This);
+
+    HRESULT (STDMETHODCALLTYPE *LockRegion)(
+        IStream* This,
+        ULARGE_INTEGER libOffset,
+        ULARGE_INTEGER cb,
+        DWORD dwLockType);
+
+    HRESULT (STDMETHODCALLTYPE *UnlockRegion)(
+        IStream* This,
+        ULARGE_INTEGER libOffset,
+        ULARGE_INTEGER cb,
+        DWORD dwLockType);
+
+    HRESULT (STDMETHODCALLTYPE *Stat)(
+        IStream* This,
+        STATSTG *pstatstg,
+        DWORD grfStatFlag);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IStream* This,
+        IStream **ppstm);
+
+    END_INTERFACE
+} IStreamVtbl;
+interface IStream {
+    CONST_VTBL IStreamVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IStream_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IStream_Release(This) (This)->lpVtbl->Release(This)
+/*** ISequentialStream methods ***/
+#define IStream_Read(This,pv,cb,pcbRead) (This)->lpVtbl->Read(This,pv,cb,pcbRead)
+#define IStream_Write(This,pv,cb,pcbWritten) (This)->lpVtbl->Write(This,pv,cb,pcbWritten)
+/*** IStream methods ***/
+#define IStream_Seek(This,dlibMove,dwOrigin,plibNewPosition) (This)->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition)
+#define IStream_SetSize(This,libNewSize) (This)->lpVtbl->SetSize(This,libNewSize)
+#define IStream_CopyTo(This,pstm,cb,pcbRead,pcbWritten) (This)->lpVtbl->CopyTo(This,pstm,cb,pcbRead,pcbWritten)
+#define IStream_Commit(This,grfCommitFlags) (This)->lpVtbl->Commit(This,grfCommitFlags)
+#define IStream_Revert(This) (This)->lpVtbl->Revert(This)
+#define IStream_LockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->LockRegion(This,libOffset,cb,dwLockType)
+#define IStream_UnlockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->UnlockRegion(This,libOffset,cb,dwLockType)
+#define IStream_Stat(This,pstatstg,grfStatFlag) (This)->lpVtbl->Stat(This,pstatstg,grfStatFlag)
+#define IStream_Clone(This,ppstm) (This)->lpVtbl->Clone(This,ppstm)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IStream_RemoteSeek_Proxy(
+    IStream* This,
+    LARGE_INTEGER dlibMove,
+    DWORD dwOrigin,
+    ULARGE_INTEGER *plibNewPosition);
+void __RPC_STUB IStream_RemoteSeek_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IStream_SetSize_Proxy(
+    IStream* This,
+    ULARGE_INTEGER libNewSize);
+void __RPC_STUB IStream_SetSize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IStream_RemoteCopyTo_Proxy(
+    IStream* This,
+    IStream *pstm,
+    ULARGE_INTEGER cb,
+    ULARGE_INTEGER *pcbRead,
+    ULARGE_INTEGER *pcbWritten);
+void __RPC_STUB IStream_RemoteCopyTo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IStream_Commit_Proxy(
+    IStream* This,
+    DWORD grfCommitFlags);
+void __RPC_STUB IStream_Commit_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IStream_Revert_Proxy(
+    IStream* This);
+void __RPC_STUB IStream_Revert_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IStream_LockRegion_Proxy(
+    IStream* This,
+    ULARGE_INTEGER libOffset,
+    ULARGE_INTEGER cb,
+    DWORD dwLockType);
+void __RPC_STUB IStream_LockRegion_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IStream_UnlockRegion_Proxy(
+    IStream* This,
+    ULARGE_INTEGER libOffset,
+    ULARGE_INTEGER cb,
+    DWORD dwLockType);
+void __RPC_STUB IStream_UnlockRegion_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IStream_Stat_Proxy(
+    IStream* This,
+    STATSTG *pstatstg,
+    DWORD grfStatFlag);
+void __RPC_STUB IStream_Stat_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IStream_Clone_Proxy(
+    IStream* This,
+    IStream **ppstm);
+void __RPC_STUB IStream_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IStream_Seek_Proxy(
+    IStream* This,
+    LARGE_INTEGER dlibMove,
+    DWORD dwOrigin,
+    ULARGE_INTEGER *plibNewPosition);
+HRESULT __RPC_STUB IStream_Seek_Stub(
+    IStream* This,
+    LARGE_INTEGER dlibMove,
+    DWORD dwOrigin,
+    ULARGE_INTEGER *plibNewPosition);
+HRESULT CALLBACK IStream_CopyTo_Proxy(
+    IStream* This,
+    IStream *pstm,
+    ULARGE_INTEGER cb,
+    ULARGE_INTEGER *pcbRead,
+    ULARGE_INTEGER *pcbWritten);
+HRESULT __RPC_STUB IStream_CopyTo_Stub(
+    IStream* This,
+    IStream *pstm,
+    ULARGE_INTEGER cb,
+    ULARGE_INTEGER *pcbRead,
+    ULARGE_INTEGER *pcbWritten);
+
+#endif  /* __IStream_INTERFACE_DEFINED__ */
+
+#ifndef __IEnumSTATSTG_FWD_DEFINED__
+#define __IEnumSTATSTG_FWD_DEFINED__
+typedef interface IEnumSTATSTG IEnumSTATSTG;
+#endif
+
+typedef IEnumSTATSTG *LPENUMSTATSTG;
+/*****************************************************************************
+ * IEnumSTATSTG interface
+ */
+#ifndef __IEnumSTATSTG_INTERFACE_DEFINED__
+#define __IEnumSTATSTG_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IEnumSTATSTG, 0x0000000d, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IEnumSTATSTG : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Next(
+        ULONG celt,
+        STATSTG *rgelt,
+        ULONG *pceltFetched) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Skip(
+        ULONG celt) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IEnumSTATSTG **ppenum) = 0;
+
+};
+#else
+typedef struct IEnumSTATSTGVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IEnumSTATSTG* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IEnumSTATSTG* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IEnumSTATSTG* This);
+
+    /*** IEnumSTATSTG methods ***/
+    HRESULT (STDMETHODCALLTYPE *Next)(
+        IEnumSTATSTG* This,
+        ULONG celt,
+        STATSTG *rgelt,
+        ULONG *pceltFetched);
+
+    HRESULT (STDMETHODCALLTYPE *Skip)(
+        IEnumSTATSTG* This,
+        ULONG celt);
+
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        IEnumSTATSTG* This);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IEnumSTATSTG* This,
+        IEnumSTATSTG **ppenum);
+
+    END_INTERFACE
+} IEnumSTATSTGVtbl;
+interface IEnumSTATSTG {
+    CONST_VTBL IEnumSTATSTGVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IEnumSTATSTG_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumSTATSTG_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumSTATSTG_Release(This) (This)->lpVtbl->Release(This)
+/*** IEnumSTATSTG methods ***/
+#define IEnumSTATSTG_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
+#define IEnumSTATSTG_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumSTATSTG_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumSTATSTG_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IEnumSTATSTG_RemoteNext_Proxy(
+    IEnumSTATSTG* This,
+    ULONG celt,
+    STATSTG *rgelt,
+    ULONG *pceltFetched);
+void __RPC_STUB IEnumSTATSTG_RemoteNext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Skip_Proxy(
+    IEnumSTATSTG* This,
+    ULONG celt);
+void __RPC_STUB IEnumSTATSTG_Skip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Reset_Proxy(
+    IEnumSTATSTG* This);
+void __RPC_STUB IEnumSTATSTG_Reset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Clone_Proxy(
+    IEnumSTATSTG* This,
+    IEnumSTATSTG **ppenum);
+void __RPC_STUB IEnumSTATSTG_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IEnumSTATSTG_Next_Proxy(
+    IEnumSTATSTG* This,
+    ULONG celt,
+    STATSTG *rgelt,
+    ULONG *pceltFetched);
+HRESULT __RPC_STUB IEnumSTATSTG_Next_Stub(
+    IEnumSTATSTG* This,
+    ULONG celt,
+    STATSTG *rgelt,
+    ULONG *pceltFetched);
+
+#endif  /* __IEnumSTATSTG_INTERFACE_DEFINED__ */
+
+#ifndef __IStorage_FWD_DEFINED__
+#define __IStorage_FWD_DEFINED__
+typedef interface IStorage IStorage;
+#endif
+
+typedef IStorage *LPSTORAGE;
+typedef struct tagRemSNB {
+    unsigned long ulCntStr;
+    unsigned long ulCntChar;
+    OLECHAR rgString[1];
+} RemSNB;
+typedef RemSNB *wireSNB;
+typedef OLECHAR **SNB;
+/*****************************************************************************
+ * IStorage interface
+ */
+#ifndef __IStorage_INTERFACE_DEFINED__
+#define __IStorage_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IStorage, 0x0000000b, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IStorage : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE CreateStream(
+        LPCOLESTR pwcsName,
+        DWORD grfMode,
+        DWORD reserved1,
+        DWORD reserved2,
+        IStream **ppstm) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OpenStream(
+        LPCOLESTR pwcsName,
+        void *reserved1,
+        DWORD grfMode,
+        DWORD reserved2,
+        IStream **ppstm) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateStorage(
+        LPCOLESTR pwcsName,
+        DWORD grfMode,
+        DWORD dwStgFmt,
+        DWORD reserved2,
+        IStorage **ppstg) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OpenStorage(
+        LPCOLESTR pwcsName,
+        IStorage *pstgPriority,
+        DWORD grfMode,
+        SNB snbExclude,
+        DWORD reserved,
+        IStorage **ppstg) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CopyTo(
+        DWORD ciidExclude,
+        const IID *rgiidExclude,
+        SNB snbExclude,
+        IStorage *pstgDest) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE MoveElementTo(
+        LPCOLESTR pwcsName,
+        IStorage *pstgDest,
+        LPCOLESTR pwcsNewName,
+        DWORD grfFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Commit(
+        DWORD grfCommitFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Revert(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumElements(
+        DWORD reserved1,
+        void *reserved2,
+        DWORD reserved3,
+        IEnumSTATSTG **ppenum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DestroyElement(
+        LPCOLESTR pwcsName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RenameElement(
+        LPCOLESTR pwcsOldName,
+        LPCOLESTR pwcsNewName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetElementTimes(
+        LPCOLESTR pwcsName,
+        const FILETIME *pctime,
+        const FILETIME *patime,
+        const FILETIME *pmtime) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetClass(
+        REFCLSID clsid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetStateBits(
+        DWORD grfStateBits,
+        DWORD grfMask) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Stat(
+        STATSTG *pstatstg,
+        DWORD grfStatFlag) = 0;
+
+};
+#else
+typedef struct IStorageVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IStorage* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IStorage* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IStorage* This);
+
+    /*** IStorage methods ***/
+    HRESULT (STDMETHODCALLTYPE *CreateStream)(
+        IStorage* This,
+        LPCOLESTR pwcsName,
+        DWORD grfMode,
+        DWORD reserved1,
+        DWORD reserved2,
+        IStream **ppstm);
+
+    HRESULT (STDMETHODCALLTYPE *OpenStream)(
+        IStorage* This,
+        LPCOLESTR pwcsName,
+        void *reserved1,
+        DWORD grfMode,
+        DWORD reserved2,
+        IStream **ppstm);
+
+    HRESULT (STDMETHODCALLTYPE *CreateStorage)(
+        IStorage* This,
+        LPCOLESTR pwcsName,
+        DWORD grfMode,
+        DWORD dwStgFmt,
+        DWORD reserved2,
+        IStorage **ppstg);
+
+    HRESULT (STDMETHODCALLTYPE *OpenStorage)(
+        IStorage* This,
+        LPCOLESTR pwcsName,
+        IStorage *pstgPriority,
+        DWORD grfMode,
+        SNB snbExclude,
+        DWORD reserved,
+        IStorage **ppstg);
+
+    HRESULT (STDMETHODCALLTYPE *CopyTo)(
+        IStorage* This,
+        DWORD ciidExclude,
+        const IID *rgiidExclude,
+        SNB snbExclude,
+        IStorage *pstgDest);
+
+    HRESULT (STDMETHODCALLTYPE *MoveElementTo)(
+        IStorage* This,
+        LPCOLESTR pwcsName,
+        IStorage *pstgDest,
+        LPCOLESTR pwcsNewName,
+        DWORD grfFlags);
+
+    HRESULT (STDMETHODCALLTYPE *Commit)(
+        IStorage* This,
+        DWORD grfCommitFlags);
+
+    HRESULT (STDMETHODCALLTYPE *Revert)(
+        IStorage* This);
+
+    HRESULT (STDMETHODCALLTYPE *EnumElements)(
+        IStorage* This,
+        DWORD reserved1,
+        void *reserved2,
+        DWORD reserved3,
+        IEnumSTATSTG **ppenum);
+
+    HRESULT (STDMETHODCALLTYPE *DestroyElement)(
+        IStorage* This,
+        LPCOLESTR pwcsName);
+
+    HRESULT (STDMETHODCALLTYPE *RenameElement)(
+        IStorage* This,
+        LPCOLESTR pwcsOldName,
+        LPCOLESTR pwcsNewName);
+
+    HRESULT (STDMETHODCALLTYPE *SetElementTimes)(
+        IStorage* This,
+        LPCOLESTR pwcsName,
+        const FILETIME *pctime,
+        const FILETIME *patime,
+        const FILETIME *pmtime);
+
+    HRESULT (STDMETHODCALLTYPE *SetClass)(
+        IStorage* This,
+        REFCLSID clsid);
+
+    HRESULT (STDMETHODCALLTYPE *SetStateBits)(
+        IStorage* This,
+        DWORD grfStateBits,
+        DWORD grfMask);
+
+    HRESULT (STDMETHODCALLTYPE *Stat)(
+        IStorage* This,
+        STATSTG *pstatstg,
+        DWORD grfStatFlag);
+
+    END_INTERFACE
+} IStorageVtbl;
+interface IStorage {
+    CONST_VTBL IStorageVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IStorage_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IStorage_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IStorage_Release(This) (This)->lpVtbl->Release(This)
+/*** IStorage methods ***/
+#define IStorage_CreateStream(This,pwcsName,grfMode,reserved1,reserved2,ppstm) (This)->lpVtbl->CreateStream(This,pwcsName,grfMode,reserved1,reserved2,ppstm)
+#define IStorage_OpenStream(This,pwcsName,reserved1,grfMode,reserved2,ppstm) (This)->lpVtbl->OpenStream(This,pwcsName,reserved1,grfMode,reserved2,ppstm)
+#define IStorage_CreateStorage(This,pwcsName,grfMode,dwStgFmt,reserved2,ppstg) (This)->lpVtbl->CreateStorage(This,pwcsName,grfMode,dwStgFmt,reserved2,ppstg)
+#define IStorage_OpenStorage(This,pwcsName,pstgPriority,grfMode,snbExclude,reserved,ppstg) (This)->lpVtbl->OpenStorage(This,pwcsName,pstgPriority,grfMode,snbExclude,reserved,ppstg)
+#define IStorage_CopyTo(This,ciidExclude,rgiidExclude,snbExclude,pstgDest) (This)->lpVtbl->CopyTo(This,ciidExclude,rgiidExclude,snbExclude,pstgDest)
+#define IStorage_MoveElementTo(This,pwcsName,pstgDest,pwcsNewName,grfFlags) (This)->lpVtbl->MoveElementTo(This,pwcsName,pstgDest,pwcsNewName,grfFlags)
+#define IStorage_Commit(This,grfCommitFlags) (This)->lpVtbl->Commit(This,grfCommitFlags)
+#define IStorage_Revert(This) (This)->lpVtbl->Revert(This)
+#define IStorage_EnumElements(This,reserved1,reserved2,reserved3,ppenum) (This)->lpVtbl->EnumElements(This,reserved1,reserved2,reserved3,ppenum)
+#define IStorage_DestroyElement(This,pwcsName) (This)->lpVtbl->DestroyElement(This,pwcsName)
+#define IStorage_RenameElement(This,pwcsOldName,pwcsNewName) (This)->lpVtbl->RenameElement(This,pwcsOldName,pwcsNewName)
+#define IStorage_SetElementTimes(This,pwcsName,pctime,patime,pmtime) (This)->lpVtbl->SetElementTimes(This,pwcsName,pctime,patime,pmtime)
+#define IStorage_SetClass(This,clsid) (This)->lpVtbl->SetClass(This,clsid)
+#define IStorage_SetStateBits(This,grfStateBits,grfMask) (This)->lpVtbl->SetStateBits(This,grfStateBits,grfMask)
+#define IStorage_Stat(This,pstatstg,grfStatFlag) (This)->lpVtbl->Stat(This,pstatstg,grfStatFlag)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IStorage_CreateStream_Proxy(
+    IStorage* This,
+    LPCOLESTR pwcsName,
+    DWORD grfMode,
+    DWORD reserved1,
+    DWORD reserved2,
+    IStream **ppstm);
+void __RPC_STUB IStorage_CreateStream_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IStorage_RemoteOpenStream_Proxy(
+    IStorage* This,
+    LPCOLESTR pwcsName,
+    unsigned long cbReserved1,
+    byte *reserved1,
+    DWORD grfMode,
+    DWORD reserved2,
+    IStream **ppstm);
+void __RPC_STUB IStorage_RemoteOpenStream_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IStorage_CreateStorage_Proxy(
+    IStorage* This,
+    LPCOLESTR pwcsName,
+    DWORD grfMode,
+    DWORD dwStgFmt,
+    DWORD reserved2,
+    IStorage **ppstg);
+void __RPC_STUB IStorage_CreateStorage_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IStorage_OpenStorage_Proxy(
+    IStorage* This,
+    LPCOLESTR pwcsName,
+    IStorage *pstgPriority,
+    DWORD grfMode,
+    SNB snbExclude,
+    DWORD reserved,
+    IStorage **ppstg);
+void __RPC_STUB IStorage_OpenStorage_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IStorage_CopyTo_Proxy(
+    IStorage* This,
+    DWORD ciidExclude,
+    const IID *rgiidExclude,
+    SNB snbExclude,
+    IStorage *pstgDest);
+void __RPC_STUB IStorage_CopyTo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IStorage_MoveElementTo_Proxy(
+    IStorage* This,
+    LPCOLESTR pwcsName,
+    IStorage *pstgDest,
+    LPCOLESTR pwcsNewName,
+    DWORD grfFlags);
+void __RPC_STUB IStorage_MoveElementTo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IStorage_Commit_Proxy(
+    IStorage* This,
+    DWORD grfCommitFlags);
+void __RPC_STUB IStorage_Commit_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IStorage_Revert_Proxy(
+    IStorage* This);
+void __RPC_STUB IStorage_Revert_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IStorage_RemoteEnumElements_Proxy(
+    IStorage* This,
+    DWORD reserved1,
+    unsigned long cbReserved2,
+    byte *reserved2,
+    DWORD reserved3,
+    IEnumSTATSTG **ppenum);
+void __RPC_STUB IStorage_RemoteEnumElements_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IStorage_DestroyElement_Proxy(
+    IStorage* This,
+    LPCOLESTR pwcsName);
+void __RPC_STUB IStorage_DestroyElement_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IStorage_RenameElement_Proxy(
+    IStorage* This,
+    LPCOLESTR pwcsOldName,
+    LPCOLESTR pwcsNewName);
+void __RPC_STUB IStorage_RenameElement_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IStorage_SetElementTimes_Proxy(
+    IStorage* This,
+    LPCOLESTR pwcsName,
+    const FILETIME *pctime,
+    const FILETIME *patime,
+    const FILETIME *pmtime);
+void __RPC_STUB IStorage_SetElementTimes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IStorage_SetClass_Proxy(
+    IStorage* This,
+    REFCLSID clsid);
+void __RPC_STUB IStorage_SetClass_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IStorage_SetStateBits_Proxy(
+    IStorage* This,
+    DWORD grfStateBits,
+    DWORD grfMask);
+void __RPC_STUB IStorage_SetStateBits_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IStorage_Stat_Proxy(
+    IStorage* This,
+    STATSTG *pstatstg,
+    DWORD grfStatFlag);
+void __RPC_STUB IStorage_Stat_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IStorage_OpenStream_Proxy(
+    IStorage* This,
+    LPCOLESTR pwcsName,
+    void *reserved1,
+    DWORD grfMode,
+    DWORD reserved2,
+    IStream **ppstm);
+HRESULT __RPC_STUB IStorage_OpenStream_Stub(
+    IStorage* This,
+    LPCOLESTR pwcsName,
+    unsigned long cbReserved1,
+    byte *reserved1,
+    DWORD grfMode,
+    DWORD reserved2,
+    IStream **ppstm);
+HRESULT CALLBACK IStorage_EnumElements_Proxy(
+    IStorage* This,
+    DWORD reserved1,
+    void *reserved2,
+    DWORD reserved3,
+    IEnumSTATSTG **ppenum);
+HRESULT __RPC_STUB IStorage_EnumElements_Stub(
+    IStorage* This,
+    DWORD reserved1,
+    unsigned long cbReserved2,
+    byte *reserved2,
+    DWORD reserved3,
+    IEnumSTATSTG **ppenum);
+
+#endif  /* __IStorage_INTERFACE_DEFINED__ */
+
+#ifndef __IPersistFile_FWD_DEFINED__
+#define __IPersistFile_FWD_DEFINED__
+typedef interface IPersistFile IPersistFile;
+#endif
+
+typedef IPersistFile *LPPERSISTFILE;
+/*****************************************************************************
+ * IPersistFile interface
+ */
+#ifndef __IPersistFile_INTERFACE_DEFINED__
+#define __IPersistFile_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IPersistFile, 0x0000010b, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IPersistFile : public IPersist
+{
+    virtual HRESULT STDMETHODCALLTYPE IsDirty(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Load(
+        LPCOLESTR pszFileName,
+        DWORD dwMode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Save(
+        LPCOLESTR pszFileName,
+        BOOL fRemember) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SaveCompleted(
+        LPCOLESTR pszFileName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCurFile(
+        LPOLESTR *ppszFileName) = 0;
+
+};
+#else
+typedef struct IPersistFileVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IPersistFile* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IPersistFile* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IPersistFile* This);
+
+    /*** IPersist methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetClassID)(
+        IPersistFile* This,
+        CLSID *pClassID);
+
+    /*** IPersistFile methods ***/
+    HRESULT (STDMETHODCALLTYPE *IsDirty)(
+        IPersistFile* This);
+
+    HRESULT (STDMETHODCALLTYPE *Load)(
+        IPersistFile* This,
+        LPCOLESTR pszFileName,
+        DWORD dwMode);
+
+    HRESULT (STDMETHODCALLTYPE *Save)(
+        IPersistFile* This,
+        LPCOLESTR pszFileName,
+        BOOL fRemember);
+
+    HRESULT (STDMETHODCALLTYPE *SaveCompleted)(
+        IPersistFile* This,
+        LPCOLESTR pszFileName);
+
+    HRESULT (STDMETHODCALLTYPE *GetCurFile)(
+        IPersistFile* This,
+        LPOLESTR *ppszFileName);
+
+    END_INTERFACE
+} IPersistFileVtbl;
+interface IPersistFile {
+    CONST_VTBL IPersistFileVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IPersistFile_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IPersistFile_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IPersistFile_Release(This) (This)->lpVtbl->Release(This)
+/*** IPersist methods ***/
+#define IPersistFile_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)
+/*** IPersistFile methods ***/
+#define IPersistFile_IsDirty(This) (This)->lpVtbl->IsDirty(This)
+#define IPersistFile_Load(This,pszFileName,dwMode) (This)->lpVtbl->Load(This,pszFileName,dwMode)
+#define IPersistFile_Save(This,pszFileName,fRemember) (This)->lpVtbl->Save(This,pszFileName,fRemember)
+#define IPersistFile_SaveCompleted(This,pszFileName) (This)->lpVtbl->SaveCompleted(This,pszFileName)
+#define IPersistFile_GetCurFile(This,ppszFileName) (This)->lpVtbl->GetCurFile(This,ppszFileName)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IPersistFile_IsDirty_Proxy(
+    IPersistFile* This);
+void __RPC_STUB IPersistFile_IsDirty_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPersistFile_Load_Proxy(
+    IPersistFile* This,
+    LPCOLESTR pszFileName,
+    DWORD dwMode);
+void __RPC_STUB IPersistFile_Load_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPersistFile_Save_Proxy(
+    IPersistFile* This,
+    LPCOLESTR pszFileName,
+    BOOL fRemember);
+void __RPC_STUB IPersistFile_Save_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPersistFile_SaveCompleted_Proxy(
+    IPersistFile* This,
+    LPCOLESTR pszFileName);
+void __RPC_STUB IPersistFile_SaveCompleted_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPersistFile_GetCurFile_Proxy(
+    IPersistFile* This,
+    LPOLESTR *ppszFileName);
+void __RPC_STUB IPersistFile_GetCurFile_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IPersistFile_INTERFACE_DEFINED__ */
+
+#ifndef __IPersistStorage_FWD_DEFINED__
+#define __IPersistStorage_FWD_DEFINED__
+typedef interface IPersistStorage IPersistStorage;
+#endif
+
+typedef IPersistStorage *LPPERSISTSTORAGE;
+/*****************************************************************************
+ * IPersistStorage interface
+ */
+#ifndef __IPersistStorage_INTERFACE_DEFINED__
+#define __IPersistStorage_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IPersistStorage, 0x0000010a, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IPersistStorage : public IPersist
+{
+    virtual HRESULT STDMETHODCALLTYPE IsDirty(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE InitNew(
+        IStorage *pStg) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Load(
+        IStorage *pStg) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Save(
+        IStorage *pStgSave,
+        BOOL fSameAsLoad) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SaveCompleted(
+        IStorage *pStgNew) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE HandsOffStorage(
+        ) = 0;
+
+};
+#else
+typedef struct IPersistStorageVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IPersistStorage* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IPersistStorage* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IPersistStorage* This);
+
+    /*** IPersist methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetClassID)(
+        IPersistStorage* This,
+        CLSID *pClassID);
+
+    /*** IPersistStorage methods ***/
+    HRESULT (STDMETHODCALLTYPE *IsDirty)(
+        IPersistStorage* This);
+
+    HRESULT (STDMETHODCALLTYPE *InitNew)(
+        IPersistStorage* This,
+        IStorage *pStg);
+
+    HRESULT (STDMETHODCALLTYPE *Load)(
+        IPersistStorage* This,
+        IStorage *pStg);
+
+    HRESULT (STDMETHODCALLTYPE *Save)(
+        IPersistStorage* This,
+        IStorage *pStgSave,
+        BOOL fSameAsLoad);
+
+    HRESULT (STDMETHODCALLTYPE *SaveCompleted)(
+        IPersistStorage* This,
+        IStorage *pStgNew);
+
+    HRESULT (STDMETHODCALLTYPE *HandsOffStorage)(
+        IPersistStorage* This);
+
+    END_INTERFACE
+} IPersistStorageVtbl;
+interface IPersistStorage {
+    CONST_VTBL IPersistStorageVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IPersistStorage_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IPersistStorage_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IPersistStorage_Release(This) (This)->lpVtbl->Release(This)
+/*** IPersist methods ***/
+#define IPersistStorage_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)
+/*** IPersistStorage methods ***/
+#define IPersistStorage_IsDirty(This) (This)->lpVtbl->IsDirty(This)
+#define IPersistStorage_InitNew(This,pStg) (This)->lpVtbl->InitNew(This,pStg)
+#define IPersistStorage_Load(This,pStg) (This)->lpVtbl->Load(This,pStg)
+#define IPersistStorage_Save(This,pStgSave,fSameAsLoad) (This)->lpVtbl->Save(This,pStgSave,fSameAsLoad)
+#define IPersistStorage_SaveCompleted(This,pStgNew) (This)->lpVtbl->SaveCompleted(This,pStgNew)
+#define IPersistStorage_HandsOffStorage(This) (This)->lpVtbl->HandsOffStorage(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IPersistStorage_IsDirty_Proxy(
+    IPersistStorage* This);
+void __RPC_STUB IPersistStorage_IsDirty_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPersistStorage_InitNew_Proxy(
+    IPersistStorage* This,
+    IStorage *pStg);
+void __RPC_STUB IPersistStorage_InitNew_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPersistStorage_Load_Proxy(
+    IPersistStorage* This,
+    IStorage *pStg);
+void __RPC_STUB IPersistStorage_Load_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPersistStorage_Save_Proxy(
+    IPersistStorage* This,
+    IStorage *pStgSave,
+    BOOL fSameAsLoad);
+void __RPC_STUB IPersistStorage_Save_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPersistStorage_SaveCompleted_Proxy(
+    IPersistStorage* This,
+    IStorage *pStgNew);
+void __RPC_STUB IPersistStorage_SaveCompleted_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPersistStorage_HandsOffStorage_Proxy(
+    IPersistStorage* This);
+void __RPC_STUB IPersistStorage_HandsOffStorage_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IPersistStorage_INTERFACE_DEFINED__ */
+
+#ifndef __IRootStorage_FWD_DEFINED__
+#define __IRootStorage_FWD_DEFINED__
+typedef interface IRootStorage IRootStorage;
+#endif
+
+typedef IRootStorage *LPROOTSTORAGE;
+/*****************************************************************************
+ * IRootStorage interface
+ */
+#ifndef __IRootStorage_INTERFACE_DEFINED__
+#define __IRootStorage_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IRootStorage, 0x00000012, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IRootStorage : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SwitchToFile(
+        LPOLESTR pszFile) = 0;
+
+};
+#else
+typedef struct IRootStorageVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IRootStorage* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IRootStorage* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IRootStorage* This);
+
+    /*** IRootStorage methods ***/
+    HRESULT (STDMETHODCALLTYPE *SwitchToFile)(
+        IRootStorage* This,
+        LPOLESTR pszFile);
+
+    END_INTERFACE
+} IRootStorageVtbl;
+interface IRootStorage {
+    CONST_VTBL IRootStorageVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IRootStorage_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IRootStorage_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRootStorage_Release(This) (This)->lpVtbl->Release(This)
+/*** IRootStorage methods ***/
+#define IRootStorage_SwitchToFile(This,pszFile) (This)->lpVtbl->SwitchToFile(This,pszFile)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IRootStorage_SwitchToFile_Proxy(
+    IRootStorage* This,
+    LPOLESTR pszFile);
+void __RPC_STUB IRootStorage_SwitchToFile_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IRootStorage_INTERFACE_DEFINED__ */
+
+#ifndef __ILockBytes_FWD_DEFINED__
+#define __ILockBytes_FWD_DEFINED__
+typedef interface ILockBytes ILockBytes;
+#endif
+
+typedef ILockBytes *LPLOCKBYTES;
+/*****************************************************************************
+ * ILockBytes interface
+ */
+#ifndef __ILockBytes_INTERFACE_DEFINED__
+#define __ILockBytes_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ILockBytes, 0x0000000a, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ILockBytes : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE ReadAt(
+        ULARGE_INTEGER ulOffset,
+        void *pv,
+        ULONG cb,
+        ULONG *pcbRead) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE WriteAt(
+        ULARGE_INTEGER ulOffset,
+        const void *pv,
+        ULONG cb,
+        ULONG *pcbWritten) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Flush(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetSize(
+        ULARGE_INTEGER cb) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE LockRegion(
+        ULARGE_INTEGER libOffset,
+        ULARGE_INTEGER cb,
+        DWORD dwLockType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnlockRegion(
+        ULARGE_INTEGER libOffset,
+        ULARGE_INTEGER cb,
+        DWORD dwLockType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Stat(
+        STATSTG *pstatstg,
+        DWORD grfStatFlag) = 0;
+
+};
+#else
+typedef struct ILockBytesVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ILockBytes* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ILockBytes* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ILockBytes* This);
+
+    /*** ILockBytes methods ***/
+    HRESULT (STDMETHODCALLTYPE *ReadAt)(
+        ILockBytes* This,
+        ULARGE_INTEGER ulOffset,
+        void *pv,
+        ULONG cb,
+        ULONG *pcbRead);
+
+    HRESULT (STDMETHODCALLTYPE *WriteAt)(
+        ILockBytes* This,
+        ULARGE_INTEGER ulOffset,
+        const void *pv,
+        ULONG cb,
+        ULONG *pcbWritten);
+
+    HRESULT (STDMETHODCALLTYPE *Flush)(
+        ILockBytes* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetSize)(
+        ILockBytes* This,
+        ULARGE_INTEGER cb);
+
+    HRESULT (STDMETHODCALLTYPE *LockRegion)(
+        ILockBytes* This,
+        ULARGE_INTEGER libOffset,
+        ULARGE_INTEGER cb,
+        DWORD dwLockType);
+
+    HRESULT (STDMETHODCALLTYPE *UnlockRegion)(
+        ILockBytes* This,
+        ULARGE_INTEGER libOffset,
+        ULARGE_INTEGER cb,
+        DWORD dwLockType);
+
+    HRESULT (STDMETHODCALLTYPE *Stat)(
+        ILockBytes* This,
+        STATSTG *pstatstg,
+        DWORD grfStatFlag);
+
+    END_INTERFACE
+} ILockBytesVtbl;
+interface ILockBytes {
+    CONST_VTBL ILockBytesVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ILockBytes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ILockBytes_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ILockBytes_Release(This) (This)->lpVtbl->Release(This)
+/*** ILockBytes methods ***/
+#define ILockBytes_ReadAt(This,ulOffset,pv,cb,pcbRead) (This)->lpVtbl->ReadAt(This,ulOffset,pv,cb,pcbRead)
+#define ILockBytes_WriteAt(This,ulOffset,pv,cb,pcbWritten) (This)->lpVtbl->WriteAt(This,ulOffset,pv,cb,pcbWritten)
+#define ILockBytes_Flush(This) (This)->lpVtbl->Flush(This)
+#define ILockBytes_SetSize(This,cb) (This)->lpVtbl->SetSize(This,cb)
+#define ILockBytes_LockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->LockRegion(This,libOffset,cb,dwLockType)
+#define ILockBytes_UnlockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->UnlockRegion(This,libOffset,cb,dwLockType)
+#define ILockBytes_Stat(This,pstatstg,grfStatFlag) (This)->lpVtbl->Stat(This,pstatstg,grfStatFlag)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ILockBytes_RemoteReadAt_Proxy(
+    ILockBytes* This,
+    ULARGE_INTEGER ulOffset,
+    byte *pv,
+    ULONG cb,
+    ULONG *pcbRead);
+void __RPC_STUB ILockBytes_RemoteReadAt_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ILockBytes_RemoteWriteAt_Proxy(
+    ILockBytes* This,
+    ULARGE_INTEGER ulOffset,
+    const byte *pv,
+    ULONG cb,
+    ULONG *pcbWritten);
+void __RPC_STUB ILockBytes_RemoteWriteAt_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ILockBytes_Flush_Proxy(
+    ILockBytes* This);
+void __RPC_STUB ILockBytes_Flush_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ILockBytes_SetSize_Proxy(
+    ILockBytes* This,
+    ULARGE_INTEGER cb);
+void __RPC_STUB ILockBytes_SetSize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ILockBytes_LockRegion_Proxy(
+    ILockBytes* This,
+    ULARGE_INTEGER libOffset,
+    ULARGE_INTEGER cb,
+    DWORD dwLockType);
+void __RPC_STUB ILockBytes_LockRegion_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ILockBytes_UnlockRegion_Proxy(
+    ILockBytes* This,
+    ULARGE_INTEGER libOffset,
+    ULARGE_INTEGER cb,
+    DWORD dwLockType);
+void __RPC_STUB ILockBytes_UnlockRegion_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ILockBytes_Stat_Proxy(
+    ILockBytes* This,
+    STATSTG *pstatstg,
+    DWORD grfStatFlag);
+void __RPC_STUB ILockBytes_Stat_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ILockBytes_ReadAt_Proxy(
+    ILockBytes* This,
+    ULARGE_INTEGER ulOffset,
+    void *pv,
+    ULONG cb,
+    ULONG *pcbRead);
+HRESULT __RPC_STUB ILockBytes_ReadAt_Stub(
+    ILockBytes* This,
+    ULARGE_INTEGER ulOffset,
+    byte *pv,
+    ULONG cb,
+    ULONG *pcbRead);
+HRESULT CALLBACK ILockBytes_WriteAt_Proxy(
+    ILockBytes* This,
+    ULARGE_INTEGER ulOffset,
+    const void *pv,
+    ULONG cb,
+    ULONG *pcbWritten);
+HRESULT __RPC_STUB ILockBytes_WriteAt_Stub(
+    ILockBytes* This,
+    ULARGE_INTEGER ulOffset,
+    const byte *pv,
+    ULONG cb,
+    ULONG *pcbWritten);
+
+#endif  /* __ILockBytes_INTERFACE_DEFINED__ */
+
+#ifndef __IFillLockBytes_FWD_DEFINED__
+#define __IFillLockBytes_FWD_DEFINED__
+typedef interface IFillLockBytes IFillLockBytes;
+#endif
+
+/*****************************************************************************
+ * IFillLockBytes interface
+ */
+#ifndef __IFillLockBytes_INTERFACE_DEFINED__
+#define __IFillLockBytes_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFillLockBytes, 0x99caf010, 0x415e, 0x11cf, 0x88,0x14, 0x00,0xaa,0x00,0xb5,0x69,0xf5);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IFillLockBytes : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE FillAppend(
+        const void *pv,
+        ULONG cb,
+        ULONG *pcbWritten) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE FillAt(
+        ULARGE_INTEGER ulOffset,
+        const void *pv,
+        ULONG cb,
+        ULONG *pcbWritten) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetFillSize(
+        ULARGE_INTEGER ulSize) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Terminate(
+        BOOL bCanceled) = 0;
+
+};
+#else
+typedef struct IFillLockBytesVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFillLockBytes* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFillLockBytes* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFillLockBytes* This);
+
+    /*** IFillLockBytes methods ***/
+    HRESULT (STDMETHODCALLTYPE *FillAppend)(
+        IFillLockBytes* This,
+        const void *pv,
+        ULONG cb,
+        ULONG *pcbWritten);
+
+    HRESULT (STDMETHODCALLTYPE *FillAt)(
+        IFillLockBytes* This,
+        ULARGE_INTEGER ulOffset,
+        const void *pv,
+        ULONG cb,
+        ULONG *pcbWritten);
+
+    HRESULT (STDMETHODCALLTYPE *SetFillSize)(
+        IFillLockBytes* This,
+        ULARGE_INTEGER ulSize);
+
+    HRESULT (STDMETHODCALLTYPE *Terminate)(
+        IFillLockBytes* This,
+        BOOL bCanceled);
+
+    END_INTERFACE
+} IFillLockBytesVtbl;
+interface IFillLockBytes {
+    CONST_VTBL IFillLockBytesVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IFillLockBytes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFillLockBytes_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFillLockBytes_Release(This) (This)->lpVtbl->Release(This)
+/*** IFillLockBytes methods ***/
+#define IFillLockBytes_FillAppend(This,pv,cb,pcbWritten) (This)->lpVtbl->FillAppend(This,pv,cb,pcbWritten)
+#define IFillLockBytes_FillAt(This,ulOffset,pv,cb,pcbWritten) (This)->lpVtbl->FillAt(This,ulOffset,pv,cb,pcbWritten)
+#define IFillLockBytes_SetFillSize(This,ulSize) (This)->lpVtbl->SetFillSize(This,ulSize)
+#define IFillLockBytes_Terminate(This,bCanceled) (This)->lpVtbl->Terminate(This,bCanceled)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFillLockBytes_RemoteFillAppend_Proxy(
+    IFillLockBytes* This,
+    const byte *pv,
+    ULONG cb,
+    ULONG *pcbWritten);
+void __RPC_STUB IFillLockBytes_RemoteFillAppend_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFillLockBytes_RemoteFillAt_Proxy(
+    IFillLockBytes* This,
+    ULARGE_INTEGER ulOffset,
+    const byte *pv,
+    ULONG cb,
+    ULONG *pcbWritten);
+void __RPC_STUB IFillLockBytes_RemoteFillAt_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFillLockBytes_SetFillSize_Proxy(
+    IFillLockBytes* This,
+    ULARGE_INTEGER ulSize);
+void __RPC_STUB IFillLockBytes_SetFillSize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFillLockBytes_Terminate_Proxy(
+    IFillLockBytes* This,
+    BOOL bCanceled);
+void __RPC_STUB IFillLockBytes_Terminate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IFillLockBytes_FillAppend_Proxy(
+    IFillLockBytes* This,
+    const void *pv,
+    ULONG cb,
+    ULONG *pcbWritten);
+HRESULT __RPC_STUB IFillLockBytes_FillAppend_Stub(
+    IFillLockBytes* This,
+    const byte *pv,
+    ULONG cb,
+    ULONG *pcbWritten);
+HRESULT CALLBACK IFillLockBytes_FillAt_Proxy(
+    IFillLockBytes* This,
+    ULARGE_INTEGER ulOffset,
+    const void *pv,
+    ULONG cb,
+    ULONG *pcbWritten);
+HRESULT __RPC_STUB IFillLockBytes_FillAt_Stub(
+    IFillLockBytes* This,
+    ULARGE_INTEGER ulOffset,
+    const byte *pv,
+    ULONG cb,
+    ULONG *pcbWritten);
+
+#endif  /* __IFillLockBytes_INTERFACE_DEFINED__ */
+
+#ifndef __IProgressNotify_FWD_DEFINED__
+#define __IProgressNotify_FWD_DEFINED__
+typedef interface IProgressNotify IProgressNotify;
+#endif
+
+/*****************************************************************************
+ * IProgressNotify interface
+ */
+#ifndef __IProgressNotify_INTERFACE_DEFINED__
+#define __IProgressNotify_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IProgressNotify, 0xa9d758a0, 0x4617, 0x11cf, 0x95,0xfc, 0x00,0xaa,0x00,0x68,0x0d,0xb4);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IProgressNotify : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE OnProgress(
+        DWORD dwProgressCurrent,
+        DWORD dwProgressMaximum,
+        BOOL fAccurate,
+        BOOL fOwner) = 0;
+
+};
+#else
+typedef struct IProgressNotifyVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IProgressNotify* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IProgressNotify* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IProgressNotify* This);
+
+    /*** IProgressNotify methods ***/
+    HRESULT (STDMETHODCALLTYPE *OnProgress)(
+        IProgressNotify* This,
+        DWORD dwProgressCurrent,
+        DWORD dwProgressMaximum,
+        BOOL fAccurate,
+        BOOL fOwner);
+
+    END_INTERFACE
+} IProgressNotifyVtbl;
+interface IProgressNotify {
+    CONST_VTBL IProgressNotifyVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IProgressNotify_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IProgressNotify_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IProgressNotify_Release(This) (This)->lpVtbl->Release(This)
+/*** IProgressNotify methods ***/
+#define IProgressNotify_OnProgress(This,dwProgressCurrent,dwProgressMaximum,fAccurate,fOwner) (This)->lpVtbl->OnProgress(This,dwProgressCurrent,dwProgressMaximum,fAccurate,fOwner)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IProgressNotify_OnProgress_Proxy(
+    IProgressNotify* This,
+    DWORD dwProgressCurrent,
+    DWORD dwProgressMaximum,
+    BOOL fAccurate,
+    BOOL fOwner);
+void __RPC_STUB IProgressNotify_OnProgress_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IProgressNotify_INTERFACE_DEFINED__ */
+
+#ifndef __ILayoutStorage_FWD_DEFINED__
+#define __ILayoutStorage_FWD_DEFINED__
+typedef interface ILayoutStorage ILayoutStorage;
+#endif
+
+typedef struct tagStorageLayout {
+    DWORD LayoutType;
+    OLECHAR *pwcsElementName;
+    LARGE_INTEGER cOffset;
+    LARGE_INTEGER cBytes;
+} StorageLayout;
+/*****************************************************************************
+ * ILayoutStorage interface
+ */
+#ifndef __ILayoutStorage_INTERFACE_DEFINED__
+#define __ILayoutStorage_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ILayoutStorage, 0x0e6d4d90, 0x6738, 0x11cf, 0x96,0x08, 0x00,0xaa,0x00,0x68,0x0d,0xb4);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ILayoutStorage : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE LayoutScript(
+        StorageLayout *pStorageLayout,
+        DWORD nEntries,
+        DWORD glfInterleavedFlag) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE BeginMonitor(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EndMonitor(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ReLayoutDocfile(
+        OLECHAR *pwcsNewDfName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ReLayoutDocfileOnILockBytes(
+        ILockBytes *pILockBytes) = 0;
+
+};
+#else
+typedef struct ILayoutStorageVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ILayoutStorage* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ILayoutStorage* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ILayoutStorage* This);
+
+    /*** ILayoutStorage methods ***/
+    HRESULT (STDMETHODCALLTYPE *LayoutScript)(
+        ILayoutStorage* This,
+        StorageLayout *pStorageLayout,
+        DWORD nEntries,
+        DWORD glfInterleavedFlag);
+
+    HRESULT (STDMETHODCALLTYPE *BeginMonitor)(
+        ILayoutStorage* This);
+
+    HRESULT (STDMETHODCALLTYPE *EndMonitor)(
+        ILayoutStorage* This);
+
+    HRESULT (STDMETHODCALLTYPE *ReLayoutDocfile)(
+        ILayoutStorage* This,
+        OLECHAR *pwcsNewDfName);
+
+    HRESULT (STDMETHODCALLTYPE *ReLayoutDocfileOnILockBytes)(
+        ILayoutStorage* This,
+        ILockBytes *pILockBytes);
+
+    END_INTERFACE
+} ILayoutStorageVtbl;
+interface ILayoutStorage {
+    CONST_VTBL ILayoutStorageVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ILayoutStorage_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ILayoutStorage_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ILayoutStorage_Release(This) (This)->lpVtbl->Release(This)
+/*** ILayoutStorage methods ***/
+#define ILayoutStorage_LayoutScript(This,pStorageLayout,nEntries,glfInterleavedFlag) (This)->lpVtbl->LayoutScript(This,pStorageLayout,nEntries,glfInterleavedFlag)
+#define ILayoutStorage_BeginMonitor(This) (This)->lpVtbl->BeginMonitor(This)
+#define ILayoutStorage_EndMonitor(This) (This)->lpVtbl->EndMonitor(This)
+#define ILayoutStorage_ReLayoutDocfile(This,pwcsNewDfName) (This)->lpVtbl->ReLayoutDocfile(This,pwcsNewDfName)
+#define ILayoutStorage_ReLayoutDocfileOnILockBytes(This,pILockBytes) (This)->lpVtbl->ReLayoutDocfileOnILockBytes(This,pILockBytes)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ILayoutStorage_LayoutScript_Proxy(
+    ILayoutStorage* This,
+    StorageLayout *pStorageLayout,
+    DWORD nEntries,
+    DWORD glfInterleavedFlag);
+void __RPC_STUB ILayoutStorage_LayoutScript_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ILayoutStorage_BeginMonitor_Proxy(
+    ILayoutStorage* This);
+void __RPC_STUB ILayoutStorage_BeginMonitor_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ILayoutStorage_EndMonitor_Proxy(
+    ILayoutStorage* This);
+void __RPC_STUB ILayoutStorage_EndMonitor_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ILayoutStorage_ReLayoutDocfile_Proxy(
+    ILayoutStorage* This,
+    OLECHAR *pwcsNewDfName);
+void __RPC_STUB ILayoutStorage_ReLayoutDocfile_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ILayoutStorage_ReLayoutDocfileOnILockBytes_Proxy(
+    ILayoutStorage* This,
+    ILockBytes *pILockBytes);
+void __RPC_STUB ILayoutStorage_ReLayoutDocfileOnILockBytes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ILayoutStorage_INTERFACE_DEFINED__ */
+
+#ifndef __IBlockingLock_FWD_DEFINED__
+#define __IBlockingLock_FWD_DEFINED__
+typedef interface IBlockingLock IBlockingLock;
+#endif
+
+/*****************************************************************************
+ * IBlockingLock interface
+ */
+#ifndef __IBlockingLock_INTERFACE_DEFINED__
+#define __IBlockingLock_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBlockingLock, 0x30f3d47a, 0x6447, 0x11d1, 0x8e,0x3c, 0x00,0xc0,0x4f,0xb9,0x38,0x6d);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IBlockingLock : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Lock(
+        DWORD dwTimeout) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Unlock(
+        ) = 0;
+
+};
+#else
+typedef struct IBlockingLockVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBlockingLock* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBlockingLock* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBlockingLock* This);
+
+    /*** IBlockingLock methods ***/
+    HRESULT (STDMETHODCALLTYPE *Lock)(
+        IBlockingLock* This,
+        DWORD dwTimeout);
+
+    HRESULT (STDMETHODCALLTYPE *Unlock)(
+        IBlockingLock* This);
+
+    END_INTERFACE
+} IBlockingLockVtbl;
+interface IBlockingLock {
+    CONST_VTBL IBlockingLockVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IBlockingLock_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBlockingLock_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBlockingLock_Release(This) (This)->lpVtbl->Release(This)
+/*** IBlockingLock methods ***/
+#define IBlockingLock_Lock(This,dwTimeout) (This)->lpVtbl->Lock(This,dwTimeout)
+#define IBlockingLock_Unlock(This) (This)->lpVtbl->Unlock(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBlockingLock_Lock_Proxy(
+    IBlockingLock* This,
+    DWORD dwTimeout);
+void __RPC_STUB IBlockingLock_Lock_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBlockingLock_Unlock_Proxy(
+    IBlockingLock* This);
+void __RPC_STUB IBlockingLock_Unlock_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBlockingLock_INTERFACE_DEFINED__ */
+
+#ifndef __ITimeAndNoticeControl_FWD_DEFINED__
+#define __ITimeAndNoticeControl_FWD_DEFINED__
+typedef interface ITimeAndNoticeControl ITimeAndNoticeControl;
+#endif
+
+/*****************************************************************************
+ * ITimeAndNoticeControl interface
+ */
+#ifndef __ITimeAndNoticeControl_INTERFACE_DEFINED__
+#define __ITimeAndNoticeControl_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ITimeAndNoticeControl, 0xbc0bf6ae, 0x8878, 0x11d1, 0x83,0xe9, 0x00,0xc0,0x4f,0xc2,0xc6,0xd4);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ITimeAndNoticeControl : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SuppressChanges(
+        DWORD res1,
+        DWORD res2) = 0;
+
+};
+#else
+typedef struct ITimeAndNoticeControlVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITimeAndNoticeControl* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITimeAndNoticeControl* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITimeAndNoticeControl* This);
+
+    /*** ITimeAndNoticeControl methods ***/
+    HRESULT (STDMETHODCALLTYPE *SuppressChanges)(
+        ITimeAndNoticeControl* This,
+        DWORD res1,
+        DWORD res2);
+
+    END_INTERFACE
+} ITimeAndNoticeControlVtbl;
+interface ITimeAndNoticeControl {
+    CONST_VTBL ITimeAndNoticeControlVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ITimeAndNoticeControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITimeAndNoticeControl_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITimeAndNoticeControl_Release(This) (This)->lpVtbl->Release(This)
+/*** ITimeAndNoticeControl methods ***/
+#define ITimeAndNoticeControl_SuppressChanges(This,res1,res2) (This)->lpVtbl->SuppressChanges(This,res1,res2)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ITimeAndNoticeControl_SuppressChanges_Proxy(
+    ITimeAndNoticeControl* This,
+    DWORD res1,
+    DWORD res2);
+void __RPC_STUB ITimeAndNoticeControl_SuppressChanges_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ITimeAndNoticeControl_INTERFACE_DEFINED__ */
+
+#ifndef __IOplockStorage_FWD_DEFINED__
+#define __IOplockStorage_FWD_DEFINED__
+typedef interface IOplockStorage IOplockStorage;
+#endif
+
+/*****************************************************************************
+ * IOplockStorage interface
+ */
+#ifndef __IOplockStorage_INTERFACE_DEFINED__
+#define __IOplockStorage_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOplockStorage, 0x8d19c834, 0x8879, 0x11d1, 0x83,0xe9, 0x00,0xc0,0x4f,0xc2,0xc6,0xd4);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IOplockStorage : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE CreateStorageEx(
+        LPCWSTR pwcsName,
+        DWORD grfMode,
+        DWORD stgfmt,
+        DWORD grfAttrs,
+        REFIID riid,
+        void **ppstgOpen) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OpenStorageEx(
+        LPCWSTR pwcsName,
+        DWORD grfMode,
+        DWORD stgfmt,
+        DWORD grfAttrs,
+        REFIID riid,
+        void **ppstgOpen) = 0;
+
+};
+#else
+typedef struct IOplockStorageVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOplockStorage* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOplockStorage* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOplockStorage* This);
+
+    /*** IOplockStorage methods ***/
+    HRESULT (STDMETHODCALLTYPE *CreateStorageEx)(
+        IOplockStorage* This,
+        LPCWSTR pwcsName,
+        DWORD grfMode,
+        DWORD stgfmt,
+        DWORD grfAttrs,
+        REFIID riid,
+        void **ppstgOpen);
+
+    HRESULT (STDMETHODCALLTYPE *OpenStorageEx)(
+        IOplockStorage* This,
+        LPCWSTR pwcsName,
+        DWORD grfMode,
+        DWORD stgfmt,
+        DWORD grfAttrs,
+        REFIID riid,
+        void **ppstgOpen);
+
+    END_INTERFACE
+} IOplockStorageVtbl;
+interface IOplockStorage {
+    CONST_VTBL IOplockStorageVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IOplockStorage_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IOplockStorage_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IOplockStorage_Release(This) (This)->lpVtbl->Release(This)
+/*** IOplockStorage methods ***/
+#define IOplockStorage_CreateStorageEx(This,pwcsName,grfMode,stgfmt,grfAttrs,riid,ppstgOpen) (This)->lpVtbl->CreateStorageEx(This,pwcsName,grfMode,stgfmt,grfAttrs,riid,ppstgOpen)
+#define IOplockStorage_OpenStorageEx(This,pwcsName,grfMode,stgfmt,grfAttrs,riid,ppstgOpen) (This)->lpVtbl->OpenStorageEx(This,pwcsName,grfMode,stgfmt,grfAttrs,riid,ppstgOpen)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IOplockStorage_CreateStorageEx_Proxy(
+    IOplockStorage* This,
+    LPCWSTR pwcsName,
+    DWORD grfMode,
+    DWORD stgfmt,
+    DWORD grfAttrs,
+    REFIID riid,
+    void **ppstgOpen);
+void __RPC_STUB IOplockStorage_CreateStorageEx_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOplockStorage_OpenStorageEx_Proxy(
+    IOplockStorage* This,
+    LPCWSTR pwcsName,
+    DWORD grfMode,
+    DWORD stgfmt,
+    DWORD grfAttrs,
+    REFIID riid,
+    void **ppstgOpen);
+void __RPC_STUB IOplockStorage_OpenStorageEx_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOplockStorage_INTERFACE_DEFINED__ */
+
+#ifndef __IEnumFORMATETC_FWD_DEFINED__
+#define __IEnumFORMATETC_FWD_DEFINED__
+typedef interface IEnumFORMATETC IEnumFORMATETC;
+#endif
+
+typedef IEnumFORMATETC *LPENUMFORMATETC;
+typedef struct tagDVTARGETDEVICE {
+    DWORD tdSize;
+    WORD tdDriverNameOffset;
+    WORD tdDeviceNameOffset;
+    WORD tdPortNameOffset;
+    WORD tdExtDevmodeOffset;
+    BYTE tdData[1];
+} DVTARGETDEVICE;
+typedef CLIPFORMAT *LPCLIPFORMAT;
+typedef struct tagFORMATETC {
+    CLIPFORMAT cfFormat;
+    DVTARGETDEVICE *ptd;
+    DWORD dwAspect;
+    LONG lindex;
+    DWORD tymed;
+} FORMATETC;
+typedef struct tagFORMATETC *LPFORMATETC;
+/*****************************************************************************
+ * IEnumFORMATETC interface
+ */
+#ifndef __IEnumFORMATETC_INTERFACE_DEFINED__
+#define __IEnumFORMATETC_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IEnumFORMATETC, 0x00000103, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IEnumFORMATETC : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Next(
+        ULONG celt,
+        FORMATETC *rgelt,
+        ULONG *pceltFetched) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Skip(
+        ULONG celt) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IEnumFORMATETC **ppenum) = 0;
+
+};
+#else
+typedef struct IEnumFORMATETCVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IEnumFORMATETC* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IEnumFORMATETC* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IEnumFORMATETC* This);
+
+    /*** IEnumFORMATETC methods ***/
+    HRESULT (STDMETHODCALLTYPE *Next)(
+        IEnumFORMATETC* This,
+        ULONG celt,
+        FORMATETC *rgelt,
+        ULONG *pceltFetched);
+
+    HRESULT (STDMETHODCALLTYPE *Skip)(
+        IEnumFORMATETC* This,
+        ULONG celt);
+
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        IEnumFORMATETC* This);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IEnumFORMATETC* This,
+        IEnumFORMATETC **ppenum);
+
+    END_INTERFACE
+} IEnumFORMATETCVtbl;
+interface IEnumFORMATETC {
+    CONST_VTBL IEnumFORMATETCVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IEnumFORMATETC_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumFORMATETC_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumFORMATETC_Release(This) (This)->lpVtbl->Release(This)
+/*** IEnumFORMATETC methods ***/
+#define IEnumFORMATETC_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
+#define IEnumFORMATETC_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumFORMATETC_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumFORMATETC_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IEnumFORMATETC_RemoteNext_Proxy(
+    IEnumFORMATETC* This,
+    ULONG celt,
+    FORMATETC *rgelt,
+    ULONG *pceltFetched);
+void __RPC_STUB IEnumFORMATETC_RemoteNext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Skip_Proxy(
+    IEnumFORMATETC* This,
+    ULONG celt);
+void __RPC_STUB IEnumFORMATETC_Skip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Reset_Proxy(
+    IEnumFORMATETC* This);
+void __RPC_STUB IEnumFORMATETC_Reset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Clone_Proxy(
+    IEnumFORMATETC* This,
+    IEnumFORMATETC **ppenum);
+void __RPC_STUB IEnumFORMATETC_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IEnumFORMATETC_Next_Proxy(
+    IEnumFORMATETC* This,
+    ULONG celt,
+    FORMATETC *rgelt,
+    ULONG *pceltFetched);
+HRESULT __RPC_STUB IEnumFORMATETC_Next_Stub(
+    IEnumFORMATETC* This,
+    ULONG celt,
+    FORMATETC *rgelt,
+    ULONG *pceltFetched);
+
+#endif  /* __IEnumFORMATETC_INTERFACE_DEFINED__ */
+
+#ifndef __IEnumSTATDATA_FWD_DEFINED__
+#define __IEnumSTATDATA_FWD_DEFINED__
+typedef interface IEnumSTATDATA IEnumSTATDATA;
+#endif
+
+typedef IEnumSTATDATA *LPENUMSTATDATA;
+typedef enum tagADVF {
+    ADVF_NODATA = 1,
+    ADVF_PRIMEFIRST = 2,
+    ADVF_ONLYONCE = 4,
+    ADVF_DATAONSTOP = 64,
+    ADVFCACHE_NOHANDLER = 8,
+    ADVFCACHE_FORCEBUILTIN = 16,
+    ADVFCACHE_ONSAVE = 32
+} ADVF;
+typedef struct tagSTATDATA {
+    FORMATETC formatetc;
+    DWORD advf;
+    IAdviseSink *pAdvSink;
+    DWORD dwConnection;
+} STATDATA;
+typedef struct tagSTATDATA *LPSTATDATA;
+/*****************************************************************************
+ * IEnumSTATDATA interface
+ */
+#ifndef __IEnumSTATDATA_INTERFACE_DEFINED__
+#define __IEnumSTATDATA_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IEnumSTATDATA, 0x00000105, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IEnumSTATDATA : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Next(
+        ULONG celt,
+        STATDATA *rgelt,
+        ULONG *pceltFetched) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Skip(
+        ULONG celt) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IEnumSTATDATA **ppenum) = 0;
+
+};
+#else
+typedef struct IEnumSTATDATAVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IEnumSTATDATA* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IEnumSTATDATA* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IEnumSTATDATA* This);
+
+    /*** IEnumSTATDATA methods ***/
+    HRESULT (STDMETHODCALLTYPE *Next)(
+        IEnumSTATDATA* This,
+        ULONG celt,
+        STATDATA *rgelt,
+        ULONG *pceltFetched);
+
+    HRESULT (STDMETHODCALLTYPE *Skip)(
+        IEnumSTATDATA* This,
+        ULONG celt);
+
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        IEnumSTATDATA* This);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IEnumSTATDATA* This,
+        IEnumSTATDATA **ppenum);
+
+    END_INTERFACE
+} IEnumSTATDATAVtbl;
+interface IEnumSTATDATA {
+    CONST_VTBL IEnumSTATDATAVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IEnumSTATDATA_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumSTATDATA_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumSTATDATA_Release(This) (This)->lpVtbl->Release(This)
+/*** IEnumSTATDATA methods ***/
+#define IEnumSTATDATA_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
+#define IEnumSTATDATA_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumSTATDATA_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumSTATDATA_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IEnumSTATDATA_RemoteNext_Proxy(
+    IEnumSTATDATA* This,
+    ULONG celt,
+    STATDATA *rgelt,
+    ULONG *pceltFetched);
+void __RPC_STUB IEnumSTATDATA_RemoteNext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Skip_Proxy(
+    IEnumSTATDATA* This,
+    ULONG celt);
+void __RPC_STUB IEnumSTATDATA_Skip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Reset_Proxy(
+    IEnumSTATDATA* This);
+void __RPC_STUB IEnumSTATDATA_Reset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Clone_Proxy(
+    IEnumSTATDATA* This,
+    IEnumSTATDATA **ppenum);
+void __RPC_STUB IEnumSTATDATA_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IEnumSTATDATA_Next_Proxy(
+    IEnumSTATDATA* This,
+    ULONG celt,
+    STATDATA *rgelt,
+    ULONG *pceltFetched);
+HRESULT __RPC_STUB IEnumSTATDATA_Next_Stub(
+    IEnumSTATDATA* This,
+    ULONG celt,
+    STATDATA *rgelt,
+    ULONG *pceltFetched);
+
+#endif  /* __IEnumSTATDATA_INTERFACE_DEFINED__ */
+
+typedef IAdviseSink *LPADVISESINK;
+typedef enum tagTYMED {
+    TYMED_HGLOBAL = 1,
+    TYMED_FILE = 2,
+    TYMED_ISTREAM = 4,
+    TYMED_ISTORAGE = 8,
+    TYMED_GDI = 16,
+    TYMED_MFPICT = 32,
+    TYMED_ENHMF = 64,
+    TYMED_NULL = 0
+} TYMED;
+typedef struct tagRemSTGMEDIUM {
+    DWORD tymed;
+    DWORD dwHandleType;
+    unsigned long pData;
+    unsigned long pUnkForRelease;
+    unsigned long cbData;
+    byte data[1];
+} RemSTGMEDIUM;
+typedef struct tagSTGMEDIUM {
+    DWORD tymed;
+    union {
+        HBITMAP hBitmap;
+        HMETAFILEPICT hMetaFilePict;
+        HENHMETAFILE hEnhMetaFile;
+        HGLOBAL hGlobal;
+        LPOLESTR lpszFileName;
+        IStream *pstm;
+        IStorage *pstg;
+    } DUMMYUNIONNAME;
+    IUnknown *pUnkForRelease;
+} uSTGMEDIUM;
+typedef struct _GDI_OBJECT {
+    DWORD ObjectType;
+    union {
+        wireHBITMAP hBitmap;
+        wireHPALETTE hPalette;
+        wireHGLOBAL hGeneric;
+    } u;
+} GDI_OBJECT;
+typedef struct _userSTGMEDIUM {
+    struct {
+        DWORD tymed;
+        union {
+            wireHMETAFILEPICT hMetaFilePict;
+            wireHENHMETAFILE hHEnhMetaFile;
+            GDI_OBJECT *hGdiHandle;
+            wireHGLOBAL hGlobal;
+            LPOLESTR lpszFileName;
+            BYTE_BLOB *pstm;
+            BYTE_BLOB *pstg;
+        } u;
+    } DUMMYUNIONNAME;
+    IUnknown *pUnkForRelease;
+} userSTGMEDIUM;
+typedef userSTGMEDIUM *wireSTGMEDIUM;
+typedef uSTGMEDIUM STGMEDIUM;
+typedef userSTGMEDIUM *wireASYNC_STGMEDIUM;
+typedef STGMEDIUM ASYNC_STGMEDIUM;
+typedef STGMEDIUM *LPSTGMEDIUM;
+typedef struct _userFLAG_STGMEDIUM {
+    long ContextFlags;
+    long fPassOwnership;
+    userSTGMEDIUM Stgmed;
+} userFLAG_STGMEDIUM;
+typedef userFLAG_STGMEDIUM *wireFLAG_STGMEDIUM;
+typedef struct _FLAG_STGMEDIUM {
+    long ContextFlags;
+    long fPassOwnership;
+    STGMEDIUM Stgmed;
+} FLAG_STGMEDIUM;
+/*****************************************************************************
+ * IAdviseSink interface
+ */
+#ifndef __IAdviseSink_INTERFACE_DEFINED__
+#define __IAdviseSink_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IAdviseSink, 0x0000010f, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IAdviseSink : public IUnknown
+{
+    virtual void STDMETHODCALLTYPE OnDataChange(
+        FORMATETC *pFormatetc,
+        STGMEDIUM *pStgmed) = 0;
+
+    virtual void STDMETHODCALLTYPE OnViewChange(
+        DWORD dwAspect,
+        LONG lindex) = 0;
+
+    virtual void STDMETHODCALLTYPE OnRename(
+        IMoniker *pmk) = 0;
+
+    virtual void STDMETHODCALLTYPE OnSave(
+        ) = 0;
+
+    virtual void STDMETHODCALLTYPE OnClose(
+        ) = 0;
+
+};
+#else
+typedef struct IAdviseSinkVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IAdviseSink* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IAdviseSink* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IAdviseSink* This);
+
+    /*** IAdviseSink methods ***/
+    void (STDMETHODCALLTYPE *OnDataChange)(
+        IAdviseSink* This,
+        FORMATETC *pFormatetc,
+        STGMEDIUM *pStgmed);
+
+    void (STDMETHODCALLTYPE *OnViewChange)(
+        IAdviseSink* This,
+        DWORD dwAspect,
+        LONG lindex);
+
+    void (STDMETHODCALLTYPE *OnRename)(
+        IAdviseSink* This,
+        IMoniker *pmk);
+
+    void (STDMETHODCALLTYPE *OnSave)(
+        IAdviseSink* This);
+
+    void (STDMETHODCALLTYPE *OnClose)(
+        IAdviseSink* This);
+
+    END_INTERFACE
+} IAdviseSinkVtbl;
+interface IAdviseSink {
+    CONST_VTBL IAdviseSinkVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IAdviseSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAdviseSink_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAdviseSink_Release(This) (This)->lpVtbl->Release(This)
+/*** IAdviseSink methods ***/
+#define IAdviseSink_OnDataChange(This,pFormatetc,pStgmed) (This)->lpVtbl->OnDataChange(This,pFormatetc,pStgmed)
+#define IAdviseSink_OnViewChange(This,dwAspect,lindex) (This)->lpVtbl->OnViewChange(This,dwAspect,lindex)
+#define IAdviseSink_OnRename(This,pmk) (This)->lpVtbl->OnRename(This,pmk)
+#define IAdviseSink_OnSave(This) (This)->lpVtbl->OnSave(This)
+#define IAdviseSink_OnClose(This) (This)->lpVtbl->OnClose(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IAdviseSink_RemoteOnDataChange_Proxy(
+    IAdviseSink* This,
+    FORMATETC *pFormatetc,
+    ASYNC_STGMEDIUM *pStgmed);
+void __RPC_STUB IAdviseSink_RemoteOnDataChange_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAdviseSink_RemoteOnViewChange_Proxy(
+    IAdviseSink* This,
+    DWORD dwAspect,
+    LONG lindex);
+void __RPC_STUB IAdviseSink_RemoteOnViewChange_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAdviseSink_RemoteOnRename_Proxy(
+    IAdviseSink* This,
+    IMoniker *pmk);
+void __RPC_STUB IAdviseSink_RemoteOnRename_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAdviseSink_RemoteOnSave_Proxy(
+    IAdviseSink* This);
+void __RPC_STUB IAdviseSink_RemoteOnSave_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAdviseSink_RemoteOnClose_Proxy(
+    IAdviseSink* This);
+void __RPC_STUB IAdviseSink_RemoteOnClose_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void CALLBACK IAdviseSink_OnDataChange_Proxy(
+    IAdviseSink* This,
+    FORMATETC *pFormatetc,
+    STGMEDIUM *pStgmed);
+HRESULT __RPC_STUB IAdviseSink_OnDataChange_Stub(
+    IAdviseSink* This,
+    FORMATETC *pFormatetc,
+    ASYNC_STGMEDIUM *pStgmed);
+void CALLBACK IAdviseSink_OnViewChange_Proxy(
+    IAdviseSink* This,
+    DWORD dwAspect,
+    LONG lindex);
+HRESULT __RPC_STUB IAdviseSink_OnViewChange_Stub(
+    IAdviseSink* This,
+    DWORD dwAspect,
+    LONG lindex);
+void CALLBACK IAdviseSink_OnRename_Proxy(
+    IAdviseSink* This,
+    IMoniker *pmk);
+HRESULT __RPC_STUB IAdviseSink_OnRename_Stub(
+    IAdviseSink* This,
+    IMoniker *pmk);
+void CALLBACK IAdviseSink_OnSave_Proxy(
+    IAdviseSink* This);
+HRESULT __RPC_STUB IAdviseSink_OnSave_Stub(
+    IAdviseSink* This);
+void CALLBACK IAdviseSink_OnClose_Proxy(
+    IAdviseSink* This);
+HRESULT __RPC_STUB IAdviseSink_OnClose_Stub(
+    IAdviseSink* This);
+
+#endif  /* __IAdviseSink_INTERFACE_DEFINED__ */
+
+#ifndef __IAdviseSink2_FWD_DEFINED__
+#define __IAdviseSink2_FWD_DEFINED__
+typedef interface IAdviseSink2 IAdviseSink2;
+#endif
+
+typedef IAdviseSink2 *LPADVISESINK2;
+/*****************************************************************************
+ * IAdviseSink2 interface
+ */
+#ifndef __IAdviseSink2_INTERFACE_DEFINED__
+#define __IAdviseSink2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IAdviseSink2, 0x00000125, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IAdviseSink2 : public IAdviseSink
+{
+    virtual void STDMETHODCALLTYPE OnLinkSrcChange(
+        IMoniker *pmk) = 0;
+
+};
+#else
+typedef struct IAdviseSink2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IAdviseSink2* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IAdviseSink2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IAdviseSink2* This);
+
+    /*** IAdviseSink methods ***/
+    void (STDMETHODCALLTYPE *OnDataChange)(
+        IAdviseSink2* This,
+        FORMATETC *pFormatetc,
+        STGMEDIUM *pStgmed);
+
+    void (STDMETHODCALLTYPE *OnViewChange)(
+        IAdviseSink2* This,
+        DWORD dwAspect,
+        LONG lindex);
+
+    void (STDMETHODCALLTYPE *OnRename)(
+        IAdviseSink2* This,
+        IMoniker *pmk);
+
+    void (STDMETHODCALLTYPE *OnSave)(
+        IAdviseSink2* This);
+
+    void (STDMETHODCALLTYPE *OnClose)(
+        IAdviseSink2* This);
+
+    /*** IAdviseSink2 methods ***/
+    void (STDMETHODCALLTYPE *OnLinkSrcChange)(
+        IAdviseSink2* This,
+        IMoniker *pmk);
+
+    END_INTERFACE
+} IAdviseSink2Vtbl;
+interface IAdviseSink2 {
+    CONST_VTBL IAdviseSink2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IAdviseSink2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAdviseSink2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAdviseSink2_Release(This) (This)->lpVtbl->Release(This)
+/*** IAdviseSink methods ***/
+#define IAdviseSink2_OnDataChange(This,pFormatetc,pStgmed) (This)->lpVtbl->OnDataChange(This,pFormatetc,pStgmed)
+#define IAdviseSink2_OnViewChange(This,dwAspect,lindex) (This)->lpVtbl->OnViewChange(This,dwAspect,lindex)
+#define IAdviseSink2_OnRename(This,pmk) (This)->lpVtbl->OnRename(This,pmk)
+#define IAdviseSink2_OnSave(This) (This)->lpVtbl->OnSave(This)
+#define IAdviseSink2_OnClose(This) (This)->lpVtbl->OnClose(This)
+/*** IAdviseSink2 methods ***/
+#define IAdviseSink2_OnLinkSrcChange(This,pmk) (This)->lpVtbl->OnLinkSrcChange(This,pmk)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IAdviseSink2_RemoteOnLinkSrcChange_Proxy(
+    IAdviseSink2* This,
+    IMoniker *pmk);
+void __RPC_STUB IAdviseSink2_RemoteOnLinkSrcChange_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void CALLBACK IAdviseSink2_OnLinkSrcChange_Proxy(
+    IAdviseSink2* This,
+    IMoniker *pmk);
+HRESULT __RPC_STUB IAdviseSink2_OnLinkSrcChange_Stub(
+    IAdviseSink2* This,
+    IMoniker *pmk);
+
+#endif  /* __IAdviseSink2_INTERFACE_DEFINED__ */
+
+#ifndef __IDataObject_FWD_DEFINED__
+#define __IDataObject_FWD_DEFINED__
+typedef interface IDataObject IDataObject;
+#endif
+
+typedef IDataObject *LPDATAOBJECT;
+typedef enum tagDATADIR {
+    DATADIR_GET = 1,
+    DATADIR_SET = 2
+} DATADIR;
+/*****************************************************************************
+ * IDataObject interface
+ */
+#ifndef __IDataObject_INTERFACE_DEFINED__
+#define __IDataObject_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDataObject, 0x0000010e, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IDataObject : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetData(
+        FORMATETC *pformatetcIn,
+        STGMEDIUM *pmedium) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDataHere(
+        FORMATETC *pformatetc,
+        STGMEDIUM *pmedium) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE QueryGetData(
+        FORMATETC *pformatetc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCanonicalFormatEtc(
+        FORMATETC *pformatectIn,
+        FORMATETC *pformatetcOut) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetData(
+        FORMATETC *pformatetc,
+        STGMEDIUM *pmedium,
+        BOOL fRelease) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumFormatEtc(
+        DWORD dwDirection,
+        IEnumFORMATETC **ppenumFormatEtc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DAdvise(
+        FORMATETC *pformatetc,
+        DWORD advf,
+        IAdviseSink *pAdvSink,
+        DWORD *pdwConnection) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DUnadvise(
+        DWORD dwConnection) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumDAdvise(
+        IEnumSTATDATA **ppenumAdvise) = 0;
+
+};
+#else
+typedef struct IDataObjectVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDataObject* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDataObject* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDataObject* This);
+
+    /*** IDataObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetData)(
+        IDataObject* This,
+        FORMATETC *pformatetcIn,
+        STGMEDIUM *pmedium);
+
+    HRESULT (STDMETHODCALLTYPE *GetDataHere)(
+        IDataObject* This,
+        FORMATETC *pformatetc,
+        STGMEDIUM *pmedium);
+
+    HRESULT (STDMETHODCALLTYPE *QueryGetData)(
+        IDataObject* This,
+        FORMATETC *pformatetc);
+
+    HRESULT (STDMETHODCALLTYPE *GetCanonicalFormatEtc)(
+        IDataObject* This,
+        FORMATETC *pformatectIn,
+        FORMATETC *pformatetcOut);
+
+    HRESULT (STDMETHODCALLTYPE *SetData)(
+        IDataObject* This,
+        FORMATETC *pformatetc,
+        STGMEDIUM *pmedium,
+        BOOL fRelease);
+
+    HRESULT (STDMETHODCALLTYPE *EnumFormatEtc)(
+        IDataObject* This,
+        DWORD dwDirection,
+        IEnumFORMATETC **ppenumFormatEtc);
+
+    HRESULT (STDMETHODCALLTYPE *DAdvise)(
+        IDataObject* This,
+        FORMATETC *pformatetc,
+        DWORD advf,
+        IAdviseSink *pAdvSink,
+        DWORD *pdwConnection);
+
+    HRESULT (STDMETHODCALLTYPE *DUnadvise)(
+        IDataObject* This,
+        DWORD dwConnection);
+
+    HRESULT (STDMETHODCALLTYPE *EnumDAdvise)(
+        IDataObject* This,
+        IEnumSTATDATA **ppenumAdvise);
+
+    END_INTERFACE
+} IDataObjectVtbl;
+interface IDataObject {
+    CONST_VTBL IDataObjectVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IDataObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDataObject_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDataObject_Release(This) (This)->lpVtbl->Release(This)
+/*** IDataObject methods ***/
+#define IDataObject_GetData(This,pformatetcIn,pmedium) (This)->lpVtbl->GetData(This,pformatetcIn,pmedium)
+#define IDataObject_GetDataHere(This,pformatetc,pmedium) (This)->lpVtbl->GetDataHere(This,pformatetc,pmedium)
+#define IDataObject_QueryGetData(This,pformatetc) (This)->lpVtbl->QueryGetData(This,pformatetc)
+#define IDataObject_GetCanonicalFormatEtc(This,pformatectIn,pformatetcOut) (This)->lpVtbl->GetCanonicalFormatEtc(This,pformatectIn,pformatetcOut)
+#define IDataObject_SetData(This,pformatetc,pmedium,fRelease) (This)->lpVtbl->SetData(This,pformatetc,pmedium,fRelease)
+#define IDataObject_EnumFormatEtc(This,dwDirection,ppenumFormatEtc) (This)->lpVtbl->EnumFormatEtc(This,dwDirection,ppenumFormatEtc)
+#define IDataObject_DAdvise(This,pformatetc,advf,pAdvSink,pdwConnection) (This)->lpVtbl->DAdvise(This,pformatetc,advf,pAdvSink,pdwConnection)
+#define IDataObject_DUnadvise(This,dwConnection) (This)->lpVtbl->DUnadvise(This,dwConnection)
+#define IDataObject_EnumDAdvise(This,ppenumAdvise) (This)->lpVtbl->EnumDAdvise(This,ppenumAdvise)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IDataObject_RemoteGetData_Proxy(
+    IDataObject* This,
+    FORMATETC *pformatetcIn,
+    STGMEDIUM *pRemoteMedium);
+void __RPC_STUB IDataObject_RemoteGetData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDataObject_RemoteGetDataHere_Proxy(
+    IDataObject* This,
+    FORMATETC *pformatetc,
+    STGMEDIUM *pRemoteMedium);
+void __RPC_STUB IDataObject_RemoteGetDataHere_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDataObject_QueryGetData_Proxy(
+    IDataObject* This,
+    FORMATETC *pformatetc);
+void __RPC_STUB IDataObject_QueryGetData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDataObject_GetCanonicalFormatEtc_Proxy(
+    IDataObject* This,
+    FORMATETC *pformatectIn,
+    FORMATETC *pformatetcOut);
+void __RPC_STUB IDataObject_GetCanonicalFormatEtc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDataObject_RemoteSetData_Proxy(
+    IDataObject* This,
+    FORMATETC *pformatetc,
+    FLAG_STGMEDIUM *pmedium,
+    BOOL fRelease);
+void __RPC_STUB IDataObject_RemoteSetData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDataObject_EnumFormatEtc_Proxy(
+    IDataObject* This,
+    DWORD dwDirection,
+    IEnumFORMATETC **ppenumFormatEtc);
+void __RPC_STUB IDataObject_EnumFormatEtc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDataObject_DAdvise_Proxy(
+    IDataObject* This,
+    FORMATETC *pformatetc,
+    DWORD advf,
+    IAdviseSink *pAdvSink,
+    DWORD *pdwConnection);
+void __RPC_STUB IDataObject_DAdvise_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDataObject_DUnadvise_Proxy(
+    IDataObject* This,
+    DWORD dwConnection);
+void __RPC_STUB IDataObject_DUnadvise_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDataObject_EnumDAdvise_Proxy(
+    IDataObject* This,
+    IEnumSTATDATA **ppenumAdvise);
+void __RPC_STUB IDataObject_EnumDAdvise_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IDataObject_GetData_Proxy(
+    IDataObject* This,
+    FORMATETC *pformatetcIn,
+    STGMEDIUM *pmedium);
+HRESULT __RPC_STUB IDataObject_GetData_Stub(
+    IDataObject* This,
+    FORMATETC *pformatetcIn,
+    STGMEDIUM *pRemoteMedium);
+HRESULT CALLBACK IDataObject_GetDataHere_Proxy(
+    IDataObject* This,
+    FORMATETC *pformatetc,
+    STGMEDIUM *pmedium);
+HRESULT __RPC_STUB IDataObject_GetDataHere_Stub(
+    IDataObject* This,
+    FORMATETC *pformatetc,
+    STGMEDIUM *pRemoteMedium);
+HRESULT CALLBACK IDataObject_SetData_Proxy(
+    IDataObject* This,
+    FORMATETC *pformatetc,
+    STGMEDIUM *pmedium,
+    BOOL fRelease);
+HRESULT __RPC_STUB IDataObject_SetData_Stub(
+    IDataObject* This,
+    FORMATETC *pformatetc,
+    FLAG_STGMEDIUM *pmedium,
+    BOOL fRelease);
+
+#endif  /* __IDataObject_INTERFACE_DEFINED__ */
+
+#ifndef __IDataAdviseHolder_FWD_DEFINED__
+#define __IDataAdviseHolder_FWD_DEFINED__
+typedef interface IDataAdviseHolder IDataAdviseHolder;
+#endif
+
+typedef IDataAdviseHolder *LPDATAADVISEHOLDER;
+/*****************************************************************************
+ * IDataAdviseHolder interface
+ */
+#ifndef __IDataAdviseHolder_INTERFACE_DEFINED__
+#define __IDataAdviseHolder_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDataAdviseHolder, 0x00000110, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IDataAdviseHolder : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Advise(
+        IDataObject *pDataObject,
+        FORMATETC *pFetc,
+        DWORD advf,
+        IAdviseSink *pAdvise,
+        DWORD *pdwConnection) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Unadvise(
+        DWORD dwConnection) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumAdvise(
+        IEnumSTATDATA **ppenumAdvise) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SendOnDataChange(
+        IDataObject *pDataObject,
+        DWORD dwReserved,
+        DWORD advf) = 0;
+
+};
+#else
+typedef struct IDataAdviseHolderVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDataAdviseHolder* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDataAdviseHolder* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDataAdviseHolder* This);
+
+    /*** IDataAdviseHolder methods ***/
+    HRESULT (STDMETHODCALLTYPE *Advise)(
+        IDataAdviseHolder* This,
+        IDataObject *pDataObject,
+        FORMATETC *pFetc,
+        DWORD advf,
+        IAdviseSink *pAdvise,
+        DWORD *pdwConnection);
+
+    HRESULT (STDMETHODCALLTYPE *Unadvise)(
+        IDataAdviseHolder* This,
+        DWORD dwConnection);
+
+    HRESULT (STDMETHODCALLTYPE *EnumAdvise)(
+        IDataAdviseHolder* This,
+        IEnumSTATDATA **ppenumAdvise);
+
+    HRESULT (STDMETHODCALLTYPE *SendOnDataChange)(
+        IDataAdviseHolder* This,
+        IDataObject *pDataObject,
+        DWORD dwReserved,
+        DWORD advf);
+
+    END_INTERFACE
+} IDataAdviseHolderVtbl;
+interface IDataAdviseHolder {
+    CONST_VTBL IDataAdviseHolderVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IDataAdviseHolder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDataAdviseHolder_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDataAdviseHolder_Release(This) (This)->lpVtbl->Release(This)
+/*** IDataAdviseHolder methods ***/
+#define IDataAdviseHolder_Advise(This,pDataObject,pFetc,advf,pAdvise,pdwConnection) (This)->lpVtbl->Advise(This,pDataObject,pFetc,advf,pAdvise,pdwConnection)
+#define IDataAdviseHolder_Unadvise(This,dwConnection) (This)->lpVtbl->Unadvise(This,dwConnection)
+#define IDataAdviseHolder_EnumAdvise(This,ppenumAdvise) (This)->lpVtbl->EnumAdvise(This,ppenumAdvise)
+#define IDataAdviseHolder_SendOnDataChange(This,pDataObject,dwReserved,advf) (This)->lpVtbl->SendOnDataChange(This,pDataObject,dwReserved,advf)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IDataAdviseHolder_Advise_Proxy(
+    IDataAdviseHolder* This,
+    IDataObject *pDataObject,
+    FORMATETC *pFetc,
+    DWORD advf,
+    IAdviseSink *pAdvise,
+    DWORD *pdwConnection);
+void __RPC_STUB IDataAdviseHolder_Advise_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDataAdviseHolder_Unadvise_Proxy(
+    IDataAdviseHolder* This,
+    DWORD dwConnection);
+void __RPC_STUB IDataAdviseHolder_Unadvise_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDataAdviseHolder_EnumAdvise_Proxy(
+    IDataAdviseHolder* This,
+    IEnumSTATDATA **ppenumAdvise);
+void __RPC_STUB IDataAdviseHolder_EnumAdvise_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDataAdviseHolder_SendOnDataChange_Proxy(
+    IDataAdviseHolder* This,
+    IDataObject *pDataObject,
+    DWORD dwReserved,
+    DWORD advf);
+void __RPC_STUB IDataAdviseHolder_SendOnDataChange_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IDataAdviseHolder_INTERFACE_DEFINED__ */
+
+#ifndef __IMessageFilter_FWD_DEFINED__
+#define __IMessageFilter_FWD_DEFINED__
+typedef interface IMessageFilter IMessageFilter;
+#endif
+
+typedef IMessageFilter *LPMESSAGEFILTER;
+typedef enum tagCALLTYPE {
+    CALLTYPE_TOPLEVEL = 1,
+    CALLTYPE_NESTED = 2,
+    CALLTYPE_ASYNC = 3,
+    CALLTYPE_TOPLEVEL_CALLPENDING = 4,
+    CALLTYPE_ASYNC_CALLPENDING = 5
+} CALLTYPE;
+typedef enum tagSERVERCALL {
+    SERVERCALL_ISHANDLED = 0,
+    SERVERCALL_REJECTED = 1,
+    SERVERCALL_RETRYLATER = 2
+} SERVERCALL;
+typedef enum tagPENDINGTYPE {
+    PENDINGTYPE_TOPLEVEL = 1,
+    PENDINGTYPE_NESTED = 2
+} PENDINGTYPE;
+typedef enum tagPENDINGMSG {
+    PENDINGMSG_CANCELCALL = 0,
+    PENDINGMSG_WAITNOPROCESS = 1,
+    PENDINGMSG_WAITDEFPROCESS = 2
+} PENDINGMSG;
+typedef struct tagINTERFACEINFO {
+    IUnknown *pUnk;
+    IID iid;
+    WORD wMethod;
+} INTERFACEINFO;
+typedef struct tagINTERFACEINFO *LPINTERFACEINFO;
+/*****************************************************************************
+ * IMessageFilter interface
+ */
+#ifndef __IMessageFilter_INTERFACE_DEFINED__
+#define __IMessageFilter_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMessageFilter, 0x00000016, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IMessageFilter : public IUnknown
+{
+    virtual DWORD STDMETHODCALLTYPE HandleInComingCall(
+        DWORD dwCallType,
+        HTASK htaskCaller,
+        DWORD dwTickCount,
+        LPINTERFACEINFO lpInterfaceInfo) = 0;
+
+    virtual DWORD STDMETHODCALLTYPE RetryRejectedCall(
+        HTASK htaskCallee,
+        DWORD dwTickCount,
+        DWORD dwRejectType) = 0;
+
+    virtual DWORD STDMETHODCALLTYPE MessagePending(
+        HTASK htaskCallee,
+        DWORD dwTickCount,
+        DWORD dwPendingType) = 0;
+
+};
+#else
+typedef struct IMessageFilterVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IMessageFilter* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IMessageFilter* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IMessageFilter* This);
+
+    /*** IMessageFilter methods ***/
+    DWORD (STDMETHODCALLTYPE *HandleInComingCall)(
+        IMessageFilter* This,
+        DWORD dwCallType,
+        HTASK htaskCaller,
+        DWORD dwTickCount,
+        LPINTERFACEINFO lpInterfaceInfo);
+
+    DWORD (STDMETHODCALLTYPE *RetryRejectedCall)(
+        IMessageFilter* This,
+        HTASK htaskCallee,
+        DWORD dwTickCount,
+        DWORD dwRejectType);
+
+    DWORD (STDMETHODCALLTYPE *MessagePending)(
+        IMessageFilter* This,
+        HTASK htaskCallee,
+        DWORD dwTickCount,
+        DWORD dwPendingType);
+
+    END_INTERFACE
+} IMessageFilterVtbl;
+interface IMessageFilter {
+    CONST_VTBL IMessageFilterVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IMessageFilter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMessageFilter_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMessageFilter_Release(This) (This)->lpVtbl->Release(This)
+/*** IMessageFilter methods ***/
+#define IMessageFilter_HandleInComingCall(This,dwCallType,htaskCaller,dwTickCount,lpInterfaceInfo) (This)->lpVtbl->HandleInComingCall(This,dwCallType,htaskCaller,dwTickCount,lpInterfaceInfo)
+#define IMessageFilter_RetryRejectedCall(This,htaskCallee,dwTickCount,dwRejectType) (This)->lpVtbl->RetryRejectedCall(This,htaskCallee,dwTickCount,dwRejectType)
+#define IMessageFilter_MessagePending(This,htaskCallee,dwTickCount,dwPendingType) (This)->lpVtbl->MessagePending(This,htaskCallee,dwTickCount,dwPendingType)
+#endif
+
+#endif
+
+DWORD STDMETHODCALLTYPE IMessageFilter_HandleInComingCall_Proxy(
+    IMessageFilter* This,
+    DWORD dwCallType,
+    HTASK htaskCaller,
+    DWORD dwTickCount,
+    LPINTERFACEINFO lpInterfaceInfo);
+void __RPC_STUB IMessageFilter_HandleInComingCall_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+DWORD STDMETHODCALLTYPE IMessageFilter_RetryRejectedCall_Proxy(
+    IMessageFilter* This,
+    HTASK htaskCallee,
+    DWORD dwTickCount,
+    DWORD dwRejectType);
+void __RPC_STUB IMessageFilter_RetryRejectedCall_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+DWORD STDMETHODCALLTYPE IMessageFilter_MessagePending_Proxy(
+    IMessageFilter* This,
+    HTASK htaskCallee,
+    DWORD dwTickCount,
+    DWORD dwPendingType);
+void __RPC_STUB IMessageFilter_MessagePending_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IMessageFilter_INTERFACE_DEFINED__ */
+
+#ifndef __IRpcChannelBuffer_FWD_DEFINED__
+#define __IRpcChannelBuffer_FWD_DEFINED__
+typedef interface IRpcChannelBuffer IRpcChannelBuffer;
+#endif
+
+typedef IRpcChannelBuffer *LPRPCCHANNELBUFFER;
+typedef unsigned long RPCOLEDATAREP;
+typedef struct tagRPCOLEMESSAGE {
+    void *reserved1;
+    RPCOLEDATAREP dataRepresentation;
+    void *Buffer;
+    ULONG cbBuffer;
+    ULONG iMethod;
+    void * reserved2[5];
+    ULONG rpcFlags;
+} RPCOLEMESSAGE;
+typedef RPCOLEMESSAGE *PRPCOLEMESSAGE;
+/*****************************************************************************
+ * IRpcChannelBuffer interface
+ */
+#ifndef __IRpcChannelBuffer_INTERFACE_DEFINED__
+#define __IRpcChannelBuffer_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IRpcChannelBuffer, 0xd5f56b60, 0x593b, 0x101a, 0xb5,0x69, 0x08,0x00,0x2b,0x2d,0xbf,0x7a);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IRpcChannelBuffer : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetBuffer(
+        RPCOLEMESSAGE *pMessage,
+        REFIID riid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SendReceive(
+        RPCOLEMESSAGE *pMessage,
+        ULONG *pStatus) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE FreeBuffer(
+        RPCOLEMESSAGE *pMessage) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDestCtx(
+        DWORD *pdwDestContext,
+        void **ppvDestContext) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsConnected(
+        ) = 0;
+
+};
+#else
+typedef struct IRpcChannelBufferVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IRpcChannelBuffer* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IRpcChannelBuffer* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IRpcChannelBuffer* This);
+
+    /*** IRpcChannelBuffer methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetBuffer)(
+        IRpcChannelBuffer* This,
+        RPCOLEMESSAGE *pMessage,
+        REFIID riid);
+
+    HRESULT (STDMETHODCALLTYPE *SendReceive)(
+        IRpcChannelBuffer* This,
+        RPCOLEMESSAGE *pMessage,
+        ULONG *pStatus);
+
+    HRESULT (STDMETHODCALLTYPE *FreeBuffer)(
+        IRpcChannelBuffer* This,
+        RPCOLEMESSAGE *pMessage);
+
+    HRESULT (STDMETHODCALLTYPE *GetDestCtx)(
+        IRpcChannelBuffer* This,
+        DWORD *pdwDestContext,
+        void **ppvDestContext);
+
+    HRESULT (STDMETHODCALLTYPE *IsConnected)(
+        IRpcChannelBuffer* This);
+
+    END_INTERFACE
+} IRpcChannelBufferVtbl;
+interface IRpcChannelBuffer {
+    CONST_VTBL IRpcChannelBufferVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IRpcChannelBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IRpcChannelBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRpcChannelBuffer_Release(This) (This)->lpVtbl->Release(This)
+/*** IRpcChannelBuffer methods ***/
+#define IRpcChannelBuffer_GetBuffer(This,pMessage,riid) (This)->lpVtbl->GetBuffer(This,pMessage,riid)
+#define IRpcChannelBuffer_SendReceive(This,pMessage,pStatus) (This)->lpVtbl->SendReceive(This,pMessage,pStatus)
+#define IRpcChannelBuffer_FreeBuffer(This,pMessage) (This)->lpVtbl->FreeBuffer(This,pMessage)
+#define IRpcChannelBuffer_GetDestCtx(This,pdwDestContext,ppvDestContext) (This)->lpVtbl->GetDestCtx(This,pdwDestContext,ppvDestContext)
+#define IRpcChannelBuffer_IsConnected(This) (This)->lpVtbl->IsConnected(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_GetBuffer_Proxy(
+    IRpcChannelBuffer* This,
+    RPCOLEMESSAGE *pMessage,
+    REFIID riid);
+void __RPC_STUB IRpcChannelBuffer_GetBuffer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_SendReceive_Proxy(
+    IRpcChannelBuffer* This,
+    RPCOLEMESSAGE *pMessage,
+    ULONG *pStatus);
+void __RPC_STUB IRpcChannelBuffer_SendReceive_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_FreeBuffer_Proxy(
+    IRpcChannelBuffer* This,
+    RPCOLEMESSAGE *pMessage);
+void __RPC_STUB IRpcChannelBuffer_FreeBuffer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_GetDestCtx_Proxy(
+    IRpcChannelBuffer* This,
+    DWORD *pdwDestContext,
+    void **ppvDestContext);
+void __RPC_STUB IRpcChannelBuffer_GetDestCtx_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_IsConnected_Proxy(
+    IRpcChannelBuffer* This);
+void __RPC_STUB IRpcChannelBuffer_IsConnected_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IRpcChannelBuffer_INTERFACE_DEFINED__ */
+
+#ifndef __IRpcChannelBuffer2_FWD_DEFINED__
+#define __IRpcChannelBuffer2_FWD_DEFINED__
+typedef interface IRpcChannelBuffer2 IRpcChannelBuffer2;
+#endif
+
+typedef IRpcChannelBuffer2 *LPRPCCHANNELBUFFER2;
+/*****************************************************************************
+ * IRpcChannelBuffer2 interface
+ */
+#ifndef __IRpcChannelBuffer2_INTERFACE_DEFINED__
+#define __IRpcChannelBuffer2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IRpcChannelBuffer2, 0x594f31d0, 0x7f19, 0x11d0, 0xb1,0x94, 0x00,0xa0,0xc9,0x0d,0xc8,0xbf);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IRpcChannelBuffer2 : public IRpcChannelBuffer
+{
+    virtual HRESULT STDMETHODCALLTYPE GetProtocolVersion(
+        DWORD *pdwVersion) = 0;
+
+};
+#else
+typedef struct IRpcChannelBuffer2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IRpcChannelBuffer2* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IRpcChannelBuffer2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IRpcChannelBuffer2* This);
+
+    /*** IRpcChannelBuffer methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetBuffer)(
+        IRpcChannelBuffer2* This,
+        RPCOLEMESSAGE *pMessage,
+        REFIID riid);
+
+    HRESULT (STDMETHODCALLTYPE *SendReceive)(
+        IRpcChannelBuffer2* This,
+        RPCOLEMESSAGE *pMessage,
+        ULONG *pStatus);
+
+    HRESULT (STDMETHODCALLTYPE *FreeBuffer)(
+        IRpcChannelBuffer2* This,
+        RPCOLEMESSAGE *pMessage);
+
+    HRESULT (STDMETHODCALLTYPE *GetDestCtx)(
+        IRpcChannelBuffer2* This,
+        DWORD *pdwDestContext,
+        void **ppvDestContext);
+
+    HRESULT (STDMETHODCALLTYPE *IsConnected)(
+        IRpcChannelBuffer2* This);
+
+    /*** IRpcChannelBuffer2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetProtocolVersion)(
+        IRpcChannelBuffer2* This,
+        DWORD *pdwVersion);
+
+    END_INTERFACE
+} IRpcChannelBuffer2Vtbl;
+interface IRpcChannelBuffer2 {
+    CONST_VTBL IRpcChannelBuffer2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IRpcChannelBuffer2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IRpcChannelBuffer2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRpcChannelBuffer2_Release(This) (This)->lpVtbl->Release(This)
+/*** IRpcChannelBuffer methods ***/
+#define IRpcChannelBuffer2_GetBuffer(This,pMessage,riid) (This)->lpVtbl->GetBuffer(This,pMessage,riid)
+#define IRpcChannelBuffer2_SendReceive(This,pMessage,pStatus) (This)->lpVtbl->SendReceive(This,pMessage,pStatus)
+#define IRpcChannelBuffer2_FreeBuffer(This,pMessage) (This)->lpVtbl->FreeBuffer(This,pMessage)
+#define IRpcChannelBuffer2_GetDestCtx(This,pdwDestContext,ppvDestContext) (This)->lpVtbl->GetDestCtx(This,pdwDestContext,ppvDestContext)
+#define IRpcChannelBuffer2_IsConnected(This) (This)->lpVtbl->IsConnected(This)
+/*** IRpcChannelBuffer2 methods ***/
+#define IRpcChannelBuffer2_GetProtocolVersion(This,pdwVersion) (This)->lpVtbl->GetProtocolVersion(This,pdwVersion)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer2_GetProtocolVersion_Proxy(
+    IRpcChannelBuffer2* This,
+    DWORD *pdwVersion);
+void __RPC_STUB IRpcChannelBuffer2_GetProtocolVersion_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IRpcChannelBuffer2_INTERFACE_DEFINED__ */
+
+#ifndef __IRpcChannelBuffer3_FWD_DEFINED__
+#define __IRpcChannelBuffer3_FWD_DEFINED__
+typedef interface IRpcChannelBuffer3 IRpcChannelBuffer3;
+#endif
+
+typedef IRpcChannelBuffer3 *LPRPCCHANNELBUFFER3;
+/*****************************************************************************
+ * IRpcChannelBuffer3 interface
+ */
+#ifndef __IRpcChannelBuffer3_INTERFACE_DEFINED__
+#define __IRpcChannelBuffer3_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IRpcChannelBuffer3, 0x25b15600, 0x0115, 0x11d0, 0xbf,0x0d, 0x00,0xaa,0x00,0xb8,0xdf,0xd2);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IRpcChannelBuffer3 : public IRpcChannelBuffer2
+{
+    virtual HRESULT STDMETHODCALLTYPE Send(
+        RPCOLEMESSAGE *pMsg,
+        ULONG *pulStatus) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Receive(
+        RPCOLEMESSAGE *pMsg,
+        ULONG ulSize,
+        ULONG *pulStatus) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Cancel(
+        RPCOLEMESSAGE *pMsg) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCallContext(
+        RPCOLEMESSAGE *pMsg,
+        REFIID riid,
+        void **pInterface) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDestCtxEx(
+        RPCOLEMESSAGE *pMsg,
+        DWORD *pdwDestContext,
+        void **ppvDestContext) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetState(
+        RPCOLEMESSAGE *pMsg,
+        DWORD *pState) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RegisterAsync(
+        RPCOLEMESSAGE *pMsg,
+        IAsyncManager *pAsyncMgr) = 0;
+
+};
+#else
+typedef struct IRpcChannelBuffer3Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IRpcChannelBuffer3* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IRpcChannelBuffer3* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IRpcChannelBuffer3* This);
+
+    /*** IRpcChannelBuffer methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetBuffer)(
+        IRpcChannelBuffer3* This,
+        RPCOLEMESSAGE *pMessage,
+        REFIID riid);
+
+    HRESULT (STDMETHODCALLTYPE *SendReceive)(
+        IRpcChannelBuffer3* This,
+        RPCOLEMESSAGE *pMessage,
+        ULONG *pStatus);
+
+    HRESULT (STDMETHODCALLTYPE *FreeBuffer)(
+        IRpcChannelBuffer3* This,
+        RPCOLEMESSAGE *pMessage);
+
+    HRESULT (STDMETHODCALLTYPE *GetDestCtx)(
+        IRpcChannelBuffer3* This,
+        DWORD *pdwDestContext,
+        void **ppvDestContext);
+
+    HRESULT (STDMETHODCALLTYPE *IsConnected)(
+        IRpcChannelBuffer3* This);
+
+    /*** IRpcChannelBuffer2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetProtocolVersion)(
+        IRpcChannelBuffer3* This,
+        DWORD *pdwVersion);
+
+    /*** IRpcChannelBuffer3 methods ***/
+    HRESULT (STDMETHODCALLTYPE *Send)(
+        IRpcChannelBuffer3* This,
+        RPCOLEMESSAGE *pMsg,
+        ULONG *pulStatus);
+
+    HRESULT (STDMETHODCALLTYPE *Receive)(
+        IRpcChannelBuffer3* This,
+        RPCOLEMESSAGE *pMsg,
+        ULONG ulSize,
+        ULONG *pulStatus);
+
+    HRESULT (STDMETHODCALLTYPE *Cancel)(
+        IRpcChannelBuffer3* This,
+        RPCOLEMESSAGE *pMsg);
+
+    HRESULT (STDMETHODCALLTYPE *GetCallContext)(
+        IRpcChannelBuffer3* This,
+        RPCOLEMESSAGE *pMsg,
+        REFIID riid,
+        void **pInterface);
+
+    HRESULT (STDMETHODCALLTYPE *GetDestCtxEx)(
+        IRpcChannelBuffer3* This,
+        RPCOLEMESSAGE *pMsg,
+        DWORD *pdwDestContext,
+        void **ppvDestContext);
+
+    HRESULT (STDMETHODCALLTYPE *GetState)(
+        IRpcChannelBuffer3* This,
+        RPCOLEMESSAGE *pMsg,
+        DWORD *pState);
+
+    HRESULT (STDMETHODCALLTYPE *RegisterAsync)(
+        IRpcChannelBuffer3* This,
+        RPCOLEMESSAGE *pMsg,
+        IAsyncManager *pAsyncMgr);
+
+    END_INTERFACE
+} IRpcChannelBuffer3Vtbl;
+interface IRpcChannelBuffer3 {
+    CONST_VTBL IRpcChannelBuffer3Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IRpcChannelBuffer3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IRpcChannelBuffer3_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRpcChannelBuffer3_Release(This) (This)->lpVtbl->Release(This)
+/*** IRpcChannelBuffer methods ***/
+#define IRpcChannelBuffer3_GetBuffer(This,pMessage,riid) (This)->lpVtbl->GetBuffer(This,pMessage,riid)
+#define IRpcChannelBuffer3_SendReceive(This,pMessage,pStatus) (This)->lpVtbl->SendReceive(This,pMessage,pStatus)
+#define IRpcChannelBuffer3_FreeBuffer(This,pMessage) (This)->lpVtbl->FreeBuffer(This,pMessage)
+#define IRpcChannelBuffer3_GetDestCtx(This,pdwDestContext,ppvDestContext) (This)->lpVtbl->GetDestCtx(This,pdwDestContext,ppvDestContext)
+#define IRpcChannelBuffer3_IsConnected(This) (This)->lpVtbl->IsConnected(This)
+/*** IRpcChannelBuffer2 methods ***/
+#define IRpcChannelBuffer3_GetProtocolVersion(This,pdwVersion) (This)->lpVtbl->GetProtocolVersion(This,pdwVersion)
+/*** IRpcChannelBuffer3 methods ***/
+#define IRpcChannelBuffer3_Send(This,pMsg,pulStatus) (This)->lpVtbl->Send(This,pMsg,pulStatus)
+#define IRpcChannelBuffer3_Receive(This,pMsg,ulSize,pulStatus) (This)->lpVtbl->Receive(This,pMsg,ulSize,pulStatus)
+#define IRpcChannelBuffer3_Cancel(This,pMsg) (This)->lpVtbl->Cancel(This,pMsg)
+#define IRpcChannelBuffer3_GetCallContext(This,pMsg,riid,pInterface) (This)->lpVtbl->GetCallContext(This,pMsg,riid,pInterface)
+#define IRpcChannelBuffer3_GetDestCtxEx(This,pMsg,pdwDestContext,ppvDestContext) (This)->lpVtbl->GetDestCtxEx(This,pMsg,pdwDestContext,ppvDestContext)
+#define IRpcChannelBuffer3_GetState(This,pMsg,pState) (This)->lpVtbl->GetState(This,pMsg,pState)
+#define IRpcChannelBuffer3_RegisterAsync(This,pMsg,pAsyncMgr) (This)->lpVtbl->RegisterAsync(This,pMsg,pAsyncMgr)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer3_Send_Proxy(
+    IRpcChannelBuffer3* This,
+    RPCOLEMESSAGE *pMsg,
+    ULONG *pulStatus);
+void __RPC_STUB IRpcChannelBuffer3_Send_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer3_Receive_Proxy(
+    IRpcChannelBuffer3* This,
+    RPCOLEMESSAGE *pMsg,
+    ULONG ulSize,
+    ULONG *pulStatus);
+void __RPC_STUB IRpcChannelBuffer3_Receive_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer3_Cancel_Proxy(
+    IRpcChannelBuffer3* This,
+    RPCOLEMESSAGE *pMsg);
+void __RPC_STUB IRpcChannelBuffer3_Cancel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer3_GetCallContext_Proxy(
+    IRpcChannelBuffer3* This,
+    RPCOLEMESSAGE *pMsg,
+    REFIID riid,
+    void **pInterface);
+void __RPC_STUB IRpcChannelBuffer3_GetCallContext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer3_GetDestCtxEx_Proxy(
+    IRpcChannelBuffer3* This,
+    RPCOLEMESSAGE *pMsg,
+    DWORD *pdwDestContext,
+    void **ppvDestContext);
+void __RPC_STUB IRpcChannelBuffer3_GetDestCtxEx_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer3_GetState_Proxy(
+    IRpcChannelBuffer3* This,
+    RPCOLEMESSAGE *pMsg,
+    DWORD *pState);
+void __RPC_STUB IRpcChannelBuffer3_GetState_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer3_RegisterAsync_Proxy(
+    IRpcChannelBuffer3* This,
+    RPCOLEMESSAGE *pMsg,
+    IAsyncManager *pAsyncMgr);
+void __RPC_STUB IRpcChannelBuffer3_RegisterAsync_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IRpcChannelBuffer3_INTERFACE_DEFINED__ */
+
+#ifndef __IAsyncRpcChannelBuffer_FWD_DEFINED__
+#define __IAsyncRpcChannelBuffer_FWD_DEFINED__
+typedef interface IAsyncRpcChannelBuffer IAsyncRpcChannelBuffer;
+#endif
+
+/*****************************************************************************
+ * IAsyncRpcChannelBuffer interface
+ */
+#ifndef __IAsyncRpcChannelBuffer_INTERFACE_DEFINED__
+#define __IAsyncRpcChannelBuffer_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IAsyncRpcChannelBuffer, 0xa5029fb6, 0x3c34, 0x11d1, 0x9c,0x99, 0x00,0xc0,0x4f,0xb9,0x98,0xaa);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IAsyncRpcChannelBuffer : public IRpcChannelBuffer2
+{
+    virtual HRESULT STDMETHODCALLTYPE Send(
+        RPCOLEMESSAGE *pMsg,
+        ISynchronize *pSync,
+        ULONG *pulStatus) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Receive(
+        RPCOLEMESSAGE *pMsg,
+        ULONG *pulStatus) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDestCtxEx(
+        RPCOLEMESSAGE *pMsg,
+        DWORD *pdwDestContext,
+        void **ppvDestContext) = 0;
+
+};
+#else
+typedef struct IAsyncRpcChannelBufferVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IAsyncRpcChannelBuffer* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IAsyncRpcChannelBuffer* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IAsyncRpcChannelBuffer* This);
+
+    /*** IRpcChannelBuffer methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetBuffer)(
+        IAsyncRpcChannelBuffer* This,
+        RPCOLEMESSAGE *pMessage,
+        REFIID riid);
+
+    HRESULT (STDMETHODCALLTYPE *SendReceive)(
+        IAsyncRpcChannelBuffer* This,
+        RPCOLEMESSAGE *pMessage,
+        ULONG *pStatus);
+
+    HRESULT (STDMETHODCALLTYPE *FreeBuffer)(
+        IAsyncRpcChannelBuffer* This,
+        RPCOLEMESSAGE *pMessage);
+
+    HRESULT (STDMETHODCALLTYPE *GetDestCtx)(
+        IAsyncRpcChannelBuffer* This,
+        DWORD *pdwDestContext,
+        void **ppvDestContext);
+
+    HRESULT (STDMETHODCALLTYPE *IsConnected)(
+        IAsyncRpcChannelBuffer* This);
+
+    /*** IRpcChannelBuffer2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetProtocolVersion)(
+        IAsyncRpcChannelBuffer* This,
+        DWORD *pdwVersion);
+
+    /*** IAsyncRpcChannelBuffer methods ***/
+    HRESULT (STDMETHODCALLTYPE *Send)(
+        IAsyncRpcChannelBuffer* This,
+        RPCOLEMESSAGE *pMsg,
+        ISynchronize *pSync,
+        ULONG *pulStatus);
+
+    HRESULT (STDMETHODCALLTYPE *Receive)(
+        IAsyncRpcChannelBuffer* This,
+        RPCOLEMESSAGE *pMsg,
+        ULONG *pulStatus);
+
+    HRESULT (STDMETHODCALLTYPE *GetDestCtxEx)(
+        IAsyncRpcChannelBuffer* This,
+        RPCOLEMESSAGE *pMsg,
+        DWORD *pdwDestContext,
+        void **ppvDestContext);
+
+    END_INTERFACE
+} IAsyncRpcChannelBufferVtbl;
+interface IAsyncRpcChannelBuffer {
+    CONST_VTBL IAsyncRpcChannelBufferVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IAsyncRpcChannelBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAsyncRpcChannelBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAsyncRpcChannelBuffer_Release(This) (This)->lpVtbl->Release(This)
+/*** IRpcChannelBuffer methods ***/
+#define IAsyncRpcChannelBuffer_GetBuffer(This,pMessage,riid) (This)->lpVtbl->GetBuffer(This,pMessage,riid)
+#define IAsyncRpcChannelBuffer_SendReceive(This,pMessage,pStatus) (This)->lpVtbl->SendReceive(This,pMessage,pStatus)
+#define IAsyncRpcChannelBuffer_FreeBuffer(This,pMessage) (This)->lpVtbl->FreeBuffer(This,pMessage)
+#define IAsyncRpcChannelBuffer_GetDestCtx(This,pdwDestContext,ppvDestContext) (This)->lpVtbl->GetDestCtx(This,pdwDestContext,ppvDestContext)
+#define IAsyncRpcChannelBuffer_IsConnected(This) (This)->lpVtbl->IsConnected(This)
+/*** IRpcChannelBuffer2 methods ***/
+#define IAsyncRpcChannelBuffer_GetProtocolVersion(This,pdwVersion) (This)->lpVtbl->GetProtocolVersion(This,pdwVersion)
+/*** IAsyncRpcChannelBuffer methods ***/
+#define IAsyncRpcChannelBuffer_Send(This,pMsg,pSync,pulStatus) (This)->lpVtbl->Send(This,pMsg,pSync,pulStatus)
+#define IAsyncRpcChannelBuffer_Receive(This,pMsg,pulStatus) (This)->lpVtbl->Receive(This,pMsg,pulStatus)
+#define IAsyncRpcChannelBuffer_GetDestCtxEx(This,pMsg,pdwDestContext,ppvDestContext) (This)->lpVtbl->GetDestCtxEx(This,pMsg,pdwDestContext,ppvDestContext)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IAsyncRpcChannelBuffer_Send_Proxy(
+    IAsyncRpcChannelBuffer* This,
+    RPCOLEMESSAGE *pMsg,
+    ISynchronize *pSync,
+    ULONG *pulStatus);
+void __RPC_STUB IAsyncRpcChannelBuffer_Send_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAsyncRpcChannelBuffer_Receive_Proxy(
+    IAsyncRpcChannelBuffer* This,
+    RPCOLEMESSAGE *pMsg,
+    ULONG *pulStatus);
+void __RPC_STUB IAsyncRpcChannelBuffer_Receive_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAsyncRpcChannelBuffer_GetDestCtxEx_Proxy(
+    IAsyncRpcChannelBuffer* This,
+    RPCOLEMESSAGE *pMsg,
+    DWORD *pdwDestContext,
+    void **ppvDestContext);
+void __RPC_STUB IAsyncRpcChannelBuffer_GetDestCtxEx_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IAsyncRpcChannelBuffer_INTERFACE_DEFINED__ */
+
+#ifndef __IRpcSyntaxNegotiate_FWD_DEFINED__
+#define __IRpcSyntaxNegotiate_FWD_DEFINED__
+typedef interface IRpcSyntaxNegotiate IRpcSyntaxNegotiate;
+#endif
+
+/*****************************************************************************
+ * IRpcSyntaxNegotiate interface
+ */
+#ifndef __IRpcSyntaxNegotiate_INTERFACE_DEFINED__
+#define __IRpcSyntaxNegotiate_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IRpcSyntaxNegotiate, 0x58a08519, 0x24c8, 0x4935, 0xb4,0x82, 0x3f,0xd8,0x23,0x33,0x3a,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IRpcSyntaxNegotiate : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE NegotiateSyntax(
+        RPCOLEMESSAGE *pMsg) = 0;
+
+};
+#else
+typedef struct IRpcSyntaxNegotiateVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IRpcSyntaxNegotiate* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IRpcSyntaxNegotiate* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IRpcSyntaxNegotiate* This);
+
+    /*** IRpcSyntaxNegotiate methods ***/
+    HRESULT (STDMETHODCALLTYPE *NegotiateSyntax)(
+        IRpcSyntaxNegotiate* This,
+        RPCOLEMESSAGE *pMsg);
+
+    END_INTERFACE
+} IRpcSyntaxNegotiateVtbl;
+interface IRpcSyntaxNegotiate {
+    CONST_VTBL IRpcSyntaxNegotiateVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IRpcSyntaxNegotiate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IRpcSyntaxNegotiate_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRpcSyntaxNegotiate_Release(This) (This)->lpVtbl->Release(This)
+/*** IRpcSyntaxNegotiate methods ***/
+#define IRpcSyntaxNegotiate_NegotiateSyntax(This,pMsg) (This)->lpVtbl->NegotiateSyntax(This,pMsg)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IRpcSyntaxNegotiate_NegotiateSyntax_Proxy(
+    IRpcSyntaxNegotiate* This,
+    RPCOLEMESSAGE *pMsg);
+void __RPC_STUB IRpcSyntaxNegotiate_NegotiateSyntax_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IRpcSyntaxNegotiate_INTERFACE_DEFINED__ */
+
+#ifndef __IRpcProxyBuffer_FWD_DEFINED__
+#define __IRpcProxyBuffer_FWD_DEFINED__
+typedef interface IRpcProxyBuffer IRpcProxyBuffer;
+#endif
+
+typedef IRpcProxyBuffer *LPRPCPROXYBUFFER;
+/*****************************************************************************
+ * IRpcProxyBuffer interface
+ */
+#ifndef __IRpcProxyBuffer_INTERFACE_DEFINED__
+#define __IRpcProxyBuffer_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IRpcProxyBuffer, 0xd5f56a34, 0x593b, 0x101a, 0xb5,0x69, 0x08,0x00,0x2b,0x2d,0xbf,0x7a);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IRpcProxyBuffer : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Connect(
+        IRpcChannelBuffer *pRpcChannelBuffer) = 0;
+
+    virtual void STDMETHODCALLTYPE Disconnect(
+        ) = 0;
+
+};
+#else
+typedef struct IRpcProxyBufferVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IRpcProxyBuffer* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IRpcProxyBuffer* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IRpcProxyBuffer* This);
+
+    /*** IRpcProxyBuffer methods ***/
+    HRESULT (STDMETHODCALLTYPE *Connect)(
+        IRpcProxyBuffer* This,
+        IRpcChannelBuffer *pRpcChannelBuffer);
+
+    void (STDMETHODCALLTYPE *Disconnect)(
+        IRpcProxyBuffer* This);
+
+    END_INTERFACE
+} IRpcProxyBufferVtbl;
+interface IRpcProxyBuffer {
+    CONST_VTBL IRpcProxyBufferVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IRpcProxyBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IRpcProxyBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRpcProxyBuffer_Release(This) (This)->lpVtbl->Release(This)
+/*** IRpcProxyBuffer methods ***/
+#define IRpcProxyBuffer_Connect(This,pRpcChannelBuffer) (This)->lpVtbl->Connect(This,pRpcChannelBuffer)
+#define IRpcProxyBuffer_Disconnect(This) (This)->lpVtbl->Disconnect(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IRpcProxyBuffer_Connect_Proxy(
+    IRpcProxyBuffer* This,
+    IRpcChannelBuffer *pRpcChannelBuffer);
+void __RPC_STUB IRpcProxyBuffer_Connect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IRpcProxyBuffer_Disconnect_Proxy(
+    IRpcProxyBuffer* This);
+void __RPC_STUB IRpcProxyBuffer_Disconnect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IRpcProxyBuffer_INTERFACE_DEFINED__ */
+
+#ifndef __IRpcStubBuffer_FWD_DEFINED__
+#define __IRpcStubBuffer_FWD_DEFINED__
+typedef interface IRpcStubBuffer IRpcStubBuffer;
+#endif
+
+typedef IRpcStubBuffer *LPRPCSTUBBUFFER;
+/*****************************************************************************
+ * IRpcStubBuffer interface
+ */
+#ifndef __IRpcStubBuffer_INTERFACE_DEFINED__
+#define __IRpcStubBuffer_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IRpcStubBuffer, 0xd5f56afc, 0x593b, 0x101a, 0xb5,0x69, 0x08,0x00,0x2b,0x2d,0xbf,0x7a);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IRpcStubBuffer : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Connect(
+        IUnknown *pUnkServer) = 0;
+
+    virtual void STDMETHODCALLTYPE Disconnect(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Invoke(
+        RPCOLEMESSAGE *_prpcmsg,
+        IRpcChannelBuffer *_pRpcChannelBuffer) = 0;
+
+    virtual IRpcStubBuffer * STDMETHODCALLTYPE IsIIDSupported(
+        REFIID riid) = 0;
+
+    virtual ULONG STDMETHODCALLTYPE CountRefs(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DebugServerQueryInterface(
+        void **ppv) = 0;
+
+    virtual void STDMETHODCALLTYPE DebugServerRelease(
+        void *pv) = 0;
+
+};
+#else
+typedef struct IRpcStubBufferVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IRpcStubBuffer* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IRpcStubBuffer* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IRpcStubBuffer* This);
+
+    /*** IRpcStubBuffer methods ***/
+    HRESULT (STDMETHODCALLTYPE *Connect)(
+        IRpcStubBuffer* This,
+        IUnknown *pUnkServer);
+
+    void (STDMETHODCALLTYPE *Disconnect)(
+        IRpcStubBuffer* This);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IRpcStubBuffer* This,
+        RPCOLEMESSAGE *_prpcmsg,
+        IRpcChannelBuffer *_pRpcChannelBuffer);
+
+    IRpcStubBuffer * (STDMETHODCALLTYPE *IsIIDSupported)(
+        IRpcStubBuffer* This,
+        REFIID riid);
+
+    ULONG (STDMETHODCALLTYPE *CountRefs)(
+        IRpcStubBuffer* This);
+
+    HRESULT (STDMETHODCALLTYPE *DebugServerQueryInterface)(
+        IRpcStubBuffer* This,
+        void **ppv);
+
+    void (STDMETHODCALLTYPE *DebugServerRelease)(
+        IRpcStubBuffer* This,
+        void *pv);
+
+    END_INTERFACE
+} IRpcStubBufferVtbl;
+interface IRpcStubBuffer {
+    CONST_VTBL IRpcStubBufferVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IRpcStubBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IRpcStubBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRpcStubBuffer_Release(This) (This)->lpVtbl->Release(This)
+/*** IRpcStubBuffer methods ***/
+#define IRpcStubBuffer_Connect(This,pUnkServer) (This)->lpVtbl->Connect(This,pUnkServer)
+#define IRpcStubBuffer_Disconnect(This) (This)->lpVtbl->Disconnect(This)
+#define IRpcStubBuffer_Invoke(This,_prpcmsg,_pRpcChannelBuffer) (This)->lpVtbl->Invoke(This,_prpcmsg,_pRpcChannelBuffer)
+#define IRpcStubBuffer_IsIIDSupported(This,riid) (This)->lpVtbl->IsIIDSupported(This,riid)
+#define IRpcStubBuffer_CountRefs(This) (This)->lpVtbl->CountRefs(This)
+#define IRpcStubBuffer_DebugServerQueryInterface(This,ppv) (This)->lpVtbl->DebugServerQueryInterface(This,ppv)
+#define IRpcStubBuffer_DebugServerRelease(This,pv) (This)->lpVtbl->DebugServerRelease(This,pv)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IRpcStubBuffer_Connect_Proxy(
+    IRpcStubBuffer* This,
+    IUnknown *pUnkServer);
+void __RPC_STUB IRpcStubBuffer_Connect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IRpcStubBuffer_Disconnect_Proxy(
+    IRpcStubBuffer* This);
+void __RPC_STUB IRpcStubBuffer_Disconnect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRpcStubBuffer_Invoke_Proxy(
+    IRpcStubBuffer* This,
+    RPCOLEMESSAGE *_prpcmsg,
+    IRpcChannelBuffer *_pRpcChannelBuffer);
+void __RPC_STUB IRpcStubBuffer_Invoke_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+IRpcStubBuffer * STDMETHODCALLTYPE IRpcStubBuffer_IsIIDSupported_Proxy(
+    IRpcStubBuffer* This,
+    REFIID riid);
+void __RPC_STUB IRpcStubBuffer_IsIIDSupported_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+ULONG STDMETHODCALLTYPE IRpcStubBuffer_CountRefs_Proxy(
+    IRpcStubBuffer* This);
+void __RPC_STUB IRpcStubBuffer_CountRefs_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRpcStubBuffer_DebugServerQueryInterface_Proxy(
+    IRpcStubBuffer* This,
+    void **ppv);
+void __RPC_STUB IRpcStubBuffer_DebugServerQueryInterface_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IRpcStubBuffer_DebugServerRelease_Proxy(
+    IRpcStubBuffer* This,
+    void *pv);
+void __RPC_STUB IRpcStubBuffer_DebugServerRelease_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IRpcStubBuffer_INTERFACE_DEFINED__ */
+
+#ifndef __IPSFactoryBuffer_FWD_DEFINED__
+#define __IPSFactoryBuffer_FWD_DEFINED__
+typedef interface IPSFactoryBuffer IPSFactoryBuffer;
+#endif
+
+typedef IPSFactoryBuffer *LPPSFACTORYBUFFER;
+/*****************************************************************************
+ * IPSFactoryBuffer interface
+ */
+#ifndef __IPSFactoryBuffer_INTERFACE_DEFINED__
+#define __IPSFactoryBuffer_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IPSFactoryBuffer, 0xd5f569d0, 0x593b, 0x101a, 0xb5,0x69, 0x08,0x00,0x2b,0x2d,0xbf,0x7a);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IPSFactoryBuffer : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE CreateProxy(
+        IUnknown *pUnkOuter,
+        REFIID riid,
+        IRpcProxyBuffer **ppProxy,
+        void **ppv) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateStub(
+        REFIID riid,
+        IUnknown *pUnkServer,
+        IRpcStubBuffer **ppStub) = 0;
+
+};
+#else
+typedef struct IPSFactoryBufferVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IPSFactoryBuffer* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IPSFactoryBuffer* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IPSFactoryBuffer* This);
+
+    /*** IPSFactoryBuffer methods ***/
+    HRESULT (STDMETHODCALLTYPE *CreateProxy)(
+        IPSFactoryBuffer* This,
+        IUnknown *pUnkOuter,
+        REFIID riid,
+        IRpcProxyBuffer **ppProxy,
+        void **ppv);
+
+    HRESULT (STDMETHODCALLTYPE *CreateStub)(
+        IPSFactoryBuffer* This,
+        REFIID riid,
+        IUnknown *pUnkServer,
+        IRpcStubBuffer **ppStub);
+
+    END_INTERFACE
+} IPSFactoryBufferVtbl;
+interface IPSFactoryBuffer {
+    CONST_VTBL IPSFactoryBufferVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IPSFactoryBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IPSFactoryBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IPSFactoryBuffer_Release(This) (This)->lpVtbl->Release(This)
+/*** IPSFactoryBuffer methods ***/
+#define IPSFactoryBuffer_CreateProxy(This,pUnkOuter,riid,ppProxy,ppv) (This)->lpVtbl->CreateProxy(This,pUnkOuter,riid,ppProxy,ppv)
+#define IPSFactoryBuffer_CreateStub(This,riid,pUnkServer,ppStub) (This)->lpVtbl->CreateStub(This,riid,pUnkServer,ppStub)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IPSFactoryBuffer_CreateProxy_Proxy(
+    IPSFactoryBuffer* This,
+    IUnknown *pUnkOuter,
+    REFIID riid,
+    IRpcProxyBuffer **ppProxy,
+    void **ppv);
+void __RPC_STUB IPSFactoryBuffer_CreateProxy_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPSFactoryBuffer_CreateStub_Proxy(
+    IPSFactoryBuffer* This,
+    REFIID riid,
+    IUnknown *pUnkServer,
+    IRpcStubBuffer **ppStub);
+void __RPC_STUB IPSFactoryBuffer_CreateStub_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IPSFactoryBuffer_INTERFACE_DEFINED__ */
+
+#ifndef __IChannelHook_FWD_DEFINED__
+#define __IChannelHook_FWD_DEFINED__
+typedef interface IChannelHook IChannelHook;
+#endif
+
+typedef IChannelHook *LPCHANNELHOOK;
+typedef struct SChannelHookCallInfo {
+    IID iid;
+    DWORD cbSize;
+    GUID uCausality;
+    DWORD dwServerPid;
+    DWORD iMethod;
+    void *pObject;
+} SChannelHookCallInfo;
+/*****************************************************************************
+ * IChannelHook interface
+ */
+#ifndef __IChannelHook_INTERFACE_DEFINED__
+#define __IChannelHook_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IChannelHook, 0x1008c4a0, 0x7613, 0x11cf, 0x9a,0xf1, 0x00,0x20,0xaf,0x6e,0x72,0xf4);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IChannelHook : public IUnknown
+{
+    virtual void STDMETHODCALLTYPE ClientGetSize(
+        REFGUID uExtent,
+        REFIID riid,
+        ULONG *pDataSize) = 0;
+
+    virtual void STDMETHODCALLTYPE ClientFillBuffer(
+        REFGUID uExtent,
+        REFIID riid,
+        ULONG *pDataSize,
+        void *pDataBuffer) = 0;
+
+    virtual void STDMETHODCALLTYPE ClientNotify(
+        REFGUID uExtent,
+        REFIID riid,
+        ULONG cbDataSize,
+        void *pDataBuffer,
+        DWORD lDataRep,
+        HRESULT hrFault) = 0;
+
+    virtual void STDMETHODCALLTYPE ServerNotify(
+        REFGUID uExtent,
+        REFIID riid,
+        ULONG cbDataSize,
+        void *pDataBuffer,
+        DWORD lDataRep) = 0;
+
+    virtual void STDMETHODCALLTYPE ServerGetSize(
+        REFGUID uExtent,
+        REFIID riid,
+        HRESULT hrFault,
+        ULONG *pDataSize) = 0;
+
+    virtual void STDMETHODCALLTYPE ServerFillBuffer(
+        REFGUID uExtent,
+        REFIID riid,
+        ULONG *pDataSize,
+        void *pDataBuffer,
+        HRESULT hrFault) = 0;
+
+};
+#else
+typedef struct IChannelHookVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IChannelHook* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IChannelHook* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IChannelHook* This);
+
+    /*** IChannelHook methods ***/
+    void (STDMETHODCALLTYPE *ClientGetSize)(
+        IChannelHook* This,
+        REFGUID uExtent,
+        REFIID riid,
+        ULONG *pDataSize);
+
+    void (STDMETHODCALLTYPE *ClientFillBuffer)(
+        IChannelHook* This,
+        REFGUID uExtent,
+        REFIID riid,
+        ULONG *pDataSize,
+        void *pDataBuffer);
+
+    void (STDMETHODCALLTYPE *ClientNotify)(
+        IChannelHook* This,
+        REFGUID uExtent,
+        REFIID riid,
+        ULONG cbDataSize,
+        void *pDataBuffer,
+        DWORD lDataRep,
+        HRESULT hrFault);
+
+    void (STDMETHODCALLTYPE *ServerNotify)(
+        IChannelHook* This,
+        REFGUID uExtent,
+        REFIID riid,
+        ULONG cbDataSize,
+        void *pDataBuffer,
+        DWORD lDataRep);
+
+    void (STDMETHODCALLTYPE *ServerGetSize)(
+        IChannelHook* This,
+        REFGUID uExtent,
+        REFIID riid,
+        HRESULT hrFault,
+        ULONG *pDataSize);
+
+    void (STDMETHODCALLTYPE *ServerFillBuffer)(
+        IChannelHook* This,
+        REFGUID uExtent,
+        REFIID riid,
+        ULONG *pDataSize,
+        void *pDataBuffer,
+        HRESULT hrFault);
+
+    END_INTERFACE
+} IChannelHookVtbl;
+interface IChannelHook {
+    CONST_VTBL IChannelHookVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IChannelHook_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IChannelHook_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IChannelHook_Release(This) (This)->lpVtbl->Release(This)
+/*** IChannelHook methods ***/
+#define IChannelHook_ClientGetSize(This,uExtent,riid,pDataSize) (This)->lpVtbl->ClientGetSize(This,uExtent,riid,pDataSize)
+#define IChannelHook_ClientFillBuffer(This,uExtent,riid,pDataSize,pDataBuffer) (This)->lpVtbl->ClientFillBuffer(This,uExtent,riid,pDataSize,pDataBuffer)
+#define IChannelHook_ClientNotify(This,uExtent,riid,cbDataSize,pDataBuffer,lDataRep,hrFault) (This)->lpVtbl->ClientNotify(This,uExtent,riid,cbDataSize,pDataBuffer,lDataRep,hrFault)
+#define IChannelHook_ServerNotify(This,uExtent,riid,cbDataSize,pDataBuffer,lDataRep) (This)->lpVtbl->ServerNotify(This,uExtent,riid,cbDataSize,pDataBuffer,lDataRep)
+#define IChannelHook_ServerGetSize(This,uExtent,riid,hrFault,pDataSize) (This)->lpVtbl->ServerGetSize(This,uExtent,riid,hrFault,pDataSize)
+#define IChannelHook_ServerFillBuffer(This,uExtent,riid,pDataSize,pDataBuffer,hrFault) (This)->lpVtbl->ServerFillBuffer(This,uExtent,riid,pDataSize,pDataBuffer,hrFault)
+#endif
+
+#endif
+
+void STDMETHODCALLTYPE IChannelHook_ClientGetSize_Proxy(
+    IChannelHook* This,
+    REFGUID uExtent,
+    REFIID riid,
+    ULONG *pDataSize);
+void __RPC_STUB IChannelHook_ClientGetSize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IChannelHook_ClientFillBuffer_Proxy(
+    IChannelHook* This,
+    REFGUID uExtent,
+    REFIID riid,
+    ULONG *pDataSize,
+    void *pDataBuffer);
+void __RPC_STUB IChannelHook_ClientFillBuffer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IChannelHook_ClientNotify_Proxy(
+    IChannelHook* This,
+    REFGUID uExtent,
+    REFIID riid,
+    ULONG cbDataSize,
+    void *pDataBuffer,
+    DWORD lDataRep,
+    HRESULT hrFault);
+void __RPC_STUB IChannelHook_ClientNotify_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IChannelHook_ServerNotify_Proxy(
+    IChannelHook* This,
+    REFGUID uExtent,
+    REFIID riid,
+    ULONG cbDataSize,
+    void *pDataBuffer,
+    DWORD lDataRep);
+void __RPC_STUB IChannelHook_ServerNotify_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IChannelHook_ServerGetSize_Proxy(
+    IChannelHook* This,
+    REFGUID uExtent,
+    REFIID riid,
+    HRESULT hrFault,
+    ULONG *pDataSize);
+void __RPC_STUB IChannelHook_ServerGetSize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IChannelHook_ServerFillBuffer_Proxy(
+    IChannelHook* This,
+    REFGUID uExtent,
+    REFIID riid,
+    ULONG *pDataSize,
+    void *pDataBuffer,
+    HRESULT hrFault);
+void __RPC_STUB IChannelHook_ServerFillBuffer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IChannelHook_INTERFACE_DEFINED__ */
+
+extern const FMTID FMTID_SummaryInformation;
+
+extern const FMTID FMTID_DocSummaryInformation;
+
+extern const FMTID FMTID_UserDefinedProperties;
+
+#ifndef __IClientSecurity_FWD_DEFINED__
+#define __IClientSecurity_FWD_DEFINED__
+typedef interface IClientSecurity IClientSecurity;
+#endif
+
+typedef struct tagSOLE_AUTHENTICATION_SERVICE {
+    DWORD dwAuthnSvc;
+    DWORD dwAuthzSvc;
+    OLECHAR *pPrincipalName;
+    HRESULT hr;
+} SOLE_AUTHENTICATION_SERVICE;
+typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE;
+typedef struct tagSOLE_AUTHENTICATION_INFO {
+    DWORD dwAuthnSvc;
+    DWORD dwAuthzSvc;
+    void *pAuthInfo;
+} SOLE_AUTHENTICATION_INFO;
+typedef struct tagSOLE_AUTHENTICATION_LIST {
+    DWORD cAuthInfo;
+    SOLE_AUTHENTICATION_INFO *aAuthInfo;
+} SOLE_AUTHENTICATION_LIST;
+typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES {
+    EOAC_NONE = 0x0,
+    EOAC_MUTUAL_AUTH = 0x1,
+    EOAC_SECURE_REFS = 0x2,
+    EOAC_ACCESS_CONTROL = 0x4,
+    EOAC_APPID = 0x8,
+    EOAC_DYNAMIC = 0x10,
+    EOAC_STATIC_CLOAKING = 0x20,
+    EOAC_DYNAMIC_CLOAKING = 0x40,
+    EOAC_ANY_AUTHORITY = 0x80,
+    EOAC_MAKE_FULLSIC = 0x100,
+    EOAC_REQUIRE_FULLSIC = 0x200,
+    EOAC_AUTO_IMPERSONATE = 0x400,
+    EOAC_DEFAULT = 0x800,
+    EOAC_DISABLE_AAA = 0x1000,
+    EOAC_NO_CUSTOM_MARSHAL = 0x2000
+} EOLE_AUTHENTICATION_CAPABILITIES;
+/*****************************************************************************
+ * IClientSecurity interface
+ */
+#ifndef __IClientSecurity_INTERFACE_DEFINED__
+#define __IClientSecurity_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IClientSecurity, 0x0000013d, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IClientSecurity : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE QueryBlanket(
+        IUnknown *pProxy,
+        DWORD *pAuthnSvc,
+        DWORD *pAuthzSvc,
+        OLECHAR **pServerPrincName,
+        DWORD *pAuthnLevel,
+        DWORD *pImpLevel,
+        void **pAuthInfo,
+        DWORD *pCapabilities) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetBlanket(
+        IUnknown *pProxy,
+        DWORD AuthnSvc,
+        DWORD AuthzSvc,
+        OLECHAR *pServerPrincName,
+        DWORD AuthnLevel,
+        DWORD ImpLevel,
+        void *pAuthInfo,
+        DWORD Capabilities) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CopyProxy(
+        IUnknown *pProxy,
+        IUnknown **ppCopy) = 0;
+
+};
+#else
+typedef struct IClientSecurityVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IClientSecurity* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IClientSecurity* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IClientSecurity* This);
+
+    /*** IClientSecurity methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryBlanket)(
+        IClientSecurity* This,
+        IUnknown *pProxy,
+        DWORD *pAuthnSvc,
+        DWORD *pAuthzSvc,
+        OLECHAR **pServerPrincName,
+        DWORD *pAuthnLevel,
+        DWORD *pImpLevel,
+        void **pAuthInfo,
+        DWORD *pCapabilities);
+
+    HRESULT (STDMETHODCALLTYPE *SetBlanket)(
+        IClientSecurity* This,
+        IUnknown *pProxy,
+        DWORD AuthnSvc,
+        DWORD AuthzSvc,
+        OLECHAR *pServerPrincName,
+        DWORD AuthnLevel,
+        DWORD ImpLevel,
+        void *pAuthInfo,
+        DWORD Capabilities);
+
+    HRESULT (STDMETHODCALLTYPE *CopyProxy)(
+        IClientSecurity* This,
+        IUnknown *pProxy,
+        IUnknown **ppCopy);
+
+    END_INTERFACE
+} IClientSecurityVtbl;
+interface IClientSecurity {
+    CONST_VTBL IClientSecurityVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IClientSecurity_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IClientSecurity_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IClientSecurity_Release(This) (This)->lpVtbl->Release(This)
+/*** IClientSecurity methods ***/
+#define IClientSecurity_QueryBlanket(This,pProxy,pAuthnSvc,pAuthzSvc,pServerPrincName,pAuthnLevel,pImpLevel,pAuthInfo,pCapabilities) (This)->lpVtbl->QueryBlanket(This,pProxy,pAuthnSvc,pAuthzSvc,pServerPrincName,pAuthnLevel,pImpLevel,pAuthInfo,pCapabilities)
+#define IClientSecurity_SetBlanket(This,pProxy,AuthnSvc,AuthzSvc,pServerPrincName,AuthnLevel,ImpLevel,pAuthInfo,Capabilities) (This)->lpVtbl->SetBlanket(This,pProxy,AuthnSvc,AuthzSvc,pServerPrincName,AuthnLevel,ImpLevel,pAuthInfo,Capabilities)
+#define IClientSecurity_CopyProxy(This,pProxy,ppCopy) (This)->lpVtbl->CopyProxy(This,pProxy,ppCopy)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IClientSecurity_QueryBlanket_Proxy(
+    IClientSecurity* This,
+    IUnknown *pProxy,
+    DWORD *pAuthnSvc,
+    DWORD *pAuthzSvc,
+    OLECHAR **pServerPrincName,
+    DWORD *pAuthnLevel,
+    DWORD *pImpLevel,
+    void **pAuthInfo,
+    DWORD *pCapabilities);
+void __RPC_STUB IClientSecurity_QueryBlanket_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IClientSecurity_SetBlanket_Proxy(
+    IClientSecurity* This,
+    IUnknown *pProxy,
+    DWORD AuthnSvc,
+    DWORD AuthzSvc,
+    OLECHAR *pServerPrincName,
+    DWORD AuthnLevel,
+    DWORD ImpLevel,
+    void *pAuthInfo,
+    DWORD Capabilities);
+void __RPC_STUB IClientSecurity_SetBlanket_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IClientSecurity_CopyProxy_Proxy(
+    IClientSecurity* This,
+    IUnknown *pProxy,
+    IUnknown **ppCopy);
+void __RPC_STUB IClientSecurity_CopyProxy_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IClientSecurity_INTERFACE_DEFINED__ */
+
+#ifndef __IServerSecurity_FWD_DEFINED__
+#define __IServerSecurity_FWD_DEFINED__
+typedef interface IServerSecurity IServerSecurity;
+#endif
+
+/*****************************************************************************
+ * IServerSecurity interface
+ */
+#ifndef __IServerSecurity_INTERFACE_DEFINED__
+#define __IServerSecurity_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IServerSecurity, 0x0000013e, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IServerSecurity : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE QueryBlanket(
+        DWORD *pAuthnSvc,
+        DWORD *pAuthzSvc,
+        OLECHAR **pServerPrincName,
+        DWORD *pAuthnLevel,
+        DWORD *pImpLevel,
+        void **pPrivs,
+        DWORD *pCapabilities) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ImpersonateClient(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RevertToSelf(
+        ) = 0;
+
+    virtual BOOL STDMETHODCALLTYPE IsImpersonating(
+        ) = 0;
+
+};
+#else
+typedef struct IServerSecurityVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IServerSecurity* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IServerSecurity* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IServerSecurity* This);
+
+    /*** IServerSecurity methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryBlanket)(
+        IServerSecurity* This,
+        DWORD *pAuthnSvc,
+        DWORD *pAuthzSvc,
+        OLECHAR **pServerPrincName,
+        DWORD *pAuthnLevel,
+        DWORD *pImpLevel,
+        void **pPrivs,
+        DWORD *pCapabilities);
+
+    HRESULT (STDMETHODCALLTYPE *ImpersonateClient)(
+        IServerSecurity* This);
+
+    HRESULT (STDMETHODCALLTYPE *RevertToSelf)(
+        IServerSecurity* This);
+
+    BOOL (STDMETHODCALLTYPE *IsImpersonating)(
+        IServerSecurity* This);
+
+    END_INTERFACE
+} IServerSecurityVtbl;
+interface IServerSecurity {
+    CONST_VTBL IServerSecurityVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IServerSecurity_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IServerSecurity_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IServerSecurity_Release(This) (This)->lpVtbl->Release(This)
+/*** IServerSecurity methods ***/
+#define IServerSecurity_QueryBlanket(This,pAuthnSvc,pAuthzSvc,pServerPrincName,pAuthnLevel,pImpLevel,pPrivs,pCapabilities) (This)->lpVtbl->QueryBlanket(This,pAuthnSvc,pAuthzSvc,pServerPrincName,pAuthnLevel,pImpLevel,pPrivs,pCapabilities)
+#define IServerSecurity_ImpersonateClient(This) (This)->lpVtbl->ImpersonateClient(This)
+#define IServerSecurity_RevertToSelf(This) (This)->lpVtbl->RevertToSelf(This)
+#define IServerSecurity_IsImpersonating(This) (This)->lpVtbl->IsImpersonating(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IServerSecurity_QueryBlanket_Proxy(
+    IServerSecurity* This,
+    DWORD *pAuthnSvc,
+    DWORD *pAuthzSvc,
+    OLECHAR **pServerPrincName,
+    DWORD *pAuthnLevel,
+    DWORD *pImpLevel,
+    void **pPrivs,
+    DWORD *pCapabilities);
+void __RPC_STUB IServerSecurity_QueryBlanket_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IServerSecurity_ImpersonateClient_Proxy(
+    IServerSecurity* This);
+void __RPC_STUB IServerSecurity_ImpersonateClient_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IServerSecurity_RevertToSelf_Proxy(
+    IServerSecurity* This);
+void __RPC_STUB IServerSecurity_RevertToSelf_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+BOOL STDMETHODCALLTYPE IServerSecurity_IsImpersonating_Proxy(
+    IServerSecurity* This);
+void __RPC_STUB IServerSecurity_IsImpersonating_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IServerSecurity_INTERFACE_DEFINED__ */
+
+#ifndef __IAsyncSetup_FWD_DEFINED__
+#define __IAsyncSetup_FWD_DEFINED__
+typedef interface IAsyncSetup IAsyncSetup;
+#endif
+
+/*****************************************************************************
+ * IAsyncSetup interface
+ */
+#ifndef __IAsyncSetup_INTERFACE_DEFINED__
+#define __IAsyncSetup_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IAsyncSetup, 0x00000024, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IAsyncSetup : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetAsyncManager(
+        REFIID riid,
+        IUnknown *pOuter,
+        DWORD dwFlags,
+        IUnknown **ppInner,
+        IAsyncManager **ppAsyncMgr) = 0;
+
+};
+#else
+typedef struct IAsyncSetupVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IAsyncSetup* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IAsyncSetup* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IAsyncSetup* This);
+
+    /*** IAsyncSetup methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetAsyncManager)(
+        IAsyncSetup* This,
+        REFIID riid,
+        IUnknown *pOuter,
+        DWORD dwFlags,
+        IUnknown **ppInner,
+        IAsyncManager **ppAsyncMgr);
+
+    END_INTERFACE
+} IAsyncSetupVtbl;
+interface IAsyncSetup {
+    CONST_VTBL IAsyncSetupVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IAsyncSetup_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAsyncSetup_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAsyncSetup_Release(This) (This)->lpVtbl->Release(This)
+/*** IAsyncSetup methods ***/
+#define IAsyncSetup_GetAsyncManager(This,riid,pOuter,dwFlags,ppInner,ppAsyncMgr) (This)->lpVtbl->GetAsyncManager(This,riid,pOuter,dwFlags,ppInner,ppAsyncMgr)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IAsyncSetup_GetAsyncManager_Proxy(
+    IAsyncSetup* This,
+    REFIID riid,
+    IUnknown *pOuter,
+    DWORD dwFlags,
+    IUnknown **ppInner,
+    IAsyncManager **ppAsyncMgr);
+void __RPC_STUB IAsyncSetup_GetAsyncManager_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IAsyncSetup_INTERFACE_DEFINED__ */
+
+#ifndef __IDirectWriterLock_FWD_DEFINED__
+#define __IDirectWriterLock_FWD_DEFINED__
+typedef interface IDirectWriterLock IDirectWriterLock;
+#endif
+
+/*****************************************************************************
+ * IDirectWriterLock interface
+ */
+#ifndef __IDirectWriterLock_INTERFACE_DEFINED__
+#define __IDirectWriterLock_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDirectWriterLock, 0x0e6d4d92, 0x6738, 0x11cf, 0x96,0x08, 0x00,0xaa,0x00,0x68,0x0d,0xb4);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IDirectWriterLock : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE WaitForWriteAccess(
+        DWORD dwTimeout) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ReleaseWriteAccess(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE HaveWriteAccess(
+        ) = 0;
+
+};
+#else
+typedef struct IDirectWriterLockVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDirectWriterLock* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDirectWriterLock* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDirectWriterLock* This);
+
+    /*** IDirectWriterLock methods ***/
+    HRESULT (STDMETHODCALLTYPE *WaitForWriteAccess)(
+        IDirectWriterLock* This,
+        DWORD dwTimeout);
+
+    HRESULT (STDMETHODCALLTYPE *ReleaseWriteAccess)(
+        IDirectWriterLock* This);
+
+    HRESULT (STDMETHODCALLTYPE *HaveWriteAccess)(
+        IDirectWriterLock* This);
+
+    END_INTERFACE
+} IDirectWriterLockVtbl;
+interface IDirectWriterLock {
+    CONST_VTBL IDirectWriterLockVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IDirectWriterLock_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDirectWriterLock_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDirectWriterLock_Release(This) (This)->lpVtbl->Release(This)
+/*** IDirectWriterLock methods ***/
+#define IDirectWriterLock_WaitForWriteAccess(This,dwTimeout) (This)->lpVtbl->WaitForWriteAccess(This,dwTimeout)
+#define IDirectWriterLock_ReleaseWriteAccess(This) (This)->lpVtbl->ReleaseWriteAccess(This)
+#define IDirectWriterLock_HaveWriteAccess(This) (This)->lpVtbl->HaveWriteAccess(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IDirectWriterLock_WaitForWriteAccess_Proxy(
+    IDirectWriterLock* This,
+    DWORD dwTimeout);
+void __RPC_STUB IDirectWriterLock_WaitForWriteAccess_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectWriterLock_ReleaseWriteAccess_Proxy(
+    IDirectWriterLock* This);
+void __RPC_STUB IDirectWriterLock_ReleaseWriteAccess_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectWriterLock_HaveWriteAccess_Proxy(
+    IDirectWriterLock* This);
+void __RPC_STUB IDirectWriterLock_HaveWriteAccess_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IDirectWriterLock_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ISynchronize interface
+ */
+#ifndef __ISynchronize_INTERFACE_DEFINED__
+#define __ISynchronize_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ISynchronize, 0x00000030, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ISynchronize : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Wait(
+        DWORD dwFlags,
+        DWORD dwMilliseconds) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Signal(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        ) = 0;
+
+};
+#else
+typedef struct ISynchronizeVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ISynchronize* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ISynchronize* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ISynchronize* This);
+
+    /*** ISynchronize methods ***/
+    HRESULT (STDMETHODCALLTYPE *Wait)(
+        ISynchronize* This,
+        DWORD dwFlags,
+        DWORD dwMilliseconds);
+
+    HRESULT (STDMETHODCALLTYPE *Signal)(
+        ISynchronize* This);
+
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        ISynchronize* This);
+
+    END_INTERFACE
+} ISynchronizeVtbl;
+interface ISynchronize {
+    CONST_VTBL ISynchronizeVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ISynchronize_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ISynchronize_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ISynchronize_Release(This) (This)->lpVtbl->Release(This)
+/*** ISynchronize methods ***/
+#define ISynchronize_Wait(This,dwFlags,dwMilliseconds) (This)->lpVtbl->Wait(This,dwFlags,dwMilliseconds)
+#define ISynchronize_Signal(This) (This)->lpVtbl->Signal(This)
+#define ISynchronize_Reset(This) (This)->lpVtbl->Reset(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ISynchronize_Wait_Proxy(
+    ISynchronize* This,
+    DWORD dwFlags,
+    DWORD dwMilliseconds);
+void __RPC_STUB ISynchronize_Wait_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISynchronize_Signal_Proxy(
+    ISynchronize* This);
+void __RPC_STUB ISynchronize_Signal_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISynchronize_Reset_Proxy(
+    ISynchronize* This);
+void __RPC_STUB ISynchronize_Reset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ISynchronize_INTERFACE_DEFINED__ */
+
+#ifndef __ISynchronizeHandle_FWD_DEFINED__
+#define __ISynchronizeHandle_FWD_DEFINED__
+typedef interface ISynchronizeHandle ISynchronizeHandle;
+#endif
+
+/*****************************************************************************
+ * ISynchronizeHandle interface
+ */
+#ifndef __ISynchronizeHandle_INTERFACE_DEFINED__
+#define __ISynchronizeHandle_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ISynchronizeHandle, 0x00000031, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ISynchronizeHandle : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetHandle(
+        HANDLE *ph) = 0;
+
+};
+#else
+typedef struct ISynchronizeHandleVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ISynchronizeHandle* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ISynchronizeHandle* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ISynchronizeHandle* This);
+
+    /*** ISynchronizeHandle methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetHandle)(
+        ISynchronizeHandle* This,
+        HANDLE *ph);
+
+    END_INTERFACE
+} ISynchronizeHandleVtbl;
+interface ISynchronizeHandle {
+    CONST_VTBL ISynchronizeHandleVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ISynchronizeHandle_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ISynchronizeHandle_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ISynchronizeHandle_Release(This) (This)->lpVtbl->Release(This)
+/*** ISynchronizeHandle methods ***/
+#define ISynchronizeHandle_GetHandle(This,ph) (This)->lpVtbl->GetHandle(This,ph)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ISynchronizeHandle_GetHandle_Proxy(
+    ISynchronizeHandle* This,
+    HANDLE *ph);
+void __RPC_STUB ISynchronizeHandle_GetHandle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ISynchronizeHandle_INTERFACE_DEFINED__ */
+
+#ifndef __ISynchronizeEvent_FWD_DEFINED__
+#define __ISynchronizeEvent_FWD_DEFINED__
+typedef interface ISynchronizeEvent ISynchronizeEvent;
+#endif
+
+/*****************************************************************************
+ * ISynchronizeEvent interface
+ */
+#ifndef __ISynchronizeEvent_INTERFACE_DEFINED__
+#define __ISynchronizeEvent_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ISynchronizeEvent, 0x00000032, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ISynchronizeEvent : public ISynchronizeHandle
+{
+    virtual HRESULT STDMETHODCALLTYPE SetEventHandle(
+        HANDLE *ph) = 0;
+
+};
+#else
+typedef struct ISynchronizeEventVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ISynchronizeEvent* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ISynchronizeEvent* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ISynchronizeEvent* This);
+
+    /*** ISynchronizeHandle methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetHandle)(
+        ISynchronizeEvent* This,
+        HANDLE *ph);
+
+    /*** ISynchronizeEvent methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetEventHandle)(
+        ISynchronizeEvent* This,
+        HANDLE *ph);
+
+    END_INTERFACE
+} ISynchronizeEventVtbl;
+interface ISynchronizeEvent {
+    CONST_VTBL ISynchronizeEventVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ISynchronizeEvent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ISynchronizeEvent_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ISynchronizeEvent_Release(This) (This)->lpVtbl->Release(This)
+/*** ISynchronizeHandle methods ***/
+#define ISynchronizeEvent_GetHandle(This,ph) (This)->lpVtbl->GetHandle(This,ph)
+/*** ISynchronizeEvent methods ***/
+#define ISynchronizeEvent_SetEventHandle(This,ph) (This)->lpVtbl->SetEventHandle(This,ph)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ISynchronizeEvent_SetEventHandle_Proxy(
+    ISynchronizeEvent* This,
+    HANDLE *ph);
+void __RPC_STUB ISynchronizeEvent_SetEventHandle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ISynchronizeEvent_INTERFACE_DEFINED__ */
+
+#ifndef __ISynchronizeContainer_FWD_DEFINED__
+#define __ISynchronizeContainer_FWD_DEFINED__
+typedef interface ISynchronizeContainer ISynchronizeContainer;
+#endif
+
+/*****************************************************************************
+ * ISynchronizeContainer interface
+ */
+#ifndef __ISynchronizeContainer_INTERFACE_DEFINED__
+#define __ISynchronizeContainer_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ISynchronizeContainer, 0x00000033, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ISynchronizeContainer : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE AddSynchronize(
+        ISynchronize *pSync) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE WaitMultiple(
+        DWORD dwFlags,
+        DWORD dwTimeOut,
+        ISynchronize **ppSync) = 0;
+
+};
+#else
+typedef struct ISynchronizeContainerVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ISynchronizeContainer* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ISynchronizeContainer* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ISynchronizeContainer* This);
+
+    /*** ISynchronizeContainer methods ***/
+    HRESULT (STDMETHODCALLTYPE *AddSynchronize)(
+        ISynchronizeContainer* This,
+        ISynchronize *pSync);
+
+    HRESULT (STDMETHODCALLTYPE *WaitMultiple)(
+        ISynchronizeContainer* This,
+        DWORD dwFlags,
+        DWORD dwTimeOut,
+        ISynchronize **ppSync);
+
+    END_INTERFACE
+} ISynchronizeContainerVtbl;
+interface ISynchronizeContainer {
+    CONST_VTBL ISynchronizeContainerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ISynchronizeContainer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ISynchronizeContainer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ISynchronizeContainer_Release(This) (This)->lpVtbl->Release(This)
+/*** ISynchronizeContainer methods ***/
+#define ISynchronizeContainer_AddSynchronize(This,pSync) (This)->lpVtbl->AddSynchronize(This,pSync)
+#define ISynchronizeContainer_WaitMultiple(This,dwFlags,dwTimeOut,ppSync) (This)->lpVtbl->WaitMultiple(This,dwFlags,dwTimeOut,ppSync)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ISynchronizeContainer_AddSynchronize_Proxy(
+    ISynchronizeContainer* This,
+    ISynchronize *pSync);
+void __RPC_STUB ISynchronizeContainer_AddSynchronize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISynchronizeContainer_WaitMultiple_Proxy(
+    ISynchronizeContainer* This,
+    DWORD dwFlags,
+    DWORD dwTimeOut,
+    ISynchronize **ppSync);
+void __RPC_STUB ISynchronizeContainer_WaitMultiple_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ISynchronizeContainer_INTERFACE_DEFINED__ */
+
+#ifndef __ISynchronizeMutex_FWD_DEFINED__
+#define __ISynchronizeMutex_FWD_DEFINED__
+typedef interface ISynchronizeMutex ISynchronizeMutex;
+#endif
+
+/*****************************************************************************
+ * ISynchronizeMutex interface
+ */
+#ifndef __ISynchronizeMutex_INTERFACE_DEFINED__
+#define __ISynchronizeMutex_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ISynchronizeMutex, 0x00000025, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ISynchronizeMutex : public ISynchronize
+{
+    virtual HRESULT STDMETHODCALLTYPE ReleaseMutex(
+        ) = 0;
+
+};
+#else
+typedef struct ISynchronizeMutexVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ISynchronizeMutex* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ISynchronizeMutex* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ISynchronizeMutex* This);
+
+    /*** ISynchronize methods ***/
+    HRESULT (STDMETHODCALLTYPE *Wait)(
+        ISynchronizeMutex* This,
+        DWORD dwFlags,
+        DWORD dwMilliseconds);
+
+    HRESULT (STDMETHODCALLTYPE *Signal)(
+        ISynchronizeMutex* This);
+
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        ISynchronizeMutex* This);
+
+    /*** ISynchronizeMutex methods ***/
+    HRESULT (STDMETHODCALLTYPE *ReleaseMutex)(
+        ISynchronizeMutex* This);
+
+    END_INTERFACE
+} ISynchronizeMutexVtbl;
+interface ISynchronizeMutex {
+    CONST_VTBL ISynchronizeMutexVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ISynchronizeMutex_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ISynchronizeMutex_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ISynchronizeMutex_Release(This) (This)->lpVtbl->Release(This)
+/*** ISynchronize methods ***/
+#define ISynchronizeMutex_Wait(This,dwFlags,dwMilliseconds) (This)->lpVtbl->Wait(This,dwFlags,dwMilliseconds)
+#define ISynchronizeMutex_Signal(This) (This)->lpVtbl->Signal(This)
+#define ISynchronizeMutex_Reset(This) (This)->lpVtbl->Reset(This)
+/*** ISynchronizeMutex methods ***/
+#define ISynchronizeMutex_ReleaseMutex(This) (This)->lpVtbl->ReleaseMutex(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ISynchronizeMutex_ReleaseMutex_Proxy(
+    ISynchronizeMutex* This);
+void __RPC_STUB ISynchronizeMutex_ReleaseMutex_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ISynchronizeMutex_INTERFACE_DEFINED__ */
+
+#ifndef __ICancelMethodCalls_FWD_DEFINED__
+#define __ICancelMethodCalls_FWD_DEFINED__
+typedef interface ICancelMethodCalls ICancelMethodCalls;
+#endif
+
+typedef ICancelMethodCalls *LPCANCELMETHODCALLS;
+/*****************************************************************************
+ * ICancelMethodCalls interface
+ */
+#ifndef __ICancelMethodCalls_INTERFACE_DEFINED__
+#define __ICancelMethodCalls_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ICancelMethodCalls, 0x00000029, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ICancelMethodCalls : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Cancel(
+        ULONG ulSeconds) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE TestCancel(
+        ) = 0;
+
+};
+#else
+typedef struct ICancelMethodCallsVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ICancelMethodCalls* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ICancelMethodCalls* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ICancelMethodCalls* This);
+
+    /*** ICancelMethodCalls methods ***/
+    HRESULT (STDMETHODCALLTYPE *Cancel)(
+        ICancelMethodCalls* This,
+        ULONG ulSeconds);
+
+    HRESULT (STDMETHODCALLTYPE *TestCancel)(
+        ICancelMethodCalls* This);
+
+    END_INTERFACE
+} ICancelMethodCallsVtbl;
+interface ICancelMethodCalls {
+    CONST_VTBL ICancelMethodCallsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ICancelMethodCalls_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ICancelMethodCalls_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ICancelMethodCalls_Release(This) (This)->lpVtbl->Release(This)
+/*** ICancelMethodCalls methods ***/
+#define ICancelMethodCalls_Cancel(This,ulSeconds) (This)->lpVtbl->Cancel(This,ulSeconds)
+#define ICancelMethodCalls_TestCancel(This) (This)->lpVtbl->TestCancel(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ICancelMethodCalls_Cancel_Proxy(
+    ICancelMethodCalls* This,
+    ULONG ulSeconds);
+void __RPC_STUB ICancelMethodCalls_Cancel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ICancelMethodCalls_TestCancel_Proxy(
+    ICancelMethodCalls* This);
+void __RPC_STUB ICancelMethodCalls_TestCancel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ICancelMethodCalls_INTERFACE_DEFINED__ */
+
+typedef enum tagDCOM_CALL_STATE {
+    DCOM_NONE = 0,
+    DCOM_CALL_COMPLETE = 1,
+    DCOM_CALL_CANCELED = 2
+} DCOM_CALL_STATE;
+/*****************************************************************************
+ * IAsyncManager interface
+ */
+#ifndef __IAsyncManager_INTERFACE_DEFINED__
+#define __IAsyncManager_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IAsyncManager, 0x0000002a, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IAsyncManager : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE CompleteCall(
+        HRESULT Result) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCallContext(
+        REFIID riid,
+        void **pInterface) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetState(
+        ULONG *pulStateFlags) = 0;
+
+};
+#else
+typedef struct IAsyncManagerVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IAsyncManager* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IAsyncManager* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IAsyncManager* This);
+
+    /*** IAsyncManager methods ***/
+    HRESULT (STDMETHODCALLTYPE *CompleteCall)(
+        IAsyncManager* This,
+        HRESULT Result);
+
+    HRESULT (STDMETHODCALLTYPE *GetCallContext)(
+        IAsyncManager* This,
+        REFIID riid,
+        void **pInterface);
+
+    HRESULT (STDMETHODCALLTYPE *GetState)(
+        IAsyncManager* This,
+        ULONG *pulStateFlags);
+
+    END_INTERFACE
+} IAsyncManagerVtbl;
+interface IAsyncManager {
+    CONST_VTBL IAsyncManagerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IAsyncManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAsyncManager_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAsyncManager_Release(This) (This)->lpVtbl->Release(This)
+/*** IAsyncManager methods ***/
+#define IAsyncManager_CompleteCall(This,Result) (This)->lpVtbl->CompleteCall(This,Result)
+#define IAsyncManager_GetCallContext(This,riid,pInterface) (This)->lpVtbl->GetCallContext(This,riid,pInterface)
+#define IAsyncManager_GetState(This,pulStateFlags) (This)->lpVtbl->GetState(This,pulStateFlags)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IAsyncManager_CompleteCall_Proxy(
+    IAsyncManager* This,
+    HRESULT Result);
+void __RPC_STUB IAsyncManager_CompleteCall_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAsyncManager_GetCallContext_Proxy(
+    IAsyncManager* This,
+    REFIID riid,
+    void **pInterface);
+void __RPC_STUB IAsyncManager_GetCallContext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAsyncManager_GetState_Proxy(
+    IAsyncManager* This,
+    ULONG *pulStateFlags);
+void __RPC_STUB IAsyncManager_GetState_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IAsyncManager_INTERFACE_DEFINED__ */
+
+#ifndef __ICallFactory_FWD_DEFINED__
+#define __ICallFactory_FWD_DEFINED__
+typedef interface ICallFactory ICallFactory;
+#endif
+
+/*****************************************************************************
+ * ICallFactory interface
+ */
+#ifndef __ICallFactory_INTERFACE_DEFINED__
+#define __ICallFactory_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ICallFactory, 0x1c733a30, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ICallFactory : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE CreateCall(
+        REFIID riid,
+        IUnknown *pCtrlUnk,
+        REFIID riid2,
+        IUnknown **ppv) = 0;
+
+};
+#else
+typedef struct ICallFactoryVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ICallFactory* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ICallFactory* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ICallFactory* This);
+
+    /*** ICallFactory methods ***/
+    HRESULT (STDMETHODCALLTYPE *CreateCall)(
+        ICallFactory* This,
+        REFIID riid,
+        IUnknown *pCtrlUnk,
+        REFIID riid2,
+        IUnknown **ppv);
+
+    END_INTERFACE
+} ICallFactoryVtbl;
+interface ICallFactory {
+    CONST_VTBL ICallFactoryVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ICallFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ICallFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ICallFactory_Release(This) (This)->lpVtbl->Release(This)
+/*** ICallFactory methods ***/
+#define ICallFactory_CreateCall(This,riid,pCtrlUnk,riid2,ppv) (This)->lpVtbl->CreateCall(This,riid,pCtrlUnk,riid2,ppv)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ICallFactory_CreateCall_Proxy(
+    ICallFactory* This,
+    REFIID riid,
+    IUnknown *pCtrlUnk,
+    REFIID riid2,
+    IUnknown **ppv);
+void __RPC_STUB ICallFactory_CreateCall_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ICallFactory_INTERFACE_DEFINED__ */
+
+#ifndef __IRpcOptions_FWD_DEFINED__
+#define __IRpcOptions_FWD_DEFINED__
+typedef interface IRpcOptions IRpcOptions;
+#endif
+
+/*****************************************************************************
+ * IRpcOptions interface
+ */
+#ifndef __IRpcOptions_INTERFACE_DEFINED__
+#define __IRpcOptions_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IRpcOptions, 0x00000144, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IRpcOptions : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Set(
+        IUnknown *pPrx,
+        DWORD dwProperty,
+        ULONG_PTR dwValue) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Query(
+        IUnknown *pPrx,
+        DWORD dwProperty,
+        ULONG_PTR *pdwValue) = 0;
+
+};
+#else
+typedef struct IRpcOptionsVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IRpcOptions* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IRpcOptions* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IRpcOptions* This);
+
+    /*** IRpcOptions methods ***/
+    HRESULT (STDMETHODCALLTYPE *Set)(
+        IRpcOptions* This,
+        IUnknown *pPrx,
+        DWORD dwProperty,
+        ULONG_PTR dwValue);
+
+    HRESULT (STDMETHODCALLTYPE *Query)(
+        IRpcOptions* This,
+        IUnknown *pPrx,
+        DWORD dwProperty,
+        ULONG_PTR *pdwValue);
+
+    END_INTERFACE
+} IRpcOptionsVtbl;
+interface IRpcOptions {
+    CONST_VTBL IRpcOptionsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IRpcOptions_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IRpcOptions_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRpcOptions_Release(This) (This)->lpVtbl->Release(This)
+/*** IRpcOptions methods ***/
+#define IRpcOptions_Set(This,pPrx,dwProperty,dwValue) (This)->lpVtbl->Set(This,pPrx,dwProperty,dwValue)
+#define IRpcOptions_Query(This,pPrx,dwProperty,pdwValue) (This)->lpVtbl->Query(This,pPrx,dwProperty,pdwValue)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IRpcOptions_Set_Proxy(
+    IRpcOptions* This,
+    IUnknown *pPrx,
+    DWORD dwProperty,
+    ULONG_PTR dwValue);
+void __RPC_STUB IRpcOptions_Set_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRpcOptions_Query_Proxy(
+    IRpcOptions* This,
+    IUnknown *pPrx,
+    DWORD dwProperty,
+    ULONG_PTR *pdwValue);
+void __RPC_STUB IRpcOptions_Query_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IRpcOptions_INTERFACE_DEFINED__ */
+
+enum {
+    COMBND_RPCTIMEOUT = 1,
+    COMBND_SERVER_LOCALITY = 2
+};
+
+enum {
+    SERVER_LOCALITY_PROCESS_LOCAL = 0,
+    SERVER_LOCALITY_MACHINE_LOCAL = 1,
+    SERVER_LOCALITY_REMOTE = 2
+};
+
+#ifndef __IRpcHelper_FWD_DEFINED__
+#define __IRpcHelper_FWD_DEFINED__
+typedef interface IRpcHelper IRpcHelper;
+#endif
+
+/*****************************************************************************
+ * IRpcHelper interface
+ */
+#ifndef __IRpcHelper_INTERFACE_DEFINED__
+#define __IRpcHelper_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IRpcHelper, 0x00000149, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IRpcHelper : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetDCOMProtocolVersion(
+        DWORD *pComVersion) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetIIDFromOBJREF(
+        void *pObjRef,
+        IID **piid) = 0;
+
+};
+#else
+typedef struct IRpcHelperVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IRpcHelper* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IRpcHelper* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IRpcHelper* This);
+
+    /*** IRpcHelper methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetDCOMProtocolVersion)(
+        IRpcHelper* This,
+        DWORD *pComVersion);
+
+    HRESULT (STDMETHODCALLTYPE *GetIIDFromOBJREF)(
+        IRpcHelper* This,
+        void *pObjRef,
+        IID **piid);
+
+    END_INTERFACE
+} IRpcHelperVtbl;
+interface IRpcHelper {
+    CONST_VTBL IRpcHelperVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IRpcHelper_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IRpcHelper_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRpcHelper_Release(This) (This)->lpVtbl->Release(This)
+/*** IRpcHelper methods ***/
+#define IRpcHelper_GetDCOMProtocolVersion(This,pComVersion) (This)->lpVtbl->GetDCOMProtocolVersion(This,pComVersion)
+#define IRpcHelper_GetIIDFromOBJREF(This,pObjRef,piid) (This)->lpVtbl->GetIIDFromOBJREF(This,pObjRef,piid)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IRpcHelper_GetDCOMProtocolVersion_Proxy(
+    IRpcHelper* This,
+    DWORD *pComVersion);
+void __RPC_STUB IRpcHelper_GetDCOMProtocolVersion_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IRpcHelper_GetIIDFromOBJREF_Proxy(
+    IRpcHelper* This,
+    void *pObjRef,
+    IID **piid);
+void __RPC_STUB IRpcHelper_GetIIDFromOBJREF_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IRpcHelper_INTERFACE_DEFINED__ */
+
+#ifndef __IReleaseMarshalBuffers_FWD_DEFINED__
+#define __IReleaseMarshalBuffers_FWD_DEFINED__
+typedef interface IReleaseMarshalBuffers IReleaseMarshalBuffers;
+#endif
+
+/*****************************************************************************
+ * IReleaseMarshalBuffers interface
+ */
+#ifndef __IReleaseMarshalBuffers_INTERFACE_DEFINED__
+#define __IReleaseMarshalBuffers_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IReleaseMarshalBuffers, 0xeb0cb9e8, 0x7996, 0x11d2, 0x87,0x2e, 0x00,0x00,0xf8,0x08,0x08,0x59);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IReleaseMarshalBuffers : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE ReleaseMarshalBuffer(
+        RPCOLEMESSAGE *pMsg,
+        DWORD dwFlags,
+        IUnknown *pChnl) = 0;
+
+};
+#else
+typedef struct IReleaseMarshalBuffersVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IReleaseMarshalBuffers* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IReleaseMarshalBuffers* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IReleaseMarshalBuffers* This);
+
+    /*** IReleaseMarshalBuffers methods ***/
+    HRESULT (STDMETHODCALLTYPE *ReleaseMarshalBuffer)(
+        IReleaseMarshalBuffers* This,
+        RPCOLEMESSAGE *pMsg,
+        DWORD dwFlags,
+        IUnknown *pChnl);
+
+    END_INTERFACE
+} IReleaseMarshalBuffersVtbl;
+interface IReleaseMarshalBuffers {
+    CONST_VTBL IReleaseMarshalBuffersVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IReleaseMarshalBuffers_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IReleaseMarshalBuffers_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IReleaseMarshalBuffers_Release(This) (This)->lpVtbl->Release(This)
+/*** IReleaseMarshalBuffers methods ***/
+#define IReleaseMarshalBuffers_ReleaseMarshalBuffer(This,pMsg,dwFlags,pChnl) (This)->lpVtbl->ReleaseMarshalBuffer(This,pMsg,dwFlags,pChnl)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IReleaseMarshalBuffers_ReleaseMarshalBuffer_Proxy(
+    IReleaseMarshalBuffers* This,
+    RPCOLEMESSAGE *pMsg,
+    DWORD dwFlags,
+    IUnknown *pChnl);
+void __RPC_STUB IReleaseMarshalBuffers_ReleaseMarshalBuffer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IReleaseMarshalBuffers_INTERFACE_DEFINED__ */
+
+#ifndef __IWaitMultiple_FWD_DEFINED__
+#define __IWaitMultiple_FWD_DEFINED__
+typedef interface IWaitMultiple IWaitMultiple;
+#endif
+
+/*****************************************************************************
+ * IWaitMultiple interface
+ */
+#ifndef __IWaitMultiple_INTERFACE_DEFINED__
+#define __IWaitMultiple_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWaitMultiple, 0x0000002b, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWaitMultiple : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE WaitMultiple(
+        DWORD timeout,
+        ISynchronize **pSync) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddSynchronize(
+        ISynchronize *pSync) = 0;
+
+};
+#else
+typedef struct IWaitMultipleVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWaitMultiple* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWaitMultiple* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWaitMultiple* This);
+
+    /*** IWaitMultiple methods ***/
+    HRESULT (STDMETHODCALLTYPE *WaitMultiple)(
+        IWaitMultiple* This,
+        DWORD timeout,
+        ISynchronize **pSync);
+
+    HRESULT (STDMETHODCALLTYPE *AddSynchronize)(
+        IWaitMultiple* This,
+        ISynchronize *pSync);
+
+    END_INTERFACE
+} IWaitMultipleVtbl;
+interface IWaitMultiple {
+    CONST_VTBL IWaitMultipleVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWaitMultiple_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWaitMultiple_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWaitMultiple_Release(This) (This)->lpVtbl->Release(This)
+/*** IWaitMultiple methods ***/
+#define IWaitMultiple_WaitMultiple(This,timeout,pSync) (This)->lpVtbl->WaitMultiple(This,timeout,pSync)
+#define IWaitMultiple_AddSynchronize(This,pSync) (This)->lpVtbl->AddSynchronize(This,pSync)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWaitMultiple_WaitMultiple_Proxy(
+    IWaitMultiple* This,
+    DWORD timeout,
+    ISynchronize **pSync);
+void __RPC_STUB IWaitMultiple_WaitMultiple_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWaitMultiple_AddSynchronize_Proxy(
+    IWaitMultiple* This,
+    ISynchronize *pSync);
+void __RPC_STUB IWaitMultiple_AddSynchronize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWaitMultiple_INTERFACE_DEFINED__ */
+
+#ifndef __IUrlMon_FWD_DEFINED__
+#define __IUrlMon_FWD_DEFINED__
+typedef interface IUrlMon IUrlMon;
+#endif
+
+/*****************************************************************************
+ * IUrlMon interface
+ */
+#ifndef __IUrlMon_INTERFACE_DEFINED__
+#define __IUrlMon_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IUrlMon, 0x00000026, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IUrlMon : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE AsyncGetClassBits(
+        REFCLSID rclsid,
+        LPCWSTR pszTYPE,
+        LPCWSTR pszExt,
+        DWORD dwFileVersionMS,
+        DWORD dwFileVersionLS,
+        LPCWSTR pszCodeBase,
+        IBindCtx *pbc,
+        DWORD dwClassContext,
+        REFIID riid,
+        DWORD flags) = 0;
+
+};
+#else
+typedef struct IUrlMonVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IUrlMon* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IUrlMon* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IUrlMon* This);
+
+    /*** IUrlMon methods ***/
+    HRESULT (STDMETHODCALLTYPE *AsyncGetClassBits)(
+        IUrlMon* This,
+        REFCLSID rclsid,
+        LPCWSTR pszTYPE,
+        LPCWSTR pszExt,
+        DWORD dwFileVersionMS,
+        DWORD dwFileVersionLS,
+        LPCWSTR pszCodeBase,
+        IBindCtx *pbc,
+        DWORD dwClassContext,
+        REFIID riid,
+        DWORD flags);
+
+    END_INTERFACE
+} IUrlMonVtbl;
+interface IUrlMon {
+    CONST_VTBL IUrlMonVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IUrlMon_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IUrlMon_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IUrlMon_Release(This) (This)->lpVtbl->Release(This)
+/*** IUrlMon methods ***/
+#define IUrlMon_AsyncGetClassBits(This,rclsid,pszTYPE,pszExt,dwFileVersionMS,dwFileVersionLS,pszCodeBase,pbc,dwClassContext,riid,flags) (This)->lpVtbl->AsyncGetClassBits(This,rclsid,pszTYPE,pszExt,dwFileVersionMS,dwFileVersionLS,pszCodeBase,pbc,dwClassContext,riid,flags)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IUrlMon_AsyncGetClassBits_Proxy(
+    IUrlMon* This,
+    REFCLSID rclsid,
+    LPCWSTR pszTYPE,
+    LPCWSTR pszExt,
+    DWORD dwFileVersionMS,
+    DWORD dwFileVersionLS,
+    LPCWSTR pszCodeBase,
+    IBindCtx *pbc,
+    DWORD dwClassContext,
+    REFIID riid,
+    DWORD flags);
+void __RPC_STUB IUrlMon_AsyncGetClassBits_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IUrlMon_INTERFACE_DEFINED__ */
+
+#ifndef __IForegroundTransfer_FWD_DEFINED__
+#define __IForegroundTransfer_FWD_DEFINED__
+typedef interface IForegroundTransfer IForegroundTransfer;
+#endif
+
+/*****************************************************************************
+ * IForegroundTransfer interface
+ */
+#ifndef __IForegroundTransfer_INTERFACE_DEFINED__
+#define __IForegroundTransfer_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IForegroundTransfer, 0x00000145, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IForegroundTransfer : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE AllowForegroundTransfer(
+        void *lpvReserved) = 0;
+
+};
+#else
+typedef struct IForegroundTransferVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IForegroundTransfer* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IForegroundTransfer* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IForegroundTransfer* This);
+
+    /*** IForegroundTransfer methods ***/
+    HRESULT (STDMETHODCALLTYPE *AllowForegroundTransfer)(
+        IForegroundTransfer* This,
+        void *lpvReserved);
+
+    END_INTERFACE
+} IForegroundTransferVtbl;
+interface IForegroundTransfer {
+    CONST_VTBL IForegroundTransferVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IForegroundTransfer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IForegroundTransfer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IForegroundTransfer_Release(This) (This)->lpVtbl->Release(This)
+/*** IForegroundTransfer methods ***/
+#define IForegroundTransfer_AllowForegroundTransfer(This,lpvReserved) (This)->lpVtbl->AllowForegroundTransfer(This,lpvReserved)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IForegroundTransfer_AllowForegroundTransfer_Proxy(
+    IForegroundTransfer* This,
+    void *lpvReserved);
+void __RPC_STUB IForegroundTransfer_AllowForegroundTransfer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IForegroundTransfer_INTERFACE_DEFINED__ */
+
+#ifndef __IAddrTrackingControl_FWD_DEFINED__
+#define __IAddrTrackingControl_FWD_DEFINED__
+typedef interface IAddrTrackingControl IAddrTrackingControl;
+#endif
+
+typedef IAddrTrackingControl *LPADDRTRACKINGCONTROL;
+/*****************************************************************************
+ * IAddrTrackingControl interface
+ */
+#ifndef __IAddrTrackingControl_INTERFACE_DEFINED__
+#define __IAddrTrackingControl_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IAddrTrackingControl, 0x00000147, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IAddrTrackingControl : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE EnableCOMDynamicAddrTracking(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DisableCOMDynamicAddrTracking(
+        ) = 0;
+
+};
+#else
+typedef struct IAddrTrackingControlVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IAddrTrackingControl* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IAddrTrackingControl* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IAddrTrackingControl* This);
+
+    /*** IAddrTrackingControl methods ***/
+    HRESULT (STDMETHODCALLTYPE *EnableCOMDynamicAddrTracking)(
+        IAddrTrackingControl* This);
+
+    HRESULT (STDMETHODCALLTYPE *DisableCOMDynamicAddrTracking)(
+        IAddrTrackingControl* This);
+
+    END_INTERFACE
+} IAddrTrackingControlVtbl;
+interface IAddrTrackingControl {
+    CONST_VTBL IAddrTrackingControlVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IAddrTrackingControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAddrTrackingControl_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAddrTrackingControl_Release(This) (This)->lpVtbl->Release(This)
+/*** IAddrTrackingControl methods ***/
+#define IAddrTrackingControl_EnableCOMDynamicAddrTracking(This) (This)->lpVtbl->EnableCOMDynamicAddrTracking(This)
+#define IAddrTrackingControl_DisableCOMDynamicAddrTracking(This) (This)->lpVtbl->DisableCOMDynamicAddrTracking(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IAddrTrackingControl_EnableCOMDynamicAddrTracking_Proxy(
+    IAddrTrackingControl* This);
+void __RPC_STUB IAddrTrackingControl_EnableCOMDynamicAddrTracking_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAddrTrackingControl_DisableCOMDynamicAddrTracking_Proxy(
+    IAddrTrackingControl* This);
+void __RPC_STUB IAddrTrackingControl_DisableCOMDynamicAddrTracking_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IAddrTrackingControl_INTERFACE_DEFINED__ */
+
+#ifndef __IAddrExclusionControl_FWD_DEFINED__
+#define __IAddrExclusionControl_FWD_DEFINED__
+typedef interface IAddrExclusionControl IAddrExclusionControl;
+#endif
+
+typedef IAddrExclusionControl *LPADDREXCLUSIONCONTROL;
+/*****************************************************************************
+ * IAddrExclusionControl interface
+ */
+#ifndef __IAddrExclusionControl_INTERFACE_DEFINED__
+#define __IAddrExclusionControl_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IAddrExclusionControl, 0x00000148, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IAddrExclusionControl : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetCurrentAddrExclusionList(
+        REFIID riid,
+        void **ppEnumerator) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UpdateAddrExclusionList(
+        IUnknown *pEnumerator) = 0;
+
+};
+#else
+typedef struct IAddrExclusionControlVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IAddrExclusionControl* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IAddrExclusionControl* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IAddrExclusionControl* This);
+
+    /*** IAddrExclusionControl methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetCurrentAddrExclusionList)(
+        IAddrExclusionControl* This,
+        REFIID riid,
+        void **ppEnumerator);
+
+    HRESULT (STDMETHODCALLTYPE *UpdateAddrExclusionList)(
+        IAddrExclusionControl* This,
+        IUnknown *pEnumerator);
+
+    END_INTERFACE
+} IAddrExclusionControlVtbl;
+interface IAddrExclusionControl {
+    CONST_VTBL IAddrExclusionControlVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IAddrExclusionControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAddrExclusionControl_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAddrExclusionControl_Release(This) (This)->lpVtbl->Release(This)
+/*** IAddrExclusionControl methods ***/
+#define IAddrExclusionControl_GetCurrentAddrExclusionList(This,riid,ppEnumerator) (This)->lpVtbl->GetCurrentAddrExclusionList(This,riid,ppEnumerator)
+#define IAddrExclusionControl_UpdateAddrExclusionList(This,pEnumerator) (This)->lpVtbl->UpdateAddrExclusionList(This,pEnumerator)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IAddrExclusionControl_GetCurrentAddrExclusionList_Proxy(
+    IAddrExclusionControl* This,
+    REFIID riid,
+    void **ppEnumerator);
+void __RPC_STUB IAddrExclusionControl_GetCurrentAddrExclusionList_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IAddrExclusionControl_UpdateAddrExclusionList_Proxy(
+    IAddrExclusionControl* This,
+    IUnknown *pEnumerator);
+void __RPC_STUB IAddrExclusionControl_UpdateAddrExclusionList_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IAddrExclusionControl_INTERFACE_DEFINED__ */
+
+typedef enum _APTTYPE {
+    APTTYPE_CURRENT = -1,
+    APTTYPE_STA = 0,
+    APTTYPE_MTA = 1,
+    APTTYPE_NA = 2,
+    APTTYPE_MAINSTA = 3
+} APTTYPE;
+typedef enum _THDTYPE {
+    THDTYPE_BLOCKMESSAGES = 0,
+    THDTYPE_PROCESSMESSAGES = 1
+} THDTYPE;
+#ifndef __IComThreadingInfo_FWD_DEFINED__
+#define __IComThreadingInfo_FWD_DEFINED__
+typedef interface IComThreadingInfo IComThreadingInfo;
+#endif
+
+/*****************************************************************************
+ * IComThreadingInfo interface
+ */
+#ifndef __IComThreadingInfo_INTERFACE_DEFINED__
+#define __IComThreadingInfo_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IComThreadingInfo, 0x000001ce, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IComThreadingInfo : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetCurrentApartmentType(
+        APTTYPE *pAptType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCurrentThreadType(
+        THDTYPE *pThreadType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCurrentLogicalThreadId(
+        GUID *pguidLogicalThreadId) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetCurrentLogicalThreadId(
+        REFGUID rguid) = 0;
+
+};
+#else
+typedef struct IComThreadingInfoVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IComThreadingInfo* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IComThreadingInfo* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IComThreadingInfo* This);
+
+    /*** IComThreadingInfo methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetCurrentApartmentType)(
+        IComThreadingInfo* This,
+        APTTYPE *pAptType);
+
+    HRESULT (STDMETHODCALLTYPE *GetCurrentThreadType)(
+        IComThreadingInfo* This,
+        THDTYPE *pThreadType);
+
+    HRESULT (STDMETHODCALLTYPE *GetCurrentLogicalThreadId)(
+        IComThreadingInfo* This,
+        GUID *pguidLogicalThreadId);
+
+    HRESULT (STDMETHODCALLTYPE *SetCurrentLogicalThreadId)(
+        IComThreadingInfo* This,
+        REFGUID rguid);
+
+    END_INTERFACE
+} IComThreadingInfoVtbl;
+interface IComThreadingInfo {
+    CONST_VTBL IComThreadingInfoVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IComThreadingInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IComThreadingInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IComThreadingInfo_Release(This) (This)->lpVtbl->Release(This)
+/*** IComThreadingInfo methods ***/
+#define IComThreadingInfo_GetCurrentApartmentType(This,pAptType) (This)->lpVtbl->GetCurrentApartmentType(This,pAptType)
+#define IComThreadingInfo_GetCurrentThreadType(This,pThreadType) (This)->lpVtbl->GetCurrentThreadType(This,pThreadType)
+#define IComThreadingInfo_GetCurrentLogicalThreadId(This,pguidLogicalThreadId) (This)->lpVtbl->GetCurrentLogicalThreadId(This,pguidLogicalThreadId)
+#define IComThreadingInfo_SetCurrentLogicalThreadId(This,rguid) (This)->lpVtbl->SetCurrentLogicalThreadId(This,rguid)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IComThreadingInfo_GetCurrentApartmentType_Proxy(
+    IComThreadingInfo* This,
+    APTTYPE *pAptType);
+void __RPC_STUB IComThreadingInfo_GetCurrentApartmentType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComThreadingInfo_GetCurrentThreadType_Proxy(
+    IComThreadingInfo* This,
+    THDTYPE *pThreadType);
+void __RPC_STUB IComThreadingInfo_GetCurrentThreadType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComThreadingInfo_GetCurrentLogicalThreadId_Proxy(
+    IComThreadingInfo* This,
+    GUID *pguidLogicalThreadId);
+void __RPC_STUB IComThreadingInfo_GetCurrentLogicalThreadId_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IComThreadingInfo_SetCurrentLogicalThreadId_Proxy(
+    IComThreadingInfo* This,
+    REFGUID rguid);
+void __RPC_STUB IComThreadingInfo_SetCurrentLogicalThreadId_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IComThreadingInfo_INTERFACE_DEFINED__ */
+
+#ifndef __IProcessInitControl_FWD_DEFINED__
+#define __IProcessInitControl_FWD_DEFINED__
+typedef interface IProcessInitControl IProcessInitControl;
+#endif
+
+/*****************************************************************************
+ * IProcessInitControl interface
+ */
+#ifndef __IProcessInitControl_INTERFACE_DEFINED__
+#define __IProcessInitControl_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IProcessInitControl, 0x72380d55, 0x8d2b, 0x43a3, 0x85,0x13, 0x2b,0x6e,0xf3,0x14,0x34,0xe9);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IProcessInitControl : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE ResetInitializerTimeout(
+        DWORD dwSecondsRemaining) = 0;
+
+};
+#else
+typedef struct IProcessInitControlVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IProcessInitControl* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IProcessInitControl* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IProcessInitControl* This);
+
+    /*** IProcessInitControl methods ***/
+    HRESULT (STDMETHODCALLTYPE *ResetInitializerTimeout)(
+        IProcessInitControl* This,
+        DWORD dwSecondsRemaining);
+
+    END_INTERFACE
+} IProcessInitControlVtbl;
+interface IProcessInitControl {
+    CONST_VTBL IProcessInitControlVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IProcessInitControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IProcessInitControl_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IProcessInitControl_Release(This) (This)->lpVtbl->Release(This)
+/*** IProcessInitControl methods ***/
+#define IProcessInitControl_ResetInitializerTimeout(This,dwSecondsRemaining) (This)->lpVtbl->ResetInitializerTimeout(This,dwSecondsRemaining)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IProcessInitControl_ResetInitializerTimeout_Proxy(
+    IProcessInitControl* This,
+    DWORD dwSecondsRemaining);
+void __RPC_STUB IProcessInitControl_ResetInitializerTimeout_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IProcessInitControl_INTERFACE_DEFINED__ */
+
+#ifndef __IInitializeSpy_FWD_DEFINED__
+#define __IInitializeSpy_FWD_DEFINED__
+typedef interface IInitializeSpy IInitializeSpy;
+#endif
+
+typedef IInitializeSpy *LPINITIALIZESPY;
+/*****************************************************************************
+ * IInitializeSpy interface
+ */
+#ifndef __IInitializeSpy_INTERFACE_DEFINED__
+#define __IInitializeSpy_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInitializeSpy, 0x00000034, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IInitializeSpy : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE PreInitialize(
+        DWORD dwCoInit,
+        DWORD dwCurThreadAptRefs) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PostInitialize(
+        HRESULT hrCoInit,
+        DWORD dwCoInit,
+        DWORD dwNewThreadAptRefs) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PreUninitialize(
+        DWORD dwCurThreadAptRefs) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PostUninitialize(
+        DWORD dwNewThreadAptRefs) = 0;
+
+};
+#else
+typedef struct IInitializeSpyVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInitializeSpy* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInitializeSpy* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInitializeSpy* This);
+
+    /*** IInitializeSpy methods ***/
+    HRESULT (STDMETHODCALLTYPE *PreInitialize)(
+        IInitializeSpy* This,
+        DWORD dwCoInit,
+        DWORD dwCurThreadAptRefs);
+
+    HRESULT (STDMETHODCALLTYPE *PostInitialize)(
+        IInitializeSpy* This,
+        HRESULT hrCoInit,
+        DWORD dwCoInit,
+        DWORD dwNewThreadAptRefs);
+
+    HRESULT (STDMETHODCALLTYPE *PreUninitialize)(
+        IInitializeSpy* This,
+        DWORD dwCurThreadAptRefs);
+
+    HRESULT (STDMETHODCALLTYPE *PostUninitialize)(
+        IInitializeSpy* This,
+        DWORD dwNewThreadAptRefs);
+
+    END_INTERFACE
+} IInitializeSpyVtbl;
+interface IInitializeSpy {
+    CONST_VTBL IInitializeSpyVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IInitializeSpy_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInitializeSpy_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInitializeSpy_Release(This) (This)->lpVtbl->Release(This)
+/*** IInitializeSpy methods ***/
+#define IInitializeSpy_PreInitialize(This,dwCoInit,dwCurThreadAptRefs) (This)->lpVtbl->PreInitialize(This,dwCoInit,dwCurThreadAptRefs)
+#define IInitializeSpy_PostInitialize(This,hrCoInit,dwCoInit,dwNewThreadAptRefs) (This)->lpVtbl->PostInitialize(This,hrCoInit,dwCoInit,dwNewThreadAptRefs)
+#define IInitializeSpy_PreUninitialize(This,dwCurThreadAptRefs) (This)->lpVtbl->PreUninitialize(This,dwCurThreadAptRefs)
+#define IInitializeSpy_PostUninitialize(This,dwNewThreadAptRefs) (This)->lpVtbl->PostUninitialize(This,dwNewThreadAptRefs)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInitializeSpy_PreInitialize_Proxy(
+    IInitializeSpy* This,
+    DWORD dwCoInit,
+    DWORD dwCurThreadAptRefs);
+void __RPC_STUB IInitializeSpy_PreInitialize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInitializeSpy_PostInitialize_Proxy(
+    IInitializeSpy* This,
+    HRESULT hrCoInit,
+    DWORD dwCoInit,
+    DWORD dwNewThreadAptRefs);
+void __RPC_STUB IInitializeSpy_PostInitialize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInitializeSpy_PreUninitialize_Proxy(
+    IInitializeSpy* This,
+    DWORD dwCurThreadAptRefs);
+void __RPC_STUB IInitializeSpy_PreUninitialize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInitializeSpy_PostUninitialize_Proxy(
+    IInitializeSpy* This,
+    DWORD dwNewThreadAptRefs);
+void __RPC_STUB IInitializeSpy_PostUninitialize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInitializeSpy_INTERFACE_DEFINED__ */
+
+#ifndef __IThumbnailExtractor_FWD_DEFINED__
+#define __IThumbnailExtractor_FWD_DEFINED__
+typedef interface IThumbnailExtractor IThumbnailExtractor;
+#endif
+
+/*****************************************************************************
+ * IThumbnailExtractor interface
+ */
+#ifndef __IThumbnailExtractor_INTERFACE_DEFINED__
+#define __IThumbnailExtractor_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IThumbnailExtractor, 0x969dc708, 0x5c76, 0x11d1, 0x8d,0x86, 0x00,0x00,0xf8,0x04,0xb0,0x57);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IThumbnailExtractor : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE ExtractThumbnail(
+        IStorage *pStg,
+        ULONG ulLength,
+        ULONG ulHeight,
+        ULONG *pulOutputLength,
+        ULONG *pulOutputHeight,
+        HBITMAP *phOutputBitmap) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnFileUpdated(
+        IStorage *pStg) = 0;
+
+};
+#else
+typedef struct IThumbnailExtractorVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IThumbnailExtractor* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IThumbnailExtractor* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IThumbnailExtractor* This);
+
+    /*** IThumbnailExtractor methods ***/
+    HRESULT (STDMETHODCALLTYPE *ExtractThumbnail)(
+        IThumbnailExtractor* This,
+        IStorage *pStg,
+        ULONG ulLength,
+        ULONG ulHeight,
+        ULONG *pulOutputLength,
+        ULONG *pulOutputHeight,
+        HBITMAP *phOutputBitmap);
+
+    HRESULT (STDMETHODCALLTYPE *OnFileUpdated)(
+        IThumbnailExtractor* This,
+        IStorage *pStg);
+
+    END_INTERFACE
+} IThumbnailExtractorVtbl;
+interface IThumbnailExtractor {
+    CONST_VTBL IThumbnailExtractorVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IThumbnailExtractor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IThumbnailExtractor_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IThumbnailExtractor_Release(This) (This)->lpVtbl->Release(This)
+/*** IThumbnailExtractor methods ***/
+#define IThumbnailExtractor_ExtractThumbnail(This,pStg,ulLength,ulHeight,pulOutputLength,pulOutputHeight,phOutputBitmap) (This)->lpVtbl->ExtractThumbnail(This,pStg,ulLength,ulHeight,pulOutputLength,pulOutputHeight,phOutputBitmap)
+#define IThumbnailExtractor_OnFileUpdated(This,pStg) (This)->lpVtbl->OnFileUpdated(This,pStg)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IThumbnailExtractor_ExtractThumbnail_Proxy(
+    IThumbnailExtractor* This,
+    IStorage *pStg,
+    ULONG ulLength,
+    ULONG ulHeight,
+    ULONG *pulOutputLength,
+    ULONG *pulOutputHeight,
+    HBITMAP *phOutputBitmap);
+void __RPC_STUB IThumbnailExtractor_ExtractThumbnail_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IThumbnailExtractor_OnFileUpdated_Proxy(
+    IThumbnailExtractor* This,
+    IStorage *pStg);
+void __RPC_STUB IThumbnailExtractor_OnFileUpdated_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IThumbnailExtractor_INTERFACE_DEFINED__ */
+
+#ifdef USE_COM_CONTEXT_DEF
+typedef DWORD CPFLAGS;
+typedef struct tagContextProperty {
+    GUID policyId;
+    CPFLAGS flags;
+    IUnknown *pUnk;
+} ContextProperty;
+#ifndef __IEnumContextProps_FWD_DEFINED__
+#define __IEnumContextProps_FWD_DEFINED__
+typedef interface IEnumContextProps IEnumContextProps;
+#endif
+
+typedef IEnumContextProps *LPENUMCONTEXTPROPS;
+/*****************************************************************************
+ * IEnumContextProps interface
+ */
+#ifndef __IEnumContextProps_INTERFACE_DEFINED__
+#define __IEnumContextProps_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IEnumContextProps, 0x000001c1, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IEnumContextProps : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Next(
+        ULONG celt,
+        ContextProperty *pContextProperties,
+        ULONG *pceltFetched) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Skip(
+        ULONG celt) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IEnumContextProps **ppEnumContextProps) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Count(
+        ULONG *pcelt) = 0;
+
+};
+#else
+typedef struct IEnumContextPropsVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IEnumContextProps* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IEnumContextProps* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IEnumContextProps* This);
+
+    /*** IEnumContextProps methods ***/
+    HRESULT (STDMETHODCALLTYPE *Next)(
+        IEnumContextProps* This,
+        ULONG celt,
+        ContextProperty *pContextProperties,
+        ULONG *pceltFetched);
+
+    HRESULT (STDMETHODCALLTYPE *Skip)(
+        IEnumContextProps* This,
+        ULONG celt);
+
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        IEnumContextProps* This);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IEnumContextProps* This,
+        IEnumContextProps **ppEnumContextProps);
+
+    HRESULT (STDMETHODCALLTYPE *Count)(
+        IEnumContextProps* This,
+        ULONG *pcelt);
+
+    END_INTERFACE
+} IEnumContextPropsVtbl;
+interface IEnumContextProps {
+    CONST_VTBL IEnumContextPropsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IEnumContextProps_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumContextProps_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumContextProps_Release(This) (This)->lpVtbl->Release(This)
+/*** IEnumContextProps methods ***/
+#define IEnumContextProps_Next(This,celt,pContextProperties,pceltFetched) (This)->lpVtbl->Next(This,celt,pContextProperties,pceltFetched)
+#define IEnumContextProps_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumContextProps_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumContextProps_Clone(This,ppEnumContextProps) (This)->lpVtbl->Clone(This,ppEnumContextProps)
+#define IEnumContextProps_Count(This,pcelt) (This)->lpVtbl->Count(This,pcelt)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IEnumContextProps_Next_Proxy(
+    IEnumContextProps* This,
+    ULONG celt,
+    ContextProperty *pContextProperties,
+    ULONG *pceltFetched);
+void __RPC_STUB IEnumContextProps_Next_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumContextProps_Skip_Proxy(
+    IEnumContextProps* This,
+    ULONG celt);
+void __RPC_STUB IEnumContextProps_Skip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumContextProps_Reset_Proxy(
+    IEnumContextProps* This);
+void __RPC_STUB IEnumContextProps_Reset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumContextProps_Clone_Proxy(
+    IEnumContextProps* This,
+    IEnumContextProps **ppEnumContextProps);
+void __RPC_STUB IEnumContextProps_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumContextProps_Count_Proxy(
+    IEnumContextProps* This,
+    ULONG *pcelt);
+void __RPC_STUB IEnumContextProps_Count_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IEnumContextProps_INTERFACE_DEFINED__ */
+
+#ifndef __IContext_FWD_DEFINED__
+#define __IContext_FWD_DEFINED__
+typedef interface IContext IContext;
+#endif
+
+/*****************************************************************************
+ * IContext interface
+ */
+#ifndef __IContext_INTERFACE_DEFINED__
+#define __IContext_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IContext, 0x000001c0, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IContext : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SetProperty(
+        REFGUID policyId,
+        CPFLAGS flags,
+        IUnknown *pUnk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RemovePropert(
+        REFGUID policyId) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetProperty(
+        REFGUID guid,
+        CPFLAGS *pFlags,
+        IUnknown **ppUnk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumContextProps(
+        IEnumContextProps **ppEnumContextProps) = 0;
+
+};
+#else
+typedef struct IContextVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IContext* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IContext* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IContext* This);
+
+    /*** IContext methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetProperty)(
+        IContext* This,
+        REFGUID policyId,
+        CPFLAGS flags,
+        IUnknown *pUnk);
+
+    HRESULT (STDMETHODCALLTYPE *RemovePropert)(
+        IContext* This,
+        REFGUID policyId);
+
+    HRESULT (STDMETHODCALLTYPE *GetProperty)(
+        IContext* This,
+        REFGUID guid,
+        CPFLAGS *pFlags,
+        IUnknown **ppUnk);
+
+    HRESULT (STDMETHODCALLTYPE *EnumContextProps)(
+        IContext* This,
+        IEnumContextProps **ppEnumContextProps);
+
+    END_INTERFACE
+} IContextVtbl;
+interface IContext {
+    CONST_VTBL IContextVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IContext_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IContext_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IContext_Release(This) (This)->lpVtbl->Release(This)
+/*** IContext methods ***/
+#define IContext_SetProperty(This,policyId,flags,pUnk) (This)->lpVtbl->SetProperty(This,policyId,flags,pUnk)
+#define IContext_RemovePropert(This,policyId) (This)->lpVtbl->RemovePropert(This,policyId)
+#define IContext_GetProperty(This,guid,pFlags,ppUnk) (This)->lpVtbl->GetProperty(This,guid,pFlags,ppUnk)
+#define IContext_EnumContextProps(This,ppEnumContextProps) (This)->lpVtbl->EnumContextProps(This,ppEnumContextProps)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IContext_SetProperty_Proxy(
+    IContext* This,
+    REFGUID policyId,
+    CPFLAGS flags,
+    IUnknown *pUnk);
+void __RPC_STUB IContext_SetProperty_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IContext_RemovePropert_Proxy(
+    IContext* This,
+    REFGUID policyId);
+void __RPC_STUB IContext_RemovePropert_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IContext_GetProperty_Proxy(
+    IContext* This,
+    REFGUID guid,
+    CPFLAGS *pFlags,
+    IUnknown **ppUnk);
+void __RPC_STUB IContext_GetProperty_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IContext_EnumContextProps_Proxy(
+    IContext* This,
+    IEnumContextProps **ppEnumContextProps);
+void __RPC_STUB IContext_EnumContextProps_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IContext_INTERFACE_DEFINED__ */
+
+#endif /* defined USE_COM_CONTEXT_DEF */
+/* Begin additional prototypes for all interfaces */
+
+ULONG           __RPC_USER SNB_UserSize     (ULONG *, ULONG, SNB *);
+unsigned char * __RPC_USER SNB_UserMarshal  (ULONG *, unsigned char *, SNB *);
+unsigned char * __RPC_USER SNB_UserUnmarshal(ULONG *, unsigned char *, SNB *);
+void            __RPC_USER SNB_UserFree     (ULONG *, SNB *);
+ULONG           __RPC_USER CLIPFORMAT_UserSize     (ULONG *, ULONG, CLIPFORMAT *);
+unsigned char * __RPC_USER CLIPFORMAT_UserMarshal  (ULONG *, unsigned char *, CLIPFORMAT *);
+unsigned char * __RPC_USER CLIPFORMAT_UserUnmarshal(ULONG *, unsigned char *, CLIPFORMAT *);
+void            __RPC_USER CLIPFORMAT_UserFree     (ULONG *, CLIPFORMAT *);
+ULONG           __RPC_USER STGMEDIUM_UserSize     (ULONG *, ULONG, STGMEDIUM *);
+unsigned char * __RPC_USER STGMEDIUM_UserMarshal  (ULONG *, unsigned char *, STGMEDIUM *);
+unsigned char * __RPC_USER STGMEDIUM_UserUnmarshal(ULONG *, unsigned char *, STGMEDIUM *);
+void            __RPC_USER STGMEDIUM_UserFree     (ULONG *, STGMEDIUM *);
+ULONG           __RPC_USER ASYNC_STGMEDIUM_UserSize     (ULONG *, ULONG, ASYNC_STGMEDIUM *);
+unsigned char * __RPC_USER ASYNC_STGMEDIUM_UserMarshal  (ULONG *, unsigned char *, ASYNC_STGMEDIUM *);
+unsigned char * __RPC_USER ASYNC_STGMEDIUM_UserUnmarshal(ULONG *, unsigned char *, ASYNC_STGMEDIUM *);
+void            __RPC_USER ASYNC_STGMEDIUM_UserFree     (ULONG *, ASYNC_STGMEDIUM *);
+ULONG           __RPC_USER HBITMAP_UserSize     (ULONG *, ULONG, HBITMAP *);
+unsigned char * __RPC_USER HBITMAP_UserMarshal  (ULONG *, unsigned char *, HBITMAP *);
+unsigned char * __RPC_USER HBITMAP_UserUnmarshal(ULONG *, unsigned char *, HBITMAP *);
+void            __RPC_USER HBITMAP_UserFree     (ULONG *, HBITMAP *);
+ULONG           __RPC_USER HMETAFILEPICT_UserSize     (ULONG *, ULONG, HMETAFILEPICT *);
+unsigned char * __RPC_USER HMETAFILEPICT_UserMarshal  (ULONG *, unsigned char *, HMETAFILEPICT *);
+unsigned char * __RPC_USER HMETAFILEPICT_UserUnmarshal(ULONG *, unsigned char *, HMETAFILEPICT *);
+void            __RPC_USER HMETAFILEPICT_UserFree     (ULONG *, HMETAFILEPICT *);
+ULONG           __RPC_USER HENHMETAFILE_UserSize     (ULONG *, ULONG, HENHMETAFILE *);
+unsigned char * __RPC_USER HENHMETAFILE_UserMarshal  (ULONG *, unsigned char *, HENHMETAFILE *);
+unsigned char * __RPC_USER HENHMETAFILE_UserUnmarshal(ULONG *, unsigned char *, HENHMETAFILE *);
+void            __RPC_USER HENHMETAFILE_UserFree     (ULONG *, HENHMETAFILE *);
+ULONG           __RPC_USER HGLOBAL_UserSize     (ULONG *, ULONG, HGLOBAL *);
+unsigned char * __RPC_USER HGLOBAL_UserMarshal  (ULONG *, unsigned char *, HGLOBAL *);
+unsigned char * __RPC_USER HGLOBAL_UserUnmarshal(ULONG *, unsigned char *, HGLOBAL *);
+void            __RPC_USER HGLOBAL_UserFree     (ULONG *, HGLOBAL *);
+ULONG           __RPC_USER FLAG_STGMEDIUM_UserSize     (ULONG *, ULONG, FLAG_STGMEDIUM *);
+unsigned char * __RPC_USER FLAG_STGMEDIUM_UserMarshal  (ULONG *, unsigned char *, FLAG_STGMEDIUM *);
+unsigned char * __RPC_USER FLAG_STGMEDIUM_UserUnmarshal(ULONG *, unsigned char *, FLAG_STGMEDIUM *);
+void            __RPC_USER FLAG_STGMEDIUM_UserFree     (ULONG *, FLAG_STGMEDIUM *);
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WIDL_OBJIDL_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/objidl.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/objidl.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/objidl.idl	(revision 16410)
@@ -0,0 +1,2457 @@
+/*
+ * Copyright 2002 Ove Kaaven
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef DO_NO_IMPORTS
+import "unknwn.idl";
+#endif
+
+interface IStream;
+interface IEnumString;
+interface IRunningObjectTable;
+interface IMoniker;
+interface IAdviseSink;
+interface IAsyncManager;
+interface ISynchronize;
+
+typedef struct _COSERVERINFO {
+  DWORD dwReserved1;
+  LPWSTR pwszName;
+  COAUTHINFO *pAuthInfo;
+  DWORD dwReserved2;
+} COSERVERINFO;
+
+/******************** Fundamentals ********************/
+
+[
+  local,
+  object,
+  uuid(00000003-0000-0000-C000-000000000046)
+]
+interface IMarshal : IUnknown
+{
+  typedef [unique] IMarshal *LPMARSHAL;
+
+  HRESULT GetUnmarshalClass(
+    [in] REFIID riid,
+    [in, unique] void *pv,
+    [in] DWORD dwDestContext,
+    [in, unique] void *pvDestContext,
+    [in] DWORD mshlflags,
+    [out] CLSID *pCid);
+
+  HRESULT GetMarshalSizeMax(
+    [in] REFIID riid,
+    [in, unique] void *pv,
+    [in] DWORD dwDestContext,
+    [in, unique] void *pvDestContext,
+    [in] DWORD mshlflags,
+    [out] DWORD *pSize);
+
+  HRESULT MarshalInterface(
+    [in, unique] IStream *pStm,
+    [in] REFIID riid,
+    [in, unique] void *pv,
+    [in] DWORD dwDestContext,
+    [in, unique] void *pvDestContext,
+    [in] DWORD mshlflags);
+
+  HRESULT UnmarshalInterface(
+    [in, unique] IStream *pStm,
+    [in] REFIID riid,
+    [out] void **ppv);
+
+  HRESULT ReleaseMarshalData(
+    [in, unique] IStream *pStm);
+
+  HRESULT DisconnectObject(
+    [in] DWORD dwReserved);
+}
+
+[
+    local,
+    object,
+    uuid(000001cf-0000-0000-C000-000000000046)
+]
+interface IMarshal2 : IMarshal
+{
+    typedef [unique] IMarshal2 *LPMARSHAL2;
+}
+
+[
+  local,
+  object,
+  uuid(00000018-0000-0000-C000-000000000046)
+]
+interface IStdMarshalInfo : IUnknown
+{
+  typedef [unique] IStdMarshalInfo *LPSTDMARSHALINFO;
+
+  HRESULT GetClassForHandler(
+    [in] DWORD dwDestContext,
+    [in, unique] void *pvDestContext,
+    [out] CLSID *pClsid);
+}
+
+[
+  local,
+  object,
+  uuid(00000019-0000-0000-C000-000000000046)
+]
+interface IExternalConnection : IUnknown
+{
+  typedef [unique] IExternalConnection *LPEXTERNALCONNECTION;
+
+  typedef enum tagEXTCONN {
+    EXTCONN_STRONG   = 0x0001,
+    EXTCONN_WEAK     = 0x0002,
+    EXTCONN_CALLABLE = 0x0004
+  } EXTCONN;
+
+  DWORD AddConnection(
+    [in] DWORD extconn,
+    [in] DWORD reserved);
+
+  DWORD ReleaseConnection(
+    [in] DWORD extconn,
+    [in] DWORD reserved,
+    [in] BOOL fLastReleaseCloses);
+}
+
+[
+  local,
+  object,
+  uuid(00000020-0000-0000-C000-000000000046)
+]
+interface IMultiQI : IUnknown
+{
+  typedef [unique] IMultiQI *LPMULTIQI;
+
+  typedef struct tagMULTI_QI {
+    const IID *pIID;
+    IUnknown *pItf;
+    HRESULT hr;
+  } MULTI_QI;
+
+  HRESULT QueryMultipleInterfaces(
+    [in] ULONG cMQIs,
+    [in, out] MULTI_QI *pMQIs);
+}
+
+[
+  local,
+  object,
+  uuid(00000002-0000-0000-C000-000000000046)
+]
+interface IMalloc : IUnknown
+{
+  typedef [unique] IMalloc *LPMALLOC;
+
+  LPVOID Alloc(
+    [in] ULONG cb);
+
+  LPVOID Realloc(
+    [in] LPVOID pv,
+    [in] ULONG cb);
+
+  void Free(
+    [in] LPVOID pv);
+
+  ULONG GetSize(
+    [in] LPVOID pv);
+
+  int DidAlloc(LPVOID pv);
+
+  void HeapMinimize();
+}
+
+[
+  local,
+  object,
+  uuid(0000001d-0000-0000-C000-000000000046)
+]
+interface IMallocSpy : IUnknown
+{
+  typedef [unique] IMallocSpy *LPMALLOCSPY;
+
+  ULONG PreAlloc(
+    [in] ULONG cbRequest);
+
+  LPVOID PostAlloc(
+    [in] LPVOID pActual);
+
+  LPVOID PreFree(
+    [in] LPVOID pRequest,
+    [in] BOOL fSpyed);
+
+  void PostFree(
+    [in] BOOL fSpyed);
+
+  ULONG PreRealloc(
+    [in] LPVOID pRequest,
+    [in] ULONG cbRequest,
+    [out] LPVOID *ppNewRequest,
+    [in] BOOL fSpyed);
+
+  LPVOID PostRealloc(
+    [in] LPVOID pActual,
+    [in] BOOL fSpyed);
+
+  LPVOID PreGetSize(
+    [in] LPVOID pRequest,
+    [in] BOOL fSpyed);
+
+  ULONG PostGetSize(
+    [in] ULONG cbActual,
+    [in] BOOL fSpyed);
+
+  LPVOID PreDidAlloc(
+    [in] LPVOID pRequest,
+    [in] BOOL fSpyed);
+
+  int PostDidAlloc(
+    [in] LPVOID pRequest,
+    [in] BOOL fSpyed,
+    [in] int fActual);
+
+  void PreHeapMinimize();
+
+  void PostHeapMinimize();
+}
+
+[
+  local,
+  object,
+  uuid(00000021-0000-0000-C000-000000000046)
+]
+interface IInternalUnknown : IUnknown
+{
+  HRESULT QueryInternalInterface(
+    [in] REFIID riid,
+    [out] void **ppv);
+}
+
+[
+  object,
+  uuid(00000100-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface IEnumUnknown : IUnknown
+{
+  typedef [unique] IEnumUnknown *LPENUMUNKNOWN;
+
+  [local]
+  HRESULT Next(
+    [in] ULONG celt,
+    [out] IUnknown **rgelt,
+    [out] ULONG *pceltFetched);
+
+  [call_as(Next)]
+  HRESULT RemoteNext(
+    [in] ULONG celt,
+    [out, size_is(celt), length_is(*pceltFetched)]
+    IUnknown **rgelt,
+    [out] ULONG *pceltFetched);
+
+  HRESULT Skip(
+    [in] ULONG celt);
+
+  HRESULT Reset();
+
+  HRESULT Clone(
+    [out] IEnumUnknown **ppenum);
+}
+
+[
+  object,
+  uuid(00000022-0000-0000-C000-000000000046),
+  version(1.0),
+  pointer_default(unique)
+]
+interface ISurrogate : IUnknown
+{
+  typedef [unique] ISurrogate *LPSURROGATE;
+
+  HRESULT LoadDllServer(
+    [in] REFCLSID Clsid);
+  HRESULT FreeSurrogate();
+}
+
+[
+  local,
+  object,
+  uuid(00000146-0000-0000-C000-000000000046)
+]
+interface IGlobalInterfaceTable : IUnknown
+{
+  typedef [unique] IGlobalInterfaceTable *LPGLOBALINTERFACETABLE;
+
+  HRESULT RegisterInterfaceInGlobal(
+    [in] IUnknown *pUnk,
+    [in] REFIID riid,
+    [out] DWORD *pdwCookie);
+
+  HRESULT RevokeInterfaceFromGlobal(
+    [in] DWORD dwCookie);
+
+  HRESULT GetInterfaceFromGlobal(
+    [in] DWORD dwCookie,
+    [in] REFIID riid,
+    [out, iid_is(riid)] void **ppv);
+}
+
+/******************** Monikers ********************/
+
+[
+  object,
+  uuid(0000000e-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface IBindCtx : IUnknown
+{
+  typedef [unique] IBindCtx *LPBINDCTX;
+  typedef [unique] IBindCtx *LPBC;
+
+  typedef struct tagBIND_OPTS {
+    DWORD cbStruct;
+    DWORD grfFlags;
+    DWORD grfMode;
+    DWORD dwTickCountDeadline;
+  } BIND_OPTS, *LPBIND_OPTS;
+
+  /* FIXME: C++ crap */
+  typedef struct tagBIND_OPTS2 {
+    DWORD cbStruct;
+    DWORD grfFlags;
+    DWORD grfMode;
+    DWORD dwTickCountDeadline;
+    DWORD dwTrackFlags;
+    DWORD dwClassContext;
+    LCID  locale;
+    COSERVERINFO *pServerInfo;
+  } BIND_OPTS2, *LPBIND_OPTS2;
+
+  typedef enum tagBIND_FLAGS {
+    BIND_MAYBOTHERUSER   = 1,
+    BIND_JUSTTESTEXISTENCE = 2
+  } BIND_FLAGS;
+
+  HRESULT RegisterObjectBound(
+    [in, unique] IUnknown *punk);
+
+  HRESULT RevokeObjectBound(
+    [in, unique] IUnknown *punk);
+
+  HRESULT ReleaseBoundObjects();
+
+  [local]
+  HRESULT SetBindOptions(
+    [in] BIND_OPTS *pbindopts);
+
+  [call_as(SetBindOptions)]
+  HRESULT RemoteSetBindOptions(
+    [in] BIND_OPTS2 *pbindopts);
+
+  [local]
+  HRESULT GetBindOptions(
+    [in, out] BIND_OPTS *pbindopts);
+
+  [call_as(GetBindOptions)]
+  HRESULT RemoteGetBindOptions(
+    [in, out] BIND_OPTS2 *pbindopts);
+
+  HRESULT GetRunningObjectTable(
+    [out] IRunningObjectTable **pprot);
+
+  HRESULT RegisterObjectParam(
+    [in] LPOLESTR pszKey,
+    [in, unique] IUnknown *punk);
+
+  HRESULT GetObjectParam(
+    [in] LPOLESTR pszKey,
+    [out] IUnknown **ppunk);
+
+  HRESULT EnumObjectParam(
+    [out] IEnumString **ppenum);
+
+  HRESULT RevokeObjectParam(
+    [in] LPOLESTR pszKey);
+}
+
+[
+  object,
+  uuid(00000102-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface IEnumMoniker : IUnknown
+{
+  typedef [unique] IEnumMoniker *LPENUMMONIKER;
+
+  [local]
+  HRESULT Next(
+    [in] ULONG celt,
+    [out, size_is(celt), length_is(*pceltFetched)]
+    IMoniker **rgelt,
+    [out] ULONG *pceltFetched);
+
+  [call_as(Next)]
+  HRESULT RemoteNext(
+    [in] ULONG celt,
+    [out, size_is(celt), length_is(*pceltFetched)]
+    IMoniker **rgelt,
+    [out] ULONG *pceltFetched);
+
+  HRESULT Skip(
+    [in] ULONG celt);
+
+  HRESULT Reset();
+
+  HRESULT Clone(
+    [out] IEnumMoniker **ppenum);
+}
+
+[
+  object,
+  uuid(00000126-0000-0000-C000-000000000046)
+]
+interface IRunnableObject : IUnknown
+{
+  typedef [unique] IRunnableObject *LPRUNNABLEOBJECT;
+
+  HRESULT GetRunningClass(
+    [out] LPCLSID lpClsid);
+
+  HRESULT Run(
+    [in] LPBINDCTX pbc);
+
+  [local]
+  BOOL IsRunning();
+
+  [call_as(IsRunning)]
+  HRESULT RemoteIsRunning();
+
+  HRESULT LockRunning(
+    [in] BOOL fLock,
+    [in] BOOL fLastUnlockCloses);
+
+  HRESULT SetContainedObject(
+    [in] BOOL fContained);
+}
+
+/* GetObject is defined in wingdi.h as WINELIB_NAME_AW(GetObject),
+ * which resolves to a compilation failure if WINE_NO_UNICODE_MACROS is defined,
+ * but GetObject is used as a valid method name below, so we have
+ * to undefine it in that case */
+cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
+cpp_quote("#undef GetObject")
+cpp_quote("#endif")
+
+[
+  object,
+  uuid(00000010-0000-0000-C000-000000000046)
+]
+interface IRunningObjectTable : IUnknown
+{
+  typedef [unique] IRunningObjectTable *LPRUNNINGOBJECTTABLE;
+
+  HRESULT Register(
+    [in] DWORD grfFlags,
+    [in, unique] IUnknown *punkObject,
+    [in, unique] IMoniker *pmkObjectName,
+    [out] DWORD *pdwRegister);
+
+  HRESULT Revoke(
+    [in] DWORD dwRegister);
+
+  HRESULT IsRunning(
+    [in, unique] IMoniker *pmkObjectName);
+
+  HRESULT GetObject(
+    [in, unique] IMoniker *pmkObjectName,
+    [out] IUnknown **ppunkObject);
+
+  HRESULT NoteChangeTime(
+    [in] DWORD dwRegister,
+    [in] FILETIME *pfiletime);
+
+  HRESULT GetTimeOfLastChange(
+    [in, unique] IMoniker *pmkObjectName,
+    [out] FILETIME *pfiletime);
+
+  HRESULT EnumRunning(
+    [out] IEnumMoniker **ppenumMoniker);
+}
+
+[
+  object,
+  uuid(0000010c-0000-0000-C000-000000000046)
+]
+interface IPersist : IUnknown
+{
+  typedef [unique] IPersist *LPPERSIST;
+
+  HRESULT GetClassID(
+    [out] CLSID *pClassID);
+}
+
+[
+  object,
+  uuid(00000109-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface IPersistStream : IPersist
+{
+  typedef [unique] IPersistStream *LPPERSISTSTREAM;
+
+  HRESULT IsDirty();
+
+  HRESULT Load(
+    [in, unique] IStream *pStm);
+
+  HRESULT Save(
+    [in, unique] IStream *pStm,
+    [in] BOOL fClearDirty);
+
+  HRESULT GetSizeMax(
+    [out] ULARGE_INTEGER *pcbSize);
+}
+
+[
+  object,
+  uuid(0000000f-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface IMoniker : IPersistStream
+{
+  typedef [unique] IMoniker *LPMONIKER;
+
+  typedef enum tagMKSYS {
+    MKSYS_NONE             = 0,
+    MKSYS_GENERICCOMPOSITE = 1,
+    MKSYS_FILEMONIKER      = 2,
+    MKSYS_ANTIMONIKER      = 3,
+    MKSYS_ITEMMONIKER      = 4,
+    MKSYS_POINTERMONIKER   = 5,
+    /* MKSYS_URLMONIKER       = 6, */ /* defined in urlmon.idl */
+    MKSYS_CLASSMONIKER     = 7
+  } MKSYS;
+
+  typedef [v1_enum] enum tagMKREDUCE {
+    MKRREDUCE_ONE         = 3 << 16,
+    MKRREDUCE_TOUSER      = 2 << 16,
+    MKRREDUCE_THROUGHUSER = 1 << 16,
+    MKRREDUCE_ALL         = 0
+  } MKRREDUCE;
+
+  [local]
+  HRESULT BindToObject(
+    [in, unique] IBindCtx *pbc,
+    [in, unique] IMoniker *pmkToLeft,
+    [in] REFIID riidResult,
+    [out, iid_is(riidResult)] void **ppvResult);
+
+  [call_as(BindToObject)]
+  HRESULT RemoteBindToObject(
+    [in, unique] IBindCtx *pbc,
+    [in, unique] IMoniker *pmkToLeft,
+    [in] REFIID riidResult,
+    [out, iid_is(riidResult)] IUnknown **ppvResult);
+
+  [local]
+  HRESULT BindToStorage(
+    [in, unique] IBindCtx *pbc,
+    [in, unique] IMoniker *pmkToLeft,
+    [in] REFIID riid,
+    [out, iid_is(riid)] void **ppvObj);
+
+  [call_as(BindToStorage)]
+  HRESULT RemoteBindToStorage(
+    [in, unique] IBindCtx *pbc,
+    [in, unique] IMoniker *pmkToLeft,
+    [in] REFIID riid,
+    [out, iid_is(riid)] IUnknown **ppvObj);
+
+  HRESULT Reduce(
+    [in, unique] IBindCtx *pbc,
+    [in] DWORD dwReduceHowFar,
+    [in, out, unique] IMoniker **ppmkToLeft,
+    [out] IMoniker **ppmkReduced);
+
+  HRESULT ComposeWith(
+    [in, unique] IMoniker *pmkRight,
+    [in] BOOL fOnlyIfNotGeneric,
+    [out] IMoniker **ppmkComposite);
+
+  HRESULT Enum(
+    [in] BOOL fForward,
+    [out] IEnumMoniker **ppenumMoniker);
+
+  HRESULT IsEqual(
+    [in, unique] IMoniker *pmkOtherMoniker);
+
+  HRESULT Hash(
+    [out] DWORD *pdwHash);
+
+  HRESULT IsRunning(
+    [in, unique] IBindCtx *pbc,
+    [in, unique] IMoniker *pmkToLeft,
+    [in, unique] IMoniker *pmkNewlyRunning);
+
+  HRESULT GetTimeOfLastChange(
+    [in, unique] IBindCtx *pbc,
+    [in, unique] IMoniker *pmkToLeft,
+    [out] FILETIME *pFileTime);
+
+  HRESULT Inverse(
+    [out] IMoniker **ppmk);
+
+  HRESULT CommonPrefixWith(
+    [in, unique] IMoniker *pmkOther,
+    [out] IMoniker **ppmkPrefix);
+
+  HRESULT RelativePathTo(
+    [in, unique] IMoniker *pmkOther,
+    [out] IMoniker **ppmkRelPath);
+
+  HRESULT GetDisplayName(
+    [in, unique] IBindCtx *pbc,
+    [in, unique] IMoniker *pmkToLeft,
+    [out] LPOLESTR *ppszDisplayName);
+
+  HRESULT ParseDisplayName(
+    [in, unique] IBindCtx *pbc,
+    [in, unique] IMoniker *pmkToLeft,
+    [in] LPOLESTR pszDisplayName,
+    [out] ULONG *pchEaten,
+    [out] IMoniker **ppmkOut);
+
+  HRESULT IsSystemMoniker(
+    [out] DWORD *pdwMksys);
+}
+
+[
+  object,
+  uuid(f29f6bc0-5021-11ce-aa15-00006901293f),
+  pointer_default(unique)
+]
+interface IROTData : IUnknown
+{
+  HRESULT GetComparisonData(
+    [out, size_is(cbMax)] byte *pbData,
+    [in] ULONG cbMax,
+    [out] ULONG *pcbData);
+}
+
+[
+  object,
+  uuid(00000101-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface IEnumString : IUnknown
+{
+  typedef [unique] IEnumString *LPENUMSTRING;
+
+  [local]
+  HRESULT Next(
+    [in] ULONG celt,
+    [out, size_is(celt), length_is(*pceltFetched)]
+    LPOLESTR *rgelt,
+    [out] ULONG *pceltFetched);
+
+  [call_as(Next)]
+  HRESULT RemoteNext(
+    [in] ULONG celt,
+    [out, size_is(celt), length_is(*pceltFetched)]
+    LPOLESTR *rgelt,
+    [out] ULONG *pceltFetched);
+
+  HRESULT Skip(
+    [in] ULONG celt);
+
+  HRESULT Reset();
+
+  HRESULT Clone(
+    [out] IEnumString **ppenum);
+}
+
+[
+  object,
+  uuid(00000140-0000-0000-C000-000000000046)
+]
+interface IClassActivator : IUnknown
+{
+  HRESULT GetClassObject(
+    [in] REFCLSID rclsid,
+    [in] DWORD dwClassContext,
+    [in] LCID locale,
+    [in] REFIID riid,
+    [out, iid_is(riid)] void **ppv);
+}
+
+/******************** Storage ********************/
+
+[
+  object,
+  uuid(0c733a30-2a1c-11ce-ade5-00aa0044773d),
+  pointer_default(unique)
+]
+interface ISequentialStream : IUnknown
+{
+  [local]
+  HRESULT Read(
+    [out, size_is(cb), length_is(*pcbRead)]
+    void *pv,
+    [in] ULONG cb,
+    [out] ULONG *pcbRead);
+
+  [call_as(Read)]
+  HRESULT RemoteRead(
+    [out, size_is(cb), length_is(*pcbRead)]
+    byte *pv,
+    [in] ULONG cb,
+    [out] ULONG *pcbRead);
+
+  [local]
+  HRESULT Write(
+    [in, size_is(cb)] const void *pv,
+    [in] ULONG cb,
+    [out] ULONG *pcbWritten);
+
+  [call_as(Write)]
+  HRESULT RemoteWrite(
+    [in, size_is(cb)] const byte *pv,
+    [in] ULONG cb,
+    [out] ULONG *pcbWritten);
+}
+
+[
+  object,
+  uuid(0000000c-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface IStream : ISequentialStream
+{
+  typedef [unique] IStream *LPSTREAM;
+
+  typedef struct tagSTATSTG {
+    LPOLESTR pwcsName;
+    DWORD type;
+    ULARGE_INTEGER cbSize;
+    FILETIME mtime;
+    FILETIME ctime;
+    FILETIME atime;
+    DWORD grfMode;
+    DWORD grfLocksSupported;
+    CLSID clsid;
+    DWORD grfStateBits;
+    DWORD reserved;
+  } STATSTG;
+
+  typedef enum tagSTGTY {
+    STGTY_STORAGE   = 1,
+    STGTY_STREAM    = 2,
+    STGTY_LOCKBYTES = 3,
+    STGTY_PROPERTY  = 4
+  } STGTY;
+
+  typedef enum tagSTREAM_SEEK {
+    STREAM_SEEK_SET = 0,
+    STREAM_SEEK_CUR = 1,
+    STREAM_SEEK_END = 2
+  } STREAM_SEEK;
+
+  /* these are defined in Linux's fcntl.h,
+   * undefine them to avoid conflicts */
+  cpp_quote("#undef LOCK_MAND")
+  cpp_quote("#undef LOCK_READ")
+  cpp_quote("#undef LOCK_WRITE")
+  cpp_quote("#undef LOCK_RW")
+
+  typedef enum tagLOCKTYPE {
+    LOCK_WRITE      = 1,
+    LOCK_EXCLUSIVE  = 2,
+    LOCK_ONLYONCE   = 4
+  } LOCKTYPE;
+
+  [local]
+  HRESULT Seek(
+    [in] LARGE_INTEGER dlibMove,
+    [in] DWORD dwOrigin,
+    [out] ULARGE_INTEGER *plibNewPosition);
+
+  [call_as(Seek)]
+  HRESULT RemoteSeek(
+    [in] LARGE_INTEGER dlibMove,
+    [in] DWORD dwOrigin,
+    [out] ULARGE_INTEGER *plibNewPosition);
+
+  HRESULT SetSize(
+    [in] ULARGE_INTEGER libNewSize);
+
+  [local]
+  HRESULT CopyTo(
+    [in, unique] IStream *pstm,
+    [in] ULARGE_INTEGER cb,
+    [out] ULARGE_INTEGER *pcbRead,
+    [out] ULARGE_INTEGER *pcbWritten);
+
+  [call_as(CopyTo)]
+  HRESULT RemoteCopyTo(
+    [in, unique] IStream *pstm,
+    [in] ULARGE_INTEGER cb,
+    [out] ULARGE_INTEGER *pcbRead,
+    [out] ULARGE_INTEGER *pcbWritten);
+
+  HRESULT Commit(
+    [in] DWORD grfCommitFlags);
+
+  HRESULT Revert();
+
+  HRESULT LockRegion(
+    [in] ULARGE_INTEGER libOffset,
+    [in] ULARGE_INTEGER cb,
+    [in] DWORD dwLockType);
+
+  HRESULT UnlockRegion(
+    [in] ULARGE_INTEGER libOffset,
+    [in] ULARGE_INTEGER cb,
+    [in] DWORD dwLockType);
+
+  HRESULT Stat(
+    [out] STATSTG *pstatstg,
+    [in] DWORD grfStatFlag);
+
+  HRESULT Clone(
+    [out] IStream **ppstm);
+}
+
+[
+  object,
+  uuid(0000000d-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface IEnumSTATSTG : IUnknown
+{
+  typedef [unique] IEnumSTATSTG *LPENUMSTATSTG;
+
+  [local]
+  HRESULT Next(
+    [in] ULONG celt,
+    [out, size_is(celt), length_is(*pceltFetched)]
+    STATSTG *rgelt,
+    [out] ULONG *pceltFetched);
+
+  [call_as(Next)]
+  HRESULT RemoteNext(
+    [in] ULONG celt,
+    [out, size_is(celt), length_is(*pceltFetched)]
+    STATSTG *rgelt,
+    [out] ULONG *pceltFetched);
+
+  HRESULT Skip(
+    [in] ULONG celt);
+
+  HRESULT Reset();
+
+  HRESULT Clone(
+    [out] IEnumSTATSTG **ppenum);
+}
+
+[
+  object,
+  uuid(0000000b-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface IStorage : IUnknown
+{
+  typedef [unique] IStorage *LPSTORAGE;
+
+  typedef struct tagRemSNB {
+    unsigned long ulCntStr;
+    unsigned long ulCntChar;
+    [size_is(ulCntChar)] OLECHAR rgString[];
+  } RemSNB;
+
+  typedef [unique] RemSNB *wireSNB;
+  typedef [wire_marshal(wireSNB)] OLECHAR **SNB;
+
+  HRESULT CreateStream(
+    [in] LPCOLESTR pwcsName,
+    [in] DWORD grfMode,
+    [in] DWORD reserved1,
+    [in] DWORD reserved2,
+    [out] IStream **ppstm);
+
+  [local]
+  HRESULT OpenStream(
+    [in] LPCOLESTR pwcsName,
+    [in, unique] void *reserved1,
+    [in] DWORD grfMode,
+    [in] DWORD reserved2,
+    [out] IStream **ppstm);
+
+  [call_as(OpenStream)]
+  HRESULT RemoteOpenStream(
+    [in] LPCOLESTR pwcsName,
+    [in] unsigned long cbReserved1,
+    [in, unique, size_is(cbReserved1)] byte *reserved1,
+    [in] DWORD grfMode,
+    [in] DWORD reserved2,
+    [out] IStream **ppstm);
+
+  HRESULT CreateStorage(
+    [in] LPCOLESTR pwcsName,
+    [in] DWORD grfMode,
+    [in] DWORD dwStgFmt,
+    [in] DWORD reserved2,
+    [out] IStorage **ppstg);
+
+  HRESULT OpenStorage(
+    [in, unique] LPCOLESTR pwcsName,
+    [in, unique] IStorage *pstgPriority,
+    [in] DWORD grfMode,
+    [in, unique] SNB snbExclude,
+    [in] DWORD reserved,
+    [out] IStorage **ppstg);
+
+  HRESULT CopyTo(
+    [in] DWORD ciidExclude,
+    [in, unique, size_is(ciidExclude)] const IID *rgiidExclude,
+    [in, unique] SNB snbExclude,
+    [in, unique] IStorage *pstgDest);
+
+  HRESULT MoveElementTo(
+    [in] LPCOLESTR pwcsName,
+    [in, unique] IStorage *pstgDest,
+    [in] LPCOLESTR pwcsNewName,
+    [in] DWORD grfFlags);
+
+  HRESULT Commit(
+    [in] DWORD grfCommitFlags);
+
+  HRESULT Revert();
+
+  [local]
+  HRESULT EnumElements(
+    [in] DWORD reserved1,
+    [in, unique, size_is(1)] void *reserved2,
+    [in] DWORD reserved3,
+    [out] IEnumSTATSTG **ppenum);
+
+  [call_as(EnumElements)]
+  HRESULT RemoteEnumElements(
+    [in] DWORD reserved1,
+    [in] unsigned long cbReserved2,
+    [in, unique, size_is(cbReserved2)] byte *reserved2,
+    [in] DWORD reserved3,
+    [out] IEnumSTATSTG **ppenum);
+
+  HRESULT DestroyElement(
+    [in] LPCOLESTR pwcsName);
+
+  HRESULT RenameElement(
+    [in] LPCOLESTR pwcsOldName,
+    [in] LPCOLESTR pwcsNewName);
+
+  HRESULT SetElementTimes(
+    [in, unique] LPCOLESTR pwcsName,
+    [in, unique] const FILETIME *pctime,
+    [in, unique] const FILETIME *patime,
+    [in, unique] const FILETIME *pmtime);
+
+  HRESULT SetClass(
+    [in] REFCLSID clsid);
+
+  HRESULT SetStateBits(
+    [in] DWORD grfStateBits,
+    [in] DWORD grfMask);
+
+  HRESULT Stat(
+    [out] STATSTG *pstatstg,
+    [in] DWORD grfStatFlag);
+}
+
+[
+  object,
+  uuid(0000010b-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface IPersistFile : IPersist
+{
+  typedef [unique] IPersistFile *LPPERSISTFILE;
+
+  HRESULT IsDirty();
+
+  HRESULT Load(
+    [in] LPCOLESTR pszFileName,
+    [in] DWORD dwMode);
+
+  HRESULT Save(
+    [in, unique] LPCOLESTR pszFileName,
+    [in] BOOL fRemember);
+
+  HRESULT SaveCompleted(
+    [in, unique] LPCOLESTR pszFileName);
+
+  HRESULT GetCurFile(
+    [out] LPOLESTR *ppszFileName);
+}
+
+[
+  object,
+  uuid(0000010a-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface IPersistStorage : IPersist
+{
+  typedef [unique] IPersistStorage *LPPERSISTSTORAGE;
+
+  HRESULT IsDirty();
+
+  HRESULT InitNew(
+    [in, unique] IStorage *pStg);
+
+  HRESULT Load(
+    [in, unique] IStorage *pStg);
+
+  HRESULT Save(
+    [in, unique] IStorage *pStgSave,
+    [in] BOOL fSameAsLoad);
+
+  HRESULT SaveCompleted(
+    [in, unique] IStorage *pStgNew);
+
+  HRESULT HandsOffStorage();
+}
+
+[
+  object,
+  uuid(00000012-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface IRootStorage : IUnknown
+{
+  typedef [unique] IRootStorage *LPROOTSTORAGE;
+
+  HRESULT SwitchToFile(
+    [in] LPOLESTR pszFile);
+}
+
+[
+  object,
+  uuid(0000000a-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface ILockBytes : IUnknown
+{
+  typedef [unique] ILockBytes *LPLOCKBYTES;
+
+  [local]
+  HRESULT ReadAt(
+    [in] ULARGE_INTEGER ulOffset,
+    [out, size_is(cb), length_is(*pcbRead)]
+    void *pv,
+    [in] ULONG cb,
+    [out] ULONG *pcbRead);
+
+  [call_as(ReadAt)]
+  HRESULT RemoteReadAt(
+    [in] ULARGE_INTEGER ulOffset,
+    [out, size_is(cb), length_is(*pcbRead)]
+    byte *pv,
+    [in] ULONG cb,
+    [out] ULONG *pcbRead);
+
+  [local]
+  HRESULT WriteAt(
+    [in] ULARGE_INTEGER ulOffset,
+    [in, size_is(cb)] const void *pv,
+    [in] ULONG cb,
+    [out] ULONG *pcbWritten);
+
+  [call_as(WriteAt)]
+  HRESULT RemoteWriteAt(
+    [in] ULARGE_INTEGER ulOffset,
+    [in, size_is(cb)] const byte *pv,
+    [in] ULONG cb,
+    [out] ULONG *pcbWritten);
+
+  HRESULT Flush();
+
+  HRESULT SetSize(
+    [in] ULARGE_INTEGER cb);
+
+  HRESULT LockRegion(
+    [in] ULARGE_INTEGER libOffset,
+    [in] ULARGE_INTEGER cb,
+    [in] DWORD dwLockType);
+
+  HRESULT UnlockRegion(
+    [in] ULARGE_INTEGER libOffset,
+    [in] ULARGE_INTEGER cb,
+    [in] DWORD dwLockType);
+
+  HRESULT Stat(
+    [out] STATSTG *pstatstg,
+    [in] DWORD grfStatFlag);
+}
+
+[
+  object,
+  uuid(99caf010-415e-11cf-8814-00aa00b569f5),
+  pointer_default(unique)
+]
+interface IFillLockBytes : IUnknown
+{
+  [local]
+  HRESULT FillAppend(
+    [in, size_is(cb)] const void *pv,
+    [in] ULONG cb,
+    [out] ULONG *pcbWritten);
+
+  [call_as(FillAppend)]
+  HRESULT RemoteFillAppend(
+    [in, size_is(cb)] const byte *pv,
+    [in] ULONG cb,
+    [out] ULONG *pcbWritten);
+
+  [local]
+  HRESULT FillAt(
+    [in] ULARGE_INTEGER ulOffset,
+    [in, size_is(cb)] const void *pv,
+    [in] ULONG cb,
+    [out] ULONG *pcbWritten);
+
+  [call_as(FillAt)]
+  HRESULT RemoteFillAt(
+    [in] ULARGE_INTEGER ulOffset,
+    [in, size_is(cb)] const byte *pv,
+    [in] ULONG cb,
+    [out] ULONG *pcbWritten);
+
+  HRESULT SetFillSize(
+    [in] ULARGE_INTEGER ulSize);
+
+  HRESULT Terminate(
+    [in] BOOL bCanceled);
+}
+
+[
+  object,
+  uuid(a9d758a0-4617-11cf-95fc-00aa00680db4),
+  pointer_default(unique)
+]
+interface IProgressNotify : IUnknown
+{
+  HRESULT OnProgress(
+    [in] DWORD dwProgressCurrent,
+    [in] DWORD dwProgressMaximum,
+    [in] BOOL fAccurate,
+    [in] BOOL fOwner);
+}
+
+[
+  local,
+  object,
+  uuid(0e6d4d90-6738-11cf-9608-00aa00680db4),
+  pointer_default(unique)
+]
+interface ILayoutStorage : IUnknown
+{
+  typedef struct tagStorageLayout {
+    DWORD LayoutType;
+    OLECHAR *pwcsElementName;
+    LARGE_INTEGER cOffset;
+    LARGE_INTEGER cBytes;
+  } StorageLayout;
+
+  HRESULT LayoutScript(
+    [in] StorageLayout *pStorageLayout,
+    [in] DWORD nEntries,
+    [in] DWORD glfInterleavedFlag);
+
+  HRESULT BeginMonitor();
+
+  HRESULT EndMonitor();
+
+  HRESULT ReLayoutDocfile(
+    [in] OLECHAR *pwcsNewDfName);
+
+  HRESULT ReLayoutDocfileOnILockBytes(
+    [in] ILockBytes *pILockBytes);
+}
+
+[
+    object,
+    uuid(30f3d47a-6447-11d1-8e3c-00c04fb9386d)
+]
+interface IBlockingLock : IUnknown
+{
+    HRESULT Lock(
+        [in] DWORD dwTimeout);
+
+    HRESULT Unlock();
+}
+
+
+[
+    object,
+    uuid(bc0bf6ae-8878-11d1-83e9-00c04fc2c6d4)
+]
+interface ITimeAndNoticeControl : IUnknown
+{
+    HRESULT SuppressChanges(
+        [in] DWORD res1,
+        [in] DWORD res2);
+
+}
+
+
+
+[
+    object,
+    uuid(8d19c834-8879-11d1-83e9-00c04fc2c6d4)
+]
+interface IOplockStorage: IUnknown
+{
+    HRESULT CreateStorageEx(
+        [in] LPCWSTR pwcsName,
+        [in] DWORD grfMode,
+        [in] DWORD stgfmt,
+        [in] DWORD grfAttrs,
+        [in] REFIID riid,
+        [out, iid_is(riid)] void **ppstgOpen);
+
+    HRESULT OpenStorageEx(
+        [in] LPCWSTR pwcsName,
+        [in] DWORD grfMode,
+        [in] DWORD stgfmt,
+        [in] DWORD grfAttrs,
+        [in] REFIID riid,
+        [out, iid_is(riid)] void **ppstgOpen);
+}
+
+/******************** Data Object ********************/
+
+[
+  object,
+  uuid(00000103-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface IEnumFORMATETC : IUnknown
+{
+  typedef [unique] IEnumFORMATETC *LPENUMFORMATETC;
+
+  typedef struct tagDVTARGETDEVICE {
+    DWORD tdSize;
+    WORD tdDriverNameOffset;
+    WORD tdDeviceNameOffset;
+    WORD tdPortNameOffset;
+    WORD tdExtDevmodeOffset;
+    [size_is(tdSize - sizeof(DWORD) - 4*sizeof(WORD))]
+    BYTE tdData[];
+  } DVTARGETDEVICE;
+
+  typedef CLIPFORMAT *LPCLIPFORMAT;
+
+  typedef struct tagFORMATETC {
+    CLIPFORMAT cfFormat;
+    [unique] DVTARGETDEVICE *ptd;
+    DWORD dwAspect;
+    LONG lindex;
+    DWORD tymed;
+  } FORMATETC, *LPFORMATETC;
+
+  [local]
+  HRESULT Next(
+    [in] ULONG celt,
+    [out, size_is(celt), length_is(*pceltFetched)]
+    FORMATETC *rgelt,
+    [out] ULONG *pceltFetched);
+
+  [call_as(Next)]
+  HRESULT RemoteNext(
+    [in] ULONG celt,
+    [out, size_is(celt), length_is(*pceltFetched)]
+    FORMATETC *rgelt,
+    [out] ULONG *pceltFetched);
+
+  HRESULT Skip(
+    [in] ULONG celt);
+
+  HRESULT Reset();
+
+  HRESULT Clone(
+    [out] IEnumFORMATETC **ppenum);
+}
+
+[
+  object,
+  uuid(00000105-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface IEnumSTATDATA : IUnknown
+{
+  typedef [unique] IEnumSTATDATA *LPENUMSTATDATA;
+
+  typedef enum tagADVF {
+    ADVF_NODATA            = 1,
+    ADVF_PRIMEFIRST        = 2,
+    ADVF_ONLYONCE          = 4,
+    ADVF_DATAONSTOP        = 64,
+    ADVFCACHE_NOHANDLER    = 8,
+    ADVFCACHE_FORCEBUILTIN = 16,
+    ADVFCACHE_ONSAVE       = 32
+  } ADVF;
+
+  typedef struct tagSTATDATA
+  {
+    FORMATETC formatetc;
+    DWORD advf;
+    [unique] IAdviseSink *pAdvSink;
+    DWORD dwConnection;
+  } STATDATA, *LPSTATDATA;
+
+  [local]
+  HRESULT Next(
+    [in] ULONG celt,
+    [out, size_is(celt), length_is(*pceltFetched)]
+    STATDATA *rgelt,
+    [out] ULONG *pceltFetched);
+
+  [call_as(Next)]
+  HRESULT RemoteNext(
+    [in] ULONG celt,
+    [out, size_is(celt), length_is(*pceltFetched)]
+    STATDATA *rgelt,
+    [out] ULONG *pceltFetched);
+
+  HRESULT Skip(
+    [in] ULONG celt);
+
+  HRESULT Reset();
+
+  HRESULT Clone(
+    [out] IEnumSTATDATA **ppenum);
+}
+
+[
+  object,
+  uuid(0000010f-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface IAdviseSink : IUnknown
+{
+  typedef IAdviseSink *LPADVISESINK;
+
+  typedef [v1_enum] enum tagTYMED {
+    TYMED_HGLOBAL  = 1,
+    TYMED_FILE     = 2,
+    TYMED_ISTREAM  = 4,
+    TYMED_ISTORAGE = 8,
+    TYMED_GDI      = 16,
+    TYMED_MFPICT   = 32,
+    TYMED_ENHMF    = 64,
+    TYMED_NULL     = 0
+  } TYMED;
+
+  typedef struct tagRemSTGMEDIUM {
+    DWORD tymed;
+    DWORD dwHandleType;
+    unsigned long pData;
+    unsigned long pUnkForRelease;
+    unsigned long cbData;
+    [size_is(cbData)] byte data[];
+  } RemSTGMEDIUM;
+
+  typedef struct tagSTGMEDIUM {
+    DWORD tymed;
+    [switch_is(tymed)] union {
+    [case(TYMED_GDI)]      HBITMAP hBitmap;
+    [case(TYMED_MFPICT)]   HMETAFILEPICT hMetaFilePict;
+    [case(TYMED_ENHMF)]    HENHMETAFILE hEnhMetaFile;
+    [case(TYMED_HGLOBAL)]  HGLOBAL hGlobal;
+    [case(TYMED_FILE)]     LPOLESTR lpszFileName;
+    [case(TYMED_ISTREAM)]  IStream *pstm;
+    [case(TYMED_ISTORAGE)] IStorage *pstg;
+    [default]              ;
+    } DUMMYUNIONNAME;
+    [unique] IUnknown *pUnkForRelease;
+  } uSTGMEDIUM;
+
+/* copied from wingdi.h */
+#define OBJ_PEN             1
+#define OBJ_BRUSH           2
+#define OBJ_DC              3
+#define OBJ_METADC          4
+#define OBJ_PAL             5
+#define OBJ_FONT            6
+#define OBJ_BITMAP          7
+#define OBJ_REGION          8
+#define OBJ_METAFILE        9
+#define OBJ_MEMDC           10
+#define OBJ_EXTPEN          11
+#define OBJ_ENHMETADC       12
+#define OBJ_ENHMETAFILE     13
+
+  typedef union _GDI_OBJECT switch(DWORD ObjectType) u {
+    case OBJ_BITMAP: wireHBITMAP hBitmap;
+    case OBJ_PAL:    wireHPALETTE hPalette;
+    default:         wireHGLOBAL hGeneric;
+  } GDI_OBJECT;
+
+  typedef struct _userSTGMEDIUM {
+    union switch(DWORD tymed) u {
+    case TYMED_NULL:     ;
+    case TYMED_MFPICT:   wireHMETAFILEPICT hMetaFilePict;
+    case TYMED_ENHMF:    wireHENHMETAFILE hHEnhMetaFile;
+    case TYMED_GDI:      GDI_OBJECT *hGdiHandle;
+    case TYMED_HGLOBAL:  wireHGLOBAL hGlobal;
+    case TYMED_FILE:     LPOLESTR lpszFileName;
+    case TYMED_ISTREAM:  BYTE_BLOB *pstm;
+    case TYMED_ISTORAGE: BYTE_BLOB *pstg;
+    } DUMMYUNIONNAME;
+    IUnknown *pUnkForRelease;
+  } userSTGMEDIUM;
+
+  typedef [unique] userSTGMEDIUM *wireSTGMEDIUM;
+  typedef [wire_marshal(wireSTGMEDIUM)] uSTGMEDIUM STGMEDIUM;
+
+  typedef [unique] userSTGMEDIUM *wireASYNC_STGMEDIUM;
+  typedef [wire_marshal(wireASYNC_STGMEDIUM)] STGMEDIUM ASYNC_STGMEDIUM;
+
+  typedef STGMEDIUM *LPSTGMEDIUM;
+
+  typedef struct _userFLAG_STGMEDIUM {
+    long ContextFlags;
+    long fPassOwnership;
+    userSTGMEDIUM Stgmed;
+  } userFLAG_STGMEDIUM;
+
+  typedef [unique] userFLAG_STGMEDIUM *wireFLAG_STGMEDIUM;
+
+  typedef [wire_marshal(wireFLAG_STGMEDIUM)] struct _FLAG_STGMEDIUM {
+    long ContextFlags;
+    long fPassOwnership;
+    STGMEDIUM Stgmed;
+  } FLAG_STGMEDIUM;
+
+  [local]
+  void OnDataChange(
+    [in, unique] FORMATETC *pFormatetc,
+    [in, unique] STGMEDIUM *pStgmed);
+
+  [call_as(OnDataChange)]
+  HRESULT  RemoteOnDataChange(
+    [in, unique] FORMATETC *pFormatetc,
+    [in, unique] ASYNC_STGMEDIUM *pStgmed);
+
+  [local]
+  void OnViewChange(
+    [in] DWORD dwAspect,
+    [in] LONG lindex);
+
+  [call_as(OnViewChange)]
+  HRESULT RemoteOnViewChange(
+    [in] DWORD dwAspect,
+    [in] LONG lindex);
+
+  [local]
+  void OnRename(
+    [in] IMoniker *pmk);
+
+  [call_as(OnRename)]
+  HRESULT RemoteOnRename(
+    [in] IMoniker *pmk);
+
+  [local]
+  void OnSave();
+
+  [call_as(OnSave)]
+  HRESULT RemoteOnSave();
+
+  [local]
+  void OnClose();
+
+  [call_as(OnClose)]
+  HRESULT RemoteOnClose();
+}
+
+[
+  object,
+  uuid(00000125-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface IAdviseSink2 : IAdviseSink
+{
+  typedef [unique] IAdviseSink2 *LPADVISESINK2;
+
+  [local]
+  void OnLinkSrcChange(
+    [in, unique] IMoniker *pmk);
+
+  [call_as(OnLinkSrcChange)]
+  HRESULT RemoteOnLinkSrcChange(
+    [in, unique] IMoniker *pmk);
+}
+
+[
+  object,
+  uuid(0000010e-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface IDataObject : IUnknown
+{
+  typedef [unique] IDataObject *LPDATAOBJECT;
+
+  typedef enum tagDATADIR {
+    DATADIR_GET = 1,
+    DATADIR_SET = 2
+  } DATADIR;
+
+  [local]
+  HRESULT GetData(
+    [in, unique] FORMATETC *pformatetcIn,
+    [out] STGMEDIUM *pmedium);
+
+  [call_as(GetData)]
+  HRESULT RemoteGetData(
+    [in, unique] FORMATETC *pformatetcIn,
+    [out] STGMEDIUM *pRemoteMedium);
+
+  [local]
+  HRESULT GetDataHere(
+    [in, unique] FORMATETC *pformatetc,
+    [in, out] STGMEDIUM *pmedium);
+
+  [call_as(GetDataHere)]
+  HRESULT RemoteGetDataHere(
+    [in, unique] FORMATETC *pformatetc,
+    [in, out] STGMEDIUM *pRemoteMedium);
+
+  HRESULT QueryGetData(
+    [in, unique] FORMATETC *pformatetc);
+
+  HRESULT GetCanonicalFormatEtc(
+    [in, unique] FORMATETC *pformatectIn,
+    [out] FORMATETC *pformatetcOut);
+
+  [local]
+  HRESULT SetData(
+    [in, unique] FORMATETC *pformatetc,
+    [in, unique] STGMEDIUM *pmedium,
+    [in] BOOL fRelease);
+
+  [call_as(SetData)]
+  HRESULT RemoteSetData(
+    [in, unique] FORMATETC *pformatetc,
+    [in, unique] FLAG_STGMEDIUM *pmedium,
+    [in] BOOL fRelease);
+
+  HRESULT EnumFormatEtc(
+    [in] DWORD dwDirection,
+    [out] IEnumFORMATETC **ppenumFormatEtc);
+
+  HRESULT DAdvise(
+    [in] FORMATETC *pformatetc,
+    [in] DWORD advf,
+    [in, unique] IAdviseSink *pAdvSink,
+    [out] DWORD *pdwConnection);
+
+  HRESULT DUnadvise(
+    [in] DWORD dwConnection);
+
+  HRESULT EnumDAdvise(
+    [out] IEnumSTATDATA **ppenumAdvise);
+}
+
+[
+  local,
+  object,
+  uuid(00000110-0000-0000-C000-000000000046)
+]
+interface IDataAdviseHolder : IUnknown
+{
+  typedef [unique] IDataAdviseHolder *LPDATAADVISEHOLDER;
+
+  HRESULT Advise(
+    [in, unique] IDataObject *pDataObject,
+    [in, unique] FORMATETC *pFetc,
+    [in] DWORD advf,
+    [in, unique] IAdviseSink *pAdvise,
+    [out] DWORD *pdwConnection);
+
+  HRESULT Unadvise(
+    [in] DWORD dwConnection);
+
+  HRESULT EnumAdvise(
+    [out] IEnumSTATDATA **ppenumAdvise);
+
+  HRESULT SendOnDataChange(
+    [in, unique] IDataObject *pDataObject,
+    [in] DWORD dwReserved,
+    [in] DWORD advf);
+}
+
+/******************** Remoting ********************/
+
+[
+  local,
+  object,
+  uuid(00000016-0000-0000-C000-000000000046)
+]
+interface IMessageFilter : IUnknown
+{
+  typedef [unique] IMessageFilter *LPMESSAGEFILTER;
+
+  typedef enum tagCALLTYPE {
+    CALLTYPE_TOPLEVEL = 1,
+    CALLTYPE_NESTED   = 2,
+    CALLTYPE_ASYNC    = 3,
+    CALLTYPE_TOPLEVEL_CALLPENDING = 4,
+    CALLTYPE_ASYNC_CALLPENDING    = 5
+  } CALLTYPE;
+
+  typedef enum tagSERVERCALL {
+    SERVERCALL_ISHANDLED  = 0,
+    SERVERCALL_REJECTED   = 1,
+    SERVERCALL_RETRYLATER = 2
+  } SERVERCALL;
+
+  typedef enum tagPENDINGTYPE {
+    PENDINGTYPE_TOPLEVEL = 1,
+    PENDINGTYPE_NESTED   = 2
+  } PENDINGTYPE;
+
+  typedef enum tagPENDINGMSG {
+    PENDINGMSG_CANCELCALL     = 0,
+    PENDINGMSG_WAITNOPROCESS  = 1,
+    PENDINGMSG_WAITDEFPROCESS = 2
+  } PENDINGMSG;
+
+  typedef struct tagINTERFACEINFO {
+    IUnknown *pUnk;
+    IID iid;
+    WORD wMethod;
+  } INTERFACEINFO, *LPINTERFACEINFO;
+
+  DWORD HandleInComingCall(
+    [in] DWORD dwCallType,
+    [in] HTASK htaskCaller,
+    [in] DWORD dwTickCount,
+    [in] LPINTERFACEINFO lpInterfaceInfo);
+
+  DWORD RetryRejectedCall(
+    [in] HTASK htaskCallee,
+    [in] DWORD dwTickCount,
+    [in] DWORD dwRejectType);
+
+  DWORD MessagePending(
+    [in] HTASK htaskCallee,
+    [in] DWORD dwTickCount,
+    [in] DWORD dwPendingType);
+}
+
+[
+  local,
+  object,
+  uuid(D5F56B60-593B-101A-B569-08002B2DBF7A)
+]
+interface IRpcChannelBuffer : IUnknown
+{
+  typedef [unique] IRpcChannelBuffer *LPRPCCHANNELBUFFER;
+
+  typedef unsigned long RPCOLEDATAREP;
+
+  typedef struct tagRPCOLEMESSAGE {
+    void *reserved1;
+    RPCOLEDATAREP dataRepresentation;
+    void *Buffer;
+    ULONG cbBuffer;
+    ULONG iMethod;
+    void *reserved2[5];
+    ULONG rpcFlags;
+  } RPCOLEMESSAGE;
+
+  typedef RPCOLEMESSAGE *PRPCOLEMESSAGE;
+
+  HRESULT GetBuffer(
+    [in] RPCOLEMESSAGE *pMessage,
+    [in] REFIID riid);
+
+  HRESULT SendReceive(
+    [in,out] RPCOLEMESSAGE *pMessage,
+    [out] ULONG *pStatus);
+
+  HRESULT FreeBuffer(
+    [in] RPCOLEMESSAGE *pMessage);
+
+  HRESULT GetDestCtx(
+    [out] DWORD *pdwDestContext,
+    [out] void **ppvDestContext);
+
+  HRESULT IsConnected();
+}
+
+[
+  local,
+  object,
+  uuid(594f31d0-7f19-11d0-b194-00a0c90dc8bf)
+]
+interface IRpcChannelBuffer2 : IRpcChannelBuffer
+{
+  typedef [unique] IRpcChannelBuffer2 *LPRPCCHANNELBUFFER2;
+
+  HRESULT GetProtocolVersion(
+    [in,out] DWORD *pdwVersion);
+}
+
+[
+  local,
+  object,
+  uuid(25B15600-0115-11d0-BF0D-00AA00B8DFD2)
+]
+interface IRpcChannelBuffer3 : IRpcChannelBuffer2
+{
+  typedef [unique] IRpcChannelBuffer3 *LPRPCCHANNELBUFFER3;
+
+  HRESULT Send(
+    [in,out] RPCOLEMESSAGE *pMsg,
+    [out] ULONG *pulStatus);
+
+  HRESULT Receive(
+    [in,out] RPCOLEMESSAGE *pMsg,
+    [in] ULONG ulSize,
+    [out] ULONG *pulStatus);
+
+  HRESULT Cancel(
+    [in] RPCOLEMESSAGE *pMsg);
+
+  HRESULT GetCallContext(
+    [in] RPCOLEMESSAGE *pMsg,
+    [in] REFIID riid,
+    [out] void **pInterface);
+
+  HRESULT GetDestCtxEx(
+    [in] RPCOLEMESSAGE *pMsg,
+    [out] DWORD *pdwDestContext,
+    [out] void **ppvDestContext);
+
+  HRESULT GetState(
+    [in] RPCOLEMESSAGE *pMsg,
+    [out] DWORD *pState);
+
+  HRESULT RegisterAsync(
+    [in] RPCOLEMESSAGE *pMsg,
+    [in] IAsyncManager *pAsyncMgr);
+}
+
+[
+    local,
+    object,
+    uuid(a5029fb6-3c34-11d1-9c99-00c04fb998aa),
+    pointer_default(unique)
+]
+interface IAsyncRpcChannelBuffer : IRpcChannelBuffer2
+{
+    HRESULT Send(
+        [in, out] RPCOLEMESSAGE *pMsg,
+        [in] ISynchronize *pSync,
+        [out] ULONG *pulStatus);
+
+    HRESULT Receive(
+        [in, out] RPCOLEMESSAGE *pMsg,
+        [out] ULONG *pulStatus);
+
+    HRESULT GetDestCtxEx(
+        [in] RPCOLEMESSAGE *pMsg,
+        [out] DWORD *pdwDestContext,
+        [out] void **ppvDestContext);
+}
+
+[
+    local,
+    object,
+    uuid(58a08519-24c8-4935-b482-3fd823333a4f)
+]
+interface IRpcSyntaxNegotiate : IUnknown
+{
+    HRESULT NegotiateSyntax(
+        [in, out] RPCOLEMESSAGE *pMsg);
+}
+
+[
+  local,
+  object,
+  uuid(D5F56A34-593B-101A-B569-08002B2DBF7A)
+]
+interface IRpcProxyBuffer : IUnknown
+{
+  typedef [unique] IRpcProxyBuffer *LPRPCPROXYBUFFER;
+
+  HRESULT Connect(
+    [in, unique] IRpcChannelBuffer *pRpcChannelBuffer);
+
+  void Disconnect();
+}
+
+[
+  local,
+  object,
+  uuid(D5F56AFC-593B-101A-B569-08002B2DBF7A)
+]
+interface IRpcStubBuffer : IUnknown
+{
+  typedef [unique] IRpcStubBuffer *LPRPCSTUBBUFFER;
+
+  HRESULT Connect(
+    [in] IUnknown *pUnkServer);
+
+  void Disconnect();
+
+  HRESULT Invoke(
+    [in] RPCOLEMESSAGE *_prpcmsg,
+    [in] IRpcChannelBuffer *_pRpcChannelBuffer);
+
+  IRpcStubBuffer *IsIIDSupported(
+    [in] REFIID riid);
+
+  ULONG CountRefs();
+
+  HRESULT DebugServerQueryInterface(
+    void **ppv);
+
+  void DebugServerRelease(
+    void *pv);
+}
+
+[
+  local,
+  object,
+  uuid(D5F569D0-593B-101A-B569-08002B2DBF7A)
+]
+interface IPSFactoryBuffer : IUnknown
+{
+  typedef [unique] IPSFactoryBuffer *LPPSFACTORYBUFFER;
+
+  HRESULT CreateProxy(
+    [in] IUnknown *pUnkOuter,
+    [in] REFIID riid,
+    [out] IRpcProxyBuffer **ppProxy,
+    [out] void **ppv);
+
+  HRESULT CreateStub(
+    [in] REFIID riid,
+    [in, unique] IUnknown *pUnkServer,
+    [out] IRpcStubBuffer **ppStub);
+}
+
+[
+  local,
+  object,
+  uuid(1008c4a0-7613-11cf-9af1-0020af6e72f4)
+]
+interface IChannelHook : IUnknown
+{
+  typedef [unique] IChannelHook *LPCHANNELHOOK;
+
+  typedef struct SChannelHookCallInfo {
+    IID iid;
+    DWORD cbSize;
+    GUID uCausality;
+    DWORD dwServerPid;
+    DWORD iMethod;
+    void *pObject;
+  } SChannelHookCallInfo;
+
+  void ClientGetSize(
+    [in] REFGUID uExtent,
+    [in] REFIID riid,
+    [out] ULONG *pDataSize);
+
+  void ClientFillBuffer(
+    [in] REFGUID uExtent,
+    [in] REFIID riid,
+    [in, out] ULONG *pDataSize,
+    [in] void *pDataBuffer);
+
+  void ClientNotify(
+    [in] REFGUID uExtent,
+    [in] REFIID riid,
+    [in] ULONG cbDataSize,
+    [in] void *pDataBuffer,
+    [in] DWORD lDataRep,
+    [in] HRESULT hrFault);
+
+  void ServerNotify(
+    [in] REFGUID uExtent,
+    [in] REFIID riid,
+    [in] ULONG cbDataSize,
+    [in] void *pDataBuffer,
+    [in] DWORD lDataRep);
+
+  void ServerGetSize(
+    [in] REFGUID uExtent,
+    [in] REFIID riid,
+    [in] HRESULT hrFault,
+    [out] ULONG *pDataSize);
+
+  void ServerFillBuffer(
+    [in] REFGUID uExtent,
+    [in] REFIID riid,
+    [in, out] ULONG *pDataSize,
+    [in] void *pDataBuffer,
+    [in] HRESULT hrFault );
+}
+
+extern const FMTID FMTID_SummaryInformation;
+extern const FMTID FMTID_DocSummaryInformation;
+extern const FMTID FMTID_UserDefinedProperties;
+
+
+/******************** Connection Points ********************/
+/* FIXME */
+
+/******************** DCOM ********************/
+
+[
+  local,
+  object,
+  uuid(0000013D-0000-0000-C000-000000000046)
+]
+interface IClientSecurity : IUnknown
+{
+  typedef struct tagSOLE_AUTHENTICATION_SERVICE {
+    DWORD dwAuthnSvc;
+    DWORD dwAuthzSvc;
+    OLECHAR *pPrincipalName;
+    HRESULT hr;
+  } SOLE_AUTHENTICATION_SERVICE;
+
+  typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE;
+
+  typedef struct tagSOLE_AUTHENTICATION_INFO {
+    DWORD dwAuthnSvc;
+    DWORD dwAuthzSvc;
+    void *pAuthInfo;
+  } SOLE_AUTHENTICATION_INFO;
+
+  typedef struct tagSOLE_AUTHENTICATION_LIST {
+    DWORD cAuthInfo;
+    SOLE_AUTHENTICATION_INFO *aAuthInfo;
+  } SOLE_AUTHENTICATION_LIST;
+
+  typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES {
+    EOAC_NONE               = 0x0,
+    EOAC_MUTUAL_AUTH        = 0x1,
+    EOAC_SECURE_REFS        = 0x2, /* CoInitializeSecurity only */
+    EOAC_ACCESS_CONTROL     = 0x4, /* CoInitializeSecurity only */
+    EOAC_APPID              = 0x8, /* CoInitializeSecurity only */
+    EOAC_DYNAMIC            = 0x10, /* CoInitializeSecurity only */
+    EOAC_STATIC_CLOAKING    = 0x20,
+    EOAC_DYNAMIC_CLOAKING   = 0x40,
+    EOAC_ANY_AUTHORITY      = 0x80,
+    EOAC_MAKE_FULLSIC       = 0x100,
+    EOAC_REQUIRE_FULLSIC    = 0x200, /* CoInitializeSecurity only */
+    EOAC_AUTO_IMPERSONATE   = 0x400, /* CoInitializeSecurity only */
+    EOAC_DEFAULT            = 0x800,
+    EOAC_DISABLE_AAA        = 0x1000, /* CoInitializeSecurity only */
+    EOAC_NO_CUSTOM_MARSHAL  = 0x2000, /* CoInitializeSecurity only */
+  } EOLE_AUTHENTICATION_CAPABILITIES;
+
+  HRESULT QueryBlanket(
+    [in] IUnknown *pProxy,
+    [out] DWORD *pAuthnSvc,
+    [out] DWORD *pAuthzSvc,
+    [out] OLECHAR **pServerPrincName,
+    [out] DWORD *pAuthnLevel,
+    [out] DWORD *pImpLevel,
+    [out] void **pAuthInfo,
+    [out] DWORD *pCapabilities);
+
+  HRESULT SetBlanket(
+    [in] IUnknown *pProxy,
+    [in] DWORD AuthnSvc,
+    [in] DWORD AuthzSvc,
+    [in] OLECHAR *pServerPrincName,
+    [in] DWORD AuthnLevel,
+    [in] DWORD ImpLevel,
+    [in] void *pAuthInfo,
+    [in] DWORD Capabilities);
+
+  HRESULT CopyProxy(
+    [in] IUnknown *pProxy,
+    [out] IUnknown **ppCopy);
+}
+
+[
+  local,
+  object,
+  uuid(0000013E-0000-0000-C000-000000000046)
+]
+interface IServerSecurity : IUnknown
+{
+  HRESULT QueryBlanket(
+    [out] DWORD *pAuthnSvc,
+    [out] DWORD *pAuthzSvc,
+    [out] OLECHAR **pServerPrincName,
+    [out] DWORD *pAuthnLevel,
+    [out] DWORD *pImpLevel,
+    [out] void **pPrivs,
+    [out] DWORD *pCapabilities);
+
+  HRESULT ImpersonateClient();
+
+  HRESULT RevertToSelf();
+
+  BOOL IsImpersonating();
+}
+
+[
+  local,
+  object,
+  uuid(00000024-0000-0000-C000-000000000046)
+]
+interface IAsyncSetup : IUnknown
+{
+  HRESULT GetAsyncManager(
+    [in] REFIID riid,
+    [in] IUnknown *pOuter,
+    [in] DWORD dwFlags,
+    [out] IUnknown **ppInner,
+    [out] IAsyncManager **ppAsyncMgr);
+}
+
+[
+    object,
+    uuid(0e6d4d92-6738-11cf-9608-00aa00680db4)
+]
+interface IDirectWriterLock : IUnknown
+{
+    HRESULT WaitForWriteAccess(
+        [in] DWORD dwTimeout);
+
+    HRESULT ReleaseWriteAccess();
+
+    HRESULT HaveWriteAccess();
+}
+
+[
+    object,
+    uuid(00000030-0000-0000-C000-000000000046)
+]
+
+interface ISynchronize : IUnknown
+{
+    HRESULT Wait(
+        [in] DWORD dwFlags,
+        [in] DWORD dwMilliseconds);
+
+    HRESULT Signal();
+
+    HRESULT Reset();
+}
+
+
+[
+    local,
+    object,
+    uuid(00000031-0000-0000-C000-000000000046)
+]
+interface ISynchronizeHandle : IUnknown
+{
+    HRESULT GetHandle(
+        [out] HANDLE *ph);
+}
+
+
+[
+    local,
+    object,
+    uuid(00000032-0000-0000-C000-000000000046)
+]
+interface ISynchronizeEvent : ISynchronizeHandle
+{
+    HRESULT SetEventHandle(
+        [in] HANDLE *ph);
+}
+
+
+[
+    local,
+    object,
+    uuid(00000033-0000-0000-C000-000000000046)
+]
+interface ISynchronizeContainer : IUnknown
+{
+    HRESULT AddSynchronize(
+        [in] ISynchronize *pSync);
+
+    HRESULT WaitMultiple(
+        [in] DWORD dwFlags,
+        [in] DWORD dwTimeOut,
+        [out] ISynchronize **ppSync);
+}
+
+[
+    local,
+    object,
+    uuid(00000025-0000-0000-C000-000000000046)
+]
+interface ISynchronizeMutex : ISynchronize
+{
+    HRESULT ReleaseMutex();
+}
+
+[
+    local,
+    object,
+    uuid(00000029-0000-0000-C000-000000000046)
+]
+
+interface ICancelMethodCalls : IUnknown
+{
+    typedef [unique] ICancelMethodCalls *LPCANCELMETHODCALLS;
+
+    HRESULT Cancel(
+        [in] ULONG ulSeconds);
+
+    HRESULT TestCancel();
+}
+
+[
+  local,
+  object,
+  uuid(0000002A-0000-0000-C000-000000000046)
+]
+interface IAsyncManager : IUnknown
+{
+  typedef enum tagDCOM_CALL_STATE {
+    DCOM_NONE          = 0,
+    DCOM_CALL_COMPLETE = 1,
+    DCOM_CALL_CANCELED = 2
+  } DCOM_CALL_STATE;
+
+  HRESULT CompleteCall(
+    [in] HRESULT Result);
+
+  HRESULT GetCallContext(
+    [in] REFIID riid,
+    [out] void **pInterface);
+
+  HRESULT GetState(
+    [out] ULONG *pulStateFlags);
+}
+
+[
+    local,
+    object,
+    uuid(1c733a30-2a1c-11ce-ade5-00aa0044773d),
+    pointer_default(unique)
+]
+interface ICallFactory : IUnknown
+{
+    HRESULT CreateCall(
+        [in] REFIID riid,
+        [in] IUnknown *pCtrlUnk,
+        [in] REFIID riid2,
+        [out, iid_is(riid2)] IUnknown **ppv);
+}
+
+[
+    local,
+    object,
+    uuid(00000144-0000-0000-C000-000000000046)
+]
+interface IRpcOptions : IUnknown
+{
+    HRESULT Set(
+        [in] IUnknown *pPrx,
+        [in] DWORD dwProperty,
+        [in] ULONG_PTR dwValue);
+
+    HRESULT Query(
+        [in] IUnknown *pPrx,
+        [in] DWORD dwProperty,
+        [out] ULONG_PTR *pdwValue);
+}
+
+enum {
+   COMBND_RPCTIMEOUT = 1,
+   COMBND_SERVER_LOCALITY = 2
+};  
+
+enum {
+   SERVER_LOCALITY_PROCESS_LOCAL = 0,
+   SERVER_LOCALITY_MACHINE_LOCAL = 1,
+   SERVER_LOCALITY_REMOTE = 2
+};
+
+[
+    local,
+    object,
+    uuid(00000149-0000-0000-C000-000000000046),
+    pointer_default(unique)
+]
+interface IRpcHelper : IUnknown
+{
+    HRESULT GetDCOMProtocolVersion(
+        [out] DWORD *pComVersion);
+
+    HRESULT GetIIDFromOBJREF(
+        [in] void *pObjRef,
+        [out] IID **piid);
+}
+
+[
+    local,
+    object,
+    uuid(eb0cb9e8-7996-11d2-872e-0000f8080859)
+]
+interface IReleaseMarshalBuffers : IUnknown
+{
+    HRESULT ReleaseMarshalBuffer(
+        [in] RPCOLEMESSAGE *pMsg,
+        [in] DWORD dwFlags,
+        [in, unique] IUnknown *pChnl);
+}
+
+[
+    local,
+    object,
+    uuid(0000002B-0000-0000-C000-000000000046)
+]
+interface IWaitMultiple : IUnknown
+{
+    HRESULT WaitMultiple(
+        [in] DWORD timeout,
+        [out] ISynchronize **pSync);
+    HRESULT AddSynchronize(
+        [in] ISynchronize *pSync);
+}
+
+
+[
+    object,
+    uuid(00000026-0000-0000-C000-000000000046)
+]
+interface IUrlMon : IUnknown
+{
+    HRESULT AsyncGetClassBits(
+        [in] REFCLSID rclsid,
+        [in, unique] LPCWSTR pszTYPE,
+        [in, unique] LPCWSTR pszExt,
+        [in] DWORD dwFileVersionMS,
+        [in] DWORD dwFileVersionLS,
+        [in, unique] LPCWSTR pszCodeBase,
+        [in] IBindCtx *pbc,
+        [in] DWORD dwClassContext,
+        [in] REFIID riid,
+        [in] DWORD flags);
+}
+
+[
+    local,
+    object,
+    uuid(00000145-0000-0000-C000-000000000046)
+]
+interface IForegroundTransfer : IUnknown
+{
+    HRESULT AllowForegroundTransfer(
+        [in] void *lpvReserved);
+}
+
+[
+    local,
+    object,
+    uuid(00000147-0000-0000-C000-000000000046)
+]
+interface IAddrTrackingControl : IUnknown
+{
+    typedef [unique] IAddrTrackingControl *LPADDRTRACKINGCONTROL;
+
+    HRESULT EnableCOMDynamicAddrTracking();
+    HRESULT DisableCOMDynamicAddrTracking();
+}
+
+[
+    local,
+    object,
+    uuid(00000148-0000-0000-C000-000000000046)
+]
+interface IAddrExclusionControl : IUnknown
+{
+    typedef [unique] IAddrExclusionControl *LPADDREXCLUSIONCONTROL;
+
+    HRESULT GetCurrentAddrExclusionList(
+        [in] REFIID riid,
+        [out, iid_is(riid)] void **ppEnumerator);
+    HRESULT UpdateAddrExclusionList(
+        [in] IUnknown *pEnumerator);
+}
+
+typedef enum _APTTYPE {
+    APTTYPE_CURRENT = -1,
+    APTTYPE_STA     = 0,
+    APTTYPE_MTA     = 1,
+    APTTYPE_NA      = 2,
+    APTTYPE_MAINSTA = 3
+} APTTYPE;
+
+typedef enum _THDTYPE {
+    THDTYPE_BLOCKMESSAGES   = 0,
+    THDTYPE_PROCESSMESSAGES = 1
+} THDTYPE;
+
+[
+    local,
+    object,
+    uuid(000001ce-0000-0000-C000-000000000046),
+    pointer_default(unique)
+]
+interface IComThreadingInfo : IUnknown
+{
+    HRESULT GetCurrentApartmentType(
+        [out] APTTYPE *pAptType);
+    HRESULT GetCurrentThreadType(
+        [out] THDTYPE *pThreadType);
+    HRESULT GetCurrentLogicalThreadId(
+        [out] GUID *pguidLogicalThreadId);
+    HRESULT SetCurrentLogicalThreadId(
+        [in] REFGUID rguid);
+}
+
+
+[
+    object,
+    pointer_default(unique),
+    uuid(72380d55-8d2b-43a3-8513-2b6ef31434e9)
+]
+interface IProcessInitControl : IUnknown
+{
+    HRESULT ResetInitializerTimeout(
+        [in] DWORD dwSecondsRemaining);
+}
+
+[
+    local,
+    object,
+    uuid(00000034-0000-0000-C000-000000000046),
+    pointer_default(unique)
+]
+interface IInitializeSpy : IUnknown
+{
+    typedef [unique] IInitializeSpy *LPINITIALIZESPY;
+
+    HRESULT PreInitialize(
+        [in] DWORD dwCoInit,
+        [in] DWORD dwCurThreadAptRefs);
+
+    HRESULT PostInitialize(
+        [in] HRESULT hrCoInit,
+        [in] DWORD dwCoInit,
+        [in] DWORD dwNewThreadAptRefs);
+
+    HRESULT PreUninitialize(
+        [in] DWORD dwCurThreadAptRefs);
+
+    HRESULT PostUninitialize(
+        [in] DWORD dwNewThreadAptRefs);
+}
+
+[
+    object,
+    uuid(969dc708-5c76-11d1-8d86-0000f804b057)
+]
+interface IThumbnailExtractor : IUnknown
+{
+    HRESULT ExtractThumbnail(
+        [in] IStorage *pStg,
+        [in] ULONG ulLength,
+        [in] ULONG ulHeight,
+        [out] ULONG *pulOutputLength,
+        [out] ULONG *pulOutputHeight,
+        [out] HBITMAP *phOutputBitmap);
+
+
+    HRESULT OnFileUpdated(
+        [in] IStorage *pStg);
+}
+
+
+cpp_quote("#ifdef USE_COM_CONTEXT_DEF")
+
+typedef DWORD CPFLAGS;
+
+typedef struct tagContextProperty
+{
+    GUID policyId;
+    CPFLAGS flags;
+    [unique] IUnknown *pUnk;
+} ContextProperty;
+
+[
+    local,
+    object,
+    uuid(000001c1-0000-0000-C000-000000000046)
+]
+interface IEnumContextProps : IUnknown
+{
+    typedef [unique] IEnumContextProps *LPENUMCONTEXTPROPS;
+
+    HRESULT Next(
+        [in] ULONG celt,
+        [out, size_is(celt), length_is(*pceltFetched)] ContextProperty *pContextProperties,
+        [out] ULONG *pceltFetched);
+
+    HRESULT Skip(
+        [in] ULONG celt);
+
+    HRESULT Reset();
+
+    HRESULT Clone(
+        [out] IEnumContextProps **ppEnumContextProps);
+
+    HRESULT Count(
+        [out] ULONG *pcelt);
+}
+
+[
+    local,
+    object,
+    uuid(000001c0-0000-0000-C000-000000000046)
+]
+interface IContext : IUnknown
+{
+    HRESULT SetProperty(
+        [in] REFGUID policyId,
+        [in] CPFLAGS flags,
+        [in] IUnknown *pUnk);
+
+    HRESULT RemovePropert(
+        [in] REFGUID policyId);
+
+    HRESULT GetProperty(
+        [in] REFGUID guid,
+        [out] CPFLAGS *pFlags,
+        [out] IUnknown **ppUnk);
+
+    HRESULT EnumContextProps(
+        [out] IEnumContextProps **ppEnumContextProps);
+}
+
+cpp_quote("#endif /* defined USE_COM_CONTEXT_DEF */")
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/objsafe.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/objsafe.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/objsafe.idl	(revision 16410)
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2005 CorVu Corporation
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef DO_NO_IMPORTS
+import "unknwn.idl";
+#endif
+
+cpp_quote("#define INTERFACESAFE_FOR_UNTRUSTED_CALLER 1")
+cpp_quote("#define INTERFACESAFE_FOR_UNTRUSTED_DATA 2")
+cpp_quote("#define INTERFACE_USES_DISPEX 4")
+cpp_quote("#define INTERFACE_USES_SECURITY_MANAGER 8")
+
+cpp_quote("DEFINE_GUID(CATID_SafeForScripting, 0x7dd95801,0x9882,0x11cf,0x9f,0xa9,0x00,0xaa,0x00,0x6c,0x42,0xc4);")
+cpp_quote("DEFINE_GUID(CATID_SafeForInitializing, 0x7dd95802,0x9882,0x11cf,0x9f,0xa9,0x00,0xaa,0x00,0x6c,0x42,0xc4);")
+
+[
+    object,
+    uuid(cb5bdc81-93c1-11cf-8f20-00805f2cd064),
+    pointer_default(unique)
+]
+interface IObjectSafety : IUnknown
+{
+    HRESULT GetInterfaceSafetyOptions([in] REFIID riid,
+    				      [out] DWORD *pdwSupportedOptions,
+				      [out] DWORD *pdwEnabledOptions);
+
+    HRESULT SetInterfaceSafetyOptions([in] REFIID riid,
+    				      [in] DWORD dwOptionSetMask,
+				      [in] DWORD dwEnabledOptions);
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/objsel.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/objsel.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/objsel.h	(revision 16410)
@@ -0,0 +1,169 @@
+/*
+ * objsel.h
+ *
+ * Object Picker Dialog
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#ifndef __OBJSEL_H_
+#define __OBJSEL_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+DEFINE_GUID(CLSID_DsObjectPicker, 0x17d6ccd8, 0x3b7b, 0x11d2, 0x00b9, 0xe0,0x00,0xc0,0x4f,0xd8,0xdb,0xf7);
+DEFINE_GUID(IID_IDsObjectPicker, 0x0c87e64e, 0x3b7a, 0x11d2, 0x00b9, 0xe0,0x00,0xc0,0x4f,0xd8,0xdb,0xf7);
+
+#define CFSTR_DSOP_DS_SELECTION_LIST    TEXT("CFSTR_DSOP_DS_SELECTION_LIST")
+
+/* up-level scope filters in the DSOP_UPLEVEL_FILTER_FLAGS structure */
+#define DSOP_FILTER_INCLUDE_ADVANCED_VIEW       (0x1)
+#define DSOP_FILTER_USERS       (0x2)
+#define DSOP_FILTER_BUILTIN_GROUPS      (0x4)
+#define DSOP_FILTER_WELL_KNOWN_PRINCIPALS       (0x8)
+#define DSOP_FILTER_UNIVERSAL_GROUPS_DL (0x10)
+#define DSOP_FILTER_UNIVERSAL_GROUPS_SE (0x20)
+#define DSOP_FILTER_GLOBAL_GROUPS_DL    (0x40)
+#define DSOP_FILTER_GLOBAL_GROUPS_SE    (0x80)
+#define DSOP_FILTER_DOMAIN_LOCAL_GROUPS_DL      (0x100)
+#define DSOP_FILTER_DOMAIN_LOCAL_GROUPS_SE      (0x200)
+#define DSOP_FILTER_CONTACTS    (0x400)
+#define DSOP_FILTER_COMPUTERS   (0x800)
+
+typedef struct _DSOP_UPLEVEL_FILTER_FLAGS
+{
+    ULONG flBothModes;
+    ULONG flMixedModeOnly;
+    ULONG flNativeModeOnly;
+} DSOP_UPLEVEL_FILTER_FLAGS, *PDSOP_UPLEVEL_FILTER_FLAGS;
+
+/* down-level scope filters in the DSOP_FILTER_FLAGS structure */
+#define DSOP_DOWNLEVEL_FILTER_USERS     (0x80000001)
+#define DSOP_DOWNLEVEL_FILTER_LOCAL_GROUPS      (0x80000002)
+#define DSOP_DOWNLEVEL_FILTER_GLOBAL_GROUPS     (0x80000004)
+#define DSOP_DOWNLEVEL_FILTER_COMPUTERS (0x80000008)
+#define DSOP_DOWNLEVEL_FILTER_WORLD     (0x80000010)
+#define DSOP_DOWNLEVEL_FILTER_AUTHENTICATED_USER        (0x80000020)
+#define DSOP_DOWNLEVEL_FILTER_ANONYMOUS (0x80000040)
+#define DSOP_DOWNLEVEL_FILTER_BATCH     (0x80000080)
+#define DSOP_DOWNLEVEL_FILTER_CREATOR_OWNER     (0x80000100)
+#define DSOP_DOWNLEVEL_FILTER_CREATOR_GROUP     (0x80000200)
+#define DSOP_DOWNLEVEL_FILTER_DIALUP    (0x80000400)
+#define DSOP_DOWNLEVEL_FILTER_INTERACTIVE       (0x80000800)
+#define DSOP_DOWNLEVEL_FILTER_NETWORK   (0x80001000)
+#define DSOP_DOWNLEVEL_FILTER_SERVICE   (0x80002000)
+#define DSOP_DOWNLEVEL_FILTER_SYSTEM    (0x80004000)
+#define DSOP_DOWNLEVEL_FILTER_EXCLUDE_BUILTIN_GROUPS    (0x80008000)
+#define DSOP_DOWNLEVEL_FILTER_TERMINAL_SERVER   (0x80010000)
+#define DSOP_DOWNLEVEL_FILTER_ALL_WELLKNOWN_SIDS        (0x80020000)
+#define DSOP_DOWNLEVEL_FILTER_LOCAL_SERVICE     (0x80040000)
+#define DSOP_DOWNLEVEL_FILTER_NETWORK_SERVICE   (0x80080000)
+#define DSOP_DOWNLEVEL_FILTER_REMOTE_LOGON      (0x80100000)
+
+typedef struct _DSOP_FILTER_FLAGS
+{
+    DSOP_UPLEVEL_FILTER_FLAGS Uplevel;
+    ULONG flDownlevel;
+} DSOP_FILTER_FLAGS, *PDSOP_FILTER_FLAGS;
+
+/* ADsPath format flags in the DSOP_SCOPE_INIT_INFO structure */
+#define DSOP_SCOPE_FLAG_STARTING_SCOPE  (0x1)
+#define DSOP_SCOPE_FLAG_WANT_PROVIDER_WINNT     (0x2)
+#define DSOP_SCOPE_FLAG_WANT_PROVIDER_LDAP      (0x4)
+#define DSOP_SCOPE_FLAG_WANT_PROVIDER_GC        (0x8)
+#define DSOP_SCOPE_FLAG_WANT_SID_PATH   (0x10)
+#define DSOP_SCOPE_FLAG_WANT_DOWNLEVEL_BUILTIN_PATH     (0x20)
+#define DSOP_SCOPE_FLAG_DEFAULT_FILTER_USERS    (0x40)
+#define DSOP_SCOPE_FLAG_DEFAULT_FILTER_GROUPS   (0x80)
+#define DSOP_SCOPE_FLAG_DEFAULT_FILTER_COMPUTERS        (0x100)
+#define DSOP_SCOPE_FLAG_DEFAULT_FILTER_CONTACTS (0x200)
+
+typedef struct _DSOP_SCOPE_INIT_INFO
+{
+    ULONG cbSize;
+    ULONG flType;
+    ULONG flScope;
+    DSOP_FILTER_FLAGS FilterFlags;
+    PCWSTR pwzDcName;
+    PCWSTR pwzADsPath;
+    HRESULT hr;
+} DSOP_SCOPE_INIT_INFO, *PDSOP_SCOPE_INIT_INFO;
+typedef const DSOP_SCOPE_INIT_INFO *PCDSOP_SCOPE_INIT_INFO;
+
+/* object picker options in the DSOP_INIT_INFO structure */
+#define DSOP_FLAG_MULTISELECT   (0x1)
+#define DSOP_FLAG_SKIP_TARGET_COMPUTER_DC_CHECK (0x2)
+
+typedef struct _DSOP_INIT_INFO
+{
+    ULONG cbSize;
+    PCWSTR pwzTargetComputer;
+    ULONG cDsScopeInfos;
+    PDSOP_SCOPE_INIT_INFO aDsScopeInfos;
+    ULONG flOptions;
+    ULONG cAttributesToFetch;
+    PCWSTR *apwzAttributeNames;
+} DSOP_INIT_INFO, *PDSOP_INIT_INFO;
+
+typedef const DSOP_INIT_INFO *PCDSOP_INIT_INFO;
+
+/* selection scope types in the DS_SELECTION structure */
+#define DSOP_SCOPE_TYPE_TARGET_COMPUTER (0x1)
+#define DSOP_SCOPE_TYPE_UPLEVEL_JOINED_DOMAIN   (0x2)
+#define DSOP_SCOPE_TYPE_DOWNLEVEL_JOINED_DOMAIN (0x4)
+#define DSOP_SCOPE_TYPE_ENTERPRISE_DOMAIN       (0x8)
+#define DSOP_SCOPE_TYPE_GLOBAL_CATALOG  (0x10)
+#define DSOP_SCOPE_TYPE_EXTERNAL_UPLEVEL_DOMAIN (0x20)
+#define DSOP_SCOPE_TYPE_EXTERNAL_DOWNLEVEL_DOMAIN       (0x40)
+#define DSOP_SCOPE_TYPE_WORKGROUP       (0x80)
+#define DSOP_SCOPE_TYPE_USER_ENTERED_UPLEVEL_SCOPE      (0x100)
+#define DSOP_SCOPE_TYPE_USER_ENTERED_DOWNLEVEL_SCOPE    (0x200)
+
+typedef struct _DS_SELECTION
+{
+    PWSTR pwzName;
+    PWSTR pwzADsPath;
+    PWSTR pwzClass;
+    PWSTR pwzUPN;
+    VARIANT *pvarFetchedAttributes;
+    ULONG flScopeType;
+} DS_SELECTION, *PDS_SELECTION;
+
+typedef struct _DS_SELECTION_LIST
+{
+    ULONG cItems;
+    ULONG cFetchedAttributes;
+    DS_SELECTION aDsSelection[ANYSIZE_ARRAY];
+} DS_SELECTION_LIST, *PDS_SELECTION_LIST;
+
+/*****************************************************************************
+ * IDsObjectPicker interface
+ */
+#define INTERFACE   IDsObjectPicker
+DECLARE_INTERFACE_(IDsObjectPicker,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDsObjectPicker methods ***/
+    STDMETHOD(Initialize)(THIS_ PDSOP_INIT_INFO pInitInfo) PURE;
+    STDMETHOD(InvokeDialog)(THIS_ HWND hwndParent, IDataObject** ppdoSelections) PURE;
+};
+#undef INTERFACE
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* __OBJSEL_H_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ocidl.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ocidl.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ocidl.idl	(revision 16410)
@@ -0,0 +1,1334 @@
+/*
+ * Copyright (C) 1999 Paul Quinn
+ * Copyright (C) 1999 Francis Beaudet
+ * Copyright (C) 2003 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef DO_NO_IMPORTS
+import "oleidl.idl";
+import "oaidl.idl";
+import "servprov.idl";
+import "urlmon.idl";
+#endif
+
+/*****************************************************************************
+ * IOleControlTypes interface
+ */
+[
+    pointer_default(unique)
+]
+interface IOleControlTypes
+{
+    typedef [v1_enum] enum tagUASFLAGS
+    {
+        UAS_NORMAL       = 0x0,
+        UAS_BLOCKED      = 0x1,
+        UAS_NOPARENTABLE = 0x2,
+        UAS_MASK         = 0x3
+    } UASFLAGS;
+
+    typedef enum tagREADYSTATE
+    {
+        READYSTATE_UNINITIALIZED  = 0,
+        READYSTATE_LOADING  = 1,
+        READYSTATE_LOADED = 2,
+        READYSTATE_INTERACTIVE  = 3,
+        READYSTATE_COMPLETE = 4
+    } READYSTATE;
+
+    typedef struct tagVARIANT_BLOB
+    {
+        DWORD clSize;
+        DWORD rpcReserved;
+        [size_is(clSize-1)] ULONGLONG ahData[];
+    } wireVARIANT_BLOB;
+
+    typedef struct tagUserVARIANT
+    {
+      wireVARIANT_BLOB pVarBlob;
+    } UserVARIANT;
+}
+
+
+/*****************************************************************************
+ * IFont interface
+ */
+[
+    object,
+    uuid(bef6e002-a874-101a-8bba-00aa00300cab),
+    pointer_default(unique)
+]
+interface IFont : IUnknown
+{
+    typedef IFont *LPFONT;
+    typedef TEXTMETRICW TEXTMETRICOLE, *LPTEXTMETRICOLE;
+
+    [propget] HRESULT Name( [out] BSTR *pname);
+    [propput] HRESULT Name( [in] BSTR name );
+    [propget] HRESULT Size( [out] CY *psize );
+    [propput] HRESULT Size( [in] CY size );
+    [propget] HRESULT Bold( [out] BOOL *pbold );
+    [propput] HRESULT Bold( [in] BOOL bold );
+    [propget] HRESULT Italic( [out] BOOL *pitalic );
+    [propput] HRESULT Italic( [in] BOOL italic );
+    [propget] HRESULT Underline( [out] BOOL *punderline );
+    [propput] HRESULT Underline( [in] BOOL underline );
+    [propget] HRESULT Strikethrough( [out] BOOL *pstrikethrough );
+    [propput] HRESULT Strikethrough( [in] BOOL strikethrough );
+    [propget] HRESULT Weight( [out] SHORT *pweight );
+    [propput] HRESULT Weight( [in] SHORT weight );
+    [propget] HRESULT Charset( [out] SHORT *pcharset );
+    [propput] HRESULT Charset( [in] SHORT charset );
+    [propget] HRESULT hFont( [out] HFONT *phfont );
+    HRESULT Clone( [out] IFont **ppfont );
+    HRESULT IsEqual( [in] IFont *pFontOther );
+    HRESULT SetRatio( [in] LONG cyLogical, [in] LONG cyHimetric );
+    HRESULT QueryTextMetrics( [out] TEXTMETRICOLE * ptm );
+    HRESULT AddRefHfont( [in] HFONT hfont );
+    HRESULT ReleaseHfont( [in] HFONT hfont );
+    HRESULT SetHdc( [in] HDC hdc );
+}
+
+
+/*****************************************************************************
+ * IFontDisp interface
+ */
+[
+    object,
+    uuid(bef6e003-a874-101a-8bba-00aa00300cab),
+    pointer_default(unique)
+]
+interface IFontDisp : IDispatch
+{
+    typedef IFontDisp *LPFONTDISP;
+}
+
+
+/*****************************************************************************
+ * IFontEventsDisp interface
+ */
+[
+    object,
+    uuid(4ef6100a-af88-11d0-9846-00c04fc29993),
+    pointer_default(unique)
+]
+interface IFontEventsDisp : IDispatch
+{
+    typedef IFontEventsDisp *LPFONTEVENTS;
+}
+
+
+/*****************************************************************************
+ * IPicture interface
+ */
+[
+    object,
+    uuid(7bf80980-bf32-101a-8bbb-00aa00300cab),
+    pointer_default(unique)
+]
+interface IPicture : IUnknown
+{
+    typedef IPicture *LPPICTURE;
+
+    typedef enum tagPicture
+    {
+        PICTURE_SCALABLE = 0x1,
+        PICTURE_TRANSPARENT = 0x2
+    } PICTUREATTRIBUTES;
+
+    typedef UINT OLE_HANDLE;
+    typedef LONG OLE_XPOS_HIMETRIC;
+    typedef LONG OLE_YPOS_HIMETRIC;
+    typedef LONG OLE_XSIZE_HIMETRIC;
+    typedef LONG OLE_YSIZE_HIMETRIC;
+
+    [propget] HRESULT Handle( [out] OLE_HANDLE *pHandle );
+    [propget] HRESULT hPal( [out] OLE_HANDLE *phPal );
+    [propget] HRESULT Type( [out] SHORT *pType );
+    [propget] HRESULT Width( [out] OLE_XSIZE_HIMETRIC *pWidth );
+    [propget] HRESULT Height( [out] OLE_YSIZE_HIMETRIC *pHeight );
+
+    HRESULT Render(
+        [in] HDC hdc,
+        [in] LONG x,
+        [in] LONG y,
+        [in] LONG cx,
+        [in] LONG cy,
+        [in] OLE_XPOS_HIMETRIC xSrc,
+        [in] OLE_YPOS_HIMETRIC ySrc,
+        [in] OLE_XSIZE_HIMETRIC cxSrc,
+        [in] OLE_YSIZE_HIMETRIC cySrc,
+        [in] LPCRECT pRcWBounds);
+
+    HRESULT set_hPal( [in] OLE_HANDLE hPal );
+
+    [propget] HRESULT CurDC( [out] HDC *phDC );
+
+    HRESULT SelectPicture(
+        [in] HDC hDCIn,
+        [out] HDC * phDCOut,
+        [out] OLE_HANDLE * phBmpOut);
+
+    [propget] HRESULT KeepOriginalFormat( [out] BOOL *pKeep );
+
+    [propput] HRESULT KeepOriginalFormat( [in] BOOL keep );
+
+    HRESULT PictureChanged();
+
+    HRESULT SaveAsFile(
+        [in] LPSTREAM pStream,
+        [in] BOOL fSaveMemCopy,
+        [out] LONG *pCbSize);
+
+    [propget] HRESULT Attributes( [out] DWORD *pDwAttr );
+}
+
+
+/*****************************************************************************
+ * IPictureDisp interface
+ */
+[
+    object,
+    uuid(7bf80981-bf32-101a-8bbb-00aa00300cab),
+    pointer_default(unique)
+]
+interface IPictureDisp : IDispatch
+{
+    typedef IPictureDisp *LPPICTUREDISP;
+}
+
+
+/*****************************************************************************
+ * IOleControl interface
+ */
+[
+    object,
+    uuid(b196b288-bab4-101a-b69c-00aa00341d07),
+    pointer_default(unique)
+]
+
+interface IOleControl : IUnknown
+{
+    typedef IOleControl *LPOLECONTROL;
+
+    typedef struct tagCONTROLINFO
+    {
+        ULONG cb;
+        HACCEL hAccel;
+        USHORT cAccel;
+        DWORD dwFlags;
+    } CONTROLINFO, *LPCONTROLINFO;
+
+    typedef enum tagCTRLINFO
+    {
+        CTRLINFO_EATS_RETURN = 1,
+        CTRLINFO_EATS_ESCAPE = 2
+    } CTRLINFO;
+
+    HRESULT GetControlInfo( [out] CONTROLINFO *pCI );
+    HRESULT OnMnemonic( [in] MSG *pMsg );
+    HRESULT OnAmbientPropertyChange( [in] DISPID dispID );
+    HRESULT FreezeEvents( [in] BOOL bFreeze );
+}
+
+
+/*****************************************************************************
+ * IOleControlSite interface
+ */
+[
+    object,
+    uuid(b196b289-bab4-101a-b69c-00aa00341d07),
+    pointer_default(unique)
+]
+interface IOleControlSite : IUnknown
+{
+    typedef IOleControlSite *LPOLECONTROLSITE;
+
+    typedef struct tagPOINTF
+    {
+        FLOAT x;
+        FLOAT y;
+    } POINTF, *LPPOINTF;
+
+    typedef enum tagXFORMCOORDS
+    {
+	XFORMCOORDS_POSITION = 0x1,
+	XFORMCOORDS_SIZE = 0x2,
+	XFORMCOORDS_HIMETRICTOCONTAINER = 0x4,
+	XFORMCOORDS_CONTAINERTOHIMETRIC = 0x8,
+        XFORMCOORDS_EVENTCOMPAT = 0x10
+    } XFORMCOORDS;
+
+    HRESULT OnControlInfoChanged();
+
+    HRESULT LockInPlaceActive( [in] BOOL fLock );
+
+    HRESULT GetExtendedControl( [out] IDispatch ** ppDisp );
+
+    HRESULT TransformCoords(
+        [in, out] POINTL *pPtlHimetric,
+        [in, out] POINTF *pPtfContainer,
+        [in] DWORD dwFlags);
+
+    HRESULT TranslateAccelerator( [in] MSG *pMsg, [in] DWORD grfModifiers );
+
+    HRESULT OnFocus( [in] BOOL fGotFocus );
+
+    HRESULT ShowPropertyFrame();
+}
+
+
+/*****************************************************************************
+ * IOleInPlaceSiteEx interface
+ */
+[
+    object,
+    uuid(9c2cad80-3424-11cf-b670-00aa004cd6d8),
+    pointer_default(unique)
+]
+interface IOleInPlaceSiteEx : IOleInPlaceSite
+{
+    typedef IOleInPlaceSiteEx *LPOLEINPLACESITEEX;
+
+    typedef enum tagACTIVATEFLAGS
+    {
+        ACTIVATE_WINDOWLESS = 1
+    } ACTIVATE_FLAGS;
+
+    HRESULT OnInPlaceActivateEx( [out] BOOL * pfNoRedraw, [in] DWORD dwFlags );
+    HRESULT OnInPlaceDeactivateEx( [in] BOOL fNoRedraw );
+    HRESULT RequestUIActivate();
+}
+
+
+/*****************************************************************************
+ * IOleInPlaceSiteWindowless interface
+ */
+[
+    local,
+    object,
+    uuid(922eada0-3424-11cf-b670-00aa004cd6d8),
+    pointer_default(unique)
+]
+interface IOleInPlaceSiteWindowless : IOleInPlaceSiteEx
+{
+    typedef IOleInPlaceSiteWindowless *LPOLEINPLACESITEWINDOWLESS;
+
+    typedef enum tagOLEDCFLAGS
+    {
+        OLEDC_NODRAW = 0x1,
+        OLEDC_PAINTBKGND = 0x2,
+        OLEDC_OFFSCREEN = 0x4
+    } OLEDCFLAGS;
+
+    HRESULT CanWindowlessActivate();
+
+    HRESULT GetCapture();
+
+    HRESULT SetCapture( [in] BOOL fCapture );
+
+    HRESULT GetFocus();
+
+    HRESULT SetFocus( [in] BOOL fFocus );
+
+    HRESULT GetDC(
+        [in] LPCRECT pRect,
+        [in] DWORD grfFlags,
+        [out] HDC *phDC);
+
+    HRESULT ReleaseDC( [in] HDC hDC );
+
+    HRESULT InvalidateRect(
+        [in] LPCRECT pRect,
+        [in] BOOL fErase);
+
+    HRESULT InvalidateRgn(
+        [in] HRGN hRGN,
+        [in] BOOL fErase);
+
+    HRESULT ScrollRect(
+        [in] INT dx,
+        [in] INT dy,
+        [in] LPCRECT pRectScroll,
+        [in] LPCRECT pRectClip);
+
+    HRESULT AdjustRect( [in, out] LPRECT prc );
+
+    HRESULT OnDefWindowMessage(
+        [in] UINT msg,
+        [in] WPARAM wParam,
+        [in] LPARAM lParam,
+        [out] LRESULT *plResult);
+}
+
+
+/*****************************************************************************
+ * IOleInPlaceObjectWindowless interface
+ */
+[
+    local,
+    object,
+    uuid(1c2056cc-5ef4-101b-8bc8-00aa003e3b29),
+    pointer_default(unique)
+]
+interface IOleInPlaceObjectWindowless : IOleInPlaceObject
+{
+    typedef IOleInPlaceObjectWindowless *LPOLEINPLACEOBJECTWINDOWLESS;
+
+    HRESULT OnWindowMessage(
+        [in] UINT msg,
+        [in] WPARAM wParam,
+        [in] LPARAM lParam,
+        [out] LRESULT *plResult);
+
+    HRESULT GetDropTarget( [out] IDropTarget **ppDropTarget );
+}
+
+
+/*****************************************************************************
+ * IClassFactory2 interface
+ */
+[
+    object,
+    uuid(b196b28f-bab4-101a-b69c-00aa00341d07),
+    pointer_default(unique)
+]
+interface IClassFactory2 : IClassFactory
+{
+    typedef IClassFactory2 *LPCLASSFACTORY2;
+
+    typedef struct tagLICINFO
+    {
+        LONG cbLicInfo;
+        BOOL fRuntimeKeyAvail;
+        BOOL fLicVerified;
+    } LICINFO, *LPLICINFO;
+
+    HRESULT GetLicInfo( [out] LICINFO *pLicInfo );
+
+    HRESULT RequestLicKey(
+        [in] DWORD dwReserved,
+        [out] BSTR *pBstrKey);
+
+    [local]
+    HRESULT CreateInstanceLic(
+        [in] IUnknown *pUnkOuter,
+        [in] IUnknown *pUnkReserved,
+        [in] REFIID riid,
+        [in] BSTR bstrKey,
+        [out, iid_is(riid)] PVOID *ppvObj);
+
+    [call_as(CreateInstanceLic)]
+    HRESULT RemoteCreateInstanceLic(
+        [in] REFIID riid,
+        [in] BSTR bstrKey,
+        [out, iid_is(riid)] IUnknown **ppvObj);
+}
+
+
+/*****************************************************************************
+ * IViewObject interface
+ */
+[
+    local,
+    object,
+    uuid(3af24292-0c96-11ce-a0cf-00aa00600ab8),
+    pointer_default(unique)
+]
+interface IViewObjectEx : IViewObject2
+{
+    typedef IViewObjectEx *LPVIEWOBJECTEX;
+
+    typedef enum tagVIEWSTATUS
+    {
+        VIEWSTATUS_OPAQUE = 1,
+        VIEWSTATUS_SOLIDBKGND = 2,
+        VIEWSTATUS_DVASPECTOPAQUE = 4,
+        VIEWSTATUS_DVASPECTTRANSPARENT = 8,
+        VIEWSTATUS_SURFACE = 16,
+        VIEWSTATUS_3DSURFACE = 32
+    } VIEWSTATUS;
+
+    typedef enum tagHITRESULT
+    {
+        HITRESULT_OUTSIDE = 0,
+        HITRESULT_TRANSPARENT = 1,
+        HITRESULT_CLOSE = 2,
+        HITRESULT_HIT = 3
+    } HITRESULT;
+
+    typedef enum tagDVASPECT2
+    {
+        DVASPECT_OPAQUE = 16,
+        DVASPECT_TRANSPARENT = 32
+    } DVASPECT2;
+
+    typedef struct tagExtentInfo
+    {
+        ULONG cb;
+        DWORD dwExtentMode;
+        SIZEL sizelProposed;
+    } DVEXTENTINFO;
+
+    typedef enum tagAspectInfoFlag
+    {
+        DVASPECTINFOFLAG_CANOPTIMIZE = 1
+    } DVASPECTINFOFLAG;
+
+    typedef struct tagAspectInfo
+    {
+        ULONG cb;
+        DWORD dwFlags;
+    } DVASPECTINFO;
+
+    HRESULT GetRect(
+        [in] DWORD dwAspect,
+        [out] LPRECTL pRect);
+
+    HRESULT GetViewStatus( [out] DWORD *pdwStatus );
+
+    HRESULT QueryHitPoint(
+        [in] DWORD dwAspect,
+        [in] LPCRECT pRectBounds,
+        [in] POINT ptlLoc,
+        [in] LONG lCloseHint,
+        [out] DWORD *pHitResult);
+
+    HRESULT QueryHitRect(
+        [in] DWORD dwAspect,
+        [in] LPCRECT pRectBounds,
+        [in] LPCRECT pRectLoc,
+        [in] LONG lCloseHint,
+        [out] DWORD *pHitResult);
+
+    HRESULT GetNaturalExtent (
+        [in] DWORD dwAspect,
+        [in] LONG lindex,
+        [in] DVTARGETDEVICE *ptd,
+        [in] HDC hicTargetDev,
+        [in] DVEXTENTINFO *pExtentInfo,
+        [out] LPSIZEL pSizel);
+}
+
+
+/*****************************************************************************
+ * IProvideClassInfo interface
+ */
+[
+    object,
+    uuid(b196b283-bab4-101a-b69c-00aa00341d07),
+    pointer_default(unique)
+]
+interface IProvideClassInfo : IUnknown
+{
+    typedef IProvideClassInfo *LPPROVIDECLASSINFO;
+
+cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
+cpp_quote("#undef GetClassInfo")
+cpp_quote("#endif")
+
+    HRESULT GetClassInfo( [out] ITypeInfo ** ppTI );
+}
+
+
+/*****************************************************************************
+ * IProvideClassInfo2 interface
+ */
+[
+    object,
+    uuid(a6bc3ac0-dbaa-11ce-9de3-00aa004bb851),
+    pointer_default(unique)
+]
+interface IProvideClassInfo2 : IProvideClassInfo
+{
+    typedef IProvideClassInfo2 *LPPROVIDECLASSINFO2;
+
+    typedef enum tagGUIDKIND
+    {
+        GUIDKIND_DEFAULT_SOURCE_DISP_IID = 1
+    } GUIDKIND;
+
+    HRESULT GetGUID(
+        [in]  DWORD dwGuidKind,
+        [out] GUID *pGUID );
+}
+
+
+[
+    object,
+    uuid(a7aba9c1-8983-11cf-8f20-00805f2cd064),
+    pointer_default(unique)
+]
+interface IProvideMultipleClassInfo : IProvideClassInfo2
+{
+    cpp_quote("#define MULTICLASSINFO_GETTYPEINFO           0x00000001")
+    cpp_quote("#define MULTICLASSINFO_GETNUMRESERVEDDISPIDS 0x00000002")
+    cpp_quote("#define MULTICLASSINFO_GETIIDPRIMARY         0x00000004")
+    cpp_quote("#define MULTICLASSINFO_GETIIDSOURCE          0x00000008")
+
+    cpp_quote("#define TIFLAGS_EXTENDDISPATCHONLY           0x00000001")
+
+    typedef IProvideMultipleClassInfo *LPPROVIDEMULTIPLECLASSINFO;
+
+    HRESULT GetMultiTypeInfoCount( 
+        [out] ULONG *pcti);
+
+    HRESULT GetInfoOfIndex( 
+        [in] ULONG iti,
+        [in] DWORD dwFlags,
+        [out] ITypeInfo **pptiCoClass,
+        [out] DWORD *pdwTIFlags,
+        [out] ULONG *pcdispidReserved,
+        [out] IID *piidPrimary,
+        [out] IID *piidSource);
+}
+
+
+/*****************************************************************************
+ * IConnectionPoint interface
+ */
+interface IConnectionPointContainer; /* forward declarations */
+interface IEnumConnections;
+
+[
+    object,
+    uuid(b196b286-bab4-101a-b69c-00aa00341d07),
+    pointer_default(unique)
+]
+interface IConnectionPoint : IUnknown
+{
+    typedef IConnectionPoint *PCONNECTIONPOINT, *LPCONNECTIONPOINT;
+
+    HRESULT GetConnectionInterface( [out] IID *pIID );
+    HRESULT GetConnectionPointContainer( [out] IConnectionPointContainer **ppCPC );
+    HRESULT Advise( [in] IUnknown *pUnkSink, [out] DWORD *pdwCookie );
+    HRESULT Unadvise( [in] DWORD dwCookie );
+    HRESULT EnumConnections( [out] IEnumConnections **ppEnum );
+}
+
+
+/*****************************************************************************
+ * IConnectionPointContainer interface
+ */
+interface IEnumConnectionPoints; /* forward declaration */
+[
+    object,
+    uuid(b196b284-bab4-101a-b69c-00aa00341d07),
+    pointer_default(unique)
+]
+interface IConnectionPointContainer : IUnknown
+{
+    typedef IConnectionPointContainer *PCONNECTIONPOINTCONTAINER, *LPCONNECTIONPOINTCONTAINER;
+
+    HRESULT EnumConnectionPoints( [out] IEnumConnectionPoints **ppEnum );
+    HRESULT FindConnectionPoint( [in] REFIID riid, [out] IConnectionPoint **ppCP );
+}
+
+
+/*****************************************************************************
+ * IEnumConnections interface
+ */
+[
+    object,
+    uuid(b196b287-bab4-101a-b69c-00aa00341d07),
+    pointer_default(unique)
+]
+interface IEnumConnections : IUnknown
+{
+    typedef IEnumConnections *PENUMCONNECTIONS, *LPENUMCONNECTIONS;
+
+    typedef struct tagCONNECTDATA
+    {
+        IUnknown *pUnk;
+        DWORD dwCookie;
+    } CONNECTDATA, *PCONNECTDATA, *LPCONNECTDATA;
+
+    [local]
+    HRESULT Next(
+        [in] ULONG cConnections,
+        [out, size_is(cConnections), length_is(*pcFetched)] LPCONNECTDATA rgcd,
+        [out] ULONG *pcFetched);
+
+    [call_as(Next)]
+    HRESULT RemoteNext(
+        [in] ULONG cConnections,
+        [out, size_is(cConnections), length_is(*pcFetched)] LPCONNECTDATA rgcd,
+        [out] ULONG *pcFetched);
+
+    HRESULT Skip( [in] ULONG cConnections );
+
+    HRESULT Reset();
+
+    HRESULT Clone( [out] IEnumConnections **ppEnum );
+}
+
+
+/*****************************************************************************
+ * IEnumConnectionPoints interface
+ */
+[
+    object,
+    uuid(b196b285-bab4-101a-b69c-00aa00341d07),
+    pointer_default(unique)
+]
+interface IEnumConnectionPoints : IUnknown
+{
+    typedef IEnumConnectionPoints *PENUMCONNECTIONPOINTS, *LPENUMCONNECTIONPOINTS;
+
+    [local]
+    HRESULT Next(
+        [in] ULONG cConnections,
+        [out, size_is(cConnections), length_is(*pcFetched)] LPCONNECTIONPOINT *ppCP,
+        [out] ULONG *pcFetched);
+
+    [call_as(Next)]
+    HRESULT RemoteNext(
+        [in] ULONG cConnections,
+        [out, size_is(cConnections), length_is(*pcFetched)] LPCONNECTIONPOINT *ppCP,
+        [out] ULONG *pcFetched);
+
+    HRESULT Skip( [in] ULONG cConnections );
+
+    HRESULT Reset();
+
+    HRESULT Clone( [out] IEnumConnectionPoints **ppEnum );
+}
+
+
+/*****************************************************************************
+ * IPropertyPage interface
+ */
+interface IPropertyPageSite;  /* forward declaration */
+[
+    object,
+    uuid(b196b28d-bab4-101a-b69c-00aa00341d07),
+    pointer_default(unique)
+]
+interface IPropertyPage : IUnknown
+{
+    typedef IPropertyPage *LPPROPERTYPAGE;
+
+    typedef struct tagPROPPAGEINFO
+    {
+        ULONG cb;
+        LPOLESTR pszTitle;
+        SIZE size;
+        LPOLESTR pszDocString;
+        LPOLESTR pszHelpFile;
+        DWORD dwHelpContext;
+    } PROPPAGEINFO, *LPPROPPAGEINFO;
+
+    HRESULT SetPageSite( [in] IPropertyPageSite *pPageSite );
+
+    HRESULT Activate(
+        [in] HWND hWndParent,
+        [in] LPCRECT pRect,
+        [in] BOOL bModal);
+
+    HRESULT Deactivate();
+
+    HRESULT GetPageInfo( [out] PROPPAGEINFO *pPageInfo );
+
+    HRESULT SetObjects(
+        [in] ULONG cObjects,
+        [in, size_is(cObjects)] IUnknown **ppUnk);
+
+    HRESULT Show( [in] UINT nCmdShow );
+
+    HRESULT Move( [in] LPCRECT pRect );
+
+    HRESULT IsPageDirty();
+
+    HRESULT Apply();
+
+    HRESULT Help( [in] LPCOLESTR pszHelpDir );
+
+    HRESULT TranslateAccelerator( [in] MSG *pMsg );
+}
+
+
+/*****************************************************************************
+ * IPropertyPage2 interface
+ */
+[
+    object,
+    uuid(01e44665-24ac-101b-84ed-08002b2ec713),
+    pointer_default(unique)
+]
+interface IPropertyPage2 : IPropertyPage
+{
+    typedef IPropertyPage2 *LPPROPERTYPAGE2;
+
+    HRESULT EditProperty( [in] DISPID dispID );
+}
+
+
+/*****************************************************************************
+ * IPropertyPageSite interface
+ */
+[
+    object,
+    uuid(b196b28c-bab4-101a-b69c-00aa00341d07),
+    pointer_default(unique)
+]
+interface IPropertyPageSite : IUnknown
+{
+    typedef IPropertyPageSite *LPPROPERTYPAGESITE;
+
+    typedef enum tagPROPPAGESTATUS
+    {
+        PROPPAGESTATUS_DIRTY = 0x1,
+        PROPPAGESTATUS_VALIDATE = 0x2,
+        PROPPAGESTATUS_CLEAN = 0x4
+    } PROPPAGESTATUS;
+
+    HRESULT OnStatusChange( [in] DWORD dwFlags );
+    HRESULT GetLocaleID( [out] LCID *pLocaleID );
+    HRESULT GetPageContainer( [out] IUnknown **ppUnk );
+    HRESULT TranslateAccelerator( [in] MSG *pMsg );
+}
+
+
+/*****************************************************************************
+ * IPropertyNotifySink interface
+ */
+[
+    object,
+    uuid(9bfbbc02-eff1-101a-84ed-00aa00341d07),
+    pointer_default(unique)
+]
+interface IPropertyNotifySink : IUnknown
+{
+    typedef IPropertyNotifySink *LPPROPERTYNOTIFYSINK;
+
+    HRESULT OnChanged( [in] DISPID dispID );
+    HRESULT OnRequestEdit( [in] DISPID dispID );
+}
+
+
+/*****************************************************************************
+ * ISimpleFrameSite interface
+ */
+[
+    object,
+    uuid(742b0e01-14e6-101b-914e-00aa00300cab),
+    pointer_default(unique)
+]
+interface ISimpleFrameSite : IUnknown
+{
+    typedef ISimpleFrameSite *LPSIMPLEFRAMESITE;
+
+    HRESULT PreMessageFilter(
+        [in] HWND hWnd,
+        [in] UINT msg,
+        [in] WPARAM wp,
+        [in] LPARAM lp,
+        [out] LRESULT *plResult,
+        [out] DWORD *pdwCookie);
+
+    HRESULT PostMessageFilter(
+        [in] HWND hWnd,
+        [in] UINT msg,
+        [in] WPARAM wp,
+        [in] LPARAM lp,
+        [out] LRESULT *plResult,
+        [in] DWORD dwCookie);
+}
+
+
+/*****************************************************************************
+ * IPersistStreamInit interface
+ */
+[
+    object,
+    uuid(7fd52380-4e07-101b-ae2d-08002b2ec713),
+    pointer_default(unique)
+]
+interface IPersistStreamInit : IPersist
+{
+    typedef IPersistStreamInit *LPPERSISTSTREAMINIT;
+
+    HRESULT IsDirty();
+    HRESULT Load( [in] LPSTREAM pStm );
+    HRESULT Save( [in] LPSTREAM pStm, [in] BOOL fClearDirty );
+    HRESULT GetSizeMax( [out] ULARGE_INTEGER *pcbSize );
+    HRESULT InitNew();
+}
+
+
+/*****************************************************************************
+ * IPersistMemory interface
+ */
+[
+    object,
+    uuid(bd1ae5e0-a6ae-11ce-bd37-504200c10000),
+    pointer_default(unique)
+]
+interface IPersistMemory : IPersist
+{
+    typedef IPersistMemory *LPPERSISTMEMORY;
+
+    HRESULT IsDirty();
+
+    [local]
+    HRESULT Load(
+        [in, size_is(cbSize)] LPVOID pMem,
+        [in] ULONG cbSize);
+
+    [call_as(Load)]
+    HRESULT RemoteLoad(
+        [in, size_is(cbSize)] BYTE *pMem,
+        [in] ULONG cbSize);
+
+    [local]
+    HRESULT Save(
+        [out, size_is(cbSize)] LPVOID pMem,
+        [in] BOOL fClearDirty,
+        [in] ULONG cbSize);
+
+    [call_as(Save)]
+    HRESULT RemoteSave(
+        [out, size_is(cbSize)] BYTE *pMem,
+        [in] BOOL fClearDirty,
+        [in] ULONG cbSize);
+
+    HRESULT GetSizeMax( [out] ULONG *pCbSize );
+    HRESULT InitNew();
+}
+
+
+/*****************************************************************************
+ * IPersistPropertyBag interface
+ */
+[
+    object,
+    uuid(37d84f60-42cb-11ce-8135-00aa004bb851),
+    pointer_default(unique)
+]
+interface IPersistPropertyBag : IPersist
+{
+    typedef IPersistPropertyBag *LPPERSISTPROPERTYBAG;
+
+    HRESULT InitNew();
+
+    HRESULT Load(
+        [in] IPropertyBag *pPropBag,
+        [in] IErrorLog *pErrorLog);
+
+    HRESULT Save(
+        [in] IPropertyBag *pPropBag,
+        [in] BOOL fClearDirty,
+        [in] BOOL fSaveAllProperties);
+}
+
+
+/*****************************************************************************
+ * IPropertyBag2 interface
+ */
+[
+    object,
+    uuid(22f55882-280b-11d0-a8a9-00a0c90c2004),
+    pointer_default(unique)
+]
+interface IPropertyBag2 : IUnknown
+{
+    typedef IPropertyBag2 *LPPROPERTYBAG2;
+
+    typedef enum tagPROPBAG2_TYPE
+    {
+        PROPBAG2_TYPE_UNDEFINED = 0,
+        PROPBAG2_TYPE_DATA = 1,
+        PROPBAG2_TYPE_URL = 2,
+        PROPBAG2_TYPE_OBJECT = 3,
+        PROPBAG2_TYPE_STREAM = 4,
+        PROPBAG2_TYPE_STORAGE = 5,
+        PROPBAG2_TYPE_MONIKER = 6
+    } PROPBAG2_TYPE;
+
+    typedef struct tagPROPBAG2
+    {
+        DWORD dwType;
+        VARTYPE vt;
+        CLIPFORMAT cfType;
+        DWORD dwHint;
+        LPOLESTR pstrName;
+        CLSID clsid;
+    } PROPBAG2;
+
+    HRESULT Read(
+        [in] ULONG cProperties,
+        [in] PROPBAG2 *pPropBag,
+        [in] IErrorLog *pErrLog,
+        [out] VARIANT *pvarValue,
+        [out] HRESULT *phrError);
+
+    HRESULT Write(
+        [in] ULONG cProperties,
+        [in] PROPBAG2 *pPropBag,
+        [in] VARIANT *pvarValue);
+
+    HRESULT CountProperties(
+        [out] ULONG *pcProperties );
+
+    HRESULT GetPropertyInfo(
+        [in] ULONG iProperty,
+        [in] ULONG cProperties,
+        [out] PROPBAG2 *pPropBag,
+        [out] ULONG *pcProperties);
+
+    HRESULT LoadObject(
+        [in] LPCOLESTR pstrName,
+        [in] DWORD dwHint,
+        [in] IUnknown *pUnkObject,
+        [in] IErrorLog *pErrLog);
+}
+
+
+/*****************************************************************************
+ * IPersistPropertyBag2 interface
+ */
+[
+    object,
+    uuid(22f55881-280b-11d0-a8a9-00a0c90c2004),
+    pointer_default(unique)
+]
+interface IPersistPropertyBag2 : IPersist
+{
+    typedef IPersistPropertyBag2 *LPPERSISTPROPERTYBAG2;
+
+    HRESULT InitNew();
+
+    HRESULT Load(
+        [in] IPropertyBag2 *pPropBag,
+        [in] IErrorLog *pErrorLog);
+
+    HRESULT Save(
+        [in] IPropertyBag2 *pPropBag,
+        [in] BOOL fClearDirty,
+        [in] BOOL fSaveAllProperties);
+
+    HRESULT IsDirty();
+}
+
+
+/*****************************************************************************
+ * ISpecifyPropertyPages interface
+ */
+[
+    object,
+    uuid(b196b28b-bab4-101a-b69c-00aa00341d07),
+    pointer_default(unique)
+]
+interface ISpecifyPropertyPages : IUnknown
+{
+    typedef ISpecifyPropertyPages *LPSPECIFYPROPERTYPAGES;
+
+    typedef struct tagCAUUID
+    {
+	ULONG cElems;
+        [size_is(cElems)] GUID *pElems;
+    } CAUUID, *LPCAUUID;
+
+    HRESULT GetPages( [out] CAUUID *pPages );
+}
+
+
+/*****************************************************************************
+ * IPerPropertyBrowsing interface
+ */
+[
+    object,
+    uuid(376bd3aa-3845-101b-84ed-08002b2ec713),
+    pointer_default(unique)
+]
+interface IPerPropertyBrowsing : IUnknown
+{
+    typedef IPerPropertyBrowsing *LPPERPROPERTYBROWSING;
+
+    typedef struct tagCALPOLESTR
+    {
+        ULONG cElems;
+        [size_is(cElems)] LPOLESTR *pElems;
+    } CALPOLESTR, *LPCALPOLESTR;
+
+    typedef struct tagCADWORD
+    {
+        ULONG cElems;
+        [size_is(cElems)] DWORD *pElems;
+    } CADWORD, *LPCADWORD;
+
+    HRESULT GetDisplayString(
+        [in] DISPID dispID,
+        [out] BSTR *pBstr);
+
+    HRESULT MapPropertyToPage(
+        [in] DISPID dispID,
+        [out] CLSID *pClsid);
+
+    HRESULT GetPredefinedStrings(
+        [in] DISPID dispID,
+        [out] CALPOLESTR *pCaStringsOut,
+        [out] CADWORD *pCaCookiesOut);
+
+    HRESULT GetPredefinedValue(
+        [in] DISPID dispID,
+        [in] DWORD dwCookie,
+        [out] VARIANT *pVarOut);
+}
+
+
+/*****************************************************************************
+ * IAdviseSinkEx interface
+ */
+[
+    object,
+    uuid(3af24290-0c96-11ce-a0cf-00aa00600ab8),
+    pointer_default(unique)
+]
+interface IAdviseSinkEx : IAdviseSink
+{
+    typedef IAdviseSinkEx *LPADVISESINKEX;
+
+    [local]
+    void OnViewStatusChange( [in] DWORD dwViewStatus );
+
+    [call_as(OnViewStatusChange)]
+    HRESULT RemoteOnViewStatusChange( [in] DWORD dwViewStatus );
+}
+
+
+/*****************************************************************************
+ * IPointerInactive interface
+ */
+[
+    object,
+    uuid(55980ba0-35aa-11cf-b671-00aa004cd6d8),
+    pointer_default(unique)
+]
+interface IPointerInactive : IUnknown
+{
+    typedef IPointerInactive *LPPOINTERINACTIVE;
+
+    HRESULT GetActivationPolicy(
+        [out] DWORD *pdwPolicy);
+
+    HRESULT OnInactiveMouseMove(
+        [in] LPCRECT pRectBounds,
+        [in] LONG x,
+        [in] LONG y,
+        [in] DWORD grfKeyState);
+
+    HRESULT OnInactiveSetCursor(
+        [in] LPCRECT pRectBounds,
+        [in] LONG x,
+        [in] LONG y,
+        [in] DWORD dwMouseMsg,
+        [in] BOOL fSetAlways);
+}
+
+
+/*****************************************************************************
+ * IObjectWithSite interface
+ */
+[
+    object,
+    uuid(fc4801a3-2ba9-11cf-a229-00aa003d7352),
+    pointer_default(unique)
+]
+interface IObjectWithSite : IUnknown
+{
+    typedef IObjectWithSite *LPOBJECTWITHSITE;
+
+    HRESULT SetSite(
+        [in] IUnknown * pUnkSite);
+
+    HRESULT GetSite(
+        [in] REFIID riid, 
+        [out, iid_is(riid)] PVOID *ppvSite);
+}
+
+
+/*****************************************************************************
+ * IOleUndoUnit interface
+ */
+interface IOleUndoManager;  /* forward declaration */
+[
+    object,
+    uuid(894ad3b0-ef97-11ce-9bc9-00aa00608e01),
+    pointer_default(unique)
+]
+interface IOleUndoUnit : IUnknown
+{
+    typedef IOleUndoUnit *LPOLEUNDOUNIT;
+
+    HRESULT Do( [in] IOleUndoManager *pUndoManager );
+    HRESULT GetDescription( [out] BSTR *pBstr );
+    HRESULT GetUnitType( [out] CLSID *pClsid, [out] LONG *plID );
+    HRESULT OnNextAdd();
+}
+
+
+/*****************************************************************************
+ * IOleParentUndoUnit interface
+ */
+[
+    object,
+    uuid(a1faf330-ef97-11ce-9bc9-00aa00608e01),
+    pointer_default(unique)
+]
+interface IOleParentUndoUnit : IOleUndoUnit
+{
+    typedef IOleParentUndoUnit *LPOLEPARENTUNDOUNIT;
+
+    HRESULT Open( [in] IOleParentUndoUnit *pPUU );
+    HRESULT Close( [in] IOleParentUndoUnit *pPUU, [in] BOOL fCommit );
+    HRESULT Add( [in] IOleUndoUnit *pUU );
+    HRESULT FindUnit( [in] IOleUndoUnit *pUU );
+    HRESULT GetParentState( [out] DWORD *pdwState );
+}
+
+
+/*****************************************************************************
+ * IEnumOleUndoUnits interface
+ */
+[
+    object,
+    uuid(b3e7c340-ef97-11ce-9bc9-00aa00608e01),
+    pointer_default(unique)
+]
+interface IEnumOleUndoUnits : IUnknown
+{
+    typedef IEnumOleUndoUnits *LPENUMOLEUNDOUNITS;
+
+    [local]
+    HRESULT Next(
+        [in] ULONG cElt,
+        [out, size_is(cElt), length_is(*pcEltFetched)] IOleUndoUnit **rgElt,
+        [out] ULONG *pcEltFetched);
+
+    [call_as(Next)]
+    HRESULT RemoteNext(
+        [in] ULONG cElt,
+        [out, size_is(cElt), length_is(*pcEltFetched)] IOleUndoUnit **rgElt,
+        [out] ULONG *pcEltFetched);
+
+    HRESULT Skip( [in] ULONG cElt );
+
+    HRESULT Reset();
+
+    HRESULT Clone( [out] IEnumOleUndoUnits **ppEnum );
+}
+
+
+/*****************************************************************************
+ * IOleUndoManager interface
+ */
+[
+    object,
+    uuid(d001f200-ef97-11ce-9bc9-00aa00608e01),
+    pointer_default(unique)
+]
+interface IOleUndoManager : IUnknown
+{
+cpp_quote("#define SID_SOleUndoManager IID_IOleUndoManager")
+    typedef IOleUndoManager *LPOLEUNDOMANAGER;
+
+    HRESULT Open( [in] IOleParentUndoUnit *pPUU );
+    HRESULT Close( [in] IOleParentUndoUnit *pPUU, [in] BOOL fCommit );
+    HRESULT Add( [in] IOleUndoUnit *pUU );
+    HRESULT GetOpenParentState( [out] DWORD *pdwState );
+    HRESULT DiscardFrom( [in] IOleUndoUnit *pUU );
+    HRESULT UndoTo( [in] IOleUndoUnit *pUU );
+    HRESULT RedoTo( [in] IOleUndoUnit *pUU );
+    HRESULT EnumUndoable( [out] IEnumOleUndoUnits **ppEnum );
+    HRESULT EnumRedoable( [out] IEnumOleUndoUnits **ppEnum );
+    HRESULT GetLastUndoDescription( [out] BSTR *pBstr );
+    HRESULT GetLastRedoDescription( [out] BSTR *pBstr );
+    HRESULT Enable( [in] BOOL fEnable );
+}
+
+
+/*****************************************************************************
+ * IQuickActivate interface
+ */
+[
+    object,
+    uuid(cf51ed10-62fe-11cf-bf86-00a0c9034836),
+    pointer_default(unique)
+]
+interface IQuickActivate : IUnknown
+{
+    typedef IQuickActivate *LPQUICKACTIVATE;
+
+    typedef enum tagQACONTAINERFLAGS
+    {
+        QACONTAINER_SHOWHATCHING = 0x1,
+        QACONTAINER_SHOWGRABHANDLES = 0x2,
+        QACONTAINER_USERMODE = 0x4,
+        QACONTAINER_DISPLAYASDEFAULT = 0x8,
+        QACONTAINER_UIDEAD = 0x10,
+        QACONTAINER_AUTOCLIP = 0x20,
+        QACONTAINER_MESSAGEREFLECT = 0x40,
+        QACONTAINER_SUPPORTSMNEMONICS = 0x80
+    } QACONTAINERFLAGS;
+
+    typedef DWORD OLE_COLOR;
+    
+    typedef struct tagQACONTAINER
+    {
+        ULONG cbSize;
+        IOleClientSite *pClientSite;
+        IAdviseSinkEx *pAdviseSink;
+        IPropertyNotifySink *pPropertyNotifySink;
+        IUnknown *pUnkEventSink;
+        DWORD dwAmbientFlags;
+        OLE_COLOR colorFore;
+        OLE_COLOR colorBack;
+        IFont *pFont;
+        IOleUndoManager *pUndoMgr;
+        DWORD dwAppearance;
+        LONG lcid;
+        HPALETTE hpal;
+        IBindHost *pBindHost;
+        IOleControlSite *pOleControlSite;
+        IServiceProvider *pServiceProvider;
+    } QACONTAINER;
+
+    typedef struct tagQACONTROL
+    {
+        ULONG cbSize;
+        DWORD dwMiscStatus;
+        DWORD dwViewStatus;
+        DWORD dwEventCookie;
+        DWORD dwPropNotifyCookie;
+        DWORD dwPointerActivationPolicy;
+    } QACONTROL;
+
+    [local]
+    HRESULT QuickActivate(
+        [in] QACONTAINER *pQaContainer,
+        [in,out] QACONTROL *pQaControl);
+
+    [call_as(QuickActivate)]
+    HRESULT RemoteQuickActivate(
+        [in] QACONTAINER *pQaContainer,
+        [out] QACONTROL *pQaControl);
+
+    HRESULT SetContentExtent( [in] LPSIZEL pSizel );
+
+    HRESULT GetContentExtent( [out] LPSIZEL pSizel );
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ocmm.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ocmm.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ocmm.idl	(revision 16410)
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2006 Matthew Kehrer
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "oaidl.idl";
+import "ocidl.idl";
+
+cpp_quote("EXTERN_C const GUID NAMEDTIMER_DRAW;")
+
+[
+    object,
+    uuid(3050F361-98B5-11CF-BB82-00AA00BDCE0B),
+    pointer_default(unique)
+]
+interface ITimerSink : IUnknown
+{
+    HRESULT OnTimer([in] VARIANT vtimeAdvise);
+}
+
+
+[
+    object,
+    uuid(3050F360-98B5-11CF-BB82-00AA00BDCE0B),
+    pointer_default(unique)
+]
+interface ITimer : IUnknown
+{
+    HRESULT Advise([in] VARIANT vtimeMin,
+                   [in] VARIANT vtimeMax,
+                   [in] VARIANT vtimeInterval,
+                   [in] DWORD dwFlags,
+                   [in] ITimerSink *pTimerSink,
+                   [out] DWORD *pdwCookie);
+
+    HRESULT Unadvise([in] DWORD dwCookie);
+
+    HRESULT Freeze([in] BOOL fFreeze);
+
+    HRESULT GetTime([out] VARIANT *pvtime);
+}
+
+
+[
+    object,
+    uuid(3050F35F-98B5-11CF-BB82-00AA00BDCE0B),
+    pointer_default(unique)
+]
+interface ITimerService : IUnknown
+{
+    HRESULT CreateTimer([in] ITimer *pReferenceTimer,
+                        [out] ITimer **ppNewTimer);
+
+    HRESULT GetNamedTimer([in] REFGUID rguidName,
+                          [out] ITimer **ppTimer);
+
+    HRESULT SetNamedTimerReference([in] REFGUID rguidName,
+                                   [in] ITimer *pReferenceTimer);
+}
+
+cpp_quote("#define SID_STimerService IID_ITimerService")
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/odbcinst.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/odbcinst.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/odbcinst.h	(revision 16410)
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2005 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_ODBCINST_H
+#define __WINE_ODBCINST_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <sql.h>
+
+/* flags for Installer function requests */
+#define ODBC_INSTALL_INQUIRY 	1
+#define ODBC_INSTALL_COMPLETE	2
+
+#define ODBC_INSTALL_DRIVER	1
+#define ODBC_REMOVE_DRIVER	2
+#define ODBC_CONFIG_DRIVER	3
+#define ODBC_CONFIG_DRIVER_MAX  100
+
+#define ODBC_ADD_DSN            1
+#define ODBC_CONFIG_DSN         2
+#define ODBC_REMOVE_DSN         3
+#define ODBC_ADD_SYS_DSN        4
+#define ODBC_CONFIG_SYS_DSN     5
+#define ODBC_REMOVE_SYS_DSN     6
+#define ODBC_REMOVE_DEFAULT_DSN 7
+
+/* Mode values for SQLSetConfigMode/SQLGetConfigMode */
+#define ODBC_BOTH_DSN 0
+#define ODBC_USER_DSN 1
+#define ODBC_SYSTEM_DSN 2
+
+/* error values */
+#define ODBC_ERROR_GENERAL_ERR			1
+#define ODBC_ERROR_INVALID_BUFF_LEN		2
+#define ODBC_ERROR_INVALID_HWND			3
+#define ODBC_ERROR_INVALID_STR			4
+#define ODBC_ERROR_INVALID_REQUEST_TYPE		5
+#define ODBC_ERROR_COMPONENT_NOT_FOUND		6
+#define ODBC_ERROR_INVALID_NAME			7
+#define ODBC_ERROR_INVALID_KEYWORD_VALUE	8
+#define ODBC_ERROR_INVALID_DSN			9
+#define ODBC_ERROR_INVALID_INF			10
+#define ODBC_ERROR_REQUEST_FAILED		11
+#define ODBC_ERROR_INVALID_PATH			12
+#define ODBC_ERROR_LOAD_LIB_FAILED		13
+#define ODBC_ERROR_INVALID_PARAM_SEQUENCE	14
+#define ODBC_ERROR_INVALID_LOG_FILE		15
+#define ODBC_ERROR_USER_CANCELED		16
+#define ODBC_ERROR_USAGE_UPDATE_FAILED		17
+#define ODBC_ERROR_CREATE_DSN_FAILED		18
+#define ODBC_ERROR_WRITING_SYSINFO_FAILED	19
+#define ODBC_ERROR_REMOVE_DSN_FAILED		20
+#define ODBC_ERROR_OUT_OF_MEM			21
+#define ODBC_ERROR_OUTPUT_STRING_TRUNCATED	22
+
+
+BOOL WINAPI ODBCCPlApplet(LONG,LONG,LONG*,LONG*);
+BOOL WINAPI SQLConfigDataSource(HWND,WORD,LPCSTR,LPCSTR);
+BOOL WINAPI SQLConfigDataSourceW(HWND,WORD,LPCWSTR,LPCWSTR);
+BOOL WINAPI SQLConfigDriver(HWND,WORD,LPCSTR,LPCSTR,LPSTR,WORD,WORD*);
+BOOL WINAPI SQLConfigDriverW(HWND,WORD,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*);
+BOOL WINAPI SQLCreateDataSource(HWND,LPCSTR);
+BOOL WINAPI SQLCreateDataSourceW(HWND,LPCWSTR);
+BOOL WINAPI SQLGetAvailableDrivers(LPCSTR,LPSTR,WORD,WORD*);
+BOOL WINAPI SQLGetAvailableDriversW(LPCWSTR,LPWSTR,WORD,WORD*);
+BOOL WINAPI SQLGetConfigMode(UWORD*);
+BOOL WINAPI SQLGetInstalledDrivers(LPSTR,WORD,WORD*);
+BOOL WINAPI SQLGetInstalledDriversW(LPWSTR,WORD,WORD*);
+int WINAPI SQLGetPrivateProfileString(LPCSTR,LPCSTR,LPCSTR,LPCSTR,int,LPCSTR);
+int WINAPI SQLGetPrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,int,LPCWSTR);
+BOOL WINAPI SQLGetTranslator(HWND,LPSTR,WORD,WORD*,LPSTR,WORD,WORD*,DWORD*);
+BOOL WINAPI SQLGetTranslatorW(HWND,LPWSTR,WORD,WORD*,LPWSTR,WORD,WORD*,DWORD*);
+BOOL WINAPI SQLInstallDriver(LPCSTR,LPCSTR,LPSTR,WORD,WORD*);
+BOOL WINAPI SQLInstallDriverW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*);
+BOOL WINAPI SQLInstallDriverEx(LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD);
+BOOL WINAPI SQLInstallDriverExW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD);
+BOOL WINAPI SQLInstallDriverManager(LPSTR,WORD,WORD*);
+BOOL WINAPI SQLInstallDriverManagerW(LPWSTR,WORD,WORD*);
+SQLRETURN WINAPI SQLInstallerError(WORD,DWORD*,LPSTR,WORD,WORD*);
+SQLRETURN WINAPI SQLInstallerErrorW(WORD,DWORD*,LPWSTR,WORD,WORD*);
+BOOL WINAPI SQLInstallODBC(HWND,LPCSTR,LPCSTR,LPCSTR);
+BOOL WINAPI SQLInstallODBCW(HWND,LPCWSTR,LPCWSTR,LPCWSTR);
+BOOL WINAPI SQLInstallTranslatorEx(LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD);
+BOOL WINAPI SQLInstallTranslatorExW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD);
+BOOL WINAPI SQLInstallTranslator(LPCSTR,LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD);
+BOOL WINAPI SQLInstallTranslatorW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD);
+BOOL WINAPI SQLManageDataSources(HWND hwnd);
+SQLRETURN WINAPI SQLPostInstallerError(DWORD,LPCSTR);
+SQLRETURN WINAPI SQLPostInstallerErrorW(DWORD,LPCWSTR);
+BOOL WINAPI SQLReadFileDSN(LPCSTR,LPCSTR,LPCSTR,LPSTR,WORD,WORD*);
+BOOL WINAPI SQLReadFileDSNW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*);
+BOOL WINAPI SQLRemoveDefaultDataSource(void);
+BOOL WINAPI SQLRemoveDriver(LPCSTR,BOOL,LPDWORD);
+BOOL WINAPI SQLRemoveDriverW(LPCWSTR,BOOL,LPDWORD);
+BOOL WINAPI SQLRemoveDriverManager(LPDWORD);
+BOOL WINAPI SQLRemoveDSNFromIni(LPCSTR);
+BOOL WINAPI SQLRemoveDSNFromIniW(LPCWSTR);
+BOOL WINAPI SQLRemoveTranslator(LPCSTR,LPDWORD);
+BOOL WINAPI SQLRemoveTranslatorW(LPCWSTR,LPDWORD);
+BOOL WINAPI SQLSetConfigMode(UWORD);
+BOOL WINAPI SQLValidDSN(LPCSTR);
+BOOL WINAPI SQLValidDSNW(LPCWSTR);
+BOOL WINAPI SQLWriteDSNToIni(LPCSTR,LPCSTR);
+BOOL WINAPI SQLWriteDSNToIniW(LPCWSTR,LPCWSTR);
+BOOL WINAPI SQLWriteFileDSN(LPCSTR,LPCSTR,LPCSTR,LPCSTR);
+BOOL WINAPI SQLWriteFileDSNW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR);
+BOOL WINAPI SQLWritePrivateProfileString(LPCSTR,LPCSTR,LPCSTR,LPCSTR);
+BOOL WINAPI SQLWritePrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*__WINE_ODBCINST_H*/
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ole2.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ole2.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ole2.h	(revision 16410)
@@ -0,0 +1,167 @@
+/*
+ * Declarations for OLE2
+ *
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_OLE2_H
+#define __WINE_OLE2_H
+
+#include <winerror.h>
+#include <objbase.h>
+#include <oleauto.h>
+#include <oleidl.h>
+
+struct tagMSG;
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+#define E_DRAW                  VIEW_E_DRAW
+#define DATA_E_FORMATETC        DV_E_FORMATETC
+
+#define OLEIVERB_PRIMARY            (0L)
+#define OLEIVERB_SHOW               (-1L)
+#define OLEIVERB_OPEN               (-2L)
+#define OLEIVERB_HIDE               (-3L)
+#define OLEIVERB_UIACTIVATE         (-4L)
+#define OLEIVERB_INPLACEACTIVATE    (-5L)
+#define OLEIVERB_DISCARDUNDOSTATE   (-6L)
+#define OLEIVERB_PROPERTIES         (-7L)
+
+#define EMBDHLP_INPROC_HANDLER  0x00000000
+#define EMBDHLP_INPROC_SERVER   0x00000001
+#define EMBDHLP_CREATENOW       0x00000000
+#define EMBDHLP_DELAYCREATE     0x00010000
+
+/*
+ * API declarations
+ */
+HRESULT     WINAPI RegisterDragDrop(HWND,LPDROPTARGET);
+HRESULT     WINAPI RevokeDragDrop(HWND);
+HRESULT     WINAPI DoDragDrop(LPDATAOBJECT,LPDROPSOURCE,DWORD,DWORD*);
+HRESULT  WINAPI OleLoadFromStream(IStream *pStm,REFIID iidInterface,void** ppvObj);
+HRESULT  WINAPI OleSaveToStream(IPersistStream *pPStm,IStream *pStm);
+HOLEMENU WINAPI OleCreateMenuDescriptor(HMENU hmenuCombined,LPOLEMENUGROUPWIDTHS lpMenuWidths);
+HRESULT   WINAPI OleDestroyMenuDescriptor(HOLEMENU hmenuDescriptor);
+HRESULT  WINAPI OleSetMenuDescriptor(HOLEMENU hmenuDescriptor,HWND hwndFrame,HWND hwndActiveObject,LPOLEINPLACEFRAME lpFrame,LPOLEINPLACEACTIVEOBJECT lpActiveObject);
+
+HRESULT WINAPI WriteClassStg(IStorage *pstg, REFCLSID rclsid);
+HRESULT WINAPI ReadClassStg(IStorage *pstg,CLSID *pclsid);
+HRESULT WINAPI WriteClassStm(IStream *pStm,REFCLSID rclsid);
+HRESULT WINAPI ReadClassStm(IStream *pStm,CLSID *pclsid);
+
+
+HRESULT     WINAPI OleSave(LPPERSISTSTORAGE pPS, LPSTORAGE pStg, BOOL fSameAsLoad);
+HRESULT     WINAPI OleRegGetUserType(REFCLSID clsid,
+				     DWORD dwFormOfType,
+				     LPOLESTR* pszUserType);
+HRESULT     WINAPI OleRegGetMiscStatus (REFCLSID clsid, DWORD dwAspect, DWORD* pdwStatus);
+HRESULT     WINAPI OleRegEnumFormatEtc (REFCLSID clsid,
+					DWORD    dwDirection,
+					LPENUMFORMATETC* ppenumFormatetc);
+HRESULT     WINAPI CreateStreamOnHGlobal (HGLOBAL hGlobal, BOOL fDeleteOnRelease, LPSTREAM* ppstm);
+HRESULT     WINAPI GetHGlobalFromStream(LPSTREAM pstm, HGLOBAL* phglobal);
+HRESULT     WINAPI OleRegEnumVerbs (REFCLSID clsid, LPENUMOLEVERB* ppenum);
+BOOL        WINAPI OleIsRunning(LPOLEOBJECT pObject);
+HRESULT     WINAPI OleCreateLinkFromData(LPDATAOBJECT pSrcDataObj, REFIID riid,
+                DWORD renderopt, LPFORMATETC pFormatEtc,
+                LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
+                LPVOID* ppvObj);
+HRESULT     WINAPI OleSetContainedObject(LPUNKNOWN pUnknown, BOOL fContained);
+HRESULT     WINAPI OleNoteObjectVisible(LPUNKNOWN pUnknown, BOOL fVisible);
+HRESULT     WINAPI OleQueryLinkFromData(IDataObject* pSrcDataObject);
+HRESULT     WINAPI OleQueryCreateFromData(LPDATAOBJECT pSrcDataObject);
+HRESULT     WINAPI OleRun(LPUNKNOWN pUnknown);
+HRESULT     WINAPI OleDraw(LPUNKNOWN pUnknown, DWORD dwAspect, HDC hdcDraw, LPCRECT lprcBounds);
+VOID        WINAPI ReleaseStgMedium(LPSTGMEDIUM);
+HRESULT     WINAPI OleGetClipboard(IDataObject** ppDataObj);
+HRESULT     WINAPI OleIsCurrentClipboard(LPDATAOBJECT);
+HRESULT     WINAPI OleSetClipboard(LPDATAOBJECT);
+HRESULT     WINAPI OleCreateStaticFromData(LPDATAOBJECT pSrcDataObj, REFIID iid,
+                DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite,
+                LPSTORAGE pStg, LPVOID* ppvObj);
+HRESULT     WINAPI ReadFmtUserTypeStg(LPSTORAGE pstg, CLIPFORMAT* pcf, LPOLESTR* lplpszUserType);
+HRESULT     WINAPI OleLoad(LPSTORAGE pStg, REFIID riid, LPOLECLIENTSITE pClientSite, LPVOID* ppvObj);
+HRESULT     WINAPI GetHGlobalFromILockBytes(LPLOCKBYTES plkbyt, HGLOBAL* phglobal);
+HRESULT     WINAPI CreateILockBytesOnHGlobal(HGLOBAL hGlobal, BOOL fDeleteOnRelease, LPLOCKBYTES* pplkbyt);
+HRESULT     WINAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER* ppDAHolder);
+HGLOBAL     WINAPI OleGetIconOfClass(REFCLSID rclsid, LPOLESTR lpszLabel, BOOL fUseTypeAsLabel);
+HGLOBAL     WINAPI OleGetIconOfFile(LPOLESTR lpszPath, BOOL fUseFileAsLabel);
+HGLOBAL     WINAPI OleMetafilePictFromIconAndLabel(HICON hIcon, LPOLESTR lpszLabel, LPOLESTR lpszSourceFile, UINT iIconIndex);
+HRESULT     WINAPI OleLockRunning(LPUNKNOWN pUnknown, BOOL fLock, BOOL fLastUnlockCloses);
+HRESULT     WINAPI OleCreateFromFile(REFCLSID rclsid, LPCOLESTR lpszFileName, REFIID riid,
+                DWORD renderopt, LPFORMATETC lpFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID* ppvObj);
+HRESULT     WINAPI OleCreateLink(LPMONIKER pmkLinkSrc, REFIID riid, DWORD renderopt, LPFORMATETC lpFormatEtc,
+                LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID* ppvObj);
+HRESULT     WINAPI OleCreate(REFCLSID rclsid, REFIID riid, DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite,
+                LPSTORAGE pStg, LPVOID* ppvObj);
+HRESULT     WINAPI OleFlushClipboard(void);
+HRESULT     WINAPI GetConvertStg(LPSTORAGE pStg);
+HRESULT     WINAPI SetConvertStg(LPSTORAGE pStg, BOOL fConvert);
+BOOL        WINAPI IsAccelerator(HACCEL hAccel, int cAccelEntries, struct tagMSG* lpMsg, WORD* lpwCmd);
+HRESULT     WINAPI OleCreateLinkToFile(LPCOLESTR lpszFileName, REFIID riid, DWORD renderopt, LPFORMATETC lpFormatEtc,
+                LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID* ppvObj);
+HANDLE      WINAPI OleDuplicateData(HANDLE hSrc, CLIPFORMAT cfFormat, UINT uiFlags);
+HRESULT     WINAPI WriteFmtUserTypeStg(LPSTORAGE pstg, CLIPFORMAT cf, LPOLESTR lpszUserType);
+HRESULT     WINAPI OleTranslateAccelerator (LPOLEINPLACEFRAME lpFrame, LPOLEINPLACEFRAMEINFO lpFrameInfo, struct tagMSG* lpmsg);
+HRESULT     WINAPI OleCreateFromData(LPDATAOBJECT pSrcDataObj, REFIID riid, DWORD renderopt, LPFORMATETC pFormatEtc,
+                LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID* ppvObj);
+HRESULT     WINAPI OleCreateDefaultHandler(REFCLSID  clsid,
+					   LPUNKNOWN pUnkOuter,
+					   REFIID    riid,
+					   LPVOID*   ppvObj);
+HRESULT     WINAPI OleCreateEmbeddingHelper(REFCLSID  clsid,
+					   LPUNKNOWN pUnkOuter,
+					   DWORD     flags,
+					   IClassFactory *pCF,
+					   REFIID    riid,
+					   LPVOID*   ppvObj);
+HRESULT     WINAPI CreateOleAdviseHolder (LPOLEADVISEHOLDER *ppOAHolder);
+HRESULT     WINAPI OleInitialize(LPVOID pvReserved);
+void        WINAPI OleUninitialize(void);
+BOOL        WINAPI IsValidInterface(LPUNKNOWN punk);
+DWORD       WINAPI OleBuildVersion(VOID);
+
+/*
+ *  OLE version conversion declarations
+ */
+
+
+typedef struct _OLESTREAM* LPOLESTREAM;
+typedef struct _OLESTREAMVTBL {
+	DWORD	(CALLBACK *Get)(LPOLESTREAM,LPSTR,DWORD);
+	DWORD	(CALLBACK *Put)(LPOLESTREAM,LPSTR,DWORD);
+} OLESTREAMVTBL;
+typedef OLESTREAMVTBL*	LPOLESTREAMVTBL;
+typedef struct _OLESTREAM {
+	LPOLESTREAMVTBL	lpstbl;
+} OLESTREAM;
+
+HRESULT     WINAPI OleConvertOLESTREAMToIStorage( LPOLESTREAM lpolestream, LPSTORAGE pstg, const DVTARGETDEVICE* ptd);
+HRESULT     WINAPI OleConvertIStorageToOLESTREAM( LPSTORAGE pstg, LPOLESTREAM lpolestream);
+
+HRESULT     WINAPI OleDoAutoConvert( LPSTORAGE pStg, LPCLSID pClsidNew );
+HRESULT     WINAPI OleGetAutoConvert( REFCLSID clsidOld, LPCLSID pClsidNew );
+HRESULT     WINAPI OleSetAutoConvert( REFCLSID clsidOld, REFCLSID clsidNew );
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif  /* __WINE_OLE2_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ole2ver.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ole2ver.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ole2ver.h	(revision 16410)
@@ -0,0 +1,44 @@
+/*
+ * Version number info
+ *
+ * Copyright (C) 1999 Paul Quinn
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_OLE2VER_H
+#define __WINE_OLE2VER_H
+
+/*
+ * other versions rmm/rup:
+ * 23/639
+ * 23/700
+ * 23/730
+ * 23/824
+ *
+ * Win98 SE original files:
+ * COMPOBJ: CoBuildVersion 23/700
+ * OLE2: OleBuildVersion -> COMPOBJ.CoBuildVersion
+ * OLE32: CoBuildVersion and Ole~ 23/824
+ *
+ * We probably should reorganize the OLE version stuff, i.e.
+ * use different values for every *BuildVersion function and Win version.
+ */
+
+/* bad: we shouldn't make use of it that globally ! */
+#define rmm             23
+#define rup		824
+
+#endif  /* __WINE_OLE2VER_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/oleacc.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/oleacc.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/oleacc.idl	(revision 16410)
@@ -0,0 +1,180 @@
+/*
+ * Copyright (C) 2005 Dmitry Timoshkov
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "oaidl.idl";
+
+cpp_quote("#define NAVDIR_UP         1")
+cpp_quote("#define NAVDIR_DOWN       2")
+cpp_quote("#define NAVDIR_LEFT       3")
+cpp_quote("#define NAVDIR_RIGHT      4")
+cpp_quote("#define NAVDIR_NEXT       5")
+cpp_quote("#define NAVDIR_PREVIOUS   6")
+cpp_quote("#define NAVDIR_FIRSTCHILD 7")
+cpp_quote("#define NAVDIR_LASTCHILD  8")
+
+cpp_quote("#define ROLE_SYSTEM_TITLEBAR     1")
+cpp_quote("#define ROLE_SYSTEM_MENUBAR      2")
+cpp_quote("#define ROLE_SYSTEM_SCROLLBAR    3")
+cpp_quote("#define ROLE_SYSTEM_GRIP         4")
+cpp_quote("#define ROLE_SYSTEM_SOUND        5")
+cpp_quote("#define ROLE_SYSTEM_CURSOR       6")
+cpp_quote("#define ROLE_SYSTEM_CARET        7")
+cpp_quote("#define ROLE_SYSTEM_ALERT        8")
+cpp_quote("#define ROLE_SYSTEM_WINDOW       9")
+cpp_quote("#define ROLE_SYSTEM_CLIENT       10")
+cpp_quote("#define ROLE_SYSTEM_MENUPOPUP    11")
+cpp_quote("#define ROLE_SYSTEM_MENUITEM     12")
+cpp_quote("#define ROLE_SYSTEM_TOOLTIP      13")
+cpp_quote("#define ROLE_SYSTEM_APPLICATION  14")
+cpp_quote("#define ROLE_SYSTEM_DOCUMENT     15")
+cpp_quote("#define ROLE_SYSTEM_PANE         16")
+cpp_quote("#define ROLE_SYSTEM_CHART        17")
+cpp_quote("#define ROLE_SYSTEM_DIALOG       18")
+cpp_quote("#define ROLE_SYSTEM_BORDER       19")
+cpp_quote("#define ROLE_SYSTEM_GROUPING     20")
+cpp_quote("#define ROLE_SYSTEM_SEPARATOR    21")
+cpp_quote("#define ROLE_SYSTEM_TOOLBAR      22")
+cpp_quote("#define ROLE_SYSTEM_STATUSBAR    23")
+cpp_quote("#define ROLE_SYSTEM_TABLE        24")
+cpp_quote("#define ROLE_SYSTEM_COLUMNHEADER 25")
+cpp_quote("#define ROLE_SYSTEM_ROWHEADER    26")
+cpp_quote("#define ROLE_SYSTEM_COLUMN       27")
+cpp_quote("#define ROLE_SYSTEM_ROW          28")
+cpp_quote("#define ROLE_SYSTEM_CELL         29")
+cpp_quote("#define ROLE_SYSTEM_LINK         30")
+cpp_quote("#define ROLE_SYSTEM_HELPBALLOON  31")
+cpp_quote("#define ROLE_SYSTEM_CHARACTER    32")
+cpp_quote("#define ROLE_SYSTEM_LIST         33")
+cpp_quote("#define ROLE_SYSTEM_LISTITEM     34")
+cpp_quote("#define ROLE_SYSTEM_OUTLINE      35")
+cpp_quote("#define ROLE_SYSTEM_OUTLINEITEM  36")
+cpp_quote("#define ROLE_SYSTEM_PAGETAB      37")
+cpp_quote("#define ROLE_SYSTEM_PROPERTYPAGE 38")
+cpp_quote("#define ROLE_SYSTEM_INDICATOR    39")
+cpp_quote("#define ROLE_SYSTEM_GRAPHIC      40")
+cpp_quote("#define ROLE_SYSTEM_STATICTEXT   41")
+cpp_quote("#define ROLE_SYSTEM_TEXT         42")
+cpp_quote("#define ROLE_SYSTEM_PUSHBUTTON   43")
+cpp_quote("#define ROLE_SYSTEM_CHECKBUTTON  44")
+cpp_quote("#define ROLE_SYSTEM_RADIOBUTTON  45")
+cpp_quote("#define ROLE_SYSTEM_COMBOBOX     46")
+cpp_quote("#define ROLE_SYSTEM_DROPLIST     47")
+cpp_quote("#define ROLE_SYSTEM_PROGRESSBAR  48")
+cpp_quote("#define ROLE_SYSTEM_DIAL         49")
+cpp_quote("#define ROLE_SYSTEM_HOTKEYFIELD  50")
+cpp_quote("#define ROLE_SYSTEM_SLIDER       51")
+cpp_quote("#define ROLE_SYSTEM_SPINBUTTON   52")
+cpp_quote("#define ROLE_SYSTEM_DIAGRAM      53")
+cpp_quote("#define ROLE_SYSTEM_ANIMATION    54")
+cpp_quote("#define ROLE_SYSTEM_EQUATION     55")
+cpp_quote("#define ROLE_SYSTEM_BUTTONDROPDOWN 56")
+cpp_quote("#define ROLE_SYSTEM_BUTTONMENU   57")
+cpp_quote("#define ROLE_SYSTEM_BUTTONDROPDOWNGRID 58")
+cpp_quote("#define ROLE_SYSTEM_WHITESPACE   59")
+cpp_quote("#define ROLE_SYSTEM_PAGETABLIST  60")
+cpp_quote("#define ROLE_SYSTEM_CLOCK        61")
+cpp_quote("#define ROLE_SYSTEM_SPLITBUTTON  62")
+cpp_quote("#define ROLE_SYSTEM_IPADDRESS    63")
+cpp_quote("#define ROLE_SYSTEM_OUTLINEBUTTON 64")
+
+cpp_quote("#define SELFLAG_NONE            0x00")
+cpp_quote("#define SELFLAG_TAKEFOCUS       0x01")
+cpp_quote("#define SELFLAG_TAKESELECTION   0x02")
+cpp_quote("#define SELFLAG_EXTENDSELECTION 0x04")
+cpp_quote("#define SELFLAG_ADDSELECTION    0x08")
+cpp_quote("#define SELFLAG_REMOVESELECTION 0x10")
+cpp_quote("#define SELFLAG_VALID           0x1f")
+
+[
+  local,
+  object,
+  uuid(618736e0-3c3d-11cf-810c-00aa00389b71),
+  pointer_default(unique)
+]
+interface IAccessible : IDispatch
+{
+    typedef [unique] IAccessible  *LPACCESSIBLE;
+    const long DISPID_ACC_PARENT     = -5000;
+    const long DISPID_ACC_CHILDCOUNT = -5001;
+    const long DISPID_ACC_CHILD      = -5002;
+    const long DISPID_ACC_NAME       = -5003;
+    const long DISPID_ACC_VALUE      = -5004;
+    const long DISPID_ACC_DESCRIPTION= -5005;
+    const long DISPID_ACC_ROLE       = -5006;
+    const long DISPID_ACC_STATE      = -5007;
+    const long DISPID_ACC_HELP       = -5008;
+    const long DISPID_ACC_HELPTOPIC  = -5009;
+    const long DISPID_ACC_KEYBOARDSHORTCUT = -5010;
+    const long DISPID_ACC_FOCUS      = -5011;
+    const long DISPID_ACC_SELECTION  = -5012;
+    const long DISPID_ACC_DEFAULTACTION = -5013;
+    const long DISPID_ACC_SELECT     = -5014;
+    const long DISPID_ACC_LOCATION   = -5015;
+    const long DISPID_ACC_NAVIGATE   = -5016;
+    const long DISPID_ACC_HITTEST    = -5017;
+    const long DISPID_ACC_DODEFAULTACTION = -5018;
+
+    [hidden, propget, id(DISPID_ACC_PARENT)] HRESULT accParent([out, retval]IDispatch** ppdispParent);
+    [hidden, propget, id(DISPID_ACC_CHILDCOUNT)] HRESULT accChildCount([out, retval] long* pcountChildren);
+    [hidden, propget, id(DISPID_ACC_CHILD)] HRESULT accChild([in] VARIANT varChildID, [out, retval]IDispatch **ppdispChild);
+    [hidden, propget, id(DISPID_ACC_NAME)] HRESULT accName([in]VARIANT varID, [out, retval] BSTR* pszName);
+    [hidden, propget, id(DISPID_ACC_VALUE)] HRESULT accValue([in]VARIANT varID, [out, retval] BSTR* pszValue);
+    [hidden, propget, id(DISPID_ACC_DESCRIPTION)] HRESULT accDescription([in]VARIANT varID, [out, retval] BSTR* pszDescription);
+    [hidden, propget, id(DISPID_ACC_ROLE)] HRESULT accRole([in]VARIANT varID, [out, retval]VARIANT* pvarRole);
+    [hidden, propget, id(DISPID_ACC_STATE)] HRESULT accState([in]VARIANT varID, [out, retval]VARIANT* pvarState);
+    [hidden, propget, id(DISPID_ACC_HELP)] HRESULT accHelp([in]VARIANT varID, [out, retval]BSTR* pszHelp);
+    [hidden, propget, id(DISPID_ACC_HELPTOPIC)] HRESULT accHelpTopic([out]BSTR* pszHelpFile, [in]VARIANT varID, [out, retval] long* pidTopic);
+    [hidden, propget, id(DISPID_ACC_KEYBOARDSHORTCUT)] HRESULT accKeyboardShortcut([in]VARIANT varID, [out, retval] BSTR* pszKeyboardShortcut);
+    [hidden, propget, id(DISPID_ACC_FOCUS)] HRESULT accFocus([out, retval] VARIANT* pvarID);
+    [hidden, propget, id(DISPID_ACC_SELECTION)] HRESULT accSelection([out, retval] VARIANT* pvarID);
+    [hidden, propget, id(DISPID_ACC_DEFAULTACTION)] HRESULT accDefaultAction([in]VARIANT varID, [out, retval] BSTR* pszDefaultAction);
+
+    [hidden, id(DISPID_ACC_SELECT)] HRESULT accSelect([in]long flagsSelect, [in]VARIANT varID);
+    [hidden, id(DISPID_ACC_LOCATION)] HRESULT accLocation([out]long* pxLeft, [out]long* pyTop, [out]long* pcxWidth, [out]long* pcyHeight, [in]VARIANT varID);
+    [hidden, id(DISPID_ACC_NAVIGATE)] HRESULT accNavigate([in]long navDir, [in]VARIANT varStart, [out, retval] VARIANT* pvarEnd);
+    [hidden, id(DISPID_ACC_HITTEST)] HRESULT accHitTest([in]long xLeft, [in]long yTop, [out,retval] VARIANT* pvarID);
+    [hidden, id(DISPID_ACC_DODEFAULTACTION)] HRESULT accDoDefaultAction([in]VARIANT varID);
+
+    [hidden, propput, id(DISPID_ACC_NAME)] HRESULT accName([in]VARIANT varID, [in]BSTR pszName);
+    [hidden, propput, id(DISPID_ACC_VALUE)] HRESULT accValue([in]VARIANT varID, [out, retval]BSTR pszValue);
+}
+
+cpp_quote("DEFINE_GUID(LIBID_Accessibility, 0x1ea4dbf0, 0x3c3b, 0x11cf, 0x81, 0x0c, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);")
+cpp_quote("DEFINE_GUID(CLSID_AccPropServices, 0xb5f8350b, 0x0548, 0x48b1, 0xa6, 0xee, 0x88, 0xbd, 0x00, 0xb4, 0xa5, 0xe7);")
+cpp_quote("DEFINE_GUID(IIS_IsOleaccProxy, 0x902697fa, 0x80e4, 0x4560, 0x80, 0x2a, 0xa1, 0x3f, 0x22, 0xa6, 0x47, 0x09);")
+
+cpp_quote("LRESULT WINAPI LresultFromObject(REFIID,WPARAM,LPUNKNOWN);")
+cpp_quote("HRESULT WINAPI ObjectFromLresult(LRESULT,REFIID,WPARAM,void **);")
+cpp_quote("HRESULT WINAPI WindowFromAccessibleObject(IAccessible *,HWND *);")
+cpp_quote("HRESULT WINAPI AccessibleObjectFromWindow(HWND,DWORD,REFIID,void **);")
+cpp_quote("HRESULT WINAPI AccessibleObjectFromEvent(HWND,DWORD,DWORD,IAccessible **,VARIANT *);")
+cpp_quote("HRESULT WINAPI AccessibleObjectFromPoint(POINT,IAccessible **,VARIANT *);")
+cpp_quote("HRESULT WINAPI AccessibleChildren(IAccessible *,LONG,LONG,VARIANT *,LONG *);")
+
+cpp_quote("void WINAPI GetOleaccVersionInfo(DWORD *,DWORD *);")
+cpp_quote("HRESULT WINAPI CreateStdAccessibleObject(HWND,LONG,REFIID,void **);")
+cpp_quote("HRESULT WINAPI CreateStdAccessibleProxyA(HWND,LPCSTR,LONG,REFIID,void **);")
+cpp_quote("HRESULT WINAPI CreateStdAccessibleProxyW(HWND,LPCWSTR,LONG,REFIID,void **);")
+cpp_quote("#define CreateStdAccessibleProxy WINELIB_NAME_AW(CreateStdAccessibleProxy)")
+
+cpp_quote("UINT WINAPI GetRoleTextA(DWORD,LPSTR,UINT);")
+cpp_quote("UINT WINAPI GetRoleTextW(DWORD,LPWSTR,UINT);")
+cpp_quote("#define GetRoleText WINELIB_NAME_AW(GetRoleText)")
+cpp_quote("UINT WINAPI GetStateTextA(DWORD,LPSTR,UINT);")
+cpp_quote("UINT WINAPI GetStateTextW(DWORD,LPWSTR,UINT);")
+cpp_quote("#define GetStateText WINELIB_NAME_AW(GetStateText)")
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/oleauto.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/oleauto.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/oleauto.h	(revision 16410)
@@ -0,0 +1,761 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_OLEAUTO_H
+#define __WINE_OLEAUTO_H
+
+#include <oaidl.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+DEFINE_OLEGUID(IID_StdOle, 0x00020430,0,0);
+
+#define STDOLE_MAJORVERNUM  1
+#define STDOLE_MINORVERNUM  0
+#define STDOLE_LCID         0
+
+#define STDOLE2_MAJORVERNUM 2
+#define STDOLE2_MINORVERNUM 0
+#define STDOLE2_LCID        0
+
+ULONG WINAPI OaBuildVersion(void);
+
+/* BSTR functions */
+BSTR WINAPI SysAllocString(const OLECHAR*);
+BSTR WINAPI SysAllocStringByteLen(LPCSTR,UINT);
+BSTR WINAPI SysAllocStringLen(const OLECHAR*,UINT);
+void WINAPI SysFreeString(BSTR);
+INT  WINAPI SysReAllocString(LPBSTR,const OLECHAR*);
+int  WINAPI SysReAllocStringLen(BSTR*,const OLECHAR*,UINT);
+UINT WINAPI SysStringByteLen(BSTR);
+UINT WINAPI SysStringLen(BSTR);
+
+/* IErrorInfo helpers */
+HRESULT WINAPI SetErrorInfo(ULONG,IErrorInfo*);
+HRESULT WINAPI GetErrorInfo(ULONG,IErrorInfo**);
+HRESULT WINAPI CreateErrorInfo(ICreateErrorInfo**);
+
+/* SafeArray functions */
+SAFEARRAY* WINAPI SafeArrayCreate(VARTYPE,UINT,SAFEARRAYBOUND*);
+SAFEARRAY* WINAPI SafeArrayCreateEx(VARTYPE,UINT,SAFEARRAYBOUND*,LPVOID);
+SAFEARRAY* WINAPI SafeArrayCreateVector(VARTYPE,LONG,ULONG);
+SAFEARRAY* WINAPI SafeArrayCreateVectorEx(VARTYPE,LONG,ULONG,LPVOID);
+
+HRESULT WINAPI SafeArrayAllocDescriptor(UINT,SAFEARRAY**);
+HRESULT WINAPI SafeArrayAllocDescriptorEx(VARTYPE,UINT,SAFEARRAY**);
+HRESULT WINAPI SafeArrayAllocData(SAFEARRAY*);
+HRESULT WINAPI SafeArrayDestroyDescriptor(SAFEARRAY*);
+HRESULT WINAPI SafeArrayPutElement(SAFEARRAY*,LONG*,void*);
+HRESULT WINAPI SafeArrayGetElement(SAFEARRAY*,LONG*,void*);
+HRESULT WINAPI SafeArrayLock(SAFEARRAY*);
+HRESULT WINAPI SafeArrayUnlock(SAFEARRAY*);
+HRESULT WINAPI SafeArrayGetUBound(SAFEARRAY*,UINT,LONG*);
+HRESULT WINAPI SafeArrayGetLBound(SAFEARRAY*,UINT,LONG*);
+UINT    WINAPI SafeArrayGetDim(SAFEARRAY*);
+UINT    WINAPI SafeArrayGetElemsize(SAFEARRAY*);
+HRESULT WINAPI SafeArrayGetVartype(SAFEARRAY*,VARTYPE*);
+HRESULT WINAPI SafeArrayAccessData(SAFEARRAY*,void**);
+HRESULT WINAPI SafeArrayUnaccessData(SAFEARRAY*);
+HRESULT WINAPI SafeArrayPtrOfIndex(SAFEARRAY*,LONG*,void **);
+HRESULT WINAPI SafeArrayCopyData(SAFEARRAY*,SAFEARRAY*);
+HRESULT WINAPI SafeArrayDestroyData(SAFEARRAY*);
+HRESULT WINAPI SafeArrayDestroy(SAFEARRAY*);
+HRESULT WINAPI SafeArrayCopy(SAFEARRAY*,SAFEARRAY**);
+HRESULT WINAPI SafeArrayRedim(SAFEARRAY*,SAFEARRAYBOUND*);
+HRESULT WINAPI SafeArraySetRecordInfo(SAFEARRAY*,IRecordInfo*);
+HRESULT WINAPI SafeArrayGetRecordInfo(SAFEARRAY*,IRecordInfo**);
+HRESULT WINAPI SafeArraySetIID(SAFEARRAY*,REFGUID);
+HRESULT WINAPI SafeArrayGetIID(SAFEARRAY*,GUID*);
+
+HRESULT WINAPI VectorFromBstr(BSTR,SAFEARRAY**);
+HRESULT WINAPI BstrFromVector(SAFEARRAY*,BSTR*);
+
+/* Object registration helpers */
+#define ACTIVEOBJECT_STRONG 0
+#define ACTIVEOBJECT_WEAK   1
+
+HRESULT WINAPI RegisterActiveObject(LPUNKNOWN,REFCLSID,DWORD,LPDWORD);
+HRESULT WINAPI RevokeActiveObject(DWORD,LPVOID);
+HRESULT WINAPI GetActiveObject(REFCLSID,LPVOID,LPUNKNOWN*);
+
+/* IRecordInfo helpers */
+HRESULT WINAPI GetRecordInfoFromTypeInfo(ITypeInfo*,IRecordInfo**);
+HRESULT WINAPI GetRecordInfoFromGuids(REFGUID,ULONG,ULONG,LCID,REFGUID,IRecordInfo**);
+
+/*
+ * Variants
+ */
+
+/* Macros for accessing the fields of the VARIANT type */
+#if (__STDC__ && !defined(_FORCENAMELESSUNION)) || defined(NONAMELESSUNION)
+#define V_UNION(A,B) ((A)->n1.n2.n3.B)
+#define V_VT(A)      ((A)->n1.n2.vt)
+#else
+#define V_UNION(A,B) ((A)->B)
+#define V_VT(A)      ((A)->vt)
+#endif
+
+#define V_ISBYREF(A)  (V_VT(A) & VT_BYREF)
+#define V_ISARRAY(A)  (V_VT(A) & VT_ARRAY)
+#define V_ISVECTOR(A) (V_VT(A) & VT_VECTOR)
+#define V_NONE(A)     V_I2(A)
+
+#define V_ARRAY(A)       V_UNION(A,parray)
+#define V_ARRAYREF(A)    V_UNION(A,pparray)
+#define V_BOOL(A)        V_UNION(A,boolVal)
+#define V_BOOLREF(A)     V_UNION(A,pboolVal)
+#define V_BSTR(A)        V_UNION(A,bstrVal)
+#define V_BSTRREF(A)     V_UNION(A,pbstrVal)
+#define V_BYREF(A)       V_UNION(A,byref)
+#define V_CY(A)          V_UNION(A,cyVal)
+#define V_CYREF(A)       V_UNION(A,pcyVal)
+#define V_DATE(A)        V_UNION(A,date)
+#define V_DATEREF(A)     V_UNION(A,pdate)
+#if (__STDC__ && !defined(_FORCENAMELESSUNION)) || defined(NONAMELESSUNION)
+#define V_DECIMAL(A)     ((A)->n1.decVal)
+#else
+#define V_DECIMAL(A)     ((A)->decVal)
+#endif
+#define V_DECIMALREF(A)  V_UNION(A,pdecVal)
+#define V_DISPATCH(A)    V_UNION(A,pdispVal)
+#define V_DISPATCHREF(A) V_UNION(A,ppdispVal)
+#define V_ERROR(A)       V_UNION(A,scode)
+#define V_ERRORREF(A)    V_UNION(A,pscode)
+#define V_I1(A)          V_UNION(A,cVal)
+#define V_I1REF(A)       V_UNION(A,pcVal)
+#define V_I2(A)          V_UNION(A,iVal)
+#define V_I2REF(A)       V_UNION(A,piVal)
+#define V_I4(A)          V_UNION(A,lVal)
+#define V_I4REF(A)       V_UNION(A,plVal)
+#define V_I8(A)          V_UNION(A,llVal)
+#define V_I8REF(A)       V_UNION(A,pllVal)
+#define V_INT(A)         V_UNION(A,intVal)
+#define V_INTREF(A)      V_UNION(A,pintVal)
+#ifdef _WIN64
+#define V_INT_PTR(A)     V_I8(A)
+#define V_INT_PTRREF(A)  V_I8REF(A)
+#else
+#define V_INT_PTR(A)     V_I4(A)
+#define V_INT_PTRREF(A)  V_I4REF(A)
+#endif
+#define V_R4(A)          V_UNION(A,fltVal)
+#define V_R4REF(A)       V_UNION(A,pfltVal)
+#define V_R8(A)          V_UNION(A,dblVal)
+#define V_R8REF(A)       V_UNION(A,pdblVal)
+#define V_UINT(A)        V_UNION(A,uintVal)
+#define V_UINTREF(A)     V_UNION(A,puintVal)
+#define V_UI1(A)         V_UNION(A,bVal)
+#define V_UI1REF(A)      V_UNION(A,pbVal)
+#define V_UI2(A)         V_UNION(A,uiVal)
+#define V_UI2REF(A)      V_UNION(A,puiVal)
+#define V_UI4(A)         V_UNION(A,ulVal)
+#define V_UI4REF(A)      V_UNION(A,pulVal)
+#define V_UI8(A)         V_UNION(A,ullVal)
+#define V_UI8REF(A)      V_UNION(A,pullVal)
+#ifdef _WIN64
+#define V_UINT_PTR(A)    V_UI8(A)
+#define V_UINT_PTRREF(A) V_UI8REF(A)
+#else
+#define V_UINT_PTR(A)    V_UI4(A)
+#define V_UINT_PTRREF(A) V_UI4REF(A)
+#endif
+#define V_UNKNOWN(A)     V_UNION(A,punkVal)
+#define V_UNKNOWNREF(A)  V_UNION(A,ppunkVal)
+#define V_VARIANTREF(A)  V_UNION(A,pvarVal)
+
+void    WINAPI VariantInit(VARIANT*);
+HRESULT WINAPI VariantClear(VARIANT*);
+HRESULT WINAPI VariantCopy(VARIANT*,VARIANT*);
+HRESULT WINAPI VariantCopyInd(VARIANT*,VARIANT*);
+HRESULT WINAPI VariantChangeType(VARIANT*,VARIANT*,USHORT,VARTYPE);
+HRESULT WINAPI VariantChangeTypeEx(VARIANT*,VARIANT*,LCID,USHORT,VARTYPE);
+
+/* VariantChangeType/VariantChangeTypeEx flags */
+#define VARIANT_NOVALUEPROP        0x01 /* Don't get the default value property from IDispatch */
+#define VARIANT_ALPHABOOL          0x02 /* Coerce to "True"|"False" instead of "-1"|"0" */
+#define VARIANT_NOUSEROVERRIDE     0x04 /* Pass LOCALE_NOUSEROVERRIDE to low level conversions */
+#define VARIANT_CALENDAR_HIJRI     0x08 /* Use the Hijri calendar */
+#define VARIANT_LOCALBOOL          0x10 /* Like VARIANT_ALPHABOOL, but use localised text */
+#define VARIANT_CALENDAR_THAI      0x20 /* Use the Thai buddhist calendar */
+#define VARIANT_CALENDAR_GREGORIAN 0x40 /* Use the Gregorian calendar */
+#define VARIANT_USE_NLS            0x80 /* Format result using NLS calls */
+
+/*
+ * Low level Variant coercion functions
+ */
+
+#define VT_HARDTYPE VT_RESERVED /* Don't coerce this variant when comparing it to others */
+
+/* Flags for low level coercions. LOCALE_ flags can also be passed */
+#define VAR_TIMEVALUEONLY       0x001 /* Ignore date portion of VT_DATE */
+#define VAR_DATEVALUEONLY       0x002 /* Ignore time portion of VT_DATE */
+#define VAR_VALIDDATE           0x004
+#define VAR_CALENDAR_HIJRI      0x008 /* Use the Hijri calendar */
+#define VAR_LOCALBOOL           0x010 /* VT_BOOL<->VT_BSTR: Use localised boolean text */
+#define VAR_FORMAT_NOSUBSTITUTE 0x020 /* Don't change format strings for un-coercable types */
+#define VAR_FOURDIGITYEARS      0x040 /* Always print years with 4 digits */
+#define VAR_CALENDAR_THAI       0x080 /* Use the Thai buddhist calendar */
+#define VAR_CALENDAR_GREGORIAN  0x100 /* Use the Gregorian calendar */
+
+#ifndef LOCALE_USE_NLS
+/* This is missing from native winnls.h, but may be added at some point */
+#define LOCALE_USE_NLS          0x10000000
+#endif
+
+#define VTDATEGRE_MIN -657434 /* Minimum possible Gregorian date: 1/1/100 */
+#define VTDATEGRE_MAX 2958465 /* Maximum possible Gregorian date: 31/12/9999 */
+
+HRESULT WINAPI VarUI1FromI2(SHORT,BYTE*);
+HRESULT WINAPI VarUI1FromI4(LONG,BYTE*);
+HRESULT WINAPI VarUI1FromI8(LONG64,BYTE*);
+HRESULT WINAPI VarUI1FromR4(FLOAT,BYTE*);
+HRESULT WINAPI VarUI1FromR8(DOUBLE,BYTE*);
+HRESULT WINAPI VarUI1FromDate(DATE,BYTE*);
+HRESULT WINAPI VarUI1FromBool(VARIANT_BOOL,BYTE*);
+HRESULT WINAPI VarUI1FromI1(signed char,BYTE*);
+HRESULT WINAPI VarUI1FromUI2(USHORT,BYTE*);
+HRESULT WINAPI VarUI1FromUI4(ULONG,BYTE*);
+HRESULT WINAPI VarUI1FromUI8(ULONG64,BYTE*);
+HRESULT WINAPI VarUI1FromStr(OLECHAR*,LCID,ULONG,BYTE*);
+HRESULT WINAPI VarUI1FromCy(CY,BYTE*);
+HRESULT WINAPI VarUI1FromDec(DECIMAL*,BYTE*);
+HRESULT WINAPI VarUI1FromDisp(IDispatch*,LCID,BYTE*);
+
+HRESULT WINAPI VarI2FromUI1(BYTE,SHORT*);
+HRESULT WINAPI VarI2FromI4(LONG,SHORT*);
+HRESULT WINAPI VarI2FromI8(LONG64,SHORT*);
+HRESULT WINAPI VarI2FromR4(FLOAT,SHORT*);
+HRESULT WINAPI VarI2FromR8(DOUBLE,SHORT*);
+HRESULT WINAPI VarI2FromDate(DATE,SHORT*);
+HRESULT WINAPI VarI2FromBool(VARIANT_BOOL,SHORT*);
+HRESULT WINAPI VarI2FromI1(signed char,SHORT*);
+HRESULT WINAPI VarI2FromUI2(USHORT,SHORT*);
+HRESULT WINAPI VarI2FromUI4(ULONG,SHORT*);
+HRESULT WINAPI VarI2FromUI8(ULONG64,SHORT*);
+HRESULT WINAPI VarI2FromStr(OLECHAR*,LCID,ULONG,SHORT*);
+HRESULT WINAPI VarI2FromCy(CY,SHORT*);
+HRESULT WINAPI VarI2FromDec(DECIMAL*,SHORT*);
+HRESULT WINAPI VarI2FromDisp(IDispatch*,LCID,SHORT*);
+
+HRESULT WINAPI VarI4FromUI1(BYTE,LONG*);
+HRESULT WINAPI VarI4FromI2(SHORT,LONG*);
+HRESULT WINAPI VarI4FromI8(LONG64,LONG*);
+HRESULT WINAPI VarI4FromR4(FLOAT,LONG*);
+HRESULT WINAPI VarI4FromR8(DOUBLE,LONG*);
+HRESULT WINAPI VarI4FromDate(DATE,LONG*);
+HRESULT WINAPI VarI4FromBool(VARIANT_BOOL,LONG*);
+HRESULT WINAPI VarI4FromI1(signed char,LONG*);
+HRESULT WINAPI VarI4FromUI2(USHORT,LONG*);
+HRESULT WINAPI VarI4FromUI4(ULONG,LONG*);
+HRESULT WINAPI VarI4FromUI8(ULONG64,LONG*);
+HRESULT WINAPI VarI4FromStr(OLECHAR*,LCID,ULONG,LONG*);
+HRESULT WINAPI VarI4FromCy(CY,LONG*);
+HRESULT WINAPI VarI4FromDec(DECIMAL*,LONG*);
+HRESULT WINAPI VarI4FromDisp(IDispatch*,LCID,LONG*);
+
+HRESULT WINAPI VarI8FromUI1(BYTE,LONG64*);
+HRESULT WINAPI VarI8FromI2(SHORT,LONG64*);
+HRESULT WINAPI VarI8FromI4(LONG,LONG64*);
+HRESULT WINAPI VarI8FromR4(FLOAT,LONG64*);
+HRESULT WINAPI VarI8FromR8(DOUBLE,LONG64*);
+HRESULT WINAPI VarI8FromDate(DATE,LONG64*);
+HRESULT WINAPI VarI8FromStr(OLECHAR*,LCID,ULONG,LONG64*);
+HRESULT WINAPI VarI8FromBool(VARIANT_BOOL,LONG64*);
+HRESULT WINAPI VarI8FromI1(signed char,LONG64*);
+HRESULT WINAPI VarI8FromUI2(USHORT,LONG64*);
+HRESULT WINAPI VarI8FromUI4(ULONG,LONG64*);
+HRESULT WINAPI VarI8FromUI8(ULONG64,LONG64*);
+HRESULT WINAPI VarI8FromDec(DECIMAL *pdecIn,LONG64*);
+HRESULT WINAPI VarI8FromInt(INT intIn,LONG64*);
+HRESULT WINAPI VarI8FromCy(CY,LONG64*);
+HRESULT WINAPI VarI8FromDisp(IDispatch*,LCID,LONG64*);
+
+HRESULT WINAPI VarR4FromUI1(BYTE,FLOAT*);
+HRESULT WINAPI VarR4FromI2(SHORT,FLOAT*);
+HRESULT WINAPI VarR4FromI4(LONG,FLOAT*);
+HRESULT WINAPI VarR4FromI8(LONG64,FLOAT*);
+HRESULT WINAPI VarR4FromR8(DOUBLE,FLOAT*);
+HRESULT WINAPI VarR4FromDate(DATE,FLOAT*);
+HRESULT WINAPI VarR4FromBool(VARIANT_BOOL,FLOAT*);
+HRESULT WINAPI VarR4FromI1(signed char,FLOAT*);
+HRESULT WINAPI VarR4FromUI2(USHORT,FLOAT*);
+HRESULT WINAPI VarR4FromUI4(ULONG,FLOAT*);
+HRESULT WINAPI VarR4FromUI8(ULONG64,FLOAT*);
+HRESULT WINAPI VarR4FromStr(OLECHAR*,LCID,ULONG,FLOAT*);
+HRESULT WINAPI VarR4FromCy(CY,FLOAT*);
+HRESULT WINAPI VarR4FromDec(DECIMAL*,FLOAT*);
+HRESULT WINAPI VarR4FromDisp(IDispatch*,LCID,FLOAT*);
+
+HRESULT WINAPI VarR8FromUI1(BYTE,double*);
+HRESULT WINAPI VarR8FromI2(SHORT,double*);
+HRESULT WINAPI VarR8FromI4(LONG,double*);
+HRESULT WINAPI VarR8FromI8(LONG64,double*);
+HRESULT WINAPI VarR8FromR4(FLOAT,double*);
+HRESULT WINAPI VarR8FromDate(DATE,double*);
+HRESULT WINAPI VarR8FromBool(VARIANT_BOOL,double*);
+HRESULT WINAPI VarR8FromI1(signed char,double*);
+HRESULT WINAPI VarR8FromUI2(USHORT,double*);
+HRESULT WINAPI VarR8FromUI4(ULONG,double*);
+HRESULT WINAPI VarR8FromUI8(ULONG64,double*);
+HRESULT WINAPI VarR8FromStr(OLECHAR*,LCID,ULONG,double*);
+HRESULT WINAPI VarR8FromCy(CY,double*);
+HRESULT WINAPI VarR8FromDec(DECIMAL*,double*);
+HRESULT WINAPI VarR8FromDisp(IDispatch*,LCID,double*);
+
+HRESULT WINAPI VarDateFromUI1(BYTE,DATE*);
+HRESULT WINAPI VarDateFromI2(SHORT,DATE*);
+HRESULT WINAPI VarDateFromI4(LONG,DATE*);
+HRESULT WINAPI VarDateFromI8(LONG64,DATE*);
+HRESULT WINAPI VarDateFromR4(FLOAT,DATE*);
+HRESULT WINAPI VarDateFromR8(DOUBLE,DATE*);
+HRESULT WINAPI VarDateFromStr(OLECHAR*,LCID,ULONG,DATE*);
+HRESULT WINAPI VarDateFromI1(signed char,DATE*);
+HRESULT WINAPI VarDateFromUI2(USHORT,DATE*);
+HRESULT WINAPI VarDateFromUI4(ULONG,DATE*);
+HRESULT WINAPI VarDateFromUI8(ULONG64,DATE*);
+HRESULT WINAPI VarDateFromBool(VARIANT_BOOL,DATE*);
+HRESULT WINAPI VarDateFromCy(CY,DATE*);
+HRESULT WINAPI VarDateFromDec(DECIMAL*,DATE*);
+HRESULT WINAPI VarDateFromDisp(IDispatch*,LCID,DATE*);
+
+HRESULT WINAPI VarCyFromUI1(BYTE,CY*);
+HRESULT WINAPI VarCyFromI2(SHORT sIn,CY*);
+HRESULT WINAPI VarCyFromI4(LONG,CY*);
+HRESULT WINAPI VarCyFromI8(LONG64,CY*);
+HRESULT WINAPI VarCyFromR4(FLOAT,CY*);
+HRESULT WINAPI VarCyFromR8(DOUBLE,CY*);
+HRESULT WINAPI VarCyFromDate(DATE,CY*);
+HRESULT WINAPI VarCyFromStr(OLECHAR*,LCID,ULONG,CY*);
+HRESULT WINAPI VarCyFromBool(VARIANT_BOOL,CY*);
+HRESULT WINAPI VarCyFromI1(signed char,CY*);
+HRESULT WINAPI VarCyFromUI2(USHORT,CY*);
+HRESULT WINAPI VarCyFromUI4(ULONG,CY*);
+HRESULT WINAPI VarCyFromUI8(ULONG64,CY*);
+HRESULT WINAPI VarCyFromDec(DECIMAL*,CY*);
+HRESULT WINAPI VarCyFromDisp(IDispatch*,LCID,CY*);
+
+HRESULT WINAPI VarBstrFromUI1(BYTE,LCID,ULONG,BSTR*);
+HRESULT WINAPI VarBstrFromI2(SHORT,LCID,ULONG,BSTR*);
+HRESULT WINAPI VarBstrFromI4(LONG,LCID,ULONG,BSTR*);
+HRESULT WINAPI VarBstrFromI8(LONG64,LCID,ULONG,BSTR*);
+HRESULT WINAPI VarBstrFromR4(FLOAT,LCID,ULONG,BSTR*);
+HRESULT WINAPI VarBstrFromR8(DOUBLE,LCID,ULONG,BSTR*);
+HRESULT WINAPI VarBstrFromDate(DATE,LCID,ULONG,BSTR*);
+HRESULT WINAPI VarBstrFromBool(VARIANT_BOOL,LCID,ULONG,BSTR*);
+HRESULT WINAPI VarBstrFromI1(signed char,LCID,ULONG,BSTR*);
+HRESULT WINAPI VarBstrFromUI2(USHORT,LCID,ULONG,BSTR*);
+HRESULT WINAPI VarBstrFromUI8(ULONG64,LCID,ULONG,BSTR*);
+HRESULT WINAPI VarBstrFromUI4(ULONG,LCID,ULONG,BSTR*);
+HRESULT WINAPI VarBstrFromCy(CY,LCID,ULONG,BSTR*);
+HRESULT WINAPI VarBstrFromDec(DECIMAL*,LCID,ULONG,BSTR*);
+HRESULT WINAPI VarBstrFromDisp(IDispatch*,LCID,ULONG,BSTR*);
+
+HRESULT WINAPI VarBoolFromUI1(BYTE,VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromI2(SHORT,VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromI4(LONG,VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromI8(LONG64,VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromR4(FLOAT,VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromR8(DOUBLE,VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromDate(DATE,VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromStr(OLECHAR*,LCID,ULONG,VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromI1(signed char,VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromUI2(USHORT,VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromUI4(ULONG,VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromUI8(ULONG64,VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromCy(CY,VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromDec(DECIMAL*,VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromDisp(IDispatch*,LCID,VARIANT_BOOL*);
+
+HRESULT WINAPI VarI1FromUI1(BYTE,signed char*);
+HRESULT WINAPI VarI1FromI2(SHORT,signed char*);
+HRESULT WINAPI VarI1FromI4(LONG,signed char*);
+HRESULT WINAPI VarI1FromI8(LONG64,signed char*);
+HRESULT WINAPI VarI1FromR4(FLOAT,signed char*);
+HRESULT WINAPI VarI1FromR8(DOUBLE,signed char*);
+HRESULT WINAPI VarI1FromDate(DATE,signed char*);
+HRESULT WINAPI VarI1FromStr(OLECHAR*,LCID,ULONG,signed char*);
+HRESULT WINAPI VarI1FromBool(VARIANT_BOOL,signed char*);
+HRESULT WINAPI VarI1FromUI2(USHORT,signed char*);
+HRESULT WINAPI VarI1FromUI4(ULONG,signed char*);
+HRESULT WINAPI VarI1FromUI8(ULONG64,signed char*);
+HRESULT WINAPI VarI1FromCy(CY,signed char*);
+HRESULT WINAPI VarI1FromDec(DECIMAL*,signed char*);
+HRESULT WINAPI VarI1FromDisp(IDispatch*,LCID,signed char*);
+
+HRESULT WINAPI VarUI2FromUI1(BYTE,USHORT*);
+HRESULT WINAPI VarUI2FromI2(SHORT,USHORT*);
+HRESULT WINAPI VarUI2FromI4(LONG,USHORT*);
+HRESULT WINAPI VarUI2FromI8(LONG64,USHORT*);
+HRESULT WINAPI VarUI2FromR4(FLOAT,USHORT*);
+HRESULT WINAPI VarUI2FromR8(DOUBLE,USHORT*);
+HRESULT WINAPI VarUI2FromDate(DATE,USHORT*);
+HRESULT WINAPI VarUI2FromStr(OLECHAR*,LCID,ULONG,USHORT*);
+HRESULT WINAPI VarUI2FromBool(VARIANT_BOOL,USHORT*);
+HRESULT WINAPI VarUI2FromI1(signed char,USHORT*);
+HRESULT WINAPI VarUI2FromUI4(ULONG,USHORT*);
+HRESULT WINAPI VarUI2FromUI8(ULONG64,USHORT*);
+HRESULT WINAPI VarUI2FromCy(CY,USHORT*);
+HRESULT WINAPI VarUI2FromDec(DECIMAL*,USHORT*);
+HRESULT WINAPI VarUI2FromDisp(IDispatch*,LCID,USHORT*);
+
+HRESULT WINAPI VarUI4FromStr(OLECHAR*,LCID,ULONG,ULONG*);
+HRESULT WINAPI VarUI4FromUI1(BYTE,ULONG*);
+HRESULT WINAPI VarUI4FromI2(SHORT,ULONG*);
+HRESULT WINAPI VarUI4FromI4(LONG,ULONG*);
+HRESULT WINAPI VarUI4FromI8(LONG64,ULONG*);
+HRESULT WINAPI VarUI4FromR4(FLOAT,ULONG*);
+HRESULT WINAPI VarUI4FromR8(DOUBLE,ULONG*);
+HRESULT WINAPI VarUI4FromDate(DATE,ULONG*);
+HRESULT WINAPI VarUI4FromBool(VARIANT_BOOL,ULONG*);
+HRESULT WINAPI VarUI4FromI1(signed char,ULONG*);
+HRESULT WINAPI VarUI4FromUI2(USHORT,ULONG*);
+HRESULT WINAPI VarUI4FromUI8(ULONG64,ULONG*);
+HRESULT WINAPI VarUI4FromCy(CY,ULONG*);
+HRESULT WINAPI VarUI4FromDec(DECIMAL*,ULONG*);
+HRESULT WINAPI VarUI4FromDisp(IDispatch*,LCID,ULONG*);
+
+HRESULT WINAPI VarUI8FromUI1(BYTE,ULONG64*);
+HRESULT WINAPI VarUI8FromI2(SHORT,ULONG64*);
+HRESULT WINAPI VarUI8FromI4(LONG,ULONG64*);
+HRESULT WINAPI VarUI8FromI8(LONG64,ULONG64*);
+HRESULT WINAPI VarUI8FromR4(FLOAT,ULONG64*);
+HRESULT WINAPI VarUI8FromR8(DOUBLE,ULONG64*);
+HRESULT WINAPI VarUI8FromDate(DATE,ULONG64*);
+HRESULT WINAPI VarUI8FromStr(OLECHAR*,LCID,ULONG,ULONG64*);
+HRESULT WINAPI VarUI8FromBool(VARIANT_BOOL,ULONG64*);
+HRESULT WINAPI VarUI8FromI1(signed char,ULONG64*);
+HRESULT WINAPI VarUI8FromUI2(USHORT,ULONG64*);
+HRESULT WINAPI VarUI8FromUI4(ULONG,ULONG64*);
+HRESULT WINAPI VarUI8FromDec(DECIMAL*,ULONG64*);
+HRESULT WINAPI VarUI8FromInt(INT,ULONG64*);
+HRESULT WINAPI VarUI8FromCy(CY,ULONG64*);
+HRESULT WINAPI VarUI8FromDisp(IDispatch*,LCID,ULONG64*);
+
+HRESULT WINAPI VarDecFromUI1(BYTE,DECIMAL*);
+HRESULT WINAPI VarDecFromI2(SHORT,DECIMAL*);
+HRESULT WINAPI VarDecFromI4(LONG,DECIMAL*);
+HRESULT WINAPI VarDecFromI8(LONG64,DECIMAL*);
+HRESULT WINAPI VarDecFromR4(FLOAT,DECIMAL*);
+HRESULT WINAPI VarDecFromR8(DOUBLE,DECIMAL*);
+HRESULT WINAPI VarDecFromDate(DATE,DECIMAL*);
+HRESULT WINAPI VarDecFromStr(OLECHAR*,LCID,ULONG,DECIMAL*);
+HRESULT WINAPI VarDecFromBool(VARIANT_BOOL,DECIMAL*);
+HRESULT WINAPI VarDecFromI1(signed char,DECIMAL*);
+HRESULT WINAPI VarDecFromUI2(USHORT,DECIMAL*);
+HRESULT WINAPI VarDecFromUI4(ULONG,DECIMAL*);
+HRESULT WINAPI VarDecFromUI8(ULONG64,DECIMAL*);
+HRESULT WINAPI VarDecFromCy(CY,DECIMAL*);
+HRESULT WINAPI VarDecFromDisp(IDispatch*,LCID,DECIMAL*);
+
+#define VarUI4FromUI4( in,pOut ) ( *(pOut) =  (in) )
+#define VarI4FromI4( in,pOut )   ( *(pOut) =  (in) )
+
+#define VarUI1FromInt   VarUI1FromI4
+#define VarUI1FromUint  VarUI1FromUI4
+#define VarI2FromInt    VarI2FromI4
+#define VarI2FromUint   VarI2FromUI4
+#define VarI4FromInt    VarI4FromI4
+#define VarI4FromUint   VarI4FromUI4
+#define VarI8FromInt    VarI8FromI4
+#define VarI8FromUint   VarI8FromUI4
+#define VarR4FromInt    VarR4FromI4
+#define VarR4FromUint   VarR4FromUI4
+#define VarR8FromInt    VarR8FromI4
+#define VarR8FromUint   VarR8FromUI4
+#define VarDateFromInt  VarDateFromI4
+#define VarDateFromUint VarDateFromUI4
+#define VarCyFromInt    VarCyFromI4
+#define VarCyFromUint   VarCyFromUI4
+#define VarBstrFromInt  VarBstrFromI4
+#define VarBstrFromUint VarBstrFromUI4
+#define VarBoolFromInt  VarBoolFromI4
+#define VarBoolFromUint VarBoolFromUI4
+#define VarI1FromInt    VarI1FromI4
+#define VarI1FromUint   VarI1FromUI4
+#define VarUI2FromInt   VarUI2FromI4
+#define VarUI2FromUint  VarUI2FromUI4
+#define VarUI4FromInt   VarUI4FromI4
+#define VarUI4FromUint  VarUI4FromUI4
+#define VarUI8FromInt   VarUI8FromI4
+#define VarUI8FromUint  VarUI8FromUI4
+#define VarDecFromInt   VarDecFromI4
+#define VarDecFromUint  VarDecFromUI4
+#define VarIntFromUI1   VarI4FromUI1
+#define VarIntFromI2    VarI4FromI2
+#define VarIntFromI4    VarI4FromI4
+#define VarIntFromI8    VarI4FromI8
+#define VarIntFromR4    VarI4FromR4
+#define VarIntFromR8    VarI4FromR8
+#define VarIntFromDate  VarI4FromDate
+#define VarIntFromCy    VarI4FromCy
+#define VarIntFromStr   VarI4FromStr
+#define VarIntFromDisp  VarI4FromDisp
+#define VarIntFromBool  VarI4FromBool
+#define VarIntFromI1    VarI4FromI1
+#define VarIntFromUI2   VarI4FromUI2
+#define VarIntFromUI4   VarI4FromUI4
+#define VarIntFromUI8   VarI4FromUI8
+#define VarIntFromDec   VarI4FromDec
+#define VarIntFromUint  VarI4FromUI4
+#define VarUintFromUI1  VarUI4FromUI1
+#define VarUintFromI2   VarUI4FromI2
+#define VarUintFromI4   VarUI4FromI4
+#define VarUintFromI8   VarUI4FromI8
+#define VarUintFromR4   VarUI4FromR4
+#define VarUintFromR8   VarUI4FromR8
+#define VarUintFromDate VarUI4FromDate
+#define VarUintFromCy   VarUI4FromCy
+#define VarUintFromStr  VarUI4FromStr
+#define VarUintFromDisp VarUI4FromDisp
+#define VarUintFromBool VarUI4FromBool
+#define VarUintFromI1   VarUI4FromI1
+#define VarUintFromUI2  VarUI4FromUI2
+#define VarUintFromUI4  VarUI4FromUI4
+#define VarUintFromUI8  VarUI4FromUI8
+#define VarUintFromDec  VarUI4FromDec
+#define VarUintFromInt  VarUI4FromI4
+
+/*
+ * Variant Math operations
+ */
+#define VARCMP_LT   0
+#define VARCMP_EQ   1
+#define VARCMP_GT   2
+#define VARCMP_NULL 3
+
+HRESULT WINAPI VarR4CmpR8(float,double);
+
+HRESULT WINAPI VarR8Pow(double,double,double*);
+HRESULT WINAPI VarR8Round(double,int,double*);
+
+HRESULT WINAPI VarDecAbs(const DECIMAL*,DECIMAL*);
+HRESULT WINAPI VarDecAdd(const DECIMAL*,const DECIMAL*,DECIMAL*);
+HRESULT WINAPI VarDecCmp(const DECIMAL*,const DECIMAL*);
+HRESULT WINAPI VarDecCmpR8(const DECIMAL*,DOUBLE);
+HRESULT WINAPI VarDecDiv(const DECIMAL*,const DECIMAL*,DECIMAL*);
+HRESULT WINAPI VarDecFix(const DECIMAL*,DECIMAL*);
+HRESULT WINAPI VarDecInt(const DECIMAL*,DECIMAL*);
+HRESULT WINAPI VarDecMul(const DECIMAL*,const DECIMAL*,DECIMAL*);
+HRESULT WINAPI VarDecNeg(const DECIMAL*,DECIMAL*);
+HRESULT WINAPI VarDecRound(const DECIMAL*,int,DECIMAL*);
+HRESULT WINAPI VarDecSub(const DECIMAL*,const DECIMAL*,DECIMAL*);
+
+HRESULT WINAPI VarCyAbs(const CY,CY*);
+HRESULT WINAPI VarCyAdd(const CY,const CY,CY*);
+HRESULT WINAPI VarCyCmp(const CY,const CY);
+HRESULT WINAPI VarCyCmpR8(const CY,DOUBLE);
+HRESULT WINAPI VarCyFix(const CY,CY*);
+HRESULT WINAPI VarCyInt(const CY,CY*);
+HRESULT WINAPI VarCyMul(const CY,CY,CY*);
+HRESULT WINAPI VarCyMulI4(const CY,LONG,CY*);
+HRESULT WINAPI VarCyMulI8(const CY,LONG64,CY*);
+HRESULT WINAPI VarCyNeg(const CY,CY*);
+HRESULT WINAPI VarCyRound(const CY,INT,CY*);
+HRESULT WINAPI VarCySub(const CY,const CY,CY*);
+
+HRESULT WINAPI VarAdd(LPVARIANT,LPVARIANT,LPVARIANT);
+HRESULT WINAPI VarAnd(LPVARIANT,LPVARIANT,LPVARIANT);
+HRESULT WINAPI VarCat(LPVARIANT,LPVARIANT,LPVARIANT);
+HRESULT WINAPI VarDiv(LPVARIANT,LPVARIANT,LPVARIANT);
+HRESULT WINAPI VarEqv(LPVARIANT,LPVARIANT,LPVARIANT);
+HRESULT WINAPI VarIdiv(LPVARIANT,LPVARIANT,LPVARIANT);
+HRESULT WINAPI VarImp(LPVARIANT,LPVARIANT,LPVARIANT);
+HRESULT WINAPI VarMod(LPVARIANT,LPVARIANT,LPVARIANT);
+HRESULT WINAPI VarMul(LPVARIANT,LPVARIANT,LPVARIANT);
+HRESULT WINAPI VarOr(LPVARIANT,LPVARIANT,LPVARIANT);
+HRESULT WINAPI VarPow(LPVARIANT,LPVARIANT,LPVARIANT);
+HRESULT WINAPI VarSub(LPVARIANT,LPVARIANT,LPVARIANT);
+HRESULT WINAPI VarXor(LPVARIANT,LPVARIANT,LPVARIANT);
+
+HRESULT WINAPI VarAbs(LPVARIANT,LPVARIANT);
+HRESULT WINAPI VarFix(LPVARIANT,LPVARIANT);
+HRESULT WINAPI VarInt(LPVARIANT,LPVARIANT);
+HRESULT WINAPI VarNeg(LPVARIANT,LPVARIANT);
+HRESULT WINAPI VarNot(LPVARIANT,LPVARIANT);
+
+HRESULT WINAPI VarRound(LPVARIANT,int,LPVARIANT);
+
+HRESULT WINAPI VarCmp(LPVARIANT,LPVARIANT,LCID,ULONG);
+
+HRESULT WINAPI VarBstrCmp(BSTR,BSTR,LCID,ULONG);
+HRESULT WINAPI VarBstrCat(BSTR,BSTR,BSTR*);
+
+
+typedef struct {
+    SYSTEMTIME st;
+    USHORT wDayOfYear;
+} UDATE;
+
+typedef struct
+{
+    INT   cDig;       /* Number of parsed digits */
+    ULONG dwInFlags;  /* Acceptable state of the input string (NUMPRS_ flags) */
+    ULONG dwOutFlags; /* Parsed state of the output string (NUMPRS_ flags) */
+    INT   cchUsed;    /* Number of characters parsed from input string */
+    INT   nBaseShift; /* Base of the number (but apparently unused) */
+    INT   nPwr10;     /* Scale of the number in powers of 10 */
+} NUMPARSE;
+
+#define NUMPRS_LEADING_WHITE  0x00001 /* Leading whitespace */
+#define NUMPRS_TRAILING_WHITE 0x00002 /* Trailing whitespace */
+#define NUMPRS_LEADING_PLUS   0x00004 /* Leading '+' sign */
+#define NUMPRS_TRAILING_PLUS  0x00008 /* Trailing '+' sign */
+#define NUMPRS_LEADING_MINUS  0x00010 /* Leading '-' sign */
+#define NUMPRS_TRAILING_MINUS 0x00020 /* Trailing '-' sign */
+#define NUMPRS_HEX_OCT        0x00040 /* Octal number (with a leading 0) */
+#define NUMPRS_PARENS         0x00080 /* Parentheses for negative numbers */
+#define NUMPRS_DECIMAL        0x00100 /* Decimal separator */
+#define NUMPRS_THOUSANDS      0x00200 /* Thousands separator */
+#define NUMPRS_CURRENCY       0x00400 /* Currency symbol */
+#define NUMPRS_EXPONENT       0x00800 /* Exponent (e.g. "e-14") */
+#define NUMPRS_USE_ALL        0x01000 /* Parse the entire string */
+#define NUMPRS_STD            0x01FFF /* Standard flags for internal coercions (All of the above) */
+#define NUMPRS_NEG            0x10000 /* Number is negative (dwOutFlags only) */
+#define NUMPRS_INEXACT        0x20000 /* Number is represented inexactly (dwOutFlags only) */
+
+#define VTBIT_I1      (1 << VT_I1)
+#define VTBIT_UI1     (1 << VT_UI1)
+#define VTBIT_I2      (1 << VT_I2)
+#define VTBIT_UI2     (1 << VT_UI2)
+#define VTBIT_I4      (1 << VT_I4)
+#define VTBIT_UI4     (1 << VT_UI4)
+#define VTBIT_I8      (1 << VT_I8)
+#define VTBIT_UI8     (1 << VT_UI8)
+#define VTBIT_R4      (1 << VT_R4)
+#define VTBIT_R8      (1 << VT_R8)
+#define VTBIT_CY      (1 << VT_CY)
+#define VTBIT_DECIMAL (1 << VT_DECIMAL)
+
+HRESULT WINAPI VarParseNumFromStr(OLECHAR*,LCID,ULONG,NUMPARSE*,BYTE*);
+HRESULT WINAPI VarNumFromParseNum(NUMPARSE*,BYTE*,ULONG,VARIANT*);
+
+INT WINAPI DosDateTimeToVariantTime(USHORT,USHORT,double*);
+INT WINAPI VariantTimeToDosDateTime(double,USHORT*,USHORT*);
+
+INT WINAPI VariantTimeToSystemTime(DOUBLE,LPSYSTEMTIME);
+INT WINAPI SystemTimeToVariantTime(LPSYSTEMTIME,double*);
+
+HRESULT WINAPI VarDateFromUdate(UDATE*,ULONG,DATE*);
+HRESULT WINAPI VarDateFromUdateEx(UDATE*,LCID,ULONG,DATE*);
+HRESULT WINAPI VarUdateFromDate(DATE,ULONG,UDATE*);
+
+/* Variant formatting */
+HRESULT WINAPI VarWeekdayName(int,int,int,ULONG,BSTR*);
+HRESULT WINAPI VarMonthName(int,int,ULONG,BSTR*);
+HRESULT WINAPI GetAltMonthNames(LCID,LPOLESTR**);
+
+HRESULT WINAPI VarFormat(LPVARIANT,LPOLESTR,int,int,ULONG,BSTR*);
+HRESULT WINAPI VarFormatCurrency(LPVARIANT,int,int,int,int,ULONG,BSTR*);
+HRESULT WINAPI VarFormatDateTime(LPVARIANT,int,ULONG,BSTR*);
+HRESULT WINAPI VarFormatNumber(LPVARIANT,int,int,int,int,ULONG,BSTR*);
+HRESULT WINAPI VarFormatPercent(LPVARIANT,int,int,int,int,ULONG,BSTR*);
+
+HRESULT WINAPI VarFormatFromTokens(LPVARIANT,LPOLESTR,LPBYTE,ULONG,BSTR*,LCID);
+HRESULT WINAPI VarTokenizeFormatString(LPOLESTR,LPBYTE,int,int,int,LCID,int*);
+
+
+/*
+ * IDispatch types and helper functions
+ */
+
+/* A structure describing a single parameter to a com object method. */
+typedef struct tagPARAMDATA
+{
+    OLECHAR *szName; /* Name of Parameter */
+    VARTYPE  vt;     /* Type of Parameter */
+} PARAMDATA, *LPPARAMDATA;
+
+/* A structure describing a single method of a com object. */
+typedef struct tagMETHODDATA
+{
+    OLECHAR   *szName;   /* Name of method */
+    PARAMDATA *ppdata;   /* Parameters of the method */
+    DISPID     dispid;   /* Id of the method */
+    UINT       iMeth;    /* Vtable index of the method */
+    CALLCONV   cc;       /* Calling convention of the method */
+    UINT       cArgs;    /* Number of parameters in the method */
+    WORD       wFlags;   /* Type of the method (DISPATCH_ flags) */
+    VARTYPE    vtReturn; /* Type of the return value */
+} METHODDATA, *LPMETHODDATA;
+
+/* Structure describing a single com object */
+typedef struct tagINTERFACEDATA
+{
+    METHODDATA *pmethdata;  /* Methods of the object */
+    UINT        cMembers;   /* Number of methods in the object */
+} INTERFACEDATA, *LPINTERFACEDATA;
+
+typedef enum tagREGKIND
+{
+    REGKIND_DEFAULT,
+    REGKIND_REGISTER,
+    REGKIND_NONE
+} REGKIND;
+
+HRESULT WINAPI DispGetParam(DISPPARAMS*,UINT,VARTYPE,VARIANT*,UINT*);
+HRESULT WINAPI DispGetIDsOfNames(ITypeInfo*,OLECHAR**,UINT,DISPID*);
+HRESULT WINAPI DispInvoke(void*,ITypeInfo*,DISPID,WORD,DISPPARAMS*,VARIANT*,
+                          EXCEPINFO*,UINT*);
+HRESULT WINAPI CreateDispTypeInfo(INTERFACEDATA*,LCID,ITypeInfo**);
+HRESULT WINAPI CreateStdDispatch(IUnknown*,void*,ITypeInfo*,IUnknown**);
+HRESULT WINAPI DispCallFunc(void*,ULONG_PTR,CALLCONV,VARTYPE,UINT,VARTYPE*,
+                            VARIANTARG**,VARIANT*);
+
+
+/*
+ * TypeLib API
+ */
+
+ULONG WINAPI LHashValOfNameSysA(SYSKIND,LCID,LPCSTR);
+ULONG WINAPI LHashValOfNameSys(SYSKIND,LCID,LPCOLESTR);
+
+#define LHashValOfName(lcid,name) LHashValOfNameSys(SYS_WIN32,lcid,name)
+#define WHashValOfLHashVal(hash) ((USHORT)((hash) & 0xffff))
+#define IsHashValCompatible(hash1,hash2) ((hash1) & 0xff0000 == (hash2) & 0xff0000)
+
+#define MEMBERID_NIL   DISPID_UNKNOWN
+#define ID_DEFAULTINST -2
+
+#define DISPATCH_METHOD         0x1
+#define DISPATCH_PROPERTYGET    0x2
+#define DISPATCH_PROPERTYPUT    0x4
+#define DISPATCH_PROPERTYPUTREF 0x8
+
+#define LOAD_TLB_AS_32BIT       0x20
+#define LOAD_TLB_AS_64BIT       0x40
+#define MASK_TO_RESET_TLB_BITS  ~(LOAD_TLB_AS_32BIT|LOAD_TLB_AS_64BIT)
+
+HRESULT WINAPI CreateTypeLib(SYSKIND,const OLECHAR*,ICreateTypeLib**);
+HRESULT WINAPI CreateTypeLib2(SYSKIND,LPCOLESTR,ICreateTypeLib2**);
+HRESULT WINAPI LoadRegTypeLib(REFGUID,WORD,WORD,LCID,ITypeLib**);
+HRESULT WINAPI LoadTypeLib(const OLECHAR*,ITypeLib**);
+HRESULT WINAPI LoadTypeLibEx(LPCOLESTR,REGKIND,ITypeLib**);
+HRESULT WINAPI QueryPathOfRegTypeLib(REFGUID,WORD,WORD,LCID,LPBSTR);
+HRESULT WINAPI RegisterTypeLib(ITypeLib*,OLECHAR*,OLECHAR*);
+HRESULT WINAPI UnRegisterTypeLib(REFGUID,WORD,WORD,LCID,SYSKIND);
+
+VOID WINAPI ClearCustData(LPCUSTDATA);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /*__WINE_OLEAUTO_H*/
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/olectl.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/olectl.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/olectl.h	(revision 16410)
@@ -0,0 +1,445 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_OLECTL_H
+#define __WINE_OLECTL_H
+
+#if !defined(__midl) && !defined(__WIDL__)
+
+#include <ocidl.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+/*
+ * Ole Control Interfaces
+ */
+DEFINE_GUID(CLSID_ConvertVBX,
+            0xfb8f0822,0x0164,0x101b,0x84,0xed,0x08,0x00,0x2b,0x2e,0xc7,0x13);
+DEFINE_GUID(CLSID_PersistPropset,
+            0xfb8f0821,0x0164,0x101b,0x84,0xed,0x08,0x00,0x2b,0x2e,0xc7,0x13);
+
+DEFINE_GUID(CLSID_StdFont,
+            0x0be35203,0x8f91,0x11ce,0x9d,0xe3,0x00,0xaa,0x00,0x4b,0xb8,0x51);
+DEFINE_GUID(CLSID_StdPicture,
+            0x0be35204,0x8f91,0x11ce,0x9d,0xe3,0x00,0xaa,0x00,0x4b,0xb8,0x51);
+
+DEFINE_GUID(IID_IPropertyFrame,
+            0xb196b28a,0xbab4,0x101a,0xb6,0x9c,0x00,0xaa,0x00,0x34,0x1d,0x07);
+
+DEFINE_GUID(CLSID_CFontPropPage,
+            0x0be35200,0x8f91,0x11ce,0x9d,0xe3,0x00,0xaa,0x00,0x4b,0xb8,0x51);
+DEFINE_GUID(CLSID_CColorPropPage,
+            0x0be35201,0x8f91,0x11ce,0x9d,0xe3,0x00,0xaa,0x00,0x4b,0xb8,0x51);
+DEFINE_GUID(CLSID_CPicturePropPage,
+            0x0be35202,0x8f91,0x11ce,0x9d,0xe3,0x00,0xaa,0x00,0x4b,0xb8,0x51);
+
+DEFINE_GUID(GUID_HIMETRIC,
+            0x66504300,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_COLOR,
+            0x66504301,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_XPOSPIXEL,
+            0x66504302,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_YPOSPIXEL,
+            0x66504303,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_XSIZEPIXEL,
+            0x66504304,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_YSIZEPIXEL,
+            0x66504305,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_XPOS,
+            0x66504306,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_YPOS,
+            0x66504307,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_XSIZE,
+            0x66504308,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_YSIZE,
+            0x66504309,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+
+#ifndef __CGUID_H__
+DEFINE_GUID(GUID_TRISTATE,
+            0x6650430a,0xbe0f,0x101a,0x8b,0xbb,0x00,0xaa,0x00,0x30,0x0c,0xab);
+#endif
+
+DEFINE_GUID(GUID_OPTIONVALUEEXCLUSIVE,
+            0x6650430b,0xbe0f,0x101a,0x8b,0xbb,0x00,0xaa,0x00,0x30,0x0c,0xab);
+DEFINE_GUID(GUID_CHECKVALUEEXCLUSIVE,
+            0x6650430c,0xbe0f,0x101a,0x8b,0xbb,0x00,0xaa,0x00,0x30,0x0c,0xab);
+DEFINE_GUID(GUID_FONTNAME,
+            0x6650430d,0xbe0f,0x101a,0x8b,0xbb,0x00,0xaa,0x00,0x30,0x0c,0xab);
+DEFINE_GUID(GUID_FONTSIZE,
+            0x6650430e,0xbe0f,0x101a,0x8b,0xbb,0x00,0xaa,0x00,0x30,0x0c,0xab);
+DEFINE_GUID(GUID_FONTBOLD,
+            0x6650430f,0xbe0f,0x101a,0x8b,0xbb,0x00,0xaa,0x00,0x30,0x0c,0xab);
+DEFINE_GUID(GUID_FONTITALIC,
+            0x66504310,0xbe0f,0x101a,0x8b,0xbb,0x00,0xaa,0x00,0x30,0x0c,0xab);
+DEFINE_GUID(GUID_FONTUNDERSCORE,
+            0x66504311,0xbe0f,0x101a,0x8b,0xbb,0x00,0xaa,0x00,0x30,0x0c,0xab);
+DEFINE_GUID(GUID_FONTSTRIKETHROUGH,
+            0x66504312,0xbe0f,0x101a,0x8b,0xbb,0x00,0xaa,0x00,0x30,0x0c,0xab);
+DEFINE_GUID(GUID_HANDLE,
+            0x66504313,0xbe0f,0x101a,0x8b,0xbb,0x00,0xaa,0x00,0x30,0x0c,0xab);
+
+typedef struct tagOCPFIPARAMS
+{
+	ULONG cbStructSize;
+	HWND hWndOwner;
+	int x;
+	int y;
+	LPCOLESTR lpszCaption;
+	ULONG cObjects;
+	LPUNKNOWN *lplpUnk;
+	ULONG cPages;
+	CLSID *lpPages;
+	LCID lcid;
+	DISPID dispidInitialProperty;
+} OCPFIPARAMS, *LPOCPFIPARAMS;
+
+/*
+ * FONTDESC is used as an OLE encapsulation of the GDI fonts
+ */
+typedef struct tagFONTDESC {
+  UINT     cbSizeofstruct;
+  LPOLESTR lpstrName;
+  CY         cySize;
+  SHORT      sWeight;
+  SHORT      sCharset;
+  BOOL     fItalic;
+  BOOL     fUnderline;
+  BOOL     fStrikethrough;
+} FONTDESC, *LPFONTDESC;
+
+#define FONTSIZE(n) { n##0000, 0 }
+
+#define PICTYPE_UNINITIALIZED (-1)
+#define PICTYPE_NONE          0
+#define PICTYPE_BITMAP        1
+#define PICTYPE_METAFILE      2
+#define PICTYPE_ICON          3
+#define PICTYPE_ENHMETAFILE   4
+
+typedef struct tagPICTDESC {
+	UINT cbSizeofstruct;
+	UINT picType;
+	union {
+			struct {
+					HBITMAP hbitmap;
+					HPALETTE hpal;
+			} bmp;
+			struct {
+					HMETAFILE hmeta;
+					int xExt;
+					int yExt;
+			} wmf;
+			struct {
+					HICON hicon;
+			} icon;
+			struct {
+					HENHMETAFILE hemf;
+			} emf;
+	} DUMMYUNIONNAME;
+} PICTDESC, *LPPICTDESC;
+
+typedef long OLE_XPOS_PIXELS;
+typedef long OLE_YPOS_PIXELS;
+typedef long OLE_XSIZE_PIXELS;
+typedef long OLE_YSIZE_PIXELS;
+typedef float OLE_XPOS_CONTAINER;
+typedef float OLE_YPOS_CONTAINER;
+typedef float OLE_XSIZE_CONTAINER;
+typedef float OLE_YSIZE_CONTAINER;
+
+typedef enum
+{
+	triUnchecked = 0,
+	triChecked = 1,
+	triGray = 2
+} OLE_TRISTATE;
+
+typedef VARIANT_BOOL OLE_OPTEXCLUSIVE;
+typedef VARIANT_BOOL OLE_CANCELBOOL;
+typedef VARIANT_BOOL OLE_ENABLEDEFAULTBOOL;
+
+/* flags for OleLoadPictureEx and OleLoadPictureFileEx */
+#define LP_DEFAULT      0x0
+#define LP_MONOCHROME   0x1
+#define LP_VGACOLOR     0x2
+#define LP_COLOR        0x4
+
+HCURSOR WINAPI OleIconToCursor( HINSTANCE hinstExe, HICON hicon);
+
+HRESULT WINAPI OleCreatePropertyFrameIndirect( LPOCPFIPARAMS lpParams);
+
+HRESULT WINAPI OleCreatePropertyFrame(
+	HWND hwndOwner, UINT x, UINT y,
+	LPCOLESTR lpszCaption, ULONG cObjects, LPUNKNOWN* ppUnk,
+	ULONG cPages, LPCLSID pPageClsID, LCID lcid, DWORD dwReserved,
+	LPVOID pvReserved );
+
+HRESULT WINAPI OleLoadPicture(	LPSTREAM lpstream, LONG lSize, BOOL fRunmode,
+		REFIID riid, LPVOID *lplpvObj );
+
+HRESULT WINAPI OleLoadPictureEx( LPSTREAM lpstream, LONG lSize, BOOL fRunMode,
+                REFIID riid, DWORD xSizeDesired, DWORD ySizeDesired,
+                DWORD dwFlags, LPVOID *lplpvObj );
+
+HRESULT WINAPI OleLoadPictureFile( VARIANT varFilename, IDispatch **ppdispPicture );
+
+HRESULT WINAPI OleLoadPictureFileEx( VARIANT varFilename, DWORD xSizeDesired,
+                DWORD ySizeDesired, DWORD dwFlags, IDispatch **ppdispPicture );
+
+HRESULT WINAPI OleSavePictureFile( IDispatch *pdispPicture, BSTR bstrFilename );
+
+HRESULT WINAPI OleLoadPicturePath( LPOLESTR szURLorPath, LPUNKNOWN punkCaller,
+		DWORD dwReserved, OLE_COLOR clrReserved, REFIID riid,
+		LPVOID *ppvRet );
+
+HRESULT WINAPI OleCreatePictureIndirect(LPPICTDESC lpPictDesc, REFIID riid,
+		BOOL fOwn, LPVOID * lplpvObj );
+
+HRESULT WINAPI OleCreateFontIndirect(LPFONTDESC lpFontDesc, REFIID riid,
+		LPVOID* lplpvObj);
+
+HRESULT WINAPI OleTranslateColor( OLE_COLOR clr, HPALETTE hpal,
+		COLORREF* lpcolorref);
+
+/* Reflected Window Message IDs */
+#define OCM__BASE           (WM_USER+0x1c00)
+#define OCM_COMMAND         (OCM__BASE + WM_COMMAND)
+
+#define OCM_CTLCOLORBTN     (OCM__BASE + WM_CTLCOLORBTN)
+#define OCM_CTLCOLOREDIT    (OCM__BASE + WM_CTLCOLOREDIT)
+#define OCM_CTLCOLORDLG     (OCM__BASE + WM_CTLCOLORDLG)
+#define OCM_CTLCOLORLISTBOX (OCM__BASE + WM_CTLCOLORLISTBOX)
+#define OCM_CTLCOLORMSGBOX  (OCM__BASE + WM_CTLCOLORMSGBOX)
+#define OCM_CTLCOLORSCROLLBAR   (OCM__BASE + WM_CTLCOLORSCROLLBAR)
+#define OCM_CTLCOLORSTATIC  (OCM__BASE + WM_CTLCOLORSTATIC)
+
+#define OCM_DRAWITEM        (OCM__BASE + WM_DRAWITEM)
+#define OCM_MEASUREITEM     (OCM__BASE + WM_MEASUREITEM)
+#define OCM_DELETEITEM      (OCM__BASE + WM_DELETEITEM)
+#define OCM_VKEYTOITEM      (OCM__BASE + WM_VKEYTOITEM)
+#define OCM_CHARTOITEM      (OCM__BASE + WM_CHARTOITEM)
+#define OCM_COMPAREITEM     (OCM__BASE + WM_COMPAREITEM)
+#define OCM_HSCROLL         (OCM__BASE + WM_HSCROLL)
+#define OCM_VSCROLL         (OCM__BASE + WM_VSCROLL)
+#define OCM_PARENTNOTIFY    (OCM__BASE + WM_PARENTNOTIFY)
+#define OCM_NOTIFY            (OCM__BASE + WM_NOTIFY)
+
+#define CONNECT_E_FIRST    MAKE_SCODE(SEVERITY_ERROR,   FACILITY_ITF, 0x0200)
+#define CONNECT_E_LAST     MAKE_SCODE(SEVERITY_ERROR,   FACILITY_ITF, 0x020F)
+#define CONNECT_S_FIRST    MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0200)
+#define CONNECT_S_LAST     MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x020F)
+
+#define CONNECT_E_NOCONNECTION      (CONNECT_E_FIRST+0)
+#define CONNECT_E_ADVISELIMIT       (CONNECT_E_FIRST+1)
+#define CONNECT_E_CANNOTCONNECT     (CONNECT_E_FIRST+2)
+#define CONNECT_E_OVERRIDDEN        (CONNECT_E_FIRST+3)
+
+#define SELFREG_E_FIRST             MAKE_SCODE(SEVERITY_ERROR,   FACILITY_ITF, 0x0200)
+#define SELFREG_E_LAST              MAKE_SCODE(SEVERITY_ERROR,   FACILITY_ITF, 0x020F)
+#define SELFREG_S_FIRST             MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0200)
+#define SELFREG_S_LAST              MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x020F)
+#define SELFREG_E_TYPELIB           (SELFREG_E_FIRST+0)
+#define SELFREG_E_CLASS             (SELFREG_E_FIRST+1)
+
+#ifndef FACILITY_CONTROL
+#define FACILITY_CONTROL 0xa
+#endif
+#define STD_CTL_SCODE(n) MAKE_SCODE(SEVERITY_ERROR, FACILITY_CONTROL, n)
+#define CTL_E_ILLEGALFUNCTIONCALL       STD_CTL_SCODE(5)
+#define CTL_E_OVERFLOW                  STD_CTL_SCODE(6)
+#define CTL_E_OUTOFMEMORY               STD_CTL_SCODE(7)
+#define CTL_E_DIVISIONBYZERO            STD_CTL_SCODE(11)
+#define CTL_E_OUTOFSTRINGSPACE          STD_CTL_SCODE(14)
+#define CTL_E_OUTOFSTACKSPACE           STD_CTL_SCODE(28)
+#define CTL_E_BADFILENAMEORNUMBER       STD_CTL_SCODE(52)
+#define CTL_E_FILENOTFOUND              STD_CTL_SCODE(53)
+#define CTL_E_BADFILEMODE               STD_CTL_SCODE(54)
+#define CTL_E_FILEALREADYOPEN           STD_CTL_SCODE(55)
+#define CTL_E_DEVICEIOERROR             STD_CTL_SCODE(57)
+#define CTL_E_FILEALREADYEXISTS         STD_CTL_SCODE(58)
+#define CTL_E_BADRECORDLENGTH           STD_CTL_SCODE(59)
+#define CTL_E_DISKFULL                  STD_CTL_SCODE(61)
+#define CTL_E_BADRECORDNUMBER           STD_CTL_SCODE(63)
+#define CTL_E_BADFILENAME               STD_CTL_SCODE(64)
+#define CTL_E_TOOMANYFILES              STD_CTL_SCODE(67)
+#define CTL_E_DEVICEUNAVAILABLE         STD_CTL_SCODE(68)
+#define CTL_E_PERMISSIONDENIED          STD_CTL_SCODE(70)
+#define CTL_E_DISKNOTREADY              STD_CTL_SCODE(71)
+#define CTL_E_PATHFILEACCESSERROR       STD_CTL_SCODE(75)
+#define CTL_E_PATHNOTFOUND              STD_CTL_SCODE(76)
+#define CTL_E_INVALIDPATTERNSTRING      STD_CTL_SCODE(93)
+#define CTL_E_INVALIDUSEOFNULL          STD_CTL_SCODE(94)
+#define CTL_E_INVALIDFILEFORMAT         STD_CTL_SCODE(321)
+#define CTL_E_INVALIDPROPERTYVALUE      STD_CTL_SCODE(380)
+#define CTL_E_INVALIDPROPERTYARRAYINDEX STD_CTL_SCODE(381)
+#define CTL_E_SETNOTSUPPORTEDATRUNTIME  STD_CTL_SCODE(382)
+#define CTL_E_SETNOTSUPPORTED           STD_CTL_SCODE(383)
+#define CTL_E_NEEDPROPERTYARRAYINDEX    STD_CTL_SCODE(385)
+#define CTL_E_SETNOTPERMITTED           STD_CTL_SCODE(387)
+#define CTL_E_GETNOTSUPPORTEDATRUNTIME  STD_CTL_SCODE(393)
+#define CTL_E_GETNOTSUPPORTED           STD_CTL_SCODE(394)
+#define CTL_E_PROPERTYNOTFOUND          STD_CTL_SCODE(422)
+#define CTL_E_INVALIDCLIPBOARDFORMAT    STD_CTL_SCODE(460)
+#define CTL_E_INVALIDPICTURE            STD_CTL_SCODE(481)
+#define CTL_E_PRINTERERROR              STD_CTL_SCODE(482)
+#define CTL_E_CANTSAVEFILETOTEMP        STD_CTL_SCODE(735)
+#define CTL_E_SEARCHTEXTNOTFOUND        STD_CTL_SCODE(744)
+#define CTL_E_REPLACEMENTSTOOLONG       STD_CTL_SCODE(746)
+
+#define CUSTOM_CTL_SCODE(n) MAKE_SCODE(SEVERITY_ERROR, FACILITY_CONTROL, n)
+#define CTL_E_CUSTOM_FIRST              CUSTOM_CTL_SCODE(600)
+
+#define VT_COLOR            VT_I4
+#define VT_XPOS_PIXELS      VT_I4
+#define VT_YPOS_PIXELS      VT_I4
+#define VT_XSIZE_PIXELS     VT_I4
+#define VT_YSIZE_PIXELS     VT_I4
+#define VT_XPOS_HIMETRIC    VT_I4
+#define VT_YPOS_HIMETRIC    VT_I4
+#define VT_XSIZE_HIMETRIC   VT_I4
+#define VT_YSIZE_HIMETRIC   VT_I4
+#define VT_TRISTATE         VT_I2
+#define VT_OPTEXCLUSIVE     VT_BOOL
+#define VT_FONT             VT_DISPATCH
+#define VT_PICTURE          VT_DISPATCH
+
+#define VT_STREAMED_PROPSET 73
+#define VT_STORED_PROPSET   74
+#define VT_BLOB_PROPSET     75
+#define VT_VERBOSE_ENUM     76
+
+#ifndef OLEIVERB_PROPERTIES
+#define OLEIVERB_PROPERTIES (-7L)
+#endif
+
+#define PERPROP_E_FIRST    MAKE_SCODE(SEVERITY_ERROR,   FACILITY_ITF, 0x0200)
+#define PERPROP_E_LAST     MAKE_SCODE(SEVERITY_ERROR,   FACILITY_ITF, 0x020F)
+#define PERPROP_S_FIRST    MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0200)
+#define PERPROP_S_LAST     MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x020F)
+
+#define PERPROP_E_NOPAGEAVAILABLE   (PERPROP_E_FIRST+0)
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* !__midl && !__WIDL__ */
+
+/* standard dispatch ID's */
+#define DISPID_AUTOSIZE                 (-500)
+#define DISPID_BACKCOLOR                (-501)
+#define DISPID_BACKSTYLE                (-502)
+#define DISPID_BORDERCOLOR              (-503)
+#define DISPID_BORDERSTYLE              (-504)
+#define DISPID_BORDERWIDTH              (-505)
+#define DISPID_DRAWMODE                 (-507)
+#define DISPID_DRAWSTYLE                (-508)
+#define DISPID_DRAWWIDTH                (-509)
+#define DISPID_FILLCOLOR                (-510)
+#define DISPID_FILLSTYLE                (-511)
+#define DISPID_FONT                     (-512)
+#define DISPID_FORECOLOR                (-513)
+#define DISPID_ENABLED                  (-514)
+#define DISPID_HWND                     (-515)
+#define DISPID_TABSTOP                  (-516)
+#define DISPID_TEXT                     (-517)
+#define DISPID_CAPTION                  (-518)
+#define DISPID_BORDERVISIBLE            (-519)
+#define DISPID_APPEARANCE               (-520)
+#define DISPID_MOUSEPOINTER             (-521)
+#define DISPID_MOUSEICON                (-522)
+#define DISPID_PICTURE                  (-523)
+#define DISPID_VALID                    (-524)
+#define DISPID_READYSTATE               (-525)
+
+#define DISPID_REFRESH                  (-550)
+#define DISPID_DOCLICK                  (-551)
+#define DISPID_ABOUTBOX                 (-552)
+#define DISPID_ADDITEM                  (-553)
+#define DISPID_CLEAR                    (-554)
+#define DISPID_REMOVEITEM               (-555)
+
+#define DISPID_CLICK                    (-600)
+#define DISPID_DBLCLICK                 (-601)
+#define DISPID_KEYDOWN                  (-602)
+#define DISPID_KEYPRESS                 (-603)
+#define DISPID_KEYUP                    (-604)
+#define DISPID_MOUSEDOWN                (-605)
+#define DISPID_MOUSEMOVE                (-606)
+#define DISPID_MOUSEUP                  (-607)
+#define DISPID_ERROREVENT               (-608)
+#define DISPID_READYSTATECHANGE         (-609)
+#define DISPID_CLICK_VALUE              (-610)
+#define DISPID_RIGHTTOLEFT              (-611)
+#define DISPID_TOPTOBOTTOM              (-612)
+#define DISPID_THIS                     (-613)
+
+#define DISPID_AMBIENT_BACKCOLOR        (-701)
+#define DISPID_AMBIENT_DISPLAYNAME      (-702)
+#define DISPID_AMBIENT_FONT             (-703)
+#define DISPID_AMBIENT_FORECOLOR        (-704)
+#define DISPID_AMBIENT_LOCALEID         (-705)
+#define DISPID_AMBIENT_MESSAGEREFLECT   (-706)
+#define DISPID_AMBIENT_SCALEUNITS       (-707)
+#define DISPID_AMBIENT_TEXTALIGN        (-708)
+#define DISPID_AMBIENT_USERMODE         (-709)
+#define DISPID_AMBIENT_UIDEAD           (-710)
+#define DISPID_AMBIENT_SHOWGRABHANDLES  (-711)
+#define DISPID_AMBIENT_SHOWHATCHING     (-712)
+#define DISPID_AMBIENT_DISPLAYASDEFAULT (-713)
+#define DISPID_AMBIENT_SUPPORTSMNEMONICS (-714)
+#define DISPID_AMBIENT_AUTOCLIP         (-715)
+#define DISPID_AMBIENT_APPEARANCE       (-716)
+
+#define DISPID_AMBIENT_CODEPAGE         (-725)
+#define DISPID_AMBIENT_PALETTE          (-726)
+#define DISPID_AMBIENT_CHARSET          (-727)
+#define DISPID_AMBIENT_TRANSFERPRIORITY (-728)
+
+#define DISPID_AMBIENT_RIGHTTOLEFT      (-732)
+#define DISPID_AMBIENT_TOPTOBOTTOM      (-733)
+
+#define DISPID_Name                     (-800)
+#define DISPID_Delete                   (-801)
+#define DISPID_Object                   (-802)
+#define DISPID_Parent                   (-803)
+
+#define DISPID_FONT_NAME 0
+#define DISPID_FONT_SIZE 2
+#define DISPID_FONT_BOLD 3
+#define DISPID_FONT_ITALIC 4
+#define DISPID_FONT_UNDER 5
+#define DISPID_FONT_STRIKE 6
+#define DISPID_FONT_WEIGHT 7
+#define DISPID_FONT_CHARSET 8
+#define DISPID_FONT_CHANGED 9
+
+/* IPicture */
+#define DISPID_PICT_HANDLE	0
+#define DISPID_PICT_HPAL	2
+#define DISPID_PICT_TYPE	3
+#define DISPID_PICT_WIDTH	4
+#define DISPID_PICT_HEIGHT	5
+#define DISPID_PICT_RENDER	6
+
+#endif /*  __WINE_OLECTL_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/oledb.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/oledb.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/oledb.idl	(revision 16410)
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2006 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "wtypes.idl";
+import "oaidl.idl";
+import "ocidl.idl";
+import "propidl.idl";
+
+typedef ULONG DBBYTEOFFSET;
+
+#include "dbinit.idl"
+#include "dbs.idl"
+#include "dbprop.idl"
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/oledlg.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/oledlg.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/oledlg.h	(revision 16410)
@@ -0,0 +1,981 @@
+/*
+ * Declarations for OLEDLG
+ *
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_OLEDLG_H
+#define __WINE_OLEDLG_H
+
+#ifndef __WINESRC__
+# include <windows.h>
+#endif
+#include <shellapi.h>
+#include <commdlg.h>
+#include <ole2.h>
+#ifndef __WINESRC__
+# include <string.h>
+# include <tchar.h>
+#endif
+#include <dlgs.h>
+#include <prsht.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+typedef struct IOleUILinkContainerA *POLEUILINKCONTAINERA, *LPOLEUILINKCONTAINERA;
+typedef struct IOleUILinkContainerW *POLEUILINKCONTAINERW, *LPOLEUILINKCONTAINERW;
+
+typedef struct IOleUILinkInfoA *POLEUILINKINFOA, *LPOLEUILINKINFOA;
+typedef struct IOleUILinkInfoW *POLEUILINKINFOW, *LPOLEUILINKINFOW;
+
+typedef struct IOleUIObjInfoA *POLEUIOBJINFOA, *LPOLEUIOBJINFOA;
+typedef struct IOleUIObjInfoW *POLEUIOBJINFOW, *LPOLEUIOBJINFOW;
+
+#define IDC_OLEUIHELP                   99
+
+
+#define OLEUI_ERR_STANDARDMAX           116
+
+#define OLEUI_BZERR_HTASKINVALID        (OLEUI_ERR_STANDARDMAX+0)
+#define OLEUI_BZ_SWITCHTOSELECTED       (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_BZ_RETRYSELECTED          (OLEUI_ERR_STANDARDMAX+2)
+#define OLEUI_BZ_CALLUNBLOCKED          (OLEUI_ERR_STANDARDMAX+3)
+
+#define OLEUI_FALSE   0
+#define OLEUI_SUCCESS 1 /* Same as OLEUI_OK */
+#define OLEUI_OK      1 /* OK button pressed */
+#define OLEUI_CANCEL  2 /* Cancel button pressed */
+
+#define OLEUI_ERR_STANDARDMIN           100
+#define OLEUI_ERR_OLEMEMALLOC           100
+#define OLEUI_ERR_STRUCTURENULL         101
+#define OLEUI_ERR_STRUCTUREINVALID      102
+#define OLEUI_ERR_CBSTRUCTINCORRECT     103
+#define OLEUI_ERR_HWNDOWNERINVALID      104
+#define OLEUI_ERR_LPSZCAPTIONINVALID    105
+#define OLEUI_ERR_LPFNHOOKINVALID       106
+#define OLEUI_ERR_HINSTANCEINVALID      107
+#define OLEUI_ERR_LPSZTEMPLATEINVALID   108
+#define OLEUI_ERR_HRESOURCEINVALID      109
+#define OLEUI_ERR_FINDTEMPLATEFAILURE   110
+#define OLEUI_ERR_LOADTEMPLATEFAILURE   111
+#define OLEUI_ERR_DIALOGFAILURE         112
+#define OLEUI_ERR_LOCALMEMALLOC         113
+#define OLEUI_ERR_GLOBALMEMALLOC        114
+#define OLEUI_ERR_LOADSTRING            115
+#define OLEUI_ERR_STANDARDMAX           116
+
+typedef UINT (CALLBACK *LPFNOLEUIHOOK)(HWND, UINT, WPARAM, LPARAM);
+
+/*****************************************************************************
+ * Registered Message Names
+ */
+#define SZOLEUI_MSG_HELPA              "OLEUI_MSG_HELP"
+#define SZOLEUI_MSG_ENDDIALOGA         "OLEUI_MSG_ENDDIALOG"
+#define SZOLEUI_MSG_BROWSEA            "OLEUI_MSG_BROWSE"
+#define SZOLEUI_MSG_CHANGEICONA        "OLEUI_MSG_CHANGEICON"
+#define SZOLEUI_MSG_CLOSEBUSYDIALOGA   "OLEUI_MSG_CLOSEBUSYDIALOG"
+#define SZOLEUI_MSG_CONVERTA           "OLEUI_MSG_CONVERT"
+#define SZOLEUI_MSG_CHANGESOURCEA      "OLEUI_MSG_CHANGESOURCE"
+#define SZOLEUI_MSG_ADDCONTROLA        "OLEUI_MSG_ADDCONTROL"
+#define SZOLEUI_MSG_BROWSE_OFNA        "OLEUI_MSG_BROWSE_OFN"
+#if defined(__GNUC__)
+# define SZOLEUI_MSG_HELPW             (const WCHAR []){ 'O','L','E','U','I','_','M','S','G','_','H','E','L','P',0 }
+# define SZOLEUI_MSG_ENDDIALOGW        (const WCHAR []){ 'O','L','E','U','I','_','M','S','G','_','E','N','D','D','I','A','L','O','G',0 }
+# define SZOLEUI_MSG_BROWSEW           (const WCHAR []){ 'O','L','E','U','I','_','M','S','G','_','B','R','O','W','S','E',0 }
+# define SZOLEUI_MSG_CHANGEICONW       (const WCHAR []){ 'O','L','E','U','I','_','M','S','G','_','C','H','A','N','G','E','I','C','O','N',0 }
+# define SZOLEUI_MSG_CLOSEBUSYDIALOGW  (const WCHAR []){ 'O','L','E','U','I','_','M','S','G','_','C','L','O','S','E','B','U','S','Y','D','I','A','L','O','G',0 }
+# define SZOLEUI_MSG_CONVERTW          (const WCHAR []){ 'O','L','E','U','I','_','M','S','G','_','C','O','N','V','E','R','T',0 }
+# define SZOLEUI_MSG_CHANGESOURCEW     (const WCHAR []){ 'O','L','E','U','I','_','M','S','G','_','C','H','A','N','G','E','S','O','U','R','C','E',0 }
+# define SZOLEUI_MSG_ADDCONTROLW       (const WCHAR []){ 'O','L','E','U','I','_','M','S','G','_','A','D','D','C','O','N','T','R','O','L',0 }
+# define SZOLEUI_MSG_BROWSE_OFNW       (const WCHAR []){ 'O','L','E','U','I','_','M','S','G','_','B','R','O','W','S','E','_','O','F','N',0 }
+#elif defined(_MSC_VER)
+# define SZOLEUI_MSG_HELPW              L"OLEUI_MSG_HELP"
+# define SZOLEUI_MSG_ENDDIALOGW         L"OLEUI_MSG_ENDDIALOG"
+# define SZOLEUI_MSG_BROWSEW            L"OLEUI_MSG_BROWSE"
+# define SZOLEUI_MSG_CHANGEICONW        L"OLEUI_MSG_CHANGEICON"
+# define SZOLEUI_MSG_CLOSEBUSYDIALOGW   L"OLEUI_MSG_CLOSEBUSYDIALOG"
+# define SZOLEUI_MSG_CONVERTW           L"OLEUI_MSG_CONVERT"
+# define SZOLEUI_MSG_CHANGESOURCEW      L"OLEUI_MSG_CHANGESOURCE"
+# define SZOLEUI_MSG_ADDCONTROLW        L"OLEUI_MSG_ADDCONTROL"
+# define SZOLEUI_MSG_BROWSE_OFNW        L"OLEUI_MSG_BROWSE_OFN"
+#else
+static const WCHAR SZOLEUI_MSG_HELPW[]             = { 'O','L','E','U','I','_','M','S','G','_','H','E','L','P',0 };
+static const WCHAR SZOLEUI_MSG_ENDDIALOGW[]        = { 'O','L','E','U','I','_','M','S','G','_','E','N','D','D','I','A','L','O','G',0 };
+static const WCHAR SZOLEUI_MSG_BROWSEW[]           = { 'O','L','E','U','I','_','M','S','G','_','B','R','O','W','S','E',0 };
+static const WCHAR SZOLEUI_MSG_CHANGEICONW[]       = { 'O','L','E','U','I','_','M','S','G','_','C','H','A','N','G','E','I','C','O','N',0 };
+static const WCHAR SZOLEUI_MSG_CLOSEBUSYDIALOGW[]  = { 'O','L','E','U','I','_','M','S','G','_','C','L','O','S','E','B','U','S','Y','D','I','A','L','O','G',0 };
+static const WCHAR SZOLEUI_MSG_CONVERTW[]          = { 'O','L','E','U','I','_','M','S','G','_','C','O','N','V','E','R','T',0 };
+static const WCHAR SZOLEUI_MSG_CHANGESOURCEW[]     = { 'O','L','E','U','I','_','M','S','G','_','C','H','A','N','G','E','S','O','U','R','C','E',0 };
+static const WCHAR SZOLEUI_MSG_ADDCONTROLW[]       = { 'O','L','E','U','I','_','M','S','G','_','A','D','D','C','O','N','T','R','O','L',0 };
+static const WCHAR SZOLEUI_MSG_BROWSE_OFNW[]       = { 'O','L','E','U','I','_','M','S','G','_','B','R','O','W','S','E','_','O','F','N',0 };
+#endif
+#define SZOLEUI_MSG_HELP             WINELIB_NAME_AW(SZOLEUI_MSG_HELP)
+#define SZOLEUI_MSG_ENDDIALOG        WINELIB_NAME_AW(SZOLEUI_MSG_ENDDIALOG)
+#define SZOLEUI_MSG_BROWSE           WINELIB_NAME_AW(SZOLEUI_MSG_BROWSE)
+#define SZOLEUI_MSG_CHANGEICON       WINELIB_NAME_AW(SZOLEUI_MSG_CHANGEICON)
+#define SZOLEUI_MSG_CLOSEBUSYDIALOG  WINELIB_NAME_AW(SZOLEUI_MSG_CLOSEBUSYDIALOG)
+#define SZOLEUI_MSG_CONVERT          WINELIB_NAME_AW(SZOLEUI_MSG_CONVERT)
+#define SZOLEUI_MSG_CHANGESOURCE     WINELIB_NAME_AW(SZOLEUI_MSG_CHANGESOURCE)
+#define SZOLEUI_MSG_ADDCONTROL       WINELIB_NAME_AW(SZOLEUI_MSG_ADDCONTROL)
+#define SZOLEUI_MSG_BROWSE_OFN       WINELIB_NAME_AW(SZOLEUI_MSG_BROWSE_OFN)
+
+
+/*****************************************************************************
+ * INSERT OBJECT DIALOG
+ */
+typedef struct tagOLEUIINSERTOBJECTA
+{
+    DWORD           cbStruct;
+    DWORD           dwFlags;
+    HWND            hWndOwner;
+    LPCSTR          lpszCaption;
+    LPFNOLEUIHOOK   lpfnHook;
+    LPARAM          lCustData;
+    HINSTANCE       hInstance;
+    LPCSTR          lpszTemplate;
+    HRSRC           hResource;
+    CLSID           clsid;
+    LPSTR           lpszFile;
+    UINT            cchFile;
+    UINT            cClsidExclude;
+    LPCLSID         lpClsidExclude;
+    IID             iid;
+    DWORD           oleRender;
+    LPFORMATETC     lpFormatEtc;
+    LPOLECLIENTSITE lpIOleClientSite;
+    LPSTORAGE       lpIStorage;
+    LPVOID          *ppvObj;
+    SCODE           sc;
+    HGLOBAL         hMetaPict;
+} OLEUIINSERTOBJECTA, *POLEUIINSERTOBJECTA, *LPOLEUIINSERTOBJECTA;
+
+typedef struct tagOLEUIINSERTOBJECTW
+{
+    DWORD           cbStruct;
+    DWORD           dwFlags;
+    HWND            hWndOwner;
+    LPCWSTR         lpszCaption;
+    LPFNOLEUIHOOK   lpfnHook;
+    LPARAM          lCustData;
+    HINSTANCE       hInstance;
+    LPCWSTR         lpszTemplate;
+    HRSRC           hResource;
+    CLSID           clsid;
+    LPWSTR          lpszFile;
+    UINT            cchFile;
+    UINT            cClsidExclude;
+    LPCLSID         lpClsidExclude;
+    IID             iid;
+    DWORD           oleRender;
+    LPFORMATETC     lpFormatEtc;
+    LPOLECLIENTSITE lpIOleClientSite;
+    LPSTORAGE       lpIStorage;
+    LPVOID          *ppvObj;
+    SCODE           sc;
+    HGLOBAL         hMetaPict;
+} OLEUIINSERTOBJECTW, *POLEUIINSERTOBJECTW, *LPOLEUIINSERTOBJECTW;
+
+DECL_WINELIB_TYPE_AW(OLEUIINSERTOBJECT)
+DECL_WINELIB_TYPE_AW(POLEUIINSERTOBJECT)
+DECL_WINELIB_TYPE_AW(LPOLEUIINSERTOBJECT)
+
+#define IOF_SHOWHELP                    0x00000001L
+#define IOF_SELECTCREATENEW             0x00000002L
+#define IOF_SELECTCREATEFROMFILE        0x00000004L
+#define IOF_CHECKLINK                   0x00000008L
+#define IOF_CHECKDISPLAYASICON          0x00000010L
+#define IOF_CREATENEWOBJECT             0x00000020L
+#define IOF_CREATEFILEOBJECT            0x00000040L
+#define IOF_CREATELINKOBJECT            0x00000080L
+#define IOF_DISABLELINK                 0x00000100L
+#define IOF_VERIFYSERVERSEXIST          0x00000200L
+#define IOF_DISABLEDISPLAYASICON        0x00000400L
+#define IOF_HIDECHANGEICON              0x00000800L
+#define IOF_SHOWINSERTCONTROL           0x00001000L
+#define IOF_SELECTCREATECONTROL         0x00002000L
+
+/*****************************************************************************
+ * CONVERT DIALOG
+ */
+typedef struct tagOLEUICONVERTA
+{
+    DWORD           cbStruct;
+    DWORD           dwFlags;
+    HWND            hWndOwner;
+    LPCSTR          lpszCaption;
+    LPFNOLEUIHOOK   lpfnHook;
+    LPARAM          lCustData;
+    HINSTANCE       hInstance;
+    LPCSTR          lpszTemplate;
+    HRSRC           hResource;
+    CLSID           clsid;
+    CLSID           clsidConvertDefault;
+    CLSID           clsidActivateDefault;
+    CLSID           clsidNew;
+    DWORD           dvAspect;
+    WORD            wFormat;
+    BOOL            fIsLinkedObject;
+    HGLOBAL         hMetaPict;
+    LPSTR           lpszUserType;
+    BOOL            fObjectsIconChanged;
+    LPSTR           lpszDefLabel;
+    UINT            cClsidExclude;
+    LPCLSID         lpClsidExclude;
+} OLEUICONVERTA, *POLEUICONVERTA, *LPOLEUICONVERTA;
+
+typedef struct tagOLEUICONVERTW
+{
+    DWORD           cbStruct;
+    DWORD           dwFlags;
+    HWND            hWndOwner;
+    LPCWSTR         lpszCaption;
+    LPFNOLEUIHOOK   lpfnHook;
+    LPARAM          lCustData;
+    HINSTANCE       hInstance;
+    LPCWSTR         lpszTemplate;
+    HRSRC           hResource;
+    CLSID           clsid;
+    CLSID           clsidConvertDefault;
+    CLSID           clsidActivateDefault;
+    CLSID           clsidNew;
+    DWORD           dvAspect;
+    WORD            wFormat;
+    BOOL            fIsLinkedObject;
+    HGLOBAL         hMetaPict;
+    LPWSTR          lpszUserType;
+    BOOL            fObjectsIconChanged;
+    LPWSTR          lpszDefLabel;
+    UINT            cClsidExclude;
+    LPCLSID         lpClsidExclude;
+} OLEUICONVERTW, *POLEUICONVERTW, *LPOLEUICONVERTW;
+
+DECL_WINELIB_TYPE_AW(OLEUICONVERT)
+DECL_WINELIB_TYPE_AW(POLEUICONVERT)
+DECL_WINELIB_TYPE_AW(LPOLEUICONVERT)
+
+#define CF_SHOWHELPBUTTON               0x00000001L
+#define CF_SETCONVERTDEFAULT            0x00000002L
+#define CF_SETACTIVATEDEFAULT           0x00000004L
+#define CF_SELECTCONVERTTO              0x00000008L
+#define CF_SELECTACTIVATEAS             0x00000010L
+#define CF_DISABLEDISPLAYASICON         0x00000020L
+#define CF_DISABLEACTIVATEAS            0x00000040L
+#define CF_HIDECHANGEICON               0x00000080L
+#define CF_CONVERTONLY                  0x00000100L
+
+/*****************************************************************************
+ * CHANGE ICON DIALOG
+ */
+typedef struct tagOLEUICHANGEICONA
+{
+    DWORD           cbStruct;
+    DWORD           dwFlags;
+    HWND            hWndOwner;
+    LPCSTR          lpszCaption;
+    LPFNOLEUIHOOK   lpfnHook;
+    LPARAM          lCustData;
+    HINSTANCE       hInstance;
+    LPCSTR          lpszTemplate;
+    HRSRC           hResource;
+    HGLOBAL         hMetaPict;
+    CLSID           clsid;
+    CHAR            szIconExe[MAX_PATH];
+    INT             cchIconExe;
+} OLEUICHANGEICONA, *POLEUICHANGEICONA, *LPOLEUICHANGEICONA;
+
+typedef struct tagOLEUICHANGEICONW
+{
+    DWORD           cbStruct;
+    DWORD           dwFlags;
+    HWND            hWndOwner;
+    LPCWSTR         lpszCaption;
+    LPFNOLEUIHOOK   lpfnHook;
+    LPARAM          lCustData;
+    HINSTANCE       hInstance;
+    LPCWSTR         lpszTemplate;
+    HRSRC           hResource;
+    HGLOBAL         hMetaPict;
+    CLSID           clsid;
+    WCHAR           szIconExe[MAX_PATH];
+    INT             cchIconExe;
+} OLEUICHANGEICONW, *POLEUICHANGEICONW, *LPOLEUICHANGEICONW;
+
+DECL_WINELIB_TYPE_AW(OLEUICHANGEICON)
+DECL_WINELIB_TYPE_AW(POLEUICHANGEICON)
+DECL_WINELIB_TYPE_AW(LPOLEUICHANGEICON)
+
+
+#define CIF_SHOWHELP                    0x00000001L
+#define CIF_SELECTCURRENT               0x00000002L
+#define CIF_SELECTDEFAULT               0x00000004L
+#define CIF_SELECTFROMFILE              0x00000008L
+#define CIF_USEICONEXE                  0x00000010L
+
+/*****************************************************************************
+ * PASTE SPECIAL DIALOG
+ */
+
+typedef enum tagOLEUIPASTEFLAG
+{
+   OLEUIPASTE_ENABLEICON    = 2048,
+   OLEUIPASTE_PASTEONLY     = 0,
+   OLEUIPASTE_PASTE         = 512,
+   OLEUIPASTE_LINKANYTYPE   = 1024,
+   OLEUIPASTE_LINKTYPE1     = 1,
+   OLEUIPASTE_LINKTYPE2     = 2,
+   OLEUIPASTE_LINKTYPE3     = 4,
+   OLEUIPASTE_LINKTYPE4     = 8,
+   OLEUIPASTE_LINKTYPE5     = 16,
+   OLEUIPASTE_LINKTYPE6     = 32,
+   OLEUIPASTE_LINKTYPE7     = 64,
+   OLEUIPASTE_LINKTYPE8     = 128
+} OLEUIPASTEFLAG;
+
+typedef struct tagOLEUIPASTEENTRYA
+{
+   FORMATETC        fmtetc;
+   LPCSTR           lpstrFormatName;
+   LPCSTR           lpstrResultText;
+   DWORD            dwFlags;
+   DWORD            dwScratchSpace;
+} OLEUIPASTEENTRYA, *POLEUIPASTEENTRYA, *LPOLEUIPASTEENTRYA;
+
+typedef struct tagOLEUIPASTEENTRYW
+{
+   FORMATETC        fmtetc;
+   LPCWSTR          lpstrFormatName;
+   LPCWSTR          lpstrResultText;
+   DWORD            dwFlags;
+   DWORD            dwScratchSpace;
+} OLEUIPASTEENTRYW, *POLEUIPASTEENTRYW, *LPOLEUIPASTEENTRYW;
+
+DECL_WINELIB_TYPE_AW(OLEUIPASTEENTRY)
+DECL_WINELIB_TYPE_AW(POLEUIPASTEENTRY)
+DECL_WINELIB_TYPE_AW(LPOLEUIPASTEENTRY)
+
+typedef struct tagOLEUIPASTESPECIALA
+{
+    DWORD           cbStruct;
+    DWORD           dwFlags;
+    HWND            hWndOwner;
+    LPCSTR          lpszCaption;
+    LPFNOLEUIHOOK   lpfnHook;
+    LPARAM          lCustData;
+    HINSTANCE       hInstance;
+    LPCSTR          lpszTemplate;
+    HRSRC           hResource;
+    LPDATAOBJECT    lpSrcDataObj;
+    LPOLEUIPASTEENTRYA arrPasteEntries;
+    INT             cPasteEntries;
+    UINT*           arrLinkTypes;
+    INT             cLinkTypes;
+    UINT            cClsidExclude;
+    LPCLSID         lpClsidExclude;
+    INT             nSelectedIndex;
+    BOOL            fLink;
+    HGLOBAL         hMetaPict;
+    SIZEL           sizel;
+} OLEUIPASTESPECIALA, *POLEUIPASTESPECIALA, *LPOLEUIPASTESPECIALA;
+
+typedef struct tagOLEUIPASTESPECIALW
+{
+    DWORD           cbStruct;
+    DWORD           dwFlags;
+    HWND            hWndOwner;
+    LPCWSTR         lpszCaption;
+    LPFNOLEUIHOOK   lpfnHook;
+    LPARAM          lCustData;
+    HINSTANCE       hInstance;
+    LPCWSTR         lpszTemplate;
+    HRSRC           hResource;
+    LPDATAOBJECT    lpSrcDataObj;
+    LPOLEUIPASTEENTRYW arrPasteEntries;
+    INT             cPasteEntries;
+    UINT*           arrLinkTypes;
+    INT             cLinkTypes;
+    UINT            cClsidExclude;
+    LPCLSID         lpClsidExclude;
+    INT             nSelectedIndex;
+    BOOL            fLink;
+    HGLOBAL         hMetaPict;
+    SIZEL           sizel;
+} OLEUIPASTESPECIALW, *POLEUIPASTESPECIALW, *LPOLEUIPASTESPECIALW;
+
+DECL_WINELIB_TYPE_AW(OLEUIPASTESPECIAL)
+DECL_WINELIB_TYPE_AW(POLEUIPASTESPECIAL)
+DECL_WINELIB_TYPE_AW(LPOLEUIPASTESPECIAL)
+
+#define PS_MAXLINKTYPES                 8
+
+#define PSF_SHOWHELP                    0x00000001L
+#define PSF_SELECTPASTE                 0x00000002L
+#define PSF_SELECTPASTELINK             0x00000004L
+
+#define PSF_CHECKDISPLAYASICON          0x00000008L
+#define PSF_DISABLEDISPLAYASICON        0x00000010L
+#define PSF_HIDECHANGEICON              0x00000020L
+#define PSF_STAYONCLIPBOARDCHANGE       0x00000040L
+#define PSF_NOREFRESHDATAOBJECT         0x00000080L
+
+#define OLEUI_IOERR_SRCDATAOBJECTINVALID    (OLEUI_ERR_STANDARDMAX+0)
+#define OLEUI_IOERR_ARRPASTEENTRIESINVALID  (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_IOERR_ARRLINKTYPESINVALID     (OLEUI_ERR_STANDARDMAX+2)
+#define OLEUI_PSERR_CLIPBOARDCHANGED        (OLEUI_ERR_STANDARDMAX+3)
+#define OLEUI_PSERR_GETCLIPBOARDFAILED      (OLEUI_ERR_STANDARDMAX+4)
+
+/* Paste Special dialog resource ids */
+#define IDD_PASTESPECIAL       1003
+#define IDD_PASTESPECIAL4      1108
+
+/* Paste Special dialog control ids */
+#define IDC_PS_PASTE           500
+#define IDC_PS_PASTELINK       501
+#define IDC_PS_SOURCETEXT      502
+#define IDC_PS_PASTELIST       503
+#define IDC_PS_PASTELINKLIST   504
+#define IDC_PS_DISPLAYLIST     505
+#define IDC_PS_DISPLAYASICON   506
+#define IDC_PS_ICONDISPLAY     507
+#define IDC_PS_CHANGEICON      508
+#define IDC_PS_RESULTIMAGE     509
+#define IDC_PS_RESULTTEXT      510
+
+/*****************************************************************************
+ * EDIT LINKS DIALOG
+ */
+
+#define ELF_SHOWHELP               0x00000001L
+#define ELF_DISABLEUPDATENOW       0x00000002L
+#define ELF_DISABLEOPENSOURCE      0x00000004L
+#define ELF_DISABLECHANGESOURCE    0x00000008L
+#define ELF_DISABLECANCELLINK      0x00000010L
+
+typedef struct tagOLEUIEDITLINKSW
+{
+    DWORD           cbStruct;
+    DWORD           dwFlags;
+    HWND            hWndOwner;
+    LPCWSTR         lpszCaption;
+    LPFNOLEUIHOOK   lpfnHook;
+    LPARAM          lCustData;
+    HINSTANCE       hInstance;
+    LPCWSTR         lpszTemplate;
+    HRSRC           hResource;
+    LPOLEUILINKCONTAINERW lpOleUILinkContainer;
+} OLEUIEDITLINKSW, *POLEUIEDITLINKSW, *LPOLEUIEDITLINKSW;
+
+typedef struct tagOLEUIEDITLINKSA
+{
+    DWORD           cbStruct;
+    DWORD           dwFlags;
+    HWND            hWndOwner;
+    LPCSTR          lpszCaption;
+    LPFNOLEUIHOOK   lpfnHook;
+    LPARAM          lCustData;
+    HINSTANCE       hInstance;
+    LPCSTR          lpszTemplate;
+    HRSRC           hResource;
+    LPOLEUILINKCONTAINERA lpOleUILinkContainer;
+} OLEUIEDITLINKSA, *POLEUIEDITLINKSA, *LPOLEUIEDITLINKSA;
+
+DECL_WINELIB_TYPE_AW(OLEUIEDITLINKS)
+DECL_WINELIB_TYPE_AW(POLEUIEDITLINKS)
+DECL_WINELIB_TYPE_AW(LPOLEUIEDITLINKS)
+
+
+/***********************************************************************************
+ * BUSY DIALOG
+ */
+typedef struct tagOLEUIBUSYA
+{
+    DWORD           cbStruct;
+    DWORD           dwFlags;
+    HWND            hWndOwner;
+    LPCSTR          lpszCaption;
+    LPFNOLEUIHOOK   lpfnHook;
+    LPARAM          lCustData;
+    HINSTANCE       hInstance;
+    LPCSTR          lpszTemplate;
+    HRSRC           hResource;
+    HTASK           hTask;
+    HWND*           lphWndDialog;
+} OLEUIBUSYA, *POLEUIBUSYA, *LPOLEUIBUSYA;
+
+typedef struct tagOLEUIBUSYW
+{
+    DWORD           cbStruct;
+    DWORD           dwFlags;
+    HWND            hWndOwner;
+    LPCWSTR         lpszCaption;
+    LPFNOLEUIHOOK   lpfnHook;
+    LPARAM          lCustData;
+    HINSTANCE       hInstance;
+    LPCWSTR         lpszTemplate;
+    HRSRC           hResource;
+    HTASK           hTask;
+    HWND*           lphWndDialog;
+} OLEUIBUSYW, *POLEUIBUSYW, *LPOLEUIBUSYW;
+
+DECL_WINELIB_TYPE_AW(OLEUIBUSY)
+DECL_WINELIB_TYPE_AW(POLEUIBUSY)
+DECL_WINELIB_TYPE_AW(LPOLEUIBUSY)
+
+
+#define BZ_DISABLECANCELBUTTON          0x00000001L
+#define BZ_DISABLESWITCHTOBUTTON        0x00000002L
+#define BZ_DISABLERETRYBUTTON           0x00000004L
+#define BZ_NOTRESPONDINGDIALOG          0x00000008L
+
+/***********************************************************************************
+ * OBJECT PROPERTIES DIALOG
+ */
+
+struct tagOLEUIOBJECTPROPSW;
+struct tagOLEUIOBJECTPROPSA;
+
+typedef struct tagOLEUIGNRLPROPSA
+{
+    DWORD           cbStruct;
+    DWORD           dwFlags;
+    DWORD           dwReserved1[2];
+    LPFNOLEUIHOOK   lpfnHook;
+    LPARAM          lCustData;
+    DWORD           dwReserved2[3];
+    struct tagOLEUIOBJECTPROPSA* lpOP;
+
+} OLEUIGNRLPROPSA, *POLEUIGNRLPROPSA, *LPOLEUIGNRLPROPSA;
+
+typedef struct tagOLEUIGNRLPROPSW
+{
+    DWORD           cbStruct;
+    DWORD           dwFlags;
+    DWORD           dwReserved1[2];
+    LPFNOLEUIHOOK   lpfnHook;
+    LPARAM          lCustData;
+    DWORD           dwReserved2[3];
+    struct tagOLEUIOBJECTPROPSW* lpOP;
+} OLEUIGNRLPROPSW, *POLEUIGNRLPROPSW, *LPOLEUIGNRLPROPSW;
+
+DECL_WINELIB_TYPE_AW(OLEUIGNRLPROPS)
+DECL_WINELIB_TYPE_AW(POLEUIGNRLPROPS)
+DECL_WINELIB_TYPE_AW(LPOLEUIGNRLPROPS)
+
+typedef struct tagOLEUIVIEWPROPSA
+{
+    DWORD           cbStruct;
+    DWORD           dwFlags;
+    DWORD           dwReserved1[2];
+    LPFNOLEUIHOOK   lpfnHook;
+    LPARAM          lCustData;
+    DWORD           dwReserved2[3];
+    struct tagOLEUIOBJECTPROPSA* lpOP;
+    INT             nScaleMin;
+    INT             nScaleMax;
+} OLEUIVIEWPROPSA, *POLEUIVIEWPROPSA, *LPOLEUIVIEWPROPSA;
+
+typedef struct tagOLEUIVIEWPROPSW
+{
+    DWORD           cbStruct;
+    DWORD           dwFlags;
+    DWORD           dwReserved1[2];
+    LPFNOLEUIHOOK   lpfnHook;
+    LPARAM          lCustData;
+    DWORD           dwReserved2[3];
+    struct tagOLEUIOBJECTPROPSW* lpOP;
+    INT             nScaleMin;
+    INT             nScaleMax;
+} OLEUIVIEWPROPSW, *POLEUIVIEWPROPSW, *LPOLEUIVIEWPROPSW;
+
+DECL_WINELIB_TYPE_AW(OLEUIVIEWPROPS)
+DECL_WINELIB_TYPE_AW(POLEUIVIEWPROPS)
+DECL_WINELIB_TYPE_AW(LPOLEUIVIEWPROPS)
+
+
+#define VPF_SELECTRELATIVE          0x00000001L
+#define VPF_DISABLERELATIVE         0x00000002L
+#define VPF_DISABLESCALE            0x00000004L
+
+typedef struct tagOLEUILINKPROPSA
+{
+    DWORD           cbStruct;
+    DWORD           dwFlags;
+    DWORD           dwReserved1[2];
+    LPFNOLEUIHOOK   lpfnHook;
+    LPARAM          lCustData;
+    DWORD           dwReserved2[3];
+    struct tagOLEUIOBJECTPROPSA* lpOP;
+} OLEUILINKPROPSA, *POLEUILINKPROPSA, *LPOLEUILINKPROPSA;
+
+typedef struct tagOLEUILINKPROPSW
+{
+    DWORD           cbStruct;
+    DWORD           dwFlags;
+    DWORD           dwReserved1[2];
+    LPFNOLEUIHOOK   lpfnHook;
+    LPARAM          lCustData;
+    DWORD           dwReserved2[3];
+    struct tagOLEUIOBJECTPROPSW* lpOP;
+} OLEUILINKPROPSW, *POLEUILINKPROPSW, *LPOLEUILINKPROPSW;
+
+DECL_WINELIB_TYPE_AW(OLEUILINKPROPS)
+DECL_WINELIB_TYPE_AW(POLEUILINKPROPS)
+DECL_WINELIB_TYPE_AW(LPOLEUILINKPROPS)
+
+typedef struct tagOLEUIOBJECTPROPSA
+{
+    DWORD                cbStruct;
+    DWORD                dwFlags;
+    LPPROPSHEETHEADERA   lpPS;
+    DWORD                dwObject;
+    LPOLEUIOBJINFOA      lpObjInfo;
+    DWORD                dwLink;
+    LPOLEUILINKINFOA     lpLinkInfo;
+    LPOLEUIGNRLPROPSA    lpGP;
+    LPOLEUIVIEWPROPSA    lpVP;
+    LPOLEUILINKPROPSA    lpLP;
+} OLEUIOBJECTPROPSA, *POLEUIOBJECTPROPSA, *LPOLEUIOBJECTPROPSA;
+
+typedef struct tagOLEUIOBJECTPROPSW
+{
+    DWORD                cbStruct;
+    DWORD                dwFlags;
+    LPPROPSHEETHEADERW   lpPS;
+    DWORD                dwObject;
+    LPOLEUIOBJINFOW      lpObjInfo;
+    DWORD                dwLink;
+    LPOLEUILINKINFOW     lpLinkInfo;
+    LPOLEUIGNRLPROPSW    lpGP;
+    LPOLEUIVIEWPROPSW    lpVP;
+    LPOLEUILINKPROPSW    lpLP;
+} OLEUIOBJECTPROPSW, *POLEUIOBJECTPROPSW, *LPOLEUIOBJECTPROPSW;
+
+DECL_WINELIB_TYPE_AW(OLEUIOBJECTPROPS)
+DECL_WINELIB_TYPE_AW(POLEUIOBJECTPROPS)
+DECL_WINELIB_TYPE_AW(LPOLEUIOBJECTPROPS)
+
+#define OPF_OBJECTISLINK                0x00000001L
+#define OPF_NOFILLDEFAULT               0x00000002L
+#define OPF_SHOWHELP                    0x00000004L
+#define OPF_DISABLECONVERT              0x00000008L
+
+
+/************************************************************************************
+ * CHANGE SOURCE DIALOG
+ */
+
+
+typedef struct tagOLEUICHANGESOURCEW
+{
+    DWORD           cbStruct;
+    DWORD           dwFlags;
+    HWND            hWndOwner;
+    LPCWSTR         lpszCaption;
+    LPFNOLEUIHOOK   lpfnHook;
+    LPARAM          lCustData;
+    HINSTANCE       hInstance;
+    LPCWSTR         lpszTemplate;
+    HRSRC           hResource;
+    OPENFILENAMEW*lpOFN;
+    DWORD           dwReserved1[4];
+    LPOLEUILINKCONTAINERW lpOleUILinkContainer;
+    DWORD           dwLink;
+    LPWSTR          lpszDisplayName;
+    ULONG           nFileLength;
+    LPWSTR          lpszFrom;
+    LPWSTR          lpszTo;
+} OLEUICHANGESOURCEW, *POLEUICHANGESOURCEW, *LPOLEUICHANGESOURCEW;
+
+
+typedef struct tagOLEUICHANGESOURCEA
+{
+    DWORD           cbStruct;
+    DWORD           dwFlags;
+    HWND            hWndOwner;
+    LPCSTR          lpszCaption;
+    LPFNOLEUIHOOK   lpfnHook;
+    LPARAM          lCustData;
+    HINSTANCE       hInstance;
+    LPCSTR          lpszTemplate;
+    HRSRC           hResource;
+    OPENFILENAMEA*  lpOFN;
+    DWORD           dwReserved1[4];
+    LPOLEUILINKCONTAINERA lpOleUILinkContainer;
+    DWORD           dwLink;
+    LPSTR           lpszDisplayName;
+    ULONG           nFileLength;
+    LPSTR           lpszFrom;
+    LPSTR           lpszTo;
+} OLEUICHANGESOURCEA, *POLEUICHANGESOURCEA, *LPOLEUICHANGESOURCEA;
+
+
+DECL_WINELIB_TYPE_AW(OLEUICHANGESOURCE)
+DECL_WINELIB_TYPE_AW(POLEUICHANGESOURCE)
+DECL_WINELIB_TYPE_AW(LPOLEUICHANGESOURCE)
+
+/* Change Source Dialog flags */
+#define CSF_SHOWHELP                    0x00000001L
+#define CSF_VALIDSOURCE                 0x00000002L
+#define CSF_ONLYGETSOURCE               0x00000004L
+#define CSF_EXPLORER                    0x00000008L
+
+
+/*****************************************************************************
+ * IOleUILinkContainer interface
+ */
+#define INTERFACE   IOleUILinkContainerA
+DECLARE_INTERFACE_(IOleUILinkContainerA,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IOleUILinkContainerA methods ***/
+    STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD dwLink) PURE;
+    STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD dwLink, DWORD dwUpdateOpt) PURE;
+    STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD dwLink, DWORD *lpdwUpdateOpt) PURE;
+    STDMETHOD(SetLinkSource)(THIS_ DWORD dwLink, LPSTR lpszDisplayName,
+                ULONG lenFileName, ULONG *pchEaten, BOOL fValidateSource) PURE;
+    STDMETHOD(GetLinkSource)(THIS_ DWORD dwLink, LPSTR *lplpszDisplayName, ULONG *lplenFileName,
+                LPSTR *lplpszFullLinkType,  LPSTR *lplpszShortLinkType,
+                BOOL *lpfSourceAvailable,  BOOL *lpfIsSelected) PURE;
+    STDMETHOD(OpenLinkSource)(THIS_ DWORD dwLink) PURE;
+    STDMETHOD(UpdateLink)(THIS_ DWORD dwLink, BOOL fErrorMessage, BOOL fReserved) PURE;
+    STDMETHOD(CancelLink)(THIS_ DWORD dwLink) PURE;
+};
+#undef INTERFACE
+
+#define INTERFACE   IOleUILinkContainerW
+DECLARE_INTERFACE_(IOleUILinkContainerW,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IOleUILinkContainerW methods ***/
+    STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD dwLink) PURE;
+    STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD dwLink,  DWORD dwUpdateOpt) PURE;
+    STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD dwLink,  DWORD *lpdwUpdateOpt) PURE;
+    STDMETHOD(SetLinkSource)(THIS_ DWORD dwLink,  LPWSTR lpszDisplayName,
+                ULONG lenFileName,  ULONG *pchEaten,  BOOL fValidateSource) PURE;
+    STDMETHOD(GetLinkSource)(THIS_ DWORD dwLink, LPWSTR *lplpszDisplayName, ULONG *lplenFileName,
+                LPWSTR *lplpszFullLinkType,  LPWSTR *lplpszShortLinkType,
+                BOOL *lpfSourceAvailable,  BOOL *lpfIsSelected) PURE;
+    STDMETHOD(OpenLinkSource)(THIS_ DWORD dwLink) PURE;
+    STDMETHOD(UpdateLink)(THIS_ DWORD dwLink, BOOL fErrorMessage, BOOL fReserved) PURE;
+    STDMETHOD(CancelLink)(THIS_ DWORD dwLink) PURE;
+};
+#undef INTERFACE
+
+DECL_WINELIB_TYPE_AW(IOleUILinkContainer)
+DECL_WINELIB_TYPE_AW(POLEUILINKCONTAINER)
+DECL_WINELIB_TYPE_AW(LPOLEUILINKCONTAINER)
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IOleUILinkContainer_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
+#define IOleUILinkContainer_AddRef(p)                      (p)->lpVtbl->AddRef(p)
+#define IOleUILinkContainer_Release(p)                     (p)->lpVtbl->Release(p)
+/*** IOleUILinkContainer methods ***/
+#define IOleUILinkContainer_GetNextLink(p,a)               (p)->lpVtbl->GetNextLink(p,a)
+#define IOleUILinkContainer_SetLinkUpdateOptions(p,a,b)    (p)->lpVtbl->SetLinkUpdateOptions(p,a,b)
+#define IOleUILinkContainer_GetLinkUpdateOptions(p,a,b)    (p)->lpVtbl->GetLinkUpdateOptions(p,a,b)
+#define IOleUILinkContainer_SetLinkSource(p,a,b,c,d,e)     (p)->lpVtbl->SetLinkSource(p,a,b,c,d,e)
+#define IOleUILinkContainer_GetLinkSource(p,a,b,c,d,e,f,g) (p)->lpVtbl->GetLinkSource(p,a,b,c,d,e,f,g)
+#define IOleUILinkContainer_OpenLinkSource(p,a)            (p)->lpVtbl->OpenLinkSource(p,a)
+#define IOleUILinkContainer_UpdateLink(p,a,b,c)            (p)->lpVtbl->UpdateLink(p,a,b,c)
+#define IOleUILinkContainer_CancelLink(p,a)                (p)->lpVtbl->CancelLink(p,a)
+#endif
+
+
+/*****************************************************************************
+ * IOleUILinkInfo interface
+ */
+#define INTERFACE   IOleUILinkInfoA
+DECLARE_INTERFACE_(IOleUILinkInfoA,IOleUILinkContainerA)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IOleUILinkContainerA methods ***/
+    STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD dwLink) PURE;
+    STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD dwLink, DWORD dwUpdateOpt) PURE;
+    STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD dwLink, DWORD *lpdwUpdateOpt) PURE;
+    STDMETHOD(SetLinkSource)(THIS_ DWORD dwLink, LPSTR lpszDisplayName,
+                ULONG lenFileName, ULONG *pchEaten, BOOL fValidateSource) PURE;
+    STDMETHOD(GetLinkSource)(THIS_ DWORD dwLink, LPSTR *lplpszDisplayName, ULONG *lplenFileName,
+                LPSTR *lplpszFullLinkType,  LPSTR *lplpszShortLinkType,
+                BOOL *lpfSourceAvailable,  BOOL *lpfIsSelected) PURE;
+    STDMETHOD(OpenLinkSource)(THIS_ DWORD dwLink) PURE;
+    STDMETHOD(UpdateLink)(THIS_ DWORD dwLink, BOOL fErrorMessage, BOOL fReserved) PURE;
+    STDMETHOD(CancelLink)(THIS_ DWORD dwLink) PURE;
+    /*** IOleUILinkInfoA methods ***/
+    STDMETHOD(GetLastUpdate)(THIS_ DWORD dwLink,  FILETIME *lpLastUpdate) PURE;
+};
+#undef INTERFACE
+
+#define INTERFACE   IOleUILinkInfoW
+DECLARE_INTERFACE_(IOleUILinkInfoW,IOleUILinkContainerW)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IOleUILinkContainerW methods ***/
+    STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD dwLink) PURE;
+    STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD dwLink,  DWORD dwUpdateOpt) PURE;
+    STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD dwLink,  DWORD *lpdwUpdateOpt) PURE;
+    STDMETHOD(SetLinkSource)(THIS_ DWORD dwLink,  LPWSTR lpszDisplayName,
+                ULONG lenFileName,  ULONG *pchEaten,  BOOL fValidateSource) PURE;
+    STDMETHOD(GetLinkSource)(THIS_ DWORD dwLink, LPWSTR *lplpszDisplayName, ULONG *lplenFileName,
+                LPWSTR *lplpszFullLinkType,  LPWSTR *lplpszShortLinkType,
+                BOOL *lpfSourceAvailable,  BOOL *lpfIsSelected) PURE;
+    STDMETHOD(OpenLinkSource)(THIS_ DWORD dwLink) PURE;
+    STDMETHOD(UpdateLink)(THIS_ DWORD dwLink, BOOL fErrorMessage, BOOL fReserved) PURE;
+    STDMETHOD(CancelLink)(THIS_ DWORD dwLink) PURE;
+    /*** IOleUILinkInfoW methods ***/
+    STDMETHOD(GetLastUpdate)(THIS_ DWORD dwLink,  FILETIME *lpLastUpdate) PURE;
+};
+#undef  INTERFACE
+
+DECL_WINELIB_TYPE_AW(IOleUILinkInfo)
+DECL_WINELIB_TYPE_AW(POLEUILINKINFO)
+DECL_WINELIB_TYPE_AW(LPOLEUILINKINFO)
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IOleUILinkInfo_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
+#define IOleUILinkInfo_AddRef(p)                      (p)->lpVtbl->AddRef(p)
+#define IOleUILinkInfo_Release(p)                     (p)->lpVtbl->Release(p)
+/*** IOleUILinkContainer methods ***/
+#define IOleUILinkInfo_GetNextLink(p,a)               (p)->lpVtbl->GetNextLink(p,a)
+#define IOleUILinkInfo_SetLinkUpdateOptions(p,a,b)    (p)->lpVtbl->SetLinkUpdateOptions(p,a,b)
+#define IOleUILinkInfo_GetLinkUpdateOptions(p,a,b)    (p)->lpVtbl->GetLinkUpdateOptions(p,a,b)
+#define IOleUILinkInfo_SetLinkSource(p,a,b,c,d,e)     (p)->lpVtbl->SetLinkSource(p,a,b,c,d,e)
+#define IOleUILinkInfo_GetLinkSource(p,a,b,c,d,e,f,g) (p)->lpVtbl->GetLinkSource(p,a,b,c,d,e,f,g)
+#define IOleUILinkInfo_OpenLinkSource(p,a)            (p)->lpVtbl->OpenLinkSource(p,a)
+#define IOleUILinkInfo_UpdateLink(p,a,b,c)            (p)->lpVtbl->UpdateLink(p,a,b,c)
+#define IOleUILinkInfo_CancelLink(p,a)                (p)->lpVtbl->CancelLink(p,a)
+/*** IOleUILinkInfo methods ***/
+#define IOleUILinkInfo_GetLastUpdate(p,a,b)           (p)->lpVtbl->GetLastUpdate(p,a,b)
+#endif
+
+
+/*****************************************************************************
+ * IOleUIObjInfo interface
+ */
+#define INTERFACE   IOleUIObjInfoA
+DECLARE_INTERFACE_(IOleUIObjInfoA,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IOleUIObjInfoA methods ***/
+    STDMETHOD(GetObjectInfo)(THIS_ DWORD dwObject, DWORD *lpdwObjSize, LPSTR *lplpszLabel,
+                LPSTR *lplpszType, LPSTR *lplpszShortType, LPSTR *lplpszLocation) PURE;
+    STDMETHOD(GetConvertInfo)(THIS_ DWORD dwObject, CLSID *lpClassID, WORD *lpwFormat,
+                CLSID *lpConvertDefaultClassID, LPCLSID *lplpClsidExclude, UINT *lpcClsidExclude) PURE;
+    STDMETHOD(ConvertObject)(THIS_ DWORD dwObject,  REFCLSID clsidNew) PURE;
+    STDMETHOD(GetViewInfo)(THIS_ DWORD dwObject, HGLOBAL *phMetaPict, DWORD *pdvAspect, INT *pnCurrentScale) PURE;
+    STDMETHOD(SetViewInfo)(THIS_ DWORD dwObject, HGLOBAL hMetaPict, DWORD dvAspect,
+                INT nCurrentScale, BOOL bRelativeToOrig) PURE;
+};
+#undef INTERFACE
+
+#define INTERFACE   IOleUIObjInfoW
+DECLARE_INTERFACE_(IOleUIObjInfoW,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IOleUIObjInfoW methods ***/
+    STDMETHOD(GetObjectInfo)(THIS_ DWORD dwObject, DWORD *lpdwObjSize, LPWSTR *lplpszLabel,
+                LPWSTR *lplpszType,  LPWSTR *lplpszShortType,  LPWSTR *lplpszLocation) PURE;
+    STDMETHOD(GetConvertInfo)(THIS_ DWORD dwObject, CLSID *lpClassID, WORD *lpwFormat,
+                CLSID *lpConvertDefaultClassID, LPCLSID *lplpClsidExclude, UINT *lpcClsidExclude) PURE;
+    STDMETHOD(ConvertObject)(THIS_ DWORD dwObject,  REFCLSID clsidNew) PURE;
+    STDMETHOD(GetViewInfo)(THIS_ DWORD dwObject, HGLOBAL *phMetaPict, DWORD *pdvAspect, INT *pnCurrentScale) PURE;
+    STDMETHOD(SetViewInfo)(THIS_ DWORD dwObject, HGLOBAL hMetaPict, DWORD dvAspect,
+                INT nCurrentScale, BOOL bRelativeToOrig) PURE;
+};
+#undef INTERFACE
+
+DECL_WINELIB_TYPE_AW(IOleUIObjInfo)
+DECL_WINELIB_TYPE_AW(POLEUIOBJINFO)
+DECL_WINELIB_TYPE_AW(LPOLEUIOBJINFO)
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IOleUIObjInfo_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
+#define IOleUIObjInfo_AddRef(p)                        (p)->lpVtbl->AddRef(p)
+#define IOleUIObjInfo_Release(p)                       (p)->lpVtbl->Release(p)
+/*** IOleUIObjInfo methods ***/
+#define IOleUIObjInfo_GetObjectInfo(p,a,b,c,d,e,f)     (p)->lpVtbl->GetObjectInfo(p,a,b,c,d,e,f)
+#define IOleUIObjInfo_GetConvertInfo(p,a,b,c,d,e,f)    (p)->lpVtbl->GetConvertInfo(p,a,b,c,d,e,f)
+#define IOleUIObjInfo_ConvertObject(p,a,b)             (p)->lpVtbl->ConvertObject(p,a,b)
+#define IOleUIObjInfo_GetViewInfo(p,a,b,c,d)           (p)->lpVtbl->GetViewInfo(p,a,b,c,d)
+#define IOleUIObjInfo_SetViewInfo(p,a,b,c,d,e)         (p)->lpVtbl->SetViewInfo(p,a,b,c,d,e)
+#endif
+
+UINT WINAPI  OleUIInsertObjectW(LPOLEUIINSERTOBJECTW);
+UINT WINAPI  OleUIInsertObjectA(LPOLEUIINSERTOBJECTA);
+#define      OleUIInsertObject WINELIB_NAME_AW(OleUIInsertObject)
+UINT WINAPI  OleUIConvertA(LPOLEUICONVERTA);
+UINT WINAPI  OleUIConvertW(LPOLEUICONVERTW);
+#define      OleUIConvert WINELIB_NAME_AW(OleUIConvert)
+UINT WINAPI  OleUIChangeIconA(LPOLEUICHANGEICONA);
+UINT WINAPI  OleUIChangeIconW(LPOLEUICHANGEICONW);
+#define      OleUIChangeIcon WINELIB_NAME_AW(OleUIChangeIcon)
+UINT WINAPI  OleUIBusyA(LPOLEUIBUSYA);
+UINT WINAPI  OleUIBusyW(LPOLEUIBUSYW);
+#define      OleUIBusy WINELIB_NAME_AW(OleUIBusy)
+UINT WINAPI  OleUIObjectPropertiesA(LPOLEUIOBJECTPROPSA);
+UINT WINAPI  OleUIObjectPropertiesW(LPOLEUIOBJECTPROPSW);
+#define      OleUIObjectProperties WINELIB_NAME_AW(OleUIObjectProperties)
+UINT WINAPI  OleUIChangeSourceW(LPOLEUICHANGESOURCEW);
+UINT WINAPI  OleUIChangeSourceA(LPOLEUICHANGESOURCEA);
+#define      OleUIChangeSource WINELIB_NAME_AW(OleUIChangeSource)
+UINT WINAPI  OleUIEditLinksA(LPOLEUIEDITLINKSA lpOleUIEditLinks);
+UINT WINAPI  OleUIEditLinksW(LPOLEUIEDITLINKSW lpOleUIEditLinks);
+#define      OleUIEditLinks WINELIB_NAME_AW(OleUIEditLinks)
+BOOL WINAPI  OleUIUpdateLinksA(LPOLEUILINKCONTAINERA lpOleUILinkCntr, HWND hwndParent, LPSTR lpszTitle, INT cLinks);
+BOOL WINAPI  OleUIUpdateLinksW(LPOLEUILINKCONTAINERW lpOleUILinkCntr, HWND hwndParent, LPWSTR lpszTitle, INT cLinks);
+#define      OleUIUpdateLinks WINELIB_NAME_AW(OleUIUpdateLinks)
+BOOL WINAPI  OleUIAddVerbMenuA(LPOLEOBJECT lpOleObj, LPCSTR lpszShortType, HMENU hMenu, UINT uPos, UINT uIDVerbMin, UINT uIDVerbMax,
+  BOOL bAddConvert, UINT idConvert, HMENU *lphMenu);
+BOOL WINAPI  OleUIAddVerbMenuW(LPOLEOBJECT lpOleObj, LPCWSTR lpszShortType, HMENU hMenu, UINT uPos, UINT uIDVerbMin, UINT uIDVerbMax,
+  BOOL bAddConvert, UINT idConvert, HMENU *lphMenu);
+#define      OleUIAddVerbMenu WINELIB_NAME_AW(OleUIAddVerbMenu)
+UINT WINAPI  OleUIPasteSpecialA(LPOLEUIPASTESPECIALA lpOleUIPasteSpecial);
+UINT WINAPI  OleUIPasteSpecialW(LPOLEUIPASTESPECIALW lpOleUIPasteSpecial);
+#define      OleUIPasteSpecial WINELIB_NAME_AW(OleUIPasteSpecial)
+INT  __cdecl OleUIPromptUserA(INT,HWND, ...);
+INT  __cdecl OleUIPromptUserW(INT,HWND, ...);
+#define      OleUIPromptUser WINELIB_NAME_AW(OleUIPromptUser)
+
+#ifdef __cplusplus
+} /* Extern "C" */
+#endif
+
+
+#endif  /* __WINE_OLEDLG_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/oleidl.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/oleidl.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/oleidl.h	(revision 16410)
@@ -0,0 +1,3631 @@
+/*** Autogenerated by WIDL 1.1.10 from ../../../dlls/wined3d/../../include/oleidl.idl - Do not edit ***/
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef __WIDL_OLEIDL_H
+#define __WIDL_OLEIDL_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <objidl.h>
+#ifndef __IOleInPlaceActiveObject_FWD_DEFINED__
+#define __IOleInPlaceActiveObject_FWD_DEFINED__
+typedef interface IOleInPlaceActiveObject IOleInPlaceActiveObject;
+#endif
+
+typedef enum tagOLERENDER {
+    OLERENDER_NONE = 0,
+    OLERENDER_DRAW = 1,
+    OLERENDER_FORMAT = 2,
+    OLERENDER_ASIS = 3
+} OLERENDER;
+typedef enum tagOLERENDER *LPOLERENDER;
+typedef struct tagOBJECTDESCRIPTOR {
+    ULONG cbSize;
+    CLSID clsid;
+    DWORD dwDrawAspect;
+    SIZEL sizel;
+    POINTL pointl;
+    DWORD dwStatus;
+    DWORD dwFullUserTypeName;
+    DWORD dwSrcOfCopy;
+} OBJECTDESCRIPTOR;
+typedef struct tagOBJECTDESCRIPTOR *POBJECTDESCRIPTOR;
+typedef struct tagOBJECTDESCRIPTOR *LPOBJECTDESCRIPTOR;
+typedef struct tagOBJECTDESCRIPTOR LINKSRCDESCRIPTOR;
+typedef struct tagOBJECTDESCRIPTOR *PLINKSRCDESCRIPTOR;
+typedef struct tagOBJECTDESCRIPTOR *LPLINKSRCDESCRIPTOR;
+void * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free(void *);
+
+/*****************************************************************************
+ * IOLETypes interface (v0.0)
+ */
+#ifndef __IOLETypes_INTERFACE_DEFINED__
+#define __IOLETypes_INTERFACE_DEFINED__
+
+extern RPC_IF_HANDLE IOLETypes_v0_0_c_ifspec;
+extern RPC_IF_HANDLE IOLETypes_v0_0_s_ifspec;
+
+#endif  /* __IOLETypes_INTERFACE_DEFINED__ */
+
+#ifndef __IOleWindow_FWD_DEFINED__
+#define __IOleWindow_FWD_DEFINED__
+typedef interface IOleWindow IOleWindow;
+#endif
+
+typedef IOleWindow *LPOLEWINDOW;
+/*****************************************************************************
+ * IOleWindow interface
+ */
+#ifndef __IOleWindow_INTERFACE_DEFINED__
+#define __IOleWindow_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleWindow, 0x00000114, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IOleWindow : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetWindow(
+        HWND *phwnd) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(
+        BOOL fEnterMode) = 0;
+
+};
+#else
+typedef struct IOleWindowVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleWindow* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleWindow* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleWindow* This);
+
+    /*** IOleWindow methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetWindow)(
+        IOleWindow* This,
+        HWND *phwnd);
+
+    HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
+        IOleWindow* This,
+        BOOL fEnterMode);
+
+    END_INTERFACE
+} IOleWindowVtbl;
+interface IOleWindow {
+    CONST_VTBL IOleWindowVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IOleWindow_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IOleWindow_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IOleWindow_Release(This) (This)->lpVtbl->Release(This)
+/*** IOleWindow methods ***/
+#define IOleWindow_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)
+#define IOleWindow_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IOleWindow_GetWindow_Proxy(
+    IOleWindow* This,
+    HWND *phwnd);
+void __RPC_STUB IOleWindow_GetWindow_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleWindow_ContextSensitiveHelp_Proxy(
+    IOleWindow* This,
+    BOOL fEnterMode);
+void __RPC_STUB IOleWindow_ContextSensitiveHelp_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleWindow_INTERFACE_DEFINED__ */
+
+#ifndef __IOleInPlaceObject_FWD_DEFINED__
+#define __IOleInPlaceObject_FWD_DEFINED__
+typedef interface IOleInPlaceObject IOleInPlaceObject;
+#endif
+
+typedef IOleInPlaceObject *LPOLEINPLACEOBJECT;
+/*****************************************************************************
+ * IOleInPlaceObject interface
+ */
+#ifndef __IOleInPlaceObject_INTERFACE_DEFINED__
+#define __IOleInPlaceObject_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleInPlaceObject, 0x00000113, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IOleInPlaceObject : public IOleWindow
+{
+    virtual HRESULT STDMETHODCALLTYPE InPlaceDeactivate(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UIDeactivate(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetObjectRects(
+        LPCRECT lprcPosRect,
+        LPCRECT lprcClipRect) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ReactivateAndUndo(
+        ) = 0;
+
+};
+#else
+typedef struct IOleInPlaceObjectVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleInPlaceObject* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleInPlaceObject* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleInPlaceObject* This);
+
+    /*** IOleWindow methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetWindow)(
+        IOleInPlaceObject* This,
+        HWND *phwnd);
+
+    HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
+        IOleInPlaceObject* This,
+        BOOL fEnterMode);
+
+    /*** IOleInPlaceObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *InPlaceDeactivate)(
+        IOleInPlaceObject* This);
+
+    HRESULT (STDMETHODCALLTYPE *UIDeactivate)(
+        IOleInPlaceObject* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetObjectRects)(
+        IOleInPlaceObject* This,
+        LPCRECT lprcPosRect,
+        LPCRECT lprcClipRect);
+
+    HRESULT (STDMETHODCALLTYPE *ReactivateAndUndo)(
+        IOleInPlaceObject* This);
+
+    END_INTERFACE
+} IOleInPlaceObjectVtbl;
+interface IOleInPlaceObject {
+    CONST_VTBL IOleInPlaceObjectVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IOleInPlaceObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IOleInPlaceObject_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IOleInPlaceObject_Release(This) (This)->lpVtbl->Release(This)
+/*** IOleWindow methods ***/
+#define IOleInPlaceObject_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)
+#define IOleInPlaceObject_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)
+/*** IOleInPlaceObject methods ***/
+#define IOleInPlaceObject_InPlaceDeactivate(This) (This)->lpVtbl->InPlaceDeactivate(This)
+#define IOleInPlaceObject_UIDeactivate(This) (This)->lpVtbl->UIDeactivate(This)
+#define IOleInPlaceObject_SetObjectRects(This,lprcPosRect,lprcClipRect) (This)->lpVtbl->SetObjectRects(This,lprcPosRect,lprcClipRect)
+#define IOleInPlaceObject_ReactivateAndUndo(This) (This)->lpVtbl->ReactivateAndUndo(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceObject_InPlaceDeactivate_Proxy(
+    IOleInPlaceObject* This);
+void __RPC_STUB IOleInPlaceObject_InPlaceDeactivate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleInPlaceObject_UIDeactivate_Proxy(
+    IOleInPlaceObject* This);
+void __RPC_STUB IOleInPlaceObject_UIDeactivate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleInPlaceObject_SetObjectRects_Proxy(
+    IOleInPlaceObject* This,
+    LPCRECT lprcPosRect,
+    LPCRECT lprcClipRect);
+void __RPC_STUB IOleInPlaceObject_SetObjectRects_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleInPlaceObject_ReactivateAndUndo_Proxy(
+    IOleInPlaceObject* This);
+void __RPC_STUB IOleInPlaceObject_ReactivateAndUndo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleInPlaceObject_INTERFACE_DEFINED__ */
+
+#ifndef __IOleInPlaceUIWindow_FWD_DEFINED__
+#define __IOleInPlaceUIWindow_FWD_DEFINED__
+typedef interface IOleInPlaceUIWindow IOleInPlaceUIWindow;
+#endif
+
+typedef IOleInPlaceUIWindow *LPOLEINPLACEUIWINDOW;
+typedef RECT BORDERWIDTHS;
+typedef LPRECT LPBORDERWIDTHS;
+typedef LPCRECT LPCBORDERWIDTHS;
+/*****************************************************************************
+ * IOleInPlaceUIWindow interface
+ */
+#ifndef __IOleInPlaceUIWindow_INTERFACE_DEFINED__
+#define __IOleInPlaceUIWindow_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleInPlaceUIWindow, 0x00000115, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IOleInPlaceUIWindow : public IOleWindow
+{
+    virtual HRESULT STDMETHODCALLTYPE GetBorder(
+        LPRECT lprectBorder) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RequestBorderSpace(
+        LPCBORDERWIDTHS pborderwidths) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetBorderSpace(
+        LPCBORDERWIDTHS pborderwidths) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetActiveObject(
+        IOleInPlaceActiveObject *pActiveObject,
+        LPCOLESTR pszObjName) = 0;
+
+};
+#else
+typedef struct IOleInPlaceUIWindowVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleInPlaceUIWindow* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleInPlaceUIWindow* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleInPlaceUIWindow* This);
+
+    /*** IOleWindow methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetWindow)(
+        IOleInPlaceUIWindow* This,
+        HWND *phwnd);
+
+    HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
+        IOleInPlaceUIWindow* This,
+        BOOL fEnterMode);
+
+    /*** IOleInPlaceUIWindow methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetBorder)(
+        IOleInPlaceUIWindow* This,
+        LPRECT lprectBorder);
+
+    HRESULT (STDMETHODCALLTYPE *RequestBorderSpace)(
+        IOleInPlaceUIWindow* This,
+        LPCBORDERWIDTHS pborderwidths);
+
+    HRESULT (STDMETHODCALLTYPE *SetBorderSpace)(
+        IOleInPlaceUIWindow* This,
+        LPCBORDERWIDTHS pborderwidths);
+
+    HRESULT (STDMETHODCALLTYPE *SetActiveObject)(
+        IOleInPlaceUIWindow* This,
+        IOleInPlaceActiveObject *pActiveObject,
+        LPCOLESTR pszObjName);
+
+    END_INTERFACE
+} IOleInPlaceUIWindowVtbl;
+interface IOleInPlaceUIWindow {
+    CONST_VTBL IOleInPlaceUIWindowVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IOleInPlaceUIWindow_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IOleInPlaceUIWindow_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IOleInPlaceUIWindow_Release(This) (This)->lpVtbl->Release(This)
+/*** IOleWindow methods ***/
+#define IOleInPlaceUIWindow_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)
+#define IOleInPlaceUIWindow_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)
+/*** IOleInPlaceUIWindow methods ***/
+#define IOleInPlaceUIWindow_GetBorder(This,lprectBorder) (This)->lpVtbl->GetBorder(This,lprectBorder)
+#define IOleInPlaceUIWindow_RequestBorderSpace(This,pborderwidths) (This)->lpVtbl->RequestBorderSpace(This,pborderwidths)
+#define IOleInPlaceUIWindow_SetBorderSpace(This,pborderwidths) (This)->lpVtbl->SetBorderSpace(This,pborderwidths)
+#define IOleInPlaceUIWindow_SetActiveObject(This,pActiveObject,pszObjName) (This)->lpVtbl->SetActiveObject(This,pActiveObject,pszObjName)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceUIWindow_GetBorder_Proxy(
+    IOleInPlaceUIWindow* This,
+    LPRECT lprectBorder);
+void __RPC_STUB IOleInPlaceUIWindow_GetBorder_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleInPlaceUIWindow_RequestBorderSpace_Proxy(
+    IOleInPlaceUIWindow* This,
+    LPCBORDERWIDTHS pborderwidths);
+void __RPC_STUB IOleInPlaceUIWindow_RequestBorderSpace_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleInPlaceUIWindow_SetBorderSpace_Proxy(
+    IOleInPlaceUIWindow* This,
+    LPCBORDERWIDTHS pborderwidths);
+void __RPC_STUB IOleInPlaceUIWindow_SetBorderSpace_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleInPlaceUIWindow_SetActiveObject_Proxy(
+    IOleInPlaceUIWindow* This,
+    IOleInPlaceActiveObject *pActiveObject,
+    LPCOLESTR pszObjName);
+void __RPC_STUB IOleInPlaceUIWindow_SetActiveObject_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleInPlaceUIWindow_INTERFACE_DEFINED__ */
+
+#ifdef WINE_NO_UNICODE_MACROS
+#undef TranslateAccelerator
+#endif
+#ifndef __IOleInPlaceFrame_FWD_DEFINED__
+#define __IOleInPlaceFrame_FWD_DEFINED__
+typedef interface IOleInPlaceFrame IOleInPlaceFrame;
+#endif
+
+typedef IOleInPlaceFrame *LPOLEINPLACEFRAME;
+typedef struct tagOleInPlaceFrameInfo {
+    UINT cb;
+    BOOL fMDIApp;
+    HWND hwndFrame;
+    HACCEL haccel;
+    UINT cAccelEntries;
+} OLEINPLACEFRAMEINFO;
+typedef struct tagOleInPlaceFrameInfo *LPOLEINPLACEFRAMEINFO;
+typedef struct tagOleMenuGroupWidths {
+    LONG width[6];
+} OLEMENUGROUPWIDTHS;
+typedef struct tagOleMenuGroupWidths *LPOLEMENUGROUPWIDTHS;
+typedef HGLOBAL HOLEMENU;
+/*****************************************************************************
+ * IOleInPlaceFrame interface
+ */
+#ifndef __IOleInPlaceFrame_INTERFACE_DEFINED__
+#define __IOleInPlaceFrame_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleInPlaceFrame, 0x00000116, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IOleInPlaceFrame : public IOleInPlaceUIWindow
+{
+    virtual HRESULT STDMETHODCALLTYPE InsertMenus(
+        HMENU hmenuShared,
+        LPOLEMENUGROUPWIDTHS lpMenuWidths) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetMenu(
+        HMENU hmenuShared,
+        HOLEMENU holemenu,
+        HWND hwndActiveObject) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RemoveMenus(
+        HMENU hmenuShared) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetStatusText(
+        LPCOLESTR pszStatusText) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnableModeless(
+        BOOL fEnable) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(
+        LPMSG lpmsg,
+        WORD wID) = 0;
+
+};
+#else
+typedef struct IOleInPlaceFrameVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleInPlaceFrame* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleInPlaceFrame* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleInPlaceFrame* This);
+
+    /*** IOleWindow methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetWindow)(
+        IOleInPlaceFrame* This,
+        HWND *phwnd);
+
+    HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
+        IOleInPlaceFrame* This,
+        BOOL fEnterMode);
+
+    /*** IOleInPlaceUIWindow methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetBorder)(
+        IOleInPlaceFrame* This,
+        LPRECT lprectBorder);
+
+    HRESULT (STDMETHODCALLTYPE *RequestBorderSpace)(
+        IOleInPlaceFrame* This,
+        LPCBORDERWIDTHS pborderwidths);
+
+    HRESULT (STDMETHODCALLTYPE *SetBorderSpace)(
+        IOleInPlaceFrame* This,
+        LPCBORDERWIDTHS pborderwidths);
+
+    HRESULT (STDMETHODCALLTYPE *SetActiveObject)(
+        IOleInPlaceFrame* This,
+        IOleInPlaceActiveObject *pActiveObject,
+        LPCOLESTR pszObjName);
+
+    /*** IOleInPlaceFrame methods ***/
+    HRESULT (STDMETHODCALLTYPE *InsertMenus)(
+        IOleInPlaceFrame* This,
+        HMENU hmenuShared,
+        LPOLEMENUGROUPWIDTHS lpMenuWidths);
+
+    HRESULT (STDMETHODCALLTYPE *SetMenu)(
+        IOleInPlaceFrame* This,
+        HMENU hmenuShared,
+        HOLEMENU holemenu,
+        HWND hwndActiveObject);
+
+    HRESULT (STDMETHODCALLTYPE *RemoveMenus)(
+        IOleInPlaceFrame* This,
+        HMENU hmenuShared);
+
+    HRESULT (STDMETHODCALLTYPE *SetStatusText)(
+        IOleInPlaceFrame* This,
+        LPCOLESTR pszStatusText);
+
+    HRESULT (STDMETHODCALLTYPE *EnableModeless)(
+        IOleInPlaceFrame* This,
+        BOOL fEnable);
+
+    HRESULT (STDMETHODCALLTYPE *TranslateAccelerator)(
+        IOleInPlaceFrame* This,
+        LPMSG lpmsg,
+        WORD wID);
+
+    END_INTERFACE
+} IOleInPlaceFrameVtbl;
+interface IOleInPlaceFrame {
+    CONST_VTBL IOleInPlaceFrameVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IOleInPlaceFrame_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IOleInPlaceFrame_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IOleInPlaceFrame_Release(This) (This)->lpVtbl->Release(This)
+/*** IOleWindow methods ***/
+#define IOleInPlaceFrame_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)
+#define IOleInPlaceFrame_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)
+/*** IOleInPlaceUIWindow methods ***/
+#define IOleInPlaceFrame_GetBorder(This,lprectBorder) (This)->lpVtbl->GetBorder(This,lprectBorder)
+#define IOleInPlaceFrame_RequestBorderSpace(This,pborderwidths) (This)->lpVtbl->RequestBorderSpace(This,pborderwidths)
+#define IOleInPlaceFrame_SetBorderSpace(This,pborderwidths) (This)->lpVtbl->SetBorderSpace(This,pborderwidths)
+#define IOleInPlaceFrame_SetActiveObject(This,pActiveObject,pszObjName) (This)->lpVtbl->SetActiveObject(This,pActiveObject,pszObjName)
+/*** IOleInPlaceFrame methods ***/
+#define IOleInPlaceFrame_InsertMenus(This,hmenuShared,lpMenuWidths) (This)->lpVtbl->InsertMenus(This,hmenuShared,lpMenuWidths)
+#define IOleInPlaceFrame_SetMenu(This,hmenuShared,holemenu,hwndActiveObject) (This)->lpVtbl->SetMenu(This,hmenuShared,holemenu,hwndActiveObject)
+#define IOleInPlaceFrame_RemoveMenus(This,hmenuShared) (This)->lpVtbl->RemoveMenus(This,hmenuShared)
+#define IOleInPlaceFrame_SetStatusText(This,pszStatusText) (This)->lpVtbl->SetStatusText(This,pszStatusText)
+#define IOleInPlaceFrame_EnableModeless(This,fEnable) (This)->lpVtbl->EnableModeless(This,fEnable)
+#define IOleInPlaceFrame_TranslateAccelerator(This,lpmsg,wID) (This)->lpVtbl->TranslateAccelerator(This,lpmsg,wID)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceFrame_InsertMenus_Proxy(
+    IOleInPlaceFrame* This,
+    HMENU hmenuShared,
+    LPOLEMENUGROUPWIDTHS lpMenuWidths);
+void __RPC_STUB IOleInPlaceFrame_InsertMenus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleInPlaceFrame_SetMenu_Proxy(
+    IOleInPlaceFrame* This,
+    HMENU hmenuShared,
+    HOLEMENU holemenu,
+    HWND hwndActiveObject);
+void __RPC_STUB IOleInPlaceFrame_SetMenu_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleInPlaceFrame_RemoveMenus_Proxy(
+    IOleInPlaceFrame* This,
+    HMENU hmenuShared);
+void __RPC_STUB IOleInPlaceFrame_RemoveMenus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleInPlaceFrame_SetStatusText_Proxy(
+    IOleInPlaceFrame* This,
+    LPCOLESTR pszStatusText);
+void __RPC_STUB IOleInPlaceFrame_SetStatusText_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleInPlaceFrame_EnableModeless_Proxy(
+    IOleInPlaceFrame* This,
+    BOOL fEnable);
+void __RPC_STUB IOleInPlaceFrame_EnableModeless_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleInPlaceFrame_TranslateAccelerator_Proxy(
+    IOleInPlaceFrame* This,
+    LPMSG lpmsg,
+    WORD wID);
+void __RPC_STUB IOleInPlaceFrame_TranslateAccelerator_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleInPlaceFrame_INTERFACE_DEFINED__ */
+
+typedef IOleInPlaceActiveObject *LPOLEINPLACEACTIVEOBJECT;
+/*****************************************************************************
+ * IOleInPlaceActiveObject interface
+ */
+#ifndef __IOleInPlaceActiveObject_INTERFACE_DEFINED__
+#define __IOleInPlaceActiveObject_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleInPlaceActiveObject, 0x00000117, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IOleInPlaceActiveObject : public IOleWindow
+{
+    virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(
+        LPMSG lpmsg) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnFrameWindowActivate(
+        BOOL fActivate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnDocWindowActivate(
+        BOOL fActivate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ResizeBorder(
+        LPCRECT prcBorder,
+        IOleInPlaceUIWindow *pUIWindow,
+        BOOL fFrameWindow) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnableModeless(
+        BOOL fEnable) = 0;
+
+};
+#else
+typedef struct IOleInPlaceActiveObjectVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleInPlaceActiveObject* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleInPlaceActiveObject* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleInPlaceActiveObject* This);
+
+    /*** IOleWindow methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetWindow)(
+        IOleInPlaceActiveObject* This,
+        HWND *phwnd);
+
+    HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
+        IOleInPlaceActiveObject* This,
+        BOOL fEnterMode);
+
+    /*** IOleInPlaceActiveObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *TranslateAccelerator)(
+        IOleInPlaceActiveObject* This,
+        LPMSG lpmsg);
+
+    HRESULT (STDMETHODCALLTYPE *OnFrameWindowActivate)(
+        IOleInPlaceActiveObject* This,
+        BOOL fActivate);
+
+    HRESULT (STDMETHODCALLTYPE *OnDocWindowActivate)(
+        IOleInPlaceActiveObject* This,
+        BOOL fActivate);
+
+    HRESULT (STDMETHODCALLTYPE *ResizeBorder)(
+        IOleInPlaceActiveObject* This,
+        LPCRECT prcBorder,
+        IOleInPlaceUIWindow *pUIWindow,
+        BOOL fFrameWindow);
+
+    HRESULT (STDMETHODCALLTYPE *EnableModeless)(
+        IOleInPlaceActiveObject* This,
+        BOOL fEnable);
+
+    END_INTERFACE
+} IOleInPlaceActiveObjectVtbl;
+interface IOleInPlaceActiveObject {
+    CONST_VTBL IOleInPlaceActiveObjectVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IOleInPlaceActiveObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IOleInPlaceActiveObject_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IOleInPlaceActiveObject_Release(This) (This)->lpVtbl->Release(This)
+/*** IOleWindow methods ***/
+#define IOleInPlaceActiveObject_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)
+#define IOleInPlaceActiveObject_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)
+/*** IOleInPlaceActiveObject methods ***/
+#define IOleInPlaceActiveObject_TranslateAccelerator(This,lpmsg) (This)->lpVtbl->TranslateAccelerator(This,lpmsg)
+#define IOleInPlaceActiveObject_OnFrameWindowActivate(This,fActivate) (This)->lpVtbl->OnFrameWindowActivate(This,fActivate)
+#define IOleInPlaceActiveObject_OnDocWindowActivate(This,fActivate) (This)->lpVtbl->OnDocWindowActivate(This,fActivate)
+#define IOleInPlaceActiveObject_ResizeBorder(This,prcBorder,pUIWindow,fFrameWindow) (This)->lpVtbl->ResizeBorder(This,prcBorder,pUIWindow,fFrameWindow)
+#define IOleInPlaceActiveObject_EnableModeless(This,fEnable) (This)->lpVtbl->EnableModeless(This,fEnable)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceActiveObject_RemoteTranslateAccelerator_Proxy(
+    IOleInPlaceActiveObject* This);
+void __RPC_STUB IOleInPlaceActiveObject_RemoteTranslateAccelerator_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleInPlaceActiveObject_OnFrameWindowActivate_Proxy(
+    IOleInPlaceActiveObject* This,
+    BOOL fActivate);
+void __RPC_STUB IOleInPlaceActiveObject_OnFrameWindowActivate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleInPlaceActiveObject_OnDocWindowActivate_Proxy(
+    IOleInPlaceActiveObject* This,
+    BOOL fActivate);
+void __RPC_STUB IOleInPlaceActiveObject_OnDocWindowActivate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleInPlaceActiveObject_RemoteResizeBorder_Proxy(
+    IOleInPlaceActiveObject* This,
+    LPCRECT prcBorder,
+    REFIID riid,
+    IOleInPlaceUIWindow *pUIWindow,
+    BOOL fFrameWindow);
+void __RPC_STUB IOleInPlaceActiveObject_RemoteResizeBorder_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleInPlaceActiveObject_EnableModeless_Proxy(
+    IOleInPlaceActiveObject* This,
+    BOOL fEnable);
+void __RPC_STUB IOleInPlaceActiveObject_EnableModeless_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleInPlaceActiveObject_TranslateAccelerator_Proxy(
+    IOleInPlaceActiveObject* This,
+    LPMSG lpmsg);
+HRESULT __RPC_STUB IOleInPlaceActiveObject_TranslateAccelerator_Stub(
+    IOleInPlaceActiveObject* This);
+HRESULT CALLBACK IOleInPlaceActiveObject_ResizeBorder_Proxy(
+    IOleInPlaceActiveObject* This,
+    LPCRECT prcBorder,
+    IOleInPlaceUIWindow *pUIWindow,
+    BOOL fFrameWindow);
+HRESULT __RPC_STUB IOleInPlaceActiveObject_ResizeBorder_Stub(
+    IOleInPlaceActiveObject* This,
+    LPCRECT prcBorder,
+    REFIID riid,
+    IOleInPlaceUIWindow *pUIWindow,
+    BOOL fFrameWindow);
+
+#endif  /* __IOleInPlaceActiveObject_INTERFACE_DEFINED__ */
+
+#ifndef __IOleInPlaceSite_FWD_DEFINED__
+#define __IOleInPlaceSite_FWD_DEFINED__
+typedef interface IOleInPlaceSite IOleInPlaceSite;
+#endif
+
+typedef IOleInPlaceSite *LPOLEINPLACESITE;
+/*****************************************************************************
+ * IOleInPlaceSite interface
+ */
+#ifndef __IOleInPlaceSite_INTERFACE_DEFINED__
+#define __IOleInPlaceSite_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleInPlaceSite, 0x00000119, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IOleInPlaceSite : public IOleWindow
+{
+    virtual HRESULT STDMETHODCALLTYPE CanInPlaceActivate(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnInPlaceActivate(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnUIActivate(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetWindowContext(
+        IOleInPlaceFrame **ppFrame,
+        IOleInPlaceUIWindow **ppDoc,
+        LPRECT lprcPosRect,
+        LPRECT lprcClipRect,
+        LPOLEINPLACEFRAMEINFO lpFrameInfo) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Scroll(
+        SIZE scrollExtent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnUIDeactivate(
+        BOOL fUndoable) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnInPlaceDeactivate(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DiscardUndoState(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DeactivateAndUndo(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnPosRectChange(
+        LPCRECT lprcPosRect) = 0;
+
+};
+#else
+typedef struct IOleInPlaceSiteVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleInPlaceSite* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleInPlaceSite* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleInPlaceSite* This);
+
+    /*** IOleWindow methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetWindow)(
+        IOleInPlaceSite* This,
+        HWND *phwnd);
+
+    HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
+        IOleInPlaceSite* This,
+        BOOL fEnterMode);
+
+    /*** IOleInPlaceSite methods ***/
+    HRESULT (STDMETHODCALLTYPE *CanInPlaceActivate)(
+        IOleInPlaceSite* This);
+
+    HRESULT (STDMETHODCALLTYPE *OnInPlaceActivate)(
+        IOleInPlaceSite* This);
+
+    HRESULT (STDMETHODCALLTYPE *OnUIActivate)(
+        IOleInPlaceSite* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetWindowContext)(
+        IOleInPlaceSite* This,
+        IOleInPlaceFrame **ppFrame,
+        IOleInPlaceUIWindow **ppDoc,
+        LPRECT lprcPosRect,
+        LPRECT lprcClipRect,
+        LPOLEINPLACEFRAMEINFO lpFrameInfo);
+
+    HRESULT (STDMETHODCALLTYPE *Scroll)(
+        IOleInPlaceSite* This,
+        SIZE scrollExtent);
+
+    HRESULT (STDMETHODCALLTYPE *OnUIDeactivate)(
+        IOleInPlaceSite* This,
+        BOOL fUndoable);
+
+    HRESULT (STDMETHODCALLTYPE *OnInPlaceDeactivate)(
+        IOleInPlaceSite* This);
+
+    HRESULT (STDMETHODCALLTYPE *DiscardUndoState)(
+        IOleInPlaceSite* This);
+
+    HRESULT (STDMETHODCALLTYPE *DeactivateAndUndo)(
+        IOleInPlaceSite* This);
+
+    HRESULT (STDMETHODCALLTYPE *OnPosRectChange)(
+        IOleInPlaceSite* This,
+        LPCRECT lprcPosRect);
+
+    END_INTERFACE
+} IOleInPlaceSiteVtbl;
+interface IOleInPlaceSite {
+    CONST_VTBL IOleInPlaceSiteVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IOleInPlaceSite_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IOleInPlaceSite_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IOleInPlaceSite_Release(This) (This)->lpVtbl->Release(This)
+/*** IOleWindow methods ***/
+#define IOleInPlaceSite_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)
+#define IOleInPlaceSite_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)
+/*** IOleInPlaceSite methods ***/
+#define IOleInPlaceSite_CanInPlaceActivate(This) (This)->lpVtbl->CanInPlaceActivate(This)
+#define IOleInPlaceSite_OnInPlaceActivate(This) (This)->lpVtbl->OnInPlaceActivate(This)
+#define IOleInPlaceSite_OnUIActivate(This) (This)->lpVtbl->OnUIActivate(This)
+#define IOleInPlaceSite_GetWindowContext(This,ppFrame,ppDoc,lprcPosRect,lprcClipRect,lpFrameInfo) (This)->lpVtbl->GetWindowContext(This,ppFrame,ppDoc,lprcPosRect,lprcClipRect,lpFrameInfo)
+#define IOleInPlaceSite_Scroll(This,scrollExtent) (This)->lpVtbl->Scroll(This,scrollExtent)
+#define IOleInPlaceSite_OnUIDeactivate(This,fUndoable) (This)->lpVtbl->OnUIDeactivate(This,fUndoable)
+#define IOleInPlaceSite_OnInPlaceDeactivate(This) (This)->lpVtbl->OnInPlaceDeactivate(This)
+#define IOleInPlaceSite_DiscardUndoState(This) (This)->lpVtbl->DiscardUndoState(This)
+#define IOleInPlaceSite_DeactivateAndUndo(This) (This)->lpVtbl->DeactivateAndUndo(This)
+#define IOleInPlaceSite_OnPosRectChange(This,lprcPosRect) (This)->lpVtbl->OnPosRectChange(This,lprcPosRect)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_CanInPlaceActivate_Proxy(
+    IOleInPlaceSite* This);
+void __RPC_STUB IOleInPlaceSite_CanInPlaceActivate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_OnInPlaceActivate_Proxy(
+    IOleInPlaceSite* This);
+void __RPC_STUB IOleInPlaceSite_OnInPlaceActivate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_OnUIActivate_Proxy(
+    IOleInPlaceSite* This);
+void __RPC_STUB IOleInPlaceSite_OnUIActivate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_GetWindowContext_Proxy(
+    IOleInPlaceSite* This,
+    IOleInPlaceFrame **ppFrame,
+    IOleInPlaceUIWindow **ppDoc,
+    LPRECT lprcPosRect,
+    LPRECT lprcClipRect,
+    LPOLEINPLACEFRAMEINFO lpFrameInfo);
+void __RPC_STUB IOleInPlaceSite_GetWindowContext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_Scroll_Proxy(
+    IOleInPlaceSite* This,
+    SIZE scrollExtent);
+void __RPC_STUB IOleInPlaceSite_Scroll_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_OnUIDeactivate_Proxy(
+    IOleInPlaceSite* This,
+    BOOL fUndoable);
+void __RPC_STUB IOleInPlaceSite_OnUIDeactivate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_OnInPlaceDeactivate_Proxy(
+    IOleInPlaceSite* This);
+void __RPC_STUB IOleInPlaceSite_OnInPlaceDeactivate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_DiscardUndoState_Proxy(
+    IOleInPlaceSite* This);
+void __RPC_STUB IOleInPlaceSite_DiscardUndoState_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_DeactivateAndUndo_Proxy(
+    IOleInPlaceSite* This);
+void __RPC_STUB IOleInPlaceSite_DeactivateAndUndo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_OnPosRectChange_Proxy(
+    IOleInPlaceSite* This,
+    LPCRECT lprcPosRect);
+void __RPC_STUB IOleInPlaceSite_OnPosRectChange_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleInPlaceSite_INTERFACE_DEFINED__ */
+
+#ifndef __IParseDisplayName_FWD_DEFINED__
+#define __IParseDisplayName_FWD_DEFINED__
+typedef interface IParseDisplayName IParseDisplayName;
+#endif
+
+typedef IParseDisplayName *LPPARSEDISPLAYNAME;
+/*****************************************************************************
+ * IParseDisplayName interface
+ */
+#ifndef __IParseDisplayName_INTERFACE_DEFINED__
+#define __IParseDisplayName_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IParseDisplayName, 0x0000011a, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IParseDisplayName : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE ParseDisplayName(
+        IBindCtx *pbc,
+        LPOLESTR pszDisplayName,
+        ULONG *pchEaten,
+        IMoniker **ppmkOut) = 0;
+
+};
+#else
+typedef struct IParseDisplayNameVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IParseDisplayName* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IParseDisplayName* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IParseDisplayName* This);
+
+    /*** IParseDisplayName methods ***/
+    HRESULT (STDMETHODCALLTYPE *ParseDisplayName)(
+        IParseDisplayName* This,
+        IBindCtx *pbc,
+        LPOLESTR pszDisplayName,
+        ULONG *pchEaten,
+        IMoniker **ppmkOut);
+
+    END_INTERFACE
+} IParseDisplayNameVtbl;
+interface IParseDisplayName {
+    CONST_VTBL IParseDisplayNameVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IParseDisplayName_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IParseDisplayName_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IParseDisplayName_Release(This) (This)->lpVtbl->Release(This)
+/*** IParseDisplayName methods ***/
+#define IParseDisplayName_ParseDisplayName(This,pbc,pszDisplayName,pchEaten,ppmkOut) (This)->lpVtbl->ParseDisplayName(This,pbc,pszDisplayName,pchEaten,ppmkOut)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IParseDisplayName_ParseDisplayName_Proxy(
+    IParseDisplayName* This,
+    IBindCtx *pbc,
+    LPOLESTR pszDisplayName,
+    ULONG *pchEaten,
+    IMoniker **ppmkOut);
+void __RPC_STUB IParseDisplayName_ParseDisplayName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IParseDisplayName_INTERFACE_DEFINED__ */
+
+#ifndef __IOleContainer_FWD_DEFINED__
+#define __IOleContainer_FWD_DEFINED__
+typedef interface IOleContainer IOleContainer;
+#endif
+
+typedef IOleContainer *LPOLECONTAINER;
+/*****************************************************************************
+ * IOleContainer interface
+ */
+#ifndef __IOleContainer_INTERFACE_DEFINED__
+#define __IOleContainer_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleContainer, 0x0000011b, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IOleContainer : public IParseDisplayName
+{
+    virtual HRESULT STDMETHODCALLTYPE EnumObjects(
+        DWORD grfFlags,
+        IEnumUnknown **ppenum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE LockContainer(
+        BOOL fLock) = 0;
+
+};
+#else
+typedef struct IOleContainerVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleContainer* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleContainer* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleContainer* This);
+
+    /*** IParseDisplayName methods ***/
+    HRESULT (STDMETHODCALLTYPE *ParseDisplayName)(
+        IOleContainer* This,
+        IBindCtx *pbc,
+        LPOLESTR pszDisplayName,
+        ULONG *pchEaten,
+        IMoniker **ppmkOut);
+
+    /*** IOleContainer methods ***/
+    HRESULT (STDMETHODCALLTYPE *EnumObjects)(
+        IOleContainer* This,
+        DWORD grfFlags,
+        IEnumUnknown **ppenum);
+
+    HRESULT (STDMETHODCALLTYPE *LockContainer)(
+        IOleContainer* This,
+        BOOL fLock);
+
+    END_INTERFACE
+} IOleContainerVtbl;
+interface IOleContainer {
+    CONST_VTBL IOleContainerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IOleContainer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IOleContainer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IOleContainer_Release(This) (This)->lpVtbl->Release(This)
+/*** IParseDisplayName methods ***/
+#define IOleContainer_ParseDisplayName(This,pbc,pszDisplayName,pchEaten,ppmkOut) (This)->lpVtbl->ParseDisplayName(This,pbc,pszDisplayName,pchEaten,ppmkOut)
+/*** IOleContainer methods ***/
+#define IOleContainer_EnumObjects(This,grfFlags,ppenum) (This)->lpVtbl->EnumObjects(This,grfFlags,ppenum)
+#define IOleContainer_LockContainer(This,fLock) (This)->lpVtbl->LockContainer(This,fLock)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IOleContainer_EnumObjects_Proxy(
+    IOleContainer* This,
+    DWORD grfFlags,
+    IEnumUnknown **ppenum);
+void __RPC_STUB IOleContainer_EnumObjects_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleContainer_LockContainer_Proxy(
+    IOleContainer* This,
+    BOOL fLock);
+void __RPC_STUB IOleContainer_LockContainer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleContainer_INTERFACE_DEFINED__ */
+
+#ifndef __IOleItemContainer_FWD_DEFINED__
+#define __IOleItemContainer_FWD_DEFINED__
+typedef interface IOleItemContainer IOleItemContainer;
+#endif
+
+typedef IOleItemContainer *LPOLEITEMCONTAINER;
+typedef enum tagBINDSPEED {
+    BINDSPEED_INDEFINITE = 1,
+    BINDSPEED_MODERATE = 2,
+    BINDSPEED_IMMEDIATE = 3
+} BINDSPEED;
+typedef enum tagOLECONTF {
+    OLECONTF_EMBEDDINGS = 1,
+    OLECONTF_LINKS = 2,
+    OLECONTF_OTHERS = 4,
+    OLECONTF_ONLYUSER = 8,
+    OLECONTF_ONLYIFRUNNING = 16
+} OLECONTF;
+#ifdef WINE_NO_UNICODE_MACROS
+#undef GetObject
+#endif
+/*****************************************************************************
+ * IOleItemContainer interface
+ */
+#ifndef __IOleItemContainer_INTERFACE_DEFINED__
+#define __IOleItemContainer_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleItemContainer, 0x0000011c, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IOleItemContainer : public IOleContainer
+{
+    virtual HRESULT STDMETHODCALLTYPE GetObject(
+        LPOLESTR pszItem,
+        DWORD dwSpeedNeeded,
+        IBindCtx *pbc,
+        REFIID riid,
+        void **ppvObject) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetObjectStorage(
+        LPOLESTR pszItem,
+        IBindCtx *pbc,
+        REFIID riid,
+        void **ppvStorage) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsRunning(
+        LPOLESTR pszItem) = 0;
+
+};
+#else
+typedef struct IOleItemContainerVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleItemContainer* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleItemContainer* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleItemContainer* This);
+
+    /*** IParseDisplayName methods ***/
+    HRESULT (STDMETHODCALLTYPE *ParseDisplayName)(
+        IOleItemContainer* This,
+        IBindCtx *pbc,
+        LPOLESTR pszDisplayName,
+        ULONG *pchEaten,
+        IMoniker **ppmkOut);
+
+    /*** IOleContainer methods ***/
+    HRESULT (STDMETHODCALLTYPE *EnumObjects)(
+        IOleItemContainer* This,
+        DWORD grfFlags,
+        IEnumUnknown **ppenum);
+
+    HRESULT (STDMETHODCALLTYPE *LockContainer)(
+        IOleItemContainer* This,
+        BOOL fLock);
+
+    /*** IOleItemContainer methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetObject)(
+        IOleItemContainer* This,
+        LPOLESTR pszItem,
+        DWORD dwSpeedNeeded,
+        IBindCtx *pbc,
+        REFIID riid,
+        void **ppvObject);
+
+    HRESULT (STDMETHODCALLTYPE *GetObjectStorage)(
+        IOleItemContainer* This,
+        LPOLESTR pszItem,
+        IBindCtx *pbc,
+        REFIID riid,
+        void **ppvStorage);
+
+    HRESULT (STDMETHODCALLTYPE *IsRunning)(
+        IOleItemContainer* This,
+        LPOLESTR pszItem);
+
+    END_INTERFACE
+} IOleItemContainerVtbl;
+interface IOleItemContainer {
+    CONST_VTBL IOleItemContainerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IOleItemContainer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IOleItemContainer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IOleItemContainer_Release(This) (This)->lpVtbl->Release(This)
+/*** IParseDisplayName methods ***/
+#define IOleItemContainer_ParseDisplayName(This,pbc,pszDisplayName,pchEaten,ppmkOut) (This)->lpVtbl->ParseDisplayName(This,pbc,pszDisplayName,pchEaten,ppmkOut)
+/*** IOleContainer methods ***/
+#define IOleItemContainer_EnumObjects(This,grfFlags,ppenum) (This)->lpVtbl->EnumObjects(This,grfFlags,ppenum)
+#define IOleItemContainer_LockContainer(This,fLock) (This)->lpVtbl->LockContainer(This,fLock)
+/*** IOleItemContainer methods ***/
+#define IOleItemContainer_GetObject(This,pszItem,dwSpeedNeeded,pbc,riid,ppvObject) (This)->lpVtbl->GetObject(This,pszItem,dwSpeedNeeded,pbc,riid,ppvObject)
+#define IOleItemContainer_GetObjectStorage(This,pszItem,pbc,riid,ppvStorage) (This)->lpVtbl->GetObjectStorage(This,pszItem,pbc,riid,ppvStorage)
+#define IOleItemContainer_IsRunning(This,pszItem) (This)->lpVtbl->IsRunning(This,pszItem)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IOleItemContainer_GetObject_Proxy(
+    IOleItemContainer* This,
+    LPOLESTR pszItem,
+    DWORD dwSpeedNeeded,
+    IBindCtx *pbc,
+    REFIID riid,
+    void **ppvObject);
+void __RPC_STUB IOleItemContainer_GetObject_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleItemContainer_GetObjectStorage_Proxy(
+    IOleItemContainer* This,
+    LPOLESTR pszItem,
+    IBindCtx *pbc,
+    REFIID riid,
+    void **ppvStorage);
+void __RPC_STUB IOleItemContainer_GetObjectStorage_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleItemContainer_IsRunning_Proxy(
+    IOleItemContainer* This,
+    LPOLESTR pszItem);
+void __RPC_STUB IOleItemContainer_IsRunning_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleItemContainer_INTERFACE_DEFINED__ */
+
+#ifndef __IOleLink_FWD_DEFINED__
+#define __IOleLink_FWD_DEFINED__
+typedef interface IOleLink IOleLink;
+#endif
+
+typedef IOleLink *LPOLELINK;
+typedef enum tagOLEUPDATE {
+    OLEUPDATE_ALWAYS = 1,
+    OLEUPDATE_ONCALL = 3
+} OLEUPDATE;
+typedef enum tagOLEUPDATE *POLEUPDATE;
+typedef enum tagOLEUPDATE *LPOLEUPDATE;
+typedef enum tagOLELINKBIND {
+    OLELINKBIND_EVENIFCLASSDIFF = 1
+} OLELINKBIND;
+/*****************************************************************************
+ * IOleLink interface
+ */
+#ifndef __IOleLink_INTERFACE_DEFINED__
+#define __IOleLink_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleLink, 0x0000011d, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IOleLink : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SetUpdateOptions(
+        DWORD dwUpdateOpt) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetUpdateOptions(
+        DWORD *pdwUpdateOpt) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetSourceMoniker(
+        IMoniker *pmk,
+        REFCLSID rclsid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSourceMoniker(
+        IMoniker **ppmk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetSourceDisplayName(
+        LPCOLESTR pszStatusText) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSourceDisplayName(
+        LPOLESTR *ppszDisplayName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE BindToSource(
+        DWORD bindflags,
+        IBindCtx *pbc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE BindIfRunning(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetBoundSource(
+        IUnknown **ppunk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnbindSource(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Update(
+        IBindCtx *pbc) = 0;
+
+};
+#else
+typedef struct IOleLinkVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleLink* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleLink* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleLink* This);
+
+    /*** IOleLink methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetUpdateOptions)(
+        IOleLink* This,
+        DWORD dwUpdateOpt);
+
+    HRESULT (STDMETHODCALLTYPE *GetUpdateOptions)(
+        IOleLink* This,
+        DWORD *pdwUpdateOpt);
+
+    HRESULT (STDMETHODCALLTYPE *SetSourceMoniker)(
+        IOleLink* This,
+        IMoniker *pmk,
+        REFCLSID rclsid);
+
+    HRESULT (STDMETHODCALLTYPE *GetSourceMoniker)(
+        IOleLink* This,
+        IMoniker **ppmk);
+
+    HRESULT (STDMETHODCALLTYPE *SetSourceDisplayName)(
+        IOleLink* This,
+        LPCOLESTR pszStatusText);
+
+    HRESULT (STDMETHODCALLTYPE *GetSourceDisplayName)(
+        IOleLink* This,
+        LPOLESTR *ppszDisplayName);
+
+    HRESULT (STDMETHODCALLTYPE *BindToSource)(
+        IOleLink* This,
+        DWORD bindflags,
+        IBindCtx *pbc);
+
+    HRESULT (STDMETHODCALLTYPE *BindIfRunning)(
+        IOleLink* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetBoundSource)(
+        IOleLink* This,
+        IUnknown **ppunk);
+
+    HRESULT (STDMETHODCALLTYPE *UnbindSource)(
+        IOleLink* This);
+
+    HRESULT (STDMETHODCALLTYPE *Update)(
+        IOleLink* This,
+        IBindCtx *pbc);
+
+    END_INTERFACE
+} IOleLinkVtbl;
+interface IOleLink {
+    CONST_VTBL IOleLinkVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IOleLink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IOleLink_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IOleLink_Release(This) (This)->lpVtbl->Release(This)
+/*** IOleLink methods ***/
+#define IOleLink_SetUpdateOptions(This,dwUpdateOpt) (This)->lpVtbl->SetUpdateOptions(This,dwUpdateOpt)
+#define IOleLink_GetUpdateOptions(This,pdwUpdateOpt) (This)->lpVtbl->GetUpdateOptions(This,pdwUpdateOpt)
+#define IOleLink_SetSourceMoniker(This,pmk,rclsid) (This)->lpVtbl->SetSourceMoniker(This,pmk,rclsid)
+#define IOleLink_GetSourceMoniker(This,ppmk) (This)->lpVtbl->GetSourceMoniker(This,ppmk)
+#define IOleLink_SetSourceDisplayName(This,pszStatusText) (This)->lpVtbl->SetSourceDisplayName(This,pszStatusText)
+#define IOleLink_GetSourceDisplayName(This,ppszDisplayName) (This)->lpVtbl->GetSourceDisplayName(This,ppszDisplayName)
+#define IOleLink_BindToSource(This,bindflags,pbc) (This)->lpVtbl->BindToSource(This,bindflags,pbc)
+#define IOleLink_BindIfRunning(This) (This)->lpVtbl->BindIfRunning(This)
+#define IOleLink_GetBoundSource(This,ppunk) (This)->lpVtbl->GetBoundSource(This,ppunk)
+#define IOleLink_UnbindSource(This) (This)->lpVtbl->UnbindSource(This)
+#define IOleLink_Update(This,pbc) (This)->lpVtbl->Update(This,pbc)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IOleLink_SetUpdateOptions_Proxy(
+    IOleLink* This,
+    DWORD dwUpdateOpt);
+void __RPC_STUB IOleLink_SetUpdateOptions_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleLink_GetUpdateOptions_Proxy(
+    IOleLink* This,
+    DWORD *pdwUpdateOpt);
+void __RPC_STUB IOleLink_GetUpdateOptions_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleLink_SetSourceMoniker_Proxy(
+    IOleLink* This,
+    IMoniker *pmk,
+    REFCLSID rclsid);
+void __RPC_STUB IOleLink_SetSourceMoniker_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleLink_GetSourceMoniker_Proxy(
+    IOleLink* This,
+    IMoniker **ppmk);
+void __RPC_STUB IOleLink_GetSourceMoniker_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleLink_SetSourceDisplayName_Proxy(
+    IOleLink* This,
+    LPCOLESTR pszStatusText);
+void __RPC_STUB IOleLink_SetSourceDisplayName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleLink_GetSourceDisplayName_Proxy(
+    IOleLink* This,
+    LPOLESTR *ppszDisplayName);
+void __RPC_STUB IOleLink_GetSourceDisplayName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleLink_BindToSource_Proxy(
+    IOleLink* This,
+    DWORD bindflags,
+    IBindCtx *pbc);
+void __RPC_STUB IOleLink_BindToSource_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleLink_BindIfRunning_Proxy(
+    IOleLink* This);
+void __RPC_STUB IOleLink_BindIfRunning_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleLink_GetBoundSource_Proxy(
+    IOleLink* This,
+    IUnknown **ppunk);
+void __RPC_STUB IOleLink_GetBoundSource_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleLink_UnbindSource_Proxy(
+    IOleLink* This);
+void __RPC_STUB IOleLink_UnbindSource_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleLink_Update_Proxy(
+    IOleLink* This,
+    IBindCtx *pbc);
+void __RPC_STUB IOleLink_Update_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleLink_INTERFACE_DEFINED__ */
+
+#ifndef __IOleClientSite_FWD_DEFINED__
+#define __IOleClientSite_FWD_DEFINED__
+typedef interface IOleClientSite IOleClientSite;
+#endif
+
+typedef IOleClientSite *LPOLECLIENTSITE;
+/*****************************************************************************
+ * IOleClientSite interface
+ */
+#ifndef __IOleClientSite_INTERFACE_DEFINED__
+#define __IOleClientSite_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleClientSite, 0x00000118, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IOleClientSite : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SaveObject(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetMoniker(
+        DWORD dwAssign,
+        DWORD dwWhichMoniker,
+        IMoniker **ppmk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetContainer(
+        IOleContainer **ppContainer) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ShowObject(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnShowWindow(
+        BOOL fShow) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RequestNewObjectLayout(
+        ) = 0;
+
+};
+#else
+typedef struct IOleClientSiteVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleClientSite* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleClientSite* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleClientSite* This);
+
+    /*** IOleClientSite methods ***/
+    HRESULT (STDMETHODCALLTYPE *SaveObject)(
+        IOleClientSite* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetMoniker)(
+        IOleClientSite* This,
+        DWORD dwAssign,
+        DWORD dwWhichMoniker,
+        IMoniker **ppmk);
+
+    HRESULT (STDMETHODCALLTYPE *GetContainer)(
+        IOleClientSite* This,
+        IOleContainer **ppContainer);
+
+    HRESULT (STDMETHODCALLTYPE *ShowObject)(
+        IOleClientSite* This);
+
+    HRESULT (STDMETHODCALLTYPE *OnShowWindow)(
+        IOleClientSite* This,
+        BOOL fShow);
+
+    HRESULT (STDMETHODCALLTYPE *RequestNewObjectLayout)(
+        IOleClientSite* This);
+
+    END_INTERFACE
+} IOleClientSiteVtbl;
+interface IOleClientSite {
+    CONST_VTBL IOleClientSiteVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IOleClientSite_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IOleClientSite_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IOleClientSite_Release(This) (This)->lpVtbl->Release(This)
+/*** IOleClientSite methods ***/
+#define IOleClientSite_SaveObject(This) (This)->lpVtbl->SaveObject(This)
+#define IOleClientSite_GetMoniker(This,dwAssign,dwWhichMoniker,ppmk) (This)->lpVtbl->GetMoniker(This,dwAssign,dwWhichMoniker,ppmk)
+#define IOleClientSite_GetContainer(This,ppContainer) (This)->lpVtbl->GetContainer(This,ppContainer)
+#define IOleClientSite_ShowObject(This) (This)->lpVtbl->ShowObject(This)
+#define IOleClientSite_OnShowWindow(This,fShow) (This)->lpVtbl->OnShowWindow(This,fShow)
+#define IOleClientSite_RequestNewObjectLayout(This) (This)->lpVtbl->RequestNewObjectLayout(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IOleClientSite_SaveObject_Proxy(
+    IOleClientSite* This);
+void __RPC_STUB IOleClientSite_SaveObject_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleClientSite_GetMoniker_Proxy(
+    IOleClientSite* This,
+    DWORD dwAssign,
+    DWORD dwWhichMoniker,
+    IMoniker **ppmk);
+void __RPC_STUB IOleClientSite_GetMoniker_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleClientSite_GetContainer_Proxy(
+    IOleClientSite* This,
+    IOleContainer **ppContainer);
+void __RPC_STUB IOleClientSite_GetContainer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleClientSite_ShowObject_Proxy(
+    IOleClientSite* This);
+void __RPC_STUB IOleClientSite_ShowObject_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleClientSite_OnShowWindow_Proxy(
+    IOleClientSite* This,
+    BOOL fShow);
+void __RPC_STUB IOleClientSite_OnShowWindow_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleClientSite_RequestNewObjectLayout_Proxy(
+    IOleClientSite* This);
+void __RPC_STUB IOleClientSite_RequestNewObjectLayout_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleClientSite_INTERFACE_DEFINED__ */
+
+#ifndef __IOleCache_FWD_DEFINED__
+#define __IOleCache_FWD_DEFINED__
+typedef interface IOleCache IOleCache;
+#endif
+
+typedef IOleCache *LPOLECACHE;
+/*****************************************************************************
+ * IOleCache interface
+ */
+#ifndef __IOleCache_INTERFACE_DEFINED__
+#define __IOleCache_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleCache, 0x0000011e, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IOleCache : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Cache(
+        FORMATETC *pformatetc,
+        DWORD advf,
+        DWORD *pdwConnection) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Uncache(
+        DWORD dwConnection) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumCache(
+        IEnumSTATDATA **ppenumSTATDATA) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE InitCache(
+        IDataObject *pDataObject) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetData(
+        FORMATETC *pformatetc,
+        STGMEDIUM *pmedium,
+        BOOL fRelease) = 0;
+
+};
+#else
+typedef struct IOleCacheVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleCache* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleCache* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleCache* This);
+
+    /*** IOleCache methods ***/
+    HRESULT (STDMETHODCALLTYPE *Cache)(
+        IOleCache* This,
+        FORMATETC *pformatetc,
+        DWORD advf,
+        DWORD *pdwConnection);
+
+    HRESULT (STDMETHODCALLTYPE *Uncache)(
+        IOleCache* This,
+        DWORD dwConnection);
+
+    HRESULT (STDMETHODCALLTYPE *EnumCache)(
+        IOleCache* This,
+        IEnumSTATDATA **ppenumSTATDATA);
+
+    HRESULT (STDMETHODCALLTYPE *InitCache)(
+        IOleCache* This,
+        IDataObject *pDataObject);
+
+    HRESULT (STDMETHODCALLTYPE *SetData)(
+        IOleCache* This,
+        FORMATETC *pformatetc,
+        STGMEDIUM *pmedium,
+        BOOL fRelease);
+
+    END_INTERFACE
+} IOleCacheVtbl;
+interface IOleCache {
+    CONST_VTBL IOleCacheVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IOleCache_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IOleCache_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IOleCache_Release(This) (This)->lpVtbl->Release(This)
+/*** IOleCache methods ***/
+#define IOleCache_Cache(This,pformatetc,advf,pdwConnection) (This)->lpVtbl->Cache(This,pformatetc,advf,pdwConnection)
+#define IOleCache_Uncache(This,dwConnection) (This)->lpVtbl->Uncache(This,dwConnection)
+#define IOleCache_EnumCache(This,ppenumSTATDATA) (This)->lpVtbl->EnumCache(This,ppenumSTATDATA)
+#define IOleCache_InitCache(This,pDataObject) (This)->lpVtbl->InitCache(This,pDataObject)
+#define IOleCache_SetData(This,pformatetc,pmedium,fRelease) (This)->lpVtbl->SetData(This,pformatetc,pmedium,fRelease)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IOleCache_Cache_Proxy(
+    IOleCache* This,
+    FORMATETC *pformatetc,
+    DWORD advf,
+    DWORD *pdwConnection);
+void __RPC_STUB IOleCache_Cache_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleCache_Uncache_Proxy(
+    IOleCache* This,
+    DWORD dwConnection);
+void __RPC_STUB IOleCache_Uncache_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleCache_EnumCache_Proxy(
+    IOleCache* This,
+    IEnumSTATDATA **ppenumSTATDATA);
+void __RPC_STUB IOleCache_EnumCache_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleCache_InitCache_Proxy(
+    IOleCache* This,
+    IDataObject *pDataObject);
+void __RPC_STUB IOleCache_InitCache_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleCache_SetData_Proxy(
+    IOleCache* This,
+    FORMATETC *pformatetc,
+    STGMEDIUM *pmedium,
+    BOOL fRelease);
+void __RPC_STUB IOleCache_SetData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleCache_INTERFACE_DEFINED__ */
+
+#ifndef __IOleCache2_FWD_DEFINED__
+#define __IOleCache2_FWD_DEFINED__
+typedef interface IOleCache2 IOleCache2;
+#endif
+
+typedef IOleCache2 *LPOLECACHE2;
+#define UPDFCACHE_NODATACACHE (0x1)
+
+#define UPDFCACHE_ONSAVECACHE (0x2)
+
+#define UPDFCACHE_ONSTOPCACHE (0x4)
+
+#define UPDFCACHE_NORMALCACHE (0x8)
+
+#define UPDFCACHE_IFBLANK (0x10)
+
+#define UPDFCACHE_ONLYIFBLANK (0x80000000)
+
+#define UPDFCACHE_IFBLANKORONSAVECACHE (UPDFCACHE_IFBLANK | UPDFCACHE_ONSAVECACHE)
+
+#define UPDFCACHE_ALL ((DWORD)~UPDFCACHE_ONLYIFBLANK)
+
+#define UPDFCACHE_ALLBUTNODATACACHE (UPDFCACHE_ALL & (DWORD)~UPDFCACHE_NODATACACHE)
+
+typedef enum tagDISCARDCACHE {
+    DISCARDCACHE_SAVEIFDIRTY = 0,
+    DISCARDCACHE_NOSAVE = 1
+} DISCARDCACHE;
+/*****************************************************************************
+ * IOleCache2 interface
+ */
+#ifndef __IOleCache2_INTERFACE_DEFINED__
+#define __IOleCache2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleCache2, 0x00000128, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IOleCache2 : public IOleCache
+{
+    virtual HRESULT STDMETHODCALLTYPE UpdateCache(
+        LPDATAOBJECT pDataObject,
+        DWORD grfUpdf,
+        LPVOID pReserved) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DiscardCache(
+        DWORD dwDiscardOptions) = 0;
+
+};
+#else
+typedef struct IOleCache2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleCache2* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleCache2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleCache2* This);
+
+    /*** IOleCache methods ***/
+    HRESULT (STDMETHODCALLTYPE *Cache)(
+        IOleCache2* This,
+        FORMATETC *pformatetc,
+        DWORD advf,
+        DWORD *pdwConnection);
+
+    HRESULT (STDMETHODCALLTYPE *Uncache)(
+        IOleCache2* This,
+        DWORD dwConnection);
+
+    HRESULT (STDMETHODCALLTYPE *EnumCache)(
+        IOleCache2* This,
+        IEnumSTATDATA **ppenumSTATDATA);
+
+    HRESULT (STDMETHODCALLTYPE *InitCache)(
+        IOleCache2* This,
+        IDataObject *pDataObject);
+
+    HRESULT (STDMETHODCALLTYPE *SetData)(
+        IOleCache2* This,
+        FORMATETC *pformatetc,
+        STGMEDIUM *pmedium,
+        BOOL fRelease);
+
+    /*** IOleCache2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *UpdateCache)(
+        IOleCache2* This,
+        LPDATAOBJECT pDataObject,
+        DWORD grfUpdf,
+        LPVOID pReserved);
+
+    HRESULT (STDMETHODCALLTYPE *DiscardCache)(
+        IOleCache2* This,
+        DWORD dwDiscardOptions);
+
+    END_INTERFACE
+} IOleCache2Vtbl;
+interface IOleCache2 {
+    CONST_VTBL IOleCache2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IOleCache2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IOleCache2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IOleCache2_Release(This) (This)->lpVtbl->Release(This)
+/*** IOleCache methods ***/
+#define IOleCache2_Cache(This,pformatetc,advf,pdwConnection) (This)->lpVtbl->Cache(This,pformatetc,advf,pdwConnection)
+#define IOleCache2_Uncache(This,dwConnection) (This)->lpVtbl->Uncache(This,dwConnection)
+#define IOleCache2_EnumCache(This,ppenumSTATDATA) (This)->lpVtbl->EnumCache(This,ppenumSTATDATA)
+#define IOleCache2_InitCache(This,pDataObject) (This)->lpVtbl->InitCache(This,pDataObject)
+#define IOleCache2_SetData(This,pformatetc,pmedium,fRelease) (This)->lpVtbl->SetData(This,pformatetc,pmedium,fRelease)
+/*** IOleCache2 methods ***/
+#define IOleCache2_UpdateCache(This,pDataObject,grfUpdf,pReserved) (This)->lpVtbl->UpdateCache(This,pDataObject,grfUpdf,pReserved)
+#define IOleCache2_DiscardCache(This,dwDiscardOptions) (This)->lpVtbl->DiscardCache(This,dwDiscardOptions)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IOleCache2_RemoteUpdateCache_Proxy(
+    IOleCache2* This,
+    LPDATAOBJECT pDataObject,
+    DWORD grfUpdf,
+    LONG_PTR pReserved);
+void __RPC_STUB IOleCache2_RemoteUpdateCache_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleCache2_DiscardCache_Proxy(
+    IOleCache2* This,
+    DWORD dwDiscardOptions);
+void __RPC_STUB IOleCache2_DiscardCache_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleCache2_UpdateCache_Proxy(
+    IOleCache2* This,
+    LPDATAOBJECT pDataObject,
+    DWORD grfUpdf,
+    LPVOID pReserved);
+HRESULT __RPC_STUB IOleCache2_UpdateCache_Stub(
+    IOleCache2* This,
+    LPDATAOBJECT pDataObject,
+    DWORD grfUpdf,
+    LONG_PTR pReserved);
+
+#endif  /* __IOleCache2_INTERFACE_DEFINED__ */
+
+#ifndef __IOleCacheControl_FWD_DEFINED__
+#define __IOleCacheControl_FWD_DEFINED__
+typedef interface IOleCacheControl IOleCacheControl;
+#endif
+
+typedef IOleCacheControl *LPOLECACHECONTROL;
+/*****************************************************************************
+ * IOleCacheControl interface
+ */
+#ifndef __IOleCacheControl_INTERFACE_DEFINED__
+#define __IOleCacheControl_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleCacheControl, 0x00000129, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IOleCacheControl : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE OnRun(
+        LPDATAOBJECT pDataObject) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnStop(
+        ) = 0;
+
+};
+#else
+typedef struct IOleCacheControlVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleCacheControl* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleCacheControl* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleCacheControl* This);
+
+    /*** IOleCacheControl methods ***/
+    HRESULT (STDMETHODCALLTYPE *OnRun)(
+        IOleCacheControl* This,
+        LPDATAOBJECT pDataObject);
+
+    HRESULT (STDMETHODCALLTYPE *OnStop)(
+        IOleCacheControl* This);
+
+    END_INTERFACE
+} IOleCacheControlVtbl;
+interface IOleCacheControl {
+    CONST_VTBL IOleCacheControlVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IOleCacheControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IOleCacheControl_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IOleCacheControl_Release(This) (This)->lpVtbl->Release(This)
+/*** IOleCacheControl methods ***/
+#define IOleCacheControl_OnRun(This,pDataObject) (This)->lpVtbl->OnRun(This,pDataObject)
+#define IOleCacheControl_OnStop(This) (This)->lpVtbl->OnStop(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IOleCacheControl_OnRun_Proxy(
+    IOleCacheControl* This,
+    LPDATAOBJECT pDataObject);
+void __RPC_STUB IOleCacheControl_OnRun_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleCacheControl_OnStop_Proxy(
+    IOleCacheControl* This);
+void __RPC_STUB IOleCacheControl_OnStop_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleCacheControl_INTERFACE_DEFINED__ */
+
+#ifndef __IEnumOLEVERB_FWD_DEFINED__
+#define __IEnumOLEVERB_FWD_DEFINED__
+typedef interface IEnumOLEVERB IEnumOLEVERB;
+#endif
+
+typedef IEnumOLEVERB *LPENUMOLEVERB;
+typedef struct tagOLEVERB {
+    LONG lVerb;
+    LPOLESTR lpszVerbName;
+    DWORD fuFlags;
+    DWORD grfAttribs;
+} OLEVERB;
+typedef struct tagOLEVERB *LPOLEVERB;
+typedef enum tagOLEVERBATTRIB {
+    OLEVERBATTRIB_NEVERDIRTIES = 1,
+    OLEVERBATTRIB_ONCONTAINERMENU = 2
+} OLEVERBATTRIB;
+/*****************************************************************************
+ * IEnumOLEVERB interface
+ */
+#ifndef __IEnumOLEVERB_INTERFACE_DEFINED__
+#define __IEnumOLEVERB_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IEnumOLEVERB, 0x00000104, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IEnumOLEVERB : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Next(
+        ULONG celt,
+        LPOLEVERB rgelt,
+        ULONG *pceltFetched) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Skip(
+        ULONG celt) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IEnumOLEVERB **ppenum) = 0;
+
+};
+#else
+typedef struct IEnumOLEVERBVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IEnumOLEVERB* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IEnumOLEVERB* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IEnumOLEVERB* This);
+
+    /*** IEnumOLEVERB methods ***/
+    HRESULT (STDMETHODCALLTYPE *Next)(
+        IEnumOLEVERB* This,
+        ULONG celt,
+        LPOLEVERB rgelt,
+        ULONG *pceltFetched);
+
+    HRESULT (STDMETHODCALLTYPE *Skip)(
+        IEnumOLEVERB* This,
+        ULONG celt);
+
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        IEnumOLEVERB* This);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IEnumOLEVERB* This,
+        IEnumOLEVERB **ppenum);
+
+    END_INTERFACE
+} IEnumOLEVERBVtbl;
+interface IEnumOLEVERB {
+    CONST_VTBL IEnumOLEVERBVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IEnumOLEVERB_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumOLEVERB_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumOLEVERB_Release(This) (This)->lpVtbl->Release(This)
+/*** IEnumOLEVERB methods ***/
+#define IEnumOLEVERB_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
+#define IEnumOLEVERB_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumOLEVERB_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumOLEVERB_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IEnumOLEVERB_RemoteNext_Proxy(
+    IEnumOLEVERB* This,
+    ULONG celt,
+    LPOLEVERB rgelt,
+    ULONG *pceltFetched);
+void __RPC_STUB IEnumOLEVERB_RemoteNext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumOLEVERB_Skip_Proxy(
+    IEnumOLEVERB* This,
+    ULONG celt);
+void __RPC_STUB IEnumOLEVERB_Skip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumOLEVERB_Reset_Proxy(
+    IEnumOLEVERB* This);
+void __RPC_STUB IEnumOLEVERB_Reset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumOLEVERB_Clone_Proxy(
+    IEnumOLEVERB* This,
+    IEnumOLEVERB **ppenum);
+void __RPC_STUB IEnumOLEVERB_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IEnumOLEVERB_Next_Proxy(
+    IEnumOLEVERB* This,
+    ULONG celt,
+    LPOLEVERB rgelt,
+    ULONG *pceltFetched);
+HRESULT __RPC_STUB IEnumOLEVERB_Next_Stub(
+    IEnumOLEVERB* This,
+    ULONG celt,
+    LPOLEVERB rgelt,
+    ULONG *pceltFetched);
+
+#endif  /* __IEnumOLEVERB_INTERFACE_DEFINED__ */
+
+#ifndef __IOleObject_FWD_DEFINED__
+#define __IOleObject_FWD_DEFINED__
+typedef interface IOleObject IOleObject;
+#endif
+
+typedef IOleObject *LPOLEOBJECT;
+typedef enum tagOLEGETMONIKER {
+    OLEGETMONIKER_ONLYIFTHERE = 1,
+    OLEGETMONIKER_FORCEASSIGN = 2,
+    OLEGETMONIKER_UNASSIGN = 3,
+    OLEGETMONIKER_TEMPFORUSER = 4
+} OLEGETMONIKER;
+typedef enum tagOLEWHICHMK {
+    OLEWHICHMK_CONTAINER = 1,
+    OLEWHICHMK_OBJREL = 2,
+    OLEWHICHMK_OBJFULL = 3
+} OLEWHICHMK;
+typedef enum tagUSERCLASSTYPE {
+    USERCLASSTYPE_FULL = 1,
+    USERCLASSTYPE_SHORT = 2,
+    USERCLASSTYPE_APPNAME = 3
+} USERCLASSTYPE;
+typedef enum tagOLEMISC {
+    OLEMISC_RECOMPOSEONRESIZE = 0x1,
+    OLEMISC_ONLYICONIC = 0x2,
+    OLEMISC_INSERTNOTREPLACE = 0x4,
+    OLEMISC_STATIC = 0x8,
+    OLEMISC_CANTLINKINSIDE = 0x10,
+    OLEMISC_CANLINKBYOLE1 = 0x20,
+    OLEMISC_ISLINKOBJECT = 0x40,
+    OLEMISC_INSIDEOUT = 0x80,
+    OLEMISC_ACTIVATEWHENVISIBLE = 0x100,
+    OLEMISC_RENDERINGISDEVICEINDEPENDENT = 0x200,
+    OLEMISC_INVISIBLEATRUNTIME = 0x400,
+    OLEMISC_ALWAYSRUN = 0x800,
+    OLEMISC_ACTSLIKEBUTTON = 0x1000,
+    OLEMISC_ACTSLIKELABEL = 0x2000,
+    OLEMISC_NOUIACTIVATE = 0x4000,
+    OLEMISC_ALIGNABLE = 0x8000,
+    OLEMISC_SIMPLEFRAME = 0x10000,
+    OLEMISC_SETCLIENTSITEFIRST = 0x20000,
+    OLEMISC_IMEMODE = 0x40000,
+    OLEMISC_IGNOREACTIVATEWHENVISIBLE = 0x80000,
+    OLEMISC_WANTSTOMENUMERGE = 0x100000,
+    OLEMISC_SUPPORTSMULTILEVELUNDO = 0x200000
+} OLEMISC;
+typedef enum tagOLECLOSE {
+    OLECLOSE_SAVEIFDIRTY = 0,
+    OLECLOSE_NOSAVE = 1,
+    OLECLOSE_PROMPTSAVE = 2
+} OLECLOSE;
+/*****************************************************************************
+ * IOleObject interface
+ */
+#ifndef __IOleObject_INTERFACE_DEFINED__
+#define __IOleObject_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleObject, 0x00000112, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IOleObject : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SetClientSite(
+        IOleClientSite *pClientSite) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetClientSite(
+        IOleClientSite **ppClientSite) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetHostNames(
+        LPCOLESTR szContainerApp,
+        LPCOLESTR szContainerObj) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Close(
+        DWORD dwSaveOption) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetMoniker(
+        DWORD dwWhichMoniker,
+        IMoniker *pmk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetMoniker(
+        DWORD dwAssign,
+        DWORD dwWhichMoniker,
+        IMoniker **ppmk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE InitFromData(
+        IDataObject *pDataObject,
+        BOOL fCreation,
+        DWORD dwReserved) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetClipboardData(
+        DWORD dwReserved,
+        IDataObject **ppDataObject) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DoVerb(
+        LONG iVerb,
+        LPMSG lpmsg,
+        IOleClientSite *pActiveSite,
+        LONG lindex,
+        HWND hwndParent,
+        LPCRECT lprcPosRect) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumVerbs(
+        IEnumOLEVERB **ppEnumOleVerb) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Update(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsUpToDate(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetUserClassID(
+        CLSID *pClsid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetUserType(
+        DWORD dwFormOfType,
+        LPOLESTR *pszUserType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetExtent(
+        DWORD dwDrawAspect,
+        SIZEL *psizel) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetExtent(
+        DWORD dwDrawAspect,
+        SIZEL *psizel) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Advise(
+        IAdviseSink *pAdvSink,
+        DWORD *pdwConnection) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Unadvise(
+        DWORD dwConnection) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumAdvise(
+        IEnumSTATDATA **ppenumAdvise) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetMiscStatus(
+        DWORD dwAspect,
+        DWORD *pdwStatus) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetColorScheme(
+        LOGPALETTE *pLogpal) = 0;
+
+};
+#else
+typedef struct IOleObjectVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleObject* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleObject* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleObject* This);
+
+    /*** IOleObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetClientSite)(
+        IOleObject* This,
+        IOleClientSite *pClientSite);
+
+    HRESULT (STDMETHODCALLTYPE *GetClientSite)(
+        IOleObject* This,
+        IOleClientSite **ppClientSite);
+
+    HRESULT (STDMETHODCALLTYPE *SetHostNames)(
+        IOleObject* This,
+        LPCOLESTR szContainerApp,
+        LPCOLESTR szContainerObj);
+
+    HRESULT (STDMETHODCALLTYPE *Close)(
+        IOleObject* This,
+        DWORD dwSaveOption);
+
+    HRESULT (STDMETHODCALLTYPE *SetMoniker)(
+        IOleObject* This,
+        DWORD dwWhichMoniker,
+        IMoniker *pmk);
+
+    HRESULT (STDMETHODCALLTYPE *GetMoniker)(
+        IOleObject* This,
+        DWORD dwAssign,
+        DWORD dwWhichMoniker,
+        IMoniker **ppmk);
+
+    HRESULT (STDMETHODCALLTYPE *InitFromData)(
+        IOleObject* This,
+        IDataObject *pDataObject,
+        BOOL fCreation,
+        DWORD dwReserved);
+
+    HRESULT (STDMETHODCALLTYPE *GetClipboardData)(
+        IOleObject* This,
+        DWORD dwReserved,
+        IDataObject **ppDataObject);
+
+    HRESULT (STDMETHODCALLTYPE *DoVerb)(
+        IOleObject* This,
+        LONG iVerb,
+        LPMSG lpmsg,
+        IOleClientSite *pActiveSite,
+        LONG lindex,
+        HWND hwndParent,
+        LPCRECT lprcPosRect);
+
+    HRESULT (STDMETHODCALLTYPE *EnumVerbs)(
+        IOleObject* This,
+        IEnumOLEVERB **ppEnumOleVerb);
+
+    HRESULT (STDMETHODCALLTYPE *Update)(
+        IOleObject* This);
+
+    HRESULT (STDMETHODCALLTYPE *IsUpToDate)(
+        IOleObject* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetUserClassID)(
+        IOleObject* This,
+        CLSID *pClsid);
+
+    HRESULT (STDMETHODCALLTYPE *GetUserType)(
+        IOleObject* This,
+        DWORD dwFormOfType,
+        LPOLESTR *pszUserType);
+
+    HRESULT (STDMETHODCALLTYPE *SetExtent)(
+        IOleObject* This,
+        DWORD dwDrawAspect,
+        SIZEL *psizel);
+
+    HRESULT (STDMETHODCALLTYPE *GetExtent)(
+        IOleObject* This,
+        DWORD dwDrawAspect,
+        SIZEL *psizel);
+
+    HRESULT (STDMETHODCALLTYPE *Advise)(
+        IOleObject* This,
+        IAdviseSink *pAdvSink,
+        DWORD *pdwConnection);
+
+    HRESULT (STDMETHODCALLTYPE *Unadvise)(
+        IOleObject* This,
+        DWORD dwConnection);
+
+    HRESULT (STDMETHODCALLTYPE *EnumAdvise)(
+        IOleObject* This,
+        IEnumSTATDATA **ppenumAdvise);
+
+    HRESULT (STDMETHODCALLTYPE *GetMiscStatus)(
+        IOleObject* This,
+        DWORD dwAspect,
+        DWORD *pdwStatus);
+
+    HRESULT (STDMETHODCALLTYPE *SetColorScheme)(
+        IOleObject* This,
+        LOGPALETTE *pLogpal);
+
+    END_INTERFACE
+} IOleObjectVtbl;
+interface IOleObject {
+    CONST_VTBL IOleObjectVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IOleObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IOleObject_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IOleObject_Release(This) (This)->lpVtbl->Release(This)
+/*** IOleObject methods ***/
+#define IOleObject_SetClientSite(This,pClientSite) (This)->lpVtbl->SetClientSite(This,pClientSite)
+#define IOleObject_GetClientSite(This,ppClientSite) (This)->lpVtbl->GetClientSite(This,ppClientSite)
+#define IOleObject_SetHostNames(This,szContainerApp,szContainerObj) (This)->lpVtbl->SetHostNames(This,szContainerApp,szContainerObj)
+#define IOleObject_Close(This,dwSaveOption) (This)->lpVtbl->Close(This,dwSaveOption)
+#define IOleObject_SetMoniker(This,dwWhichMoniker,pmk) (This)->lpVtbl->SetMoniker(This,dwWhichMoniker,pmk)
+#define IOleObject_GetMoniker(This,dwAssign,dwWhichMoniker,ppmk) (This)->lpVtbl->GetMoniker(This,dwAssign,dwWhichMoniker,ppmk)
+#define IOleObject_InitFromData(This,pDataObject,fCreation,dwReserved) (This)->lpVtbl->InitFromData(This,pDataObject,fCreation,dwReserved)
+#define IOleObject_GetClipboardData(This,dwReserved,ppDataObject) (This)->lpVtbl->GetClipboardData(This,dwReserved,ppDataObject)
+#define IOleObject_DoVerb(This,iVerb,lpmsg,pActiveSite,lindex,hwndParent,lprcPosRect) (This)->lpVtbl->DoVerb(This,iVerb,lpmsg,pActiveSite,lindex,hwndParent,lprcPosRect)
+#define IOleObject_EnumVerbs(This,ppEnumOleVerb) (This)->lpVtbl->EnumVerbs(This,ppEnumOleVerb)
+#define IOleObject_Update(This) (This)->lpVtbl->Update(This)
+#define IOleObject_IsUpToDate(This) (This)->lpVtbl->IsUpToDate(This)
+#define IOleObject_GetUserClassID(This,pClsid) (This)->lpVtbl->GetUserClassID(This,pClsid)
+#define IOleObject_GetUserType(This,dwFormOfType,pszUserType) (This)->lpVtbl->GetUserType(This,dwFormOfType,pszUserType)
+#define IOleObject_SetExtent(This,dwDrawAspect,psizel) (This)->lpVtbl->SetExtent(This,dwDrawAspect,psizel)
+#define IOleObject_GetExtent(This,dwDrawAspect,psizel) (This)->lpVtbl->GetExtent(This,dwDrawAspect,psizel)
+#define IOleObject_Advise(This,pAdvSink,pdwConnection) (This)->lpVtbl->Advise(This,pAdvSink,pdwConnection)
+#define IOleObject_Unadvise(This,dwConnection) (This)->lpVtbl->Unadvise(This,dwConnection)
+#define IOleObject_EnumAdvise(This,ppenumAdvise) (This)->lpVtbl->EnumAdvise(This,ppenumAdvise)
+#define IOleObject_GetMiscStatus(This,dwAspect,pdwStatus) (This)->lpVtbl->GetMiscStatus(This,dwAspect,pdwStatus)
+#define IOleObject_SetColorScheme(This,pLogpal) (This)->lpVtbl->SetColorScheme(This,pLogpal)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IOleObject_SetClientSite_Proxy(
+    IOleObject* This,
+    IOleClientSite *pClientSite);
+void __RPC_STUB IOleObject_SetClientSite_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleObject_GetClientSite_Proxy(
+    IOleObject* This,
+    IOleClientSite **ppClientSite);
+void __RPC_STUB IOleObject_GetClientSite_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleObject_SetHostNames_Proxy(
+    IOleObject* This,
+    LPCOLESTR szContainerApp,
+    LPCOLESTR szContainerObj);
+void __RPC_STUB IOleObject_SetHostNames_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleObject_Close_Proxy(
+    IOleObject* This,
+    DWORD dwSaveOption);
+void __RPC_STUB IOleObject_Close_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleObject_SetMoniker_Proxy(
+    IOleObject* This,
+    DWORD dwWhichMoniker,
+    IMoniker *pmk);
+void __RPC_STUB IOleObject_SetMoniker_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleObject_GetMoniker_Proxy(
+    IOleObject* This,
+    DWORD dwAssign,
+    DWORD dwWhichMoniker,
+    IMoniker **ppmk);
+void __RPC_STUB IOleObject_GetMoniker_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleObject_InitFromData_Proxy(
+    IOleObject* This,
+    IDataObject *pDataObject,
+    BOOL fCreation,
+    DWORD dwReserved);
+void __RPC_STUB IOleObject_InitFromData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleObject_GetClipboardData_Proxy(
+    IOleObject* This,
+    DWORD dwReserved,
+    IDataObject **ppDataObject);
+void __RPC_STUB IOleObject_GetClipboardData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleObject_DoVerb_Proxy(
+    IOleObject* This,
+    LONG iVerb,
+    LPMSG lpmsg,
+    IOleClientSite *pActiveSite,
+    LONG lindex,
+    HWND hwndParent,
+    LPCRECT lprcPosRect);
+void __RPC_STUB IOleObject_DoVerb_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleObject_EnumVerbs_Proxy(
+    IOleObject* This,
+    IEnumOLEVERB **ppEnumOleVerb);
+void __RPC_STUB IOleObject_EnumVerbs_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleObject_Update_Proxy(
+    IOleObject* This);
+void __RPC_STUB IOleObject_Update_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleObject_IsUpToDate_Proxy(
+    IOleObject* This);
+void __RPC_STUB IOleObject_IsUpToDate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleObject_GetUserClassID_Proxy(
+    IOleObject* This,
+    CLSID *pClsid);
+void __RPC_STUB IOleObject_GetUserClassID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleObject_GetUserType_Proxy(
+    IOleObject* This,
+    DWORD dwFormOfType,
+    LPOLESTR *pszUserType);
+void __RPC_STUB IOleObject_GetUserType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleObject_SetExtent_Proxy(
+    IOleObject* This,
+    DWORD dwDrawAspect,
+    SIZEL *psizel);
+void __RPC_STUB IOleObject_SetExtent_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleObject_GetExtent_Proxy(
+    IOleObject* This,
+    DWORD dwDrawAspect,
+    SIZEL *psizel);
+void __RPC_STUB IOleObject_GetExtent_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleObject_Advise_Proxy(
+    IOleObject* This,
+    IAdviseSink *pAdvSink,
+    DWORD *pdwConnection);
+void __RPC_STUB IOleObject_Advise_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleObject_Unadvise_Proxy(
+    IOleObject* This,
+    DWORD dwConnection);
+void __RPC_STUB IOleObject_Unadvise_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleObject_EnumAdvise_Proxy(
+    IOleObject* This,
+    IEnumSTATDATA **ppenumAdvise);
+void __RPC_STUB IOleObject_EnumAdvise_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleObject_GetMiscStatus_Proxy(
+    IOleObject* This,
+    DWORD dwAspect,
+    DWORD *pdwStatus);
+void __RPC_STUB IOleObject_GetMiscStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleObject_SetColorScheme_Proxy(
+    IOleObject* This,
+    LOGPALETTE *pLogpal);
+void __RPC_STUB IOleObject_SetColorScheme_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleObject_INTERFACE_DEFINED__ */
+
+#ifndef __IOleAdviseHolder_FWD_DEFINED__
+#define __IOleAdviseHolder_FWD_DEFINED__
+typedef interface IOleAdviseHolder IOleAdviseHolder;
+#endif
+
+typedef IOleAdviseHolder *LPOLEADVISEHOLDER;
+/*****************************************************************************
+ * IOleAdviseHolder interface
+ */
+#ifndef __IOleAdviseHolder_INTERFACE_DEFINED__
+#define __IOleAdviseHolder_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleAdviseHolder, 0x00000111, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IOleAdviseHolder : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Advise(
+        IAdviseSink *pAdvise,
+        DWORD *pdwConnection) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Unadvise(
+        DWORD dwConnection) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumAdvise(
+        IEnumSTATDATA **ppenumAdvise) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SendOnRename(
+        IMoniker *pmk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SendOnSave(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SendOnClose(
+        ) = 0;
+
+};
+#else
+typedef struct IOleAdviseHolderVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleAdviseHolder* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleAdviseHolder* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleAdviseHolder* This);
+
+    /*** IOleAdviseHolder methods ***/
+    HRESULT (STDMETHODCALLTYPE *Advise)(
+        IOleAdviseHolder* This,
+        IAdviseSink *pAdvise,
+        DWORD *pdwConnection);
+
+    HRESULT (STDMETHODCALLTYPE *Unadvise)(
+        IOleAdviseHolder* This,
+        DWORD dwConnection);
+
+    HRESULT (STDMETHODCALLTYPE *EnumAdvise)(
+        IOleAdviseHolder* This,
+        IEnumSTATDATA **ppenumAdvise);
+
+    HRESULT (STDMETHODCALLTYPE *SendOnRename)(
+        IOleAdviseHolder* This,
+        IMoniker *pmk);
+
+    HRESULT (STDMETHODCALLTYPE *SendOnSave)(
+        IOleAdviseHolder* This);
+
+    HRESULT (STDMETHODCALLTYPE *SendOnClose)(
+        IOleAdviseHolder* This);
+
+    END_INTERFACE
+} IOleAdviseHolderVtbl;
+interface IOleAdviseHolder {
+    CONST_VTBL IOleAdviseHolderVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IOleAdviseHolder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IOleAdviseHolder_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IOleAdviseHolder_Release(This) (This)->lpVtbl->Release(This)
+/*** IOleAdviseHolder methods ***/
+#define IOleAdviseHolder_Advise(This,pAdvise,pdwConnection) (This)->lpVtbl->Advise(This,pAdvise,pdwConnection)
+#define IOleAdviseHolder_Unadvise(This,dwConnection) (This)->lpVtbl->Unadvise(This,dwConnection)
+#define IOleAdviseHolder_EnumAdvise(This,ppenumAdvise) (This)->lpVtbl->EnumAdvise(This,ppenumAdvise)
+#define IOleAdviseHolder_SendOnRename(This,pmk) (This)->lpVtbl->SendOnRename(This,pmk)
+#define IOleAdviseHolder_SendOnSave(This) (This)->lpVtbl->SendOnSave(This)
+#define IOleAdviseHolder_SendOnClose(This) (This)->lpVtbl->SendOnClose(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IOleAdviseHolder_Advise_Proxy(
+    IOleAdviseHolder* This,
+    IAdviseSink *pAdvise,
+    DWORD *pdwConnection);
+void __RPC_STUB IOleAdviseHolder_Advise_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleAdviseHolder_Unadvise_Proxy(
+    IOleAdviseHolder* This,
+    DWORD dwConnection);
+void __RPC_STUB IOleAdviseHolder_Unadvise_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleAdviseHolder_EnumAdvise_Proxy(
+    IOleAdviseHolder* This,
+    IEnumSTATDATA **ppenumAdvise);
+void __RPC_STUB IOleAdviseHolder_EnumAdvise_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleAdviseHolder_SendOnRename_Proxy(
+    IOleAdviseHolder* This,
+    IMoniker *pmk);
+void __RPC_STUB IOleAdviseHolder_SendOnRename_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleAdviseHolder_SendOnSave_Proxy(
+    IOleAdviseHolder* This);
+void __RPC_STUB IOleAdviseHolder_SendOnSave_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IOleAdviseHolder_SendOnClose_Proxy(
+    IOleAdviseHolder* This);
+void __RPC_STUB IOleAdviseHolder_SendOnClose_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleAdviseHolder_INTERFACE_DEFINED__ */
+
+#ifndef __IContinue_FWD_DEFINED__
+#define __IContinue_FWD_DEFINED__
+typedef interface IContinue IContinue;
+#endif
+
+/*****************************************************************************
+ * IContinue interface
+ */
+#ifndef __IContinue_INTERFACE_DEFINED__
+#define __IContinue_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IContinue, 0x0000012a, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IContinue : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE FContinue(
+        ) = 0;
+
+};
+#else
+typedef struct IContinueVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IContinue* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IContinue* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IContinue* This);
+
+    /*** IContinue methods ***/
+    HRESULT (STDMETHODCALLTYPE *FContinue)(
+        IContinue* This);
+
+    END_INTERFACE
+} IContinueVtbl;
+interface IContinue {
+    CONST_VTBL IContinueVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IContinue_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IContinue_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IContinue_Release(This) (This)->lpVtbl->Release(This)
+/*** IContinue methods ***/
+#define IContinue_FContinue(This) (This)->lpVtbl->FContinue(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IContinue_FContinue_Proxy(
+    IContinue* This);
+void __RPC_STUB IContinue_FContinue_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IContinue_INTERFACE_DEFINED__ */
+
+#ifndef __IViewObject_FWD_DEFINED__
+#define __IViewObject_FWD_DEFINED__
+typedef interface IViewObject IViewObject;
+#endif
+
+typedef IViewObject *LPVIEWOBJECT;
+/*****************************************************************************
+ * IViewObject interface
+ */
+#ifndef __IViewObject_INTERFACE_DEFINED__
+#define __IViewObject_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IViewObject, 0x0000010d, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IViewObject : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Draw(
+        DWORD dwDrawAspect,
+        LONG lindex,
+        void *pvAspect,
+        DVTARGETDEVICE *ptd,
+        HDC hdcTargetDev,
+        HDC hdcDraw,
+        LPCRECTL lprcBounds,
+        LPCRECTL lprcWBounds,
+        BOOL (STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR dwContinue),
+        ULONG_PTR dwContinue) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetColorSet(
+        DWORD dwDrawAspect,
+        LONG lindex,
+        void *pvAspect,
+        DVTARGETDEVICE *ptd,
+        HDC hicTargetDev,
+        LOGPALETTE **ppColorSet) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Freeze(
+        DWORD dwDrawAspect,
+        LONG lindex,
+        void *pvAspect,
+        DWORD *pdwFreeze) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Unfreeze(
+        DWORD dwFreeze) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetAdvise(
+        DWORD aspects,
+        DWORD advf,
+        IAdviseSink *pAdvSink) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetAdvise(
+        DWORD *pAspects,
+        DWORD *pAdvf,
+        IAdviseSink **ppAdvSink) = 0;
+
+};
+#else
+typedef struct IViewObjectVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IViewObject* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IViewObject* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IViewObject* This);
+
+    /*** IViewObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *Draw)(
+        IViewObject* This,
+        DWORD dwDrawAspect,
+        LONG lindex,
+        void *pvAspect,
+        DVTARGETDEVICE *ptd,
+        HDC hdcTargetDev,
+        HDC hdcDraw,
+        LPCRECTL lprcBounds,
+        LPCRECTL lprcWBounds,
+        BOOL (STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR dwContinue),
+        ULONG_PTR dwContinue);
+
+    HRESULT (STDMETHODCALLTYPE *GetColorSet)(
+        IViewObject* This,
+        DWORD dwDrawAspect,
+        LONG lindex,
+        void *pvAspect,
+        DVTARGETDEVICE *ptd,
+        HDC hicTargetDev,
+        LOGPALETTE **ppColorSet);
+
+    HRESULT (STDMETHODCALLTYPE *Freeze)(
+        IViewObject* This,
+        DWORD dwDrawAspect,
+        LONG lindex,
+        void *pvAspect,
+        DWORD *pdwFreeze);
+
+    HRESULT (STDMETHODCALLTYPE *Unfreeze)(
+        IViewObject* This,
+        DWORD dwFreeze);
+
+    HRESULT (STDMETHODCALLTYPE *SetAdvise)(
+        IViewObject* This,
+        DWORD aspects,
+        DWORD advf,
+        IAdviseSink *pAdvSink);
+
+    HRESULT (STDMETHODCALLTYPE *GetAdvise)(
+        IViewObject* This,
+        DWORD *pAspects,
+        DWORD *pAdvf,
+        IAdviseSink **ppAdvSink);
+
+    END_INTERFACE
+} IViewObjectVtbl;
+interface IViewObject {
+    CONST_VTBL IViewObjectVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IViewObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IViewObject_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IViewObject_Release(This) (This)->lpVtbl->Release(This)
+/*** IViewObject methods ***/
+#define IViewObject_Draw(This,dwDrawAspect,lindex,pvAspect,ptd,hdcTargetDev,hdcDraw,lprcBounds,lprcWBounds,pfnContinue,dwContinue) (This)->lpVtbl->Draw(This,dwDrawAspect,lindex,pvAspect,ptd,hdcTargetDev,hdcDraw,lprcBounds,lprcWBounds,pfnContinue,dwContinue)
+#define IViewObject_GetColorSet(This,dwDrawAspect,lindex,pvAspect,ptd,hicTargetDev,ppColorSet) (This)->lpVtbl->GetColorSet(This,dwDrawAspect,lindex,pvAspect,ptd,hicTargetDev,ppColorSet)
+#define IViewObject_Freeze(This,dwDrawAspect,lindex,pvAspect,pdwFreeze) (This)->lpVtbl->Freeze(This,dwDrawAspect,lindex,pvAspect,pdwFreeze)
+#define IViewObject_Unfreeze(This,dwFreeze) (This)->lpVtbl->Unfreeze(This,dwFreeze)
+#define IViewObject_SetAdvise(This,aspects,advf,pAdvSink) (This)->lpVtbl->SetAdvise(This,aspects,advf,pAdvSink)
+#define IViewObject_GetAdvise(This,pAspects,pAdvf,ppAdvSink) (This)->lpVtbl->GetAdvise(This,pAspects,pAdvf,ppAdvSink)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IViewObject_RemoteDraw_Proxy(
+    IViewObject* This,
+    DWORD dwDrawAspect,
+    LONG lindex,
+    ULONG_PTR pvAspect,
+    DVTARGETDEVICE *ptd,
+    ULONG_PTR hdcTargetDev,
+    ULONG_PTR hdcDraw,
+    LPCRECTL lprcBounds,
+    LPCRECTL lprcWBounds,
+    IContinue *pContinue);
+void __RPC_STUB IViewObject_RemoteDraw_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IViewObject_RemoteGetColorSet_Proxy(
+    IViewObject* This,
+    DWORD dwDrawAspect,
+    LONG lindex,
+    ULONG_PTR pvAspect,
+    DVTARGETDEVICE *ptd,
+    ULONG_PTR hicTargetDev,
+    LOGPALETTE **ppColorSet);
+void __RPC_STUB IViewObject_RemoteGetColorSet_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IViewObject_RemoteFreeze_Proxy(
+    IViewObject* This,
+    DWORD dwDrawAspect,
+    LONG lindex,
+    ULONG_PTR pvAspect,
+    DWORD *pdwFreeze);
+void __RPC_STUB IViewObject_RemoteFreeze_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IViewObject_Unfreeze_Proxy(
+    IViewObject* This,
+    DWORD dwFreeze);
+void __RPC_STUB IViewObject_Unfreeze_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IViewObject_SetAdvise_Proxy(
+    IViewObject* This,
+    DWORD aspects,
+    DWORD advf,
+    IAdviseSink *pAdvSink);
+void __RPC_STUB IViewObject_SetAdvise_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IViewObject_RemoteGetAdvise_Proxy(
+    IViewObject* This,
+    DWORD *pAspects,
+    DWORD *pAdvf,
+    IAdviseSink **ppAdvSink);
+void __RPC_STUB IViewObject_RemoteGetAdvise_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IViewObject_Draw_Proxy(
+    IViewObject* This,
+    DWORD dwDrawAspect,
+    LONG lindex,
+    void *pvAspect,
+    DVTARGETDEVICE *ptd,
+    HDC hdcTargetDev,
+    HDC hdcDraw,
+    LPCRECTL lprcBounds,
+    LPCRECTL lprcWBounds,
+    BOOL (STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR dwContinue),
+    ULONG_PTR dwContinue);
+HRESULT __RPC_STUB IViewObject_Draw_Stub(
+    IViewObject* This,
+    DWORD dwDrawAspect,
+    LONG lindex,
+    ULONG_PTR pvAspect,
+    DVTARGETDEVICE *ptd,
+    ULONG_PTR hdcTargetDev,
+    ULONG_PTR hdcDraw,
+    LPCRECTL lprcBounds,
+    LPCRECTL lprcWBounds,
+    IContinue *pContinue);
+HRESULT CALLBACK IViewObject_GetColorSet_Proxy(
+    IViewObject* This,
+    DWORD dwDrawAspect,
+    LONG lindex,
+    void *pvAspect,
+    DVTARGETDEVICE *ptd,
+    HDC hicTargetDev,
+    LOGPALETTE **ppColorSet);
+HRESULT __RPC_STUB IViewObject_GetColorSet_Stub(
+    IViewObject* This,
+    DWORD dwDrawAspect,
+    LONG lindex,
+    ULONG_PTR pvAspect,
+    DVTARGETDEVICE *ptd,
+    ULONG_PTR hicTargetDev,
+    LOGPALETTE **ppColorSet);
+HRESULT CALLBACK IViewObject_Freeze_Proxy(
+    IViewObject* This,
+    DWORD dwDrawAspect,
+    LONG lindex,
+    void *pvAspect,
+    DWORD *pdwFreeze);
+HRESULT __RPC_STUB IViewObject_Freeze_Stub(
+    IViewObject* This,
+    DWORD dwDrawAspect,
+    LONG lindex,
+    ULONG_PTR pvAspect,
+    DWORD *pdwFreeze);
+HRESULT CALLBACK IViewObject_GetAdvise_Proxy(
+    IViewObject* This,
+    DWORD *pAspects,
+    DWORD *pAdvf,
+    IAdviseSink **ppAdvSink);
+HRESULT __RPC_STUB IViewObject_GetAdvise_Stub(
+    IViewObject* This,
+    DWORD *pAspects,
+    DWORD *pAdvf,
+    IAdviseSink **ppAdvSink);
+
+#endif  /* __IViewObject_INTERFACE_DEFINED__ */
+
+#ifndef __IViewObject2_FWD_DEFINED__
+#define __IViewObject2_FWD_DEFINED__
+typedef interface IViewObject2 IViewObject2;
+#endif
+
+typedef IViewObject2 *LPVIEWOBJECT2;
+/*****************************************************************************
+ * IViewObject2 interface
+ */
+#ifndef __IViewObject2_INTERFACE_DEFINED__
+#define __IViewObject2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IViewObject2, 0x00000127, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IViewObject2 : public IViewObject
+{
+    virtual HRESULT STDMETHODCALLTYPE GetExtent(
+        DWORD dwDrawAspect,
+        LONG lindex,
+        DVTARGETDEVICE *ptd,
+        LPSIZEL lpsizel) = 0;
+
+};
+#else
+typedef struct IViewObject2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IViewObject2* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IViewObject2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IViewObject2* This);
+
+    /*** IViewObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *Draw)(
+        IViewObject2* This,
+        DWORD dwDrawAspect,
+        LONG lindex,
+        void *pvAspect,
+        DVTARGETDEVICE *ptd,
+        HDC hdcTargetDev,
+        HDC hdcDraw,
+        LPCRECTL lprcBounds,
+        LPCRECTL lprcWBounds,
+        BOOL (STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR dwContinue),
+        ULONG_PTR dwContinue);
+
+    HRESULT (STDMETHODCALLTYPE *GetColorSet)(
+        IViewObject2* This,
+        DWORD dwDrawAspect,
+        LONG lindex,
+        void *pvAspect,
+        DVTARGETDEVICE *ptd,
+        HDC hicTargetDev,
+        LOGPALETTE **ppColorSet);
+
+    HRESULT (STDMETHODCALLTYPE *Freeze)(
+        IViewObject2* This,
+        DWORD dwDrawAspect,
+        LONG lindex,
+        void *pvAspect,
+        DWORD *pdwFreeze);
+
+    HRESULT (STDMETHODCALLTYPE *Unfreeze)(
+        IViewObject2* This,
+        DWORD dwFreeze);
+
+    HRESULT (STDMETHODCALLTYPE *SetAdvise)(
+        IViewObject2* This,
+        DWORD aspects,
+        DWORD advf,
+        IAdviseSink *pAdvSink);
+
+    HRESULT (STDMETHODCALLTYPE *GetAdvise)(
+        IViewObject2* This,
+        DWORD *pAspects,
+        DWORD *pAdvf,
+        IAdviseSink **ppAdvSink);
+
+    /*** IViewObject2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetExtent)(
+        IViewObject2* This,
+        DWORD dwDrawAspect,
+        LONG lindex,
+        DVTARGETDEVICE *ptd,
+        LPSIZEL lpsizel);
+
+    END_INTERFACE
+} IViewObject2Vtbl;
+interface IViewObject2 {
+    CONST_VTBL IViewObject2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IViewObject2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IViewObject2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IViewObject2_Release(This) (This)->lpVtbl->Release(This)
+/*** IViewObject methods ***/
+#define IViewObject2_Draw(This,dwDrawAspect,lindex,pvAspect,ptd,hdcTargetDev,hdcDraw,lprcBounds,lprcWBounds,pfnContinue,dwContinue) (This)->lpVtbl->Draw(This,dwDrawAspect,lindex,pvAspect,ptd,hdcTargetDev,hdcDraw,lprcBounds,lprcWBounds,pfnContinue,dwContinue)
+#define IViewObject2_GetColorSet(This,dwDrawAspect,lindex,pvAspect,ptd,hicTargetDev,ppColorSet) (This)->lpVtbl->GetColorSet(This,dwDrawAspect,lindex,pvAspect,ptd,hicTargetDev,ppColorSet)
+#define IViewObject2_Freeze(This,dwDrawAspect,lindex,pvAspect,pdwFreeze) (This)->lpVtbl->Freeze(This,dwDrawAspect,lindex,pvAspect,pdwFreeze)
+#define IViewObject2_Unfreeze(This,dwFreeze) (This)->lpVtbl->Unfreeze(This,dwFreeze)
+#define IViewObject2_SetAdvise(This,aspects,advf,pAdvSink) (This)->lpVtbl->SetAdvise(This,aspects,advf,pAdvSink)
+#define IViewObject2_GetAdvise(This,pAspects,pAdvf,ppAdvSink) (This)->lpVtbl->GetAdvise(This,pAspects,pAdvf,ppAdvSink)
+/*** IViewObject2 methods ***/
+#define IViewObject2_GetExtent(This,dwDrawAspect,lindex,ptd,lpsizel) (This)->lpVtbl->GetExtent(This,dwDrawAspect,lindex,ptd,lpsizel)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IViewObject2_GetExtent_Proxy(
+    IViewObject2* This,
+    DWORD dwDrawAspect,
+    LONG lindex,
+    DVTARGETDEVICE *ptd,
+    LPSIZEL lpsizel);
+void __RPC_STUB IViewObject2_GetExtent_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IViewObject2_INTERFACE_DEFINED__ */
+
+#ifndef __IDropSource_FWD_DEFINED__
+#define __IDropSource_FWD_DEFINED__
+typedef interface IDropSource IDropSource;
+#endif
+
+typedef IDropSource *LPDROPSOURCE;
+/*****************************************************************************
+ * IDropSource interface
+ */
+#ifndef __IDropSource_INTERFACE_DEFINED__
+#define __IDropSource_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDropSource, 0x00000121, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IDropSource : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE QueryContinueDrag(
+        BOOL fEscapePressed,
+        DWORD grfKeyState) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GiveFeedback(
+        DWORD dwEffect) = 0;
+
+};
+#else
+typedef struct IDropSourceVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDropSource* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDropSource* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDropSource* This);
+
+    /*** IDropSource methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryContinueDrag)(
+        IDropSource* This,
+        BOOL fEscapePressed,
+        DWORD grfKeyState);
+
+    HRESULT (STDMETHODCALLTYPE *GiveFeedback)(
+        IDropSource* This,
+        DWORD dwEffect);
+
+    END_INTERFACE
+} IDropSourceVtbl;
+interface IDropSource {
+    CONST_VTBL IDropSourceVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IDropSource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDropSource_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDropSource_Release(This) (This)->lpVtbl->Release(This)
+/*** IDropSource methods ***/
+#define IDropSource_QueryContinueDrag(This,fEscapePressed,grfKeyState) (This)->lpVtbl->QueryContinueDrag(This,fEscapePressed,grfKeyState)
+#define IDropSource_GiveFeedback(This,dwEffect) (This)->lpVtbl->GiveFeedback(This,dwEffect)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IDropSource_QueryContinueDrag_Proxy(
+    IDropSource* This,
+    BOOL fEscapePressed,
+    DWORD grfKeyState);
+void __RPC_STUB IDropSource_QueryContinueDrag_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDropSource_GiveFeedback_Proxy(
+    IDropSource* This,
+    DWORD dwEffect);
+void __RPC_STUB IDropSource_GiveFeedback_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IDropSource_INTERFACE_DEFINED__ */
+
+#ifndef __IDropTarget_FWD_DEFINED__
+#define __IDropTarget_FWD_DEFINED__
+typedef interface IDropTarget IDropTarget;
+#endif
+
+typedef IDropTarget *LPDROPTARGET;
+#define MK_ALT (0x20)
+
+#define DROPEFFECT_NONE (0)
+
+#define DROPEFFECT_COPY (1)
+
+#define DROPEFFECT_MOVE (2)
+
+#define DROPEFFECT_LINK (4)
+
+#define DROPEFFECT_SCROLL (0x80000000)
+
+#define DD_DEFSCROLLINSET (11)
+
+#define DD_DEFSCROLLDELAY (50)
+
+#define DD_DEFSCROLLINTERVAL (50)
+
+#define DD_DEFDRAGDELAY (200)
+
+#define DD_DEFDRAGMINDIST (2)
+
+/*****************************************************************************
+ * IDropTarget interface
+ */
+#ifndef __IDropTarget_INTERFACE_DEFINED__
+#define __IDropTarget_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDropTarget, 0x00000122, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IDropTarget : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE DragEnter(
+        IDataObject *pDataObj,
+        DWORD grfKeyState,
+        POINTL pt,
+        DWORD *pdwEffect) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DragOver(
+        DWORD grfKeyState,
+        POINTL pt,
+        DWORD *pdwEffect) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DragLeave(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Drop(
+        IDataObject *pDataObj,
+        DWORD grfKeyState,
+        POINTL pt,
+        DWORD *pdwEffect) = 0;
+
+};
+#else
+typedef struct IDropTargetVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDropTarget* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDropTarget* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDropTarget* This);
+
+    /*** IDropTarget methods ***/
+    HRESULT (STDMETHODCALLTYPE *DragEnter)(
+        IDropTarget* This,
+        IDataObject *pDataObj,
+        DWORD grfKeyState,
+        POINTL pt,
+        DWORD *pdwEffect);
+
+    HRESULT (STDMETHODCALLTYPE *DragOver)(
+        IDropTarget* This,
+        DWORD grfKeyState,
+        POINTL pt,
+        DWORD *pdwEffect);
+
+    HRESULT (STDMETHODCALLTYPE *DragLeave)(
+        IDropTarget* This);
+
+    HRESULT (STDMETHODCALLTYPE *Drop)(
+        IDropTarget* This,
+        IDataObject *pDataObj,
+        DWORD grfKeyState,
+        POINTL pt,
+        DWORD *pdwEffect);
+
+    END_INTERFACE
+} IDropTargetVtbl;
+interface IDropTarget {
+    CONST_VTBL IDropTargetVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IDropTarget_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDropTarget_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDropTarget_Release(This) (This)->lpVtbl->Release(This)
+/*** IDropTarget methods ***/
+#define IDropTarget_DragEnter(This,pDataObj,grfKeyState,pt,pdwEffect) (This)->lpVtbl->DragEnter(This,pDataObj,grfKeyState,pt,pdwEffect)
+#define IDropTarget_DragOver(This,grfKeyState,pt,pdwEffect) (This)->lpVtbl->DragOver(This,grfKeyState,pt,pdwEffect)
+#define IDropTarget_DragLeave(This) (This)->lpVtbl->DragLeave(This)
+#define IDropTarget_Drop(This,pDataObj,grfKeyState,pt,pdwEffect) (This)->lpVtbl->Drop(This,pDataObj,grfKeyState,pt,pdwEffect)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IDropTarget_DragEnter_Proxy(
+    IDropTarget* This,
+    IDataObject *pDataObj,
+    DWORD grfKeyState,
+    POINTL pt,
+    DWORD *pdwEffect);
+void __RPC_STUB IDropTarget_DragEnter_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDropTarget_DragOver_Proxy(
+    IDropTarget* This,
+    DWORD grfKeyState,
+    POINTL pt,
+    DWORD *pdwEffect);
+void __RPC_STUB IDropTarget_DragOver_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDropTarget_DragLeave_Proxy(
+    IDropTarget* This);
+void __RPC_STUB IDropTarget_DragLeave_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDropTarget_Drop_Proxy(
+    IDropTarget* This,
+    IDataObject *pDataObj,
+    DWORD grfKeyState,
+    POINTL pt,
+    DWORD *pdwEffect);
+void __RPC_STUB IDropTarget_Drop_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IDropTarget_INTERFACE_DEFINED__ */
+
+/* Begin additional prototypes for all interfaces */
+
+ULONG           __RPC_USER HWND_UserSize     (ULONG *, ULONG, HWND *);
+unsigned char * __RPC_USER HWND_UserMarshal  (ULONG *, unsigned char *, HWND *);
+unsigned char * __RPC_USER HWND_UserUnmarshal(ULONG *, unsigned char *, HWND *);
+void            __RPC_USER HWND_UserFree     (ULONG *, HWND *);
+ULONG           __RPC_USER HMENU_UserSize     (ULONG *, ULONG, HMENU *);
+unsigned char * __RPC_USER HMENU_UserMarshal  (ULONG *, unsigned char *, HMENU *);
+unsigned char * __RPC_USER HMENU_UserUnmarshal(ULONG *, unsigned char *, HMENU *);
+void            __RPC_USER HMENU_UserFree     (ULONG *, HMENU *);
+ULONG           __RPC_USER HGLOBAL_UserSize     (ULONG *, ULONG, HGLOBAL *);
+unsigned char * __RPC_USER HGLOBAL_UserMarshal  (ULONG *, unsigned char *, HGLOBAL *);
+unsigned char * __RPC_USER HGLOBAL_UserUnmarshal(ULONG *, unsigned char *, HGLOBAL *);
+void            __RPC_USER HGLOBAL_UserFree     (ULONG *, HGLOBAL *);
+ULONG           __RPC_USER HACCEL_UserSize     (ULONG *, ULONG, HACCEL *);
+unsigned char * __RPC_USER HACCEL_UserMarshal  (ULONG *, unsigned char *, HACCEL *);
+unsigned char * __RPC_USER HACCEL_UserUnmarshal(ULONG *, unsigned char *, HACCEL *);
+void            __RPC_USER HACCEL_UserFree     (ULONG *, HACCEL *);
+ULONG           __RPC_USER CLIPFORMAT_UserSize     (ULONG *, ULONG, CLIPFORMAT *);
+unsigned char * __RPC_USER CLIPFORMAT_UserMarshal  (ULONG *, unsigned char *, CLIPFORMAT *);
+unsigned char * __RPC_USER CLIPFORMAT_UserUnmarshal(ULONG *, unsigned char *, CLIPFORMAT *);
+void            __RPC_USER CLIPFORMAT_UserFree     (ULONG *, CLIPFORMAT *);
+ULONG           __RPC_USER STGMEDIUM_UserSize     (ULONG *, ULONG, STGMEDIUM *);
+unsigned char * __RPC_USER STGMEDIUM_UserMarshal  (ULONG *, unsigned char *, STGMEDIUM *);
+unsigned char * __RPC_USER STGMEDIUM_UserUnmarshal(ULONG *, unsigned char *, STGMEDIUM *);
+void            __RPC_USER STGMEDIUM_UserFree     (ULONG *, STGMEDIUM *);
+ULONG           __RPC_USER HDC_UserSize     (ULONG *, ULONG, HDC *);
+unsigned char * __RPC_USER HDC_UserMarshal  (ULONG *, unsigned char *, HDC *);
+unsigned char * __RPC_USER HDC_UserUnmarshal(ULONG *, unsigned char *, HDC *);
+void            __RPC_USER HDC_UserFree     (ULONG *, HDC *);
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WIDL_OLEIDL_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/oleidl.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/oleidl.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/oleidl.idl	(revision 16410)
@@ -0,0 +1,956 @@
+/*
+ * Copyright (C) 1999 Paul Quinn
+ * Copyright (C) 1999 Francis Beaudet
+ * Copyright (C) 2003 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef DO_NO_IMPORTS
+import "objidl.idl";
+#endif
+
+interface IOleInPlaceActiveObject;
+
+/*****************************************************************************
+ * IOleTypes interface
+ */
+[
+    uuid(b0916c84-7416-101a-bcea-08002b2b79ef)
+]
+interface IOLETypes
+{
+    typedef enum tagOLERENDER
+    {
+	OLERENDER_NONE = 0,
+	OLERENDER_DRAW = 1,
+	OLERENDER_FORMAT = 2,
+	OLERENDER_ASIS = 3
+    } OLERENDER, *LPOLERENDER;
+
+    typedef struct tagOBJECTDESCRIPTOR
+    {
+	ULONG cbSize;
+	CLSID clsid;
+	DWORD dwDrawAspect;
+	SIZEL sizel;
+	POINTL pointl;
+	DWORD dwStatus;
+	DWORD dwFullUserTypeName;
+	DWORD dwSrcOfCopy;
+    } OBJECTDESCRIPTOR,  *POBJECTDESCRIPTOR,   *LPOBJECTDESCRIPTOR,
+      LINKSRCDESCRIPTOR, *PLINKSRCDESCRIPTOR,  *LPLINKSRCDESCRIPTOR;
+}
+
+
+/*****************************************************************************
+ * IOleWindow interface
+ */
+[
+    object,
+    uuid(00000114-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IOleWindow : IUnknown
+{
+    typedef [unique] IOleWindow *LPOLEWINDOW;
+
+    HRESULT GetWindow(
+        [out] HWND *phwnd);
+
+    HRESULT ContextSensitiveHelp(
+        [in] BOOL fEnterMode);
+}
+
+
+/*****************************************************************************
+ * IOleInPlaceObject interface
+ */
+[
+    object,
+    uuid(00000113-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IOleInPlaceObject : IOleWindow
+{
+    typedef [unique] IOleInPlaceObject *LPOLEINPLACEOBJECT;
+
+    HRESULT InPlaceDeactivate();
+
+    HRESULT UIDeactivate();
+
+    HRESULT SetObjectRects(
+        [in] LPCRECT lprcPosRect,
+        [in] LPCRECT lprcClipRect);
+
+    HRESULT ReactivateAndUndo();
+}
+
+
+/*****************************************************************************
+ * IOleInPlaceUIWindow interface
+ */
+[
+    object,
+    uuid(00000115-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+
+interface IOleInPlaceUIWindow : IOleWindow
+{
+    typedef [unique] IOleInPlaceUIWindow *LPOLEINPLACEUIWINDOW;
+
+    typedef RECT BORDERWIDTHS;
+    typedef LPRECT LPBORDERWIDTHS;
+    typedef LPCRECT LPCBORDERWIDTHS;
+
+    HRESULT GetBorder(
+        [out] LPRECT lprectBorder);
+
+    HRESULT RequestBorderSpace(
+        [in, unique] LPCBORDERWIDTHS pborderwidths);
+
+    HRESULT SetBorderSpace(
+        [in, unique] LPCBORDERWIDTHS pborderwidths);
+
+    HRESULT SetActiveObject(
+        [in, unique] IOleInPlaceActiveObject *pActiveObject,
+        [in, string, unique] LPCOLESTR pszObjName);
+}
+
+
+/* avoid conflict with Wine Unicode macros */
+cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
+cpp_quote("#undef TranslateAccelerator")
+cpp_quote("#endif")
+
+/*****************************************************************************
+ * IOleInPlaceFrame interface
+ */
+[
+    object,
+    uuid(00000116-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IOleInPlaceFrame : IOleInPlaceUIWindow
+{
+    typedef [unique] IOleInPlaceFrame *LPOLEINPLACEFRAME;
+
+    typedef struct tagOleInPlaceFrameInfo
+    {
+        UINT cb;
+        BOOL fMDIApp;
+        HWND hwndFrame;
+        HACCEL haccel;
+        UINT cAccelEntries;
+    } OLEINPLACEFRAMEINFO, *LPOLEINPLACEFRAMEINFO;
+
+    typedef struct  tagOleMenuGroupWidths
+    {
+        LONG width[ 6 ];
+    } OLEMENUGROUPWIDTHS, *LPOLEMENUGROUPWIDTHS;
+
+    typedef HGLOBAL HOLEMENU;
+
+    HRESULT InsertMenus(
+        [in] HMENU hmenuShared,
+        [in,out] LPOLEMENUGROUPWIDTHS lpMenuWidths);
+
+    HRESULT SetMenu(
+        [in] HMENU hmenuShared,
+        [in] HOLEMENU holemenu,
+        [in] HWND hwndActiveObject);
+
+    HRESULT RemoveMenus(
+        [in] HMENU hmenuShared);
+
+    HRESULT SetStatusText(
+        [in, unique] LPCOLESTR pszStatusText);
+
+    HRESULT EnableModeless(
+        [in] BOOL fEnable);
+
+    HRESULT TranslateAccelerator(
+        [in] LPMSG lpmsg,
+        [in] WORD wID);
+}
+
+
+/*****************************************************************************
+ * IOleInPlaceActiveObject interface
+ */
+[
+    object,
+    uuid(00000117-0000-0000-c000-000000000046)
+]
+interface IOleInPlaceActiveObject : IOleWindow
+{
+    typedef [unique] IOleInPlaceActiveObject *LPOLEINPLACEACTIVEOBJECT;
+
+    [local]
+    HRESULT TranslateAccelerator(
+        [in] LPMSG lpmsg);
+
+    [call_as(TranslateAccelerator)]
+    HRESULT RemoteTranslateAccelerator();
+
+    HRESULT OnFrameWindowActivate(
+        [in] BOOL fActivate);
+
+    HRESULT OnDocWindowActivate(
+        [in] BOOL fActivate);
+
+    [local]
+    HRESULT ResizeBorder(
+        [in] LPCRECT prcBorder,
+        [in, unique] IOleInPlaceUIWindow *pUIWindow,
+        [in] BOOL fFrameWindow);
+
+    [call_as(ResizeBorder)]
+    HRESULT RemoteResizeBorder(
+        [in] LPCRECT prcBorder,
+        [in] REFIID riid,
+        [in, unique, iid_is(riid)] IOleInPlaceUIWindow *pUIWindow,
+        [in] BOOL fFrameWindow);
+
+    HRESULT EnableModeless(
+        [in] BOOL fEnable);
+}
+
+
+/*****************************************************************************
+ * IOleInPlaceSite interface
+ */
+[
+    object,
+    uuid(00000119-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IOleInPlaceSite : IOleWindow
+{
+    typedef [unique] IOleInPlaceSite *LPOLEINPLACESITE;
+
+    HRESULT CanInPlaceActivate();
+    HRESULT OnInPlaceActivate();
+    HRESULT OnUIActivate();
+
+    HRESULT GetWindowContext(
+        [out] IOleInPlaceFrame **ppFrame,
+        [out] IOleInPlaceUIWindow **ppDoc,
+        [out] LPRECT lprcPosRect,
+        [out] LPRECT lprcClipRect,
+        [in, out] LPOLEINPLACEFRAMEINFO lpFrameInfo);
+
+    HRESULT Scroll(
+        [in] SIZE scrollExtent);
+
+    HRESULT OnUIDeactivate(
+        [in] BOOL fUndoable);
+
+    HRESULT OnInPlaceDeactivate();
+    HRESULT DiscardUndoState();
+    HRESULT DeactivateAndUndo();
+
+    HRESULT OnPosRectChange(
+        [in] LPCRECT lprcPosRect);
+}
+
+
+/*****************************************************************************
+ * IParseDisplayName interface
+ */
+[
+    object,
+    uuid(0000011a-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IParseDisplayName : IUnknown
+{
+    typedef [unique] IParseDisplayName *LPPARSEDISPLAYNAME;
+
+    HRESULT ParseDisplayName(
+        [in, unique] IBindCtx *pbc,
+        [in] LPOLESTR pszDisplayName,
+        [out] ULONG *pchEaten,
+        [out] IMoniker **ppmkOut);
+}
+
+
+/*****************************************************************************
+ * IOleContainer interface
+ */
+[
+    object,
+    uuid(0000011b-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IOleContainer : IParseDisplayName
+{
+    typedef [unique] IOleContainer *LPOLECONTAINER;
+
+    HRESULT EnumObjects(
+        [in] DWORD grfFlags,
+        [out] IEnumUnknown **ppenum);
+
+    HRESULT LockContainer(
+        [in] BOOL fLock);
+}
+
+
+/*****************************************************************************
+ * IOleItemContainer interface
+ */
+[
+    object,
+    uuid(0000011c-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IOleItemContainer : IOleContainer
+{
+    typedef [unique] IOleItemContainer *LPOLEITEMCONTAINER;
+
+    typedef enum tagBINDSPEED
+    {
+	BINDSPEED_INDEFINITE = 1,
+	BINDSPEED_MODERATE = 2,
+	BINDSPEED_IMMEDIATE = 3
+    } BINDSPEED;
+
+    typedef enum tagOLECONTF
+    {
+	OLECONTF_EMBEDDINGS = 1,
+	OLECONTF_LINKS = 2,
+	OLECONTF_OTHERS = 4,
+	OLECONTF_ONLYUSER = 8,
+	OLECONTF_ONLYIFRUNNING = 16
+    } OLECONTF;
+
+cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
+cpp_quote("#undef GetObject")
+cpp_quote("#endif")
+    HRESULT GetObject(
+        [in] LPOLESTR pszItem,
+        [in] DWORD dwSpeedNeeded,
+        [in, unique] IBindCtx *pbc,
+        [in] REFIID riid,
+        [out, iid_is(riid)] void **ppvObject);
+
+    HRESULT GetObjectStorage(
+        [in] LPOLESTR pszItem,
+        [in, unique] IBindCtx *pbc,
+        [in] REFIID riid,
+        [out, iid_is(riid)] void **ppvStorage);
+
+    HRESULT IsRunning(
+        [in] LPOLESTR pszItem);
+}
+
+
+/*****************************************************************************
+ * IOleLink interface
+ */
+[
+    object,
+    uuid(0000011d-0000-0000-c000-000000000046)
+]
+interface IOleLink : IUnknown
+{
+    typedef [unique] IOleLink *LPOLELINK;
+
+    typedef enum tagOLEUPDATE
+    {
+	OLEUPDATE_ALWAYS = 1,
+	OLEUPDATE_ONCALL = 3
+    } OLEUPDATE, *POLEUPDATE, *LPOLEUPDATE;
+
+    typedef enum tagOLELINKBIND
+    {
+	OLELINKBIND_EVENIFCLASSDIFF = 1
+    } OLELINKBIND;
+
+    HRESULT SetUpdateOptions(
+        [in] DWORD dwUpdateOpt);
+
+    HRESULT GetUpdateOptions(
+        [out] DWORD *pdwUpdateOpt);
+
+    HRESULT SetSourceMoniker(
+        [in, unique] IMoniker *pmk,
+        [in] REFCLSID rclsid);
+
+    HRESULT GetSourceMoniker(
+        [out] IMoniker **ppmk);
+
+    HRESULT SetSourceDisplayName(
+        [in]LPCOLESTR pszStatusText);
+
+    HRESULT GetSourceDisplayName(
+        [out] LPOLESTR *ppszDisplayName);
+
+    HRESULT BindToSource(
+        [in] DWORD bindflags,
+        [in, unique] IBindCtx *pbc);
+
+    HRESULT BindIfRunning();
+
+    HRESULT GetBoundSource(
+        [out] IUnknown **ppunk);
+
+    HRESULT UnbindSource();
+
+    HRESULT Update(
+        [in, unique] IBindCtx *pbc);
+}
+
+
+/*****************************************************************************
+ * IOleClientSite interface
+ */
+[
+    object,
+    uuid(00000118-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IOleClientSite : IUnknown
+{
+    typedef [unique] IOleClientSite * LPOLECLIENTSITE;
+
+    HRESULT SaveObject();
+
+    HRESULT GetMoniker(
+        [in] DWORD dwAssign,
+        [in] DWORD dwWhichMoniker,
+        [out] IMoniker **ppmk);
+
+    HRESULT GetContainer(
+        [out] IOleContainer **ppContainer);
+
+    HRESULT ShowObject();
+
+    HRESULT OnShowWindow(
+        [in] BOOL fShow);
+
+    HRESULT RequestNewObjectLayout();
+}
+
+
+/*****************************************************************************
+ * IOleCache interface
+ */
+[
+    object,
+    uuid(0000011e-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IOleCache : IUnknown
+{
+    typedef [unique] IOleCache *LPOLECACHE;
+
+    HRESULT Cache(
+        [in, unique] FORMATETC *pformatetc,
+        [in] DWORD advf,
+        [out] DWORD *pdwConnection);
+
+    HRESULT Uncache(
+        [in] DWORD dwConnection);
+
+    HRESULT EnumCache(
+        [out] IEnumSTATDATA **ppenumSTATDATA);
+
+    HRESULT InitCache(
+        [in, unique] IDataObject *pDataObject);
+
+    HRESULT SetData(
+        [in, unique] FORMATETC *pformatetc,
+        [in, unique] STGMEDIUM *pmedium,
+        [in] BOOL fRelease);
+}
+
+
+/*****************************************************************************
+ * IOleCache2 interface
+ */
+[
+    object,
+    uuid(00000128-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IOleCache2 : IOleCache
+{
+    typedef [unique] IOleCache2 *LPOLECACHE2;
+
+    const DWORD UPDFCACHE_NODATACACHE = 0x00000001;
+    const DWORD UPDFCACHE_ONSAVECACHE = 0x00000002;
+    const DWORD UPDFCACHE_ONSTOPCACHE = 0x00000004;
+    const DWORD UPDFCACHE_NORMALCACHE = 0x00000008;
+    const DWORD UPDFCACHE_IFBLANK     = 0x00000010;
+    const DWORD UPDFCACHE_ONLYIFBLANK = 0x80000000;
+
+    const DWORD UPDFCACHE_IFBLANKORONSAVECACHE = (UPDFCACHE_IFBLANK | UPDFCACHE_ONSAVECACHE);
+    const DWORD UPDFCACHE_ALL = ((DWORD)(~(UPDFCACHE_ONLYIFBLANK)));
+    const DWORD UPDFCACHE_ALLBUTNODATACACHE = (UPDFCACHE_ALL & ((DWORD)(~UPDFCACHE_NODATACACHE)));
+
+    typedef enum tagDISCARDCACHE
+    {
+        DISCARDCACHE_SAVEIFDIRTY = 0,
+        DISCARDCACHE_NOSAVE =  1
+    } DISCARDCACHE;
+
+    [local]
+    HRESULT UpdateCache(
+        [in] LPDATAOBJECT pDataObject,
+        [in] DWORD grfUpdf,
+        [in] LPVOID pReserved);
+
+    [call_as(UpdateCache)]
+    HRESULT RemoteUpdateCache(
+        [in] LPDATAOBJECT pDataObject,
+        [in] DWORD grfUpdf,
+        [in] LONG_PTR pReserved);
+
+    HRESULT DiscardCache(
+        [in] DWORD dwDiscardOptions);
+}
+
+
+/*****************************************************************************
+ * IOleCacheControl interface
+ */
+[
+    object,
+    uuid(00000129-0000-0000-c000-000000000046)
+]
+interface IOleCacheControl : IUnknown
+{
+    typedef [unique] IOleCacheControl *LPOLECACHECONTROL;
+
+    HRESULT OnRun(
+        LPDATAOBJECT pDataObject);
+
+    HRESULT OnStop();
+}
+
+
+/*****************************************************************************
+ *  IEnumOLEVERB interface
+ */
+[
+    object,
+    uuid(00000104-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IEnumOLEVERB : IUnknown
+{
+    typedef [unique] IEnumOLEVERB *LPENUMOLEVERB;
+
+    typedef struct tagOLEVERB
+    {
+	LONG lVerb;
+	LPOLESTR lpszVerbName;
+	DWORD fuFlags;
+	DWORD grfAttribs;
+    } OLEVERB, *LPOLEVERB;
+
+    typedef enum tagOLEVERBATTRIB
+    {
+	OLEVERBATTRIB_NEVERDIRTIES = 1,
+	OLEVERBATTRIB_ONCONTAINERMENU = 2
+    } OLEVERBATTRIB;
+
+    [local]
+    HRESULT Next(
+        [in] ULONG celt,
+        [out, size_is(celt), length_is(*pceltFetched)] LPOLEVERB rgelt,
+        [out] ULONG *pceltFetched);
+
+    [call_as(Next)]
+    HRESULT RemoteNext(
+        [in] ULONG celt,
+        [out, size_is(celt), length_is(*pceltFetched)] LPOLEVERB rgelt,
+        [out] ULONG *pceltFetched);
+
+    HRESULT Skip(
+        [in] ULONG celt);
+
+    HRESULT Reset();
+
+    HRESULT Clone(
+        [out] IEnumOLEVERB **ppenum);
+}
+
+
+/*****************************************************************************
+ * IOleObject interface
+ */
+[
+    object,
+    uuid(00000112-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IOleObject : IUnknown
+{
+    typedef [unique] IOleObject *LPOLEOBJECT;
+
+    typedef enum tagOLEGETMONIKER
+    {
+	OLEGETMONIKER_ONLYIFTHERE = 1,
+	OLEGETMONIKER_FORCEASSIGN = 2,
+	OLEGETMONIKER_UNASSIGN = 3,
+	OLEGETMONIKER_TEMPFORUSER = 4
+    } OLEGETMONIKER;
+
+    typedef enum tagOLEWHICHMK
+    {
+	OLEWHICHMK_CONTAINER = 1,
+	OLEWHICHMK_OBJREL = 2,
+	OLEWHICHMK_OBJFULL = 3
+    } OLEWHICHMK;
+
+    typedef enum tagUSERCLASSTYPE
+    {
+	USERCLASSTYPE_FULL = 1,
+	USERCLASSTYPE_SHORT = 2,
+	USERCLASSTYPE_APPNAME = 3
+    } USERCLASSTYPE;
+
+    typedef enum tagOLEMISC
+    {
+	OLEMISC_RECOMPOSEONRESIZE = 0x1,
+	OLEMISC_ONLYICONIC = 0x2,
+	OLEMISC_INSERTNOTREPLACE = 0x4,
+	OLEMISC_STATIC = 0x8,
+	OLEMISC_CANTLINKINSIDE = 0x10,
+	OLEMISC_CANLINKBYOLE1 = 0x20,
+	OLEMISC_ISLINKOBJECT = 0x40,
+	OLEMISC_INSIDEOUT = 0x80,
+	OLEMISC_ACTIVATEWHENVISIBLE = 0x100,
+	OLEMISC_RENDERINGISDEVICEINDEPENDENT = 0x200,
+	OLEMISC_INVISIBLEATRUNTIME = 0x400,
+	OLEMISC_ALWAYSRUN = 0x800,
+	OLEMISC_ACTSLIKEBUTTON = 0x1000,
+	OLEMISC_ACTSLIKELABEL = 0x2000,
+	OLEMISC_NOUIACTIVATE = 0x4000,
+	OLEMISC_ALIGNABLE = 0x8000,
+	OLEMISC_SIMPLEFRAME = 0x10000,
+	OLEMISC_SETCLIENTSITEFIRST = 0x20000,
+	OLEMISC_IMEMODE = 0x40000,
+	OLEMISC_IGNOREACTIVATEWHENVISIBLE = 0x80000,
+	OLEMISC_WANTSTOMENUMERGE = 0x100000,
+	OLEMISC_SUPPORTSMULTILEVELUNDO = 0x200000
+    } OLEMISC;
+
+    typedef enum tagOLECLOSE
+    {
+	OLECLOSE_SAVEIFDIRTY = 0,
+	OLECLOSE_NOSAVE = 1,
+	OLECLOSE_PROMPTSAVE = 2
+    } OLECLOSE;
+
+    HRESULT SetClientSite(
+        [in, unique] IOleClientSite *pClientSite);
+
+    HRESULT GetClientSite(
+        [out] IOleClientSite **ppClientSite);
+
+    HRESULT SetHostNames(
+        [in] LPCOLESTR szContainerApp,
+        [in, unique] LPCOLESTR szContainerObj);
+
+    HRESULT Close(
+        [in] DWORD dwSaveOption);
+
+    HRESULT SetMoniker(
+        [in] DWORD dwWhichMoniker,
+        [in, unique] IMoniker *pmk);
+
+    HRESULT GetMoniker(
+        [in] DWORD dwAssign,
+        [in] DWORD dwWhichMoniker,
+        [out] IMoniker **ppmk);
+
+    HRESULT InitFromData(
+        [in, unique] IDataObject *pDataObject,
+        [in] BOOL fCreation,
+        [in] DWORD dwReserved);
+
+    HRESULT GetClipboardData(
+        [in] DWORD dwReserved,
+        [out] IDataObject **ppDataObject);
+
+    HRESULT DoVerb(
+        [in] LONG iVerb,
+        [in, unique] LPMSG lpmsg,
+        [in, unique] IOleClientSite *pActiveSite,
+        [in] LONG lindex,
+        [in] HWND hwndParent,
+        [in, unique] LPCRECT lprcPosRect);
+
+    HRESULT EnumVerbs(
+        [out] IEnumOLEVERB **ppEnumOleVerb);
+
+    HRESULT Update();
+
+    HRESULT IsUpToDate();
+
+    HRESULT GetUserClassID(
+        [out] CLSID *pClsid);
+
+    HRESULT GetUserType(
+        [in] DWORD dwFormOfType,
+        [out] LPOLESTR *pszUserType);
+
+    HRESULT SetExtent(
+        [in] DWORD dwDrawAspect,
+        [in] SIZEL *psizel);
+
+    HRESULT GetExtent(
+        [in] DWORD dwDrawAspect,
+        [out] SIZEL *psizel);
+
+    HRESULT Advise(
+        [in, unique] IAdviseSink *pAdvSink,
+        [out] DWORD *pdwConnection);
+
+    HRESULT Unadvise(
+        [in] DWORD dwConnection);
+
+    HRESULT EnumAdvise(
+        [out] IEnumSTATDATA **ppenumAdvise);
+
+    HRESULT GetMiscStatus(
+        [in] DWORD dwAspect,
+        [out] DWORD *pdwStatus);
+
+    HRESULT SetColorScheme(
+        [in] LOGPALETTE *pLogpal);
+}
+
+
+/*****************************************************************************
+ * IOleAdviseHolder interface
+ */
+[
+    local,
+    object,
+    uuid(00000111-0000-0000-c000-000000000046)
+]
+interface IOleAdviseHolder : IUnknown
+{
+    typedef [unique] IOleAdviseHolder * LPOLEADVISEHOLDER;
+
+    HRESULT Advise(
+        [in, unique] IAdviseSink *pAdvise,
+        [out] DWORD *pdwConnection);
+
+    HRESULT Unadvise(
+        [in] DWORD dwConnection);
+
+    HRESULT EnumAdvise(
+        [out] IEnumSTATDATA **ppenumAdvise);
+
+    HRESULT SendOnRename(
+        [in, unique] IMoniker *pmk);
+
+    HRESULT SendOnSave();
+    HRESULT SendOnClose();
+}
+
+
+/*****************************************************************************
+ * IContinue interface
+ */
+[
+    object,
+    uuid(0000012a-0000-0000-c000-000000000046)
+]
+interface IContinue : IUnknown
+{
+    HRESULT FContinue();
+}
+
+
+/*****************************************************************************
+ * IViewObject interface
+ */
+[
+    object,
+    uuid(0000010d-0000-0000-c000-000000000046)
+]
+interface IViewObject : IUnknown
+{
+    typedef [unique] IViewObject *LPVIEWOBJECT;
+
+    [local]
+    HRESULT Draw(
+        [in] DWORD dwDrawAspect,
+        [in] LONG lindex,
+        [in, unique] void * pvAspect,
+        [in, unique] DVTARGETDEVICE *ptd,
+        [in] HDC hdcTargetDev,
+        [in] HDC hdcDraw,
+        [in] LPCRECTL lprcBounds,
+        [in, unique] LPCRECTL lprcWBounds,
+        [in] BOOL (*pfnContinue)(ULONG_PTR dwContinue),
+        [in] ULONG_PTR dwContinue);
+
+    [call_as(Draw)]
+    HRESULT RemoteDraw(
+        [in] DWORD dwDrawAspect,
+        [in] LONG lindex,
+        [in] ULONG_PTR pvAspect,
+        [in, unique] DVTARGETDEVICE *ptd,
+        [in] ULONG_PTR hdcTargetDev,
+        [in] ULONG_PTR hdcDraw,
+        [in] LPCRECTL lprcBounds,
+        [in, unique] LPCRECTL lprcWBounds,
+        [in] IContinue *pContinue);
+
+    [local]
+    HRESULT GetColorSet(
+        [in] DWORD dwDrawAspect,
+        [in] LONG lindex,
+        [in, unique] void *pvAspect,
+        [in, unique] DVTARGETDEVICE *ptd,
+        [in] HDC hicTargetDev,
+        [out] LOGPALETTE **ppColorSet);
+
+    [call_as(GetColorSet)]
+    HRESULT RemoteGetColorSet(
+        [in] DWORD dwDrawAspect,
+        [in] LONG lindex,
+        [in] ULONG_PTR pvAspect,
+        [in, unique] DVTARGETDEVICE *ptd,
+        [in] ULONG_PTR hicTargetDev,
+        [out] LOGPALETTE **ppColorSet);
+
+    [local]
+    HRESULT Freeze(
+        [in] DWORD dwDrawAspect,
+        [in] LONG lindex,
+        [in, unique] void *pvAspect,
+        [out] DWORD *pdwFreeze);
+
+    [call_as(Freeze)]
+    HRESULT RemoteFreeze(
+        [in] DWORD dwDrawAspect,
+        [in] LONG lindex,
+        [in] ULONG_PTR pvAspect,
+        [out] DWORD *pdwFreeze);
+
+    HRESULT Unfreeze(
+        [in] DWORD dwFreeze);
+
+    HRESULT SetAdvise(
+        [in] DWORD aspects,
+        [in] DWORD advf,
+        [in, unique] IAdviseSink *pAdvSink);
+
+    [local]
+    HRESULT GetAdvise(
+        [out, unique] DWORD *pAspects,
+        [out, unique] DWORD *pAdvf,
+        [out] IAdviseSink **ppAdvSink);
+
+    [call_as(GetAdvise)]
+    HRESULT RemoteGetAdvise(
+        [out] DWORD *pAspects,
+        [out] DWORD *pAdvf,
+        [out] IAdviseSink **ppAdvSink);
+}
+
+
+/*****************************************************************************
+ * IViewObject2 interface
+ */
+[
+    object,
+    uuid(00000127-0000-0000-c000-000000000046)
+]
+interface IViewObject2 : IViewObject
+{
+    typedef [unique] IViewObject2 *LPVIEWOBJECT2;
+
+    HRESULT GetExtent(
+        [in]  DWORD dwDrawAspect,
+        [in]  LONG lindex,
+        [in, unique]  DVTARGETDEVICE* ptd,
+        [out] LPSIZEL lpsizel);
+}
+
+
+/*****************************************************************************
+ * IDropSource interface
+ */
+[
+    local,
+    object,
+    uuid(00000121-0000-0000-c000-000000000046)
+]
+interface IDropSource : IUnknown
+{
+    typedef [unique] IDropSource *LPDROPSOURCE;
+
+    HRESULT QueryContinueDrag(
+        [in] BOOL fEscapePressed,
+        [in] DWORD grfKeyState);
+
+    HRESULT GiveFeedback(
+        [in] DWORD dwEffect);
+}
+
+
+/*****************************************************************************
+ * IDropTarget interface
+ */
+[
+    object,
+    uuid(00000122-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IDropTarget : IUnknown
+{
+    typedef [unique] IDropTarget *LPDROPTARGET;
+
+    const DWORD MK_ALT = 0x20;
+    const DWORD DROPEFFECT_NONE = 0;
+    const DWORD DROPEFFECT_COPY = 1;
+    const DWORD DROPEFFECT_MOVE = 2;
+    const DWORD DROPEFFECT_LINK = 4;
+    const DWORD DROPEFFECT_SCROLL = 0x80000000;
+    const DWORD DD_DEFSCROLLINSET = 11;
+    const DWORD DD_DEFSCROLLDELAY = 50;
+    const DWORD DD_DEFSCROLLINTERVAL = 50;
+    const DWORD DD_DEFDRAGDELAY = 200;
+    const DWORD DD_DEFDRAGMINDIST = 2;
+
+    HRESULT DragEnter(
+        [in, unique] IDataObject *pDataObj,
+        [in] DWORD grfKeyState,
+        [in] POINTL pt,
+        [in, out] DWORD *pdwEffect);
+
+    HRESULT DragOver(
+        [in] DWORD grfKeyState,
+        [in] POINTL pt,
+        [in, out] DWORD *pdwEffect);
+
+    HRESULT DragLeave();
+
+    HRESULT Drop(
+        [in, unique] IDataObject *pDataObj,
+        [in] DWORD grfKeyState,
+        [in] POINTL pt,
+        [in, out] DWORD *pdwEffect);
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/optary.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/optary.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/optary.idl	(revision 16410)
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2006 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "objidl.idl";
+import "oleidl.idl";
+
+/*****************************************************************************
+ *    IOptionArray interface
+ */
+[
+    local,
+    object,
+    uuid(22b6d492-0f88-11d1-ba19-00c04fd912d0),
+    pointer_default(unique)
+]
+interface IOptionArray : IUnknown
+{
+    typedef [unique] IOptionArray *LPOPTIONARRAY;
+
+    HRESULT QueryOption(
+        [in] DWORD  dwOption,
+        [out, size_is(*pcbBuf)] LPVOID pBuffer,
+        [in, out] ULONG *pcbBuf);
+
+    HRESULT SetOption(
+        [in] DWORD dwOption,
+        [in, size_is(cbBuf)] LPVOID pBuffer,
+        [in] ULONG cbBuf);
+}
+
+/*****************************************************************************
+ *    IHtmlLoadOptions interface
+ */
+[
+    local,
+    object,
+    uuid(a71a0808-0f88-11d1-ba19-00c04fd912d0),
+    pointer_default(unique)
+]
+interface IHtmlLoadOptions : IOptionArray
+{
+    typedef enum {
+        HTMLLOADOPTION_CODEPAGE,
+        HTMLLOADOPTION_INETSHORTCUTPATH,
+        HTMLLOADOPTION_HYPERLINK,
+        HTMLLOADOPTION_FRAMELOAD
+    } HTMLLOADOPTION;
+}
+
+cpp_quote("DEFINE_GUID(CLSID_HTMLLoadOptions, 0x18845040, 0x0FA5, 0x11D1, 0xBA,0x19, 0x00,0xC0,0x4F,0xD9,0x12,0xD0);")
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/pdh.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/pdh.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/pdh.h	(revision 16410)
@@ -0,0 +1,206 @@
+/*
+ * Performance Data Helper
+ *
+ * Copyright 2007 Hans Leidekker
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _PDH_H_
+#define _PDH_H_
+
+#ifdef __WINESRC__
+# include <windef.h>
+#else
+# include <windows.h>
+#endif
+#include <winperf.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef LONG   PDH_STATUS;
+typedef HANDLE PDH_HQUERY;
+typedef HANDLE PDH_HCOUNTER;
+typedef HANDLE PDH_HLOG;
+
+#define PDH_MAX_SCALE 7
+#define PDH_MIN_SCALE (-7)
+
+#define PDH_MAX_COUNTER_NAME    1024
+
+#define PDH_FMT_LONG        0x00000100
+#define PDH_FMT_DOUBLE      0x00000200
+#define PDH_FMT_LARGE       0x00000400
+#define PDH_FMT_NOSCALE     0x00001000
+#define PDH_FMT_1000        0x00002000
+#define PDH_FMT_NOCAP100    0x00008000
+
+typedef struct _PDH_FMT_COUNTERVALUE
+{
+    DWORD CStatus;
+    union
+    {
+        LONG     longValue;
+        double   doubleValue;
+        LONGLONG largeValue;
+        LPCSTR   AnsiStringValue;
+        LPCWSTR  WideStringValue;
+    } DUMMYUNIONNAME;
+} PDH_FMT_COUNTERVALUE, *PPDH_FMT_COUNTERVALUE;
+
+typedef struct _PDH_RAW_COUNTER
+{
+    DWORD    CStatus;
+    FILETIME TimeStamp;
+    LONGLONG FirstValue;
+    LONGLONG SecondValue;
+    DWORD    MultiCount;
+} PDH_RAW_COUNTER, *PPDH_RAW_COUNTER;
+
+typedef struct _PDH_COUNTER_PATH_ELEMENTS_A
+{
+    LPSTR szMachineName;
+    LPSTR szObjectName;
+    LPSTR szInstanceName;
+    LPSTR szParentInstance;
+    DWORD dwInstanceIndex;
+    LPSTR szCounterName;
+} PDH_COUNTER_PATH_ELEMENTS_A, *PPDH_COUNTER_PATH_ELEMENTS_A;
+
+typedef struct _PDH_COUNTER_PATH_ELEMENTS_W
+{
+    LPWSTR szMachineName;
+    LPWSTR szObjectName;
+    LPWSTR szInstanceName;
+    LPWSTR szParentInstance;
+    DWORD  dwInstanceIndex;
+    LPWSTR szCounterName;
+} PDH_COUNTER_PATH_ELEMENTS_W, *PPDH_COUNTER_PATH_ELEMENTS_W;
+
+typedef struct _PDH_DATA_ITEM_PATH_ELEMENTS_A
+{
+    LPSTR szMachineName;
+    GUID  ObjectGUID;
+    DWORD dwItemId;
+    LPSTR szInstanceName;
+} PDH_DATA_ITEM_PATH_ELEMENTS_A, *PPDH_DATA_ITEM_PATH_ELEMENTS_A;
+
+typedef struct _PDH_DATA_ITEM_PATH_ELEMENTS_W
+{
+    LPWSTR szMachineName;
+    GUID   ObjectGUID;
+    DWORD  dwItemId;
+    LPWSTR szInstanceName;
+} PDH_DATA_ITEM_PATH_ELEMENTS_W, *PPDH_DATA_ITEM_PATH_ELEMENTS_W;
+
+typedef struct _PDH_COUNTER_INFO_A
+{
+    DWORD     dwLength;
+    DWORD     dwType;
+    DWORD     CVersion;
+    DWORD     CStatus;
+    LONG      lScale;
+    LONG      lDefaultScale;
+    DWORD_PTR dwUserData;
+    DWORD_PTR dwQueryUserData;
+    LPSTR     szFullPath;
+    union
+    {
+        PDH_DATA_ITEM_PATH_ELEMENTS_A DataItemPath;
+        PDH_COUNTER_PATH_ELEMENTS_A   CounterPath;
+        struct
+        {
+            LPSTR szMachineName;
+            LPSTR szObjectName;
+            LPSTR szInstanceName;
+            LPSTR szParentInstance;
+            DWORD dwInstanceIndex;
+            LPSTR szCounterName;
+        } DUMMYSTRUCTNAME;
+    } DUMMYUNIONNAME;
+    LPSTR szExplainText;
+    DWORD DataBuffer[1];
+} PDH_COUNTER_INFO_A, *PPDH_COUNTER_INFO_A;
+
+typedef struct _PDH_COUNTER_INFO_W
+{
+    DWORD     dwLength;
+    DWORD     dwType;
+    DWORD     CVersion;
+    DWORD     CStatus;
+    LONG      lScale;
+    LONG      lDefaultScale;
+    DWORD_PTR dwUserData;
+    DWORD_PTR dwQueryUserData;
+    LPWSTR    szFullPath;
+    union
+    {
+        PDH_DATA_ITEM_PATH_ELEMENTS_W DataItemPath;
+        PDH_COUNTER_PATH_ELEMENTS_W   CounterPath;
+        struct
+        {
+            LPWSTR szMachineName;
+            LPWSTR szObjectName;
+            LPWSTR szInstanceName;
+            LPWSTR szParentInstance;
+            DWORD  dwInstanceIndex;
+            LPWSTR szCounterName;
+        } DUMMYSTRUCTNAME;
+    } DUMMYUNIONNAME;
+    LPWSTR szExplainText;
+    DWORD DataBuffer[1];
+} PDH_COUNTER_INFO_W, *PPDH_COUNTER_INFO_W;
+
+PDH_STATUS WINAPI PdhAddCounterA(PDH_HQUERY, LPCSTR, DWORD_PTR, PDH_HCOUNTER *);
+PDH_STATUS WINAPI PdhAddCounterW(PDH_HQUERY, LPCWSTR, DWORD_PTR, PDH_HCOUNTER *);
+#define    PdhAddCounter WINELIB_NAME_AW(PdhAddCounter)
+PDH_STATUS WINAPI PdhAddEnglishCounterA(PDH_HQUERY, LPCSTR, DWORD_PTR, PDH_HCOUNTER *);
+PDH_STATUS WINAPI PdhAddEnglishCounterW(PDH_HQUERY, LPCWSTR, DWORD_PTR, PDH_HCOUNTER *);
+#define    PdhAddEnglishCounter WINELIB_NAME_AW(PdhAddEnglishCounter)
+PDH_STATUS WINAPI PdhCloseQuery(PDH_HQUERY);
+PDH_STATUS WINAPI PdhCollectQueryData(PDH_HQUERY);
+PDH_STATUS WINAPI PdhCollectQueryDataEx(PDH_HQUERY, DWORD, HANDLE);
+PDH_STATUS WINAPI PdhCollectQueryDataWithTime(PDH_HQUERY,LONGLONG *);
+PDH_STATUS WINAPI PdhGetCounterInfoA(PDH_HCOUNTER, BOOLEAN, LPDWORD, PPDH_COUNTER_INFO_A);
+PDH_STATUS WINAPI PdhGetCounterInfoW(PDH_HCOUNTER, BOOLEAN, LPDWORD, PPDH_COUNTER_INFO_W);
+#define    PdhGetCounterInfo WINELIB_NAME_AW(PdhGetCounterInfo)
+PDH_STATUS WINAPI PdhGetCounterTimeBase(PDH_HCOUNTER, LONGLONG *);
+PDH_STATUS WINAPI PdhGetFormattedCounterValue(PDH_HCOUNTER, DWORD, LPDWORD, PPDH_FMT_COUNTERVALUE);
+PDH_STATUS WINAPI PdhGetRawCounterValue(PDH_HCOUNTER, LPDWORD, PPDH_RAW_COUNTER);
+PDH_STATUS WINAPI PdhLookupPerfIndexByNameA(LPCSTR, LPCSTR, LPDWORD);
+PDH_STATUS WINAPI PdhLookupPerfIndexByNameW(LPCWSTR, LPCWSTR, LPDWORD);
+#define    PdhLookupPerfIndexByName WINELIB_NAME_AW(PdhLookupPerfIndexByName)
+PDH_STATUS WINAPI PdhLookupPerfNameByIndexA(LPCSTR, DWORD, LPSTR, LPDWORD);
+PDH_STATUS WINAPI PdhLookupPerfNameByIndexW(LPCWSTR, DWORD, LPWSTR, LPDWORD);
+#define    PdhLookupPerfNameByIndex WINELIB_NAME_AW(PdhLookupPerfNameByIndex)
+PDH_STATUS WINAPI PdhOpenQueryA(LPCSTR, DWORD_PTR, PDH_HQUERY *);
+PDH_STATUS WINAPI PdhOpenQueryW(LPCWSTR, DWORD_PTR, PDH_HQUERY *);
+#define    PdhOpenQuery WINELIB_NAME_AW(PdhOpenQuery)
+PDH_STATUS WINAPI PdhRemoveCounter(PDH_HCOUNTER);
+PDH_STATUS WINAPI PdhSetCounterScaleFactor(PDH_HCOUNTER, LONG);
+PDH_STATUS WINAPI PdhValidatePathA(LPCSTR);
+PDH_STATUS WINAPI PdhValidatePathW(LPCWSTR);
+#define    PdhValidatePath WINELIB_NAME_AW(PdhValidatePath)
+PDH_STATUS WINAPI PdhValidatePathExA(PDH_HLOG, LPCSTR);
+PDH_STATUS WINAPI PdhValidatePathExW(PDH_HLOG, LPCWSTR);
+#define    PdhValidatePathEx WINELIB_NAME_AW(PdhValidatePathEx)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PDH_H_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/pdhmsg.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/pdhmsg.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/pdhmsg.h	(revision 16410)
@@ -0,0 +1,38 @@
+/*
+ * Performance Data Helper
+ *
+ * Copyright 2007 Hans Leidekker
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _PDH_MSG_H_
+#define _PDH_MSG_H_
+
+#define PDH_CSTATUS_VALID_DATA          0x00000000
+#define PDH_CSTATUS_NO_MACHINE          0x800007d0
+#define PDH_MORE_DATA                   0x800007d2
+#define PDH_NO_DATA                     0x800007d5
+#define PDH_CSTATUS_NO_OBJECT           0xc0000bb8
+#define PDH_CSTATUS_NO_COUNTER          0xc0000bb9
+#define PDH_MEMORY_ALLOCATION_FAILURE   0xc0000bbb
+#define PDH_INVALID_HANDLE              0xc0000bbc
+#define PDH_INVALID_ARGUMENT            0xc0000bbd
+#define PDH_CSTATUS_BAD_COUNTERNAME     0xc0000bc0
+#define PDH_INSUFFICIENT_BUFFER         0xc0000bc2
+#define PDH_INVALID_DATA                0xc0000bc6
+#define PDH_STRING_NOT_FOUND            0xc0000bd4
+
+#endif /* _PDH_MSG_H_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/pktdef.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/pktdef.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/pktdef.h	(revision 16410)
@@ -0,0 +1,248 @@
+/*
+ * Copyright (C) 1991-1998 by LCS/Telegraphics
+ * Copyright (C) 2002 Patrik Stridvall
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_PKTDEF_H
+#define __WINE_PKTDEF_H
+
+/***********************************************************************
+ * How to use pktdef.h:
+ * 
+ * 1. Include wintab.h
+ * 2. if using just one packet format:
+ *    a. Define PACKETDATA and PACKETMODE as or'ed combinations of WTPKT bits
+ *       (use the PK_* identifiers).
+ *    b. Include pktdef.h.
+ *    c. The generated structure typedef will be called PACKET.  Use PACKETDATA
+ *       and PACKETMODE to fill in the LOGCONTEXT structure.
+ * 3. If using multiple packet formats, for each one:
+ *    a. Define PACKETNAME. Its text value will be a prefix for this packet's
+ *       parameters and names.
+ *    b. Define <PACKETNAME>PACKETDATA and <PACKETNAME>PACKETMODE similar to
+ *       2.a. above.
+ *    c. Include pktdef.h.
+ *    d. The generated structure typedef will be called
+ *       <PACKETNAME>PACKET. Compare with 2.c. above and example #2 below.
+ * 4. If using extension packet data, do the following additional steps
+ *    for each extension:
+ *    a. Before including pktdef.h, define <PACKETNAME>PACKET<EXTENSION>
+ *       as either PKEXT_ABSOLUTE or PKEXT_RELATIVE.
+ *    b. The generated structure typedef will contain a field for the
+ *       extension data.
+ *    c. Scan the WTI_EXTENSION categories to find the extension's
+ *       packet mask bit.
+ *    d. OR the packet mask bit with <PACKETNAME>PACKETDATA and use the
+ *       result in the lcPktData field of the LOGCONTEXT structure.
+ *    e. If <PACKETNAME>PACKET<EXTENSION> was PKEXT_RELATIVE, OR the
+ *       packet mask bit with <PACKETNAME>PACKETMODE and use the result
+ *       in the lcPktMode field of the LOGCONTEXT structure.
+ *
+ *
+ * Example #1.  -- single packet format
+ *
+ * #include <wintab.h>
+ * #define PACKETDATA PK_X | PK_Y | PK_BUTTONS  /@ x, y, buttons @/
+ * #define PACKETMODE PK_BUTTONS                /@ buttons relative mode @/
+ * #include <pktdef.h>
+ * ...
+ *     lc.lcPktData = PACKETDATA;
+ *     lc.lcPktMode = PACKETMODE;
+ * 
+ * Example #2.  -- multiple formats
+ * 
+ * #include <wintab.h>
+ * #define PACKETNAME     MOE
+ * #define MOEPACKETDATA  PK_X | PK_Y | PK_BUTTONS  /@ x, y, buttons @/
+ * #define MOEPACKETMODE  PK_BUTTONS                /@ buttons relative mode @/
+ * #include <pktdef.h>
+ * #define PACKETNAME       LARRY
+ * #define LARRYPACKETDATA  PK_Y | PK_Z | PK_BUTTONS  /@ y, z, buttons @/
+ * #define LARRYPACKETMODE  PK_BUTTONS                /@ buttons relative mode @/
+ * #include <pktdef.h>
+ * #define PACKETNAME       CURLY
+ * #define CURLYPACKETDATA  PK_X | PK_Z | PK_BUTTONS  /@ x, z, buttons @/
+ * #define CURLYPACKETMODE  PK_BUTTONS                /@ buttons relative mode @/
+ * #include <pktdef.h>
+ * ...
+ *     lcMOE.lcPktData = MOEPACKETDATA;
+ *     lcMOE.lcPktMode = MOEPACKETMODE;
+ * ...
+ *     lcLARRY.lcPktData = LARRYPACKETDATA;
+ *     lcLARRY.lcPktMode = LARRYPACKETMODE;
+ * ...
+ *     lcCURLY.lcPktData = CURLYPACKETDATA;
+ *     lcCURLY.lcPktMode = CURLYPACKETMODE;
+ *
+ * Example #3. -- extension packet data "XFOO".
+ *
+ * #include <wintab.h>
+ * #define PACKETDATA  PK_X | PK_Y | PK_BUTTONS  /@ x, y, buttons @/
+ * #define PACKETMODE  PK_BUTTONS                /@ buttons relative mode @/
+ * #define PACKETXFOO  PKEXT_ABSOLUTE            /@ XFOO absolute mode @/
+ * #include <pktdef.h>
+ * ...
+ * UINT ScanExts(UINT wTag)
+ * {
+ *     UINT i;
+ *     UINT wScanTag;
+ * 
+ *     /@ scan for wTag's info category. @/
+ *     for (i = 0; WTInfo(WTI_EXTENSIONS + i, EXT_TAG, &wScanTag); i++) {
+ *          if (wTag == wScanTag) {
+ *             /@ return category offset from WTI_EXTENSIONS. @/
+ *             return i;
+ *         }
+ *     }
+ *     /@ return error code. @/
+ *     return 0xFFFF;
+ * }
+ * ...
+ *     lc.lcPktData = PACKETDATA;
+ *     lc.lcPktMode = PACKETMODE;
+ * #ifdef PACKETXFOO
+ *     categoryXFOO = ScanExts(WTX_XFOO);
+ *     WTInfo(WTI_EXTENSIONS + categoryXFOO, EXT_MASK, &maskXFOO);
+ *    lc.lcPktData |= maskXFOO;
+ * #if PACKETXFOO == PKEXT_RELATIVE
+ *     lc.lcPktMode |= maskXFOO;
+ * #endif
+ * #endif
+ *    WTOpen(hWnd, &lc, TRUE);
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+#ifndef PACKETNAME
+/* if no packet name prefix */
+# define __PFX(x)    x
+# define __IFX(x,y)  x ## y
+#else
+/* add prefixes and infixes to packet format names */
+# define __PFX(x)       __PFX2(PACKETNAME,x)
+# define __PFX2(p,x)    __PFX3(p,x)
+# define __PFX3(p,x)    p ## x
+# define __IFX(x,y)     __IFX2(x,PACKETNAME,y)
+# define __IFX2(x,i,y)  __IFX3(x,i,y)
+# define __IFX3(x,i,y)  x ## i ## y
+#endif
+
+#define __SFX2(x,s)  __SFX3(x,s)
+#define __SFX3(x,s)  x ## s
+
+#define __TAG  __IFX(tag,PACKET)
+#define __TYPES \
+  __PFX(PACKET), * __IFX(P,PACKET), \
+  * __IFX(NP,PACKET), * __IFX(LP,PACKET)
+
+#define __DATA    (__PFX(PACKETDATA))
+#define __MODE    (__PFX(PACKETMODE))
+#define __EXT(x)  __SFX2(__PFX(PACKET),x)
+
+typedef struct __TAG {
+#if (__DATA & PK_CONTEXT)
+    HCTX pkContext;
+#endif
+#if (__DATA & PK_STATUS)
+    UINT pkStatus;
+#endif
+#if (__DATA & PK_TIME)
+    DWORD pkTime;
+#endif
+#if (__DATA & PK_CHANGED)
+    WTPKT pkChanged;
+#endif
+#if (__DATA & PK_SERIAL_NUMBER)
+    UINT pkSerialNumber;
+#endif
+#if (__DATA & PK_CURSOR)
+    UINT pkCursor;
+#endif
+#if (__DATA & PK_BUTTONS)
+    DWORD pkButtons;
+#endif
+#if (__DATA & PK_X)
+    LONG pkX;
+#endif
+#if (__DATA & PK_Y)
+    LONG pkY;
+#endif
+#if (__DATA & PK_Z)
+    LONG pkZ;
+#endif
+#if (__DATA & PK_NORMAL_PRESSURE)
+# if (__MODE & PK_NORMAL_PRESSURE)
+    /* relative */
+    int pkNormalPressure;
+# else
+    /* absolute */
+    UINT pkNormalPressure;
+# endif
+#endif
+#if (__DATA & PK_TANGENT_PRESSURE)
+# if (__MODE & PK_TANGENT_PRESSURE)
+    /* relative */
+    int pkTangentPressure;
+# else
+    /* absolute */
+    UINT pkTangentPressure;
+# endif
+#endif
+#if (__DATA & PK_ORIENTATION)
+    ORIENTATION pkOrientation;
+#endif
+#if (__DATA & PK_ROTATION)
+    ROTATION pkRotation;  /* 1.1 */
+#endif
+
+#ifndef NOWTEXTENSIONS
+    /* extensions begin here. */
+
+#if (__EXT(FKEYS) == PKEXT_RELATIVE) || (__EXT(FKEYS) == PKEXT_ABSOLUTE)
+    UINT pkFKeys;
+#endif
+#if (__EXT(TILT) == PKEXT_RELATIVE) || (__EXT(TILT) == PKEXT_ABSOLUTE)
+    TILT pkTilt;
+#endif
+
+#endif
+
+} __TYPES;
+
+#undef PACKETNAME
+#undef __TAG
+#undef __TAG2
+#undef __TYPES
+#undef __TYPES2
+#undef __DATA
+#undef __MODE
+#undef __PFX
+#undef __PFX2
+#undef __PFX3
+#undef __IFX
+#undef __IFX2
+#undef __IFX3
+#undef __SFX2
+#undef __SFX3
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif /* defined(__WINE_PKTDEF_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/poppack.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/poppack.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/poppack.h	(revision 16410)
@@ -0,0 +1,263 @@
+/*
+ * Copyright (C) 1999 Patrik Stridvall
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#if defined(__WINE_PSHPACK_H15)
+#  ifndef __WINE_INTERNAL_POPPACK
+#    undef __WINE_PSHPACK_H15
+#  endif
+/* Depth == 15 */
+
+#  if __WINE_PSHPACK_H14 == 1
+#    pragma pack(1)
+#  elif __WINE_PSHPACK_H14 == 2
+#    pragma pack(2)
+#  elif __WINE_PSHPACK_H14 == 8
+#    pragma pack(8)
+#  else
+#    pragma pack(4)
+#  endif
+
+#elif defined(__WINE_PSHPACK_H14)
+#  ifndef __WINE_INTERNAL_POPPACK
+#    undef __WINE_PSHPACK_H14
+#  endif
+/* Depth == 14 */
+
+#  if __WINE_PSHPACK_H13 == 1
+#    pragma pack(1)
+#  elif __WINE_PSHPACK_H13 == 2
+#    pragma pack(2)
+#  elif __WINE_PSHPACK_H13 == 8
+#    pragma pack(8)
+#  else
+#    pragma pack(4)
+#  endif
+
+#elif defined(__WINE_PSHPACK_H13)
+#  ifndef __WINE_INTERNAL_POPPACK
+#    undef __WINE_PSHPACK_H13
+#  endif
+/* Depth == 13 */
+
+#  if __WINE_PSHPACK_H12 == 1
+#    pragma pack(1)
+#  elif __WINE_PSHPACK_H12 == 2
+#    pragma pack(2)
+#  elif __WINE_PSHPACK_H12 == 8
+#    pragma pack(8)
+#  else
+#    pragma pack(4)
+#  endif
+
+#elif defined(__WINE_PSHPACK_H12)
+#  ifndef __WINE_INTERNAL_POPPACK
+#    undef __WINE_PSHPACK_H12
+#  endif
+/* Depth == 12 */
+
+#  if __WINE_PSHPACK_H11 == 1
+#    pragma pack(1)
+#  elif __WINE_PSHPACK_H11 == 2
+#    pragma pack(2)
+#  elif __WINE_PSHPACK_H11 == 8
+#    pragma pack(8)
+#  else
+#    pragma pack(4)
+#  endif
+
+#elif defined(__WINE_PSHPACK_H11)
+#  ifndef __WINE_INTERNAL_POPPACK
+#    undef __WINE_PSHPACK_H11
+#  endif
+/* Depth == 11 */
+
+#  if __WINE_PSHPACK_H10 == 1
+#    pragma pack(1)
+#  elif __WINE_PSHPACK_H10 == 2
+#    pragma pack(2)
+#  elif __WINE_PSHPACK_H10 == 8
+#    pragma pack(8)
+#  else
+#    pragma pack(4)
+#  endif
+
+#elif defined(__WINE_PSHPACK_H10)
+#  ifndef __WINE_INTERNAL_POPPACK
+#    undef __WINE_PSHPACK_H10
+#  endif
+/* Depth == 10 */
+
+#  if __WINE_PSHPACK_H9 == 1
+#    pragma pack(1)
+#  elif __WINE_PSHPACK_H9 == 2
+#    pragma pack(2)
+#  elif __WINE_PSHPACK_H9 == 8
+#    pragma pack(8)
+#  else
+#    pragma pack(4)
+#  endif
+
+#elif defined(__WINE_PSHPACK_H9)
+#  ifndef __WINE_INTERNAL_POPPACK
+#    undef __WINE_PSHPACK_H9
+#  endif
+/* Depth == 9 */
+
+#  if __WINE_PSHPACK_H8 == 1
+#    pragma pack(1)
+#  elif __WINE_PSHPACK_H8 == 2
+#    pragma pack(2)
+#  elif __WINE_PSHPACK_H8 == 8
+#    pragma pack(8)
+#  else
+#    pragma pack(4)
+#  endif
+
+#elif defined(__WINE_PSHPACK_H8)
+#  ifndef __WINE_INTERNAL_POPPACK
+#    undef __WINE_PSHPACK_H8
+#  endif
+/* Depth == 8 */
+
+#  if __WINE_PSHPACK_H7 == 1
+#    pragma pack(1)
+#  elif __WINE_PSHPACK_H7 == 2
+#    pragma pack(2)
+#  elif __WINE_PSHPACK_H7 == 8
+#    pragma pack(8)
+#  else
+#    pragma pack(4)
+#  endif
+
+#elif defined(__WINE_PSHPACK_H7)
+#  ifndef __WINE_INTERNAL_POPPACK
+#    undef __WINE_PSHPACK_H7
+#  endif
+/* Depth == 7 */
+
+#  if __WINE_PSHPACK_H6 == 1
+#    pragma pack(1)
+#  elif __WINE_PSHPACK_H6 == 2
+#    pragma pack(2)
+#  elif __WINE_PSHPACK_H6 == 8
+#    pragma pack(8)
+#  else
+#    pragma pack(4)
+#  endif
+
+#elif defined(__WINE_PSHPACK_H6)
+#  ifndef __WINE_INTERNAL_POPPACK
+#    undef __WINE_PSHPACK_H6
+#  endif
+/* Depth == 6 */
+
+#  if __WINE_PSHPACK_H5 == 1
+#    pragma pack(1)
+#  elif __WINE_PSHPACK_H5 == 2
+#    pragma pack(2)
+#  elif __WINE_PSHPACK_H5 == 8
+#    pragma pack(8)
+#  else
+#    pragma pack(4)
+#  endif
+
+#elif defined(__WINE_PSHPACK_H5)
+#  ifndef __WINE_INTERNAL_POPPACK
+#    undef __WINE_PSHPACK_H5
+#  endif
+/* Depth == 5 */
+
+#  if __WINE_PSHPACK_H4 == 1
+#    pragma pack(1)
+#  elif __WINE_PSHPACK_H4 == 2
+#    pragma pack(2)
+#  elif __WINE_PSHPACK_H4 == 8
+#    pragma pack(8)
+#  else
+#    pragma pack(4)
+#  endif
+
+#elif defined(__WINE_PSHPACK_H4)
+#  ifndef __WINE_INTERNAL_POPPACK
+#    undef __WINE_PSHPACK_H4
+#  endif
+/* Depth == 4 */
+
+#  if __WINE_PSHPACK_H3 == 1
+#    pragma pack(1)
+#  elif __WINE_PSHPACK_H3 == 2
+#    pragma pack(2)
+#  elif __WINE_PSHPACK_H3 == 8
+#    pragma pack(8)
+#  else
+#    pragma pack(4)
+#  endif
+
+#elif defined(__WINE_PSHPACK_H3)
+#  ifndef __WINE_INTERNAL_POPPACK
+#    undef __WINE_PSHPACK_H3
+#  endif
+/* Depth == 3 */
+
+#  if __WINE_PSHPACK_H2 == 1
+#    pragma pack(1)
+#  elif __WINE_PSHPACK_H2 == 2
+#    pragma pack(2)
+#  elif __WINE_PSHPACK_H2 == 8
+#    pragma pack(8)
+#  else
+#    pragma pack(4)
+#  endif
+
+#elif defined(__WINE_PSHPACK_H2)
+#  ifndef __WINE_INTERNAL_POPPACK
+#    undef __WINE_PSHPACK_H2
+#  endif
+/* Depth == 2 */
+
+#  if __WINE_PSHPACK_H == 1
+#    pragma pack(1)
+#  elif __WINE_PSHPACK_H == 2
+#    pragma pack(2)
+#  elif __WINE_PSHPACK_H == 8
+#    pragma pack(8)
+#  else
+#    pragma pack(4)
+#  endif
+
+#elif defined(__WINE_PSHPACK_H)
+#  ifndef __WINE_INTERNAL_POPPACK
+#    undef __WINE_PSHPACK_H
+#  endif
+/* Depth == 1 */
+
+#  if defined(__SUNPRO_CC)
+#    warning "Assuming a default alignment of 4"
+#    pragma pack(4)
+#  else
+#    pragma pack()
+#  endif
+
+#else
+/* Depth == 0 ! */
+
+#error "Popping alignment isn't possible since no alignment has been pushed"
+
+#endif
+
+#undef __WINE_INTERNAL_POPPACK
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/powrprof.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/powrprof.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/powrprof.h	(revision 16410)
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2005 Benjamin Cutler
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_POWRPROF_H
+#define __WINE_POWRPROF_H 1
+
+#define EnableSysTrayBatteryMeter	0x01
+#define EnableMultiBatteryDisplay	0x02
+#define EnablePasswordLogon		0x04
+#define EnableWakeOnRing		0x08
+#define EnableVideoDimDisplay		0x10
+
+typedef struct _GLOBAL_MACHINE_POWER_POLICY {
+	ULONG Revision;
+	SYSTEM_POWER_STATE LidOpenWakeAc;
+	SYSTEM_POWER_STATE LidOpenWakeDc;
+	ULONG BroadcastCapacityResolution;
+} GLOBAL_MACHINE_POWER_POLICY, 
+*PGLOBAL_MACHINE_POWER_POLICY;
+
+typedef struct _GLOBAL_USER_POWER_POLICY {
+	ULONG Revision;
+	POWER_ACTION_POLICY PowerButtonAc;
+	POWER_ACTION_POLICY PowerButtonDc;
+	POWER_ACTION_POLICY SleepButtonAc;
+	POWER_ACTION_POLICY SleepButtonDc;
+	POWER_ACTION_POLICY LidCloseAc;
+	POWER_ACTION_POLICY LidCloseDc;
+	SYSTEM_POWER_LEVEL DischargePolicy[NUM_DISCHARGE_POLICIES];
+	ULONG GlobalFlags;
+} GLOBAL_USER_POWER_POLICY, 
+*PGLOBAL_USER_POWER_POLICY;
+
+typedef struct _GLOBAL_POWER_POLICY {
+	GLOBAL_USER_POWER_POLICY user;
+	GLOBAL_MACHINE_POWER_POLICY mach;
+} GLOBAL_POWER_POLICY, 
+*PGLOBAL_POWER_POLICY;
+
+typedef struct _MACHINE_POWER_POLICY {
+	ULONG Revision;
+	SYSTEM_POWER_STATE MinSleepAc;
+	SYSTEM_POWER_STATE MinSleepDc;
+	SYSTEM_POWER_STATE ReducedLatencySleepAc;
+	SYSTEM_POWER_STATE ReducedLatencySleepDc;
+	ULONG DozeTimeoutAc;
+	ULONG DozeTimeoutDc;
+	ULONG DozeS4TimeoutAc;
+	ULONG DozeS4TimeoutDc;
+	UCHAR MinThrottleAc;
+	UCHAR MinThrottleDc;
+	UCHAR pad1[2];
+	POWER_ACTION_POLICY OverThrottledAc;
+	POWER_ACTION_POLICY OverThrottledDc;
+} MACHINE_POWER_POLICY, 
+*PMACHINE_POWER_POLICY;
+
+typedef struct _MACHINE_PROCESSOR_POWER_POLICY {
+	ULONG Revision;
+	PROCESSOR_POWER_POLICY ProcessorPolicyAc;
+	PROCESSOR_POWER_POLICY ProcessorPolicyDc;
+} MACHINE_PROCESSOR_POWER_POLICY, 
+*PMACHINE_PROCESSOR_POWER_POLICY;
+
+typedef struct _USER_POWER_POLICY {
+	ULONG Revision;
+	POWER_ACTION_POLICY IdleAc;
+	POWER_ACTION_POLICY IdleDc;
+	ULONG IdleTimeoutAc;
+	ULONG IdleTimeoutDc;
+	UCHAR IdleSensitivityAc;
+	UCHAR IdleSensitivityDc;
+	UCHAR ThrottlePolicyAc;
+	UCHAR ThrottlePolicyDc;
+	SYSTEM_POWER_STATE MaxSleepAc;
+	SYSTEM_POWER_STATE MaxSleepDc;
+	ULONG Reserved[2];
+	ULONG VideoTimeoutAc;
+	ULONG VideoTimeoutDc;
+	ULONG SpindownTimeoutAc;
+	ULONG SpindownTimeoutDc;
+	BOOLEAN OptimizeForPowerAc;
+	BOOLEAN OptimizeForPowerDc;
+	UCHAR FanThrottleToleranceAc;
+	UCHAR FanThrottleToleranceDc;
+	UCHAR ForcedThrottleAc;
+	UCHAR ForcedThrottleDc;
+} USER_POWER_POLICY, 
+*PUSER_POWER_POLICY;
+
+typedef struct _POWER_POLICY {
+	USER_POWER_POLICY user;
+	MACHINE_POWER_POLICY mach;
+} POWER_POLICY, 
+*PPOWER_POLICY;
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef BOOLEAN (CALLBACK* PWRSCHEMESENUMPROC)(UINT, DWORD, LPWSTR, DWORD, LPWSTR, PPOWER_POLICY, LPARAM);
+
+NTSTATUS WINAPI CallNtPowerInformation(POWER_INFORMATION_LEVEL, PVOID, ULONG, PVOID, ULONG);
+BOOLEAN WINAPI CanUserWritePwrScheme(VOID);
+BOOLEAN WINAPI DeletePwrScheme(UINT);
+BOOLEAN WINAPI EnumPwrSchemes(PWRSCHEMESENUMPROC, LPARAM);
+BOOLEAN WINAPI GetActivePwrScheme(PUINT);
+BOOLEAN WINAPI GetCurrentPowerPolicies(PGLOBAL_POWER_POLICY, PPOWER_POLICY);
+BOOLEAN WINAPI GetPwrCapabilities(PSYSTEM_POWER_CAPABILITIES);
+BOOLEAN WINAPI GetPwrDiskSpindownRange(PUINT, PUINT);
+BOOLEAN WINAPI IsAdminOverrideActive(PADMINISTRATOR_POWER_POLICY);
+BOOLEAN WINAPI IsPwrHibernateAllowed(VOID);
+BOOLEAN WINAPI IsPwrShutdownAllowed(VOID);
+BOOLEAN WINAPI IsPwrSuspendAllowed(VOID);
+BOOLEAN WINAPI ReadGlobalPwrPolicy(PGLOBAL_POWER_POLICY);
+BOOLEAN WINAPI ReadProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY);
+BOOLEAN WINAPI ReadPwrScheme(UINT, PPOWER_POLICY);
+BOOLEAN WINAPI SetActivePwrScheme(UINT, PGLOBAL_POWER_POLICY, PPOWER_POLICY);
+BOOLEAN WINAPI SetSuspendState(BOOLEAN, BOOLEAN, BOOLEAN);
+BOOLEAN WINAPI WriteGlobalPwrPolicy(PGLOBAL_POWER_POLICY);
+BOOLEAN WINAPI WriteProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY);
+BOOLEAN WINAPI WritePwrScheme(PUINT, LPWSTR, LPWSTR, PPOWER_POLICY);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _POWRPROF_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/profinfo.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/profinfo.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/profinfo.h	(revision 16410)
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2006 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_PROFINFO_H
+#define __WINE_PROFINFO_H
+
+typedef struct _PROFILEINFOA {
+    DWORD dwSize;
+    DWORD dwFlags;
+    LPSTR lpUserName;
+    LPSTR lpProfilePath;
+    LPSTR lpDefaultPath;
+    LPSTR lpServerName;
+    LPSTR lpPolicyPath;
+    HANDLE hProfile;
+} PROFILEINFOA, *LPPROFILEINFOA;
+
+typedef struct _PROFILEINFOW {
+    DWORD dwSize;
+    DWORD dwFlags;
+    LPWSTR lpUserName;
+    LPWSTR lpProfilePath;
+    LPWSTR lpDefaultPath;
+    LPWSTR lpServerName;
+    LPWSTR lpPolicyPath;
+    HANDLE hProfile;
+} PROFILEINFOW, *LPPROFILEINFOW;
+
+DECL_WINELIB_TYPE_AW(PROFILEINFO)
+DECL_WINELIB_TYPE_AW(LPPROFILEINFO)
+
+#endif /* __WINE_PROFINFO_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/propidl.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/propidl.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/propidl.h	(revision 16410)
@@ -0,0 +1,999 @@
+/*** Autogenerated by WIDL 1.1.10 from ../../../dlls/wined3d/../../include/propidl.idl - Do not edit ***/
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef __WIDL_PROPIDL_H
+#define __WIDL_PROPIDL_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <objidl.h>
+#include <oaidl.h>
+#ifdef PID_DICTIONARY
+#undef PID_DICTIONARY
+#endif
+#ifdef PID_CODEPAGE
+#undef PID_CODEPAGE
+#endif
+#ifdef PID_SECURITY
+#undef PID_SECURITY
+#endif
+#ifndef __IEnumSTATPROPSTG_FWD_DEFINED__
+#define __IEnumSTATPROPSTG_FWD_DEFINED__
+typedef interface IEnumSTATPROPSTG IEnumSTATPROPSTG;
+#endif
+
+#ifndef __IEnumSTATPROPSETSTG_FWD_DEFINED__
+#define __IEnumSTATPROPSETSTG_FWD_DEFINED__
+typedef interface IEnumSTATPROPSETSTG IEnumSTATPROPSETSTG;
+#endif
+
+#ifndef __IPropertyStorage_FWD_DEFINED__
+#define __IPropertyStorage_FWD_DEFINED__
+typedef interface IPropertyStorage IPropertyStorage;
+#endif
+
+typedef IPropertyStorage *LPPROPERTYSTORAGE;
+#define PROPSETFLAG_DEFAULT (0)
+
+#define PROPSETFLAG_NONSIMPLE (1)
+
+#define PROPSETFLAG_ANSI (2)
+
+#define PROPSETFLAG_UNBUFFERED (4)
+
+#define PROPSETFLAG_CASE_SENSITIVE (8)
+
+#define PROPSET_BEHAVIOR_CASE_SENSITIVE (1)
+
+#define PID_DICTIONARY (0x0)
+
+#define PID_CODEPAGE (0x1)
+
+#define PID_FIRST_USABLE (0x2)
+
+#define PID_FIRST_NAME_DEFAULT (0xfff)
+
+#define PID_LOCALE (0x80000000)
+
+#define PID_MODIFY_TIME (0x80000001)
+
+#define PID_SECURITY (0x80000002)
+
+#define PID_BEHAVIOR (0x80000003)
+
+#define PID_ILLEGAL (0xffffffff)
+
+#define PID_MIN_READONLY (0x80000000)
+
+#define PID_MAX_READONLY (0xbfffffff)
+
+typedef struct tagPROPVARIANT PROPVARIANT;
+typedef struct tagCAUB {
+    ULONG cElems;
+    unsigned char *pElems;
+} CAUB;
+typedef struct tagCAI {
+    ULONG cElems;
+    short *pElems;
+} CAI;
+typedef struct tagCAUI {
+    ULONG cElems;
+    USHORT *pElems;
+} CAUI;
+typedef struct tagCAL {
+    ULONG cElems;
+    long *pElems;
+} CAL;
+typedef struct tagCAUL {
+    ULONG cElems;
+    ULONG *pElems;
+} CAUL;
+typedef struct tagCAFLT {
+    ULONG cElems;
+    float *pElems;
+} CAFLT;
+typedef struct tagCADBL {
+    ULONG cElems;
+    double *pElems;
+} CADBL;
+typedef struct tagCACY {
+    ULONG cElems;
+    CY *pElems;
+} CACY;
+typedef struct tagCADATE {
+    ULONG cElems;
+    DATE *pElems;
+} CADATE;
+typedef struct tagCABSTR {
+    ULONG cElems;
+    BSTR *pElems;
+} CABSTR;
+typedef struct tagCABSTRBLOB {
+    ULONG cElems;
+    BSTRBLOB *pElems;
+} CABSTRBLOB;
+typedef struct tagCABOOL {
+    ULONG cElems;
+    VARIANT_BOOL *pElems;
+} CABOOL;
+typedef struct tagCASCODE {
+    ULONG cElems;
+    SCODE *pElems;
+} CASCODE;
+typedef struct tagCAPROPVARIANT {
+    ULONG cElems;
+    PROPVARIANT *pElems;
+} CAPROPVARIANT;
+typedef struct tagCAH {
+    ULONG cElems;
+    LARGE_INTEGER *pElems;
+} CAH;
+typedef struct tagCAUH {
+    ULONG cElems;
+    ULARGE_INTEGER *pElems;
+} CAUH;
+typedef struct tagCALPSTR {
+    ULONG cElems;
+    LPSTR *pElems;
+} CALPSTR;
+typedef struct tagCALPWSTR {
+    ULONG cElems;
+    LPWSTR *pElems;
+} CALPWSTR;
+typedef struct tagCAFILETIME {
+    ULONG cElems;
+    FILETIME *pElems;
+} CAFILETIME;
+typedef struct tagCACLIPDATA {
+    ULONG cElems;
+    CLIPDATA *pElems;
+} CACLIPDATA;
+typedef struct tagCACLSID {
+    ULONG cElems;
+    CLSID *pElems;
+} CACLSID;
+struct tagPROPVARIANT {
+    VARTYPE vt;
+    WORD wReserved1;
+    WORD wReserved2;
+    WORD wReserved3;
+    union {
+        char cVal;
+        UCHAR bVal;
+        short iVal;
+        USHORT uiVal;
+        VARIANT_BOOL boolVal;
+        long lVal;
+        ULONG ulVal;
+        float fltVal;
+        SCODE scode;
+        LARGE_INTEGER hVal;
+        ULARGE_INTEGER uhVal;
+        double dblVal;
+        CY cyVal;
+        DATE date;
+        FILETIME filetime;
+        CLSID *puuid;
+        BLOB blob;
+        CLIPDATA *pclipdata;
+        IStream *pStream;
+        IStorage *pStorage;
+        BSTR bstrVal;
+        BSTRBLOB bstrblobVal;
+        LPSTR pszVal;
+        LPWSTR pwszVal;
+        CAUB caub;
+        CAI cai;
+        CAUI caui;
+        CABOOL cabool;
+        CAL cal;
+        CAUL caul;
+        CAFLT caflt;
+        CASCODE cascode;
+        CAH cah;
+        CAUH cauh;
+        CADBL cadbl;
+        CACY cacy;
+        CADATE cadate;
+        CAFILETIME cafiletime;
+        CACLSID cauuid;
+        CACLIPDATA caclipdata;
+        CABSTR cabstr;
+        CABSTRBLOB cabstrblob;
+        CALPSTR calpstr;
+        CALPWSTR calpwstr;
+        CAPROPVARIANT capropvar;
+        LPSAFEARRAY parray;
+        CHAR *pcVal;
+        UCHAR *pbVal;
+        SHORT *piVal;
+        USHORT *puiVal;
+        LONG *plVal;
+        ULONG *pulVal;
+        INT *pintVal;
+        UINT *puintVal;
+        FLOAT *pfltVal;
+        DOUBLE *pdblVal;
+        VARIANT_BOOL *pboolVal;
+        DECIMAL *pdecVal;
+        SCODE *pscode;
+        CY *pcyVal;
+        DATE *pdate;
+        BSTR *pbstrVal;
+        IUnknown **ppunkVal;
+        IDispatch **ppdispVal;
+        LPSAFEARRAY *pparray;
+        PROPVARIANT *pvarVal;
+    } DUMMYUNIONNAME;
+};
+
+typedef struct tagPROPVARIANT *LPPROPVARIANT;
+#define REFPROPVARIANT const PROPVARIANT *
+#define PIDDI_THUMBNAIL 0x00000002L /* VT_BLOB */
+
+#define PIDSI_TITLE        0x00000002L /* VT_LPSTR */
+#define PIDSI_SUBJECT      0x00000003L /* VT_LPSTR */
+#define PIDSI_AUTHOR       0x00000004L /* VT_LPSTR */
+#define PIDSI_KEYWORDS     0x00000005L /* VT_LPSTR */
+#define PIDSI_COMMENTS     0x00000006L /* VT_LPSTR */
+#define PIDSI_TEMPLATE     0x00000007L /* VT_LPSTR */
+#define PIDSI_LASTAUTHOR   0x00000008L /* VT_LPSTR */
+#define PIDSI_REVNUMBER    0x00000009L /* VT_LPSTR */
+#define PIDSI_EDITTIME     0x0000000AL /* VT_FILETIME (UTC) */
+#define PIDSI_LASTPRINTED  0x0000000BL /* VT_FILETIME (UTC) */
+#define PIDSI_CREATE_DTM   0x0000000CL /* VT_FILETIME (UTC) */
+#define PIDSI_LASTSAVE_DTM 0x0000000DL /* VT_FILETIME (UTC) */
+#define PIDSI_PAGECOUNT    0x0000000EL /* VT_I4 */
+#define PIDSI_WORDCOUNT    0x0000000FL /* VT_I4 */
+#define PIDSI_CHARCOUNT    0x00000010L /* VT_I4 */
+#define PIDSI_THUMBNAIL    0x00000011L /* VT_CF */
+#define PIDSI_APPNAME      0x00000012L /* VT_LPSTR */
+#define PIDSI_DOC_SECURITY 0x00000013L /* VT_I4 */
+
+#define PIDDSI_CATEGORY    0x00000002L /* VT_LPSTR */
+#define PIDDSI_PRESFORMAT  0x00000003L /* VT_LPSTR */
+#define PIDDSI_BYTECOUNT   0x00000004L /* VT_I4 */
+#define PIDDSI_LINECOUNT   0x00000005L /* VT_I4 */
+#define PIDDSI_PARCOUNT    0x00000006L /* VT_I4 */
+#define PIDDSI_SLIDECOUNT  0x00000007L /* VT_I4 */
+#define PIDDSI_NOTECOUNT   0x00000008L /* VT_I4 */
+#define PIDDSI_HIDDENCOUNT 0x00000009L /* VT_I4 */
+#define PIDDSI_MMCLIPCOUNT 0x0000000AL /* VT_I4 */
+#define PIDDSI_SCALE       0x0000000BL /* VT_BOOL */
+#define PIDDSI_HEADINGPAIR 0x0000000CL /* VT_VARIANT|VT_VECTOR */
+#define PIDDSI_DOCPARTS    0x0000000DL /* VT_LPSTR|VT_VECTOR */
+#define PIDDSI_MANAGER     0x0000000EL /* VT_LPSTR */
+#define PIDDSI_COMPANY     0x0000000FL /* VT_LPSTR */
+#define PIDDSI_LINKSDIRTY  0x00000010L /* VT_B0OL */
+#define PRSPEC_INVALID (0xffffffff)
+
+#define PRSPEC_LPWSTR (0)
+
+#define PRSPEC_PROPID (1)
+
+typedef struct tagPROPSPEC {
+    ULONG ulKind;
+    union {
+        PROPID propid;
+        LPOLESTR lpwstr;
+    } DUMMYUNIONNAME;
+} PROPSPEC;
+typedef struct tagSTATPROPSTG {
+    LPOLESTR lpwstrName;
+    PROPID propid;
+    VARTYPE vt;
+} STATPROPSTG;
+/* Macros for dwOSVersion member of STATPROPSETSTG */
+#define PROPSETHDR_OSVER_KIND(dwOSVer)  HIWORD((dwOSVer))
+#define PROPSETHDR_OSVER_MAJOR(dwOSVer) LOBYTE(LOWORD((dwOSVer)))
+#define PROPSETHDR_OSVER_MINOR(dwOSVer) HIBYTE(LOWORD((dwOSVer)))
+#define PROPSETHDR_OSVERSION_UNKNOWN    0xffffffff
+typedef struct tagSTATPROPSETSTG {
+    FMTID fmtid;
+    CLSID clsid;
+    DWORD grfFlags;
+    FILETIME mtime;
+    FILETIME ctime;
+    FILETIME atime;
+    DWORD dwOSVersion;
+} STATPROPSETSTG;
+/*****************************************************************************
+ * IPropertyStorage interface
+ */
+#ifndef __IPropertyStorage_INTERFACE_DEFINED__
+#define __IPropertyStorage_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IPropertyStorage, 0x00000138, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IPropertyStorage : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE ReadMultiple(
+        ULONG cpspec,
+        const PROPSPEC rgpspec[],
+        PROPVARIANT rgpropvar[]) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE WriteMultiple(
+        ULONG cpspec,
+        const PROPSPEC rgpspec[],
+        const PROPVARIANT rgpropvar[],
+        PROPID propidNameFirst) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DeleteMultiple(
+        ULONG cpspec,
+        const PROPSPEC rgpspec[]) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ReadPropertyNames(
+        ULONG cpropid,
+        const PROPID rgpropid[],
+        LPOLESTR rglpwstrName[]) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE WritePropertyNames(
+        ULONG cpropid,
+        const PROPID rgpropid[],
+        const LPOLESTR rglpwstrName[]) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DeletePropertyNames(
+        ULONG cpropid,
+        const PROPID rgpropid[]) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Commit(
+        DWORD grfCommitFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Revert(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Enum(
+        IEnumSTATPROPSTG **ppenum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetTimes(
+        const FILETIME *pctime,
+        const FILETIME *patime,
+        const FILETIME *pmtime) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetClass(
+        REFCLSID clsid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Stat(
+        STATPROPSETSTG *statpsstg) = 0;
+
+};
+#else
+typedef struct IPropertyStorageVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IPropertyStorage* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IPropertyStorage* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IPropertyStorage* This);
+
+    /*** IPropertyStorage methods ***/
+    HRESULT (STDMETHODCALLTYPE *ReadMultiple)(
+        IPropertyStorage* This,
+        ULONG cpspec,
+        const PROPSPEC rgpspec[],
+        PROPVARIANT rgpropvar[]);
+
+    HRESULT (STDMETHODCALLTYPE *WriteMultiple)(
+        IPropertyStorage* This,
+        ULONG cpspec,
+        const PROPSPEC rgpspec[],
+        const PROPVARIANT rgpropvar[],
+        PROPID propidNameFirst);
+
+    HRESULT (STDMETHODCALLTYPE *DeleteMultiple)(
+        IPropertyStorage* This,
+        ULONG cpspec,
+        const PROPSPEC rgpspec[]);
+
+    HRESULT (STDMETHODCALLTYPE *ReadPropertyNames)(
+        IPropertyStorage* This,
+        ULONG cpropid,
+        const PROPID rgpropid[],
+        LPOLESTR rglpwstrName[]);
+
+    HRESULT (STDMETHODCALLTYPE *WritePropertyNames)(
+        IPropertyStorage* This,
+        ULONG cpropid,
+        const PROPID rgpropid[],
+        const LPOLESTR rglpwstrName[]);
+
+    HRESULT (STDMETHODCALLTYPE *DeletePropertyNames)(
+        IPropertyStorage* This,
+        ULONG cpropid,
+        const PROPID rgpropid[]);
+
+    HRESULT (STDMETHODCALLTYPE *Commit)(
+        IPropertyStorage* This,
+        DWORD grfCommitFlags);
+
+    HRESULT (STDMETHODCALLTYPE *Revert)(
+        IPropertyStorage* This);
+
+    HRESULT (STDMETHODCALLTYPE *Enum)(
+        IPropertyStorage* This,
+        IEnumSTATPROPSTG **ppenum);
+
+    HRESULT (STDMETHODCALLTYPE *SetTimes)(
+        IPropertyStorage* This,
+        const FILETIME *pctime,
+        const FILETIME *patime,
+        const FILETIME *pmtime);
+
+    HRESULT (STDMETHODCALLTYPE *SetClass)(
+        IPropertyStorage* This,
+        REFCLSID clsid);
+
+    HRESULT (STDMETHODCALLTYPE *Stat)(
+        IPropertyStorage* This,
+        STATPROPSETSTG *statpsstg);
+
+    END_INTERFACE
+} IPropertyStorageVtbl;
+interface IPropertyStorage {
+    CONST_VTBL IPropertyStorageVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IPropertyStorage_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IPropertyStorage_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IPropertyStorage_Release(This) (This)->lpVtbl->Release(This)
+/*** IPropertyStorage methods ***/
+#define IPropertyStorage_ReadMultiple(This,cpspec,rgpspec,rgpropvar) (This)->lpVtbl->ReadMultiple(This,cpspec,rgpspec,rgpropvar)
+#define IPropertyStorage_WriteMultiple(This,cpspec,rgpspec,rgpropvar,propidNameFirst) (This)->lpVtbl->WriteMultiple(This,cpspec,rgpspec,rgpropvar,propidNameFirst)
+#define IPropertyStorage_DeleteMultiple(This,cpspec,rgpspec) (This)->lpVtbl->DeleteMultiple(This,cpspec,rgpspec)
+#define IPropertyStorage_ReadPropertyNames(This,cpropid,rgpropid,rglpwstrName) (This)->lpVtbl->ReadPropertyNames(This,cpropid,rgpropid,rglpwstrName)
+#define IPropertyStorage_WritePropertyNames(This,cpropid,rgpropid,rglpwstrName) (This)->lpVtbl->WritePropertyNames(This,cpropid,rgpropid,rglpwstrName)
+#define IPropertyStorage_DeletePropertyNames(This,cpropid,rgpropid) (This)->lpVtbl->DeletePropertyNames(This,cpropid,rgpropid)
+#define IPropertyStorage_Commit(This,grfCommitFlags) (This)->lpVtbl->Commit(This,grfCommitFlags)
+#define IPropertyStorage_Revert(This) (This)->lpVtbl->Revert(This)
+#define IPropertyStorage_Enum(This,ppenum) (This)->lpVtbl->Enum(This,ppenum)
+#define IPropertyStorage_SetTimes(This,pctime,patime,pmtime) (This)->lpVtbl->SetTimes(This,pctime,patime,pmtime)
+#define IPropertyStorage_SetClass(This,clsid) (This)->lpVtbl->SetClass(This,clsid)
+#define IPropertyStorage_Stat(This,statpsstg) (This)->lpVtbl->Stat(This,statpsstg)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IPropertyStorage_ReadMultiple_Proxy(
+    IPropertyStorage* This,
+    ULONG cpspec,
+    const PROPSPEC rgpspec[],
+    PROPVARIANT rgpropvar[]);
+void __RPC_STUB IPropertyStorage_ReadMultiple_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPropertyStorage_WriteMultiple_Proxy(
+    IPropertyStorage* This,
+    ULONG cpspec,
+    const PROPSPEC rgpspec[],
+    const PROPVARIANT rgpropvar[],
+    PROPID propidNameFirst);
+void __RPC_STUB IPropertyStorage_WriteMultiple_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPropertyStorage_DeleteMultiple_Proxy(
+    IPropertyStorage* This,
+    ULONG cpspec,
+    const PROPSPEC rgpspec[]);
+void __RPC_STUB IPropertyStorage_DeleteMultiple_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPropertyStorage_ReadPropertyNames_Proxy(
+    IPropertyStorage* This,
+    ULONG cpropid,
+    const PROPID rgpropid[],
+    LPOLESTR rglpwstrName[]);
+void __RPC_STUB IPropertyStorage_ReadPropertyNames_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPropertyStorage_WritePropertyNames_Proxy(
+    IPropertyStorage* This,
+    ULONG cpropid,
+    const PROPID rgpropid[],
+    const LPOLESTR rglpwstrName[]);
+void __RPC_STUB IPropertyStorage_WritePropertyNames_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPropertyStorage_DeletePropertyNames_Proxy(
+    IPropertyStorage* This,
+    ULONG cpropid,
+    const PROPID rgpropid[]);
+void __RPC_STUB IPropertyStorage_DeletePropertyNames_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPropertyStorage_Commit_Proxy(
+    IPropertyStorage* This,
+    DWORD grfCommitFlags);
+void __RPC_STUB IPropertyStorage_Commit_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPropertyStorage_Revert_Proxy(
+    IPropertyStorage* This);
+void __RPC_STUB IPropertyStorage_Revert_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPropertyStorage_Enum_Proxy(
+    IPropertyStorage* This,
+    IEnumSTATPROPSTG **ppenum);
+void __RPC_STUB IPropertyStorage_Enum_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPropertyStorage_SetTimes_Proxy(
+    IPropertyStorage* This,
+    const FILETIME *pctime,
+    const FILETIME *patime,
+    const FILETIME *pmtime);
+void __RPC_STUB IPropertyStorage_SetTimes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPropertyStorage_SetClass_Proxy(
+    IPropertyStorage* This,
+    REFCLSID clsid);
+void __RPC_STUB IPropertyStorage_SetClass_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPropertyStorage_Stat_Proxy(
+    IPropertyStorage* This,
+    STATPROPSETSTG *statpsstg);
+void __RPC_STUB IPropertyStorage_Stat_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IPropertyStorage_INTERFACE_DEFINED__ */
+
+#ifndef __IPropertySetStorage_FWD_DEFINED__
+#define __IPropertySetStorage_FWD_DEFINED__
+typedef interface IPropertySetStorage IPropertySetStorage;
+#endif
+
+typedef IPropertySetStorage *LPPROPERTYSETSTORAGE;
+/*****************************************************************************
+ * IPropertySetStorage interface
+ */
+#ifndef __IPropertySetStorage_INTERFACE_DEFINED__
+#define __IPropertySetStorage_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IPropertySetStorage, 0x0000013a, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IPropertySetStorage : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Create(
+        REFFMTID rfmtid,
+        const CLSID *pclsid,
+        DWORD grfFlags,
+        DWORD grfMode,
+        IPropertyStorage **ppprstg) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Open(
+        REFFMTID rfmtid,
+        DWORD grfMode,
+        IPropertyStorage **ppprstg) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Delete(
+        REFFMTID rfmtid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Enum(
+        IEnumSTATPROPSETSTG **ppenum) = 0;
+
+};
+#else
+typedef struct IPropertySetStorageVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IPropertySetStorage* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IPropertySetStorage* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IPropertySetStorage* This);
+
+    /*** IPropertySetStorage methods ***/
+    HRESULT (STDMETHODCALLTYPE *Create)(
+        IPropertySetStorage* This,
+        REFFMTID rfmtid,
+        const CLSID *pclsid,
+        DWORD grfFlags,
+        DWORD grfMode,
+        IPropertyStorage **ppprstg);
+
+    HRESULT (STDMETHODCALLTYPE *Open)(
+        IPropertySetStorage* This,
+        REFFMTID rfmtid,
+        DWORD grfMode,
+        IPropertyStorage **ppprstg);
+
+    HRESULT (STDMETHODCALLTYPE *Delete)(
+        IPropertySetStorage* This,
+        REFFMTID rfmtid);
+
+    HRESULT (STDMETHODCALLTYPE *Enum)(
+        IPropertySetStorage* This,
+        IEnumSTATPROPSETSTG **ppenum);
+
+    END_INTERFACE
+} IPropertySetStorageVtbl;
+interface IPropertySetStorage {
+    CONST_VTBL IPropertySetStorageVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IPropertySetStorage_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IPropertySetStorage_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IPropertySetStorage_Release(This) (This)->lpVtbl->Release(This)
+/*** IPropertySetStorage methods ***/
+#define IPropertySetStorage_Create(This,rfmtid,pclsid,grfFlags,grfMode,ppprstg) (This)->lpVtbl->Create(This,rfmtid,pclsid,grfFlags,grfMode,ppprstg)
+#define IPropertySetStorage_Open(This,rfmtid,grfMode,ppprstg) (This)->lpVtbl->Open(This,rfmtid,grfMode,ppprstg)
+#define IPropertySetStorage_Delete(This,rfmtid) (This)->lpVtbl->Delete(This,rfmtid)
+#define IPropertySetStorage_Enum(This,ppenum) (This)->lpVtbl->Enum(This,ppenum)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IPropertySetStorage_Create_Proxy(
+    IPropertySetStorage* This,
+    REFFMTID rfmtid,
+    const CLSID *pclsid,
+    DWORD grfFlags,
+    DWORD grfMode,
+    IPropertyStorage **ppprstg);
+void __RPC_STUB IPropertySetStorage_Create_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPropertySetStorage_Open_Proxy(
+    IPropertySetStorage* This,
+    REFFMTID rfmtid,
+    DWORD grfMode,
+    IPropertyStorage **ppprstg);
+void __RPC_STUB IPropertySetStorage_Open_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPropertySetStorage_Delete_Proxy(
+    IPropertySetStorage* This,
+    REFFMTID rfmtid);
+void __RPC_STUB IPropertySetStorage_Delete_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPropertySetStorage_Enum_Proxy(
+    IPropertySetStorage* This,
+    IEnumSTATPROPSETSTG **ppenum);
+void __RPC_STUB IPropertySetStorage_Enum_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IPropertySetStorage_INTERFACE_DEFINED__ */
+
+typedef IEnumSTATPROPSTG *LPENUMSTATPROPSTG;
+/*****************************************************************************
+ * IEnumSTATPROPSTG interface
+ */
+#ifndef __IEnumSTATPROPSTG_INTERFACE_DEFINED__
+#define __IEnumSTATPROPSTG_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IEnumSTATPROPSTG, 0x00000139, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IEnumSTATPROPSTG : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Next(
+        ULONG celt,
+        STATPROPSTG *rgelt,
+        ULONG *pceltFetched) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Skip(
+        ULONG celt) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IEnumSTATPROPSTG **ppenum) = 0;
+
+};
+#else
+typedef struct IEnumSTATPROPSTGVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IEnumSTATPROPSTG* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IEnumSTATPROPSTG* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IEnumSTATPROPSTG* This);
+
+    /*** IEnumSTATPROPSTG methods ***/
+    HRESULT (STDMETHODCALLTYPE *Next)(
+        IEnumSTATPROPSTG* This,
+        ULONG celt,
+        STATPROPSTG *rgelt,
+        ULONG *pceltFetched);
+
+    HRESULT (STDMETHODCALLTYPE *Skip)(
+        IEnumSTATPROPSTG* This,
+        ULONG celt);
+
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        IEnumSTATPROPSTG* This);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IEnumSTATPROPSTG* This,
+        IEnumSTATPROPSTG **ppenum);
+
+    END_INTERFACE
+} IEnumSTATPROPSTGVtbl;
+interface IEnumSTATPROPSTG {
+    CONST_VTBL IEnumSTATPROPSTGVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IEnumSTATPROPSTG_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumSTATPROPSTG_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumSTATPROPSTG_Release(This) (This)->lpVtbl->Release(This)
+/*** IEnumSTATPROPSTG methods ***/
+#define IEnumSTATPROPSTG_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
+#define IEnumSTATPROPSTG_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumSTATPROPSTG_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumSTATPROPSTG_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IEnumSTATPROPSTG_RemoteNext_Proxy(
+    IEnumSTATPROPSTG* This,
+    ULONG celt,
+    STATPROPSTG *rgelt,
+    ULONG *pceltFetched);
+void __RPC_STUB IEnumSTATPROPSTG_RemoteNext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumSTATPROPSTG_Skip_Proxy(
+    IEnumSTATPROPSTG* This,
+    ULONG celt);
+void __RPC_STUB IEnumSTATPROPSTG_Skip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumSTATPROPSTG_Reset_Proxy(
+    IEnumSTATPROPSTG* This);
+void __RPC_STUB IEnumSTATPROPSTG_Reset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumSTATPROPSTG_Clone_Proxy(
+    IEnumSTATPROPSTG* This,
+    IEnumSTATPROPSTG **ppenum);
+void __RPC_STUB IEnumSTATPROPSTG_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IEnumSTATPROPSTG_Next_Proxy(
+    IEnumSTATPROPSTG* This,
+    ULONG celt,
+    STATPROPSTG *rgelt,
+    ULONG *pceltFetched);
+HRESULT __RPC_STUB IEnumSTATPROPSTG_Next_Stub(
+    IEnumSTATPROPSTG* This,
+    ULONG celt,
+    STATPROPSTG *rgelt,
+    ULONG *pceltFetched);
+
+#endif  /* __IEnumSTATPROPSTG_INTERFACE_DEFINED__ */
+
+typedef IEnumSTATPROPSETSTG *LPENUMSTATPROPSETSTG;
+/*****************************************************************************
+ * IEnumSTATPROPSETSTG interface
+ */
+#ifndef __IEnumSTATPROPSETSTG_INTERFACE_DEFINED__
+#define __IEnumSTATPROPSETSTG_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IEnumSTATPROPSETSTG, 0x0000013b, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IEnumSTATPROPSETSTG : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Next(
+        ULONG celt,
+        STATPROPSETSTG *rgelt,
+        ULONG *pceltFetched) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Skip(
+        ULONG celt) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IEnumSTATPROPSETSTG **ppenum) = 0;
+
+};
+#else
+typedef struct IEnumSTATPROPSETSTGVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IEnumSTATPROPSETSTG* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IEnumSTATPROPSETSTG* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IEnumSTATPROPSETSTG* This);
+
+    /*** IEnumSTATPROPSETSTG methods ***/
+    HRESULT (STDMETHODCALLTYPE *Next)(
+        IEnumSTATPROPSETSTG* This,
+        ULONG celt,
+        STATPROPSETSTG *rgelt,
+        ULONG *pceltFetched);
+
+    HRESULT (STDMETHODCALLTYPE *Skip)(
+        IEnumSTATPROPSETSTG* This,
+        ULONG celt);
+
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        IEnumSTATPROPSETSTG* This);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IEnumSTATPROPSETSTG* This,
+        IEnumSTATPROPSETSTG **ppenum);
+
+    END_INTERFACE
+} IEnumSTATPROPSETSTGVtbl;
+interface IEnumSTATPROPSETSTG {
+    CONST_VTBL IEnumSTATPROPSETSTGVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IEnumSTATPROPSETSTG_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumSTATPROPSETSTG_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumSTATPROPSETSTG_Release(This) (This)->lpVtbl->Release(This)
+/*** IEnumSTATPROPSETSTG methods ***/
+#define IEnumSTATPROPSETSTG_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
+#define IEnumSTATPROPSETSTG_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumSTATPROPSETSTG_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumSTATPROPSETSTG_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IEnumSTATPROPSETSTG_RemoteNext_Proxy(
+    IEnumSTATPROPSETSTG* This,
+    ULONG celt,
+    STATPROPSETSTG *rgelt,
+    ULONG *pceltFetched);
+void __RPC_STUB IEnumSTATPROPSETSTG_RemoteNext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumSTATPROPSETSTG_Skip_Proxy(
+    IEnumSTATPROPSETSTG* This,
+    ULONG celt);
+void __RPC_STUB IEnumSTATPROPSETSTG_Skip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumSTATPROPSETSTG_Reset_Proxy(
+    IEnumSTATPROPSETSTG* This);
+void __RPC_STUB IEnumSTATPROPSETSTG_Reset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IEnumSTATPROPSETSTG_Clone_Proxy(
+    IEnumSTATPROPSETSTG* This,
+    IEnumSTATPROPSETSTG **ppenum);
+void __RPC_STUB IEnumSTATPROPSETSTG_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IEnumSTATPROPSETSTG_Next_Proxy(
+    IEnumSTATPROPSETSTG* This,
+    ULONG celt,
+    STATPROPSETSTG *rgelt,
+    ULONG *pceltFetched);
+HRESULT __RPC_STUB IEnumSTATPROPSETSTG_Next_Stub(
+    IEnumSTATPROPSETSTG* This,
+    ULONG celt,
+    STATPROPSETSTG *rgelt,
+    ULONG *pceltFetched);
+
+#endif  /* __IEnumSTATPROPSETSTG_INTERFACE_DEFINED__ */
+
+HRESULT WINAPI FreePropVariantArray(ULONG,PROPVARIANT*);
+HRESULT WINAPI PropVariantClear(PROPVARIANT*);
+HRESULT WINAPI PropVariantCopy(PROPVARIANT*,const PROPVARIANT*);
+
+#define _PROPVARIANT_INIT_DEFINED_
+#define PropVariantInit(p) memset((p), 0, sizeof(PROPVARIANT))
+
+#ifndef _STGCREATEPROPSTG_DEFINED_
+#define _STGCREATEPROPSTG_DEFINED_
+HRESULT WINAPI StgCreatePropStg(IUnknown *, REFFMTID, const CLSID *, DWORD, DWORD, IPropertyStorage **);
+HRESULT WINAPI StgOpenPropStg(IUnknown *, REFFMTID, DWORD, DWORD, IPropertyStorage **);
+HRESULT WINAPI StgCreatePropSetStg(IStorage *, DWORD, IPropertySetStorage **);
+#define CCH_MAX_PROPSTG_NAME 31
+HRESULT WINAPI FmtIdToPropStgName(const FMTID *, LPOLESTR);
+HRESULT WINAPI PropStgNameToFmtId(const LPOLESTR, FMTID *);
+#endif /* _STGCREATEPROPSTG_DEFINED_ */
+
+/* Begin additional prototypes for all interfaces */
+
+ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
+unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
+unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
+void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
+ULONG           __RPC_USER LPSAFEARRAY_UserSize     (ULONG *, ULONG, LPSAFEARRAY *);
+unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal  (ULONG *, unsigned char *, LPSAFEARRAY *);
+unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal(ULONG *, unsigned char *, LPSAFEARRAY *);
+void            __RPC_USER LPSAFEARRAY_UserFree     (ULONG *, LPSAFEARRAY *);
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WIDL_PROPIDL_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/propidl.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/propidl.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/propidl.idl	(revision 16410)
@@ -0,0 +1,441 @@
+/*
+ * Copyright 2002 Ove Kaaven
+ * Copyright 2004 Francois Gouget
+ * Copyright 2005 Juan Lang
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef DO_NO_IMPORTS
+import "objidl.idl";
+import "oaidl.idl";
+#endif
+
+/*
+ * Windows SDK braindamage alert
+ *
+ * PID_DICTIONARY and PID_CODEPAGE are defined by msidefs.h too
+ * PID_SECURITY is defined in msidefs.h with a different value!
+ * So these need to be undefined first.
+ */
+cpp_quote("#ifdef PID_DICTIONARY")
+cpp_quote("#undef PID_DICTIONARY")
+cpp_quote("#endif")
+
+cpp_quote("#ifdef PID_CODEPAGE")
+cpp_quote("#undef PID_CODEPAGE")
+cpp_quote("#endif")
+
+cpp_quote("#ifdef PID_SECURITY")
+cpp_quote("#undef PID_SECURITY")
+cpp_quote("#endif")
+
+/******************** Property Storage ********************/
+
+interface IEnumSTATPROPSTG;
+interface IEnumSTATPROPSETSTG;
+
+[
+  object,
+  uuid(00000138-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface IPropertyStorage : IUnknown
+{
+  typedef [unique] IPropertyStorage *LPPROPERTYSTORAGE;
+
+  const DWORD PROPSETFLAG_DEFAULT = 0;
+  const DWORD PROPSETFLAG_NONSIMPLE = 1;
+  const DWORD PROPSETFLAG_ANSI = 2;
+  const DWORD PROPSETFLAG_UNBUFFERED = 4;
+  const DWORD PROPSETFLAG_CASE_SENSITIVE = 8;
+
+  const DWORD PROPSET_BEHAVIOR_CASE_SENSITIVE = 1;
+
+  const PROPID PID_DICTIONARY          = 0x00000000;
+  const PROPID PID_CODEPAGE            = 0x00000001;
+  const PROPID PID_FIRST_USABLE        = 0x00000002;
+  const PROPID PID_FIRST_NAME_DEFAULT  = 0x00000fff;
+  const PROPID PID_LOCALE              = 0x80000000;
+  const PROPID PID_MODIFY_TIME         = 0x80000001;
+  const PROPID PID_SECURITY            = 0x80000002;
+  const PROPID PID_BEHAVIOR            = 0x80000003;
+  const PROPID PID_ILLEGAL             = 0xffffffff;
+  const PROPID PID_MIN_READONLY        = 0x80000000;
+  const PROPID PID_MAX_READONLY        = 0xbfffffff;
+
+  typedef struct tagPROPVARIANT PROPVARIANT;
+
+#define TYPEDEF_CA(type, name) \
+    typedef struct tag##name { \
+      ULONG cElems; \
+      [size_is(cElems)] \
+      type *pElems; \
+    } name
+
+  TYPEDEF_CA(unsigned char, CAUB);
+  TYPEDEF_CA(short, CAI);
+  TYPEDEF_CA(USHORT, CAUI);
+  TYPEDEF_CA(long, CAL);
+  TYPEDEF_CA(ULONG, CAUL);
+  TYPEDEF_CA(float, CAFLT);
+  TYPEDEF_CA(double, CADBL);
+  TYPEDEF_CA(CY, CACY);
+  TYPEDEF_CA(DATE, CADATE);
+  TYPEDEF_CA(BSTR, CABSTR);
+  TYPEDEF_CA(BSTRBLOB, CABSTRBLOB);
+  TYPEDEF_CA(VARIANT_BOOL, CABOOL);
+  TYPEDEF_CA(SCODE,  CASCODE);
+  TYPEDEF_CA(PROPVARIANT, CAPROPVARIANT);
+  TYPEDEF_CA(LARGE_INTEGER, CAH);
+  TYPEDEF_CA(ULARGE_INTEGER, CAUH);
+  TYPEDEF_CA(LPSTR, CALPSTR);
+  TYPEDEF_CA(LPWSTR, CALPWSTR);
+  TYPEDEF_CA(FILETIME, CAFILETIME);
+  TYPEDEF_CA(CLIPDATA, CACLIPDATA);
+  TYPEDEF_CA(CLSID, CACLSID);
+
+  struct tagPROPVARIANT {
+    VARTYPE vt;
+    WORD wReserved1;
+    WORD wReserved2;
+    WORD wReserved3;
+    [switch_is(vt & 0x1fff)] union {
+    [case(VT_EMPTY, VT_NULL)]             ;
+    [case(VT_I1)]                         char cVal;
+    [case(VT_UI1)]                        UCHAR bVal;
+    [case(VT_I2)]                         short iVal;
+    [case(VT_UI2)]                        USHORT uiVal;
+    [case(VT_BOOL)]                       VARIANT_BOOL boolVal;
+#if 0 /* illegal in C++ */
+    [case(VT_ILLEGAL)]                    _VARIANT_BOOL bool;
+#endif
+    [case(VT_I4)]                         long lVal;
+    [case(VT_UI4)]                        ULONG ulVal;
+    [case(VT_R4)]                         float fltVal;
+    [case(VT_ERROR)]                      SCODE scode;
+    [case(VT_I8)]                         LARGE_INTEGER hVal;
+    [case(VT_UI8)]                        ULARGE_INTEGER uhVal;
+    [case(VT_R8)]                         double dblVal;
+    [case(VT_CY)]                         CY cyVal;
+    [case(VT_DATE)]                       DATE date;
+    [case(VT_FILETIME)]                   FILETIME filetime;
+    [case(VT_CLSID)]                      CLSID *puuid;
+    [case(VT_BLOB, VT_BLOB_OBJECT)]       BLOB blob;
+    [case(VT_CF)]                         CLIPDATA *pclipdata;
+    [case(VT_STREAM, VT_STREAMED_OBJECT)] IStream *pStream;
+    [case(VT_STORAGE, VT_STORED_OBJECT)]  IStorage *pStorage;
+    [case(VT_BSTR)]                       BSTR bstrVal;
+    [case(VT_BSTR_BLOB)]                  BSTRBLOB bstrblobVal;
+    [case(VT_LPSTR)]                      LPSTR pszVal;
+    [case(VT_LPWSTR)]                     LPWSTR pwszVal;
+    [case(VT_UI1|VT_VECTOR)]              CAUB caub;
+    [case(VT_I2|VT_VECTOR)]               CAI cai;
+    [case(VT_UI2|VT_VECTOR)]              CAUI caui;
+    [case(VT_BOOL|VT_VECTOR)]             CABOOL cabool;
+    [case(VT_I4|VT_VECTOR)]               CAL cal;
+    [case(VT_UI4|VT_VECTOR)]              CAUL caul;
+    [case(VT_R4|VT_VECTOR)]               CAFLT caflt;
+    [case(VT_ERROR|VT_VECTOR)]            CASCODE cascode;
+    [case(VT_I8|VT_VECTOR)]               CAH cah;
+    [case(VT_UI8|VT_VECTOR)]              CAUH cauh;
+    [case(VT_R8|VT_VECTOR)]               CADBL cadbl;
+    [case(VT_CY|VT_VECTOR)]               CACY cacy;
+    [case(VT_DATE|VT_VECTOR)]             CADATE cadate;
+    [case(VT_FILETIME|VT_VECTOR)]         CAFILETIME cafiletime;
+    [case(VT_CLSID|VT_VECTOR)]            CACLSID cauuid;
+    [case(VT_CF|VT_VECTOR)]               CACLIPDATA caclipdata;
+    [case(VT_BSTR|VT_VECTOR)]             CABSTR cabstr;
+    [case(VT_BSTR_BLOB|VT_VECTOR)]        CABSTRBLOB cabstrblob;
+    [case(VT_LPSTR|VT_VECTOR)]            CALPSTR calpstr;
+    [case(VT_LPWSTR|VT_VECTOR)]           CALPWSTR calpwstr;
+    [case(VT_VARIANT|VT_VECTOR)]          CAPROPVARIANT capropvar;
+    [case(VT_ARRAY|VT_I1,
+          VT_ARRAY|VT_UI1,
+          VT_ARRAY|VT_I2,
+          VT_ARRAY|VT_UI2,
+          VT_ARRAY|VT_I4,
+          VT_ARRAY|VT_UI4,
+          VT_ARRAY|VT_INT,
+          VT_ARRAY|VT_UINT,
+          VT_ARRAY|VT_R4,
+          VT_ARRAY|VT_R8,
+          VT_ARRAY|VT_CY,
+          VT_ARRAY|VT_DATE,
+          VT_ARRAY|VT_BSTR,
+          VT_ARRAY|VT_BOOL,
+          VT_ARRAY|VT_DECIMAL,
+          VT_ARRAY|VT_DISPATCH,
+          VT_ARRAY|VT_UNKNOWN,
+          VT_ARRAY|VT_ERROR,
+          VT_ARRAY|VT_VARIANT)]           LPSAFEARRAY parray;
+    [case(VT_BYREF|VT_I1)]                CHAR *pcVal;
+    [case(VT_BYREF|VT_UI1)]               UCHAR *pbVal;
+    [case(VT_BYREF|VT_I2)]                SHORT *piVal;
+    [case(VT_BYREF|VT_UI2)]               USHORT *puiVal;
+    [case(VT_BYREF|VT_I4)]                LONG *plVal;
+    [case(VT_BYREF|VT_UI4)]               ULONG *pulVal;
+    [case(VT_BYREF|VT_INT)]               INT *pintVal;
+    [case(VT_BYREF|VT_UINT)]              UINT *puintVal;
+    [case(VT_BYREF|VT_R4)]                FLOAT *pfltVal;
+    [case(VT_BYREF|VT_R8)]                DOUBLE *pdblVal;
+    [case(VT_BYREF|VT_BOOL)]              VARIANT_BOOL *pboolVal;
+    [case(VT_BYREF|VT_DECIMAL)]           DECIMAL *pdecVal;
+    [case(VT_BYREF|VT_ERROR)]             SCODE *pscode;
+    [case(VT_BYREF|VT_CY)]                CY *pcyVal;
+    [case(VT_BYREF|VT_DATE)]              DATE *pdate;
+    [case(VT_BYREF|VT_BSTR)]              BSTR *pbstrVal;
+    [case(VT_BYREF|VT_UNKNOWN)]           IUnknown **ppunkVal;
+    [case(VT_BYREF|VT_DISPATCH)]          IDispatch **ppdispVal;
+    [case(VT_BYREF|VT_ARRAY)]             LPSAFEARRAY *pparray;
+    [case(VT_BYREF|VT_VARIANT)]           PROPVARIANT *pvarVal;
+    } DUMMYUNIONNAME;
+  };
+
+  typedef struct tagPROPVARIANT *LPPROPVARIANT;
+
+  cpp_quote("#define REFPROPVARIANT const PROPVARIANT *")
+
+  cpp_quote("#define PIDDI_THUMBNAIL 0x00000002L /* VT_BLOB */")
+  cpp_quote("")
+  cpp_quote("#define PIDSI_TITLE        0x00000002L /* VT_LPSTR */")
+  cpp_quote("#define PIDSI_SUBJECT      0x00000003L /* VT_LPSTR */")
+  cpp_quote("#define PIDSI_AUTHOR       0x00000004L /* VT_LPSTR */")
+  cpp_quote("#define PIDSI_KEYWORDS     0x00000005L /* VT_LPSTR */")
+  cpp_quote("#define PIDSI_COMMENTS     0x00000006L /* VT_LPSTR */")
+  cpp_quote("#define PIDSI_TEMPLATE     0x00000007L /* VT_LPSTR */")
+  cpp_quote("#define PIDSI_LASTAUTHOR   0x00000008L /* VT_LPSTR */")
+  cpp_quote("#define PIDSI_REVNUMBER    0x00000009L /* VT_LPSTR */")
+  cpp_quote("#define PIDSI_EDITTIME     0x0000000AL /* VT_FILETIME (UTC) */")
+  cpp_quote("#define PIDSI_LASTPRINTED  0x0000000BL /* VT_FILETIME (UTC) */")
+  cpp_quote("#define PIDSI_CREATE_DTM   0x0000000CL /* VT_FILETIME (UTC) */")
+  cpp_quote("#define PIDSI_LASTSAVE_DTM 0x0000000DL /* VT_FILETIME (UTC) */")
+  cpp_quote("#define PIDSI_PAGECOUNT    0x0000000EL /* VT_I4 */")
+  cpp_quote("#define PIDSI_WORDCOUNT    0x0000000FL /* VT_I4 */")
+  cpp_quote("#define PIDSI_CHARCOUNT    0x00000010L /* VT_I4 */")
+  cpp_quote("#define PIDSI_THUMBNAIL    0x00000011L /* VT_CF */")
+  cpp_quote("#define PIDSI_APPNAME      0x00000012L /* VT_LPSTR */")
+  cpp_quote("#define PIDSI_DOC_SECURITY 0x00000013L /* VT_I4 */")
+  cpp_quote("")
+  cpp_quote("#define PIDDSI_CATEGORY    0x00000002L /* VT_LPSTR */")
+  cpp_quote("#define PIDDSI_PRESFORMAT  0x00000003L /* VT_LPSTR */")
+  cpp_quote("#define PIDDSI_BYTECOUNT   0x00000004L /* VT_I4 */")
+  cpp_quote("#define PIDDSI_LINECOUNT   0x00000005L /* VT_I4 */")
+  cpp_quote("#define PIDDSI_PARCOUNT    0x00000006L /* VT_I4 */")
+  cpp_quote("#define PIDDSI_SLIDECOUNT  0x00000007L /* VT_I4 */")
+  cpp_quote("#define PIDDSI_NOTECOUNT   0x00000008L /* VT_I4 */")
+  cpp_quote("#define PIDDSI_HIDDENCOUNT 0x00000009L /* VT_I4 */")
+  cpp_quote("#define PIDDSI_MMCLIPCOUNT 0x0000000AL /* VT_I4 */")
+  cpp_quote("#define PIDDSI_SCALE       0x0000000BL /* VT_BOOL */")
+  cpp_quote("#define PIDDSI_HEADINGPAIR 0x0000000CL /* VT_VARIANT|VT_VECTOR */")
+  cpp_quote("#define PIDDSI_DOCPARTS    0x0000000DL /* VT_LPSTR|VT_VECTOR */")
+  cpp_quote("#define PIDDSI_MANAGER     0x0000000EL /* VT_LPSTR */")
+  cpp_quote("#define PIDDSI_COMPANY     0x0000000FL /* VT_LPSTR */")
+  cpp_quote("#define PIDDSI_LINKSDIRTY  0x00000010L /* VT_B0OL */")
+
+  const ULONG PRSPEC_INVALID = 0xffffffff;
+  const ULONG PRSPEC_LPWSTR = 0;
+  const ULONG PRSPEC_PROPID = 1;
+
+  typedef struct tagPROPSPEC {
+    ULONG ulKind;
+    [switch_is(ulKind)] union {
+    [case(PRSPEC_PROPID)] PROPID propid;
+    [case(PRSPEC_LPWSTR)] LPOLESTR lpwstr;
+    [default]             ;
+    } DUMMYUNIONNAME;
+  } PROPSPEC;
+
+  typedef struct tagSTATPROPSTG {
+    LPOLESTR lpwstrName;
+    PROPID propid;
+    VARTYPE vt;
+  } STATPROPSTG;
+
+  cpp_quote("/* Macros for dwOSVersion member of STATPROPSETSTG */")
+  cpp_quote("#define PROPSETHDR_OSVER_KIND(dwOSVer)  HIWORD((dwOSVer))")
+  cpp_quote("#define PROPSETHDR_OSVER_MAJOR(dwOSVer) LOBYTE(LOWORD((dwOSVer)))")
+  cpp_quote("#define PROPSETHDR_OSVER_MINOR(dwOSVer) HIBYTE(LOWORD((dwOSVer)))")
+  cpp_quote("#define PROPSETHDR_OSVERSION_UNKNOWN    0xffffffff")
+
+  typedef struct tagSTATPROPSETSTG {
+    FMTID fmtid;
+    CLSID clsid;
+    DWORD grfFlags;
+    FILETIME mtime;
+    FILETIME ctime;
+    FILETIME atime;
+    DWORD dwOSVersion;
+  } STATPROPSETSTG;
+
+  HRESULT ReadMultiple(
+    [in] ULONG cpspec,
+    [in, size_is(cpspec)] const PROPSPEC rgpspec[],
+    [out, size_is(cpspec)] PROPVARIANT rgpropvar[]);
+
+  HRESULT WriteMultiple(
+    [in] ULONG cpspec,
+    [in, size_is(cpspec)] const PROPSPEC rgpspec[],
+    [in, size_is(cpspec)] const PROPVARIANT rgpropvar[],
+    [in] PROPID propidNameFirst);
+
+  HRESULT DeleteMultiple(
+    [in] ULONG cpspec,
+    [in, size_is(cpspec)] const PROPSPEC rgpspec[]);
+
+  HRESULT ReadPropertyNames(
+    [in] ULONG cpropid,
+    [in, size_is(cpropid)] const PROPID rgpropid[],
+    [out, size_is(cpropid)] LPOLESTR rglpwstrName[]);
+
+  HRESULT WritePropertyNames(
+    [in] ULONG cpropid,
+    [in, size_is(cpropid)] const PROPID rgpropid[],
+    [in, size_is(cpropid)] const LPOLESTR rglpwstrName[]);
+
+  HRESULT DeletePropertyNames(
+    [in] ULONG cpropid,
+    [in, size_is(cpropid)] const PROPID rgpropid[]);
+
+  HRESULT Commit(
+    [in] DWORD grfCommitFlags);
+
+  HRESULT Revert();
+
+  HRESULT Enum(
+    [out] IEnumSTATPROPSTG **ppenum);
+
+  HRESULT SetTimes(
+    [in] const FILETIME *pctime,
+    [in] const FILETIME *patime,
+    [in] const FILETIME *pmtime);
+
+  HRESULT SetClass(
+    [in] REFCLSID clsid);
+
+  HRESULT Stat(
+    [out] STATPROPSETSTG *statpsstg);
+}
+
+[
+  object,
+  uuid(0000013A-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface IPropertySetStorage : IUnknown
+{
+  typedef [unique] IPropertySetStorage *LPPROPERTYSETSTORAGE;
+
+  HRESULT Create(
+    [in] REFFMTID rfmtid,
+    [in, unique] const CLSID *pclsid,
+    [in] DWORD grfFlags,
+    [in] DWORD grfMode,
+    [out] IPropertyStorage **ppprstg);
+
+  HRESULT Open(
+    [in] REFFMTID rfmtid,
+    [in] DWORD grfMode,
+    [out] IPropertyStorage **ppprstg);
+
+  HRESULT Delete(
+    [in] REFFMTID rfmtid);
+
+  HRESULT Enum(
+    [out] IEnumSTATPROPSETSTG **ppenum);
+}
+
+[
+  object,
+  uuid(00000139-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface IEnumSTATPROPSTG : IUnknown
+{
+  typedef [unique] IEnumSTATPROPSTG *LPENUMSTATPROPSTG;
+
+  [local]
+  HRESULT Next(
+    [in] ULONG celt,
+    [out, size_is(celt), length_is(*pceltFetched)]
+    STATPROPSTG *rgelt,
+    [out] ULONG *pceltFetched);
+
+  [call_as(Next)]
+  HRESULT RemoteNext(
+    [in] ULONG celt,
+    [out, size_is(celt), length_is(*pceltFetched)]
+    STATPROPSTG *rgelt,
+    [out] ULONG *pceltFetched);
+
+  HRESULT Skip(
+    [in] ULONG celt);
+
+  HRESULT Reset();
+
+  HRESULT Clone(
+    [out] IEnumSTATPROPSTG **ppenum);
+}
+
+[
+  object,
+  uuid(0000013B-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface IEnumSTATPROPSETSTG : IUnknown
+{
+  typedef [unique] IEnumSTATPROPSETSTG *LPENUMSTATPROPSETSTG;
+
+  [local]
+  HRESULT Next(
+    [in] ULONG celt,
+    [out, size_is(celt), length_is(*pceltFetched)]
+    STATPROPSETSTG *rgelt,
+    [out] ULONG *pceltFetched);
+
+  [call_as(Next)]
+  HRESULT RemoteNext(
+    [in] ULONG celt,
+    [out, size_is(celt), length_is(*pceltFetched)]
+    STATPROPSETSTG *rgelt,
+    [out] ULONG *pceltFetched);
+
+  HRESULT Skip(
+    [in] ULONG celt);
+
+  HRESULT Reset();
+
+  HRESULT Clone(
+    [out] IEnumSTATPROPSETSTG **ppenum);
+}
+
+
+cpp_quote("HRESULT WINAPI FreePropVariantArray(ULONG,PROPVARIANT*);")
+cpp_quote("HRESULT WINAPI PropVariantClear(PROPVARIANT*);")
+cpp_quote("HRESULT WINAPI PropVariantCopy(PROPVARIANT*,const PROPVARIANT*);")
+cpp_quote("")
+cpp_quote("#define _PROPVARIANT_INIT_DEFINED_")
+cpp_quote("#define PropVariantInit(p) memset((p), 0, sizeof(PROPVARIANT))")
+cpp_quote("")
+cpp_quote("#ifndef _STGCREATEPROPSTG_DEFINED_")
+cpp_quote("#define _STGCREATEPROPSTG_DEFINED_")
+cpp_quote("HRESULT WINAPI StgCreatePropStg(IUnknown *, REFFMTID, const CLSID *, DWORD, DWORD, IPropertyStorage **);")
+cpp_quote("HRESULT WINAPI StgOpenPropStg(IUnknown *, REFFMTID, DWORD, DWORD, IPropertyStorage **);")
+cpp_quote("HRESULT WINAPI StgCreatePropSetStg(IStorage *, DWORD, IPropertySetStorage **);")
+cpp_quote("#define CCH_MAX_PROPSTG_NAME 31")
+cpp_quote("HRESULT WINAPI FmtIdToPropStgName(const FMTID *, LPOLESTR);")
+cpp_quote("HRESULT WINAPI PropStgNameToFmtId(const LPOLESTR, FMTID *);")
+cpp_quote("#endif /* _STGCREATEPROPSTG_DEFINED_ */")
+cpp_quote("")
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/propvarutil.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/propvarutil.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/propvarutil.h	(revision 16410)
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2008 James Hawkins for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_PROPVARUTIL_H
+#define __WINE_PROPVARUTIL_H
+
+#include <propidl.h>
+#include <shtypes.h>
+#include <shlwapi.h>
+
+enum tagPROPVAR_CHANGE_FLAGS
+{
+    PVCHF_DEFAULT           = 0x00000000,
+    PVCHF_NOVALUEPROP       = 0x00000001,
+    PVCHF_ALPHABOOL         = 0x00000002,
+    PVCHF_NOUSEROVERRIDE    = 0x00000004,
+    PVCHF_LOCALBOOL         = 0x00000008,
+    PVCHF_NOHEXSTRING       = 0x00000010,
+};
+
+typedef int PROPVAR_CHANGE_FLAGS;
+
+HRESULT WINAPI PropVariantChangeType(PROPVARIANT *ppropvarDest, REFPROPVARIANT propvarSrc,
+                                     PROPVAR_CHANGE_FLAGS flags, VARTYPE vt);
+
+#endif /* __WINE_PROPVARUTIL_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/prsht.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/prsht.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/prsht.h	(revision 16410)
@@ -0,0 +1,477 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_PRSHT_H
+#define __WINE_PRSHT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/*
+ * Property sheet support (callback procs)
+ */
+
+
+#define WC_PROPSHEETA      "SysPropertySheet"
+#if defined(__GNUC__)
+# define WC_PROPSHEETW (const WCHAR []){ 'S','y','s', \
+  'P','r','o','p','e','r','t','y','S','h','e','e','t',0 }
+#elif defined(_MSC_VER)
+# define WC_PROPSHEETW     L"SysPropertySheet"
+#else
+static const WCHAR WC_PROPSHEETW[] = { 'S','y','s',
+  'P','r','o','p','e','r','t','y','S','h','e','e','t',0 };
+#endif
+#define WC_PROPSHEET         WINELIB_NAME_AW(WC_PROPSHEET)
+
+struct _PROPSHEETPAGEA;  /** need to forward declare those structs **/
+struct _PROPSHEETPAGEW;
+struct _PSP;
+#ifndef _HPROPSHEETPAGE_DEFINED
+#define _HPROPSHEETPAGE_DEFINED
+typedef struct _PSP *HPROPSHEETPAGE;
+#endif /* _HPROPSHEETPAGE_DEFINED */
+
+
+typedef UINT (CALLBACK *LPFNPSPCALLBACKA)(HWND, UINT, struct _PROPSHEETPAGEA*);
+typedef UINT (CALLBACK *LPFNPSPCALLBACKW)(HWND, UINT, struct _PROPSHEETPAGEW*);
+typedef INT  (CALLBACK *PFNPROPSHEETCALLBACK)(HWND, UINT, LPARAM);
+typedef BOOL (CALLBACK *LPFNADDPROPSHEETPAGE)(HPROPSHEETPAGE, LPARAM);
+typedef BOOL (CALLBACK *LPFNADDPROPSHEETPAGES)(LPVOID, LPFNADDPROPSHEETPAGE, LPARAM);
+
+/*
+ * Property sheet support (structures)
+ */
+typedef struct _PROPSHEETPAGEA
+{
+    DWORD              dwSize;
+    DWORD              dwFlags;
+    HINSTANCE        hInstance;
+    union
+    {
+        LPCSTR           pszTemplate;
+        LPCDLGTEMPLATEA  pResource;
+    }DUMMYUNIONNAME;
+    union
+    {
+        HICON          hIcon;
+        LPCSTR           pszIcon;
+    }DUMMYUNIONNAME2;
+    LPCSTR             pszTitle;
+    DLGPROC          pfnDlgProc;
+    LPARAM             lParam;
+    LPFNPSPCALLBACKA pfnCallback;
+    UINT*            pcRefParent;
+    LPCSTR             pszHeaderTitle;
+    LPCSTR             pszHeaderSubTitle;
+} PROPSHEETPAGEA, *LPPROPSHEETPAGEA;
+
+typedef const PROPSHEETPAGEA *LPCPROPSHEETPAGEA;
+
+typedef struct _PROPSHEETPAGEW
+{
+    DWORD               dwSize;
+    DWORD               dwFlags;
+    HINSTANCE         hInstance;
+    union
+    {
+        LPCWSTR          pszTemplate;
+        LPCDLGTEMPLATEW  pResource;
+    }DUMMYUNIONNAME;
+    union
+    {
+        HICON          hIcon;
+        LPCWSTR          pszIcon;
+    }DUMMYUNIONNAME2;
+    LPCWSTR            pszTitle;
+    DLGPROC          pfnDlgProc;
+    LPARAM             lParam;
+    LPFNPSPCALLBACKW pfnCallback;
+    UINT*            pcRefParent;
+    LPCWSTR            pszHeaderTitle;
+    LPCWSTR            pszHeaderSubTitle;
+} PROPSHEETPAGEW, *LPPROPSHEETPAGEW;
+
+typedef const PROPSHEETPAGEW *LPCPROPSHEETPAGEW;
+
+
+typedef struct _PROPSHEETHEADERA
+{
+    DWORD                    dwSize;
+    DWORD                    dwFlags;
+    HWND                   hwndParent;
+    HINSTANCE              hInstance;
+    union
+    {
+      HICON                  hIcon;
+      LPCSTR                   pszIcon;
+    }DUMMYUNIONNAME;
+    LPCSTR                   pszCaption;
+    UINT                   nPages;
+    union
+    {
+        UINT                 nStartPage;
+        LPCSTR                 pStartPage;
+    }DUMMYUNIONNAME2;
+    union
+    {
+        LPCPROPSHEETPAGEA    ppsp;
+        HPROPSHEETPAGE*        phpage;
+    }DUMMYUNIONNAME3;
+    PFNPROPSHEETCALLBACK   pfnCallback;
+    union
+    {
+        HBITMAP              hbmWatermark;
+        LPCSTR                 pszbmWatermark;
+    }DUMMYUNIONNAME4;
+    HPALETTE               hplWatermark;
+    union
+    {
+        HBITMAP              hbmHeader;
+        LPCSTR                 pszbmHeader;
+    }DUMMYUNIONNAME5;
+} PROPSHEETHEADERA, *LPPROPSHEETHEADERA;
+
+typedef const PROPSHEETHEADERA *LPCPROPSHEETHEADERA;
+
+typedef struct _PROPSHEETHEADERW
+{
+    DWORD                    dwSize;
+    DWORD                    dwFlags;
+    HWND                   hwndParent;
+    HINSTANCE              hInstance;
+    union
+    {
+      HICON                  hIcon;
+      LPCWSTR                   pszIcon;
+    }DUMMYUNIONNAME;
+    LPCWSTR                  pszCaption;
+    UINT                   nPages;
+    union
+    {
+        UINT                 nStartPage;
+        LPCWSTR                pStartPage;
+    }DUMMYUNIONNAME2;
+    union
+    {
+        LPCPROPSHEETPAGEW    ppsp;
+        HPROPSHEETPAGE*        phpage;
+    }DUMMYUNIONNAME3;
+    PFNPROPSHEETCALLBACK   pfnCallback;
+    union
+    {
+        HBITMAP              hbmWatermark;
+        LPCWSTR                pszbmWatermark;
+    }DUMMYUNIONNAME4;
+    HPALETTE               hplWatermark;
+    union
+    {
+        HBITMAP              hbmHeader;
+        LPCWSTR                pszbmHeader;
+    }DUMMYUNIONNAME5;
+} PROPSHEETHEADERW, *LPPROPSHEETHEADERW;
+
+typedef const PROPSHEETHEADERW *LPCPROPSHEETHEADERW;
+
+
+/*
+ * Property sheet support (methods)
+ */
+INT_PTR WINAPI PropertySheetA(LPCPROPSHEETHEADERA);
+INT_PTR WINAPI PropertySheetW(LPCPROPSHEETHEADERW);
+#define PropertySheet WINELIB_NAME_AW(PropertySheet)
+HPROPSHEETPAGE WINAPI CreatePropertySheetPageA(LPCPROPSHEETPAGEA);
+HPROPSHEETPAGE WINAPI CreatePropertySheetPageW(LPCPROPSHEETPAGEW);
+#define CreatePropertySheetPage WINELIB_NAME_AW(CreatePropertySheetPage)
+BOOL WINAPI DestroyPropertySheetPage(HPROPSHEETPAGE hPropPage);
+
+/*
+ * Property sheet support (UNICODE-Winelib)
+ */
+
+DECL_WINELIB_TYPE_AW(PROPSHEETPAGE)
+DECL_WINELIB_TYPE_AW(LPPROPSHEETPAGE)
+DECL_WINELIB_TYPE_AW(LPCPROPSHEETPAGE)
+DECL_WINELIB_TYPE_AW(PROPSHEETHEADER)
+DECL_WINELIB_TYPE_AW(LPPROPSHEETHEADER)
+DECL_WINELIB_TYPE_AW(LPCPROPSHEETHEADER)
+DECL_WINELIB_TYPE_AW(LPFNPSPCALLBACK)
+
+
+/*
+ * Property sheet support (defines)
+ */
+#define PSP_DEFAULT             0x0000
+#define PSP_DLGINDIRECT         0x0001
+#define PSP_USEHICON            0x0002
+#define PSP_USEICONID           0x0004
+#define PSP_USETITLE            0x0008
+#define PSP_RTLREADING          0x0010
+
+#define PSP_HASHELP             0x0020
+#define PSP_USEREFPARENT        0x0040
+#define PSP_USECALLBACK         0x0080
+#define PSP_PREMATURE           0x0400
+
+#define PSP_HIDEHEADER          0x00000800
+#define PSP_USEHEADERTITLE      0x00001000
+#define PSP_USEHEADERSUBTITLE   0x00002000
+#define PSP_USEFUSIONCONTEXT    0x00004000
+#define PSP_COMMANDLINKS        0x00040000
+
+#define PSPCB_RELEASE           1
+#define PSPCB_CREATE            2
+
+#define PSH_DEFAULT             0x0000
+#define PSH_PROPTITLE           0x0001
+#define PSH_USEHICON            0x0002
+#define PSH_USEICONID           0x0004
+#define PSH_PROPSHEETPAGE       0x0008
+#define PSH_WIZARDHASFINISH     0x0010
+#define PSH_WIZARD              0x0020
+#define PSH_USEPSTARTPAGE       0x0040
+#define PSH_NOAPPLYNOW          0x0080
+#define PSH_USECALLBACK         0x0100
+#define PSH_HASHELP             0x0200
+#define PSH_MODELESS            0x0400
+#define PSH_RTLREADING          0x0800
+#define PSH_WIZARDCONTEXTHELP   0x00001000
+
+#define PSH_WIZARD97_OLD        0x00002000 /* for IE < 5 */
+#define PSH_WATERMARK           0x00008000
+#define PSH_USEHBMWATERMARK     0x00010000
+#define PSH_USEHPLWATERMARK     0x00020000
+#define PSH_STRETCHWATERMARK    0x00040000
+#define PSH_HEADER              0x00080000
+#define PSH_USEHBMHEADER        0x00100000
+#define PSH_USEPAGELANG         0x00200000
+#define PSH_WIZARD_LITE         0x00400000
+#define PSH_WIZARD97_NEW        0x01000000 /* for IE >= 5 */
+#define PSH_NOCONTEXTHELP       0x02000000
+#ifndef __WINESRC__
+# if _WIN32_IE < 0x0500
+#  define PSH_WIZARD97          PSH_WIZARD97_OLD
+# else
+#  define PSH_WIZARD97          PSH_WIZARD97_NEW
+# endif
+#endif
+
+#define PSCB_INITIALIZED  1
+#define PSCB_PRECREATE    2
+
+typedef struct _PSHNOTIFY
+{
+   NMHDR hdr;
+   LPARAM lParam;
+} PSHNOTIFY, *LPPSHNOTIFY;
+
+#define PSN_FIRST               (0U-200U)
+#define PSN_LAST                (0U-299U)
+
+
+#define PSN_SETACTIVE           (PSN_FIRST-0)
+#define PSN_KILLACTIVE          (PSN_FIRST-1)
+/* #define PSN_VALIDATE            (PSN_FIRST-1) */
+#define PSN_APPLY               (PSN_FIRST-2)
+#define PSN_RESET               (PSN_FIRST-3)
+/* #define PSN_CANCEL              (PSN_FIRST-3) */
+#define PSN_HELP                (PSN_FIRST-5)
+#define PSN_WIZBACK             (PSN_FIRST-6)
+#define PSN_WIZNEXT             (PSN_FIRST-7)
+#define PSN_WIZFINISH           (PSN_FIRST-8)
+#define PSN_QUERYCANCEL         (PSN_FIRST-9)
+#define PSN_GETOBJECT           (PSN_FIRST-10)
+#define PSN_TRANSLATEACCELERATOR (PSN_FIRST-12)
+#define PSN_QUERYINITIALFOCUS   (PSN_FIRST-13)
+
+#define PSNRET_NOERROR              0
+#define PSNRET_INVALID              1
+#define PSNRET_INVALID_NOCHANGEPAGE 2
+
+
+#define PSM_SETCURSEL           (WM_USER + 101)
+#define PSM_REMOVEPAGE          (WM_USER + 102)
+#define PSM_ADDPAGE             (WM_USER + 103)
+#define PSM_CHANGED             (WM_USER + 104)
+#define PSM_RESTARTWINDOWS      (WM_USER + 105)
+#define PSM_REBOOTSYSTEM        (WM_USER + 106)
+#define PSM_CANCELTOCLOSE       (WM_USER + 107)
+#define PSM_QUERYSIBLINGS       (WM_USER + 108)
+#define PSM_UNCHANGED           (WM_USER + 109)
+#define PSM_APPLY               (WM_USER + 110)
+#define PSM_SETTITLEA         (WM_USER + 111)
+#define PSM_SETTITLEW         (WM_USER + 120)
+#define PSM_SETTITLE WINELIB_NAME_AW(PSM_SETTITLE)
+#define PSM_SETWIZBUTTONS       (WM_USER + 112)
+#define PSM_PRESSBUTTON         (WM_USER + 113)
+#define PSM_SETCURSELID         (WM_USER + 114)
+#define PSM_SETFINISHTEXTA    (WM_USER + 115)
+#define PSM_SETFINISHTEXTW    (WM_USER + 121)
+#define PSM_SETFINISHTEXT WINELIB_NAME_AW(PSM_SETFINISHTEXT)
+#define PSM_GETTABCONTROL       (WM_USER + 116)
+#define PSM_ISDIALOGMESSAGE     (WM_USER + 117)
+#define PSM_GETCURRENTPAGEHWND  (WM_USER + 118)
+#define PSM_INSERTPAGE          (WM_USER + 119)
+#define PSM_SETHEADERTITLEA     (WM_USER + 125)
+#define PSM_SETHEADERTITLEW     (WM_USER + 126)
+#define PSM_SETHEADERTITLE      WINELIB_NAME_AW(PSM_SETHEADERTITLE)
+#define PSM_SETHEADERSUBTITLEA  (WM_USER + 127)
+#define PSM_SETHEADERSUBTITLEW  (WM_USER + 128)
+#define PSM_SETHEADERSUBTITLE   WINELIB_NAME_AW(PSM_SETHEADERSUBTITLE)
+#define PSM_HWNDTOINDEX         (WM_USER + 129)
+#define PSM_INDEXTOHWND         (WM_USER + 130)
+#define PSM_PAGETOINDEX         (WM_USER + 131)
+#define PSM_INDEXTOPAGE         (WM_USER + 132)
+#define PSM_IDTOINDEX           (WM_USER + 133)
+#define PSM_INDEXTOID           (WM_USER + 134)
+#define PSM_GETRESULT           (WM_USER + 135)
+#define PSM_RECALCPAGESIZES     (WM_USER + 136)
+
+#define PSWIZB_BACK             0x00000001
+#define PSWIZB_NEXT             0x00000002
+#define PSWIZB_FINISH           0x00000004
+#define PSWIZB_DISABLEDFINISH   0x00000008
+
+#define PSBTN_BACK              0
+#define PSBTN_NEXT              1
+#define PSBTN_FINISH            2
+#define PSBTN_OK                3
+#define PSBTN_APPLYNOW          4
+#define PSBTN_CANCEL            5
+#define PSBTN_HELP              6
+#define PSBTN_MAX               6
+
+#define ID_PSRESTARTWINDOWS     0x2
+#define ID_PSREBOOTSYSTEM       (ID_PSRESTARTWINDOWS | 0x1)
+
+
+#define WIZ_CXDLG               276
+#define WIZ_CYDLG               140
+
+#define WIZ_CXBMP               80
+
+#define WIZ_BODYX               92
+#define WIZ_BODYCX              184
+
+#define PROP_SM_CXDLG           212
+#define PROP_SM_CYDLG           188
+
+#define PROP_MED_CXDLG          227
+#define PROP_MED_CYDLG          215
+
+#define PROP_LG_CXDLG           252
+#define PROP_LG_CYDLG           218
+
+/*
+ * Property sheet support (macros)
+ */
+
+#define PropSheet_SetCurSel(hDlg, hpage, index) \
+	SendMessageA(hDlg, PSM_SETCURSEL, (WPARAM)index, (LPARAM)hpage)
+
+#define PropSheet_RemovePage(hDlg, index, hpage) \
+	SNDMSG(hDlg, PSM_REMOVEPAGE, index, (LPARAM)hpage)
+
+#define PropSheet_AddPage(hDlg, hpage) \
+	SNDMSG(hDlg, PSM_ADDPAGE, 0, (LPARAM)hpage)
+
+#define PropSheet_Changed(hDlg, hwnd) \
+	SNDMSG(hDlg, PSM_CHANGED, (WPARAM)hwnd, 0L)
+
+#define PropSheet_RestartWindows(hDlg) \
+	SNDMSG(hDlg, PSM_RESTARTWINDOWS, 0, 0L)
+
+#define PropSheet_RebootSystem(hDlg) \
+	SNDMSG(hDlg, PSM_REBOOTSYSTEM, 0, 0L)
+
+#define PropSheet_CancelToClose(hDlg) \
+	PostMessage(hDlg, PSM_CANCELTOCLOSE, 0, 0L)
+
+#define PropSheet_QuerySiblings(hDlg, wParam, lParam) \
+	SNDMSG(hDlg, PSM_QUERYSIBLINGS, wParam, lParam)
+
+#define PropSheet_UnChanged(hDlg, hwnd) \
+	SNDMSG(hDlg, PSM_UNCHANGED, (WPARAM)hwnd, 0L)
+
+#define PropSheet_Apply(hDlg) \
+	SNDMSG(hDlg, PSM_APPLY, 0, 0L)
+
+#define PropSheet_SetTitle(hDlg, wStyle, lpszText)\
+	SNDMSG(hDlg, PSM_SETTITLE, wStyle, (LPARAM)(LPCTSTR)lpszText)
+
+#define PropSheet_SetWizButtons(hDlg, dwFlags) \
+	PostMessage(hDlg, PSM_SETWIZBUTTONS, 0, (LPARAM)dwFlags)
+
+#define PropSheet_PressButton(hDlg, iButton) \
+	PostMessage(hDlg, PSM_PRESSBUTTON, (WPARAM)iButton, 0)
+
+#define PropSheet_SetCurSelByID(hDlg, id) \
+	SNDMSG(hDlg, PSM_SETCURSELID, 0, (LPARAM)id)
+
+#define PropSheet_SetFinishText(hDlg, lpszText) \
+	SNDMSG(hDlg, PSM_SETFINISHTEXT, 0, (LPARAM)lpszText)
+
+#define PropSheet_GetTabControl(hDlg) \
+	(HWND)SNDMSG(hDlg, PSM_GETTABCONTROL, 0, 0)
+
+#define PropSheet_IsDialogMessage(hDlg, pMsg) \
+	(BOOL)SNDMSG(hDlg, PSM_ISDIALOGMESSAGE, 0, (LPARAM)pMsg)
+
+#define PropSheet_GetCurrentPageHwnd(hDlg) \
+	(HWND)SNDMSG(hDlg, PSM_GETCURRENTPAGEHWND, 0, 0L)
+
+#define PropSheet_InsertPage(hDlg, index, hpage) \
+        SNDMSG(hDlg, PSM_INSERTPAGE, (WPARAM)(index), (LPARAM)(hpage))
+
+#define PropSheet_SetHeaderTitle(hDlg, index, lpszText) \
+        SNDMSG(hDlg, PSM_SETHEADERTITLE, (WPARAM)(index), (LPARAM)(lpszText))
+
+#define PropSheet_SetHeaderSubTitle(hDlg, index, lpszText) \
+        SNDMSG(hDlg, PSM_SETHEADERSUBTITLE, (WPARAM)(index), (LPARAM)(lpszText))
+
+#define PropSheet_HwndToIndex(hDlg, hwnd) \
+        (int)SNDMSG(hDlg, PSM_HWNDTOINDEX, (WPARAM)(hwnd), 0)
+
+#define PropSheet_IndexToHwnd(hDlg, i) \
+        (HWND)SNDMSG(hDlg, PSM_INDEXTOHWND, (WPARAM)(i), 0)
+
+#define PropSheet_PageToIndex(hDlg, hpage) \
+        (int)SNDMSG(hDlg, PSM_PAGETOINDEX, 0, (LPARAM)(hpage))
+
+#define PropSheet_IndexToPage(hDlg, i) \
+        (HPROPSHEETPAGE)SNDMSG(hDlg, PSM_INDEXTOPAGE, (WPARAM)(i), 0)
+
+#define PropSheet_IdToIndex(hDlg, id) \
+        (int)SNDMSG(hDlg, PSM_IDTOINDEX, 0, (LPARAM)(id))
+
+#define PropSheet_IndexToId(hDlg, i) \
+        SNDMSG(hDlg, PSM_INDEXTOID, (WPARAM)(i), 0)
+
+#define PropSheet_GetResult(hDlg) \
+        SNDMSG(hDlg, PSM_GETRESULT, 0, 0)
+
+#define PropSheet_RecalcPageSizes(hDlg) \
+        SNDMSG(hDlg, PSM_RECALCPAGESIZES, 0, 0)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_PRSHT_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/psapi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/psapi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/psapi.h	(revision 16410)
@@ -0,0 +1,119 @@
+/*
+ * Declarations for PSAPI
+ *
+ * Copyright (C) 1998 Patrik Stridvall
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_PSAPI_H
+#define __WINE_PSAPI_H
+
+typedef struct _MODULEINFO {
+  LPVOID lpBaseOfDll;
+  DWORD SizeOfImage;
+  LPVOID EntryPoint;
+} MODULEINFO, *LPMODULEINFO;
+
+typedef struct _PROCESS_MEMORY_COUNTERS {
+  DWORD cb;
+  DWORD PageFaultCount;
+  DWORD PeakWorkingSetSize;
+  DWORD WorkingSetSize;
+  DWORD QuotaPeakPagedPoolUsage;
+  DWORD QuotaPagedPoolUsage;
+  DWORD QuotaPeakNonPagedPoolUsage;
+  DWORD QuotaNonPagedPoolUsage;
+  DWORD PagefileUsage;
+  DWORD PeakPagefileUsage;
+} PROCESS_MEMORY_COUNTERS;
+typedef PROCESS_MEMORY_COUNTERS *PPROCESS_MEMORY_COUNTERS;
+
+typedef struct _PSAPI_WS_WATCH_INFORMATION {
+  LPVOID FaultingPc;
+  LPVOID FaultingVa;
+} PSAPI_WS_WATCH_INFORMATION, *PPSAPI_WS_WATCH_INFORMATION;
+
+typedef struct _PERFORMANCE_INFORMATION {
+    DWORD cb;
+    SIZE_T CommitTotal;
+    SIZE_T CommitLimit;
+    SIZE_T CommitPeak;
+    SIZE_T PhysicalTotal;
+    SIZE_T PhysicalAvailable;
+    SIZE_T SystemCache;
+    SIZE_T KernelTotal;
+    SIZE_T KernelPaged;
+    SIZE_T KernelNonpaged;
+    SIZE_T PageSize;
+    DWORD HandleCount;
+    DWORD ProcessCount;
+    DWORD ThreadCount;
+} PERFORMANCE_INFORMATION, *PPERFORMANCE_INFORMATION;
+
+typedef struct _ENUM_PAGE_FILE_INFORMATION {
+    DWORD cb;
+    DWORD Reserved;
+    SIZE_T TotalSize;
+    SIZE_T TotalInUse;
+    SIZE_T PeakUsage;
+} ENUM_PAGE_FILE_INFORMATION, *PENUM_PAGE_FILE_INFORMATION;
+
+typedef BOOL (*PENUM_PAGE_FILE_CALLBACKA) (LPVOID, PENUM_PAGE_FILE_INFORMATION, LPCSTR);
+typedef BOOL (*PENUM_PAGE_FILE_CALLBACKW) (LPVOID, PENUM_PAGE_FILE_INFORMATION, LPCWSTR);
+#define PENUM_PAGE_FILE_CALLBACK WINELIB_NAME_AW(PENUM_PAGE_FILE_CALLBACK)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+BOOL  WINAPI EnumProcesses(DWORD*, DWORD, DWORD*);
+BOOL  WINAPI EnumProcessModules(HANDLE, HMODULE*, DWORD, LPDWORD);
+DWORD WINAPI GetModuleBaseNameA(HANDLE, HMODULE, LPSTR, DWORD);
+DWORD WINAPI GetModuleBaseNameW(HANDLE, HMODULE, LPWSTR, DWORD);
+#define      GetModuleBaseName WINELIB_NAME_AW(GetModuleBaseName)
+DWORD WINAPI GetModuleFileNameExA(HANDLE, HMODULE, LPSTR, DWORD);
+DWORD WINAPI GetModuleFileNameExW(HANDLE, HMODULE, LPWSTR, DWORD);
+#define      GetModuleFileNameEx WINELIB_NAME_AW(GetModuleFileNameEx)
+BOOL  WINAPI GetModuleInformation(HANDLE, HMODULE, LPMODULEINFO, DWORD);
+BOOL  WINAPI EmptyWorkingSet(HANDLE);
+BOOL  WINAPI QueryWorkingSet(HANDLE, PVOID, DWORD);
+BOOL  WINAPI QueryWorkingSetEx(HANDLE, PVOID, DWORD);
+BOOL  WINAPI InitializeProcessForWsWatch(HANDLE);
+BOOL  WINAPI GetWsChanges(HANDLE, PPSAPI_WS_WATCH_INFORMATION, DWORD);
+DWORD WINAPI GetMappedFileNameW(HANDLE, LPVOID, LPWSTR, DWORD);
+DWORD WINAPI GetMappedFileNameA(HANDLE, LPVOID, LPSTR, DWORD);
+#define      GetMappedFileName WINELIB_NAME_AW(GetMappedFileName)
+BOOL  WINAPI EnumDeviceDrivers(LPVOID*, DWORD, LPDWORD);
+DWORD WINAPI GetDeviceDriverBaseNameA(LPVOID, LPSTR, DWORD);
+DWORD WINAPI GetDeviceDriverBaseNameW(LPVOID, LPWSTR, DWORD);
+#define      GetDeviceDriverBaseName WINELIB_NAME_AW(GetDeviceDriverBaseName)
+DWORD WINAPI GetDeviceDriverFileNameA(LPVOID, LPSTR, DWORD);
+DWORD WINAPI GetDeviceDriverFileNameW(LPVOID, LPWSTR, DWORD);
+#define      GetDeviceDriverFileName WINELIB_NAME_AW(GetDeviceDriverFileName)
+BOOL  WINAPI GetProcessMemoryInfo(HANDLE, PPROCESS_MEMORY_COUNTERS, DWORD);
+BOOL  WINAPI GetPerformanceInfo(PPERFORMANCE_INFORMATION, DWORD);
+BOOL  WINAPI EnumPageFilesA(PENUM_PAGE_FILE_CALLBACKA, LPVOID);
+BOOL  WINAPI EnumPageFilesW(PENUM_PAGE_FILE_CALLBACKW, LPVOID);
+#define EnumPageFiles WINELIB_NAME_AW(EnumPageFiles)
+DWORD WINAPI GetProcessImageFileNameA(HANDLE, LPSTR, DWORD);
+DWORD WINAPI GetProcessImageFileNameW(HANDLE, LPWSTR, DWORD);
+#define      GetProcessImageFileName WINELIB_NAME_AW(GetProcessImageFileName)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* __WINE_PSAPI_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/pshpack1.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/pshpack1.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/pshpack1.h	(revision 16410)
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 1999 Patrik Stridvall
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#if defined(__WINE_PSHPACK_H15)
+
+   /* Depth > 15 */
+#  error "Alignment nesting > 15 is not supported"
+
+#else
+
+#  if !defined(__WINE_PSHPACK_H)
+#    define __WINE_PSHPACK_H  1
+     /* Depth == 1 */
+#  elif !defined(__WINE_PSHPACK_H2)
+#    define __WINE_PSHPACK_H2 1
+     /* Depth == 2 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H3)
+#    define __WINE_PSHPACK_H3 1
+     /* Depth == 3 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H4)
+#    define __WINE_PSHPACK_H4 1
+     /* Depth == 4 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H5)
+#    define __WINE_PSHPACK_H5 1
+     /* Depth == 5 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H6)
+#    define __WINE_PSHPACK_H6 1
+     /* Depth == 6 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H7)
+#    define __WINE_PSHPACK_H7 1
+     /* Depth == 7 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H8)
+#    define __WINE_PSHPACK_H8 1
+     /* Depth == 8 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H9)
+#    define __WINE_PSHPACK_H9 1
+     /* Depth == 9 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H10)
+#    define __WINE_PSHPACK_H10 1
+     /* Depth == 10 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H11)
+#    define __WINE_PSHPACK_H11 1
+     /* Depth == 11 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H12)
+#    define __WINE_PSHPACK_H12 1
+     /* Depth == 12 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H13)
+#    define __WINE_PSHPACK_H13 1
+     /* Depth == 13 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H14)
+#    define __WINE_PSHPACK_H14 1
+     /* Depth == 14 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H15)
+#    define __WINE_PSHPACK_H15 1
+     /* Depth == 15 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  endif
+
+#  if defined(_MSC_VER) && (_MSC_VER >= 800)
+#   pragma warning(disable:4103)
+#  endif
+
+#  pragma pack(1)
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/pshpack2.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/pshpack2.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/pshpack2.h	(revision 16410)
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 1999 Patrik Stridvall
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#if defined(__WINE_PSHPACK_H15)
+
+   /* Depth > 15 */
+#  error "Alignment nesting > 15 is not supported"
+
+#else
+
+#  if !defined(__WINE_PSHPACK_H)
+#    define __WINE_PSHPACK_H  2
+     /* Depth == 1 */
+#  elif !defined(__WINE_PSHPACK_H2)
+#    define __WINE_PSHPACK_H2 2
+     /* Depth == 2 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H3)
+#    define __WINE_PSHPACK_H3 2
+     /* Depth == 3 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H4)
+#    define __WINE_PSHPACK_H4 2
+     /* Depth == 4 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H5)
+#    define __WINE_PSHPACK_H5 2
+     /* Depth == 5 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H6)
+#    define __WINE_PSHPACK_H6 2
+     /* Depth == 6 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H7)
+#    define __WINE_PSHPACK_H7 2
+     /* Depth == 7 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H8)
+#    define __WINE_PSHPACK_H8 2
+     /* Depth == 8 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H9)
+#    define __WINE_PSHPACK_H9 2
+     /* Depth == 9 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H10)
+#    define __WINE_PSHPACK_H10 2
+     /* Depth == 10 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H11)
+#    define __WINE_PSHPACK_H11 2
+     /* Depth == 11 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H12)
+#    define __WINE_PSHPACK_H12 2
+     /* Depth == 12 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H13)
+#    define __WINE_PSHPACK_H13 2
+     /* Depth == 13 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H14)
+#    define __WINE_PSHPACK_H14 2
+     /* Depth == 14 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H15)
+#    define __WINE_PSHPACK_H15 2
+     /* Depth == 15 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  endif
+
+#  if defined(_MSC_VER) && (_MSC_VER >= 800)
+#   pragma warning(disable:4103)
+#  endif
+
+#  pragma pack(2)
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/pshpack4.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/pshpack4.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/pshpack4.h	(revision 16410)
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 1999 Patrik Stridvall
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#if defined(__WINE_PSHPACK_H15)
+
+   /* Depth > 15 */
+#  error "Alignment nesting > 15 is not supported"
+
+#else
+
+#  if !defined(__WINE_PSHPACK_H)
+#    define __WINE_PSHPACK_H  4
+     /* Depth == 1 */
+#  elif !defined(__WINE_PSHPACK_H2)
+#    define __WINE_PSHPACK_H2 4
+     /* Depth == 2 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H3)
+#    define __WINE_PSHPACK_H3 4
+     /* Depth == 3 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H4)
+#    define __WINE_PSHPACK_H4 4
+     /* Depth == 4 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H5)
+#    define __WINE_PSHPACK_H5 4
+     /* Depth == 5 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H6)
+#    define __WINE_PSHPACK_H6 4
+     /* Depth == 6 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H7)
+#    define __WINE_PSHPACK_H7 4
+     /* Depth == 7 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H8)
+#    define __WINE_PSHPACK_H8 4
+     /* Depth == 8 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H9)
+#    define __WINE_PSHPACK_H9 4
+     /* Depth == 9 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H10)
+#    define __WINE_PSHPACK_H10 4
+     /* Depth == 10 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H11)
+#    define __WINE_PSHPACK_H11 4
+     /* Depth == 11 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H12)
+#    define __WINE_PSHPACK_H12 4
+     /* Depth == 12 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H13)
+#    define __WINE_PSHPACK_H13 4
+     /* Depth == 13 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H14)
+#    define __WINE_PSHPACK_H14 4
+     /* Depth == 14 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H15)
+#    define __WINE_PSHPACK_H15 4
+     /* Depth == 15 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  endif
+
+#  if defined(_MSC_VER) && (_MSC_VER >= 800)
+#   pragma warning(disable:4103)
+#  endif
+
+#  pragma pack(4)
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/pshpack8.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/pshpack8.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/pshpack8.h	(revision 16410)
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 1999 Patrik Stridvall
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#if defined(__WINE_PSHPACK_H15)
+
+   /* Depth > 15 */
+#  error "Alignment nesting > 15 is not supported"
+
+#else
+
+#  if !defined(__WINE_PSHPACK_H)
+#    define __WINE_PSHPACK_H  8
+     /* Depth == 1 */
+#  elif !defined(__WINE_PSHPACK_H2)
+#    define __WINE_PSHPACK_H2 8
+     /* Depth == 2 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H3)
+#    define __WINE_PSHPACK_H3 8
+     /* Depth == 3 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H4)
+#    define __WINE_PSHPACK_H4 8
+     /* Depth == 4 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H5)
+#    define __WINE_PSHPACK_H5 8
+     /* Depth == 5 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H6)
+#    define __WINE_PSHPACK_H6 8
+     /* Depth == 6 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H7)
+#    define __WINE_PSHPACK_H7 8
+     /* Depth == 7 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H8)
+#    define __WINE_PSHPACK_H8 8
+     /* Depth == 8 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H9)
+#    define __WINE_PSHPACK_H9 8
+     /* Depth == 9 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H10)
+#    define __WINE_PSHPACK_H10 8
+     /* Depth == 10 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H11)
+#    define __WINE_PSHPACK_H11 8
+     /* Depth == 11 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H12)
+#    define __WINE_PSHPACK_H12 8
+     /* Depth == 12 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H13)
+#    define __WINE_PSHPACK_H13 8
+     /* Depth == 13 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H14)
+#    define __WINE_PSHPACK_H14 8
+     /* Depth == 14 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  elif !defined(__WINE_PSHPACK_H15)
+#    define __WINE_PSHPACK_H15 8
+     /* Depth == 15 */
+#    define __WINE_INTERNAL_POPPACK
+#    include <poppack.h>
+#  endif
+
+#  if defined(_MSC_VER) && (_MSC_VER >= 800)
+#   pragma warning(disable:4103)
+#  endif
+
+#  pragma pack(8)
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/pstore.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/pstore.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/pstore.idl	(revision 16410)
@@ -0,0 +1,261 @@
+/*
+ * Copyright (C) 2004 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "oaidl.idl";
+
+cpp_quote("#define PST_KEY_CURRENT_USER    0")
+cpp_quote("#define PST_KEY_LOCAL_MACHINE   1")
+
+cpp_quote("#define PST_E_OK          0x00000000L")
+cpp_quote("#define PST_E_TYPE_EXISTS 0x800C0004L")
+
+cpp_quote("#define PST_AUTHENTICODE        1")
+cpp_quote("#define PST_BINARY_CHECK        2")
+cpp_quote("#define PST_SECURITY_DESCRIPTOR 4")
+
+typedef DWORD PST_ACCESSMODE;
+typedef DWORD PST_ACCESSCLAUSETYPE;
+typedef DWORD PST_KEY;
+typedef DWORD PST_PROVIDERCAPABILITIES;
+typedef GUID PST_PROVIDERID, *PPST_PROVIDERID;
+
+typedef struct _PST_PROVIDERINFO
+{
+    DWORD cbSize;
+    PST_PROVIDERID ID;
+    PST_PROVIDERCAPABILITIES Capabilities;
+    LPWSTR szProviderName;
+} PST_PROVIDERINFO, *PPST_PROVIDERINFO;
+
+typedef struct _PST_PROMPTINFO
+{
+    DWORD cbSize;
+    DWORD dwPromptFlags;
+    HWND hwndApp;
+    LPCWSTR szPrompt;
+} PST_PROMPTINFO, *PPST_PROMPTINFO;
+
+typedef struct {
+    DWORD cbSize;
+    PST_ACCESSCLAUSETYPE ClauseType;
+    DWORD cbClauseData;
+    BYTE* pbClauseData;
+} PST_ACCESSCLAUSE, *PPST_ACCESSCLAUSE;
+
+typedef struct {
+    DWORD cbSize;
+    PST_ACCESSMODE AccessModeFlags;
+    DWORD cClauses;
+    PST_ACCESSCLAUSE* rgClauses;
+} PST_ACCESSRULE, *PPST_ACCESSRULE;
+
+typedef struct {
+    DWORD cbSize;
+    DWORD cClause;
+    PST_ACCESSRULE* rgRules;
+} PST_ACCESSRULESET, *PPST_ACCESSRULESET;
+
+typedef struct {
+    DWORD cbSize;
+    LPWSTR szDisplayName;
+} PST_TYPEINFO, *PPST_TYPEINFO;
+
+[
+  object,
+  uuid(5a6f1ec1-2db1-11d0-8c39-00c04fd9126b),
+  pointer_default(unique)
+]
+interface IEnumPStoreItems : IUnknown
+{
+    HRESULT Clone(
+        [in] IEnumPStoreItems** ppenum );
+
+    HRESULT Next(
+        [in] DWORD celt,
+        [in] LPWSTR* rgelt,
+        [in] DWORD* pceltFetched );
+
+    HRESULT Reset();
+
+    HRESULT Skip(
+        [in] DWORD celt );
+}
+
+[
+  object,
+  uuid(789c1cbf-31ee-11d0-8c39-00c04fd9126b),
+  pointer_default(unique)
+]
+interface IEnumPStoreTypes : IUnknown
+{
+    HRESULT Clone(
+        [in] IEnumPStoreTypes** ppenum );
+
+    HRESULT Next(
+        [in] DWORD celt,
+        [in] LPWSTR* rgelt,
+        [in] DWORD* pceltFetched );
+
+    HRESULT Reset();
+
+    HRESULT Skip(
+        [in] DWORD celt );
+}
+
+/*****************************************************************************
+ * IPStore interface
+ */
+[
+  object,
+  uuid(5a6f1ec0-2db1-11d0-8c39-00c04fd9126b),
+  pointer_default(unique)
+]
+interface IPStore : IUnknown
+{
+    HRESULT GetInfo(
+        [in] PPST_PROVIDERINFO* ppProperties );
+
+    HRESULT GetProvParam(
+        [in] DWORD dwParam,
+        [out] DWORD* pcbData,
+        [out] BYTE** ppbData,
+        [in] DWORD dwFlags );
+
+    HRESULT SetProvParam(
+        [in] DWORD dwParam,
+        [in] DWORD cbData,
+        [in] BYTE* pbData,
+        [in] DWORD* dwFlags );
+
+    HRESULT CreateType(
+        [in] PST_KEY Key,
+        [in] const GUID* pType,
+        [in] PPST_TYPEINFO pInfo,
+        [in] DWORD dwFlags );
+
+    HRESULT GetTypeInfo(
+        [in] PST_KEY Key,
+        [in] const GUID* pType,
+        [in] PPST_TYPEINFO** ppInfo,
+        [in] DWORD dwFlags );
+
+    HRESULT DeleteType(
+        [in] PST_KEY Key,
+        [in] const GUID* pType,
+        [in] DWORD dwFlags );
+
+    HRESULT CreateSubtype(
+        [in] PST_KEY Key,
+        [in] const GUID* pType,
+        [in] const GUID* pSubtype,
+        [in] PPST_TYPEINFO pInfo,
+        [in] PPST_ACCESSRULESET pRules,
+        [in] DWORD dwFlags );
+
+    HRESULT GetSubtypeInfo(
+        [in] PST_KEY Key,
+        [in] const GUID* pType,
+        [in] const GUID* pSubtype,
+        [in] PPST_TYPEINFO** ppInfo,
+        [in] DWORD dwFlags );
+
+    HRESULT DeleteSubtype(
+        [in] PST_KEY Key,
+        [in] const GUID* pType,
+        [in] const GUID* pSubtype,
+        [in] DWORD dwFlags );
+
+    HRESULT ReadAccessRuleset(
+        [in] PST_KEY Key,
+        [in] const GUID* pType,
+        [in] const GUID* pSubtype,
+        [in] PPST_TYPEINFO pInfo,
+        [in] PPST_ACCESSRULESET** ppRules,
+        [in] DWORD dwFlags );
+
+    HRESULT WriteAccessRuleset(
+        [in] PST_KEY Key,
+        [in] const GUID* pType,
+        [in] const GUID* pSubtype,
+        [in] PPST_TYPEINFO pInfo,
+        [in] PPST_ACCESSRULESET pRules,
+        [in] DWORD dwFlags );
+
+    HRESULT EnumTypes(
+        [in] PST_KEY Key,
+        [in] DWORD dwFlags,
+        [in] IEnumPStoreTypes** ppenum );
+
+    HRESULT EnumSubtypes(
+        [in] PST_KEY Key,
+        [in] const GUID* pType,
+        [in] DWORD dwFlags,
+        [in] IEnumPStoreTypes** ppenum );
+
+    HRESULT DeleteItem(
+        [in] PST_KEY Key,
+        [in] const GUID* pItemType,
+        [in] const GUID* pItemSubType,
+        [in] LPCWSTR szItemName,
+        [in] PPST_PROMPTINFO pPromptInfo,
+        [in] DWORD dwFlags );
+
+    HRESULT ReadItem(
+        [in] PST_KEY Key,
+        [in] const GUID* pItemType,
+        [in] const GUID* pItemSubtype,
+        [in] LPCWSTR szItemName,
+        [in] DWORD *cbData,
+        [in] BYTE** pbData,
+        [in] PPST_PROMPTINFO pPromptInfo,
+        [in] DWORD dwFlags );
+
+    HRESULT WriteItem(
+        [in] PST_KEY Key,
+        [in] const GUID* pItemType,
+        [in] const GUID* pItemSubtype,
+        [in] LPCWSTR szItemName,
+        [in] DWORD cbData,
+        [in,size_is(cbData)] BYTE *ppbData,
+        [in] PPST_PROMPTINFO pPromptInfo,
+        [in] DWORD dwDefaultConfirmationStyle,
+        [in] DWORD dwFlags);
+
+    HRESULT OpenItem(
+        [in] PST_KEY Key,
+        [in] const GUID* pItemType,
+        [in] const GUID* pItemSubtype,
+        [in] LPCWSTR szItemName,
+        [in] PST_ACCESSMODE ModeFlags,
+        [in] PPST_PROMPTINFO pProomptInfo,
+        [in] DWORD dwFlags );
+
+    HRESULT CloseItem( 
+        [in] PST_KEY Key, 
+        [in] const GUID* pItemType, 
+        [in] const GUID* pItemSubtype,
+        [in] LPCWSTR* szItemName,
+        [in] DWORD dwFlags );
+
+    HRESULT EnumItems(
+        [in] PST_KEY Key,
+        [in] const GUID* pItemType,
+        [in] const GUID* pItemSubtype,
+        [in] DWORD dwFlags,
+        [in] IEnumPStoreItems** ppenum );
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/qedit.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/qedit.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/qedit.idl	(revision 16410)
@@ -0,0 +1,168 @@
+/*
+ * Copyright (C) 2008 Google (Lei Zhang)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "oaidl.idl";
+import "ocidl.idl";
+/* import "dxtrans.idl"; */
+import "amstream.idl";
+import "msxml.idl";
+
+[
+    object,
+    uuid(0579154A-2B53-4994-B0D0-E773148EFF85),
+    local,
+    pointer_default(unique)
+]
+interface ISampleGrabberCB : IUnknown
+{
+    HRESULT SampleCB(
+        double SampleTime,
+        IMediaSample * pSample
+    );
+    HRESULT BufferCB(
+        double SampleTime,
+        BYTE * pBuffer,
+        long BufferLen
+    );
+}
+
+[
+    object,
+    uuid(6B652FFF-11FE-4fce-92AD-0266B5D7C78F),
+    local,
+    pointer_default(unique)
+]
+interface ISampleGrabber: IUnknown
+{
+    HRESULT SetOneShot(
+        BOOL OneShot
+    );
+
+    HRESULT SetMediaType(
+        const AM_MEDIA_TYPE * pType
+    );
+
+    HRESULT GetConnectedMediaType(
+        AM_MEDIA_TYPE * pType
+    );
+
+    HRESULT SetBufferSamples(
+        BOOL BufferThem
+    );
+
+    HRESULT GetCurrentBuffer(
+        [in,out] long * pBufferSize,
+        [out] long * pBuffer
+    );
+
+    HRESULT GetCurrentSample(
+        [out] IMediaSample ** ppSample
+    );
+
+    HRESULT SetCallback(
+        ISampleGrabberCB * pCallback,
+        long WhichMethodToCallback
+    );
+};
+
+[
+    object,
+    uuid(65bd0710-24d2-4FF7-9324-ed2e5d3abafa),
+    pointer_default(unique)
+]
+interface IMediaDet : IUnknown
+{
+    HRESULT get_Filter(
+        [out] IUnknown* *pVal
+    );
+
+    HRESULT put_Filter(
+        IUnknown* newVal
+    );
+
+    HRESULT get_OutputStreams(
+        [out] long *pVal
+    );
+
+    HRESULT get_CurrentStream(
+        [out] long *pVal
+    );
+
+    HRESULT put_CurrentStream(
+        long newVal
+    );
+
+    HRESULT get_StreamType(
+        [out] GUID *pVal
+    );
+
+    HRESULT get_StreamTypeB(
+        [out] BSTR *pVal
+    );
+
+    HRESULT get_StreamLength(
+        [out] double *pVal
+    );
+
+    HRESULT get_Filename(
+        [out] BSTR *pVal
+    );
+
+    HRESULT put_Filename(
+        BSTR newVal
+    );
+
+    HRESULT GetBitmapBits(
+        double StreamTime,
+        long * pBufferSize,
+        char * pBuffer,
+        long Width,
+        long Height
+    );
+
+    HRESULT WriteBitmapBits(
+        double StreamTime,
+        long Width,
+        long Height,
+        BSTR Filename
+    );
+
+    HRESULT get_StreamMediaType(
+        [out] AM_MEDIA_TYPE * pVal
+    );
+
+    HRESULT GetSampleGrabber(
+        [out] ISampleGrabber ** ppVal
+    );
+
+    HRESULT get_FrameRate(
+        [out] double *pVal
+    );
+
+    HRESULT EnterBitmapGrabMode(
+        double SeekTime
+    );
+};
+
+[
+    uuid(65BD0711-24D2-4ff7-9324-ED2E5D3ABAFA),
+]
+coclass MediaDet
+{
+    [default] interface IMediaDet;
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ras.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ras.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ras.h	(revision 16410)
@@ -0,0 +1,515 @@
+/*
+ * Copyright (C) 1998 Marcus Meissner
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_RAS_H
+#define __WINE_RAS_H
+
+#include <lmcons.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <pshpack4.h>
+
+#define RAS_MaxCallbackNumber RAS_MaxPhoneNumber
+#define RAS_MaxDeviceName     128
+#define RAS_MaxDeviceType     16
+#define RAS_MaxEntryName      256
+#define RAS_MaxPhoneNumber    128
+#define RAS_MaxAreaCode       10
+#define RAS_MaxPadType        32
+#define RAS_MaxX25Address     200
+#define RAS_MaxFacilities     200
+#define RAS_MaxUserData       200
+#define RAS_MaxDnsSuffix      256
+
+/* szDeviceType strings for RASDEVINFO */
+#define RASDT_Direct     "direct"
+#define RASDT_Modem      "modem"
+#define RASDT_Isdn       "isdn"
+#define RASDT_X25        "x25"
+#define RASDT_Vpn        "vpn"
+#define RASDT_Pad        "pad"
+#define RASDT_Generic    "GENERIC"
+#define RASDT_Serial     "SERIAL"
+#define RASDT_FrameRelay "FRAMERELAY"
+#define RASDT_Atm        "ATM"
+#define RASDT_Sonet      "SONET"
+#define RASDT_SW56       "SW56"
+#define RASDT_Irda       "IRDA"
+#define RASDT_Parallel   "PARALLEL"
+#define RASDT_PPPoE      "PPPoE"
+
+typedef struct tagRASDEVINFOA {
+    DWORD    dwSize;
+    CHAR     szDeviceType[ RAS_MaxDeviceType + 1 ];
+    CHAR     szDeviceName[ RAS_MaxDeviceName + 1 ];
+} RASDEVINFOA, *LPRASDEVINFOA;
+
+typedef struct tagRASDEVINFOW {
+    DWORD    dwSize;
+    WCHAR    szDeviceType[ RAS_MaxDeviceType + 1 ];
+    WCHAR    szDeviceName[ RAS_MaxDeviceName + 1 ];
+} RASDEVINFOW, *LPRASDEVINFOW;
+
+DECL_WINELIB_TYPE_AW(RASDEVINFO)
+DECL_WINELIB_TYPE_AW(LPRASDEVINFO)
+
+DECLARE_HANDLE(HRASCONN);
+typedef  HRASCONN* LPHRASCONN;
+
+typedef struct tagRASCONNA {
+    DWORD    dwSize;
+    HRASCONN hRasConn;
+    CHAR     szEntryName[ RAS_MaxEntryName + 1 ];
+    CHAR     szDeviceType[ RAS_MaxDeviceType + 1 ];
+    CHAR     szDeviceName[ RAS_MaxDeviceName + 1 ];
+    CHAR     szPhonebook[ MAX_PATH ];
+    DWORD    dwSubEntry;
+    GUID     guidEntry;
+    DWORD    dwFlags;
+    LUID     luid;
+    GUID     guidCorrelationId;
+} RASCONNA,*LPRASCONNA;
+
+typedef struct tagRASCONNW {
+    DWORD    dwSize;
+    HRASCONN hRasConn;
+    WCHAR    szEntryName[ RAS_MaxEntryName + 1 ];
+    WCHAR    szDeviceType[ RAS_MaxDeviceType + 1 ];
+    WCHAR    szDeviceName[ RAS_MaxDeviceName + 1 ];
+    WCHAR    szPhonebook[ MAX_PATH ];
+    DWORD    dwSubEntry;
+    GUID     guidEntry;
+    DWORD    dwFlags;
+    LUID     luid;
+    GUID     guidCorrelationId;
+} RASCONNW,*LPRASCONNW;
+
+DECL_WINELIB_TYPE_AW(RASCONN)
+DECL_WINELIB_TYPE_AW(LPRASCONN)
+
+typedef struct tagRASENTRYNAMEA {
+    DWORD dwSize;
+    CHAR  szEntryName[ RAS_MaxEntryName + 1 ];
+} RASENTRYNAMEA, *LPRASENTRYNAMEA;
+
+typedef struct tagRASENTRYNAMEW {
+    DWORD dwSize;
+    WCHAR szEntryName[ RAS_MaxEntryName + 1 ];
+} RASENTRYNAMEW, *LPRASENTRYNAMEW;
+
+DECL_WINELIB_TYPE_AW(RASENTRYNAME)
+DECL_WINELIB_TYPE_AW(LPRASENTRYNAME)
+
+typedef struct tagRASDIALPARAMSA {
+    DWORD dwSize;
+    CHAR szEntryName[ RAS_MaxEntryName + 1 ];
+    CHAR szPhoneNumber[ RAS_MaxPhoneNumber + 1 ];
+    CHAR szCallbackNumber[ RAS_MaxCallbackNumber + 1 ];
+    CHAR szUserName[ UNLEN + 1 ];
+    CHAR szPassword[ PWLEN + 1 ];
+    CHAR szDomain[ DNLEN + 1 ];
+    DWORD dwSubEntry;
+    DWORD dwCallbackId;
+} RASDIALPARAMSA, *LPRASDIALPARAMSA;
+
+typedef struct tagRASDIALPARAMSW {
+    DWORD dwSize;
+    WCHAR szEntryName[ RAS_MaxEntryName + 1 ];
+    WCHAR szPhoneNumber[ RAS_MaxPhoneNumber + 1 ];
+    WCHAR szCallbackNumber[ RAS_MaxCallbackNumber + 1 ];
+    WCHAR szUserName[ UNLEN + 1 ];
+    WCHAR szPassword[ PWLEN + 1 ];
+    WCHAR szDomain[ DNLEN + 1 ];
+    DWORD dwSubEntry;
+    DWORD dwCallbackId;
+} RASDIALPARAMSW, *LPRASDIALPARAMSW;
+
+DECL_WINELIB_TYPE_AW(RASDIALPARAMS)
+DECL_WINELIB_TYPE_AW(LPRASDIALPARAMS)
+
+typedef struct tagRASIPADDR {
+	BYTE classA,classB,classC,classD;
+} RASIPADDR;
+
+#define RASEO_UseCountryAndAreaCodes	0x0001
+#define RASEO_SpecificIpAddr		0x0002
+#define RASEO_SpecificNameServers	0x0004
+#define RASEO_IpHeaderCompression	0x0008
+#define RASEO_RemoteDefaultGateway	0x0010
+#define RASEO_DisableLcpExtensions	0x0020
+#define RASEO_TerminalBeforeDial	0x0040
+#define RASEO_TerminalAfterDial		0x0080
+#define RASEO_ModemLights		0x0100
+#define RASEO_SwCompression		0x0200
+#define RASEO_RequireEncryptedPw	0x0400
+#define RASEO_RequireMsEncryptedPw	0x0800
+#define RASEO_RequireDataEncryption	0x1000
+#define RASEO_NetworkLogon		0x2000
+#define RASEO_UseLogonCredentials	0x4000
+#define RASEO_PromoteAlternates		0x8000
+typedef struct tagRASENTRYA {
+    DWORD dwSize;
+    DWORD dwfOptions;
+
+    /* Location */
+
+    DWORD dwCountryID;
+    DWORD dwCountryCode;
+    CHAR szAreaCode[ RAS_MaxAreaCode + 1 ];
+    CHAR szLocalPhoneNumber[ RAS_MaxPhoneNumber + 1 ];
+    DWORD dwAlternateOffset;
+
+    /* IP related stuff */
+
+    RASIPADDR ipaddr;
+    RASIPADDR ipaddrDns;
+    RASIPADDR ipaddrDnsAlt;
+    RASIPADDR ipaddrWins;
+    RASIPADDR ipaddrWinsAlt;
+
+    /* Framing (for ppp/isdn etc...) */
+
+    DWORD dwFrameSize;
+    DWORD dwfNetProtocols;
+    DWORD dwFramingProtocol;
+
+    CHAR szScript[ MAX_PATH ];
+
+    CHAR szAutodialDll[ MAX_PATH ];
+    CHAR szAutodialFunc[ MAX_PATH ];
+
+    CHAR szDeviceType[ RAS_MaxDeviceType + 1 ];
+    CHAR szDeviceName[ RAS_MaxDeviceName + 1 ];
+
+    /* x25 only */
+
+    CHAR szX25PadType[ RAS_MaxPadType + 1 ];
+    CHAR szX25Address[ RAS_MaxX25Address + 1 ];
+    CHAR szX25Facilities[ RAS_MaxFacilities + 1 ];
+    CHAR szX25UserData[ RAS_MaxUserData + 1 ];
+    DWORD dwChannels;
+
+    DWORD dwReserved1;
+    DWORD dwReserved2;
+
+    /* Multilink and BAP */
+
+    DWORD dwSubEntries;
+    DWORD dwDialMode;
+    DWORD dwDialExtraPercent;
+    DWORD dwDialExtraSampleSeconds;
+    DWORD dwHangUpExtraPercent;
+    DWORD dwHangUpExtraSampleSeconds;
+
+    /* Idle time out */
+    DWORD dwIdleDisconnectSeconds;
+
+    DWORD dwType;		/* entry type */
+    DWORD dwEncryptionType;	/* type of encryption to use */
+    DWORD dwCustomAuthKey;	/* authentication key for EAP */
+    GUID guidId;		/* guid that represents the phone-book entry  */
+    CHAR szCustomDialDll[MAX_PATH];    /* DLL for custom dialing  */
+    DWORD dwVpnStrategy;         /* specifies type of VPN protocol */
+
+    DWORD dwfOptions2;
+    DWORD dwfOptions3;
+    CHAR szDnsSuffix[RAS_MaxDnsSuffix];
+    DWORD dwTcpWindowSize;
+    CHAR szPrerequisitePbk[MAX_PATH];
+    CHAR szPrerequisiteEntry[RAS_MaxEntryName + 1];
+    DWORD dwRedialCount;
+    DWORD dwRedialPause;
+} RASENTRYA, *LPRASENTRYA;
+
+typedef struct tagRASENTRYW {
+    DWORD dwSize;
+    DWORD dwfOptions;
+
+    /* Location */
+
+    DWORD dwCountryID;
+    DWORD dwCountryCode;
+    WCHAR szAreaCode[ RAS_MaxAreaCode + 1 ];
+    WCHAR szLocalPhoneNumber[ RAS_MaxPhoneNumber + 1 ];
+    DWORD dwAlternateOffset;
+
+    /* IP related stuff */
+
+    RASIPADDR ipaddr;
+    RASIPADDR ipaddrDns;
+    RASIPADDR ipaddrDnsAlt;
+    RASIPADDR ipaddrWins;
+    RASIPADDR ipaddrWinsAlt;
+
+    /* Framing (for ppp/isdn etc...) */
+
+    DWORD dwFrameSize;
+    DWORD dwfNetProtocols;
+    DWORD dwFramingProtocol;
+
+    WCHAR szScript[ MAX_PATH ];
+
+    WCHAR szAutodialDll[ MAX_PATH ];
+    WCHAR szAutodialFunc[ MAX_PATH ];
+
+    WCHAR szDeviceType[ RAS_MaxDeviceType + 1 ];
+    WCHAR szDeviceName[ RAS_MaxDeviceName + 1 ];
+
+    /* x25 only */
+
+    WCHAR szX25PadType[ RAS_MaxPadType + 1 ];
+    WCHAR szX25Address[ RAS_MaxX25Address + 1 ];
+    WCHAR szX25Facilities[ RAS_MaxFacilities + 1 ];
+    WCHAR szX25UserData[ RAS_MaxUserData + 1 ];
+    DWORD dwChannels;
+
+    DWORD dwReserved1;
+    DWORD dwReserved2;
+
+    /* Multilink and BAP */
+
+    DWORD dwSubEntries;
+    DWORD dwDialMode;
+    DWORD dwDialExtraPercent;
+    DWORD dwDialExtraSampleSeconds;
+    DWORD dwHangUpExtraPercent;
+    DWORD dwHangUpExtraSampleSeconds;
+
+    /* Idle time out */
+    DWORD dwIdleDisconnectSeconds;
+
+    DWORD dwType;		/* entry type */
+    DWORD dwEncryptionType;	/* type of encryption to use */
+    DWORD dwCustomAuthKey;	/* authentication key for EAP */
+    GUID guidId;		/* guid that represents the phone-book entry  */
+    WCHAR szCustomDialDll[MAX_PATH];    /* DLL for custom dialing  */
+    DWORD dwVpnStrategy;         /* specifies type of VPN protocol */
+
+    DWORD dwfOptions2;
+    DWORD dwfOptions3;
+    WCHAR szDnsSuffix[RAS_MaxDnsSuffix];
+    DWORD dwTcpWindowSize;
+    WCHAR szPrerequisitePbk[MAX_PATH];
+    WCHAR szPrerequisiteEntry[RAS_MaxEntryName + 1];
+    DWORD dwRedialCount;
+    DWORD dwRedialPause;
+} RASENTRYW, *LPRASENTRYW;
+
+DECL_WINELIB_TYPE_AW(RASENTRY)
+
+#define RASCS_PAUSED 0x1000
+#define RASCS_DONE   0x2000
+typedef enum tagRASCONNSTATE
+{
+      RASCS_OpenPort = 0,
+      RASCS_PortOpened,
+      RASCS_ConnectDevice,
+      RASCS_DeviceConnected,
+      RASCS_AllDevicesConnected,
+      RASCS_Authenticate,
+      RASCS_AuthNotify,
+      RASCS_AuthRetry,
+      RASCS_AuthCallback,
+      RASCS_AuthChangePassword,
+      RASCS_AuthProject,
+      RASCS_AuthLinkSpeed,
+      RASCS_AuthAck,
+      RASCS_ReAuthenticate,
+      RASCS_Authenticated,
+      RASCS_PrepareForCallback,
+      RASCS_WaitForModemReset,
+      RASCS_WaitForCallback,
+      RASCS_Projected,
+      RASCS_StartAuthentication,
+      RASCS_CallbackComplete,
+      RASCS_LogonNetwork,
+      RASCS_SubEntryConnected,
+      RASCS_SubEntryDisconnected,
+      RASCS_Interactive = RASCS_PAUSED,
+      RASCS_RetryAuthentication,
+      RASCS_CallbackSetByCaller,
+      RASCS_PasswordExpired,
+      RASCS_Connected = RASCS_DONE,
+      RASCS_Disconnected
+}  RASCONNSTATE, *LPRASCONNSTATE;
+
+typedef struct tagRASCONNSTATUSA
+{
+    DWORD dwSize;
+    RASCONNSTATE rasconnstate;
+    DWORD dwError;
+    CHAR szDeviceType[RAS_MaxDeviceType + 1];
+    CHAR szDeviceName[RAS_MaxDeviceName + 1];
+} RASCONNSTATUSA, *LPRASCONNSTATUSA;
+
+typedef struct tagRASCONNSTATUSW
+{
+    DWORD dwSize;
+    RASCONNSTATE rasconnstate;
+    DWORD dwError;
+    WCHAR szDeviceType[RAS_MaxDeviceType + 1];
+    WCHAR szDeviceName[RAS_MaxDeviceName + 1];
+} RASCONNSTATUSW, *LPRASCONNSTATUSW;
+
+DECL_WINELIB_TYPE_AW(RASCONNSTATUS)
+
+typedef enum tagRASPROJECTION
+{
+    RASP_Amb =    0x10000,
+    RASP_PppNbf = 0x803F,
+    RASP_PppIpx = 0x802B,
+    RASP_PppIp =  0x8021,
+    RASP_PppLcp = 0xC021,
+    RASP_Slip =   0x20000
+} RASPROJECTION, *LPRASPROJECTION;
+
+typedef struct tagRASSUBENTRYA
+{
+    DWORD dwSize;
+    DWORD dwfFlags;
+    CHAR szDeviceType[RAS_MaxDeviceType + 1];
+    CHAR szDeviceName[RAS_MaxDeviceName + 1];
+    CHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1];
+    DWORD dwAlternateOffset;
+} RASSUBENTRYA, *LPRASSUBENTRYA;
+
+typedef struct tagRASSUBENTRYW
+{
+    DWORD dwSize;
+    DWORD dwfFlags;
+    WCHAR szDeviceType[RAS_MaxDeviceType + 1];
+    WCHAR szDeviceName[RAS_MaxDeviceName + 1];
+    WCHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1];
+    DWORD dwAlternateOffset;
+} RASSUBENTRYW, *LPRASSUBENTRYW;
+
+typedef struct tagRASDIALEXTENSIONS
+{
+    DWORD dwSize;
+    DWORD dwfOptions;
+    HWND hwndParent;
+    ULONG_PTR reserved;
+} RASDIALEXTENSIONS, *LPRASDIALEXTENSIONS;
+
+typedef struct tagRASAUTODIALENTRYA
+{
+    DWORD dwSize;
+    DWORD dwFlags;
+    DWORD dwDialingLocation;
+    CHAR  szEntry[ RAS_MaxEntryName + 1 ];
+} RASAUTODIALENTRYA, *LPRASAUTODIALENTRYA;
+
+typedef struct tagRASAUTODIALENTRYW
+{
+    DWORD dwSize;
+    DWORD dwFlags;
+    DWORD dwDialingLocation;
+    WCHAR szEntry[ RAS_MaxEntryName + 1 ];
+} RASAUTODIALENTRYW, *LPRASAUTODIALENTRYW;
+
+
+DWORD WINAPI RasConnectionNotificationA(HRASCONN,HANDLE,DWORD);
+DWORD WINAPI RasConnectionNotificationW(HRASCONN,HANDLE,DWORD);
+#define      RasConnectionNotification WINELIB_NAME_AW(RasConnectionNotification)
+DWORD WINAPI RasCreatePhonebookEntryA(HWND,LPCSTR);
+DWORD WINAPI RasCreatePhonebookEntryW(HWND,LPCWSTR);
+#define      RasCreatePhonebookEntry WINELIB_NAME_AW(RasCreatePhonebookEntry)
+DWORD WINAPI RasDeleteEntryA(LPCSTR,LPCSTR);
+DWORD WINAPI RasDeleteEntryW(LPCWSTR,LPCWSTR);
+#define      RasDeleteEntry WINELIB_NAME_AW(RasDeleteEntry)
+DWORD WINAPI RasDeleteSubEntryA(LPCSTR,LPCSTR,DWORD);
+DWORD WINAPI RasDeleteSubEntryW(LPCWSTR,LPCWSTR,DWORD);
+#define      RasDeleteSubEntry WINELIB_NAME_AW(RasDeleteSubEntry)
+DWORD WINAPI RasDialA(LPRASDIALEXTENSIONS,LPCSTR,LPRASDIALPARAMSA,DWORD,LPVOID,LPHRASCONN);
+DWORD WINAPI RasDialW(LPRASDIALEXTENSIONS,LPCWSTR,LPRASDIALPARAMSW,DWORD,LPVOID,LPHRASCONN);
+#define      RasDial WINELIB_NAME_AW(RasDial)
+DWORD WINAPI RasEditPhonebookEntryA(HWND,LPCSTR,LPCSTR);
+DWORD WINAPI RasEditPhonebookEntryW(HWND,LPCWSTR,LPCWSTR);
+#define      RasEditPhonebookEntry WINELIB_NAME_AW(RasEditPhonebookEntry)
+DWORD WINAPI RasEnumAutodialAddressesA(LPSTR*,LPDWORD,LPDWORD);
+DWORD WINAPI RasEnumAutodialAddressesW(LPWSTR*,LPDWORD,LPDWORD);
+#define      RasEnumAutodialAddresses WINELIB_NAME_AW(RasEnumAutodialAddresses)
+DWORD WINAPI RasEnumConnectionsA(LPRASCONNA,LPDWORD,LPDWORD);
+DWORD WINAPI RasEnumConnectionsW(LPRASCONNW,LPDWORD,LPDWORD);
+#define      RasEnumConnections WINELIB_NAME_AW(RasEnumConnections)
+DWORD WINAPI RasEnumDevicesA(LPRASDEVINFOA,LPDWORD,LPDWORD);
+DWORD WINAPI RasEnumDevicesW(LPRASDEVINFOW,LPDWORD,LPDWORD);
+#define      RasEnumDevices WINELIB_NAME_AW(RasEnumDevices)
+DWORD WINAPI RasEnumEntriesA(LPCSTR,LPCSTR,LPRASENTRYNAMEA,LPDWORD,LPDWORD);
+DWORD WINAPI RasEnumEntriesW(LPCWSTR,LPCWSTR,LPRASENTRYNAMEW,LPDWORD,LPDWORD);
+#define      RasEnumEntries WINELIB_NAME_AW(RasEnumEntries)
+DWORD WINAPI RasGetAutodialAddressA(LPCSTR,LPDWORD,LPRASAUTODIALENTRYA,LPDWORD,LPDWORD);
+DWORD WINAPI RasGetAutodialAddressW(LPCWSTR,LPDWORD,LPRASAUTODIALENTRYW,LPDWORD,LPDWORD);
+#define      RasGetAutodialAddresses WINELIB_NAME_AW(RasGetAutodialAddresses)
+DWORD WINAPI RasGetAutodialEnableA(DWORD,LPBOOL);
+DWORD WINAPI RasGetAutodialEnableW(DWORD,LPBOOL);
+#define      RasGetAutodialEnable WINELIB_NAME_AW(RasGetAutodialEnable)
+DWORD WINAPI RasGetAutodialParamA(DWORD dwKey, LPVOID lpvValue, LPDWORD lpdwcbValue);
+DWORD WINAPI RasGetAutodialParamW(DWORD dwKey, LPVOID lpvValue, LPDWORD lpdwcbValue);
+#define RasGetAutodialParam WINELIB_NAME_AW(RasGetAutodialParam)
+DWORD WINAPI RasGetConnectStatusA(HRASCONN,LPRASCONNSTATUSA);
+DWORD WINAPI RasGetConnectStatusW(HRASCONN,LPRASCONNSTATUSW);
+#define      RasGetConnectStatus WINELIB_NAME_AW(RasGetConnectStatus)
+DWORD WINAPI RasGetEntryDialParamsA(LPCSTR,LPRASDIALPARAMSA,LPBOOL);
+DWORD WINAPI RasGetEntryDialParamsW(LPCWSTR,LPRASDIALPARAMSW,LPBOOL);
+#define      RasGetEntryDialParams WINELIB_NAME_AW(RasGetEntryDialParams)
+DWORD WINAPI RasGetEntryPropertiesA(LPCSTR,LPCSTR,LPRASENTRYA,LPDWORD,LPBYTE,LPDWORD);
+DWORD WINAPI RasGetEntryPropertiesW(LPCWSTR,LPCWSTR,LPRASENTRYW,LPDWORD,LPBYTE,LPDWORD);
+#define      RasGetEntryProperties WINELIB_NAME_AW(RasGetEntryProperties)
+DWORD WINAPI RasGetErrorStringA(UINT,LPSTR,DWORD);
+DWORD WINAPI RasGetErrorStringW(UINT,LPWSTR,DWORD);
+#define      RasGetErrorString WINELIB_NAME_AW(RasGetErrorString)
+DWORD WINAPI RasGetProjectionInfoA(HRASCONN,RASPROJECTION,LPVOID,LPDWORD);
+DWORD WINAPI RasGetProjectionInfoW(HRASCONN,RASPROJECTION,LPVOID,LPDWORD);
+#define      RasGetProjectionInfo WINELIB_NAME_AW(RasGetProjectionInfo)
+DWORD WINAPI RasHangUpA(HRASCONN);
+DWORD WINAPI RasHangUpW(HRASCONN);
+#define      RasHangUp WINELIB_NAME_AW(RasHangUp)
+DWORD WINAPI RasRenameEntryA(LPCSTR,LPCSTR,LPCSTR);
+DWORD WINAPI RasRenameEntryW(LPCWSTR,LPCWSTR,LPCWSTR);
+#define      RasRenameEntry WINELIB_NAME_AW(RasRenameEntry)
+DWORD WINAPI RasSetAutodialAddressA(LPCSTR,DWORD,LPRASAUTODIALENTRYA,DWORD,DWORD);
+DWORD WINAPI RasSetAutodialAddressW(LPCWSTR,DWORD,LPRASAUTODIALENTRYW,DWORD,DWORD);
+#define      RasSetAutodialAddress WINELIB_NAME_AW(RasSetAutodialAddress)
+DWORD WINAPI RasSetAutodialParamA(DWORD,LPVOID,DWORD);
+DWORD WINAPI RasSetAutodialParamW(DWORD,LPVOID,DWORD);
+#define      RasSetAutodialParam WINELIB_NAME_AW(RasSetAutodialParam)
+DWORD WINAPI RasSetEntryDialParamsA(LPCSTR,LPRASDIALPARAMSA,BOOL);
+DWORD WINAPI RasSetEntryDialParamsW(LPCWSTR,LPRASDIALPARAMSW,BOOL);
+#define      RasSetEntryDialParams WINELIB_NAME_AW(RasSetEntryDialParams)
+DWORD WINAPI RasSetSubEntryPropertiesA(LPCSTR,LPCSTR,DWORD,LPRASSUBENTRYA,DWORD,LPBYTE,DWORD);
+DWORD WINAPI RasSetSubEntryPropertiesW(LPCWSTR,LPCWSTR,DWORD,LPRASSUBENTRYW,DWORD,LPBYTE,DWORD);
+#define      RasSetSubEntryProperties WINELIB_NAME_AW(RasSetSubEntryProperties)
+DWORD WINAPI RasValidateEntryNameA(LPCSTR  lpszPhonebook, LPCSTR  lpszEntry);
+DWORD WINAPI RasValidateEntryNameW(LPCWSTR lpszPhonebook, LPCWSTR lpszEntry);
+#define RasValidateEntryName WINELIB_NAME_AW(RasValidateEntryName)
+DWORD WINAPI RasSetEntryPropertiesA(LPCSTR,LPCSTR,LPRASENTRYA,DWORD,LPBYTE,DWORD);
+DWORD WINAPI RasSetEntryPropertiesW(LPCWSTR,LPCWSTR,LPRASENTRYW,DWORD,LPBYTE,DWORD);
+#define RasSetEntryProperties WINELIB_NAME_AW(RasSetEntryProperties)
+DWORD WINAPI RasSetAutodialEnableA(DWORD dwDialingLocation, BOOL fEnabled);
+DWORD WINAPI RasSetAutodialEnableW(DWORD dwDialingLocation, BOOL fEnabled);
+#define RasSetAutodialEnable WINELIB_NAME_AW(RasSetAutodialEnable)
+
+#include <poppack.h>
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/raserror.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/raserror.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/raserror.h	(revision 16410)
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 Stefan Leichter
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_RASERROR_H
+#define __WINE_RASERROR_H
+
+#define RASBASE                                600
+#define ERROR_BUFFER_TOO_SMALL                 (RASBASE+3)
+#define ERROR_BUFFER_INVALID                   (RASBASE+10)
+#define ERROR_INVALID_SIZE                     (RASBASE+32)
+#define ERROR_RASMAN_CANNOT_INITIALIZE         (RASBASE+111)
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/reason.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/reason.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/reason.h	(revision 16410)
@@ -0,0 +1,44 @@
+/*
+ * ExitWindowsEx() reason codes
+ *
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_REASON_H
+#define __WINE_REASON_H
+
+
+#define SHTDN_REASON_FLAG_USER_DEFINED            0x40000000
+#define SHTDN_REASON_FLAG_PLANNED                 0x80000000
+
+#define SHTDN_REASON_MAJOR_OTHER                  0x00000000
+#define SHTDN_REASON_MAJOR_NONE                   0x00000000
+#define SHTDN_REASON_MAJOR_HARDWARE               0x00010000
+#define SHTDN_REASON_MAJOR_OPERATINGSYSTEM        0x00020000
+#define SHTDN_REASON_MAJOR_SOFTWARE               0x00030000
+#define SHTDN_REASON_MAJOR_APPLICATION            0x00040000
+#define SHTDN_REASON_MAJOR_SYSTEM                 0x00050000
+#define SHTDN_REASON_MAJOR_POWER                  0x00060000
+#define SHTDN_REASON_MAJOR_LEGACY_API             0x00070000
+
+#define SHTDN_REASON_MINOR_OTHER                  0x00000000
+#define SHTDN_REASON_MINOR_NONE                   0x000000ff
+
+#define SHTDN_REASON_UNKNOWN                      SHTDN_REASON_MINOR_NONE
+#define SHTDN_REASON_LEGACY_API                   (SHTDN_REASON_MAJOR_LEGACY_API | SHTDN_REASON_FLAG_PLANNED)
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/regstr.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/regstr.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/regstr.h	(revision 16410)
@@ -0,0 +1,33 @@
+/*
+ * Win32 registry string defines (see also winnt.h)
+ *
+ * Copyright (C) 2000 Andreas Mohr
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _INC_REGSTR
+#define _INC_REGSTR
+
+
+#define REGSTR_PATH_UNINSTALL			TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall")
+
+/* DisplayName <= 32 chars in Windows (otherwise not displayed for uninstall) */
+#define REGSTR_VAL_UNINSTALLER_DISPLAYNAME	TEXT("DisplayName")
+/* UninstallString <= 63 chars in Windows (otherwise problems) */
+#define REGSTR_VAL_UNINSTALLER_COMMANDLINE	TEXT("UninstallString")
+
+
+#endif  /* _INC_REGSTR_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/richedit.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/richedit.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/richedit.h	(revision 16410)
@@ -0,0 +1,1079 @@
+/*
+ * Copyright (C) 2000 Jean-Claude Batista
+ * Copyright (C) 2002 Andriy Palamarchuk
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_RICHEDIT_H
+#define __WINE_RICHEDIT_H
+
+#include <pshpack4.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _RICHEDIT_VER
+#define _RICHEDIT_VER   0x0210
+#endif /* _RICHEDIT_VER */
+
+#define cchTextLimitDefault 0x7fff
+
+#if defined(__GNUC__)
+# define MSFTEDIT_CLASS (const WCHAR []){ 'R','i','c','h','E','d','i','t','5','0','W',0 }
+#elif defined(_MSC_VER)
+# define MSFTEDIT_CLASS L"RichEdit50W"
+#else
+static const WCHAR MSFTEDIT_CLASS[] = { 'R','i','c','h','E','d','i','t','5','0','W',0 };
+#endif
+
+#define RICHEDIT_CLASS20A	"RichEdit20A"
+#if defined(__GNUC__)
+# define RICHEDIT_CLASS20W (const WCHAR []){ 'R','i','c','h','E','d','i','t','2','0','W',0 }
+#elif defined(_MSC_VER)
+# define RICHEDIT_CLASS20W      L"RichEdit20W"
+#else
+static const WCHAR RICHEDIT_CLASS20W[] = { 'R','i','c','h','E','d','i','t','2','0','W',0 };
+#endif
+#define RICHEDIT_CLASS10A	"RICHEDIT"
+
+#if (_RICHEDIT_VER >= 0x0200 )
+#define RICHEDIT_CLASS		WINELIB_NAME_AW(RICHEDIT_CLASS20)
+#else
+#define RICHEDIT_CLASS		RICHEDIT_CLASS10A
+#endif
+
+#ifndef WM_NOTIFY
+#define WM_NOTIFY               0x004e
+#endif
+#ifndef WM_CONTEXTMENU
+#define WM_CONTEXTMENU          0x007b
+#endif
+#ifndef WM_UNICHAR
+#define WM_UNICHAR              0x0109
+#endif
+#ifndef WM_PRINTCLIENT
+#define WM_PRINTCLIENT          0x0318
+#endif
+
+#ifndef EM_GETLIMITTEXT
+#define EM_GETLIMITTEXT         (WM_USER + 37)
+#endif
+#ifndef EM_POSFROMCHAR
+#define EM_POSFROMCHAR          (WM_USER + 38)
+#define EM_CHARFROMPOS          (WM_USER + 39)
+#endif
+#ifndef EM_SCROLLCARET
+#define EM_SCROLLCARET		(WM_USER + 49)
+#endif
+#define EM_CANPASTE		(WM_USER + 50)
+#define EM_DISPLAYBAND		(WM_USER + 51)
+#define EM_EXGETSEL		(WM_USER + 52)
+#define EM_EXLIMITTEXT		(WM_USER + 53)
+#define EM_EXLINEFROMCHAR	(WM_USER + 54)
+#define EM_EXSETSEL		(WM_USER + 55)
+#define EM_FINDTEXT		(WM_USER + 56)
+#define EM_FORMATRANGE		(WM_USER + 57)
+#define EM_GETCHARFORMAT	(WM_USER + 58)
+#define EM_GETEVENTMASK		(WM_USER + 59)
+#define EM_GETOLEINTERFACE	(WM_USER + 60)
+#define EM_GETPARAFORMAT	(WM_USER + 61)
+#define EM_GETSELTEXT		(WM_USER + 62)
+#define EM_HIDESELECTION	(WM_USER + 63)
+#define EM_PASTESPECIAL		(WM_USER + 64)
+#define EM_REQUESTRESIZE	(WM_USER + 65)
+#define EM_SELECTIONTYPE	(WM_USER + 66)
+#define EM_SETBKGNDCOLOR	(WM_USER + 67)
+#define EM_SETCHARFORMAT	(WM_USER + 68)
+#define EM_SETEVENTMASK		(WM_USER + 69)
+#define EM_SETOLECALLBACK	(WM_USER + 70)
+#define EM_SETPARAFORMAT	(WM_USER + 71)
+#define EM_SETTARGETDEVICE	(WM_USER + 72)
+#define EM_STREAMIN		(WM_USER + 73)
+#define EM_STREAMOUT		(WM_USER + 74)
+#define EM_GETTEXTRANGE		(WM_USER + 75)
+#define EM_FINDWORDBREAK	(WM_USER + 76)
+#define EM_SETOPTIONS		(WM_USER + 77)
+#define EM_GETOPTIONS		(WM_USER + 78)
+#define EM_FINDTEXTEX		(WM_USER + 79)
+#define EM_GETWORDBREAKPROCEX	(WM_USER + 80)
+#define EM_SETWORDBREAKPROCEX	(WM_USER + 81)
+
+#define EM_SETUNDOLIMIT		(WM_USER + 82)
+#define EM_REDO			(WM_USER + 84)
+#define EM_CANREDO		(WM_USER + 85)
+#define EM_GETUNDONAME		(WM_USER + 86)
+#define EM_GETREDONAME		(WM_USER + 87)
+#define EM_STOPGROUPTYPING	(WM_USER + 88)
+
+#define EM_SETTEXTMODE		(WM_USER + 89)
+#define EM_GETTEXTMODE		(WM_USER + 90)
+#define EM_AUTOURLDETECT	(WM_USER + 91)
+#define EM_GETAUTOURLDETECT	(WM_USER + 92)
+#define EM_SETPALETTE		(WM_USER + 93)
+#define EM_GETTEXTEX		(WM_USER + 94)
+#define EM_GETTEXTLENGTHEX	(WM_USER + 95)
+#define EM_SHOWSCROLLBAR	(WM_USER + 96)
+#define EM_SETTEXTEX		(WM_USER + 97)
+
+#define EM_SETPUNCTUATION	(WM_USER + 100)
+#define EM_GETPUNCTUATION	(WM_USER + 101)
+#define EM_SETWORDWRAPMODE	(WM_USER + 102)
+#define EM_GETWORDWRAPMODE	(WM_USER + 103)
+#define EM_SETIMECOLOR		(WM_USER + 104)
+#define EM_GETIMECOLOR		(WM_USER + 105)
+#define EM_SETIMEOPTIONS	(WM_USER + 106)
+#define EM_GETIMEOPTIONS	(WM_USER + 107)
+#define EM_CONVPOSITION		(WM_USER + 108)
+
+#define EM_SETLANGOPTIONS	(WM_USER + 120)
+#define EM_GETLANGOPTIONS	(WM_USER + 121)
+#define EM_GETIMECOMPMODE	(WM_USER + 122)
+
+#define EM_FINDTEXTW		(WM_USER + 123)
+#define EM_FINDTEXTEXW		(WM_USER + 124)
+
+#define EM_RECONVERSION		(WM_USER + 125)
+#define EM_SETIMEMODEBIAS	(WM_USER + 126)
+#define EM_GETIMEMODEBIAS	(WM_USER + 127)
+
+#define EM_SETBIDIOPTIONS	(WM_USER + 200)
+#define EM_GETBIDIOPTIONS	(WM_USER + 201)
+
+#define EM_SETTYPOGRAPHYOPTIONS (WM_USER + 202)
+#define EM_GETTYPOGRAPHYOPTIONS (WM_USER + 203)
+
+#define EM_SETEDITSTYLE		(WM_USER + 204)
+#define EM_GETEDITSTYLE		(WM_USER + 205)
+
+#define EM_OUTLINE              (WM_USER + 220)
+
+#define EM_GETSCROLLPOS         (WM_USER + 221)
+#define EM_SETSCROLLPOS         (WM_USER + 222)
+
+#define EM_SETFONTSIZE          (WM_USER + 223)
+#define EM_GETZOOM		(WM_USER + 224)
+#define EM_SETZOOM		(WM_USER + 225)
+#define EM_GETVIEWKIND          (WM_USER + 226)
+#define EM_SETVIEWKIND          (WM_USER + 227)
+
+#define EM_GETPAGE              (WM_USER + 228)
+#define EM_SETPAGE              (WM_USER + 229)
+#define EM_GETHYPHENATEINFO     (WM_USER + 230)
+#define EM_SETHYPHENATEINFO     (WM_USER + 231)
+#define EM_GETPAGEROTATE        (WM_USER + 235)
+#define EM_SETPAGEROTATE        (WM_USER + 236)
+#define EM_GETCTFMODEBIAS       (WM_USER + 237)
+#define EM_SETCTFMODEBIAS       (WM_USER + 238)
+#define EM_GETCTFOPENSTATUS     (WM_USER + 240)
+#define EM_SETCTFOPENSTATUS     (WM_USER + 241)
+#define EM_GETIMECOMPTEXT       (WM_USER + 242)
+#define EM_ISIME                (WM_USER + 243)
+#define EM_GETIMEPROPERTY       (WM_USER + 244)
+#define EM_GETQUERYRTFOBJ       (WM_USER + 269)
+#define EM_SETQUERYRTFOBJ       (WM_USER + 270)
+
+/* New notifications */
+#define EN_MSGFILTER                    0x0700
+#define EN_REQUESTRESIZE                0x0701
+#define EN_SELCHANGE                    0x0702
+#define EN_DROPFILES                    0x0703
+#define EN_PROTECTED                    0x0704
+#define EN_CORRECTTEXT                  0x0705
+#define EN_STOPNOUNDO                   0x0706
+#define EN_IMECHANGE                    0x0707
+#define EN_SAVECLIPBOARD                0x0708
+#define EN_OLEOPFAILED                  0x0709
+#define EN_OBJECTPOSITIONS              0x070a
+#define EN_LINK				0x070b
+#define EN_DRAGDROPDONE                 0x070c
+#define EN_PARAGRAPHEXPANDED		0x070d
+#define EN_PAGECHANGE                   0x070e
+#define EN_LOWFIRTF                     0x070f
+#define EN_ALIGNLTR			0x0710
+#define EN_ALIGNRTL			0x0711
+
+
+typedef DWORD (CALLBACK * EDITSTREAMCALLBACK)( DWORD_PTR, LPBYTE, LONG, LONG * );
+
+
+#define yHeightCharPtsMost    1638
+#define lDefaultTab           720
+
+/* tab stops number limit */
+#define MAX_TAB_STOPS         0x00000020
+
+#define MAX_TABLE_CELLS       63
+
+/* Rich edit control styles */
+#define ES_NOOLEDRAGDROP      0x00000008
+#define ES_DISABLENOSCROLL    0x00002000
+#define ES_SUNKEN             0x00004000
+#define ES_SAVESEL            0x00008000
+#define ES_SELFIME            0x00040000
+#define ES_NOIME              0x00080000
+#define ES_VERTICAL           0x00400000
+#define ES_SELECTIONBAR       0x01000000
+#define ES_EX_NOCALLOLEINIT   0x01000000
+
+/* the character formatting options */
+#define SCF_DEFAULT           0x00000000
+#define SCF_SELECTION         0x00000001
+#define SCF_WORD              0x00000002
+#define SCF_ALL               0x00000004
+#define SCF_USEUIRULES        0x00000008
+#define SCF_ASSOCIATEFONT     0x00000010
+#define SCF_NOKBUPDATE        0x00000020
+#define SCF_ASSOCIATEFONT2    0x00000040
+
+#ifndef WM_NOTIFY
+typedef struct _nmhdr
+{
+    HWND       hwndFrom;
+    UINT       idFrom;
+    UINT       code;
+} NMHDR;
+#endif
+
+/* CHARFORMAT structure */
+typedef struct _charformat
+{
+    UINT       cbSize;
+    DWORD      dwMask;
+    DWORD      dwEffects;
+    LONG       yHeight;
+    LONG       yOffset;
+    COLORREF   crTextColor;
+    BYTE       bCharSet;
+    BYTE       bPitchAndFamily;
+    char       szFaceName[LF_FACESIZE];
+} CHARFORMATA;
+
+typedef struct _charformatw
+{
+    UINT       cbSize;
+    DWORD      dwMask;
+    DWORD      dwEffects;
+    LONG       yHeight;
+    LONG       yOffset;
+    COLORREF   crTextColor;
+    BYTE       bCharSet;
+    BYTE       bPitchAndFamily;
+    WCHAR      szFaceName[LF_FACESIZE];
+} CHARFORMATW;
+
+DECL_WINELIB_TYPE_AW(CHARFORMAT)
+
+typedef struct _charformat2a {
+    UINT       cbSize;
+    DWORD      dwMask;
+    DWORD      dwEffects;
+    LONG       yHeight;
+    LONG       yOffset;
+    COLORREF   crTextColor;
+    BYTE       bCharSet;
+    BYTE       bPitchAndFamily;
+    char       szFaceName[LF_FACESIZE];
+    WORD       wWeight;
+    SHORT      sSpacing;
+    COLORREF   crBackColor;
+    LCID       lcid;
+    DWORD      dwReserved;
+    SHORT      sStyle;
+    WORD       wKerning;
+    BYTE       bUnderlineType;
+    BYTE       bAnimation;
+    BYTE       bRevAuthor;
+} CHARFORMAT2A;
+
+typedef struct _charformat2w {
+    UINT       cbSize;
+    DWORD      dwMask;
+    DWORD      dwEffects;
+    LONG       yHeight;
+    LONG       yOffset;
+    COLORREF   crTextColor;
+    BYTE       bCharSet;
+    BYTE       bPitchAndFamily;
+    WCHAR      szFaceName[LF_FACESIZE];
+    WORD       wWeight;
+    SHORT      sSpacing;
+    COLORREF   crBackColor;
+    LCID       lcid;
+    DWORD      dwReserved;
+    SHORT      sStyle;
+    WORD       wKerning;
+    BYTE       bUnderlineType;
+    BYTE       bAnimation;
+    BYTE       bRevAuthor;
+} CHARFORMAT2W;
+
+DECL_WINELIB_TYPE_AW(CHARFORMAT2)
+
+#define CHARFORMATDELTA       (sizeof(CHARFORMAT2) - sizeof(CHARFORMAT))
+
+/* CHARFORMAT masks */
+#define CFM_BOLD              0x00000001
+#define CFM_ITALIC            0x00000002
+#define CFM_UNDERLINE         0x00000004
+#define CFM_STRIKEOUT         0x00000008
+#define CFM_PROTECTED         0x00000010
+#define CFM_LINK              0x00000020
+#define CFM_SMALLCAPS         0x00000040
+#define CFM_ALLCAPS           0x00000080
+#define CFM_HIDDEN            0x00000100
+#define CFM_OUTLINE           0x00000200
+#define CFM_SHADOW            0x00000400
+#define CFM_EMBOSS            0x00000800
+#define CFM_IMPRINT           0x00001000
+#define CFM_DISABLED          0x00002000
+#define CFM_REVISED           0x00004000
+#define CFM_REVAUTHOR         0x00008000
+#define CFM_SUBSCRIPT         0x00030000
+#define CFM_SUPERSCRIPT       0x00030000
+#define CFM_ANIMATION         0x00040000
+#define CFM_STYLE             0x00080000
+#define CFM_KERNING           0x00100000
+#define CFM_SPACING           0x00200000
+#define CFM_WEIGHT            0x00400000
+#define CFM_UNDERLINETYPE     0x00800000
+#define CFM_LCID              0x02000000
+#define CFM_BACKCOLOR         0x04000000
+#define CFM_CHARSET           0x08000000
+#define CFM_OFFSET            0x10000000
+#define CFM_FACE              0x20000000
+#define CFM_COLOR             0x40000000
+#define CFM_SIZE              0x80000000
+
+#define CFM_EFFECTS           (CFM_BOLD | \
+                               CFM_ITALIC | \
+                               CFM_UNDERLINE | \
+                               CFM_COLOR | \
+                               CFM_STRIKEOUT | \
+                               CFE_PROTECTED | \
+                               CFM_LINK)
+
+#define CFM_EFFECTS2          (CFM_EFFECTS | \
+                               CFM_DISABLED | \
+                               CFM_SMALLCAPS | \
+                               CFM_ALLCAPS | \
+                               CFM_HIDDEN | \
+                               CFM_OUTLINE | \
+                               CFM_SHADOW | \
+                               CFM_EMBOSS | \
+                               CFM_IMPRINT | \
+                               CFM_DISABLED | \
+                               CFM_REVISED | \
+                               CFM_SUBSCRIPT | \
+                               CFM_SUPERSCRIPT | \
+                               CFM_BACKCOLOR)
+
+#define CFM_ALL               (CFM_EFFECTS | \
+                               CFM_SIZE | \
+                               CFM_FACE | \
+                               CFM_OFFSET | \
+                               CFM_CHARSET)
+
+#define CFM_ALL2              (CFM_ALL | \
+                               CFM_EFFECTS2 | \
+                               CFM_BACKCOLOR | \
+                               CFM_LCID | \
+                               CFM_UNDERLINETYPE | \
+                               CFM_WEIGHT | \
+                               CFM_REVAUTHOR | \
+                               CFM_SPACING | \
+                               CFM_KERNING | \
+                               CFM_STYLE | \
+                               CFM_ANIMATION)
+
+/* CHARFORMAT effects */
+#define CFE_BOLD              0x00000001
+#define CFE_ITALIC            0x00000002
+#define CFE_UNDERLINE         0x00000004
+#define CFE_STRIKEOUT         0x00000008
+#define CFE_PROTECTED         0x00000010
+#define CFE_LINK              0x00000020
+#define CFE_SUBSCRIPT         0x00010000
+#define CFE_SUPERSCRIPT       0x00020000
+#define CFE_AUTOCOLOR         0x40000000
+
+#define CFE_SMALLCAPS         CFM_SMALLCAPS
+#define CFE_ALLCAPS           CFM_ALLCAPS
+#define CFE_HIDDEN            CFM_HIDDEN
+#define CFE_OUTLINE           CFM_OUTLINE
+#define CFE_SHADOW            CFM_SHADOW
+#define CFE_EMBOSS            CFM_EMBOSS
+#define CFE_IMPRINT           CFM_IMPRINT
+#define CFE_DISABLED          CFM_DISABLED
+#define CFE_REVISED           CFM_REVISED
+#define CFE_AUTOBACKCOLOR     CFM_BACKCOLOR
+
+#define CFU_UNDERLINENONE             0x00
+#define CFU_UNDERLINE                 0x01
+#define CFU_UNDERLINEWORD             0x02
+#define CFU_UNDERLINEDOUBLE           0x03
+#define CFU_UNDERLINEDOTTED           0x04
+#define CFU_UNDERLINEDASH             0x05
+#define CFU_UNDERLINEDASHDOT          0x06
+#define CFU_UNDERLINEDASHDOTDOT       0x07
+#define CFU_UNDERLINEWAVE             0x08
+#define CFU_UNDERLINETHICK            0x09
+#define CFU_UNDERLINEHAIRLINE         0x0a
+#define CFU_UNDERLINEDOUBLEWAVE       0x0b
+#define CFU_UNDERLINEHEAVYWAVE        0x0c
+#define CFU_UNDERLINELONGDASH         0x0d
+#define CFU_UNDERLINETHICKDASH        0x0e
+#define CFU_UNDERLINETHICKDASHDOT     0x0f
+#define CFU_UNDERLINETHICKDASHDOTDOT  0x10
+#define CFU_UNDERLINETHICKDOTTED      0x11
+#define CFU_UNDERLINETHICKLONGDASH    0x12
+#define CFU_INVERT                    0xFE
+#define CFU_CF1UNDERLINE              0xFF
+
+/* ECO operations */
+#define ECOOP_SET             0x0001
+#define ECOOP_OR              0x0002
+#define ECOOP_AND             0x0003
+#define ECOOP_XOR             0x0004
+
+/* edit control options */
+#define ECO_AUTOWORDSELECTION 0x00000001
+#define ECO_AUTOVSCROLL       0x00000040
+#define ECO_AUTOHSCROLL       0x00000080
+#define ECO_NOHIDESEL         0x00000100
+#define ECO_READONLY          0x00000800
+#define ECO_WANTRETURN        0x00001000
+#define ECO_SAVESEL           0x00008000
+#define ECO_SELECTIONBAR      0x01000000
+#define ECO_VERTICAL          0x00400000
+
+/* Event notification masks */
+#define ENM_NONE              0x00000000
+#define ENM_CHANGE            0x00000001
+#define ENM_UPDATE            0x00000002
+#define ENM_SCROLL            0x00000004
+#define ENM_SCROLLEVENTS      0x00000008
+#define ENM_DRAGDROPDONE      0x00000010
+#define ENM_PARAGRAPHEXPANDED 0x00000020
+#define ENM_PAGECHANGE        0x00000040
+#define ENM_KEYEVENTS         0x00010000
+#define ENM_MOUSEEVENTS       0x00020000
+#define ENM_REQUESTRESIZE     0x00040000
+#define ENM_SELCHANGE         0x00080000
+#define ENM_DROPFILES         0x00100000
+#define ENM_PROTECTED         0x00200000
+#define ENM_CORRECTTEXT       0x00400000
+#define ENM_IMECHANGE         0x00800000
+#define ENM_LANGCHANGE        0x01000000
+#define ENM_OBJECTPOSITIONS   0x02000000
+#define ENM_LINK              0x04000000
+#define ENM_LOWFIRTF          0x08000000
+
+typedef struct _bidioptions
+{
+    UINT    cbSize;
+    WORD    wMask;
+    WORD    wEffects;
+} BIDIOPTIONS;
+
+#ifndef __RICHEDIT_CHARRANGE_DEFINED
+#define __RICHEDIT_CHARRANGE_DEFINED
+
+typedef struct _charrange
+{
+    LONG    cpMin;
+    LONG    cpMax;
+} CHARRANGE;
+
+#endif /* __RICHEDIT_CHARRANGE_DEFINED */
+
+typedef struct _textrange
+{
+    CHARRANGE chrg;
+    LPSTR     lpstrText;
+} TEXTRANGEA;
+
+typedef struct _textrangew
+{
+    CHARRANGE chrg;
+    LPWSTR     lpstrText;
+} TEXTRANGEW;
+
+DECL_WINELIB_TYPE_AW(TEXTRANGE)
+
+typedef struct _editstream
+{
+    DWORD		dwCookie;
+    DWORD		dwError;
+    EDITSTREAMCALLBACK	pfnCallback;
+} EDITSTREAM;
+
+typedef struct _compcolor {
+    COLORREF   crText;
+    COLORREF   crBackground;
+    DWORD      dwEffects;
+} COMPCOLOR;
+
+typedef struct _encorrecttext {
+    NMHDR      nmhdr;
+    CHARRANGE  chrg;
+    WORD       seltyp;
+} ENCORRECTTEXT;
+
+typedef struct _endropfiles {
+    NMHDR      nmhdr;
+    HANDLE     hDrop;
+    LONG       cp;
+    BOOL       fProtected;
+} ENDROPFILES;
+
+typedef struct _enlink {
+    NMHDR      nmhdr;
+    UINT       msg;
+    WPARAM     wParam;
+    LPARAM     lParam;
+    CHARRANGE  chrg;
+} ENLINK;
+
+typedef struct _enlowfirtf {
+    NMHDR      nmhdr;
+    char       *szControl;
+} ENLOWFIRTF;
+
+typedef struct {
+    NMHDR      nmhdr;
+    LONG       iob;
+    LONG       lOper;
+    HRESULT    hr;
+} ENOLEOPFAILED;
+
+typedef struct _enprotected {
+    NMHDR      nmhdr;
+    UINT       msg;
+    WPARAM     wParam;
+    LPARAM     lParam;
+    CHARRANGE  chrg;
+} ENPROTECTED, *LPENPROTECTED;
+
+typedef struct _ensaveclipboard {
+    NMHDR      nmhdr;
+    LONG       cObjectCount;
+    LONG       cch;
+} ENSAVECLIPBOARD;
+
+typedef struct _findtextA {
+    CHARRANGE  chrg;
+    LPCSTR     lpstrText;
+} FINDTEXTA;
+
+typedef struct _findtextW {
+    CHARRANGE  chrg;
+    LPCWSTR    lpstrText;
+} FINDTEXTW;
+
+DECL_WINELIB_TYPE_AW(FINDTEXT)
+
+typedef struct _findtextexA {
+    CHARRANGE  chrg;
+    LPCSTR     lpstrText;
+    CHARRANGE  chrgText;
+} FINDTEXTEXA;
+
+typedef struct _findtextexW {
+    CHARRANGE  chrg;
+    LPCWSTR    lpstrText;
+    CHARRANGE  chrgText;
+} FINDTEXTEXW;
+
+DECL_WINELIB_TYPE_AW(FINDTEXTEX)
+
+typedef struct _formatrange {
+    HDC        hdc;
+    HDC        hdcTarget;
+    RECT       rc;
+    RECT       rcPage;
+    CHARRANGE  chrg;
+} FORMATRANGE;
+
+typedef enum tagKHYPH
+{
+    khyphNil           = 0,
+    khyphNormal        = 1,
+    khyphAddBefore     = 2,
+    khyphChangeBefore  = 3,
+    khyphDeleteBefore  = 4,
+    khyphChangeAfter   = 5,
+    khyphDelAndChange  = 6
+} KHYPH;
+
+typedef struct hyphresult
+{
+    KHYPH      khyph;
+    long       ichHyph;
+    WCHAR      chHyph;
+} HYPHRESULT;
+
+typedef struct tagHyphenateInfo
+{
+    SHORT      cbSize;
+    SHORT      dxHyphenateZone;
+    void       (WINAPI* pfnHyphenate)(WCHAR*, LANGID, long, HYPHRESULT*);
+} HYPHENATEINFO;
+
+typedef struct _msgfilter {
+    NMHDR      nmhdr;
+    UINT       msg;
+    WPARAM     wParam;
+    LPARAM     lParam;
+} MSGFILTER;
+
+typedef struct _objectpositions {
+    NMHDR      nmhdr;
+    LONG       cObjectCount;
+    LONG       *pcpPositions;
+} OBJECTPOSITIONS;
+
+typedef struct _paraformat {
+    UINT       cbSize;
+    DWORD      dwMask;
+    WORD       wNumbering;
+    WORD       wReserved;
+    LONG       dxStartIndent;
+    LONG       dxRightIndent;
+    LONG       dxOffset;
+    WORD       wAlignment;
+    SHORT      cTabCount;
+    LONG       rgxTabs[MAX_TAB_STOPS];
+} PARAFORMAT;
+
+typedef struct _paraformat2 {
+    UINT       cbSize;
+    DWORD      dwMask;
+    WORD       wNumbering;
+    WORD       wEffects;
+    LONG       dxStartIndent;
+    LONG       dxRightIndent;
+    LONG       dxOffset;
+    WORD       wAlignment;
+    SHORT      cTabCount;
+    LONG       rgxTabs[MAX_TAB_STOPS];
+    LONG       dySpaceBefore, dySpaceAfter, dyLineSpacing;
+    SHORT      sStyle;
+    BYTE       bLineSpacingRule, bOutlineLevel;
+    WORD       wShadingWeight, wShadingStyle;
+    WORD       wNumberingStart, wNumberingStyle, wNumberingTab;
+    WORD       wBorderSpace, wBorderWidth, wBorders;
+} PARAFORMAT2;
+
+typedef struct _selchange {
+    NMHDR      nmhdr;
+    CHARRANGE  chrg;
+    WORD       seltyp;
+} SELCHANGE;
+
+typedef struct _reqresize {
+    NMHDR      nmhdr;
+    RECT       rc;
+} REQRESIZE;
+
+typedef struct _repastespecial {
+    DWORD      dwAspect;
+    DWORD      dwParam;
+} REPASTESPECIAL;
+
+typedef struct _punctuation {
+    UINT       iSize;
+    LPSTR      szPunctuation;
+} PUNCTUATION;
+
+typedef struct _gettextex {
+    DWORD      cb;
+    DWORD      flags;
+    UINT       codepage;
+    LPCSTR     lpDefaultChar;
+    LPBOOL     lpUsedDefChar;
+} GETTEXTEX;
+
+typedef struct _imecomptext {
+    LONG       cb;
+    DWORD      flags;
+} IMECOMPTEXT;
+
+void WINAPI HyphenateProc(WCHAR*, LANGID, long, HYPHRESULT*);
+
+#define SF_TEXT		      0x00000001
+#define SF_RTF		      0x00000002
+#define SF_RTFNOOBJS	      0x00000003
+#define SF_TEXTIZED	      0x00000004
+#define SF_UNICODE            0x00000010
+#define SF_USECODEPAGE        0x00000020
+#define SF_NCRFORNONASCII     0x00000040
+#define SF_RTFVAL             0x00000700
+
+/* BIDIOPTIONS.wMask flag values */
+#define BOM_DEFPARADIR        0x00000001
+#define BOM_PLAINTEXT         0x00000002
+#define BOM_NEUTRALOVERRIDE   0x00000004
+#define BOM_CONTEXTREADING    0x00000008
+#define BOM_CONTEXTALIGNMENT  0x00000010
+#define BOM_LEGACYBIDICLASS   0x00000040
+
+/* BIDIOPTIONS.wEffects flag values */
+#define BOE_RTLDIR            0x00000001
+#define BOE_PLAINTEXT         0x00000002
+#define BOE_NEUTRALOVERRIDE   0x00000004
+#define BOE_CONTEXTREADING    0x00000008
+#define BOE_CONTEXTALIGNMENT  0x00000010
+#define BOE_LEGACYBIDICLASS   0x00000040
+
+/* Clipboard formats */
+#define CF_RTF          TEXT("Rich Text Format")
+#define CF_RTFNOOBJS    TEXT("Rich Text Format Without Objects")
+#define CF_RETEXTOBJ    TEXT("RichEdit Text and Objects")
+
+/* Mode bias wParam values for EM_SETCTFMODEBIAS message */
+#define CTFMODEBIAS_DEFAULT                0x00000000
+#define CTFMODEBIAS_FILENAME               0x00000001
+#define CTFMODEBIAS_NAME                   0x00000002
+#define CTFMODEBIAS_READING                0x00000003
+#define CTFMODEBIAS_DATETIME               0x00000004
+#define CTFMODEBIAS_CONVERSATION           0x00000005
+#define CTFMODEBIAS_NUMERIC                0x00000006
+#define CTFMODEBIAS_HIRAGANA               0x00000007
+#define CTFMODEBIAS_KATAKANA               0x00000008
+#define CTFMODEBIAS_HANGUL                 0x00000009
+#define CTFMODEBIAS_HALFWIDTHKATAKANA      0x0000000a
+#define CTFMODEBIAS_FULLWIDTHALPHANUMERIC  0x0000000b
+#define CTFMODEBIAS_HALFWIDTHALPHANUMERIC  0x0000000c
+
+#define EMO_EXIT              0x00000000
+#define EMO_ENTER             0x00000001
+#define EMO_PROMOTE           0x00000002
+#define EMO_EXPAND            0x00000003
+#define EMO_MOVESELECTION     0x00000004
+#define EMO_GETVIEWMODE       0x00000005
+
+#define EMO_EXPANDSELECTION   0x00000000
+#define EMO_EXPANDDOCUMENT    0x00000001
+
+/* Page Rotate values used in wParam of EM_SETPAGEROTATE message */
+#define EPR_0                 0x00000000
+#define EPR_270               0x00000001
+#define EPR_180               0x00000002
+#define EPR_90                0x00000003
+
+/* Find flags for wParam of EM_FINDTEXT message */
+#define FR_MATCHDIAC          0x20000000
+#define FR_MATCHKASHIDA       0x40000000
+#define FR_MATCHALEFHAMZA     0x80000000
+
+/* IME Compatibility Mode return values for EM_GETIMECOMPMODE message */
+#define ICM_NOTOPEN           0x00000000
+#define ICM_LEVEL3            0x00000001
+#define ICM_LEVEL2            0x00000002
+#define ICM_LEVEL2_5          0x00000003
+#define ICM_LEVEL2_SUI        0x00000004
+#define ICM_CTF               0x00000005
+
+/* Flags value for IMECOMPTEXT structure */
+#define ICT_RESULTREADSTR     0x00000001
+
+/* Input Method Flags used in EM_SETLANGOPTIONS message */
+#define IMF_AUTOKEYBOARD        0x00000001
+#define IMF_AUTOFONT            0x00000002
+#define IMF_IMECANCELCOMPLETE   0x00000004
+#define IMF_IMEALWAYSSENDNOTIFY 0x00000008
+#define IMF_AUTOFONTSIZEADJUST  0x00000010
+#define IMF_UIFONTS             0x00000020
+#define IMF_DUALFONT            0x00000080
+
+/* Parameters values for the EM_SETIMEMODEBIAS message */
+#define IMF_SMODE_PLAURALCLAUSE 0x00000001
+#define IMF_SMODE_NONE          0x00000002
+
+/* Parameters of the EM_SETIMEOPTIONS message */
+#define IMF_FORCENONE         0x00000001
+#define IMF_FORCEENABLE       0x00000002
+#define IMF_FORCEDISABLE      0x00000004
+#define IMF_CLOSESTATUSWINDOW 0x00000008
+#define IMF_VERTICAL          0x00000020
+#define IMF_FORCEACTIVE       0x00000040
+#define IMF_FORCEINACTIVE     0x00000080
+#define IMF_FORCEREMEMBER     0x00000100
+#define IMF_MULTIPLEEDIT      0x00000400
+
+/* return values of the EM_SELECTION_TYPE message */
+#define SEL_EMPTY             0x00000000
+#define SEL_TEXT              0x00000001
+#define SEL_OBJECT            0x00000002
+#define SEL_MULTICHAR         0x00000004
+#define SEL_MULTIOBJECT       0x00000008
+
+/* ENOLEOPFAILED.lOper value that indicates operation failure */
+#define OLEOP_DOVERB          0x00000001
+
+/* punctionation type values for wParam of EM_SETPUNCTUATION message */
+#define PC_FOLLOWING          0x00000001
+#define PC_LEADING            0x00000002
+#define PC_OVERFLOW           0x00000003
+#define PC_DELIMITER          0x00000004
+
+/* mask values in the PARAFORMAT structure */
+#define PFM_STARTINDENT       0x00000001
+#define PFM_RIGHTINDENT       0x00000002
+#define PFM_OFFSET            0x00000004
+#define PFM_ALIGNMENT         0x00000008
+#define PFM_TABSTOPS          0x00000010
+#define PFM_NUMBERING         0x00000020
+#define PFM_OFFSETINDENT      0x80000000
+
+/* mask values in the PARAFORMAT2 structure */
+#define PFM_SPACEBEFORE       0x00000040
+#define PFM_SPACEAFTER        0x00000080
+#define PFM_LINESPACING       0x00000100
+#define PFM_STYLE             0x00000400
+#define PFM_BORDER            0x00000800
+#define PFM_SHADING           0x00001000
+#define PFM_NUMBERINGSTYLE    0x00002000
+#define PFM_NUMBERINGTAB      0x00004000
+#define PFM_NUMBERINGSTART    0x00008000
+#define PFM_RTLPARA           0x00010000
+#define PFM_KEEP              0x00020000
+#define PFM_KEEPNEXT          0x00040000
+#define PFM_PAGEBREAKBEFORE   0x00080000
+#define PFM_NOLINENUMBER      0x00100000
+#define PFM_NOWIDOWCONTROL    0x00200000
+#define PFM_DONOTHYPHEN       0x00400000
+#define PFM_SIDEBYSIDE        0x00800000
+#define PFM_COLLAPSED         0x01000000
+#define PFM_OUTLINELEVEL      0x02000000
+#define PFM_BOX               0x04000000
+#define PFM_RESERVED2         0x08000000
+#define PFM_TABLEROWDELIMITER 0x10000000
+#define PFM_TEXTWRAPPINGBREAK 0x20000000
+#define PFM_TABLE             0x40000000
+
+#define PFM_ALL               (PFM_STARTINDENT | \
+                               PFM_RIGHTINDENT | \
+                               PFM_OFFSET | \
+                               PFM_ALIGNMENT | \
+                               PFM_TABSTOPS | \
+                               PFM_NUMBERING | \
+                               PFM_OFFSETINDENT | \
+                               PFM_RTLPARA)
+
+#define PFM_EFFECTS           (PFM_RTLPARA | \
+                               PFM_KEEP | \
+                               PFM_KEEPNEXT | \
+                               PFM_PAGEBREAKBEFORE | \
+                               PFM_NOLINENUMBER | \
+                               PFM_NOWIDOWCONTROL | \
+                               PFM_DONOTHYPHEN | \
+                               PFM_SIDEBYSIDE | \
+                               PFM_TABLEROWDELIMITER | \
+                               PFM_TABLE)
+
+#define PFM_ALL2              (PFM_ALL | \
+                               PFM_EFFECTS | \
+                               PFM_SPACEBEFORE | \
+                               PFM_SPACEAFTER | \
+                               PFM_LINESPACING | \
+                               PFM_STYLE | \
+                               PFM_BORDER | \
+                               PFM_SHADING | \
+                               PFM_NUMBERINGSTYLE | \
+                               PFM_NUMBERINGTAB | \
+                               PFM_NUMBERINGSTART)
+
+/* numbering option */
+#define PFN_BULLET            0x00000001
+#define PFN_ARABIC            0x00000002
+#define PFN_LCLETTER          0x00000003
+#define PFN_UCLETTER          0x00000004
+#define PFN_LCROMAN           0x00000005
+#define PFN_UCROMAN           0x00000006
+
+/* paragraph format numbering styles */
+#define PFNS_PAREN            0x00000000
+#define PFNS_PARENS           0x00000100
+#define PFNS_PERIOD           0x00000200
+#define PFNS_PLAIN            0x00000300
+#define PFNS_NONUMBER         0x00000400
+#define PFNS_NEWNUMBER        0x00008000
+
+/* paragraph alignment */
+#define PFA_LEFT              0x00000001
+#define PFA_RIGHT             0x00000002
+#define PFA_CENTER            0x00000003
+#define PFA_JUSTIFY           0x00000004
+#define PFA_FULL_INTERWORD    0x00000004
+#define PFA_FULL_INTERLETTER  0x00000005
+#define PFA_FULL_SCALED       0x00000006
+#define PFA_FULL_GLYPHS       0x00000007
+#define PFA_SNAP_GRID         0x00000008
+
+/* paragraph effects */
+#define PFE_RTLPARA           0x00000001
+#define PFE_KEEP              0x00000002
+#define PFE_KEEPNEXT          0x00000004
+#define PFE_PAGEBREAKBEFORE   0x00000008
+#define PFE_NOLINENUMBER      0x00000010
+#define PFE_NOWIDOWCONTROL    0x00000020
+#define PFE_DONOTHYPHEN       0x00000040
+#define PFE_SIDEBYSIDE        0x00000080
+#define PFE_COLLAPSED         0x00000100
+#define PFE_BOX               0x00000400
+#define PFE_TABLEROWDELIMITER 0x00001000
+#define PFE_TEXTWRAPPINGBREAK 0x00002000
+#define PFE_TABLE             0x00004000
+
+/* Set Edit Style flags for EM_SETEDITSTYLE message */
+#define SES_EMULATESYSEDIT      0x00000001
+#define SES_BEEPONMAXTEXT       0x00000002
+#define SES_EXTENDBACKCOLOR     0x00000004
+#define SES_MAPCPS              0x00000008
+#define SES_EMULATE10           0x00000010
+#define SES_USECRLF             0x00000020
+#define SES_NOXLTSYMBOLRANGE    0x00000020
+#define SES_USEAIMM             0x00000040
+#define SES_NOIME               0x00000080
+#define SES_ALLOWBEEPS          0x00000100
+#define SES_UPPERCASE           0x00000200
+#define SES_LOWERCASE           0x00000400
+#define SES_NOINPUTSEQUENCECHK  0x00000800
+#define SES_BIDI                0x00001000
+#define SES_SCROLLONKILLFOCUS   0x00002000
+#define SES_XLTCRCRLFTOCR       0x00004000
+#define SES_DRAFTMODE           0x00008000
+#define SES_USECTF              0x00010000
+#define SES_HIDEGRIDLINES       0x00020000
+#define SES_USEATFONT           0x00040000
+#define SES_CUSTOMLOOK          0x00080000
+#define SES_LBSCROLLNOTIFY      0x00100000
+#define SES_CTFALLOWEMBED       0x00200000
+#define SES_CTFALLOWSMARTTAG    0x00400000
+#define SES_CTFALLOWPROOFING    0x00800000
+
+/* streaming flags */
+#define SFF_WRITEXTRAPAR      0x00000080
+#define SFF_PWD               0x00000800
+#define SFF_KEEPDOCINFO       0x00001000
+#define SFF_PERSISTVIEWSCALE  0x00002000
+#define SFF_PLAINRTF          0x00004000
+#define SFF_SELECTION         0x00008000
+
+typedef enum _undonameid
+{
+    UID_UNKNOWN     = 0,
+    UID_TYPING      = 1,
+    UID_DELETE      = 2,
+    UID_DRAGDROP    = 3,
+    UID_CUT         = 4,
+    UID_PASTE       = 5,
+    UID_AUTOCORRECT = 6
+} UNDONAMEID;
+
+typedef LONG (*EDITWORDBREAKPROCEX)(char*,LONG,BYTE,INT);
+
+#define VM_OUTLINE            0x00000002
+#define VM_NORMAL             0x00000004
+#define VM_PAGE               0x00000009
+
+/* options of the EM_FINDWORDBREAK message */
+#define WB_CLASSIFY           0x00000003
+#define WB_MOVEWORDLEFT       0x00000004
+#define WB_MOVEWORDPREV       0x00000004
+#define WB_MOVEWORDRIGHT      0x00000005
+#define WB_MOVEWORDNEXT       0x00000005
+#define WB_LEFTBREAK          0x00000006
+#define WB_PREVBREAK          0x00000006
+#define WB_RIGHTBREAK         0x00000007
+#define WB_NEXTBREAK          0x00000007
+
+/* options of the EM_SETWORDWRAPMODE message */
+#define WBF_WORDWRAP          0x00000010
+#define WBF_WORDBREAK         0x00000020
+#define WBF_OVERFLOW          0x00000040
+#define WBF_LEVEL1            0x00000080
+#define WBF_LEVEL2            0x00000100
+#define WBF_CUSTOM            0x00000200
+
+#define WBF_CLASS             ((BYTE) 0x0F)
+#define WBF_ISWHITE           ((BYTE) 0x10)
+#define WBF_BREAKLINE         ((BYTE) 0x20)
+#define WBF_BREAKAFTER        ((BYTE) 0x40)
+
+/* Placeholder unicode character for an embedded object */
+#ifndef WCH_EMBEDDING
+#define WCH_EMBEDDING         (WCHAR)0xFFFC
+#endif
+
+/* options of the EM_SETTEXTMODE message */
+#define TM_PLAINTEXT          0x00000001
+#define TM_RICHTEXT           0x00000002
+#define TM_SINGLELEVELUNDO    0x00000004
+#define TM_MULTILEVELUNDO     0x00000008
+#define TM_SINGLECODEPAGE     0x00000010
+#define TM_MULTICODEPAGE      0x00000020
+
+/* GETTEXTEX structure flags */
+#define GT_DEFAULT            0x00000000
+#define GT_USECRLF            0x00000001
+#define GT_SELECTION          0x00000002
+#define GT_RAWTEXT            0x00000004
+#define GT_NOHIDDENTEXT       0x00000008
+
+/* Options of the EM_SETTYPOGRAPHYOPTIONS message */
+#define TO_ADVANCEDTYPOGRAPHY   0x00000001
+#define TO_SIMPLELINEBREAK      0x00000002
+#define TO_DISABLECUSTOMTEXTOUT 0x00000004
+#define TO_ADVANCEDLAYOUT       0x00000008
+
+typedef struct _gettextlengthex {
+    DWORD      flags;
+    UINT       codepage;
+} GETTEXTLENGTHEX;
+
+/* Flags of the GETTEXTLENGTHEX structure */
+#define GTL_DEFAULT           0x00000000
+#define GTL_USECRLF           0x00000001
+#define GTL_PRECISE           0x00000002
+#define GTL_CLOSE             0x00000004
+#define GTL_NUMCHARS          0x00000008
+#define GTL_NUMBYTES          0x00000010
+
+#define GCM_RIGHTMOUSEDROP    0x8000
+
+/* Options of the EM_SETTEXTEX message */
+typedef struct _settextex {
+    DWORD	flags;
+    UINT	codepage;
+} SETTEXTEX;
+
+/* Flags of the EM_SETTEXTEX message */
+#define ST_DEFAULT	      0x00000000	
+#define ST_KEEPUNDO           0x00000001
+#define ST_SELECTION          0x00000002
+
+#define ST_NEWCHARS           0x00000004
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <poppack.h>
+
+#endif /* __WINE_RICHEDIT_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/richole.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/richole.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/richole.idl	(revision 16410)
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2002 Andriy Palamarchuk
+ * Copyright (C) 2004 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+cpp_quote("#if 0")  /* not included on Windows */
+import "oleidl.idl";
+cpp_quote("#endif")
+
+/* REOBJECT structure flags */
+cpp_quote("#define REO_GETOBJ_NO_INTERFACES        0x00000000")
+cpp_quote("#define REO_GETOBJ_POLEOBJ              0x00000001")
+cpp_quote("#define REO_GETOBJ_PSTG                 0x00000002")
+cpp_quote("#define REO_GETOBJ_POLESITE             0x00000004")
+cpp_quote("#define REO_GETOBJ_ALL_INTERFACES       0x00000007")
+cpp_quote("#define REO_CP_SELECTION                0xFFFFFFFF")
+cpp_quote("#define REO_IOB_SELECTION               0xFFFFFFFF")
+cpp_quote("#define REO_IOB_USE_CP                  0xFFFFFFFE")
+cpp_quote("#define REO_NULL                        0x00000000")
+cpp_quote("#define REO_READWRITEMASK               0x0000003F")
+cpp_quote("#define REO_DONTNEEDPALETTE             0x00000020")
+cpp_quote("#define REO_BLANK                       0x00000010")
+cpp_quote("#define REO_DYNAMICSIZE                 0x00000008")
+cpp_quote("#define REO_INVERTEDSELECT              0x00000004")
+cpp_quote("#define REO_BELOWBASELINE               0x00000002")
+cpp_quote("#define REO_RESIZABLE                   0x00000001")
+cpp_quote("#define REO_LINK                        0x80000000")
+cpp_quote("#define REO_STATIC                      0x40000000")
+cpp_quote("#define REO_SELECTED                    0x08000000")
+cpp_quote("#define REO_OPEN                        0x04000000")
+cpp_quote("#define REO_INPLACEACTIVE               0x02000000")
+cpp_quote("#define REO_HILITED                     0x01000000")
+cpp_quote("#define REO_LINKAVAILABLE               0x00800000")
+cpp_quote("#define REO_GETMETAFILE                 0x00400000")
+
+/* clipboard operation flags */
+cpp_quote("#define RECO_PASTE            0x00000000")
+cpp_quote("#define RECO_DROP             0x00000001")
+cpp_quote("#define RECO_COPY             0x00000002")
+cpp_quote("#define RECO_CUT              0x00000003")
+cpp_quote("#define RECO_DRAG             0x00000004")
+
+typedef struct _reobject {
+    DWORD cbStruct;
+    LONG cp;
+    CLSID clsid;
+    LPOLEOBJECT poleobj;
+    LPSTORAGE pstg;
+    LPOLECLIENTSITE polesite;
+    SIZEL sizel;
+    DWORD dvaspect;
+    DWORD dwFlags;
+    DWORD dwUser;
+} REOBJECT;
+
+cpp_quote("#ifndef __RICHEDIT_CHARRANGE_DEFINED")
+cpp_quote("#define __RICHEDIT_CHARRANGE_DEFINED")
+
+typedef struct _charrange
+{
+    LONG cpMin;
+    LONG cpMax;
+} CHARRANGE;
+
+cpp_quote("#endif /* __RICHEDIT_CHARRANGE_DEFINED */")
+
+/*****************************************************************************
+ * IRichEditOle
+ */
+[
+  object,
+  uuid(00020d00-0000-0000-c000-000000000046),
+  pointer_default(unique)
+]
+interface IRichEditOle : IUnknown
+{
+    typedef [unique] IRichEditOle *LPRICHEDITOLE;
+
+    HRESULT GetClientSite(LPOLECLIENTSITE *lplpolesite);
+    HRESULT GetObjectCount();
+    HRESULT GetLinkCount();
+    HRESULT GetObject(LONG iob, REOBJECT *lpreobject, DWORD dwFlags);
+    HRESULT InsertObject(REOBJECT *lpreobject);
+    HRESULT ConvertObject(LONG iob, REFCLSID rclsidNew, LPCSTR lpstrUserTypeNew);
+    HRESULT ActivateAs(REFCLSID rclsid, REFCLSID rclsidAs);
+    HRESULT SetHostNames(LPCSTR lpstrContainerApp, LPCSTR lpstrContainerObj);
+    HRESULT SetLinkAvailable(LONG iob, BOOL fAvailable);
+    HRESULT SetDvaspect(LONG iob, DWORD dvaspect);
+    HRESULT HandsOffStorage(LONG iob);
+    HRESULT SaveCompleted(LONG iob, LPSTORAGE lpstg);
+    HRESULT InPlaceDeactivate();
+    HRESULT ContextSensitiveHelp(BOOL fEnterMode);
+    HRESULT GetClipboardData(CHARRANGE* lpchrg, DWORD reco, LPDATAOBJECT *lplpdataobj);
+    HRESULT ImportDataObject(LPDATAOBJECT lpdataobj, CLIPFORMAT cf, HGLOBAL hMetaPict);
+}
+
+/*****************************************************************************
+ * IRichEditOleCallback
+ */
+[
+  object,
+  uuid(00020d03-0000-0000-c000-000000000046),
+  pointer_default(unique)
+]
+interface IRichEditOleCallback : IUnknown
+{
+    typedef [unique] IRichEditOleCallback *LPRICHEDITOLECALLBACK;
+
+    HRESULT GetNewStorage(LPSTORAGE *lplpstg);
+    HRESULT GetInPlaceContext(LPOLEINPLACEFRAME *lplpFrame, LPOLEINPLACEUIWINDOW *lplpDoc, LPOLEINPLACEFRAMEINFO lpFrameInfo);
+    HRESULT ShowContainerUI(BOOL fShow);
+    HRESULT QueryInsertObject(LPCLSID lpclsid, LPSTORAGE lpstg, LONG cp);
+    HRESULT DeleteObject(LPOLEOBJECT lpoleobj);
+    HRESULT QueryAcceptData(LPDATAOBJECT lpdataobj, CLIPFORMAT *lpcfFormat, DWORD reco, BOOL fReally, HGLOBAL hMetaPict);
+    HRESULT ContextSensitiveHelp(BOOL fEnterMode);
+    HRESULT GetClipboardData(CHARRANGE *lpchrg, DWORD reco, LPDATAOBJECT *lplpdataobj);
+    HRESULT GetDragDropEffect(BOOL fDrag, DWORD grfKeyState, LPDWORD pdwEffect);
+    HRESULT GetContextMenu(WORD seltype, LPOLEOBJECT lpoleobj, CHARRANGE *lpchrg, HMENU *lphmenu);
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/rmxfguid.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/rmxfguid.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/rmxfguid.h	(revision 16410)
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2007 Patrik Stridvall
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_RMXFGUID_H
+#define __WINE_RMXFGUID_H
+
+/*****************************************************************************
+ * Define GUIDs
+ */
+
+DEFINE_GUID(TID_D3DRMAnimation,             0x3d82ab4f, 0x62da, 0x11cf, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
+
+DEFINE_GUID(TID_D3DRMAnimationKey,          0x10dd46a8, 0x775b, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMAnimationOptions,      0xe2bf56c0, 0x840f, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMAnimationSet,          0x3d82ab50, 0x62da, 0x11cf, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
+
+DEFINE_GUID(TID_D3DRMAppData,               0xe5745280, 0xb24f, 0x11cf, 0x9d, 0xd5, 0x00, 0xaa, 0x00, 0xa7, 0x1a, 0x2f);
+
+DEFINE_GUID(TID_D3DRMBoolean,               0x537da6a0, 0xca37, 0x11d0, 0x94, 0x1c, 0x00, 0x80, 0xc8, 0x0c, 0xfa, 0x7b);
+
+DEFINE_GUID(TID_D3DRMBoolean2d,             0x4885ae63, 0x78e8, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMCamera,                0x3d82ab51, 0x62da, 0x11cf, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
+
+DEFINE_GUID(TID_D3DRMColorRGB,              0xd3e16e81, 0x7835, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMColorRGBA,             0x35ff44e0, 0x6c7c, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMCoords2d,              0xf6f23f44, 0x7686, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMExternalVisual,        0x98116aa0, 0xbdba, 0x11d1, 0x82, 0xc0, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x71);
+
+DEFINE_GUID(TID_D3DRMFloatKeys,             0x10dd46a9, 0x775b, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMFrame,                 0x3d82ab46, 0x62da, 0x11cf, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
+
+DEFINE_GUID(TID_D3DRMFramePosition,         0xe2bf56c1, 0x840f, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMFrameRotation,         0xe2bf56c3, 0x840f, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMFrameTransformMatrix,  0xf6f23f41, 0x7686, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMFrameVelocity,         0xe2bf56c2, 0x840f, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMGuid,                  0xa42790e0, 0x7810, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMIndexedColor,          0x1630b820, 0x7842, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMInfo,                  0x2b957100, 0x9e9a, 0x11cf, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
+
+DEFINE_GUID(TID_D3DRMInlineData,            0x3a23eea0, 0x94b1, 0x11d0, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
+
+DEFINE_GUID(TID_D3DRMLight,                 0x3d82ab4a, 0x62da, 0x11cf, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
+
+DEFINE_GUID(TID_D3DRMLightAttenuation,      0xa8a98ba0, 0xc5e5, 0x11cf, 0xb9, 0x41, 0x00, 0x80, 0xc8, 0x0c, 0xfa, 0x7b);
+
+DEFINE_GUID(TID_D3DRMLightPenumbra,         0xaed22741, 0xb31f, 0x11cf, 0x9d, 0xd5, 0x00, 0xaa, 0x00, 0xa7, 0x1a, 0x2f);
+
+DEFINE_GUID(TID_D3DRMLightRange,            0xaed22742, 0xb31f, 0x11cf, 0x9d, 0xd5, 0x00, 0xaa, 0x00, 0xa7, 0x1a, 0x2f);
+
+DEFINE_GUID(TID_D3DRMLightUmbra,            0xaed22740, 0xb31f, 0x11cf, 0x9d, 0xd5, 0x00, 0xaa, 0x00, 0xa7, 0x1a, 0x2f);
+
+DEFINE_GUID(TID_D3DRMMaterial,              0x3d82ab4d, 0x62da, 0x11cf, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
+
+DEFINE_GUID(TID_D3DRMMaterialAmbientColor,  0x01411840, 0x7786, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMMaterialArray,         0x35ff44e1, 0x6c7c, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMMaterialDiffuseColor,  0x01411841, 0x7786, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMMaterialEmissiveColor, 0xd3e16e80, 0x7835, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMMaterialPower,         0x01411843, 0x7786, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMMaterialSpecularColor, 0x01411842, 0x7786, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMMaterialWrap,          0x4885ae60, 0x78e8, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMMatrix4x4,             0xf6f23f45, 0x7686, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMMesh,                  0x3d82ab44, 0x62da, 0x11cf, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
+
+DEFINE_GUID(TID_D3DRMMeshFace,              0x3d82ab5f, 0x62da, 0x11cf, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
+
+DEFINE_GUID(TID_D3DRMMeshFaceWraps,         0xed1ec5c0, 0xc0a8, 0x11d0, 0x94, 0x1c, 0x00, 0x80, 0xc8, 0x0c, 0xfa, 0x7b);
+
+DEFINE_GUID(TID_D3DRMMeshMaterialList,      0xf6f23f42, 0x7686, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMMeshNormals,           0xf6f23f43, 0x7686, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMMeshTextureCoords,     0xf6f23f40, 0x7686, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMMeshVertexColors,      0x1630b821, 0x7842, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMProgressiveMesh,       0x8a63c360, 0x997d, 0x11d0, 0x94, 0x1c, 0x00, 0x80, 0xc8, 0x0c, 0xfa, 0x7b);
+
+DEFINE_GUID(TID_D3DRMPropertyBag,           0x7f0f21e1, 0xbfe1, 0x11d1, 0x82, 0xc0, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x71);
+
+DEFINE_GUID(TID_D3DRMRightHanded,           0x7f5d5ea0, 0xd53a, 0x11d1, 0x82, 0xc0, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x71);
+
+DEFINE_GUID(TID_D3DRMStringProperty,        0x7f0f21e0, 0xbfe1, 0x11d1, 0x82, 0xc0, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x71);
+
+DEFINE_GUID(TID_D3DRMTextureFilename,       0xa42790e1, 0x7810, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMTextureReference,      0xa42790e2, 0x7810, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMTimedFloatKeys,        0xf406b180, 0x7b3b, 0x11cf, 0x8f, 0x52, 0x00, 0x40, 0x33, 0x35, 0x94, 0xa3);
+
+DEFINE_GUID(TID_D3DRMUrl,                   0x3a23eea1, 0x94b1, 0x11d0, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
+
+DEFINE_GUID(TID_D3DRMVector,                0x3d82ab5e, 0x62da, 0x11cf, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
+
+#endif /* __WINE_RMXFGUID_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/rpc.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/rpc.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/rpc.h	(revision 16410)
@@ -0,0 +1,92 @@
+/*
+ *    RPC interface
+ *
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef RPC_NO_WINDOWS_H
+# ifdef __WINESRC__
+#  ifndef RC_INVOKED
+#   include <stdarg.h>
+#  endif
+#  include <windef.h>
+#  include <winbase.h>
+# else
+#  include <windows.h>
+# endif
+#endif
+
+#ifndef __WINE_RPC_H
+#define __WINE_RPC_H
+
+#if defined(__powerpc__) || defined(_MAC) /* ? */
+# define __RPC_MAC__
+ /* Also define __RPC_WIN32__ to ensure compatibility */
+# define __RPC_WIN32__
+#elif defined(_WIN64)
+# define __RPC_WIN64__
+#else
+# define __RPC_WIN32__
+#endif
+
+#include <basetsd.h>
+
+#define __RPC_FAR
+#define __RPC_API  __stdcall
+#define __RPC_USER __stdcall
+#define __RPC_STUB __stdcall
+#define RPC_ENTRY  __stdcall
+#define RPCRTAPI
+typedef long RPC_STATUS;
+
+typedef void* I_RPC_HANDLE;
+
+#include <rpcdce.h>
+/* #include <rpcnsi.h> */
+#include <rpcnterr.h>
+#include <excpt.h>
+#include <winerror.h>
+#ifndef RPC_NO_WINDOWS_H
+#include <rpcasync.h>
+#endif
+
+#ifdef USE_COMPILER_EXCEPTIONS
+
+#define RpcTryExcept __try {
+#define RpcExcept(expr) } __except (expr) {
+#define RpcEndExcept }
+#define RpcTryFinally __try {
+#define RpcFinally } __finally {
+#define RpcEndFinally }
+#define RpcExceptionCode() GetExceptionCode()
+#define RpcAbnormalTermination() AbnormalTermination()
+
+#else /* USE_COMPILER_EXCEPTIONS */
+
+/* ignore exception handling for now */
+#define RpcTryExcept if (1) {
+#define RpcExcept(expr) } else {
+#define RpcEndExcept }
+#define RpcTryFinally
+#define RpcFinally
+#define RpcEndFinally
+#define RpcExceptionCode() 0
+/* #define RpcAbnormalTermination() abort() */
+
+#endif /* USE_COMPILER_EXCEPTIONS */
+
+#endif /*__WINE_RPC_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/rpcasync.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/rpcasync.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/rpcasync.h	(revision 16410)
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2007 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __WINE_RPCASYNC_H
+#define __WINE_RPCASYNC_H
+
+
+typedef struct tagRPC_ERROR_ENUM_HANDLE
+{
+    ULONG Signature;
+    void* CurrentPos;
+    void* Head;
+} RPC_ERROR_ENUM_HANDLE;
+
+typedef enum tagExtendedErrorParamTypes
+{
+    eeptAnsiString = 1,
+    eeptUnicodeString,
+    eeptLongVal,
+    eeptShortVal,
+    eeptPointerVal,
+    eeptNone,
+    eeptBinary
+} ExtendedErrorParamTypes;
+
+#define MaxNumberOfEEInfoParams 4
+#define RPC_EEINFO_VERSION      1
+
+typedef struct tagBinaryParam
+{
+    void *Buffer;
+    short Size;
+} BinaryParam;
+
+typedef struct tagRPC_EE_INFO_PARAM
+{
+    ExtendedErrorParamTypes ParameterType;
+    union
+    {
+        LPSTR AnsiString;
+        LPWSTR UnicodeString;
+        LONG LVal;
+        short SVal;
+        ULONGLONG PVal;
+        BinaryParam BVal;
+    } u;
+} RPC_EE_INFO_PARAM;
+
+#define EEInfoPreviousRecordsMissing    0x1
+#define EEInfoNextRecordsMissing        0x2
+#define EEInfoUseFileTime               0x4
+
+#define EEInfoGCCOM                     11
+#define EEInfoGCFRS                     12
+
+typedef struct tagRPC_EXTENDED_ERROR_INFO
+{
+    ULONG Version;
+    LPWSTR ComputerName;
+    ULONG ProcessID;
+    union
+    {
+        SYSTEMTIME SystemTime;
+        FILETIME FileTime;
+    } u;
+    ULONG GeneratingComponent;
+    ULONG Status;
+    USHORT DetectionLocation;
+    USHORT Flags;
+    int NumberOfParameters;
+    RPC_EE_INFO_PARAM Parameters[MaxNumberOfEEInfoParams];
+} RPC_EXTENDED_ERROR_INFO;
+
+#define RPC_ASYNC_VERSION_1_0   sizeof(RPC_ASYNC_STATE)
+
+typedef enum _RPC_NOTIFICATION_TYPES
+{
+    RpcNotificationTypeNone,
+    RpcNotificationTypeEvent,
+    RpcNotificationTypeApc,
+    RpcNotificationTypeIoc,
+    RpcNotificationTypeHwnd,
+    RpcNotificationTypeCallback,
+} RPC_NOTIFICATION_TYPES;
+
+typedef enum _RPC_ASYNC_EVENT
+{
+    RpcCallComplete,
+    RpcSendComplete,
+    RpcReceiveComplete,
+    RpcClientDisconnect,
+    RpcClientCancel,
+} RPC_ASYNC_EVENT;
+
+struct _RPC_ASYNC_STATE;
+
+typedef void RPC_ENTRY RPCNOTIFICATION_ROUTINE(struct _RPC_ASYNC_STATE *,void *,RPC_ASYNC_EVENT);
+typedef RPCNOTIFICATION_ROUTINE *PFN_RPCNOTIFICATION_ROUTINE;
+
+typedef union _RPC_ASYNC_NOTIFICATION_INFO
+{
+    struct
+    {
+        PFN_RPCNOTIFICATION_ROUTINE NotificationRoutine;
+        HANDLE hThread;
+    } APC;
+    struct
+    {
+        HANDLE hIOPort;
+        DWORD dwNumberOfBytesTransferred;
+        DWORD_PTR dwCompletionKey;
+        LPOVERLAPPED lpOverlapped;
+    } IOC;
+    struct
+    {
+        HWND hWnd;
+        UINT Msg;
+    } HWND;
+    HANDLE hEvent;
+    PFN_RPCNOTIFICATION_ROUTINE NotificationRoutine;
+} RPC_ASYNC_NOTIFICATION_INFO, *PRPC_ASYNC_NOTIFICATION_INFO;
+
+#define RPC_C_NOTIFY_ON_SEND_COMPLETE   0x1
+#define RPC_C_INFINITE_TIMEOUT          INFINITE
+
+typedef struct _RPC_ASYNC_STATE
+{
+    unsigned int Size;
+    ULONG Signature;
+    LONG Lock;
+    ULONG Flags;
+    void *StubInfo;
+    void *UserInfo;
+    void *RuntimeInfo;
+    RPC_ASYNC_EVENT Event;
+    RPC_NOTIFICATION_TYPES NotificationType;
+    RPC_ASYNC_NOTIFICATION_INFO u;
+    LONG_PTR Reserved[4];
+} RPC_ASYNC_STATE, *PRPC_ASYNC_STATE;
+
+#define RpcAsyncGetCallHandle(async) (((PRPC_ASYNC_STATE)async)->RuntimeInfo)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncInitializeHandle(PRPC_ASYNC_STATE,unsigned int);
+RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncRegisterInfo(PRPC_ASYNC_STATE);
+RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncGetCallStatus(PRPC_ASYNC_STATE);
+RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncCompleteCall(PRPC_ASYNC_STATE,void *);
+RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncAbortCall(PRPC_ASYNC_STATE,ULONG);
+RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncCancelCall(PRPC_ASYNC_STATE,BOOL);
+RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncCleanupThread(DWORD);
+RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorStartEnumeration(RPC_ERROR_ENUM_HANDLE*);
+RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorGetNextRecord(RPC_ERROR_ENUM_HANDLE*,BOOL,RPC_EXTENDED_ERROR_INFO*);
+RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorEndEnumeration(RPC_ERROR_ENUM_HANDLE*);
+RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorResetEnumeration(RPC_ERROR_ENUM_HANDLE*);
+RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorGetNumberOfRecords(RPC_ERROR_ENUM_HANDLE*,int*);
+RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorSaveErrorInfo(RPC_ERROR_ENUM_HANDLE*,PVOID*,SIZE_T*);
+RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorLoadErrorInfo(PVOID,SIZE_T,RPC_ERROR_ENUM_HANDLE*);
+RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorAddRecord(RPC_EXTENDED_ERROR_INFO*);
+RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorClearInformation(void);
+RPCRTAPI RPC_STATUS RPC_ENTRY RpcGetAuthorizationContextForClient(RPC_BINDING_HANDLE,BOOL,LPVOID,PLARGE_INTEGER,LUID,DWORD,PVOID,PVOID*);
+RPCRTAPI RPC_STATUS RPC_ENTRY RpcFreeAuthorizationContext(PVOID*);
+RPCRTAPI RPC_STATUS RPC_ENTRY RpcSsContextLockExclusive(RPC_BINDING_HANDLE,PVOID);
+RPCRTAPI RPC_STATUS RPC_ENTRY RpcSsContextLockShared(RPC_BINDING_HANDLE,PVOID);
+
+RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcAsyncSetHandle(PRPC_MESSAGE,PRPC_ASYNC_STATE);
+RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcAsyncAbortCall(PRPC_ASYNC_STATE,ULONG);
+RPCRTAPI int        RPC_ENTRY I_RpcExceptionFilter(ULONG);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/rpcdce.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/rpcdce.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/rpcdce.h	(revision 16410)
@@ -0,0 +1,557 @@
+/*
+ * Copyright (C) 2000 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_RPCDCE_H
+#define __WINE_RPCDCE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef IN
+#define IN
+#endif
+#ifndef OUT
+#define OUT
+#endif
+#ifndef OPTIONAL
+#define OPTIONAL
+#endif
+
+#ifndef GUID_DEFINED
+#include <guiddef.h>
+#endif
+
+#ifndef UUID_DEFINED
+#define UUID_DEFINED
+typedef GUID UUID;
+#endif
+
+typedef unsigned char* RPC_CSTR;
+typedef unsigned short* RPC_WSTR;
+typedef void* RPC_AUTH_IDENTITY_HANDLE;
+typedef void* RPC_AUTHZ_HANDLE;
+typedef void* RPC_IF_HANDLE;
+typedef I_RPC_HANDLE RPC_BINDING_HANDLE;
+typedef RPC_BINDING_HANDLE handle_t;
+#define rpc_binding_handle_t RPC_BINDING_HANDLE
+#define RPC_MGR_EPV void
+
+typedef struct _RPC_BINDING_VECTOR
+{
+  unsigned long Count;
+  RPC_BINDING_HANDLE BindingH[1];
+} RPC_BINDING_VECTOR;
+#define rpc_binding_vector_t RPC_BINDING_VECTOR
+
+typedef struct _UUID_VECTOR
+{
+  unsigned long Count;
+  UUID *Uuid[1];
+} UUID_VECTOR;
+#define uuid_vector_t UUID_VECTOR
+
+typedef struct _RPC_IF_ID
+{
+  UUID Uuid;
+  unsigned short VersMajor;
+  unsigned short VersMinor;
+} RPC_IF_ID;
+
+typedef struct
+{
+  unsigned long Count;
+  RPC_IF_ID *IfId[1];
+} RPC_IF_ID_VECTOR;
+
+typedef struct
+{
+  unsigned int Count;
+  unsigned long Stats[1];
+} RPC_STATS_VECTOR;
+
+typedef I_RPC_HANDLE *RPC_EP_INQ_HANDLE;
+
+#define RPC_C_EP_ALL_ELTS 0
+#define RPC_C_EP_MATCH_BY_IF 1
+#define RPC_C_EP_MATCH_BY_OBJ 2
+#define RPC_C_EP_MATCH_BY_BOTH 3
+
+#define RPC_C_VERS_ALL 1
+#define RPC_C_VERS_COMPATIBLE 2
+#define RPC_C_VERS_EXACT 3
+#define RPC_C_VERS_MAJOR_ONLY 4
+#define RPC_C_VERS_UPTO 5
+
+#define RPC_C_BINDING_INFINITE_TIMEOUT 10
+#define RPC_C_BINDING_MIN_TIMEOUT 0
+#define RPC_C_BINDING_DEFAULT_TIMEOUT 5
+#define RPC_C_BINDING_MAX_TIMEOUT 9
+
+#define RPC_C_CANCEL_INFINITE_TIMEOUT -1
+
+#define RPC_C_LISTEN_MAX_CALLS_DEFAULT 1234
+#define RPC_C_PROTSEQ_MAX_REQS_DEFAULT 10
+
+/* RPC_POLICY EndpointFlags */
+#define RPC_C_BIND_TO_ALL_NICS          0x1
+#define RPC_C_USE_INTERNET_PORT         0x1
+#define RPC_C_USE_INTRANET_PORT         0x2
+#define RPC_C_DONT_FAIL                 0x4
+
+/* RPC_POLICY EndpointFlags specific to the Falcon/RPC transport */
+#define RPC_C_MQ_TEMPORARY                  0x0000
+#define RPC_C_MQ_PERMANENT                  0x0001
+#define RPC_C_MQ_CLEAR_ON_OPEN              0x0002
+#define RPC_C_MQ_USE_EXISTING_SECURITY      0x0004
+#define RPC_C_MQ_AUTHN_LEVEL_NONE           0x0000
+#define RPC_C_MQ_AUTHN_LEVEL_PKT_INTEGRITY  0x0008
+#define RPC_C_MQ_AUTHN_LEVEL_PKT_PRIVACY    0x0010
+
+#define RPC_C_AUTHN_LEVEL_DEFAULT 0
+#define RPC_C_AUTHN_LEVEL_NONE 1
+#define RPC_C_AUTHN_LEVEL_CONNECT 2
+#define RPC_C_AUTHN_LEVEL_CALL 3
+#define RPC_C_AUTHN_LEVEL_PKT 4
+#define RPC_C_AUTHN_LEVEL_PKT_INTEGRITY 5
+#define RPC_C_AUTHN_LEVEL_PKT_PRIVACY 6
+
+#define RPC_C_AUTHN_NONE 0
+#define RPC_C_AUTHN_DCE_PRIVATE 1
+#define RPC_C_AUTHN_DCE_PUBLIC 2
+#define RPC_C_AUTHN_DEC_PUBLIC 4
+#define RPC_C_AUTHN_GSS_NEGOTIATE 9
+#define RPC_C_AUTHN_WINNT 10
+#define RPC_C_AUTHN_GSS_SCHANNEL 14
+#define RPC_C_AUTHN_GSS_KERBEROS 16
+#define RPC_C_AUTHN_DPA 17
+#define RPC_C_AUTHN_MSN 18
+#define RPC_C_AUTHN_DIGEST 21
+#define RPC_C_AUTHN_MQ 100
+#define RPC_C_AUTHN_DEFAULT 0xffffffff
+
+#define RPC_C_AUTHZ_NONE 0
+#define RPC_C_AUTHZ_NAME 1
+#define RPC_C_AUTHZ_DCE  2
+#define RPC_C_AUTHZ_DEFAULT 0xffffffff
+
+/* values for RPC_SECURITY_QOS*::ImpersonationType */
+#define RPC_C_IMP_LEVEL_DEFAULT     0
+#define RPC_C_IMP_LEVEL_ANONYMOUS   1
+#define RPC_C_IMP_LEVEL_IDENTIFY    2
+#define RPC_C_IMP_LEVEL_IMPERSONATE 3
+#define RPC_C_IMP_LEVEL_DELEGATE    4
+
+/* values for RPC_SECURITY_QOS*::IdentityTracking */
+#define RPC_C_QOS_IDENTIFY_STATIC   0
+#define RPC_C_QOS_IDENTIFY_DYNAMIC  1
+
+/* flags for RPC_SECURITY_QOS*::Capabilities */
+#define RPC_C_QOS_CAPABILITIES_DEFAULT          0x0
+#define RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH      0x1
+#define RPC_C_QOS_CAPABILITIES_MAKE_FULLSIC     0x2
+#define RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY    0x4
+
+/* values for RPC_SECURITY_QOS*::Version */
+#define RPC_C_SECURITY_QOS_VERSION      1
+#define RPC_C_SECURITY_QOS_VERSION_1    1
+#define RPC_C_SECURITY_QOS_VERSION_2    2
+
+/* flags for RPC_SECURITY_QOS_V2::AdditionalSecurityInfoType */
+#define RPC_C_AUTHN_INFO_TYPE_HTTP  1
+
+/* flags for RPC_HTTP_TRANSPORT_CREDENTIALS::Flags */
+#define RPC_C_HTTP_FLAG_USE_SSL                 0x1
+#define RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME   0x2
+
+/* values for RPC_HTTP_TRANSPORT_CREDENTIALS::AuthenticationTarget */
+#define RPC_C_HTTP_AUTHN_TARGET_SERVER  1
+#define RPC_C_HTTP_AUTHN_TARGET_PROXY   2
+
+#define RPC_C_HTTP_AUTHN_SCHEME_BASIC       0x01
+#define RPC_C_HTTP_AUTHN_SCHEME_NTLM        0x02
+#define RPC_C_HTTP_AUTHN_SCHEME_PASSPORT    0x04
+#define RPC_C_HTTP_AUTHN_SCHEME_DIGEST      0x08
+#define RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE   0x10
+
+typedef RPC_STATUS RPC_ENTRY RPC_IF_CALLBACK_FN( RPC_IF_HANDLE InterfaceUuid, void *Context );
+typedef void (__RPC_USER *RPC_AUTH_KEY_RETRIEVAL_FN)();
+
+typedef struct _RPC_POLICY
+{
+  unsigned int  Length;
+  unsigned long EndpointFlags;
+  unsigned long NICFlags;
+} RPC_POLICY,  *PRPC_POLICY;
+
+typedef struct _SEC_WINNT_AUTH_IDENTITY_W
+{
+    unsigned short* User;
+    unsigned long UserLength;
+    unsigned short* Domain;
+    unsigned long DomainLength;
+    unsigned short* Password;
+    unsigned long PasswordLength;
+    unsigned long Flags;
+} SEC_WINNT_AUTH_IDENTITY_W, *PSEC_WINNT_AUTH_IDENTITY_W;
+
+typedef struct _SEC_WINNT_AUTH_IDENTITY_A
+{
+    unsigned char* User;
+    unsigned long UserLength;
+    unsigned char* Domain;
+    unsigned long DomainLength;
+    unsigned char* Password;
+    unsigned long PasswordLength;
+    unsigned long Flags;
+} SEC_WINNT_AUTH_IDENTITY_A, *PSEC_WINNT_AUTH_IDENTITY_A;
+
+typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_W
+{
+    SEC_WINNT_AUTH_IDENTITY_W *TransportCredentials;
+    unsigned long Flags;
+    unsigned long AuthenticationTarget;
+    unsigned long NumberOfAuthnSchemes;
+    unsigned long *AuthnSchemes;
+    unsigned short *ServerCertificateSubject;
+} RPC_HTTP_TRANSPORT_CREDENTIALS_W, *PRPC_HTTP_TRANSPORT_CREDENTIALS_W;
+
+typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_A
+{
+    SEC_WINNT_AUTH_IDENTITY_A *TransportCredentials;
+    unsigned long Flags;
+    unsigned long AuthenticationTarget;
+    unsigned long NumberOfAuthnSchemes;
+    unsigned long *AuthnSchemes;
+    unsigned char *ServerCertificateSubject;
+} RPC_HTTP_TRANSPORT_CREDENTIALS_A, *PRPC_HTTP_TRANSPORT_CREDENTIALS_A;
+
+typedef struct _RPC_SECURITY_QOS {
+    unsigned long Version;
+    unsigned long Capabilities;
+    unsigned long IdentityTracking;
+    unsigned long ImpersonationType;
+} RPC_SECURITY_QOS, *PRPC_SECURITY_QOS;
+
+typedef struct _RPC_SECURITY_QOS_V2_W
+{
+    unsigned long Version;
+    unsigned long Capabilities;
+    unsigned long IdentityTracking;
+    unsigned long ImpersonationType;
+    unsigned long AdditionalSecurityInfoType;
+    union
+    {
+        RPC_HTTP_TRANSPORT_CREDENTIALS_W *HttpCredentials;
+    } u;
+} RPC_SECURITY_QOS_V2_W, *PRPC_SECURITY_QOS_V2_W;
+
+typedef struct _RPC_SECURITY_QOS_V2_A
+{
+    unsigned long Version;
+    unsigned long Capabilities;
+    unsigned long IdentityTracking;
+    unsigned long ImpersonationType;
+    unsigned long AdditionalSecurityInfoType;
+    union
+    {
+        RPC_HTTP_TRANSPORT_CREDENTIALS_A *HttpCredentials;
+    } u;
+} RPC_SECURITY_QOS_V2_A, *PRPC_SECURITY_QOS_V2_A;
+
+#define _SEC_WINNT_AUTH_IDENTITY WINELIB_NAME_AW(_SEC_WINNT_AUTH_IDENTITY_)
+#define  SEC_WINNT_AUTH_IDENTITY WINELIB_NAME_AW(SEC_WINNT_AUTH_IDENTITY_)
+#define PSEC_WINNT_AUTH_IDENTITY WINELIB_NAME_AW(PSEC_WINNT_AUTH_IDENTITY_)
+
+#define RPC_HTTP_TRANSPORT_CREDENTIALS_  WINELIB_NAME_AW(RPC_HTTP_TRANSPORT_CREDENTIALS_)
+#define PRPC_HTTP_TRANSPORT_CREDENTIALS_ WINELIB_NAME_AW(PRPC_HTTP_TRANSPORT_CREDENTIALS_)
+#define _RPC_HTTP_TRANSPORT_CREDENTIALS_ WINELIB_NAME_AW(_RPC_HTTP_TRANSPORT_CREDENTIALS_)
+
+#define RPC_SECURITY_QOS_V2  WINELIB_NAME_AW(RPC_SECURITY_QOS_V2_)
+#define PRPC_SECURITY_QOS_V2 WINELIB_NAME_AW(PRPC_SECURITY_QOS_V2_)
+#define _RPC_SECURITY_QOS_V2 WINELIB_NAME_AW(_RPC_SECURITY_QOS_V2_)
+
+/* SEC_WINNT_AUTH Flags */
+#define SEC_WINNT_AUTH_IDENTITY_ANSI    0x1
+#define SEC_WINNT_AUTH_IDENTITY_UNICODE 0x2
+
+/* RpcServerRegisterIfEx Flags */
+#define RPC_IF_AUTOLISTEN                   0x01
+#define RPC_IF_OLE                          0x02
+#define RPC_IF_ALLOW_UNKNOWN_AUTHORITY      0x04
+#define RPC_IF_ALLOW_SECURE_ONLY            0x08
+#define RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH 0x10
+#define RPC_IF_ALLOW_LOCAL_ONLY             0x20
+#define RPC_IF_SEC_NO_CACHE                 0x40
+
+RPC_STATUS RPC_ENTRY DceErrorInqTextA(RPC_STATUS e, RPC_CSTR buffer);
+RPC_STATUS RPC_ENTRY DceErrorInqTextW(RPC_STATUS e, RPC_WSTR buffer);
+#define              DceErrorInqText WINELIB_NAME_AW(DceErrorInqText)
+
+RPCRTAPI DECLSPEC_NORETURN void RPC_ENTRY
+  RpcRaiseException( RPC_STATUS exception );
+        
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcBindingCopy( RPC_BINDING_HANDLE SourceBinding, RPC_BINDING_HANDLE* DestinationBinding );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcBindingFree( RPC_BINDING_HANDLE* Binding );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcBindingInqObject( RPC_BINDING_HANDLE Binding, UUID* ObjectUuid );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcBindingInqOption( RPC_BINDING_HANDLE Binding, ULONG Option, ULONG_PTR *OptionValue );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcBindingReset( RPC_BINDING_HANDLE Binding );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcBindingSetObject( RPC_BINDING_HANDLE Binding, UUID* ObjectUuid );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcBindingSetOption( RPC_BINDING_HANDLE Binding, ULONG Option, ULONG_PTR OptionValue );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcObjectSetType( UUID* ObjUuid, UUID* TypeUuid );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcBindingFromStringBindingA( RPC_CSTR StringBinding, RPC_BINDING_HANDLE* Binding );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcBindingFromStringBindingW( RPC_WSTR StringBinding, RPC_BINDING_HANDLE* Binding );
+#define RpcBindingFromStringBinding WINELIB_NAME_AW(RpcBindingFromStringBinding)
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcBindingToStringBindingA( RPC_BINDING_HANDLE Binding, RPC_CSTR *StringBinding );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcBindingToStringBindingW( RPC_BINDING_HANDLE Binding, RPC_WSTR *StringBinding );
+#define RpcBindingToStringBinding WINELIB_NAME_AW(RpcBindingToStringBinding)
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcBindingVectorFree( RPC_BINDING_VECTOR** BindingVector );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcStringBindingComposeA( RPC_CSTR ObjUuid, RPC_CSTR Protseq, RPC_CSTR NetworkAddr,
+                            RPC_CSTR Endpoint, RPC_CSTR Options, RPC_CSTR *StringBinding );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcStringBindingComposeW( RPC_WSTR ObjUuid, RPC_WSTR Protseq, RPC_WSTR NetworkAddr,
+                            RPC_WSTR Endpoint, RPC_WSTR Options, RPC_WSTR *StringBinding );
+#define RpcStringBindingCompose WINELIB_NAME_AW(RpcStringBindingCompose)
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcStringBindingParseA( RPC_CSTR StringBinding, RPC_CSTR *ObjUuid, RPC_CSTR *Protseq,
+                          RPC_CSTR *NetworkAddr, RPC_CSTR *Endpoint, RPC_CSTR *NetworkOptions );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcStringBindingParseW( RPC_WSTR StringBinding, RPC_WSTR *ObjUuid, RPC_WSTR *Protseq,
+                          RPC_WSTR *NetworkAddr, RPC_WSTR *Endpoint, RPC_WSTR *NetworkOptions );
+#define RpcStringBindingParse WINELIB_NAME_AW(RpcStringBindingParse)
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcEpResolveBinding( RPC_BINDING_HANDLE Binding, RPC_IF_HANDLE IfSpec );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcEpRegisterA( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector,
+                  UUID_VECTOR* UuidVector, RPC_CSTR Annotation );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcEpRegisterW( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector,
+                  UUID_VECTOR* UuidVector, RPC_WSTR Annotation );
+#define RpcEpRegister WINELIB_NAME_AW(RpcEpRegister)
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcEpRegisterNoReplaceA( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector,
+                           UUID_VECTOR* UuidVector, RPC_CSTR Annotation );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcEpRegisterNoReplaceW( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector,
+                           UUID_VECTOR* UuidVector, RPC_WSTR Annotation );
+#define RpcEpRegisterNoReplace WINELIB_NAME_AW(RpcEpRegisterNoReplace)
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcEpUnregister( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector,
+                   UUID_VECTOR* UuidVector );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcServerInqBindings( RPC_BINDING_VECTOR** BindingVector );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcServerListen( unsigned int MinimumCallThreads, unsigned int MaxCalls, unsigned int DontWait );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcMgmtEnableIdleCleanup( void );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY RpcMgmtSetCancelTimeout(LONG);
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcMgmtWaitServerListen( void );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcMgmtStopServerListening( RPC_BINDING_HANDLE Binding );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcMgmtIsServerListening(RPC_BINDING_HANDLE Binding);
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcMgmtInqIfIds( RPC_BINDING_HANDLE Binding, RPC_IF_ID_VECTOR** IfIdVector );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcMgmtEpEltInqBegin( RPC_BINDING_HANDLE EpBinding, ULONG InquiryType, RPC_IF_ID *IfId,
+                        ULONG VersOption, UUID *ObjectUuid, RPC_EP_INQ_HANDLE *InquiryContext);
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcMgmtSetComTimeout( RPC_BINDING_HANDLE Binding, unsigned int Timeout );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcMgmtSetServerStackSize( ULONG ThreadStackSize );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcServerRegisterIf( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, RPC_MGR_EPV* MgrEpv );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcServerRegisterIfEx( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, RPC_MGR_EPV* MgrEpv,
+                         unsigned int Flags, unsigned int MaxCalls, RPC_IF_CALLBACK_FN* IfCallbackFn );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcServerRegisterIf2( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, RPC_MGR_EPV* MgrEpv,
+                        unsigned int Flags, unsigned int MaxCalls, unsigned int MaxRpcSize, RPC_IF_CALLBACK_FN* IfCallbackFn );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcServerUnregisterIf( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, unsigned int WaitForCallsToComplete );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcServerUnregisterIfEx( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, int RundownContextHandles );
+
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcServerUseProtseqA(RPC_CSTR Protseq, unsigned int MaxCalls, void *SecurityDescriptor);
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcServerUseProtseqW(RPC_WSTR Protseq, unsigned int MaxCalls, void *SecurityDescriptor);
+#define RpcServerUseProtseq WINELIB_NAME_AW(RpcServerUseProtseq)
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcServerUseProtseqEpA( RPC_CSTR Protseq, unsigned int MaxCalls, RPC_CSTR Endpoint, void *SecurityDescriptor );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcServerUseProtseqEpW( RPC_WSTR Protseq, unsigned int MaxCalls, RPC_WSTR Endpoint, void *SecurityDescriptor );
+#define RpcServerUseProtseqEp WINELIB_NAME_AW(RpcServerUseProtseqEp)
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcServerUseProtseqEpExA( RPC_CSTR Protseq, unsigned int MaxCalls, RPC_CSTR Endpoint, void *SecurityDescriptor,
+                            PRPC_POLICY Policy );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcServerUseProtseqEpExW( RPC_WSTR Protseq, unsigned int MaxCalls, RPC_WSTR Endpoint, void *SecurityDescriptor,
+                            PRPC_POLICY Policy );
+#define RpcServerUseProtseqEpEx WINELIB_NAME_AW(RpcServerUseProtseqEpEx)
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcServerRegisterAuthInfoA( RPC_CSTR ServerPrincName, ULONG AuthnSvc, RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn,
+                              void *Arg );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcServerRegisterAuthInfoW( RPC_WSTR ServerPrincName, ULONG AuthnSvc, RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn,
+                              void *Arg );
+#define RpcServerRegisterAuthInfo WINELIB_NAME_AW(RpcServerRegisterAuthInfo)
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcBindingSetAuthInfoExA( RPC_BINDING_HANDLE Binding, RPC_CSTR ServerPrincName, ULONG AuthnLevel,
+                            ULONG AuthnSvc, RPC_AUTH_IDENTITY_HANDLE AuthIdentity, ULONG AuthzSvr,
+                            RPC_SECURITY_QOS *SecurityQos );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcBindingSetAuthInfoExW( RPC_BINDING_HANDLE Binding, RPC_WSTR ServerPrincName, ULONG AuthnLevel,
+                            ULONG AuthnSvc, RPC_AUTH_IDENTITY_HANDLE AuthIdentity, ULONG AuthzSvr,
+                            RPC_SECURITY_QOS *SecurityQos );
+#define RpcBindingSetAuthInfoEx WINELIB_NAME_AW(RpcBindingSetAuthInfoEx)
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcBindingSetAuthInfoA( RPC_BINDING_HANDLE Binding, RPC_CSTR ServerPrincName, ULONG AuthnLevel,
+                          ULONG AuthnSvc, RPC_AUTH_IDENTITY_HANDLE AuthIdentity, ULONG AuthzSvr );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcBindingSetAuthInfoW( RPC_BINDING_HANDLE Binding, RPC_WSTR ServerPrincName, ULONG AuthnLevel,
+                          ULONG AuthnSvc, RPC_AUTH_IDENTITY_HANDLE AuthIdentity, ULONG AuthzSvr );
+#define RpcBindingSetAuthInfo WINELIB_NAME_AW(RpcBindingSetAuthInfo)
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcBindingInqAuthInfoExA( RPC_BINDING_HANDLE Binding, RPC_CSTR * ServerPrincName, ULONG *AuthnLevel,
+                            ULONG *AuthnSvc, RPC_AUTH_IDENTITY_HANDLE *AuthIdentity, ULONG *AuthzSvc,
+                            ULONG RpcQosVersion, RPC_SECURITY_QOS *SecurityQOS );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcBindingInqAuthInfoExW( RPC_BINDING_HANDLE Binding, RPC_WSTR *ServerPrincName, ULONG *AuthnLevel,
+                            ULONG *AuthnSvc, RPC_AUTH_IDENTITY_HANDLE *AuthIdentity, ULONG *AuthzSvc,
+                            ULONG RpcQosVersion, RPC_SECURITY_QOS *SecurityQOS );
+#define RpcBindingInqAuthInfoEx WINELIB_NAME_AW(RpcBindingInqAuthInfoEx)
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcBindingInqAuthInfoA( RPC_BINDING_HANDLE Binding, RPC_CSTR * ServerPrincName, ULONG *AuthnLevel,
+                          ULONG *AuthnSvc, RPC_AUTH_IDENTITY_HANDLE *AuthIdentity, ULONG *AuthzSvc );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcBindingInqAuthInfoW( RPC_BINDING_HANDLE Binding, RPC_WSTR *ServerPrincName, ULONG *AuthnLevel,
+                          ULONG *AuthnSvc, RPC_AUTH_IDENTITY_HANDLE *AuthIdentity, ULONG *AuthzSvc );
+#define RpcBindingInqAuthInfo WINELIB_NAME_AW(RpcBindingInqAuthInfo)
+
+RPCRTAPI RPC_STATUS RPC_ENTRY RpcCancelThread(void*);
+RPCRTAPI RPC_STATUS RPC_ENTRY RpcCancelThreadEx(void*,LONG);
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcImpersonateClient( RPC_BINDING_HANDLE Binding );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcNetworkIsProtseqValidA( RPC_CSTR protseq );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcNetworkIsProtseqValidW( RPC_WSTR protseq );
+#define RpcNetworkIsProtseqValid WINELIB_NAME_AW(RpcNetworkIsProtseqValid)
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcRevertToSelf( void );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcRevertToSelfEx( RPC_BINDING_HANDLE Binding );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcStringFreeA(RPC_CSTR* String);
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcStringFreeW(RPC_WSTR* String);
+#define RpcStringFree WINELIB_NAME_AW(RpcStringFree)
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  UuidToStringA( UUID* Uuid, RPC_CSTR* StringUuid );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  UuidToStringW( UUID* Uuid, RPC_WSTR* StringUuid );
+#define UuidToString WINELIB_NAME_AW(UuidToString)
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  UuidFromStringA( RPC_CSTR StringUuid, UUID* Uuid );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  UuidFromStringW( RPC_WSTR StringUuid, UUID* Uuid );
+#define UuidFromString WINELIB_NAME_AW(UuidFromString)
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  UuidCreate( UUID* Uuid );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  UuidCreateSequential( UUID* Uuid );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  UuidCreateNil( UUID* Uuid );
+RPCRTAPI signed int RPC_ENTRY
+  UuidCompare( UUID* Uuid1, UUID* Uuid2, RPC_STATUS* Status_ );
+RPCRTAPI int RPC_ENTRY
+  UuidEqual( UUID* Uuid1, UUID* Uuid2, RPC_STATUS* Status_ );
+RPCRTAPI unsigned short RPC_ENTRY
+  UuidHash(UUID* Uuid, RPC_STATUS* Status_ );
+RPCRTAPI int RPC_ENTRY
+  UuidIsNil( UUID* Uuid, RPC_STATUS* Status_ );
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <rpcdcep.h>
+
+#endif /*__WINE_RPCDCE_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/rpcdcep.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/rpcdcep.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/rpcdcep.h	(revision 16410)
@@ -0,0 +1,224 @@
+/*
+ * Copyright (C) 2000 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_RPCDCEP_H
+#define __WINE_RPCDCEP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct _RPC_VERSION {
+    unsigned short MajorVersion;
+    unsigned short MinorVersion;
+} RPC_VERSION;
+
+typedef struct _RPC_SYNTAX_IDENTIFIER {
+    GUID SyntaxGUID;
+    RPC_VERSION SyntaxVersion;
+} RPC_SYNTAX_IDENTIFIER, *PRPC_SYNTAX_IDENTIFIER;
+
+typedef struct _RPC_MESSAGE
+{
+    RPC_BINDING_HANDLE Handle;
+    unsigned long DataRepresentation;
+    void* Buffer;
+    unsigned int BufferLength;
+    unsigned int ProcNum;
+    PRPC_SYNTAX_IDENTIFIER TransferSyntax;
+    void* RpcInterfaceInformation;
+    void* ReservedForRuntime;
+    RPC_MGR_EPV* ManagerEpv;
+    void* ImportContext;
+    unsigned long RpcFlags;
+} RPC_MESSAGE, *PRPC_MESSAGE;
+
+/* or'ed with ProcNum */
+#define RPC_FLAGS_VALID_BIT         0x00008000
+
+#define RPC_CONTEXT_HANDLE_DEFAULT_GUARD ((void *)0xfffff00d)
+
+#define RPC_CONTEXT_HANDLE_DEFAULT_FLAGS    0x00000000
+#define RPC_CONTEXT_HANDLE_FLAGS            0x30000000
+#define RPC_CONTEXT_HANDLE_SERIALIZE        0x10000000
+#define RPC_CONTEXT_HANDLE_DONT_SERIALIZE   0x20000000
+#define RPC_TYPE_STRICT_CONTEXT_HANDLE      0x40000000
+
+#define RPC_NCA_FLAGS_DEFAULT       0x00000000
+#define RPC_NCA_FLAGS_IDEMPOTENT    0x00000001
+#define RPC_NCA_FLAGS_BROADCAST     0x00000002
+#define RPC_NCA_FLAGS_MAYBE         0x00000004
+
+#define RPC_BUFFER_COMPLETE         0x00001000
+#define RPC_BUFFER_PARTIAL          0x00002000
+#define RPC_BUFFER_EXTRA            0x00004000
+#define RPC_BUFFER_ASYNC            0x00008000
+#define RPC_BUFFER_NONOTIFY         0x00010000
+
+#define RPCFLG_MESSAGE              0x01000000
+#define RPCFLG_HAS_MULTI_SYNTAXES   0x02000000
+#define RPCFLG_HAS_CALLBACK         0x04000000
+#define RPCFLG_AUTO_COMPLETE        0x08000000
+#define RPCFLG_LOCAL_CALL           0x10000000
+#define RPCFLG_INPUT_SYNCHRONOUS    0x20000000
+#define RPCFLG_ASYNCHRONOUS         0x40000000
+#define RPCFLG_NON_NDR              0x80000000
+
+typedef void  (__RPC_STUB *RPC_DISPATCH_FUNCTION)(PRPC_MESSAGE Message);
+typedef RPC_STATUS (RPC_ENTRY *RPC_FORWARD_FUNCTION)(UUID *InterfaceId, RPC_VERSION *InterfaceVersion, UUID *ObjectId, unsigned char *Rpcpro, void **ppDestEndpoint);
+
+typedef struct
+{
+    unsigned int DispatchTableCount;
+    RPC_DISPATCH_FUNCTION* DispatchTable;
+    LONG_PTR Reserved;
+} RPC_DISPATCH_TABLE, *PRPC_DISPATCH_TABLE;
+
+typedef struct _RPC_PROTSEQ_ENDPOINT
+{
+    unsigned char* RpcProtocolSequence;
+    unsigned char* Endpoint;
+} RPC_PROTSEQ_ENDPOINT, *PRPC_PROTSEQ_ENDPOINT;
+
+#define NT351_INTERFACE_SIZE 0x40
+#define RPC_INTERFACE_HAS_PIPES 0x0001
+
+typedef struct _RPC_SERVER_INTERFACE
+{
+    unsigned int Length;
+    RPC_SYNTAX_IDENTIFIER InterfaceId;
+    RPC_SYNTAX_IDENTIFIER TransferSyntax;
+    PRPC_DISPATCH_TABLE DispatchTable;
+    unsigned int RpcProtseqEndpointCount;
+    PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
+    RPC_MGR_EPV* DefaultManagerEpv;
+    void const* InterpreterInfo;
+    unsigned int Flags;
+} RPC_SERVER_INTERFACE, *PRPC_SERVER_INTERFACE;
+
+typedef struct _RPC_CLIENT_INTERFACE
+{
+    unsigned int Length;
+    RPC_SYNTAX_IDENTIFIER InterfaceId;
+    RPC_SYNTAX_IDENTIFIER TransferSyntax;
+    PRPC_DISPATCH_TABLE DispatchTable;
+    unsigned int RpcProtseqEndpointCount;
+    PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
+    ULONG_PTR Reserved;
+    void const* InterpreterInfo;
+    unsigned int Flags;
+} RPC_CLIENT_INTERFACE, *PRPC_CLIENT_INTERFACE;
+
+#define TRANSPORT_TYPE_CN   0x01
+#define TRANSPORT_TYPE_DG   0x02
+#define TRANSPORT_TYPE_LPC  0x04
+#define TRANSPORT_TYPE_WMSG 0x08
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcNegotiateTransferSyntax( RPC_MESSAGE* Message );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcGetBuffer( RPC_MESSAGE* Message );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcGetBufferWithObject( RPC_MESSAGE* Message, UUID* ObjectUuid );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcSendReceive( RPC_MESSAGE* Message );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcFreeBuffer( RPC_MESSAGE* Message );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcSend( RPC_MESSAGE* Message );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcReceive( RPC_MESSAGE* Message );
+
+RPCRTAPI void* RPC_ENTRY
+  I_RpcAllocate( unsigned int Size );
+RPCRTAPI void RPC_ENTRY
+  I_RpcFree( void* Object );
+
+RPCRTAPI RPC_BINDING_HANDLE RPC_ENTRY
+  I_RpcGetCurrentCallHandle( void );
+
+/*
+ * The platform SDK headers don't define these functions at all if WINNT is defined
+ * The MSVC6 headers define two different sets of functions :
+ *  If WINNT and MSWMSG are defined, the NT versions are defined
+ *  If WINNT is not defined, the windows 9x versions are defined.
+ * Note that the prototypes for I_RpcBindingSetAsync are different for each case.
+ *
+ * Wine defaults to the WinNT case and only defines these function is MSWMSG is
+ *  defined. Defining the NT functions by default causes MIDL generated proxies
+ *  to not compile.
+ */
+
+#if 1  /* WINNT */
+#ifdef MSWMSG
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcServerStartListening( HWND hWnd );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcServerStopListening( void );
+/* WINNT */
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_GetThreadWindowHandle( HWND* hWnd );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcAsyncSendReceive( RPC_MESSAGE* Message, void* Context, HWND hWnd );
+
+typedef RPC_STATUS (*RPC_BLOCKING_FN)(void* hWnd, void* Context, HANDLE hSyncEvent);
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcBindingSetAsync( RPC_BINDING_HANDLE Binding, RPC_BLOCKING_FN BlockingFn );
+
+RPCRTAPI UINT RPC_ENTRY
+  I_RpcWindowProc( void* hWnd, UINT Message, UINT wParam, ULONG lParam );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcSetWMsgEndpoint( WCHAR* Endpoint );
+
+#endif
+
+#else
+
+/* WIN9x */
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcServerStartListening( void* hWnd );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcServerStopListening( void );
+
+typedef RPC_STATUS (*RPC_BLOCKING_FN)(void* hWnd, void* Context, void* hSyncEvent);
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcBindingSetAsync( RPC_BINDING_HANDLE Binding, RPC_BLOCKING_FN BlockingFn, unsigned long ServerTid );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcSetThreadParams( int fClientFree, void* Context, void* hWndClient );
+
+RPCRTAPI UINT RPC_ENTRY
+  I_RpcWindowProc( void* hWnd, unsigned int Message, unsigned int wParam, unsigned long lParam );
+
+#endif
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcBindingInqTransportType( RPC_BINDING_HANDLE Binding, unsigned int* Type );
+
+RPCRTAPI LONG RPC_ENTRY I_RpcMapWin32Status(RPC_STATUS);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*__WINE_RPCDCEP_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/rpcndr.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/rpcndr.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/rpcndr.h	(revision 16410)
@@ -0,0 +1,746 @@
+/*
+ * Copyright (C) 2000 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __RPCNDR_H_VERSION__
+/* FIXME: What version?   Perhaps something is better than nothing, however incorrect */
+#define __RPCNDR_H_VERSION__ ( 399 )
+#endif
+
+#ifndef __WINE_RPCNDR_H
+#define __WINE_RPCNDR_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <basetsd.h>
+
+#undef CONST_VTBL
+#ifdef CONST_VTABLE
+# define CONST_VTBL const
+#else
+# define CONST_VTBL
+#endif
+
+/* stupid #if can't handle casts... this __stupidity
+   is just a workaround for that limitation */
+
+#define __NDR_CHAR_REP_MASK  0x000fL
+#define __NDR_INT_REP_MASK   0x00f0L
+#define __NDR_FLOAT_REP_MASK 0xff00L
+
+#define __NDR_IEEE_FLOAT     0x0000L
+#define __NDR_VAX_FLOAT      0x0100L
+#define __NDR_IBM_FLOAT      0x0300L
+
+#define __NDR_ASCII_CHAR     0x0000L
+#define __NDR_EBCDIC_CHAR    0x0001L
+
+#define __NDR_LITTLE_ENDIAN  0x0010L
+#define __NDR_BIG_ENDIAN     0x0000L
+
+/* Mac's are special */
+#if defined(__RPC_MAC__)
+# define __NDR_LOCAL_DATA_REPRESENTATION \
+    (__NDR_IEEE_FLOAT | __NDR_ASCII_CHAR | __NDR_BIG_ENDIAN)
+#else
+# define __NDR_LOCAL_DATA_REPRESENTATION \
+    (__NDR_IEEE_FLOAT | __NDR_ASCII_CHAR | __NDR_LITTLE_ENDIAN)
+#endif
+
+#define __NDR_LOCAL_ENDIAN \
+  (__NDR_LOCAL_DATA_REPRESENTATION & __NDR_INT_REP_MASK)
+
+/* for convenience, define NDR_LOCAL_IS_BIG_ENDIAN iff it is */
+#if __NDR_LOCAL_ENDIAN == __NDR_BIG_ENDIAN
+# define NDR_LOCAL_IS_BIG_ENDIAN
+#elif __NDR_LOCAL_ENDIAN == __NDR_LITTLE_ENDIAN
+# undef NDR_LOCAL_IS_BIG_ENDIAN
+#else
+# error alien NDR_LOCAL_ENDIAN - Greg botched the defines again, please report
+#endif
+
+/* finally, do the casts like Microsoft */
+
+#define NDR_CHAR_REP_MASK             ((ULONG) __NDR_CHAR_REP_MASK)
+#define NDR_INT_REP_MASK              ((ULONG) __NDR_INT_REP_MASK)
+#define NDR_FLOAT_REP_MASK            ((ULONG) __NDR_FLOAT_REP_MASK)
+#define NDR_IEEE_FLOAT                ((ULONG) __NDR_IEEE_FLOAT)
+#define NDR_VAX_FLOAT                 ((ULONG) __NDR_VAX_FLOAT)
+#define NDR_IBM_FLOAT                 ((ULONG) __NDR_IBM_FLOAT)
+#define NDR_ASCII_CHAR                ((ULONG) __NDR_ASCII_CHAR)
+#define NDR_EBCDIC_CHAR               ((ULONG) __NDR_EBCDIC_CHAR)
+#define NDR_LITTLE_ENDIAN             ((ULONG) __NDR_LITTLE_ENDIAN)
+#define NDR_BIG_ENDIAN                ((ULONG) __NDR_BIG_ENDIAN)
+#define NDR_LOCAL_DATA_REPRESENTATION ((ULONG) __NDR_LOCAL_DATA_REPRESENTATION)
+#define NDR_LOCAL_ENDIAN              ((ULONG) __NDR_LOCAL_ENDIAN)
+
+
+#define TARGET_IS_NT50_OR_LATER 1
+#define TARGET_IS_NT40_OR_LATER 1
+#define TARGET_IS_NT351_OR_WIN95_OR_LATER 1
+
+#define small char
+typedef unsigned char byte;
+#define hyper __int64
+#define MIDL_uhyper unsigned __int64
+typedef unsigned char boolean;
+
+#define __RPC_CALLEE WINAPI
+#define RPC_VAR_ENTRY __cdecl
+#define NDR_SHAREABLE static
+
+#define MIDL_ascii_strlen(s) strlen(s)
+#define MIDL_ascii_strcpy(d,s) strcpy(d,s)
+#define MIDL_memset(d,v,n) memset(d,v,n)
+#define midl_user_free MIDL_user_free
+#define midl_user_allocate MIDL_user_allocate
+
+#define NdrFcShort(s) (unsigned char)(s & 0xff), (unsigned char)(s >> 8)
+#define NdrFcLong(s)  (unsigned char)(s & 0xff), (unsigned char)((s & 0x0000ff00) >> 8), \
+  (unsigned char)((s & 0x00ff0000) >> 16), (unsigned char)(s >> 24)
+
+#define RPC_BAD_STUB_DATA_EXCEPTION_FILTER  \
+  ((RpcExceptionCode() == STATUS_ACCESS_VIOLATION) || \
+   (RpcExceptionCode() == STATUS_DATATYPE_MISALIGNMENT) || \
+   (RpcExceptionCode() == RPC_X_BAD_STUB_DATA) || \
+   (RpcExceptionCode() == RPC_S_INVALID_BOUND))
+
+typedef struct
+{
+  void *pad[2];
+  void *userContext;
+} *NDR_SCONTEXT;
+
+#define NDRSContextValue(hContext) (&(hContext)->userContext)
+#define cbNDRContext 20
+
+typedef void (__RPC_USER *NDR_RUNDOWN)(void *context);
+typedef void (__RPC_USER *NDR_NOTIFY_ROUTINE)(void);
+typedef void (__RPC_USER *NDR_NOTIFY2_ROUTINE)(boolean flag);
+
+#define DECLSPEC_UUID(x)
+#define MIDL_INTERFACE(x)   struct
+
+struct _MIDL_STUB_MESSAGE;
+struct _MIDL_STUB_DESC;
+struct _FULL_PTR_XLAT_TABLES;
+struct NDR_ALLOC_ALL_NODES_CONTEXT;
+struct NDR_POINTER_QUEUE_STATE;
+
+typedef unsigned char *RPC_BUFPTR;
+typedef unsigned long RPC_LENGTH;
+typedef void (__RPC_USER *EXPR_EVAL)(struct _MIDL_STUB_MESSAGE *);
+typedef const unsigned char *PFORMAT_STRING;
+
+typedef struct
+{
+  LONG Dimension;
+  ULONG *BufferConformanceMark;
+  ULONG *BufferVarianceMark;
+  ULONG *MaxCountArray;
+  ULONG *OffsetArray;
+  ULONG *ActualCountArray;
+} ARRAY_INFO, *PARRAY_INFO;
+
+typedef struct
+{
+  ULONG WireCodeset;
+  ULONG DesiredReceivingCodeset;
+  void *CSArrayInfo;
+} CS_STUB_INFO;
+
+typedef struct _NDR_PIPE_DESC *PNDR_PIPE_DESC;
+typedef struct _NDR_PIPE_MESSAGE *PNDR_PIPE_MESSAGE;
+typedef struct _NDR_ASYNC_MESSAGE *PNDR_ASYNC_MESSAGE;
+typedef struct _NDR_CORRELATION_INFO *PNDR_CORRELATION_INFO;
+
+#include <pshpack4.h>
+typedef struct _MIDL_STUB_MESSAGE
+{
+  PRPC_MESSAGE RpcMsg;
+  unsigned char *Buffer;
+  unsigned char *BufferStart;
+  unsigned char *BufferEnd;
+  unsigned char *BufferMark;
+  ULONG BufferLength;
+  ULONG MemorySize;
+  unsigned char *Memory;
+  unsigned char IsClient;
+  unsigned char Pad;
+  unsigned short uFlags2;
+  int ReuseBuffer;
+  struct NDR_ALLOC_ALL_NODES_CONTEXT *pAllocAllNodesContext;
+  struct NDR_POINTER_QUEUE_STATE *pPointerQueueState;
+  int IgnoreEmbeddedPointers;
+  unsigned char *PointerBufferMark;
+  unsigned char CorrDespIncrement;
+  unsigned char uFlags;
+  unsigned short UniquePtrCount;
+  ULONG_PTR MaxCount;
+  ULONG Offset;
+  ULONG ActualCount;
+  void * (__WINE_ALLOC_SIZE(1) __RPC_API *pfnAllocate)(size_t);
+  void (__RPC_API *pfnFree)(void *);
+  unsigned char *StackTop;
+  unsigned char *pPresentedType;
+  unsigned char *pTransmitType;
+  handle_t SavedHandle;
+  const struct _MIDL_STUB_DESC *StubDesc;
+  struct _FULL_PTR_XLAT_TABLES *FullPtrXlatTables;
+  ULONG FullPtrRefId;
+  ULONG PointerLength;
+  int fInDontFree:1;
+  int fDontCallFreeInst:1;
+  int fInOnlyParam:1;
+  int fHasReturn:1;
+  int fHasExtensions:1;
+  int fHasNewCorrDesc:1;
+  int fIsIn:1;
+  int fIsOut:1;
+  int fIsOicf:1;
+  int fBufferValid:1;
+  int fHasMemoryValidateCallback:1;
+  int fInFree:1;
+  int fNeedMCCP:1;
+  int fUnused:3;
+  int fUnused2:16;
+  DWORD dwDestContext;
+  void *pvDestContext;
+  NDR_SCONTEXT *SavedContextHandles;
+  LONG ParamNumber;
+  struct IRpcChannelBuffer *pRpcChannelBuffer;
+  PARRAY_INFO pArrayInfo;
+  ULONG *SizePtrCountArray;
+  ULONG *SizePtrOffsetArray;
+  ULONG *SizePtrLengthArray;
+  void *pArgQueue;
+  DWORD dwStubPhase;
+  void *LowStackMark;
+  PNDR_ASYNC_MESSAGE pAsyncMsg;
+  PNDR_CORRELATION_INFO pCorrInfo;
+  unsigned char *pCorrMemory;
+  void *pMemoryList;
+  CS_STUB_INFO *pCSInfo;
+  unsigned char *ConformanceMark;
+  unsigned char *VarianceMark;
+  INT_PTR Unused; /* BackingStoreLowMark on IA64 */
+  struct _NDR_PROC_CONTEXT *pContext;
+  void* ContextHandleHash;
+  void* pUserMarshalList;
+  INT_PTR Reserved51_3;
+  INT_PTR Reserved51_4;
+  INT_PTR Reserved51_5;
+} MIDL_STUB_MESSAGE, *PMIDL_STUB_MESSAGE;
+#include <poppack.h>
+
+typedef void * (__RPC_API * GENERIC_BINDING_ROUTINE)(void *);
+typedef void (__RPC_API * GENERIC_UNBIND_ROUTINE)(void *, unsigned char *);
+
+typedef struct _GENERIC_BINDING_ROUTINE_PAIR
+{
+  GENERIC_BINDING_ROUTINE pfnBind;
+  GENERIC_UNBIND_ROUTINE pfnUnbind;
+} GENERIC_BINDING_ROUTINE_PAIR, *PGENERIC_BINDING_ROUTINE_PAIR;
+
+typedef struct __GENERIC_BINDING_INFO
+{
+  void *pObj;
+  unsigned int Size;
+  GENERIC_BINDING_ROUTINE pfnBind;
+  GENERIC_UNBIND_ROUTINE pfnUnbind;
+} GENERIC_BINDING_INFO, *PGENERIC_BINDING_INFO;
+
+typedef void (__RPC_USER *XMIT_HELPER_ROUTINE)(PMIDL_STUB_MESSAGE);
+
+typedef struct _XMIT_ROUTINE_QUINTUPLE
+{
+  XMIT_HELPER_ROUTINE pfnTranslateToXmit;
+  XMIT_HELPER_ROUTINE pfnTranslateFromXmit;
+  XMIT_HELPER_ROUTINE pfnFreeXmit;
+  XMIT_HELPER_ROUTINE pfnFreeInst;
+} XMIT_ROUTINE_QUINTUPLE, *PXMIT_ROUTINE_QUINTUPLE;
+
+typedef ULONG (__RPC_USER *USER_MARSHAL_SIZING_ROUTINE)(ULONG *, ULONG, void *);
+typedef unsigned char * (__RPC_USER *USER_MARSHAL_MARSHALLING_ROUTINE)(ULONG *, unsigned char *, void *);
+typedef unsigned char * (__RPC_USER *USER_MARSHAL_UNMARSHALLING_ROUTINE)(ULONG *, unsigned char *, void *);
+typedef void (__RPC_USER *USER_MARSHAL_FREEING_ROUTINE)(ULONG *, void *);
+
+typedef struct _USER_MARSHAL_ROUTINE_QUADRUPLE
+{
+  USER_MARSHAL_SIZING_ROUTINE pfnBufferSize;
+  USER_MARSHAL_MARSHALLING_ROUTINE pfnMarshall;
+  USER_MARSHAL_UNMARSHALLING_ROUTINE pfnUnmarshall;
+  USER_MARSHAL_FREEING_ROUTINE pfnFree;
+} USER_MARSHAL_ROUTINE_QUADRUPLE;
+
+/* 'USRC' */
+#define USER_MARSHAL_CB_SIGNATURE \
+	( ( (DWORD)'U' << 24 ) | ( (DWORD)'S' << 16 ) | \
+	  ( (DWORD)'R' << 8  ) | ( (DWORD)'C'       ) )
+
+typedef enum
+{
+    USER_MARSHAL_CB_BUFFER_SIZE,
+    USER_MARSHAL_CB_MARSHALL,
+    USER_MARSHAL_CB_UNMARSHALL,
+    USER_MARSHAL_CB_FREE
+} USER_MARSHAL_CB_TYPE;
+
+typedef struct _USER_MARSHAL_CB
+{
+    ULONG Flags;
+    PMIDL_STUB_MESSAGE pStubMsg;
+    PFORMAT_STRING pReserve;
+    ULONG Signature;
+    USER_MARSHAL_CB_TYPE CBType;
+    PFORMAT_STRING pFormat;
+    PFORMAT_STRING pTypeFormat;
+} USER_MARSHAL_CB;
+
+#define USER_CALL_CTXT_MASK(f) ((f) & 0x00ff)
+#define USER_CALL_AUX_MASK(f) ((f) & 0xff00)
+#define GET_USER_DATA_REP(f) HIWORD(f)
+
+#define USER_CALL_IS_ASYNC 0x0100
+#define USER_CALL_NEW_CORRELATION_DESC 0x0200
+
+typedef struct _MALLOC_FREE_STRUCT
+{
+  void * (__WINE_ALLOC_SIZE(1) __RPC_USER *pfnAllocate)(size_t);
+  void   (__RPC_USER *pfnFree)(void *);
+} MALLOC_FREE_STRUCT;
+
+typedef struct _COMM_FAULT_OFFSETS
+{
+  short CommOffset;
+  short FaultOffset;
+} COMM_FAULT_OFFSETS;
+
+typedef struct _MIDL_STUB_DESC
+{
+  void *RpcInterfaceInformation;
+  void * (__WINE_ALLOC_SIZE(1) __RPC_API *pfnAllocate)(size_t);
+  void (__RPC_API *pfnFree)(void *);
+  union {
+    handle_t *pAutoHandle;
+    handle_t *pPrimitiveHandle;
+    PGENERIC_BINDING_INFO pGenericBindingInfo;
+  } IMPLICIT_HANDLE_INFO;
+  const NDR_RUNDOWN *apfnNdrRundownRoutines;
+  const GENERIC_BINDING_ROUTINE_PAIR *aGenericBindingRoutinePairs;
+  const EXPR_EVAL *apfnExprEval;
+  const XMIT_ROUTINE_QUINTUPLE *aXmitQuintuple;
+  const unsigned char *pFormatTypes;
+  int fCheckBounds;
+  ULONG Version;
+  MALLOC_FREE_STRUCT *pMallocFreeStruct;
+  LONG MIDLVersion;
+  const COMM_FAULT_OFFSETS *CommFaultOffsets;
+  const USER_MARSHAL_ROUTINE_QUADRUPLE *aUserMarshalQuadruple;
+  const NDR_NOTIFY_ROUTINE *NotifyRoutineTable;
+  ULONG_PTR mFlags;
+  ULONG_PTR Reserved3;
+  ULONG_PTR Reserved4;
+  ULONG_PTR Reserved5;
+} MIDL_STUB_DESC;
+typedef const MIDL_STUB_DESC *PMIDL_STUB_DESC;
+
+typedef struct _MIDL_FORMAT_STRING
+{
+  short Pad;
+#if defined(__GNUC__)
+  unsigned char Format[0];
+#else
+  unsigned char Format[1];
+#endif
+} MIDL_FORMAT_STRING;
+
+typedef struct _MIDL_SYNTAX_INFO
+{
+  RPC_SYNTAX_IDENTIFIER TransferSyntax;
+  RPC_DISPATCH_TABLE* DispatchTable;
+  PFORMAT_STRING ProcString;
+  const unsigned short* FmtStringOffset;
+  PFORMAT_STRING TypeString;
+  const void* aUserMarshalQuadruple;
+  ULONG_PTR pReserved1;
+  ULONG_PTR pReserved2;
+} MIDL_SYNTAX_INFO, *PMIDL_SYNTAX_INFO;
+
+typedef void (__RPC_API *STUB_THUNK)( PMIDL_STUB_MESSAGE );
+
+typedef LONG (__RPC_API *SERVER_ROUTINE)();
+
+typedef struct _MIDL_SERVER_INFO_
+{
+  PMIDL_STUB_DESC pStubDesc;
+  const SERVER_ROUTINE *DispatchTable;
+  PFORMAT_STRING ProcString;
+  const unsigned short *FmtStringOffset;
+  const STUB_THUNK *ThunkTable;
+  PRPC_SYNTAX_IDENTIFIER pTransferSyntax;
+  ULONG_PTR nCount;
+  PMIDL_SYNTAX_INFO pSyntaxInfo;
+} MIDL_SERVER_INFO, *PMIDL_SERVER_INFO;
+
+typedef struct _MIDL_STUBLESS_PROXY_INFO
+{
+  PMIDL_STUB_DESC pStubDesc;
+  PFORMAT_STRING ProcFormatString;
+  const unsigned short *FormatStringOffset;
+  PRPC_SYNTAX_IDENTIFIER pTransferSyntax;
+  ULONG_PTR nCount;
+  PMIDL_SYNTAX_INFO pSyntaxInfo;
+} MIDL_STUBLESS_PROXY_INFO, *PMIDL_STUBLESS_PROXY_INFO;
+
+typedef union _CLIENT_CALL_RETURN
+{
+  void *Pointer;
+  LONG_PTR Simple;
+} CLIENT_CALL_RETURN;
+
+typedef enum {
+  STUB_UNMARSHAL,
+  STUB_CALL_SERVER,
+  STUB_MARSHAL,
+  STUB_CALL_SERVER_NO_HRESULT
+} STUB_PHASE;
+
+typedef enum {
+  PROXY_CALCSIZE,
+  PROXY_GETBUFFER,
+  PROXY_MARSHAL,
+  PROXY_SENDRECEIVE,
+  PROXY_UNMARSHAL
+} PROXY_PHASE;
+
+typedef enum {
+  XLAT_SERVER = 1,
+  XLAT_CLIENT
+} XLAT_SIDE;
+
+typedef struct _FULL_PTR_TO_REFID_ELEMENT {
+  struct _FULL_PTR_TO_REFID_ELEMENT *Next;
+  void *Pointer;
+  ULONG RefId;
+  unsigned char State;
+} FULL_PTR_TO_REFID_ELEMENT, *PFULL_PTR_TO_REFID_ELEMENT;
+
+/* Full pointer translation tables */
+typedef struct _FULL_PTR_XLAT_TABLES {
+  struct {
+    void **XlatTable;
+    unsigned char *StateTable;
+    ULONG NumberOfEntries;
+  } RefIdToPointer;
+
+  struct {
+    PFULL_PTR_TO_REFID_ELEMENT *XlatTable;
+    ULONG NumberOfBuckets;
+    ULONG HashMask;
+  } PointerToRefId;
+
+  ULONG                   NextRefId;
+  XLAT_SIDE               XlatSide;
+} FULL_PTR_XLAT_TABLES,  *PFULL_PTR_XLAT_TABLES;
+
+struct IRpcStubBuffer;
+
+typedef ULONG error_status_t;
+typedef void  * NDR_CCONTEXT;
+
+typedef struct _SCONTEXT_QUEUE {
+  ULONG NumberOfObjects;
+  NDR_SCONTEXT *ArrayOfObjects;
+} SCONTEXT_QUEUE, *PSCONTEXT_QUEUE;
+
+typedef struct _NDR_USER_MARSHAL_INFO_LEVEL1
+{
+    void *Buffer;
+    ULONG BufferSize;
+    void * (__WINE_ALLOC_SIZE(1) __RPC_API *pfnAllocate)(size_t);
+    void (__RPC_API *pfnFree)(void *);
+    struct IRpcChannelBuffer *pRpcChannelBuffer;
+    ULONG_PTR Reserved[5];
+} NDR_USER_MARSHAL_INFO_LEVEL1;
+
+typedef struct _NDR_USER_MARSHAL_INFO
+{
+    ULONG InformationLevel;
+    union
+    {
+        NDR_USER_MARSHAL_INFO_LEVEL1 Level1;
+    } DUMMYUNIONNAME1;
+} NDR_USER_MARSHAL_INFO;
+
+/* Context Handles */
+
+RPCRTAPI RPC_BINDING_HANDLE RPC_ENTRY
+  NDRCContextBinding( NDR_CCONTEXT CContext );
+
+RPCRTAPI void RPC_ENTRY
+  NDRCContextMarshall( NDR_CCONTEXT CContext, void *pBuff );
+
+RPCRTAPI void RPC_ENTRY
+  NDRCContextUnmarshall( NDR_CCONTEXT *pCContext, RPC_BINDING_HANDLE hBinding,
+                         void *pBuff, ULONG DataRepresentation );
+
+RPCRTAPI void RPC_ENTRY
+  NDRSContextMarshall( NDR_SCONTEXT CContext, void *pBuff, NDR_RUNDOWN userRunDownIn );
+
+RPCRTAPI NDR_SCONTEXT RPC_ENTRY
+  NDRSContextUnmarshall( void *pBuff, ULONG DataRepresentation );
+
+RPCRTAPI void RPC_ENTRY
+  NDRSContextMarshallEx( RPC_BINDING_HANDLE BindingHandle, NDR_SCONTEXT CContext,
+                         void *pBuff, NDR_RUNDOWN userRunDownIn );
+
+RPCRTAPI void RPC_ENTRY
+  NDRSContextMarshall2( RPC_BINDING_HANDLE BindingHandle, NDR_SCONTEXT CContext,
+                        void *pBuff, NDR_RUNDOWN userRunDownIn, void * CtxGuard,
+                        ULONG Flags );
+
+RPCRTAPI NDR_SCONTEXT RPC_ENTRY
+  NDRSContextUnmarshallEx( RPC_BINDING_HANDLE BindingHandle, void *pBuff,
+                           ULONG DataRepresentation );
+
+RPCRTAPI NDR_SCONTEXT RPC_ENTRY
+  NDRSContextUnmarshall2( RPC_BINDING_HANDLE BindingHandle, void *pBuff,
+                          ULONG DataRepresentation, void *CtxGuard,
+                          ULONG Flags );
+
+RPCRTAPI void RPC_ENTRY
+  NdrClientContextMarshall ( PMIDL_STUB_MESSAGE pStubMsg, NDR_CCONTEXT ContextHandle, int fCheck );
+
+RPCRTAPI void RPC_ENTRY
+  NdrClientContextUnmarshall( PMIDL_STUB_MESSAGE pStubMsg, NDR_CCONTEXT* pContextHandle,
+                              RPC_BINDING_HANDLE BindHandle );
+
+RPCRTAPI void RPC_ENTRY
+  NdrServerContextMarshall ( PMIDL_STUB_MESSAGE pStubMsg, NDR_SCONTEXT ContextHandle, NDR_RUNDOWN RundownRoutine );
+
+RPCRTAPI NDR_SCONTEXT RPC_ENTRY
+  NdrServerContextUnmarshall( PMIDL_STUB_MESSAGE pStubMsg );
+
+RPCRTAPI void RPC_ENTRY
+  NdrContextHandleSize( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, PFORMAT_STRING pFormat );
+
+RPCRTAPI NDR_SCONTEXT RPC_ENTRY
+  NdrContextHandleInitialize( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat );
+
+RPCRTAPI void RPC_ENTRY
+  NdrServerContextNewMarshall( PMIDL_STUB_MESSAGE pStubMsg, NDR_SCONTEXT ContextHandle,
+                               NDR_RUNDOWN RundownRoutine, PFORMAT_STRING pFormat );
+
+RPCRTAPI NDR_SCONTEXT RPC_ENTRY
+  NdrServerContextNewUnmarshall( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcSmDestroyClientContext( void **ContextHandle );
+
+RPCRTAPI void RPC_ENTRY
+  RpcSsDestroyClientContext( void **ContextHandle );
+
+RPCRTAPI void RPC_ENTRY
+  NdrSimpleTypeMarshall( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, unsigned char FormatChar );
+RPCRTAPI void RPC_ENTRY
+  NdrSimpleTypeUnmarshall( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, unsigned char FormatChar );
+
+/* while MS declares each prototype separately, I prefer to use macros for this kind of thing instead */
+#define SIMPLE_TYPE_MARSHAL(type) \
+RPCRTAPI unsigned char* RPC_ENTRY \
+  Ndr##type##Marshall( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, PFORMAT_STRING pFormat ); \
+RPCRTAPI unsigned char* RPC_ENTRY \
+  Ndr##type##Unmarshall( PMIDL_STUB_MESSAGE pStubMsg, unsigned char** ppMemory, PFORMAT_STRING pFormat, unsigned char fMustAlloc ); \
+RPCRTAPI void RPC_ENTRY \
+  Ndr##type##BufferSize( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, PFORMAT_STRING pFormat ); \
+RPCRTAPI ULONG RPC_ENTRY \
+  Ndr##type##MemorySize( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat );
+
+#define TYPE_MARSHAL(type) \
+  SIMPLE_TYPE_MARSHAL(type) \
+RPCRTAPI void RPC_ENTRY \
+  Ndr##type##Free( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, PFORMAT_STRING pFormat );
+
+TYPE_MARSHAL(Pointer)
+TYPE_MARSHAL(SimpleStruct)
+TYPE_MARSHAL(ConformantStruct)
+TYPE_MARSHAL(ConformantVaryingStruct)
+TYPE_MARSHAL(ComplexStruct)
+TYPE_MARSHAL(FixedArray)
+TYPE_MARSHAL(ConformantArray)
+TYPE_MARSHAL(ConformantVaryingArray)
+TYPE_MARSHAL(VaryingArray)
+TYPE_MARSHAL(ComplexArray)
+TYPE_MARSHAL(EncapsulatedUnion)
+TYPE_MARSHAL(NonEncapsulatedUnion)
+TYPE_MARSHAL(ByteCountPointer)
+TYPE_MARSHAL(XmitOrRepAs)
+TYPE_MARSHAL(UserMarshal)
+TYPE_MARSHAL(InterfacePointer)
+TYPE_MARSHAL(Range)
+
+SIMPLE_TYPE_MARSHAL(ConformantString)
+SIMPLE_TYPE_MARSHAL(NonConformantString)
+
+#undef TYPE_MARSHAL
+#undef SIMPLE_TYPE_MARSHAL
+
+RPCRTAPI void RPC_ENTRY
+  NdrCorrelationInitialize( PMIDL_STUB_MESSAGE pStubMsg, void *pMemory, ULONG CacheSize, ULONG flags );
+RPCRTAPI void RPC_ENTRY
+  NdrCorrelationPass( PMIDL_STUB_MESSAGE pStubMsg );
+RPCRTAPI void RPC_ENTRY
+  NdrCorrelationFree( PMIDL_STUB_MESSAGE pStubMsg );
+
+RPCRTAPI void RPC_ENTRY
+  NdrConvert2( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, LONG NumberParams );
+RPCRTAPI void RPC_ENTRY
+  NdrConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat );
+
+#define USER_MARSHAL_FC_BYTE    1
+#define USER_MARSHAL_FC_CHAR    2
+#define USER_MARSHAL_FC_SMALL   3
+#define USER_MARSHAL_FC_USMALL  4
+#define USER_MARSHAL_FC_WCHAR   5
+#define USER_MARSHAL_FC_SHORT   6
+#define USER_MARSHAL_FC_USHORT  7
+#define USER_MARSHAL_FC_LONG    8
+#define USER_MARSHAL_FC_ULONG   9
+#define USER_MARSHAL_FC_FLOAT   10
+#define USER_MARSHAL_FC_HYPER   11
+#define USER_MARSHAL_FC_DOUBLE  12
+
+RPCRTAPI unsigned char* RPC_ENTRY
+  NdrUserMarshalSimpleTypeConvert( ULONG *pFlags, unsigned char *pBuffer, unsigned char FormatChar );
+
+/* Note: this should return a CLIENT_CALL_RETURN, but calling convention for
+ * returning structures/unions is different between Windows and gcc on i386. */
+LONG_PTR RPC_VAR_ENTRY
+  NdrClientCall2( PMIDL_STUB_DESC pStubDescriptor, PFORMAT_STRING pFormat, ... );
+LONG_PTR RPC_VAR_ENTRY
+  NdrClientCall( PMIDL_STUB_DESC pStubDescriptor, PFORMAT_STRING pFormat, ... );
+LONG_PTR RPC_VAR_ENTRY
+  NdrAsyncClientCall( PMIDL_STUB_DESC pStubDescriptor, PFORMAT_STRING pFormat, ... );
+LONG_PTR RPC_VAR_ENTRY
+  NdrDcomAsyncClientCall( PMIDL_STUB_DESC pStubDescriptor, PFORMAT_STRING pFormat, ... );
+
+RPCRTAPI void RPC_ENTRY
+  NdrServerCall2( PRPC_MESSAGE pRpcMsg );
+RPCRTAPI void RPC_ENTRY
+  NdrServerCall( PRPC_MESSAGE pRpcMsg );
+RPCRTAPI void RPC_ENTRY
+  NdrAsyncServerCall( PRPC_MESSAGE pRpcMsg );
+
+RPCRTAPI LONG RPC_ENTRY
+  NdrStubCall2( struct IRpcStubBuffer* pThis, struct IRpcChannelBuffer* pChannel, PRPC_MESSAGE pRpcMsg, DWORD * pdwStubPhase );
+RPCRTAPI LONG RPC_ENTRY
+  NdrStubCall( struct IRpcStubBuffer* pThis, struct IRpcChannelBuffer* pChannel, PRPC_MESSAGE pRpcMsg, DWORD * pdwStubPhase );
+RPCRTAPI LONG RPC_ENTRY
+  NdrAsyncStubCall( struct IRpcStubBuffer* pThis, struct IRpcChannelBuffer* pChannel, PRPC_MESSAGE pRpcMsg, DWORD * pdwStubPhase );
+RPCRTAPI LONG RPC_ENTRY
+  NdrDcomAsyncStubCall( struct IRpcStubBuffer* pThis, struct IRpcChannelBuffer* pChannel, PRPC_MESSAGE pRpcMsg, DWORD * pdwStubPhase );
+
+RPCRTAPI void* RPC_ENTRY
+  NdrAllocate( PMIDL_STUB_MESSAGE pStubMsg, SIZE_T Len ) __WINE_ALLOC_SIZE(2);
+
+RPCRTAPI void RPC_ENTRY
+  NdrClearOutParameters( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, void *ArgAddr );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  NdrMapCommAndFaultStatus( PMIDL_STUB_MESSAGE pStubMsg, ULONG *pCommStatus,
+                            ULONG *pFaultStatus, RPC_STATUS Status_ );
+
+RPCRTAPI void* RPC_ENTRY
+  NdrOleAllocate( size_t Size ) __WINE_ALLOC_SIZE(1);
+RPCRTAPI void RPC_ENTRY
+  NdrOleFree( void* NodeToFree );
+
+RPCRTAPI void RPC_ENTRY
+  NdrClientInitialize( PRPC_MESSAGE pRpcMessage, PMIDL_STUB_MESSAGE pStubMsg,
+                       PMIDL_STUB_DESC pStubDesc, unsigned int ProcNum );
+RPCRTAPI void RPC_ENTRY
+  NdrClientInitializeNew( PRPC_MESSAGE pRpcMessage, PMIDL_STUB_MESSAGE pStubMsg,
+                          PMIDL_STUB_DESC pStubDesc, unsigned int ProcNum );
+RPCRTAPI unsigned char* RPC_ENTRY
+  NdrServerInitialize( PRPC_MESSAGE pRpcMsg, PMIDL_STUB_MESSAGE pStubMsg, PMIDL_STUB_DESC pStubDesc );
+RPCRTAPI unsigned char* RPC_ENTRY
+  NdrServerInitializeNew( PRPC_MESSAGE pRpcMsg, PMIDL_STUB_MESSAGE pStubMsg, PMIDL_STUB_DESC pStubDesc );
+RPCRTAPI unsigned char* RPC_ENTRY
+  NdrServerInitializeUnmarshall( PMIDL_STUB_MESSAGE pStubMsg, PMIDL_STUB_DESC pStubDesc, PRPC_MESSAGE pRpcMsg );
+RPCRTAPI void RPC_ENTRY
+  NdrServerInitializeMarshall( PRPC_MESSAGE pRpcMsg, PMIDL_STUB_MESSAGE pStubMsg  );
+RPCRTAPI void RPC_ENTRY
+  NdrServerMarshall( struct IRpcStubBuffer *pThis, struct IRpcChannelBuffer *pChannel, PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat );
+RPCRTAPI void RPC_ENTRY
+  NdrServerUnmarshall( struct IRpcChannelBuffer *pChannel, PRPC_MESSAGE pRpcMsg,
+                       PMIDL_STUB_MESSAGE pStubMsg, PMIDL_STUB_DESC pStubDesc,
+                       PFORMAT_STRING pFormat, void *pParamList );
+RPCRTAPI unsigned char* RPC_ENTRY
+  NdrGetBuffer( PMIDL_STUB_MESSAGE stubmsg, ULONG buflen, RPC_BINDING_HANDLE handle );
+RPCRTAPI void RPC_ENTRY
+  NdrFreeBuffer( PMIDL_STUB_MESSAGE pStubMsg );
+RPCRTAPI unsigned char* RPC_ENTRY
+  NdrSendReceive( PMIDL_STUB_MESSAGE stubmsg, unsigned char *buffer );
+
+RPCRTAPI unsigned char * RPC_ENTRY
+  NdrNsGetBuffer( PMIDL_STUB_MESSAGE pStubMsg, ULONG BufferLength, RPC_BINDING_HANDLE Handle );
+RPCRTAPI unsigned char * RPC_ENTRY
+  NdrNsSendReceive( PMIDL_STUB_MESSAGE pStubMsg, unsigned char *pBufferEnd, RPC_BINDING_HANDLE *pAutoHandle );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  NdrGetDcomProtocolVersion( PMIDL_STUB_MESSAGE pStubMsg, RPC_VERSION *pVersion );
+
+RPCRTAPI PFULL_PTR_XLAT_TABLES RPC_ENTRY
+  NdrFullPointerXlatInit( ULONG NumberOfPointers, XLAT_SIDE XlatSide );
+RPCRTAPI void RPC_ENTRY
+  NdrFullPointerXlatFree( PFULL_PTR_XLAT_TABLES pXlatTables );
+RPCRTAPI int RPC_ENTRY
+  NdrFullPointerQueryPointer( PFULL_PTR_XLAT_TABLES pXlatTables, void *pPointer,
+                              unsigned char QueryType, ULONG *pRefId );
+RPCRTAPI int RPC_ENTRY
+  NdrFullPointerQueryRefId( PFULL_PTR_XLAT_TABLES pXlatTables, ULONG RefId,
+                            unsigned char QueryType, void **ppPointer );
+RPCRTAPI void RPC_ENTRY
+  NdrFullPointerInsertRefId( PFULL_PTR_XLAT_TABLES pXlatTables, ULONG RefId, void *pPointer );
+RPCRTAPI int RPC_ENTRY
+  NdrFullPointerFree( PFULL_PTR_XLAT_TABLES pXlatTables, void *Pointer );
+
+RPCRTAPI void RPC_ENTRY
+  NdrRpcSsEnableAllocate( PMIDL_STUB_MESSAGE pMessage );
+RPCRTAPI void RPC_ENTRY
+  NdrRpcSsDisableAllocate( PMIDL_STUB_MESSAGE pMessage );
+RPCRTAPI void RPC_ENTRY
+  NdrRpcSmSetClientToOsf( PMIDL_STUB_MESSAGE pMessage );
+RPCRTAPI void * RPC_ENTRY
+  NdrRpcSmClientAllocate( size_t Size ) __WINE_ALLOC_SIZE(1);
+RPCRTAPI void RPC_ENTRY
+  NdrRpcSmClientFree( void *NodeToFree );
+RPCRTAPI void * RPC_ENTRY
+  NdrRpcSsDefaultAllocate( size_t Size ) __WINE_ALLOC_SIZE(1);
+RPCRTAPI void RPC_ENTRY
+  NdrRpcSsDefaultFree( void *NodeToFree );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  NdrGetUserMarshalInfo( ULONG *pFlags, ULONG InformationLevel, NDR_USER_MARSHAL_INFO *pMarshalInfo );
+
+#ifdef __cplusplus
+}
+#endif
+#endif /*__WINE_RPCNDR_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/rpcnterr.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/rpcnterr.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/rpcnterr.h	(revision 16410)
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2001 Peter Hunnisett
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __RPCNTERR_H__
+#define __RPCNTERR_H__
+
+#define RPC_S_OK                          ERROR_SUCCESS
+#define RPC_S_INVALID_ARG                 ERROR_INVALID_PARAMETER
+#define RPC_S_OUT_OF_MEMORY               ERROR_OUTOFMEMORY
+#define RPC_S_OUT_OF_THREADS              ERROR_MAX_THRDS_REACHED
+#define RPC_S_INVALID_LEVEL               ERROR_INVALID_PARAMETER
+#define RPC_S_BUFFER_TOO_SMALL            ERROR_INSUFFICIENT_BUFFER
+#define RPC_S_INVALID_SECURITY_DESC       ERROR_INVALID_SECURITY_DESCR
+#define RPC_S_ACCESS_DENIED               ERROR_ACCESS_DENIED
+#define RPC_S_SERVER_OUT_OF_MEMORY        ERROR_NOT_ENOUGH_SERVER_MEMORY
+#define RPC_S_ASYNC_CALL_PENDING          ERROR_IO_PENDING
+#define RPC_S_UNKNOWN_PRINCIPAL           ERROR_NONE_MAPPED
+#define RPC_S_TIMEOUT                     ERROR_TIMEOUT
+
+#define RPC_X_NO_MEMORY                   RPC_S_OUT_OF_MEMORY
+#define RPC_X_INVALID_BOUND               RPC_S_INVALID_BOUND
+#define RPC_X_INVALID_TAG                 RPC_S_INVALID_TAG
+#define RPC_X_ENUM_VALUE_TOO_LARGE        RPC_X_ENUM_VALUE_OUT_OF_RANGE
+#define RPC_X_SS_CONTEXT_MISMATCH         ERROR_INVALID_HANDLE
+#define RPC_X_INVALID_BUFFER              ERROR_INVALID_USER_BUFFER
+#define RPC_X_PIPE_APP_MEMORY             ERROR_OUTOFMEMORY
+#define RPC_X_INVALID_PIPE_OPERATION      RPC_X_WRONG_PIPE_ORDER
+
+#endif  /* __RPCNTERR_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/rpcproxy.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/rpcproxy.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/rpcproxy.h	(revision 16410)
@@ -0,0 +1,373 @@
+/*
+ * Copyright (C) 2001 Ove Kaaven
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __RPCPROXY_H_VERSION__
+/* FIXME: Find an appropriate version number.  I guess something is better than nothing */
+#define __RPCPROXY_H_VERSION__ ( 399 )
+#endif
+
+#ifndef __WINE_RPCPROXY_H
+#define __WINE_RPCPROXY_H
+
+#define __midl_proxy
+
+#include <basetsd.h>
+#ifndef GUID_DEFINED
+#include <guiddef.h>
+#endif
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct tagCInterfaceStubVtbl *PCInterfaceStubVtblList;
+typedef struct tagCInterfaceProxyVtbl *PCInterfaceProxyVtblList;
+typedef const char *PCInterfaceName;
+typedef int __stdcall IIDLookupRtn( const IID *pIID, int *pIndex );
+typedef IIDLookupRtn *PIIDLookup;
+
+typedef struct tagProxyFileInfo
+{
+  const PCInterfaceProxyVtblList *pProxyVtblList;
+  const PCInterfaceStubVtblList *pStubVtblList;
+  const PCInterfaceName *pNamesArray;
+  const IID **pDelegatedIIDs;
+  const PIIDLookup pIIDLookupRtn;
+  unsigned short TableSize;
+  unsigned short TableVersion;
+  const IID **pAsyncIIDLookup;
+  LONG_PTR Filler2;
+  LONG_PTR Filler3;
+  LONG_PTR Filler4;
+} ProxyFileInfo;
+
+typedef ProxyFileInfo ExtendedProxyFileInfo;
+
+typedef struct tagCInterfaceProxyHeader
+{
+#ifdef USE_STUBLESS_PROXY
+  const void *pStublessProxyInfo;
+#endif
+  const IID *piid;
+} CInterfaceProxyHeader;
+
+#define CINTERFACE_PROXY_VTABLE(n) \
+  struct \
+  { \
+    CInterfaceProxyHeader header; \
+    void *Vtbl[n]; \
+  }
+
+typedef struct tagCInterfaceProxyVtbl
+{
+  CInterfaceProxyHeader header;
+#if defined(__GNUC__)
+  void *Vtbl[0];
+#else
+  void *Vtbl[1];
+#endif
+} CInterfaceProxyVtbl;
+
+typedef void (__RPC_STUB *PRPC_STUB_FUNCTION)(
+  IRpcStubBuffer *This,
+  IRpcChannelBuffer *_pRpcChannelBuffer,
+  PRPC_MESSAGE _pRpcMessage,
+  DWORD *pdwStubPhase);
+
+typedef struct tagCInterfaceStubHeader
+{
+  const IID *piid;
+  const MIDL_SERVER_INFO *pServerInfo;
+  ULONG DispatchTableCount;
+  const PRPC_STUB_FUNCTION *pDispatchTable;
+} CInterfaceStubHeader;
+
+typedef struct tagCInterfaceStubVtbl
+{
+  CInterfaceStubHeader header;
+  IRpcStubBufferVtbl Vtbl;
+} CInterfaceStubVtbl;
+
+typedef struct tagCStdStubBuffer
+{
+  const IRpcStubBufferVtbl *lpVtbl;
+  LONG RefCount;
+  struct IUnknown *pvServerObject;
+  const struct ICallFactoryVtbl *pCallFactoryVtbl;
+  const IID *pAsyncIID;
+  struct IPSFactoryBuffer *pPSFactory;
+} CStdStubBuffer;
+
+typedef struct tagCStdPSFactoryBuffer
+{
+  const IPSFactoryBufferVtbl *lpVtbl;
+  LONG RefCount;
+  const ProxyFileInfo **pProxyFileList;
+  LONG Filler1;
+} CStdPSFactoryBuffer;
+
+#define STUB_FORWARDING_FUNCTION NdrStubForwardingFunction
+
+ULONG STDMETHODCALLTYPE CStdStubBuffer2_Release(IRpcStubBuffer *This) DECLSPEC_HIDDEN;
+ULONG STDMETHODCALLTYPE NdrCStdStubBuffer2_Release(IRpcStubBuffer *This, IPSFactoryBuffer *pPSF);
+
+#define CStdStubBuffer_DELEGATING_METHODS 0, 0, CStdStubBuffer2_Release, 0, 0, 0, 0, 0, 0, 0
+
+
+HRESULT WINAPI
+  CStdStubBuffer_QueryInterface( IRpcStubBuffer *This, REFIID riid, void **ppvObject );
+ULONG WINAPI
+  CStdStubBuffer_AddRef( IRpcStubBuffer *This );
+ULONG WINAPI
+  CStdStubBuffer_Release( IRpcStubBuffer *This ) DECLSPEC_HIDDEN;
+ULONG WINAPI
+  NdrCStdStubBuffer_Release( IRpcStubBuffer *This, IPSFactoryBuffer *pPSF );
+HRESULT WINAPI
+  CStdStubBuffer_Connect( IRpcStubBuffer *This, IUnknown *pUnkServer );
+void WINAPI
+  CStdStubBuffer_Disconnect( IRpcStubBuffer *This );
+HRESULT WINAPI
+  CStdStubBuffer_Invoke( IRpcStubBuffer *This, RPCOLEMESSAGE *pRpcMsg, IRpcChannelBuffer *pRpcChannelBuffer );
+IRpcStubBuffer * WINAPI
+  CStdStubBuffer_IsIIDSupported( IRpcStubBuffer *This, REFIID riid );
+ULONG WINAPI
+  CStdStubBuffer_CountRefs( IRpcStubBuffer *This );
+HRESULT WINAPI
+  CStdStubBuffer_DebugServerQueryInterface( IRpcStubBuffer *This, void **ppv );
+void WINAPI
+  CStdStubBuffer_DebugServerRelease( IRpcStubBuffer *This, void *pv );
+
+#define CStdStubBuffer_METHODS \
+  CStdStubBuffer_QueryInterface, \
+  CStdStubBuffer_AddRef, \
+  CStdStubBuffer_Release, \
+  CStdStubBuffer_Connect, \
+  CStdStubBuffer_Disconnect, \
+  CStdStubBuffer_Invoke, \
+  CStdStubBuffer_IsIIDSupported, \
+  CStdStubBuffer_CountRefs, \
+  CStdStubBuffer_DebugServerQueryInterface, \
+  CStdStubBuffer_DebugServerRelease
+
+RPCRTAPI void RPC_ENTRY
+  NdrProxyInitialize( void *This, PRPC_MESSAGE pRpcMsg, PMIDL_STUB_MESSAGE pStubMsg,
+                      PMIDL_STUB_DESC pStubDescriptor, unsigned int ProcNum );
+RPCRTAPI void RPC_ENTRY
+  NdrProxyGetBuffer( void *This, PMIDL_STUB_MESSAGE pStubMsg );
+RPCRTAPI void RPC_ENTRY
+  NdrProxySendReceive( void *This, PMIDL_STUB_MESSAGE pStubMsg );
+RPCRTAPI void RPC_ENTRY
+  NdrProxyFreeBuffer( void *This, PMIDL_STUB_MESSAGE pStubMsg );
+RPCRTAPI HRESULT RPC_ENTRY
+  NdrProxyErrorHandler( DWORD dwExceptionCode );
+
+RPCRTAPI void RPC_ENTRY
+  NdrStubInitialize( PRPC_MESSAGE pRpcMsg, PMIDL_STUB_MESSAGE pStubMsg,
+                     PMIDL_STUB_DESC pStubDescriptor, IRpcChannelBuffer *pRpcChannelBuffer );
+RPCRTAPI void RPC_ENTRY
+  NdrStubInitializePartial( PRPC_MESSAGE pRpcMsg, PMIDL_STUB_MESSAGE pStubMsg,
+                            PMIDL_STUB_DESC pStubDescriptor, IRpcChannelBuffer *pRpcChannelBuffer,
+                            ULONG RequestedBufferSize );
+void __RPC_STUB NdrStubForwardingFunction( IRpcStubBuffer *This, IRpcChannelBuffer *pChannel,
+                                           PRPC_MESSAGE pMsg, DWORD *pdwStubPhase );
+RPCRTAPI void RPC_ENTRY
+  NdrStubGetBuffer( IRpcStubBuffer *This, IRpcChannelBuffer *pRpcChannelBuffer, PMIDL_STUB_MESSAGE pStubMsg );
+RPCRTAPI HRESULT RPC_ENTRY
+  NdrStubErrorHandler( DWORD dwExceptionCode );
+
+RPCRTAPI HRESULT RPC_ENTRY
+  NdrDllGetClassObject( REFCLSID rclsid, REFIID riid, void **ppv, const ProxyFileInfo **pProxyFileList,
+                        const CLSID *pclsid, CStdPSFactoryBuffer *pPSFactoryBuffer );
+RPCRTAPI HRESULT RPC_ENTRY
+  NdrDllCanUnloadNow( CStdPSFactoryBuffer *pPSFactoryBuffer );
+
+RPCRTAPI HRESULT RPC_ENTRY
+  NdrDllRegisterProxy( HMODULE hDll, const ProxyFileInfo **pProxyFileList, const CLSID *pclsid );
+RPCRTAPI HRESULT RPC_ENTRY
+  NdrDllUnregisterProxy( HMODULE hDll, const ProxyFileInfo **pProxyFileList, const CLSID *pclsid );
+
+#define CSTDSTUBBUFFERRELEASE(pFactory) \
+ULONG WINAPI CStdStubBuffer_Release(IRpcStubBuffer *This) \
+  { return NdrCStdStubBuffer_Release(This, (IPSFactoryBuffer *)pFactory); }
+
+#ifdef PROXY_DELEGATION
+#define CSTDSTUBBUFFER2RELEASE(pFactory) \
+ULONG WINAPI CStdStubBuffer2_Release(IRpcStubBuffer *This) \
+  { return NdrCStdStubBuffer2_Release(This, (IPSFactoryBuffer *)pFactory); }
+#else
+#define CSTDSTUBBUFFER2RELEASE(pFactory)
+#endif
+
+#define IID_GENERIC_CHECK_IID(name,pIID,index) memcmp(pIID, name##_ProxyVtblList[index]->header.piid, sizeof(IID))
+
+/*
+ * In these macros, BS stands for Binary Search. MIDL uses these to
+ * "unroll" a binary search into the module's IID_Lookup function.
+ * However, I haven't bothered to reimplement that stuff yet;
+ * I've just implemented a linear search for now.
+ */
+#define IID_BS_LOOKUP_SETUP \
+  int c;
+#define IID_BS_LOOKUP_INITIAL_TEST(name, sz, split)
+#define IID_BS_LOOKUP_NEXT_TEST(name, split)
+#define IID_BS_LOOKUP_RETURN_RESULT(name, sz, index) \
+  for (c=0; c<sz; c++) if (!name##_CHECK_IID(c)) { (index)=c; return 1; } \
+  return 0;
+
+/* macros used in dlldata.c files */
+#define EXTERN_PROXY_FILE(proxy) \
+    EXTERN_C const ProxyFileInfo proxy##_ProxyFileInfo DECLSPEC_HIDDEN;
+
+#define PROXYFILE_LIST_START \
+    const ProxyFileInfo * aProxyFileList[] DECLSPEC_HIDDEN = \
+    {
+
+#define REFERENCE_PROXY_FILE(proxy) \
+        & proxy##_ProxyFileInfo
+
+#define PROXYFILE_LIST_END \
+        NULL \
+    };
+
+
+/* define PROXY_CLSID to use an existing CLSID */
+/* define PROXY_CLSID_IS to specify the CLSID data of the PSFactoryBuffer */
+/* define neither to use the GUID of the first interface */
+#ifdef PROXY_CLSID
+# define CLSID_PSFACTORYBUFFER extern CLSID PROXY_CLSID DECLSPEC_HIDDEN;
+#else
+# ifdef PROXY_CLSID_IS
+#  define CLSID_PSFACTORYBUFFER const CLSID CLSID_PSFactoryBuffer DECLSPEC_HIDDEN; \
+    const CLSID CLSID_PSFactoryBuffer = PROXY_CLSID_IS;
+#  define PROXY_CLSID CLSID_PSFactoryBuffer
+# else
+#  define CLSID_PSFACTORYBUFFER
+# endif
+#endif
+
+#ifndef PROXY_CLSID
+# define GET_DLL_CLSID (aProxyFileList[0]->pStubVtblList[0] ? \
+    aProxyFileList[0]->pStubVtblList[0]->header.piid : NULL)
+#else
+# define GET_DLL_CLSID &PROXY_CLSID
+#endif
+
+#ifdef ENTRY_PREFIX
+# define __rpc_macro_expand2(a, b) a##b
+# define __rpc_macro_expand(a, b) __rpc_macro_expand2(a, b)
+# define DLLREGISTERSERVER_ENTRY __rpc_macro_expand(ENTRY_PREFIX, DllRegisterServer)
+# define DLLUNREGISTERSERVER_ENTRY __rpc_macro_expand(ENTRY_PREFIX, DllUnregisterServer)
+# define DLLMAIN_ENTRY __rpc_macro_expand(ENTRY_PREFIX, DllMain)
+# define DLLGETCLASSOBJECT_ENTRY __rpc_macro_expand(ENTRY_PREFIX, DllGetClassObject)
+# define DLLCANUNLOADNOW_ENTRY __rpc_macro_expand(ENTRY_PREFIX, DllCanUnloadNow)
+#else
+# define DLLREGISTERSERVER_ENTRY DllRegisterServer
+# define DLLUNREGISTERSERVER_ENTRY DllUnregisterServer
+# define DLLMAIN_ENTRY DllMain
+# define DLLGETCLASSOBJECT_ENTRY DllGetClassObject
+# define DLLCANUNLOADNOW_ENTRY DllCanUnloadNow
+#endif
+
+#define DLLDATA_GETPROXYDLLINFO(pfl, rclsid) \
+    void RPC_ENTRY GetProxyDllInfo(const ProxyFileInfo ***ppProxyFileInfo, \
+                                   const CLSID **ppClsid) DECLSPEC_HIDDEN; \
+    void RPC_ENTRY GetProxyDllInfo(const ProxyFileInfo ***ppProxyFileInfo, \
+                                   const CLSID **ppClsid) \
+    { \
+        *ppProxyFileInfo = (pfl); \
+        *ppClsid = (rclsid); \
+    }
+
+#define DLLGETCLASSOBJECTROUTINE(pfl, factory_clsid, factory) \
+    HRESULT WINAPI DLLGETCLASSOBJECT_ENTRY(REFCLSID rclsid, REFIID riid, void **ppv) DECLSPEC_HIDDEN; \
+    HRESULT WINAPI DLLGETCLASSOBJECT_ENTRY(REFCLSID rclsid, REFIID riid, \
+                                           void **ppv) \
+    { \
+        return NdrDllGetClassObject(rclsid, riid, ppv, (pfl), \
+                                    (factory_clsid), factory); \
+    }
+
+#define DLLCANUNLOADNOW(factory) \
+    HRESULT WINAPI DLLCANUNLOADNOW_ENTRY(void) DECLSPEC_HIDDEN; \
+    HRESULT WINAPI DLLCANUNLOADNOW_ENTRY(void) \
+    { \
+        return NdrDllCanUnloadNow((factory)); \
+    }
+
+#define REGISTER_PROXY_DLL_ROUTINES(pfl, factory_clsid) \
+    HINSTANCE hProxyDll DECLSPEC_HIDDEN = NULL; \
+    \
+    BOOL WINAPI DLLMAIN_ENTRY(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) DECLSPEC_HIDDEN; \
+    BOOL WINAPI DLLMAIN_ENTRY(HINSTANCE hinstDLL, DWORD fdwReason, \
+                              LPVOID lpvReserved) \
+    { \
+        if (fdwReason == DLL_PROCESS_ATTACH) \
+        { \
+            DisableThreadLibraryCalls(hinstDLL); \
+            hProxyDll = hinstDLL; \
+        } \
+        return TRUE; \
+    } \
+    \
+    HRESULT WINAPI DLLREGISTERSERVER_ENTRY(void) DECLSPEC_HIDDEN; \
+    HRESULT WINAPI DLLREGISTERSERVER_ENTRY(void) \
+    { \
+        return NdrDllRegisterProxy(hProxyDll, (pfl), (factory_clsid)); \
+    } \
+    \
+    HRESULT WINAPI DLLUNREGISTERSERVER_ENTRY(void) DECLSPEC_HIDDEN; \
+    HRESULT WINAPI DLLUNREGISTERSERVER_ENTRY(void) \
+    { \
+        return NdrDllUnregisterProxy(hProxyDll, (pfl), (factory_clsid)); \
+    }
+
+#ifdef REGISTER_PROXY_DLL
+# define DLLREGISTRY_ROUTINES(pfl, factory_clsid) \
+    REGISTER_PROXY_DLL_ROUTINES(pfl, factory_clsid)
+#else
+# define DLLREGISTRY_ROUTINES(pfl, factory_clsid)
+#endif
+
+#define DLLDATA_ROUTINES(pfl, factory_clsid) \
+    CLSID_PSFACTORYBUFFER \
+    CStdPSFactoryBuffer DECLSPEC_HIDDEN gPFactory = { NULL, 0, NULL, 0 }; \
+    DLLDATA_GETPROXYDLLINFO(pfl, factory_clsid) \
+    DLLGETCLASSOBJECTROUTINE(pfl, factory_clsid, &gPFactory) \
+    DLLCANUNLOADNOW(&gPFactory) \
+    CSTDSTUBBUFFERRELEASE(&gPFactory) \
+    CSTDSTUBBUFFER2RELEASE(&gPFactory) \
+    DLLREGISTRY_ROUTINES(pfl, factory_clsid)
+
+#if 0
+
+RPCRTAPI HRESULT RPC_ENTRY
+  CreateProxyFromTypeInfo( LPTYPEINFO pTypeInfo, LPUNKNOWN pUnkOuter, REFIID riid,
+                           LPRPCPROXYBUFFER *ppProxy, LPVOID *ppv );
+RPCRTAPI HRESULT RPC_ENTRY
+  CreateStubFromTypeInfo( LPTYPEINFO pTypeInfo, REFIID riid, LPUNKNOWN pUnkServer,
+                          LPRPCSTUBBUFFER *ppStub );
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*__WINE_RPCPROXY_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/scarderr.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/scarderr.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/scarderr.h	(revision 16410)
@@ -0,0 +1,96 @@
+/*
+ * Winscard definitions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/* Note that if you included winerror.h directly or indirectly,
+ * none of these definitions will be used!
+ */
+#ifndef SCARD_S_SUCCESS
+
+#define FACILITY_SYSTEM                       0
+#define FACILITY_SCARD                       16
+
+#define STATUS_SEVERITY_INFORMATIONAL    ((NTSTATUS) 0x00000001)
+#define STATUS_SEVERITY_WARNING          ((NTSTATUS) 0x00000002)
+#define STATUS_SEVERITY_ERROR            ((NTSTATUS) 0x00000003)
+
+#define SCARD_S_SUCCESS                                    NO_ERROR
+#define SCARD_F_INTERNAL_ERROR                             ((DWORD)0x80100001)
+#define SCARD_E_CANCELLED                                  ((DWORD)0x80100002)
+#define SCARD_E_INVALID_HANDLE                             ((DWORD)0x80100003)
+#define SCARD_E_INVALID_PARAMETER                          ((DWORD)0x80100004)
+#define SCARD_E_INVALID_TARGET                             ((DWORD)0x80100005)
+#define SCARD_E_NO_MEMORY                                  ((DWORD)0x80100006)
+#define SCARD_F_WAITED_TOO_LONG                            ((DWORD)0x80100007)
+#define SCARD_E_INSUFFICIENT_BUFFER                        ((DWORD)0x80100008)
+#define SCARD_E_UNKNOWN_READER                             ((DWORD)0x80100009)
+#define SCARD_E_TIMEOUT                                    ((DWORD)0x8010000A)
+#define SCARD_E_SHARING_VIOLATION                          ((DWORD)0x8010000B)
+#define SCARD_E_NO_SMARTCARD                               ((DWORD)0x8010000C)
+#define SCARD_E_UNKNOWN_CARD                               ((DWORD)0x8010000D)
+#define SCARD_E_CANT_DISPOSE                               ((DWORD)0x8010000E)
+#define SCARD_E_PROTO_MISMATCH                             ((DWORD)0x8010000F)
+#define SCARD_E_NOT_READY                                  ((DWORD)0x80100010)
+#define SCARD_E_INVALID_VALUE                              ((DWORD)0x80100011)
+#define SCARD_E_SYSTEM_CANCELLED                           ((DWORD)0x80100012)
+#define SCARD_F_COMM_ERROR                                 ((DWORD)0x80100013)
+#define SCARD_F_UNKNOWN_ERROR                              ((DWORD)0x80100014)
+#define SCARD_E_INVALID_ATR                                ((DWORD)0x80100015)
+#define SCARD_E_NOT_TRANSACTED                             ((DWORD)0x80100016)
+#define SCARD_E_READER_UNAVAILABLE                         ((DWORD)0x80100017)
+#define SCARD_P_SHUTDOWN                                   ((DWORD)0x80100018)
+#define SCARD_E_PCI_TOO_SMALL                              ((DWORD)0x80100019)
+#define SCARD_E_READER_UNSUPPORTED                         ((DWORD)0x8010001A)
+#define SCARD_E_DUPLICATE_READER                           ((DWORD)0x8010001B)
+#define SCARD_E_CARD_UNSUPPORTED                           ((DWORD)0x8010001C)
+#define SCARD_E_NO_SERVICE                                 ((DWORD)0x8010001D)
+#define SCARD_E_SERVICE_STOPPED                            ((DWORD)0x8010001E)
+#define SCARD_E_UNEXPECTED                                 ((DWORD)0x8010001F)
+#define SCARD_E_ICC_INSTALLATION                           ((DWORD)0x80100020)
+#define SCARD_E_ICC_CREATEORDER                            ((DWORD)0x80100021)
+#define SCARD_E_UNSUPPORTED_FEATURE                        ((DWORD)0x80100022)
+#define SCARD_E_DIR_NOT_FOUND                              ((DWORD)0x80100023)
+#define SCARD_E_FILE_NOT_FOUND                             ((DWORD)0x80100024)
+#define SCARD_E_NO_DIR                                     ((DWORD)0x80100025)
+#define SCARD_E_NO_FILE                                    ((DWORD)0x80100026)
+#define SCARD_E_NO_ACCESS                                  ((DWORD)0x80100027)
+#define SCARD_E_WRITE_TOO_MANY                             ((DWORD)0x80100028)
+#define SCARD_E_BAD_SEEK                                   ((DWORD)0x80100029)
+#define SCARD_E_INVALID_CHV                                ((DWORD)0x8010002A)
+#define SCARD_E_UNKNOWN_RES_MNG                            ((DWORD)0x8010002B)
+#define SCARD_E_NO_SUCH_CERTIFICATE                        ((DWORD)0x8010002C)
+#define SCARD_E_CERTIFICATE_UNAVAILABLE                    ((DWORD)0x8010002D)
+#define SCARD_E_NO_READERS_AVAILABLE                       ((DWORD)0x8010002E)
+#define SCARD_E_COMM_DATA_LOST                             ((DWORD)0x8010002F)
+#define SCARD_E_NO_KEY_CONTAINER                           ((DWORD)0x80100030)
+#define SCARD_E_SERVER_TOO_BUSY                            ((DWORD)0x80100031)
+#define SCARD_W_UNSUPPORTED_CARD                           ((DWORD)0x80100065)
+#define SCARD_W_UNRESPONSIVE_CARD                          ((DWORD)0x80100066)
+#define SCARD_W_UNPOWERED_CARD                             ((DWORD)0x80100067)
+#define SCARD_W_RESET_CARD                                 ((DWORD)0x80100068)
+#define SCARD_W_REMOVED_CARD                               ((DWORD)0x80100069)
+#define SCARD_W_SECURITY_VIOLATION                         ((DWORD)0x8010006A)
+#define SCARD_W_WRONG_CHV                                  ((DWORD)0x8010006B)
+#define SCARD_W_CHV_BLOCKED                                ((DWORD)0x8010006C)
+#define SCARD_W_EOF                                        ((DWORD)0x8010006D)
+#define SCARD_W_CANCELLED_BY_USER                          ((DWORD)0x8010006E)
+#define SCARD_W_CARD_NOT_AUTHENTICATED                     ((DWORD)0x8010006F)
+#define SCARD_W_CACHE_ITEM_NOT_FOUND                       ((DWORD)0x80100070)
+#define SCARD_W_CACHE_ITEM_STALE                           ((DWORD)0x80100071)
+#define SCARD_W_CACHE_ITEM_TOO_BIG                         ((DWORD)0x80100072)
+
+#endif /* SCARD_S_SUCCESS */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/schannel.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/schannel.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/schannel.h	(revision 16410)
@@ -0,0 +1,205 @@
+/*
+ * Copyright (C) 2005 Juan Lang
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __WINE_SCHANNEL_H__
+#define __WINE_SCHANNEL_H__
+
+#include <wincrypt.h>
+
+/* Package names */
+#define UNISP_NAME_A "Microsoft Unified Security Protocol Provider"
+#if defined(__GNUC__)
+#define UNISP_NAME_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',\
+ ' ','U','n','i','f','i','e','d',' ','S','e','c','u','r','i','t','y',' ',\
+ 'P','r','o','t','o','c','o','l',' ','P','r','o','v','i','d','e','r',0 }
+#elif defined(_MSC_VER)
+#define UNISP_NAME_W L"Microsoft Unified Security Protocol Provider"
+#else
+static const WCHAR UNISP_NAME_W[] = { 'M','i','c','r','o','s','o','f','t',
+ ' ','U','n','i','f','i','e','d',' ','S','e','c','u','r','i','t','y',' ',
+ 'P','r','o','t','o','c','o','l',' ','P','r','o','v','i','d','e','r',0 };
+#endif
+#define UNISP_NAME WINELIB_NAME_AW(UNISP_NAME_)
+
+#define SSL2SP_NAME_A   "Microsoft SSL 2.0"
+#if defined(__GNUC__)
+#define SSL2SP_NAME_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',\
+ ' ','S','S','L',' ','2','.','0',0 }
+#elif defined(_MSC_VER)
+#define SSL2SP_NAME_W  L"Microsoft SSL 2.0"
+#else
+static const WCHAR SSL2SP_NAME_W[] = { 'M','i','c','r','o','s','o','f','t',
+ ' ','S','S','L',' ','2','.','0',0 };
+#endif
+#define SSL2SP_NAME WINELIB_NAME_AW(SSL2SP_NAME_)
+
+#define SSL3SP_NAME_A   "Microsoft SSL 3.0"
+#if defined(__GNUC__)
+#define SSL3SP_NAME_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',\
+ ' ','S','S','L',' ','3','.','0',0 }
+#elif defined(_MSC_VER)
+#define SSL3SP_NAME_W  L"Microsoft SSL 3.0"
+#else
+static const WCHAR SSL3SP_NAME_W[] = { 'M','i','c','r','o','s','o','f','t',
+ ' ','S','S','L',' ','3','.','0',0 };
+#endif
+#define SSL3SP_NAME WINELIB_NAME_AW(SSL3SP_NAME_)
+
+#define TLS1SP_NAME_A   "Microsoft TLS 1.0"
+#if defined(__GNUC__)
+#define TLS1SP_NAME_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',\
+ ' ','T','L','S',' ','1','.','0',0 }
+#elif defined(_MSC_VER)
+#define TLS1SP_NAME_W  L"Microsoft TLS 1.0"
+#else
+static const WCHAR TLS1SP_NAME_W[] = { 'M','i','c','r','o','s','o','f','t',
+ ' ','T','L','S',' ','1','.','0',0 };
+#endif
+#define TLS1SP_NAME WINELIB_NAME_AW(TLS1SP_NAME_)
+
+#define PCT1SP_NAME_A   "Microsoft PCT 1.0"
+#if defined(__GNUC__)
+#define PCT1SP_NAME_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',\
+ ' ','P','C','T',' ','1','.','0',0 }
+#elif defined(_MSC_VER)
+#define PCT1SP_NAME_W  L"Microsoft PCT 1.0"
+#else
+static const WCHAR PCT1SP_NAME_W[] = { 'M','i','c','r','o','s','o','f','t',
+ ' ','P','C','T',' ','1','.','0',0 };
+#endif
+#define PCT1SP_NAME WINELIB_NAME_AW(PCT1SP_NAME_)
+
+#define SCHANNEL_NAME_A "Schannel"
+#if defined(__GNUC__)
+#define SCHANNEL_NAME_W (const WCHAR []){ 'S','c','h','a','n','n','e','l',0 }
+#elif defined(_MSC_VER)
+#define SCHANNEL_NAME_W  L"Schannel"
+#else
+static const WCHAR SCHANNEL_NAME_W[] = { 'S','c','h','a','n','n','e','l',0 };
+#endif
+#define SCHANNEL_NAME WINELIB_NAME_AW(SCHANNEL_NAME_)
+
+#define SCH_CRED_V1           1
+#define SCH_CRED_V2           2
+#define SCH_CRED_VERSION      2
+#define SCH_CRED_V3           3
+#define SCHANNEL_CRED_VERSION 4
+
+#define SCHANNEL_RENEGOTIATE 0
+#define SCHANNEL_SHUTDOWN    1
+#define SCHANNEL_ALERT       2
+#define SCHANNEL_SESSION     3
+
+#define SP_PROT_TLS1_CLIENT 128
+#define SP_PROT_TLS1_SERVER 64
+#define SP_PROT_SSL3_CLIENT 32
+#define SP_PROT_SSL3_SERVER 16
+#define SP_PROT_SSL2_CLIENT 8
+#define SP_PROT_SSL2_SERVER 4
+#define SP_PROT_PCT1_CLIENT 2
+#define SP_PROT_PCT1_SERVER 1
+
+#define SP_PROT_TLS1 (SP_PROT_TLS1_CLIENT | SP_PROT_TLS1_SERVER)
+#define SP_PROT_SSL3 (SP_PROT_SSL3_CLIENT | SP_PROT_SSL3_SERVER)
+#define SP_PROT_SSL2 (SP_PROT_SSL2_CLIENT | SP_PROT_SSL2_SERVER)
+#define SP_PROT_PCT1 (SP_PROT_PCT1_CLIENT | SP_PROT_PCT1_SERVER)
+
+#define SCH_CRED_NO_SYSTEM_MAPPER                    2
+#define SCH_CRED_NO_SERVERNAME_CHECK                 4
+#define SCH_CRED_MANUAL_CRED_VALIDATION              8
+#define SCH_CRED_NO_DEFAULT_CREDS                    16
+#define SCH_CRED_AUTO_CRED_VALIDATION                32
+#define SCH_CRED_USE_DEFAULT_CREDS                   64
+#define SCH_CRED_REVOCATION_CHECK_CHAIN_END_CERT     256
+#define SCH_CRED_REVOCATION_CHECK_CHAIN              512
+#define SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT 1024
+#define SCH_CRED_IGNORE_NO_REVOCATION_CHECK          2048
+#define SCH_CRED_IGNORE_REVOCATION_OFFLINE           4096
+
+#define SECPKG_ATTR_ISSUER_LIST         0x50
+#define SECPKG_ATTR_REMOTE_CRED         0x51
+#define SECPKG_ATTR_LOCAL_CRED          0x52
+#define SECPKG_ATTR_REMOTE_CERT_CONTEXT 0x53
+#define SECPKG_ATTR_LOCAL_CERT_CONTEXT  0x54
+#define SECPKG_ATTR_ROOT_STORE          0x55
+#define SECPKG_ATTR_SUPPORTED_ALGS      0x56
+#define SECPKG_ATTR_CIPHER_STRENGTHS    0x57
+#define SECPKG_ATTR_SUPPORTED_PROTOCOLS 0x58
+#define SECPKG_ATTR_ISSUER_LIST_EX      0x59
+#define SECPKG_ATTR_CONNECTION_INFO     0x5a
+#define SECPKG_ATTR_EAP_KEY_BLOCK       0x5b
+#define SECPKG_ATTR_MAPPED_CRED_ATTR    0x5c
+#define SECPKG_ATTR_SESSION_INFO        0x5d
+#define SECPKG_ATTR_APP_DATA            0x5e
+
+#define UNISP_RPC_ID 14
+
+struct _HMAPPER;
+
+typedef struct _SCHANNEL_CRED
+{
+    DWORD dwVersion;
+    DWORD cCreds;
+    PCCERT_CONTEXT *paCred;
+    HCERTSTORE hRootStore;
+    DWORD cMappers;
+    struct _HMAPPER **aphMappers;
+    DWORD cSupportedAlgs;
+    ALG_ID *palgSupportedAlgs;
+    DWORD grbitEnabledProtocols;
+    DWORD dwMinimumCipherStrength;
+    DWORD dwMaximumCipherStrength;
+    DWORD dwSessionLength;
+    DWORD dwFlags;
+    DWORD reserved;
+} SCHANNEL_CRED, *PSCHANNEL_CRED;
+
+typedef struct _SecPkgCred_SupportedAlgs
+{
+    DWORD cSupportedAlgs;
+    ALG_ID *palgSupportedAlgs;
+} SecPkgCred_SupportedAlgs, *PSecPkgCred_SupportedAlgs;
+
+typedef struct _SecPkgCred_CipherStrengths
+{
+    DWORD dwMinimumCipherStrength;
+    DWORD dwMaximumCipherStrength;
+} SecPkgCred_CipherStrengths, *PSecPkgCred_CipherStrengths;
+
+typedef struct _SecPkgCred_SupportedProtocols
+{
+    DWORD grbitProtocol;
+} SecPkgCred_SupportedProtocols, *PSecPkgCred_SupportedProtocols;
+
+typedef struct _SecPkgContext_IssuerListInfoEx
+{
+    PCERT_NAME_BLOB aIssuers;
+    DWORD cIssuers;
+} SecPkgContext_IssuerListInfoEx, *PSecPkgContext_IssuerListInfoEx;
+
+typedef struct _SecPkgContext_ConnectionInfo
+{
+    DWORD dwProtocol;
+    ALG_ID aiCipher;
+    DWORD dwCipherStrength;
+    ALG_ID aiHash;
+    DWORD dwHashStrength;
+    ALG_ID aiExch;
+    DWORD dwExchStrength;
+} SecPkgContext_ConnectionInfo, *PSecPkgContext_ConnectionInfo;
+
+#endif /* __WINE_SCHANNEL_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/schemadef.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/schemadef.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/schemadef.h	(revision 16410)
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2003 Kevin Koltzau
+ * Copyright (C) 2004 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_SCHEMADEF_H
+#define __WINE_SCHEMADEF_H
+
+#define BEGIN_TM_SCHEMA(name)
+#define END_TM_SCHEMA(name)
+
+#define BEGIN_TM_ENUM(name)                enum name {
+#define TM_ENUM(value, prefix, name)           prefix##_##name = (value),
+#define END_TM_ENUM()                      };
+
+#define BEGIN_TM_PROPS()                   enum PropValues { \
+                                               DummyProp = 49,
+#define TM_PROP(value, prefix, name, type)     prefix##_##name = (value),
+#define END_TM_PROPS()                     };
+
+#define BEGIN_TM_CLASS_PARTS(name)         enum name##PARTS { \
+                                               name##PartFiller0,
+#define TM_PART(value, prefix, name)           prefix##_##name = (value),
+#define END_TM_CLASS_PARTS()               };
+
+#define BEGIN_TM_PART_STATES(name)         enum name##STATES { \
+                                               name##StateFiller0,
+#define TM_STATE(value, prefix, name)          prefix##_##name = (value),
+#define END_TM_PART_STATES()               };
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/schnlsp.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/schnlsp.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/schnlsp.h	(revision 16410)
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2005 Juan Lang
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __WINE_SHNLSP_H__
+#define __WINE_SHNLSP_H__
+
+#include <schannel.h>
+
+#endif /* __WINE_SHNLSP_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/sddl.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/sddl.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/sddl.h	(revision 16410)
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2003 Ulrich Czekalla for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __SDDL_H__
+#define __SDDL_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Versioning */
+#define SDDL_REVISION_1 1
+#define SDDL_REVISION   SDDL_REVISION_1
+
+#ifndef __WINESRC__
+/* Component tags */
+#ifndef UNICODE
+# define SDDL_OWNER "O"
+# define SDDL_GROUP "G"
+# define SDDL_DACL  "D"
+# define SDDL_SACL  "S"
+#else
+# if defined(__GNUC__)
+#  define SDDL_OWNER (const WCHAR[]){ 'O',0 }
+#  define SDDL_GROUP (const WCHAR[]){ 'G',0 }
+#  define SDDL_DACL  (const WCHAR[]){ 'D',0 }
+#  define SDDL_SACL  (const WCHAR[]){ 'S',0 }
+# elif defined(_MSC_VER)
+#  define SDDL_OWNER L"O"
+#  define SDDL_GROUP L"G"
+#  define SDDL_DACL  L"D"
+#  define SDDL_SACL  L"S"
+# else
+   static const WCHAR SDDL_OWNER[] = { 'O',0 };
+   static const WCHAR SDDL_GROUP[] = { 'G',0 };
+   static const WCHAR SDDL_DACL[]  = { 'D',0 };
+   static const WCHAR SDDL_SACL[]  = { 'S',0 };
+# endif
+#endif /* UNICODE */
+
+/* Separators as characters */
+/* SDDL_SEPERATORC is not a typo, as per Microsoft's headers */
+#ifndef UNICODE
+# define SDDL_SEPERATORC   ';'
+# define SDDL_DELIMINATORC ':'
+# define SDDL_ACE_BEGINC   '('
+# define SDDL_ACE_ENDC     ')'
+#else
+# define SDDL_SEPERATORC   ((WCHAR)';')
+# define SDDL_DELIMINATORC ((WCHAR)':')
+# define SDDL_ACE_BEGINC   ((WCHAR)'(')
+# define SDDL_ACE_ENDC     ((WCHAR)')')
+#endif /* UNICODE */
+
+/* Separators as strings */
+/* SDDL_SEPERATOR is not a typo, as per Microsoft's headers */
+#ifndef UNICODE
+# define SDDL_SEPERATOR   ";"
+# define SDDL_DELIMINATOR ":"
+# define SDDL_ACE_BEGIN   "("
+# define SDDL_ACE_END     ")"
+#else
+# if defined(__GNUC__)
+#  define SDDL_SEPERATOR   (const WCHAR[]){ ';',0 }
+#  define SDDL_DELIMINATOR (const WCHAR[]){ ':',0 }
+#  define SDDL_ACE_BEGIN   (const WCHAR[]){ '(',0 }
+#  define SDDL_ACE_END     (const WCHAR[]){ ')',0 }
+# elif defined(_MSC_VER)
+#  define SDDL_SEPERATOR   L";"
+#  define SDDL_DELIMINATOR L":"
+#  define SDDL_ACE_BEGIN   L"("
+#  define SDDL_ACE_END     L")"
+# else
+   static const WCHAR SDDL_SEPERATOR[]   = { ';',0 };
+   static const WCHAR SDDL_DELIMINATOR[] = { ':',0 };
+   static const WCHAR SDDL_ACE_BEGIN[]   = { '(',0 };
+   static const WCHAR SDDL_ACE_END[]     = { ')',0 };
+# endif
+#endif /* UNICODE */
+#endif /* __WINESRC__ */
+
+BOOL WINAPI ConvertSidToStringSidA( PSID, LPSTR* );
+BOOL WINAPI ConvertSidToStringSidW( PSID, LPWSTR* );
+#define ConvertSidToStringSid WINELIB_NAME_AW(ConvertSidToStringSid)
+
+BOOL WINAPI ConvertStringSidToSidA( LPCSTR, PSID* );
+BOOL WINAPI ConvertStringSidToSidW( LPCWSTR, PSID* );
+#define ConvertStringSidToSid WINELIB_NAME_AW(ConvertStringSidToSid)
+
+BOOL WINAPI ConvertStringSecurityDescriptorToSecurityDescriptorA(
+    LPCSTR, DWORD, PSECURITY_DESCRIPTOR*, PULONG );
+BOOL WINAPI ConvertStringSecurityDescriptorToSecurityDescriptorW(
+    LPCWSTR, DWORD, PSECURITY_DESCRIPTOR*, PULONG );
+#define ConvertStringSecurityDescriptorToSecurityDescriptor WINELIB_NAME_AW(ConvertStringSecurityDescriptorToSecurityDescriptor)
+
+BOOL WINAPI ConvertSecurityDescriptorToStringSecurityDescriptorA(
+    PSECURITY_DESCRIPTOR, DWORD, SECURITY_INFORMATION, LPSTR*, PULONG );
+BOOL WINAPI ConvertSecurityDescriptorToStringSecurityDescriptorW(
+    PSECURITY_DESCRIPTOR, DWORD, SECURITY_INFORMATION, LPWSTR*, PULONG );
+#define ConvertSecurityDescriptorToStringSecurityDescriptor WINELIB_NAME_AW(ConvertSecurityDescriptorToStringSecurityDescriptor)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* __SDDL_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/secext.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/secext.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/secext.h	(revision 16410)
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2004 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __SECEXT_H__
+#define __SECEXT_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum
+{
+    NameUnknown = 0,
+    NameFullyQualifiedDN = 1,
+    NameSamCompatible = 2,
+    NameDisplay = 3,
+    NameUniqueId = 6,
+    NameCanonical = 7,
+    NameUserPrincipal = 8,
+    NameCanonicalEx = 9,
+    NameServicePrincipal = 10,
+    NameDnsDomain = 12
+} EXTENDED_NAME_FORMAT, *PEXTENDED_NAME_FORMAT;
+
+BOOLEAN WINAPI GetComputerObjectNameA( EXTENDED_NAME_FORMAT, LPSTR, PULONG );
+BOOLEAN WINAPI GetComputerObjectNameW( EXTENDED_NAME_FORMAT, LPWSTR, PULONG );
+#define        GetComputerObjectName WINELIB_NAME_AW(GetComputerObjectName)
+
+BOOLEAN WINAPI GetUserNameExA( EXTENDED_NAME_FORMAT, LPSTR, PULONG );
+BOOLEAN WINAPI GetUserNameExW( EXTENDED_NAME_FORMAT, LPWSTR, PULONG );
+#define        GetUserNameEx WINELIB_NAME_AW(GetUserNameEx)
+
+BOOLEAN WINAPI TranslateNameA( LPCSTR, EXTENDED_NAME_FORMAT, EXTENDED_NAME_FORMAT, LPSTR, PULONG);
+BOOLEAN WINAPI TranslateNameW( LPCWSTR, EXTENDED_NAME_FORMAT, EXTENDED_NAME_FORMAT, LPWSTR, PULONG);
+#define        TranslateName WINELIB_NAME_AW(TranslateName)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __SECEXT_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/security.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/security.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/security.h	(revision 16410)
@@ -0,0 +1,26 @@
+/*
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _SECURITY_H
+#define _SECURITY_H
+
+#include <sspi.h>
+
+#if defined(SECURITY_WIN32) || defined(SECURITY_KERNEL)
+#include <secext.h>
+#endif
+
+#endif /* _SECURITY_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/sensapi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/sensapi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/sensapi.h	(revision 16410)
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2005 Steven Edwards
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __SENSAPI_H__
+#define __SENSAPI_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define NETWORK_ALIVE_LAN 1
+#define NETWORK_ALIVE_WAN 2
+#define NETWORK_ALIVE_AOL 4
+
+typedef struct tagQOCINFO
+{
+    DWORD dwSize;
+    DWORD dwFlags;
+    DWORD dwInSpeed;
+    DWORD dwOutSpeed;
+} QOCINFO, *LPQOCINFO;
+
+BOOL WINAPI IsDestinationReachableA(LPCSTR lpszDestination, LPQOCINFO lpQOCInfo);
+BOOL WINAPI IsDestinationReachableW(LPCWSTR lpszDestination, LPQOCINFO lpQOCInfo);
+#define     IsDestinationReachable WINELIB_NAME_AW(IsDestinationReachable)
+BOOL WINAPI IsNetworkAlive(LPDWORD lpdwFlags);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __SENSAPI_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/sensevts.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/sensevts.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/sensevts.idl	(revision 16410)
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2005 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "oaidl.idl";
+
+typedef struct SENS_QOCINFO
+{
+    DWORD dwSize;
+    DWORD dwFlags;
+    DWORD dwOutSpeed;
+    DWORD dwInSpeed;
+} SENS_QOCINFO, *LPSENS_QOCINFO;
+
+[
+  object,
+  uuid(d597bab1-5b9f-11d1-8dd2-00aa004abd5e),
+  pointer_default(unique)
+]
+interface ISensNetwork : IDispatch
+{
+    HRESULT ConnectionMade(
+        [in] BSTR bstrConnection,
+        [in] ULONG ulType,
+        [in] LPSENS_QOCINFO lpQOCInfo );
+    HRESULT ConnectionMadeNoQOCInfo(
+        [in] BSTR bstrConnection,
+        [in] ULONG ulType );
+    HRESULT ConnectionLost(
+        [in] BSTR bstrConnection,
+        [in] ULONG ulType );
+    HRESULT DestinationReachable(
+        [in] BSTR bstrDestination,
+        [in] BSTR bstrConnection,
+        [in] ULONG ulType,
+        [in] LPSENS_QOCINFO lpQOCInfo );
+    HRESULT DestinationReachableNoQOCInfo(
+        [in] BSTR bstrDestination,
+        [in] BSTR bstrConnection,
+        [in] ULONG ulType );
+}
+
+[
+  object,
+  uuid(d597bab2-5b9f-11d1-8dd2-00aa004abd5e),
+  pointer_default(unique)
+]
+interface ISensOnNow : IDispatch
+{
+    HRESULT OnAcPower( void );
+    HRESULT OnBatteryPower(
+        [in] DWORD dwBatteryLifePercent );
+    HRESULT BatteryLow(
+        [in] DWORD dwBatteryLifePercent );
+}
+
+[
+  object,
+  uuid(d597bab3-5b9f-11d1-8dd2-00aa004abd5e),
+  pointer_default(unique)
+]
+interface ISensLogon : IDispatch
+{
+    HRESULT Logon(
+        [in] BSTR bstrUserName );
+    HRESULT Logoff(
+        [in] BSTR bstrUserName );
+    HRESULT StartShell(
+        [in] BSTR bstrUserName );
+    HRESULT DisplayLock(
+        [in] BSTR bstrUserName );
+    HRESULT DisplayUnlock(
+        [in] BSTR bstrUserName );
+    HRESULT StartScreenSaver(
+        [in] BSTR bstrUserName );
+    HRESULT StopScreenSaver(
+        [in] BSTR bstrUserName );
+}
+
+[
+  object,
+  uuid(d597bab4-5b9f-11d1-8dd2-00aa004abd5e),
+  pointer_default(unique)
+]
+interface ISensLogon2 : IDispatch
+{
+    HRESULT Logon(
+        [in] BSTR bstrUserName,
+        [in] DWORD dwSessionId );
+    HRESULT Logoff(
+        [in] BSTR bstrUserName,
+        [in] DWORD dwSessionId );
+    HRESULT SessionDisconnect(
+        [in] BSTR bstrUserName,
+        [in] DWORD dwSessionId );
+    HRESULT SessionReconnect(
+        [in] BSTR bstrUserName,
+        [in] DWORD dwSessionId );
+    HRESULT PostShell(
+        [in] BSTR bstrUserName,
+        [in] DWORD dwSessionId );
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/servprov.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/servprov.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/servprov.h	(revision 16410)
@@ -0,0 +1,106 @@
+/*** Autogenerated by WIDL 1.1.10 from ../../../dlls/wined3d/../../include/servprov.idl - Do not edit ***/
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef __WIDL_SERVPROV_H
+#define __WIDL_SERVPROV_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <objidl.h>
+#ifndef __IServiceProvider_FWD_DEFINED__
+#define __IServiceProvider_FWD_DEFINED__
+typedef interface IServiceProvider IServiceProvider;
+#endif
+
+typedef IServiceProvider *LPSERVICEPROVIDER;
+/*****************************************************************************
+ * IServiceProvider interface
+ */
+#ifndef __IServiceProvider_INTERFACE_DEFINED__
+#define __IServiceProvider_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IServiceProvider, 0x6d5140c1, 0x7436, 0x11ce, 0x80,0x34, 0x00,0xaa,0x00,0x60,0x09,0xfa);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IServiceProvider : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE QueryService(
+        REFGUID guidService,
+        REFIID riid,
+        void **ppvObject) = 0;
+
+};
+#else
+typedef struct IServiceProviderVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IServiceProvider* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IServiceProvider* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IServiceProvider* This);
+
+    /*** IServiceProvider methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryService)(
+        IServiceProvider* This,
+        REFGUID guidService,
+        REFIID riid,
+        void **ppvObject);
+
+    END_INTERFACE
+} IServiceProviderVtbl;
+interface IServiceProvider {
+    CONST_VTBL IServiceProviderVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IServiceProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IServiceProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IServiceProvider_Release(This) (This)->lpVtbl->Release(This)
+/*** IServiceProvider methods ***/
+#define IServiceProvider_QueryService(This,guidService,riid,ppvObject) (This)->lpVtbl->QueryService(This,guidService,riid,ppvObject)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IServiceProvider_RemoteQueryService_Proxy(
+    IServiceProvider* This,
+    REFGUID guidService,
+    REFIID riid,
+    IUnknown **ppvObject);
+void __RPC_STUB IServiceProvider_RemoteQueryService_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IServiceProvider_QueryService_Proxy(
+    IServiceProvider* This,
+    REFGUID guidService,
+    REFIID riid,
+    void **ppvObject);
+HRESULT __RPC_STUB IServiceProvider_QueryService_Stub(
+    IServiceProvider* This,
+    REFGUID guidService,
+    REFIID riid,
+    IUnknown **ppvObject);
+
+#endif  /* __IServiceProvider_INTERFACE_DEFINED__ */
+
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WIDL_SERVPROV_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/servprov.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/servprov.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/servprov.idl	(revision 16410)
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 1999 Francois Gouget
+ * Copyright (C) 2003 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "objidl.idl";
+
+
+/*****************************************************************************
+ * IServiceProvider interface
+ */
+[
+    object,
+    uuid(6d5140c1-7436-11ce-8034-00aa006009fa),
+    pointer_default(unique)
+]
+interface IServiceProvider : IUnknown
+{
+    typedef [unique] IServiceProvider *LPSERVICEPROVIDER;
+
+    [local]
+    HRESULT QueryService(
+        [in] REFGUID guidService,
+        [in] REFIID riid,
+        [out] void ** ppvObject);
+
+    [call_as(QueryService)]
+    HRESULT RemoteQueryService(
+        [in] REFGUID guidService,
+        [in] REFIID riid,
+        [out, iid_is(riid)] IUnknown ** ppvObject);
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/setupapi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/setupapi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/setupapi.h	(revision 16410)
@@ -0,0 +1,1854 @@
+/*
+ * Copyright (C) 2000 James Hatheway
+ * Copyright (C) 2007 Juan Lang
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _INC_SETUPAPI
+#define _INC_SETUPAPI
+
+#include <commctrl.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* setupapi doesn't use the normal convention, it adds an underscore before A/W */
+#ifdef WINE_NO_UNICODE_MACROS
+# define DECL_WINELIB_SETUPAPI_TYPE_AW(type)  /* nothing */
+#else
+# define DECL_WINELIB_SETUPAPI_TYPE_AW(type)  typedef WINELIB_NAME_AW(type##_) type;
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Define type for handle to a loaded inf file */
+typedef PVOID HINF;
+
+/* Define type for handle to a device information set */
+typedef PVOID HDEVINFO;
+
+/* Define type for handle to a setup log file */
+typedef PVOID HSPFILELOG;
+
+/* Define type for setup file queue */
+typedef PVOID HSPFILEQ;
+
+typedef PVOID HDSKSPC;
+
+/* inf structure. */
+typedef struct _INFCONTEXT
+{
+   PVOID Inf;
+   PVOID CurrentInf;
+   UINT  Section;
+   UINT  Line;
+} INFCONTEXT, *PINFCONTEXT;
+
+typedef struct _SP_ALTPLATFORM_INFO_V2
+{
+    DWORD cbSize;
+    DWORD Platform;
+    DWORD MajorVersion;
+    DWORD MinorVersion;
+    WORD  ProcessorArchitecture;
+    union
+    {
+        WORD  Reserved;
+        WORD  Flags;
+    } DUMMYUNIONNAME;
+    DWORD FirstValidatedMajorVersion;
+    DWORD FirstValidatedMinorVersion;
+} SP_ALTPLATFORM_INFO_V2, *PSP_ALTPLATFORM_INFO_V2;
+
+#define SP_ALTPLATFORM_FLAGS_VERSION_RANGE 0x0001
+
+typedef struct _SP_ALTPLATFORM_INFO_V1
+{
+    DWORD cbSize;
+    DWORD Platform;
+    DWORD MajorVersion;
+    DWORD MinorVersion;
+    WORD  ProcessorArchitecture;
+    WORD  Reserved;
+} SP_ALTPLATFORM_INFO_V1, *PSP_ALTPLATFORM_INFO_V1;
+
+typedef SP_ALTPLATFORM_INFO_V2 SP_ALTPLATFORM_INFO;
+typedef PSP_ALTPLATFORM_INFO_V2 PSP_ALTPLATFORM_INFO;
+
+typedef struct _SP_FILE_COPY_PARAMS_A
+{
+    DWORD    cbSize;
+    HSPFILEQ QueueHandle;
+    PCSTR    SourceRootPath;
+    PCSTR    SourcePath;
+    PCSTR    SourceFilename;
+    PCSTR    SourceDescription;
+    PCSTR    SourceTagfile;
+    PCSTR    TargetDirectory;
+    PCSTR    TargetFilename;
+    DWORD    CopyStyle;
+    HINF     LayoutInf;
+    PCSTR    SecurityDescriptor;
+} SP_FILE_COPY_PARAMS_A, *PSP_FILE_COPY_PARAMS_A;
+
+typedef struct _SP_FILE_COPY_PARAMS_W
+{
+    DWORD    cbSize;
+    HSPFILEQ QueueHandle;
+    PCWSTR   SourceRootPath;
+    PCWSTR   SourcePath;
+    PCWSTR   SourceFilename;
+    PCWSTR   SourceDescription;
+    PCWSTR   SourceTagfile;
+    PCWSTR   TargetDirectory;
+    PCWSTR   TargetFilename;
+    DWORD    CopyStyle;
+    HINF     LayoutInf;
+    PCWSTR   SecurityDescriptor;
+} SP_FILE_COPY_PARAMS_W, *PSP_FILE_COPY_PARAMS_W;
+
+DECL_WINELIB_SETUPAPI_TYPE_AW(SP_FILE_COPY_PARAMS)
+DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_FILE_COPY_PARAMS)
+
+typedef struct _SP_REGISTER_CONTROL_STATUSA
+{
+    DWORD    cbSize;
+    PCSTR    FileName;
+    DWORD    Win32Error;
+    DWORD    FailureCode;
+} SP_REGISTER_CONTROL_STATUSA, *PSP_REGISTER_CONTROL_STATUSA;
+
+typedef struct _SP_REGISTER_CONTROL_STATUSW
+{
+    DWORD    cbSize;
+    PCWSTR   FileName;
+    DWORD    Win32Error;
+    DWORD    FailureCode;
+} SP_REGISTER_CONTROL_STATUSW, *PSP_REGISTER_CONTROL_STATUSW;
+
+DECL_WINELIB_TYPE_AW(SP_REGISTER_CONTROL_STATUS)
+DECL_WINELIB_TYPE_AW(PSP_REGISTER_CONTROL_STATUS)
+
+#define SPREG_SUCCESS       0x00000000
+#define SPREG_LOADLIBRARY   0x00000001
+#define SPREG_GETPROCADDR   0x00000002
+#define SPREG_REGSVR        0x00000003
+#define SPREG_DLLINSTALL    0x00000004
+#define SPREG_TIMEOUT       0x00000005
+#define SPREG_UNKNOWN       0xffffffff
+
+typedef UINT (CALLBACK *PSP_FILE_CALLBACK_A)( PVOID Context, UINT Notification,
+                                              UINT_PTR Param1, UINT_PTR Param2 );
+typedef UINT (CALLBACK *PSP_FILE_CALLBACK_W)( PVOID Context, UINT Notification,
+                                              UINT_PTR Param1, UINT_PTR Param2 );
+DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_FILE_CALLBACK)
+
+#define LINE_LEN                    256
+#define MAX_INF_STRING_LENGTH       4096
+#define MAX_TITLE_LEN               60
+#define MAX_INSTRUCTION_LEN         256
+#define MAX_LABEL_LEN               30
+#define MAX_SERVICE_NAME_LEN        256
+#define MAX_SUBTITLE_LEN            256
+#define SP_MAX_MACHINENAME_LENGTH   (MAX_PATH + 3)
+
+typedef UINT DI_FUNCTION;
+
+typedef struct _SP_CLASSINSTALL_HEADER
+{
+  DWORD       cbSize;
+  DI_FUNCTION InstallFunction;
+} SP_CLASSINSTALL_HEADER, *PSP_CLASSINSTALL_HEADER;
+
+typedef struct _SP_ENABLECLASS_PARAMS
+{
+    SP_CLASSINSTALL_HEADER ClassInstallHeader;
+    GUID                   ClassGuid;
+    DWORD                  EnableMessage;
+} SP_ENABLECLASS_PARAMS, *PSP_ENABLECLASS_PARAMS;
+
+/* SP_ENABLECLASS_PARAMS EnableMessage values */
+#define ENABLECLASS_QUERY   0
+#define ENABLECLASS_SUCCESS 1
+#define ENABLECLASS_FAILURE 2
+
+typedef struct _SP_PROPCHANGE_PARAMS
+{
+  SP_CLASSINSTALL_HEADER  ClassInstallHeader;
+  DWORD  StateChange;
+  DWORD  Scope;
+  DWORD  HwProfile;
+} SP_PROPCHANGE_PARAMS, *PSP_PROPCHANGE_PARAMS;
+
+/* SP_PROPCHANGE_PARAMS StateChange values */
+#define DICS_ENABLE      0x00000001
+#define DICS_DISABLE     0x00000002
+#define DICS_PROPCHANGE  0x00000003
+#define DICS_START       0x00000004
+#define DICS_STOP        0x00000005
+/* SP_PROPCHANGE_PARAMS Scope values */
+#define DICS_FLAG_GLOBAL         0x00000001
+#define DICS_FLAG_CONFIGSPECIFIC 0x00000002
+#define DICS_FLAG_CONFIGGENERAL  0x00000004
+
+
+typedef struct _SP_DEVINSTALL_PARAMS_A
+{
+    DWORD               cbSize;
+    DWORD               Flags;
+    DWORD               FlagsEx;
+    HWND                hwndParent;
+    PSP_FILE_CALLBACK_A InstallMsgHandler;
+    PVOID               InstallMsgHandlerContext;
+    HSPFILEQ            FileQueue;
+    ULONG_PTR           ClassInstallReserved;
+    DWORD               Reserved;
+    CHAR                DriverPath[MAX_PATH];
+} SP_DEVINSTALL_PARAMS_A, *PSP_DEVINSTALL_PARAMS_A;
+
+typedef struct _SP_DEVINSTALL_PARAMS_W
+{
+    DWORD               cbSize;
+    DWORD               Flags;
+    DWORD               FlagsEx;
+    HWND                hwndParent;
+    PSP_FILE_CALLBACK_W InstallMsgHandler;
+    PVOID               InstallMsgHandlerContext;
+    HSPFILEQ            FileQueue;
+    ULONG_PTR           ClassInstallReserved;
+    DWORD               Reserved;
+    WCHAR               DriverPath[MAX_PATH];
+} SP_DEVINSTALL_PARAMS_W, *PSP_DEVINSTALL_PARAMS_W;
+
+DECL_WINELIB_SETUPAPI_TYPE_AW(SP_DEVINSTALL_PARAMS)
+DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_DEVINSTALL_PARAMS)
+
+/* SP_DEVINSTALL_PARAMS Flags values */
+#define DI_SHOWOEM             0x00000001
+#define DI_SHOWCOMPAT          0x00000002
+#define DI_SHOWCLASS           0x00000004
+#define DI_SHOWALL             0x00000007
+#define DI_NOVCP               0x00000008
+#define DI_DIDCOMPAT           0x00000010
+#define DI_DIDCLASS            0x00000020
+#define DI_AUTOASSIGNRES       0x00000040
+#define DI_NEEDRESTART         0x00000080
+#define DI_NEEDREBOOT          0x00000100
+#define DI_NOBROWSE            0x00000200
+#define DI_MULTMFGS            0x00000400
+#define DI_DISABLED            0x00000800
+#define DI_GENERALPAGE_ADDED   0x00001000
+#define DI_RESOURCEPAGE_ADDED  0x00002000
+#define DI_PROPERTIES_CHANGE   0x00004000
+#define DI_INF_IS_SORTED       0x00080000
+#define DI_ENUMSINGLEINF       0x00010000
+#define DI_DONOTCALLCONFIGMG   0x00020000
+#define DI_INSTALLDISABLED     0x00040000
+#define DI_COMPAT_FROM_CLASS   0x00080000
+#define DI_CLASSINSTALLPARAMS  0x00100000
+#define DI_NODI_DEFAULTACTION  0x00200000
+#define DI_QUIETINSTALL        0x00800000
+#define DI_NOFILECOPY          0x01000000
+#define DI_FORCECOPY           0x02000000
+#define DI_DRIVERPAGE_ADDED    0x04000000
+#define DI_USECI_SELECTSTRINGS 0x08000000
+#define DI_OVERRIDE_INFFLAGS   0x10000000
+#define DI_PROPS_NOCHANGEUSAGE 0x20000000
+#define DI_NOSELECTICONS       0x40000000
+#define DI_NOWRITE_IDS         0x80000000
+/* SP_DEVINSTALL_PARAMS FlagsEx values */
+#define DI_FLAGSEX_USEOLDINFSEARCH          0x00000001
+#define DI_FLAGSEX_RESERVED2                0x00000002
+#define DI_FLAGSEX_CI_FAILED                0x00000004
+#define DI_FLAGSEX_FINISHINSTALL_ACTION     0x00000008
+#define DI_FLAGSEX_DIDINFOLIST              0x00000010
+#define DI_FLAGSEX_DIDCOMPATINFO            0x00000020
+#define DI_FLAGSEX_FILTERCLASSES            0x00000040
+#define DI_FLAGSEX_SETFAILEDINSTALL         0x00000080
+#define DI_FLAGSEX_DEVICECHANGE             0x00000100
+#define DI_FLAGSEX_ALWAYSWRITEIDS           0x00000200
+#define DI_FLAGSEX_PROPCHANGE_PENDING       0x00000400
+#define DI_FLAGSEX_ALLOWEXCLUDEDDRVS        0x00000800
+#define DI_FLAGSEX_NOUIONQUERYREMOVE        0x00001000
+#define DI_FLAGSEX_USECLASSFORCOMPAT        0x00002000
+#define DI_FLAGSEX_RESERVED3                0x00004000
+#define DI_FLAGSEX_NO_DRVREG_MODIFY         0x00008000
+#define DI_FLAGSEX_IN_SYSTEM_SETUP          0x00010000
+#define DI_FLAGSEX_INET_DRIVER              0x00020000
+#define DI_FLAGSEX_APPENDDRIVERLIST         0x00040000
+#define DI_FLAGSEX_PREINSTALLBACKUP         0x00080000
+#define DI_FLAGSEX_BACKUPONREPLACE          0x00100000
+#define DI_FLAGSEX_DRIVERLIST_FROM_URL      0x00200000
+#define DI_FLAGSEX_RESERVED1                0x00400000
+#define DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS 0x00800000
+#define DI_FLAGSEX_POWERPAGE_ADDED          0x01000000
+#define DI_FLAGSEX_FILTERSIMILARDRIVERS     0x02000000
+#define DI_FLAGSEX_INSTALLEDDRIVER          0x04000000
+#define DI_FLAGSEX_NO_CLASSLIST_NODE_MERGE  0x08000000
+#define DI_FLAGSEX_ALTPLATFORM_DRVSEARCH    0x10000000
+#define DI_FLAGSEX_RESTART_DEVICE_ONLY      0x20000000
+#define DI_FLAGSEX_RECURSIVESEARCH          0x40000000
+#define DI_FLAGSEX_SEARCH_PUBLISHED_INFS    0x80000000
+
+typedef struct _SP_REMOVEDEVICE_PARAMS
+{
+    SP_CLASSINSTALL_HEADER ClassInstallHeader;
+    DWORD                  Scope;
+    DWORD                  HwProfile;
+} SP_REMOVEDEVICE_PARAMS, *PSP_REMOVEDEVICE_PARAMS;
+
+/* SP_REMOVEDEVICE_PARAMS Scope values */
+#define DI_REMOVEDEVICE_GLOBAL         0x00000001
+#define DI_REMOVEDEVICE_CONFIGSPECIFIC 0x00000002
+
+typedef struct _SP_UNREMOVEDEVICE_PARAMS
+{
+    SP_CLASSINSTALL_HEADER ClassInstallHeader;
+    DWORD                  Scope;
+    DWORD                  HwProfile;
+} SP_UNREMOVEDEVICE_PARAMS, *PSP_UNREMOVEDEVICE_PARAMS;
+
+/* SP_UNREMOVEDEVICE_PARAMS Scope values */
+#define DI_UNREMOVEDEVICE_CONFIGSPECIFIC 0x00000002
+
+typedef struct _SP_SELECTDEVICE_PARAMS_A
+{
+    SP_CLASSINSTALL_HEADER ClassInstallHeader;
+    CHAR                   Title[MAX_TITLE_LEN];
+    CHAR                   Instructions[MAX_INSTRUCTION_LEN];
+    CHAR                   ListLabel[MAX_LABEL_LEN];
+    CHAR                   SubTitle[MAX_SUBTITLE_LEN];
+    BYTE                   Reserved[2];
+} SP_SELECTDEVICE_PARAMS_A, *PSP_SELECTDEVICE_PARAMS_A;
+
+typedef struct _SP_SELECTDEVICE_PARAMS_W
+{
+    SP_CLASSINSTALL_HEADER ClassInstallHeader;
+    WCHAR                  Title[MAX_TITLE_LEN];
+    WCHAR                  Instructions[MAX_INSTRUCTION_LEN];
+    WCHAR                  ListLabel[MAX_LABEL_LEN];
+    WCHAR                  SubTitle[MAX_SUBTITLE_LEN];
+} SP_SELECTDEVICE_PARAMS_W, *PSP_SELECTDEVICE_PARAMS_W;
+
+typedef BOOL (CALLBACK *PDETECT_PROGRESS_NOTIFY)(PVOID ProgressNotifyParam,
+        DWORD DetectComplete);
+
+typedef struct _SP_DETECTDEVICE_PARAMS
+{
+    SP_CLASSINSTALL_HEADER  ClassInstallHeader;
+    PDETECT_PROGRESS_NOTIFY DetectProgressNotify;
+    PVOID                   ProgressNotifyParam;
+} SP_DETECTDEVICE_PARAMS, *PSP_DETECTDEVICE_PARAMS;
+
+#define MAX_INSTALLWIZARD_DYNAPAGES 20
+
+typedef struct _SP_INSTALLWIZARD_DATA
+{
+    SP_CLASSINSTALL_HEADER ClassInstallHeader;
+    DWORD                  Flags;
+    HPROPSHEETPAGE         DynamicPages[MAX_INSTALLWIZARD_DYNAPAGES];
+    DWORD                  NumDynamicPages;
+    DWORD                  DynamicPageFlags;
+    DWORD                  PrivateFlags;
+    LPARAM                 PrivateData;
+    HWND                   hwndWizardDlg;
+} SP_INSTALLWIZARD_DATA, *PSP_INSTALLWIZARD_DATA;
+
+/* SP_INSTALLWIZARD_DATA Flags values */
+#define NDW_INSTALLFLAG_DIDFACTDEFS        0x00000001
+#define NDW_INSTALLFLAG_HARDWAREALLREADYIN 0x00000002
+#define NDW_INSTALLFLAG_NEEDRESTART        DI_NEEDRESTART
+#define NDW_INSTALLFLAG_NEEDREBOOT         DI_NEEDREBOOT
+#define NDW_INSTALLFLAG_NEEDSHUTDOWN       0x00000200
+#define NDW_INSTALLFLAG_EXPRESSINTRO       0x00000400
+#define NDW_INSTALLFLAG_SKIPISDEVINSTALLED 0x00000800
+#define NDW_INSTALLFLAG_NODETECTEDDEVS     0x00001000
+#define NDW_INSTALLFLAG_INSTALLSPECIFIC    0x00002000
+#define NDW_INSTALLFLAG_SKIPCLASSLIST      0x00004000
+#define NDW_INSTALLFLAG_CI_PICKED_OEM      0x00008000
+#define NDW_INSTALLFLAG_PCMCIAMODE         0x00010000
+#define NDW_INSTALLFLAG_PCMCIADEVICE       0x00020000
+#define NDW_INSTALLFLAG_USERCANCEL         0x00040000
+#define NDW_INSTALLFLAG_KNOWNCLASS         0x00080000
+/* SP_INSTALLWIZARD_DATA DynamicPageFlags values */
+#define DYNAWIZ_FLAG_PAGESADDED             0x00000001
+#define DYNAWIZ_FLAG_INSTALLDET_NEXT        0x00000002
+#define DYNAWIZ_FLAG_INSTALLDET_PREV        0x00000004
+#define DYNAWIZ_FLAG_ANALYZE_HANDLECONFLICT 0x00000008
+
+/* Resource IDs */
+#define MIN_IDD_DYNAWIZ_RESOURCE_ID 10000
+#define MAX_IDD_DYNAWIZ_RESOURCE_ID 11000
+
+#define IDD_DYNAWIZ_FIRSTPAGE                10000
+#define IDD_DYNAWIZ_SELECT_PREVPAGE          10001
+#define IDD_DYNAWIZ_SELECT_NEXTPAGE          10002
+#define IDD_DYNAWIZ_ANALYZE_PREVPAGE         10003
+#define IDD_DYNAWIZ_ANALYZE_NEXTPAGE         10004
+#define IDD_DYNAWIZ_INSTALLDETECTED_PREVPAGE 10006
+#define IDD_DYNAWIZ_INSTALLDETECTED_NEXTPAGE 10007
+#define IDD_DYNAWIZ_INSTALLDETECTED_NODEVS   10008
+#define IDD_DYNAWIZ_SELECTDEV_PAGE           10009
+#define IDD_DYNAWIZ_ANALYZEDEV_PAGE          10010
+#define IDD_DYNAWIZ_INSTALLDETECTEDDEVS_PAGE 10011
+#define IDD_DYNAWIZ_SELECTCLASS_PAGE         10012
+
+#define IDI_RESOURCEFIRST        159
+#define IDI_RESOURCE             IDI_RESOURCEFIRST
+#define IDI_RESOURCELAST         161
+#define IDI_RESOURCEOVERLAYFIRST 161
+#define IDI_RESOURCEOVERLAYLAST  161
+
+#define IDI_CLASSICON_OVERLAYFIRST 500
+#define IDI_CLASSICON_OVERLAYLAST  502
+#define IDI_PROBLEM_OVL            500
+#define IDI_DISABLED_OVL           501
+#define IDI_FORCED_OVL             502
+
+typedef struct _SP_NEWDEVICEWIZARD_DATA
+{
+    SP_CLASSINSTALL_HEADER ClassInstallHeader;
+    DWORD                  Flags;
+    HPROPSHEETPAGE         DynamicPages[MAX_INSTALLWIZARD_DYNAPAGES];
+    DWORD                  NumDynamicPages;
+    HWND                   hwndWizardDlg;
+} SP_NEWDEVICEWIZARD_DATA, *PSP_NEWDEVICEWIZARD_DATA;
+
+typedef SP_NEWDEVICEWIZARD_DATA  SP_ADDPROPERTYPAGE_DATA;
+typedef PSP_NEWDEVICEWIZARD_DATA PSP_ADDPROPERTYPAGE_DATA;
+
+typedef struct _SP_TROUBLESHOOTER_PARAMS_A
+{
+    SP_CLASSINSTALL_HEADER ClassInstallHeader;
+    CHAR                   ChmFile[MAX_PATH];
+    CHAR                   HtmlTroubleShooter[MAX_PATH];
+} SP_TROUBLESHOOTER_PARAMS_A, *PSP_TROUBLESHOOTER_PARAMS_A;
+
+typedef struct _SP_TROUBLESHOOTER_PARAMS_W
+{
+    SP_CLASSINSTALL_HEADER ClassInstallHeader;
+    WCHAR                  ChmFile[MAX_PATH];
+    WCHAR                  HtmlTroubleShooter[MAX_PATH];
+} SP_TROUBLESHOOTER_PARAMS_W, *PSP_TROUBLESHOOTER_PARAMS_W;
+
+DECL_WINELIB_SETUPAPI_TYPE_AW(SP_TROUBLESHOOTER_PARAMS)
+DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_TROUBLESHOOTER_PARAMS)
+
+typedef struct _SP_POWERMESSAGEWAKE_PARAMS_A
+{
+    SP_CLASSINSTALL_HEADER ClassInstallHeader;
+    CHAR                   PowerMessageWake[LINE_LEN * 2];
+} SP_POWERMESSAGEWAKE_PARAMS_A, *PSP_POWERMESSAGEWAKE_PARAMS_A;
+
+typedef struct _SP_POWERMESSAGEWAKE_PARAMS_W
+{
+    SP_CLASSINSTALL_HEADER ClassInstallHeader;
+    WCHAR                  PowerMessageWake[LINE_LEN * 2];
+} SP_POWERMESSAGEWAKE_PARAMS_W, *PSP_POWERMESSAGEWAKE_PARAMS_W;
+
+DECL_WINELIB_SETUPAPI_TYPE_AW(SP_POWERMESSAGEWAKE_PARAMS)
+DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_POWERMESSAGEWAKE_PARAMS)
+
+typedef struct _SP_DRVINFO_DATA_V1_A
+{
+    DWORD     cbSize;
+    DWORD     DriverType;
+    ULONG_PTR Reserved;
+    CHAR      Description[LINE_LEN];
+    CHAR      MfgName[LINE_LEN];
+    CHAR      ProviderName[LINE_LEN];
+} SP_DRVINFO_DATA_V1_A, *PSP_DRVINFO_DATA_V1_A;
+
+typedef struct _SP_DRVINFO_DATA_V1_W
+{
+    DWORD     cbSize;
+    DWORD     DriverType;
+    ULONG_PTR Reserved;
+    WCHAR     Description[LINE_LEN];
+    WCHAR     MfgName[LINE_LEN];
+    WCHAR     ProviderName[LINE_LEN];
+} SP_DRVINFO_DATA_V1_W, *PSP_DRVINFO_DATA_V1_W;
+
+DECL_WINELIB_SETUPAPI_TYPE_AW(SP_DRVINFO_DATA_V1)
+DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_DRVINFO_DATA_V1)
+
+typedef struct _SP_DRVINFO_DATA_V2_A
+{
+    DWORD     cbSize;
+    DWORD     DriverType;
+    ULONG_PTR Reserved;
+    CHAR      Description[LINE_LEN];
+    CHAR      MfgName[LINE_LEN];
+    CHAR      ProviderName[LINE_LEN];
+    FILETIME  DriverDate;
+    DWORDLONG DriverVersion;
+} SP_DRVINFO_DATA_V2_A, *PSP_DRVINFO_DATA_V2_A;
+
+typedef struct _SP_DRVINFO_DATA_V2_W
+{
+    DWORD     cbSize;
+    DWORD     DriverType;
+    ULONG_PTR Reserved;
+    WCHAR     Description[LINE_LEN];
+    WCHAR     MfgName[LINE_LEN];
+    WCHAR     ProviderName[LINE_LEN];
+    FILETIME  DriverDate;
+    DWORDLONG DriverVersion;
+} SP_DRVINFO_DATA_V2_W, *PSP_DRVINFO_DATA_V2_W;
+
+DECL_WINELIB_SETUPAPI_TYPE_AW(SP_DRVINFO_DATA_V2)
+DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_DRVINFO_DATA_V2)
+
+typedef SP_DRVINFO_DATA_V2_A SP_DRVINFO_DATA_A;
+typedef PSP_DRVINFO_DATA_V2_A PSP_DRVINFO_DATA_A;
+typedef SP_DRVINFO_DATA_V2_W SP_DRVINFO_DATA_W;
+typedef PSP_DRVINFO_DATA_V2_W PSP_DRVINFO_DATA_W;
+
+DECL_WINELIB_SETUPAPI_TYPE_AW(SP_DRVINFO_DATA)
+DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_DRVINFO_DATA)
+
+typedef struct _SP_DRVINFO_DETAIL_DATA_A
+{
+    DWORD     cbSize;
+    FILETIME  InfDate;
+    DWORD     CompatIDsOffset;
+    DWORD     CompatIDsLength;
+    ULONG_PTR Reserved;
+    CHAR      SectionName[LINE_LEN];
+    CHAR      InfFileName[MAX_PATH];
+    CHAR      DrvDescription[LINE_LEN];
+    CHAR      HardwareID[ANYSIZE_ARRAY];
+} SP_DRVINFO_DETAIL_DATA_A, *PSP_DRVINFO_DETAIL_DATA_A;
+
+typedef struct _SP_DRVINFO_DETAIL_DATA_W
+{
+    DWORD     cbSize;
+    FILETIME  InfDate;
+    DWORD     CompatIDsOffset;
+    DWORD     CompatIDsLength;
+    ULONG_PTR Reserved;
+    WCHAR     SectionName[LINE_LEN];
+    WCHAR     InfFileName[MAX_PATH];
+    WCHAR     DrvDescription[LINE_LEN];
+    WCHAR     HardwareID[ANYSIZE_ARRAY];
+} SP_DRVINFO_DETAIL_DATA_W, *PSP_DRVINFO_DETAIL_DATA_W;
+
+DECL_WINELIB_SETUPAPI_TYPE_AW(SP_DRVINFO_DETAIL_DATA)
+DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_DRVINFO_DETAIL_DATA)
+
+typedef struct _SP_DRVINSTALL_PARAMS
+{
+    DWORD     cbSize;
+    DWORD     Rank;
+    DWORD     Flags;
+    DWORD_PTR PrivateData;
+    DWORD     Reserved;
+} SP_DRVINSTALL_PARAMS, *PSP_DRVINSTALL_PARAMS;
+
+/* SP_DRVINSTALL_PARAMS Flags values */
+#define DNF_DUPDESC               0x00000001
+#define DNF_OLDDRIVER             0x00000002
+#define DNF_EXCLUDEFROMLIST       0x00000004
+#define DNF_NODRIVER              0x00000008
+#define DNF_LEGACYINF             0x00000010
+#define DNF_CLASS_DRIVER          0x00000020
+#define DNF_COMPATIBLE_DRIVER     0x00000040
+#define DNF_INET_DRIVER           0x00000080
+#define DNF_UNUSED1               0x00000100
+#define DNF_INDEXED_DRIVER        0x00000200
+#define DNF_OLD_INET_DRIVER       0x00000400
+#define DNF_BAD_DRIVER            0x00000800
+#define DNF_DUPPROVIDER           0x00001000
+#define DNF_INF_IS_SIGNED         0x00002000
+#define DNF_OEM_F6_INF            0x00004000
+#define DNF_DUPDRIVERVER          0x00008000
+#define DNF_BASIC_DRIVER          0x00010000
+#define DNF_AUTHENTICODE_SIGNED   0x00020000
+#define DNF_INSTALLEDDRIVER       0x00040000
+#define DNF_ALWAYSEXCLUDEFROMLIST 0x00080000
+/* SP_DRVINSTALL_PARAMS Rank values */
+#define DRIVER_HARDWAREID_RANK             0x00000fff
+#define DRIVER_COMPATID_RANK               0x00003fff
+#define DRIVER_UNTRUSTED_RANK              0x00008000
+#define DRIVER_UNTRUSTED_HARDWAREID_RANK   0x00008fff
+#define DRIVER_UNTRUSTED_COMPATID_RANK     0x0000bfff
+#define DRIVER_W9X_SUSPECT_RANK            0x0000c000
+#define DRIVER_W9X_SUSPECT_HARDWAREID_RANK 0x0000cfff
+
+/* Device Information structure (references a device instance that is a member
+   of a device information set) */
+typedef struct _SP_DEVINFO_DATA
+{
+   DWORD     cbSize;
+   GUID      ClassGuid;
+   DWORD     DevInst;   /* DEVINST handle */
+   ULONG_PTR Reserved;
+} SP_DEVINFO_DATA, *PSP_DEVINFO_DATA;
+
+typedef struct _SP_DEVICE_INTERFACE_DATA
+{
+   DWORD      cbSize;
+   GUID       InterfaceClassGuid;
+   DWORD      Flags;
+   ULONG_PTR  Reserved;
+} SP_DEVICE_INTERFACE_DATA, *PSP_DEVICE_INTERFACE_DATA;
+
+#define SPINT_ACTIVE  0x00000001
+#define SPINT_DEFAULT 0x00000002
+#define SPINT_REMOVED 0x00000004
+
+typedef SP_DEVICE_INTERFACE_DATA  SP_INTERFACE_DEVICE_DATA;
+typedef PSP_DEVICE_INTERFACE_DATA PSP_INTERFACE_DEVICE_DATA;
+#define SPID_ACTIVE  SPINT_ACTIVE
+#define SPID_DEFAULT SPINT_DEFAULT
+#define SPID_REMOVED SPINT_REMOVED
+
+typedef struct _SP_DEVICE_INTERFACE_DETAIL_DATA_A
+{
+   DWORD      cbSize;
+   CHAR       DevicePath[ANYSIZE_ARRAY];
+} SP_DEVICE_INTERFACE_DETAIL_DATA_A, *PSP_DEVICE_INTERFACE_DETAIL_DATA_A;
+
+typedef struct _SP_DEVICE_INTERFACE_DETAIL_DATA_W
+{
+   DWORD      cbSize;
+   WCHAR      DevicePath[ANYSIZE_ARRAY];
+} SP_DEVICE_INTERFACE_DETAIL_DATA_W, *PSP_DEVICE_INTERFACE_DETAIL_DATA_W;
+
+DECL_WINELIB_SETUPAPI_TYPE_AW(SP_DEVICE_INTERFACE_DETAIL_DATA)
+DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_DEVICE_INTERFACE_DETAIL_DATA)
+
+typedef struct _SP_DEVINFO_LIST_DETAIL_DATA_A {
+    DWORD  cbSize;
+    GUID   ClassGuid;
+    HANDLE RemoteMachineHandle;
+    CHAR   RemoteMachineName[SP_MAX_MACHINENAME_LENGTH];
+} SP_DEVINFO_LIST_DETAIL_DATA_A, *PSP_DEVINFO_LIST_DETAIL_DATA_A;
+
+typedef struct _SP_DEVINFO_LIST_DETAIL_DATA_W {
+    DWORD  cbSize;
+    GUID   ClassGuid;
+    HANDLE RemoteMachineHandle;
+    WCHAR  RemoteMachineName[SP_MAX_MACHINENAME_LENGTH];
+} SP_DEVINFO_LIST_DETAIL_DATA_W, *PSP_DEVINFO_LIST_DETAIL_DATA_W;
+
+DECL_WINELIB_SETUPAPI_TYPE_AW(SP_DEVINFO_LIST_DETAIL_DATA)
+DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_DEVINFO_LIST_DETAIL_DATA)
+
+typedef DWORD (CALLBACK *PSP_DETSIG_CMPPROC)(HDEVINFO, PSP_DEVINFO_DATA,
+ PSP_DEVINFO_DATA, PVOID);
+
+typedef struct _COINSTALLER_CONTEXT_DATA
+{
+    BOOL  PostProcessing;
+    DWORD InstallResult;
+    PVOID PrivateData;
+} COINSTALLER_CONTEXT_DATA, *PCOINSTALLER_CONTEXT_DATA;
+
+typedef struct _SP_CLASSIMAGELIST_DATA
+{
+    DWORD      cbSize;
+    HIMAGELIST ImageList;
+    ULONG_PTR  Reserved;
+} SP_CLASSIMAGELIST_DATA, *PSP_CLASSIMAGELIST_DATA;
+
+typedef struct _SP_PROPSHEETPAGE_REQUEST
+{
+    DWORD            cbSize;
+    DWORD            PageRequested;
+    HDEVINFO         DeviceInfoSet;
+    PSP_DEVINFO_DATA DeviceInfoData;
+} SP_PROPSHEETPAGE_REQUEST, *PSP_PROPSHEETPAGE_REQUEST;
+
+/* SP_PROPSHEETPAGE_REQUEST PageRequested values */
+#define SPPSR_SELECT_DEVICE_RESOURCES      1
+#define SPPSR_ENUM_BASIC_DEVICE_PROPERTIES 2
+#define SPPSR_ENUM_ADV_DEVICE_PROPERTIES   3
+
+typedef struct _SP_BACKUP_QUEUE_PARAMS_V1_A
+{
+    DWORD cbSize;
+    CHAR  FullInfPath[MAX_PATH];
+    INT   FilenameOffset;
+} SP_BACKUP_QUEUE_PARAMS_V1_A, *PSP_BACKUP_QUEUE_PARAMS_V1_A;
+
+typedef struct _SP_BACKUP_QUEUE_PARAMS_V1_W
+{
+    DWORD cbSize;
+    WCHAR FullInfPath[MAX_PATH];
+    INT   FilenameOffset;
+} SP_BACKUP_QUEUE_PARAMS_V1_W, *PSP_BACKUP_QUEUE_PARAMS_V1_W;
+
+DECL_WINELIB_SETUPAPI_TYPE_AW(SP_BACKUP_QUEUE_PARAMS_V1)
+DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_BACKUP_QUEUE_PARAMS_V1)
+
+typedef struct _SP_BACKUP_QUEUE_PARAMS_V2_A
+{
+    DWORD cbSize;
+    CHAR  FullInfPath[MAX_PATH];
+    INT   FilenameOffset;
+    CHAR  ReinstallInstance[MAX_PATH];
+} SP_BACKUP_QUEUE_PARAMS_V2_A, *PSP_BACKUP_QUEUE_PARAMS_V2_A;
+
+typedef struct _SP_BACKUP_QUEUE_PARAMS_V2_W
+{
+    DWORD cbSize;
+    WCHAR FullInfPath[MAX_PATH];
+    INT   FilenameOffset;
+    WCHAR ReinstallInstance[MAX_PATH];
+} SP_BACKUP_QUEUE_PARAMS_V2_W, *PSP_BACKUP_QUEUE_PARAMS_V2_W;
+
+DECL_WINELIB_SETUPAPI_TYPE_AW(SP_BACKUP_QUEUE_PARAMS_V2)
+DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_BACKUP_QUEUE_PARAMS_V2)
+
+typedef SP_BACKUP_QUEUE_PARAMS_V2_A SP_BACKUP_QUEUE_PARAMS_A;
+typedef PSP_BACKUP_QUEUE_PARAMS_V2_A PSP_BACKUP_QUEUE_PARAMS_A;
+typedef SP_BACKUP_QUEUE_PARAMS_V2_W SP_BACKUP_QUEUE_PARAMS_W;
+typedef PSP_BACKUP_QUEUE_PARAMS_V2_W PSP_BACKUP_QUEUE_PARAMS_W;
+
+DECL_WINELIB_SETUPAPI_TYPE_AW(SP_BACKUP_QUEUE_PARAMS)
+DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_BACKUP_QUEUE_PARAMS)
+
+typedef struct _FILE_IN_CABINET_INFO_A {
+  LPCSTR NameInCabinet;
+  DWORD FileSize;
+  DWORD Win32Error;
+  WORD DosDate;
+  WORD DosTime;
+  WORD DosAttribs;
+  CHAR FullTargetName[MAX_PATH];
+} FILE_IN_CABINET_INFO_A, *PFILE_IN_CABINET_INFO_A;
+
+typedef struct _FILE_IN_CABINET_INFO_W {
+  LPCWSTR NameInCabinet;
+  DWORD FileSize;
+  DWORD Win32Error;
+  WORD DosDate;
+  WORD DosTime;
+  WORD DosAttribs;
+  WCHAR FullTargetName[MAX_PATH];
+} FILE_IN_CABINET_INFO_W, *PFILE_IN_CABINET_INFO_W;
+
+DECL_WINELIB_SETUPAPI_TYPE_AW(FILE_IN_CABINET_INFO)
+DECL_WINELIB_SETUPAPI_TYPE_AW(PFILE_IN_CABINET_INFO)
+
+typedef struct _CABINET_INFO_A {
+  PCSTR CabinetPath;
+  PCSTR CabinetFile;
+  PCSTR DiskName;
+  USHORT SetId;
+  USHORT CabinetNumber;
+} CABINET_INFO_A, *PCABINET_INFO_A;
+
+typedef struct _CABINET_INFO_W {
+  PCWSTR CabinetPath;
+  PCWSTR CabinetFile;
+  PCWSTR DiskName;
+  USHORT SetId;
+  USHORT CabinetNumber;
+} CABINET_INFO_W, *PCABINET_INFO_W;
+
+DECL_WINELIB_SETUPAPI_TYPE_AW(CABINET_INFO)
+DECL_WINELIB_SETUPAPI_TYPE_AW(PCABINET_INFO)
+
+typedef struct _SP_INF_INFORMATION {
+    DWORD InfStyle;
+    DWORD InfCount;
+    BYTE VersionData[ANYSIZE_ARRAY];
+} SP_INF_INFORMATION, *PSP_INF_INFORMATION;
+
+#define INF_STYLE_NONE           0x00
+#define INF_STYLE_OLDNT          0x01
+#define INF_STYLE_WIN4           0x02
+#define INF_STYLE_CACHE_ENABLE   0x10
+#define INF_STYLE_CACHE_DISABLE  0x20
+
+#define FILEOP_COPY              0
+#define FILEOP_RENAME            1
+#define FILEOP_DELETE            2
+#define FILEOP_BACKUP            3
+
+#define FILEOP_ABORT             0
+#define FILEOP_DOIT              1
+#define FILEOP_SKIP              2
+#define FILEOP_RETRY             FILEOP_DOIT
+#define FILEOP_NEWPATH           4
+
+#define COPYFLG_WARN_IF_SKIP                  0x00000001
+#define COPYFLG_NOSKIP                        0x00000002
+#define COPYFLG_NOVERSIONCHECK                0x00000004
+#define COPYFLG_FORCE_FILE_IN_USE             0x00000008
+#define COPYFLG_NO_OVERWRITE                  0x00000010
+#define COPYFLG_NO_VERSION_DIALOG             0x00000020
+#define COPYFLG_OVERWRITE_OLDER_ONLY          0x00000040
+#define COPYFLG_PROTECTED_WINDOWS_DRIVER_FILE 0x00000100
+#define COPYFLG_REPLACEONLY                   0x00000400
+#define COPYFLG_NODECOMP                      0x00000800
+#define COPYFLG_REPLACE_BOOT_FILE             0x00001000
+#define COPYFLG_NOPRUNE                       0x00002000
+#define COPYFLG_IN_USE_TRY_RENAME             0x00004000
+
+#define DELFLG_IN_USE  0x00000001
+#define DELFLG_IN_USE1 0x00010000
+
+typedef struct _FILEPATHS_A
+{
+    PCSTR  Target;
+    PCSTR  Source;
+    UINT   Win32Error;
+    DWORD  Flags;
+} FILEPATHS_A, *PFILEPATHS_A;
+
+typedef struct _FILEPATHS_W
+{
+    PCWSTR Target;
+    PCWSTR Source;
+    UINT   Win32Error;
+    DWORD  Flags;
+} FILEPATHS_W, *PFILEPATHS_W;
+
+DECL_WINELIB_SETUPAPI_TYPE_AW(FILEPATHS)
+DECL_WINELIB_SETUPAPI_TYPE_AW(PFILEPATHS)
+
+typedef struct _FILEPATHS_SIGNERINFO_A
+{
+    PCSTR Target;
+    PCSTR Source;
+    UINT  Win32Error;
+    DWORD Flags;
+    PCSTR DigitalSigner;
+    PCSTR Version;
+    PCSTR CatalogFile;
+} FILEPATHS_SIGNERINFO_A, *PFILEPATHS_SIGNERINFO_A;
+
+typedef struct _FILEPATHS_SIGNERINFO_W
+{
+    PCWSTR Target;
+    PCWSTR Source;
+    UINT   Win32Error;
+    DWORD  Flags;
+    PCWSTR DigitalSigner;
+    PCWSTR Version;
+    PCWSTR CatalogFile;
+} FILEPATHS_SIGNERINFO_W, *PFILEPATHS_SIGNERINFO_W;
+
+DECL_WINELIB_SETUPAPI_TYPE_AW(FILEPATHS_SIGNERINFO)
+
+typedef struct _SOURCE_MEDIA_A
+{
+    PCSTR Reserved;
+    PCSTR Tagfile;
+    PCSTR Description;
+    PCSTR SourcePath;
+    PCSTR SourceFile;
+    DWORD Flags;
+} SOURCE_MEDIA_A, *PSOURCE_MEDIA_A;
+
+typedef struct _SOURCE_MEDIA_W
+{
+    PCWSTR Reserved;
+    PCWSTR Tagfile;
+    PCWSTR Description;
+    PCWSTR SourcePath;
+    PCWSTR SourceFile;
+    DWORD  Flags;
+} SOURCE_MEDIA_W, *PSOURCE_MEDIA_W;
+
+DECL_WINELIB_SETUPAPI_TYPE_AW(SOURCE_MEDIA)
+
+typedef struct _SP_ORIGINAL_FILE_INFO_A
+{
+    DWORD cbSize;
+    CHAR  OriginalInfName[MAX_PATH];
+    CHAR  OriginalCatalogName[MAX_PATH];
+} SP_ORIGINAL_FILE_INFO_A, *PSP_ORIGINAL_FILE_INFO_A;
+
+typedef struct _SP_ORIGINAL_FILE_INFO_W
+{
+    DWORD cbSize;
+    WCHAR  OriginalInfName[MAX_PATH];
+    WCHAR  OriginalCatalogName[MAX_PATH];
+} SP_ORIGINAL_FILE_INFO_W, *PSP_ORIGINAL_FILE_INFO_W;
+
+DECL_WINELIB_SETUPAPI_TYPE_AW(SP_ORIGINAL_FILE_INFO)
+DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_ORIGINAL_FILE_INFO)
+
+typedef struct _SP_INF_SIGNER_INFO_A
+{
+    DWORD cbSize;
+    CHAR  CatalogFile[MAX_PATH];
+    CHAR  DigitalSigner[MAX_PATH];
+    CHAR  DigitalSignerVersion[MAX_PATH];
+} SP_INF_SIGNER_INFO_A, *PSP_INF_SIGNER_INFO_A;
+
+typedef struct _SP_INF_SIGNER_INFO_W
+{
+    DWORD cbSize;
+    WCHAR CatalogFile[MAX_PATH];
+    WCHAR DigitalSigner[MAX_PATH];
+    WCHAR DigitalSignerVersion[MAX_PATH];
+} SP_INF_SIGNER_INFO_W, *PSP_INF_SIGNER_INFO_W;
+
+DECL_WINELIB_SETUPAPI_TYPE_AW(SP_INF_SIGNER_INFO)
+DECL_WINELIB_SETUPAPI_TYPE_AW(PSP_INF_SIGNER_INFO)
+
+#define SPFILENOTIFY_STARTQUEUE           0x0001
+#define SPFILENOTIFY_ENDQUEUE             0x0002
+#define SPFILENOTIFY_STARTSUBQUEUE        0x0003
+#define SPFILENOTIFY_ENDSUBQUEUE          0x0004
+#define SPFILENOTIFY_STARTDELETE          0x0005
+#define SPFILENOTIFY_ENDDELETE            0x0006
+#define SPFILENOTIFY_DELETEERROR          0x0007
+#define SPFILENOTIFY_STARTRENAME          0x0008
+#define SPFILENOTIFY_ENDRENAME            0x0009
+#define SPFILENOTIFY_RENAMEERROR          0x000a
+#define SPFILENOTIFY_STARTCOPY            0x000b
+#define SPFILENOTIFY_ENDCOPY              0x000c
+#define SPFILENOTIFY_COPYERROR            0x000d
+#define SPFILENOTIFY_NEEDMEDIA            0x000e
+#define SPFILENOTIFY_QUEUESCAN            0x000f
+#define SPFILENOTIFY_CABINETINFO          0x0010
+#define SPFILENOTIFY_FILEINCABINET        0x0011
+#define SPFILENOTIFY_NEEDNEWCABINET       0x0012
+#define SPFILENOTIFY_FILEEXTRACTED        0x0013
+#define SPFILENOTIFY_FILEOPDELAYED        0x0014
+#define SPFILENOTIFY_STARTBACKUP          0x0015
+#define SPFILENOTIFY_BACKUPERROR          0x0016
+#define SPFILENOTIFY_ENDBACKUP            0x0017
+#define SPFILENOTIFY_QUEUESCAN_EX         0x0018
+#define SPFILENOTIFY_STARTREGISTRATION    0x0019
+#define SPFILENOTIFY_ENDREGISTRATION      0x0020
+#define SPFILENOTIFY_QUEUESCAN_SIGNERINFO 0x0040
+
+#define SPFILENOTIFY_LANGMISMATCH         0x00010000
+#define SPFILENOTIFY_TARGETEXISTS         0x00020000
+#define SPFILENOTIFY_TARGETNEWER          0x00040000
+
+#define SPINST_LOGCONFIG                  0x00000001
+#define SPINST_INIFILES                   0x00000002
+#define SPINST_REGISTRY                   0x00000004
+#define SPINST_INI2REG                    0x00000008
+#define SPINST_FILES                      0x00000010
+#define SPINST_BITREG                     0x00000020
+#define SPINST_REGSVR                     0x00000040
+#define SPINST_UNREGSVR                   0x00000080
+#define SPINST_PROFILEITEMS               0x00000100
+#define SPINST_COPYINF                    0x00000200
+#define SPINST_ALL                        0x000003ff
+#define SPINST_SINGLESECTION              0x00010000
+#define SPINST_LOGCONFIG_IS_FORCED        0x00020000
+#define SPINST_LOGCONFIGS_ARE_OVERRIDES   0x00040000
+#define SPINST_REGISTERCALLBACKAWARE      0x00080000
+
+#define SPSVCINST_TAGTOFRONT               0x00000001
+#define SPSVCINST_ASSOCSERVICE             0x00000002
+#define SPSVCINST_DELETEEVENTLOGENTRY      0x00000004
+#define SPSVCINST_NOCLOBBER_DISPLAYNAME    0x00000008
+#define SPSVCINST_NOCLOBBER_STARTTYPE      0x00000010
+#define SPSVCINST_NOCLOBBER_ERRORCONTROL   0x00000020
+#define SPSVCINST_NOCLOBBER_LOADORDERGROUP 0x00000040
+#define SPSVCINST_NOCLOBBER_DEPENDENCIES   0x00000080
+#define SPSVCINST_NOCLOBBER_DESCRIPTION    0x00000100
+#define SPSVCINST_STOPSERVICE              0x00000200
+#define SPSVCINST_CLOBBER_SECURITY         0x00000400
+#define SPSVCINST_STARTSERVICE             0x00000800
+
+#define SP_COPY_DELETESOURCE              0x00000001
+#define SP_COPY_REPLACEONLY               0x00000002
+#define SP_COPY_NEWER                     0x00000004
+#define SP_COPY_NEWER_OR_SAME             SP_COPY_NEWER
+#define SP_COPY_NOOVERWRITE               0x00000008
+#define SP_COPY_NODECOMP                  0x00000010
+#define SP_COPY_LANGUAGEAWARE             0x00000020
+#define SP_COPY_SOURCE_ABSOLUTE           0x00000040
+#define SP_COPY_SOURCEPATH_ABSOLUTE       0x00000080
+#define SP_COPY_IN_USE_NEEDS_REBOOT       0x00000100
+#define SP_COPY_FORCE_IN_USE              0x00000200
+#define SP_COPY_NOSKIP                    0x00000400
+#define SP_FLAG_CABINETCONTINUATION       0x00000800
+#define SP_COPY_FORCE_NOOVERWRITE         0x00001000
+#define SP_COPY_FORCE_NEWER               0x00002000
+#define SP_COPY_WARNIFSKIP                0x00004000
+#define SP_COPY_NOBROWSE                  0x00008000
+#define SP_COPY_NEWER_ONLY                0x00010000
+#define SP_COPY_SOURCE_SIS_MASTER         0x00020000
+#define SP_COPY_OEMINF_CATALOG_ONLY       0x00040000
+#define SP_COPY_REPLACE_BOOT_FILE         0x00080000
+#define SP_COPY_NOPRUNE                   0x00100000
+#define SP_COPY_OEM_F6_INF                0x00200000
+
+#define SP_BACKUP_BACKUPPASS 0x00000001
+#define SP_BACKUP_DEMANDPASS 0x00000002
+#define SP_BACKUP_SPECIAL    0x00000004
+#define SP_BACKUP_BOOTFILE   0x00000008
+
+#define SPOST_NONE  0
+#define SPOST_PATH  1
+#define SPOST_URL   2
+#define SPOST_MAX   3
+
+#define SPQ_SCAN_FILE_PRESENCE            0x00000001
+#define SPQ_SCAN_FILE_VALIDITY            0x00000002
+#define SPQ_SCAN_USE_CALLBACK             0x00000004
+#define SPQ_SCAN_USE_CALLBACKEX           0x00000008
+#define SPQ_SCAN_INFORM_USER              0x00000010
+#define SPQ_SCAN_PRUNE_COPY_QUEUE         0x00000020
+#define SPQ_SCAN_USE_CALLBACK_SIGNERINFO  0x00000040
+#define SPQ_SCAN_PRUNE_DELREN             0x00000080
+
+#define SPQ_DELAYED_COPY 0x00000001
+
+#define SPQ_FLAG_BACKUP_AWARE      0x00000001
+#define SPQ_FLAG_ABORT_IF_UNSIGNED 0x00000002
+#define SPQ_FLAG_FILES_MODIFIED    0x00000004
+#define SPQ_FLAG_VALID             0x00000007
+
+#define FLG_ADDREG_DELREG_BIT             0x00008000
+#define FLG_ADDREG_BINVALUETYPE           0x00000001
+#define FLG_ADDREG_NOCLOBBER              0x00000002
+#define FLG_ADDREG_DELVAL                 0x00000004
+#define FLG_ADDREG_APPEND                 0x00000008
+#define FLG_ADDREG_KEYONLY                0x00000010
+#define FLG_ADDREG_OVERWRITEONLY          0x00000020
+#define FLG_ADDREG_64BITKEY               0x00001000
+#define FLG_ADDREG_KEYONLY_COMMON         0x00002000
+#define FLG_ADDREG_32BITKEY               0x00004000
+#define FLG_ADDREG_TYPE_SZ                0x00000000
+#define FLG_ADDREG_TYPE_MULTI_SZ          0x00010000
+#define FLG_ADDREG_TYPE_EXPAND_SZ         0x00020000
+#define FLG_ADDREG_TYPE_BINARY           (0x00000000 | FLG_ADDREG_BINVALUETYPE)
+#define FLG_ADDREG_TYPE_DWORD            (0x00010000 | FLG_ADDREG_BINVALUETYPE)
+#define FLG_ADDREG_TYPE_NONE             (0x00020000 | FLG_ADDREG_BINVALUETYPE)
+#define FLG_ADDREG_TYPE_MASK             (0xFFFF0000 | FLG_ADDREG_BINVALUETYPE)
+
+#define FLG_DELREG_VALUE                 (0x00000000)
+#define FLG_DELREG_TYPE_MASK             FLG_ADDREG_TYPE_MASK
+#define FLG_DELREG_TYPE_SZ               FLG_ADDREG_TYPE_SZ
+#define FLG_DELREG_TYPE_MULTI_SZ         FLG_ADDREG_TYPE_MULTI_SZ
+#define FLG_DELREG_TYPE_EXPAND_SZ        FLG_ADDREG_TYPE_EXPAND_SZ
+#define FLG_DELREG_TYPE_BINARY           FLG_ADDREG_TYPE_BINARY
+#define FLG_DELREG_TYPE_DWORD            FLG_ADDREG_TYPE_DWORD
+#define FLG_DELREG_TYPE_NONE             FLG_ADDREG_TYPE_NONE
+#define FLG_DELREG_64BITKEY              FLG_ADDREG_64BITKEY
+#define FLG_DELREG_KEYONLY_COMMON        FLG_ADDREG_KEYONLY_COMMON
+#define FLG_DELREG_32BITKEY              FLG_ADDREG_32BITKEY
+#define FLG_DELREG_OPERATION_MASK        (0x000000FE)
+#define FLG_DELREG_MULTI_SZ_DELSTRING    (FLG_DELREG_TYPE_MULTI_SZ | FLG_ADDREG_DELREG_BIT | 0x00000002)
+
+#define FLG_REGSVR_DLLREGISTER           0x00000001
+#define FLG_REGSVR_DLLINSTALL            0x00000002
+
+#define FLG_PROFITEM_CURRENTUSER         0x00000001
+#define FLG_PROFITEM_DELETE              0x00000002
+#define FLG_PROFITEM_GROUP               0x00000004
+#define FLG_PROFITEM_CSIDL               0x00000008
+
+#define DI_NOVCP 0x00000008
+
+/* Class installer function codes */
+#define DIF_SELECTDEVICE                    0x01
+#define DIF_INSTALLDEVICE                   0x02
+#define DIF_ASSIGNRESOURCES                 0x03
+#define DIF_PROPERTIES                      0x04
+#define DIF_REMOVE                          0x05
+#define DIF_FIRSTTIMESETUP                  0x06
+#define DIF_FOUNDDEVICE                     0x07
+#define DIF_SELECTCLASSDRIVERS              0x08
+#define DIF_VALIDATECLASSDRIVERS            0x09
+#define DIF_INSTALLCLASSDRIVERS             0x0a
+#define DIF_CALCDISKSPACE                   0x0b
+#define DIF_DESTROYPRIVATEDATA              0x0c
+#define DIF_VALIDATEDRIVER                  0x0d
+#define DIF_MOVEDEVICE                      0x0e
+#define DIF_DETECT                          0x0f
+#define DIF_INSTALLWIZARD                   0x10
+#define DIF_DESTROYWIZARDDATA               0x11
+#define DIF_PROPERTYCHANGE                  0x12
+#define DIF_ENABLECLASS                     0x13
+#define DIF_DETECTVERIFY                    0x14
+#define DIF_INSTALLDEVICEFILES              0x15
+#define DIF_UNREMOVE                        0x16
+#define DIF_SELECTBESTCOMPATDRV             0x17
+#define DIF_ALLOW_INSTALL                   0x18
+#define DIF_REGISTERDEVICE                  0x19
+#define DIF_NEWDEVICEWIZARD_PRESELECT       0x1a
+#define DIF_NEWDEVICEWIZARD_SELECT          0x1b
+#define DIF_NEWDEVICEWIZARD_PREANALYZE      0x1c
+#define DIF_NEWDEVICEWIZARD_POSTANALYZE     0x1d
+#define DIF_NEWDEVICEWIZARD_FINISHINSTALL   0x1e
+#define DIF_UNUSED1                         0x1f
+#define DIF_INSTALLINTERFACES               0x20
+#define DIF_DETECTCANCEL                    0x21
+#define DIF_REGISTER_COINSTALLERS           0x22
+#define DIF_ADDPROPERTYPAGE_ADVANCED        0x23
+#define DIF_ADDPROPERTYPAGE_BASIC           0x24
+#define DIF_RESERVED1                       0x25
+#define DIF_TROUBLESHOOTER                  0x26
+#define DIF_POWERMESSAGEWAKE                0x27
+#define DIF_ADDREMOTEPROPERTYPAGE_ADVANCED  0x28
+#define DIF_UPDATEDRIVER_UI                 0x29
+#define DIF_RESERVED2                       0x30
+
+/* Directory ids */
+#define DIRID_ABSOLUTE                (-1)
+#define DIRID_ABSOLUTE_16BIT          0xffff
+#define DIRID_NULL                    0
+#define DIRID_SRCPATH                 1
+#define DIRID_WINDOWS                 10
+#define DIRID_SYSTEM                  11
+#define DIRID_DRIVERS                 12
+#define DIRID_IOSUBSYS                DIRID_DRIVERS
+#define DIRID_INF                     17
+#define DIRID_HELP                    18
+#define DIRID_FONTS                   20
+#define DIRID_VIEWERS                 21
+#define DIRID_COLOR                   23
+#define DIRID_APPS                    24
+#define DIRID_SHARED                  25
+#define DIRID_BOOT                    30
+#define DIRID_SYSTEM16                50
+#define DIRID_SPOOL                   51
+#define DIRID_SPOOLDRIVERS            52
+#define DIRID_USERPROFILE             53
+#define DIRID_LOADER                  54
+#define DIRID_PRINTPROCESSOR          55
+#define DIRID_DEFAULT                 DIRID_SYSTEM
+
+#define DIRID_COMMON_STARTMENU        16406
+#define DIRID_COMMON_PROGRAMS         16407
+#define DIRID_COMMON_STARTUP          16408
+#define DIRID_COMMON_DESKTOPDIRECTORY 16409
+#define DIRID_COMMON_FAVORITES        16415
+#define DIRID_COMMON_APPDATA          16419
+#define DIRID_PROGRAM_FILES           16422
+#define DIRID_SYSTEM_X86              16425
+#define DIRID_PROGRAM_FILES_X86       16426
+#define DIRID_PROGRAM_FILES_COMMON    16427
+#define DIRID_PROGRAM_FILES_COMMONX86 16428
+#define DIRID_COMMON_TEMPLATES        16429
+#define DIRID_COMMON_DOCUMENTS        16430
+
+#define DIRID_USER                    0x8000
+
+
+/* Error code */
+
+#define ERROR_EXPECTED_SECTION_NAME       (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0)
+#define ERROR_BAD_SECTION_NAME_LINE       (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|1)
+#define ERROR_SECTION_NAME_TOO_LONG       (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|2)
+#define ERROR_GENERAL_SYNTAX              (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|3)
+#define ERROR_WRONG_INF_STYLE             (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x100)
+#define ERROR_SECTION_NOT_FOUND           (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x101)
+#define ERROR_LINE_NOT_FOUND              (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x102)
+#define ERROR_NO_BACKUP                   (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x103)
+#define ERROR_NO_ASSOCIATED_CLASS         (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x200)
+#define ERROR_CLASS_MISMATCH              (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x201)
+#define ERROR_DUPLICATE_FOUND             (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x202)
+#define ERROR_NO_DRIVER_SELECTED          (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x203)
+#define ERROR_KEY_DOES_NOT_EXIST          (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x204)
+#define ERROR_INVALID_DEVINST_NAME        (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x205)
+#define ERROR_INVALID_CLASS               (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x206)
+#define ERROR_DEVINST_ALREADY_EXISTS      (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x207)
+#define ERROR_DEVINFO_NOT_REGISTERED      (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x208)
+#define ERROR_INVALID_REG_PROPERTY        (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x209)
+#define ERROR_NO_INF                      (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20A)
+#define ERROR_NO_SUCH_DEVINST             (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20B)
+#define ERROR_CANT_LOAD_CLASS_ICON        (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20C)
+#define ERROR_INVALID_CLASS_INSTALLER     (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20D)
+#define ERROR_DI_DO_DEFAULT               (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20E)
+#define ERROR_DI_NOFILECOPY               (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20F)
+#define ERROR_INVALID_HWPROFILE           (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x210)
+#define ERROR_NO_DEVICE_SELECTED          (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x211)
+#define ERROR_DEVINFO_LIST_LOCKED         (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x212)
+#define ERROR_DEVINFO_DATA_LOCKED         (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x213)
+#define ERROR_DI_BAD_PATH                 (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x214)
+#define ERROR_NO_CLASSINSTALL_PARAMS      (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x215)
+#define ERROR_FILEQUEUE_LOCKED            (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x216)
+#define ERROR_BAD_SERVICE_INSTALLSECT     (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x217)
+#define ERROR_NO_CLASS_DRIVER_LIST        (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x218)
+#define ERROR_NO_ASSOCIATED_SERVICE       (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x219)
+#define ERROR_NO_DEFAULT_DEVICE_INTERFACE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21A)
+#define ERROR_DEVICE_INTERFACE_ACTIVE     (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21B)
+#define ERROR_DEVICE_INTERFACE_REMOVED    (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21C)
+#define ERROR_BAD_INTERFACE_INSTALLSECT   (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21D)
+#define ERROR_NO_SUCH_INTERFACE_CLASS     (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21E)
+#define ERROR_INVALID_REFERENCE_STRING    (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21F)
+#define ERROR_INVALID_MACHINENAME         (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x220)
+#define ERROR_REMOTE_COMM_FAILURE         (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x221)
+#define ERROR_MACHINE_UNAVAILABLE         (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x222)
+#define ERROR_NO_CONFIGMGR_SERVICES       (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x223)
+#define ERROR_INVALID_PROPPAGE_PROVIDER   (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x224)
+#define ERROR_NO_SUCH_DEVICE_INTERFACE    (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x225)
+#define ERROR_DI_POSTPROCESSING_REQUIRED  (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x226)
+#define ERROR_INVALID_COINSTALLER         (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x227)
+#define ERROR_NO_COMPAT_DRIVERS           (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x228)
+#define ERROR_NO_DEVICE_ICON              (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x229)
+#define ERROR_INVALID_INF_LOGCONFIG       (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22A)
+#define ERROR_DI_DONT_INSTALL             (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22B)
+#define ERROR_INVALID_FILTER_DRIVER       (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22C)
+#define ERROR_NON_WINDOWS_NT_DRIVER       (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22D)
+#define ERROR_NON_WINDOWS_DRIVER          (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22E)
+#define ERROR_NO_CATALOG_FOR_OEM_INF      (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22F)
+#define ERROR_DEVINSTALL_QUEUE_NONNATIVE  (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x230)
+#define ERROR_NOT_DISABLEABLE             (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x231)
+#define ERROR_CANT_REMOVE_DEVINST         (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x232)
+#define ERROR_INVALID_TARGET              (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x233)
+#define ERROR_DRIVER_NONNATIVE            (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x234)
+#define ERROR_IN_WOW64                    (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x235)
+#define ERROR_SET_SYSTEM_RESTORE_POINT    (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x236)
+#define ERROR_INCORRECTLY_COPIED_INF      (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x237)
+#define ERROR_SCE_DISABLED                (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x238)
+#define ERROR_NO_DEFAULT_INTERFACE_DEVICE ERROR_NO_DEFAULT_DEVICE_INTERFACE
+#define ERROR_INTERFACE_DEVICE_ACTIVE     ERROR_DEVICE_INTERFACE_ACTIVE
+#define ERROR_INTERFACE_DEVICE_REMOVED    ERROR_DEVICE_INTERFACE_REMOVED
+#define ERROR_NO_SUCH_INTERFACE_DEVICE    ERROR_NO_SUCH_DEVICE_INTERFACE
+#define ERROR_NOT_INSTALLED               (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x1000)
+
+/* flags for SetupDiGetClassDevs */
+#define DIGCF_DEFAULT         0x00000001
+#define DIGCF_PRESENT         0x00000002
+#define DIGCF_ALLCLASSES      0x00000004
+#define DIGCF_PROFILE         0x00000008
+#define DIGCF_DEVICEINTERFACE 0x00000010
+
+/* Flags for SetupDiOpenClassRegKeyEx */
+#define DIOCR_INSTALLER       0x00000001
+#define DIOCR_INTERFACE       0x00000002
+
+/* Flags for SetupDiBuildClassInfoList(Ex) */
+#define DIBCI_NOINSTALLCLASS  0x00000001
+#define DIBCI_NODISPLAYCLASS  0x00000002
+
+/* Flags for SetupDiCreateDeviceInfo */
+#define DICD_GENERATE_ID       0x00000001
+#define DICD_INHERIT_CLASSDRVS 0x00000002
+
+/* Flags for SetupDiOpenDeviceInfo */
+#define DIOD_INHERIT_CLASSDRVS 0x00000002
+#define DIOD_CANCEL_REMOVE     0x00000004
+
+/* Flags for SetupDiOpenDeviceInterface */
+#define DIODI_NO_ADD 0x00000001
+
+/* Flags for SetupDiRegisterDeviceInfo */
+#define SPRDI_FIND_DUPS 0x00000001
+
+/* Values for SetupDi*Info* DriverType */
+#define SPDIT_NODRIVER     0x00000000
+#define SPDIT_CLASSDRIVER  0x00000001
+#define SPDIT_COMPATDRIVER 0x00000002
+
+/* setup device registry property codes */
+#define SPDRP_DEVICEDESC                  0x00000000
+#define SPDRP_HARDWAREID                  0x00000001
+#define SPDRP_COMPATIBLEIDS               0x00000002
+#define SPDRP_UNUSED0                     0x00000003
+#define SPDRP_SERVICE                     0x00000004
+#define SPDRP_UNUSED1                     0x00000005
+#define SPDRP_UNUSED2                     0x00000006
+#define SPDRP_CLASS                       0x00000007
+#define SPDRP_CLASSGUID                   0x00000008
+#define SPDRP_DRIVER                      0x00000009
+#define SPDRP_CONFIGFLAGS                 0x0000000a
+#define SPDRP_MFG                         0x0000000b
+#define SPDRP_FRIENDLYNAME                0x0000000c
+#define SPDRP_LOCATION_INFORMATION        0x0000000d
+#define SPDRP_PHYSICAL_DEVICE_OBJECT_NAME 0x0000000e
+#define SPDRP_CAPABILITIES                0x0000000f
+#define SPDRP_UI_NUMBER                   0x00000010
+#define SPDRP_UPPERFILTERS                0x00000011
+#define SPDRP_LOWERFILTERS                0x00000012
+#define SPDRP_BUSTYPEGUID                 0x00000013
+#define SPDRP_LEGACYBUSTYPE               0x00000014
+#define SPDRP_BUSNUMBER                   0x00000015
+#define SPDRP_ENUMERATOR_NAME             0x00000016
+#define SPDRP_SECURITY                    0x00000017
+#define SPDRP_SECURITY_SDS                0x00000018
+#define SPDRP_DEVTYPE                     0x00000019
+#define SPDRP_EXCLUSIVE                   0x0000001a
+#define SPDRP_CHARACTERISTICS             0x0000001b
+#define SPDRP_ADDRESS                     0x0000001c
+#define SPDRP_UI_NUMBER_DESC_FORMAT       0x0000001d
+#define SPDRP_DEVICE_POWER_DATA           0x0000001e
+#define SPDRP_REMOVAL_POLICY              0x0000001f
+#define SPDRP_REMOVAL_POLICY_HW_DEFAULT   0x00000020
+#define SPDRP_REMOVAL_POLICY_OVERRIDE     0x00000021
+#define SPDRP_INSTALL_STATE               0x00000022
+#define SPDRP_MAXIMUM_PROPERTY            0x00000023
+
+#define DPROMPT_SUCCESS       0
+#define DPROMPT_CANCEL        1
+#define DPROMPT_SKIPFILE      2
+#define DPROMPT_BUFFERTOSMALL 3
+#define DPROMPT_OUTOFMEMORY   4
+
+#define SETDIRID_NOT_FULL_PATH 0x00000001
+
+#define IDF_NOBROWSE     0x00000001
+#define IDF_NOSKIP       0x00000002
+#define IDF_NODETAILS    0x00000004
+#define IDF_NOCOMPRESSED 0x00000008
+#define IDF_CHECKFIRST   0x00000100
+#define IDF_NOBEEP       0x00000200
+#define IDF_NOFOREGROUND 0x00000400
+#define IDF_WARNIFSKIP   0x00000800
+
+#define INFINFO_INF_SPEC_IS_HINF        1
+#define INFINFO_INF_NAME_IS_ABSOLUTE    2
+#define INFINFO_DEFAULT_SEARCH          3
+#define INFINFO_REVERSE_DEFAULT_SEARCH  4
+#define INFINFO_INF_PATH_LIST_SEARCH    5
+
+#define LogSeverity         DWORD
+#define LogSevInformation   0x00000000
+#define LogSevWarning       0x00000001
+#define LogSevError         0x00000002
+#define LogSevFatalError    0x00000003
+#define LogSevMaximum       0x00000004
+
+#define SRCINFO_PATH           1
+#define SRCINFO_TAGFILE        2
+#define SRCINFO_DESCRIPTION    3
+#define SRCINFO_FLAGS          4
+#define SRCINFO_TAGFILE2       5
+
+#define SRC_FLAGS_CABFILE      (0x0010)
+
+#define FILE_COMPRESSION_NONE       0
+#define FILE_COMPRESSION_WINLZA     1
+#define FILE_COMPRESSION_MSZIP      2
+#define FILE_COMPRESSION_NTCAB      3
+
+#define SPDSL_IGNORE_DISK              0x00000001
+#define SPDSL_DISALLOW_NEGATIVE_ADJUST 0x00000002
+
+/* SetupInitializeFileLog Flags values */
+#define SPFILELOG_SYSTEMLOG 0x00000001
+#define SPFILELOG_FORCENEW  0x00000002
+#define SPFILELOG_QUERYONLY 0x00000004
+
+/* SetupLogFile Flags values */
+#define SPFILELOG_OEMFILE 0x00000001
+
+/* SetupDiCreateDevRegKey, SetupDiOpenDevRegKey, and SetupDiDeleteDevRegKey
+ * KeyType values
+ */
+#define DIREG_DEV  0x00000001
+#define DIREG_DRV  0x00000002
+#define DIREG_BOTH 0x00000004
+
+/* SetupDiDrawMiniIcon Flags values */
+#define DMI_MASK    0x00000001
+#define DMI_BKCOLOR 0x00000002
+#define DMI_USERECT 0x00000004
+
+/* SetupDiGetClassDevPropertySheets PropertySheetType values */
+#define DIGCDP_FLAG_BASIC           0x00000001
+#define DIGCDP_FLAG_ADVANCED        0x00000002
+#define DIGCDP_FLAG_REMOTE_BASIC    0x00000003
+#define DIGCDP_FLAG_REMOTE_ADVANCED 0x00000004
+
+typedef enum {
+    SetupFileLogSourceFilename,
+    SetupFileLogChecksum,
+    SetupFileLogDiskTagfile,
+    SetupFileLogDiskDescription,
+    SetupFileLogOtherInfo,
+    SetupFileLogMax
+} SetupFileLogInfo;
+
+/* SetupDiGetWizardPage PageType values */
+#define SPWPT_SELECTDEVICE 0x00000001
+/* SetupDiGetWizardPage Flags values */
+#define SPWP_USE_DEVINFO_DATA 0x00000001
+
+/* SetupDiGetCustomDeviceProperty Flags values */
+#define DICUSTOMDEVPROP_MERGE_MULTISZ 0x00000001
+
+/* SetupConfigureWmiFromInfSection Flags values */
+#define SCWMI_CLOBBER_SECURITY 0x00000001
+
+LONG     WINAPI AddTagToGroupOrderList(PCWSTR lpGroupName, DWORD dwUnknown2, DWORD dwUnknown3);
+DWORD    WINAPI CaptureAndConvertAnsiArg(PCSTR lpSrc, PWSTR *lpDst);
+DWORD    WINAPI CaptureStringArg(PCWSTR lpSrc, PWSTR *lpDst);
+BOOL     WINAPI DelayedMove(PCWSTR lpExistingFileName, PCWSTR lpNewFileName);
+BOOL     WINAPI DoesUserHavePrivilege(PCWSTR lpPrivilegeName);
+PWSTR    WINAPI DuplicateString(PCWSTR lpSrc);
+BOOL     WINAPI EnablePrivilege(PCWSTR lpPrivilegeName, BOOL bEnable);
+BOOL     WINAPI FileExists(PCWSTR lpFileName, PWIN32_FIND_DATAW lpFileFindData);
+void     WINAPI InstallHinfSectionA( HWND hwnd, HINSTANCE handle, PCSTR cmdline, INT show );
+void     WINAPI InstallHinfSectionW( HWND hwnd, HINSTANCE handle, PCWSTR cmdline, INT show );
+#define         InstallHinfSection WINELIB_NAME_AW(InstallHinfSection)
+BOOL     WINAPI IsUserAdmin(VOID);
+PWSTR    WINAPI MultiByteToUnicode(PCSTR lpMultiByteStr, UINT uCodePage);
+VOID     WINAPI MyFree(PVOID lpMem);
+PVOID    WINAPI MyMalloc(DWORD dwSize);
+PVOID    WINAPI MyRealloc(PVOID lpSrc, DWORD dwSize);
+DWORD    WINAPI OpenAndMapForRead(PCWSTR, PDWORD, PHANDLE, PHANDLE, PVOID *);
+LONG     WINAPI QueryRegistryValue(HKEY, PCWSTR, PBYTE *, PDWORD, PDWORD);
+/* RetreiveFileSecurity is not a typo, as per Microsoft's dlls */
+DWORD    WINAPI RetreiveFileSecurity(PCWSTR, PSECURITY_DESCRIPTOR *);
+BOOL     WINAPI SetupAddSectionToDiskSpaceListA(HDSKSPC, HINF, HINF, PCSTR, UINT, PVOID, UINT);
+BOOL     WINAPI SetupAddSectionToDiskSpaceListW(HDSKSPC, HINF, HINF, PCWSTR, UINT, PVOID, UINT);
+#define         SetupAddSectionToDiskSpaceList WINELIB_NAME_AW(SetupAddSectionToDiskSpaceList)
+BOOL     WINAPI SetupAddToDiskSpaceListA(HDSKSPC, PCSTR, LONGLONG, UINT, PVOID, UINT);
+BOOL     WINAPI SetupAddToDiskSpaceListW(HDSKSPC, PCWSTR, LONGLONG, UINT, PVOID, UINT);
+#define         SetupAddToDiskSpaceList WINELIB_NAME_AW(SetupAddToDiskSpaceList)
+BOOL     WINAPI SetupAddToSourceListA(DWORD, PCSTR);
+BOOL     WINAPI SetupAddToSourceListW(DWORD, PCWSTR);
+#define         SetupAddToSourceList WINELIB_NAME_AW(SetupAddToSourceList)
+BOOL     WINAPI SetupAdjustDiskSpaceListA(HDSKSPC, LPCSTR, LONGLONG, PVOID, UINT);
+BOOL     WINAPI SetupAdjustDiskSpaceListW(HDSKSPC, LPCWSTR, LONGLONG, PVOID, UINT);
+#define         SetupAdjustDiskSpaceList WINELIB_NAME_AW(SetupAdjustDiskSpaceList)
+BOOL     WINAPI SetupCancelTemporarySourceList(void);
+BOOL     WINAPI SetupConfigureWmiFromInfSectionA(HINF, PCSTR, DWORD);
+BOOL     WINAPI SetupConfigureWmiFromInfSectionW(HINF, PCWSTR, DWORD);
+#define         SetupConfigureWmiFromInfSection WINELIB_NAME_AW(SetupConfigureWmiFromInfSection)
+UINT     WINAPI SetupBackupErrorA(HWND, PCSTR, PCSTR, PCSTR, UINT, DWORD);
+UINT     WINAPI SetupBackupErrorW(HWND, PCWSTR, PCWSTR, PCWSTR, UINT, DWORD);
+#define         SetupBackupError WINELIB_NAME_AW(SetupBackupError)
+BOOL     WINAPI SetupCloseFileQueue( HSPFILEQ );
+void     WINAPI SetupCloseInfFile( HINF hinf );
+void     WINAPI SetupCloseLog(void);
+BOOL     WINAPI SetupCommitFileQueueA( HWND, HSPFILEQ, PSP_FILE_CALLBACK_A, PVOID );
+BOOL     WINAPI SetupCommitFileQueueW( HWND, HSPFILEQ, PSP_FILE_CALLBACK_W, PVOID );
+#define         SetupCommitFileQueue WINELIB_NAME_AW(SetupCommitFileQueue)
+UINT     WINAPI SetupCopyErrorA( HWND, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, UINT, DWORD, PSTR, DWORD, PDWORD );
+UINT     WINAPI SetupCopyErrorW( HWND, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, UINT, DWORD, PWSTR, DWORD, PDWORD );
+#define         SetupCopyError WINELIB_NAME_AW(SetupCopyError)
+BOOL     WINAPI SetupCopyOEMInfA( PCSTR, PCSTR, DWORD, DWORD, PSTR, DWORD, PDWORD, PSTR * );
+BOOL     WINAPI SetupCopyOEMInfW( PCWSTR, PCWSTR, DWORD, DWORD, PWSTR, DWORD, PDWORD, PWSTR * );
+#define         SetupCopyOEMInf WINELIB_NAME_AW(SetupCopyOEMInf)
+HDSKSPC  WINAPI SetupCreateDiskSpaceListA(PVOID, DWORD, UINT);
+HDSKSPC  WINAPI SetupCreateDiskSpaceListW(PVOID, DWORD, UINT);
+#define         SetupCreateDiskSpaceList WINELIB_NAME_AW(SetupCreateDiskSpaceList)
+DWORD    WINAPI SetupDecompressOrCopyFileA( PCSTR, PCSTR, PUINT );
+DWORD    WINAPI SetupDecompressOrCopyFileW( PCWSTR, PCWSTR, PUINT );
+#define         SetupDecompressOrCopyFile WINELIB_NAME_AW(SetupDecompressOrCopyFile)
+UINT     WINAPI SetupDefaultQueueCallbackA( PVOID, UINT, UINT_PTR, UINT_PTR );
+UINT     WINAPI SetupDefaultQueueCallbackW( PVOID, UINT, UINT_PTR, UINT_PTR );
+#define         SetupDefaultQueueCallback WINELIB_NAME_AW(SetupDefaultQueueCallback)
+UINT     WINAPI SetupDeleteErrorA( HWND, PCSTR, PCSTR, UINT, DWORD );
+UINT     WINAPI SetupDeleteErrorW( HWND, PCWSTR, PCWSTR, UINT, DWORD );
+#define         SetupDeleteError WINELIB_NAME_AW(SetupDeleteError)
+BOOL     WINAPI SetupDestroyDiskSpaceList(HDSKSPC);
+BOOL     WINAPI SetupDiAskForOEMDisk(HDEVINFO, PSP_DEVINFO_DATA);
+BOOL     WINAPI SetupDiBuildClassInfoList(DWORD, LPGUID, DWORD, PDWORD);
+BOOL     WINAPI SetupDiBuildClassInfoListExA(DWORD, LPGUID, DWORD, PDWORD, PCSTR, PVOID);
+BOOL     WINAPI SetupDiBuildClassInfoListExW(DWORD, LPGUID, DWORD, PDWORD, PCWSTR, PVOID);
+#define         SetupDiBuildClassInfoListEx WINELIB_NAME_AW(SetupDiBuildClassInfoListEx)
+BOOL     WINAPI SetupDiBuildDriverInfoList(HDEVINFO, PSP_DEVINFO_DATA, DWORD);
+BOOL     WINAPI SetupDiCallClassInstaller(DI_FUNCTION, HDEVINFO, PSP_DEVINFO_DATA);
+BOOL     WINAPI SetupDiCancelDriverInfoSearch(HDEVINFO);
+BOOL     WINAPI SetupDiChangeState(HDEVINFO, PSP_DEVINFO_DATA);
+BOOL     WINAPI SetupDiClassGuidsFromNameA(LPCSTR, LPGUID, DWORD, PDWORD);
+BOOL     WINAPI SetupDiClassGuidsFromNameW(LPCWSTR, LPGUID, DWORD, PDWORD);
+#define         SetupDiClassGuidsFromName WINELIB_NAME_AW(SetupDiClassGuidsFromName)
+BOOL     WINAPI SetupDiClassGuidsFromNameExA(LPCSTR, LPGUID, DWORD, PDWORD, LPCSTR, PVOID);
+BOOL     WINAPI SetupDiClassGuidsFromNameExW(LPCWSTR, LPGUID, DWORD, PDWORD, LPCWSTR, PVOID);
+#define         SetupDiClassGuidsFromNameEx WINELIB_NAME_AW(SetupDiClassGuidsFromNameEx)
+BOOL     WINAPI SetupDiClassNameFromGuidA(const GUID*, PSTR, DWORD, PDWORD);
+BOOL     WINAPI SetupDiClassNameFromGuidW(const GUID*, PWSTR, DWORD, PDWORD);
+#define         SetupDiClassNameFromGuid WINELIB_NAME_AW(SetupDiClassNameFromGuid)
+BOOL     WINAPI SetupDiClassNameFromGuidExA(const GUID*, PSTR, DWORD, PDWORD, PCSTR, PVOID);
+BOOL     WINAPI SetupDiClassNameFromGuidExW(const GUID*, PWSTR, DWORD, PDWORD, PCWSTR, PVOID);
+#define         SetupDiClassNameFromGuidEx WINELIB_NAME_AW(SetupDiClassNameFromGuidEx)
+HDEVINFO WINAPI SetupDiCreateDeviceInfoList(const GUID *, HWND);
+HDEVINFO WINAPI SetupDiCreateDeviceInfoListExA(const GUID *, HWND, PCSTR, PVOID);
+HDEVINFO WINAPI SetupDiCreateDeviceInfoListExW(const GUID *, HWND, PCWSTR, PVOID);
+#define         SetupDiCreateDeviceInfoListEx WINELIB_NAME_AW(SetupDiCreateDeviceInfoListEx)
+BOOL     WINAPI SetupDiCreateDeviceInfoA(HDEVINFO, PCSTR, CONST GUID*, PCSTR, HWND, DWORD,PSP_DEVINFO_DATA);
+BOOL     WINAPI SetupDiCreateDeviceInfoW(HDEVINFO, PCWSTR, CONST GUID*, PCWSTR, HWND, DWORD,PSP_DEVINFO_DATA);
+#define         SetupDiCreateDeviceInfo WINELIB_NAME_AW(SetupDiCreateDeviceInfo)
+BOOL     WINAPI SetupDiCreateDeviceInterfaceA(HDEVINFO, PSP_DEVINFO_DATA, const GUID *, PCSTR, DWORD, PSP_DEVICE_INTERFACE_DATA);
+BOOL     WINAPI SetupDiCreateDeviceInterfaceW(HDEVINFO, PSP_DEVINFO_DATA, const GUID *, PCWSTR, DWORD, PSP_DEVICE_INTERFACE_DATA);
+#define         SetupDiCreateDeviceInterface WINELIB_NAME_AW(SetupDiCreateDeviceInterface)
+HKEY     WINAPI SetupDiCreateDeviceInterfaceRegKeyA(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD, REGSAM, HINF, PCSTR);
+HKEY     WINAPI SetupDiCreateDeviceInterfaceRegKeyW(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD, REGSAM, HINF, PCWSTR);
+#define         SetupDiCreateDeviceInterfaceRegKey WINELIB_NAME_AW(SetupDiCreateDeviceInterfaceRegKey)
+HKEY     WINAPI SetupDiCreateDevRegKeyA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD, HINF, PCSTR);
+HKEY     WINAPI SetupDiCreateDevRegKeyW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD, HINF, PCWSTR);
+#define         SetupDiCreateDevRegKey WINELIB_NAME_AW(SetupDiCreateDevRegKey)
+BOOL     WINAPI SetupDiDeleteDeviceInfo(HDEVINFO, PSP_DEVINFO_DATA);
+BOOL     WINAPI SetupDiDeleteDeviceInterfaceData(HDEVINFO, PSP_DEVICE_INTERFACE_DATA);
+BOOL     WINAPI SetupDiDeleteDeviceInterfaceRegKey(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD);
+BOOL     WINAPI SetupDiDeleteDevRegKey(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD);
+BOOL     WINAPI SetupDiDestroyClassImageList(PSP_CLASSIMAGELIST_DATA);
+BOOL     WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO);
+BOOL     WINAPI SetupDiDestroyDriverInfoList(HDEVINFO, PSP_DEVINFO_DATA, DWORD);
+INT      WINAPI SetupDiDrawMiniIcon(HDC, RECT, INT, DWORD);
+BOOL     WINAPI SetupDiEnumDeviceInfo(HDEVINFO, DWORD, PSP_DEVINFO_DATA);
+BOOL     WINAPI SetupDiEnumDeviceInterfaces(HDEVINFO, PSP_DEVINFO_DATA, const GUID *, DWORD, PSP_DEVICE_INTERFACE_DATA);
+BOOL     WINAPI SetupDiEnumDriverInfoA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, PSP_DRVINFO_DATA_A);
+BOOL     WINAPI SetupDiEnumDriverInfoW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, PSP_DRVINFO_DATA_W);
+#define         SetupDiEnumDriverInfo WINELIB_NAME_AW(SetupDiEnumDriverInfo)
+BOOL     WINAPI SetupDiGetActualModelsSectionA(PINFCONTEXT, PSP_ALTPLATFORM_INFO, PSTR, DWORD, PDWORD, PVOID);
+BOOL     WINAPI SetupDiGetActualModelsSectionW(PINFCONTEXT, PSP_ALTPLATFORM_INFO, PWSTR, DWORD, PDWORD, PVOID);
+#define         SetupDiGetActualModelsSection WINELIB_NAME_AW(SetupDiGetActualModelsSection)
+BOOL     WINAPI SetupDiGetActualSectionToInstallA(HINF, PCSTR, PSTR, DWORD, PDWORD, PSTR *);
+BOOL     WINAPI SetupDiGetActualSectionToInstallW(HINF, PCWSTR, PWSTR, DWORD, PDWORD, PWSTR *);
+#define         SetupDiGetActualSectionToInstall WINELIB_NAME_AW(SetupDiGetActualSectionToInstall)
+BOOL     WINAPI SetupDiGetActualSectionToInstallExA(HINF, PCSTR, PSTR, DWORD, PDWORD, PSTR *, PVOID);
+BOOL     WINAPI SetupDiGetActualSectionToInstallExW(HINF, PCWSTR, PWSTR, DWORD, PDWORD, PWSTR *, PVOID);
+#define         SetupDiGetActualSectionToInstallEx WINELIB_NAME_AW(SetupDiGetActualSectionToInstalExl)
+BOOL     WINAPI SetupDiGetClassBitmapIndex(const GUID *, PINT);
+BOOL     WINAPI SetupDiGetClassDescriptionA(const GUID*, PSTR, DWORD, PDWORD);
+BOOL     WINAPI SetupDiGetClassDescriptionW(const GUID*, PWSTR, DWORD, PDWORD);
+#define         SetupDiGetClassDescription WINELIB_NAME_AW(SetupDiGetClassDescription)
+BOOL     WINAPI SetupDiGetClassDescriptionExA(const GUID*, PSTR, DWORD, PDWORD, PCSTR, PVOID);
+BOOL     WINAPI SetupDiGetClassDescriptionExW(const GUID*, PWSTR, DWORD, PDWORD, PCWSTR, PVOID);
+#define         SetupDiGetClassDescriptionEx WINELIB_NAME_AW(SetupDiGetClassDescriptionEx)
+BOOL     WINAPI SetupDiGetClassDevPropertySheetsA(HDEVINFO, PSP_DEVINFO_DATA, LPPROPSHEETHEADERA, DWORD, PDWORD, DWORD);
+BOOL     WINAPI SetupDiGetClassDevPropertySheetsW(HDEVINFO, PSP_DEVINFO_DATA, LPPROPSHEETHEADERW, DWORD, PDWORD, DWORD);
+#define         SetupDiGetClassDevPropertySheets WINELIB_NAME_AW(SetupDiGetClassDevPropertySheets)
+HDEVINFO WINAPI SetupDiGetClassDevsA(CONST GUID *,LPCSTR,HWND,DWORD);
+HDEVINFO WINAPI SetupDiGetClassDevsW(CONST GUID *,LPCWSTR,HWND,DWORD);
+#define         SetupDiGetClassDevs WINELIB_NAME_AW(SetupDiGetClassDevs)
+HDEVINFO WINAPI SetupDiGetClassDevsExA(const GUID *, PCSTR, HWND, DWORD, HDEVINFO, PCSTR, PVOID);
+HDEVINFO WINAPI SetupDiGetClassDevsExW(const GUID *, PCWSTR, HWND, DWORD, HDEVINFO, PCWSTR, PVOID);
+#define         SetupDiGetClassDevsEx WINELIB_NAME_AW(SetupDiGetClassDevsEx)
+BOOL     WINAPI SetupDiGetClassImageIndex(PSP_CLASSIMAGELIST_DATA, const GUID *, PINT);
+BOOL     WINAPI SetupDiGetClassImageList(PSP_CLASSIMAGELIST_DATA);
+BOOL     WINAPI SetupDiGetClassImageListExA(PSP_CLASSIMAGELIST_DATA, PCSTR, PVOID);
+BOOL     WINAPI SetupDiGetClassImageListExW(PSP_CLASSIMAGELIST_DATA, PCWSTR, PVOID);
+#define         SetupDiGetClassImageListEx WINELIB_NAME_AW(SetupDiGetClassImageListEx)
+BOOL     WINAPI SetupDiGetClassInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD, PDWORD);
+BOOL     WINAPI SetupDiGetClassInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD, PDWORD);
+#define         SetupDiGetClassInstallParams WINELIB_NAME_AW(SetupDiGetClassInstallParams)
+BOOL     WINAPI SetupDiGetClassRegistryPropertyA(const GUID *, DWORD, PDWORD, PBYTE, DWORD, PDWORD, PCSTR, PVOID);
+BOOL     WINAPI SetupDiGetClassRegistryPropertyW(const GUID *, DWORD, PDWORD, PBYTE, DWORD, PDWORD, PCWSTR, PVOID);
+#define         SetupDiGetClassRegistryProperty WINELIB_NAME_AW(SetupDiGetClassRegistryProperty)
+BOOL     WINAPI SetupDiGetCustomDevicePropertyA(HDEVINFO, PSP_DEVINFO_DATA, PCSTR, DWORD, PDWORD, PBYTE, DWORD, PDWORD);
+BOOL     WINAPI SetupDiGetCustomDevicePropertyW(HDEVINFO, PSP_DEVINFO_DATA, PCWSTR, DWORD, PDWORD, PBYTE, DWORD, PDWORD);
+#define         SetupDiGetCustomDeviceProperty WINELIB_NAME_AW(SetupDiGetCustomDeviceProperty)
+BOOL     WINAPI SetupDiGetDeviceInfoListClass(HDEVINFO, LPGUID);
+BOOL     WINAPI SetupDiGetDeviceInfoListDetailA(HDEVINFO, PSP_DEVINFO_LIST_DETAIL_DATA_A);
+BOOL     WINAPI SetupDiGetDeviceInfoListDetailW(HDEVINFO, PSP_DEVINFO_LIST_DETAIL_DATA_W);
+#define         SetupDiGetDeviceInfoListDetail WINELIB_NAME_AW(SetupDiGetDeviceInfoListDetail)
+BOOL     WINAPI SetupDiGetDeviceInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_A);
+BOOL     WINAPI SetupDiGetDeviceInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_W);
+#define         SetupDiGetDeviceInstallParams WINELIB_NAME_AW(SetupDiGetDeviceInstallParams)
+BOOL     WINAPI SetupDiGetDeviceInstanceIdA(HDEVINFO, PSP_DEVINFO_DATA, PSTR, DWORD, PDWORD);
+BOOL     WINAPI SetupDiGetDeviceInstanceIdW(HDEVINFO, PSP_DEVINFO_DATA, PWSTR, DWORD, PDWORD);
+#define         SetupDiGetDeviceInstanceId WINELIB_NAME_AW(SetupDiGetDeviceInstanceId)
+BOOL     WINAPI SetupDiGetDeviceInterfaceAlias(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, const GUID *, PSP_DEVICE_INTERFACE_DATA);
+BOOL     WINAPI SetupDiGetDeviceInterfaceDetailA(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, PSP_DEVICE_INTERFACE_DETAIL_DATA_A,
+                                                 DWORD, PDWORD, PSP_DEVINFO_DATA);
+BOOL     WINAPI SetupDiGetDeviceInterfaceDetailW(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, PSP_DEVICE_INTERFACE_DETAIL_DATA_W,
+                                                 DWORD, PDWORD, PSP_DEVINFO_DATA);
+#define         SetupDiGetDeviceInterfaceDetail WINELIB_NAME_AW(SetupDiGetDeviceInterfaceDetail)
+BOOL     WINAPI SetupDiGetDeviceRegistryPropertyA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD);
+BOOL     WINAPI SetupDiGetDeviceRegistryPropertyW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD);
+BOOL     WINAPI SetupDiGetDriverInfoDetailA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A, PSP_DRVINFO_DETAIL_DATA_A, DWORD, PDWORD);
+BOOL     WINAPI SetupDiGetDriverInfoDetailW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W, PSP_DRVINFO_DETAIL_DATA_W, DWORD, PDWORD);
+#define         SetupDiGetDriverInfoDetail WINELIB_NAME_AW(SetupDiGetDriverInfoDetail)
+BOOL     WINAPI SetupDiGetDriverInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A, PSP_DRVINSTALL_PARAMS);
+BOOL     WINAPI SetupDiGetDriverInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W, PSP_DRVINSTALL_PARAMS);
+#define         SetupDiGetDriverInstallParams WINELIB_NAME_AW(SetupDiGetDriverInstallParams)
+BOOL     WINAPI SetupDiGetHwProfileFriendlyNameA(DWORD, PSTR, DWORD, PDWORD);
+BOOL     WINAPI SetupDiGetHwProfileFriendlyNameW(DWORD, PWSTR, DWORD, PDWORD);
+#define         SetupDiGetHwProfileFriendlyName WINELIB_NAME_AW(SetupDiGetHwProfileFriendlyName)
+BOOL     WINAPI SetupDiGetHwProfileFriendlyNameExA(DWORD, PSTR, DWORD, PDWORD, PCSTR, PVOID);
+BOOL     WINAPI SetupDiGetHwProfileFriendlyNameExW(DWORD, PWSTR, DWORD, PDWORD, PCWSTR, PVOID);
+#define         SetupDiGetHwProfileFriendlyNameEx WINELIB_NAME_AW(SetupDiGetHwProfileFriendlyNameEx)
+BOOL     WINAPI SetupDiGetHwProfileList(PDWORD, DWORD, PDWORD, PDWORD);
+BOOL     WINAPI SetupDiGetHwProfileListExA(PDWORD, DWORD, PDWORD, PDWORD, PCSTR, PVOID);
+BOOL     WINAPI SetupDiGetHwProfileListExW(PDWORD, DWORD, PDWORD, PDWORD, PCWSTR, PVOID);
+#define         SetupDiGetHwProfileListEx WINELIB_NAME_AW(SetupDiGetHwProfileListEx)
+BOOL     WINAPI SetupDiGetINFClassA(PCSTR, LPGUID, PSTR, DWORD, PDWORD);
+BOOL     WINAPI SetupDiGetINFClassW(PCWSTR, LPGUID, PWSTR, DWORD, PDWORD);
+#define         SetupDiGetINFClass WINELIB_NAME_AW(SetupDiGetINFClass)
+BOOL     WINAPI SetupDiGetSelectedDevice(HDEVINFO, PSP_DEVINFO_DATA);
+BOOL     WINAPI SetupDiGetSelectedDriverA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A);
+BOOL     WINAPI SetupDiGetSelectedDriverW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W);
+#define         SetupDiGetSelectedDriver WINELIB_NAME_AW(SetupDiGetSelectedDriver)
+HPROPSHEETPAGE WINAPI SetupDiGetWizardPage(HDEVINFO, PSP_DEVINFO_DATA, PSP_INSTALLWIZARD_DATA, DWORD, DWORD);
+BOOL     WINAPI SetupDiInstallClassA(HWND, PCSTR, DWORD, HSPFILEQ);
+BOOL     WINAPI SetupDiInstallClassW(HWND, PCWSTR, DWORD, HSPFILEQ);
+#define         SetupDiInstallClass WINELIB_NAME_AW(SetupDiInstallClass)
+BOOL     WINAPI SetupDiInstallClassExA(HWND, PCSTR, DWORD, HSPFILEQ, const GUID *, PVOID, PVOID);
+BOOL     WINAPI SetupDiInstallClassExW(HWND, PCWSTR, DWORD, HSPFILEQ, const GUID *, PVOID, PVOID);
+#define         SetupDiInstallClassEx WINELIB_NAME_AW(SetupDiInstallClassEx)
+BOOL     WINAPI SetupDiInstallDevice(HDEVINFO, PSP_DEVINFO_DATA);
+BOOL     WINAPI SetupDiInstallDeviceInterfaces(HDEVINFO, PSP_DEVINFO_DATA);
+BOOL     WINAPI SetupDiInstallDriverFiles(HDEVINFO, PSP_DEVINFO_DATA);
+BOOL     WINAPI SetupDiLoadClassIcon(const GUID *, HICON *, PINT);
+HKEY     WINAPI SetupDiOpenClassRegKey(const GUID*, REGSAM);
+HKEY     WINAPI SetupDiOpenClassRegKeyExA(const GUID*, REGSAM, DWORD, PCSTR, PVOID);
+HKEY     WINAPI SetupDiOpenClassRegKeyExW(const GUID*, REGSAM, DWORD, PCWSTR, PVOID);
+#define         SetupDiOpenClassRegKeyEx WINELIB_NAME_AW(SetupDiOpenClassRegKeyEx)
+BOOL     WINAPI SetupDiOpenDeviceInfoA(HDEVINFO, PCSTR, HWND, DWORD, PSP_DEVINFO_DATA);
+BOOL     WINAPI SetupDiOpenDeviceInfoW(HDEVINFO, PCWSTR, HWND, DWORD, PSP_DEVINFO_DATA);
+#define         SetupDiOpenDeviceInfo WINELIB_NAME_AW(SetupDiOpenDeviceInfo)
+BOOL     WINAPI SetupDiOpenDeviceInterfaceA(HDEVINFO, PCSTR, DWORD, PSP_DEVICE_INTERFACE_DATA);
+BOOL     WINAPI SetupDiOpenDeviceInterfaceW(HDEVINFO, PCWSTR, DWORD, PSP_DEVICE_INTERFACE_DATA);
+#define         SetupDiOpenDeviceInterface WINELIB_NAME_AW(SetupDiOpenDeviceInterface)
+BOOL     WINAPI SetupDiOpenDeviceInterfaceRegKey(HDEVINFO, PSP_DEVINFO_DATA, DWORD, REGSAM);
+HKEY     WINAPI SetupDiOpenDevRegKey(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD, REGSAM);
+BOOL     WINAPI SetupDiRegisterCoDeviceInstallers(HDEVINFO, PSP_DEVINFO_DATA);
+BOOL     WINAPI SetupDiRegisterDeviceInfo(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PSP_DETSIG_CMPPROC, PVOID, PSP_DEVINFO_DATA);
+BOOL     WINAPI SetupDiRemoveDevice(HDEVINFO, PSP_DEVINFO_DATA);
+BOOL     WINAPI SetupDiRemoveDeviceInterface(HDEVINFO, PSP_DEVICE_INTERFACE_DATA);
+BOOL     WINAPI SetupDiRestartDevices(HDEVINFO, PSP_DEVINFO_DATA);
+BOOL     WINAPI SetupDiSelectBestCompatDrv(HDEVINFO, PSP_DEVINFO_DATA);
+BOOL     WINAPI SetupDiSelectDevice(HDEVINFO, PSP_DEVINFO_DATA);
+BOOL     WINAPI SetupDiSelectOEMDrv(HWND, HDEVINFO, PSP_DEVINFO_DATA);
+BOOL     WINAPI SetupDiSetClassInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD);
+BOOL     WINAPI SetupDiSetClassInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD);
+#define         SetupDiSetClassInstallParams WINELIB_NAME_AW(SetupDiSetClassInstallParams)
+BOOL     WINAPI SetupDiSetClassRegistryPropertyA(const GUID *, DWORD, const BYTE *, DWORD, PCSTR, PVOID);
+BOOL     WINAPI SetupDiSetClassRegistryPropertyW(const GUID *, DWORD, const BYTE *, DWORD, PCWSTR, PVOID);
+#define         SetupDiSetClassRegistryProperty WINELIB_NAME_AW(SetupDiSetClassRegistryProperty)
+BOOL     WINAPI SetupDiSetDeviceInterfaceDefault(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD, PVOID);
+BOOL     WINAPI SetupDiSetDeviceInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_A);
+BOOL     WINAPI SetupDiSetDeviceInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_W);
+#define         SetupDiSetDeviceInstallParams WINELIB_NAME_AW(SetupDiSetDeviceInstallParams)
+BOOL     WINAPI SetupDiSetDeviceRegistryPropertyA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, const BYTE *, DWORD);
+BOOL     WINAPI SetupDiSetDeviceRegistryPropertyW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, const BYTE *, DWORD);
+#define         SetupDiSetDeviceRegistryProperty WINELIB_NAME_AW(SetupDiSetDeviceRegistryProperty)
+BOOL     WINAPI SetupDiSetDriverInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A, PSP_DRVINSTALL_PARAMS);
+BOOL     WINAPI SetupDiSetDriverInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W, PSP_DRVINSTALL_PARAMS);
+#define         SetupDiSetDriverInstallParams WINELIB_NAME_AW(SetupDiSetDriverInstallParams)
+BOOL     WINAPI SetupDiSetSelectedDriverA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A);
+BOOL     WINAPI SetupDiSetSelectedDriverW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W);
+#define         SetupDiSetSelectedDriver WINELIB_NAME_AW(SetupDiSetSelectedDriver)
+BOOL     WINAPI SetupDiUnremoveDevice(HDEVINFO, PSP_DEVINFO_DATA);
+HDSKSPC  WINAPI SetupDuplicateDiskSpaceListA(HDSKSPC, PVOID, DWORD, UINT);
+HDSKSPC  WINAPI SetupDuplicateDiskSpaceListW(HDSKSPC, PVOID, DWORD, UINT);
+#define         SetupDuplicateDiskSpaceList WINELIB_NAME_AW(SetupDuplicateDiskSpaceList)
+BOOL     WINAPI SetupEnumInfSectionsA(HINF, UINT, PSTR, SIZE, UINT *);
+BOOL     WINAPI SetupEnumInfSectionsW(HINF, UINT, PWSTR, SIZE, UINT *);
+#define         SetupEnumInfSections WINELIB_NAME_AW(SetupEnumInfSections)
+BOOL     WINAPI SetupFindFirstLineA( HINF hinf, PCSTR section, PCSTR key, INFCONTEXT *context );
+BOOL     WINAPI SetupFindFirstLineW( HINF hinf, PCWSTR section, PCWSTR key, INFCONTEXT *context );
+#define         SetupFindFirstLine WINELIB_NAME_AW(SetupFindFirstLine)
+BOOL     WINAPI SetupFindNextLine( PINFCONTEXT context_in, PINFCONTEXT context_out );
+BOOL     WINAPI SetupFindNextMatchLineA( PINFCONTEXT context_in, PCSTR key, PINFCONTEXT context_out );
+BOOL     WINAPI SetupFindNextMatchLineW( PINFCONTEXT context_in, PCWSTR key, PINFCONTEXT context_out );
+#define         SetupFindNextMatchLine WINELIB_NAME_AW(SetupFindNextMatchLine)
+BOOL     WINAPI SetupFreeSourceListA(PCSTR **, UINT);
+BOOL     WINAPI SetupFreeSourceListW(PCWSTR **, UINT);
+#define         SetupFreeSourceList WINELIB_NAME_AW(SetupFreeSourceList)
+BOOL     WINAPI SetupGetBackupInformationA(HSPFILEQ, PSP_BACKUP_QUEUE_PARAMS_A BackupParams);
+BOOL     WINAPI SetupGetBackupInformationW(HSPFILEQ, PSP_BACKUP_QUEUE_PARAMS_W BackupParams);
+#define         SetupGetBackupInformation WINELIB_NAME_AW(SetupGetBackupInformation)
+BOOL     WINAPI SetupGetBinaryField( PINFCONTEXT context, DWORD index, BYTE *buffer, DWORD size, LPDWORD required );
+DWORD    WINAPI SetupGetFieldCount( PINFCONTEXT context );
+DWORD    WINAPI SetupGetFileCompressionInfoA(PCSTR, PSTR *, PDWORD, PDWORD, PUINT);
+DWORD    WINAPI SetupGetFileCompressionInfoW(PCWSTR, PWSTR *, PDWORD, PDWORD, PUINT);
+#define         SetupGetFileCompressionInfo WINELIB_NAME_AW(SetupGetFileCompressionInfo)
+BOOL     WINAPI SetupGetFileCompressionInfoExA(PCSTR, PSTR, DWORD, PDWORD, PDWORD, PDWORD, PUINT);
+BOOL     WINAPI SetupGetFileCompressionInfoExW(PCWSTR, PWSTR, DWORD, PDWORD, PDWORD, PDWORD, PUINT);
+#define         SetupGetFileCompressionInfoEx WINELIB_NAME_AW(SetupGetFileCompressionInfoEx)
+BOOL     WINAPI SetupGetFileQueueCount( HSPFILEQ, UINT, PUINT );
+BOOL     WINAPI SetupGetFileQueueFlags( HSPFILEQ, PDWORD );
+BOOL     WINAPI SetupGetInfFileListA(PCSTR, DWORD, PSTR, DWORD, PDWORD);
+BOOL     WINAPI SetupGetInfFileListW(PCWSTR, DWORD, PWSTR, DWORD, PDWORD);
+#define         SetupGetInfFileList WINELIB_NAME_AW(SetupGetFileList)
+BOOL     WINAPI SetupGetInfInformationA( LPCVOID, DWORD, PSP_INF_INFORMATION, DWORD, PDWORD);
+BOOL     WINAPI SetupGetInfInformationW( LPCVOID, DWORD, PSP_INF_INFORMATION, DWORD, PDWORD);
+#define         SetupGetInfInformation WINELIB_NAME_AW(SetupGetInfInformation)
+BOOL     WINAPI SetupGetIntField( PINFCONTEXT context, DWORD index, PINT result );
+BOOL     WINAPI SetupGetLineByIndexA( HINF, PCSTR, DWORD, INFCONTEXT * );
+BOOL     WINAPI SetupGetLineByIndexW( HINF, PCWSTR, DWORD, INFCONTEXT * );
+#define         SetupGetLineByIndex WINELIB_NAME_AW(SetupGetLineByIndex)
+LONG     WINAPI SetupGetLineCountA( HINF hinf, PCSTR section );
+LONG     WINAPI SetupGetLineCountW( HINF hinf, PCWSTR section );
+#define         SetupGetLineCount WINELIB_NAME_AW(SetupGetLineCount)
+BOOL     WINAPI SetupGetLineTextA( PINFCONTEXT context, HINF hinf, PCSTR section_name,PCSTR key_name, PSTR buffer, DWORD size, PDWORD required );
+BOOL     WINAPI SetupGetLineTextW( PINFCONTEXT context, HINF hinf, PCWSTR section_name, PCWSTR key_name, PWSTR buffer, DWORD size, PDWORD required );
+#define         SetupGetLineText WINELIB_NAME_AW(SetupGetLineText)
+BOOL     WINAPI SetupGetMultiSzFieldA( PINFCONTEXT context, DWORD index, PSTR buffer, DWORD size, LPDWORD required );
+BOOL     WINAPI SetupGetMultiSzFieldW( PINFCONTEXT context, DWORD index, PWSTR buffer, DWORD size, LPDWORD required );
+#define         SetupGetMultiSzField WINELIB_NAME_AW(SetupGetMultiSzField)
+BOOL     WINAPI SetupGetNonInteractiveMode(void);
+BOOL     WINAPI SetupGetSourceFileLocationA( HINF hinf, PINFCONTEXT context, PCSTR filename, PUINT source_id, PSTR buffer, DWORD buffer_size, PDWORD required_size );
+BOOL     WINAPI SetupGetSourceFileLocationW( HINF hinf, PINFCONTEXT context, PCWSTR filename, PUINT source_id, PWSTR buffer, DWORD buffer_size, PDWORD required_size );
+#define         SetupGetSourceFileLocation WINELIB_NAME_AW(SetupGetSourceFileLocation)
+BOOL     WINAPI SetupGetSourceFileSizeA(HINF, PINFCONTEXT, PCSTR, PCSTR, PDWORD, UINT);
+BOOL     WINAPI SetupGetSourceFileSizeW(HINF, PINFCONTEXT, PCWSTR, PCWSTR, PDWORD, UINT);
+#define         SetupGetSourceFileSize WINELIB_NAME_AW(SetupGetSourceFileSize)
+BOOL     WINAPI SetupGetSourceInfoA( HINF hinf, UINT source_id, UINT info, PSTR buffer, DWORD buffer_size, LPDWORD required_size );
+BOOL     WINAPI SetupGetSourceInfoW( HINF hinf, UINT source_id, UINT info, PWSTR buffer, DWORD buffer_size, LPDWORD required_size );
+#define         SetupGetSourceInfo WINELIB_NAME_AW(SetupGetSourceInfo)
+BOOL     WINAPI SetupGetStringFieldA( PINFCONTEXT context, DWORD index, PSTR buffer, DWORD size, PDWORD required );
+BOOL     WINAPI SetupGetStringFieldW( PINFCONTEXT context, DWORD index, PWSTR buffer, DWORD size, PDWORD required );
+#define         SetupGetStringField WINELIB_NAME_AW(SetupGetStringField)
+BOOL     WINAPI SetupGetTargetPathA( HINF hinf, PINFCONTEXT context, PCSTR section, PSTR buffer, DWORD buffer_size, PDWORD required_size );
+BOOL     WINAPI SetupGetTargetPathW( HINF hinf, PINFCONTEXT context, PCWSTR section, PWSTR buffer, DWORD buffer_size, PDWORD required_size );
+#define         SetupGetTargetPath WINELIB_NAME_AW(SetupGetTargetPath)
+PVOID    WINAPI SetupInitDefaultQueueCallback( HWND );
+PVOID    WINAPI SetupInitDefaultQueueCallbackEx( HWND, HWND, UINT, DWORD, PVOID );
+HSPFILELOG WINAPI SetupInitializeFileLogA(PCSTR, DWORD);
+HSPFILELOG WINAPI SetupInitializeFileLogW(PCWSTR, DWORD);
+#define           SetupInitializeFileLog WINELIB_NAME_AW(SetupInitializeFileLog)
+BOOL     WINAPI SetupInstallFileA(HINF, PINFCONTEXT, PCSTR, PCSTR, PCSTR, DWORD, PSP_FILE_CALLBACK_A, PVOID);
+BOOL     WINAPI SetupInstallFileW(HINF, PINFCONTEXT, PCWSTR, PCWSTR, PCWSTR, DWORD, PSP_FILE_CALLBACK_W, PVOID);
+#define         SetupInstallFile WINELIB_NAME_AW(SetupInstallFile)
+BOOL     WINAPI SetupInstallFileExA(HINF, PINFCONTEXT, PCSTR, PCSTR, PCSTR, DWORD, PSP_FILE_CALLBACK_A, PVOID, PBOOL);
+BOOL     WINAPI SetupInstallFileExW(HINF, PINFCONTEXT, PCWSTR, PCWSTR, PCWSTR, DWORD, PSP_FILE_CALLBACK_W, PVOID, PBOOL);
+#define         SetupInstallFileEx WINELIB_NAME_AW(SetupInstallFileEx)
+BOOL     WINAPI SetupInstallFilesFromInfSectionA( HINF, HINF, HSPFILEQ, PCSTR, PCSTR, UINT );
+BOOL     WINAPI SetupInstallFilesFromInfSectionW( HINF, HINF, HSPFILEQ, PCWSTR, PCWSTR, UINT );
+#define         SetupInstallFilesFromInfSection WINELIB_NAME_AW(SetupInstallFilesFromInfSection)
+BOOL     WINAPI SetupInstallFromInfSectionA(HWND,HINF,PCSTR,UINT,HKEY,PCSTR,UINT,
+                                            PSP_FILE_CALLBACK_A,PVOID,HDEVINFO,PSP_DEVINFO_DATA);
+BOOL     WINAPI SetupInstallFromInfSectionW(HWND,HINF,PCWSTR,UINT,HKEY,PCWSTR,UINT,
+                                            PSP_FILE_CALLBACK_W,PVOID,HDEVINFO,PSP_DEVINFO_DATA);
+#define         SetupInstallFromInfSection WINELIB_NAME_AW(SetupInstallFromInfSection)
+BOOL     WINAPI SetupInstallServicesFromInfSectionA(HINF, PCSTR, DWORD);
+BOOL     WINAPI SetupInstallServicesFromInfSectionW(HINF, PCWSTR, DWORD);
+#define         SetupInstallServicesFromInfSection WINELIB_NAME_AW(SetupInstallServicesFromInfSection)
+BOOL     WINAPI SetupInstallServicesFromInfSectionExA(HINF, PCSTR, DWORD, HDEVINFO, PSP_DEVINFO_DATA, PVOID, PVOID);
+BOOL     WINAPI SetupInstallServicesFromInfSectionExW(HINF, PCWSTR, DWORD, HDEVINFO, PSP_DEVINFO_DATA, PVOID, PVOID);
+#define         SetupInstallServicesFromInfSectionEx WINELIB_NAME_AW(SetupInstallServicesFromInfSectionEx)
+BOOL     WINAPI SetupIterateCabinetA(PCSTR, DWORD, PSP_FILE_CALLBACK_A, PVOID);
+BOOL     WINAPI SetupIterateCabinetW(PCWSTR, DWORD, PSP_FILE_CALLBACK_W, PVOID);
+#define         SetupIterateCabinet WINELIB_NAME_AW(SetupIterateCabinet)
+BOOL     WINAPI SetupLogErrorA(LPCSTR,LogSeverity);
+BOOL     WINAPI SetupLogErrorW(LPCWSTR,LogSeverity);
+#define         SetupLogError WINELIB_NAME_AW(SetupLogError)
+BOOL     WINAPI SetupLogFileA(HSPFILELOG, PCSTR, PCSTR, PCSTR, DWORD, PCSTR, PCSTR, PCSTR, DWORD);
+BOOL     WINAPI SetupLogFileW(HSPFILELOG, PCWSTR, PCWSTR, PCWSTR, DWORD, PCWSTR, PCWSTR, PCWSTR, DWORD);
+#define         SetupLogFile WINELIB_NAME_AW(SetupLogFile)
+BOOL     WINAPI SetupOpenAppendInfFileA( PCSTR, HINF, UINT * );
+BOOL     WINAPI SetupOpenAppendInfFileW( PCWSTR, HINF, UINT * );
+#define         SetupOpenAppendInfFile WINELIB_NAME_AW(SetupOpenAppendInfFile)
+HSPFILEQ WINAPI SetupOpenFileQueue(void);
+HINF     WINAPI SetupOpenInfFileA( PCSTR name, PCSTR pszclass, DWORD style, UINT *error );
+HINF     WINAPI SetupOpenInfFileW( PCWSTR name, PCWSTR pszclass, DWORD style, UINT *error );
+#define         SetupOpenInfFile WINELIB_NAME_AW(SetupOpenInfFile)
+BOOL     WINAPI SetupOpenLog(BOOL);
+HINF     WINAPI SetupOpenMasterInf( VOID );
+BOOL     WINAPI SetupPrepareQueueForRestoreA(HSPFILEQ, PCSTR, DWORD);
+BOOL     WINAPI SetupPrepareQueueForRestoreW(HSPFILEQ, PCWSTR, DWORD);
+#define         SetupPrepareQueueForRestore WINELIB_NAME_AW(SetupPrepareQueueForRestore)
+UINT     WINAPI SetupPromptForDiskA(HWND, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, DWORD, PSTR, DWORD, PDWORD);
+UINT     WINAPI SetupPromptForDiskW(HWND, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, DWORD, PWSTR, DWORD, PDWORD);
+#define         SetupPromptForDisk WINELIB_NAME_AW(SetupPromptForDisk)
+INT      WINAPI SetupPromptReboot( HSPFILEQ, HWND, BOOL);
+BOOL     WINAPI SetupQueryDrivesInDiskSpaceListA(HDSKSPC, PSTR, DWORD, PDWORD);
+BOOL     WINAPI SetupQueryDrivesInDiskSpaceListW(HDSKSPC, PWSTR, DWORD, PDWORD);
+#define         SetupQueryDrivesInDiskSpaceList WINELIB_NAME_AW(SetupQueryDrivesInDiskSpaceList)
+BOOL     WINAPI SetupQueryFileLogA(HSPFILELOG, PCSTR, PCSTR, SetupFileLogInfo, PSTR, DWORD, PDWORD);
+BOOL     WINAPI SetupQueryFileLogW(HSPFILELOG, PCWSTR, PCWSTR, SetupFileLogInfo, PWSTR, DWORD, PDWORD);
+#define         SetupQueryFileLog WINELIB_NAME_AW(SetupQueryFileLog)
+BOOL     WINAPI SetupQueryInfFileInformationA(PSP_INF_INFORMATION, UINT, PSTR, DWORD, PDWORD);
+BOOL     WINAPI SetupQueryInfFileInformationW(PSP_INF_INFORMATION, UINT, PWSTR, DWORD, PDWORD);
+#define         SetupQueryInfFileInformation WINELIB_NAME_AW(SetupQueryInFileInformation)
+BOOL     WINAPI SetupQueryInfOriginalFileInformationA(PSP_INF_INFORMATION, UINT, PSP_ALTPLATFORM_INFO, PSP_ORIGINAL_FILE_INFO_A);
+BOOL     WINAPI SetupQueryInfOriginalFileInformationW(PSP_INF_INFORMATION, UINT, PSP_ALTPLATFORM_INFO, PSP_ORIGINAL_FILE_INFO_W);
+#define         SetupQueryInfOriginalFileInformation WINELIB_NAME_AW(SetupQueryInfOriginalFileInformation)
+BOOL     WINAPI SetupQueryInfVersionInformationA(PSP_INF_INFORMATION, UINT, PCSTR, PSTR, DWORD, PDWORD);
+BOOL     WINAPI SetupQueryInfVersionInformationW(PSP_INF_INFORMATION, UINT, PCWSTR, PWSTR, DWORD, PDWORD);
+#define         SetupQueryInfVersionInformation WINELIB_NAME_AW(SetupQueryInfVersionInformation)
+BOOL     WINAPI SetupQuerySourceListA(DWORD, PCSTR **, PUINT);
+BOOL     WINAPI SetupQuerySourceListW(DWORD, PCWSTR **, PUINT);
+#define         SetupQuerySourceList WINELIB_NAME_AW(SetupQuerySourceList)
+BOOL     WINAPI SetupQuerySpaceRequiredOnDriveA(HDSKSPC, PCSTR, LONGLONG *, PVOID, UINT);
+BOOL     WINAPI SetupQuerySpaceRequiredOnDriveW(HDSKSPC, PCWSTR, LONGLONG *, PVOID, UINT);
+#define         SetupQuerySpaceRequiredOnDrive WINELIB_NAME_AW(SetupQuerySpaceRequiredOnDrive)
+BOOL     WINAPI SetupQueueCopyA(HSPFILEQ,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,DWORD);
+BOOL     WINAPI SetupQueueCopyW(HSPFILEQ,PCWSTR,PCWSTR,PCWSTR,PCWSTR,PCWSTR,PCWSTR,PCWSTR,DWORD);
+#define         SetupQueueCopy WINELIB_NAME_AW(SetupQueueCopy)
+BOOL     WINAPI SetupQueueCopyIndirectA( PSP_FILE_COPY_PARAMS_A );
+BOOL     WINAPI SetupQueueCopyIndirectW( PSP_FILE_COPY_PARAMS_W );
+#define         SetupQueueCopyIndirect WINELIB_NAME_AW(SetupQueueCopyIndirect)
+BOOL     WINAPI SetupQueueCopySectionA( HSPFILEQ, PCSTR, HINF, HINF, PCSTR, DWORD );
+BOOL     WINAPI SetupQueueCopySectionW( HSPFILEQ, PCWSTR, HINF, HINF, PCWSTR, DWORD );
+#define         SetupQueueCopySection WINELIB_NAME_AW(SetupQueueCopySection)
+BOOL     WINAPI SetupQueueDefaultCopyA( HSPFILEQ, HINF, PCSTR, PCSTR, PCSTR, DWORD );
+BOOL     WINAPI SetupQueueDefaultCopyW( HSPFILEQ, HINF, PCWSTR, PCWSTR, PCWSTR, DWORD );
+#define         SetupQueueDefaultCopy WINELIB_NAME_AW(SetupQueueDefaultCopy)
+BOOL     WINAPI SetupQueueDeleteA( HSPFILEQ, PCSTR, PCSTR );
+BOOL     WINAPI SetupQueueDeleteW( HSPFILEQ, PCWSTR, PCWSTR );
+#define         SetupQueueDelete WINELIB_NAME_AW(SetupQueueDelete)
+BOOL     WINAPI SetupQueueDeleteSectionA( HSPFILEQ, HINF, HINF, PCSTR );
+BOOL     WINAPI SetupQueueDeleteSectionW( HSPFILEQ, HINF, HINF, PCWSTR );
+#define         SetupQueueDeleteSection WINELIB_NAME_AW(SetupQueueDeleteSection)
+BOOL     WINAPI SetupQueueRenameA( HSPFILEQ, PCSTR, PCSTR, PCSTR, PCSTR );
+BOOL     WINAPI SetupQueueRenameW( HSPFILEQ, PCWSTR, PCWSTR, PCWSTR, PCWSTR );
+#define         SetupQueueRename WINELIB_NAME_AW(SetupQueueRename)
+BOOL     WINAPI SetupQueueRenameSectionA( HSPFILEQ, HINF, HINF, PCSTR );
+BOOL     WINAPI SetupQueueRenameSectionW( HSPFILEQ, HINF, HINF, PCWSTR );
+#define         SetupQueueRenameSection WINELIB_NAME_AW(SetupQueueRenameSection)
+BOOL     WINAPI SetupRemoveFileLogEntryA(HSPFILELOG, PCSTR, PCSTR);
+BOOL     WINAPI SetupRemoveFileLogEntryW(HSPFILELOG, PCWSTR, PCWSTR);
+#define         SetupRemoveFileLogEntry WINELIB_NAME_AW(SetupRemoveFileLogEntry)
+BOOL     WINAPI SetupRemoveFromDiskSpaceListA(HDSKSPC, PCSTR, UINT, PVOID, UINT);
+BOOL     WINAPI SetupRemoveFromDiskSpaceListW(HDSKSPC, PCWSTR, UINT, PVOID, UINT);
+#define         SetupRemoveFromDiskSpaceList WINELIB_NAME_AW(SetupRemoveFromDiskSpaceList)
+BOOL     WINAPI SetupRemoveInstallSectionFromDiskSpaceListA(HDSKSPC, HINF, HINF, PCSTR, PVOID, UINT);
+BOOL     WINAPI SetupRemoveInstallSectionFromDiskSpaceListW(HDSKSPC, HINF, HINF, PCWSTR, PVOID, UINT);
+#define         SetupRemoveInstallSectionFromDiskSpaceList WINELIB_NAME_AW(SetupRemoveInstallSectionFromDiskSpaceList)
+BOOL     WINAPI SetupRemoveSectionFromDiskSpaceListA(HDSKSPC, HINF, HINF, PCSTR, UINT, PVOID, UINT);
+BOOL     WINAPI SetupRemoveSectionFromDiskSpaceListW(HDSKSPC, HINF, HINF, PCWSTR, UINT, PVOID, UINT);
+#define         SetupRemoveSectionFromDiskSpaceList WINELIB_NAME_AW(SetupRemoveSectionFromDiskSpaceList)
+BOOL     WINAPI SetupRemoveFromSourceListA(DWORD, PCSTR);
+BOOL     WINAPI SetupRemoveFromSourceListW(DWORD, PCWSTR);
+#define         SetupRemoveFromSourceList WINELIB_NAME_AW(SetupRemoveFromSourceList)
+UINT     WINAPI SetupRenameErrorA( HWND, PCSTR, PCSTR, PCSTR, UINT, DWORD );
+UINT     WINAPI SetupRenameErrorW( HWND, PCWSTR, PCWSTR, PCWSTR, UINT, DWORD );
+#define         SetupRenameError WINELIB_NAME_AW(SetupRenameError)
+BOOL     WINAPI SetupScanFileQueueA( HSPFILEQ, DWORD, HWND, PSP_FILE_CALLBACK_A, PVOID, PDWORD );
+BOOL     WINAPI SetupScanFileQueueW( HSPFILEQ, DWORD, HWND, PSP_FILE_CALLBACK_W, PVOID, PDWORD );
+#define         SetupScanFileQueue WINELIB_NAME_AW(SetupScanFileQueue)
+BOOL     WINAPI SetupSetDirectoryIdA( HINF, DWORD, PCSTR );
+BOOL     WINAPI SetupSetDirectoryIdW( HINF, DWORD, PCWSTR );
+#define         SetupSetDirectoryId WINELIB_NAME_AW(SetupSetDirectoryId)
+BOOL     WINAPI SetupSetDirectoryIdExA( HINF, DWORD, PCSTR, DWORD, DWORD, PVOID );
+BOOL     WINAPI SetupSetDirectoryIdExW( HINF, DWORD, PCWSTR, DWORD, DWORD, PVOID );
+#define         SetupSetDirectoryIdEx WINELIB_NAME_AW(SetupSetDirectoryIdEx)
+BOOL     WINAPI SetupSetFileQueueAlternatePlatformA( HSPFILEQ, PSP_ALTPLATFORM_INFO, PCSTR );
+BOOL     WINAPI SetupSetFileQueueAlternatePlatformW( HSPFILEQ, PSP_ALTPLATFORM_INFO, PCWSTR );
+#define         SetupSetFileQueueAlternatePlatform WINELIB_NAME_AW(SetupSetFileQueueAlternatePlatform)
+BOOL     WINAPI SetupSetFileQueueFlags( HSPFILEQ, DWORD, DWORD );
+BOOL     WINAPI SetupSetNonInteractiveMode(BOOL);
+BOOL     WINAPI SetupSetPlatformPathOverrideA(PCSTR);
+BOOL     WINAPI SetupSetPlatformPathOverrideW(PCWSTR);
+#define         SetupSetPlatformPathOverride WINELIB_NAME_AW(SetupSetPlatformPathOverride)
+BOOL     WINAPI SetupSetSourceListA(DWORD, PCSTR *, UINT);
+BOOL     WINAPI SetupSetSourceListW(DWORD, PCWSTR *, UINT);
+#define         SetupSetSourceList WINELIB_NAME_AW(SetupSetSourceList)
+void     WINAPI SetupTermDefaultQueueCallback( PVOID );
+BOOL     WINAPI SetupTerminateFileLog(HSPFILELOG);
+BOOL     WINAPI SetupUninstallOEMInfA(PCSTR, DWORD, PVOID);
+BOOL     WINAPI SetupUninstallOEMInfW(PCWSTR, DWORD, PVOID);
+#define         SetupUninstallOEMInf WINELIB_NAME_AW(SetupUninstallOEMInf)
+BOOL     WINAPI SetupUninstallNewlyCopiedInfs(HSPFILEQ, DWORD, PVOID);
+BOOL     WINAPI SetupVerifyInfFileA(PCSTR, PSP_ALTPLATFORM_INFO, PSP_INF_SIGNER_INFO_A);
+BOOL     WINAPI SetupVerifyInfFileW(PCWSTR, PSP_ALTPLATFORM_INFO, PSP_INF_SIGNER_INFO_W);
+#define         SetupVerifyInfFile WINELIB_NAME_AW(SetupVerifyInfFile)
+DWORD    WINAPI StampFileSecurity(PCWSTR, PSECURITY_DESCRIPTOR);
+DWORD    WINAPI TakeOwnershipOfFile(PCWSTR);
+PSTR     WINAPI UnicodeToMultiByte(PCWSTR lpUnicodeStr, UINT uCodePage);
+BOOL     WINAPI UnmapAndCloseFile(HANDLE, HANDLE, PVOID);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#undef DECL_WINELIB_SETUPAPI_TYPE_AW
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _INC_SETUPAPI */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/sfc.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/sfc.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/sfc.h	(revision 16410)
@@ -0,0 +1,46 @@
+/*
+ * Definitions for the System File Checker (Windows File Protection)
+ *
+ * Copyright 2006 Detlef Riekenberg
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_SFC_H
+#define __WINE_SFC_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Types */
+
+typedef struct _PROTECTED_FILE_DATA {
+ WCHAR FileName[MAX_PATH];
+ DWORD FileNumber;
+} PROTECTED_FILE_DATA, *PPROTECTED_FILE_DATA;
+
+/* Functions */
+
+BOOL WINAPI SfcGetNextProtectedFile(HANDLE, PPROTECTED_FILE_DATA);
+BOOL WINAPI SfcIsFileProtected(HANDLE, LPCWSTR);
+BOOL WINAPI SfcIsKeyProtected(HKEY, LPCWSTR, REGSAM);
+BOOL WINAPI SfpVerifyFile(LPCSTR, LPSTR, DWORD);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/shdispid.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/shdispid.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/shdispid.h	(revision 16410)
@@ -0,0 +1,30 @@
+/*
+ * DispIds for Shell Interfaces
+ *
+ * Copyright (C) 2008 Robert Shearman
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _SHDISPID_H_
+#define _SHDISPID_H_
+
+#define DISPID_SELECTIONCHANGED     200
+#define DISPID_FILELISTENUMDONE     201
+#define DISPID_VERBINVOKED          202
+#define DISPID_DEFAULTVERBINVOKED   203
+#define DISPID_BEGINDRAG            204
+
+#endif /* defined _SHDISPID_H_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/shellapi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/shellapi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/shellapi.h	(revision 16410)
@@ -0,0 +1,515 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_SHELLAPI_H
+#define __WINE_SHELLAPI_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+#include <pshpack1.h>
+
+DECLARE_HANDLE(HDROP);
+
+/******************************************
+ * DragObject
+ */
+
+typedef struct _DRAGINFOA
+{	UINT uSize;
+	POINT pt;
+	BOOL fNC;
+	LPSTR   lpFileList;
+	DWORD grfKeyState;
+} DRAGINFOA, *LPDRAGINFOA;
+
+typedef struct _DRAGINFOW
+{	UINT uSize;
+	POINT pt;
+	BOOL fNC;
+	LPWSTR  lpFileList;
+	DWORD grfKeyState;
+} DRAGINFOW, *LPDRAGINFOW;
+
+DECL_WINELIB_TYPE_AW(DRAGINFO)
+DECL_WINELIB_TYPE_AW(LPDRAGINFO)
+
+void	WINAPI DragAcceptFiles(HWND hWnd, BOOL b);
+UINT	WINAPI DragQueryFileA(HDROP hDrop, UINT lFile, LPSTR lpszFile, UINT lLength);
+UINT	WINAPI DragQueryFileW(HDROP hDrop, UINT lFile, LPWSTR lpszFile, UINT lLength);
+#define        DragQueryFile WINELIB_NAME_AW(DragQueryFile)
+void	WINAPI DragFinish(HDROP h);
+BOOL	WINAPI DragQueryPoint(HDROP hDrop, POINT *p);
+
+
+
+/******************************************
+ * Application Bar
+ */
+#define ABM_NEW			0x00000000
+#define ABM_REMOVE		0x00000001
+#define ABM_QUERYPOS		0x00000002
+#define ABM_SETPOS		0x00000003
+#define ABM_GETSTATE		0x00000004
+#define ABM_GETTASKBARPOS	0x00000005
+#define ABM_ACTIVATE		0x00000006
+#define ABM_GETAUTOHIDEBAR	0x00000007
+#define ABM_SETAUTOHIDEBAR	0x00000008
+#define ABM_WINDOWPOSCHANGED	0x00000009
+
+#define ABN_STATECHANGE		0x00000000
+#define ABN_POSCHANGED		0x00000001
+#define ABN_FULLSCREENAPP	0x00000002
+#define ABN_WINDOWARRANGE	0x00000003
+
+#define ABS_AUTOHIDE		0x00000001
+#define ABS_ALWAYSONTOP		0x00000002
+
+#define ABE_LEFT		0
+#define ABE_TOP			1
+#define ABE_RIGHT		2
+#define ABE_BOTTOM		3
+
+typedef struct _AppBarData
+{	DWORD	cbSize;
+	HWND	hWnd;
+	UINT	uCallbackMessage;
+	UINT	uEdge;
+	RECT	rc;
+	LPARAM	lParam;
+} APPBARDATA, *PAPPBARDATA;
+
+UINT_PTR WINAPI SHAppBarMessage(DWORD,PAPPBARDATA);
+
+/******************************************
+ * SHGetFileInfo
+ */
+
+#define SHGFI_LARGEICON         0x000000000     /* get large icon */
+#define SHGFI_SMALLICON         0x000000001     /* get small icon */
+#define SHGFI_OPENICON          0x000000002     /* get open icon */
+#define SHGFI_SHELLICONSIZE     0x000000004     /* get shell size icon */
+#define SHGFI_PIDL              0x000000008     /* pszPath is a pidl */
+#define SHGFI_USEFILEATTRIBUTES 0x000000010     /* use passed dwFileAttribute */
+#define SHGFI_ADDOVERLAYS       0x000000020
+#define SHGFI_OVERLAYINDEX      0x000000040
+#define SHGFI_ICON              0x000000100     /* get icon */
+#define SHGFI_DISPLAYNAME       0x000000200     /* get display name */
+#define SHGFI_TYPENAME          0x000000400     /* get type name */
+#define SHGFI_ATTRIBUTES        0x000000800     /* get attributes */
+#define SHGFI_ICONLOCATION      0x000001000     /* get icon location */
+#define SHGFI_EXETYPE           0x000002000     /* return exe type */
+#define SHGFI_SYSICONINDEX      0x000004000     /* get system icon index */
+#define SHGFI_LINKOVERLAY       0x000008000     /* put a link overlay on icon */
+#define SHGFI_SELECTED          0x000010000     /* show icon in selected state */
+#define SHGFI_ATTR_SPECIFIED    0x000020000     /* get only specified attributes */
+
+typedef struct tagSHFILEINFOA
+{	HICON	hIcon;			/* icon */
+	int	iIcon;			/* icon index */
+	DWORD	dwAttributes;		/* SFGAO_ flags */
+	CHAR	szDisplayName[MAX_PATH];/* display name (or path) */
+	CHAR	szTypeName[80];		/* type name */
+} SHFILEINFOA;
+
+typedef struct tagSHFILEINFOW
+{	HICON	hIcon;			/* icon */
+	int	iIcon;			/* icon index */
+	DWORD	dwAttributes;		/* SFGAO_ flags */
+	WCHAR	szDisplayName[MAX_PATH];/* display name (or path) */
+	WCHAR	szTypeName[80];		/* type name */
+} SHFILEINFOW;
+
+DECL_WINELIB_TYPE_AW(SHFILEINFO)
+
+DWORD_PTR	WINAPI SHGetFileInfoA(LPCSTR,DWORD,SHFILEINFOA*,UINT,UINT);
+DWORD_PTR	WINAPI SHGetFileInfoW(LPCWSTR,DWORD,SHFILEINFOW*,UINT,UINT);
+#define  SHGetFileInfo WINELIB_NAME_AW(SHGetFileInfo)
+
+/******************************************
+ * SHSetFileInfo
+ */
+
+/******************************************
+* SHFileOperation
+*/
+#define FO_MOVE           0x0001
+#define FO_COPY           0x0002
+#define FO_DELETE         0x0003
+#define FO_RENAME         0x0004
+
+#define FOF_MULTIDESTFILES         0x0001
+#define FOF_CONFIRMMOUSE           0x0002
+#define FOF_SILENT                 0x0004
+#define FOF_RENAMEONCOLLISION      0x0008
+#define FOF_NOCONFIRMATION         0x0010
+#define FOF_WANTMAPPINGHANDLE      0x0020
+#define FOF_ALLOWUNDO              0x0040
+#define FOF_FILESONLY              0x0080
+#define FOF_SIMPLEPROGRESS         0x0100
+#define FOF_NOCONFIRMMKDIR         0x0200
+#define FOF_NOERRORUI              0x0400
+#define FOF_NOCOPYSECURITYATTRIBS  0x0800
+#define FOF_NORECURSION            0x1000  /* don't do recursion into directories */
+#define FOF_NO_CONNECTED_ELEMENTS  0x2000  /* don't do connected files */
+#define FOF_WANTNUKEWARNING        0x4000  /* during delete operation, warn if delete instead
+                                              of recycling (even if FOF_NOCONFIRMATION) */
+#define FOF_NORECURSEREPARSE       0x8000  /* don't do recursion into reparse points */
+
+typedef WORD FILEOP_FLAGS;
+
+#define PO_DELETE       0x0013
+#define PO_RENAME       0x0014
+#define PO_PORTCHANGE   0x0020
+#define PO_REN_PORT     (PO_RENAME | PO_PORTCHANGE)
+
+typedef WORD PRINTEROP_FLAGS;
+
+typedef struct _SHFILEOPSTRUCTA
+{ HWND          hwnd;
+  UINT          wFunc;
+  LPCSTR          pFrom;
+  LPCSTR          pTo;
+  FILEOP_FLAGS    fFlags;
+  BOOL          fAnyOperationsAborted;
+  LPVOID          hNameMappings;
+  LPCSTR          lpszProgressTitle;
+} SHFILEOPSTRUCTA, *LPSHFILEOPSTRUCTA;
+
+typedef struct _SHFILEOPSTRUCTW
+{ HWND          hwnd;
+  UINT          wFunc;
+  LPCWSTR         pFrom;
+  LPCWSTR         pTo;
+  FILEOP_FLAGS    fFlags;
+  BOOL          fAnyOperationsAborted;
+  LPVOID          hNameMappings;
+  LPCWSTR         lpszProgressTitle;
+} SHFILEOPSTRUCTW, *LPSHFILEOPSTRUCTW;
+
+#define  SHFILEOPSTRUCT WINELIB_NAME_AW(SHFILEOPSTRUCT)
+#define  LPSHFILEOPSTRUCT WINELIB_NAME_AW(LPSHFILEOPSTRUCT)
+
+int	WINAPI SHFileOperationA (LPSHFILEOPSTRUCTA lpFileOp);
+int	WINAPI SHFileOperationW (LPSHFILEOPSTRUCTW lpFileOp);
+#define  SHFileOperation WINELIB_NAME_AW(SHFileOperation)
+
+typedef struct _SHNAMEMAPPINGA
+{
+  LPSTR    pszOldPath;
+  LPSTR    pszNewPath;
+  int      cchOldPath;
+  int      cchNewPath;
+} SHNAMEMAPPINGA, *LPSHNAMEMAPPINGA;
+
+typedef struct _SHNAMEMAPPINGW
+{
+  LPWSTR   pszOldPath;
+  LPWSTR   pszNewPath;
+  int      cchOldPath;
+  int      cchNewPath;
+} SHNAMEMAPPINGW, *LPSHNAMEMAPPINGW;
+
+DECL_WINELIB_TYPE_AW(SHNAMEMAPPING)
+DECL_WINELIB_TYPE_AW(LPSHNAMEMAPPING)
+
+void WINAPI SHFreeNameMappings(HANDLE hNameMappings);
+
+/******************************************
+ * ShellExecute
+ */
+#define SE_ERR_SHARE            26
+#define SE_ERR_ASSOCINCOMPLETE  27
+#define SE_ERR_DDETIMEOUT       28
+#define SE_ERR_DDEFAIL          29
+#define SE_ERR_DDEBUSY          30
+#define SE_ERR_NOASSOC          31
+
+HINSTANCE	WINAPI ShellExecuteA(HWND,LPCSTR,LPCSTR,LPCSTR,LPCSTR,INT);
+HINSTANCE	WINAPI ShellExecuteW(HWND,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,INT);
+#define     ShellExecute WINELIB_NAME_AW(ShellExecute)
+
+#define SE_ERR_FNF              2       /* file not found */
+#define SE_ERR_PNF              3       /* path not found */
+#define SE_ERR_ACCESSDENIED     5       /* access denied */
+#define SE_ERR_OOM              8       /* out of memory */
+#define SE_ERR_DLLNOTFOUND      32
+#define SE_ERR_SHARE                    26
+#define SE_ERR_ASSOCINCOMPLETE          27
+#define SE_ERR_DDETIMEOUT               28
+#define SE_ERR_DDEFAIL                  29
+#define SE_ERR_DDEBUSY                  30
+#define SE_ERR_NOASSOC                  31
+
+#define SEE_MASK_CLASSNAME        0x00000001
+#define SEE_MASK_CLASSKEY         0x00000003
+#define SEE_MASK_IDLIST           0x00000004
+#define SEE_MASK_INVOKEIDLIST     0x0000000c
+#define SEE_MASK_ICON             0x00000010
+#define SEE_MASK_HOTKEY           0x00000020
+#define SEE_MASK_NOCLOSEPROCESS   0x00000040
+#define SEE_MASK_CONNECTNETDRV    0x00000080
+#define SEE_MASK_NOASYNC          0x00000100
+#define SEE_MASK_FLAG_DDEWAIT     SEE_MASK_NOASYNC
+#define SEE_MASK_DOENVSUBST       0x00000200
+#define SEE_MASK_FLAG_NO_UI       0x00000400
+#define SEE_MASK_UNICODE          0x00004000
+#define SEE_MASK_NO_CONSOLE       0x00008000
+#define SEE_MASK_ASYNCOK          0x00100000
+#define SEE_MASK_HMONITOR         0x00200000
+#define SEE_MASK_NOZONECHECKS     0x00800000
+#define SEE_MASK_NOQUERYCLASSSTORE 0x01000000
+#define SEE_MASK_WAITFORINPUTIDLE 0x02000000
+#define SEE_MASK_FLAG_LOG_USAGE   0x04000000
+
+typedef struct _SHELLEXECUTEINFOA
+{       DWORD cbSize;
+        ULONG fMask;
+        HWND hwnd;
+        LPCSTR   lpVerb;
+        LPCSTR   lpFile;
+        LPCSTR   lpParameters;
+        LPCSTR   lpDirectory;
+       INT nShow;
+        HINSTANCE hInstApp;
+        /* Optional fields */
+        LPVOID lpIDList;
+        LPCSTR   lpClass;
+        HKEY hkeyClass;
+        DWORD dwHotKey;
+        union
+        { HANDLE hIcon;
+          HANDLE hMonitor;
+        } DUMMYUNIONNAME;
+        HANDLE hProcess;
+} SHELLEXECUTEINFOA, *LPSHELLEXECUTEINFOA;
+
+typedef struct _SHELLEXECUTEINFOW
+{       DWORD cbSize;
+        ULONG fMask;
+        HWND hwnd;
+        LPCWSTR  lpVerb;
+        LPCWSTR  lpFile;
+        LPCWSTR  lpParameters;
+        LPCWSTR  lpDirectory;
+       INT nShow;
+        HINSTANCE hInstApp;
+        /* Optional fields*/
+        LPVOID lpIDList;
+        LPCWSTR  lpClass;
+        HKEY hkeyClass;
+        DWORD dwHotKey;
+        union
+        { HANDLE hIcon;
+          HANDLE hMonitor;
+        } DUMMYUNIONNAME;
+        HANDLE hProcess;
+} SHELLEXECUTEINFOW, *LPSHELLEXECUTEINFOW;
+
+#define SHELLEXECUTEINFO   WINELIB_NAME_AW(SHELLEXECUTEINFO)
+#define LPSHELLEXECUTEINFO WINELIB_NAME_AW(LPSHELLEXECUTEINFO)
+
+BOOL WINAPI ShellExecuteExA(LPSHELLEXECUTEINFOA lpExecInfo);
+BOOL WINAPI ShellExecuteExW(LPSHELLEXECUTEINFOW lpExecInfo);
+#define ShellExecuteEx  WINELIB_NAME_AW(ShellExecuteEx)
+
+void WINAPI WinExecErrorA(HWND hwnd,INT error, LPCSTR lpstrFileName, LPCSTR lpstrTitle);
+void WINAPI WinExecErrorW(HWND hwnd,INT error, LPCWSTR lpstrFileName, LPCWSTR lpstrTitle);
+#define WinExecError  WINELIB_NAME_AW(WinExecError)
+
+/******************************************
+ * Tray Notification
+ */
+/* notifyicondata.uFlags values*/
+#define NIF_MESSAGE             0x00000001
+#define NIF_ICON                0x00000002
+#define NIF_TIP                 0x00000004
+#define NIF_STATE               0x00000008
+#define NIF_INFO                0x00000010
+#define NIF_GUID                0x00000020
+#define NIF_REALTIME            0x00000040
+#define NIF_SHOWTIP             0x00000080
+
+/* notifyicondata.dwState values */
+#define NIS_HIDDEN              0x00000001
+#define NIS_SHAREDICON          0x00000002
+
+/* notifyicondata.dwInfoFlags values */
+#define NIIF_NONE               0x00000000
+#define NIIF_INFO               0x00000001
+#define NIIF_WARNING            0x00000002
+#define NIIF_ERROR              0x00000003
+#define NIIF_USER               0x00000004
+#define NIIF_ICONMASK           0x0000000f
+#define NIIF_NOSOUND            0x00000010
+#define NIIF_LARGEICON          0x00000020
+
+/* dwMessage values */
+#define NIM_ADD                 0x00000000
+#define NIM_MODIFY              0x00000001
+#define NIM_DELETE              0x00000002
+#define NIM_SETFOCUS            0x00000003
+#define NIM_SETVERSION          0x00000004
+
+#define NOTIFY_VERSION   3     /* supported by Windows 2000 and later */
+#define NOTIFY_VERSION_4 4     /* supported by Windows Vista */
+
+/* callback message lParam values */
+#define NIN_SELECT              (WM_USER+0)
+#define NINF_KEY                1
+#define NIN_KEYSELECT           (NIN_SELECT|NINF_KEY)  /* WM_USER+1 */
+#define NIN_BALOONSHOW          (WM_USER+2)
+#define NIN_BALOONHIDE          (WM_USER+3)
+#define NIN_BALOONTIMEOUT       (WM_USER+4)
+#define NIN_BALOONCLICK         (WM_USER+5)
+#define NIN_POPUPOPEN           (WM_USER+6)
+#define NIN_POPUPCLOSE          (WM_USER+7)
+
+typedef struct _NOTIFYICONDATAA
+{	DWORD cbSize;
+	HWND hWnd;
+	UINT uID;
+	UINT uFlags;
+	UINT uCallbackMessage;
+	HICON hIcon;
+	CHAR szTip[128];
+	DWORD dwState;
+	DWORD dwStateMask;
+	CHAR szInfo[256];
+	union {
+	    UINT uTimeout;
+	    UINT uVersion;
+	} DUMMYUNIONNAME;
+	CHAR szInfoTitle[64];
+	DWORD dwInfoFlags;
+	GUID guidItem;
+	HICON hBalloonIcon;
+} NOTIFYICONDATAA, *PNOTIFYICONDATAA;
+
+typedef struct _NOTIFYICONDATAW
+{	DWORD cbSize;
+	HWND hWnd;
+	UINT uID;
+	UINT uFlags;
+	UINT uCallbackMessage;
+	HICON hIcon;
+	WCHAR szTip[128];
+	DWORD dwState;
+	DWORD dwStateMask;
+	WCHAR szInfo[256];
+	union {
+	    UINT uTimeout;
+	    UINT uVersion;
+	} DUMMYUNIONNAME;
+	WCHAR szInfoTitle[64];
+	DWORD dwInfoFlags;
+	GUID guidItem;
+	HICON hBalloonIcon;
+} NOTIFYICONDATAW, *PNOTIFYICONDATAW;
+
+DECL_WINELIB_TYPE_AW(NOTIFYICONDATA)
+DECL_WINELIB_TYPE_AW(PNOTIFYICONDATA)
+
+BOOL WINAPI Shell_NotifyIconA(DWORD dwMessage, PNOTIFYICONDATAA lpData);
+BOOL WINAPI Shell_NotifyIconW(DWORD dwMessage, PNOTIFYICONDATAW lpData);
+
+#define Shell_NotifyIcon WINELIB_NAME_AW(Shell_NotifyIcon)
+
+/* pre IE 5.0 */
+#define NOTIFYICONDATAA_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAA, szTip[64])
+#define NOTIFYICONDATAW_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAW, szTip[64])
+
+/* pre Window XP */
+#define NOTIFYICONDATAA_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAA, guidItem)
+#define NOTIFYICONDATAW_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAW, guidItem)
+
+/* pre Window Vista */
+#define NOTIFYICONDATAA_V3_SIZE FIELD_OFFSET(NOTIFYICONDATAA, hBalloonIcon)
+#define NOTIFYICONDATAW_V3_SIZE FIELD_OFFSET(NOTIFYICONDATAW, hBalloonIcon)
+
+
+/******************************************
+ * Links
+ */
+
+#define SHGNLI_PIDL        0x01
+#define SHGNLI_PREFIXNAME  0x02
+#define SHGNLI_NOUNIQUE    0x04
+#define SHGNLI_NOLNK       0x08
+
+BOOL WINAPI SHGetNewLinkInfoA(LPCSTR,LPCSTR,LPSTR,BOOL*,UINT);
+BOOL WINAPI SHGetNewLinkInfoW(LPCWSTR,LPCWSTR,LPWSTR,BOOL*,UINT);
+#define     SHGetNewLinkInfo WINELIB_NAME_AW(SHGetNewLinkInfo)
+
+/******************************************
+ * Recycle bin
+ */
+
+typedef struct _SHQUERYRBINFO
+{
+    DWORD cbSize;
+    DWORDLONG i64Size;
+    DWORDLONG i64NumItems;
+} SHQUERYRBINFO, *LPSHQUERYRBINFO;
+
+HRESULT     WINAPI SHEmptyRecycleBinA(HWND,LPCSTR,DWORD);
+HRESULT     WINAPI SHEmptyRecycleBinW(HWND,LPCWSTR,DWORD);
+#define     SHEmptyRecycleBin WINELIB_NAME_AW(SHEmptyRecycleBin)
+HRESULT     WINAPI SHQueryRecycleBinA(LPCSTR,LPSHQUERYRBINFO);
+HRESULT     WINAPI SHQueryRecycleBinW(LPCWSTR,LPSHQUERYRBINFO);
+#define     SHQueryRecycleBin WINELIB_NAME_AW(SHQueryRecycleBin)
+
+/******************************************
+ * Misc
+ */
+
+LPWSTR*     WINAPI CommandLineToArgvW(LPCWSTR,int*);
+HICON       WINAPI ExtractIconA(HINSTANCE,LPCSTR,UINT);
+HICON       WINAPI ExtractIconW(HINSTANCE,LPCWSTR,UINT);
+#define     ExtractIcon WINELIB_NAME_AW(ExtractIcon)
+HICON       WINAPI ExtractAssociatedIconA(HINSTANCE,LPSTR,LPWORD);
+HICON       WINAPI ExtractAssociatedIconW(HINSTANCE,LPWSTR,LPWORD);
+#define     ExtractAssociatedIcon WINELIB_NAME_AW(ExtractAssociatedIcon)
+HICON       WINAPI ExtractAssociatedIconExA(HINSTANCE,LPSTR,LPWORD,LPWORD);
+HICON       WINAPI ExtractAssociatedIconExW(HINSTANCE,LPWSTR,LPWORD,LPWORD);
+#define     ExtractAssociatedIconEx WINELIB_NAME_AW(ExtractAssociatedIconEx)
+UINT        WINAPI ExtractIconExA(LPCSTR,INT,HICON*,HICON*,UINT);
+UINT        WINAPI ExtractIconExW(LPCWSTR,INT,HICON*,HICON*,UINT);
+#define     ExtractIconEx WINELIB_NAME_AW(ExtractIconEx)
+HINSTANCE   WINAPI FindExecutableA(LPCSTR,LPCSTR,LPSTR);
+HINSTANCE   WINAPI FindExecutableW(LPCWSTR,LPCWSTR,LPWSTR);
+#define     FindExecutable WINELIB_NAME_AW(FindExecutable)
+BOOL        WINAPI ShellAboutA(HWND,LPCSTR,LPCSTR,HICON);
+BOOL        WINAPI ShellAboutW(HWND,LPCWSTR,LPCWSTR,HICON);
+#define     ShellAbout WINELIB_NAME_AW(ShellAbout)
+int         WINAPIV ShellMessageBoxA(HINSTANCE,HWND,LPCSTR,LPCSTR,UINT,...);
+int         WINAPIV ShellMessageBoxW(HINSTANCE,HWND,LPCWSTR,LPCWSTR,UINT,...);
+#define     ShellMessageBox WINELIB_NAME_AW(ShellMessageBox)
+DWORD       WINAPI DoEnvironmentSubstA(LPSTR, UINT);
+DWORD       WINAPI DoEnvironmentSubstW(LPWSTR, UINT);
+#define     DoEnvironmentSubst WINELIB_NAME_AW(DoEnvironmentSubst)
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#include <poppack.h>
+
+#endif /* __WINE_SHELLAPI_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/shldisp.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/shldisp.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/shldisp.idl	(revision 16410)
@@ -0,0 +1,120 @@
+/*
+ * COM interfaces for shell objects
+ *
+ * Copyright (C) 2004 Maxime Bellengé
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "objidl.idl";
+import "oleidl.idl";
+import "oaidl.idl";
+import "shtypes.idl";
+import "servprov.idl";
+import "comcat.idl";
+
+#include <shdispid.h>
+
+/*****************************************************************************
+ * IAutoComplete interface
+ */
+[
+    object,
+    uuid(00bb2762-6a77-11d0-a535-00c04fd7d062),
+    pointer_default(unique)
+]
+interface IAutoComplete : IUnknown
+{
+    typedef IAutoComplete *LPAUTOCOMPLETE;
+
+    HRESULT Init( [in] HWND hwndEdit,
+		  [in] IUnknown *punkACL,
+		  [in] LPCOLESTR pwszRegKeyPath,
+		  [in] LPCOLESTR pwszQuickComplete);
+    
+    HRESULT Enable( [in] BOOL fEnable );
+}
+
+/*****************************************************************************
+ * IAutoComplete2 interface
+ */
+[
+    object,
+    uuid(eac04bc0-3791-11d2-bb95-0060977b464c),
+    pointer_default(unique)
+]
+interface IAutoComplete2 : IAutoComplete
+{
+    typedef IAutoComplete2 *LPAUTOCOMPLETE2;
+
+    typedef enum _tagAUTOCOMPLETEOPTIONS
+	{
+	    ACO_NONE           = 0x00,      /* No AutoComplete */
+	    ACO_AUTOSUGGEST    = 0x01,      /* enable autosuggest dropdown */
+	    ACO_AUTOAPPEND     = 0x02,      /* enable autoappend */
+	    ACO_SEARCH         = 0x04,      /* add search entry to completion list */
+	    ACO_FILTERPREFIXES = 0x08,      /* don't match common prefixes (www., http://, etc) */
+	    ACO_USETAB         = 0x10,      /* use tab to select autosuggest entries */
+	    ACO_UPDOWNKEYDROPSLIST = 0x20,  /* up/down arrow key invokes autosuggest dropdown (if enabled) */
+	    ACO_RTLREADING     = 0x40,      /* enable RTL reading order for dropdown */
+	} AUTOCOMPLETEOPTIONS;
+
+    HRESULT SetOptions( [in] DWORD dwFlag);
+
+    HRESULT GetOptions( [out] DWORD *pdwFlag);
+}
+
+[
+    object,
+    uuid(9ba05970-f6a8-11cf-a442-00a0c90a8f39),
+    pointer_default(unique)
+]
+interface IFolderViewOC : IDispatch
+{
+    HRESULT SetFolderView( [in] IDispatch *pdisp );
+}
+
+[
+    uuid(62112aa2-ebe4-11cf-a5fb-0020afe7292d)
+]
+dispinterface DShellFolderViewEvents
+{
+    properties:
+    methods:
+    [id(DISPID_SELECTIONCHANGED)]
+    void SelectionChanged();
+
+    [id(DISPID_FILELISTENUMDONE)]
+    void EnumDone();
+
+    [id(DISPID_VERBINVOKED)]
+    VARIANT_BOOL VerbInvoked();
+
+    [id(DISPID_DEFAULTVERBINVOKED)]
+    VARIANT_BOOL DefaultVerbInvoked();
+
+    [id(DISPID_BEGINDRAG)]
+    VARIANT_BOOL BeginDrag();
+}
+
+[
+    uuid(9ba05971-f6a8-11cf-a442-00a0c90a8f39),
+    hidden
+]
+coclass ShellFolderViewOC
+{
+    [default]         interface     IFolderViewOC;
+    [default, source] dispinterface DShellFolderViewEvents;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/shlguid.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/shlguid.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/shlguid.h	(revision 16410)
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 1999 Juergen Schmied
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_SHLGUID_H
+#define __WINE_SHLGUID_H
+
+DEFINE_OLEGUID(CLSID_ShellDesktop,      0x00021400L, 0, 0);
+DEFINE_OLEGUID(CLSID_ShellLink,         0x00021401L, 0, 0);
+
+DEFINE_OLEGUID(CATID_BrowsableShellExt, 0x00021490L, 0, 0);
+DEFINE_OLEGUID(CATID_BrowseInPlace,     0x00021491L, 0, 0);
+DEFINE_OLEGUID(CATID_DeskBand,          0x00021492L, 0, 0);
+DEFINE_OLEGUID(CATID_InfoBand,          0x00021493L, 0, 0);
+DEFINE_OLEGUID(CATID_CommBand,          0x00021494L, 0, 0);
+
+/* shell32 formatids */
+DEFINE_OLEGUID(FMTID_Intshcut,          0x000214A0L, 0, 0);
+DEFINE_OLEGUID(FMTID_InternetSite,      0x000214A1L, 0, 0);
+
+/* command group ids */
+DEFINE_OLEGUID(CGID_Explorer,           0x000214D0L, 0, 0);
+DEFINE_OLEGUID(CGID_ShellDocView,       0x000214D1L, 0, 0);
+DEFINE_OLEGUID(CGID_ShellServiceObject, 0x000214D2L, 0, 0);
+DEFINE_OLEGUID(CGID_ExplorerBarDoc,     0x000214D3L, 0, 0);
+
+DEFINE_OLEGUID(IID_IShellIcon,          0x000214E5L, 0, 0);
+DEFINE_OLEGUID(IID_IShellDetails,       0x000214ECL, 0, 0);
+DEFINE_OLEGUID(IID_IDelayedRelease,     0x000214EDL, 0, 0);
+DEFINE_OLEGUID(IID_IShellCopyHookA,     0x000214EFL, 0, 0);
+DEFINE_OLEGUID(IID_IFileViewerA,        0x000214F0L, 0, 0);
+DEFINE_OLEGUID(IID_IFileViewerSite,     0x000214F3L, 0, 0);
+DEFINE_OLEGUID(IID_IPropSheetPage,      0x000214F6L, 0, 0);
+DEFINE_OLEGUID(IID_IFileViewerW,        0x000214F8L, 0, 0);
+DEFINE_OLEGUID(IID_IShellCopyHookW,     0x000214FCL, 0, 0);
+DEFINE_OLEGUID(IID_IRemoteComputer,     0x000214FEL, 0, 0);
+DEFINE_OLEGUID(IID_IQueryInfo,          0x00021500L, 0, 0);
+
+DEFINE_GUID(IID_IACList,   0x77A130B0L,0x94FD,0x11D0,0xA5,0x44,0x00,0xC0,0x4F,0xD7,0xD0,0x62);
+DEFINE_GUID(IID_IACList2,  0x470141A0L,0x5186,0x11D2,0xBB,0xB6,0x00,0x60,0x97,0x7B,0x46,0x4C);
+DEFINE_GUID(IID_IObjMgr,   0x00BB2761L,0x6A77,0x11D0,0xA5,0x35,0x00,0xC0,0x4F,0xD7,0xD0,0x62);
+
+DEFINE_GUID(IID_IProgressDialog, 0xEBBC7C04,0x315E,0x11D2,0xB6,0x2F,0x00,0x60,0x97,0xDF,0x5B,0xD4);
+
+
+/* avoid duplicate definitions with shobjidl.h (FIXME) */
+/* DEFINE_OLEGUID(IID_IShellPropSheetExt,  0x000214E9L, 0, 0); */
+/* DEFINE_OLEGUID(IID_IExtractIconA,       0x000214EBL, 0, 0); */
+/* DEFINE_OLEGUID(IID_IExtractIconW,       0x000214FAL, 0, 0); */
+/* DEFINE_OLEGUID(IID_IContextMenu,        0x000214E4L, 0, 0); */
+/* DEFINE_OLEGUID(IID_IContextMenu2,       0x000214F4L, 0, 0); */
+/* DEFINE_OLEGUID(IID_ICommDlgBrowser,     0x000214F1L, 0, 0); */
+/* DEFINE_OLEGUID(IID_IShellBrowser,       0x000214E2L, 0, 0); */
+/* DEFINE_OLEGUID(IID_IShellView,          0x000214E3L, 0, 0); */
+/* DEFINE_OLEGUID(IID_IShellFolder,        0x000214E6L, 0, 0); */
+/* DEFINE_OLEGUID(IID_IShellExtInit,       0x000214E8L, 0, 0); */
+/* DEFINE_OLEGUID(IID_IPersistFolder,      0x000214EAL, 0, 0); */
+/* DEFINE_OLEGUID(IID_IShellLinkA,         0x000214EEL, 0, 0); */
+/* DEFINE_OLEGUID(IID_IEnumIDList,         0x000214F2L, 0, 0); */
+/* DEFINE_OLEGUID(IID_IShellLinkW,         0x000214F9L, 0, 0); */
+/* DEFINE_OLEGUID(IID_IShellExecuteHookA,  0x000214F5L, 0, 0); */
+/* DEFINE_OLEGUID(IID_IShellExecuteHookW,  0x000214FBL, 0, 0); */
+/* DEFINE_OLEGUID(IID_INewShortcutHookA,   0x000214E1L, 0, 0); */
+/* DEFINE_OLEGUID(IID_INewShortcutHookW,   0x000214F7L, 0, 0); */
+
+DEFINE_GUID(CLSID_CUrlHistory, 0x3c374a40, 0xbae4, 0x11cf, 0xbf, 0x7d, 0x00, 0xaa, 0x00, 0x69, 0x46, 0xee);
+#define SID_SUrlHistory       CLSID_CUrlHistory
+
+DEFINE_GUID(CLSID_CURLSearchHook, 0xcfbfae00, 0x17a6, 0x11d0, 0x99, 0xcb, 0x00, 0xc0, 0x4f, 0xd6, 0x44, 0x97);
+
+DEFINE_GUID(SID_STopLevelBrowser, 0x4C96BE40, 0x915C, 0x11CF, 0x99, 0xD3, 0x00, 0xAA, 0x00, 0x4A, 0xE8, 0x37);
+DEFINE_GUID(SID_STopWindow,       0x49e1b500, 0x4636, 0x11d3, 0x97, 0xf7, 0x00, 0xc0, 0x4f, 0x45, 0xd0, 0xb3);
+DEFINE_GUID(SID_SCommDlgBrowser,  0x80f30233, 0xb7df, 0x11d2, 0xa3, 0x3b, 0x00, 0x60, 0x97, 0xdf, 0x5b, 0xd4);
+
+#define SID_LinkSite          IID_IShellLinkW
+#define SID_SShellBrowser     IID_IShellBrowser
+#define SID_SShellDesktop     CLSID_ShellDesktop
+#define SID_SInternetExplorer IID_IWebBrowserApp
+#define SID_SWebBrowserApp    IID_IWebBrowserApp
+#define SID_SWebBrowserEventsService    IID_IWebBrowserEventsService
+
+#define IID_IFileViewer       WINELIB_NAME_AW(IID_IFileViewer)
+#define IID_IShellLink        WINELIB_NAME_AW(IID_IShellLink)
+#define IID_IExtractIcon      WINELIB_NAME_AW(IID_IExtractIcon)
+#define IID_IShellCopyHook    WINELIB_NAME_AW(IID_IShellCopyHook)
+#define IID_IShellExecuteHook WINELIB_NAME_AW(IID_IShellExecuteHook)
+#define IID_INewShortcutHook  WINELIB_NAME_AW(IID_INewShortcutHook)
+
+DEFINE_GUID(IID_IDockingWindow,     0x012dd920L, 0x7B26, 0x11D0, 0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8);
+DEFINE_GUID(IID_IDockingWindowSite, 0x2A342FC2L, 0x7B26, 0x11D0, 0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8);
+DEFINE_GUID(IID_IInputObject,       0x068284FAA, 0x6A48, 0x11D0, 0x8C, 0x78, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xB4);
+DEFINE_GUID(IID_IInputObjectSite,   0x0F1DB8392, 0x7331, 0x11D0, 0x8C, 0x99, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8);
+
+/****************************************************************************
+ * the next IID's are the namespace elements of the pidls
+ */
+DEFINE_GUID(CLSID_NetworkPlaces, 0x208D2C60, 0x3AEA, 0x1069, 0xA2, 0xD7, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D);
+DEFINE_GUID(CLSID_NetworkDomain, 0x46e06680, 0x4bf0, 0x11d1, 0x83, 0xee, 0x00, 0xa0, 0xc9, 0x0d, 0xc8, 0x49);
+DEFINE_GUID(CLSID_NetworkServer, 0xc0542a90, 0x4bf0, 0x11d1, 0x83, 0xee, 0x00, 0xa0, 0xc9, 0x0d, 0xc8, 0x49);
+DEFINE_GUID(CLSID_NetworkShare, 0x54a754c0, 0x4bf0, 0x11d1, 0x83, 0xee, 0x00, 0xa0, 0xc9, 0x0d, 0xc8, 0x49);
+DEFINE_GUID(CLSID_MyComputer, 0x20D04FE0, 0x3AEA, 0x1069, 0xA2, 0xD8, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D);
+DEFINE_GUID(CLSID_Internet, 0x871C5380, 0x42A0, 0x1069, 0xA2, 0xEA, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D);
+DEFINE_GUID(CLSID_ShellFSFolder, 0xF3364BA0, 0x65B9, 0x11CE, 0xA9, 0xBA, 0x00, 0xAA, 0x00, 0x4A, 0xE8, 0x37);
+DEFINE_GUID(CLSID_RecycleBin, 0x645FF040, 0x5081, 0x101B, 0x9F, 0x08, 0x00, 0xAA, 0x00, 0x2F, 0x95, 0x4E);
+DEFINE_GUID(CLSID_ControlPanel, 0x21EC2020, 0x3AEA, 0x1069, 0xA2, 0xDD, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D);
+DEFINE_GUID(CLSID_Printers, 0x2227A280, 0x3AEA, 0x1069, 0xA2, 0xDE, 0x08, 0x00, 0x2B, 0x30, 0x30, 0x9D);
+DEFINE_GUID(CLSID_MyDocuments, 0x450d8fba, 0xad25, 0x11d0, 0x98, 0xa8, 0x08, 0x00, 0x36, 0x1b, 0x11, 0x03);
+DEFINE_GUID(CLSID_FolderShortcut, 0x0AFACED1, 0xE828, 0x11D1, 0x91, 0x87, 0xB5, 0x32, 0xF1, 0xE9, 0x57, 0x5D);
+
+DEFINE_GUID(IID_IQueryAssociations, 0xc46ca590, 0x3c3f, 0x11d2, 0xbe, 0xe6, 0x00, 0x00, 0xf8, 0x05, 0xca, 0x57);
+
+DEFINE_GUID(CLSID_DragDropHelper, 0x4657278a, 0x411b, 0x11d2, 0x83, 0x9a, 0x00, 0xc0, 0x4f, 0xd9, 0x18, 0xd0);
+
+DEFINE_GUID(CLSID_AutoComplete,   0x00bb2763, 0x6a77, 0x11d0, 0xa5, 0x35, 0x00, 0xc0, 0x4f, 0xd7, 0xd0, 0x62);
+DEFINE_GUID(CLSID_ACLMulti,       0x00bb2765, 0x6a77, 0x11d0, 0xa5, 0x35, 0x00, 0xc0, 0x4f, 0xd7, 0xd0, 0x62);
+DEFINE_GUID(CLSID_ACListISF,      0x03c036f1, 0xa186, 0x11d0, 0x82, 0x4a, 0x00, 0xaa, 0x00, 0x5b, 0x043, 0x83);
+
+DEFINE_GUID(CLSID_ProgressDialog, 0xf8383852, 0xfcd3, 0x11d1, 0xa6, 0xb9, 0x0, 0x60, 0x97, 0xdf, 0x5b, 0xd4);
+
+#define PSGUID_SHELLDETAILS     {0x28636aa6, 0x953d, 0x11d2, 0xb5, 0xd6, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0xd0}
+DEFINE_GUID(FMTID_ShellDetails,  0x28636aa6, 0x953d, 0x11d2, 0xb5, 0xd6, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0xd0);
+#define PID_FINDDATA        0
+#define PID_NETRESOURCE     1
+#define PID_DESCRIPTIONID   2
+#define PID_WHICHFOLDER     3
+#define PID_NETWORKLOCATION 4
+#define PID_COMPUTERNAME    5
+
+/* Note: PSGUID_STORAGE defined in ntquery.h */
+DEFINE_GUID(FMTID_Storage, 0xb725f130, 0x47ef, 0x101a, 0xa5, 0xf1, 0x02, 0x60, 0x8c, 0x9e, 0xeb, 0xac);
+/* PID_* for FMTID_Storage defined in ntquery.h*/
+
+#define PSGUID_DISPLACED    {0x9b174b33, 0x40ff, 0x11d2, 0xa2, 0x7e, 0x0, 0xc0, 0x4f, 0xc3, 0x8, 0x71}
+DEFINE_GUID(FMTID_Displaced, 0x9b174b33, 0x40ff, 0x11d2, 0xa2, 0x7e, 0x0, 0xc0, 0x4f, 0xc3, 0x8, 0x71);
+#define PID_DISPLACED_FROM 2
+#define PID_DISPLACED_DATE 3
+
+DEFINE_GUID(CLSID_CAnchorBrowsePropertyPage, 0x3050F3BB, 0x98B5, 0x11CF, 0xBB,0x82, 0x00,0xAA,0x00,0xBD,0xCE,0x0B);
+DEFINE_GUID(CLSID_CDocBrowsePropertyPage, 0x3050F3B4, 0x98B5, 0x11CF, 0xBB,0x82, 0x00,0xAA,0x00,0xBD,0xCE,0x0B);
+DEFINE_GUID(CLSID_CImageBrowsePropertyPage, 0x3050F3B3, 0x98B5, 0x11CF, 0xBB,0x82, 0x00,0xAA,0x00,0xBD,0xCE,0x0B);
+
+DEFINE_GUID(VID_LargeIcons, 0x0057d0e0, 0x3573, 0x11cf, 0xae, 0x69, 0x08, 0x00, 0x2b, 0x2e, 0x12, 0x62);
+DEFINE_GUID(VID_SmallIcons, 0x089000c0, 0x3573, 0x11cf, 0xae, 0x69, 0x08, 0x00, 0x2b, 0x2e, 0x12, 0x62);
+DEFINE_GUID(VID_List,       0x0e1fa5e0, 0x3573, 0x11cf, 0xae, 0x69, 0x08, 0x00, 0x2b, 0x2e, 0x12, 0x62);
+DEFINE_GUID(VID_Details,    0x137e7700, 0x3573, 0x11cf, 0xae, 0x69, 0x08, 0x00, 0x2b, 0x2e, 0x12, 0x62);
+DEFINE_GUID(VID_Thumbnails, 0x8bebb290, 0x52d0, 0x11d0, 0xb7, 0xf4, 0x00, 0xc0, 0x4f, 0xd7, 0x06, 0xec);
+DEFINE_GUID(VID_Tile,       0x65f125e5, 0x7be1, 0x4810, 0xba, 0x9d, 0xd2, 0x71, 0xc8, 0x43, 0x2c, 0xe3);
+DEFINE_GUID(VID_ThumbStrip, 0x8eefa624, 0xd1e9, 0x445b, 0x94, 0xb7, 0x74, 0xfb, 0xce, 0x2e, 0xa1, 0x1a);
+
+#endif /* __WINE_SHLGUID_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/shlobj.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/shlobj.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/shlobj.h	(revision 16410)
@@ -0,0 +1,1527 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_SHLOBJ_H
+#define __WINE_SHLOBJ_H
+
+#include <ole2.h>
+#include <commctrl.h>
+#include <prsht.h>
+#include <shlguid.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+/* Except for specific structs, this header is byte packed */
+#include <pshpack1.h>
+
+#include <shtypes.h>
+#include <shobjidl.h>
+
+#ifndef HPSXA_DEFINED
+#define HPSXA_DEFINED
+DECLARE_HANDLE(HPSXA);
+#endif
+
+UINT         WINAPI SHAddFromPropSheetExtArray(HPSXA,LPFNADDPROPSHEETPAGE,LPARAM);
+LPVOID       WINAPI SHAlloc(ULONG) __WINE_ALLOC_SIZE(1);
+HRESULT      WINAPI SHCoCreateInstance(LPCWSTR,const CLSID*,IUnknown*,REFIID,LPVOID*);
+HPSXA        WINAPI SHCreatePropSheetExtArray(HKEY,LPCWSTR,UINT);
+HPSXA        WINAPI SHCreatePropSheetExtArrayEx(HKEY,LPCWSTR,UINT,IDataObject*);
+DWORD        WINAPI SHCLSIDFromStringA(LPCSTR,CLSID*);
+DWORD        WINAPI SHCLSIDFromStringW(LPCWSTR,CLSID*);
+#define             SHCLSIDFromString WINELIB_NAME_AW(SHCLSIDFromString)
+HRESULT      WINAPI SHCreateStdEnumFmtEtc(DWORD,const FORMATETC *,IEnumFORMATETC**);
+void         WINAPI SHDestroyPropSheetExtArray(HPSXA);
+BOOL         WINAPI SHFindFiles(LPCITEMIDLIST,LPCITEMIDLIST);
+DWORD        WINAPI SHFormatDrive(HWND,UINT,UINT,UINT);
+void         WINAPI SHFree(LPVOID);
+BOOL         WINAPI GetFileNameFromBrowse(HWND,LPSTR,DWORD,LPCSTR,LPCSTR,LPCSTR,LPCSTR);
+HRESULT      WINAPI SHGetInstanceExplorer(IUnknown**);
+HRESULT      WINAPI SHGetFolderPathAndSubDirA(HWND,int,HANDLE,DWORD,LPCSTR,LPSTR);
+HRESULT      WINAPI SHGetFolderPathAndSubDirW(HWND,int,HANDLE,DWORD,LPCWSTR,LPWSTR);
+#define             SHGetFolderPathAndSubDir WINELIB_NAME_AW(SHGetFolderPathAndSubDir);
+BOOL         WINAPI SHGetPathFromIDListA(LPCITEMIDLIST,LPSTR);
+BOOL         WINAPI SHGetPathFromIDListW(LPCITEMIDLIST,LPWSTR);
+#define             SHGetPathFromIDList WINELIB_NAME_AW(SHGetPathFromIDList)
+INT          WINAPI SHHandleUpdateImage(LPCITEMIDLIST);
+HRESULT      WINAPI SHILCreateFromPath(LPCWSTR,LPITEMIDLIST*,DWORD*);
+HRESULT      WINAPI SHLoadOLE(LPARAM);
+HRESULT      WINAPI SHPathPrepareForWriteA(HWND,IUnknown*,LPCSTR,DWORD);
+HRESULT      WINAPI SHPathPrepareForWriteW(HWND,IUnknown*,LPCWSTR,DWORD);
+#define             SHPathPrepareForWrite WINELIB_NAME_AW(SHPathPrepareForWrite);
+UINT         WINAPI SHReplaceFromPropSheetExtArray(HPSXA,UINT,LPFNADDPROPSHEETPAGE,LPARAM);
+LPITEMIDLIST WINAPI SHSimpleIDListFromPath(LPCWSTR);
+int          WINAPI SHMapPIDLToSystemImageListIndex(IShellFolder*,LPCITEMIDLIST,int*);
+HRESULT      WINAPI SHStartNetConnectionDialog(HWND,LPCSTR,DWORD);
+VOID         WINAPI SHUpdateImageA(LPCSTR,INT,UINT,INT);
+VOID         WINAPI SHUpdateImageW(LPCWSTR,INT,UINT,INT);
+#define             SHUpdateImage WINELIB_NAME_AW(SHUpdateImage)
+int          WINAPI RestartDialog(HWND,LPCWSTR,DWORD);
+int          WINAPI RestartDialogEx(HWND,LPCWSTR,DWORD,DWORD);
+
+#define SHFMT_ERROR     0xFFFFFFFFL  /* Error on last format, drive may be formattable */
+#define SHFMT_CANCEL    0xFFFFFFFEL  /* Last format was cancelled */
+#define SHFMT_NOFORMAT  0xFFFFFFFDL  /* Drive is not formattable */
+
+/* SHFormatDrive flags */
+#define SHFMT_ID_DEFAULT	0xFFFF
+#define SHFMT_OPT_FULL		1
+#define SHFMT_OPT_SYSONLY	2
+
+/* SHPathPrepareForWrite flags */
+#define SHPPFW_NONE             0x00000000
+#define SHPPFW_DIRCREATE        0x00000001
+#define SHPPFW_DEFAULT          SHPPFW_DIRCREATE
+#define SHPPFW_ASKDIRCREATE     0x00000002
+#define SHPPFW_IGNOREFILENAME   0x00000004
+#define SHPPFW_NOWRITECHECK     0x00000008
+#define SHPPFW_MEDIACHECKONLY   0x00000010
+
+/* SHObjectProperties flags */
+#define SHOP_PRINTERNAME 0x01
+#define SHOP_FILEPATH    0x02
+#define SHOP_VOLUMEGUID  0x04
+
+BOOL WINAPI SHObjectProperties(HWND,DWORD,LPCWSTR,LPCWSTR);
+
+#define PCS_FATAL           0x80000000
+#define PCS_REPLACEDCHAR    0x00000001
+#define PCS_REMOVEDCHAR     0x00000002
+#define PCS_TRUNCATED       0x00000004
+#define PCS_PATHTOOLONG     0x00000008
+
+int WINAPI PathCleanupSpec(LPCWSTR,LPWSTR);
+
+/*****************************************************************************
+ * IContextMenu interface
+ */
+
+
+/* DATAOBJECT_InitShellIDList*/
+#define CFSTR_SHELLIDLISTA           "Shell IDList Array"   /* CF_IDLIST */
+#define CFSTR_SHELLIDLISTOFFSETA     "Shell Object Offsets" /* CF_OBJECTPOSITIONS */
+#define CFSTR_NETRESOURCESA          "Net Resource"         /* CF_NETRESOURCE */
+/* DATAOBJECT_InitFileGroupDesc */
+#define CFSTR_FILEDESCRIPTORA        "FileGroupDescriptor"  /* CF_FILEGROUPDESCRIPTORA */
+/* DATAOBJECT_InitFileContents*/
+#define CFSTR_FILECONTENTSA          "FileContents"         /* CF_FILECONTENTS */
+#define CFSTR_FILENAMEA              "FileName"             /* CF_FILENAMEA */
+#define CFSTR_FILENAMEMAPA           "FileNameMap"          /* CF_FILENAMEMAPA */
+#define CFSTR_PRINTERGROUPA          "PrinterFriendlyName"  /* CF_PRINTERS */
+#define CFSTR_SHELLURLA              "UniformResourceLocator"
+#define CFSTR_INETURLA               CFSTR_SHELLURLA
+#define CFSTR_PREFERREDDROPEFFECTA   "Preferred DropEffect"
+#define CFSTR_PERFORMEDDROPEFFECTA   "Performed DropEffect"
+#define CFSTR_PASTESUCCEEDEDA        "Paste Succeeded"
+#define CFSTR_INDRAGLOOPA            "InShellDragLoop"
+#define CFSTR_DRAGCONTEXTA           "DragContext"
+#define CFSTR_MOUNTEDVOLUMEA         "MountedVolume"
+#define CFSTR_PERSISTEDDATAOBJECTA   "PersistedDataObject"
+#define CFSTR_TARGETCLSIDA           "TargetCLSID"
+#define CFSTR_AUTOPLAY_SHELLIDLISTSA "Autoplay Enumerated IDList Array"
+#define CFSTR_LOGICALPERFORMEDDROPEFFECTA "Logical Performed DropEffect"
+
+#if defined(__GNUC__)
+# define CFSTR_SHELLIDLISTW \
+    (const WCHAR []){ 'S','h','e','l','l',' ','I','D','L','i','s','t',' ','A','r','r','a','y',0 }
+# define CFSTR_SHELLIDLISTOFFSETW \
+    (const WCHAR []){ 'S','h','e','l','l',' ','O','b','j','e','c','t',' ','O','f','f','s','e','t','s',0 }
+# define CFSTR_NETRESOURCESW \
+    (const WCHAR []){ 'N','e','t',' ','R','e','s','o','u','r','c','e',0 }
+# define CFSTR_FILEDESCRIPTORW \
+    (const WCHAR []){ 'F','i','l','e','G','r','o','u','p','D','e','s','c','r','i','p','t','o','r','W',0 }
+# define CFSTR_FILECONTENTSW \
+    (const WCHAR []){ 'F','i','l','e','C','o','n','t','e','n','t','s',0 }
+# define CFSTR_FILENAMEW \
+    (const WCHAR []){ 'F','i','l','e','N','a','m','e','W',0 }
+# define CFSTR_FILENAMEMAPW \
+    (const WCHAR []){ 'F','i','l','e','N','a','m','e','M','a','p','W',0 }
+# define CFSTR_PRINTERGROUPW \
+    (const WCHAR []){ 'P','r','i','n','t','e','r','F','r','i','e','n','d','l','y','N','a','m','e',0 }
+# define CFSTR_SHELLURLW \
+    (const WCHAR []){ 'U','n','i','f','o','r','m','R','e','s','o','u','r','c','e','L','o','c','a','t','o','r',0 }
+# define CFSTR_INETURLW \
+    (const WCHAR []){ 'U','n','i','f','o','r','m','R','e','s','o','u','r','c','e','L','o','c','a','t','o','r','W',0 }
+# define CFSTR_PREFERREDDROPEFFECTW \
+    (const WCHAR []){ 'P','r','e','f','e','r','r','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 }
+# define CFSTR_PERFORMEDDROPEFFECTW \
+    (const WCHAR []){ 'P','e','r','f','o','r','m','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 }
+# define CFSTR_PASTESUCCEEDEDW \
+    (const WCHAR []){ 'P','a','s','t','e',' ','S','u','c','c','e','e','d','e','d',0 }
+# define CFSTR_INDRAGLOOPW \
+    (const WCHAR []){ 'I','n','S','h','e','l','l','D','r','a','g','L','o','o','p',0 }
+# define CFSTR_DRAGCONTEXTW \
+    (const WCHAR []){ 'D','r','a','g','C','o','n','t','e','x','t',0 }
+# define CFSTR_MOUNTEDVOLUMEW \
+    (const WCHAR []){ 'M','o','u','n','t','e','d','V','o','l','u','m','e',0 }
+# define CFSTR_PERSISTEDDATAOBJECTW \
+    (const WCHAR []){ 'P','e','r','s','i','s','t','e','d','D','a','t','a','O','b','j','e','c','t',0 }
+# define CFSTR_TARGETCLSIDW \
+    (const WCHAR []){ 'T','a','r','g','e','t','C','L','S','I','D',0 }
+# define CFSTR_AUTOPLAY_SHELLIDLISTSW \
+    (const WCHAR []){ 'A','u','t','o','p','l','a','y',' ','E','n','u','m','e','r','a','t','e','d',\
+                      ' ','I','D','L','i','s','t',' ','A','r','r','a','y',0 }
+# define CFSTR_LOGICALPERFORMEDDROPEFFECTW \
+    (const WCHAR []){ 'L','o','g','i','c','a','l',' ','P','e','r','f','o','r','m','e','d',\
+                      ' ','D','r','o','p','E','f','f','e','c','t',0 }
+#elif defined(_MSC_VER)
+# define CFSTR_SHELLIDLISTW           L"Shell IDList Array"
+# define CFSTR_SHELLIDLISTOFFSETW     L"Shell Object Offsets"
+# define CFSTR_NETRESOURCESW          L"Net Resource"
+# define CFSTR_FILEDESCRIPTORW        L"FileGroupDescriptorW"
+# define CFSTR_FILECONTENTSW          L"FileContents"
+# define CFSTR_FILENAMEW              L"FileNameW"
+# define CFSTR_FILENAMEMAPW           L"FileNameMapW"
+# define CFSTR_PRINTERGROUPW          L"PrinterFriendlyName"
+# define CFSTR_SHELLURLW              L"UniformResourceLocator"
+# define CFSTR_INETURLW               L"UniformResourceLocatorW"
+# define CFSTR_PREFERREDDROPEFFECTW   L"Preferred DropEffect"
+# define CFSTR_PERFORMEDDROPEFFECTW   L"Performed DropEffect"
+# define CFSTR_PASTESUCCEEDEDW        L"Paste Succeeded"
+# define CFSTR_INDRAGLOOPW            L"InShellDragLoop"
+# define CFSTR_DRAGCONTEXTW           L"DragContext"
+# define CFSTR_MOUNTEDVOLUMEW         L"MountedVolume"
+# define CFSTR_PERSISTEDDATAOBJECTW   L"PersistedDataObject"
+# define CFSTR_TARGETCLSIDW           L"TargetCLSID"
+# define CFSTR_AUTOPLAY_SHELLIDLISTSW L"Autoplay Enumerated IDList Array"
+# define CFSTR_LOGICALPERFORMEDDROPEFFECTW L"Logical Performed DropEffect"
+#else
+static const WCHAR CFSTR_SHELLIDLISTW[] =
+    { 'S','h','e','l','l',' ','I','D','L','i','s','t',' ','A','r','r','a','y',0 };
+static const WCHAR CFSTR_SHELLIDLISTOFFSETW[] =
+    { 'S','h','e','l','l',' ','O','b','j','e','c','t',' ','O','f','f','s','e','t','s',0 };
+static const WCHAR CFSTR_NETRESOURCESW[] =
+    { 'N','e','t',' ','R','e','s','o','u','r','c','e',0 };
+static const WCHAR CFSTR_FILEDESCRIPTORW[] =
+    { 'F','i','l','e','G','r','o','u','p','D','e','s','c','r','i','p','t','o','r','W',0 };
+static const WCHAR CFSTR_FILECONTENTSW[] =
+    { 'F','i','l','e','C','o','n','t','e','n','t','s',0 };
+static const WCHAR CFSTR_FILENAMEW[] =
+    { 'F','i','l','e','N','a','m','e','W',0 }
+static const WCHAR CFSTR_FILENAMEMAPW[] =
+    { 'F','i','l','e','N','a','m','e','M','a','p','W',0 };
+static const WCHAR CFSTR_PRINTERGROUPW[] =
+    { 'P','r','i','n','t','e','r','F','r','i','e','n','d','l','y','N','a','m','e',0 };
+static const WCHAR CFSTR_SHELLURLW[] =
+    { 'U','n','i','f','o','r','m','R','e','s','o','u','r','c','e','L','o','c','a','t','o','r',0 };
+static const WCHAR CFSTR_INETURLW[] =
+    { 'U','n','i','f','o','r','m','R','e','s','o','u','r','c','e','L','o','c','a','t','o','r','W',0 };
+static const WCHAR CFSTR_PREFERREDDROPEFFECTW[] =
+    { 'P','r','e','f','e','r','r','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 };
+static const WCHAR CFSTR_PERFORMEDDROPEFFECTW[] =
+    { 'P','e','r','f','o','r','m','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 };
+static const WCHAR CFSTR_PASTESUCCEEDEDW[] =
+    { 'P','a','s','t','e',' ','S','u','c','c','e','e','d','e','d',0 };
+static const WCHAR CFSTR_INDRAGLOOPW[] =
+    { 'I','n','S','h','e','l','l','D','r','a','g','L','o','o','p',0 };
+static const WCHAR CFSTR_DRAGCONTEXTW[] =
+    { 'D','r','a','g','C','o','n','t','e','x','t',0 };
+static const WCHAR CFSTR_MOUNTEDVOLUMEW[] =
+    { 'M','o','u','n','t','e','d','V','o','l','u','m','e',0 };
+static const WCHAR CFSTR_PERSISTEDDATAOBJECTW[] =
+    { 'P','e','r','s','i','s','t','e','d','D','a','t','a','O','b','j','e','c','t',0 };
+static const WCHAR CFSTR_TARGETCLSIDW[] =
+    { 'T','a','r','g','e','t','C','L','S','I','D',0 };
+static const WCHAR CFSTR_AUTOPLAY_SHELLIDLISTSW[] =
+    { 'A','u','t','o','p','l','a','y',' ','E','n','u','m','e','r','a','t','e','d',
+      ' ','I','D','L','i','s','t',' ','A','r','r','a','y',0 };
+static const WCHAR CFSTR_LOGICALPERFORMEDDROPEFFECTW[] =
+    { 'L','o','g','i','c','a','l',' ','P','e','r','f','o','r','m','e','d',
+      ' ','D','r','o','p','E','f','f','e','c','t',0 };
+#endif
+
+#define CFSTR_SHELLIDLIST           WINELIB_NAME_AW(CFSTR_SHELLIDLIST)
+#define CFSTR_SHELLIDLISTOFFSET     WINELIB_NAME_AW(CFSTR_SHELLIDLISTOFFSET)
+#define CFSTR_NETRESOURCES          WINELIB_NAME_AW(CFSTR_NETRESOURCES)
+#define CFSTR_FILEDESCRIPTOR        WINELIB_NAME_AW(CFSTR_FILEDESCRIPTOR)
+#define CFSTR_FILECONTENTS          WINELIB_NAME_AW(CFSTR_FILECONTENTS)
+#define CFSTR_FILENAME              WINELIB_NAME_AW(CFSTR_FILENAME)
+#define CFSTR_FILENAMEMAP           WINELIB_NAME_AW(CFSTR_FILENAMEMAP)
+#define CFSTR_PRINTERGROUP          WINELIB_NAME_AW(CFSTR_PRINTERGROUP)
+#define CFSTR_SHELLURL              WINELIB_NAME_AW(CFSTR_SHELLURL)
+#define CFSTR_INETURL               WINELIB_NAME_AW(CFSTR_INETURL)
+#define CFSTR_PREFERREDDROPEFFECT   WINELIB_NAME_AW(CFSTR_PREFERREDDROPEFFECT)
+#define CFSTR_PERFORMEDDROPEFFECT   WINELIB_NAME_AW(CFSTR_PERFORMEDDROPEFFECT)
+#define CFSTR_PASTESUCCEEDED        WINELIB_NAME_AW(CFSTR_PASTESUCCEEDED)
+#define CFSTR_INDRAGLOOP            WINELIB_NAME_AW(CFSTR_INDRAGLOOP)
+#define CFSTR_DRAGCONTEXT           WINELIB_NAME_AW(CFSTR_DRAGCONTEXT)
+#define CFSTR_MOUNTEDVOLUME         WINELIB_NAME_AW(CFSTR_MOUNTEDVOLUME)
+#define CFSTR_PERSISTEDDATAOBJECT   WINELIB_NAME_AW(CFSTR_PERSISTEDDATAOBJECT)
+#define CFSTR_TARGETCLSID           WINELIB_NAME_AW(CFSTR_TARGETCLSID)
+#define CFSTR_AUTOPLAY_SHELLIDLISTS WINELIB_NAME_AW(CFSTR_AUTOPLAY_SHELLIDLISTS)
+#define CFSTR_LOGICALPERFORMEDDROPEFFECT WINELIB_NAME_AW(CFSTR_LOGICALPERFORMEDDROPEFFECT)
+
+typedef struct
+{	UINT cidl;
+	UINT aoffset[1];
+} CIDA, *LPIDA;
+
+/************************************************************************
+* IShellView interface
+*/
+
+#define FCIDM_SHVIEWFIRST       0x0000
+/* undocumented */
+#define FCIDM_SHVIEW_ARRANGE    0x7001
+#define FCIDM_SHVIEW_DELETE     0x7011
+#define FCIDM_SHVIEW_PROPERTIES 0x7013
+#define FCIDM_SHVIEW_CUT        0x7018
+#define FCIDM_SHVIEW_COPY       0x7019
+#define FCIDM_SHVIEW_INSERT     0x701A
+#define FCIDM_SHVIEW_UNDO       0x701B
+#define FCIDM_SHVIEW_INSERTLINK 0x701C
+#define FCIDM_SHVIEW_SELECTALL  0x7021
+#define FCIDM_SHVIEW_INVERTSELECTION 0x7022
+
+#define FCIDM_SHVIEW_BIGICON    0x7029
+#define FCIDM_SHVIEW_SMALLICON  0x702A
+#define FCIDM_SHVIEW_LISTVIEW   0x702B
+#define FCIDM_SHVIEW_REPORTVIEW 0x702C
+/* 0x7030-0x703f are used by the shellbrowser */
+#define FCIDM_SHVIEW_AUTOARRANGE 0x7031
+#define FCIDM_SHVIEW_SNAPTOGRID 0x7032
+
+#define FCIDM_SHVIEW_HELP       0x7041
+#define FCIDM_SHVIEW_RENAME     0x7050
+#define FCIDM_SHVIEW_CREATELINK 0x7051
+#define FCIDM_SHVIEW_NEWLINK    0x7052
+#define FCIDM_SHVIEW_NEWFOLDER  0x7053
+
+#define FCIDM_SHVIEW_REFRESH    0x7100 /* FIXME */
+#define FCIDM_SHVIEW_EXPLORE    0x7101 /* FIXME */
+#define FCIDM_SHVIEW_OPEN       0x7102 /* FIXME */
+
+#define FCIDM_SHVIEWLAST        0x7fff
+#define FCIDM_BROWSERFIRST      0xA000
+/* undocumented toolbar items from stddlg's*/
+#define FCIDM_TB_UPFOLDER       0xA001
+#define FCIDM_TB_NEWFOLDER      0xA002
+#define FCIDM_TB_SMALLICON      0xA003
+#define FCIDM_TB_REPORTVIEW     0xA004
+#define FCIDM_TB_DESKTOP        0xA005  /* FIXME */
+
+#define FCIDM_BROWSERLAST       0xbf00
+#define FCIDM_GLOBALFIRST       0x8000
+#define FCIDM_GLOBALLAST        0x9fff
+
+/*
+* Global submenu IDs and separator IDs
+*/
+#define FCIDM_MENU_FILE             (FCIDM_GLOBALFIRST+0x0000)
+#define FCIDM_MENU_EDIT             (FCIDM_GLOBALFIRST+0x0040)
+#define FCIDM_MENU_VIEW             (FCIDM_GLOBALFIRST+0x0080)
+#define FCIDM_MENU_VIEW_SEP_OPTIONS (FCIDM_GLOBALFIRST+0x0081)
+#define FCIDM_MENU_TOOLS            (FCIDM_GLOBALFIRST+0x00c0)
+#define FCIDM_MENU_TOOLS_SEP_GOTO   (FCIDM_GLOBALFIRST+0x00c1)
+#define FCIDM_MENU_HELP             (FCIDM_GLOBALFIRST+0x0100)
+#define FCIDM_MENU_FIND             (FCIDM_GLOBALFIRST+0x0140)
+#define FCIDM_MENU_EXPLORE          (FCIDM_GLOBALFIRST+0x0150)
+#define FCIDM_MENU_FAVORITES        (FCIDM_GLOBALFIRST+0x0170)
+
+/* control IDs known to the view */
+#define FCIDM_TOOLBAR      (FCIDM_BROWSERFIRST + 0)
+#define FCIDM_STATUS       (FCIDM_BROWSERFIRST + 1)
+
+
+/****************************************************************************
+ * IShellIcon interface
+ */
+
+#define INTERFACE IShellIcon
+DECLARE_INTERFACE_(IShellIcon,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IShellIcon methods ***/
+    STDMETHOD(GetIconOf)(THIS_ LPCITEMIDLIST pidl, UINT flags, LPINT lpIconIndex) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IShellIcon_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
+#define IShellIcon_AddRef(p)                  (p)->lpVtbl->AddRef(p)
+#define IShellIcon_Release(p)                 (p)->lpVtbl->Release(p)
+/*** IShellIcon methods ***/
+#define IShellIcon_GetIconOf(p,a,b,c)         (p)->lpVtbl->GetIconOf(p,a,b,c)
+#endif
+
+typedef IShellIcon *LPSHELLICON;
+
+/* IQueryInfo interface */
+#define INTERFACE IQueryInfo
+DECLARE_INTERFACE_(IQueryInfo,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IQueryInfo methods ***/
+    STDMETHOD(GetInfoTip)(THIS_ DWORD dwFlags, WCHAR** lppTips) PURE;
+    STDMETHOD(GetInfoFlags)(THIS_ DWORD* lpFlags) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IQueryInfo_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
+#define IQueryInfo_AddRef(p)                  (p)->lpVtbl->AddRef(p)
+#define IQueryInfo_Release(p)                 (p)->lpVtbl->Release(p)
+/*** IQueryInfo methods ***/
+#define IQueryInfo_GetInfoTip(p,a,b)          (p)->lpVtbl->GetInfoTip(p,a,b)
+#define IQueryInfo_GetInfoFlags(p,a)          (p)->lpVtbl->GetInfoFlags(p,a)
+#endif
+
+/* IInputObject interface */
+#define INTERFACE IInputObject
+DECLARE_INTERFACE_(IInputObject,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IInputObject methods ***/
+    STDMETHOD(UIActivateIO)(THIS_ BOOL bActivating, LPMSG lpMsg) PURE;
+    STDMETHOD(HasFocusIO)(THIS) PURE;
+    STDMETHOD(TranslateAcceleratorIO)(THIS_ LPMSG lpMsg) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IInputObject_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
+#define IInputObject_AddRef(p)                   (p)->lpVtbl->AddRef(p)
+#define IInputObject_Release(p)                  (p)->lpVtbl->Release(p)
+/*** IInputObject methods ***/
+#define IInputObject_UIActivateIO(p,a,b)         (p)->lpVtbl->UIActivateIO(p,a,b)
+#define IInputObject_HasFocusIO(p)               (p)->lpVtbl->HasFocusIO(p)
+#define IInputObject_TranslateAcceleratorIO(p,a) (p)->lpVtbl->TranslateAcceleratorIO(p,a)
+#endif
+
+/* IInputObjectSite interface */
+#define INTERFACE IInputObjectSite
+DECLARE_INTERFACE_(IInputObjectSite,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    /*** IInputObjectSite methods ***/
+    STDMETHOD(OnFocusChangeIS)(THIS_ LPUNKNOWN lpUnknown, BOOL bFocus) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IInputObjectSite_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
+#define IInputObjectSite_AddRef(p)              (p)->lpVtbl->AddRef(p)
+#define IInputObjectSite_Release(p)             (p)->lpVtbl->Release(p)
+/*** IInputObject methods ***/
+#define IInputObjectSite_OnFocusChangeIS(p,a,b) (p)->lpVtbl->OnFocusChangeIS(p,a,b)
+#endif
+
+/* IObjMgr interface */
+#define INTERFACE IObjMgr
+DECLARE_INTERFACE_(IObjMgr,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    /*** IObjMgr methods ***/
+    STDMETHOD(Append)(THIS_ LPUNKNOWN punk) PURE;
+    STDMETHOD(Remove)(THIS_ LPUNKNOWN punk) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IObjMgr_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
+#define IObjMgr_AddRef(p)              (p)->lpVtbl->AddRef(p)
+#define IObjMgr_Release(p)             (p)->lpVtbl->Release(p)
+/*** IObjMgr methods ***/
+#define IObjMgr_Append(p,a) (p)->lpVtbl->Append(p,a)
+#define IObjMgr_Remove(p,a) (p)->lpVtbl->Remove(p,a)
+#endif
+
+/* IACList interface */
+#define INTERFACE IACList
+DECLARE_INTERFACE_(IACList,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    /*** IACList methods ***/
+    STDMETHOD(Expand)(THIS_ LPCOLESTR str) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IACList_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
+#define IACList_AddRef(p)              (p)->lpVtbl->AddRef(p)
+#define IACList_Release(p)             (p)->lpVtbl->Release(p)
+/*** IACList methods ***/
+#define IACList_Expand(p,a)             (p)->lpVtbl->Expand(p,a)
+#endif
+
+/* IACList2 interface */
+#define INTERFACE IACList2
+DECLARE_INTERFACE_(IACList2,IACList)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    /*** IACList methods ***/
+    STDMETHOD(Expand)(THIS_ LPCOLESTR str) PURE;
+    /*** IACList2 methods ***/
+    STDMETHOD(SetOptions)(THIS_ DWORD dwFlag) PURE;
+    STDMETHOD(GetOptions)(THIS_ DWORD* pdwFlag) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IACList2_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
+#define IACList2_AddRef(p)              (p)->lpVtbl->AddRef(p)
+#define IACList2_Release(p)             (p)->lpVtbl->Release(p)
+/*** IACList2 methods ***/
+#define IACList2_GetOptions(p,a)        (p)->lpVtbl->GetOptions(p,a)
+#define IACList2_SetOptions(p,a)        (p)->lpVtbl->SetOptions(p,a)
+#endif
+
+/* IProgressDialog interface */
+#define PROGDLG_NORMAL           0x00000000
+#define PROGDLG_MODAL            0x00000001
+#define PROGDLG_AUTOTIME         0x00000002
+#define PROGDLG_NOTIME           0x00000004
+#define PROGDLG_NOMINIMIZE       0x00000008
+#define PROGDLG_NOPROGRESSBAR    0x00000010
+#define PROGDLG_MARQUEEPROGRESS  0x00000020
+#define PROGDLG_NOCANCEL         0x00000040
+
+#define PDTIMER_RESET            0x00000001
+#define PDTIMER_PAUSE            0x00000002
+#define PDTIMER_RESUME           0x00000003
+
+#define INTERFACE IProgressDialog
+DECLARE_INTERFACE_(IProgressDialog,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    /*** IProgressDialog methods ***/
+    STDMETHOD(StartProgressDialog)(THIS_ HWND hwndParent, IUnknown *punkEnableModeless, DWORD dwFlags, LPCVOID reserved) PURE;
+    STDMETHOD(StopProgressDialog)(THIS) PURE;
+    STDMETHOD(SetTitle)(THIS_ LPCWSTR pwzTitle) PURE;
+    STDMETHOD(SetAnimation)(THIS_ HINSTANCE hInstance, UINT uiResourceId) PURE;
+    STDMETHOD_(BOOL,HasUserCancelled)(THIS) PURE;
+    STDMETHOD(SetProgress)(THIS_ DWORD dwCompleted, DWORD dwTotal) PURE;
+    STDMETHOD(SetProgress64)(THIS_ ULONGLONG ullCompleted, ULONGLONG ullTotal) PURE;
+    STDMETHOD(SetLine)(THIS_ DWORD dwLineNum, LPCWSTR pwzString, BOOL bPath, LPCVOID reserved) PURE;
+    STDMETHOD(SetCancelMsg)(THIS_ LPCWSTR pwzCancelMsg, LPCVOID reserved) PURE;
+    STDMETHOD(Timer)(THIS_ DWORD dwTimerAction, LPCVOID reserved) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IProgressDialog_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
+#define IProgressDialog_AddRef(p)              (p)->lpVtbl->AddRef(p)
+#define IProgressDialog_Release(p)             (p)->lpVtbl->Release(p)
+/*** IProgressDialog methods ***/
+#define IProgressDialog_StartProgressDialog(p,a,b,c,d)    (p)->lpVtbl->StartProgressDialog(p,a,b,c,d)
+#define IProgressDialog_StopProgressDialog(p)             (p)->lpVtbl->StopProgressDialog(p)
+#define IProgressDialog_SetTitle(p,a)                     (p)->lpVtbl->SetTitle(p,a)
+#define IProgressDialog_SetAnimation(p,a,b)               (p)->lpVtbl->SetAnimation(p,a,b)
+#define IProgressDialog_HasUserCancelled(p)               (p)->lpVtbl->HasUserCancelled(p)
+#define IProgressDialog_SetProgress(p,a,b)                (p)->lpVtbl->SetProgress(p,a,b)
+#define IProgressDialog_SetProgress64(p,a,b)              (p)->lpVtbl->SetProgress64(p,a,b)
+#define IProgressDialog_SetLine(p,a,b,c,d)                (p)->lpVtbl->SetLine(p,a,b,c,d)
+#define IProgressDialog_SetCancelMsg(p,a,b)               (p)->lpVtbl->SetCancelMsg(p,a,b)
+#define IProgressDialog_Timer(p,a,b)                      (p)->lpVtbl->Timer(p,a,b)
+#endif
+
+
+/****************************************************************************
+* SHAddToRecentDocs API
+*/
+#define SHARD_PIDL      0x00000001L
+#define SHARD_PATHA     0x00000002L
+#define SHARD_PATHW     0x00000003L
+#define SHARD_PATH WINELIB_NAME_AW(SHARD_PATH)
+
+void WINAPI SHAddToRecentDocs(UINT,LPCVOID);
+
+/****************************************************************************
+ * SHBrowseForFolder API
+ */
+typedef INT (CALLBACK *BFFCALLBACK)(HWND,UINT,LPARAM,LPARAM);
+
+#include <pshpack8.h>
+
+typedef struct tagBROWSEINFOA {
+    HWND        hwndOwner;
+    LPCITEMIDLIST pidlRoot;
+    LPSTR         pszDisplayName;
+    LPCSTR        lpszTitle;
+    UINT        ulFlags;
+    BFFCALLBACK   lpfn;
+    LPARAM        lParam;
+    INT         iImage;
+} BROWSEINFOA, *PBROWSEINFOA, *LPBROWSEINFOA;
+
+typedef struct tagBROWSEINFOW {
+    HWND        hwndOwner;
+    LPCITEMIDLIST pidlRoot;
+    LPWSTR        pszDisplayName;
+    LPCWSTR       lpszTitle;
+    UINT        ulFlags;
+    BFFCALLBACK   lpfn;
+    LPARAM        lParam;
+    INT         iImage;
+} BROWSEINFOW, *PBROWSEINFOW, *LPBROWSEINFOW;
+
+#define BROWSEINFO   WINELIB_NAME_AW(BROWSEINFO)
+#define PBROWSEINFO  WINELIB_NAME_AW(PBROWSEINFO)
+#define LPBROWSEINFO WINELIB_NAME_AW(LPBROWSEINFO)
+
+#include <poppack.h>
+
+/* Browsing for directory. */
+#define BIF_RETURNONLYFSDIRS   0x0001
+#define BIF_DONTGOBELOWDOMAIN  0x0002
+#define BIF_STATUSTEXT         0x0004
+#define BIF_RETURNFSANCESTORS  0x0008
+#define BIF_EDITBOX            0x0010
+#define BIF_VALIDATE           0x0020
+#define BIF_NEWDIALOGSTYLE     0x0040
+#define BIF_USENEWUI           (BIF_NEWDIALOGSTYLE | BIF_EDITBOX)
+#define BIF_BROWSEINCLUDEURLS  0x0080
+#define BIF_UAHINT             0x0100
+#define BIF_NONEWFOLDERBUTTON  0x0200
+#define BIF_NOTRANSLATETARGETS 0x0400
+
+#define BIF_BROWSEFORCOMPUTER  0x1000
+#define BIF_BROWSEFORPRINTER   0x2000
+#define BIF_BROWSEINCLUDEFILES 0x4000
+
+/* message from browser */
+#define BFFM_INITIALIZED        1
+#define BFFM_SELCHANGED         2
+#define BFFM_VALIDATEFAILEDA    3
+#define BFFM_VALIDATEFAILEDW    4
+#define BFFM_IUNKNOWN           5
+
+/* messages to browser */
+#define BFFM_SETSTATUSTEXTA     (WM_USER+100)
+#define BFFM_ENABLEOK           (WM_USER+101)
+#define BFFM_SETSELECTIONA      (WM_USER+102)
+#define BFFM_SETSELECTIONW      (WM_USER+103)
+#define BFFM_SETSTATUSTEXTW     (WM_USER+104)
+#define BFFM_SETOKTEXT          (WM_USER+105)
+#define BFFM_SETEXPANDED        (WM_USER+106)
+
+LPITEMIDLIST WINAPI SHBrowseForFolderA(LPBROWSEINFOA lpbi);
+LPITEMIDLIST WINAPI SHBrowseForFolderW(LPBROWSEINFOW lpbi);
+#define SHBrowseForFolder	 WINELIB_NAME_AW(SHBrowseForFolder)
+#define BFFM_SETSTATUSTEXT  WINELIB_NAME_AW(BFFM_SETSTATUSTEXT)
+#define BFFM_SETSELECTION   WINELIB_NAME_AW(BFFM_SETSELECTION)
+#define BFFM_VALIDATEFAILED WINELIB_NAME_AW(BFFM_VALIDATEFAILED)
+
+/**********************************************************************
+ * SHCreateShellFolderViewEx API
+ */
+
+typedef HRESULT (CALLBACK *LPFNVIEWCALLBACK)(
+	IShellView* dwUser,
+	IShellFolder* pshf,
+	HWND hWnd,
+	UINT uMsg,
+	WPARAM wParam,
+	LPARAM lParam);
+
+typedef struct _CSFV
+{
+  UINT             cbSize;
+  IShellFolder*    pshf;
+  IShellView*      psvOuter;
+  LPCITEMIDLIST    pidl;
+  LONG             lEvents;
+  LPFNVIEWCALLBACK pfnCallback;
+  FOLDERVIEWMODE   fvm;
+} CSFV, *LPCSFV;
+
+HRESULT WINAPI SHCreateShellFolderViewEx(LPCSFV pshfvi, IShellView **ppshv);
+
+/* SHCreateShellFolderViewEx callback messages */
+#define SFVM_MERGEMENU                 1
+#define SFVM_INVOKECOMMAND             2
+#define SFVM_GETHELPTEXT               3
+#define SFVM_GETTOOLTIPTEXT            4
+#define SFVM_GETBUTTONINFO             5
+#define SFVM_GETBUTTONS                6
+#define SFVM_INITMENUPOPUP             7
+#define SFVM_SELECTIONCHANGED          8 /* undocumented */
+#define SFVM_DRAWMENUITEM              9 /* undocumented */
+#define SFVM_MEASUREMENUITEM          10 /* undocumented */
+#define SFVM_EXITMENULOOP             11 /* undocumented */
+#define SFVM_VIEWRELEASE              12 /* undocumented */
+#define SFVM_GETNAMELENGTH            13 /* undocumented */
+#define SFVM_FSNOTIFY                 14
+#define SFVM_WINDOWCREATED            15
+#define SFVM_WINDOWCLOSING            16 /* undocumented */
+#define SFVM_LISTREFRESHED            17 /* undocumented */
+#define SFVM_WINDOWFOCUSED            18 /* undocumented */
+#define SFVM_REGISTERCOPYHOOK         20 /* undocumented */
+#define SFVM_COPYHOOKCALLBACK         21 /* undocumented */
+#define SFVM_GETDETAILSOF             23
+#define SFVM_COLUMNCLICK              24
+#define SFVM_QUERYFSNOTIFY            25
+#define SFVM_DEFITEMCOUNT             26
+#define SFVM_DEFVIEWMODE              27
+#define SFVM_UNMERGEFROMMENU          28
+#define SFVM_ADDINGOBJECT             29 /* undocumented */
+#define SFVM_REMOVINGOBJECT           30 /* undocumented */
+#define SFVM_UPDATESTATUSBAR          31
+#define SFVM_BACKGROUNDENUM           32
+#define SFVM_GETCOMMANDDIR            33 /* undocumented */
+#define SFVM_GETCOLUMNSTREAM          34 /* undocumented */
+#define SFVM_CANSELECTALL             35 /* undocumented */
+#define SFVM_DIDDRAGDROP              36
+#define SFVM_ISSTRICTREFRESH          37 /* undocumented */
+#define SFVM_ISCHILDOBJECT            38 /* undocumented */
+#define SFVM_SETISFV                  39
+#define SFVM_GETEXTVIEWS              40 /* undocumented */
+#define SFVM_THISIDLIST               41
+#define SFVM_ADDPROPERTYPAGES         47
+#define SFVM_BACKGROUNDENUMDONE       48
+#define SFVM_GETNOTIFY                49
+#define SFVM_GETSORTDEFAULTS          53
+#define SFVM_SIZE                     57
+#define SFVM_GETZONE                  58
+#define SFVM_GETPANE                  59
+#define SFVM_GETHELPTOPIC             63
+#define SFVM_GETANIMATION             68
+#define SFVM_GET_CUSTOMVIEWINFO       77 /* undocumented */
+#define SFVM_ENUMERATEDITEMS          79 /* undocumented */
+#define SFVM_GET_VIEW_DATA            80 /* undocumented */
+#define SFVM_GET_WEBVIEW_LAYOUT       82 /* undocumented */
+#define SFVM_GET_WEBVIEW_CONTENT      83 /* undocumented */
+#define SFVM_GET_WEBVIEW_TASKS        84 /* undocumented */
+#define SFVM_GET_WEBVIEW_THEME        86 /* undocumented */
+#define SFVM_GETDEFERREDVIEWSETTINGS  92 /* undocumented */
+
+/* Types and definitions for the SFM_* parameters */
+#include <pshpack8.h>
+
+#define QCMINFO_PLACE_BEFORE          0
+#define QCMINFO_PLACE_AFTER           1
+typedef struct _QCMINFO_IDMAP_PLACEMENT
+{
+    UINT id;
+    UINT fFlags;
+} QCMINFO_IDMAP_PLACEMENT;
+
+typedef struct _QCMINFO_IDMAP
+{
+    UINT nMaxIds;
+    QCMINFO_IDMAP_PLACEMENT pIdList[1];
+} QCMINFO_IDMAP;
+
+typedef struct _QCMINFO
+{
+    HMENU hmenu;
+    UINT indexMenu;
+    UINT idCmdFirst;
+    UINT idCmdLast;
+    QCMINFO_IDMAP const* pIdMap;
+} QCMINFO, *LPQCMINFO;
+
+#define TBIF_DEFAULT           0x00000000
+#define TBIF_APPEND            0x00000000
+#define TBIF_PREPEND           0x00000001
+#define TBIF_REPLACE           0x00000002
+#define TBIF_INTERNETBAR       0x00010000
+#define TBIF_STANDARDTOOLBAR   0x00020000
+#define TBIF_NOTOOLBAR         0x00030000
+
+typedef struct _TBINFO
+{
+    UINT cbuttons;
+    UINT uFlags;
+} TBINFO, *LPTBINFO;
+
+#include <poppack.h>
+
+/****************************************************************************
+*	SHShellFolderView_Message API
+*/
+
+LRESULT WINAPI SHShellFolderView_Message(
+	HWND hwndCabinet,
+	UINT uMessage,
+	LPARAM lParam);
+
+/* SHShellFolderView_Message messages */
+#define SFVM_REARRANGE          0x0001
+#define SFVM_GETARRANGECOLUMN   0x0002 /* undocumented */
+#define SFVM_ADDOBJECT          0x0003
+#define SFVM_GETITEMCOUNT       0x0004 /* undocumented */
+#define SFVM_GETITEMPIDL        0x0005 /* undocumented */
+#define SFVM_REMOVEOBJECT       0x0006
+#define SFVM_UPDATEOBJECT       0x0007
+#define SFVM_SETREDRAW          0x0008 /* undocumented */
+#define SFVM_GETSELECTEDOBJECTS 0x0009
+#define SFVM_ISDROPONSOURCE     0x000A /* undocumented */
+#define SFVM_MOVEICONS          0x000B /* undocumented */
+#define SFVM_GETDRAGPOINT       0x000C /* undocumented */
+#define SFVM_GETDROPPOINT       0x000D /* undocumented */
+#define SFVM_SETITEMPOS         0x000E
+#define SFVM_ISDROPONBACKGROUND 0x000F /* undocumented */
+#define SFVM_SETCLIPBOARD       0x0010
+#define SFVM_TOGGLEAUTOARRANGE  0x0011 /* undocumented */
+#define SFVM_LINEUPICONS        0x0012 /* undocumented */
+#define SFVM_GETAUTOARRANGE     0x0013 /* undocumented */
+#define SFVM_GETSELECTEDCOUNT   0x0014 /* undocumented */
+#define SFVM_GETITEMSPACING     0x0015 /* undocumented */
+#define SFVM_REFRESHOBJECT      0x0016 /* undocumented */
+#define SFVM_SETPOINTS          0x0017
+
+/****************************************************************************
+*	SHGetDataFromIDList API
+*/
+#define SHGDFIL_FINDDATA        1
+#define SHGDFIL_NETRESOURCE     2
+#define SHGDFIL_DESCRIPTIONID   3
+
+#define SHDID_ROOT_REGITEM          1
+#define SHDID_FS_FILE               2
+#define SHDID_FS_DIRECTORY          3
+#define SHDID_FS_OTHER              4
+#define SHDID_COMPUTER_DRIVE35      5
+#define SHDID_COMPUTER_DRIVE525     6
+#define SHDID_COMPUTER_REMOVABLE    7
+#define SHDID_COMPUTER_FIXED        8
+#define SHDID_COMPUTER_NETDRIVE     9
+#define SHDID_COMPUTER_CDROM        10
+#define SHDID_COMPUTER_RAMDISK      11
+#define SHDID_COMPUTER_OTHER        12
+#define SHDID_NET_DOMAIN            13
+#define SHDID_NET_SERVER            14
+#define SHDID_NET_SHARE             15
+#define SHDID_NET_RESTOFNET         16
+#define SHDID_NET_OTHER             17
+#define SHDID_COMPUTER_IMAGING      18
+#define SHDID_COMPUTER_AUDIO        19
+#define SHDID_COMPUTER_SHAREDDOCS   20
+
+#include <pshpack8.h>
+
+typedef struct _SHDESCRIPTIONID
+{   DWORD   dwDescriptionId;
+    CLSID   clsid;
+} SHDESCRIPTIONID, *LPSHDESCRIPTIONID;
+
+#include <poppack.h>
+
+HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID pv, int cb);
+HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID pv, int cb);
+#define  SHGetDataFromIDList WINELIB_NAME_AW(SHGetDataFromIDList)
+
+BOOL WINAPI SHGetSpecialFolderPathA (HWND hwndOwner, LPSTR szPath, int nFolder, BOOL bCreate);
+BOOL WINAPI SHGetSpecialFolderPathW (HWND hwndOwner, LPWSTR szPath, int nFolder, BOOL bCreate);
+#define  SHGetSpecialFolderPath WINELIB_NAME_AW(SHGetSpecialFolderPath)
+
+HRESULT WINAPI SHGetMalloc(LPMALLOC *lpmal) ;
+
+/**********************************************************************
+ * SHGetSetSettings ()
+ */
+
+typedef struct
+{
+    BOOL fShowAllObjects : 1;
+    BOOL fShowExtensions : 1;
+    BOOL fNoConfirmRecycle : 1;
+
+    BOOL fShowSysFiles : 1;
+    BOOL fShowCompColor : 1;
+    BOOL fDoubleClickInWebView : 1;
+    BOOL fDesktopHTML : 1;
+    BOOL fWin95Classic : 1;
+    BOOL fDontPrettyPath : 1;
+    BOOL fShowAttribCol : 1;
+    BOOL fMapNetDrvBtn : 1;
+    BOOL fShowInfoTip : 1;
+    BOOL fHideIcons : 1;
+    BOOL fWebView : 1;
+    BOOL fFilter : 1;
+    BOOL fShowSuperHidden : 1;
+    BOOL fNoNetCrawling : 1;
+
+    UINT :15; /* Required for proper binary layout with gcc */
+    DWORD dwWin95Unused;
+    UINT  uWin95Unused;
+    LONG   lParamSort;
+    int    iSortDirection;
+    UINT   version;
+    UINT uNotUsed;
+    BOOL fSepProcess: 1;
+    BOOL fStartPanelOn: 1;
+    BOOL fShowStartPage: 1;
+    UINT fSpareFlags : 13;
+    UINT :15; /* Required for proper binary layout with gcc */
+} SHELLSTATE, *LPSHELLSTATE;
+
+/**********************************************************************
+ * SHGetSettings ()
+ */
+typedef struct
+{	BOOL fShowAllObjects : 1;
+	BOOL fShowExtensions : 1;
+	BOOL fNoConfirmRecycle : 1;
+	BOOL fShowSysFiles : 1;
+
+	BOOL fShowCompColor : 1;
+	BOOL fDoubleClickInWebView : 1;
+	BOOL fDesktopHTML : 1;
+	BOOL fWin95Classic : 1;
+
+	BOOL fDontPrettyPath : 1;
+	BOOL fShowAttribCol : 1;
+	BOOL fMapNetDrvBtn : 1;
+	BOOL fShowInfoTip : 1;
+
+	BOOL fHideIcons : 1;
+	UINT fRestFlags : 3;
+	UINT :15; /* Required for proper binary layout with gcc */
+} SHELLFLAGSTATE, * LPSHELLFLAGSTATE;
+
+VOID WINAPI SHGetSettings(LPSHELLFLAGSTATE lpsfs, DWORD dwMask);
+
+#define SSF_SHOWALLOBJECTS		0x0001
+#define SSF_SHOWEXTENSIONS		0x0002
+#define SSF_SHOWCOMPCOLOR		0x0008
+#define SSF_SHOWSYSFILES		0x0020
+#define SSF_DOUBLECLICKINWEBVIEW	0x0080
+#define SSF_SHOWATTRIBCOL		0x0100
+#define SSF_DESKTOPHTML			0x0200
+#define SSF_WIN95CLASSIC		0x0400
+#define SSF_DONTPRETTYPATH		0x0800
+#define SSF_SHOWINFOTIP			0x2000
+#define SSF_MAPNETDRVBUTTON		0x1000
+#define SSF_NOCONFIRMRECYCLE		0x8000
+#define SSF_HIDEICONS			0x4000
+
+/****************************************************************************
+* SHRestricted API
+*/
+typedef enum RESTRICTIONS
+{
+	REST_NONE			= 0x00000000,
+	REST_NORUN			= 0x00000001,
+	REST_NOCLOSE			= 0x00000002,
+	REST_NOSAVESET			= 0x00000004,
+	REST_NOFILEMENU			= 0x00000008,
+	REST_NOSETFOLDERS		= 0x00000010,
+	REST_NOSETTASKBAR		= 0x00000020,
+	REST_NODESKTOP			= 0x00000040,
+	REST_NOFIND			= 0x00000080,
+	REST_NODRIVES			= 0x00000100,
+	REST_NODRIVEAUTORUN		= 0x00000200,
+	REST_NODRIVETYPEAUTORUN		= 0x00000400,
+	REST_NONETHOOD			= 0x00000800,
+	REST_STARTBANNER		= 0x00001000,
+	REST_RESTRICTRUN		= 0x00002000,
+	REST_NOPRINTERTABS		= 0x00004000,
+	REST_NOPRINTERDELETE		= 0x00008000,
+	REST_NOPRINTERADD		= 0x00010000,
+	REST_NOSTARTMENUSUBFOLDERS	= 0x00020000,
+	REST_MYDOCSONNET		= 0x00040000,
+	REST_NOEXITTODOS		= 0x00080000,
+	REST_ENFORCESHELLEXTSECURITY	= 0x00100000,
+	REST_LINKRESOLVEIGNORELINKINFO	= 0x00200000,
+	REST_NOCOMMONGROUPS		= 0x00400000,
+	REST_SEPARATEDESKTOPPROCESS	= 0x00800000,
+	REST_NOWEB			= 0x01000000,
+	REST_NOTRAYCONTEXTMENU		= 0x02000000,
+	REST_NOVIEWCONTEXTMENU		= 0x04000000,
+	REST_NONETCONNECTDISCONNECT	= 0x08000000,
+	REST_STARTMENULOGOFF		= 0x10000000,
+	REST_NOSETTINGSASSIST		= 0x20000000,
+	REST_NOINTERNETICON		= 0x40000001,
+	REST_NORECENTDOCSHISTORY,
+	REST_NORECENTDOCSMENU,
+	REST_NOACTIVEDESKTOP,
+	REST_NOACTIVEDESKTOPCHANGES,
+	REST_NOFAVORITESMENU,
+	REST_CLEARRECENTDOCSONEXIT,
+	REST_CLASSICSHELL,
+	REST_NOCUSTOMIZEWEBVIEW,
+
+	REST_NOHTMLWALLPAPER		= 0x40000010,
+	REST_NOCHANGINGWALLPAPER,
+	REST_NODESKCOMP,
+	REST_NOADDDESKCOMP,
+	REST_NODELDESKCOMP,
+	REST_NOCLOSEDESKCOMP,
+	REST_NOCLOSE_DRAGDROPBAND,
+	REST_NOMOVINGBAND,
+	REST_NOEDITDESKCOMP,
+	REST_NORESOLVESEARCH,
+	REST_NORESOLVETRACK,
+	REST_FORCECOPYACLWITHFILE,
+	REST_NOLOGO3CHANNELNOTIFY,
+	REST_NOFORGETSOFTWAREUPDATE,
+	REST_NOSETACTIVEDESKTOP,
+	REST_NOUPDATEWINDOWS,
+	REST_NOCHANGESTARMENU,		/* 0x40000020 */
+	REST_NOFOLDEROPTIONS,
+	REST_HASFINDCOMPUTERS,
+	REST_INTELLIMENUS,
+	REST_RUNDLGMEMCHECKBOX,
+	REST_ARP_ShowPostSetup,
+	REST_NOCSC,
+	REST_NOCONTROLPANEL,
+	REST_ENUMWORKGROUP,
+	REST_ARP_NOARP,
+	REST_ARP_NOREMOVEPAGE,
+	REST_ARP_NOADDPAGE,
+	REST_ARP_NOWINSETUPPAGE,
+	REST_GREYMSIADS,
+	REST_NOCHANGEMAPPEDDRIVELABEL,
+	REST_NOCHANGEMAPPEDDRIVECOMMENT,
+	REST_MaxRecentDocs,		/* 0x40000030 */
+	REST_NONETWORKCONNECTIONS,
+	REST_FORCESTARTMENULOGOFF,
+	REST_NOWEBVIEW,
+	REST_NOCUSTOMIZETHISFOLDER,
+	REST_NOENCRYPTION,
+
+	REST_ALLOWFRENCHENCRYPTION,	/* not documented */
+
+	REST_DONTSHOWSUPERHIDDEN,
+	REST_NOSHELLSEARCHBUTTON,
+	REST_NOHARDWARETAB,
+	REST_NORUNASINSTALLPROMPT,
+	REST_PROMPTRUNASINSTALLNETPATH,
+	REST_NOMANAGEMYCOMPUTERVERB,
+	REST_NORECENTDOCSNETHOOD,
+	REST_DISALLOWRUN,
+	REST_NOWELCOMESCREEN,
+	REST_RESTRICTCPL,		/* 0x40000040 */
+	REST_DISALLOWCPL,
+	REST_NOSMBALLOONTIP,
+	REST_NOSMHELP,
+	REST_NOWINKEYS,
+	REST_NOENCRYPTONMOVE,
+	REST_NOLOCALMACHINERUN,
+	REST_NOCURRENTUSERRUN,
+	REST_NOLOCALMACHINERUNONCE,
+	REST_NOCURRENTUSERRUNONCE,
+	REST_FORCEACTIVEDESKTOPON,
+	REST_NOCOMPUTERSNEARME,
+	REST_NOVIEWONDRIVE,
+	REST_NONETCRAWL,
+	REST_NOSHAREDDOCUMENTS,
+	REST_NOSMMYDOCS,
+	REST_NOSMMYPICS,		/* 0x40000050 */
+	REST_ALLOWBITBUCKDRIVES,
+	REST_NONLEGACYSHELLMODE,
+	REST_NOCONTROLPANELBARRICADE,
+	REST_NOSTARTPAGE,
+	REST_NOAUTOTRAYNOTIFY,
+	REST_NOTASKGROUPING,
+	REST_NOCDBURNING,
+	REST_MYCOMPNOPROP,
+	REST_MYDOCSNOPROP,
+	REST_NOSTARTPANEL,
+	REST_NODISPLAYAPPEARANCEPAGE,
+	REST_NOTHEMESTAB,
+	REST_NOVISUALSTYLECHOICE,
+	REST_NOSIZECHOICE,
+	REST_NOCOLORCHOICE,
+	REST_SETVISUALSTYLE,		/* 0x40000060 */
+	REST_STARTRUNNOHOMEPATH,
+	REST_NOUSERNAMEINSTARTPANEL,
+	REST_NOMYCOMPUTERICON,
+	REST_NOSMNETWORKPLACES,
+	REST_NOSMPINNEDLIST,
+	REST_NOSMMYMUSIC,
+	REST_NOSMEJECTPC,
+	REST_NOSMMOREPROGRAMS,
+	REST_NOSMMFUPROGRAMS,
+	REST_NOTRAYITEMSDISPLAY,
+	REST_NOTOOLBARSONTASKBAR,
+	/* 0x4000006C
+	   0x4000006D
+	   0x4000006E */
+	REST_NOSMCONFIGUREPROGRAMS	= 0x4000006F,
+	REST_HIDECLOCK,			/* 0x40000070 */
+	REST_NOLOWDISKSPACECHECKS,
+	REST_NOENTIRENETWORK,
+	REST_NODESKTOPCLEANUP,
+	REST_BITBUCKNUKEONDELETE,
+	REST_BITBUCKCONFIRMDELETE,
+	REST_BITBUCKNOPROP,
+	REST_NODISPBACKGROUND,
+	REST_NODISPSCREENSAVEPG,
+	REST_NODISPSETTINGSPG,
+	REST_NODISPSCREENSAVEPREVIEW,
+	REST_NODISPLAYCPL,
+	REST_HIDERUNASVERB,
+	REST_NOTHUMBNAILCACHE,
+	REST_NOSTRCMPLOGICAL,
+	REST_NOPUBLISHWIZARD,
+	REST_NOONLINEPRINTSWIZARD,	/* 0x40000080 */
+	REST_NOWEBSERVICES,
+	REST_ALLOWUNHASHEDWEBVIEW,
+	REST_ALLOWLEGACYWEBVIEW,
+	REST_REVERTWEBVIEWSECURITY,
+
+	REST_INHERITCONSOLEHANDLES	= 0x40000086,
+
+	REST_NODISCONNECT		= 0x41000001,
+	REST_NOSECURITY,
+	REST_NOFILEASSOCIATE,		/* 0x41000003 */
+} RESTRICTIONS;
+
+DWORD WINAPI SHRestricted(RESTRICTIONS rest);
+
+/****************************************************************************
+* SHChangeNotify API
+*/
+typedef struct _SHChangeNotifyEntry
+{
+    LPCITEMIDLIST pidl;
+    BOOL   fRecursive;
+} SHChangeNotifyEntry;
+
+#define SHCNE_RENAMEITEM	0x00000001
+#define SHCNE_CREATE		0x00000002
+#define SHCNE_DELETE		0x00000004
+#define SHCNE_MKDIR		0x00000008
+#define SHCNE_RMDIR		0x00000010
+#define SHCNE_MEDIAINSERTED	0x00000020
+#define SHCNE_MEDIAREMOVED	0x00000040
+#define SHCNE_DRIVEREMOVED	0x00000080
+#define SHCNE_DRIVEADD		0x00000100
+#define SHCNE_NETSHARE		0x00000200
+#define SHCNE_NETUNSHARE	0x00000400
+#define SHCNE_ATTRIBUTES	0x00000800
+#define SHCNE_UPDATEDIR		0x00001000
+#define SHCNE_UPDATEITEM	0x00002000
+#define SHCNE_SERVERDISCONNECT	0x00004000
+#define SHCNE_UPDATEIMAGE	0x00008000
+#define SHCNE_DRIVEADDGUI	0x00010000
+#define SHCNE_RENAMEFOLDER	0x00020000
+#define SHCNE_FREESPACE		0x00040000
+
+#define SHCNE_EXTENDED_EVENT	0x04000000
+#define SHCNE_ASSOCCHANGED	0x08000000
+#define SHCNE_DISKEVENTS	0x0002381F
+#define SHCNE_GLOBALEVENTS	0x0C0581E0
+#define SHCNE_ALLEVENTS		0x7FFFFFFF
+#define SHCNE_INTERRUPT		0x80000000
+
+#define SHCNEE_ORDERCHANGED	0x0002L
+#define SHCNEE_MSI_CHANGE	0x0004L
+#define SHCNEE_MSI_UNINSTALL	0x0005L
+
+#define SHCNF_IDLIST		0x0000
+#define SHCNF_PATHA		0x0001
+#define SHCNF_PRINTERA		0x0002
+#define SHCNF_DWORD		0x0003
+#define SHCNF_PATHW		0x0005
+#define SHCNF_PRINTERW		0x0006
+#define SHCNF_TYPE		0x00FF
+#define SHCNF_FLUSH		0x1000
+#define SHCNF_FLUSHNOWAIT	0x2000
+
+#define SHCNF_PATH              WINELIB_NAME_AW(SHCNF_PATH)
+#define SHCNF_PRINTER           WINELIB_NAME_AW(SHCNF_PRINTER)
+
+void WINAPI SHChangeNotify(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCVOID dwItem2);
+
+typedef enum {
+    SLDF_HAS_ID_LIST = 0x00000001,
+    SLDF_HAS_LINK_INFO = 0x00000002,
+    SLDF_HAS_NAME = 0x00000004,
+    SLDF_HAS_RELPATH = 0x00000008,
+    SLDF_HAS_WORKINGDIR = 0x00000010,
+    SLDF_HAS_ARGS = 0x00000020,
+    SLDF_HAS_ICONLOCATION = 0x00000040,
+    SLDF_UNICODE = 0x00000080,
+    SLDF_FORCE_NO_LINKINFO = 0x00000100,
+    SLDF_HAS_EXP_SZ = 0x00000200,
+    SLDF_RUN_IN_SEPARATE = 0x00000400,
+    SLDF_HAS_LOGO3ID = 0x00000800,
+    SLDF_HAS_DARWINID = 0x00001000,
+    SLDF_RUNAS_USER = 0x00002000,
+    SLDF_HAS_EXP_ICON_SZ = 0x00004000,
+    SLDF_NO_PIDL_ALIAS = 0x00008000,
+    SLDF_FORCE_UNCNAME = 0x00010000,
+    SLDF_RUN_WITH_SHIMLAYER = 0x00020000,
+    SLDF_FORCE_NO_LINKTRACK = 0x00040000,
+    SLDF_ENABLE_TARGET_METADATA = 0x00080000,
+    SLDF_DISABLE_KNOWNFOLDER_RELATIVE_TRACKING = 0x00200000,
+    SLDF_VALID = 0x003ff7ff,
+    SLDF_RESERVED = 0x80000000,
+} SHELL_LINK_DATA_FLAGS;
+
+typedef struct tagDATABLOCKHEADER
+{
+    DWORD cbSize;
+    DWORD dwSignature;
+} DATABLOCK_HEADER, *LPDATABLOCK_HEADER, *LPDBLIST;
+
+typedef struct {
+    DATABLOCK_HEADER dbh;
+    CHAR szDarwinID[MAX_PATH];
+    WCHAR szwDarwinID[MAX_PATH];
+} EXP_DARWIN_LINK, *LPEXP_DARWIN_LINK;
+
+typedef struct {
+    DWORD cbSize;
+    DWORD cbSignature;
+    CHAR szTarget[MAX_PATH];
+    WCHAR szwTarget[MAX_PATH];
+} EXP_SZ_LINK, *LPEXP_SZ_LINK;
+
+typedef struct {
+    DWORD cbSize;
+    DWORD dwSignature;
+    DWORD idSpecialFolder;
+    DWORD cbOffset;
+} EXP_SPECIAL_FOLDER, *LPEXP_SPECIAL_FOLDER;
+
+typedef struct {
+    DWORD cbSize;
+    DWORD dwSignature;
+    BYTE abPropertyStorage[1];
+} EXP_PROPERTYSTORAGE;
+
+#define EXP_SZ_LINK_SIG         0xa0000001
+#define NT_CONSOLE_PROPS_SIG    0xa0000002
+#define NT_FE_CONSOLE_PROPS_SIG 0xa0000004
+#define EXP_SPECIAL_FOLDER_SIG  0xa0000005
+#define EXP_DARWIN_ID_SIG       0xa0000006
+#define EXP_SZ_ICON_SIG         0xa0000007
+#define EXP_LOGO3_ID_SIG        EXP_SZ_ICON_SIG /* Old SDKs only */
+#define EXP_PROPERTYSTORAGE_SIG 0xa0000009
+
+typedef struct _SHChangeDWORDAsIDList {
+    USHORT   cb;
+    DWORD    dwItem1;
+    DWORD    dwItem2;
+    USHORT   cbZero;
+} SHChangeDWORDAsIDList, *LPSHChangeDWORDAsIDList;
+
+typedef struct _SHChangeProductKeyAsIDList {
+    USHORT cb;
+    WCHAR wszProductKey[39];
+    USHORT cbZero;
+} SHChangeProductKeyAsIDList, *LPSHChangeProductKeyAsIDList;
+
+ULONG WINAPI SHChangeNotifyRegister(HWND hwnd, int fSources, LONG fEvents, UINT wMsg,
+                                    int cEntries, SHChangeNotifyEntry *pshcne);
+BOOL WINAPI SHChangeNotifyDeregister(ULONG ulID);
+HANDLE WINAPI SHChangeNotification_Lock(HANDLE hChangeNotification, DWORD dwProcessId,
+                                        LPITEMIDLIST **pppidl, LONG *plEvent);
+BOOL WINAPI SHChangeNotification_Unlock(HANDLE hLock);
+
+HRESULT WINAPI SHGetRealIDL(IShellFolder *psf, LPCITEMIDLIST pidlSimple, LPITEMIDLIST * ppidlReal);
+
+/****************************************************************************
+* SHCreateDirectory API
+*/
+DWORD WINAPI SHCreateDirectory(HWND, LPCVOID);
+int WINAPI SHCreateDirectoryExA(HWND, LPCSTR, LPSECURITY_ATTRIBUTES);
+int WINAPI SHCreateDirectoryExW(HWND, LPCWSTR, LPSECURITY_ATTRIBUTES);
+
+/****************************************************************************
+* SHGetSpecialFolderLocation API
+*/
+HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, int nFolder, LPITEMIDLIST * ppidl);
+HRESULT WINAPI SHGetFolderLocation(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwReserved, LPITEMIDLIST *ppidl);
+
+/****************************************************************************
+* SHGetFolderPath API
+*/
+typedef enum {
+    SHGFP_TYPE_CURRENT = 0,
+    SHGFP_TYPE_DEFAULT = 1
+} SHGFP_TYPE;
+
+HRESULT WINAPI SHGetFolderPathA(HWND hwnd, int nFolder, HANDLE hToken, DWORD dwFlags, LPSTR pszPath);
+HRESULT WINAPI SHGetFolderPathW(HWND hwnd, int nFolder, HANDLE hToken, DWORD dwFlags, LPWSTR pszPath);
+#define        SHGetFolderPath WINELIB_NAME_AW(SHGetFolderPath)
+
+#define CSIDL_DESKTOP		0x0000
+#define CSIDL_INTERNET		0x0001
+#define CSIDL_PROGRAMS		0x0002
+#define CSIDL_CONTROLS		0x0003
+#define CSIDL_PRINTERS		0x0004
+#define CSIDL_PERSONAL		0x0005
+#define CSIDL_FAVORITES		0x0006
+#define CSIDL_STARTUP		0x0007
+#define CSIDL_RECENT		0x0008
+#define CSIDL_SENDTO		0x0009
+#define CSIDL_BITBUCKET		0x000a
+#define CSIDL_STARTMENU		0x000b
+#define CSIDL_MYDOCUMENTS	CSIDL_PERSONAL
+#define CSIDL_MYMUSIC		0x000d
+#define CSIDL_MYVIDEO		0x000e
+#define CSIDL_DESKTOPDIRECTORY	0x0010
+#define CSIDL_DRIVES		0x0011
+#define CSIDL_NETWORK		0x0012
+#define CSIDL_NETHOOD		0x0013
+#define CSIDL_FONTS		0x0014
+#define CSIDL_TEMPLATES		0x0015
+#define CSIDL_COMMON_STARTMENU	0x0016
+#define CSIDL_COMMON_PROGRAMS	0X0017
+#define CSIDL_COMMON_STARTUP	0x0018
+#define CSIDL_COMMON_DESKTOPDIRECTORY	0x0019
+#define CSIDL_APPDATA		0x001a
+#define CSIDL_PRINTHOOD		0x001b
+#define CSIDL_LOCAL_APPDATA	0x001c
+#define CSIDL_ALTSTARTUP	0x001d
+#define CSIDL_COMMON_ALTSTARTUP	0x001e
+#define CSIDL_COMMON_FAVORITES  0x001f
+#define CSIDL_INTERNET_CACHE	0x0020
+#define CSIDL_COOKIES		0x0021
+#define CSIDL_HISTORY		0x0022
+#define CSIDL_COMMON_APPDATA	0x0023
+#define CSIDL_WINDOWS		0x0024
+#define CSIDL_SYSTEM		0x0025
+#define CSIDL_PROGRAM_FILES	0x0026
+#define CSIDL_MYPICTURES	0x0027
+#define CSIDL_PROFILE		0x0028
+#define CSIDL_SYSTEMX86		0x0029
+#define CSIDL_PROGRAM_FILESX86	0x002a
+#define CSIDL_PROGRAM_FILES_COMMON	0x002b
+#define CSIDL_PROGRAM_FILES_COMMONX86	0x002c
+#define CSIDL_COMMON_TEMPLATES	0x002d
+#define CSIDL_COMMON_DOCUMENTS	0x002e
+#define CSIDL_COMMON_ADMINTOOLS	0x002f
+#define CSIDL_ADMINTOOLS	0x0030
+#define CSIDL_CONNECTIONS	0x0031
+#define CSIDL_COMMON_MUSIC	0x0035
+#define CSIDL_COMMON_PICTURES	0x0036
+#define CSIDL_COMMON_VIDEO	0x0037
+#define CSIDL_RESOURCES		0x0038
+#define CSIDL_RESOURCES_LOCALIZED 0x0039
+#define CSIDL_COMMON_OEM_LINKS	0x003a
+#define CSIDL_CDBURN_AREA	0x003b
+#define CSIDL_COMPUTERSNEARME	0x003d
+#define CSIDL_PROFILES		0x003e
+#define CSIDL_FOLDER_MASK	0x00ff
+#define CSIDL_FLAG_PER_USER_INIT 0x0800
+#define CSIDL_FLAG_NO_ALIAS	0x1000
+#define CSIDL_FLAG_DONT_VERIFY	0x4000
+#define CSIDL_FLAG_CREATE	0x8000
+
+#define CSIDL_FLAG_MASK		0xff00
+
+/****************************************************************************
+ * SHGetDesktopFolder API
+ */
+HRESULT WINAPI SHGetDesktopFolder(IShellFolder * *);
+
+/****************************************************************************
+ * SHBindToParent API
+ */
+HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast);
+
+/****************************************************************************
+* SHDefExtractIcon API
+*/
+HRESULT WINAPI SHDefExtractIconA(LPCSTR pszIconFile, int iIndex, UINT uFlags,
+                                 HICON* phiconLarge, HICON* phiconSmall, UINT nIconSize);
+HRESULT WINAPI SHDefExtractIconW(LPCWSTR pszIconFile, int iIndex, UINT uFlags,
+                                 HICON* phiconLarge, HICON* phiconSmall, UINT nIconSize);
+#define        SHDefExtractIcon WINELIB_NAME_AW(SHDefExtractIcon)
+
+/*
+ * DROPFILES for CF_HDROP and CF_PRINTERS
+ */
+typedef struct _DROPFILES
+{
+  DWORD pFiles;
+  POINT pt;
+  BOOL  fNC;
+  BOOL  fWide;
+} DROPFILES, *LPDROPFILES;
+
+/*
+ * Properties of a file in the clipboard
+ */
+typedef struct _FILEDESCRIPTORA {
+    DWORD dwFlags;
+    CLSID clsid;
+    SIZEL sizel;
+    POINTL pointl;
+    DWORD dwFileAttributes;
+    FILETIME ftCreationTime;
+    FILETIME ftLastAccessTime;
+    FILETIME ftLastWriteTime;
+    DWORD nFileSizeHigh;
+    DWORD nFileSizeLow;
+    CHAR cFileName[MAX_PATH];
+} FILEDESCRIPTORA, *LPFILEDESCRIPTORA;
+
+typedef struct _FILEDESCRIPTORW {
+    DWORD dwFlags;
+    CLSID clsid;
+    SIZEL sizel;
+    POINTL pointl;
+    DWORD dwFileAttributes;
+    FILETIME ftCreationTime;
+    FILETIME ftLastAccessTime;
+    FILETIME ftLastWriteTime;
+    DWORD nFileSizeHigh;
+    DWORD nFileSizeLow;
+    WCHAR cFileName[MAX_PATH];
+} FILEDESCRIPTORW, *LPFILEDESCRIPTORW;
+
+DECL_WINELIB_TYPE_AW(FILEDESCRIPTOR)
+DECL_WINELIB_TYPE_AW(LPFILEDESCRIPTOR)
+
+/*
+ * CF_FILEGROUPDESCRIPTOR clipboard format
+ */
+typedef struct _FILEGROUPDESCRIPTORA {
+    UINT cItems;
+    FILEDESCRIPTORA fgd[1];
+} FILEGROUPDESCRIPTORA, *LPFILEGROUPDESCRIPTORA;
+
+typedef struct _FILEGROUPDESCRIPTORW {
+    UINT cItems;
+    FILEDESCRIPTORW fgd[1];
+} FILEGROUPDESCRIPTORW, *LPFILEGROUPDESCRIPTORW;
+
+DECL_WINELIB_TYPE_AW(FILEGROUPDESCRIPTOR)
+DECL_WINELIB_TYPE_AW(LPFILEGROUPDESCRIPTOR)
+
+/****************************************************************************
+ * Cabinet functions
+ */
+
+typedef struct {
+    WORD cLength;
+    WORD nVersion;
+    BOOL fFullPathTitle:1;
+    BOOL fSaveLocalView:1;
+    BOOL fNotShell:1;
+    BOOL fSimpleDefault:1;
+    BOOL fDontShowDescBar:1;
+    BOOL fNewWindowMode:1;
+    BOOL fShowCompColor:1;
+    BOOL fDontPrettyNames:1;
+    BOOL fAdminsCreateCommonGroups:1;
+    UINT fUnusedFlags:7;
+    UINT :15; /* Required for proper binary layout with gcc */
+    UINT fMenuEnumFilter;
+} CABINETSTATE, *LPCABINETSTATE;
+
+#define CABINETSTATE_VERSION 2
+
+BOOL WINAPI ReadCabinetState(CABINETSTATE *, int);
+BOOL WINAPI WriteCabinetState(CABINETSTATE *);
+
+/****************************************************************************
+ * Path Manipulation Routines
+ */
+
+/* PathProcessCommand flags */
+#define PPCF_ADDQUOTES        0x01
+#define PPCF_INCLUDEARGS      0x02
+#define PPCF_ADDARGUMENTS     0x03
+#define PPCF_NODIRECTORIES    0x10
+#define PPCF_DONTRESOLVE      0x20
+#define PPCF_FORCEQUALIFY     0x40
+#define PPCF_LONGESTPOSSIBLE  0x80
+
+/* PathResolve flags */
+#define PRF_VERIFYEXISTS         0x01
+#define PRF_EXECUTABLE           0x02
+#define PRF_TRYPROGRAMEXTENSIONS 0x03
+#define PRF_FIRSTDIRDEF          0x04
+#define PRF_DONTFINDLINK         0x08
+
+VOID WINAPI PathGetShortPath(LPWSTR pszPath);
+LONG WINAPI PathProcessCommand(LPCWSTR, LPWSTR, int, DWORD);
+BOOL WINAPI PathYetAnotherMakeUniqueName(LPWSTR, LPCWSTR, LPCWSTR, LPCWSTR);
+
+/****************************************************************************
+ * Drag And Drop Routines
+ */
+
+/* DAD_AutoScroll sample structure */
+#define NUM_POINTS 3
+typedef struct
+{
+    int   iNextSample;
+    DWORD dwLastScroll;
+    BOOL  bFull;
+    POINT pts[NUM_POINTS];
+    DWORD dwTimes[NUM_POINTS];
+} AUTO_SCROLL_DATA;
+
+BOOL         WINAPI DAD_SetDragImage(HIMAGELIST,LPPOINT);
+BOOL         WINAPI DAD_DragEnterEx(HWND,POINT);
+BOOL         WINAPI DAD_DragEnterEx2(HWND,POINT,IDataObject*);
+BOOL         WINAPI DAD_DragMove(POINT);
+BOOL         WINAPI DAD_DragLeave(void);
+BOOL         WINAPI DAD_AutoScroll(HWND,AUTO_SCROLL_DATA*,LPPOINT);
+HRESULT      WINAPI SHDoDragDrop(HWND,IDataObject*,IDropSource*,DWORD,LPDWORD);
+
+LPITEMIDLIST WINAPI ILAppendID(LPITEMIDLIST,LPCSHITEMID,BOOL);
+LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST);
+LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST);
+LPITEMIDLIST WINAPI ILCreateFromPathA(LPCSTR);
+LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR);
+#define             ILCreateFromPath WINELIB_NAME_AW(ILCreateFromPath)
+LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST,LPCITEMIDLIST);
+LPITEMIDLIST WINAPI ILFindChild(LPCITEMIDLIST,LPCITEMIDLIST);
+LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST);
+void         WINAPI ILFree(LPITEMIDLIST);
+LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST);
+UINT         WINAPI ILGetSize(LPCITEMIDLIST);
+BOOL         WINAPI ILIsEqual(LPCITEMIDLIST,LPCITEMIDLIST);
+BOOL         WINAPI ILIsParent(LPCITEMIDLIST,LPCITEMIDLIST,BOOL);
+HRESULT      WINAPI ILLoadFromStream(LPSTREAM,LPITEMIDLIST*);
+BOOL         WINAPI ILRemoveLastID(LPITEMIDLIST);
+HRESULT      WINAPI ILSaveToStream(LPSTREAM,LPCITEMIDLIST);
+
+
+#include <poppack.h>
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif /* __WINE_SHLOBJ_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/shlwapi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/shlwapi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/shlwapi.h	(revision 16410)
@@ -0,0 +1,1055 @@
+/*
+ * SHLWAPI.DLL functions
+ *
+ * Copyright (C) 2000 Juergen Schmied
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_SHLWAPI_H
+#define __WINE_SHLWAPI_H
+
+/* FIXME: #include <specstrings.h> */
+#include <objbase.h>
+#include <shtypes.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+#include <pshpack8.h>
+
+#ifndef NO_SHLWAPI_REG
+
+/* Registry functions */
+
+DWORD WINAPI SHDeleteEmptyKeyA(HKEY,LPCSTR);
+DWORD WINAPI SHDeleteEmptyKeyW(HKEY,LPCWSTR);
+#define SHDeleteEmptyKey WINELIB_NAME_AW(SHDeleteEmptyKey)
+
+DWORD WINAPI SHDeleteKeyA(HKEY,LPCSTR);
+DWORD WINAPI SHDeleteKeyW(HKEY,LPCWSTR);
+#define SHDeleteKey WINELIB_NAME_AW(SHDeleteKey)
+
+DWORD WINAPI SHDeleteValueA(HKEY,LPCSTR,LPCSTR);
+DWORD WINAPI SHDeleteValueW(HKEY,LPCWSTR,LPCWSTR);
+#define SHDeleteValue WINELIB_NAME_AW(SHDeleteValue)
+
+DWORD WINAPI SHGetValueA(HKEY,LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD);
+DWORD WINAPI SHGetValueW(HKEY,LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD);
+#define SHGetValue WINELIB_NAME_AW(SHGetValue)
+
+DWORD WINAPI SHSetValueA(HKEY,LPCSTR,LPCSTR,DWORD,LPCVOID,DWORD);
+DWORD WINAPI SHSetValueW(HKEY,LPCWSTR,LPCWSTR,DWORD,LPCVOID,DWORD);
+#define SHSetValue WINELIB_NAME_AW(SHSetValue)
+
+DWORD WINAPI SHQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
+DWORD WINAPI SHQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
+#define SHQueryValueEx WINELIB_NAME_AW(SHQueryValueEx)
+
+LONG WINAPI SHEnumKeyExA(HKEY,DWORD,LPSTR,LPDWORD);
+LONG WINAPI SHEnumKeyExW(HKEY,DWORD,LPWSTR,LPDWORD);
+#define SHEnumKeyEx WINELIB_NAME_AW(SHEnumKeyEx)
+
+LONG WINAPI SHEnumValueA(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
+LONG WINAPI SHEnumValueW(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
+#define SHEnumValue WINELIB_NAME_AW(SHEnumValue)
+
+LONG WINAPI SHQueryInfoKeyA(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
+LONG WINAPI SHQueryInfoKeyW(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
+#define SHQueryInfoKey WINELIB_NAME_AW(SHQueryInfoKey)
+
+DWORD WINAPI SHRegGetPathA(HKEY,LPCSTR,LPCSTR,LPSTR,DWORD);
+DWORD WINAPI SHRegGetPathW(HKEY,LPCWSTR,LPCWSTR,LPWSTR,DWORD);
+#define SHRegGetPath WINELIB_NAME_AW(SHRegGetPath)
+
+DWORD WINAPI SHRegSetPathA(HKEY,LPCSTR,LPCSTR,LPCSTR,DWORD);
+DWORD WINAPI SHRegSetPathW(HKEY,LPCWSTR,LPCWSTR,LPCWSTR,DWORD);
+#define SHRegSetPath WINELIB_NAME_AW(SHRegSetPath)
+
+DWORD WINAPI SHCopyKeyA(HKEY,LPCSTR,HKEY,DWORD);
+DWORD WINAPI SHCopyKeyW(HKEY,LPCWSTR,HKEY,DWORD);
+#define SHCopyKey WINELIB_NAME_AW(SHCopyKey)
+
+HKEY WINAPI  SHRegDuplicateHKey(HKEY);
+
+/* Undocumented registry functions */
+
+DWORD WINAPI SHDeleteOrphanKeyA(HKEY,LPCSTR);
+DWORD WINAPI SHDeleteOrphanKeyW(HKEY,LPCWSTR);
+#define SHDeleteOrphanKey WINELIB_NAME_AW(SHDeleteOrphanKey)
+
+
+/* User registry functions */
+
+typedef enum
+{
+  SHREGDEL_DEFAULT = 0,
+  SHREGDEL_HKCU    = 0x1,
+  SHREGDEL_HKLM    = 0x10,
+  SHREGDEL_BOTH    = SHREGDEL_HKLM | SHREGDEL_HKCU
+} SHREGDEL_FLAGS;
+
+typedef enum
+{
+  SHREGENUM_DEFAULT = 0,
+  SHREGENUM_HKCU    = 0x1,
+  SHREGENUM_HKLM    = 0x10,
+  SHREGENUM_BOTH    = SHREGENUM_HKLM | SHREGENUM_HKCU
+} SHREGENUM_FLAGS;
+
+#define SHREGSET_HKCU       0x1 /* Apply to HKCU if empty */
+#define SHREGSET_FORCE_HKCU 0x2 /* Always apply to HKCU */
+#define SHREGSET_HKLM       0x4 /* Apply to HKLM if empty */
+#define SHREGSET_FORCE_HKLM 0x8 /* Always apply to HKLM */
+#define SHREGSET_DEFAULT    (SHREGSET_FORCE_HKCU | SHREGSET_HKLM)
+
+typedef HANDLE HUSKEY;
+typedef HUSKEY *PHUSKEY;
+
+LONG WINAPI SHRegCreateUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,DWORD);
+LONG WINAPI SHRegCreateUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,DWORD);
+#define SHRegCreateUSKey WINELIB_NAME_AW(SHRegCreateUSKey)
+
+LONG WINAPI SHRegOpenUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,BOOL);
+LONG WINAPI SHRegOpenUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,BOOL);
+#define SHRegOpenUSKey WINELIB_NAME_AW(SHRegOpenUSKey)
+
+LONG WINAPI SHRegQueryUSValueA(HUSKEY,LPCSTR,LPDWORD,LPVOID,LPDWORD,
+                               BOOL,LPVOID,DWORD);
+LONG WINAPI SHRegQueryUSValueW(HUSKEY,LPCWSTR,LPDWORD,LPVOID,LPDWORD,
+                               BOOL,LPVOID,DWORD);
+#define SHRegQueryUSValue WINELIB_NAME_AW(SHRegQueryUSValue)
+
+LONG WINAPI SHRegWriteUSValueA(HUSKEY,LPCSTR,DWORD,LPVOID,DWORD,DWORD);
+LONG WINAPI SHRegWriteUSValueW(HUSKEY,LPCWSTR,DWORD,LPVOID,DWORD,DWORD);
+#define SHRegWriteUSValue WINELIB_NAME_AW(SHRegWriteUSValue)
+
+LONG WINAPI SHRegDeleteUSValueA(HUSKEY,LPCSTR,SHREGDEL_FLAGS);
+LONG WINAPI SHRegDeleteUSValueW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS);
+#define SHRegDeleteUSValue WINELIB_NAME_AW(SHRegDeleteUSValue)
+
+LONG WINAPI SHRegDeleteEmptyUSKeyA(HUSKEY,LPCSTR,SHREGDEL_FLAGS);
+LONG WINAPI SHRegDeleteEmptyUSKeyW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS);
+#define SHRegDeleteEmptyUSKey WINELIB_NAME_AW(SHRegDeleteEmptyUSKey)
+
+LONG WINAPI SHRegEnumUSKeyA(HUSKEY,DWORD,LPSTR,LPDWORD,SHREGENUM_FLAGS);
+LONG WINAPI SHRegEnumUSKeyW(HUSKEY,DWORD,LPWSTR,LPDWORD,SHREGENUM_FLAGS);
+#define SHRegEnumUSKey WINELIB_NAME_AW(SHRegEnumUSKey)
+
+LONG WINAPI SHRegEnumUSValueA(HUSKEY,DWORD,LPSTR,LPDWORD,LPDWORD,
+                              LPVOID,LPDWORD,SHREGENUM_FLAGS);
+LONG WINAPI SHRegEnumUSValueW(HUSKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,
+                              LPVOID,LPDWORD,SHREGENUM_FLAGS);
+#define SHRegEnumUSValue WINELIB_NAME_AW(SHRegEnumUSValue)
+
+LONG WINAPI SHRegQueryInfoUSKeyA(HUSKEY,LPDWORD,LPDWORD,LPDWORD,
+                                 LPDWORD,SHREGENUM_FLAGS);
+LONG WINAPI SHRegQueryInfoUSKeyW(HUSKEY,LPDWORD,LPDWORD,LPDWORD,
+                                 LPDWORD,SHREGENUM_FLAGS);
+#define SHRegQueryInfoUSKey WINELIB_NAME_AW(SHRegQueryInfoUSKey)
+
+LONG WINAPI SHRegCloseUSKey(HUSKEY);
+
+LONG WINAPI SHRegGetUSValueA(LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD,
+                             BOOL,LPVOID,DWORD);
+LONG WINAPI SHRegGetUSValueW(LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD,
+                             BOOL,LPVOID,DWORD);
+#define SHRegGetUSValue WINELIB_NAME_AW(SHRegGetUSValue)
+
+LONG WINAPI SHRegSetUSValueA(LPCSTR,LPCSTR,DWORD,LPVOID,DWORD,DWORD);
+LONG WINAPI SHRegSetUSValueW(LPCWSTR,LPCWSTR,DWORD,LPVOID,DWORD,DWORD);
+#define SHRegSetUSValue WINELIB_NAME_AW(SHRegSetUSValue)
+
+BOOL WINAPI SHRegGetBoolUSValueA(LPCSTR,LPCSTR,BOOL,BOOL);
+BOOL WINAPI SHRegGetBoolUSValueW(LPCWSTR,LPCWSTR,BOOL,BOOL);
+#define SHRegGetBoolUSValue WINELIB_NAME_AW(SHRegGetBoolUSValue)
+
+int WINAPI SHRegGetIntW(HKEY,LPCWSTR,int);
+
+/* IQueryAssociation and helpers */
+enum
+{
+    ASSOCF_INIT_NOREMAPCLSID    = 0x001, /* Don't map clsid->progid */
+    ASSOCF_INIT_BYEXENAME       = 0x002, /* .exe name given */
+    ASSOCF_OPEN_BYEXENAME       = 0x002, /* Synonym */
+    ASSOCF_INIT_DEFAULTTOSTAR   = 0x004, /* Use * as base */
+    ASSOCF_INIT_DEFAULTTOFOLDER = 0x008, /* Use folder as base */
+    ASSOCF_NOUSERSETTINGS       = 0x010, /* No HKCU reads */
+    ASSOCF_NOTRUNCATE           = 0x020, /* Don't truncate return */
+    ASSOCF_VERIFY               = 0x040, /* Verify data */
+    ASSOCF_REMAPRUNDLL          = 0x080, /* Get rundll args */
+    ASSOCF_NOFIXUPS             = 0x100, /* Don't fixup errors */
+    ASSOCF_IGNOREBASECLASS      = 0x200, /* Don't read baseclass */
+    ASSOCF_INIT_IGNOREUNKNOWN   = 0x400, /* Fail for unknown progid */
+};
+
+typedef DWORD ASSOCF;
+
+typedef enum
+{
+    ASSOCSTR_COMMAND = 1,     /* Verb command */
+    ASSOCSTR_EXECUTABLE,      /* .exe from command string */
+    ASSOCSTR_FRIENDLYDOCNAME, /* Friendly doc type name */
+    ASSOCSTR_FRIENDLYAPPNAME, /* Friendly .exe name */
+    ASSOCSTR_NOOPEN,          /* noopen value */
+    ASSOCSTR_SHELLNEWVALUE,   /* Use shellnew key */
+    ASSOCSTR_DDECOMMAND,      /* DDE command template */
+    ASSOCSTR_DDEIFEXEC,       /* DDE command for process create */
+    ASSOCSTR_DDEAPPLICATION,  /* DDE app name */
+    ASSOCSTR_DDETOPIC,        /* DDE topic */
+    ASSOCSTR_INFOTIP,         /* Infotip */
+    ASSOCSTR_QUICKTIP,        /* Quick infotip */
+    ASSOCSTR_TILEINFO,        /* Properties for tileview */
+    ASSOCSTR_CONTENTTYPE,     /* Mimetype */
+    ASSOCSTR_DEFAULTICON,     /* Icon */
+    ASSOCSTR_SHELLEXTENSION,  /* GUID for shell extension handler */
+    ASSOCSTR_MAX
+} ASSOCSTR;
+
+typedef enum
+{
+    ASSOCKEY_SHELLEXECCLASS = 1, /* Key for ShellExec */
+    ASSOCKEY_APP,                /* Application */
+    ASSOCKEY_CLASS,              /* Progid or class */
+    ASSOCKEY_BASECLASS,          /* Base class */
+    ASSOCKEY_MAX
+} ASSOCKEY;
+
+typedef enum
+{
+    ASSOCDATA_MSIDESCRIPTOR = 1, /* Component descriptor */
+    ASSOCDATA_NOACTIVATEHANDLER, /* Don't activate */
+    ASSOCDATA_QUERYCLASSSTORE,   /* Look in Class Store */
+    ASSOCDATA_HASPERUSERASSOC,   /* Use user association */
+    ASSOCDATA_EDITFLAGS,         /* Edit flags */
+    ASSOCDATA_VALUE,             /* pszExtra is value */
+    ASSOCDATA_MAX
+} ASSOCDATA;
+
+typedef enum
+{
+    ASSOCENUM_NONE
+} ASSOCENUM;
+
+typedef struct IQueryAssociations *LPQUERYASSOCIATIONS;
+
+#define INTERFACE IQueryAssociations
+DECLARE_INTERFACE_(IQueryAssociations,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IQueryAssociations methods ***/
+    STDMETHOD(Init)(THIS_ ASSOCF  flags, LPCWSTR  pszAssoc, HKEY  hkProgid, HWND  hwnd) PURE;
+    STDMETHOD(GetString)(THIS_ ASSOCF  flags, ASSOCSTR  str, LPCWSTR  pszExtra, LPWSTR  pszOut, DWORD * pcchOut) PURE;
+    STDMETHOD(GetKey)(THIS_ ASSOCF  flags, ASSOCKEY  key, LPCWSTR  pszExtra, HKEY * phkeyOut) PURE;
+    STDMETHOD(GetData)(THIS_ ASSOCF  flags, ASSOCDATA  data, LPCWSTR  pszExtra, LPVOID  pvOut, DWORD * pcbOut) PURE;
+    STDMETHOD(GetEnum)(THIS_ ASSOCF  flags, ASSOCENUM  assocenum, LPCWSTR  pszExtra, REFIID  riid, LPVOID * ppvOut) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IQueryAssociations_QueryInterface(p,a,b)   (p)->lpVtbl->QueryInterface(p,a,b)
+#define IQueryAssociations_AddRef(p)               (p)->lpVtbl->AddRef(p)
+#define IQueryAssociations_Release(p)              (p)->lpVtbl->Release(p)
+#define IQueryAssociations_Init(p,a,b,c,d)         (p)->lpVtbl->Init(p,a,b,c,d)
+#define IQueryAssociations_GetString(p,a,b,c,d,e)  (p)->lpVtbl->GetString(p,a,b,c,d,e)
+#define IQueryAssociations_GetKey(p,a,b,c,d)       (p)->lpVtbl->GetKey(p,a,b,c,d)
+#define IQueryAssociations_GetData(p,a,b,c,d,e)    (p)->lpVtbl->GetData(p,a,b,c,d,e)
+#define IQueryAssociations_GetEnum(p,a,b,c,d,e)    (p)->lpVtbl->GetEnum(p,a,b,c,d,e)
+#endif
+
+HRESULT WINAPI AssocCreate(CLSID,REFIID,LPVOID*);
+
+HRESULT WINAPI AssocQueryStringA(ASSOCF,ASSOCSTR,LPCSTR,LPCSTR,LPSTR,LPDWORD);
+HRESULT WINAPI AssocQueryStringW(ASSOCF,ASSOCSTR,LPCWSTR,LPCWSTR,LPWSTR,LPDWORD);
+#define AssocQueryString WINELIB_NAME_AW(AssocQueryString)
+
+HRESULT WINAPI AssocQueryStringByKeyA(ASSOCF,ASSOCSTR,HKEY,LPCSTR,LPSTR,LPDWORD);
+HRESULT WINAPI AssocQueryStringByKeyW(ASSOCF,ASSOCSTR,HKEY,LPCWSTR,LPWSTR,LPDWORD);
+#define AssocQueryStringByKey WINELIB_NAME_AW(AssocQueryStringByKey)
+
+HRESULT WINAPI AssocQueryKeyA(ASSOCF,ASSOCKEY,LPCSTR,LPCSTR,PHKEY);
+HRESULT WINAPI AssocQueryKeyW(ASSOCF,ASSOCKEY,LPCWSTR,LPCWSTR,PHKEY);
+#define AssocQueryKey WINELIB_NAME_AW(AssocQueryKey)
+
+BOOL WINAPI AssocIsDangerous(LPCWSTR);
+
+#endif /* NO_SHLWAPI_REG */
+
+
+/* Path functions */
+#ifndef NO_SHLWAPI_PATH
+
+/* GetPathCharType return flags */
+#define GCT_INVALID     0x0
+#define GCT_LFNCHAR     0x1
+#define GCT_SHORTCHAR   0x2
+#define GCT_WILD        0x4
+#define GCT_SEPARATOR   0x8
+
+LPSTR  WINAPI PathAddBackslashA(LPSTR);
+LPWSTR WINAPI PathAddBackslashW(LPWSTR);
+#define PathAddBackslash WINELIB_NAME_AW(PathAddBackslash)
+
+BOOL WINAPI PathAddExtensionA(LPSTR,LPCSTR);
+BOOL WINAPI PathAddExtensionW(LPWSTR,LPCWSTR);
+#define PathAddExtension WINELIB_NAME_AW(PathAddExtension)
+
+BOOL WINAPI PathAppendA(LPSTR,LPCSTR);
+BOOL WINAPI PathAppendW(LPWSTR,LPCWSTR);
+#define PathAppend WINELIB_NAME_AW(PathAppend)
+
+LPSTR  WINAPI PathBuildRootA(LPSTR,int);
+LPWSTR WINAPI PathBuildRootW(LPWSTR,int);
+#define PathBuildRoot WINELIB_NAME_AW(PathBuiltRoot)
+
+BOOL WINAPI PathCanonicalizeA(LPSTR,LPCSTR);
+BOOL WINAPI PathCanonicalizeW(LPWSTR,LPCWSTR);
+#define PathCanonicalize WINELIB_NAME_AW(PathCanonicalize)
+
+LPSTR  WINAPI PathCombineA(LPSTR,LPCSTR,LPCSTR);
+LPWSTR WINAPI PathCombineW(LPWSTR,LPCWSTR,LPCWSTR);
+#define PathCombine WINELIB_NAME_AW(PathCombine)
+
+BOOL WINAPI PathCompactPathA(HDC,LPSTR,UINT);
+BOOL WINAPI PathCompactPathW(HDC,LPWSTR,UINT);
+#define PathCompactPath WINELIB_NAME_AW(PathCompactPath)
+
+BOOL WINAPI PathCompactPathExA(LPSTR,LPCSTR,UINT,DWORD);
+BOOL WINAPI PathCompactPathExW(LPWSTR,LPCWSTR,UINT,DWORD);
+#define PathCompactPathEx WINELIB_NAME_AW(PathCompactPathEx)
+
+int WINAPI PathCommonPrefixA(LPCSTR,LPCSTR,LPSTR);
+int WINAPI PathCommonPrefixW(LPCWSTR,LPCWSTR,LPWSTR);
+#define PathCommonPrefix WINELIB_NAME_AW(PathCommonPrefix)
+
+HRESULT WINAPI PathCreateFromUrlA(LPCSTR pszUrl, LPSTR pszPath, LPDWORD pcchPath, DWORD dwReserved);
+HRESULT WINAPI PathCreateFromUrlW(LPCWSTR pszUrl, LPWSTR pszPath, LPDWORD pcchPath, DWORD dwReserved);
+#define PathCreateFromUrl WINELIB_NAME_AW(PathCreateFromUrl)
+
+BOOL WINAPI PathFileExistsA(LPCSTR);
+BOOL WINAPI PathFileExistsW(LPCWSTR);
+#define PathFileExists WINELIB_NAME_AW(PathFileExists)
+
+BOOL WINAPI PathFileExistsAndAttributesA(LPCSTR lpszPath, DWORD *dwAttr);
+BOOL WINAPI PathFileExistsAndAttributesW(LPCWSTR lpszPath, DWORD *dwAttr);
+#define PathFileExistsAndAttributes WINELIB_NAME_AW(PathFileExistsAndAttributes)
+
+LPSTR  WINAPI PathFindExtensionA(LPCSTR);
+LPWSTR WINAPI PathFindExtensionW(LPCWSTR);
+#define PathFindExtension WINELIB_NAME_AW(PathFindExtension)
+
+LPSTR  WINAPI PathFindFileNameA(LPCSTR);
+LPWSTR WINAPI PathFindFileNameW(LPCWSTR);
+#define PathFindFileName WINELIB_NAME_AW(PathFindFileName)
+
+LPSTR  WINAPI PathFindNextComponentA(LPCSTR);
+LPWSTR WINAPI PathFindNextComponentW(LPCWSTR);
+#define PathFindNextComponent WINELIB_NAME_AW(PathFindNextComponent)
+
+BOOL WINAPI PathFindOnPathA(LPSTR,LPCSTR*);
+BOOL WINAPI PathFindOnPathW(LPWSTR,LPCWSTR*);
+#define PathFindOnPath WINELIB_NAME_AW(PathFindOnPath)
+
+LPSTR  WINAPI PathGetArgsA(LPCSTR);
+LPWSTR WINAPI PathGetArgsW(LPCWSTR);
+#define PathGetArgs WINELIB_NAME_AW(PathGetArgs)
+
+UINT WINAPI PathGetCharTypeA(UCHAR);
+UINT WINAPI PathGetCharTypeW(WCHAR);
+#define PathGetCharType WINELIB_NAME_AW(PathGetCharType)
+
+int WINAPI PathGetDriveNumberA(LPCSTR);
+int WINAPI PathGetDriveNumberW(LPCWSTR);
+#define PathGetDriveNumber WINELIB_NAME_AW(PathGetDriveNumber)
+
+BOOL WINAPI PathIsDirectoryA(LPCSTR);
+BOOL WINAPI PathIsDirectoryW(LPCWSTR);
+#define PathIsDirectory WINELIB_NAME_AW(PathIsDirectory)
+
+BOOL WINAPI PathIsDirectoryEmptyA(LPCSTR);
+BOOL WINAPI PathIsDirectoryEmptyW(LPCWSTR);
+#define PathIsDirectoryEmpty WINELIB_NAME_AW(PathIsDirectoryEmpty)
+
+BOOL WINAPI PathIsFileSpecA(LPCSTR);
+BOOL WINAPI PathIsFileSpecW(LPCWSTR);
+#define PathIsFileSpec WINELIB_NAME_AW(PathIsFileSpec);
+
+BOOL WINAPI PathIsPrefixA(LPCSTR,LPCSTR);
+BOOL WINAPI PathIsPrefixW(LPCWSTR,LPCWSTR);
+#define PathIsPrefix WINELIB_NAME_AW(PathIsPrefix)
+
+BOOL WINAPI PathIsRelativeA(LPCSTR);
+BOOL WINAPI PathIsRelativeW(LPCWSTR);
+#define PathIsRelative WINELIB_NAME_AW(PathIsRelative)
+
+BOOL WINAPI PathIsRootA(LPCSTR);
+BOOL WINAPI PathIsRootW(LPCWSTR);
+#define PathIsRoot WINELIB_NAME_AW(PathIsRoot)
+
+BOOL WINAPI PathIsSameRootA(LPCSTR,LPCSTR);
+BOOL WINAPI PathIsSameRootW(LPCWSTR,LPCWSTR);
+#define PathIsSameRoot WINELIB_NAME_AW(PathIsSameRoot)
+
+BOOL WINAPI PathIsUNCA(LPCSTR);
+BOOL WINAPI PathIsUNCW(LPCWSTR);
+#define PathIsUNC WINELIB_NAME_AW(PathIsUNC)
+
+BOOL WINAPI PathIsUNCServerA(LPCSTR);
+BOOL WINAPI PathIsUNCServerW(LPCWSTR);
+#define PathIsUNCServer WINELIB_NAME_AW(PathIsUNCServer)
+
+BOOL WINAPI PathIsUNCServerShareA(LPCSTR);
+BOOL WINAPI PathIsUNCServerShareW(LPCWSTR);
+#define PathIsUNCServerShare WINELIB_NAME_AW(PathIsUNCServerShare)
+
+BOOL WINAPI PathIsContentTypeA(LPCSTR,LPCSTR);
+BOOL WINAPI PathIsContentTypeW(LPCWSTR,LPCWSTR);
+#define PathIsContentType WINELIB_NAME_AW(PathIsContentType)
+
+BOOL WINAPI PathIsURLA(LPCSTR);
+BOOL WINAPI PathIsURLW(LPCWSTR);
+#define PathIsURL WINELIB_NAME_AW(PathIsURL)
+
+BOOL WINAPI PathMakePrettyA(LPSTR);
+BOOL WINAPI PathMakePrettyW(LPWSTR);
+#define PathMakePretty WINELIB_NAME_AW(PathMakePretty)
+
+BOOL WINAPI PathMatchSpecA(LPCSTR,LPCSTR);
+BOOL WINAPI PathMatchSpecW(LPCWSTR,LPCWSTR);
+#define PathMatchSpec WINELIB_NAME_AW(PathMatchSpec)
+
+int WINAPI PathParseIconLocationA(LPSTR);
+int WINAPI PathParseIconLocationW(LPWSTR);
+#define PathParseIconLocation WINELIB_NAME_AW(PathParseIconLocation)
+
+VOID WINAPI PathQuoteSpacesA(LPSTR);
+VOID WINAPI PathQuoteSpacesW(LPWSTR);
+#define PathQuoteSpaces WINELIB_NAME_AW(PathQuoteSpaces)
+
+BOOL WINAPI PathRelativePathToA(LPSTR,LPCSTR,DWORD,LPCSTR,DWORD);
+BOOL WINAPI PathRelativePathToW(LPWSTR,LPCWSTR,DWORD,LPCWSTR,DWORD);
+#define PathRelativePathTo WINELIB_NAME_AW(PathRelativePathTo)
+
+VOID WINAPI PathRemoveArgsA(LPSTR);
+VOID WINAPI PathRemoveArgsW(LPWSTR);
+#define PathRemoveArgs WINELIB_NAME_AW(PathRemoveArgs)
+
+LPSTR  WINAPI PathRemoveBackslashA(LPSTR);
+LPWSTR WINAPI PathRemoveBackslashW(LPWSTR);
+#define PathRemoveBackslash WINELIB_NAME_AW(PathRemoveBackslash)
+
+VOID WINAPI PathRemoveBlanksA(LPSTR);
+VOID WINAPI PathRemoveBlanksW(LPWSTR);
+#define PathRemoveBlanks WINELIB_NAME_AW(PathRemoveBlanks)
+
+VOID WINAPI PathRemoveExtensionA(LPSTR);
+VOID WINAPI PathRemoveExtensionW(LPWSTR);
+#define PathRemoveExtension WINELIB_NAME_AW(PathRemoveExtension)
+
+BOOL WINAPI PathRemoveFileSpecA(LPSTR);
+BOOL WINAPI PathRemoveFileSpecW(LPWSTR);
+#define PathRemoveFileSpec WINELIB_NAME_AW(PathRemoveFileSpec)
+
+BOOL WINAPI PathRenameExtensionA(LPSTR,LPCSTR);
+BOOL WINAPI PathRenameExtensionW(LPWSTR,LPCWSTR);
+#define PathRenameExtension WINELIB_NAME_AW(PathRenameExtension)
+
+BOOL WINAPI PathSearchAndQualifyA(LPCSTR,LPSTR,UINT);
+BOOL WINAPI PathSearchAndQualifyW(LPCWSTR,LPWSTR,UINT);
+#define PathSearchAndQualify WINELIB_NAME_AW(PathSearchAndQualify)
+
+VOID WINAPI PathSetDlgItemPathA(HWND,int,LPCSTR);
+VOID WINAPI PathSetDlgItemPathW(HWND,int,LPCWSTR);
+#define PathSetDlgItemPath WINELIB_NAME_AW(PathSetDlgItemPath)
+
+LPSTR  WINAPI PathSkipRootA(LPCSTR);
+LPWSTR WINAPI PathSkipRootW(LPCWSTR);
+#define PathSkipRoot WINELIB_NAME_AW(PathSkipRoot)
+
+VOID WINAPI PathStripPathA(LPSTR);
+VOID WINAPI PathStripPathW(LPWSTR);
+#define PathStripPath WINELIB_NAME_AW(PathStripPath)
+
+BOOL WINAPI PathStripToRootA(LPSTR);
+BOOL WINAPI PathStripToRootW(LPWSTR);
+#define PathStripToRoot WINELIB_NAME_AW(PathStripToRoot)
+
+VOID WINAPI PathUnquoteSpacesA(LPSTR);
+VOID WINAPI PathUnquoteSpacesW(LPWSTR);
+#define PathUnquoteSpaces WINELIB_NAME_AW(PathUnquoteSpaces)
+
+BOOL WINAPI PathMakeSystemFolderA(LPCSTR);
+BOOL WINAPI PathMakeSystemFolderW(LPCWSTR);
+#define PathMakeSystemFolder WINELIB_NAME_AW(PathMakeSystemFolder)
+
+BOOL WINAPI PathUnmakeSystemFolderA(LPCSTR);
+BOOL WINAPI PathUnmakeSystemFolderW(LPCWSTR);
+#define PathUnmakeSystemFolder WINELIB_NAME_AW(PathUnmakeSystemFolder)
+
+BOOL WINAPI PathIsSystemFolderA(LPCSTR,DWORD);
+BOOL WINAPI PathIsSystemFolderW(LPCWSTR,DWORD);
+#define PathIsSystemFolder WINELIB_NAME_AW(PathIsSystemFolder)
+
+BOOL WINAPI PathIsNetworkPathA(LPCSTR);
+BOOL WINAPI PathIsNetworkPathW(LPCWSTR);
+#define PathIsNetworkPath WINELIB_NAME_AW(PathIsNetworkPath)
+
+BOOL WINAPI PathIsLFNFileSpecA(LPCSTR);
+BOOL WINAPI PathIsLFNFileSpecW(LPCWSTR);
+#define PathIsLFNFileSpec WINELIB_NAME_AW(PathIsLFNFileSpec)
+
+LPCSTR WINAPI PathFindSuffixArrayA(LPCSTR,LPCSTR *,int);
+LPCWSTR WINAPI PathFindSuffixArrayW(LPCWSTR,LPCWSTR *,int);
+#define PathFindSuffixArray WINELIB_NAME_AW(PathFindSuffixArray)
+
+VOID WINAPI PathUndecorateA(LPSTR);
+VOID WINAPI PathUndecorateW(LPWSTR);
+#define PathUndecorate WINELIB_NAME_AW(PathUndecorate)
+
+BOOL WINAPI PathUnExpandEnvStringsA(LPCSTR,LPSTR,UINT);
+BOOL WINAPI PathUnExpandEnvStringsW(LPCWSTR,LPWSTR,UINT);
+#define PathUnExpandEnvStrings WINELIB_NAME_AW(PathUnExpandEnvStrings)
+
+/* Url functions */
+typedef enum {
+    URL_SCHEME_INVALID     = -1,
+    URL_SCHEME_UNKNOWN     =  0,
+    URL_SCHEME_FTP,
+    URL_SCHEME_HTTP,
+    URL_SCHEME_GOPHER,
+    URL_SCHEME_MAILTO,
+    URL_SCHEME_NEWS,
+    URL_SCHEME_NNTP,
+    URL_SCHEME_TELNET,
+    URL_SCHEME_WAIS,
+    URL_SCHEME_FILE,
+    URL_SCHEME_MK,
+    URL_SCHEME_HTTPS,
+    URL_SCHEME_SHELL,
+    URL_SCHEME_SNEWS,
+    URL_SCHEME_LOCAL,
+    URL_SCHEME_JAVASCRIPT,
+    URL_SCHEME_VBSCRIPT,
+    URL_SCHEME_ABOUT,
+    URL_SCHEME_RES,
+    URL_SCHEME_MSSHELLROOTED,
+    URL_SCHEME_MSSHELLIDLIST,
+    URL_SCHEME_MSHELP,
+    URL_SCHEME_MAXVALUE
+} URL_SCHEME;
+
+/* These are used by UrlGetPart routine */
+typedef enum {
+    URL_PART_NONE    = 0,
+    URL_PART_SCHEME  = 1,
+    URL_PART_HOSTNAME,
+    URL_PART_USERNAME,
+    URL_PART_PASSWORD,
+    URL_PART_PORT,
+    URL_PART_QUERY
+} URL_PART;
+
+#define URL_PARTFLAG_KEEPSCHEME  0x00000001
+
+/* These are used by the UrlIs... routines */
+typedef enum {
+    URLIS_URL,
+    URLIS_OPAQUE,
+    URLIS_NOHISTORY,
+    URLIS_FILEURL,
+    URLIS_APPLIABLE,
+    URLIS_DIRECTORY,
+    URLIS_HASQUERY
+} URLIS;
+
+/* This is used by the UrlApplyScheme... routines */
+#define URL_APPLY_FORCEAPPLY         0x00000008
+#define URL_APPLY_GUESSFILE          0x00000004
+#define URL_APPLY_GUESSSCHEME        0x00000002
+#define URL_APPLY_DEFAULT            0x00000001
+
+/* The following are used by UrlEscape..., UrlUnEscape...,
+ * UrlCanonicalize..., and UrlCombine... routines
+ */
+#define URL_WININET_COMPATIBILITY    0x80000000
+#define URL_PLUGGABLE_PROTOCOL       0x40000000
+#define URL_ESCAPE_UNSAFE            0x20000000
+#define URL_UNESCAPE                 0x10000000
+
+#define URL_DONT_SIMPLIFY            0x08000000
+#define URL_NO_META                  URL_DONT_SIMPLIFY
+#define URL_ESCAPE_SPACES_ONLY       0x04000000
+#define URL_DONT_ESCAPE_EXTRA_INFO   0x02000000
+#define URL_DONT_UNESCAPE_EXTRA_INFO URL_DONT_ESCAPE_EXTRA_INFO
+#define URL_BROWSER_MODE             URL_DONT_ESCAPE_EXTRA_INFO
+
+#define URL_INTERNAL_PATH            0x00800000  /* Will escape #'s in paths */
+#define URL_UNESCAPE_HIGH_ANSI_ONLY  0x00400000
+#define URL_CONVERT_IF_DOSPATH       0x00200000
+#define URL_UNESCAPE_INPLACE         0x00100000
+
+#define URL_FILE_USE_PATHURL         0x00010000
+
+#define URL_ESCAPE_SEGMENT_ONLY      0x00002000
+#define URL_ESCAPE_PERCENT           0x00001000
+
+HRESULT WINAPI UrlApplySchemeA(LPCSTR,LPSTR,LPDWORD,DWORD);
+HRESULT WINAPI UrlApplySchemeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+#define UrlApplyScheme WINELIB_NAME_AW(UrlApplyScheme)
+
+HRESULT WINAPI UrlCanonicalizeA(LPCSTR,LPSTR,LPDWORD,DWORD);
+HRESULT WINAPI UrlCanonicalizeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+#define UrlCanonicalize WINELIB_NAME_AW(UrlCanoncalize)
+
+HRESULT WINAPI UrlCombineA(LPCSTR,LPCSTR,LPSTR,LPDWORD,DWORD);
+HRESULT WINAPI UrlCombineW(LPCWSTR,LPCWSTR,LPWSTR,LPDWORD,DWORD);
+#define UrlCombine WINELIB_NAME_AW(UrlCombine)
+
+INT WINAPI UrlCompareA(LPCSTR,LPCSTR,BOOL);
+INT WINAPI UrlCompareW(LPCWSTR,LPCWSTR,BOOL);
+#define UrlCompare WINELIB_NAME_AW(UrlCompare)
+
+HRESULT WINAPI UrlEscapeA(LPCSTR,LPSTR,LPDWORD,DWORD);
+HRESULT WINAPI UrlEscapeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+#define UrlEscape WINELIB_NAME_AW(UrlEscape)
+
+#define UrlEscapeSpacesA(x,y,z) UrlCanonicalizeA(x, y, z, \
+                         URL_DONT_ESCAPE_EXTRA_INFO|URL_ESCAPE_SPACES_ONLY)
+#define UrlEscapeSpacesW(x,y,z) UrlCanonicalizeW(x, y, z, \
+                         URL_DONT_ESCAPE_EXTRA_INFO|URL_ESCAPE_SPACES_ONLY)
+#define UrlEscapeSpaces WINELIB_NAME_AW(UrlEscapeSpaces)
+
+LPCSTR  WINAPI UrlGetLocationA(LPCSTR);
+LPCWSTR WINAPI UrlGetLocationW(LPCWSTR);
+#define UrlGetLocation WINELIB_NAME_AW(UrlGetLocation)
+
+HRESULT WINAPI UrlGetPartA(LPCSTR,LPSTR,LPDWORD,DWORD,DWORD);
+HRESULT WINAPI UrlGetPartW(LPCWSTR,LPWSTR,LPDWORD,DWORD,DWORD);
+#define UrlGetPart WINELIB_NAME_AW(UrlGetPart)
+
+HRESULT WINAPI HashData(const unsigned char *,DWORD,unsigned char *lpDest,DWORD);
+
+HRESULT WINAPI UrlHashA(LPCSTR,unsigned char *,DWORD);
+HRESULT WINAPI UrlHashW(LPCWSTR,unsigned char *,DWORD);
+#define UrlHash WINELIB_NAME_AW(UrlHash)
+
+BOOL    WINAPI UrlIsA(LPCSTR,URLIS);
+BOOL    WINAPI UrlIsW(LPCWSTR,URLIS);
+#define UrlIs WINELIB_NAME_AW(UrlIs)
+
+BOOL    WINAPI UrlIsNoHistoryA(LPCSTR);
+BOOL    WINAPI UrlIsNoHistoryW(LPCWSTR);
+#define UrlIsNoHistory WINELIB_NAME_AW(UrlIsNoHistory)
+
+BOOL    WINAPI UrlIsOpaqueA(LPCSTR);
+BOOL    WINAPI UrlIsOpaqueW(LPCWSTR);
+#define UrlIsOpaque WINELIB_NAME_AW(UrlIsOpaque)
+
+#define UrlIsFileUrlA(x) UrlIsA(x, URLIS_FILEURL)
+#define UrlIsFileUrlW(y) UrlIsW(x, URLIS_FILEURL)
+#define UrlIsFileUrl WINELIB_NAME_AW(UrlIsFileUrl)
+
+HRESULT WINAPI UrlUnescapeA(LPSTR,LPSTR,LPDWORD,DWORD);
+HRESULT WINAPI UrlUnescapeW(LPWSTR,LPWSTR,LPDWORD,DWORD);
+#define UrlUnescape WINELIB_NAME_AW(UrlUnescape)
+
+#define UrlUnescapeInPlaceA(x,y) UrlUnescapeA(x, NULL, NULL, \
+                                              y | URL_UNESCAPE_INPLACE)
+#define UrlUnescapeInPlaceW(x,y) UrlUnescapeW(x, NULL, NULL, \
+                                              y | URL_UNESCAPE_INPLACE)
+#define UrlUnescapeInPlace WINELIB_NAME_AW(UrlUnescapeInPlace)
+
+HRESULT WINAPI UrlCreateFromPathA(LPCSTR,LPSTR,LPDWORD,DWORD);
+HRESULT WINAPI UrlCreateFromPathW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+#define UrlCreateFromPath WINELIB_NAME_AW(UrlCreateFromPath)
+
+typedef struct tagPARSEDURLA {
+    DWORD cbSize;
+    LPCSTR pszProtocol;
+    UINT cchProtocol;
+    LPCSTR pszSuffix;
+    UINT cchSuffix;
+    UINT nScheme;
+} PARSEDURLA, *PPARSEDURLA;
+
+typedef struct tagPARSEDURLW {
+    DWORD cbSize;
+    LPCWSTR pszProtocol;
+    UINT cchProtocol;
+    LPCWSTR pszSuffix;
+    UINT cchSuffix;
+    UINT nScheme;
+} PARSEDURLW, *PPARSEDURLW;
+
+HRESULT WINAPI ParseURLA(LPCSTR pszUrl, PARSEDURLA *ppu);
+HRESULT WINAPI ParseURLW(LPCWSTR pszUrl, PARSEDURLW *ppu);
+#define ParseURL WINELIB_NAME_AW(ParseUrl)
+
+#endif /* NO_SHLWAPI_PATH */
+
+
+/* String functions */
+#ifndef NO_SHLWAPI_STRFCNS
+
+/* StrToIntEx flags */
+#define STIF_DEFAULT     0x0L
+#define STIF_SUPPORT_HEX 0x1L
+
+BOOL WINAPI ChrCmpIA (WORD,WORD);
+BOOL WINAPI ChrCmpIW (WCHAR,WCHAR);
+#define ChrCmpI WINELIB_NAME_AW(ChrCmpI)
+
+INT WINAPI StrCSpnA(LPCSTR,LPCSTR);
+INT WINAPI StrCSpnW(LPCWSTR,LPCWSTR);
+#define StrCSpn WINELIB_NAME_AW(StrCSpn)
+
+INT WINAPI StrCSpnIA(LPCSTR,LPCSTR);
+INT WINAPI StrCSpnIW(LPCWSTR,LPCWSTR);
+#define StrCSpnI WINELIB_NAME_AW(StrCSpnI)
+
+#define StrCatA lstrcatA
+LPWSTR WINAPI StrCatW(LPWSTR,LPCWSTR);
+#define StrCat WINELIB_NAME_AW(StrCat)
+
+LPSTR WINAPI StrCatBuffA(LPSTR,LPCSTR,INT);
+LPWSTR WINAPI StrCatBuffW(LPWSTR,LPCWSTR,INT);
+#define StrCatBuff WINELIB_NAME_AW(StrCatBuff)
+
+DWORD WINAPI StrCatChainW(LPWSTR,DWORD,DWORD,LPCWSTR);
+
+LPSTR WINAPI StrChrA(LPCSTR,WORD);
+LPWSTR WINAPI StrChrW(LPCWSTR,WCHAR);
+#define StrChr WINELIB_NAME_AW(StrChr)
+
+LPSTR WINAPI StrChrIA(LPCSTR,WORD);
+LPWSTR WINAPI StrChrIW(LPCWSTR,WCHAR);
+#define StrChrI WINELIB_NAME_AW(StrChrI)
+
+#define StrCmpA lstrcmpA
+int WINAPI StrCmpW(LPCWSTR,LPCWSTR);
+#define StrCmp WINELIB_NAME_AW(StrCmp)
+
+#define StrCmpIA lstrcmpiA
+int WINAPI StrCmpIW(LPCWSTR,LPCWSTR);
+#define StrCmpI WINELIB_NAME_AW(StrCmpI)
+
+#define StrCpyA lstrcpyA
+LPWSTR WINAPI StrCpyW(LPWSTR,LPCWSTR);
+#define StrCpy WINELIB_NAME_AW(StrCpy)
+
+#define StrCpyNA lstrcpynA
+LPWSTR WINAPI StrCpyNW(LPWSTR,LPCWSTR,int);
+#define StrCpyN WINELIB_NAME_AW(StrCpyN)
+#define StrNCpy WINELIB_NAME_AW(StrCpyN)
+
+INT WINAPI StrCmpLogicalW(LPCWSTR,LPCWSTR);
+
+INT WINAPI StrCmpNA(LPCSTR,LPCSTR,INT);
+INT WINAPI StrCmpNW(LPCWSTR,LPCWSTR,INT);
+#define StrCmpN WINELIB_NAME_AW(StrCmpN)
+#define StrNCmp WINELIB_NAME_AW(StrCmpN)
+
+INT WINAPI StrCmpNIA(LPCSTR,LPCSTR,INT);
+INT WINAPI StrCmpNIW(LPCWSTR,LPCWSTR,INT);
+#define StrCmpNI WINELIB_NAME_AW(StrCmpNI)
+#define StrNCmpI WINELIB_NAME_AW(StrCmpNI)
+
+LPSTR WINAPI StrDupA(LPCSTR);
+LPWSTR WINAPI StrDupW(LPCWSTR);
+#define StrDup WINELIB_NAME_AW(StrDup)
+
+HRESULT WINAPI SHStrDupA(LPCSTR,WCHAR**);
+HRESULT WINAPI SHStrDupW(LPCWSTR,WCHAR**);
+#define SHStrDup WINELIB_NAME_AW(SHStrDup)
+
+LPSTR WINAPI StrFormatByteSizeA (DWORD,LPSTR,UINT);
+
+/* A/W Pairing is broken for this function */
+LPSTR WINAPI StrFormatByteSize64A (LONGLONG,LPSTR,UINT);
+LPWSTR WINAPI StrFormatByteSizeW (LONGLONG,LPWSTR,UINT);
+#ifndef WINE_NO_UNICODE_MACROS
+#ifdef UNICODE
+#define StrFormatByteSize StrFormatByteSizeW
+#else
+#define StrFormatByteSize StrFormatByteSize64A
+#endif
+#endif
+
+LPSTR WINAPI StrFormatKBSizeA(LONGLONG,LPSTR,UINT);
+LPWSTR WINAPI StrFormatKBSizeW(LONGLONG,LPWSTR,UINT);
+#define StrFormatKBSize WINELIB_NAME_AW(StrFormatKBSize)
+
+int WINAPI StrFromTimeIntervalA(LPSTR,UINT,DWORD,int);
+int WINAPI StrFromTimeIntervalW(LPWSTR,UINT,DWORD,int);
+#define StrFromTimeInterval WINELIB_NAME_AW(StrFromTimeInterval)
+
+BOOL WINAPI StrIsIntlEqualA(BOOL,LPCSTR,LPCSTR,int);
+BOOL WINAPI StrIsIntlEqualW(BOOL,LPCWSTR,LPCWSTR,int);
+#define StrIsIntlEqual WINELIB_NAME_AW(StrIsIntlEqual)
+
+#define StrIntlEqNA(a,b,c) StrIsIntlEqualA(TRUE,a,b,c)
+#define StrIntlEqNW(a,b,c) StrIsIntlEqualW(TRUE,a,b,c)
+
+#define StrIntlEqNIA(a,b,c) StrIsIntlEqualA(FALSE,a,b,c)
+#define StrIntlEqNIW(a,b,c) StrIsIntlEqualW(FALSE,a,b,c)
+
+LPSTR  WINAPI StrNCatA(LPSTR,LPCSTR,int);
+LPWSTR WINAPI StrNCatW(LPWSTR,LPCWSTR,int);
+#define StrNCat WINELIB_NAME_AW(StrNCat)
+#define StrCatN WINELIB_NAME_AW(StrNCat)
+
+LPSTR  WINAPI StrPBrkA(LPCSTR,LPCSTR);
+LPWSTR WINAPI StrPBrkW(LPCWSTR,LPCWSTR);
+#define StrPBrk WINELIB_NAME_AW(StrPBrk)
+
+LPSTR  WINAPI StrRChrA(LPCSTR,LPCSTR,WORD);
+LPWSTR WINAPI StrRChrW(LPCWSTR,LPCWSTR,WORD);
+#define StrRChr WINELIB_NAME_AW(StrRChr)
+
+LPSTR  WINAPI StrRChrIA(LPCSTR,LPCSTR,WORD);
+LPWSTR WINAPI StrRChrIW(LPCWSTR,LPCWSTR,WORD);
+#define StrRChrI WINELIB_NAME_AW(StrRChrI)
+
+LPSTR  WINAPI StrRStrIA(LPCSTR,LPCSTR,LPCSTR);
+LPWSTR WINAPI StrRStrIW(LPCWSTR,LPCWSTR,LPCWSTR);
+#define StrRStrI WINELIB_NAME_AW(StrRStrI)
+
+int WINAPI StrSpnA(LPCSTR,LPCSTR);
+int WINAPI StrSpnW(LPCWSTR,LPCWSTR);
+#define StrSpn WINELIB_NAME_AW(StrSpn)
+
+LPSTR  WINAPI StrStrA(LPCSTR,LPCSTR);
+LPWSTR WINAPI StrStrW(LPCWSTR,LPCWSTR);
+#define StrStr WINELIB_NAME_AW(StrStr)
+
+LPSTR  WINAPI StrStrIA(LPCSTR,LPCSTR);
+LPWSTR WINAPI StrStrIW(LPCWSTR,LPCWSTR);
+#define StrStrI WINELIB_NAME_AW(StrStrI)
+
+int WINAPI StrToIntA(LPCSTR);
+int WINAPI StrToIntW(LPCWSTR);
+#define StrToInt WINELIB_NAME_AW(StrToInt)
+#define StrToLong WINELIB_NAME_AW(StrToInt)
+
+BOOL WINAPI StrToIntExA(LPCSTR,DWORD,int*);
+BOOL WINAPI StrToIntExW(LPCWSTR,DWORD,int*);
+#define StrToIntEx WINELIB_NAME_AW(StrToIntEx)
+
+BOOL WINAPI StrToInt64ExA(LPCSTR,DWORD,LONGLONG*);
+BOOL WINAPI StrToInt64ExW(LPCWSTR,DWORD,LONGLONG*);
+#define StrToIntEx64 WINELIB_NAME_AW(StrToIntEx64)
+
+BOOL WINAPI StrTrimA(LPSTR,LPCSTR);
+BOOL WINAPI StrTrimW(LPWSTR,LPCWSTR);
+#define StrTrim WINELIB_NAME_AW(StrTrim)
+
+INT WINAPI wvnsprintfA(LPSTR,INT,LPCSTR,va_list);
+INT WINAPI wvnsprintfW(LPWSTR,INT,LPCWSTR,va_list);
+#define wvnsprintf WINELIB_NAME_AW(wvnsprintf)
+
+INT WINAPIV wnsprintfA(LPSTR,INT,LPCSTR, ...);
+INT WINAPIV wnsprintfW(LPWSTR,INT,LPCWSTR, ...);
+#define wnsprintf WINELIB_NAME_AW(wnsprintf)
+
+HRESULT WINAPI SHLoadIndirectString(LPCWSTR,LPWSTR,UINT,PVOID*);
+
+BOOL WINAPI IntlStrEqWorkerA(BOOL,LPCSTR,LPCSTR,int);
+BOOL WINAPI IntlStrEqWorkerW(BOOL,LPCWSTR,LPCWSTR,int);
+#define IntlStrEqWorker WINELIB_NAME_AW(IntlStrEqWorker)
+
+#define IntlStrEqNA(s1,s2,n) IntlStrEqWorkerA(TRUE,s1,s2,n)
+#define IntlStrEqNW(s1,s2,n) IntlStrEqWorkerW(TRUE,s1,s2,n)
+#define IntlStrEqN WINELIB_NAME_AW(IntlStrEqN)
+
+#define IntlStrEqNIA(s1,s2,n) IntlStrEqWorkerA(FALSE,s1,s2,n)
+#define IntlStrEqNIW(s1,s2,n) IntlStrEqWorkerW(FALSE,s1,s2,n)
+#define IntlStrEqNI WINELIB_NAME_AW(IntlStrEqNI)
+
+HRESULT WINAPI StrRetToStrA(STRRET*,LPCITEMIDLIST,LPSTR*);
+HRESULT WINAPI StrRetToStrW(STRRET*,LPCITEMIDLIST,LPWSTR*);
+#define StrRetToStr WINELIB_NAME_AW(StrRetToStr)
+
+HRESULT WINAPI StrRetToBufA(STRRET*,LPCITEMIDLIST,LPSTR,UINT);
+HRESULT WINAPI StrRetToBufW(STRRET*,LPCITEMIDLIST,LPWSTR,UINT);
+#define StrRetToBuf WINELIB_NAME_AW(StrRetToBuf)
+
+HRESULT WINAPI StrRetToBSTR(STRRET*,LPCITEMIDLIST,BSTR*);
+
+#endif /* NO_SHLWAPI_STRFCNS */
+
+
+/* GDI functions */
+#ifndef NO_SHLWAPI_GDI
+
+HPALETTE WINAPI SHCreateShellPalette(HDC);
+
+COLORREF WINAPI ColorHLSToRGB(WORD,WORD,WORD);
+
+COLORREF WINAPI ColorAdjustLuma(COLORREF,int,BOOL);
+
+VOID WINAPI ColorRGBToHLS(COLORREF,LPWORD,LPWORD,LPWORD);
+
+#endif /* NO_SHLWAPI_GDI */
+
+
+/* Stream functions */
+#ifndef NO_SHLWAPI_STREAM
+
+struct IStream * WINAPI SHOpenRegStreamA(HKEY,LPCSTR,LPCSTR,DWORD);
+struct IStream * WINAPI SHOpenRegStreamW(HKEY,LPCWSTR,LPCWSTR,DWORD);
+#define SHOpenRegStream WINELIB_NAME_AW(SHOpenRegStream2) /* Uses version 2 */
+
+struct IStream * WINAPI SHOpenRegStream2A(HKEY,LPCSTR,LPCSTR,DWORD);
+struct IStream * WINAPI SHOpenRegStream2W(HKEY,LPCWSTR,LPCWSTR,DWORD);
+#define SHOpenRegStream2 WINELIB_NAME_AW(SHOpenRegStream2)
+
+HRESULT WINAPI SHCreateStreamOnFileA(LPCSTR,DWORD,struct IStream**);
+HRESULT WINAPI SHCreateStreamOnFileW(LPCWSTR,DWORD,struct IStream**);
+#define SHCreateStreamOnFile WINELIB_NAME_AW(SHCreateStreamOnFile)
+
+HRESULT WINAPI SHCreateStreamOnFileEx(LPCWSTR,DWORD,DWORD,BOOL,struct IStream*,struct IStream**);
+
+HRESULT WINAPI SHCreateStreamWrapper(LPBYTE,DWORD,DWORD,struct IStream**);
+
+#endif /* NO_SHLWAPI_STREAM */
+
+/* SHAutoComplete flags */
+#define SHACF_DEFAULT               0x00000000
+#define SHACF_FILESYSTEM            0x00000001
+#define SHACF_URLHISTORY            0x00000002
+#define SHACF_URLMRU                0x00000004
+#define SHACF_URLALL                (SHACF_URLHISTORY|SHACF_URLMRU)
+#define SHACF_USETAB                0x00000008
+#define SHACF_FILESYS_ONLY          0x00000010
+#define SHACF_FILESYS_DIRS          0x00000020
+#define SHACF_AUTOSUGGEST_FORCE_ON  0x10000000
+#define SHACF_AUTOSUGGEST_FORCE_OFF 0x20000000
+#define SHACF_AUTOAPPEND_FORCE_ON   0x40000000
+#define SHACF_AUTOAPPEND_FORCE_OFF  0x80000000
+
+HRESULT WINAPI SHAutoComplete(HWND,DWORD);
+
+/* Threads */
+HRESULT WINAPI SHGetThreadRef(IUnknown**);
+HRESULT WINAPI SHSetThreadRef(IUnknown*);
+HRESULT WINAPI SHReleaseThreadRef(void);
+
+/* SHCreateThread flags */
+#define CTF_INSIST          0x01 /* Always call */
+#define CTF_THREAD_REF      0x02 /* Hold thread ref */
+#define CTF_PROCESS_REF     0x04 /* Hold process ref */
+#define CTF_COINIT          0x08 /* Startup COM first */
+#define CTF_FREELIBANDEXIT  0x10 /* Hold DLL ref */
+#define CTF_REF_COUNTED     0x20 /* Thread is ref counted */
+#define CTF_WAIT_ALLOWCOM   0x40 /* Allow marshalling */
+
+BOOL WINAPI SHCreateThread(LPTHREAD_START_ROUTINE,void*,DWORD,LPTHREAD_START_ROUTINE);
+
+BOOL WINAPI SHSkipJunction(struct IBindCtx*,const CLSID*);
+
+/* Version Information */
+
+typedef struct _DllVersionInfo {
+    DWORD cbSize;
+    DWORD dwMajorVersion;
+    DWORD dwMinorVersion;
+    DWORD dwBuildNumber;
+    DWORD dwPlatformID;
+} DLLVERSIONINFO;
+
+#define DLLVER_PLATFORM_WINDOWS 0x01 /* Win9x */
+#define DLLVER_PLATFORM_NT      0x02 /* WinNT */
+
+typedef HRESULT (CALLBACK *DLLGETVERSIONPROC)(DLLVERSIONINFO *);
+
+#ifdef __WINESRC__
+/* shouldn't be here, but is nice for type checking */
+HRESULT WINAPI DllGetVersion(DLLVERSIONINFO *) DECLSPEC_HIDDEN;
+#endif
+
+typedef struct _DLLVERSIONINFO2 {
+    DLLVERSIONINFO info1;
+    DWORD          dwFlags;    /* Reserved */
+    ULONGLONG DECLSPEC_ALIGN(8) ullVersion; /* 16 bits each for Major, Minor, Build, QFE */
+} DLLVERSIONINFO2;
+
+#define DLLVER_MAJOR_MASK 0xFFFF000000000000
+#define DLLVER_MINOR_MASK 0x0000FFFF00000000
+#define DLLVER_BUILD_MASK 0x00000000FFFF0000
+#define DLLVER_QFE_MASK   0x000000000000FFFF
+
+#define MAKEDLLVERULL(mjr, mnr, bld, qfe) (((ULONGLONG)(mjr)<< 48)| \
+  ((ULONGLONG)(mnr)<< 32) | ((ULONGLONG)(bld)<< 16) | (ULONGLONG)(qfe))
+
+HRESULT WINAPI DllInstall(BOOL,LPCWSTR) DECLSPEC_HIDDEN;
+
+
+/* IsOS definitions */
+
+#define OS_WIN32SORGREATER        0x00
+#define OS_NT                     0x01
+#define OS_WIN95ORGREATER         0x02
+#define OS_NT4ORGREATER           0x03
+#define OS_WIN2000ORGREATER_ALT   0x04
+#define OS_WIN98ORGREATER         0x05
+#define OS_WIN98_GOLD             0x06
+#define OS_WIN2000ORGREATER       0x07
+#define OS_WIN2000PRO             0x08
+#define OS_WIN2000SERVER          0x09
+#define OS_WIN2000ADVSERVER       0x0A
+#define OS_WIN2000DATACENTER      0x0B
+#define OS_WIN2000TERMINAL        0x0C
+#define OS_EMBEDDED               0x0D
+#define OS_TERMINALCLIENT         0x0E
+#define OS_TERMINALREMOTEADMIN    0x0F
+#define OS_WIN95_GOLD             0x10
+#define OS_MEORGREATER            0x11
+#define OS_XPORGREATER            0x12
+#define OS_HOME                   0x13
+#define OS_PROFESSIONAL           0x14
+#define OS_DATACENTER             0x15
+#define OS_ADVSERVER              0x16
+#define OS_SERVER                 0x17
+#define OS_TERMINALSERVER         0x18
+#define OS_PERSONALTERMINALSERVER 0x19
+#define OS_FASTUSERSWITCHING      0x1A
+#define OS_WELCOMELOGONUI         0x1B
+#define OS_DOMAINMEMBER           0x1C
+#define OS_ANYSERVER              0x1D
+#define OS_WOW6432                0x1E
+#define OS_WEBSERVER              0x1F
+#define OS_SMALLBUSINESSSERVER    0x20
+#define OS_TABLETPC               0x21
+#define OS_SERVERADMINUI          0x22
+#define OS_MEDIACENTER            0x23
+#define OS_APPLIANCE              0x24
+
+BOOL WINAPI IsOS(DWORD);
+
+/* SHSetTimerQueueTimer definitions */
+#define TPS_EXECUTEIO    0x00000001
+#define TPS_LONGEXECTIME 0x00000008
+
+#include <poppack.h> 
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif /* __WINE_SHLWAPI_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/shobjidl.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/shobjidl.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/shobjidl.idl	(revision 16410)
@@ -0,0 +1,1436 @@
+/*
+ * COM interfaces for shell objects
+ *
+ * Copyright (C) 1999 Juergen Schmied
+ * Copyright (C) 2003 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "objidl.idl";
+import "oleidl.idl";
+import "oaidl.idl";
+import "docobj.idl";
+import "shtypes.idl";
+import "servprov.idl";
+import "comcat.idl";
+import "propidl.idl";
+/* FIXME: import "prsht.idl";*/
+import "msxml.idl";
+import "wtypes.idl";
+/* FIXME: import "propsys.idl"; */
+/* FIXME: import "structuredquery.idl"; */
+
+cpp_quote("/* FIXME: #include <sherrors.h> */")
+
+
+/*****************************************************************************
+ * IPersistFolder interface
+ */
+[
+    object,
+    uuid(000214ea-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IPersistFolder : IPersist
+{
+    typedef IPersistFolder *LPPERSISTFOLDER;
+
+    HRESULT Initialize( [in] LPCITEMIDLIST pidl );
+}
+
+
+/*****************************************************************************
+ * IPersistFolder2 interface
+ */
+[
+    object,
+    uuid(1ac3d9f0-175c-11d1-95be-00609797ea4f),
+    pointer_default(unique)
+]
+interface IPersistFolder2 : IPersistFolder
+{
+    typedef IPersistFolder2 *LPPERSISTFOLDER2;
+
+    HRESULT GetCurFolder( [out] LPITEMIDLIST *ppidl );
+}
+
+
+/*****************************************************************************
+ * IEnumIDList interface
+ */
+[
+    object,
+    uuid(000214f2-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IEnumIDList : IUnknown
+{
+    typedef IEnumIDList *LPENUMIDLIST;
+
+    HRESULT Next(
+        [in] ULONG celt,
+        [out, size_is(celt), length_is(*pceltFetched)] LPITEMIDLIST *rgelt,
+        [out] ULONG *pceltFetched);
+
+    HRESULT Skip( [in] ULONG celt );
+    HRESULT Reset();
+    HRESULT Clone( [out] IEnumIDList **ppenum );
+}
+
+/*****************************************************************************
+ * IShellPropSheetExt interface
+ */
+cpp_quote("#if 0")
+    typedef LPARAM LPFNSVADDPROPSHEETPAGE;
+cpp_quote("#else")
+cpp_quote("#include <prsht.h>")
+cpp_quote("typedef LPFNADDPROPSHEETPAGE LPFNSVADDPROPSHEETPAGE;")
+cpp_quote("#endif")
+
+[
+    object,
+    uuid(000214E9-0000-0000-C000-000000000046),
+    pointer_default(unique)
+]
+interface IShellPropSheetExt : IUnknown
+{
+    enum tagSHELLPROPSHEETEXTPAGEID {
+        EXPPS_FILETYPES = 0x1
+    };
+
+    typedef UINT EXPPS;
+
+    HRESULT AddPages(
+        [in] LPFNSVADDPROPSHEETPAGE pfnAddPage,
+        [in] LPARAM lParam);
+    HRESULT ReplacePage(
+        [in] EXPPS uPageID,
+        [in] LPFNSVADDPROPSHEETPAGE pfnReplaceWith,
+        [in] LPARAM lParam);
+}
+typedef IShellPropSheetExt *LPSHELLPROPSHEETEXT;
+
+/*****************************************************************************
+ * IShellFolder interface
+ */
+[
+    object,
+    uuid(000214e6-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IShellFolder : IUnknown
+{
+    typedef IShellFolder * LPSHELLFOLDER;
+
+    typedef enum tagSHGDN
+    {
+        SHGDN_NORMAL = 0,
+        SHGDN_INFOLDER = 1,
+        SHGDN_FOREDITING = 0x1000,
+        SHGDN_INCLUDE_NONFILESYS = 0x2000,
+        SHGDN_FORADDRESSBAR = 0x4000,
+        SHGDN_FORPARSING = 0x8000
+    } SHGNO;
+
+    typedef DWORD SHGDNF;
+
+    enum tagSHCONTF
+    {
+        SHCONTF_FOLDERS = 32,
+        SHCONTF_NONFOLDERS = 64,
+        SHCONTF_INCLUDEHIDDEN = 128,
+        SHCONTF_INIT_ON_FIRST_NEXT = 256,
+        SHCONTF_NETPRINTERSRCH = 512,
+        SHCONTF_SHAREABLE = 1024,
+        SHCONTF_STORAGE = 2048
+    };
+
+    typedef DWORD SHCONTF;
+
+    cpp_quote("#define SFGAO_CANCOPY           DROPEFFECT_COPY")
+    cpp_quote("#define SFGAO_CANMOVE           DROPEFFECT_MOVE")
+    cpp_quote("#define SFGAO_CANLINK           DROPEFFECT_LINK")
+    cpp_quote("#define SFGAO_STORAGE           0x00000008L")
+    cpp_quote("#define SFGAO_CANRENAME         0x00000010L")
+    cpp_quote("#define SFGAO_CANDELETE         0x00000020L")
+    cpp_quote("#define SFGAO_HASPROPSHEET      0x00000040L")
+    cpp_quote("#define SFGAO_DROPTARGET        0x00000100L")
+    cpp_quote("#define SFGAO_CAPABILITYMASK    0x00000177L")
+    cpp_quote("#define SFGAO_ENCRYPTED         0x00002000L")
+    cpp_quote("#define SFGAO_ISSLOW            0x00004000L")
+    cpp_quote("#define SFGAO_GHOSTED           0x00008000L")
+    cpp_quote("#define SFGAO_LINK              0x00010000L")
+    cpp_quote("#define SFGAO_SHARE             0x00020000L")
+    cpp_quote("#define SFGAO_READONLY          0x00040000L")
+    cpp_quote("#define SFGAO_HIDDEN            0x00080000L")
+    cpp_quote("#define SFGAO_DISPLAYATTRMASK   0x000FC000L")
+    cpp_quote("#define SFGAO_FILESYSANCESTOR   0x10000000L")
+    cpp_quote("#define SFGAO_FOLDER            0x20000000L")
+    cpp_quote("#define SFGAO_FILESYSTEM        0x40000000L")
+    cpp_quote("#define SFGAO_HASSUBFOLDER      0x80000000L")
+    cpp_quote("#define SFGAO_CONTENTSMASK      0x80000000L")
+    cpp_quote("#define SFGAO_VALIDATE          0x01000000L")
+    cpp_quote("#define SFGAO_REMOVABLE         0x02000000L")
+    cpp_quote("#define SFGAO_COMPRESSED        0x04000000L")
+    cpp_quote("#define SFGAO_BROWSABLE         0x08000000L")
+    cpp_quote("#define SFGAO_NONENUMERATED     0x00100000L")
+    cpp_quote("#define SFGAO_NEWCONTENT        0x00200000L")
+    cpp_quote("#define SFGAO_STREAM            0x00400000L")
+    cpp_quote("#define SFGAO_STORAGEANCESTOR   0x00800000L")
+
+    typedef ULONG SFGAOF;
+
+    HRESULT ParseDisplayName(
+        [in] HWND hwndOwner,
+        [in] LPBC pbcReserved,
+        [in, string] LPOLESTR lpszDisplayName,
+        [out] ULONG *pchEaten,
+        [out] LPITEMIDLIST *ppidl,
+        [in, out, unique] ULONG *pdwAttributes);
+
+    HRESULT EnumObjects(
+        [in] HWND hwndOwner,
+        [in] SHCONTF grfFlags,
+        [out] IEnumIDList **ppenumIDList);
+
+    HRESULT BindToObject(
+        [in] LPCITEMIDLIST pidl,
+        [in] LPBC pbcReserved,
+        [in] REFIID riid,
+        [out, iid_is(riid)] void **ppvOut);
+
+    HRESULT BindToStorage(
+        [in] LPCITEMIDLIST pidl,
+        [in] LPBC pbcReserved,
+        [in] REFIID riid,
+        [out, iid_is(riid)] void **ppvObj);
+
+    HRESULT CompareIDs(
+        [in] LPARAM lParam,
+        [in] LPCITEMIDLIST pidl1,
+        [in] LPCITEMIDLIST pidl2);
+
+    HRESULT CreateViewObject(
+        [in] HWND hwndOwner,
+        [in] REFIID riid,
+        [out, iid_is(riid)] void **ppvOut);
+
+    HRESULT GetAttributesOf(
+        [in] UINT cidl,
+        [in, size_is(cidl)] LPCITEMIDLIST *apidl,
+        [in, out] SFGAOF *rgfInOut);
+
+    HRESULT GetUIObjectOf(
+        [in] HWND hwndOwner,
+        [in] UINT cidl,
+        [in, size_is(cidl)] LPCITEMIDLIST *apidl,
+        [in] REFIID riid,
+        [in, out, unique] UINT *prgfInOut,
+        [out, iid_is(riid)] void **ppvOut);
+
+    HRESULT GetDisplayNameOf(
+        [in] LPCITEMIDLIST pidl,
+        [in] SHGDNF uFlags,
+        [out] STRRET *lpName);
+
+    HRESULT SetNameOf(
+        [in] HWND hwnd,
+        [in] LPCITEMIDLIST pidl,
+        [in, string] LPCOLESTR lpszName,
+        [in] SHGDNF uFlags,
+        [out] LPITEMIDLIST *ppidlOut);
+}
+
+
+/*****************************************************************************
+ * IEnumExtraSearch interface
+ */
+[
+    object,
+    uuid(0e700be1-9db6-11d1-a1ce-00c04fd75d13),
+    pointer_default(unique)
+]
+interface IEnumExtraSearch : IUnknown
+{
+    typedef IEnumExtraSearch *LPENUMEXTRASEARCH;
+
+    typedef struct
+    {
+        GUID guidSearch;
+        WCHAR wszFriendlyName[80];
+        /*
+         *WCHAR wszMenuText[80];
+         *WCHAR wszHelpText[MAX_PATH];
+         */
+        WCHAR wszUrl[2084];
+        /*
+         *WCHAR wszIcon[MAX_PATH+10];
+         *WCHAR wszGreyIcon[MAX_PATH+10];
+         *WCHAR wszClrIcon[MAX_PATH+10];
+         */
+    } EXTRASEARCH, *LPEXTRASEARCH;
+
+    HRESULT Next(
+        [in] ULONG celt,
+        [out, size_is(celt), length_is(*pceltFetched)] EXTRASEARCH *rgelt,
+        [out] ULONG *pceltFetched);
+
+    HRESULT Skip( [in] ULONG celt );
+    HRESULT Reset();
+    HRESULT Clone( [out] IEnumExtraSearch **ppenum );
+}
+
+
+/*****************************************************************************
+ * IShellFolder2 interface
+ */
+[
+    object,
+    uuid(93f2f68c-1d1b-11d3-a30e-00c04f79abd1),
+    pointer_default(unique)
+]
+interface IShellFolder2 : IShellFolder
+{
+    typedef enum
+    {
+        SHCOLSTATE_TYPE_STR = 0x00000001,
+        SHCOLSTATE_TYPE_INT = 0x00000002,
+        SHCOLSTATE_TYPE_DATE = 0x00000003,
+        SHCOLSTATE_TYPEMASK = 0x0000000f,
+        SHCOLSTATE_ONBYDEFAULT = 0x00000010,
+        SHCOLSTATE_SLOW = 0x00000020,
+        SHCOLSTATE_EXTENDED = 0x00000040,
+        SHCOLSTATE_SECONDARYUI = 0x00000080,
+        SHCOLSTATE_HIDDEN = 0x00000100,
+        SHCOLSTATE_PREFER_VARCMP = 0x00000200
+    } SHCOLSTATE;
+
+    typedef DWORD SHCOLSTATEF;
+
+    typedef struct
+    {
+        GUID    fmtid;
+        DWORD   pid;
+    } SHCOLUMNID, *LPSHCOLUMNID;
+    typedef const SHCOLUMNID *LPCSHCOLUMNID;
+
+    HRESULT GetDefaultSearchGUID( [out] GUID *lpguid );
+    HRESULT EnumSearches( [out] IEnumExtraSearch **ppenum );
+    HRESULT GetDefaultColumn( [in] DWORD dwReserved, [out] ULONG *pSort, [out] ULONG *pDisplay );
+    HRESULT GetDefaultColumnState( [in] UINT iColumn, [out] SHCOLSTATEF *pcsFlags );
+    HRESULT GetDetailsEx( [in] LPCITEMIDLIST pidl, [in] const SHCOLUMNID *pscid, [out] VARIANT *pv);
+    HRESULT GetDetailsOf( [in] LPCITEMIDLIST pidl, [in] UINT iColumn, [out] SHELLDETAILS *psd);
+    HRESULT MapColumnToSCID( [in] UINT iColumn, [in] SHCOLUMNID *pscid );
+}
+
+
+
+/*****************************************************************************
+ * FOLDERSETTINGS
+ */
+typedef char *LPVIEWSETTINGS;
+
+typedef enum
+{
+    FWF_AUTOARRANGE         = 0x00000001,
+    FWF_ABBREVIATEDNAMES    = 0x00000002,
+    FWF_SNAPTOGRID          = 0x00000004,
+    FWF_OWNERDATA           = 0x00000008,
+    FWF_BESTFITWINDOW       = 0x00000010,
+    FWF_DESKTOP             = 0x00000020,
+    FWF_SINGLESEL           = 0x00000040,
+    FWF_NOSUBFOLDERS        = 0x00000080,
+    FWF_TRANSPARENT         = 0x00000100,
+    FWF_NOCLIENTEDGE        = 0x00000200,
+    FWF_NOSCROLL            = 0x00000400,
+    FWF_ALIGNLEFT           = 0x00000800,
+    FWF_NOICONS             = 0x00001000,
+    FWF_SHOWSELALWAYS       = 0x00002000,
+    FWF_NOVISIBLE           = 0x00004000,
+    FWF_SINGLECLICKACTIVATE = 0x00008000,
+    FWF_NOWEBVIEW           = 0x00010000,
+    FWF_HIDEFILENAMES       = 0x00020000,
+    FWF_CHECKSELECT         = 0x00040000
+} FOLDERFLAGS;
+
+typedef enum
+{
+    FVM_ICON       = 1,
+    FVM_FIRST      = FVM_ICON,
+    FVM_SMALLICON  = 2,
+    FVM_LIST       = 3,
+    FVM_DETAILS    = 4,
+    FVM_THUMBNAIL  = 5,
+    FVM_TILE       = 6,
+    FVM_THUMBSTRIP = 7,
+    FVM_LAST       = FVM_THUMBSTRIP
+} FOLDERVIEWMODE;
+
+typedef struct
+{
+    UINT ViewMode;
+    UINT fFlags;
+} FOLDERSETTINGS, *PFOLDERSETTINGS, *LPFOLDERSETTINGS;
+typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS;
+
+
+/*****************************************************************************
+ * IShellView interface
+ */
+interface IShellBrowser;  /* forward declaration */
+[
+    object,
+    uuid(000214e3-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IShellView : IOleWindow
+{
+    typedef IShellView *LPSHELLVIEW;
+
+    cpp_quote("#define SVSI_DESELECT       0x00000000")
+    cpp_quote("#define SVSI_SELECT         0x00000001")
+    cpp_quote("#define SVSI_EDIT           0x00000003")
+    cpp_quote("#define SVSI_DESELECTOTHERS 0x00000004")
+    cpp_quote("#define SVSI_ENSUREVISIBLE  0x00000008")
+    cpp_quote("#define SVSI_FOCUSED        0x00000010")
+    cpp_quote("#define SVSI_TRANSLATEPT    0x00000020")
+    cpp_quote("#define SVSI_SELECTIONMARK  0x00000040")
+    cpp_quote("#define SVSI_POSITIONITEM   0x00000080")
+    cpp_quote("#define SVSI_CHECK          0x00000100")
+    cpp_quote("#define SVSI_NOSTATECHANGE  0x80000000")
+
+    typedef UINT SVSIF;
+
+    typedef enum
+    {
+        SVGIO_BACKGROUND     = 0x00000000,
+        SVGIO_SELECTION      = 0x00000001,
+        SVGIO_ALLVIEW        = 0x00000002,
+        SVGIO_CHECKED        = 0x00000003,
+        SVGIO_TYPE_MASK      = 0x0000000f,
+        SVGIO_FLAG_VIEWORDER = 0x80000000,
+    } SVGIO;
+
+    typedef enum
+    {
+        SVUIA_DEACTIVATE       = 0,
+        SVUIA_ACTIVATE_NOFOCUS = 1,
+        SVUIA_ACTIVATE_FOCUS   = 2,
+        SVUIA_INPLACEACTIVATE  = 3
+    } SVUIA_STATUS;
+
+    HRESULT TranslateAccelerator( [in] MSG *pmsg );
+    HRESULT EnableModeless( [in] BOOL fEnable );
+    HRESULT UIActivate( [in] UINT uState );
+    HRESULT Refresh();
+    HRESULT CreateViewWindow(
+        [in] IShellView *psvPrevious,
+        [in] LPCFOLDERSETTINGS lpfs,
+        [in] IShellBrowser *psb,
+        [out] RECT *prcView,
+        [out] HWND *phWnd);
+
+    HRESULT DestroyViewWindow();
+    HRESULT GetCurrentInfo( [out] LPFOLDERSETTINGS lpfs );
+
+    [local] HRESULT AddPropertySheetPages(
+        [in] DWORD dwReserved,
+        [in] LPFNSVADDPROPSHEETPAGE pfn,
+        [in] LPARAM lparam);
+
+    HRESULT SaveViewState();
+    HRESULT SelectItem(
+        [in] LPCITEMIDLIST pidlItem,
+        [in] SVSIF uFlags);
+    HRESULT GetItemObject(
+        [in] UINT uItem,
+        [in] REFIID riid,
+        [out, iid_is(riid)] void **ppv);
+}
+
+[
+    object,
+    uuid(88e39e80-3578-11cf-ae69-08002b2e1262),
+    pointer_default(unique)
+]
+interface IShellView2 : IShellView
+{
+    typedef GUID SHELLVIEWID;
+cpp_quote("#include <pshpack8.h>")
+    typedef struct _SV2CVW2_PARAMS
+    {
+        DWORD cbSize;
+        IShellView *psvPrev;
+        LPCFOLDERSETTINGS pfs;
+        IShellBrowser *psbOwner;
+        RECT *prcView;
+        SHELLVIEWID const *pvid;
+        HWND hwndView;
+    } SV2CVW2_PARAMS, *LPSV2CVW2_PARAMS;
+cpp_quote("#include <poppack.h>")
+
+    HRESULT GetView(
+        [in, out] SHELLVIEWID *view_guid,
+        [in] ULONG view_type
+    );
+    HRESULT CreateViewWindow2(
+        [in] LPSV2CVW2_PARAMS view_params
+    );
+    HRESULT HandleRename(
+        [in] LPCITEMIDLIST new_pidl
+    );
+    HRESULT SelectAndPositionItem(
+        [in] LPCITEMIDLIST item,
+        [in] UINT flags,
+        [in] POINT *point
+    );
+}
+
+
+/*****************************************************************************
+ * IShellBrowser interface
+ */
+[
+    object,
+    uuid(000214e2-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IShellBrowser : IOleWindow
+{
+    typedef IShellBrowser *LPSHELLBROWSER;
+
+cpp_quote("#define SBSP_DEFBROWSER            0x00000000")
+cpp_quote("#define SBSP_SAMEBROWSER           0x00000001")
+cpp_quote("#define SBSP_NEWBROWSER            0x00000002")
+cpp_quote("#define SBSP_DEFMODE               0x00000000")
+cpp_quote("#define SBSP_OPENMODE              0x00000010")
+cpp_quote("#define SBSP_EXPLOREMODE           0x00000020")
+cpp_quote("#define SBSP_HELPMODE              0x00000040")
+cpp_quote("#define SBSP_NOTRANSFERHIST        0x00000080")
+cpp_quote("#define SBSP_ABSOLUTE              0x00000000")
+cpp_quote("#define SBSP_RELATIVE              0x00001000")
+cpp_quote("#define SBSP_PARENT                0x00002000")
+cpp_quote("#define SBSP_NAVIGATEBACK          0x00004000")
+cpp_quote("#define SBSP_NAVIGATEFORWARD       0x00008000")
+cpp_quote("#define SBSP_ALLOW_AUTONAVIGATE    0x00010000")
+cpp_quote("#define SBSP_NOAUTOSELECT          0x04000000")
+cpp_quote("#define SBSP_WRITENOHISTORY        0x08000000")
+cpp_quote("#define SBSP_REDIRECT              0x40000000")
+cpp_quote("#define SBSP_INITIATEDBYHLINKFRAME 0x80000000")
+
+cpp_quote("#define FCW_STATUS      0x0001")
+cpp_quote("#define FCW_TOOLBAR     0x0002")
+cpp_quote("#define FCW_TREE        0x0003")
+cpp_quote("#define FCW_INTERNETBAR 0x0006")
+cpp_quote("#define FCW_PROGRESS    0x0008")
+
+cpp_quote("#define FCT_MERGE       0x0001")
+cpp_quote("#define FCT_CONFIGABLE  0x0002")
+cpp_quote("#define FCT_ADDTOEND    0x0004")
+
+cpp_quote("#if 0")
+    typedef LPARAM LPTBBUTTONSB;
+cpp_quote("#else")
+cpp_quote("#include <commctrl.h>")
+cpp_quote("typedef LPTBBUTTON LPTBBUTTONSB;")
+cpp_quote("#endif")
+
+    HRESULT InsertMenusSB(
+        [in] HMENU hmenuShared,
+        [in, out] LPOLEMENUGROUPWIDTHS lpMenuWidths);
+
+    HRESULT SetMenuSB(
+        [in] HMENU hmenuShared,
+        [in] HOLEMENU holemenuReserved,
+        [in] HWND hwndActiveObject);
+
+    HRESULT RemoveMenusSB( [in] HMENU hmenuShared );
+    HRESULT SetStatusTextSB( [in, unique] LPCOLESTR pszStatusText );
+    HRESULT EnableModelessSB( [in] BOOL fEnable );
+    HRESULT TranslateAcceleratorSB( [in] MSG *pmsg, [in] WORD wID );
+
+    HRESULT BrowseObject(
+        [in] LPCITEMIDLIST pidl,
+        [in] UINT wFlags);
+
+    HRESULT GetViewStateStream(
+        [in] DWORD grfMode,
+        [out] IStream **ppStrm);
+
+    HRESULT GetControlWindow(
+        [in] UINT id,
+        [out] HWND *phwnd);
+
+    [local] HRESULT SendControlMsg(
+        [in] UINT id,
+        [in] UINT uMsg,
+        [in] WPARAM wParam,
+        [in] LPARAM lParam,
+        [in] LRESULT *pret);
+
+    HRESULT QueryActiveShellView( [out] IShellView **ppshv );
+    HRESULT OnViewWindowActive( [in] IShellView *pshv );
+
+    [local]
+    HRESULT SetToolbarItems(
+        [in] LPTBBUTTONSB lpButtons,
+        [in] UINT nButtons,
+        [in] UINT uFlags);
+}
+
+
+/*****************************************************************************
+ * IShellLinkA interface
+ */
+[
+    object,
+    uuid(000214ee-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IShellLinkA : IUnknown
+{
+    typedef enum
+    {
+        SLR_NO_UI               = 0x0001,
+        SLR_ANY_MATCH           = 0x0002,
+        SLR_UPDATE              = 0x0004,
+        SLR_NOUPDATE            = 0x0008,
+        SLR_NOSEARCH            = 0x0010,
+        SLR_NOTRACK             = 0x0020,
+        SLR_NOLINKINFO          = 0x0040,
+        SLR_INVOKE_MSI          = 0x0080,
+        SLR_NO_UI_WITH_MSG_PUMP = 0x0101,
+    } SLR_FLAGS;
+
+    typedef enum
+    {
+        SLGP_SHORTPATH   = 0x0001,
+        SLGP_UNCPRIORITY = 0x0002,
+        SLGP_RAWPATH     = 0x0004,
+    } SLGP_FLAGS;
+
+    HRESULT GetPath(
+        [out, size_is(cch)] LPSTR pszFile,
+        [in] int cch,
+        [in, out] WIN32_FIND_DATAA *pfd,
+        [in] DWORD fFlags);
+
+    HRESULT GetIDList( [out] LPITEMIDLIST * ppidl );
+
+    HRESULT SetIDList( [in] LPCITEMIDLIST pidl );
+
+    HRESULT GetDescription(
+        [out, size_is(cch)] LPSTR pszName,
+        [in] int cch);
+
+    HRESULT SetDescription( [in] LPCSTR pszName );
+
+    HRESULT GetWorkingDirectory(
+        [out, size_is(cch)] LPSTR pszDir,
+        [in] int cch);
+
+    HRESULT SetWorkingDirectory( [in] LPCSTR pszDir );
+
+    HRESULT GetArguments(
+        [out, size_is(cch)] LPSTR pszArgs,
+        [in] int cch);
+
+    HRESULT SetArguments( [in] LPCSTR pszArgs );
+
+    HRESULT GetHotkey( [out] WORD *pwHotkey );
+
+    HRESULT SetHotkey( [in] WORD wHotkey );
+
+    HRESULT GetShowCmd( [out] int *piShowCmd );
+
+    HRESULT SetShowCmd( [in] int iShowCmd );
+
+    HRESULT GetIconLocation(
+        [out, size_is(cch)] LPSTR pszIconPath,
+        [in] int cch,
+        [out] int *piIcon);
+
+    HRESULT SetIconLocation(
+        [in] LPCSTR pszIconPath,
+        [in] int iIcon);
+
+    HRESULT SetRelativePath(
+        [in] LPCSTR pszPathRel,
+        [in] DWORD dwReserved);
+
+    HRESULT Resolve(
+        [in] HWND hwnd,
+        [in] DWORD fFlags);
+
+    HRESULT SetPath( [in] LPCSTR pszFile );
+}
+
+
+/*****************************************************************************
+ * IShellLinkW interface
+ */
+[
+    object,
+    uuid(000214f9-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IShellLinkW : IUnknown
+{
+    HRESULT GetPath(
+        [out, size_is(cch)] LPWSTR pszFile,
+        [in] int cch,
+        [in, out] WIN32_FIND_DATAW *pfd,
+        [in] DWORD fFlags);
+
+    HRESULT GetIDList( [out] LPITEMIDLIST * ppidl );
+
+    HRESULT SetIDList( [in] LPCITEMIDLIST pidl );
+
+    HRESULT GetDescription(
+        [out, size_is(cch)] LPWSTR pszName,
+        [in] int cch);
+
+    HRESULT SetDescription( [in] LPCWSTR pszName );
+
+    HRESULT GetWorkingDirectory(
+        [out, size_is(cch)] LPWSTR pszDir,
+        [in] int cch);
+
+    HRESULT SetWorkingDirectory( [in] LPCWSTR pszDir );
+
+    HRESULT GetArguments(
+        [out, size_is(cch)] LPWSTR pszArgs,
+        [in] int cch);
+
+    HRESULT SetArguments( [in] LPCWSTR pszArgs );
+
+    HRESULT GetHotkey( [out] WORD *pwHotkey );
+
+    HRESULT SetHotkey( [in] WORD wHotkey );
+
+    HRESULT GetShowCmd( [out] int *piShowCmd );
+
+    HRESULT SetShowCmd( [in] int iShowCmd );
+
+    HRESULT GetIconLocation(
+        [out, size_is(cch)] LPWSTR pszIconPath,
+        [in] int cch,
+        [out] int *piIcon);
+
+    HRESULT SetIconLocation(
+        [in] LPCWSTR pszIconPath,
+        [in] int iIcon);
+
+    HRESULT SetRelativePath(
+        [in] LPCWSTR pszPathRel,
+        [in] DWORD dwReserved);
+
+    HRESULT Resolve(
+        [in] HWND hwnd,
+        [in] DWORD fFlags);
+
+    HRESULT SetPath( [in] LPCWSTR pszFile );
+}
+
+cpp_quote("#define IShellLink WINELIB_NAME_AW(IShellLink)")
+
+
+/*****************************************************************************
+ * IShellExtInit interface
+ */
+[
+    object,
+    uuid(000214e8-0000-0000-c000-000000000046),
+    pointer_default(unique),
+    local
+]
+interface IShellExtInit : IUnknown
+{
+    typedef IShellExtInit *LPSHELLEXTINIT;
+
+    HRESULT Initialize(
+        [in] LPCITEMIDLIST pidlFolder,
+        [in] IDataObject *pdtobj,
+        [in] HKEY hkeyProgID);
+}
+
+
+/*******************************************************************************/
+/* Note: the following interfaces are not in shobjidl.idl under Windows, they  */
+/* are declared directly in shlobj.h. It hopefully won't break anything to put */
+/* them here anyway.                                                           */
+/*******************************************************************************/
+
+#ifndef MAX_PATH
+#define MAX_PATH 260
+#endif
+
+
+/*****************************************************************************
+ * IPersistFolder3 interface
+ */
+[
+    object,
+    uuid(cef04fdf-fe72-11d2-87a5-00c04f6837cf),
+    pointer_default(unique)
+]
+interface IPersistFolder3 : IPersistFolder2
+{
+    typedef struct
+    {
+        LPITEMIDLIST	pidlTargetFolder;
+	WCHAR		szTargetParsingName[MAX_PATH];
+	WCHAR		szNetworkProvider[MAX_PATH];
+	DWORD		dwAttributes;
+	int		csidl;
+    } PERSIST_FOLDER_TARGET_INFO;
+
+    HRESULT InitializeEx(
+        [in] IBindCtx *pbc,
+        [in] LPCITEMIDLIST pidlRoot,
+        [in] const PERSIST_FOLDER_TARGET_INFO *ppfti);
+
+    HRESULT GetFolderTargetInfo( [out] PERSIST_FOLDER_TARGET_INFO *ppfti );
+}
+
+
+/*****************************************************************************
+ * IExtractIconA interface
+ */
+[
+    object,
+    uuid(000214eb-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IExtractIconA : IUnknown
+{
+cpp_quote("#define GIL_OPENICON     0x0001")
+cpp_quote("#define GIL_FORSHELL     0x0002")
+cpp_quote("#define GIL_ASYNC        0x0020")
+cpp_quote("#define GIL_DEFAULTICON  0x0040")
+cpp_quote("#define GIL_FORSHORTCUT  0x0080")
+
+cpp_quote("#define GIL_SIMULATEDOC  0x0001")
+cpp_quote("#define GIL_PERINSTANCE  0x0002")
+cpp_quote("#define GIL_PERCLASS     0x0004")
+cpp_quote("#define GIL_NOTFILENAME  0x0008")
+cpp_quote("#define GIL_DONTCACHE    0x0010")
+
+    typedef IExtractIconA *LPEXTRACTICONA;
+
+    HRESULT GetIconLocation(
+        [in] UINT uFlags,
+        [out, size_is(cchMax)] LPSTR szIconFile,
+        [in] UINT cchMax,
+        [out] INT *piIndex,
+        [out] UINT *pwFlags);
+
+    HRESULT Extract(
+        [in] LPCSTR pszFile,
+        [in] UINT nIconIndex,
+        [out] HICON *phiconLarge,
+        [out] HICON *phiconSmall,
+        [in] UINT nIconSize );
+}
+
+
+/*****************************************************************************
+ * IExtractIconW interface
+ */
+[
+    object,
+    uuid(000214fa-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IExtractIconW : IUnknown
+{
+    typedef IExtractIconW *LPEXTRACTICONW;
+
+    HRESULT GetIconLocation(
+        [in] UINT uFlags,
+        [out, size_is(cchMax)] LPWSTR szIconFile,
+        [in] UINT cchMax,
+        [out] INT *piIndex,
+        [out] UINT *pwFlags);
+
+    HRESULT Extract(
+        [in] LPCWSTR pszFile,
+        [in] UINT nIconIndex,
+        [out] HICON *phiconLarge,
+        [out] HICON *phiconSmall,
+        [in] UINT nIconSize );
+}
+
+cpp_quote("#define LPEXTRACTICON WINELIB_NAME_AW(LPEXTRACTICON)")
+cpp_quote("#define IExtractIcon WINELIB_NAME_AW(IExtractIcon)")
+
+
+/*****************************************************************************
+ * ICommDlgBrowser interface
+ */
+[
+    object,
+    uuid(000214f1-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface ICommDlgBrowser : IUnknown
+{
+cpp_quote("#define CDBOSC_SETFOCUS     0x00000000")
+cpp_quote("#define CDBOSC_KILLFOCUS    0x00000001")
+cpp_quote("#define CDBOSC_SELCHANGE    0x00000002")
+cpp_quote("#define CDBOSC_RENAME       0x00000003")
+cpp_quote("#define CDBOSC_STATECHANGE  0x00000004")
+
+    typedef ICommDlgBrowser *LPCOMMDLGBROWSER;
+
+    HRESULT OnDefaultCommand( [in] IShellView *shv );
+    HRESULT OnStateChange( [in] IShellView *shv, [in] ULONG uChange );
+    HRESULT IncludeObject( [in] IShellView *shv, [in] LPCITEMIDLIST pidl );
+}
+
+
+/*****************************************************************************
+ * IDockingWindowFrame interface
+ */
+[
+    object,
+    uuid(47d2657a-7b27-11d0-8ca9-00a0c92dbfe8),
+    pointer_default(unique),
+    local
+]
+interface IDockingWindowFrame : IOleWindow
+{
+cpp_quote("#define DWFRF_NORMAL           0x0000")
+cpp_quote("#define DWFRF_DELETECONFIGDATA 0x0001")
+cpp_quote("#define DWFAF_HIDDEN           0x0001")
+
+    HRESULT AddToolbar(
+        [in] IUnknown *punkSrc,
+        [in] LPCWSTR pwszItem,
+        [in] DWORD dwAddFlags);
+
+    HRESULT RemoveToolbar(
+        [in] IUnknown *punkSrc,
+        [in] DWORD dwRemoveFlags);
+
+    HRESULT FindToolbar(
+        [in] LPCWSTR pwszItem,
+        [in] REFIID riid,
+        [out] LPVOID *ppvObj);
+}
+
+
+/*****************************************************************************
+ * IDragSourceHelper interface
+ */
+[
+    object,
+    uuid(de5bf786-477a-11d2-839d-00c04fd918d0),
+    pointer_default(unique)
+]
+interface IDragSourceHelper : IUnknown
+{
+    typedef struct
+    {
+        SIZE     sizeDragImage;
+        POINT    ptOffset;
+        HBITMAP  hbmpDragImage;
+        COLORREF crColorKey;
+    } SHDRAGIMAGE, *LPSHDRAGIMAGE;
+
+  HRESULT InitializeFromBitmap(
+      [in] LPSHDRAGIMAGE pshdi,
+      [in] IDataObject *pDataObject);
+
+  HRESULT InitializeFromWindow(
+      [in] HWND hwnd,
+      [in] POINT *ppt,
+      [in] IDataObject *pDataObject);
+}
+
+
+/*****************************************************************************
+ * IDropTargetHelper interface
+ */
+[
+    object,
+    uuid(4657278b-411b-11d2-839a-00c04fd918d0),
+    pointer_default(unique)
+]
+interface IDropTargetHelper : IUnknown
+{
+    HRESULT DragEnter(
+        [in] HWND hwndTarget,
+        [in] IDataObject *pDataObject,
+        [in] POINT *ppt,
+        [in] DWORD dwEffect);
+
+    HRESULT DragLeave();
+
+    HRESULT DragOver(
+        [in] POINT *ppt,
+        [in] DWORD dwEffect);
+
+    HRESULT Drop(
+        [in] IDataObject *pDataObject,
+        [in] POINT *ppt,
+        [in] DWORD dwEffect);
+
+    HRESULT Show( [in] BOOL fShow );
+}
+
+
+/*****************************************************************************
+ * IContextMenu interface
+ */
+[
+    object,
+    uuid(000214e4-0000-0000-c000-000000000046),
+    pointer_default(unique),
+    local
+]
+interface IContextMenu : IUnknown
+{
+cpp_quote("#define CMF_NORMAL        0x00000000")
+cpp_quote("#define CMF_DEFAULTONLY   0x00000001")
+cpp_quote("#define CMF_VERBSONLY     0x00000002")
+cpp_quote("#define CMF_EXPLORE       0x00000004")
+cpp_quote("#define CMF_NOVERBS       0x00000008")
+cpp_quote("#define CMF_CANRENAME     0x00000010")
+cpp_quote("#define CMF_NODEFAULT     0x00000020")
+cpp_quote("#define CMF_INCLUDESTATIC 0x00000040")
+cpp_quote("#define CMF_EXTENDEDVERBS 0x00000100")
+cpp_quote("#define CMF_RESERVED      0xffff0000")
+
+cpp_quote("#define GCS_VERBA         0x00000000")
+cpp_quote("#define GCS_HELPTEXTA     0x00000001")
+cpp_quote("#define GCS_VALIDATEA     0x00000002")
+cpp_quote("#define GCS_VERBW         0x00000004")
+cpp_quote("#define GCS_HELPTEXTW     0x00000005")
+cpp_quote("#define GCS_VALIDATEW     0x00000006")
+cpp_quote("#define GCS_UNICODE       0x00000004")
+cpp_quote("#define GCS_VERB          WINELIB_NAME_AW(GCS_VERB)")
+cpp_quote("#define GCS_HELPTEXT      WINELIB_NAME_AW(GCS_HELPTEXT)")
+cpp_quote("#define GCS_VALIDATE      WINELIB_NAME_AW(GCS_VALIDATE)")
+
+cpp_quote("#define CMDSTR_NEWFOLDERA   \"NewFolder\"")
+cpp_quote("#define CMDSTR_VIEWLISTA    \"ViewList\"")
+cpp_quote("#define CMDSTR_VIEWDETAILSA \"ViewDetails\"")
+cpp_quote("#if defined(__GNUC__)")
+cpp_quote("# define CMDSTR_NEWFOLDERW (const WCHAR []){ 'N','e','w','F','o','l','d','e','r',0 }")
+cpp_quote("# define CMDSTR_VIEWLISTW (const WCHAR []){ 'V','i','e','w','L','i','s','t',0 }")
+cpp_quote("# define CMDSTR_VIEWDETAILSW (const WCHAR []){ 'V','i','e','w','D','e','t','a','i','l','s',0 }")
+cpp_quote("#elif defined(_MSC_VER)")
+cpp_quote("# define CMDSTR_NEWFOLDERW   L\"NewFolder\"")
+cpp_quote("# define CMDSTR_VIEWLISTW    L\"ViewList\"")
+cpp_quote("# define CMDSTR_VIEWDETAILSW L\"ViewDetails\"")
+cpp_quote("#else")
+cpp_quote("static const WCHAR CMDSTR_NEWFOLDERW[] = {'N','e','w','F','o','l','d','e','r',0};")
+cpp_quote("static const WCHAR CMDSTR_VIEWLISTW [] = {'V','i','e','w','L','i','s','t',0};")
+cpp_quote("static const WCHAR CMDSTR_VIEWDETAILSW[] = {'V','i','e','w','D','e','t','a','i','l','s',0};")
+cpp_quote("#endif")
+cpp_quote("#define CMDSTR_NEWFOLDER    WINELIB_NAME_AW(CMDSTR_NEWFOLDER)")
+cpp_quote("#define CMDSTR_VIEWLIST     WINELIB_NAME_AW(CMDSTR_VIEWLIST)")
+cpp_quote("#define CMDSTR_VIEWDETAILS  WINELIB_NAME_AW(CMDSTR_VIEWDETAILS)")
+
+cpp_quote("#define CMIC_MASK_HOTKEY         SEE_MASK_HOTKEY")
+cpp_quote("#define CMIC_MASK_ICON           SEE_MASK_ICON")
+cpp_quote("#define CMIC_MASK_FLAG_NO_UI     SEE_MASK_FLAG_NO_UI")
+cpp_quote("#define CMIC_MASK_UNICODE        SEE_MASK_UNICODE")
+cpp_quote("#define CMIC_MASK_NO_CONSOLE     SEE_MASK_NO_CONSOLE")
+cpp_quote("#define CMIC_MASK_HASLINKNAME    SEE_MASK_HASLINKNAME")
+cpp_quote("#define CMIC_MASK_FLAG_SEP_VDM   SEE_MASK_FLAG_SEPVDM")
+cpp_quote("#define CMIC_MASK_HASTITLE       SEE_MASK_HASTITLE")
+cpp_quote("#define CMIC_MASK_ASYNCOK        SEE_MASK_ASYNCOK")
+cpp_quote("#define CMIC_MASK_SHIFT_DOWN     0x10000000")
+cpp_quote("#define CMIC_MASK_PTINVOKE       0x20000000")
+cpp_quote("#define CMIC_MASK_CONTROL_DOWN   0x40000000")
+cpp_quote("#define CMIC_MASK_FLAG_LOG_USAGE SEE_MASK_FLAG_LOG_USAGE")
+cpp_quote("#define CMIC_MASK_NOZONECHECKS   SEE_MASK_NOZONECHECKS")
+
+    typedef IContextMenu *LPCONTEXTMENU;
+
+    typedef struct tagCMINVOKECOMMANDINFO
+    {
+        DWORD cbSize;
+        DWORD fMask;
+        HWND hwnd;
+        LPCSTR lpVerb;
+        LPCSTR lpParameters;
+        LPCSTR lpDirectory;
+        INT nShow;
+        DWORD dwHotKey;
+        HANDLE hIcon;
+    } CMINVOKECOMMANDINFO, *LPCMINVOKECOMMANDINFO;
+
+    typedef struct tagCMInvokeCommandInfoEx
+    {
+        DWORD cbSize;
+        DWORD fMask;
+        HWND hwnd;
+        LPCSTR lpVerb;
+        LPCSTR lpParameters;
+        LPCSTR lpDirectory;
+        INT nShow;
+        DWORD dwHotKey;
+        HANDLE hIcon;
+        LPCSTR lpTitle;
+        LPCWSTR lpVerbW;
+        LPCWSTR lpParametersW;
+        LPCWSTR lpDirectoryW;
+        LPCWSTR lpTitleW;
+        POINT ptInvoke;
+    } CMINVOKECOMMANDINFOEX, *LPCMINVOKECOMMANDINFOEX;
+
+    HRESULT QueryContextMenu(
+        [in] HMENU hmenu,
+        [in] UINT indexMenu,
+        [in] UINT idCmdFirst,
+        [in] UINT idCmdLast,
+        [in] UINT uFlags);
+
+    HRESULT InvokeCommand( [in] LPCMINVOKECOMMANDINFO lpici );
+
+    HRESULT GetCommandString(
+        [in] UINT_PTR idCmd,
+        [in] UINT uType,
+        [out] UINT *pwReserved,
+        [out, size_is(cchMax)] LPSTR pszName,
+        [in] UINT cchMax);
+}
+
+
+/*****************************************************************************
+ * IContextMenu2 interface
+ */
+[
+    object,
+    uuid(000214f4-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IContextMenu2 : IContextMenu
+{
+    typedef IContextMenu2 *LPCONTEXTMENU2;
+
+    HRESULT HandleMenuMsg(
+        [in] UINT uMsg,
+        [in] WPARAM wParam,
+        [in] LPARAM lParam);
+}
+
+
+/*****************************************************************************
+ * IContextMenu3 interface
+ */
+[
+    object,
+    uuid(bcfce0a0-ec17-11d0-8d10-00a0c90f2719),
+    pointer_default(unique)
+]
+interface IContextMenu3 : IContextMenu2
+{
+    typedef IContextMenu3 *LPCONTEXTMENU3;
+
+    HRESULT HandleMenuMsg2(
+        [in] UINT uMsg,
+        [in] WPARAM wParam,
+        [in] LPARAM lParam,
+        [out] LRESULT *plResult);
+}
+
+
+/*****************************************************************************
+ * IShellExecuteHookA interface
+ */
+[
+    object,
+    uuid(000214f5-0000-0000-c000-000000000046),
+    pointer_default(unique),
+    local
+]
+interface IShellExecuteHookA : IUnknown
+{
+    cpp_quote("struct _SHELLEXECUTEINFOA;")
+    HRESULT Execute(
+        [in, out] struct _SHELLEXECUTEINFOA* pei);
+}
+
+
+/*****************************************************************************
+ * IShellExecuteHookW interface
+ */
+[
+    object,
+    uuid(000214fb-0000-0000-c000-000000000046),
+    pointer_default(unique),
+    local
+]
+interface IShellExecuteHookW : IUnknown
+{
+    cpp_quote("struct _SHELLEXECUTEINFOW;")
+    HRESULT Execute(
+		[in, out] struct _SHELLEXECUTEINFOW* pei);
+}
+
+/*****************************************************************************
+ * IShellLinkDataList interface
+ */
+[
+    object,
+    uuid(45e2b4ae-b1c3-11d0-b92f-00a0c90312e1),
+    pointer_default(unique)
+]
+interface IShellLinkDataList : IUnknown
+{
+    [local] HRESULT AddDataBlock(
+                [in] void *pDataBlock);
+    [local] HRESULT CopyDataBlock(
+                [in] DWORD dwSig,
+                [out] void **ppDataBlock);
+    HRESULT RemoveDataBlock(
+                [in] DWORD dwSig);
+    HRESULT GetFlags(
+                [out] DWORD *pdwFlags);
+    HRESULT SetFlags(
+                [in] DWORD dwFlags);
+}
+
+
+/*****************************************************************************
+ * IResolveShellLink interface
+ */
+[
+    object,
+    uuid(5cd52983-9449-11d2-963a-00c04f79adf0),
+    pointer_default(unique)
+]
+interface IResolveShellLink : IUnknown
+{
+    HRESULT ResolveShellLink(
+                [in] IUnknown *punk,
+                [in] HWND hwnd,
+                [in] DWORD fFlags);
+}
+
+
+/*****************************************************************************
+ * IURLSearchHook interface
+ */
+[
+    object,
+    uuid(ac60f6a0-0fd9-11d0-99cb-00c04fd64497),
+    pointer_default(unique)
+]
+interface IURLSearchHook : IUnknown
+{
+    HRESULT Translate(
+                [in, out] LPWSTR lpwszSearchURL,
+                [in] DWORD cchBufferSize);
+}
+
+
+/*****************************************************************************
+ * ISearchContext interface
+ */
+[
+    object,
+    uuid(09f656a2-41af-480c-88f7-16cc0d164615),
+    pointer_default(unique)
+]
+interface ISearchContext : IUnknown
+{
+    HRESULT GetSearchUrl(
+                [in] BSTR *pbstrSearchUrl);
+    HRESULT GetSearchText(
+                [in] BSTR *pbstrSearchText);
+    HRESULT GetSearchStyle(
+                [in] BSTR *pdwSearchStyle);
+}
+
+
+/*****************************************************************************
+ * IURLSearchHook2 interface
+ */
+[
+    object,
+    uuid(5ee44da4-6d32-46e3-86bc-07540dedd0e0),
+    pointer_default(unique)
+]
+interface IURLSearchHook2 : IURLSearchHook
+{
+    HRESULT TranslateWithSearchContext(
+                [in, out] LPWSTR lpwszSearchURL,
+                [in] DWORD cchBufferSize,
+                [in] ISearchContext *pSearchContext);
+}
+
+
+cpp_quote("#define INewShortcutHook WINELIB_NAME_AW(INewShortcutHook)")
+
+/*****************************************************************************
+ * INewShortcutHookA interface
+ */
+[
+    object,
+    uuid(000214e1-0000-0000-c000-000000000046),
+    pointer_default(unique),
+    local
+]
+interface INewShortcutHookA : IUnknown
+{
+    HRESULT SetReferent(
+                [in] LPCSTR pcszReferent,
+                [in] HWND hwnd);
+    HRESULT GetReferent(
+                [out] LPCSTR pcszReferent,
+                [in] int cchReferent);
+    HRESULT SetFolder(
+                [in] LPCSTR pcszReferent);
+    HRESULT GetFolder(
+                [out] LPSTR pcszReferent,
+                [in] int cchFolder);
+    HRESULT GetName(
+                [out] LPSTR pszName,
+                [in] int cchName);
+    HRESULT GetExtension(
+                [out] LPSTR pszExtension,
+                [in] int cchExtension);
+} 
+
+
+/*****************************************************************************
+ * INewShortcutHookW interface
+ */
+[
+    object,
+    uuid(000214f7-0000-0000-c000-000000000046),
+    pointer_default(unique),
+    local
+]
+interface INewShortcutHookW : IUnknown
+{
+    HRESULT SetReferent(
+                [in] LPCWSTR pcszReferent,
+                [in] HWND hwnd);
+    HRESULT GetReferent(
+                [out] LPCWSTR pcszReferent,
+                [in] int cchReferent);
+    HRESULT SetFolder(
+                [in] LPCWSTR pcszReferent);
+    HRESULT GetFolder(
+                [out] LPWSTR pcszReferent,
+                [in] int cchFolder);
+    HRESULT GetName(
+                [out] LPWSTR pszName,
+                [in] int cchName);
+    HRESULT GetExtension(
+                [out] LPWSTR pszExtension,
+                [in] int cchExtension);
+} 
+
+/*****************************************************************************
+ * IRunnableTask interface
+ */
+[
+    object,
+    uuid(85788d00-6807-11d0-b810-00c04fd706ec),
+    pointer_default(unique),
+    local
+]
+interface IRunnableTask : IUnknown
+{
+    HRESULT Run();
+    HRESULT Kill([in] BOOL fWait);
+    HRESULT Suspend();
+    HRESULT Resume();
+    ULONG IsRunning();
+}
+
+/*****************************************************************************
+ * IShellChangeNotify interface
+ */
+[
+    object,
+    uuid(d82be2b1-5764-11d0-a96e-00c04fd705a2),
+    pointer_default(unique)
+]
+interface IShellChangeNotify : IUnknown
+{
+    HRESULT OnChange(
+                [in] LONG lEvent,
+                [in] LPCITEMIDLIST pidl1,
+                [in] LPCITEMIDLIST pidl2);
+}
+
+/*****************************************************************************
+ * IFileSystemBindData interface
+ */
+[
+    object,
+    uuid(01e18d10-4d8b-11d2-855d-006008059367),
+    pointer_default(unique)
+]
+interface IFileSystemBindData : IUnknown
+{
+    HRESULT SetFindData(
+                [in] const WIN32_FIND_DATAW *pfd);
+    HRESULT GetFindData(
+                [out] WIN32_FIND_DATAW *pfd);
+}
+
+/*****************************************************************************
+ *    ITaskbarList interface
+ */
+[
+    object,
+    uuid(56FDF342-FD6D-11d0-958A-006097C9A090),
+    pointer_default(unique)
+]
+interface ITaskbarList : IUnknown
+{
+    HRESULT HrInit();
+
+    HRESULT AddTab(
+        [in] HWND hwnd);
+
+    HRESULT DeleteTab(
+        [in] HWND hwnd);
+
+    HRESULT ActivateTab(
+        [in] HWND hwnd);
+
+    HRESULT SetActiveAlt(
+        [in] HWND hwnd);
+}
+
+/*****************************************************************************
+ *    IAutoCompleteDropDown interface
+ */
+[
+    object,
+    uuid(3CD141F4-3C6A-11d2-BCAA-00C04FD929DB),
+    pointer_default(unique)
+]
+interface IAutoCompleteDropDown : IUnknown
+{
+cpp_quote("#define ACDD_VISIBLE   0x0001")
+
+    HRESULT GetDropDownStatus(
+        [out] DWORD *pdwFlags,
+        [out, string] LPWSTR *ppwszString);
+
+    HRESULT ResetEnumerator();
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/shtypes.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/shtypes.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/shtypes.idl	(revision 16410)
@@ -0,0 +1,74 @@
+/*
+ * Type definitions for shell objects
+ *
+ * Copyright (C) 1999 Juergen Schmied
+ * Copyright (C) 2003 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "wtypes.idl";
+
+cpp_quote("#include <pshpack1.h>")
+typedef struct
+{
+    WORD cb;      /* nr of bytes in this item */
+    BYTE abID[1]; /* first byte in this item */
+} SHITEMID, *LPSHITEMID;
+typedef const SHITEMID *LPCSHITEMID;
+
+typedef struct _ITEMIDLIST
+{
+    SHITEMID mkid; /* first itemid in list */
+} ITEMIDLIST,*LPITEMIDLIST;
+typedef const ITEMIDLIST *LPCITEMIDLIST;
+cpp_quote("#include <poppack.h>")
+
+#ifndef MAX_PATH
+#define MAX_PATH 260
+#endif
+
+cpp_quote("#if 0")
+typedef struct { int dummy; } WIN32_FIND_DATAA, WIN32_FIND_DATAW;
+cpp_quote("#endif")
+
+typedef enum tagSTRRET_TYPE
+{
+    STRRET_WSTR = 0,
+    STRRET_OFFSET = 1,
+    STRRET_CSTR = 2
+} STRRET_TYPE;
+
+cpp_quote("#include <pshpack4.h>")
+typedef struct _STRRET
+{
+    UINT uType;			/* STRRET_xxx */
+    [switch_type(UINT), switch_is(uType)] union
+    {
+    [case(STRRET_WSTR)][string] LPWSTR    pOleStr;        /* OLESTR that will be freed */
+    [case(STRRET_OFFSET)]       UINT      uOffset;        /* Offset into SHITEMID (ANSI) */
+    [case(STRRET_CSTR)]         char      cStr[MAX_PATH]; /* ANSI Buffer */
+    } DUMMYUNIONNAME;
+} STRRET, *LPSTRRET;
+cpp_quote("#include <poppack.h>")
+
+cpp_quote("#include <pshpack1.h>")
+typedef struct
+{
+    int fmt;
+    int cxChar;
+    STRRET str;
+} SHELLDETAILS, *LPSHELLDETAILS;
+cpp_quote("#include <poppack.h>")
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/sipbase.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/sipbase.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/sipbase.h	(revision 16410)
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2002 Patrik Stridvall
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_SIPBASE_H
+#define __WINE_SIPBASE_H
+
+#include <mssip.h>
+
+#endif  /* __WINE_SIPBASE_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/slerror.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/slerror.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/slerror.h	(revision 16410)
@@ -0,0 +1,25 @@
+/*
+ *
+ * Copyright 2008 Alistair Leslie-Hughes
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __WINE_SLERROR_H
+#define __WINE_SLERROR_H
+
+#define SL_E_RIGHT_NOT_GRANTED        0xC004F013
+#define SL_E_DATATYPE_MISMATCHED      0xC004F01E
+
+#endif /* __WINE_SLERROR_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/slpublic.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/slpublic.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/slpublic.h	(revision 16410)
@@ -0,0 +1,39 @@
+/*
+ *
+ * Copyright 2008 Alistair Leslie-Hughes
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __WINE_SLPUBLIC_H
+#define __WINE_SLPUBLIC_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef _SLC_
+#define SLCAPI
+#else
+#define SLCAPI DECLSPEC_IMPORT
+#endif
+
+SLCAPI DWORD WINAPI SLGetWindowsInformationDWORD(LPCWSTR lpszValueName, LPDWORD pdwValue);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_SLPUBLIC_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/snmp.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/snmp.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/snmp.h	(revision 16410)
@@ -0,0 +1,298 @@
+/*
+ * Copyright (C) 2005 Juan Lang
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef _WINE_SNMP_H
+#define _WINE_SNMP_H
+
+#ifndef __WINESRC__
+# include <windows.h>
+#else
+# include <windef.h>
+#endif
+
+#include <pshpack4.h>
+
+typedef struct {
+    BYTE *stream;
+    UINT  length;
+    BOOL  dynamic;
+} AsnOctetString;
+
+typedef struct {
+    UINT  idLength;
+    UINT *ids;
+} AsnObjectIdentifier;
+
+typedef LONG           AsnInteger32;
+typedef ULONG          AsnUnsigned32;
+typedef ULARGE_INTEGER AsnCounter64;
+typedef AsnUnsigned32  AsnCounter32;
+typedef AsnUnsigned32  AsnGauge32;
+typedef AsnUnsigned32  AsnTimeticks;
+typedef AsnOctetString AsnBits;
+typedef AsnOctetString AsnSequence;
+typedef AsnOctetString AsnImplicitSequence;
+typedef AsnOctetString AsnIPAddress;
+typedef AsnOctetString AsnNetworkAddress;
+typedef AsnOctetString AsnDisplayString;
+typedef AsnOctetString AsnOpaque;
+
+typedef struct {
+    BYTE asnType;
+    union {
+        AsnInteger32        number;
+        AsnUnsigned32       unsigned32;
+        AsnCounter64        counter64;
+        AsnOctetString      string;
+        AsnBits             bits;
+        AsnObjectIdentifier object;
+        AsnSequence         sequence;
+        AsnIPAddress        address;
+        AsnCounter32        counter;
+        AsnGauge32          gauge;
+        AsnTimeticks        ticks;
+        AsnOpaque           arbitrary;
+    } asnValue;
+} AsnAny;
+
+typedef AsnObjectIdentifier AsnObjectName;
+typedef AsnAny              AsnObjectSyntax;
+
+typedef struct {
+    AsnObjectName   name;
+    AsnObjectSyntax value;
+} SnmpVarBind;
+
+typedef struct {
+    SnmpVarBind *list;
+    UINT         len;
+} SnmpVarBindList;
+
+#include <poppack.h>
+
+#define ASN_UNIVERSAL   0x00
+#define ASN_APPLICATION 0x40
+#define ASN_CONTEXT     0x80
+#define ASN_PRIVATE     0xc0
+#define ASN_PRIMITIVE   0x00
+#define ASN_CONSTRUCTOR 0x20
+
+#define SNMP_PDU_GET         (ASN_CONTEXT     | ASN_CONSTRUCTOR | 0x00)
+#define SNMP_PDU_GETNEXT     (ASN_CONTEXT     | ASN_CONSTRUCTOR | 0x01)
+#define SNMP_PDU_RESPONSE    (ASN_CONTEXT     | ASN_CONSTRUCTOR | 0x02)
+#define SNMP_PDU_SET         (ASN_CONTEXT     | ASN_CONSTRUCTOR | 0x03)
+#define SNMP_PDU_V1TRAP      (ASN_CONTEXT     | ASN_CONSTRUCTOR | 0x04)
+#define SNMP_PDU_GETBULK     (ASN_CONTEXT     | ASN_CONSTRUCTOR | 0x05)
+#define SNMP_PDU_INFORM      (ASN_CONTEXT     | ASN_CONSTRUCTOR | 0x06)
+#define SNMP_PDU_TRAP        (ASN_CONTEXT     | ASN_CONSTRUCTOR | 0x07)
+
+#define ASN_INTEGER          (ASN_UNIVERSAL   | ASN_PRIMITIVE   | 0x02)
+#define ASN_BITS             (ASN_UNIVERSAL   | ASN_PRIMITIVE   | 0x03)
+#define ASN_OCTETSTRING      (ASN_UNIVERSAL   | ASN_PRIMITIVE   | 0x04)
+#define ASN_NULL             (ASN_UNIVERSAL   | ASN_PRIMITIVE   | 0x05)
+#define ASN_OBJECTIDENTIFIER (ASN_UNIVERSAL   | ASN_PRIMITIVE   | 0x06)
+#define ASN_INTEGER32        ASN_INTEGER
+
+#define ASN_SEQUENCE         (ASN_UNIVERSAL   | ASN_CONSTRUCTOR | 0x10)
+#define ASN_SEQUENCEOF       ASN_SEQUENCE
+
+#define ASN_IPADDRESS        (ASN_APPLICATION | ASN_PRIMITIVE   | 0x00)
+#define ASN_COUNTER32        (ASN_APPLICATION | ASN_PRIMITIVE   | 0x01)
+#define ASN_GAUGE32          (ASN_APPLICATION | ASN_PRIMITIVE   | 0x02)
+#define ASN_TIMETICKS        (ASN_APPLICATION | ASN_PRIMITIVE   | 0x03)
+#define ASN_OPAQUE           (ASN_APPLICATION | ASN_PRIMITIVE   | 0x04)
+#define ASN_COUNTER64        (ASN_APPLICATION | ASN_PRIMITIVE   | 0x06)
+#define ASN_UNSIGNED32       (ASN_APPLICATION | ASN_PRIMITIVE   | 0x07)
+
+#define SNMP_EXCEPTION_NOSUCHOBJECT   (ASN_CONTEXT | ASN_PRIMITIVE | 0x00)
+#define SNMP_EXCEPTION_NOSUCHINSTANCE (ASN_CONTEXT | ASN_PRIMITIVE | 0x01)
+#define SNMP_EXCEPTION_ENDOFMIBVIEW   (ASN_CONTEXT | ASN_PRIMITIVE | 0x02)
+
+#define SNMP_EXTENSION_GET         SNMP_PDU_GET
+#define SNMP_EXTENSION_GET_NEXT    SNMP_PDU_GETNEXT
+#define SNMP_EXTENSION_GET_BULK    SNMP_PDU_GETBULK
+#define SNMP_EXTENSION_SET_TEST    (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x0)
+#define SNMP_EXTENSION_SET_COMMIT  SNMP_PDU_SET
+#define SNMP_EXTENSION_SET_UNDO    (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x1)
+#define SNMP_EXTENSION_SET_CLEANUP (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x2)
+
+#define SNMP_ERRORSTATUS_NOERROR             0
+#define SNMP_ERRORSTATUS_TOOBIG              1
+#define SNMP_ERRORSTATUS_NOSUCHNAME          2
+#define SNMP_ERRORSTATUS_BADVALUE            3
+#define SNMP_ERRORSTATUS_READONLY            4
+#define SNMP_ERRORSTATUS_GENERR              5
+#define SNMP_ERRORSTATUS_NOACCESS            6
+#define SNMP_ERRORSTATUS_WRONGTYPE           7
+#define SNMP_ERRORSTATUS_WRONGLENGTH         8
+#define SNMP_ERRORSTATUS_WRONGENCODING       9
+#define SNMP_ERRORSTATUS_WRONGVALUE          10
+#define SNMP_ERRORSTATUS_NOCREATION          11
+#define SNMP_ERRORSTATUS_INCONSISTENTVALUE   12
+#define SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE 13
+#define SNMP_ERRORSTATUS_COMMITFAILED        14
+#define SNMP_ERRORSTATUS_UNDOFAILED          15
+#define SNMP_ERRORSTATUS_AUTHORIZATIONERROR  16
+#define SNMP_ERRORSTATUS_NOTWRITABLE         17
+#define SNMP_ERRORSTATUS_INCONSISTENTNAME    18
+
+#define SNMP_GENERICTRAP_COLDSTART           0
+#define SNMP_GENERICTRAP_WARMSTART           1
+#define SNMP_GENERICTRAP_LINKDOWN            2
+#define SNMP_GENERICTRAP_LINKUP              3
+#define SNMP_GENERICTRAP_AUTHFAILURE         4
+#define SNMP_GENERICTRAP_EGPNEIGHLOSS        5
+#define SNMP_GENERICTRAP_ENTERSPECIFIC       6
+
+#define SNMP_ACCESS_NONE        0
+#define SNMP_ACCESS_NOTIFY      1
+#define SNMP_ACCESS_READ_ONLY   2
+#define SNMP_ACCESS_READ_WRITE  3
+#define SNMP_ACCESS_READ_CREATE 4
+
+#define SNMP_LOG_SILENT  0
+#define SNMP_LOG_FATAL   1
+#define SNMP_LOG_ERROR   2
+#define SNMP_LOG_WARNING 3
+#define SNMP_LOG_TRACE   4
+#define SNMP_LOG_VERBOSE 5
+
+#define SNMP_OUTPUT_TO_CONSOLE  1
+#define SNMP_OUTPUT_TO_LOGFILE  2
+#define SNMP_OUTPUT_TO_EVENTLOG 4
+#define SNMP_OUTPUT_TO_DEBUGGER 8
+
+#define DEFINE_SIZEOF(x)     (sizeof(x)/sizeof((x)[0]))
+#define DEFINE_OID(x)        { DEFINE_SIZEOF(x),(x) }
+#define DEFINE_NULLOID()     { 0, NULL }
+#define DEFINE_NULLOCTENTS() { NULL, 0, FALSE }
+
+#define DEFAULT_SNMP_PORT_UDP     161
+#define DEFAULT_SNMP_PORT_IPX     36879
+#define DEFAULT_SNMPTRAP_PORT_UDP 162
+#define DEFAULT_SNMPTRAP_PORT_IPX 36880
+
+#define SNMP_MAX_OID_LEN 128
+
+#define SNMP_MEM_ALLOC_ERROR          0
+#define SNMP_BERAPI_INVALID_LENGTH    10
+#define SNMP_BERAPI_INVALID_TAG       11
+#define SNMP_BERAPI_OVERFLOW          12
+#define SNMP_BERAPI_SHORT_BUFFER      13
+#define SNMP_BERAPI_INVALID_OBJELEM   14
+#define SNMP_PDUAPI_UNRECOGNIZED_PDU  20
+#define SNMP_PDUAPI_INVALID_ES        21
+#define SNMP_PDUAPI_INVALID_GT        22
+#define SNMP_AUTHAPI_INVALID_VERSION  30
+#define SNMP_AUTHAPI_INVALID_MSG_TYPE 31
+#define SNMP_AUTHAPI_TRIV_AUTH_FAILED 32
+
+#define SNMPAPI_NOERROR TRUE
+#define SNMPAPI_ERROR   FALSE
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+BOOL WINAPI SnmpExtensionInit(DWORD dwUptimeReference,
+ HANDLE *phSubagentTrapEvent, AsnObjectIdentifier *pFirstSupportedRegion);
+BOOL WINAPI SnmpExtensionInitEx(AsnObjectIdentifier *pNextSupportedRegion);
+
+BOOL WINAPI SnmpExtensionMonitor(LPVOID pAgentMgmtData);
+
+BOOL WINAPI SnmpExtensionQuery(BYTE bPduType, SnmpVarBindList *pVarBindList,
+ AsnInteger32 *pErrorStatus, AsnInteger32 *pErrorIndex);
+BOOL WINAPI SnmpExtensionQueryEx(UINT nRequestType, UINT nTransactionId,
+ SnmpVarBindList *pVarBindList, AsnOctetString *pContextInfo,
+ AsnInteger32 *pErrorStatus, AsnInteger32 *pErrorIndex);
+
+BOOL WINAPI SnmpExtensionTrap(AsnObjectIdentifier *pEnterpriseOid,
+ AsnInteger32 *pGenericTrapId, AsnInteger32 *pSpecificTrapId,
+ AsnTimeticks *pTimeStamp, SnmpVarBindList *pVarBindList);
+
+VOID WINAPI SnmpExtensionClose(VOID);
+
+typedef BOOL (WINAPI *PFNSNMPEXTENSIONINIT)(DWORD dwUptimeReference,
+ HANDLE *phSubagentTrapEvent, AsnObjectIdentifier *pFirstSupportedRegion);
+typedef BOOL (WINAPI *PFNSNMPEXTENSIONINITEX)(
+ AsnObjectIdentifier *pNextSupportedRegion);
+
+typedef BOOL (WINAPI *PFNSNMPEXTENSIONMONITOR)(LPVOID pAgentMgmtData);
+
+typedef BOOL (WINAPI *PFNSNMPEXTENSIONQUERY)(BYTE bPduType,
+ SnmpVarBindList *pVarBindList, AsnInteger32 *pErrorStatus,
+ AsnInteger32 *pErrorIndex);
+typedef BOOL (WINAPI *PFNSNMPEXTENSIONQUERYEX)(UINT nRequestType,
+ UINT nTransactionId, SnmpVarBindList *pVarBindList,
+ AsnOctetString *pContextInfo, AsnInteger32 *pErrorStatus,
+ AsnInteger32 *pErrorIndex);
+
+typedef BOOL (WINAPI *PFNSNMPEXTENSIONTRAP)(AsnObjectIdentifier *pEnterpriseOid,
+ AsnInteger32 *pGenericTrapId, AsnInteger32 *pSpecificTrapId,
+ AsnTimeticks *pTimeStamp, SnmpVarBindList *pVarBindList);
+
+typedef VOID (WINAPI *PFNSNMPEXTENSIONCLOSE)(VOID);
+
+INT WINAPI SnmpUtilOidCpy(AsnObjectIdentifier *pOidDst,
+ AsnObjectIdentifier *pOidSrc);
+INT WINAPI SnmpUtilOidAppend(AsnObjectIdentifier *pOidDst,
+ AsnObjectIdentifier *pOidSrc);
+INT WINAPI SnmpUtilOidCmp(AsnObjectIdentifier *pOid1,
+ AsnObjectIdentifier *pOid2);
+INT WINAPI SnmpUtilOidNCmp(AsnObjectIdentifier *pOid1,
+ AsnObjectIdentifier *pOid2, UINT nSubIds);
+VOID WINAPI SnmpUtilOidFree(AsnObjectIdentifier *pOid);
+
+INT WINAPI SnmpUtilOctetsCmp(AsnOctetString *pOctets1,
+ AsnOctetString *pOctets2);
+INT WINAPI SnmpUtilOctetsNCmp(AsnOctetString *pOctets1,
+ AsnOctetString *pOctets2, UINT nChars);
+INT WINAPI SnmpUtilOctetsCpy(AsnOctetString *pOctetsDst,
+ AsnOctetString *pOctetsSrc);
+VOID WINAPI SnmpUtilOctetsFree(AsnOctetString *pOctets);
+
+INT WINAPI SnmpUtilAsnAnyCpy(AsnAny *pAnyDst, AsnAny *pAnySrc);
+VOID WINAPI SnmpUtilAsnAnyFree(AsnAny *pAny);
+
+INT WINAPI SnmpUtilVarBindCpy(SnmpVarBind *pVbDst, SnmpVarBind *pVbSrc);
+VOID WINAPI SnmpUtilVarBindFree(SnmpVarBind *pVb);
+
+INT WINAPI SnmpUtilVarBindListCpy(SnmpVarBindList *pVblDst,
+ SnmpVarBindList *pVblSrc);
+VOID WINAPI SnmpUtilVarBindListFree(SnmpVarBindList *pVbl);
+
+LPVOID WINAPI SnmpUtilMemAlloc(UINT nBytes) __WINE_ALLOC_SIZE(1);
+LPVOID WINAPI SnmpUtilMemReAlloc(LPVOID pMem, UINT nBytes) __WINE_ALLOC_SIZE(2);
+VOID WINAPI SnmpUtilMemFree(LPVOID pMem);
+
+LPSTR WINAPI SnmpUtilOidToA(AsnObjectIdentifier *Oid);
+LPSTR WINAPI SnmpUtilIdsToA(UINT *Ids, UINT IdLength);
+
+VOID WINAPI SnmpUtilPrintOid(AsnObjectIdentifier *Oid);
+VOID WINAPI SnmpUtilPrintAsnAny(AsnAny *pAny);
+
+DWORD WINAPI SnmpSvcGetUptime(VOID);
+VOID WINAPI SnmpSvcSetLogLevel(INT nLogLevel);
+VOID WINAPI SnmpSvcSetLogType(INT nLogType);
+
+VOID WINAPIV SnmpUtilDbgPrint(INT nLogLevel, LPSTR szFormat, ...);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _WINE_SNMP_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/softpub.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/softpub.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/softpub.h	(revision 16410)
@@ -0,0 +1,245 @@
+/*
+ * Copyright (C) 2006 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_SOFTPUB_H
+#define __WINE_SOFTPUB_H
+
+#include <wintrust.h>
+
+#define WINTRUST_ACTION_GENERIC_CERT_VERIFY \
+    { 0x189a3842, 0x3041, 0x11d1, { 0x85,0xe1,0x00,0xc0,0x4f,0xc2,0x95,0xee }}
+
+#if defined(__GNUC__)
+#define SP_GENERIC_CERT_INIT_FUNCTION (const WCHAR []) \
+    {'S','o','f','t','p','u','b','D','e','f','C','e','r','t','I','n','i','t', 0}
+#elif defined(_MSC_VER)
+#define SP_GENERIC_CERT_INIT_FUNCTION L"SoftpubDefCertInit"
+#else
+static const WCHAR SP_GENERIC_CERT_INIT_FUNCTION[] =
+    {'S','o','f','t','p','u','b','D','e','f','C','e','r','t','I','n','i','t', 0};
+#endif
+
+#define WINTRUST_ACTION_GENERIC_CHAIN_VERIFY \
+    { 0xfc451c16, 0xac75, 0x11d1, { 0xb4,0xb8,0x00,0xc0,0x4f,0xb6,0x6e,0xa0 }}
+
+#if defined(__GNUC__)
+#define GENERIC_CHAIN_FINALPOLICY_FUNCTION (const WCHAR []) \
+    {'G','e','n','e','r','i','c','C','h','a','i','n','F','i','n','a','l','P','r','o','v', 0}
+#define GENERIC_CHAIN_CERTTRUST_FUNCTION (const WCHAR []) \
+    {'G','e','n','e','r','i','c','C','h','a','i','n','C','e','r','t','i','f','i','c','a','t','e','T','r','u','s','t', 0}
+#elif defined(_MSC_VER)
+#define GENERIC_CHAIN_FINALPOLICY_FUNCTION L"GenericChainFinalProv"
+#define GENERIC_CHAIN_CERTTRUST_FUNCTION   L"GenericChainCertificateTrust"
+#else
+static const WCHAR GENERIC_CHAIN_FINALPOLICY_FUNCTION[] =
+    {'G','e','n','e','r','i','c','C','h','a','i','n','F','i','n','a','l','P','r','o','v', 0};
+static const WCHAR GENERIC_CHAIN_CERTTRUST_FUNCTION[] =
+    {'G','e','n','e','r','i','c','C','h','a','i','n','C','e','r','t','i','f','i','c','a','t','e','T','r','u','s','t', 0};
+#endif
+
+typedef struct _WTD_GENERIC_CHAIN_POLICY_SIGNER_INFO
+{
+    union {
+        DWORD cbStruct;
+        DWORD cbSize;
+    } DUMMYUNIONNAME;
+    PCCERT_CHAIN_CONTEXT pChainContext;
+    DWORD                dwSignerType;
+    PCMSG_SIGNER_INFO    pMsgSignerInfo;
+    DWORD                dwError;
+    DWORD                cCounterSigner;
+    struct _WTD_GENERIC_CHAIN_POLICY_SIGNER_INFO *rgpCounterSigner;
+} WTD_GENERIC_CHAIN_POLICY_SIGNER_INFO, *PWTD_GENERIC_CHAIN_POLICY_SIGNER_INFO;
+
+typedef HRESULT (WINAPI *PFN_WTD_GENERIC_CHAIN_POLICY_CALLBACK)(
+ PCRYPT_PROVIDER_DATA pProvData, DWORD dwStepError, DWORD dwRegPolicySettings,
+ DWORD cSigner, PWTD_GENERIC_CHAIN_POLICY_SIGNER_INFO rgpSigner,
+ void *pvPolicyArg);
+
+typedef struct _WTD_GENERIC_CHAIN_POLICY_CREATE_INFO
+{
+    union {
+        DWORD cbStruct;
+        DWORD cbSize;
+    } DUMMYUNIONNAME;
+    HCERTCHAINENGINE hChainEngine;
+    PCERT_CHAIN_PARA pChainPara;
+    DWORD            dwFlags;
+    void            *pvReserved;
+} WTD_GENERIC_CHAIN_POLICY_CREATE_INFO, *PWTD_GENERIC_CHAIN_POLICY_CREATE_INFO;
+
+typedef struct _WTD_GENERIC_CHAIN_POLICY_DATA
+{
+    union {
+        DWORD cbStruct;
+        DWORD cbSize;
+    } DUMMYUNIONNAME;
+    PWTD_GENERIC_CHAIN_POLICY_CREATE_INFO pSignerChainInfo;
+    PWTD_GENERIC_CHAIN_POLICY_CREATE_INFO pCounterSignerChainInfo;
+    PFN_WTD_GENERIC_CHAIN_POLICY_CALLBACK pfnPolicyCallback;
+    void                                 *pvPolicyArg;
+} WTD_GENERIC_CHAIN_POLICY_DATA, *PWTD_GENERIC_CHAIN_POLICY_DATA;
+
+#if defined(__GNUC__)
+#define SP_POLICY_PROVIDER_DLL_NAME (const WCHAR []) \
+    {'W','I','N','T','R','U','S','T','.','D','L','L' ,0}
+#elif defined(_MSC_VER)
+#define SP_POLICY_PROVIDER_DLL_NAME L"WINTRUST.DLL"
+#else
+static const WCHAR SP_POLICY_PROVIDER_DLL_NAME[] =
+    {'W','I','N','T','R','U','S','T','.','D','L','L', 0};
+#endif
+
+#define WINTRUST_ACTION_GENERIC_VERIFY_V2 \
+    { 0xaac56b,   0xcd44, 0x11d0, { 0x8c,0xc2,0x00,0xc0,0x4f,0xc2,0x95,0xee }}
+
+#if defined(__GNUC__)
+#define SP_INIT_FUNCTION          (const WCHAR []) \
+    {'S','o','f','t','p','u','b','I','n','i','t','i','a','l','i','z','e', 0}
+#define SP_OBJTRUST_FUNCTION      (const WCHAR []) \
+    {'S','o','f','t','p','u','b','L','o','a','d','M','e','s','s','a','g','e', 0}
+#define SP_SIGTRUST_FUNCTION      (const WCHAR []) \
+    {'S','o','f','t','p','u','b','L','o','a','d','S','i','g','n','a','t','u','r','e', 0}
+#define SP_CHKCERT_FUNCTION       (const WCHAR []) \
+    {'S','o','f','t','p','u','b','C','h','e','c','k','C','e','r','t', 0}
+#define SP_FINALPOLICY_FUNCTION   (const WCHAR []) \
+    {'S','o','f','t','p','u','b','A','u','t','h','e','n','t','i','c','o','d','e', 0}
+#define SP_CLEANUPPOLICY_FUNCTION (const WCHAR []) \
+    {'S','o','f','t','p','u','b','C','l','e','a','n','u','p', 0}
+#elif defined(_MSC_VER)
+#define SP_INIT_FUNCTION          L"SoftpubInitialize"
+#define SP_OBJTRUST_FUNCTION      L"SoftpubLoadMessage"
+#define SP_SIGTRUST_FUNCTION      L"SoftpubLoadSignature"
+#define SP_CHKCERT_FUNCTION       L"SoftpubCheckCert"
+#define SP_FINALPOLICY_FUNCTION   L"SoftpubAuthenticode"
+#define SP_CLEANUPPOLICY_FUNCTION L"SoftpubCleanup"
+#else
+static const WCHAR SP_INIT_FUNCTION[]          =
+    {'S','o','f','t','p','u','b','I','n','i','t','i','a','l','i','z','e', 0};
+static const WCHAR SP_OBJTRUST_FUNCTION[]      =
+    {'S','o','f','t','p','u','b','L','o','a','d','M','e','s','s','a','g','e', 0};
+static const WCHAR SP_SIGTRUST_FUNCTION[]      =
+    {'S','o','f','t','p','u','b','L','o','a','d','S','i','g','n','a','t','u','r','e', 0};
+static const WCHAR SP_CHKCERT_FUNCTION[]       =
+    {'S','o','f','t','p','u','b','C','h','e','c','k','C','e','r','t', 0};
+static const WCHAR SP_FINALPOLICY_FUNCTION[]   =
+    {'S','o','f','t','p','u','b','A','u','t','h','e','n','t','i','c','o','d','e', 0};
+static const WCHAR SP_CLEANUPPOLICY_FUNCTION[] =
+    {'S','o','f','t','p','u','b','C','l','e','a','n','u','p', 0};
+#endif
+
+#define WINTRUST_ACTION_TRUSTPROVIDER_TEST \
+    { 0x573e31f8, 0xddba, 0x11d0, { 0x8c,0xcb,0x00,0xc0,0x4f,0xc2,0x95,0xee }}
+
+#if defined(__GNUC__)
+#define SP_TESTDUMPPOLICY_FUNCTION_TEST (const WCHAR []) \
+    {'S','o','f','t','p','u','b','D','u','m','p','S','t','r','u','c','t','u','r','e', 0}
+#elif defined(_MSC_VER)
+#define SP_TESTDUMPPOLICY_FUNCTION_TEST L"SoftpubDumpStructure"
+#else
+static const WCHAR SP_TESTDUMPPOLICY_FUNCTION_TEST[] =
+    {'S','o','f','t','p','u','b','D','u','m','p','S','t','r','u','c','t','u','r','e', 0};
+#endif
+
+#define HTTPSPROV_ACTION \
+    { 0x573e31f8, 0xaaba, 0x11d0, { 0x8c,0xcb,0x00,0xc0,0x4f,0xc2,0x95,0xee }}
+
+#if defined(__GNUC__)
+#define HTTPS_CERTTRUST_FUNCTION (const WCHAR []) \
+    {'H','T','T','P','S','C','e','r','t','i','f','i','c','a','t','e','T','r','u','s','t', 0}
+#define HTTPS_FINALPOLICY_FUNCTION (const WCHAR []) \
+    {'H','T','T','P','S','F','i','n','a','l','P','r','o','v', 0}
+#elif defined(_MSC_VER)
+#define HTTPS_FINALPOLICY_FUNCTION L"HTTPSFinalProv"
+#define HTTPS_CERTTRUST_FUNCTION   L"HTTPSCertificateTrust"
+#else
+static const WCHAR HTTPS_CERTTRUST_FUNCTION[] =
+    {'H','T','T','P','S','C','e','r','t','i','f','i','c','a','t','e','T','r','u','s','t', 0};
+static const WCHAR HTTPS_FINALPOLICY_FUNCTION[] =
+    {'H','T','T','P','S','F','i','n','a','l','P','r','o','v', 0};
+#endif
+
+#define OFFICESIGN_ACTION_VERIFY \
+    { 0x5555c2cd, 0x17fb, 0x11d1, { 0x85,0xc4,0x00,0xc0,0x4f,0xc2,0x95,0xee }}
+
+#if defined(__GNUC__)
+#define OFFICE_POLICY_PROVIDER_DLL_NAME (const WCHAR []) \
+    {'W','I','N','T','R','U','S','T','.','D','L','L' ,0}
+#define OFFICE_INITPROV_FUNCTION (const WCHAR []) \
+    {'O','f','f','i','c','e','I','n','i','t','i','a','l','i','z','e','P','o','l','i','c','y', 0}
+#define OFFICE_CLEANUPPOLICY_FUNCTION (const WCHAR []) \
+    {'O','f','f','i','c','e','C','l','e','a','n','u','p','P','o','l','i','c','y', 0}
+#elif defined(_MSC_VER)
+#define     OFFICE_POLICY_PROVIDER_DLL_NAME SP_POLICY_PROVIDER_DLL_NAME
+#define     OFFICE_INITPROV_FUNCTION        L"OfficeInitializePolicy"
+#define     OFFICE_CLEANUPPOLICY_FUNCTION   L"OfficeCleanupPolicy"
+#else
+static const WCHAR OFFICE_POLICY_PROVIDER_DLL_NAME[] =
+    {'W','I','N','T','R','U','S','T','.','D','L','L', 0};
+static const WCHAR OFFICE_INITPROV_FUNCTION[] =
+    {'O','f','f','i','c','e','I','n','i','t','i','a','l','i','z','e','P','o','l','i','c','y', 0};
+static const WCHAR OFFICE_CLEANUPPOLICY_FUNCTION[] =
+    {'O','f','f','i','c','e','C','l','e','a','n','u','p','P','o','l','i','c','y', 0};
+#endif
+
+#define DRIVER_ACTION_VERIFY \
+    { 0xf750e6c3, 0x38ee, 0x11d1, { 0x85,0xe5,0x00,0xc0,0x4f,0xc2,0x95,0xee }}
+
+#if defined(__GNUC__)
+#define DRIVER_INITPROV_FUNCTION (const WCHAR []) \
+    {'D','r','i','v','e','r','I','n','i','t','i','a','l','i','z','e','P','o','l','i','c','y', 0}
+#define DRIVER_FINALPOLPROV_FUNCTION (const WCHAR []) \
+    {'D','r','i','v','e','r','F','i','n','a','l','P','o','l','i','c','y', 0}
+#define DRIVER_CLEANUPPOLICY_FUNCTION (const WCHAR []) \
+    {'D','r','i','v','e','r','C','l','e','a','n','u','p','P','o','l','i','c','y', 0}
+#elif defined(_MSC_VER)
+#define     DRIVER_INITPROV_FUNCTION      L"DriverInitializePolicy"
+#define     DRIVER_FINALPOLPROV_FUNCTION  L"DriverFinalPolicy"
+#define     DRIVER_CLEANUPPOLICY_FUNCTION L"DriverCleanupPolicy"
+#else
+static const WCHAR DRIVER_INITPROV_FUNCTION[] =
+    {'D','r','i','v','e','r','I','n','i','t','i','a','l','i','z','e','P','o','l','i','c','y', 0};
+static const WCHAR DRIVER_FINALPOLPROV_FUNCTION[] =
+    {'D','r','i','v','e','r','F','i','n','a','l','P','o','l','i','c','y', 0};
+static const WCHAR DRIVER_CLEANUPPOLICY_FUNCTION[] =
+    {'D','r','i','v','e','r','C','l','e','a','n','u','p','P','o','l','i','c','y', 0};
+#endif
+
+typedef struct DRIVER_VER_MAJORMINOR_
+{
+    DWORD dwMajor;
+    DWORD dwMinor;
+} DRIVER_VER_MAJORMINOR;
+
+typedef struct DRIVER_VER_INFO_
+{
+    DWORD                 cbStruct;
+    ULONG_PTR             dwReserved1;
+    ULONG_PTR             dwReserved2;
+    DWORD                 dwPlatform;
+    DWORD                 dwVersion;
+    WCHAR                 wszVersion[MAX_PATH];
+    WCHAR                 wszSignedBy[MAX_PATH];
+    PCCERT_CONTEXT        pcSignerCertContext;
+    DRIVER_VER_MAJORMINOR sOSVersionLow;
+    DRIVER_VER_MAJORMINOR sOSVersionHigh;
+    DWORD                 dwBuildNumberLow;
+    DWORD                 dwBuildNumberHigh;
+} DRIVER_VER_INFO, *PDRIVER_VER_INFO;
+
+#endif /* __WINE_SOFTPUB_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/sql.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/sql.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/sql.h	(revision 16410)
@@ -0,0 +1,746 @@
+/*
+ * ODBC definitions
+ *
+ * Copyright (C) 1999 Xiang Li
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __SQL_H
+#define __SQL_H
+
+#ifndef ODBCVER
+#define ODBCVER 0x0351
+#endif
+
+#include <sqltypes.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SQL_NULL_DATA             (-1)
+#define SQL_DATA_AT_EXEC          (-2)
+#define SQL_SUCCESS                0
+#define SQL_SUCCESS_WITH_INFO      1
+#if (ODBCVER >= 0x0300)
+#define SQL_NO_DATA              100
+#endif
+#define SQL_ERROR                 (-1)
+#define SQL_INVALID_HANDLE        (-2)
+#define SQL_STILL_EXECUTING        2
+#define SQL_NEED_DATA             99
+#define SQL_SUCCEEDED(rc) (((rc)&(~1))==0)
+
+#define SQL_NTS                   (-3)
+#define SQL_NTSL                  (-3L)
+
+#define SQL_MAX_MESSAGE_LENGTH   512
+
+#if (ODBCVER >= 0x0300)
+#define SQL_DATE_LEN           10
+#define SQL_TIME_LEN            8
+#define SQL_TIMESTAMP_LEN      19
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_HANDLE_ENV             1
+#define SQL_HANDLE_DBC             2
+#define SQL_HANDLE_STMT            3
+#define SQL_HANDLE_DESC            4
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_ATTR_OUTPUT_NTS    10001
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_ATTR_AUTO_IPD      10001
+#define SQL_ATTR_METADATA_ID   10014
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_ATTR_APP_ROW_DESC       10010
+#define SQL_ATTR_APP_PARAM_DESC     10011
+#define SQL_ATTR_IMP_ROW_DESC       10012
+#define SQL_ATTR_IMP_PARAM_DESC     10013
+#define SQL_ATTR_CURSOR_SCROLLABLE  (-1)
+#define SQL_ATTR_CURSOR_SENSITIVITY (-2)
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_NONSCROLLABLE			0
+#define SQL_SCROLLABLE				1
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_DESC_COUNT                  1001
+#define SQL_DESC_TYPE                   1002
+#define SQL_DESC_LENGTH                 1003
+#define SQL_DESC_OCTET_LENGTH_PTR       1004
+#define SQL_DESC_PRECISION              1005
+#define SQL_DESC_SCALE                  1006
+#define SQL_DESC_DATETIME_INTERVAL_CODE 1007
+#define SQL_DESC_NULLABLE               1008
+#define SQL_DESC_INDICATOR_PTR          1009
+#define SQL_DESC_DATA_PTR               1010
+#define SQL_DESC_NAME                   1011
+#define SQL_DESC_UNNAMED                1012
+#define SQL_DESC_OCTET_LENGTH           1013
+#define SQL_DESC_ALLOC_TYPE             1099
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_DIAG_RETURNCODE        1
+#define SQL_DIAG_NUMBER            2
+#define SQL_DIAG_ROW_COUNT         3
+#define SQL_DIAG_SQLSTATE          4
+#define SQL_DIAG_NATIVE            5
+#define SQL_DIAG_MESSAGE_TEXT      6
+#define SQL_DIAG_DYNAMIC_FUNCTION  7
+#define SQL_DIAG_CLASS_ORIGIN      8
+#define SQL_DIAG_SUBCLASS_ORIGIN   9
+#define SQL_DIAG_CONNECTION_NAME  10
+#define SQL_DIAG_SERVER_NAME      11
+#define SQL_DIAG_DYNAMIC_FUNCTION_CODE 12
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_DIAG_ALTER_DOMAIN			3
+#define SQL_DIAG_ALTER_TABLE            4
+#define SQL_DIAG_CALL					7
+#define SQL_DIAG_CREATE_ASSERTION		6
+#define SQL_DIAG_CREATE_CHARACTER_SET	8
+#define SQL_DIAG_CREATE_COLLATION		10
+#define SQL_DIAG_CREATE_DOMAIN			23
+#define SQL_DIAG_CREATE_INDEX          (-1)
+#define SQL_DIAG_CREATE_SCHEMA			64
+#define SQL_DIAG_CREATE_TABLE          77
+#define SQL_DIAG_CREATE_TRANSLATION		79
+#define SQL_DIAG_CREATE_VIEW           84
+#define SQL_DIAG_DELETE_WHERE          19
+#define	SQL_DIAG_DROP_ASSERTION			24
+#define	SQL_DIAG_DROP_CHARACTER_SET		25
+#define	SQL_DIAG_DROP_COLLATION			26
+#define	SQL_DIAG_DROP_DOMAIN			27
+#define SQL_DIAG_DROP_INDEX            (-2)
+#define SQL_DIAG_DROP_SCHEMA			31
+#define SQL_DIAG_DROP_TABLE            32
+#define SQL_DIAG_DROP_TRANSLATION      33
+#define SQL_DIAG_DROP_VIEW             36
+#define SQL_DIAG_DYNAMIC_DELETE_CURSOR 38
+#define SQL_DIAG_DYNAMIC_UPDATE_CURSOR 81
+#define SQL_DIAG_GRANT                 48
+#define SQL_DIAG_INSERT                50
+#define SQL_DIAG_REVOKE                59
+#define SQL_DIAG_SELECT_CURSOR         85
+#define SQL_DIAG_UNKNOWN_STATEMENT      0
+#define SQL_DIAG_UPDATE_WHERE          82
+#endif
+
+#define	SQL_UNKNOWN_TYPE	0
+#define SQL_CHAR            1
+#define SQL_NUMERIC         2
+#define SQL_DECIMAL         3
+#define SQL_INTEGER         4
+#define SQL_SMALLINT        5
+#define SQL_FLOAT           6
+#define SQL_REAL            7
+#define SQL_DOUBLE          8
+#if (ODBCVER >= 0x0300)
+#define SQL_DATETIME        9
+#endif
+#define SQL_VARCHAR        12
+
+#if (ODBCVER >= 0x0300)
+#define SQL_TYPE_DATE      91
+#define SQL_TYPE_TIME      92
+#define SQL_TYPE_TIMESTAMP 93
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_UNSPECIFIED     0
+#define SQL_INSENSITIVE     1
+#define SQL_SENSITIVE       2
+#endif
+
+#define SQL_ALL_TYPES       0
+
+#if (ODBCVER >= 0x0300)
+#define SQL_DEFAULT        99
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_ARD_TYPE      (-99)
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_CODE_DATE       1
+#define SQL_CODE_TIME       2
+#define SQL_CODE_TIMESTAMP  3
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_FALSE           0
+#define SQL_TRUE            1
+#endif
+
+#define SQL_NO_NULLS        0
+#define SQL_NULLABLE        1
+
+#define SQL_NULLABLE_UNKNOWN  2
+
+#if (ODBCVER >= 0x0300)
+#define SQL_PRED_NONE     0
+#define SQL_PRED_CHAR     1
+#define SQL_PRED_BASIC    2
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_NAMED           0
+#define SQL_UNNAMED         1
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_DESC_ALLOC_AUTO 1
+#define SQL_DESC_ALLOC_USER 2
+#endif
+
+#define SQL_CLOSE           0
+#define SQL_DROP            1
+#define SQL_UNBIND          2
+#define SQL_RESET_PARAMS    3
+#define SQL_FETCH_NEXT      1
+#define SQL_FETCH_FIRST     2
+#define SQL_FETCH_LAST      3
+#define SQL_FETCH_PRIOR     4
+#define SQL_FETCH_ABSOLUTE  5
+#define SQL_FETCH_RELATIVE  6
+
+#define SQL_COMMIT          0
+#define SQL_ROLLBACK        1
+
+#define SQL_NULL_HENV       0
+#define SQL_NULL_HDBC       0
+#define SQL_NULL_HSTMT      0
+#if (ODBCVER >= 0x0300)
+#define SQL_NULL_HDESC      0
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_NULL_HANDLE     0L
+#endif
+
+#define SQL_SCOPE_CURROW    0
+#define SQL_SCOPE_TRANSACTION 1
+#define SQL_SCOPE_SESSION   2
+
+#define SQL_PC_UNKNOWN      0
+#if (ODBCVER >= 0x0300)
+#define SQL_PC_NON_PSEUDO   1
+#endif
+#define SQL_PC_PSEUDO       2
+
+#if (ODBCVER >= 0x0300)
+#define SQL_ROW_IDENTIFIER  1
+#endif
+
+#define SQL_INDEX_UNIQUE    0
+#define SQL_INDEX_ALL       1
+
+#define SQL_INDEX_CLUSTERED 1
+#define SQL_INDEX_HASHED    2
+#define SQL_INDEX_OTHER     3
+
+#define SQL_API_SQLALLOCCONNECT         1
+#define SQL_API_SQLALLOCENV             2
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLALLOCHANDLE       1001
+#endif
+#define SQL_API_SQLALLOCSTMT            3
+#define SQL_API_SQLBINDCOL              4
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLBINDPARAM         1002
+#endif
+#define SQL_API_SQLCANCEL               5
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLCLOSECURSOR       1003
+#define SQL_API_SQLCOLATTRIBUTE         6
+#endif
+#define SQL_API_SQLCOLUMNS             40
+#define SQL_API_SQLCONNECT              7
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLCOPYDESC          1004
+#endif
+#define SQL_API_SQLDATASOURCES         57
+#define SQL_API_SQLDESCRIBECOL          8
+#define SQL_API_SQLDISCONNECT           9
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLENDTRAN           1005
+#endif
+#define SQL_API_SQLERROR               10
+#define SQL_API_SQLEXECDIRECT          11
+#define SQL_API_SQLEXECUTE             12
+#define SQL_API_SQLFETCH               13
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLFETCHSCROLL       1021
+#endif
+#define SQL_API_SQLFREECONNECT         14
+#define SQL_API_SQLFREEENV             15
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLFREEHANDLE        1006
+#endif
+#define SQL_API_SQLFREESTMT            16
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLGETCONNECTATTR    1007
+#endif
+#define SQL_API_SQLGETCONNECTOPTION    42
+#define SQL_API_SQLGETCURSORNAME       17
+#define SQL_API_SQLGETDATA             43
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLGETDESCFIELD      1008
+#define SQL_API_SQLGETDESCREC        1009
+#define SQL_API_SQLGETDIAGFIELD      1010
+#define SQL_API_SQLGETDIAGREC        1011
+#define SQL_API_SQLGETENVATTR        1012
+#endif
+#define SQL_API_SQLGETFUNCTIONS        44
+#define SQL_API_SQLGETINFO             45
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLGETSTMTATTR       1014
+#endif
+#define SQL_API_SQLGETSTMTOPTION       46
+#define SQL_API_SQLGETTYPEINFO         47
+#define SQL_API_SQLNUMRESULTCOLS       18
+#define SQL_API_SQLPARAMDATA           48
+#define SQL_API_SQLPREPARE             19
+#define SQL_API_SQLPUTDATA             49
+#define SQL_API_SQLROWCOUNT            20
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLSETCONNECTATTR    1016
+#endif
+#define SQL_API_SQLSETCONNECTOPTION    50
+#define SQL_API_SQLSETCURSORNAME       21
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLSETDESCFIELD      1017
+#define SQL_API_SQLSETDESCREC        1018
+#define SQL_API_SQLSETENVATTR        1019
+#endif
+#define SQL_API_SQLSETPARAM            22
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLSETSTMTATTR       1020
+#endif
+#define SQL_API_SQLSETSTMTOPTION       51
+#define SQL_API_SQLSPECIALCOLUMNS      52
+#define SQL_API_SQLSTATISTICS          53
+#define SQL_API_SQLTABLES              54
+#define SQL_API_SQLTRANSACT            23
+
+#if (ODBCVER >= 0x0300)
+#define SQL_MAX_DRIVER_CONNECTIONS           0
+#define SQL_MAXIMUM_DRIVER_CONNECTIONS		SQL_MAX_DRIVER_CONNECTIONS
+#define SQL_MAX_CONCURRENT_ACTIVITIES        1
+#define SQL_MAXIMUM_CONCURRENT_ACTIVITIES	SQL_MAX_CONCURRENT_ACTIVITIES
+#endif
+#define SQL_DATA_SOURCE_NAME                 2
+#define SQL_FETCH_DIRECTION                  8
+#define SQL_SERVER_NAME                     13
+#define SQL_SEARCH_PATTERN_ESCAPE           14
+#define SQL_DBMS_NAME                       17
+#define SQL_DBMS_VER                        18
+#define SQL_ACCESSIBLE_TABLES               19
+#define SQL_ACCESSIBLE_PROCEDURES        	20
+#define SQL_CURSOR_COMMIT_BEHAVIOR          23
+#define SQL_DATA_SOURCE_READ_ONLY           25
+#define SQL_DEFAULT_TXN_ISOLATION           26
+#define SQL_IDENTIFIER_CASE                 28
+#define SQL_IDENTIFIER_QUOTE_CHAR           29
+#define SQL_MAX_COLUMN_NAME_LEN             30
+#define SQL_MAXIMUM_COLUMN_NAME_LENGTH		SQL_MAX_COLUMN_NAME_LEN
+#define SQL_MAX_CURSOR_NAME_LEN             31
+#define SQL_MAXIMUM_CURSOR_NAME_LENGTH		SQL_MAX_CURSOR_NAME_LEN
+#define SQL_MAX_SCHEMA_NAME_LEN             32
+#define SQL_MAXIMUM_SCHEMA_NAME_LENGTH		SQL_MAX_SCHEMA_NAME_LEN
+#define SQL_MAX_CATALOG_NAME_LEN            34
+#define SQL_MAXIMUM_CATALOG_NAME_LENGTH		SQL_MAX_CATALOG_NAME_LEN
+#define SQL_MAX_TABLE_NAME_LEN              35
+#define SQL_SCROLL_CONCURRENCY              43
+#define SQL_TXN_CAPABLE                     46
+#define SQL_TRANSACTION_CAPABLE				SQL_TXN_CAPABLE
+#define SQL_USER_NAME                       47
+#define SQL_TXN_ISOLATION_OPTION            72
+#define SQL_TRANSACTION_ISOLATION_OPTION	SQL_TXN_ISOLATION_OPTION
+#define SQL_INTEGRITY                       73
+#define SQL_GETDATA_EXTENSIONS              81
+#define SQL_NULL_COLLATION                  85
+#define SQL_ALTER_TABLE                     86
+#define SQL_ORDER_BY_COLUMNS_IN_SELECT      90
+#define SQL_SPECIAL_CHARACTERS              94
+#define SQL_MAX_COLUMNS_IN_GROUP_BY         97
+#define SQL_MAXIMUM_COLUMNS_IN_GROUP_BY		SQL_MAX_COLUMNS_IN_GROUP_BY
+#define SQL_MAX_COLUMNS_IN_INDEX            98
+#define SQL_MAXIMUM_COLUMNS_IN_INDEX		SQL_MAX_COLUMNS_IN_INDEX
+#define SQL_MAX_COLUMNS_IN_ORDER_BY         99
+#define SQL_MAXIMUM_COLUMNS_IN_ORDER_BY		SQL_MAX_COLUMNS_IN_ORDER_BY
+#define SQL_MAX_COLUMNS_IN_SELECT          100
+#define SQL_MAXIMUM_COLUMNS_IN_SELECT	   SQL_MAX_COLUMNS_IN_SELECT
+#define SQL_MAX_COLUMNS_IN_TABLE           101
+#define SQL_MAX_INDEX_SIZE                 102
+#define SQL_MAXIMUM_INDEX_SIZE			   SQL_MAX_INDEX_SIZE
+#define SQL_MAX_ROW_SIZE                   104
+#define SQL_MAXIMUM_ROW_SIZE			   SQL_MAX_ROW_SIZE
+#define SQL_MAX_STATEMENT_LEN              105
+#define SQL_MAXIMUM_STATEMENT_LENGTH	   SQL_MAX_STATEMENT_LEN
+#define SQL_MAX_TABLES_IN_SELECT           106
+#define SQL_MAXIMUM_TABLES_IN_SELECT	   SQL_MAX_TABLES_IN_SELECT
+#define SQL_MAX_USER_NAME_LEN              107
+#define SQL_MAXIMUM_USER_NAME_LENGTH	   SQL_MAX_USER_NAME_LEN
+#if (ODBCVER >= 0x0300)
+#define SQL_OJ_CAPABILITIES                115
+#define SQL_OUTER_JOIN_CAPABILITIES		   SQL_OJ_CAPABILITIES
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_XOPEN_CLI_YEAR               10000
+#define SQL_CURSOR_SENSITIVITY           10001
+#define SQL_DESCRIBE_PARAMETER           10002
+#define SQL_CATALOG_NAME                 10003
+#define SQL_COLLATION_SEQ                10004
+#define SQL_MAX_IDENTIFIER_LEN           10005
+#define SQL_MAXIMUM_IDENTIFIER_LENGTH	 SQL_MAX_IDENTIFIER_LEN
+#endif
+
+#if (ODBCVER >= 0x0200)
+#define SQL_AT_ADD_COLUMN                   	0x00000001L
+#define SQL_AT_DROP_COLUMN                  	0x00000002L
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_AT_ADD_CONSTRAINT               	0x00000008L
+
+#endif  /* ODBCVER >= 0x0300 */
+
+
+#if (ODBCVER >= 0x0300)
+#define SQL_AM_NONE                         0
+#define SQL_AM_CONNECTION                   1
+#define SQL_AM_STATEMENT                    2
+#endif
+
+#define SQL_CB_DELETE                       0
+#define SQL_CB_CLOSE                        1
+#define SQL_CB_PRESERVE                     2
+
+#define SQL_FD_FETCH_NEXT                   0x00000001L
+#define SQL_FD_FETCH_FIRST                  0x00000002L
+#define SQL_FD_FETCH_LAST                   0x00000004L
+#define SQL_FD_FETCH_PRIOR                  0x00000008L
+#define SQL_FD_FETCH_ABSOLUTE               0x00000010L
+#define SQL_FD_FETCH_RELATIVE               0x00000020L
+
+#define SQL_GD_ANY_COLUMN                   0x00000001L
+#define SQL_GD_ANY_ORDER                    0x00000002L
+
+#define SQL_IC_UPPER                        1
+#define SQL_IC_LOWER                        2
+#define SQL_IC_SENSITIVE                    3
+#define SQL_IC_MIXED                        4
+
+#if (ODBCVER >= 0x0201)
+#define SQL_OJ_LEFT                         0x00000001L
+#define SQL_OJ_RIGHT                        0x00000002L
+#define SQL_OJ_FULL                         0x00000004L
+#define SQL_OJ_NESTED                       0x00000008L
+#define SQL_OJ_NOT_ORDERED                  0x00000010L
+#define SQL_OJ_INNER                        0x00000020L
+#define SQL_OJ_ALL_COMPARISON_OPS           0x00000040L
+#endif
+
+#define SQL_SCCO_READ_ONLY                  0x00000001L
+#define SQL_SCCO_LOCK                       0x00000002L
+#define SQL_SCCO_OPT_ROWVER                 0x00000004L
+#define SQL_SCCO_OPT_VALUES                 0x00000008L
+
+#define SQL_TC_NONE                         0
+#define SQL_TC_DML                          1
+#define SQL_TC_ALL                          2
+#define SQL_TC_DDL_COMMIT                   3
+#define SQL_TC_DDL_IGNORE                   4
+
+#define SQL_TXN_READ_UNCOMMITTED            0x00000001L
+#define SQL_TRANSACTION_READ_UNCOMMITTED	SQL_TXN_READ_UNCOMMITTED
+#define SQL_TXN_READ_COMMITTED              0x00000002L
+#define SQL_TRANSACTION_READ_COMMITTED		SQL_TXN_READ_COMMITTED
+#define SQL_TXN_REPEATABLE_READ             0x00000004L
+#define SQL_TRANSACTION_REPEATABLE_READ		SQL_TXN_REPEATABLE_READ
+#define SQL_TXN_SERIALIZABLE                0x00000008L
+#define SQL_TRANSACTION_SERIALIZABLE		SQL_TXN_SERIALIZABLE
+
+#define SQL_NC_HIGH                         0
+#define SQL_NC_LOW                          1
+
+SQLRETURN WINAPI   SQLAllocConnect(SQLHENV EnvironmentHandle,
+           SQLHDBC *ConnectionHandle);
+
+SQLRETURN WINAPI   SQLAllocEnv(SQLHENV *EnvironmentHandle);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI   SQLAllocHandle(SQLSMALLINT HandleType,
+           SQLHANDLE InputHandle, SQLHANDLE *OutputHandle);
+#endif
+
+SQLRETURN WINAPI   SQLAllocStmt(SQLHDBC ConnectionHandle,
+           SQLHSTMT *StatementHandle);
+
+SQLRETURN WINAPI   SQLBindCol(SQLHSTMT StatementHandle,
+		   SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType,
+		   SQLPOINTER TargetValue, SQLINTEGER BufferLength,
+	   	   SQLINTEGER *StrLen_or_Ind);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI   SQLBindParam(SQLHSTMT StatementHandle,
+           SQLUSMALLINT ParameterNumber, SQLSMALLINT ValueType,
+           SQLSMALLINT ParameterType, SQLUINTEGER LengthPrecision,
+           SQLSMALLINT ParameterScale, SQLPOINTER ParameterValue,
+           SQLINTEGER *StrLen_or_Ind);
+#endif
+
+SQLRETURN WINAPI   SQLCancel(SQLHSTMT StatementHandle);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI   SQLCloseCursor(SQLHSTMT StatementHandle);
+
+SQLRETURN WINAPI   SQLColAttribute (SQLHSTMT StatementHandle,
+           SQLUSMALLINT ColumnNumber, SQLUSMALLINT FieldIdentifier,
+           SQLPOINTER CharacterAttribute, SQLSMALLINT BufferLength,
+           SQLSMALLINT *StringLength, SQLPOINTER NumericAttribute);
+#endif
+
+
+SQLRETURN WINAPI   SQLColumns(SQLHSTMT StatementHandle,
+           SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
+           SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
+           SQLCHAR *TableName, SQLSMALLINT NameLength3,
+           SQLCHAR *ColumnName, SQLSMALLINT NameLength4);
+
+
+SQLRETURN WINAPI   SQLConnect(SQLHDBC ConnectionHandle,
+           SQLCHAR *ServerName, SQLSMALLINT NameLength1,
+           SQLCHAR *UserName, SQLSMALLINT NameLength2,
+           SQLCHAR *Authentication, SQLSMALLINT NameLength3);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI   SQLCopyDesc(SQLHDESC SourceDescHandle,
+           SQLHDESC TargetDescHandle);
+#endif
+
+SQLRETURN WINAPI   SQLDataSources(SQLHENV EnvironmentHandle,
+           SQLUSMALLINT Direction, SQLCHAR *ServerName,
+           SQLSMALLINT BufferLength1, SQLSMALLINT *NameLength1,
+           SQLCHAR *Description, SQLSMALLINT BufferLength2,
+           SQLSMALLINT *NameLength2);
+
+SQLRETURN WINAPI   SQLDescribeCol(SQLHSTMT StatementHandle,
+           SQLUSMALLINT ColumnNumber, SQLCHAR *ColumnName,
+           SQLSMALLINT BufferLength, SQLSMALLINT *NameLength,
+           SQLSMALLINT *DataType, SQLUINTEGER *ColumnSize,
+           SQLSMALLINT *DecimalDigits, SQLSMALLINT *Nullable);
+
+SQLRETURN WINAPI   SQLDisconnect(SQLHDBC ConnectionHandle);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI   SQLEndTran(SQLSMALLINT HandleType, SQLHANDLE Handle,
+           SQLSMALLINT CompletionType);
+#endif
+
+SQLRETURN WINAPI   SQLError(SQLHENV EnvironmentHandle,
+           SQLHDBC ConnectionHandle, SQLHSTMT StatementHandle,
+           SQLCHAR *Sqlstate, SQLINTEGER *NativeError,
+           SQLCHAR *MessageText, SQLSMALLINT BufferLength,
+           SQLSMALLINT *TextLength);
+
+SQLRETURN WINAPI   SQLExecDirect(SQLHSTMT StatementHandle,
+           SQLCHAR *StatementText, SQLINTEGER TextLength);
+
+SQLRETURN WINAPI   SQLExecute(SQLHSTMT StatementHandle);
+
+SQLRETURN WINAPI   SQLFetch(SQLHSTMT StatementHandle);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI   SQLFetchScroll(SQLHSTMT StatementHandle,
+           SQLSMALLINT FetchOrientation, SQLINTEGER FetchOffset);
+#endif
+
+SQLRETURN WINAPI   SQLFreeConnect(SQLHDBC ConnectionHandle);
+
+SQLRETURN WINAPI   SQLFreeEnv(SQLHENV EnvironmentHandle);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI   SQLFreeHandle(SQLSMALLINT HandleType, SQLHANDLE Handle);
+#endif
+
+SQLRETURN WINAPI   SQLFreeStmt(SQLHSTMT StatementHandle,
+           SQLUSMALLINT Option);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI   SQLGetConnectAttr(SQLHDBC ConnectionHandle,
+           SQLINTEGER Attribute, SQLPOINTER Value,
+           SQLINTEGER BufferLength, SQLINTEGER *StringLength);
+#endif
+
+SQLRETURN WINAPI   SQLGetConnectOption(SQLHDBC ConnectionHandle,
+           SQLUSMALLINT Option, SQLPOINTER Value);
+
+SQLRETURN WINAPI   SQLGetCursorName(SQLHSTMT StatementHandle,
+           SQLCHAR *CursorName, SQLSMALLINT BufferLength,
+           SQLSMALLINT *NameLength);
+
+SQLRETURN WINAPI   SQLGetData(SQLHSTMT StatementHandle,
+           SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType,
+           SQLPOINTER TargetValue, SQLINTEGER BufferLength,
+           SQLINTEGER *StrLen_or_Ind);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI   SQLGetDescField(SQLHDESC DescriptorHandle,
+           SQLSMALLINT RecNumber, SQLSMALLINT FieldIdentifier,
+           SQLPOINTER Value, SQLINTEGER BufferLength,
+           SQLINTEGER *StringLength);
+
+SQLRETURN WINAPI   SQLGetDescRec(SQLHDESC DescriptorHandle,
+           SQLSMALLINT RecNumber, SQLCHAR *Name,
+           SQLSMALLINT BufferLength, SQLSMALLINT *StringLength,
+           SQLSMALLINT *Type, SQLSMALLINT *SubType,
+           SQLINTEGER *Length, SQLSMALLINT *Precision,
+           SQLSMALLINT *Scale, SQLSMALLINT *Nullable);
+
+SQLRETURN WINAPI   SQLGetDiagField(SQLSMALLINT HandleType, SQLHANDLE Handle,
+           SQLSMALLINT RecNumber, SQLSMALLINT DiagIdentifier,
+           SQLPOINTER DiagInfo, SQLSMALLINT BufferLength,
+           SQLSMALLINT *StringLength);
+
+SQLRETURN WINAPI   SQLGetDiagRec(SQLSMALLINT HandleType, SQLHANDLE Handle,
+           SQLSMALLINT RecNumber, SQLCHAR *Sqlstate,
+           SQLINTEGER *NativeError, SQLCHAR *MessageText,
+           SQLSMALLINT BufferLength, SQLSMALLINT *TextLength);
+
+SQLRETURN WINAPI   SQLGetEnvAttr(SQLHENV EnvironmentHandle,
+           SQLINTEGER Attribute, SQLPOINTER Value,
+           SQLINTEGER BufferLength, SQLINTEGER *StringLength);
+#endif
+
+SQLRETURN WINAPI   SQLGetFunctions(SQLHDBC ConnectionHandle,
+           SQLUSMALLINT FunctionId, SQLUSMALLINT *Supported);
+
+SQLRETURN WINAPI   SQLGetInfo(SQLHDBC ConnectionHandle,
+           SQLUSMALLINT InfoType, SQLPOINTER InfoValue,
+           SQLSMALLINT BufferLength, SQLSMALLINT *StringLength);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI   SQLGetStmtAttr(SQLHSTMT StatementHandle,
+           SQLINTEGER Attribute, SQLPOINTER Value,
+           SQLINTEGER BufferLength, SQLINTEGER *StringLength);
+#endif
+
+SQLRETURN WINAPI   SQLGetStmtOption(SQLHSTMT StatementHandle,
+           SQLUSMALLINT Option, SQLPOINTER Value);
+
+SQLRETURN WINAPI   SQLGetTypeInfo(SQLHSTMT StatementHandle,
+           SQLSMALLINT DataType);
+
+SQLRETURN WINAPI   SQLNumResultCols(SQLHSTMT StatementHandle,
+           SQLSMALLINT *ColumnCount);
+
+SQLRETURN WINAPI   SQLParamData(SQLHSTMT StatementHandle,
+           SQLPOINTER *Value);
+
+SQLRETURN WINAPI   SQLPrepare(SQLHSTMT StatementHandle,
+           SQLCHAR *StatementText, SQLINTEGER TextLength);
+
+SQLRETURN WINAPI   SQLPutData(SQLHSTMT StatementHandle,
+           SQLPOINTER Data, SQLINTEGER StrLen_or_Ind);
+
+SQLRETURN WINAPI   SQLRowCount(SQLHSTMT StatementHandle,
+	   SQLINTEGER *RowCount);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI   SQLSetConnectAttr(SQLHDBC ConnectionHandle,
+           SQLINTEGER Attribute, SQLPOINTER Value,
+           SQLINTEGER StringLength);
+#endif
+
+SQLRETURN WINAPI   SQLSetConnectOption(SQLHDBC ConnectionHandle,
+           SQLUSMALLINT Option, SQLUINTEGER Value);
+
+SQLRETURN WINAPI   SQLSetCursorName(SQLHSTMT StatementHandle,
+           SQLCHAR *CursorName, SQLSMALLINT NameLength);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI   SQLSetDescField(SQLHDESC DescriptorHandle,
+           SQLSMALLINT RecNumber, SQLSMALLINT FieldIdentifier,
+           SQLPOINTER Value, SQLINTEGER BufferLength);
+
+SQLRETURN WINAPI   SQLSetDescRec(SQLHDESC DescriptorHandle,
+           SQLSMALLINT RecNumber, SQLSMALLINT Type,
+           SQLSMALLINT SubType, SQLINTEGER Length,
+           SQLSMALLINT Precision, SQLSMALLINT Scale,
+           SQLPOINTER Data, SQLINTEGER *StringLength,
+           SQLINTEGER *Indicator);
+
+SQLRETURN WINAPI   SQLSetEnvAttr(SQLHENV EnvironmentHandle,
+           SQLINTEGER Attribute, SQLPOINTER Value,
+           SQLINTEGER StringLength);
+#endif
+
+SQLRETURN WINAPI   SQLSetParam(SQLHSTMT StatementHandle,
+           SQLUSMALLINT ParameterNumber, SQLSMALLINT ValueType,
+           SQLSMALLINT ParameterType, SQLUINTEGER LengthPrecision,
+           SQLSMALLINT ParameterScale, SQLPOINTER ParameterValue,
+           SQLINTEGER *StrLen_or_Ind);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI   SQLSetStmtAttr(SQLHSTMT StatementHandle,
+           SQLINTEGER Attribute, SQLPOINTER Value,
+           SQLINTEGER StringLength);
+#endif
+
+SQLRETURN WINAPI   SQLSetStmtOption(SQLHSTMT StatementHandle,
+           SQLUSMALLINT Option, SQLUINTEGER Value);
+
+SQLRETURN WINAPI   SQLSpecialColumns(SQLHSTMT StatementHandle,
+           SQLUSMALLINT IdentifierType, SQLCHAR *CatalogName,
+           SQLSMALLINT NameLength1, SQLCHAR *SchemaName,
+           SQLSMALLINT NameLength2, SQLCHAR *TableName,
+           SQLSMALLINT NameLength3, SQLUSMALLINT Scope,
+           SQLUSMALLINT Nullable);
+
+SQLRETURN WINAPI   SQLStatistics(SQLHSTMT StatementHandle,
+           SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
+           SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
+           SQLCHAR *TableName, SQLSMALLINT NameLength3,
+           SQLUSMALLINT Unique, SQLUSMALLINT Reserved);
+
+SQLRETURN WINAPI   SQLTables(SQLHSTMT StatementHandle,
+           SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
+           SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
+           SQLCHAR *TableName, SQLSMALLINT NameLength3,
+           SQLCHAR *TableType, SQLSMALLINT NameLength4);
+
+SQLRETURN WINAPI   SQLTransact(SQLHENV EnvironmentHandle,
+           SQLHDBC ConnectionHandle, SQLUSMALLINT CompletionType);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/sqlext.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/sqlext.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/sqlext.h	(revision 16410)
@@ -0,0 +1,1673 @@
+/*
+ * MS SQL Extension definitions
+ *
+ * Copyright (C) 1999 Xiang Li
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __SQLEXT_H
+#define __SQLEXT_H
+
+#include <sql.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SQL_SPEC_MAJOR     3
+#define SQL_SPEC_MINOR	   51
+#define SQL_SPEC_STRING   "03.51"
+
+#define SQL_SQLSTATE_SIZE	5
+#define SQL_MAX_DSN_LENGTH	32
+
+#define SQL_MAX_OPTION_STRING_LENGTH    256
+
+#if (ODBCVER < 0x0300)
+#define SQL_NO_DATA_FOUND	100
+#else
+#define SQL_NO_DATA_FOUND	SQL_NO_DATA
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define	SQL_HANDLE_SENV		5
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_ATTR_ODBC_VERSION				200
+#define SQL_ATTR_CONNECTION_POOLING			201
+#define SQL_ATTR_CP_MATCH					202
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_CP_OFF							0UL
+#define SQL_CP_ONE_PER_DRIVER				1UL
+#define SQL_CP_ONE_PER_HENV					2UL
+#define SQL_CP_DEFAULT						SQL_CP_OFF
+
+#define SQL_CP_STRICT_MATCH					0UL
+#define SQL_CP_RELAXED_MATCH				1UL
+#define SQL_CP_MATCH_DEFAULT				SQL_CP_STRICT_MATCH
+
+#define SQL_OV_ODBC2						2UL
+#define	SQL_OV_ODBC3						3UL
+#endif
+
+#define SQL_ACCESS_MODE                 101
+#define SQL_AUTOCOMMIT                  102
+#define SQL_LOGIN_TIMEOUT               103
+#define SQL_OPT_TRACE                   104
+#define SQL_OPT_TRACEFILE               105
+#define SQL_TRANSLATE_DLL               106
+#define SQL_TRANSLATE_OPTION            107
+#define SQL_TXN_ISOLATION               108
+#define SQL_CURRENT_QUALIFIER           109
+#define SQL_ODBC_CURSORS                110
+#define SQL_QUIET_MODE                  111
+#define SQL_PACKET_SIZE                 112
+
+#if (ODBCVER >= 0x0300)
+#define SQL_ATTR_ACCESS_MODE		SQL_ACCESS_MODE
+#define SQL_ATTR_AUTOCOMMIT			SQL_AUTOCOMMIT
+#define SQL_ATTR_CONNECTION_TIMEOUT	113
+#define SQL_ATTR_CURRENT_CATALOG	SQL_CURRENT_QUALIFIER
+#define SQL_ATTR_DISCONNECT_BEHAVIOR	114
+#define SQL_ATTR_ENLIST_IN_DTC		1207
+#define SQL_ATTR_ENLIST_IN_XA		1208
+#define SQL_ATTR_LOGIN_TIMEOUT		SQL_LOGIN_TIMEOUT
+#define SQL_ATTR_ODBC_CURSORS		SQL_ODBC_CURSORS
+#define SQL_ATTR_PACKET_SIZE		SQL_PACKET_SIZE
+#define SQL_ATTR_QUIET_MODE			SQL_QUIET_MODE
+#define SQL_ATTR_TRACE				SQL_OPT_TRACE
+#define SQL_ATTR_TRACEFILE			SQL_OPT_TRACEFILE
+#define SQL_ATTR_TRANSLATE_LIB		SQL_TRANSLATE_DLL
+#define SQL_ATTR_TRANSLATE_OPTION	SQL_TRANSLATE_OPTION
+#define SQL_ATTR_TXN_ISOLATION		SQL_TXN_ISOLATION
+#endif
+
+#define SQL_ATTR_CONNECTION_DEAD	1209
+
+#if (ODBCVER >= 0x0351)
+#define SQL_ATTR_ANSI_APP			115
+#endif
+
+#if (ODBCVER < 0x0300)
+#define SQL_CONNECT_OPT_DRVR_START      1000
+#endif
+
+#if (ODBCVER < 0x0300)
+#define SQL_CONN_OPT_MAX                SQL_PACKET_SIZE
+#define SQL_CONN_OPT_MIN                SQL_ACCESS_MODE
+#endif
+
+#define SQL_MODE_READ_WRITE             0UL
+#define SQL_MODE_READ_ONLY              1UL
+#define SQL_MODE_DEFAULT                SQL_MODE_READ_WRITE
+
+#define SQL_AUTOCOMMIT_OFF              0UL
+#define SQL_AUTOCOMMIT_ON               1UL
+#define SQL_AUTOCOMMIT_DEFAULT          SQL_AUTOCOMMIT_ON
+
+#define SQL_LOGIN_TIMEOUT_DEFAULT       15UL
+
+#define SQL_OPT_TRACE_OFF               0UL
+#define SQL_OPT_TRACE_ON                1UL
+#define SQL_OPT_TRACE_DEFAULT           SQL_OPT_TRACE_OFF
+#define SQL_OPT_TRACE_FILE_DEFAULT      "\\SQL.LOG"
+
+#define SQL_CUR_USE_IF_NEEDED           0UL
+#define SQL_CUR_USE_ODBC                1UL
+#define SQL_CUR_USE_DRIVER              2UL
+#define SQL_CUR_DEFAULT                 SQL_CUR_USE_DRIVER
+
+#if (ODBCVER >= 0x0300)
+#define SQL_DB_RETURN_TO_POOL			0UL
+#define SQL_DB_DISCONNECT				1UL
+#define SQL_DB_DEFAULT					SQL_DB_RETURN_TO_POOL
+
+#define SQL_DTC_DONE					0L
+#endif
+
+#define SQL_CD_TRUE					1L
+#define SQL_CD_FALSE					0L
+
+#if (ODBCVER >= 0x0351)
+#define SQL_AA_TRUE					1L
+#define SQL_AA_FALSE					0L
+#endif
+
+#define SQL_QUERY_TIMEOUT		0
+#define SQL_MAX_ROWS			1
+#define SQL_NOSCAN			2
+#define SQL_MAX_LENGTH			3
+#define SQL_ASYNC_ENABLE		4
+#define SQL_BIND_TYPE			5
+#define SQL_CURSOR_TYPE			6
+#define SQL_CONCURRENCY			7
+#define SQL_KEYSET_SIZE			8
+#define SQL_ROWSET_SIZE			9
+#define SQL_SIMULATE_CURSOR		10
+#define SQL_RETRIEVE_DATA		11
+#define SQL_USE_BOOKMARKS		12
+#define SQL_GET_BOOKMARK		13
+#define SQL_ROW_NUMBER			14
+
+#if (ODBCVER >= 0x0300)
+#define SQL_ATTR_ASYNC_ENABLE				4
+#define SQL_ATTR_CONCURRENCY				SQL_CONCURRENCY
+#define SQL_ATTR_CURSOR_TYPE				SQL_CURSOR_TYPE
+#define	SQL_ATTR_ENABLE_AUTO_IPD			15
+#define SQL_ATTR_FETCH_BOOKMARK_PTR			16
+#define SQL_ATTR_KEYSET_SIZE				SQL_KEYSET_SIZE
+#define SQL_ATTR_MAX_LENGTH				SQL_MAX_LENGTH
+#define SQL_ATTR_MAX_ROWS				SQL_MAX_ROWS
+#define SQL_ATTR_NOSCAN					SQL_NOSCAN
+#define SQL_ATTR_PARAM_BIND_OFFSET_PTR			17
+#define	SQL_ATTR_PARAM_BIND_TYPE			18
+#define SQL_ATTR_PARAM_OPERATION_PTR			19
+#define SQL_ATTR_PARAM_STATUS_PTR			20
+#define	SQL_ATTR_PARAMS_PROCESSED_PTR			21
+#define SQL_ATTR_RETRIEVE_DATA				SQL_RETRIEVE_DATA
+#define SQL_ATTR_ROW_BIND_OFFSET_PTR			23
+#define	SQL_ATTR_ROW_BIND_TYPE				SQL_BIND_TYPE
+#define SQL_ATTR_ROW_NUMBER				SQL_ROW_NUMBER
+#define SQL_ATTR_ROW_OPERATION_PTR			24
+#define	SQL_ATTR_ROW_STATUS_PTR				25
+#define	SQL_ATTR_ROWS_FETCHED_PTR			26
+#define SQL_ATTR_ROW_ARRAY_SIZE				27
+#define SQL_ATTR_SIMULATE_CURSOR			SQL_SIMULATE_CURSOR
+#define SQL_ATTR_USE_BOOKMARKS				SQL_USE_BOOKMARKS
+
+#endif
+
+#if (ODBCVER < 0x0300)
+#define SQL_STMT_OPT_MAX                SQL_ROW_NUMBER
+#define SQL_STMT_OPT_MIN	SQL_QUERY_TIMEOUT
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define	SQL_COL_PRED_CHAR		SQL_LIKE_ONLY
+#define	SQL_COL_PRED_BASIC		SQL_ALL_EXCEPT_LIKE
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_IS_POINTER							(-4)
+#define SQL_IS_UINTEGER							(-5)
+#define SQL_IS_INTEGER							(-6)
+#define SQL_IS_USMALLINT						(-7)
+#define SQL_IS_SMALLINT							(-8)
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_PARAM_BIND_BY_COLUMN			0UL
+#define SQL_PARAM_BIND_TYPE_DEFAULT			SQL_PARAM_BIND_BY_COLUMN
+#endif
+
+#define SQL_QUERY_TIMEOUT_DEFAULT       0UL
+
+#define SQL_MAX_ROWS_DEFAULT            0UL
+
+#define SQL_NOSCAN_OFF                  0UL
+#define SQL_NOSCAN_ON                   1UL
+#define SQL_NOSCAN_DEFAULT              SQL_NOSCAN_OFF
+
+#define SQL_MAX_LENGTH_DEFAULT          0UL
+
+#define SQL_ASYNC_ENABLE_OFF			0UL
+#define SQL_ASYNC_ENABLE_ON				1UL
+#define SQL_ASYNC_ENABLE_DEFAULT        SQL_ASYNC_ENABLE_OFF
+
+#define SQL_BIND_BY_COLUMN              0UL
+#define SQL_BIND_TYPE_DEFAULT           SQL_BIND_BY_COLUMN
+
+#define SQL_CONCUR_READ_ONLY            1
+#define SQL_CONCUR_LOCK                 2
+#define SQL_CONCUR_ROWVER               3
+#define SQL_CONCUR_VALUES               4
+#define SQL_CONCUR_DEFAULT              SQL_CONCUR_READ_ONLY
+
+#define SQL_CURSOR_FORWARD_ONLY         0UL
+#define SQL_CURSOR_KEYSET_DRIVEN        1UL
+#define SQL_CURSOR_DYNAMIC              2UL
+#define SQL_CURSOR_STATIC               3UL
+#define SQL_CURSOR_TYPE_DEFAULT         SQL_CURSOR_FORWARD_ONLY
+
+#define SQL_ROWSET_SIZE_DEFAULT         1UL
+
+#define SQL_KEYSET_SIZE_DEFAULT         0UL
+
+#define SQL_SC_NON_UNIQUE               0UL
+#define SQL_SC_TRY_UNIQUE               1UL
+#define SQL_SC_UNIQUE                   2UL
+
+#define SQL_RD_OFF                      0UL
+#define SQL_RD_ON                       1UL
+#define SQL_RD_DEFAULT                  SQL_RD_ON
+
+#define SQL_UB_OFF                      0UL
+#define	SQL_UB_ON			01UL
+#define SQL_UB_DEFAULT                  SQL_UB_OFF
+
+#if (ODBCVER >= 0x0300)
+#define SQL_UB_FIXED					SQL_UB_ON
+#define SQL_UB_VARIABLE					2UL
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_DESC_ARRAY_SIZE					20
+#define SQL_DESC_ARRAY_STATUS_PTR				21
+#define SQL_DESC_AUTO_UNIQUE_VALUE				SQL_COLUMN_AUTO_INCREMENT
+#define SQL_DESC_BASE_COLUMN_NAME				22
+#define SQL_DESC_BASE_TABLE_NAME				23
+#define SQL_DESC_BIND_OFFSET_PTR				24
+#define SQL_DESC_BIND_TYPE					25
+#define SQL_DESC_CASE_SENSITIVE					SQL_COLUMN_CASE_SENSITIVE
+#define SQL_DESC_CATALOG_NAME					SQL_COLUMN_QUALIFIER_NAME
+#define SQL_DESC_CONCISE_TYPE					SQL_COLUMN_TYPE
+#define SQL_DESC_DATETIME_INTERVAL_PRECISION			26
+#define SQL_DESC_DISPLAY_SIZE					SQL_COLUMN_DISPLAY_SIZE
+#define SQL_DESC_FIXED_PREC_SCALE				SQL_COLUMN_MONEY
+#define SQL_DESC_LABEL						SQL_COLUMN_LABEL
+#define SQL_DESC_LITERAL_PREFIX					27
+#define SQL_DESC_LITERAL_SUFFIX					28
+#define SQL_DESC_LOCAL_TYPE_NAME				29
+#define	SQL_DESC_MAXIMUM_SCALE					30
+#define SQL_DESC_MINIMUM_SCALE					31
+#define SQL_DESC_NUM_PREC_RADIX					32
+#define SQL_DESC_PARAMETER_TYPE					33
+#define SQL_DESC_ROWS_PROCESSED_PTR				34
+#if (ODBCVER >= 0x0350)
+#define SQL_DESC_ROWVER						35
+#endif
+#define SQL_DESC_SCHEMA_NAME					SQL_COLUMN_OWNER_NAME
+#define SQL_DESC_SEARCHABLE					SQL_COLUMN_SEARCHABLE
+#define SQL_DESC_TYPE_NAME					SQL_COLUMN_TYPE_NAME
+#define SQL_DESC_TABLE_NAME					SQL_COLUMN_TABLE_NAME
+#define SQL_DESC_UNSIGNED					SQL_COLUMN_UNSIGNED
+#define SQL_DESC_UPDATABLE					SQL_COLUMN_UPDATABLE
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_DIAG_CURSOR_ROW_COUNT			(-1249)
+#define SQL_DIAG_ROW_NUMBER				(-1248)
+#define SQL_DIAG_COLUMN_NUMBER				(-1247)
+#endif
+
+#define SQL_DATE                                9
+#if (ODBCVER >= 0x0300)
+#define SQL_INTERVAL				10
+#endif
+#define SQL_TIME                                10
+#define SQL_TIMESTAMP                           11
+#define SQL_LONGVARCHAR                         (-1)
+#define SQL_BINARY                              (-2)
+#define SQL_VARBINARY                           (-3)
+#define SQL_LONGVARBINARY                       (-4)
+#define SQL_BIGINT                              (-5)
+#define SQL_TINYINT                             (-6)
+#define SQL_BIT                                 (-7)
+#if (ODBCVER >= 0x0350)
+#define SQL_GUID				(-11)
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_CODE_YEAR				1
+#define SQL_CODE_MONTH				2
+#define SQL_CODE_DAY				3
+#define SQL_CODE_HOUR				4
+#define SQL_CODE_MINUTE				5
+#define SQL_CODE_SECOND				6
+#define SQL_CODE_YEAR_TO_MONTH			7
+#define SQL_CODE_DAY_TO_HOUR			8
+#define SQL_CODE_DAY_TO_MINUTE			9
+#define SQL_CODE_DAY_TO_SECOND			10
+#define SQL_CODE_HOUR_TO_MINUTE			11
+#define SQL_CODE_HOUR_TO_SECOND			12
+#define SQL_CODE_MINUTE_TO_SECOND		13
+
+#define SQL_INTERVAL_YEAR			(100 + SQL_CODE_YEAR)
+#define SQL_INTERVAL_MONTH			(100 + SQL_CODE_MONTH)
+#define SQL_INTERVAL_DAY			(100 + SQL_CODE_DAY)
+#define SQL_INTERVAL_HOUR			(100 + SQL_CODE_HOUR)
+#define SQL_INTERVAL_MINUTE			(100 + SQL_CODE_MINUTE)
+#define SQL_INTERVAL_SECOND                	(100 + SQL_CODE_SECOND)
+#define SQL_INTERVAL_YEAR_TO_MONTH		(100 + SQL_CODE_YEAR_TO_MONTH)
+#define SQL_INTERVAL_DAY_TO_HOUR		(100 + SQL_CODE_DAY_TO_HOUR)
+#define SQL_INTERVAL_DAY_TO_MINUTE		(100 + SQL_CODE_DAY_TO_MINUTE)
+#define SQL_INTERVAL_DAY_TO_SECOND		(100 + SQL_CODE_DAY_TO_SECOND)
+#define SQL_INTERVAL_HOUR_TO_MINUTE		(100 + SQL_CODE_HOUR_TO_MINUTE)
+#define SQL_INTERVAL_HOUR_TO_SECOND		(100 + SQL_CODE_HOUR_TO_SECOND)
+#define SQL_INTERVAL_MINUTE_TO_SECOND		(100 + SQL_CODE_MINUTE_TO_SECOND)
+
+#else
+#define SQL_INTERVAL_YEAR                       (-80)
+#define SQL_INTERVAL_MONTH                      (-81)
+#define SQL_INTERVAL_YEAR_TO_MONTH              (-82)
+#define SQL_INTERVAL_DAY                        (-83)
+#define SQL_INTERVAL_HOUR                       (-84)
+#define SQL_INTERVAL_MINUTE                     (-85)
+#define SQL_INTERVAL_SECOND                     (-86)
+#define SQL_INTERVAL_DAY_TO_HOUR                (-87)
+#define SQL_INTERVAL_DAY_TO_MINUTE              (-88)
+#define SQL_INTERVAL_DAY_TO_SECOND              (-89)
+#define SQL_INTERVAL_HOUR_TO_MINUTE             (-90)
+#define SQL_INTERVAL_HOUR_TO_SECOND             (-91)
+#define SQL_INTERVAL_MINUTE_TO_SECOND           (-92)
+#endif
+
+
+#if (ODBCVER <= 0x0300)
+#define SQL_UNICODE                             (-95)
+#define SQL_UNICODE_VARCHAR                     (-96)
+#define SQL_UNICODE_LONGVARCHAR                 (-97)
+#define SQL_UNICODE_CHAR                        SQL_UNICODE
+#else
+
+#define	SQL_UNICODE			SQL_WCHAR
+#define	SQL_UNICODE_VARCHAR		SQL_WVARCHAR
+#define SQL_UNICODE_LONGVARCHAR	SQL_WLONGVARCHAR
+#define SQL_UNICODE_CHAR		SQL_WCHAR
+#endif
+
+#if (ODBCVER < 0x0300)
+#define SQL_TYPE_DRIVER_START                   SQL_INTERVAL_YEAR
+#define SQL_TYPE_DRIVER_END                     SQL_UNICODE_LONGVARCHAR
+#endif
+
+#define SQL_C_CHAR    SQL_CHAR
+#define SQL_C_LONG    SQL_INTEGER
+#define SQL_C_SHORT   SQL_SMALLINT
+#define SQL_C_FLOAT   SQL_REAL
+#define SQL_C_DOUBLE  SQL_DOUBLE
+#if (ODBCVER >= 0x0300)
+#define	SQL_C_NUMERIC		SQL_NUMERIC
+#endif
+#define SQL_C_DEFAULT 99
+
+#define SQL_SIGNED_OFFSET       (-20)
+#define SQL_UNSIGNED_OFFSET     (-22)
+
+#define SQL_C_DATE       SQL_DATE
+#define SQL_C_TIME       SQL_TIME
+#define SQL_C_TIMESTAMP  SQL_TIMESTAMP
+#if (ODBCVER >= 0x0300)
+#define SQL_C_TYPE_DATE				SQL_TYPE_DATE
+#define SQL_C_TYPE_TIME				SQL_TYPE_TIME
+#define SQL_C_TYPE_TIMESTAMP			SQL_TYPE_TIMESTAMP
+#define SQL_C_INTERVAL_YEAR			SQL_INTERVAL_YEAR
+#define SQL_C_INTERVAL_MONTH			SQL_INTERVAL_MONTH
+#define SQL_C_INTERVAL_DAY			SQL_INTERVAL_DAY
+#define SQL_C_INTERVAL_HOUR			SQL_INTERVAL_HOUR
+#define SQL_C_INTERVAL_MINUTE			SQL_INTERVAL_MINUTE
+#define SQL_C_INTERVAL_SECOND			SQL_INTERVAL_SECOND
+#define SQL_C_INTERVAL_YEAR_TO_MONTH		SQL_INTERVAL_YEAR_TO_MONTH
+#define SQL_C_INTERVAL_DAY_TO_HOUR		SQL_INTERVAL_DAY_TO_HOUR
+#define SQL_C_INTERVAL_DAY_TO_MINUTE		SQL_INTERVAL_DAY_TO_MINUTE
+#define SQL_C_INTERVAL_DAY_TO_SECOND		SQL_INTERVAL_DAY_TO_SECOND
+#define SQL_C_INTERVAL_HOUR_TO_MINUTE		SQL_INTERVAL_HOUR_TO_MINUTE
+#define SQL_C_INTERVAL_HOUR_TO_SECOND		SQL_INTERVAL_HOUR_TO_SECOND
+#define SQL_C_INTERVAL_MINUTE_TO_SECOND		SQL_INTERVAL_MINUTE_TO_SECOND
+#endif
+#define SQL_C_BINARY     SQL_BINARY
+#define SQL_C_BIT        SQL_BIT
+#if (ODBCVER >= 0x0300)
+#define SQL_C_SBIGINT	(SQL_BIGINT+SQL_SIGNED_OFFSET)
+#define SQL_C_UBIGINT	(SQL_BIGINT+SQL_UNSIGNED_OFFSET)
+#endif
+#define SQL_C_TINYINT    SQL_TINYINT
+#define SQL_C_SLONG      (SQL_C_LONG+SQL_SIGNED_OFFSET)
+#define SQL_C_SSHORT     (SQL_C_SHORT+SQL_SIGNED_OFFSET)
+#define SQL_C_STINYINT   (SQL_TINYINT+SQL_SIGNED_OFFSET)
+#define SQL_C_ULONG      (SQL_C_LONG+SQL_UNSIGNED_OFFSET)
+#define SQL_C_USHORT     (SQL_C_SHORT+SQL_UNSIGNED_OFFSET)
+#define SQL_C_UTINYINT   (SQL_TINYINT+SQL_UNSIGNED_OFFSET)
+#define SQL_C_BOOKMARK   SQL_C_ULONG
+
+#if (ODBCVER >= 0x0350)
+#define SQL_C_GUID	SQL_GUID
+#endif
+
+#define SQL_TYPE_NULL                   0
+#if (ODBCVER < 0x0300)
+#define SQL_TYPE_MIN                    SQL_BIT
+#define SQL_TYPE_MAX                    SQL_VARCHAR
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_C_VARBOOKMARK		SQL_C_BINARY
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_NO_ROW_NUMBER					(-1)
+#define SQL_NO_COLUMN_NUMBER					(-1)
+#define SQL_ROW_NUMBER_UNKNOWN					(-2)
+#define SQL_COLUMN_NUMBER_UNKNOWN				(-2)
+#endif
+
+#define SQL_DEFAULT_PARAM            (-5)
+#define SQL_IGNORE                   (-6)
+#if (ODBCVER >= 0x0300)
+#define SQL_COLUMN_IGNORE		SQL_IGNORE
+#endif
+#define SQL_LEN_DATA_AT_EXEC_OFFSET  (-100)
+#define SQL_LEN_DATA_AT_EXEC(length) (-(length)+SQL_LEN_DATA_AT_EXEC_OFFSET)
+
+#define SQL_LEN_BINARY_ATTR_OFFSET	 (-100)
+#define SQL_LEN_BINARY_ATTR(length)	 (-(length)+SQL_LEN_BINARY_ATTR_OFFSET)
+
+#define SQL_PARAM_TYPE_DEFAULT           SQL_PARAM_INPUT_OUTPUT
+#define SQL_SETPARAM_VALUE_MAX           (-1L)
+
+#define SQL_COLUMN_COUNT                0
+#define SQL_COLUMN_NAME                 1
+#define SQL_COLUMN_TYPE                 2
+#define SQL_COLUMN_LENGTH               3
+#define SQL_COLUMN_PRECISION            4
+#define SQL_COLUMN_SCALE                5
+#define SQL_COLUMN_DISPLAY_SIZE         6
+#define SQL_COLUMN_NULLABLE             7
+#define SQL_COLUMN_UNSIGNED             8
+#define SQL_COLUMN_MONEY                9
+#define SQL_COLUMN_UPDATABLE            10
+#define SQL_COLUMN_AUTO_INCREMENT       11
+#define SQL_COLUMN_CASE_SENSITIVE       12
+#define SQL_COLUMN_SEARCHABLE           13
+#define SQL_COLUMN_TYPE_NAME            14
+#define SQL_COLUMN_TABLE_NAME           15
+#define SQL_COLUMN_OWNER_NAME           16
+#define SQL_COLUMN_QUALIFIER_NAME       17
+#define SQL_COLUMN_LABEL                18
+#define SQL_COLATT_OPT_MAX              SQL_COLUMN_LABEL
+#if (ODBCVER < 0x0300)
+#define SQL_COLUMN_DRIVER_START         1000
+#endif
+
+#define SQL_COLATT_OPT_MIN              SQL_COLUMN_COUNT
+
+#define SQL_ATTR_READONLY               0
+#define SQL_ATTR_WRITE                  1
+#define SQL_ATTR_READWRITE_UNKNOWN      2
+
+#define SQL_UNSEARCHABLE                0
+#define SQL_LIKE_ONLY                   1
+#define SQL_ALL_EXCEPT_LIKE             2
+#define SQL_SEARCHABLE                  3
+#define SQL_PRED_SEARCHABLE				SQL_SEARCHABLE
+
+
+#define SQL_NO_TOTAL                    (-4)
+
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLALLOCHANDLESTD	73
+#define SQL_API_SQLBULKOPERATIONS	24
+#endif
+#define SQL_API_SQLBINDPARAMETER    72
+#define SQL_API_SQLBROWSECONNECT    55
+#define SQL_API_SQLCOLATTRIBUTES    6
+#define SQL_API_SQLCOLUMNPRIVILEGES 56
+#define SQL_API_SQLDESCRIBEPARAM    58
+#define	SQL_API_SQLDRIVERCONNECT	41
+#define SQL_API_SQLDRIVERS          71
+#define SQL_API_SQLEXTENDEDFETCH    59
+#define SQL_API_SQLFOREIGNKEYS      60
+#define SQL_API_SQLMORERESULTS      61
+#define SQL_API_SQLNATIVESQL        62
+#define SQL_API_SQLNUMPARAMS        63
+#define SQL_API_SQLPARAMOPTIONS     64
+#define SQL_API_SQLPRIMARYKEYS      65
+#define SQL_API_SQLPROCEDURECOLUMNS 66
+#define SQL_API_SQLPROCEDURES       67
+#define SQL_API_SQLSETPOS           68
+#define SQL_API_SQLSETSCROLLOPTIONS 69
+#define SQL_API_SQLTABLEPRIVILEGES  70
+
+#if (ODBCVER < 0x0300)
+#define SQL_EXT_API_LAST            SQL_API_SQLBINDPARAMETER
+#define SQL_NUM_FUNCTIONS           23
+#define SQL_EXT_API_START           40
+#define SQL_NUM_EXTENSIONS (SQL_EXT_API_LAST-SQL_EXT_API_START+1)
+#endif
+
+#define SQL_API_ALL_FUNCTIONS       0
+
+#define SQL_API_LOADBYORDINAL       199
+
+#if (ODBCVER >= 0x0300)
+#define SQL_API_ODBC3_ALL_FUNCTIONS		999
+#define	SQL_API_ODBC3_ALL_FUNCTIONS_SIZE	250
+
+
+#define SQL_FUNC_EXISTS(pfExists, uwAPI) ((*(((UWORD*) (pfExists)) + ((uwAPI) >> 4)) & (1 << ((uwAPI) & 0x000F)) ) ? SQL_TRUE : SQL_FALSE )
+
+#endif
+
+#define SQL_INFO_FIRST                       0
+#define SQL_ACTIVE_CONNECTIONS               0
+#define SQL_ACTIVE_STATEMENTS                1
+#define SQL_DRIVER_HDBC                      3
+#define SQL_DRIVER_HENV                      4
+#define SQL_DRIVER_HSTMT                     5
+#define SQL_DRIVER_NAME                      6
+#define SQL_DRIVER_VER                       7
+#define SQL_ODBC_API_CONFORMANCE             9
+#define SQL_ODBC_VER                        10
+#define SQL_ROW_UPDATES                     11
+#define SQL_ODBC_SAG_CLI_CONFORMANCE        12
+#define SQL_ODBC_SQL_CONFORMANCE            15
+#define SQL_PROCEDURES                      21
+#define SQL_CONCAT_NULL_BEHAVIOR            22
+#define SQL_CURSOR_ROLLBACK_BEHAVIOR        24
+#define SQL_EXPRESSIONS_IN_ORDERBY          27
+#define SQL_MAX_OWNER_NAME_LEN              32
+#define SQL_MAX_PROCEDURE_NAME_LEN          33
+#define SQL_MAX_QUALIFIER_NAME_LEN          34
+#define SQL_MULT_RESULT_SETS                36
+#define SQL_MULTIPLE_ACTIVE_TXN             37
+#define SQL_OUTER_JOINS                     38
+#define SQL_OWNER_TERM                      39
+#define SQL_PROCEDURE_TERM                  40
+#define SQL_QUALIFIER_NAME_SEPARATOR        41
+#define SQL_QUALIFIER_TERM                  42
+#define SQL_SCROLL_OPTIONS                  44
+#define SQL_TABLE_TERM                      45
+#define SQL_CONVERT_FUNCTIONS               48
+#define SQL_NUMERIC_FUNCTIONS               49
+#define SQL_STRING_FUNCTIONS                50
+#define SQL_SYSTEM_FUNCTIONS                51
+#define SQL_TIMEDATE_FUNCTIONS              52
+#define SQL_CONVERT_BIGINT                  53
+#define SQL_CONVERT_BINARY                  54
+#define SQL_CONVERT_BIT                     55
+#define SQL_CONVERT_CHAR                    56
+#define SQL_CONVERT_DATE                    57
+#define SQL_CONVERT_DECIMAL                 58
+#define SQL_CONVERT_DOUBLE                  59
+#define SQL_CONVERT_FLOAT                   60
+#define SQL_CONVERT_INTEGER                 61
+#define SQL_CONVERT_LONGVARCHAR             62
+#define SQL_CONVERT_NUMERIC                 63
+#define SQL_CONVERT_REAL                    64
+#define SQL_CONVERT_SMALLINT                65
+#define SQL_CONVERT_TIME                    66
+#define SQL_CONVERT_TIMESTAMP               67
+#define SQL_CONVERT_TINYINT                 68
+#define SQL_CONVERT_VARBINARY               69
+#define SQL_CONVERT_VARCHAR                 70
+#define SQL_CONVERT_LONGVARBINARY           71
+#define SQL_ODBC_SQL_OPT_IEF                73
+#define SQL_CORRELATION_NAME                74
+#define SQL_NON_NULLABLE_COLUMNS            75
+#define SQL_DRIVER_HLIB                     76
+#define SQL_DRIVER_ODBC_VER                 77
+#define SQL_LOCK_TYPES                      78
+#define SQL_POS_OPERATIONS                  79
+#define SQL_POSITIONED_STATEMENTS           80
+#define SQL_BOOKMARK_PERSISTENCE            82
+#define SQL_STATIC_SENSITIVITY              83
+#define SQL_FILE_USAGE                      84
+#define SQL_COLUMN_ALIAS                    87
+#define SQL_GROUP_BY                        88
+#define SQL_KEYWORDS                        89
+#define SQL_OWNER_USAGE                     91
+#define SQL_QUALIFIER_USAGE                 92
+#define SQL_QUOTED_IDENTIFIER_CASE          93
+#define SQL_SUBQUERIES                      95
+#define SQL_UNION                           96
+#define SQL_MAX_ROW_SIZE_INCLUDES_LONG      103
+#define SQL_MAX_CHAR_LITERAL_LEN            108
+#define SQL_TIMEDATE_ADD_INTERVALS          109
+#define SQL_TIMEDATE_DIFF_INTERVALS         110
+#define SQL_NEED_LONG_DATA_LEN              111
+#define SQL_MAX_BINARY_LITERAL_LEN          112
+#define SQL_LIKE_ESCAPE_CLAUSE              113
+#define SQL_QUALIFIER_LOCATION              114
+
+#if (ODBCVER >= 0x0201 && ODBCVER < 0x0300)
+#define SQL_OJ_CAPABILITIES         65003
+#endif
+
+#if (ODBCVER < 0x0300)
+#define SQL_INFO_LAST							SQL_QUALIFIER_LOCATION
+#define SQL_INFO_DRIVER_START						1000
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_ACTIVE_ENVIRONMENTS						116
+#define	SQL_ALTER_DOMAIN						117
+
+#define	SQL_SQL_CONFORMANCE						118
+#define SQL_DATETIME_LITERALS						119
+
+#define	SQL_ASYNC_MODE							10021
+#define SQL_BATCH_ROW_COUNT						120
+#define SQL_BATCH_SUPPORT						121
+#define SQL_CATALOG_LOCATION						SQL_QUALIFIER_LOCATION
+#define SQL_CATALOG_NAME_SEPARATOR					SQL_QUALIFIER_NAME_SEPARATOR
+#define SQL_CATALOG_TERM						SQL_QUALIFIER_TERM
+#define SQL_CATALOG_USAGE						SQL_QUALIFIER_USAGE
+#define	SQL_CONVERT_WCHAR						122
+#define SQL_CONVERT_INTERVAL_DAY_TIME					123
+#define SQL_CONVERT_INTERVAL_YEAR_MONTH					124
+#define	SQL_CONVERT_WLONGVARCHAR					125
+#define	SQL_CONVERT_WVARCHAR						126
+#define	SQL_CREATE_ASSERTION						127
+#define	SQL_CREATE_CHARACTER_SET					128
+#define	SQL_CREATE_COLLATION						129
+#define	SQL_CREATE_DOMAIN						130
+#define	SQL_CREATE_SCHEMA						131
+#define	SQL_CREATE_TABLE						132
+#define	SQL_CREATE_TRANSLATION						133
+#define	SQL_CREATE_VIEW							134
+#define SQL_DRIVER_HDESC						135
+#define	SQL_DROP_ASSERTION						136
+#define	SQL_DROP_CHARACTER_SET						137
+#define	SQL_DROP_COLLATION						138
+#define	SQL_DROP_DOMAIN							139
+#define	SQL_DROP_SCHEMA							140
+#define	SQL_DROP_TABLE							141
+#define	SQL_DROP_TRANSLATION						142
+#define	SQL_DROP_VIEW							143
+#define SQL_DYNAMIC_CURSOR_ATTRIBUTES1			144
+#define SQL_DYNAMIC_CURSOR_ATTRIBUTES2			145
+#define SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1		146
+#define SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2		147
+#define SQL_INDEX_KEYWORDS				148
+#define SQL_INFO_SCHEMA_VIEWS				149
+#define SQL_KEYSET_CURSOR_ATTRIBUTES1			150
+#define SQL_KEYSET_CURSOR_ATTRIBUTES2			151
+#define	SQL_MAX_ASYNC_CONCURRENT_STATEMENTS		10022
+#define SQL_ODBC_INTERFACE_CONFORMANCE			152
+#define SQL_PARAM_ARRAY_ROW_COUNTS     			153
+#define SQL_PARAM_ARRAY_SELECTS     			154
+#define SQL_SCHEMA_TERM					SQL_OWNER_TERM
+#define SQL_SCHEMA_USAGE				SQL_OWNER_USAGE
+#define SQL_SQL92_DATETIME_FUNCTIONS			155
+#define SQL_SQL92_FOREIGN_KEY_DELETE_RULE		156
+#define SQL_SQL92_FOREIGN_KEY_UPDATE_RULE		157
+#define SQL_SQL92_GRANT					158
+#define SQL_SQL92_NUMERIC_VALUE_FUNCTIONS		159
+#define SQL_SQL92_PREDICATES				160
+#define SQL_SQL92_RELATIONAL_JOIN_OPERATORS		161
+#define SQL_SQL92_REVOKE				162
+#define SQL_SQL92_ROW_VALUE_CONSTRUCTOR			163
+#define SQL_SQL92_STRING_FUNCTIONS			164
+#define SQL_SQL92_VALUE_EXPRESSIONS			165
+#define SQL_STANDARD_CLI_CONFORMANCE			166
+#define SQL_STATIC_CURSOR_ATTRIBUTES1			167
+#define SQL_STATIC_CURSOR_ATTRIBUTES2			168
+
+#define SQL_AGGREGATE_FUNCTIONS				169
+#define SQL_DDL_INDEX					170
+#define SQL_DM_VER					171
+#define SQL_INSERT_STATEMENT				172
+#define SQL_UNION_STATEMENT				SQL_UNION
+#endif
+
+#define	SQL_DTC_TRANSITION_COST				1750
+
+#if (ODBCVER >= 0x0300)
+
+#define	SQL_AT_ADD_COLUMN_SINGLE				0x00000020L
+#define	SQL_AT_ADD_COLUMN_DEFAULT				0x00000040L
+#define	SQL_AT_ADD_COLUMN_COLLATION				0x00000080L
+#define	SQL_AT_SET_COLUMN_DEFAULT				0x00000100L
+#define	SQL_AT_DROP_COLUMN_DEFAULT				0x00000200L
+#define	SQL_AT_DROP_COLUMN_CASCADE				0x00000400L
+#define	SQL_AT_DROP_COLUMN_RESTRICT				0x00000800L
+#define SQL_AT_ADD_TABLE_CONSTRAINT				0x00001000L
+#define SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE			0x00002000L
+#define SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT			0x00004000L
+#define SQL_AT_CONSTRAINT_NAME_DEFINITION			0x00008000L
+#define SQL_AT_CONSTRAINT_INITIALLY_DEFERRED			0x00010000L
+#define SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE			0x00020000L
+#define SQL_AT_CONSTRAINT_DEFERRABLE				0x00040000L
+#define SQL_AT_CONSTRAINT_NON_DEFERRABLE			0x00080000L
+#endif
+
+#define SQL_CVT_CHAR                        0x00000001L
+#define SQL_CVT_NUMERIC                     0x00000002L
+#define SQL_CVT_DECIMAL                     0x00000004L
+#define SQL_CVT_INTEGER                     0x00000008L
+#define SQL_CVT_SMALLINT                    0x00000010L
+#define SQL_CVT_FLOAT                       0x00000020L
+#define SQL_CVT_REAL                        0x00000040L
+#define SQL_CVT_DOUBLE                      0x00000080L
+#define SQL_CVT_VARCHAR                     0x00000100L
+#define SQL_CVT_LONGVARCHAR                 0x00000200L
+#define SQL_CVT_BINARY                      0x00000400L
+#define SQL_CVT_VARBINARY                   0x00000800L
+#define SQL_CVT_BIT                         0x00001000L
+#define SQL_CVT_TINYINT                     0x00002000L
+#define SQL_CVT_BIGINT                      0x00004000L
+#define SQL_CVT_DATE                        0x00008000L
+#define SQL_CVT_TIME                        0x00010000L
+#define SQL_CVT_TIMESTAMP                   0x00020000L
+#define SQL_CVT_LONGVARBINARY               0x00040000L
+#if (ODBCVER >= 0x0300)
+#define SQL_CVT_INTERVAL_YEAR_MONTH	0x00080000L
+#define SQL_CVT_INTERVAL_DAY_TIME	0x00100000L
+#define	SQL_CVT_WCHAR			0x00200000L
+#define	SQL_CVT_WLONGVARCHAR		0x00400000L
+#define	SQL_CVT_WVARCHAR		0x00800000L
+
+#endif
+
+
+#define SQL_FN_CVT_CONVERT		0x00000001L
+#if (ODBCVER >= 0x0300)
+#define SQL_FN_CVT_CAST			0x00000002L
+#endif
+
+#define SQL_FN_STR_CONCAT                   0x00000001L
+#define SQL_FN_STR_INSERT                   0x00000002L
+#define SQL_FN_STR_LEFT                     0x00000004L
+#define SQL_FN_STR_LTRIM                    0x00000008L
+#define SQL_FN_STR_LENGTH                   0x00000010L
+#define SQL_FN_STR_LOCATE                   0x00000020L
+#define SQL_FN_STR_LCASE                    0x00000040L
+#define SQL_FN_STR_REPEAT                   0x00000080L
+#define SQL_FN_STR_REPLACE                  0x00000100L
+#define SQL_FN_STR_RIGHT                    0x00000200L
+#define SQL_FN_STR_RTRIM                    0x00000400L
+#define SQL_FN_STR_SUBSTRING                0x00000800L
+#define SQL_FN_STR_UCASE                    0x00001000L
+#define SQL_FN_STR_ASCII                    0x00002000L
+#define SQL_FN_STR_CHAR                     0x00004000L
+#define SQL_FN_STR_DIFFERENCE               0x00008000L
+#define SQL_FN_STR_LOCATE_2                 0x00010000L
+#define SQL_FN_STR_SOUNDEX                  0x00020000L
+#define SQL_FN_STR_SPACE                    0x00040000L
+#if (ODBCVER >= 0x0300)
+#define SQL_FN_STR_BIT_LENGTH			0x00080000L
+#define SQL_FN_STR_CHAR_LENGTH			0x00100000L
+#define SQL_FN_STR_CHARACTER_LENGTH		0x00200000L
+#define SQL_FN_STR_OCTET_LENGTH			0x00400000L
+#define SQL_FN_STR_POSITION			0x00800000L
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_SSF_CONVERT					0x00000001L
+#define SQL_SSF_LOWER					0x00000002L
+#define SQL_SSF_UPPER					0x00000004L
+#define SQL_SSF_SUBSTRING				0x00000008L
+#define SQL_SSF_TRANSLATE				0x00000010L
+#define SQL_SSF_TRIM_BOTH				0x00000020L
+#define SQL_SSF_TRIM_LEADING				0x00000040L
+#define SQL_SSF_TRIM_TRAILING				0x00000080L
+#endif
+
+#define SQL_FN_NUM_ABS                      0x00000001L
+#define SQL_FN_NUM_ACOS                     0x00000002L
+#define SQL_FN_NUM_ASIN                     0x00000004L
+#define SQL_FN_NUM_ATAN                     0x00000008L
+#define SQL_FN_NUM_ATAN2                    0x00000010L
+#define SQL_FN_NUM_CEILING                  0x00000020L
+#define SQL_FN_NUM_COS                      0x00000040L
+#define SQL_FN_NUM_COT                      0x00000080L
+#define SQL_FN_NUM_EXP                      0x00000100L
+#define SQL_FN_NUM_FLOOR                    0x00000200L
+#define SQL_FN_NUM_LOG                      0x00000400L
+#define SQL_FN_NUM_MOD                      0x00000800L
+#define SQL_FN_NUM_SIGN                     0x00001000L
+#define SQL_FN_NUM_SIN                      0x00002000L
+#define SQL_FN_NUM_SQRT                     0x00004000L
+#define SQL_FN_NUM_TAN                      0x00008000L
+#define SQL_FN_NUM_PI                       0x00010000L
+#define SQL_FN_NUM_RAND                     0x00020000L
+#define SQL_FN_NUM_DEGREES                  0x00040000L
+#define SQL_FN_NUM_LOG10                    0x00080000L
+#define SQL_FN_NUM_POWER                    0x00100000L
+#define SQL_FN_NUM_RADIANS                  0x00200000L
+#define SQL_FN_NUM_ROUND                    0x00400000L
+#define SQL_FN_NUM_TRUNCATE                 0x00800000L
+
+#if (ODBCVER >= 0x0300)
+#define SQL_SNVF_BIT_LENGTH				0x00000001L
+#define SQL_SNVF_CHAR_LENGTH				0x00000002L
+#define SQL_SNVF_CHARACTER_LENGTH			0x00000004L
+#define SQL_SNVF_EXTRACT				0x00000008L
+#define SQL_SNVF_OCTET_LENGTH				0x00000010L
+#define SQL_SNVF_POSITION				0x00000020L
+#endif
+
+#define SQL_FN_TD_NOW                       0x00000001L
+#define SQL_FN_TD_CURDATE                   0x00000002L
+#define SQL_FN_TD_DAYOFMONTH                0x00000004L
+#define SQL_FN_TD_DAYOFWEEK                 0x00000008L
+#define SQL_FN_TD_DAYOFYEAR                 0x00000010L
+#define SQL_FN_TD_MONTH                     0x00000020L
+#define SQL_FN_TD_QUARTER                   0x00000040L
+#define SQL_FN_TD_WEEK                      0x00000080L
+#define SQL_FN_TD_YEAR                      0x00000100L
+#define SQL_FN_TD_CURTIME                   0x00000200L
+#define SQL_FN_TD_HOUR                      0x00000400L
+#define SQL_FN_TD_MINUTE                    0x00000800L
+#define SQL_FN_TD_SECOND                    0x00001000L
+#define SQL_FN_TD_TIMESTAMPADD              0x00002000L
+#define SQL_FN_TD_TIMESTAMPDIFF             0x00004000L
+#define SQL_FN_TD_DAYNAME                   0x00008000L
+#define SQL_FN_TD_MONTHNAME                 0x00010000L
+#if (ODBCVER >= 0x0300)
+#define SQL_FN_TD_CURRENT_DATE				0x00020000L
+#define SQL_FN_TD_CURRENT_TIME				0x00040000L
+#define SQL_FN_TD_CURRENT_TIMESTAMP			0x00080000L
+#define SQL_FN_TD_EXTRACT				0x00100000L
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_SDF_CURRENT_DATE				0x00000001L
+#define SQL_SDF_CURRENT_TIME				0x00000002L
+#define SQL_SDF_CURRENT_TIMESTAMP			0x00000004L
+#endif
+
+#define SQL_FN_SYS_USERNAME                 0x00000001L
+#define SQL_FN_SYS_DBNAME                   0x00000002L
+#define SQL_FN_SYS_IFNULL                   0x00000004L
+
+#define SQL_FN_TSI_FRAC_SECOND              0x00000001L
+#define SQL_FN_TSI_SECOND                   0x00000002L
+#define SQL_FN_TSI_MINUTE                   0x00000004L
+#define SQL_FN_TSI_HOUR                     0x00000008L
+#define SQL_FN_TSI_DAY                      0x00000010L
+#define SQL_FN_TSI_WEEK                     0x00000020L
+#define SQL_FN_TSI_MONTH                    0x00000040L
+#define SQL_FN_TSI_QUARTER                  0x00000080L
+#define SQL_FN_TSI_YEAR                     0x00000100L
+
+#if (ODBCVER >= 0x0300)
+#define SQL_CA1_NEXT					0x00000001L
+#define SQL_CA1_ABSOLUTE				0x00000002L
+#define SQL_CA1_RELATIVE				0x00000004L
+#define SQL_CA1_BOOKMARK				0x00000008L
+
+#define SQL_CA1_LOCK_NO_CHANGE				0x00000040L
+#define SQL_CA1_LOCK_EXCLUSIVE				0x00000080L
+#define SQL_CA1_LOCK_UNLOCK				0x00000100L
+
+#define SQL_CA1_POS_POSITION				0x00000200L
+#define SQL_CA1_POS_UPDATE				0x00000400L
+#define SQL_CA1_POS_DELETE				0x00000800L
+#define SQL_CA1_POS_REFRESH				0x00001000L
+
+#define SQL_CA1_POSITIONED_UPDATE			0x00002000L
+#define SQL_CA1_POSITIONED_DELETE			0x00004000L
+#define SQL_CA1_SELECT_FOR_UPDATE			0x00008000L
+
+#define SQL_CA1_BULK_ADD			0x00010000L
+#define SQL_CA1_BULK_UPDATE_BY_BOOKMARK		0x00020000L
+#define SQL_CA1_BULK_DELETE_BY_BOOKMARK		0x00040000L
+#define SQL_CA1_BULK_FETCH_BY_BOOKMARK		0x00080000L
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_CA2_READ_ONLY_CONCURRENCY		0x00000001L
+#define SQL_CA2_LOCK_CONCURRENCY		0x00000002L
+#define SQL_CA2_OPT_ROWVER_CONCURRENCY		0x00000004L
+#define SQL_CA2_OPT_VALUES_CONCURRENCY		0x00000008L
+
+#define SQL_CA2_SENSITIVITY_ADDITIONS		0x00000010L
+#define SQL_CA2_SENSITIVITY_DELETIONS		0x00000020L
+#define SQL_CA2_SENSITIVITY_UPDATES		0x00000040L
+
+#define SQL_CA2_MAX_ROWS_SELECT			0x00000080L
+#define SQL_CA2_MAX_ROWS_INSERT			0x00000100L
+#define SQL_CA2_MAX_ROWS_DELETE			0x00000200L
+#define SQL_CA2_MAX_ROWS_UPDATE			0x00000400L
+#define SQL_CA2_MAX_ROWS_CATALOG		0x00000800L
+#define SQL_CA2_MAX_ROWS_AFFECTS_ALL		(SQL_CA2_MAX_ROWS_SELECT | SQL_CA2_MAX_ROWS_INSERT | SQL_CA2_MAX_ROWS_DELETE | SQL_CA2_MAX_ROWS_UPDATE | SQL_CA2_MAX_ROWS_CATALOG)
+
+#define SQL_CA2_CRC_EXACT			0x00001000L
+#define SQL_CA2_CRC_APPROXIMATE			0x00002000L
+
+#define SQL_CA2_SIMULATE_NON_UNIQUE		0x00004000L
+#define SQL_CA2_SIMULATE_TRY_UNIQUE		0x00008000L
+#define SQL_CA2_SIMULATE_UNIQUE			0x00010000L
+#endif
+
+#define SQL_OAC_NONE                        0x0000
+#define SQL_OAC_LEVEL1                      0x0001
+#define SQL_OAC_LEVEL2                      0x0002
+
+#define SQL_OSCC_NOT_COMPLIANT              0x0000
+#define SQL_OSCC_COMPLIANT                  0x0001
+
+#define SQL_OSC_MINIMUM                     0x0000
+#define SQL_OSC_CORE                        0x0001
+#define SQL_OSC_EXTENDED                    0x0002
+
+#define SQL_CB_NULL                         0x0000
+#define SQL_CB_NON_NULL                     0x0001
+
+#define SQL_SO_FORWARD_ONLY                 0x00000001L
+#define SQL_SO_KEYSET_DRIVEN                0x00000002L
+#define SQL_SO_DYNAMIC                      0x00000004L
+#define SQL_SO_MIXED                        0x00000008L
+#define SQL_SO_STATIC                       0x00000010L
+
+#define SQL_FD_FETCH_BOOKMARK               0x00000080L
+
+#define SQL_CN_NONE                         0x0000
+#define SQL_CN_DIFFERENT                    0x0001
+#define SQL_CN_ANY                          0x0002
+
+#define SQL_NNC_NULL                        0x0000
+#define SQL_NNC_NON_NULL                    0x0001
+
+#define SQL_NC_START                        0x0002
+#define SQL_NC_END                          0x0004
+
+#define SQL_FILE_NOT_SUPPORTED              0x0000
+#define SQL_FILE_TABLE                      0x0001
+#define SQL_FILE_QUALIFIER                  0x0002
+#define SQL_FILE_CATALOG		SQL_FILE_QUALIFIER
+
+#define SQL_GD_BLOCK                        0x00000004L
+#define SQL_GD_BOUND                        0x00000008L
+
+#define SQL_PS_POSITIONED_DELETE            0x00000001L
+#define SQL_PS_POSITIONED_UPDATE            0x00000002L
+#define SQL_PS_SELECT_FOR_UPDATE            0x00000004L
+
+#define SQL_GB_NOT_SUPPORTED                0x0000
+#define SQL_GB_GROUP_BY_EQUALS_SELECT       0x0001
+#define SQL_GB_GROUP_BY_CONTAINS_SELECT     0x0002
+#define SQL_GB_NO_RELATION                  0x0003
+#if (ODBCVER >= 0x0300)
+#define	SQL_GB_COLLATE			0x0004
+
+#endif
+
+#define SQL_OU_DML_STATEMENTS               0x00000001L
+#define SQL_OU_PROCEDURE_INVOCATION         0x00000002L
+#define SQL_OU_TABLE_DEFINITION             0x00000004L
+#define SQL_OU_INDEX_DEFINITION             0x00000008L
+#define SQL_OU_PRIVILEGE_DEFINITION         0x00000010L
+
+#if (ODBCVER >= 0x0300)
+#define SQL_SU_DML_STATEMENTS			SQL_OU_DML_STATEMENTS
+#define SQL_SU_PROCEDURE_INVOCATION		SQL_OU_PROCEDURE_INVOCATION
+#define SQL_SU_TABLE_DEFINITION			SQL_OU_TABLE_DEFINITION
+#define SQL_SU_INDEX_DEFINITION			SQL_OU_INDEX_DEFINITION
+#define SQL_SU_PRIVILEGE_DEFINITION		SQL_OU_PRIVILEGE_DEFINITION
+#endif
+
+#define SQL_QU_DML_STATEMENTS               0x00000001L
+#define SQL_QU_PROCEDURE_INVOCATION         0x00000002L
+#define SQL_QU_TABLE_DEFINITION             0x00000004L
+#define SQL_QU_INDEX_DEFINITION             0x00000008L
+#define SQL_QU_PRIVILEGE_DEFINITION         0x00000010L
+
+#if (ODBCVER >= 0x0300)
+#define SQL_CU_DML_STATEMENTS			SQL_QU_DML_STATEMENTS
+#define SQL_CU_PROCEDURE_INVOCATION		SQL_QU_PROCEDURE_INVOCATION
+#define SQL_CU_TABLE_DEFINITION			SQL_QU_TABLE_DEFINITION
+#define SQL_CU_INDEX_DEFINITION			SQL_QU_INDEX_DEFINITION
+#define SQL_CU_PRIVILEGE_DEFINITION		SQL_QU_PRIVILEGE_DEFINITION
+#endif
+
+#define SQL_SQ_COMPARISON                   0x00000001L
+#define SQL_SQ_EXISTS                       0x00000002L
+#define SQL_SQ_IN                           0x00000004L
+#define SQL_SQ_QUANTIFIED                   0x00000008L
+#define SQL_SQ_CORRELATED_SUBQUERIES        0x00000010L
+
+#define SQL_U_UNION                         0x00000001L
+#define SQL_U_UNION_ALL                     0x00000002L
+
+#define SQL_BP_CLOSE                        0x00000001L
+#define SQL_BP_DELETE                       0x00000002L
+#define SQL_BP_DROP                         0x00000004L
+#define SQL_BP_TRANSACTION                  0x00000008L
+#define SQL_BP_UPDATE                       0x00000010L
+#define SQL_BP_OTHER_HSTMT                  0x00000020L
+#define SQL_BP_SCROLL                       0x00000040L
+
+#define SQL_SS_ADDITIONS                    0x00000001L
+#define SQL_SS_DELETIONS                    0x00000002L
+#define SQL_SS_UPDATES                      0x00000004L
+
+#define	SQL_CV_CREATE_VIEW					0x00000001L
+#define	SQL_CV_CHECK_OPTION					0x00000002L
+#define	SQL_CV_CASCADED						0x00000004L
+#define	SQL_CV_LOCAL						0x00000008L
+
+#define SQL_LCK_NO_CHANGE                   0x00000001L
+#define SQL_LCK_EXCLUSIVE                   0x00000002L
+#define SQL_LCK_UNLOCK                      0x00000004L
+
+#define SQL_POS_POSITION                    0x00000001L
+#define SQL_POS_REFRESH                     0x00000002L
+#define SQL_POS_UPDATE                      0x00000004L
+#define SQL_POS_DELETE                      0x00000008L
+#define SQL_POS_ADD                         0x00000010L
+
+#define SQL_QL_START                        0x0001
+#define SQL_QL_END                          0x0002
+
+#if (ODBCVER >= 0x0300)
+#define SQL_AF_AVG						0x00000001L
+#define SQL_AF_COUNT					0x00000002L
+#define SQL_AF_MAX						0x00000004L
+#define SQL_AF_MIN						0x00000008L
+#define SQL_AF_SUM						0x00000010L
+#define SQL_AF_DISTINCT					0x00000020L
+#define SQL_AF_ALL						0x00000040L
+
+#define	SQL_SC_SQL92_ENTRY				0x00000001L
+#define	SQL_SC_FIPS127_2_TRANSITIONAL	0x00000002L
+#define	SQL_SC_SQL92_INTERMEDIATE		0x00000004L
+#define	SQL_SC_SQL92_FULL				0x00000008L
+
+#define SQL_DL_SQL92_DATE						0x00000001L
+#define SQL_DL_SQL92_TIME						0x00000002L
+#define SQL_DL_SQL92_TIMESTAMP					0x00000004L
+#define SQL_DL_SQL92_INTERVAL_YEAR				0x00000008L
+#define SQL_DL_SQL92_INTERVAL_MONTH				0x00000010L
+#define SQL_DL_SQL92_INTERVAL_DAY				0x00000020L
+#define SQL_DL_SQL92_INTERVAL_HOUR				0x00000040L
+#define	SQL_DL_SQL92_INTERVAL_MINUTE			0x00000080L
+#define SQL_DL_SQL92_INTERVAL_SECOND			0x00000100L
+#define SQL_DL_SQL92_INTERVAL_YEAR_TO_MONTH		0x00000200L
+#define SQL_DL_SQL92_INTERVAL_DAY_TO_HOUR		0x00000400L
+#define SQL_DL_SQL92_INTERVAL_DAY_TO_MINUTE		0x00000800L
+#define SQL_DL_SQL92_INTERVAL_DAY_TO_SECOND		0x00001000L
+#define SQL_DL_SQL92_INTERVAL_HOUR_TO_MINUTE	0x00002000L
+#define SQL_DL_SQL92_INTERVAL_HOUR_TO_SECOND	0x00004000L
+#define SQL_DL_SQL92_INTERVAL_MINUTE_TO_SECOND	0x00008000L
+
+#define SQL_CL_START						SQL_QL_START
+#define SQL_CL_END							SQL_QL_END
+
+#define SQL_BRC_PROCEDURES			0x0000001
+#define	SQL_BRC_EXPLICIT			0x0000002
+#define	SQL_BRC_ROLLED_UP			0x0000004
+
+#define SQL_BS_SELECT_EXPLICIT				0x00000001L
+#define SQL_BS_ROW_COUNT_EXPLICIT			0x00000002L
+#define SQL_BS_SELECT_PROC					0x00000004L
+#define SQL_BS_ROW_COUNT_PROC				0x00000008L
+
+#define SQL_PARC_BATCH		1
+#define SQL_PARC_NO_BATCH	2
+
+#define SQL_PAS_BATCH				1
+#define SQL_PAS_NO_BATCH			2
+#define SQL_PAS_NO_SELECT			3
+
+#define SQL_IK_NONE							0x00000000L
+#define SQL_IK_ASC							0x00000001L
+#define SQL_IK_DESC							0x00000002L
+#define SQL_IK_ALL							(SQL_IK_ASC | SQL_IK_DESC)
+
+#define SQL_ISV_ASSERTIONS					0x00000001L
+#define SQL_ISV_CHARACTER_SETS				0x00000002L
+#define SQL_ISV_CHECK_CONSTRAINTS			0x00000004L
+#define SQL_ISV_COLLATIONS					0x00000008L
+#define SQL_ISV_COLUMN_DOMAIN_USAGE			0x00000010L
+#define SQL_ISV_COLUMN_PRIVILEGES			0x00000020L
+#define SQL_ISV_COLUMNS						0x00000040L
+#define SQL_ISV_CONSTRAINT_COLUMN_USAGE		0x00000080L
+#define SQL_ISV_CONSTRAINT_TABLE_USAGE		0x00000100L
+#define SQL_ISV_DOMAIN_CONSTRAINTS			0x00000200L
+#define SQL_ISV_DOMAINS						0x00000400L
+#define SQL_ISV_KEY_COLUMN_USAGE			0x00000800L
+#define SQL_ISV_REFERENTIAL_CONSTRAINTS		0x00001000L
+#define SQL_ISV_SCHEMATA					0x00002000L
+#define SQL_ISV_SQL_LANGUAGES				0x00004000L
+#define	SQL_ISV_TABLE_CONSTRAINTS			0x00008000L
+#define SQL_ISV_TABLE_PRIVILEGES			0x00010000L
+#define SQL_ISV_TABLES						0x00020000L
+#define SQL_ISV_TRANSLATIONS				0x00040000L
+#define SQL_ISV_USAGE_PRIVILEGES			0x00080000L
+#define SQL_ISV_VIEW_COLUMN_USAGE			0x00100000L
+#define SQL_ISV_VIEW_TABLE_USAGE			0x00200000L
+#define SQL_ISV_VIEWS						0x00400000L
+
+#define	SQL_AM_NONE			0
+#define	SQL_AM_CONNECTION	1
+#define	SQL_AM_STATEMENT	2
+
+#define SQL_AD_CONSTRAINT_NAME_DEFINITION			0x00000001L
+#define	SQL_AD_ADD_DOMAIN_CONSTRAINT	 			0x00000002L
+#define	SQL_AD_DROP_DOMAIN_CONSTRAINT	 			0x00000004L
+#define	SQL_AD_ADD_DOMAIN_DEFAULT   	 			0x00000008L
+#define	SQL_AD_DROP_DOMAIN_DEFAULT   	 			0x00000010L
+#define SQL_AD_ADD_CONSTRAINT_INITIALLY_DEFERRED	0x00000020L
+#define SQL_AD_ADD_CONSTRAINT_INITIALLY_IMMEDIATE	0x00000040L
+#define SQL_AD_ADD_CONSTRAINT_DEFERRABLE			0x00000080L
+#define SQL_AD_ADD_CONSTRAINT_NON_DEFERRABLE		0x00000100L
+
+#define	SQL_CS_CREATE_SCHEMA				0x00000001L
+#define	SQL_CS_AUTHORIZATION				0x00000002L
+#define	SQL_CS_DEFAULT_CHARACTER_SET		0x00000004L
+
+#define	SQL_CTR_CREATE_TRANSLATION			0x00000001L
+
+#define	SQL_CA_CREATE_ASSERTION					0x00000001L
+#define	SQL_CA_CONSTRAINT_INITIALLY_DEFERRED	0x00000010L
+#define	SQL_CA_CONSTRAINT_INITIALLY_IMMEDIATE	0x00000020L
+#define	SQL_CA_CONSTRAINT_DEFERRABLE			0x00000040L
+#define	SQL_CA_CONSTRAINT_NON_DEFERRABLE		0x00000080L
+
+#define	SQL_CCS_CREATE_CHARACTER_SET		0x00000001L
+#define	SQL_CCS_COLLATE_CLAUSE				0x00000002L
+#define	SQL_CCS_LIMITED_COLLATION			0x00000004L
+
+#define	SQL_CCOL_CREATE_COLLATION			0x00000001L
+
+#define	SQL_CDO_CREATE_DOMAIN					0x00000001L
+#define	SQL_CDO_DEFAULT							0x00000002L
+#define	SQL_CDO_CONSTRAINT						0x00000004L
+#define	SQL_CDO_COLLATION						0x00000008L
+#define SQL_CDO_CONSTRAINT_NAME_DEFINITION		0x00000010L
+#define SQL_CDO_CONSTRAINT_INITIALLY_DEFERRED	0x00000020L
+#define SQL_CDO_CONSTRAINT_INITIALLY_IMMEDIATE	0x00000040L
+#define SQL_CDO_CONSTRAINT_DEFERRABLE			0x00000080L
+#define SQL_CDO_CONSTRAINT_NON_DEFERRABLE		0x00000100L
+
+#define	SQL_CT_CREATE_TABLE						0x00000001L
+#define	SQL_CT_COMMIT_PRESERVE					0x00000002L
+#define	SQL_CT_COMMIT_DELETE					0x00000004L
+#define	SQL_CT_GLOBAL_TEMPORARY					0x00000008L
+#define	SQL_CT_LOCAL_TEMPORARY					0x00000010L
+#define	SQL_CT_CONSTRAINT_INITIALLY_DEFERRED	0x00000020L
+#define	SQL_CT_CONSTRAINT_INITIALLY_IMMEDIATE	0x00000040L
+#define	SQL_CT_CONSTRAINT_DEFERRABLE			0x00000080L
+#define	SQL_CT_CONSTRAINT_NON_DEFERRABLE		0x00000100L
+#define SQL_CT_COLUMN_CONSTRAINT				0x00000200L
+#define SQL_CT_COLUMN_DEFAULT					0x00000400L
+#define SQL_CT_COLUMN_COLLATION					0x00000800L
+#define SQL_CT_TABLE_CONSTRAINT					0x00001000L
+#define SQL_CT_CONSTRAINT_NAME_DEFINITION		0x00002000L
+
+#define SQL_DI_CREATE_INDEX						0x00000001L
+#define SQL_DI_DROP_INDEX						0x00000002L
+
+#define	SQL_DC_DROP_COLLATION					0x00000001L
+
+#define	SQL_DD_DROP_DOMAIN						0x00000001L
+#define	SQL_DD_RESTRICT							0x00000002L
+#define	SQL_DD_CASCADE							0x00000004L
+
+#define	SQL_DS_DROP_SCHEMA						0x00000001L
+#define SQL_DS_RESTRICT							0x00000002L
+#define	SQL_DS_CASCADE							0x00000004L
+
+#define	SQL_DCS_DROP_CHARACTER_SET				0x00000001L
+
+#define	SQL_DA_DROP_ASSERTION					0x00000001L
+
+#define	SQL_DT_DROP_TABLE						0x00000001L
+#define	SQL_DT_RESTRICT							0x00000002L
+#define	SQL_DT_CASCADE							0x00000004L
+
+#define	SQL_DTR_DROP_TRANSLATION				0x00000001L
+
+#define	SQL_DV_DROP_VIEW						0x00000001L
+#define	SQL_DV_RESTRICT							0x00000002L
+#define	SQL_DV_CASCADE							0x00000004L
+
+#define	SQL_IS_INSERT_LITERALS					0x00000001L
+#define SQL_IS_INSERT_SEARCHED					0x00000002L
+#define SQL_IS_SELECT_INTO						0x00000004L
+
+#define SQL_OIC_CORE							1UL
+#define SQL_OIC_LEVEL1							2UL
+#define SQL_OIC_LEVEL2							3UL
+
+#define SQL_SFKD_CASCADE						0x00000001L
+#define SQL_SFKD_NO_ACTION						0x00000002L
+#define SQL_SFKD_SET_DEFAULT					0x00000004L
+#define SQL_SFKD_SET_NULL						0x00000008L
+
+#define SQL_SFKU_CASCADE						0x00000001L
+#define SQL_SFKU_NO_ACTION						0x00000002L
+#define SQL_SFKU_SET_DEFAULT					0x00000004L
+#define SQL_SFKU_SET_NULL						0x00000008L
+
+#define SQL_SG_USAGE_ON_DOMAIN					0x00000001L
+#define SQL_SG_USAGE_ON_CHARACTER_SET			0x00000002L
+#define SQL_SG_USAGE_ON_COLLATION				0x00000004L
+#define SQL_SG_USAGE_ON_TRANSLATION				0x00000008L
+#define SQL_SG_WITH_GRANT_OPTION				0x00000010L
+#define SQL_SG_DELETE_TABLE						0x00000020L
+#define SQL_SG_INSERT_TABLE						0x00000040L
+#define SQL_SG_INSERT_COLUMN					0x00000080L
+#define SQL_SG_REFERENCES_TABLE					0x00000100L
+#define SQL_SG_REFERENCES_COLUMN				0x00000200L
+#define SQL_SG_SELECT_TABLE						0x00000400L
+#define SQL_SG_UPDATE_TABLE						0x00000800L
+#define SQL_SG_UPDATE_COLUMN					0x00001000L
+
+#define SQL_SP_EXISTS							0x00000001L
+#define SQL_SP_ISNOTNULL						0x00000002L
+#define SQL_SP_ISNULL							0x00000004L
+#define SQL_SP_MATCH_FULL						0x00000008L
+#define SQL_SP_MATCH_PARTIAL					0x00000010L
+#define SQL_SP_MATCH_UNIQUE_FULL				0x00000020L
+#define SQL_SP_MATCH_UNIQUE_PARTIAL				0x00000040L
+#define SQL_SP_OVERLAPS							0x00000080L
+#define SQL_SP_UNIQUE							0x00000100L
+#define SQL_SP_LIKE								0x00000200L
+#define SQL_SP_IN								0x00000400L
+#define SQL_SP_BETWEEN							0x00000800L
+#define SQL_SP_COMPARISON						0x00001000L
+#define SQL_SP_QUANTIFIED_COMPARISON			0x00002000L
+
+#define SQL_SRJO_CORRESPONDING_CLAUSE			0x00000001L
+#define SQL_SRJO_CROSS_JOIN						0x00000002L
+#define SQL_SRJO_EXCEPT_JOIN					0x00000004L
+#define SQL_SRJO_FULL_OUTER_JOIN				0x00000008L
+#define SQL_SRJO_INNER_JOIN						0x00000010L
+#define SQL_SRJO_INTERSECT_JOIN					0x00000020L
+#define SQL_SRJO_LEFT_OUTER_JOIN				0x00000040L
+#define SQL_SRJO_NATURAL_JOIN					0x00000080L
+#define SQL_SRJO_RIGHT_OUTER_JOIN				0x00000100L
+#define SQL_SRJO_UNION_JOIN						0x00000200L
+
+#define SQL_SR_USAGE_ON_DOMAIN					0x00000001L
+#define SQL_SR_USAGE_ON_CHARACTER_SET			0x00000002L
+#define SQL_SR_USAGE_ON_COLLATION				0x00000004L
+#define SQL_SR_USAGE_ON_TRANSLATION				0x00000008L
+#define SQL_SR_GRANT_OPTION_FOR					0x00000010L
+#define SQL_SR_CASCADE							0x00000020L
+#define SQL_SR_RESTRICT							0x00000040L
+#define SQL_SR_DELETE_TABLE						0x00000080L
+#define SQL_SR_INSERT_TABLE						0x00000100L
+#define SQL_SR_INSERT_COLUMN					0x00000200L
+#define SQL_SR_REFERENCES_TABLE					0x00000400L
+#define SQL_SR_REFERENCES_COLUMN				0x00000800L
+#define SQL_SR_SELECT_TABLE						0x00001000L
+#define SQL_SR_UPDATE_TABLE						0x00002000L
+#define SQL_SR_UPDATE_COLUMN					0x00004000L
+
+#define SQL_SRVC_VALUE_EXPRESSION				0x00000001L
+#define SQL_SRVC_NULL							0x00000002L
+#define SQL_SRVC_DEFAULT						0x00000004L
+#define SQL_SRVC_ROW_SUBQUERY					0x00000008L
+
+#define SQL_SVE_CASE							0x00000001L
+#define SQL_SVE_CAST							0x00000002L
+#define SQL_SVE_COALESCE						0x00000004L
+#define SQL_SVE_NULLIF							0x00000008L
+
+#define SQL_SCC_XOPEN_CLI_VERSION1				0x00000001L
+#define SQL_SCC_ISO92_CLI						0x00000002L
+
+#define SQL_US_UNION							SQL_U_UNION
+#define SQL_US_UNION_ALL						SQL_U_UNION_ALL
+
+#endif
+
+#define SQL_DTC_ENLIST_EXPENSIVE				0x00000001L
+#define SQL_DTC_UNENLIST_EXPENSIVE				0x00000002L
+
+#if (ODBCVER >= 0x0300)
+#define SQL_FETCH_FIRST_USER				31
+#define SQL_FETCH_FIRST_SYSTEM				32
+#endif
+
+#define SQL_ENTIRE_ROWSET            0
+
+#define SQL_POSITION                 0
+#define SQL_REFRESH                  1
+#define SQL_UPDATE                   2
+#define SQL_DELETE                   3
+
+#define SQL_ADD                      4
+#define	SQL_SETPOS_MAX_OPTION_VALUE			SQL_ADD
+#if (ODBCVER >= 0x0300)
+#define SQL_UPDATE_BY_BOOKMARK		 5
+#define SQL_DELETE_BY_BOOKMARK		 6
+#define	SQL_FETCH_BY_BOOKMARK		 7
+
+#endif
+
+#define SQL_LOCK_NO_CHANGE           0
+#define SQL_LOCK_EXCLUSIVE           1
+#define SQL_LOCK_UNLOCK              2
+
+#define	SQL_SETPOS_MAX_LOCK_VALUE		SQL_LOCK_UNLOCK
+
+#define SQL_POSITION_TO(hstmt,irow) SQLSetPos(hstmt,irow,SQL_POSITION,SQL_LOCK_NO_CHANGE)
+#define SQL_LOCK_RECORD(hstmt,irow,fLock) SQLSetPos(hstmt,irow,SQL_POSITION,fLock)
+#define SQL_REFRESH_RECORD(hstmt,irow,fLock) SQLSetPos(hstmt,irow,SQL_REFRESH,fLock)
+#define SQL_UPDATE_RECORD(hstmt,irow) SQLSetPos(hstmt,irow,SQL_UPDATE,SQL_LOCK_NO_CHANGE)
+#define SQL_DELETE_RECORD(hstmt,irow) SQLSetPos(hstmt,irow,SQL_DELETE,SQL_LOCK_NO_CHANGE)
+#define SQL_ADD_RECORD(hstmt,irow) SQLSetPos(hstmt,irow,SQL_ADD,SQL_LOCK_NO_CHANGE)
+
+#define SQL_BEST_ROWID                  1
+#define SQL_ROWVER                      2
+
+#define SQL_PC_NOT_PSEUDO               1
+
+#define SQL_QUICK                       0
+#define SQL_ENSURE                      1
+
+#define SQL_TABLE_STAT                  0
+
+#if (ODBCVER >= 0x0300)
+#define SQL_ALL_CATALOGS				"%"
+#define SQL_ALL_SCHEMAS					"%"
+#define SQL_ALL_TABLE_TYPES				"%"
+#endif  /* ODBCVER >= 0x0300 */
+
+#define SQL_DRIVER_NOPROMPT             0
+#define SQL_DRIVER_COMPLETE             1
+#define SQL_DRIVER_PROMPT               2
+#define SQL_DRIVER_COMPLETE_REQUIRED    3
+
+SQLRETURN WINAPI  SQLDriverConnect(
+    SQLHDBC            hdbc,
+    SQLHWND            hwnd,
+    SQLCHAR 		  *szConnStrIn,
+    SQLSMALLINT        cbConnStrIn,
+    SQLCHAR           *szConnStrOut,
+    SQLSMALLINT        cbConnStrOutMax,
+    SQLSMALLINT 	  *pcbConnStrOut,
+    SQLUSMALLINT       fDriverCompletion);
+
+#define SQL_FETCH_BOOKMARK               8
+
+#define SQL_ROW_SUCCESS                  0
+#define SQL_ROW_DELETED                  1
+#define SQL_ROW_UPDATED                  2
+#define SQL_ROW_NOROW                    3
+#define SQL_ROW_ADDED                    4
+#define SQL_ROW_ERROR                    5
+#if (ODBCVER >= 0x0300)
+#define SQL_ROW_SUCCESS_WITH_INFO		 6
+#define SQL_ROW_PROCEED					 0
+#define SQL_ROW_IGNORE					 1
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_PARAM_SUCCESS				0
+#define SQL_PARAM_SUCCESS_WITH_INFO		6
+#define SQL_PARAM_ERROR					5
+#define SQL_PARAM_UNUSED				7
+#define SQL_PARAM_DIAG_UNAVAILABLE		1
+
+#define SQL_PARAM_PROCEED				0
+#define SQL_PARAM_IGNORE				1
+#endif
+
+#define SQL_CASCADE                      0
+#define SQL_RESTRICT                     1
+#define SQL_SET_NULL                     2
+#if (ODBCVER >= 0x0250)
+#define SQL_NO_ACTION			 3
+#define SQL_SET_DEFAULT			 4
+#endif
+
+#if (ODBCVER >= 0x0300)
+
+#define SQL_INITIALLY_DEFERRED			5
+#define SQL_INITIALLY_IMMEDIATE			6
+#define SQL_NOT_DEFERRABLE			7
+
+#endif
+
+#define SQL_PARAM_TYPE_UNKNOWN           0
+#define SQL_PARAM_INPUT                  1
+#define SQL_PARAM_INPUT_OUTPUT           2
+#define SQL_RESULT_COL                   3
+#define SQL_PARAM_OUTPUT                 4
+#define SQL_RETURN_VALUE                 5
+
+#define SQL_PT_UNKNOWN                   0
+#define SQL_PT_PROCEDURE                 1
+#define SQL_PT_FUNCTION                  2
+
+#define SQL_ODBC_KEYWORDS "ABSOLUTE,ACTION,ADA,ADD,ALL,ALLOCATE,ALTER,AND,ANY,ARE,AS,"
+
+SQLRETURN WINAPI  SQLBrowseConnect(
+    SQLHDBC            hdbc,
+    SQLCHAR 		  *szConnStrIn,
+    SQLSMALLINT        cbConnStrIn,
+    SQLCHAR 		  *szConnStrOut,
+    SQLSMALLINT        cbConnStrOutMax,
+    SQLSMALLINT       *pcbConnStrOut);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI	SQLBulkOperations(
+	SQLHSTMT			StatementHandle,
+	SQLSMALLINT			Operation);
+#endif
+
+SQLRETURN WINAPI  SQLColAttributes(
+    SQLHSTMT           hstmt,
+    SQLUSMALLINT       icol,
+    SQLUSMALLINT       fDescType,
+    SQLPOINTER         rgbDesc,
+    SQLSMALLINT        cbDescMax,
+    SQLSMALLINT 	  *pcbDesc,
+    SQLINTEGER 		  *pfDesc);
+
+SQLRETURN WINAPI  SQLColumnPrivileges(
+    SQLHSTMT           hstmt,
+    SQLCHAR 		  *szCatalogName,
+    SQLSMALLINT        cbCatalogName,
+    SQLCHAR 		  *szSchemaName,
+    SQLSMALLINT        cbSchemaName,
+    SQLCHAR 		  *szTableName,
+    SQLSMALLINT        cbTableName,
+    SQLCHAR 		  *szColumnName,
+    SQLSMALLINT        cbColumnName);
+
+SQLRETURN WINAPI  SQLDescribeParam(
+    SQLHSTMT           hstmt,
+    SQLUSMALLINT       ipar,
+    SQLSMALLINT 	  *pfSqlType,
+    SQLUINTEGER 	  *pcbParamDef,
+    SQLSMALLINT 	  *pibScale,
+    SQLSMALLINT 	  *pfNullable);
+
+SQLRETURN WINAPI  SQLExtendedFetch(
+    SQLHSTMT           hstmt,
+    SQLUSMALLINT       fFetchType,
+    SQLINTEGER         irow,
+    SQLUINTEGER 	  *pcrow,
+    SQLUSMALLINT 	  *rgfRowStatus);
+
+SQLRETURN WINAPI  SQLForeignKeys(
+    SQLHSTMT           hstmt,
+    SQLCHAR 		  *szPkCatalogName,
+    SQLSMALLINT        cbPkCatalogName,
+    SQLCHAR 		  *szPkSchemaName,
+    SQLSMALLINT        cbPkSchemaName,
+    SQLCHAR 		  *szPkTableName,
+    SQLSMALLINT        cbPkTableName,
+    SQLCHAR 		  *szFkCatalogName,
+    SQLSMALLINT        cbFkCatalogName,
+    SQLCHAR 		  *szFkSchemaName,
+    SQLSMALLINT        cbFkSchemaName,
+    SQLCHAR 		  *szFkTableName,
+    SQLSMALLINT        cbFkTableName);
+
+SQLRETURN WINAPI  SQLMoreResults(
+    SQLHSTMT           hstmt);
+
+SQLRETURN WINAPI  SQLNativeSql(
+    SQLHDBC            hdbc,
+    SQLCHAR 		  *szSqlStrIn,
+    SQLINTEGER         cbSqlStrIn,
+    SQLCHAR 		  *szSqlStr,
+    SQLINTEGER         cbSqlStrMax,
+    SQLINTEGER 		  *pcbSqlStr);
+
+SQLRETURN WINAPI  SQLNumParams(
+    SQLHSTMT           hstmt,
+    SQLSMALLINT 	  *pcpar);
+
+SQLRETURN WINAPI  SQLParamOptions(
+    SQLHSTMT           hstmt,
+    SQLUINTEGER        crow,
+    SQLUINTEGER 	  *pirow);
+
+SQLRETURN WINAPI  SQLPrimaryKeys(
+    SQLHSTMT           hstmt,
+    SQLCHAR 		  *szCatalogName,
+    SQLSMALLINT        cbCatalogName,
+    SQLCHAR 		  *szSchemaName,
+    SQLSMALLINT        cbSchemaName,
+    SQLCHAR 		  *szTableName,
+    SQLSMALLINT        cbTableName);
+
+SQLRETURN WINAPI  SQLProcedureColumns(
+    SQLHSTMT           hstmt,
+    SQLCHAR 		  *szCatalogName,
+    SQLSMALLINT        cbCatalogName,
+    SQLCHAR 		  *szSchemaName,
+    SQLSMALLINT        cbSchemaName,
+    SQLCHAR 		  *szProcName,
+    SQLSMALLINT        cbProcName,
+    SQLCHAR 		  *szColumnName,
+    SQLSMALLINT        cbColumnName);
+
+SQLRETURN WINAPI  SQLProcedures(
+    SQLHSTMT           hstmt,
+    SQLCHAR 		  *szCatalogName,
+    SQLSMALLINT        cbCatalogName,
+    SQLCHAR 		  *szSchemaName,
+    SQLSMALLINT        cbSchemaName,
+    SQLCHAR 		  *szProcName,
+    SQLSMALLINT        cbProcName);
+
+SQLRETURN WINAPI  SQLSetPos(
+    SQLHSTMT           hstmt,
+    SQLUSMALLINT       irow,
+    SQLUSMALLINT       fOption,
+    SQLUSMALLINT       fLock);
+
+SQLRETURN WINAPI  SQLTablePrivileges(
+    SQLHSTMT           hstmt,
+    SQLCHAR 		  *szCatalogName,
+    SQLSMALLINT        cbCatalogName,
+    SQLCHAR 		  *szSchemaName,
+    SQLSMALLINT        cbSchemaName,
+    SQLCHAR 		  *szTableName,
+    SQLSMALLINT        cbTableName);
+
+SQLRETURN WINAPI  SQLDrivers(
+    SQLHENV            henv,
+    SQLUSMALLINT       fDirection,
+    SQLCHAR 		  *szDriverDesc,
+    SQLSMALLINT        cbDriverDescMax,
+    SQLSMALLINT 	  *pcbDriverDesc,
+    SQLCHAR 		  *szDriverAttributes,
+    SQLSMALLINT        cbDrvrAttrMax,
+    SQLSMALLINT 	  *pcbDrvrAttr);
+
+SQLRETURN WINAPI  SQLBindParameter(
+    SQLHSTMT           hstmt,
+    SQLUSMALLINT       ipar,
+    SQLSMALLINT        fParamType,
+    SQLSMALLINT        fCType,
+    SQLSMALLINT        fSqlType,
+    SQLUINTEGER        cbColDef,
+    SQLSMALLINT        ibScale,
+    SQLPOINTER         rgbValue,
+    SQLINTEGER         cbValueMax,
+    SQLINTEGER 		  *pcbValue);
+
+#ifdef ODBC_STD
+#define SQLAllocHandle  SQLAllocHandleStd
+#define SQLAllocEnv(phenv)  SQLAllocHandleStd(SQL_HANDLE_ENV, SQL_NULL_HANDLE, phenv)
+
+#define SQL_YEAR						SQL_CODE_YEAR
+#define SQL_MONTH						SQL_CODE_MONTH
+#define SQL_DAY							SQL_CODE_DAY
+#define SQL_HOUR						SQL_CODE_HOUR
+#define SQL_MINUTE						SQL_CODE_MINUTE
+#define SQL_SECOND						SQL_CODE_SECOND
+#define SQL_YEAR_TO_MONTH				SQL_CODE_YEAR_TO_MONTH
+#define SQL_DAY_TO_HOUR					SQL_CODE_DAY_TO_HOUR
+#define SQL_DAY_TO_MINUTE				SQL_CODE_DAY_TO_MINUTE
+#define SQL_DAY_TO_SECOND				SQL_CODE_DAY_TO_SECOND
+#define SQL_HOUR_TO_MINUTE				SQL_CODE_HOUR_TO_MINUTE
+#define SQL_HOUR_TO_SECOND				SQL_CODE_HOUR_TO_SECOND
+#define SQL_MINUTE_TO_SECOND			SQL_CODE_MINUTE_TO_SECOND
+#endif
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI  SQLAllocHandleStd(
+	SQLSMALLINT		fHandleType,
+	SQLHANDLE		hInput,
+	SQLHANDLE	   *phOutput);
+#endif
+
+#define SQL_DATABASE_NAME               16
+#define SQL_FD_FETCH_PREV               SQL_FD_FETCH_PRIOR
+#define SQL_FETCH_PREV                  SQL_FETCH_PRIOR
+#define SQL_CONCUR_TIMESTAMP            SQL_CONCUR_ROWVER
+#define SQL_SCCO_OPT_TIMESTAMP          SQL_SCCO_OPT_ROWVER
+#define SQL_CC_DELETE                   SQL_CB_DELETE
+#define SQL_CR_DELETE                   SQL_CB_DELETE
+#define SQL_CC_CLOSE                    SQL_CB_CLOSE
+#define SQL_CR_CLOSE                    SQL_CB_CLOSE
+#define SQL_CC_PRESERVE                 SQL_CB_PRESERVE
+#define SQL_CR_PRESERVE                 SQL_CB_PRESERVE
+#define SQL_SCROLL_FORWARD_ONLY         0L
+#define SQL_SCROLL_KEYSET_DRIVEN        (-1L)
+#define SQL_SCROLL_DYNAMIC              (-2L)
+#define SQL_SCROLL_STATIC               (-3L)
+
+SQLRETURN WINAPI  SQLSetScrollOptions(
+    SQLHSTMT           hstmt,
+    SQLUSMALLINT       fConcurrency,
+    SQLINTEGER         crowKeyset,
+    SQLUSMALLINT       crowRowset);
+
+#define		TRACE_VERSION	1000
+
+RETCODE	 TraceOpenLogFile(LPWSTR,LPWSTR,DWORD);
+RETCODE	 TraceCloseLogFile(void);
+VOID	 TraceReturn(RETCODE,RETCODE);
+DWORD	 TraceVersion(void);
+
+/*#define TRACE_ON		0x00000001L*/
+#define TRACE_VS_EVENT_ON	0x00000002L
+
+RETCODE	TraceVSControl(DWORD);
+
+#define ODBC_VS_FLAG_UNICODE_ARG	0x00000001L
+#define	ODBC_VS_FLAG_UNICODE_COR	0x00000002L
+#define ODBC_VS_FLAG_RETCODE		0x00000004L
+#define ODBC_VS_FLAG_STOP		0x00000008L
+
+typedef struct tagODBC_VS_ARGS {
+	const GUID	*pguidEvent;
+	DWORD	dwFlags;
+	union {
+		WCHAR	*wszArg;
+		CHAR	*szArg;
+	} DUMMYUNIONNAME1;
+	union {
+		WCHAR	*wszCorrelation;
+		CHAR	*szCorrelation;
+	} DUMMYUNIONNAME2;
+	RETCODE	RetCode;
+} ODBC_VS_ARGS, *PODBC_VS_ARGS;
+
+VOID	FireVSDebugEvent(PODBC_VS_ARGS);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/sqltypes.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/sqltypes.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/sqltypes.h	(revision 16410)
@@ -0,0 +1,242 @@
+/*
+ * Copyright (C) 1999 Xiang Li
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __SQLTYPES_H
+#define __SQLTYPES_H
+
+#ifndef ODBCVER
+#define ODBCVER	0x0351
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef unsigned char   SQLCHAR;
+#ifdef WINE_UNICODE_NATIVE
+typedef wchar_t         SQLWCHAR;
+#else
+typedef unsigned short  SQLWCHAR;
+#endif
+#ifndef UNICODE
+typedef SQLCHAR         SQLTCHAR;
+#else
+typedef SQLWCHAR        SQLTCHAR;
+#endif
+
+#if (ODBCVER >= 0x0300)
+typedef unsigned char   SQLDATE;
+typedef unsigned char   SQLDECIMAL;
+typedef double          SQLDOUBLE;
+typedef double          SQLFLOAT;
+#endif
+
+typedef long            SQLINTEGER;
+
+#if (ODBCVER >= 0x0300)
+typedef unsigned char   SQLNUMERIC;
+#endif
+
+typedef void *          SQLPOINTER;
+
+#if (ODBCVER >= 0x0300)
+typedef float           SQLREAL;
+#endif
+
+typedef signed short int   SQLSMALLINT;
+typedef unsigned short  SQLUSMALLINT;
+
+#if (ODBCVER >= 0x0300)
+typedef unsigned char   SQLTIME;
+typedef unsigned char   SQLTIMESTAMP;
+typedef unsigned char   SQLVARCHAR;
+#endif
+
+typedef SQLSMALLINT     SQLRETURN;
+
+/* typedef void * 			SQLHANDLE; */
+
+typedef SQLINTEGER		SQLHANDLE;
+#if (ODBCVER >= 0x0300)
+
+typedef SQLHANDLE               SQLHENV;
+typedef SQLHANDLE               SQLHDBC;
+typedef SQLHANDLE               SQLHSTMT;
+typedef SQLHANDLE               SQLHDESC;
+
+#else
+typedef SQLINTEGER              SQLHENV;
+typedef SQLINTEGER              SQLHDBC;
+typedef SQLINTEGER              SQLHSTMT;
+#endif
+
+typedef signed char             SCHAR;
+typedef SCHAR                   SQLSCHAR;
+typedef long int                SDWORD;
+typedef signed short int        SWORD;
+typedef unsigned long int       UDWORD;
+typedef unsigned short int      UWORD;
+typedef UDWORD                  SQLUINTEGER;
+typedef signed long             SLONG;
+typedef signed short            SSHORT;
+typedef double                  SDOUBLE;
+typedef double            		LDOUBLE;
+typedef float                   SFLOAT;
+typedef void*              		PTR;
+typedef signed short            RETCODE;
+typedef void*                   SQLHWND;
+
+typedef SQLHANDLE          		HENV;
+typedef SQLHANDLE          		HDBC;
+typedef SQLHANDLE          		HSTMT;
+
+#ifndef	__SQLDATE
+#define	__SQLDATE
+typedef struct tagDATE_STRUCT
+{
+        SQLSMALLINT    year;
+        SQLUSMALLINT   month;
+        SQLUSMALLINT   day;
+} DATE_STRUCT;
+
+#if (ODBCVER >= 0x0300)
+typedef DATE_STRUCT	SQL_DATE_STRUCT;
+#endif
+
+typedef struct tagTIME_STRUCT
+{
+        SQLUSMALLINT   hour;
+        SQLUSMALLINT   minute;
+        SQLUSMALLINT   second;
+} TIME_STRUCT;
+
+#if (ODBCVER >= 0x0300)
+typedef TIME_STRUCT	SQL_TIME_STRUCT;
+#endif
+
+typedef struct tagTIMESTAMP_STRUCT
+{
+        SQLSMALLINT    year;
+        SQLUSMALLINT   month;
+        SQLUSMALLINT   day;
+        SQLUSMALLINT   hour;
+        SQLUSMALLINT   minute;
+        SQLUSMALLINT   second;
+        SQLUINTEGER    fraction;
+} TIMESTAMP_STRUCT;
+
+#if (ODBCVER >= 0x0300)
+typedef TIMESTAMP_STRUCT	SQL_TIMESTAMP_STRUCT;
+#endif
+
+
+#if (ODBCVER >= 0x0300)
+typedef enum
+{
+	SQL_IS_YEAR						= 1,
+	SQL_IS_MONTH					= 2,
+	SQL_IS_DAY						= 3,
+	SQL_IS_HOUR						= 4,
+	SQL_IS_MINUTE					= 5,
+	SQL_IS_SECOND					= 6,
+	SQL_IS_YEAR_TO_MONTH			= 7,
+	SQL_IS_DAY_TO_HOUR				= 8,
+	SQL_IS_DAY_TO_MINUTE			= 9,
+	SQL_IS_DAY_TO_SECOND			= 10,
+	SQL_IS_HOUR_TO_MINUTE			= 11,
+	SQL_IS_HOUR_TO_SECOND			= 12,
+	SQL_IS_MINUTE_TO_SECOND			= 13
+} SQLINTERVAL;
+
+#endif
+
+#if (ODBCVER >= 0x0300)
+typedef struct tagSQL_YEAR_MONTH
+{
+		SQLUINTEGER		year;
+		SQLUINTEGER		month;
+} SQL_YEAR_MONTH_STRUCT;
+
+typedef struct tagSQL_DAY_SECOND
+{
+		SQLUINTEGER		day;
+		SQLUINTEGER		hour;
+		SQLUINTEGER		minute;
+		SQLUINTEGER		second;
+		SQLUINTEGER		fraction;
+} SQL_DAY_SECOND_STRUCT;
+
+typedef struct tagSQL_INTERVAL_STRUCT
+{
+	SQLINTERVAL		interval_type;
+	SQLSMALLINT		interval_sign;
+	union {
+		SQL_YEAR_MONTH_STRUCT		year_month;
+		SQL_DAY_SECOND_STRUCT		day_second;
+	} intval;
+
+} SQL_INTERVAL_STRUCT;
+
+#endif
+
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define ODBCINT64	long
+#ifdef ODBCINT64
+typedef ODBCINT64	SQLBIGINT;
+typedef unsigned ODBCINT64	SQLUBIGINT;
+#endif
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_MAX_NUMERIC_LEN		16
+typedef struct tagSQL_NUMERIC_STRUCT
+{
+	SQLCHAR		precision;
+	SQLSCHAR	scale;
+	SQLCHAR		sign;	/* 1=pos 0=neg */
+	SQLCHAR		val[SQL_MAX_NUMERIC_LEN];
+} SQL_NUMERIC_STRUCT;
+#endif
+
+#if (ODBCVER >= 0x0350)
+#ifdef GUID_DEFINED
+typedef GUID	SQLGUID;
+#else
+typedef struct  tagSQLGUID
+{
+    DWORD Data1;
+    WORD Data2;
+    WORD Data3;
+    BYTE Data4[ 8 ];
+} SQLGUID;
+#endif
+#endif
+
+
+typedef unsigned long int       BOOKMARK;
+
+#define SQL_WCHAR             (-8)
+#define SQL_C_WCHAR            SQL_WCHAR
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/srrestoreptapi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/srrestoreptapi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/srrestoreptapi.h	(revision 16410)
@@ -0,0 +1,58 @@
+/*
+ * System Restore definitions
+ *
+ * Copyright 2008 Paul Vriens
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_SRRESTOREPTAPI_H
+#define __WINE_SRRESTOREPTAPI_H
+
+/* Event types */
+#define BEGIN_NESTED_SYSTEM_CHANGE 102
+#define END_NESTED_SYSTEM_CHANGE   103
+
+/* Restore point types */
+#define APPLICATION_INSTALL          0
+
+#define MAX_DESC                    64
+
+#pragma pack(1)
+
+typedef struct _RESTOREPTINFOA {
+    DWORD dwEventType;
+    DWORD dwRestorePtType;
+    INT64 llSequenceNumber;
+    CHAR  szDescription[MAX_DESC];
+} RESTOREPOINTINFOA, *PRESTOREPOINTINFOA;
+
+typedef struct _SMGRSTATUS {
+    DWORD nStatus;
+    INT64 llSequenceNumber;
+} STATEMGRSTATUS, *PSTATEMGRSTATUS;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+BOOL WINAPI SRSetRestorePointA(PRESTOREPOINTINFOA, PSTATEMGRSTATUS);
+DWORD WINAPI SRRemoveRestorePoint(DWORD);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !defined(__WINE_SRRESTOREPTAPI_H) */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/sspi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/sspi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/sspi.h	(revision 16410)
@@ -0,0 +1,825 @@
+/*
+ * Copyright (C) 2004 Juan Lang
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __WINE_SSPI_H__
+#define __WINE_SSPI_H__
+
+/* FIXME: #include <sdkddkver.h> */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SEC_ENTRY __stdcall
+
+typedef WCHAR SEC_WCHAR;
+typedef CHAR  SEC_CHAR;
+
+#ifndef __SECSTATUS_DEFINED__
+#define __SECSTATUS_DEFINED__
+typedef LONG SECURITY_STATUS;
+#endif
+
+#ifdef UNICODE
+typedef SEC_WCHAR * SECURITY_PSTR;
+typedef CONST SEC_WCHAR *  SECURITY_PCSTR;
+#else
+typedef SEC_CHAR * SECURITY_PSTR;
+typedef CONST SEC_CHAR *  SECURITY_PCSTR;
+#endif
+
+#ifndef __SECHANDLE_DEFINED__
+#define __SECHANDLE_DEFINED__
+typedef struct _SecHandle
+{
+    ULONG_PTR dwLower;
+    ULONG_PTR dwUpper;
+} SecHandle, *PSecHandle;
+#endif
+
+#define SecInvalidateHandle(x) do { \
+ ((PSecHandle)(x))->dwLower = ((ULONG_PTR)((INT_PTR)-1)); \
+ ((PSecHandle)(x))->dwUpper = ((ULONG_PTR)((INT_PTR)-1)); \
+ } while (0)
+
+#define SecIsValidHandle(x) \
+ ((((PSecHandle)(x))->dwLower != ((ULONG_PTR)(INT_PTR)-1)) && \
+ (((PSecHandle)(x))->dwUpper != ((ULONG_PTR)(INT_PTR)-1)))
+
+typedef SecHandle CredHandle;
+typedef PSecHandle PCredHandle;
+
+#ifndef __WINE_CTXTHANDLE_DEFINED__
+#define __WINE_CTXTHANDLE_DEFINED__
+typedef SecHandle CtxtHandle;
+typedef PSecHandle PCtxtHandle;
+#endif
+
+typedef struct _SECURITY_INTEGER
+{
+    unsigned long LowPart;
+    long HighPart;
+} SECURITY_INTEGER, *PSECURITY_INTEGER;
+typedef SECURITY_INTEGER TimeStamp, *PTimeStamp;
+
+#ifndef __UNICODE_STRING_DEFINED__
+#define __UNICODE_STRING_DEFINED__
+typedef struct _UNICODE_STRING {
+  USHORT Length;        /* bytes */
+  USHORT MaximumLength; /* bytes */
+  PWSTR  Buffer;
+} UNICODE_STRING, *PUNICODE_STRING;
+#endif
+
+typedef UNICODE_STRING SECURITY_STRING, *PSECURITY_STRING;
+
+typedef struct _SecPkgInfoA
+{
+    unsigned long  fCapabilities;
+    unsigned short wVersion;
+    unsigned short wRPCID;
+    unsigned long  cbMaxToken;
+    SEC_CHAR      *Name;
+    SEC_CHAR      *Comment;
+} SecPkgInfoA, *PSecPkgInfoA;
+
+typedef struct _SecPkgInfoW
+{
+    unsigned long  fCapabilities;
+    unsigned short wVersion;
+    unsigned short wRPCID;
+    unsigned long  cbMaxToken;
+    SEC_WCHAR     *Name;
+    SEC_WCHAR     *Comment;
+} SecPkgInfoW, *PSecPkgInfoW;
+
+#define SecPkgInfo WINELIB_NAME_AW(SecPkgInfo)
+#define PSecPkgInfo WINELIB_NAME_AW(PSecPkgInfo)
+
+/* fCapabilities field of SecPkgInfo */
+#define SECPKG_FLAG_INTEGRITY              0x00000001
+#define SECPKG_FLAG_PRIVACY                0x00000002
+#define SECPKG_FLAG_TOKEN_ONLY             0x00000004
+#define SECPKG_FLAG_DATAGRAM               0x00000008
+#define SECPKG_FLAG_CONNECTION             0x00000010
+#define SECPKG_FLAG_MULTI_REQUIRED         0x00000020
+#define SECPKG_FLAG_CLIENT_ONLY            0x00000040
+#define SECPKG_FLAG_EXTENDED_ERROR         0x00000080
+#define SECPKG_FLAG_IMPERSONATION          0x00000100
+#define SECPKG_FLAG_ACCEPT_WIN32_NAME      0x00000200
+#define SECPKG_FLAG_STREAM                 0x00000400
+#define SECPKG_FLAG_NEGOTIABLE             0x00000800
+#define SECPKG_FLAG_GSS_COMPATIBLE         0x00001000
+#define SECPKG_FLAG_LOGON                  0x00002000
+#define SECPKG_FLAG_ASCII_BUFFERS          0x00004000
+#define SECPKG_FLAG_FRAGMENT               0x00008000
+#define SECPKG_FLAG_MUTUAL_AUTH            0x00010000
+#define SECPKG_FLAG_DELEGATION             0x00020000
+#define SECPKG_FLAG_READONLY_WITH_CHECKSUM 0x00040000
+
+typedef struct _SecBuffer
+{
+    unsigned long cbBuffer;
+    unsigned long BufferType;
+    void         *pvBuffer;
+} SecBuffer, *PSecBuffer;
+
+/* values for BufferType */
+#define SECBUFFER_EMPTY               0
+#define SECBUFFER_DATA                1
+#define SECBUFFER_TOKEN               2
+#define SECBUFFER_PKG_PARAMS          3
+#define SECBUFFER_MISSING             4
+#define SECBUFFER_EXTRA               5
+#define SECBUFFER_STREAM_TRAILER      6
+#define SECBUFFER_STREAM_HEADER       7
+#define SECBUFFER_NEGOTIATION_INFO    8
+#define SECBUFFER_PADDING             9
+#define SECBUFFER_STREAM             10
+#define SECBUFFER_MECHLIST           11
+#define SECBUFFER_MECHLIST_SIGNATURE 12
+#define SECBUFFER_TARGET             13
+#define SECBUFFER_CHANNEL_BINDINGS   14
+
+#define SECBUFFER_ATTRMASK               0xf0000000
+#define SECBUFFER_READONLY               0x80000000
+#define SECBUFFER_READONLY_WITH_CHECKSUM 0x10000000
+#define SECBUFFER_RESERVED               0x60000000
+
+typedef struct _SecBufferDesc
+{
+    unsigned long ulVersion;
+    unsigned long cBuffers;
+    PSecBuffer    pBuffers;
+} SecBufferDesc, *PSecBufferDesc;
+
+/* values for ulVersion */
+#define SECBUFFER_VERSION 0
+
+typedef void (SEC_ENTRY *SEC_GET_KEY_FN)(void *Arg, void *Principal,
+ unsigned long KeyVer, void **Key, SECURITY_STATUS *Status);
+
+SECURITY_STATUS SEC_ENTRY EnumerateSecurityPackagesA(PULONG pcPackages,
+ PSecPkgInfoA *ppPackageInfo);
+SECURITY_STATUS SEC_ENTRY EnumerateSecurityPackagesW(PULONG pcPackages,
+ PSecPkgInfoW *ppPackageInfo);
+#define EnumerateSecurityPackages WINELIB_NAME_AW(EnumerateSecurityPackages)
+
+typedef SECURITY_STATUS (SEC_ENTRY *ENUMERATE_SECURITY_PACKAGES_FN_A)(PULONG,
+ PSecPkgInfoA *);
+typedef SECURITY_STATUS (SEC_ENTRY *ENUMERATE_SECURITY_PACKAGES_FN_W)(PULONG,
+ PSecPkgInfoW *);
+#define ENUMERATE_SECURITY_PACKAGES_FN WINELIB_NAME_AW(ENUMERATE_SECURITY_PACKAGES_FN_)
+
+SECURITY_STATUS SEC_ENTRY QueryCredentialsAttributesA(
+ PCredHandle phCredential, ULONG ulAttribute, void *pBuffer);
+SECURITY_STATUS SEC_ENTRY QueryCredentialsAttributesW(
+ PCredHandle phCredential, ULONG ulAttribute, void *pBuffer);
+#define QueryCredentialsAttributes WINELIB_NAME_AW(QueryCredentialsAttributes)
+
+typedef SECURITY_STATUS (SEC_ENTRY *QUERY_CREDENTIALS_ATTRIBUTES_FN_A)
+ (PCredHandle, ULONG, PVOID);
+typedef SECURITY_STATUS (SEC_ENTRY *QUERY_CREDENTIALS_ATTRIBUTES_FN_W)
+ (PCredHandle, ULONG, PVOID);
+#define QUERY_CREDENTIALS_ATTRIBUTES_FN WINELIB_NAME_AW(QUERY_CREDENTIALS_ATTRIBUTES_FN_)
+
+/* values for QueryCredentialsAttributes ulAttribute */
+#define SECPKG_CRED_ATTR_NAMES 1
+
+/* types for QueryCredentialsAttributes */
+typedef struct _SecPkgCredentials_NamesA
+{
+    SEC_CHAR *sUserName;
+} SecPkgCredentials_NamesA, *PSecPkgCredentials_NamesA;
+
+typedef struct _SecPkgCredentials_NamesW
+{
+    SEC_WCHAR *sUserName;
+} SecPkgCredentials_NamesW, *PSecPkgCredentials_NamesW;
+
+#define SecPkgCredentials_Names WINELIB_NAME_AW(SecPkgCredentials_Names)
+
+SECURITY_STATUS SEC_ENTRY AcquireCredentialsHandleA(
+ SEC_CHAR *pszPrincipal, SEC_CHAR *pszPackage, ULONG fCredentialsUse,
+ PLUID pvLogonID, PVOID pAuthData, SEC_GET_KEY_FN pGetKeyFn,
+ PVOID pvGetKeyArgument, PCredHandle phCredential, PTimeStamp ptsExpiry);
+SECURITY_STATUS SEC_ENTRY AcquireCredentialsHandleW(
+ SEC_WCHAR *pszPrincipal, SEC_WCHAR *pszPackage, ULONG fCredentialsUse,
+ PLUID pvLogonID, PVOID pAuthData, SEC_GET_KEY_FN pGetKeyFn,
+ PVOID pvGetKeyArgument, PCredHandle phCredential, PTimeStamp ptsExpiry);
+#define AcquireCredentialsHandle WINELIB_NAME_AW(AcquireCredentialsHandle)
+
+/* flags for fCredentialsUse */
+#define SECPKG_CRED_INBOUND  0x00000001
+#define SECPKG_CRED_OUTBOUND 0x00000002
+#define SECPKG_CRED_BOTH     (SECPKG_CRED_INBOUND | SECPKG_CRED_OUTBOUND)
+#define SECPKG_CRED_DEFAULT  0x00000004
+#define SECPKG_CRED_RESERVED 0xf0000000
+
+typedef SECURITY_STATUS (SEC_ENTRY *ACQUIRE_CREDENTIALS_HANDLE_FN_A)(
+ SEC_CHAR *, SEC_CHAR *, ULONG, PLUID, PVOID, SEC_GET_KEY_FN, PVOID,
+ PCredHandle, PTimeStamp);
+typedef SECURITY_STATUS (SEC_ENTRY *ACQUIRE_CREDENTIALS_HANDLE_FN_W)(
+ SEC_WCHAR *, SEC_WCHAR *, ULONG, PLUID, PVOID, SEC_GET_KEY_FN, PVOID,
+ PCredHandle, PTimeStamp);
+#define ACQUIRE_CREDENTIALS_HANDLE_FN WINELIB_NAME_AW(ACQUIRE_CREDENTIALS_HANDLE_FN_)
+
+SECURITY_STATUS SEC_ENTRY FreeContextBuffer(PVOID pv);
+
+typedef SECURITY_STATUS (SEC_ENTRY *FREE_CONTEXT_BUFFER_FN)(PVOID);
+
+SECURITY_STATUS SEC_ENTRY FreeCredentialsHandle(PCredHandle
+ phCredential);
+
+#define FreeCredentialHandle FreeCredentialsHandle
+
+typedef SECURITY_STATUS (SEC_ENTRY *FREE_CREDENTIALS_HANDLE_FN)(PCredHandle);
+
+SECURITY_STATUS SEC_ENTRY InitializeSecurityContextA(
+ PCredHandle phCredential, PCtxtHandle phContext,
+ SEC_CHAR *pszTargetName, ULONG fContextReq,
+ ULONG Reserved1, ULONG TargetDataRep, PSecBufferDesc pInput,
+ ULONG Reserved2, PCtxtHandle phNewContext, PSecBufferDesc pOutput,
+ ULONG *pfContextAttr, PTimeStamp ptsExpiry);
+SECURITY_STATUS SEC_ENTRY InitializeSecurityContextW(
+ PCredHandle phCredential, PCtxtHandle phContext,
+ SEC_WCHAR *pszTargetName, ULONG fContextReq,
+ ULONG Reserved1, ULONG TargetDataRep, PSecBufferDesc pInput,
+ ULONG Reserved2, PCtxtHandle phNewContext, PSecBufferDesc pOutput,
+ ULONG *pfContextAttr, PTimeStamp ptsExpiry);
+#define InitializeSecurityContext WINELIB_NAME_AW(InitializeSecurityContext)
+
+typedef SECURITY_STATUS (SEC_ENTRY *INITIALIZE_SECURITY_CONTEXT_FN_A)
+ (PCredHandle, PCtxtHandle, SEC_CHAR *, ULONG, ULONG, ULONG, PSecBufferDesc,
+ ULONG, PCtxtHandle, PSecBufferDesc, ULONG *, PTimeStamp);
+typedef SECURITY_STATUS (SEC_ENTRY *INITIALIZE_SECURITY_CONTEXT_FN_W)
+ (PCredHandle, PCtxtHandle, SEC_WCHAR *, ULONG, ULONG, ULONG, PSecBufferDesc,
+ ULONG, PCtxtHandle, PSecBufferDesc, ULONG *, PTimeStamp);
+#define INITIALIZE_SECURITY_CONTEXT_FN WINELIB_NAME_AW(INITIALIZE_SECURITY_CONTEXT_FN_)
+
+/* flags for InitializeSecurityContext fContextReq and pfContextAttr */
+#define ISC_REQ_DELEGATE               0x00000001
+#define ISC_REQ_MUTUAL_AUTH            0x00000002
+#define ISC_REQ_REPLAY_DETECT          0x00000004
+#define ISC_REQ_SEQUENCE_DETECT        0x00000008
+#define ISC_REQ_CONFIDENTIALITY        0x00000010
+#define ISC_REQ_USE_SESSION_KEY        0x00000020
+#define ISC_REQ_PROMPT_FOR_CREDS       0x00000040
+#define ISC_REQ_USE_SUPPLIED_CREDS     0x00000080
+#define ISC_REQ_ALLOCATE_MEMORY        0x00000100
+#define ISC_REQ_USE_DCE_STYLE          0x00000200
+#define ISC_REQ_DATAGRAM               0x00000400
+#define ISC_REQ_CONNECTION             0x00000800
+#define ISC_REQ_CALL_LEVEL             0x00001000
+#define ISC_REQ_FRAGMENT_SUPPLIED      0x00002000
+#define ISC_REQ_EXTENDED_ERROR         0x00004000
+#define ISC_REQ_STREAM                 0x00008000
+#define ISC_REQ_INTEGRITY              0x00010000
+#define ISC_REQ_IDENTIFY               0x00020000
+#define ISC_REQ_NULL_SESSION           0x00040000
+#define ISC_REQ_MANUAL_CRED_VALIDATION 0x00080000
+#define ISC_REQ_RESERVED1              0x00100000
+#define ISC_REQ_FRAGMENT_TO_FIT        0x00200000
+
+#define ISC_RET_DELEGATE               0x00000001
+#define ISC_RET_MUTUAL_AUTH            0x00000002
+#define ISC_RET_REPLAY_DETECT          0x00000004
+#define ISC_RET_SEQUENCE_DETECT        0x00000008
+#define ISC_RET_CONFIDENTIALITY        0x00000010
+#define ISC_RET_USE_SESSION_KEY        0x00000020
+#define ISC_RET_USED_COLLECTED_CREDS   0x00000040
+#define ISC_RET_USED_SUPPLIED_CREDS    0x00000080
+#define ISC_RET_ALLOCATED_MEMORY       0x00000100
+#define ISC_RET_USED_DCE_STYLE         0x00000200
+#define ISC_RET_DATAGRAM               0x00000400
+#define ISC_RET_CONNECTION             0x00000800
+#define ISC_RET_INTERMEDIATE_RETURN    0x00001000
+#define ISC_RET_CALL_LEVEL             0x00002000
+#define ISC_RET_EXTENDED_ERROR         0x00004000
+#define ISC_RET_STREAM                 0x00008000
+#define ISC_RET_INTEGRITY              0x00010000
+#define ISC_RET_IDENTIFY               0x00020000
+#define ISC_RET_NULL_SESSION           0x00040000
+#define ISC_RET_MANUAL_CRED_VALIDATION 0x00080000
+#define ISC_RET_RESERVED1              0x00100000
+#define ISC_RET_FRAGMENT_ONLY          0x00200000
+
+SECURITY_STATUS SEC_ENTRY AcceptSecurityContext(
+ PCredHandle phCredential, PCtxtHandle phContext, PSecBufferDesc pInput,
+ ULONG fContextReq, ULONG TargetDataRep,
+ PCtxtHandle phNewContext, PSecBufferDesc pOutput,
+ ULONG *pfContextAttr, PTimeStamp ptsExpiry);
+
+typedef SECURITY_STATUS (SEC_ENTRY *ACCEPT_SECURITY_CONTEXT_FN)(PCredHandle,
+ PCtxtHandle, PSecBufferDesc, ULONG, ULONG, PCtxtHandle,
+ PSecBufferDesc, ULONG *, PTimeStamp);
+
+/* flags for AcceptSecurityContext fContextReq and pfContextAttr */
+#define ASC_REQ_DELEGATE               0x00000001
+#define ASC_REQ_MUTUAL_AUTH            0x00000002
+#define ASC_REQ_REPLAY_DETECT          0x00000004
+#define ASC_REQ_SEQUENCE_DETECT        0x00000008
+#define ASC_REQ_CONFIDENTIALITY        0x00000010
+#define ASC_REQ_USE_SESSION_KEY        0x00000020
+#define ASC_REQ_ALLOCATE_MEMORY        0x00000100
+#define ASC_REQ_USE_DCE_STYLE          0x00000200
+#define ASC_REQ_DATAGRAM               0x00000400
+#define ASC_REQ_CONNECTION             0x00000800
+#define ASC_REQ_CALL_LEVEL             0x00001000
+#define ASC_REQ_FRAGMENT_SUPPLIED      0x00002000
+#define ASC_REQ_EXTENDED_ERROR         0x00008000
+#define ASC_REQ_STREAM                 0x00010000
+#define ASC_REQ_INTEGRITY              0x00020000
+#define ASC_REQ_LICENSING              0x00040000
+#define ASC_REQ_IDENTIFY               0x00080000
+#define ASC_REQ_ALLOW_NULL_SESSION     0x00100000
+#define ASC_REQ_ALLOW_NON_USER_LOGONS  0x00200000
+#define ASC_REQ_ALLOW_CONTEXT_REPLAY   0x00400000
+#define ASC_REQ_FRAGMENT_TO_FIT        0x00800000
+#define ASC_REQ_FRAGMENT_NO_TOKEN      0x01000000
+
+#define ASC_RET_DELEGATE               0x00000001
+#define ASC_RET_MUTUAL_AUTH            0x00000002
+#define ASC_RET_REPLAY_DETECT          0x00000004
+#define ASC_RET_SEQUENCE_DETECT        0x00000008
+#define ASC_RET_CONFIDENTIALITY        0x00000010
+#define ASC_RET_USE_SESSION_KEY        0x00000020
+#define ASC_RET_ALLOCATED_MEMORY       0x00000100
+#define ASC_RET_USED_DCE_STYLE         0x00000200
+#define ASC_RET_DATAGRAM               0x00000400
+#define ASC_RET_CONNECTION             0x00000800
+#define ASC_RET_CALL_LEVEL             0x00002000
+#define ASC_RET_THIRD_LEG_FAILED       0x00004000
+#define ASC_RET_EXTENDED_ERROR         0x00008000
+#define ASC_RET_STREAM                 0x00010000
+#define ASC_RET_INTEGRITY              0x00020000
+#define ASC_RET_LICENSING              0x00040000
+#define ASC_RET_IDENTIFY               0x00080000
+#define ASC_RET_NULL_SESSION           0x00100000
+#define ASC_RET_ALLOW_NON_USER_LOGONS  0x00200000
+#define ASC_RET_ALLOW_CONTEXT_REPLAY   0x00400000
+#define ASC_RET_FRAGMENT_ONLY          0x00800000
+#define ASC_RET_NO_TOKEN               0x01000000
+
+/* values for TargetDataRep */
+#define SECURITY_NATIVE_DREP  0x00000010
+#define SECURITY_NETWORK_DREP 0x00000000
+
+SECURITY_STATUS SEC_ENTRY CompleteAuthToken(PCtxtHandle phContext,
+ PSecBufferDesc pToken);
+
+typedef SECURITY_STATUS (SEC_ENTRY *COMPLETE_AUTH_TOKEN_FN)(PCtxtHandle,
+ PSecBufferDesc);
+
+SECURITY_STATUS SEC_ENTRY DeleteSecurityContext(PCtxtHandle phContext);
+
+typedef SECURITY_STATUS (SEC_ENTRY *DELETE_SECURITY_CONTEXT_FN)(PCtxtHandle);
+
+SECURITY_STATUS SEC_ENTRY ApplyControlToken(PCtxtHandle phContext,
+ PSecBufferDesc pInput);
+
+typedef SECURITY_STATUS (SEC_ENTRY *APPLY_CONTROL_TOKEN_FN)(PCtxtHandle,
+ PSecBufferDesc);
+
+SECURITY_STATUS SEC_ENTRY QueryContextAttributesA(PCtxtHandle phContext,
+ ULONG ulAttribute, void *pBuffer);
+SECURITY_STATUS SEC_ENTRY QueryContextAttributesW(PCtxtHandle phContext,
+ ULONG ulAttribute, void *pBuffer);
+#define QueryContextAttributes WINELIB_NAME_AW(QueryContextAttributes)
+
+typedef SECURITY_STATUS (SEC_ENTRY *QUERY_CONTEXT_ATTRIBUTES_FN_A)(PCtxtHandle,
+ ULONG, void *);
+typedef SECURITY_STATUS (SEC_ENTRY *QUERY_CONTEXT_ATTRIBUTES_FN_W)(PCtxtHandle,
+ ULONG, void *);
+#define QUERY_CONTEXT_ATTRIBUTES_FN WINELIB_NAME_AW(QUERY_CONTEXT_ATTRIBUTES_FN_)
+
+/* values for QueryContextAttributes/SetContextAttributes ulAttribute */
+#define SECPKG_ATTR_SIZES               0
+#define SECPKG_ATTR_NAMES               1
+#define SECPKG_ATTR_LIFESPAN            2
+#define SECPKG_ATTR_DCE_INFO            3
+#define SECPKG_ATTR_STREAM_SIZES        4
+#define SECPKG_ATTR_KEY_INFO            5
+#define SECPKG_ATTR_AUTHORITY           6
+#define SECPKG_ATTR_PROTO_INFO          7
+#define SECPKG_ATTR_PASSWORD_EXPIRY     8
+#define SECPKG_ATTR_SESSION_KEY         9
+#define SECPKG_ATTR_PACKAGE_INFO       10
+#define SECPKG_ATTR_USER_FLAGS         11
+#define SECPKG_ATTR_NEGOTIATION_INFO   12
+#define SECPKG_ATTR_NATIVE_NAMES       13
+#define SECPKG_ATTR_FLAGS              14
+#define SECPKG_ATTR_USE_VALIDATED      15
+#define SECPKG_ATTR_CREDENTIAL_NAME    16
+#define SECPKG_ATTR_TARGET_INFORMATION 17
+#define SECPKG_ATTR_ACCESS_TOKEN       18
+#define SECPKG_ATTR_TARGET             19
+#define SECPKG_ATTR_AUTHENTICATION_ID  20
+
+/* types for QueryContextAttributes/SetContextAttributes */
+
+typedef struct _SecPkgContext_Sizes
+{
+    unsigned long cbMaxToken;
+    unsigned long cbMaxSignature;
+    unsigned long cbBlockSize;
+    unsigned long cbSecurityTrailer;
+} SecPkgContext_Sizes, *PSecPkgContext_Sizes;
+
+typedef struct _SecPkgContext_StreamSizes
+{
+    unsigned long cbHeader;
+    unsigned long cbTrailer;
+    unsigned long cbMaximumMessage;
+    unsigned long cbBuffers;
+    unsigned long cbBlockSize;
+} SecPkgContext_StreamSizes, *PSecPkgContext_StreamSizes;
+
+typedef struct _SecPkgContext_NamesA
+{
+    SEC_CHAR *sUserName;
+} SecPkgContext_NamesA, *PSecPkgContext_NamesA;
+
+typedef struct _SecPkgContext_NamesW
+{
+    SEC_WCHAR *sUserName;
+} SecPkgContext_NamesW, *PSecPkgContext_NamesW;
+
+#define SecPkgContext_Names WINELIB_NAME_AW(SecPkgContext_Names)
+#define PSecPkgContext_Names WINELIB_NAME_AW(PSecPkgContext_Names)
+
+typedef struct _SecPkgContext_Lifespan
+{
+    TimeStamp tsStart;
+    TimeStamp tsExpiry;
+} SecPkgContext_Lifespan, *PSecPkgContext_Lifespan;
+
+typedef struct _SecPkgContext_DceInfo
+{
+    unsigned long AuthzSvc;
+    void *pPac;
+} SecPkgContext_DceInfo, *PSecPkgContext_DceInfo;
+
+typedef struct _SecPkgContext_KeyInfoA
+{
+    SEC_CHAR      *sSignatureAlgorithmName;
+    SEC_CHAR      *sEncryptAlgorithmName;
+    unsigned long  KeySize;
+    unsigned long  SignatureAlgorithm;
+    unsigned long  EncryptAlgorithm;
+} SecPkgContext_KeyInfoA, *PSecPkgContext_KeyInfoA;
+
+typedef struct _SecPkgContext_KeyInfoW
+{
+    SEC_WCHAR     *sSignatureAlgorithmName;
+    SEC_WCHAR     *sEncryptAlgorithmName;
+    unsigned long  KeySize;
+    unsigned long  SignatureAlgorithm;
+    unsigned long  EncryptAlgorithm;
+} SecPkgContext_KeyInfoW, *PSecPkgContext_KeyInfoW;
+
+#define SecPkgContext_KeyInfo WINELIB_NAME_AW(SecPkgContext_KeyInfo)
+#define PSecPkgContext_KeyInfo WINELIB_NAME_AW(PSecPkgContext_KeyInfo)
+
+typedef struct _SecPkgContext_AuthorityA
+{
+    SEC_CHAR *sAuthorityName;
+} SecPkgContext_AuthorityA, *PSecPkgContext_AuthorityA;
+
+typedef struct _SecPkgContext_AuthorityW
+{
+    SEC_WCHAR *sAuthorityName;
+} SecPkgContext_AuthorityW, *PSecPkgContext_AuthorityW;
+
+#define SecPkgContext_Authority WINELIB_NAME_AW(SecPkgContext_Authority)
+#define PSecPkgContext_Authority WINELIB_NAME_AW(PSecPkgContext_Authority)
+
+typedef struct _SecPkgContext_ProtoInfoA
+{
+    SEC_CHAR     *sProtocolName;
+    unsigned long majorVersion;
+    unsigned long minorVersion;
+} SecPkgContext_ProtoInfoA, *PSecPkgContext_ProtoInfoA;
+
+typedef struct _SecPkgContext_ProtoInfoW
+{
+    SEC_WCHAR    *sProtocolName;
+    unsigned long majorVersion;
+    unsigned long minorVersion;
+} SecPkgContext_ProtoInfoW, *PSecPkgContext_ProtoInfoW;
+
+#define SecPkgContext_ProtoInfo WINELIB_NAME_AW(SecPkgContext_ProtoInfo)
+#define PSecPkgContext_ProtoInfo WINELIB_NAME_AW(PSecPkgContext_ProtoInfo)
+
+typedef struct _SecPkgContext_PasswordExpiry
+{
+    TimeStamp tsPasswordExpires;
+} SecPkgContext_PasswordExpiry, *PSecPkgContext_PasswordExpiry;
+
+typedef struct _SecPkgContext_SessionKey
+{
+    unsigned long  SessionKeyLength;
+    unsigned char *SessionKey;
+} SecPkgContext_SessionKey, *PSecPkgContext_SessionKey;
+
+typedef struct _SecPkgContext_PackageInfoA
+{
+    PSecPkgInfoA PackageInfo;
+} SecPkgContext_PackageInfoA, *PSecPkgContext_PackageInfoA;
+
+typedef struct _SecPkgContext_PackageInfoW
+{
+    PSecPkgInfoW PackageInfo;
+} SecPkgContext_PackageInfoW, *PSecPkgContext_PackageInfoW;
+
+#define SecPkgContext_PackageInfo WINELIB_NAME_AW(SecPkgContext_PackageInfo)
+#define PSecPkgContext_PackageInfo WINELIB_NAME_AW(PSecPkgContext_PackageInfo)
+
+typedef struct _SecPkgContext_Flags
+{
+    unsigned long Flags;
+} SecPkgContext_Flags, *PSecPkgContext_Flags;
+
+typedef struct _SecPkgContext_UserFlags
+{
+    unsigned long UserFlags;
+} SecPkgContext_UserFlags, *PSecPkgContext_UserFlags;
+
+typedef struct _SecPkgContext_NegotiationInfoA
+{
+    PSecPkgInfoA  PackageInfo;
+    unsigned long NegotiationState;
+} SecPkgContext_NegotiationInfoA, *PSecPkgContext_NegotiationInfoA;
+
+typedef struct _SecPkgContext_NegotiationInfoW
+{
+    PSecPkgInfoW  PackageInfo;
+    unsigned long NegotiationState;
+} SecPkgContext_NegotiationInfoW, *PSecPkgContext_NegotiationInfoW;
+
+#define SecPkgContext_NegotiationInfo WINELIB_NAME_AW(SecPkgContext_NegotiationInfo)
+#define PSecPkgContext_NegotiationInfo WINELIB_NAME_AW(PSecPkgContext_NegotiationInfo)
+
+/* values for NegotiationState */
+#define SECPKG_NEGOTIATION_COMPLETE      0
+#define SECPKG_NEGOTIATION_OPTIMISTIC    1
+#define SECPKG_NEGOTIATION_IN_PROGRESS   2
+#define SECPKG_NEGOTIATION_DIRECT        3
+#define SECPKG_NEGOTIATION_TRY_MULTICRED 4
+
+typedef struct _SecPkgContext_NativeNamesA
+{
+    SEC_CHAR *sClientName;
+    SEC_CHAR *sServerName;
+} SecPkgContext_NativeNamesA, *PSecPkgContext_NativeNamesA;
+
+typedef struct _SecPkgContext_NativeNamesW
+{
+    SEC_WCHAR *sClientName;
+    SEC_WCHAR *sServerName;
+} SecPkgContext_NativeNamesW, *PSecPkgContext_NativeNamesW;
+
+#define SecPkgContext_NativeNames WINELIB_NAME_AW(SecPkgContext_NativeNames)
+#define PSecPkgContext_NativeNames WINELIB_NAME_AW(PSecPkgContext_NativeNames)
+
+typedef struct _SecPkgContext_CredentialNameA
+{
+    unsigned long  CredentialType;
+    SEC_CHAR      *sCredentialName;
+} SecPkgContext_CredentialNameA, *PSecPkgContext_CredentialNameA;
+
+typedef struct _SecPkgContext_CredentialNameW
+{
+    unsigned long  CredentialType;
+    SEC_WCHAR     *sCredentialName;
+} SecPkgContext_CredentialNameW, *PSecPkgContext_CredentialNameW;
+
+#define SecPkgContext_CredentialName WINELIB_NAME_AW(SecPkgContext_CredentialName)
+#define PSecPkgContext_CredentialName WINELIB_NAME_AW(PSecPkgContext_CredentialName)
+
+typedef struct _SecPkgContext_AccessToken
+{
+    void *AccessToken;
+} SecPkgContext_AccessToken, *PSecPkgContext_AccessToken;
+
+typedef struct _SecPkgContext_TargetInformation
+{
+    unsigned long  MarshalledTargetInfoLength;
+    unsigned char *MarshalledTargetInfo;
+} SecPkgContext_TargetInformation, *PSecPkgContext_TargetInformation;
+
+typedef struct _SecPkgContext_AuthzID
+{
+    unsigned long  AuthzIDLength;
+    char          *AuthzID;
+} SecPkgContext_AuthzID, *PSecPkgContext_AuthzID;
+
+typedef struct _SecPkgContext_Target
+{
+    unsigned long  TargetLength;
+    char          *Target;
+} SecPkgContext_Target, *PSecPkgContext_Target;
+
+SECURITY_STATUS SEC_ENTRY ImpersonateSecurityContext(PCtxtHandle phContext);
+
+typedef SECURITY_STATUS (SEC_ENTRY *IMPERSONATE_SECURITY_CONTEXT_FN)
+ (PCtxtHandle);
+
+SECURITY_STATUS SEC_ENTRY RevertSecurityContext(PCtxtHandle phContext);
+
+typedef SECURITY_STATUS (SEC_ENTRY *REVERT_SECURITY_CONTEXT_FN)(PCtxtHandle);
+
+SECURITY_STATUS SEC_ENTRY MakeSignature(PCtxtHandle phContext,
+ ULONG fQOP, PSecBufferDesc pMessage, ULONG MessageSeqNo);
+
+typedef SECURITY_STATUS (SEC_ENTRY *MAKE_SIGNATURE_FN)(PCtxtHandle,
+ ULONG, PSecBufferDesc, ULONG);
+
+SECURITY_STATUS SEC_ENTRY VerifySignature(PCtxtHandle phContext,
+ PSecBufferDesc pMessage, ULONG MessageSeqNo, PULONG pfQOP);
+
+typedef SECURITY_STATUS (SEC_ENTRY *VERIFY_SIGNATURE_FN)(PCtxtHandle,
+ PSecBufferDesc, ULONG, PULONG);
+
+SECURITY_STATUS SEC_ENTRY QuerySecurityPackageInfoA(
+ SEC_CHAR *pszPackageName, PSecPkgInfoA *ppPackageInfo);
+SECURITY_STATUS SEC_ENTRY QuerySecurityPackageInfoW(
+ SEC_WCHAR *pszPackageName, PSecPkgInfoW *ppPackageInfo);
+#define QuerySecurityPackageInfo WINELIB_NAME_AW(QuerySecurityPackageInfo)
+
+typedef SECURITY_STATUS (SEC_ENTRY *QUERY_SECURITY_PACKAGE_INFO_FN_A)
+ (SEC_CHAR *, PSecPkgInfoA *);
+typedef SECURITY_STATUS (SEC_ENTRY *QUERY_SECURITY_PACKAGE_INFO_FN_W)
+ (SEC_WCHAR *, PSecPkgInfoW *);
+#define QUERY_SECURITY_PACKAGE_INFO_FN WINELIB_NAME_AW(QUERY_SECURITY_PACKAGE_INFO_FN_)
+
+SECURITY_STATUS SEC_ENTRY ExportSecurityContext(PCtxtHandle phContext,
+ ULONG fFlags, PSecBuffer pPackedContext, void **pToken);
+
+typedef SECURITY_STATUS (SEC_ENTRY *EXPORT_SECURITY_CONTEXT_FN)(PCtxtHandle,
+ ULONG, PSecBuffer, void **);
+
+/* values for ExportSecurityContext fFlags */
+#define SECPKG_CONTEXT_EXPORT_RESET_NEW  0x00000001
+#define SECPKG_CONTEXT_EXPORT_DELETE_OLD 0x00000002
+
+SECURITY_STATUS SEC_ENTRY ImportSecurityContextA(SEC_CHAR *pszPackage,
+ PSecBuffer pPackedContext, void *Token, PCtxtHandle phContext);
+SECURITY_STATUS SEC_ENTRY ImportSecurityContextW(SEC_WCHAR *pszPackage,
+ PSecBuffer pPackedContext, void *Token, PCtxtHandle phContext);
+#define ImportSecurityContext WINELIB_NAME_AW(ImportSecurityContext)
+
+typedef SECURITY_STATUS (SEC_ENTRY *IMPORT_SECURITY_CONTEXT_FN_A)(SEC_CHAR *,
+ PSecBuffer, void *, PCtxtHandle);
+typedef SECURITY_STATUS (SEC_ENTRY *IMPORT_SECURITY_CONTEXT_FN_W)(SEC_WCHAR *,
+ PSecBuffer, void *, PCtxtHandle);
+#define IMPORT_SECURITY_CONTEXT_FN WINELIB_NAME_AW(IMPORT_SECURITY_CONTEXT_FN_)
+
+SECURITY_STATUS SEC_ENTRY AddCredentialsA(PCredHandle hCredentials,
+ SEC_CHAR *pszPrincipal, SEC_CHAR *pszPackage, ULONG fCredentialUse,
+ void *pAuthData, SEC_GET_KEY_FN pGetKeyFn, void *pvGetKeyArgument,
+ PTimeStamp ptsExpiry);
+SECURITY_STATUS SEC_ENTRY AddCredentialsW(PCredHandle hCredentials,
+ SEC_WCHAR *pszPrincipal, SEC_WCHAR *pszPackage, ULONG fCredentialUse,
+ void *pAuthData, SEC_GET_KEY_FN pGetKeyFn, void *pvGetKeyArgument,
+ PTimeStamp ptsExpiry);
+#define AddCredentials WINELIB_NAME_AW(AddCredentials)
+
+typedef SECURITY_STATUS (SEC_ENTRY *ADD_CREDENTIALS_FN_A)(PCredHandle,
+ SEC_CHAR *, SEC_CHAR *, ULONG, void *, SEC_GET_KEY_FN, void *,
+ PTimeStamp);
+typedef SECURITY_STATUS (SEC_ENTRY *ADD_CREDENTIALS_FN_W)(PCredHandle,
+ SEC_WCHAR *, SEC_WCHAR *, ULONG, void *, SEC_GET_KEY_FN, void *,
+ PTimeStamp);
+
+SECURITY_STATUS SEC_ENTRY QuerySecurityContextToken(PCtxtHandle phContext,
+ HANDLE *phToken);
+
+typedef SECURITY_STATUS (SEC_ENTRY *QUERY_SECURITY_CONTEXT_TOKEN_FN)
+ (PCtxtHandle, HANDLE *);
+
+SECURITY_STATUS SEC_ENTRY EncryptMessage(PCtxtHandle phContext, ULONG fQOP,
+ PSecBufferDesc pMessage, ULONG MessageSeqNo);
+SECURITY_STATUS SEC_ENTRY DecryptMessage(PCtxtHandle phContext,
+ PSecBufferDesc pMessage, ULONG MessageSeqNo, PULONG pfQOP);
+
+/* values for EncryptMessage fQOP */
+#define SECQOP_WRAP_NO_ENCRYPT 0x80000001
+
+typedef SECURITY_STATUS (SEC_ENTRY *ENCRYPT_MESSAGE_FN)(PCtxtHandle, ULONG,
+ PSecBufferDesc, ULONG);
+typedef SECURITY_STATUS (SEC_ENTRY *DECRYPT_MESSAGE_FN)(PCtxtHandle,
+ PSecBufferDesc, ULONG, PULONG);
+
+SECURITY_STATUS SEC_ENTRY SetContextAttributesA(PCtxtHandle phContext,
+ ULONG ulAttribute, void *pBuffer, ULONG cbBuffer);
+SECURITY_STATUS SEC_ENTRY SetContextAttributesW(PCtxtHandle phContext,
+ ULONG ulAttribute, void *pBuffer, ULONG cbBuffer);
+#define SetContextAttributes WINELIB_NAME_AW(SetContextAttributes)
+
+typedef SECURITY_STATUS (SEC_ENTRY *SET_CONTEXT_ATTRIBUTES_FN_A)(PCtxtHandle,
+ ULONG, void *, ULONG);
+typedef SECURITY_STATUS (SEC_ENTRY *SET_CONTEXT_ATTRIBUTES_FN_W)(PCtxtHandle,
+ ULONG, void *, ULONG);
+
+#define SECURITY_ENTRYPOINT_ANSIA "InitSecurityInterfaceA"
+#define SECURITY_ENTRYPOINT_ANSIW "InitSecurityInterfaceW"
+#define SECURITY_ENTRYPOINT_ANSI WINELIB_NAME_AW(SECURITY_ENTRYPOINT_ANSI)
+
+typedef struct _SECURITY_FUNCTION_TABLE_A
+{
+    unsigned long                     dwVersion;
+    ENUMERATE_SECURITY_PACKAGES_FN_A  EnumerateSecurityPackagesA;
+    QUERY_CREDENTIALS_ATTRIBUTES_FN_A QueryCredentialsAttributesA;
+    ACQUIRE_CREDENTIALS_HANDLE_FN_A   AcquireCredentialsHandleA;
+    FREE_CREDENTIALS_HANDLE_FN        FreeCredentialsHandle;
+    void                             *Reserved2;
+    INITIALIZE_SECURITY_CONTEXT_FN_A  InitializeSecurityContextA;
+    ACCEPT_SECURITY_CONTEXT_FN        AcceptSecurityContext;
+    COMPLETE_AUTH_TOKEN_FN            CompleteAuthToken;
+    DELETE_SECURITY_CONTEXT_FN        DeleteSecurityContext;
+    APPLY_CONTROL_TOKEN_FN            ApplyControlToken;
+    QUERY_CONTEXT_ATTRIBUTES_FN_A     QueryContextAttributesA;
+    IMPERSONATE_SECURITY_CONTEXT_FN   ImpersonateSecurityContext;
+    REVERT_SECURITY_CONTEXT_FN        RevertSecurityContext;
+    MAKE_SIGNATURE_FN                 MakeSignature;
+    VERIFY_SIGNATURE_FN               VerifySignature;
+    FREE_CONTEXT_BUFFER_FN            FreeContextBuffer;
+    QUERY_SECURITY_PACKAGE_INFO_FN_A  QuerySecurityPackageInfoA;
+    void                             *Reserved3;
+    void                             *Reserved4;
+    EXPORT_SECURITY_CONTEXT_FN        ExportSecurityContext;
+    IMPORT_SECURITY_CONTEXT_FN_A      ImportSecurityContextA;
+    ADD_CREDENTIALS_FN_A              AddCredentialsA;
+    void                             *Reserved8;
+    QUERY_SECURITY_CONTEXT_TOKEN_FN   QuerySecurityContextToken;
+    ENCRYPT_MESSAGE_FN                EncryptMessage;
+    DECRYPT_MESSAGE_FN                DecryptMessage;
+    SET_CONTEXT_ATTRIBUTES_FN_A       SetContextAttributesA;
+} SecurityFunctionTableA, *PSecurityFunctionTableA;
+
+typedef struct _SECURITY_FUNCTION_TABLE_W
+{
+    unsigned long                     dwVersion;
+    ENUMERATE_SECURITY_PACKAGES_FN_W  EnumerateSecurityPackagesW;
+    QUERY_CREDENTIALS_ATTRIBUTES_FN_W QueryCredentialsAttributesW;
+    ACQUIRE_CREDENTIALS_HANDLE_FN_W   AcquireCredentialsHandleW;
+    FREE_CREDENTIALS_HANDLE_FN        FreeCredentialsHandle;
+    void                             *Reserved2;
+    INITIALIZE_SECURITY_CONTEXT_FN_W  InitializeSecurityContextW;
+    ACCEPT_SECURITY_CONTEXT_FN        AcceptSecurityContext;
+    COMPLETE_AUTH_TOKEN_FN            CompleteAuthToken;
+    DELETE_SECURITY_CONTEXT_FN        DeleteSecurityContext;
+    APPLY_CONTROL_TOKEN_FN            ApplyControlToken;
+    QUERY_CONTEXT_ATTRIBUTES_FN_W     QueryContextAttributesW;
+    IMPERSONATE_SECURITY_CONTEXT_FN   ImpersonateSecurityContext;
+    REVERT_SECURITY_CONTEXT_FN        RevertSecurityContext;
+    MAKE_SIGNATURE_FN                 MakeSignature;
+    VERIFY_SIGNATURE_FN               VerifySignature;
+    FREE_CONTEXT_BUFFER_FN            FreeContextBuffer;
+    QUERY_SECURITY_PACKAGE_INFO_FN_W  QuerySecurityPackageInfoW;
+    void                             *Reserved3;
+    void                             *Reserved4;
+    EXPORT_SECURITY_CONTEXT_FN        ExportSecurityContext;
+    IMPORT_SECURITY_CONTEXT_FN_W      ImportSecurityContextW;
+    ADD_CREDENTIALS_FN_W              AddCredentialsW;
+    void                             *Reserved8;
+    QUERY_SECURITY_CONTEXT_TOKEN_FN   QuerySecurityContextToken;
+    ENCRYPT_MESSAGE_FN                EncryptMessage;
+    DECRYPT_MESSAGE_FN                DecryptMessage;
+    SET_CONTEXT_ATTRIBUTES_FN_W       SetContextAttributesW;
+} SecurityFunctionTableW, *PSecurityFunctionTableW;
+
+#define SecurityFunctionTable WINELIB_NAME_AW(SecurityFunctionTable)
+#define PSecurityFunctionTable WINELIB_NAME_AW(PSecurityFunctionTable)
+
+#define SECURITY_SUPPORT_PROVIDER_INTERFACE_VERSION   1
+#define SECURITY_SUPPORT_PROVIDER_INTERFACE_VERSION_2 2
+
+PSecurityFunctionTableA SEC_ENTRY InitSecurityInterfaceA(void);
+PSecurityFunctionTableW SEC_ENTRY InitSecurityInterfaceW(void);
+#define InitSecurityInterface WINELIB_NAME_AW(InitSecurityInterface)
+
+typedef PSecurityFunctionTableA (SEC_ENTRY *INIT_SECURITY_INTERFACE_A)(void);
+typedef PSecurityFunctionTableW (SEC_ENTRY *INIT_SECURITY_INTERFACE_W)(void);
+#define INIT_SECURITY_INTERFACE WINELIB_NAME_AW(INIT_SECURITY_INTERFACE_)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ndef __WINE_SSPI_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/stamp-h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/stamp-h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/stamp-h	(revision 16410)
@@ -0,0 +1,1 @@
+timestamp
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/stamp-h.in
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/stamp-h.in	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/stamp-h.in	(revision 16410)
@@ -0,0 +1,1 @@
+timestamp
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/stdole2.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/stdole2.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/stdole2.idl	(revision 16410)
@@ -0,0 +1,431 @@
+/*
+ * Copyright (C) 2003 Robert Shearman
+ *               2005 Huw Davies
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+[
+  uuid(00020430-0000-0000-C000-000000000046),
+  version(2.0),
+  helpstring("OLE Automation")
+]
+library stdole
+{
+	/* typedefs aren't stored in the type library.
+           These type names are known by the type compiler so it
+           doesn't really matter what we define them as. */
+
+    typedef short VARIANT_BOOL;
+    typedef long BSTR;
+    typedef double CURRENCY;
+    typedef unsigned long HRESULT;
+    typedef void *VARIANT;
+    typedef unsigned long SCODE;
+
+    typedef struct GUID {
+        unsigned long  Data1;
+        unsigned short Data2;
+        unsigned short Data3;
+        unsigned char  Data4[ 8 ];
+    } GUID;
+
+    typedef struct DISPPARAMS {
+        VARIANT *rgvarg;
+        long *rgdispidNamedArgs;
+        unsigned int cArgs;
+        unsigned int cNamedArgs;
+    } DISPPARAMS;
+
+    typedef struct EXCEPINFO {
+        unsigned short wCode;
+        unsigned short wReserved;
+        BSTR  bstrSource;
+        BSTR  bstrDescription;
+        BSTR  bstrHelpFile;
+        unsigned long dwHelpContext;
+        void *pvReserved;
+        void *pfnDeferredFillIn;
+        SCODE scode;
+    } EXCEPINFO;
+
+    [
+        odl,
+        uuid(00000000-0000-0000-C000-000000000046),
+        hidden
+    ]
+    interface IUnknown
+    {
+        [restricted]
+        HRESULT QueryInterface(
+                               [in] GUID *riid,
+                               [out] void **ppvObj);
+
+        [restricted]
+        unsigned long AddRef();
+
+        [restricted]
+        unsigned long Release();
+    }
+
+    [
+        odl,
+        uuid(00020400-0000-0000-C000-000000000046),
+        restricted
+    ]
+    interface IDispatch : IUnknown
+    {
+        [restricted]
+        HRESULT GetTypeInfoCount(
+                                 [out] unsigned int *pctinfo);
+
+        [restricted]
+        HRESULT GetTypeInfo(
+                            [in] unsigned int itinfo,
+                            [in] unsigned long lcid,
+                            [out] void **pptinfo);
+
+        [restricted]
+        HRESULT GetIDsOfNames(
+                              [in] GUID *riid,
+                              [in] char **rgszNames,
+                              [in] unsigned int cNames,
+                              [in] unsigned long lcid,
+                              [out] long *rgdispid);
+
+        [restricted]
+        HRESULT Invoke(
+                       [in] long dispidMember,
+                       [in] GUID *riid,
+                       [in] unsigned long lcid,
+                       [in] unsigned short wFlags,
+                       [in] DISPPARAMS *pdispparams,
+                       [out] VARIANT *pvarResult,
+                       [out] EXCEPINFO *pexcepinfo,
+                       [out] unsigned int *puArgErr);
+
+    }
+
+    [
+        odl,
+        uuid(00020404-0000-0000-C000-000000000046),
+        hidden
+    ]
+    interface IEnumVARIANT : IUnknown
+    {
+        HRESULT Next(
+                     [in] unsigned long celt,
+                     [in] VARIANT *rgvar,
+                     [out] unsigned long *pceltFetched);
+
+        HRESULT Skip(
+                     [in] unsigned long celt);
+
+        HRESULT Reset();
+
+        HRESULT Clone(
+                      [out] IEnumVARIANT **ppenum);
+    }
+
+    typedef [uuid(66504301-BE0F-101A-8BBB-00AA00300CAB), public]
+        unsigned long OLE_COLOR;
+
+    typedef [uuid(66504302-BE0F-101A-8BBB-00AA00300CAB), public]
+        long OLE_XPOS_PIXELS;
+
+    typedef [uuid(66504303-BE0F-101A-8BBB-00AA00300CAB), public]
+        long OLE_YPOS_PIXELS;
+
+    typedef [uuid(66504304-BE0F-101A-8BBB-00AA00300CAB), public]
+        long OLE_XSIZE_PIXELS;
+
+    typedef [uuid(66504305-BE0F-101A-8BBB-00AA00300CAB), public]
+        long OLE_YSIZE_PIXELS;
+
+    typedef [uuid(66504306-BE0F-101A-8BBB-00AA00300CAB), public]
+        long OLE_XPOS_HIMETRIC;
+
+    typedef [uuid(66504307-BE0F-101A-8BBB-00AA00300CAB), public]
+        long OLE_YPOS_HIMETRIC;
+
+    typedef [uuid(66504308-BE0F-101A-8BBB-00AA00300CAB), public]
+        long OLE_XSIZE_HIMETRIC;
+
+    typedef [uuid(66504309-BE0F-101A-8BBB-00AA00300CAB), public]
+        long OLE_YSIZE_HIMETRIC;
+
+    typedef [uuid(BF030640-9069-101B-AE2D-08002B2EC713), public]
+        float OLE_XPOS_CONTAINER;
+
+    typedef [uuid(BF030641-9069-101B-AE2D-08002B2EC713), public]
+        float OLE_YPOS_CONTAINER;
+
+    typedef [uuid(BF030642-9069-101B-AE2D-08002B2EC713), public]
+        float OLE_XSIZE_CONTAINER;
+
+    typedef [uuid(BF030643-9069-101B-AE2D-08002B2EC713), public]
+        float OLE_YSIZE_CONTAINER;
+
+    typedef [uuid(66504313-BE0F-101A-8BBB-00AA00300CAB), public]
+        int OLE_HANDLE;
+
+    typedef [uuid(6650430B-BE0F-101A-8BBB-00AA00300CAB), public]
+        VARIANT_BOOL OLE_OPTEXCLUSIVE;
+
+    typedef [uuid(BF030644-9069-101B-AE2D-08002B2EC713), public]
+        VARIANT_BOOL OLE_CANCELBOOL;
+
+    typedef [uuid(BF030645-9069-101B-AE2D-08002B2EC713), public]
+        VARIANT_BOOL OLE_ENABLEDEFAULTBOOL;
+
+    [
+     uuid(6650430A-BE0F-101A-8BBB-00AA00300CAB)
+    ]
+    enum OLE_TRISTATE {
+        Unchecked = 0,
+        Checked = 1,
+        Gray = 2
+    };
+
+    typedef [uuid(6650430D-BE0F-101A-8BBB-00AA00300CAB), public]
+        BSTR FONTNAME;
+
+    typedef [uuid(6650430E-BE0F-101A-8BBB-00AA00300CAB), public]
+        CURRENCY FONTSIZE;
+
+    typedef [uuid(6650430F-BE0F-101A-8BBB-00AA00300CAB), public]
+        VARIANT_BOOL FONTBOLD;
+
+    typedef [uuid(66504310-BE0F-101A-8BBB-00AA00300CAB), public]
+        VARIANT_BOOL FONTITALIC;
+
+    typedef [uuid(66504311-BE0F-101A-8BBB-00AA00300CAB), public]
+        VARIANT_BOOL FONTUNDERSCORE;
+
+    typedef [uuid(66504312-BE0F-101A-8BBB-00AA00300CAB), public]
+        VARIANT_BOOL FONTSTRIKETHROUGH;
+
+
+    [
+     odl,
+     uuid(BEF6E002-A874-101A-8BBA-00AA00300CAB),
+     helpstring("Font Object"),
+     hidden
+    ]
+    interface IFont : IUnknown {
+        [propget] HRESULT Name([out, retval] BSTR *pname);
+        [propput] HRESULT Name([in] BSTR pname);
+
+        [propget] HRESULT Size([out, retval] CURRENCY *psize);
+        [propput] HRESULT Size([in] CURRENCY psize);
+
+        [propget] HRESULT Bold([out, retval] VARIANT_BOOL *pbold);
+        [propput] HRESULT Bold([in] VARIANT_BOOL pbold);
+
+        [propget] HRESULT Italic([out, retval] VARIANT_BOOL *pitalic);
+        [propput] HRESULT Italic([in] VARIANT_BOOL pitalic);
+
+        [propget] HRESULT Underline([out, retval] VARIANT_BOOL *punderline);
+        [propput] HRESULT Underline([in] VARIANT_BOOL punderline);
+
+        [propget] HRESULT Strikethrough([out, retval] VARIANT_BOOL *pstrikethrough);
+        [propput] HRESULT Strikethrough([in] VARIANT_BOOL pstrikethrough);
+
+        [propget] HRESULT Weight([out, retval] short *pweight);
+        [propput] HRESULT Weight([in] short pweight);
+
+        [propget] HRESULT Charset([out, retval] short *pcharset);
+        [propput] HRESULT Charset([in] short pcharset);
+
+        [propget] HRESULT hFont([out, retval] OLE_HANDLE *phfont);
+        
+        HRESULT Clone([out] IFont **ppfont);
+
+        HRESULT IsEqual([in] IFont *pfontOther);
+
+        HRESULT SetRatio([in] long cyLogical, [in] long cyHimetric);
+
+        HRESULT AddRefHfont([in] OLE_HANDLE hFont);
+
+        HRESULT ReleaseHfont([in] OLE_HANDLE hFont);
+    };
+
+
+    [
+     odl,
+     uuid(BEF6E003-A874-101A-8BBA-00AA00300CAB)
+    ]
+    dispinterface Font {
+    properties:
+        [id(0x0)] BSTR Name;
+        [id(0x2)] CURRENCY Size;
+        [id(0x3)] VARIANT_BOOL Bold;
+        [id(0x4)] VARIANT_BOOL Italic;
+        [id(0x5)] VARIANT_BOOL Underline;
+        [id(0x6)] VARIANT_BOOL Strikethrough;
+        [id(0x7)] short Weight;
+        [id(0x8)] short Charset;
+    methods:
+    }
+
+    typedef [public] Font IFontDisp;
+
+    [
+     uuid(0BE35203-8F91-11CE-9DE3-00AA004BB851)
+    ]
+    coclass StdFont {
+        [default] dispinterface Font;
+        /* FIXME: We can't reference dispinterface FontEvents here because we need it to
+           appear at the end of the typelib. */
+/*      [default, source] dispinterface FontEvents;*/
+        interface IFont;
+    };
+
+    [
+     odl,
+     uuid(7BF80980-BF32-101A-8BBB-00AA00300CAB),
+     helpstring("Picture Object"),
+     hidden
+    ]
+    interface IPicture : IUnknown {
+        [propget] HRESULT Handle([out, retval] OLE_HANDLE *phandle);
+
+        [propget] HRESULT hPal([out, retval] OLE_HANDLE *phpal);
+        
+        [propget] HRESULT Type([out, retval] short *ptype);
+
+        [propget] HRESULT Width([out, retval] OLE_XSIZE_HIMETRIC *pwidth);
+
+        [propget] HRESULT Height([out, retval] OLE_YSIZE_HIMETRIC *pheight);
+
+        HRESULT Render([in] int hdc,
+                       [in] long x,
+                       [in] long y,
+                       [in] long cx,
+                       [in] long cy,
+                       [in] OLE_XPOS_HIMETRIC xSrc,
+                       [in] OLE_YPOS_HIMETRIC ySrc,
+                       [in] OLE_XSIZE_HIMETRIC cxSrc,
+                       [in] OLE_YSIZE_HIMETRIC cySrc,
+                       [in] void *prcWBounds);
+
+        [propput] HRESULT hPal([in] OLE_HANDLE phpal);
+
+        [propget] HRESULT CurDC([out, retval] int *phdcOut);
+
+        HRESULT SelectPicture([in] int hdcIn,
+                              [out] int *phdcOut,
+                              [out] OLE_HANDLE *phbmpOut);
+        
+        [propget] HRESULT KeepOriginalFormat([out, retval] VARIANT_BOOL *pfkeep);
+        [propput] HRESULT KeepOriginalFormat([in] VARIANT_BOOL pfkeep);
+
+        HRESULT PictureChanged();
+
+        HRESULT SaveAsFile([in] void *pstm,
+                           [in] VARIANT_BOOL fSaveMemCopy,
+                           [out] long *pcbSize);
+
+        [propget] HRESULT Attributes([out, retval] long *pdwAttr);
+
+        HRESULT SetHdc([in] OLE_HANDLE hdc);
+    };
+
+    [
+     uuid(7BF80981-BF32-101A-8BBB-00AA00300CAB)
+    ]
+    dispinterface Picture {
+    properties:
+        [id(0x0), readonly] OLE_HANDLE Handle;
+        [id(0x2)] OLE_HANDLE hPal;
+        [id(0x3), readonly] short Type; 
+        [id(0x4), readonly] OLE_XSIZE_HIMETRIC Width;
+        [id(0x5), readonly] OLE_YSIZE_HIMETRIC Height;
+    methods:
+        [id(0x6)] void Render(int hdc,
+                              long x,
+                              long y,
+                              long cx,
+                              long cy,
+                              OLE_XPOS_HIMETRIC xSrc,
+                              OLE_YPOS_HIMETRIC ySrc,
+                              OLE_XSIZE_HIMETRIC cxSrc,
+                              OLE_YSIZE_HIMETRIC cySrc,
+                              void *prcWBounds);
+    };
+    
+    typedef [public] Picture IPictureDisp;
+
+    [
+     uuid(0BE35204-8F91-11CE-9DE3-00AA004BB851)
+    ]
+    coclass StdPicture {
+        [default] dispinterface Picture;
+        interface IPicture;
+    };
+
+    [
+     uuid(E6C8FA08-BD9F-11D0-985E-00C04FC29993)
+    ]
+    enum LoadPictureConstants {
+        Default = 0,
+        Monochrome = 1,
+        VgaColor = 2,
+        Color = 4
+    };
+
+    [
+     dllname("oleaut32.dll"),
+     uuid(91209AC0-60F6-11CF-9C5D-00AA00C1489E),
+     helpstring("Functions for Standard OLE Objects"),
+     helpcontext(0x2775)
+    ]
+    module StdFunctions{
+        [
+         entry("OleLoadPictureFileEx"),
+         helpstring("Loads a picture from a file"),
+         helpcontext(0x2775)
+        ]
+        HRESULT LoadPicture([in, optional] VARIANT filename,
+                            [in, optional, defaultvalue(0)] int widthDesired,
+                            [in, optional, defaultvalue(0)] int heightDesired,
+                            [in, optional, defaultvalue(Default)] enum LoadPictureConstants flags,
+                            [out, retval] IPictureDisp **retval);
+        [
+         entry("OleSavePictureFile"),
+         helpstring("Saves a picture to a file"),
+         helpcontext(0x2775)
+        ]
+        HRESULT SavePicture([in] IPictureDisp *Picture,
+                            [in] BSTR filename);
+    };
+
+
+    [
+     uuid(4EF6100A-AF88-11D0-9846-00C04FC29993),
+     helpstring("Event Interface for the Font Object"),
+     hidden
+    ]
+    dispinterface FontEvents {
+    properties:
+    methods:
+        [id(0x9)] void FontChanged([in] BSTR PropertyName);
+    };
+
+    typedef [public] FontEvents IFontEventsDisp;
+
+
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/storage.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/storage.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/storage.h	(revision 16410)
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 1999 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_STORAGE_H
+#define __WINE_STORAGE_H
+
+/* "storage.h" is obsolete, you should include "objbase.h" instead */
+
+#include <objbase.h>
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/strmif.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/strmif.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/strmif.idl	(revision 16410)
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2002 Robert Shearman
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "objidl.idl";
+
+#include <devenum.idl>
+
+#include <axcore.idl>
+
+#include <axextend.idl>
+
+#include <dyngraph.idl>
+
+/* TODO: #include <dvdif.h> */
+#include <vmrender.idl>
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/svrapi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/svrapi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/svrapi.h	(revision 16410)
@@ -0,0 +1,46 @@
+/*
+* Copyright 2006 Konstantin Petrov
+*
+* This library is free software; you can redistribute it and/or
+* modify it under the terms of the GNU Lesser General Public
+* License as published by the Free Software Foundation; either
+* version 2.1 of the License, or (at your option) any later version.
+*
+* This library is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this library; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef SVRAPI_INCLUDED
+#define SVRAPI_INCLUDED
+
+#include <lmcons.h>
+#include <lmerr.h>
+
+#include <pshpack1.h>
+
+typedef struct _share_info_1 {
+       char shi1_netname[LM20_NNLEN+1];
+       char shi1_pad1;
+       unsigned short shi1_type;
+       char* shi1_remark;
+} share_info_1;
+
+typedef struct _share_info_50 {
+       char shi50_netname[LM20_NNLEN+1];
+       unsigned char shi50_type;
+       unsigned short shi50_flags;
+       char* shi50_remark;
+       char* shi50_path;
+       char shi50_rw_password[SHPWLEN+1];
+       char shi50_ro_password[SHPWLEN+1];
+} share_info_50;
+
+#include <poppack.h>
+
+#endif /* SVRAPI_INCLUDED */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/tapi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/tapi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/tapi.h	(revision 16410)
@@ -0,0 +1,1035 @@
+/*
+ * TAPI definitions
+ *
+ * Copyright (c) 1999 Andreas Mohr
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_TAPI_H
+#define __WINE_TAPI_H
+
+#ifndef __WINESRC__
+# include <windows.h>
+#endif
+#include <basetsd.h>
+#include <oaidl.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+typedef HANDLE HCALL, *LPHCALL;
+typedef HANDLE HLINE, *LPHLINE;
+typedef HANDLE HLINEAPP, *LPHLINEAPP;
+typedef HANDLE HPHONE, *LPHPHONE;
+typedef HANDLE HPHONEAPP, *LPHPHONEAPP;
+
+#define TAPIERR_REQUESTFAILED            -16L
+#define LINEERR_ALLOCATED              0x80000001
+#define LINEERR_BADDEVICEID            0x80000002
+#define LINEERR_BEARERMODEUNAVAIL      0x80000003
+#define LINEERR_CALLUNAVAIL            0x80000005
+#define LINEERR_COMPLETIONOVERRUN      0x80000006
+#define LINEERR_CONFERENCEFULL         0x80000007
+#define LINEERR_DIALBILLING            0x80000008
+#define LINEERR_DIALDIALTONE           0x80000009
+#define LINEERR_DIALPROMPT             0x8000000A
+#define LINEERR_DIALQUIET              0x8000000B
+#define LINEERR_INCOMPATIBLEAPIVERSION 0x8000000C
+#define LINEERR_INCOMPATIBLEEXTVERSION 0x8000000D
+#define LINEERR_INIFILECORRUPT         0x8000000E
+#define LINEERR_INUSE                  0x8000000F
+#define LINEERR_INVALADDRESS           0x80000010
+#define LINEERR_INVALADDRESSID         0x80000011
+#define LINEERR_INVALADDRESSMODE       0x80000012
+#define LINEERR_INVALADDRESSSTATE      0x80000013
+#define LINEERR_INVALAPPHANDLE         0x80000014
+#define LINEERR_INVALAPPNAME           0x80000015
+#define LINEERR_INVALBEARERMODE        0x80000016
+#define LINEERR_INVALCALLCOMPLMODE     0x80000017
+#define LINEERR_INVALCALLHANDLE        0x80000018
+#define LINEERR_INVALCALLPARAMS        0x80000019
+#define LINEERR_INVALCALLPRIVILEGE     0x8000001A
+#define LINEERR_INVALCALLSELECT        0x8000001B
+#define LINEERR_INVALCALLSTATE         0x8000001C
+#define LINEERR_INVALCALLSTATELIST     0x8000001D
+#define LINEERR_INVALCARD              0x8000001E
+#define LINEERR_INVALCOMPLETIONID      0x8000001F
+#define LINEERR_INVALCONFCALLHANDLE    0x80000020
+#define LINEERR_INVALCONSULTCALLHANDLE 0x80000021
+#define LINEERR_INVALCOUNTRYCODE       0x80000022
+#define LINEERR_INVALDEVICECLASS       0x80000023
+#define LINEERR_INVALDEVICEHANDLE      0x80000024
+#define LINEERR_INVALDIALPARAMS        0x80000025
+#define LINEERR_INVALDIGITLIST         0x80000026
+#define LINEERR_INVALDIGITMODE         0x80000027
+#define LINEERR_INVALDIGITS            0x80000028
+#define LINEERR_INVALEXTVERSION        0x80000029
+#define LINEERR_INVALGROUPID           0x8000002A
+#define LINEERR_INVALLINEHANDLE        0x8000002B
+#define LINEERR_INVALLINESTATE         0x8000002C
+#define LINEERR_INVALLOCATION          0x8000002D
+#define LINEERR_INVALMEDIALIST         0x8000002E
+#define LINEERR_INVALMEDIAMODE         0x8000002F
+#define LINEERR_INVALMESSAGEID         0x80000030
+#define LINEERR_INVALPARAM             0x80000032
+#define LINEERR_INVALPARKID            0x80000033
+#define LINEERR_INVALPARKMODE          0x80000034
+#define LINEERR_INVALPOINTER           0x80000035
+#define LINEERR_INVALPRIVSELECT        0x80000036
+#define LINEERR_INVALRATE              0x80000037
+#define LINEERR_INVALREQUESTMODE       0x80000038
+#define LINEERR_INVALTERMINALID        0x80000039
+#define LINEERR_INVALTERMINALMODE      0x8000003A
+#define LINEERR_INVALTIMEOUT           0x8000003B
+#define LINEERR_INVALTONE              0x8000003C
+#define LINEERR_INVALTONELIST          0x8000003D
+#define LINEERR_INVALTONEMODE          0x8000003E
+#define LINEERR_INVALTRANSFERMODE      0x8000003F
+#define LINEERR_LINEMAPPERFAILED       0x80000040
+#define LINEERR_NOCONFERENCE           0x80000041
+#define LINEERR_NODEVICE               0x80000042
+#define LINEERR_NODRIVER               0x80000043
+#define LINEERR_NOMEM                  0x80000044
+#define LINEERR_NOREQUEST              0x80000045
+#define LINEERR_NOTOWNER               0x80000046
+#define LINEERR_NOTREGISTERED          0x80000047
+#define LINEERR_OPERATIONFAILED        0x80000048
+#define LINEERR_OPERATIONUNAVAIL       0x80000049
+#define LINEERR_RATEUNAVAIL            0x8000004A
+#define LINEERR_RESOURCEUNAVAIL        0x8000004B
+#define LINEERR_REQUESTOVERRUN         0x8000004C
+#define LINEERR_STRUCTURETOOSMALL      0x8000004D
+#define LINEERR_TARGETNOTFOUND         0x8000004E
+#define LINEERR_TARGETSELF             0x8000004F
+#define LINEERR_UNINITIALIZED          0x80000050
+#define LINEERR_USERUSERINFOTOOBIG     0x80000051
+#define LINEERR_REINIT                 0x80000052
+#define LINEERR_ADDRESSBLOCKED         0x80000053
+#define LINEERR_BILLINGREJECTED        0x80000054
+#define LINEERR_INVALFEATURE           0x80000055
+#define LINEERR_NOMULTIPLEINSTANCE     0x80000056
+
+#define STRINGFORMAT_ASCII             0x00000001
+#define STRINGFORMAT_DBCS              0x00000002
+#define STRINGFORMAT_UNICODE           0x00000003
+#define STRINGFORMAT_BINARY            0x00000004
+
+#define LINEADDRESSMODE_ADDRESSID      0x00000001
+#define LINEADDRESSMODE_DIALABLEADDR   0x00000002
+
+#define LINEBEARERMODE_VOICE           0x00000001
+#define LINEBEARERMODE_SPEECH          0x00000002
+#define LINEBEARERMODE_MULTIUSE        0x00000004
+#define LINEBEARERMODE_DATA            0x00000008
+#define LINEBEARERMODE_ALTSPEECHDATA   0x00000010
+#define LINEBEARERMODE_NONCALLSIGNALING 0x00000020
+#define LINEBEARERMODE_PASSTHROUGH     0x00000040
+
+#define LINEMEDIAMODE_UNKNOWN          0x00000002
+#define LINEMEDIAMODE_INTERACTIVEVOICE 0x00000004
+#define LINEMEDIAMODE_AUTOMATEDVOICE   0x00000008
+#define LINEMEDIAMODE_DATAMODEM        0x00000010
+
+#define LINEDEVCAPFLAGS_CROSSADDRCONF  0x00000001
+#define LINEDEVCAPFLAGS_HIGHLEVCOMP    0x00000002
+#define LINEDEVCAPFLAGS_LOWLEVCOMP     0x00000004
+#define LINEDEVCAPFLAGS_MEDIACONTROL   0x00000008
+#define LINEDEVCAPFLAGS_MULTIPLEADDR   0x00000010
+#define LINEDEVCAPFLAGS_CLOSEDROP      0x00000020
+#define LINEDEVCAPFLAGS_DIALBILLING    0x00000040
+#define LINEDEVCAPFLAGS_DIALQUIET      0x00000080
+#define LINEDEVCAPFLAGS_DIALDIALTONE   0x00000100
+
+#define LINEDEVSTATE_OTHER             0x00000001
+#define LINEDEVSTATE_RINGING           0x00000002
+#define LINEDEVSTATE_CONNECTED         0x00000004
+#define LINEDEVSTATE_DISCONNECTED      0x00000008
+#define LINEDEVSTATE_MSGWAITON         0x00000010
+#define LINEDEVSTATE_MSGWAITOFF        0x00000020
+#define LINEDEVSTATE_INSERVICE         0x00000040
+#define LINEDEVSTATE_OUTOFSERVICE      0x00000080
+#define LINEDEVSTATE_MAINTENANCE       0x00000100
+#define LINEDEVSTATE_OPEN              0x00000200
+#define LINEDEVSTATE_CLOSE             0x00000400
+#define LINEDEVSTATE_NUMCALLS          0x00000800
+#define LINEDEVSTATE_NUMCOMPLETIONS    0x00001000
+#define LINEDEVSTATE_TERMINALS         0x00002000
+#define LINEDEVSTATE_ROAMMODE          0x00004000
+#define LINEDEVSTATE_BATTERY           0x00008000
+#define LINEDEVSTATE_SIGNAL            0x00010000
+#define LINEDEVSTATE_DEVSPECIFIC       0x00020000
+#define LINEDEVSTATE_REINIT            0x00040000
+#define LINEDEVSTATE_LOCK              0x00080000
+
+#define LINEDEVSTATE_CAPSCHANGE        0x00100000
+#define LINEDEVSTATE_CONFIGCHANGE      0x00200000
+#define LINEDEVSTATE_TRANSLATECHANGE   0x00400000
+#define LINEDEVSTATE_COMPLCANCEL       0x00800000
+#define LINEDEVSTATE_REMOVED           0x01000000
+
+#define LINELOCATIONOPTION_PULSEDIAL   0x00000001
+
+
+#define LINEFEATURE_DEVSPECIFIC        0x00000001
+#define LINEFEATURE_DEVSPECIFICFEAT    0x00000002
+#define LINEFEATURE_FORWARD            0x00000004
+#define LINEFEATURE_MAKECALL           0x00000008
+#define LINEFEATURE_SETMEDIACONTROL    0x00000010
+#define LINEFEATURE_SETTERMINAL        0x00000020
+#define LINEFEATURE_SETDEVSTATUS       0x00000040
+#define LINEFEATURE_FORWARDFWD         0x00000080
+#define LINEFEATURE_FORWARDDND         0x00000100
+
+/* tapi callback messages */
+
+#define LINE_ADDRESSSTATE              0L
+#define LINE_CALLINFO                  1L
+#define LINE_CALLSTATE                 2L
+#define LINE_CLOSE                     3L
+#define LINE_DEVSPECIFIC               4L
+#define LINE_DEVSPECIFICFEATURE        5L
+#define LINE_GATHERDIGITS              6L
+#define LINE_GENERATE                  7L
+#define LINE_LINEDEVSTATE              8L
+#define LINE_MONITORDIGITS             9L
+#define LINE_MONITORMEDIA             10L
+#define LINE_MONITORTONE              11L
+#define LINE_REPLY                    12L
+#define LINE_REQUEST                  13L
+#define PHONE_BUTTON                  14L
+#define PHONE_CLOSE                   15L
+#define PHONE_DEVSPECIFIC             16L
+#define PHONE_REPLY                   17L
+#define PHONE_STATE                   18L
+#define LINE_CREATE                   19L
+#define PHONE_CREATE                  20L
+
+#define LINE_AGENTSPECIFIC            21L
+#define LINE_AGENTSTATUS              22L
+#define LINE_APPNEWCALL               23L
+#define LINE_PROXYREQUEST             24L
+#define LINE_REMOVE                   25L
+#define PHONE_REMOVE                  26L
+/* these are used as Param1 of line_callstate messages */
+#define LINECALLSTATE_IDLE            0x00000001
+#define LINECALLSTATE_OFFERING        0x00000002
+#define LINECALLSTATE_ACCEPTED        0x00000004
+#define LINECALLSTATE_DIALTONE        0x00000008
+#define LINECALLSTATE_DIALING         0x00000010
+#define LINECALLSTATE_RINGBACK        0x00000020
+#define LINECALLSTATE_BUSY            0x00000040
+#define LINECALLSTATE_SPECIALINFO     0x00000080
+#define LINECALLSTATE_CONNECTED       0x00000100
+#define LINECALLSTATE_PROCEEDING      0x00000200
+#define LINECALLSTATE_ONHOLD          0x00000400
+#define LINECALLSTATE_CONFERENCED     0x00000800
+#define LINECALLSTATE_ONHOLDPENDCONF  0x00001000
+#define LINECALLSTATE_ONHOLDPENDTRANSFER 0x00002000
+#define LINECALLSTATE_DISCONNECTED    0x00004000
+#define LINECALLSTATE_UNKNOWN         0x00008000
+#define LINECONNECTEDMODE_ACTIVE            0x00000001
+#define LINECONNECTEDMODE_INACTIVE          0x00000002
+#define LINECONNECTEDMODE_ACTIVEHELD        0x00000004
+#define LINECONNECTEDMODE_INACTIVEHELD      0x00000008
+#define LINECONNECTEDMODE_CONFIRMED         0x00000010
+
+/* these are Param2 values for state_disconnected line_callstate messages */
+#define LINEDISCONNECTMODE_NORMAL           0x00000001
+#define LINEDISCONNECTMODE_UNKNOWN          0x00000002
+#define LINEDISCONNECTMODE_REJECT           0x00000004
+#define LINEDISCONNECTMODE_PICKUP           0x00000008
+#define LINEDISCONNECTMODE_FORWARDED        0x00000010
+#define LINEDISCONNECTMODE_BUSY             0x00000020
+#define LINEDISCONNECTMODE_NOANSWER         0x00000040
+#define LINEDISCONNECTMODE_BADADDRESS       0x00000080
+#define LINEDISCONNECTMODE_UNREACHABLE      0x00000100
+#define LINEDISCONNECTMODE_CONGESTION       0x00000200
+#define LINEDISCONNECTMODE_INCOMPATIBLE     0x00000400
+#define LINEDISCONNECTMODE_UNAVAIL          0x00000800
+#define LINEDISCONNECTMODE_NODIALTONE       0x00001000
+#define LINEDISCONNECTMODE_NUMBERCHANGED    0x00002000
+#define LINEDISCONNECTMODE_OUTOFORDER       0x00004000
+#define LINEDISCONNECTMODE_TEMPFAILURE      0x00008000
+#define LINEDISCONNECTMODE_QOSUNAVAIL       0x00010000
+#define LINEDISCONNECTMODE_BLOCKED          0x00020000
+#define LINEDISCONNECTMODE_DONOTDISTURB     0x00040000
+#define LINEDISCONNECTMODE_CANCELLED        0x00080000
+
+#define LINECALLSELECT_LINE                 0x00000001
+#define LINECALLSELECT_ADDRESS              0x00000002
+#define LINECALLSELECT_CALL                 0x00000004
+#define LINECALLSELECT_DEVICEID             0x00000008
+
+#define LINECALLPRIVILEGE_NONE              0x00000001
+#define LINECALLPRIVILEGE_MONITOR           0x00000002
+#define LINECALLPRIVILEGE_OWNER             0x00000004
+#define LINECALLFEATURE_ACCEPT              0x00000001
+#define LINECALLFEATURE_ADDTOCONF           0x00000002
+#define LINECALLFEATURE_ANSWER              0x00000004
+#define LINECALLFEATURE_BLINDTRANSFER       0x00000008
+#define LINECALLFEATURE_COMPLETECALL        0x00000010
+#define LINECALLFEATURE_COMPLETETRANSF      0x00000020
+#define LINECALLFEATURE_DIAL                0x00000040
+#define LINECALLFEATURE_DROP                0x00000080
+#define LINECALLFEATURE_GATHERDIGITS        0x00000100
+#define LINECALLFEATURE_GENERATEDIGITS      0x00000200
+#define LINECALLFEATURE_GENERATETONE        0x00000400
+#define LINECALLFEATURE_HOLD                0x00000800
+#define LINECALLFEATURE_MONITORDIGITS       0x00001000
+#define LINECALLFEATURE_MONITORMEDIA        0x00002000
+#define LINECALLFEATURE_MONITORTONES        0x00004000
+#define LINECALLFEATURE_PARK                0x00008000
+#define LINECALLFEATURE_PREPAREADDCONF      0x00010000
+#define LINECALLFEATURE_REDIRECT            0x00020000
+#define LINECALLFEATURE_REMOVEFROMCONF      0x00040000
+#define LINECALLFEATURE_SECURECALL          0x00080000
+#define LINECALLFEATURE_SENDUSERUSER        0x00100000
+#define LINECALLFEATURE_SETCALLPARAMS       0x00200000
+#define LINECALLFEATURE_SETMEDIACONTROL     0x00400000
+#define LINECALLFEATURE_SETTERMINAL         0x00800000
+#define LINECALLFEATURE_SETUPCONF           0x01000000
+#define LINECALLFEATURE_SETUPTRANSFER       0x02000000
+#define LINECALLFEATURE_SWAPHOLD            0x04000000
+#define LINECALLFEATURE_UNHOLD              0x08000000
+#define LINECALLFEATURE_RELEASEUSERUSERINFO 0x10000000
+
+typedef struct lineaddresscaps_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwLineDeviceID;
+    DWORD dwAddressSize;
+    DWORD dwAddressOffset;
+    DWORD dwDevSpecificSize;
+    DWORD dwDevSpecificOffset;
+    DWORD dwAddressSharing;
+    DWORD dwAddressStates;
+    DWORD dwCallInfoStates;
+    DWORD dwCallerIDFlags;
+    DWORD dwCalledIDFlags;
+    DWORD dwConnectedIDFlags;
+    DWORD dwRedirectionIDFlags;
+    DWORD dwRedirectingIDFlags;
+    DWORD dwCallStates;
+    DWORD dwDialToneModes;
+    DWORD dwBusyModes;
+    DWORD dwSpecialInfo;
+    DWORD dwDisconnectModes;
+    DWORD dwMaxNumActiveCalls;
+    DWORD dwMaxNumOnHoldCalls;
+    DWORD dwMaxNumOnHoldPendingCalls;
+    DWORD dwMaxNumConference;
+    DWORD dwMaxNumTransConf;
+    DWORD dwAddrCapFlags;
+    DWORD dwCallFeatures;
+    DWORD dwRemoveFromConfCaps;
+    DWORD dwRemoveFromConfState;
+    DWORD dwTransferModes;
+    DWORD dwParkModes;
+    DWORD dwForwardModes;
+    DWORD dwMaxForwardEntries;
+    DWORD dwMaxSpecificEntries;
+    DWORD dwMinFwdNumRings;
+    DWORD dwMaxFwdNumRings;
+    DWORD dwMaxCallCompletions;
+    DWORD dwCallCompletionConds;
+    DWORD dwCallCompletionModes;
+    DWORD dwNumCompletionMessages;
+    DWORD dwCompletionMsgTextEntrySize;
+    DWORD dwCompletionMsgTextSize;
+    DWORD dwCompletionMsgTextOffset;
+    DWORD dwAddressFeatures;
+} LINEADDRESSCAPS, *LPLINEADDRESSCAPS;
+
+typedef struct lineaddressstatus_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwNumInUse;
+    DWORD dwNumActiveCalls;
+    DWORD dwNumOnHoldCalls;
+    DWORD dwNumOnHoldPendCalls;
+    DWORD dwAddressFeatures;
+    DWORD dwNumRingsNoAnswer;
+    DWORD dwForwardNumEntries;
+    DWORD dwForwardSize;
+    DWORD dwForwardOffset;
+    DWORD dwTerminalModesSize;
+    DWORD dwTerminalModesOffset;
+    DWORD dwDevSpecificSize;
+    DWORD dwDevSpecificOffset;
+} LINEADDRESSSTATUS, *LPLINEADDRESSSTATUS;
+
+typedef struct linedialparams_tag {
+    DWORD dwDialPause;
+    DWORD dwDialSpeed;
+    DWORD dwDigitDuration;
+    DWORD dwWaitForDialtone;
+} LINEDIALPARAMS, *LPLINEDIALPARAMS;
+
+typedef struct linecallinfo_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    HLINE hLine;
+    DWORD dwLineDeviceID;
+    DWORD dwAddressID;
+    DWORD dwBearerMode;
+    DWORD dwRate;
+    DWORD dwMediaMode;
+    DWORD dwAppSpecific;
+    DWORD dwCallID;
+    DWORD dwRelatedCallID;
+    DWORD dwCallParamFlags;
+    DWORD dwCallStates;
+    DWORD dwMonitorDigitModes;
+    DWORD dwMonitorMediaModes;
+    LINEDIALPARAMS DialParams;
+    DWORD dwOrigin;
+    DWORD dwReason;
+    DWORD dwCompletionID;
+    DWORD dwNumOwners;
+    DWORD dwNumMonitors;
+    DWORD dwCountryCode;
+    DWORD dwTrunk;
+    DWORD dwCallerIDFlags;
+    DWORD dwCallerIDSize;
+    DWORD dwCallerIDOffset;
+    DWORD dwCallerIDNameSize;
+    DWORD dwCallerIDNameOffset;
+    DWORD dwCalledIDFlags;
+    DWORD dwCalledIDSize;
+    DWORD dwCalledIDOffset;
+    DWORD dwCalledIDNameSize;
+    DWORD dwCalledIDNameOffset;
+    DWORD dwConnectedIDFlags;
+    DWORD dwConnectedIDSize;
+    DWORD dwConnectedIDOffset;
+    DWORD dwConnectedIDNameSize;
+    DWORD dwConnectedIDNameOffset;
+    DWORD dwRedirectionIDFlags;
+    DWORD dwRedirectionIDSize;
+    DWORD dwRedirectionIDOffset;
+    DWORD dwRedirectionIDNameSize;
+    DWORD dwRedirectionIDNameOffset;
+    DWORD dwRedirectingIDFlags;
+    DWORD dwRedirectingIDSize;
+    DWORD dwRedirectingIDOffset;
+    DWORD dwRedirectingIDNameSize;
+    DWORD dwRedirectingIDNameOffset;
+    DWORD dwAppNameSize;
+    DWORD dwAppNameOffset;
+    DWORD dwDisplayableAddressSize;
+    DWORD dwDisplayableAddressOffset;
+    DWORD dwCalledPartySize;
+    DWORD dwCalledPartyOffset;
+    DWORD dwCommentSize;
+    DWORD dwCommentOffset;
+    DWORD dwDisplaySize;
+    DWORD dwDisplayOffset;
+    DWORD dwUserUserInfoSize;
+    DWORD dwUserUserInfoOffset;
+    DWORD dwHighLevelCompSize;
+    DWORD dwHighLevelCompOffset;
+    DWORD dwLowLevelCompSize;
+    DWORD dwLowLevelCompOffset;
+    DWORD dwChargingInfoSize;
+    DWORD dwChargingInfoOffset;
+    DWORD dwTerminalModesSize;
+    DWORD dwTerminalModesOffset;
+    DWORD dwDevSpecificSize;
+    DWORD dwDevSpecificOffset;
+} LINECALLINFO, *LPLINECALLINFO;
+
+typedef struct linecalllist_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwCallsNumEntries;
+    DWORD dwCallsSize;
+    DWORD dwCallsOffset;
+} LINECALLLIST, *LPLINECALLLIST;
+
+typedef struct linecallparams_tag {
+    DWORD dwTotalSize;
+    DWORD dwBearerMode;
+    DWORD dwMinRate;
+    DWORD dwMaxRate;
+    DWORD dwMediaMode;
+    DWORD dwCallParamFlags;
+    DWORD dwAddressMode;
+    DWORD dwAddressID;
+    LINEDIALPARAMS DialParams;
+    DWORD dwOrigAddressSize;
+    DWORD dwOrigAddressOffset;
+    DWORD dwDisplayableAddressSize;
+    DWORD dwDisplayableAddressOffset;
+    DWORD dwCalledPartySize;
+    DWORD dwCalledPartyOffset;
+    DWORD dwCommentSize;
+    DWORD dwCommentOffset;
+    DWORD dwUserUserInfoSize;
+    DWORD dwUserUserInfoOffset;
+    DWORD dwHighLevelCompSize;
+    DWORD dwHighLevelCompOffset;
+    DWORD dwLowLevelCompSize;
+    DWORD dwLowLevelCompOffset;
+    DWORD dwDevSpecificSize;
+    DWORD dwDevSpecificOffset;
+} LINECALLPARAMS, *LPLINECALLPARAMS;
+
+typedef struct linecallstatus_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwCallState;
+    DWORD dwCallStateMode;
+    DWORD dwCallPrivilege;
+    DWORD dwCallFeatures;
+    DWORD dwDevSpecificSize;
+    DWORD dwDevSpecificOffset;
+} LINECALLSTATUS, *LPLINECALLSTATUS;
+
+typedef struct linecountrylist_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwNumCountries;
+    DWORD dwCountryListSize;
+    DWORD dwCountryListOffset;
+} LINECOUNTRYLIST, *LPLINECOUNTRYLIST;
+
+typedef struct linecountryentry_tag {
+    DWORD dwCountryID;
+    DWORD dwCountryCode;
+    DWORD dwNextCountryID;
+    DWORD dwCountryNameSize;
+    DWORD dwCountryNameOffset;
+    DWORD dwSameAreaRuleSize;
+    DWORD dwSameAreaRuleOffset;
+    DWORD dwLongDistanceRuleSize;
+    DWORD dwLongDistanceRuleOffset;
+    DWORD dwInternationalRuleSize;
+    DWORD dwInternationalRuleOffset;
+} LINECOUNTRYENTRY, *LPLINECOUNTRYENTRY;
+
+typedef struct linedevcaps_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwProviderInfoSize;
+    DWORD dwProviderInfoOffset;
+    DWORD dwSwitchInfoSize;
+    DWORD dwSwitchInfoOffset;
+    DWORD dwPermanentLineID;
+    DWORD dwLineNameSize;
+    DWORD dwLineNameOffset;
+    DWORD dwStringFormat;
+    DWORD dwAddressModes;
+    DWORD dwNumAddresses;
+    DWORD dwBearerModes;
+    DWORD dwMaxRate;
+    DWORD dwMediaModes;
+    DWORD dwGenerateToneModes;
+    DWORD dwGenerateToneMaxNumFreq;
+    DWORD dwGenerateDigitModes;
+    DWORD dwMonitorToneMaxNumFreq;
+    DWORD dwMonitorToneMaxNumEntries;
+    DWORD dwMonitorDigitModes;
+    DWORD dwGatherDigitsMinTimeout;
+    DWORD dwGatherDigitsMaxTimeout;
+    DWORD dwMedCtlDigitMaxListSize;
+    DWORD dwMedCtlMediaMaxListSize;
+    DWORD dwMedCtlToneMaxListSize;
+    DWORD dwMedCtlCallStateMaxListSize;
+    DWORD dwDevCapFlags;
+    DWORD dwMaxNumActiveCalls;
+    DWORD dwAnswerMode;
+    DWORD dwRingModes;
+    DWORD dwLineStates;
+    DWORD dwUUIAcceptSize;
+    DWORD dwUUIAnswerSize;
+    DWORD dwUUIMakeCallSize;
+    DWORD dwUUIDropSize;
+    DWORD dwUUISendUserUserInfoSize;
+    DWORD dwUUICallInfoSize;
+    LINEDIALPARAMS MinDialParams;
+    LINEDIALPARAMS MaxDialParams;
+    LINEDIALPARAMS DefaultDialParams;
+    DWORD dwNumTerminals;
+    DWORD dwTerminalCapsSize;
+    DWORD dwTerminalCapsOffset;
+    DWORD dwTerminalTextEntrySize;
+    DWORD dwTerminalTextSize;
+    DWORD dwTerminalTextOffset;
+    DWORD dwDevSpecificSize;
+    DWORD dwDevSpecificOffset;
+    DWORD dwLineFeatures;
+} LINEDEVCAPS, *LPLINEDEVCAPS;
+
+typedef struct linedevstatus_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwNumOpens;
+    DWORD dwOpenMediaModes;
+    DWORD dwNumActiveCalls;
+    DWORD dwNumOnHoldCalls;
+    DWORD dwNumOnHoldPendCalls;
+    DWORD dwLineFeatures;
+    DWORD dwNumCallCompletions;
+    DWORD dwRingMode;
+    DWORD dwSignalLevel;
+    DWORD dwBatteryLevel;
+    DWORD dwRoamMode;
+    DWORD dwDevStatusFlags;
+    DWORD dwTerminalModesSize;
+    DWORD dwTerminalModesOffset;
+    DWORD dwDevSpecificSize;
+    DWORD dwDevSpecificOffset;
+} LINEDEVSTATUS, *LPLINEDEVSTATUS;
+
+typedef struct lineextensionid_tag {
+    DWORD dwExtensionID0;
+    DWORD dwExtensionID1;
+    DWORD dwExtensionID2;
+    DWORD dwExtensionID3;
+} LINEEXTENSIONID, *LPLINEEXTENSIONID;
+
+typedef struct lineforward_tag {
+    DWORD dwForwardMode;
+    DWORD dwCallerAddressSize;
+    DWORD dwCallerAddressOffset;
+    DWORD dwDestCountryCode;
+    DWORD dwDestAddressSize;
+    DWORD dwDestAddressOffset;
+} LINEFORWARD, *LPLINEFORWARD;
+
+typedef struct lineforwardlist_tag {
+    DWORD dwTotalSize;
+    DWORD dwNumEntries;
+    LINEFORWARD ForwardList[1];
+} LINEFORWARDLIST, *LPLINEFORWARDLIST;
+
+typedef struct linegeneratetone_tag {
+    DWORD dwFrequency;
+    DWORD dwCadenceOn;
+    DWORD dwCadenceOff;
+    DWORD dwVolume;
+} LINEGENERATETONE, *LPLINEGENERATETONE;
+
+typedef struct lineinitializeexparams_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwOptions;
+    union {
+    HANDLE hEvent;
+    HANDLE hCompletionPort;
+    } Handles;
+    DWORD dwCompletionKey;
+} LINEINITIALIZEEXPARAMS, *LPLINEINITIALIZEEXPARAMS;
+
+typedef struct linemediacontrolcallstate_tag {
+    DWORD dwCallStates;
+    DWORD dwMediaControl;
+} LINEMEDIACONTROLCALLSTATE, *LPLINEMEDIACONTROLCALLSTATE;
+
+typedef struct linemediacontroldigit_tag {
+    DWORD dwDigit;
+    DWORD dwDigitModes;
+    DWORD dwMediaControl;
+} LINEMEDIACONTROLDIGIT, *LPLINEMEDIACONTROLDIGIT;
+
+typedef struct linemediacontrolmedia_tag {
+    DWORD dwMediaModes;
+    DWORD dwDuration;
+    DWORD dwMediaControl;
+} LINEMEDIACONTROLMEDIA, *LPLINEMEDIACONTROLMEDIA;
+
+typedef struct linemediacontroltone_tag {
+    DWORD dwAppSpecific;
+    DWORD dwDuration;
+    DWORD dwFrequency1;
+    DWORD dwFrequency2;
+    DWORD dwFrequency3;
+    DWORD dwMediaControl;
+} LINEMEDIACONTROLTONE, *LPLINEMEDIACONTROLTONE;
+
+typedef struct linemonitortone_tag {
+    DWORD dwAppSpecific;
+    DWORD dwDuration;
+    DWORD dwFrequency1;
+    DWORD dwFrequency2;
+    DWORD dwFrequency3;
+} LINEMONITORTONE, *LPLINEMONITORTONE;
+
+typedef struct lineproviderlist_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwNumProviders;
+    DWORD dwProviderListSize;
+    DWORD dwProviderListOffset;
+} LINEPROVIDERLIST, *LPLINEPROVIDERLIST;
+
+typedef struct linetranslatecaps_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwNumLocations;
+    DWORD dwLocationListSize;
+    DWORD dwLocationListOffset;
+    DWORD dwCurrentLocationID;
+    DWORD dwNumCards;
+    DWORD dwCardListSize;
+    DWORD dwCardListOffset;
+    DWORD dwCurrentPreferredCardID;
+} LINETRANSLATECAPS, *LPLINETRANSLATECAPS;
+
+typedef struct linelocationentry_tag {
+    DWORD dwPermanentLocationID;
+    DWORD dwLocationNameSize;
+    DWORD dwLocationNameOffset;
+    DWORD dwCountryCode;
+    DWORD dwCityCodeSize;
+    DWORD dwCityCodeOffset;
+    DWORD dwPreferredCardID;
+    DWORD dwLocalAccessCodeSize;
+    DWORD dwLocalAccessCodeOffset;
+    DWORD dwLongDistanceAccessCodeSize;
+    DWORD dwLongDistanceAccessCodeOffset;
+    DWORD dwTollPrefixListSize;
+    DWORD dwTollPrefixListOffset;
+    DWORD dwCountryID;
+    DWORD dwOptions;
+    DWORD dwCancelCallWaitingSize;
+    DWORD dwCancelCallWaitingOffset;
+} LINELOCATIONENTRY, *LPLINELOCATIONENTRY;
+
+typedef struct linecardentry_tag {
+    DWORD dwPermanentCardID;
+    DWORD dwCardNameSize;
+    DWORD dwCardNameOffset;
+    DWORD dwCardNumberDigits;
+    DWORD dwSameAreaRuleSize;
+    DWORD dwSameAreaRuleOffset;
+    DWORD dwLongDistanceRuleSize;
+    DWORD dwLongDistanceRuleOffset;
+    DWORD dwInternationalRuleSize;
+    DWORD dwInternationalRuleOffset;
+    DWORD dwOptions;
+} LINECARDENTRY, *LPLINECARDENTRY;
+
+
+typedef struct linetranslateoutput_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwDialableStringSize;
+    DWORD dwDialableStringOffset;
+    DWORD dwDisplayableStringSize;
+    DWORD dwDisplayableStringOffset;
+    DWORD dwCurrentCountry;
+    DWORD dwDestCountry;
+    DWORD dwTranslateResults;
+} LINETRANSLATEOUTPUT, *LPLINETRANSLATEOUTPUT;
+
+typedef void (CALLBACK *LINECALLBACK)(DWORD, DWORD, DWORD, DWORD, DWORD, DWORD);
+
+typedef struct _PHONEAPP {
+  int dummy;
+} PHONEAPP, *LPPHONEAPP;
+
+typedef struct _PHONE {
+    DWORD dwRingMode;
+    DWORD dwVolume;
+} PHONE, *LPPHONE;
+
+typedef struct phonebuttoninfo_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwButtonMode;
+    DWORD dwButtonFunction;
+    DWORD dwButtonTextSize;
+    DWORD dwButtonTextOffset;
+    DWORD dwDevSpecificSize;
+    DWORD dwDevSpecificOffset;
+    DWORD dwButtonState;
+} PHONEBUTTONINFO, *LPPHONEBUTTONINFO;
+
+typedef struct phonecaps_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwProviderInfoSize;
+    DWORD dwProviderInfoOffset;
+    DWORD dwPhoneInfoSize;
+    DWORD dwPhoneInfoOffset;
+    DWORD dwPermanentPhoneID;
+    DWORD dwPhoneNameSize;
+    DWORD dwPhoneNameOffset;
+    DWORD dwStringFormat;
+    DWORD dwPhoneStates;
+    DWORD dwHookSwitchDevs;
+    DWORD dwHandsetHookSwitchModes;
+    DWORD dwSpeakerHookSwitchModes;
+    DWORD dwHeadsetHookSwitchModes;
+    DWORD dwVolumeFlags;
+    DWORD dwGainFlags;
+    DWORD dwDisplayNumRows;
+    DWORD dwDisplayNumColumns;
+    DWORD dwNumRingModes;
+    DWORD dwNumButtonLamps;
+    DWORD dwButtonModesSize;
+    DWORD dwButtonModesOffset;
+    DWORD dwButtonFunctionsSize;
+    DWORD dwButtonFunctionsOffset;
+    DWORD dwLampModesSize;
+    DWORD dwLampModesOffset;
+    DWORD dwNumSetData;
+    DWORD dwSetDataSize;
+    DWORD dwSetDataOffset;
+    DWORD dwNumGetData;
+    DWORD dwGetDataSize;
+    DWORD dwGetDataOffset;
+    DWORD dwDevSpecificSize;
+    DWORD dwDevSpecificOffset;
+} PHONECAPS, *LPPHONECAPS;
+
+typedef struct phoneextensionid_tag {
+    DWORD dwExtensionID0;
+    DWORD dwExtensionID1;
+    DWORD dwExtensionID2;
+    DWORD dwExtensionID3;
+} PHONEEXTENSIONID, *LPPHONEEXTENSIONID;
+
+typedef struct phonestatus_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwStatusFlags;
+    DWORD dwNumOwners;
+    DWORD dwRingMOde;
+    DWORD dwRingVolume;
+    DWORD dwHandsetHookSwitchMode;
+    DWORD dwHandsetVolume;
+    DWORD dwHandsetGain;
+    DWORD dwSpeakerHookSwitchMode;
+    DWORD dwSpeakerVolume;
+    DWORD dwSpeakerGain;
+    DWORD dwHeadsetHookSwitchMode;
+    DWORD dwHeadsetVolume;
+    DWORD dwHeadsetGain;
+    DWORD dwDisplaySize;
+    DWORD dwDisplayOffset;
+    DWORD dwLampModesSize;
+    DWORD dwLampModesOffset;
+    DWORD dwOwnerNameSize;
+    DWORD dwOwnerNameOffset;
+    DWORD dwDevSpecificSize;
+    DWORD dwDevSpecificOffset;
+} PHONESTATUS, *LPPHONESTATUS;
+
+typedef void (CALLBACK *PHONECALLBACK)(HANDLE, DWORD, DWORD, DWORD, DWORD, DWORD);
+
+typedef struct varstring_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwStringFormat;
+    DWORD dwStringSize;
+    DWORD dwStringOffset;
+} VARSTRING, *LPVARSTRING;
+
+/* line functions */
+DWORD WINAPI lineAccept(HCALL,LPCSTR,DWORD);
+DWORD WINAPI lineAddProvider(LPCSTR,HWND,LPDWORD);
+DWORD WINAPI lineAddToConference(HCALL,HCALL);
+DWORD WINAPI lineAnswer(HCALL,LPCSTR,DWORD);
+DWORD WINAPI lineBlindTransfer(HCALL,LPCSTR,DWORD);
+DWORD WINAPI lineClose(HLINE);
+DWORD WINAPI lineCompleteCall(HCALL,LPDWORD,DWORD,DWORD);
+DWORD WINAPI lineCompleteTransfer(HCALL,HCALL,LPHCALL,DWORD);
+DWORD WINAPI lineConfigDialog(DWORD,HWND,LPCSTR);
+DWORD WINAPI lineConfigDialogEdit(DWORD,HWND,LPCSTR,LPVOID const,DWORD,LPVARSTRING);
+DWORD WINAPI lineConfigProvider(HWND,DWORD);
+DWORD WINAPI lineDeallocateCall(HCALL);
+DWORD WINAPI lineDevSpecific(HLINE,DWORD,HCALL,LPVOID,DWORD);
+DWORD WINAPI lineDevSpecificFeature(HLINE,DWORD,LPVOID,DWORD);
+DWORD WINAPI lineDial(HCALL,LPCSTR,DWORD);
+DWORD WINAPI lineDrop(HCALL,LPCSTR,DWORD);
+DWORD WINAPI lineForward(HLINE,DWORD,DWORD,LPLINEFORWARDLIST,DWORD,LPHCALL,LPLINECALLPARAMS);
+DWORD WINAPI lineGatherDigits(HCALL,DWORD,LPSTR,DWORD,LPCSTR,DWORD,DWORD);
+DWORD WINAPI lineGenerateDigits(HCALL,DWORD,LPCSTR,DWORD);
+DWORD WINAPI lineGenerateTone(HCALL,DWORD,DWORD,DWORD,LPLINEGENERATETONE);
+DWORD WINAPI lineGetAddressCaps(HLINEAPP,DWORD,DWORD,DWORD,DWORD,LPLINEADDRESSCAPS);
+DWORD WINAPI lineGetAddressID(HLINE,LPDWORD,DWORD,LPCSTR,DWORD);
+DWORD WINAPI lineGetAddressStatus(HLINE,DWORD,LPLINEADDRESSSTATUS);
+DWORD WINAPI lineGetAppPriority(LPCSTR,DWORD,LPLINEEXTENSIONID const,DWORD,LPVARSTRING,LPDWORD);
+DWORD WINAPI lineGetCallInfo(HCALL,LPLINECALLINFO);
+DWORD WINAPI lineGetCallStatus(HCALL,LPLINECALLSTATUS);
+DWORD WINAPI lineGetConfRelatedCalls(HCALL,LPLINECALLLIST);
+DWORD WINAPI lineGetCountry(DWORD,DWORD,LPLINECOUNTRYLIST);
+DWORD WINAPI lineGetDevCaps(HLINEAPP,DWORD,DWORD,DWORD,LPLINEDEVCAPS);
+DWORD WINAPI lineGetDevConfig(DWORD,LPVARSTRING,LPCSTR);
+DWORD WINAPI lineGetID(HLINE,DWORD,HCALL,DWORD,LPVARSTRING,LPCSTR);
+DWORD WINAPI lineGetIcon(DWORD,LPCSTR,HICON *);
+DWORD WINAPI lineGetLineDevStatus(HLINE,LPLINEDEVSTATUS);
+DWORD WINAPI lineGetNewCalls(HLINE,DWORD,DWORD,LPLINECALLLIST);
+DWORD WINAPI lineGetNumRings(HLINE,DWORD,LPDWORD);
+DWORD WINAPI lineGetProviderList(DWORD dwAPIVersion,LPLINEPROVIDERLIST);
+DWORD WINAPI lineGetRequest(HLINEAPP,DWORD,LPVOID);
+DWORD WINAPI lineGetStatusMessages(HLINE,LPDWORD,LPDWORD);
+DWORD WINAPI lineGetTranslateCaps(HLINEAPP,DWORD,LPLINETRANSLATECAPS);
+DWORD WINAPI lineHandoff(HCALL,LPCSTR,DWORD);
+DWORD WINAPI lineHold(HCALL);
+DWORD WINAPI lineInitialize(LPHLINEAPP,HINSTANCE,LINECALLBACK,LPCSTR,LPDWORD);
+LONG  WINAPI lineInitializeExA(LPHLINEAPP,HINSTANCE,LINECALLBACK,LPCSTR,LPDWORD,LPDWORD,LPLINEINITIALIZEEXPARAMS);
+LONG  WINAPI lineInitializeExW(LPHLINEAPP,HINSTANCE,LINECALLBACK,LPCWSTR,LPDWORD,LPDWORD,LPLINEINITIALIZEEXPARAMS);
+#define      lineInitializeEx WINELIB_NAME_AW(lineInitializeEx)
+DWORD WINAPI lineMakeCall(HLINE,LPHCALL,LPCSTR,DWORD,LPLINECALLPARAMS);
+DWORD WINAPI lineMonitorDigits(HCALL,DWORD);
+DWORD WINAPI lineMonitorMedia(HCALL,DWORD);
+DWORD WINAPI lineMonitorTones(HCALL,LPLINEMONITORTONE,DWORD);
+DWORD WINAPI lineNegotiateAPIVersion(HLINEAPP,DWORD,DWORD,DWORD,LPDWORD,LPLINEEXTENSIONID);
+DWORD WINAPI lineNegotiateExtVersion(HLINEAPP,DWORD,DWORD,DWORD,DWORD,LPDWORD);
+DWORD WINAPI lineOpen(HLINEAPP,DWORD,LPHLINE,DWORD,DWORD,DWORD,DWORD,DWORD,LPLINECALLPARAMS);
+DWORD WINAPI linePark(HCALL,DWORD,LPCSTR,LPVARSTRING);
+DWORD WINAPI linePickup(HLINE,DWORD,LPHCALL,LPCSTR,LPCSTR);
+DWORD WINAPI linePrepareAddToConference(HCALL,LPHCALL,LPLINECALLPARAMS);
+DWORD WINAPI lineRedirect(HCALL,LPCSTR,DWORD);
+DWORD WINAPI lineRegisterRequestRecipient(HLINEAPP,DWORD,DWORD,DWORD);
+DWORD WINAPI lineReleaseUserUserInfo(HCALL);
+DWORD WINAPI lineRemoveFromConference(HCALL);
+DWORD WINAPI lineRemoveProvider(DWORD,HWND);
+DWORD WINAPI lineSecureCall(HCALL);
+DWORD WINAPI lineSendUserUserInfo(HCALL,LPCSTR,DWORD);
+DWORD WINAPI lineSetAppPriority(LPCSTR,DWORD,LPLINEEXTENSIONID const,DWORD,LPCSTR,DWORD);
+DWORD WINAPI lineSetAppSpecific(HCALL,DWORD);
+DWORD WINAPI lineSetCallParams(HCALL,DWORD,DWORD,DWORD,LPLINEDIALPARAMS);
+DWORD WINAPI lineSetCallPrivilege(HCALL,DWORD);
+DWORD WINAPI lineSetCurrentLocation(HLINEAPP,DWORD);
+DWORD WINAPI lineSetDevConfig(DWORD,LPVOID,DWORD,LPCSTR);
+DWORD WINAPI lineSetMediaControl(HLINE,DWORD,HCALL,DWORD,LPLINEMEDIACONTROLDIGIT,DWORD,LPLINEMEDIACONTROLMEDIA,DWORD,LPLINEMEDIACONTROLTONE,DWORD,LPLINEMEDIACONTROLCALLSTATE,DWORD);
+DWORD WINAPI lineSetMediaMode(HCALL,DWORD);
+DWORD WINAPI lineSetNumRings(HLINE,DWORD,DWORD);
+DWORD WINAPI lineSetStatusMessages(HLINE,DWORD,DWORD);
+DWORD WINAPI lineSetTerminal(HLINE,DWORD,HCALL,DWORD,DWORD,DWORD,DWORD);
+DWORD WINAPI lineSetTollList(HLINEAPP,DWORD,LPCSTR,DWORD);
+DWORD WINAPI lineSetupConference(HCALL,HLINE,LPHCALL,LPHCALL,DWORD,LPLINECALLPARAMS);
+DWORD WINAPI lineSetupTransfer(HCALL,LPHCALL,LPLINECALLPARAMS);
+DWORD WINAPI lineShutdown(HLINEAPP);
+DWORD WINAPI lineSwapHold(HCALL,HCALL);
+DWORD WINAPI lineTranslateAddress(HLINEAPP,DWORD,DWORD,LPCSTR,DWORD,DWORD,LPLINETRANSLATEOUTPUT);
+DWORD WINAPI lineTranslateDialog(HLINEAPP,DWORD,DWORD,HWND,LPCSTR);
+DWORD WINAPI lineUncompleteCall(HLINE,DWORD);
+DWORD WINAPI lineUnHold(HCALL);
+DWORD WINAPI lineUnpark(HLINE,DWORD,LPHCALL,LPCSTR);
+
+DWORD WINAPI lineAddProviderA(LPCSTR,HWND,LPDWORD);
+DWORD WINAPI lineBlindTransferA(HCALL,LPCSTR,DWORD);
+DWORD WINAPI lineConfigDialogA(DWORD,HWND,LPCSTR);
+DWORD WINAPI lineConfigDialogEditA(DWORD,HWND,LPCSTR,LPVOID const,DWORD,LPVARSTRING);
+DWORD WINAPI lineDialA(HCALL,LPCSTR,DWORD);
+DWORD WINAPI lineForwardA(HLINE,DWORD,DWORD,LPLINEFORWARDLIST,DWORD,LPHCALL,LPLINECALLPARAMS);
+DWORD WINAPI lineGatherDigitsA(HCALL,DWORD,LPSTR,DWORD,LPCSTR,DWORD,DWORD);
+DWORD WINAPI lineGenerateDigitsA(HCALL,DWORD,LPCSTR,DWORD);
+DWORD WINAPI lineGetAddressCapsA(HLINEAPP,DWORD,DWORD,DWORD,DWORD,LPLINEADDRESSCAPS);
+DWORD WINAPI lineGetAddressIDA(HLINE,LPDWORD,DWORD,LPCSTR,DWORD);
+DWORD WINAPI lineGetAddressStatusA(HLINE,DWORD,LPLINEADDRESSSTATUS);
+DWORD WINAPI lineGetAppPriorityA(LPCSTR,DWORD,LPLINEEXTENSIONID const,DWORD,LPVARSTRING,LPDWORD);
+DWORD WINAPI lineGetCallInfoA(HCALL,LPLINECALLINFO);
+DWORD WINAPI lineGetCountryA(DWORD,DWORD,LPLINECOUNTRYLIST);
+DWORD WINAPI lineGetDevCapsA(HLINEAPP,DWORD,DWORD,DWORD,LPLINEDEVCAPS);
+DWORD WINAPI lineGetDevConfigA(DWORD,LPVARSTRING,LPCSTR);
+DWORD WINAPI lineGetIDA(HLINE,DWORD,HCALL,DWORD,LPVARSTRING,LPCSTR);
+DWORD WINAPI lineGetIconA(DWORD,LPCSTR,HICON *);
+DWORD WINAPI lineGetLineDevStatusA(HLINE,LPLINEDEVSTATUS);
+DWORD WINAPI lineGetProviderListA(DWORD dwAPIVersion,LPLINEPROVIDERLIST);
+DWORD WINAPI lineGetRequestA(HLINEAPP,DWORD,LPVOID);
+DWORD WINAPI lineGetTranslateCapsA(HLINEAPP,DWORD,LPLINETRANSLATECAPS);
+DWORD WINAPI lineHandoffA(HCALL,LPCSTR,DWORD);
+DWORD WINAPI lineMakeCallA(HLINE,LPHCALL,LPCSTR,DWORD,LPLINECALLPARAMS);
+DWORD WINAPI lineOpenA(HLINEAPP,DWORD,LPHLINE,DWORD,DWORD,DWORD,DWORD,DWORD,LPLINECALLPARAMS);
+DWORD WINAPI lineParkA(HCALL,DWORD,LPCSTR,LPVARSTRING);
+DWORD WINAPI linePickupA(HLINE,DWORD,LPHCALL,LPCSTR,LPCSTR);
+DWORD WINAPI linePrepareAddToConferenceA(HCALL,LPHCALL,LPLINECALLPARAMS);
+DWORD WINAPI lineRedirectA(HCALL,LPCSTR,DWORD);
+DWORD WINAPI lineSetAppPriorityA(LPCSTR,DWORD,LPLINEEXTENSIONID const,DWORD,LPCSTR,DWORD);
+DWORD WINAPI lineSetDevConfigA(DWORD,LPVOID,DWORD,LPCSTR);
+DWORD WINAPI lineSetTollListA(HLINEAPP,DWORD,LPCSTR,DWORD);
+DWORD WINAPI lineSetupConferenceA(HCALL,HLINE,LPHCALL,LPHCALL,DWORD,LPLINECALLPARAMS);
+DWORD WINAPI lineSetupTransferA(HCALL,LPHCALL,LPLINECALLPARAMS);
+DWORD WINAPI lineTranslateAddressA(HLINEAPP,DWORD,DWORD,LPCSTR,DWORD,DWORD,LPLINETRANSLATEOUTPUT);
+DWORD WINAPI lineTranslateDialogA(HLINEAPP,DWORD,DWORD,HWND,LPCSTR);
+DWORD WINAPI lineUnhold(HCALL);
+DWORD WINAPI lineUnparkA(HLINE,DWORD,LPHCALL,LPCSTR);
+
+/* phone functions */
+DWORD WINAPI phoneClose(HPHONE);
+DWORD WINAPI phoneConfigDialog(DWORD,HWND,LPCSTR);
+DWORD WINAPI phoneDevSpecific(HPHONE,LPVOID,DWORD);
+DWORD WINAPI phoneGetButtonInfo(HPHONE,DWORD,LPPHONEBUTTONINFO);
+DWORD WINAPI phoneGetData(HPHONE,DWORD,LPVOID,DWORD);
+DWORD WINAPI phoneGetDevCaps(HPHONEAPP,DWORD,DWORD,DWORD,LPPHONECAPS);
+DWORD WINAPI phoneGetDisplay(HPHONE,LPVARSTRING);
+DWORD WINAPI phoneGetGain(HPHONE,DWORD,LPDWORD);
+DWORD WINAPI phoneGetHookSwitch(HPHONE,LPDWORD);
+DWORD WINAPI phoneGetID(HPHONE,LPVARSTRING,LPCSTR);
+DWORD WINAPI phoneGetIcon(DWORD,LPCSTR,HICON *);
+DWORD WINAPI phoneGetLamp(HPHONE,DWORD,LPDWORD);
+DWORD WINAPI phoneGetRing(HPHONE,LPDWORD,LPDWORD);
+DWORD WINAPI phoneGetStatus(HPHONE,LPPHONESTATUS);
+DWORD WINAPI phoneGetStatusMessages(HPHONE,LPDWORD,LPDWORD,LPDWORD);
+DWORD WINAPI phoneGetVolume(HPHONE,DWORD,LPDWORD);
+DWORD WINAPI phoneInitialize(LPHPHONEAPP,HINSTANCE,PHONECALLBACK,LPCSTR,LPDWORD);
+DWORD WINAPI phoneNegotiateAPIVersion(HPHONEAPP,DWORD,DWORD,DWORD,LPDWORD,LPPHONEEXTENSIONID);
+DWORD WINAPI phoneNegotiateExtVersion(HPHONEAPP,DWORD,DWORD,DWORD,DWORD,LPDWORD);
+DWORD WINAPI phoneOpen(HPHONEAPP,DWORD,LPHPHONE,DWORD,DWORD,DWORD,DWORD);
+DWORD WINAPI phoneSetButtonInfo(HPHONE,DWORD,LPPHONEBUTTONINFO);
+DWORD WINAPI phoneSetData(HPHONE,DWORD,LPVOID,DWORD);
+DWORD WINAPI phoneSetDisplay(HPHONE,DWORD,DWORD,LPCSTR,DWORD);
+DWORD WINAPI phoneSetGain(HPHONE,DWORD,DWORD);
+DWORD WINAPI phoneSetHookSwitch(HPHONE,DWORD,DWORD);
+DWORD WINAPI phoneSetLamp(HPHONE,DWORD,DWORD);
+DWORD WINAPI phoneSetRing(HPHONE,DWORD,DWORD);
+DWORD WINAPI phoneSetStatusMessages(HPHONE,DWORD,DWORD,DWORD);
+DWORD WINAPI phoneSetVolume(HPHONE,DWORD,DWORD);
+DWORD WINAPI phoneShutdown(HPHONEAPP);
+
+DWORD WINAPI phoneConfigDialogA(DWORD,HWND,LPCSTR);
+DWORD WINAPI phoneGetButtonInfoA(HPHONE,DWORD,LPPHONEBUTTONINFO);
+DWORD WINAPI phoneGetDevCapsA(HPHONEAPP,DWORD,DWORD,DWORD,LPPHONECAPS);
+DWORD WINAPI phoneGetIDA(HPHONE,LPVARSTRING,LPCSTR);
+DWORD WINAPI phoneGetIconA(DWORD,LPCSTR,HICON *);
+DWORD WINAPI phoneGetStatusA(HPHONE,LPPHONESTATUS);
+DWORD WINAPI phoneSetButtonInfoA(HPHONE,DWORD,LPPHONEBUTTONINFO);
+
+/* "assisted" functions */
+DWORD WINAPI tapiGetLocationInfo(LPSTR,LPSTR);
+DWORD WINAPI tapiRequestMakeCall(LPCSTR,LPCSTR,LPCSTR,LPCSTR);
+
+DWORD WINAPI tapiGetLocationInfoA(LPSTR,LPSTR);
+DWORD WINAPI tapiRequestMakeCallA(LPCSTR,LPCSTR,LPCSTR,LPCSTR);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif /* __WINE_TAPI_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/tchar.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/tchar.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/tchar.h	(revision 16410)
@@ -0,0 +1,268 @@
+/*
+ * Copyright (C) 1998 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_TCHAR_H
+#define __WINE_TCHAR_H
+
+#ifdef __WINESRC__
+#error Wine should not include tchar.h internally
+#endif
+
+#if defined(_UNICODE) || defined(_MBCS)
+#error You must use msvcrt when building in Unicode/MBCS mode
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*****************************************************************************
+ * tchar routines
+ */
+#define _strdec(start,current)  ((start)<(current) ? ((char*)(current))-1 : NULL)
+#define _strinc(current)        (((char*)(current))+1)
+#define _strncnt(str,max)       (strlen(str)>(max) ? (max) : strlen(str))
+#define _strnextc(str)          ((unsigned int)*(str))
+#define _strninc(str,n)         (((char*)(str))+(n))
+#define _strspnp(s1,s2)         (*((s1)+=strspn((s1),(s2))) ? (s1) : NULL)
+
+
+/*****************************************************************************
+ * tchar mappings
+ */
+#ifndef _UNICODE
+#  ifndef _MBCS
+#    include <string.h>
+#    define WINE_tchar_routine(std,mbcs,unicode) std
+#  else
+#    include <mbstring.h>
+#    define WINE_tchar_routine(std,mbcs,unicode) mbcs
+#  endif
+#else /* _UNICODE */
+#  include <wchar.h>
+#  define WINE_tchar_routine(std,mbcs,unicode) unicode
+#endif
+
+#define WINE_tchar_true(a) (1)
+#define WINE_tchar_false(a) (0)
+#define WINE_tchar_tclen(a) (1)
+#define WINE_tchar_tccpy(a,b) do { *(a)=*(b); } while (0)
+
+#define __targv       WINE_tchar_routine(__argv,          __argv,      __wargv)
+#define _fgettc       WINE_tchar_routine(fgetc,           fgetc,       fgetwc)
+#define _fgettchar    WINE_tchar_routine(fgetchar,        fgetchar,    _fgetwchar)
+#define _fgetts       WINE_tchar_routine(fgets,           fgets,       fgetws)
+#define _fputtc       WINE_tchar_routine(fputc,           fputc,       fputwc)
+#define _fputtchar    WINE_tchar_routine(fputchar,        fputchar,    _fputwchar)
+#define _fputts       WINE_tchar_routine(fputs,           fputs,       fputws)
+#define _ftprintf     WINE_tchar_routine(fprintf,         fprintf,     fwprintf)
+#define _ftscanf      WINE_tchar_routine(fscanf,          fscanf,      fwscanf)
+#define _gettc        WINE_tchar_routine(getc,            getc,        getwc)
+#define _gettchar     WINE_tchar_routine(getchar,         getchar,     getwchar)
+#define _getts        WINE_tchar_routine(gets,            gets,        getws)
+#define _isalnum      WINE_tchar_routine(isalnum,         _ismbcalnum, iswalnum)
+#define _istalpha     WINE_tchar_routine(isalpha,         _ismbcalpha, iswalpha)
+#define _istascii     WINE_tchar_routine(isascii,         __isascii,   iswascii)
+#define _istcntrl     WINE_tchar_routine(iscntrl,         iscntrl,     iswcntrl)
+#define _istdigit     WINE_tchar_routine(isdigit,         _ismbcdigit, iswdigit)
+#define _istgraph     WINE_tchar_routine(isgraph,         _ismbcgraph, iswgraph)
+#define _istlead      WINE_tchar_routine(WINE_tchar_false,_ismbblead,  WINE_tchar_false)
+#define _istleadbyte  WINE_tchar_routine(WINE_tchar_false,isleadbyte,  WINE_tchar_false)
+#define _istlegal     WINE_tchar_routine(WINE_tchar_true, _ismbclegal, WINE_tchar_true)
+#define _istlower     WINE_tchar_routine(islower,         _ismbcslower,iswlower)
+#define _istprint     WINE_tchar_routine(isprint,         _ismbcprint, iswprint)
+#define _istpunct     WINE_tchar_routine(ispunct,         _ismbcpunct, iswpunct)
+#define _istspace     WINE_tchar_routine(isspace,         _ismbcspace, iswspace)
+#define _istupper     WINE_tchar_routine(isupper,         _ismbcupper, iswupper)
+#define _istxdigit    WINE_tchar_routine(isxdigit,        isxdigit,    iswxdigit)
+#define _itot         WINE_tchar_routine(_itoa,           _itoa,       _itow)
+#define _ltot         WINE_tchar_routine(_ltoa,           _ltoa,       _ltow)
+#define _puttc        WINE_tchar_routine(putc,            putc,        putwc)
+#define _puttchar     WINE_tchar_routine(putchar,         putchar,     putwchar)
+#define _putts        WINE_tchar_routine(puts,            puts,        putws)
+#define _sntprintf    WINE_tchar_routine(snprintf,        snprintf,    snwprintf)
+#define _stprintf     WINE_tchar_routine(sprintf,         sprintf,     swprintf)
+#define _stscanf      WINE_tchar_routine(sscanf,          sscanf,      swscanf)
+#define _taccess      WINE_tchar_routine(access,          _access,     _waccess)
+#define _tasctime     WINE_tchar_routine(asctime,         asctime,     _wasctime)
+#define _tccpy        WINE_tchar_routine(WINE_tchar_tccpy,_mbccpy,     WINE_tchar_tccpy)
+#define _tchdir       WINE_tchar_routine(chdir,           _chdir,      _wchdir)
+#define _tclen        WINE_tchar_routine(WINE_tchar_tclen,_mbclen,     WINE_tchar_tclen)
+#define _tchmod       WINE_tchar_routine(chmod,           _chmod,      _wchmod)
+#define _tcreat       WINE_tchar_routine(creat,           _creat,      _wcreat)
+#define _tcscat       WINE_tchar_routine(strcat,          _mbscat,     wcscat)
+#define _tcschr       WINE_tchar_routine(strchr,          _mbschr,     wcschr)
+#define _tcsclen      WINE_tchar_routine(strlen,          _mbslen,     wcslen)
+#define _tcscmp       WINE_tchar_routine(strcmp,          _mbscmp,     wcscmp)
+#define _tcscoll      WINE_tchar_routine(strcoll,         _mbscoll,    wcscoll)
+#define _tcscpy       WINE_tchar_routine(strcpy,          _mbscpy,     wcscpy)
+#define _tcscspn      WINE_tchar_routine(strcspn,         _mbscspn,    wcscspn)
+#define _tcsdec       WINE_tchar_routine(_strdec,         _mbsdec,     _wcsdec)
+#define _tcsdup       WINE_tchar_routine(strdup,          _mbsdup,     _wcsdup)
+#define _tcsftime     WINE_tchar_routine(strftime,        strftime,    wcsftime)
+#define _tcsicmp      WINE_tchar_routine(strcasecmp,      _mbsicmp,    _wcsicmp)
+#define _tcsicoll     WINE_tchar_routine(_stricoll,       _stricoll,   _wcsicoll)
+#define _tcsinc       WINE_tchar_routine(_strinc,         _mbsinc,     _wcsinc)
+#define _tcslen       WINE_tchar_routine(strlen,          strlen,      wcslen)
+#define _tcslwr       WINE_tchar_routine(_strlwr,         _mbslwr,     _wcslwr)
+#define _tcsnbcnt     WINE_tchar_routine(_strncnt,        _mbsnbcnt,   _wcnscnt)
+#define _tcsncat      WINE_tchar_routine(strncat,         _mbsnbcat,   wcsncat)
+#define _tcsnccat     WINE_tchar_routine(strncat,         _mbsncat,    wcsncat)
+#define _tcsncmp      WINE_tchar_routine(strncmp,         _mbsnbcmp,   wcsncmp)
+#define _tcsnccmp     WINE_tchar_routine(strncmp,         _mbsncmp,    wcsncmp)
+#define _tcsnccnt     WINE_tchar_routine(_strncnt,        _mbsnccnt,   _wcsncnt)
+#define _tcsnccpy     WINE_tchar_routine(strncpy,         _mbsncpy,    wcsncpy)
+#define _tcsncicmp    WINE_tchar_routine(_strnicmp,       _mbsnicmp,   _wcsnicmp)
+#define _tcsncpy      WINE_tchar_routine(strncpy,         _mbsnbcpy,   wcsncpy)
+#define _tcsncset     WINE_tchar_routine(_strnset,        _mbsnset,    _wcsnset)
+#define _tcsnextc     WINE_tchar_routine(_strnextc,       _mbsnextc,   _wcsnextc)
+#define _tcsnicmp     WINE_tchar_routine(_strnicmp,       _mbsnicmp,   _wcsnicmp)
+#define _tcsnicoll    WINE_tchar_routine(_strnicoll,      _strnicoll   _wcsnicoll)
+#define _tcsninc      WINE_tchar_routine(_strninc,        _mbsninc,    _wcsninc)
+#define _tcsnccnt     WINE_tchar_routine(_strncnt,        _mbsnccnt,   _wcsncnt)
+#define _tcsnset      WINE_tchar_routine(_strnset,        _mbsnbset,   _wcsnset)
+#define _tcspbrk      WINE_tchar_routine(strpbrk,         _mbspbrk,    wcspbrk)
+#define _tcsspnp      WINE_tchar_routine(_strspnp,        _mbsspnp,    _wcsspnp)
+#define _tcsrchr      WINE_tchar_routine(strrchr,         _mbsrchr,    wcsrchr)
+#define _tcsrev       WINE_tchar_routine(_strrev,         _mbsrev,     _wcsrev)
+#define _tcsset       WINE_tchar_routine(_strset,         _mbsset,     _wcsset)
+#define _tcsspn       WINE_tchar_routine(strspn,          _mbsspn,     wcsspn)
+#define _tcsstr       WINE_tchar_routine(strstr,          _mbsstr,     wcsstr)
+#define _tcstod       WINE_tchar_routine(strtod,          strtod,      wcstod)
+#define _tcstok       WINE_tchar_routine(strtok,          _mbstok,     wcstok)
+#define _tcstol       WINE_tchar_routine(strtol,          strtol,      wcstol)
+#define _tcstoul      WINE_tchar_routine(strtoul,         strtoul,     wcstoul)
+#define _tcsupr       WINE_tchar_routine(_strupr,         _mbsupr,     _wcsupr)
+#define _tcsxfrm      WINE_tchar_routine(strxfrm,         strxfrm,     wcsxfrm)
+#define _tctime       WINE_tchar_routine(ctime,           ctime,       _wctime)
+#define _tenviron     WINE_tchar_routine(_environ,        _environ,    _wenviron)
+#define _texecl       WINE_tchar_routine(execl,           _execl,      _wexecl)
+#define _texecle      WINE_tchar_routine(execle,          _execle,     _wexecle)
+#define _texeclp      WINE_tchar_routine(execlp,          _execlp,     _wexeclp)
+#define _texeclpe     WINE_tchar_routine(execlpe,         _execlpe,    _wexeclpe)
+#define _texecv       WINE_tchar_routine(execv,           _execv,      _wexecv)
+#define _texecve      WINE_tchar_routine(execve,          _execve,     _wexecve)
+#define _texecvp      WINE_tchar_routine(execvp,          _execvp,     _wexecvp)
+#define _texecvpe     WINE_tchar_routine(execvpe,         _execvpe,    _wexecvpe)
+#define _tfdopen      WINE_tchar_routine(fdopen,          _fdopen,     _wfdopen)
+#define _tfinddata_t  WINE_tchar_routine(_finddata_t,     _finddata_t, _wfinddata_t)
+#define _tfinddatai64_t WINE_tchar_routine(_finddatai64_t,_finddatai64_t,_wfinddatai64_t)
+#define _tfindfirst   WINE_tchar_routine(_findfirst,      _findfirst,  _wfindfirst)
+#define _tfindnext    WINE_tchar_routine(_findnext,       _findnext,   _wfindnext)
+#define _tfopen       WINE_tchar_routine(fopen,           fopen,       _wfopen)
+#define _tfreopen     WINE_tchar_routine(freopen,         freopen,     _wfreopen)
+#define _tfsopen      WINE_tchar_routine(_fsopen,         _fsopen,     _wfsopen)
+#define _tfullpath    WINE_tchar_routine(_fullpath,       _fullpath,   _wfullpath)
+#define _tgetcwd      WINE_tchar_routine(getcwd,          _getcwd,     _wgetcwd)
+#define _tgetenv      WINE_tchar_routine(getenv,          getenv,      _wgetenv)
+#define _tmain        WINE_tchar_routine(main,            main,        wmain)
+#define _tmakepath    WINE_tchar_routine(_makepath,       _makepath,   _wmakepath)
+#define _tmkdir       WINE_tchar_routine(mkdir,           _mkdir,      _wmkdir)
+#define _tmktemp      WINE_tchar_routine(mktemp,          _mktemp,     _wmktemp)
+#define _tperror      WINE_tchar_routine(perror,          perror,      _wperror)
+#define _topen        WINE_tchar_routine(open,            _open,       _wopen)
+#define _totlower     WINE_tchar_routine(tolower,         _mbctolower, towlower)
+#define _totupper     WINE_tchar_routine(toupper,         _mbctoupper, towupper)
+#define _tpopen       WINE_tchar_routine(popen,           _popen,      _wpopen)
+#define _tprintf      WINE_tchar_routine(printf,          printf,      wprintf)
+#define _tremove      WINE_tchar_routine(remove,          remove,      _wremove)
+#define _trename      WINE_tchar_routine(rename,          rename,      _wrename)
+#define _trmdir       WINE_tchar_routine(rmdir,           _rmdir,      _wrmdir)
+#define _tsearchenv   WINE_tchar_routine(_searchenv,      _searchenv,  _wsearchenv)
+#define _tscanf       WINE_tchar_routine(scanf,           scanf,       wscanf)
+#define _tsetlocale   WINE_tchar_routine(setlocale,       setlocale,   _wsetlocale)
+#define _tsopen       WINE_tchar_routine(_sopen,          _sopen,      _wsopen)
+#define _tspawnl      WINE_tchar_routine(_spawnl,         _spawnl,     _wspawnl)
+#define _tspawnle     WINE_tchar_routine(_spawnle,        _spawnle,    _wspawnle)
+#define _tspawnlp     WINE_tchar_routine(_spawnlp,        _spawnlp,    _wspawnlp)
+#define _tspawnlpe    WINE_tchar_routine(_spawnlpe,       _spawnlpe,   _wspawnlpe)
+#define _tspawnv      WINE_tchar_routine(_spawnv,         _spawnv,     _wspawnv)
+#define _tspawnve     WINE_tchar_routine(_spawnve,        _spawnve,    _wspawnve)
+#define _tspawnvp     WINE_tchar_routine(_spawnvp,        _spawnvp,    _tspawnvp)
+#define _tspawnvpe    WINE_tchar_routine(_spawnvpe,       _spawnvpe,   _tspawnvpe)
+#define _tsplitpath   WINE_tchar_routine(_splitpath,      _splitpath,  _wsplitpath)
+#define _tstat        WINE_tchar_routine(_stat,           _stat,       _wstat)
+#define _tstrdate     WINE_tchar_routine(_strdate,        _strdate,    _wstrdate)
+#define _tstrtime     WINE_tchar_routine(_strtime,        _strtime,    _wstrtime)
+#define _tsystem      WINE_tchar_routine(system,          system,      _wsystem)
+#define _ttempnam     WINE_tchar_routine(tempnam,         _tempnam,    _wtempnam)
+#define _ttmpnam      WINE_tchar_routine(tmpnam,          tmpnam,      _wtmpnam)
+#define _ttoi         WINE_tchar_routine(atoi,            atoi,        _wtoi)
+#define _ttol         WINE_tchar_routine(atol,            atol,        _wtol)
+#define _tutime       WINE_tchar_routine(utime,           _utime,      _wutime)
+#define _tWinMain     WINE_tchar_routine(WinMain,         WinMain,     wWinMain)
+#define _ultot        WINE_tchar_routine(_ultoa,          _ultoa,      _ultow)
+#define _ungettc      WINE_tchar_routine(ungetc,          ungetc,      ungetwc)
+#define _vftprintf    WINE_tchar_routine(vfprintf,        vfprintf,    vfwprintf)
+#define _vsntprintf   WINE_tchar_routine(vsnprintf,       _vsnprintf,  _vsnwprintf)
+#define _vstprintf    WINE_tchar_routine(vsprintf,        vsprintf,    vswprintf)
+#define _vtprintf     WINE_tchar_routine(vprintf,         vprintf,     vwprintf)
+#define _TEOF         WINE_tchar_routine(EOF,             EOF,         WEOF)
+
+#define __T(x) __TEXT(x)
+#define _T(x) __T(x)
+#define _TEXT(x) __T(x)
+
+#ifdef _UNICODE
+#if !defined(_WINT_T_DEFINED) && !defined(__WINT_TYPE__)
+typedef unsigned short wint_t;
+#endif
+
+#ifndef _WCTYPE_T_DEFINED
+typedef unsigned short wctype_t;
+#define _WCTYPE_T_DEFINED
+#endif
+
+#ifndef __TCHAR_DEFINED
+#ifdef WINE_UNICODE_NATIVE
+typedef wchar_t       _TCHAR;
+#else
+typedef unsigned short _TCHAR;
+#endif
+typedef _TCHAR        _TUCHAR;
+typedef _TCHAR        _TSCHAR;
+typedef _TCHAR        _TXCHAR;
+typedef _TCHAR        _TINT;
+#define __TCHAR_DEFINED
+#endif
+
+#else /* _UNICODE */
+#ifndef __TCHAR_DEFINED
+typedef char          _TCHAR;
+typedef unsigned char _TUCHAR;
+typedef signed char   _TSCHAR;
+#ifndef _MBCS
+typedef unsigned char _TXCHAR;
+typedef int           _TINT;
+#else
+typedef char          _TXCHAR;
+typedef unsigned int  _TINT;
+#endif
+#endif
+#endif
+
+#ifndef _TCHAR_DEFINED
+typedef _TCHAR        TCHAR, *PTCHAR;
+#define _TCHAR_DEFINED
+#endif
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __WINE_TCHAR_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/textserv.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/textserv.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/textserv.h	(revision 16410)
@@ -0,0 +1,412 @@
+/*
+ * Copyright (C) 2005 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _TEXTSERV_H
+#define _TEXTSERV_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+DEFINE_GUID(IID_ITextServices,0x8d33f740,0xcf58,0x11ce,0xa8,0x9d,0x00,0xaa,0x00,0x6c,0xad,0xc5);
+DEFINE_GUID(IID_ITextHost,    0xc5bdd8d0,0xd26e,0x11ce,0xa8,0x9e,0x00,0xaa,0x00,0x6c,0xad,0xc5);
+DEFINE_GUID(IID_ITextHost2,   0xc5bdd8d0,0xd26e,0x11ce,0xa8,0x9e,0x00,0xaa,0x00,0x6c,0xad,0xc5);
+
+/*****************************************************************************
+ * ITextServices interface
+ */
+#define INTERFACE ITextServices
+DECLARE_INTERFACE_(ITextServices,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD(QueryInterface)(THIS_
+        REFIID riid,
+        void** ppvObject) PURE;
+
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+    /*** ITextServices methods ***/
+
+    STDMETHOD(TxSendMessage)( THIS_
+        UINT msg, WPARAM wparam, LPARAM lparam, LRESULT* plresult) PURE;
+
+    STDMETHOD(TxDraw)( THIS_
+        DWORD dwDrawAspect,
+        LONG lindex,
+        void* pvAspect,
+        DVTARGETDEVICE* ptd,
+        HDC hdcDraw,
+        HDC hicTargetDev,
+        LPCRECTL lprcBounds,
+        LPCRECTL lprcWBounds,
+        LPRECT lprcUpdate,
+        BOOL (CALLBACK * pfnContinue)(DWORD),
+        DWORD dwContinue,
+        LONG lViewId) PURE;
+
+    STDMETHOD(TxGetHScroll)( THIS_
+        LONG* plMin,
+        LONG* plMax,
+        LONG* plPos,
+        LONG* plPage,
+        BOOL* pfEnabled) PURE;
+
+    STDMETHOD(TxGetVScroll)( THIS_
+        LONG* plMin,
+        LONG* plMax,
+        LONG* plPos,
+        LONG* plPage,
+        BOOL* pfEnabled) PURE;
+
+    STDMETHOD(OnTxSetCursor)( THIS_
+        DWORD dwDrawAspect,
+        LONG lindex,
+        void* pvAspect,
+        DVTARGETDEVICE* ptd,
+        HDC hdcDraw,
+        HDC hicTargetDev,
+        LPCRECT lprcClient,
+        INT x,
+        INT y) PURE;
+
+    STDMETHOD(TxQueryHitPoint)( THIS_
+        DWORD dwDrawAspect,
+        LONG lindex,
+        void* pvAspect,
+        DVTARGETDEVICE* ptd,
+        HDC hdcDraw,
+        HDC hicTargetDev,
+        LPCRECT lprcClient,
+        INT x,
+        INT y,
+        DWORD* pHitResult) PURE;
+
+    STDMETHOD(OnTxInplaceActivate)( THIS_
+        LPCRECT prcClient) PURE;
+
+    STDMETHOD(OnTxInplaceDeactivate)( THIS ) PURE;
+
+    STDMETHOD(OnTxUIActivate)( THIS ) PURE;
+
+    STDMETHOD(OnTxUIDeactivate)( THIS ) PURE;
+
+    STDMETHOD(TxGetText)( THIS_
+        BSTR* pbstrText) PURE;
+
+    STDMETHOD(TxSetText)( THIS_
+        LPCWSTR pszText) PURE;
+
+    STDMETHOD(TxGetCurrentTargetX)( THIS_
+        LONG* x) PURE;
+
+    STDMETHOD(TxGetBaseLinePos)( THIS_
+        LONG* x) PURE;
+
+    STDMETHOD(TxGetNaturalSize)( THIS_
+        DWORD dwAspect,
+        HDC hdcDraw,
+        HDC hicTargetDev,
+        DVTARGETDEVICE* ptd,
+        DWORD dwMode,
+        const SIZEL* psizelExtent,
+        LONG* pwidth,
+        LONG* pheight) PURE;
+
+    STDMETHOD(TxGetDropTarget)( THIS_
+        IDropTarget** ppDropTarget) PURE;
+
+    STDMETHOD(OnTxPropertyBitsChange)( THIS_
+        DWORD dwMask,
+        DWORD dwBits) PURE;
+
+    STDMETHOD(TxGetCachedSize)( THIS_
+        DWORD* pdwWidth,
+        DWORD* pdwHeight) PURE;
+
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ITextServices_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define ITextServices_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define ITextServices_Release(p) (p)->lpVtbl->Release(p)
+#endif
+
+#undef INTERFACE
+
+typedef enum _TXTBACKSTYLE {
+    TXTBACK_TRANSPARENT = 0,
+    TXTBACK_OPAQUE
+} TXTBACKSTYLE;
+
+enum TXTHITRESULT {
+    TXTHITRESULT_NOHIT = 0,
+    TXTHITRESULT_TRANSPARENT = 1,
+    TXTHITRESULT_CLOSE = 2,
+    TXTHITRESULT_HIT = 3
+};
+
+enum TXTNATURALSIZE {
+    TXTNS_FITTOCONTENT = 1,
+    TXTNS_ROUNDTOLINE = 2
+};
+
+enum TXTVIEW {
+    TXTVIEW_ACTIVE = 0,
+    TXTVIEW_INACTIVE = 1
+};
+
+#define TXTBIT_RICHTEXT         0x000001
+#define TXTBIT_MULTILINE        0x000002
+#define TXTBIT_READONLY         0x000004
+#define TXTBIT_SHOWACCELERATOR  0x000008
+#define TXTBIT_USEPASSWORD      0x000010
+#define TXTBIT_HIDESELECTION    0x000020
+#define TXTBIT_SAVESELECTION    0x000040
+#define TXTBIT_AUTOWORDSEL      0x000080
+#define TXTBIT_VERTICAL         0x000100
+#define TXTBIT_SELBARCHANGE     0x000200
+#define TXTBIT_WORDWRAP         0x000400
+#define TXTBIT_ALLOWBEEP        0x000800
+#define TXTBIT_DISABLEDRAG      0x001000
+#define TXTBIT_VIEWINSETCHANGE  0x002000
+#define TXTBIT_BACKSTYLECHANGE  0x004000
+#define TXTBIT_MAXLENGTHCHANGE  0x008000
+#define TXTBIT_SCROLLBARCHANGE  0x010000
+#define TXTBIT_CHARFORMATCHANGE 0x020000
+#define TXTBIT_PARAFORMATCHANGE 0x040000
+#define TXTBIT_EXTENTCHANGE     0x080000
+#define TXTBIT_CLIENTRECTCHANGE 0x100000
+#define TXTBIT_USECURRENTBKG    0x200000
+
+/*****************************************************************************
+ * ITextHost interface
+ */
+#define INTERFACE ITextHost
+DECLARE_INTERFACE_(ITextHost,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD(QueryInterface)(THIS_
+        REFIID riid,
+        void** ppvObject) PURE;
+
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+    /*** ITextHost methods ***/
+    STDMETHOD_(HDC,TxGetDC)( THIS
+        ) PURE;
+
+    STDMETHOD_(INT,TxReleaseDC)( THIS_
+        HDC hdc) PURE;
+
+    STDMETHOD_(BOOL,TxShowScrollBar)( THIS_
+        INT fnBar,
+        BOOL fShow) PURE;
+
+    STDMETHOD_(BOOL,TxEnableScrollBar)( THIS_
+        INT fuSBFlags,
+        INT fuArrowflags) PURE;
+
+    STDMETHOD_(BOOL,TxSetScrollRange)( THIS_
+        INT fnBar,
+        LONG nMinPos,
+        INT nMaxPos,
+        BOOL fRedraw) PURE;
+
+    STDMETHOD_(BOOL,TxSetScrollPos)( THIS_
+        INT fnBar,
+        INT nPos,
+        BOOL fRedraw) PURE;
+
+    STDMETHOD_(void,TxInvalidateRect)( THIS_
+        LPCRECT prc,
+        BOOL fMode) PURE;
+
+    STDMETHOD_(void,TxViewChange)( THIS_
+        BOOL fUpdate) PURE;
+
+    STDMETHOD_(BOOL,TxCreateCaret)( THIS_
+        HBITMAP hbmp,
+        INT xWidth,
+        INT yHeight) PURE;
+
+    STDMETHOD_(BOOL,TxShowCaret)( THIS_
+        BOOL fShow) PURE;
+
+    STDMETHOD_(BOOL,TxSetCaretPos)( THIS_
+        INT x,
+        INT y) PURE;
+
+    STDMETHOD_(BOOL,TxSetTimer)( THIS_
+        UINT idTimer,
+        UINT uTimeout) PURE;
+
+    STDMETHOD_(void,TxKillTimer)( THIS_
+        UINT idTimer) PURE;
+
+    STDMETHOD_(void,TxScrollWindowEx)( THIS_
+        INT dx,
+        INT dy,
+        LPCRECT lprcScroll,
+        LPCRECT lprcClip,
+        HRGN hRgnUpdate,
+        LPRECT lprcUpdate,
+        UINT fuScroll) PURE;
+
+    STDMETHOD_(void,TxSetCapture)( THIS_
+        BOOL fCapture) PURE;
+
+    STDMETHOD_(void,TxSetFocus)( THIS
+        ) PURE;
+
+    STDMETHOD_(void,TxSetCursor)( THIS_
+        HCURSOR hcur,
+        BOOL fText) PURE;
+
+    STDMETHOD_(BOOL,TxScreenToClient)( THIS_
+        LPPOINT lppt) PURE;
+
+    STDMETHOD_(BOOL,TxClientToScreen)( THIS_
+        LPPOINT lppt) PURE;
+
+    STDMETHOD(TxActivate)( THIS_
+        LONG* plOldState) PURE;
+
+    STDMETHOD(TxDeactivate)( THIS_
+        LONG lNewState) PURE;
+
+    STDMETHOD(TxGetClientRect)( THIS_
+        LPRECT prc) PURE;
+
+    STDMETHOD(TxGetViewInset)( THIS_
+        LPRECT prc) PURE;
+
+    STDMETHOD(TxGetCharFormat)( THIS_
+        const CHARFORMATW** ppCF) PURE;
+
+    STDMETHOD(TxGetParaFormat)( THIS_
+        const PARAFORMAT** ppPF) PURE;
+
+    STDMETHOD_(COLORREF,TxGetSysColor)( THIS_
+        int nIndex) PURE;
+
+    STDMETHOD(TxGetBackStyle)( THIS_
+        TXTBACKSTYLE* pStyle) PURE;
+
+    STDMETHOD(TxGetMaxLength)( THIS_
+        DWORD* plength) PURE;
+
+    STDMETHOD(TxGetScrollbars)( THIS_
+        DWORD* pdwScrollBar) PURE;
+
+    STDMETHOD(TxGetPasswordChar)( THIS_
+        WCHAR* pch) PURE;
+
+    STDMETHOD(TxGetAcceleratorPos)( THIS_
+        LONG* pch) PURE;
+
+    STDMETHOD(TxGetExtent)( THIS_
+        LPSIZEL lpExtent) PURE;
+
+    STDMETHOD(OnTxCharFormatChange)( THIS_
+        const CHARFORMATW* pcf) PURE;
+
+    STDMETHOD(OnTxParaFormatChange)( THIS_
+        const PARAFORMAT* ppf) PURE;
+
+    STDMETHOD(TxGetPropertyBits)( THIS_
+        DWORD dwMask,
+        DWORD* pdwBits) PURE;
+
+    STDMETHOD(TxNotify)( THIS_
+        DWORD iNotify,
+        void* pv) PURE;
+
+    STDMETHOD_(HIMC,TxImmGetContext)( THIS
+        ) PURE;
+
+    STDMETHOD_(void,TxImmReleaseContext)( THIS_
+        HIMC himc) PURE;
+
+    STDMETHOD(TxGetSelectionBarWidth)( THIS_
+        LONG* lSelBarWidth) PURE;
+
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ITextHost_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define ITextHost_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define ITextHost_Release(p) (p)->lpVtbl->Release(p)
+/*** ITextHost methods ***/
+#define ITextHost_TxGetDC(p) (p)->lpVtbl->TxGetDC(p)
+#define ITextHost_TxReleaseDC(p,a) (p)->lpVtbl->TxReleaseDC(p,a)
+#define ITextHost_TxShowScrollBar(p,a,b) (p)->lpVtbl->TxShowScrollBar(p,a,b)
+#define ITextHost_TxEnableScrollBar(p,a,b) (p)->lpVtbl->TxEnableScrollBar(p,a,b)
+#define ITextHost_TxSetScrollRange(p,a,b,c,d) (p)->lpVtbl->TxSetScrollRange(p,a,b,c,d)
+#define ITextHost_TxSetScrollPos(p,a,b,c) (p)->lpVtbl->TxSetScrollPos(p,a,b,c)
+#define ITextHost_TxInvalidateRect(p,a,b) (p)->lpVtbl->TxInvalidateRect(p,a,b)
+#define ITextHost_TxViewChange(p,a) (p)->lpVtbl->TxViewChange(p,a)
+#define ITextHost_TxCreateCaret(p,a,b,c) (p)->lpVtbl->TxCreateCaret(p,a,b,c)
+#define ITextHost_TxShowCaret(p,a) (p)->lpVtbl->TxShowCaret(p,a)
+#define ITextHost_TxSetCarentPos(p,a,b) (p)->lpVtbl->TxSetCarentPos(p,a,b)
+#define ITextHost_TxSetTimer(p,a,b) (p)->lpVtbl->TxSetTimer(p,a,b)
+#define ITextHost_TxKillTimer(p,a) (p)->lpVtbl->TxKillTimer(p,a)
+#define ITextHost_TxScrollWindowEx(p,a,b,c,d,e,f,g) (p)->lpVtbl->TxScrollWindowEx(p,a,b,c,d,e,f,g)
+#define ITextHost_TxSetCapture(p,a) (p)->lpVtbl->TxSetCapture(p,a)
+#define ITextHost_TxSetFocus(p) (p)->lpVtbl->TxSetFocus(p)
+#define ITextHost_TxSetCursor(p,a,b) (p)->lpVtbl->TxSetCursor(p,a,b)
+#define ITextHost_TxScreenToClient(p,a) (p)->lpVtbl->TxScreenToClient(p,a)
+#define ITextHost_TxClientToScreen(p,a) (p)->lpVtbl->TxClientToScreen(p,a)
+#define ITextHost_TxActivate(p,a) (p)->lpVtbl->TxActivate(p,a)
+#define ITextHost_TxDeactivate(p,a) (p)->lpVtbl->TxDeactivate(p,a)
+#define ITextHost_TxGetClientRect(p,a) (p)->lpVtbl->TxGetClientRect(p,a)
+#define ITextHost_TxGetViewInset(p,a) (p)->lpVtbl->TxGetViewInset(p,a)
+#define ITextHost_TxGetCharFormat(p,a) (p)->lpVtbl->TxGetCharFormat(p,a)
+#define ITextHost_TxGetParaFormat(p,a) (p)->lpVtbl->TxGetParaFormat(p,a)
+#define ITextHost_TxGetSysColor(p,a) (p)->lpVtbl->TxGetSysColor(p,a)
+#define ITextHost_TxGetBackStyle(p,a) (p)->lpVtbl->TxGetBackStyle(p,a)
+#define ITextHost_TxGetMaxLength(p,a) (p)->lpVtbl->TxGetMaxLength(p,a)
+#define ITextHost_TxGetScrollbars(p,a) (p)->lpVtbl->TxGetScrollbars(p,a)
+#define ITextHost_TxGetPasswordChar(p,a) (p)->lpVtbl->TxGetPasswordChar(p,a)
+#define ITextHost_TxGetAcceleratorPos(p,a) (p)->lpVtbl->TxGetAcceleratorPos(p,a)
+#define ITextHost_TxGetExtent(p,a) (p)->lpVtbl->TxGetExtent(p,a)
+#define ITextHost_OnTxCharFormatChange(p,a) (p)->lpVtbl->OnTxCharFormatChange(p,a)
+#define ITextHost_OnTxParaFormatChange(p,a) (p)->lpVtbl->OnTxParaFormatChange(p,a)
+#define ITextHost_TxGetPropertyBits(p,a,b) (p)->lpVtbl->TxGetPropertyBits(p,a,b)
+#define ITextHost_TxNotify(p,a,b) (p)->lpVtbl->TxNotify(p,a,b)
+#define ITextHost_TxImmGetContext(p) (p)->lpVtbl->TxImmGetContext(p)
+#define ITextHost_TxImmReleaseContext(p,a) (p)->lpVtbl->TxImmReleaseContext(p,a)
+#define ITextHost_TxGetSelectionBarWidth(p,a) (p)->lpVtbl->TxGetSelectionBarWidth(p,a)
+#endif
+
+#undef INTERFACE
+
+HRESULT WINAPI CreateTextServices(IUnknown*,ITextHost*,IUnknown**);
+
+typedef HRESULT (WINAPI *PCreateTextServices)(IUnknown*,ITextHost*,IUnknown**);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TEXTSERV_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/tlhelp32.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/tlhelp32.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/tlhelp32.h	(revision 16410)
@@ -0,0 +1,184 @@
+/*
+ * Copyright (C) 1998 Patrick Spinler
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_TLHELP32_H
+#define __WINE_TLHELP32_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * CreateToolhelp32Snapshot
+ */
+
+#define TH32CS_SNAPHEAPLIST 0x00000001
+#define TH32CS_SNAPPROCESS  0x00000002
+#define TH32CS_SNAPTHREAD   0x00000004
+#define TH32CS_SNAPMODULE   0x00000008
+#define TH32CS_SNAPALL     (TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE)
+#define TH32CS_INHERIT     0x80000000
+
+HANDLE WINAPI CreateToolhelp32Snapshot(DWORD,DWORD);
+
+/*
+ * thread entry list as created by CreateToolHelp32Snapshot
+ */
+
+typedef struct tagTHREADENTRY32
+{
+    DWORD dwSize;
+    DWORD cntUsage;
+    DWORD th32ThreadID;
+    DWORD th32OwnerProcessID;
+    LONG  tpBasePri;
+    LONG  tpDeltaPri;
+    DWORD dwFlags;
+} THREADENTRY32, *PTHREADENTRY32, *LPTHREADENTRY32;
+
+BOOL WINAPI Thread32First(HANDLE,LPTHREADENTRY32);
+BOOL WINAPI Thread32Next(HANDLE,LPTHREADENTRY32);
+
+/*
+ * Process entry list as created by CreateToolHelp32Snapshot
+ */
+
+typedef struct tagPROCESSENTRY32
+{
+    DWORD dwSize;
+    DWORD cntUsage;
+    DWORD th32ProcessID;
+    DWORD th32DefaultHeapID;
+    DWORD th32ModuleID;
+    DWORD cntThreads;
+    DWORD th32ParentProcessID;
+    LONG  pcPriClassBase;
+    DWORD dwFlags;
+    char szExeFile[MAX_PATH];
+} PROCESSENTRY32, *PPROCESSENTRY32, *LPPROCESSENTRY32;
+
+typedef struct tagPROCESSENTRY32W
+{
+    DWORD dwSize;
+    DWORD cntUsage;
+    DWORD th32ProcessID;
+    DWORD th32DefaultHeapID;
+    DWORD th32ModuleID;
+    DWORD cntThreads;
+    DWORD th32ParentProcessID;
+    LONG  pcPriClassBase;
+    DWORD dwFlags;
+    WCHAR szExeFile[MAX_PATH];
+} PROCESSENTRY32W, *PPROCESSENTRY32W, *LPPROCESSENTRY32W;
+
+BOOL WINAPI Process32First(HANDLE,LPPROCESSENTRY32);
+BOOL WINAPI Process32FirstW(HANDLE,LPPROCESSENTRY32W);
+BOOL WINAPI Process32Next(HANDLE,LPPROCESSENTRY32);
+BOOL WINAPI Process32NextW(HANDLE,LPPROCESSENTRY32W);
+
+#ifdef UNICODE
+#define Process32First Process32FirstW
+#define Process32Next Process32NextW
+#define PROCESSENTRY32 PROCESSENTRY32W
+#define PPROCESSENTRY32 PPROCESSENTRY32W
+#define LPPROCESSENTRY32 LPPROCESSENTRY32W
+#endif
+
+/*
+ * Module entry list as created by CreateToolHelp32Snapshot
+ */
+
+#define MAX_MODULE_NAME32 255
+
+typedef struct tagMODULEENTRY32
+{
+    DWORD  dwSize;
+    DWORD  th32ModuleID;
+    DWORD  th32ProcessID;
+    DWORD  GlblcntUsage;
+    DWORD  ProccntUsage;
+    BYTE  *modBaseAddr;
+    DWORD  modBaseSize;
+    HMODULE hModule;
+    char   szModule[MAX_MODULE_NAME32 + 1];
+    char   szExePath[MAX_PATH];
+} MODULEENTRY32, *PMODULEENTRY32, *LPMODULEENTRY32;
+
+typedef struct tagMODULEENTRY32W
+{
+    DWORD  dwSize;
+    DWORD  th32ModuleID;
+    DWORD  th32ProcessID;
+    DWORD  GlblcntUsage;
+    DWORD  ProccntUsage;
+    BYTE  *modBaseAddr;
+    DWORD  modBaseSize;
+    HMODULE hModule;
+    WCHAR  szModule[MAX_MODULE_NAME32 + 1];
+    WCHAR  szExePath[MAX_PATH];
+} MODULEENTRY32W, *PMODULEENTRY32W, *LPMODULEENTRY32W;
+
+BOOL WINAPI Module32First(HANDLE,LPMODULEENTRY32);
+BOOL WINAPI Module32FirstW(HANDLE,LPMODULEENTRY32W);
+BOOL WINAPI Module32Next(HANDLE,LPMODULEENTRY32);
+BOOL WINAPI Module32NextW(HANDLE,LPMODULEENTRY32W);
+
+#ifdef UNICODE
+#define Module32First Module32FirstW
+#define Module32Next Module32NextW
+#define MODULEENTRY32 MODULEENTRY32W
+#define PMODULEENTRY32 PMODULEENTRY32W
+#define LPMODULEENTRY32 LPMODULEENTRY32W
+#endif
+
+typedef struct tagHEAPLIST32
+{
+    SIZE_T dwSize;
+    DWORD th32ProcessID;
+    ULONG_PTR th32HeapID;
+    DWORD dwFlags;
+} HEAPLIST32, *PHEAPLIST32, *LPHEAPLIST32;
+
+#define HF32_DEFAULT 1
+#define HF32_SHARED  2
+
+BOOL WINAPI Heap32ListFirst(HANDLE,LPHEAPLIST32);
+BOOL WINAPI Heap32ListNext(HANDLE,LPHEAPLIST32);
+BOOL WINAPI Toolhelp32ReadProcessMemory(DWORD,LPCVOID,LPVOID,SIZE_T,SIZE_T*);
+
+typedef struct tagHEAPENTRY32
+{
+    SIZE_T dwSize;
+    HANDLE hHandle;
+    ULONG_PTR dwAddress;
+    SIZE_T dwBlockSize;
+    DWORD dwFlags;
+    DWORD dwLockCount;
+    DWORD dwResvd;
+    DWORD th32ProcessID;
+    ULONG_PTR th32HeapID;
+} HEAPENTRY32, *PHEAPENTRY32, *LPHEAPENTRY32;
+
+BOOL WINAPI Heap32First(LPHEAPENTRY32,DWORD,ULONG_PTR);
+BOOL WINAPI Heap32Next(LPHEAPENTRY32);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __WINE_TLHELP32_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/tmschema.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/tmschema.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/tmschema.h	(revision 16410)
@@ -0,0 +1,1270 @@
+/*
+ * Copyright (C) 2003 Kevin Koltzau
+ * Copyright (C) 2004 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_TMSCHEMA_H
+#define __WINE_TMSCHEMA_H
+
+#include <schemadef.h>
+
+BEGIN_TM_SCHEMA(ThemeMgrSchema)
+
+
+/***** ENUMERATIONS *****/
+
+/* BGTYPE Enum */
+BEGIN_TM_ENUM(BGTYPE)
+    TM_ENUM(0, BT, IMAGEFILE)
+    TM_ENUM(1, BT, BORDERFILL)
+    TM_ENUM(2, BT, NONE)
+END_TM_ENUM()
+
+/* IMAGELAYOUT Enum */
+BEGIN_TM_ENUM(IMAGELAYOUT)
+    TM_ENUM(0, IL, VERTICAL)
+    TM_ENUM(1, IL, HORIZONTAL)
+END_TM_ENUM()
+
+/* BORDERTYPE Enum */
+BEGIN_TM_ENUM(BORDERTYPE)
+    TM_ENUM(0, BT, RECT)
+    TM_ENUM(1, BT, ROUNDRECT)
+    TM_ENUM(2, BT, ELLIPSE)
+END_TM_ENUM()
+
+/* FILLTYPE Enum */
+BEGIN_TM_ENUM(FILLTYPE)
+    TM_ENUM(0, FT, SOLID)
+    TM_ENUM(1, FT, VERTGRADIENT)
+    TM_ENUM(2, FT, HORZGRADIENT)
+    TM_ENUM(3, FT, RADIALGRADIENT)
+    TM_ENUM(4, FT, TILEIMAGE)
+END_TM_ENUM()
+
+/* SIZINGTYPE Enum */
+BEGIN_TM_ENUM(SIZINGTYPE)
+    TM_ENUM(0, ST, TRUESIZE)
+    TM_ENUM(1, ST, STRETCH)
+    TM_ENUM(2, ST, TILE)
+END_TM_ENUM()
+
+/* HALIGN Enum */
+BEGIN_TM_ENUM(HALIGN)
+    TM_ENUM(0, HA, LEFT)
+    TM_ENUM(1, HA, CENTER)
+    TM_ENUM(2, HA, RIGHT)
+END_TM_ENUM()
+
+/* CONTENTALIGNMENT Enum */
+BEGIN_TM_ENUM(CONTENTALIGNMENT)
+    TM_ENUM(0, CA, LEFT)
+    TM_ENUM(1, CA, CENTER)
+    TM_ENUM(2, CA, RIGHT)
+END_TM_ENUM()
+
+/* VALIGN Enum */
+BEGIN_TM_ENUM(VALIGN)
+    TM_ENUM(0, VA, TOP)
+    TM_ENUM(1, VA, CENTER)
+    TM_ENUM(2, VA, BOTTOM)
+END_TM_ENUM()
+
+/* OFFSETTYPE Enum */
+BEGIN_TM_ENUM(OFFSETTYPE)
+    TM_ENUM(0, OT, TOPLEFT)
+    TM_ENUM(1, OT, TOPRIGHT)
+    TM_ENUM(2, OT, TOPMIDDLE)
+    TM_ENUM(3, OT, BOTTOMLEFT)
+    TM_ENUM(4, OT, BOTTOMRIGHT)
+    TM_ENUM(5, OT, BOTTOMMIDDLE)
+    TM_ENUM(6, OT, MIDDLELEFT)
+    TM_ENUM(7, OT, MIDDLERIGHT)
+    TM_ENUM(8, OT, LEFTOFCAPTION)
+    TM_ENUM(9, OT, RIGHTOFCAPTION)
+    TM_ENUM(10, OT, LEFTOFLASTBUTTON)
+    TM_ENUM(11, OT, RIGHTOFLASTBUTTON)
+    TM_ENUM(12, OT, ABOVELASTBUTTON)
+    TM_ENUM(13, OT, BELOWLASTBUTTON)
+END_TM_ENUM()
+
+/* ICONEFFECT Enum */
+BEGIN_TM_ENUM(ICONEFFECT)
+    TM_ENUM(0, ICE, NONE)
+    TM_ENUM(1, ICE, GLOW)
+    TM_ENUM(2, ICE, SHADOW)
+    TM_ENUM(3, ICE, PULSE)
+    TM_ENUM(4, ICE, ALPHA)
+END_TM_ENUM()
+
+/* TEXTSHADOWTYPE Enum */
+BEGIN_TM_ENUM(TEXTSHADOWTYPE)
+    TM_ENUM(0, TST, NONE)
+    TM_ENUM(1, TST, SINGLE)
+    TM_ENUM(2, TST, CONTINUOUS)
+END_TM_ENUM()
+
+/* GLYPHTYPE Enum */
+BEGIN_TM_ENUM(GLYPHTYPE)
+    TM_ENUM(0, GT, NONE)
+    TM_ENUM(1, GT, IMAGEGLYPH)
+    TM_ENUM(2, GT, FONTGLYPH)
+END_TM_ENUM()
+
+/* IMAGESELECTTYPE Enum */
+BEGIN_TM_ENUM(IMAGESELECTTYPE)
+    TM_ENUM(0, IST, NONE)
+    TM_ENUM(1, IST, SIZE)
+    TM_ENUM(2, IST, DPI)
+END_TM_ENUM()
+
+/* TRUESIZESCALINGTYPE Enum */
+BEGIN_TM_ENUM(TRUESIZESCALINGTYPE)
+    TM_ENUM(0, TSST, NONE)
+    TM_ENUM(1, TSST, SIZE)
+    TM_ENUM(2, TSST, DPI)
+END_TM_ENUM()
+
+/* GLYPHFONTSIZINGTYPE Enum */
+BEGIN_TM_ENUM(GLYPHFONTSIZINGTYPE)
+    TM_ENUM(0, GFST, NONE)
+    TM_ENUM(1, GFST, SIZE)
+    TM_ENUM(2, GFST, DPI)
+END_TM_ENUM()
+
+
+/***** PROPERTIES *****/
+BEGIN_TM_PROPS()
+
+    /* Primitive types */
+    TM_PROP(201, TMT, STRING,                     STRING)
+    TM_PROP(202, TMT, INT,                        INT)
+    TM_PROP(203, TMT, BOOL,                       BOOL)
+    TM_PROP(204, TMT, COLOR,                      COLOR)
+    TM_PROP(205, TMT, MARGINS,                    MARGINS)
+    TM_PROP(206, TMT, FILENAME,                   FILENAME)
+    TM_PROP(207, TMT, SIZE,                       SIZE)
+    TM_PROP(208, TMT, POSITION,                   POSITION)
+    TM_PROP(209, TMT, RECT,                       RECT)
+    TM_PROP(210, TMT, FONT,                       FONT)
+    TM_PROP(211, TMT, INTLIST,                    INTLIST)
+    /* we should have ENUM around here */
+
+    /* Misc properties */
+    TM_PROP(401, TMT, COLORSCHEMES,               STRING)
+    TM_PROP(402, TMT, SIZES,                      STRING)
+    TM_PROP(403, TMT, CHARSET,                    INT)
+
+    /* Documentation properties */
+    TM_PROP(601, TMT, DISPLAYNAME,                STRING)
+    TM_PROP(602, TMT, TOOLTIP,                    STRING)
+    TM_PROP(603, TMT, COMPANY,                    STRING)
+    TM_PROP(604, TMT, AUTHOR,                     STRING)
+    TM_PROP(605, TMT, COPYRIGHT,                  STRING)
+    TM_PROP(606, TMT, URL,                        STRING)
+    TM_PROP(607, TMT, VERSION,                    STRING)
+    TM_PROP(608, TMT, DESCRIPTION,                STRING)
+#   define TMT_FIRST_RCSTRING_NAME                TMT_DISPLAYNAME
+#   define TMT_LAST_RCSTRING_NAME                 TMT_DESCRIPTION
+
+    /* Font theme metric properties */
+    TM_PROP(801, TMT, CAPTIONFONT,                FONT)
+    TM_PROP(802, TMT, SMALLCAPTIONFONT,           FONT)
+    TM_PROP(803, TMT, MENUFONT,                   FONT)
+    TM_PROP(804, TMT, STATUSFONT,                 FONT)
+    TM_PROP(805, TMT, MSGBOXFONT,                 FONT)
+    TM_PROP(806, TMT, ICONTITLEFONT,              FONT)
+#   define TMT_FIRSTFONT                          TMT_CAPTIONFONT
+#   define TMT_LASTFONT                           TMT_ICONTITLEFONT
+
+    /* Bool theme metric properties */
+    TM_PROP(1001, TMT, FLATMENUS,                 BOOL)
+#   define TMT_FIRSTBOOL                          TMT_FLATMENUS
+#   define TMT_LASTBOOL                           TMT_FLATMENUS
+
+    /* Size theme metric properties */
+    TM_PROP(1201, TMT, SIZINGBORDERWIDTH,         SIZE)
+    TM_PROP(1202, TMT, SCROLLBARWIDTH,            SIZE)
+    TM_PROP(1203, TMT, SCROLLBARHEIGHT,           SIZE)
+    TM_PROP(1204, TMT, CAPTIONBARWIDTH,           SIZE)
+    TM_PROP(1205, TMT, CAPTIONBARHEIGHT,          SIZE)
+    TM_PROP(1206, TMT, SMCAPTIONBARWIDTH,         SIZE)
+    TM_PROP(1207, TMT, SMCAPTIONBARHEIGHT,        SIZE)
+    TM_PROP(1208, TMT, MENUBARWIDTH,              SIZE)
+    TM_PROP(1209, TMT, MENUBARHEIGHT,             SIZE)
+#   define TMT_FIRSTSIZE                          TMT_SIZINGBORDERWIDTH
+#   define TMT_LASTSIZE                           TMT_MENUBARHEIGHT
+
+    /* Int theme metric properties */
+    TM_PROP(1301, TMT, MINCOLORDEPTH,             INT)
+#   define TMT_FIRSTINT                           TMT_MINCOLORDEPTH
+#   define TMT_LASTINT                            TMT_MINCOLORDEPTH
+
+    /* String theme metric properties */
+    TM_PROP(1401, TMT, CSSNAME,                   STRING)
+    TM_PROP(1402, TMT, XMLNAME,                   STRING)
+#   define TMT_FIRSTSTRING                        TMT_CSSNAME
+#   define TMT_LASTSTRING                         TMT_XMLNAME
+
+    /* Color theme metric properties */
+    TM_PROP(1601, TMT, SCROLLBAR,                 COLOR)
+    TM_PROP(1602, TMT, BACKGROUND,                COLOR)
+    TM_PROP(1603, TMT, ACTIVECAPTION,             COLOR)
+    TM_PROP(1604, TMT, INACTIVECAPTION,           COLOR)
+    TM_PROP(1605, TMT, MENU,                      COLOR)
+    TM_PROP(1606, TMT, WINDOW,                    COLOR)
+    TM_PROP(1607, TMT, WINDOWFRAME,               COLOR)
+    TM_PROP(1608, TMT, MENUTEXT,                  COLOR)
+    TM_PROP(1609, TMT, WINDOWTEXT,                COLOR)
+    TM_PROP(1610, TMT, CAPTIONTEXT,               COLOR)
+    TM_PROP(1611, TMT, ACTIVEBORDER,              COLOR)
+    TM_PROP(1612, TMT, INACTIVEBORDER,            COLOR)
+    TM_PROP(1613, TMT, APPWORKSPACE,              COLOR)
+    TM_PROP(1614, TMT, HIGHLIGHT,                 COLOR)
+    TM_PROP(1615, TMT, HIGHLIGHTTEXT,             COLOR)
+    TM_PROP(1616, TMT, BTNFACE,                   COLOR)
+    TM_PROP(1617, TMT, BTNSHADOW,                 COLOR)
+    TM_PROP(1618, TMT, GRAYTEXT,                  COLOR)
+    TM_PROP(1619, TMT, BTNTEXT,                   COLOR)
+    TM_PROP(1620, TMT, INACTIVECAPTIONTEXT,       COLOR)
+    TM_PROP(1621, TMT, BTNHIGHLIGHT,              COLOR)
+    TM_PROP(1622, TMT, DKSHADOW3D,                COLOR)
+    TM_PROP(1623, TMT, LIGHT3D,                   COLOR)
+    TM_PROP(1624, TMT, INFOTEXT,                  COLOR)
+    TM_PROP(1625, TMT, INFOBK,                    COLOR)
+    TM_PROP(1626, TMT, BUTTONALTERNATEFACE,       COLOR)
+    TM_PROP(1627, TMT, HOTTRACKING,               COLOR)
+    TM_PROP(1628, TMT, GRADIENTACTIVECAPTION,     COLOR)
+    TM_PROP(1629, TMT, GRADIENTINACTIVECAPTION,   COLOR)
+    TM_PROP(1630, TMT, MENUHILIGHT,               COLOR)
+    TM_PROP(1631, TMT, MENUBAR,                   COLOR)
+#   define TMT_FIRSTCOLOR                         TMT_SCROLLBAR
+#   define TMT_LASTCOLOR                          TMT_MENUBAR
+
+    /* hue substitutions */
+    TM_PROP(1801, TMT, FROMHUE1,                  INT)
+    TM_PROP(1802, TMT, FROMHUE2,                  INT)
+    TM_PROP(1803, TMT, FROMHUE3,                  INT)
+    TM_PROP(1804, TMT, FROMHUE4,                  INT)
+    TM_PROP(1805, TMT, FROMHUE5,                  INT)
+    TM_PROP(1806, TMT, TOHUE1,                    INT)
+    TM_PROP(1807, TMT, TOHUE2,                    INT)
+    TM_PROP(1808, TMT, TOHUE3,                    INT)
+    TM_PROP(1809, TMT, TOHUE4,                    INT)
+    TM_PROP(1810, TMT, TOHUE5,                    INT)
+
+    /* color substitutions */
+    TM_PROP(2001, TMT, FROMCOLOR1,                COLOR)
+    TM_PROP(2002, TMT, FROMCOLOR2,                COLOR)
+    TM_PROP(2003, TMT, FROMCOLOR3,                COLOR)
+    TM_PROP(2004, TMT, FROMCOLOR4,                COLOR)
+    TM_PROP(2005, TMT, FROMCOLOR5,                COLOR)
+    TM_PROP(2006, TMT, TOCOLOR1,                  COLOR)
+    TM_PROP(2007, TMT, TOCOLOR2,                  COLOR)
+    TM_PROP(2008, TMT, TOCOLOR3,                  COLOR)
+    TM_PROP(2009, TMT, TOCOLOR4,                  COLOR)
+    TM_PROP(2010, TMT, TOCOLOR5,                  COLOR)
+
+    /* Bool rendering properties */
+    TM_PROP(2201, TMT, TRANSPARENT,               BOOL)
+    TM_PROP(2202, TMT, AUTOSIZE,                  BOOL)
+    TM_PROP(2203, TMT, BORDERONLY,                BOOL)
+    TM_PROP(2204, TMT, COMPOSITED,                BOOL)
+    TM_PROP(2205, TMT, BGFILL,                    BOOL)
+    TM_PROP(2206, TMT, GLYPHTRANSPARENT,          BOOL)
+    TM_PROP(2207, TMT, GLYPHONLY,                 BOOL)
+    TM_PROP(2208, TMT, ALWAYSSHOWSIZINGBAR,       BOOL)
+    TM_PROP(2209, TMT, MIRRORIMAGE,               BOOL)
+    TM_PROP(2210, TMT, UNIFORMSIZING,             BOOL)
+    TM_PROP(2211, TMT, INTEGRALSIZING,            BOOL)
+    TM_PROP(2212, TMT, SOURCEGROW,                BOOL)
+    TM_PROP(2213, TMT, SOURCESHRINK,              BOOL)
+
+    /* Int rendering properties */
+    TM_PROP(2401, TMT, IMAGECOUNT,                INT)
+    TM_PROP(2402, TMT, ALPHALEVEL,                INT)
+    TM_PROP(2403, TMT, BORDERSIZE,                INT)
+    TM_PROP(2404, TMT, ROUNDCORNERWIDTH,          INT)
+    TM_PROP(2405, TMT, ROUNDCORNERHEIGHT,         INT)
+    TM_PROP(2406, TMT, GRADIENTRATIO1,            INT)
+    TM_PROP(2407, TMT, GRADIENTRATIO2,            INT)
+    TM_PROP(2408, TMT, GRADIENTRATIO3,            INT)
+    TM_PROP(2409, TMT, GRADIENTRATIO4,            INT)
+    TM_PROP(2410, TMT, GRADIENTRATIO5,            INT)
+    TM_PROP(2411, TMT, PROGRESSCHUNKSIZE,         INT)
+    TM_PROP(2412, TMT, PROGRESSSPACESIZE,         INT)
+    TM_PROP(2413, TMT, SATURATION,                INT)
+    TM_PROP(2414, TMT, TEXTBORDERSIZE,            INT)
+    TM_PROP(2415, TMT, ALPHATHRESHOLD,            INT)
+    TM_PROP(2416, TMT, WIDTH,                     SIZE)
+    TM_PROP(2417, TMT, HEIGHT,                    SIZE)
+    TM_PROP(2418, TMT, GLYPHINDEX,                INT)
+    TM_PROP(2419, TMT, TRUESIZESTRETCHMARK,       INT)
+    TM_PROP(2420, TMT, MINDPI1,                   INT)
+    TM_PROP(2421, TMT, MINDPI2,                   INT)
+    TM_PROP(2422, TMT, MINDPI3,                   INT)
+    TM_PROP(2423, TMT, MINDPI4,                   INT)
+    TM_PROP(2424, TMT, MINDPI5,                   INT)
+
+    /* Font rendering properties */
+    TM_PROP(2601, TMT, GLYPHFONT,                 FONT)
+
+    /* Filename rendering properties */
+    TM_PROP(3001, TMT, IMAGEFILE,                 FILENAME)
+    TM_PROP(3002, TMT, IMAGEFILE1,                FILENAME)
+    TM_PROP(3003, TMT, IMAGEFILE2,                FILENAME)
+    TM_PROP(3004, TMT, IMAGEFILE3,                FILENAME)
+    TM_PROP(3005, TMT, IMAGEFILE4,                FILENAME)
+    TM_PROP(3006, TMT, IMAGEFILE5,                FILENAME)
+    TM_PROP(3007, TMT, STOCKIMAGEFILE,            FILENAME)
+    TM_PROP(3008, TMT, GLYPHIMAGEFILE,            FILENAME)
+
+    /* String rendering properties */
+    TM_PROP(3201, TMT, TEXT,                      STRING)
+
+    /* Position rendering properties */
+    TM_PROP(3401, TMT, OFFSET,                    POSITION)
+    TM_PROP(3402, TMT, TEXTSHADOWOFFSET,          POSITION)
+    TM_PROP(3403, TMT, MINSIZE,                   POSITION)
+    TM_PROP(3404, TMT, MINSIZE1,                  POSITION)
+    TM_PROP(3405, TMT, MINSIZE2,                  POSITION)
+    TM_PROP(3406, TMT, MINSIZE3,                  POSITION)
+    TM_PROP(3407, TMT, MINSIZE4,                  POSITION)
+    TM_PROP(3408, TMT, MINSIZE5,                  POSITION)
+    TM_PROP(3409, TMT, NORMALSIZE,                POSITION)
+
+    /* Margin rendering properties */
+    TM_PROP(3601, TMT, SIZINGMARGINS,             MARGINS)
+    TM_PROP(3602, TMT, CONTENTMARGINS,            MARGINS)
+    TM_PROP(3603, TMT, CAPTIONMARGINS,            MARGINS)
+
+    /* Color rendering properties */
+    TM_PROP(3801, TMT, BORDERCOLOR,               COLOR)
+    TM_PROP(3802, TMT, FILLCOLOR,                 COLOR)
+    TM_PROP(3803, TMT, TEXTCOLOR,                 COLOR)
+    TM_PROP(3804, TMT, EDGELIGHTCOLOR,            COLOR)
+    TM_PROP(3805, TMT, EDGEHIGHLIGHTCOLOR,        COLOR)
+    TM_PROP(3806, TMT, EDGESHADOWCOLOR,           COLOR)
+    TM_PROP(3807, TMT, EDGEDKSHADOWCOLOR,         COLOR)
+    TM_PROP(3808, TMT, EDGEFILLCOLOR,             COLOR)
+    TM_PROP(3809, TMT, TRANSPARENTCOLOR,          COLOR)
+    TM_PROP(3810, TMT, GRADIENTCOLOR1,            COLOR)
+    TM_PROP(3811, TMT, GRADIENTCOLOR2,            COLOR)
+    TM_PROP(3812, TMT, GRADIENTCOLOR3,            COLOR)
+    TM_PROP(3813, TMT, GRADIENTCOLOR4,            COLOR)
+    TM_PROP(3814, TMT, GRADIENTCOLOR5,            COLOR)
+    TM_PROP(3815, TMT, SHADOWCOLOR,               COLOR)
+    TM_PROP(3816, TMT, GLOWCOLOR,                 COLOR)
+    TM_PROP(3817, TMT, TEXTBORDERCOLOR,           COLOR)
+    TM_PROP(3818, TMT, TEXTSHADOWCOLOR,           COLOR)
+    TM_PROP(3819, TMT, GLYPHTEXTCOLOR,            COLOR)
+    TM_PROP(3820, TMT, GLYPHTRANSPARENTCOLOR,     COLOR)
+    TM_PROP(3821, TMT, FILLCOLORHINT,             COLOR)
+    TM_PROP(3822, TMT, BORDERCOLORHINT,           COLOR)
+    TM_PROP(3823, TMT, ACCENTCOLORHINT,           COLOR)
+
+    /* Enum rendering properties */
+    TM_PROP(4001, TMT, BGTYPE,                    ENUM)
+    TM_PROP(4002, TMT, BORDERTYPE,                ENUM)
+    TM_PROP(4003, TMT, FILLTYPE,                  ENUM)
+    TM_PROP(4004, TMT, SIZINGTYPE,                ENUM)
+    TM_PROP(4005, TMT, HALIGN,                    ENUM)
+    TM_PROP(4006, TMT, CONTENTALIGNMENT,          ENUM)
+    TM_PROP(4007, TMT, VALIGN,                    ENUM)
+    TM_PROP(4008, TMT, OFFSETTYPE,                ENUM)
+    TM_PROP(4009, TMT, ICONEFFECT,                ENUM)
+    TM_PROP(4010, TMT, TEXTSHADOWTYPE,            ENUM)
+    TM_PROP(4011, TMT, IMAGELAYOUT,               ENUM)
+    TM_PROP(4012, TMT, GLYPHTYPE,                 ENUM)
+    TM_PROP(4013, TMT, IMAGESELECTTYPE,           ENUM)
+    TM_PROP(4014, TMT, GLYPHFONTSIZINGTYPE,       ENUM)
+    TM_PROP(4015, TMT, TRUESIZESCALINGTYPE,       ENUM)
+
+    /* custom properties */
+    TM_PROP(5001, TMT, USERPICTURE,               BOOL)
+    TM_PROP(5002, TMT, DEFAULTPANESIZE,           RECT)
+    TM_PROP(5003, TMT, BLENDCOLOR,                COLOR)
+
+END_TM_PROPS()
+
+
+/***** PARTS & STATES *****/
+
+/* BUTTON parts */
+BEGIN_TM_CLASS_PARTS(BUTTON)
+    TM_PART(1, BP, PUSHBUTTON)
+    TM_PART(2, BP, RADIOBUTTON)
+    TM_PART(3, BP, CHECKBOX)
+    TM_PART(4, BP, GROUPBOX)
+    TM_PART(5, BP, USERBUTTON)
+END_TM_CLASS_PARTS()
+
+/* BUTTON - PUSHBUTTON states */
+BEGIN_TM_PART_STATES(PUSHBUTTON)
+    TM_STATE(1, PBS, NORMAL)
+    TM_STATE(2, PBS, HOT)
+    TM_STATE(3, PBS, PRESSED)
+    TM_STATE(4, PBS, DISABLED)
+    TM_STATE(5, PBS, DEFAULTED)
+END_TM_PART_STATES()
+
+/* BUTTON - RADIOBUTTON states */
+BEGIN_TM_PART_STATES(RADIOBUTTON)
+    TM_STATE(1, RBS, UNCHECKEDNORMAL)
+    TM_STATE(2, RBS, UNCHECKEDHOT)
+    TM_STATE(3, RBS, UNCHECKEDPRESSED)
+    TM_STATE(4, RBS, UNCHECKEDDISABLED)
+    TM_STATE(5, RBS, CHECKEDNORMAL)
+    TM_STATE(6, RBS, CHECKEDHOT)
+    TM_STATE(7, RBS, CHECKEDPRESSED)
+    TM_STATE(8, RBS, CHECKEDDISABLED)
+END_TM_PART_STATES()
+
+/* BUTTON - CHECKBOX states */
+BEGIN_TM_PART_STATES(CHECKBOX)
+    TM_STATE(1, CBS, UNCHECKEDNORMAL)
+    TM_STATE(2, CBS, UNCHECKEDHOT)
+    TM_STATE(3, CBS, UNCHECKEDPRESSED)
+    TM_STATE(4, CBS, UNCHECKEDDISABLED)
+    TM_STATE(5, CBS, CHECKEDNORMAL)
+    TM_STATE(6, CBS, CHECKEDHOT)
+    TM_STATE(7, CBS, CHECKEDPRESSED)
+    TM_STATE(8, CBS, CHECKEDDISABLED)
+    TM_STATE(9, CBS, MIXEDNORMAL)
+    TM_STATE(10, CBS, MIXEDHOT)
+    TM_STATE(11, CBS, MIXEDPRESSED)
+    TM_STATE(12, CBS, MIXEDDISABLED)
+END_TM_PART_STATES()
+
+/* BUTTON - GROUPBOX states */
+BEGIN_TM_PART_STATES(GROUPBOX)
+    TM_STATE(1, GBS, NORMAL)
+    TM_STATE(2, GBS, DISABLED)
+END_TM_PART_STATES()
+
+/* CLOCK parts */
+BEGIN_TM_CLASS_PARTS(CLOCK)
+    TM_PART(1, CLP, TIME)
+END_TM_CLASS_PARTS()
+
+/* CLOCK states */
+BEGIN_TM_PART_STATES(CLOCK)
+    TM_STATE(1, CLS, NORMAL)
+END_TM_PART_STATES()
+
+/* COMBOBOX parts */
+BEGIN_TM_CLASS_PARTS(COMBOBOX)
+    TM_PART(1, CP, DROPDOWNBUTTON)
+END_TM_CLASS_PARTS()
+
+/* COMBOBOX states */
+BEGIN_TM_PART_STATES(COMBOBOX)
+    TM_STATE(1, CBXS, NORMAL)
+    TM_STATE(2, CBXS, HOT)
+    TM_STATE(3, CBXS, PRESSED)
+    TM_STATE(4, CBXS, DISABLED)
+END_TM_PART_STATES()
+
+/* EDIT parts */
+BEGIN_TM_CLASS_PARTS(EDIT)
+    TM_PART(1, EP, EDITTEXT)
+    TM_PART(2, EP, CARET)
+END_TM_CLASS_PARTS()
+
+/* EDIT - EDITTEXT states */
+BEGIN_TM_PART_STATES(EDITTEXT)
+    TM_STATE(1, ETS, NORMAL)
+    TM_STATE(2, ETS, HOT)
+    TM_STATE(3, ETS, SELECTED)
+    TM_STATE(4, ETS, DISABLED)
+    TM_STATE(5, ETS, FOCUSED)
+    TM_STATE(6, ETS, READONLY)
+    TM_STATE(7, ETS, ASSIST)
+END_TM_PART_STATES()
+
+/* EXPLORERBAR parts */
+BEGIN_TM_CLASS_PARTS(EXPLORERBAR)
+    TM_PART(1, EBP, HEADERBACKGROUND)
+    TM_PART(2, EBP, HEADERCLOSE)
+    TM_PART(3, EBP, HEADERPIN)
+    TM_PART(4, EBP, IEBARMENU)
+    TM_PART(5, EBP, NORMALGROUPBACKGROUND)
+    TM_PART(6, EBP, NORMALGROUPCOLLAPSE)
+    TM_PART(7, EBP, NORMALGROUPEXPAND)
+    TM_PART(8, EBP, NORMALGROUPHEAD)
+    TM_PART(9, EBP, SPECIALGROUPBACKGROUND)
+    TM_PART(10, EBP, SPECIALGROUPCOLLAPSE)
+    TM_PART(11, EBP, SPECIALGROUPEXPAND)
+    TM_PART(12, EBP, SPECIALGROUPHEAD)
+END_TM_CLASS_PARTS()
+
+/* EXPLORERBAR - HEADERCLOSE states */
+BEGIN_TM_PART_STATES(HEADERCLOSE)
+    TM_STATE(1, EBHC, NORMAL)
+    TM_STATE(2, EBHC, HOT)
+    TM_STATE(3, EBHC, PRESSED)
+END_TM_PART_STATES()
+
+/* EXPLORERBAR - HEADERPIN states */
+BEGIN_TM_PART_STATES(HEADERPIN)
+    TM_STATE(1, EBHP, NORMAL)
+    TM_STATE(2, EBHP, HOT)
+    TM_STATE(3, EBHP, PRESSED)
+    TM_STATE(4, EBHP, SELECTEDNORMAL)
+    TM_STATE(5, EBHP, SELECTEDHOT)
+    TM_STATE(6, EBHP, SELECTEDPRESSED)
+END_TM_PART_STATES()
+
+/* EXPLORERBAR - IEBARMENU states */
+BEGIN_TM_PART_STATES(IEBARMENU)
+    TM_STATE(1, EBM, NORMAL)
+    TM_STATE(2, EBM, HOT)
+    TM_STATE(3, EBM, PRESSED)
+END_TM_PART_STATES()
+
+/* EXPLORERBAR - NORMALGROUPCOLLAPSE states */
+BEGIN_TM_PART_STATES(NORMALGROUPCOLLAPSE)
+    TM_STATE(1, EBNGC, NORMAL)
+    TM_STATE(2, EBNGC, HOT)
+    TM_STATE(3, EBNGC, PRESSED)
+END_TM_PART_STATES()
+
+/* EXPLORERBAR - NORMALGROUPEXPAND states */
+BEGIN_TM_PART_STATES(NORMALGROUPEXPAND)
+    TM_STATE(1, EBNGE, NORMAL)
+    TM_STATE(2, EBNGE, HOT)
+    TM_STATE(3, EBNGE, PRESSED)
+END_TM_PART_STATES()
+
+/* EXPLORERBAR - SPECIALGROUPCOLLAPSE states */
+BEGIN_TM_PART_STATES(SPECIALGROUPCOLLAPSE)
+    TM_STATE(1, EBSGC, NORMAL)
+    TM_STATE(2, EBSGC, HOT)
+    TM_STATE(3, EBSGC, PRESSED)
+END_TM_PART_STATES()
+
+/* EXPLORERBAR - SPECIALGROUPEXPAND states */
+BEGIN_TM_PART_STATES(SPECIALGROUPEXPAND)
+    TM_STATE(1, EBSGE, NORMAL)
+    TM_STATE(2, EBSGE, HOT)
+    TM_STATE(3, EBSGE, PRESSED)
+END_TM_PART_STATES()
+
+/* GLOBALS parts */
+BEGIN_TM_CLASS_PARTS(GLOBALS)
+    TM_PART(1, GP, BORDER)
+    TM_PART(2, GP, LINEHORZ)
+    TM_PART(3, GP, LINEVERT)
+END_TM_CLASS_PARTS()
+
+/* GLOBALS - BORDER states */
+BEGIN_TM_PART_STATES(BORDER)
+    TM_STATE(1, BSS, FLAT)
+    TM_STATE(2, BSS, RAISED)
+    TM_STATE(3, BSS, SUNKEN)
+END_TM_PART_STATES()
+
+/* GLOBALS - LINEHORZ states */
+BEGIN_TM_PART_STATES(LINEHORZ)
+    TM_STATE(1, LHS, FLAT)
+    TM_STATE(2, LHS, RAISED)
+    TM_STATE(3, LHS, SUNKEN)
+END_TM_PART_STATES()
+
+/* GLOBAL - LINEVERT states */
+BEGIN_TM_PART_STATES(LINEVERT)
+    TM_STATE(1, LVS, FLAT)
+    TM_STATE(2, LVS, RAISED)
+    TM_STATE(3, LVS, SUNKEN)
+END_TM_PART_STATES()
+
+/* HEADER parts */
+BEGIN_TM_CLASS_PARTS(HEADER)
+    TM_PART(1, HP, HEADERITEM)
+    TM_PART(2, HP, HEADERITEMLEFT)
+    TM_PART(3, HP, HEADERITEMRIGHT)
+    TM_PART(4, HP, HEADERSORTARROW)
+END_TM_CLASS_PARTS()
+
+/* HEADER - HEADERITEM states */
+BEGIN_TM_PART_STATES(HEADERITEM)
+    TM_STATE(1, HIS, NORMAL)
+    TM_STATE(2, HIS, HOT)
+    TM_STATE(3, HIS, PRESSED)
+END_TM_PART_STATES()
+
+/* HEADER - HEADERITEMLEFT states */
+BEGIN_TM_PART_STATES(HEADERITEMLEFT)
+    TM_STATE(1, HILS, NORMAL)
+    TM_STATE(2, HILS, HOT)
+    TM_STATE(3, HILS, PRESSED)
+END_TM_PART_STATES()
+
+/* HEADER - HEADERITEMRIGHT states */
+BEGIN_TM_PART_STATES(HEADERITEMRIGHT)
+    TM_STATE(1, HIRS, NORMAL)
+    TM_STATE(2, HIRS, HOT)
+    TM_STATE(3, HIRS, PRESSED)
+END_TM_PART_STATES()
+
+/* HEADER - HEADERSORTARROW states */
+BEGIN_TM_PART_STATES(HEADERSORTARROW)
+    TM_STATE(1, HSAS, SORTEDUP)
+    TM_STATE(2, HSAS, SORTEDDOWN)
+END_TM_PART_STATES()
+
+/* LISTVIEW parts */
+BEGIN_TM_CLASS_PARTS(LISTVIEW)
+    TM_PART(1, LVP, LISTITEM)
+    TM_PART(2, LVP, LISTGROUP)
+    TM_PART(3, LVP, LISTDETAIL)
+    TM_PART(4, LVP, LISTSORTEDDETAIL)
+    TM_PART(5, LVP, EMPTYTEXT)
+END_TM_CLASS_PARTS()
+
+/* LISTVIEW - LISTITEM states */
+BEGIN_TM_PART_STATES(LISTITEM)
+    TM_STATE(1, LIS, NORMAL)
+    TM_STATE(2, LIS, HOT)
+    TM_STATE(3, LIS, SELECTED)
+    TM_STATE(4, LIS, DISABLED)
+    TM_STATE(5, LIS, SELECTEDNOTFOCUS)
+END_TM_PART_STATES()
+
+/* MENU parts */
+BEGIN_TM_CLASS_PARTS(MENU)
+    TM_PART(1, MP, MENUITEM)
+    TM_PART(2, MP, MENUDROPDOWN)
+    TM_PART(3, MP, MENUBARITEM)
+    TM_PART(4, MP, MENUBARDROPDOWN)
+    TM_PART(5, MP, CHEVRON)
+    TM_PART(6, MP, SEPARATOR)
+END_TM_CLASS_PARTS()
+
+/* MENU - * states */
+BEGIN_TM_PART_STATES(MENU)
+    TM_STATE(1, MS, NORMAL)
+    TM_STATE(2, MS, SELECTED)
+    TM_STATE(3, MS, DEMOTED)
+END_TM_PART_STATES()
+
+/* MENUBAND parts */
+BEGIN_TM_CLASS_PARTS(MENUBAND)
+    TM_PART(1, MDP, NEWAPPBUTTON)
+/* MDP_SEPERATOR isn't a typo, as per Microsoft's headers */
+    TM_PART(2, MDP, SEPERATOR)
+END_TM_CLASS_PARTS()
+
+/* MENUBAND states */
+BEGIN_TM_PART_STATES(MENUBAND)
+    TM_STATE(1, MDS, NORMAL)
+    TM_STATE(2, MDS, HOT)
+    TM_STATE(3, MDS, PRESSED)
+    TM_STATE(4, MDS, DISABLED)
+    TM_STATE(5, MDS, CHECKED)
+    TM_STATE(6, MDS, HOTCHECKED)
+END_TM_PART_STATES()
+
+/* PAGE parts */
+BEGIN_TM_CLASS_PARTS(PAGE)
+    TM_PART(1, PGRP, UP)
+    TM_PART(2, PGRP, DOWN)
+    TM_PART(3, PGRP, UPHORZ)
+    TM_PART(4, PGRP, DOWNHORZ)
+END_TM_CLASS_PARTS()
+
+/* PAGE - UP states */
+BEGIN_TM_PART_STATES(UP)
+    TM_STATE(1, UPS, NORMAL)
+    TM_STATE(2, UPS, HOT)
+    TM_STATE(3, UPS, PRESSED)
+    TM_STATE(4, UPS, DISABLED)
+END_TM_PART_STATES()
+
+/* PAGE - DOWN states  */
+BEGIN_TM_PART_STATES(DOWN)
+    TM_STATE(1, DNS, NORMAL)
+    TM_STATE(2, DNS, HOT)
+    TM_STATE(3, DNS, PRESSED)
+    TM_STATE(4, DNS, DISABLED)
+END_TM_PART_STATES()
+
+/* PAGE - UPHORZ states */
+BEGIN_TM_PART_STATES(UPHORZ)
+    TM_STATE(1, UPHZS, NORMAL)
+    TM_STATE(2, UPHZS, HOT)
+    TM_STATE(3, UPHZS, PRESSED)
+    TM_STATE(4, UPHZS, DISABLED)
+END_TM_PART_STATES()
+
+/* PAGE - DOWNHORZ states */
+BEGIN_TM_PART_STATES(DOWNHORZ)
+    TM_STATE(1, DNHZS, NORMAL)
+    TM_STATE(2, DNHZS, HOT)
+    TM_STATE(3, DNHZS, PRESSED)
+    TM_STATE(4, DNHZS, DISABLED)
+END_TM_PART_STATES()
+
+/* PROGRESS parts */
+BEGIN_TM_CLASS_PARTS(PROGRESS)
+    TM_PART(1, PP, BAR)
+    TM_PART(2, PP, BARVERT)
+    TM_PART(3, PP, CHUNK)
+    TM_PART(4, PP, CHUNKVERT)
+END_TM_CLASS_PARTS()
+
+/* REBAR parts */
+BEGIN_TM_CLASS_PARTS(REBAR)
+    TM_PART(1, RP, GRIPPER)
+    TM_PART(2, RP, GRIPPERVERT)
+    TM_PART(3, RP, BAND)
+    TM_PART(4, RP, CHEVRON)
+    TM_PART(5, RP, CHEVRONVERT)
+END_TM_CLASS_PARTS()
+
+/* REBAR - CHEVRON states */
+BEGIN_TM_PART_STATES(CHEVRON)
+    TM_STATE(1, CHEVS, NORMAL)
+    TM_STATE(2, CHEVS, HOT)
+    TM_STATE(3, CHEVS, PRESSED)
+END_TM_PART_STATES()
+
+/* SCROLLBAR parts */
+BEGIN_TM_CLASS_PARTS(SCROLLBAR)
+    TM_PART(1, SBP, ARROWBTN)
+    TM_PART(2, SBP, THUMBBTNHORZ)
+    TM_PART(3, SBP, THUMBBTNVERT)
+    TM_PART(4, SBP, LOWERTRACKHORZ)
+    TM_PART(5, SBP, UPPERTRACKHORZ)
+    TM_PART(6, SBP, LOWERTRACKVERT)
+    TM_PART(7, SBP, UPPERTRACKVERT)
+    TM_PART(8, SBP, GRIPPERHORZ)
+    TM_PART(9, SBP, GRIPPERVERT)
+    TM_PART(10, SBP, SIZEBOX)
+END_TM_CLASS_PARTS()
+
+/* SCROLLBAR - ARROWBTN states */
+BEGIN_TM_PART_STATES(ARROWBTN)
+    TM_STATE(1, ABS, UPNORMAL)
+    TM_STATE(2, ABS, UPHOT)
+    TM_STATE(3, ABS, UPPRESSED)
+    TM_STATE(4, ABS, UPDISABLED)
+    TM_STATE(5, ABS, DOWNNORMAL)
+    TM_STATE(6, ABS, DOWNHOT)
+    TM_STATE(7, ABS, DOWNPRESSED)
+    TM_STATE(8, ABS, DOWNDISABLED)
+    TM_STATE(9, ABS, LEFTNORMAL)
+    TM_STATE(10, ABS, LEFTHOT)
+    TM_STATE(11, ABS, LEFTPRESSED)
+    TM_STATE(12, ABS, LEFTDISABLED)
+    TM_STATE(13, ABS, RIGHTNORMAL)
+    TM_STATE(14, ABS, RIGHTHOT)
+    TM_STATE(15, ABS, RIGHTPRESSED)
+    TM_STATE(16, ABS, RIGHTDISABLED)
+END_TM_PART_STATES()
+
+/* SCROLLBAR - LOWER* / THUMB* / UPPER* states */
+BEGIN_TM_PART_STATES(SCROLLBAR)
+    TM_STATE(1, SCRBS, NORMAL)
+    TM_STATE(2, SCRBS, HOT)
+    TM_STATE(3, SCRBS, PRESSED)
+    TM_STATE(4, SCRBS, DISABLED)
+END_TM_PART_STATES()
+
+/* SCROLLBAR - SIZEBOX states */
+BEGIN_TM_PART_STATES(SIZEBOX)
+    TM_STATE(1, SZB, RIGHTALIGN)
+    TM_STATE(2, SZB, LEFTALIGN)
+END_TM_PART_STATES()
+
+/* SPIN parts */
+BEGIN_TM_CLASS_PARTS(SPIN)
+    TM_PART(1, SPNP, UP)
+    TM_PART(2, SPNP, DOWN)
+    TM_PART(3, SPNP, UPHORZ)
+    TM_PART(4, SPNP, DOWNHORZ)
+END_TM_CLASS_PARTS()
+
+/* SPIN * states */
+/* See PAGE states */
+
+/* STARTPANEL parts */
+BEGIN_TM_CLASS_PARTS(STARTPANEL)
+    TM_PART(1, SPP, USERPANE)
+    TM_PART(2, SPP, MOREPROGRAMS)
+    TM_PART(3, SPP, MOREPROGRAMSARROW)
+    TM_PART(4, SPP, PROGLIST)
+    TM_PART(5, SPP, PROGLISTSEPARATOR)
+    TM_PART(6, SPP, PLACESLIST)
+    TM_PART(7, SPP, PLACESLISTSEPARATOR)
+    TM_PART(8, SPP, LOGOFF)
+    TM_PART(9, SPP, LOGOFFBUTTONS)
+    TM_PART(10, SPP, USERPICTURE)
+    TM_PART(11, SPP, PREVIEW)
+END_TM_CLASS_PARTS()
+
+/* STARTPANEL - MOREPROGRAMSARROW states */
+BEGIN_TM_PART_STATES(MOREPROGRAMSARROW)
+    TM_STATE(1, SPS, NORMAL)
+    TM_STATE(2, SPS, HOT)
+    TM_STATE(3, SPS, PRESSED)
+END_TM_PART_STATES()
+
+/* STARTPANEL - LOGOFFBUTTONS states */
+BEGIN_TM_PART_STATES(LOGOFFBUTTONS)
+    TM_STATE(1, SPLS, NORMAL)
+    TM_STATE(2, SPLS, HOT)
+    TM_STATE(3, SPLS, PRESSED)
+END_TM_PART_STATES()
+
+/* STATUS parts */
+BEGIN_TM_CLASS_PARTS(STATUS)
+    TM_PART(1, SP, PANE)
+    TM_PART(2, SP, GRIPPERPANE)
+    TM_PART(3, SP, GRIPPER)
+END_TM_CLASS_PARTS()
+
+/* TAB parts */
+BEGIN_TM_CLASS_PARTS(TAB)
+    TM_PART(1, TABP, TABITEM)
+    TM_PART(2, TABP, TABITEMLEFTEDGE)
+    TM_PART(3, TABP, TABITEMRIGHTEDGE)
+    TM_PART(4, TABP, TABITEMBOTHEDGE)
+    TM_PART(5, TABP, TOPTABITEM)
+    TM_PART(6, TABP, TOPTABITEMLEFTEDGE)
+    TM_PART(7, TABP, TOPTABITEMRIGHTEDGE)
+    TM_PART(8, TABP, TOPTABITEMBOTHEDGE)
+    TM_PART(9, TABP, PANE)
+    TM_PART(10, TABP, BODY)
+END_TM_CLASS_PARTS()
+
+/* TAB - TABITEM states */
+BEGIN_TM_PART_STATES(TABITEM)
+    TM_STATE(1, TIS, NORMAL)
+    TM_STATE(2, TIS, HOT)
+    TM_STATE(3, TIS, SELECTED)
+    TM_STATE(4, TIS, DISABLED)
+    TM_STATE(5, TIS, FOCUSED)
+END_TM_PART_STATES()
+
+/* TAB - TABITEMLEFTEDGE states */
+BEGIN_TM_PART_STATES(TABITEMLEFTEDGE)
+    TM_STATE(1, TILES, NORMAL)
+    TM_STATE(2, TILES, HOT)
+    TM_STATE(3, TILES, SELECTED)
+    TM_STATE(4, TILES, DISABLED)
+    TM_STATE(5, TILES, FOCUSED)
+END_TM_PART_STATES()
+
+/* TAB - TABITEMRIGHTEDGE states */
+BEGIN_TM_PART_STATES(TABITEMRIGHTEDGE)
+    TM_STATE(1, TIRES, NORMAL)
+    TM_STATE(2, TIRES, HOT)
+    TM_STATE(3, TIRES, SELECTED)
+    TM_STATE(4, TIRES, DISABLED)
+    TM_STATE(5, TIRES, FOCUSED)
+END_TM_PART_STATES()
+
+/* TAB - TABITEMBOTHEDGES states */
+BEGIN_TM_PART_STATES(TABITEMBOTHEDGES)
+    TM_STATE(1, TIBES, NORMAL)
+    TM_STATE(2, TIBES, HOT)
+    TM_STATE(3, TIBES, SELECTED)
+    TM_STATE(4, TIBES, DISABLED)
+    TM_STATE(5, TIBES, FOCUSED)
+END_TM_PART_STATES()
+
+/* TAB - TOPTABITEM states */
+BEGIN_TM_PART_STATES(TOPTABITEM)
+    TM_STATE(1, TTIS, NORMAL)
+    TM_STATE(2, TTIS, HOT)
+    TM_STATE(3, TTIS, SELECTED)
+    TM_STATE(4, TTIS, DISABLED)
+    TM_STATE(5, TTIS, FOCUSED)
+END_TM_PART_STATES()
+
+/* TAB - TOPTABITEMLEFTEDGE states */
+BEGIN_TM_PART_STATES(TOPTABITEMLEFTEDGE)
+    TM_STATE(1, TTILES, NORMAL)
+    TM_STATE(2, TTILES, HOT)
+    TM_STATE(3, TTILES, SELECTED)
+    TM_STATE(4, TTILES, DISABLED)
+    TM_STATE(5, TTILES, FOCUSED)
+END_TM_PART_STATES()
+
+/* TAB - TOPTABITEMRIGHTEDGE states */
+BEGIN_TM_PART_STATES(TOPTABITEMRIGHTEDGE)
+    TM_STATE(1, TTIRES, NORMAL)
+    TM_STATE(2, TTIRES, HOT)
+    TM_STATE(3, TTIRES, SELECTED)
+    TM_STATE(4, TTIRES, DISABLED)
+    TM_STATE(5, TTIRES, FOCUSED)
+END_TM_PART_STATES()
+
+/* TAB - TOPTABITEMBOTHEDGES states */
+BEGIN_TM_PART_STATES(TOPTABITEMBOTHEDGES)
+    TM_STATE(1, TTIBES, NORMAL)
+    TM_STATE(2, TTIBES, HOT)
+    TM_STATE(3, TTIBES, SELECTED)
+    TM_STATE(4, TTIBES, DISABLED)
+    TM_STATE(5, TTIBES, FOCUSED)
+END_TM_PART_STATES()
+
+/* TASKBAND parts */
+BEGIN_TM_CLASS_PARTS(TASKBAND)
+    TM_PART(1, TDP, GROUPCOUNT)
+    TM_PART(2, TDP, FLASHBUTTON)
+    TM_PART(3, TDP, FLASHBUTTONGROUPMENU)
+END_TM_CLASS_PARTS()
+
+/* TASKBAR parts */
+BEGIN_TM_CLASS_PARTS(TASKBAR)
+    TM_PART(1, TBP, BACKGROUNDBOTTOM)
+    TM_PART(2, TBP, BACKGROUNDRIGHT)
+    TM_PART(3, TBP, BACKGROUNDTOP)
+    TM_PART(4, TBP, BACKGROUNDLEFT)
+    TM_PART(5, TBP, SIZINGBARBOTTOM)
+    TM_PART(6, TBP, SIZINGBARRIGHT)
+    TM_PART(7, TBP, SIZINGBARTOP)
+    TM_PART(8, TBP, SIZINGBARLEFT)
+END_TM_CLASS_PARTS()
+
+/* TOOLBAR parts */
+BEGIN_TM_CLASS_PARTS(TOOLBAR)
+    TM_PART(1, TP, BUTTON)
+    TM_PART(2, TP, DROPDOWNBUTTON)
+    TM_PART(3, TP, SPLITBUTTON)
+    TM_PART(4, TP, SPLITBUTTONDROPDOWN)
+    TM_PART(5, TP, SEPARATOR)
+    TM_PART(6, TP, SEPARATORVERT)
+END_TM_CLASS_PARTS()
+
+/* TOOLBAR - * states */
+BEGIN_TM_PART_STATES(TOOLBAR)
+    TM_STATE(1, TS, NORMAL)
+    TM_STATE(2, TS, HOT)
+    TM_STATE(3, TS, PRESSED)
+    TM_STATE(4, TS, DISABLED)
+    TM_STATE(5, TS, CHECKED)
+    TM_STATE(6, TS, HOTCHECKED)
+END_TM_PART_STATES()
+
+/* TOOLTIP parts */
+BEGIN_TM_CLASS_PARTS(TOOLTIP)
+    TM_PART(1, TTP, STANDARD)
+    TM_PART(2, TTP, STANDARDTITLE)
+    TM_PART(3, TTP, BALLOON)
+    TM_PART(4, TTP, BALLOONTITLE)
+    TM_PART(5, TTP, CLOSE)
+END_TM_CLASS_PARTS()
+
+/* TOOLTIP - STANDARD states */
+BEGIN_TM_PART_STATES(STANDARD)
+    TM_STATE(1, TTSS, NORMAL)
+    TM_STATE(2, TTSS, LINK)
+END_TM_PART_STATES()
+
+/* TOOLTIP - STANDARDTITLE states */
+/* See TOOLTIP STANDARD  */
+
+/* TOOLTIP - BALLOON states */
+BEGIN_TM_PART_STATES(BALLOON)
+    TM_STATE(1, TTBS, NORMAL)
+    TM_STATE(2, TTBS, LINK)
+END_TM_PART_STATES()
+
+/* TOOLTIP - BALLOONTITLE states */
+/* See TOOLTIP BALLOON */
+
+/* TOOLTIP - CLOSE states */
+BEGIN_TM_PART_STATES(CLOSE)
+    TM_STATE(1, TTCS, NORMAL)
+    TM_STATE(2, TTCS, HOT)
+    TM_STATE(3, TTCS, PRESSED)
+END_TM_PART_STATES()
+
+/* TRACKBAR parts */
+BEGIN_TM_CLASS_PARTS(TRACKBAR)
+    TM_PART(1, TKP, TRACK)
+    TM_PART(2, TKP, TRACKVERT)
+    TM_PART(3, TKP, THUMB)
+    TM_PART(4, TKP, THUMBBOTTOM)
+    TM_PART(5, TKP, THUMBTOP)
+    TM_PART(6, TKP, THUMBVERT)
+    TM_PART(7, TKP, THUMBLEFT)
+    TM_PART(8, TKP, THUMBRIGHT)
+    TM_PART(9, TKP, TICS)
+    TM_PART(10, TKP, TICSVERT)
+END_TM_CLASS_PARTS()
+
+/* TRACKBAR states */
+BEGIN_TM_PART_STATES(TRACKBAR)
+    TM_STATE(1, TKS, NORMAL)
+END_TM_PART_STATES()
+
+/* TRACKBAR - TRACK states */
+BEGIN_TM_PART_STATES(TRACK)
+    TM_STATE(1, TRS, NORMAL)
+END_TM_PART_STATES()
+
+/* TRACKBAR - TRACKVERT states */
+BEGIN_TM_PART_STATES(TRACKVERT)
+    TM_STATE(1, TRVS, NORMAL)
+END_TM_PART_STATES()
+
+/* TRACKBAR - THUMB states */
+BEGIN_TM_PART_STATES(THUMB)
+    TM_STATE(1, TUS, NORMAL)
+    TM_STATE(2, TUS, HOT)
+    TM_STATE(3, TUS, PRESSED)
+    TM_STATE(4, TUS, FOCUSED)
+    TM_STATE(5, TUS, DISABLED)
+END_TM_PART_STATES()
+
+/* TRACKBAR - THUMBBOTTOM states */
+BEGIN_TM_PART_STATES(THUMBBOTTOM)
+    TM_STATE(1, TUBS, NORMAL)
+    TM_STATE(2, TUBS, HOT)
+    TM_STATE(3, TUBS, PRESSED)
+    TM_STATE(4, TUBS, FOCUSED)
+    TM_STATE(5, TUBS, DISABLED)
+END_TM_PART_STATES()
+
+/* TRACKBAR - THUMBTOP states */
+BEGIN_TM_PART_STATES(THUMBTOP)
+    TM_STATE(1, TUTS, NORMAL)
+    TM_STATE(2, TUTS, HOT)
+    TM_STATE(3, TUTS, PRESSED)
+    TM_STATE(4, TUTS, FOCUSED)
+    TM_STATE(5, TUTS, DISABLED)
+END_TM_PART_STATES()
+
+/* TRACKBAR - THUMBVERT states */
+BEGIN_TM_PART_STATES(THUMBVERT)
+    TM_STATE(1, TUVS, NORMAL)
+    TM_STATE(2, TUVS, HOT)
+    TM_STATE(3, TUVS, PRESSED)
+    TM_STATE(4, TUVS, FOCUSED)
+    TM_STATE(5, TUVS, DISABLED)
+END_TM_PART_STATES()
+
+/* TRACKBAR - THUMBLEFT states */
+BEGIN_TM_PART_STATES(THUMBLEFT)
+    TM_STATE(1, TUVLS, NORMAL)
+    TM_STATE(2, TUVLS, HOT)
+    TM_STATE(3, TUVLS, PRESSED)
+    TM_STATE(4, TUVLS, FOCUSED)
+    TM_STATE(5, TUVLS, DISABLED)
+END_TM_PART_STATES()
+
+/* TRACKBAR - THUMBRIGHT states */
+BEGIN_TM_PART_STATES(THUMBRIGHT)
+    TM_STATE(1, TUVRS, NORMAL)
+    TM_STATE(2, TUVRS, HOT)
+    TM_STATE(3, TUVRS, PRESSED)
+    TM_STATE(4, TUVRS, FOCUSED)
+    TM_STATE(5, TUVRS, DISABLED)
+END_TM_PART_STATES()
+
+/* TRACKBAR - TICS states */
+BEGIN_TM_PART_STATES(TICS)
+    TM_STATE(1, TSS, NORMAL)
+END_TM_PART_STATES()
+
+/* TRACKBAR - TICSVERT states */
+BEGIN_TM_PART_STATES(TICSVERT)
+    TM_STATE(1, TSVS, NORMAL)
+END_TM_PART_STATES()
+
+/* TRAYNOTIFY parts */
+BEGIN_TM_CLASS_PARTS(TRAYNOTIFY)
+    TM_PART(1, TNP, BACKGROUND)
+    TM_PART(2, TNP, ANIMBACKGROUND)
+END_TM_CLASS_PARTS()
+
+/* TREEVIEW parts */
+BEGIN_TM_CLASS_PARTS(TREEVIEW)
+    TM_PART(1, TVP, TREEITEM)
+    TM_PART(2, TVP, GLYPH)
+    TM_PART(3, TVP, BRANCH)
+END_TM_CLASS_PARTS()
+
+/* TREEVIEW - TREEITEM states */
+BEGIN_TM_PART_STATES(TREEITEM)
+    TM_STATE(1, TREIS, NORMAL)
+    TM_STATE(2, TREIS, HOT)
+    TM_STATE(3, TREIS, SELECTED)
+    TM_STATE(4, TREIS, DISABLED)
+    TM_STATE(5, TREIS, SELECTEDNOTFOCUS)
+END_TM_PART_STATES()
+
+/* TREEVIEW - GLYPH states */
+BEGIN_TM_PART_STATES(GLYPH)
+    TM_STATE(1, GLPS, CLOSED)
+    TM_STATE(2, GLPS, OPENED)
+END_TM_PART_STATES()
+
+/* WINDOW parts */
+BEGIN_TM_CLASS_PARTS(WINDOW)
+    TM_PART(1, WP, CAPTION)
+    TM_PART(2, WP, SMALLCAPTION)
+    TM_PART(3, WP, MINCAPTION)
+    TM_PART(4, WP, SMALLMINCAPTION)
+    TM_PART(5, WP, MAXCAPTION)
+    TM_PART(6, WP, SMALLMAXCAPTION)
+    TM_PART(7, WP, FRAMELEFT)
+    TM_PART(8, WP, FRAMERIGHT)
+    TM_PART(9, WP, FRAMEBOTTOM)
+    TM_PART(10, WP, SMALLFRAMELEFT)
+    TM_PART(11, WP, SMALLFRAMERIGHT)
+    TM_PART(12, WP, SMALLFRAMEBOTTOM)
+    TM_PART(13, WP, SYSBUTTON)
+    TM_PART(14, WP, MDISYSBUTTON)
+    TM_PART(15, WP, MINBUTTON)
+    TM_PART(16, WP, MDIMINBUTTON)
+    TM_PART(17, WP, MAXBUTTON)
+    TM_PART(18, WP, CLOSEBUTTON)
+    TM_PART(19, WP, SMALLCLOSEBUTTON)
+    TM_PART(20, WP, MDICLOSEBUTTON)
+    TM_PART(21, WP, RESTOREBUTTON)
+    TM_PART(22, WP, MDIRESTOREBUTTON)
+    TM_PART(23, WP, HELPBUTTON)
+    TM_PART(24, WP, MDIHELPBUTTON)
+    TM_PART(25, WP, HORZSCROLL)
+    TM_PART(26, WP, HORZTHUMB)
+    TM_PART(27, WP, VERTSCROLL)
+    TM_PART(28, WP, VERTTHUMB)
+    TM_PART(29, WP, DIALOG)
+    TM_PART(30, WP, CAPTIONSIZINGTEMPLATE)
+    TM_PART(31, WP, SMALLCAPTIONSIZINGTEMPLATE)
+    TM_PART(32, WP, FRAMELEFTSIZINGTEMPLATE)
+    TM_PART(33, WP, SMALLFRAMELEFTSIZINGTEMPLATE)
+    TM_PART(34, WP, FRAMERIGHTSIZINGTEMPLATE)
+    TM_PART(35, WP, SMALLFRAMERIGHTSIZINGTEMPLATE)
+    TM_PART(36, WP, FRAMEBOTTOMSIZINGTEMPLATE)
+    TM_PART(37, WP, SMALLFRAMEBOTTOMSIZINGTEMPLATE)
+END_TM_CLASS_PARTS()
+
+/* WINDOW - CAPTION / SMALLCAPTION states */
+BEGIN_TM_PART_STATES(CAPTION)
+    TM_STATE(1, CS, ACTIVE)
+    TM_STATE(2, CS, INACTIVE)
+    TM_STATE(3, CS, DISABLED)
+END_TM_PART_STATES()
+
+/* WINDOW - MINCAPTION / SMALLMINCAPTION states */
+BEGIN_TM_PART_STATES(MINCAPTION)
+    TM_STATE(1, MNCS, ACTIVE)
+    TM_STATE(2, MNCS, INACTIVE)
+    TM_STATE(3, MNCS, DISABLED)
+END_TM_PART_STATES()
+
+/* WINDOW - MAXCAPTION / SMALLMAXCAPTION states */
+BEGIN_TM_PART_STATES(MAXCAPTION)
+    TM_STATE(1, MXCS, ACTIVE)
+    TM_STATE(2, MXCS, INACTIVE)
+    TM_STATE(3, MXCS, DISABLED)
+END_TM_PART_STATES()
+
+/* WINDOW - FRAME* / SMALLFRAME* states */
+BEGIN_TM_PART_STATES(FRAME)
+    TM_STATE(1, FS, ACTIVE)
+    TM_STATE(2, FS, INACTIVE)
+END_TM_PART_STATES()
+
+/* WINDOW - SYSBUTTON / MDISYSBUTTON states */
+BEGIN_TM_PART_STATES(SYSBUTTON)
+    TM_STATE(1, SBS, NORMAL)
+    TM_STATE(2, SBS, HOT)
+    TM_STATE(3, SBS, PUSHED)
+    TM_STATE(4, SBS, DISABLED)
+END_TM_PART_STATES()
+
+/* WINDOW - MINBUTTON / MDIMINBUTTON states */
+BEGIN_TM_PART_STATES(MINBUTTON)
+    TM_STATE(1, MINBS, NORMAL)
+    TM_STATE(2, MINBS, HOT)
+    TM_STATE(3, MINBS, PUSHED)
+    TM_STATE(4, MINBS, DISABLED)
+END_TM_PART_STATES()
+
+/* WINDOW - MAXBUTTON states */
+BEGIN_TM_PART_STATES(MAXBUTTON)
+    TM_STATE(1, MAXBS, NORMAL)
+    TM_STATE(2, MAXBS, HOT)
+    TM_STATE(3, MAXBS, PUSHED)
+    TM_STATE(4, MAXBS, DISABLED)
+END_TM_PART_STATES()
+
+/* WINDOW - CLOSEBUTTON / SMALLCLOSEBUTTON / MDICLOSEBUTTON states */
+BEGIN_TM_PART_STATES(CLOSEBUTTON)
+    TM_STATE(1, CBS, NORMAL)
+    TM_STATE(2, CBS, HOT)
+    TM_STATE(3, CBS, PUSHED)
+    TM_STATE(4, CBS, DISABLED)
+END_TM_PART_STATES()
+
+/* WINDOW - RESTOREBUTTON / MDIRESTOREBUTTON states */
+BEGIN_TM_PART_STATES(RESTOREBUTTON)
+    TM_STATE(1, RBS, NORMAL)
+    TM_STATE(2, RBS, HOT)
+    TM_STATE(3, RBS, PUSHED)
+    TM_STATE(4, RBS, DISABLED)
+END_TM_PART_STATES()
+
+/* WINDOW - HELPBUTTON / MDIHELPBUTTON states */
+BEGIN_TM_PART_STATES(HELPBUTTON)
+    TM_STATE(1, HBS, NORMAL)
+    TM_STATE(2, HBS, HOT)
+    TM_STATE(3, HBS, PUSHED)
+    TM_STATE(4, HBS, DISABLED)
+END_TM_PART_STATES()
+
+/* WINDOW - HORZSCROLL states */
+BEGIN_TM_PART_STATES(HORZSCROLL)
+    TM_STATE(1, HSS, NORMAL)
+    TM_STATE(2, HSS, HOT)
+    TM_STATE(3, HSS, PUSHED)
+    TM_STATE(4, HSS, DISABLED)
+END_TM_PART_STATES()
+
+/* WINDOW - HORZTHUMB states */
+BEGIN_TM_PART_STATES(HORZTHUMB)
+    TM_STATE(1, HTS, NORMAL)
+    TM_STATE(2, HTS, HOT)
+    TM_STATE(3, HTS, PUSHED)
+    TM_STATE(4, HTS, DISABLED)
+END_TM_PART_STATES()
+
+/* WINDOW - VERTSCROLL states */
+BEGIN_TM_PART_STATES(VERTSCROLL)
+    TM_STATE(1, VSS, NORMAL)
+    TM_STATE(2, VSS, HOT)
+    TM_STATE(3, VSS, PUSHED)
+    TM_STATE(4, VSS, DISABLED)
+END_TM_PART_STATES()
+
+/* WINDOW - VERTTHUMB states */
+BEGIN_TM_PART_STATES(VERTTHUMB)
+    TM_STATE(1, VTS, NORMAL)
+    TM_STATE(2, VTS, HOT)
+    TM_STATE(3, VTS, PUSHED)
+    TM_STATE(4, VTS, DISABLED)
+END_TM_PART_STATES()
+
+END_TM_SCHEMA(ThemeMgrSchema)
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/tom.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/tom.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/tom.idl	(revision 16410)
@@ -0,0 +1,430 @@
+/*
+ * Copyright 2006 Juan Lang
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "oaidl.idl";
+
+typedef enum tagTomConstants
+{
+    tomFalse       = 0,
+    tomTrue        = -1,
+    tomUndefined   = -9999999,
+    tomToggle      = -9999998,
+    tomAutoColor   = -9999997,
+    tomDefault     = -9999996,
+    tomSuspend     = -9999995,
+    tomResume      = -9999994,
+    tomApplyNow    = 0,
+    tomApplyLater  = 1,
+    tomTrackParms  = 2,
+    tomCacheParms  = 3,
+    tomBackward    = 0xc0000001,
+    tomForward     = 0x3fffffff,
+    tomMove        = 0,
+    tomExtend      = 1,
+    tomNoSelection          = 0,
+    tomSelectionIP          = 1,
+    tomSelectionNormal      = 2,
+    tomSelectionFrame       = 3,
+    tomSelectionColumn      = 4,
+    tomSelectionRow         = 5,
+    tomSelectionBlock       = 6,
+    tomSelectionInlineShape = 7,
+    tomSelectionShape       = 8,
+    tomSelStartActive = 1,
+    tomSelAtEOL       = 2,
+    tomSelOvertype    = 4,
+    tomSelActive      = 8,
+    tomSelReplace     = 16,
+    tomEnd   = 0,
+    tomStart = 32,
+    tomCollapseEnd   = 0,
+    tomCollapseStart = 1,
+    tomClientCoord = 256,
+    tomNone       = 0,
+    tomSingle     = 1,
+    tomWords      = 2,
+    tomDouble     = 3,
+    tomDotted     = 4,
+    tomDash       = 5,
+    tomDashDot    = 6,
+    tomDashDotDot = 7,
+    tomWave       = 8,
+    tomThick      = 9,
+    tomHair       = 10,
+    tomLineSpaceSingle   = 0,
+    tomLineSpace1pt5     = 1,
+    tomLineSpaceDouble   = 2,
+    tomLineSpaceAtLeast  = 3,
+    tomLineSpaceExactly  = 4,
+    tomLineSpaceMultiple = 5,
+    tomAlignLeft        = 0,
+    tomAlignCenter      = 1,
+    tomAlignRight       = 2,
+    tomAlignJustify     = 3,
+    tomAlignDecimal     = 3,
+    tomAlignBar         = 4,
+    tomAlignInterWord   = 3,
+    tomAlignInterLetter = 4,
+    tomAlignScaled      = 5,
+    tomAlignGlyphs      = 6,
+    tomAlignSnapGrid    = 7,
+    tomSpaces     = 0,
+    tomDots       = 1,
+    tomDashes     = 2,
+    tomLines      = 3,
+    tomThickLines = 4,
+    tomEquals     = 5,
+    tomTabBack = -3,
+    tomTabNext = -2,
+    tomTabHere = -1,
+    tomListBullet           = 1,
+    tomListNumberAsArabic   = 2,
+    tomListNumberAsLCLetter = 3,
+    tomListNumberAsUCLetter = 4,
+    tomListNumberAsLCRoman  = 5,
+    tomListNumberAsUCRoman  = 6,
+    tomListNumberAsSequence = 7,
+    tomListParentheses      = 0x10000,
+    tomListPeriod           = 0x20000,
+    tomListPlain            = 0x30000,
+    tomCharacter  = 1,
+    tomWord       = 2,
+    tomSentence   = 3,
+    tomParagraph  = 4,
+    tomLine       = 5,
+    tomStory      = 6,
+    tomScreen     = 7,
+    tomSection    = 8,
+    tomColumn     = 9,
+    tomRow        = 10,
+    tomWindow     = 11,
+    tomCell       = 12,
+    tomCharFormat = 13,
+    tomParaFormat = 14,
+    tomTable      = 15,
+    tomObject     = 16,
+    tomMatchWord    = 2,
+    tomMatchCase    = 4,
+    tomMatchPattern = 8,
+    tomUnknownStory         = 0,
+    tomMainTextStory        = 1,
+    tomFootnotesStory       = 2,
+    tomEndnotesStory        = 3,
+    tomCommentsStory        = 4,
+    tomTextFrameStory       = 5,
+    tomEvenPagesHeaderStory = 6,
+    tomPrimaryHeaderStory   = 7,
+    tomEvenPagesFooterStory = 8,
+    tomPrimaryFooterStory   = 9,
+    tomFirstPageHeaderStory = 10,
+    tomFirstPageFooterStory = 11,
+    tomNoAnimation        = 0,
+    tomLasVegasLights     = 1,
+    tomBlinkingBackground = 2,
+    tomSparkleText        = 3,
+    tomMarchingBlackAnts  = 4,
+    tomMarchingRedAnts    = 5,
+    tomShimmer            = 6,
+    tomWipeDown           = 7,
+    tomWipeRight          = 8,
+    tomAnimationMax       = 8,
+    tomLowerCase     = 0,
+    tomUpperCase     = 1,
+    tomTitleCase     = 2,
+    tomSentenceCase  = 4,
+    tomToggleCase    = 5,
+    tomReadOnly         = 0x100,
+    tomShareDenyRead    = 0x200,
+    tomShareDenyWrite   = 0x400,
+    tomPasteFile        = 0x1000,
+    tomCreateNew        = 0x10,
+    tomCreateAlways     = 0x20,
+    tomOpenExisting     = 0x30,
+    tomOpenAlways       = 0x40,
+    tomTruncateExisting = 0x50,
+    tomRTF              = 0x1,
+    tomText             = 0x2,
+    tomHTML             = 0x3,
+    tomWordDocument     = 0x4,
+    tomBold      = 0x80000001,
+    tomItalic    = 0x80000002,
+    tomUnderline = 0x80000004,
+    tomStrikeout = 0x80000008,
+    tomProtected = 0x80000010,
+    tomLink      = 0x80000020,
+    tomSmallCaps = 0x80000040,
+    tomAllCaps   = 0x80000080,
+    tomHidden    = 0x80000100,
+    tomOutline   = 0x80000200,
+    tomShadow    = 0x80000400,
+    tomEmboss    = 0x80000800,
+    tomImprint   = 0x80001000,
+    tomDisabled  = 0x80002000,
+    tomRevised   = 0x80004000,
+    tomNormalCaret      = 0,
+    tomKoreanBlockCaret = 0x1,
+    tomIncludeInset = 0x1,
+    tomIgnoreCurrentFont  = 0,
+    tomMatchFontCharset   = 0x1,
+    tomMatchFontSignature = 0x2,
+    tomCharset = 0x80000000,
+    tomRE10Mode = 0x1,
+    tomNoIME   = 0x80000,
+    tomSelfIME = 0x40000
+} tomConstants;
+
+interface ITextRange;
+interface ITextSelection;
+interface ITextStoryRanges;
+
+[
+  object,
+  uuid(8cc497c0-a1df-11ce-8098-00aa0047be5d)
+]
+interface ITextDocument : IDispatch
+{
+    HRESULT GetName([retval, out]BSTR *pName);
+    HRESULT GetSelection([retval, out]ITextSelection **ppSel);
+    HRESULT GetStoryCount([retval, out]long *pCount);
+    HRESULT GetStoryRanges([retval, out]ITextStoryRanges **ppStories);
+    HRESULT GetSaved([retval, out]long *pValue);
+    HRESULT SetSaved([in]long Value);
+    HRESULT GetDefaultTabStop([retval, out]float *pValue);
+    HRESULT SetDefaultTabStop([in]float Value);
+    HRESULT New();
+    HRESULT Open([in]VARIANT *pVar, [in]long Flags, [in]long CodePage);
+    HRESULT Save([in]VARIANT *pVar, [in]long Flags, [in]long CodePage);
+    HRESULT Freeze([retval, out]long *pCount);
+    HRESULT Unfreeze([retval, out]long *pCount);
+    HRESULT BeginEditCollection();
+    HRESULT EndEditCollection();
+    HRESULT Undo([in]long Count, [retval, out]long *prop);
+    HRESULT Redo([in]long Count, [retval, out]long *prop);
+    HRESULT Range([in]long cp1, [in]long cp2, [retval, out]ITextRange**ppRange);
+    HRESULT RangeFromPoint([in]long x, [in]long y, [retval, out]ITextRange**ppRange);
+}
+
+interface ITextFont;
+interface ITextPara;
+
+[
+  object,
+  uuid(8cc497c2-a1df-11ce-8098-00aa0047be5d)
+]
+interface ITextRange : IDispatch
+{
+    HRESULT GetText([retval, out]BSTR *pbstr);
+    HRESULT SetText([in]BSTR bstr);
+    HRESULT GetChar([retval, out]long *pch);
+    HRESULT SetChar([in]long ch);
+    HRESULT GetDuplicate([retval, out]ITextRange **ppRange);
+    HRESULT GetFormattedText([retval, out]ITextRange **ppRange);
+    HRESULT SetFormattedText([in]ITextRange *pRange);
+    HRESULT GetStart([retval, out]long *pcpFirst);
+    HRESULT SetStart([in]long cpFirst);
+    HRESULT GetEnd([retval, out]long *pcpLim);
+    HRESULT SetEnd([in]long cpLim);
+    HRESULT GetFont([retval, out]ITextFont **pFont);
+    HRESULT SetFont([in]ITextFont *pFont);
+    HRESULT GetPara([retval, out]ITextPara **ppPara);
+    HRESULT SetPara([in]ITextPara *pPara);
+    HRESULT GetStoryLength([retval, out]long *pcch);
+    HRESULT GetStoryType([retval, out]long *pValue);
+    HRESULT Collapse([in]long bStart);
+    HRESULT Expand([in]long Unit, [retval, out]long *pDelta);
+    HRESULT GetIndex([in]long Unit, [retval, out]long *pIndex);
+    HRESULT SetIndex([in]long Unit, [in]long Index, [in]long Extend);
+    HRESULT SetRange([in]long cpActive, [in]long cpOther);
+    HRESULT InRange([in]ITextRange *pRange, [retval, out]long *pb);
+    HRESULT InStory([in]ITextRange *pRange, [retval, out]long *pb);
+    HRESULT IsEqual([in]ITextRange *pRange, [retval, out]long *pb);
+    HRESULT Select();
+    HRESULT StartOf([in]long Unit, [in]long Extend, [retval, out]long *pDelta);
+    HRESULT EndOf([in]long Unit, [in]long Extend, [retval, out]long *pDelta);
+    HRESULT Move([in]long Unit, [in]long Count, [retval, out]long *pDelta);
+    HRESULT MoveStart([in]long Unit, [in]long Count, [retval, out]long *pDelta);
+    HRESULT MoveEnd([in]long Unit, [in]long Count, [retval, out]long *pDelta);
+    HRESULT MoveWhile([in]VARIANT *Cset, [in]long Count, [retval, out]long *pDelta);
+    HRESULT MoveStartWhile([in]VARIANT *Cset, [in]long Count, [retval, out]long *pDelta);
+    HRESULT MoveEndWhile([in]VARIANT *Cset, [in]long Count, [retval, out]long *pDelta);
+    HRESULT MoveUntil([in]VARIANT *Cset, [in]long Count, [retval, out]long *pDelta);
+    HRESULT MoveStartUntil([in]VARIANT *Cset, [in]long Count, [retval, out]long *pDelta);
+    HRESULT MoveEndUntil([in]VARIANT *Cset, [in]long Count, [retval, out]long *pDelta);
+    HRESULT FindText([in]BSTR bstr, [in]long cch, [in]long Flags, [retval, out]long *pLength);
+    HRESULT FindTextStart([in]BSTR bstr, [in]long cch, [in]long Flags, [retval, out]long *pLength);
+    HRESULT FindTextEnd([in]BSTR bstr, [in]long cch, [in]long Flags, [retval, out]long *pLength);
+    HRESULT Delete([in]long Unit, [in]long Count, [retval, out]long *pDelta);
+    HRESULT Cut([out]VARIANT *pVar);
+    HRESULT Copy([out]VARIANT *pVar);
+    HRESULT Paste([in]VARIANT *pVar, [in]long Format);
+    HRESULT CanPaste([in]VARIANT *pVar, [in]long Format, [retval, out]long *pb);
+    HRESULT CanEdit([retval, out]long *pb);
+    HRESULT ChangeCase([in]long Type);
+    HRESULT GetPoint([in]long Type, [out]long *cx, [out]long *cy);
+    HRESULT SetPoint([in]long x, [in]long y, [in]long Type, [in]long Extend);
+    HRESULT ScrollIntoView([in]long Value);
+    HRESULT GetEmbeddedObject([retval, out]IUnknown **ppv);
+}
+
+[
+  object,
+  uuid(8cc497c1-a1df-11ce-8098-00aa0047be5d)
+]
+interface ITextSelection : ITextRange
+{
+    HRESULT GetFlags([retval, out]long *pFlags);
+    HRESULT SetFlags([in]long Flags);
+    HRESULT GetType([retval, out]long *pType);
+    HRESULT MoveLeft([in]long Unit, [in]long Count, [in]long Extend, [retval, out]long *pDelta);
+    HRESULT MoveRight([in]long Unit, [in]long Count, [in]long Extend, [retval, out]long *pDelta);
+    HRESULT MoveUp([in]long Unit, [in]long Count, [in]long Extend, [retval, out]long *pDelta);
+    HRESULT MoveDown([in]long Unit, [in]long Count, [in]long Extend, [retval, out]long *pDelta);
+    HRESULT HomeKey([in]long Unit, [in]long Extend, [retval, out]long *pDelta);
+    HRESULT EndKey([in]long Unit, [in]long Extend, [retval, out]long *pDelta);
+    HRESULT TypeText([in]BSTR bstr);
+}
+
+[
+  object,
+  uuid(8cc497c3-a1df-11ce-8098-00aa0047be5d)
+]
+interface ITextFont : IDispatch
+{
+    HRESULT GetDuplicate([retval, out]ITextFont **ppFont);
+    HRESULT SetDuplicate([in]ITextFont *pFont);
+    HRESULT CanChange([out]long *pB);
+    HRESULT IsEqual([in]ITextFont *pFont, [retval, out]long *pB);
+    HRESULT Reset([in]long Value);
+    HRESULT GetStyle([retval, out]long *pValue);
+    HRESULT SetStyle([in]long Value);
+    HRESULT GetAllCaps([retval, out]long *pValue);
+    HRESULT SetAllCaps([in]long Value);
+    HRESULT GetAnimation([retval, out]long *pValue);
+    HRESULT SetAnimation([in]long Value);
+    HRESULT GetBackColor([retval, out]long *pValue);
+    HRESULT SetBackColor([in]long Value);
+    HRESULT GetBold([retval, out]long *pValue);
+    HRESULT SetBold([in]long Value);
+    HRESULT GetEmboss([retval, out]long *pValue);
+    HRESULT SetEmboss([in]long Value);
+    HRESULT GetForeColor([retval, out]long *pValue);
+    HRESULT SetForeColor([in]long Value);
+    HRESULT GetHidden([retval, out]long *pValue);
+    HRESULT SetHidden([in]long Value);
+    HRESULT GetEngrave([retval, out]long *pValue);
+    HRESULT SetEngrave([in]long Value);
+    HRESULT GetItalic([retval, out]long *pValue);
+    HRESULT SetItalic([in]long Value);
+    HRESULT GetKerning([retval, out]long *pValue);
+    HRESULT SetKerning([in]long Value);
+    HRESULT GetLanguageID([retval, out]long *pValue);
+    HRESULT SetLanguageID([in]long Value);
+    HRESULT GetName([retval, out]BSTR *pValue);
+    HRESULT SetName([in]BSTR Value);
+    HRESULT GetOutline([retval, out]long *pValue);
+    HRESULT SetOutline([in]long Value);
+    HRESULT GetPosition([retval, out]long *pValue);
+    HRESULT SetPosition([in]long Value);
+    HRESULT GetProtected([retval, out]long *pValue);
+    HRESULT SetProtected([in]long Value);
+    HRESULT GetShadow([retval, out]long *pValue);
+    HRESULT SetShadow([in]long Value);
+    HRESULT GetSize([retval, out]long *pValue);
+    HRESULT SetSize([in]long Value);
+    HRESULT GetSmallCaps([retval, out]long *pValue);
+    HRESULT SetSmallCaps([in]long Value);
+    HRESULT GetSpacing([retval, out]float *pValue);
+    HRESULT SetSpacing([in]float Value);
+    HRESULT GetStrikeThrough([retval, out]long *pValue);
+    HRESULT SetStrikeThrough([in]long Value);
+    HRESULT GetSubscript([retval, out]long *pValue);
+    HRESULT SetSubscript([in]long Value);
+    HRESULT GetSuperscript([retval, out]long *pValue);
+    HRESULT SetSuperscript([in]long Value);
+    HRESULT GetUnderline([retval, out]long *pValue);
+    HRESULT SetUnderline([in]long Value);
+    HRESULT GetWeight([retval, out]long *pValue);
+    HRESULT SetWeight([in]long Value);
+}
+
+[
+  object,
+  uuid(8cc497c4-a1df-11ce-8098-00aa0047be5d)
+]
+interface ITextPara : IDispatch
+{
+    HRESULT GetDuplicate([retval, out]ITextPara **ppPara);
+    HRESULT SetDuplicate([in]ITextPara *pPara);
+    HRESULT CanChange([out]long *pB);
+    HRESULT IsEqual([in]ITextPara *pPara, [retval, out]long *pB);
+    HRESULT Reset([in]long Value);
+    HRESULT GetStyle([retval, out]long *pValue);
+    HRESULT SetStyle([in]long Value);
+    HRESULT GetAlignment([retval, out]long *pValue);
+    HRESULT SetAlignment([in]long Value);
+    HRESULT GetHyphenation([retval, out]long *pValue);
+    HRESULT SetHyphenation([in]long Value);
+    HRESULT GetFirstLineIndent([retval, out]float *pValue);
+    HRESULT GetKeepTogether([retval, out]long *pValue);
+    HRESULT SetKeepTogether([in]long Value);
+    HRESULT GetKeepWithNext([retval, out]long *pValue);
+    HRESULT SetKeepWithNext([in]long Value);
+    HRESULT GetLeftIndent([retval, out]float *pValue);
+    HRESULT GetLineSpacing([retval, out]float *pValue);
+    HRESULT GetLineSpacingRule([retval, out]long *pValue);
+    HRESULT GetListAlignment([retval, out]long *pValue);
+    HRESULT SetListAlignment([in]long Value);
+    HRESULT GetListLevelIndex([retval, out]long *pValue);
+    HRESULT SetListLevelIndex([in]long Value);
+    HRESULT GetListStart([retval, out]long *pValue);
+    HRESULT SetListStart([in]long Value);
+    HRESULT GetListTab([retval, out]long *pValue);
+    HRESULT SetListTab([in]long Value);
+    HRESULT GetListType([retval, out]long *pValue);
+    HRESULT SetListType([in]long Value);
+    HRESULT GetNoLineNumber([retval, out]long *pValue);
+    HRESULT SetNoLineNumber([in]long Value);
+    HRESULT GetPageBreakBefore([retval, out]long *pValue);
+    HRESULT SetPageBreakBefore([in]long Value);
+    HRESULT GetRightIndent([retval, out]float *pValue);
+    HRESULT SetRightIndent([in]float Value);
+    HRESULT SetIndents([in]float StartIndent, [in]float LeftIndent, [in]float RightIndent);
+    HRESULT SetLineSpacing([in]long LineSpacingRule, [in]float LineSpacing);
+    HRESULT GetSpaceAfter([retval, out]float *pValue);
+    HRESULT SetSpaceAfter([in]float Value);
+    HRESULT GetSpaceBefore([retval, out]float *pValue);
+    HRESULT SetSpaceBefore([in]float Value);
+    HRESULT GetWindowControl([retval, out]float *pValue);
+    HRESULT SetWindowControl([in]float Value);
+    HRESULT GetTabCount([retval, out]long *pCount);
+    HRESULT AddTab([in]float tbPos, [in]long tbAlign, [in]long tbLeader);
+    HRESULT ClearAllTabs();
+    HRESULT DeleteTab([in]float tbPos);
+    HRESULT GetTab([in]long iTab, [out]float *ptbPos, [out]long *ptbAlign, [out]long *ptbLeader);
+}
+
+[
+  object,
+  uuid(8cc497c5-a1df-11ce-8098-00aa0047be5d)
+]
+interface ITextStoryRanges : IDispatch
+{
+    HRESULT _NewEnum([retval, out]IUnknown **ppUnkEnum);
+    HRESULT Item([in]long Index, [retval, out]ITextRange **ppRange);
+    HRESULT GetCount([retval, out]long *pCount);
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/twain.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/twain.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/twain.h	(revision 16410)
@@ -0,0 +1,1870 @@
+/* ======================================================================== *\
+
+  Copyright (C) 1991, 1992 TWAIN Working Group: Aldus, Caere, Eastman-Kodak,
+  Hewlett-Packard and Logitech Corporations.  All rights reserved.
+
+  Copyright (C) 1997 TWAIN Working Group: Bell+Howell, Canon, DocuMagix,
+  Fujitsu, Genoa Technology, Hewlett-Packard, Kofax Imaging Products, and
+  Ricoh Corporation.  All rights reserved.
+
+  Copyright (C) 1998 TWAIN Working Group: Adobe Systems Incorporated,
+  Canon Information Systems, Eastman Kodak Company,
+  Fujitsu Computer Products of America, Genoa Technology,
+  Hewlett-Packard Company, Intel Corporation, Kofax Image Products,
+  JFL Peripheral Solutions Inc., Ricoh Corporation, and Xerox Corporation.
+  All rights reserved.
+
+  TWAIN.h -  This is the definitive include file for applications and
+          data sources written to the TWAIN specification.
+          It defines constants, data structures, messages etc.
+          for the public interface to TWAIN.
+
+  Revision History:
+    version 1.0, March 6, 1992.  TWAIN 1.0.
+    version 1.1, January 1993.   Tech Notes 1.1
+    version 1.5, June 1993.      Specification Update 1.5
+                                 Change DC to TW
+                                 Change filename from DC.H to TWAIN.H
+    version 1.5, July 1993.      Remove spaces from country identifiers
+
+    version 1.7, July 1997       Added Capabilities and data structure for
+                                 document imaging and digital cameras.
+                                 KHL.
+    version 1.7, July 1997       Inserted Borland compatible structure packing
+                                 directives provided by Mentor.  JMH
+    version 1.7, Aug 1997        Expanded file tabs to spaces.
+                                 NOTE: future authors should be sure to have
+                                 their editors set to automatically expand tabs
+                                 to spaces (original tab setting was 4 spaces).
+    version 1.7, Sept 1997       Added job control values
+                                 Added return codes
+    version 1.7, Sept 1997       changed definition of pRGBRESPONSE to
+                                 pTW_RGBRESPONSE
+    version 1.7  Aug 1998        Added missing TWEI_BARCODEROTATION values
+                                 TWBCOR_ types JMH
+    version 1.8  August 1998     Added new types and definitions required
+                                 for 1.8 Specification JMH
+    version 1.8  January 1999    Changed search mode from SRCH_ to TWBD_ as
+                                 in 1.8 Specification, added TWBT_MAXICODE	JMH
+    version 1.8  January 1999    Removed undocumented duplicate AUTO<cap> JMH
+\* ======================================================================== */
+
+#ifndef TWAIN
+#define TWAIN
+
+#include <stdarg.h>
+
+#include "windef.h"
+#include "winbase.h"
+
+/* The Twain structures must be packed on 2 byte alignment */
+#include "pshpack2.h"
+
+#undef FAR
+#define FAR
+#define huge
+#define WIN32
+#define _WIN32
+#undef __declspec
+#define __declspec(spec)
+
+/****************************************************************************
+ * TWAIN Version                                                            *
+ ****************************************************************************/
+#define TWON_PROTOCOLMINOR   8        /* Changed for Version 1.8            */
+#define TWON_PROTOCOLMAJOR   1
+
+/****************************************************************************
+ * Platform Dependent Definitions and Typedefs                              *
+ ****************************************************************************/
+
+/* Define one of the following, depending on the platform */
+/* #define _MAC_   */
+/* #define _UNIX_  */
+#define _MSWIN_
+
+#ifdef  _MSWIN_
+    typedef HANDLE         TW_HANDLE;
+    typedef LPVOID         TW_MEMREF;
+
+    /*  SDH - 05/05/95 - TWUNK */
+    /*  For common code between 16 and 32 bits.  */
+# ifdef  WIN32
+#  define TW_HUGE
+# else   /* WIN32 */
+#  define TW_HUGE    huge
+# endif  /* WIN32 */
+    typedef BYTE TW_HUGE * HPBYTE;
+    typedef void TW_HUGE * HPVOID;
+#endif  /* _MSWIN_ */
+
+#ifdef  _MAC_
+#define PASCAL         pascal
+#define FAR
+    typedef Handle         TW_HANDLE;
+    typedef char          *TW_MEMREF;
+#endif  /* _MAC_ */
+
+#ifdef  _UNIX_
+/*    #define PASCAL         pascal */
+#define FAR
+    typedef unsigned char *TW_HANDLE;
+    typedef unsigned char *TW_MEMREF;
+#endif  /* _UNIX_ */
+
+/****************************************************************************
+ * Type Definitions                                                         *
+ ****************************************************************************/
+
+/* String types. These include room for the strings and a NULL char,     *
+ * or, on the Mac, a length byte followed by the string.                 *
+ * TW_STR255 must hold less than 256 chars so length fits in first byte. */
+typedef char    TW_STR32[34],     FAR *pTW_STR32;
+typedef char    TW_STR64[66],     FAR *pTW_STR64;
+typedef char    TW_STR128[130],   FAR *pTW_STR128;
+typedef char    TW_STR255[256],   FAR *pTW_STR255;
+
+/* Numeric types. */
+typedef char           TW_INT8,   FAR *pTW_INT8;
+typedef short          TW_INT16,  FAR *pTW_INT16;
+typedef long           TW_INT32,  FAR *pTW_INT32;
+typedef unsigned char  TW_UINT8,  FAR *pTW_UINT8;
+typedef unsigned short TW_UINT16, FAR *pTW_UINT16;
+typedef unsigned long  TW_UINT32, FAR *pTW_UINT32;
+typedef unsigned short TW_BOOL,   FAR *pTW_BOOL;
+
+/* Fixed point structure type. */
+typedef struct {
+    TW_INT16     Whole;        /* maintains the sign */
+    TW_UINT16    Frac;
+} TW_FIX32,  FAR *pTW_FIX32;
+
+/****************************************************************************
+ * Structure Definitions                                                    *
+ ****************************************************************************/
+
+/* No DAT needed. */
+typedef struct {
+   TW_FIX32   X;
+   TW_FIX32   Y;
+   TW_FIX32   Z;
+} TW_CIEPOINT, FAR * pTW_CIEPOINT;
+
+/* No DAT needed. */
+typedef struct {
+   TW_FIX32   StartIn;
+   TW_FIX32   BreakIn;
+   TW_FIX32   EndIn;
+   TW_FIX32   StartOut;
+   TW_FIX32   BreakOut;
+   TW_FIX32   EndOut;
+   TW_FIX32   Gamma;
+   TW_FIX32   SampleCount;  /* if =0 use the gamma */
+} TW_DECODEFUNCTION, FAR * pTW_DECODEFUNCTION;
+
+/* No DAT needed. */
+typedef struct {
+   TW_UINT8    Index;    /* Value used to index into the color table. */
+   TW_UINT8    Channel1; /* First  tri-stimulus value (e.g Red)       */
+   TW_UINT8    Channel2; /* Second tri-stimulus value (e.g Green)     */
+   TW_UINT8    Channel3; /* Third  tri-stimulus value (e.g Blue)      */
+} TW_ELEMENT8, FAR * pTW_ELEMENT8;
+
+/* No DAT.  Defines a frame rectangle in ICAP_UNITS coordinates. */
+typedef struct {
+   TW_FIX32   Left;
+   TW_FIX32   Top;
+   TW_FIX32   Right;
+   TW_FIX32   Bottom;
+} TW_FRAME, FAR * pTW_FRAME;
+
+/* No DAT needed.  Used to manage memory buffers. */
+typedef struct {
+   TW_UINT32  Flags;  /* Any combination of the TWMF_ constants.           */
+   TW_UINT32  Length; /* Number of bytes stored in buffer TheMem.          */
+   TW_MEMREF  TheMem; /* Pointer or handle to the allocated memory buffer. */
+} TW_MEMORY, FAR * pTW_MEMORY;
+
+/* No DAT needed. */
+typedef struct {
+   TW_DECODEFUNCTION   Decode[3];
+   TW_FIX32            Mix[3][3];
+} TW_TRANSFORMSTAGE, FAR * pTW_TRANSFORMSTAGE;
+
+/* No DAT needed.  Describes version of software currently running. */
+typedef struct {
+   TW_UINT16  MajorNum;  /* Major revision number of the software. */
+   TW_UINT16  MinorNum;  /* Incremental revision number of the software. */
+   TW_UINT16  Language;  /* e.g. TWLG_SWISSFRENCH */
+   TW_UINT16  Country;   /* e.g. TWCY_SWITZERLAND */
+   TW_STR32   Info;      /* e.g. "1.0b3 Beta release" */
+} TW_VERSION, FAR * pTW_VERSION;
+
+/* TWON_ARRAY. Container for array of values (a simplified TW_ENUMERATION) */
+typedef struct {
+   TW_UINT16  ItemType;
+   TW_UINT32  NumItems;    /* How many items in ItemList           */
+   TW_UINT8   ItemList[1]; /* Array of ItemType values starts here */
+} TW_ARRAY, FAR * pTW_ARRAY;
+
+/* TWON_ENUMERATION. Container for a collection of values. */
+typedef struct {
+   TW_UINT16  ItemType;
+   TW_UINT32  NumItems;     /* How many items in ItemList                 */
+   TW_UINT32  CurrentIndex; /* Current value is in ItemList[CurrentIndex] */
+   TW_UINT32  DefaultIndex; /* Powerup value is in ItemList[DefaultIndex] */
+   TW_UINT8   ItemList[1];  /* Array of ItemType values starts here       */
+} TW_ENUMERATION, FAR * pTW_ENUMERATION;
+
+/* TWON_ONEVALUE. Container for one value. */
+typedef struct {
+   TW_UINT16  ItemType;
+   TW_UINT32  Item;
+} TW_ONEVALUE, FAR * pTW_ONEVALUE;
+
+/* TWON_RANGE. Container for a range of values. */
+typedef struct {
+   TW_UINT16  ItemType;
+   TW_UINT32  MinValue;     /* Starting value in the range.           */
+   TW_UINT32  MaxValue;     /* Final value in the range.              */
+   TW_UINT32  StepSize;     /* Increment from MinValue to MaxValue.   */
+   TW_UINT32  DefaultValue; /* Power-up value.                        */
+   TW_UINT32  CurrentValue; /* The value that is currently in effect. */
+} TW_RANGE, FAR * pTW_RANGE;
+
+/* DAT_CAPABILITY. Used by application to get/set capability from/in a data source. */
+typedef struct {
+   TW_UINT16  Cap; /* id of capability to set or get, e.g. CAP_BRIGHTNESS */
+   TW_UINT16  ConType; /* TWON_ONEVALUE, _RANGE, _ENUMERATION or _ARRAY   */
+   TW_HANDLE  hContainer; /* Handle to container of type Dat              */
+} TW_CAPABILITY, FAR * pTW_CAPABILITY;
+
+/* DAT_CIECOLOR. */
+typedef struct {
+   TW_UINT16           ColorSpace;
+   TW_INT16            LowEndian;
+   TW_INT16            DeviceDependent;
+   TW_INT32            VersionNumber;
+   TW_TRANSFORMSTAGE   StageABC;
+   TW_TRANSFORMSTAGE   StageLMN;
+   TW_CIEPOINT         WhitePoint;
+   TW_CIEPOINT         BlackPoint;
+   TW_CIEPOINT         WhitePaper;
+   TW_CIEPOINT         BlackInk;
+   TW_FIX32            Samples[1];
+} TW_CIECOLOR, FAR * pTW_CIECOLOR;
+
+/* DAT_EVENT. For passing events down from the application to the DS. */
+typedef struct {
+   TW_MEMREF  pEvent;    /* Windows pMSG or Mac pEvent.                 */
+   TW_UINT16  TWMessage; /* TW msg from data source, e.g. MSG_XFERREADY */
+} TW_EVENT, FAR * pTW_EVENT;
+
+/* DAT_GRAYRESPONSE */
+typedef struct {
+   TW_ELEMENT8         Response[1];
+} TW_GRAYRESPONSE, FAR * pTW_GRAYRESPONSE;
+
+/* DAT_IDENTITY. Identifies the program/library/code resource. */
+typedef struct {
+   TW_UINT32  Id;              /* Unique number.  In Windows, application hWnd      */
+   TW_VERSION Version;         /* Identifies the piece of code              */
+   TW_UINT16  ProtocolMajor;   /* Application and DS must set to TWON_PROTOCOLMAJOR */
+   TW_UINT16  ProtocolMinor;   /* Application and DS must set to TWON_PROTOCOLMINOR */
+   TW_UINT32  SupportedGroups; /* Bit field OR combination of DG_ constants */
+   TW_STR32   Manufacturer;    /* Manufacturer name, e.g. "Hewlett-Packard" */
+   TW_STR32   ProductFamily;   /* Product family name, e.g. "ScanJet"       */
+   TW_STR32   ProductName;     /* Product name, e.g. "ScanJet Plus"         */
+} TW_IDENTITY, FAR * pTW_IDENTITY;
+
+/* DAT_IMAGEINFO. Application gets detailed image info from DS with this. */
+typedef struct {
+   TW_FIX32   XResolution;      /* Resolution in the horizontal             */
+   TW_FIX32   YResolution;      /* Resolution in the vertical               */
+   TW_INT32   ImageWidth;       /* Columns in the image, -1 if unknown by DS*/
+   TW_INT32   ImageLength;      /* Rows in the image, -1 if unknown by DS   */
+   TW_INT16   SamplesPerPixel;  /* Number of samples per pixel, 3 for RGB   */
+   TW_INT16   BitsPerSample[8]; /* Number of bits for each sample           */
+   TW_INT16   BitsPerPixel;     /* Number of bits for each padded pixel     */
+   TW_BOOL    Planar;           /* True if Planar, False if chunky          */
+   TW_INT16   PixelType;        /* How to interp data; photo interp (TWPT_) */
+   TW_UINT16  Compression;      /* How the data is compressed (TWCP_xxxx)   */
+} TW_IMAGEINFO, FAR * pTW_IMAGEINFO;
+
+/* DAT_IMAGELAYOUT. Provides image layout information in current units. */
+typedef struct {
+   TW_FRAME   Frame;          /* Frame coords within larger document */
+   TW_UINT32  DocumentNumber;
+   TW_UINT32  PageNumber;     /* Reset when you go to next document  */
+   TW_UINT32  FrameNumber;    /* Reset when you go to next page      */
+} TW_IMAGELAYOUT, FAR * pTW_IMAGELAYOUT;
+
+/* DAT_IMAGEMEMXFER. Used to pass image data (e.g. in strips) from DS to application.*/
+typedef struct {
+   TW_UINT16  Compression;  /* How the data is compressed                */
+   TW_UINT32  BytesPerRow;  /* Number of bytes in a row of data          */
+   TW_UINT32  Columns;      /* How many columns                          */
+   TW_UINT32  Rows;         /* How many rows                             */
+   TW_UINT32  XOffset;      /* How far from the side of the image        */
+   TW_UINT32  YOffset;      /* How far from the top of the image         */
+   TW_UINT32  BytesWritten; /* How many bytes written in Memory          */
+   TW_MEMORY  Memory;       /* Mem struct used to pass actual image data */
+} TW_IMAGEMEMXFER, FAR * pTW_IMAGEMEMXFER;
+
+/* Changed in 1.1: QuantTable, HuffmanDC, HuffmanAC TW_MEMREF -> TW_MEMORY  */
+/* DAT_JPEGCOMPRESSION. Based on JPEG Draft International Std, ver 10918-1. */
+typedef struct {
+   TW_UINT16   ColorSpace;       /* One of the TWPT_xxxx values                */
+   TW_UINT32   SubSampling;      /* Two word "array" for subsampling values    */
+   TW_UINT16   NumComponents;    /* Number of color components in image        */
+   TW_UINT16   RestartFrequency; /* Frequency of restart marker codes in MDU's */
+   TW_UINT16   QuantMap[4];      /* Mapping of components to QuantTables       */
+   TW_MEMORY   QuantTable[4];    /* Quantization tables                        */
+   TW_UINT16   HuffmanMap[4];    /* Mapping of components to Huffman tables    */
+   TW_MEMORY   HuffmanDC[2];     /* DC Huffman tables                          */
+   TW_MEMORY   HuffmanAC[2];     /* AC Huffman tables                          */
+} TW_JPEGCOMPRESSION, FAR * pTW_JPEGCOMPRESSION;
+
+/* DAT_PALETTE8. Color palette when TWPT_PALETTE pixels xfer'd in mem buf. */
+typedef struct {
+   TW_UINT16    NumColors;   /* Number of colors in the color table.  */
+   TW_UINT16    PaletteType; /* TWPA_xxxx, specifies type of palette. */
+   TW_ELEMENT8  Colors[256]; /* Array of palette values starts here.  */
+} TW_PALETTE8, FAR * pTW_PALETTE8;
+
+/* DAT_PENDINGXFERS. Used with MSG_ENDXFER to indicate additional data. */
+typedef struct {
+   TW_UINT16 Count;
+   union {
+      TW_UINT32 EOJ;
+      TW_UINT32 Reserved;
+   } u;
+} TW_PENDINGXFERS, FAR *pTW_PENDINGXFERS;
+
+/* DAT_RGBRESPONSE */
+typedef struct {
+   TW_ELEMENT8         Response[1];
+} TW_RGBRESPONSE, FAR * pTW_RGBRESPONSE;
+
+/* DAT_SETUPFILEXFER. Sets up DS to application data transfer via a file. */
+typedef struct {
+   TW_STR255 FileName;
+   TW_UINT16 Format;   /* Any TWFF_ constant */
+   TW_INT16  VRefNum;  /* Used for Mac only  */
+} TW_SETUPFILEXFER, FAR * pTW_SETUPFILEXFER;
+
+/* DAT_SETUPMEMXFER. Sets up DS to application data transfer via a memory buffer. */
+typedef struct {
+   TW_UINT32 MinBufSize;
+   TW_UINT32 MaxBufSize;
+   TW_UINT32 Preferred;
+} TW_SETUPMEMXFER, FAR * pTW_SETUPMEMXFER;
+
+/* DAT_STATUS. Application gets detailed status info from a data source with this. */
+typedef struct {
+   TW_UINT16  ConditionCode; /* Any TWCC_ constant     */
+   TW_UINT16  Reserved;      /* Future expansion space */
+} TW_STATUS, FAR * pTW_STATUS;
+
+/* DAT_USERINTERFACE. Coordinates UI between application and data source. */
+typedef struct {
+   TW_BOOL    ShowUI;  /* TRUE if DS should bring up its UI           */
+   TW_BOOL    ModalUI; /* For Mac only - true if the DS's UI is modal */
+   TW_HANDLE  hParent; /* For windows only - Application window handle        */
+} TW_USERINTERFACE, FAR * pTW_USERINTERFACE;
+
+/* SDH - 03/21/95 - TWUNK */
+/* DAT_TWUNKIDENTITY. Provides DS identity and 'other' information necessary */
+/*                    across thunk link. */
+typedef struct {
+   TW_IDENTITY identity;        /* Identity of data source.                 */
+   TW_STR255   dsPath;          /* Full path and file name of data source.  */
+} TW_TWUNKIDENTITY, FAR * pTW_TWUNKIDENTITY;
+
+/* SDH - 03/21/95 - TWUNK */
+/* Provides DS_Entry parameters over thunk link. */
+typedef struct
+{
+    TW_INT8     destFlag;       /* TRUE if dest is not NULL                 */
+    TW_IDENTITY dest;           /* Identity of data source (if used)        */
+    TW_INT32    dataGroup;      /* DSM_Entry dataGroup parameter            */
+    TW_INT16    dataArgType;    /* DSM_Entry dataArgType parameter          */
+    TW_INT16    message;        /* DSM_Entry message parameter              */
+    TW_INT32    pDataSize;      /* Size of pData (0 if NULL)                */
+    /*  TW_MEMREF   pData; */   /* Based on implementation specifics, a     */
+                                /* pData parameter makes no sense in this   */
+                                /* structure, but data (if provided) will be*/
+                                /* appended in the data block.              */
+   } TW_TWUNKDSENTRYPARAMS, FAR * pTW_TWUNKDSENTRYPARAMS;
+
+/* SDH - 03/21/95 - TWUNK */
+/* Provides DS_Entry results over thunk link. */
+typedef struct
+{
+    TW_UINT16   returnCode;     /* Thunker DsEntry return code.             */
+    TW_UINT16   conditionCode;  /* Thunker DsEntry condition code.          */
+    TW_INT32    pDataSize;      /* Size of pData (0 if NULL)                */
+    /*  TW_MEMREF   pData; */   /* Based on implementation specifics, a     */
+                                /* pData parameter makes no sense in this   */
+                                /* structure, but data (if provided) will be*/
+                                /* appended in the data block.              */
+} TW_TWUNKDSENTRYRETURN, FAR * pTW_TWUNKDSENTRYRETURN;
+
+/* WJD - 950818 */
+/* Added for 1.6 Specification */
+/* TWAIN 1.6 CAP_SUPPORTEDCAPSEXT structure */
+typedef struct
+{
+    TW_UINT16 Cap;   /* Which CAP/ICAP info is relevant to */
+    TW_UINT16 Properties;  /* Messages this CAP/ICAP supports */
+} TW_CAPEXT, FAR * pTW_CAPEXT;
+
+/* ----------------------------------------------------------------------- *\
+
+  Version 1.7:      Added Following data structure for Document Imaging
+  July 1997         Enhancement.
+  KHL               TW_CUSTOMDSDATA --  For Saving and Restoring Source's
+                                        state.
+                    TW_INFO         --  Each attribute for extended image
+                                        information.
+                    TW_EXTIMAGEINFO --  Extended image information structure.
+
+\* ----------------------------------------------------------------------- */
+
+typedef struct {
+    TW_UINT32  InfoLength;     /* Length of Information in bytes.  */
+    TW_HANDLE  hData;          /* Place holder for data, DS Allocates */
+}TW_CUSTOMDSDATA, FAR *pTW_CUSTOMDSDATA;
+
+typedef struct {
+    TW_UINT16   InfoID;
+    TW_UINT16   ItemType;
+    TW_UINT16   NumItems;
+    TW_UINT16   CondCode;
+    TW_UINT32   Item;
+}TW_INFO, FAR* pTW_INFO;
+
+typedef struct {
+    TW_UINT32   NumInfos;
+    TW_INFO     Info[1];
+}TW_EXTIMAGEINFO, FAR* pTW_EXTIMAGEINFO;
+
+/* Added 1.8 */
+
+/* DAT_AUDIOINFO, information about audio data */
+typedef struct {
+   TW_STR255  Name;       /* name of audio data */
+   TW_UINT32  Reserved;   /* reserved space */
+} TW_AUDIOINFO, FAR * pTW_AUDIOINFO;
+
+/* DAT_DEVICEEVENT, information about events */
+typedef struct {
+   TW_UINT32  Event;                  /* One of the TWDE_xxxx values. */
+   TW_STR255  DeviceName;             /* The name of the device that generated the event */
+   TW_UINT32  BatteryMinutes;         /* Battery Minutes Remaining    */
+   TW_INT16   BatteryPercentage;      /* Battery Percentage Remaining */
+   TW_INT32   PowerSupply;            /* Power Supply                 */
+   TW_FIX32   XResolution;            /* Resolution                   */
+   TW_FIX32   YResolution;            /* Resolution                   */
+   TW_UINT32  FlashUsed2;             /* Flash Used2                  */
+   TW_UINT32  AutomaticCapture;       /* Automatic Capture            */
+   TW_UINT32  TimeBeforeFirstCapture; /* Automatic Capture            */
+   TW_UINT32  TimeBetweenCaptures;    /* Automatic Capture            */
+} TW_DEVICEEVENT, FAR * pTW_DEVICEEVENT;
+
+/* DAT_FILESYSTEM, information about TWAIN file system */
+typedef struct {
+   /* DG_CONTROL / DAT_FILESYSTEM / MSG_xxxx fields     */
+   TW_STR255  InputName; /* The name of the input or source file */
+   TW_STR255  OutputName; /* The result of an operation or the name of a destination file */
+   TW_MEMREF  Context; /* Source specific data used to remember state information */
+   /* DG_CONTROL / DAT_FILESYSTEM / MSG_DELETE field    */
+   int        Recursive; /* recursively delete all sub-directories */
+   /* DG_CONTROL / DAT_FILESYSTEM / MSG_GETINFO fields  */
+   TW_INT32   FileType; /* One of the TWFT_xxxx values */
+   TW_UINT32  Size; /* Size of current FileType */
+   TW_STR32   CreateTimeDate; /* creation date of the file */
+   TW_STR32   ModifiedTimeDate; /* last date the file was modified */
+   TW_UINT32  FreeSpace; /* bytes of free space on the current device */
+   TW_INT32   NewImageSize; /* estimate of the amount of space a new image would take up */
+   TW_UINT32  NumberOfFiles; /* number of files, depends on FileType */
+   TW_UINT32  NumberOfSnippets; /**/
+   char       Reserved[512]; /**/
+} TW_FILESYSTEM, FAR * pTW_FILESYSTEM;
+
+/* DAT_PASSTHRU, device dependent data to pass through Data Source */
+typedef struct {
+   TW_MEMREF  pCommand;        /* Pointer to Command buffer */
+   TW_UINT32  CommandBytes;    /* Number of bytes in Command buffer */
+   TW_INT32   Direction;       /* One of the TWDR_xxxx values.  Defines the direction of data flow */
+   TW_MEMREF  pData;           /* Pointer to Data buffer */
+   TW_UINT32  DataBytes;       /* Number of bytes in Data buffer */
+   TW_UINT32  DataBytesXfered; /* Number of bytes successfully transferred */
+} TW_PASSTHRU, FAR * pTW_PASSTHRU;
+
+/* DAT_SETUPAUDIOFILEXFER, information required to setup an audio file transfer */
+typedef struct {
+   TW_STR255  FileName; /* full path target file */
+   TW_UINT16  Format;   /* one of TWAF_xxxx */
+   TW_INT16 VRefNum;
+} TW_SETUPAUDIOFILEXFER, FAR * pTW_SETUPAUDIOFILEXFER;
+
+/****************************************************************************
+ * Generic Constants                                                        *
+ ****************************************************************************/
+
+#define TWON_ARRAY           3 /* indicates TW_ARRAY container       */
+#define TWON_ENUMERATION     4 /* indicates TW_ENUMERATION container */
+#define TWON_ONEVALUE        5 /* indicates TW_ONEVALUE container    */
+#define TWON_RANGE           6 /* indicates TW_RANGE container       */
+
+#define TWON_ICONID          962 /* res Id of icon used in USERSELECT lbox */
+#define TWON_DSMID           461 /* res Id of the DSM version num resource */
+#define TWON_DSMCODEID       63  /* res Id of the Mac SM Code resource     */
+
+#define TWON_DONTCARE8       0xff
+#define TWON_DONTCARE16      0xffff
+#define TWON_DONTCARE32      0xffffffff
+
+/* Flags used in TW_MEMORY structure. */
+#define TWMF_APPOWNS     0x1
+#define TWMF_DSMOWNS     0x2
+#define TWMF_DSOWNS      0x4
+#define TWMF_POINTER     0x8
+#define TWMF_HANDLE      0x10
+
+/* Palette types for TW_PALETTE8 */
+#define TWPA_RGB         0
+#define TWPA_GRAY        1
+#define TWPA_CMY         2
+
+/* There are four containers used for capabilities negotiation:
+ *    TWON_ONEVALUE, TWON_RANGE, TWON_ENUMERATION, TWON_ARRAY
+ * In each container structure ItemType can be TWTY_INT8, TWTY_INT16, etc.
+ * The kind of data stored in the container can be determined by doing
+ * DCItemSize[ItemType] where the following is defined in TWAIN glue code:
+ *          DCItemSize[]= { sizeof(TW_INT8),
+ *                          sizeof(TW_INT16),
+ *                          etc.
+ *                          sizeof(TW_UINT32) };
+ *
+ */
+
+#define TWTY_INT8        0x0000    /* Means Item is a TW_INT8   */
+#define TWTY_INT16       0x0001    /* Means Item is a TW_INT16  */
+#define TWTY_INT32       0x0002    /* Means Item is a TW_INT32  */
+
+#define TWTY_UINT8       0x0003    /* Means Item is a TW_UINT8  */
+#define TWTY_UINT16      0x0004    /* Means Item is a TW_UINT16 */
+#define TWTY_UINT32      0x0005    /* Means Item is a TW_UINT32 */
+
+#define TWTY_BOOL        0x0006    /* Means Item is a TW_BOOL   */
+
+#define TWTY_FIX32       0x0007    /* Means Item is a TW_FIX32  */
+
+#define TWTY_FRAME       0x0008    /* Means Item is a TW_FRAME  */
+
+#define TWTY_STR32       0x0009    /* Means Item is a TW_STR32  */
+#define TWTY_STR64       0x000a    /* Means Item is a TW_STR64  */
+#define TWTY_STR128      0x000b    /* Means Item is a TW_STR128 */
+#define TWTY_STR255      0x000c    /* Means Item is a TW_STR255 */
+
+/****************************************************************************
+ * Capability Constants                                                     *
+ ****************************************************************************/
+
+/* ICAP_BITORDER values (BO_ means Bit Order) */
+#define TWBO_LSBFIRST    0
+#define TWBO_MSBFIRST    1
+
+/* ICAP_COMPRESSION values (CP_ means ComPression ) */
+#define TWCP_NONE        0
+#define TWCP_PACKBITS    1
+#define TWCP_GROUP31D    2 /* Follows CCITT spec (no End Of Line)          */
+#define TWCP_GROUP31DEOL 3 /* Follows CCITT spec (has End Of Line)         */
+#define TWCP_GROUP32D    4 /* Follows CCITT spec (use cap for K Factor)    */
+#define TWCP_GROUP4      5 /* Follows CCITT spec                           */
+#define TWCP_JPEG        6 /* Use capability for more info                 */
+#define TWCP_LZW         7 /* Must license from Unisys and IBM to use      */
+#define TWCP_JBIG        8 /* For Bitonal images  -- Added 1.7 KHL         */
+/* Added 1.8 */
+#define TWCP_PNG         9
+#define TWCP_RLE4        10
+#define TWCP_RLE8        11
+#define TWCP_BITFIELDS   12
+
+
+/* ICAP_IMAGEFILEFORMAT values (FF_means File Format)   */
+#define TWFF_TIFF        0    /* Tagged Image File Format     */
+#define TWFF_PICT        1    /* Macintosh PICT               */
+#define TWFF_BMP         2    /* Windows Bitmap               */
+#define TWFF_XBM         3    /* X-Windows Bitmap             */
+#define TWFF_JFIF        4    /* JPEG File Interchange Format */
+#define TWFF_FPX         5    /* Flash Pix                    */
+#define TWFF_TIFFMULTI   6    /* Multi-page tiff file         */
+#define TWFF_PNG         7
+#define TWFF_SPIFF       8
+#define TWFF_EXIF        9
+
+
+/* ICAP_FILTER values (FT_ means Filter Type) */
+#define TWFT_RED         0
+#define TWFT_GREEN       1
+#define TWFT_BLUE        2
+#define TWFT_NONE        3
+#define TWFT_WHITE       4
+#define TWFT_CYAN        5
+#define TWFT_MAGENTA     6
+#define TWFT_YELLOW      7
+#define TWFT_BLACK       8
+
+/* ICAP_LIGHTPATH values (LP_ means Light Path) */
+#define TWLP_REFLECTIVE   0
+#define TWLP_TRANSMISSIVE 1
+
+/* ICAP_LIGHTSOURCE values (LS_ means Light Source) */
+#define TWLS_RED         0
+#define TWLS_GREEN       1
+#define TWLS_BLUE        2
+#define TWLS_NONE        3
+#define TWLS_WHITE       4
+#define TWLS_UV          5
+#define TWLS_IR          6
+
+/* ICAP_ORIENTATION values (OR_ means ORientation) */
+#define TWOR_ROT0        0
+#define TWOR_ROT90       1
+#define TWOR_ROT180      2
+#define TWOR_ROT270      3
+#define TWOR_PORTRAIT    TWOR_ROT0
+#define TWOR_LANDSCAPE   TWOR_ROT270
+
+/* ICAP_PLANARCHUNKY values (PC_ means Planar/Chunky ) */
+#define TWPC_CHUNKY      0
+#define TWPC_PLANAR      1
+
+/* ICAP_PIXELFLAVOR values (PF_ means Pixel Flavor) */
+#define TWPF_CHOCOLATE   0  /* zero pixel represents darkest shade  */
+#define TWPF_VANILLA     1  /* zero pixel represents lightest shade */
+
+/* ICAP_PIXELTYPE values (PT_ means Pixel Type) */
+#define TWPT_BW          0 /* Black and White */
+#define TWPT_GRAY        1
+#define TWPT_RGB         2
+#define TWPT_PALETTE     3
+#define TWPT_CMY         4
+#define TWPT_CMYK        5
+#define TWPT_YUV         6
+#define TWPT_YUVK        7
+#define TWPT_CIEXYZ      8
+
+/* ICAP_SUPPORTEDSIZES values (SS_ means Supported Sizes) */
+#define TWSS_NONE        0
+#define TWSS_A4LETTER    1
+#define TWSS_B5LETTER    2
+#define TWSS_USLETTER    3
+#define TWSS_USLEGAL     4
+/* Added 1.5 */
+#define TWSS_A5          5
+#define TWSS_B4          6
+#define TWSS_B6          7
+/*#define TWSS_B          8 */
+/* Added 1.7 */
+#define TWSS_USLEDGER    9
+#define TWSS_USEXECUTIVE 10
+#define TWSS_A3          11
+#define TWSS_B3          12
+#define TWSS_A6          13
+#define TWSS_C4          14
+#define TWSS_C5          15
+#define TWSS_C6          16
+/* Added 1.8 */
+#define TWSS_4A0          17
+#define TWSS_2A0          18
+#define TWSS_A0           19
+#define TWSS_A1           20
+#define TWSS_A2           21
+#define TWSS_A4           TWSS_A4LETTER
+#define TWSS_A7           22
+#define TWSS_A8           23
+#define TWSS_A9           24
+#define TWSS_A10          25
+#define TWSS_ISOB0        26
+#define TWSS_ISOB1        27
+#define TWSS_ISOB2        28
+#define TWSS_ISOB3        TWSS_B3
+#define TWSS_ISOB4        TWSS_B4
+#define TWSS_ISOB5        29
+#define TWSS_ISOB6        TWSS_B6
+#define TWSS_ISOB7        30
+#define TWSS_ISOB8        31
+#define TWSS_ISOB9        32
+#define TWSS_ISOB10       33
+#define TWSS_JISB0        34
+#define TWSS_JISB1        35
+#define TWSS_JISB2        36
+#define TWSS_JISB3        37
+#define TWSS_JISB4        38
+#define TWSS_JISB5        TWSS_B5LETTER
+#define TWSS_JISB6        39
+#define TWSS_JISB7        40
+#define TWSS_JISB8        41
+#define TWSS_JISB9        42
+#define TWSS_JISB10       43
+#define TWSS_C0           44
+#define TWSS_C1           45
+#define TWSS_C2           46
+#define TWSS_C3           47
+#define TWSS_C7           48
+#define TWSS_C8           49
+#define TWSS_C9           50
+#define TWSS_C10          51
+#define TWSS_USSTATEMENT  52
+#define TWSS_BUSINESSCARD 53
+
+/* ICAP_XFERMECH values (SX_ means Setup XFer) */
+#define TWSX_NATIVE      0
+#define TWSX_FILE        1
+#define TWSX_MEMORY      2
+
+/* ICAP_UNITS values (UN_ means UNits) */
+#define TWUN_INCHES      0
+#define TWUN_CENTIMETERS 1
+#define TWUN_PICAS       2
+#define TWUN_POINTS      3
+#define TWUN_TWIPS       4
+#define TWUN_PIXELS      5
+
+/* Added 1.5 */
+/* ICAP_BITDEPTHREDUCTION values (BR_ means Bitdepth Reduction) */
+#define TWBR_THRESHOLD     0
+#define TWBR_HALFTONE      1
+#define TWBR_CUSTHALFTONE  2
+#define TWBR_DIFFUSION     3
+
+/* Added 1.7 */
+/* ICAP_DUPLEX values */
+#define TWDX_NONE         0
+#define TWDX_1PASSDUPLEX  1
+#define TWDX_2PASSDUPLEX  2
+
+/* Added 1.7 */
+/* TWEI_BARCODETYPE values */
+#define TWBT_3OF9                 0
+#define TWBT_2OF5INTERLEAVED      1
+#define TWBT_2OF5NONINTERLEAVED   2
+#define TWBT_CODE93               3
+#define TWBT_CODE128              4
+#define TWBT_UCC128               5
+#define TWBT_CODABAR              6
+#define TWBT_UPCA                 7
+#define TWBT_UPCE                 8
+#define TWBT_EAN8                 9
+#define TWBT_EAN13                10
+#define TWBT_POSTNET              11
+#define TWBT_PDF417               12
+/* Added 1.8 */
+#define TWBT_2OF5INDUSTRIAL       13
+#define TWBT_2OF5MATRIX           14
+#define TWBT_2OF5DATALOGIC        15
+#define TWBT_2OF5IATA             16
+#define TWBT_3OF9FULLASCII        17
+#define TWBT_CODABARWITHSTARTSTOP 18
+#define TWBT_MAXICODE             19
+
+/* Added 1.7 */
+/* TWEI_DESKEWSTATUS values */
+#define TWDSK_SUCCESS     0
+#define TWDSK_REPORTONLY  1
+#define TWDSK_FAIL        2
+#define TWDSK_DISABLED    3
+
+/* Added 1.7 */
+/* TWEI_PATCHCODE values */
+#define TWPCH_PATCH1      0
+#define TWPCH_PATCH2      1
+#define TWPCH_PATCH3      2
+#define TWPCH_PATCH4      3
+#define TWPCH_PATCH6      4
+#define TWPCH_PATCHT      5
+
+/* Added 1.7 */
+/* CAP_JOBCONTROL values */
+#define TWJC_NONE   0
+#define TWJC_JSIC   1
+#define TWJC_JSIS   2
+#define TWJC_JSXC   3
+#define TWJC_JSXS   4
+
+/* Added 1.7 */
+/* TWEI_BARCODEROTATION values (BCOR_ means barcode rotation) */
+#define TWBCOR_ROT0   0
+#define TWBCOR_ROT90  1
+#define TWBCOR_ROT180 2
+#define TWBCOR_ROT270 3
+#define TWBCOR_ROTX   4
+
+/* Added 1.8 */
+/* ACAP_AUDIOFILEFORMAT values (AF_ means audio format) */
+#define TWAF_WAV      0
+#define TWAF_AIFF     1
+#define TWAF_AU       3
+#define TWAF_SND      4
+
+/* CAP_ALARMS values (AL_ means alarms) */
+#define TWAL_ALARM          0
+#define TWAL_FEEDERERROR    1
+#define TWAL_FEEDERWARNING  2
+#define TWAL_BARCODE        3
+#define TWAL_DOUBLEFEED     4
+#define TWAL_JAM            5
+#define TWAL_PATCHCODE      6
+#define TWAL_POWER          7
+#define TWAL_SKEW           8
+
+/* CAP_CLEARBUFFERS values (CB_ means clear buffers) */
+#define TWCB_AUTO           0
+#define TWCB_CLEAR          1
+#define TWCB_NOCLEAR        2
+
+/* CAP_DEVICEEVENT values (DE_ means device event) */
+#define TWDE_CUSTOMEVENTS           0x8000
+#define TWDE_CHECKAUTOMATICCAPTURE  0
+#define TWDE_CHECKBATTERY           1
+#define TWDE_CHECKDEVICEONLINE      2
+#define TWDE_CHECKFLASH             3
+#define TWDE_CHECKPOWERSUPPLY       4
+#define TWDE_CHECKRESOLUTION        5
+#define TWDE_DEVICEADDED            6
+#define TWDE_DEVICEOFFLINE          7
+#define TWDE_DEVICEREADY            8
+#define TWDE_DEVICEREMOVED          9
+#define TWDE_IMAGECAPTURED          10
+#define TWDE_IMAGEDELETED           11
+#define TWDE_PAPERDOUBLEFEED        12
+#define TWDE_PAPERJAM               13
+#define TWDE_LAMPFAILURE            14
+#define TWDE_POWERSAVE              15
+#define TWDE_POWERSAVENOTIFY        16
+
+/* CAP_FEEDERALIGNMENT values (FA_ means feeder alignment) */
+#define TWFA_NONE   0
+#define TWFA_LEFT   1
+#define TWFA_CENTER 2
+#define TWFA_RIGHT  3
+
+/* CAP_FEEDERORDER values (FO_ means feeder order) */
+#define TWFO_FIRSTPAGEFIRST 0
+#define TWFO_LASTPAGEFIRST  1
+
+/* CAP_FILESYSTEM values (FS_ means file system) */
+#define TWFS_FILESYSTEM       0
+#define TWFS_RECURSIVEDELETE  1
+
+/* CAP_POWERSUPPLY values (PS_ means power supply) */
+#define TWPS_EXTERNAL 0
+#define TWPS_BATTERY  1
+
+/* CAP_PRINTER values (PR_ means printer) */
+#define TWPR_IMPRINTERTOPBEFORE     0
+#define TWPR_IMPRINTERTOPAFTER      1
+#define TWPR_IMPRINTERBOTTOMBEFORE  2
+#define TWPR_IMPRINTERBOTTOMAFTER   3
+#define TWPR_ENDORSERTOPBEFORE      4
+#define TWPR_ENDORSERTOPAFTER       5
+#define TWPR_ENDORSERBOTTOMBEFORE   6
+#define TWPR_ENDORSERBOTTOMAFTER    7
+
+/* CAP_PRINTERMODE values (PM_ means printer mode) */
+#define TWPM_SINGLESTRING     0
+#define TWPM_MULTISTRING      1
+#define TWPM_COMPOUNDSTRING   2
+
+/* ICAP_BARCODESEARCHMODE values (TWBD_ means search) */
+#define TWBD_HORZ     0
+#define TWBD_VERT     1
+#define TWBD_HORZVERT 2
+#define TWBD_VERTHORZ 3
+
+/* ICAP_FLASHUSED2 values (FL_ means flash) */
+#define TWFL_NONE     0
+#define TWFL_OFF      1
+#define TWFL_ON       2
+#define TWFL_AUTO     3
+#define TWFL_REDEYE   4
+
+/* ICAP_FLIPROTATION values (FR_ means flip rotation) */
+#define TWFR_BOOK     0
+#define TWFR_FANFOLD  1
+
+/* ICAP_IMAGEFILTER values (IF_ means image filter) */
+#define TWIF_NONE     0
+#define TWIF_AUTO     1
+#define TWIF_LOWPASS  2
+#define TWIF_BANDPASS 3
+#define TWIF_HIGHPASS 4
+#define TWIF_TEXT     TWIF_BANDPASS
+#define TWIF_FINELINE TWIF_HIGHPASS
+
+/* ICAP_NOISEFILTER values (NF_ means noise filter) */
+#define TWNF_NONE         0
+#define TWNF_AUTO         1
+#define TWNF_LONEPIXEL    2
+#define TWNF_MAJORITYRULE 3
+
+/* ICAP_OVERSCAN values (OV_ means overscan) */
+#define TWOV_NONE       0
+#define TWOV_AUTO       1
+#define TWOV_TOPBOTTOM  2
+#define TWOV_LEFTRIGHT  3
+#define TWOV_ALL        4
+
+/* TW_FILESYSTEM.FileType values (FT_ means file type) */
+#define TWFY_CAMERA         0
+#define TWFY_CAMERATOP      1
+#define TWFY_CAMERABOTTOM   2
+#define TWFY_CAMERAPREVIEW  3
+#define TWFY_DOMAIN         4
+#define TWFY_HOST           5
+#define TWFY_DIRECTORY      6
+#define TWFY_IMAGE          7
+#define TWFY_UNKNOWN        8
+
+/****************************************************************************
+ * Country Constants                                                        *
+ ****************************************************************************/
+
+#define TWCY_AFGHANISTAN   1001
+#define TWCY_ALGERIA        213
+#define TWCY_AMERICANSAMOA  684
+#define TWCY_ANDORRA        033
+#define TWCY_ANGOLA        1002
+#define TWCY_ANGUILLA      8090
+#define TWCY_ANTIGUA       8091
+#define TWCY_ARGENTINA       54
+#define TWCY_ARUBA          297
+#define TWCY_ASCENSIONI     247
+#define TWCY_AUSTRALIA       61
+#define TWCY_AUSTRIA         43
+#define TWCY_BAHAMAS       8092
+#define TWCY_BAHRAIN        973
+#define TWCY_BANGLADESH     880
+#define TWCY_BARBADOS      8093
+#define TWCY_BELGIUM         32
+#define TWCY_BELIZE         501
+#define TWCY_BENIN          229
+#define TWCY_BERMUDA       8094
+#define TWCY_BHUTAN        1003
+#define TWCY_BOLIVIA        591
+#define TWCY_BOTSWANA       267
+#define TWCY_BRITAIN          6
+#define TWCY_BRITVIRGINIS  8095
+#define TWCY_BRAZIL          55
+#define TWCY_BRUNEI         673
+#define TWCY_BULGARIA       359
+#define TWCY_BURKINAFASO   1004
+#define TWCY_BURMA         1005
+#define TWCY_BURUNDI       1006
+#define TWCY_CAMAROON       237
+#define TWCY_CANADA           2
+#define TWCY_CAPEVERDEIS    238
+#define TWCY_CAYMANIS      8096
+#define TWCY_CENTRALAFREP  1007
+#define TWCY_CHAD          1008
+#define TWCY_CHILE           56
+#define TWCY_CHINA           86
+#define TWCY_CHRISTMASIS   1009
+#define TWCY_COCOSIS       1009
+#define TWCY_COLOMBIA        57
+#define TWCY_COMOROS       1010
+#define TWCY_CONGO         1011
+#define TWCY_COOKIS        1012
+#define TWCY_COSTARICA     506
+#define TWCY_CUBA           005
+#define TWCY_CYPRUS         357
+#define TWCY_CZECHOSLOVAKIA  42
+#define TWCY_DENMARK         45
+#define TWCY_DJIBOUTI      1013
+#define TWCY_DOMINICA      8097
+#define TWCY_DOMINCANREP   8098
+#define TWCY_EASTERIS      1014
+#define TWCY_ECUADOR        593
+#define TWCY_EGYPT           20
+#define TWCY_ELSALVADOR     503
+#define TWCY_EQGUINEA      1015
+#define TWCY_ETHIOPIA       251
+#define TWCY_FALKLANDIS    1016
+#define TWCY_FAEROEIS       298
+#define TWCY_FIJIISLANDS    679
+#define TWCY_FINLAND        358
+#define TWCY_FRANCE          33
+#define TWCY_FRANTILLES     596
+#define TWCY_FRGUIANA       594
+#define TWCY_FRPOLYNEISA    689
+#define TWCY_FUTANAIS      1043
+#define TWCY_GABON          241
+#define TWCY_GAMBIA         220
+#define TWCY_GERMANY         49
+#define TWCY_GHANA          233
+#define TWCY_GIBRALTER      350
+#define TWCY_GREECE          30
+#define TWCY_GREENLAND      299
+#define TWCY_GRENADA       8099
+#define TWCY_GRENEDINES    8015
+#define TWCY_GUADELOUPE     590
+#define TWCY_GUAM           671
+#define TWCY_GUANTANAMOBAY 5399
+#define TWCY_GUATEMALA      502
+#define TWCY_GUINEA         224
+#define TWCY_GUINEABISSAU  1017
+#define TWCY_GUYANA         592
+#define TWCY_HAITI          509
+#define TWCY_HONDURAS       504
+#define TWCY_HONGKONG      852
+#define TWCY_HUNGARY         36
+#define TWCY_ICELAND        354
+#define TWCY_INDIA           91
+#define TWCY_INDONESIA       62
+#define TWCY_IRAN            98
+#define TWCY_IRAQ           964
+#define TWCY_IRELAND        353
+#define TWCY_ISRAEL         972
+#define TWCY_ITALY           39
+#define TWCY_IVORYCOAST    225
+#define TWCY_JAMAICA       8010
+#define TWCY_JAPAN           81
+#define TWCY_JORDAN         962
+#define TWCY_KENYA          254
+#define TWCY_KIRIBATI      1018
+#define TWCY_KOREA           82
+#define TWCY_KUWAIT         965
+#define TWCY_LAOS          1019
+#define TWCY_LEBANON       1020
+#define TWCY_LIBERIA        231
+#define TWCY_LIBYA          218
+#define TWCY_LIECHTENSTEIN   41
+#define TWCY_LUXENBOURG     352
+#define TWCY_MACAO          853
+#define TWCY_MADAGASCAR    1021
+#define TWCY_MALAWI         265
+#define TWCY_MALAYSIA        60
+#define TWCY_MALDIVES       960
+#define TWCY_MALI          1022
+#define TWCY_MALTA          356
+#define TWCY_MARSHALLIS     692
+#define TWCY_MAURITANIA    1023
+#define TWCY_MAURITIUS      230
+#define TWCY_MEXICO           3
+#define TWCY_MICRONESIA     691
+#define TWCY_MIQUELON       508
+#define TWCY_MONACO          33
+#define TWCY_MONGOLIA      1024
+#define TWCY_MONTSERRAT    8011
+#define TWCY_MOROCCO        212
+#define TWCY_MOZAMBIQUE    1025
+#define TWCY_NAMIBIA        264
+#define TWCY_NAURU         1026
+#define TWCY_NEPAL          977
+#define TWCY_NETHERLANDS     31
+#define TWCY_NETHANTILLES   599
+#define TWCY_NEVIS         8012
+#define TWCY_NEWCALEDONIA   687
+#define TWCY_NEWZEALAND      64
+#define TWCY_NICARAGUA      505
+#define TWCY_NIGER          227
+#define TWCY_NIGERIA        234
+#define TWCY_NIUE          1027
+#define TWCY_NORFOLKI      1028
+#define TWCY_NORWAY          47
+#define TWCY_OMAN           968
+#define TWCY_PAKISTAN        92
+#define TWCY_PALAU         1029
+#define TWCY_PANAMA         507
+#define TWCY_PARAGUAY       595
+#define TWCY_PERU            51
+#define TWCY_PHILLIPPINES    63
+#define TWCY_PITCAIRNIS    1030
+#define TWCY_PNEWGUINEA     675
+#define TWCY_POLAND          48
+#define TWCY_PORTUGAL       351
+#define TWCY_QATAR          974
+#define TWCY_REUNIONI      1031
+#define TWCY_ROMANIA         40
+#define TWCY_RWANDA         250
+#define TWCY_SAIPAN         670
+#define TWCY_SANMARINO       39
+#define TWCY_SAOTOME       1033
+#define TWCY_SAUDIARABIA    966
+#define TWCY_SENEGAL        221
+#define TWCY_SEYCHELLESIS  1034
+#define TWCY_SIERRALEONE   1035
+#define TWCY_SINGAPORE       65
+#define TWCY_SOLOMONIS     1036
+#define TWCY_SOMALI        1037
+#define TWCY_SOUTHAFRICA    27
+#define TWCY_SPAIN           34
+#define TWCY_SRILANKA        94
+#define TWCY_STHELENA      1032
+#define TWCY_STKITTS       8013
+#define TWCY_STLUCIA       8014
+#define TWCY_STPIERRE       508
+#define TWCY_STVINCENT     8015
+#define TWCY_SUDAN         1038
+#define TWCY_SURINAME       597
+#define TWCY_SWAZILAND      268
+#define TWCY_SWEDEN          46
+#define TWCY_SWITZERLAND     41
+#define TWCY_SYRIA         1039
+#define TWCY_TAIWAN         886
+#define TWCY_TANZANIA       255
+#define TWCY_THAILAND        66
+#define TWCY_TOBAGO        8016
+#define TWCY_TOGO           228
+#define TWCY_TONGAIS        676
+#define TWCY_TRINIDAD      8016
+#define TWCY_TUNISIA        216
+#define TWCY_TURKEY          90
+#define TWCY_TURKSCAICOS   8017
+#define TWCY_TUVALU        1040
+#define TWCY_UGANDA         256
+#define TWCY_USSR             7
+#define TWCY_UAEMIRATES     971
+#define TWCY_UNITEDKINGDOM   44
+#define TWCY_USA              1
+#define TWCY_URUGUAY        598
+#define TWCY_VANUATU       1041
+#define TWCY_VATICANCITY     39
+#define TWCY_VENEZUELA       58
+#define TWCY_WAKE          1042
+#define TWCY_WALLISIS      1043
+#define TWCY_WESTERNSAHARA 1044
+#define TWCY_WESTERNSAMOA  1045
+#define TWCY_YEMEN         1046
+#define TWCY_YUGOSLAVIA      38
+#define TWCY_ZAIRE          243
+#define TWCY_ZAMBIA         260
+#define TWCY_ZIMBABWE       263
+/* Added for 1.8 */
+#define TWCY_ALBANIA        355
+#define TWCY_ARMENIA        374
+#define TWCY_AZERBAIJAN     994
+#define TWCY_BELARUS        375
+#define TWCY_BOSNIAHERZGO   387
+#define TWCY_CAMBODIA       855
+#define TWCY_CROATIA        385
+#define TWCY_CZECHREPUBLIC  420
+#define TWCY_DIEGOGARCIA    246
+#define TWCY_ERITREA        291
+#define TWCY_ESTONIA        372
+#define TWCY_GEORGIA        995
+#define TWCY_LATVIA         371
+#define TWCY_LESOTHO        266
+#define TWCY_LITHUANIA      370
+#define TWCY_MACEDONIA      389
+#define TWCY_MAYOTTEIS      269
+#define TWCY_MOLDOVA        373
+#define TWCY_MYANMAR        95
+#define TWCY_NORTHKOREA     850
+#define TWCY_PUERTORICO     787
+#define TWCY_RUSSIA         7
+#define TWCY_SERBIA         381
+#define TWCY_SLOVAKIA       421
+#define TWCY_SLOVENIA       386
+#define TWCY_SOUTHKOREA     82
+#define TWCY_UKRAINE        380
+#define TWCY_USVIRGINIS     340
+#define TWCY_VIETNAM        84
+
+/****************************************************************************
+ * Language Constants                                                       *
+ ****************************************************************************/
+
+#define TWLG_DAN              0 /* Danish                 */
+#define TWLG_DUT              1 /* Dutch                  */
+#define TWLG_ENG              2 /* International English  */
+#define TWLG_FCF              3 /* French Canadian        */
+#define TWLG_FIN              4 /* Finnish                */
+#define TWLG_FRN              5 /* French                 */
+#define TWLG_GER              6 /* German                 */
+#define TWLG_ICE              7 /* Icelandic              */
+#define TWLG_ITN              8 /* Italian                */
+#define TWLG_NOR              9 /* Norwegian              */
+#define TWLG_POR             10 /* Portuguese             */
+#define TWLG_SPA             11 /* Spanish                */
+#define TWLG_SWE             12 /* Swedish                */
+#define TWLG_USA             13 /* U.S. English           */
+/* Added for 1.8 */
+#define TWLG_USERLOCALE           -1
+#define TWLG_AFRIKAANS            14
+#define TWLG_ALBANIA              15
+#define TWLG_ARABIC               16
+#define TWLG_ARABIC_ALGERIA       17
+#define TWLG_ARABIC_BAHRAIN       18
+#define TWLG_ARABIC_EGYPT         19
+#define TWLG_ARABIC_IRAQ          20
+#define TWLG_ARABIC_JORDAN        21
+#define TWLG_ARABIC_KUWAIT        22
+#define TWLG_ARABIC_LEBANON       23
+#define TWLG_ARABIC_LIBYA         24
+#define TWLG_ARABIC_MOROCCO       25
+#define TWLG_ARABIC_OMAN          26
+#define TWLG_ARABIC_QATAR         27
+#define TWLG_ARABIC_SAUDIARABIA   28
+#define TWLG_ARABIC_SYRIA         29
+#define TWLG_ARABIC_TUNISIA       30
+#define TWLG_ARABIC_UAE           31 /* United Arabic Emirates */
+#define TWLG_ARABIC_YEMEN         32
+#define TWLG_BASQUE               33
+#define TWLG_BYELORUSSIAN         34
+#define TWLG_BULGARIAN            35
+#define TWLG_CATALAN              36
+#define TWLG_CHINESE              37
+#define TWLG_CHINESE_HONGKONG     38
+#define TWLG_CHINESE_PRC          39 /* People's Republic of China */
+#define TWLG_CHINESE_SINGAPORE    40
+#define TWLG_CHINESE_SIMPLIFIED   41
+#define TWLG_CHINESE_TAIWAN       42
+#define TWLG_CHINESE_TRADITIONAL  43
+#define TWLG_CROATIA              44
+#define TWLG_CZECH                45
+#define TWLG_DANISH               TWLG_DAN
+#define TWLG_DUTCH                TWLG_DUT
+#define TWLG_DUTCH_BELGIAN        46
+#define TWLG_ENGLISH              TWLG_ENG
+#define TWLG_ENGLISH_AUSTRALIAN   47
+#define TWLG_ENGLISH_CANADIAN     48
+#define TWLG_ENGLISH_IRELAND      49
+#define TWLG_ENGLISH_NEWZEALAND   50
+#define TWLG_ENGLISH_SOUTHAFRICA  51
+#define TWLG_ENGLISH_UK           52
+#define TWLG_ENGLISH_USA          TWLG_USA
+#define TWLG_ESTONIAN             53
+#define TWLG_FAEROESE             54
+#define TWLG_FARSI                55
+#define TWLG_FINNISH              TWLG_FIN
+#define TWLG_FRENCH               TWLG_FRN
+#define TWLG_FRENCH_BELGIAN       56
+#define TWLG_FRENCH_CANADIAN      TWLG_FCF
+#define TWLG_FRENCH_LUXEMBOURG    57
+#define TWLG_FRENCH_SWISS         58
+#define TWLG_GERMAN               TWLG_GER
+#define TWLG_GERMAN_AUSTRIAN      59
+#define TWLG_GERMAN_LUXEMBOURG    60
+#define TWLG_GERMAN_LIECHTENSTEIN 61
+#define TWLG_GERMAN_SWISS         62
+#define TWLG_GREEK                63
+#define TWLG_HEBREW               64
+#define TWLG_HUNGARIAN            65
+#define TWLG_ICELANDIC            TWLG_ICE
+#define TWLG_INDONESIAN           66
+#define TWLG_ITALIAN              TWLG_ITN
+#define TWLG_ITALIAN_SWISS        67
+#define TWLG_JAPANESE             68
+#define TWLG_KOREAN               69
+#define TWLG_KOREAN_JOHAB         70
+#define TWLG_LATVIAN              71
+#define TWLG_LITHUANIAN           72
+#define TWLG_NORWEGIAN            TWLG_NOR
+#define TWLG_NORWEGIAN_BOKMAL     73
+#define TWLG_NORWEGIAN_NYNORSK    74
+#define TWLG_POLISH               75
+#define TWLG_PORTUGUESE           TWLG_POR
+#define TWLG_PORTUGUESE_BRAZIL    76
+#define TWLG_ROMANIAN             77
+#define TWLG_RUSSIAN              78
+#define TWLG_SERBIAN_LATIN        79
+#define TWLG_SLOVAK               80
+#define TWLG_SLOVENIAN            81
+#define TWLG_SPANISH              TWLG_SPA
+#define TWLG_SPANISH_MEXICAN      82
+#define TWLG_SPANISH_MODERN       83
+#define TWLG_SWEDISH              TWLG_SWE
+#define TWLG_THAI                 84
+#define TWLG_TURKISH              85
+#define TWLG_UKRANIAN             86
+/* More stuff added for 1.8 */
+#define TWLG_ASSAMESE             87
+#define TWLG_BENGALI              88
+#define TWLG_BIHARI               89
+#define TWLG_BODO                 90
+#define TWLG_DOGRI                91
+#define TWLG_GUJARATI             92
+#define TWLG_HARYANVI             93
+#define TWLG_HINDI                94
+#define TWLG_KANNADA              95
+#define TWLG_KASHMIRI             96
+#define TWLG_MALAYALAM            97
+#define TWLG_MARATHI              98
+#define TWLG_MARWARI              99
+#define TWLG_MEGHALAYAN          100
+#define TWLG_MIZO                101
+#define TWLG_NAGA                102
+#define TWLG_ORISSI              103
+#define TWLG_PUNJABI             104
+#define TWLG_PUSHTU              105
+#define TWLG_SERBIAN_CYRILLIC    106
+#define TWLG_SIKKIMI             107
+#define TWLG_SWEDISH_FINLAND     108
+#define TWLG_TAMIL               109
+#define TWLG_TELUGU              110
+#define TWLG_TRIPURI             111
+#define TWLG_URDU                112
+#define TWLG_VIETNAMESE          113
+
+/****************************************************************************
+ * Data Groups                                                              *
+ ****************************************************************************/
+
+/* More Data Groups may be added in the future.
+ * Possible candidates include text, vector graphics, sound, etc.
+ * NOTE: Data Group constants must be powers of 2 as they are used
+ *       as bitflags when Application asks DSM to present a list of DSs.
+ */
+
+#define DG_CONTROL          0x0001L /* data pertaining to control       */
+#define DG_IMAGE            0x0002L /* data pertaining to raster images */
+/* Added 1.8 */
+#define DG_AUDIO            0x0004L /* data pertaining to audio */
+
+/****************************************************************************
+ * Data Argument Types                                                      *
+ ****************************************************************************/
+
+/*  SDH - 03/23/95 - WATCH                                                  */
+/*  The thunker requires knowledge about size of data being passed in the   */
+/*  lpData parameter to DS_Entry (which is not readily available due to     */
+/*  type LPVOID.  Thus, we key off the DAT_ argument to determine the size. */
+/*  This has a couple implications:                                         */
+/*  1) Any additional DAT_ features require modifications to the thunk code */
+/*     for thunker support.                                                 */
+/*  2) Any applications which use the custom capabilities are not supported */
+/*     under thunking since we have no way of knowing what size data (if    */
+/*     any) is being passed.                                                */
+
+#define DAT_NULL            0x0000 /* No data or structure. */
+#define DAT_CUSTOMBASE      0x8000 /* Base of custom DATs.  */
+
+/* Data Argument Types for the DG_CONTROL Data Group. */
+#define DAT_CAPABILITY      0x0001 /* TW_CAPABILITY                        */
+#define DAT_EVENT           0x0002 /* TW_EVENT                             */
+#define DAT_IDENTITY        0x0003 /* TW_IDENTITY                          */
+#define DAT_PARENT          0x0004 /* TW_HANDLE, application win handle in Windows */
+#define DAT_PENDINGXFERS    0x0005 /* TW_PENDINGXFERS                      */
+#define DAT_SETUPMEMXFER    0x0006 /* TW_SETUPMEMXFER                      */
+#define DAT_SETUPFILEXFER   0x0007 /* TW_SETUPFILEXFER                     */
+#define DAT_STATUS          0x0008 /* TW_STATUS                            */
+#define DAT_USERINTERFACE   0x0009 /* TW_USERINTERFACE                     */
+#define DAT_XFERGROUP       0x000a /* TW_UINT32                            */
+/*  SDH - 03/21/95 - TWUNK                                         */
+/*  Additional message required for thunker to request the special */
+/*  identity information.                                          */
+#define DAT_TWUNKIDENTITY   0x000b /* TW_TWUNKIDENTITY                     */
+#define DAT_CUSTOMDSDATA    0x000c /* TW_CUSTOMDSDATA.                     */
+/* Added 1.8 */
+#define DAT_DEVICEEVENT     0x000d /* TW_DEVICEEVENT                       */
+#define DAT_FILESYSTEM      0x000e /* TW_FILESYSTEM                        */
+#define DAT_PASSTHRU        0x000f /* TW_PASSTHRU                          */
+
+/* Data Argument Types for the DG_IMAGE Data Group. */
+#define DAT_IMAGEINFO       0x0101 /* TW_IMAGEINFO                         */
+#define DAT_IMAGELAYOUT     0x0102 /* TW_IMAGELAYOUT                       */
+#define DAT_IMAGEMEMXFER    0x0103 /* TW_IMAGEMEMXFER                      */
+#define DAT_IMAGENATIVEXFER 0x0104 /* TW_UINT32 loword is hDIB, PICHandle  */
+#define DAT_IMAGEFILEXFER   0x0105 /* Null data                            */
+#define DAT_CIECOLOR        0x0106 /* TW_CIECOLOR                          */
+#define DAT_GRAYRESPONSE    0x0107 /* TW_GRAYRESPONSE                      */
+#define DAT_RGBRESPONSE     0x0108 /* TW_RGBRESPONSE                       */
+#define DAT_JPEGCOMPRESSION 0x0109 /* TW_JPEGCOMPRESSION                   */
+#define DAT_PALETTE8        0x010a /* TW_PALETTE8                          */
+#define DAT_EXTIMAGEINFO    0x010b /* TW_EXTIMAGEINFO -- for 1.7 Spec.     */
+
+/* Added 1.8 */
+/* Data Argument Types for the DG_AUDIO Data Group. */
+#define DAT_AUDIOFILEXFER   0x0201 /* Null data                            */
+#define DAT_AUDIOINFO       0x0202 /* TW_AUDIOINFO                         */
+#define DAT_AUDIONATIVEXFER 0x0203 /* TW_UINT32 handle to WAV, (AIFF Mac)  */
+
+/****************************************************************************
+ * Messages                                                                 *
+ ****************************************************************************/
+
+/* All message constants are unique.
+ * Messages are grouped according to which DATs they are used with.*/
+
+#define MSG_NULL         0x0000 /* Used in TW_EVENT structure               */
+#define MSG_CUSTOMBASE   0x8000 /* Base of custom messages                  */
+
+/* Generic messages may be used with any of several DATs.                   */
+#define MSG_GET          0x0001 /* Get one or more values                   */
+#define MSG_GETCURRENT   0x0002 /* Get current value                        */
+#define MSG_GETDEFAULT   0x0003 /* Get default (e.g. power up) value        */
+#define MSG_GETFIRST     0x0004 /* Get first of a series of items, e.g. DSs */
+#define MSG_GETNEXT      0x0005 /* Iterate through a series of items.       */
+#define MSG_SET          0x0006 /* Set one or more values                   */
+#define MSG_RESET        0x0007 /* Set current value to default value       */
+#define MSG_QUERYSUPPORT 0x0008 /* Get supported operations on the cap.     */
+
+/* Messages used with DAT_NULL                                              */
+#define MSG_XFERREADY    0x0101 /* The data source has data ready           */
+#define MSG_CLOSEDSREQ   0x0102 /* Request for Application. to close DS             */
+#define MSG_CLOSEDSOK    0x0103 /* Tell the Application. to save the state.         */
+/* Added 1.8 */
+#define MSG_DEVICEEVENT  0X0104 /* Some event has taken place               */
+
+/* Messages used with a pointer to a DAT_STATUS structure                   */
+#define MSG_CHECKSTATUS  0x0201 /* Get status information                   */
+
+/* Messages used with a pointer to DAT_PARENT data                          */
+#define MSG_OPENDSM      0x0301 /* Open the DSM                             */
+#define MSG_CLOSEDSM     0x0302 /* Close the DSM                            */
+
+/* Messages used with a pointer to a DAT_IDENTITY structure                 */
+#define MSG_OPENDS       0x0401 /* Open a data source                       */
+#define MSG_CLOSEDS      0x0402 /* Close a data source                      */
+#define MSG_USERSELECT   0x0403 /* Put up a dialog of all DS                */
+
+/* Messages used with a pointer to a DAT_USERINTERFACE structure            */
+#define MSG_DISABLEDS    0x0501 /* Disable data transfer in the DS          */
+#define MSG_ENABLEDS     0x0502 /* Enable data transfer in the DS           */
+#define MSG_ENABLEDSUIONLY  0x0503  /* Enable for saving DS state only.     */
+
+/* Messages used with a pointer to a DAT_EVENT structure                    */
+#define MSG_PROCESSEVENT 0x0601
+
+/* Messages used with a pointer to a DAT_PENDINGXFERS structure             */
+#define MSG_ENDXFER      0x0701
+
+/* Added 1.8 */
+/* Messages used with a pointer to a DAT_FILESYSTEM structure               */
+#define MSG_CHANGEDIRECTORY   0x0801
+#define MSG_CREATEDIRECTORY   0x0802
+#define MSG_DELETE            0x0803
+#define MSG_FORMATMEDIA       0x0804
+#define MSG_GETCLOSE          0x0805
+#define MSG_GETFIRSTFILE      0x0806
+#define MSG_GETINFO           0x0807
+#define MSG_GETNEXTFILE       0x0808
+#define MSG_RENAME            0x0809
+
+/* Messages used with a pointer to a DAT_PASSTHRU structure                 */
+#define MSG_PASSTHRU          0x0901
+
+/****************************************************************************
+ * Capabilities                                                             *
+ ****************************************************************************/
+
+#define CAP_CUSTOMBASE          0x8000 /* Base of custom capabilities */
+
+/* all data sources are REQUIRED to support these caps */
+#define CAP_XFERCOUNT           0x0001
+
+/* image data sources are REQUIRED to support these caps */
+#define ICAP_COMPRESSION        0x0100
+#define ICAP_PIXELTYPE          0x0101
+#define ICAP_UNITS              0x0102 /* default is TWUN_INCHES */
+#define ICAP_XFERMECH           0x0103
+
+/* all data sources MAY support these caps */
+#define CAP_AUTHOR                  0x1000
+#define CAP_CAPTION                 0x1001
+#define CAP_FEEDERENABLED           0x1002
+#define CAP_FEEDERLOADED            0x1003
+#define CAP_TIMEDATE                0x1004
+#define CAP_SUPPORTEDCAPS           0x1005
+#define CAP_EXTENDEDCAPS            0x1006
+#define CAP_AUTOFEED                0x1007
+#define CAP_CLEARPAGE               0x1008
+#define CAP_FEEDPAGE                0x1009
+#define CAP_REWINDPAGE              0x100a
+#define CAP_INDICATORS              0x100b   /* Added 1.1 */
+#define CAP_SUPPORTEDCAPSEXT        0x100c   /* Added 1.6 */
+#define CAP_PAPERDETECTABLE         0x100d   /* Added 1.6 */
+#define CAP_UICONTROLLABLE          0x100e   /* Added 1.6 */
+#define CAP_DEVICEONLINE            0x100f   /* Added 1.6 */
+#define CAP_AUTOSCAN                0x1010   /* Added 1.6 */
+#define CAP_THUMBNAILSENABLED       0x1011   /* Added 1.7 */
+#define CAP_DUPLEX                  0x1012   /* Added 1.7 */
+#define CAP_DUPLEXENABLED           0x1013   /* Added 1.7 */
+#define CAP_ENABLEDSUIONLY          0x1014   /* Added 1.7 */
+#define CAP_CUSTOMDSDATA            0x1015   /* Added 1.7 */
+#define CAP_ENDORSER                0x1016   /* Added 1.7 */
+#define CAP_JOBCONTROL              0x1017   /* Added 1.7 */
+#define CAP_ALARMS                  0x1018   /* Added 1.8 */
+#define CAP_ALARMVOLUME             0x1019   /* Added 1.8 */
+#define CAP_AUTOMATICCAPTURE        0x101a   /* Added 1.8 */
+#define CAP_TIMEBEFOREFIRSTCAPTURE  0x101b   /* Added 1.8 */
+#define CAP_TIMEBETWEENCAPTURES     0x101c   /* Added 1.8 */
+#define CAP_CLEARBUFFERS            0x101d   /* Added 1.8 */
+#define CAP_MAXBATCHBUFFERS         0x101e   /* Added 1.8 */
+#define CAP_DEVICETIMEDATE          0x101f   /* Added 1.8 */
+#define CAP_POWERSUPPLY             0x1020   /* Added 1.8 */
+#define CAP_CAMERAPREVIEWUI         0x1021   /* Added 1.8 */
+#define CAP_DEVICEEVENT             0x1022   /* Added 1.8 */
+#define CAP_PAGEMULTIPLEACQUIRE     0x1023   /* Added 1.8 */
+#define CAP_SERIALNUMBER            0x1024   /* Added 1.8 */
+#define CAP_FILESYSTEM              0x1025   /* Added 1.8 */
+#define CAP_PRINTER                 0x1026   /* Added 1.8 */
+#define CAP_PRINTERENABLED          0x1027   /* Added 1.8 */
+#define CAP_PRINTERINDEX            0x1028   /* Added 1.8 */
+#define CAP_PRINTERMODE             0x1029   /* Added 1.8 */
+#define CAP_PRINTERSTRING           0x102a   /* Added 1.8 */
+#define CAP_PRINTERSUFFIX           0x102b   /* Added 1.8 */
+#define CAP_LANGUAGE                0x102c   /* Added 1.8 */
+#define CAP_FEEDERALIGNMENT         0x102d   /* Added 1.8 */
+#define CAP_FEEDERORDER             0x102e   /* Added 1.8 */
+#define CAP_PAPERBINDING            0x102f   /* Added 1.8 */
+#define CAP_REACQUIREALLOWED        0x1030   /* Added 1.8 */
+#define CAP_PASSTHRU                0x1031   /* Added 1.8 */
+#define CAP_BATTERYMINUTES          0x1032   /* Added 1.8 */
+#define CAP_BATTERYPERCENTAGE       0x1033   /* Added 1.8 */
+#define CAP_POWERDOWNTIME           0x1034   /* Added 1.8 */
+
+/* image data sources MAY support these caps */
+#define ICAP_AUTOBRIGHT                   0x1100
+#define ICAP_BRIGHTNESS                   0x1101
+#define ICAP_CONTRAST                     0x1103
+#define ICAP_CUSTHALFTONE                 0x1104
+#define ICAP_EXPOSURETIME                 0x1105
+#define ICAP_FILTER                       0x1106
+#define ICAP_FLASHUSED                    0x1107
+#define ICAP_GAMMA                        0x1108
+#define ICAP_HALFTONES                    0x1109
+#define ICAP_HIGHLIGHT                    0x110a
+#define ICAP_IMAGEFILEFORMAT              0x110c
+#define ICAP_LAMPSTATE                    0x110d
+#define ICAP_LIGHTSOURCE                  0x110e
+#define ICAP_ORIENTATION                  0x1110
+#define ICAP_PHYSICALWIDTH                0x1111
+#define ICAP_PHYSICALHEIGHT               0x1112
+#define ICAP_SHADOW                       0x1113
+#define ICAP_FRAMES                       0x1114
+#define ICAP_XNATIVERESOLUTION            0x1116
+#define ICAP_YNATIVERESOLUTION            0x1117
+#define ICAP_XRESOLUTION                  0x1118
+#define ICAP_YRESOLUTION                  0x1119
+#define ICAP_MAXFRAMES                    0x111a
+#define ICAP_TILES                        0x111b
+#define ICAP_BITORDER                     0x111c
+#define ICAP_CCITTKFACTOR                 0x111d
+#define ICAP_LIGHTPATH                    0x111e
+#define ICAP_PIXELFLAVOR                  0x111f
+#define ICAP_PLANARCHUNKY                 0x1120
+#define ICAP_ROTATION                     0x1121
+#define ICAP_SUPPORTEDSIZES               0x1122
+#define ICAP_THRESHOLD                    0x1123
+#define ICAP_XSCALING                     0x1124
+#define ICAP_YSCALING                     0x1125
+#define ICAP_BITORDERCODES                0x1126
+#define ICAP_PIXELFLAVORCODES             0x1127
+#define ICAP_JPEGPIXELTYPE                0x1128
+#define ICAP_TIMEFILL                     0x112a
+#define ICAP_BITDEPTH                     0x112b
+#define ICAP_BITDEPTHREDUCTION            0x112c  /* Added 1.5 */
+#define ICAP_UNDEFINEDIMAGESIZE           0x112d  /* Added 1.6 */
+#define ICAP_IMAGEDATASET                 0x112e  /* Added 1.7 */
+#define ICAP_EXTIMAGEINFO                 0x112f  /* Added 1.7 */
+#define ICAP_MINIMUMHEIGHT                0x1130  /* Added 1.7 */
+#define ICAP_MINIMUMWIDTH                 0x1131  /* Added 1.7 */
+#define ICAP_AUTODISCARDBLANKPAGES        0x1134  /* Added 1.8 */
+#define ICAP_FLIPROTATION                 0x1136  /* Added 1.8 */
+#define ICAP_BARCODEDETECTIONENABLED      0x1137  /* Added 1.8 */
+#define ICAP_SUPPORTEDBARCODETYPES        0x1138  /* Added 1.8 */
+#define ICAP_BARCODEMAXSEARCHPRIORITIES   0x1139  /* Added 1.8 */
+#define ICAP_BARCODESEARCHPRIORITIES      0x113a  /* Added 1.8 */
+#define ICAP_BARCODESEARCHMODE            0x113b  /* Added 1.8 */
+#define ICAP_BARCODEMAXRETRIES            0x113c  /* Added 1.8 */
+#define ICAP_BARCODETIMEOUT               0x113d  /* Added 1.8 */
+#define ICAP_ZOOMFACTOR                   0x113e  /* Added 1.8 */
+#define ICAP_PATCHCODEDETECTIONENABLED    0x113f  /* Added 1.8 */
+#define ICAP_SUPPORTEDPATCHCODETYPES      0x1140  /* Added 1.8 */
+#define ICAP_PATCHCODEMAXSEARCHPRIORITIES 0x1141  /* Added 1.8 */
+#define ICAP_PATCHCODESEARCHPRIORITIES    0x1142  /* Added 1.8 */
+#define ICAP_PATCHCODESEARCHMODE          0x1143  /* Added 1.8 */
+#define ICAP_PATCHCODEMAXRETRIES          0x1144  /* Added 1.8 */
+#define ICAP_PATCHCODETIMEOUT             0x1145  /* Added 1.8 */
+#define ICAP_FLASHUSED2                   0x1146  /* Added 1.8 */
+#define ICAP_IMAGEFILTER                  0x1147  /* Added 1.8 */
+#define ICAP_NOISEFILTER                  0x1148  /* Added 1.8 */
+#define ICAP_OVERSCAN                     0x1149  /* Added 1.8 */
+#define ICAP_AUTOMATICBORDERDETECTION     0x1150  /* Added 1.8 */
+#define ICAP_AUTOMATICDESKEW              0x1151  /* Added 1.8 */
+#define ICAP_AUTOMATICROTATE              0x1152  /* Added 1.8 */
+
+/* image data sources MAY support these audio caps */
+#define ACAP_AUDIOFILEFORMAT    0x1201  /* Added 1.8 */
+#define ACAP_XFERMECH           0x1202  /* Added 1.8 */
+
+/* ----------------------------------------------------------------------- *\
+
+  Version 1.7:      Following is Extended Image Info Attributes.
+  July 1997
+  KHL
+
+\* ----------------------------------------------------------------------- */
+
+#define TWEI_BARCODEX               0x1200
+#define TWEI_BARCODEY               0x1201
+#define TWEI_BARCODETEXT            0x1202
+#define TWEI_BARCODETYPE            0x1203
+#define TWEI_DESHADETOP             0x1204
+#define TWEI_DESHADELEFT            0x1205
+#define TWEI_DESHADEHEIGHT          0x1206
+#define TWEI_DESHADEWIDTH           0x1207
+#define TWEI_DESHADESIZE            0x1208
+#define TWEI_SPECKLESREMOVED        0x1209
+#define TWEI_HORZLINEXCOORD         0x120A
+#define TWEI_HORZLINEYCOORD         0x120B
+#define TWEI_HORZLINELENGTH         0x120C
+#define TWEI_HORZLINETHICKNESS      0x120D
+#define TWEI_VERTLINEXCOORD         0x120E
+#define TWEI_VERTLINEYCOORD         0x120F
+#define TWEI_VERTLINELENGTH         0x1210
+#define TWEI_VERTLINETHICKNESS      0x1211
+#define TWEI_PATCHCODE              0x1212
+#define TWEI_ENDORSEDTEXT           0x1213
+#define TWEI_FORMCONFIDENCE         0x1214
+#define TWEI_FORMTEMPLATEMATCH      0x1215
+#define TWEI_FORMTEMPLATEPAGEMATCH  0x1216
+#define TWEI_FORMHORZDOCOFFSET      0x1217
+#define TWEI_FORMVERTDOCOFFSET      0x1218
+#define TWEI_BARCODECOUNT           0x1219
+#define TWEI_BARCODECONFIDENCE      0x121A
+#define TWEI_BARCODEROTATION        0x121B
+#define TWEI_BARCODETEXTLENGTH      0x121C
+#define TWEI_DESHADECOUNT           0x121D
+#define TWEI_DESHADEBLACKCOUNTOLD   0x121E
+#define TWEI_DESHADEBLACKCOUNTNEW   0x121F
+#define TWEI_DESHADEBLACKRLMIN      0x1220
+#define TWEI_DESHADEBLACKRLMAX      0x1221
+#define TWEI_DESHADEWHITECOUNTOLD   0x1222
+#define TWEI_DESHADEWHITECOUNTNEW   0x1223
+#define TWEI_DESHADEWHITERLMIN      0x1224
+#define TWEI_DESHADEWHITERLAVE      0x1225
+#define TWEI_DESHADEWHITERLMAX      0x1226
+#define TWEI_BLACKSPECKLESREMOVED   0x1227
+#define TWEI_WHITESPECKLESREMOVED   0x1228
+#define TWEI_HORZLINECOUNT          0x1229
+#define TWEI_VERTLINECOUNT          0x122A
+#define TWEI_DESKEWSTATUS           0x122B
+#define TWEI_SKEWORIGINALANGLE      0x122C
+#define TWEI_SKEWFINALANGLE         0x122D
+#define TWEI_SKEWCONFIDENCE         0x122E
+#define TWEI_SKEWWINDOWX1           0x122F
+#define TWEI_SKEWWINDOWY1           0x1230
+#define TWEI_SKEWWINDOWX2           0x1231
+#define TWEI_SKEWWINDOWY2           0x1232
+#define TWEI_SKEWWINDOWX3           0x1233
+#define TWEI_SKEWWINDOWY3           0x1234
+#define TWEI_SKEWWINDOWX4           0x1235
+#define TWEI_SKEWWINDOWY4           0x1236
+
+#define TWEJ_NONE                   0x0000
+#define TWEJ_MIDSEPARATOR           0x0001
+#define TWEJ_PATCH1                 0x0002
+#define TWEJ_PATCH2                 0x0003
+#define TWEJ_PATCH3                 0x0004
+#define TWEJ_PATCH4                 0x0005
+#define TWEJ_PATCH6                 0x0006
+#define TWEJ_PATCHT                 0x0007
+
+/***************************************************************************
+ *            Return Codes and Condition Codes section                     *
+ ***************************************************************************/
+
+/* Return Codes: DSM_Entry and DS_Entry may return any one of these values. */
+#define TWRC_CUSTOMBASE     0x8000
+
+#define TWRC_SUCCESS          0
+#define TWRC_FAILURE          1 /* Application may get TW_STATUS for info on failure */
+#define TWRC_CHECKSTATUS      2 /* "tried hard"; get status                  */
+#define TWRC_CANCEL           3
+#define TWRC_DSEVENT          4
+#define TWRC_NOTDSEVENT       5
+#define TWRC_XFERDONE         6
+#define TWRC_ENDOFLIST        7 /* After MSG_GETNEXT if nothing left         */
+#define TWRC_INFONOTSUPPORTED 8
+#define TWRC_DATANOTAVAILABLE 9
+
+/* Condition Codes: Application gets these by doing DG_CONTROL DAT_STATUS MSG_GET.  */
+#define TWCC_CUSTOMBASE         0x8000
+
+#define TWCC_SUCCESS            0 /* It worked!                                */
+#define TWCC_BUMMER             1 /* Failure due to unknown causes             */
+#define TWCC_LOWMEMORY          2 /* Not enough memory to perform operation    */
+#define TWCC_NODS               3 /* No Data Source                            */
+#define TWCC_MAXCONNECTIONS     4 /* DS is connected to max possible applications */
+#define TWCC_OPERATIONERROR     5 /* DS or DSM reported error, application shouldn't */
+#define TWCC_BADCAP             6 /* Unknown capability                        */
+#define TWCC_BADPROTOCOL        9 /* Unrecognized MSG DG DAT combination       */
+#define TWCC_BADVALUE           10 /* Data parameter out of range              */
+#define TWCC_SEQERROR           11 /* DG DAT MSG out of expected sequence      */
+#define TWCC_BADDEST            12 /* Unknown destination Application/Source in DSM_Entry */
+#define TWCC_CAPUNSUPPORTED     13 /* Capability not supported by source            */
+#define TWCC_CAPBADOPERATION    14 /* Operation not supported by capability         */
+#define TWCC_CAPSEQERROR        15 /* Capability has dependency on other capability */
+/* Added 1.8 */
+#define TWCC_DENIED             16 /* File System operation is denied (file is protected) */
+#define TWCC_FILEEXISTS         17 /* Operation failed because file already exists. */
+#define TWCC_FILENOTFOUND       18 /* File not found */
+#define TWCC_NOTEMPTY           19 /* Operation failed because directory is not empty */
+#define TWCC_PAPERJAM           20  /* The feeder is jammed */
+#define TWCC_PAPERDOUBLEFEED    21  /* The feeder detected multiple pages */
+#define TWCC_FILEWRITEERROR     22  /* Error writing the file (meant for things like disk full conditions) */
+#define TWCC_CHECKDEVICEONLINE  23  /* The device went offline prior to or during this operation */
+
+
+/* bit patterns: for query the operation that are supported by the data source on a capability */
+/* Application gets these through DG_CONTROL/DAT_CAPABILITY/MSG_QUERYSUPPORT */
+/* Added 1.6 */
+#define TWQC_GET           0x0001
+#define TWQC_SET           0x0002
+#define TWQC_GETDEFAULT    0x0004
+#define TWQC_GETCURRENT    0x0008
+#define TWQC_RESET         0x0010
+
+
+/****************************************************************************
+ * Entry Points                                                             *
+ ****************************************************************************/
+
+/**********************************************************************
+ * Function: DSM_Entry, the only entry point into the Data Source Manager.
+ *
+ * Parameters:
+ *  pOrigin Identifies the source module of the message. This could
+ *          identify an Application, a Source, or the Source Manager.
+ *
+ *  pDest   Identifies the destination module for the message.
+ *          This could identify an application or a data source.
+ *          If this is NULL, the message goes to the Source Manager.
+ *
+ *  DG      The Data Group.
+ *          Example: DG_IMAGE.
+ *
+ *  DAT     The Data Attribute Type.
+ *          Example: DAT_IMAGEMEMXFER.
+ *
+ *  MSG     The message.  Messages are interpreted by the destination module
+ *          with respect to the Data Group and the Data Attribute Type.
+ *          Example: MSG_GET.
+ *
+ *  pData   A pointer to the data structure or variable identified
+ *          by the Data Attribute Type.
+ *          Example: (TW_MEMREF)&ImageMemXfer
+ *                   where ImageMemXfer is a TW_IMAGEMEMXFER structure.
+ *
+ * Returns:
+ *  ReturnCode
+ *         Example: TWRC_SUCCESS.
+ *
+ ********************************************************************/
+
+/* Don't mangle the name "DSM_Entry" if we're compiling in C++! */
+#ifdef  __cplusplus
+extern "C" {
+#endif  /* __cplusplus */
+
+#ifdef  _MSWIN_
+TW_UINT16 FAR PASCAL DSM_Entry( pTW_IDENTITY pOrigin,
+                                pTW_IDENTITY pDest,
+                                TW_UINT32    DG,
+                                TW_UINT16    DAT,
+                                TW_UINT16    MSG,
+                                TW_MEMREF    pData);
+
+typedef TW_UINT16 (FAR PASCAL *DSMENTRYPROC)(pTW_IDENTITY, pTW_IDENTITY,
+                                             TW_UINT32,    TW_UINT16,
+                                             TW_UINT16,    TW_MEMREF);
+#else   /* _MSWIN_ */
+
+/*FAR PASCAL TW_UINT16 DSM_Entry( pTW_IDENTITY pOrigin,
+                                pTW_IDENTITY pDest,
+                                TW_UINT32    DG,
+                                TW_UINT16    DAT,
+                                TW_UINT16    MSG,
+                                TW_MEMREF    pData);*/
+
+typedef TW_UINT16 (*DSMENTRYPROC)(pTW_IDENTITY, pTW_IDENTITY,
+                                  TW_UINT32,    TW_UINT16,
+                                  TW_UINT16,    TW_MEMREF);
+#endif  /* _MSWIN_ */
+
+#ifdef  __cplusplus
+}
+#endif  /* cplusplus */
+
+
+/**********************************************************************
+ * Function: DS_Entry, the entry point provided by a Data Source.
+ *
+ * Parameters:
+ *  pOrigin Identifies the source module of the message. This could
+ *          identify an application or the Data Source Manager.
+ *
+ *  DG      The Data Group.
+ *          Example: DG_IMAGE.
+ *
+ *  DAT     The Data Attribute Type.
+ *          Example: DAT_IMAGEMEMXFER.
+ *
+ *  MSG     The message.  Messages are interpreted by the data source
+ *          with respect to the Data Group and the Data Attribute Type.
+ *          Example: MSG_GET.
+ *
+ *  pData   A pointer to the data structure or variable identified
+ *          by the Data Attribute Type.
+ *          Example: (TW_MEMREF)&ImageMemXfer
+ *                   where ImageMemXfer is a TW_IMAGEMEMXFER structure.
+ *
+ * Returns:
+ *  ReturnCode
+ *          Example: TWRC_SUCCESS.
+ *
+ * Note:
+ *  The DSPROC type is only used by an application when it calls
+ *  a Data Source directly, bypassing the Data Source Manager.
+ *
+ ********************************************************************/
+/* Don't mangle the name "DS_Entry" if we're compiling in C++! */
+#ifdef  __cplusplus
+extern "C" {
+#endif  /* __cplusplus */
+#ifdef  _MSWIN_
+# ifdef _WIN32
+     __declspec(dllexport) TW_UINT16 FAR PASCAL DS_Entry (pTW_IDENTITY pOrigin,
+                                                          TW_UINT32    DG,
+                                                          TW_UINT16    DAT,
+                                                          TW_UINT16    MSG,
+                                                          TW_MEMREF    pData);
+# else   /* _WIN32 */
+     TW_UINT16 FAR PASCAL DS_Entry (pTW_IDENTITY pOrigin,
+                                    TW_UINT32    DG,
+                                    TW_UINT16    DAT,
+                                    TW_UINT16    MSG,
+                                    TW_MEMREF    pData);
+# endif  /* _WIN32 */
+
+  typedef TW_UINT16 (FAR PASCAL *DSENTRYPROC) (pTW_IDENTITY pOrigin,
+                                               TW_UINT32    DG,
+                                               TW_UINT16    DAT,
+                                               TW_UINT16    MSG,
+                                               TW_MEMREF    pData);
+#else   /* _MSWIN_ */
+/*FAR PASCAL TW_UINT16 DS_Entry( pTW_IDENTITY pOrigin,
+                               TW_UINT32    DG,
+                               TW_UINT16    DAT,
+                               TW_UINT16    MSG,
+                               TW_MEMREF    pData);*/
+
+typedef TW_UINT16 (*DSENTRYPROC)(pTW_IDENTITY,
+                                  TW_UINT32,    TW_UINT16,
+                                  TW_UINT16,    TW_MEMREF);
+#endif  /* _MSWIN_ */
+#ifdef  __cplusplus
+}
+#endif  /* cplusplus */
+
+/* The Twain structures must be packed on 2 byte alignment */
+#include "poppack.h"
+
+#endif  /* TWAIN */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/unknwn.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/unknwn.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/unknwn.h	(revision 16410)
@@ -0,0 +1,213 @@
+/*** Autogenerated by WIDL 1.1.10 from ../../../dlls/wined3d/../../include/unknwn.idl - Do not edit ***/
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef __WIDL_UNKNWN_H
+#define __WIDL_UNKNWN_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <wtypes.h>
+#ifndef __IUnknown_FWD_DEFINED__
+#define __IUnknown_FWD_DEFINED__
+typedef interface IUnknown IUnknown;
+#endif
+
+typedef IUnknown *LPUNKNOWN;
+/*****************************************************************************
+ * IUnknown interface
+ */
+#ifndef __IUnknown_INTERFACE_DEFINED__
+#define __IUnknown_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IUnknown, 0x00000000, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IUnknown
+{
+    BEGIN_INTERFACE
+
+    virtual HRESULT STDMETHODCALLTYPE QueryInterface(
+        REFIID riid,
+        void **ppvObject) = 0;
+
+    virtual ULONG STDMETHODCALLTYPE AddRef(
+        ) = 0;
+
+    virtual ULONG STDMETHODCALLTYPE Release(
+        ) = 0;
+
+    END_INTERFACE
+};
+#else
+typedef struct IUnknownVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IUnknown* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IUnknown* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IUnknown* This);
+
+    END_INTERFACE
+} IUnknownVtbl;
+interface IUnknown {
+    CONST_VTBL IUnknownVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IUnknown_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IUnknown_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IUnknown_Release(This) (This)->lpVtbl->Release(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IUnknown_QueryInterface_Proxy(
+    IUnknown* This,
+    REFIID riid,
+    void **ppvObject);
+void __RPC_STUB IUnknown_QueryInterface_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+ULONG STDMETHODCALLTYPE IUnknown_AddRef_Proxy(
+    IUnknown* This);
+void __RPC_STUB IUnknown_AddRef_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+ULONG STDMETHODCALLTYPE IUnknown_Release_Proxy(
+    IUnknown* This);
+void __RPC_STUB IUnknown_Release_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IUnknown_INTERFACE_DEFINED__ */
+
+#ifndef __IClassFactory_FWD_DEFINED__
+#define __IClassFactory_FWD_DEFINED__
+typedef interface IClassFactory IClassFactory;
+#endif
+
+typedef IClassFactory *LPCLASSFACTORY;
+/*****************************************************************************
+ * IClassFactory interface
+ */
+#ifndef __IClassFactory_INTERFACE_DEFINED__
+#define __IClassFactory_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IClassFactory, 0x00000001, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IClassFactory : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE CreateInstance(
+        IUnknown *pUnkOuter,
+        REFIID riid,
+        void **ppvObject) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE LockServer(
+        BOOL fLock) = 0;
+
+};
+#else
+typedef struct IClassFactoryVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IClassFactory* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IClassFactory* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IClassFactory* This);
+
+    /*** IClassFactory methods ***/
+    HRESULT (STDMETHODCALLTYPE *CreateInstance)(
+        IClassFactory* This,
+        IUnknown *pUnkOuter,
+        REFIID riid,
+        void **ppvObject);
+
+    HRESULT (STDMETHODCALLTYPE *LockServer)(
+        IClassFactory* This,
+        BOOL fLock);
+
+    END_INTERFACE
+} IClassFactoryVtbl;
+interface IClassFactory {
+    CONST_VTBL IClassFactoryVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IClassFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IClassFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IClassFactory_Release(This) (This)->lpVtbl->Release(This)
+/*** IClassFactory methods ***/
+#define IClassFactory_CreateInstance(This,pUnkOuter,riid,ppvObject) (This)->lpVtbl->CreateInstance(This,pUnkOuter,riid,ppvObject)
+#define IClassFactory_LockServer(This,fLock) (This)->lpVtbl->LockServer(This,fLock)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IClassFactory_RemoteCreateInstance_Proxy(
+    IClassFactory* This,
+    REFIID riid,
+    IUnknown **ppvObject);
+void __RPC_STUB IClassFactory_RemoteCreateInstance_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IClassFactory_RemoteLockServer_Proxy(
+    IClassFactory* This,
+    BOOL fLock);
+void __RPC_STUB IClassFactory_RemoteLockServer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IClassFactory_CreateInstance_Proxy(
+    IClassFactory* This,
+    IUnknown *pUnkOuter,
+    REFIID riid,
+    void **ppvObject);
+HRESULT __RPC_STUB IClassFactory_CreateInstance_Stub(
+    IClassFactory* This,
+    REFIID riid,
+    IUnknown **ppvObject);
+HRESULT CALLBACK IClassFactory_LockServer_Proxy(
+    IClassFactory* This,
+    BOOL fLock);
+HRESULT __RPC_STUB IClassFactory_LockServer_Stub(
+    IClassFactory* This,
+    BOOL fLock);
+
+#endif  /* __IClassFactory_INTERFACE_DEFINED__ */
+
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WIDL_UNKNWN_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/unknwn.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/unknwn.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/unknwn.idl	(revision 16410)
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2002 Ove Kaaven
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef DO_NO_IMPORTS
+import "wtypes.idl";
+#endif
+
+/* Interfaces */
+
+[
+  local,
+  object,
+  uuid(00000000-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface IUnknown
+{
+  typedef [unique] IUnknown *LPUNKNOWN;
+
+  HRESULT QueryInterface(
+    [in] REFIID riid,
+    [out, iid_is(riid)] void **ppvObject);
+  ULONG AddRef();
+  ULONG Release();
+}
+
+[
+  object,
+  uuid(00000001-0000-0000-C000-000000000046),
+  pointer_default(unique)
+]
+interface IClassFactory : IUnknown
+{
+  typedef [unique] IClassFactory *LPCLASSFACTORY;
+
+  [local]
+  HRESULT CreateInstance(
+    [in, unique] IUnknown *pUnkOuter,
+    [in] REFIID riid,
+    [out, iid_is(riid)] void **ppvObject);
+
+  [call_as(CreateInstance)]
+  HRESULT RemoteCreateInstance(
+    [in] REFIID riid,
+    [out, iid_is(riid)] IUnknown **ppvObject);
+
+  [local]
+  HRESULT LockServer(
+    [in] BOOL fLock);
+
+  [call_as(LockServer)]
+  HRESULT RemoteLockServer(
+    [in] BOOL fLock);
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/urlhist.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/urlhist.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/urlhist.idl	(revision 16410)
@@ -0,0 +1,139 @@
+/*
+ * Copyright 2006 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "objidl.idl";
+import "oleidl.idl";
+import "oaidl.idl";
+import "docobj.idl";
+import "servprov.idl";
+
+typedef enum _ADDURL_FLAG
+{
+    ADDURL_FIRST                = 0,
+    ADDURL_ADDTOHISTORYANDCACHE = 0,
+    ADDURL_ADDTOCACHE           = 1,
+    ADDURL_Max                  = 0x7fffffff
+} ADDURL_FLAG;
+
+/*****************************************************************************
+ *    IEnumSTATURL interface
+ */
+[
+    object,
+    uuid(3c374a42-bae4-11cf-bf7d-00aa006946ee),
+    pointer_default(unique)
+]
+interface IEnumSTATURL : IUnknown
+{
+    typedef [unique] IEnumSTATURL *LPENUMSTATURL;
+	
+    typedef struct _STATURL
+    {
+        DWORD cbSize;
+        LPWSTR pwcsUrl;
+        LPWSTR pwcsTitle;
+        FILETIME ftLastVisited;
+        FILETIME ftLastUpdated;
+        FILETIME ftExpires;
+        DWORD dwFlags;
+    } STATURL, *LPSTATURL;
+
+    HRESULT Next(
+        [in] ULONG celt,
+        [in, out] LPSTATURL rgelt,
+        [in, out] ULONG *pceltFetched);
+
+    HRESULT Skip([in] ULONG celt);
+    HRESULT Reset();
+    HRESULT Clone([out] IEnumSTATURL **ppenum);
+
+    HRESULT SetFilter(
+        [in] LPCOLESTR poszFilter,
+        [in] DWORD dwFlags);
+}
+
+/*****************************************************************************
+ *    IUrlHistoryStg interface
+ */
+[
+    object,
+    uuid(3c374a41-bae4-11cf-bf7d-00aa006946ee),
+    pointer_default(unique)
+]
+interface IUrlHistoryStg : IUnknown
+{
+    typedef [unique] IUrlHistoryStg *LPURLHISTORYSTG;
+	
+    HRESULT AddUrl(
+        [in] LPCOLESTR pocsUrl,
+        [in, unique] LPCOLESTR pocsTitle,
+        [in] DWORD dwFlags);
+
+    HRESULT DeleteUrl(
+        [in] LPCOLESTR pocsUrl,
+        [in] DWORD dwFlags);
+
+    HRESULT QueryUrl(
+        [in] LPCOLESTR pocsUrl,
+        [in] DWORD dwFlags,
+        [in, out, unique] LPSTATURL lpSTATURL);
+	
+    HRESULT BindToObject(
+        [in] LPCOLESTR pocsUrl,
+        [in] REFIID riid,
+        [out, iid_is(riid)] void **ppvOut);
+
+    HRESULT EnumUrls(
+        [out] IEnumSTATURL **ppEnum);	
+}
+
+/*****************************************************************************
+ *    IUrlHistoryStg2 interface
+ */
+[
+    object,
+    uuid(afa0dc11-c313-11d0-831a-00c04fd5ae38),
+    pointer_default(unique)
+]
+interface IUrlHistoryStg2 : IUrlHistoryStg
+{
+    typedef [unique] IUrlHistoryStg2 *LPURLHISTORYSTG2;
+
+    HRESULT AddUrlAndNotify(
+        [in] LPCOLESTR pocsUrl,
+        [in,unique] LPCOLESTR pocsTitle,
+        [in] DWORD dwFlags,
+        [in] BOOL fWriteHistory,
+        [in] IOleCommandTarget *poctNotify,
+        [in, unique] IUnknown *punkISFolder);
+
+    HRESULT ClearHistory();
+}
+
+/*****************************************************************************
+ *    IUrlHistoryNotify interface
+ */
+[
+    object,
+    uuid(bc40bec1-c493-11d0-831b-00C04fd5ae38),
+    pointer_default(unique)
+]
+interface IUrlHistoryNotify : IOleCommandTarget
+{
+    typedef [unique] IUrlHistoryNotify *LPURLHISTORYNOTIFY;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/urlmon.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/urlmon.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/urlmon.h	(revision 16410)
@@ -0,0 +1,4612 @@
+/*** Autogenerated by WIDL 1.1.10 from ../../../dlls/wined3d/../../include/urlmon.idl - Do not edit ***/
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef __WIDL_URLMON_H
+#define __WIDL_URLMON_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <objidl.h>
+#include <oleidl.h>
+#include <servprov.h>
+#include <msxml.h>
+#ifdef WINE_NO_UNICODE_MACROS
+#undef GetUserName
+#endif
+#ifndef __IInternetProtocolSink_FWD_DEFINED__
+#define __IInternetProtocolSink_FWD_DEFINED__
+typedef interface IInternetProtocolSink IInternetProtocolSink;
+#endif
+
+#ifndef __IInternet_FWD_DEFINED__
+#define __IInternet_FWD_DEFINED__
+typedef interface IInternet IInternet;
+#endif
+
+typedef IInternet *LPIINTERNET;
+/*****************************************************************************
+ * IInternet interface
+ */
+#ifndef __IInternet_INTERFACE_DEFINED__
+#define __IInternet_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInternet, 0x79eac9e0, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IInternet : public IUnknown
+{
+};
+#else
+typedef struct IInternetVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInternet* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInternet* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInternet* This);
+
+    END_INTERFACE
+} IInternetVtbl;
+interface IInternet {
+    CONST_VTBL IInternetVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IInternet_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInternet_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInternet_Release(This) (This)->lpVtbl->Release(This)
+#endif
+
+#endif
+
+
+#endif  /* __IInternet_INTERFACE_DEFINED__ */
+
+#ifndef __IBinding_FWD_DEFINED__
+#define __IBinding_FWD_DEFINED__
+typedef interface IBinding IBinding;
+#endif
+
+typedef IBinding *LPBINDING;
+/*****************************************************************************
+ * IBinding interface
+ */
+#ifndef __IBinding_INTERFACE_DEFINED__
+#define __IBinding_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBinding, 0x79eac9c0, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IBinding : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Abort(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Suspend(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Resume(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetPriority(
+        LONG nPriority) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPriority(
+        LONG *pnPriority) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetBindResult(
+        CLSID *pclsidProtocol,
+        DWORD *pdwResult,
+        LPOLESTR *pszResult,
+        DWORD *pdwReserved) = 0;
+
+};
+#else
+typedef struct IBindingVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBinding* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBinding* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBinding* This);
+
+    /*** IBinding methods ***/
+    HRESULT (STDMETHODCALLTYPE *Abort)(
+        IBinding* This);
+
+    HRESULT (STDMETHODCALLTYPE *Suspend)(
+        IBinding* This);
+
+    HRESULT (STDMETHODCALLTYPE *Resume)(
+        IBinding* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetPriority)(
+        IBinding* This,
+        LONG nPriority);
+
+    HRESULT (STDMETHODCALLTYPE *GetPriority)(
+        IBinding* This,
+        LONG *pnPriority);
+
+    HRESULT (STDMETHODCALLTYPE *GetBindResult)(
+        IBinding* This,
+        CLSID *pclsidProtocol,
+        DWORD *pdwResult,
+        LPOLESTR *pszResult,
+        DWORD *pdwReserved);
+
+    END_INTERFACE
+} IBindingVtbl;
+interface IBinding {
+    CONST_VTBL IBindingVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IBinding_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBinding_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBinding_Release(This) (This)->lpVtbl->Release(This)
+/*** IBinding methods ***/
+#define IBinding_Abort(This) (This)->lpVtbl->Abort(This)
+#define IBinding_Suspend(This) (This)->lpVtbl->Suspend(This)
+#define IBinding_Resume(This) (This)->lpVtbl->Resume(This)
+#define IBinding_SetPriority(This,nPriority) (This)->lpVtbl->SetPriority(This,nPriority)
+#define IBinding_GetPriority(This,pnPriority) (This)->lpVtbl->GetPriority(This,pnPriority)
+#define IBinding_GetBindResult(This,pclsidProtocol,pdwResult,pszResult,pdwReserved) (This)->lpVtbl->GetBindResult(This,pclsidProtocol,pdwResult,pszResult,pdwReserved)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBinding_Abort_Proxy(
+    IBinding* This);
+void __RPC_STUB IBinding_Abort_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBinding_Suspend_Proxy(
+    IBinding* This);
+void __RPC_STUB IBinding_Suspend_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBinding_Resume_Proxy(
+    IBinding* This);
+void __RPC_STUB IBinding_Resume_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBinding_SetPriority_Proxy(
+    IBinding* This,
+    LONG nPriority);
+void __RPC_STUB IBinding_SetPriority_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBinding_GetPriority_Proxy(
+    IBinding* This,
+    LONG *pnPriority);
+void __RPC_STUB IBinding_GetPriority_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBinding_RemoteGetBindResult_Proxy(
+    IBinding* This,
+    CLSID *pclsidProtocol,
+    DWORD *pdwResult,
+    LPOLESTR *pszResult,
+    DWORD dwReserved);
+void __RPC_STUB IBinding_RemoteGetBindResult_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IBinding_GetBindResult_Proxy(
+    IBinding* This,
+    CLSID *pclsidProtocol,
+    DWORD *pdwResult,
+    LPOLESTR *pszResult,
+    DWORD *pdwReserved);
+HRESULT __RPC_STUB IBinding_GetBindResult_Stub(
+    IBinding* This,
+    CLSID *pclsidProtocol,
+    DWORD *pdwResult,
+    LPOLESTR *pszResult,
+    DWORD dwReserved);
+
+#endif  /* __IBinding_INTERFACE_DEFINED__ */
+
+#ifndef __IBindStatusCallback_FWD_DEFINED__
+#define __IBindStatusCallback_FWD_DEFINED__
+typedef interface IBindStatusCallback IBindStatusCallback;
+#endif
+
+typedef IBindStatusCallback *LPBINDSTATUSCALLBACK;
+typedef enum __WIDL_urlmon_generated_name_00000000 {
+    BINDVERB_GET = 0x0,
+    BINDVERB_POST = 0x1,
+    BINDVERB_PUT = 0x2,
+    BINDVERB_CUSTOM = 0x3
+} BINDVERB;
+typedef enum __WIDL_urlmon_generated_name_00000001 {
+    BINDINFOF_URLENCODESTGMEDDATA = 0x1,
+    BINDINFOF_URLENCODEDEXTRAINFO = 0x2
+} BINDINFOF;
+typedef enum __WIDL_urlmon_generated_name_00000002 {
+    BINDF_ASYNCHRONOUS = 0x1,
+    BINDF_ASYNCSTORAGE = 0x2,
+    BINDF_NOPROGRESSIVERENDERING = 0x4,
+    BINDF_OFFLINEOPERATION = 0x8,
+    BINDF_GETNEWESTVERSION = 0x10,
+    BINDF_NOWRITECACHE = 0x20,
+    BINDF_NEEDFILE = 0x40,
+    BINDF_PULLDATA = 0x80,
+    BINDF_IGNORESECURITYPROBLEM = 0x100,
+    BINDF_RESYNCHRONIZE = 0x200,
+    BINDF_HYPERLINK = 0x400,
+    BINDF_NO_UI = 0x800,
+    BINDF_SILENTOPERATION = 0x1000,
+    BINDF_PRAGMA_NO_CACHE = 0x2000,
+    BINDF_GETCLASSOBJECT = 0x4000,
+    BINDF_RESERVED_1 = 0x8000,
+    BINDF_FREE_THREADED = 0x10000,
+    BINDF_DIRECT_READ = 0x20000,
+    BINDF_FORMS_SUBMIT = 0x40000,
+    BINDF_GETFROMCACHE_IF_NET_FAIL = 0x80000,
+    BINDF_FROMURLMON = 0x100000,
+    BINDF_FWD_BACK = 0x200000,
+    BINDF_PREFERDEFAULTHANDLER = 0x400000,
+    BINDF_ENFORCERESTRICTED = 0x800000
+} BINDF;
+typedef enum __WIDL_urlmon_generated_name_00000003 {
+    URL_ENCODING_NONE = 0x0,
+    URL_ENCODING_ENABLE_UTF8 = 0x10000000,
+    URL_ENCODING_DISABLE_UTF8 = 0x20000000
+} URL_ENCODING;
+typedef struct _tagBINDINFO {
+    ULONG cbSize;
+    LPWSTR szExtraInfo;
+    STGMEDIUM stgmedData;
+    DWORD grfBindInfoF;
+    DWORD dwBindVerb;
+    LPWSTR szCustomVerb;
+    DWORD cbstgmedData;
+    DWORD dwOptions;
+    DWORD dwOptionsFlags;
+    DWORD dwCodePage;
+    SECURITY_ATTRIBUTES securityAttributes;
+    IID iid;
+    IUnknown *pUnk;
+    DWORD dwReserved;
+} BINDINFO;
+typedef struct _REMSECURITY_ATTRIBUTES {
+    DWORD nLength;
+    DWORD lpSecurityDescriptor;
+    BOOL bInheritHandle;
+} REMSECURITY_ATTRIBUTES;
+typedef struct _REMSECURITY_ATTRIBUTES *PREMSECURITY_ATTRIBUTES;
+typedef struct _REMSECURITY_ATTRIBUTES *LPREMSECURITY_ATTRIBUTES;
+typedef struct _tagRemBINDINFO {
+    ULONG cbSize;
+    LPWSTR szExtraInfo;
+    DWORD grfBindInfoF;
+    DWORD dwBindVerb;
+    LPWSTR szCustomVerb;
+    DWORD cbstgmedData;
+    DWORD dwOptions;
+    DWORD dwOptionsFlags;
+    DWORD dwCodePage;
+    REMSECURITY_ATTRIBUTES securityAttributes;
+    IID iid;
+    IUnknown *pUnk;
+    DWORD dwReserved;
+} RemBINDINFO;
+typedef struct tagRemFORMATETC {
+    DWORD cfFormat;
+    DWORD ptd;
+    DWORD dwAspect;
+    LONG lindex;
+    DWORD tymed;
+} RemFORMATETC;
+typedef struct tagRemFORMATETC *LPREMFORMATETC;
+typedef enum __WIDL_urlmon_generated_name_00000004 {
+    BSCF_FIRSTDATANOTIFICATION = 0x1,
+    BSCF_INTERMEDIATEDATANOTIFICATION = 0x2,
+    BSCF_LASTDATANOTIFICATION = 0x4,
+    BSCF_DATAFULLYAVAILABLE = 0x8,
+    BSCF_AVAILABLEDATASIZEUNKNOWN = 0x10
+} BSCF;
+typedef enum BINDSTATUS {
+    BINDSTATUS_FINDINGRESOURCE = 1,
+    BINDSTATUS_CONNECTING = 2,
+    BINDSTATUS_REDIRECTING = 3,
+    BINDSTATUS_BEGINDOWNLOADDATA = 4,
+    BINDSTATUS_DOWNLOADINGDATA = 5,
+    BINDSTATUS_ENDDOWNLOADDATA = 6,
+    BINDSTATUS_BEGINDOWNLOADCOMPONENTS = 7,
+    BINDSTATUS_INSTALLINGCOMPONENTS = 8,
+    BINDSTATUS_ENDDOWNLOADCOMPONENTS = 9,
+    BINDSTATUS_USINGCACHEDCOPY = 10,
+    BINDSTATUS_SENDINGREQUEST = 11,
+    BINDSTATUS_CLASSIDAVAILABLE = 12,
+    BINDSTATUS_MIMETYPEAVAILABLE = 13,
+    BINDSTATUS_CACHEFILENAMEAVAILABLE = 14,
+    BINDSTATUS_BEGINSYNCOPERATION = 15,
+    BINDSTATUS_ENDSYNCOPERATION = 16,
+    BINDSTATUS_BEGINUPLOADDATA = 17,
+    BINDSTATUS_UPLOADINGDATA = 18,
+    BINDSTATUS_ENDUPLOADINGDATA = 19,
+    BINDSTATUS_PROTOCOLCLASSID = 20,
+    BINDSTATUS_ENCODING = 21,
+    BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE = 22,
+    BINDSTATUS_CLASSINSTALLLOCATION = 23,
+    BINDSTATUS_DECODING = 24,
+    BINDSTATUS_LOADINGMIMEHANDLER = 25,
+    BINDSTATUS_CONTENTDISPOSITIONATTACH = 26,
+    BINDSTATUS_FILTERREPORTMIMETYPE = 27,
+    BINDSTATUS_CLSIDCANINSTANTIATE = 28,
+    BINDSTATUS_IUNKNOWNAVAILABLE = 29,
+    BINDSTATUS_DIRECTBIND = 30,
+    BINDSTATUS_RAWMIMETYPE = 31,
+    BINDSTATUS_PROXYDETECTING = 32,
+    BINDSTATUS_ACCEPTRANGES = 33,
+    BINDSTATUS_COOKIE_SENT = 34,
+    BINDSTATUS_COMPACT_POLICY_RECEIVED = 35,
+    BINDSTATUS_COOKIE_SUPPRESSED = 36,
+    BINDSTATUS_COOKIE_STATE_UNKNOWN = 37,
+    BINDSTATUS_COOKIE_STATE_ACCEPT = 38,
+    BINDSTATUS_COOKIE_STATE_REJECT = 39,
+    BINDSTATUS_COOKIE_STATE_PROMPT = 40,
+    BINDSTATUS_COOKIE_STATE_LEASH = 41,
+    BINDSTATUS_COOKIE_STATE_DOWNGRADE = 42,
+    BINDSTATUS_POLICY_HREF = 43,
+    BINDSTATUS_P3P_HEADER = 44,
+    BINDSTATUS_SESSION_COOKIE_RECEIVED = 45,
+    BINDSTATUS_PERSISTENT_COOKIE_RECEIVED = 46,
+    BINDSTATUS_SESSION_COOKIES_ALLOWED = 47,
+    BINDSTATUS_CACHECONTROL = 48,
+    BINDSTATUS_CONTENTDISPOSITIONFILENAME = 49,
+    BINDSTATUS_MIMETEXTPLAINMISMATCH = 50,
+    BINDSTATUS_PUBLISHERAVAILABLE = 51,
+    BINDSTATUS_DISPLAYNAMEAVAILABLE = 52
+} BINDSTATUS;
+/*****************************************************************************
+ * IBindStatusCallback interface
+ */
+#ifndef __IBindStatusCallback_INTERFACE_DEFINED__
+#define __IBindStatusCallback_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBindStatusCallback, 0x79eac9c1, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IBindStatusCallback : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE OnStartBinding(
+        DWORD dwReserved,
+        IBinding *pib) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPriority(
+        LONG *pnPriority) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnLowResource(
+        DWORD reserved) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnProgress(
+        ULONG ulProgress,
+        ULONG ulProgressMax,
+        ULONG ulStatusCode,
+        LPCWSTR szStatusText) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnStopBinding(
+        HRESULT hresult,
+        LPCWSTR szError) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetBindInfo(
+        DWORD *grfBINDF,
+        BINDINFO *pbindinfo) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnDataAvailable(
+        DWORD grfBSCF,
+        DWORD dwSize,
+        FORMATETC *pformatetc,
+        STGMEDIUM *pstgmed) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnObjectAvailable(
+        REFIID riid,
+        IUnknown *punk) = 0;
+
+};
+#else
+typedef struct IBindStatusCallbackVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBindStatusCallback* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBindStatusCallback* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBindStatusCallback* This);
+
+    /*** IBindStatusCallback methods ***/
+    HRESULT (STDMETHODCALLTYPE *OnStartBinding)(
+        IBindStatusCallback* This,
+        DWORD dwReserved,
+        IBinding *pib);
+
+    HRESULT (STDMETHODCALLTYPE *GetPriority)(
+        IBindStatusCallback* This,
+        LONG *pnPriority);
+
+    HRESULT (STDMETHODCALLTYPE *OnLowResource)(
+        IBindStatusCallback* This,
+        DWORD reserved);
+
+    HRESULT (STDMETHODCALLTYPE *OnProgress)(
+        IBindStatusCallback* This,
+        ULONG ulProgress,
+        ULONG ulProgressMax,
+        ULONG ulStatusCode,
+        LPCWSTR szStatusText);
+
+    HRESULT (STDMETHODCALLTYPE *OnStopBinding)(
+        IBindStatusCallback* This,
+        HRESULT hresult,
+        LPCWSTR szError);
+
+    HRESULT (STDMETHODCALLTYPE *GetBindInfo)(
+        IBindStatusCallback* This,
+        DWORD *grfBINDF,
+        BINDINFO *pbindinfo);
+
+    HRESULT (STDMETHODCALLTYPE *OnDataAvailable)(
+        IBindStatusCallback* This,
+        DWORD grfBSCF,
+        DWORD dwSize,
+        FORMATETC *pformatetc,
+        STGMEDIUM *pstgmed);
+
+    HRESULT (STDMETHODCALLTYPE *OnObjectAvailable)(
+        IBindStatusCallback* This,
+        REFIID riid,
+        IUnknown *punk);
+
+    END_INTERFACE
+} IBindStatusCallbackVtbl;
+interface IBindStatusCallback {
+    CONST_VTBL IBindStatusCallbackVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IBindStatusCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBindStatusCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBindStatusCallback_Release(This) (This)->lpVtbl->Release(This)
+/*** IBindStatusCallback methods ***/
+#define IBindStatusCallback_OnStartBinding(This,dwReserved,pib) (This)->lpVtbl->OnStartBinding(This,dwReserved,pib)
+#define IBindStatusCallback_GetPriority(This,pnPriority) (This)->lpVtbl->GetPriority(This,pnPriority)
+#define IBindStatusCallback_OnLowResource(This,reserved) (This)->lpVtbl->OnLowResource(This,reserved)
+#define IBindStatusCallback_OnProgress(This,ulProgress,ulProgressMax,ulStatusCode,szStatusText) (This)->lpVtbl->OnProgress(This,ulProgress,ulProgressMax,ulStatusCode,szStatusText)
+#define IBindStatusCallback_OnStopBinding(This,hresult,szError) (This)->lpVtbl->OnStopBinding(This,hresult,szError)
+#define IBindStatusCallback_GetBindInfo(This,grfBINDF,pbindinfo) (This)->lpVtbl->GetBindInfo(This,grfBINDF,pbindinfo)
+#define IBindStatusCallback_OnDataAvailable(This,grfBSCF,dwSize,pformatetc,pstgmed) (This)->lpVtbl->OnDataAvailable(This,grfBSCF,dwSize,pformatetc,pstgmed)
+#define IBindStatusCallback_OnObjectAvailable(This,riid,punk) (This)->lpVtbl->OnObjectAvailable(This,riid,punk)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBindStatusCallback_OnStartBinding_Proxy(
+    IBindStatusCallback* This,
+    DWORD dwReserved,
+    IBinding *pib);
+void __RPC_STUB IBindStatusCallback_OnStartBinding_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBindStatusCallback_GetPriority_Proxy(
+    IBindStatusCallback* This,
+    LONG *pnPriority);
+void __RPC_STUB IBindStatusCallback_GetPriority_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBindStatusCallback_OnLowResource_Proxy(
+    IBindStatusCallback* This,
+    DWORD reserved);
+void __RPC_STUB IBindStatusCallback_OnLowResource_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBindStatusCallback_OnProgress_Proxy(
+    IBindStatusCallback* This,
+    ULONG ulProgress,
+    ULONG ulProgressMax,
+    ULONG ulStatusCode,
+    LPCWSTR szStatusText);
+void __RPC_STUB IBindStatusCallback_OnProgress_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBindStatusCallback_OnStopBinding_Proxy(
+    IBindStatusCallback* This,
+    HRESULT hresult,
+    LPCWSTR szError);
+void __RPC_STUB IBindStatusCallback_OnStopBinding_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBindStatusCallback_RemoteGetBindInfo_Proxy(
+    IBindStatusCallback* This,
+    DWORD *grfBINDF,
+    RemBINDINFO *pbindinfo,
+    RemSTGMEDIUM *pstgmed);
+void __RPC_STUB IBindStatusCallback_RemoteGetBindInfo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBindStatusCallback_RemoteOnDataAvailable_Proxy(
+    IBindStatusCallback* This,
+    DWORD grfBSCF,
+    DWORD dwSize,
+    RemFORMATETC *pformatetc,
+    RemSTGMEDIUM *pstgmed);
+void __RPC_STUB IBindStatusCallback_RemoteOnDataAvailable_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBindStatusCallback_OnObjectAvailable_Proxy(
+    IBindStatusCallback* This,
+    REFIID riid,
+    IUnknown *punk);
+void __RPC_STUB IBindStatusCallback_OnObjectAvailable_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IBindStatusCallback_GetBindInfo_Proxy(
+    IBindStatusCallback* This,
+    DWORD *grfBINDF,
+    BINDINFO *pbindinfo);
+HRESULT __RPC_STUB IBindStatusCallback_GetBindInfo_Stub(
+    IBindStatusCallback* This,
+    DWORD *grfBINDF,
+    RemBINDINFO *pbindinfo,
+    RemSTGMEDIUM *pstgmed);
+HRESULT CALLBACK IBindStatusCallback_OnDataAvailable_Proxy(
+    IBindStatusCallback* This,
+    DWORD grfBSCF,
+    DWORD dwSize,
+    FORMATETC *pformatetc,
+    STGMEDIUM *pstgmed);
+HRESULT __RPC_STUB IBindStatusCallback_OnDataAvailable_Stub(
+    IBindStatusCallback* This,
+    DWORD grfBSCF,
+    DWORD dwSize,
+    RemFORMATETC *pformatetc,
+    RemSTGMEDIUM *pstgmed);
+
+#endif  /* __IBindStatusCallback_INTERFACE_DEFINED__ */
+
+#ifndef __IAuthenticate_FWD_DEFINED__
+#define __IAuthenticate_FWD_DEFINED__
+typedef interface IAuthenticate IAuthenticate;
+#endif
+
+typedef IAuthenticate *LPAUTHENTICATION;
+/*****************************************************************************
+ * IAuthenticate interface
+ */
+#ifndef __IAuthenticate_INTERFACE_DEFINED__
+#define __IAuthenticate_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IAuthenticate, 0x79eac9d0, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IAuthenticate : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Authenticate(
+        HWND *phwnd,
+        LPWSTR *pszUsername,
+        LPWSTR *pszPassword) = 0;
+
+};
+#else
+typedef struct IAuthenticateVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IAuthenticate* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IAuthenticate* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IAuthenticate* This);
+
+    /*** IAuthenticate methods ***/
+    HRESULT (STDMETHODCALLTYPE *Authenticate)(
+        IAuthenticate* This,
+        HWND *phwnd,
+        LPWSTR *pszUsername,
+        LPWSTR *pszPassword);
+
+    END_INTERFACE
+} IAuthenticateVtbl;
+interface IAuthenticate {
+    CONST_VTBL IAuthenticateVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IAuthenticate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAuthenticate_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAuthenticate_Release(This) (This)->lpVtbl->Release(This)
+/*** IAuthenticate methods ***/
+#define IAuthenticate_Authenticate(This,phwnd,pszUsername,pszPassword) (This)->lpVtbl->Authenticate(This,phwnd,pszUsername,pszPassword)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IAuthenticate_Authenticate_Proxy(
+    IAuthenticate* This,
+    HWND *phwnd,
+    LPWSTR *pszUsername,
+    LPWSTR *pszPassword);
+void __RPC_STUB IAuthenticate_Authenticate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IAuthenticate_INTERFACE_DEFINED__ */
+
+#ifndef __IHttpNegotiate_FWD_DEFINED__
+#define __IHttpNegotiate_FWD_DEFINED__
+typedef interface IHttpNegotiate IHttpNegotiate;
+#endif
+
+typedef IHttpNegotiate *LPHTTPNEGOTIATE;
+/*****************************************************************************
+ * IHttpNegotiate interface
+ */
+#ifndef __IHttpNegotiate_INTERFACE_DEFINED__
+#define __IHttpNegotiate_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IHttpNegotiate, 0x79eac9d2, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IHttpNegotiate : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE BeginningTransaction(
+        LPCWSTR szURL,
+        LPCWSTR szHeaders,
+        DWORD dwReserved,
+        LPWSTR *pszAdditionalHeaders) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnResponse(
+        DWORD dwResponseCode,
+        LPCWSTR szResponseHeaders,
+        LPCWSTR szRequestHeaders,
+        LPWSTR *pszAdditionalRequestHeaders) = 0;
+
+};
+#else
+typedef struct IHttpNegotiateVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IHttpNegotiate* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IHttpNegotiate* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IHttpNegotiate* This);
+
+    /*** IHttpNegotiate methods ***/
+    HRESULT (STDMETHODCALLTYPE *BeginningTransaction)(
+        IHttpNegotiate* This,
+        LPCWSTR szURL,
+        LPCWSTR szHeaders,
+        DWORD dwReserved,
+        LPWSTR *pszAdditionalHeaders);
+
+    HRESULT (STDMETHODCALLTYPE *OnResponse)(
+        IHttpNegotiate* This,
+        DWORD dwResponseCode,
+        LPCWSTR szResponseHeaders,
+        LPCWSTR szRequestHeaders,
+        LPWSTR *pszAdditionalRequestHeaders);
+
+    END_INTERFACE
+} IHttpNegotiateVtbl;
+interface IHttpNegotiate {
+    CONST_VTBL IHttpNegotiateVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IHttpNegotiate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IHttpNegotiate_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IHttpNegotiate_Release(This) (This)->lpVtbl->Release(This)
+/*** IHttpNegotiate methods ***/
+#define IHttpNegotiate_BeginningTransaction(This,szURL,szHeaders,dwReserved,pszAdditionalHeaders) (This)->lpVtbl->BeginningTransaction(This,szURL,szHeaders,dwReserved,pszAdditionalHeaders)
+#define IHttpNegotiate_OnResponse(This,dwResponseCode,szResponseHeaders,szRequestHeaders,pszAdditionalRequestHeaders) (This)->lpVtbl->OnResponse(This,dwResponseCode,szResponseHeaders,szRequestHeaders,pszAdditionalRequestHeaders)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IHttpNegotiate_BeginningTransaction_Proxy(
+    IHttpNegotiate* This,
+    LPCWSTR szURL,
+    LPCWSTR szHeaders,
+    DWORD dwReserved,
+    LPWSTR *pszAdditionalHeaders);
+void __RPC_STUB IHttpNegotiate_BeginningTransaction_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IHttpNegotiate_OnResponse_Proxy(
+    IHttpNegotiate* This,
+    DWORD dwResponseCode,
+    LPCWSTR szResponseHeaders,
+    LPCWSTR szRequestHeaders,
+    LPWSTR *pszAdditionalRequestHeaders);
+void __RPC_STUB IHttpNegotiate_OnResponse_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IHttpNegotiate_INTERFACE_DEFINED__ */
+
+#ifndef __IHttpNegotiate2_FWD_DEFINED__
+#define __IHttpNegotiate2_FWD_DEFINED__
+typedef interface IHttpNegotiate2 IHttpNegotiate2;
+#endif
+
+typedef IHttpNegotiate2 *LPHTTPNEGOTIATE2;
+/*****************************************************************************
+ * IHttpNegotiate2 interface
+ */
+#ifndef __IHttpNegotiate2_INTERFACE_DEFINED__
+#define __IHttpNegotiate2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IHttpNegotiate2, 0x4f9f9fcb, 0xe0f4, 0x48eb, 0xb7,0xab, 0xfa,0x2e,0xa9,0x36,0x5c,0xb4);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IHttpNegotiate2 : public IHttpNegotiate
+{
+    virtual HRESULT STDMETHODCALLTYPE GetRootSecurityId(
+        BYTE *pbSecurityId,
+        DWORD *pcbSecurityId,
+        DWORD_PTR dwReserved) = 0;
+
+};
+#else
+typedef struct IHttpNegotiate2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IHttpNegotiate2* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IHttpNegotiate2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IHttpNegotiate2* This);
+
+    /*** IHttpNegotiate methods ***/
+    HRESULT (STDMETHODCALLTYPE *BeginningTransaction)(
+        IHttpNegotiate2* This,
+        LPCWSTR szURL,
+        LPCWSTR szHeaders,
+        DWORD dwReserved,
+        LPWSTR *pszAdditionalHeaders);
+
+    HRESULT (STDMETHODCALLTYPE *OnResponse)(
+        IHttpNegotiate2* This,
+        DWORD dwResponseCode,
+        LPCWSTR szResponseHeaders,
+        LPCWSTR szRequestHeaders,
+        LPWSTR *pszAdditionalRequestHeaders);
+
+    /*** IHttpNegotiate2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetRootSecurityId)(
+        IHttpNegotiate2* This,
+        BYTE *pbSecurityId,
+        DWORD *pcbSecurityId,
+        DWORD_PTR dwReserved);
+
+    END_INTERFACE
+} IHttpNegotiate2Vtbl;
+interface IHttpNegotiate2 {
+    CONST_VTBL IHttpNegotiate2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IHttpNegotiate2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IHttpNegotiate2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IHttpNegotiate2_Release(This) (This)->lpVtbl->Release(This)
+/*** IHttpNegotiate methods ***/
+#define IHttpNegotiate2_BeginningTransaction(This,szURL,szHeaders,dwReserved,pszAdditionalHeaders) (This)->lpVtbl->BeginningTransaction(This,szURL,szHeaders,dwReserved,pszAdditionalHeaders)
+#define IHttpNegotiate2_OnResponse(This,dwResponseCode,szResponseHeaders,szRequestHeaders,pszAdditionalRequestHeaders) (This)->lpVtbl->OnResponse(This,dwResponseCode,szResponseHeaders,szRequestHeaders,pszAdditionalRequestHeaders)
+/*** IHttpNegotiate2 methods ***/
+#define IHttpNegotiate2_GetRootSecurityId(This,pbSecurityId,pcbSecurityId,dwReserved) (This)->lpVtbl->GetRootSecurityId(This,pbSecurityId,pcbSecurityId,dwReserved)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IHttpNegotiate2_GetRootSecurityId_Proxy(
+    IHttpNegotiate2* This,
+    BYTE *pbSecurityId,
+    DWORD *pcbSecurityId,
+    DWORD_PTR dwReserved);
+void __RPC_STUB IHttpNegotiate2_GetRootSecurityId_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IHttpNegotiate2_INTERFACE_DEFINED__ */
+
+#define SID_IBindHost IID_IBindHost
+#define SID_SBindHost IID_IBindHost
+#ifndef __IBindHost_FWD_DEFINED__
+#define __IBindHost_FWD_DEFINED__
+typedef interface IBindHost IBindHost;
+#endif
+
+typedef IBindHost *LPBINDHOST;
+/*****************************************************************************
+ * IBindHost interface
+ */
+#ifndef __IBindHost_INTERFACE_DEFINED__
+#define __IBindHost_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBindHost, 0xfc4801a1, 0x2ba9, 0x11cf, 0xa2,0x29, 0x00,0xaa,0x00,0x3d,0x73,0x52);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IBindHost : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE CreateMoniker(
+        LPOLESTR szName,
+        IBindCtx *pBC,
+        IMoniker **ppmk,
+        DWORD dwReserved) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE MonikerBindToStorage(
+        IMoniker *pMk,
+        IBindCtx *pBC,
+        IBindStatusCallback *pBSC,
+        REFIID riid,
+        void **ppvObj) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE MonikerBindToObject(
+        IMoniker *pMk,
+        IBindCtx *pBC,
+        IBindStatusCallback *pBSC,
+        REFIID riid,
+        void **ppvObj) = 0;
+
+};
+#else
+typedef struct IBindHostVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBindHost* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBindHost* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBindHost* This);
+
+    /*** IBindHost methods ***/
+    HRESULT (STDMETHODCALLTYPE *CreateMoniker)(
+        IBindHost* This,
+        LPOLESTR szName,
+        IBindCtx *pBC,
+        IMoniker **ppmk,
+        DWORD dwReserved);
+
+    HRESULT (STDMETHODCALLTYPE *MonikerBindToStorage)(
+        IBindHost* This,
+        IMoniker *pMk,
+        IBindCtx *pBC,
+        IBindStatusCallback *pBSC,
+        REFIID riid,
+        void **ppvObj);
+
+    HRESULT (STDMETHODCALLTYPE *MonikerBindToObject)(
+        IBindHost* This,
+        IMoniker *pMk,
+        IBindCtx *pBC,
+        IBindStatusCallback *pBSC,
+        REFIID riid,
+        void **ppvObj);
+
+    END_INTERFACE
+} IBindHostVtbl;
+interface IBindHost {
+    CONST_VTBL IBindHostVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IBindHost_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBindHost_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBindHost_Release(This) (This)->lpVtbl->Release(This)
+/*** IBindHost methods ***/
+#define IBindHost_CreateMoniker(This,szName,pBC,ppmk,dwReserved) (This)->lpVtbl->CreateMoniker(This,szName,pBC,ppmk,dwReserved)
+#define IBindHost_MonikerBindToStorage(This,pMk,pBC,pBSC,riid,ppvObj) (This)->lpVtbl->MonikerBindToStorage(This,pMk,pBC,pBSC,riid,ppvObj)
+#define IBindHost_MonikerBindToObject(This,pMk,pBC,pBSC,riid,ppvObj) (This)->lpVtbl->MonikerBindToObject(This,pMk,pBC,pBSC,riid,ppvObj)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBindHost_CreateMoniker_Proxy(
+    IBindHost* This,
+    LPOLESTR szName,
+    IBindCtx *pBC,
+    IMoniker **ppmk,
+    DWORD dwReserved);
+void __RPC_STUB IBindHost_CreateMoniker_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBindHost_RemoteMonikerBindToStorage_Proxy(
+    IBindHost* This,
+    IMoniker *pMk,
+    IBindCtx *pBC,
+    IBindStatusCallback *pBSC,
+    REFIID riid,
+    IUnknown **ppvObj);
+void __RPC_STUB IBindHost_RemoteMonikerBindToStorage_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBindHost_RemoteMonikerBindToObject_Proxy(
+    IBindHost* This,
+    IMoniker *pMk,
+    IBindCtx *pBC,
+    IBindStatusCallback *pBSC,
+    REFIID riid,
+    IUnknown **ppvObj);
+void __RPC_STUB IBindHost_RemoteMonikerBindToObject_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IBindHost_MonikerBindToStorage_Proxy(
+    IBindHost* This,
+    IMoniker *pMk,
+    IBindCtx *pBC,
+    IBindStatusCallback *pBSC,
+    REFIID riid,
+    void **ppvObj);
+HRESULT __RPC_STUB IBindHost_MonikerBindToStorage_Stub(
+    IBindHost* This,
+    IMoniker *pMk,
+    IBindCtx *pBC,
+    IBindStatusCallback *pBSC,
+    REFIID riid,
+    IUnknown **ppvObj);
+HRESULT CALLBACK IBindHost_MonikerBindToObject_Proxy(
+    IBindHost* This,
+    IMoniker *pMk,
+    IBindCtx *pBC,
+    IBindStatusCallback *pBSC,
+    REFIID riid,
+    void **ppvObj);
+HRESULT __RPC_STUB IBindHost_MonikerBindToObject_Stub(
+    IBindHost* This,
+    IMoniker *pMk,
+    IBindCtx *pBC,
+    IBindStatusCallback *pBSC,
+    REFIID riid,
+    IUnknown **ppvObj);
+
+#endif  /* __IBindHost_INTERFACE_DEFINED__ */
+
+#ifndef __IWinInetInfo_FWD_DEFINED__
+#define __IWinInetInfo_FWD_DEFINED__
+typedef interface IWinInetInfo IWinInetInfo;
+#endif
+
+typedef IWinInetInfo *LPWININETINFO;
+/*****************************************************************************
+ * IWinInetInfo interface
+ */
+#ifndef __IWinInetInfo_INTERFACE_DEFINED__
+#define __IWinInetInfo_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWinInetInfo, 0x79eac9d6, 0xbafa, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWinInetInfo : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE QueryOption(
+        DWORD dwOption,
+        LPVOID pBuffer,
+        DWORD *pcbBuf) = 0;
+
+};
+#else
+typedef struct IWinInetInfoVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWinInetInfo* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWinInetInfo* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWinInetInfo* This);
+
+    /*** IWinInetInfo methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryOption)(
+        IWinInetInfo* This,
+        DWORD dwOption,
+        LPVOID pBuffer,
+        DWORD *pcbBuf);
+
+    END_INTERFACE
+} IWinInetInfoVtbl;
+interface IWinInetInfo {
+    CONST_VTBL IWinInetInfoVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWinInetInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWinInetInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWinInetInfo_Release(This) (This)->lpVtbl->Release(This)
+/*** IWinInetInfo methods ***/
+#define IWinInetInfo_QueryOption(This,dwOption,pBuffer,pcbBuf) (This)->lpVtbl->QueryOption(This,dwOption,pBuffer,pcbBuf)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWinInetInfo_RemoteQueryOption_Proxy(
+    IWinInetInfo* This,
+    DWORD dwOption,
+    BYTE *pBuffer,
+    DWORD *pcbBuf);
+void __RPC_STUB IWinInetInfo_RemoteQueryOption_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWinInetInfo_QueryOption_Proxy(
+    IWinInetInfo* This,
+    DWORD dwOption,
+    LPVOID pBuffer,
+    DWORD *pcbBuf);
+HRESULT __RPC_STUB IWinInetInfo_QueryOption_Stub(
+    IWinInetInfo* This,
+    DWORD dwOption,
+    BYTE *pBuffer,
+    DWORD *pcbBuf);
+
+#endif  /* __IWinInetInfo_INTERFACE_DEFINED__ */
+
+#ifndef __IWinInetHttpInfo_FWD_DEFINED__
+#define __IWinInetHttpInfo_FWD_DEFINED__
+typedef interface IWinInetHttpInfo IWinInetHttpInfo;
+#endif
+
+typedef IWinInetHttpInfo *LPWININETHTTPINFO;
+/*****************************************************************************
+ * IWinInetHttpInfo interface
+ */
+#ifndef __IWinInetHttpInfo_INTERFACE_DEFINED__
+#define __IWinInetHttpInfo_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWinInetHttpInfo, 0x79eac9d8, 0xbafa, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWinInetHttpInfo : public IWinInetInfo
+{
+    virtual HRESULT STDMETHODCALLTYPE QueryInfo(
+        DWORD dwOption,
+        LPVOID pBuffer,
+        DWORD *pcbBuf,
+        DWORD *pdwFlags,
+        DWORD *pdwReserved) = 0;
+
+};
+#else
+typedef struct IWinInetHttpInfoVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWinInetHttpInfo* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWinInetHttpInfo* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWinInetHttpInfo* This);
+
+    /*** IWinInetInfo methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryOption)(
+        IWinInetHttpInfo* This,
+        DWORD dwOption,
+        LPVOID pBuffer,
+        DWORD *pcbBuf);
+
+    /*** IWinInetHttpInfo methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInfo)(
+        IWinInetHttpInfo* This,
+        DWORD dwOption,
+        LPVOID pBuffer,
+        DWORD *pcbBuf,
+        DWORD *pdwFlags,
+        DWORD *pdwReserved);
+
+    END_INTERFACE
+} IWinInetHttpInfoVtbl;
+interface IWinInetHttpInfo {
+    CONST_VTBL IWinInetHttpInfoVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWinInetHttpInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWinInetHttpInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWinInetHttpInfo_Release(This) (This)->lpVtbl->Release(This)
+/*** IWinInetInfo methods ***/
+#define IWinInetHttpInfo_QueryOption(This,dwOption,pBuffer,pcbBuf) (This)->lpVtbl->QueryOption(This,dwOption,pBuffer,pcbBuf)
+/*** IWinInetHttpInfo methods ***/
+#define IWinInetHttpInfo_QueryInfo(This,dwOption,pBuffer,pcbBuf,pdwFlags,pdwReserved) (This)->lpVtbl->QueryInfo(This,dwOption,pBuffer,pcbBuf,pdwFlags,pdwReserved)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWinInetHttpInfo_RemoteQueryInfo_Proxy(
+    IWinInetHttpInfo* This,
+    DWORD dwOption,
+    BYTE *pBuffer,
+    DWORD *pcbBuf,
+    DWORD *pdwFlags,
+    DWORD *pdwReserved);
+void __RPC_STUB IWinInetHttpInfo_RemoteQueryInfo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWinInetHttpInfo_QueryInfo_Proxy(
+    IWinInetHttpInfo* This,
+    DWORD dwOption,
+    LPVOID pBuffer,
+    DWORD *pcbBuf,
+    DWORD *pdwFlags,
+    DWORD *pdwReserved);
+HRESULT __RPC_STUB IWinInetHttpInfo_QueryInfo_Stub(
+    IWinInetHttpInfo* This,
+    DWORD dwOption,
+    BYTE *pBuffer,
+    DWORD *pcbBuf,
+    DWORD *pdwFlags,
+    DWORD *pdwReserved);
+
+#endif  /* __IWinInetHttpInfo_INTERFACE_DEFINED__ */
+
+#ifndef __IWindowForBindingUI_FWD_DEFINED__
+#define __IWindowForBindingUI_FWD_DEFINED__
+typedef interface IWindowForBindingUI IWindowForBindingUI;
+#endif
+
+typedef IWindowForBindingUI *LPWINDOWFORBINDINGUI;
+/*****************************************************************************
+ * IWindowForBindingUI interface
+ */
+#ifndef __IWindowForBindingUI_INTERFACE_DEFINED__
+#define __IWindowForBindingUI_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWindowForBindingUI, 0x79eac9d5, 0xbafa, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWindowForBindingUI : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetWindow(
+        REFGUID rguidReason,
+        HWND *phwnd) = 0;
+
+};
+#else
+typedef struct IWindowForBindingUIVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWindowForBindingUI* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWindowForBindingUI* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWindowForBindingUI* This);
+
+    /*** IWindowForBindingUI methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetWindow)(
+        IWindowForBindingUI* This,
+        REFGUID rguidReason,
+        HWND *phwnd);
+
+    END_INTERFACE
+} IWindowForBindingUIVtbl;
+interface IWindowForBindingUI {
+    CONST_VTBL IWindowForBindingUIVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWindowForBindingUI_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWindowForBindingUI_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWindowForBindingUI_Release(This) (This)->lpVtbl->Release(This)
+/*** IWindowForBindingUI methods ***/
+#define IWindowForBindingUI_GetWindow(This,rguidReason,phwnd) (This)->lpVtbl->GetWindow(This,rguidReason,phwnd)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWindowForBindingUI_GetWindow_Proxy(
+    IWindowForBindingUI* This,
+    REFGUID rguidReason,
+    HWND *phwnd);
+void __RPC_STUB IWindowForBindingUI_GetWindow_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWindowForBindingUI_INTERFACE_DEFINED__ */
+
+#ifndef __IHttpSecurity_FWD_DEFINED__
+#define __IHttpSecurity_FWD_DEFINED__
+typedef interface IHttpSecurity IHttpSecurity;
+#endif
+
+typedef IHttpSecurity *LPHTTPSECURITY;
+/*****************************************************************************
+ * IHttpSecurity interface
+ */
+#ifndef __IHttpSecurity_INTERFACE_DEFINED__
+#define __IHttpSecurity_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IHttpSecurity, 0x79eac9d7, 0xbafa, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IHttpSecurity : public IWindowForBindingUI
+{
+    virtual HRESULT STDMETHODCALLTYPE OnSecurityProblem(
+        DWORD dwProblem) = 0;
+
+};
+#else
+typedef struct IHttpSecurityVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IHttpSecurity* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IHttpSecurity* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IHttpSecurity* This);
+
+    /*** IWindowForBindingUI methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetWindow)(
+        IHttpSecurity* This,
+        REFGUID rguidReason,
+        HWND *phwnd);
+
+    /*** IHttpSecurity methods ***/
+    HRESULT (STDMETHODCALLTYPE *OnSecurityProblem)(
+        IHttpSecurity* This,
+        DWORD dwProblem);
+
+    END_INTERFACE
+} IHttpSecurityVtbl;
+interface IHttpSecurity {
+    CONST_VTBL IHttpSecurityVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IHttpSecurity_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IHttpSecurity_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IHttpSecurity_Release(This) (This)->lpVtbl->Release(This)
+/*** IWindowForBindingUI methods ***/
+#define IHttpSecurity_GetWindow(This,rguidReason,phwnd) (This)->lpVtbl->GetWindow(This,rguidReason,phwnd)
+/*** IHttpSecurity methods ***/
+#define IHttpSecurity_OnSecurityProblem(This,dwProblem) (This)->lpVtbl->OnSecurityProblem(This,dwProblem)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IHttpSecurity_OnSecurityProblem_Proxy(
+    IHttpSecurity* This,
+    DWORD dwProblem);
+void __RPC_STUB IHttpSecurity_OnSecurityProblem_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IHttpSecurity_INTERFACE_DEFINED__ */
+
+#ifndef __IPersistMoniker_FWD_DEFINED__
+#define __IPersistMoniker_FWD_DEFINED__
+typedef interface IPersistMoniker IPersistMoniker;
+#endif
+
+typedef IPersistMoniker *LPPERSISTMONIKER;
+/*****************************************************************************
+ * IPersistMoniker interface
+ */
+#ifndef __IPersistMoniker_INTERFACE_DEFINED__
+#define __IPersistMoniker_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IPersistMoniker, 0x79eac9c9, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IPersistMoniker : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetClassID(
+        CLSID *pClassID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsDirty(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Load(
+        BOOL fFullyAvailable,
+        IMoniker *pimkName,
+        LPBC pibc,
+        DWORD grfMode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Save(
+        IMoniker *pimkName,
+        LPBC pbc,
+        BOOL fRemember) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SaveCompleted(
+        IMoniker *pimkName,
+        LPBC pibc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCurMoniker(
+        IMoniker **ppimkName) = 0;
+
+};
+#else
+typedef struct IPersistMonikerVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IPersistMoniker* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IPersistMoniker* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IPersistMoniker* This);
+
+    /*** IPersistMoniker methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetClassID)(
+        IPersistMoniker* This,
+        CLSID *pClassID);
+
+    HRESULT (STDMETHODCALLTYPE *IsDirty)(
+        IPersistMoniker* This);
+
+    HRESULT (STDMETHODCALLTYPE *Load)(
+        IPersistMoniker* This,
+        BOOL fFullyAvailable,
+        IMoniker *pimkName,
+        LPBC pibc,
+        DWORD grfMode);
+
+    HRESULT (STDMETHODCALLTYPE *Save)(
+        IPersistMoniker* This,
+        IMoniker *pimkName,
+        LPBC pbc,
+        BOOL fRemember);
+
+    HRESULT (STDMETHODCALLTYPE *SaveCompleted)(
+        IPersistMoniker* This,
+        IMoniker *pimkName,
+        LPBC pibc);
+
+    HRESULT (STDMETHODCALLTYPE *GetCurMoniker)(
+        IPersistMoniker* This,
+        IMoniker **ppimkName);
+
+    END_INTERFACE
+} IPersistMonikerVtbl;
+interface IPersistMoniker {
+    CONST_VTBL IPersistMonikerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IPersistMoniker_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IPersistMoniker_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IPersistMoniker_Release(This) (This)->lpVtbl->Release(This)
+/*** IPersistMoniker methods ***/
+#define IPersistMoniker_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)
+#define IPersistMoniker_IsDirty(This) (This)->lpVtbl->IsDirty(This)
+#define IPersistMoniker_Load(This,fFullyAvailable,pimkName,pibc,grfMode) (This)->lpVtbl->Load(This,fFullyAvailable,pimkName,pibc,grfMode)
+#define IPersistMoniker_Save(This,pimkName,pbc,fRemember) (This)->lpVtbl->Save(This,pimkName,pbc,fRemember)
+#define IPersistMoniker_SaveCompleted(This,pimkName,pibc) (This)->lpVtbl->SaveCompleted(This,pimkName,pibc)
+#define IPersistMoniker_GetCurMoniker(This,ppimkName) (This)->lpVtbl->GetCurMoniker(This,ppimkName)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IPersistMoniker_GetClassID_Proxy(
+    IPersistMoniker* This,
+    CLSID *pClassID);
+void __RPC_STUB IPersistMoniker_GetClassID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPersistMoniker_IsDirty_Proxy(
+    IPersistMoniker* This);
+void __RPC_STUB IPersistMoniker_IsDirty_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPersistMoniker_Load_Proxy(
+    IPersistMoniker* This,
+    BOOL fFullyAvailable,
+    IMoniker *pimkName,
+    LPBC pibc,
+    DWORD grfMode);
+void __RPC_STUB IPersistMoniker_Load_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPersistMoniker_Save_Proxy(
+    IPersistMoniker* This,
+    IMoniker *pimkName,
+    LPBC pbc,
+    BOOL fRemember);
+void __RPC_STUB IPersistMoniker_Save_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPersistMoniker_SaveCompleted_Proxy(
+    IPersistMoniker* This,
+    IMoniker *pimkName,
+    LPBC pibc);
+void __RPC_STUB IPersistMoniker_SaveCompleted_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IPersistMoniker_GetCurMoniker_Proxy(
+    IPersistMoniker* This,
+    IMoniker **ppimkName);
+void __RPC_STUB IPersistMoniker_GetCurMoniker_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IPersistMoniker_INTERFACE_DEFINED__ */
+
+#ifndef __IMonikerProp_FWD_DEFINED__
+#define __IMonikerProp_FWD_DEFINED__
+typedef interface IMonikerProp IMonikerProp;
+#endif
+
+typedef IMonikerProp *LPMONIKERPROP;
+typedef enum __WIDL_urlmon_generated_name_00000005 {
+    MIMETYPEPROP = 0,
+    USE_SRC_URL = 1,
+    CLASSIDPROP = 2,
+    TRUSTEDDOWNLOADPROP = 3,
+    POPUPLEVELPROP = 4
+} MONIKERPROPERTY;
+/*****************************************************************************
+ * IMonikerProp interface
+ */
+#ifndef __IMonikerProp_INTERFACE_DEFINED__
+#define __IMonikerProp_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMonikerProp, 0xa5ca5f7f, 0x1847, 0x4d87, 0x9c,0x5b, 0x91,0x85,0x09,0xf7,0x51,0x1d);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IMonikerProp : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE PutProperty(
+        MONIKERPROPERTY mkp,
+        LPCWSTR val) = 0;
+
+};
+#else
+typedef struct IMonikerPropVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IMonikerProp* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IMonikerProp* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IMonikerProp* This);
+
+    /*** IMonikerProp methods ***/
+    HRESULT (STDMETHODCALLTYPE *PutProperty)(
+        IMonikerProp* This,
+        MONIKERPROPERTY mkp,
+        LPCWSTR val);
+
+    END_INTERFACE
+} IMonikerPropVtbl;
+interface IMonikerProp {
+    CONST_VTBL IMonikerPropVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IMonikerProp_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMonikerProp_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMonikerProp_Release(This) (This)->lpVtbl->Release(This)
+/*** IMonikerProp methods ***/
+#define IMonikerProp_PutProperty(This,mkp,val) (This)->lpVtbl->PutProperty(This,mkp,val)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IMonikerProp_PutProperty_Proxy(
+    IMonikerProp* This,
+    MONIKERPROPERTY mkp,
+    LPCWSTR val);
+void __RPC_STUB IMonikerProp_PutProperty_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IMonikerProp_INTERFACE_DEFINED__ */
+
+#ifndef _LPBINDPROTOCOL_DEFINED
+#define _LPBINDPROTOCOL_DEFINED
+#ifndef __IBindProtocol_FWD_DEFINED__
+#define __IBindProtocol_FWD_DEFINED__
+typedef interface IBindProtocol IBindProtocol;
+#endif
+
+typedef IBindProtocol *LPBINDPROTOCOL;
+/*****************************************************************************
+ * IBindProtocol interface
+ */
+#ifndef __IBindProtocol_INTERFACE_DEFINED__
+#define __IBindProtocol_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBindProtocol, 0x79eac9cd, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IBindProtocol : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE CreateBinding(
+        LPCWSTR szUrl,
+        IBindCtx *pbc,
+        IBinding **ppb) = 0;
+
+};
+#else
+typedef struct IBindProtocolVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBindProtocol* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBindProtocol* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBindProtocol* This);
+
+    /*** IBindProtocol methods ***/
+    HRESULT (STDMETHODCALLTYPE *CreateBinding)(
+        IBindProtocol* This,
+        LPCWSTR szUrl,
+        IBindCtx *pbc,
+        IBinding **ppb);
+
+    END_INTERFACE
+} IBindProtocolVtbl;
+interface IBindProtocol {
+    CONST_VTBL IBindProtocolVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IBindProtocol_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBindProtocol_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBindProtocol_Release(This) (This)->lpVtbl->Release(This)
+/*** IBindProtocol methods ***/
+#define IBindProtocol_CreateBinding(This,szUrl,pbc,ppb) (This)->lpVtbl->CreateBinding(This,szUrl,pbc,ppb)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBindProtocol_CreateBinding_Proxy(
+    IBindProtocol* This,
+    LPCWSTR szUrl,
+    IBindCtx *pbc,
+    IBinding **ppb);
+void __RPC_STUB IBindProtocol_CreateBinding_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBindProtocol_INTERFACE_DEFINED__ */
+
+#endif /* !defined _LPBINDPROTOCOL_DEFINED */
+#ifndef __IInternetBindInfo_FWD_DEFINED__
+#define __IInternetBindInfo_FWD_DEFINED__
+typedef interface IInternetBindInfo IInternetBindInfo;
+#endif
+
+typedef IInternetBindInfo *LPIINTERNETBINDINFO;
+typedef enum tagBINDSTRING {
+    BINDSTRING_HEADERS = 1,
+    BINDSTRING_ACCEPT_MIMES = 2,
+    BINDSTRING_EXTRA_URL = 3,
+    BINDSTRING_LANGUAGE = 4,
+    BINDSTRING_USERNAME = 5,
+    BINDSTRING_PASSWORD = 6,
+    BINDSTRING_UA_PIXELS = 7,
+    BINDSTRING_UA_COLOR = 8,
+    BINDSTRING_OS = 9,
+    BINDSTRING_USER_AGENT = 10,
+    BINDSTRING_ACCEPT_ENCODINGS = 11,
+    BINDSTRING_POST_COOKIE = 12,
+    BINDSTRING_POST_DATA_MIME = 13,
+    BINDSTRING_URL = 14,
+    BINDSTRING_IID = 15,
+    BINDSTRING_FLAG_BIND_TO_OBJECT = 16,
+    BINDSTRING_PTR_BIND_CONTEXT = 17
+} BINDSTRING;
+/*****************************************************************************
+ * IInternetBindInfo interface
+ */
+#ifndef __IInternetBindInfo_INTERFACE_DEFINED__
+#define __IInternetBindInfo_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInternetBindInfo, 0x79eac9e1, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IInternetBindInfo : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetBindInfo(
+        DWORD *grfBINDF,
+        BINDINFO *pbindinfo) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetBindString(
+        ULONG ulStringType,
+        LPOLESTR *ppwzStr,
+        ULONG cEl,
+        ULONG *pcElFetched) = 0;
+
+};
+#else
+typedef struct IInternetBindInfoVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInternetBindInfo* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInternetBindInfo* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInternetBindInfo* This);
+
+    /*** IInternetBindInfo methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetBindInfo)(
+        IInternetBindInfo* This,
+        DWORD *grfBINDF,
+        BINDINFO *pbindinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetBindString)(
+        IInternetBindInfo* This,
+        ULONG ulStringType,
+        LPOLESTR *ppwzStr,
+        ULONG cEl,
+        ULONG *pcElFetched);
+
+    END_INTERFACE
+} IInternetBindInfoVtbl;
+interface IInternetBindInfo {
+    CONST_VTBL IInternetBindInfoVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IInternetBindInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInternetBindInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInternetBindInfo_Release(This) (This)->lpVtbl->Release(This)
+/*** IInternetBindInfo methods ***/
+#define IInternetBindInfo_GetBindInfo(This,grfBINDF,pbindinfo) (This)->lpVtbl->GetBindInfo(This,grfBINDF,pbindinfo)
+#define IInternetBindInfo_GetBindString(This,ulStringType,ppwzStr,cEl,pcElFetched) (This)->lpVtbl->GetBindString(This,ulStringType,ppwzStr,cEl,pcElFetched)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInternetBindInfo_GetBindInfo_Proxy(
+    IInternetBindInfo* This,
+    DWORD *grfBINDF,
+    BINDINFO *pbindinfo);
+void __RPC_STUB IInternetBindInfo_GetBindInfo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetBindInfo_GetBindString_Proxy(
+    IInternetBindInfo* This,
+    ULONG ulStringType,
+    LPOLESTR *ppwzStr,
+    ULONG cEl,
+    ULONG *pcElFetched);
+void __RPC_STUB IInternetBindInfo_GetBindString_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInternetBindInfo_INTERFACE_DEFINED__ */
+
+#ifndef __IInternetPriority_FWD_DEFINED__
+#define __IInternetPriority_FWD_DEFINED__
+typedef interface IInternetPriority IInternetPriority;
+#endif
+
+typedef IInternetPriority *LPIINTERNETPRIORITY;
+/*****************************************************************************
+ * IInternetPriority interface
+ */
+#ifndef __IInternetPriority_INTERFACE_DEFINED__
+#define __IInternetPriority_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInternetPriority, 0x79eac9eb, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IInternetPriority : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SetPriority(
+        LONG nPriority) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPriority(
+        LONG *pnPriority) = 0;
+
+};
+#else
+typedef struct IInternetPriorityVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInternetPriority* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInternetPriority* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInternetPriority* This);
+
+    /*** IInternetPriority methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetPriority)(
+        IInternetPriority* This,
+        LONG nPriority);
+
+    HRESULT (STDMETHODCALLTYPE *GetPriority)(
+        IInternetPriority* This,
+        LONG *pnPriority);
+
+    END_INTERFACE
+} IInternetPriorityVtbl;
+interface IInternetPriority {
+    CONST_VTBL IInternetPriorityVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IInternetPriority_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInternetPriority_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInternetPriority_Release(This) (This)->lpVtbl->Release(This)
+/*** IInternetPriority methods ***/
+#define IInternetPriority_SetPriority(This,nPriority) (This)->lpVtbl->SetPriority(This,nPriority)
+#define IInternetPriority_GetPriority(This,pnPriority) (This)->lpVtbl->GetPriority(This,pnPriority)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInternetPriority_SetPriority_Proxy(
+    IInternetPriority* This,
+    LONG nPriority);
+void __RPC_STUB IInternetPriority_SetPriority_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetPriority_GetPriority_Proxy(
+    IInternetPriority* This,
+    LONG *pnPriority);
+void __RPC_STUB IInternetPriority_GetPriority_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInternetPriority_INTERFACE_DEFINED__ */
+
+#ifndef __IInternetProtocolRoot_FWD_DEFINED__
+#define __IInternetProtocolRoot_FWD_DEFINED__
+typedef interface IInternetProtocolRoot IInternetProtocolRoot;
+#endif
+
+typedef IInternetProtocolRoot *LPIINTERNETPROTOCOLROOT;
+typedef enum _tagPI_FLAGS {
+    PI_PARSE_URL = 0x1,
+    PI_FILTER_MODE = 0x2,
+    PI_FORCE_ASYNC = 0x4,
+    PI_USE_WORKERTHREAD = 0x8,
+    PI_MIMEVERIFICATION = 0x10,
+    PI_CLSIDLOOKUP = 0x20,
+    PI_DATAPROGRESS = 0x40,
+    PI_SYNCHRONOUS = 0x80,
+    PI_APARTMENTTHREADED = 0x100,
+    PI_CLASSINSTALL = 0x200,
+    PD_FORCE_SWITCH = 0x10000
+} PI_FLAGS;
+typedef struct _tagPROTOCOLDATA {
+    DWORD grfFlags;
+    DWORD dwState;
+    LPVOID pData;
+    ULONG cbData;
+} PROTOCOLDATA;
+/*****************************************************************************
+ * IInternetProtocolRoot interface
+ */
+#ifndef __IInternetProtocolRoot_INTERFACE_DEFINED__
+#define __IInternetProtocolRoot_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInternetProtocolRoot, 0x79eac9e3, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IInternetProtocolRoot : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Start(
+        LPCWSTR szUrl,
+        IInternetProtocolSink *pOIProtSink,
+        IInternetBindInfo *pOIBindInfo,
+        DWORD grfPI,
+        DWORD dwReserved) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Continue(
+        PROTOCOLDATA *pProtocolData) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Abort(
+        HRESULT hrReason,
+        DWORD dwOptions) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Terminate(
+        DWORD dwOptions) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Suspend(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Resume(
+        ) = 0;
+
+};
+#else
+typedef struct IInternetProtocolRootVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInternetProtocolRoot* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInternetProtocolRoot* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInternetProtocolRoot* This);
+
+    /*** IInternetProtocolRoot methods ***/
+    HRESULT (STDMETHODCALLTYPE *Start)(
+        IInternetProtocolRoot* This,
+        LPCWSTR szUrl,
+        IInternetProtocolSink *pOIProtSink,
+        IInternetBindInfo *pOIBindInfo,
+        DWORD grfPI,
+        DWORD dwReserved);
+
+    HRESULT (STDMETHODCALLTYPE *Continue)(
+        IInternetProtocolRoot* This,
+        PROTOCOLDATA *pProtocolData);
+
+    HRESULT (STDMETHODCALLTYPE *Abort)(
+        IInternetProtocolRoot* This,
+        HRESULT hrReason,
+        DWORD dwOptions);
+
+    HRESULT (STDMETHODCALLTYPE *Terminate)(
+        IInternetProtocolRoot* This,
+        DWORD dwOptions);
+
+    HRESULT (STDMETHODCALLTYPE *Suspend)(
+        IInternetProtocolRoot* This);
+
+    HRESULT (STDMETHODCALLTYPE *Resume)(
+        IInternetProtocolRoot* This);
+
+    END_INTERFACE
+} IInternetProtocolRootVtbl;
+interface IInternetProtocolRoot {
+    CONST_VTBL IInternetProtocolRootVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IInternetProtocolRoot_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInternetProtocolRoot_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInternetProtocolRoot_Release(This) (This)->lpVtbl->Release(This)
+/*** IInternetProtocolRoot methods ***/
+#define IInternetProtocolRoot_Start(This,szUrl,pOIProtSink,pOIBindInfo,grfPI,dwReserved) (This)->lpVtbl->Start(This,szUrl,pOIProtSink,pOIBindInfo,grfPI,dwReserved)
+#define IInternetProtocolRoot_Continue(This,pProtocolData) (This)->lpVtbl->Continue(This,pProtocolData)
+#define IInternetProtocolRoot_Abort(This,hrReason,dwOptions) (This)->lpVtbl->Abort(This,hrReason,dwOptions)
+#define IInternetProtocolRoot_Terminate(This,dwOptions) (This)->lpVtbl->Terminate(This,dwOptions)
+#define IInternetProtocolRoot_Suspend(This) (This)->lpVtbl->Suspend(This)
+#define IInternetProtocolRoot_Resume(This) (This)->lpVtbl->Resume(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInternetProtocolRoot_Start_Proxy(
+    IInternetProtocolRoot* This,
+    LPCWSTR szUrl,
+    IInternetProtocolSink *pOIProtSink,
+    IInternetBindInfo *pOIBindInfo,
+    DWORD grfPI,
+    DWORD dwReserved);
+void __RPC_STUB IInternetProtocolRoot_Start_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetProtocolRoot_Continue_Proxy(
+    IInternetProtocolRoot* This,
+    PROTOCOLDATA *pProtocolData);
+void __RPC_STUB IInternetProtocolRoot_Continue_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetProtocolRoot_Abort_Proxy(
+    IInternetProtocolRoot* This,
+    HRESULT hrReason,
+    DWORD dwOptions);
+void __RPC_STUB IInternetProtocolRoot_Abort_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetProtocolRoot_Terminate_Proxy(
+    IInternetProtocolRoot* This,
+    DWORD dwOptions);
+void __RPC_STUB IInternetProtocolRoot_Terminate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetProtocolRoot_Suspend_Proxy(
+    IInternetProtocolRoot* This);
+void __RPC_STUB IInternetProtocolRoot_Suspend_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetProtocolRoot_Resume_Proxy(
+    IInternetProtocolRoot* This);
+void __RPC_STUB IInternetProtocolRoot_Resume_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInternetProtocolRoot_INTERFACE_DEFINED__ */
+
+typedef IInternetProtocolSink *LPIINTERNETPROTOCOLSINK;
+/*****************************************************************************
+ * IInternetProtocolSink interface
+ */
+#ifndef __IInternetProtocolSink_INTERFACE_DEFINED__
+#define __IInternetProtocolSink_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInternetProtocolSink, 0x79eac9e5, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IInternetProtocolSink : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Switch(
+        PROTOCOLDATA *pProtocolData) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ReportProgress(
+        ULONG ulStatusCode,
+        LPCWSTR szStatusText) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ReportData(
+        DWORD grfBSCF,
+        ULONG ulProgress,
+        ULONG ulProgressMax) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ReportResult(
+        HRESULT hrResult,
+        DWORD dwError,
+        LPCWSTR szResult) = 0;
+
+};
+#else
+typedef struct IInternetProtocolSinkVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInternetProtocolSink* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInternetProtocolSink* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInternetProtocolSink* This);
+
+    /*** IInternetProtocolSink methods ***/
+    HRESULT (STDMETHODCALLTYPE *Switch)(
+        IInternetProtocolSink* This,
+        PROTOCOLDATA *pProtocolData);
+
+    HRESULT (STDMETHODCALLTYPE *ReportProgress)(
+        IInternetProtocolSink* This,
+        ULONG ulStatusCode,
+        LPCWSTR szStatusText);
+
+    HRESULT (STDMETHODCALLTYPE *ReportData)(
+        IInternetProtocolSink* This,
+        DWORD grfBSCF,
+        ULONG ulProgress,
+        ULONG ulProgressMax);
+
+    HRESULT (STDMETHODCALLTYPE *ReportResult)(
+        IInternetProtocolSink* This,
+        HRESULT hrResult,
+        DWORD dwError,
+        LPCWSTR szResult);
+
+    END_INTERFACE
+} IInternetProtocolSinkVtbl;
+interface IInternetProtocolSink {
+    CONST_VTBL IInternetProtocolSinkVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IInternetProtocolSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInternetProtocolSink_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInternetProtocolSink_Release(This) (This)->lpVtbl->Release(This)
+/*** IInternetProtocolSink methods ***/
+#define IInternetProtocolSink_Switch(This,pProtocolData) (This)->lpVtbl->Switch(This,pProtocolData)
+#define IInternetProtocolSink_ReportProgress(This,ulStatusCode,szStatusText) (This)->lpVtbl->ReportProgress(This,ulStatusCode,szStatusText)
+#define IInternetProtocolSink_ReportData(This,grfBSCF,ulProgress,ulProgressMax) (This)->lpVtbl->ReportData(This,grfBSCF,ulProgress,ulProgressMax)
+#define IInternetProtocolSink_ReportResult(This,hrResult,dwError,szResult) (This)->lpVtbl->ReportResult(This,hrResult,dwError,szResult)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInternetProtocolSink_Switch_Proxy(
+    IInternetProtocolSink* This,
+    PROTOCOLDATA *pProtocolData);
+void __RPC_STUB IInternetProtocolSink_Switch_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetProtocolSink_ReportProgress_Proxy(
+    IInternetProtocolSink* This,
+    ULONG ulStatusCode,
+    LPCWSTR szStatusText);
+void __RPC_STUB IInternetProtocolSink_ReportProgress_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetProtocolSink_ReportData_Proxy(
+    IInternetProtocolSink* This,
+    DWORD grfBSCF,
+    ULONG ulProgress,
+    ULONG ulProgressMax);
+void __RPC_STUB IInternetProtocolSink_ReportData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetProtocolSink_ReportResult_Proxy(
+    IInternetProtocolSink* This,
+    HRESULT hrResult,
+    DWORD dwError,
+    LPCWSTR szResult);
+void __RPC_STUB IInternetProtocolSink_ReportResult_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInternetProtocolSink_INTERFACE_DEFINED__ */
+
+#ifndef __IInternetProtocol_FWD_DEFINED__
+#define __IInternetProtocol_FWD_DEFINED__
+typedef interface IInternetProtocol IInternetProtocol;
+#endif
+
+typedef IInternetProtocol *LPIINTERNETPROTOCOL;
+/*****************************************************************************
+ * IInternetProtocol interface
+ */
+#ifndef __IInternetProtocol_INTERFACE_DEFINED__
+#define __IInternetProtocol_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInternetProtocol, 0x79eac9e4, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IInternetProtocol : public IInternetProtocolRoot
+{
+    virtual HRESULT STDMETHODCALLTYPE Read(
+        void *pv,
+        ULONG cb,
+        ULONG *pcbRead) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Seek(
+        LARGE_INTEGER dlibMove,
+        DWORD dwOrigin,
+        ULARGE_INTEGER *plibNewPosition) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE LockRequest(
+        DWORD dwOptions) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnlockRequest(
+        ) = 0;
+
+};
+#else
+typedef struct IInternetProtocolVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInternetProtocol* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInternetProtocol* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInternetProtocol* This);
+
+    /*** IInternetProtocolRoot methods ***/
+    HRESULT (STDMETHODCALLTYPE *Start)(
+        IInternetProtocol* This,
+        LPCWSTR szUrl,
+        IInternetProtocolSink *pOIProtSink,
+        IInternetBindInfo *pOIBindInfo,
+        DWORD grfPI,
+        DWORD dwReserved);
+
+    HRESULT (STDMETHODCALLTYPE *Continue)(
+        IInternetProtocol* This,
+        PROTOCOLDATA *pProtocolData);
+
+    HRESULT (STDMETHODCALLTYPE *Abort)(
+        IInternetProtocol* This,
+        HRESULT hrReason,
+        DWORD dwOptions);
+
+    HRESULT (STDMETHODCALLTYPE *Terminate)(
+        IInternetProtocol* This,
+        DWORD dwOptions);
+
+    HRESULT (STDMETHODCALLTYPE *Suspend)(
+        IInternetProtocol* This);
+
+    HRESULT (STDMETHODCALLTYPE *Resume)(
+        IInternetProtocol* This);
+
+    /*** IInternetProtocol methods ***/
+    HRESULT (STDMETHODCALLTYPE *Read)(
+        IInternetProtocol* This,
+        void *pv,
+        ULONG cb,
+        ULONG *pcbRead);
+
+    HRESULT (STDMETHODCALLTYPE *Seek)(
+        IInternetProtocol* This,
+        LARGE_INTEGER dlibMove,
+        DWORD dwOrigin,
+        ULARGE_INTEGER *plibNewPosition);
+
+    HRESULT (STDMETHODCALLTYPE *LockRequest)(
+        IInternetProtocol* This,
+        DWORD dwOptions);
+
+    HRESULT (STDMETHODCALLTYPE *UnlockRequest)(
+        IInternetProtocol* This);
+
+    END_INTERFACE
+} IInternetProtocolVtbl;
+interface IInternetProtocol {
+    CONST_VTBL IInternetProtocolVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IInternetProtocol_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInternetProtocol_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInternetProtocol_Release(This) (This)->lpVtbl->Release(This)
+/*** IInternetProtocolRoot methods ***/
+#define IInternetProtocol_Start(This,szUrl,pOIProtSink,pOIBindInfo,grfPI,dwReserved) (This)->lpVtbl->Start(This,szUrl,pOIProtSink,pOIBindInfo,grfPI,dwReserved)
+#define IInternetProtocol_Continue(This,pProtocolData) (This)->lpVtbl->Continue(This,pProtocolData)
+#define IInternetProtocol_Abort(This,hrReason,dwOptions) (This)->lpVtbl->Abort(This,hrReason,dwOptions)
+#define IInternetProtocol_Terminate(This,dwOptions) (This)->lpVtbl->Terminate(This,dwOptions)
+#define IInternetProtocol_Suspend(This) (This)->lpVtbl->Suspend(This)
+#define IInternetProtocol_Resume(This) (This)->lpVtbl->Resume(This)
+/*** IInternetProtocol methods ***/
+#define IInternetProtocol_Read(This,pv,cb,pcbRead) (This)->lpVtbl->Read(This,pv,cb,pcbRead)
+#define IInternetProtocol_Seek(This,dlibMove,dwOrigin,plibNewPosition) (This)->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition)
+#define IInternetProtocol_LockRequest(This,dwOptions) (This)->lpVtbl->LockRequest(This,dwOptions)
+#define IInternetProtocol_UnlockRequest(This) (This)->lpVtbl->UnlockRequest(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInternetProtocol_Read_Proxy(
+    IInternetProtocol* This,
+    void *pv,
+    ULONG cb,
+    ULONG *pcbRead);
+void __RPC_STUB IInternetProtocol_Read_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetProtocol_Seek_Proxy(
+    IInternetProtocol* This,
+    LARGE_INTEGER dlibMove,
+    DWORD dwOrigin,
+    ULARGE_INTEGER *plibNewPosition);
+void __RPC_STUB IInternetProtocol_Seek_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetProtocol_LockRequest_Proxy(
+    IInternetProtocol* This,
+    DWORD dwOptions);
+void __RPC_STUB IInternetProtocol_LockRequest_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetProtocol_UnlockRequest_Proxy(
+    IInternetProtocol* This);
+void __RPC_STUB IInternetProtocol_UnlockRequest_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInternetProtocol_INTERFACE_DEFINED__ */
+
+#ifndef __IInternetProtocolInfo_FWD_DEFINED__
+#define __IInternetProtocolInfo_FWD_DEFINED__
+typedef interface IInternetProtocolInfo IInternetProtocolInfo;
+#endif
+
+typedef IInternetProtocolInfo *LPIINTERNETPROTOCOLINFO;
+typedef enum _tagPARSEACTION {
+    PARSE_CANONICALIZE = 1,
+    PARSE_FRIENDLY = 2,
+    PARSE_SECURITY_URL = 3,
+    PARSE_ROOTDOCUMENT = 4,
+    PARSE_DOCUMENT = 5,
+    PARSE_ANCHOR = 6,
+    PARSE_ENCODE = 7,
+    PARSE_DECODE = 8,
+    PARSE_PATH_FROM_URL = 9,
+    PARSE_URL_FROM_PATH = 10,
+    PARSE_MIME = 11,
+    PARSE_SERVER = 12,
+    PARSE_SCHEMA = 13,
+    PARSE_SITE = 14,
+    PARSE_DOMAIN = 15,
+    PARSE_LOCATION = 16,
+    PARSE_SECURITY_DOMAIN = 17,
+    PARSE_ESCAPE = 18,
+    PARSE_UNESCAPE = 19
+} PARSEACTION;
+typedef enum _tagPSUACTION {
+    PSU_DEFAULT = 1,
+    PSU_SECURITY_URL_ONLY = 2
+} PSUACTION;
+typedef enum _tagQUERYOPTION {
+    QUERY_EXPIRATION_DATE = 1,
+    QUERY_TIME_OF_LAST_CHANGE = 2,
+    QUERY_CONTENT_ENCODING = 3,
+    QUERY_CONTENT_TYPE = 4,
+    QUERY_REFRESH = 5,
+    QUERY_RECOMBINE = 6,
+    QUERY_CAN_NAVIGATE = 7,
+    QUERY_USES_NETWORK = 8,
+    QUERY_IS_CACHED = 9,
+    QUERY_IS_INSTALLEDENTRY = 10,
+    QUERY_IS_CACHED_OR_MAPPED = 11,
+    QUERY_USES_CACHE = 12,
+    QUERY_IS_SECURE = 13,
+    QUERY_IS_SAFE = 14,
+    QUERY_USES_HISTORYFOLDER = 15
+} QUERYOPTION;
+/*****************************************************************************
+ * IInternetProtocolInfo interface
+ */
+#ifndef __IInternetProtocolInfo_INTERFACE_DEFINED__
+#define __IInternetProtocolInfo_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInternetProtocolInfo, 0x79eac9ec, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IInternetProtocolInfo : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE ParseUrl(
+        LPCWSTR pwzUrl,
+        PARSEACTION ParseAction,
+        DWORD dwParseFlags,
+        LPWSTR pwzResult,
+        DWORD cchResult,
+        DWORD *pcchResult,
+        DWORD dwReserved) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CombineUrl(
+        LPCWSTR pwzBaseUrl,
+        LPCWSTR pwzRelativeUrl,
+        DWORD dwCombineFlags,
+        LPWSTR pwzResult,
+        DWORD cchResult,
+        DWORD *pcchResult,
+        DWORD dwReserved) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CompareUrl(
+        LPCWSTR pwzUrl1,
+        LPCWSTR pwzUrl2,
+        DWORD dwCompareFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE QueryInfo(
+        LPCWSTR pwzUrl,
+        QUERYOPTION OueryOption,
+        DWORD dwQueryFlags,
+        LPVOID pBuffer,
+        DWORD cbBuffer,
+        DWORD *pcbBuf,
+        DWORD dwReserved) = 0;
+
+};
+#else
+typedef struct IInternetProtocolInfoVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInternetProtocolInfo* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInternetProtocolInfo* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInternetProtocolInfo* This);
+
+    /*** IInternetProtocolInfo methods ***/
+    HRESULT (STDMETHODCALLTYPE *ParseUrl)(
+        IInternetProtocolInfo* This,
+        LPCWSTR pwzUrl,
+        PARSEACTION ParseAction,
+        DWORD dwParseFlags,
+        LPWSTR pwzResult,
+        DWORD cchResult,
+        DWORD *pcchResult,
+        DWORD dwReserved);
+
+    HRESULT (STDMETHODCALLTYPE *CombineUrl)(
+        IInternetProtocolInfo* This,
+        LPCWSTR pwzBaseUrl,
+        LPCWSTR pwzRelativeUrl,
+        DWORD dwCombineFlags,
+        LPWSTR pwzResult,
+        DWORD cchResult,
+        DWORD *pcchResult,
+        DWORD dwReserved);
+
+    HRESULT (STDMETHODCALLTYPE *CompareUrl)(
+        IInternetProtocolInfo* This,
+        LPCWSTR pwzUrl1,
+        LPCWSTR pwzUrl2,
+        DWORD dwCompareFlags);
+
+    HRESULT (STDMETHODCALLTYPE *QueryInfo)(
+        IInternetProtocolInfo* This,
+        LPCWSTR pwzUrl,
+        QUERYOPTION OueryOption,
+        DWORD dwQueryFlags,
+        LPVOID pBuffer,
+        DWORD cbBuffer,
+        DWORD *pcbBuf,
+        DWORD dwReserved);
+
+    END_INTERFACE
+} IInternetProtocolInfoVtbl;
+interface IInternetProtocolInfo {
+    CONST_VTBL IInternetProtocolInfoVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IInternetProtocolInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInternetProtocolInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInternetProtocolInfo_Release(This) (This)->lpVtbl->Release(This)
+/*** IInternetProtocolInfo methods ***/
+#define IInternetProtocolInfo_ParseUrl(This,pwzUrl,ParseAction,dwParseFlags,pwzResult,cchResult,pcchResult,dwReserved) (This)->lpVtbl->ParseUrl(This,pwzUrl,ParseAction,dwParseFlags,pwzResult,cchResult,pcchResult,dwReserved)
+#define IInternetProtocolInfo_CombineUrl(This,pwzBaseUrl,pwzRelativeUrl,dwCombineFlags,pwzResult,cchResult,pcchResult,dwReserved) (This)->lpVtbl->CombineUrl(This,pwzBaseUrl,pwzRelativeUrl,dwCombineFlags,pwzResult,cchResult,pcchResult,dwReserved)
+#define IInternetProtocolInfo_CompareUrl(This,pwzUrl1,pwzUrl2,dwCompareFlags) (This)->lpVtbl->CompareUrl(This,pwzUrl1,pwzUrl2,dwCompareFlags)
+#define IInternetProtocolInfo_QueryInfo(This,pwzUrl,OueryOption,dwQueryFlags,pBuffer,cbBuffer,pcbBuf,dwReserved) (This)->lpVtbl->QueryInfo(This,pwzUrl,OueryOption,dwQueryFlags,pBuffer,cbBuffer,pcbBuf,dwReserved)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInternetProtocolInfo_ParseUrl_Proxy(
+    IInternetProtocolInfo* This,
+    LPCWSTR pwzUrl,
+    PARSEACTION ParseAction,
+    DWORD dwParseFlags,
+    LPWSTR pwzResult,
+    DWORD cchResult,
+    DWORD *pcchResult,
+    DWORD dwReserved);
+void __RPC_STUB IInternetProtocolInfo_ParseUrl_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetProtocolInfo_CombineUrl_Proxy(
+    IInternetProtocolInfo* This,
+    LPCWSTR pwzBaseUrl,
+    LPCWSTR pwzRelativeUrl,
+    DWORD dwCombineFlags,
+    LPWSTR pwzResult,
+    DWORD cchResult,
+    DWORD *pcchResult,
+    DWORD dwReserved);
+void __RPC_STUB IInternetProtocolInfo_CombineUrl_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetProtocolInfo_CompareUrl_Proxy(
+    IInternetProtocolInfo* This,
+    LPCWSTR pwzUrl1,
+    LPCWSTR pwzUrl2,
+    DWORD dwCompareFlags);
+void __RPC_STUB IInternetProtocolInfo_CompareUrl_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetProtocolInfo_QueryInfo_Proxy(
+    IInternetProtocolInfo* This,
+    LPCWSTR pwzUrl,
+    QUERYOPTION OueryOption,
+    DWORD dwQueryFlags,
+    LPVOID pBuffer,
+    DWORD cbBuffer,
+    DWORD *pcbBuf,
+    DWORD dwReserved);
+void __RPC_STUB IInternetProtocolInfo_QueryInfo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInternetProtocolInfo_INTERFACE_DEFINED__ */
+
+#ifndef __IInternetSession_FWD_DEFINED__
+#define __IInternetSession_FWD_DEFINED__
+typedef interface IInternetSession IInternetSession;
+#endif
+
+typedef IInternetSession *LPIINTERNETSESSION;
+typedef enum _tagOIBDG_FLAGS {
+    OIBDG_APARTMENTTHREADED = 0x100,
+    OIBDG_DATAONLY = 0x1000
+} OIBDG_FLAGS;
+/*****************************************************************************
+ * IInternetSession interface
+ */
+#ifndef __IInternetSession_INTERFACE_DEFINED__
+#define __IInternetSession_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInternetSession, 0x79eac9e7, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IInternetSession : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE RegisterNameSpace(
+        IClassFactory *pCF,
+        REFCLSID rclsid,
+        LPCWSTR pwzProtocol,
+        ULONG cPatterns,
+        const LPCWSTR *ppwzPatterns,
+        DWORD dwReserved) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnregisterNameSpace(
+        IClassFactory *pCF,
+        LPCWSTR pszProtocol) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RegisterMimeFilter(
+        IClassFactory *pCF,
+        REFCLSID rclsid,
+        LPCWSTR pwzType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnregisterMimeFilter(
+        IClassFactory *pCF,
+        LPCWSTR pwzType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateBinding(
+        LPBC pBC,
+        LPCWSTR szUrl,
+        IUnknown *pUnkOuter,
+        IUnknown **ppUnk,
+        IInternetProtocol **ppOInetProt,
+        DWORD dwOption) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetSessionOption(
+        DWORD dwOption,
+        LPVOID pBuffer,
+        DWORD dwBufferLength,
+        DWORD dwReserved) = 0;
+
+};
+#else
+typedef struct IInternetSessionVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInternetSession* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInternetSession* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInternetSession* This);
+
+    /*** IInternetSession methods ***/
+    HRESULT (STDMETHODCALLTYPE *RegisterNameSpace)(
+        IInternetSession* This,
+        IClassFactory *pCF,
+        REFCLSID rclsid,
+        LPCWSTR pwzProtocol,
+        ULONG cPatterns,
+        const LPCWSTR *ppwzPatterns,
+        DWORD dwReserved);
+
+    HRESULT (STDMETHODCALLTYPE *UnregisterNameSpace)(
+        IInternetSession* This,
+        IClassFactory *pCF,
+        LPCWSTR pszProtocol);
+
+    HRESULT (STDMETHODCALLTYPE *RegisterMimeFilter)(
+        IInternetSession* This,
+        IClassFactory *pCF,
+        REFCLSID rclsid,
+        LPCWSTR pwzType);
+
+    HRESULT (STDMETHODCALLTYPE *UnregisterMimeFilter)(
+        IInternetSession* This,
+        IClassFactory *pCF,
+        LPCWSTR pwzType);
+
+    HRESULT (STDMETHODCALLTYPE *CreateBinding)(
+        IInternetSession* This,
+        LPBC pBC,
+        LPCWSTR szUrl,
+        IUnknown *pUnkOuter,
+        IUnknown **ppUnk,
+        IInternetProtocol **ppOInetProt,
+        DWORD dwOption);
+
+    HRESULT (STDMETHODCALLTYPE *SetSessionOption)(
+        IInternetSession* This,
+        DWORD dwOption,
+        LPVOID pBuffer,
+        DWORD dwBufferLength,
+        DWORD dwReserved);
+
+    END_INTERFACE
+} IInternetSessionVtbl;
+interface IInternetSession {
+    CONST_VTBL IInternetSessionVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IInternetSession_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInternetSession_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInternetSession_Release(This) (This)->lpVtbl->Release(This)
+/*** IInternetSession methods ***/
+#define IInternetSession_RegisterNameSpace(This,pCF,rclsid,pwzProtocol,cPatterns,ppwzPatterns,dwReserved) (This)->lpVtbl->RegisterNameSpace(This,pCF,rclsid,pwzProtocol,cPatterns,ppwzPatterns,dwReserved)
+#define IInternetSession_UnregisterNameSpace(This,pCF,pszProtocol) (This)->lpVtbl->UnregisterNameSpace(This,pCF,pszProtocol)
+#define IInternetSession_RegisterMimeFilter(This,pCF,rclsid,pwzType) (This)->lpVtbl->RegisterMimeFilter(This,pCF,rclsid,pwzType)
+#define IInternetSession_UnregisterMimeFilter(This,pCF,pwzType) (This)->lpVtbl->UnregisterMimeFilter(This,pCF,pwzType)
+#define IInternetSession_CreateBinding(This,pBC,szUrl,pUnkOuter,ppUnk,ppOInetProt,dwOption) (This)->lpVtbl->CreateBinding(This,pBC,szUrl,pUnkOuter,ppUnk,ppOInetProt,dwOption)
+#define IInternetSession_SetSessionOption(This,dwOption,pBuffer,dwBufferLength,dwReserved) (This)->lpVtbl->SetSessionOption(This,dwOption,pBuffer,dwBufferLength,dwReserved)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInternetSession_RegisterNameSpace_Proxy(
+    IInternetSession* This,
+    IClassFactory *pCF,
+    REFCLSID rclsid,
+    LPCWSTR pwzProtocol,
+    ULONG cPatterns,
+    const LPCWSTR *ppwzPatterns,
+    DWORD dwReserved);
+void __RPC_STUB IInternetSession_RegisterNameSpace_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetSession_UnregisterNameSpace_Proxy(
+    IInternetSession* This,
+    IClassFactory *pCF,
+    LPCWSTR pszProtocol);
+void __RPC_STUB IInternetSession_UnregisterNameSpace_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetSession_RegisterMimeFilter_Proxy(
+    IInternetSession* This,
+    IClassFactory *pCF,
+    REFCLSID rclsid,
+    LPCWSTR pwzType);
+void __RPC_STUB IInternetSession_RegisterMimeFilter_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetSession_UnregisterMimeFilter_Proxy(
+    IInternetSession* This,
+    IClassFactory *pCF,
+    LPCWSTR pwzType);
+void __RPC_STUB IInternetSession_UnregisterMimeFilter_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetSession_CreateBinding_Proxy(
+    IInternetSession* This,
+    LPBC pBC,
+    LPCWSTR szUrl,
+    IUnknown *pUnkOuter,
+    IUnknown **ppUnk,
+    IInternetProtocol **ppOInetProt,
+    DWORD dwOption);
+void __RPC_STUB IInternetSession_CreateBinding_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetSession_SetSessionOption_Proxy(
+    IInternetSession* This,
+    DWORD dwOption,
+    LPVOID pBuffer,
+    DWORD dwBufferLength,
+    DWORD dwReserved);
+void __RPC_STUB IInternetSession_SetSessionOption_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInternetSession_INTERFACE_DEFINED__ */
+
+#ifndef __IInternetSecurityMgrSite_FWD_DEFINED__
+#define __IInternetSecurityMgrSite_FWD_DEFINED__
+typedef interface IInternetSecurityMgrSite IInternetSecurityMgrSite;
+#endif
+
+/*****************************************************************************
+ * IInternetSecurityMgrSite interface
+ */
+#ifndef __IInternetSecurityMgrSite_INTERFACE_DEFINED__
+#define __IInternetSecurityMgrSite_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInternetSecurityMgrSite, 0x79eac9ed, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IInternetSecurityMgrSite : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetWindow(
+        HWND *phwnd) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnableModeless(
+        BOOL fEnable) = 0;
+
+};
+#else
+typedef struct IInternetSecurityMgrSiteVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInternetSecurityMgrSite* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInternetSecurityMgrSite* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInternetSecurityMgrSite* This);
+
+    /*** IInternetSecurityMgrSite methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetWindow)(
+        IInternetSecurityMgrSite* This,
+        HWND *phwnd);
+
+    HRESULT (STDMETHODCALLTYPE *EnableModeless)(
+        IInternetSecurityMgrSite* This,
+        BOOL fEnable);
+
+    END_INTERFACE
+} IInternetSecurityMgrSiteVtbl;
+interface IInternetSecurityMgrSite {
+    CONST_VTBL IInternetSecurityMgrSiteVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IInternetSecurityMgrSite_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInternetSecurityMgrSite_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInternetSecurityMgrSite_Release(This) (This)->lpVtbl->Release(This)
+/*** IInternetSecurityMgrSite methods ***/
+#define IInternetSecurityMgrSite_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)
+#define IInternetSecurityMgrSite_EnableModeless(This,fEnable) (This)->lpVtbl->EnableModeless(This,fEnable)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInternetSecurityMgrSite_GetWindow_Proxy(
+    IInternetSecurityMgrSite* This,
+    HWND *phwnd);
+void __RPC_STUB IInternetSecurityMgrSite_GetWindow_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetSecurityMgrSite_EnableModeless_Proxy(
+    IInternetSecurityMgrSite* This,
+    BOOL fEnable);
+void __RPC_STUB IInternetSecurityMgrSite_EnableModeless_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInternetSecurityMgrSite_INTERFACE_DEFINED__ */
+
+#define SID_SInternetSecurityManager IID_IInternetSecurityManager
+#ifndef __IInternetSecurityManager_FWD_DEFINED__
+#define __IInternetSecurityManager_FWD_DEFINED__
+typedef interface IInternetSecurityManager IInternetSecurityManager;
+#endif
+
+#define MAX_SIZE_SECURITY_ID 512
+typedef enum __WIDL_urlmon_generated_name_00000006 {
+    PUAF_DEFAULT = 0x0,
+    PUAF_NOUI = 0x1,
+    PUAF_ISFILE = 0x2,
+    PUAF_WARN_IF_DENIED = 0x4,
+    PUAF_FORCEUI_FOREGROUND = 0x8,
+    PUAF_CHECK_TIPS = 0x10
+} PUAF;
+typedef enum __WIDL_urlmon_generated_name_00000007 {
+    SZM_CREATE = 0x0,
+    SZM_DELETE = 0x1
+} SZM_FLAGS;
+/*****************************************************************************
+ * IInternetSecurityManager interface
+ */
+#ifndef __IInternetSecurityManager_INTERFACE_DEFINED__
+#define __IInternetSecurityManager_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInternetSecurityManager, 0x79eac9ee, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IInternetSecurityManager : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SetSecuritySite(
+        IInternetSecurityMgrSite *pSite) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSecuritySite(
+        IInternetSecurityMgrSite **ppSite) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE MapUrlToZone(
+        LPCWSTR pwszUrl,
+        DWORD *pdwZone,
+        DWORD dwFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSecurityId(
+        LPCWSTR pwszUrl,
+        BYTE *pbSecurityId,
+        DWORD *pcbSecurityId,
+        DWORD_PTR dwReserved) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ProcessUrlAction(
+        LPCWSTR pwszUrl,
+        DWORD dwAction,
+        BYTE *pPolicy,
+        DWORD cbPolicy,
+        BYTE *pContext,
+        DWORD cbContext,
+        DWORD dwFlags,
+        DWORD dwReserved) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE QueryCustomPolicy(
+        LPCWSTR pwszUrl,
+        REFGUID guidKey,
+        BYTE **ppPolicy,
+        DWORD *pcbPolicy,
+        BYTE *pContext,
+        DWORD cbContext,
+        DWORD dwReserved) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetZoneMapping(
+        DWORD dwZone,
+        LPCWSTR lpszPattern,
+        DWORD dwFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetZoneMappings(
+        DWORD dwZone,
+        IEnumString **ppenumString,
+        DWORD dwFlags) = 0;
+
+};
+#else
+typedef struct IInternetSecurityManagerVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInternetSecurityManager* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInternetSecurityManager* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInternetSecurityManager* This);
+
+    /*** IInternetSecurityManager methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetSecuritySite)(
+        IInternetSecurityManager* This,
+        IInternetSecurityMgrSite *pSite);
+
+    HRESULT (STDMETHODCALLTYPE *GetSecuritySite)(
+        IInternetSecurityManager* This,
+        IInternetSecurityMgrSite **ppSite);
+
+    HRESULT (STDMETHODCALLTYPE *MapUrlToZone)(
+        IInternetSecurityManager* This,
+        LPCWSTR pwszUrl,
+        DWORD *pdwZone,
+        DWORD dwFlags);
+
+    HRESULT (STDMETHODCALLTYPE *GetSecurityId)(
+        IInternetSecurityManager* This,
+        LPCWSTR pwszUrl,
+        BYTE *pbSecurityId,
+        DWORD *pcbSecurityId,
+        DWORD_PTR dwReserved);
+
+    HRESULT (STDMETHODCALLTYPE *ProcessUrlAction)(
+        IInternetSecurityManager* This,
+        LPCWSTR pwszUrl,
+        DWORD dwAction,
+        BYTE *pPolicy,
+        DWORD cbPolicy,
+        BYTE *pContext,
+        DWORD cbContext,
+        DWORD dwFlags,
+        DWORD dwReserved);
+
+    HRESULT (STDMETHODCALLTYPE *QueryCustomPolicy)(
+        IInternetSecurityManager* This,
+        LPCWSTR pwszUrl,
+        REFGUID guidKey,
+        BYTE **ppPolicy,
+        DWORD *pcbPolicy,
+        BYTE *pContext,
+        DWORD cbContext,
+        DWORD dwReserved);
+
+    HRESULT (STDMETHODCALLTYPE *SetZoneMapping)(
+        IInternetSecurityManager* This,
+        DWORD dwZone,
+        LPCWSTR lpszPattern,
+        DWORD dwFlags);
+
+    HRESULT (STDMETHODCALLTYPE *GetZoneMappings)(
+        IInternetSecurityManager* This,
+        DWORD dwZone,
+        IEnumString **ppenumString,
+        DWORD dwFlags);
+
+    END_INTERFACE
+} IInternetSecurityManagerVtbl;
+interface IInternetSecurityManager {
+    CONST_VTBL IInternetSecurityManagerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IInternetSecurityManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInternetSecurityManager_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInternetSecurityManager_Release(This) (This)->lpVtbl->Release(This)
+/*** IInternetSecurityManager methods ***/
+#define IInternetSecurityManager_SetSecuritySite(This,pSite) (This)->lpVtbl->SetSecuritySite(This,pSite)
+#define IInternetSecurityManager_GetSecuritySite(This,ppSite) (This)->lpVtbl->GetSecuritySite(This,ppSite)
+#define IInternetSecurityManager_MapUrlToZone(This,pwszUrl,pdwZone,dwFlags) (This)->lpVtbl->MapUrlToZone(This,pwszUrl,pdwZone,dwFlags)
+#define IInternetSecurityManager_GetSecurityId(This,pwszUrl,pbSecurityId,pcbSecurityId,dwReserved) (This)->lpVtbl->GetSecurityId(This,pwszUrl,pbSecurityId,pcbSecurityId,dwReserved)
+#define IInternetSecurityManager_ProcessUrlAction(This,pwszUrl,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved) (This)->lpVtbl->ProcessUrlAction(This,pwszUrl,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved)
+#define IInternetSecurityManager_QueryCustomPolicy(This,pwszUrl,guidKey,ppPolicy,pcbPolicy,pContext,cbContext,dwReserved) (This)->lpVtbl->QueryCustomPolicy(This,pwszUrl,guidKey,ppPolicy,pcbPolicy,pContext,cbContext,dwReserved)
+#define IInternetSecurityManager_SetZoneMapping(This,dwZone,lpszPattern,dwFlags) (This)->lpVtbl->SetZoneMapping(This,dwZone,lpszPattern,dwFlags)
+#define IInternetSecurityManager_GetZoneMappings(This,dwZone,ppenumString,dwFlags) (This)->lpVtbl->GetZoneMappings(This,dwZone,ppenumString,dwFlags)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInternetSecurityManager_SetSecuritySite_Proxy(
+    IInternetSecurityManager* This,
+    IInternetSecurityMgrSite *pSite);
+void __RPC_STUB IInternetSecurityManager_SetSecuritySite_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetSecurityManager_GetSecuritySite_Proxy(
+    IInternetSecurityManager* This,
+    IInternetSecurityMgrSite **ppSite);
+void __RPC_STUB IInternetSecurityManager_GetSecuritySite_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetSecurityManager_MapUrlToZone_Proxy(
+    IInternetSecurityManager* This,
+    LPCWSTR pwszUrl,
+    DWORD *pdwZone,
+    DWORD dwFlags);
+void __RPC_STUB IInternetSecurityManager_MapUrlToZone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetSecurityManager_GetSecurityId_Proxy(
+    IInternetSecurityManager* This,
+    LPCWSTR pwszUrl,
+    BYTE *pbSecurityId,
+    DWORD *pcbSecurityId,
+    DWORD_PTR dwReserved);
+void __RPC_STUB IInternetSecurityManager_GetSecurityId_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetSecurityManager_ProcessUrlAction_Proxy(
+    IInternetSecurityManager* This,
+    LPCWSTR pwszUrl,
+    DWORD dwAction,
+    BYTE *pPolicy,
+    DWORD cbPolicy,
+    BYTE *pContext,
+    DWORD cbContext,
+    DWORD dwFlags,
+    DWORD dwReserved);
+void __RPC_STUB IInternetSecurityManager_ProcessUrlAction_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetSecurityManager_QueryCustomPolicy_Proxy(
+    IInternetSecurityManager* This,
+    LPCWSTR pwszUrl,
+    REFGUID guidKey,
+    BYTE **ppPolicy,
+    DWORD *pcbPolicy,
+    BYTE *pContext,
+    DWORD cbContext,
+    DWORD dwReserved);
+void __RPC_STUB IInternetSecurityManager_QueryCustomPolicy_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetSecurityManager_SetZoneMapping_Proxy(
+    IInternetSecurityManager* This,
+    DWORD dwZone,
+    LPCWSTR lpszPattern,
+    DWORD dwFlags);
+void __RPC_STUB IInternetSecurityManager_SetZoneMapping_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetSecurityManager_GetZoneMappings_Proxy(
+    IInternetSecurityManager* This,
+    DWORD dwZone,
+    IEnumString **ppenumString,
+    DWORD dwFlags);
+void __RPC_STUB IInternetSecurityManager_GetZoneMappings_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInternetSecurityManager_INTERFACE_DEFINED__ */
+
+#define URLACTION_MIN                        0x00001000
+#define URLACTION_DOWNLOAD_MIN               0x00001000
+#define URLACTION_DOWNLOAD_SIGNED_ACTIVEX    0x00001001
+#define URLACTION_DOWNLOAD_UNSIGNED_ACTIVEX  0x00001004
+#define URLACTION_DOWNLOAD_CURR_MAX          0x00001004
+#define URLACTION_DOWNLOAD_MAX               0x000011ff
+#define URLACTION_ACTIVEX_MIN                     0x00001200
+#define URLACTION_ACTIVEX_RUN                     0x00001200
+#define URLPOLICY_ACTIVEX_CHECK_LIST              0x00010000
+#define URLACTION_ACTIVEX_OVERRIDE_OBJECT_SAFETY  0x00001201
+#define URLACTION_ACTIVEX_OVERRIDE_DATA_SAFETY    0x00001202
+#define URLACTION_ACTIVEX_OVERRIDE_SCRIPT_SAFETY  0x00001203
+#define URLACTION_SCRIPT_OVERRIDE_SAFETY          0x00001401
+#define URLACTION_ACTIVEX_CONFIRM_NOOBJECTSAFETY  0x00001204
+#define URLACTION_ACTIVEX_TREATASUNTRUSTED        0x00001205
+#define URLACTION_ACTIVEX_CURR_MAX                0x00001205
+#define URLACTION_ACTIVEX_MAX                     0x000013ff
+#define URLACTION_SCRIPT_MIN           0x00001400
+#define URLACTION_SCRIPT_RUN           0x00001400
+#define URLACTION_SCRIPT_JAVA_USE      0x00001402
+#define URLACTION_SCRIPT_SAFE_ACTIVEX  0x00001405
+#define URLACTION_CROSS_DOMAIN_DATA    0x00001406
+#define URLACTION_SCRIPT_PASTE         0x00001407
+#define URLACTION_SCRIPT_CURR_MAX      0x00001407
+#define URLACTION_SCRIPT_MAX           0x000015ff
+#define URLACTION_HTML_MIN                0x00001600
+#define URLACTION_HTML_SUBMIT_FORMS       0x00001601
+#define URLACTION_HTML_SUBMIT_FORMS_FROM  0x00001602
+#define URLACTION_HTML_SUBMIT_FORMS_TO    0x00001603
+#define URLACTION_HTML_FONT_DOWNLOAD      0x00001604
+#define URLACTION_HTML_JAVA_RUN           0x00001605
+#define URLACTION_HTML_USERDATA_SAVE      0x00001606
+#define URLACTION_HTML_SUBFRAME_NAVIGATE  0x00001607
+#define URLACTION_HTML_META_REFRESH       0x00001608
+#define URLACTION_HTML_MIXED_CONTENT      0x00001609
+#define URLACTION_HTML_MAX                0x000017ff
+#define URLACTION_SHELL_MIN              0x00001800
+#define URLACTION_SHELL_INSTALL_DTITEMS  0x00001800
+#define URLACTION_SHELL_MOVE_OR_COPY     0x00001802
+#define URLACTION_SHELL_FILE_DOWNLOAD    0x00001803
+#define URLACTION_SHELL_VERB             0x00001804
+#define URLACTION_SHELL_WEBVIEW_VERB     0x00001805
+#define URLACTION_SHELL_CURR_MAX         0x00001805
+#define URLACTION_SHELL_MAX              0x000019ff
+#define URLACTION_NETWORK_MIN                  0x00001a00
+#define URLACTION_CREDENTIALS_USE              0x00001a00
+#define URLACTION_AUTHENTICATE_CLIENT          0x00001a01
+#define URLACTION_COOKIES                      0x00001a02
+#define URLACTION_COOKIES_SESSION              0x00001a03
+#define URLACTION_CLIENT_CERT_PROMPT           0x00001a04
+#define URLACTION_COOKIES_THIRD_PARTY          0x00001a05
+#define URLACTION_COOKIES_SESSION_THIRD_PARTY  0x00001a06
+#define URLACTION_COOKIES_ENABLED              0x00001a10
+#define URLACTION_NETWORK_CURR_MAX             0x00001a10
+#define URLACTION_NETWORK_MAX                  0x00001bff
+#define URLACTION_JAVA_MIN          0x00001c00
+#define URLACTION_JAVA_PERMISSIONS  0x00001c00
+#define URLPOLICY_JAVA_PROHIBIT     0x00000000
+#define URLPOLICY_JAVA_HIGH         0x00010000
+#define URLPOLICY_JAVA_MEDIUM       0x00020000
+#define URLPOLICY_JAVA_LOW          0x00030000
+#define URLPOLICY_JAVA_CUSTOM       0x00800000
+#define URLACTION_JAVA_CURR_MAX     0x00001c00
+#define URLACTION_JAVA_MAX          0x00001cff
+#define URLACTION_INFODELIVERY_MIN                        0x00001d00
+#define URLACTION_INFODELIVERY_NO_ADDING_CHANNELS         0x00001d00
+#define URLACTION_INFODELIVERY_NO_EDITING_CHANNELS        0x00001d01
+#define URLACTION_INFODELIVERY_NO_REMOVING_CHANNELS       0x00001d02
+#define URLACTION_INFODELIVERY_NO_ADDING_SUBSCRIPTIONS    0x00001d03
+#define URLACTION_INFODELIVERY_NO_EDITING_SUBSCRIPTIONS   0x00001d04
+#define URLACTION_INFODELIVERY_NO_REMOVING_SUBSCRIPTIONS  0x00001d05
+#define URLACTION_INFODELIVERY_NO_CHANNEL_LOGGING         0x00001d06
+#define URLACTION_INFODELIVERY_CURR_MAX                   0x00001d06
+#define URLACTION_INFODELIVERY_MAX                        0x00001dff
+#define URLACTION_CHANNEL_SOFTDIST_MIN          0x00001e00
+#define URLACTION_CHANNEL_SOFTDIST_PERMISSIONS  0x00001e05
+#define URLPOLICY_CHANNEL_SOFTDIST_PROHIBIT     0x00010000
+#define URLPOLICY_CHANNEL_SOFTDIST_PRECACHE     0x00020000
+#define URLPOLICY_CHANNEL_SOFTDIST_AUTOINSTALL  0x00030000
+#define URLACTION_CHANNEL_SOFTDIST_MAX          0x00001eff
+#define URLPOLICY_ALLOW     0x00
+#define URLPOLICY_QUERY     0x01
+#define URLPOLICY_DISALLOW  0x03
+#define URLPOLICY_NOTIFY_ON_ALLOW     0x10
+#define URLPOLICY_NOTIFY_ON_DISALLOW  0x20
+#define URLPOLICY_LOG_ON_ALLOW     0x40
+#define URLPOLICY_LOG_ON_DISALLOW  0x80
+#define URLPOLICY_DONTCHECKDLGBOX     0x100
+#define URLPOLICY_CREDENTIALS_SILENT_LOGON_OK     0x00000000
+#define URLPOLICY_CREDENTIALS_MUST_PROMPT_USER    0x00010000
+#define URLPOLICY_CREDENTIALS_CONDITIONAL_PROMPT  0x00020000
+#define URLPOLICY_CREDENTIALS_ANONYMOUS_ONLY      0x00030000
+#define URLPOLICY_AUTHENTICATE_CLEARTEXT_OK        0x00000000
+#define URLPOLICY_AUTHENTICATE_CHALLENGE_RESPONSE  0x00010000
+#define URLPOLICY_AUTHENTICATE_MUTUAL_ONLY         0x00030000
+#define URLPOLICY_MASK_PERMISSIONS  0x0f
+#define GetUrlPolicyPermissions(dw)      (dw & URLPOLICY_MASK_PERMISSIONS)
+#define SetUrlPolicyPermissions(dw,dw2)  ((dw) = ((dw) & ~URLPOLICY_MASK_PERMISSIONS) | (dw2))
+#ifndef __IInternetZoneManager_FWD_DEFINED__
+#define __IInternetZoneManager_FWD_DEFINED__
+typedef interface IInternetZoneManager IInternetZoneManager;
+#endif
+
+typedef IInternetZoneManager *LPURLZONEMANAGER;
+typedef enum tagURLZONE {
+    URLZONE_PREDEFINED_MIN = 0,
+    URLZONE_LOCAL_MACHINE = 0,
+    URLZONE_INTRANET = 1,
+    URLZONE_TRUSTED = 2,
+    URLZONE_INTERNET = 3,
+    URLZONE_UNTRUSTED = 4,
+    URLZONE_PREDEFINED_MAX = 999,
+    URLZONE_USER_MIN = 1000,
+    URLZONE_USER_MAX = 10000
+} URLZONE;
+typedef enum tagURLTEMPLATE {
+    URLTEMPLATE_CUSTOM = 0x0,
+    URLTEMPLATE_PREDEFINED_MIN = 0x10000,
+    URLTEMPLATE_LOW = 0x10000,
+    URLTEMPLATE_MEDIUM = 0x11000,
+    URLTEMPLATE_HIGH = 0x12000,
+    URLTEMPLATE_PREDEFINED_MAX = 0x20000
+} URLTEMPLATE;
+typedef enum __WIDL_urlmon_generated_name_00000008 {
+    ZAFLAGS_CUSTOM_EDIT = 0x1,
+    ZAFLAGS_ADD_SITES = 0x2,
+    ZAFLAGS_REQUIRE_VERIFICATION = 0x4,
+    ZAFLAGS_INCLUDE_PROXY_OVERRIDE = 0x8,
+    ZAFLAGS_INCLUDE_INTRANET_SITES = 0x10,
+    ZAFLAGS_NO_UI = 0x20,
+    ZAFLAGS_SUPPORTS_VERIFICATION = 0x40,
+    ZAFLAGS_UNC_AS_INTRANET = 0x80
+} ZAFLAGS;
+enum {
+    MAX_ZONE_PATH = 260,
+    MAX_ZONE_DESCRIPTION = 200
+};
+
+typedef struct _ZONEATTRIBUTES {
+    ULONG cbSize;
+    WCHAR szDisplayName[260];
+    WCHAR szDescription[200];
+    WCHAR szIconPath[260];
+    DWORD dwTemplateMinLevel;
+    DWORD dwTemplateRecommended;
+    DWORD dwTemplateCurrentLevel;
+    DWORD dwFlags;
+} ZONEATTRIBUTES;
+typedef struct _ZONEATTRIBUTES *LPZONEATTRIBUTES;
+typedef enum _URLZONEREG {
+    URLZONEREG_DEFAULT = 0,
+    URLZONEREG_HKLM = 1,
+    URLZONEREG_HKCU = 2
+} URLZONEREG;
+/*****************************************************************************
+ * IInternetZoneManager interface
+ */
+#ifndef __IInternetZoneManager_INTERFACE_DEFINED__
+#define __IInternetZoneManager_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInternetZoneManager, 0x79eac9ef, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IInternetZoneManager : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetZoneAttributes(
+        DWORD dwZone,
+        ZONEATTRIBUTES *pZoneAttributes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetZoneAttributes(
+        DWORD dwZone,
+        ZONEATTRIBUTES *pZoneAttributes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetZoneCustomPolicy(
+        DWORD dwZone,
+        REFGUID guidKey,
+        BYTE **ppPolicy,
+        DWORD *pcbPolicy,
+        URLZONEREG ulrZoneReg) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetZoneCustomPolicy(
+        DWORD dwZone,
+        REFGUID guidKey,
+        BYTE *ppPolicy,
+        DWORD pcbPolicy,
+        URLZONEREG ulrZoneReg) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetZoneActionPolicy(
+        DWORD dwZone,
+        DWORD dwAction,
+        BYTE *pPolicy,
+        DWORD cbPolicy,
+        URLZONEREG urlZoneReg) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetZoneActionPolicy(
+        DWORD dwZone,
+        DWORD dwAction,
+        BYTE *pPolicy,
+        DWORD cbPolicy,
+        URLZONEREG urlZoneReg) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PromptAction(
+        DWORD dwAction,
+        HWND hwndParent,
+        LPCWSTR pwszUrl,
+        LPCWSTR pwszText,
+        DWORD dwPromptFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE LogAction(
+        DWORD dwAction,
+        LPCWSTR pwszUrl,
+        LPCWSTR pwszText,
+        DWORD dwLogFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateZoneEnumerator(
+        DWORD *pdwEnum,
+        DWORD *pdwCount,
+        DWORD dwFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetZoneAt(
+        DWORD dwEnum,
+        DWORD dwIndex,
+        DWORD *pdwZone) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DestroyZoneEnumerator(
+        DWORD dwEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CopyTemplatePoliciesToZone(
+        DWORD dwTemplate,
+        DWORD dwZone,
+        DWORD dwReserved) = 0;
+
+};
+#else
+typedef struct IInternetZoneManagerVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInternetZoneManager* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInternetZoneManager* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInternetZoneManager* This);
+
+    /*** IInternetZoneManager methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetZoneAttributes)(
+        IInternetZoneManager* This,
+        DWORD dwZone,
+        ZONEATTRIBUTES *pZoneAttributes);
+
+    HRESULT (STDMETHODCALLTYPE *SetZoneAttributes)(
+        IInternetZoneManager* This,
+        DWORD dwZone,
+        ZONEATTRIBUTES *pZoneAttributes);
+
+    HRESULT (STDMETHODCALLTYPE *GetZoneCustomPolicy)(
+        IInternetZoneManager* This,
+        DWORD dwZone,
+        REFGUID guidKey,
+        BYTE **ppPolicy,
+        DWORD *pcbPolicy,
+        URLZONEREG ulrZoneReg);
+
+    HRESULT (STDMETHODCALLTYPE *SetZoneCustomPolicy)(
+        IInternetZoneManager* This,
+        DWORD dwZone,
+        REFGUID guidKey,
+        BYTE *ppPolicy,
+        DWORD pcbPolicy,
+        URLZONEREG ulrZoneReg);
+
+    HRESULT (STDMETHODCALLTYPE *GetZoneActionPolicy)(
+        IInternetZoneManager* This,
+        DWORD dwZone,
+        DWORD dwAction,
+        BYTE *pPolicy,
+        DWORD cbPolicy,
+        URLZONEREG urlZoneReg);
+
+    HRESULT (STDMETHODCALLTYPE *SetZoneActionPolicy)(
+        IInternetZoneManager* This,
+        DWORD dwZone,
+        DWORD dwAction,
+        BYTE *pPolicy,
+        DWORD cbPolicy,
+        URLZONEREG urlZoneReg);
+
+    HRESULT (STDMETHODCALLTYPE *PromptAction)(
+        IInternetZoneManager* This,
+        DWORD dwAction,
+        HWND hwndParent,
+        LPCWSTR pwszUrl,
+        LPCWSTR pwszText,
+        DWORD dwPromptFlags);
+
+    HRESULT (STDMETHODCALLTYPE *LogAction)(
+        IInternetZoneManager* This,
+        DWORD dwAction,
+        LPCWSTR pwszUrl,
+        LPCWSTR pwszText,
+        DWORD dwLogFlags);
+
+    HRESULT (STDMETHODCALLTYPE *CreateZoneEnumerator)(
+        IInternetZoneManager* This,
+        DWORD *pdwEnum,
+        DWORD *pdwCount,
+        DWORD dwFlags);
+
+    HRESULT (STDMETHODCALLTYPE *GetZoneAt)(
+        IInternetZoneManager* This,
+        DWORD dwEnum,
+        DWORD dwIndex,
+        DWORD *pdwZone);
+
+    HRESULT (STDMETHODCALLTYPE *DestroyZoneEnumerator)(
+        IInternetZoneManager* This,
+        DWORD dwEnum);
+
+    HRESULT (STDMETHODCALLTYPE *CopyTemplatePoliciesToZone)(
+        IInternetZoneManager* This,
+        DWORD dwTemplate,
+        DWORD dwZone,
+        DWORD dwReserved);
+
+    END_INTERFACE
+} IInternetZoneManagerVtbl;
+interface IInternetZoneManager {
+    CONST_VTBL IInternetZoneManagerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IInternetZoneManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInternetZoneManager_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInternetZoneManager_Release(This) (This)->lpVtbl->Release(This)
+/*** IInternetZoneManager methods ***/
+#define IInternetZoneManager_GetZoneAttributes(This,dwZone,pZoneAttributes) (This)->lpVtbl->GetZoneAttributes(This,dwZone,pZoneAttributes)
+#define IInternetZoneManager_SetZoneAttributes(This,dwZone,pZoneAttributes) (This)->lpVtbl->SetZoneAttributes(This,dwZone,pZoneAttributes)
+#define IInternetZoneManager_GetZoneCustomPolicy(This,dwZone,guidKey,ppPolicy,pcbPolicy,ulrZoneReg) (This)->lpVtbl->GetZoneCustomPolicy(This,dwZone,guidKey,ppPolicy,pcbPolicy,ulrZoneReg)
+#define IInternetZoneManager_SetZoneCustomPolicy(This,dwZone,guidKey,ppPolicy,pcbPolicy,ulrZoneReg) (This)->lpVtbl->SetZoneCustomPolicy(This,dwZone,guidKey,ppPolicy,pcbPolicy,ulrZoneReg)
+#define IInternetZoneManager_GetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg) (This)->lpVtbl->GetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg)
+#define IInternetZoneManager_SetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg) (This)->lpVtbl->SetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg)
+#define IInternetZoneManager_PromptAction(This,dwAction,hwndParent,pwszUrl,pwszText,dwPromptFlags) (This)->lpVtbl->PromptAction(This,dwAction,hwndParent,pwszUrl,pwszText,dwPromptFlags)
+#define IInternetZoneManager_LogAction(This,dwAction,pwszUrl,pwszText,dwLogFlags) (This)->lpVtbl->LogAction(This,dwAction,pwszUrl,pwszText,dwLogFlags)
+#define IInternetZoneManager_CreateZoneEnumerator(This,pdwEnum,pdwCount,dwFlags) (This)->lpVtbl->CreateZoneEnumerator(This,pdwEnum,pdwCount,dwFlags)
+#define IInternetZoneManager_GetZoneAt(This,dwEnum,dwIndex,pdwZone) (This)->lpVtbl->GetZoneAt(This,dwEnum,dwIndex,pdwZone)
+#define IInternetZoneManager_DestroyZoneEnumerator(This,dwEnum) (This)->lpVtbl->DestroyZoneEnumerator(This,dwEnum)
+#define IInternetZoneManager_CopyTemplatePoliciesToZone(This,dwTemplate,dwZone,dwReserved) (This)->lpVtbl->CopyTemplatePoliciesToZone(This,dwTemplate,dwZone,dwReserved)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInternetZoneManager_GetZoneAttributes_Proxy(
+    IInternetZoneManager* This,
+    DWORD dwZone,
+    ZONEATTRIBUTES *pZoneAttributes);
+void __RPC_STUB IInternetZoneManager_GetZoneAttributes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetZoneManager_SetZoneAttributes_Proxy(
+    IInternetZoneManager* This,
+    DWORD dwZone,
+    ZONEATTRIBUTES *pZoneAttributes);
+void __RPC_STUB IInternetZoneManager_SetZoneAttributes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetZoneManager_GetZoneCustomPolicy_Proxy(
+    IInternetZoneManager* This,
+    DWORD dwZone,
+    REFGUID guidKey,
+    BYTE **ppPolicy,
+    DWORD *pcbPolicy,
+    URLZONEREG ulrZoneReg);
+void __RPC_STUB IInternetZoneManager_GetZoneCustomPolicy_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetZoneManager_SetZoneCustomPolicy_Proxy(
+    IInternetZoneManager* This,
+    DWORD dwZone,
+    REFGUID guidKey,
+    BYTE *ppPolicy,
+    DWORD pcbPolicy,
+    URLZONEREG ulrZoneReg);
+void __RPC_STUB IInternetZoneManager_SetZoneCustomPolicy_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetZoneManager_GetZoneActionPolicy_Proxy(
+    IInternetZoneManager* This,
+    DWORD dwZone,
+    DWORD dwAction,
+    BYTE *pPolicy,
+    DWORD cbPolicy,
+    URLZONEREG urlZoneReg);
+void __RPC_STUB IInternetZoneManager_GetZoneActionPolicy_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetZoneManager_SetZoneActionPolicy_Proxy(
+    IInternetZoneManager* This,
+    DWORD dwZone,
+    DWORD dwAction,
+    BYTE *pPolicy,
+    DWORD cbPolicy,
+    URLZONEREG urlZoneReg);
+void __RPC_STUB IInternetZoneManager_SetZoneActionPolicy_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetZoneManager_PromptAction_Proxy(
+    IInternetZoneManager* This,
+    DWORD dwAction,
+    HWND hwndParent,
+    LPCWSTR pwszUrl,
+    LPCWSTR pwszText,
+    DWORD dwPromptFlags);
+void __RPC_STUB IInternetZoneManager_PromptAction_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetZoneManager_LogAction_Proxy(
+    IInternetZoneManager* This,
+    DWORD dwAction,
+    LPCWSTR pwszUrl,
+    LPCWSTR pwszText,
+    DWORD dwLogFlags);
+void __RPC_STUB IInternetZoneManager_LogAction_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetZoneManager_CreateZoneEnumerator_Proxy(
+    IInternetZoneManager* This,
+    DWORD *pdwEnum,
+    DWORD *pdwCount,
+    DWORD dwFlags);
+void __RPC_STUB IInternetZoneManager_CreateZoneEnumerator_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetZoneManager_GetZoneAt_Proxy(
+    IInternetZoneManager* This,
+    DWORD dwEnum,
+    DWORD dwIndex,
+    DWORD *pdwZone);
+void __RPC_STUB IInternetZoneManager_GetZoneAt_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetZoneManager_DestroyZoneEnumerator_Proxy(
+    IInternetZoneManager* This,
+    DWORD dwEnum);
+void __RPC_STUB IInternetZoneManager_DestroyZoneEnumerator_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInternetZoneManager_CopyTemplatePoliciesToZone_Proxy(
+    IInternetZoneManager* This,
+    DWORD dwTemplate,
+    DWORD dwZone,
+    DWORD dwReserved);
+void __RPC_STUB IInternetZoneManager_CopyTemplatePoliciesToZone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInternetZoneManager_INTERFACE_DEFINED__ */
+
+typedef struct _tagSOFTDISTINFO {
+    ULONG cbSize;
+    DWORD dwFlags;
+    DWORD dwAdState;
+    LPWSTR szTitle;
+    LPWSTR szAbstract;
+    LPWSTR szHREF;
+    DWORD dwInstalledVersionMS;
+    DWORD dwInstalledVersionLS;
+    DWORD dwUpdateVersionMS;
+    DWORD dwUpdateVersionLS;
+    DWORD dwAdvertisedVersionMS;
+    DWORD dwAdvertisedVersionLS;
+    DWORD dwReserved;
+} SOFTDISTINFO;
+typedef struct _tagSOFTDISTINFO *LPSOFTDISTINFO;
+typedef struct _tagCODEBASEHOLD {
+    DWORD cbSize;
+    LPWSTR szDistUnit;
+    LPWSTR szCodeBase;
+    DWORD dwVersionMS;
+    DWORD dwVersionLS;
+    DWORD dwStyle;
+} CODEBASEHOLD;
+typedef struct _tagCODEBASEHOLD *LPCODEBASEHOLD;
+#ifndef __ISoftDistExt_FWD_DEFINED__
+#define __ISoftDistExt_FWD_DEFINED__
+typedef interface ISoftDistExt ISoftDistExt;
+#endif
+
+/*****************************************************************************
+ * ISoftDistExt interface
+ */
+#ifndef __ISoftDistExt_INTERFACE_DEFINED__
+#define __ISoftDistExt_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_ISoftDistExt, 0xb15b8dc1, 0xc7e1, 0x11d0, 0x86,0x80, 0x00,0xaa,0x00,0xbd,0xcb,0x71);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ISoftDistExt : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE ProcessSoftDist(
+        LPCWSTR szCDFURL,
+        IXMLElement *pSoftDistElement,
+        LPSOFTDISTINFO lpsdi) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFirstCodeBase(
+        LPWSTR *szCodeBase,
+        LPDWORD dwMaxSize) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetNextCodeBase(
+        LPWSTR *szCodeBase,
+        LPDWORD dwMaxSize) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AsyncInstallDistributionUnit(
+        IBindCtx *pbc,
+        LPVOID lpReserved,
+        DWORD flags,
+        LPCODEBASEHOLD lpcbh) = 0;
+
+};
+#else
+typedef struct ISoftDistExtVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ISoftDistExt* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ISoftDistExt* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ISoftDistExt* This);
+
+    /*** ISoftDistExt methods ***/
+    HRESULT (STDMETHODCALLTYPE *ProcessSoftDist)(
+        ISoftDistExt* This,
+        LPCWSTR szCDFURL,
+        IXMLElement *pSoftDistElement,
+        LPSOFTDISTINFO lpsdi);
+
+    HRESULT (STDMETHODCALLTYPE *GetFirstCodeBase)(
+        ISoftDistExt* This,
+        LPWSTR *szCodeBase,
+        LPDWORD dwMaxSize);
+
+    HRESULT (STDMETHODCALLTYPE *GetNextCodeBase)(
+        ISoftDistExt* This,
+        LPWSTR *szCodeBase,
+        LPDWORD dwMaxSize);
+
+    HRESULT (STDMETHODCALLTYPE *AsyncInstallDistributionUnit)(
+        ISoftDistExt* This,
+        IBindCtx *pbc,
+        LPVOID lpReserved,
+        DWORD flags,
+        LPCODEBASEHOLD lpcbh);
+
+    END_INTERFACE
+} ISoftDistExtVtbl;
+interface ISoftDistExt {
+    CONST_VTBL ISoftDistExtVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ISoftDistExt_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ISoftDistExt_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ISoftDistExt_Release(This) (This)->lpVtbl->Release(This)
+/*** ISoftDistExt methods ***/
+#define ISoftDistExt_ProcessSoftDist(This,szCDFURL,pSoftDistElement,lpsdi) (This)->lpVtbl->ProcessSoftDist(This,szCDFURL,pSoftDistElement,lpsdi)
+#define ISoftDistExt_GetFirstCodeBase(This,szCodeBase,dwMaxSize) (This)->lpVtbl->GetFirstCodeBase(This,szCodeBase,dwMaxSize)
+#define ISoftDistExt_GetNextCodeBase(This,szCodeBase,dwMaxSize) (This)->lpVtbl->GetNextCodeBase(This,szCodeBase,dwMaxSize)
+#define ISoftDistExt_AsyncInstallDistributionUnit(This,pbc,lpReserved,flags,lpcbh) (This)->lpVtbl->AsyncInstallDistributionUnit(This,pbc,lpReserved,flags,lpcbh)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE ISoftDistExt_ProcessSoftDist_Proxy(
+    ISoftDistExt* This,
+    LPCWSTR szCDFURL,
+    IXMLElement *pSoftDistElement,
+    LPSOFTDISTINFO lpsdi);
+void __RPC_STUB ISoftDistExt_ProcessSoftDist_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISoftDistExt_GetFirstCodeBase_Proxy(
+    ISoftDistExt* This,
+    LPWSTR *szCodeBase,
+    LPDWORD dwMaxSize);
+void __RPC_STUB ISoftDistExt_GetFirstCodeBase_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISoftDistExt_GetNextCodeBase_Proxy(
+    ISoftDistExt* This,
+    LPWSTR *szCodeBase,
+    LPDWORD dwMaxSize);
+void __RPC_STUB ISoftDistExt_GetNextCodeBase_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE ISoftDistExt_AsyncInstallDistributionUnit_Proxy(
+    ISoftDistExt* This,
+    IBindCtx *pbc,
+    LPVOID lpReserved,
+    DWORD flags,
+    LPCODEBASEHOLD lpcbh);
+void __RPC_STUB ISoftDistExt_AsyncInstallDistributionUnit_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __ISoftDistExt_INTERFACE_DEFINED__ */
+
+typedef enum _tagINTERNETFEATURELIST {
+    FEATURE_OBJECT_CACHING = 0,
+    FEATURE_ZONE_ELEVATION = 1,
+    FEATURE_MIME_HANDLING = 2,
+    FEATURE_MIME_SNIFFING = 3,
+    FEATURE_WINDOW_RESTRICTIONS = 4,
+    FEATURE_WEBOC_POPUPMANAGEMENT = 5,
+    FEATURE_BEHAVIORS = 6,
+    FEATURE_DISABLE_MK_PROTOCOL = 7,
+    FEATURE_LOCALMACHINE_LOCKDOWN = 8,
+    FEATURE_SECURITYBAND = 9,
+    FEATURE_RESTRICT_ACTIVEXINSTALL = 10,
+    FEATURE_VALIDATE_NAVIGATE_URL = 11,
+    FEATURE_RESTRICT_FILEDOWNLOAD = 12,
+    FEATURE_ADDON_MANAGEMENT = 13,
+    FEATURE_PROTOCOL_LOCKDOWN = 14,
+    FEATURE_HTTP_USERNAME_PASSWORD_DISABLE = 15,
+    FEATURE_SAFE_BINDTOOBJECT = 16,
+    FEATURE_UNC_SAVEDFILECHECK = 17,
+    FEATURE_GET_URL_DOM_FILEPATH_UNENCODED = 18,
+    FEATURE_TABBED_BROWSING = 19,
+    FEATURE_SSLUX = 20,
+    FEATURE_DISABLE_NAVIGATION_SOUNDS = 21,
+    FEATURE_DISABLE_LEGACY_COMPRESSION = 22,
+    FEATURE_FORCE_ADDR_AND_STATUS = 23,
+    FEATURE_XMLHTTP = 24,
+    FEATURE_DISABLE_TELNET_PROTOCOL = 25,
+    FEATURE_FEEDS = 26,
+    FEATURE_BLOCK_INPUT_PROMPTS = 27,
+    FEATURE_DOMSTORAGE = 28,
+    FEATURE_XDOMAINREQUEST = 29,
+    FEATURE_DATAURI = 30,
+    FEATURE_AJAX_CONNECTIONSERVICES = 31,
+    FEATURE_ENTRY_COUNT = 32
+} INTERNETFEATURELIST;
+#ifndef __IUri_FWD_DEFINED__
+#define __IUri_FWD_DEFINED__
+typedef interface IUri IUri;
+#endif
+
+typedef enum __WIDL_urlmon_generated_name_00000009 {
+    Uri_PROPERTY_ABSOLUTE_URI = 0,
+    Uri_PROPERTY_STRING_START = Uri_PROPERTY_ABSOLUTE_URI,
+    Uri_PROPERTY_AUTHORITY = 1,
+    Uri_PROPERTY_DISPLAY_URI = 2,
+    Uri_PROPERTY_DOMAIN = 3,
+    Uri_PROPERTY_EXTENSION = 4,
+    Uri_PROPERTY_FRAGMENT = 5,
+    Uri_PROPERTY_HOST = 6,
+    Uri_PROPERTY_PASSWORD = 7,
+    Uri_PROPERTY_PATH = 8,
+    Uri_PROPERTY_PATH_AND_QUERY = 9,
+    Uri_PROPERTY_QUERY = 10,
+    Uri_PROPERTY_RAW_URI = 11,
+    Uri_PROPERTY_SCHEME_NAME = 12,
+    Uri_PROPERTY_USER_INFO = 13,
+    Uri_PROPERTY_USER_NAME = 14,
+    Uri_PROPERTY_STRING_LAST = Uri_PROPERTY_USER_NAME,
+    Uri_PROPERTY_HOST_TYPE = 15,
+    Uri_PROPERTY_DWORD_START = Uri_PROPERTY_HOST_TYPE,
+    Uri_PROPERTY_PORT = 16,
+    Uri_PROPERTY_SCHEME = 17,
+    Uri_PROPERTY_ZONE = 18,
+    Uri_PROPERTY_DWORD_LAST = Uri_PROPERTY_ZONE
+} Uri_PROPERTY;
+/*****************************************************************************
+ * IUri interface
+ */
+#ifndef __IUri_INTERFACE_DEFINED__
+#define __IUri_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IUri, 0xa39ee748, 0x6a27, 0x4817, 0xa6,0xf2, 0x13,0x91,0x4b,0xef,0x58,0x90);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IUri : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetPropertyBSTR(
+        Uri_PROPERTY uriProp,
+        BSTR *pbstrProperty,
+        DWORD dwFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPropertyLength(
+        Uri_PROPERTY uriProp,
+        DWORD *pcchProperty,
+        DWORD dwFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPropertyDWORD(
+        Uri_PROPERTY uriProp,
+        DWORD *pdwProperty,
+        DWORD dwFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE HasProperty(
+        Uri_PROPERTY uriProp,
+        BOOL *pfHasProperty) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetAbsoluteUri(
+        BSTR *pbstrAbsoluteUri) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetAuthority(
+        BSTR *pbstrAuthority) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDisplayUri(
+        BSTR *pbstrDisplayString) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDomain(
+        BSTR *pbstrDomain) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetExtension(
+        BSTR *pbstrExtension) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFragment(
+        BSTR *pbstrFragment) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetHost(
+        BSTR *pbstrHost) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPassword(
+        BSTR *pbstrPassword) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPath(
+        BSTR *pbstrPath) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPathAndQuery(
+        BSTR *pbstrPathAndQuery) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetQuery(
+        BSTR *pbstrQuery) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetRawUri(
+        BSTR *pbstrRawUri) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSchemeName(
+        BSTR *pbstrSchemeName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetUserInfo(
+        BSTR *pbstrUserInfo) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetUserName(
+        BSTR *pbstrUserName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetHostType(
+        DWORD *pdwHostType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPort(
+        DWORD *pdwPort) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetScheme(
+        DWORD *pdwScheme) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetZone(
+        DWORD *pdwZone) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetProperties(
+        LPDWORD pdwFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsEqual(
+        IUri *pUri,
+        BOOL *pfEqual) = 0;
+
+};
+#else
+typedef struct IUriVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IUri* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IUri* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IUri* This);
+
+    /*** IUri methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetPropertyBSTR)(
+        IUri* This,
+        Uri_PROPERTY uriProp,
+        BSTR *pbstrProperty,
+        DWORD dwFlags);
+
+    HRESULT (STDMETHODCALLTYPE *GetPropertyLength)(
+        IUri* This,
+        Uri_PROPERTY uriProp,
+        DWORD *pcchProperty,
+        DWORD dwFlags);
+
+    HRESULT (STDMETHODCALLTYPE *GetPropertyDWORD)(
+        IUri* This,
+        Uri_PROPERTY uriProp,
+        DWORD *pdwProperty,
+        DWORD dwFlags);
+
+    HRESULT (STDMETHODCALLTYPE *HasProperty)(
+        IUri* This,
+        Uri_PROPERTY uriProp,
+        BOOL *pfHasProperty);
+
+    HRESULT (STDMETHODCALLTYPE *GetAbsoluteUri)(
+        IUri* This,
+        BSTR *pbstrAbsoluteUri);
+
+    HRESULT (STDMETHODCALLTYPE *GetAuthority)(
+        IUri* This,
+        BSTR *pbstrAuthority);
+
+    HRESULT (STDMETHODCALLTYPE *GetDisplayUri)(
+        IUri* This,
+        BSTR *pbstrDisplayString);
+
+    HRESULT (STDMETHODCALLTYPE *GetDomain)(
+        IUri* This,
+        BSTR *pbstrDomain);
+
+    HRESULT (STDMETHODCALLTYPE *GetExtension)(
+        IUri* This,
+        BSTR *pbstrExtension);
+
+    HRESULT (STDMETHODCALLTYPE *GetFragment)(
+        IUri* This,
+        BSTR *pbstrFragment);
+
+    HRESULT (STDMETHODCALLTYPE *GetHost)(
+        IUri* This,
+        BSTR *pbstrHost);
+
+    HRESULT (STDMETHODCALLTYPE *GetPassword)(
+        IUri* This,
+        BSTR *pbstrPassword);
+
+    HRESULT (STDMETHODCALLTYPE *GetPath)(
+        IUri* This,
+        BSTR *pbstrPath);
+
+    HRESULT (STDMETHODCALLTYPE *GetPathAndQuery)(
+        IUri* This,
+        BSTR *pbstrPathAndQuery);
+
+    HRESULT (STDMETHODCALLTYPE *GetQuery)(
+        IUri* This,
+        BSTR *pbstrQuery);
+
+    HRESULT (STDMETHODCALLTYPE *GetRawUri)(
+        IUri* This,
+        BSTR *pbstrRawUri);
+
+    HRESULT (STDMETHODCALLTYPE *GetSchemeName)(
+        IUri* This,
+        BSTR *pbstrSchemeName);
+
+    HRESULT (STDMETHODCALLTYPE *GetUserInfo)(
+        IUri* This,
+        BSTR *pbstrUserInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetUserName)(
+        IUri* This,
+        BSTR *pbstrUserName);
+
+    HRESULT (STDMETHODCALLTYPE *GetHostType)(
+        IUri* This,
+        DWORD *pdwHostType);
+
+    HRESULT (STDMETHODCALLTYPE *GetPort)(
+        IUri* This,
+        DWORD *pdwPort);
+
+    HRESULT (STDMETHODCALLTYPE *GetScheme)(
+        IUri* This,
+        DWORD *pdwScheme);
+
+    HRESULT (STDMETHODCALLTYPE *GetZone)(
+        IUri* This,
+        DWORD *pdwZone);
+
+    HRESULT (STDMETHODCALLTYPE *GetProperties)(
+        IUri* This,
+        LPDWORD pdwFlags);
+
+    HRESULT (STDMETHODCALLTYPE *IsEqual)(
+        IUri* This,
+        IUri *pUri,
+        BOOL *pfEqual);
+
+    END_INTERFACE
+} IUriVtbl;
+interface IUri {
+    CONST_VTBL IUriVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IUri_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IUri_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IUri_Release(This) (This)->lpVtbl->Release(This)
+/*** IUri methods ***/
+#define IUri_GetPropertyBSTR(This,uriProp,pbstrProperty,dwFlags) (This)->lpVtbl->GetPropertyBSTR(This,uriProp,pbstrProperty,dwFlags)
+#define IUri_GetPropertyLength(This,uriProp,pcchProperty,dwFlags) (This)->lpVtbl->GetPropertyLength(This,uriProp,pcchProperty,dwFlags)
+#define IUri_GetPropertyDWORD(This,uriProp,pdwProperty,dwFlags) (This)->lpVtbl->GetPropertyDWORD(This,uriProp,pdwProperty,dwFlags)
+#define IUri_HasProperty(This,uriProp,pfHasProperty) (This)->lpVtbl->HasProperty(This,uriProp,pfHasProperty)
+#define IUri_GetAbsoluteUri(This,pbstrAbsoluteUri) (This)->lpVtbl->GetAbsoluteUri(This,pbstrAbsoluteUri)
+#define IUri_GetAuthority(This,pbstrAuthority) (This)->lpVtbl->GetAuthority(This,pbstrAuthority)
+#define IUri_GetDisplayUri(This,pbstrDisplayString) (This)->lpVtbl->GetDisplayUri(This,pbstrDisplayString)
+#define IUri_GetDomain(This,pbstrDomain) (This)->lpVtbl->GetDomain(This,pbstrDomain)
+#define IUri_GetExtension(This,pbstrExtension) (This)->lpVtbl->GetExtension(This,pbstrExtension)
+#define IUri_GetFragment(This,pbstrFragment) (This)->lpVtbl->GetFragment(This,pbstrFragment)
+#define IUri_GetHost(This,pbstrHost) (This)->lpVtbl->GetHost(This,pbstrHost)
+#define IUri_GetPassword(This,pbstrPassword) (This)->lpVtbl->GetPassword(This,pbstrPassword)
+#define IUri_GetPath(This,pbstrPath) (This)->lpVtbl->GetPath(This,pbstrPath)
+#define IUri_GetPathAndQuery(This,pbstrPathAndQuery) (This)->lpVtbl->GetPathAndQuery(This,pbstrPathAndQuery)
+#define IUri_GetQuery(This,pbstrQuery) (This)->lpVtbl->GetQuery(This,pbstrQuery)
+#define IUri_GetRawUri(This,pbstrRawUri) (This)->lpVtbl->GetRawUri(This,pbstrRawUri)
+#define IUri_GetSchemeName(This,pbstrSchemeName) (This)->lpVtbl->GetSchemeName(This,pbstrSchemeName)
+#define IUri_GetUserInfo(This,pbstrUserInfo) (This)->lpVtbl->GetUserInfo(This,pbstrUserInfo)
+#define IUri_GetUserName(This,pbstrUserName) (This)->lpVtbl->GetUserName(This,pbstrUserName)
+#define IUri_GetHostType(This,pdwHostType) (This)->lpVtbl->GetHostType(This,pdwHostType)
+#define IUri_GetPort(This,pdwPort) (This)->lpVtbl->GetPort(This,pdwPort)
+#define IUri_GetScheme(This,pdwScheme) (This)->lpVtbl->GetScheme(This,pdwScheme)
+#define IUri_GetZone(This,pdwZone) (This)->lpVtbl->GetZone(This,pdwZone)
+#define IUri_GetProperties(This,pdwFlags) (This)->lpVtbl->GetProperties(This,pdwFlags)
+#define IUri_IsEqual(This,pUri,pfEqual) (This)->lpVtbl->IsEqual(This,pUri,pfEqual)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IUri_GetPropertyBSTR_Proxy(
+    IUri* This,
+    Uri_PROPERTY uriProp,
+    BSTR *pbstrProperty,
+    DWORD dwFlags);
+void __RPC_STUB IUri_GetPropertyBSTR_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IUri_GetPropertyLength_Proxy(
+    IUri* This,
+    Uri_PROPERTY uriProp,
+    DWORD *pcchProperty,
+    DWORD dwFlags);
+void __RPC_STUB IUri_GetPropertyLength_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IUri_GetPropertyDWORD_Proxy(
+    IUri* This,
+    Uri_PROPERTY uriProp,
+    DWORD *pdwProperty,
+    DWORD dwFlags);
+void __RPC_STUB IUri_GetPropertyDWORD_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IUri_HasProperty_Proxy(
+    IUri* This,
+    Uri_PROPERTY uriProp,
+    BOOL *pfHasProperty);
+void __RPC_STUB IUri_HasProperty_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IUri_GetAbsoluteUri_Proxy(
+    IUri* This,
+    BSTR *pbstrAbsoluteUri);
+void __RPC_STUB IUri_GetAbsoluteUri_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IUri_GetAuthority_Proxy(
+    IUri* This,
+    BSTR *pbstrAuthority);
+void __RPC_STUB IUri_GetAuthority_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IUri_GetDisplayUri_Proxy(
+    IUri* This,
+    BSTR *pbstrDisplayString);
+void __RPC_STUB IUri_GetDisplayUri_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IUri_GetDomain_Proxy(
+    IUri* This,
+    BSTR *pbstrDomain);
+void __RPC_STUB IUri_GetDomain_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IUri_GetExtension_Proxy(
+    IUri* This,
+    BSTR *pbstrExtension);
+void __RPC_STUB IUri_GetExtension_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IUri_GetFragment_Proxy(
+    IUri* This,
+    BSTR *pbstrFragment);
+void __RPC_STUB IUri_GetFragment_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IUri_GetHost_Proxy(
+    IUri* This,
+    BSTR *pbstrHost);
+void __RPC_STUB IUri_GetHost_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IUri_GetPassword_Proxy(
+    IUri* This,
+    BSTR *pbstrPassword);
+void __RPC_STUB IUri_GetPassword_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IUri_GetPath_Proxy(
+    IUri* This,
+    BSTR *pbstrPath);
+void __RPC_STUB IUri_GetPath_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IUri_GetPathAndQuery_Proxy(
+    IUri* This,
+    BSTR *pbstrPathAndQuery);
+void __RPC_STUB IUri_GetPathAndQuery_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IUri_GetQuery_Proxy(
+    IUri* This,
+    BSTR *pbstrQuery);
+void __RPC_STUB IUri_GetQuery_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IUri_GetRawUri_Proxy(
+    IUri* This,
+    BSTR *pbstrRawUri);
+void __RPC_STUB IUri_GetRawUri_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IUri_GetSchemeName_Proxy(
+    IUri* This,
+    BSTR *pbstrSchemeName);
+void __RPC_STUB IUri_GetSchemeName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IUri_GetUserInfo_Proxy(
+    IUri* This,
+    BSTR *pbstrUserInfo);
+void __RPC_STUB IUri_GetUserInfo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IUri_GetUserName_Proxy(
+    IUri* This,
+    BSTR *pbstrUserName);
+void __RPC_STUB IUri_GetUserName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IUri_GetHostType_Proxy(
+    IUri* This,
+    DWORD *pdwHostType);
+void __RPC_STUB IUri_GetHostType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IUri_GetPort_Proxy(
+    IUri* This,
+    DWORD *pdwPort);
+void __RPC_STUB IUri_GetPort_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IUri_GetScheme_Proxy(
+    IUri* This,
+    DWORD *pdwScheme);
+void __RPC_STUB IUri_GetScheme_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IUri_GetZone_Proxy(
+    IUri* This,
+    DWORD *pdwZone);
+void __RPC_STUB IUri_GetZone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IUri_GetProperties_Proxy(
+    IUri* This,
+    LPDWORD pdwFlags);
+void __RPC_STUB IUri_GetProperties_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IUri_IsEqual_Proxy(
+    IUri* This,
+    IUri *pUri,
+    BOOL *pfEqual);
+void __RPC_STUB IUri_IsEqual_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IUri_INTERFACE_DEFINED__ */
+
+#ifndef __IInternetProtocolEx_FWD_DEFINED__
+#define __IInternetProtocolEx_FWD_DEFINED__
+typedef interface IInternetProtocolEx IInternetProtocolEx;
+#endif
+
+/*****************************************************************************
+ * IInternetProtocolEx interface
+ */
+#ifndef __IInternetProtocolEx_INTERFACE_DEFINED__
+#define __IInternetProtocolEx_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInternetProtocolEx, 0xc7a98e66, 0x1010, 0x492c, 0xa1,0xc8, 0xc8,0x09,0xe1,0xf7,0x59,0x05);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IInternetProtocolEx : public IInternetProtocol
+{
+    virtual HRESULT STDMETHODCALLTYPE StartEx(
+        IUri *pUri,
+        IInternetProtocolSink *pOIProtSink,
+        IInternetBindInfo *pOIBindInfo,
+        DWORD grfPI,
+        HANDLE *dwReserved) = 0;
+
+};
+#else
+typedef struct IInternetProtocolExVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInternetProtocolEx* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInternetProtocolEx* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInternetProtocolEx* This);
+
+    /*** IInternetProtocolRoot methods ***/
+    HRESULT (STDMETHODCALLTYPE *Start)(
+        IInternetProtocolEx* This,
+        LPCWSTR szUrl,
+        IInternetProtocolSink *pOIProtSink,
+        IInternetBindInfo *pOIBindInfo,
+        DWORD grfPI,
+        DWORD dwReserved);
+
+    HRESULT (STDMETHODCALLTYPE *Continue)(
+        IInternetProtocolEx* This,
+        PROTOCOLDATA *pProtocolData);
+
+    HRESULT (STDMETHODCALLTYPE *Abort)(
+        IInternetProtocolEx* This,
+        HRESULT hrReason,
+        DWORD dwOptions);
+
+    HRESULT (STDMETHODCALLTYPE *Terminate)(
+        IInternetProtocolEx* This,
+        DWORD dwOptions);
+
+    HRESULT (STDMETHODCALLTYPE *Suspend)(
+        IInternetProtocolEx* This);
+
+    HRESULT (STDMETHODCALLTYPE *Resume)(
+        IInternetProtocolEx* This);
+
+    /*** IInternetProtocol methods ***/
+    HRESULT (STDMETHODCALLTYPE *Read)(
+        IInternetProtocolEx* This,
+        void *pv,
+        ULONG cb,
+        ULONG *pcbRead);
+
+    HRESULT (STDMETHODCALLTYPE *Seek)(
+        IInternetProtocolEx* This,
+        LARGE_INTEGER dlibMove,
+        DWORD dwOrigin,
+        ULARGE_INTEGER *plibNewPosition);
+
+    HRESULT (STDMETHODCALLTYPE *LockRequest)(
+        IInternetProtocolEx* This,
+        DWORD dwOptions);
+
+    HRESULT (STDMETHODCALLTYPE *UnlockRequest)(
+        IInternetProtocolEx* This);
+
+    /*** IInternetProtocolEx methods ***/
+    HRESULT (STDMETHODCALLTYPE *StartEx)(
+        IInternetProtocolEx* This,
+        IUri *pUri,
+        IInternetProtocolSink *pOIProtSink,
+        IInternetBindInfo *pOIBindInfo,
+        DWORD grfPI,
+        HANDLE *dwReserved);
+
+    END_INTERFACE
+} IInternetProtocolExVtbl;
+interface IInternetProtocolEx {
+    CONST_VTBL IInternetProtocolExVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IInternetProtocolEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInternetProtocolEx_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInternetProtocolEx_Release(This) (This)->lpVtbl->Release(This)
+/*** IInternetProtocolRoot methods ***/
+#define IInternetProtocolEx_Start(This,szUrl,pOIProtSink,pOIBindInfo,grfPI,dwReserved) (This)->lpVtbl->Start(This,szUrl,pOIProtSink,pOIBindInfo,grfPI,dwReserved)
+#define IInternetProtocolEx_Continue(This,pProtocolData) (This)->lpVtbl->Continue(This,pProtocolData)
+#define IInternetProtocolEx_Abort(This,hrReason,dwOptions) (This)->lpVtbl->Abort(This,hrReason,dwOptions)
+#define IInternetProtocolEx_Terminate(This,dwOptions) (This)->lpVtbl->Terminate(This,dwOptions)
+#define IInternetProtocolEx_Suspend(This) (This)->lpVtbl->Suspend(This)
+#define IInternetProtocolEx_Resume(This) (This)->lpVtbl->Resume(This)
+/*** IInternetProtocol methods ***/
+#define IInternetProtocolEx_Read(This,pv,cb,pcbRead) (This)->lpVtbl->Read(This,pv,cb,pcbRead)
+#define IInternetProtocolEx_Seek(This,dlibMove,dwOrigin,plibNewPosition) (This)->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition)
+#define IInternetProtocolEx_LockRequest(This,dwOptions) (This)->lpVtbl->LockRequest(This,dwOptions)
+#define IInternetProtocolEx_UnlockRequest(This) (This)->lpVtbl->UnlockRequest(This)
+/*** IInternetProtocolEx methods ***/
+#define IInternetProtocolEx_StartEx(This,pUri,pOIProtSink,pOIBindInfo,grfPI,dwReserved) (This)->lpVtbl->StartEx(This,pUri,pOIProtSink,pOIBindInfo,grfPI,dwReserved)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInternetProtocolEx_StartEx_Proxy(
+    IInternetProtocolEx* This,
+    IUri *pUri,
+    IInternetProtocolSink *pOIProtSink,
+    IInternetBindInfo *pOIBindInfo,
+    DWORD grfPI,
+    HANDLE *dwReserved);
+void __RPC_STUB IInternetProtocolEx_StartEx_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInternetProtocolEx_INTERFACE_DEFINED__ */
+
+DEFINE_GUID(CLSID_InternetSecurityManager, 0x7b8a2d94, 0x0ac9, 0x11d1, 0x89, 0x6c, 0x00, 0xc0, 0x4f, 0xB6, 0xbf, 0xc4);
+DEFINE_GUID(CLSID_InternetZoneManager, 0x7B8A2D95, 0x0AC9, 0x11D1, 0x89, 0x6C, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4);
+DEFINE_GUID(IID_IAsyncMoniker, 0x79EAC9D3, 0xBAF9, 0x11CE, 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B);
+DEFINE_GUID(IID_IAsyncBindCtx, 0x79EAC9D4, 0xBAF9, 0x11CE, 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B);
+DEFINE_GUID(CLSID_StdURLMoniker, 0x79EAC9E0, 0xBAF9, 0x11CE, 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B);
+DEFINE_GUID(CLSID_CdlProtocol, 0x3dd53d40, 0x7b8b, 0x11D0, 0xb0,0x13, 0x00,0xaa,0x00,0x59,0xce,0x02);
+DEFINE_GUID(CLSID_FileProtocol, 0x79EAC9E7, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B);
+DEFINE_GUID(CLSID_FtpProtocol, 0x79EAC9E3, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B);
+DEFINE_GUID(CLSID_GopherProtocol, 0x79EAC9E4, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B);
+DEFINE_GUID(CLSID_HttpProtocol, 0x79EAC9E2, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B);
+DEFINE_GUID(CLSID_HttpSProtocol, 0x79EAC9E5, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B);
+DEFINE_GUID(CLSID_MkProtocol, 0x79EAC9E6, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B);
+#define URLMON_OPTION_USERAGENT          0x10000001
+#define URLMON_OPTION_USERAGENT_REFRESH  0x10000002
+#define URLMON_OPTION_URL_ENCODING       0x10000004
+#define MK_S_ASYNCHRONOUS                _HRESULT_TYPEDEF_(0x000401E8)
+#ifndef S_ASYNCHRONOUS
+#define S_ASYNCHRONOUS                   MK_S_ASYNCHRONOUS
+#endif
+#define INET_E_ERROR_FIRST               _HRESULT_TYPEDEF_(0x800C0002)
+#define INET_E_INVALID_URL               _HRESULT_TYPEDEF_(0x800C0002)
+#define INET_E_NO_SESSION                _HRESULT_TYPEDEF_(0x800C0003)
+#define INET_E_CANNOT_CONNECT            _HRESULT_TYPEDEF_(0x800C0004)
+#define INET_E_RESOURCE_NOT_FOUND        _HRESULT_TYPEDEF_(0x800C0005)
+#define INET_E_OBJECT_NOT_FOUND          _HRESULT_TYPEDEF_(0x800C0006)
+#define INET_E_DATA_NOT_AVAILABLE        _HRESULT_TYPEDEF_(0x800C0007)
+#define INET_E_DOWNLOAD_FAILURE          _HRESULT_TYPEDEF_(0x800C0008)
+#define INET_E_AUTHENTICATION_REQUIRED   _HRESULT_TYPEDEF_(0x800C0009)
+#define INET_E_NO_VALID_MEDIA            _HRESULT_TYPEDEF_(0x800C000A)
+#define INET_E_CONNECTION_TIMEOUT        _HRESULT_TYPEDEF_(0x800C000B)
+#define INET_E_INVALID_REQUEST           _HRESULT_TYPEDEF_(0x800C000C)
+#define INET_E_UNKNOWN_PROTOCOL          _HRESULT_TYPEDEF_(0x800C000D)
+#define INET_E_SECURITY_PROBLEM          _HRESULT_TYPEDEF_(0x800C000E)
+#define INET_E_CANNOT_LOAD_DATA          _HRESULT_TYPEDEF_(0x800C000F)
+#define INET_E_CANNOT_INSTANTIATE_OBJECT _HRESULT_TYPEDEF_(0x800C0010)
+#define INET_E_USE_DEFAULT_PROTOCOLHANDLER _HRESULT_TYPEDEF_(0x800C0011)
+#define INET_E_QUERYOPTION_UNKNOWN       _HRESULT_TYPEDEF_(0x800C0013)
+#define INET_E_REDIRECT_FAILED           _HRESULT_TYPEDEF_(0x800C0014)
+#define INET_E_REDIRECT_TO_DIR           _HRESULT_TYPEDEF_(0x800C0015)
+#define INET_E_CANNOT_LOCK_REQUEST       _HRESULT_TYPEDEF_(0x800C0016)
+#define INET_E_ERROR_LAST                INET_E_REDIRECT_TO_DIR
+#define INET_E_DEFAULT_ACTION            INET_E_USE_DEFAULT_PROTOCOLHANDLER
+HRESULT WINAPI CoGetClassObjectFromURL(REFCLSID, LPCWSTR, DWORD, DWORD, LPCWSTR, LPBINDCTX, DWORD, LPVOID, REFIID, LPVOID*);
+HRESULT WINAPI CreateURLMoniker(IMoniker *pmkContext, LPCWSTR szURL, IMoniker **ppmk);
+HRESULT WINAPI RegisterBindStatusCallback(IBindCtx *pbc, IBindStatusCallback *pbsc, IBindStatusCallback **ppbsc, DWORD dwReserved);
+HRESULT WINAPI CompareSecurityIds(BYTE*,DWORD,BYTE*,DWORD,DWORD);
+HRESULT WINAPI URLDownloadToFileA(LPUNKNOWN,LPCSTR,LPCSTR,DWORD,LPBINDSTATUSCALLBACK);
+HRESULT WINAPI URLDownloadToFileW(LPUNKNOWN,LPCWSTR,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK);
+HRESULT WINAPI URLDownloadToCacheFileA(LPUNKNOWN,LPCSTR,LPSTR,DWORD,DWORD,LPBINDSTATUSCALLBACK);
+HRESULT WINAPI URLDownloadToCacheFileW(LPUNKNOWN,LPCWSTR,LPWSTR,DWORD,DWORD,LPBINDSTATUSCALLBACK);
+HRESULT WINAPI CoInternetGetSession(DWORD,IInternetSession**,DWORD);
+HRESULT WINAPI MkParseDisplayNameEx(IBindCtx*,LPCWSTR,ULONG*,IMoniker**);
+HRESULT WINAPI IsAsyncMoniker(IMoniker* pmk);
+HRESULT WINAPI CreateAsyncBindCtx(DWORD, IBindStatusCallback*, IEnumFORMATETC*, IBindCtx**);
+HRESULT WINAPI CreateAsyncBindCtxEx(IBindCtx*,DWORD,IBindStatusCallback*,IEnumFORMATETC*,IBindCtx**,DWORD);
+HRESULT WINAPI CoInternetCreateSecurityManager(IServiceProvider*,IInternetSecurityManager**,DWORD);
+HRESULT WINAPI CoInternetCombineUrl(LPCWSTR,LPCWSTR,DWORD,LPWSTR,DWORD,DWORD*,DWORD);
+HRESULT WINAPI CoInternetCompareUrl(LPCWSTR,LPCWSTR,DWORD);
+HRESULT WINAPI CoInternetCreateZoneManager(IServiceProvider*, IInternetZoneManager**, DWORD);
+HRESULT WINAPI CoInternetParseUrl(LPCWSTR,PARSEACTION,DWORD,LPWSTR,DWORD,DWORD*,DWORD);
+HRESULT WINAPI CoInternetQueryInfo(LPCWSTR,QUERYOPTION,DWORD,LPVOID,DWORD,DWORD*,DWORD);
+HRESULT WINAPI CoInternetSetFeatureEnabled(INTERNETFEATURELIST,DWORD,BOOL);
+HRESULT WINAPI CreateFormatEnumerator(UINT,FORMATETC*,IEnumFORMATETC**);
+HRESULT WINAPI GetSoftwareUpdateInfo( LPCWSTR szDistUnit, LPSOFTDISTINFO psdi);
+HRESULT WINAPI FaultInIEFeature(HWND,uCLSSPEC*,QUERYCONTEXT*,DWORD);
+HRESULT WINAPI FindMimeFromData(LPBC,LPCWSTR,LPVOID,DWORD,LPCWSTR,DWORD,LPWSTR*,DWORD);
+HRESULT WINAPI GetClassFileOrMime(LPBC,LPCWSTR,LPVOID,DWORD,LPCWSTR,DWORD,CLSID*);
+HRESULT WINAPI HlinkGoBack(IUnknown*);
+HRESULT WINAPI HlinkGoForward(IUnknown*);
+HRESULT WINAPI HlinkNavigateMoniker(IUnknown*,IMoniker*);
+HRESULT WINAPI HlinkNavigateString(IUnknown*,LPCWSTR);
+HRESULT WINAPI HlinkSimpleNavigateToMoniker(IMoniker*,LPCWSTR,LPCWSTR,IUnknown*,IBindCtx*,IBindStatusCallback*,DWORD,DWORD);
+HRESULT WINAPI HlinkSimpleNavigateToString(LPCWSTR,LPCWSTR,LPCWSTR,IUnknown*,IBindCtx*,IBindStatusCallback*,DWORD,DWORD);
+HRESULT WINAPI IsValidURL(LPBC,LPCWSTR,DWORD);
+HRESULT WINAPI ObtainUserAgentString(DWORD,LPSTR,DWORD*);
+HRESULT WINAPI RegisterFormatEnumerator(LPBC,IEnumFORMATETC*,DWORD);
+HRESULT WINAPI RevokeFormatEnumerator(LPBC,IEnumFORMATETC*);
+HRESULT WINAPI RevokeBindStatusCallback(LPBC,IBindStatusCallback*);
+HRESULT WINAPI CopyStgMedium(const STGMEDIUM*,STGMEDIUM*);
+void WINAPI ReleaseBindInfo(BINDINFO*);
+HRESULT WINAPI UrlMkGetSessionOption(DWORD,LPVOID,DWORD,DWORD*,DWORD);
+HRESULT WINAPI UrlMkSetSessionOption(DWORD,LPVOID,DWORD,DWORD);
+HRESULT WINAPI URLOpenStreamA(LPUNKNOWN,LPCSTR,DWORD,LPBINDSTATUSCALLBACK);
+HRESULT WINAPI URLOpenStreamW(LPUNKNOWN,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK);
+HRESULT WINAPI URLOpenPullStreamA(LPUNKNOWN,LPCSTR,DWORD,LPBINDSTATUSCALLBACK);
+HRESULT WINAPI URLOpenPullStreamW(LPUNKNOWN,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK);
+HRESULT WINAPI URLOpenBlockingStreamA(LPUNKNOWN,LPCSTR,LPSTREAM*,DWORD,LPBINDSTATUSCALLBACK);
+HRESULT WINAPI URLOpenBlockingStreamW(LPUNKNOWN,LPCWSTR,LPSTREAM*,DWORD,LPBINDSTATUSCALLBACK);
+#define OInetCombineUrl CoInternetCombineUrl
+#define OInetCompareUrl CoInternetCompareUrl
+#define OInetGetSession CoInternetGetSession
+BOOL WINAPI IsLoggingEnabledA(LPCSTR);
+BOOL WINAPI IsLoggingEnabledW(LPCWSTR);
+#define IsLoggingEnabled WINELIB_NAME_AW(IsLoggingEnabled)
+#define MKSYS_URLMONIKER 6
+#define URL_MK_LEGACY            0
+#define URL_MK_UNIFORM           1
+/* Begin additional prototypes for all interfaces */
+
+ULONG           __RPC_USER STGMEDIUM_UserSize     (ULONG *, ULONG, STGMEDIUM *);
+unsigned char * __RPC_USER STGMEDIUM_UserMarshal  (ULONG *, unsigned char *, STGMEDIUM *);
+unsigned char * __RPC_USER STGMEDIUM_UserUnmarshal(ULONG *, unsigned char *, STGMEDIUM *);
+void            __RPC_USER STGMEDIUM_UserFree     (ULONG *, STGMEDIUM *);
+ULONG           __RPC_USER HBITMAP_UserSize     (ULONG *, ULONG, HBITMAP *);
+unsigned char * __RPC_USER HBITMAP_UserMarshal  (ULONG *, unsigned char *, HBITMAP *);
+unsigned char * __RPC_USER HBITMAP_UserUnmarshal(ULONG *, unsigned char *, HBITMAP *);
+void            __RPC_USER HBITMAP_UserFree     (ULONG *, HBITMAP *);
+ULONG           __RPC_USER HMETAFILEPICT_UserSize     (ULONG *, ULONG, HMETAFILEPICT *);
+unsigned char * __RPC_USER HMETAFILEPICT_UserMarshal  (ULONG *, unsigned char *, HMETAFILEPICT *);
+unsigned char * __RPC_USER HMETAFILEPICT_UserUnmarshal(ULONG *, unsigned char *, HMETAFILEPICT *);
+void            __RPC_USER HMETAFILEPICT_UserFree     (ULONG *, HMETAFILEPICT *);
+ULONG           __RPC_USER HENHMETAFILE_UserSize     (ULONG *, ULONG, HENHMETAFILE *);
+unsigned char * __RPC_USER HENHMETAFILE_UserMarshal  (ULONG *, unsigned char *, HENHMETAFILE *);
+unsigned char * __RPC_USER HENHMETAFILE_UserUnmarshal(ULONG *, unsigned char *, HENHMETAFILE *);
+void            __RPC_USER HENHMETAFILE_UserFree     (ULONG *, HENHMETAFILE *);
+ULONG           __RPC_USER HGLOBAL_UserSize     (ULONG *, ULONG, HGLOBAL *);
+unsigned char * __RPC_USER HGLOBAL_UserMarshal  (ULONG *, unsigned char *, HGLOBAL *);
+unsigned char * __RPC_USER HGLOBAL_UserUnmarshal(ULONG *, unsigned char *, HGLOBAL *);
+void            __RPC_USER HGLOBAL_UserFree     (ULONG *, HGLOBAL *);
+ULONG           __RPC_USER CLIPFORMAT_UserSize     (ULONG *, ULONG, CLIPFORMAT *);
+unsigned char * __RPC_USER CLIPFORMAT_UserMarshal  (ULONG *, unsigned char *, CLIPFORMAT *);
+unsigned char * __RPC_USER CLIPFORMAT_UserUnmarshal(ULONG *, unsigned char *, CLIPFORMAT *);
+void            __RPC_USER CLIPFORMAT_UserFree     (ULONG *, CLIPFORMAT *);
+ULONG           __RPC_USER HWND_UserSize     (ULONG *, ULONG, HWND *);
+unsigned char * __RPC_USER HWND_UserMarshal  (ULONG *, unsigned char *, HWND *);
+unsigned char * __RPC_USER HWND_UserUnmarshal(ULONG *, unsigned char *, HWND *);
+void            __RPC_USER HWND_UserFree     (ULONG *, HWND *);
+ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
+unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
+unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
+void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WIDL_URLMON_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/urlmon.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/urlmon.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/urlmon.idl	(revision 16410)
@@ -0,0 +1,1615 @@
+/*
+ * Copyright (C) 2000 Ulrich Czekalla
+ * Copyright (C) 2003 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "objidl.idl";
+import "oleidl.idl";
+import "servprov.idl";
+import "msxml.idl";
+
+cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
+cpp_quote("#undef GetUserName")
+cpp_quote("#endif")
+
+interface IInternetProtocolSink;
+
+/*****************************************************************************
+ * IInternet interface
+ */
+[
+    object,
+    uuid(79eac9e0-baf9-11ce-8c82-00aa004ba90b),
+    pointer_default(unique),
+    local
+]
+interface IInternet : IUnknown
+{
+    typedef [unique] IInternet *LPIINTERNET;
+}
+
+/*****************************************************************************
+ * IBinding interface
+ */
+[
+    object,
+    uuid(79eac9c0-baf9-11ce-8c82-00aa004ba90b),
+    pointer_default(unique)
+]
+interface IBinding : IUnknown
+{
+    typedef [unique] IBinding *LPBINDING;
+
+    HRESULT Abort();
+    HRESULT Suspend();
+    HRESULT Resume();
+
+    HRESULT SetPriority(
+        [in] LONG nPriority);
+
+    HRESULT GetPriority(
+        [out] LONG * pnPriority);
+
+    [local]
+    HRESULT GetBindResult(
+        [out] CLSID *pclsidProtocol,
+        [out] DWORD *pdwResult,
+        [out] LPOLESTR *pszResult,
+        [in, out] DWORD *pdwReserved);
+
+    [call_as(GetBindResult)]
+    HRESULT RemoteGetBindResult(
+        [out] CLSID *pclsidProtocol,
+        [out] DWORD *pdwResult,
+        [out] LPOLESTR *pszResult,
+        [in] DWORD dwReserved);
+}
+
+
+/*****************************************************************************
+ * IBindStatusCallback interface
+ */
+[
+    object,
+    uuid(79eac9c1-baf9-11ce-8c82-00aa004ba90b),
+    pointer_default(unique)
+]
+interface IBindStatusCallback : IUnknown
+{
+    typedef [unique] IBindStatusCallback *LPBINDSTATUSCALLBACK;
+
+    typedef enum
+    {
+        BINDVERB_GET    = 0x00000000,
+        BINDVERB_POST   = 0x00000001,
+        BINDVERB_PUT    = 0x00000002,
+        BINDVERB_CUSTOM = 0x00000003
+    } BINDVERB;
+
+    typedef enum
+    {
+        BINDINFOF_URLENCODESTGMEDDATA = 0x00000001,
+        BINDINFOF_URLENCODEDEXTRAINFO = 0x00000002
+    } BINDINFOF;
+
+    typedef enum
+    {
+        BINDF_ASYNCHRONOUS = 0x00000001,
+        BINDF_ASYNCSTORAGE = 0x00000002,
+        BINDF_NOPROGRESSIVERENDERING = 0x00000004,
+        BINDF_OFFLINEOPERATION = 0x00000008,
+        BINDF_GETNEWESTVERSION = 0x00000010,
+        BINDF_NOWRITECACHE = 0x00000020,
+        BINDF_NEEDFILE = 0x00000040,
+        BINDF_PULLDATA = 0x00000080,
+        BINDF_IGNORESECURITYPROBLEM = 0x00000100,
+        BINDF_RESYNCHRONIZE = 0x00000200,
+        BINDF_HYPERLINK = 0x00000400,
+        BINDF_NO_UI = 0x00000800,
+        BINDF_SILENTOPERATION = 0x00001000,
+        BINDF_PRAGMA_NO_CACHE = 0x00002000,
+        BINDF_GETCLASSOBJECT = 0x00004000,
+        BINDF_RESERVED_1 = 0x00008000,
+        BINDF_FREE_THREADED = 0x00010000,
+        BINDF_DIRECT_READ = 0x00020000,
+        BINDF_FORMS_SUBMIT = 0x00040000,
+        BINDF_GETFROMCACHE_IF_NET_FAIL = 0x00080000,
+        BINDF_FROMURLMON = 0x00100000,
+        BINDF_FWD_BACK = 0x00200000,
+        BINDF_PREFERDEFAULTHANDLER = 0x00400000,
+        BINDF_ENFORCERESTRICTED = 0x00800000
+    } BINDF;
+
+    typedef enum
+    {
+        URL_ENCODING_NONE         = 0x00000000,
+        URL_ENCODING_ENABLE_UTF8  = 0x10000000,
+        URL_ENCODING_DISABLE_UTF8 = 0x20000000
+    } URL_ENCODING;
+
+    typedef struct _tagBINDINFO
+    {
+        ULONG cbSize;
+        LPWSTR szExtraInfo;
+        STGMEDIUM stgmedData;
+        DWORD grfBindInfoF;
+        DWORD dwBindVerb;
+        LPWSTR szCustomVerb;
+        DWORD cbstgmedData;
+        DWORD dwOptions;
+        DWORD dwOptionsFlags;
+        DWORD dwCodePage;
+        SECURITY_ATTRIBUTES securityAttributes;
+        IID iid;
+        IUnknown *pUnk;
+        DWORD dwReserved;
+    } BINDINFO;
+
+    typedef struct _REMSECURITY_ATTRIBUTES
+    {
+        DWORD nLength;
+        DWORD lpSecurityDescriptor;
+        BOOL bInheritHandle;
+    } REMSECURITY_ATTRIBUTES, *PREMSECURITY_ATTRIBUTES, *LPREMSECURITY_ATTRIBUTES;
+
+    typedef struct _tagRemBINDINFO
+    {
+        ULONG cbSize;
+        LPWSTR szExtraInfo;
+        DWORD grfBindInfoF;
+        DWORD dwBindVerb;
+        LPWSTR szCustomVerb;
+        DWORD cbstgmedData;
+        DWORD dwOptions;
+        DWORD dwOptionsFlags;
+        DWORD dwCodePage;
+        REMSECURITY_ATTRIBUTES securityAttributes;
+        IID iid;
+        IUnknown *pUnk;
+        DWORD dwReserved;
+    } RemBINDINFO;
+
+    typedef struct tagRemFORMATETC
+    {
+        DWORD cfFormat;
+        DWORD ptd;
+        DWORD dwAspect;
+        LONG lindex;
+        DWORD tymed;
+    } RemFORMATETC, *LPREMFORMATETC;
+
+    typedef enum
+    {
+        BSCF_FIRSTDATANOTIFICATION = 0x01,
+        BSCF_INTERMEDIATEDATANOTIFICATION = 0x02,
+        BSCF_LASTDATANOTIFICATION = 0x04,
+        BSCF_DATAFULLYAVAILABLE = 0x08,
+        BSCF_AVAILABLEDATASIZEUNKNOWN = 0x10
+    } BSCF;
+
+    typedef enum BINDSTATUS
+    {
+	BINDSTATUS_FINDINGRESOURCE = 1,
+	BINDSTATUS_CONNECTING,
+	BINDSTATUS_REDIRECTING,
+	BINDSTATUS_BEGINDOWNLOADDATA,
+	BINDSTATUS_DOWNLOADINGDATA,
+	BINDSTATUS_ENDDOWNLOADDATA,
+	BINDSTATUS_BEGINDOWNLOADCOMPONENTS,
+	BINDSTATUS_INSTALLINGCOMPONENTS,
+	BINDSTATUS_ENDDOWNLOADCOMPONENTS,
+	BINDSTATUS_USINGCACHEDCOPY,
+	BINDSTATUS_SENDINGREQUEST,
+	BINDSTATUS_CLASSIDAVAILABLE,
+	BINDSTATUS_MIMETYPEAVAILABLE,
+	BINDSTATUS_CACHEFILENAMEAVAILABLE,
+	BINDSTATUS_BEGINSYNCOPERATION,
+	BINDSTATUS_ENDSYNCOPERATION,
+	BINDSTATUS_BEGINUPLOADDATA,
+	BINDSTATUS_UPLOADINGDATA,
+	BINDSTATUS_ENDUPLOADINGDATA,
+	BINDSTATUS_PROTOCOLCLASSID,
+	BINDSTATUS_ENCODING,
+	BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE,
+	BINDSTATUS_CLASSINSTALLLOCATION,
+	BINDSTATUS_DECODING,
+	BINDSTATUS_LOADINGMIMEHANDLER,
+	BINDSTATUS_CONTENTDISPOSITIONATTACH,
+	BINDSTATUS_FILTERREPORTMIMETYPE,
+	BINDSTATUS_CLSIDCANINSTANTIATE,
+	BINDSTATUS_IUNKNOWNAVAILABLE,
+	BINDSTATUS_DIRECTBIND,
+	BINDSTATUS_RAWMIMETYPE,
+	BINDSTATUS_PROXYDETECTING,
+	BINDSTATUS_ACCEPTRANGES,
+        BINDSTATUS_COOKIE_SENT,
+        BINDSTATUS_COMPACT_POLICY_RECEIVED,
+        BINDSTATUS_COOKIE_SUPPRESSED,
+        BINDSTATUS_COOKIE_STATE_UNKNOWN,
+        BINDSTATUS_COOKIE_STATE_ACCEPT,
+        BINDSTATUS_COOKIE_STATE_REJECT,
+        BINDSTATUS_COOKIE_STATE_PROMPT,
+        BINDSTATUS_COOKIE_STATE_LEASH,
+        BINDSTATUS_COOKIE_STATE_DOWNGRADE,
+        BINDSTATUS_POLICY_HREF,
+        BINDSTATUS_P3P_HEADER,
+        BINDSTATUS_SESSION_COOKIE_RECEIVED,
+        BINDSTATUS_PERSISTENT_COOKIE_RECEIVED,
+        BINDSTATUS_SESSION_COOKIES_ALLOWED,
+        BINDSTATUS_CACHECONTROL,
+        BINDSTATUS_CONTENTDISPOSITIONFILENAME,
+        BINDSTATUS_MIMETEXTPLAINMISMATCH,
+        BINDSTATUS_PUBLISHERAVAILABLE,
+        BINDSTATUS_DISPLAYNAMEAVAILABLE
+    } BINDSTATUS;
+
+
+    HRESULT OnStartBinding(
+        [in] DWORD dwReserved,
+        [in] IBinding * pib);
+
+    HRESULT GetPriority(
+        [out] LONG * pnPriority);
+
+    HRESULT OnLowResource(
+        [in] DWORD reserved);
+
+    HRESULT OnProgress(
+        [in] ULONG ulProgress,
+        [in] ULONG ulProgressMax,
+        [in] ULONG ulStatusCode,
+        [in] LPCWSTR szStatusText);
+
+    HRESULT OnStopBinding(
+        [in] HRESULT hresult,
+        [in, unique] LPCWSTR szError);
+
+    [local]
+    HRESULT GetBindInfo(
+        [out] DWORD *grfBINDF,
+        [in, out, unique] BINDINFO * pbindinfo);
+
+    [call_as(GetBindInfo)]
+    HRESULT RemoteGetBindInfo(
+        [out] DWORD *grfBINDF,
+        [in, out, unique] RemBINDINFO * pbindinfo,
+        [in, out, unique] RemSTGMEDIUM* pstgmed);
+
+    [local]
+    HRESULT OnDataAvailable(
+        [in] DWORD grfBSCF,
+        [in] DWORD dwSize,
+        [in] FORMATETC* pformatetc,
+        [in] STGMEDIUM* pstgmed);
+
+    [call_as(OnDataAvailable)]
+    HRESULT RemoteOnDataAvailable(
+        [in] DWORD grfBSCF,
+        [in] DWORD dwSize,
+        [in] RemFORMATETC *pformatetc,
+        [in] RemSTGMEDIUM* pstgmed);
+
+    HRESULT OnObjectAvailable(
+        [in] REFIID riid,
+        [in, iid_is(riid)] IUnknown* punk);
+}
+
+/*****************************************************************************
+ * IAuthenticate interface
+ */
+[
+    local,
+    object,
+    uuid(79EAC9D0-BAf9-11CE-8C82-00AA004BA90B),
+    pointer_default(unique)
+]
+interface IAuthenticate : IUnknown
+{
+    typedef [unique] IAuthenticate *LPAUTHENTICATION;
+
+    HRESULT Authenticate(
+        [out] HWND* phwnd,
+        [out] LPWSTR *pszUsername,
+        [out] LPWSTR *pszPassword);
+}
+
+/*****************************************************************************
+ * IHttpNegotiate interface
+ */
+[
+    object,
+    uuid(79EAC9D2-BAF9-11CE-8C82-00AA004BA90B),
+    pointer_default(unique)
+]
+interface IHttpNegotiate : IUnknown
+{
+    typedef [unique] IHttpNegotiate *LPHTTPNEGOTIATE;
+
+    HRESULT BeginningTransaction(
+        [in] LPCWSTR szURL,
+        [in, unique] LPCWSTR szHeaders,
+        [in] DWORD dwReserved,
+        [out] LPWSTR *pszAdditionalHeaders);
+
+    HRESULT OnResponse(
+        [in] DWORD dwResponseCode,
+        [in, unique] LPCWSTR szResponseHeaders,
+        [in, unique] LPCWSTR szRequestHeaders,
+        [out] LPWSTR *pszAdditionalRequestHeaders);
+}
+
+/*****************************************************************************
+ * IHttpNegotiate2 interface
+ */
+[
+    object,
+    uuid(4F9F9FCB-E0F4-48eb-B7AB-FA2EA9365CB4),
+    pointer_default(unique)
+]
+interface IHttpNegotiate2 : IHttpNegotiate
+{
+    typedef [unique] IHttpNegotiate2 *LPHTTPNEGOTIATE2;
+
+    HRESULT GetRootSecurityId(
+         [out, size_is(*pcbSecurityId)] BYTE *pbSecurityId,
+         [in, out] DWORD *pcbSecurityId,
+         [in] DWORD_PTR dwReserved);
+}
+
+/*****************************************************************************
+ * IBindHost interface
+ */
+cpp_quote("#define SID_IBindHost IID_IBindHost")
+cpp_quote("#define SID_SBindHost IID_IBindHost")
+[
+    object,
+    uuid(fc4801a1-2ba9-11cf-a229-00aa003d7352),
+    pointer_default(unique)
+]
+interface IBindHost : IUnknown
+{
+    typedef [unique] IBindHost *LPBINDHOST;
+
+    HRESULT CreateMoniker(
+        [in] LPOLESTR szName,
+        [in] IBindCtx *pBC,
+        [out] IMoniker** ppmk,
+        [in] DWORD dwReserved);
+
+    [local]
+    HRESULT MonikerBindToStorage(
+        [in] IMoniker *pMk,
+        [in] IBindCtx *pBC,
+        [in] IBindStatusCallback *pBSC,
+        [in] REFIID riid,
+        [out] void **ppvObj);
+
+    [call_as(MonikerBindToStorage)]
+    HRESULT RemoteMonikerBindToStorage(
+        [in, unique] IMoniker *pMk,
+        [in, unique] IBindCtx *pBC,
+        [in, unique] IBindStatusCallback *pBSC,
+        [in] REFIID riid,
+        [out, iid_is(riid)] IUnknown **ppvObj);
+
+    [local]
+    HRESULT MonikerBindToObject(
+        [in] IMoniker *pMk,
+        [in] IBindCtx *pBC,
+        [in] IBindStatusCallback *pBSC,
+        [in] REFIID riid,
+        [out] void **ppvObj);
+
+    [call_as(MonikerBindToObject)]
+    HRESULT RemoteMonikerBindToObject(
+        [in, unique] IMoniker *pMk,
+        [in, unique] IBindCtx *pBC,
+        [in, unique] IBindStatusCallback *pBSC,
+        [in] REFIID riid,
+        [out, iid_is(riid)] IUnknown **ppvObj);
+}
+
+
+/*****************************************************************************
+ * IWinInetInfo interface
+ */
+[
+    object,
+    uuid(79eac9d6-bafa-11ce-8c82-00aa004ba90b),
+    pointer_default(unique)
+]
+interface IWinInetInfo : IUnknown
+{
+    typedef [unique] IWinInetInfo *LPWININETINFO;
+
+    [local]
+    HRESULT QueryOption(
+        [in] DWORD dwOption,
+        [in, out, size_is(*pcbBuf)] LPVOID pBuffer,
+        [in, out] DWORD *pcbBuf);
+
+    [call_as(QueryOption)]
+    HRESULT RemoteQueryOption(
+        [in] DWORD  dwOption,
+        [in, out, size_is(*pcbBuf)] BYTE *pBuffer,
+        [in, out] DWORD *pcbBuf);
+}
+
+
+
+/*****************************************************************************
+ * IWinInetHttpInfo interface
+ */
+[
+    object,
+    uuid(79eac9d8-bafa-11ce-8c82-00aa004ba90b),
+    pointer_default(unique)
+]
+interface IWinInetHttpInfo : IWinInetInfo
+{
+    typedef [unique] IWinInetHttpInfo *LPWININETHTTPINFO;
+
+    [local]
+    HRESULT QueryInfo(
+        [in] DWORD dwOption,
+        [in, out,size_is(*pcbBuf)] LPVOID pBuffer,
+        [in, out] DWORD *pcbBuf,
+        [in, out] DWORD *pdwFlags,
+        [in, out] DWORD *pdwReserved);
+
+    [call_as(QueryInfo)]
+    HRESULT RemoteQueryInfo(
+        [in] DWORD dwOption,
+        [in,out,size_is(*pcbBuf)] BYTE *pBuffer,
+        [in, out] DWORD *pcbBuf,
+        [in, out] DWORD *pdwFlags,
+        [in, out] DWORD *pdwReserved);
+}
+
+/*****************************************************************************
+ * IWindowForBindingUI interface
+ */
+[
+    local,
+    object,
+    uuid(79eac9d5-bafa-11ce-8c82-00aa004ba90b),
+    pointer_default(unique)
+]
+interface IWindowForBindingUI : IUnknown
+{
+    typedef [unique] IWindowForBindingUI *LPWINDOWFORBINDINGUI;
+
+    HRESULT GetWindow(
+        [in] REFGUID rguidReason,
+        [out] HWND *phwnd);
+}
+
+/*****************************************************************************
+ * IHttpSecurity interface
+ */
+[
+    object,
+    uuid(79eac9d7-bafa-11ce-8c82-00aa004ba90b),
+    pointer_default(unique)
+]
+interface IHttpSecurity : IWindowForBindingUI
+{
+    typedef [unique] IHttpSecurity *LPHTTPSECURITY;
+
+    HRESULT OnSecurityProblem(
+        [in] DWORD dwProblem);
+}
+
+
+/*****************************************************************************
+ * IPersistMoniker interface
+ */
+[
+    object,
+    uuid(79eac9c9-baf9-11ce-8c82-00aa004ba90b),
+    pointer_default(unique)
+]
+interface IPersistMoniker : IUnknown
+{
+    typedef [unique] IPersistMoniker *LPPERSISTMONIKER;
+
+    HRESULT GetClassID(
+        [out] CLSID *pClassID);
+
+    HRESULT IsDirty();
+
+    HRESULT Load(
+        [in] BOOL fFullyAvailable,
+        [in] IMoniker *pimkName,
+        [in] LPBC pibc,
+        [in] DWORD grfMode);
+
+    HRESULT Save(
+        [in] IMoniker *pimkName,
+        [in] LPBC pbc,
+        [in] BOOL fRemember);
+
+    HRESULT SaveCompleted(
+        [in] IMoniker *pimkName,
+        [in] LPBC pibc);
+
+    HRESULT GetCurMoniker(
+        [out] IMoniker **ppimkName);
+}
+
+/*****************************************************************************
+ * IMonikerProp interface
+ */
+[
+    object,
+    uuid(A5CA5F7F-1847-4D87-9C5B-918509F7511D),
+    pointer_default(unique)
+]
+interface IMonikerProp : IUnknown
+{
+    typedef [unique] IMonikerProp *LPMONIKERPROP;
+
+    typedef enum {
+        MIMETYPEPROP        = 0,
+        USE_SRC_URL         = 1,
+        CLASSIDPROP         = 2,
+        TRUSTEDDOWNLOADPROP = 3,
+        POPUPLEVELPROP      = 4
+    } MONIKERPROPERTY;
+
+    HRESULT PutProperty(
+        [in] MONIKERPROPERTY mkp,
+        [in] LPCWSTR val);
+}
+
+cpp_quote("#ifndef _LPBINDPROTOCOL_DEFINED")
+cpp_quote("#define _LPBINDPROTOCOL_DEFINED")
+
+/*****************************************************************************
+ * IBindProtocol interface
+ */
+[
+    local,
+    object,
+    uuid(79EAC9CD-BAF9-11CE-8C82-00AA004BA90B),
+    pointer_default(unique)
+]
+interface IBindProtocol : IUnknown
+{
+    typedef [unique] IBindProtocol *LPBINDPROTOCOL;
+
+    HRESULT CreateBinding(
+        [in] LPCWSTR szUrl,
+        [in] IBindCtx *pbc,
+        [out] IBinding **ppb);
+}
+
+cpp_quote("#endif /* !defined _LPBINDPROTOCOL_DEFINED */")
+
+/*****************************************************************************
+ * IInternetBindInfo interface
+ */
+[
+    local,
+    object,
+    uuid(79EAC9E1-BAF9-11CE-8C82-00AA004BA90B),
+    pointer_default(unique)
+]
+interface IInternetBindInfo : IUnknown
+{
+    typedef [unique] IInternetBindInfo *LPIINTERNETBINDINFO;
+
+    typedef enum tagBINDSTRING
+    {
+        BINDSTRING_HEADERS = 1,
+        BINDSTRING_ACCEPT_MIMES,
+        BINDSTRING_EXTRA_URL,
+        BINDSTRING_LANGUAGE,
+        BINDSTRING_USERNAME,
+        BINDSTRING_PASSWORD,
+        BINDSTRING_UA_PIXELS,
+        BINDSTRING_UA_COLOR,
+        BINDSTRING_OS,
+        BINDSTRING_USER_AGENT,
+        BINDSTRING_ACCEPT_ENCODINGS,
+        BINDSTRING_POST_COOKIE,
+        BINDSTRING_POST_DATA_MIME,
+        BINDSTRING_URL,
+        BINDSTRING_IID,
+        BINDSTRING_FLAG_BIND_TO_OBJECT,
+        BINDSTRING_PTR_BIND_CONTEXT
+    } BINDSTRING;
+
+    HRESULT GetBindInfo(
+        [out] DWORD *grfBINDF,
+        [in, out, unique] BINDINFO *pbindinfo);
+
+    HRESULT GetBindString(
+        [in]      ULONG ulStringType,
+        [in, out] LPOLESTR *ppwzStr,
+        [in]      ULONG cEl,
+        [in, out] ULONG *pcElFetched);
+}
+
+/*****************************************************************************
+ * IInternetPriority interface
+ */
+[
+    local,
+    object,
+    uuid(79EAC9EB-BAF9-11CE-8C82-00AA004BA90B),
+    pointer_default(unique)
+]
+interface IInternetPriority : IUnknown
+{
+    typedef [unique] IInternetPriority *LPIINTERNETPRIORITY;
+
+    HRESULT SetPriority([in] LONG nPriority);
+    HRESULT GetPriority([out] LONG *pnPriority);
+}
+
+/*****************************************************************************
+ * IInternetProtocolRoot interface
+ */
+[
+    local,
+    object,
+    uuid(79EAC9E3-BAF9-11CE-8C82-00AA004BA90B),
+    pointer_default(unique)
+]
+interface IInternetProtocolRoot : IUnknown
+{
+    typedef [unique] IInternetProtocolRoot *LPIINTERNETPROTOCOLROOT;
+
+    typedef enum _tagPI_FLAGS
+    {
+        PI_PARSE_URL         = 0x00000001,
+        PI_FILTER_MODE       = 0x00000002,
+        PI_FORCE_ASYNC       = 0x00000004,
+        PI_USE_WORKERTHREAD  = 0x00000008,
+        PI_MIMEVERIFICATION  = 0x00000010,
+        PI_CLSIDLOOKUP       = 0x00000020,
+        PI_DATAPROGRESS      = 0x00000040,
+        PI_SYNCHRONOUS       = 0x00000080,
+        PI_APARTMENTTHREADED = 0x00000100,
+        PI_CLASSINSTALL      = 0x00000200,
+        PD_FORCE_SWITCH      = 0x00010000
+    } PI_FLAGS;
+
+    typedef struct _tagPROTOCOLDATA
+    {
+        DWORD grfFlags;
+        DWORD dwState;
+        LPVOID pData;
+        ULONG cbData;
+    } PROTOCOLDATA;
+
+    HRESULT Start(
+        [in] LPCWSTR szUrl,
+        [in] IInternetProtocolSink *pOIProtSink,
+        [in] IInternetBindInfo *pOIBindInfo,
+        [in] DWORD grfPI,
+        [in] DWORD dwReserved);
+
+    HRESULT Continue(
+        [in] PROTOCOLDATA *pProtocolData);
+
+    HRESULT Abort(
+        [in] HRESULT hrReason,
+        [in] DWORD dwOptions);
+
+    HRESULT Terminate(
+        [in] DWORD dwOptions);
+
+    HRESULT Suspend();
+
+    HRESULT Resume();
+}
+
+/*****************************************************************************
+ * IInternetProtocolSink interface
+ */
+[
+    local,
+    object,
+    uuid(79EAC9E5-BAF9-11CE-8C82-00AA004BA90B),
+    pointer_default(unique)
+]
+interface IInternetProtocolSink : IUnknown
+{
+    typedef [unique] IInternetProtocolSink *LPIINTERNETPROTOCOLSINK;
+
+    HRESULT Switch(
+        [in] PROTOCOLDATA *pProtocolData);
+
+    HRESULT ReportProgress(
+        [in] ULONG ulStatusCode,
+        [in] LPCWSTR szStatusText);
+
+    HRESULT ReportData(
+        [in] DWORD grfBSCF,
+        [in] ULONG ulProgress,
+        [in] ULONG ulProgressMax);
+
+    HRESULT ReportResult(
+        [in] HRESULT hrResult,
+        [in] DWORD dwError,
+        [in] LPCWSTR szResult);
+}
+
+/*****************************************************************************
+ * IInternetProtocol interface
+ */
+[
+    local,
+    object,
+    uuid(79EAC9E4-BAF9-11CE-8C82-00AA004BA90B),
+    pointer_default(unique)
+]
+interface IInternetProtocol : IInternetProtocolRoot
+{
+    typedef [unique] IInternetProtocol *LPIINTERNETPROTOCOL;
+
+    HRESULT Read(
+        [in,out, size_is(cb), length_is(*pcbRead)] void *pv,
+        [in]  ULONG cb,
+        [out] ULONG *pcbRead);
+
+    HRESULT Seek(
+        [in]  LARGE_INTEGER dlibMove,
+        [in]  DWORD dwOrigin,
+        [out] ULARGE_INTEGER *plibNewPosition);
+
+    HRESULT LockRequest(
+        [in] DWORD dwOptions);
+
+    HRESULT UnlockRequest();
+}
+
+/*****************************************************************************
+ * IInternetProtocolInfo interface
+ */
+[
+    local,
+    object,
+    uuid(79eac9ec-baf9-11ce-8c82-00aa004ba90b),
+    pointer_default(unique)
+]
+interface IInternetProtocolInfo : IUnknown
+{
+    typedef [unique] IInternetProtocolInfo *LPIINTERNETPROTOCOLINFO;
+
+    typedef enum _tagPARSEACTION
+    {
+        PARSE_CANONICALIZE = 1,
+        PARSE_FRIENDLY,
+        PARSE_SECURITY_URL,
+        PARSE_ROOTDOCUMENT,
+        PARSE_DOCUMENT,
+        PARSE_ANCHOR,
+        PARSE_ENCODE,
+        PARSE_DECODE,
+        PARSE_PATH_FROM_URL,
+        PARSE_URL_FROM_PATH,
+        PARSE_MIME,
+        PARSE_SERVER,
+        PARSE_SCHEMA,
+        PARSE_SITE,
+        PARSE_DOMAIN,
+        PARSE_LOCATION,
+        PARSE_SECURITY_DOMAIN,
+        PARSE_ESCAPE,
+        PARSE_UNESCAPE
+    } PARSEACTION;
+
+    typedef enum _tagPSUACTION
+    {
+        PSU_DEFAULT = 1,
+        PSU_SECURITY_URL_ONLY
+    } PSUACTION;
+
+    typedef enum _tagQUERYOPTION
+    {
+        QUERY_EXPIRATION_DATE = 1,
+        QUERY_TIME_OF_LAST_CHANGE,
+        QUERY_CONTENT_ENCODING,
+        QUERY_CONTENT_TYPE,
+        QUERY_REFRESH,
+        QUERY_RECOMBINE,
+        QUERY_CAN_NAVIGATE,
+        QUERY_USES_NETWORK,
+        QUERY_IS_CACHED,
+        QUERY_IS_INSTALLEDENTRY,
+        QUERY_IS_CACHED_OR_MAPPED,
+        QUERY_USES_CACHE,
+        QUERY_IS_SECURE,
+        QUERY_IS_SAFE,
+        QUERY_USES_HISTORYFOLDER
+    } QUERYOPTION;
+
+    HRESULT ParseUrl(
+        [in] LPCWSTR pwzUrl,
+        [in] PARSEACTION ParseAction,
+        [in] DWORD dwParseFlags,
+        [out] LPWSTR pwzResult,
+        [in] DWORD cchResult,
+        [out] DWORD *pcchResult,
+        [in] DWORD dwReserved);
+
+    HRESULT CombineUrl(
+        [in] LPCWSTR pwzBaseUrl,
+        [in] LPCWSTR pwzRelativeUrl,
+        [in] DWORD dwCombineFlags,
+        [out] LPWSTR pwzResult,
+        [in] DWORD cchResult,
+        [out] DWORD *pcchResult,
+        [in] DWORD dwReserved);
+
+    HRESULT CompareUrl(
+        [in] LPCWSTR pwzUrl1,
+        [in] LPCWSTR pwzUrl2,
+        [in] DWORD dwCompareFlags);
+
+    HRESULT QueryInfo(
+        [in] LPCWSTR pwzUrl,
+        [in] QUERYOPTION OueryOption,
+        [in] DWORD dwQueryFlags,
+        [in, out,size_is(*pcbBuf)] LPVOID pBuffer,
+        [in] DWORD cbBuffer,
+        [in, out] DWORD *pcbBuf,
+        [in] DWORD dwReserved);
+}
+
+/*****************************************************************************
+ * IInternetSession interface
+ */
+[
+    local,
+    object,
+    uuid(79eac9e7-baf9-11ce-8c82-00aa004ba90b),
+    pointer_default(unique)
+]
+interface IInternetSession : IUnknown
+{
+    typedef [unique] IInternetSession *LPIINTERNETSESSION;
+
+    typedef enum _tagOIBDG_FLAGS
+    {
+        OIBDG_APARTMENTTHREADED = 0x0100,
+        OIBDG_DATAONLY          = 0x1000
+    } OIBDG_FLAGS;
+
+    HRESULT RegisterNameSpace(
+        [in] IClassFactory *pCF,
+        [in] REFCLSID rclsid,
+        [in] LPCWSTR pwzProtocol,
+        [in] ULONG cPatterns,
+        [in] const LPCWSTR *ppwzPatterns,
+        [in] DWORD dwReserved);
+
+    HRESULT UnregisterNameSpace(
+        [in] IClassFactory *pCF,
+        [in] LPCWSTR pszProtocol);
+
+    HRESULT RegisterMimeFilter(
+        [in] IClassFactory *pCF,
+        [in] REFCLSID rclsid,
+        [in] LPCWSTR pwzType);
+
+    HRESULT UnregisterMimeFilter(
+        [in] IClassFactory *pCF,
+        [in] LPCWSTR pwzType);
+
+    HRESULT CreateBinding(
+        [in] LPBC pBC,
+        [in] LPCWSTR szUrl,
+        [in] IUnknown *pUnkOuter,
+        [out, unique] IUnknown **ppUnk,
+        [out, unique] IInternetProtocol **ppOInetProt,
+        [in] DWORD dwOption);
+
+    HRESULT SetSessionOption(
+        [in] DWORD dwOption,
+        [in] LPVOID pBuffer,
+        [in] DWORD dwBufferLength,
+        [in] DWORD dwReserved);
+}
+
+/*****************************************************************************
+ * IInternetSecurityMgrSite interface
+ */
+[
+    local,
+    object,
+    uuid(79eac9ed-baf9-11ce-8c82-00aa004ba90b),
+    pointer_default(unique)
+]
+interface IInternetSecurityMgrSite : IUnknown
+{
+    HRESULT GetWindow(
+        [out] HWND *phwnd);
+
+    HRESULT EnableModeless(
+        [in] BOOL fEnable);
+}
+
+
+/*****************************************************************************
+ * IInternetSecurityManager interface
+ */
+cpp_quote("#define SID_SInternetSecurityManager IID_IInternetSecurityManager")
+
+[
+    object,
+    uuid(79eac9ee-baf9-11ce-8c82-00aa004ba90b),
+    pointer_default(unique)
+]
+interface IInternetSecurityManager : IUnknown
+{
+    HRESULT SetSecuritySite(
+        [in, unique] IInternetSecurityMgrSite *pSite);
+
+    HRESULT GetSecuritySite(
+        [out] IInternetSecurityMgrSite **ppSite);
+
+    HRESULT MapUrlToZone(
+        [in] LPCWSTR pwszUrl,
+        [out] DWORD *pdwZone,
+        [in] DWORD dwFlags);
+
+cpp_quote("#define MAX_SIZE_SECURITY_ID 512")
+
+    HRESULT GetSecurityId(
+        [in] LPCWSTR pwszUrl,
+        [out, size_is(*pcbSecurityId)] BYTE *pbSecurityId,
+        [in, out] DWORD *pcbSecurityId,
+        [in] DWORD_PTR dwReserved);
+
+
+    typedef enum {
+        PUAF_DEFAULT                = 0x00,
+        PUAF_NOUI                   = 0x01,
+        PUAF_ISFILE                 = 0x02,
+        PUAF_WARN_IF_DENIED         = 0x04,
+        PUAF_FORCEUI_FOREGROUND     = 0x08,
+        PUAF_CHECK_TIPS             = 0x10
+    } PUAF;
+
+    HRESULT ProcessUrlAction(
+        [in] LPCWSTR pwszUrl,
+        [in] DWORD dwAction,
+        [out, size_is(cbPolicy)] BYTE *pPolicy,
+        [in] DWORD cbPolicy,
+        [in] BYTE *pContext,
+        [in] DWORD cbContext,
+        [in] DWORD dwFlags,
+        [in] DWORD dwReserved);
+
+    HRESULT QueryCustomPolicy(
+        [in] LPCWSTR pwszUrl,
+        [in] REFGUID guidKey,
+        [out, size_is(,*pcbPolicy)] BYTE **ppPolicy,
+        [out] DWORD *pcbPolicy,
+        [in] BYTE *pContext,
+        [in] DWORD cbContext,
+        [in] DWORD dwReserved);
+
+    typedef enum {
+        SZM_CREATE = 0x0,
+        SZM_DELETE = 0x1
+    } SZM_FLAGS;
+
+    HRESULT SetZoneMapping(
+        [in] DWORD dwZone,
+        [in] LPCWSTR lpszPattern,
+        [in] DWORD dwFlags);
+
+    HRESULT GetZoneMappings(
+        [in] DWORD dwZone,
+        [out] IEnumString **ppenumString,
+        [in] DWORD dwFlags);
+}
+
+cpp_quote("#define URLACTION_MIN                        0x00001000")
+cpp_quote("#define URLACTION_DOWNLOAD_MIN               0x00001000")
+cpp_quote("#define URLACTION_DOWNLOAD_SIGNED_ACTIVEX    0x00001001")
+cpp_quote("#define URLACTION_DOWNLOAD_UNSIGNED_ACTIVEX  0x00001004")
+cpp_quote("#define URLACTION_DOWNLOAD_CURR_MAX          0x00001004")
+cpp_quote("#define URLACTION_DOWNLOAD_MAX               0x000011ff")
+
+cpp_quote("#define URLACTION_ACTIVEX_MIN                     0x00001200")
+cpp_quote("#define URLACTION_ACTIVEX_RUN                     0x00001200")
+cpp_quote("#define URLPOLICY_ACTIVEX_CHECK_LIST              0x00010000")
+cpp_quote("#define URLACTION_ACTIVEX_OVERRIDE_OBJECT_SAFETY  0x00001201")
+cpp_quote("#define URLACTION_ACTIVEX_OVERRIDE_DATA_SAFETY    0x00001202")
+cpp_quote("#define URLACTION_ACTIVEX_OVERRIDE_SCRIPT_SAFETY  0x00001203")
+cpp_quote("#define URLACTION_SCRIPT_OVERRIDE_SAFETY          0x00001401")
+cpp_quote("#define URLACTION_ACTIVEX_CONFIRM_NOOBJECTSAFETY  0x00001204")
+cpp_quote("#define URLACTION_ACTIVEX_TREATASUNTRUSTED        0x00001205")
+cpp_quote("#define URLACTION_ACTIVEX_CURR_MAX                0x00001205")
+cpp_quote("#define URLACTION_ACTIVEX_MAX                     0x000013ff")
+
+cpp_quote("#define URLACTION_SCRIPT_MIN           0x00001400")
+cpp_quote("#define URLACTION_SCRIPT_RUN           0x00001400")
+cpp_quote("#define URLACTION_SCRIPT_JAVA_USE      0x00001402")
+cpp_quote("#define URLACTION_SCRIPT_SAFE_ACTIVEX  0x00001405")
+cpp_quote("#define URLACTION_CROSS_DOMAIN_DATA    0x00001406")
+cpp_quote("#define URLACTION_SCRIPT_PASTE         0x00001407")
+cpp_quote("#define URLACTION_SCRIPT_CURR_MAX      0x00001407")
+cpp_quote("#define URLACTION_SCRIPT_MAX           0x000015ff")
+
+cpp_quote("#define URLACTION_HTML_MIN                0x00001600")
+cpp_quote("#define URLACTION_HTML_SUBMIT_FORMS       0x00001601")
+cpp_quote("#define URLACTION_HTML_SUBMIT_FORMS_FROM  0x00001602")
+cpp_quote("#define URLACTION_HTML_SUBMIT_FORMS_TO    0x00001603")
+cpp_quote("#define URLACTION_HTML_FONT_DOWNLOAD      0x00001604")
+cpp_quote("#define URLACTION_HTML_JAVA_RUN           0x00001605")
+cpp_quote("#define URLACTION_HTML_USERDATA_SAVE      0x00001606")
+cpp_quote("#define URLACTION_HTML_SUBFRAME_NAVIGATE  0x00001607")
+cpp_quote("#define URLACTION_HTML_META_REFRESH       0x00001608")
+cpp_quote("#define URLACTION_HTML_MIXED_CONTENT      0x00001609")
+cpp_quote("#define URLACTION_HTML_MAX                0x000017ff")
+
+cpp_quote("#define URLACTION_SHELL_MIN              0x00001800")
+cpp_quote("#define URLACTION_SHELL_INSTALL_DTITEMS  0x00001800")
+cpp_quote("#define URLACTION_SHELL_MOVE_OR_COPY     0x00001802")
+cpp_quote("#define URLACTION_SHELL_FILE_DOWNLOAD    0x00001803")
+cpp_quote("#define URLACTION_SHELL_VERB             0x00001804")
+cpp_quote("#define URLACTION_SHELL_WEBVIEW_VERB     0x00001805")
+cpp_quote("#define URLACTION_SHELL_CURR_MAX         0x00001805")
+cpp_quote("#define URLACTION_SHELL_MAX              0x000019ff")
+
+cpp_quote("#define URLACTION_NETWORK_MIN                  0x00001a00")
+cpp_quote("#define URLACTION_CREDENTIALS_USE              0x00001a00")
+cpp_quote("#define URLACTION_AUTHENTICATE_CLIENT          0x00001a01")
+cpp_quote("#define URLACTION_COOKIES                      0x00001a02")
+cpp_quote("#define URLACTION_COOKIES_SESSION              0x00001a03")
+cpp_quote("#define URLACTION_CLIENT_CERT_PROMPT           0x00001a04")
+cpp_quote("#define URLACTION_COOKIES_THIRD_PARTY          0x00001a05")
+cpp_quote("#define URLACTION_COOKIES_SESSION_THIRD_PARTY  0x00001a06")
+cpp_quote("#define URLACTION_COOKIES_ENABLED              0x00001a10")
+cpp_quote("#define URLACTION_NETWORK_CURR_MAX             0x00001a10")
+cpp_quote("#define URLACTION_NETWORK_MAX                  0x00001bff")
+
+cpp_quote("#define URLACTION_JAVA_MIN          0x00001c00")
+cpp_quote("#define URLACTION_JAVA_PERMISSIONS  0x00001c00")
+cpp_quote("#define URLPOLICY_JAVA_PROHIBIT     0x00000000")
+cpp_quote("#define URLPOLICY_JAVA_HIGH         0x00010000")
+cpp_quote("#define URLPOLICY_JAVA_MEDIUM       0x00020000")
+cpp_quote("#define URLPOLICY_JAVA_LOW          0x00030000")
+cpp_quote("#define URLPOLICY_JAVA_CUSTOM       0x00800000")
+cpp_quote("#define URLACTION_JAVA_CURR_MAX     0x00001c00")
+cpp_quote("#define URLACTION_JAVA_MAX          0x00001cff")
+
+cpp_quote("#define URLACTION_INFODELIVERY_MIN                        0x00001d00")
+cpp_quote("#define URLACTION_INFODELIVERY_NO_ADDING_CHANNELS         0x00001d00")
+cpp_quote("#define URLACTION_INFODELIVERY_NO_EDITING_CHANNELS        0x00001d01")
+cpp_quote("#define URLACTION_INFODELIVERY_NO_REMOVING_CHANNELS       0x00001d02")
+cpp_quote("#define URLACTION_INFODELIVERY_NO_ADDING_SUBSCRIPTIONS    0x00001d03")
+cpp_quote("#define URLACTION_INFODELIVERY_NO_EDITING_SUBSCRIPTIONS   0x00001d04")
+cpp_quote("#define URLACTION_INFODELIVERY_NO_REMOVING_SUBSCRIPTIONS  0x00001d05")
+cpp_quote("#define URLACTION_INFODELIVERY_NO_CHANNEL_LOGGING         0x00001d06")
+cpp_quote("#define URLACTION_INFODELIVERY_CURR_MAX                   0x00001d06")
+cpp_quote("#define URLACTION_INFODELIVERY_MAX                        0x00001dff")
+
+cpp_quote("#define URLACTION_CHANNEL_SOFTDIST_MIN          0x00001e00")
+cpp_quote("#define URLACTION_CHANNEL_SOFTDIST_PERMISSIONS  0x00001e05")
+cpp_quote("#define URLPOLICY_CHANNEL_SOFTDIST_PROHIBIT     0x00010000")
+cpp_quote("#define URLPOLICY_CHANNEL_SOFTDIST_PRECACHE     0x00020000")
+cpp_quote("#define URLPOLICY_CHANNEL_SOFTDIST_AUTOINSTALL  0x00030000")
+cpp_quote("#define URLACTION_CHANNEL_SOFTDIST_MAX          0x00001eff")
+
+cpp_quote("#define URLPOLICY_ALLOW     0x00")
+cpp_quote("#define URLPOLICY_QUERY     0x01")
+cpp_quote("#define URLPOLICY_DISALLOW  0x03")
+
+cpp_quote("#define URLPOLICY_NOTIFY_ON_ALLOW     0x10")
+cpp_quote("#define URLPOLICY_NOTIFY_ON_DISALLOW  0x20")
+
+cpp_quote("#define URLPOLICY_LOG_ON_ALLOW     0x40")
+cpp_quote("#define URLPOLICY_LOG_ON_DISALLOW  0x80")
+
+cpp_quote("#define URLPOLICY_DONTCHECKDLGBOX     0x100")
+
+cpp_quote("#define URLPOLICY_CREDENTIALS_SILENT_LOGON_OK     0x00000000")
+cpp_quote("#define URLPOLICY_CREDENTIALS_MUST_PROMPT_USER    0x00010000")
+cpp_quote("#define URLPOLICY_CREDENTIALS_CONDITIONAL_PROMPT  0x00020000")
+cpp_quote("#define URLPOLICY_CREDENTIALS_ANONYMOUS_ONLY      0x00030000")
+
+cpp_quote("#define URLPOLICY_AUTHENTICATE_CLEARTEXT_OK        0x00000000")
+cpp_quote("#define URLPOLICY_AUTHENTICATE_CHALLENGE_RESPONSE  0x00010000")
+cpp_quote("#define URLPOLICY_AUTHENTICATE_MUTUAL_ONLY         0x00030000")
+
+cpp_quote("#define URLPOLICY_MASK_PERMISSIONS  0x0f")
+cpp_quote("#define GetUrlPolicyPermissions(dw)      (dw & URLPOLICY_MASK_PERMISSIONS)")
+cpp_quote("#define SetUrlPolicyPermissions(dw,dw2)  ((dw) = ((dw) & ~URLPOLICY_MASK_PERMISSIONS) | (dw2))")
+
+/*****************************************************************************
+ * IInternetZoneManager interface
+ */
+[
+    local,
+    object,
+    uuid(79EAC9EF-BAf9-11CE-8C82-00AA004BA90B),
+    pointer_default(unique)
+]
+interface IInternetZoneManager : IUnknown
+{
+    typedef [unique] IInternetZoneManager* LPURLZONEMANAGER;
+
+    typedef enum tagURLZONE
+    {
+        URLZONE_PREDEFINED_MIN  = 0,
+        URLZONE_LOCAL_MACHINE   = 0,
+        URLZONE_INTRANET        = 1,
+        URLZONE_TRUSTED         = 2,
+        URLZONE_INTERNET        = 3,
+        URLZONE_UNTRUSTED       = 4,
+        URLZONE_PREDEFINED_MAX  = 999,
+        URLZONE_USER_MIN        = 1000,
+        URLZONE_USER_MAX        = 10000,
+    }  URLZONE;
+
+    typedef enum tagURLTEMPLATE
+    {
+        URLTEMPLATE_CUSTOM         = 0x00000,
+        URLTEMPLATE_PREDEFINED_MIN = 0x10000,
+        URLTEMPLATE_LOW            = 0x10000,
+        URLTEMPLATE_MEDIUM         = 0x11000,
+        URLTEMPLATE_HIGH           = 0x12000,
+        URLTEMPLATE_PREDEFINED_MAX = 0x20000,
+    } URLTEMPLATE ;
+
+    typedef enum {
+        ZAFLAGS_CUSTOM_EDIT            = 0x00000001,
+        ZAFLAGS_ADD_SITES              = 0x00000002,
+        ZAFLAGS_REQUIRE_VERIFICATION   = 0x00000004,
+        ZAFLAGS_INCLUDE_PROXY_OVERRIDE = 0x00000008,
+        ZAFLAGS_INCLUDE_INTRANET_SITES = 0x00000010,
+        ZAFLAGS_NO_UI                  = 0x00000020,
+        ZAFLAGS_SUPPORTS_VERIFICATION  = 0x00000040,
+        ZAFLAGS_UNC_AS_INTRANET        = 0x00000080,
+    } ZAFLAGS ;
+
+    enum {
+        MAX_ZONE_PATH        = 260,
+        MAX_ZONE_DESCRIPTION = 200
+    };
+
+    typedef struct _ZONEATTRIBUTES {
+        ULONG cbSize;
+        WCHAR szDisplayName[MAX_ZONE_PATH];
+        WCHAR szDescription[MAX_ZONE_DESCRIPTION];
+        WCHAR szIconPath[MAX_ZONE_PATH];
+        DWORD dwTemplateMinLevel;
+        DWORD dwTemplateRecommended;
+        DWORD dwTemplateCurrentLevel;
+        DWORD dwFlags;
+    } ZONEATTRIBUTES, *LPZONEATTRIBUTES;
+
+    typedef enum _URLZONEREG {
+        URLZONEREG_DEFAULT,
+        URLZONEREG_HKLM,
+        URLZONEREG_HKCU
+    } URLZONEREG;
+
+    HRESULT GetZoneAttributes(
+        [in]              DWORD dwZone,
+        [in, out, unique] ZONEATTRIBUTES* pZoneAttributes);
+
+    HRESULT SetZoneAttributes(
+        [in] DWORD dwZone,
+        [in] ZONEATTRIBUTES* pZoneAttributes);
+
+    HRESULT GetZoneCustomPolicy(
+        [in]  DWORD dwZone,
+        [in]  REFGUID guidKey,
+        [out] BYTE **ppPolicy,
+        [out] DWORD* pcbPolicy,
+        [in]  URLZONEREG ulrZoneReg);
+
+    HRESULT SetZoneCustomPolicy(
+        [in] DWORD dwZone,
+        [in] REFGUID guidKey,
+        [in] BYTE *ppPolicy,
+        [in] DWORD pcbPolicy,
+        [in] URLZONEREG ulrZoneReg);
+
+    HRESULT GetZoneActionPolicy(
+        [in]  DWORD dwZone,
+        [in]  DWORD dwAction,
+        [out] BYTE* pPolicy,
+        [in]  DWORD cbPolicy,
+        [in]  URLZONEREG urlZoneReg);
+
+    HRESULT SetZoneActionPolicy(
+        [in] DWORD dwZone,
+        [in] DWORD dwAction,
+        [in] BYTE* pPolicy,
+        [in] DWORD cbPolicy,
+        [in] URLZONEREG urlZoneReg);
+
+    HRESULT PromptAction(
+        [in] DWORD dwAction,
+        [in] HWND hwndParent,
+        [in] LPCWSTR pwszUrl,
+        [in] LPCWSTR pwszText,
+        [in] DWORD dwPromptFlags );
+
+    HRESULT LogAction(
+        [in] DWORD dwAction,
+        [in] LPCWSTR pwszUrl,
+        [in] LPCWSTR pwszText,
+        [in] DWORD dwLogFlags);
+
+    HRESULT CreateZoneEnumerator(
+        [out] DWORD* pdwEnum,
+        [out] DWORD* pdwCount,
+        [in]  DWORD dwFlags);
+
+    HRESULT GetZoneAt(
+        [in]  DWORD dwEnum,
+        [in]  DWORD dwIndex,
+        [out] DWORD* pdwZone);
+
+    HRESULT DestroyZoneEnumerator(
+        [in] DWORD dwEnum);
+
+    HRESULT CopyTemplatePoliciesToZone(
+        [in] DWORD dwTemplate,
+        [in] DWORD dwZone,
+        [in] DWORD dwReserved);
+}
+
+typedef struct _tagSOFTDISTINFO
+{
+    ULONG cbSize;
+    DWORD dwFlags;
+    DWORD dwAdState;
+    LPWSTR szTitle;
+    LPWSTR szAbstract;
+    LPWSTR szHREF;
+    DWORD dwInstalledVersionMS;
+    DWORD dwInstalledVersionLS;
+    DWORD dwUpdateVersionMS;
+    DWORD dwUpdateVersionLS;
+    DWORD dwAdvertisedVersionMS;
+    DWORD dwAdvertisedVersionLS;
+    DWORD dwReserved;
+} SOFTDISTINFO, *LPSOFTDISTINFO;
+
+typedef struct _tagCODEBASEHOLD
+{
+    DWORD cbSize;
+    LPWSTR szDistUnit;
+    LPWSTR szCodeBase;
+    DWORD dwVersionMS;
+    DWORD dwVersionLS;
+    DWORD dwStyle;
+} CODEBASEHOLD, *LPCODEBASEHOLD;
+
+[
+    local,
+    object,
+    uuid(b15b8dc1-c7e1-11d0-8680-00aa00bdcb71),
+    pointer_default(unique)
+]
+interface ISoftDistExt : IUnknown
+{
+    HRESULT ProcessSoftDist(
+        [in] LPCWSTR szCDFURL,
+        [in] IXMLElement *pSoftDistElement,
+        [in, out] LPSOFTDISTINFO lpsdi );
+
+    HRESULT GetFirstCodeBase(
+        [in] LPWSTR *szCodeBase,
+        [in] LPDWORD dwMaxSize );
+
+    HRESULT GetNextCodeBase(
+        [in] LPWSTR *szCodeBase,
+        [in] LPDWORD dwMaxSize );
+
+    HRESULT AsyncInstallDistributionUnit(
+        [in] IBindCtx *pbc,
+        [in] LPVOID lpReserved,
+        [in] DWORD flags,
+        [in] LPCODEBASEHOLD lpcbh);
+}
+
+typedef enum _tagINTERNETFEATURELIST
+{
+    FEATURE_OBJECT_CACHING,
+    FEATURE_ZONE_ELEVATION,
+    FEATURE_MIME_HANDLING,
+    FEATURE_MIME_SNIFFING,
+    FEATURE_WINDOW_RESTRICTIONS,
+    FEATURE_WEBOC_POPUPMANAGEMENT,
+    FEATURE_BEHAVIORS,
+    FEATURE_DISABLE_MK_PROTOCOL,
+    FEATURE_LOCALMACHINE_LOCKDOWN,
+    FEATURE_SECURITYBAND,
+    FEATURE_RESTRICT_ACTIVEXINSTALL,
+    FEATURE_VALIDATE_NAVIGATE_URL,
+    FEATURE_RESTRICT_FILEDOWNLOAD,
+    FEATURE_ADDON_MANAGEMENT,
+    FEATURE_PROTOCOL_LOCKDOWN,
+    FEATURE_HTTP_USERNAME_PASSWORD_DISABLE,
+    FEATURE_SAFE_BINDTOOBJECT,
+    FEATURE_UNC_SAVEDFILECHECK,
+    FEATURE_GET_URL_DOM_FILEPATH_UNENCODED,
+    FEATURE_TABBED_BROWSING,
+    FEATURE_SSLUX,
+    FEATURE_DISABLE_NAVIGATION_SOUNDS,
+    FEATURE_DISABLE_LEGACY_COMPRESSION,
+    FEATURE_FORCE_ADDR_AND_STATUS,
+    FEATURE_XMLHTTP,
+    FEATURE_DISABLE_TELNET_PROTOCOL,
+    FEATURE_FEEDS,
+    FEATURE_BLOCK_INPUT_PROMPTS,
+    FEATURE_DOMSTORAGE,
+    FEATURE_XDOMAINREQUEST,
+    FEATURE_DATAURI,
+    FEATURE_AJAX_CONNECTIONSERVICES,
+    FEATURE_ENTRY_COUNT
+} INTERNETFEATURELIST;
+
+/*****************************************************************************
+ * IUri interface
+ */
+[
+    local,
+    object,
+    uuid(a39ee748-6a27-4817-a6f2-13914bef5890),
+    pointer_default(unique)
+]
+interface IUri : IUnknown
+{
+    typedef enum
+    {
+        Uri_PROPERTY_ABSOLUTE_URI = 0,
+        Uri_PROPERTY_STRING_START = Uri_PROPERTY_ABSOLUTE_URI,
+        Uri_PROPERTY_AUTHORITY = 1,
+        Uri_PROPERTY_DISPLAY_URI = 2,
+        Uri_PROPERTY_DOMAIN = 3,
+        Uri_PROPERTY_EXTENSION = 4,
+        Uri_PROPERTY_FRAGMENT = 5,
+        Uri_PROPERTY_HOST = 6,
+        Uri_PROPERTY_PASSWORD = 7,
+        Uri_PROPERTY_PATH = 8,
+        Uri_PROPERTY_PATH_AND_QUERY = 9,
+        Uri_PROPERTY_QUERY = 10,
+        Uri_PROPERTY_RAW_URI = 11,
+        Uri_PROPERTY_SCHEME_NAME = 12,
+        Uri_PROPERTY_USER_INFO = 13,
+        Uri_PROPERTY_USER_NAME = 14,
+        Uri_PROPERTY_STRING_LAST = Uri_PROPERTY_USER_NAME,
+        Uri_PROPERTY_HOST_TYPE = 15,
+        Uri_PROPERTY_DWORD_START = Uri_PROPERTY_HOST_TYPE,
+        Uri_PROPERTY_PORT = 16,
+        Uri_PROPERTY_SCHEME = 17,
+        Uri_PROPERTY_ZONE = 18,
+        Uri_PROPERTY_DWORD_LAST = Uri_PROPERTY_ZONE
+    } Uri_PROPERTY;
+
+    HRESULT GetPropertyBSTR(
+        [in]  Uri_PROPERTY uriProp,
+        [out] BSTR *pbstrProperty,
+        [in]  DWORD dwFlags);
+
+    HRESULT GetPropertyLength(
+        [in]  Uri_PROPERTY uriProp,
+        [out] DWORD *pcchProperty,
+        [in]  DWORD dwFlags);
+
+    HRESULT GetPropertyDWORD(
+        [in]  Uri_PROPERTY uriProp,
+        [out] DWORD *pdwProperty,
+        [in]  DWORD dwFlags);
+
+    HRESULT HasProperty(
+        [in] Uri_PROPERTY uriProp,
+        [out] BOOL *pfHasProperty);
+
+    HRESULT GetAbsoluteUri(
+        [out] BSTR *pbstrAbsoluteUri);
+
+    HRESULT GetAuthority(
+        [out] BSTR *pbstrAuthority);
+
+    HRESULT GetDisplayUri(
+        [out] BSTR *pbstrDisplayString);
+
+    HRESULT GetDomain(
+        [out] BSTR *pbstrDomain);
+
+    HRESULT GetExtension(
+        [out] BSTR *pbstrExtension);
+
+    HRESULT GetFragment(
+        [out] BSTR *pbstrFragment);
+
+    HRESULT GetHost(
+        [out] BSTR *pbstrHost);
+
+    HRESULT GetPassword(
+        [out] BSTR *pbstrPassword);
+
+    HRESULT GetPath(
+        [out] BSTR *pbstrPath);
+
+    HRESULT GetPathAndQuery(
+        [out] BSTR *pbstrPathAndQuery);
+
+    HRESULT GetQuery(
+        [out] BSTR *pbstrQuery);
+
+    HRESULT GetRawUri(
+        [out] BSTR *pbstrRawUri);
+
+    HRESULT GetSchemeName(
+        [out] BSTR *pbstrSchemeName);
+
+    HRESULT GetUserInfo(
+        [out] BSTR *pbstrUserInfo);
+
+    HRESULT GetUserName(
+        [out] BSTR *pbstrUserName);
+
+    HRESULT GetHostType(
+        [out] DWORD *pdwHostType);
+
+    HRESULT GetPort(
+        [out] DWORD *pdwPort);
+
+    HRESULT GetScheme(
+        [out] DWORD *pdwScheme);
+
+    HRESULT GetZone(
+        [out] DWORD *pdwZone);
+
+    HRESULT GetProperties(
+        [out] LPDWORD pdwFlags);
+
+    HRESULT IsEqual(
+        [in]  IUri *pUri,
+        [out] BOOL *pfEqual);
+}
+
+/*****************************************************************************
+ * IInternetProtocolEx interface
+ */
+[
+    local,
+    object,
+    uuid(c7a98e66-1010-492c-a1c8-c809e1f75905),
+    pointer_default(unique)
+]
+interface IInternetProtocolEx : IInternetProtocol
+{
+    HRESULT StartEx(
+        [in] IUri *pUri,
+        [in] IInternetProtocolSink *pOIProtSink,
+        [in] IInternetBindInfo *pOIBindInfo,
+        [in] DWORD grfPI,
+        [in] HANDLE *dwReserved);
+}
+
+cpp_quote("DEFINE_GUID(CLSID_InternetSecurityManager, 0x7b8a2d94, 0x0ac9, 0x11d1, 0x89, 0x6c, 0x00, 0xc0, 0x4f, 0xB6, 0xbf, 0xc4);")
+cpp_quote("DEFINE_GUID(CLSID_InternetZoneManager, 0x7B8A2D95, 0x0AC9, 0x11D1, 0x89, 0x6C, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4);")
+cpp_quote("DEFINE_GUID(IID_IAsyncMoniker, 0x79EAC9D3, 0xBAF9, 0x11CE, 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B);")
+cpp_quote("DEFINE_GUID(IID_IAsyncBindCtx, 0x79EAC9D4, 0xBAF9, 0x11CE, 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B);")
+cpp_quote("DEFINE_GUID(CLSID_StdURLMoniker, 0x79EAC9E0, 0xBAF9, 0x11CE, 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B);")
+
+cpp_quote("DEFINE_GUID(CLSID_CdlProtocol, 0x3dd53d40, 0x7b8b, 0x11D0, 0xb0,0x13, 0x00,0xaa,0x00,0x59,0xce,0x02);")
+cpp_quote("DEFINE_GUID(CLSID_FileProtocol, 0x79EAC9E7, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B);")
+cpp_quote("DEFINE_GUID(CLSID_FtpProtocol, 0x79EAC9E3, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B);")
+cpp_quote("DEFINE_GUID(CLSID_GopherProtocol, 0x79EAC9E4, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B);")
+cpp_quote("DEFINE_GUID(CLSID_HttpProtocol, 0x79EAC9E2, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B);")
+cpp_quote("DEFINE_GUID(CLSID_HttpSProtocol, 0x79EAC9E5, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B);")
+cpp_quote("DEFINE_GUID(CLSID_MkProtocol, 0x79EAC9E6, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B);")
+
+cpp_quote("#define URLMON_OPTION_USERAGENT          0x10000001")
+cpp_quote("#define URLMON_OPTION_USERAGENT_REFRESH  0x10000002")
+cpp_quote("#define URLMON_OPTION_URL_ENCODING       0x10000004")
+
+cpp_quote("#define MK_S_ASYNCHRONOUS                _HRESULT_TYPEDEF_(0x000401E8)")
+cpp_quote("#ifndef S_ASYNCHRONOUS")
+cpp_quote("#define S_ASYNCHRONOUS                   MK_S_ASYNCHRONOUS")
+cpp_quote("#endif")
+
+cpp_quote("#define INET_E_ERROR_FIRST               _HRESULT_TYPEDEF_(0x800C0002)")
+cpp_quote("#define INET_E_INVALID_URL               _HRESULT_TYPEDEF_(0x800C0002)")
+cpp_quote("#define INET_E_NO_SESSION                _HRESULT_TYPEDEF_(0x800C0003)")
+cpp_quote("#define INET_E_CANNOT_CONNECT            _HRESULT_TYPEDEF_(0x800C0004)")
+cpp_quote("#define INET_E_RESOURCE_NOT_FOUND        _HRESULT_TYPEDEF_(0x800C0005)")
+cpp_quote("#define INET_E_OBJECT_NOT_FOUND          _HRESULT_TYPEDEF_(0x800C0006)")
+cpp_quote("#define INET_E_DATA_NOT_AVAILABLE        _HRESULT_TYPEDEF_(0x800C0007)")
+cpp_quote("#define INET_E_DOWNLOAD_FAILURE          _HRESULT_TYPEDEF_(0x800C0008)")
+cpp_quote("#define INET_E_AUTHENTICATION_REQUIRED   _HRESULT_TYPEDEF_(0x800C0009)")
+cpp_quote("#define INET_E_NO_VALID_MEDIA            _HRESULT_TYPEDEF_(0x800C000A)")
+cpp_quote("#define INET_E_CONNECTION_TIMEOUT        _HRESULT_TYPEDEF_(0x800C000B)")
+cpp_quote("#define INET_E_INVALID_REQUEST           _HRESULT_TYPEDEF_(0x800C000C)")
+cpp_quote("#define INET_E_UNKNOWN_PROTOCOL          _HRESULT_TYPEDEF_(0x800C000D)")
+cpp_quote("#define INET_E_SECURITY_PROBLEM          _HRESULT_TYPEDEF_(0x800C000E)")
+cpp_quote("#define INET_E_CANNOT_LOAD_DATA          _HRESULT_TYPEDEF_(0x800C000F)")
+cpp_quote("#define INET_E_CANNOT_INSTANTIATE_OBJECT _HRESULT_TYPEDEF_(0x800C0010)")
+cpp_quote("#define INET_E_USE_DEFAULT_PROTOCOLHANDLER _HRESULT_TYPEDEF_(0x800C0011)")
+cpp_quote("#define INET_E_QUERYOPTION_UNKNOWN       _HRESULT_TYPEDEF_(0x800C0013)")
+cpp_quote("#define INET_E_REDIRECT_FAILED           _HRESULT_TYPEDEF_(0x800C0014)")
+cpp_quote("#define INET_E_REDIRECT_TO_DIR           _HRESULT_TYPEDEF_(0x800C0015)")
+cpp_quote("#define INET_E_CANNOT_LOCK_REQUEST       _HRESULT_TYPEDEF_(0x800C0016)")
+cpp_quote("#define INET_E_ERROR_LAST                INET_E_REDIRECT_TO_DIR")
+cpp_quote("#define INET_E_DEFAULT_ACTION            INET_E_USE_DEFAULT_PROTOCOLHANDLER")
+
+cpp_quote("HRESULT WINAPI CoGetClassObjectFromURL(REFCLSID, LPCWSTR, DWORD, DWORD, LPCWSTR, LPBINDCTX, DWORD, LPVOID, REFIID, LPVOID*);")
+cpp_quote("HRESULT WINAPI CreateURLMoniker(IMoniker *pmkContext, LPCWSTR szURL, IMoniker **ppmk);")
+cpp_quote("HRESULT WINAPI RegisterBindStatusCallback(IBindCtx *pbc, IBindStatusCallback *pbsc, IBindStatusCallback **ppbsc, DWORD dwReserved);")
+cpp_quote("HRESULT WINAPI CompareSecurityIds(BYTE*,DWORD,BYTE*,DWORD,DWORD);")
+cpp_quote("HRESULT WINAPI URLDownloadToFileA(LPUNKNOWN,LPCSTR,LPCSTR,DWORD,LPBINDSTATUSCALLBACK);")
+cpp_quote("HRESULT WINAPI URLDownloadToFileW(LPUNKNOWN,LPCWSTR,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK);")
+cpp_quote("HRESULT WINAPI URLDownloadToCacheFileA(LPUNKNOWN,LPCSTR,LPSTR,DWORD,DWORD,LPBINDSTATUSCALLBACK);")
+cpp_quote("HRESULT WINAPI URLDownloadToCacheFileW(LPUNKNOWN,LPCWSTR,LPWSTR,DWORD,DWORD,LPBINDSTATUSCALLBACK);")
+cpp_quote("HRESULT WINAPI CoInternetGetSession(DWORD,IInternetSession**,DWORD);")
+cpp_quote("HRESULT WINAPI MkParseDisplayNameEx(IBindCtx*,LPCWSTR,ULONG*,IMoniker**);")
+cpp_quote("HRESULT WINAPI IsAsyncMoniker(IMoniker* pmk);")
+cpp_quote("HRESULT WINAPI CreateAsyncBindCtx(DWORD, IBindStatusCallback*, IEnumFORMATETC*, IBindCtx**);")
+cpp_quote("HRESULT WINAPI CreateAsyncBindCtxEx(IBindCtx*,DWORD,IBindStatusCallback*,IEnumFORMATETC*,IBindCtx**,DWORD);")
+cpp_quote("HRESULT WINAPI CoInternetCreateSecurityManager(IServiceProvider*,IInternetSecurityManager**,DWORD);")
+cpp_quote("HRESULT WINAPI CoInternetCombineUrl(LPCWSTR,LPCWSTR,DWORD,LPWSTR,DWORD,DWORD*,DWORD);")
+cpp_quote("HRESULT WINAPI CoInternetCompareUrl(LPCWSTR,LPCWSTR,DWORD);")
+cpp_quote("HRESULT WINAPI CoInternetCreateZoneManager(IServiceProvider*, IInternetZoneManager**, DWORD);")
+cpp_quote("HRESULT WINAPI CoInternetParseUrl(LPCWSTR,PARSEACTION,DWORD,LPWSTR,DWORD,DWORD*,DWORD);")
+cpp_quote("HRESULT WINAPI CoInternetQueryInfo(LPCWSTR,QUERYOPTION,DWORD,LPVOID,DWORD,DWORD*,DWORD);")
+cpp_quote("HRESULT WINAPI CoInternetSetFeatureEnabled(INTERNETFEATURELIST,DWORD,BOOL);")
+cpp_quote("HRESULT WINAPI CreateFormatEnumerator(UINT,FORMATETC*,IEnumFORMATETC**);")
+cpp_quote("HRESULT WINAPI GetSoftwareUpdateInfo( LPCWSTR szDistUnit, LPSOFTDISTINFO psdi);")
+cpp_quote("HRESULT WINAPI FaultInIEFeature(HWND,uCLSSPEC*,QUERYCONTEXT*,DWORD);")
+cpp_quote("HRESULT WINAPI FindMimeFromData(LPBC,LPCWSTR,LPVOID,DWORD,LPCWSTR,DWORD,LPWSTR*,DWORD);")
+cpp_quote("HRESULT WINAPI GetClassFileOrMime(LPBC,LPCWSTR,LPVOID,DWORD,LPCWSTR,DWORD,CLSID*);")
+cpp_quote("HRESULT WINAPI HlinkGoBack(IUnknown*);")
+cpp_quote("HRESULT WINAPI HlinkGoForward(IUnknown*);")
+cpp_quote("HRESULT WINAPI HlinkNavigateMoniker(IUnknown*,IMoniker*);")
+cpp_quote("HRESULT WINAPI HlinkNavigateString(IUnknown*,LPCWSTR);")
+cpp_quote("HRESULT WINAPI HlinkSimpleNavigateToMoniker(IMoniker*,LPCWSTR,LPCWSTR,IUnknown*,IBindCtx*,IBindStatusCallback*,DWORD,DWORD);")
+cpp_quote("HRESULT WINAPI HlinkSimpleNavigateToString(LPCWSTR,LPCWSTR,LPCWSTR,IUnknown*,IBindCtx*,IBindStatusCallback*,DWORD,DWORD);")
+cpp_quote("HRESULT WINAPI IsValidURL(LPBC,LPCWSTR,DWORD);")
+cpp_quote("HRESULT WINAPI ObtainUserAgentString(DWORD,LPSTR,DWORD*);")
+cpp_quote("HRESULT WINAPI RegisterFormatEnumerator(LPBC,IEnumFORMATETC*,DWORD);")
+cpp_quote("HRESULT WINAPI RevokeFormatEnumerator(LPBC,IEnumFORMATETC*);")
+cpp_quote("HRESULT WINAPI RevokeBindStatusCallback(LPBC,IBindStatusCallback*);")
+cpp_quote("HRESULT WINAPI CopyStgMedium(const STGMEDIUM*,STGMEDIUM*);")
+cpp_quote("void WINAPI ReleaseBindInfo(BINDINFO*);")
+cpp_quote("HRESULT WINAPI UrlMkGetSessionOption(DWORD,LPVOID,DWORD,DWORD*,DWORD);")
+cpp_quote("HRESULT WINAPI UrlMkSetSessionOption(DWORD,LPVOID,DWORD,DWORD);")
+cpp_quote("HRESULT WINAPI URLOpenStreamA(LPUNKNOWN,LPCSTR,DWORD,LPBINDSTATUSCALLBACK);")
+cpp_quote("HRESULT WINAPI URLOpenStreamW(LPUNKNOWN,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK);")
+cpp_quote("HRESULT WINAPI URLOpenPullStreamA(LPUNKNOWN,LPCSTR,DWORD,LPBINDSTATUSCALLBACK);")
+cpp_quote("HRESULT WINAPI URLOpenPullStreamW(LPUNKNOWN,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK);")
+cpp_quote("HRESULT WINAPI URLOpenBlockingStreamA(LPUNKNOWN,LPCSTR,LPSTREAM*,DWORD,LPBINDSTATUSCALLBACK);")
+cpp_quote("HRESULT WINAPI URLOpenBlockingStreamW(LPUNKNOWN,LPCWSTR,LPSTREAM*,DWORD,LPBINDSTATUSCALLBACK);")
+
+cpp_quote("#define OInetCombineUrl CoInternetCombineUrl")
+cpp_quote("#define OInetCompareUrl CoInternetCompareUrl")
+cpp_quote("#define OInetGetSession CoInternetGetSession")
+
+cpp_quote("BOOL WINAPI IsLoggingEnabledA(LPCSTR);")
+cpp_quote("BOOL WINAPI IsLoggingEnabledW(LPCWSTR);")
+cpp_quote("#define IsLoggingEnabled WINELIB_NAME_AW(IsLoggingEnabled)")
+
+cpp_quote("#define MKSYS_URLMONIKER 6")
+cpp_quote("#define URL_MK_LEGACY            0")
+cpp_quote("#define URL_MK_UNIFORM           1")
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/userenv.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/userenv.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/userenv.h	(revision 16410)
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2007 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_USERENV_H
+#define __WINE_USERENV_H
+
+/* FIXME: #include <wbemcli.h> */
+#include <profinfo.h>
+
+#define PT_TEMPORARY    0x00000001
+#define PT_ROAMING      0x00000002
+#define PT_MANDATORY    0x00000004
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+BOOL WINAPI CreateEnvironmentBlock(LPVOID*,HANDLE,BOOL);
+BOOL WINAPI ExpandEnvironmentStringsForUserA(HANDLE,LPCSTR,LPSTR,DWORD);
+BOOL WINAPI ExpandEnvironmentStringsForUserW(HANDLE,LPCWSTR,LPWSTR,DWORD);
+#define     ExpandEnvironmentStringsForUser WINELIB_NAME_AW(ExpandEnvironmentStringsForUser)
+BOOL WINAPI GetUserProfileDirectoryA(HANDLE,LPSTR,LPDWORD);
+BOOL WINAPI GetUserProfileDirectoryW(HANDLE,LPWSTR,LPDWORD);
+#define     GetUserProfileDirectory WINELIB_NAME_AW(GetUserProfileDirectory)
+BOOL WINAPI GetProfilesDirectoryA(LPSTR,LPDWORD);
+BOOL WINAPI GetProfilesDirectoryW(LPWSTR,LPDWORD);
+#define     GetProfilesDirectory WINELIB_NAME_AW(GetProfilesDirectory)
+BOOL WINAPI GetProfileType(DWORD*);
+BOOL WINAPI LoadUserProfileA(HANDLE,LPPROFILEINFOA);
+BOOL WINAPI LoadUserProfileW(HANDLE,LPPROFILEINFOW);
+#define     LoadUserProfile WINELIB_NAME_AW(LoadUserProfile)
+BOOL WINAPI RegisterGPNotification(HANDLE,BOOL);
+BOOL WINAPI UnloadUserProfile(HANDLE,HANDLE);
+BOOL WINAPI UnregisterGPNotification(HANDLE);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* __WINE_USERENV_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/usp10.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/usp10.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/usp10.h	(revision 16410)
@@ -0,0 +1,270 @@
+/*
+ * Copyright (C) 2005 Steven Edwards
+ * Copyright (C) 2005 Vijay Kiran Kamuju
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __USP10_H
+#define __USP10_H
+
+#ifndef __WINESRC__
+# include <windows.h>
+#endif
+/* FIXME: #include <specstrings.h> */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** ScriptStringAnalyse */
+#define  SSA_PASSWORD         0x00000001
+#define  SSA_TAB              0x00000002
+#define  SSA_CLIP             0x00000004
+#define  SSA_FIT              0x00000008
+#define  SSA_DZWG             0x00000010
+#define  SSA_FALLBACK         0x00000020
+#define  SSA_BREAK            0x00000040
+#define  SSA_GLYPHS           0x00000080
+#define  SSA_RTL              0x00000100
+#define  SSA_GCP              0x00000200
+#define  SSA_HOTKEY           0x00000400
+#define  SSA_METAFILE         0x00000800
+#define  SSA_LINK             0x00001000
+#define  SSA_HIDEHOTKEY       0x00002000
+#define  SSA_HOTKEYONLY       0x00002400
+#define  SSA_FULLMEASURE      0x04000000
+#define  SSA_LPKANSIFALLBACK  0x08000000
+#define  SSA_PIDX             0x10000000
+#define  SSA_LAYOUTRTL        0x20000000
+#define  SSA_DONTGLYPH        0x40000000 
+#define  SSA_NOKASHIDA        0x80000000 
+
+/** StringIsComplex */
+#define  SIC_COMPLEX     1
+#define  SIC_ASCIIDIGIT  2
+#define  SIC_NEUTRAL     4
+
+/** ScriptGetCMap */
+#define SGCM_RTL  0x00000001
+
+/** ScriptApplyDigitSubstitution */
+#define SCRIPT_DIGITSUBSTITUTE_CONTEXT      0
+#define SCRIPT_DIGITSUBSTITUTE_NONE         1
+#define SCRIPT_DIGITSUBSTITUTE_NATIONAL     2
+#define SCRIPT_DIGITSUBSTITUTE_TRADITIONAL  3
+
+#define SCRIPT_UNDEFINED  0
+
+#define USP_E_SCRIPT_NOT_IN_FONT MAKE_HRESULT(SEVERITY_ERROR,FACILITY_ITF,0x200)
+
+typedef enum tag_SCRIPT_JUSTIFY {
+  SCRIPT_JUSTIFY_NONE           = 0,
+  SCRIPT_JUSTIFY_ARABIC_BLANK   = 1,
+  SCRIPT_JUSTIFY_CHARACTER      = 2,
+  SCRIPT_JUSTIFY_RESERVED1      = 3,
+  SCRIPT_JUSTIFY_BLANK          = 4,
+  SCRIPT_JUSTIFY_RESERVED2      = 5,
+  SCRIPT_JUSTIFY_RESERVED3      = 6,
+  SCRIPT_JUSTIFY_ARABIC_NORMAL  = 7,
+  SCRIPT_JUSTIFY_ARABIC_KASHIDA = 8,
+  SCRIPT_JUSTIFY_ARABIC_ALEF    = 9,
+  SCRIPT_JUSTIFY_ARABIC_HA      = 10,
+  SCRIPT_JUSTIFY_ARABIC_RA      = 11,
+  SCRIPT_JUSTIFY_ARABIC_BA      = 12,
+  SCRIPT_JUSTIFY_ARABIC_BARA    = 13,
+  SCRIPT_JUSTIFY_ARABIC_SEEN    = 14,
+  SCRIPT_JUSTIFY_RESERVED4      = 15,
+} SCRIPT_JUSTIFY;
+
+typedef struct tag_SCRIPT_CONTROL {
+  DWORD uDefaultLanguage	:16;
+  DWORD fContextDigits		:1;
+  DWORD fInvertPreBoundDir	:1;
+  DWORD fInvertPostBoundDir	:1;
+  DWORD fLinkStringBefore	:1;
+  DWORD fLinkStringAfter	:1;
+  DWORD fNeutralOverride	:1;
+  DWORD fNumericOverride	:1;
+  DWORD fLegacyBidiClass	:1;
+  DWORD fReserved		:8;
+} SCRIPT_CONTROL;
+
+typedef struct {
+  DWORD langid			:16;
+  DWORD fNumeric		:1;
+  DWORD fComplex		:1;     
+  DWORD fNeedsWordBreaking	:1;     
+  DWORD fNeedsCaretInfo		:1;
+  DWORD bCharSet		:8;
+  DWORD fControl		:1;
+  DWORD fPrivateUseArea		:1;
+  DWORD fNeedsCharacterJustify	:1;
+  DWORD fInvalidGlyph		:1;
+  DWORD fInvalidLogAttr		:1;
+  DWORD fCDM			:1;
+  DWORD fAmbiguousCharSet	:1;
+  DWORD fClusterSizeVaries	:1;
+  DWORD fRejectInvalid		:1;
+} SCRIPT_PROPERTIES;
+
+typedef struct tag_SCRIPT_STATE {
+  WORD uBidiLevel		:5;
+  WORD fOverrideDirection	:1;
+  WORD fInhibitSymSwap		:1;
+  WORD fCharShape		:1;
+  WORD fDigitSubstitute		:1;
+  WORD fInhibitLigate		:1;
+  WORD fDisplayZWG		:1;
+  WORD fArabicNumContext	:1;
+  WORD fGcpClusters		:1;
+  WORD fReserved		:1;
+  WORD fEngineReserved		:2;
+} SCRIPT_STATE;
+
+typedef struct tag_SCRIPT_ANALYSIS {
+  WORD eScript			:10;
+  WORD fRTL			:1;
+  WORD fLayoutRTL		:1;
+  WORD fLinkBefore		:1;
+  WORD fLinkAfter		:1;
+  WORD fLogicalOrder		:1;
+  WORD fNoGlyphIndex		:1;
+  SCRIPT_STATE 	s;
+} SCRIPT_ANALYSIS;
+
+typedef struct tag_SCRIPT_ITEM {
+  int iCharPos;
+  SCRIPT_ANALYSIS a;
+} SCRIPT_ITEM;
+
+typedef struct tag_SCRIPT_DIGITSUBSTITUTE {
+  DWORD NationalDigitLanguage		:16;
+  DWORD TraditionalDigitLanguage	:16;
+  DWORD DigitSubstitute			:8;
+  DWORD dwReserved;
+} SCRIPT_DIGITSUBSTITUTE;
+
+typedef struct tag_SCRIPT_FONTPROPERTIES {
+  int   cBytes;
+  WORD wgBlank;
+  WORD wgDefault;
+  WORD wgInvalid;
+  WORD wgKashida;
+  int iKashidaWidth;
+} SCRIPT_FONTPROPERTIES;
+
+typedef struct tag_SCRIPT_TABDEF {
+  int cTabStops;
+  int iScale;
+  int *pTabStops;
+  int iTabOrigin;
+} SCRIPT_TABDEF;
+
+typedef struct tag_SCRIPT_VISATTR {
+  WORD uJustification   :4;
+  WORD fClusterStart    :1;
+  WORD fDiacritic       :1;
+  WORD fZeroWidth       :1;
+  WORD fReserved        :1;
+  WORD fShapeReserved   :8;
+} SCRIPT_VISATTR;
+
+typedef struct tag_SCRIPT_LOGATTR {
+  BYTE    fSoftBreak      :1;
+  BYTE    fWhiteSpace     :1;
+  BYTE    fCharStop       :1;
+  BYTE    fWordStop       :1;
+  BYTE    fInvalid        :1;
+  BYTE    fReserved       :3;
+} SCRIPT_LOGATTR;
+
+typedef void *SCRIPT_CACHE;
+typedef void *SCRIPT_STRING_ANALYSIS; 
+
+#ifndef LSDEFS_DEFINED
+typedef struct tagGOFFSET {
+  LONG  du;
+  LONG  dv;
+} GOFFSET;
+#endif
+
+/* Function Declarations */
+
+HRESULT WINAPI ScriptApplyDigitSubstitution(const SCRIPT_DIGITSUBSTITUTE* psds, 
+                                            SCRIPT_CONTROL* psc, SCRIPT_STATE* pss);
+HRESULT WINAPI ScriptApplyLogicalWidth(const int *piDx, int cChars, int cGlyphs, const WORD *pwLogClust,
+                                       const SCRIPT_VISATTR *psva, const int *piAdvance,
+                                       const SCRIPT_ANALYSIS *psa, ABC *pABC, int *piJustify);
+HRESULT WINAPI ScriptRecordDigitSubstitution(LCID Locale, SCRIPT_DIGITSUBSTITUTE *psds);
+HRESULT WINAPI ScriptItemize(const WCHAR *pwcInChars, int cInChars, int cMaxItems, 
+                             const SCRIPT_CONTROL *psControl, const SCRIPT_STATE *psState, 
+                             SCRIPT_ITEM *pItems, int *pcItems);
+HRESULT WINAPI ScriptGetCMap(HDC hdc, SCRIPT_CACHE *psc, const WCHAR *pwcInChars, int cChars,
+                             DWORD dwFlags, WORD *pwOutGlyphs);
+HRESULT WINAPI ScriptGetFontProperties(HDC hdc, SCRIPT_CACHE *psc, SCRIPT_FONTPROPERTIES *sfp);
+HRESULT WINAPI ScriptGetGlyphABCWidth(HDC hdc, SCRIPT_CACHE *psc, WORD wGlyph, ABC *pABC);
+HRESULT WINAPI ScriptGetLogicalWidths(const SCRIPT_ANALYSIS *psa, int cChars, int cGlyphs,
+                                      const int *piGlyphWidth, const WORD *pwLogClust,
+                                      const SCRIPT_VISATTR *psva, int *piDx);
+HRESULT WINAPI ScriptGetProperties(const SCRIPT_PROPERTIES ***ppSp, int *piNumScripts);
+HRESULT WINAPI ScriptStringAnalyse(HDC hdc, 
+				   const void *pString, 
+				   int cString, 
+				   int cGlyphs,
+				   int iCharset,
+				   DWORD dwFlags,
+				   int iReqWidth,
+				   SCRIPT_CONTROL *psControl,
+				   SCRIPT_STATE *psState,
+				   const int *piDx,
+				   SCRIPT_TABDEF *pTabdef,
+				   const BYTE *pbInClass,
+				   SCRIPT_STRING_ANALYSIS *pssa);
+HRESULT WINAPI ScriptStringValidate(SCRIPT_STRING_ANALYSIS ssa);
+HRESULT WINAPI ScriptStringFree(SCRIPT_STRING_ANALYSIS *pssa);
+HRESULT WINAPI ScriptFreeCache(SCRIPT_CACHE *psc);
+HRESULT WINAPI ScriptIsComplex(const WCHAR* pwcInChars, int cInChars, DWORD dwFlags);
+HRESULT WINAPI ScriptJustify(const SCRIPT_VISATTR *psva, const int *piAdvance, int cGlyphs,
+                             int iDx, int iMinKashida, int *piJustify);
+HRESULT WINAPI ScriptLayout(int cRuns, const BYTE *pbLevel, int *piVisualToLogical, int *piLogicalToVisual);
+HRESULT WINAPI ScriptShape(HDC hdc, SCRIPT_CACHE *psc, const WCHAR *pwcChars, int cChars, int cMaxGlyphs,
+                           SCRIPT_ANALYSIS *psa, WORD *pwOutGlyphs, WORD *pwLogClust, SCRIPT_VISATTR *psva, int *pcGlyphs);
+HRESULT WINAPI ScriptPlace(HDC hdc, SCRIPT_CACHE *psc, const WORD *pwGlyphs, int cGlyphs, const SCRIPT_VISATTR *psva,
+                           SCRIPT_ANALYSIS *psa, int *piAdvance, GOFFSET *pGoffset, ABC *pABC );
+HRESULT WINAPI ScriptBreak(const WCHAR *pwcChars, int cChars, const SCRIPT_ANALYSIS *psa, SCRIPT_LOGATTR *psla);
+HRESULT WINAPI ScriptCacheGetHeight(HDC hdc, SCRIPT_CACHE *psc, LONG *tmHeight);
+HRESULT WINAPI ScriptCPtoX(int iCP, BOOL fTrailing, int cChars, int cGlyphs, const WORD *pwLogClust, const SCRIPT_VISATTR *psva,
+                           const int *piAdvance, const SCRIPT_ANALYSIS *psa, int *piX);
+HRESULT WINAPI ScriptXtoCP(int iX, int cChars, int cGlyphs, const WORD *pwLogClust, const SCRIPT_VISATTR *psva,
+                           const int *piAdvance, const SCRIPT_ANALYSIS *psa, int *piCP, int *piTrailing);
+HRESULT WINAPI ScriptStringCPtoX(SCRIPT_STRING_ANALYSIS ssa, int icp, BOOL fTrailing, int *pX);
+HRESULT WINAPI ScriptStringXtoCP(SCRIPT_STRING_ANALYSIS ssa, int iX, int *piCh , int *piTrailing);
+HRESULT WINAPI ScriptStringGetLogicalWidths(SCRIPT_STRING_ANALYSIS ssa, int *piDx);
+HRESULT WINAPI ScriptStringGetOrder(SCRIPT_STRING_ANALYSIS ssa, UINT *puOrder);
+HRESULT WINAPI ScriptStringOut(SCRIPT_STRING_ANALYSIS ssa, int iX, int iY, UINT uOptions, const RECT *prc,
+                               int iMinSel, int iMaxSel, BOOL fDisabled);
+HRESULT WINAPI ScriptTextOut(const HDC hdc, SCRIPT_CACHE *psc, int x, int y, UINT fuOptions, const RECT *lprc,
+                             const SCRIPT_ANALYSIS *psa, const WCHAR *pwcReserved, int iReserved, const WORD *pwGlyphs,
+                             int cGlyphs, const int *piAdvance, const int *piJustify, const GOFFSET *pGoffset);
+const int* WINAPI ScriptString_pcOutChars(SCRIPT_STRING_ANALYSIS ssa);
+const SCRIPT_LOGATTR* WINAPI ScriptString_pLogAttr(SCRIPT_STRING_ANALYSIS ssa);
+const SIZE* WINAPI ScriptString_pSize(SCRIPT_STRING_ANALYSIS ssa);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __USP10_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/uuids.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/uuids.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/uuids.h	(revision 16410)
@@ -0,0 +1,279 @@
+/*
+ * Copyright (C) 2002 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef OUR_GUID_ENTRY
+#define OUR_GUID_ENTRY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+           DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8);
+#endif
+
+#define MEDIATYPE_NULL       GUID_NULL
+#define MEDIASUBTYPE_NULL    GUID_NULL
+
+OUR_GUID_ENTRY(MEDIASUBTYPE_None,                    0xe436eb8e, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(MEDIATYPE_Video,                      0x73646976, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIATYPE_Audio,                      0x73647561, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIATYPE_Text,                       0x73747874, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIATYPE_Midi,                       0x7364696d, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIATYPE_Stream,                     0xe436eb83, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(MEDIATYPE_Interleaved,                0x73766169, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIATYPE_File,                       0x656c6966, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIATYPE_ScriptCommand,              0x73636d64, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIATYPE_AUXLine21Data,              0x670aea80, 0x3a82, 0x11d0, 0xb7, 0x9b, 0x00, 0xaa, 0x00, 0x37, 0x67, 0xa7)
+OUR_GUID_ENTRY(MEDIATYPE_Timecode,                   0x0482dee3, 0x7817, 0x11cf, 0x8a, 0x03, 0x00, 0xaa, 0x00, 0x6e, 0xcb, 0x65)
+OUR_GUID_ENTRY(MEDIATYPE_LMRT,                       0x74726c6d, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIATYPE_URL_STREAM,                 0x736c7275, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_YVU9,                    0x39555659, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_Y411,                    0x31313459, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_Y41P,                    0x50313459, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_YUY2,                    0x32595559, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_YVYU,                    0x55595659, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_UYVY,                    0x59565955, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_Y211,                    0x31313259, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_YV12,                    0x32315659, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_AYUV,                    0x56555941, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_CLJR,                    0x524a4c43, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_IF09,                    0x39304649, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_CPLA,                    0x414c5043, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_MJPG,                    0x47504a4d, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_TVMJ,                    0x4a4d5654, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_WAKE,                    0x454b4157, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_CFCC,                    0x43434643, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_IJPG,                    0x47504a49, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_Plum,                    0x6d756c50, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_DVCS,                    0x53435644, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_DVSD,                    0x44535644, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_MDVF,                    0x4656444d, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_RGB1,                    0xe436eb78, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(MEDIASUBTYPE_RGB4,                    0xe436eb79, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(MEDIASUBTYPE_RGB8,                    0xe436eb7a, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(MEDIASUBTYPE_RGB565,                  0xe436eb7b, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(MEDIASUBTYPE_RGB555,                  0xe436eb7c, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(MEDIASUBTYPE_RGB24,                   0xe436eb7d, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(MEDIASUBTYPE_RGB32,                   0xe436eb7e, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(MEDIASUBTYPE_Overlay,                 0xe436eb7f, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG1Packet,             0xe436eb80, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG1Payload,            0xe436eb81, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG1AudioPayload,       0x00000050, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIATYPE_MPEG1SystemStream,          0xe436eb82, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG1System,             0xe436eb84, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG1VideoCD,            0xe436eb85, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG1Video,              0xe436eb86, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG1Audio,              0xe436eb87, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(MEDIASUBTYPE_Avi,                     0xe436eb88, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(MEDIASUBTYPE_Asf,                     0x3db80f90, 0x9412, 0x11d1, 0xad, 0xed, 0x00, 0x00, 0xf8, 0x75, 0x4b, 0x99)
+OUR_GUID_ENTRY(MEDIASUBTYPE_QTMovie,                 0xe436eb89, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(MEDIASUBTYPE_QTRpza,                  0x617a7072, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_QTSmc,                   0x20636d73, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_QTRle,                   0x20656c72, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_QTJpeg,                  0x6765706a, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_PCMAudio_Obsolete,       0xe436eb8a, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(MEDIASUBTYPE_PCM,                     0x00000001, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_WAVE,                    0xe436eb8b, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(MEDIASUBTYPE_AU,                      0xe436eb8c, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(MEDIASUBTYPE_AIFF,                    0xe436eb8d, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(MEDIASUBTYPE_dvsd,                    0x64737664, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_dvhd,                    0x64687664, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_dvsl,                    0x6c737664, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
+OUR_GUID_ENTRY(MEDIASUBTYPE_Line21_BytePair,         0x6e8d4a22, 0x310c, 0x11d0, 0xb7, 0x9a, 0x00, 0xaa, 0x00, 0x37, 0x67, 0xa7)
+OUR_GUID_ENTRY(MEDIASUBTYPE_Line21_GOPPacket,        0x6e8d4a23, 0x310c, 0x11d0, 0xb7, 0x9a, 0x00, 0xaa, 0x00, 0x37, 0x67, 0xa7)
+OUR_GUID_ENTRY(MEDIASUBTYPE_Line21_VBIRawData,       0x6e8d4a24, 0x310c, 0x11d0, 0xb7, 0x9a, 0x00, 0xaa, 0x00, 0x37, 0x67, 0xa7)
+OUR_GUID_ENTRY(MEDIASUBTYPE_DssVideo,                0xa0af4f81, 0xe163, 0x11d0, 0xba, 0xd9, 0x00, 0x60, 0x97, 0x44, 0x11, 0x1a)
+OUR_GUID_ENTRY(MEDIASUBTYPE_DssAudio,                0xa0af4f82, 0xe163, 0x11d0, 0xba, 0xd9, 0x00, 0x60, 0x97, 0x44, 0x11, 0x1a)
+OUR_GUID_ENTRY(MEDIASUBTYPE_VPVideo,                 0x5a9b6a40, 0x1a22, 0x11d1, 0xba, 0xd9, 0x00, 0x60, 0x97, 0x44, 0x11, 0x1a)
+OUR_GUID_ENTRY(MEDIASUBTYPE_VPVBI,                   0x5a9b6a41, 0x1a22, 0x11d1, 0xba, 0xd9, 0x00, 0x60, 0x97, 0x44, 0x11, 0x1a)
+OUR_GUID_ENTRY(IID_IAMCutListElement,                0xcde29520, 0x3418, 0x11cf, 0xa5, 0xb0, 0x00, 0x20, 0xaf, 0x05, 0x3d, 0x8f)
+OUR_GUID_ENTRY(IID_IAMFileCutListElement,            0xf0947070, 0x276c, 0x11d0, 0x83, 0x16, 0x00, 0x20, 0xaf, 0x11, 0xc0, 0x10)
+OUR_GUID_ENTRY(IID_IAMVideoCutListElement,           0xcde29522, 0x3418, 0x11cf, 0xa5, 0xb0, 0x00, 0x20, 0xaf, 0x05, 0x3d, 0x8f)
+OUR_GUID_ENTRY(IID_IAMAudioCutListElement,           0xcde29524, 0x3418, 0x11cf, 0xa5, 0xb0, 0x00, 0x20, 0xaf, 0x05, 0x3d, 0x8f)
+OUR_GUID_ENTRY(CLSID_CutListSource,                  0xa5ea8d20, 0x253d, 0x11d1, 0xb3, 0xf1, 0x00, 0xaa, 0x00, 0x37, 0x61, 0xc5)
+OUR_GUID_ENTRY(IID_IStandardCutList,                 0xa5ea8d29, 0x253d, 0x11d1, 0xb3, 0xf1, 0x00, 0xaa, 0x00, 0x37, 0x61, 0xc5)
+OUR_GUID_ENTRY(IID_IFileClip,                        0xa5ea8d2a, 0x253d, 0x11d1, 0xb3, 0xf1, 0x00, 0xaa, 0x00, 0x37, 0x61, 0xc5)
+OUR_GUID_ENTRY(IID_ICutListGraphBuilder,             0xa5ea8d2c, 0x253d, 0x11d1, 0xb3, 0xf1, 0x00, 0xaa, 0x00, 0x37, 0x61, 0xc5)
+OUR_GUID_ENTRY(CLSID_CutListGraphBuilder,            0xa5ea8d2f, 0x253d, 0x11d1, 0xb3, 0xf1, 0x00, 0xaa, 0x00, 0x37, 0x61, 0xc5)
+OUR_GUID_ENTRY(CLSID_SimpleCutList,                  0xa5ea8d30, 0x253d, 0x11d1, 0xb3, 0xf1, 0x00, 0xaa, 0x00, 0x37, 0x61, 0xc5)
+OUR_GUID_ENTRY(CLSID_VideoFileClip,                  0xa5ea8d31, 0x253d, 0x11d1, 0xb3, 0xf1, 0x00, 0xaa, 0x00, 0x37, 0x61, 0xc5)
+OUR_GUID_ENTRY(CLSID_AudioFileClip,                  0xa5ea8d32, 0x253d, 0x11d1, 0xb3, 0xf1, 0x00, 0xaa, 0x00, 0x37, 0x61, 0xc5)
+OUR_GUID_ENTRY(CLSID_CutListCacheMemory,             0xa5ea8d33, 0x253d, 0x11d1, 0xb3, 0xf1, 0x00, 0xaa, 0x00, 0x37, 0x61, 0xc5)
+OUR_GUID_ENTRY(CLSID_CaptureGraphBuilder,            0xbf87b6e0, 0x8c27, 0x11d0, 0xb3, 0xf0, 0x00, 0xaa, 0x00, 0x37, 0x61, 0xc5)
+OUR_GUID_ENTRY(CLSID_CaptureGraphBuilder2,           0xbf87b6e1, 0x8c27, 0x11d0, 0xb3, 0xf0, 0x00, 0xaa, 0x00, 0x37, 0x61, 0xc5)
+OUR_GUID_ENTRY(CLSID_ProtoFilterGraph,               0xe436ebb0, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(CLSID_SystemClock,                    0xe436ebb1, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(CLSID_FilterMapper,                   0xe436ebb2, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(CLSID_FilterGraph,                    0xe436ebb3, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(CLSID_FilterGraphNoThread,            0xe436ebb8, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(CLSID_MPEG1Doc,                       0xe4bbd160, 0x4269, 0x11ce, 0x83, 0x8d, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a)
+OUR_GUID_ENTRY(CLSID_FileSource,                     0x701722e0, 0x8ae3, 0x11ce, 0xa8, 0x5c, 0x00, 0xaa, 0x00, 0x2f, 0xea, 0xb5)
+OUR_GUID_ENTRY(CLSID_MPEG1PacketPlayer,              0x26c25940, 0x4ca9, 0x11ce, 0xa8, 0x28, 0x00, 0xaa, 0x00, 0x2f, 0xea, 0xb5)
+OUR_GUID_ENTRY(CLSID_MPEG1Splitter,                  0x336475d0, 0x942a, 0x11ce, 0xa8, 0x70, 0x00, 0xaa, 0x00, 0x2f, 0xea, 0xb5)
+OUR_GUID_ENTRY(CLSID_CMpegVideoCodec,                0xfeb50740, 0x7bef, 0x11ce, 0x9b, 0xd9, 0x00, 0x00, 0xe2, 0x02, 0x59, 0x9c)
+OUR_GUID_ENTRY(CLSID_CMpegAudioCodec,                0x4a2286e0, 0x7bef, 0x11ce, 0x9b, 0xd9, 0x00, 0x00, 0xe2, 0x02, 0x59, 0x9c)
+OUR_GUID_ENTRY(CLSID_TextRender,                     0xe30629d3, 0x27e5, 0x11ce, 0x87, 0x5d, 0x00, 0x60, 0x8c, 0xb7, 0x80, 0x66)
+OUR_GUID_ENTRY(CLSID_InfTee,                         0xf8388a40, 0xd5bb, 0x11d0, 0xbe, 0x5a, 0x00, 0x80, 0xc7, 0x06, 0x56, 0x8e)
+OUR_GUID_ENTRY(CLSID_AviSplitter,                    0x1b544c20, 0xfd0b, 0x11ce, 0x8c, 0x63, 0x00, 0xaa, 0x00, 0x44, 0xb5, 0x1e)
+OUR_GUID_ENTRY(CLSID_AviReader,                      0x1b544c21, 0xfd0b, 0x11ce, 0x8c, 0x63, 0x00, 0xaa, 0x00, 0x44, 0xb5, 0x1e)
+OUR_GUID_ENTRY(CLSID_VfwCapture,                     0x1b544c22, 0xfd0b, 0x11ce, 0x8c, 0x63, 0x00, 0xaa, 0x00, 0x44, 0xb5, 0x1e)
+OUR_GUID_ENTRY(CLSID_CaptureProperties,              0x1b544c22, 0xfd0b, 0x11ce, 0x8c, 0x63, 0x00, 0xaa, 0x00, 0x44, 0xb5, 0x1f)
+OUR_GUID_ENTRY(CLSID_FGControl,                      0xe436ebb4, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(CLSID_MOVReader,                      0x44584800, 0xf8ee, 0x11ce, 0xb2, 0xd4, 0x00, 0xdd, 0x01, 0x10, 0x1b, 0x85)
+OUR_GUID_ENTRY(CLSID_QuickTimeParser,                0xd51bd5a0, 0x7548, 0x11cf, 0xa5, 0x20, 0x00, 0x80, 0xc7, 0x7e, 0xf5, 0x8a)
+OUR_GUID_ENTRY(CLSID_WAVEParser,                     0xd51bd5a1, 0x7548, 0x11cf, 0xa5, 0x20, 0x00, 0x80, 0xc7, 0x7e, 0xf5, 0x8a)
+OUR_GUID_ENTRY(CLSID_QTDec,                          0xfdfe9681, 0x74a3, 0x11d0, 0xaf, 0xa7, 0x00, 0xaa, 0x00, 0xb6, 0x7a, 0x42)
+OUR_GUID_ENTRY(CLSID_AVIDoc,                         0xd3588ab0, 0x0781, 0x11ce, 0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(CLSID_AVIDocWriter,                   0xd3588ab1, 0x0781, 0x11ce, 0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(CLSID_NullRenderer,                   0xc1f400a4, 0x3f08, 0x11d3, 0x9f, 0x0b, 0x00, 0x60, 0x08, 0x03, 0x9e, 0x37)
+OUR_GUID_ENTRY(CLSID_VideoRenderer,                  0x70e102b0, 0x5556, 0x11ce, 0x97, 0xc0, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a)
+OUR_GUID_ENTRY(CLSID_VideoRendererDefault,           0x6bc1cffa, 0x8fc1, 0x4261, 0xac, 0x22, 0xcf, 0xb4, 0xcc, 0x38, 0xdb, 0x50)
+OUR_GUID_ENTRY(CLSID_Colour,                         0x1643e180, 0x90f5, 0x11ce, 0x97, 0xd5, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a)
+OUR_GUID_ENTRY(CLSID_Dither,                         0x1da08500, 0x9edc, 0x11cf, 0xbc, 0x10, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6)
+OUR_GUID_ENTRY(CLSID_ModexRenderer,                  0x07167665, 0x5011, 0x11cf, 0xbf, 0x33, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a)
+OUR_GUID_ENTRY(CLSID_AudioRender,                    0xe30629d1, 0x27e5, 0x11ce, 0x87, 0x5d, 0x00, 0x60, 0x8c, 0xb7, 0x80, 0x66)
+OUR_GUID_ENTRY(CLSID_AudioProperties,                0x05589faf, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a)
+OUR_GUID_ENTRY(CLSID_DSoundRender,                   0x79376820, 0x07d0, 0x11cf, 0xa2, 0x4d, 0x00, 0x20, 0xaf, 0xd7, 0x97, 0x67)
+OUR_GUID_ENTRY(CLSID_AudioRecord,                    0xe30629d2, 0x27e5, 0x11ce, 0x87, 0x5d, 0x00, 0x60, 0x8c, 0xb7, 0x80, 0x66)
+OUR_GUID_ENTRY(CLSID_AudioInputMixerProperties,      0x2ca8ca52, 0x3c3f, 0x11d2, 0xb7, 0x3d, 0x00, 0xc0, 0x4f, 0xb6, 0xbd, 0x3d)
+OUR_GUID_ENTRY(CLSID_AVIDec,                         0xcf49d4e0, 0x1115, 0x11ce, 0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(CLSID_AVIDraw,                        0xa888df60, 0x1e90, 0x11cf, 0xac, 0x98, 0x00, 0xaa, 0x00, 0x4c, 0x0f, 0xa9)
+OUR_GUID_ENTRY(CLSID_ACMWrapper,                     0x6a08cf80, 0x0e18, 0x11cf, 0xa2, 0x4d, 0x00, 0x20, 0xaf, 0xd7, 0x97, 0x67)
+OUR_GUID_ENTRY(CLSID_AsyncReader,                    0xe436ebb5, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(CLSID_URLReader,                      0xe436ebb6, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(CLSID_PersistMonikerPID,              0xe436ebb7, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
+OUR_GUID_ENTRY(CLSID_AMovie,                         0x5f2759c0, 0x7685, 0x11cf, 0x8b, 0x23, 0x00, 0x80, 0x5f, 0x6c, 0xef, 0x60)
+OUR_GUID_ENTRY(CLSID_AVICo,                          0xd76e2820, 0x1563, 0x11cf, 0xac, 0x98, 0x00, 0xaa, 0x00, 0x4c, 0x0f, 0xa9)
+OUR_GUID_ENTRY(CLSID_FileWriter,                     0x8596e5f0, 0x0da5, 0x11d0, 0xbd, 0x21, 0x00, 0xa0, 0xc9, 0x11, 0xce, 0x86)
+OUR_GUID_ENTRY(CLSID_AviDest,                        0xe2510970, 0xf137, 0x11ce, 0x8b, 0x67, 0x00, 0xaa, 0x00, 0xa3, 0xf1, 0xa6)
+OUR_GUID_ENTRY(CLSID_AsfMux,                         0xf560ae42, 0x6cdd, 0x11d1, 0xad, 0xe2, 0x00, 0x00, 0xf8, 0x75, 0x4b, 0x99)
+OUR_GUID_ENTRY(CLSID_AviMuxProptyPage,               0xc647b5c0, 0x157c, 0x11d0, 0xbd, 0x23, 0x00, 0xa0, 0xc9, 0x11, 0xce, 0x86)
+OUR_GUID_ENTRY(CLSID_AviMuxProptyPage1,              0x0a9ae910, 0x85c0, 0x11d0, 0xbd, 0x42, 0x00, 0xa0, 0xc9, 0x11, 0xce, 0x86)
+OUR_GUID_ENTRY(CLSID_AVIMIDIRender,                  0x07b65360, 0xc445, 0x11ce, 0xaf, 0xde, 0x00, 0xaa, 0x00, 0x6c, 0x14, 0xf4)
+OUR_GUID_ENTRY(CLSID_DVVideoCodec,                   0xb1b77c00, 0xc3e4, 0x11cf, 0xaf, 0x79, 0x00, 0xaa, 0x00, 0xb6, 0x7a, 0x42)
+OUR_GUID_ENTRY(CLSID_DVVideoEnc,                     0x13aa3650, 0xbb6f, 0x11d0, 0xaf, 0xb9, 0x00, 0xaa, 0x00, 0xb6, 0x7a, 0x42)
+OUR_GUID_ENTRY(CLSID_DVSplitter,                     0x4eb31670, 0x9fc6, 0x11cf, 0xaf, 0x6e, 0x00, 0xaa, 0x00, 0xb6, 0x7a, 0x42)
+OUR_GUID_ENTRY(CLSID_DVMux,                          0x129d7e40, 0xc10d, 0x11d0, 0xaf, 0xb9, 0x00, 0xaa, 0x00, 0xb6, 0x7a, 0x42)
+OUR_GUID_ENTRY(CLSID_SeekingPassThru,                0x060af76c, 0x68dd, 0x11d0, 0x8f, 0xc1, 0x00, 0xc0, 0x4f, 0xd9, 0x18, 0x9d)
+OUR_GUID_ENTRY(CLSID_Line21Decoder,                  0x6e8d4a20, 0x310c, 0x11d0, 0xb7, 0x9a, 0x00, 0xaa, 0x00, 0x37, 0x67, 0xa7)
+OUR_GUID_ENTRY(CLSID_OverlayMixer,                   0xcd8743a1, 0x3736, 0x11d0, 0x9e, 0x69, 0x00, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b)
+OUR_GUID_ENTRY(CLSID_VBISurfaces,                    0x814b9800, 0x1c88, 0x11d1, 0xba, 0xd9, 0x00, 0x60, 0x97, 0x44, 0x11, 0x1a)
+OUR_GUID_ENTRY(CLSID_SystemDeviceEnum,               0x62be5d10, 0x60eb, 0x11d0, 0xbd, 0x3b, 0x00, 0xa0, 0xc9, 0x11, 0xce, 0x86)
+OUR_GUID_ENTRY(CLSID_CDeviceMoniker,                 0x4315d437, 0x5b8c, 0x11d0, 0xbd, 0x3b, 0x00, 0xa0, 0xc9, 0x11, 0xce, 0x86)
+OUR_GUID_ENTRY(CLSID_VideoInputDeviceCategory,       0x860bb310, 0x5d01, 0x11d0, 0xbd, 0x3b, 0x00, 0xa0, 0xc9, 0x11, 0xce, 0x86)
+OUR_GUID_ENTRY(CLSID_CVidCapClassManager,            0x860bb310, 0x5d01, 0x11d0, 0xbd, 0x3b, 0x00, 0xa0, 0xc9, 0x11, 0xce, 0x86)
+OUR_GUID_ENTRY(CLSID_LegacyAmFilterCategory,         0x083863f1, 0x70de, 0x11d0, 0xbd, 0x40, 0x00, 0xa0, 0xc9, 0x11, 0xce, 0x86)
+OUR_GUID_ENTRY(CLSID_CQzFilterClassManager,          0x083863f1, 0x70de, 0x11d0, 0xbd, 0x40, 0x00, 0xa0, 0xc9, 0x11, 0xce, 0x86)
+OUR_GUID_ENTRY(CLSID_VideoCompressorCategory,        0x33d9a760, 0x90c8, 0x11d0, 0xbd, 0x43, 0x00, 0xa0, 0xc9, 0x11, 0xce, 0x86)
+OUR_GUID_ENTRY(CLSID_CIcmCoClassManager,             0x33d9a760, 0x90c8, 0x11d0, 0xbd, 0x43, 0x00, 0xa0, 0xc9, 0x11, 0xce, 0x86)
+OUR_GUID_ENTRY(CLSID_AudioCompressorCategory,        0x33d9a761, 0x90c8, 0x11d0, 0xbd, 0x43, 0x00, 0xa0, 0xc9, 0x11, 0xce, 0x86)
+OUR_GUID_ENTRY(CLSID_CAcmCoClassManager,             0x33d9a761, 0x90c8, 0x11d0, 0xbd, 0x43, 0x00, 0xa0, 0xc9, 0x11, 0xce, 0x86)
+OUR_GUID_ENTRY(CLSID_AudioInputDeviceCategory,       0x33d9a762, 0x90c8, 0x11d0, 0xbd, 0x43, 0x00, 0xa0, 0xc9, 0x11, 0xce, 0x86)
+OUR_GUID_ENTRY(CLSID_CWaveinClassManager,            0x33d9a762, 0x90c8, 0x11d0, 0xbd, 0x43, 0x00, 0xa0, 0xc9, 0x11, 0xce, 0x86)
+OUR_GUID_ENTRY(CLSID_AudioRendererCategory,          0xe0f158e1, 0xcb04, 0x11d0, 0xbd, 0x4e, 0x00, 0xa0, 0xc9, 0x11, 0xce, 0x86)
+OUR_GUID_ENTRY(CLSID_CWaveOutClassManager,           0xe0f158e1, 0xcb04, 0x11d0, 0xbd, 0x4e, 0x00, 0xa0, 0xc9, 0x11, 0xce, 0x86)
+OUR_GUID_ENTRY(CLSID_MidiRendererCategory,           0x4efe2452, 0x168a, 0x11d1, 0xbc, 0x76, 0x00, 0xc0, 0x4f, 0xb9, 0x45, 0x3b)
+OUR_GUID_ENTRY(CLSID_CMidiOutClassManager,           0x4efe2452, 0x168a, 0x11d1, 0xbc, 0x76, 0x00, 0xc0, 0x4f, 0xb9, 0x45, 0x3b)
+OUR_GUID_ENTRY(CLSID_TransmitCategory,               0xcc7bfb41, 0xf175, 0x11d1, 0xa3, 0x92, 0x00, 0xe0, 0x29, 0x1f, 0x39, 0x59)
+OUR_GUID_ENTRY(CLSID_DeviceControlCategory,          0xcc7bfb46, 0xf175, 0x11d1, 0xa3, 0x92, 0x00, 0xe0, 0x29, 0x1f, 0x39, 0x59)
+OUR_GUID_ENTRY(CLSID_ActiveMovieCategories,          0xda4e3da0, 0xd07d, 0x11d0, 0xbd, 0x50, 0x00, 0xa0, 0xc9, 0x11, 0xce, 0x86)
+OUR_GUID_ENTRY(CLSID_DVDHWDecodersCategory,          0x2721ae20, 0x7e70, 0x11d0, 0xa5, 0xd6, 0x28, 0xdb, 0x04, 0xc1, 0x00, 0x00)
+OUR_GUID_ENTRY(CLSID_FilterMapper2,                  0xcda42200, 0xbd88, 0x11d0, 0xbd, 0x4e, 0x00, 0xa0, 0xc9, 0x11, 0xce, 0x86)
+OUR_GUID_ENTRY(CLSID_MemoryAllocator,                0x1e651cc0, 0xb199, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45)
+OUR_GUID_ENTRY(CLSID_MediaPropertyBag,               0xcdbd8d00, 0xc193, 0x11d0, 0xbd, 0x4e, 0x00, 0xa0, 0xc9, 0x11, 0xce, 0x86)
+OUR_GUID_ENTRY(CLSID_DvdGraphBuilder,                0xfcc152b7, 0xf372, 0x11d0, 0x8e, 0x00, 0x00, 0xc0, 0x4f, 0xd7, 0xc0, 0x8b)
+OUR_GUID_ENTRY(CLSID_DVDNavigator,                   0x9b8c4620, 0x2c1a, 0x11d0, 0x84, 0x93, 0x00, 0xa0, 0x24, 0x38, 0xad, 0x48)
+OUR_GUID_ENTRY(CLSID_SmartTee,                       0xcc58e280, 0x8aa1, 0x11d1, 0xb3, 0xf1, 0x00, 0xaa, 0x00, 0x37, 0x61, 0xc5)
+OUR_GUID_ENTRY(FORMAT_None,                          0x0f6417d6, 0xc318, 0x11d0, 0xa4, 0x3f, 0x00, 0xa0, 0xc9, 0x22, 0x31, 0x96)
+OUR_GUID_ENTRY(FORMAT_VideoInfo,                     0x05589f80, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a)
+OUR_GUID_ENTRY(FORMAT_VideoInfo2,                    0xf72a76a0, 0xeb0a, 0x11d0, 0xac, 0xe4, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba)
+OUR_GUID_ENTRY(FORMAT_WaveFormatEx,                  0x05589f81, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a)
+OUR_GUID_ENTRY(FORMAT_MPEGVideo,                     0x05589f82, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a)
+OUR_GUID_ENTRY(FORMAT_MPEGStreams,                   0x05589f83, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a)
+OUR_GUID_ENTRY(FORMAT_DvInfo,                        0x05589f84, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a)
+OUR_GUID_ENTRY(CLSID_DirectDrawProperties,           0x944d4c00, 0xdd52, 0x11ce, 0xbf, 0x0e, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a)
+OUR_GUID_ENTRY(CLSID_PerformanceProperties,          0x59ce6880, 0xacf8, 0x11cf, 0xb5, 0x6e, 0x00, 0x80, 0xc7, 0xc4, 0xb6, 0x8a)
+OUR_GUID_ENTRY(CLSID_QualityProperties,              0x418afb70, 0xf8b8, 0x11ce, 0xaa, 0xc6, 0x00, 0x20, 0xaf, 0x0b, 0x99, 0xa3)
+OUR_GUID_ENTRY(IID_IBaseVideoMixer,                  0x61ded640, 0xe912, 0x11ce, 0xa0, 0x99, 0x00, 0xaa, 0x00, 0x47, 0x9a, 0x58)
+OUR_GUID_ENTRY(IID_IDirectDrawVideo,                 0x36d39eb0, 0xdd75, 0x11ce, 0xbf, 0x0e, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a)
+OUR_GUID_ENTRY(IID_IQualProp,                        0x1bd0ecb0, 0xf8e2, 0x11ce, 0xaa, 0xc6, 0x00, 0x20, 0xaf, 0x0b, 0x99, 0xa3)
+OUR_GUID_ENTRY(CLSID_VPObject,                       0xce292861, 0xfc88, 0x11d0, 0x9e, 0x69, 0x00, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b)
+OUR_GUID_ENTRY(IID_IVPObject,                        0xce292862, 0xfc88, 0x11d0, 0x9e, 0x69, 0x00, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b)
+OUR_GUID_ENTRY(IID_IVPControl,                       0x25df12c1, 0x3de0, 0x11d1, 0x9e, 0x69, 0x00, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b)
+OUR_GUID_ENTRY(CLSID_VPVBIObject,                    0x814b9801, 0x1c88, 0x11d1, 0xba, 0xd9, 0x00, 0x60, 0x97, 0x44, 0x11, 0x1a)
+OUR_GUID_ENTRY(IID_IVPVBIObject,                     0x814b9802, 0x1c88, 0x11d1, 0xba, 0xd9, 0x00, 0x60, 0x97, 0x44, 0x11, 0x1a)
+OUR_GUID_ENTRY(IID_IVPConfig,                        0xbc29a660, 0x30e3, 0x11d0, 0x9e, 0x69, 0x00, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b)
+OUR_GUID_ENTRY(IID_IVPNotify,                        0xc76794a1, 0xd6c5, 0x11d0, 0x9e, 0x69, 0x00, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b)
+OUR_GUID_ENTRY(IID_IVPNotify2,                       0xebf47183, 0x8764, 0x11d1, 0x9e, 0x69, 0x00, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b)
+OUR_GUID_ENTRY(IID_IVPVBIConfig,                     0xec529b00, 0x1a1f, 0x11d1, 0xba, 0xd9, 0x00, 0x60, 0x97, 0x44, 0x11, 0x1a)
+OUR_GUID_ENTRY(IID_IVPVBINotify,                     0xec529b01, 0x1a1f, 0x11d1, 0xba, 0xd9, 0x00, 0x60, 0x97, 0x44, 0x11, 0x1a)
+OUR_GUID_ENTRY(IID_IMixerPinConfig,                  0x593cdde1, 0x0759, 0x11d1, 0x9e, 0x69, 0x00, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b)
+OUR_GUID_ENTRY(IID_IMixerPinConfig2,                 0xebf47182, 0x8764, 0x11d1, 0x9e, 0x69, 0x00, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b)
+OUR_GUID_ENTRY(CLSID_ModexProperties,                0x0618aa30, 0x6bc4, 0x11cf, 0xbf, 0x36, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a)
+OUR_GUID_ENTRY(IID_IFullScreenVideo,                 0xdd1d7110, 0x7836, 0x11cf, 0xbf, 0x47, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a)
+OUR_GUID_ENTRY(IID_IFullScreenVideoEx,               0x53479470, 0xf1dd, 0x11cf, 0xbc, 0x42, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6)
+OUR_GUID_ENTRY(CLSID_DVDecPropertiesPage,            0x101193c0, 0x0bfe, 0x11d0, 0xaf, 0x91, 0x00, 0xaa, 0x00, 0xb6, 0x7a, 0x42)
+OUR_GUID_ENTRY(CLSID_DVEncPropertiesPage,            0x4150f050, 0xbb6f, 0x11d0, 0xaf, 0xb9, 0x00, 0xaa, 0x00, 0xb6, 0x7a, 0x42)
+OUR_GUID_ENTRY(CLSID_DVMuxPropertyPage,              0x4db880e0, 0xc10d, 0x11d0, 0xaf, 0xb9, 0x00, 0xaa, 0x00, 0xb6, 0x7a, 0x42)
+OUR_GUID_ENTRY(IID_IAMDirectSound,                   0x546f4260, 0xd53e, 0x11cf, 0xb3, 0xf0, 0x00, 0xaa, 0x00, 0x37, 0x61, 0xc5)
+OUR_GUID_ENTRY(IID_IMpegAudioDecoder,                0xb45dd570, 0x3c77, 0x11d1, 0xab, 0xe1, 0x00, 0xa0, 0xc9, 0x05, 0xf3, 0x75)
+OUR_GUID_ENTRY(IID_IAMLine21Decoder,                 0x6e8d4a21, 0x310c, 0x11d0, 0xb7, 0x9a, 0x00, 0xaa, 0x00, 0x37, 0x67, 0xa7)
+OUR_GUID_ENTRY(FORMAT_AnalogVideo,                   0x0482dde0, 0x7817, 0x11cf, 0x8a, 0x03, 0x00, 0xaa, 0x00, 0x6e, 0xcb, 0x65)
+OUR_GUID_ENTRY(MEDIATYPE_AnalogVideo,                0x0482dde1, 0x7817, 0x11cf, 0x8a, 0x03, 0x00, 0xaa, 0x00, 0x6e, 0xcb, 0x65)
+OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_NTSC_M,      0x0482dde2, 0x7817, 0x11cf, 0x8a, 0x03, 0x00, 0xaa, 0x00, 0x6e, 0xcb, 0x65)
+OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_PAL_B,       0x0482dde5, 0x7817, 0x11cf, 0x8a, 0x03, 0x00, 0xaa, 0x00, 0x6e, 0xcb, 0x65)
+OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_PAL_D,       0x0482dde6, 0x7817, 0x11cf, 0x8a, 0x03, 0x00, 0xaa, 0x00, 0x6e, 0xcb, 0x65)
+OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_PAL_G,       0x0482dde7, 0x7817, 0x11cf, 0x8a, 0x03, 0x00, 0xaa, 0x00, 0x6e, 0xcb, 0x65)
+OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_PAL_H,       0x0482dde8, 0x7817, 0x11cf, 0x8a, 0x03, 0x00, 0xaa, 0x00, 0x6e, 0xcb, 0x65)
+OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_PAL_I,       0x0482dde9, 0x7817, 0x11cf, 0x8a, 0x03, 0x00, 0xaa, 0x00, 0x6e, 0xcb, 0x65)
+OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_PAL_M,       0x0482ddea, 0x7817, 0x11cf, 0x8a, 0x03, 0x00, 0xaa, 0x00, 0x6e, 0xcb, 0x65)
+OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_PAL_N,       0x0482ddeb, 0x7817, 0x11cf, 0x8a, 0x03, 0x00, 0xaa, 0x00, 0x6e, 0xcb, 0x65)
+OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_SECAM_B,     0x0482ddf0, 0x7817, 0x11cf, 0x8a, 0x03, 0x00, 0xaa, 0x00, 0x6e, 0xcb, 0x65)
+OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_SECAM_D,     0x0482ddf1, 0x7817, 0x11cf, 0x8a, 0x03, 0x00, 0xaa, 0x00, 0x6e, 0xcb, 0x65)
+OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_SECAM_G,     0x0482ddf2, 0x7817, 0x11cf, 0x8a, 0x03, 0x00, 0xaa, 0x00, 0x6e, 0xcb, 0x65)
+OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_SECAM_H,     0x0482ddf3, 0x7817, 0x11cf, 0x8a, 0x03, 0x00, 0xaa, 0x00, 0x6e, 0xcb, 0x65)
+OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_SECAM_K,     0x0482ddf4, 0x7817, 0x11cf, 0x8a, 0x03, 0x00, 0xaa, 0x00, 0x6e, 0xcb, 0x65)
+OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_SECAM_K1,    0x0482ddf5, 0x7817, 0x11cf, 0x8a, 0x03, 0x00, 0xaa, 0x00, 0x6e, 0xcb, 0x65)
+OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_SECAM_L,     0x0482ddf6, 0x7817, 0x11cf, 0x8a, 0x03, 0x00, 0xaa, 0x00, 0x6e, 0xcb, 0x65)
+OUR_GUID_ENTRY(MEDIATYPE_AnalogAudio,                0x0482dee1, 0x7817, 0x11cf, 0x8a, 0x03, 0x00, 0xaa, 0x00, 0x6e, 0xcb, 0x65)
+OUR_GUID_ENTRY(TIME_FORMAT_NONE,                     0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)
+OUR_GUID_ENTRY(TIME_FORMAT_FRAME,                    0x7b785570, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6)
+OUR_GUID_ENTRY(TIME_FORMAT_BYTE,                     0x7b785571, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6)
+OUR_GUID_ENTRY(TIME_FORMAT_SAMPLE,                   0x7b785572, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6)
+OUR_GUID_ENTRY(TIME_FORMAT_FIELD,                    0x7b785573, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6)
+OUR_GUID_ENTRY(TIME_FORMAT_MEDIA_TIME,               0x7b785574, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6)
+OUR_GUID_ENTRY(AMPROPSETID_Pin,                      0x9b00f101, 0x1567, 0x11d1, 0xb3, 0xf1, 0x00, 0xaa, 0x00, 0x37, 0x61, 0xc5)
+OUR_GUID_ENTRY(PIN_CATEGORY_CAPTURE,                 0xfb6c4281, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba)
+OUR_GUID_ENTRY(PIN_CATEGORY_PREVIEW,                 0xfb6c4282, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba)
+OUR_GUID_ENTRY(PIN_CATEGORY_ANALOGVIDEOIN,           0xfb6c4283, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba)
+OUR_GUID_ENTRY(PIN_CATEGORY_VBI,                     0xfb6c4284, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba)
+OUR_GUID_ENTRY(PIN_CATEGORY_VIDEOPORT,               0xfb6c4285, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba)
+OUR_GUID_ENTRY(PIN_CATEGORY_NABTS,                   0xfb6c4286, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba)
+OUR_GUID_ENTRY(PIN_CATEGORY_EDS,                     0xfb6c4287, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba)
+OUR_GUID_ENTRY(PIN_CATEGORY_TELETEXT,                0xfb6c4288, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba)
+OUR_GUID_ENTRY(PIN_CATEGORY_CC,                      0xfb6c4289, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba)
+OUR_GUID_ENTRY(PIN_CATEGORY_STILL,                   0xfb6c428a, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba)
+OUR_GUID_ENTRY(PIN_CATEGORY_TIMECODE,                0xfb6c428b, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba)
+OUR_GUID_ENTRY(PIN_CATEGORY_VIDEOPORT_VBI,           0xfb6c428c, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba)
+OUR_GUID_ENTRY(LOOK_UPSTREAM_ONLY,                   0xac798be0, 0x98e3, 0x11d1, 0xb3, 0xf1, 0x00, 0xaa, 0x00, 0x37, 0x61, 0xc5)
+OUR_GUID_ENTRY(LOOK_DOWNSTREAM_ONLY,                 0xac798be1, 0x98e3, 0x11d1, 0xb3, 0xf1, 0x00, 0xaa, 0x00, 0x37, 0x61, 0xc5)
+OUR_GUID_ENTRY(CLSID_TVTunerFilterPropertyPage,      0x266eee41, 0x6c63, 0x11cf, 0x8a, 0x03, 0x00, 0xaa, 0x00, 0x6e, 0xcb, 0x65)
+OUR_GUID_ENTRY(CLSID_CrossbarFilterPropertyPage,     0x71f96461, 0x78f3, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56)
+OUR_GUID_ENTRY(CLSID_TVAudioFilterPropertyPage,      0x71f96463, 0x78f3, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56)
+OUR_GUID_ENTRY(CLSID_VideoProcAmpPropertyPage,       0x71f96464, 0x78f3, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56)
+OUR_GUID_ENTRY(CLSID_CameraControlPropertyPage,      0x71f96465, 0x78f3, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56)
+OUR_GUID_ENTRY(CLSID_AnalogVideoDecoderPropertyPage, 0x71f96466, 0x78f3, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56)
+OUR_GUID_ENTRY(CLSID_VideoStreamConfigPropertyPage,  0x71f96467, 0x78f3, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56)
+OUR_GUID_ENTRY(CLSID_VideoMixingRenderer9,           0x51b4abf3, 0x748f, 0x4e3b, 0xa2, 0x76, 0xc8, 0x28, 0x33, 0x0e, 0x92, 0x6a)
+
+#undef OUR_GUID_ENTRY
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/uxtheme.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/uxtheme.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/uxtheme.h	(revision 16410)
@@ -0,0 +1,203 @@
+/*
+ * Win32 5.1 theme definitions
+ *
+ * Copyright (C) 2003 Kevin Koltzau
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_UXTHEME_H
+#define __WINE_UXTHEME_H
+
+#include <commctrl.h>
+
+typedef HANDLE HTHEME;
+
+HRESULT WINAPI CloseThemeData(HTHEME hTheme);
+HRESULT WINAPI DrawThemeBackground(HTHEME,HDC,int,int,const RECT*,const RECT*);
+
+#define DTBG_CLIPRECT        0x00000001
+#define DTBG_DRAWSOLID       0x00000002
+#define DTBG_OMITBORDER      0x00000004
+#define DTBG_OMITCONTENT     0x00000008
+#define DTBG_COMPUTINGREGION 0x00000010
+#define DTBG_MIRRORDC        0x00000020
+
+typedef struct _DTBGOPTS {
+    DWORD dwSize;
+    DWORD dwFlags;
+    RECT rcClip;
+} DTBGOPTS, *PDTBGOPTS;
+
+HRESULT WINAPI DrawThemeBackgroundEx(HTHEME,HDC,int,int,const RECT*,
+                                     const DTBGOPTS*);
+HRESULT WINAPI DrawThemeEdge(HTHEME,HDC,int,int,const RECT*,UINT,UINT,
+                             RECT*);
+HRESULT WINAPI DrawThemeIcon(HTHEME,HDC,int,int,const RECT*,HIMAGELIST,int);
+HRESULT WINAPI DrawThemeParentBackground(HWND,HDC,RECT*);
+
+#define DTT_GRAYED      0x1
+
+HRESULT WINAPI DrawThemeText(HTHEME,HDC,int,int,LPCWSTR,int,DWORD,DWORD,
+                             const RECT*);
+
+#define ETDT_DISABLE       0x00000001
+#define ETDT_ENABLE        0x00000002
+#define ETDT_USETABTEXTURE 0x00000004
+#define ETDT_ENABLETAB     (ETDT_ENABLE|ETDT_USETABTEXTURE)
+
+HRESULT WINAPI EnableThemeDialogTexture(HWND,DWORD);
+HRESULT WINAPI EnableTheming(BOOL);
+HRESULT WINAPI GetCurrentThemeName(LPWSTR,int,LPWSTR,int,LPWSTR,int);
+
+#define STAP_ALLOW_NONCLIENT    (1<<0)
+#define STAP_ALLOW_CONTROLS     (1<<1)
+#define STAP_ALLOW_WEBCONTENT   (1<<2)
+
+DWORD WINAPI GetThemeAppProperties(void);
+HRESULT WINAPI GetThemeBackgroundContentRect(HTHEME,HDC,int,int,
+                                             const RECT*,RECT*);
+HRESULT WINAPI GetThemeBackgroundExtent(HTHEME,HDC,int,int,const RECT*,RECT*);
+HRESULT WINAPI GetThemeBackgroundRegion(HTHEME,HDC,int,int,const RECT*,HRGN*);
+HRESULT WINAPI GetThemeBool(HTHEME,int,int,int,BOOL*);
+HRESULT WINAPI GetThemeColor(HTHEME,int,int,int,COLORREF*);
+
+#if defined(__GNUC__)
+# define SZ_THDOCPROP_DISPLAYNAME   (const WCHAR []){ 'D','i','s','p','l','a','y','N','a','m','e',0 }
+# define SZ_THDOCPROP_CANONICALNAME (const WCHAR []){ 'T','h','e','m','e','N','a','m','e',0 }
+# define SZ_THDOCPROP_TOOLTIP       (const WCHAR []){ 'T','o','o','l','T','i','p',0 }
+# define SZ_THDOCPROP_AUTHOR        (const WCHAR []){ 'a','u','t','h','o','r',0 }
+#elif defined(_MSC_VER)
+# define SZ_THDOCPROP_DISPLAYNAME   L"DisplayName"
+# define SZ_THDOCPROP_CANONICALNAME L"ThemeName"
+# define SZ_THDOCPROP_TOOLTIP       L"ToolTip"
+# define SZ_THDOCPROP_AUTHOR        L"author"
+#else
+static const WCHAR SZ_THDOCPROP_DISPLAYNAME[] =   { 'D','i','s','p','l','a','y','N','a','m','e',0 };
+static const WCHAR SZ_THDOCPROP_CANONICALNAME[] = { 'T','h','e','m','e','N','a','m','e',0 };
+static const WCHAR SZ_THDOCPROP_TOOLTIP[] =       { 'T','o','o','l','T','i','p',0 };
+static const WCHAR SZ_THDOCPROP_AUTHOR[] =        { 'a','u','t','h','o','r',0 };
+#endif
+
+HRESULT WINAPI GetThemeDocumentationProperty(LPCWSTR,LPCWSTR,LPWSTR,int);
+HRESULT WINAPI GetThemeEnumValue(HTHEME,int,int,int,int*);
+HRESULT WINAPI GetThemeFilename(HTHEME,int,int,int,LPWSTR,int);
+HRESULT WINAPI GetThemeFont(HTHEME,HDC,int,int,int,LOGFONTW*);
+HRESULT WINAPI GetThemeInt(HTHEME,int,int,int,int*);
+
+#define MAX_INTLIST_COUNT 10
+typedef struct _INTLIST {
+    int iValueCount;
+    int iValues[MAX_INTLIST_COUNT];
+} INTLIST, *PINTLIST;
+
+HRESULT WINAPI GetThemeIntList(HTHEME,int,int,int,INTLIST*);
+
+typedef struct _MARGINS {
+    int cxLeftWidth;
+    int cxRightWidth;
+    int cyTopHeight;
+    int cyBottomHeight;
+} MARGINS, *PMARGINS;
+
+HRESULT WINAPI GetThemeMargins(HTHEME,HDC,int,int,int,RECT*,MARGINS*);
+HRESULT WINAPI GetThemeMetric(HTHEME,HDC,int,int,int,int*);
+
+typedef enum {
+    TS_MIN,
+    TS_TRUE,
+    TS_DRAW
+} THEMESIZE;
+
+HRESULT WINAPI GetThemePartSize(HTHEME,HDC,int,int,RECT*,THEMESIZE,SIZE*);
+HRESULT WINAPI GetThemePosition(HTHEME,int,int,int,POINT*);
+
+typedef enum {
+    PO_STATE,
+    PO_PART,
+    PO_CLASS,
+    PO_GLOBAL,
+    PO_NOTFOUND
+} PROPERTYORIGIN;
+
+HRESULT WINAPI GetThemePropertyOrigin(HTHEME,int,int,int,PROPERTYORIGIN*);
+HRESULT WINAPI GetThemeRect(HTHEME,int,int,int,RECT*);
+HRESULT WINAPI GetThemeString(HTHEME,int,int,int,LPWSTR,int);
+BOOL WINAPI GetThemeSysBool(HTHEME,int);
+COLORREF WINAPI GetThemeSysColor(HTHEME,int);
+HBRUSH WINAPI GetThemeSysColorBrush(HTHEME,int);
+HRESULT WINAPI GetThemeSysFont(HTHEME,int,LOGFONTW*);
+HRESULT WINAPI GetThemeSysInt(HTHEME,int,int*);
+int WINAPI GetThemeSysSize(HTHEME,int);
+HRESULT WINAPI GetThemeSysString(HTHEME,int,LPWSTR,int);
+HRESULT WINAPI GetThemeTextExtent(HTHEME,HDC,int,int,LPCWSTR,int,DWORD,
+                                  const RECT*,RECT*);
+HRESULT WINAPI GetThemeTextMetrics(HTHEME,HDC,int,int,TEXTMETRICW*);
+HTHEME WINAPI GetWindowTheme(HWND);
+
+#define HTTB_BACKGROUNDSEG          0x0000
+#define HTTB_FIXEDBORDER            0x0002
+#define HTTB_CAPTION                0x0004
+#define HTTB_RESIZINGBORDER_LEFT    0x0010
+#define HTTB_RESIZINGBORDER_TOP     0x0020
+#define HTTB_RESIZINGBORDER_RIGHT   0x0040
+#define HTTB_RESIZINGBORDER_BOTTOM  0x0080
+#define HTTB_RESIZINGBORDER \
+    (HTTB_RESIZINGBORDER_LEFT|HTTB_RESIZINGBORDER_TOP|\
+     HTTB_RESIZINGBORDER_RIGHT|HTTB_RESIZINGBORDER_BOTTOM)
+#define HTTB_SIZINGTEMPLATE         0x0100
+#define HTTB_SYSTEMSIZINGMARGINS    0x0200
+
+HRESULT WINAPI HitTestThemeBackground(HTHEME,HDC,int,int,DWORD,const RECT*,
+                                      HRGN,POINT,WORD*);
+BOOL WINAPI IsAppThemed(void);
+BOOL WINAPI IsThemeActive(void);
+BOOL WINAPI IsThemeBackgroundPartiallyTransparent(HTHEME,int,int);
+BOOL WINAPI IsThemeDialogTextureEnabled(HWND);
+BOOL WINAPI IsThemePartDefined(HTHEME,int,int);
+HTHEME WINAPI OpenThemeData(HWND,LPCWSTR);
+void WINAPI SetThemeAppProperties(DWORD);
+HRESULT WINAPI SetWindowTheme(HWND,LPCWSTR,LPCWSTR);
+
+
+/* Double-buffered Drawing API */
+
+typedef HANDLE HPAINTBUFFER;
+
+HRESULT WINAPI BufferedPaintInit(VOID);
+HRESULT WINAPI BufferedPaintUnInit(VOID);
+
+typedef enum _BP_BUFFERFORMAT
+{
+	BPBF_COMPATIBLEBITMAP,
+	BPBF_DIB,
+	BPBF_TOPDOWNDIB,
+	BPBF_TOPDOWNMONODIB
+} BP_BUFFERFORMAT;
+
+typedef struct _BP_PAINTPARAMS
+{
+	DWORD cbSize;
+	DWORD dwFlags;
+	const RECT *prcExclude;
+	const BLENDFUNCTION *pBlendFunction;
+} BP_PAINTPARAMS, *PBP_PAINTPARAMS;
+
+HPAINTBUFFER WINAPI BeginBufferedPaint(HDC, const RECT *, BP_BUFFERFORMAT,
+                                       BP_PAINTPARAMS *,HDC *);
+
+HRESULT WINAPI EndBufferedPaint(HPAINTBUFFER, BOOL);
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/vdmdbg.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/vdmdbg.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/vdmdbg.h	(revision 16410)
@@ -0,0 +1,40 @@
+/*
+ * VDMDBG definitions
+ *
+ * Copyright (C) 2007 James Hawkins
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_VDMDBG_H
+#define __WINE_VDMDBG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+typedef BOOL (WINAPI *PROCESSENUMPROC)(DWORD, DWORD, LPARAM);
+typedef BOOL (WINAPI *TASKENUMPROC)(DWORD, WORD, WORD, LPARAM);
+typedef BOOL (WINAPI *TASKENUMPROCEX)(DWORD, WORD, WORD, PSZ, PSZ, LPARAM);
+
+INT WINAPI VDMEnumProcessWOW(PROCESSENUMPROC, LPARAM);
+INT WINAPI VDMEnumTaskWOW(DWORD, TASKENUMPROC, LPARAM);
+INT WINAPI VDMEnumTaskWOWEx(DWORD, TASKENUMPROCEX, LPARAM);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif /* __WINE_VDMDBG_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ver.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ver.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ver.h	(revision 16410)
@@ -0,0 +1,27 @@
+/* Definitions for the VERsion infolibrary (VER.DLL)
+ *
+ * Copyright 1996 Marcus Meissner
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ * Marked as obsolete:  Albert den Haan (Corel Corp) 1999-04-28
+ * VER.H obsolete, include winver.h instead
+ */
+#ifndef __WINE_VER_H
+#define __WINE_VER_H
+
+#include <winver.h>
+
+#endif	/* __WINE_VER_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/vfw.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/vfw.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/vfw.h	(revision 16410)
@@ -0,0 +1,1940 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_VFW_H
+#define __WINE_VFW_H
+
+#include <mmsystem.h>
+#include <mmreg.h>
+#include <msacm.h>
+
+#define VFWAPI	WINAPI
+#define VFWAPIV	WINAPIV
+
+#ifdef __cplusplus
+extern "C" {
+#endif  /* __cplusplus */
+
+typedef HANDLE HDRAWDIB;
+
+/*****************************************************************************
+ * Predeclare the interfaces
+ */
+typedef struct IAVIStream *PAVISTREAM;
+typedef struct IAVIFile *PAVIFILE;
+typedef struct IGetFrame *PGETFRAME;
+typedef struct IAVIEditStream *PAVIEDITSTREAM;
+
+/* Installable Compressor Manager */
+
+#define ICVERSION 0x0104
+
+DECLARE_HANDLE(HIC);
+
+/* error return codes */
+#define	ICERR_OK		0
+#define	ICERR_DONTDRAW		1
+#define	ICERR_NEWPALETTE	2
+#define	ICERR_GOTOKEYFRAME	3
+#define	ICERR_STOPDRAWING	4
+
+#define	ICERR_UNSUPPORTED	-1
+#define	ICERR_BADFORMAT		-2
+#define	ICERR_MEMORY		-3
+#define	ICERR_INTERNAL		-4
+#define	ICERR_BADFLAGS		-5
+#define	ICERR_BADPARAM		-6
+#define	ICERR_BADSIZE		-7
+#define	ICERR_BADHANDLE		-8
+#define	ICERR_CANTUPDATE	-9
+#define	ICERR_ABORT		-10
+#define	ICERR_ERROR		-100
+#define	ICERR_BADBITDEPTH	-200
+#define	ICERR_BADIMAGESIZE	-201
+
+#define	ICERR_CUSTOM		-400
+
+/* ICM Messages */
+#define	ICM_USER		(DRV_USER+0x0000)
+
+/* ICM driver message range */
+#define	ICM_RESERVED_LOW	(DRV_USER+0x1000)
+#define	ICM_RESERVED_HIGH	(DRV_USER+0x2000)
+#define	ICM_RESERVED		ICM_RESERVED_LOW
+
+#define	ICM_GETSTATE		(ICM_RESERVED+0)
+#define	ICM_SETSTATE		(ICM_RESERVED+1)
+#define	ICM_GETINFO		(ICM_RESERVED+2)
+
+#define	ICM_CONFIGURE		(ICM_RESERVED+10)
+#define	ICM_ABOUT		(ICM_RESERVED+11)
+/* */
+
+#define	ICM_GETDEFAULTQUALITY	(ICM_RESERVED+30)
+#define	ICM_GETQUALITY		(ICM_RESERVED+31)
+#define	ICM_SETQUALITY		(ICM_RESERVED+32)
+
+#define	ICM_SET			(ICM_RESERVED+40)
+#define	ICM_GET			(ICM_RESERVED+41)
+
+/* 2 constant FOURCC codes */
+#define ICM_FRAMERATE		mmioFOURCC('F','r','m','R')
+#define ICM_KEYFRAMERATE	mmioFOURCC('K','e','y','R')
+
+#define	ICM_COMPRESS_GET_FORMAT		(ICM_USER+4)
+#define	ICM_COMPRESS_GET_SIZE		(ICM_USER+5)
+#define	ICM_COMPRESS_QUERY		(ICM_USER+6)
+#define	ICM_COMPRESS_BEGIN		(ICM_USER+7)
+#define	ICM_COMPRESS			(ICM_USER+8)
+#define	ICM_COMPRESS_END		(ICM_USER+9)
+
+#define	ICM_DECOMPRESS_GET_FORMAT	(ICM_USER+10)
+#define	ICM_DECOMPRESS_QUERY		(ICM_USER+11)
+#define	ICM_DECOMPRESS_BEGIN		(ICM_USER+12)
+#define	ICM_DECOMPRESS			(ICM_USER+13)
+#define	ICM_DECOMPRESS_END		(ICM_USER+14)
+#define	ICM_DECOMPRESS_SET_PALETTE	(ICM_USER+29)
+#define	ICM_DECOMPRESS_GET_PALETTE	(ICM_USER+30)
+
+#define	ICM_DRAW_QUERY			(ICM_USER+31)
+#define	ICM_DRAW_BEGIN			(ICM_USER+15)
+#define	ICM_DRAW_GET_PALETTE		(ICM_USER+16)
+#define	ICM_DRAW_START			(ICM_USER+18)
+#define	ICM_DRAW_STOP			(ICM_USER+19)
+#define	ICM_DRAW_END			(ICM_USER+21)
+#define	ICM_DRAW_GETTIME		(ICM_USER+32)
+#define	ICM_DRAW			(ICM_USER+33)
+#define	ICM_DRAW_WINDOW			(ICM_USER+34)
+#define	ICM_DRAW_SETTIME		(ICM_USER+35)
+#define	ICM_DRAW_REALIZE		(ICM_USER+36)
+#define	ICM_DRAW_FLUSH			(ICM_USER+37)
+#define	ICM_DRAW_RENDERBUFFER		(ICM_USER+38)
+
+#define	ICM_DRAW_START_PLAY		(ICM_USER+39)
+#define	ICM_DRAW_STOP_PLAY		(ICM_USER+40)
+
+#define	ICM_DRAW_SUGGESTFORMAT		(ICM_USER+50)
+#define	ICM_DRAW_CHANGEPALETTE		(ICM_USER+51)
+
+#define	ICM_GETBUFFERSWANTED		(ICM_USER+41)
+
+#define	ICM_GETDEFAULTKEYFRAMERATE	(ICM_USER+42)
+
+#define	ICM_DECOMPRESSEX_BEGIN		(ICM_USER+60)
+#define	ICM_DECOMPRESSEX_QUERY		(ICM_USER+61)
+#define	ICM_DECOMPRESSEX		(ICM_USER+62)
+#define	ICM_DECOMPRESSEX_END		(ICM_USER+63)
+
+#define	ICM_COMPRESS_FRAMES_INFO	(ICM_USER+70)
+#define	ICM_SET_STATUS_PROC		(ICM_USER+72)
+
+#ifndef comptypeDIB
+#define comptypeDIB  mmioFOURCC('D','I','B',' ')
+#endif
+
+/* structs */
+
+/* NOTE: Only the 16 bit structs are packed. Structs that are packed anyway
+ * have not been changed. If a structure is later extended, you may need to create
+ * two versions of it.
+ */
+
+typedef struct {
+	DWORD	dwSize;		/* 00: size */
+	DWORD	fccType;	/* 04: type 'vidc' usually */
+	DWORD	fccHandler;	/* 08: */
+	DWORD	dwVersion;	/* 0c: version of compman opening you */
+	DWORD	dwFlags;	/* 10: LOWORD is type specific */
+	LRESULT	dwError;	/* 14: */
+	LPVOID	pV1Reserved;	/* 18: */
+	LPVOID	pV2Reserved;	/* 1c: */
+	DWORD	dnDevNode;	/* 20: */
+				/* 24: */
+} ICOPEN,*LPICOPEN;
+
+#define ICCOMPRESS_KEYFRAME     0x00000001L
+
+typedef struct {
+    DWORD		dwFlags;
+    LPBITMAPINFOHEADER	lpbiOutput;
+    LPVOID		lpOutput;
+    LPBITMAPINFOHEADER	lpbiInput;
+    LPVOID		lpInput;
+    LPDWORD		lpckid;
+    LPDWORD		lpdwFlags;
+    LONG		lFrameNum;
+    DWORD		dwFrameSize;
+    DWORD		dwQuality;
+    LPBITMAPINFOHEADER	lpbiPrev;
+    LPVOID		lpPrev;
+} ICCOMPRESS;
+
+DWORD VFWAPIV ICCompress(
+	HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiOutput,LPVOID lpData,
+	LPBITMAPINFOHEADER lpbiInput,LPVOID lpBits,LPDWORD lpckid,
+	LPDWORD lpdwFlags,LONG lFrameNum,DWORD dwFrameSize,DWORD dwQuality,
+	LPBITMAPINFOHEADER lpbiPrev,LPVOID lpPrev
+);
+
+#define ICCompressGetFormat(hic, lpbiInput, lpbiOutput) 		\
+	ICSendMessage(							\
+	    hic,ICM_COMPRESS_GET_FORMAT,(DWORD_PTR)(LPVOID)(lpbiInput),	\
+	    (DWORD_PTR)(LPVOID)(lpbiOutput)					\
+	)
+
+#define ICCompressGetFormatSize(hic,lpbi) ICCompressGetFormat(hic,lpbi,NULL)
+
+#define ICCompressBegin(hic, lpbiInput, lpbiOutput) 			\
+    ICSendMessage(							\
+    	hic, ICM_COMPRESS_BEGIN, (DWORD_PTR)(LPVOID)(lpbiInput),		\
+	(DWORD_PTR)(LPVOID)(lpbiOutput)					\
+    )
+
+#define ICCompressGetSize(hic, lpbiInput, lpbiOutput) 			\
+    ICSendMessage(							\
+    	hic, ICM_COMPRESS_GET_SIZE, (DWORD_PTR)(LPVOID)(lpbiInput), 	\
+	(DWORD_PTR)(LPVOID)(lpbiOutput)					\
+    )
+
+#define ICCompressQuery(hic, lpbiInput, lpbiOutput)		\
+    ICSendMessage(						\
+    	hic, ICM_COMPRESS_QUERY, (DWORD_PTR)(LPVOID)(lpbiInput),	\
+	(DWORD_PTR)(LPVOID)(lpbiOutput)				\
+    )
+
+#define ICCompressEnd(hic) ICSendMessage(hic, ICM_COMPRESS_END, 0, 0)
+
+/* ICCOMPRESSFRAMES.dwFlags */
+#define ICCOMPRESSFRAMES_PADDING        0x00000001
+typedef struct {
+    DWORD               dwFlags;
+    LPBITMAPINFOHEADER  lpbiOutput;
+    LPARAM              lOutput;
+    LPBITMAPINFOHEADER  lpbiInput;
+    LPARAM              lInput;
+    LONG                lStartFrame;
+    LONG                lFrameCount;
+    LONG                lQuality;
+    LONG                lDataRate;
+    LONG                lKeyRate;
+    DWORD               dwRate;
+    DWORD               dwScale;
+    DWORD               dwOverheadPerFrame;
+    DWORD               dwReserved2;
+    LONG (CALLBACK *GetData)(LPARAM lInput,LONG lFrame,LPVOID lpBits,LONG len);
+    LONG (CALLBACK *PutData)(LPARAM lOutput,LONG lFrame,LPVOID lpBits,LONG len);
+} ICCOMPRESSFRAMES;
+
+typedef struct {
+    DWORD		dwFlags;
+    LPARAM		lParam;
+   /* messages for Status callback */
+#define ICSTATUS_START	    0
+#define ICSTATUS_STATUS	    1
+#define ICSTATUS_END	    2
+#define ICSTATUS_ERROR	    3
+#define ICSTATUS_YIELD	    4
+    /* FIXME: some X11 libs define Status as int... */
+    /* LONG (CALLBACK *zStatus)(LPARAM lParam, UINT message, LONG l); */
+    LONG (CALLBACK *zStatus)(LPARAM lParam, UINT message, LONG l);
+} ICSETSTATUSPROC;
+
+/* Values for wMode of ICOpen() */
+#define	ICMODE_COMPRESS		1
+#define	ICMODE_DECOMPRESS	2
+#define	ICMODE_FASTDECOMPRESS	3
+#define	ICMODE_QUERY		4
+#define	ICMODE_FASTCOMPRESS	5
+#define	ICMODE_DRAW		8
+
+/* quality flags */
+#define ICQUALITY_LOW       0
+#define ICQUALITY_HIGH      10000
+#define ICQUALITY_DEFAULT   -1
+
+typedef struct {
+	DWORD	dwSize;		/* 00: */
+	DWORD	fccType;	/* 04:compressor type     'vidc' 'audc' */
+	DWORD	fccHandler;	/* 08:compressor sub-type 'rle ' 'jpeg' 'pcm '*/
+	DWORD	dwFlags;	/* 0c:flags LOWORD is type specific */
+	DWORD	dwVersion;	/* 10:version of the driver */
+	DWORD	dwVersionICM;	/* 14:version of the ICM used */
+	/*
+	 * under Win32, the driver always returns UNICODE strings.
+	 */
+	WCHAR	szName[16];		/* 18:short name */
+	WCHAR	szDescription[128];	/* 38:long name */
+	WCHAR	szDriver[128];		/* 138:driver that contains compressor*/
+					/* 238: */
+} ICINFO;
+
+/* ICINFO.dwFlags */
+#define	VIDCF_QUALITY		0x0001  /* supports quality */
+#define	VIDCF_CRUNCH		0x0002  /* supports crunching to a frame size */
+#define	VIDCF_TEMPORAL		0x0004  /* supports inter-frame compress */
+#define	VIDCF_COMPRESSFRAMES	0x0008  /* wants the compress all frames message */
+#define	VIDCF_DRAW		0x0010  /* supports drawing */
+#define	VIDCF_FASTTEMPORALC	0x0020  /* does not need prev frame on compress */
+#define	VIDCF_FASTTEMPORALD	0x0080  /* does not need prev frame on decompress */
+#define	VIDCF_QUALITYTIME	0x0040  /* supports temporal quality */
+
+#define	VIDCF_FASTTEMPORAL	(VIDCF_FASTTEMPORALC|VIDCF_FASTTEMPORALD)
+
+
+/* function shortcuts */
+/* ICM_ABOUT */
+#define ICMF_ABOUT_QUERY         0x00000001
+
+#define ICQueryAbout(hic) \
+	(ICSendMessage(hic,ICM_ABOUT,(DWORD_PTR)-1,ICMF_ABOUT_QUERY)==ICERR_OK)
+
+#define ICAbout(hic, hwnd) ICSendMessage(hic,ICM_ABOUT,(DWORD_PTR)(UINT_PTR)(hwnd),0)
+
+/* ICM_CONFIGURE */
+#define ICMF_CONFIGURE_QUERY	0x00000001
+#define ICQueryConfigure(hic) \
+	(ICSendMessage(hic,ICM_CONFIGURE,(DWORD_PTR)-1,ICMF_CONFIGURE_QUERY)==ICERR_OK)
+
+#define ICConfigure(hic,hwnd) \
+	ICSendMessage(hic,ICM_CONFIGURE,(DWORD_PTR)(UINT_PTR)(hwnd),0)
+
+/* Decompression stuff */
+#define ICDECOMPRESS_HURRYUP		0x80000000	/* don't draw just buffer (hurry up!) */
+#define ICDECOMPRESS_UPDATE		0x40000000	/* don't draw just update screen */
+#define ICDECOMPRESS_PREROLL		0x20000000	/* this frame is before real start */
+#define ICDECOMPRESS_NULLFRAME		0x10000000	/* repeat last frame */
+#define ICDECOMPRESS_NOTKEYFRAME	0x08000000	/* this frame is not a key frame */
+
+typedef struct {
+    DWORD		dwFlags;	/* flags (from AVI index...) */
+    LPBITMAPINFOHEADER	lpbiInput;	/* BITMAPINFO of compressed data */
+    LPVOID		lpInput;	/* compressed data */
+    LPBITMAPINFOHEADER	lpbiOutput;	/* DIB to decompress to */
+    LPVOID		lpOutput;
+    DWORD		ckid;		/* ckid from AVI file */
+} ICDECOMPRESS;
+
+typedef struct {
+    DWORD		dwFlags;
+    LPBITMAPINFOHEADER	lpbiSrc;
+    LPVOID		lpSrc;
+    LPBITMAPINFOHEADER	lpbiDst;
+    LPVOID		lpDst;
+
+    /* changed for ICM_DECOMPRESSEX */
+    INT			xDst;       /* destination rectangle */
+    INT			yDst;
+    INT			dxDst;
+    INT			dyDst;
+
+    INT			xSrc;       /* source rectangle */
+    INT			ySrc;
+    INT			dxSrc;
+    INT			dySrc;
+} ICDECOMPRESSEX;
+
+DWORD VFWAPIV ICDecompress(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiFormat,LPVOID lpData,LPBITMAPINFOHEADER lpbi,LPVOID lpBits);
+
+#define ICDecompressBegin(hic, lpbiInput, lpbiOutput) 	\
+    ICSendMessage(						\
+    	hic, ICM_DECOMPRESS_BEGIN, (DWORD_PTR)(LPVOID)(lpbiInput),	\
+	(DWORD_PTR)(LPVOID)(lpbiOutput)				\
+    )
+
+#define ICDecompressQuery(hic, lpbiInput, lpbiOutput) 	\
+    ICSendMessage(						\
+    	hic,ICM_DECOMPRESS_QUERY, (DWORD_PTR)(LPVOID)(lpbiInput),	\
+	(DWORD_PTR) (LPVOID)(lpbiOutput)				\
+    )
+
+#define ICDecompressGetFormat(hic, lpbiInput, lpbiOutput)		\
+    ((LONG)ICSendMessage(						\
+    	hic,ICM_DECOMPRESS_GET_FORMAT, (DWORD_PTR)(LPVOID)(lpbiInput),	\
+	(DWORD_PTR)(LPVOID)(lpbiOutput)					\
+    ))
+
+#define ICDecompressGetFormatSize(hic, lpbi) 				\
+	ICDecompressGetFormat(hic, lpbi, NULL)
+
+#define ICDecompressGetPalette(hic, lpbiInput, lpbiOutput)		\
+    ICSendMessage(							\
+    	hic, ICM_DECOMPRESS_GET_PALETTE, (DWORD_PTR)(LPVOID)(lpbiInput), 	\
+	(DWORD_PTR)(LPVOID)(lpbiOutput)					\
+    )
+
+#define ICDecompressSetPalette(hic,lpbiPalette)	\
+        ICSendMessage(				\
+		hic,ICM_DECOMPRESS_SET_PALETTE,		\
+		(DWORD_PTR)(LPVOID)(lpbiPalette),0		\
+	)
+
+#define ICDecompressEnd(hic) ICSendMessage(hic, ICM_DECOMPRESS_END, 0, 0)
+
+LRESULT	VFWAPI	ICSendMessage(HIC hic, UINT msg, DWORD_PTR dw1, DWORD_PTR dw2);
+
+static inline LRESULT VFWAPI ICDecompressEx(HIC hic, DWORD dwFlags,
+					    LPBITMAPINFOHEADER lpbiSrc, LPVOID lpSrc,
+					    int xSrc, int ySrc, int dxSrc, int dySrc,
+					    LPBITMAPINFOHEADER lpbiDst, LPVOID lpDst,
+					    int xDst, int yDst, int dxDst, int dyDst)
+{
+    ICDECOMPRESSEX ic;
+
+    ic.dwFlags = dwFlags;
+    ic.lpbiSrc = lpbiSrc;
+    ic.lpSrc = lpSrc;
+    ic.xSrc = xSrc;
+    ic.ySrc = ySrc;
+    ic.dxSrc = dxSrc;
+    ic.dySrc = dySrc;
+    ic.lpbiDst = lpbiDst;
+    ic.lpDst = lpDst;
+    ic.xDst = xDst;
+    ic.yDst = yDst;
+    ic.dxDst = dxDst;
+    ic.dyDst = dyDst;
+    return ICSendMessage(hic, ICM_DECOMPRESSEX, (DWORD_PTR)&ic, sizeof(ic));
+}
+
+static inline LRESULT VFWAPI ICDecompressExBegin(HIC hic, DWORD dwFlags,
+						 LPBITMAPINFOHEADER lpbiSrc,
+						 LPVOID lpSrc,
+						 int xSrc, int ySrc, int dxSrc, int dySrc,
+						 LPBITMAPINFOHEADER lpbiDst,
+						 LPVOID lpDst,
+						 int xDst,
+						 int yDst,
+						 int dxDst,
+						 int dyDst)
+{
+    ICDECOMPRESSEX ic;
+
+    ic.dwFlags = dwFlags;
+    ic.lpbiSrc = lpbiSrc;
+    ic.lpSrc = lpSrc;
+    ic.xSrc = xSrc;
+    ic.ySrc = ySrc;
+    ic.dxSrc = dxSrc;
+    ic.dySrc = dySrc;
+    ic.lpbiDst = lpbiDst;
+    ic.lpDst = lpDst;
+    ic.xDst = xDst;
+    ic.yDst = yDst;
+    ic.dxDst = dxDst;
+    ic.dyDst = dyDst;
+    return ICSendMessage(hic, ICM_DECOMPRESSEX_BEGIN, (DWORD_PTR)&ic, sizeof(ic));
+}
+static inline LRESULT VFWAPI ICDecompressExQuery(HIC hic, DWORD dwFlags,
+						 LPBITMAPINFOHEADER lpbiSrc,
+						 LPVOID lpSrc,
+						 int xSrc, int ySrc, int dxSrc, int dySrc,
+						 LPBITMAPINFOHEADER lpbiDst,
+						 LPVOID lpDst,
+						 int xDst,
+						 int yDst,
+						 int dxDst,
+						 int dyDst)
+{
+    ICDECOMPRESSEX ic;
+
+    ic.dwFlags = dwFlags;
+    ic.lpbiSrc = lpbiSrc;
+    ic.lpSrc = lpSrc;
+    ic.xSrc = xSrc;
+    ic.ySrc = ySrc;
+    ic.dxSrc = dxSrc;
+    ic.dySrc = dySrc;
+    ic.lpbiDst = lpbiDst;
+    ic.lpDst = lpDst;
+    ic.xDst = xDst;
+    ic.yDst = yDst;
+    ic.dxDst = dxDst;
+    ic.dyDst = dyDst;
+    return ICSendMessage(hic, ICM_DECOMPRESSEX_QUERY, (DWORD_PTR)&ic, sizeof(ic));
+}
+
+#define ICDecompressExEnd(hic) \
+    ICSendMessage(hic, ICM_DECOMPRESSEX_END, 0, 0)
+
+#define ICDRAW_QUERY        0x00000001L   /* test for support */
+#define ICDRAW_FULLSCREEN   0x00000002L   /* draw to full screen */
+#define ICDRAW_HDC          0x00000004L   /* draw to a HDC/HWND */
+#define ICDRAW_ANIMATE	    0x00000008L	  /* expect palette animation */
+#define ICDRAW_CONTINUE	    0x00000010L	  /* draw is a continuation of previous draw */
+#define ICDRAW_MEMORYDC	    0x00000020L	  /* DC is offscreen, by the way */
+#define ICDRAW_UPDATING	    0x00000040L	  /* We're updating, as opposed to playing */
+#define ICDRAW_RENDER       0x00000080L   /* used to render data not draw it */
+#define ICDRAW_BUFFER       0x00000100L   /* buffer data offscreen, we will need to update it */
+
+#define ICDecompressOpen(fccType, fccHandler, lpbiIn, lpbiOut) \
+    ICLocate(fccType, fccHandler, lpbiIn, lpbiOut, ICMODE_DECOMPRESS)
+
+#define ICDrawOpen(fccType, fccHandler, lpbiIn) \
+    ICLocate(fccType, fccHandler, lpbiIn, NULL, ICMODE_DRAW)
+
+HANDLE VFWAPI ICImageCompress(HIC hic, UINT uiFlags, LPBITMAPINFO lpbiIn,
+			      LPVOID lpBits, LPBITMAPINFO lpbiOut, LONG lQuality,
+			      LONG* plSize);
+
+HANDLE VFWAPI ICImageDecompress(HIC hic, UINT uiFlags, LPBITMAPINFO lpbiIn,
+				LPVOID lpBits, LPBITMAPINFO lpbiOut);
+
+BOOL	VFWAPI	ICInfo(DWORD fccType, DWORD fccHandler, ICINFO * lpicinfo);
+BOOL    VFWAPI  ICInstall(DWORD fccType, DWORD fccHandler, LPARAM lParam, LPSTR szDesc, UINT wFlags);
+BOOL    VFWAPI  ICRemove(DWORD fccType, DWORD fccHandler, UINT wFlags);
+LRESULT	VFWAPI	ICGetInfo(HIC hic,ICINFO *picinfo, DWORD cb);
+HIC	VFWAPI	ICOpen(DWORD fccType, DWORD fccHandler, UINT wMode);
+HIC	VFWAPI	ICOpenFunction(DWORD fccType, DWORD fccHandler, UINT wMode, FARPROC lpfnHandler);
+
+LRESULT VFWAPI	ICClose(HIC hic);
+HIC	VFWAPI	ICLocate(DWORD fccType, DWORD fccHandler, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, WORD wFlags);
+HIC	VFWAPI	ICGetDisplayFormat(HIC hic, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, int BitDepth, int dx, int dy);
+
+/* Values for wFlags of ICInstall() */
+#define ICINSTALL_UNICODE       0x8000
+#define ICINSTALL_FUNCTION      0x0001
+#define ICINSTALL_DRIVER        0x0002
+#define ICINSTALL_HDRV          0x0004
+#define ICINSTALL_DRIVERW       0x8002
+
+#define ICGetState(hic, pv, cb) \
+    ICSendMessage(hic, ICM_GETSTATE, (DWORD_PTR)(LPVOID)(pv), (DWORD_PTR)(cb))
+#define ICSetState(hic, pv, cb) \
+    ICSendMessage(hic, ICM_SETSTATE, (DWORD_PTR)(LPVOID)(pv), (DWORD_PTR)(cb))
+#define ICGetStateSize(hic) \
+    ICGetState(hic, NULL, 0)
+
+static inline DWORD ICGetDefaultQuality(HIC hic)
+{
+   DWORD dwICValue;
+   ICSendMessage(hic, ICM_GETDEFAULTQUALITY, (DWORD_PTR)(LPVOID)&dwICValue, sizeof(DWORD));
+   return dwICValue;
+}
+
+static inline DWORD ICGetDefaultKeyFrameRate(HIC hic)
+{
+   DWORD dwICValue;
+   ICSendMessage(hic, ICM_GETDEFAULTKEYFRAMERATE, (DWORD_PTR)(LPVOID)&dwICValue, sizeof(DWORD));
+   return dwICValue;
+}
+
+#define ICDrawWindow(hic, prc) \
+    ICSendMessage(hic, ICM_DRAW_WINDOW, (DWORD_PTR)(LPVOID)(prc), sizeof(RECT))
+
+/* As passed to ICM_DRAW_SUGGESTFORMAT */
+typedef struct {
+	DWORD dwFlags;
+	LPBITMAPINFOHEADER lpbiIn;
+	LPBITMAPINFOHEADER lpbiSuggest;
+	INT dxSrc;
+	INT dySrc;
+	INT dxDst;
+	INT dyDst;
+	HIC hicDecompressor;
+} ICDRAWSUGGEST;
+
+typedef struct {
+    DWORD               dwFlags;
+    int                 iStart;
+    int                 iLen;
+    LPPALETTEENTRY      lppe;
+} ICPALETTE;
+
+DWORD	VFWAPIV	ICDrawBegin(
+        HIC			hic,
+        DWORD			dwFlags,/* flags */
+        HPALETTE		hpal,	/* palette to draw with */
+        HWND			hwnd,	/* window to draw to */
+        HDC			hdc,	/* HDC to draw to */
+        INT			xDst,	/* destination rectangle */
+        INT			yDst,
+        INT			dxDst,
+        INT			dyDst,
+        LPBITMAPINFOHEADER	lpbi,	/* format of frame to draw */
+        INT			xSrc,	/* source rectangle */
+        INT			ySrc,
+        INT			dxSrc,
+        INT			dySrc,
+        DWORD			dwRate,	/* frames/second = (dwRate/dwScale) */
+        DWORD			dwScale
+);
+
+/* as passed to ICM_DRAW_BEGIN */
+typedef struct {
+	DWORD		dwFlags;
+	HPALETTE	hpal;
+	HWND		hwnd;
+	HDC		hdc;
+	INT		xDst;
+	INT		yDst;
+	INT		dxDst;
+	INT		dyDst;
+	LPBITMAPINFOHEADER	lpbi;
+	INT		xSrc;
+	INT		ySrc;
+	INT		dxSrc;
+	INT		dySrc;
+	DWORD		dwRate;
+	DWORD		dwScale;
+} ICDRAWBEGIN;
+
+#define ICDRAW_HURRYUP      0x80000000L   /* don't draw just buffer (hurry up!) */
+#define ICDRAW_UPDATE       0x40000000L   /* don't draw just update screen */
+#define ICDRAW_PREROLL      0x20000000L   /* this frame is before real start */
+#define ICDRAW_NULLFRAME    0x10000000L   /* repeat last frame */
+#define ICDRAW_NOTKEYFRAME  0x08000000L   /* this frame is not a key frame */
+
+typedef struct {
+	DWORD	dwFlags;
+	LPVOID	lpFormat;
+	LPVOID	lpData;
+	DWORD	cbData;
+	LONG	lTime;
+} ICDRAW;
+
+DWORD VFWAPIV ICDraw(HIC hic,DWORD dwFlags,LPVOID lpFormat,LPVOID lpData,DWORD cbData,LONG lTime);
+
+static inline LRESULT VFWAPI ICDrawSuggestFormat(HIC hic, LPBITMAPINFOHEADER lpbiIn,
+						 LPBITMAPINFOHEADER lpbiOut,
+						 int dxSrc, int dySrc,
+						 int dxDst, int dyDst,
+						 HIC hicDecomp)
+{
+    ICDRAWSUGGEST ic;
+
+    ic.lpbiIn = lpbiIn;
+    ic.lpbiSuggest = lpbiOut;
+    ic.dxSrc = dxSrc;
+    ic.dySrc = dySrc;
+    ic.dxDst = dxDst;
+    ic.dyDst = dyDst;
+    ic.hicDecompressor = hicDecomp;
+    return ICSendMessage(hic, ICM_DRAW_SUGGESTFORMAT, (DWORD_PTR)&ic, sizeof(ic));
+}
+
+#define ICDrawQuery(hic, lpbiInput) \
+    ICSendMessage(hic, ICM_DRAW_QUERY, (DWORD_PTR)(LPVOID)(lpbiInput), 0L)
+
+#define ICDrawChangePalette(hic, lpbiInput) \
+    ICSendMessage(hic, ICM_DRAW_CHANGEPALETTE, (DWORD_PTR)(LPVOID)(lpbiInput), 0L)
+
+#define ICGetBuffersWanted(hic, lpdwBuffers) \
+    ICSendMessage(hic, ICM_GETBUFFERSWANTED, (DWORD_PTR)(LPVOID)(lpdwBuffers), 0)
+
+#define ICDrawEnd(hic) \
+    ICSendMessage(hic, ICM_DRAW_END, 0, 0)
+
+#define ICDrawStart(hic) \
+    ICSendMessage(hic, ICM_DRAW_START, 0, 0)
+
+#define ICDrawStartPlay(hic, lFrom, lTo) \
+    ICSendMessage(hic, ICM_DRAW_START_PLAY, (DWORD_PTR)(lFrom), (DWORD_PTR)(lTo))
+
+#define ICDrawStop(hic) \
+    ICSendMessage(hic, ICM_DRAW_STOP, 0, 0)
+
+#define ICDrawStopPlay(hic) \
+    ICSendMessage(hic, ICM_DRAW_STOP_PLAY, 0, 0)
+
+#define ICDrawGetTime(hic, lplTime) \
+    ICSendMessage(hic, ICM_DRAW_GETTIME, (DWORD_PTR)(LPVOID)(lplTime), 0)
+
+#define ICDrawSetTime(hic, lTime) \
+    ICSendMessage(hic, ICM_DRAW_SETTIME, (DWORD_PTR)lTime, 0)
+
+#define ICDrawRealize(hic, hdc, fBackground) \
+    ICSendMessage(hic, ICM_DRAW_REALIZE, (DWORD_PTR)(UINT_PTR)(HDC)(hdc), (DWORD_PTR)(BOOL)(fBackground))
+
+#define ICDrawFlush(hic) \
+    ICSendMessage(hic, ICM_DRAW_FLUSH, 0, 0)
+
+#define ICDrawRenderBuffer(hic) \
+    ICSendMessage(hic, ICM_DRAW_RENDERBUFFER, 0, 0)
+
+static inline LRESULT VFWAPI ICSetStatusProc(HIC hic, DWORD dwFlags, LRESULT lParam,
+					     LONG (CALLBACK *fpfnStatus)(LPARAM, UINT, LONG))
+{
+    ICSETSTATUSPROC ic;
+
+    ic.dwFlags = dwFlags;
+    ic.lParam = lParam;
+    /* FIXME: see comment in ICSETSTATUSPROC definition */
+    ic.zStatus = fpfnStatus;
+
+    return ICSendMessage(hic, ICM_SET_STATUS_PROC, (DWORD_PTR)&ic, sizeof(ic));
+}
+
+typedef struct {
+    LONG		cbSize;
+    DWORD		dwFlags;
+    HIC			hic;
+    DWORD               fccType;
+    DWORD               fccHandler;
+    LPBITMAPINFO	lpbiIn;
+    LPBITMAPINFO	lpbiOut;
+    LPVOID		lpBitsOut;
+    LPVOID		lpBitsPrev;
+    LONG		lFrame;
+    LONG		lKey;
+    LONG		lDataRate;
+    LONG		lQ;
+    LONG		lKeyCount;
+    LPVOID		lpState;
+    LONG		cbState;
+} COMPVARS, *PCOMPVARS;
+
+#define ICMF_COMPVARS_VALID	0x00000001
+
+BOOL VFWAPI ICCompressorChoose(HWND hwnd, UINT uiFlags, LPVOID pvIn, LPVOID lpData,
+			       PCOMPVARS pc, LPSTR lpszTitle);
+
+#define ICMF_CHOOSE_KEYFRAME		0x0001
+#define ICMF_CHOOSE_DATARATE		0x0002
+#define ICMF_CHOOSE_PREVIEW		0x0004
+#define ICMF_CHOOSE_ALLCOMPRESSORS	0x0008
+
+BOOL VFWAPI ICSeqCompressFrameStart(PCOMPVARS pc, LPBITMAPINFO lpbiIn);
+void VFWAPI ICSeqCompressFrameEnd(PCOMPVARS pc);
+
+LPVOID VFWAPI ICSeqCompressFrame(PCOMPVARS pc, UINT uiFlags, LPVOID lpBits,
+				 BOOL *pfKey, LONG *plSize);
+void VFWAPI ICCompressorFree(PCOMPVARS pc);
+
+/********************* AVIFILE function declarations *************************/
+
+#ifndef mmioFOURCC
+#define mmioFOURCC( ch0, ch1, ch2, ch3 )				\
+	( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) |		\
+	( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )
+#endif
+
+#ifndef aviTWOCC
+#define aviTWOCC(ch0, ch1) ((WORD)(BYTE)(ch0) | ((WORD)(BYTE)(ch1) << 8))
+#endif
+
+typedef WORD TWOCC;
+
+#define ICTYPE_VIDEO		mmioFOURCC('v', 'i', 'd', 'c')
+#define ICTYPE_AUDIO		mmioFOURCC('a', 'u', 'd', 'c')
+
+#define formtypeAVI             mmioFOURCC('A', 'V', 'I', ' ')
+#define listtypeAVIHEADER       mmioFOURCC('h', 'd', 'r', 'l')
+#define ckidAVIMAINHDR          mmioFOURCC('a', 'v', 'i', 'h')
+#define listtypeSTREAMHEADER    mmioFOURCC('s', 't', 'r', 'l')
+#define ckidSTREAMHEADER        mmioFOURCC('s', 't', 'r', 'h')
+#define ckidSTREAMFORMAT        mmioFOURCC('s', 't', 'r', 'f')
+#define ckidSTREAMHANDLERDATA   mmioFOURCC('s', 't', 'r', 'd')
+#define ckidSTREAMNAME		mmioFOURCC('s', 't', 'r', 'n')
+
+#define listtypeAVIMOVIE        mmioFOURCC('m', 'o', 'v', 'i')
+#define listtypeAVIRECORD       mmioFOURCC('r', 'e', 'c', ' ')
+
+#define ckidAVINEWINDEX         mmioFOURCC('i', 'd', 'x', '1')
+
+#define streamtypeANY           0UL
+#define streamtypeVIDEO         mmioFOURCC('v', 'i', 'd', 's')
+#define streamtypeAUDIO         mmioFOURCC('a', 'u', 'd', 's')
+#define streamtypeMIDI          mmioFOURCC('m', 'i', 'd', 's')
+#define streamtypeTEXT          mmioFOURCC('t', 'x', 't', 's')
+
+/* Basic chunk types */
+#define cktypeDIBbits           aviTWOCC('d', 'b')
+#define cktypeDIBcompressed     aviTWOCC('d', 'c')
+#define cktypePALchange         aviTWOCC('p', 'c')
+#define cktypeWAVEbytes         aviTWOCC('w', 'b')
+
+/* Chunk id to use for extra chunks for padding. */
+#define ckidAVIPADDING          mmioFOURCC('J', 'U', 'N', 'K')
+
+#define FromHex(n)		(((n) >= 'A') ? ((n) + 10 - 'A') : ((n) - '0'))
+#define StreamFromFOURCC(fcc)	((WORD)((FromHex(LOBYTE(LOWORD(fcc))) << 4) + \
+					(FromHex(HIBYTE(LOWORD(fcc))))))
+#define TWOCCFromFOURCC(fcc)    HIWORD(fcc)
+#define ToHex(n)		((BYTE)(((n) > 9) ? ((n) - 10 + 'A') : ((n) + '0')))
+#define MAKEAVICKID(tcc, stream) \
+                                MAKELONG((ToHex((stream) & 0x0f) << 8) | \
+			                 (ToHex(((stream) & 0xf0) >> 4)), tcc)
+
+/* AVIFileHdr.dwFlags */
+#define AVIF_HASINDEX		0x00000010	/* Index at end of file? */
+#define AVIF_MUSTUSEINDEX	0x00000020
+#define AVIF_ISINTERLEAVED	0x00000100
+#define AVIF_TRUSTCKTYPE	0x00000800	/* Use CKType to find key frames*/
+#define AVIF_WASCAPTUREFILE	0x00010000
+#define AVIF_COPYRIGHTED	0x00020000
+
+#define AVI_HEADERSIZE	2048
+
+typedef BOOL (CALLBACK *AVISAVECALLBACK)(INT);
+
+typedef struct _MainAVIHeader
+{
+    DWORD	dwMicroSecPerFrame;
+    DWORD	dwMaxBytesPerSec;
+    DWORD	dwPaddingGranularity;
+    DWORD	dwFlags;
+    DWORD	dwTotalFrames;
+    DWORD	dwInitialFrames;
+    DWORD	dwStreams;
+    DWORD	dwSuggestedBufferSize;
+    DWORD	dwWidth;
+    DWORD	dwHeight;
+    DWORD	dwReserved[4];
+} MainAVIHeader;
+
+/* AVIStreamHeader.dwFlags */
+#define AVISF_DISABLED                  0x00000001
+#define AVISF_VIDEO_PALCHANGES          0x00010000
+
+typedef struct {
+    FOURCC	fccType;
+    FOURCC	fccHandler;
+    DWORD	dwFlags;        /* AVISF_* */
+    WORD	wPriority;
+    WORD	wLanguage;
+    DWORD	dwInitialFrames;
+    DWORD	dwScale;
+    DWORD	dwRate; /* dwRate / dwScale == samples/second */
+    DWORD	dwStart;
+    DWORD	dwLength; /* In units above... */
+    DWORD	dwSuggestedBufferSize;
+    DWORD	dwQuality;
+    DWORD	dwSampleSize;
+    struct { SHORT left, top, right, bottom; } rcFrame; /* word.word - word.word in file */
+} AVIStreamHeader;
+
+/* AVIINDEXENTRY.dwFlags */
+#define AVIIF_LIST	0x00000001	/* chunk is a 'LIST' */
+#define AVIIF_TWOCC	0x00000002
+#define AVIIF_KEYFRAME	0x00000010	/* this frame is a key frame. */
+#define AVIIF_FIRSTPART 0x00000020
+#define AVIIF_LASTPART  0x00000040
+#define AVIIF_MIDPART   (AVIIF_LASTPART|AVIIF_FIRSTPART)
+#define AVIIF_NOTIME	0x00000100	/* this frame doesn't take any time */
+#define AVIIF_COMPUSE	0x0FFF0000
+
+typedef struct _AVIINDEXENTRY {
+    DWORD	ckid;
+    DWORD	dwFlags;
+    DWORD	dwChunkOffset;
+    DWORD	dwChunkLength;
+} AVIINDEXENTRY;
+
+typedef struct _AVIPALCHANGE {
+    BYTE		bFirstEntry;
+    BYTE		bNumEntries;
+    WORD		wFlags;		/* pad */
+    PALETTEENTRY	peNew[1];
+} AVIPALCHANGE;
+
+#define AVIIF_KEYFRAME	0x00000010	/* this frame is a key frame. */
+
+#define	AVIGETFRAMEF_BESTDISPLAYFMT	1
+
+typedef struct _AVISTREAMINFOA {
+    DWORD	fccType;
+    DWORD	fccHandler;
+    DWORD	dwFlags;        /* AVIIF_* */
+    DWORD	dwCaps;
+    WORD	wPriority;
+    WORD	wLanguage;
+    DWORD	dwScale;
+    DWORD	dwRate;		/* dwRate / dwScale == samples/second */
+    DWORD	dwStart;
+    DWORD	dwLength;	/* In units above... */
+    DWORD	dwInitialFrames;
+    DWORD	dwSuggestedBufferSize;
+    DWORD	dwQuality;
+    DWORD	dwSampleSize;
+    RECT	rcFrame;
+    DWORD	dwEditCount;
+    DWORD	dwFormatChangeCount;
+    CHAR	szName[64];
+} AVISTREAMINFOA, * LPAVISTREAMINFOA, *PAVISTREAMINFOA;
+
+typedef struct _AVISTREAMINFOW {
+    DWORD	fccType;
+    DWORD	fccHandler;
+    DWORD	dwFlags;
+    DWORD	dwCaps;
+    WORD	wPriority;
+    WORD	wLanguage;
+    DWORD	dwScale;
+    DWORD	dwRate;		/* dwRate / dwScale == samples/second */
+    DWORD	dwStart;
+    DWORD	dwLength;	/* In units above... */
+    DWORD	dwInitialFrames;
+    DWORD	dwSuggestedBufferSize;
+    DWORD	dwQuality;
+    DWORD	dwSampleSize;
+    RECT	rcFrame;
+    DWORD	dwEditCount;
+    DWORD	dwFormatChangeCount;
+    WCHAR	szName[64];
+} AVISTREAMINFOW, * LPAVISTREAMINFOW, *PAVISTREAMINFOW;
+DECL_WINELIB_TYPE_AW(AVISTREAMINFO)
+DECL_WINELIB_TYPE_AW(LPAVISTREAMINFO)
+DECL_WINELIB_TYPE_AW(PAVISTREAMINFO)
+
+#define AVISTREAMINFO_DISABLED		0x00000001
+#define AVISTREAMINFO_FORMATCHANGES	0x00010000
+
+/* AVIFILEINFO.dwFlags */
+#define AVIFILEINFO_HASINDEX		0x00000010
+#define AVIFILEINFO_MUSTUSEINDEX	0x00000020
+#define AVIFILEINFO_ISINTERLEAVED	0x00000100
+#define AVIFILEINFO_TRUSTCKTYPE         0x00000800
+#define AVIFILEINFO_WASCAPTUREFILE	0x00010000
+#define AVIFILEINFO_COPYRIGHTED		0x00020000
+
+/* AVIFILEINFO.dwCaps */
+#define AVIFILECAPS_CANREAD		0x00000001
+#define AVIFILECAPS_CANWRITE		0x00000002
+#define AVIFILECAPS_ALLKEYFRAMES	0x00000010
+#define AVIFILECAPS_NOCOMPRESSION	0x00000020
+
+typedef struct _AVIFILEINFOW {
+    DWORD               dwMaxBytesPerSec;
+    DWORD               dwFlags;
+    DWORD               dwCaps;
+    DWORD               dwStreams;
+    DWORD               dwSuggestedBufferSize;
+    DWORD               dwWidth;
+    DWORD               dwHeight;
+    DWORD               dwScale;
+    DWORD               dwRate;
+    DWORD               dwLength;
+    DWORD               dwEditCount;
+    WCHAR               szFileType[64];
+} AVIFILEINFOW, * LPAVIFILEINFOW, *PAVIFILEINFOW;
+typedef struct _AVIFILEINFOA {
+    DWORD               dwMaxBytesPerSec;
+    DWORD               dwFlags;
+    DWORD               dwCaps;
+    DWORD               dwStreams;
+    DWORD               dwSuggestedBufferSize;
+    DWORD               dwWidth;
+    DWORD               dwHeight;
+    DWORD               dwScale;
+    DWORD               dwRate;
+    DWORD               dwLength;
+    DWORD               dwEditCount;
+    CHAR		szFileType[64];
+} AVIFILEINFOA, * LPAVIFILEINFOA, *PAVIFILEINFOA;
+DECL_WINELIB_TYPE_AW(AVIFILEINFO)
+DECL_WINELIB_TYPE_AW(PAVIFILEINFO)
+DECL_WINELIB_TYPE_AW(LPAVIFILEINFO)
+
+/* AVICOMPRESSOPTIONS.dwFlags. determines presence of fields in below struct */
+#define AVICOMPRESSF_INTERLEAVE	0x00000001
+#define AVICOMPRESSF_DATARATE	0x00000002
+#define AVICOMPRESSF_KEYFRAMES	0x00000004
+#define AVICOMPRESSF_VALID	0x00000008
+
+typedef struct {
+    DWORD	fccType;		/* stream type, for consistency */
+    DWORD	fccHandler;		/* compressor */
+    DWORD	dwKeyFrameEvery;	/* keyframe rate */
+    DWORD	dwQuality;		/* compress quality 0-10,000 */
+    DWORD	dwBytesPerSecond;	/* bytes per second */
+    DWORD	dwFlags;		/* flags... see below */
+    LPVOID	lpFormat;		/* save format */
+    DWORD	cbFormat;
+    LPVOID	lpParms;		/* compressor options */
+    DWORD	cbParms;
+    DWORD	dwInterleaveEvery;	/* for non-video streams only */
+} AVICOMPRESSOPTIONS, *LPAVICOMPRESSOPTIONS,*PAVICOMPRESSOPTIONS;
+
+#define FIND_DIR        0x0000000FL     /* direction mask */
+#define FIND_NEXT       0x00000001L     /* search forward */
+#define FIND_PREV       0x00000004L     /* search backward */
+#define FIND_FROM_START 0x00000008L     /* start at the logical beginning */
+
+#define FIND_TYPE       0x000000F0L     /* type mask */
+#define FIND_KEY        0x00000010L     /* find a key frame */
+#define FIND_ANY        0x00000020L     /* find any (non-empty) sample */
+#define FIND_FORMAT     0x00000040L     /* find a formatchange */
+
+#define FIND_RET        0x0000F000L     /* return mask */
+#define FIND_POS        0x00000000L     /* return logical position */
+#define FIND_LENGTH     0x00001000L     /* return logical size */
+#define FIND_OFFSET     0x00002000L     /* return physical position */
+#define FIND_SIZE       0x00003000L     /* return physical size */
+#define FIND_INDEX      0x00004000L     /* return physical index position */
+
+#include <ole2.h>
+
+#define DEFINE_AVIGUID(name, l, w1, w2) \
+    DEFINE_GUID(name, l, w1, w2, 0xC0,0,0,0,0,0,0,0x46)
+
+DEFINE_AVIGUID(IID_IAVIFile,            0x00020020, 0, 0);
+DEFINE_AVIGUID(IID_IAVIStream,          0x00020021, 0, 0);
+DEFINE_AVIGUID(IID_IAVIStreaming,       0x00020022, 0, 0);
+DEFINE_AVIGUID(IID_IGetFrame,           0x00020023, 0, 0);
+DEFINE_AVIGUID(IID_IAVIEditStream,      0x00020024, 0, 0);
+
+DEFINE_AVIGUID(CLSID_AVISimpleUnMarshal,0x00020009, 0, 0);
+DEFINE_AVIGUID(CLSID_AVIFile,           0x00020000, 0, 0);
+
+/*****************************************************************************
+ * IAVIStream interface
+ */
+#define INTERFACE IAVIStream
+DECLARE_INTERFACE_(IAVIStream,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IAVIStream methods ***/
+    STDMETHOD(Create)(THIS_ LPARAM lParam1, LPARAM lParam2) PURE;
+    STDMETHOD(Info)(THIS_ AVISTREAMINFOW *psi, LONG lSize) PURE;
+    STDMETHOD_(LONG,FindSample)(THIS_ LONG lPos, LONG lFlags) PURE;
+    STDMETHOD(ReadFormat)(THIS_ LONG lPos, LPVOID lpFormat, LONG *lpcbFormat) PURE;
+    STDMETHOD(SetFormat)(THIS_ LONG lPos, LPVOID lpFormat, LONG cbFormat) PURE;
+    STDMETHOD(Read)(THIS_ LONG lStart, LONG lSamples, LPVOID lpBuffer, LONG cbBuffer, LONG *plBytes, LONG *plSamples) PURE;
+    STDMETHOD(Write)(THIS_ LONG lStart, LONG lSamples, LPVOID lpBuffer, LONG cbBuffer, DWORD dwFlags, LONG *plSampWritten, LONG *plBytesWritten) PURE;
+    STDMETHOD(Delete)(THIS_ LONG lStart, LONG lSamples) PURE;
+    STDMETHOD(ReadData)(THIS_ DWORD fcc, LPVOID lpBuffer, LONG *lpcbBuffer) PURE;
+    STDMETHOD(WriteData)(THIS_ DWORD fcc, LPVOID lpBuffer, LONG cbBuffer) PURE;
+    STDMETHOD(SetInfo)(THIS_ AVISTREAMINFOW *plInfo, LONG cbInfo) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IAVIStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IAVIStream_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IAVIStream_Release(p)            (p)->lpVtbl->Release(p)
+/*** IAVIStream methods ***/
+#define IAVIStream_Create(p,a,b)          (p)->lpVtbl->Create(p,a,b)
+#define IAVIStream_Info(p,a,b)            (p)->lpVtbl->Info(p,a,b)
+#define IAVIStream_FindSample(p,a,b)      (p)->lpVtbl->FindSample(p,a,b)
+#define IAVIStream_ReadFormat(p,a,b,c)    (p)->lpVtbl->ReadFormat(p,a,b,c)
+#define IAVIStream_SetFormat(p,a,b,c)     (p)->lpVtbl->SetFormat(p,a,b,c)
+#define IAVIStream_Read(p,a,b,c,d,e,f)    (p)->lpVtbl->Read(p,a,b,c,d,e,f)
+#define IAVIStream_Write(p,a,b,c,d,e,f,g) (p)->lpVtbl->Write(p,a,b,c,d,e,f,g)
+#define IAVIStream_Delete(p,a,b)          (p)->lpVtbl->Delete(p,a,b)
+#define IAVIStream_ReadData(p,a,b,c)      (p)->lpVtbl->ReadData(p,a,b,c)
+#define IAVIStream_WriteData(p,a,b,c)     (p)->lpVtbl->WriteData(p,a,b,c)
+#define IAVIStream_SetInfo(p,a,b)         (p)->lpVtbl->SetInfo(p,a,b)
+#endif
+
+#define AVISTREAMREAD_CONVENIENT	  (-1L)
+
+ULONG WINAPI AVIStreamAddRef(PAVISTREAM iface);
+ULONG WINAPI AVIStreamRelease(PAVISTREAM iface);
+HRESULT WINAPI AVIStreamCreate(PAVISTREAM*,LONG,LONG,CLSID*);
+HRESULT WINAPI AVIStreamInfoA(PAVISTREAM iface,AVISTREAMINFOA *asi,LONG size);
+HRESULT WINAPI AVIStreamInfoW(PAVISTREAM iface,AVISTREAMINFOW *asi,LONG size);
+#define AVIStreamInfo WINELIB_NAME_AW(AVIStreamInfo)
+LONG WINAPI AVIStreamFindSample(PAVISTREAM pstream, LONG pos, LONG flags);
+HRESULT WINAPI AVIStreamReadFormat(PAVISTREAM iface,LONG pos,LPVOID format,LONG *formatsize);
+HRESULT WINAPI AVIStreamSetFormat(PAVISTREAM iface,LONG pos,LPVOID format,LONG formatsize);
+HRESULT WINAPI AVIStreamRead(PAVISTREAM iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,LONG *bytesread,LONG *samplesread);
+HRESULT WINAPI AVIStreamWrite(PAVISTREAM iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,DWORD flags,LONG *sampwritten,LONG *byteswritten);
+HRESULT WINAPI AVIStreamReadData(PAVISTREAM iface,DWORD fcc,LPVOID lp,LONG *lpread);
+HRESULT WINAPI AVIStreamWriteData(PAVISTREAM iface,DWORD fcc,LPVOID lp,LONG size);
+
+PGETFRAME WINAPI AVIStreamGetFrameOpen(PAVISTREAM pavi,LPBITMAPINFOHEADER lpbiWanted);
+LPVOID  WINAPI AVIStreamGetFrame(PGETFRAME pg,LONG pos);
+HRESULT WINAPI AVIStreamGetFrameClose(PGETFRAME pg);
+
+HRESULT WINAPI AVIMakeCompressedStream(PAVISTREAM*ppsCompressed,PAVISTREAM ppsSource,AVICOMPRESSOPTIONS *lpOptions,CLSID*pclsidHandler);
+HRESULT WINAPI AVIMakeFileFromStreams(PAVIFILE *ppfile, int nStreams, PAVISTREAM *ppStreams);
+HRESULT WINAPI AVIMakeStreamFromClipboard(UINT cfFormat, HANDLE hGlobal, PAVISTREAM * ppstream);
+
+HRESULT WINAPI AVIStreamOpenFromFileA(PAVISTREAM *ppavi, LPCSTR szFile,
+				      DWORD fccType, LONG lParam,
+				      UINT mode, CLSID *pclsidHandler);
+HRESULT WINAPI AVIStreamOpenFromFileW(PAVISTREAM *ppavi, LPCWSTR szFile,
+				      DWORD fccType, LONG lParam,
+				      UINT mode, CLSID *pclsidHandler);
+#define AVIStreamOpenFromFile WINELIB_NAME_AW(AVIStreamOpenFromFile)
+
+LONG WINAPI AVIStreamBeginStreaming(PAVISTREAM pavi, LONG lStart, LONG lEnd, LONG lRate);
+LONG WINAPI AVIStreamEndStreaming(PAVISTREAM pavi);
+
+HRESULT WINAPI AVIBuildFilterA(LPSTR szFilter, LONG cbFilter, BOOL fSaving);
+HRESULT WINAPI AVIBuildFilterW(LPWSTR szFilter, LONG cbFilter, BOOL fSaving);
+#define AVIBuildFilter WINELIB_NAME_AW(AVIBuildFilter)
+
+BOOL WINAPI AVISaveOptions(HWND hWnd,UINT uFlags,INT nStream,
+			   PAVISTREAM *ppavi,LPAVICOMPRESSOPTIONS *ppOptions);
+HRESULT WINAPI AVISaveOptionsFree(INT nStreams,LPAVICOMPRESSOPTIONS*ppOptions);
+
+HRESULT CDECL AVISaveA(LPCSTR szFile, CLSID *pclsidHandler,
+             AVISAVECALLBACK lpfnCallback, int nStreams,
+             PAVISTREAM pavi, LPAVICOMPRESSOPTIONS lpOptions, ...);
+HRESULT CDECL AVISaveW(LPCWSTR szFile, CLSID *pclsidHandler,
+             AVISAVECALLBACK lpfnCallback, int nStreams,
+             PAVISTREAM pavi, LPAVICOMPRESSOPTIONS lpOptions, ...);
+#define AVISave WINELIB_NAME_AW(AVISave)
+
+HRESULT WINAPI AVISaveVA(LPCSTR szFile, CLSID *pclsidHandler,
+			 AVISAVECALLBACK lpfnCallback, int nStream,
+			 PAVISTREAM *ppavi, LPAVICOMPRESSOPTIONS *plpOptions);
+HRESULT WINAPI AVISaveVW(LPCWSTR szFile, CLSID *pclsidHandler,
+			 AVISAVECALLBACK lpfnCallback, int nStream,
+			 PAVISTREAM *ppavi, LPAVICOMPRESSOPTIONS *plpOptions);
+#define AVISaveV WINELIB_NAME_AW(AVISaveV)
+
+LONG WINAPI AVIStreamStart(PAVISTREAM iface);
+LONG WINAPI AVIStreamLength(PAVISTREAM iface);
+LONG WINAPI AVIStreamSampleToTime(PAVISTREAM pstream, LONG lSample);
+LONG WINAPI AVIStreamTimeToSample(PAVISTREAM pstream, LONG lTime);
+
+#define AVIFileClose(pavi) \
+    AVIFileRelease(pavi)
+#define AVIStreamClose(pavi) \
+    AVIStreamRelease(pavi);
+#define AVIStreamEnd(pavi) \
+    (AVIStreamStart(pavi) + AVIStreamLength(pavi))
+#define AVIStreamEndTime(pavi) \
+    AVIStreamSampleToTime(pavi, AVIStreamEnd(pavi))
+#define AVIStreamFormatSize(pavi, lPos, plSize) \
+    AVIStreamReadFormat(pavi, lPos, NULL, plSize)
+#define AVIStreamLengthTime(pavi) \
+    AVIStreamSampleToTime(pavi, AVIStreamLength(pavi))
+#define AVIStreamSampleSize(pavi,pos,psize) \
+    AVIStreamRead(pavi,pos,1,NULL,0,psize,NULL)
+#define AVIStreamSampleToSample(pavi1, pavi2, samp2) \
+    AVIStreamTimeToSample(pavi1, AVIStreamSampleToTime(pavi2, samp2))
+#define AVIStreamStartTime(pavi) \
+    AVIStreamSampleToTime(pavi, AVIStreamStart(pavi))
+
+#define AVIStreamNextSample(pavi, pos) \
+    AVIStreamFindSample(pavi, pos + 1, FIND_NEXT | FIND_ANY)
+#define AVIStreamPrevSample(pavi, pos) \
+    AVIStreamFindSample(pavi, pos - 1, FIND_PREV | FIND_ANY)
+#define AVIStreamNearestSample(pavi, pos) \
+    AVIStreamFindSample(pavi, pos, FIND_PREV | FIND_ANY)
+#define AVStreamNextKeyFrame(pavi,pos) \
+    AVIStreamFindSample(pavi, pos + 1, FIND_NEXT | FIND_KEY)
+#define AVStreamPrevKeyFrame(pavi,pos) \
+    AVIStreamFindSample(pavi, pos - 1, FIND_NEXT | FIND_KEY)
+#define AVIStreamNearestKeyFrame(pavi,pos) \
+    AVIStreamFindSample(pavi, pos, FIND_PREV | FIND_KEY)
+#define AVIStreamIsKeyFrame(pavi, pos) \
+    (AVIStreamNearestKeyFrame(pavi, pos) == pos)
+
+/*****************************************************************************
+ * IAVIStreaming interface
+ */
+#define INTERFACE IAVIStreaming
+DECLARE_INTERFACE_(IAVIStreaming,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IAVIStreaming methods ***/
+    STDMETHOD(Begin)(IAVIStreaming*iface,LONG lStart,LONG lEnd,LONG lRate) PURE;
+    STDMETHOD(End)(IAVIStreaming*iface) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IAVIStreaming_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IAVIStreaming_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IAVIStreaming_Release(p)            (p)->lpVtbl->Release(p)
+/*** IAVIStreaming methods ***/
+#define IAVIStreaming_Begin(p,a,b,c)        (p)->lpVtbl->Begin(p,a,b,c)
+#define IAVIStreaming_End(p)                (p)->lpVtbl->End(p)
+#endif
+
+/*****************************************************************************
+ * IAVIEditStream interface
+ */
+#define INTERFACE IAVIEditStream
+DECLARE_INTERFACE_(IAVIEditStream,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IAVIEditStream methods ***/
+    STDMETHOD(Cut)(IAVIEditStream*iface,LONG*plStart,LONG*plLength,PAVISTREAM*ppResult) PURE;
+    STDMETHOD(Copy)(IAVIEditStream*iface,LONG*plStart,LONG*plLength,PAVISTREAM*ppResult) PURE;
+    STDMETHOD(Paste)(IAVIEditStream*iface,LONG*plStart,LONG*plLength,PAVISTREAM pSource,LONG lStart,LONG lEnd) PURE;
+    STDMETHOD(Clone)(IAVIEditStream*iface,PAVISTREAM*ppResult) PURE;
+    STDMETHOD(SetInfo)(IAVIEditStream*iface,LPAVISTREAMINFOW asi, LONG size) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IAVIEditStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IAVIEditStream_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IAVIEditStream_Release(p)            (p)->lpVtbl->Release(p)
+/*** IAVIEditStream methods ***/
+#define IAVIEditStream_Cut(p,a,b,c)	     (p)->lpVtbl->Cut(p,a,b,c)
+#define IAVIEditStream_Copy(p,a,b,c)	     (p)->lpVtbl->Copy(p,a,b,c)
+#define IAVIEditStream_Paste(p,a,b,c,d,e)    (p)->lpVtbl->Paste(p,a,b,c,d,e)
+#define IAVIEditStream_Clone(p,a)	     (p)->lpVtbl->Clone(p,a)
+#define IAVIEditStream_SetInfo(p,a,b)	     (p)->lpVtbl->SetInfo(p,a,b)
+#endif
+
+HRESULT WINAPI CreateEditableStream(PAVISTREAM *ppEditable,PAVISTREAM pSource);
+HRESULT WINAPI EditStreamClone(PAVISTREAM pStream, PAVISTREAM *ppResult);
+HRESULT WINAPI EditStreamCopy(PAVISTREAM pStream, LONG *plStart,
+			      LONG *plLength, PAVISTREAM *ppResult);
+HRESULT WINAPI EditStreamCut(PAVISTREAM pStream, LONG *plStart,
+			     LONG *plLength, PAVISTREAM *ppResult);
+HRESULT WINAPI EditStreamPaste(PAVISTREAM pDest, LONG *plStart, LONG *plLength,
+			       PAVISTREAM pSource, LONG lStart, LONG lEnd);
+
+HRESULT WINAPI EditStreamSetInfoA(PAVISTREAM pstream, LPAVISTREAMINFOA asi,
+				  LONG size);
+HRESULT WINAPI EditStreamSetInfoW(PAVISTREAM pstream, LPAVISTREAMINFOW asi,
+				  LONG size);
+#define EditStreamSetInfo WINELIB_NAME_AW(EditStreamSetInfo)
+
+HRESULT WINAPI EditStreamSetNameA(PAVISTREAM pstream, LPCSTR szName);
+HRESULT WINAPI EditStreamSetNameW(PAVISTREAM pstream, LPCWSTR szName);
+#define EditStreamSetName WINELIB_NAME_AW(EditStreamSetName)
+
+/*****************************************************************************
+ * IAVIFile interface
+ */
+/* In Win32 this interface uses UNICODE only */
+#define INTERFACE IAVIFile
+DECLARE_INTERFACE_(IAVIFile,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IAVIFile methods ***/
+    STDMETHOD(Info)(THIS_ AVIFILEINFOW *pfi, LONG lSize) PURE;
+    STDMETHOD(GetStream)(THIS_ PAVISTREAM *ppStream, DWORD fccType, LONG lParam) PURE;
+    STDMETHOD(CreateStream)(THIS_ PAVISTREAM *ppStream, AVISTREAMINFOW *psi) PURE;
+    STDMETHOD(WriteData)(THIS_ DWORD fcc, LPVOID lpBuffer, LONG cbBuffer) PURE;
+    STDMETHOD(ReadData)(THIS_ DWORD fcc, LPVOID lpBuffer, LONG *lpcbBuffer) PURE;
+    STDMETHOD(EndRecord)(THIS) PURE;
+    STDMETHOD(DeleteStream)(THIS_ DWORD fccType, LONG lParam) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IAVIFile_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IAVIFile_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IAVIFile_Release(p)            (p)->lpVtbl->Release(p)
+/*** IAVIFile methods ***/
+#define IAVIFile_Info(p,a,b)         (p)->lpVtbl->Info(p,a,b)
+#define IAVIFile_GetStream(p,a,b,c)  (p)->lpVtbl->GetStream(p,a,b,c)
+#define IAVIFile_CreateStream(p,a,b) (p)->lpVtbl->CreateStream(p,a,b)
+#define IAVIFile_WriteData(p,a,b,c)  (p)->lpVtbl->WriteData(p,a,b,c)
+#define IAVIFile_ReadData(p,a,b,c)   (p)->lpVtbl->ReadData(p,a,b,c)
+#define IAVIFile_EndRecord(p)        (p)->lpVtbl->EndRecord(p)
+#define IAVIFile_DeleteStream(p,a,b) (p)->lpVtbl->DeleteStream(p,a,b)
+#endif
+
+void WINAPI AVIFileInit(void);
+void WINAPI AVIFileExit(void);
+
+HRESULT WINAPI AVIFileOpenA(PAVIFILE* ppfile,LPCSTR szFile,UINT uMode,LPCLSID lpHandler);
+HRESULT WINAPI AVIFileOpenW(PAVIFILE* ppfile,LPCWSTR szFile,UINT uMode,LPCLSID lpHandler);
+#define AVIFileOpen WINELIB_NAME_AW(AVIFileOpen)
+
+ULONG   WINAPI AVIFileAddRef(PAVIFILE pfile);
+ULONG   WINAPI AVIFileRelease(PAVIFILE pfile);
+HRESULT WINAPI AVIFileInfoA(PAVIFILE pfile,PAVIFILEINFOA pfi,LONG lSize);
+HRESULT WINAPI AVIFileInfoW(PAVIFILE pfile,PAVIFILEINFOW pfi,LONG lSize);
+#define AVIFileInfo WINELIB_NAME_AW(AVIFileInfo)
+HRESULT WINAPI AVIFileGetStream(PAVIFILE pfile,PAVISTREAM* avis,DWORD fccType,LONG lParam);
+HRESULT WINAPI AVIFileCreateStreamA(PAVIFILE pfile,PAVISTREAM* ppavi,AVISTREAMINFOA* psi);
+HRESULT WINAPI AVIFileCreateStreamW(PAVIFILE pfile,PAVISTREAM* ppavi,AVISTREAMINFOW* psi);
+#define AVIFileCreateStream WINELIB_NAME_AW(AVIFileCreateStream)
+HRESULT WINAPI AVIFileWriteData(PAVIFILE pfile,DWORD fcc,LPVOID lp,LONG size);
+HRESULT WINAPI AVIFileReadData(PAVIFILE pfile,DWORD fcc,LPVOID lp,LPLONG size);
+HRESULT WINAPI AVIFileEndRecord(PAVIFILE pfile);
+
+/*****************************************************************************
+ * IGetFrame interface
+ */
+#define INTERFACE IGetFrame
+DECLARE_INTERFACE_(IGetFrame,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IGetFrame methods ***/
+    STDMETHOD_(LPVOID,GetFrame)(THIS_ LONG lPos) PURE;
+    STDMETHOD(Begin)(THIS_ LONG lStart, LONG lEnd, LONG lRate) PURE;
+    STDMETHOD(End)(THIS) PURE;
+    STDMETHOD(SetFormat)(THIS_ LPBITMAPINFOHEADER lpbi, LPVOID lpBits, INT x, INT y, INT dx, INT dy) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IGetFrame_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IGetFrame_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IGetFrame_Release(p)            (p)->lpVtbl->Release(p)
+/*** IGetFrame methods ***/
+#define IGetFrame_GetFrame(p,a)            (p)->lpVtbl->GetFrame(p,a)
+#define IGetFrame_Begin(p,a,b,c)           (p)->lpVtbl->Begin(p,a,b,c)
+#define IGetFrame_End(p)                   (p)->lpVtbl->End(p)
+#define IGetFrame_SetFormat(p,a,b,c,d,e,f) (p)->lpVtbl->SetFormat(p,a,b,c,d,e,f)
+#endif
+
+HRESULT WINAPI AVIClearClipboard(void);
+HRESULT WINAPI AVIGetFromClipboard(PAVIFILE *ppfile);
+HRESULT WINAPI AVIPutFileOnClipboard(PAVIFILE pfile);
+
+#ifdef OFN_READONLY
+BOOL WINAPI GetOpenFileNamePreviewA(LPOPENFILENAMEA lpofn);
+BOOL WINAPI GetOpenFileNamePreviewW(LPOPENFILENAMEW lpofn);
+#define GetOpenFileNamePreview WINELIB_NAME_AW(GetOpenFileNamePreview)
+BOOL WINAPI GetSaveFileNamePreviewA(LPOPENFILENAMEA lpofn);
+BOOL WINAPI GetSaveFileNamePreviewW(LPOPENFILENAMEW lpofn);
+#define GetSaveFileNamePreview WINELIB_NAME_AW(GetSaveFileNamePreview)
+#endif
+
+#define AVIERR_OK		0
+#define MAKE_AVIERR(error)	MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x4000+error)
+
+#define AVIERR_UNSUPPORTED	MAKE_AVIERR(101)
+#define AVIERR_BADFORMAT	MAKE_AVIERR(102)
+#define AVIERR_MEMORY		MAKE_AVIERR(103)
+#define AVIERR_INTERNAL		MAKE_AVIERR(104)
+#define AVIERR_BADFLAGS		MAKE_AVIERR(105)
+#define AVIERR_BADPARAM		MAKE_AVIERR(106)
+#define AVIERR_BADSIZE		MAKE_AVIERR(107)
+#define AVIERR_BADHANDLE	MAKE_AVIERR(108)
+#define AVIERR_FILEREAD		MAKE_AVIERR(109)
+#define AVIERR_FILEWRITE	MAKE_AVIERR(110)
+#define AVIERR_FILEOPEN		MAKE_AVIERR(111)
+#define AVIERR_COMPRESSOR	MAKE_AVIERR(112)
+#define AVIERR_NOCOMPRESSOR	MAKE_AVIERR(113)
+#define AVIERR_READONLY		MAKE_AVIERR(114)
+#define AVIERR_NODATA		MAKE_AVIERR(115)
+#define AVIERR_BUFFERTOOSMALL	MAKE_AVIERR(116)
+#define AVIERR_CANTCOMPRESS	MAKE_AVIERR(117)
+#define AVIERR_USERABORT	MAKE_AVIERR(198)
+#define AVIERR_ERROR		MAKE_AVIERR(199)
+
+BOOL VFWAPIV MCIWndRegisterClass(void);
+
+HWND VFWAPIV MCIWndCreateA(HWND, HINSTANCE, DWORD, LPCSTR);
+HWND VFWAPIV MCIWndCreateW(HWND, HINSTANCE, DWORD, LPCWSTR);
+#define     MCIWndCreate WINELIB_NAME_AW(MCIWndCreate)
+
+#define MCIWNDOPENF_NEW			0x0001
+
+#define MCIWNDF_NOAUTOSIZEWINDOW	0x0001
+#define MCIWNDF_NOPLAYBAR		0x0002
+#define MCIWNDF_NOAUTOSIZEMOVIE		0x0004
+#define MCIWNDF_NOMENU			0x0008
+#define MCIWNDF_SHOWNAME		0x0010
+#define MCIWNDF_SHOWPOS			0x0020
+#define MCIWNDF_SHOWMODE		0x0040
+#define MCIWNDF_SHOWALL			0x0070
+
+#define MCIWNDF_NOTIFYMODE		0x0100
+#define MCIWNDF_NOTIFYPOS		0x0200
+#define MCIWNDF_NOTIFYSIZE		0x0400
+#define MCIWNDF_NOTIFYERROR		0x1000
+#define MCIWNDF_NOTIFYALL		0x1F00
+
+#define MCIWNDF_NOTIFYANSI		0x0080
+
+#define MCIWNDF_NOTIFYMEDIAA		0x0880
+#define MCIWNDF_NOTIFYMEDIAW		0x0800
+#define MCIWNDF_NOTIFYMEDIA WINELIB_NAME_AW(MCIWNDF_NOTIFYMEDIA)
+
+#define MCIWNDF_RECORD			0x2000
+#define MCIWNDF_NOERRORDLG		0x4000
+#define MCIWNDF_NOOPEN			0x8000
+
+#ifdef __cplusplus
+#define MCIWndSM ::SendMessage
+#else
+#define MCIWndSM SendMessage
+#endif
+
+#define MCIWndCanPlay(hWnd)         (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_PLAY,0,0)
+#define MCIWndCanRecord(hWnd)       (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_RECORD,0,0)
+#define MCIWndCanSave(hWnd)         (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_SAVE,0,0)
+#define MCIWndCanWindow(hWnd)       (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_WINDOW,0,0)
+#define MCIWndCanEject(hWnd)        (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_EJECT,0,0)
+#define MCIWndCanConfig(hWnd)       (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_CONFIG,0,0)
+#define MCIWndPaletteKick(hWnd)     (BOOL)MCIWndSM(hWnd,MCIWNDM_PALETTEKICK,0,0)
+
+#define MCIWndSave(hWnd,szFile)	    (LONG)MCIWndSM(hWnd,MCI_SAVE,0,(LPARAM)(LPVOID)(szFile))
+#define MCIWndSaveDialog(hWnd)      MCIWndSave(hWnd,-1)
+
+#define MCIWndNew(hWnd,lp)          (LONG)MCIWndSM(hWnd,MCIWNDM_NEW,0,(LPARAM)(LPVOID)(lp))
+
+#define MCIWndRecord(hWnd)          (LONG)MCIWndSM(hWnd,MCI_RECORD,0,0)
+#define MCIWndOpen(hWnd,sz,f)       (LONG)MCIWndSM(hWnd,MCIWNDM_OPEN,(WPARAM)(UINT)(f),(LPARAM)(LPVOID)(sz))
+#define MCIWndOpenDialog(hWnd)      MCIWndOpen(hWnd,-1,0)
+#define MCIWndClose(hWnd)           (LONG)MCIWndSM(hWnd,MCI_CLOSE,0,0)
+#define MCIWndPlay(hWnd)            (LONG)MCIWndSM(hWnd,MCI_PLAY,0,0)
+#define MCIWndStop(hWnd)            (LONG)MCIWndSM(hWnd,MCI_STOP,0,0)
+#define MCIWndPause(hWnd)           (LONG)MCIWndSM(hWnd,MCI_PAUSE,0,0)
+#define MCIWndResume(hWnd)          (LONG)MCIWndSM(hWnd,MCI_RESUME,0,0)
+#define MCIWndSeek(hWnd,lPos)       (LONG)MCIWndSM(hWnd,MCI_SEEK,0,(LPARAM)(LONG)(lPos))
+#define MCIWndEject(hWnd)           (LONG)MCIWndSM(hWnd,MCIWNDM_EJECT,0,0)
+
+#define MCIWndHome(hWnd)            MCIWndSeek(hWnd,MCIWND_START)
+#define MCIWndEnd(hWnd)             MCIWndSeek(hWnd,MCIWND_END)
+
+#define MCIWndGetSource(hWnd,prc)   (LONG)MCIWndSM(hWnd,MCIWNDM_GET_SOURCE,0,(LPARAM)(LPRECT)(prc))
+#define MCIWndPutSource(hWnd,prc)   (LONG)MCIWndSM(hWnd,MCIWNDM_PUT_SOURCE,0,(LPARAM)(LPRECT)(prc))
+
+#define MCIWndGetDest(hWnd,prc)     (LONG)MCIWndSM(hWnd,MCIWNDM_GET_DEST,0,(LPARAM)(LPRECT)(prc))
+#define MCIWndPutDest(hWnd,prc)     (LONG)MCIWndSM(hWnd,MCIWNDM_PUT_DEST,0,(LPARAM)(LPRECT)(prc))
+
+#define MCIWndPlayReverse(hWnd)     (LONG)MCIWndSM(hWnd,MCIWNDM_PLAYREVERSE,0,0)
+#define MCIWndPlayFrom(hWnd,lPos)   (LONG)MCIWndSM(hWnd,MCIWNDM_PLAYFROM,0,(LPARAM)(LONG)(lPos))
+#define MCIWndPlayTo(hWnd,lPos)     (LONG)MCIWndSM(hWnd,MCIWNDM_PLAYTO,  0,(LPARAM)(LONG)(lPos))
+#define MCIWndPlayFromTo(hWnd,lStart,lEnd) (MCIWndSeek(hWnd,lStart),MCIWndPlayTo(hWnd,lEnd))
+
+#define MCIWndGetDeviceID(hWnd)     (UINT)MCIWndSM(hWnd,MCIWNDM_GETDEVICEID,0,0)
+#define MCIWndGetAlias(hWnd)        (UINT)MCIWndSM(hWnd,MCIWNDM_GETALIAS,0,0)
+#define MCIWndGetMode(hWnd,lp,len)  (LONG)MCIWndSM(hWnd,MCIWNDM_GETMODE,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
+#define MCIWndGetPosition(hWnd)     (LONG)MCIWndSM(hWnd,MCIWNDM_GETPOSITION,0,0)
+#define MCIWndGetPositionString(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETPOSITION,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
+#define MCIWndGetStart(hWnd)        (LONG)MCIWndSM(hWnd,MCIWNDM_GETSTART,0,0)
+#define MCIWndGetLength(hWnd)       (LONG)MCIWndSM(hWnd,MCIWNDM_GETLENGTH,0,0)
+#define MCIWndGetEnd(hWnd)          (LONG)MCIWndSM(hWnd,MCIWNDM_GETEND,0,0)
+
+#define MCIWndStep(hWnd,n)          (LONG)MCIWndSM(hWnd,MCI_STEP,0,(LPARAM)(long)(n))
+
+#define MCIWndDestroy(hWnd)         (VOID)MCIWndSM(hWnd,WM_CLOSE,0,0)
+#define MCIWndSetZoom(hWnd,iZoom)   (VOID)MCIWndSM(hWnd,MCIWNDM_SETZOOM,0,(LPARAM)(UINT)(iZoom))
+#define MCIWndGetZoom(hWnd)         (UINT)MCIWndSM(hWnd,MCIWNDM_GETZOOM,0,0)
+#define MCIWndSetVolume(hWnd,iVol)  (LONG)MCIWndSM(hWnd,MCIWNDM_SETVOLUME,0,(LPARAM)(UINT)(iVol))
+#define MCIWndGetVolume(hWnd)       (LONG)MCIWndSM(hWnd,MCIWNDM_GETVOLUME,0,0)
+#define MCIWndSetSpeed(hWnd,iSpeed) (LONG)MCIWndSM(hWnd,MCIWNDM_SETSPEED,0,(LPARAM)(UINT)(iSpeed))
+#define MCIWndGetSpeed(hWnd)        (LONG)MCIWndSM(hWnd,MCIWNDM_GETSPEED,0,0)
+#define MCIWndSetTimeFormat(hWnd,lp) (LONG)MCIWndSM(hWnd,MCIWNDM_SETTIMEFORMAT,0,(LPARAM)(LPTSTR)(lp))
+#define MCIWndGetTimeFormat(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETTIMEFORMAT,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
+#define MCIWndValidateMedia(hWnd)   (VOID)MCIWndSM(hWnd,MCIWNDM_VALIDATEMEDIA,0,0)
+
+#define MCIWndSetRepeat(hWnd,f)     (void)MCIWndSM(hWnd,MCIWNDM_SETREPEAT,0,(LPARAM)(BOOL)(f))
+#define MCIWndGetRepeat(hWnd)       (BOOL)MCIWndSM(hWnd,MCIWNDM_GETREPEAT,0,0)
+
+#define MCIWndUseFrames(hWnd)       MCIWndSetTimeFormat(hWnd,TEXT("frames"))
+#define MCIWndUseTime(hWnd)         MCIWndSetTimeFormat(hWnd,TEXT("ms"))
+
+#define MCIWndSetActiveTimer(hWnd,active)				\
+	(VOID)MCIWndSM(hWnd,MCIWNDM_SETACTIVETIMER,			\
+	(WPARAM)(UINT)(active),0L)
+#define MCIWndSetInactiveTimer(hWnd,inactive)				\
+	(VOID)MCIWndSM(hWnd,MCIWNDM_SETINACTIVETIMER,			\
+	(WPARAM)(UINT)(inactive),0L)
+#define MCIWndSetTimers(hWnd,active,inactive)				\
+	    (VOID)MCIWndSM(hWnd,MCIWNDM_SETTIMERS,(WPARAM)(UINT)(active),\
+	    (LPARAM)(UINT)(inactive))
+#define MCIWndGetActiveTimer(hWnd)					\
+	(UINT)MCIWndSM(hWnd,MCIWNDM_GETACTIVETIMER,0,0L);
+#define MCIWndGetInactiveTimer(hWnd)					\
+	(UINT)MCIWndSM(hWnd,MCIWNDM_GETINACTIVETIMER,0,0L);
+
+#define MCIWndRealize(hWnd,fBkgnd) (LONG)MCIWndSM(hWnd,MCIWNDM_REALIZE,(WPARAM)(BOOL)(fBkgnd),0)
+
+#define MCIWndSendString(hWnd,sz)  (LONG)MCIWndSM(hWnd,MCIWNDM_SENDSTRING,0,(LPARAM)(LPTSTR)(sz))
+#define MCIWndReturnString(hWnd,lp,len)  (LONG)MCIWndSM(hWnd,MCIWNDM_RETURNSTRING,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
+#define MCIWndGetError(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETERROR,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
+
+#define MCIWndGetPalette(hWnd)      (HPALETTE)MCIWndSM(hWnd,MCIWNDM_GETPALETTE,0,0)
+#define MCIWndSetPalette(hWnd,hpal) (LONG)MCIWndSM(hWnd,MCIWNDM_SETPALETTE,(WPARAM)(HPALETTE)(hpal),0)
+
+#define MCIWndGetFileName(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETFILENAME,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
+#define MCIWndGetDevice(hWnd,lp,len)   (LONG)MCIWndSM(hWnd,MCIWNDM_GETDEVICE,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
+
+#define MCIWndGetStyles(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETSTYLES,0,0L)
+#define MCIWndChangeStyles(hWnd,mask,value) (LONG)MCIWndSM(hWnd,MCIWNDM_CHANGESTYLES,(WPARAM)(UINT)(mask),(LPARAM)(LONG)(value))
+
+#define MCIWndOpenInterface(hWnd,pUnk)  (LONG)MCIWndSM(hWnd,MCIWNDM_OPENINTERFACE,0,(LPARAM)(LPUNKNOWN)(pUnk))
+
+#define MCIWndSetOwner(hWnd,hWndP)  (LONG)MCIWndSM(hWnd,MCIWNDM_SETOWNER,(WPARAM)(hWndP),0)
+
+#define MCIWNDM_GETDEVICEID	(WM_USER + 100)
+#define MCIWNDM_GETSTART	(WM_USER + 103)
+#define MCIWNDM_GETLENGTH	(WM_USER + 104)
+#define MCIWNDM_GETEND		(WM_USER + 105)
+#define MCIWNDM_EJECT		(WM_USER + 107)
+#define MCIWNDM_SETZOOM		(WM_USER + 108)
+#define MCIWNDM_GETZOOM         (WM_USER + 109)
+#define MCIWNDM_SETVOLUME	(WM_USER + 110)
+#define MCIWNDM_GETVOLUME	(WM_USER + 111)
+#define MCIWNDM_SETSPEED	(WM_USER + 112)
+#define MCIWNDM_GETSPEED	(WM_USER + 113)
+#define MCIWNDM_SETREPEAT	(WM_USER + 114)
+#define MCIWNDM_GETREPEAT	(WM_USER + 115)
+#define MCIWNDM_REALIZE         (WM_USER + 118)
+#define MCIWNDM_VALIDATEMEDIA   (WM_USER + 121)
+#define MCIWNDM_PLAYFROM	(WM_USER + 122)
+#define MCIWNDM_PLAYTO          (WM_USER + 123)
+#define MCIWNDM_GETPALETTE      (WM_USER + 126)
+#define MCIWNDM_SETPALETTE      (WM_USER + 127)
+#define MCIWNDM_SETTIMERS	(WM_USER + 129)
+#define MCIWNDM_SETACTIVETIMER	(WM_USER + 130)
+#define MCIWNDM_SETINACTIVETIMER (WM_USER + 131)
+#define MCIWNDM_GETACTIVETIMER	(WM_USER + 132)
+#define MCIWNDM_GETINACTIVETIMER (WM_USER + 133)
+#define MCIWNDM_CHANGESTYLES	(WM_USER + 135)
+#define MCIWNDM_GETSTYLES	(WM_USER + 136)
+#define MCIWNDM_GETALIAS	(WM_USER + 137)
+#define MCIWNDM_PLAYREVERSE	(WM_USER + 139)
+#define MCIWNDM_GET_SOURCE      (WM_USER + 140)
+#define MCIWNDM_PUT_SOURCE      (WM_USER + 141)
+#define MCIWNDM_GET_DEST        (WM_USER + 142)
+#define MCIWNDM_PUT_DEST        (WM_USER + 143)
+#define MCIWNDM_CAN_PLAY        (WM_USER + 144)
+#define MCIWNDM_CAN_WINDOW      (WM_USER + 145)
+#define MCIWNDM_CAN_RECORD      (WM_USER + 146)
+#define MCIWNDM_CAN_SAVE        (WM_USER + 147)
+#define MCIWNDM_CAN_EJECT       (WM_USER + 148)
+#define MCIWNDM_CAN_CONFIG      (WM_USER + 149)
+#define MCIWNDM_PALETTEKICK     (WM_USER + 150)
+#define MCIWNDM_OPENINTERFACE	(WM_USER + 151)
+#define MCIWNDM_SETOWNER	(WM_USER + 152)
+
+#define MCIWNDM_SENDSTRINGA	(WM_USER + 101)
+#define MCIWNDM_GETPOSITIONA	(WM_USER + 102)
+#define MCIWNDM_GETMODEA	(WM_USER + 106)
+#define MCIWNDM_SETTIMEFORMATA  (WM_USER + 119)
+#define MCIWNDM_GETTIMEFORMATA  (WM_USER + 120)
+#define MCIWNDM_GETFILENAMEA    (WM_USER + 124)
+#define MCIWNDM_GETDEVICEA      (WM_USER + 125)
+#define MCIWNDM_GETERRORA       (WM_USER + 128)
+#define MCIWNDM_NEWA		(WM_USER + 134)
+#define MCIWNDM_RETURNSTRINGA	(WM_USER + 138)
+#define MCIWNDM_OPENA		(WM_USER + 153)
+
+#define MCIWNDM_SENDSTRINGW	(WM_USER + 201)
+#define MCIWNDM_GETPOSITIONW	(WM_USER + 202)
+#define MCIWNDM_GETMODEW	(WM_USER + 206)
+#define MCIWNDM_SETTIMEFORMATW  (WM_USER + 219)
+#define MCIWNDM_GETTIMEFORMATW  (WM_USER + 220)
+#define MCIWNDM_GETFILENAMEW    (WM_USER + 224)
+#define MCIWNDM_GETDEVICEW      (WM_USER + 225)
+#define MCIWNDM_GETERRORW       (WM_USER + 228)
+#define MCIWNDM_NEWW		(WM_USER + 234)
+#define MCIWNDM_RETURNSTRINGW	(WM_USER + 238)
+#define MCIWNDM_OPENW		(WM_USER + 252)
+
+#define MCIWNDM_SENDSTRING	WINELIB_NAME_AW(MCIWNDM_SENDSTRING)
+#define MCIWNDM_GETPOSITION	WINELIB_NAME_AW(MCIWNDM_GETPOSITION)
+#define MCIWNDM_GETMODE		WINELIB_NAME_AW(MCIWNDM_GETMODE)
+#define MCIWNDM_SETTIMEFORMAT	WINELIB_NAME_AW(MCIWNDM_SETTIMEFORMAT)
+#define MCIWNDM_GETTIMEFORMAT	WINELIB_NAME_AW(MCIWNDM_GETTIMEFORMAT)
+#define MCIWNDM_GETFILENAME	WINELIB_NAME_AW(MCIWNDM_GETFILENAME)
+#define MCIWNDM_GETDEVICE	WINELIB_NAME_AW(MCIWNDM_GETDEVICE)
+#define MCIWNDM_GETERROR	WINELIB_NAME_AW(MCIWNDM_GETERROR)
+#define MCIWNDM_NEW		WINELIB_NAME_AW(MCIWNDM_NEW)
+#define MCIWNDM_RETURNSTRING	WINELIB_NAME_AW(MCIWNDM_RETURNSTRING)
+#define MCIWNDM_OPEN		WINELIB_NAME_AW(MCIWNDM_OPEN)
+
+#define MCIWNDM_NOTIFYMODE      (WM_USER + 200)
+#define MCIWNDM_NOTIFYPOS	(WM_USER + 201)
+#define MCIWNDM_NOTIFYSIZE	(WM_USER + 202)
+#define MCIWNDM_NOTIFYMEDIA     (WM_USER + 203)
+#define MCIWNDM_NOTIFYERROR     (WM_USER + 205)
+
+#define MCIWND_START                -1
+#define MCIWND_END                  -2
+
+/********************************************
+ * DrawDib declarations
+ */
+
+typedef struct
+{ 
+    LONG    timeCount; 
+    LONG    timeDraw; 
+    LONG    timeDecompress; 
+    LONG    timeDither; 
+    LONG    timeStretch; 
+    LONG    timeBlt; 
+    LONG    timeSetDIBits; 
+} DRAWDIBTIME, *LPDRAWDIBTIME; 
+
+HDRAWDIB VFWAPI DrawDibOpen( void );
+UINT VFWAPI DrawDibRealize(HDRAWDIB hdd, HDC hdc, BOOL fBackground);
+
+BOOL VFWAPI DrawDibBegin(HDRAWDIB hdd, HDC hdc, INT dxDst, INT dyDst,
+			 LPBITMAPINFOHEADER lpbi, INT dxSrc, INT dySrc, UINT wFlags);
+
+BOOL VFWAPI DrawDibDraw(HDRAWDIB hdd, HDC hdc, INT xDst, INT yDst, INT dxDst, INT dyDst,
+			LPBITMAPINFOHEADER lpbi, LPVOID lpBits,
+			INT xSrc, INT ySrc, INT dxSrc, INT dySrc, UINT wFlags);
+
+/* DrawDibDraw flags */
+
+#define DDF_UPDATE			0x0002
+#define DDF_SAME_HDC			0x0004
+#define DDF_SAME_DRAW			0x0008
+#define DDF_DONTDRAW			0x0010
+#define DDF_ANIMATE			0x0020
+#define DDF_BUFFER			0x0040
+#define DDF_JUSTDRAWIT			0x0080
+#define DDF_FULLSCREEN			0x0100
+#define DDF_BACKGROUNDPAL		0x0200
+#define DDF_NOTKEYFRAME			0x0400
+#define DDF_HURRYUP			0x0800
+#define DDF_HALFTONE			0x1000
+
+#define DDF_PREROLL         		DDF_DONTDRAW
+#define DDF_SAME_DIB        		DDF_SAME_DRAW
+#define DDF_SAME_SIZE       		DDF_SAME_DRAW
+
+BOOL VFWAPI DrawDibSetPalette(HDRAWDIB hdd, HPALETTE hpal);
+HPALETTE VFWAPI DrawDibGetPalette(HDRAWDIB hdd);
+BOOL VFWAPI DrawDibChangePalette(HDRAWDIB hdd, int iStart, int iLen, LPPALETTEENTRY lppe);
+LPVOID VFWAPI DrawDibGetBuffer(HDRAWDIB hdd, LPBITMAPINFOHEADER lpbi, DWORD dwSize, DWORD dwFlags);
+
+BOOL VFWAPI DrawDibStart(HDRAWDIB hdd, DWORD rate);
+BOOL VFWAPI DrawDibStop(HDRAWDIB hdd);
+#define DrawDibUpdate(hdd, hdc, x, y) \
+        DrawDibDraw(hdd, hdc, x, y, 0, 0, NULL, NULL, 0, 0, 0, 0, DDF_UPDATE)
+
+BOOL VFWAPI DrawDibEnd(HDRAWDIB hdd);
+BOOL VFWAPI DrawDibClose(HDRAWDIB hdd);
+BOOL VFWAPI DrawDibTime(HDRAWDIB hdd, LPDRAWDIBTIME lpddtime);
+
+/* display profiling */
+#define PD_CAN_DRAW_DIB         0x0001
+#define PD_CAN_STRETCHDIB       0x0002
+#define PD_STRETCHDIB_1_1_OK    0x0004
+#define PD_STRETCHDIB_1_2_OK    0x0008
+#define PD_STRETCHDIB_1_N_OK    0x0010
+
+DWORD VFWAPI DrawDibProfileDisplay(LPBITMAPINFOHEADER lpbi);
+
+DECLARE_HANDLE(HVIDEO);
+typedef HVIDEO *LPHVIDEO;
+
+DWORD VFWAPI VideoForWindowsVersion(void);
+
+LONG  VFWAPI InitVFW(void);
+LONG  VFWAPI TermVFW(void);
+
+#define DV_ERR_OK            (0)
+#define DV_ERR_BASE          (1)
+#define DV_ERR_NONSPECIFIC   (DV_ERR_BASE)
+#define DV_ERR_BADFORMAT     (DV_ERR_BASE + 1)
+#define DV_ERR_STILLPLAYING  (DV_ERR_BASE + 2)
+#define DV_ERR_UNPREPARED    (DV_ERR_BASE + 3)
+#define DV_ERR_SYNC          (DV_ERR_BASE + 4)
+#define DV_ERR_TOOMANYCHANNELS (DV_ERR_BASE + 5)
+#define DV_ERR_NOTDETECTED   (DV_ERR_BASE + 6)
+#define DV_ERR_BADINSTALL    (DV_ERR_BASE + 7)
+#define DV_ERR_CREATEPALETTE (DV_ERR_BASE + 8)
+#define DV_ERR_SIZEFIELD     (DV_ERR_BASE + 9)
+#define DV_ERR_PARAM1        (DV_ERR_BASE + 10)
+#define DV_ERR_PARAM2        (DV_ERR_BASE + 11)
+#define DV_ERR_CONFIG1       (DV_ERR_BASE + 12)
+#define DV_ERR_CONFIG2       (DV_ERR_BASE + 13)
+#define DV_ERR_FLAGS         (DV_ERR_BASE + 14)
+#define DV_ERR_13            (DV_ERR_BASE + 15)
+
+#define DV_ERR_NOTSUPPORTED  (DV_ERR_BASE + 16)
+#define DV_ERR_NOMEM         (DV_ERR_BASE + 17)
+#define DV_ERR_ALLOCATED     (DV_ERR_BASE + 18)
+#define DV_ERR_BADDEVICEID   (DV_ERR_BASE + 19)
+#define DV_ERR_INVALHANDLE   (DV_ERR_BASE + 20)
+#define DV_ERR_BADERRNUM     (DV_ERR_BASE + 21)
+#define DV_ERR_NO_BUFFERS    (DV_ERR_BASE + 22)
+
+#define DV_ERR_MEM_CONFLICT  (DV_ERR_BASE + 23)
+#define DV_ERR_IO_CONFLICT   (DV_ERR_BASE + 24)
+#define DV_ERR_DMA_CONFLICT  (DV_ERR_BASE + 25)
+#define DV_ERR_INT_CONFLICT  (DV_ERR_BASE + 26)
+#define DV_ERR_PROTECT_ONLY  (DV_ERR_BASE + 27)
+#define DV_ERR_LASTERROR     (DV_ERR_BASE + 27)
+
+#define DV_ERR_USER_MSG      (DV_ERR_BASE + 1000)
+
+#ifndef MM_DRVM_OPEN
+#define MM_DRVM_OPEN       0x3D0
+#define MM_DRVM_CLOSE      0x3D1
+#define MM_DRVM_DATA       0x3D2
+#define MM_DRVM_ERROR      0x3D3
+
+#define DV_VM_OPEN         MM_DRVM_OPEN
+#define DV_VM_CLOSE        MM_DRVM_CLOSE
+#define DV_VM_DATA         MM_DRVM_DATA
+#define DV_VM_ERROR        MM_DRVM_ERROR
+#endif
+
+typedef struct videohdr_tag {
+    LPBYTE      lpData;
+    DWORD       dwBufferLength;
+    DWORD       dwBytesUsed;
+    DWORD       dwTimeCaptured;
+    DWORD       dwUser;
+    DWORD       dwFlags;
+    DWORD       dwReserved[4];
+} VIDEOHDR, *PVIDEOHDR, *LPVIDEOHDR;
+
+#define VHDR_DONE       0x00000001
+#define VHDR_PREPARED   0x00000002
+#define VHDR_INQUEUE    0x00000004
+#define VHDR_KEYFRAME   0x00000008
+
+typedef struct channel_caps_tag {
+    DWORD       dwFlags;
+    DWORD       dwSrcRectXMod;
+    DWORD       dwSrcRectYMod;
+    DWORD       dwSrcRectWidthMod;
+    DWORD       dwSrcRectHeightMod;
+    DWORD       dwDstRectXMod;
+    DWORD       dwDstRectYMod;
+    DWORD       dwDstRectWidthMod;
+    DWORD       dwDstRectHeightMod;
+} CHANNEL_CAPS, *PCHANNEL_CAPS, *LPCHANNEL_CAPS;
+
+#define VCAPS_OVERLAY       0x00000001
+#define VCAPS_SRC_CAN_CLIP  0x00000002
+#define VCAPS_DST_CAN_CLIP  0x00000004
+#define VCAPS_CAN_SCALE     0x00000008
+
+#define VIDEO_EXTERNALIN        0x0001
+#define VIDEO_EXTERNALOUT       0x0002
+#define VIDEO_IN                0x0004
+#define VIDEO_OUT               0x0008
+
+#define VIDEO_DLG_QUERY         0x0010
+
+#define VIDEO_CONFIGURE_QUERY   0x8000
+
+#define VIDEO_CONFIGURE_SET     0x1000
+
+#define VIDEO_CONFIGURE_GET     0x2000
+#define VIDEO_CONFIGURE_QUERYSIZE 0x0001
+
+#define VIDEO_CONFIGURE_CURRENT 0x0010
+#define VIDEO_CONFIGURE_NOMINAL 0x0020
+#define VIDEO_CONFIGURE_MIN     0x0040
+#define VIDEO_CONFIGURE_MAX     0x0080
+
+#define DVM_USER                0x4000
+
+#define DVM_CONFIGURE_START     0x1000
+#define DVM_CONFIGURE_END       0x1FFF
+
+#define DVM_PALETTE             (DVM_CONFIGURE_START + 1)
+#define DVM_FORMAT              (DVM_CONFIGURE_START + 2)
+#define DVM_PALETTERGB555       (DVM_CONFIGURE_START + 3)
+#define DVM_SRC_RECT            (DVM_CONFIGURE_START + 4)
+#define DVM_DST_RECT            (DVM_CONFIGURE_START + 5)
+
+#define AVICapSM(hwnd,m,w,l) ((IsWindow(hwnd)) ? SendMessage(hwnd,m,w,l) : 0)
+
+#define WM_CAP_START                    WM_USER
+
+#define WM_CAP_UNICODE_START            WM_USER+100
+
+#define WM_CAP_GET_CAPSTREAMPTR         (WM_CAP_START + 1)
+
+#define WM_CAP_SET_CALLBACK_ERRORW      (WM_CAP_UNICODE_START + 2)
+#define WM_CAP_SET_CALLBACK_STATUSW     (WM_CAP_UNICODE_START + 3)
+#define WM_CAP_SET_CALLBACK_ERRORA      (WM_CAP_START + 2)
+#define WM_CAP_SET_CALLBACK_STATUSA     (WM_CAP_START+ 3)
+
+#define WM_CAP_SET_CALLBACK_ERROR       WINELIB_NAME_AW(WM_CAP_SET_CALLBACK_ERROR)
+#define WM_CAP_SET_CALLBACK_STATUS      WINELIB_NAME_AW(WM_CAP_SET_CALLBACK_STATUS)
+
+#define WM_CAP_SET_CALLBACK_YIELD       (WM_CAP_START +  4)
+#define WM_CAP_SET_CALLBACK_FRAME       (WM_CAP_START +  5)
+#define WM_CAP_SET_CALLBACK_VIDEOSTREAM (WM_CAP_START +  6)
+#define WM_CAP_SET_CALLBACK_WAVESTREAM  (WM_CAP_START +  7)
+#define WM_CAP_GET_USER_DATA            (WM_CAP_START +  8)
+#define WM_CAP_SET_USER_DATA            (WM_CAP_START +  9)
+
+#define WM_CAP_DRIVER_CONNECT           (WM_CAP_START +  10)
+#define WM_CAP_DRIVER_DISCONNECT        (WM_CAP_START +  11)
+
+#define WM_CAP_DRIVER_GET_NAMEA         (WM_CAP_START +  12)
+#define WM_CAP_DRIVER_GET_VERSIONA      (WM_CAP_START +  13)
+#define WM_CAP_DRIVER_GET_NAMEW         (WM_CAP_UNICODE_START +  12)
+#define WM_CAP_DRIVER_GET_VERSIONW      (WM_CAP_UNICODE_START +  13)
+
+#define WM_CAP_DRIVER_GET_NAME          WINELIB_NAME_AW(WM_CAP_DRIVER_GET_NAME)
+#define WM_CAP_DRIVER_GET_VERSION       WINELIB_NAME_AW(WM_CAP_DRIVER_GET_VERSION)
+
+#define WM_CAP_DRIVER_GET_CAPS          (WM_CAP_START +  14)
+
+#define WM_CAP_FILE_SET_CAPTURE_FILEA   (WM_CAP_START +  20)
+#define WM_CAP_FILE_GET_CAPTURE_FILEA   (WM_CAP_START +  21)
+#define WM_CAP_FILE_ALLOCATE            (WM_CAP_START +  22)
+#define WM_CAP_FILE_SAVEASA             (WM_CAP_START +  23)
+#define WM_CAP_FILE_SET_INFOCHUNK       (WM_CAP_START +  24)
+#define WM_CAP_FILE_SAVEDIBA            (WM_CAP_START +  25)
+#define WM_CAP_FILE_SET_CAPTURE_FILEW   (WM_CAP_UNICODE_START +  20)
+#define WM_CAP_FILE_GET_CAPTURE_FILEW   (WM_CAP_UNICODE_START +  21)
+#define WM_CAP_FILE_SAVEASW             (WM_CAP_UNICODE_START +  23)
+#define WM_CAP_FILE_SAVEDIBW            (WM_CAP_UNICODE_START +  25)
+
+#define WM_CAP_FILE_SET_CAPTURE_FILE    WINELIB_NAME_AW(WM_CAP_FILE_SET_CAPTURE_FILE)
+#define WM_CAP_FILE_GET_CAPTURE_FILE    WINELIB_NAME_AW(WM_CAP_FILE_GET_CAPTURE_FILE)
+#define WM_CAP_FILE_SAVEAS              WINELIB_NAME_AW(WM_CAP_FILE_SAVEAS)
+#define WM_CAP_FILE_SAVEDIB             WINELIB_NAME_AW(WM_CAP_FILE_SAVEDIB)
+
+#define WM_CAP_EDIT_COPY                (WM_CAP_START +  30)
+
+#define WM_CAP_SET_AUDIOFORMAT          (WM_CAP_START +  35)
+#define WM_CAP_GET_AUDIOFORMAT          (WM_CAP_START +  36)
+
+#define WM_CAP_DLG_VIDEOFORMAT          (WM_CAP_START +  41)
+#define WM_CAP_DLG_VIDEOSOURCE          (WM_CAP_START +  42)
+#define WM_CAP_DLG_VIDEODISPLAY         (WM_CAP_START +  43)
+#define WM_CAP_GET_VIDEOFORMAT          (WM_CAP_START +  44)
+#define WM_CAP_SET_VIDEOFORMAT          (WM_CAP_START +  45)
+#define WM_CAP_DLG_VIDEOCOMPRESSION     (WM_CAP_START +  46)
+
+#define WM_CAP_SET_PREVIEW              (WM_CAP_START +  50)
+#define WM_CAP_SET_OVERLAY              (WM_CAP_START +  51)
+#define WM_CAP_SET_PREVIEWRATE          (WM_CAP_START +  52)
+#define WM_CAP_SET_SCALE                (WM_CAP_START +  53)
+#define WM_CAP_GET_STATUS               (WM_CAP_START +  54)
+#define WM_CAP_SET_SCROLL               (WM_CAP_START +  55)
+
+#define WM_CAP_GRAB_FRAME               (WM_CAP_START +  60)
+#define WM_CAP_GRAB_FRAME_NOSTOP        (WM_CAP_START +  61)
+
+#define WM_CAP_SEQUENCE                 (WM_CAP_START +  62)
+#define WM_CAP_SEQUENCE_NOFILE          (WM_CAP_START +  63)
+#define WM_CAP_SET_SEQUENCE_SETUP       (WM_CAP_START +  64)
+#define WM_CAP_GET_SEQUENCE_SETUP       (WM_CAP_START +  65)
+
+#define WM_CAP_SET_MCI_DEVICEA          (WM_CAP_START +  66)
+#define WM_CAP_GET_MCI_DEVICEA          (WM_CAP_START +  67)
+#define WM_CAP_SET_MCI_DEVICEW          (WM_CAP_UNICODE_START +  66)
+#define WM_CAP_GET_MCI_DEVICEW          (WM_CAP_UNICODE_START +  67)
+
+#define WM_CAP_SET_MCI_DEVICE           WINELIB_NAME_AW(WM_CAP_SET_MCI_DEVICE)
+#define WM_CAP_GET_MCI_DEVICE           WINELIB_NAME_AW(WM_CAP_GET_MCI_DEVICE)
+
+#define WM_CAP_STOP                     (WM_CAP_START +  68)
+#define WM_CAP_ABORT                    (WM_CAP_START +  69)
+
+#define WM_CAP_SINGLE_FRAME_OPEN        (WM_CAP_START +  70)
+#define WM_CAP_SINGLE_FRAME_CLOSE       (WM_CAP_START +  71)
+#define WM_CAP_SINGLE_FRAME             (WM_CAP_START +  72)
+
+#define WM_CAP_PAL_OPENA                (WM_CAP_START +  80)
+#define WM_CAP_PAL_SAVEA                (WM_CAP_START +  81)
+#define WM_CAP_PAL_OPENW                (WM_CAP_UNICODE_START +  80)
+#define WM_CAP_PAL_SAVEW                (WM_CAP_UNICODE_START +  81)
+
+#define WM_CAP_PAL_OPEN                 WINELIB_NAME_AW(WM_CAP_PAL_OPEN)
+#define WM_CAP_PAL_SAVE                 WINELIB_NAME_AW(WM_CAP_PAL_SAVE)
+
+#define WM_CAP_PAL_PASTE                (WM_CAP_START +  82)
+#define WM_CAP_PAL_AUTOCREATE           (WM_CAP_START +  83)
+#define WM_CAP_PAL_MANUALCREATE         (WM_CAP_START +  84)
+
+#define WM_CAP_SET_CALLBACK_CAPCONTROL  (WM_CAP_START +  85)
+
+#define WM_CAP_UNICODE_END              WM_CAP_PAL_SAVEW
+#define WM_CAP_END                      WM_CAP_UNICODE_END
+
+typedef struct tagCapDriverCaps {
+    UINT        wDeviceIndex;
+    BOOL        fHasOverlay;
+    BOOL        fHasDlgVideoSource;
+    BOOL        fHasDlgVideoFormat;
+    BOOL        fHasDlgVideoDisplay;
+    BOOL        fCaptureInitialized;
+    BOOL        fDriverSuppliesPalettes;
+    HANDLE      hVideoIn;
+    HANDLE      hVideoOut;
+    HANDLE      hVideoExtIn;
+    HANDLE      hVideoExtOut;
+} CAPDRIVERCAPS, *PCAPDRIVERCAPS, *LPCAPDRIVERCAPS;
+
+typedef struct tagCapStatus {
+    UINT        uiImageWidth;
+    UINT        uiImageHeight;
+    BOOL        fLiveWindow;
+    BOOL        fOverlayWindow;
+    BOOL        fScale;
+    POINT       ptScroll;
+    BOOL        fUsingDefaultPalette;
+    BOOL        fAudioHardware;
+    BOOL        fCapFileExists;
+    DWORD       dwCurrentVideoFrame;
+    DWORD       dwCurrentVideoFramesDropped;
+    DWORD       dwCurrentWaveSamples;
+    DWORD       dwCurrentTimeElapsedMS;
+    HPALETTE    hPalCurrent;
+    BOOL        fCapturingNow;
+    DWORD       dwReturn;
+    UINT        wNumVideoAllocated;
+    UINT        wNumAudioAllocated;
+} CAPSTATUS, *PCAPSTATUS, *LPCAPSTATUS;
+
+
+typedef struct tagCaptureParms {
+    DWORD       dwRequestMicroSecPerFrame;
+    BOOL        fMakeUserHitOKToCapture;
+    UINT        wPercentDropForError;
+    BOOL        fYield;
+    DWORD       dwIndexSize;
+    UINT        wChunkGranularity;
+    BOOL        fUsingDOSMemory;
+    UINT        wNumVideoRequested;
+    BOOL        fCaptureAudio;
+    UINT        wNumAudioRequested;
+    UINT        vKeyAbort;
+    BOOL        fAbortLeftMouse;
+    BOOL        fAbortRightMouse;
+    BOOL        fLimitEnabled;
+    UINT        wTimeLimit;
+    BOOL        fMCIControl;
+    BOOL        fStepMCIDevice;
+    DWORD       dwMCIStartTime;
+    DWORD       dwMCIStopTime;
+    BOOL        fStepCaptureAt2x;
+    UINT        wStepCaptureAverageFrames;
+    DWORD       dwAudioBufferSize;
+    BOOL        fDisableWriteCache;
+    UINT        AVStreamMaster;
+} CAPTUREPARMS, *PCAPTUREPARMS, *LPCAPTUREPARMS;
+
+typedef LRESULT (CALLBACK* CAPYIELDCALLBACK)  (HWND hWnd);
+typedef LRESULT (CALLBACK* CAPSTATUSCALLBACKW) (HWND hWnd, int nID, LPCWSTR lpsz);
+typedef LRESULT (CALLBACK* CAPERRORCALLBACKW)  (HWND hWnd, int nID, LPCWSTR lpsz);
+typedef LRESULT (CALLBACK* CAPSTATUSCALLBACKA) (HWND hWnd, int nID, LPCSTR lpsz);
+typedef LRESULT (CALLBACK* CAPERRORCALLBACKA)  (HWND hWnd, int nID, LPCSTR lpsz);
+typedef LRESULT (CALLBACK* CAPVIDEOCALLBACK)  (HWND hWnd, LPVIDEOHDR lpVHdr);
+typedef LRESULT (CALLBACK* CAPWAVECALLBACK)   (HWND hWnd, LPWAVEHDR lpWHdr);
+typedef LRESULT (CALLBACK* CAPCONTROLCALLBACK)(HWND hWnd, int nState);
+
+HWND VFWAPI capCreateCaptureWindowA(LPCSTR,DWORD,INT,INT,INT,INT,HWND,INT);
+HWND VFWAPI capCreateCaptureWindowW(LPCWSTR,DWORD,INT,INT,INT,INT,HWND,INT);
+#define     capCreateCaptureWindow WINELIB_NAME_AW(capCreateCaptureWindow)
+BOOL VFWAPI capGetDriverDescriptionA(WORD,LPSTR,INT,LPSTR,INT);
+BOOL VFWAPI capGetDriverDescriptionW(WORD,LPWSTR,INT,LPWSTR,INT);
+#define     capGetDriverDescription WINELIB_NAME_AW(capGetDriverDescription)
+
+#ifdef __cplusplus
+}
+#endif  /* __cplusplus */
+
+#endif /* __WINE_VFW_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/vfwmsgs.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/vfwmsgs.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/vfwmsgs.h	(revision 16410)
@@ -0,0 +1,166 @@
+/*
+ * Copyright (C) 2002 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define VFW_S_NO_MORE_ITEMS              ((HRESULT)0x00040103)
+#define VFW_S_DUPLICATE_NAME             ((HRESULT)0x0004022D)
+#define VFW_S_STATE_INTERMEDIATE         ((HRESULT)0x00040237)
+#define VFW_S_PARTIAL_RENDER             ((HRESULT)0x00040242)
+#define VFW_S_SOME_DATA_IGNORED          ((HRESULT)0x00040245)
+#define VFW_S_CONNECTIONS_DEFERRED       ((HRESULT)0x00040246)
+#define VFW_S_RESOURCE_NOT_NEEDED        ((HRESULT)0x00040250)
+#define VFW_S_MEDIA_TYPE_IGNORED         ((HRESULT)0x00040254)
+#define VFW_S_VIDEO_NOT_RENDERED         ((HRESULT)0x00040257)
+#define VFW_S_AUDIO_NOT_RENDERED         ((HRESULT)0x00040258)
+#define VFW_S_RPZA                       ((HRESULT)0x0004025A)
+#define VFW_S_ESTIMATED                  ((HRESULT)0x00040260)
+#define VFW_S_RESERVED                   ((HRESULT)0x00040263)
+#define VFW_S_STREAM_OFF                 ((HRESULT)0x00040267)
+#define VFW_S_CANT_CUE                   ((HRESULT)0x00040268)
+#define VFW_S_NO_STOP_TIME               ((HRESULT)0x00040270)
+#define VFW_S_NOPREVIEWPIN               ((HRESULT)0x0004027E)
+#define VFW_S_DVD_NON_ONE_SEQUENTIAL     ((HRESULT)0x00040280)
+#define VFW_S_DVD_CHANNEL_CONTENTS_NOT_AVAILABLE ((HRESULT)0x0004028C)
+#define VFW_S_DVD_NOT_ACCURATE           ((HRESULT)0x0004028D)
+#define VFW_E_INVALIDMEDIATYPE           ((HRESULT)0x80040200)
+#define VFW_E_INVALIDSUBTYPE             ((HRESULT)0x80040201)
+#define VFW_E_NEED_OWNER                 ((HRESULT)0x80040202)
+#define VFW_E_ENUM_OUT_OF_SYNC           ((HRESULT)0x80040203)
+#define VFW_E_ALREADY_CONNECTED          ((HRESULT)0x80040204)
+#define VFW_E_FILTER_ACTIVE              ((HRESULT)0x80040205)
+#define VFW_E_NO_TYPES                   ((HRESULT)0x80040206)
+#define VFW_E_NO_ACCEPTABLE_TYPES        ((HRESULT)0x80040207)
+#define VFW_E_INVALID_DIRECTION          ((HRESULT)0x80040208)
+#define VFW_E_NOT_CONNECTED              ((HRESULT)0x80040209)
+#define VFW_E_NO_ALLOCATOR               ((HRESULT)0x8004020A)
+#define VFW_E_RUNTIME_ERROR              ((HRESULT)0x8004020B)
+#define VFW_E_BUFFER_NOTSET              ((HRESULT)0x8004020C)
+#define VFW_E_BUFFER_OVERFLOW            ((HRESULT)0x8004020D)
+#define VFW_E_BADALIGN                   ((HRESULT)0x8004020E)
+#define VFW_E_ALREADY_COMMITTED          ((HRESULT)0x8004020F)
+#define VFW_E_BUFFERS_OUTSTANDING        ((HRESULT)0x80040210)
+#define VFW_E_NOT_COMMITTED              ((HRESULT)0x80040211)
+#define VFW_E_SIZENOTSET                 ((HRESULT)0x80040212)
+#define VFW_E_NO_CLOCK                   ((HRESULT)0x80040213)
+#define VFW_E_NO_SINK                    ((HRESULT)0x80040214)
+#define VFW_E_NO_INTERFACE               ((HRESULT)0x80040215)
+#define VFW_E_NOT_FOUND                  ((HRESULT)0x80040216)
+#define VFW_E_CANNOT_CONNECT             ((HRESULT)0x80040217)
+#define VFW_E_CANNOT_RENDER              ((HRESULT)0x80040218)
+#define VFW_E_CHANGING_FORMAT            ((HRESULT)0x80040219)
+#define VFW_E_NO_COLOR_KEY_SET           ((HRESULT)0x8004021A)
+#define VFW_E_NOT_OVERLAY_CONNECTION     ((HRESULT)0x8004021B)
+#define VFW_E_NOT_SAMPLE_CONNECTION      ((HRESULT)0x8004021C)
+#define VFW_E_PALETTE_SET                ((HRESULT)0x8004021D)
+#define VFW_E_COLOR_KEY_SET              ((HRESULT)0x8004021E)
+#define VFW_E_NO_COLOR_KEY_FOUND         ((HRESULT)0x8004021F)
+#define VFW_E_NO_PALETTE_AVAILABLE       ((HRESULT)0x80040220)
+#define VFW_E_NO_DISPLAY_PALETTE         ((HRESULT)0x80040221)
+#define VFW_E_TOO_MANY_COLORS            ((HRESULT)0x80040222)
+#define VFW_E_STATE_CHANGED              ((HRESULT)0x80040223)
+#define VFW_E_NOT_STOPPED                ((HRESULT)0x80040224)
+#define VFW_E_NOT_PAUSED                 ((HRESULT)0x80040225)
+#define VFW_E_NOT_RUNNING                ((HRESULT)0x80040226)
+#define VFW_E_WRONG_STATE                ((HRESULT)0x80040227)
+#define VFW_E_START_TIME_AFTER_END       ((HRESULT)0x80040228)
+#define VFW_E_INVALID_RECT               ((HRESULT)0x80040229)
+#define VFW_E_TYPE_NOT_ACCEPTED          ((HRESULT)0x8004022A)
+#define VFW_E_SAMPLE_REJECTED            ((HRESULT)0x8004022B)
+#define VFW_E_SAMPLE_REJECTED_EOS        ((HRESULT)0x8004022C)
+#define VFW_E_DUPLICATE_NAME             ((HRESULT)0x8004022D)
+#define VFW_E_TIMEOUT                    ((HRESULT)0x8004022E)
+#define VFW_E_INVALID_FILE_FORMAT        ((HRESULT)0x8004022F)
+#define VFW_E_ENUM_OUT_OF_RANGE          ((HRESULT)0x80040230)
+#define VFW_E_CIRCULAR_GRAPH             ((HRESULT)0x80040231)
+#define VFW_E_NOT_ALLOWED_TO_SAVE        ((HRESULT)0x80040232)
+#define VFW_E_TIME_ALREADY_PASSED        ((HRESULT)0x80040233)
+#define VFW_E_ALREADY_CANCELLED          ((HRESULT)0x80040234)
+#define VFW_E_CORRUPT_GRAPH_FILE         ((HRESULT)0x80040235)
+#define VFW_E_ADVISE_ALREADY_SET         ((HRESULT)0x80040236)
+#define VFW_E_NO_MODEX_AVAILABLE         ((HRESULT)0x80040238)
+#define VFW_E_NO_ADVISE_SET              ((HRESULT)0x80040239)
+#define VFW_E_NO_FULLSCREEN              ((HRESULT)0x8004023A)
+#define VFW_E_IN_FULLSCREEN_MODE         ((HRESULT)0x8004023B)
+#define VFW_E_UNKNOWN_FILE_TYPE          ((HRESULT)0x80040240)
+#define VFW_E_CANNOT_LOAD_SOURCE_FILTER  ((HRESULT)0x80040241)
+#define VFW_E_FILE_TOO_SHORT             ((HRESULT)0x80040243)
+#define VFW_E_INVALID_FILE_VERSION       ((HRESULT)0x80040244)
+#define VFW_E_INVALID_CLSID              ((HRESULT)0x80040247)
+#define VFW_E_INVALID_MEDIA_TYPE         ((HRESULT)0x80040248)
+#define VFW_E_SAMPLE_TIME_NOT_SET        ((HRESULT)0x80040249)
+#define VFW_E_MEDIA_TIME_NOT_SET         ((HRESULT)0x80040251)
+#define VFW_E_NO_TIME_FORMAT_SET         ((HRESULT)0x80040252)
+#define VFW_E_MONO_AUDIO_HW              ((HRESULT)0x80040253)
+#define VFW_E_NO_DECOMPRESSOR            ((HRESULT)0x80040255)
+#define VFW_E_NO_AUDIO_HARDWARE          ((HRESULT)0x80040256)
+#define VFW_E_RPZA                       ((HRESULT)0x80040259)
+#define VFW_E_PROCESSOR_NOT_SUITABLE     ((HRESULT)0x8004025B)
+#define VFW_E_UNSUPPORTED_AUDIO          ((HRESULT)0x8004025C)
+#define VFW_E_UNSUPPORTED_VIDEO          ((HRESULT)0x8004025D)
+#define VFW_E_MPEG_NOT_CONSTRAINED       ((HRESULT)0x8004025E)
+#define VFW_E_NOT_IN_GRAPH               ((HRESULT)0x8004025F)
+#define VFW_E_NO_TIME_FORMAT             ((HRESULT)0x80040261)
+#define VFW_E_READ_ONLY                  ((HRESULT)0x80040262)
+#define VFW_E_BUFFER_UNDERFLOW           ((HRESULT)0x80040264)
+#define VFW_E_UNSUPPORTED_STREAM         ((HRESULT)0x80040265)
+#define VFW_E_NO_TRANSPORT               ((HRESULT)0x80040266)
+#define VFW_E_BAD_VIDEOCD                ((HRESULT)0x80040269)
+#define VFW_E_OUT_OF_VIDEO_MEMORY        ((HRESULT)0x80040271)
+#define VFW_E_VP_NEGOTIATION_FAILED      ((HRESULT)0x80040272)
+#define VFW_E_DDRAW_CAPS_NOT_SUITABLE    ((HRESULT)0x80040273)
+#define VFW_E_NO_VP_HARDWARE             ((HRESULT)0x80040274)
+#define VFW_E_NO_CAPTURE_HARDWARE        ((HRESULT)0x80040275)
+#define VFW_E_DVD_OPERATION_INHIBITED    ((HRESULT)0x80040276)
+#define VFW_E_DVD_INVALIDDOMAIN          ((HRESULT)0x80040277)
+#define VFW_E_DVD_NO_BUTTON              ((HRESULT)0x80040278)
+#define VFW_E_DVD_GRAPHNOTREADY          ((HRESULT)0x80040279)
+#define VFW_E_DVD_RENDERFAIL             ((HRESULT)0x8004027A)
+#define VFW_E_DVD_DECNOTENOUGH           ((HRESULT)0x8004027B)
+#define VFW_E_DDRAW_VERSION_NOT_SUITABLE ((HRESULT)0x8004027C)
+#define VFW_E_COPYPROT_FAILED            ((HRESULT)0x8004027D)
+#define VFW_E_TIME_EXPIRED               ((HRESULT)0x8004027F)
+#define VFW_E_DVD_WRONG_SPEED            ((HRESULT)0x80040281)
+#define VFW_E_DVD_MENU_DOES_NOT_EXIST    ((HRESULT)0x80040282)
+#define VFW_E_DVD_CMD_CANCELLED          ((HRESULT)0x80040283)
+#define VFW_E_DVD_STATE_WRONG_VERSION    ((HRESULT)0x80040284)
+#define VFW_E_DVD_STATE_CORRUPT          ((HRESULT)0x80040285)
+#define VFW_E_DVD_STATE_WRONG_DISC       ((HRESULT)0x80040286)
+#define VFW_E_DVD_INCOMPATIBLE_REGION    ((HRESULT)0x80040287)
+#define VFW_E_DVD_NO_ATTRIBUTES          ((HRESULT)0x80040288)
+#define VFW_E_DVD_NO_GOUP_PGC            ((HRESULT)0x80040289)
+#define VFW_E_DVD_LOW_PARENTAL_LEVEL     ((HRESULT)0x8004028A)
+#define VFW_E_DVD_NOT_IN_KARAOKE_MODE    ((HRESULT)0x8004028B)
+#define VFW_E_FRAME_STEP_UNSUPPORTED     ((HRESULT)0x8004028E)
+#define VFW_E_DVD_STREAM_DISABLED        ((HRESULT)0x8004028F)
+#define VFW_E_DVD_TITLE_UNKNOWN          ((HRESULT)0x80040290)
+#define VFW_E_DVD_INVALID_DISC           ((HRESULT)0x80040291)
+#define VFW_E_DVD_NO_RESUME_INFORMATION  ((HRESULT)0x80040292)
+#define VFW_E_PIN_ALREADY_BLOCKED_ON_THIS_THREAD ((HRESULT)0x80040293)
+#define VFW_E_PIN_ALREADY_BLOCKED        ((HRESULT)0x80040294)
+#define VFW_E_CERTIFICATION_FAILURE      ((HRESULT)0x80040295)
+#define VFW_E_VMR_NOT_IN_MIXER_MODE      ((HRESULT)0x80040296)
+#define VFW_E_VMR_NO_AP_SUPPLIED         ((HRESULT)0x80040297)
+#define VFW_E_VMR_NO_DEINTERLACE_HW      ((HRESULT)0x80040298)
+#define VFW_E_DVD_VMR9_INCOMPATIBLEDEC   ((HRESULT)0x8004029A)
+#define VFW_E_BAD_KEY                    ((HRESULT)0x800403F2)
+
+#ifndef E_PROP_ID_UNSUPPORTED
+#define E_PROP_ID_UNSUPPORTED            ((HRESULT)0x80070490)
+#endif
+#ifndef E_PROP_SET_UNSUPPORTED
+#define E_PROP_SET_UNSUPPORTED           ((HRESULT)0x80070492)
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/vmr9.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/vmr9.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/vmr9.idl	(revision 16410)
@@ -0,0 +1,524 @@
+/*
+ * Copyright 2008 Maarten Lankhorst
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "unknwn.idl";
+
+cpp_quote("#if 0")
+interface IDirect3DSurface9;
+interface IDirect3DDevice9;
+typedef LONGLONG REFERENCE_TIME;
+typedef DWORD D3DFORMAT;
+typedef DWORD D3DPOOL;
+typedef HANDLE HMONITOR;
+typedef struct { char dummy; } AM_MEDIA_TYPE;
+typedef struct { char dummy; } D3DCOLOR;
+cpp_quote("#endif")
+
+interface IVMRSurface9;
+interface IVMRSurfaceAllocator9;
+interface IVMRSurfaceAllocatorEx9;
+interface IVMRSurfaceAllocatorNotify9;
+interface IVMRImagePresenter9;
+interface IVMRImagePresenterConfig9;
+interface IVMRMonitorConfig9;
+interface IVMRWindowlessControl9;
+interface IVMRMixerControl9;
+interface IVMRImageCompositor9;
+interface IVMRMixerBitmap9;
+interface IVMRFilterConfig9;
+interface IVMRAspectRatioControl9;
+interface IVMRVideoStreamControl9;
+
+typedef enum _VMR9PresentationFlags
+{
+    VMR9Sample_SyncPoint = 0x1,
+    VMR9Sample_Preroll = 0x2,
+    VMR9Sample_Discontinuity = 0x4,
+    VMR9Sample_TimeValid = 0x8,
+    VMR9Sample_SrcDstRectsValid = 0x10
+} VMR9PresentationFlags;
+
+typedef struct _VMR9PresentationInfo
+{
+    DWORD dwFlags; /* Flags defined above */
+    IDirect3DSurface9 *lpSurf;
+    REFERENCE_TIME rtStart;
+    REFERENCE_TIME rtEnd;
+    SIZE szAspectRatio;
+    RECT rcSrc;
+    RECT rcDst;
+    DWORD dwReserved1;
+    DWORD dwReserved2;
+} VMR9PresentationInfo;
+
+[
+    local,
+    object,
+    uuid(69188c61-12a3-40f0-8ffc-342e7b433fd7),
+    helpstring("IVMRImagePresenter9 interface"),
+    pointer_default(unique)
+]
+interface IVMRImagePresenter9 : IUnknown
+{
+    HRESULT StartPresenting([in] DWORD_PTR id);
+    HRESULT StopPresenting([in] DWORD_PTR id);
+    HRESULT PresentImage([in] DWORD_PTR id, [in] VMR9PresentationInfo *info);
+};
+
+typedef enum _VMR9SurfaceAllocationFlags
+{
+    VMR9AllocFlag_3DRenderTarget = 0x1,
+    VMR9AllocFlag_DXVATarget = 0x2,
+    VMR9AllocFlag_TextureSurface = 0x4,
+    VMR9AllocFlag_OffscreenSurface = 0x8,
+    VMR9AllocFlag_RGBDynamicSwitch = 0x10,
+    VMR9AllocFlag_UsageReserved = 0xe0,
+    VMR9AllocFlag_UsageMask = 0xff,
+} VMR9SurfaceAllocationFlags;
+
+typedef struct _VMR9AllocationInfo
+{
+    DWORD dwFlags; /* Flags defined above */
+    DWORD dwWidth;
+    DWORD dwHeight;
+    D3DFORMAT Format;
+    D3DPOOL Pool;
+    DWORD MinBuffers;
+    SIZE szAspectRatio;
+    SIZE szNativeSize;
+} VMR9AllocationInfo;
+
+[
+    local,
+    object,
+    uuid(8d5148ea-3f5d-46cf-9df1-d1b896eedb1f),
+    helpstring("IVMRSurfaceAllocator9 interface"),
+    pointer_default(unique)
+]
+interface IVMRSurfaceAllocator9 : IUnknown
+{
+    HRESULT InitializeDevice([in] DWORD_PTR id, [in] VMR9AllocationInfo *allocinfo, [in, out] DWORD *numbuffers);
+    HRESULT TerminateDevice([in] DWORD_PTR id);
+    HRESULT GetSurface([in] DWORD_PTR id, [in] DWORD surfaceindex, [in] DWORD flags, [out] IDirect3DSurface9 **surface);
+    HRESULT AdviseNotify([in] IVMRSurfaceAllocatorNotify9 *allocnotify);
+};
+
+[
+    local,
+    object,
+    uuid(6de9a68a-a928-4522-bf57-655ae3866456),
+    helpstring("IVMRSurfaceAllocatorEx9 interface"),
+    pointer_default(unique)
+]
+interface IVMRSurfaceAllocatorEx9 : IVMRSurfaceAllocator9
+{
+    HRESULT GetSurfaceEx([in] DWORD_PTR id, [in] DWORD surfaceindex, [in] DWORD flags, [out] IDirect3DSurface9 **surface, [out] RECT *dest);
+};
+
+[
+    local,
+    object,
+    uuid(dca3f5df-bb3a-4d03-bd81-84614bfbfa0c),
+    helpstring("IVMRSurfaceAllocatorNotify9 interface"),
+    pointer_default(unique)
+]
+interface IVMRSurfaceAllocatorNotify9 : IUnknown
+{
+    HRESULT AdviseSurfaceAllocator([in] DWORD_PTR id, [in] IVMRSurfaceAllocator9 *alloc);
+    HRESULT SetD3DDevice([in] IDirect3DDevice9 *device, [in] HMONITOR monitor);
+    HRESULT ChangeD3DDevice([in] IDirect3DDevice9 *device, [in] HMONITOR monitor);
+    HRESULT AllocateSurfaceHelper([in] VMR9AllocationInfo *allocinfo, [in, out] DWORD *numbuffers, [out] IDirect3DSurface9 **surface);
+    HRESULT NotifyEvent([in] LONG code, [in] LONG_PTR param1, [in] LONG_PTR param2);
+};
+
+typedef enum _VMR9AspectRatioMode
+{
+    VMR9ARMode_None,
+    VMR9ARMode_LetterBox
+} VMR9AspectRatioMode;
+
+[
+    local,
+    object,
+    uuid(8f537d09-f85e-4414-b23b-502e54c79927),
+    helpstring("IVMRWindowlessControl interface"),
+    pointer_default(unique)
+]
+interface IVMRWindowlessControl9 : IUnknown
+{
+    HRESULT GetNativeVideoSize([out] LONG *width, [out] LONG *height, [out] LONG *arwidth, [out] LONG *arheight);
+    HRESULT GetMinIdealVideoSize([out] LONG *width, [out] LONG *height);
+    HRESULT GetMaxIdealVideoSize([out] LONG *width, [out] LONG *height);
+    HRESULT SetVideoPosition([in] const RECT *source, [in] const RECT *dest);
+    HRESULT GetVideoPosition([out] RECT *source, [out] RECT *dest);
+    HRESULT GetAspectRatioMode([out] DWORD *mode);
+    HRESULT SetAspectRatioMode([in] DWORD mode);
+    HRESULT SetVideoClippingWindow([in] HWND hwnd);
+    HRESULT RepaintVideo([in] HWND hwnd, [in] HDC hdc);
+    HRESULT DisplayModeChanged();
+    HRESULT GetCurrentImage([out] BYTE **dib);
+    HRESULT SetBorderColor([in] COLORREF color);
+    HRESULT GetBorderColor([out] COLORREF *color);
+};
+
+typedef enum _VMR9MixerPrefs
+{
+    /* Decimation */
+    MixerPref9_NoDecimation = 0x1,
+    MixerPref9_DecimateOutput = 0x2,
+    MixerPref9_ARAdjustXorY = 0x4,
+    MixerPref9_NonSquareMixing = 0x8,
+    MixerPref9_DecimateMask = 0xf,
+
+    /* Filtering */
+    MixerPref9_BiLinearFiltering = 0x10,
+    MixerPref9_PointFiltering = 0x20,
+    MixerPref9_AnisotropicFiltering = 0x40,
+    MixerPref9_PyramidalQuadFiltering = 0x80,
+    MixerPref9_GaussianQuadFiltering = 0x100,
+    MixerPref9_FilteringReserved = 0xe00,
+    MixerPref9_FilteringMask = 0xff0,
+
+    /* Render target */
+    MixerPref9_RenderTargetRGB = 0x1000,
+    MixerPref9_RenderTargetYUV = 0x2000,
+    MixerPref9_RenderTargetReserved = 0xfc000,
+
+    MixerPref9_DynamicSwitchToBOB = 0x100000,
+    MixerPref9_DynamicDecimateBy2 = 0x200000,
+    MixerPref9_DynamicReserved = 0xc00000,
+    MixerPref9_DynamicMask = 0xf00000,
+} VMR9MixerPrefs;
+
+typedef struct _VMR9NormalizedRect
+{
+    FLOAT left;
+    FLOAT top;
+    FLOAT right;
+    FLOAT bottom;
+} VMR9NormalizedRect;
+
+typedef enum _VMR9ProcAmpControlFlags
+{
+    ProcAmpControl9_Brightness = 0x1,
+    ProcAmpControl9_Contrast = 0x2,
+    ProcAmpControl9_Hue = 0x4,
+    ProcAmpControl9_Saturation = 0x8,
+    ProcAmpControl9_Mask = 0xf
+} VMR9ProcAmpControlFlags;
+
+typedef struct _VMR9ProcAmpControl
+{
+    DWORD dwSize;
+    DWORD dwFlags;
+    FLOAT Brightness;
+    FLOAT Contrast;
+    FLOAT Hue;
+    FLOAT Saturation;
+} VMR9ProcAmpControl;
+
+typedef struct _VMR9ProcAmpControlRange
+{
+    DWORD dwSize;
+    VMR9ProcAmpControlFlags dwProperty;
+    FLOAT MinValue;
+    FLOAT MaxValue;
+    FLOAT DefaultValue;
+    FLOAT StepSize;
+} VMR9ProcAmpControlRange;
+
+[
+    local,
+    object,
+    uuid(1a777eaa-47c8-4930-b2c9-8fee1c1b0f3b),
+    helpstring("IVMRMixerControl9 interface"),
+    pointer_default(unique)
+]
+interface IVMRMixerControl9 : IUnknown
+{
+    HRESULT SetAlpha([in] DWORD streamid, [in] FLOAT alpha);
+    HRESULT GetAlpha([in] DWORD streamid, [out] FLOAT *alpha);
+    HRESULT SetZOrder([in] DWORD streamid, [in] DWORD zorder);
+    HRESULT GetZOrder([in] DWORD streamid, [out] DWORD *zorder);
+    HRESULT SetOutputRect([in] DWORD streamid, [in] const VMR9NormalizedRect *rect);
+    HRESULT GetOutputRect([in] DWORD streamid, [out] VMR9NormalizedRect *rect);
+    HRESULT SetBackgroundClr([in] COLORREF back);
+    HRESULT GetBackgroundClr([out] COLORREF *back);
+    HRESULT SetMixingPrefs([in] DWORD mixingprefs);
+    HRESULT GetMixingPrefs([out] DWORD *mixingprefs);
+    HRESULT SetProcAmpControl([in] DWORD streamid, [in] VMR9ProcAmpControl *control);
+    HRESULT GetProcAmpControl([in] DWORD streamid, [in, out] VMR9ProcAmpControl *control);
+    HRESULT GetProcAmpControlRange([in] DWORD streamid, [in, out] VMR9ProcAmpControlRange *controlrange);
+};
+
+typedef struct _VMR9AlphaBitmap
+{
+    DWORD dwFlags;
+    HDC hdc;
+    IDirect3DSurface9 *pDDS;
+    RECT rSrc;
+    VMR9NormalizedRect *rDest;
+    FLOAT fAlpha;
+    COLORREF clrSrcKey;
+    DWORD dwFilterMode;
+} VMR9AlphaBitmap;
+
+typedef enum _VMR9AlphaBitmapFlags
+{
+    VMR9AlphaBitmap_Disable = 0x1,
+    VMR9AlphaBitmap_hDC = 0x2,
+    VMR9AlphaBitmap_EntireDDS = 0x4,
+    VMR9AlphaBitmap_SrcColorKey = 0x8,
+    VMR9AlphaBitmap_SrcRect = 0x10,
+    VMR9AlphaBitmap_FilterMode = 0x20
+} VMR9AlphaBitmapFlags;
+
+[
+    local,
+    object,
+    uuid(ced175e5-1935-4820-81bd-ff6ad00c9108),
+    helpstring("IVMRMixerBitmap interface"),
+    pointer_default(unique)
+]
+interface IVMRMixerBitmap9 : IUnknown
+{
+    HRESULT SetAlphaBitmap([in] const VMR9AlphaBitmap *bitmap);
+    HRESULT UpdateAlphaBitmapParameters([in] const VMR9AlphaBitmap *bitmap);
+    HRESULT GetAlphaBitmapParameters([out] VMR9AlphaBitmap *bitmap);
+};
+
+[
+    local,
+    object,
+    uuid(dfc581a1-6e1f-4c3a-8d0a-5e9792ea2afc),
+    helpstring("IVMRSurface interface"),
+    pointer_default(unique)
+]
+interface IVMRSurface9 : IUnknown
+{
+    HRESULT IsSurfaceLocked();
+    HRESULT LockSurface([out] BYTE **surface);
+    HRESULT UnlockSurface();
+    HRESULT GetSurface([out] IDirect3DSurface9 **surface);
+};
+
+typedef enum _VMR9RenderPrefs
+{
+   RenderPrefs9_DoNotRenderBorder = 0x1,
+   RenderPrefs9_Mask = 0x1
+} VMR9RenderPrefs;
+
+[
+    local,
+    object,
+    uuid(45c15cab-6e22-420a-8043-ae1f0ac02c7d),
+    helpstring("IVMRImagePresenterConfig9 interface"),
+    pointer_default(unique)
+]
+interface IVMRImagePresenterConfig9 : IUnknown
+{
+    HRESULT SetRenderingPrefs([in] DWORD renderflags);
+    HRESULT GetRenderingPrefs([out] DWORD *renderflags);
+};
+
+[
+    local,
+    object,
+    uuid(d0cfe38b-93e7-4772-8957-0400c49a4485),
+    helpstring("IVMRMixerStreamConfig interface"),
+    pointer_default(unique)
+]
+interface IVMRVideoStreamControl9: IUnknown
+{
+    HRESULT SetStreamActiveState([in] BOOL active);
+    HRESULT GetStreamActiveState([out] BOOL *active);
+};
+
+typedef enum _VMR9Mode
+{
+    VMR9Mode_Windowed = 0x1,
+    VMR9Mode_Windowless = 0x2,
+    VMR9Mode_Renderless = 0x4,
+    VMR9Mode_Mask = 0x7
+} VMR9Mode;
+
+[
+    local,
+    object,
+    uuid(5a804648-4f66-4867-9c43-4f5c822cf1b8),
+    helpstring("IVMRFilterConfig9 interface"),
+    pointer_default(unique)
+]
+interface IVMRFilterConfig9 : IUnknown
+{
+    HRESULT SetImageCompositor([in] IVMRImageCompositor9 *compositor);
+    HRESULT SetNumberOfStreams([in] DWORD max);
+    HRESULT GetNumberOfStreams([out] DWORD *max);
+    HRESULT SetRenderingPrefs([in] DWORD renderflags);
+    HRESULT GetRenderingPrefs([out] DWORD *renderflags);
+    HRESULT SetRenderingMode([in] DWORD mode);
+    HRESULT GetRenderingMode([out] DWORD *mode);
+};
+
+[
+    local,
+    object,
+    uuid(00d96c29-bbde-4efc-9901-bb5036392146),
+    helpstring("IVMRAspectRatioControl9 interface"),
+    pointer_default(unique)
+]
+interface IVMRAspectRatioControl9 : IUnknown
+{
+    HRESULT GetAspectRatioMode([out] DWORD *mode);
+    HRESULT SetAspectRatioMode([in] DWORD mode);
+}
+
+#define VMR9DEVICENAMELEN 32
+#define VMR9DEVICEDESCRIPTIONLEN 512
+
+typedef struct _VMR9MonitorInfo
+{
+    UINT uDevID;
+    RECT rcMonitor;
+    HMONITOR hMon;
+    DWORD dwFlags;
+    WCHAR szDevice[VMR9DEVICENAMELEN];
+    WCHAR szDescription[VMR9DEVICEDESCRIPTIONLEN];
+    LARGE_INTEGER liDriverVersion;
+    DWORD dwVendorId;
+    DWORD dwDeviceId;
+    DWORD dwSubSysId;
+    DWORD dwRevision;
+} VMR9MonitorInfo;
+
+[
+    local,
+    object,
+    uuid(46c2e457-8ba0-4eef-b80b-0680f0978749),
+    helpstring("IVMRMonitorConfig9 interface"),
+    pointer_default(unique)
+]
+interface IVMRMonitorConfig9 : IUnknown
+{
+    HRESULT SetMonitor([in] UINT uDev);
+    HRESULT GetMonitor([out] UINT *uDev);
+    HRESULT SetDefaultMonitor([in] UINT uDev);
+    HRESULT GetDefaultMonitor([out] UINT *uDev);
+    HRESULT GetAvailableMonitors([out, size_is(arraysize)] VMR9MonitorInfo *info, [in] DWORD arraysize, [out] DWORD *numdev);
+};
+
+typedef enum _VMR9DeinterlacePrefs
+{
+    DeinterlacePref9_NextBest = 0x1,
+    DeinterlacePref9_BOB = 0x2,
+    DeinterlacePref9_Weave = 0x4,
+    DeinterlacePref9_Mask = 0x7
+} VMR9DeinterlacePrefs;
+
+typedef enum _VMR9DeinterlaceTech
+{
+    DeinterlaceTech9_Unknown = 0,
+    DeinterlaceTech9_BOBLineReplicate = 0x1,
+    DeinterlaceTech9_BOBVerticalStretch = 0x2,
+    DeinterlaceTech9_MedianFiltering = 0x4,
+    DeinterlaceTech9_EdgeFiltering = 0x10,
+    DeinterlaceTech9_FieldAdaptive = 0x20,
+    DeinterlaceTech9_PixelAdaptive = 0x40,
+    DeinterlaceTech9_MotionVectorSteered = 0x80
+} VMR9DeinterlaceTech;
+
+typedef struct _VMR9Frequency
+{
+    DWORD dwNumerator;
+    DWORD dwDenominator;
+} VMR9Frequency;
+
+typedef enum _VMR9_SampleFormat
+{
+    VMR9_SampleReserved = 1,
+    VMR9_SampleProgressiveFrame = 2,
+    VMR9_SampleFieldInterleavedEvenFirst = 3,
+    VMR9_SampleFieldInterleavedOddFirst = 4,
+    VMR9_SampleFieldSingleEven = 5,
+    VMR9_SampleFieldSingleOdd = 6,
+} VMR9_SampleFormat;
+
+typedef struct _VMR9VideoDesc
+{
+    DWORD dwSize;
+    DWORD dwSampleWidth;
+    DWORD dwSampleHeight;
+    VMR9_SampleFormat SampleFormat;
+    DWORD dwFourCC;
+    VMR9Frequency InputSampleFreq;
+    VMR9Frequency OutputFrameFreq;
+} VMR9VideoDesc;
+
+typedef struct _VMR9DeinterlaceCaps {
+    DWORD dwSize;
+    DWORD dwNumPreviousOutputFrames;
+    DWORD dwNumForwardRefSamples;
+    DWORD dwNumBackwardRefSamples;
+    VMR9DeinterlaceTech DeinterlaceTechnology;
+} VMR9DeinterlaceCaps;
+
+[
+    local,
+    object,
+    uuid(a215fb8d-13c2-4f7f-993c-003d6271a459),
+    helpstring("IVMRDeinterlaceControl9 interface"),
+    pointer_default(unique)
+]
+interface IVMRDeinterlaceControl9 : IUnknown
+{
+    HRESULT GetNumberOfDeinterlaceModes([in] VMR9VideoDesc *desc, [in, out] DWORD *nummodes, [out] GUID *modes);
+    HRESULT GetDeinterlaceModeCaps([in] GUID *mode, [in] VMR9VideoDesc *desc, [out] VMR9DeinterlaceCaps *caps);
+    HRESULT GetDeinterlaceMode([in] DWORD streamid, [out] GUID *mode);
+    HRESULT SetDeinterlaceMode([in] DWORD streamid, [in] GUID *mode);
+    HRESULT GetDeinterlacePrefs([out] DWORD *prefs);
+    HRESULT SetDeinterlacePrefs([in] DWORD prefs);
+    HRESULT GetActualDeinterlaceMode([in] DWORD streamid, [out] GUID *mode);
+};
+
+typedef struct _VMR9VideoStreamInfo {
+    IDirect3DSurface9 *pddsVideoSurface;
+    DWORD dwWidth;
+    DWORD dwHeight;
+    DWORD dwStrmID;
+    FLOAT fAlpha;
+    VMR9NormalizedRect rNormal;
+    REFERENCE_TIME rtStart;
+    REFERENCE_TIME rtEnd;
+    VMR9_SampleFormat SampleFormat;
+} VMR9VideoStreamInfo;
+
+[
+    local,
+    object,
+    uuid(4a5c89eb-df51-4654-ac2a-e48e02bbabf6),
+    helpstring("IVMRImageCompositor9 interface"),
+    pointer_default(unique)
+]
+interface IVMRImageCompositor9 : IUnknown
+{
+    HRESULT InitCompositionDevice([in] IUnknown *d3ddev);
+    HRESULT TermCompositionDevice([in] IUnknown *d3ddev);
+    HRESULT CompositeImage([in] IUnknown *d3ddev, [in] IDirect3DSurface9 *d3dtarget, [in] AM_MEDIA_TYPE *mttarget,
+                           [in] REFERENCE_TIME start, [in] REFERENCE_TIME stop, D3DCOLOR back,
+                           [in] VMR9VideoStreamInfo *info, [in] UINT streams);
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/vmrender.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/vmrender.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/vmrender.idl	(revision 16410)
@@ -0,0 +1,481 @@
+/*
+ * Copyright (C) 2008 Maarten Lankhorst
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+cpp_quote("#if 0")
+typedef DWORD IDirectDrawSurface7;
+typedef DWORD IDirectDraw7;
+typedef DWORD *LPBITMAPINFOHEADER;
+typedef DWORD *LPDDPIXELFORMAT;
+typedef struct { DWORD dw1, dw2; } DDCOLORKEY;
+cpp_quote("#endif")
+cpp_quote("#include <ddraw.h>")
+
+interface IVMRSurface;
+interface IVMRSurfaceAllocator;
+interface IVMRSurfaceAllocatorNotify;
+interface IVMRImagePresenter;
+interface IVMRImagePresenterNotify;
+interface IVMRWindowlessControl;
+interface IVMRMixerControl;
+interface IVMRMixerBitmap;
+interface IVMRFilterConfig;
+interface IVMRAspectRatioControl;
+interface IVMRDeinterlaceControl;
+interface IVMRMonitorConfig;
+interface IVMRImageCompositor;
+interface IVMRVideoStreamControl;
+
+typedef enum _VMRPresentationFlags
+{
+    VMRSample_SyncPoint = 0x01,
+    VMRSample_Preroll = 0x02,
+    VMRSample_Discontinuity = 0x04,
+    VMRSample_TimeValid = 0x08,
+    VMRSample_SrcDstRectsValid = 0x10
+} VMRPresentationFlags;
+
+typedef struct tagVMRPRESENTATIONINFO
+{
+    DWORD dwFlags;
+    IDirectDrawSurface7 *lpSurf;
+    REFERENCE_TIME rtStart, rtEnd;
+    SIZE szAspectRatio;
+    RECT rcSrc, rcDst;
+    DWORD dwTypeSpecificFlags;
+    DWORD dwInterlaceFlags;
+} VMRPRESENTATIONINFO;
+
+[
+    local,
+    object,
+    uuid(ce704fe7-e71e-41fb-baa2-c4403e1182f5),
+    helpstring("IVMRImagePresenter interface"),
+    pointer_default(unique)
+]
+interface IVMRImagePresenter : IUnknown
+{
+    HRESULT StartPresenting([in] DWORD_PTR id);
+    HRESULT StopPresenting([in] DWORD_PTR id);
+    HRESULT PresentImage([in] DWORD_PTR id, [in] VMRPRESENTATIONINFO *info);
+};
+
+typedef enum _VMRSurfaceAllocationFlags
+{
+    AMAP_PIXELFORMAT_VALID = 0x01,
+    AMAP_3D_TARGET = 0x02,
+    AMAP_ALLOW_SYSMEM = 0x04,
+    AMAP_FORCE_SYSMEM = 0x08,
+    AMAP_DIRECTED_FLIP = 0x10,
+    AMAP_DXVA_TARGET = 0x20
+} VMRSurfaceAllocationFlags;
+
+typedef struct tagVMRALLOCATIONINFO
+{
+    DWORD dwFlags;
+    LPBITMAPINFOHEADER lpHdr;
+    LPDDPIXELFORMAT lpPixFmt;
+    SIZE szAspectRatio;
+    DWORD dwMinBuffers;
+    DWORD dwMaxBuffers;
+    DWORD dwInterlaceFlags;
+    SIZE szNativeSize;
+} VMRALLOCATIONINFO;
+
+[
+    local,
+    object,
+    uuid(31ce832e-4484-458b-8cca-f4d7e3db0b52),
+    helpstring("IVMRSurfaceAllocator interface"),
+    pointer_default(unique)
+]
+interface IVMRSurfaceAllocator : IUnknown
+{
+    HRESULT AllocateSurface([in] DWORD_PTR id, [in] VMRALLOCATIONINFO *allocinfo, [in, out] DWORD *buffers, IDirectDrawSurface7 **surface);
+    HRESULT FreeSurface([in] DWORD_PTR id);
+    HRESULT PrepareSurface([in] DWORD_PTR id, [in] IDirectDrawSurface7 *surface, [in] DWORD dwSurfaceFlags);
+    HRESULT AdviseNotify([in] IVMRSurfaceAllocatorNotify *notify);
+};
+
+[
+    local,
+    object,
+    uuid(aada05a8-5a4e-4729-af0b-cea27aed51e2),
+    helpstring("IVMRSurfaceAllocatorNotify interface"),
+    pointer_default(unique)
+]
+interface IVMRSurfaceAllocatorNotify : IUnknown
+{
+    HRESULT AdviseSurfaceAllocator([in] DWORD_PTR id, [in] IVMRSurfaceAllocator *allocator);
+    HRESULT SetDDrawDevice([in] IDirectDraw7 *device, [in] HMONITOR monitor);
+    HRESULT ChangeDDrawDevice([in] IDirectDraw7 *device, [in] HMONITOR monitor);
+    HRESULT RestoreDDrawSurfaces();
+    HRESULT NotifyEvent([in] LONG EventCode, [in] LONG_PTR p1, [in] LONG_PTR p2);
+    HRESULT SetBorderColor([in] COLORREF border);
+};
+
+typedef enum _VMR_ASPECT_RATIO_MODE
+{
+    VMR_ARMODE_NONE,
+    VMR_ARMODE_LETTER_BOX
+} VMR_ASPECT_RATIO_MODE;
+
+[
+    local,
+    object,
+    uuid(0eb1088c-4dcd-46f0-878f-39dae86a51b7),
+    helpstring("IVMRWindowlessControl interface"),
+    pointer_default(unique)
+]
+interface IVMRWindowlessControl : IUnknown
+{
+    HRESULT GetNativeVideoSize([out] LONG *width, [out] LONG *height, [out] LONG *ar_width, [out] LONG *ar_height);
+    HRESULT GetMinIdealVideoSize([out] LONG *width, [out] LONG *height);
+    HRESULT GetMaxIdealVideoSize([out] LONG *width, [out] LONG *height);
+    HRESULT SetVideoPosition([in] const RECT *src_rect, [in] const RECT *dst_rect);
+    HRESULT GetVideoPosition([out] RECT *src_rect, [out] RECT *dst_rect);
+    HRESULT GetAspectRatioMode([out] DWORD *mode);
+    HRESULT SetAspectRatioMode([in] DWORD mode);
+    HRESULT SetVideoClippingWindow([in] HWND hwnd);
+    HRESULT RepaintVideo([in] HWND hwnd, [in] HDC hdc);
+    HRESULT DisplayModeChanged();
+    HRESULT GetCurrentImage([out] BYTE **data);
+    HRESULT SetBorderColor([in] COLORREF border);
+    HRESULT GetBorderColor([out] COLORREF *border);
+    HRESULT SetColorKey([in] COLORREF key);
+    HRESULT GetColorKey([out] COLORREF *key);
+};
+
+typedef enum _VMRMixerPrefs
+{
+    MixerPref_NoDecimation = 0x0001,
+    MixerPref_DecimateOutput = 0x0002,
+    MixerPref_ARAdjustXorY = 0x0004,
+    MixerPref_DecimationReserved = 0x0008,
+    MixerPref_DecimateMask = 0x000f,
+
+    MixerPref_BiLinearFiltering = 0x0010,
+    MixerPref_PointFiltering = 0x0020,
+    MixerPref_FinteringMask = 0x00f0,
+
+    MixerPref_RenderTargetRGB = 0x0100,
+    MixerPref_RenderTargetYUV = 0x1000,
+    MixerPref_RenderTargetYUV420 = 0x0200,
+    MixerPref_RenderTargetYUV422 = 0x0400,
+    MixerPref_RenderTargetYUV444 = 0x0800,
+    MixerPref_RenderTargetReserved = 0xe000,
+    MixerPref_RenderTargetMask = 0xff00,
+
+    MixerPref_DynamicSwitchToBOB = 0x10000,
+    MixerPref_DynamicDecimateBy2 = 0x20000,
+    MixerPref_DynamicReserved = 0xc0000,
+    MixerPref_DynamicMask = 0xf0000
+} VMRMixerPrefs;
+
+typedef struct _NORMALIZEDRECT
+{
+    FLOAT left, top, right, bottom;
+} NORMALIZEDRECT;
+
+[
+    local,
+    object,
+    uuid(1c1a17b0-bed0-415d-974b-dc6696131599),
+    helpstring("IVMRMixerControl interface"),
+    pointer_default(unique)
+]
+interface IVMRMixerControl : IUnknown
+{
+    HRESULT SetAlpha([in] DWORD id, [in] FLOAT alpha);
+    HRESULT GetAlpha([in] DWORD id, [out] FLOAT *alpha);
+    HRESULT SetZOrder([in] DWORD id, [in] DWORD z);
+    HRESULT GetZOrder([in] DWORD id, [out] DWORD *z);
+    HRESULT SetOutputRect([in] DWORD id, [in] const NORMALIZEDRECT *rect);
+    HRESULT SetBackgroundClr([in] COLORREF background);
+    HRESULT GetBackgroundClr([out] COLORREF *background);
+    HRESULT SetMixingPrefs([in] DWORD prefs);
+    HRESULT GetMixingPrefs([out] DWORD *prefs);
+};
+
+typedef struct tagVMRGUID
+{
+    GUID *pGUID, GUID;
+} VMRGUID;
+
+#define VMRDEVICENAMELEN 32
+#define VMRDEVICEDESCRIPTIONLEN 256
+
+typedef struct tagVMRMONITORINFO
+{
+    VMRGUID guid;
+    RECT rcMonitor;
+    HMONITOR hMon;
+    DWORD dwFlags;
+    WCHAR szDevice[VMRDEVICENAMELEN];
+    WCHAR szDescription[VMRDEVICEDESCRIPTIONLEN];
+    LARGE_INTEGER liDriverVersion;
+    DWORD dwVendorId;
+    DWORD dwDeviceId;
+    DWORD dwSubSysId;
+    DWORD dwRevision;
+} VMRMONITORINFO;
+
+[
+    local,
+    object,
+    uuid(9cf0b1b6-fbaa-4b7f-88cf-cf1f130a0dce),
+    helpstring("IVMRMonitorConfig interface"),
+    pointer_default(unique)
+]
+interface IVMRMonitorConfig : IUnknown
+{
+    HRESULT SetMonitor([in] const VMRGUID *vmrguid);
+    HRESULT GetMonitor([out] VMRGUID *vmrguid);
+    HRESULT SetDefaultMonitor([in] const VMRGUID *vmrguid);
+    HRESULT GetDefaultMonitor([out] VMRGUID *vmrguid);
+    HRESULT GetAvailableMonitors([out, size_is(array_size)] VMRMONITORINFO *info, [in] DWORD array_size, [out] DWORD *retrieved);
+}
+
+typedef enum _VMRRenderPrefs
+{
+    RenderPrefs_RestrictToInitialMonitor = 0x00,
+    RenderPrefs_ForceOffScreen = 0x01,
+    RenderPrefs_ForceOverlays = 0x02,
+    RenderPrefs_AllowOverlays = 0x00,
+    RenderPrefs_AllowOffscreen = 0x00,
+    RenderPrefs_DoNotRenderColorKeyAndBorder = 0x08,
+    RenderPrefs_Reserved = 0x10,
+    RenderPrefs_PreferAGPMemWhenMixing = 0x20,
+    RenderPrefs_Mask = 0x3f
+} VMRRenderPrefs;
+
+typedef enum _VMRMode
+{
+    VMRMode_Windowed = 0x1,
+    VMRMode_Windowless = 0x2,
+    VMRMode_Renderless = 0x4,
+    VMRMode_Mask = 0x7
+} VMRMode;
+
+enum { MAX_NUMBER_OF_STREAMS = 16 };
+
+[
+    local,
+    object,
+    uuid(9e5530c5-7034-48b4-bb46-0b8a6efc8e36),
+    helpstring("IVMRFilterConfig interface"),
+    pointer_default(unique)
+]
+interface IVMRFilterConfig : IUnknown
+{
+    HRESULT SetImageCompositor([in] IVMRImageCompositor *compositor);
+    HRESULT SetNumberOfStreams([in] DWORD streams);
+    HRESULT GetNumberOfStreams([out] DWORD *streams);
+    HRESULT SetRenderingPrefs([in] DWORD prefs);
+    HRESULT GetRenderingPrefs([out] DWORD *prefs);
+    HRESULT SetRenderingMode([in] DWORD mode);
+    HRESULT GetRenderingMode([out] DWORD *mode);
+};
+
+[
+    local,
+    object,
+    uuid(ede80b5c-bad6-4623-b537-65586c9f8dfd),
+    helpstring("IVMRAspectRatioControl interface"),
+    pointer_default(unique)
+]
+interface IVMRAspectRatioControl : IUnknown
+{
+    HRESULT GetAspectRatioMode([out] DWORD *armode);
+    HRESULT SetAspectRatioMode([in] DWORD armode);
+};
+
+typedef enum _VMRDeinterlacePrefs
+{
+    DeinterlacePref_NextBest = 0x1,
+    DeinterlacePref_BOB = 0x2,
+    DeinterlacePref_Weave = 0x4,
+    DeinterlacePref_Mask = 0x7
+} VMRDeinterlacePrefs;
+
+typedef enum _VMRDeinterlaceTech
+{
+    DeinterlaceTech_Unknown = 0x00,
+    DeinterlaceTech_BOBLineReplicate = 0x01,
+    DeinterlaceTech_BOBVerticalStretch = 0x02,
+    DeinterlaceTech_MedianFiltering = 0x04,
+    DeinterlaceTech_EdgeFiltering = 0x08,
+    DeinterlaceTech_FieldAdaptive = 0x10,
+    DeinterlaceTech_PixelAdaptive = 0x20,
+    DeinterlaceTech_MotionVectorSteered = 0x80
+} VMRDeinterlaceTech;
+
+typedef struct _VMRFrequency
+{
+    DWORD dwNumerator, dwDenominator;
+} VMRFrequency;
+
+typedef struct _VMRVideoDesc
+{
+    DWORD dwSize;
+    DWORD dwSampleWidth;
+    DWORD dwSampleHeight;
+    BOOL SingleFieldPerSample;
+    DWORD dwFourCC;
+    VMRFrequency InputSampleFreq;
+    VMRFrequency OutputFrameFreq;
+} VMRVideoDesc;
+
+typedef struct _VMRDeinterlaceCaps
+{
+    DWORD dwSize;
+    DWORD dwNumPreviousOutputFrames;
+    DWORD dwNumForwardRefSamples;
+    DWORD dwNumBackwardRefSamples;
+    VMRDeinterlaceTech DeinterlaceTechnology;
+} VMRDeinterlaceCaps;
+
+[
+    local,
+    object,
+    uuid(bb057577-0db8-4e6a-87a7-1a8c9a505a0f),
+    helpstring("IVMRDeinterlaceControl interface"),
+    pointer_default(unique)
+]
+interface IVMRDeinterlaceControl : IUnknown
+{
+    HRESULT GetNumberOfDeinterlaceModes([in] VMRVideoDesc *desc, [in, out] DWORD *num_modes, [out] GUID *modes);
+    HRESULT GetDeinterlaceModeCaps([in] GUID *mode, [in] VMRVideoDesc *desc, [in, out] VMRDeinterlaceCaps *caps);
+    HRESULT GetDeinterlaceMode([in] DWORD id, [out] GUID *mode);
+    HRESULT SetDeinterlaceMode([in] DWORD id, [in] GUID *mode);
+    HRESULT GetDeinterlacePrefs([out] DWORD *prefs);
+    HRESULT SetDeinterlacePrefs([in] DWORD prefs);
+    HRESULT GetActualDeinterlaceMode([in] DWORD id, [out] GUID *mode);
+};
+
+typedef struct _VMRALPHABITMAP
+{
+    DWORD dwFlags;
+    HDC hdc;
+    IDirectDrawSurface7 *pDDS;
+    RECT rSrc;
+    RECT rDest;
+    FLOAT fAlpha;
+    COLORREF clrSrcKey;
+} VMRALPHABITMAP, *PVMRALPHABITMAP;
+
+cpp_quote("#define VMRBITMAP_DISABLE (0x01)")
+cpp_quote("#define VMRBITMAP_HDC (0x02)")
+cpp_quote("#define VMRBITMAP_ENTIREDDS (0x04)")
+cpp_quote("#define VMRBITMAP_SRCCOLORKEY (0x08)")
+cpp_quote("#define VMRBITMAP_SRCRECT (0x10)")
+
+[
+    local,
+    object,
+    uuid(1e673275-0257-40aa-af20-7c608d4a0428),
+    helpstring("IVMRMixerBitmap interface"),
+    pointer_default(unique)
+]
+interface IVMRMixerBitmap : IUnknown
+{
+    HRESULT SetAlphaBitmap([in] const VMRALPHABITMAP *params);
+    HRESULT UpdateAlphaBitmapParameters([in] VMRALPHABITMAP *params);
+    HRESULT GetAlphaBitmapParameters([out] VMRALPHABITMAP *params);
+};
+
+typedef struct _VMRVIDEOSTREAMINFO
+{
+    IDirectDrawSurface7 *pddsVideoSurface;
+    DWORD dwWidth;
+    DWORD dwHeight;
+    DWORD dwStrmID;
+    FLOAT fAlpha;
+    DDCOLORKEY ddClrKey;
+    NORMALIZEDRECT rNormal;
+} VMRVIDEOSTREAMINFO;
+
+[
+    local,
+    object,
+    uuid(7a4fb5af-479f-4074-bb40-ce6722e43c82),
+    helpstring("IVMRImageCompositor interface"),
+    pointer_default(unique)
+]
+interface IVMRImageCompositor : IUnknown
+{
+    HRESULT InitCompositionTarget([in] IUnknown *d3ddev, [in] IDirectDrawSurface7 *rendertarget);
+    HRESULT TermCompositionTarget([in] IUnknown *d3ddev, [in] IDirectDrawSurface7 *rendertarget);
+    HRESULT SetStreamMediaType([in] DWORD id, [in] AM_MEDIA_TYPE *pmt, [in] BOOL texture);
+    HRESULT CompositeImage([in] IUnknown *d3ddev, [in] IDirectDrawSurface7 *rendertarget,
+                           [in] AM_MEDIA_TYPE *pmt, [in] REFERENCE_TIME start, [in] REFERENCE_TIME stop,
+                           [in] DWORD backgrnd, [in] VMRVIDEOSTREAMINFO *info, [in] UINT streams);
+};
+
+[
+    local,
+    object,
+    uuid(058d1f11-2a54-4bef-bd54-df706626b727),
+    helpstring("IVMRVideoStreamControl interface"),
+    pointer_default(unique)
+]
+interface IVMRVideoStreamControl : IUnknown
+{
+    HRESULT SetColorKey([in] DDCOLORKEY *key);
+    HRESULT GetColorKey([out] DDCOLORKEY *key);
+    HRESULT SetStreamActiveState([in] BOOL active);
+    HRESULT GetStreamActiveState([out] BOOL *active);
+};
+
+[
+    local,
+    object,
+    uuid(9f3a1c85-8555-49ba-935f-be5b5b29d178),
+    helpstring("IVMRImagePresenterConfig interface"),
+    pointer_default(unique)
+]
+interface IVMRImagePresenterConfig : IUnknown
+{
+    HRESULT SetRenderingPrefs([in] DWORD prefs);
+    HRESULT GetRenderingPrefs([out] DWORD *prefs);
+};
+
+[
+    local,
+    object,
+    uuid(e6f7ce40-4673-44f1-8f77-5499d68cb4ea),
+    helpstring("IVMRImagePresenterExclModeConfig interface"),
+    pointer_default(unique)
+]
+interface IVMRImagePresenterExclModeConfig : IVMRImagePresenterConfig
+{
+    HRESULT SetXlcModeDDObjAndPrimarySurface([in] IDirectDraw7 *dddev, [in] IDirectDrawSurface7 *ddsurface);
+    HRESULT GetXlcModeDDObjAndPrimarySurface([out] IDirectDraw7 **dddev, [out] IDirectDrawSurface7 **ddsurface);
+};
+
+[
+    local,
+    object,
+    uuid(aac18c18-e186-46d2-825d-a1f8dc8e395a),
+    helpstring("IVPManager interface"),
+    pointer_default(unique)
+]
+interface IVPManager : IUnknown
+{
+    HRESULT SetVideoPortIndex([in] DWORD index);
+    HRESULT GetVideoPortIndex([out] DWORD *index);
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wfext.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wfext.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wfext.h	(revision 16410)
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2007 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __WINE_WFEXT_H
+#define __WINE_WFEXT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LONG WINAPI FMExtensionProc(HWND,WORD,LONG);
+LONG WINAPI FMExtensionProcW(HWND,WORD,LONG);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winbase.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winbase.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winbase.h	(revision 16410)
@@ -0,0 +1,2456 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINBASE_H
+#define __WINE_WINBASE_H
+
+#include <winerror.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef _KERNEL32_
+#define WINBASEAPI
+#else
+#define WINBASEAPI DECLSPEC_IMPORT
+#endif
+
+#ifdef _ADVAPI32_
+#define WINADVAPI
+#else
+#define WINADVAPI DECLSPEC_IMPORT
+#endif
+
+  /* Windows Exit Procedure flag values */
+#define	WEP_FREE_DLL        0
+#define	WEP_SYSTEM_EXIT     1
+
+typedef DWORD (CALLBACK *LPTHREAD_START_ROUTINE)(LPVOID);
+
+typedef VOID (WINAPI *PFIBER_START_ROUTINE)( LPVOID lpFiberParameter );
+typedef PFIBER_START_ROUTINE LPFIBER_START_ROUTINE;
+
+typedef RTL_CRITICAL_SECTION CRITICAL_SECTION;
+typedef PRTL_CRITICAL_SECTION PCRITICAL_SECTION;
+typedef PRTL_CRITICAL_SECTION LPCRITICAL_SECTION;
+
+typedef RTL_CRITICAL_SECTION_DEBUG CRITICAL_SECTION_DEBUG;
+typedef PRTL_CRITICAL_SECTION_DEBUG PCRITICAL_SECTION_DEBUG;
+typedef PRTL_CRITICAL_SECTION_DEBUG LPCRITICAL_SECTION_DEBUG;
+
+#define CRITICAL_SECTION_NO_DEBUG_INFO RTL_CRITICAL_SECTION_FLAG_NO_DEBUG_INFO
+
+typedef WAITORTIMERCALLBACKFUNC WAITORTIMERCALLBACK;
+
+#define EXCEPTION_DEBUG_EVENT       1
+#define CREATE_THREAD_DEBUG_EVENT   2
+#define CREATE_PROCESS_DEBUG_EVENT  3
+#define EXIT_THREAD_DEBUG_EVENT     4
+#define EXIT_PROCESS_DEBUG_EVENT    5
+#define LOAD_DLL_DEBUG_EVENT        6
+#define UNLOAD_DLL_DEBUG_EVENT      7
+#define OUTPUT_DEBUG_STRING_EVENT   8
+#define RIP_EVENT                   9
+
+typedef struct _EXCEPTION_DEBUG_INFO {
+    EXCEPTION_RECORD ExceptionRecord;
+    DWORD dwFirstChance;
+} EXCEPTION_DEBUG_INFO;
+
+typedef struct _CREATE_THREAD_DEBUG_INFO {
+    HANDLE hThread;
+    LPVOID lpThreadLocalBase;
+    LPTHREAD_START_ROUTINE lpStartAddress;
+} CREATE_THREAD_DEBUG_INFO;
+
+typedef struct _CREATE_PROCESS_DEBUG_INFO {
+    HANDLE hFile;
+    HANDLE hProcess;
+    HANDLE hThread;
+    LPVOID lpBaseOfImage;
+    DWORD dwDebugInfoFileOffset;
+    DWORD nDebugInfoSize;
+    LPVOID lpThreadLocalBase;
+    LPTHREAD_START_ROUTINE lpStartAddress;
+    LPVOID lpImageName;
+    WORD fUnicode;
+} CREATE_PROCESS_DEBUG_INFO;
+
+typedef struct _EXIT_THREAD_DEBUG_INFO {
+    DWORD dwExitCode;
+} EXIT_THREAD_DEBUG_INFO;
+
+typedef struct _EXIT_PROCESS_DEBUG_INFO {
+    DWORD dwExitCode;
+} EXIT_PROCESS_DEBUG_INFO;
+
+typedef struct _LOAD_DLL_DEBUG_INFO {
+    HANDLE hFile;
+    LPVOID   lpBaseOfDll;
+    DWORD    dwDebugInfoFileOffset;
+    DWORD    nDebugInfoSize;
+    LPVOID   lpImageName;
+    WORD     fUnicode;
+} LOAD_DLL_DEBUG_INFO;
+
+typedef struct _UNLOAD_DLL_DEBUG_INFO {
+    LPVOID lpBaseOfDll;
+} UNLOAD_DLL_DEBUG_INFO;
+
+typedef struct _OUTPUT_DEBUG_STRING_INFO {
+    LPSTR lpDebugStringData;
+    WORD  fUnicode;
+    WORD  nDebugStringLength;
+} OUTPUT_DEBUG_STRING_INFO;
+
+typedef struct _RIP_INFO {
+    DWORD dwError;
+    DWORD dwType;
+} RIP_INFO;
+
+typedef struct _DEBUG_EVENT {
+    DWORD dwDebugEventCode;
+    DWORD dwProcessId;
+    DWORD dwThreadId;
+    union {
+        EXCEPTION_DEBUG_INFO      Exception;
+        CREATE_THREAD_DEBUG_INFO  CreateThread;
+        CREATE_PROCESS_DEBUG_INFO CreateProcessInfo;
+        EXIT_THREAD_DEBUG_INFO    ExitThread;
+        EXIT_PROCESS_DEBUG_INFO   ExitProcess;
+        LOAD_DLL_DEBUG_INFO       LoadDll;
+        UNLOAD_DLL_DEBUG_INFO     UnloadDll;
+        OUTPUT_DEBUG_STRING_INFO  DebugString;
+        RIP_INFO                  RipInfo;
+    } u;
+} DEBUG_EVENT, *LPDEBUG_EVENT;
+
+typedef PCONTEXT LPCONTEXT;
+typedef PEXCEPTION_RECORD LPEXCEPTION_RECORD;
+typedef PEXCEPTION_POINTERS LPEXCEPTION_POINTERS;
+
+typedef LONG (CALLBACK *PTOP_LEVEL_EXCEPTION_FILTER)(PEXCEPTION_POINTERS);
+typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER;
+
+#define OFS_MAXPATHNAME 128
+typedef struct _OFSTRUCT
+{
+    BYTE cBytes;
+    BYTE fFixedDisk;
+    WORD nErrCode;
+    WORD Reserved1;
+    WORD Reserved2;
+    CHAR szPathName[OFS_MAXPATHNAME];
+} OFSTRUCT, *POFSTRUCT, *LPOFSTRUCT;
+
+#define OF_READ               0x0000
+#define OF_WRITE              0x0001
+#define OF_READWRITE          0x0002
+#define OF_SHARE_COMPAT       0x0000
+#define OF_SHARE_EXCLUSIVE    0x0010
+#define OF_SHARE_DENY_WRITE   0x0020
+#define OF_SHARE_DENY_READ    0x0030
+#define OF_SHARE_DENY_NONE    0x0040
+#define OF_PARSE              0x0100
+#define OF_DELETE             0x0200
+#define OF_VERIFY             0x0400   /* Used with OF_REOPEN */
+#define OF_SEARCH             0x0400   /* Used without OF_REOPEN */
+#define OF_CANCEL             0x0800
+#define OF_CREATE             0x1000
+#define OF_PROMPT             0x2000
+#define OF_EXIST              0x4000
+#define OF_REOPEN             0x8000
+
+/* SetErrorMode values */
+#define SEM_FAILCRITICALERRORS      0x0001
+#define SEM_NOGPFAULTERRORBOX       0x0002
+#define SEM_NOALIGNMENTFAULTEXCEPT  0x0004
+#define SEM_NOOPENFILEERRORBOX      0x8000
+
+/* CopyFileEx flags */
+#define COPY_FILE_FAIL_IF_EXISTS        0x00000001
+#define COPY_FILE_RESTARTABLE           0x00000002
+#define COPY_FILE_OPEN_SOURCE_FOR_WRITE 0x00000004
+
+/* return values for CopyProgressRoutine */
+#define PROGRESS_CONTINUE   0
+#define PROGRESS_CANCEL     1
+#define PROGRESS_STOP       2
+#define PROGRESS_QUIET      3
+
+/* reason codes for CopyProgressRoutine */
+#define CALLBACK_CHUNK_FINISHED 0
+#define CALLBACK_STREAM_SWITCH  1
+
+/* GetTempFileName() Flags */
+#define TF_FORCEDRIVE	        0x80
+
+#define DRIVE_UNKNOWN              0
+#define DRIVE_NO_ROOT_DIR          1
+#define DRIVE_REMOVABLE            2
+#define DRIVE_FIXED                3
+#define DRIVE_REMOTE               4
+/* Win32 additions */
+#define DRIVE_CDROM                5
+#define DRIVE_RAMDISK              6
+
+#define MAX_COMPUTERNAME_LENGTH    15
+
+/* The security attributes structure */
+typedef struct _SECURITY_ATTRIBUTES
+{
+    DWORD   nLength;
+    LPVOID  lpSecurityDescriptor;
+    BOOL  bInheritHandle;
+} SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
+
+#ifndef _FILETIME_
+#define _FILETIME_
+/* 64 bit number of 100 nanoseconds intervals since January 1, 1601 */
+typedef struct _FILETIME
+{
+#ifdef WORDS_BIGENDIAN
+  DWORD  dwHighDateTime;
+  DWORD  dwLowDateTime;
+#else
+  DWORD  dwLowDateTime;
+  DWORD  dwHighDateTime;
+#endif
+} FILETIME, *PFILETIME, *LPFILETIME;
+#endif /* _FILETIME_ */
+
+/* Find* structures */
+typedef struct _WIN32_FIND_DATAA
+{
+    DWORD     dwFileAttributes;
+    FILETIME  ftCreationTime;
+    FILETIME  ftLastAccessTime;
+    FILETIME  ftLastWriteTime;
+    DWORD     nFileSizeHigh;
+    DWORD     nFileSizeLow;
+    DWORD     dwReserved0;
+    DWORD     dwReserved1;
+    CHAR      cFileName[260];
+    CHAR      cAlternateFileName[14];
+} WIN32_FIND_DATAA, *PWIN32_FIND_DATAA, *LPWIN32_FIND_DATAA;
+
+typedef struct _WIN32_FIND_DATAW
+{
+    DWORD     dwFileAttributes;
+    FILETIME  ftCreationTime;
+    FILETIME  ftLastAccessTime;
+    FILETIME  ftLastWriteTime;
+    DWORD     nFileSizeHigh;
+    DWORD     nFileSizeLow;
+    DWORD     dwReserved0;
+    DWORD     dwReserved1;
+    WCHAR     cFileName[260];
+    WCHAR     cAlternateFileName[14];
+} WIN32_FIND_DATAW, *PWIN32_FIND_DATAW, *LPWIN32_FIND_DATAW;
+
+DECL_WINELIB_TYPE_AW(WIN32_FIND_DATA)
+DECL_WINELIB_TYPE_AW(PWIN32_FIND_DATA)
+DECL_WINELIB_TYPE_AW(LPWIN32_FIND_DATA)
+
+typedef enum _FINDEX_INFO_LEVELS
+{
+	FindExInfoStandard,
+	FindExInfoMaxInfoLevel
+} FINDEX_INFO_LEVELS;
+
+typedef enum _FINDEX_SEARCH_OPS
+{
+	FindExSearchNameMatch,
+	FindExSearchLimitToDirectories,
+	FindExSearchLimitToDevices,
+	FindExSearchMaxSearchOp
+} FINDEX_SEARCH_OPS;
+
+typedef struct _PROCESS_HEAP_ENTRY
+{
+    LPVOID lpData;
+    DWORD cbData;
+    BYTE cbOverhead;
+    BYTE iRegionIndex;
+    WORD wFlags;
+    union {
+        struct {
+            HANDLE hMem;
+            DWORD dwReserved[3];
+        } Block;
+        struct {
+            DWORD dwCommittedSize;
+            DWORD dwUnCommittedSize;
+            LPVOID lpFirstBlock;
+            LPVOID lpLastBlock;
+        } Region;
+    } DUMMYUNIONNAME;
+} PROCESS_HEAP_ENTRY, *PPROCESS_HEAP_ENTRY, *LPPROCESS_HEAP_ENTRY;
+
+#define PROCESS_HEAP_REGION                   0x0001
+#define PROCESS_HEAP_UNCOMMITTED_RANGE        0x0002
+#define PROCESS_HEAP_ENTRY_BUSY               0x0004
+#define PROCESS_HEAP_ENTRY_MOVEABLE           0x0010
+#define PROCESS_HEAP_ENTRY_DDESHARE           0x0020
+
+#define INVALID_HANDLE_VALUE     ((HANDLE)~0UL)
+#define INVALID_FILE_SIZE        ((DWORD)~0UL)
+#define INVALID_SET_FILE_POINTER ((DWORD)~0UL)
+#define INVALID_FILE_ATTRIBUTES  ((DWORD)~0UL)
+
+#define LOCKFILE_FAIL_IMMEDIATELY   1
+#define LOCKFILE_EXCLUSIVE_LOCK     2
+
+#define FLS_OUT_OF_INDEXES ((DWORD)~0UL)
+#define TLS_OUT_OF_INDEXES ((DWORD)~0UL)
+
+#define SHUTDOWN_NORETRY 1
+
+/* comm */
+
+#define CBR_110	0xFF10
+#define CBR_300	0xFF11
+#define CBR_600	0xFF12
+#define CBR_1200	0xFF13
+#define CBR_2400	0xFF14
+#define CBR_4800	0xFF15
+#define CBR_9600	0xFF16
+#define CBR_14400	0xFF17
+#define CBR_19200	0xFF18
+#define CBR_38400	0xFF1B
+#define CBR_56000	0xFF1F
+#define CBR_57600       0xFF20
+#define CBR_115200      0xFF21
+#define CBR_128000	0xFF23
+#define CBR_256000	0xFF27
+
+#define NOPARITY	0
+#define ODDPARITY	1
+#define EVENPARITY	2
+#define MARKPARITY	3
+#define SPACEPARITY	4
+#define ONESTOPBIT	0
+#define ONE5STOPBITS	1
+#define TWOSTOPBITS	2
+
+#define IGNORE		0
+#define INFINITE      0xFFFFFFFF
+
+#define CE_RXOVER	0x0001
+#define CE_OVERRUN	0x0002
+#define CE_RXPARITY	0x0004
+#define CE_FRAME	0x0008
+#define CE_BREAK	0x0010
+#define CE_CTSTO	0x0020
+#define CE_DSRTO	0x0040
+#define CE_RLSDTO	0x0080
+#define CE_TXFULL	0x0100
+#define CE_PTO		0x0200
+#define CE_IOE		0x0400
+#define CE_DNS		0x0800
+#define CE_OOP		0x1000
+#define CE_MODE	0x8000
+
+#define IE_BADID	-1
+#define IE_OPEN	-2
+#define IE_NOPEN	-3
+#define IE_MEMORY	-4
+#define IE_DEFAULT	-5
+#define IE_HARDWARE	-10
+#define IE_BYTESIZE	-11
+#define IE_BAUDRATE	-12
+
+#define EV_RXCHAR    0x0001
+#define EV_RXFLAG    0x0002
+#define EV_TXEMPTY   0x0004
+#define EV_CTS       0x0008
+#define EV_DSR       0x0010
+#define EV_RLSD      0x0020
+#define EV_BREAK     0x0040
+#define EV_ERR       0x0080
+#define EV_RING      0x0100
+#define EV_PERR      0x0200
+#define EV_RX80FULL  0x0400
+#define EV_EVENT1    0x0800
+#define EV_EVENT2    0x1000
+
+#define SETXOFF	1
+#define SETXON		2
+#define SETRTS		3
+#define CLRRTS		4
+#define SETDTR		5
+#define CLRDTR		6
+#define RESETDEV	7
+#define SETBREAK	8
+#define CLRBREAK	9
+
+/* Purge functions for Comm Port */
+#define PURGE_TXABORT       0x0001  /* Kill the pending/current writes to the
+				       comm port */
+#define PURGE_RXABORT       0x0002  /*Kill the pending/current reads to
+				     the comm port */
+#define PURGE_TXCLEAR       0x0004  /* Kill the transmit queue if there*/
+#define PURGE_RXCLEAR       0x0008  /* Kill the typeahead buffer if there*/
+
+
+/* Modem Status Flags */
+#define MS_CTS_ON           ((DWORD)0x0010)
+#define MS_DSR_ON           ((DWORD)0x0020)
+#define MS_RING_ON          ((DWORD)0x0040)
+#define MS_RLSD_ON          ((DWORD)0x0080)
+
+#define	RTS_CONTROL_DISABLE	0
+#define	RTS_CONTROL_ENABLE	1
+#define	RTS_CONTROL_HANDSHAKE	2
+#define	RTS_CONTROL_TOGGLE	3
+
+#define	DTR_CONTROL_DISABLE	0
+#define	DTR_CONTROL_ENABLE	1
+#define	DTR_CONTROL_HANDSHAKE	2
+
+
+#define LMEM_FIXED          0
+#define LMEM_MOVEABLE       0x0002
+#define LMEM_NOCOMPACT      0x0010
+#define LMEM_NODISCARD      0x0020
+#define LMEM_ZEROINIT       0x0040
+#define LMEM_MODIFY         0x0080
+#define LMEM_DISCARDABLE    0x0F00
+#define LMEM_DISCARDED      0x4000
+#define LMEM_INVALID_HANDLE 0x8000
+#define LMEM_LOCKCOUNT      0x00FF
+
+#define LPTR (LMEM_FIXED | LMEM_ZEROINIT)
+#define LHND (LMEM_MOVEABLE | LMEM_ZEROINIT)
+
+#define NONZEROLHND         (LMEM_MOVEABLE)
+#define NONZEROLPTR         (LMEM_FIXED)
+
+#define LocalDiscard(h)     (LocalReAlloc((h),0,LMEM_MOVEABLE))
+
+#define GMEM_FIXED          0x0000
+#define GMEM_MOVEABLE       0x0002
+#define GMEM_NOCOMPACT      0x0010
+#define GMEM_NODISCARD      0x0020
+#define GMEM_ZEROINIT       0x0040
+#define GMEM_MODIFY         0x0080
+#define GMEM_DISCARDABLE    0x0100
+#define GMEM_NOT_BANKED     0x1000
+#define GMEM_SHARE          0x2000
+#define GMEM_DDESHARE       0x2000
+#define GMEM_NOTIFY         0x4000
+#define GMEM_LOWER          GMEM_NOT_BANKED
+#define GMEM_DISCARDED      0x4000
+#define GMEM_LOCKCOUNT      0x00ff
+#define GMEM_INVALID_HANDLE 0x8000
+
+#define GHND                (GMEM_MOVEABLE | GMEM_ZEROINIT)
+#define GPTR                (GMEM_FIXED | GMEM_ZEROINIT)
+
+#define GlobalLRUNewest(h)  ((HANDLE)(h))
+#define GlobalLRUOldest(h)  ((HANDLE)(h))
+#define GlobalDiscard(h)    (GlobalReAlloc((h),0,GMEM_MOVEABLE))
+
+#define INVALID_ATOM        ((ATOM)0)
+#define MAXINTATOM          0xc000
+#ifdef WINE_NO_UNICODE_MACROS /* force using a cast */
+#define MAKEINTATOM(atom)   ((ULONG_PTR)((WORD)(atom)))
+#else
+#define MAKEINTATOM(atom)   ((LPTSTR)((ULONG_PTR)((WORD)(atom))))
+#endif
+
+typedef struct tagMEMORYSTATUS
+{
+    DWORD    dwLength;
+    DWORD    dwMemoryLoad;
+    SIZE_T   dwTotalPhys;
+    SIZE_T   dwAvailPhys;
+    SIZE_T   dwTotalPageFile;
+    SIZE_T   dwAvailPageFile;
+    SIZE_T   dwTotalVirtual;
+    SIZE_T   dwAvailVirtual;
+} MEMORYSTATUS, *LPMEMORYSTATUS;
+
+#include <pshpack8.h>
+typedef struct tagMEMORYSTATUSEX {
+  DWORD dwLength;
+  DWORD dwMemoryLoad;
+  DWORDLONG DECLSPEC_ALIGN(8) ullTotalPhys;
+  DWORDLONG DECLSPEC_ALIGN(8) ullAvailPhys;
+  DWORDLONG DECLSPEC_ALIGN(8) ullTotalPageFile;
+  DWORDLONG DECLSPEC_ALIGN(8) ullAvailPageFile;
+  DWORDLONG DECLSPEC_ALIGN(8) ullTotalVirtual;
+  DWORDLONG DECLSPEC_ALIGN(8) ullAvailVirtual;
+  DWORDLONG DECLSPEC_ALIGN(8) ullAvailExtendedVirtual;
+} MEMORYSTATUSEX, *LPMEMORYSTATUSEX;
+#include <poppack.h>
+
+
+#ifndef _SYSTEMTIME_
+#define _SYSTEMTIME_
+typedef struct _SYSTEMTIME{
+        WORD wYear;
+        WORD wMonth;
+        WORD wDayOfWeek;
+        WORD wDay;
+        WORD wHour;
+        WORD wMinute;
+        WORD wSecond;
+        WORD wMilliseconds;
+} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
+#endif /* _SYSTEMTIME_ */
+
+/* The 'overlapped' data structure used by async I/O functions.
+ */
+typedef struct _OVERLAPPED {
+#ifdef WORDS_BIGENDIAN
+        ULONG_PTR InternalHigh;
+        ULONG_PTR Internal;
+#else
+        ULONG_PTR Internal;
+        ULONG_PTR InternalHigh;
+#endif
+        union {
+            struct {
+#ifdef WORDS_BIGENDIAN
+                DWORD OffsetHigh;
+                DWORD Offset;
+#else
+                DWORD Offset;
+                DWORD OffsetHigh;
+#endif
+            } DUMMYSTRUCTNAME;
+            PVOID Pointer;
+        } DUMMYUNIONNAME;
+        HANDLE hEvent;
+} OVERLAPPED, *LPOVERLAPPED;
+
+typedef VOID (CALLBACK *LPOVERLAPPED_COMPLETION_ROUTINE)(DWORD,DWORD,LPOVERLAPPED);
+
+/* Process startup information.
+ */
+
+/* STARTUPINFO.dwFlags */
+#define	STARTF_USESHOWWINDOW	0x00000001
+#define	STARTF_USESIZE		0x00000002
+#define	STARTF_USEPOSITION	0x00000004
+#define	STARTF_USECOUNTCHARS	0x00000008
+#define	STARTF_USEFILLATTRIBUTE	0x00000010
+#define	STARTF_RUNFULLSCREEN	0x00000020
+#define	STARTF_FORCEONFEEDBACK	0x00000040
+#define	STARTF_FORCEOFFFEEDBACK	0x00000080
+#define	STARTF_USESTDHANDLES	0x00000100
+#define	STARTF_USEHOTKEY	0x00000200
+
+typedef struct _STARTUPINFOA{
+        DWORD cb;		/* 00: size of struct */
+        LPSTR lpReserved;	/* 04: */
+        LPSTR lpDesktop;	/* 08: */
+        LPSTR lpTitle;		/* 0c: */
+        DWORD dwX;		/* 10: */
+        DWORD dwY;		/* 14: */
+        DWORD dwXSize;		/* 18: */
+        DWORD dwYSize;		/* 1c: */
+        DWORD dwXCountChars;	/* 20: */
+        DWORD dwYCountChars;	/* 24: */
+        DWORD dwFillAttribute;	/* 28: */
+        DWORD dwFlags;		/* 2c: */
+        WORD wShowWindow;	/* 30: */
+        WORD cbReserved2;	/* 32: */
+        BYTE *lpReserved2;	/* 34: */
+        HANDLE hStdInput;	/* 38: */
+        HANDLE hStdOutput;	/* 3c: */
+        HANDLE hStdError;	/* 40: */
+} STARTUPINFOA, *LPSTARTUPINFOA;
+
+typedef struct _STARTUPINFOW{
+        DWORD cb;
+        LPWSTR lpReserved;
+        LPWSTR lpDesktop;
+        LPWSTR lpTitle;
+        DWORD dwX;
+        DWORD dwY;
+        DWORD dwXSize;
+        DWORD dwYSize;
+        DWORD dwXCountChars;
+        DWORD dwYCountChars;
+        DWORD dwFillAttribute;
+        DWORD dwFlags;
+        WORD wShowWindow;
+        WORD cbReserved2;
+        BYTE *lpReserved2;
+        HANDLE hStdInput;
+        HANDLE hStdOutput;
+        HANDLE hStdError;
+} STARTUPINFOW, *LPSTARTUPINFOW;
+
+DECL_WINELIB_TYPE_AW(STARTUPINFO)
+DECL_WINELIB_TYPE_AW(LPSTARTUPINFO)
+
+typedef struct _PROCESS_INFORMATION{
+	HANDLE	hProcess;
+	HANDLE	hThread;
+	DWORD		dwProcessId;
+	DWORD		dwThreadId;
+} PROCESS_INFORMATION, *PPROCESS_INFORMATION, *LPPROCESS_INFORMATION;
+
+typedef struct _TIME_DYNAMIC_ZONE_INFORMATION
+{
+    LONG Bias;
+    WCHAR StandardName[32];
+    SYSTEMTIME StandardDate;
+    LONG StandardBias;
+    WCHAR DaylightName[32];
+    SYSTEMTIME DaylightDate;
+    LONG DaylightBias;
+    WCHAR TimeZoneKeyName[128];
+    BOOLEAN DynamicDaylightTimeDisabled;
+} DYNAMIC_TIME_ZONE_INFORMATION, *PDYNAMIC_TIME_ZONE_INFORMATION;
+
+typedef struct _TIME_ZONE_INFORMATION{
+        LONG Bias;
+        WCHAR StandardName[32];
+        SYSTEMTIME StandardDate;
+        LONG StandardBias;
+        WCHAR DaylightName[32];
+        SYSTEMTIME DaylightDate;
+        LONG DaylightBias;
+} TIME_ZONE_INFORMATION, *PTIME_ZONE_INFORMATION, *LPTIME_ZONE_INFORMATION;
+
+#define TIME_ZONE_ID_INVALID	((DWORD)0xFFFFFFFF)
+#define TIME_ZONE_ID_UNKNOWN    0
+#define TIME_ZONE_ID_STANDARD   1
+#define TIME_ZONE_ID_DAYLIGHT   2
+
+/* CreateProcess: dwCreationFlag values
+ */
+#define DEBUG_PROCESS               0x00000001
+#define DEBUG_ONLY_THIS_PROCESS     0x00000002
+#define CREATE_SUSPENDED            0x00000004
+#define DETACHED_PROCESS            0x00000008
+#define CREATE_NEW_CONSOLE          0x00000010
+#define NORMAL_PRIORITY_CLASS       0x00000020
+#define IDLE_PRIORITY_CLASS         0x00000040
+#define HIGH_PRIORITY_CLASS         0x00000080
+#define REALTIME_PRIORITY_CLASS     0x00000100
+#define BELOW_NORMAL_PRIORITY_CLASS 0x00004000
+#define ABOVE_NORMAL_PRIORITY_CLASS 0x00008000
+#define CREATE_NEW_PROCESS_GROUP    0x00000200
+#define CREATE_UNICODE_ENVIRONMENT  0x00000400
+#define CREATE_SEPARATE_WOW_VDM     0x00000800
+#define CREATE_SHARED_WOW_VDM       0x00001000
+#define STACK_SIZE_PARAM_IS_A_RESERVATION 0x00010000
+#define CREATE_DEFAULT_ERROR_MODE   0x04000000
+#define CREATE_NO_WINDOW            0x08000000
+#define PROFILE_USER                0x10000000
+#define PROFILE_KERNEL              0x20000000
+#define PROFILE_SERVER              0x40000000
+
+
+/* File object type definitions
+ */
+#define FILE_TYPE_UNKNOWN       0
+#define FILE_TYPE_DISK          1
+#define FILE_TYPE_CHAR          2
+#define FILE_TYPE_PIPE          3
+#define FILE_TYPE_REMOTE        32768
+
+/* File encryption status
+ */
+#define FILE_ENCRYPTABLE         0
+#define FILE_IS_ENCRYPTED        1
+#define FILE_SYSTEM_ATTR         2
+#define FILE_ROOT_DIR            3
+#define FILE_SYSTEM_DIR          4
+#define FILE_UNKNOWN             5
+#define FILE_SYSTEM_NOT_SUPPORT  6
+#define FILE_USER_DISALLOWED     7
+#define FILE_READ_ONLY           8
+#define FILE_DIR_DISALOWED       9
+
+/* File creation flags
+ */
+#define FILE_FLAG_WRITE_THROUGH    0x80000000UL
+#define FILE_FLAG_OVERLAPPED 	   0x40000000L
+#define FILE_FLAG_NO_BUFFERING     0x20000000L
+#define FILE_FLAG_RANDOM_ACCESS    0x10000000L
+#define FILE_FLAG_SEQUENTIAL_SCAN  0x08000000L
+#define FILE_FLAG_DELETE_ON_CLOSE  0x04000000L
+#define FILE_FLAG_BACKUP_SEMANTICS 0x02000000L
+#define FILE_FLAG_POSIX_SEMANTICS  0x01000000L
+#define FILE_FLAG_OPEN_REPARSE_POINT 0x00200000L
+#define CREATE_NEW              1
+#define CREATE_ALWAYS           2
+#define OPEN_EXISTING           3
+#define OPEN_ALWAYS             4
+#define TRUNCATE_EXISTING       5
+
+/* Standard handle identifiers
+ */
+#define STD_INPUT_HANDLE        ((DWORD) -10)
+#define STD_OUTPUT_HANDLE       ((DWORD) -11)
+#define STD_ERROR_HANDLE        ((DWORD) -12)
+
+typedef struct _BY_HANDLE_FILE_INFORMATION
+{
+  DWORD dwFileAttributes;
+  FILETIME ftCreationTime;
+  FILETIME ftLastAccessTime;
+  FILETIME ftLastWriteTime;
+  DWORD dwVolumeSerialNumber;
+  DWORD nFileSizeHigh;
+  DWORD nFileSizeLow;
+  DWORD nNumberOfLinks;
+  DWORD nFileIndexHigh;
+  DWORD nFileIndexLow;
+} BY_HANDLE_FILE_INFORMATION, *PBY_HANDLE_FILE_INFORMATION, *LPBY_HANDLE_FILE_INFORMATION ;
+
+#define PIPE_ACCESS_INBOUND  1
+#define PIPE_ACCESS_OUTBOUND 2
+#define PIPE_ACCESS_DUPLEX   3
+
+#define PIPE_CLIENT_END       0
+#define PIPE_SERVER_END       1
+#define PIPE_READMODE_BYTE    0
+#define PIPE_READMODE_MESSAGE 2
+#define PIPE_TYPE_BYTE        0
+#define PIPE_TYPE_MESSAGE     4
+
+#define PIPE_WAIT   0
+#define PIPE_NOWAIT 1
+
+#define PIPE_UNLIMITED_INSTANCES 255
+
+#define NMPWAIT_WAIT_FOREVER		0xffffffff
+#define NMPWAIT_NOWAIT			0x00000001
+#define NMPWAIT_USE_DEFAULT_WAIT	0x00000000
+
+/* Security flags for dwFlagsAndAttributes of CreateFile */
+#define SECURITY_ANONYMOUS          (SecurityAnonymous << 16)
+#define SECURITY_IDENTIFICATION     (SecurityIdentification << 16)
+#define SECURITY_IMPERSONATION      (SecurityImpersonation << 16)
+#define SECURITY_DELEGATION         (SecurityDelegation << 16)
+
+#define SECURITY_CONTEXT_TRACKING   0x00040000
+#define SECURITY_EFFECTIVE_ONLY     0x00080000
+
+#define SECURITY_SQOS_PRESENT       0x00100000
+#define SECURITY_VALID_SQOS_FLAGS   0x001f0000
+
+typedef struct _SYSTEM_POWER_STATUS
+{
+  BYTE    ACLineStatus;
+  BYTE    BatteryFlag;
+  BYTE    BatteryLifePercent;
+  BYTE    Reserved1;
+  DWORD   BatteryLifeTime;
+  DWORD   BatteryFullLifeTime;
+} SYSTEM_POWER_STATUS, *LPSYSTEM_POWER_STATUS;
+
+
+typedef struct _SYSTEM_INFO
+{
+    union {
+	DWORD	dwOemId; /* Obsolete field - do not use */
+	struct {
+		WORD wProcessorArchitecture;
+		WORD wReserved;
+	} DUMMYSTRUCTNAME;
+    } DUMMYUNIONNAME;
+    DWORD	dwPageSize;
+    LPVOID	lpMinimumApplicationAddress;
+    LPVOID	lpMaximumApplicationAddress;
+    DWORD	dwActiveProcessorMask;
+    DWORD	dwNumberOfProcessors;
+    DWORD	dwProcessorType;
+    DWORD	dwAllocationGranularity;
+    WORD	wProcessorLevel;
+    WORD	wProcessorRevision;
+} SYSTEM_INFO, *LPSYSTEM_INFO;
+
+typedef BOOL (CALLBACK *ENUMRESTYPEPROCA)(HMODULE,LPSTR,LONG_PTR);
+typedef BOOL (CALLBACK *ENUMRESTYPEPROCW)(HMODULE,LPWSTR,LONG_PTR);
+typedef BOOL (CALLBACK *ENUMRESNAMEPROCA)(HMODULE,LPCSTR,LPSTR,LONG_PTR);
+typedef BOOL (CALLBACK *ENUMRESNAMEPROCW)(HMODULE,LPCWSTR,LPWSTR,LONG_PTR);
+typedef BOOL (CALLBACK *ENUMRESLANGPROCA)(HMODULE,LPCSTR,LPCSTR,WORD,LONG_PTR);
+typedef BOOL (CALLBACK *ENUMRESLANGPROCW)(HMODULE,LPCWSTR,LPCWSTR,WORD,LONG_PTR);
+
+DECL_WINELIB_TYPE_AW(ENUMRESTYPEPROC)
+DECL_WINELIB_TYPE_AW(ENUMRESNAMEPROC)
+DECL_WINELIB_TYPE_AW(ENUMRESLANGPROC)
+
+/* flags that can be passed to LoadLibraryEx */
+#define	DONT_RESOLVE_DLL_REFERENCES	0x00000001
+#define	LOAD_LIBRARY_AS_DATAFILE	0x00000002
+#define	LOAD_WITH_ALTERED_SEARCH_PATH	0x00000008
+
+#define GET_MODULE_HANDLE_EX_FLAG_PIN                 1
+#define GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT  2
+#define GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS        4
+
+typedef PLDT_ENTRY LPLDT_ENTRY;
+
+typedef enum _GET_FILEEX_INFO_LEVELS {
+    GetFileExInfoStandard
+} GET_FILEEX_INFO_LEVELS;
+
+typedef struct _WIN32_FILE_ATTRIBUTES_DATA {
+    DWORD    dwFileAttributes;
+    FILETIME ftCreationTime;
+    FILETIME ftLastAccessTime;
+    FILETIME ftLastWriteTime;
+    DWORD    nFileSizeHigh;
+    DWORD    nFileSizeLow;
+} WIN32_FILE_ATTRIBUTE_DATA, *LPWIN32_FILE_ATTRIBUTE_DATA;
+
+/*
+ * This one seems to be a Win32 only definition. It also is defined with
+ * WINAPI instead of CALLBACK in the windows headers.
+ */
+typedef DWORD (CALLBACK *LPPROGRESS_ROUTINE)(LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER,
+                                           LARGE_INTEGER, DWORD, DWORD, HANDLE,
+                                           HANDLE, LPVOID);
+
+#define CREATE_EVENT_MANUAL_RESET 1
+#define CREATE_EVENT_INITIAL_SET  2
+
+#define CREATE_MUTEX_INITIAL_OWNER 1
+
+#define CREATE_WAITABLE_TIMER_MANUAL_RESET 1
+
+#define WAIT_FAILED		0xffffffff
+#define WAIT_OBJECT_0		0
+#define WAIT_ABANDONED		STATUS_ABANDONED_WAIT_0
+#define WAIT_ABANDONED_0	STATUS_ABANDONED_WAIT_0
+#define WAIT_IO_COMPLETION	STATUS_USER_APC
+#define WAIT_TIMEOUT		STATUS_TIMEOUT
+#define STILL_ACTIVE            STATUS_PENDING
+
+#define FILE_BEGIN              0
+#define FILE_CURRENT            1
+#define FILE_END                2
+
+#define FILE_MAP_COPY                   0x00000001
+#define FILE_MAP_WRITE                  0x00000002
+#define FILE_MAP_READ                   0x00000004
+#define FILE_MAP_ALL_ACCESS             0x000f001f
+#define FILE_MAP_EXECUTE                0x00000020
+
+#define MOVEFILE_REPLACE_EXISTING       0x00000001
+#define MOVEFILE_COPY_ALLOWED           0x00000002
+#define MOVEFILE_DELAY_UNTIL_REBOOT     0x00000004
+#define MOVEFILE_WRITE_THROUGH          0x00000008
+
+#define REPLACEFILE_WRITE_THROUGH       0x00000001
+#define REPLACEFILE_IGNORE_MERGE_ERRORS 0x00000002
+
+#define FS_CASE_SENSITIVE               FILE_CASE_SENSITIVE_SEARCH
+#define FS_CASE_IS_PRESERVED            FILE_CASE_PRESERVED_NAMES
+#define FS_UNICODE_STORED_ON_DISK       FILE_UNICODE_ON_DISK
+#define FS_PERSISTENT_ACLS              FILE_PERSISTENT_ACLS
+#define FS_VOL_IS_COMPRESSED            FILE_VOLUME_IS_COMPRESSED
+#define FS_FILE_COMPRESSION             FILE_FILE_COMPRESSION
+
+#define EXCEPTION_ACCESS_VIOLATION          STATUS_ACCESS_VIOLATION
+#define EXCEPTION_DATATYPE_MISALIGNMENT     STATUS_DATATYPE_MISALIGNMENT
+#define EXCEPTION_BREAKPOINT                STATUS_BREAKPOINT
+#define EXCEPTION_SINGLE_STEP               STATUS_SINGLE_STEP
+#define EXCEPTION_ARRAY_BOUNDS_EXCEEDED     STATUS_ARRAY_BOUNDS_EXCEEDED
+#define EXCEPTION_FLT_DENORMAL_OPERAND      STATUS_FLOAT_DENORMAL_OPERAND
+#define EXCEPTION_FLT_DIVIDE_BY_ZERO        STATUS_FLOAT_DIVIDE_BY_ZERO
+#define EXCEPTION_FLT_INEXACT_RESULT        STATUS_FLOAT_INEXACT_RESULT
+#define EXCEPTION_FLT_INVALID_OPERATION     STATUS_FLOAT_INVALID_OPERATION
+#define EXCEPTION_FLT_OVERFLOW              STATUS_FLOAT_OVERFLOW
+#define EXCEPTION_FLT_STACK_CHECK           STATUS_FLOAT_STACK_CHECK
+#define EXCEPTION_FLT_UNDERFLOW             STATUS_FLOAT_UNDERFLOW
+#define EXCEPTION_INT_DIVIDE_BY_ZERO        STATUS_INTEGER_DIVIDE_BY_ZERO
+#define EXCEPTION_INT_OVERFLOW              STATUS_INTEGER_OVERFLOW
+#define EXCEPTION_PRIV_INSTRUCTION          STATUS_PRIVILEGED_INSTRUCTION
+#define EXCEPTION_IN_PAGE_ERROR             STATUS_IN_PAGE_ERROR
+#define EXCEPTION_ILLEGAL_INSTRUCTION       STATUS_ILLEGAL_INSTRUCTION
+#define EXCEPTION_NONCONTINUABLE_EXCEPTION  STATUS_NONCONTINUABLE_EXCEPTION
+#define EXCEPTION_STACK_OVERFLOW            STATUS_STACK_OVERFLOW
+#define EXCEPTION_INVALID_DISPOSITION       STATUS_INVALID_DISPOSITION
+#define EXCEPTION_GUARD_PAGE                STATUS_GUARD_PAGE_VIOLATION
+#define EXCEPTION_INVALID_HANDLE            STATUS_INVALID_HANDLE
+#define CONTROL_C_EXIT                      STATUS_CONTROL_C_EXIT
+
+#define HANDLE_FLAG_INHERIT             0x00000001
+#define HANDLE_FLAG_PROTECT_FROM_CLOSE  0x00000002
+
+#define HINSTANCE_ERROR 32
+
+#define THREAD_PRIORITY_LOWEST          THREAD_BASE_PRIORITY_MIN
+#define THREAD_PRIORITY_BELOW_NORMAL    (THREAD_PRIORITY_LOWEST+1)
+#define THREAD_PRIORITY_NORMAL          0
+#define THREAD_PRIORITY_HIGHEST         THREAD_BASE_PRIORITY_MAX
+#define THREAD_PRIORITY_ABOVE_NORMAL    (THREAD_PRIORITY_HIGHEST-1)
+#define THREAD_PRIORITY_ERROR_RETURN    (0x7fffffff)
+#define THREAD_PRIORITY_TIME_CRITICAL   THREAD_BASE_PRIORITY_LOWRT
+#define THREAD_PRIORITY_IDLE            THREAD_BASE_PRIORITY_IDLE
+
+/* flags to FormatMessage */
+#define	FORMAT_MESSAGE_ALLOCATE_BUFFER	0x00000100
+#define	FORMAT_MESSAGE_IGNORE_INSERTS	0x00000200
+#define	FORMAT_MESSAGE_FROM_STRING	0x00000400
+#define	FORMAT_MESSAGE_FROM_HMODULE	0x00000800
+#define	FORMAT_MESSAGE_FROM_SYSTEM	0x00001000
+#define	FORMAT_MESSAGE_ARGUMENT_ARRAY	0x00002000
+#define	FORMAT_MESSAGE_MAX_WIDTH_MASK	0x000000FF
+
+/* flags to ACTCTX[AW] */
+#define ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID  (0x00000001)
+#define ACTCTX_FLAG_LANGID_VALID                  (0x00000002)
+#define ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID      (0x00000004)
+#define ACTCTX_FLAG_RESOURCE_NAME_VALID           (0x00000008)
+#define ACTCTX_FLAG_SET_PROCESS_DEFAULT           (0x00000010)
+#define ACTCTX_FLAG_APPLICATION_NAME_VALID        (0x00000020)
+#define ACTCTX_FLAG_SOURCE_IS_ASSEMBLYREF         (0x00000040)
+#define ACTCTX_FLAG_HMODULE_VALID                 (0x00000080)
+
+/* flags to DeactiveActCtx */
+#define DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION  (0x00000001)
+
+/* flags to FindActCtxSection{Guid,String[AW]} */
+#define FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX            (0x00000001)
+#define FIND_ACTCTX_SECTION_KEY_RETURN_FLAGS              (0x00000002)
+#define FIND_ACTCTX_SECTION_KEY_RETURN_ASSEMBLY_METADATA  (0x00000004)
+
+/* flags to QueryActCtxW */
+#define QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX  (0x00000004)
+#define QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE  (0x00000008)
+#define QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS  (0x00000010)
+#define QUERY_ACTCTX_FLAG_NO_ADDREF          (0x80000000)
+
+typedef struct tagACTCTXA {
+    ULONG   cbSize;
+    DWORD   dwFlags;
+    LPCSTR  lpSource;
+    USHORT  wProcessorArchitecture;
+    LANGID  wLangId;
+    LPCSTR  lpAssemblyDirectory;
+    LPCSTR  lpResourceName;
+    LPCSTR  lpApplicationName;
+    HMODULE hModule;
+} ACTCTXA, *PACTCTXA;
+
+typedef struct tagACTCTXW {
+    ULONG   cbSize;
+    DWORD   dwFlags;
+    LPCWSTR lpSource;
+    USHORT  wProcessorArchitecture;
+    LANGID  wLangId;
+    LPCWSTR lpAssemblyDirectory;
+    LPCWSTR lpResourceName;
+    LPCWSTR lpApplicationName;
+    HMODULE hModule;
+} ACTCTXW, *PACTCTXW;
+
+DECL_WINELIB_TYPE_AW(ACTCTX)
+DECL_WINELIB_TYPE_AW(PACTCTX)
+
+typedef const ACTCTXA *PCACTCTXA;
+typedef const ACTCTXW *PCACTCTXW;
+DECL_WINELIB_TYPE_AW(PCACTCTX)
+
+typedef struct tagACTCTX_SECTION_KEYED_DATA_2600 {
+    ULONG  cbSize;
+    ULONG  ulDataFormatVersion;
+    PVOID  lpData;
+    ULONG  ulLength;
+    PVOID  lpSectionGlobalData;
+    ULONG  ulSectionGlobalDataLength;
+    PVOID  lpSectionBase;
+    ULONG  ulSectionTotalLength;
+    HANDLE hActCtx;
+    ULONG  ulAssemblyRosterIndex;
+} ACTCTX_SECTION_KEYED_DATA_2600, *PACTCTX_SECTION_KEYED_DATA_2600;
+typedef const ACTCTX_SECTION_KEYED_DATA_2600 *PCACTCTX_SECTION_KEYED_DATA_2600;
+
+typedef struct tagACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA {
+    PVOID lpInformation;
+    PVOID lpSectionBase;
+    ULONG ulSectionLength;
+    PVOID lpSectionGlobalDataBase;
+    ULONG ulSectionGlobalDataLength;
+} ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA, *PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
+typedef const ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA *PCACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
+
+typedef struct tagACTCTX_SECTION_KEYED_DATA {
+    ULONG  cbSize;
+    ULONG  ulDataFormatVersion;
+    PVOID  lpData;
+    ULONG  ulLength;
+    PVOID  lpSectionGlobalData;
+    ULONG  ulSectionGlobalDataLength;
+    PVOID  lpSectionBase;
+    ULONG  ulSectionTotalLength;
+    HANDLE hActCtx;
+    ULONG  ulAssemblyRosterIndex;
+
+    /* Non 2600 extra fields */
+    ULONG ulFlags;
+    ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA AssemblyMetadata;
+} ACTCTX_SECTION_KEYED_DATA, *PACTCTX_SECTION_KEYED_DATA;
+typedef const ACTCTX_SECTION_KEYED_DATA *PCACTCTX_SECTION_KEYED_DATA;
+
+typedef struct _ACTIVATION_CONTEXT_BASIC_INFORMATION {
+    HANDLE hActCtx;
+    DWORD  dwFlags;
+} ACTIVATION_CONTEXT_BASIC_INFORMATION, *PACTIVATION_CONTEXT_BASIC_INFORMATION;
+
+typedef BOOL (WINAPI *PQUERYACTCTXW_FUNC)(DWORD,HANDLE,PVOID,ULONG,PVOID,SIZE_T,SIZE_T *);
+
+typedef struct tagCOMSTAT
+{
+    DWORD fCtsHold : 1;
+    DWORD fDsrHold : 1;
+    DWORD fRlsdHold : 1;
+    DWORD fXoffHold : 1;
+    DWORD fXoffSent : 1;
+    DWORD fEof : 1;
+    DWORD fTxim : 1;
+    DWORD fReserved : 25;
+    DWORD cbInQue;
+    DWORD cbOutQue;
+} COMSTAT, *LPCOMSTAT;
+
+typedef struct tagDCB
+{
+    DWORD DCBlength;
+    DWORD BaudRate;
+    unsigned fBinary               :1;
+    unsigned fParity               :1;
+    unsigned fOutxCtsFlow          :1;
+    unsigned fOutxDsrFlow          :1;
+    unsigned fDtrControl           :2;
+    unsigned fDsrSensitivity       :1;
+    unsigned fTXContinueOnXoff     :1;
+    unsigned fOutX                 :1;
+    unsigned fInX                  :1;
+    unsigned fErrorChar            :1;
+    unsigned fNull                 :1;
+    unsigned fRtsControl           :2;
+    unsigned fAbortOnError         :1;
+    unsigned fDummy2               :17;
+    WORD wReserved;
+    WORD XonLim;
+    WORD XoffLim;
+    BYTE ByteSize;
+    BYTE Parity;
+    BYTE StopBits;
+    char XonChar;
+    char XoffChar;
+    char ErrorChar;
+    char EofChar;
+    char EvtChar;
+    WORD wReserved1;
+} DCB, *LPDCB;
+
+typedef struct tagCOMMCONFIG {
+	DWORD dwSize;
+	WORD  wVersion;
+	WORD  wReserved;
+	DCB   dcb;
+	DWORD dwProviderSubType;
+	DWORD dwProviderOffset;
+	DWORD dwProviderSize;
+	DWORD wcProviderData[1];
+} COMMCONFIG, *LPCOMMCONFIG;
+
+typedef struct tagCOMMPROP {
+	WORD  wPacketLength;
+	WORD  wPacketVersion;
+	DWORD dwServiceMask;
+	DWORD dwReserved1;
+	DWORD dwMaxTxQueue;
+	DWORD dwMaxRxQueue;
+	DWORD dwMaxBaud;
+	DWORD dwProvSubType;
+	DWORD dwProvCapabilities;
+	DWORD dwSettableParams;
+	DWORD dwSettableBaud;
+	WORD  wSettableData;
+	WORD  wSettableStopParity;
+	DWORD dwCurrentTxQueue;
+	DWORD dwCurrentRxQueue;
+	DWORD dwProvSpec1;
+	DWORD dwProvSpec2;
+	WCHAR wcProvChar[1];
+} COMMPROP, *LPCOMMPROP;
+
+#define SP_SERIALCOMM ((DWORD)1)
+
+#define BAUD_075     ((DWORD)0x01)
+#define BAUD_110     ((DWORD)0x02)
+#define BAUD_134_5   ((DWORD)0x04)
+#define BAUD_150     ((DWORD)0x08)
+#define BAUD_300     ((DWORD)0x10)
+#define BAUD_600     ((DWORD)0x20)
+#define BAUD_1200    ((DWORD)0x40)
+#define BAUD_1800    ((DWORD)0x80)
+#define BAUD_2400    ((DWORD)0x100)
+#define BAUD_4800    ((DWORD)0x200)
+#define BAUD_7200    ((DWORD)0x400)
+#define BAUD_9600    ((DWORD)0x800)
+#define BAUD_14400   ((DWORD)0x1000)
+#define BAUD_19200   ((DWORD)0x2000)
+#define BAUD_38400   ((DWORD)0x4000)
+#define BAUD_56K     ((DWORD)0x8000)
+#define BAUD_57600   ((DWORD)0x40000)
+#define BAUD_115200  ((DWORD)0x20000)
+#define BAUD_128K    ((DWORD)0x10000)
+#define BAUD_USER    ((DWORD)0x10000000)
+
+#define PST_FAX            ((DWORD)0x21)
+#define PST_LAT            ((DWORD)0x101)
+#define PST_MODEM          ((DWORD)0x06)
+#define PST_NETWORK_BRIDGE ((DWORD)0x100)
+#define PST_PARALLELPORT   ((DWORD)0x02)
+#define PST_RS232          ((DWORD)0x01)
+#define PST_RS442          ((DWORD)0x03)
+#define PST_RS423          ((DWORD)0x04)
+#define PST_RS449          ((DWORD)0x06)
+#define PST_SCANNER        ((DWORD)0x22)
+#define PST_TCPIP_TELNET   ((DWORD)0x102)
+#define PST_UNSPECIFIED    ((DWORD)0x00)
+#define PST_X25            ((DWORD)0x103)
+
+#define PCF_16BITMODE     ((DWORD)0x200)
+#define PCF_DTRDSR        ((DWORD)0x01)
+#define PCF_INTTIMEOUTS   ((DWORD)0x80)
+#define PCF_PARITY_CHECK  ((DWORD)0x08)
+#define PCF_RLSD          ((DWORD)0x04)
+#define PCF_RTSCTS        ((DWORD)0x02)
+#define PCF_SETXCHAR      ((DWORD)0x20)
+#define PCF_SPECIALCHARS  ((DWORD)0x100)
+#define PCF_TOTALTIMEOUTS ((DWORD)0x40)
+#define PCF_XONXOFF       ((DWORD)0x10)
+
+#define SP_BAUD         ((DWORD)0x02)
+#define SP_DATABITS     ((DWORD)0x04)
+#define SP_HANDSHAKING  ((DWORD)0x10)
+#define SP_PARITY       ((DWORD)0x01)
+#define SP_PARITY_CHECK ((DWORD)0x20)
+#define SP_RLSD         ((DWORD)0x40)
+#define SP_STOPBITS     ((DWORD)0x08)
+
+#define DATABITS_5   ((DWORD)0x01)
+#define DATABITS_6   ((DWORD)0x02)
+#define DATABITS_7   ((DWORD)0x04)
+#define DATABITS_8   ((DWORD)0x08)
+#define DATABITS_16  ((DWORD)0x10)
+#define DATABITS_16X ((DWORD)0x20)
+
+#define STOPBITS_10 ((DWORD)1)
+#define STOPBITS_15 ((DWORD)2)
+#define STOPBITS_20 ((DWORD)4)
+
+#define PARITY_NONE  ((DWORD)0x100)
+#define PARITY_ODD   ((DWORD)0x200)
+#define PARITY_EVEN  ((DWORD)0x400)
+#define PARITY_MARK  ((DWORD)0x800)
+#define PARITY_SPACE ((DWORD)0x1000)
+
+typedef struct tagCOMMTIMEOUTS {
+	DWORD	ReadIntervalTimeout;
+	DWORD	ReadTotalTimeoutMultiplier;
+	DWORD	ReadTotalTimeoutConstant;
+	DWORD	WriteTotalTimeoutMultiplier;
+	DWORD	WriteTotalTimeoutConstant;
+} COMMTIMEOUTS,*LPCOMMTIMEOUTS;
+
+#define GET_TAPE_MEDIA_INFORMATION 0
+#define GET_TAPE_DRIVE_INFORMATION 1
+#define SET_TAPE_MEDIA_INFORMATION 0
+#define SET_TAPE_DRIVE_INFORMATION 1
+
+typedef void (CALLBACK *PAPCFUNC)(ULONG_PTR);
+typedef void (CALLBACK *PTIMERAPCROUTINE)(LPVOID,DWORD,DWORD);
+
+typedef enum _COMPUTER_NAME_FORMAT
+{
+	ComputerNameNetBIOS,
+	ComputerNameDnsHostname,
+	ComputerNameDnsDomain,
+	ComputerNameDnsFullyQualified,
+	ComputerNamePhysicalNetBIOS,
+	ComputerNamePhysicalDnsHostname,
+	ComputerNamePhysicalDnsDomain,
+	ComputerNamePhysicalDnsFullyQualified,
+	ComputerNameMax
+} COMPUTER_NAME_FORMAT;
+
+#define HW_PROFILE_GUIDLEN	39
+#define MAX_PROFILE_LEN		80
+
+#define DOCKINFO_UNDOCKED	0x1
+#define DOCKINFO_DOCKED		0x2
+#define DOCKINFO_USER_SUPPLIED	0x4
+#define DOCKINFO_USER_UNDOCKED	(DOCKINFO_USER_SUPPLIED | DOCKINFO_UNDOCKED)
+#define DOCKINFO_USER_DOCKED	(DOCKINFO_USER_SUPPLIED | DOCKINFO_DOCKED)
+
+typedef struct tagHW_PROFILE_INFOA {
+    DWORD dwDockInfo;
+    CHAR  szHwProfileGuid[HW_PROFILE_GUIDLEN];
+    CHAR  szHwProfileName[MAX_PROFILE_LEN];
+} HW_PROFILE_INFOA, *LPHW_PROFILE_INFOA;
+
+typedef struct tagHW_PROFILE_INFOW {
+    DWORD dwDockInfo;
+    WCHAR szHwProfileGuid[HW_PROFILE_GUIDLEN];
+    WCHAR szHwProfileName[MAX_PROFILE_LEN];
+} HW_PROFILE_INFOW, *LPHW_PROFILE_INFOW;
+
+DECL_WINELIB_TYPE_AW(HW_PROFILE_INFO)
+DECL_WINELIB_TYPE_AW(LPHW_PROFILE_INFO)
+
+/* Stream data structures and defines */
+/*the types of backup data -- WIN32_STREAM_ID.dwStreamId below*/
+#define BACKUP_INVALID        0
+#define BACKUP_DATA           1
+#define BACKUP_EA_DATA        2
+#define BACKUP_SECURITY_DATA  3
+#define BACKUP_ALTERNATE_DATA 4
+#define BACKUP_LINK           5
+#define BACKUP_PROPERTY_DATA  6
+#define BACKUP_OBJECT_ID      7
+#define BACKUP_REPARSE_DATA   8
+#define BACKUP_SPARSE_BLOCK   9
+
+/*flags for WIN32_STREAM_ID.dwStreamAttributes below*/
+#define STREAM_NORMAL_ATTRIBUTE    0
+#define STREAM_MODIFIED_WHEN_READ  1
+#define STREAM_CONTAINS_SECURITY   2
+#define STREAM_CONTAINS_PROPERTIES 4
+#define STREAM_SPARSE_ATTRIBUTE    8
+
+#include <pshpack8.h>
+typedef struct _WIN32_STREAM_ID {
+	DWORD   dwStreamId;
+	DWORD   dwStreamAttributes;
+	LARGE_INTEGER DECLSPEC_ALIGN(8) Size;
+	DWORD   dwStreamNameSize;
+	WCHAR   cStreamName[ANYSIZE_ARRAY];
+} WIN32_STREAM_ID, *LPWIN32_STREAM_ID;
+#include <poppack.h>
+
+
+/* GetBinaryType return values.
+ */
+
+#define SCS_32BIT_BINARY    0
+#define SCS_DOS_BINARY      1
+#define SCS_WOW_BINARY      2
+#define SCS_PIF_BINARY      3
+#define SCS_POSIX_BINARY    4
+#define SCS_OS216_BINARY    5
+#define SCS_64BIT_BINARY    6
+
+/* flags for DefineDosDevice */
+#define DDD_RAW_TARGET_PATH         0x00000001
+#define DDD_REMOVE_DEFINITION       0x00000002
+#define DDD_EXACT_MATCH_ON_REMOVE   0x00000004
+#define DDD_NO_BROADCAST_SYSTEM     0x00000008
+#define DDD_LUID_BROADCAST_DRIVE    0x00000010
+
+WINBASEAPI BOOL        WINAPI ActivateActCtx(HANDLE,ULONG_PTR *);
+WINADVAPI  BOOL        WINAPI AddAccessAllowedAce(PACL,DWORD,DWORD,PSID);
+WINADVAPI  BOOL        WINAPI AddAccessAllowedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
+WINADVAPI  BOOL        WINAPI AddAccessDeniedAce(PACL,DWORD,DWORD,PSID);
+WINADVAPI  BOOL        WINAPI AddAccessDeniedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
+WINADVAPI  BOOL        WINAPI AddAce(PACL,DWORD,DWORD,LPVOID,DWORD);
+WINBASEAPI ATOM        WINAPI AddAtomA(LPCSTR);
+WINBASEAPI ATOM        WINAPI AddAtomW(LPCWSTR);
+#define                       AddAtom WINELIB_NAME_AW(AddAtom)
+WINADVAPI  BOOL        WINAPI AddAuditAccessAce(PACL,DWORD,DWORD,PSID,BOOL,BOOL);
+WINADVAPI  BOOL        WINAPI AddAuditAccessAceEx(PACL,DWORD,DWORD,DWORD,PSID,BOOL,BOOL);
+WINBASEAPI VOID        WINAPI AddRefActCtx(HANDLE);
+WINBASEAPI PVOID       WINAPI AddVectoredExceptionHandler(ULONG,PVECTORED_EXCEPTION_HANDLER);
+WINADVAPI  BOOL        WINAPI AdjustTokenGroups(HANDLE,BOOL,PTOKEN_GROUPS,DWORD,PTOKEN_GROUPS,PDWORD);
+WINADVAPI  BOOL        WINAPI AccessCheck(PSECURITY_DESCRIPTOR,HANDLE,DWORD,PGENERIC_MAPPING,PPRIVILEGE_SET,LPDWORD,LPDWORD,LPBOOL);
+WINADVAPI  BOOL        WINAPI AccessCheckAndAuditAlarmA(LPCSTR,LPVOID,LPSTR,LPSTR,PSECURITY_DESCRIPTOR,DWORD,PGENERIC_MAPPING,BOOL,LPDWORD,LPBOOL,LPBOOL);
+WINADVAPI  BOOL        WINAPI AccessCheckAndAuditAlarmW(LPCWSTR,LPVOID,LPWSTR,LPWSTR,PSECURITY_DESCRIPTOR,DWORD,PGENERIC_MAPPING,BOOL,LPDWORD,LPBOOL,LPBOOL);
+#define                       AccessCheckAndAuditAlarm WINELIB_NAME_AW(AccessCheckAndAuditAlarm)
+WINADVAPI  BOOL        WINAPI AccessCheckByType(PSECURITY_DESCRIPTOR,PSID,HANDLE,DWORD,POBJECT_TYPE_LIST,DWORD,PGENERIC_MAPPING,PPRIVILEGE_SET,LPDWORD,LPDWORD,LPBOOL);
+WINADVAPI  BOOL        WINAPI AdjustTokenPrivileges(HANDLE,BOOL,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD);
+WINADVAPI  BOOL        WINAPI AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PSID *);
+WINADVAPI  BOOL        WINAPI AllocateLocallyUniqueId(PLUID);
+WINADVAPI  BOOL        WINAPI AreAllAccessesGranted(DWORD,DWORD);
+WINADVAPI  BOOL        WINAPI AreAnyAccessesGranted(DWORD,DWORD);
+WINBASEAPI BOOL        WINAPI AreFileApisANSI(void);
+WINBASEAPI BOOL        WINAPI AssignProcessToJobObject(HANDLE,HANDLE);
+WINADVAPI  BOOL        WINAPI BackupEventLogA(HANDLE,LPCSTR);
+WINADVAPI  BOOL        WINAPI BackupEventLogW(HANDLE,LPCWSTR);
+#define                       BackupEventLog WINELIB_NAME_AW(BackupEventLog)
+WINBASEAPI BOOL        WINAPI BackupRead(HANDLE,LPBYTE,DWORD,LPDWORD,BOOL,BOOL,LPVOID*);
+WINBASEAPI BOOL        WINAPI BackupSeek(HANDLE,DWORD,DWORD,LPDWORD,LPDWORD,LPVOID*);
+WINBASEAPI BOOL        WINAPI BackupWrite(HANDLE,LPBYTE,DWORD,LPDWORD,BOOL,BOOL,LPVOID*);
+WINBASEAPI BOOL        WINAPI Beep(DWORD,DWORD);
+WINBASEAPI HANDLE      WINAPI BeginUpdateResourceA(LPCSTR,BOOL);
+WINBASEAPI HANDLE      WINAPI BeginUpdateResourceW(LPCWSTR,BOOL);
+#define                       BeginUpdateResource WINELIB_NAME_AW(BeginUpdateResource)
+WINBASEAPI BOOL        WINAPI BindIoCompletionCallback(HANDLE,LPOVERLAPPED_COMPLETION_ROUTINE,ULONG);
+WINBASEAPI BOOL        WINAPI BuildCommDCBA(LPCSTR,LPDCB);
+WINBASEAPI BOOL        WINAPI BuildCommDCBW(LPCWSTR,LPDCB);
+#define                       BuildCommDCB WINELIB_NAME_AW(BuildCommDCB)
+WINBASEAPI BOOL        WINAPI BuildCommDCBAndTimeoutsA(LPCSTR,LPDCB,LPCOMMTIMEOUTS);
+WINBASEAPI BOOL        WINAPI BuildCommDCBAndTimeoutsW(LPCWSTR,LPDCB,LPCOMMTIMEOUTS);
+#define                       BuildCommDCBAndTimeouts WINELIB_NAME_AW(BuildCommDCBAndTimeouts)
+WINBASEAPI BOOL        WINAPI CallNamedPipeA(LPCSTR,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,DWORD);
+WINBASEAPI BOOL        WINAPI CallNamedPipeW(LPCWSTR,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,DWORD);
+#define                       CallNamedPipe WINELIB_NAME_AW(CallNamedPipe)
+WINBASEAPI BOOL        WINAPI CancelIo(HANDLE);
+WINBASEAPI BOOL        WINAPI CancelWaitableTimer(HANDLE);
+WINBASEAPI BOOL        WINAPI ChangeTimerQueueTimer(HANDLE,HANDLE,ULONG,ULONG);
+WINADVAPI  BOOL        WINAPI CheckTokenMembership(HANDLE,PSID,PBOOL);
+WINBASEAPI BOOL        WINAPI ClearCommBreak(HANDLE);
+WINBASEAPI BOOL        WINAPI ClearCommError(HANDLE,LPDWORD,LPCOMSTAT);
+WINADVAPI  BOOL        WINAPI ClearEventLogA(HANDLE,LPCSTR);
+WINADVAPI  BOOL        WINAPI ClearEventLogW(HANDLE,LPCWSTR);
+#define                       ClearEventLog WINELIB_NAME_AW(ClearEventLog)
+WINADVAPI  BOOL        WINAPI CloseEventLog(HANDLE);
+WINBASEAPI BOOL        WINAPI CloseHandle(HANDLE);
+WINBASEAPI BOOL        WINAPI CommConfigDialogA(LPCSTR,HWND,LPCOMMCONFIG);
+WINBASEAPI BOOL        WINAPI CommConfigDialogW(LPCWSTR,HWND,LPCOMMCONFIG);
+#define                       CommConfigDialog WINELIB_NAME_AW(CommConfigDialog)
+WINBASEAPI BOOL        WINAPI ConnectNamedPipe(HANDLE,LPOVERLAPPED);
+WINBASEAPI BOOL        WINAPI ContinueDebugEvent(DWORD,DWORD,DWORD);
+WINBASEAPI HANDLE      WINAPI ConvertToGlobalHandle(HANDLE hSrc);
+WINBASEAPI BOOL        WINAPI CopyFileA(LPCSTR,LPCSTR,BOOL);
+WINBASEAPI BOOL        WINAPI CopyFileW(LPCWSTR,LPCWSTR,BOOL);
+#define                       CopyFile WINELIB_NAME_AW(CopyFile)
+WINBASEAPI BOOL        WINAPI CopyFileExA(LPCSTR, LPCSTR, LPPROGRESS_ROUTINE, LPVOID, LPBOOL, DWORD);
+WINBASEAPI BOOL        WINAPI CopyFileExW(LPCWSTR, LPCWSTR, LPPROGRESS_ROUTINE, LPVOID, LPBOOL, DWORD);
+#define                       CopyFileEx WINELIB_NAME_AW(CopyFileEx)
+WINADVAPI  BOOL        WINAPI CopySid(DWORD,PSID,PSID);
+WINBASEAPI INT         WINAPI CompareFileTime(const FILETIME*,const FILETIME*);
+WINBASEAPI BOOL        WINAPI ConvertFiberToThread(void);
+WINBASEAPI LPVOID      WINAPI ConvertThreadToFiber(LPVOID);
+WINBASEAPI LPVOID      WINAPI ConvertThreadToFiberEx(LPVOID,DWORD);
+WINADVAPI  BOOL        WINAPI ConvertToAutoInheritPrivateObjectSecurity(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,GUID*,BOOL,PGENERIC_MAPPING);
+WINBASEAPI HANDLE      WINAPI CreateActCtxA(PCACTCTXA);
+WINBASEAPI HANDLE      WINAPI CreateActCtxW(PCACTCTXW);
+#define                       CreateActCtx WINELIB_NAME_AW(CreateActCtx)
+WINBASEAPI BOOL        WINAPI CreateDirectoryA(LPCSTR,LPSECURITY_ATTRIBUTES);
+WINBASEAPI BOOL        WINAPI CreateDirectoryW(LPCWSTR,LPSECURITY_ATTRIBUTES);
+#define                       CreateDirectory WINELIB_NAME_AW(CreateDirectory)
+WINBASEAPI BOOL        WINAPI CreateDirectoryExA(LPCSTR,LPCSTR,LPSECURITY_ATTRIBUTES);
+WINBASEAPI BOOL        WINAPI CreateDirectoryExW(LPCWSTR,LPCWSTR,LPSECURITY_ATTRIBUTES);
+#define                       CreateDirectoryEx WINELIB_NAME_AW(CreateDirectoryEx)
+WINBASEAPI HANDLE      WINAPI CreateEventA(LPSECURITY_ATTRIBUTES,BOOL,BOOL,LPCSTR);
+WINBASEAPI HANDLE      WINAPI CreateEventW(LPSECURITY_ATTRIBUTES,BOOL,BOOL,LPCWSTR);
+#define                       CreateEvent WINELIB_NAME_AW(CreateEvent)
+WINBASEAPI HANDLE      WINAPI CreateEventExA(SECURITY_ATTRIBUTES*,LPCSTR,DWORD,DWORD);
+WINBASEAPI HANDLE      WINAPI CreateEventExW(SECURITY_ATTRIBUTES*,LPCWSTR,DWORD,DWORD);
+#define                       CreateEventEx WINELIB_NAME_AW(CreateEventEx)
+WINBASEAPI LPVOID      WINAPI CreateFiber(SIZE_T,LPFIBER_START_ROUTINE,LPVOID);
+WINBASEAPI LPVOID      WINAPI CreateFiberEx(SIZE_T,SIZE_T,DWORD,LPFIBER_START_ROUTINE,LPVOID);
+WINBASEAPI HANDLE      WINAPI CreateFileA(LPCSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE);
+WINBASEAPI HANDLE      WINAPI CreateFileW(LPCWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE);
+#define                       CreateFile WINELIB_NAME_AW(CreateFile)
+WINBASEAPI HANDLE      WINAPI CreateFileMappingA(HANDLE,LPSECURITY_ATTRIBUTES,DWORD,DWORD,DWORD,LPCSTR);
+WINBASEAPI HANDLE      WINAPI CreateFileMappingW(HANDLE,LPSECURITY_ATTRIBUTES,DWORD,DWORD,DWORD,LPCWSTR);
+#define                       CreateFileMapping WINELIB_NAME_AW(CreateFileMapping)
+WINBASEAPI HANDLE      WINAPI CreateIoCompletionPort(HANDLE,HANDLE,ULONG_PTR,DWORD);
+WINBASEAPI HANDLE      WINAPI CreateJobObjectA(LPSECURITY_ATTRIBUTES,LPCSTR);
+WINBASEAPI HANDLE      WINAPI CreateJobObjectW(LPSECURITY_ATTRIBUTES,LPCWSTR);
+#define                       CreateJobObject WINELIB_NAME_AW(CreateJobObject)
+WINBASEAPI HANDLE      WINAPI CreateMailslotA(LPCSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+WINBASEAPI HANDLE      WINAPI CreateMailslotW(LPCWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+#define                       CreateMailslot WINELIB_NAME_AW(CreateMailslot)
+WINBASEAPI HANDLE      WINAPI CreateMutexA(LPSECURITY_ATTRIBUTES,BOOL,LPCSTR);
+WINBASEAPI HANDLE      WINAPI CreateMutexW(LPSECURITY_ATTRIBUTES,BOOL,LPCWSTR);
+#define                       CreateMutex WINELIB_NAME_AW(CreateMutex)
+WINBASEAPI HANDLE      WINAPI CreateMutexExA(SECURITY_ATTRIBUTES*,LPCSTR,DWORD,DWORD);
+WINBASEAPI HANDLE      WINAPI CreateMutexExW(SECURITY_ATTRIBUTES*,LPCWSTR,DWORD,DWORD);
+#define                       CreateMutexEx WINELIB_NAME_AW(CreateMutexEx)
+WINBASEAPI HANDLE      WINAPI CreateNamedPipeA(LPCSTR,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+WINBASEAPI HANDLE      WINAPI CreateNamedPipeW(LPCWSTR,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+#define                       CreateNamedPipe WINELIB_NAME_AW(CreateNamedPipe)
+WINBASEAPI BOOL        WINAPI CreatePipe(PHANDLE,PHANDLE,LPSECURITY_ATTRIBUTES,DWORD);
+WINADVAPI  BOOL        WINAPI CreatePrivateObjectSecurity(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,BOOL,HANDLE,PGENERIC_MAPPING);
+WINBASEAPI BOOL        WINAPI CreateProcessA(LPCSTR,LPSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,LPVOID,LPCSTR,LPSTARTUPINFOA,LPPROCESS_INFORMATION);
+WINBASEAPI BOOL        WINAPI CreateProcessW(LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,LPVOID,LPCWSTR,LPSTARTUPINFOW,LPPROCESS_INFORMATION);
+#define                       CreateProcess WINELIB_NAME_AW(CreateProcess)
+WINADVAPI  BOOL        WINAPI CreateProcessAsUserA(HANDLE,LPCSTR,LPSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,LPVOID,LPCSTR,LPSTARTUPINFOA,LPPROCESS_INFORMATION);
+WINADVAPI  BOOL        WINAPI CreateProcessAsUserW(HANDLE,LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,LPVOID,LPCWSTR,LPSTARTUPINFOW,LPPROCESS_INFORMATION);
+#define                       CreateProcessAsUser WINELIB_NAME_AW(CreateProcessAsUser)
+WINBASEAPI HANDLE      WINAPI CreateRemoteThread(HANDLE,LPSECURITY_ATTRIBUTES,SIZE_T,LPTHREAD_START_ROUTINE,LPVOID,DWORD,LPDWORD);
+WINADVAPI  BOOL        WINAPI CreateRestrictedToken(HANDLE,DWORD,DWORD,PSID_AND_ATTRIBUTES,DWORD,PLUID_AND_ATTRIBUTES,DWORD,PSID_AND_ATTRIBUTES,PHANDLE);
+WINBASEAPI HANDLE      WINAPI CreateSemaphoreA(LPSECURITY_ATTRIBUTES,LONG,LONG,LPCSTR);
+WINBASEAPI HANDLE      WINAPI CreateSemaphoreW(LPSECURITY_ATTRIBUTES,LONG,LONG,LPCWSTR);
+#define                       CreateSemaphore WINELIB_NAME_AW(CreateSemaphore)
+WINBASEAPI HANDLE      WINAPI CreateSemaphoreExA(SECURITY_ATTRIBUTES*,LONG,LONG,LPCSTR,DWORD,DWORD);
+WINBASEAPI HANDLE      WINAPI CreateSemaphoreExW(SECURITY_ATTRIBUTES*,LONG,LONG,LPCWSTR,DWORD,DWORD);
+#define                       CreateSemaphoreEx WINELIB_NAME_AW(CreateSemaphoreEx)
+WINBASEAPI DWORD       WINAPI CreateTapePartition(HANDLE,DWORD,DWORD,DWORD);
+WINBASEAPI HANDLE      WINAPI CreateThread(LPSECURITY_ATTRIBUTES,SIZE_T,LPTHREAD_START_ROUTINE,LPVOID,DWORD,LPDWORD);
+WINBASEAPI HANDLE      WINAPI CreateTimerQueue(void);
+WINBASEAPI BOOL        WINAPI CreateTimerQueueTimer(PHANDLE,HANDLE,WAITORTIMERCALLBACK,PVOID,DWORD,DWORD,ULONG);
+WINBASEAPI HANDLE      WINAPI CreateWaitableTimerA(LPSECURITY_ATTRIBUTES,BOOL,LPCSTR);
+WINBASEAPI HANDLE      WINAPI CreateWaitableTimerW(LPSECURITY_ATTRIBUTES,BOOL,LPCWSTR);
+#define                       CreateWaitableTimer WINELIB_NAME_AW(CreateWaitableTimer)
+WINBASEAPI HANDLE      WINAPI CreateWaitableTimerExA(SECURITY_ATTRIBUTES*,LPCSTR,DWORD,DWORD);
+WINBASEAPI HANDLE      WINAPI CreateWaitableTimerExW(SECURITY_ATTRIBUTES*,LPCWSTR,DWORD,DWORD);
+#define                       CreateWaitableTimerEx WINELIB_NAME_AW(CreateWaitableTimerEx)
+WINADVAPI  BOOL        WINAPI CreateWellKnownSid(WELL_KNOWN_SID_TYPE,PSID,PSID,DWORD*);
+WINBASEAPI BOOL        WINAPI DeactivateActCtx(DWORD,ULONG_PTR);
+WINBASEAPI BOOL        WINAPI DebugActiveProcess(DWORD);
+WINBASEAPI BOOL        WINAPI DebugActiveProcessStop(DWORD);
+WINBASEAPI void        WINAPI DebugBreak(void);
+WINBASEAPI BOOL        WINAPI DebugBreakProcess(HANDLE);
+WINBASEAPI BOOL        WINAPI DebugSetProcessKillOnExit(BOOL);
+WINADVAPI  BOOL        WINAPI DecryptFileA(LPCSTR,DWORD);
+WINADVAPI  BOOL        WINAPI DecryptFileW(LPCWSTR,DWORD);
+#define                       DecryptFile WINELIB_NAME_AW(DecryptFile)
+WINBASEAPI BOOL        WINAPI DefineDosDeviceA(DWORD,LPCSTR,LPCSTR);
+WINBASEAPI BOOL        WINAPI DefineDosDeviceW(DWORD,LPCWSTR,LPCWSTR);
+#define                       DefineDosDevice WINELIB_NAME_AW(DefineDosDevice)
+#define                       DefineHandleTable(w) ((w),TRUE)
+WINADVAPI  BOOL        WINAPI DeleteAce(PACL,DWORD);
+WINBASEAPI ATOM        WINAPI DeleteAtom(ATOM);
+WINBASEAPI void        WINAPI DeleteCriticalSection(CRITICAL_SECTION *lpCrit);
+WINBASEAPI void        WINAPI DeleteFiber(LPVOID);
+WINBASEAPI BOOL        WINAPI DeleteFileA(LPCSTR);
+WINBASEAPI BOOL        WINAPI DeleteFileW(LPCWSTR);
+#define                       DeleteFile WINELIB_NAME_AW(DeleteFile)
+WINBASEAPI BOOL        WINAPI DeleteTimerQueueEx(HANDLE,HANDLE);
+WINBASEAPI BOOL        WINAPI DeleteTimerQueueTimer(HANDLE,HANDLE,HANDLE);
+WINBASEAPI BOOL        WINAPI DeleteVolumeMountPointA(LPCSTR);
+WINBASEAPI BOOL        WINAPI DeleteVolumeMountPointW(LPCWSTR);
+#define                       DeleteVolumeMountPoint WINELIB_NAME_AW(DeleteVolumeMountPoint)
+WINADVAPI  BOOL        WINAPI DeregisterEventSource(HANDLE);
+WINADVAPI  BOOL        WINAPI DestroyPrivateObjectSecurity(PSECURITY_DESCRIPTOR*);
+WINBASEAPI BOOL        WINAPI DeviceIoControl(HANDLE,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPOVERLAPPED);
+WINBASEAPI BOOL        WINAPI DisableThreadLibraryCalls(HMODULE);
+WINBASEAPI BOOL        WINAPI DisconnectNamedPipe(HANDLE);
+WINBASEAPI BOOL        WINAPI DnsHostnameToComputerNameA(LPCSTR,LPSTR,LPDWORD);
+WINBASEAPI BOOL        WINAPI DnsHostnameToComputerNameW(LPCWSTR,LPWSTR,LPDWORD);
+#define                       DnsHostnameToComputerName WINELIB_NAME_AW(DnsHostnameToComputerName)
+WINBASEAPI BOOL        WINAPI DosDateTimeToFileTime(WORD,WORD,LPFILETIME);
+WINBASEAPI BOOL        WINAPI DuplicateHandle(HANDLE,HANDLE,HANDLE,HANDLE*,DWORD,BOOL,DWORD);
+WINADVAPI  BOOL        WINAPI DuplicateToken(HANDLE,SECURITY_IMPERSONATION_LEVEL,PHANDLE);
+WINADVAPI  BOOL        WINAPI DuplicateTokenEx(HANDLE,DWORD,LPSECURITY_ATTRIBUTES,SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,PHANDLE);
+WINBASEAPI BOOL        WINAPI EscapeCommFunction(HANDLE,UINT);
+WINADVAPI  BOOL        WINAPI EncryptFileA(LPCSTR);
+WINADVAPI  BOOL        WINAPI EncryptFileW(LPCWSTR);
+#define                       EncryptFile WINELIB_NAME_AW(EncryptFile)
+WINBASEAPI BOOL        WINAPI EndUpdateResourceA(HANDLE,BOOL);
+WINBASEAPI BOOL        WINAPI EndUpdateResourceW(HANDLE,BOOL);
+#define                       EndUpdateResource WINELIB_NAME_AW(EndUpdateResource)
+WINBASEAPI void        WINAPI EnterCriticalSection(CRITICAL_SECTION *lpCrit);
+WINBASEAPI BOOL        WINAPI EnumResourceLanguagesA(HMODULE,LPCSTR,LPCSTR,ENUMRESLANGPROCA,LONG_PTR);
+WINBASEAPI BOOL        WINAPI EnumResourceLanguagesW(HMODULE,LPCWSTR,LPCWSTR,ENUMRESLANGPROCW,LONG_PTR);
+#define                       EnumResourceLanguages WINELIB_NAME_AW(EnumResourceLanguages)
+WINBASEAPI BOOL        WINAPI EnumResourceNamesA(HMODULE,LPCSTR,ENUMRESNAMEPROCA,LONG_PTR);
+WINBASEAPI BOOL        WINAPI EnumResourceNamesW(HMODULE,LPCWSTR,ENUMRESNAMEPROCW,LONG_PTR);
+#define                       EnumResourceNames WINELIB_NAME_AW(EnumResourceNames)
+WINBASEAPI BOOL        WINAPI EnumResourceTypesA(HMODULE,ENUMRESTYPEPROCA,LONG_PTR);
+WINBASEAPI BOOL        WINAPI EnumResourceTypesW(HMODULE,ENUMRESTYPEPROCW,LONG_PTR);
+#define                       EnumResourceTypes WINELIB_NAME_AW(EnumResourceTypes)
+WINADVAPI  BOOL        WINAPI EqualSid(PSID, PSID);
+WINADVAPI  BOOL        WINAPI EqualPrefixSid(PSID,PSID);
+WINBASEAPI DWORD       WINAPI EraseTape(HANDLE,DWORD,BOOL);
+WINBASEAPI VOID DECLSPEC_NORETURN WINAPI ExitProcess(DWORD);
+WINBASEAPI VOID DECLSPEC_NORETURN WINAPI ExitThread(DWORD);
+WINBASEAPI DWORD       WINAPI ExpandEnvironmentStringsA(LPCSTR,LPSTR,DWORD);
+WINBASEAPI DWORD       WINAPI ExpandEnvironmentStringsW(LPCWSTR,LPWSTR,DWORD);
+#define                       ExpandEnvironmentStrings WINELIB_NAME_AW(ExpandEnvironmentStrings)
+WINBASEAPI void        WINAPI FatalAppExitA(UINT,LPCSTR);
+WINBASEAPI void        WINAPI FatalAppExitW(UINT,LPCWSTR);
+WINBASEAPI void        WINAPI FatalExit(int);
+#define                       FatalAppExit WINELIB_NAME_AW(FatalAppExit)
+WINADVAPI  BOOL        WINAPI FileEncryptionStatusA(LPCSTR,LPDWORD);
+WINADVAPI  BOOL        WINAPI FileEncryptionStatusW(LPCWSTR,LPDWORD);
+#define                       FileEncryptionStatus WINELIB_NAME_AW(FileEncryptionStatus)
+WINBASEAPI BOOL        WINAPI FileTimeToDosDateTime(const FILETIME*,LPWORD,LPWORD);
+WINBASEAPI BOOL        WINAPI FileTimeToLocalFileTime(const FILETIME*,LPFILETIME);
+WINBASEAPI BOOL        WINAPI FileTimeToSystemTime(const FILETIME*,LPSYSTEMTIME);
+WINBASEAPI BOOL        WINAPI FindActCtxSectionStringA(DWORD,const GUID *,ULONG,LPCSTR,PACTCTX_SECTION_KEYED_DATA);
+WINBASEAPI BOOL        WINAPI FindActCtxSectionStringW(DWORD,const GUID *,ULONG,LPCWSTR,PACTCTX_SECTION_KEYED_DATA);
+#define                       FindActCtxSectionString WINELIB_NAME_AW(FindActCtxSectionString)
+WINBASEAPI BOOL        WINAPI FindActCtxSectionGuid(DWORD,const GUID *,ULONG,const GUID *,PACTCTX_SECTION_KEYED_DATA);
+WINBASEAPI ATOM        WINAPI FindAtomA(LPCSTR);
+WINBASEAPI ATOM        WINAPI FindAtomW(LPCWSTR);
+#define                       FindAtom WINELIB_NAME_AW(FindAtom)
+WINBASEAPI BOOL        WINAPI FindClose(HANDLE);
+WINBASEAPI HANDLE      WINAPI FindFirstChangeNotificationA(LPCSTR,BOOL,DWORD);
+WINBASEAPI HANDLE      WINAPI FindFirstChangeNotificationW(LPCWSTR,BOOL,DWORD);
+#define                       FindFirstChangeNotification WINELIB_NAME_AW(FindFirstChangeNotification)
+WINBASEAPI HANDLE      WINAPI FindFirstFileA(LPCSTR,LPWIN32_FIND_DATAA);
+WINBASEAPI HANDLE      WINAPI FindFirstFileW(LPCWSTR,LPWIN32_FIND_DATAW);
+#define                       FindFirstFile WINELIB_NAME_AW(FindFirstFile)
+WINBASEAPI HANDLE      WINAPI FindFirstFileExA(LPCSTR,FINDEX_INFO_LEVELS,LPVOID,FINDEX_SEARCH_OPS,LPVOID,DWORD);
+WINBASEAPI HANDLE      WINAPI FindFirstFileExW(LPCWSTR,FINDEX_INFO_LEVELS,LPVOID,FINDEX_SEARCH_OPS,LPVOID,DWORD);
+#define                       FindFirstFileEx WINELIB_NAME_AW(FindFirstFileEx)
+WINADVAPI  BOOL        WINAPI FindFirstFreeAce(PACL,LPVOID*);
+WINBASEAPI BOOL        WINAPI FindNextChangeNotification(HANDLE);
+WINBASEAPI BOOL        WINAPI FindNextFileA(HANDLE,LPWIN32_FIND_DATAA);
+WINBASEAPI BOOL        WINAPI FindNextFileW(HANDLE,LPWIN32_FIND_DATAW);
+#define                       FindNextFile WINELIB_NAME_AW(FindNextFile)
+WINBASEAPI BOOL        WINAPI FindCloseChangeNotification(HANDLE);
+WINBASEAPI HRSRC       WINAPI FindResourceA(HMODULE,LPCSTR,LPCSTR);
+WINBASEAPI HRSRC       WINAPI FindResourceW(HMODULE,LPCWSTR,LPCWSTR);
+#define                       FindResource WINELIB_NAME_AW(FindResource)
+WINBASEAPI HRSRC       WINAPI FindResourceExA(HMODULE,LPCSTR,LPCSTR,WORD);
+WINBASEAPI HRSRC       WINAPI FindResourceExW(HMODULE,LPCWSTR,LPCWSTR,WORD);
+#define                       FindResourceEx WINELIB_NAME_AW(FindResourceEx)
+WINBASEAPI HANDLE      WINAPI FindFirstVolumeA(LPSTR,DWORD);
+WINBASEAPI HANDLE      WINAPI FindFirstVolumeW(LPWSTR,DWORD);
+#define                       FindFirstVolume WINELIB_NAME_AW(FindFirstVolume)
+WINBASEAPI HANDLE      WINAPI FindFirstVolumeMountPointA(LPCSTR,LPSTR,DWORD);
+WINBASEAPI HANDLE      WINAPI FindFirstVolumeMountPointW(LPCWSTR,LPWSTR,DWORD);
+#define                       FindFirstVolumeMountPoint WINELIB_NAME_AW(FindFirstVolumeMountPoint)
+WINBASEAPI BOOL        WINAPI FindNextVolumeA(HANDLE,LPSTR,DWORD);
+WINBASEAPI BOOL        WINAPI FindNextVolumeW(HANDLE,LPWSTR,DWORD);
+#define                       FindNextVolume WINELIB_NAME_AW(FindNextVolume)
+WINBASEAPI BOOL        WINAPI FindNextVolumeMountPointA(HANDLE,LPSTR,DWORD);
+WINBASEAPI BOOL        WINAPI FindNextVolumeMountPointW(HANDLE,LPWSTR,DWORD);
+#define                       FindNextVolumeMountPoint WINELIB_NAME_AW(FindNextVolumeMountPoint)
+WINBASEAPI BOOL        WINAPI FindVolumeClose(HANDLE);
+WINBASEAPI BOOL        WINAPI FindVolumeMountPointClose(HANDLE);
+WINBASEAPI DWORD       WINAPI FlsAlloc(PFLS_CALLBACK_FUNCTION);
+WINBASEAPI BOOL        WINAPI FlsFree(DWORD);
+WINBASEAPI PVOID       WINAPI FlsGetValue(DWORD);
+WINBASEAPI BOOL        WINAPI FlsSetValue(DWORD,PVOID);
+WINBASEAPI BOOL        WINAPI FlushFileBuffers(HANDLE);
+WINBASEAPI BOOL        WINAPI FlushInstructionCache(HANDLE,LPCVOID,SIZE_T);
+WINBASEAPI BOOL        WINAPI FlushViewOfFile(LPCVOID,SIZE_T);
+WINBASEAPI DWORD       WINAPI FormatMessageA(DWORD,LPCVOID,DWORD,DWORD,LPSTR,DWORD,va_list*);
+WINBASEAPI DWORD       WINAPI FormatMessageW(DWORD,LPCVOID,DWORD,DWORD,LPWSTR,DWORD,va_list*);
+#define                       FormatMessage WINELIB_NAME_AW(FormatMessage)
+WINBASEAPI BOOL        WINAPI FreeEnvironmentStringsA(LPSTR);
+WINBASEAPI BOOL        WINAPI FreeEnvironmentStringsW(LPWSTR);
+#define                       FreeEnvironmentStrings WINELIB_NAME_AW(FreeEnvironmentStrings)
+WINBASEAPI BOOL        WINAPI FreeLibrary(HMODULE);
+WINBASEAPI VOID        WINAPI FreeLibraryAndExitThread(HINSTANCE,DWORD);
+#define                       FreeModule(handle) FreeLibrary(handle)
+#define                       FreeProcInstance(proc) /*nothing*/
+WINBASEAPI BOOL        WINAPI FreeResource(HGLOBAL);
+WINADVAPI  PVOID       WINAPI FreeSid(PSID);
+WINADVAPI  BOOL        WINAPI GetAce(PACL,DWORD,LPVOID*);
+WINADVAPI  BOOL        WINAPI GetAclInformation(PACL,LPVOID,DWORD,ACL_INFORMATION_CLASS);
+WINBASEAPI UINT        WINAPI GetAtomNameA(ATOM,LPSTR,INT);
+WINBASEAPI UINT        WINAPI GetAtomNameW(ATOM,LPWSTR,INT);
+#define                       GetAtomName WINELIB_NAME_AW(GetAtomName)
+WINBASEAPI BOOL        WINAPI GetBinaryTypeA( LPCSTR lpApplicationName, LPDWORD lpBinaryType );
+WINBASEAPI BOOL        WINAPI GetBinaryTypeW( LPCWSTR lpApplicationName, LPDWORD lpBinaryType );
+#define                       GetBinaryType WINELIB_NAME_AW(GetBinaryType)
+WINBASEAPI BOOL        WINAPI GetCurrentActCtx(HANDLE *);
+WINBASEAPI BOOL        WINAPI GetCommConfig(HANDLE,LPCOMMCONFIG,LPDWORD);
+WINBASEAPI BOOL        WINAPI GetCommMask(HANDLE,LPDWORD);
+WINBASEAPI BOOL        WINAPI GetCommModemStatus(HANDLE,LPDWORD);
+WINBASEAPI BOOL        WINAPI GetCommProperties(HANDLE,LPCOMMPROP);
+WINBASEAPI BOOL        WINAPI GetCommState(HANDLE,LPDCB);
+WINBASEAPI BOOL        WINAPI GetCommTimeouts(HANDLE,LPCOMMTIMEOUTS);
+WINBASEAPI LPSTR       WINAPI GetCommandLineA(void);
+WINBASEAPI LPWSTR      WINAPI GetCommandLineW(void);
+#define                       GetCommandLine WINELIB_NAME_AW(GetCommandLine)
+WINBASEAPI DWORD       WINAPI GetCompressedFileSizeA(LPCSTR,LPDWORD);
+WINBASEAPI DWORD       WINAPI GetCompressedFileSizeW(LPCWSTR,LPDWORD);
+#define                       GetCompressedFileSize WINELIB_NAME_AW(GetCompressedFileSize)
+WINBASEAPI BOOL        WINAPI GetComputerNameA(LPSTR,LPDWORD);
+WINBASEAPI BOOL        WINAPI GetComputerNameW(LPWSTR,LPDWORD);
+#define                       GetComputerName WINELIB_NAME_AW(GetComputerName)
+WINBASEAPI BOOL        WINAPI GetComputerNameExA(COMPUTER_NAME_FORMAT,LPSTR,LPDWORD);
+WINBASEAPI BOOL        WINAPI GetComputerNameExW(COMPUTER_NAME_FORMAT,LPWSTR,LPDWORD);
+#define                       GetComputerNameEx WINELIB_NAME_AW(GetComputerNameEx)
+WINBASEAPI UINT        WINAPI GetCurrentDirectoryA(UINT,LPSTR);
+WINBASEAPI UINT        WINAPI GetCurrentDirectoryW(UINT,LPWSTR);
+#define                       GetCurrentDirectory WINELIB_NAME_AW(GetCurrentDirectory)
+WINADVAPI  BOOL        WINAPI GetCurrentHwProfileA(LPHW_PROFILE_INFOA);
+WINADVAPI  BOOL        WINAPI GetCurrentHwProfileW(LPHW_PROFILE_INFOW);
+#define                       GetCurrentHwProfile WINELIB_NAME_AW(GetCurrentHwProfile)
+WINBASEAPI HANDLE      WINAPI GetCurrentProcess(void);
+WINBASEAPI HANDLE      WINAPI GetCurrentThread(void);
+#define                       GetCurrentTime() GetTickCount()
+WINBASEAPI BOOL        WINAPI GetDefaultCommConfigA(LPCSTR,LPCOMMCONFIG,LPDWORD);
+WINBASEAPI BOOL        WINAPI GetDefaultCommConfigW(LPCWSTR,LPCOMMCONFIG,LPDWORD);
+#define                       GetDefaultCommConfig WINELIB_NAME_AW(GetDefaultCommConfig)
+WINBASEAPI BOOL        WINAPI GetDevicePowerState(HANDLE,BOOL*);
+WINBASEAPI BOOL        WINAPI GetDiskFreeSpaceA(LPCSTR,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
+WINBASEAPI BOOL        WINAPI GetDiskFreeSpaceW(LPCWSTR,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
+#define                       GetDiskFreeSpace WINELIB_NAME_AW(GetDiskFreeSpace)
+WINBASEAPI BOOL        WINAPI GetDiskFreeSpaceExA(LPCSTR,PULARGE_INTEGER,PULARGE_INTEGER,PULARGE_INTEGER);
+WINBASEAPI BOOL        WINAPI GetDiskFreeSpaceExW(LPCWSTR,PULARGE_INTEGER,PULARGE_INTEGER,PULARGE_INTEGER);
+#define                       GetDiskFreeSpaceEx WINELIB_NAME_AW(GetDiskFreeSpaceEx)
+WINBASEAPI DWORD       WINAPI GetDllDirectoryA(DWORD,LPSTR);
+WINBASEAPI DWORD       WINAPI GetDllDirectoryW(DWORD,LPWSTR);
+#define                       GetDllDirectory WINELIB_NAME_AW(GetDllDirectory)
+WINBASEAPI UINT        WINAPI GetDriveTypeA(LPCSTR);
+WINBASEAPI UINT        WINAPI GetDriveTypeW(LPCWSTR);
+#define                       GetDriveType WINELIB_NAME_AW(GetDriveType)
+WINBASEAPI DWORD       WINAPI GetDynamicTimeZoneInformation(PDYNAMIC_TIME_ZONE_INFORMATION);
+WINBASEAPI LPSTR       WINAPI GetEnvironmentStringsA(void);
+WINBASEAPI LPWSTR      WINAPI GetEnvironmentStringsW(void);
+#define                       GetEnvironmentStrings WINELIB_NAME_AW(GetEnvironmentStrings)
+WINBASEAPI DWORD       WINAPI GetEnvironmentVariableA(LPCSTR,LPSTR,DWORD);
+WINBASEAPI DWORD       WINAPI GetEnvironmentVariableW(LPCWSTR,LPWSTR,DWORD);
+#define                       GetEnvironmentVariable WINELIB_NAME_AW(GetEnvironmentVariable)
+WINBASEAPI BOOL        WINAPI GetExitCodeProcess(HANDLE,LPDWORD);
+WINBASEAPI BOOL        WINAPI GetExitCodeThread(HANDLE,LPDWORD);
+WINBASEAPI DWORD       WINAPI GetFileAttributesA(LPCSTR);
+WINBASEAPI DWORD       WINAPI GetFileAttributesW(LPCWSTR);
+#define                       GetFileAttributes WINELIB_NAME_AW(GetFileAttributes)
+WINBASEAPI BOOL        WINAPI GetFileAttributesExA(LPCSTR,GET_FILEEX_INFO_LEVELS,LPVOID);
+WINBASEAPI BOOL        WINAPI GetFileAttributesExW(LPCWSTR,GET_FILEEX_INFO_LEVELS,LPVOID);
+#define                       GetFileAttributesEx WINELIB_NAME_AW(GetFileAttributesEx)
+WINBASEAPI BOOL        WINAPI GetFileInformationByHandle(HANDLE,BY_HANDLE_FILE_INFORMATION*);
+WINADVAPI  BOOL        WINAPI GetFileSecurityA(LPCSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,LPDWORD);
+WINADVAPI  BOOL        WINAPI GetFileSecurityW(LPCWSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,LPDWORD);
+#define                       GetFileSecurity WINELIB_NAME_AW(GetFileSecurity)
+WINBASEAPI DWORD       WINAPI GetFileSize(HANDLE,LPDWORD);
+WINBASEAPI BOOL        WINAPI GetFileSizeEx(HANDLE,PLARGE_INTEGER);
+WINBASEAPI BOOL        WINAPI GetFileTime(HANDLE,LPFILETIME,LPFILETIME,LPFILETIME);
+WINBASEAPI DWORD       WINAPI GetFileType(HANDLE);
+#define                       GetFreeSpace(w) (0x100000L)
+WINBASEAPI DWORD       WINAPI GetFullPathNameA(LPCSTR,DWORD,LPSTR,LPSTR*);
+WINBASEAPI DWORD       WINAPI GetFullPathNameW(LPCWSTR,DWORD,LPWSTR,LPWSTR*);
+#define                       GetFullPathName WINELIB_NAME_AW(GetFullPathName)
+WINBASEAPI BOOL        WINAPI GetHandleInformation(HANDLE,LPDWORD);
+WINADVAPI  BOOL        WINAPI GetKernelObjectSecurity(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,LPDWORD);
+WINADVAPI  DWORD       WINAPI GetLengthSid(PSID);
+WINBASEAPI VOID        WINAPI GetLocalTime(LPSYSTEMTIME);
+WINBASEAPI DWORD       WINAPI GetLogicalDrives(void);
+WINBASEAPI UINT        WINAPI GetLogicalDriveStringsA(UINT,LPSTR);
+WINBASEAPI UINT        WINAPI GetLogicalDriveStringsW(UINT,LPWSTR);
+#define                       GetLogicalDriveStrings WINELIB_NAME_AW(GetLogicalDriveStrings)
+WINBASEAPI DWORD       WINAPI GetLongPathNameA(LPCSTR,LPSTR,DWORD);
+WINBASEAPI DWORD       WINAPI GetLongPathNameW(LPCWSTR,LPWSTR,DWORD);
+#define                       GetLongPathName WINELIB_NAME_AW(GetLongPathName)
+WINBASEAPI BOOL        WINAPI GetMailslotInfo(HANDLE,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
+WINBASEAPI DWORD       WINAPI GetModuleFileNameA(HMODULE,LPSTR,DWORD);
+WINBASEAPI DWORD       WINAPI GetModuleFileNameW(HMODULE,LPWSTR,DWORD);
+#define                       GetModuleFileName WINELIB_NAME_AW(GetModuleFileName)
+WINBASEAPI HMODULE     WINAPI GetModuleHandleA(LPCSTR);
+WINBASEAPI HMODULE     WINAPI GetModuleHandleW(LPCWSTR);
+#define                       GetModuleHandle WINELIB_NAME_AW(GetModuleHandle)
+WINBASEAPI BOOL        WINAPI GetModuleHandleExA(DWORD,LPCSTR,HMODULE*);
+WINBASEAPI BOOL        WINAPI GetModuleHandleExW(DWORD,LPCWSTR,HMODULE*);
+#define                       GetModuleHandleEx WINELIB_NAME_AW(GetModuleHandleEx)
+WINBASEAPI BOOL        WINAPI GetNamedPipeHandleStateA(HANDLE,LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPSTR,DWORD);
+WINBASEAPI BOOL        WINAPI GetNamedPipeHandleStateW(HANDLE,LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPWSTR,DWORD);
+#define                       GetNamedPipeHandleState WINELIB_NAME_AW(GetNamedPipeHandleState)
+WINBASEAPI BOOL        WINAPI GetNamedPipeInfo(HANDLE,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
+WINBASEAPI VOID        WINAPI GetNativeSystemInfo(LPSYSTEM_INFO);
+WINADVAPI  BOOL        WINAPI GetNumberOfEventLogRecords(HANDLE,PDWORD);
+WINADVAPI  BOOL        WINAPI GetOldestEventLogRecord(HANDLE,PDWORD);
+WINBASEAPI BOOL        WINAPI GetOverlappedResult(HANDLE,LPOVERLAPPED,LPDWORD,BOOL);
+WINBASEAPI DWORD       WINAPI GetPriorityClass(HANDLE);
+WINADVAPI  BOOL        WINAPI GetPrivateObjectSecurity(PSECURITY_DESCRIPTOR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD);
+WINBASEAPI UINT        WINAPI GetPrivateProfileIntA(LPCSTR,LPCSTR,INT,LPCSTR);
+WINBASEAPI UINT        WINAPI GetPrivateProfileIntW(LPCWSTR,LPCWSTR,INT,LPCWSTR);
+#define                       GetPrivateProfileInt WINELIB_NAME_AW(GetPrivateProfileInt)
+WINBASEAPI INT         WINAPI GetPrivateProfileSectionA(LPCSTR,LPSTR,DWORD,LPCSTR);
+WINBASEAPI INT         WINAPI GetPrivateProfileSectionW(LPCWSTR,LPWSTR,DWORD,LPCWSTR);
+#define                       GetPrivateProfileSection WINELIB_NAME_AW(GetPrivateProfileSection)
+WINBASEAPI DWORD       WINAPI GetPrivateProfileSectionNamesA(LPSTR,DWORD,LPCSTR);
+WINBASEAPI DWORD       WINAPI GetPrivateProfileSectionNamesW(LPWSTR,DWORD,LPCWSTR);
+#define                       GetPrivateProfileSectionNames WINELIB_NAME_AW(GetPrivateProfileSectionNames)
+WINBASEAPI INT         WINAPI GetPrivateProfileStringA(LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT,LPCSTR);
+WINBASEAPI INT         WINAPI GetPrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,UINT,LPCWSTR);
+#define                       GetPrivateProfileString WINELIB_NAME_AW(GetPrivateProfileString)
+WINBASEAPI BOOL        WINAPI GetPrivateProfileStructA(LPCSTR,LPCSTR,LPVOID,UINT,LPCSTR);
+WINBASEAPI BOOL        WINAPI GetPrivateProfileStructW(LPCWSTR,LPCWSTR,LPVOID,UINT,LPCWSTR);
+#define                       GetPrivateProfileStruct WINELIB_NAME_AW(GetPrivateProfileStruct)
+WINBASEAPI FARPROC     WINAPI GetProcAddress(HMODULE,LPCSTR);
+WINBASEAPI BOOL        WINAPI GetProcessAffinityMask(HANDLE,PDWORD_PTR,PDWORD_PTR);
+WINBASEAPI DWORD       WINAPI GetProcessHeaps(DWORD,PHANDLE);
+WINBASEAPI DWORD       WINAPI GetProcessId(HANDLE);
+WINBASEAPI BOOL        WINAPI GetProcessIoCounters(HANDLE,PIO_COUNTERS);
+WINBASEAPI BOOL        WINAPI GetProcessPriorityBoost(HANDLE,PBOOL);
+WINBASEAPI BOOL        WINAPI GetProcessShutdownParameters(LPDWORD,LPDWORD);
+WINBASEAPI BOOL        WINAPI GetProcessTimes(HANDLE,LPFILETIME,LPFILETIME,LPFILETIME,LPFILETIME);
+WINBASEAPI DWORD       WINAPI GetProcessVersion(DWORD);
+WINBASEAPI BOOL        WINAPI GetProcessWorkingSetSize(HANDLE,PSIZE_T,PSIZE_T);
+WINBASEAPI UINT        WINAPI GetProfileIntA(LPCSTR,LPCSTR,INT);
+WINBASEAPI UINT        WINAPI GetProfileIntW(LPCWSTR,LPCWSTR,INT);
+#define                       GetProfileInt WINELIB_NAME_AW(GetProfileInt)
+WINBASEAPI INT         WINAPI GetProfileSectionA(LPCSTR,LPSTR,DWORD);
+WINBASEAPI INT         WINAPI GetProfileSectionW(LPCWSTR,LPWSTR,DWORD);
+#define                       GetProfileSection WINELIB_NAME_AW(GetProfileSection)
+WINBASEAPI INT         WINAPI GetProfileStringA(LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT);
+WINBASEAPI INT         WINAPI GetProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,UINT);
+#define                       GetProfileString WINELIB_NAME_AW(GetProfileString)
+WINBASEAPI BOOL        WINAPI GetQueuedCompletionStatus(HANDLE,LPDWORD,PULONG_PTR,LPOVERLAPPED*,DWORD);
+WINADVAPI  BOOL        WINAPI GetSecurityDescriptorControl(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR_CONTROL,LPDWORD);
+WINADVAPI  BOOL        WINAPI GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR,LPBOOL,PACL *,LPBOOL);
+WINADVAPI  BOOL        WINAPI GetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR,PSID *,LPBOOL);
+WINADVAPI  DWORD       WINAPI GetSecurityDescriptorLength(PSECURITY_DESCRIPTOR);
+WINADVAPI  BOOL        WINAPI GetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR,PSID *,LPBOOL);
+WINADVAPI  BOOL        WINAPI GetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR,LPBOOL,PACL *,LPBOOL);
+WINADVAPI  PSID_IDENTIFIER_AUTHORITY WINAPI GetSidIdentifierAuthority(PSID);
+WINADVAPI  DWORD       WINAPI GetSidLengthRequired(BYTE);
+WINADVAPI  PDWORD      WINAPI GetSidSubAuthority(PSID,DWORD);
+WINADVAPI  PUCHAR      WINAPI GetSidSubAuthorityCount(PSID);
+WINBASEAPI DWORD       WINAPI GetShortPathNameA(LPCSTR,LPSTR,DWORD);
+WINBASEAPI DWORD       WINAPI GetShortPathNameW(LPCWSTR,LPWSTR,DWORD);
+#define                       GetShortPathName WINELIB_NAME_AW(GetShortPathName)
+WINBASEAPI VOID        WINAPI GetStartupInfoA(LPSTARTUPINFOA);
+WINBASEAPI VOID        WINAPI GetStartupInfoW(LPSTARTUPINFOW);
+#define                       GetStartupInfo WINELIB_NAME_AW(GetStartupInfo)
+WINBASEAPI HANDLE      WINAPI GetStdHandle(DWORD);
+WINBASEAPI UINT        WINAPI GetSystemDirectoryA(LPSTR,UINT);
+WINBASEAPI UINT        WINAPI GetSystemDirectoryW(LPWSTR,UINT);
+#define                       GetSystemDirectory WINELIB_NAME_AW(GetSystemDirectory)
+WINBASEAPI VOID        WINAPI GetSystemInfo(LPSYSTEM_INFO);
+WINBASEAPI BOOL        WINAPI GetSystemPowerStatus(LPSYSTEM_POWER_STATUS);
+WINBASEAPI VOID        WINAPI GetSystemTime(LPSYSTEMTIME);
+WINBASEAPI BOOL        WINAPI GetSystemTimeAdjustment(PDWORD,PDWORD,PBOOL);
+WINBASEAPI VOID        WINAPI GetSystemTimeAsFileTime(LPFILETIME);
+WINBASEAPI UINT        WINAPI GetSystemWindowsDirectoryA(LPSTR,UINT);
+WINBASEAPI UINT        WINAPI GetSystemWindowsDirectoryW(LPWSTR,UINT);
+#define                       GetSystemWindowsDirectory WINELIB_NAME_AW(GetSystemWindowsDirectory)
+WINBASEAPI DWORD       WINAPI GetTapeParameters(HANDLE,DWORD,LPDWORD,LPVOID);
+WINBASEAPI DWORD       WINAPI GetTapePosition(HANDLE,DWORD,LPDWORD,LPDWORD,LPDWORD);
+WINBASEAPI DWORD       WINAPI GetTapeStatus(HANDLE);
+WINBASEAPI UINT        WINAPI GetTempFileNameA(LPCSTR,LPCSTR,UINT,LPSTR);
+WINBASEAPI UINT        WINAPI GetTempFileNameW(LPCWSTR,LPCWSTR,UINT,LPWSTR);
+#define                       GetTempFileName WINELIB_NAME_AW(GetTempFileName)
+WINBASEAPI DWORD       WINAPI GetTempPathA(DWORD,LPSTR);
+WINBASEAPI DWORD       WINAPI GetTempPathW(DWORD,LPWSTR);
+#define                       GetTempPath WINELIB_NAME_AW(GetTempPath)
+WINBASEAPI DWORD       WINAPI GetThreadId(HANDLE);
+WINBASEAPI DWORD       WINAPI GetTickCount(void);
+WINBASEAPI ULONGLONG   WINAPI GetTickCount64(void);
+WINBASEAPI DWORD       WINAPI GetTimeZoneInformation(LPTIME_ZONE_INFORMATION);
+WINBASEAPI BOOL        WINAPI GetThreadContext(HANDLE,CONTEXT *);
+WINBASEAPI INT         WINAPI GetThreadPriority(HANDLE);
+WINBASEAPI BOOL        WINAPI GetThreadPriorityBoost(HANDLE,PBOOL);
+WINBASEAPI BOOL        WINAPI GetThreadSelectorEntry(HANDLE,DWORD,LPLDT_ENTRY);
+WINBASEAPI BOOL        WINAPI GetThreadTimes(HANDLE,LPFILETIME,LPFILETIME,LPFILETIME,LPFILETIME);
+WINADVAPI  BOOL        WINAPI GetTokenInformation(HANDLE,TOKEN_INFORMATION_CLASS,LPVOID,DWORD,LPDWORD);
+WINADVAPI  BOOL        WINAPI GetUserNameA(LPSTR,LPDWORD);
+WINADVAPI  BOOL        WINAPI GetUserNameW(LPWSTR,LPDWORD);
+#define                       GetUserName WINELIB_NAME_AW(GetUserName)
+WINBASEAPI DWORD       WINAPI GetVersion(void);
+WINBASEAPI BOOL        WINAPI GetVersionExA(OSVERSIONINFOA*);
+WINBASEAPI BOOL        WINAPI GetVersionExW(OSVERSIONINFOW*);
+#define                       GetVersionEx WINELIB_NAME_AW(GetVersionEx)
+WINBASEAPI BOOL        WINAPI GetVolumeInformationA(LPCSTR,LPSTR,DWORD,LPDWORD,LPDWORD,LPDWORD,LPSTR,DWORD);
+WINBASEAPI BOOL        WINAPI GetVolumeInformationW(LPCWSTR,LPWSTR,DWORD,LPDWORD,LPDWORD,LPDWORD,LPWSTR,DWORD);
+#define                       GetVolumeInformation WINELIB_NAME_AW(GetVolumeInformation)
+WINBASEAPI BOOL        WINAPI GetVolumeNameForVolumeMountPointA(LPCSTR,LPSTR,DWORD);
+WINBASEAPI BOOL        WINAPI GetVolumeNameForVolumeMountPointW(LPCWSTR,LPWSTR,DWORD);
+#define                       GetVolumeNameForVolumeMountPoint WINELIB_NAME_AW(GetVolumeNameForVolumeMountPoint)
+WINBASEAPI BOOL        WINAPI GetVolumePathNameA(LPCSTR,LPSTR,DWORD);
+WINBASEAPI BOOL        WINAPI GetVolumePathNameW(LPCWSTR,LPWSTR,DWORD);
+#define                       GetVolumePathName WINELIB_NAME_AW(GetVolumePathName)
+WINBASEAPI BOOL        WINAPI GetVolumePathNamesForVolumeNameA(LPCSTR,LPSTR,DWORD,PDWORD);
+WINBASEAPI BOOL        WINAPI GetVolumePathNamesForVolumeNameW(LPCWSTR,LPWSTR,DWORD,PDWORD);
+#define                       GetVolumePathNamesForVolumeName WINELIB_NAME_AW(GetVolumePathNamesForVolumeName)
+WINBASEAPI UINT        WINAPI GetWindowsDirectoryA(LPSTR,UINT);
+WINBASEAPI UINT        WINAPI GetWindowsDirectoryW(LPWSTR,UINT);
+#define                       GetWindowsDirectory WINELIB_NAME_AW(GetWindowsDirectory)
+WINBASEAPI UINT        WINAPI GetWriteWatch(DWORD,LPVOID,SIZE_T,LPVOID*,ULONG_PTR*,ULONG*);
+WINBASEAPI ATOM        WINAPI GlobalAddAtomA(LPCSTR);
+WINBASEAPI ATOM        WINAPI GlobalAddAtomW(LPCWSTR);
+#define                       GlobalAddAtom WINELIB_NAME_AW(GlobalAddAtom)
+WINBASEAPI HGLOBAL     WINAPI GlobalAlloc(UINT,SIZE_T) __WINE_ALLOC_SIZE(2);
+WINBASEAPI SIZE_T      WINAPI GlobalCompact(DWORD);
+WINBASEAPI ATOM        WINAPI GlobalDeleteAtom(ATOM);
+WINBASEAPI ATOM        WINAPI GlobalFindAtomA(LPCSTR);
+WINBASEAPI ATOM        WINAPI GlobalFindAtomW(LPCWSTR);
+#define                       GlobalFindAtom WINELIB_NAME_AW(GlobalFindAtom)
+WINBASEAPI VOID        WINAPI GlobalFix(HGLOBAL);
+WINBASEAPI UINT        WINAPI GlobalFlags(HGLOBAL);
+WINBASEAPI HGLOBAL     WINAPI GlobalFree(HGLOBAL);
+WINBASEAPI UINT        WINAPI GlobalGetAtomNameA(ATOM,LPSTR,INT);
+WINBASEAPI UINT        WINAPI GlobalGetAtomNameW(ATOM,LPWSTR,INT);
+#define                       GlobalGetAtomName WINELIB_NAME_AW(GlobalGetAtomName)
+WINBASEAPI HGLOBAL     WINAPI GlobalHandle(LPCVOID);
+WINBASEAPI LPVOID      WINAPI GlobalLock(HGLOBAL);
+WINBASEAPI VOID        WINAPI GlobalMemoryStatus(LPMEMORYSTATUS);
+WINBASEAPI BOOL        WINAPI GlobalMemoryStatusEx(LPMEMORYSTATUSEX);
+WINBASEAPI HGLOBAL     WINAPI GlobalReAlloc(HGLOBAL,SIZE_T,UINT) __WINE_ALLOC_SIZE(3);
+WINBASEAPI SIZE_T      WINAPI GlobalSize(HGLOBAL);
+WINBASEAPI VOID        WINAPI GlobalUnfix(HGLOBAL);
+WINBASEAPI BOOL        WINAPI GlobalUnlock(HGLOBAL);
+WINBASEAPI BOOL        WINAPI GlobalUnWire(HGLOBAL);
+WINBASEAPI LPVOID      WINAPI GlobalWire(HGLOBAL);
+#define                       HasOverlappedCompleted(lpOverlapped) ((lpOverlapped)->Internal != STATUS_PENDING)
+WINBASEAPI LPVOID      WINAPI HeapAlloc(HANDLE,DWORD,SIZE_T) __WINE_ALLOC_SIZE(3);
+WINBASEAPI SIZE_T      WINAPI HeapCompact(HANDLE,DWORD);
+WINBASEAPI HANDLE      WINAPI HeapCreate(DWORD,SIZE_T,SIZE_T);
+WINBASEAPI BOOL        WINAPI HeapDestroy(HANDLE);
+WINBASEAPI BOOL        WINAPI HeapFree(HANDLE,DWORD,LPVOID);
+WINBASEAPI BOOL        WINAPI HeapLock(HANDLE);
+WINBASEAPI LPVOID      WINAPI HeapReAlloc(HANDLE,DWORD,LPVOID,SIZE_T) __WINE_ALLOC_SIZE(4);
+WINBASEAPI BOOL        WINAPI HeapQueryInformation(HANDLE,HEAP_INFORMATION_CLASS,PVOID,SIZE_T,PSIZE_T);
+WINBASEAPI BOOL        WINAPI HeapSetInformation(HANDLE,HEAP_INFORMATION_CLASS,PVOID,SIZE_T);
+WINBASEAPI SIZE_T      WINAPI HeapSize(HANDLE,DWORD,LPCVOID);
+WINBASEAPI BOOL        WINAPI HeapUnlock(HANDLE);
+WINBASEAPI BOOL        WINAPI HeapValidate(HANDLE,DWORD,LPCVOID);
+WINBASEAPI BOOL        WINAPI HeapWalk(HANDLE,LPPROCESS_HEAP_ENTRY);
+WINBASEAPI BOOL        WINAPI InitAtomTable(DWORD);
+WINADVAPI  BOOL        WINAPI InitializeAcl(PACL,DWORD,DWORD);
+WINBASEAPI void        WINAPI InitializeCriticalSection(CRITICAL_SECTION *lpCrit);
+WINBASEAPI BOOL        WINAPI InitializeCriticalSectionAndSpinCount(CRITICAL_SECTION *,DWORD);
+WINBASEAPI BOOL        WINAPI InitializeCriticalSectionEx(CRITICAL_SECTION *,DWORD,DWORD);
+WINADVAPI  BOOL        WINAPI InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD);
+WINADVAPI  BOOL        WINAPI InitializeSid(PSID,PSID_IDENTIFIER_AUTHORITY,BYTE);
+WINBASEAPI VOID        WINAPI InitializeSListHead(PSLIST_HEADER);
+WINBASEAPI PSLIST_ENTRY WINAPI InterlockedFlushSList(PSLIST_HEADER);
+WINBASEAPI PSLIST_ENTRY WINAPI InterlockedPopEntrySList(PSLIST_HEADER);
+WINBASEAPI PSLIST_ENTRY WINAPI InterlockedPushEntrySList(PSLIST_HEADER, PSLIST_ENTRY);
+WINBASEAPI BOOL        WINAPI IsBadCodePtr(FARPROC);
+WINBASEAPI BOOL        WINAPI IsBadHugeReadPtr(LPCVOID,UINT);
+WINBASEAPI BOOL        WINAPI IsBadHugeWritePtr(LPVOID,UINT);
+WINBASEAPI BOOL        WINAPI IsBadReadPtr(LPCVOID,UINT);
+WINBASEAPI BOOL        WINAPI IsBadStringPtrA(LPCSTR,UINT);
+WINBASEAPI BOOL        WINAPI IsBadStringPtrW(LPCWSTR,UINT);
+#define                       IsBadStringPtr WINELIB_NAME_AW(IsBadStringPtr)
+WINBASEAPI BOOL        WINAPI IsBadWritePtr(LPVOID,UINT);
+WINBASEAPI BOOL        WINAPI IsDebuggerPresent(void);
+WINBASEAPI BOOL        WINAPI IsSystemResumeAutomatic(void);
+WINADVAPI  BOOL        WINAPI IsTextUnicode(LPCVOID,INT,LPINT);
+WINADVAPI  BOOL        WINAPI IsTokenRestricted(HANDLE);
+WINADVAPI  BOOL        WINAPI IsValidAcl(PACL);
+WINADVAPI  BOOL        WINAPI IsValidSecurityDescriptor(PSECURITY_DESCRIPTOR);
+WINADVAPI  BOOL        WINAPI IsValidSid(PSID);
+WINADVAPI  BOOL        WINAPI IsWellKnownSid(PSID,WELL_KNOWN_SID_TYPE);
+WINBASEAPI BOOL        WINAPI IsWow64Process(HANDLE,PBOOL);
+WINADVAPI  BOOL        WINAPI ImpersonateLoggedOnUser(HANDLE);
+WINADVAPI  BOOL        WINAPI ImpersonateNamedPipeClient(HANDLE);
+WINADVAPI  BOOL        WINAPI ImpersonateSelf(SECURITY_IMPERSONATION_LEVEL);
+WINBASEAPI BOOL        WINAPI IsProcessInJob(HANDLE,HANDLE,PBOOL);
+WINBASEAPI BOOL        WINAPI IsProcessorFeaturePresent(DWORD);
+WINBASEAPI void        WINAPI LeaveCriticalSection(CRITICAL_SECTION *lpCrit);
+WINBASEAPI HMODULE     WINAPI LoadLibraryA(LPCSTR);
+WINBASEAPI HMODULE     WINAPI LoadLibraryW(LPCWSTR);
+#define                       LoadLibrary WINELIB_NAME_AW(LoadLibrary)
+WINBASEAPI HMODULE     WINAPI LoadLibraryExA(LPCSTR,HANDLE,DWORD);
+WINBASEAPI HMODULE     WINAPI LoadLibraryExW(LPCWSTR,HANDLE,DWORD);
+#define                       LoadLibraryEx WINELIB_NAME_AW(LoadLibraryEx)
+WINBASEAPI HINSTANCE   WINAPI LoadModule(LPCSTR,LPVOID);
+WINBASEAPI HGLOBAL     WINAPI LoadResource(HMODULE,HRSRC);
+WINBASEAPI HLOCAL      WINAPI LocalAlloc(UINT,SIZE_T) __WINE_ALLOC_SIZE(2);
+WINBASEAPI SIZE_T      WINAPI LocalCompact(UINT);
+WINBASEAPI UINT        WINAPI LocalFlags(HLOCAL);
+WINBASEAPI HLOCAL      WINAPI LocalFree(HLOCAL);
+WINBASEAPI HLOCAL      WINAPI LocalHandle(LPCVOID);
+WINBASEAPI LPVOID      WINAPI LocalLock(HLOCAL);
+WINBASEAPI HLOCAL      WINAPI LocalReAlloc(HLOCAL,SIZE_T,UINT) __WINE_ALLOC_SIZE(3);
+WINBASEAPI SIZE_T      WINAPI LocalShrink(HGLOBAL,UINT);
+WINBASEAPI SIZE_T      WINAPI LocalSize(HLOCAL);
+WINBASEAPI BOOL        WINAPI LocalUnlock(HLOCAL);
+WINBASEAPI LPVOID      WINAPI LockResource(HGLOBAL);
+#define                       LockSegment(handle) GlobalFix((HANDLE)(handle))
+WINADVAPI  BOOL        WINAPI LookupAccountNameA(LPCSTR,LPCSTR,PSID,LPDWORD,LPSTR,LPDWORD,PSID_NAME_USE);
+WINADVAPI  BOOL        WINAPI LookupAccountNameW(LPCWSTR,LPCWSTR,PSID,LPDWORD,LPWSTR,LPDWORD,PSID_NAME_USE);
+#define                       LookupAccountName WINELIB_NAME_AW(LookupAccountName)
+WINADVAPI  BOOL        WINAPI LookupAccountSidA(LPCSTR,PSID,LPSTR,LPDWORD,LPSTR,LPDWORD,PSID_NAME_USE);
+WINADVAPI  BOOL        WINAPI LookupAccountSidW(LPCWSTR,PSID,LPWSTR,LPDWORD,LPWSTR,LPDWORD,PSID_NAME_USE);
+#define                       LookupAccountSid WINELIB_NAME_AW(LookupAccountSid)
+WINBASEAPI BOOL        WINAPI LocalFileTimeToFileTime(const FILETIME*,LPFILETIME);
+WINBASEAPI BOOL        WINAPI LockFile(HANDLE,DWORD,DWORD,DWORD,DWORD);
+WINBASEAPI BOOL        WINAPI LockFileEx(HANDLE, DWORD, DWORD, DWORD, DWORD, LPOVERLAPPED);
+WINADVAPI  BOOL        WINAPI LogonUserA(LPCSTR,LPCSTR,LPCSTR,DWORD,DWORD,PHANDLE);
+WINADVAPI  BOOL        WINAPI LogonUserW(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,DWORD,PHANDLE);
+#define                       LogonUser WINELIB_NAME_AW(LogonUser)
+WINADVAPI  BOOL        WINAPI LookupPrivilegeDisplayNameA(LPCSTR,LPCSTR,LPSTR,LPDWORD,LPDWORD);
+WINADVAPI  BOOL        WINAPI LookupPrivilegeDisplayNameW(LPCWSTR,LPCWSTR,LPWSTR,LPDWORD,LPDWORD);
+#define                       LookupPrivilegeDisplayName WINELIB_NAME_AW(LookupPrivilegeDisplayName)
+WINADVAPI  BOOL        WINAPI LookupPrivilegeNameA(LPCSTR,PLUID,LPSTR,LPDWORD);
+WINADVAPI  BOOL        WINAPI LookupPrivilegeNameW(LPCWSTR,PLUID,LPWSTR,LPDWORD);
+#define                       LookupPrivilegeName WINELIB_NAME_AW(LookupPrivilegeName)
+WINADVAPI  BOOL        WINAPI LookupPrivilegeValueA(LPCSTR,LPCSTR,PLUID);
+WINADVAPI  BOOL        WINAPI LookupPrivilegeValueW(LPCWSTR,LPCWSTR,PLUID);
+#define                       LookupPrivilegeValue WINELIB_NAME_AW(LookupPrivilegeValue)
+WINADVAPI  BOOL        WINAPI MakeAbsoluteSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,LPDWORD,PACL,LPDWORD,PACL,LPDWORD,PSID,LPDWORD,PSID,LPDWORD);
+WINBASEAPI void        WINAPI MakeCriticalSectionGlobal(CRITICAL_SECTION *lpCrit);
+#define                       MakeProcInstance(proc,inst) (proc)
+WINADVAPI  BOOL        WINAPI MakeSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,LPDWORD);
+WINADVAPI  VOID        WINAPI MapGenericMask(PDWORD,PGENERIC_MAPPING);
+WINBASEAPI HMODULE     WINAPI MapHModuleSL(WORD);
+WINBASEAPI WORD        WINAPI MapHModuleLS(HMODULE);
+WINBASEAPI LPVOID      WINAPI MapViewOfFile(HANDLE,DWORD,DWORD,DWORD,SIZE_T);
+WINBASEAPI LPVOID      WINAPI MapViewOfFileEx(HANDLE,DWORD,DWORD,DWORD,SIZE_T,LPVOID);
+WINBASEAPI BOOL        WINAPI MoveFileA(LPCSTR,LPCSTR);
+WINBASEAPI BOOL        WINAPI MoveFileW(LPCWSTR,LPCWSTR);
+#define                       MoveFile WINELIB_NAME_AW(MoveFile)
+WINBASEAPI BOOL        WINAPI MoveFileExA(LPCSTR,LPCSTR,DWORD);
+WINBASEAPI BOOL        WINAPI MoveFileExW(LPCWSTR,LPCWSTR,DWORD);
+#define                       MoveFileEx WINELIB_NAME_AW(MoveFileEx)
+WINBASEAPI BOOL        WINAPI MoveFileWithProgressA(LPCSTR,LPCSTR,LPPROGRESS_ROUTINE,LPVOID,DWORD);
+WINBASEAPI BOOL        WINAPI MoveFileWithProgressW(LPCWSTR,LPCWSTR,LPPROGRESS_ROUTINE,LPVOID,DWORD);
+#define                       MoveFileWithProgress WINELIB_NAME_AW(MoveFileWithProgress)
+WINBASEAPI INT         WINAPI MulDiv(INT,INT,INT);
+WINBASEAPI BOOL        WINAPI NeedCurrentDirectoryForExePathA(LPCSTR);
+WINBASEAPI BOOL        WINAPI NeedCurrentDirectoryForExePathW(LPCWSTR);
+#define                       NeedCurrentDirectoryForExePath WINELIB_NAME_AW(NeedCurrentDirectoryForExePath)
+WINADVAPI  BOOL        WINAPI NotifyChangeEventLog(HANDLE,HANDLE);
+WINADVAPI  BOOL        WINAPI ObjectCloseAuditAlarmA(LPCSTR,LPVOID,BOOL);
+WINADVAPI  BOOL        WINAPI ObjectCloseAuditAlarmW(LPCWSTR,LPVOID,BOOL);
+#define                       ObjectCloseAuditAlarm WINELIB_NAME_AW(ObjectCloseAuditAlarm)
+WINADVAPI  BOOL        WINAPI ObjectDeleteAuditAlarmA(LPCSTR,LPVOID,BOOL);
+WINADVAPI  BOOL        WINAPI ObjectDeleteAuditAlarmW(LPCWSTR,LPVOID,BOOL);
+#define                       ObjectDeleteAuditAlarm WINELIB_NAME_AW(ObjectDeleteAuditAlarm)
+WINADVAPI  BOOL        WINAPI ObjectOpenAuditAlarmA(LPCSTR,LPVOID,LPSTR,LPSTR,PSECURITY_DESCRIPTOR,HANDLE,DWORD,DWORD,PPRIVILEGE_SET,BOOL,BOOL,LPBOOL);
+WINADVAPI  BOOL        WINAPI ObjectOpenAuditAlarmW(LPCWSTR,LPVOID,LPWSTR,LPWSTR,PSECURITY_DESCRIPTOR,HANDLE,DWORD,DWORD,PPRIVILEGE_SET,BOOL,BOOL,LPBOOL);
+#define                       ObjectOpenAuditAlarm WINELIB_NAME_AW(ObjectOpenAuditAlarm)
+WINADVAPI  BOOL        WINAPI ObjectPrivilegeAuditAlarmA(LPCSTR,LPVOID,HANDLE,DWORD,PPRIVILEGE_SET,BOOL);
+WINADVAPI  BOOL        WINAPI ObjectPrivilegeAuditAlarmW(LPCWSTR,LPVOID,HANDLE,DWORD,PPRIVILEGE_SET,BOOL);
+#define                       ObjectPrivilegeAuditAlarm WINELIB_NAME_AW(ObjectPrivilegeAuditAlarm)
+WINADVAPI  HANDLE      WINAPI OpenBackupEventLogA(LPCSTR,LPCSTR);
+WINADVAPI  HANDLE      WINAPI OpenBackupEventLogW(LPCWSTR,LPCWSTR);
+#define                       OpenBackupEventLog WINELIB_NAME_AW(OpenBackupEventLog)
+WINBASEAPI HANDLE      WINAPI OpenEventA(DWORD,BOOL,LPCSTR);
+WINBASEAPI HANDLE      WINAPI OpenEventW(DWORD,BOOL,LPCWSTR);
+#define                       OpenEvent WINELIB_NAME_AW(OpenEvent)
+WINADVAPI  HANDLE      WINAPI OpenEventLogA(LPCSTR,LPCSTR);
+WINADVAPI  HANDLE      WINAPI OpenEventLogW(LPCWSTR,LPCWSTR);
+#define                       OpenEventLog WINELIB_NAME_AW(OpenEventLog)
+WINBASEAPI HFILE       WINAPI OpenFile(LPCSTR,OFSTRUCT*,UINT);
+WINBASEAPI HANDLE      WINAPI OpenFileMappingA(DWORD,BOOL,LPCSTR);
+WINBASEAPI HANDLE      WINAPI OpenFileMappingW(DWORD,BOOL,LPCWSTR);
+#define                       OpenFileMapping WINELIB_NAME_AW(OpenFileMapping)
+WINBASEAPI HANDLE      WINAPI OpenJobObjectA(DWORD,BOOL,LPCSTR);
+WINBASEAPI HANDLE      WINAPI OpenJobObjectW(DWORD,BOOL,LPCWSTR);
+#define                       OpenJobObject WINELIB_NAME_AW(OpenJobObject)
+WINBASEAPI HANDLE      WINAPI OpenMutexA(DWORD,BOOL,LPCSTR);
+WINBASEAPI HANDLE      WINAPI OpenMutexW(DWORD,BOOL,LPCWSTR);
+#define                       OpenMutex WINELIB_NAME_AW(OpenMutex)
+WINBASEAPI HANDLE      WINAPI OpenProcess(DWORD,BOOL,DWORD);
+WINADVAPI  BOOL        WINAPI OpenProcessToken(HANDLE,DWORD,PHANDLE);
+WINBASEAPI HANDLE      WINAPI OpenSemaphoreA(DWORD,BOOL,LPCSTR);
+WINBASEAPI HANDLE      WINAPI OpenSemaphoreW(DWORD,BOOL,LPCWSTR);
+#define                       OpenSemaphore WINELIB_NAME_AW(OpenSemaphore)
+WINBASEAPI HANDLE      WINAPI OpenThread(DWORD,BOOL,DWORD);
+WINADVAPI  BOOL        WINAPI OpenThreadToken(HANDLE,DWORD,BOOL,PHANDLE);
+WINBASEAPI HANDLE      WINAPI OpenWaitableTimerA(DWORD,BOOL,LPCSTR);
+WINBASEAPI HANDLE      WINAPI OpenWaitableTimerW(DWORD,BOOL,LPCWSTR);
+#define                       OpenWaitableTimer WINELIB_NAME_AW(OpenWaitableTimer)
+WINBASEAPI VOID        WINAPI OutputDebugStringA(LPCSTR);
+WINBASEAPI VOID        WINAPI OutputDebugStringW(LPCWSTR);
+#define                       OutputDebugString WINELIB_NAME_AW(OutputDebugString)
+WINBASEAPI BOOL        WINAPI PeekNamedPipe(HANDLE,PVOID,DWORD,PDWORD,PDWORD,PDWORD);
+WINBASEAPI BOOL        WINAPI PostQueuedCompletionStatus(HANDLE,DWORD,ULONG_PTR,LPOVERLAPPED);
+WINBASEAPI DWORD       WINAPI PrepareTape(HANDLE,DWORD,BOOL);
+WINBASEAPI BOOL        WINAPI ProcessIdToSessionId(DWORD,DWORD*);
+WINADVAPI  BOOL        WINAPI PrivilegeCheck(HANDLE,PPRIVILEGE_SET,LPBOOL);
+WINADVAPI  BOOL        WINAPI PrivilegedServiceAuditAlarmA(LPCSTR,LPCSTR,HANDLE,PPRIVILEGE_SET,BOOL);
+WINADVAPI  BOOL        WINAPI PrivilegedServiceAuditAlarmW(LPCWSTR,LPCWSTR,HANDLE,PPRIVILEGE_SET,BOOL);
+#define                       PrivilegedServiceAuditAlarm WINELIB_NAME_AW(PrivilegedServiceAuditAlarm)
+WINBASEAPI BOOL        WINAPI PulseEvent(HANDLE);
+WINBASEAPI BOOL        WINAPI PurgeComm(HANDLE,DWORD);
+WINBASEAPI BOOL        WINAPI QueryActCtxW(DWORD,HANDLE,PVOID,ULONG,PVOID,SIZE_T,SIZE_T *);
+WINBASEAPI USHORT      WINAPI QueryDepthSList(PSLIST_HEADER);
+WINBASEAPI DWORD       WINAPI QueryDosDeviceA(LPCSTR,LPSTR,DWORD);
+WINBASEAPI DWORD       WINAPI QueryDosDeviceW(LPCWSTR,LPWSTR,DWORD);
+#define                       QueryDosDevice WINELIB_NAME_AW(QueryDosDevice)
+WINBASEAPI BOOL        WINAPI QueryInformationJobObject(HANDLE,JOBOBJECTINFOCLASS,LPVOID,DWORD,DWORD*);
+WINBASEAPI BOOL        WINAPI QueryPerformanceCounter(LARGE_INTEGER*);
+WINBASEAPI BOOL        WINAPI QueryPerformanceFrequency(LARGE_INTEGER*);
+WINBASEAPI DWORD       WINAPI QueueUserAPC(PAPCFUNC,HANDLE,ULONG_PTR);
+WINBASEAPI BOOL        WINAPI QueueUserWorkItem(LPTHREAD_START_ROUTINE,PVOID,ULONG);
+WINBASEAPI void        WINAPI RaiseException(DWORD,DWORD,DWORD,const ULONG_PTR *);
+WINADVAPI  BOOL        WINAPI ReadEventLogA(HANDLE,DWORD,DWORD,LPVOID,DWORD,DWORD *,DWORD *);
+WINADVAPI  BOOL        WINAPI ReadEventLogW(HANDLE,DWORD,DWORD,LPVOID,DWORD,DWORD *,DWORD *);
+#define                       ReadEventLog WINELIB_NAME_AW(ReadEventLog)
+WINBASEAPI BOOL        WINAPI ReadDirectoryChangesW(HANDLE,LPVOID,DWORD,BOOL,DWORD,LPDWORD,LPOVERLAPPED,LPOVERLAPPED_COMPLETION_ROUTINE);
+WINBASEAPI BOOL        WINAPI ReadFile(HANDLE,LPVOID,DWORD,LPDWORD,LPOVERLAPPED);
+WINBASEAPI BOOL        WINAPI ReadFileEx(HANDLE,LPVOID,DWORD,LPOVERLAPPED,LPOVERLAPPED_COMPLETION_ROUTINE);
+WINBASEAPI BOOL        WINAPI ReadFileScatter(HANDLE,FILE_SEGMENT_ELEMENT*,DWORD,LPDWORD,LPOVERLAPPED);
+WINBASEAPI BOOL        WINAPI ReadProcessMemory(HANDLE,LPCVOID,LPVOID,SIZE_T,SIZE_T*);
+WINADVAPI  HANDLE      WINAPI RegisterEventSourceA(LPCSTR,LPCSTR);
+WINADVAPI  HANDLE      WINAPI RegisterEventSourceW(LPCWSTR,LPCWSTR);
+#define                       RegisterEventSource WINELIB_NAME_AW(RegisterEventSource)
+WINBASEAPI BOOL        WINAPI RegisterWaitForSingleObject(PHANDLE,HANDLE,WAITORTIMERCALLBACK,PVOID,ULONG,ULONG);
+WINBASEAPI HANDLE      WINAPI RegisterWaitForSingleObjectEx(HANDLE,WAITORTIMERCALLBACK,PVOID,ULONG,ULONG);
+WINBASEAPI VOID        WINAPI ReleaseActCtx(HANDLE);
+WINBASEAPI BOOL        WINAPI ReleaseMutex(HANDLE);
+WINBASEAPI BOOL        WINAPI ReleaseSemaphore(HANDLE,LONG,LPLONG);
+WINBASEAPI ULONG       WINAPI RemoveVectoredExceptionHandler(PVOID);
+WINBASEAPI BOOL        WINAPI ReplaceFileA(LPCSTR,LPCSTR,LPCSTR,DWORD,LPVOID,LPVOID);
+WINBASEAPI BOOL        WINAPI ReplaceFileW(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,LPVOID,LPVOID);
+#define                       ReplaceFile WINELIB_NAME_AW(ReplaceFile)
+WINBASEAPI BOOL        WINAPI RemoveDirectoryA(LPCSTR);
+WINBASEAPI BOOL        WINAPI RemoveDirectoryW(LPCWSTR);
+#define                       RemoveDirectory WINELIB_NAME_AW(RemoveDirectory)
+WINADVAPI  BOOL        WINAPI ReportEventA(HANDLE,WORD,WORD,DWORD,PSID,WORD,DWORD,LPCSTR *,LPVOID);
+WINADVAPI  BOOL        WINAPI ReportEventW(HANDLE,WORD,WORD,DWORD,PSID,WORD,DWORD,LPCWSTR *,LPVOID);
+WINBASEAPI BOOL        WINAPI RequestWakeupLatency(LATENCY_TIME latency);
+#define                       ReportEvent WINELIB_NAME_AW(ReportEvent)
+WINBASEAPI BOOL        WINAPI ResetEvent(HANDLE);
+WINBASEAPI UINT        WINAPI ResetWriteWatch(LPVOID,SIZE_T);
+WINBASEAPI DWORD       WINAPI ResumeThread(HANDLE);
+WINADVAPI  BOOL        WINAPI RevertToSelf(void);
+WINBASEAPI DWORD       WINAPI SearchPathA(LPCSTR,LPCSTR,LPCSTR,DWORD,LPSTR,LPSTR*);
+WINBASEAPI DWORD       WINAPI SearchPathW(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,LPWSTR,LPWSTR*);
+#define                       SearchPath WINELIB_NAME_AW(SearchPath)
+WINADVAPI  BOOL        WINAPI SetAclInformation(PACL,LPVOID,DWORD,ACL_INFORMATION_CLASS);
+WINBASEAPI BOOL        WINAPI SetCommConfig(HANDLE,LPCOMMCONFIG,DWORD);
+WINBASEAPI BOOL        WINAPI SetCommBreak(HANDLE);
+WINBASEAPI BOOL        WINAPI SetCommMask(HANDLE,DWORD);
+WINBASEAPI BOOL        WINAPI SetCommState(HANDLE,LPDCB);
+WINBASEAPI BOOL        WINAPI SetCommTimeouts(HANDLE,LPCOMMTIMEOUTS);
+WINBASEAPI BOOL        WINAPI SetComputerNameA(LPCSTR);
+WINBASEAPI BOOL        WINAPI SetComputerNameW(LPCWSTR);
+#define                       SetComputerName WINELIB_NAME_AW(SetComputerName)
+WINBASEAPI BOOL        WINAPI SetComputerNameExA(COMPUTER_NAME_FORMAT,LPCSTR);
+WINBASEAPI BOOL        WINAPI SetComputerNameExW(COMPUTER_NAME_FORMAT,LPCWSTR);
+#define                       SetComputerNameEx WINELIB_NAME_AW(SetComputerNameEx)
+WINBASEAPI DWORD       WINAPI SetCriticalSectionSpinCount(LPCRITICAL_SECTION,DWORD);
+WINBASEAPI BOOL        WINAPI SetCurrentDirectoryA(LPCSTR);
+WINBASEAPI BOOL        WINAPI SetCurrentDirectoryW(LPCWSTR);
+#define                       SetCurrentDirectory WINELIB_NAME_AW(SetCurrentDirectory)
+WINBASEAPI BOOL        WINAPI SetDefaultCommConfigA(LPCSTR,LPCOMMCONFIG,DWORD);
+WINBASEAPI BOOL        WINAPI SetDefaultCommConfigW(LPCWSTR,LPCOMMCONFIG,DWORD);
+#define                       SetDefaultCommConfig WINELIB_NAME_AW(SetDefaultCommConfig)
+WINBASEAPI BOOL        WINAPI SetDllDirectoryA(LPCSTR);
+WINBASEAPI BOOL        WINAPI SetDllDirectoryW(LPCWSTR);
+#define                       SetDllDirectory WINELIB_NAME_AW(SetDllDirectory)
+WINBASEAPI BOOL        WINAPI SetDynamicTimeZoneInformation(CONST DYNAMIC_TIME_ZONE_INFORMATION*);
+WINBASEAPI BOOL        WINAPI SetEndOfFile(HANDLE);
+WINBASEAPI BOOL        WINAPI SetEnvironmentVariableA(LPCSTR,LPCSTR);
+WINBASEAPI BOOL        WINAPI SetEnvironmentVariableW(LPCWSTR,LPCWSTR);
+#define                       SetEnvironmentVariable WINELIB_NAME_AW(SetEnvironmentVariable)
+WINBASEAPI UINT        WINAPI SetErrorMode(UINT);
+WINBASEAPI BOOL        WINAPI SetEvent(HANDLE);
+WINBASEAPI VOID        WINAPI SetFileApisToANSI(void);
+WINBASEAPI VOID        WINAPI SetFileApisToOEM(void);
+WINBASEAPI BOOL        WINAPI SetFileAttributesA(LPCSTR,DWORD);
+WINBASEAPI BOOL        WINAPI SetFileAttributesW(LPCWSTR,DWORD);
+#define                       SetFileAttributes WINELIB_NAME_AW(SetFileAttributes)
+WINBASEAPI DWORD       WINAPI SetFilePointer(HANDLE,LONG,LPLONG,DWORD);
+WINBASEAPI BOOL        WINAPI SetFilePointerEx(HANDLE,LARGE_INTEGER,LARGE_INTEGER*,DWORD);
+WINADVAPI  BOOL        WINAPI SetFileSecurityA(LPCSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+WINADVAPI  BOOL        WINAPI SetFileSecurityW(LPCWSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+#define                       SetFileSecurity WINELIB_NAME_AW(SetFileSecurity)
+WINBASEAPI BOOL        WINAPI SetFileTime(HANDLE,const FILETIME*,const FILETIME*,const FILETIME*);
+WINBASEAPI UINT        WINAPI SetHandleCount(UINT);
+WINBASEAPI BOOL        WINAPI SetHandleInformation(HANDLE,DWORD,DWORD);
+WINBASEAPI BOOL        WINAPI SetInformationJobObject(HANDLE,JOBOBJECTINFOCLASS,LPVOID,DWORD);
+WINADVAPI  BOOL        WINAPI SetKernelObjectSecurity(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+WINBASEAPI BOOL        WINAPI SetLocalTime(const SYSTEMTIME*);
+WINBASEAPI BOOL        WINAPI SetMailslotInfo(HANDLE,DWORD);
+WINBASEAPI BOOL        WINAPI SetNamedPipeHandleState(HANDLE,LPDWORD,LPDWORD,LPDWORD);
+WINBASEAPI BOOL        WINAPI SetPriorityClass(HANDLE,DWORD);
+WINADVAPI  BOOL        WINAPI SetPrivateObjectSecurity(SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,PGENERIC_MAPPING,HANDLE);
+WINBASEAPI BOOL        WINAPI SetProcessAffinityMask(HANDLE,DWORD_PTR);
+WINBASEAPI BOOL        WINAPI SetProcessPriorityBoost(HANDLE,BOOL);
+WINBASEAPI BOOL        WINAPI SetProcessShutdownParameters(DWORD,DWORD);
+WINBASEAPI BOOL        WINAPI SetProcessWorkingSetSize(HANDLE,SIZE_T,SIZE_T);
+WINADVAPI  BOOL        WINAPI SetSecurityDescriptorControl(PSECURITY_DESCRIPTOR,SECURITY_DESCRIPTOR_CONTROL,SECURITY_DESCRIPTOR_CONTROL);
+WINADVAPI  BOOL        WINAPI SetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR,BOOL,PACL,BOOL);
+WINADVAPI  BOOL        WINAPI SetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR,PSID,BOOL);
+WINADVAPI  BOOL        WINAPI SetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR,PSID,BOOL);
+WINADVAPI  BOOL        WINAPI SetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR,BOOL,PACL,BOOL);
+WINBASEAPI BOOL        WINAPI SetStdHandle(DWORD,HANDLE);
+#define                       SetSwapAreaSize(w) (w)
+WINBASEAPI BOOL        WINAPI SetSystemPowerState(BOOL,BOOL);
+WINBASEAPI BOOL        WINAPI SetSystemTime(const SYSTEMTIME*);
+WINBASEAPI BOOL        WINAPI SetSystemTimeAdjustment(DWORD,BOOL);
+WINBASEAPI DWORD       WINAPI SetTapeParameters(HANDLE,DWORD,LPVOID);
+WINBASEAPI DWORD       WINAPI SetTapePosition(HANDLE,DWORD,DWORD,DWORD,DWORD,BOOL);
+WINBASEAPI DWORD_PTR   WINAPI SetThreadAffinityMask(HANDLE,DWORD_PTR);
+WINBASEAPI BOOL        WINAPI SetThreadContext(HANDLE,const CONTEXT *);
+WINBASEAPI DWORD       WINAPI SetThreadExecutionState(EXECUTION_STATE);
+WINBASEAPI DWORD       WINAPI SetThreadIdealProcessor(HANDLE,DWORD);
+WINBASEAPI BOOL        WINAPI SetThreadPriority(HANDLE,INT);
+WINBASEAPI BOOL        WINAPI SetThreadPriorityBoost(HANDLE,BOOL);
+WINADVAPI  BOOL        WINAPI SetThreadToken(PHANDLE,HANDLE);
+WINBASEAPI BOOL        WINAPI SetTimeZoneInformation(const TIME_ZONE_INFORMATION *);
+WINADVAPI  BOOL        WINAPI SetTokenInformation(HANDLE,TOKEN_INFORMATION_CLASS,LPVOID,DWORD);
+WINBASEAPI LPTOP_LEVEL_EXCEPTION_FILTER WINAPI SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER);
+WINBASEAPI BOOL        WINAPI SetVolumeLabelA(LPCSTR,LPCSTR);
+WINBASEAPI BOOL        WINAPI SetVolumeLabelW(LPCWSTR,LPCWSTR);
+#define                       SetVolumeLabel WINELIB_NAME_AW(SetVolumeLabel)
+WINBASEAPI BOOL        WINAPI SetVolumeMountPointA(LPCSTR,LPCSTR);
+WINBASEAPI BOOL        WINAPI SetVolumeMountPointW(LPCSTR,LPCSTR);
+#define                       SetVolumeMountPoint WINELIB_NAME_AW(SetVolumeMountPoint)
+WINBASEAPI BOOL        WINAPI SetWaitableTimer(HANDLE,const LARGE_INTEGER*,LONG,PTIMERAPCROUTINE,LPVOID,BOOL);
+WINBASEAPI BOOL        WINAPI SetupComm(HANDLE,DWORD,DWORD);
+WINBASEAPI DWORD       WINAPI SignalObjectAndWait(HANDLE,HANDLE,DWORD,BOOL);
+WINBASEAPI DWORD       WINAPI SizeofResource(HMODULE,HRSRC);
+WINBASEAPI VOID        WINAPI Sleep(DWORD);
+WINBASEAPI DWORD       WINAPI SleepEx(DWORD,BOOL);
+WINBASEAPI DWORD       WINAPI SuspendThread(HANDLE);
+WINBASEAPI void        WINAPI SwitchToFiber(LPVOID);
+WINBASEAPI BOOL        WINAPI SwitchToThread(void);
+WINBASEAPI BOOL        WINAPI SystemTimeToFileTime(const SYSTEMTIME*,LPFILETIME);
+WINBASEAPI BOOL        WINAPI SystemTimeToTzSpecificLocalTime(LPTIME_ZONE_INFORMATION,LPSYSTEMTIME,LPSYSTEMTIME);
+WINBASEAPI BOOL        WINAPI TerminateJobObject(HANDLE,UINT);
+WINBASEAPI BOOL        WINAPI TerminateProcess(HANDLE,DWORD);
+WINBASEAPI BOOL        WINAPI TerminateThread(HANDLE,DWORD);
+WINBASEAPI DWORD       WINAPI TlsAlloc(void);
+WINBASEAPI BOOL        WINAPI TlsFree(DWORD);
+WINBASEAPI LPVOID      WINAPI TlsGetValue(DWORD);
+WINBASEAPI BOOL        WINAPI TlsSetValue(DWORD,LPVOID);
+WINBASEAPI BOOL        WINAPI TransactNamedPipe(HANDLE,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPOVERLAPPED);
+WINBASEAPI BOOL        WINAPI TransmitCommChar(HANDLE,CHAR);
+WINBASEAPI BOOL        WINAPI TryEnterCriticalSection(CRITICAL_SECTION *lpCrit);
+WINBASEAPI BOOL        WINAPI TzSpecificLocalTimeToSystemTime(LPTIME_ZONE_INFORMATION,LPSYSTEMTIME,LPSYSTEMTIME);
+WINBASEAPI LONG        WINAPI UnhandledExceptionFilter(PEXCEPTION_POINTERS);
+WINBASEAPI BOOL        WINAPI UnlockFile(HANDLE,DWORD,DWORD,DWORD,DWORD);
+WINBASEAPI BOOL        WINAPI UnlockFileEx(HANDLE,DWORD,DWORD,DWORD,LPOVERLAPPED);
+#define                       UnlockSegment(handle) GlobalUnfix((HANDLE)(handle))
+WINBASEAPI BOOL        WINAPI UnmapViewOfFile(LPCVOID);
+WINBASEAPI BOOL        WINAPI UnregisterWait(HANDLE);
+WINBASEAPI BOOL        WINAPI UnregisterWaitEx(HANDLE,HANDLE);
+WINBASEAPI BOOL        WINAPI UpdateResourceA(HANDLE,LPCSTR,LPCSTR,WORD,LPVOID,DWORD);
+WINBASEAPI BOOL        WINAPI UpdateResourceW(HANDLE,LPCWSTR,LPCWSTR,WORD,LPVOID,DWORD);
+#define                       UpdateResource WINELIB_NAME_AW(UpdateResource)
+WINBASEAPI BOOL        WINAPI VerifyVersionInfoA(LPOSVERSIONINFOEXA,DWORD,DWORDLONG);
+WINBASEAPI BOOL        WINAPI VerifyVersionInfoW(LPOSVERSIONINFOEXW,DWORD,DWORDLONG);
+#define                       VerifyVersionInfo WINELIB_NAME_AW(VerifyVersionInfo)
+WINBASEAPI LPVOID      WINAPI VirtualAlloc(LPVOID,SIZE_T,DWORD,DWORD);
+WINBASEAPI LPVOID      WINAPI VirtualAllocEx(HANDLE,LPVOID,SIZE_T,DWORD,DWORD);
+WINBASEAPI BOOL        WINAPI VirtualFree(LPVOID,SIZE_T,DWORD);
+WINBASEAPI BOOL        WINAPI VirtualFreeEx(HANDLE,LPVOID,SIZE_T,DWORD);
+WINBASEAPI BOOL        WINAPI VirtualLock(LPVOID,SIZE_T);
+WINBASEAPI BOOL        WINAPI VirtualProtect(LPVOID,SIZE_T,DWORD,LPDWORD);
+WINBASEAPI BOOL        WINAPI VirtualProtectEx(HANDLE,LPVOID,SIZE_T,DWORD,LPDWORD);
+WINBASEAPI SIZE_T      WINAPI VirtualQuery(LPCVOID,PMEMORY_BASIC_INFORMATION,SIZE_T);
+WINBASEAPI SIZE_T      WINAPI VirtualQueryEx(HANDLE,LPCVOID,PMEMORY_BASIC_INFORMATION,SIZE_T);
+WINBASEAPI BOOL        WINAPI VirtualUnlock(LPVOID,SIZE_T);
+WINBASEAPI BOOL        WINAPI WaitCommEvent(HANDLE,LPDWORD,LPOVERLAPPED);
+WINBASEAPI BOOL        WINAPI WaitForDebugEvent(LPDEBUG_EVENT,DWORD);
+WINBASEAPI DWORD       WINAPI WaitForMultipleObjects(DWORD,const HANDLE*,BOOL,DWORD);
+WINBASEAPI DWORD       WINAPI WaitForMultipleObjectsEx(DWORD,const HANDLE*,BOOL,DWORD,BOOL);
+WINBASEAPI DWORD       WINAPI WaitForSingleObject(HANDLE,DWORD);
+WINBASEAPI DWORD       WINAPI WaitForSingleObjectEx(HANDLE,DWORD,BOOL);
+WINBASEAPI BOOL        WINAPI WaitNamedPipeA(LPCSTR,DWORD);
+WINBASEAPI BOOL        WINAPI WaitNamedPipeW(LPCWSTR,DWORD);
+#define                       WaitNamedPipe WINELIB_NAME_AW(WaitNamedPipe)
+WINBASEAPI UINT        WINAPI WinExec(LPCSTR,UINT);
+WINBASEAPI BOOL        WINAPI WriteFile(HANDLE,LPCVOID,DWORD,LPDWORD,LPOVERLAPPED);
+WINBASEAPI BOOL        WINAPI WriteFileEx(HANDLE,LPCVOID,DWORD,LPOVERLAPPED,LPOVERLAPPED_COMPLETION_ROUTINE);
+WINBASEAPI BOOL        WINAPI WriteFileGather(HANDLE,FILE_SEGMENT_ELEMENT*,DWORD,LPDWORD,LPOVERLAPPED);
+WINBASEAPI BOOL        WINAPI WritePrivateProfileSectionA(LPCSTR,LPCSTR,LPCSTR);
+WINBASEAPI BOOL        WINAPI WritePrivateProfileSectionW(LPCWSTR,LPCWSTR,LPCWSTR);
+#define                       WritePrivateProfileSection WINELIB_NAME_AW(WritePrivateProfileSection)
+WINBASEAPI BOOL        WINAPI WritePrivateProfileStringA(LPCSTR,LPCSTR,LPCSTR,LPCSTR);
+WINBASEAPI BOOL        WINAPI WritePrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR);
+#define                       WritePrivateProfileString WINELIB_NAME_AW(WritePrivateProfileString)
+WINBASEAPI BOOL        WINAPI WritePrivateProfileStructA(LPCSTR,LPCSTR,LPVOID,UINT,LPCSTR);
+WINBASEAPI BOOL        WINAPI WritePrivateProfileStructW(LPCWSTR,LPCWSTR,LPVOID,UINT,LPCWSTR);
+#define                       WritePrivateProfileStruct WINELIB_NAME_AW(WritePrivateProfileStruct)
+WINBASEAPI BOOL        WINAPI WriteProcessMemory(HANDLE,LPVOID,LPCVOID,SIZE_T,SIZE_T*);
+WINBASEAPI BOOL        WINAPI WriteProfileSectionA(LPCSTR,LPCSTR);
+WINBASEAPI BOOL        WINAPI WriteProfileSectionW(LPCWSTR,LPCWSTR);
+#define                       WritePrivateProfileSection WINELIB_NAME_AW(WritePrivateProfileSection)
+WINBASEAPI BOOL        WINAPI WriteProfileStringA(LPCSTR,LPCSTR,LPCSTR);
+WINBASEAPI BOOL        WINAPI WriteProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR);
+#define                       WriteProfileString WINELIB_NAME_AW(WriteProfileString)
+WINBASEAPI DWORD       WINAPI WriteTapemark(HANDLE,DWORD,DWORD,BOOL);
+#define                       Yield()
+WINBASEAPI BOOL        WINAPI ZombifyActCtx(HANDLE);
+
+WINBASEAPI LPSTR       WINAPI lstrcatA(LPSTR,LPCSTR);
+WINBASEAPI LPWSTR      WINAPI lstrcatW(LPWSTR,LPCWSTR);
+WINBASEAPI INT         WINAPI lstrcmpA(LPCSTR,LPCSTR);
+WINBASEAPI INT         WINAPI lstrcmpW(LPCWSTR,LPCWSTR);
+WINBASEAPI INT         WINAPI lstrcmpiA(LPCSTR,LPCSTR);
+WINBASEAPI INT         WINAPI lstrcmpiW(LPCWSTR,LPCWSTR);
+WINBASEAPI LPSTR       WINAPI lstrcpyA(LPSTR,LPCSTR);
+WINBASEAPI LPWSTR      WINAPI lstrcpyW(LPWSTR,LPCWSTR);
+WINBASEAPI LPSTR       WINAPI lstrcpynA(LPSTR,LPCSTR,INT);
+WINBASEAPI LPWSTR      WINAPI lstrcpynW(LPWSTR,LPCWSTR,INT);
+WINBASEAPI INT         WINAPI lstrlenA(LPCSTR);
+WINBASEAPI INT         WINAPI lstrlenW(LPCWSTR);
+
+#if !defined(WINE_NO_INLINE_STRING) && defined(__WINESRC__)
+
+/* string functions without the exception handler */
+
+extern inline LPWSTR WINAPI lstrcpynW( LPWSTR dst, LPCWSTR src, INT n )
+{
+    LPWSTR d = dst;
+    LPCWSTR s = src;
+    UINT count = n;
+
+    while ((count > 1) && *s)
+    {
+        count--;
+        *d++ = *s++;
+    }
+    if (count) *d = 0;
+    return dst;
+}
+
+extern inline LPSTR WINAPI lstrcpynA( LPSTR dst, LPCSTR src, INT n )
+{
+    LPSTR d = dst;
+    LPCSTR s = src;
+    UINT count = n;
+
+    while ((count > 1) && *s)
+    {
+        count--;
+        *d++ = *s++;
+    }
+    if (count) *d = 0;
+    return dst;
+}
+
+extern inline INT WINAPI lstrlenW( LPCWSTR str )
+{
+    const WCHAR *s = str;
+    while (*s) s++;
+    return s - str;
+}
+
+extern inline INT WINAPI lstrlenA( LPCSTR str )
+{
+    return strlen( str );
+}
+
+extern inline LPWSTR WINAPI lstrcpyW( LPWSTR dst, LPCWSTR src )
+{
+    WCHAR *p = dst;
+    while ((*p++ = *src++));
+    return dst;
+}
+
+extern inline LPSTR WINAPI lstrcpyA( LPSTR dst, LPCSTR src )
+{
+    return strcpy( dst, src );
+}
+
+extern inline LPWSTR WINAPI lstrcatW( LPWSTR dst, LPCWSTR src )
+{
+    WCHAR *p = dst;
+    while (*p) p++;
+    while ((*p++ = *src++));
+    return dst;
+}
+
+extern inline LPSTR WINAPI lstrcatA( LPSTR dst, LPCSTR src )
+{
+    return strcat( dst, src );
+}
+
+/* strncpy doesn't do what you think, don't use it */
+#undef strncpy
+#define strncpy(d,s,n) error do_not_use_strncpy_use_lstrcpynA_or_memcpy_instead
+
+#endif /* !defined(WINE_NO_INLINE_STRING) && defined(__WINESRC__) */
+
+#define     lstrcat WINELIB_NAME_AW(lstrcat)
+#define     lstrcmp WINELIB_NAME_AW(lstrcmp)
+#define     lstrcmpi WINELIB_NAME_AW(lstrcmpi)
+#define     lstrcpy WINELIB_NAME_AW(lstrcpy)
+#define     lstrcpyn WINELIB_NAME_AW(lstrcpyn)
+#define     lstrlen WINELIB_NAME_AW(lstrlen)
+
+WINBASEAPI LONG        WINAPI _hread(HFILE,LPVOID,LONG);
+WINBASEAPI LONG        WINAPI _hwrite(HFILE,LPCSTR,LONG);
+WINBASEAPI HFILE       WINAPI _lcreat(LPCSTR,INT);
+WINBASEAPI HFILE       WINAPI _lclose(HFILE);
+WINBASEAPI LONG        WINAPI _llseek(HFILE,LONG,INT);
+WINBASEAPI HFILE       WINAPI _lopen(LPCSTR,INT);
+WINBASEAPI UINT        WINAPI _lread(HFILE,LPVOID,UINT);
+WINBASEAPI UINT        WINAPI _lwrite(HFILE,LPCSTR,UINT);
+
+/* compatibility macros */
+#define     FillMemory RtlFillMemory
+#define     MoveMemory RtlMoveMemory
+#define     ZeroMemory RtlZeroMemory
+#define     CopyMemory RtlCopyMemory
+
+/* undocumented functions */
+
+typedef struct tagSYSLEVEL
+{
+    CRITICAL_SECTION crst;
+    INT              level;
+} SYSLEVEL;
+
+/* [GS]etProcessDword offsets */
+#define  GPD_APP_COMPAT_FLAGS    (-56)
+#define  GPD_LOAD_DONE_EVENT     (-52)
+#define  GPD_HINSTANCE16         (-48)
+#define  GPD_WINDOWS_VERSION     (-44)
+#define  GPD_THDB                (-40)
+#define  GPD_PDB                 (-36)
+#define  GPD_STARTF_SHELLDATA    (-32)
+#define  GPD_STARTF_HOTKEY       (-28)
+#define  GPD_STARTF_SHOWWINDOW   (-24)
+#define  GPD_STARTF_SIZE         (-20)
+#define  GPD_STARTF_POSITION     (-16)
+#define  GPD_STARTF_FLAGS        (-12)
+#define  GPD_PARENT              (- 8)
+#define  GPD_FLAGS               (- 4)
+#define  GPD_USERDATA            (  0)
+
+WINBASEAPI void        WINAPI DisposeLZ32Handle(HANDLE);
+WINBASEAPI HANDLE      WINAPI DosFileHandleToWin32Handle(HFILE);
+WINBASEAPI DWORD       WINAPI GetProcessDword(DWORD,INT);
+WINBASEAPI VOID        WINAPI GetpWin16Lock(SYSLEVEL**);
+WINBASEAPI DWORD       WINAPI MapLS(LPCVOID);
+WINBASEAPI LPVOID      WINAPI MapSL(DWORD);
+WINBASEAPI VOID        WINAPI ReleaseThunkLock(DWORD*);
+WINBASEAPI VOID        WINAPI RestoreThunkLock(DWORD);
+WINBASEAPI VOID        WINAPI UnMapLS(DWORD);
+WINBASEAPI HFILE       WINAPI Win32HandleToDosFileHandle(HANDLE);
+WINBASEAPI VOID        WINAPI _CheckNotSysLevel(SYSLEVEL *lock);
+WINBASEAPI DWORD       WINAPI _ConfirmWin16Lock(void);
+WINBASEAPI DWORD       WINAPI _ConfirmSysLevel(SYSLEVEL*);
+WINBASEAPI VOID        WINAPI _EnterSysLevel(SYSLEVEL*);
+WINBASEAPI VOID        WINAPI _LeaveSysLevel(SYSLEVEL*);
+
+
+/* Wine internal functions */
+
+extern char *wine_get_unix_file_name( LPCWSTR dos );
+extern WCHAR *wine_get_dos_file_name( LPCSTR str );
+
+
+/* a few optimizations for i386/gcc */
+
+#if defined(__i386__) && defined(__GNUC__) && defined(__WINESRC__) && !defined(_NTSYSTEM_)
+
+extern inline LONG WINAPI InterlockedCompareExchange( LONG volatile *dest, LONG xchg, LONG compare );
+extern inline LONG WINAPI InterlockedCompareExchange( LONG volatile *dest, LONG xchg, LONG compare )
+{
+    LONG ret;
+    __asm__ __volatile__( "lock; cmpxchgl %2,(%1)"
+                          : "=a" (ret) : "r" (dest), "r" (xchg), "0" (compare) : "memory" );
+    return ret;
+}
+
+extern inline LONG WINAPI InterlockedExchange( LONG volatile *dest, LONG val );
+extern inline LONG WINAPI InterlockedExchange( LONG volatile *dest, LONG val )
+{
+    LONG ret;
+    __asm__ __volatile__( "lock; xchgl %0,(%1)"
+                          : "=r" (ret) :"r" (dest), "0" (val) : "memory" );
+    return ret;
+}
+
+extern inline LONG WINAPI InterlockedExchangeAdd( LONG volatile *dest, LONG incr );
+extern inline LONG WINAPI InterlockedExchangeAdd( LONG volatile *dest, LONG incr )
+{
+    LONG ret;
+    __asm__ __volatile__( "lock; xaddl %0,(%1)"
+                          : "=r" (ret) : "r" (dest), "0" (incr) : "memory" );
+    return ret;
+}
+
+extern inline LONG WINAPI InterlockedIncrement( LONG volatile *dest );
+extern inline LONG WINAPI InterlockedIncrement( LONG volatile *dest )
+{
+    return InterlockedExchangeAdd( dest, 1 ) + 1;
+}
+
+extern inline LONG WINAPI InterlockedDecrement( LONG volatile *dest );
+extern inline LONG WINAPI InterlockedDecrement( LONG volatile *dest )
+{
+    return InterlockedExchangeAdd( dest, -1 ) - 1;
+}
+
+extern inline DWORD WINAPI GetLastError(void);
+extern inline DWORD WINAPI GetLastError(void)
+{
+    DWORD ret;
+    __asm__ __volatile__( ".byte 0x64\n\tmovl 0x34,%0" : "=r" (ret) );
+    return ret;
+}
+
+extern inline DWORD WINAPI GetCurrentProcessId(void);
+extern inline DWORD WINAPI GetCurrentProcessId(void)
+{
+    DWORD ret;
+    __asm__ __volatile__( ".byte 0x64\n\tmovl 0x20,%0" : "=r" (ret) );
+    return ret;
+}
+
+extern inline DWORD WINAPI GetCurrentThreadId(void);
+extern inline DWORD WINAPI GetCurrentThreadId(void)
+{
+    DWORD ret;
+    __asm__ __volatile__( ".byte 0x64\n\tmovl 0x24,%0" : "=r" (ret) );
+    return ret;
+}
+
+extern inline void WINAPI SetLastError( DWORD err );
+extern inline void WINAPI SetLastError( DWORD err )
+{
+    __asm__ __volatile__( ".byte 0x64\n\tmovl %0,0x34" : : "r" (err) : "memory" );
+}
+
+extern inline HANDLE WINAPI GetProcessHeap(void);
+extern inline HANDLE WINAPI GetProcessHeap(void)
+{
+    HANDLE *pdb;
+    __asm__ __volatile__( ".byte 0x64\n\tmovl 0x30,%0" : "=r" (pdb) );
+    return pdb[0x18 / sizeof(HANDLE)];  /* get dword at offset 0x18 in pdb */
+}
+
+#else  /* __i386__ && __GNUC__ && __WINESRC__ && !_NTSYSTEM_ */
+
+WINBASEAPI DWORD       WINAPI GetCurrentProcessId(void);
+WINBASEAPI DWORD       WINAPI GetCurrentThreadId(void);
+WINBASEAPI DWORD       WINAPI GetLastError(void);
+WINBASEAPI HANDLE      WINAPI GetProcessHeap(void);
+WINBASEAPI LONG        WINAPI InterlockedCompareExchange(LONG volatile*,LONG,LONG);
+WINBASEAPI LONG        WINAPI InterlockedDecrement(LONG volatile*);
+WINBASEAPI LONG        WINAPI InterlockedExchange(LONG volatile*,LONG);
+WINBASEAPI LONG        WINAPI InterlockedExchangeAdd(LONG volatile*,LONG);
+WINBASEAPI LONG        WINAPI InterlockedIncrement(LONG volatile*);
+WINBASEAPI VOID        WINAPI SetLastError(DWORD);
+
+#endif  /* __i386__ && __GNUC__ && __WINESRC__ && !_NTSYSTEM_ */
+
+static inline PVOID WINAPI InterlockedCompareExchangePointer( PVOID volatile *dest, PVOID xchg, PVOID compare )
+{
+#if defined(__x86_64__) && defined(__GNUC__)
+    PVOID ret;
+    __asm__ __volatile__( "lock; cmpxchgq %2,(%1)"
+                          : "=a" (ret) : "r" (dest), "r" (xchg), "0" (compare) : "memory" );
+    return ret;
+#else
+    return (PVOID)InterlockedCompareExchange( (LONG volatile*)dest, (LONG)xchg, (LONG)compare );
+#endif
+}
+
+static inline PVOID WINAPI InterlockedExchangePointer( PVOID volatile *dest, PVOID val )
+{
+#if defined(__x86_64__) && defined(__GNUC__)
+    PVOID ret;
+    __asm__ __volatile__( "lock; xchgq %0,(%1)"
+                          : "=r" (ret) :"r" (dest), "0" (val) : "memory" );
+    return ret;
+#else
+    return (PVOID)InterlockedExchange( (LONG volatile*)dest, (LONG)val );
+#endif
+}
+
+#ifdef __WINESRC__
+#define GetCurrentProcess() ((HANDLE)0xffffffff)
+#define GetCurrentThread()  ((HANDLE)0xfffffffe)
+#endif
+
+/* WinMain(entry point) must be declared in winbase.h. */
+/* If this is not declared, we cannot compile many sources written with C++. */
+int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int);
+
+#ifdef __WINESRC__
+/* shouldn't be here, but is nice for type checking */
+BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved ) DECLSPEC_HIDDEN;
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* __WINE_WINBASE_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wincon.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wincon.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wincon.h	(revision 16410)
@@ -0,0 +1,267 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINCON_H
+#define __WINE_WINCON_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define CONSOLE_FULLSCREEN          1
+#define CONSOLE_FULLSCREEN_HARDWARE 2
+
+#define CTRL_C_EVENT        0
+#define CTRL_BREAK_EVENT    1
+#define CTRL_CLOSE_EVENT    2
+#define CTRL_LOGOFF_EVENT   5
+#define CTRL_SHUTDOWN_EVENT 6
+
+/* Console Mode flags */
+#define ENABLE_PROCESSED_INPUT 0x01
+#define ENABLE_LINE_INPUT      0x02
+#define ENABLE_ECHO_INPUT      0x04
+#define ENABLE_WINDOW_INPUT    0x08
+#define ENABLE_MOUSE_INPUT     0x10
+
+#define ENABLE_PROCESSED_OUTPUT   0x01
+#define ENABLE_WRAP_AT_EOL_OUTPUT 0x02
+
+
+typedef BOOL (WINAPI *PHANDLER_ROUTINE)(DWORD dwCtrlType);
+
+/* Attributes flags: */
+
+#define FOREGROUND_BLUE      0x0001 /* text color contains blue. */
+#define FOREGROUND_GREEN     0x0002 /* text color contains green. */
+#define FOREGROUND_RED       0x0004 /* text color contains red. */
+#define FOREGROUND_INTENSITY 0x0008 /* text color is intensified. */
+#define BACKGROUND_BLUE      0x0010 /* background color contains blue. */
+#define BACKGROUND_GREEN     0x0020 /* background color contains green. */
+#define BACKGROUND_RED       0x0040 /* background color contains red. */
+#define BACKGROUND_INTENSITY 0x0080 /* background color is intensified. */
+
+typedef struct _CONSOLE_CURSOR_INFO {
+    DWORD	dwSize;   /* Between 1 & 100 for percentage of cell filled */
+    BOOL	bVisible; /* Visibility of cursor */
+} CONSOLE_CURSOR_INFO, *LPCONSOLE_CURSOR_INFO;
+
+typedef struct tagCOORD
+{
+    SHORT X;
+    SHORT Y;
+} COORD, *LPCOORD;
+
+typedef struct tagSMALL_RECT
+{
+    SHORT Left;
+    SHORT Top;
+    SHORT Right;
+    SHORT Bottom;
+} SMALL_RECT,*LPSMALL_RECT;
+
+typedef struct tagCONSOLE_SCREEN_BUFFER_INFO
+{
+    COORD       dwSize;
+    COORD       dwCursorPosition;
+    WORD        wAttributes;
+    SMALL_RECT  srWindow;
+    COORD       dwMaximumWindowSize;
+} CONSOLE_SCREEN_BUFFER_INFO,*LPCONSOLE_SCREEN_BUFFER_INFO;
+
+typedef struct tagCHAR_INFO
+{
+    union
+	{
+	WCHAR UnicodeChar;
+	CHAR AsciiChar;
+	} Char;
+    WORD	Attributes;
+} CHAR_INFO,*LPCHAR_INFO;
+
+typedef struct tagKEY_EVENT_RECORD
+{
+    BOOL	bKeyDown;		/* 04 */
+    WORD	wRepeatCount;		/* 08 */
+    WORD	wVirtualKeyCode;	/* 0A */
+    WORD	wVirtualScanCode;	/* 0C */
+    union				/* 0E */
+	{
+	WCHAR UnicodeChar;		/* 0E */
+	CHAR AsciiChar;			/* 0E */
+	} uChar;
+    DWORD	dwControlKeyState;	/* 10 */
+} KEY_EVENT_RECORD,*LPKEY_EVENT_RECORD;
+
+/* dwControlKeyState bitmask */
+#define	RIGHT_ALT_PRESSED	0x0001
+#define	LEFT_ALT_PRESSED	0x0002
+#define	RIGHT_CTRL_PRESSED	0x0004
+#define	LEFT_CTRL_PRESSED	0x0008
+#define	SHIFT_PRESSED		0x0010
+#define	NUMLOCK_ON		0x0020
+#define	SCROLLLOCK_ON		0x0040
+#define	CAPSLOCK_ON		0x0080
+#define	ENHANCED_KEY		0x0100
+
+typedef struct tagMOUSE_EVENT_RECORD
+{
+    COORD	dwMousePosition;
+    DWORD	dwButtonState;
+    DWORD	dwControlKeyState;
+    DWORD	dwEventFlags;
+} MOUSE_EVENT_RECORD,*LPMOUSE_EVENT_RECORD;
+
+#define FROM_LEFT_1ST_BUTTON_PRESSED    0x0001
+#define RIGHTMOST_BUTTON_PRESSED        0x0002
+#define FROM_LEFT_2ND_BUTTON_PRESSED    0x0004
+#define FROM_LEFT_3RD_BUTTON_PRESSED    0x0008
+#define FROM_LEFT_4TH_BUTTON_PRESSED    0x0010
+
+#define MOUSE_MOVED                     0x0001
+#define DOUBLE_CLICK                    0x0002
+#define MOUSE_WHEELED                   0x0004
+
+typedef struct tagWINDOW_BUFFER_SIZE_RECORD
+{
+    COORD	dwSize;
+} WINDOW_BUFFER_SIZE_RECORD,*LPWINDOW_BUFFER_SIZE_RECORD;
+
+typedef struct tagMENU_EVENT_RECORD
+{
+    UINT	dwCommandId; /* perhaps UINT16 ??? */
+} MENU_EVENT_RECORD,*LPMENU_EVENT_RECORD;
+
+typedef struct tagFOCUS_EVENT_RECORD
+{
+    BOOL      bSetFocus; /* perhaps BOOL16 ??? */
+} FOCUS_EVENT_RECORD,*LPFOCUS_EVENT_RECORD;
+
+typedef struct tagINPUT_RECORD
+{
+    WORD		EventType;		/* 00 */
+    union
+	{
+	KEY_EVENT_RECORD KeyEvent;
+	MOUSE_EVENT_RECORD MouseEvent;
+	WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
+	MENU_EVENT_RECORD MenuEvent;
+	FOCUS_EVENT_RECORD FocusEvent;
+	} Event;
+} INPUT_RECORD,*PINPUT_RECORD;
+
+/* INPUT_RECORD.wEventType */
+#define KEY_EVENT			0x01
+#define MOUSE_EVENT			0x02
+#define WINDOW_BUFFER_SIZE_EVENT	0x04
+#define MENU_EVENT			0x08
+#define FOCUS_EVENT 			0x10
+
+#define CONSOLE_TEXTMODE_BUFFER  1
+
+#ifdef __i386__
+/* Note: this should return a COORD, but calling convention for returning
+ * structures is different between Windows and gcc on i386. */
+WINBASEAPI DWORD WINAPI GetLargestConsoleWindowSize(HANDLE);
+
+static inline COORD __wine_GetLargestConsoleWindowSize_wrapper(HANDLE h)
+{
+    union {
+      COORD c;
+      DWORD dw;
+    } u;
+    u.dw = GetLargestConsoleWindowSize(h);
+    return u.c;
+}
+#define GetLargestConsoleWindowSize(h) __wine_GetLargestConsoleWindowSize_wrapper(h)
+
+#else  /* __i386__ */
+WINBASEAPI COORD WINAPI GetLargestConsoleWindowSize(HANDLE);
+#endif  /* __i386__ */
+
+WINBASEAPI BOOL   WINAPI AllocConsole(VOID);
+WINBASEAPI HANDLE WINAPI CreateConsoleScreenBuffer( DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,LPVOID);
+WINBASEAPI BOOL WINAPI   FillConsoleOutputAttribute( HANDLE,WORD,DWORD,COORD,LPDWORD);
+WINBASEAPI BOOL WINAPI   FillConsoleOutputCharacterA(HANDLE,CHAR,DWORD,COORD,LPDWORD);
+WINBASEAPI BOOL WINAPI   FillConsoleOutputCharacterW(HANDLE,WCHAR,DWORD,COORD,LPDWORD);
+#define                  FillConsoleOutputCharacter WINELIB_NAME_AW(FillConsoleOutputCharacter)
+WINBASEAPI BOOL WINAPI   FlushConsoleInputBuffer( HANDLE);
+WINBASEAPI BOOL WINAPI   FreeConsole(VOID);
+WINBASEAPI BOOL WINAPI   GenerateConsoleCtrlEvent( DWORD,DWORD);
+WINBASEAPI UINT WINAPI   GetConsoleCP(VOID);
+WINBASEAPI BOOL WINAPI   GetConsoleCursorInfo( HANDLE,LPCONSOLE_CURSOR_INFO);
+WINBASEAPI BOOL WINAPI   GetConsoleMode( HANDLE,LPDWORD);
+WINBASEAPI UINT WINAPI   GetConsoleOutputCP(VOID);
+WINBASEAPI BOOL WINAPI   GetConsoleScreenBufferInfo(HANDLE,LPCONSOLE_SCREEN_BUFFER_INFO);
+WINBASEAPI DWORD WINAPI  GetConsoleTitleA(LPSTR,DWORD);
+WINBASEAPI DWORD WINAPI  GetConsoleTitleW(LPWSTR,DWORD);
+#define                  GetConsoleTitle WINELIB_NAME_AW(GetConsoleTitle)
+WINBASEAPI HWND WINAPI   GetConsoleWindow(void);
+WINBASEAPI BOOL WINAPI   GetNumberOfConsoleInputEvents( HANDLE,LPDWORD);
+WINBASEAPI BOOL WINAPI   GetNumberOfConsoleMouseButtons(LPDWORD);
+WINBASEAPI BOOL WINAPI   PeekConsoleInputA( HANDLE,PINPUT_RECORD,DWORD,LPDWORD);
+WINBASEAPI BOOL WINAPI   PeekConsoleInputW( HANDLE,PINPUT_RECORD,DWORD,LPDWORD);
+#define                  PeekConsoleInput WINELIB_NAME_AW(PeekConsoleInput)
+WINBASEAPI BOOL WINAPI   ReadConsoleA(HANDLE,LPVOID,DWORD,LPDWORD,LPVOID);
+WINBASEAPI BOOL WINAPI   ReadConsoleW(HANDLE,LPVOID,DWORD,LPDWORD,LPVOID);
+#define                  ReadConsole WINELIB_NAME_AW(ReadConsole)
+WINBASEAPI BOOL WINAPI   ReadConsoleInputA(HANDLE,PINPUT_RECORD,DWORD,LPDWORD);
+WINBASEAPI BOOL WINAPI   ReadConsoleInputW(HANDLE,PINPUT_RECORD,DWORD,LPDWORD);
+#define                  ReadConsoleInput WINELIB_NAME_AW(ReadConsoleInput)
+WINBASEAPI BOOL WINAPI   ReadConsoleOutputA( HANDLE,LPCHAR_INFO,COORD,COORD,LPSMALL_RECT);
+WINBASEAPI BOOL WINAPI   ReadConsoleOutputW( HANDLE,LPCHAR_INFO,COORD,COORD,LPSMALL_RECT);
+#define                  ReadConsoleOutput WINELIB_NAME_AW(ReadConsoleOutput)
+WINBASEAPI BOOL WINAPI   ReadConsoleOutputAttribute( HANDLE,LPWORD,DWORD,COORD,LPDWORD);
+WINBASEAPI BOOL WINAPI   ReadConsoleOutputCharacterA(HANDLE,LPSTR,DWORD,COORD,LPDWORD);
+WINBASEAPI BOOL WINAPI   ReadConsoleOutputCharacterW(HANDLE,LPWSTR,DWORD,COORD,LPDWORD);
+#define                  ReadConsoleOutputCharacter WINELIB_NAME_AW(ReadConsoleOutputCharacter)
+WINBASEAPI BOOL WINAPI   ScrollConsoleScreenBufferA( HANDLE,LPSMALL_RECT,LPSMALL_RECT,COORD,LPCHAR_INFO);
+WINBASEAPI BOOL WINAPI   ScrollConsoleScreenBufferW( HANDLE,LPSMALL_RECT,LPSMALL_RECT,COORD,LPCHAR_INFO);
+#define                  ScrollConsoleScreenBuffer WINELIB_NAME_AW(ScrollConsoleScreenBuffer)
+WINBASEAPI BOOL WINAPI   SetConsoleActiveScreenBuffer( HANDLE);
+WINBASEAPI BOOL WINAPI   SetConsoleCP(UINT);
+WINBASEAPI BOOL WINAPI   SetConsoleCtrlHandler( PHANDLER_ROUTINE,BOOL);
+WINBASEAPI BOOL WINAPI   SetConsoleCursorInfo( HANDLE,LPCONSOLE_CURSOR_INFO);
+WINBASEAPI BOOL WINAPI   SetConsoleCursorPosition(HANDLE,COORD);
+WINBASEAPI BOOL WINAPI   SetConsoleMode( HANDLE,DWORD);
+WINBASEAPI BOOL WINAPI   SetConsoleOutputCP(UINT);
+WINBASEAPI BOOL WINAPI   SetConsoleScreenBufferSize(HANDLE,COORD);
+WINBASEAPI BOOL WINAPI   SetConsoleTextAttribute( HANDLE,WORD);
+WINBASEAPI BOOL WINAPI   SetConsoleTitleA(LPCSTR);
+WINBASEAPI BOOL WINAPI   SetConsoleTitleW(LPCWSTR);
+#define                  SetConsoleTitle WINELIB_NAME_AW(SetConsoleTitle)
+WINBASEAPI BOOL WINAPI   SetConsoleWindowInfo( HANDLE,BOOL,LPSMALL_RECT);
+WINBASEAPI BOOL WINAPI   WriteConsoleA(HANDLE,CONST VOID *,DWORD,LPDWORD,LPVOID);
+WINBASEAPI BOOL WINAPI   WriteConsoleW(HANDLE,CONST VOID *,DWORD,LPDWORD,LPVOID);
+#define                  WriteConsole WINELIB_NAME_AW(WriteConsole)
+WINBASEAPI BOOL WINAPI   WriteConsoleInputA(HANDLE,const INPUT_RECORD *,DWORD,LPDWORD);
+WINBASEAPI BOOL WINAPI   WriteConsoleInputW(HANDLE,const INPUT_RECORD *,DWORD,LPDWORD);
+#define                  WriteConsoleInput WINELIB_NAME_AW(WriteConsoleInput)
+WINBASEAPI BOOL WINAPI   WriteConsoleOutputA(HANDLE,const CHAR_INFO*,COORD,COORD,LPSMALL_RECT);
+WINBASEAPI BOOL WINAPI   WriteConsoleOutputW(HANDLE,const CHAR_INFO*,COORD,COORD,LPSMALL_RECT);
+#define                  WriteConsoleOutput WINELIB_NAME_AW(WriteConsoleOutput)
+WINBASEAPI BOOL WINAPI   WriteConsoleOutputAttribute(HANDLE,CONST WORD *,DWORD,COORD,LPDWORD);
+WINBASEAPI BOOL WINAPI   WriteConsoleOutputCharacterA(HANDLE,LPCSTR,DWORD,COORD,LPDWORD);
+WINBASEAPI BOOL WINAPI   WriteConsoleOutputCharacterW(HANDLE,LPCWSTR,DWORD,COORD,LPDWORD);
+#define                  WriteConsoleOutputCharacter WINELIB_NAME_AW(WriteConsoleOutputCharacter)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* __WINE_WINCON_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wincred.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wincred.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wincred.h	(revision 16410)
@@ -0,0 +1,220 @@
+/*
+ * Copyright (C) 2006 Robert Shearman (for CodeWeavers)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _WINCRED_H_
+#define _WINCRED_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef _ADVAPI32_
+#define WINADVAPI
+#else
+#define WINADVAPI DECLSPEC_IMPORT
+#endif
+
+#ifndef __SECHANDLE_DEFINED__
+#define __SECHANDLE_DEFINED__
+typedef struct _SecHandle
+{
+    ULONG_PTR dwLower;
+    ULONG_PTR dwUpper;
+} SecHandle, *PSecHandle;
+#endif
+
+#ifndef __WINE_CTXTHANDLE_DEFINED__
+#define __WINE_CTXTHANDLE_DEFINED__
+typedef SecHandle CtxtHandle;
+typedef PSecHandle PCtxtHandle;
+#endif
+
+typedef struct _CREDENTIAL_ATTRIBUTEA
+{
+    LPSTR Keyword;
+    DWORD Flags;
+    DWORD ValueSize;
+    LPBYTE Value;
+} CREDENTIAL_ATTRIBUTEA, *PCREDENTIAL_ATTRIBUTEA;
+
+typedef struct _CREDENTIAL_ATTRIBUTEW
+{
+    LPWSTR Keyword;
+    DWORD Flags;
+    DWORD ValueSize;
+    LPBYTE Value;
+} CREDENTIAL_ATTRIBUTEW, *PCREDENTIAL_ATTRIBUTEW;
+
+DECL_WINELIB_TYPE_AW(CREDENTIAL_ATTRIBUTE)
+DECL_WINELIB_TYPE_AW(PCREDENTIAL_ATTRIBUTE)
+
+typedef struct _CREDENTIALA
+{
+    DWORD Flags;
+    DWORD Type;
+    LPSTR TargetName;
+    LPSTR Comment;
+    FILETIME LastWritten;
+    DWORD CredentialBlobSize;
+    LPBYTE CredentialBlob;
+    DWORD Persist;
+    DWORD AttributeCount;
+    PCREDENTIAL_ATTRIBUTEA Attributes;
+    LPSTR TargetAlias;
+    LPSTR UserName;
+} CREDENTIALA, *PCREDENTIALA;
+
+typedef struct _CREDENTIALW
+{
+    DWORD Flags;
+    DWORD Type;
+    LPWSTR TargetName;
+    LPWSTR Comment;
+    FILETIME LastWritten;
+    DWORD CredentialBlobSize;
+    LPBYTE CredentialBlob;
+    DWORD Persist;
+    DWORD AttributeCount;
+    PCREDENTIAL_ATTRIBUTEW Attributes;
+    LPWSTR TargetAlias;
+    LPWSTR UserName;
+} CREDENTIALW, *PCREDENTIALW;
+
+DECL_WINELIB_TYPE_AW(CREDENTIAL)
+DECL_WINELIB_TYPE_AW(PCREDENTIAL)
+
+typedef struct _CREDUI_INFOA
+{
+    DWORD cbSize;
+    HWND hwndParent;
+    PCSTR pszMessageText;
+    PCSTR pszCaptionText;
+    HBITMAP hbmBanner;
+} CREDUI_INFOA, *PCREDUI_INFOA;
+
+typedef struct _CREDUI_INFOW
+{
+    DWORD cbSize;
+    HWND hwndParent;
+    PCWSTR pszMessageText;
+    PCWSTR pszCaptionText;
+    HBITMAP hbmBanner;
+} CREDUI_INFOW, *PCREDUI_INFOW;
+
+DECL_WINELIB_TYPE_AW(CREDUI_INFO)
+DECL_WINELIB_TYPE_AW(PCREDUI_INFO)
+
+#define CRED_MAX_STRING_LENGTH              256
+#define CRED_MAX_USERNAME_LENGTH            513
+#define CRED_MAX_GENERIC_TARGET_NAME_LENGTH 32767
+#define CRED_MAX_DOMAIN_TARGET_NAME_LENGTH  337
+#define CRED_MAX_VALUE_SIZE                 256
+#define CRED_MAX_ATTRIBUTES                 64
+
+#define CRED_MAX_BLOB_SIZE                  512
+
+#define CREDUI_MAX_MESSAGE_LENGTH 32767
+#define CREDUI_MAX_CAPTION_LENGTH 128
+#define CREDUI_MAX_GENERIC_TARGET_LENGTH CRED_MAX_GENERIC_TARGET_NAME_LENGTH
+#define CREDUI_MAX_DOMAIN_TARGET_LENGTH CRED_MAX_DOMAIN_TARGET_LENGTH
+#define CREDUI_MAX_USERNAME_LENGTH CRED_MAX_USERNAME_LENGTH
+#define CREDUI_MAX_PASSWORD_LENGTH (CRED_MAX_CREDENTIAL_BLOB_SIZE / 2)
+
+/* flags for CREDENTIAL::Flags */
+#define CRED_FLAGS_PASSWORD_FOR_CERT                0x0001
+#define CRED_FLAGS_PROMPT_NOW                       0x0002
+#define CRED_FLAGS_USERNAME_TARGET                  0x0004
+#define CRED_FLAGS_OWF_CRED_BLOB                    0x0008
+#define CRED_FLAGS_VALID_FLAGS                      0x000f
+
+/* values for CREDENTIAL::Type */
+#define CRED_TYPE_GENERIC                           1
+#define CRED_TYPE_DOMAIN_PASSWORD                   2
+#define CRED_TYPE_DOMAIN_CERTIFICATE                3
+#define CRED_TYPE_DOMAIN_VISIBLE_PASSWORD           4
+#define CRED_TYPE_GENERIC_CERTIFICATE               5
+#define CRED_TYPE_MAXIMUM                           6
+#define CRED_TYPE_MAXIMUM_EX                        (CRED_TYPE_MAXIMUM+1000)
+
+/* values for CREDENTIAL::Persist */
+#define CRED_PERSIST_NONE                           0
+#define CRED_PERSIST_SESSION                        1
+#define CRED_PERSIST_LOCAL_MACHINE                  2
+#define CRED_PERSIST_ENTERPRISE                     3
+
+#define CREDUI_FLAGS_INCORRECT_PASSWORD             0x00000001
+#define CREDUI_FLAGS_DO_NOT_PERSIST                 0x00000002
+#define CREDUI_FLAGS_REQUEST_ADMINISTRATOR          0x00000004
+#define CREDUI_FLAGS_EXCLUDE_CERTIFICATES           0x00000008
+#define CREDUI_FLAGS_REQUIRE_CERTIFICATE            0x00000010
+#define CREDUI_FLAGS_SHOW_SAVE_CHECK_BOX            0x00000040
+#define CREDUI_FLAGS_ALWAYS_SHOW_UI                 0x00000080
+#define CREDUI_FLAGS_REQUIRE_SMARTCARD              0x00000100
+#define CREDUI_FLAGS_PASSWORD_ONLY_OK               0x00000200
+#define CREDUI_FLAGS_VALIDATE_USERNAME              0x00000400
+#define CREDUI_FLAGS_COMPLETE_USERNAME              0x00000800
+#define CREDUI_FLAGS_PERSIST                        0x00001000
+#define CREDUI_FLAGS_SERVER_CREDENTIAL              0x00004000
+#define CREDUI_FLAGS_EXPECT_CONFIRMATION            0x00020000
+#define CREDUI_FLAGS_GENERIC_CREDENTIALS            0x00040000
+#define CREDUI_FLAGS_USERNAME_TARGET_CREDENTIALS    0x00080000
+#define CREDUI_FLAGS_KEEP_USERNAME                  0x00100000
+
+/* flags for CredWrite and CredWriteDomainCredentials */
+#define CRED_PRESERVE_CREDENTIAL_BLOB               0x00000001
+
+WINADVAPI BOOL  WINAPI CredDeleteA(LPCSTR,DWORD,DWORD);
+WINADVAPI BOOL  WINAPI CredDeleteW(LPCWSTR,DWORD,DWORD);
+#define                CredDelete WINELIB_NAME_AW(CredDelete)
+WINADVAPI BOOL  WINAPI CredEnumerateA(LPCSTR,DWORD,DWORD *,PCREDENTIALA **);
+WINADVAPI BOOL  WINAPI CredEnumerateW(LPCWSTR,DWORD,DWORD *,PCREDENTIALW **);
+#define                CredEnumerate WINELIB_NAME_AW(CredEnumerate)
+WINADVAPI VOID  WINAPI CredFree(PVOID);
+WINADVAPI BOOL  WINAPI CredGetSessionTypes(DWORD,LPDWORD);
+WINADVAPI BOOL  WINAPI CredReadA(LPCSTR,DWORD,DWORD,PCREDENTIALA *);
+WINADVAPI BOOL  WINAPI CredReadW(LPCWSTR,DWORD,DWORD,PCREDENTIALW *);
+#define                CredRead WINELIB_NAME_AW(CredRead)
+WINADVAPI BOOL  WINAPI CredRenameA(LPCSTR,LPCSTR,DWORD,DWORD);
+WINADVAPI BOOL  WINAPI CredRenameW(LPCWSTR,LPCWSTR,DWORD,DWORD);
+#define                CredRename WINELIB_NAME_AW(CredRename)
+WINADVAPI BOOL  WINAPI CredWriteA(PCREDENTIALA,DWORD);
+WINADVAPI BOOL  WINAPI CredWriteW(PCREDENTIALW,DWORD);
+#define                CredWrite WINELIB_NAME_AW(CredWrite)
+
+DWORD WINAPI CredUICmdLinePromptForCredentialsW(PCWSTR,PCtxtHandle,DWORD,PWSTR,ULONG,PWSTR,ULONG,PBOOL,DWORD);
+DWORD WINAPI CredUICmdLinePromptForCredentialsA(PCSTR,PCtxtHandle,DWORD,PSTR,ULONG,PSTR,ULONG,PBOOL,DWORD);
+#define      CredUICmdLinePromptForCredentials WINELIB_NAME_AW(CredUICmdLinePromptForCredentials)
+DWORD WINAPI CredUIConfirmCredentialsW(PCWSTR,BOOL);
+DWORD WINAPI CredUIConfirmCredentialsA(PCSTR,BOOL);
+#define      CredUIConfirmCredentials WINELIB_NAME_AW(CredUIConfirmCredentials)
+DWORD WINAPI CredUIParseUserNameW(PCWSTR,PWSTR,ULONG,PWSTR,ULONG);
+DWORD WINAPI CredUIParseUserNameA(PCSTR,PSTR,ULONG,PSTR,ULONG);
+#define      CredUIParseUserName WINELIB_NAME_AW(CredUIParseUserName)
+DWORD WINAPI CredUIPromptForCredentialsW(PCREDUI_INFOW,PCWSTR,PCtxtHandle,DWORD,PWSTR,ULONG,PWSTR,ULONG,PBOOL,DWORD);
+DWORD WINAPI CredUIPromptForCredentialsA(PCREDUI_INFOA,PCSTR,PCtxtHandle,DWORD,PSTR,ULONG,PSTR,ULONG,PBOOL,DWORD);
+#define      CredUIPromptForCredentials WINELIB_NAME_AW(CredUIPromptForCredentials)
+DWORD WINAPI CredUIStoreSSOCredW(PCWSTR,PCWSTR,PCWSTR,BOOL);
+/* Note: no CredUIStoreSSOCredA in PSDK header */
+DWORD WINAPI CredUIReadSSOCredW(PCWSTR,PWSTR*);
+/* Note: no CredUIReadSSOCredA in PSDK header */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _WINCRED_H_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wincrypt.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wincrypt.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wincrypt.h	(revision 16410)
@@ -0,0 +1,4420 @@
+/*
+ * Copyright (C) 2002 Travis Michielsen
+ * Copyright (C) 2004-2005 Juan Lang
+ * Copyright (C) 2007 Vijay Kiran Kamuju
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINCRYPT_H
+#define __WINE_WINCRYPT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <bcrypt.h>
+/* FIXME: #include <ncrypt.h> */
+
+#ifdef _ADVAPI32_
+# define WINADVAPI
+#else
+# define WINADVAPI DECLSPEC_IMPORT
+#endif
+
+/* some typedefs for function parameters */
+typedef unsigned int ALG_ID;
+typedef ULONG_PTR HCRYPTPROV;
+typedef ULONG_PTR HCRYPTPROV_OR_NCRYPT_KEY_HANDLE;
+typedef ULONG_PTR HCRYPTPROV_LEGACY;
+typedef ULONG_PTR HCRYPTKEY;
+typedef ULONG_PTR HCRYPTHASH;
+typedef void *HCERTSTORE;
+typedef void *HCRYPTMSG;
+typedef void *HCERTSTOREPROV;
+typedef void *HCRYPTOIDFUNCSET;
+typedef void *HCRYPTOIDFUNCADDR;
+typedef void *HCRYPTDEFAULTCONTEXT;
+
+/* CSP Structs */
+
+typedef struct _PROV_ENUMALGS {
+  ALG_ID aiAlgid;
+  DWORD  dwBitLen;
+  DWORD  dwNameLen;
+  CHAR   szName[20];
+} PROV_ENUMALGS;
+
+typedef struct _PROV_ENUMALGS_EX {
+  ALG_ID aiAlgid;
+  DWORD  dwDefaultLen;
+  DWORD  dwMinLen;
+  DWORD  dwMaxLen;
+  DWORD  dwProtocols;
+  DWORD  dwNameLen;
+  CHAR   szName[20];
+  DWORD  dwLongNameLen;
+  CHAR   szLongName[40];
+} PROV_ENUMALGS_EX;
+
+#define SCHANNEL_MAC_KEY 0
+#define SCHANNEL_ENC_KEY 1
+
+typedef struct _SCHANNEL_ALG {
+  DWORD  dwUse;
+  ALG_ID Algid;
+  DWORD  cBits;
+  DWORD  dwFlags;
+  DWORD  dwReserved;
+} SCHANNEL_ALG, *PSCHANNEL_ALG;
+
+typedef struct _HMAC_INFO {
+  ALG_ID HashAlgid;
+  BYTE*  pbInnerString;
+  DWORD  cbInnerString;
+  BYTE*  pbOuterString;
+  DWORD  cbOuterString;
+} HMAC_INFO, *PHMAC_INFO;
+		
+typedef struct _CRYPTOAPI_BLOB {
+  DWORD    cbData;
+  BYTE*    pbData;
+} CRYPT_INTEGER_BLOB,  *PCRYPT_INTEGER_BLOB,
+  CRYPT_UINT_BLOB,     *PCRYPT_UINT_BLOB,
+  CRYPT_OBJID_BLOB,    *PCRYPT_OBJID_BLOB,
+  CERT_NAME_BLOB,      *PCERT_NAME_BLOB,
+  CERT_RDN_VALUE_BLOB, *PCERT_RDN_VALUE_BLOB,
+  CERT_BLOB,           *PCERT_BLOB,
+  CRL_BLOB,            *PCRL_BLOB,
+  DATA_BLOB,           *PDATA_BLOB,
+  CRYPT_DATA_BLOB,     *PCRYPT_DATA_BLOB,
+  CRYPT_HASH_BLOB,     *PCRYPT_HASH_BLOB,
+  CRYPT_DIGEST_BLOB,   *PCRYPT_DIGEST_BLOB,
+  CRYPT_DER_BLOB,      *PCRYPT_DER_BLOB,
+  CRYPT_ATTR_BLOB,     *PCRYPT_ATTR_BLOB;
+
+typedef struct _CRYPTPROTECT_PROMPTSTRUCT{
+  DWORD   cbSize;
+  DWORD   dwPromptFlags;
+  HWND    hwndApp;
+  LPCWSTR szPrompt;
+} CRYPTPROTECT_PROMPTSTRUCT, *PCRYPTPROTECT_PROMPTSTRUCT;
+
+typedef struct _CRYPT_ALGORITHM_IDENTIFIER {
+  LPSTR            pszObjId;
+  CRYPT_OBJID_BLOB Parameters;
+} CRYPT_ALGORITHM_IDENTIFIER, *PCRYPT_ALGORITHM_IDENTIFIER;
+
+typedef struct _CRYPT_ATTRIBUTE_TYPE_VALUE {
+  LPSTR               pszObjId;
+  CRYPT_OBJID_BLOB    Value;
+} CRYPT_ATTRIBUTE_TYPE_VALUE, *PCRYPT_ATTRIBUTE_TYPE_VALUE;
+
+typedef struct _PUBLICKEYSTRUC {
+    BYTE   bType;
+    BYTE   bVersion;
+    WORD   reserved;
+    ALG_ID aiKeyAlg;
+} BLOBHEADER, PUBLICKEYSTRUC;
+
+typedef struct _RSAPUBKEY {
+    DWORD   magic;
+    DWORD   bitlen;
+    DWORD   pubexp;
+} RSAPUBKEY;
+
+typedef struct _PUBKEY {
+    DWORD   magic;
+    DWORD   bitlen;
+} DHPUBKEY, DSSPUBKEY, KEAPUBKEY, TEKPUBKEY;
+
+typedef struct _DSSSEED {
+    DWORD   counter;
+    BYTE    seed[20];
+} DSSSEED;
+
+typedef struct _PUBKEYVER3 {
+    DWORD   magic;
+    DWORD   bitlenP;
+    DWORD   bitlenQ;
+    DWORD   bitlenJ;
+    DSSSEED DSSSeed;
+} DHPUBKEY_VER3, DSSPUBKEY_VER3;
+
+typedef struct _PRIVKEYVER3 {
+    DWORD   magic;
+    DWORD   bitlenP;
+    DWORD   bitlenQ;
+    DWORD   bitlenJ;
+    DWORD   bitlenX;
+    DSSSEED DSSSeed;
+} DHPRIVKEY_VER3, DSSPRIVKEY_VER3;
+
+typedef struct _KEY_TYPE_SUBTYPE {
+    DWORD   dwKeySpec;
+    GUID    Type;
+    GUID    SubType;
+} KEY_TYPE_SUBTYPE, *PKEY_TYPE_SUBTYPE;
+
+typedef struct _CERT_FORTEZZA_DATA_PROP {
+    unsigned char   SerialNumber[8];
+    int             CertIndex;
+    unsigned char   CertLabel[36];
+} CERT_FORTEZZA_DATA_PROP;
+
+typedef struct _CMS_DH_KEY_INFO {
+    DWORD             dwVersion;
+    ALG_ID            Algid;
+    LPSTR             pszContentEncObjId;
+    CRYPT_DATA_BLOB   PubInfo;
+    void              *pReserved;
+} CMS_DH_KEY_INFO, *PCMS_DH_KEY_INFO;
+
+typedef struct _CRYPT_BIT_BLOB {
+    DWORD cbData;
+    BYTE  *pbData;
+    DWORD cUnusedBits;
+} CRYPT_BIT_BLOB, *PCRYPT_BIT_BLOB;
+
+typedef struct _CRYPT_KEY_PROV_PARAM {
+    DWORD dwParam;
+    BYTE *pbData;
+    DWORD cbData;
+    DWORD dwFlags;
+} CRYPT_KEY_PROV_PARAM, *PCRYPT_KEY_PROV_PARAM;
+
+typedef struct _CRYPT_KEY_PROV_INFO {
+    LPWSTR                pwszContainerName;
+    LPWSTR                pwszProvName;
+    DWORD                 dwProvType;
+    DWORD                 dwFlags;
+    DWORD                 cProvParam;
+    PCRYPT_KEY_PROV_PARAM rgProvParam;
+    DWORD                 dwKeySpec;
+} CRYPT_KEY_PROV_INFO, *PCRYPT_KEY_PROV_INFO;
+
+typedef struct _CERT_KEY_CONTEXT {
+    DWORD      cbSize;
+    HCRYPTPROV hCryptProv;
+    DWORD      dwKeySpec;
+} CERT_KEY_CONTEXT, *PCERT_KEY_CONTEXT;
+
+typedef struct _CERT_PUBLIC_KEY_INFO {
+    CRYPT_ALGORITHM_IDENTIFIER Algorithm;
+    CRYPT_BIT_BLOB             PublicKey;
+} CERT_PUBLIC_KEY_INFO, *PCERT_PUBLIC_KEY_INFO;
+
+typedef struct _CERT_EXTENSION {
+    LPSTR               pszObjId;
+    BOOL                fCritical;
+    CRYPT_OBJID_BLOB    Value;
+} CERT_EXTENSION, *PCERT_EXTENSION;
+
+typedef struct _CERT_EXTENSIONS {
+    DWORD           cExtension;
+    PCERT_EXTENSION rgExtension;
+} CERT_EXTENSIONS, *PCERT_EXTENSIONS;
+
+typedef struct _CERT_INFO {
+    DWORD                      dwVersion;
+    CRYPT_INTEGER_BLOB         SerialNumber;
+    CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm;
+    CERT_NAME_BLOB             Issuer;
+    FILETIME                   NotBefore;
+    FILETIME                   NotAfter;
+    CERT_NAME_BLOB             Subject;
+    CERT_PUBLIC_KEY_INFO       SubjectPublicKeyInfo;
+    CRYPT_BIT_BLOB             IssuerUniqueId;
+    CRYPT_BIT_BLOB             SubjectUniqueId;
+    DWORD                      cExtension;
+    PCERT_EXTENSION            rgExtension;
+} CERT_INFO, *PCERT_INFO;
+
+typedef struct _CERT_RDN_ATTR {
+    LPSTR               pszObjId;
+    DWORD               dwValueType;
+    CERT_RDN_VALUE_BLOB Value;
+} CERT_RDN_ATTR, *PCERT_RDN_ATTR;
+
+typedef struct _CERT_RDN {
+    DWORD          cRDNAttr;
+    PCERT_RDN_ATTR rgRDNAttr;
+} CERT_RDN, *PCERT_RDN;
+
+typedef struct _CERT_NAME_INFO {
+    DWORD     cRDN;
+    PCERT_RDN rgRDN;
+} CERT_NAME_INFO, *PCERT_NAME_INFO;
+
+typedef struct _CERT_NAME_VALUE {
+    DWORD               dwValueType;
+    CERT_RDN_VALUE_BLOB Value;
+} CERT_NAME_VALUE, *PCERT_NAME_VALUE;
+
+typedef struct _CERT_ENCRYPTED_PRIVATE_KEY_INFO {
+    CRYPT_ALGORITHM_IDENTIFIER EncryptionAlgorithm;
+    CRYPT_DATA_BLOB            EncryptedPrivateKey;
+} CERT_ENCRYPTED_PRIVATE_KEY_INFO, *PCERT_ENCRYPTED_PRIVATE_KEY_INFO;
+
+typedef struct _CERT_AUTHORITY_KEY_ID_INFO {
+    CRYPT_DATA_BLOB    KeyId;
+    CERT_NAME_BLOB     CertIssuer;
+    CRYPT_INTEGER_BLOB CertSerialNumber;
+} CERT_AUTHORITY_KEY_ID_INFO, *PCERT_AUTHORITY_KEY_ID_INFO;
+
+typedef struct _CERT_PRIVATE_KEY_VALIDITY {
+    FILETIME NotBefore;
+    FILETIME NotAfter;
+} CERT_PRIVATE_KEY_VALIDITY, *PCERT_PRIVATE_KEY_VALIDITY;
+
+typedef struct _CERT_KEY_ATTRIBUTES_INFO {
+    CRYPT_DATA_BLOB            KeyId;
+    CRYPT_BIT_BLOB             IntendedKeyUsage;
+    PCERT_PRIVATE_KEY_VALIDITY pPrivateKeyUsagePeriod;
+} CERT_KEY_ATTRIBUTES_INFO, *PCERT_KEY_ATTRIBUTES_INFO;
+
+/* byte 0 */
+#define CERT_DIGITAL_SIGNATURE_KEY_USAGE 0x80
+#define CERT_NON_REPUDIATION_KEY_USAGE   0x40
+#define CERT_KEY_ENCIPHERMENT_KEY_USAGE  0x20
+#define CERT_DATA_ENCIPHERMENT_KEY_USAGE 0x10
+#define CERT_KEY_AGREEMENT_KEY_USAGE     0x08
+#define CERT_KEY_CERT_SIGN_KEY_USAGE     0x04
+#define CERT_OFFLINE_CRL_SIGN_KEY_USAGE  0x02
+#define CERT_CRL_SIGN_KEY_USAGE          0x02
+#define CERT_ENCIPHER_ONLY_KEY_USAGE     0x01
+/* byte 1 */
+#define CERT_DECIPHER_ONLY_KEY_USAGE     0x80
+
+typedef struct _CERT_POLICY_ID {
+    DWORD  cCertPolicyElementId;
+    LPSTR *rgbszCertPolicyElementId;
+} CERT_POLICY_ID, *PCERT_POLICY_ID;
+
+typedef struct _CERT_KEY_USAGE_RESTRICTION_INFO {
+    DWORD           cCertPolicyId;
+    PCERT_POLICY_ID rgCertPolicyId;
+    CRYPT_BIT_BLOB  RestrictedKeyUsage;
+} CERT_KEY_USAGE_RESTRICTION_INFO, *PCERT_KEY_USAGE_RESTRICTION_INFO;
+
+typedef struct _CERT_OTHER_NAME {
+    LPSTR            pszObjId;
+    CRYPT_OBJID_BLOB Value;
+} CERT_OTHER_NAME, *PCERT_OTHER_NAME;
+
+typedef struct _CERT_ALT_NAME_ENTRY {
+    DWORD dwAltNameChoice;
+    union {
+        PCERT_OTHER_NAME pOtherName;
+        LPWSTR           pwszRfc822Name;
+        LPWSTR           pwszDNSName;
+        CERT_NAME_BLOB   DirectoryName;
+        LPWSTR           pwszURL;
+        CRYPT_DATA_BLOB  IPAddress;
+        LPSTR            pszRegisteredID;
+    } DUMMYUNIONNAME;
+} CERT_ALT_NAME_ENTRY, *PCERT_ALT_NAME_ENTRY;
+
+#define CERT_ALT_NAME_OTHER_NAME     1
+#define CERT_ALT_NAME_RFC822_NAME    2
+#define CERT_ALT_NAME_DNS_NAME       3
+#define CERT_ALT_NAME_X400_ADDRESS   4
+#define CERT_ALT_NAME_DIRECTORY_NAME 5
+#define CERT_ALT_NAME_EDI_PARTY_NAME 6
+#define CERT_ALT_NAME_URL            7
+#define CERT_ALT_NAME_IP_ADDRESS     8
+#define CERT_ALT_NAME_REGISTERED_ID  9
+
+typedef struct _CERT_ALT_NAME_INFO {
+    DWORD                cAltEntry;
+    PCERT_ALT_NAME_ENTRY rgAltEntry;
+} CERT_ALT_NAME_INFO, *PCERT_ALT_NAME_INFO;
+
+#define CERT_ALT_NAME_ENTRY_ERR_INDEX_MASK  0xff
+#define CERT_ALT_NAME_ENTRY_ERR_INDEX_SHIFT 16
+#define CERT_ALT_NAME_VALUE_ERR_INDEX_MASK  0x0000ffff
+#define CERT_ALT_NAME_VALUE_ERR_INDEX_SHIFT 0
+#define GET_CERT_ALT_NAME_ENTRY_ERR_INDEX(x) \
+ (((x) >> CERT_ALT_NAME_ENTRY_ERR_INDEX_SHIFT) & \
+  CERT_ALT_NAME_ENTRY_ERR_INDEX_MASK)
+#define GET_CERT_ALT_NAME_VALUE_ERR_INDEX(x) \
+ ((x) & CERT_ALT_NAME_VALUE_ERR_INDEX_MASK)
+
+typedef struct _CERT_BASIC_CONSTRAINTS_INFO {
+    CRYPT_BIT_BLOB  SubjectType;
+    BOOL            fPathLenConstraint;
+    DWORD           dwPathLenConstraint;
+    DWORD           cSubtreesConstraint;
+    CERT_NAME_BLOB *rgSubtreesConstraint;
+} CERT_BASIC_CONSTRAINTS_INFO, *PCERT_BASIC_CONSTRAINTS_INFO;
+
+#define CERT_CA_SUBJECT_FLAG         0x80
+#define CERT_END_ENTITY_SUBJECT_FLAG 0x40
+
+typedef struct _CERT_BASIC_CONSTRAINTS2_INFO {
+    BOOL  fCA;
+    BOOL  fPathLenConstraint;
+    DWORD dwPathLenConstraint;
+} CERT_BASIC_CONSTRAINTS2_INFO, *PCERT_BASIC_CONSTRAINTS2_INFO;
+
+typedef struct _CERT_POLICY_QUALIFIER_INFO {
+    LPSTR            pszPolicyQualifierId;
+    CRYPT_OBJID_BLOB Qualifier;
+} CERT_POLICY_QUALIFIER_INFO, *PCERT_POLICY_QUALIFIER_INFO;
+
+typedef struct _CERT_POLICY_INFO {
+    LPSTR                       pszPolicyIdentifier;
+    DWORD                       cPolicyQualifier;
+    CERT_POLICY_QUALIFIER_INFO *rgPolicyQualifier;
+} CERT_POLICY_INFO, *PCERT_POLICY_INFO;
+
+typedef struct _CERT_POLICIES_INFO {
+    DWORD             cPolicyInfo;
+    CERT_POLICY_INFO *rgPolicyInfo;
+} CERT_POLICIES_INFO, *PCERT_POLICIES_INFO;
+
+typedef struct _CERT_POLICY_QUALIFIER_NOTICE_REFERENCE {
+    LPSTR pszOrganization;
+    DWORD cNoticeNumbers;
+    int  *rgNoticeNumbers;
+} CERT_POLICY_QUALIFIER_NOTICE_REFERENCE,
+ *PCERT_POLICY_QUALIFIER_NOTICE_REFERENCE;
+
+typedef struct _CERT_POLICY_QUALIFIER_USER_NOTICE {
+    CERT_POLICY_QUALIFIER_NOTICE_REFERENCE *pNoticeReference;
+    LPWSTR                                  pszDisplayText;
+} CERT_POLICY_QUALIFIER_USER_NOTICE, *PCERT_POLICY_QUALIFIER_USER_NOTICE;
+
+typedef struct _CPS_URLS {
+    LPWSTR                      pszURL;
+    CRYPT_ALGORITHM_IDENTIFIER *pAlgorithm;
+    CRYPT_DATA_BLOB            *pDigest;
+} CPS_URLS, *PCPS_URLS;
+
+typedef struct _CERT_POLICY95_QUALIFIER1 {
+    LPWSTR    pszPracticesReference;
+    LPSTR     pszNoticeIdentifier;
+    LPSTR     pszNSINoticeIdentifier;
+    DWORD     cCPSURLs;
+    CPS_URLS *rgCPSURLs;
+} CERT_POLICY95_QUALIFIER1, *PCERT_POLICY95_QUALIFIER1;
+
+typedef struct _CERT_POLICY_MAPPING {
+    LPSTR pszIssuerDomainPolicy;
+    LPSTR pszSubjectDomainPolicy;
+} CERT_POLICY_MAPPING, *PCERT_POLICY_MAPPING;
+
+typedef struct _CERT_POLICY_MAPPINGS_INFO {
+    DWORD                cPolicyMapping;
+    PCERT_POLICY_MAPPING rgPolicyMapping;
+} CERT_POLICY_MAPPINGS_INFO, *PCERT_POLICY_MAPPINGS_INFO;
+
+typedef struct _CERT_POLICY_CONSTRAINTS_INFO {
+    BOOL  fRequireExplicitPolicy;
+    DWORD dwRequireExplicitPolicySkipCerts;
+    BOOL  fInhibitPolicyMapping;
+    DWORD dwInhibitPolicyMappingSkipCerts;
+} CERT_POLICY_CONSTRAINTS_INFO, *PCERT_POLICY_CONSTRAINTS_INFO;
+
+typedef struct _CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY {
+    LPSTR           pszObjId;
+    DWORD           cValue;
+    PCRYPT_DER_BLOB rgValue;
+} CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY, *PCRYPT_CONTENT_INFO_SEQUENCE_OF_ANY;
+
+typedef struct _CRYPT_CONTENT_INFO {
+    LPSTR          pszObjId;
+    CRYPT_DER_BLOB Content;
+} CRYPT_CONTENT_INFO, *PCRYPT_CONTENT_INFO;
+
+typedef struct _CRYPT_SEQUENCE_OF_ANY {
+    DWORD           cValue;
+    PCRYPT_DER_BLOB rgValue;
+} CRYPT_SEQUENCE_OF_ANY, *PCRYPT_SEQUENCE_OF_ANY;
+
+typedef struct _CERT_AUTHORITY_KEY_ID2_INFO {
+    CRYPT_DATA_BLOB    KeyId;
+    CERT_ALT_NAME_INFO AuthorityCertIssuer;
+    CRYPT_INTEGER_BLOB AuthorityCertSerialNumber;
+} CERT_AUTHORITY_KEY_ID2_INFO, *PCERT_AUTHORITY_KEY_ID2_INFO;
+
+typedef struct _CERT_ACCESS_DESCRIPTION {
+    LPSTR               pszAccessMethod;
+    CERT_ALT_NAME_ENTRY AccessLocation;
+} CERT_ACCESS_DESCRIPTION, *PCERT_ACCESS_DESCRIPTION;
+
+typedef struct _CERT_AUTHORITY_INFO_ACCESS {
+    DWORD                    cAccDescr;
+    PCERT_ACCESS_DESCRIPTION rgAccDescr;
+} CERT_AUTHORITY_INFO_ACCESS, *PCERT_AUTHORITY_INFO_ACCESS;
+
+typedef struct _CERT_CONTEXT {
+    DWORD      dwCertEncodingType;
+    BYTE       *pbCertEncoded;
+    DWORD      cbCertEncoded;
+    PCERT_INFO pCertInfo;
+    HCERTSTORE hCertStore;
+} CERT_CONTEXT, *PCERT_CONTEXT;
+typedef const CERT_CONTEXT *PCCERT_CONTEXT;
+
+typedef struct _CRL_ENTRY {
+    CRYPT_INTEGER_BLOB SerialNumber;
+    FILETIME           RevocationDate;
+    DWORD              cExtension;
+    PCERT_EXTENSION    rgExtension;
+} CRL_ENTRY, *PCRL_ENTRY;
+
+typedef struct _CRL_INFO {
+    DWORD           dwVersion;
+    CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm;
+    CERT_NAME_BLOB  Issuer;
+    FILETIME        ThisUpdate;
+    FILETIME        NextUpdate;
+    DWORD           cCRLEntry;
+    PCRL_ENTRY      rgCRLEntry;
+    DWORD           cExtension;
+    PCERT_EXTENSION rgExtension;
+} CRL_INFO, *PCRL_INFO;
+
+typedef struct _CRL_DIST_POINT_NAME {
+    DWORD dwDistPointNameChoice;
+    union {
+        CERT_ALT_NAME_INFO FullName;
+    } DUMMYUNIONNAME;
+} CRL_DIST_POINT_NAME, *PCRL_DIST_POINT_NAME;
+
+#define CRL_DIST_POINT_NO_NAME         0
+#define CRL_DIST_POINT_FULL_NAME       1
+#define CRL_DIST_POINT_ISSUER_RDN_NAME 2
+
+typedef struct _CRL_DIST_POINT {
+    CRL_DIST_POINT_NAME DistPointName;
+    CRYPT_BIT_BLOB      ReasonFlags;
+    CERT_ALT_NAME_INFO  CRLIssuer;
+} CRL_DIST_POINT, *PCRL_DIST_POINT;
+
+#define CRL_REASON_UNUSED_FLAG                 0x80
+#define CRL_REASON_KEY_COMPROMISE_FLAG         0x40
+#define CRL_REASON_CA_COMPROMISE_FLAG          0x20
+#define CRL_REASON_AFFILIATION_CHANGED_FLAG    0x10
+#define CRL_REASON_SUPERSEDED_FLAG             0x08
+#define CRL_REASON_CESSATION_OF_OPERATION_FLAG 0x04
+#define CRL_REASON_CERTIFICATE_HOLD_FLAG       0x02
+
+typedef struct _CRL_DIST_POINTS_INFO {
+    DWORD           cDistPoint;
+    PCRL_DIST_POINT rgDistPoint;
+} CRL_DIST_POINTS_INFO, *PCRL_DIST_POINTS_INFO;
+
+#define CRL_DIST_POINT_ERR_INDEX_MASK  0x7f
+#define CRL_DIST_POINT_ERR_INDEX_SHIFT 24
+#define GET_CRL_DIST_POINT_ERR_INDEX(x) \
+ (((x) >> CRL_DIST_POINT_ERR_INDEX_SHIFT) & CRL_DIST_POINT_ERR_INDEX_MASK)
+
+#define CRL_DIST_POINT_ERR_CRL_ISSUER_BIT 0x80000000L
+#define IS_CRL_DIST_POINT_ERR_CRL_ISSUER(x) \
+ ((x) & CRL_DIST_POINT_ERR_CRL_ISSUER_BIT)
+
+typedef struct _CROSS_CERT_DIST_POINTS_INFO {
+    DWORD               dwSyncDeltaTime;
+    DWORD               cDistPoint;
+    PCERT_ALT_NAME_INFO rgDistPoint;
+} CROSS_CERT_DIST_POINTS_INFO, *PCROSS_CERT_DIST_POINTS_INFO;
+
+#define CROSS_CERT_DIST_POINT_ERR_INDEX_MASK  0xff
+#define CROSS_CERT_DIST_POINT_ERR_INDEX_SHIFT 24
+#define GET_CROSS_CERT_DIST_POINT_ERR_INDEX(x) \
+ (((x) >> CROSS_CERT_DIST_POINT_ERR_INDEX_SHIFT) & \
+ CROSS_CERT_DIST_POINT_ERR_INDEX_MASK)
+
+typedef struct _CERT_PAIR {
+    CERT_BLOB Forward;
+    CERT_BLOB Reverse;
+} CERT_PAIR, *PCERT_PAIR;
+
+typedef struct _CRL_ISSUING_DIST_POINT {
+    CRL_DIST_POINT_NAME DistPointName;
+    BOOL                fOnlyContainsUserCerts;
+    BOOL                fOnlyContainsCACerts;
+    CRYPT_BIT_BLOB      OnlySomeReasonFlags;
+    BOOL                fIndirectCRL;
+} CRL_ISSUING_DIST_POINT, *PCRL_ISSUING_DIST_POINT;
+
+typedef struct _CERT_GENERAL_SUBTREE {
+    CERT_ALT_NAME_ENTRY Base;
+    DWORD               dwMinimum;
+    BOOL                fMaximum;
+    DWORD               dwMaximum;
+} CERT_GENERAL_SUBTREE, *PCERT_GENERAL_SUBTREE;
+
+typedef struct _CERT_NAME_CONSTRAINTS_INFO {
+    DWORD                 cPermittedSubtree;
+    PCERT_GENERAL_SUBTREE rgPermittedSubtree;
+    DWORD                 cExcludedSubtree;
+    PCERT_GENERAL_SUBTREE rgExcludedSubtree;
+} CERT_NAME_CONSTRAINTS_INFO, *PCERT_NAME_CONSTRAINTS_INFO;
+
+#define CERT_EXCLUDED_SUBTREE_BIT 0x80000000L
+#define IS_CERT_EXCLUDED_SUBTREE(x) ((x) & CERT_EXCLUDED_SUBTREE_BIT)
+
+typedef struct _CRYPT_ATTRIBUTE {
+    LPSTR            pszObjId;
+    DWORD            cValue;
+    PCRYPT_DATA_BLOB rgValue;
+} CRYPT_ATTRIBUTE, *PCRYPT_ATTRIBUTE;
+
+typedef struct _CRYPT_ATTRIBUTES {
+    DWORD            cAttr;
+    PCRYPT_ATTRIBUTE rgAttr;
+} CRYPT_ATTRIBUTES, *PCRYPT_ATTRIBUTES;
+
+typedef struct _CERT_REQUEST_INFO {
+    DWORD                dwVersion;
+    CERT_NAME_BLOB       Subject;
+    CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo;
+    DWORD                cAttribute;
+    PCRYPT_ATTRIBUTE     rgAttribute;
+} CERT_REQUEST_INFO, *PCERT_REQUEST_INFO;
+
+typedef struct _CERT_KEYGEN_REQUEST_INFO {
+    DWORD                dwVersion;
+    CERT_PUBLIC_KEY_INFO SubjectPubliceKeyInfo;
+    LPWSTR               pwszChallengeString;
+} CERT_KEYGEN_REQUEST_INFO, *PCERT_KEYGEN_REQUEST_INFO;
+
+typedef struct _CERT_SIGNED_CONTENT_INFO {
+    CRYPT_DER_BLOB             ToBeSigned;
+    CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm;
+    CRYPT_BIT_BLOB             Signature;
+} CERT_SIGNED_CONTENT_INFO, *PCERT_SIGNED_CONTENT_INFO;
+
+typedef struct _CRL_CONTEXT {
+    DWORD      dwCertEncodingType;
+    BYTE      *pbCrlEncoded;
+    DWORD      cbCrlEncoded;
+    PCRL_INFO  pCrlInfo;
+    HCERTSTORE hCertStore;
+} CRL_CONTEXT, *PCRL_CONTEXT;
+typedef const CRL_CONTEXT *PCCRL_CONTEXT;
+
+#define SORTED_CTL_EXT_FLAGS_OFFSET                (0*4)
+#define SORTED_CTL_EXT_COUNT_OFFSET                (1*4)
+#define SORTED_CTL_EXT_MAX_COLLISION_OFFSET        (2*4)
+#define SORTED_CTL_EXT_HASH_BUCKET_OFFSET          (3*4)
+
+#define SORTED_CTL_EXT_HASHED_SUBJECT_IDENTIFIER_FLAG    0x1
+
+typedef struct _CERT_DSS_PARAMETERS {
+    CRYPT_UINT_BLOB    p;
+    CRYPT_UINT_BLOB    q;
+    CRYPT_UINT_BLOB    g;
+} CERT_DSS_PARAMETERS, *PCERT_DSS_PARAMETERS;
+
+#define CERT_DSS_R_LEN            20
+#define CERT_DSS_S_LEN            20
+#define CERT_DSS_SIGNATURE_LEN    (CERT_DSS_R_LEN + CERT_DSS_S_LEN)
+
+#define CERT_MAX_ENCODED_DSS_SIGNATURE_LEN    (2 + 2*(2 + 20 +1))
+
+typedef struct _CERT_DH_PARAMETERS {
+    CRYPT_UINT_BLOB    p;
+    CRYPT_UINT_BLOB    g;
+} CERT_DH_PARAMETERS, *PCERT_DH_PARAMETERS;
+
+typedef struct _CERT_X942_DH_VALIDATION_PARAMS {
+    CRYPT_BIT_BLOB     seed;
+    DWORD              pgenCounter;
+} CERT_X942_DH_VALIDATION_PARAMS, *PCERT_X942_DH_VALIDATION_PARAMS;
+
+typedef struct _CERT_X942_DH_PARAMETERS {
+    CRYPT_UINT_BLOB                    p;
+    CRYPT_UINT_BLOB                    g;
+    CRYPT_UINT_BLOB                    q;
+    CRYPT_UINT_BLOB                    j;
+    PCERT_X942_DH_VALIDATION_PARAMS    pValidationParams;
+} CERT_X942_DH_PARAMETERS, *PCERT_X942_DH_PARAMETERS;
+
+#define CRYPT_X942_COUNTER_BYTE_LENGTH        4
+#define CRYPT_X942_KEY_LENGTH_BYTE_LENGTH     4
+#define CRYPT_X942_PUB_INFO_BYTE_LENGTH       (512/8)
+
+typedef struct _CRYPT_X942_OTHER_INFO {
+    LPSTR              pszContentEncryptionObjId;
+    BYTE               rgbCounter[CRYPT_X942_COUNTER_BYTE_LENGTH];
+    BYTE               rgbKeyLength[CRYPT_X942_KEY_LENGTH_BYTE_LENGTH];
+    CRYPT_DATA_BLOB    PubInfo;
+} CRYPT_X942_OTHER_INFO, *PCRYPT_X942_OTHER_INFO;
+
+typedef struct _CRYPT_RC2_CBC_PARAMETERS {
+    DWORD    dwVersion;
+    BOOL     fIV;
+    BYTE     rgbIV[4];
+} CRYPT_RC2_CBC_PARAMETERS, *PCRYPT_RC2_CBC_PARAMETERS;
+
+#define CRYPT_RC2_40BIT_VERSION    160
+#define CRYPT_RC2_56BIT_VERSION    52
+#define CRYPT_RC2_64BIT_VERSION    120
+#define CRYPT_RC2_128BIT_VERSION   58
+
+typedef struct _CRYPT_SMIME_CAPABILITY {
+    LPSTR               pszObjId;
+    CRYPT_OBJID_BLOB    Parameters;
+} CRYPT_SMIME_CAPABILITY, *PCRYPT_SMIME_CAPABILITY;
+
+typedef struct _CRYPT_SMIME_CAPABILITIES {
+    DWORD                   cCapability;
+    PCRYPT_SMIME_CAPABILITY rgCapability;
+} CRYPT_SMIME_CAPABILITIES, *PCRYPT_SMIME_CAPABILITIES;
+
+typedef struct _VTableProvStruc {
+    DWORD    Version;
+    FARPROC  pFuncVerifyImage;
+    FARPROC  pFuncReturnhWnd;
+    DWORD    dwProvType;
+    BYTE    *pbContextInfo;
+    DWORD    cbContextInfo;
+    LPSTR    pszProvName;
+} VTableProvStruc, *PVTableProvStruc;
+
+typedef struct _CERT_PRIVATE_KEY_INFO {
+    DWORD                      Version;
+    CRYPT_ALGORITHM_IDENTIFIER Algorithm;
+    CRYPT_DER_BLOB             PrivateKey;
+    PCRYPT_ATTRIBUTES          pAttributes;
+} CERT_PRIVATE_KEY_INFO, *PCERT_PRIVATE_KEY_INFO;
+
+typedef struct _CTL_USAGE {
+    DWORD  cUsageIdentifier;
+    LPSTR *rgpszUsageIdentifier;
+} CTL_USAGE, *PCTL_USAGE, CERT_ENHKEY_USAGE, *PCERT_ENHKEY_USAGE;
+
+typedef struct _CTL_ENTRY {
+    CRYPT_DATA_BLOB  SubjectIdentifier;
+    DWORD            cAttribute;
+    PCRYPT_ATTRIBUTE rgAttribute;
+} CTL_ENTRY, *PCTL_ENTRY;
+
+typedef struct _CTL_INFO {
+    DWORD                      dwVersion;
+    CTL_USAGE                  SubjectUsage;
+    CRYPT_DATA_BLOB            ListIdentifier;
+    CRYPT_INTEGER_BLOB         SequenceNumber;
+    FILETIME                   ThisUpdate;
+    FILETIME                   NextUpdate;
+    CRYPT_ALGORITHM_IDENTIFIER SubjectAlgorithm;
+    DWORD                      cCTLEntry;
+    PCTL_ENTRY                 rgCTLEntry;
+    DWORD                      cExtension;
+    PCERT_EXTENSION            rgExtension;
+} CTL_INFO, *PCTL_INFO;
+
+typedef struct _CTL_CONTEXT {
+    DWORD      dwMsgAndCertEncodingType;
+    BYTE      *pbCtlEncoded;
+    DWORD      cbCtlEncoded;
+    PCTL_INFO  pCtlInfo;
+    HCERTSTORE hCertStore;
+    HCRYPTMSG  hCryptMsg;
+    BYTE      *pbCtlContext;
+    DWORD      cbCtlContext;
+} CTL_CONTEXT, *PCTL_CONTEXT;
+typedef const CTL_CONTEXT *PCCTL_CONTEXT;
+
+typedef struct _CRYPT_TIME_STAMP_REQUEST_INFO {
+    LPSTR            pszTimeStampAlgorithm;
+    LPSTR            pszContentType;
+    CRYPT_OBJID_BLOB Content;
+    DWORD            cAttribute;
+    PCRYPT_ATTRIBUTE rgAttribute;
+} CRYPT_TIME_STAMP_REQUEST_INFO, *PCRYPT_TIME_STAMP_REQUEST_INFO;
+
+typedef struct _CRYPT_ENROLLMENT_NAME_VALUE_PAIR {
+    LPWSTR pwszName;
+    LPWSTR pwszValue;
+} CRYPT_ENROLLMENT_NAME_VALUE_PAIR, *PCRYPT_ENROLLMENT_NAME_VALUE_PAIR;
+
+typedef struct _CMSG_SIGNER_INFO {
+    DWORD                      dwVersion;
+    CERT_NAME_BLOB             Issuer;
+    CRYPT_INTEGER_BLOB         SerialNumber;
+    CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
+    CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
+    CRYPT_DATA_BLOB            EncryptedHash;
+    CRYPT_ATTRIBUTES           AuthAttrs;
+    CRYPT_ATTRIBUTES           UnauthAttrs;
+} CMSG_SIGNER_INFO, *PCMSG_SIGNER_INFO;
+
+#define CMSG_VERIFY_SIGNER_PUBKEY 1
+#define CMSG_VERIFY_SIGNER_CERT   2
+#define CMSG_VERIFY_SIGNER_CHAIN  3
+#define CMSG_VERIFY_SIGNER_NULL   4
+
+typedef struct _CERT_REVOCATION_CRL_INFO {
+    DWORD         cbSize;
+    PCCRL_CONTEXT pBaseCrlContext;
+    PCCRL_CONTEXT pDeltaCrlContext;
+    PCRL_ENTRY    pCrlEntry;
+    BOOL          fDeltaCrlEntry;
+} CERT_REVOCATION_CRL_INFO, *PCERT_REVOCATION_CRL_INFO;
+
+typedef struct _CERT_REVOCATION_INFO {
+    DWORD                     cbSize;
+    DWORD                     dwRevocationResult;
+    LPCSTR                    pszRevocationOid;
+    LPVOID                    pvOidSpecificInfo;
+    BOOL                      fHasFreshnessTime;
+    DWORD                     dwFreshnessTime;
+    PCERT_REVOCATION_CRL_INFO pCrlInfo;
+} CERT_REVOCATION_INFO, *PCERT_REVOCATION_INFO;
+
+typedef struct _CERT_REVOCATION_PARA {
+    DWORD                     cbSize;
+    PCCERT_CONTEXT            pIssuerCert;
+    DWORD                     cCertStore;
+    HCERTSTORE               *rgCertStore;
+    HCERTSTORE                hCrlStore;
+    LPFILETIME                pftTimeToUse;
+#ifdef CERT_REVOCATION_PARA_HAS_EXTRA_FIELDS
+    DWORD                     dwUrlRetrievalTimeout;
+    BOOL                      fCheckFreshnessTime;
+    DWORD                     dwFreshnessTime;
+    LPFILETIME                pftCurrentTime;
+    PCERT_REVOCATION_CRL_INFO pCrlInfo;
+#endif
+} CERT_REVOCATION_PARA, *PCERT_REVOCATION_PARA;
+
+#define CERT_CONTEXT_REVOCATION_TYPE 1
+#define CERT_VERIFY_REV_CHAIN_FLAG                0x00000001
+#define CERT_VERIFY_CACHE_ONLY_BASED_REVOCATION   0x00000002
+#define CERT_VERIFY_REV_ACCUMULATIVE_TIMEOUT_FLAG 0x00000004
+
+typedef struct _CTL_VERIFY_USAGE_PARA {
+    DWORD           cbSize;
+    CRYPT_DATA_BLOB ListIdentifier;
+    DWORD           cCtlStore;
+    HCERTSTORE     *rghCtlStore;
+    DWORD           cSignerStore;
+    HCERTSTORE     *rghSignerStore;
+} CTL_VERIFY_USAGE_PARA, *PCTL_VERIFY_USAGE_PARA;
+
+typedef struct _CTL_VERIFY_USAGE_STATUS {
+    DWORD           cbSize;
+    DWORD           dwError;
+    DWORD           dwFlags;
+    PCCTL_CONTEXT  *ppCtl;
+    DWORD           dwCtlEntryIndex;
+    PCCERT_CONTEXT *ppSigner;
+    DWORD           dwSignerIndex;
+} CTL_VERIFY_USAGE_STATUS, *PCTL_VERIFY_USAGE_STATUS;
+
+#define CERT_VERIFY_INHIBIT_CTL_UPDATE_FLAG 0x1
+#define CERT_VERIFY_TRUSTED_SIGNERS_FLAG    0x2
+#define CERT_VERIFY_NO_TIME_CHECK_FLAG      0x4
+#define CERT_VERIFY_ALLOW_MORE_USAGE_FLAG   0x8
+#define CERT_VERIFY_UPDATED_CTL_FLAG        0x1
+
+typedef struct _CERT_REVOCATION_STATUS {
+    DWORD cbSize;
+    DWORD dwIndex;
+    DWORD dwError;
+    DWORD dwReason;
+    BOOL  fHasFreshnessTime;
+    DWORD dwFreshnessTime;
+} CERT_REVOCATION_STATUS, *PCERT_REVOCATION_STATUS;
+
+typedef struct _CERT_TRUST_LIST_INFO {
+    DWORD         cbSize;
+    PCTL_ENTRY    pCtlEntry;
+    PCCTL_CONTEXT pCtlContext;
+} CERT_TRUST_LIST_INFO, *PCERT_TRUST_LIST_INFO;
+
+#define CERT_TRUST_NO_ERROR                          0x00000000
+#define CERT_TRUST_IS_NOT_TIME_VALID                 0x00000001
+#define CERT_TRUST_IS_NOT_TIME_NESTED                0x00000002
+#define CERT_TRUST_IS_REVOKED                        0x00000004
+#define CERT_TRUST_IS_NOT_SIGNATURE_VALID            0x00000008
+#define CERT_TRUST_IS_NOT_VALID_FOR_USAGE            0x00000010
+#define CERT_TRUST_IS_UNTRUSTED_ROOT                 0x00000020
+#define CERT_TRUST_REVOCATION_STATUS_UNKNOWN         0x00000040
+#define CERT_TRUST_IS_CYCLIC                         0x00000080
+#define CERT_TRUST_INVALID_EXTENSION                 0x00000100
+#define CERT_TRUST_INVALID_POLICY_CONSTRAINTS        0x00000200
+#define CERT_TRUST_INVALID_BASIC_CONSTRAINTS         0x00000400
+#define CERT_TRUST_INVALID_NAME_CONSTRAINTS          0x00000800
+#define CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT 0x00001000
+#define CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT   0x00002000
+#define CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT 0x00004000
+#define CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT      0x00008000
+#define CERT_TRUST_IS_OFFLINE_REVOCATION             0x01000000
+#define CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY          0x02000000
+
+#define CERT_TRUST_IS_PARTIAL_CHAIN                  0x00010000
+#define CERT_TRUST_CTL_IS_NOT_TIME_VALID             0x00020000
+#define CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID        0x00040000
+#define CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE        0x00080000
+
+#define CERT_TRUST_HAS_EXACT_MATCH_ISSUER            0x00000001
+#define CERT_TRUST_HAS_KEY_MATCH_ISSUER              0x00000002
+#define CERT_TRUST_HAS_NAME_MATCH_ISSUER             0x00000004
+#define CERT_TRUST_IS_SELF_SIGNED                    0x00000008
+
+#define CERT_TRUST_HAS_PREFERRED_ISSUER              0x00000100
+#define CERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY         0x00000200
+#define CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS        0x00000400
+
+#define CERT_TRUST_IS_COMPLEX_CHAIN                  0x00010000
+
+typedef struct _CERT_TRUST_STATUS {
+    DWORD dwErrorStatus;
+    DWORD dwInfoStatus;
+} CERT_TRUST_STATUS, *PCERT_TRUST_STATUS;
+
+typedef struct _CERT_CHAIN_ELEMENT {
+    DWORD                 cbSize;
+    PCCERT_CONTEXT        pCertContext;
+    CERT_TRUST_STATUS     TrustStatus;
+    PCERT_REVOCATION_INFO pRevocationInfo;
+    PCERT_ENHKEY_USAGE    pIssuanceUsage;
+    PCERT_ENHKEY_USAGE    pApplicationUsage;
+    LPCWSTR               pwszExtendedErrorInfo;
+} CERT_CHAIN_ELEMENT, *PCERT_CHAIN_ELEMENT;
+
+typedef struct _CERT_SIMPLE_CHAIN {
+    DWORD                 cbSize;
+    CERT_TRUST_STATUS     TrustStatus;
+    DWORD                 cElement;
+    PCERT_CHAIN_ELEMENT  *rgpElement;
+    PCERT_TRUST_LIST_INFO pTrustListInfo;
+    BOOL                  fHasRevocationFreshnessTime;
+    DWORD                 dwRevocationFreshnessTime;
+} CERT_SIMPLE_CHAIN, *PCERT_SIMPLE_CHAIN;
+
+typedef struct _CERT_CHAIN_CONTEXT CERT_CHAIN_CONTEXT, *PCERT_CHAIN_CONTEXT;
+typedef const CERT_CHAIN_CONTEXT *PCCERT_CHAIN_CONTEXT;
+
+struct _CERT_CHAIN_CONTEXT {
+    DWORD                 cbSize;
+    CERT_TRUST_STATUS     TrustStatus;
+    DWORD                 cChain;
+    PCERT_SIMPLE_CHAIN   *rgpChain;
+    DWORD                 cLowerQualityChainContext;
+    PCCERT_CHAIN_CONTEXT *rgpLowerQualityChainContext;
+    BOOL                  fHasRevocationFreshnessTime;
+    DWORD                 dwRevocationFreshnessTime;
+};
+
+typedef struct _CERT_CHAIN_POLICY_PARA {
+    DWORD cbSize;
+    DWORD dwFlags;
+    void *pvExtraPolicyPara;
+} CERT_CHAIN_POLICY_PARA, *PCERT_CHAIN_POLICY_PARA;
+
+typedef struct _CERT_CHAIN_POLICY_STATUS {
+    DWORD cbSize;
+    DWORD dwError;
+    LONG  lChainIndex;
+    LONG  lElementIndex;
+    void *pvExtraPolicyStatus;
+} CERT_CHAIN_POLICY_STATUS, *PCERT_CHAIN_POLICY_STATUS;
+
+#define CERT_CHAIN_POLICY_BASE              ((LPCSTR)1)
+#define CERT_CHAIN_POLICY_AUTHENTICODE      ((LPCSTR)2)
+#define CERT_CHAIN_POLICY_AUTHENTICODE_TS   ((LPCSTR)3)
+#define CERT_CHAIN_POLICY_SSL               ((LPCSTR)4)
+#define CERT_CHAIN_POLICY_BASIC_CONSTRAINTS ((LPCSTR)5)
+#define CERT_CHAIN_POLICY_NT_AUTH           ((LPCSTR)6)
+#define CERT_CHAIN_POLICY_MICROSOFT_ROOT    ((LPCSTR)7)
+
+#define CERT_CHAIN_POLICY_IGNORE_NOT_TIME_VALID_FLAG            0x00000001
+#define CERT_CHAIN_POLICY_IGNORE_CTL_NOT_TIME_VALID_FLAG        0x00000002
+#define CERT_CHAIN_POLICY_IGNORE_NOT_TIME_NESTED_FLAG           0x00000004
+#define CERT_CHAIN_POLICY_IGNORE_INVALID_BASIC_CONSTRAINTS_FLAG 0x00000008
+
+#define CERT_CHAIN_POLICY_IGNORE_ALL_NOT_TIME_VALID_FLAGS ( \
+ CERT_CHAIN_POLICY_IGNORE_NOT_TIME_VALID_FLAG \
+ CERT_CHAIN_POLICY_IGNORE_CTL_NOT_TIME_VALID_FLAG \
+ CERT_CHAIN_POLICY_IGNORE_NOT_TIME_NESTED_FLAG )
+
+#define CERT_CHAIN_POLICY_ALLOW_UNKNOWN_CA_FLAG                 0x00000010
+#define CERT_CHAIN_POLICY_IGNORE_WRONG_USAGE_FLAG               0x00000020
+#define CERT_CHAIN_POLICY_IGNORE_INVALID_NAME_FLAG              0x00000040
+#define CERT_CHAIN_POLICY_IGNORE_INVALID_POLICY_FLAG            0x00000080
+
+#define CERT_CHAIN_POLICY_IGNORE_END_REV_UNKNOWN_FLAG           0x00000100
+#define CERT_CHAIN_POLICY_IGNORE_CTL_SIGNER_REV_UNKNOWN_FLAG    0x00000200
+#define CERT_CHAIN_POLICY_IGNORE_CA_REV_UNKNOWN_FLAG            0x00000400
+#define CERT_CHAIN_POLICY_IGNORE_ROOT_REV_UNKNOWN_FLAG          0x00000800
+
+#define CERT_CHAIN_POLICY_IGNORE_ALL_REV_UNKNOWN_FLAGS ( \
+ CERT_CHAIN_POLICY_IGNORE_END_REV_UNKNOWN_FLAG \
+ CERT_CHAIN_POLICY_IGNORE_CTL_SIGNER_REV_UNKNOWN_FLAG \
+ CERT_CHAIN_POLICY_IGNORE_CA_REV_UNKNOWN_FLAG \
+ CERT_CHAIN_POLICY_IGNORE_ROOT_REV_UNKNOWN_FLAG )
+
+#define CERT_CHAIN_POLICY_TRUST_TESTROOT_FLAG                   0x00004000
+#define CERT_CHAIN_POLICY_ALLOW_TESTROOT_FLAG                   0x00008000
+#define MICROSOFT_ROOT_CERT_CHAIN_POLICY_ENABLE_TEST_ROOT_FLAG  0x00010000
+
+typedef struct _AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA {
+    DWORD             cbSize;
+    DWORD             dwRegPolicySettings;
+    PCMSG_SIGNER_INFO pSignerInfo;
+} AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA,
+ *PAUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA;
+
+typedef struct _AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS {
+    DWORD cbSize;
+    BOOL  fCommercial;
+} AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS,
+ *PAUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS;
+
+typedef struct _AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA {
+    DWORD cbSize;
+    DWORD dwRegPolicySettings;
+    BOOL  fCommercial;
+} AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA,
+ *PAUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA;
+
+typedef struct _HTTPSPolicyCallbackData {
+    union {
+        DWORD cbStruct;
+        DWORD cbSize;
+    } DUMMYUNIONNAME;
+    DWORD  dwAuthType;
+    DWORD  fdwChecks;
+    WCHAR *pwszServerName;
+} HTTPSPolicyCallbackData, *PHTTPSPolicyCallbackData,
+ SSL_EXTRA_CERT_CHAIN_POLICY_PARA, *PSSL_EXTRA_CERT_CHAIN_POLICY_PARA;
+
+/* Values for HTTPSPolicyCallbackData's dwAuthType */
+#define AUTHTYPE_CLIENT 1
+#define AUTHTYPE_SERVER 2
+/* Values for HTTPSPolicyCallbackData's fdwChecks are defined in wininet.h */
+
+#define BASIC_CONSTRAINTS_CERT_CHAIN_POLICY_CA_FLAG         0x80000000
+#define BASIC_CONSTRAINTS_CERT_CHAIN_POLICY_END_ENTITY_FLAG 0x40000000
+
+#define MICROSOFT_ROOT_CERT_CHAIN_POLICY_ENABLE_TEST_ROOT_FLAG 0x00010000
+
+#define USAGE_MATCH_TYPE_AND 0x00000000
+#define USAGE_MATCH_TYPE_OR  0x00000001
+
+typedef struct _CERT_USAGE_MATCH {
+    DWORD             dwType;
+    CERT_ENHKEY_USAGE Usage;
+} CERT_USAGE_MATCH, *PCERT_USAGE_MATCH;
+
+typedef struct _CTL_USAGE_MATCH {
+    DWORD     dwType;
+    CTL_USAGE Usage;
+} CTL_USAGE_MATCH, *PCTL_USAGE_MATCH;
+
+#define CERT_CHAIN_REVOCATION_CHECK_END_CERT           0x10000000
+#define CERT_CHAIN_REVOCATION_CHECK_CHAIN              0x20000000
+#define CERT_CHAIN_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT 0x40000000
+#define CERT_CHAIN_REVOCATION_CHECK_CACHE_ONLY         0x80000000
+
+#define CERT_CHAIN_REVOCATION_ACCUMULATIVE_TIMEOUT     0x08000000
+
+#define CERT_CHAIN_DISABLE_PASS1_QUALITY_FILTERING     0x00000040
+#define CERT_CHAIN_RETURN_LOWER_QUALITY_CONTEXTS       0x00000080
+#define CERT_CHAIN_DISABLE_AUTH_ROOT_AUTO_UPDATE       0x00000100
+#define CERT_CHAIN_TIMESTAMP_TIME                      0x00000200
+
+typedef struct _CERT_CHAIN_PARA {
+    DWORD            cbSize;
+    CERT_USAGE_MATCH RequestedUsage;
+#ifdef CERT_CHAIN_PARA_HAS_EXTRA_FIELDS
+    CERT_USAGE_MATCH RequestedIssuancePolicy;
+    DWORD            dwUrlRetrievalTimeout;
+    BOOL             fCheckRevocationFreshnessTime;
+    DWORD            dwRevocationFreshnessTime;
+#endif
+} CERT_CHAIN_PARA, *PCERT_CHAIN_PARA;
+
+typedef struct _CERT_SYSTEM_STORE_INFO {
+    DWORD cbSize;
+} CERT_SYSTEM_STORE_INFO, *PCERT_SYSTEM_STORE_INFO;
+
+typedef struct _CERT_PHYSICAL_STORE_INFO {
+    DWORD           cbSize;
+    LPSTR           pszOpenStoreProvider;
+    DWORD           dwOpenEncodingType;
+    DWORD           dwOpenFlags;
+    CRYPT_DATA_BLOB OpenParameters;
+    DWORD           dwFlags;
+    DWORD           dwPriority;
+} CERT_PHYSICAL_STORE_INFO, *PCERT_PHYSICAL_STORE_INFO;
+
+typedef struct _CERT_SYSTEM_STORE_RELOCATE_PARA {
+    union {
+        HKEY  hKeyBase;
+        VOID *pvBase;
+    } DUMMYUNIONNAME;
+    union {
+        void   *pvSystemStore;
+        LPCSTR  pszSystemStore;
+        LPCWSTR pwszSystemStore;
+    } DUMMYUNIONNAME2;
+} CERT_SYSTEM_STORE_RELOCATE_PARA, *PCERT_SYSTEM_STORE_RELOCATE_PARA;
+
+typedef BOOL (WINAPI *PFN_CERT_ENUM_SYSTEM_STORE_LOCATION)(
+ LPCWSTR pwszStoreLocation, DWORD dwFlags, void *pvReserved, void *pvArg);
+
+typedef BOOL (WINAPI *PFN_CERT_ENUM_SYSTEM_STORE)(const void *pvSystemStore,
+ DWORD dwFlags, PCERT_SYSTEM_STORE_INFO pStoreInfo, void *pvReserved,
+ void *pvArg);
+
+typedef BOOL (WINAPI *PFN_CERT_ENUM_PHYSICAL_STORE)(const void *pvSystemStore,
+ DWORD dwFlags, LPCWSTR pwszStoreName, PCERT_PHYSICAL_STORE_INFO pStoreInfo,
+ void *pvReserved, void *pvArg);
+
+/* Encode/decode object */
+typedef LPVOID (__WINE_ALLOC_SIZE(1) WINAPI *PFN_CRYPT_ALLOC)(size_t cbsize);
+typedef VOID   (WINAPI *PFN_CRYPT_FREE)(LPVOID pv);
+
+typedef struct _CRYPT_ENCODE_PARA {
+    DWORD           cbSize;
+    PFN_CRYPT_ALLOC pfnAlloc;
+    PFN_CRYPT_FREE  pfnFree;
+} CRYPT_ENCODE_PARA, *PCRYPT_ENCODE_PARA;
+
+typedef struct _CRYPT_DECODE_PARA {
+    DWORD           cbSize;
+    PFN_CRYPT_ALLOC pfnAlloc;
+    PFN_CRYPT_FREE  pfnFree;
+} CRYPT_DECODE_PARA, *PCRYPT_DECODE_PARA;
+
+typedef struct _CERT_STORE_PROV_INFO {
+    DWORD             cbSize;
+    DWORD             cStoreProvFunc;
+    void            **rgpvStoreProvFunc;
+    HCERTSTOREPROV    hStoreProv;
+    DWORD             dwStoreProvFlags;
+    HCRYPTOIDFUNCADDR hStoreProvFuncAddr2;
+} CERT_STORE_PROV_INFO, *PCERT_STORE_PROV_INFO;
+
+typedef BOOL (WINAPI *PFN_CERT_DLL_OPEN_STORE_PROV_FUNC)(
+ LPCSTR lpszStoreProvider, DWORD dwEncodingType, HCRYPTPROV_LEGACY hCryptProv,
+ DWORD dwFlags, const void *pvPara, HCERTSTORE hCertStore,
+ PCERT_STORE_PROV_INFO pStoreProvInfo);
+
+typedef void (WINAPI *PFN_CERT_STORE_PROV_CLOSE)(HCERTSTOREPROV hStoreProv,
+ DWORD dwFlags);
+
+typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_READ_CERT)(HCERTSTOREPROV hStoreProv,
+ PCCERT_CONTEXT pStoreCertContext, DWORD dwFlags,
+ PCCERT_CONTEXT *ppProvCertContext);
+
+typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_WRITE_CERT)(HCERTSTOREPROV hStoreProv,
+ PCCERT_CONTEXT pCertContext, DWORD dwFlags);
+
+typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_DELETE_CERT)(
+ HCERTSTOREPROV hStoreProv, PCCERT_CONTEXT pCertContext, DWORD dwFlags);
+
+typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_SET_CERT_PROPERTY)(
+ HCERTSTOREPROV hStoreProv, PCCERT_CONTEXT pCertContext, DWORD dwPropId,
+ DWORD dwFlags, const void *pvData);
+
+typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_READ_CRL)(HCERTSTOREPROV hStoreProv,
+ PCCRL_CONTEXT pStoreCrlContext, DWORD dwFlags,
+ PCCRL_CONTEXT *ppProvCrlContext);
+
+typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_WRITE_CRL)(HCERTSTOREPROV hStoreProv,
+ PCCRL_CONTEXT pCrlContext, DWORD dwFlags);
+
+typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_DELETE_CRL)(HCERTSTOREPROV hStoreProv,
+ PCCRL_CONTEXT pCrlContext, DWORD dwFlags);
+
+typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_SET_CRL_PROPERTY)(
+ HCERTSTOREPROV hStoreProv, PCCRL_CONTEXT pCrlContext, DWORD dwPropId,
+ DWORD dwFlags, const void *pvData);
+
+typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_READ_CTL)(HCERTSTOREPROV hStoreProv,
+ PCCTL_CONTEXT pStoreCtlContext, DWORD dwFlags,
+ PCCTL_CONTEXT *ppProvCtlContext);
+
+typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_WRITE_CTL)(HCERTSTOREPROV hStoreProv,
+ PCCTL_CONTEXT pCtlContext, DWORD dwFlags);
+
+typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_DELETE_CTL)(
+ HCERTSTOREPROV hStoreProv, PCCTL_CONTEXT pCtlContext, DWORD dwFlags);
+
+typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_SET_CTL_PROPERTY)(
+ HCERTSTOREPROV hStoreProv, PCCTL_CONTEXT pCtlContext, DWORD dwPropId,
+ DWORD dwFlags, const void *pvData);
+
+typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_CONTROL)(HCERTSTOREPROV hStoreProv,
+ DWORD dwFlags, DWORD dwCtrlType, void const *pvCtrlPara);
+
+typedef struct _CERT_STORE_PROV_FIND_INFO {
+    DWORD       cbSize;
+    DWORD       dwMsgAndCertEncodingType;
+    DWORD       dwFindFlags;
+    DWORD       dwFindType;
+    const void *pvFindPara;
+} CERT_STORE_PROV_FIND_INFO, *PCERT_STORE_PROV_FIND_INFO;
+typedef const CERT_STORE_PROV_FIND_INFO CCERT_STORE_PROV_FIND_INFO,
+ *PCCERT_STORE_PROV_FIND_INFO;
+
+typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_FIND_CERT)(HCERTSTOREPROV hStoreProv,
+ PCCERT_STORE_PROV_FIND_INFO pFindInfo, PCCERT_CONTEXT pPrevCertContext,
+ DWORD dwFlags, void **ppvStoreProvFindInfo, PCCERT_CONTEXT *ppProvCertContext);
+
+typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_FREE_FIND_CERT)(
+ HCERTSTOREPROV hStoreProv, PCCERT_CONTEXT pCertContext,
+ void *pvStoreProvFindInfo, DWORD dwFlags);
+
+typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_GET_CERT_PROPERTY)(
+ HCERTSTOREPROV hStoreProv, PCCERT_CONTEXT pCertContext, DWORD dwPropId,
+ DWORD dwFlags, void *pvData, DWORD *pcbData);
+
+typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_FIND_CRL)(HCERTSTOREPROV hStoreProv,
+ PCCERT_STORE_PROV_FIND_INFO pFindInfo, PCCRL_CONTEXT pPrevCrlContext,
+ DWORD dwFlags, void **ppvStoreProvFindInfo, PCCRL_CONTEXT *ppProvCrlContext);
+
+typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_FREE_FIND_CRL)(
+ HCERTSTOREPROV hStoreProv, PCCRL_CONTEXT pCrlContext,
+ void *pvStoreProvFindInfo, DWORD dwFlags);
+
+typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_GET_CRL_PROPERTY)(
+ HCERTSTOREPROV hStoreProv, PCCRL_CONTEXT pCrlContext, DWORD dwPropId,
+ DWORD dwFlags, void *pvData, DWORD *pcbData);
+
+typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_FIND_CTL)(HCERTSTOREPROV hStoreProv,
+ PCCTL_CONTEXT pCtlContext, void *pvStoreProvFindInfo, DWORD dwFlags);
+
+typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_GET_CTL_PROPERTY)(
+ HCERTSTOREPROV hStoreProv, PCCTL_CONTEXT pCtlContext, DWORD dwPropId,
+ DWORD dwFlags, void *pvData);
+
+typedef struct _CERT_CREATE_CONTEXT_PARA {
+    DWORD          cbSize;
+    PFN_CRYPT_FREE pfnFree;
+    void          *pvFree;
+} CERT_CREATE_CONTEXT_PARA, *PCERT_CREATE_CONTEXT_PARA;
+
+typedef struct _CRYPT_OID_FUNC_ENTRY {
+    LPCSTR pszOID;
+    void  *pvFuncAddr;
+} CRYPT_OID_FUNC_ENTRY, *PCRYPT_OID_FUNC_ENTRY;
+
+typedef BOOL (WINAPI *PFN_CRYPT_ENUM_OID_FUNC)(DWORD dwEncodingType,
+ LPCSTR pszFuncName, LPCSTR pszOID, DWORD cValue, const DWORD rgdwValueType[],
+ LPCWSTR const rgpwszValueName[], const BYTE * const rgpbValueData[],
+ const DWORD rgcbValueData[], void *pvArg);
+
+#define CRYPT_MATCH_ANY_ENCODING_TYPE 0xffffffff
+
+typedef struct _CRYPT_OID_INFO {
+    DWORD   cbSize;
+    LPCSTR  pszOID;
+    LPCWSTR pwszName;
+    DWORD   dwGroupId;
+    union {
+        DWORD  dwValue;
+        ALG_ID Algid;
+        DWORD  dwLength;
+    } DUMMYUNIONNAME;
+    CRYPT_DATA_BLOB ExtraInfo;
+} CRYPT_OID_INFO, *PCRYPT_OID_INFO;
+typedef const CRYPT_OID_INFO CCRYPT_OID_INFO, *PCCRYPT_OID_INFO;
+
+typedef BOOL (WINAPI *PFN_CRYPT_ENUM_OID_INFO)(PCCRYPT_OID_INFO pInfo,
+ void *pvArg);
+
+typedef struct _CRYPT_SIGN_MESSAGE_PARA {
+    DWORD                      cbSize;
+    DWORD                      dwMsgEncodingType;
+    PCCERT_CONTEXT             pSigningCert;
+    CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
+    void *                     pvHashAuxInfo;
+    DWORD                      cMsgCert;
+    PCCERT_CONTEXT            *rgpMsgCert;
+    DWORD                      cMsgCrl;
+    PCCRL_CONTEXT             *rgpMsgCrl;
+    DWORD                      cAuthAttr;
+    PCRYPT_ATTRIBUTE           rgAuthAttr;
+    DWORD                      cUnauthAttr;
+    PCRYPT_ATTRIBUTE           rgUnauthAttr;
+    DWORD                      dwFlags;
+    DWORD                      dwInnerContentType;
+#ifdef CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS
+    CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
+    void *                     pvHashEncryptionAuxInfo;
+#endif
+} CRYPT_SIGN_MESSAGE_PARA, *PCRYPT_SIGN_MESSAGE_PARA;
+
+#define CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG         0x00000001
+#define CRYPT_MESSAGE_ENCAPSULATED_CONTENT_OUT_FLAG 0x00000002
+#define CRYPT_MESSAGE_KEYID_SIGNER_FLAG             0x00000004
+#define CRYPT_MESSAGE_SILENT_KEYSET_FLAG            0x00000008
+
+typedef PCCERT_CONTEXT (WINAPI *PFN_CRYPT_GET_SIGNER_CERTIFICATE)(void *pvArg,
+ DWORD dwCertEncodingType, PCERT_INFO pSignerId, HCERTSTORE hMsgCertStore);
+
+typedef struct _CRYPT_VERIFY_MESSAGE_PARA {
+    DWORD                            cbSize;
+    DWORD                            dwMsgAndCertEncodingType;
+    HCRYPTPROV_LEGACY                hCryptProv;
+    PFN_CRYPT_GET_SIGNER_CERTIFICATE pfnGetSignerCertificate;
+    void *                           pvGetArg;
+} CRYPT_VERIFY_MESSAGE_PARA, *PCRYPT_VERIFY_MESSAGE_PARA;
+
+typedef struct _CRYPT_ENCRYPT_MESSAGE_PARA {
+    DWORD                      cbSize;
+    DWORD                      dwMsgEncodingType;
+    HCRYPTPROV_LEGACY          hCryptProv;
+    CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm;
+    void *                     pvEncryptionAuxInfo;
+    DWORD                      dwFlags;
+    DWORD                      dwInnerContentType;
+} CRYPT_ENCRYPT_MESSAGE_PARA, *PCRYPT_ENCRYPT_MESSAGE_PARA;
+
+#define CRYPT_MESSAGE_KEYID_RECIPIENT_FLAG 0x00000004
+
+typedef struct _CRYPT_DECRYPT_MESSAGE_PARA {
+    DWORD       cbSize;
+    DWORD       dwMsgAndCertEncodingType;
+    DWORD       cCertStore;
+    HCERTSTORE *rghCertStore;
+#ifdef CRYPT_DECRYPT_MESSAGE_PARA_HAS_EXTRA_FIELDS
+    DWORD       dwFlags;
+#endif
+} CRYPT_DECRYPT_MESSAGE_PARA, *PCRYPT_DECRYPT_MESSAGE_PARA;
+
+typedef struct _CRYPT_HASH_MESSAGE_PARA {
+    DWORD                      cbSize;
+    DWORD                      dwMsgEncodingType;
+    HCRYPTPROV_LEGACY          hCryptProv;
+    CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
+    void *                     pvHashAuxInfo;
+} CRYPT_HASH_MESSAGE_PARA, *PCRYPT_HASH_MESSAGE_PARA;
+
+typedef struct _CRYPT_KEY_SIGN_MESSAGE_PARA {
+    DWORD                      cbSize;
+    DWORD                      dwMsgAndCertEncodingType;
+    HCRYPTPROV                 hCryptProv;
+    DWORD                      dwKeySpec;
+    CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
+    void *                     pvHashAuxInfo;
+} CRYPT_KEY_SIGN_MESSAGE_PARA, *PCRYPT_KEY_SIGN_MESSAGE_PARA;
+
+typedef struct _CRYPT_KEY_VERIFY_MESSAGE_PARA {
+    DWORD      cbSize;
+    DWORD      dwMsgEncodingType;
+    HCRYPTPROV_LEGACY hCryptProv;
+} CRYPT_KEY_VERIFY_MESSAGE_PARA, *PCRYPT_KEY_VERIFY_MESSAGE_PARA;
+
+typedef struct _CRYPT_URL_ARRAY {
+    DWORD   cUrl;
+    LPWSTR *rgwszUrl;
+} CRYPT_URL_ARRAY, *PCRYPT_URL_ARRAY;
+
+typedef struct _CRYPT_URL_INFO {
+    DWORD  cbSize;
+    DWORD  dwSyncDeltaTime;
+    DWORD  cGroup;
+    DWORD *rgcGroupEntry;
+} CRYPT_URL_INFO, *PCRYPT_URL_INFO;
+
+#define URL_OID_CERTIFICATE_ISSUER         ((LPCSTR)1)
+#define URL_OID_CERTIFICATE_CRL_DIST_POINT ((LPCSTR)2)
+#define URL_OID_CTL_ISSUER                 ((LPCSTR)3)
+#define URL_OID_CTL_NEXT_UPDATE            ((LPCSTR)4)
+#define URL_OID_CRL_ISSUER                 ((LPCSTR)5)
+#define URL_OID_CERTIFICATE_FRESHEST_CRL   ((LPCSTR)6)
+#define URL_OID_CRL_FRESHEST_CRL           ((LPCSTR)7)
+#define URL_OID_CROSS_CERT_DIST_POINT      ((LPCSTR)8)
+
+#define URL_OID_GET_OBJECT_URL_FUNC "UrlDllGetObjectUrl"
+
+typedef HANDLE HCRYPTASYNC, *PHCRYPTASYNC;
+
+typedef void (WINAPI *PFN_CRYPT_ASYNC_PARAM_FREE_FUNC)(LPSTR pszParamOid,
+ LPVOID pvParam);
+
+#define CRYPT_PARAM_ASYNC_RETRIEVAL_COMPLETION ((LPCSTR)1)
+#define CRYPT_PARAM_CANCEL_ASYNC_RETRIEVAL     ((LPCSTR)2)
+
+typedef void (WINAPI *PFN_CRYPT_ASYNC_RETRIEVAL_COMPLETION_FUNC)(
+ void *pvCompletion, DWORD dwCompletionCode, LPCSTR pszURL, LPSTR pszObjectOid,
+ void *pvObject);
+
+typedef struct _CRYPT_ASYNC_RETRIEVAL_COMPLETION
+{
+    PFN_CRYPT_ASYNC_RETRIEVAL_COMPLETION_FUNC pfnCompletion;
+    void                                     *pvCompletion;
+} CRYPT_ASYNC_RETRIEVAL_COMPLETION, *PCRYPT_ASYNC_RETRIEVAL_COMPLETION;
+
+typedef BOOL (WINAPI *PFN_CANCEL_ASYNC_RETRIEVAL_FUNC)(
+ HCRYPTASYNC hAsyncRetrieve);
+
+typedef struct _CRYPT_BLOB_ARRAY
+{
+    DWORD            cBlob;
+    PCRYPT_DATA_BLOB rgBlob;
+} CRYPT_BLOB_ARRAY, *PCRYPT_BLOB_ARRAY;
+
+typedef struct _CRYPT_CREDENTIALS {
+    DWORD  cbSize;
+    LPCSTR pszCredentialsOid;
+    LPVOID pvCredentials;
+} CRYPT_CREDENTIALS, *PCRYPT_CREDENTIALS;
+
+#define CREDENTIAL_OID_PASSWORD_CREDENTIALS_A ((LPCSTR)1)
+#define CREDENTIAL_OID_PASSWORD_CREDENTIALS_W ((LPCSTR)2)
+#define CREDENTIAL_OID_PASSWORD_CREDENTIALS \
+ WINELIB_NAME_AW(CREDENTIAL_OID_PASSWORD_CREDENTIALS_)
+
+typedef struct _CRYPT_PASSWORD_CREDENTIALSA {
+    DWORD cbSize;
+    LPSTR pszUsername;
+    LPSTR pszPassword;
+} CRYPT_PASSWORD_CREDENTIALSA, *PCRYPT_PASSWORD_CREDENTIALSA;
+
+typedef struct _CRYPT_PASSWORD_CREDENTIALSW {
+    DWORD  cbSize;
+    LPWSTR pszUsername;
+    LPWSTR pszPassword;
+} CRYPT_PASSWORD_CREDENTIALSW, *PCRYPT_PASSWORD_CREDENTIALSW;
+#define CRYPT_PASSWORD_CREDENTIALS WINELIB_NAME_AW(CRYPT_PASSWORD_CREDENTIALS)
+#define PCRYPT_PASSWORD_CREDENTIALS WINELIB_NAME_AW(PCRYPT_PASSWORD_CREDENTIALS)
+
+typedef struct _CRYPT_RETRIEVE_AUX_INFO {
+    DWORD     cbSize;
+    FILETIME *pLastSyncTime;
+    DWORD     dwMaxUrlRetrievalByteCount;
+} CRYPT_RETRIEVE_AUX_INFO, *PCRYPT_RETRIEVE_AUX_INFO;
+
+typedef void (WINAPI *PFN_FREE_ENCODED_OBJECT_FUNC)(LPCSTR pszObjectOid,
+ PCRYPT_BLOB_ARRAY pObject, void *pvFreeContext);
+
+#define SCHEME_OID_RETRIEVE_ENCODED_OBJECT_FUNC \
+ "SchemeDllRetrieveEncodedObject"
+#define SCHEME_OID_RETRIEVE_ENCODED_OBJECTW_FUNC \
+ "SchemeDllRetrieveEncodedObjectW"
+/* The signature of SchemeDllRetrieveEncodedObjectW is:
+BOOL WINAPI SchemeDllRetrieveEncodedObjectW(LPCWSTR pwszUrl,
+ LPCSTR pszObjectOid, DWORD dwRetrievalFlags, DWORD dwTimeout,
+ PCRYPT_BLOB_ARRAY pObject, PFN_FREE_ENCODED_OBJECT_FUNC *ppfnFreeObject,
+ void **ppvFreeContext, HCRYPTASYNC hAsyncRetrieve,
+ PCRYPT_CREDENTIALS pCredentials, PCRYPT_RETRIEVE_AUX_INFO pAuxInfo);
+ */
+
+#define CONTEXT_OID_CREATE_OBJECT_CONTEXT_FUNC "ContextDllCreateObjectContext"
+/* The signature of ContextDllCreateObjectContext is:
+BOOL WINAPI ContextDllCreateObjectContext(LPCSTR pszObjectOid,
+ DWORD dwRetrievalFlags, PCRYPT_BLOB_ARRAY pObject, void **ppvContxt);
+ */
+
+#define CONTEXT_OID_CERTIFICATE ((LPCSTR)1)
+#define CONTEXT_OID_CRL         ((LPCSTR)2)
+#define CONTEXT_OID_CTL         ((LPCSTR)3)
+#define CONTEXT_OID_PKCS7       ((LPCSTR)4)
+#define CONTEXT_OID_CAPI2_ANY   ((LPCSTR)5)
+
+#define CRYPT_RETRIEVE_MULTIPLE_OBJECTS      0x00000001
+#define CRYPT_CACHE_ONLY_RETRIEVAL           0x00000002
+#define CRYPT_WIRE_ONLY_RETRIEVAL            0x00000004
+#define CRYPT_DONT_CACHE_RESULT              0x00000008
+#define CRYPT_ASYNC_RETRIEVAL                0x00000010
+#define CRYPT_STICKY_CACHE_RETRIEVAL         0x00001000
+#define CRYPT_LDAP_SCOPE_BASE_ONLY_RETRIEVAL 0x00002000
+#define CRYPT_OFFLINE_CHECK_RETRIEVAL        0x00004000
+#define CRYPT_LDAP_INSERT_ENTRY_ATTRIBUTE    0x00008000
+#define CRYPT_LDAP_SIGN_RETRIEVAL            0x00010000
+#define CRYPT_NO_AUTH_RETRIEVAL              0x00020000
+#define CRYPT_LDAP_AREC_EXCLUSIVE_RETRIEVAL  0x00040000
+#define CRYPT_AIA_RETRIEVAL                  0x00080000
+
+#define CRYPT_VERIFY_CONTEXT_SIGNATURE      0x00000020
+#define CRYPT_VERIFY_DATA_HASH              0x00000040
+#define CRYPT_KEEP_TIME_VALID               0x00000080
+#define CRYPT_DONT_VERIFY_SIGNATURE         0x00000100
+#define CRYPT_DONT_CHECK_TIME_VALIDITY      0x00000200
+#define CRYPT_CHECK_FRESHNESS_TIME_VALIDITY 0x00000400
+#define CRYPT_ACCUMULATIVE_TIMEOUT          0x00000800
+
+typedef BOOL (WINAPI *PFN_CRYPT_CANCEL_RETRIEVAL)(DWORD dwFlags, void *pvArg);
+
+typedef struct _CERT_CRL_CONTEXT_PAIR
+{
+    PCCERT_CONTEXT pCertContext;
+    PCCRL_CONTEXT  pCrlContext;
+} CERT_CRL_CONTEXT_PAIR, *PCERT_CRL_CONTEXT_PAIR;
+typedef const CERT_CRL_CONTEXT_PAIR *PCCERT_CRL_CONTEXT_PAIR;
+
+#define TIME_VALID_OID_GET_OBJECT_FUNC   "TimeValidDllGetObject"
+
+#define TIME_VALID_OID_GET_CTL                    ((LPCSTR)1)
+#define TIME_VALID_OID_GET_CRL                    ((LPCSTR)2)
+#define TIME_VALID_OID_GET_CRL_FROM_CERT          ((LPCSTR)3)
+#define TIME_VALID_OID_GET_FRESHEST_CRL_FROM_CERT ((LPCSTR)4)
+#define TIME_VALID_OID_GET_FRESHEST_CRL_FROM_CRL  ((LPCSTR)5)
+
+#define TIME_VALID_OID_FLUSH_OBJECT_FUNC "TimeValidDllFlushObject"
+
+#define TIME_VALID_OID_FLUSH_CTL                    ((LPCSTR)1)
+#define TIME_VALID_OID_FLUSH_CRL                    ((LPCSTR)2)
+#define TIME_VALID_OID_FLUSH_CRL_FROM_CERT          ((LPCSTR)3)
+#define TIME_VALID_OID_FLUSH_FRESHEST_CRL_FROM_CERT ((LPCSTR)4)
+#define TIME_VALID_OID_FLUSH_FRESHEST_CRL_FROM_CRL  ((LPCSTR)5)
+
+/* OID group IDs */
+#define CRYPT_HASH_ALG_OID_GROUP_ID     1
+#define CRYPT_ENCRYPT_ALG_OID_GROUP_ID  2
+#define CRYPT_PUBKEY_ALG_OID_GROUP_ID   3
+#define CRYPT_SIGN_ALG_OID_GROUP_ID     4
+#define CRYPT_RDN_ATTR_OID_GROUP_ID     5
+#define CRYPT_EXT_OR_ATTR_OID_GROUP_ID  6
+#define CRYPT_ENHKEY_USAGE_OID_GROUP_ID 7
+#define CRYPT_POLICY_OID_GROUP_ID       8
+#define CRYPT_TEMPLATE_OID_GROUP_ID     9
+#define CRYPT_LAST_OID_GROUP_ID         9
+
+#define CRYPT_FIRST_ALG_OID_GROUP_ID CRYPT_HASH_ALG_OID_GROUP_ID
+#define CRYPT_LAST_ALG_OID_GROUP_ID  CRYPT_SIGN_ALG_OID_GROUP_ID
+
+#define CRYPT_OID_INHIBIT_SIGNATURE_FORMAT_FLAG  0x1
+#define CRYPT_OID_USE_PUBKEY_PARA_FOR_PKCS7_FLAG 0x2
+#define CRYPT_OID_NO_NULL_ALGORITHM_PARA_FLAG    0x4
+
+#define CRYPT_OID_INFO_OID_KEY   1
+#define CRYPT_OID_INFO_NAME_KEY  2
+#define CRYPT_OID_INFO_ALGID_KEY 3
+#define CRYPT_OID_INFO_SIGN_KEY  4
+
+/* Algorithm IDs */
+
+#define GET_ALG_CLASS(x)                (x & (7 << 13))
+#define GET_ALG_TYPE(x)                 (x & (15 << 9))
+#define GET_ALG_SID(x)                  (x & (511))
+
+/* Algorithm Classes */
+#define ALG_CLASS_ANY                   (0)
+#define ALG_CLASS_SIGNATURE             (1 << 13)
+#define ALG_CLASS_MSG_ENCRYPT           (2 << 13)
+#define ALG_CLASS_DATA_ENCRYPT          (3 << 13)
+#define ALG_CLASS_HASH                  (4 << 13)
+#define ALG_CLASS_KEY_EXCHANGE          (5 << 13)
+#define ALG_CLASS_ALL                   (7 << 13)
+/* Algorithm types */
+#define ALG_TYPE_ANY                    (0)
+#define ALG_TYPE_DSS                    (1 << 9)
+#define ALG_TYPE_RSA                    (2 << 9)
+#define ALG_TYPE_BLOCK                  (3 << 9)
+#define ALG_TYPE_STREAM                 (4 << 9)
+#define ALG_TYPE_DH                     (5 << 9)
+#define ALG_TYPE_SECURECHANNEL          (6 << 9)
+
+/* SIDs */
+#define ALG_SID_ANY                     (0)
+/* RSA SIDs */
+#define ALG_SID_RSA_ANY                 0
+#define ALG_SID_RSA_PKCS                1
+#define ALG_SID_RSA_MSATWORK            2
+#define ALG_SID_RSA_ENTRUST             3
+#define ALG_SID_RSA_PGP                 4
+/* DSS SIDs */
+#define ALG_SID_DSS_ANY                 0
+#define ALG_SID_DSS_PKCS                1
+#define ALG_SID_DSS_DMS                 2
+
+/* DES SIDs */
+#define ALG_SID_DES                     1
+#define ALG_SID_3DES                    3
+#define ALG_SID_DESX                    4
+#define ALG_SID_IDEA                    5
+#define ALG_SID_CAST                    6
+#define ALG_SID_SAFERSK64               7
+#define ALG_SID_SAFERSK128              8
+#define ALG_SID_3DES_112                9
+#define ALG_SID_CYLINK_MEK             12
+#define ALG_SID_RC5                    13
+#define ALG_SID_AES_128                14
+#define ALG_SID_AES_192                15
+#define ALG_SID_AES_256                16
+#define ALG_SID_AES                    17
+/* Diffie-Hellmans SIDs */
+#define ALG_SID_DH_SANDF                1
+#define ALG_SID_DH_EPHEM                2
+#define ALG_SID_AGREED_KEY_ANY          3
+#define ALG_SID_KEA                     4
+/* RC2 SIDs */
+#define ALG_SID_RC4                     1
+#define ALG_SID_RC2                     2
+#define ALG_SID_SEAL                    2
+/* Hash SIDs */
+#define ALG_SID_MD2                     1
+#define ALG_SID_MD4                     2
+#define ALG_SID_MD5                     3
+#define ALG_SID_SHA                     4
+#define ALG_SID_SHA1                    ALG_SID_SHA
+#define ALG_SID_MAC                     5
+#define ALG_SID_RIPEMD                  6
+#define ALG_SID_RIPEMD160               7
+#define ALG_SID_SSL3SHAMD5              8
+#define ALG_SID_HMAC                    9
+#define ALG_SID_TLS1PRF                10
+#define ALG_SID_HASH_REPLACE_OWF       11
+#define ALG_SID_SHA_256                12
+#define ALG_SID_SHA_384                13
+#define ALG_SID_SHA_512                14
+/* SCHANNEL SIDs */
+#define ALG_SID_SSL3_MASTER             1
+#define ALG_SID_SCHANNEL_MASTER_HASH    2
+#define ALG_SID_SCHANNEL_MAC_KEY        3
+#define ALG_SID_PCT1_MASTER             4
+#define ALG_SID_SSL2_MASTER             5
+#define ALG_SID_TLS1_MASTER             6
+#define ALG_SID_SCHANNEL_ENC_KEY        7
+#define ALG_SID_EXAMPLE                80
+
+/* Algorithm Definitions */
+#define CALG_MD2                  (ALG_CLASS_HASH         | ALG_TYPE_ANY           | ALG_SID_MD2)
+#define CALG_MD4                  (ALG_CLASS_HASH         | ALG_TYPE_ANY           | ALG_SID_MD4)
+#define CALG_MD5                  (ALG_CLASS_HASH         | ALG_TYPE_ANY           | ALG_SID_MD5)
+#define CALG_SHA                  (ALG_CLASS_HASH         | ALG_TYPE_ANY           | ALG_SID_SHA)
+#define CALG_SHA1 CALG_SHA
+#define CALG_MAC                  (ALG_CLASS_HASH         | ALG_TYPE_ANY           | ALG_SID_MAC)
+#define CALG_SSL3_SHAMD5          (ALG_CLASS_HASH         | ALG_TYPE_ANY           | ALG_SID_SSL3SHAMD5)
+#define CALG_HMAC                 (ALG_CLASS_HASH         | ALG_TYPE_ANY           | ALG_SID_HMAC)
+#define CALG_TLS1PRF              (ALG_CLASS_HASH         | ALG_TYPE_ANY           | ALG_SID_TLS1PRF)
+#define CALG_HASH_REPLACE_OWF     (ALG_CLASS_HASH         | ALG_TYPE_ANY           | ALG_SID_HASH_REPLACE_OWF)
+#define CALG_SHA_256              (ALG_CLASS_HASH         | ALG_TYPE_ANY           | ALG_SID_SHA_256)
+#define CALG_SHA_384              (ALG_CLASS_HASH         | ALG_TYPE_ANY           | ALG_SID_SHA_384)
+#define CALG_SHA_512              (ALG_CLASS_HASH         | ALG_TYPE_ANY           | ALG_SID_SHA_512)
+#define CALG_RSA_SIGN             (ALG_CLASS_SIGNATURE    | ALG_TYPE_RSA           | ALG_SID_RSA_ANY)
+#define CALG_DSS_SIGN             (ALG_CLASS_SIGNATURE    | ALG_TYPE_DSS           | ALG_SID_DSS_ANY)
+#define CALG_NO_SIGN              (ALG_CLASS_SIGNATURE    | ALG_TYPE_ANY           | ALG_SID_ANY)
+#define CALG_DH_SF                (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH            | ALG_SID_DH_SANDF)
+#define CALG_DH_EPHEM             (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH            | ALG_SID_DH_EPHEM)
+#define CALG_RSA_KEYX             (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_RSA           | ALG_SID_RSA_ANY)
+#define CALG_DES                  (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK         | ALG_SID_DES)
+#define CALG_RC2                  (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK         | ALG_SID_RC2)
+#define CALG_3DES                 (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK         | ALG_SID_3DES)
+#define CALG_3DES_112             (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK         | ALG_SID_3DES_112)
+#define CALG_AES_128              (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK         | ALG_SID_AES_128)
+#define CALG_AES_192              (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK         | ALG_SID_AES_192)
+#define CALG_AES_256              (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK         | ALG_SID_AES_256)
+#define CALG_AES                  (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK         | ALG_SID_AES)
+#define CALG_RC4                  (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM        | ALG_SID_RC4)
+#define CALG_SEAL                 (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM        | ALG_SID_SEAL)
+#define CALG_RC5                  (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM        | ALG_SID_RC5)
+#define CALG_SSL3_MASTER          (ALG_CLASS_MSG_ENCRYPT  | ALG_TYPE_SECURECHANNEL | ALG_SID_SSL3_MASTER)
+#define CALG_SCHANNEL_MASTER_HASH (ALG_CLASS_MSG_ENCRYPT  | ALG_TYPE_SECURECHANNEL | ALG_SID_SCHANNEL_MASTER_HASH)
+#define CALG_SCHANNEL_MAC_KEY     (ALG_CLASS_MSG_ENCRYPT  | ALG_TYPE_SECURECHANNEL | ALG_SID_SCHANNEL_MAC_KEY)
+#define CALG_SCHANNEL_ENC_KEY     (ALG_CLASS_MSG_ENCRYPT  | ALG_TYPE_SECURECHANNEL | ALG_SID_SCHANNEL_ENC_KEY)
+#define CALG_PCT1_MASTER          (ALG_CLASS_MSG_ENCRYPT  | ALG_TYPE_SECURECHANNEL | ALG_SID_PCT1_MASTER)
+#define CALG_SSL2_MASTER          (ALG_CLASS_MSG_ENCRYPT  | ALG_TYPE_SECURECHANNEL | ALG_SID_SSL2_MASTER)
+#define CALG_TLS1_MASTER          (ALG_CLASS_MSG_ENCRYPT  | ALG_TYPE_SECURECHANNEL | ALG_SID_TLS1_MASTER)
+
+
+/* Protocol Flags */
+#define CRYPT_FLAG_PCT1    0x0001
+#define CRYPT_FLAG_SSL2    0x0002
+#define CRYPT_FLAG_SSL3    0x0004
+#define CRYPT_FLAG_TLS1    0x0008
+#define CRYPT_FLAG_IPSEC   0x0010
+#define CRYPT_FLAG_SIGNING 0x0020
+
+/* Provider names */
+#define MS_DEF_PROV_A                            "Microsoft Base Cryptographic Provider v1.0"
+#if defined(__GNUC__)
+# define MS_DEF_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
+	'B','a','s','e',' ','C','r','y','p','t','o','g','r','a','p','h','i','c',' ', \
+	'P','r','o','v','i','d','e','r',' ','v','1','.','0',0 }
+#elif defined(_MSC_VER)
+# define MS_DEF_PROV_W      L"Microsoft Base Cryptographic Provider v1.0"
+#else
+static const WCHAR MS_DEF_PROV_W[] =             { 'M','i','c','r','o','s','o','f','t',' ',
+	'B','a','s','e',' ','C','r','y','p','t','o','g','r','a','p','h','i','c',' ',
+	'P','r','o','v','i','d','e','r',' ','v','1','.','0',0 };
+#endif
+#define MS_DEF_PROV                              WINELIB_NAME_AW(MS_DEF_PROV_)
+
+#define MS_ENHANCED_PROV_A                       "Microsoft Enhanced Cryptographic Provider v1.0"
+#if defined(__GNUC__)
+# define MS_ENHANCED_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
+	'E','n','h','a','n','c','e','d',' ','C','r','y','p','t','o','g','r','a','p','h','i','c',' ', \
+	'P','r','o','v','i','d','e','r',' ','v','1','.','0',0 }
+#elif defined(_MSC_VER)
+# define MS_ENHANCED_PROV_W     L"Microsoft Enhanced Cryptographic Provider v1.0"
+#else
+static const WCHAR MS_ENHANCED_PROV_W[] =        { 'M','i','c','r','o','s','o','f','t',' ',
+	'E','n','h','a','n','c','e','d',' ','C','r','y','p','t','o','g','r','a','p','h','i','c',' ',
+	'P','r','o','v','i','d','e','r',' ','v','1','.','0',0 };
+#endif
+#define MS_ENHANCED_PROV                         WINELIB_NAME_AW(MS_ENHANCED_PROV_)
+
+#define MS_STRONG_PROV_A                         "Microsoft Strong Cryptographic Provider"
+#if defined(__GNUC__)
+# define MS_STRONG_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
+	'S','t','r','o','n','g',' ','C','r','y','p','t','o','g','r','a','p','h','i','c',' ', \
+	'P','r','o','v','i','d','e','r',0 }
+#elif defined(_MSC_VER)
+# define MS_STRONG_PROV_W     L"Microsoft Strong Cryptographic Provider"
+#else
+static const WCHAR MS_STRONG_PROV_W[] =          { 'M','i','c','r','o','s','o','f','t',' ',
+	'S','t','r','o','n','g',' ','C','r','y','p','t','o','g','r','a','p','h','i','c',' ',
+	'P','r','o','v','i','d','e','r',0 };
+#endif
+#define MS_STRONG_PROV                           WINELIB_NAME_AW(MS_STRONG_PROV_)
+
+#define MS_DEF_RSA_SIG_PROV_A                    "Microsoft RSA Signature Cryptographic Provider"
+#if defined(__GNUC__)
+# define MS_DEF_RSA_SIG_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
+	'R','S','A',' ','S','i','g','n','a','t','u','r','e',' ', \
+	'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
+#elif defined(_MSC_VER)
+# define MS_DEF_RSA_SIG_PROV_W      L"Microsoft RSA Signature Cryptographic Provider"
+#else
+static const WCHAR MS_DEF_RSA_SIG_PROV_W[] =     { 'M','i','c','r','o','s','o','f','t',' ',
+	'R','S','A',' ','S','i','g','n','a','t','u','r','e',' ',
+	'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
+#endif
+#define MS_DEF_RSA_SIG_PROV                      WINELIB_NAME_AW(MS_DEF_RSA_SIG_PROV_)
+
+#define MS_DEF_RSA_SCHANNEL_PROV_A               "Microsoft RSA SChannel Cryptographic Provider"
+#if defined(__GNUC__)
+# define MS_DEF_RSA_SCHANNEL_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
+	'R','S','A',' ','S','C','h','a','n','n','e','l',' ', \
+	'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
+#elif defined(_MSC_VER)
+# define MS_DEF_RSA_SCHANNEL_PROV_W     L"Microsoft RSA SChannel Cryptographic Provider"
+#else
+static const WCHAR MS_DEF_RSA_SCHANNEL_PROV_W[] = { 'M','i','c','r','o','s','o','f','t',' ',
+	'R','S','A',' ','S','C','h','a','n','n','e','l',' ',
+	'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
+#endif
+#define MS_DEF_RSA_SCHANNEL_PROV                 WINELIB_NAME_AW(MS_DEF_RSA_SCHANNEL_PROV_)
+
+#define MS_DEF_DSS_PROV_A                        "Microsoft Base DSS Cryptographic Provider"
+#if defined(__GNUC__)
+# define MS_DEF_DSS_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
+	'B','a','s','e',' ','D','S','S',' ', \
+	'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
+#elif defined(_MSC_VER)
+# define MS_DEF_DSS_PROV_W     L"Microsoft Base DSS Cryptographic Provider"
+#else
+static const WCHAR MS_DEF_DSS_PROV_W[] =         { 'M','i','c','r','o','s','o','f','t',' ',
+	'B','a','s','e',' ','D','S','S',' ',
+	'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
+#endif
+#define MS_DEF_DSS_PROV                          WINELIB_NAME_AW(MS_DEF_DSS_PROV_)
+
+#define MS_DEF_DSS_DH_PROV_A                     "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider"
+#if defined(__GNUC__)
+# define MS_DEF_DSS_DH_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
+	'B','a','s','e',' ','D','S','S',' ','a','n','d',' ', \
+	'D','i','f','f','i','e','-','H','e','l','l','m','a','n',' ', \
+	'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
+#elif defined(_MSC_VER)
+# define MS_DEF_DSS_DH_PROV_W     L"Microsoft Base DSS and Diffie-Hellman Cryptographic Provider"
+#else
+static const WCHAR MS_DEF_DSS_DH_PROV_W[] =      { 'M','i','c','r','o','s','o','f','t',' ',
+	'B','a','s','e',' ','D','S','S',' ','a','n','d',' ',
+	'D','i','f','f','i','e','-','H','e','l','l','m','a','n',' ',
+	'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
+#endif
+#define MS_DEF_DSS_DH_PROV                       WINELIB_NAME_AW(MS_DEF_DSS_DH_PROV_)
+
+#define MS_ENH_DSS_DH_PROV_A                     "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider"
+#if defined(__GNUC__)
+# define MS_ENH_DSS_DH_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
+	'E','n','h','a','n','c','e','d',' ','D','S','S',' ','a','n','d',' ', \
+	'D','i','f','f','i','e','-','H','e','l','l','m','a','n',' ', \
+	'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
+#elif defined(_MSC_VER)
+# define MS_ENH_DSS_DH_PROV_W     L"Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider"
+#else
+static const WCHAR MS_ENH_DSS_DH_PROV_W[] =      { 'M','i','c','r','o','s','o','f','t',' ',
+	'E','n','h','a','n','c','e','d',' ','D','S','S',' ','a','n','d',' ',
+	'D','i','f','f','i','e','-','H','e','l','l','m','a','n',' ',
+	'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
+#endif
+#define MS_ENH_DSS_DH_PROV                       WINELIB_NAME_AW(MS_ENH_DSS_DH_PROV_)
+
+#define MS_DEF_DH_SCHANNEL_PROV_A                "Microsoft DH SChannel Cryptographic Provider"
+#if defined(__GNUC__)
+# define MS_DEF_DH_SCHANNEL_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
+	'D','H',' ','S','C','h','a','n','n','e','l',' ', \
+	'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
+#elif defined(_MSC_VER)
+# define MS_DEF_DH_SCHANNEL_PROV_W     L"Microsoft DH SChannel Cryptographic Provider"
+#else
+static const WCHAR MS_DEF_DH_SCHANNEL_PROV_W[] = { 'M','i','c','r','o','s','o','f','t',' ',
+	'D','H',' ','S','C','h','a','n','n','e','l',' ',
+	'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
+#endif
+#define MS_DEF_DH_SCHANNEL_PROV                  WINELIB_NAME_AW(MS_DEF_DH_SCHANNEL_PROV_)
+
+#define MS_SCARD_PROV_A                          "Microsoft Base Smart Card Cryptographic Provider"
+#if defined(__GNUC__)
+# define MS_SCARD_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
+	'B','a','s','e',' ','S','m','a','r','t',' ','C','a','r','d',' ', \
+	'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
+#elif defined(_MSC_VER)
+# define MS_SCARD_PROV_W     L"Microsoft Base Smart Card Cryptographic Provider"
+#else
+static const WCHAR MS_SCARD_PROV_W[] =           { 'M','i','c','r','o','s','o','f','t',' ',
+	'B','a','s','e',' ','S','m','a','r','t',' ','C','a','r','d',' ',
+	'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
+#endif
+#define MS_SCARD_PROV                            WINELIB_NAME_AW(MS_SCARD_PROV_)
+
+#define MS_ENH_RSA_AES_PROV_A                          "Microsoft Enhanced RSA and AES Cryptographic Provider"
+#if defined(__GNUC__)
+# define MS_ENH_RSA_AES_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
+	'E','n','h','a','n','c','e','d',' ','R','S','A',' ','a','n','d',' ','A','E','S',' ',\
+	'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
+#elif defined(_MSC_VER)
+# define MS_ENH_RSA_AES_PROV_W     L"Microsoft Enhanced RSA and AES Cryptographic Provider"
+#else
+static const WCHAR MS_ENH_RSA_AES_PROV_W[] =           { 'M','i','c','r','o','s','o','f','t',' ',
+	'E','n','h','a','n','c','e','d',' ','R','S','A',' ','a','n','d',' ','A','E','S',' ',
+	'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
+#endif
+#define MS_ENH_RSA_AES_PROV                            WINELIB_NAME_AW(MS_ENH_RSA_AES_PROV_)
+
+/* Key Specs*/
+#define AT_KEYEXCHANGE          1
+#define AT_SIGNATURE            2
+
+/* Provider Types */
+#define PROV_RSA_FULL             1
+#define PROV_RSA_SIG              2
+#define PROV_DSS                  3
+#define PROV_FORTEZZA             4
+#define PROV_MS_EXCHANGE          5
+#define PROV_SSL                  6
+#define PROV_RSA_SCHANNEL         12
+#define PROV_DSS_DH               13
+#define PROV_EC_ECDSA_SIG         14
+#define PROV_EC_ECNRA_SIG         15
+#define PROV_EC_ECDSA_FULL        16
+#define PROV_EC_ECNRA_FULL        17
+#define PROV_DH_SCHANNEL          18
+#define PROV_SPYRUS_LYNKS         20
+#define PROV_RNG                  21
+#define PROV_INTEL_SEC            22
+#define PROV_REPLACE_OWF          23
+#define PROV_RSA_AES              24
+
+/* FLAGS Section */
+
+#define CRYPT_FIRST             1
+#define CRYPT_NEXT              2
+
+#define CRYPT_IMPL_HARDWARE     1
+#define CRYPT_IMPL_SOFTWARE     2
+#define CRYPT_IMPL_MIXED        3
+#define CRYPT_IMPL_UNKNOWN      4
+
+/* CryptAcquireContext */
+#define CRYPT_VERIFYCONTEXT       0xF0000000
+#define CRYPT_NEWKEYSET           0x00000008
+#define CRYPT_DELETEKEYSET        0x00000010
+#define CRYPT_MACHINE_KEYSET      0x00000020
+#define CRYPT_SILENT              0x00000040
+
+/* Crypt{Get|Set}Provider */
+#define CRYPT_MACHINE_DEFAULT     0x00000001
+#define CRYPT_USER_DEFAULT        0x00000002
+#define CRYPT_DELETE_DEFAULT      0x00000004
+
+/* Crypt{Get/Set}ProvParam */
+#define PP_CLIENT_HWND          1
+#define PP_ENUMALGS             1
+#define PP_ENUMCONTAINERS       2
+#define PP_IMPTYPE              3
+#define PP_NAME                 4
+#define PP_VERSION              5
+#define PP_CONTAINER            6
+#define PP_CHANGE_PASSWORD      7
+#define PP_KEYSET_SEC_DESCR     8
+#define PP_KEY_TYPE_SUBTYPE     10
+#define PP_CONTEXT_INFO         11
+#define PP_KEYEXCHANGE_KEYSIZE  12
+#define PP_SIGNATURE_KEYSIZE    13
+#define PP_KEYEXCHANGE_ALG      14
+#define PP_SIGNATURE_ALG        15
+#define PP_PROVTYPE             16
+#define PP_KEYSTORAGE           17
+#define PP_SYM_KEYSIZE          19
+#define PP_SESSION_KEYSIZE      20
+#define PP_UI_PROMPT            21
+#define PP_ENUMALGS_EX          22
+#define PP_DELETEKEY            24
+#define PP_ENUMMANDROOTS        25
+#define PP_ENUMELECTROOTS       26
+#define PP_KEYSET_TYPE          27
+#define PP_ADMIN_PIN            31
+#define PP_KEYEXCHANGE_PIN      32
+#define PP_SIGNATURE_PIN        33
+#define PP_SIG_KEYSIZE_INC      34
+#define PP_KEYX_KEYSIZE_INC     35
+#define PP_UNIQUE_CONTAINER     36
+#define PP_SGC_INFO             37
+#define PP_USE_HARDWARE_RNG     38
+#define PP_KEYSPEC              39
+#define PP_ENUMEX_SIGNING_PROT  40
+#define PP_CRYPT_COUNT_KEY_USE  41
+#define PP_USER_CERTSTORE       42
+#define PP_SMARTCARD_READER     43
+#define PP_SMARTCARD_GUID       45
+#define PP_ROOT_CERTSTORE       46
+
+/* Values returned by CryptGetProvParam of PP_KEYSTORAGE */
+#define CRYPT_SEC_DESCR         0x00000001
+#define CRYPT_PSTORE            0x00000002
+#define CRYPT_UI_PROMPT         0x00000004
+
+/* Crypt{Get/Set}KeyParam */
+#define KP_IV                   1
+#define KP_SALT                 2
+#define KP_PADDING              3
+#define KP_MODE                 4
+#define KP_MODE_BITS            5
+#define KP_PERMISSIONS          6
+#define KP_ALGID                7
+#define KP_BLOCKLEN             8
+#define KP_KEYLEN               9
+#define KP_SALT_EX              10
+#define KP_P                    11
+#define KP_G                    12
+#define KP_Q                    13
+#define KP_X                    14
+#define KP_Y                    15
+#define KP_RA                   16
+#define KP_RB                   17
+#define KP_INFO                 18
+#define KP_EFFECTIVE_KEYLEN     19
+#define KP_SCHANNEL_ALG         20
+#define KP_CLIENT_RANDOM        21
+#define KP_SERVER_RANDOM        22
+#define KP_RP                   23
+#define KP_PRECOMP_MD5          24
+#define KP_PRECOMP_SHA          25
+#define KP_CERTIFICATE          26
+#define KP_CLEAR_KEY            27
+#define KP_PUB_EX_LEN           28
+#define KP_PUB_EX_VAL           29
+#define KP_KEYVAL               30
+#define KP_ADMIN_PIN            31
+#define KP_KEYEXCHANGE_PIN      32
+#define KP_SIGNATURE_PIN        33
+#define KP_PREHASH              34
+#define KP_ROUNDS               35
+#define KP_OAEP_PARAMS          36
+#define KP_CMS_KEY_INFO         37
+#define KP_CMS_DH_KEY_INFO      38
+#define KP_PUB_PARAMS           39
+#define KP_VERIFY_PARAMS        40
+#define KP_HIGHEST_VERSION      41
+#define KP_GET_USE_COUNT        42
+
+/* Values for KP_PADDING */
+#define PKCS5_PADDING  1
+#define RANDOM_PADDING 2
+#define ZERO_PADDING   3
+
+/* CryptSignHash/CryptVerifySignature */
+#define CRYPT_NOHASHOID         0x00000001
+#define CRYPT_TYPE2_FORMAT      0x00000002
+#define CRYPT_X931_FORMAT       0x00000004
+
+/* Crypt{Get,Set}HashParam */
+#define HP_ALGID                0x0001
+#define HP_HASHVAL              0x0002
+#define HP_HASHSIZE             0x0004
+#define HP_HMAC_INFO            0x0005
+#define HP_TLS1PRF_LABEL        0x0006
+#define HP_TLS1PRF_SEED         0x0007
+
+/* Crypt{Get,Set}KeyParam */
+#define CRYPT_MODE_CBC          1
+#define CRYPT_MODE_ECB          2
+#define CRYPT_MODE_OFB          3
+#define CRYPT_MODE_CFB          4
+
+#define CRYPT_ENCRYPT           0x0001 
+#define CRYPT_DECRYPT           0x0002
+#define CRYPT_EXPORT            0x0004
+#define CRYPT_READ              0x0008
+#define CRYPT_WRITE             0x0010
+#define CRYPT_MAC               0x0020
+
+/* Crypt*Key */
+#define CRYPT_EXPORTABLE        0x00000001
+#define CRYPT_USER_PROTECTED    0x00000002
+#define CRYPT_CREATE_SALT       0x00000004
+#define CRYPT_UPDATE_KEY        0x00000008
+#define CRYPT_NO_SALT           0x00000010
+#define CRYPT_PREGEN            0x00000040
+#define CRYPT_SERVER            0x00000400
+#define CRYPT_ARCHIVABLE        0x00004000
+
+/* CryptExportKey */
+#define CRYPT_SSL2_FALLBACK     0x00000002
+#define CRYPT_DESTROYKEY        0x00000004
+#define CRYPT_OAEP              0x00000040
+
+/* CryptHashSessionKey */
+#define CRYPT_LITTLE_ENDIAN     0x00000001
+
+/* Crypt{Protect,Unprotect}Data PROMPTSTRUCT flags */
+#define CRYPTPROTECT_PROMPT_ON_PROTECT    0x0001
+#define CRYPTPROTECT_PROMPT_ON_UNPROTECT  0x0002
+/* Crypt{Protect,Unprotect}Data flags */
+#define CRYPTPROTECT_UI_FORBIDDEN       0x0001
+#define CRYPTPROTECT_LOCAL_MACHINE      0x0004
+#define CRYPTPROTECT_AUDIT              0x0010
+#define CRYPTPROTECT_VERIFY_PROTECTION  0x0040
+
+/* Blob Types */
+#define SIMPLEBLOB              0x1
+#define PUBLICKEYBLOB           0x6
+#define PRIVATEKEYBLOB          0x7
+#define PLAINTEXTKEYBLOB        0x8
+#define OPAQUEKEYBLOB           0x9
+#define PUBLICKEYBLOBEX         0xA
+#define SYMMETRICWRAPKEYBLOB    0xB
+
+#define CUR_BLOB_VERSION        2
+
+/* cert store provider types */
+#define CERT_STORE_PROV_MSG                  ((LPCSTR)1)
+#define CERT_STORE_PROV_MEMORY               ((LPCSTR)2)
+#define CERT_STORE_PROV_FILE                 ((LPCSTR)3)
+#define CERT_STORE_PROV_REG                  ((LPCSTR)4)
+#define CERT_STORE_PROV_PKCS7                ((LPCSTR)5)
+#define CERT_STORE_PROV_SERIALIZED           ((LPCSTR)6)
+#define CERT_STORE_PROV_FILENAME_A           ((LPCSTR)7)
+#define CERT_STORE_PROV_FILENAME_W           ((LPCSTR)8)
+#define CERT_STORE_PROV_SYSTEM_A             ((LPCSTR)9)
+#define CERT_STORE_PROV_SYSTEM_W             ((LPCSTR)10)
+#define CERT_STORE_PROV_SYSTEM               CERT_STORE_PROV_SYSTEM_W
+#define CERT_STORE_PROV_COLLECTION           ((LPCSTR)11)
+#define CERT_STORE_PROV_SYSTEM_REGISTRY_A    ((LPCSTR)12)
+#define CERT_STORE_PROV_SYSTEM_REGISTRY_W    ((LPCSTR)13)
+#define CERT_STORE_PROV_SYSTEM_REGISTRY      CERT_STORE_PROV_SYSTEM_REGISTRY_W
+#define CERT_STORE_PROV_PHYSICAL_W           ((LPCSTR)14)
+#define CERT_STORE_PROV_PHYSICAL             CERT_STORE_PROV_PHYSICAL_W
+#define CERT_STORE_PROV_SMART_CARD_W         ((LPCSTR)15)
+#define CERT_STORE_PROV_SMART_CARD           CERT_STORE_PROV_SMART_CARD_W
+#define CERT_STORE_PROV_LDAP_W               ((LPCSTR)16)
+#define CERT_STORE_PROV_LDAP                 CERT_STORE_PROV_LDAP_W
+
+#define sz_CERT_STORE_PROV_MEMORY            "Memory"
+#define sz_CERT_STORE_PROV_FILENAME_W        "File"
+#define sz_CERT_STORE_PROV_FILENAME          sz_CERT_STORE_PROV_FILENAME_W
+#define sz_CERT_STORE_PROV_SYSTEM_W          "System"
+#define sz_CERT_STORE_PROV_SYSTEM            sz_CERT_STORE_PROV_SYSTEM_W
+#define sz_CERT_STORE_PROV_PKCS7             "PKCS7"
+#define sz_CERT_STORE_PROV_SERIALIZED        "Serialized"
+#define sz_CERT_STORE_PROV_COLLECTION        "Collection"
+#define sz_CERT_STORE_PROV_SYSTEM_REGISTRY_W "SystemRegistry"
+#define sz_CERT_STORE_PROV_SYSTEM_REGISTRY   sz_CERT_STORE_PROV_SYSTEM_REGISTRY_W
+#define sz_CERT_STORE_PROV_PHYSICAL_W        "Physical"
+#define sz_CERT_STORE_PROV_PHYSICAL          sz_CERT_STORE_PROV_PHYSICAL_W
+#define sz_CERT_STORE_PROV_SMART_CARD_W      "SmartCard"
+#define sz_CERT_STORE_PROV_SMART_CARD        sz_CERT_STORE_PROV_SMART_CARD_W
+#define sz_CERT_STORE_PROV_LDAP_W            "Ldap"
+#define sz_CERT_STORE_PROV_LDAP              sz_CERT_STORE_PROV_LDAP_W
+
+/* types for CertOpenStore dwEncodingType */
+#define CERT_ENCODING_TYPE_MASK 0x0000ffff
+#define CMSG_ENCODING_TYPE_MASK 0xffff0000
+#define GET_CERT_ENCODING_TYPE(x) ((x) & CERT_ENCODING_TYPE_MASK)
+#define GET_CMSG_ENCODING_TYPE(x) ((x) & CMSG_ENCODING_TYPE_MASK)
+
+#define CRYPT_ASN_ENCODING  0x00000001
+#define CRYPT_NDR_ENCODING  0x00000002
+#define X509_ASN_ENCODING   0x00000001
+#define X509_NDR_ENCODING   0x00000002
+#define PKCS_7_ASN_ENCODING 0x00010000
+#define PKCS_7_NDR_ENCODING 0x00020000
+
+/* system store locations */
+#define CERT_SYSTEM_STORE_LOCATION_MASK  0x00ff0000
+#define CERT_SYSTEM_STORE_LOCATION_SHIFT 16
+
+/* system store location ids */
+/* hkcu */
+#define CERT_SYSTEM_STORE_CURRENT_USER_ID               1
+/* hklm */
+#define CERT_SYSTEM_STORE_LOCAL_MACHINE_ID              2
+/* hklm\Software\Microsoft\Cryptography\Services */
+#define CERT_SYSTEM_STORE_CURRENT_SERVICE_ID            4
+#define CERT_SYSTEM_STORE_SERVICES_ID                   5
+/* HKEY_USERS */
+#define CERT_SYSTEM_STORE_USERS_ID                      6
+/* hkcu\Software\Policies\Microsoft\SystemCertificates */
+#define CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY_ID  7
+/* hklm\Software\Policies\Microsoft\SystemCertificates */
+#define CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY_ID 8
+/* hklm\Software\Microsoft\EnterpriseCertificates */
+#define CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE_ID   9
+
+/* system store location values */
+#define CERT_SYSTEM_STORE_CURRENT_USER \
+ (CERT_SYSTEM_STORE_CURRENT_USER_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
+#define CERT_SYSTEM_STORE_LOCAL_MACHINE \
+ (CERT_SYSTEM_STORE_LOCAL_MACHINE_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
+#define CERT_SYSTEM_STORE_CURRENT_SERVICE \
+ (CERT_SYSTEM_STORE_CURRENT_SERVICE_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
+#define CERT_SYSTEM_STORE_SERVICES \
+ (CERT_SYSTEM_STORE_SERVICES_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
+#define CERT_SYSTEM_STORE_USERS \
+ (CERT_SYSTEM_STORE_USERS_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
+#define CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY \
+ (CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
+#define CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY \
+ (CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
+#define CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE \
+ (CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
+
+#if defined(__GNUC__)
+#define CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH (const WCHAR[])\
+ {'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t',\
+  '\\','S','y','s','t','e','m','C','e','r','t','i','f','i','c','a','t','e','s',\
+  0 }
+#define CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH (const WCHAR[])\
+ {'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\',\
+  'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r',\
+  't','i','f','i','c','a','t','e','s',0 }
+#elif defined(_MSC_VER)
+#define CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH \
+ L"Software\\Microsoft\\SystemCertificates"
+#define CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH \
+ L"Software\\Policies\\Microsoft\\SystemCertificates"
+#else
+static const WCHAR CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH[] = 
+ {'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\',
+  'S','y','s','t','e','m','C','e','r','t','i','f','i','c','a','t','e','s',0 };
+static const WCHAR CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH[] = 
+ {'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\',
+  'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r',
+  't','i','f','i','c','a','t','e','s',0 };
+#endif
+
+#if defined(__GNUC__)
+#define CERT_EFSBLOB_REGPATH (const WCHAR[])\
+{'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\',\
+ 'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r',\
+ 't','i','f','i','c','a','t','e','s','\\','E','F','S',0 }
+#define CERT_EFSBLOB_VALUE_NAME (const WCHAR[]) {'E','F','S','B','l','o','b',0 }
+#elif defined(_MSC_VER)
+#define CERT_EFSBLOB_REGPATH CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"\\EFS"
+#define CERT_EFSBLOB_VALUE_NAME L"EFSBlob"
+#else
+static const WCHAR CERT_EFSBLOB_REGPATH[] =
+ {'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\',
+  'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r',
+  't','i','f','i','c','a','t','e','s','\\','E','F','S',0 };
+static const CERT_EFSBLOB_VALUE_NAME[] = { 'E','F','S','B','l','o','b',0 };
+#endif
+
+#if defined(__GNUC__)
+#define CERT_PROT_ROOT_FLAGS_REGPATH (const WCHAR[])\
+{'\\','R','o','o','t','\\','P','r','o','t','e','c','t','e','d','R','o','o','t',\
+ 's',0 }
+#define CERT_PROT_ROOT_FLAGS_VALUE_NAME (const WCHAR[])\
+{'F','l','a','g','s',0 }
+#elif defined(_MSC_VER)
+#define CERT_PROT_ROOT_FLAGS_REGPATH L"\\Root\\ProtectedRoots"
+#define CERT_PROT_ROOT_FLAGS_VALUE_NAME L"Flags"
+#else
+static const WCHAR CERT_PROT_ROOT_FLAGS_REGPATH[] =
+ { '\\','R','o','o','t','\\','P','r','o','t','e','c','t','e','d','R','o','o',
+   't','s',0 };
+static const WCHAR CERT_PROT_ROOT_FLAGS_VALUE_NAME[] = {'F','l','a','g','s',0 };
+#endif
+
+#define CERT_PROT_ROOT_DISABLE_CURRENT_USER_FLAG                0x01
+#define CERT_PROT_ROOT_INHIBIT_ADD_AT_INIT_FLAG                 0x02
+#define CERT_PROT_ROOT_INHIBIT_PURGE_LM_FLAG                    0x04
+#define CERT_PROT_ROOT_DISABLE_LM_AUTH_FLAG                     0x08
+#define CERT_PROT_ROOT_DISABLE_NT_AUTH_REQUIRED_FLAG            0x10
+#define CERT_PROT_ROOT_DISABLE_NOT_DEFINED_NAME_CONSTRAINT_FLAG 0x20
+
+#if defined(__GNUC__)
+#define CERT_TRUST_PUB_SAFER_GROUP_POLICY_REGPATH (const WCHAR[])\
+{'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\',\
+ 'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r',\
+ 't','i','f','i','c','a','t','e','s','\\','T','r','u','s','t','e','d',\
+ 'P','u','b','l','i','s','h','e','r','\\','S','a','f','e','r',0 }
+#elif defined(_MSC_VER)
+#define CERT_TRUST_PUB_SAFER_GROUP_POLICY_REGPATH \
+ CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"\\TrustedPublisher\\Safer"
+#else
+static const WCHAR CERT_TRUST_PUB_SAFER_GROUP_POLICY_REGPATH[] =
+ {'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\',
+  'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r',
+  't','i','f','i','c','a','t','e','s','\\','T','r','u','s','t','e','d',
+  'P','u','b','l','i','s','h','e','r','\\','S','a','f','e','r',0 };
+#endif
+
+#if defined(__GNUC__)
+#define CERT_TRUST_PUB_SAFER_LOCAL_MACHINE_REGPATH (const WCHAR[])\
+{'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\',\
+ 'S','y','s','t','e','m','C','e','r','t','i','f','i','c','a','t','e','s','\\',\
+ 'T','r','u','s','t','e','d','P','u','b','l','i','s','h','e','r','\\',\
+ 'S','a','f','e','r',0 }
+#define CERT_TRUST_PUB_AUTHENTICODE_FLAGS_VALUE_NAME (const WCHAR[])\
+{'A','u','t','h','e','n','t','i','c','o','d','e','F','l','a','g','s',0 };
+#elif defined(_MSC_VER)
+#define CERT_TRUST_PUB_SAFER_LOCAL_MACHINE_REGPATH \
+ CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH L"\\TrustedPublisher\\Safer"
+#define CERT_TRUST_PUB_AUTHENTICODE_FLAGS_VALUE_NAME L"AuthenticodeFlags"
+#else
+static const WCHAR CERT_TRUST_PUB_SAFER_LOCAL_MACHINE_REGPATH[] =
+ {'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\',
+  'S','y','s','t','e','m','C','e','r','t','i','f','i','c','a','t','e','s','\\',
+  'T','r','u','s','t','e','d','P','u','b','l','i','s','h','e','r','\\',
+  'S','a','f','e','r',0 };
+static const WCHAR CERT_TRUST_PUB_AUTHENTICODE_FLAGS_VALUE_NAME[] =
+ { 'A','u','t','h','e','n','t','i','c','o','d','e','F','l','a','g','s',0 };
+#endif
+
+#define CERT_TRUST_PUB_ALLOW_END_USER_TRUST         0x00000000
+#define CERT_TRUST_PUB_ALLOW_MACHINE_ADMIN_TRUST    0x00000001
+#define CERT_TRUST_PUB_ALLOW_ENTERPRISE_ADMIN_TRUST 0x00000002
+#define CERT_TRUST_PUB_ALLOW_TRUST_MASK             0x00000003
+#define CERT_TRUST_PUB_CHECK_PUBLISHER_REV_FLAG     0x00000100
+#define CERT_TRUST_PUB_CHECK_TIMESTAMP_REV_FLAG     0x00000200
+
+/* flags for CertOpenStore dwFlags */
+#define CERT_STORE_NO_CRYPT_RELEASE_FLAG            0x00000001
+#define CERT_STORE_SET_LOCALIZED_NAME_FLAG          0x00000002
+#define CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG 0x00000004
+#define CERT_STORE_DELETE_FLAG                      0x00000010
+#define CERT_STORE_UNSAFE_PHYSICAL_FLAG             0x00000020
+#define CERT_STORE_SHARE_STORE_FLAG                 0x00000040
+#define CERT_STORE_SHARE_CONTEXT_FLAG               0x00000080
+#define CERT_STORE_MANIFOLD_FLAG                    0x00000100
+#define CERT_STORE_ENUM_ARCHIVED_FLAG               0x00000200
+#define CERT_STORE_UPDATE_KEYID_FLAG                0x00000400
+#define CERT_STORE_BACKUP_RESTORE_FLAG              0x00000800
+#define CERT_STORE_MAXIMUM_ALLOWED_FLAG             0x00001000
+#define CERT_STORE_CREATE_NEW_FLAG                  0x00002000
+#define CERT_STORE_OPEN_EXISTING_FLAG               0x00004000
+#define CERT_STORE_READONLY_FLAG                    0x00008000
+
+#define CERT_REGISTRY_STORE_REMOTE_FLAG      0x00010000
+#define CERT_REGISTRY_STORE_SERIALIZED_FLAG  0x00020000
+#define CERT_REGISTRY_STORE_ROAMING_FLAG     0x00040000
+#define CERT_REGISTRY_STORE_MY_IE_DIRTY_FLAG 0x00080000
+#define CERT_REGISTRY_STORE_LM_GPT_FLAG      0x01000000
+#define CERT_REGISTRY_STORE_CLIENT_GPT_FLAG  0x80000000
+
+#define CERT_FILE_STORE_COMMIT_ENABLE_FLAG 0x00010000
+
+/* CertCloseStore dwFlags */
+#define CERT_CLOSE_STORE_FORCE_FLAG 0x00000001
+#define CERT_CLOSE_STORE_CHECK_FLAG 0x00000002
+
+/* dwAddDisposition */
+#define CERT_STORE_ADD_NEW                                 1
+#define CERT_STORE_ADD_USE_EXISTING                        2
+#define CERT_STORE_ADD_REPLACE_EXISTING                    3
+#define CERT_STORE_ADD_ALWAYS                              4
+#define CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES 5
+#define CERT_STORE_ADD_NEWER                               6
+#define CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES            7
+
+/* Installable OID function defs */
+#define CRYPT_OID_OPEN_STORE_PROV_FUNC     "CertDllOpenStoreProv"
+#define CRYPT_OID_ENCODE_OBJECT_FUNC       "CryptDllEncodeObject"
+#define CRYPT_OID_DECODE_OBJECT_FUNC       "CryptDllDecodeObject"
+#define CRYPT_OID_ENCODE_OBJECT_EX_FUNC    "CryptDllEncodeObjectEx"
+#define CRYPT_OID_DECODE_OBJECT_EX_FUNC    "CryptDllDecodeObjectEx"
+#define CRYPT_OID_CREATE_COM_OBJECT_FUNC   "CryptDllCreateComObject"
+#define CRYPT_OID_VERIFY_REVOCATION_FUNC   "CertDllVerifyRevocation"
+#define CRYPT_OID_VERIFY_CTL_USAGE_FUNC    "CertDllVerifyCTLUsage"
+#define CRYPT_OID_FORMAT_OBJECT_FUNC       "CryptDllFormatObject"
+#define CRYPT_OID_FIND_OID_INFO_FUNC       "CryptDllFindOIDInfo"
+#define CRYPT_OID_FIND_LOCALIZED_NAME_FUNC "CryptDllFindLocalizedName"
+#define CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_FUNC  "CryptDllExportPublicKeyInfoEx"
+#define CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_FUNC  "CryptDllImportPublicKeyInfoEx"
+#define CRYPT_OID_EXPORT_PRIVATE_KEY_INFO_FUNC "CryptDllExportPrivateKeyInfoEx"
+#define CRYPT_OID_IMPORT_PRIVATE_KEY_INFO_FUNC "CryptDllImportPrivateKeyInfoEx"
+#define CRYPT_OID_VERIFY_CERTIFICATE_CHAIN_POLICY_FUNC \
+ "CertDllVerifyCertificateChainPolicy"
+#define URL_OID_GET_OBJECT_URL_FUNC    "UrlDllGetObjectUrl"
+#define TIME_VALID_OID_GET_OBJECT_FUNC "TimeValidDllGetObject"
+
+#define CRYPT_OID_REGPATH "Software\\Microsoft\\Cryptography\\OID"
+#define CRYPT_OID_REG_ENCODING_TYPE_PREFIX "EncodingType "
+#if defined(__GNUC__)
+# define CRYPT_OID_REG_DLL_VALUE_NAME (const WCHAR []){ 'D','l','l',0 }
+# define CRYPT_OID_REG_FUNC_NAME_VALUE_NAME \
+ (const WCHAR []){ 'F','u','n','c','N','a','m','e',0 }
+# define CRYPT_OID_REG_FLAGS_VALUE_NAME \
+ (const WCHAR []){ 'C','r','y','p','t','F','l','a','g','s',0 }
+#elif defined(_MSC_VER)
+# define CRYPT_OID_REG_DLL_VALUE_NAME       L"Dll"
+# define CRYPT_OID_REG_FUNC_NAME_VALUE_NAME L"FuncName"
+# define CRYPT_OID_REG_FLAGS_VALUE_NAME     L"CryptFlags"
+#else
+static const WCHAR CRYPT_OID_REG_DLL_VALUE_NAME[] = { 'D','l','l',0 };
+static const WCHAR CRYPT_OID_REG_FUNC_NAME_VALUE_NAME[] =
+ { 'F','u','n','c','N','a','m','e',0 };
+static const WCHAR CRYPT_OID_REG_FLAGS_VALUE_NAME[] =
+ { 'C','r','y','p','t','F','l','a','g','s',0 };
+#endif
+#define CRYPT_OID_REG_FUNC_NAME_VALUE_NAME_A "FuncName"
+#define CRYPT_DEFAULT_OID                    "DEFAULT"
+
+#define CRYPT_INSTALL_OID_FUNC_BEFORE_FLAG 1
+
+#define CRYPT_GET_INSTALLED_OID_FUNC_FLAG  0x1
+
+#define CRYPT_REGISTER_FIRST_INDEX 0
+#define CRYPT_REGISTER_LAST_INDEX  0xffffffff
+
+/* values for CERT_STORE_PROV_INFO's dwStoreProvFlags */
+#define CERT_STORE_PROV_EXTERNAL_FLAG        0x1
+#define CERT_STORE_PROV_DELETED_FLAG         0x2
+#define CERT_STORE_PROV_NO_PERSIST_FLAG      0x4
+#define CERT_STORE_PROV_SYSTEM_STORE_FLAG    0x8
+#define CERT_STORE_PROV_LM_SYSTEM_STORE_FLAG 0x10
+
+/* function indices */
+#define CERT_STORE_PROV_CLOSE_FUNC             0
+#define CERT_STORE_PROV_READ_CERT_FUNC         1
+#define CERT_STORE_PROV_WRITE_CERT_FUNC        2
+#define CERT_STORE_PROV_DELETE_CERT_FUNC       3
+#define CERT_STORE_PROV_SET_CERT_PROPERTY_FUNC 4
+#define CERT_STORE_PROV_READ_CRL_FUNC          5
+#define CERT_STORE_PROV_WRITE_CRL_FUNC         6
+#define CERT_STORE_PROV_DELETE_CRL_FUNC        7
+#define CERT_STORE_PROV_SET_CRL_PROPERTY_FUNC  8
+#define CERT_STORE_PROV_READ_CTL_FUNC          9
+#define CERT_STORE_PROV_WRITE_CTL_FUNC         10
+#define CERT_STORE_PROV_DELETE_CTL_FUNC        11
+#define CERT_STORE_PROV_SET_CTL_PROPERTY_FUNC  12
+#define CERT_STORE_PROV_CONTROL_FUNC           13
+#define CERT_STORE_PROV_FIND_CERT_FUNC         14
+#define CERT_STORE_PROV_FREE_FIND_CERT_FUNC    15
+#define CERT_STORE_PROV_GET_CERT_PROPERTY_FUNC 16
+#define CERT_STORE_PROV_FIND_CRL_FUNC          17
+#define CERT_STORE_PROV_FREE_FIND_CRL_FUNC     18
+#define CERT_STORE_PROV_GET_CRL_PROPERTY_FUNC  19
+#define CERT_STORE_PROV_FIND_CTL_FUNC          20
+#define CERT_STORE_PROV_FREE_FIND_CTL_FUNC     21
+#define CERT_STORE_PROV_GET_CTL_PROPERTY_FUNC  22
+
+/* physical store dwFlags, also used by CertAddStoreToCollection as
+ * dwUpdateFlags
+ */
+#define CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG                  0x1
+#define CERT_PHYSICAL_STORE_OPEN_DISABLE_FLAG                0x2
+#define CERT_PHYSICAL_STORE_REMOVE_OPEN_DISABLE_FLAG         0x4
+#define CERT_PHYSICAL_STORE_INSERT_COMPUTER_NAME_ENABLE_FLAG 0x8
+
+/* dwFlag values for CertEnumPhysicalStore callback */
+#define CERT_PHYSICAL_STORE_PREDEFINED_ENUM_FLAG 0x1
+
+/* predefined store names */
+#if defined(__GNUC__)
+# define CERT_PHYSICAL_STORE_DEFAULT_NAME (const WCHAR[])\
+ {'.','D','e','f','a','u','l','t','0'}
+# define CERT_PHYSICAL_STORE_GROUP_POLICY_NAME (const WCHAR[])\
+ {'.','G','r','o','u','p','P','o','l','i','c','y',0}
+# define CERT_PHYSICAL_STORE_LOCAL_MACHINE_NAME (const WCHAR[])\
+ {'.','L','o','c','a','l','M','a','c','h','i','n','e',0}
+# define CERT_PHYSICAL_STORE_DS_USER_CERTIFICATE_NAME (const WCHAR[])\
+ {'.','U','s','e','r','C','e','r','t','i','f','i','c','a','t','e',0}
+# define CERT_PHYSICAL_STORE_LOCAL_MACHINE_GROUP_POLICY_NAME (const WCHAR[])\
+ {'.','L','o','c','a','l','M','a','c','h','i','n','e','G','r','o','u','p',\
+ 'P','o','l','i','c','y',0}
+# define CERT_PHYSICAL_STORE_ENTERPRISE_NAME (const WCHAR[])\
+ {'.','E','n','t','e','r','p','r','i','s','e',0}
+# define CERT_PHYSICAL_STORE_AUTH_ROOT_NAME (const WCHAR[])\
+ {'.','A','u','t','h','R','o','o','t',0}
+#elif defined(_MSC_VER)
+# define CERT_PHYSICAL_STORE_DEFAULT_NAME \
+ L".Default"
+# define CERT_PHYSICAL_STORE_GROUP_POLICY_NAME \
+ L".GroupPolicy"
+# define CERT_PHYSICAL_STORE_LOCAL_MACHINE_NAME \
+ L".LocalMachine"
+# define CERT_PHYSICAL_STORE_DS_USER_CERTIFICATE_NAME \
+ L".UserCertificate"
+# define CERT_PHYSICAL_STORE_LOCAL_MACHINE_GROUP_POLICY_NAME \
+ L".LocalMachineGroupPolicy"
+# define CERT_PHYSICAL_STORE_ENTERPRISE_NAME \
+ L".Enterprise"
+# define CERT_PHYSICAL_STORE_AUTH_ROOT_NAME \
+ L".AuthRoot"
+#else
+static const WCHAR CERT_PHYSICAL_STORE_DEFAULT_NAME[] = 
+ {'.','D','e','f','a','u','l','t','0'};
+static const WCHAR CERT_PHYSICAL_STORE_GROUP_POLICY_NAME[] =
+ {'.','G','r','o','u','p','P','o','l','i','c','y',0};
+static const WCHAR CERT_PHYSICAL_STORE_LOCAL_MACHINE_NAME[] =
+ {'.','L','o','c','a','l','M','a','c','h','i','n','e',0};
+static const WCHAR CERT_PHYSICAL_STORE_DS_USER_CERTIFICATE_NAME[] =
+ {'.','U','s','e','r','C','e','r','t','i','f','i','c','a','t','e',0};
+static const WCHAR CERT_PHYSICAL_STORE_LOCAL_MACHINE_GROUP_POLICY_NAME[] =
+ {'.','L','o','c','a','l','M','a','c','h','i','n','e','G','r','o','u','p',
+ 'P','o','l','i','c','y',0};
+static const WCHAR CERT_PHYSICAL_STORE_ENTERPRISE_NAME[] =
+ {'.','E','n','t','e','r','p','r','i','s','e',0};
+static const WCHAR CERT_PHYSICAL_STORE_AUTH_ROOT_NAME[] =
+ {'.','A','u','t','h','R','o','o','t',0};
+#endif
+
+/* cert system store flags */
+#define CERT_SYSTEM_STORE_MASK 0xffff0000
+#define CERT_SYSTEM_STORE_RELOCATE_FLAG 0x80000000
+
+/* CertFindChainInStore dwFindType types */
+#define CERT_CHAIN_FIND_BY_ISSUER 1
+
+/* CertSaveStore dwSaveAs values */
+#define CERT_STORE_SAVE_AS_STORE 1
+#define CERT_STORE_SAVE_AS_PKCS7 2
+/* CertSaveStore dwSaveTo values */
+#define CERT_STORE_SAVE_TO_FILE       1
+#define CERT_STORE_SAVE_TO_MEMORY     2
+#define CERT_STORE_SAVE_TO_FILENAME_A 3
+#define CERT_STORE_SAVE_TO_FILENAME_W 4
+#define CERT_STORE_SAVE_TO_FILENAME   CERT_STORE_SAVE_TO_FILENAME_W
+
+/* CERT_INFO versions/flags */
+#define CERT_V1 0
+#define CERT_V2 1
+#define CERT_V3 2
+#define CERT_INFO_VERSION_FLAG                 1
+#define CERT_INFO_SERIAL_NUMBER_FLAG           2
+#define CERT_INFO_SIGNATURE_ALGORITHM_FLAG     3
+#define CERT_INFO_ISSUER_FLAG                  4
+#define CERT_INFO_NOT_BEFORE_FLAG              5
+#define CERT_INFO_NOT_AFTER_FLAG               6
+#define CERT_INFO_SUBJECT_FLAG                 7
+#define CERT_INFO_SUBJECT_PUBLIC_KEY_INFO_FLAG 8
+#define CERT_INFO_ISSUER_UNIQUE_ID_FLAG        9
+#define CERT_INFO_SUBJECT_UNIQUE_ID_FLAG       10
+#define CERT_INFO_EXTENSION_FLAG               11
+
+/* CERT_REQUEST_INFO versions */
+#define CERT_REQUEST_V1 0
+
+/* CERT_KEYGEN_REQUEST_INFO versions */
+#define CERT_KEYGEN_REQUEST_V1 0
+
+/* CRL versions */
+#define CRL_V1 0
+#define CRL_V2 1
+
+/* CTL versions */
+#define CTL_V1 0
+
+/* Certificate, CRL, CTL property IDs */
+#define CERT_KEY_PROV_HANDLE_PROP_ID               1
+#define CERT_KEY_PROV_INFO_PROP_ID                 2
+#define CERT_SHA1_HASH_PROP_ID                     3
+#define CERT_HASH_PROP_ID                          CERT_SHA1_HASH_PROP_ID
+#define CERT_MD5_HASH_PROP_ID                      4
+#define CERT_KEY_CONTEXT_PROP_ID                   5
+#define CERT_KEY_SPEC_PROP_ID                      6
+#define CERT_IE30_RESERVED_PROP_ID                 7
+#define CERT_PUBKEY_HASH_RESERVED_PROP_ID          8
+#define CERT_ENHKEY_USAGE_PROP_ID                  9
+#define CERT_CTL_USAGE_PROP_ID                     CERT_ENHKEY_USAGE_PROP_ID
+#define CERT_NEXT_UPDATE_LOCATION_PROP_ID          10
+#define CERT_FRIENDLY_NAME_PROP_ID                 11
+#define CERT_PVK_FILE_PROP_ID                      12
+#define CERT_DESCRIPTION_PROP_ID                   13
+#define CERT_ACCESS_STATE_PROP_ID                  14
+#define CERT_SIGNATURE_HASH_PROP_ID                15
+#define CERT_SMART_CARD_DATA_PROP_ID               16
+#define CERT_EFS_PROP_ID                           17
+#define CERT_FORTEZZA_DATA_PROP                    18
+#define CERT_ARCHIVED_PROP_ID                      19
+#define CERT_KEY_IDENTIFIER_PROP_ID                20
+#define CERT_AUTO_ENROLL_PROP_ID                   21
+#define CERT_PUBKEY_ALG_PARA_PROP_ID               22
+#define CERT_CROSS_CERT_DIST_POINTS_PROP_ID        23
+#define CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID    24
+#define CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID   25
+#define CERT_ENROLLMENT_PROP_ID                    26
+#define CERT_DATE_STAMP_PROP_ID                    27
+#define CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID 28
+#define CERT_SUBJECT_NAME_MD5_HASH_PROP_ID         29
+#define CERT_EXTENDED_ERROR_INFO_PROP_ID           30
+/* 31    -- unused?
+   32    -- cert prop id
+   33    -- CRL prop id
+   34    -- CTL prop id
+   35    -- KeyId prop id
+   36-63 -- reserved
+ */
+#define CERT_RENEWAL_PROP_ID                       64
+#define CERT_ARCHIVED_KEY_HASH_PROP_ID             65
+#define CERT_AUTO_ENROLL_RETRY_PROP_ID             66
+#define CERT_AIA_URL_RETRIEVED_PROP_ID             67
+#define CERT_AUTHORITY_INFO_ACCESS_PROP_ID         68
+#define CERT_BACKED_UP_PROP_ID                     69
+#define CERT_OCSP_RESPONSE_PROP_ID                 70
+#define CERT_REQUEST_ORIGINATOR_PROP_ID            71
+#define CERT_SOURCE_LOCATION_PROP_ID               72
+#define CERT_SOURCE_URL_PROP_ID                    73
+#define CERT_NEW_KEY_PROP_ID                       74
+#define CERT_OCSP_CACHE_PREFIX_PROP_ID             75
+#define CERT_SMART_CARD_ROOT_INFO_PROP_ID          76
+#define CERT_NO_AUTO_EXPIRE_CHECK_PROP_ID          77
+#define CERT_NCRYPT_KEY_HANDLE_PROP_ID             78
+#define CERT_HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_PROP_ID 79
+#define CERT_SUBJECT_INFO_ACCESS_PROP_ID           80
+#define CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID 81
+#define CERT_CA_DISABLE_CRL_PROP_ID                82
+#define CERT_ROOT_PROGRAM_CERT_POLICIES_PROP_ID    83
+#define CERT_ROOT_PROGRAM_NAME_CONSTRAINTS_PROP_ID 84
+
+#define CERT_FIRST_RESERVED_PROP_ID                85
+#define CERT_LAST_RESERVED_PROP_ID                 0x00007fff
+#define CERT_FIRST_USER_PROP_ID                    0x00008000
+#define CERT_LAST_USER_PROP_ID                     0x0000ffff
+
+#define IS_CERT_HASH_PROP_ID(x) \
+ ((x) == CERT_SHA1_HASH_PROP_ID || (x) == CERT_MD5_HASH_PROP_ID || \
+  (x) == CERT_SIGNATURE_HASH_PROP_ID)
+
+#define IS_PUBKEY_HASH_PROP_ID(x) \
+ ((x) == CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID || \
+  (x) == CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID)
+
+#define IS_CHAIN_HASH_PROP_ID(x) \
+ ((x) == CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID || \
+  (x) == CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID || \
+  (x) == CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID || \
+  (x) == CERT_SUBJECT_NAME_MD5_HASH_PROP_ID)
+
+/* access state flags */
+#define CERT_ACCESS_STATE_WRITE_PERSIST_FLAG   0x1
+#define CERT_ACCESS_STATE_SYSTEM_STORE_FLAG    0x2
+#define CERT_ACCESS_STATE_LM_SYSTEM_STORE_FLAG 0x4
+
+/* CertSetCertificateContextProperty flags */
+#define CERT_SET_PROPERTY_INHIBIT_PERSIST_FLAG      0x40000000
+#define CERT_SET_PROPERTY_IGNORE_PERSIST_ERROR_FLAG 0x80000000
+
+/* CERT_RDN attribute dwValueType types */
+#define CERT_RDN_TYPE_MASK 0x000000ff
+#define CERT_RDN_ANY_TYPE         0
+#define CERT_RDN_ENCODED_BLOB     1
+#define CERT_RDN_OCTET_STRING     2
+#define CERT_RDN_NUMERIC_STRING   3
+#define CERT_RDN_PRINTABLE_STRING 4
+#define CERT_RDN_TELETEX_STRING   5
+#define CERT_RDN_T61_STRING       5
+#define CERT_RDN_VIDEOTEX_STRING  6
+#define CERT_RDN_IA5_STRING       7
+#define CERT_RDN_GRAPHIC_STRING   8
+#define CERT_RDN_VISIBLE_STRING   9
+#define CERT_RDN_ISO646_STRING    9
+#define CERT_RDN_GENERAL_STRING   10
+#define CERT_RDN_UNIVERSAL_STRING 11
+#define CERT_RDN_INT4_STRING      11
+#define CERT_RDN_BMP_STRING       12
+#define CERT_RDN_UNICODE_STRING   12
+#define CERT_RDN_UTF8_STRING      13
+
+/* CERT_RDN attribute dwValueType flags */
+#define CERT_RDN_FLAGS_MASK 0xff000000
+#define CERT_RDN_ENABLE_T61_UNICODE_FLAG  0x80000000
+#define CERT_RDN_DISABLE_CHECK_TYPE_FLAG  0x4000000
+#define CERT_RDN_ENABLE_UTF8_UNICODE_FLAG 0x2000000
+#define CERT_RDN_DISABLE_IE4_UTF8_FLAG    0x0100000
+
+#define IS_CERT_RDN_CHAR_STRING(x) \
+ (((x) & CERT_RDN_TYPE_MASK) >= CERT_RDN_NUMERIC_STRING)
+
+/* CertIsRDNAttrsInCertificateName flags */
+#define CERT_UNICODE_IS_RDN_ATTRS_FLAG          0x1
+#define CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG 0x2
+
+/* CRL reason codes */
+#define CRL_REASON_UNSPECIFIED            0
+#define CRL_REASON_KEY_COMPROMISE         1
+#define CRL_REASON_CA_COMPROMISE          2
+#define CRL_REASON_AFFILIATION_CHANGED    3
+#define CRL_REASON_SUPERSEDED             4
+#define CRL_REASON_CESSATION_OF_OPERATION 5
+#define CRL_REASON_CERTIFICATE_HOLD       6
+#define CRL_REASON_REMOVE_FROM_CRL        8
+
+/* CertControlStore control types */
+#define CERT_STORE_CTRL_RESYNC        1
+#define CERT_STORE_CTRL_NOTIFY_CHANGE 2
+#define CERT_STORE_CTRL_COMMIT        3
+#define CERT_STORE_CTRL_AUTO_RESYNC   4
+#define CERT_STORE_CTRL_CANCEL_NOTIFY 5
+
+#define CERT_STORE_CTRL_COMMIT_FORCE_FLAG 0x1
+#define CERT_STORE_CTRL_COMMIT_CLEAR_FLAG 0x2
+
+/* cert store properties */
+#define CERT_STORE_LOCALIZED_NAME_PROP_ID 0x1000
+
+/* CertCreateContext flags */
+#define CERT_CREATE_CONTEXT_NOCOPY_FLAG       0x1
+#define CERT_CREATE_CONTEXT_SORTED_FLAG       0x2
+#define CERT_CREATE_CONTEXT_NO_HCRYPTMSG_FLAG 0x4
+#define CERT_CREATE_CONTEXT_NO_ENTRY_FLAG     0x8
+
+#define CERT_COMPARE_MASK                   0xffff
+#define CERT_COMPARE_SHIFT                  16
+#define CERT_COMPARE_ANY                    0
+#define CERT_COMPARE_SHA1_HASH              1
+#define CERT_COMPARE_HASH                   CERT_COMPARE_SHA1_HASH
+#define CERT_COMPARE_NAME                   2
+#define CERT_COMPARE_ATTR                   3
+#define CERT_COMPARE_MD5_HASH               4
+#define CERT_COMPARE_PROPERTY               5
+#define CERT_COMPARE_PUBLIC_KEY             6
+#define CERT_COMPARE_NAME_STR_A             7
+#define CERT_COMPARE_NAME_STR_W             8
+#define CERT_COMPARE_KEY_SPEC               9
+#define CERT_COMPARE_ENHKEY_USAGE           10
+#define CERT_COMPARE_CTL_USAGE              CERT_COMPARE_ENHKEY_USAGE
+#define CERT_COMPARE_SUBJECT_CERT           11
+#define CERT_COMPARE_ISSUER_OF              12
+#define CERT_COMPARE_EXISTING               13
+#define CERT_COMPARE_SIGNATURE_HASH         14
+#define CERT_COMPARE_KEY_IDENTIFIER         15
+#define CERT_COMPARE_CERT_ID                16
+#define CERT_COMPARE_CROSS_CERT_DIST_POINTS 17
+#define CERT_COMPARE_PUBKEY_MD5_HASH        18
+
+/* values of dwFindType for CertFind*InStore */
+#define CERT_FIND_ANY \
+ (CERT_COMPARE_ANY << CERT_COMPARE_SHIFT)
+#define CERT_FIND_SHA1_HASH \
+ (CERT_COMPARE_SHA1_HASH << CERT_COMPARE_SHIFT)
+#define CERT_FIND_MD5_HASH \
+ (CERT_COMPARE_MD5_HASH << CERT_COMPARE_SHIFT)
+#define CERT_FIND_SIGNATURE_HASH \
+ (CERT_COMPARE_SIGNATURE_HASH << CERT_COMPARE_SHIFT)
+#define CERT_FIND_KEY_IDENTIFIER \
+ (CERT_COMPARE_KEY_IDENTIFIER << CERT_COMPARE_SHIFT)
+#define CERT_FIND_HASH CERT_FIND_SHA1_HASH
+#define CERT_FIND_PROPERTY \
+ (CERT_COMPARE_PROPERTY << CERT_COMPARE_SHIFT)
+#define CERT_FIND_PUBLIC_KEY \
+ (CERT_COMPARE_PUBLIC_KEY << CERT_COMPARE_SHIFT)
+#define CERT_FIND_SUBJECT_NAME \
+ (CERT_COMPARE_NAME << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)
+#define CERT_FIND_SUBJECT_ATTR \
+ (CERT_COMPARE_ATTR << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)
+#define CERT_FIND_ISSUER_NAME \
+ (CERT_COMPARE_NAME << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)
+#define CERT_FIND_ISSUER_ATTR \
+ (CERT_COMPARE_ATTR << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)
+#define CERT_FIND_SUBJECT_STR_A \
+ (CERT_COMPARE_NAME_STR_A << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)
+#define CERT_FIND_SUBJECT_STR_W \
+ (CERT_COMPARE_NAME_STR_W << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)
+#define CERT_FIND_SUBJECT_STR CERT_FIND_SUBJECT_STR_W
+#define CERT_FIND_ISSUER_STR_A \
+ (CERT_COMPARE_NAME_STR_A << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)
+#define CERT_FIND_ISSUER_STR_W \
+ (CERT_COMPARE_NAME_STR_W << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)
+#define CERT_FIND_ISSUER_STR CERT_FIND_ISSUER_STR_W
+#define CERT_FIND_KEY_SPEC \
+ (CERT_COMPARE_KEY_SPEC << CERT_COMPARE_SHIFT)
+#define CERT_FIND_ENHKEY_USAGE \
+ (CERT_COMPARE_ENHKEY_USAGE << CERT_COMPARE_SHIFT)
+#define CERT_FIND_CTL_USAGE CERT_FIND_ENHKEY_USAGE
+#define CERT_FIND_SUBJECT_CERT \
+ (CERT_COMPARE_SUBJECT_CERT << CERT_COMPARE_SHIFT)
+#define CERT_FIND_ISSUER_OF \
+ (CERT_COMPARE_ISSUER_OF << CERT_COMPARE_SHIFT)
+#define CERT_FIND_EXISTING \
+ (CERT_COMPARE_EXISTING << CERT_COMPARE_SHIFT)
+#define CERT_FIND_CERT_ID \
+ (CERT_COMPARE_CERT_ID << CERT_COMPARE_SHIFT)
+#define CERT_FIND_CROSS_CERT_DIST_POINTS \
+ (CERT_COMPARE_CROSS_CERT_DIST_POINTS << CERT_COMPARE_SHIFT)
+#define CERT_FIND_PUBKEY_MD5_HASH \
+ (CERT_COMPARE_PUBKEY_MD5_HASH << CERT_COMPARE_SHIFT)
+
+#define CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG  0x1
+#define CERT_FIND_OPTIONAL_CTL_USAGE_FLAG     0x1
+#define CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG  0x2
+#define CERT_FIND_EXT_ONLY_CTL_USAGE_FLAG     0x2
+#define CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG 0x4
+#define CERT_FIND_PROP_ONLY_CTL_USAGE_FLAG    0x4
+#define CERT_FIND_NO_ENHKEY_USAGE_FLAG        0x8
+#define CERT_FIND_NO_CTL_USAGE_FLAG           0x8
+#define CERT_FIND_OR_ENHKEY_USAGE_FLAG        0x10
+#define CERT_FIND_OR_CTL_USAGE_FLAG           0x10
+#define CERT_FIND_VALID_ENHKEY_USAGE_FLAG     0x20
+#define CERT_FIND_VALID_CTL_USAGE_FLAG        0x20
+
+#define CRL_FIND_ANY        0
+#define CRL_FIND_ISSUED_BY  1
+#define CRL_FIND_EXISTING   2
+#define CRL_FIND_ISSUED_FOR 3
+
+#define CRL_FIND_ISSUED_BY_AKI_FLAG       0x1
+#define CRL_FIND_ISSUED_BY_SIGNATURE_FLAG 0x2
+#define CRL_FIND_ISSUED_BY_DELTA_FLAG     0x4
+#define CRL_FIND_ISSUED_BY_BASE_FLAG      0x8
+
+typedef struct _CRL_FIND_ISSUED_FOR_PARA
+{
+    PCCERT_CONTEXT pSubjectCert;
+    PCCERT_CONTEXT pIssuerCert;
+} CRL_FIND_ISSUED_FOR_PARA, *PCRL_FIND_ISSUED_FOR_PARA;
+
+#define CTL_FIND_ANY       0
+#define CTL_FIND_SHA1_HASH 1
+#define CTL_FIND_MD5_HASH  2
+#define CTL_FIND_USAGE     3
+#define CTL_FIND_SUBJECT   4
+#define CTL_FIND_EXISTING  5
+
+typedef struct _CTL_FIND_USAGE_PARA
+{
+    DWORD           cbSize;
+    CTL_USAGE       SubjectUsage;
+    CRYPT_DATA_BLOB ListIdentifier;
+    PCERT_INFO      pSigner;
+} CTL_FIND_USAGE_PARA, *PCTL_FIND_USAGE_PARA;
+
+#define CTL_FIND_NO_LIST_ID_CBDATA 0xffffffff
+#define CTL_FIND_NO_SIGNER_PTR     ((PCERT_INFO)-1)
+#define CTL_FIND_SAME_USAGE_FLAG   0x00000001
+
+typedef struct _CTL_FIND_SUBJECT_PARA
+{
+    DWORD                cbSize;
+    PCTL_FIND_USAGE_PARA pUsagePara;
+    DWORD                dwSubjectType;
+    void                *pvSubject;
+} CTL_FIND_SUBJECT_PARA, *PCTL_FIND_SUBJECT_PARA;
+
+/* PFN_CERT_STORE_PROV_WRITE_CERT dwFlags values */
+#define CERT_STORE_PROV_WRITE_ADD_FLAG 0x1
+
+/* CertAddSerializedElementToStore context types */
+#define CERT_STORE_CERTIFICATE_CONTEXT 1
+#define CERT_STORE_CRL_CONTEXT         2
+#define CERT_STORE_CTL_CONTEXT         3
+#define CERT_STORE_ALL_CONTEXT_FLAG    ~0U
+#define CERT_STORE_CERTIFICATE_CONTEXT_FLAG \
+                                    (1 << CERT_STORE_CERTIFICATE_CONTEXT)
+#define CERT_STORE_CRL_CONTEXT_FLAG (1 << CERT_STORE_CRL_CONTEXT)
+#define CERT_STORE_CTL_CONTEXT_FLAG (1 << CERT_STORE_CTL_CONTEXT)
+
+/* CryptBinaryToString/CryptStringToBinary flags */
+#define CRYPT_STRING_BASE64HEADER        0x00000000
+#define CRYPT_STRING_BASE64              0x00000001
+#define CRYPT_STRING_BINARY              0x00000002
+#define CRYPT_STRING_BASE64REQUESTHEADER 0x00000003
+#define CRYPT_STRING_HEX                 0x00000004
+#define CRYPT_STRING_HEXASCII            0x00000005
+#define CRYPT_STRING_BASE64_ANY          0x00000006
+#define CRYPT_STRING_ANY                 0x00000007
+#define CRYPT_STRING_HEX_ANY             0x00000008
+#define CRYPT_STRING_BASE64X509CRLHEADER 0x00000009
+#define CRYPT_STRING_HEXADDR             0x0000000a
+#define CRYPT_STRING_HEXASCIIADDR        0x0000000b
+#define CRYPT_STRING_NOCR                0x80000000
+
+/* OIDs */
+#define szOID_RSA                           "1.2.840.113549"
+#define szOID_PKCS                          "1.2.840.113549.1"
+#define szOID_RSA_HASH                      "1.2.840.113549.2"
+#define szOID_RSA_ENCRYPT                   "1.2.840.113549.3"
+#define szOID_PKCS_1                        "1.2.840.113549.1.1"
+#define szOID_PKCS_2                        "1.2.840.113549.1.2"
+#define szOID_PKCS_3                        "1.2.840.113549.1.3"
+#define szOID_PKCS_4                        "1.2.840.113549.1.4"
+#define szOID_PKCS_5                        "1.2.840.113549.1.5"
+#define szOID_PKCS_6                        "1.2.840.113549.1.6"
+#define szOID_PKCS_7                        "1.2.840.113549.1.7"
+#define szOID_PKCS_8                        "1.2.840.113549.1.8"
+#define szOID_PKCS_9                        "1.2.840.113549.1.9"
+#define szOID_PKCS_10                       "1.2.840.113549.1.10"
+#define szOID_PKCS_11                       "1.2.840.113549.1.12"
+#define szOID_RSA_RSA                       "1.2.840.113549.1.1.1"
+#define CERT_RSA_PUBLIC_KEY_OBJID           szOID_RSA_RSA
+#define CERT_DEFAULT_OID_PUBLIC_KEY_SIGN    szOID_RSA_RSA
+#define CERT_DEFAULT_OID_PUBLIC_KEY_XCHG    szOID_RSA_RSA
+#define szOID_RSA_MD2RSA                    "1.2.840.113549.1.1.2"
+#define szOID_RSA_MD4RSA                    "1.2.840.113549.1.1.3"
+#define szOID_RSA_MD5RSA                    "1.2.840.113549.1.1.4"
+#define szOID_RSA_SHA1RSA                   "1.2.840.113549.1.1.5"
+#define szOID_RSA_SET0AEP_RSA               "1.2.840.113549.1.1.6"
+#define szOID_RSA_DH                        "1.2.840.113549.1.3.1"
+#define szOID_RSA_data                      "1.2.840.113549.1.7.1"
+#define szOID_RSA_signedData                "1.2.840.113549.1.7.2"
+#define szOID_RSA_envelopedData             "1.2.840.113549.1.7.3"
+#define szOID_RSA_signEnvData               "1.2.840.113549.1.7.4"
+#define szOID_RSA_digestedData              "1.2.840.113549.1.7.5"
+#define szOID_RSA_hashedData                "1.2.840.113549.1.7.5"
+#define szOID_RSA_encryptedData             "1.2.840.113549.1.7.6"
+#define szOID_RSA_emailAddr                 "1.2.840.113549.1.9.1"
+#define szOID_RSA_unstructName              "1.2.840.113549.1.9.2"
+#define szOID_RSA_contentType               "1.2.840.113549.1.9.3"
+#define szOID_RSA_messageDigest             "1.2.840.113549.1.9.4"
+#define szOID_RSA_signingTime               "1.2.840.113549.1.9.5"
+#define szOID_RSA_counterSign               "1.2.840.113549.1.9.6"
+#define szOID_RSA_challengePwd              "1.2.840.113549.1.9.7"
+#define szOID_RSA_unstructAddr              "1.2.840.113549.1.9.9"
+#define szOID_RSA_extCertAttrs              "1.2.840.113549.1.9.9"
+#define szOID_RSA_certExtensions            "1.2.840.113549.1.9.14"
+#define szOID_RSA_SMIMECapabilities         "1.2.840.113549.1.9.15"
+#define szOID_RSA_preferSignedData          "1.2.840.113549.1.9.15.1"
+#define szOID_RSA_SMIMEalg                  "1.2.840.113549.1.9.16.3"
+#define szOID_RSA_SMIMEalgESDH              "1.2.840.113549.1.9.16.3.5"
+#define szOID_RSA_SMIMEalgCMS3DESwrap       "1.2.840.113549.1.9.16.3.6"
+#define szOID_RSA_SMIMEalgCMSRC2wrap        "1.2.840.113549.1.9.16.3.7"
+#define szOID_RSA_MD2                       "1.2.840.113549.2.2"
+#define szOID_RSA_MD4                       "1.2.840.113549.2.4"
+#define szOID_RSA_MD5                       "1.2.840.113549.2.5"
+#define szOID_RSA_RC2CBC                    "1.2.840.113549.3.2"
+#define szOID_RSA_RC4                       "1.2.840.113549.3.4"
+#define szOID_RSA_DES_EDE3_CBC              "1.2.840.113549.3.7"
+#define szOID_RSA_RC5_CBCPad                "1.2.840.113549.3.9"
+#define szOID_ANSI_X942                     "1.2.840.10046"
+#define szOID_ANSI_X942_DH                  "1.2.840.10046.2.1"
+#define szOID_X957                          "1.2.840.10040"
+#define szOID_X957_DSA                      "1.2.840.10040.4.1"
+#define szOID_X957_SHA1DSA                  "1.2.840.10040.4.3"
+#define szOID_DS                            "2.5"
+#define szOID_DSALG                         "2.5.8"
+#define szOID_DSALG_CRPT                    "2.5.8.1"
+#define szOID_DSALG_HASH                    "2.5.8.2"
+#define szOID_DSALG_SIGN                    "2.5.8.3"
+#define szOID_DSALG_RSA                     "2.5.8.1.1"
+#define szOID_OIW                           "1.3.14"
+#define szOID_OIWSEC                        "1.3.14.3.2"
+#define szOID_OIWSEC_md4RSA                 "1.3.14.3.2.2"
+#define szOID_OIWSEC_md5RSA                 "1.3.14.3.2.3"
+#define szOID_OIWSEC_md4RSA2                "1.3.14.3.2.4"
+#define szOID_OIWSEC_desECB                 "1.3.14.3.2.6"
+#define szOID_OIWSEC_desCBC                 "1.3.14.3.2.7"
+#define szOID_OIWSEC_desOFB                 "1.3.14.3.2.8"
+#define szOID_OIWSEC_desCFB                 "1.3.14.3.2.9"
+#define szOID_OIWSEC_desMAC                 "1.3.14.3.2.10"
+#define szOID_OIWSEC_rsaSign                "1.3.14.3.2.11"
+#define szOID_OIWSEC_dsa                    "1.3.14.3.2.12"
+#define szOID_OIWSEC_shaDSA                 "1.3.14.3.2.13"
+#define szOID_OIWSEC_mdc2RSA                "1.3.14.3.2.14"
+#define szOID_OIWSEC_shaRSA                 "1.3.14.3.2.15"
+#define szOID_OIWSEC_dhCommMod              "1.3.14.3.2.16"
+#define szOID_OIWSEC_desEDE                 "1.3.14.3.2.17"
+#define szOID_OIWSEC_sha                    "1.3.14.3.2.18"
+#define szOID_OIWSEC_mdc2                   "1.3.14.3.2.19"
+#define szOID_OIWSEC_dsaComm                "1.3.14.3.2.20"
+#define szOID_OIWSEC_dsaCommSHA             "1.3.14.3.2.21"
+#define szOID_OIWSEC_rsaXchg                "1.3.14.3.2.22"
+#define szOID_OIWSEC_keyHashSeal            "1.3.14.3.2.23"
+#define szOID_OIWSEC_md2RSASign             "1.3.14.3.2.24"
+#define szOID_OIWSEC_md5RSASign             "1.3.14.3.2.25"
+#define szOID_OIWSEC_sha1                   "1.3.14.3.2.26"
+#define szOID_OIWSEC_dsaSHA1                "1.3.14.3.2.27"
+#define szOID_OIWSEC_dsaCommSHA1            "1.3.14.3.2.28"
+#define szOID_OIWSEC_sha1RSASign            "1.3.14.3.2.29"
+#define szOID_OIWDIR                        "1.3.14.7.2"
+#define szOID_OIWDIR_CRPT                   "1.3.14.7.2.1"
+#define szOID_OIWDIR_HASH                   "1.3.14.7.2.2"
+#define szOID_OIWDIR_SIGN                   "1.3.14.7.2.3"
+#define szOID_OIWDIR_md2                    "1.3.14.7.2.2.1"
+#define szOID_OIWDIR_md2RSA                 "1.3.14.7.2.3.1"
+#define szOID_INFOSEC                       "2.16.840.1.101.2.1"
+#define szOID_INFOSEC_sdnsSignature         "2.16.840.1.101.2.1.1.1"
+#define szOID_INFOSEC_mosaicSignature       "2.16.840.1.101.2.1.1.2"
+#define szOID_INFOSEC_sdnsConfidentiality   "2.16.840.1.101.2.1.1.3"
+#define szOID_INFOSEC_mosaicConfidentiality "2.16.840.1.101.2.1.1.4"
+#define szOID_INFOSEC_sdnsIntegrity         "2.16.840.1.101.2.1.1.5"
+#define szOID_INFOSEC_mosaicIntegrity       "2.16.840.1.101.2.1.1.6"
+#define szOID_INFOSEC_sdnsTokenProtection   "2.16.840.1.101.2.1.1.7"
+#define szOID_INFOSEC_mosaicTokenProtection "2.16.840.1.101.2.1.1.8"
+#define szOID_INFOSEC_sdnsKeyManagement     "2.16.840.1.101.2.1.1.9"
+#define szOID_INFOSEC_mosaicKeyManagement   "2.16.840.1.101.2.1.1.10"
+#define szOID_INFOSEC_sdnsKMandSig          "2.16.840.1.101.2.1.1.11"
+#define szOID_INFOSEC_mosaicKMandSig        "2.16.840.1.101.2.1.1.12"
+#define szOID_INFOSEC_SuiteASignature       "2.16.840.1.101.2.1.1.13"
+#define szOID_INFOSEC_SuiteAConfidentiality "2.16.840.1.101.2.1.1.14"
+#define szOID_INFOSEC_SuiteAIntegrity       "2.16.840.1.101.2.1.1.15"
+#define szOID_INFOSEC_SuiteATokenProtection "2.16.840.1.101.2.1.1.16"
+#define szOID_INFOSEC_SuiteAKeyManagement   "2.16.840.1.101.2.1.1.17"
+#define szOID_INFOSEC_SuiteAKMandSig        "2.16.840.1.101.2.1.1.18"
+#define szOID_INFOSEC_mosaicUpdatedSig      "2.16.840.1.101.2.1.1.19"
+#define szOID_INFOSEC_mosaicKMandUpdSig     "2.16.840.1.101.2.1.1.20"
+#define szOID_INFOSEC_mosaicUpdateInteg     "2.16.840.1.101.2.1.1.21"
+#define szOID_COMMON_NAME                   "2.5.4.3"
+#define szOID_SUR_NAME                      "2.5.4.4"
+#define szOID_DEVICE_SERIAL_NUMBER          "2.5.4.5"
+#define szOID_COUNTRY_NAME                  "2.5.4.6"
+#define szOID_LOCALITY_NAME                 "2.5.4.7"
+#define szOID_STATE_OR_PROVINCE_NAME        "2.5.4.8"
+#define szOID_STREET_ADDRESS                "2.5.4.9"
+#define szOID_ORGANIZATION_NAME             "2.5.4.10"
+#define szOID_ORGANIZATIONAL_UNIT_NAME      "2.5.4.11"
+#define szOID_TITLE                         "2.5.4.12"
+#define szOID_DESCRIPTION                   "2.5.4.13"
+#define szOID_SEARCH_GUIDE                  "2.5.4.14"
+#define szOID_BUSINESS_CATEGORY             "2.5.4.15"
+#define szOID_POSTAL_ADDRESS                "2.5.4.16"
+#define szOID_POSTAL_CODE                   "2.5.4.17"
+#define szOID_POST_OFFICE_BOX               "2.5.4.18"
+#define szOID_PHYSICAL_DELIVERY_OFFICE_NAME "2.5.4.19"
+#define szOID_TELEPHONE_NUMBER              "2.5.4.20"
+#define szOID_TELEX_NUMBER                  "2.5.4.21"
+#define szOID_TELETEXT_TERMINAL_IDENTIFIER  "2.5.4.22"
+#define szOID_FACSIMILE_TELEPHONE_NUMBER    "2.5.4.23"
+#define szOID_X21_ADDRESS                   "2.5.4.24"
+#define szOID_INTERNATIONAL_ISDN_NUMBER     "2.5.4.25"
+#define szOID_REGISTERED_ADDRESS            "2.5.4.26"
+#define szOID_DESTINATION_INDICATOR         "2.5.4.27"
+#define szOID_PREFERRED_DELIVERY_METHOD     "2.5.4.28"
+#define szOID_PRESENTATION_ADDRESS          "2.5.4.29"
+#define szOID_SUPPORTED_APPLICATION_CONTEXT "2.5.4.30"
+#define szOID_MEMBER                        "2.5.4.31"
+#define szOID_OWNER                         "2.5.4.32"
+#define szOID_ROLE_OCCUPANT                 "2.5.4.33"
+#define szOID_SEE_ALSO                      "2.5.4.34"
+#define szOID_USER_PASSWORD                 "2.5.4.35"
+#define szOID_USER_CERTIFICATE              "2.5.4.36"
+#define szOID_CA_CERTIFICATE                "2.5.4.37"
+#define szOID_AUTHORITY_REVOCATION_LIST     "2.5.4.38"
+#define szOID_CERTIFICATE_REVOCATION_LIST   "2.5.4.39"
+#define szOID_CROSS_CERTIFICATE_PAIR        "2.5.4.40"
+#define szOID_GIVEN_NAME                    "2.5.4.42"
+#define szOID_INITIALS                      "2.5.4.43"
+#define szOID_DN_QUALIFIER                  "2.5.4.46"
+#define szOID_AUTHORITY_KEY_IDENTIFIER      "2.5.29.1"
+#define szOID_KEY_ATTRIBUTES                "2.5.29.2"
+#define szOID_CERT_POLICIES_95              "2.5.29.3"
+#define szOID_KEY_USAGE_RESTRICTION         "2.5.29.4"
+#define szOID_LEGACY_POLICY_MAPPINGS        "2.5.29.5"
+#define szOID_SUBJECT_ALT_NAME              "2.5.29.7"
+#define szOID_ISSUER_ALT_NAME               "2.5.29.8"
+#define szOID_SUBJECT_DIR_ATTRS             "2.5.29.9"
+#define szOID_BASIC_CONSTRAINTS             "2.5.29.10"
+#define szOID_SUBJECT_KEY_IDENTIFIER        "2.5.29.14"
+#define szOID_KEY_USAGE                     "2.5.29.15"
+#define szOID_PRIVATEKEY_USAGE_PERIOD       "2.5.29.16"
+#define szOID_SUBJECT_ALT_NAME2             "2.5.29.17"
+#define szOID_ISSUER_ALT_NAME2              "2.5.29.18"
+#define szOID_BASIC_CONSTRAINTS2            "2.5.29.19"
+#define szOID_CRL_NUMBER                    "2.5.29.20"
+#define szOID_CRL_REASON_CODE               "2.5.29.21"
+#define szOID_REASON_CODE_HOLD              "2.5.29.23"
+#define szOID_DELTA_CRL_INDICATOR           "2.5.29.27"
+#define szOID_ISSUING_DIST_POINT            "2.5.29.28"
+#define szOID_NAME_CONSTRAINTS              "2.5.29.30"
+#define szOID_CRL_DIST_POINTS               "2.5.29.31"
+#define szOID_CERT_POLICIES                 "2.5.29.32"
+#define szOID_ANY_CERT_POLICY               "2.5.29.32.0"
+#define szOID_POLICY_MAPPINGS               "2.5.29.33"
+#define szOID_AUTHORITY_KEY_IDENTIFIER2     "2.5.29.35"
+#define szOID_POLICY_CONSTRAINTS            "2.5.29.36"
+#define szOID_ENHANCED_KEY_USAGE            "2.5.29.37"
+#define szOID_FRESHEST_CRL                  "2.5.29.46"
+#define szOID_DOMAIN_COMPONENT              "0.9.2342.19200300.100.1.25"
+#define szOID_PKCS_12_FRIENDLY_NAME_ATTR     "1.2.840.113549.1.9.20"
+#define szOID_PKCS_12_LOCAL_KEY_ID           "1.2.840.113549.1.9.21"
+#define szOID_CERT_EXTENSIONS                "1.3.6.1.4.1.311.2.1.14"
+#define szOID_NEXT_UPDATE_LOCATION           "1.3.6.1.4.1.311.10.2"
+#define szOID_KP_CTL_USAGE_SIGNING           "1.3.6.1.4.1.311.10.3.1"
+#define szOID_KP_TIME_STAMP_SIGNING          "1.3.6.1.4.1.311.10.3.2"
+#ifndef szOID_SERVER_GATED_CRYPTO
+#define szOID_SERVER_GATED_CRYPTO            "1.3.6.1.4.1.311.10.3.3"
+#endif
+#ifndef szOID_SGC_NETSCAPE
+#define szOID_SGC_NETSCAPE                   "2.16.840.1.113730.4.1"
+#endif
+#define szOID_KP_EFS                         "1.3.6.1.4.1.311.10.3.4"
+#define szOID_EFS_RECOVERY                   "1.3.6.1.4.1.311.10.3.4.1"
+#define szOID_WHQL_CRYPTO                    "1.3.6.1.4.1.311.10.3.5"
+#define szOID_NT5_CRYPTO                     "1.3.6.1.4.1.311.10.3.6"
+#define szOID_OEM_WHQL_CRYPTO                "1.3.6.1.4.1.311.10.3.7"
+#define szOID_EMBEDDED_NT_CRYPTO             "1.3.6.1.4.1.311.10.3.8"
+#define szOID_ROOT_LIST_SIGNER               "1.3.6.1.4.1.311.10.3.9"
+#define szOID_KP_QUALIFIED_SUBORDINATION     "1.3.6.1.4.1.311.10.3.10"
+#define szOID_KP_KEY_RECOVERY                "1.3.6.1.4.1.311.10.3.11"
+#define szOID_KP_DOCUMENT_SIGNING            "1.3.6.1.4.1.311.10.3.12"
+#define szOID_KP_LIFETIME_SIGNING            "1.3.6.1.4.1.311.10.3.13"
+#define szOID_KP_MOBILE_DEVICE_SOFTWARE      "1.3.6.1.4.1.311.10.3.14"
+#define szOID_YESNO_TRUST_ATTR               "1.3.6.1.4.1.311.10.4.1"
+#ifndef szOID_DRM
+#define szOID_DRM                            "1.3.6.1.4.1.311.10.5.1"
+#endif
+#ifndef szOID_DRM_INDIVIDUALIZATION
+#define szOID_DRM_INDIVIDUALIZATION          "1.3.6.1.4.1.311.10.5.2"
+#endif
+#ifndef szOID_LICENSES
+#define szOID_LICENSES                       "1.3.6.1.4.1.311.10.6.1"
+#endif
+#ifndef szOID_LICENSE_SERVER
+#define szOID_LICENSE_SERVER                 "1.3.6.1.4.1.311.10.6.2"
+#endif
+#define szOID_REMOVE_CERTIFICATE             "1.3.6.1.4.1.311.10.8.1"
+#define szOID_CROSS_CERT_DIST_POINTS         "1.3.6.1.4.1.311.10.9.1"
+#define szOID_CTL                            "1.3.6.1.4.1.311.10.1"
+#define szOID_SORTED_CTL                     "1.3.6.1.4.1.311.10.1.1"
+#define szOID_ANY_APPLICATION_POLICY         "1.3.6.1.4.1.311.10.12.1"
+#define szOID_RENEWAL_CERTIFICATE            "1.3.6.1.4.1.311.13.1"
+#define szOID_ENROLLMENT_NAME_VALUE_PAIR     "1.3.6.1.4.1.311.13.2.1"
+#define szOID_ENROLLMENT_CSP_PROVIDER        "1.3.6.1.4.1.311.13.2.2"
+#define szOID_OS_VERSION                     "1.3.6.1.4.1.311.13.2.3"
+#define szOID_PKCS_12_KEY_PROVIDER_NAME_ATTR "1.3.6.1.4.1.311.17.1"
+#define szOID_LOCAL_MACHINE_KEYSET           "1.3.6.1.4.1.311.17.2"
+#define szOID_AUTO_ENROLL_CTL_USAGE          "1.3.6.1.4.1.311.20.1"
+#define szOID_ENROLL_CERTTYPE_EXTENSION      "1.3.6.1.4.1.311.20.2"
+#define szOID_ENROLLMENT_AGENT               "1.3.6.1.4.1.311.20.2.1"
+#define szOID_KP_SMARTCARD_LOGON             "1.3.6.1.4.1.311.20.2.2"
+#define szOID_CERT_MANIFOLD                  "1.3.6.1.4.1.311.20.3"
+#ifndef szOID_CERTSRV_CA_VERSION
+#define szOID_CERTSRV_CA_VERSION             "1.3.6.1.4.1.311.21.1"
+#endif
+#define szOID_CERTSRV_PREVIOUS_CERT_HASH     "1.3.6.1.4.1.311.21.2"
+#define szOID_CRL_VIRTUAL_BASE               "1.3.6.1.4.1.311.21.3"
+#define szOID_CRL_NEXT_PUBLISH               "1.3.6.1.4.1.311.21.4"
+#define szOID_KP_CA_EXCHANGE                 "1.3.6.1.4.1.311.21.5"
+#define szOID_KP_KEY_RECOVERY_AGENT          "1.3.6.1.4.1.311.21.6"
+#define szOID_CERTIFICATE_TEMPLATE           "1.3.6.1.4.1.311.21.7"
+#define szOID_ENTERPRISE_OID_ROOT            "1.3.6.1.4.1.311.21.8"
+#define szOID_RDN_DUMMY_SIGNER               "1.3.6.1.4.1.311.21.9"
+#define szOID_APPLICATION_CERT_POLICIES      "1.3.6.1.4.1.311.21.10"
+#define szOID_APPLICATION_POLICY_MAPPINGS    "1.3.6.1.4.1.311.21.11"
+#define szOID_APPLICATION_POLICY_CONSTRAINTS "1.3.6.1.4.1.311.21.12"
+#define szOID_ARCHIVED_KEY_ATTR              "1.3.6.1.4.1.311.21.13"
+#define szOID_CRL_SELF_CDP                   "1.3.6.1.4.1.311.21.14"
+#define szOID_REQUIRE_CERT_CHAIN_POLICY      "1.3.6.1.4.1.311.21.15"
+#define szOID_ARCHIVED_KEY_CERT_HASH         "1.3.6.1.4.1.311.21.16"
+#define szOID_ISSUED_CERT_HASH               "1.3.6.1.4.1.311.21.17"
+#define szOID_DS_EMAIL_REPLICATION           "1.3.6.1.4.1.311.21.19"
+#define szOID_REQUEST_CLIENT_INFO            "1.3.6.1.4.1.311.21.20"
+#define szOID_ENCRYPTED_KEY_HASH             "1.3.6.1.4.1.311.21.21"
+#define szOID_CERTSRV_CROSSCA_VERSION        "1.3.6.1.4.1.311.21.22"
+#define szOID_KEYID_RDN                      "1.3.6.1.4.1.311.10.7.1"
+#define szOID_PKIX                           "1.3.6.1.5.5.7"
+#define szOID_PKIX_PE                        "1.3.6.1.5.5.7.1"
+#define szOID_AUTHORITY_INFO_ACCESS          "1.3.6.1.5.5.7.1.1"
+#define szOID_PKIX_POLICY_QUALIFIER_CPS      "1.3.6.1.5.5.7.2.1"
+#define szOID_PKIX_POLICY_QUALIFIER_USERNOTICE "1.3.6.1.5.5.7.2.2"
+#define szOID_PKIX_KP                        "1.3.6.1.5.5.7.3"
+#define szOID_PKIX_KP_SERVER_AUTH            "1.3.6.1.5.5.7.3.1"
+#define szOID_PKIX_KP_CLIENT_AUTH            "1.3.6.1.5.5.7.3.2"
+#define szOID_PKIX_KP_CODE_SIGNING           "1.3.6.1.5.5.7.3.3"
+#define szOID_PKIX_KP_EMAIL_PROTECTION       "1.3.6.1.5.5.7.3.4"
+#define szOID_PKIX_KP_IPSEC_END_SYSTEM       "1.3.6.1.5.5.7.3.5"
+#define szOID_PKIX_KP_IPSEC_TUNNEL           "1.3.6.1.5.5.7.3.6"
+#define szOID_PKIX_KP_IPSEC_USER             "1.3.6.1.5.5.7.3.7"
+#define szOID_PKIX_KP_TIMESTAMP_SIGNING      "1.3.6.1.5.5.7.3.8"
+#define szOID_PKIX_NO_SIGNATURE              "1.3.6.1.5.5.7.6.2"
+#define szOID_CMC                            "1.3.6.1.5.5.7.7"
+#define szOID_CMC_STATUS_INFO                "1.3.6.1.5.5.7.7.1"
+#define szOID_CMC_IDENTIFICATION             "1.3.6.1.5.5.7.7.2"
+#define szOID_CMC_IDENTITY_PROOF             "1.3.6.1.5.5.7.7.3"
+#define szOID_CMC_DATA_RETURN                "1.3.6.1.5.5.7.7.4"
+#define szOID_CMC_TRANSACTION_ID             "1.3.6.1.5.5.7.7.5"
+#define szOID_CMC_SENDER_NONCE               "1.3.6.1.5.5.7.7.6"
+#define szOID_CMC_RECIPIENT_NONCE            "1.3.6.1.5.5.7.7.7"
+#define szOID_CMC_ADD_EXTENSIONS             "1.3.6.1.5.5.7.7.8"
+#define szOID_CMC_ENCRYPTED_POP              "1.3.6.1.5.5.7.7.9"
+#define szOID_CMC_DECRYPTED_POP              "1.3.6.1.5.5.7.7.10"
+#define szOID_CMC_LRA_POP_WITNESS            "1.3.6.1.5.5.7.7.11"
+#define szOID_CMC_GET_CERT                   "1.3.6.1.5.5.7.7.15"
+#define szOID_CMC_GET_CRL                    "1.3.6.1.5.5.7.7.16"
+#define szOID_CMC_REVOKE_REQUEST             "1.3.6.1.5.5.7.7.17"
+#define szOID_CMC_REG_INFO                   "1.3.6.1.5.5.7.7.18"
+#define szOID_CMC_RESPONSE_INFO              "1.3.6.1.5.5.7.7.19"
+#define szOID_CMC_QUERY_PENDING              "1.3.6.1.5.5.7.7.21"
+#define szOID_CMC_ID_POP_LINK_RANDOM         "1.3.6.1.5.5.7.7.22"
+#define szOID_CMC_ID_POP_LINK_WITNESS        "1.3.6.1.5.5.7.7.23"
+#define szOID_CT_PKI_DATA                    "1.3.6.1.5.5.7.12.2"
+#define szOID_CT_PKI_RESPONSE                "1.3.6.1.5.5.7.12.3"
+#define szOID_PKIX_ACC_DESCR                 "1.3.6.1.5.5.7.48"
+#define szOID_PKIX_OCSP                      "1.3.6.1.5.5.7.48.1"
+#define szOID_PKIX_CA_ISSUERS                "1.3.6.1.5.5.7.48.2"
+#define szOID_IPSEC_KP_IKE_INTERMEDIATE      "1.3.6.1.5.5.8.2.2"
+
+#ifndef szOID_SERIALIZED
+#define szOID_SERIALIZED                     "1.3.6.1.4.1.311.10.3.3.1"
+#endif
+
+#define szOID_AUTO_ENROLL_CTL_USAGE          "1.3.6.1.4.1.311.20.1"
+#define szOID_ENROLL_CERTTYPE_EXTENSION      "1.3.6.1.4.1.311.20.2"
+#define szOID_ENROLLMENT_AGENT               "1.3.6.1.4.1.311.20.2.1"
+#ifndef szOID_KP_SMARTCARD_LOGON
+#define szOID_KP_SMARTCARD_LOGON             "1.3.6.1.4.1.311.20.2.2"
+#endif
+#ifndef szOID_NT_PRINCIPAL_NAME
+#define szOID_NT_PRINCIPAL_NAME              "1.3.6.1.4.1.311.20.2.3"
+#endif
+#define szOID_CERT_MANIFOLD                  "1.3.6.1.4.1.311.20.3"
+
+#ifndef szOID_CERTSRV_CA_VERSION
+#define szOID_CERTSRV_CA_VERSION             "1.3.6.1.4.1.311.21.1"
+#endif
+
+#ifndef szOID_PRODUCT_UPDATE
+#define szOID_PRODUCT_UPDATE                 "1.3.6.1.4.1.311.31.1"
+#endif
+
+#define szOID_NETSCAPE                       "2.16.840.1.113730"
+#define szOID_NETSCAPE_CERT_EXTENSION        "2.16.840.1.113730.1"
+#define szOID_NETSCAPE_CERT_TYPE             "2.16.840.1.113730.1.1"
+#define szOID_NETSCAPE_BASE_URL              "2.16.840.1.113730.1.2"
+#define szOID_NETSCAPE_REVOCATION_URL        "2.16.840.1.113730.1.3"
+#define szOID_NETSCAPE_CA_REVOCATION_URL     "2.16.840.1.113730.1.4"
+#define szOID_NETSCAPE_CERT_RENEWAL_URL      "2.16.840.1.113730.1.7"
+#define szOID_NETSCAPE_CA_POLICY_URL         "2.16.840.1.113730.1.8"
+#define szOID_NETSCAPE_SSL_SERVER_NAME       "2.16.840.1.113730.1.12"
+#define szOID_NETSCAPE_COMMENT               "2.16.840.1.113730.1.13"
+#define szOID_NETSCAPE_DATA_TYPE             "2.16.840.1.113730.2"
+#define szOID_NETSCAPE_CERT_SEQUENCE         "2.16.840.1.113730.2.5"
+
+/* Bits for szOID_NETSCAPE_CERT_TYPE */
+#define NETSCAPE_SSL_CLIENT_AUTH_CERT_TYPE 0x80
+#define NETSCAPE_SSL_SERVER_AUTH_CERT_TYPE 0x40
+#define NETSCAPE_SMIME_CERT_TYPE           0x20
+#define NETSCAPE_SIGN_CERT_TYPE            0x10
+#define NETSCAPE_SSL_CA_CERT_TYPE          0x04
+#define NETSCAPE_SMIME_CA_CERT_TYPE        0x02
+#define NETSCAPE_SIGN_CA_CERT_TYPE         0x01
+
+#define CRYPT_ENCODE_DECODE_NONE             0
+#define X509_CERT                            ((LPCSTR)1)
+#define X509_CERT_TO_BE_SIGNED               ((LPCSTR)2)
+#define X509_CERT_CRL_TO_BE_SIGNED           ((LPCSTR)3)
+#define X509_CERT_REQUEST_TO_BE_SIGNED       ((LPCSTR)4)
+#define X509_EXTENSIONS                      ((LPCSTR)5)
+#define X509_NAME_VALUE                      ((LPCSTR)6)
+#define X509_ANY_STRING                      X509_NAME_VALUE
+#define X509_NAME                            ((LPCSTR)7)
+#define X509_PUBLIC_KEY_INFO                 ((LPCSTR)8)
+#define X509_AUTHORITY_KEY_ID                ((LPCSTR)9)
+#define X509_KEY_ATTRIBUTES                  ((LPCSTR)10)
+#define X509_KEY_USAGE_RESTRICTION           ((LPCSTR)11)
+#define X509_ALTERNATE_NAME                  ((LPCSTR)12)
+#define X509_BASIC_CONSTRAINTS               ((LPCSTR)13)
+#define X509_KEY_USAGE                       ((LPCSTR)14)
+#define X509_BASIC_CONSTRAINTS2              ((LPCSTR)15)
+#define X509_CERT_POLICIES                   ((LPCSTR)16)
+#define PKCS_UTC_TIME                        ((LPCSTR)17)
+#define PKCS_TIME_REQUEST                    ((LPCSTR)18)
+#define RSA_CSP_PUBLICKEYBLOB                ((LPCSTR)19)
+#define X509_UNICODE_NAME                    ((LPCSTR)20)
+#define X509_KEYGEN_REQUEST_TO_BE_SIGNED     ((LPCSTR)21)
+#define PKCS_ATTRIBUTE                       ((LPCSTR)22)
+#define PKCS_CONTENT_INFO_SEQUENCE_OF_ANY    ((LPCSTR)23)
+#define X509_UNICODE_NAME_VALUE              ((LPCSTR)24)
+#define X509_UNICODE_ANY_STRING              X509_UNICODE_NAME_VALUE
+#define X509_OCTET_STRING                    ((LPCSTR)25)
+#define X509_BITS                            ((LPCSTR)26)
+#define X509_INTEGER                         ((LPCSTR)27)
+#define X509_MULTI_BYTE_INTEGER              ((LPCSTR)28)
+#define X509_ENUMERATED                      ((LPCSTR)29)
+#define X509_CRL_REASON_CODE                 X509_ENUMERATED
+#define X509_CHOICE_OF_TIME                  ((LPCSTR)30)
+#define X509_AUTHORITY_KEY_ID2               ((LPCSTR)31)
+#define X509_AUTHORITY_INFO_ACCESS           ((LPCSTR)32)
+#define PKCS_CONTENT_INFO                    ((LPCSTR)33)
+#define X509_SEQUENCE_OF_ANY                 ((LPCSTR)34)
+#define X509_CRL_DIST_POINTS                 ((LPCSTR)35)
+#define X509_ENHANCED_KEY_USAGE              ((LPCSTR)36)
+#define PKCS_CTL                             ((LPCSTR)37)
+#define X509_MULTI_BYTE_UINT                 ((LPCSTR)38)
+#define X509_DSS_PUBLICKEY                   X509_MULTI_BYTE_UINT
+#define X509_DSS_PARAMETERS                  ((LPCSTR)39)
+#define X509_DSS_SIGNATURE                   ((LPCSTR)40)
+#define PKCS_RC2_CBC_PARAMETERS              ((LPCSTR)41)
+#define PKCS_SMIME_CAPABILITIES              ((LPCSTR)42)
+#define PKCS_RSA_PRIVATE_KEY                 ((LPCSTR)43)
+#define PKCS_PRIVATE_KEY_INFO                ((LPCSTR)44)
+#define PKCS_ENCRYPTED_PRIVATE_KEY_INFO      ((LPCSTR)45)
+#define X509_PKIX_POLICY_QUALIFIER_USERNOTICE ((LPCSTR)46)
+#define X509_DH_PUBLICKEY                    X509_MULTI_BYTE_UINT
+#define X509_DH_PARAMETERS                   ((LPCSTR)47)
+#define PKCS_ATTRIBUTES                      ((LPCSTR)48)
+#define PKCS_SORTED_CTL                      ((LPCSTR)49)
+#define X942_DH_PARAMETERS                   ((LPCSTR)50)
+#define X509_BITS_WITHOUT_TRAILING_ZEROES    ((LPCSTR)51)
+#define X942_OTHER_INFO                      ((LPCSTR)52)
+#define X509_CERT_PAIR                       ((LPCSTR)53)
+#define X509_ISSUING_DIST_POINT              ((LPCSTR)54)
+#define X509_NAME_CONSTRAINTS                ((LPCSTR)55)
+#define X509_POLICY_MAPPINGS                 ((LPCSTR)56)
+#define X509_POLICY_CONSTRAINTS              ((LPCSTR)57)
+#define X509_CROSS_CERT_DIST_POINTS          ((LPCSTR)58)
+#define CMC_DATA                             ((LPCSTR)59)
+#define CMC_RESPONSE                         ((LPCSTR)60)
+#define CMC_STATUS                           ((LPCSTR)61)
+#define CMC_ADD_EXTENSIONS                   ((LPCSTR)62)
+#define CMC_ADD_ATTRIBUTES                   ((LPCSTR)63)
+#define X509_CERTIFICATE_TEMPLATE            ((LPCSTR)64)
+#define PKCS7_SIGNER_INFO                    ((LPCSTR)500)
+#define CMS_SIGNER_INFO                      ((LPCSTR)501)
+
+/* encode/decode flags */
+#define CRYPT_ENCODE_NO_SIGNATURE_BYTE_REVERSAL_FLAG           0x00008
+#define CRYPT_ENCODE_ALLOC_FLAG                                0x08000
+#define CRYPT_SORTED_CTL_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAG 0x10000
+#define CRYPT_UNICODE_NAME_ENCODE_ENABLE_T61_UNICODE_FLAG \
+ CERT_RDN_ENABLE_T61_UNICODE_FLAG
+#define CRYPT_UNICODE_NAME_ENCODE_ENABLE_UTF8_UNICODE_FLAG \
+ CERT_RDN_ENABLE_UTF8_UNICODE_FLAG
+#define CRYPT_UNICODE_NAME_ENCODE_DISABLE_CHECK_TYPE_FLAG \
+ CERT_RDN_DISABLE_CHECK_TYPE_FLAG
+
+#define CRYPT_DECODE_NOCOPY_FLAG                               0x00001
+#define CRYPT_DECODE_TO_BE_SIGNED_FLAG                         0x00002
+#define CRYPT_DECODE_SHARE_OID_STRING_FLAG                     0x00004
+#define CRYPT_DECODE_NO_SIGNATURE_BYTE_REVERSAL_FLAG           0x00008
+#define CRYPT_DECODE_ALLOC_FLAG                                0x08000
+#define CRYPT_UNICODE_NAME_DECODE_DISABLE_IE4_UTF8_FLAG \
+ CERT_RDN_DISABLE_IE4_UTF8_FLAG
+
+#define CERT_STORE_SIGNATURE_FLAG     0x00000001
+#define CERT_STORE_TIME_VALIDITY_FLAG 0x00000002
+#define CERT_STORE_REVOCATION_FLAG    0x00000004
+#define CERT_STORE_NO_CRL_FLAG        0x00010000
+#define CERT_STORE_NO_ISSUER_FLAG     0x00020000
+
+#define CERT_STORE_BASE_CRL_FLAG  0x00000100
+#define CERT_STORE_DELTA_CRL_FLAG 0x00000200
+
+/* subject types for CryptVerifyCertificateSignatureEx */
+#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_BLOB 1
+#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_CERT 2
+#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_CRL  3
+
+/* issuer types for CryptVerifyCertificateSignatureEx */
+#define CRYPT_VERIFY_CERT_SIGN_ISSUER_PUBKEY 1
+#define CRYPT_VERIFY_CERT_SIGN_ISSUER_CERT   2
+#define CRYPT_VERIFY_CERT_SIGN_ISSUER_CHAIN  3
+#define CRYPT_VERIFY_CERT_SIGN_ISSUER_NULL   4
+
+#define CRYPT_GET_URL_FROM_PROPERTY         0x00000001
+#define CRYPT_GET_URL_FROM_EXTENSION        0x00000002
+#define CRYPT_GET_URL_FROM_UNAUTH_ATTRIBUTE 0x00000004
+#define CRYPT_GET_URL_FROM_AUTH_ATTRIBUTE   0x00000008
+
+/* Certificate name string types and flags */
+#define CERT_SIMPLE_NAME_STR 1
+#define CERT_OID_NAME_STR    2
+#define CERT_X500_NAME_STR   3
+#define CERT_NAME_STR_SEMICOLON_FLAG           0x40000000
+#define CERT_NAME_STR_NO_PLUS_FLAG             0x20000000
+#define CERT_NAME_STR_NO_QUOTING_FLAG          0x10000000
+#define CERT_NAME_STR_CRLF_FLAG                0x08000000
+#define CERT_NAME_STR_COMMA_FLAG               0x04000000
+#define CERT_NAME_STR_REVERSE_FLAG             0x02000000
+#define CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG 0x00040000
+#define CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG  0x00020000
+#define CERT_NAME_STR_DISABLE_IE4_UTF8_FLAG    0x00010000
+
+#define CERT_NAME_EMAIL_TYPE            1
+#define CERT_NAME_RDN_TYPE              2
+#define CERT_NAME_ATTR_TYPE             3
+#define CERT_NAME_SIMPLE_DISPLAY_TYPE   4
+#define CERT_NAME_FRIENDLY_DISPLAY_TYPE 5
+#define CERT_NAME_DNS_TYPE              6
+#define CERT_NAME_URL_TYPE              7
+#define CERT_NAME_UPN_TYPE              8
+
+#define CERT_NAME_ISSUER_FLAG           0x00000001
+#define CERT_NAME_DISABLE_IE4_UTF8_FLAG 0x00010000
+
+/* CryptFormatObject flags */
+#define CRYPT_FORMAT_STR_MULTI_LINE 0x0001
+#define CRYPT_FORMAT_STR_NO_HEX     0x0010
+
+#define CRYPT_FORMAT_SIMPLE        0x0001
+#define CRYPT_FORMAT_X509          0x0002
+#define CRYPT_FORMAT_OID           0x0004
+#define CRYPT_FORMAT_RDN_SEMICOLON 0x0100
+#define CRYPT_FORMAT_RDN_CRLF      0x0200
+#define CRYPT_FORMAT_RDN_UNQUOTE   0x0400
+#define CRYPT_FORMAT_RDN_REVERSE   0x0800
+
+#define CRYPT_FORMAT_COMMA     0x1000
+#define CRYPT_FORMAT_SEMICOLON CRYPT_FORMAT_RDN_SEMICOLON
+#define CRYPT_FORMAT_CRLF      CRYPT_FORMAT_RDN_CRLF
+
+/* CryptQueryObject types and flags */
+#define CERT_QUERY_OBJECT_FILE 1
+#define CERT_QUERY_OBJECT_BLOB 2
+
+#define CERT_QUERY_CONTENT_CERT               1
+#define CERT_QUERY_CONTENT_CTL                2
+#define CERT_QUERY_CONTENT_CRL                3
+#define CERT_QUERY_CONTENT_SERIALIZED_STORE   4
+#define CERT_QUERY_CONTENT_SERIALIZED_CERT    5
+#define CERT_QUERY_CONTENT_SERIALIZED_CTL     6
+#define CERT_QUERY_CONTENT_SERIALIZED_CRL     7
+#define CERT_QUERY_CONTENT_PKCS7_SIGNED       8
+#define CERT_QUERY_CONTENT_PKCS7_UNSIGNED     9
+#define CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED 10
+#define CERT_QUERY_CONTENT_PKCS10             11
+#define CERT_QUERY_CONTENT_PFX                12
+#define CERT_QUERY_CONTENT_CERT_PAIR          13
+
+#define CERT_QUERY_CONTENT_FLAG_CERT      (1 << CERT_QUERY_CONTENT_CERT)
+#define CERT_QUERY_CONTENT_FLAG_CTL       (1 << CERT_QUERY_CONTENT_CTL)
+#define CERT_QUERY_CONTENT_FLAG_CRL       (1 << CERT_QUERY_CONTENT_CRL)
+#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE \
+ (1 << CERT_QUERY_CONTENT_SERIALIZED_STORE)
+#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT \
+ (1 << CERT_QUERY_CONTENT_SERIALIZED_CERT)
+#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL \
+ (1 << CERT_QUERY_CONTENT_SERIALIZED_CTL)
+#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL \
+ (1 << CERT_QUERY_CONTENT_SERIALIZED_CRL)
+#define CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED \
+ (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED)
+#define CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED \
+ (1 << CERT_QUERY_CONTENT_PKCS7_UNSIGNED)
+#define CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED \
+ (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED)
+#define CERT_QUERY_CONTENT_FLAG_PKCS10    (1 << CERT_QUERY_CONTENT_PKCS10)
+#define CERT_QUERY_CONTENT_FLAG_PFX       (1 << CERT_QUERY_CONTENT_PFX)
+#define CERT_QUERY_CONTENT_FLAG_CERT_PAIR (1 << CERT_QUERY_CONTENT_CERT_PAIR)
+
+#define CERT_QUERY_CONTENT_FLAG_ALL \
+ CERT_QUERY_CONTENT_FLAG_CERT | \
+ CERT_QUERY_CONTENT_FLAG_CTL | \
+ CERT_QUERY_CONTENT_FLAG_CRL | \
+ CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE | \
+ CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT | \
+ CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL | \
+ CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL | \
+ CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | \
+ CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED | \
+ CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED | \
+ CERT_QUERY_CONTENT_FLAG_PKCS10 | \
+ CERT_QUERY_CONTENT_FLAG_PFX | \
+ CERT_QUERY_CONTENT_FLAG_CERT_PAIR
+
+#define CERT_QUERY_FORMAT_BINARY                1
+#define CERT_QUERY_FORMAT_BASE64_ENCODED        2
+#define CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED 3
+
+#define CERT_QUERY_FORMAT_FLAG_BINARY (1 << CERT_QUERY_FORMAT_BINARY)
+#define CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED \
+ (1 << CERT_QUERY_FORMAT_BASE64_ENCODED)
+#define CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED \
+ (1 << CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED)
+
+#define CERT_QUERY_FORMAT_FLAG_ALL \
+ CERT_QUERY_FORMAT_FLAG_BINARY | \
+ CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED | \
+ CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED \
+
+#define CERT_SET_KEY_PROV_HANDLE_PROP_ID 0x00000001
+#define CERT_SET_KEY_CONTEXT_PROP_ID     0x00000001
+
+#define CERT_CREATE_SELFSIGN_NO_SIGN     1
+#define CERT_CREATE_SELFSIGN_NO_KEY_INFO 2
+
+/* flags for CryptAcquireCertificatePrivateKey */
+#define CRYPT_ACQUIRE_CACHE_FLAG         0x00000001
+#define CRYPT_ACQUIRE_USE_PROV_INFO_FLAG 0x00000002
+#define CRYPT_ACQUIRE_COMPARE_KEY_FLAG   0x00000004
+#define CRYPT_ACQUIRE_SILENT_FLAG        0x00000040
+
+/* Chain engines and chains */
+typedef HANDLE HCERTCHAINENGINE;
+#define HCCE_CURRENT_USER  ((HCERTCHAINENGINE)NULL)
+#define HCCE_LOCAL_MACHINE ((HCERTCHAINENGINE)1)
+
+#define CERT_CHAIN_CACHE_END_CERT           0x00000001
+#define CERT_CHAIN_THREAD_STORE_SYNC        0x00000002
+#define CERT_CHAIN_CACHE_ONLY_URL_RETRIEVAL 0x00000004
+#define CERT_CHAIN_USE_LOCAL_MACHINE_STORE  0x00000008
+#define CERT_CHAIN_ENABLE_CACHE_AUTO_UPDATE 0x00000010
+#define CERT_CHAIN_ENABLE_SHARE_STORE       0x00000020
+
+typedef struct _CERT_CHAIN_ENGINE_CONFIG
+{
+    DWORD       cbSize;
+    HCERTSTORE  hRestrictedRoot;
+    HCERTSTORE  hRestrictedTrust;
+    HCERTSTORE  hRestrictedOther;
+    DWORD       cAdditionalStore;
+    HCERTSTORE *rghAdditionalStore;
+    DWORD       dwFlags;
+    DWORD       dwUrlRetrievalTimeout;
+    DWORD       MaximumCachedCertificates;
+    DWORD       CycleDetectionModulus;
+} CERT_CHAIN_ENGINE_CONFIG, *PCERT_CHAIN_ENGINE_CONFIG;
+
+/* message-related definitions */
+
+typedef BOOL (WINAPI *PFN_CMSG_STREAM_OUTPUT)(const void *pvArg, BYTE *pbData,
+ DWORD cbData, BOOL fFinal);
+
+#define CMSG_INDEFINITE_LENGTH 0xffffffff
+
+typedef struct _CMSG_STREAM_INFO
+{
+    DWORD cbContent;
+    PFN_CMSG_STREAM_OUTPUT pfnStreamOutput;
+    void *pvArg;
+} CMSG_STREAM_INFO, *PCMSG_STREAM_INFO;
+
+typedef struct _CERT_ISSUER_SERIAL_NUMBER
+{
+    CERT_NAME_BLOB     Issuer;
+    CRYPT_INTEGER_BLOB SerialNumber;
+} CERT_ISSUER_SERIAL_NUMBER, *PCERT_ISSUER_SERIAL_NUMBER;
+
+typedef struct _CERT_ID
+{
+    DWORD dwIdChoice;
+    union {
+        CERT_ISSUER_SERIAL_NUMBER IssuerSerialNumber;
+        CRYPT_HASH_BLOB           KeyId;
+        CRYPT_HASH_BLOB           HashId;
+    } DUMMYUNIONNAME;
+} CERT_ID, *PCERT_ID;
+
+#define CERT_ID_ISSUER_SERIAL_NUMBER 1
+#define CERT_ID_KEY_IDENTIFIER       2
+#define CERT_ID_SHA1_HASH            3
+
+#undef CMSG_DATA /* may be defined by sys/socket.h */
+#define CMSG_DATA                 1
+#define CMSG_SIGNED               2
+#define CMSG_ENVELOPED            3
+#define CMSG_SIGNED_AND_ENVELOPED 4
+#define CMSG_HASHED               5
+#define CMSG_ENCRYPTED            6
+
+#define CMSG_ALL_FLAGS                 ~0U
+#define CMSG_DATA_FLAG                 (1 << CMSG_DATA)
+#define CMSG_SIGNED_FLAG               (1 << CMSG_SIGNED)
+#define CMSG_ENVELOPED_FLAG            (1 << CMSG_ENVELOPED)
+#define CMSG_SIGNED_AND_ENVELOPED_FLAG (1 << CMSG_SIGNED_AND_ENVELOPED)
+#define CMSG_ENCRYPTED_FLAG            (1 << CMSG_ENCRYPTED)
+
+typedef struct _CMSG_SIGNER_ENCODE_INFO
+{
+    DWORD                      cbSize;
+    PCERT_INFO                 pCertInfo;
+    HCRYPTPROV                 hCryptProv;
+    DWORD                      dwKeySpec;
+    CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
+    void                      *pvHashAuxInfo;
+    DWORD                      cAuthAttr;
+    PCRYPT_ATTRIBUTE           rgAuthAttr;
+    DWORD                      cUnauthAttr;
+    PCRYPT_ATTRIBUTE           rgUnauthAttr;
+#ifdef CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS
+    CERT_ID                    SignerId;
+    CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
+    void                      *pvHashEncryptionAuxInfo;
+#endif
+} CMSG_SIGNER_ENCODE_INFO, *PCMSG_SIGNER_ENCODE_INFO;
+
+typedef struct _CMSG_SIGNED_ENCODE_INFO
+{
+    DWORD                    cbSize;
+    DWORD                    cSigners;
+    PCMSG_SIGNER_ENCODE_INFO rgSigners;
+    DWORD                    cCertEncoded;
+    PCERT_BLOB               rgCertEncoded;
+    DWORD                    cCrlEncoded;
+    PCRL_BLOB                rgCrlEncoded;
+#ifdef CMSG_SIGNED_ENCODE_INFO_HAS_CMS_FIELDS
+    DWORD                    cAttrCertEncoded;
+    PCERT_BLOB               rgAttrCertEncoded;
+#endif
+} CMSG_SIGNED_ENCODE_INFO, *PCMSG_SIGNED_ENCODE_INFO;
+
+typedef struct _CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO
+{
+    DWORD                      cbSize;
+    CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm;
+    void                      *pvKeyEncryptionAuxInfo;
+    HCRYPTPROV_LEGACY          hCryptProv;
+    CRYPT_BIT_BLOB             RecipientPublicKey;
+    CERT_ID                    RecipientId;
+} CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO, *PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO;
+
+typedef struct _CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO
+{
+    DWORD                       cbSize;
+    CRYPT_BIT_BLOB              RecipientPublicKey;
+    CERT_ID                     RecipientId;
+    FILETIME                    Date;
+    PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr;
+} CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO,
+ *PCMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO;
+
+typedef struct _CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO
+{
+    DWORD                      cbSize;
+    CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm;
+    void                      *pvKeyEncryptionAuxInfo;
+    CRYPT_ALGORITHM_IDENTIFIER KeyWrapAlgorithm;
+    void                      *pvKeyWrapAuxInfo;
+    HCRYPTPROV_LEGACY          hCryptProv;
+    DWORD                      dwKeySpec;
+    DWORD                      dwKeyChoice;
+    union {
+        PCRYPT_ALGORITHM_IDENTIFIER pEphemeralAlgorithm;
+        PCERT_ID                    pSenderId;
+    } DUMMYUNIONNAME;
+    CRYPT_DATA_BLOB            UserKeyingMaterial;
+    DWORD                      cRecipientEncryptedKeys;
+    PCMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO *rgpRecipientEncryptedKeys;
+} CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO, *PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO;
+
+#define CMSG_KEY_AGREE_EPHEMERAL_KEY_CHOICE 1
+#define CMSG_KEY_AGREE_STATIC_KEY_CHOICE    2
+
+typedef struct _CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO
+{
+    DWORD                       cbSize;
+    CRYPT_ALGORITHM_IDENTIFIER  KeyEncryptionAlgorithm;
+    void                       *pvKeyEncryptionAuxInfo;
+    HCRYPTPROV                  hCryptProv;
+    DWORD                       dwKeyChoice;
+    union {
+        HCRYPTKEY hKeyEncryptionKey;
+        void     *pvKeyEncryptionKey;
+    } DUMMYUNIONNAME;
+    CRYPT_DATA_BLOB             KeyId;
+    FILETIME                    Date;
+    PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr;
+} CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO, *PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO;
+
+#define CMSG_MAIL_LIST_HANDLE_KEY_CHOICE 1
+
+typedef struct _CMSG_RECIPIENT_ENCODE_INFO
+{
+    DWORD dwRecipientChoice;
+    union {
+        PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO pKeyTrans;
+        PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO pKeyAgree;
+        PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO pMailList;
+    } DUMMYUNIONNAME;
+} CMSG_RECIPIENT_ENCODE_INFO, *PCMSG_RECIPIENT_ENCODE_INFO;
+
+#define CMSG_KEY_TRANS_RECIPIENT 1
+#define CMSG_KEY_AGREE_RECIPIENT 2
+#define CMSG_MAIL_LIST_RECIPIENT 3
+
+typedef struct _CMSG_ENVELOPED_ENCODE_INFO
+{
+    DWORD                       cbSize;
+    HCRYPTPROV_LEGACY           hCryptProv;
+    CRYPT_ALGORITHM_IDENTIFIER  ContentEncryptionAlgorithm;
+    void                       *pvEncryptionAuxInfo;
+    DWORD                       cRecipients;
+    PCERT_INFO                 *rgpRecipientCert;
+#ifdef CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS
+    PCMSG_RECIPIENT_ENCODE_INFO rgCmsRecipients;
+    DWORD                       cCertEncoded;
+    PCERT_BLOB                  rgCertEncoded;
+    DWORD                       cCrlEncoded;
+    PCRL_BLOB                   rgCrlEncoded;
+    DWORD                       cAttrCertEncoded;
+    PCERT_BLOB                  rgAttrCertEncoded;
+    DWORD                       cUnprotectedAttr;
+    PCRYPT_ATTRIBUTE            rgUnprotectedAttr;
+#endif
+} CMSG_ENVELOPED_ENCODE_INFO, *PCMSG_ENVELOPED_ENCODE_INFO;
+
+typedef struct _CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO
+{
+    DWORD                      cbSize;
+    CMSG_SIGNED_ENCODE_INFO    SignedInfo;
+    CMSG_ENVELOPED_ENCODE_INFO EnvelopedInfo;
+} CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO,
+ *PCMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO;
+
+typedef struct _CMSG_HASHED_ENCODE_INFO
+{
+    DWORD                      cbSize;
+    HCRYPTPROV_LEGACY          hCryptProv;
+    CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
+    void                      *pvHashAuxInfo;
+} CMSG_HASHED_ENCODE_INFO, *PCMSG_HASHED_ENCODE_INFO;
+
+typedef struct _CMSG_ENCRYPTED_ENCODE_INFO
+{
+    DWORD                      cbSize;
+    CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm;
+    void                      *pvEncryptionAuxInfo;
+} CMSG_ENCRYPTED_ENCODE_INFO, *PCMSG_ENCRYPTED_ENCODE_INFO;
+
+#define CMSG_BARE_CONTENT_FLAG             0x00000001
+#define CMSG_LENGTH_ONLY_FLAG              0x00000002
+#define CMSG_DETACHED_FLAG                 0x00000004
+#define CMSG_AUTHENTICATED_ATTRIBUTES_FLAG 0x00000008
+#define CMSG_CONTENTS_OCTETS_FLAG          0x00000010
+#define CMSG_MAX_LENGTH_FLAG               0x00000020
+#define CMSG_CMS_ENCAPSULATED_CONTENT_FLAG 0x00000040
+#define CMSG_CRYPT_RELEASE_CONTEXT_FLAG    0x00008000
+
+#define CMSG_CTRL_VERIFY_SIGNATURE       1
+#define CMSG_CTRL_DECRYPT                2
+#define CMSG_CTRL_VERIFY_HASH            5
+#define CMSG_CTRL_ADD_SIGNER             6
+#define CMSG_CTRL_DEL_SIGNER             7
+#define CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR 8
+#define CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR 9
+#define CMSG_CTRL_ADD_CERT               10
+#define CMSG_CTRL_DEL_CERT               11
+#define CMSG_CTRL_ADD_CRL                12
+#define CMSG_CTRL_DEL_CRL                13
+#define CMSG_CTRL_ADD_ATTR_CERT          14
+#define CMSG_CTRL_DEL_ATTR_CERT          15
+#define CMSG_CTRL_KEY_TRANS_DECRYPT      16
+#define CMSG_CTRL_KEY_AGREE_DECRYPT      17
+#define CMSG_CTRL_MAIL_LIST_DECRYPT      18
+#define CMSG_CTRL_VERIFY_SIGNATURE_EX    19
+#define CMSG_CTRL_ADD_CMS_SIGNER_INFO    20
+
+typedef struct _CMSG_CTRL_DECRYPT_PARA
+{
+    DWORD      cbSize;
+    HCRYPTPROV hCryptProv;
+    DWORD      dwKeySpec;
+    DWORD      dwRecipientIndex;
+} CMSG_CTRL_DECRYPT_PARA, *PCMSG_CTRL_DECRYPT_PARA;
+
+typedef struct _CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA
+{
+    DWORD           cbSize;
+    DWORD           dwSignerIndex;
+    CRYPT_DATA_BLOB blob;
+} CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA,
+ *PCMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA;
+
+typedef struct _CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA
+{
+    DWORD           cbSize;
+    DWORD           dwSignerIndex;
+    DWORD           dwUnauthAttrIndex;
+} CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA,
+ *PCMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA;
+
+typedef struct _CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA {
+    DWORD      cbSize;
+    HCRYPTPROV hCryptProv;
+    DWORD      dwSignerIndex;
+    DWORD      dwSignerType;
+    void      *pvSigner;
+} CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA, *PCMSG_CTRL_VERIFY_SIGNATURE_EX_PARA;
+
+#define CMSG_VERIFY_SIGNER_PUBKEY 1
+#define CMSG_VERIFY_SIGNER_CERT   2
+#define CMSG_VERIFY_SIGNER_CHAIN  3
+#define CMSG_VERIFY_SIGNER_NULL   4
+
+#define CMSG_TYPE_PARAM                  1
+#define CMSG_CONTENT_PARAM               2
+#define CMSG_BARE_CONTENT_PARAM          3
+#define CMSG_INNER_CONTENT_TYPE_PARAM    4
+#define CMSG_SIGNER_COUNT_PARAM          5
+#define CMSG_SIGNER_INFO_PARAM           6
+#define CMSG_SIGNER_CERT_INFO_PARAM      7
+#define CMSG_SIGNER_HASH_ALGORITHM_PARAM 8
+#define CMSG_SIGNER_AUTH_ATTR_PARAM      9
+#define CMSG_SIGNER_UNAUTH_ATTR_PARAM    10
+#define CMSG_CERT_COUNT_PARAM            11
+#define CMSG_CERT_PARAM                  12
+#define CMSG_CRL_COUNT_PARAM             13
+#define CMSG_CRL_PARAM                   14
+#define CMSG_ENVELOPE_ALGORITHM_PARAM    15
+#define CMSG_RECIPIENT_COUNT_PARAM       17
+#define CMSG_RECIPIENT_INDEX_PARAM       18
+#define CMSG_RECIPIENT_INFO_PARAM        19
+#define CMSG_HASH_ALGORITHM_PARAM        20
+#define CMSG_HASH_DATA_PARAM             21
+#define CMSG_COMPUTED_HASH_PARAM         22
+#define CMSG_ENCRYPT_PARAM               26
+#define CMSG_ENCRYPTED_DIGEST            27
+#define CMSG_ENCODED_SIGNER              28
+#define CMSG_ENCODED_MESSAGE             29
+#define CMSG_VERSION_PARAM               30
+#define CMSG_ATTR_CERT_COUNT_PARAM       31
+#define CMSG_ATTR_CERT_PARAM             32
+#define CMSG_CMS_RECIPIENT_COUNT_PARAM   33
+#define CMSG_CMS_RECIPIENT_INDEX_PARAM   34
+#define CMSG_CMS_RECIPIENT_ENCRYPTED_KEY_INDEX_PARAM 35
+#define CMSG_CMS_RECIPIENT_INFO_PARAM    36
+#define CMSG_UNPROTECTED_ATTR_PARAM      37
+#define CMSG_SIGNER_CERT_ID_PARAM        38
+#define CMSG_CMS_SIGNER_INFO_PARAM       39
+
+typedef struct _CMSG_CMS_SIGNER_INFO {
+    DWORD                      dwVersion;
+    CERT_ID                    SignerId;
+    CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
+    CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
+    CRYPT_DATA_BLOB            EncryptedHash;
+    CRYPT_ATTRIBUTES           AuthAttrs;
+    CRYPT_ATTRIBUTES           UnauthAttrs;
+} CMSG_CMS_SIGNER_INFO, *PCMSG_CMS_SIGNER_INFO;
+
+typedef CRYPT_ATTRIBUTES CMSG_ATTR, *PCMSG_ATTR;
+
+#define CMSG_SIGNED_DATA_V1               1
+#define CMSG_SIGNED_DATA_V3               3
+#define CMSG_SIGNED_DATA_PKCS_1_5_VERSION CMSG_SIGNED_DATA_V1
+#define CMSG_SIGNED_DATA_CMS_VERSION      CMSG_SIGNED_DATA_V3
+
+#define CMSG_SIGNER_INFO_V1               1
+#define CMSG_SIGNER_INFO_V3               3
+#define CMSG_SIGNER_INFO_PKCS_1_5_VERSION CMSG_SIGNER_INFO_V1
+#define CMSG_SIGNER_INFO_CMS_VERSION      CMSG_SIGNER_INFO_V3
+
+#define CMSG_HASHED_DATA_V0               0
+#define CMSG_HASHED_DATA_V2               2
+#define CMSG_HASHED_DATA_PKCS_1_5_VERSION CMSG_HASHED_DATA_V0
+#define CMSG_HASHED_DATA_CMS_VERSION      CMSG_HASHED_DATA_V2
+
+#define CMSG_ENVELOPED_DATA_V0               0
+#define CMSG_ENVELOPED_DATA_V2               2
+#define CMSG_ENVELOPED_DATA_PKCS_1_5_VERSION CMSG_ENVELOPED_DATA_V0
+#define CMSG_ENVELOPED_DATA_CMS_VERSION      CMSG_ENVELOPED_DATA_V2
+
+typedef struct _CMSG_KEY_TRANS_RECIPIENT_INFO {
+    DWORD                      dwVersion;
+    CERT_ID                    RecipientId;
+    CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm;
+    CRYPT_DATA_BLOB            EncryptedKey;
+} CMSG_KEY_TRANS_RECIPIENT_INFO, *PCMSG_KEY_TRANS_RECIPIENT_INFO;
+
+typedef struct _CMSG_RECIPIENT_ENCRYPTED_KEY_INFO {
+    CERT_ID                     RecipientId;
+    CRYPT_DATA_BLOB             EncryptedKey;
+    PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr;
+} CMSG_RECIPIENT_ENCRYPTED_KEY_INFO, *PCMSG_RECIPIENT_ENCRYPTED_KEY_INFO;
+
+typedef struct _CMSG_KEY_AGREE_RECIPIENT_INFO {
+    DWORD                               dwVersion;
+    DWORD                               dwOriginatorChoice;
+    union {
+        CERT_ID              OriginatorCertId;
+        CERT_PUBLIC_KEY_INFO OriginatorPublicKeyInfo;
+    } DUMMYUNIONNAME;
+    CRYPT_ALGORITHM_IDENTIFIER          UserKeyingMaterial;
+    DWORD                               cRecipientEncryptedKeys;
+    PCMSG_RECIPIENT_ENCRYPTED_KEY_INFO *rgpRecipientEncryptedKeys;
+} CMSG_KEY_AGREE_RECIPIENT_INFO, *PCMSG_KEY_AGREE_RECIPIENT_INFO;
+
+#define CMSG_KEY_AGREE_ORIGINATOR_CERT       1
+#define CMSG_KEY_AGREE_ORIGINATOR_PUBLIC_KEY 2
+
+typedef struct _CMSG_MAIL_LIST_RECIPIENT_INFO {
+    DWORD                       dwVersion;
+    CRYPT_DATA_BLOB             KeyId;
+    CRYPT_ALGORITHM_IDENTIFIER  KeyEncryptionAlgorithm;
+    CRYPT_DATA_BLOB             EncryptedKey;
+    FILETIME                    Date;
+    PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr;
+} CMSG_MAIL_LIST_RECIPIENT_INFO, *PCMSG_MAIL_LIST_RECIPIENT_INFO;
+
+typedef struct _CMSG_CMS_RECIPIENT_INFO {
+    DWORD dwRecipientChoice;
+    union {
+        PCMSG_KEY_TRANS_RECIPIENT_INFO pKeyTrans;
+        PCMSG_KEY_AGREE_RECIPIENT_INFO pKeyAgree;
+        PCMSG_MAIL_LIST_RECIPIENT_INFO pMailList;
+    } DUMMYUNIONNAME;
+} CMSG_CMS_RECIPIENT_INFO, *PCMSG_CMS_RECIPIENT_INFO;
+
+#define CMSG_ENVELOPED_RECIPIENT_V0     0
+#define CMSG_ENVELOPED_RECIPIENT_V2     2
+#define CMSG_ENVELOPED_RECIPIENT_V3     3
+#define CMSG_ENVELOPED_RECIPIENT_V4     4
+#define CMSG_KEY_TRANS_PKCS_1_5_VERSION CMSG_ENVELOPED_RECIPIENT_V0
+#define CMSG_KEY_TRANS_CMS_VERSION      CMSG_ENVELOPED_RECIPIENT_V2
+#define CMSG_KEY_AGREE_VERSION          CMSG_ENVELOPED_RECIPIENT_V3
+#define CMSG_MAIL_LIST_VERSION          CMSG_ENVELOPED_RECIPIENT_V4
+
+/* CryptMsgGetAndVerifySigner flags */
+#define CMSG_TRUSTED_SIGNER_FLAG   0x1
+#define CMSG_SIGNER_ONLY_FLAG      0x2
+#define CMSG_USE_SIGNER_INDEX_FLAG 0x4
+
+/* CryptMsgSignCTL flags */
+#define CMSG_CMS_ENCAPSULATED_CTL_FLAG 0x00008000
+
+/* CryptMsgEncodeAndSignCTL flags */
+#define CMSG_ENCODED_SORTED_CTL_FLAG               0x1
+#define CMSG_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAG 0x2
+
+/* function declarations */
+/* advapi32.dll */
+WINADVAPI BOOL WINAPI CryptAcquireContextA(HCRYPTPROV *, LPCSTR, LPCSTR, DWORD, DWORD);
+WINADVAPI BOOL WINAPI CryptAcquireContextW (HCRYPTPROV *, LPCWSTR, LPCWSTR, DWORD, DWORD);
+#define               CryptAcquireContext WINELIB_NAME_AW(CryptAcquireContext)
+WINADVAPI BOOL WINAPI CryptGenRandom (HCRYPTPROV, DWORD, BYTE *);
+WINADVAPI BOOL WINAPI CryptContextAddRef (HCRYPTPROV, DWORD *, DWORD);
+WINADVAPI BOOL WINAPI CryptCreateHash (HCRYPTPROV, ALG_ID, HCRYPTKEY, DWORD, HCRYPTHASH *);
+WINADVAPI BOOL WINAPI CryptDecrypt (HCRYPTKEY, HCRYPTHASH, BOOL, DWORD, BYTE *, DWORD *);
+WINADVAPI BOOL WINAPI CryptDeriveKey (HCRYPTPROV, ALG_ID, HCRYPTHASH, DWORD, HCRYPTKEY *);
+WINADVAPI BOOL WINAPI CryptDestroyHash (HCRYPTHASH);
+WINADVAPI BOOL WINAPI CryptDestroyKey (HCRYPTKEY);
+WINADVAPI BOOL WINAPI CryptDuplicateKey (HCRYPTKEY, DWORD *, DWORD, HCRYPTKEY *);
+WINADVAPI BOOL WINAPI CryptDuplicateHash (HCRYPTHASH, DWORD *, DWORD, HCRYPTHASH *);
+WINADVAPI BOOL WINAPI CryptEncrypt (HCRYPTKEY, HCRYPTHASH, BOOL, DWORD, BYTE *, DWORD *, DWORD);
+WINADVAPI BOOL WINAPI CryptEnumProvidersA (DWORD, DWORD *, DWORD, DWORD *, LPSTR, DWORD *);
+WINADVAPI BOOL WINAPI CryptEnumProvidersW (DWORD, DWORD *, DWORD, DWORD *, LPWSTR, DWORD *);
+#define               CryptEnumProviders WINELIB_NAME_AW(CryptEnumProviders)
+WINADVAPI BOOL WINAPI CryptEnumProviderTypesA (DWORD, DWORD *, DWORD, DWORD *, LPSTR, DWORD *);
+WINADVAPI BOOL WINAPI CryptEnumProviderTypesW (DWORD, DWORD *, DWORD, DWORD *, LPWSTR, DWORD *);
+#define               CryptEnumProviderTypes WINELIB_NAME_AW(CryptEnumProviderTypes)
+WINADVAPI BOOL WINAPI CryptExportKey (HCRYPTKEY, HCRYPTKEY, DWORD, DWORD, BYTE *, DWORD *);
+WINADVAPI BOOL WINAPI CryptGenKey (HCRYPTPROV, ALG_ID, DWORD, HCRYPTKEY *);
+WINADVAPI BOOL WINAPI CryptGetKeyParam (HCRYPTKEY, DWORD, BYTE *, DWORD *, DWORD);
+WINADVAPI BOOL WINAPI CryptGetHashParam (HCRYPTHASH, DWORD, BYTE *, DWORD *, DWORD);
+WINADVAPI BOOL WINAPI CryptGetProvParam (HCRYPTPROV, DWORD, BYTE *, DWORD *, DWORD);
+WINADVAPI BOOL WINAPI CryptGetDefaultProviderA (DWORD, DWORD *, DWORD, LPSTR, DWORD *);
+WINADVAPI BOOL WINAPI CryptGetDefaultProviderW (DWORD, DWORD *, DWORD, LPWSTR, DWORD *);
+#define               CryptGetDefaultProvider WINELIB_NAME_AW(CryptGetDefaultProvider)
+WINADVAPI BOOL WINAPI CryptGetUserKey (HCRYPTPROV, DWORD, HCRYPTKEY *);
+WINADVAPI BOOL WINAPI CryptHashData (HCRYPTHASH, CONST BYTE *, DWORD, DWORD);
+WINADVAPI BOOL WINAPI CryptHashSessionKey (HCRYPTHASH, HCRYPTKEY, DWORD);
+WINADVAPI BOOL WINAPI CryptImportKey (HCRYPTPROV, CONST BYTE *, DWORD, HCRYPTKEY, DWORD, HCRYPTKEY *);
+WINADVAPI BOOL WINAPI CryptReleaseContext (HCRYPTPROV, ULONG_PTR);
+WINADVAPI BOOL WINAPI CryptSetHashParam (HCRYPTHASH, DWORD, CONST BYTE *, DWORD);
+WINADVAPI BOOL WINAPI CryptSetKeyParam (HCRYPTKEY, DWORD, CONST BYTE *, DWORD);
+WINADVAPI BOOL WINAPI CryptSetProviderA (LPCSTR, DWORD);
+WINADVAPI BOOL WINAPI CryptSetProviderW (LPCWSTR, DWORD);
+#define               CryptSetProvider WINELIB_NAME_AW(CryptSetProvider)
+WINADVAPI BOOL WINAPI CryptSetProviderExA (LPCSTR, DWORD, DWORD *, DWORD);
+WINADVAPI BOOL WINAPI CryptSetProviderExW (LPCWSTR, DWORD, DWORD *, DWORD);
+#define               CryptSetProviderEx WINELIB_NAME_AW(CryptSetProviderEx)
+WINADVAPI BOOL WINAPI CryptSetProvParam (HCRYPTPROV, DWORD, CONST BYTE *, DWORD);
+WINADVAPI BOOL WINAPI CryptSignHashA (HCRYPTHASH, DWORD, LPCSTR, DWORD, BYTE *, DWORD *);
+WINADVAPI BOOL WINAPI CryptSignHashW (HCRYPTHASH, DWORD, LPCWSTR, DWORD, BYTE *, DWORD *);
+#define               CryptSignHash WINELIB_NAME_AW(CryptSignHash)
+WINADVAPI BOOL WINAPI CryptVerifySignatureA (HCRYPTHASH, CONST BYTE *, DWORD, HCRYPTKEY, LPCSTR, DWORD);
+WINADVAPI BOOL WINAPI CryptVerifySignatureW (HCRYPTHASH, CONST BYTE *, DWORD, HCRYPTKEY, LPCWSTR, DWORD);
+#define               CryptVerifySignature WINELIB_NAME_AW(CryptVerifySignature)
+
+/* crypt32.dll functions */
+LPVOID WINAPI CryptMemAlloc(ULONG cbSize) __WINE_ALLOC_SIZE(1);
+LPVOID WINAPI CryptMemRealloc(LPVOID pv, ULONG cbSize) __WINE_ALLOC_SIZE(2);
+VOID   WINAPI CryptMemFree(LPVOID pv);
+
+BOOL WINAPI CryptBinaryToStringA(const BYTE *pbBinary,
+ DWORD cbBinary, DWORD dwFlags, LPSTR pszString, DWORD *pcchString);
+BOOL WINAPI CryptBinaryToStringW(const BYTE *pbBinary,
+ DWORD cbBinary, DWORD dwFlags, LPWSTR pszString, DWORD *pcchString);
+#define CryptBinaryToString WINELIB_NAME_AW(CryptBinaryToString)
+
+BOOL WINAPI CryptStringToBinaryA(LPCSTR pszString,
+ DWORD cchString, DWORD dwFlags, BYTE *pbBinary, DWORD *pcbBinary,
+ DWORD *pdwSkip, DWORD *pdwFlags);
+BOOL WINAPI CryptStringToBinaryW(LPCWSTR pszString,
+ DWORD cchString, DWORD dwFlags, BYTE *pbBinary, DWORD *pcbBinary,
+ DWORD *pdwSkip, DWORD *pdwFlags);
+#define CryptStringToBinary WINELIB_NAME_AW(CryptStringToBinary)
+
+BOOL WINAPI CryptCreateAsyncHandle(DWORD dwFlags, PHCRYPTASYNC phAsync);
+BOOL WINAPI CryptSetAsyncParam(HCRYPTASYNC hAsync, LPSTR pszParamOid,
+ LPVOID pvParam, PFN_CRYPT_ASYNC_PARAM_FREE_FUNC pfnFree);
+BOOL WINAPI CryptGetAsyncParam(HCRYPTASYNC hAsync, LPSTR pszParamOid,
+ LPVOID *ppvParam, PFN_CRYPT_ASYNC_PARAM_FREE_FUNC *ppfnFree);
+BOOL WINAPI CryptCloseAsyncHandle(HCRYPTASYNC hAsync);
+
+BOOL WINAPI CryptRegisterDefaultOIDFunction(DWORD,LPCSTR,DWORD,LPCWSTR);
+BOOL WINAPI CryptRegisterOIDFunction(DWORD,LPCSTR,LPCSTR,LPCWSTR,LPCSTR);
+BOOL WINAPI CryptGetOIDFunctionValue(DWORD dwEncodingType, LPCSTR pszFuncName,
+                                     LPCSTR pszOID, LPCWSTR szValueName, DWORD *pdwValueType,
+                                     BYTE *pbValueData, DWORD *pcbValueData);
+BOOL WINAPI CryptSetOIDFunctionValue(DWORD dwEncodingType, LPCSTR pszFuncName,
+                                     LPCSTR pszOID, LPCWSTR pwszValueName, DWORD dwValueType,
+                                     const BYTE *pbValueData, DWORD cbValueData);
+BOOL WINAPI CryptUnregisterDefaultOIDFunction(DWORD,LPCSTR,LPCWSTR);
+BOOL WINAPI CryptUnregisterOIDFunction(DWORD,LPCSTR,LPCSTR);
+BOOL WINAPI CryptEnumOIDFunction(DWORD dwEncodingType, LPCSTR pszFuncName,
+ LPCSTR pszOID, DWORD dwFlags, void *pvArg,
+ PFN_CRYPT_ENUM_OID_FUNC pfnEnumOIDFunc);
+HCRYPTOIDFUNCSET WINAPI CryptInitOIDFunctionSet(LPCSTR,DWORD);
+BOOL WINAPI CryptGetDefaultOIDDllList(HCRYPTOIDFUNCSET hFuncSet,
+ DWORD dwEncodingType, LPWSTR pwszDllList, DWORD *pcchDllList);
+BOOL WINAPI CryptGetDefaultOIDFunctionAddress(HCRYPTOIDFUNCSET hFuncSet,
+ DWORD dwEncodingType, LPCWSTR pwszDll, DWORD dwFlags, void **ppvFuncAddr,
+ HCRYPTOIDFUNCADDR *phFuncAddr);
+BOOL WINAPI CryptGetOIDFunctionAddress(HCRYPTOIDFUNCSET hFuncSet,
+ DWORD dwEncodingType, LPCSTR pszOID, DWORD dwFlags, void **ppvFuncAddr,
+ HCRYPTOIDFUNCADDR *phFuncAddr);
+BOOL WINAPI CryptFreeOIDFunctionAddress(HCRYPTOIDFUNCADDR hFuncAddr,
+ DWORD dwFlags);
+BOOL WINAPI CryptInstallOIDFunctionAddress(HMODULE hModule,
+ DWORD dwEncodingType, LPCSTR pszFuncName, DWORD cFuncEntry,
+ const CRYPT_OID_FUNC_ENTRY rgFuncEntry[], DWORD dwFlags);
+BOOL WINAPI CryptInstallDefaultContext(HCRYPTPROV hCryptProv,
+ DWORD dwDefaultType, const void *pvDefaultPara, DWORD dwFlags,
+ void *pvReserved, HCRYPTDEFAULTCONTEXT *phDefaultContext);
+BOOL WINAPI CryptUninstallDefaultContext(HCRYPTDEFAULTCONTEXT hDefaultContext,
+ DWORD dwFlags, void *pvReserved);
+
+BOOL WINAPI CryptEnumOIDInfo(DWORD dwGroupId, DWORD dwFlags, void *pvArg,
+ PFN_CRYPT_ENUM_OID_INFO pfnEnumOIDInfo);
+PCCRYPT_OID_INFO WINAPI CryptFindOIDInfo(DWORD dwKeyType, void *pvKey,
+ DWORD dwGroupId);
+BOOL WINAPI CryptRegisterOIDInfo(PCCRYPT_OID_INFO pInfo, DWORD dwFlags);
+BOOL WINAPI CryptUnregisterOIDInfo(PCCRYPT_OID_INFO pInfo);
+
+LPCSTR WINAPI CertAlgIdToOID(DWORD dwAlgId);
+DWORD WINAPI CertOIDToAlgId(LPCSTR pszObjId);
+
+/* cert store functions */
+HCERTSTORE WINAPI CertOpenStore(LPCSTR lpszStoreProvider, DWORD dwEncodingType,
+ HCRYPTPROV_LEGACY hCryptProv, DWORD dwFlags, const void *pvPara);
+
+HCERTSTORE WINAPI CertOpenSystemStoreA(HCRYPTPROV_LEGACY hProv,
+ LPCSTR szSubSystemProtocol);
+HCERTSTORE WINAPI CertOpenSystemStoreW(HCRYPTPROV_LEGACY hProv,
+ LPCWSTR szSubSystemProtocol);
+#define CertOpenSystemStore WINELIB_NAME_AW(CertOpenSystemStore)
+
+PCCERT_CONTEXT WINAPI CertEnumCertificatesInStore(HCERTSTORE hCertStore,
+ PCCERT_CONTEXT pPrev);
+
+PCCRL_CONTEXT WINAPI CertEnumCRLsInStore(HCERTSTORE hCertStore,
+ PCCRL_CONTEXT pPrev);
+
+PCCTL_CONTEXT WINAPI CertEnumCTLsInStore(HCERTSTORE hCertStore,
+ PCCTL_CONTEXT pPrev);
+
+BOOL WINAPI CertEnumSystemStoreLocation(DWORD dwFlags, void *pvArg,
+ PFN_CERT_ENUM_SYSTEM_STORE_LOCATION pfnEnum);
+
+BOOL WINAPI CertEnumSystemStore(DWORD dwFlags, void *pvSystemStoreLocationPara,
+ void *pvArg, PFN_CERT_ENUM_SYSTEM_STORE pfnEnum);
+
+BOOL WINAPI CertEnumPhysicalStore(const void *pvSystemStore, DWORD dwFlags,
+ void *pvArg, PFN_CERT_ENUM_PHYSICAL_STORE pfnEnum);
+
+BOOL WINAPI CertSaveStore(HCERTSTORE hCertStore, DWORD dwMsgAndCertEncodingType,
+             DWORD dwSaveAs, DWORD dwSaveTo, void* pvSaveToPara, DWORD dwFlags);
+
+BOOL WINAPI CertAddStoreToCollection(HCERTSTORE hCollectionStore,
+ HCERTSTORE hSiblingStore, DWORD dwUpdateFlags, DWORD dwPriority);
+
+void WINAPI CertRemoveStoreFromCollection(HCERTSTORE hCollectionStore,
+ HCERTSTORE hSiblingStore);
+
+BOOL WINAPI CertCreateCertificateChainEngine(PCERT_CHAIN_ENGINE_CONFIG pConfig,
+ HCERTCHAINENGINE *phChainEngine);
+
+BOOL WINAPI CertResyncCertificateChainEngine(HCERTCHAINENGINE hChainEngine);
+
+VOID WINAPI CertFreeCertificateChainEngine(HCERTCHAINENGINE hChainEngine);
+
+BOOL WINAPI CertGetCertificateChain(HCERTCHAINENGINE hChainEngine,
+ PCCERT_CONTEXT pCertContext, LPFILETIME pTime, HCERTSTORE hAdditionalStore,
+ PCERT_CHAIN_PARA pChainPara, DWORD dwFlags, LPVOID pvReserved,
+ PCCERT_CHAIN_CONTEXT *ppChainContext);
+
+PCCERT_CHAIN_CONTEXT WINAPI CertDuplicateCertificateChain(
+ PCCERT_CHAIN_CONTEXT pChainContext);
+
+VOID WINAPI CertFreeCertificateChain(PCCERT_CHAIN_CONTEXT pChainContext);
+
+PCCERT_CHAIN_CONTEXT WINAPI CertFindChainInStore(HCERTSTORE hCertStore,
+ DWORD dwCertEncodingType, DWORD dwFindFlags, DWORD dwFindType,
+ const void *pvFindPara, PCCERT_CHAIN_CONTEXT pPrevChainContext);
+
+BOOL WINAPI CertVerifyCertificateChainPolicy(LPCSTR szPolicyOID,
+ PCCERT_CHAIN_CONTEXT pChainContext, PCERT_CHAIN_POLICY_PARA pPolicyPara,
+ PCERT_CHAIN_POLICY_STATUS pPolicyStatus);
+
+DWORD WINAPI CertEnumCertificateContextProperties(PCCERT_CONTEXT pCertContext,
+ DWORD dwPropId);
+
+BOOL WINAPI CertGetCertificateContextProperty(PCCERT_CONTEXT pCertContext,
+ DWORD dwPropId, void *pvData, DWORD *pcbData);
+
+BOOL WINAPI CertSetCertificateContextProperty(PCCERT_CONTEXT pCertContext,
+ DWORD dwPropId, DWORD dwFlags, const void *pvData);
+
+DWORD WINAPI CertEnumCRLContextProperties(PCCRL_CONTEXT pCRLContext,
+ DWORD dwPropId);
+
+BOOL WINAPI CertGetCRLContextProperty(PCCRL_CONTEXT pCRLContext,
+ DWORD dwPropId, void *pvData, DWORD *pcbData);
+
+BOOL WINAPI CertSetCRLContextProperty(PCCRL_CONTEXT pCRLContext,
+ DWORD dwPropId, DWORD dwFlags, const void *pvData);
+
+DWORD WINAPI CertEnumCTLContextProperties(PCCTL_CONTEXT pCTLContext,
+ DWORD dwPropId);
+
+BOOL WINAPI CertEnumSubjectInSortedCTL(PCCTL_CONTEXT pCTLContext,
+ void **ppvNextSubject, PCRYPT_DER_BLOB pSubjectIdentifier,
+ PCRYPT_DER_BLOB pEncodedAttributes);
+
+BOOL WINAPI CertGetCTLContextProperty(PCCTL_CONTEXT pCTLContext,
+ DWORD dwPropId, void *pvData, DWORD *pcbData);
+
+BOOL WINAPI CertSetCTLContextProperty(PCCTL_CONTEXT pCTLContext,
+ DWORD dwPropId, DWORD dwFlags, const void *pvData);
+
+BOOL WINAPI CertGetStoreProperty(HCERTSTORE hCertStore, DWORD dwPropId,
+ void *pvData, DWORD *pcbData);
+
+BOOL WINAPI CertSetStoreProperty(HCERTSTORE hCertStore, DWORD dwPropId,
+ DWORD dwFlags, const void *pvData);
+
+BOOL WINAPI CertControlStore(HCERTSTORE hCertStore, DWORD dwFlags,
+ DWORD dwCtrlType, void const *pvCtrlPara);
+
+HCERTSTORE WINAPI CertDuplicateStore(HCERTSTORE hCertStore);
+
+BOOL WINAPI CertCloseStore( HCERTSTORE hCertStore, DWORD dwFlags );
+
+BOOL WINAPI CertFreeCertificateContext( PCCERT_CONTEXT pCertContext );
+
+BOOL WINAPI CertFreeCRLContext( PCCRL_CONTEXT pCrlContext );
+
+BOOL WINAPI CertFreeCTLContext( PCCTL_CONTEXT pCtlContext );
+
+BOOL WINAPI CertAddCertificateContextToStore(HCERTSTORE hCertStore,
+ PCCERT_CONTEXT pCertContext, DWORD dwAddDisposition,
+ PCCERT_CONTEXT *ppStoreContext);
+
+BOOL WINAPI CertAddCRLContextToStore( HCERTSTORE hCertStore,
+ PCCRL_CONTEXT pCrlContext, DWORD dwAddDisposition,
+ PCCRL_CONTEXT *ppStoreContext );
+
+BOOL WINAPI CertAddCTLContextToStore( HCERTSTORE hCertStore,
+ PCCTL_CONTEXT pCtlContext, DWORD dwAddDisposition,
+ PCCTL_CONTEXT *ppStoreContext );
+
+BOOL WINAPI CertAddCertificateLinkToStore(HCERTSTORE hCertStore,
+ PCCERT_CONTEXT pCertContext, DWORD dwAddDisposition,
+ PCCERT_CONTEXT *ppStoreContext);
+
+BOOL WINAPI CertAddCRLLinkToStore(HCERTSTORE hCertStore,
+ PCCRL_CONTEXT pCrlContext, DWORD dwAddDisposition,
+ PCCRL_CONTEXT *ppStoreContext);
+
+BOOL WINAPI CertAddCTLLinkToStore(HCERTSTORE hCertStore,
+ PCCTL_CONTEXT pCtlContext, DWORD dwAddDisposition,
+ PCCTL_CONTEXT *ppStoreContext);
+
+BOOL WINAPI CertAddEncodedCertificateToStore(HCERTSTORE hCertStore,
+ DWORD dwCertEncodingType, const BYTE *pbCertEncoded, DWORD cbCertEncoded,
+ DWORD dwAddDisposition, PCCERT_CONTEXT *ppCertContext);
+
+BOOL WINAPI CertAddEncodedCRLToStore(HCERTSTORE hCertStore,
+ DWORD dwCertEncodingType, const BYTE *pbCrlEncoded, DWORD cbCrlEncoded,
+ DWORD dwAddDisposition, PCCRL_CONTEXT *ppCrlContext);
+
+BOOL WINAPI CertAddEncodedCTLToStore(HCERTSTORE hCertStore,
+ DWORD dwMsgAndCertEncodingType, const BYTE *pbCtlEncoded, DWORD cbCtlEncoded,
+ DWORD dwAddDisposition, PCCTL_CONTEXT *ppCtlContext);
+
+BOOL WINAPI CertAddSerializedElementToStore(HCERTSTORE hCertStore,
+ const BYTE *pbElement, DWORD cbElement, DWORD dwAddDisposition, DWORD dwFlags,
+ DWORD dwContextTypeFlags, DWORD *pdwContentType, const void **ppvContext);
+
+BOOL WINAPI CertCompareCertificate(DWORD dwCertEncodingType,
+ PCERT_INFO pCertId1, PCERT_INFO pCertId2);
+BOOL WINAPI CertCompareCertificateName(DWORD dwCertEncodingType,
+ PCERT_NAME_BLOB pCertName1, PCERT_NAME_BLOB pCertName2);
+BOOL WINAPI CertCompareIntegerBlob(PCRYPT_INTEGER_BLOB pInt1,
+ PCRYPT_INTEGER_BLOB pInt2);
+BOOL WINAPI CertComparePublicKeyInfo(DWORD dwCertEncodingType,
+ PCERT_PUBLIC_KEY_INFO pPublicKey1, PCERT_PUBLIC_KEY_INFO pPublicKey2);
+DWORD WINAPI CertGetPublicKeyLength(DWORD dwCertEncodingType,
+ PCERT_PUBLIC_KEY_INFO pPublicKey);
+
+const void * WINAPI CertCreateContext(DWORD dwContextType, DWORD dwEncodingType,
+ const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags,
+ PCERT_CREATE_CONTEXT_PARA pCreatePara);
+
+PCCERT_CONTEXT WINAPI CertCreateCertificateContext(DWORD dwCertEncodingType,
+ const BYTE *pbCertEncoded, DWORD cbCertEncoded);
+
+PCCRL_CONTEXT WINAPI CertCreateCRLContext( DWORD dwCertEncodingType,
+  const BYTE* pbCrlEncoded, DWORD cbCrlEncoded);
+
+PCCTL_CONTEXT WINAPI CertCreateCTLContext(DWORD dwMsgAndCertEncodingType,
+ const BYTE *pbCtlEncoded, DWORD cbCtlEncoded);
+
+PCCERT_CONTEXT WINAPI CertCreateSelfSignCertificate(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hProv,
+ PCERT_NAME_BLOB pSubjectIssuerBlob, DWORD dwFlags,
+ PCRYPT_KEY_PROV_INFO pKeyProvInfo,
+ PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, PSYSTEMTIME pStartTime,
+ PSYSTEMTIME pEndTime, PCERT_EXTENSIONS pExtensions);
+
+BOOL WINAPI CertDeleteCertificateFromStore(PCCERT_CONTEXT pCertContext);
+
+BOOL WINAPI CertDeleteCRLFromStore(PCCRL_CONTEXT pCrlContext);
+
+BOOL WINAPI CertDeleteCTLFromStore(PCCTL_CONTEXT pCtlContext);
+
+PCCERT_CONTEXT WINAPI CertDuplicateCertificateContext(
+ PCCERT_CONTEXT pCertContext);
+
+PCCRL_CONTEXT WINAPI CertDuplicateCRLContext(PCCRL_CONTEXT pCrlContext);
+
+PCCTL_CONTEXT WINAPI CertDuplicateCTLContext(PCCTL_CONTEXT pCtlContext);
+
+PCCERT_CONTEXT WINAPI CertFindCertificateInStore( HCERTSTORE hCertStore,
+ DWORD dwCertEncodingType, DWORD dwFindFlags, DWORD dwFindType,
+ const void *pvFindPara, PCCERT_CONTEXT pPrevCertContext );
+
+PCCRL_CONTEXT WINAPI CertFindCRLInStore(HCERTSTORE hCertStore,
+ DWORD dwCertEncodingType, DWORD dwFindFlags, DWORD dwFindType,
+ const void *pvFindPara, PCCRL_CONTEXT pPrevCrlContext);
+
+PCCTL_CONTEXT WINAPI CertFindCTLInStore(HCERTSTORE hCertStore,
+ DWORD dwCertEncodingType, DWORD dwFindFlags, DWORD dwFindType,
+ const void *pvFindPara, PCCTL_CONTEXT pPrevCtlContext);
+
+PCCERT_CONTEXT WINAPI CertGetIssuerCertificateFromStore(HCERTSTORE hCertStore,
+ PCCERT_CONTEXT pSubjectContext, PCCERT_CONTEXT pPrevIssuerContext,
+ DWORD *pdwFlags);
+
+PCCERT_CONTEXT WINAPI CertGetSubjectCertificateFromStore(HCERTSTORE hCertStore,
+ DWORD dwCertEncodingType, PCERT_INFO pCertId);
+
+PCCRL_CONTEXT WINAPI CertGetCRLFromStore(HCERTSTORE hCertStore,
+ PCCERT_CONTEXT pIssuerContext, PCCRL_CONTEXT pPrevCrlContext, DWORD *pdwFlags);
+
+BOOL WINAPI CertSerializeCertificateStoreElement(PCCERT_CONTEXT pCertContext,
+ DWORD dwFlags, BYTE *pbElement, DWORD *pcbElement);
+
+BOOL WINAPI CertSerializeCRLStoreElement(PCCRL_CONTEXT pCrlContext,
+ DWORD dwFlags, BYTE *pbElement, DWORD *pcbElement);
+
+BOOL WINAPI CertSerializeCTLStoreElement(PCCTL_CONTEXT pCtlContext,
+ DWORD dwFlags, BYTE *pbElement, DWORD *pcbElement);
+
+BOOL WINAPI CertGetEnhancedKeyUsage(PCCERT_CONTEXT pCertContext, DWORD dwFlags,
+ PCERT_ENHKEY_USAGE pUsage, DWORD *pcbUsage);
+BOOL WINAPI CertSetEnhancedKeyUsage(PCCERT_CONTEXT pCertContext,
+ PCERT_ENHKEY_USAGE pUsage);
+BOOL WINAPI CertAddEnhancedKeyUsageIdentifier(PCCERT_CONTEXT pCertContext,
+ LPCSTR pszUsageIdentifer);
+BOOL WINAPI CertRemoveEnhancedKeyUsageIdentifier(PCCERT_CONTEXT pCertContext,
+ LPCSTR pszUsageIdentifer);
+BOOL WINAPI CertGetValidUsages(DWORD cCerts, PCCERT_CONTEXT *rghCerts,
+ int *cNumOIDs, LPSTR *rghOIDs, DWORD *pcbOIDs);
+
+BOOL WINAPI CryptEncodeObject(DWORD dwCertEncodingType, LPCSTR lpszStructType,
+ const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded);
+BOOL WINAPI CryptEncodeObjectEx(DWORD dwCertEncodingType, LPCSTR lpszStructType,
+ const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara,
+ void *pvEncoded, DWORD *pcbEncoded);
+
+BOOL WINAPI CryptDecodeObject(DWORD dwCertEncodingType, LPCSTR lpszStructType,
+ const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo,
+ DWORD *pcbStructInfo);
+BOOL WINAPI CryptDecodeObjectEx(DWORD dwCertEncodingType, LPCSTR lpszStructType,
+ const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags,
+ PCRYPT_DECODE_PARA pDecodePara, void *pvStructInfo, DWORD *pcbStructInfo);
+
+BOOL WINAPI CryptFormatObject(DWORD dwCertEncodingType, DWORD dwFormatType,
+ DWORD dwFormatStrType, void *pFormatStruct, LPCSTR lpszStructType,
+ const BYTE *pbEncoded, DWORD cbEncoded, void *pbFormat, DWORD *pcbFormat);
+
+BOOL WINAPI CryptHashCertificate(HCRYPTPROV_LEGACY hCryptProv, ALG_ID Algid,
+ DWORD dwFlags, const BYTE *pbEncoded, DWORD cbEncoded, BYTE *pbComputedHash,
+ DWORD *pcbComputedHash);
+
+BOOL WINAPI CryptHashPublicKeyInfo(HCRYPTPROV_LEGACY hCryptProv, ALG_ID Algid,
+ DWORD dwFlags, DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo,
+ BYTE *pbComputedHash, DWORD *pcbComputedHash);
+
+BOOL WINAPI CryptHashToBeSigned(HCRYPTPROV_LEGACY hCryptProv, DWORD dwCertEncodingType,
+ const BYTE *pbEncoded, DWORD cbEncoded, BYTE *pbComputedHash,
+ DWORD *pcbComputedHash);
+
+BOOL WINAPI CryptQueryObject(DWORD dwObjectType, const void* pvObject,
+ DWORD dwExpectedContentTypeFlags, DWORD dwExpectedFormatTypeFlags,
+ DWORD dwFlags, DWORD* pdwMsgAndCertEncodingType, DWORD* pdwContentType,
+ DWORD* pdwFormatType, HCERTSTORE* phCertStore, HCRYPTMSG* phMsg,
+ const void** ppvContext);
+
+BOOL WINAPI CryptSignCertificate(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProv, DWORD dwKeySpec,
+ DWORD dwCertEncodingType, const BYTE *pbEncodedToBeSigned,
+ DWORD cbEncodedToBeSigned, PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
+ const void *pvHashAuxInfo, BYTE *pbSignature, DWORD *pcbSignature);
+
+BOOL WINAPI CryptSignAndEncodeCertificate(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProv,
+ DWORD dwKeySpec, DWORD dwCertEncodingType, LPCSTR lpszStructType,
+ const void *pvStructInfo, PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
+ const void *pvHashAuxInfo, BYTE *pbEncoded, DWORD *pcbEncoded);
+
+BOOL WINAPI CryptVerifyCertificateSignature(HCRYPTPROV_LEGACY hCryptProv,
+ DWORD dwCertEncodingType, const BYTE *pbEncoded, DWORD cbEncoded,
+ PCERT_PUBLIC_KEY_INFO pPublicKey);
+
+BOOL WINAPI CryptVerifyCertificateSignatureEx(HCRYPTPROV_LEGACY hCryptProv,
+ DWORD dwCertEncodingType, DWORD dwSubjectType, void *pvSubject,
+ DWORD dwIssuerType, void *pvIssuer, DWORD dwFlags, void *pvReserved);
+
+PCRYPT_ATTRIBUTE WINAPI CertFindAttribute(LPCSTR pszObjId, DWORD cAttr,
+ CRYPT_ATTRIBUTE rgAttr[]);
+PCERT_EXTENSION WINAPI CertFindExtension(LPCSTR pszObjId, DWORD cExtensions,
+ CERT_EXTENSION rgExtensions[]);
+PCERT_RDN_ATTR WINAPI CertFindRDNAttr(LPCSTR pszObjId, PCERT_NAME_INFO pName);
+
+BOOL WINAPI CertFindSubjectInSortedCTL(PCRYPT_DATA_BLOB pSubjectIdentifier,
+ PCCTL_CONTEXT pCtlContext, DWORD dwFlags, void *pvReserved,
+ PCRYPT_DER_BLOB pEncodedAttributes);
+
+BOOL WINAPI CertIsRDNAttrsInCertificateName(DWORD dwCertEncodingType,
+ DWORD dwFlags, PCERT_NAME_BLOB pCertName, PCERT_RDN pRDN);
+
+BOOL WINAPI CertIsValidCRLForCertificate(PCCERT_CONTEXT pCert,
+ PCCRL_CONTEXT pCrl, DWORD dwFlags, void *pvReserved);
+BOOL WINAPI CertFindCertificateInCRL(PCCERT_CONTEXT pCert,
+ PCCRL_CONTEXT pCrlContext, DWORD dwFlags, void *pvReserved,
+ PCRL_ENTRY *ppCrlEntry);
+BOOL WINAPI CertVerifyCRLRevocation(DWORD dwCertEncodingType,
+ PCERT_INFO pCertId, DWORD cCrlInfo, PCRL_INFO rgpCrlInfo[]);
+
+BOOL WINAPI CertVerifySubjectCertificateContext(PCCERT_CONTEXT pSubject,
+ PCCERT_CONTEXT pIssuer, DWORD *pdwFlags);
+
+LONG WINAPI CertVerifyCRLTimeValidity(LPFILETIME pTimeToVerify,
+ PCRL_INFO pCrlInfo);
+LONG WINAPI CertVerifyTimeValidity(LPFILETIME pTimeToVerify,
+ PCERT_INFO pCertInfo);
+BOOL WINAPI CertVerifyValidityNesting(PCERT_INFO pSubjectInfo,
+ PCERT_INFO pIssuerInfo);
+
+BOOL WINAPI CertVerifyCTLUsage(DWORD dwEncodingType, DWORD dwSubjectType,
+ void *pvSubject, PCTL_USAGE pSubjectUsage, DWORD dwFlags,
+ PCTL_VERIFY_USAGE_PARA pVerifyUsagePara,
+ PCTL_VERIFY_USAGE_STATUS pVerifyUsageStatus);
+
+BOOL WINAPI CertVerifyRevocation(DWORD dwEncodingType, DWORD dwRevType,
+ DWORD cContext, PVOID rgpvContext[], DWORD dwFlags,
+ PCERT_REVOCATION_PARA pRevPara, PCERT_REVOCATION_STATUS pRevStatus);
+
+BOOL WINAPI CryptExportPublicKeyInfo(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProv, DWORD dwKeySpec,
+ DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, DWORD *pcbInfo);
+BOOL WINAPI CryptExportPublicKeyInfoEx(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProv, DWORD dwKeySpec,
+ DWORD dwCertEncodingType, LPSTR pszPublicKeyObjId, DWORD dwFlags,
+ void *pvAuxInfo, PCERT_PUBLIC_KEY_INFO pInfo, DWORD *pcbInfo);
+BOOL WINAPI CryptImportPublicKeyInfo(HCRYPTPROV hCryptProv,
+ DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, HCRYPTKEY *phKey);
+BOOL WINAPI CryptImportPublicKeyInfoEx(HCRYPTPROV hCryptProv,
+ DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, ALG_ID aiKeyAlg,
+ DWORD dwFlags, void *pvAuxInfo, HCRYPTKEY *phKey);
+
+BOOL WINAPI CryptAcquireCertificatePrivateKey(PCCERT_CONTEXT pCert,
+ DWORD dwFlags, void *pvReserved, HCRYPTPROV_OR_NCRYPT_KEY_HANDLE *phCryptProv, DWORD *pdwKeySpec,
+ BOOL *pfCallerFreeProv);
+
+BOOL WINAPI CryptProtectData( DATA_BLOB* pDataIn, LPCWSTR szDataDescr,
+ DATA_BLOB* pOptionalEntropy, PVOID pvReserved,
+ CRYPTPROTECT_PROMPTSTRUCT* pPromptStruct, DWORD dwFlags, DATA_BLOB* pDataOut );
+
+BOOL WINAPI CryptUnprotectData( DATA_BLOB* pDataIn, LPWSTR* ppszDataDescr,
+ DATA_BLOB* pOptionalEntropy, PVOID pvReserved,
+ CRYPTPROTECT_PROMPTSTRUCT* pPromptStruct, DWORD dwFlags, DATA_BLOB* pDataOut );
+
+DWORD WINAPI CertGetNameStringA(PCCERT_CONTEXT pCertContext, DWORD dwType,
+ DWORD dwFlags, void *pvTypePara, LPSTR pszNameString, DWORD cchNameString);
+DWORD WINAPI CertGetNameStringW(PCCERT_CONTEXT pCertContext, DWORD dwType,
+ DWORD dwFlags, void *pvTypePara, LPWSTR pszNameString, DWORD cchNameString);
+#define CertGetNameString WINELIB_NAME_AW(CertGetNameString)
+
+DWORD WINAPI CertRDNValueToStrA(DWORD dwValueType, PCERT_RDN_VALUE_BLOB pValue,
+ LPSTR psz, DWORD csz);
+DWORD WINAPI CertRDNValueToStrW(DWORD dwValueType, PCERT_RDN_VALUE_BLOB pValue,
+ LPWSTR psz, DWORD csz);
+#define CertRDNValueToStr WINELIB_NAME_AW(CertRDNValueToStr)
+
+DWORD WINAPI CertNameToStrA(DWORD dwCertEncodingType, PCERT_NAME_BLOB pName,
+ DWORD dwStrType, LPSTR psz, DWORD csz);
+DWORD WINAPI CertNameToStrW(DWORD dwCertEncodingType, PCERT_NAME_BLOB pName,
+ DWORD dwStrType, LPWSTR psz, DWORD csz);
+#define CertNameToStr WINELIB_NAME_AW(CertNameToStr)
+
+BOOL WINAPI CertStrToNameA(DWORD dwCertEncodingType, LPCSTR pszX500,
+ DWORD dwStrType, void *pvReserved, BYTE *pbEncoded, DWORD *pcbEncoded,
+ LPCSTR *ppszError);
+BOOL WINAPI CertStrToNameW(DWORD dwCertEncodingType, LPCWSTR pszX500,
+ DWORD dwStrType, void *pvReserved, BYTE *pbEncoded, DWORD *pcbEncoded,
+ LPCWSTR *ppszError);
+#define CertStrToName WINELIB_NAME_AW(CertStrToName)
+
+DWORD WINAPI CryptMsgCalculateEncodedLength(DWORD dwMsgEncodingType,
+ DWORD dwFlags, DWORD dwMsgType, const void *pvMsgEncodeInfo,
+ LPSTR pszInnerContentObjID, DWORD cbData);
+
+BOOL WINAPI CryptMsgClose(HCRYPTMSG hCryptMsg);
+
+BOOL WINAPI CryptMsgControl(HCRYPTMSG hCryptMsg, DWORD dwFlags,
+ DWORD dwCtrlType, const void *pvCtrlPara);
+
+BOOL WINAPI CryptMsgCountersign(HCRYPTMSG hCryptMsg, DWORD dwIndex,
+ DWORD dwCountersigners, PCMSG_SIGNER_ENCODE_INFO rgCountersigners);
+
+BOOL WINAPI CryptMsgCountersignEncoded(DWORD dwEncodingType, PBYTE pbSignerInfo,
+ DWORD cbSignerInfo, DWORD cCountersigners,
+ PCMSG_SIGNER_ENCODE_INFO rgCountersigners, PBYTE pbCountersignature,
+ PDWORD pcbCountersignature);
+
+HCRYPTMSG WINAPI CryptMsgDuplicate(HCRYPTMSG hCryptMsg);
+
+BOOL WINAPI CryptMsgEncodeAndSignCTL(DWORD dwMsgEncodingType,
+ PCTL_INFO pCtlInfo, PCMSG_SIGNED_ENCODE_INFO pSignInfo, DWORD dwFlags,
+ BYTE *pbEncoded, DWORD *pcbEncoded);
+
+BOOL WINAPI CryptMsgGetAndVerifySigner(HCRYPTMSG hCryptMsg, DWORD cSignerStore,
+ HCERTSTORE *rghSignerStore, DWORD dwFlags, PCCERT_CONTEXT *ppSigner,
+ DWORD *pdwSignerIndex);
+
+BOOL WINAPI CryptMsgGetParam(HCRYPTMSG hCryptMsg, DWORD dwParamType,
+ DWORD dwIndex, void *pvData, DWORD *pcbData);
+
+HCRYPTMSG WINAPI CryptMsgOpenToDecode(DWORD dwMsgEncodingType, DWORD dwFlags,
+ DWORD dwMsgType, HCRYPTPROV_LEGACY hCryptProv, PCERT_INFO pRecipientInfo,
+ PCMSG_STREAM_INFO pStreamInfo);
+
+HCRYPTMSG WINAPI CryptMsgOpenToEncode(DWORD dwMsgEncodingType, DWORD dwFlags,
+ DWORD dwMsgType, const void *pvMsgEncodeInfo, LPSTR pszInnerContentObjID,
+ PCMSG_STREAM_INFO pStreamInfo);
+
+BOOL WINAPI CryptMsgSignCTL(DWORD dwMsgEncodingType, BYTE *pbCtlContent,
+ DWORD cbCtlContent, PCMSG_SIGNED_ENCODE_INFO pSignInfo, DWORD dwFlags,
+ BYTE *pbEncoded, DWORD *pcbEncoded);
+
+BOOL WINAPI CryptMsgUpdate(HCRYPTMSG hCryptMsg, const BYTE *pbData,
+ DWORD cbData, BOOL fFinal);
+
+BOOL WINAPI CryptMsgVerifyCountersignatureEncoded(HCRYPTPROV_LEGACY hCryptProv,
+ DWORD dwEncodingType, PBYTE pbSignerInfo, DWORD cbSignerInfo,
+ PBYTE pbSignerInfoCountersignature, DWORD cbSignerInfoCountersignature,
+ PCERT_INFO pciCountersigner);
+
+BOOL WINAPI CryptMsgVerifyCountersignatureEncodedEx(HCRYPTPROV_LEGACY hCryptProv,
+ DWORD dwEncodingType, PBYTE pbSignerInfo, DWORD cbSignerInfo,
+ PBYTE pbSignerInfoCountersignature, DWORD cbSignerInfoCountersignature,
+ DWORD dwSignerType, void *pvSigner, DWORD dwFlags, void *pvReserved);
+
+BOOL WINAPI CryptSignMessage(PCRYPT_SIGN_MESSAGE_PARA pSignPara,
+ BOOL fDetachedSignature, DWORD cToBeSigned, const BYTE *rgpbToBeSigned[],
+ DWORD rgcbToBeSigned[], BYTE *pbSignedBlob, DWORD *pcbSignedBlob);
+BOOL WINAPI CryptSignMessageWithKey(PCRYPT_KEY_SIGN_MESSAGE_PARA pSignPara,
+ const BYTE *pbToBeSigned, DWORD cbToBeSigned, BYTE *pbSignedBlob,
+ DWORD *pcbSignedBlob);
+
+BOOL WINAPI CryptVerifyMessageSignature(PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara,
+ DWORD dwSignerIndex, const BYTE* pbSignedBlob, DWORD cbSignedBlob,
+ BYTE* pbDecoded, DWORD* pcbDecoded, PCCERT_CONTEXT* ppSignerCert);
+BOOL WINAPI CryptVerifyMessageSignatureWithKey(
+ PCRYPT_KEY_VERIFY_MESSAGE_PARA pVerifyPara,
+ PCERT_PUBLIC_KEY_INFO pPublicKeyInfo, const BYTE *pbSignedBlob,
+ DWORD cbSignedBlob, BYTE *pbDecoded, DWORD *pcbDecoded);
+
+BOOL WINAPI CryptVerifyDetachedMessageSignature(
+ PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara, DWORD dwSignerIndex,
+ const BYTE *pbDetachedSignBlob, DWORD cbDetachedSignBlob, DWORD cToBeSigned,
+ const BYTE *rgpbToBeSigned[], DWORD rgcbToBeSigned[],
+ PCCERT_CONTEXT *ppSignerCert);
+LONG WINAPI CryptGetMessageSignerCount(DWORD dwMsgEncodingType,
+ const BYTE *pbSignedBlob, DWORD cbSignedBlob);
+
+BOOL WINAPI CryptEncryptMessage(PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara,
+ DWORD cRecipientCert, PCCERT_CONTEXT rgpRecipientCert[],
+ const BYTE *pbToBeEncrypted, DWORD cbToBeEncrypted, BYTE *pbEncryptedBlob,
+ DWORD *pcbEncryptedBlob);
+BOOL WINAPI CryptDecryptMessage(PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara,
+ const BYTE *pbEncryptedBlob, DWORD cbEncryptedBlob, BYTE *pbDecrypted,
+ DWORD *pcbDecrypted, PCCERT_CONTEXT *ppXchgCert);
+
+BOOL WINAPI CryptSignAndEncryptMessage(PCRYPT_SIGN_MESSAGE_PARA pSignPara,
+ PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara, DWORD cRecipientCert,
+ PCCERT_CONTEXT rgpRecipientCert[], const BYTE *pbToBeSignedAndEncrypted,
+ DWORD cbToBeSignedAndEncrypted, BYTE *pbSignedAndEncryptedBlob,
+ DWORD *pcbSignedAndEncryptedBlob);
+BOOL WINAPI CryptDecryptAndVerifyMessageSignature(
+ PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara,
+ PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara, DWORD dwSignerIndex,
+ const BYTE *pbEncryptedBlob, DWORD cbEncryptedBlob, BYTE *pbDecrypted,
+ DWORD *pcbDecrypted, PCCERT_CONTEXT *ppXchgCert, PCCERT_CONTEXT *ppSignerCert);
+
+HCERTSTORE WINAPI CryptGetMessageCertificates(DWORD dwMsgAndCertEncodingType,
+ HCRYPTPROV_LEGACY hCryptProv, DWORD dwFlags, const BYTE *pbSignedBlob,
+ DWORD cbSignedBlob);
+
+BOOL WINAPI CryptDecodeMessage(DWORD dwMsgTypeFlags,
+ PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara,
+ PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara, DWORD dwSignerIndex,
+ const BYTE *pbEncodedBlob, DWORD cbEncodedBlob, DWORD dwPrevInnerContentType,
+ DWORD *pdwMsgType, DWORD *pdwInnerContentType, BYTE *pbDecoded,
+ DWORD *pcbDecoded, PCCERT_CONTEXT *ppXchgCert, PCCERT_CONTEXT *ppSignerCert);
+
+BOOL WINAPI CryptHashMessage(PCRYPT_HASH_MESSAGE_PARA pHashPara,
+ BOOL fDetachedHash, DWORD cToBeHashed, const BYTE *rgpbToBeHashed[],
+ DWORD rgcbToBeHashed[], BYTE *pbHashedBlob, DWORD *pcbHashedBlob,
+ BYTE *pbComputedHash, DWORD *pcbComputedHash);
+BOOL WINAPI CryptVerifyMessageHash(PCRYPT_HASH_MESSAGE_PARA pHashPara,
+ BYTE *pbHashedBlob, DWORD cbHashedBlob, BYTE *pbToBeHashed,
+ DWORD *pcbToBeHashed, BYTE *pbComputedHash, DWORD *pcbComputedHash);
+BOOL WINAPI CryptVerifyDetachedMessageHash(PCRYPT_HASH_MESSAGE_PARA pHashPara,
+ BYTE *pbDetachedHashBlob, DWORD cbDetachedHashBlob, DWORD cToBeHashed,
+ const BYTE *rgpbToBeHashed[], DWORD rgcbToBeHashed[], BYTE *pbComputedHash,
+ DWORD *pcbComputedHash);
+
+/* cryptnet.dll functions */
+BOOL WINAPI CryptCancelAsyncRetrieval(HCRYPTASYNC hAsyncRetrieval);
+
+BOOL WINAPI CryptGetObjectUrl(LPCSTR pszUrlOid, LPVOID pvPara, DWORD dwFlags,
+ PCRYPT_URL_ARRAY pUrlArray, DWORD *pcbUrlArray, PCRYPT_URL_INFO pUrlInfo,
+ DWORD *pcbUrlInfo, LPVOID pvReserved);
+
+BOOL WINAPI CryptGetTimeValidObject(LPCSTR pszTimeValidOid, void *pvPara,
+ PCCERT_CONTEXT pIssuer, LPFILETIME pftValidFor, DWORD dwFlags, DWORD dwTimeout,
+ void **ppvObject, PCRYPT_CREDENTIALS pCredentials, void *pvReserved);
+
+BOOL WINAPI CryptFlushTimeValidObject(LPCSTR pszFlushTimeValidOid, void *pvPara,
+ PCCERT_CONTEXT pIssuer, DWORD dwFlags, void *pvReserved);
+
+BOOL WINAPI CryptInstallCancelRetrieval(PFN_CRYPT_CANCEL_RETRIEVAL pfnCancel,
+ const void *pvArg, DWORD dwFlags, void *pvReserved);
+
+BOOL WINAPI CryptUninstallCancelRetrieval(DWORD dwFlags, void *pvReserved);
+
+BOOL WINAPI CryptRetrieveObjectByUrlA(LPCSTR pszURL, LPCSTR pszObjectOid,
+ DWORD dwRetrievalFlags, DWORD dwTimeout, LPVOID *ppvObject,
+ HCRYPTASYNC hAsyncRetrieve, PCRYPT_CREDENTIALS pCredentials, LPVOID pvVerify,
+ PCRYPT_RETRIEVE_AUX_INFO pAuxInfo);
+BOOL WINAPI CryptRetrieveObjectByUrlW(LPCWSTR pszURL, LPCSTR pszObjectOid,
+ DWORD dwRetrievalFlags, DWORD dwTimeout, LPVOID *ppvObject,
+ HCRYPTASYNC hAsyncRetrieve, PCRYPT_CREDENTIALS pCredentials, LPVOID pvVerify,
+ PCRYPT_RETRIEVE_AUX_INFO pAuxInfo);
+#define CryptRetrieveObjectByUrl WINELIB_NAME_AW(CryptRetrieveObjectByUrl)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/windef.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/windef.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/windef.h	(revision 16410)
@@ -0,0 +1,397 @@
+/*
+ * Basic types definitions
+ *
+ * Copyright 1996 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _WINDEF_
+#define _WINDEF_
+
+#ifndef WINVER
+#define WINVER 0x0500
+#endif
+
+#ifndef NO_STRICT
+# ifndef STRICT
+#  define STRICT
+# endif /* STRICT */
+#endif /* NO_STRICT */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Calling conventions definitions */
+
+#if defined(__i386__) && !defined(_X86_)
+# define _X86_
+#endif
+
+#if defined(_X86_) && !defined(__i386__)
+# define __i386__
+#endif
+
+#if defined(__x86_64__) && !defined(_WIN64)
+#define _WIN64
+#endif
+
+#ifndef __stdcall
+# ifdef __i386__
+#  ifdef __GNUC__
+#   ifdef __APPLE__ /* Mac OS X uses a 16-byte aligned stack and not a 4-byte one */
+#    define __stdcall __attribute__((__stdcall__)) __attribute__((__force_align_arg_pointer__))
+#   else
+#    define __stdcall __attribute__((__stdcall__))
+#   endif
+#  elif defined(_MSC_VER)
+    /* Nothing needs to be done. __stdcall already exists */
+#  else
+#   error You need to define __stdcall for your compiler
+#  endif
+# elif defined(__x86_64__) && defined (__GNUC__)
+#  define __stdcall __attribute__((ms_abi))
+# else  /* __i386__ */
+#  define __stdcall
+# endif  /* __i386__ */
+#endif /* __stdcall */
+
+#ifndef __cdecl
+# if defined(__i386__) && defined(__GNUC__)
+#  ifdef __APPLE__ /* Mac OS X uses 16-byte aligned stack and not a 4-byte one */
+#   define __cdecl __attribute__((__cdecl__)) __attribute__((__force_align_arg_pointer__))
+#  else
+#   define __cdecl __attribute__((__cdecl__))
+#  endif
+# elif defined(__x86_64__) && defined (__GNUC__)
+#  define __cdecl __attribute__((ms_abi))
+# elif !defined(_MSC_VER)
+#  define __cdecl
+# endif
+#endif /* __cdecl */
+
+#ifdef __WINESRC__
+#define __ONLY_IN_WINELIB(x)	do_not_use_this_in_wine
+#else
+#define __ONLY_IN_WINELIB(x)	x
+#endif
+
+#ifndef pascal
+#define pascal      __ONLY_IN_WINELIB(__stdcall)
+#endif
+#ifndef _pascal
+#define _pascal	    __ONLY_IN_WINELIB(__stdcall)
+#endif
+#ifndef _stdcall
+#define _stdcall    __ONLY_IN_WINELIB(__stdcall)
+#endif
+#ifndef _fastcall
+#define _fastcall   __ONLY_IN_WINELIB(__stdcall)
+#endif
+#ifndef __fastcall
+#define __fastcall  __ONLY_IN_WINELIB(__stdcall)
+#endif
+#ifndef __export
+#define __export    __ONLY_IN_WINELIB(__stdcall)
+#endif
+#ifndef cdecl
+#define cdecl       __ONLY_IN_WINELIB(__cdecl)
+#endif
+#ifndef _cdecl
+#define _cdecl      __ONLY_IN_WINELIB(__cdecl)
+#endif
+
+#ifndef near
+#define near        __ONLY_IN_WINELIB(/* nothing */)
+#endif
+#ifndef far
+#define far         __ONLY_IN_WINELIB(/* nothing */)
+#endif
+#ifndef _near
+#define _near       __ONLY_IN_WINELIB(/* nothing */)
+#endif
+#ifndef _far
+#define _far        __ONLY_IN_WINELIB(/* nothing */)
+#endif
+#ifndef NEAR
+#define NEAR        __ONLY_IN_WINELIB(/* nothing */)
+#endif
+#ifndef FAR
+#define FAR         __ONLY_IN_WINELIB(/* nothing */)
+#endif
+
+#ifndef _MSC_VER
+# ifndef _declspec
+#  define _declspec(x)    __ONLY_IN_WINELIB(/* nothing */)
+# endif
+# ifndef __declspec
+#  define __declspec(x)   __ONLY_IN_WINELIB(/* nothing */)
+# endif
+#endif
+
+#ifdef _MSC_VER
+# define inline __inline
+#endif
+
+#define CALLBACK    __stdcall
+#define WINAPI      __stdcall
+#define APIPRIVATE  __stdcall
+#define PASCAL      __stdcall
+#define CDECL       __cdecl
+#define _CDECL      __cdecl
+#define WINAPIV     __cdecl
+#define APIENTRY    WINAPI
+#define CONST       const
+
+/* Misc. constants. */
+
+#undef NULL
+#ifdef __cplusplus
+#define NULL  0
+#else
+#define NULL  ((void*)0)
+#endif
+
+#ifdef FALSE
+#undef FALSE
+#endif
+#define FALSE 0
+
+#ifdef TRUE
+#undef TRUE
+#endif
+#define TRUE  1
+
+#ifndef IN
+#define IN
+#endif
+
+#ifndef OUT
+#define OUT
+#endif
+
+#ifndef OPTIONAL
+#define OPTIONAL
+#endif
+
+/* Standard data types */
+
+typedef void                                   *LPVOID;
+typedef const void                             *LPCVOID;
+typedef int             BOOL,       *PBOOL,    *LPBOOL;
+typedef unsigned char   BYTE,       *PBYTE,    *LPBYTE;
+typedef unsigned char   UCHAR,      *PUCHAR;
+typedef unsigned short  WORD,       *PWORD,    *LPWORD;
+typedef unsigned short  USHORT,     *PUSHORT;
+typedef int             INT,        *PINT,     *LPINT;
+typedef unsigned int    UINT,       *PUINT;
+typedef float           FLOAT,      *PFLOAT;
+typedef char                        *PSZ;
+#ifdef _MSC_VER
+typedef long                                   *LPLONG;
+typedef unsigned long   DWORD,      *PDWORD,   *LPDWORD;
+typedef unsigned long   ULONG,      *PULONG;
+#else
+typedef int                                    *LPLONG;
+typedef unsigned int    DWORD,      *PDWORD,   *LPDWORD;
+typedef unsigned int    ULONG,      *PULONG;
+#endif
+
+/* Macros to map Winelib names to the correct implementation name */
+/* Note that Winelib is purely Win32.                             */
+
+#ifdef __WINESRC__
+#define WINE_NO_UNICODE_MACROS
+#endif
+
+#ifdef WINE_NO_UNICODE_MACROS
+# define WINELIB_NAME_AW(func) \
+    func##_must_be_suffixed_with_W_or_A_in_this_context \
+    func##_must_be_suffixed_with_W_or_A_in_this_context
+#else  /* WINE_NO_UNICODE_MACROS */
+# ifdef UNICODE
+#  define WINELIB_NAME_AW(func) func##W
+# else
+#  define WINELIB_NAME_AW(func) func##A
+# endif
+#endif  /* WINE_NO_UNICODE_MACROS */
+
+#ifdef WINE_NO_UNICODE_MACROS
+# define DECL_WINELIB_TYPE_AW(type)  /* nothing */
+#else
+# define DECL_WINELIB_TYPE_AW(type)  typedef WINELIB_NAME_AW(type) type;
+#endif
+
+#include <winnt.h>
+
+/* Polymorphic types */
+
+typedef UINT_PTR        WPARAM;
+typedef LONG_PTR        LPARAM;
+typedef LONG_PTR        LRESULT;
+
+/* Integer types */
+
+typedef WORD            ATOM;
+typedef DWORD           COLORREF, *LPCOLORREF;
+
+
+/* Handle types */
+
+typedef int HFILE;
+DECLARE_HANDLE(HACCEL);
+DECLARE_HANDLE(HBITMAP);
+DECLARE_HANDLE(HBRUSH);
+DECLARE_HANDLE(HCOLORSPACE);
+DECLARE_HANDLE(HDC);
+DECLARE_HANDLE(HDESK);
+DECLARE_HANDLE(HENHMETAFILE);
+DECLARE_HANDLE(HFONT);
+DECLARE_HANDLE(HGLRC);
+DECLARE_HANDLE(HHOOK);
+DECLARE_HANDLE(HICON);
+DECLARE_HANDLE(HINSTANCE);
+DECLARE_HANDLE(HKEY);
+typedef HKEY *PHKEY;
+DECLARE_HANDLE(HKL);
+DECLARE_HANDLE(HMENU);
+DECLARE_HANDLE(HMETAFILE);
+DECLARE_HANDLE(HMONITOR);
+DECLARE_HANDLE(HPALETTE);
+DECLARE_HANDLE(HPEN);
+DECLARE_HANDLE(HRGN);
+DECLARE_HANDLE(HRSRC);
+DECLARE_HANDLE(HTASK);
+DECLARE_HANDLE(HWINEVENTHOOK);
+DECLARE_HANDLE(HWINSTA);
+DECLARE_HANDLE(HWND);
+
+/* Handle types that must remain interchangeable even with strict on */
+
+typedef HINSTANCE HMODULE;
+typedef HANDLE HGDIOBJ;
+typedef HANDLE HGLOBAL;
+typedef HANDLE HLOCAL;
+typedef HANDLE GLOBALHANDLE;
+typedef HANDLE LOCALHANDLE;
+typedef HICON HCURSOR;
+
+/* Callback function pointers types */
+
+typedef INT_PTR (CALLBACK *FARPROC)();
+typedef INT_PTR (CALLBACK *NEARPROC)();
+typedef INT_PTR (CALLBACK *PROC)();
+
+
+/* Macros to split words and longs. */
+
+#define LOBYTE(w)              ((BYTE)((DWORD_PTR)(w) & 0xFF))
+#define HIBYTE(w)              ((BYTE)((DWORD_PTR)(w) >> 8))
+
+#define LOWORD(l)              ((WORD)((DWORD_PTR)(l) & 0xFFFF))
+#define HIWORD(l)              ((WORD)((DWORD_PTR)(l) >> 16))
+
+#define MAKEWORD(low,high)     ((WORD)(((BYTE)((DWORD_PTR)(low) & 0xFF)) | ((WORD)((BYTE)((DWORD_PTR)(high) & 0xFF))) << 8))
+#define MAKELONG(low,high)     ((LONG)(((WORD)((DWORD_PTR)(low) & 0xFFFF)) | ((DWORD)((WORD)((DWORD_PTR)(high) & 0xFFFF))) << 16))
+
+/* min and max macros */
+#ifndef NOMINMAX
+#ifndef max
+#define max(a,b)   (((a) > (b)) ? (a) : (b))
+#endif
+#ifndef min
+#define min(a,b)   (((a) < (b)) ? (a) : (b))
+#endif
+#endif  /* NOMINMAX */
+
+#ifdef MAX_PATH /* Work-around for Mingw */ 
+#undef MAX_PATH
+#endif /* MAX_PATH */
+
+#define MAX_PATH        260
+#define HFILE_ERROR     ((HFILE)-1)
+
+/* The SIZE structure */
+typedef struct tagSIZE
+{
+    LONG cx;
+    LONG cy;
+} SIZE, *PSIZE, *LPSIZE;
+
+typedef SIZE SIZEL, *PSIZEL, *LPSIZEL;
+
+/* The POINT structure */
+typedef struct tagPOINT
+{
+    LONG  x;
+    LONG  y;
+} POINT, *PPOINT, *LPPOINT;
+
+typedef struct _POINTL
+{
+    LONG x;
+    LONG y;
+} POINTL, *PPOINTL;
+
+/* The POINTS structure */
+
+typedef struct tagPOINTS
+{
+#ifdef WORDS_BIGENDIAN
+    SHORT y;
+    SHORT x;
+#else
+    SHORT x;
+    SHORT y;
+#endif
+} POINTS, *PPOINTS, *LPPOINTS;
+
+typedef struct _FILETIME {
+#ifdef WORDS_BIGENDIAN
+    DWORD  dwHighDateTime;
+    DWORD  dwLowDateTime;
+#else
+    DWORD  dwLowDateTime;
+    DWORD  dwHighDateTime;
+#endif
+} FILETIME, *PFILETIME, *LPFILETIME;
+#define _FILETIME_
+
+/* The RECT structure */
+typedef struct tagRECT
+{
+    LONG left;
+    LONG top;
+    LONG right;
+    LONG bottom;
+} RECT, *PRECT, *LPRECT;
+typedef const RECT *LPCRECT;
+
+typedef struct _RECTL
+{
+    LONG left;
+    LONG top;
+    LONG right;
+    LONG bottom;
+} RECTL, *PRECTL, *LPRECTL;
+
+typedef const RECTL *LPCRECTL;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _WINDEF_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/windns.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/windns.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/windns.h	(revision 16410)
@@ -0,0 +1,656 @@
+/*
+ * DNS support
+ *
+ * Copyright (C) 2006 Matthew Kehrer
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINDNS_H
+#define __WINE_WINDNS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define DNS_TYPE_ZERO       0x0000
+#define DNS_TYPE_A          0x0001
+#define DNS_TYPE_NS         0x0002
+#define DNS_TYPE_MD         0x0003
+#define DNS_TYPE_MF         0x0004
+#define DNS_TYPE_CNAME      0x0005
+#define DNS_TYPE_SOA        0x0006
+#define DNS_TYPE_MB         0x0007
+#define DNS_TYPE_MG         0x0008
+#define DNS_TYPE_MR         0x0009
+#define DNS_TYPE_NULL       0x000a
+#define DNS_TYPE_WKS        0x000b
+#define DNS_TYPE_PTR        0x000c
+#define DNS_TYPE_HINFO      0x000d
+#define DNS_TYPE_MINFO      0x000e
+#define DNS_TYPE_MX         0x000f
+#define DNS_TYPE_TEXT       0x0010
+#define DNS_TYPE_RP         0x0011
+#define DNS_TYPE_AFSDB      0x0012
+#define DNS_TYPE_X25        0x0013
+#define DNS_TYPE_ISDN       0x0014
+#define DNS_TYPE_RT         0x0015
+#define DNS_TYPE_NSAP       0x0016
+#define DNS_TYPE_NSAPPTR    0x0017
+#define DNS_TYPE_SIG        0x0018
+#define DNS_TYPE_KEY        0x0019
+#define DNS_TYPE_PX         0x001a
+#define DNS_TYPE_GPOS       0x001b
+#define DNS_TYPE_AAAA       0x001c
+#define DNS_TYPE_LOC        0x001d
+#define DNS_TYPE_NXT        0x001e
+#define DNS_TYPE_EID        0x001f
+#define DNS_TYPE_NIMLOC     0x0020
+#define DNS_TYPE_SRV        0x0021
+#define DNS_TYPE_ATMA       0x0022
+#define DNS_TYPE_NAPTR      0x0023
+#define DNS_TYPE_KX         0x0024
+#define DNS_TYPE_CERT       0x0025
+#define DNS_TYPE_A6         0x0026
+#define DNS_TYPE_DNAME      0x0027
+#define DNS_TYPE_SINK       0x0028
+#define DNS_TYPE_OPT        0x0029
+#define DNS_TYPE_UINFO      0x0064
+#define DNS_TYPE_UID        0x0065
+#define DNS_TYPE_GID        0x0066
+#define DNS_TYPE_UNSPEC     0x0067
+#define DNS_TYPE_ADDRS      0x00f8
+#define DNS_TYPE_TKEY       0x00f9
+#define DNS_TYPE_TSIG       0x00fa
+#define DNS_TYPE_IXFR       0x00fb
+#define DNS_TYPE_AXFR       0x00fc
+#define DNS_TYPE_MAILB      0x00fd
+#define DNS_TYPE_MAILA      0x00fe
+#define DNS_TYPE_ALL        0x00ff
+#define DNS_TYPE_ANY        0x00ff
+
+#define DNS_TYPE_WINS       0xff01
+#define DNS_TYPE_WINSR      0xff02
+#define DNS_TYPE_NBSTAT     (DNS_TYPE_WINSR)
+
+#define DNS_QUERY_STANDARD                  0x00000000
+#define DNS_QUERY_ACCEPT_TRUNCATED_RESPONSE 0x00000001
+#define DNS_QUERY_USE_TCP_ONLY              0x00000002
+#define DNS_QUERY_NO_RECURSION              0x00000004
+#define DNS_QUERY_BYPASS_CACHE              0x00000008
+#define DNS_QUERY_NO_WIRE_QUERY             0x00000010
+#define DNS_QUERY_NO_LOCAL_NAME             0x00000020
+#define DNS_QUERY_NO_HOSTS_FILE             0x00000040
+#define DNS_QUERY_NO_NETBT                  0x00000080
+#define DNS_QUERY_WIRE_ONLY                 0x00000100
+#define DNS_QUERY_RETURN_MESSAGE            0x00000200
+#define DNS_QUERY_TREAT_AS_FQDN             0x00001000
+#define DNS_QUERY_DONT_RESET_TTL_VALUES     0x00100000
+#define DNS_QUERY_RESERVED                  0xff000000
+
+typedef enum _DNS_NAME_FORMAT
+{
+    DnsNameDomain,
+    DnsNameDomainLabel,
+    DnsNameHostnameFull,
+    DnsNameHostnameLabel,
+    DnsNameWildcard,
+    DnsNameSrvRecord
+} DNS_NAME_FORMAT;
+
+typedef enum _DNS_FREE_TYPE
+{
+    DnsFreeFlat,
+    DnsFreeRecordList,
+    DnsFreeParsedMessageFields
+} DNS_FREE_TYPE;
+
+typedef enum _DNS_CHARSET
+{
+    DnsCharSetUnknown,
+    DnsCharSetUnicode,
+    DnsCharSetUtf8,
+    DnsCharSetAnsi
+} DNS_CHARSET;
+
+typedef enum _DNS_CONFIG_TYPE
+{
+    DnsConfigPrimaryDomainName_W,
+    DnsConfigPrimaryDomainName_A,
+    DnsConfigPrimaryDomainName_UTF8,
+    DnsConfigAdapterDomainName_W,
+    DnsConfigAdapterDomainName_A,
+    DnsConfigAdapterDomainName_UTF8,
+    DnsConfigDnsServerList,
+    DnsConfigSearchList,
+    DnsConfigAdapterInfo,
+    DnsConfigPrimaryHostNameRegistrationEnabled,
+    DnsConfigAdapterHostNameRegistrationEnabled,
+    DnsConfigAddressRegistrationMaxCount,
+    DnsConfigHostName_W,
+    DnsConfigHostName_A,
+    DnsConfigHostName_UTF8,
+    DnsConfigFullHostName_W,
+    DnsConfigFullHostName_A,
+    DnsConfigFullHostName_UTF8
+} DNS_CONFIG_TYPE;
+
+typedef enum _DnsSection
+{
+    DnsSectionQuestion,
+    DnsSectionAnswer,
+    DnsSectionAuthority,
+    DnsSectionAddtional /* Not a typo, as per Microsoft's headers */
+} DNS_SECTION;
+
+typedef LONG DNS_STATUS, *PDNS_STATUS;
+typedef DWORD IP4_ADDRESS, *PIP4_ADDRESS;
+
+typedef struct
+{
+    DWORD IP6Dword[4];
+} IP6_ADDRESS, *PIP6_ADDRESS, DNS_IP6_ADDRESS, *PDNS_IP6_ADDRESS;
+
+#define SIZEOF_IP4_ADDRESS                   4
+#define IP4_ADDRESS_STRING_LENGTH           16
+#define IP6_ADDRESS_STRING_LENGTH           65
+#define DNS_ADDRESS_STRING_LENGTH           IP6_ADDRESS_STRING_LENGTH
+#define IP4_ADDRESS_STRING_BUFFER_LENGTH    IP4_ADDRESS_STRING_LENGTH
+#define IP6_ADDRESS_STRING_BUFFER_LENGTH    IP6_ADDRESS_STRING_LENGTH
+
+typedef struct _IP4_ARRAY
+{
+    DWORD AddrCount;
+    IP4_ADDRESS AddrArray[1];
+} IP4_ARRAY, *PIP4_ARRAY;
+
+typedef struct _DNS_HEADER
+{
+    WORD Xid;
+    BYTE RecursionDesired;
+    BYTE Truncation;
+    BYTE Authoritative;
+    BYTE Opcode;
+    BYTE IsResponse;
+    BYTE ResponseCode;
+    BYTE Reserved;
+    BYTE RecursionAvailable;
+    WORD QuestionCount;
+    WORD AnswerCount;
+    WORD NameServerCount;
+    WORD AdditionalCount;
+} DNS_HEADER, *PDNS_HEADER;
+
+typedef struct _DNS_MESSAGE_BUFFER
+{
+    DNS_HEADER MessageHead;
+    CHAR MessageBody[1];
+} DNS_MESSAGE_BUFFER, *PDNS_MESSAGE_BUFFER;
+
+typedef struct
+{
+    IP4_ADDRESS IpAddress;
+} DNS_A_DATA, *PDNS_A_DATA;
+
+typedef struct _DnsRecordFlags
+{
+    DWORD Section :2;
+    DWORD Delete :1;
+    DWORD CharSet :2;
+    DWORD Unused :3;
+    DWORD Reserved :24;
+} DNS_RECORD_FLAGS;
+
+typedef struct
+{
+    PSTR  pNamePrimaryServer;
+    PSTR  pNameAdministrator;
+    DWORD dwSerialNo;
+    DWORD dwRefresh;
+    DWORD dwRetry;
+    DWORD dwExpire;
+    DWORD dwDefaultTtl;
+} DNS_SOA_DATAA, *PDNS_SOA_DATAA;
+
+typedef struct
+{
+    PWSTR pNamePrimaryServer;
+    PWSTR pNameAdministrator;
+    DWORD dwSerialNo;
+    DWORD dwRefresh;
+    DWORD dwRetry;
+    DWORD dwExpire;
+    DWORD dwDefaultTtl;
+} DNS_SOA_DATAW, *PDNS_SOA_DATAW;
+
+DECL_WINELIB_TYPE_AW(DNS_SOA_DATA)
+DECL_WINELIB_TYPE_AW(PDNS_SOA_DATA)
+
+typedef struct
+{
+    PSTR pNameHost;
+} DNS_PTR_DATAA, *PDNS_PTR_DATAA;
+
+typedef struct
+{
+    PWSTR pNameHost;
+} DNS_PTR_DATAW, *PDNS_PTR_DATAW;
+
+DECL_WINELIB_TYPE_AW(DNS_PTR_DATA)
+DECL_WINELIB_TYPE_AW(PDNS_PTR_DATA)
+
+typedef struct
+{
+    PSTR pNameMailbox;
+    PSTR pNameErrorsMailbox;
+} DNS_MINFO_DATAA, *PDNS_MINFO_DATAA;
+
+typedef struct
+{
+    PWSTR pNameMailbox;
+    PWSTR pNameErrorsMailbox;
+} DNS_MINFO_DATAW, *PDNS_MINFO_DATAW;
+
+DECL_WINELIB_TYPE_AW(DNS_MINFO_DATA)
+DECL_WINELIB_TYPE_AW(PDNS_MINFO_DATA)
+
+typedef struct
+{
+    PSTR pNameExchange;
+    WORD wPreference;
+    WORD Pad;
+} DNS_MX_DATAA, *PDNS_MX_DATAA;
+
+typedef struct
+{
+    PWSTR pNameExchange;
+    WORD wPreference;
+    WORD Pad;
+} DNS_MX_DATAW, *PDNS_MX_DATAW;
+
+DECL_WINELIB_TYPE_AW(DNS_MX_DATA)
+DECL_WINELIB_TYPE_AW(PDNS_MX_DATA)
+
+typedef struct
+{
+    DWORD dwStringCount;
+    PSTR pStringArray[1];
+} DNS_TXT_DATAA, *PDNS_TXT_DATAA;
+
+typedef struct
+{
+    DWORD dwStringCount;
+    PWSTR pStringArray[1];
+} DNS_TXT_DATAW, *PDNS_TXT_DATAW;
+
+DECL_WINELIB_TYPE_AW(DNS_TXT_DATA)
+DECL_WINELIB_TYPE_AW(PDNS_TXT_DATA)
+
+typedef struct
+{
+    DWORD dwByteCount;
+    BYTE Data[1];
+} DNS_NULL_DATA, *PDNS_NULL_DATA;
+
+typedef struct
+{
+    IP4_ADDRESS IpAddress;
+    UCHAR chProtocol;
+    BYTE BitMask[1];
+} DNS_WKS_DATA, *PDNS_WKS_DATA;
+
+typedef struct
+{
+    DNS_IP6_ADDRESS Ip6Address;
+} DNS_AAAA_DATA, *PDNS_AAAA_DATA;
+
+typedef struct
+{
+    WORD wFlags;
+    BYTE chProtocol;
+    BYTE chAlgorithm;
+    BYTE Key[1];
+} DNS_KEY_DATA, *PDNS_KEY_DATA;
+
+typedef struct
+{
+    WORD wVersion;
+    WORD wSize;
+    WORD wHorPrec;
+    WORD wVerPrec;
+    DWORD dwLatitude;
+    DWORD dwLongitude;
+    DWORD dwAltitude;
+} DNS_LOC_DATA, *PDNS_LOC_DATA;
+
+typedef struct
+{
+    PSTR pNameSigner;
+    WORD wTypeCovered;
+    BYTE chAlgorithm;
+    BYTE chLabelCount;
+    DWORD dwOriginalTtl;
+    DWORD dwExpiration;
+    DWORD dwTimeSigned;
+    WORD wKeyTag;
+    WORD Pad;
+    BYTE Signature[1];
+} DNS_SIG_DATAA, *PDNS_SIG_DATAA;
+
+typedef struct
+{
+    PWSTR pNameSigner;
+    WORD wTypeCovered;
+    BYTE chAlgorithm;
+    BYTE chLabelCount;
+    DWORD dwOriginalTtl;
+    DWORD dwExpiration;
+    DWORD dwTimeSigned;
+    WORD wKeyTag;
+    WORD Pad;
+    BYTE Signature[1];
+} DNS_SIG_DATAW, *PDNS_SIG_DATAW;
+
+DECL_WINELIB_TYPE_AW(DNS_SIG_DATA)
+DECL_WINELIB_TYPE_AW(PDNS_SIG_DATA)
+
+#define DNS_ATMA_MAX_ADDR_LENGTH 20
+
+typedef struct
+{
+    BYTE AddressType;
+    BYTE Address[DNS_ATMA_MAX_ADDR_LENGTH];
+} DNS_ATMA_DATA, *PDNS_ATMA_DATA;
+
+typedef struct
+{
+    PSTR pNameNext;
+    WORD wNumTypes;
+    WORD wTypes[1];
+} DNS_NXT_DATAA, *PDNS_NXT_DATAA;
+
+typedef struct
+{
+    PWSTR pNameNext;
+    WORD wNumTypes;
+    WORD wTypes[1];
+} DNS_NXT_DATAW, *PDNS_NXT_DATAW;
+
+DECL_WINELIB_TYPE_AW(DNS_NXT_DATA)
+DECL_WINELIB_TYPE_AW(PDNS_NXT_DATA)
+
+typedef struct
+{
+    PSTR pNameTarget;
+    WORD wPriority;
+    WORD wWeight;
+    WORD wPort;
+    WORD Pad;
+} DNS_SRV_DATAA, *PDNS_SRV_DATAA;
+
+typedef struct
+{
+    PWSTR pNameTarget;
+    WORD wPriority;
+    WORD wWeight;
+    WORD wPort;
+    WORD Pad;
+} DNS_SRV_DATAW, *PDNS_SRV_DATAW;
+
+DECL_WINELIB_TYPE_AW(DNS_SRV_DATA)
+DECL_WINELIB_TYPE_AW(PDNS_SRV_DATA)
+
+typedef struct
+{
+    PSTR pNameAlgorithm;
+    PBYTE pAlgorithmPacket;
+    PBYTE pKey;
+    PBYTE pOtherData;
+    DWORD dwCreateTime;
+    DWORD dwExpireTime;
+    WORD wMode;
+    WORD wError;
+    WORD wKeyLength;
+    WORD wOtherLength;
+    UCHAR cAlgNameLength;
+    BOOL bPacketPointers;
+} DNS_TKEY_DATAA, *PDNS_TKEY_DATAA;
+
+typedef struct
+{
+    PWSTR pNameAlgorithm;
+    PBYTE pAlgorithmPacket;
+    PBYTE pKey;
+    PBYTE pOtherData;
+    DWORD dwCreateTime;
+    DWORD dwExpireTime;
+    WORD wMode;
+    WORD wError;
+    WORD wKeyLength;
+    WORD wOtherLength;
+    UCHAR cAlgNameLength;
+    BOOL bPacketPointers;
+} DNS_TKEY_DATAW, *PDNS_TKEY_DATAW;
+
+DECL_WINELIB_TYPE_AW(DNS_TKEY_DATA)
+DECL_WINELIB_TYPE_AW(PDNS_TKEY_DATA)
+
+typedef struct
+{
+    PSTR pNameAlgorithm;
+    PBYTE pAlgorithmPacket;
+    PBYTE pSignature;
+    PBYTE pOtherData;
+    LONGLONG i64CreateTime;
+    WORD wFudgeTime;
+    WORD wOriginalXid;
+    WORD wError;
+    WORD wSigLength;
+    WORD wOtherLength;
+    UCHAR cAlgNameLength;
+    BOOL bPacketPointers;
+} DNS_TSIG_DATAA, *PDNS_TSIG_DATAA;
+
+typedef struct
+{
+    PWSTR pNameAlgorithm;
+    PBYTE pAlgorithmPacket;
+    PBYTE pSignature;
+    PBYTE pOtherData;
+    LONGLONG i64CreateTime;
+    WORD wFudgeTime;
+    WORD wOriginalXid;
+    WORD wError;
+    WORD wSigLength;
+    WORD wOtherLength;
+    UCHAR cAlgNameLength;
+    BOOL bPacketPointers;
+} DNS_TSIG_DATAW, *PDNS_TSIG_DATAW;
+
+typedef struct
+{
+    DWORD dwMappingFlag;
+    DWORD dwLookupTimeout;
+    DWORD dwCacheTimeout;
+    DWORD cWinsServerCount;
+    IP4_ADDRESS WinsServers[1];
+} DNS_WINS_DATA, *PDNS_WINS_DATA;
+
+typedef struct
+{
+    DWORD dwMappingFlag;
+    DWORD dwLookupTimeout;
+    DWORD dwCacheTimeout;
+    PSTR pNameResultDomain;
+} DNS_WINSR_DATAA, *PDNS_WINSR_DATAA;
+
+typedef struct
+{
+    DWORD dwMappingFlag;
+    DWORD dwLookupTimeout;
+    DWORD dwCacheTimeout;
+    PWSTR pNameResultDomain;
+} DNS_WINSR_DATAW, *PDNS_WINSR_DATAW;
+
+DECL_WINELIB_TYPE_AW(DNS_WINSR_DATA)
+DECL_WINELIB_TYPE_AW(PDNS_WINSR_DATA)
+
+typedef struct _DnsRecordA
+{
+    struct _DnsRecordA *pNext;
+    PSTR pName;
+    WORD wType;
+    WORD wDataLength;
+    union
+    {
+        DWORD DW;
+        DNS_RECORD_FLAGS S;
+    } Flags;
+    DWORD dwTtl;
+    DWORD dwReserved;
+    union
+    {
+        DNS_A_DATA A;
+        DNS_SOA_DATAA SOA, Soa;
+        DNS_PTR_DATAA PTR, Ptr, NS, Ns, CNAME, Cname, MB, Mb, MD, Md, MF, Mf, MG, Mg, MR, Mr;
+        DNS_MINFO_DATAA MINFO, Minfo, RP, Rp;
+        DNS_MX_DATAA MX, Mx, AFSDB, Afsdb, RT, Rt;
+        DNS_TXT_DATAA HINFO, Hinfo, ISDN, Isdn, TXT, Txt, X25;
+        DNS_NULL_DATA Null;
+        DNS_WKS_DATA WKS, Wks;
+        DNS_AAAA_DATA AAAA;
+        DNS_KEY_DATA KEY, Key;
+        DNS_SIG_DATAA SIG, Sig;
+        DNS_ATMA_DATA ATMA, Atma;
+        DNS_NXT_DATAA NXT, Nxt;
+        DNS_SRV_DATAA SRV, Srv;
+        DNS_TKEY_DATAA TKEY, Tkey;
+        DNS_TSIG_DATAA TSIG, Tsig;
+        DNS_WINS_DATA WINS, Wins;
+        DNS_WINSR_DATAA WINSR, WinsR, NBSTAT, Nbstat;
+    } Data;
+} DNS_RECORDA, *PDNS_RECORDA;
+
+typedef struct _DnsRecordW
+{
+    struct _DnsRecordW *pNext;
+    PWSTR pName;
+    WORD wType;
+    WORD wDataLength;
+    union
+    {
+        DWORD DW;
+        DNS_RECORD_FLAGS S;
+    } Flags;
+    DWORD dwTtl;
+    DWORD dwReserved;
+    union
+    {
+        DNS_A_DATA A;
+        DNS_SOA_DATAW SOA, Soa;
+        DNS_PTR_DATAW PTR, Ptr, NS, Ns, CNAME, Cname, MB, Mb, MD, Md, MF, Mf, MG, Mg, MR, Mr;
+        DNS_MINFO_DATAW MINFO, Minfo, RP, Rp;
+        DNS_MX_DATAW MX, Mx, AFSDB, Afsdb, RT, Rt;
+        DNS_TXT_DATAW HINFO, Hinfo, ISDN, Isdn, TXT, Txt, X25;
+        DNS_NULL_DATA Null;
+        DNS_WKS_DATA WKS, Wks;
+        DNS_AAAA_DATA AAAA;
+        DNS_KEY_DATA KEY, Key;
+        DNS_SIG_DATAW SIG, Sig;
+        DNS_ATMA_DATA ATMA, Atma;
+        DNS_NXT_DATAW NXT, Nxt;
+        DNS_SRV_DATAW SRV, Srv;
+        DNS_TKEY_DATAW TKEY, Tkey;
+        DNS_TSIG_DATAW TSIG, Tsig;
+        DNS_WINS_DATA WINS, Wins;
+        DNS_WINSR_DATAW WINSR, WinsR, NBSTAT, Nbstat;
+    } Data;
+} DNS_RECORDW, *PDNS_RECORDW;
+
+#if defined(__WINESRC__) || defined(UNICODE)
+typedef DNS_RECORDW DNS_RECORD;
+typedef PDNS_RECORDW PDNS_RECORD;
+#else
+typedef DNS_RECORDA DNS_RECORD;
+typedef PDNS_RECORDA PDNS_RECORD;
+#endif
+
+typedef struct _DnsRRSet
+{
+    PDNS_RECORD pFirstRR;
+    PDNS_RECORD pLastRR;
+} DNS_RRSET, *PDNS_RRSET;
+
+#define DNS_RRSET_INIT( rrset )                          \
+{                                                        \
+    PDNS_RRSET  _prrset = &(rrset);                      \
+    _prrset->pFirstRR = NULL;                            \
+    _prrset->pLastRR = (PDNS_RECORD) &_prrset->pFirstRR; \
+}
+
+#define DNS_RRSET_ADD( rrset, pnewRR ) \
+{                                      \
+    PDNS_RRSET  _prrset = &(rrset);    \
+    PDNS_RECORD _prrnew = (pnewRR);    \
+    _prrset->pLastRR->pNext = _prrnew; \
+    _prrset->pLastRR = _prrnew;        \
+}
+
+#define DNS_RRSET_TERMINATE( rrset ) \
+{                                    \
+    PDNS_RRSET  _prrset = &(rrset);  \
+    _prrset->pLastRR->pNext = NULL;  \
+}
+
+DNS_STATUS WINAPI DnsAcquireContextHandle_A(DWORD,PVOID,PHANDLE);
+DNS_STATUS WINAPI DnsAcquireContextHandle_W(DWORD,PVOID,PHANDLE);
+#define DnsAcquireContextHandle WINELIB_NAME_AW(DnsAcquireContextHandle_)
+DNS_STATUS WINAPI DnsExtractRecordsFromMessage_W(PDNS_MESSAGE_BUFFER,WORD,PDNS_RECORDW*);
+DNS_STATUS WINAPI DnsExtractRecordsFromMessage_UTF8(PDNS_MESSAGE_BUFFER,WORD,PDNS_RECORDA*);
+DNS_STATUS WINAPI DnsModifyRecordsInSet_A(PDNS_RECORDA,PDNS_RECORDA,DWORD,HANDLE,PVOID,PVOID);
+DNS_STATUS WINAPI DnsModifyRecordsInSet_W(PDNS_RECORDW,PDNS_RECORDW,DWORD,HANDLE,PVOID,PVOID);
+DNS_STATUS WINAPI DnsModifyRecordsInSet_UTF8(PDNS_RECORDA,PDNS_RECORDA,DWORD,HANDLE,PVOID,PVOID);
+#define DnsModifyRecordsInSet WINELIB_NAME_AW(DnsModifyRecordsInSet_)
+BOOL WINAPI DnsNameCompare_A(PCSTR,PCSTR);
+BOOL WINAPI DnsNameCompare_W(PCWSTR,PCWSTR);
+#define DnsNameCompare WINELIB_NAME_AW(DnsNameCompare_)
+DNS_STATUS WINAPI DnsQuery_A(PCSTR,WORD,DWORD,PVOID,PDNS_RECORDA*,PVOID*);
+DNS_STATUS WINAPI DnsQuery_W(PCWSTR,WORD,DWORD,PVOID,PDNS_RECORDW*,PVOID*);
+DNS_STATUS WINAPI DnsQuery_UTF8(PCSTR,WORD,DWORD,PVOID,PDNS_RECORDA*,PVOID*);
+#define DnsQuery WINELIB_NAME_AW(DnsQuery_)
+DNS_STATUS WINAPI DnsQueryConfig(DNS_CONFIG_TYPE,DWORD,PCWSTR,PVOID,PVOID,PDWORD);
+BOOL WINAPI DnsRecordCompare(PDNS_RECORD,PDNS_RECORD);
+PDNS_RECORD WINAPI DnsRecordCopyEx(PDNS_RECORD,DNS_CHARSET,DNS_CHARSET);
+VOID WINAPI DnsRecordListFree(PDNS_RECORD,DNS_FREE_TYPE);
+BOOL WINAPI DnsRecordSetCompare(PDNS_RECORD,PDNS_RECORD,PDNS_RECORD*,PDNS_RECORD*);
+PDNS_RECORD WINAPI DnsRecordSetCopyEx(PDNS_RECORD,DNS_CHARSET,DNS_CHARSET);
+PDNS_RECORD WINAPI DnsRecordSetDetach(PDNS_RECORD);
+void WINAPI DnsReleaseContextHandle(HANDLE);
+DNS_STATUS WINAPI DnsReplaceRecordSetA(PDNS_RECORDA,DWORD,HANDLE,PVOID,PVOID);
+DNS_STATUS WINAPI DnsReplaceRecordSetW(PDNS_RECORDW,DWORD,HANDLE,PVOID,PVOID);
+DNS_STATUS WINAPI DnsReplaceRecordSetUTF8(PDNS_RECORDA,DWORD,HANDLE,PVOID,PVOID);
+#define DnsReplaceRecordSet WINELIB_NAME_AW(DnsReplaceRecordSet)
+DNS_STATUS WINAPI DnsValidateName_A(PCSTR,DNS_NAME_FORMAT);
+DNS_STATUS WINAPI DnsValidateName_W(PCWSTR, DNS_NAME_FORMAT);
+DNS_STATUS WINAPI DnsValidateName_UTF8(PCSTR,DNS_NAME_FORMAT);
+#define DnsValidateName WINELIB_NAME_AW(DnsValidateName_)
+BOOL WINAPI DnsWriteQuestionToBuffer_W(PDNS_MESSAGE_BUFFER,PDWORD,PCWSTR,WORD,WORD,BOOL);
+BOOL WINAPI DnsWriteQuestionToBuffer_UTF8(PDNS_MESSAGE_BUFFER,PDWORD,PCSTR,WORD,WORD,BOOL);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/windows.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/windows.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/windows.h	(revision 16410)
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINDOWS_H
+#define __WINE_WINDOWS_H
+
+#ifdef __WINESRC__
+#error Wine should not include windows.h internally
+#endif
+
+#if defined(_MSC_VER) && (_MSC_VER >= 800) && !defined(__cplusplus)
+/* TYPE_ALIGNMENT generates this - move it outside the warning push/pop scope. */
+# pragma warning(disable:4116)
+#endif
+
+#ifndef _INC_WINDOWS
+#define _INC_WINDOWS
+
+#if defined(RC_INVOKED) && !defined(NOWINRES)
+#include <winresrc.h>
+#else /* RC_INVOKED && !NOWINRES */
+
+/* All the basic includes */
+#include <excpt.h>
+#include <stdarg.h>
+#include <windef.h>
+#include <winbase.h>
+#include <wingdi.h>
+#include <winuser.h>
+#include <winnls.h>
+#include <wincon.h>
+#include <winver.h>
+#include <winreg.h>
+#include <winnetwk.h>
+
+/* Not so essential ones */
+#ifndef WIN32_LEAN_AND_MEAN
+
+#include <cderr.h>
+#include <dde.h>
+#include <ddeml.h>
+#include <dlgs.h>
+#include <lzexpand.h>
+#include <mmsystem.h>
+#include <nb30.h>
+#include <rpc.h>
+#include <shellapi.h>
+/* #include <winperf.h> */
+
+#ifndef WINE_NOWINSOCK
+#include <winsock2.h>
+#endif /* WINE_NOWINSOCK */
+
+#ifndef NOCRYPT
+#include <wincrypt.h>
+/* #include <winefs.h> */
+/* #include <winscard.h> */
+#endif /* !NOCRYPT */
+
+#ifndef NOGDI
+#include <winspool.h>
+#ifdef INC_OLE1
+/* #include <ole.h> */
+#else
+#include <ole2.h>
+#endif
+#include <commdlg.h>
+#endif /* !NOGDI */
+
+#endif /* !WIN32_LEAN_AND_MEAN */
+
+/* #include <stralign.h> */
+
+#ifdef INC_OLE2
+#include <ole2.h>
+#endif /* INC_OLE2 */
+
+#ifndef NOSERVICE
+#include <winsvc.h>
+#endif /* !NOSERVICE */
+
+#ifndef NOMCX
+#include <mcx.h>
+#endif /* !NOMCX */
+
+#ifndef NOIMM
+#include <imm.h>
+#endif /* !NOIMM */
+
+#endif  /* RC_INVOKED && !NOWINRES */
+#endif /* _INC_WINDOWS */
+#endif  /* __WINE_WINDOWS_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/windowsx.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/windowsx.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/windowsx.h	(revision 16410)
@@ -0,0 +1,1439 @@
+/* Copyright (C) 1999 Corel Corporation (Paul Quinn)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _INC_WINDOWSX
+#define _INC_WINDOWSX
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef __WINESRC__
+/* This file contains macros that cause warnings on gcc 4.1, so avoid it. */
+#error Please avoid use of windowsx.h in Wine source code.
+#endif
+
+#ifndef SNDMSG
+#ifdef __cplusplus
+#define SNDMSG ::SendMessage
+#else   /* __cplusplus */
+#define SNDMSG SendMessage
+#endif  /* __cplusplus */
+#endif  /* SNDMSG */
+
+#define GET_WPARAM(wp, lp)                      (wp)
+#define GET_LPARAM(wp, lp)                      (lp)
+
+#define GET_X_LPARAM(lp)                        ((int)(short)LOWORD(lp))
+#define GET_Y_LPARAM(lp)                        ((int)(short)HIWORD(lp))
+
+#define GET_EM_LINESCROLL_MPS(vert, horz)       (WPARAM)horz, (LPARAM)vert
+
+#define GET_EM_SETSEL_START(wp, lp)             (INT)(wp)
+#define GET_EM_SETSEL_END(wp, lp)               (lp)
+#define GET_EM_SETSEL_MPS(iStart, iEnd)         (WPARAM)(iStart), (LPARAM)(iEnd)
+
+#define GET_WM_ACTIVATE_STATE(wp, lp)           LOWORD(wp)
+#define GET_WM_ACTIVATE_FMINIMIZED(wp, lp)      (BOOL)HIWORD(wp)
+#define GET_WM_ACTIVATE_HWND(wp, lp)            (HWND)(lp)
+#define GET_WM_ACTIVATE_MPS(s, fmin, hwnd)      (WPARAM)MAKELONG((s), (fmin)), (LPARAM)(hwnd)
+
+#define GET_WM_CHANGECBCHAIN_HWNDNEXT(wp, lp)   (HWND)(lp)
+
+#define GET_WM_CHARTOITEM_CHAR(wp, lp)          (TCHAR)LOWORD(wp)
+#define GET_WM_CHARTOITEM_POS(wp, lp)           HIWORD(wp)
+#define GET_WM_CHARTOITEM_HWND(wp, lp)          (HWND)(lp)
+#define GET_WM_CHARTOITEM_MPS(ch, pos, hwnd)    (WPARAM)MAKELONG((pos), (ch)), (LPARAM)(hwnd)
+
+#define GET_WM_COMMAND_ID(wp, lp)               LOWORD(wp)
+#define GET_WM_COMMAND_HWND(wp, lp)             (HWND)(lp)
+#define GET_WM_COMMAND_CMD(wp, lp)              HIWORD(wp)
+#define GET_WM_COMMAND_MPS(id, hwnd, cmd)       (WPARAM)MAKELONG(id, cmd), (LPARAM)(hwnd)
+
+#define WM_CTLCOLOR                             0x0019
+
+#define GET_WM_CTLCOLOR_HDC(wp, lp, msg)        (HDC)(wp)
+#define GET_WM_CTLCOLOR_HWND(wp, lp, msg)       (HWND)(lp)
+#define GET_WM_CTLCOLOR_TYPE(wp, lp, msg)       (WORD)(msg - WM_CTLCOLORMSGBOX)
+#define GET_WM_CTLCOLOR_MSG(type)               (WORD)(WM_CTLCOLORMSGBOX+(type))
+#define GET_WM_CTLCOLOR_MPS(hdc, hwnd, type)    (WPARAM)(hdc), (LPARAM)(hwnd)
+
+#define GET_WM_HSCROLL_CODE(wp, lp)             LOWORD(wp)
+#define GET_WM_HSCROLL_POS(wp, lp)              HIWORD(wp)
+#define GET_WM_HSCROLL_HWND(wp, lp)             (HWND)(lp)
+#define GET_WM_HSCROLL_MPS(code, pos, hwnd)     (WPARAM)MAKELONG(code, pos), (LPARAM)(hwnd)
+
+#define GET_WM_MENUCHAR_CHAR(wp, lp)            (TCHAR)LOWORD(wp)
+#define GET_WM_MENUCHAR_HMENU(wp, lp)           (HMENU)(lp)
+#define GET_WM_MENUCHAR_FMENU(wp, lp)           (BOOL)HIWORD(wp)
+#define GET_WM_MENUCHAR_MPS(ch, hmenu, f)       (WPARAM)MAKELONG(ch, f), (LPARAM)(hmenu)
+
+#define GET_WM_MENUSELECT_CMD(wp, lp)           LOWORD(wp)
+#define GET_WM_MENUSELECT_FLAGS(wp, lp)         (UINT)(int)(short)HIWORD(wp)
+#define GET_WM_MENUSELECT_HMENU(wp, lp)         (HMENU)(lp)
+#define GET_WM_MENUSELECT_MPS(cmd, f, hmenu)    (WPARAM)MAKELONG(cmd, f), (LPARAM)(hmenu)
+
+#define GET_WM_MDIACTIVATE_FACTIVATE(hwnd, wp, lp) (lp == (LPARAM)hwnd)
+#define GET_WM_MDIACTIVATE_HWNDDEACT(wp, lp)    (HWND)(wp)
+#define GET_WM_MDIACTIVATE_HWNDACTIVATE(wp, lp) (HWND)(lp)
+#define GET_WM_MDIACTIVATE_MPS(f, hwndD, hwndA) (WPARAM)(hwndA), 0
+#define GET_WM_MDISETMENU_MPS(hmenuF, hmenuW)   (WPARAM)hmenuF, (LPARAM)hmenuW
+
+#define GET_WM_PARENTNOTIFY_MSG(wp, lp)         LOWORD(wp)
+#define GET_WM_PARENTNOTIFY_ID(wp, lp)          HIWORD(wp)
+#define GET_WM_PARENTNOTIFY_HWNDCHILD(wp, lp)   (HWND)(lp)
+#define GET_WM_PARENTNOTIFY_X(wp, lp)           (int)(short)LOWORD(lp)
+#define GET_WM_PARENTNOTIFY_Y(wp, lp)           (int)(short)HIWORD(lp)
+#define GET_WM_PARENTNOTIFY_MPS(msg, id, hwnd)  (WPARAM)MAKELONG(id, msg), (LPARAM)(hwnd)
+#define GET_WM_PARENTNOTIFY2_MPS(msg, x, y)     (WPARAM)MAKELONG(0, msg), MAKELONG(x, y)
+
+#define GET_WM_VKEYTOITEM_CODE(wp, lp)          (int)(short)LOWORD(wp)
+#define GET_WM_VKEYTOITEM_ITEM(wp, lp)          HIWORD(wp)
+#define GET_WM_VKEYTOITEM_HWND(wp, lp)          (HWND)(lp)
+#define GET_WM_VKEYTOITEM_MPS(code, item, hwnd) (WPARAM)MAKELONG(item, code), (LPARAM)(hwnd)
+
+#define GET_WM_VSCROLL_CODE(wp, lp)             LOWORD(wp)
+#define GET_WM_VSCROLL_POS(wp, lp)              HIWORD(wp)
+#define GET_WM_VSCROLL_HWND(wp, lp)             (HWND)(lp)
+#define GET_WM_VSCROLL_MPS(code, pos, hwnd)     (WPARAM)MAKELONG(code, pos), (LPARAM)(hwnd)
+
+/****** KERNEL Macro APIs ******************************************************/
+
+#define GetInstanceModule(hInst)                (HMODULE)(hInst)
+#define GlobalPtrHandle(lp)                     ((HGLOBAL)GlobalHandle(lp))
+#define GlobalLockPtr(lp)                       ((BOOL)GlobalLock(GlobalPtrHandle(lp)))
+#define GlobalUnlockPtr(lp)                     GlobalUnlock(GlobalPtrHandle(lp))
+#define GlobalAllocPtr(flags, cb)               (GlobalLock(GlobalAlloc((flags), (cb))))
+#define GlobalReAllocPtr(lp, cbNew, flags)      (GlobalUnlockPtr(lp), GlobalLock(GlobalReAlloc(GlobalPtrHandle(lp) , (cbNew), (flags))))
+#define GlobalFreePtr(lp)                       (GlobalUnlockPtr(lp), (BOOL)(ULONG_PTR)GlobalFree(GlobalPtrHandle(lp)))
+
+/****** USER Macro APIs ******************************************************/
+
+#define     GetWindowInstance(hwnd) ((HMODULE)GetWindowLongPtr(hwnd, GWLP_HINSTANCE))
+
+#define     GetWindowStyle(hwnd)    ((DWORD)GetWindowLong(hwnd, GWL_STYLE))
+#define     GetWindowExStyle(hwnd)  ((DWORD)GetWindowLong(hwnd, GWL_EXSTYLE))
+
+#define     GetWindowOwner(hwnd)    GetWindow(hwnd, GW_OWNER)
+
+#define     GetFirstChild(hwnd)     GetTopWindow(hwnd)
+#define     GetFirstSibling(hwnd)   GetWindow(hwnd, GW_HWNDFIRST)
+#define     GetLastSibling(hwnd)    GetWindow(hwnd, GW_HWNDLAST)
+#define     GetNextSibling(hwnd)    GetWindow(hwnd, GW_HWNDNEXT)
+#define     GetPrevSibling(hwnd)    GetWindow(hwnd, GW_HWNDPREV)
+
+#define     GetWindowID(hwnd)       GetDlgCtrlID(hwnd)
+
+#define     SetWindowRedraw(hwnd, fRedraw)  \
+	        ((void)SendMessage(hwnd, WM_SETREDRAW, (WPARAM)(BOOL)(fRedraw), 0L))
+#define     SubclassWindow(hwnd, lpfn)      \
+		((WNDPROC)SetWindowLongPtr((hwnd), GWLP_WNDPROC, (LPARAM)(WNDPROC)(lpfn)))
+
+#define     IsMinimized(hwnd)        IsIconic(hwnd)
+#define     IsMaximized(hwnd)        IsZoomed(hwnd)
+#define     IsRestored(hwnd)    ((GetWindowStyle(hwnd) & (WS_MINIMIZE | WS_MAXIMIZE)) == 0L)
+#define     SetWindowFont(hwnd, hfont, fRedraw) \
+		FORWARD_WM_SETFONT((hwnd), (hfont), (fRedraw), SendMessage)
+
+#define     GetWindowFont(hwnd)      FORWARD_WM_GETFONT((hwnd), SendMessage)
+
+#define     MapWindowRect(hwndFrom, hwndTo, lprc) \
+                MapWindowPoints((hwndFrom), (hwndTo), (POINT *)(lprc), 2)
+
+#define     IsLButtonDown()  (GetKeyState(VK_LBUTTON) < 0)
+#define     IsRButtonDown()  (GetKeyState(VK_RBUTTON) < 0)
+#define     IsMButtonDown()  (GetKeyState(VK_MBUTTON) < 0)
+
+#define     SetDlgMsgResult(hwnd, msg, result) (( \
+        (msg) == WM_CTLCOLORMSGBOX      || \
+        (msg) == WM_CTLCOLOREDIT        || \
+        (msg) == WM_CTLCOLORLISTBOX     || \
+        (msg) == WM_CTLCOLORBTN         || \
+        (msg) == WM_CTLCOLORDLG         || \
+        (msg) == WM_CTLCOLORSCROLLBAR   || \
+        (msg) == WM_CTLCOLORSTATIC      || \
+        (msg) == WM_COMPAREITEM         || \
+        (msg) == WM_VKEYTOITEM          || \
+        (msg) == WM_CHARTOITEM          || \
+        (msg) == WM_QUERYDRAGICON       || \
+        (msg) == WM_INITDIALOG             \
+    ) ? (BOOL)(result) : (SetWindowLongPtr((hwnd), DWLP_MSGRESULT, (LPARAM)(LRESULT)(result)), TRUE))
+
+#define     DefDlgProcEx(hwnd, msg, wParam, lParam, pfRecursion) \
+    (*(pfRecursion) = TRUE, DefDlgProc(hwnd, msg, wParam, lParam))
+
+#define     CheckDefDlgRecursion(pfRecursion) \
+    if (*(pfRecursion)) { *(pfRecursion) = FALSE; return FALSE; }
+
+#define     SubclassDialog(hwndDlg, lpfn) \
+		((DLGPROC)SetWindowLongPtr(hwndDlg, DWLP_DLGPROC, (LPARAM)(DLGPROC)(lpfn)))
+
+#define     DeletePen(hpen)      DeleteObject((HGDIOBJ)(HPEN)(hpen))
+#define     SelectPen(hdc, hpen)    ((HPEN)SelectObject((hdc), (HGDIOBJ)(HPEN)(hpen)))
+#define     GetStockPen(i)       ((HPEN)GetStockObject(i))
+
+#define     DeleteBrush(hbr)     DeleteObject((HGDIOBJ)(HBRUSH)(hbr))
+#define     SelectBrush(hdc, hbr)   ((HBRUSH)SelectObject((hdc), (HGDIOBJ)(HBRUSH)(hbr)))
+#define     GetStockBrush(i)     ((HBRUSH)GetStockObject(i))
+
+#define     DeleteRgn(hrgn)                         DeleteObject((HGDIOBJ)(HRGN)(hrgn))
+
+#define     CopyRgn(hrgnDst, hrgnSrc)               CombineRgn(hrgnDst, hrgnSrc, 0, RGN_COPY)
+#define     IntersectRgn(hrgnResult, hrgnA, hrgnB)  CombineRgn(hrgnResult, hrgnA, hrgnB, RGN_AND)
+#define     SubtractRgn(hrgnResult, hrgnA, hrgnB)   CombineRgn(hrgnResult, hrgnA, hrgnB, RGN_DIFF)
+#define     UnionRgn(hrgnResult, hrgnA, hrgnB)      CombineRgn(hrgnResult, hrgnA, hrgnB, RGN_OR)
+#define     XorRgn(hrgnResult, hrgnA, hrgnB)        CombineRgn(hrgnResult, hrgnA, hrgnB, RGN_XOR)
+
+#define     DeletePalette(hpal)     DeleteObject((HGDIOBJ)(HPALETTE)(hpal))
+
+#define     DeleteFont(hfont)       DeleteObject((HGDIOBJ)(HFONT)(hfont))
+#define     SelectFont(hdc, hfont)  ((HFONT)SelectObject((hdc), (HGDIOBJ)(HFONT) (hfont)))
+#define     GetStockFont(i)         ((HFONT)GetStockObject(i))
+#define     DeleteBitmap(hbm)       DeleteObject((HGDIOBJ)(HBITMAP)(hbm))
+#define     SelectBitmap(hdc, hbm)  ((HBITMAP)SelectObject((hdc), (HGDIOBJ)(HBITMAP)(hbm)))
+#define     InsetRect(lprc, dx, dy) InflateRect((lprc), -(dx), -(dy))
+
+
+/* Button Message APIs */
+
+#define Button_Enable(hwndCtl, fEnable) \
+	EnableWindow((hwndCtl), (fEnable))
+
+#define Button_GetCheck(hwndCtl) \
+	((int)SendMessage((hwndCtl), BM_GETCHECK, 0L, 0L))
+
+#define Button_GetState(hwndCtl) \
+	((int)SendMessage((hwndCtl), BM_GETSTATE, 0L, 0L))
+
+#define Button_GetText(hwndCtl, lpch, cchMax) \
+	GetWindowText((hwndCtl), (lpch), (cchMax))
+
+#define Button_GetTextLength(hwndCtl) \
+	GetWindowTextLength(hwndCtl)
+
+#define Button_SetCheck(hwndCtl, check) \
+	((void)SendMessage((hwndCtl), BM_SETCHECK, (WPARAM)(int)(check), 0L))
+
+#define Button_SetState(hwndCtl, state) \
+	((UINT)SendMessage((hwndCtl), BM_SETSTATE, (WPARAM)(int)(state), 0L))
+
+#define Button_SetStyle(hwndCtl, style, fRedraw) \
+	((void)SendMessage((hwndCtl), BM_SETSTYLE, (WPARAM)LOWORD(style), MAKELPARAM(((fRedraw) ? TRUE : FALSE), 0)))
+
+#define Button_SetText(hwndCtl, lpsz) \
+	SetWindowText((hwndCtl), (lpsz))
+
+
+/* ComboBox Message APIs */
+
+#define ComboBox_AddItemData(hwndCtl, data) \
+	((int)SendMessage((hwndCtl), CB_ADDSTRING, 0L, (LPARAM)(LPCTSTR)(data)))
+
+#define ComboBox_AddString(hwndCtl, lpsz) \
+	((int)SendMessage((hwndCtl), CB_ADDSTRING, 0L, (LPARAM)(LPCTSTR)(lpsz)))
+
+#define ComboBox_DeleteString(hwndCtl, index) \
+	((int)SendMessage((hwndCtl), CB_DELETESTRING, (WPARAM)(int)(index), 0L))
+
+#define ComboBox_Dir(hwndCtl, attrs, lpszFileSpec) \
+	((int)SendMessage((hwndCtl), CB_DIR, (WPARAM)(UINT)(attrs), (LPARAM)(LPCTSTR)(lpszFileSpec)))
+
+#define ComboBox_Enable(hwndCtl, fEnable) \
+	EnableWindow((hwndCtl), (fEnable))
+
+#define ComboBox_FindItemData(hwndCtl, indexStart, data) \
+	((int)SendMessage((hwndCtl), CB_FINDSTRING, (WPARAM)(int)(indexStart), (LPARAM)(data)))
+
+#define ComboBox_FindString(hwndCtl, indexStart, lpszFind) \
+	((int)SendMessage((hwndCtl), CB_FINDSTRING, (WPARAM)(int)(indexStart), (LPARAM)(LPCTSTR)(lpszFind)))
+
+#define ComboBox_FindStringExact(hwndCtl, indexStart, lpszFind) \
+	((int)SendMessage((hwndCtl), CB_FINDSTRINGEXACT, (WPARAM)(int)(indexStart), (LPARAM)(LPCTSTR)(lpszFind)))
+
+#define ComboBox_GetCount(hwndCtl) \
+	((int)SendMessage((hwndCtl), CB_GETCOUNT, 0L, 0L))
+
+#define ComboBox_GetCurSel(hwndCtl) \
+	((int)SendMessage((hwndCtl), CB_GETCURSEL, 0L, 0L))
+
+#define ComboBox_GetDroppedControlRect(hwndCtl, lprc) \
+	((void)SendMessage((hwndCtl), CB_GETDROPPEDCONTROLRECT, 0L, (LPARAM)(RECT *)(lprc)))
+
+#define ComboBox_GetDroppedState(hwndCtl) \
+	((BOOL)SendMessage((hwndCtl), CB_GETDROPPEDSTATE, 0L, 0L))
+
+#define ComboBox_GetEditSel(hwndCtl) \
+	((DWORD)SendMessage((hwndCtl), CB_GETEDITSEL, 0L, 0L))
+
+#define ComboBox_GetExtendedUI(hwndCtl) \
+	((UINT)SendMessage((hwndCtl), CB_GETEXTENDEDUI, 0L, 0L))
+
+#define ComboBox_GetItemData(hwndCtl, index) \
+	((LRESULT)SendMessage((hwndCtl), CB_GETITEMDATA, (WPARAM)(int)(index), 0L))
+
+#define ComboBox_GetItemHeight(hwndCtl) \
+	((int)SendMessage((hwndCtl), CB_GETITEMHEIGHT, 0L, 0L))
+
+#define ComboBox_GetLBText(hwndCtl, index, lpszBuffer) \
+	((int)SendMessage((hwndCtl), CB_GETLBTEXT, (WPARAM)(int)(index), (LPARAM)(LPCTSTR)(lpszBuffer)))
+
+#define ComboBox_GetLBTextLen(hwndCtl, index) \
+	((int)SendMessage((hwndCtl), CB_GETLBTEXTLEN, (WPARAM)(int)(index), 0L))
+
+#define ComboBox_InsertItemData(hwndCtl, index, data) \
+	((int)SendMessage((hwndCtl), CB_INSERTSTRING, (WPARAM)(int)(index), (LPARAM)(LPCTSTR)(data)))
+
+#define ComboBox_LimitText(hwndCtl, cchLimit) \
+	((int)SendMessage((hwndCtl), CB_LIMITTEXT, (WPARAM)(int)(cchLimit), 0L))
+
+#define ComboBox_GetText(hwndCtl, lpch, cchMax) \
+	GetWindowText((hwndCtl), (lpch), (cchMax))
+
+#define ComboBox_GetTextLength(hwndCtl) \
+	GetWindowTextLength(hwndCtl)
+
+#define ComboBox_InsertString(hwndCtl, index, lpsz) \
+	((int)SendMessage((hwndCtl), CB_INSERTSTRING, (WPARAM)(int)(index), (LPARAM)(LPCTSTR)(lpsz)))
+
+#define ComboBox_LimitText(hwndCtl, cchLimit) \
+	((int)SendMessage((hwndCtl), CB_LIMITTEXT, (WPARAM)(int)(cchLimit), 0L))
+
+#define ComboBox_ResetContent(hwndCtl) \
+	((int)SendMessage((hwndCtl), CB_RESETCONTENT, 0L, 0L))
+
+#define ComboBox_SelectItemData(hwndCtl, indexStart, data) \
+	((int)SendMessage((hwndCtl), CB_SELECTSTRING, (WPARAM)(int)(indexStart), (LPARAM)(LPCTSTR)(data)))
+
+#define ComboBox_SelectString(hwndCtl, indexStart, lpszSelect) \
+	((int)SendMessage((hwndCtl), CB_SELECTSTRING, (WPARAM)(int)(indexStart), (LPARAM)(LPCTSTR)(lpszSelect)))
+
+#define ComboBox_SetCurSel(hwndCtl, index) \
+	((int)SendMessage((hwndCtl), CB_SETCURSEL, (WPARAM)(int)(index), 0L))
+
+#define ComboBox_SetEditSel(hwndCtl, ichStart, ichEnd) \
+	((int)SendMessage((hwndCtl), CB_SETEDITSEL, 0L, MAKELPARAM((ichStart), (ichEnd))))
+
+#define ComboBox_SetExtendedUI(hwndCtl, flags) \
+	((int)SendMessage((hwndCtl), CB_SETEXTENDEDUI, (WPARAM)(UINT)(flags), 0L))
+
+#define ComboBox_SetItemData(hwndCtl, index, data) \
+	((int)SendMessage((hwndCtl), CB_SETITEMDATA, (WPARAM)(int)(index), (LPARAM)(DWORD)(data)))
+
+#define ComboBox_SetItemHeight(hwndCtl, index, cyItem) \
+	((int)SendMessage((hwndCtl), CB_SETITEMHEIGHT, (WPARAM)(int)(index), (LPARAM)(int)cyItem))
+
+#define ComboBox_SetText(hwndCtl, lpsz) \
+	SetWindowText((hwndCtl), (lpsz))
+
+#define ComboBox_ShowDropdown(hwndCtl, fShow) \
+	((BOOL)SendMessage((hwndCtl), CB_SHOWDROPDOWN, (WPARAM)(BOOL)(fShow), 0L))
+
+
+/* Edit Message APIs */
+
+#define Edit_CanUndo(hwndCtl) \
+	((BOOL)SendMessage((hwndCtl), EM_CANUNDO, 0L, 0L))
+
+#define Edit_EmptyUndoBuffer(hwndCtl) \
+	((void)SendMessage((hwndCtl), EM_EMPTYUNDOBUFFER, 0L, 0L))
+
+#define Edit_Enable(hwndCtl, fEnable) \
+	EnableWindow((hwndCtl), (fEnable))
+
+#define Edit_FmtLines(hwndCtl, fAddEOL) \
+	((BOOL)SendMessage((hwndCtl), EM_FMTLINES, (WPARAM)(BOOL)(fAddEOL), 0L))
+
+#define Edit_GetFirstVisibleLine(hwndCtl) \
+	((int)SendMessage((hwndCtl), EM_GETFIRSTVISIBLELINE, 0L, 0L))
+
+#define Edit_GetHandle(hwndCtl) \
+	((HLOCAL)SendMessage((hwndCtl), EM_GETHANDLE, 0L, 0L))
+
+#define Edit_GetLine(hwndCtl, line, lpch, cchMax) \
+	((*((int *)(lpch)) = (cchMax)), ((int)SendMessage((hwndCtl), EM_GETLINE, (WPARAM)(int)(line), (LPARAM)(LPTSTR)(lpch))))
+
+#define Edit_GetModify(hwndCtl) \
+	((BOOL)SendMessage((hwndCtl), EM_GETMODIFY, 0L, 0L))
+
+#define Edit_GetPasswordChar(hwndCtl) \
+	((TCHAR)SendMessage((hwndCtl), EM_GETPASSWORDCHAR, 0L, 0L))
+
+#define Edit_GetRect(hwndCtl, lprc) \
+	((void)SendMessage((hwndCtl), EM_GETRECT, 0L, (LPARAM)(RECT *)(lprc)))
+
+#define Edit_GetSel(hwndCtl) \
+	((DWORD)SendMessage((hwndCtl), EM_GETSEL, 0L, 0L))
+
+#define Edit_GetText(hwndCtl, lpch, cchMax) \
+	GetWindowText((hwndCtl), (lpch), (cchMax))
+
+#define Edit_GetTextLength(hwndCtl) \
+	GetWindowTextLength(hwndCtl)
+
+#define Edit_GetWordBreakProc(hwndCtl) \
+	((EDITWORDBREAKPROC)SendMessage((hwndCtl), EM_GETWORDBREAKPROC, 0L, 0L))
+
+#define Edit_LimitText(hwndCtl, cchMax) \
+	((void)SendMessage((hwndCtl), EM_LIMITTEXT, (WPARAM)(UINT)(cchMax), 0L))
+
+#define Edit_LineFromChar(hwndCtl, ich) \
+	((int)SendMessage((hwndCtl), EM_LINEFROMCHAR, (WPARAM)(int)(ich), 0L))
+
+#define Edit_LineIndex(hwndCtl, line) \
+	((int)SendMessage((hwndCtl), EM_LINEINDEX, (WPARAM)(int)(line), 0L))
+
+#define Edit_GetLineCount(hwndCtl) \
+	((int)SendMessage((hwndCtl), EM_GETLINECOUNT, 0L, 0L))
+
+#define Edit_LineLength(hwndCtl, line) \
+	((int)SendMessage((hwndCtl), EM_LINELENGTH, (WPARAM)(int)(line), 0L))
+
+#define Edit_ReplaceSel(hwndCtl, lpszReplace) \
+	((void)SendMessage((hwndCtl), EM_REPLACESEL, 0L, (LPARAM)(LPCTSTR)(lpszReplace)))
+
+#define Edit_Scroll(hwndCtl, dv, dh) \
+	((void)SendMessage((hwndCtl), EM_LINESCROLL, (WPARAM)(int)(dh), (LPARAM)(int)(dv)))
+
+#define Edit_ScrollCaret(hwndCtl) \
+	((BOOL)SendMessage((hwndCtl), EM_SCROLLCARET, 0, 0L))
+
+#define Edit_SetHandle(hwndCtl, h) \
+	((void)SendMessage((hwndCtl), EM_SETHANDLE, (WPARAM)(UINT)(HLOCAL)(h), 0L))
+
+#define Edit_SetModify(hwndCtl, fModified) \
+	((void)SendMessage((hwndCtl), EM_SETMODIFY, (WPARAM)(UINT)(fModified), 0L))
+
+#define Edit_SetPasswordChar(hwndCtl, ch) \
+	((void)SendMessage((hwndCtl), EM_SETPASSWORDCHAR, (WPARAM)(UINT)(ch), 0L))
+
+#define Edit_SetReadOnly(hwndCtl, fReadOnly) \
+	((BOOL)SendMessage((hwndCtl), EM_SETREADONLY, (WPARAM)(BOOL)(fReadOnly), 0L))
+
+#define Edit_SetRect(hwndCtl, lprc) \
+	((void)SendMessage((hwndCtl), EM_SETRECT, 0L, (LPARAM)(const RECT *)(lprc)))
+
+#define Edit_SetRectNoPaint(hwndCtl, lprc) \
+	((void)SendMessage((hwndCtl), EM_SETRECTNP, 0L, (LPARAM)(const RECT *)(lprc)))
+
+#define Edit_SetSel(hwndCtl, ichStart, ichEnd) \
+	((void)SendMessage((hwndCtl), EM_SETSEL, (ichStart), (ichEnd)))
+
+#define Edit_SetTabStops(hwndCtl, cTabs, lpTabs) \
+	((void)SendMessage((hwndCtl), EM_SETTABSTOPS, (WPARAM)(int)(cTabs), (LPARAM)(const int *)(lpTabs)))
+
+#define Edit_SetText(hwndCtl, lpsz) \
+	SetWindowText((hwndCtl), (lpsz))
+
+#define Edit_SetWordBreakProc(hwndCtl, lpfnWordBreak) \
+	((void)SendMessage((hwndCtl), EM_SETWORDBREAKPROC, 0L, (LPARAM)(EDITWORDBREAKPROC)(lpfnWordBreak)))
+
+#define Edit_Undo(hwndCtl) \
+	((BOOL)SendMessage((hwndCtl), EM_UNDO, 0L, 0L))
+
+
+/* ListBox Message APIs */
+
+#define ListBox_AddItemData(hwndCtl, data) \
+	((int)SendMessage((hwndCtl), LB_ADDSTRING, 0L, (LPARAM)(LPCTSTR)(data)))
+
+#define ListBox_AddString(hwndCtl, lpsz) \
+	((int)SendMessage((hwndCtl), LB_ADDSTRING, 0L, (LPARAM)(LPCTSTR)(lpsz)))
+
+#define ListBox_DeleteString(hwndCtl, index) \
+	((int)SendMessage((hwndCtl), LB_DELETESTRING, (WPARAM)(int)(index), 0L))
+
+#define ListBox_Dir(hwndCtl, attrs, lpszFileSpec) \
+	((int)SendMessage((hwndCtl), LB_DIR, (WPARAM)(UINT)(attrs), (LPARAM)(LPCTSTR)(lpszFileSpec)))
+
+#define ListBox_Enable(hwndCtl, fEnable) \
+	EnableWindow((hwndCtl), (fEnable))
+
+#define ListBox_FindItemData(hwndCtl, indexStart, data) \
+	((int)SendMessage((hwndCtl), LB_FINDSTRING, (WPARAM)(int)(indexStart), (LPARAM)(LPCTSTR)(data)))
+
+#define ListBox_FindString(hwndCtl, indexStart, lpszFind) \
+	((int)SendMessage((hwndCtl), LB_FINDSTRING, (WPARAM)(int)(indexStart), (LPARAM)(LPCTSTR)(lpszFind)))
+
+#define ListBox_FindStringExact(hwndCtl, indexStart, lpszFind) \
+	((int)SendMessage((hwndCtl), LB_FINDSTRINGEXACT, (WPARAM)(int)(indexStart), (LPARAM)(LPCTSTR)(lpszFind)))
+
+#define ListBox_GetCaretIndex(hwndCtl) \
+	((int)SendMessage((hwndCtl), LB_GETCARETINDEX, 0L, 0L))
+
+#define ListBox_GetCurSel(hwndCtl) \
+	((int)SendMessage((hwndCtl), LB_GETCURSEL, 0L, 0L))
+
+#define ListBox_GetCount(hwndCtl) \
+	((int)SendMessage((hwndCtl), LB_GETCOUNT, 0L, 0L))
+
+#define ListBox_GetHorizontalExtent(hwndCtl) \
+	((int)SendMessage((hwndCtl), LB_GETHORIZONTALEXTENT, 0L, 0L))
+
+#define ListBox_GetItemData(hwndCtl, index) \
+	((LRESULT)SendMessage((hwndCtl), LB_GETITEMDATA, (WPARAM)(int)(index), 0L))
+
+#define ListBox_GetItemHeight(hwndCtl, index) \
+	((int)SendMessage((hwndCtl), LB_GETITEMHEIGHT, (WPARAM)(int)(index), 0L))
+
+#define ListBox_GetItemRect(hwndCtl, index, lprc) \
+	((int)SendMessage((hwndCtl), LB_GETITEMRECT, (WPARAM)(int)(index), (LPARAM)(RECT *)(lprc)))
+
+#define ListBox_GetSel(hwndCtl, index) \
+	((int)SendMessage((hwndCtl), LB_GETSEL, (WPARAM)(int)(index), 0L))
+
+#define ListBox_GetSelCount(hwndCtl) \
+	((int)SendMessage((hwndCtl), LB_GETSELCOUNT, 0L, 0L))
+
+#define ListBox_GetSelItems(hwndCtl, cItems, lpItems) \
+	((int)SendMessage((hwndCtl), LB_GETSELITEMS, (WPARAM)(int)(cItems), (LPARAM)(int *)(lpItems)))
+
+#define ListBox_GetText(hwndCtl, index, lpszBuffer) \
+	((int)SendMessage((hwndCtl), LB_GETTEXT, (WPARAM)(int)(index), (LPARAM)(LPCTSTR)(lpszBuffer)))
+
+#define ListBox_GetTextLen(hwndCtl, index) \
+	((int)SendMessage((hwndCtl), LB_GETTEXTLEN, (WPARAM)(int)(index), 0L))
+
+#define ListBox_GetTopIndex(hwndCtl) \
+	((int)SendMessage((hwndCtl), LB_GETTOPINDEX, 0L, 0L))
+
+#define ListBox_InsertItemData(hwndCtl, index, data) \
+	((int)SendMessage((hwndCtl), LB_INSERTSTRING, (WPARAM)(int)(index), (LPARAM)(LPCTSTR)(data)))
+
+#define ListBox_InsertString(hwndCtl, index, lpsz) \
+	((int)SendMessage((hwndCtl), LB_INSERTSTRING, (WPARAM)(int)(index), (LPARAM)(LPCTSTR)(lpsz)))
+
+#define ListBox_ResetContent(hwndCtl) \
+	((BOOL)SendMessage((hwndCtl), LB_RESETCONTENT, 0L, 0L))
+
+#define ListBox_SelectItemData(hwndCtl, indexStart, data) \
+	((int)SendMessage((hwndCtl), LB_SELECTSTRING, (WPARAM)(int)(indexStart), (LPARAM)(LPCTSTR)(data)))
+
+#define ListBox_SelectString(hwndCtl, indexStart, lpszFind) \
+	((int)SendMessage((hwndCtl), LB_SELECTSTRING, (WPARAM)(int)(indexStart), (LPARAM)(LPCTSTR)(lpszFind)))
+
+#define ListBox_SelItemRange(hwndCtl, fSelect, first, last) \
+	((int)SendMessage((hwndCtl), LB_SELITEMRANGE, (WPARAM)(BOOL)(fSelect), MAKELPARAM((first), (last))))
+
+#define ListBox_SetCaretIndex(hwndCtl, index) \
+	((int)SendMessage((hwndCtl), LB_SETCARETINDEX, (WPARAM)(int)(index), 0L))
+
+#define ListBox_SetColumnWidth(hwndCtl, cxColumn) \
+	((void)SendMessage((hwndCtl), LB_SETCOLUMNWIDTH, (WPARAM)(int)(cxColumn), 0L))
+
+#define ListBox_SetCurSel(hwndCtl, index) \
+	((int)SendMessage((hwndCtl), LB_SETCURSEL, (WPARAM)(int)(index), 0L))
+
+#define ListBox_SetHorizontalExtent(hwndCtl, cxExtent) \
+	((void)SendMessage((hwndCtl), LB_SETHORIZONTALEXTENT, (WPARAM)(int)(cxExtent), 0L))
+
+#define ListBox_SetItemData(hwndCtl, index, data) \
+	((int)SendMessage((hwndCtl), LB_SETITEMDATA, (WPARAM)(int)(index), (LPARAM)(DWORD)(data)))
+
+#define ListBox_SetItemHeight(hwndCtl, index, cy) \
+	((int)SendMessage((hwndCtl), LB_SETITEMHEIGHT, (WPARAM)(int)(index), MAKELPARAM((cy), 0)))
+
+#define ListBox_SetSel(hwndCtl, fSelect, index) \
+	((int)SendMessage((hwndCtl), LB_SETSEL, (WPARAM)(BOOL)(fSelect), (LPARAM)(UINT)(index)))
+
+#define ListBox_SetTabStops(hwndCtl, cTabs, lpTabs) \
+	((BOOL)SendMessage((hwndCtl), LB_SETTABSTOPS, (WPARAM)(int)(cTabs), (LPARAM)(int *)(lpTabs)))
+
+#define ListBox_SetTopIndex(hwndCtl, indexTop) \
+	((int)SendMessage((hwndCtl), LB_SETTOPINDEX, (WPARAM)(int)(indexTop), 0L))
+
+
+/* Scrollbar Message APIs */
+
+#define ScrollBar_Enable(hwndCtl, flags) \
+	EnableScrollBar((hwndCtl), SB_CTL, (flags))
+
+#define ScrollBar_GetPos(hwndCtl) \
+	GetScrollPos((hwndCtl), SB_CTL)
+
+#define ScrollBar_GetRange(hwndCtl, lpposMin, lpposMax) \
+	GetScrollRange((hwndCtl), SB_CTL, (lpposMin), (lpposMax))
+
+#define ScrollBar_SetPos(hwndCtl, pos, fRedraw) \
+	SetScrollPos((hwndCtl), SB_CTL, (pos), (fRedraw))
+
+#define ScrollBar_SetRange(hwndCtl, posMin, posMax, fRedraw) \
+	SetScrollRange((hwndCtl), SB_CTL, (posMin), (posMax), (fRedraw))
+
+#define ScrollBar_Show(hwndCtl, fShow) \
+	ShowWindow((hwndCtl), (fShow) ? SW_SHOWNORMAL : SW_HIDE)
+
+
+/* Static Message APIs */
+
+#define Static_Enable(hwndCtl, fEnable) \
+	EnableWindow((hwndCtl), (fEnable))
+
+#define Static_GetIcon(hwndCtl, hIcon) \
+	((HICON)SendMessage((hwndCtl), STM_GETICON, 0L, 0L))
+
+#define Static_GetText(hwndCtl, lpch, cchMax) \
+	GetWindowText((hwndCtl), (lpch), (cchMax))
+
+#define Static_GetTextLength(hwndCtl) \
+	GetWindowTextLength(hwndCtl)
+
+#define Static_SetIcon(hwndCtl, hIcon) \
+	((HICON)SendMessage((hwndCtl), STM_SETICON, (WPARAM)(HICON)(hIcon), 0L))
+
+#define Static_SetText(hwndCtl, lpsz) \
+	SetWindowText((hwndCtl), (lpsz))
+
+
+/****** Message crackers ****************************************************/
+
+#define HANDLE_MSG(hwnd, message, fn)    \
+    case (message): return HANDLE_##message((hwnd), (wParam), (lParam), (fn))
+
+/* void Cls_OnCompacting(HWND hwnd, UINT compactRatio) */
+#define HANDLE_WM_COMPACTING(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (UINT)(wParam)), 0L)
+#define FORWARD_WM_COMPACTING(hwnd, compactRatio, fn) \
+    (void)(fn)((hwnd), WM_COMPACTING, (WPARAM)(UINT)(compactRatio), 0L)
+
+/* void Cls_OnWinIniChange(HWND hwnd, LPCTSTR lpszSectionName) */
+#define HANDLE_WM_WININICHANGE(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (LPCTSTR)(lParam)), 0L)
+#define FORWARD_WM_WININICHANGE(hwnd, lpszSectionName, fn) \
+    (void)(fn)((hwnd), WM_WININICHANGE, 0L, (LPARAM)(LPCTSTR)(lpszSectionName))
+
+/* void Cls_OnSysColorChange(HWND hwnd) */
+#define HANDLE_WM_SYSCOLORCHANGE(hwnd, wParam, lParam, fn) \
+    ((fn)(hwnd), 0L)
+#define FORWARD_WM_SYSCOLORCHANGE(hwnd, fn) \
+    (void)(fn)((hwnd), WM_SYSCOLORCHANGE, 0L, 0L)
+
+/* BOOL Cls_OnQueryNewPalette(HWND hwnd) */
+#define HANDLE_WM_QUERYNEWPALETTE(hwnd, wParam, lParam, fn) \
+    MAKELRESULT((BOOL)(fn)(hwnd), 0L)
+#define FORWARD_WM_QUERYNEWPALETTE(hwnd, fn) \
+    (BOOL)(DWORD)(fn)((hwnd), WM_QUERYNEWPALETTE, 0L, 0L)
+
+/* void Cls_OnPaletteIsChanging(HWND hwnd, HWND hwndPaletteChange) */
+#define HANDLE_WM_PALETTEISCHANGING(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (HWND)(wParam)), 0L)
+#define FORWARD_WM_PALETTEISCHANGING(hwnd, hwndPaletteChange, fn) \
+    (void)(fn)((hwnd), WM_PALETTEISCHANGING, (WPARAM)(HWND)(hwndPaletteChange), 0L)
+
+/* void Cls_OnPaletteChanged(HWND hwnd, HWND hwndPaletteChange) */
+#define HANDLE_WM_PALETTECHANGED(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (HWND)(wParam)), 0L)
+#define FORWARD_WM_PALETTECHANGED(hwnd, hwndPaletteChange, fn) \
+    (void)(fn)((hwnd), WM_PALETTECHANGED, (WPARAM)(HWND)(hwndPaletteChange), 0L)
+
+/* void Cls_OnFontChange(HWND hwnd) */
+#define HANDLE_WM_FONTCHANGE(hwnd, wParam, lParam, fn) \
+    ((fn)(hwnd), 0L)
+#define FORWARD_WM_FONTCHANGE(hwnd, fn) \
+    (void)(fn)((hwnd), WM_FONTCHANGE, 0L, 0L)
+
+/* void Cls_OnSpoolerStatus(HWND hwnd, UINT status, int cJobInQueue) */
+#define HANDLE_WM_SPOOLERSTATUS(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (UINT)(wParam), (int)(short)LOWORD(lParam)), 0L)
+#define FORWARD_WM_SPOOLERSTATUS(hwnd, status, cJobInQueue, fn) \
+    (void)(fn)((hwnd), WM_SPOOLERSTATUS, (WPARAM)(status), MAKELPARAM((cJobInQueue), 0))
+
+/* void Cls_OnDevModeChange(HWND hwnd, LPCTSTR lpszDeviceName) */
+#define HANDLE_WM_DEVMODECHANGE(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (LPCTSTR)(lParam)), 0L)
+#define FORWARD_WM_DEVMODECHANGE(hwnd, lpszDeviceName, fn) \
+    (void)(fn)((hwnd), WM_DEVMODECHANGE, 0L, (LPARAM)(LPCTSTR)(lpszDeviceName))
+
+/* void Cls_OnTimeChange(HWND hwnd) */
+#define HANDLE_WM_TIMECHANGE(hwnd, wParam, lParam, fn) \
+    ((fn)(hwnd), 0L)
+#define FORWARD_WM_TIMECHANGE(hwnd, fn) \
+    (void)(fn)((hwnd), WM_TIMECHANGE, 0L, 0L)
+
+/* void Cls_OnPower(HWND hwnd, int code) */
+#define HANDLE_WM_POWER(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (int)(wParam)), 0L)
+#define FORWARD_WM_POWER(hwnd, code, fn) \
+    (void)(fn)((hwnd), WM_POWER, (WPARAM)(int)(code), 0L)
+
+/* BOOL Cls_OnQueryEndSession(HWND hwnd) */
+#define HANDLE_WM_QUERYENDSESSION(hwnd, wParam, lParam, fn) \
+    MAKELRESULT((BOOL)(fn)(hwnd), 0L)
+#define FORWARD_WM_QUERYENDSESSION(hwnd, fn) \
+    (BOOL)(DWORD)(fn)((hwnd), WM_QUERYENDSESSION, 0L, 0L)
+
+/* void Cls_OnEndSession(HWND hwnd, BOOL fEnding) */
+#define HANDLE_WM_ENDSESSION(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (BOOL)(wParam)), 0L)
+#define FORWARD_WM_ENDSESSION(hwnd, fEnding, fn) \
+    (void)(fn)((hwnd), WM_ENDSESSION, (WPARAM)(BOOL)(fEnding), 0L)
+
+/* void Cls_OnQuit(HWND hwnd, int exitCode) */
+#define HANDLE_WM_QUIT(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (int)(wParam)), 0L)
+#define FORWARD_WM_QUIT(hwnd, exitCode, fn) \
+    (void)(fn)((hwnd), WM_QUIT, (WPARAM)(exitCode), 0L)
+
+/* This message is in Windows 3.1 only */
+/* void Cls_OnSystemError(HWND hwnd, int errCode) */
+#define HANDLE_WM_SYSTEMERROR(hwnd, wParam, lParam, fn) 0L
+#define FORWARD_WM_SYSTEMERROR(hwnd, errCode, fn) 0L
+
+/* BOOL Cls_OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct) */
+#define HANDLE_WM_CREATE(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (LPCREATESTRUCT)(lParam)) ? 0L : (LRESULT)-1L)
+#define FORWARD_WM_CREATE(hwnd, lpCreateStruct, fn) \
+    (BOOL)(DWORD)(fn)((hwnd), WM_CREATE, 0L, (LPARAM)(LPCREATESTRUCT)(lpCreateStruct))
+
+/* BOOL Cls_OnNCCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct) */
+#define HANDLE_WM_NCCREATE(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(BOOL)(fn)((hwnd), (LPCREATESTRUCT)(lParam))
+#define FORWARD_WM_NCCREATE(hwnd, lpCreateStruct, fn) \
+    (BOOL)(DWORD)(fn)((hwnd), WM_NCCREATE, 0L, (LPARAM)(LPCREATESTRUCT)(lpCreateStruct))
+
+/* void Cls_OnDestroy(HWND hwnd) */
+#define HANDLE_WM_DESTROY(hwnd, wParam, lParam, fn) \
+    ((fn)(hwnd), 0L)
+#define FORWARD_WM_DESTROY(hwnd, fn) \
+    (void)(fn)((hwnd), WM_DESTROY, 0L, 0L)
+
+/* void Cls_OnNCDestroy(HWND hwnd) */
+#define HANDLE_WM_NCDESTROY(hwnd, wParam, lParam, fn) \
+    ((fn)(hwnd), 0L)
+#define FORWARD_WM_NCDESTROY(hwnd, fn) \
+    (void)(fn)((hwnd), WM_NCDESTROY, 0L, 0L)
+
+/* void Cls_OnShowWindow(HWND hwnd, BOOL fShow, UINT status) */
+#define HANDLE_WM_SHOWWINDOW(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (BOOL)(wParam), (UINT)(lParam)), 0L)
+#define FORWARD_WM_SHOWWINDOW(hwnd, fShow, status, fn) \
+    (void)(fn)((hwnd), WM_SHOWWINDOW, (WPARAM)(BOOL)(fShow), (LPARAM)(UINT)(status))
+
+/* void Cls_OnSetRedraw(HWND hwnd, BOOL fRedraw) */
+#define HANDLE_WM_SETREDRAW(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (BOOL)(wParam)), 0L)
+#define FORWARD_WM_SETREDRAW(hwnd, fRedraw, fn) \
+    (void)(fn)((hwnd), WM_SETREDRAW, (WPARAM)(BOOL)(fRedraw), 0L)
+
+/* void Cls_OnEnable(HWND hwnd, BOOL fEnable) */
+#define HANDLE_WM_ENABLE(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (BOOL)(wParam)), 0L)
+#define FORWARD_WM_ENABLE(hwnd, fEnable, fn) \
+    (void)(fn)((hwnd), WM_ENABLE, (WPARAM)(BOOL)(fEnable), 0L)
+
+/* void Cls_OnSetText(HWND hwnd, LPCTSTR lpszText) */
+#define HANDLE_WM_SETTEXT(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (LPCTSTR)(lParam)), 0L)
+#define FORWARD_WM_SETTEXT(hwnd, lpszText, fn) \
+    (void)(fn)((hwnd), WM_SETTEXT, 0L, (LPARAM)(LPCTSTR)(lpszText))
+
+/* INT Cls_OnGetText(HWND hwnd, int cchTextMax, LPTSTR lpszText) */
+#define HANDLE_WM_GETTEXT(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(int)(fn)((hwnd), (int)(wParam), (LPTSTR)(lParam))
+#define FORWARD_WM_GETTEXT(hwnd, cchTextMax, lpszText, fn) \
+    (int)(DWORD)(fn)((hwnd), WM_GETTEXT, (WPARAM)(int)(cchTextMax), (LPARAM)(LPTSTR)(lpszText))
+
+/* INT Cls_OnGetTextLength(HWND hwnd) */
+#define HANDLE_WM_GETTEXTLENGTH(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(int)(fn)(hwnd)
+#define FORWARD_WM_GETTEXTLENGTH(hwnd, fn) \
+    (int)(DWORD)(fn)((hwnd), WM_GETTEXTLENGTH, 0L, 0L)
+
+/* BOOL Cls_OnWindowPosChanging(HWND hwnd, LPWINDOWPOS lpwpos) */
+#define HANDLE_WM_WINDOWPOSCHANGING(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(BOOL)(fn)((hwnd), (LPWINDOWPOS)(lParam))
+#define FORWARD_WM_WINDOWPOSCHANGING(hwnd, lpwpos, fn) \
+    (BOOL)(DWORD)(fn)((hwnd), WM_WINDOWPOSCHANGING, 0L, (LPARAM)(LPWINDOWPOS)(lpwpos))
+
+/* void Cls_OnWindowPosChanged(HWND hwnd, const LPWINDOWPOS lpwpos) */
+#define HANDLE_WM_WINDOWPOSCHANGED(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (const LPWINDOWPOS)(lParam)), 0L)
+#define FORWARD_WM_WINDOWPOSCHANGED(hwnd, lpwpos, fn) \
+    (void)(fn)((hwnd), WM_WINDOWPOSCHANGED, 0L, (LPARAM)(const LPWINDOWPOS)(lpwpos))
+
+/* void Cls_OnMove(HWND hwnd, int x, int y) */
+#define HANDLE_WM_MOVE(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam)), 0L)
+#define FORWARD_WM_MOVE(hwnd, x, y, fn) \
+    (void)(fn)((hwnd), WM_MOVE, 0L, MAKELPARAM((x), (y)))
+
+/* void Cls_OnSize(HWND hwnd, UINT state, int cx, int cy) */
+#define HANDLE_WM_SIZE(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (UINT)(wParam), (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam)), 0L)
+#define FORWARD_WM_SIZE(hwnd, state, cx, cy, fn) \
+    (void)(fn)((hwnd), WM_SIZE, (WPARAM)(UINT)(state), MAKELPARAM((cx), (cy)))
+
+/* void Cls_OnClose(HWND hwnd) */
+#define HANDLE_WM_CLOSE(hwnd, wParam, lParam, fn) \
+    ((fn)(hwnd), 0L)
+#define FORWARD_WM_CLOSE(hwnd, fn) \
+    (void)(fn)((hwnd), WM_CLOSE, 0L, 0L)
+
+/* BOOL Cls_OnQueryOpen(HWND hwnd) */
+#define HANDLE_WM_QUERYOPEN(hwnd, wParam, lParam, fn) \
+    MAKELRESULT((BOOL)(fn)(hwnd), 0L)
+#define FORWARD_WM_QUERYOPEN(hwnd, fn) \
+    (BOOL)(DWORD)(fn)((hwnd), WM_QUERYOPEN, 0L, 0L)
+
+/* void Cls_OnPaint(HWND hwnd) */
+#define HANDLE_WM_PAINT(hwnd, wParam, lParam, fn) \
+    ((fn)(hwnd), 0L)
+#define FORWARD_WM_PAINT(hwnd, fn) \
+    (void)(fn)((hwnd), WM_PAINT, 0L, 0L)
+
+/* BOOL Cls_OnEraseBkgnd(HWND hwnd, HDC hdc) */
+#define HANDLE_WM_ERASEBKGND(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(BOOL)(fn)((hwnd), (HDC)(wParam))
+#define FORWARD_WM_ERASEBKGND(hwnd, hdc, fn) \
+   (BOOL)(DWORD)(fn)((hwnd), WM_ERASEBKGND, (WPARAM)(HDC)(hdc), 0L)
+
+/* BOOL Cls_OnIconEraseBkgnd(HWND hwnd, HDC hdc) */
+#define HANDLE_WM_ICONERASEBKGND(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(BOOL)(fn)((hwnd), (HDC)(wParam))
+#define FORWARD_WM_ICONERASEBKGND(hwnd, hdc, fn) \
+    (BOOL)(DWORD)(fn)((hwnd), WM_ICONERASEBKGND, (WPARAM)(HDC)(hdc), 0L)
+
+/* void Cls_OnNCPaint(HWND hwnd, HRGN hrgn) */
+#define HANDLE_WM_NCPAINT(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (HRGN)(wParam)), 0L)
+#define FORWARD_WM_NCPAINT(hwnd, hrgn, fn) \
+    (void)(fn)((hwnd), WM_NCPAINT, (WPARAM)(HRGN)(hrgn), 0L)
+
+/* UINT Cls_OnNCCalcSize(HWND hwnd, BOOL fCalcValidRects, NCCALCSIZE_PARAMS * lpcsp) */
+#define HANDLE_WM_NCCALCSIZE(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(UINT)(fn)((hwnd), (BOOL)(0), (NCCALCSIZE_PARAMS *)(lParam))
+#define FORWARD_WM_NCCALCSIZE(hwnd, fCalcValidRects, lpcsp, fn) \
+    (UINT)(DWORD)(fn)((hwnd), WM_NCCALCSIZE, 0L, (LPARAM)(NCCALCSIZE_PARAMS *)(lpcsp))
+
+/* HICON Cls_OnQueryDragIcon(HWND hwnd) */
+#define HANDLE_WM_QUERYDRAGICON(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(UINT)(fn)(hwnd)
+#define FORWARD_WM_QUERYDRAGICON(hwnd, fn) \
+    (HICON)(UINT)(DWORD)(fn)((hwnd), WM_QUERYDRAGICON, 0L, 0L)
+
+/* void Cls_OnDropFiles(HWND hwnd, HDROP hdrop) */
+#define HANDLE_WM_DROPFILES(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (HDROP)(wParam)), 0L)
+#define FORWARD_WM_DROPFILES(hwnd, hdrop, fn) \
+    (void)(fn)((hwnd), WM_DROPFILES, (WPARAM)(HDROP)(hdrop), 0L)
+
+/* void Cls_OnActivate(HWND hwnd, UINT state, HWND hwndActDeact, BOOL fMinimized) */
+#define HANDLE_WM_ACTIVATE(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (UINT)LOWORD(wParam), (HWND)(lParam), (BOOL)HIWORD(wParam)), 0L)
+#define FORWARD_WM_ACTIVATE(hwnd, state, hwndActDeact, fMinimized, fn) \
+    (void)(fn)((hwnd), WM_ACTIVATE, MAKEWPARAM((state), (fMinimized)), (LPARAM)(HWND)(hwndActDeact))
+
+/* void Cls_OnActivateApp(HWND hwnd, BOOL fActivate, DWORD dwThreadId) */
+#define HANDLE_WM_ACTIVATEAPP(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (BOOL)(wParam), (DWORD)(lParam)), 0L)
+#define FORWARD_WM_ACTIVATEAPP(hwnd, fActivate, dwThreadId, fn) \
+    (void)(fn)((hwnd), WM_ACTIVATEAPP, (WPARAM)(BOOL)(fActivate), (LPARAM)(dwThreadId))
+
+/* BOOL Cls_OnNCActivate(HWND hwnd, BOOL fActive, HWND hwndActDeact, BOOL fMinimized) */
+#define HANDLE_WM_NCACTIVATE(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(BOOL)(fn)((hwnd), (BOOL)(wParam), 0L, 0L)
+#define FORWARD_WM_NCACTIVATE(hwnd, fActive, hwndActDeact, fMinimized, fn) \
+    (BOOL)(DWORD)(fn)((hwnd), WM_NCACTIVATE, (WPARAM)(BOOL)(fActive), 0L)
+
+/* void Cls_OnSetFocus(HWND hwnd, HWND hwndOldFocus) */
+#define HANDLE_WM_SETFOCUS(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (HWND)(wParam)), 0L)
+#define FORWARD_WM_SETFOCUS(hwnd, hwndOldFocus, fn) \
+    (void)(fn)((hwnd), WM_SETFOCUS, (WPARAM)(HWND)(hwndOldFocus), 0L)
+
+/* void Cls_OnKillFocus(HWND hwnd, HWND hwndNewFocus) */
+#define HANDLE_WM_KILLFOCUS(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (HWND)(wParam)), 0L)
+#define FORWARD_WM_KILLFOCUS(hwnd, hwndNewFocus, fn) \
+    (void)(fn)((hwnd), WM_KILLFOCUS, (WPARAM)(HWND)(hwndNewFocus), 0L)
+
+/* void Cls_OnKey(HWND hwnd, UINT vk, BOOL fDown, int cRepeat, UINT flags) */
+#define HANDLE_WM_KEYDOWN(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (UINT)(wParam), TRUE, (int)(short)LOWORD(lParam), (UINT)HIWORD(lParam)), 0L)
+#define FORWARD_WM_KEYDOWN(hwnd, vk, cRepeat, flags, fn) \
+    (void)(fn)((hwnd), WM_KEYDOWN, (WPARAM)(UINT)(vk), MAKELPARAM((cRepeat), (flags)))
+
+/* void Cls_OnKey(HWND hwnd, UINT vk, BOOL fDown, int cRepeat, UINT flags) */
+#define HANDLE_WM_KEYUP(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (UINT)(wParam), FALSE, (int)(short)LOWORD(lParam), (UINT)HIWORD(lParam)), 0L)
+#define FORWARD_WM_KEYUP(hwnd, vk, cRepeat, flags, fn) \
+    (void)(fn)((hwnd), WM_KEYUP, (WPARAM)(UINT)(vk), MAKELPARAM((cRepeat), (flags)))
+
+/* void Cls_OnChar(HWND hwnd, TCHAR ch, int cRepeat) */
+#define HANDLE_WM_CHAR(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (TCHAR)(wParam), (int)(short)LOWORD(lParam)), 0L)
+#define FORWARD_WM_CHAR(hwnd, ch, cRepeat, fn) \
+    (void)(fn)((hwnd), WM_CHAR, (WPARAM)(TCHAR)(ch), MAKELPARAM((cRepeat),0))
+
+/* void Cls_OnDeadChar(HWND hwnd, TCHAR ch, int cRepeat) */
+#define HANDLE_WM_DEADCHAR(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (TCHAR)(wParam), (int)(short)LOWORD(lParam)), 0L)
+#define FORWARD_WM_DEADCHAR(hwnd, ch, cRepeat, fn) \
+    (void)(fn)((hwnd), WM_DEADCHAR, (WPARAM)(TCHAR)(ch), MAKELPARAM((cRepeat),0))
+
+/* void Cls_OnSysKey(HWND hwnd, UINT vk, BOOL fDown, int cRepeat, UINT flags) */
+#define HANDLE_WM_SYSKEYDOWN(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (UINT)(wParam), TRUE, (int)(short)LOWORD(lParam), (UINT)HIWORD(lParam)), 0L)
+#define FORWARD_WM_SYSKEYDOWN(hwnd, vk, cRepeat, flags, fn) \
+    (void)(fn)((hwnd), WM_SYSKEYDOWN, (WPARAM)(UINT)(vk), MAKELPARAM((cRepeat), (flags)))
+
+/* void Cls_OnSysKey(HWND hwnd, UINT vk, BOOL fDown, int cRepeat, UINT flags) */
+#define HANDLE_WM_SYSKEYUP(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (UINT)(wParam), FALSE, (int)(short)LOWORD(lParam), (UINT)HIWORD(lParam)), 0L)
+#define FORWARD_WM_SYSKEYUP(hwnd, vk, cRepeat, flags, fn) \
+    (void)(fn)((hwnd), WM_SYSKEYUP, (WPARAM)(UINT)(vk), MAKELPARAM((cRepeat), (flags)))
+
+/* void Cls_OnSysChar(HWND hwnd, TCHAR ch, int cRepeat) */
+#define HANDLE_WM_SYSCHAR(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (TCHAR)(wParam), (int)(short)LOWORD(lParam)), 0L)
+#define FORWARD_WM_SYSCHAR(hwnd, ch, cRepeat, fn) \
+    (void)(fn)((hwnd), WM_SYSCHAR, (WPARAM)(TCHAR)(ch), MAKELPARAM((cRepeat), 0))
+
+/* void Cls_OnSysDeadChar(HWND hwnd, TCHAR ch, int cRepeat) */
+#define HANDLE_WM_SYSDEADCHAR(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (TCHAR)(wParam), (int)(short)LOWORD(lParam)), 0L)
+#define FORWARD_WM_SYSDEADCHAR(hwnd, ch, cRepeat, fn) \
+    (void)(fn)((hwnd), WM_SYSDEADCHAR, (WPARAM)(TCHAR)(ch), MAKELPARAM((cRepeat), 0))
+
+/* void Cls_OnMouseMove(HWND hwnd, int x, int y, UINT keyFlags) */
+#define HANDLE_WM_MOUSEMOVE(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_MOUSEMOVE(hwnd, x, y, keyFlags, fn) \
+    (void)(fn)((hwnd), WM_MOUSEMOVE, (WPARAM)(UINT)(keyFlags), MAKELPARAM((x), (y)))
+
+/* void Cls_OnLButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags) */
+#define HANDLE_WM_LBUTTONDOWN(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), FALSE, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_LBUTTONDOWN(hwnd, fDoubleClick, x, y, keyFlags, fn) \
+    (void)(fn)((hwnd), (fDoubleClick) ? WM_LBUTTONDBLCLK : WM_LBUTTONDOWN, (WPARAM)(UINT)(keyFlags), MAKELPARAM((x), (y)))
+
+/* void Cls_OnLButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags) */
+#define HANDLE_WM_LBUTTONDBLCLK(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), TRUE, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+
+/* void Cls_OnLButtonUp(HWND hwnd, int x, int y, UINT keyFlags) */
+#define HANDLE_WM_LBUTTONUP(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_LBUTTONUP(hwnd, x, y, keyFlags, fn) \
+    (void)(fn)((hwnd), WM_LBUTTONUP, (WPARAM)(UINT)(keyFlags), MAKELPARAM((x), (y)))
+
+/* void Cls_OnRButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags) */
+#define HANDLE_WM_RBUTTONDOWN(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), FALSE, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_RBUTTONDOWN(hwnd, fDoubleClick, x, y, keyFlags, fn) \
+    (void)(fn)((hwnd), (fDoubleClick) ? WM_RBUTTONDBLCLK : WM_RBUTTONDOWN, (WPARAM)(UINT)(keyFlags), MAKELPARAM((x), (y)))
+
+/* void Cls_OnRButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags) */
+#define HANDLE_WM_RBUTTONDBLCLK(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), TRUE, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+
+/* void Cls_OnRButtonUp(HWND hwnd, int x, int y, UINT flags) */
+#define HANDLE_WM_RBUTTONUP(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_RBUTTONUP(hwnd, x, y, keyFlags, fn) \
+    (void)(fn)((hwnd), WM_RBUTTONUP, (WPARAM)(UINT)(keyFlags), MAKELPARAM((x), (y)))
+
+/* void Cls_OnMButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags) */
+#define HANDLE_WM_MBUTTONDOWN(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), FALSE, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_MBUTTONDOWN(hwnd, fDoubleClick, x, y, keyFlags, fn) \
+    (void)(fn)((hwnd), (fDoubleClick) ? WM_MBUTTONDBLCLK : WM_MBUTTONDOWN, (WPARAM)(UINT)(keyFlags), MAKELPARAM((x), (y)))
+
+/* void Cls_OnMButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags) */
+#define HANDLE_WM_MBUTTONDBLCLK(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), TRUE, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+
+/* void Cls_OnMButtonUp(HWND hwnd, int x, int y, UINT flags) */
+#define HANDLE_WM_MBUTTONUP(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_MBUTTONUP(hwnd, x, y, keyFlags, fn) \
+    (void)(fn)((hwnd), WM_MBUTTONUP, (WPARAM)(UINT)(keyFlags), MAKELPARAM((x), (y)))
+
+/* void Cls_OnNCMouseMove(HWND hwnd, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCMOUSEMOVE(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_NCMOUSEMOVE(hwnd, x, y, codeHitTest, fn) \
+    (void)(fn)((hwnd), WM_NCMOUSEMOVE, (WPARAM)(UINT)(codeHitTest), MAKELPARAM((x), (y)))
+
+/* void Cls_OnNCLButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCLBUTTONDOWN(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), FALSE, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_NCLBUTTONDOWN(hwnd, fDoubleClick, x, y, codeHitTest, fn) \
+    (void)(fn)((hwnd), (fDoubleClick) ? WM_NCLBUTTONDBLCLK : WM_NCLBUTTONDOWN, (WPARAM)(UINT)(codeHitTest), MAKELPARAM((x), (y)))
+
+/* void Cls_OnNCLButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCLBUTTONDBLCLK(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), TRUE, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+
+/* void Cls_OnNCLButtonUp(HWND hwnd, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCLBUTTONUP(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_NCLBUTTONUP(hwnd, x, y, codeHitTest, fn) \
+    (void)(fn)((hwnd), WM_NCLBUTTONUP, (WPARAM)(UINT)(codeHitTest), MAKELPARAM((x), (y)))
+
+/* void Cls_OnNCRButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCRBUTTONDOWN(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), FALSE, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_NCRBUTTONDOWN(hwnd, fDoubleClick, x, y, codeHitTest, fn) \
+    (void)(fn)((hwnd), (fDoubleClick) ? WM_NCRBUTTONDBLCLK : WM_NCRBUTTONDOWN, (WPARAM)(UINT)(codeHitTest), MAKELPARAM((x), (y)) )
+
+/* void Cls_OnNCRButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCRBUTTONDBLCLK(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), TRUE, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+
+/* void Cls_OnNCRButtonUp(HWND hwnd, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCRBUTTONUP(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_NCRBUTTONUP(hwnd, x, y, codeHitTest, fn) \
+    (void)(fn)((hwnd), WM_NCRBUTTONUP, (WPARAM)(UINT)(codeHitTest), MAKELPARAM((x), (y)) )
+
+/* void Cls_OnNCMButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCMBUTTONDOWN(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), FALSE, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_NCMBUTTONDOWN(hwnd, fDoubleClick, x, y, codeHitTest, fn) \
+    (void)(fn)((hwnd), (fDoubleClick) ? WM_NCMBUTTONDBLCLK : WM_NCMBUTTONDOWN, (WPARAM)(UINT)(codeHitTest), MAKELPARAM((x), (y)) )
+
+/* void Cls_OnNCMButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCMBUTTONDBLCLK(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), TRUE, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+
+/* void Cls_OnNCMButtonUp(HWND hwnd, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCMBUTTONUP(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_NCMBUTTONUP(hwnd, x, y, codeHitTest, fn) \
+    (void)(fn)((hwnd), WM_NCMBUTTONUP, (WPARAM)(UINT)(codeHitTest), MAKELPARAM((x), (y)) )
+
+/* int Cls_OnMouseActivate(HWND hwnd, HWND hwndTopLevel, UINT codeHitTest, UINT msg) */
+#define HANDLE_WM_MOUSEACTIVATE(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(int)(fn)((hwnd), (HWND)(wParam), (UINT)LOWORD(lParam), (UINT)HIWORD(lParam))
+#define FORWARD_WM_MOUSEACTIVATE(hwnd, hwndTopLevel, codeHitTest, msg, fn) \
+    (int)(DWORD)(fn)((hwnd), WM_MOUSEACTIVATE, (WPARAM)(HWND)(hwndTopLevel), MAKELPARAM((codeHitTest), (msg)))
+
+/* void Cls_OnCancelMode(HWND hwnd) */
+#define HANDLE_WM_CANCELMODE(hwnd, wParam, lParam, fn)  ((fn)(hwnd), 0L)
+#define FORWARD_WM_CANCELMODE(hwnd, fn)  (void)(fn)((hwnd), WM_CANCELMODE, 0L, 0L)
+
+/* void Cls_OnInitMenu(HWND hwnd, HMENU hMenu) */
+#define HANDLE_WM_INITMENU(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (HMENU)(wParam)), 0L)
+#define FORWARD_WM_INITMENU(hwnd, hMenu, fn) \
+    (void)(fn)((hwnd), WM_INITMENU, (WPARAM)(HMENU)(hMenu), 0L)
+
+/* void Cls_OnMenuSelect(HWND hwnd, HMENU hmenu, int item, HMENU hmenuPopup, UINT flags) */
+#define HANDLE_WM_MENUSELECT(hwnd, wParam, lParam, fn)                  \
+    ((fn)((hwnd), (HMENU)(lParam),  \
+    (HIWORD(wParam) & MF_POPUP) ? 0L : (int)(LOWORD(wParam)),           \
+    (HIWORD(wParam) & MF_POPUP) ? GetSubMenu((HMENU)lParam, LOWORD(wParam)) : 0L, \
+    (UINT)(((short)HIWORD(wParam) == -1) ? 0xFFFFFFFF : HIWORD(wParam))), 0L)
+#define FORWARD_WM_MENUSELECT(hwnd, hmenu, item, hmenuPopup, flags, fn) \
+    (void)(fn)((hwnd), WM_MENUSELECT, MAKEWPARAM((item), (flags)), (LPARAM)(HMENU)((hmenu) ? (hmenu) : (hmenuPopup)))
+
+/* DWORD Cls_OnMenuChar(HWND hwnd, UINT ch, UINT flags, HMENU hmenu) */
+#define HANDLE_WM_MENUCHAR(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(fn)((hwnd), (UINT)(LOWORD(wParam)), (UINT)HIWORD(wParam), (HMENU)(lParam))
+#define FORWARD_WM_MENUCHAR(hwnd, ch, flags, hmenu, fn) \
+    (DWORD)(fn)((hwnd), WM_MENUCHAR, MAKEWPARAM(flags, (WORD)(ch)), (LPARAM)(HMENU)(hmenu))
+
+/* void Cls_OnHScroll(HWND hwnd, HWND hwndCtl, UINT code, int pos) */
+#define HANDLE_WM_HSCROLL(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (HWND)(lParam), (UINT)(LOWORD(wParam)), (int)(short)HIWORD(wParam)), 0L)
+#define FORWARD_WM_HSCROLL(hwnd, hwndCtl, code, pos, fn) \
+    (void)(fn)((hwnd), WM_HSCROLL, MAKEWPARAM((UINT)(int)(code),(UINT)(int)(pos)), (LPARAM)(UINT)(hwndCtl))
+
+/* void Cls_OnVScroll(HWND hwnd, HWND hwndCtl, UINT code, int pos) */
+#define HANDLE_WM_VSCROLL(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (HWND)(lParam), (UINT)(LOWORD(wParam)),  (int)(short)HIWORD(wParam)), 0L)
+#define FORWARD_WM_VSCROLL(hwnd, hwndCtl, code, pos, fn) \
+    (void)(fn)((hwnd), WM_VSCROLL, MAKEWPARAM((UINT)(int)(code), (UINT)(int)(pos)), (LPARAM)(HWND)(hwndCtl))
+
+/* void Cls_OnCut(HWND hwnd) */
+#define HANDLE_WM_CUT(hwnd, wParam, lParam, fn)  ((fn)(hwnd), 0L)
+#define FORWARD_WM_CUT(hwnd, fn)  (void)(fn)((hwnd), WM_CUT, 0L, 0L)
+
+/* void Cls_OnCopy(HWND hwnd) */
+#define HANDLE_WM_COPY(hwnd, wParam, lParam, fn)  ((fn)(hwnd), 0L)
+#define FORWARD_WM_COPY(hwnd, fn)  (void)(fn)((hwnd), WM_COPY, 0L, 0L)
+
+/* void Cls_OnPaste(HWND hwnd) */
+#define HANDLE_WM_PASTE(hwnd, wParam, lParam, fn)  ((fn)(hwnd), 0L)
+#define FORWARD_WM_PASTE(hwnd, fn)  (void)(fn)((hwnd), WM_PASTE, 0L, 0L)
+
+/* void Cls_OnClear(HWND hwnd) */
+#define HANDLE_WM_CLEAR(hwnd, wParam, lParam, fn)  ((fn)(hwnd), 0L)
+#define FORWARD_WM_CLEAR(hwnd, fn)  (void)(fn)((hwnd), WM_CLEAR, 0L, 0L)
+
+/* void Cls_OnUndo(HWND hwnd) */
+#define HANDLE_WM_UNDO(hwnd, wParam, lParam, fn)  ((fn)(hwnd), 0L)
+#define FORWARD_WM_UNDO(hwnd, fn)  (void)(fn)((hwnd), WM_UNDO, 0L, 0L)
+
+/* HANDLE Cls_OnRenderFormat(HWND hwnd, UINT fmt) */
+#define HANDLE_WM_RENDERFORMAT(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(UINT)(HANDLE)(fn)((hwnd), (UINT)(wParam))
+#define FORWARD_WM_RENDERFORMAT(hwnd, fmt, fn) \
+    (HANDLE)(UINT)(DWORD)(fn)((hwnd), WM_RENDERFORMAT, (WPARAM)(UINT)(fmt), 0L)
+
+/* void Cls_OnRenderAllFormats(HWND hwnd) */
+#define HANDLE_WM_RENDERALLFORMATS(hwnd, wParam, lParam, fn)  ((fn)(hwnd), 0L)
+#define FORWARD_WM_RENDERALLFORMATS(hwnd, fn)  (void)(fn)((hwnd), WM_RENDERALLFORMATS, 0L, 0L)
+
+/* void Cls_OnDestroyClipboard(HWND hwnd) */
+#define HANDLE_WM_DESTROYCLIPBOARD(hwnd, wParam, lParam, fn)  ((fn)(hwnd), 0L)
+#define FORWARD_WM_DESTROYCLIPBOARD(hwnd, fn)  (void)(fn)((hwnd), WM_DESTROYCLIPBOARD, 0L, 0L)
+
+/* void Cls_OnDrawClipboard(HWND hwnd) */
+#define HANDLE_WM_DRAWCLIPBOARD(hwnd, wParam, lParam, fn)  ((fn)(hwnd), 0L)
+#define FORWARD_WM_DRAWCLIPBOARD(hwnd, fn)  (void)(fn)((hwnd), WM_DRAWCLIPBOARD, 0L, 0L)
+
+/* void Cls_OnPaintClipboard(HWND hwnd, HWND hwndCBViewer, const LPPAINTSTRUCT lpPaintStruct) */
+#define HANDLE_WM_PAINTCLIPBOARD(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (HWND)(wParam), (const LPPAINTSTRUCT)GlobalLock((HGLOBAL)(lParam))), GlobalUnlock((HGLOBAL)(lParam)), 0L)
+#define FORWARD_WM_PAINTCLIPBOARD(hwnd, hwndCBViewer, lpPaintStruct, fn) \
+    (void)(fn)((hwnd), WM_PAINTCLIPBOARD, (WPARAM)(HWND)(hwndCBViewer), (LPARAM)(LPPAINTSTRUCT)(lpPaintStruct))
+
+/* void Cls_OnSizeClipboard(HWND hwnd, HWND hwndCBViewer, const LPRECT lprc) */
+#define HANDLE_WM_SIZECLIPBOARD(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (HWND)(wParam), (const LPRECT)GlobalLock((HGLOBAL)(lParam))), GlobalUnlock((HGLOBAL)(lParam)), 0L)
+#define FORWARD_WM_SIZECLIPBOARD(hwnd, hwndCBViewer, lprc, fn) \
+    (void)(fn)((hwnd), WM_SIZECLIPBOARD, (WPARAM)(HWND)(hwndCBViewer), (LPARAM)(LPRECT)(lprc))
+
+/* void Cls_OnVScrollClipboard(HWND hwnd, HWND hwndCBViewer, UINT code, int pos) */
+#define HANDLE_WM_VSCROLLCLIPBOARD(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (HWND)(wParam), (UINT)LOWORD(lParam), (int)(short)HIWORD(lParam)), 0L)
+#define FORWARD_WM_VSCROLLCLIPBOARD(hwnd, hwndCBViewer, code, pos, fn) \
+    (void)(fn)((hwnd), WM_VSCROLLCLIPBOARD, (WPARAM)(HWND)(hwndCBViewer), MAKELPARAM((code), (pos)))
+
+/* void Cls_OnHScrollClipboard(HWND hwnd, HWND hwndCBViewer, UINT code, int pos) */
+#define HANDLE_WM_HSCROLLCLIPBOARD(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (HWND)(wParam), (UINT)LOWORD(lParam), (int)(short)HIWORD(lParam)), 0L)
+#define FORWARD_WM_HSCROLLCLIPBOARD(hwnd, hwndCBViewer, code, pos, fn) \
+    (void)(fn)((hwnd), WM_HSCROLLCLIPBOARD, (WPARAM)(HWND)(hwndCBViewer), MAKELPARAM((code), (pos)))
+
+/* void Cls_OnAskCBFormatName(HWND hwnd, int cchMax, LPTSTR rgchName) */
+#define HANDLE_WM_ASKCBFORMATNAME(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (int)(wParam), (LPTSTR)(lParam)), 0L)
+#define FORWARD_WM_ASKCBFORMATNAME(hwnd, cchMax, rgchName, fn) \
+    (void)(fn)((hwnd), WM_ASKCBFORMATNAME, (WPARAM)(int)(cchMax), (LPARAM)(rgchName))
+
+/* void Cls_OnChangeCBChain(HWND hwnd, HWND hwndRemove, HWND hwndNext) */
+#define HANDLE_WM_CHANGECBCHAIN(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (HWND)(wParam), (HWND)(lParam)), 0L)
+#define FORWARD_WM_CHANGECBCHAIN(hwnd, hwndRemove, hwndNext, fn) \
+    (void)(fn)((hwnd), WM_CHANGECBCHAIN, (WPARAM)(HWND)(hwndRemove), (LPARAM)(HWND)(hwndNext))
+
+/* BOOL Cls_OnSetCursor(HWND hwnd, HWND hwndCursor, UINT codeHitTest, UINT msg) */
+#define HANDLE_WM_SETCURSOR(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(BOOL)(fn)((hwnd), (HWND)(wParam), (UINT)LOWORD(lParam), (UINT)HIWORD(lParam))
+#define FORWARD_WM_SETCURSOR(hwnd, hwndCursor, codeHitTest, msg, fn) \
+    (BOOL)(DWORD)(fn)((hwnd), WM_SETCURSOR, (WPARAM)(HWND)(hwndCursor), MAKELPARAM((codeHitTest), (msg)))
+
+/* void Cls_OnSysCommand(HWND hwnd, UINT cmd, int x, int y) */
+#define HANDLE_WM_SYSCOMMAND(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (UINT)(wParam), (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam)), 0L)
+#define FORWARD_WM_SYSCOMMAND(hwnd, cmd, x, y, fn) \
+    (void)(fn)((hwnd), WM_SYSCOMMAND, (WPARAM)(UINT)(cmd), MAKELPARAM((x), (y)))
+
+/* HWND Cls_MDICreate(HWND hwnd, const LPMDICREATESTRUCT lpmcs) */
+#define HANDLE_WM_MDICREATE(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(UINT)(fn)((hwnd), (LPMDICREATESTRUCT)(lParam))
+#define FORWARD_WM_MDICREATE(hwnd, lpmcs, fn) \
+    (HWND)(UINT)(DWORD)(fn)((hwnd), WM_MDICREATE, 0L, (LPARAM)(LPMDICREATESTRUCT)(lpmcs))
+
+/* void Cls_MDIDestroy(HWND hwnd, HWND hwndDestroy) */
+#define HANDLE_WM_MDIDESTROY(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (HWND)(wParam)), 0L)
+#define FORWARD_WM_MDIDESTROY(hwnd, hwndDestroy, fn) \
+    (void)(fn)((hwnd), WM_MDIDESTROY, (WPARAM)(hwndDestroy), 0L)
+
+/* NOTE: Usable only by MDI client windows */
+/* void Cls_MDIActivate(HWND hwnd, BOOL fActive, HWND hwndActivate, HWND hwndDeactivate) */
+#define HANDLE_WM_MDIACTIVATE(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (BOOL)(lParam == (LPARAM)hwnd), (HWND)(lParam), (HWND)(wParam)), 0L)
+#define FORWARD_WM_MDIACTIVATE(hwnd, fActive, hwndActivate, hwndDeactivate, fn) \
+    (void)(fn)(hwnd, WM_MDIACTIVATE, (WPARAM)(hwndDeactivate), (LPARAM)(hwndActivate))
+
+/* void Cls_MDIRestore(HWND hwnd, HWND hwndRestore) */
+#define HANDLE_WM_MDIRESTORE(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (HWND)(wParam)), 0L)
+#define FORWARD_WM_MDIRESTORE(hwnd, hwndRestore, fn) \
+    (void)(fn)((hwnd), WM_MDIRESTORE, (WPARAM)(hwndRestore), 0L)
+
+/* HWND Cls_MDINext(HWND hwnd, HWND hwndCur, BOOL fPrev) */
+#define HANDLE_WM_MDINEXT(hwnd, wParam, lParam, fn) \
+    (LRESULT)(HWND)(fn)((hwnd), (HWND)(wParam), (BOOL)lParam)
+#define FORWARD_WM_MDINEXT(hwnd, hwndCur, fPrev, fn) \
+    (HWND)(UINT)(DWORD)(fn)((hwnd), WM_MDINEXT, (WPARAM)(hwndCur), (LPARAM)(fPrev))
+
+/* void Cls_MDIMaximize(HWND hwnd, HWND hwndMaximize) */
+#define HANDLE_WM_MDIMAXIMIZE(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (HWND)(wParam)), 0L)
+#define FORWARD_WM_MDIMAXIMIZE(hwnd, hwndMaximize, fn) \
+    (void)(fn)((hwnd), WM_MDIMAXIMIZE, (WPARAM)(hwndMaximize), 0L)
+
+/* BOOL Cls_MDITile(HWND hwnd, UINT cmd) */
+#define HANDLE_WM_MDITILE(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(fn)((hwnd), (UINT)(wParam))
+#define FORWARD_WM_MDITILE(hwnd, cmd, fn) \
+    (BOOL)(DWORD)(fn)((hwnd), WM_MDITILE, (WPARAM)(cmd), 0L)
+
+/* BOOL Cls_MDICascade(HWND hwnd, UINT cmd) */
+#define HANDLE_WM_MDICASCADE(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(fn)((hwnd), (UINT)(wParam))
+#define FORWARD_WM_MDICASCADE(hwnd, cmd, fn) \
+    (BOOL)(DWORD)(fn)((hwnd), WM_MDICASCADE, (WPARAM)(cmd), 0L)
+
+/* void Cls_MDIIconArrange(HWND hwnd) */
+#define HANDLE_WM_MDIICONARRANGE(hwnd, wParam, lParam, fn) \
+    ((fn)(hwnd), 0L)
+#define FORWARD_WM_MDIICONARRANGE(hwnd, fn) \
+    (void)(fn)((hwnd), WM_MDIICONARRANGE, 0L, 0L)
+
+/* HWND Cls_MDIGetActive(HWND hwnd) */
+#define HANDLE_WM_MDIGETACTIVE(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(UINT)(fn)(hwnd)
+#define FORWARD_WM_MDIGETACTIVE(hwnd, fn) \
+    (HWND)(UINT)(DWORD)(fn)((hwnd), WM_MDIGETACTIVE, 0L, 0L)
+
+/* HMENU Cls_MDISetMenu(HWND hwnd, BOOL fRefresh, HMENU hmenuFrame, HMENU hmenuWindow) */
+#define HANDLE_WM_MDISETMENU(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(UINT)(fn)((hwnd), (BOOL)(wParam), (HMENU)(wParam), (HMENU)(lParam))
+#define FORWARD_WM_MDISETMENU(hwnd, fRefresh, hmenuFrame, hmenuWindow, fn) \
+    (HMENU)(UINT)(DWORD)(fn)((hwnd), WM_MDISETMENU, (WPARAM)((fRefresh) ? (hmenuFrame) : 0), (LPARAM)(hmenuWindow))
+
+/* void Cls_OnChildActivate(HWND hwnd) */
+#define HANDLE_WM_CHILDACTIVATE(hwnd, wParam, lParam, fn) \
+    ((fn)(hwnd), 0L)
+#define FORWARD_WM_CHILDACTIVATE(hwnd, fn) \
+    (void)(fn)((hwnd), WM_CHILDACTIVATE, 0L, 0L)
+
+/* BOOL Cls_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) */
+#define HANDLE_WM_INITDIALOG(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(UINT)(BOOL)(fn)((hwnd), (HWND)(wParam), lParam)
+#define FORWARD_WM_INITDIALOG(hwnd, hwndFocus, lParam, fn) \
+    (BOOL)(DWORD)(fn)((hwnd), WM_INITDIALOG, (WPARAM)(HWND)(hwndFocus), (lParam))
+
+/* HWND Cls_OnNextDlgCtl(HWND hwnd, HWND hwndSetFocus, BOOL fNext) */
+#define HANDLE_WM_NEXTDLGCTL(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(UINT)(HWND)(fn)((hwnd), (HWND)(wParam), (BOOL)(lParam))
+#define FORWARD_WM_NEXTDLGCTL(hwnd, hwndSetFocus, fNext, fn) \
+    (HWND)(UINT)(DWORD)(fn)((hwnd), WM_NEXTDLGCTL, (WPARAM)(HWND)(hwndSetFocus), (LPARAM)(fNext))
+
+/* void Cls_OnParentNotify(HWND hwnd, UINT msg, HWND hwndChild, int idChild) */
+#define HANDLE_WM_PARENTNOTIFY(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (UINT)LOWORD(wParam), (HWND)(lParam), (UINT)HIWORD(wParam)), 0L)
+#define FORWARD_WM_PARENTNOTIFY(hwnd, msg, hwndChild, idChild, fn) \
+    (void)(fn)((hwnd), WM_PARENTNOTIFY, MAKEWPARAM(msg, idChild), (LPARAM)(hwndChild))
+
+/* void Cls_OnEnterIdle(HWND hwnd, UINT source, HWND hwndSource) */
+#define HANDLE_WM_ENTERIDLE(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (UINT)(wParam), (HWND)(lParam)), 0L)
+#define FORWARD_WM_ENTERIDLE(hwnd, source, hwndSource, fn) \
+    (void)(fn)((hwnd), WM_ENTERIDLE, (WPARAM)(UINT)(source), (LPARAM)(HWND)(hwndSource))
+
+/* UINT Cls_OnGetDlgCode(HWND hwnd, LPMSG lpmsg) */
+#define HANDLE_WM_GETDLGCODE(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(UINT)(fn)(hwnd, (LPMSG)(lParam))
+#define FORWARD_WM_GETDLGCODE(hwnd, lpmsg, fn) \
+    (UINT)(DWORD)(fn)((hwnd), WM_GETDLGCODE, (lpmsg ? lpmsg->wParam : 0), (LPARAM)(LPMSG)(lpmsg))
+
+/* HBRUSH Cls_OnCtlColor(HWND hwnd, HDC hdc, HWND hwndChild, int type) */
+#define HANDLE_WM_CTLCOLORMSGBOX(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd), (HDC)(wParam), (HWND)(lParam), CTLCOLOR_MSGBOX)
+#define FORWARD_WM_CTLCOLORMSGBOX(hwnd, hdc, hwndChild, fn) \
+    (HBRUSH)(UINT)(DWORD)(fn)((hwnd), WM_CTLCOLORMSGBOX, (WPARAM)(HDC)(hdc), (LPARAM)(HWND)(hwndChild))
+
+#define HANDLE_WM_CTLCOLOREDIT(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd), (HDC)(wParam), (HWND)(lParam), CTLCOLOR_EDIT)
+#define FORWARD_WM_CTLCOLOREDIT(hwnd, hdc, hwndChild, fn) \
+    (HBRUSH)(UINT)(DWORD)(fn)((hwnd), WM_CTLCOLOREDIT, (WPARAM)(HDC)(hdc), (LPARAM)(HWND)(hwndChild))
+
+#define HANDLE_WM_CTLCOLORLISTBOX(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd), (HDC)(wParam), (HWND)(lParam), CTLCOLOR_LISTBOX)
+#define FORWARD_WM_CTLCOLORLISTBOX(hwnd, hdc, hwndChild, fn) \
+    (HBRUSH)(UINT)(DWORD)(fn)((hwnd), WM_CTLCOLORLISTBOX, (WPARAM)(HDC)(hdc), (LPARAM)(HWND)(hwndChild))
+
+#define HANDLE_WM_CTLCOLORBTN(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd), (HDC)(wParam), (HWND)(lParam), CTLCOLOR_BTN)
+#define FORWARD_WM_CTLCOLORBTN(hwnd, hdc, hwndChild, fn) \
+    (HBRUSH)(UINT)(DWORD)(fn)((hwnd), WM_CTLCOLORBTN, (WPARAM)(HDC)(hdc), (LPARAM)(HWND)(hwndChild))
+
+#define HANDLE_WM_CTLCOLORDLG(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd), (HDC)(wParam), (HWND)(lParam), CTLCOLOR_DLG)
+#define FORWARD_WM_CTLCOLORDLG(hwnd, hdc, hwndChild, fn) \
+    (HBRUSH)(UINT)(DWORD)(fn)((hwnd), WM_CTLCOLORDLG, (WPARAM)(HDC)(hdc), (LPARAM)(HWND)(hwndChild))
+
+#define HANDLE_WM_CTLCOLORSCROLLBAR(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd), (HDC)(wParam), (HWND)(lParam), CTLCOLOR_SCROLLBAR)
+#define FORWARD_WM_CTLCOLORSCROLLBAR(hwnd, hdc, hwndChild, fn) \
+    (HBRUSH)(UINT)(DWORD)(fn)((hwnd), WM_CTLCOLORSCROLLBAR, (WPARAM)(HDC)(hdc), (LPARAM)(HWND)(hwndChild))
+
+#define HANDLE_WM_CTLCOLORSTATIC(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd), (HDC)(wParam), (HWND)(lParam), CTLCOLOR_STATIC)
+#define FORWARD_WM_CTLCOLORSTATIC(hwnd, hdc, hwndChild, fn) \
+    (HBRUSH)(UINT)(DWORD)(fn)((hwnd), WM_CTLCOLORSTATIC, (WPARAM)(HDC)(hdc), (LPARAM)(HWND)(hwndChild))
+
+/* void Cls_OnDeleteItem(HWND hwnd, const DELETEITEMSTRUCT * lpDeleteItem) */
+#define HANDLE_WM_DELETEITEM(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (const DELETEITEMSTRUCT *)(lParam)), 0L)
+#define FORWARD_WM_DELETEITEM(hwnd, lpDeleteItem, fn) \
+    (void)(fn)((hwnd), WM_DELETEITEM, (WPARAM)(((const DELETEITEMSTRUCT *)(lpDeleteItem))->CtlID), (LPARAM)(const DELETEITEMSTRUCT *)(lpDeleteItem))
+
+/* int Cls_OnCompareItem(HWND hwnd, const COMPAREITEMSTRUCT * lpCompareItem) */
+#define HANDLE_WM_COMPAREITEM(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(int)(fn)((hwnd), (const COMPAREITEMSTRUCT *)(lParam))
+#define FORWARD_WM_COMPAREITEM(hwnd, lpCompareItem, fn) \
+    (int)(DWORD)(fn)((hwnd), WM_COMPAREITEM, (WPARAM)(((const COMPAREITEMSTRUCT *)(lpCompareItem))->CtlID), (LPARAM)(const COMPAREITEMSTRUCT *)(lpCompareItem))
+
+/* int Cls_OnVkeyToItem(HWND hwnd, UINT vk, HWND hwndListbox, int iCaret) */
+#define HANDLE_WM_VKEYTOITEM(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(int)(fn)((hwnd), (UINT)LOWORD(wParam), (HWND)(lParam), (int)(short)HIWORD(wParam))
+#define FORWARD_WM_VKEYTOITEM(hwnd, vk, hwndListBox, iCaret, fn) \
+    (int)(DWORD)(fn)((hwnd), WM_VKEYTOITEM, MAKEWPARAM((vk), (iCaret)), (LPARAM)(hwndListBox))
+
+/* int Cls_OnCharToItem(HWND hwnd, UINT ch, HWND hwndListbox, int iCaret) */
+#define HANDLE_WM_CHARTOITEM(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(int)(fn)((hwnd), (UINT)LOWORD(wParam), (HWND)(lParam), (int)(short)HIWORD(wParam))
+#define FORWARD_WM_CHARTOITEM(hwnd, ch, hwndListBox, iCaret, fn) \
+    (int)(DWORD)(fn)((hwnd), WM_CHARTOITEM, MAKEWPARAM((UINT)(ch), (UINT)(iCaret)), (LPARAM)(hwndListBox))
+
+/* void Cls_OnQueueSync(HWND hwnd) */
+#define HANDLE_WM_QUEUESYNC(hwnd, wParam, lParam, fn) \
+    ((fn)(hwnd), 0L)
+#define FORWARD_WM_QUEUESYNC(hwnd, fn) \
+    (void)(fn)((hwnd), WM_QUEUESYNC, 0L, 0L)
+/* void Cls_OnCommNotify(HWND hwnd, int cid, UINT flags) */
+#define HANDLE_WM_COMMNOTIFY(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (int)(wParam), (UINT)LOWORD(lParam)), 0L)
+#define FORWARD_WM_COMMNOTIFY(hwnd, cid, flags, fn) \
+    (void)(fn)((hwnd), WM_COMMNOTIFY, (WPARAM)(cid), MAKELPARAM((flags), 0))
+
+/* void Cls_OnDisplayChange(HWND hwnd, UINT bitsPerPixel, UINT cxScreen, UINT cyScreen) */
+#define HANDLE_WM_DISPLAYCHANGE(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (UINT)(wParam), (UINT)LOWORD(lParam), (UINT)HIWORD(wParam)), 0L)
+#define FORWARD_WM_DISPLAYCHANGE(hwnd, bitsPerPixel, cxScreen, cyScreen, fn) \
+    (void)(fn)((hwnd), WM_DISPLAYCHANGE, (WPARAM)(UINT)(bitsPerPixel), (LPARAM)MAKELPARAM((UINT)(cxScreen), (UINT)(cyScreen)))
+
+/* BOOL Cls_OnDeviceChange(HWND hwnd, UINT uEvent, DWORD dwEventData) */
+#define HANDLE_WM_DEVICECHANGE(hwnd, wParam, lParam, fn) \
+    (LRESULT)(DWORD)(BOOL)(fn)((hwnd), (UINT)(wParam), (DWORD)(wParam))
+#define FORWARD_WM_DEVICECHANGE(hwnd, uEvent, dwEventData, fn) \
+    (BOOL)(DWORD)(fn)((hwnd), WM_DEVICECHANGE, (WPARAM)(UINT)(uEvent), (LPARAM)(DWORD)(dwEventData))
+
+/* void Cls_OnContextMenu(HWND hwnd, HWND hwndContext, UINT xPos, UINT yPos) */
+#define HANDLE_WM_CONTEXTMENU(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (HWND)(wParam), (UINT)LOWORD(lParam), (UINT)HIWORD(lParam)), 0L)
+#define FORWARD_WM_CONTEXTMENU(hwnd, hwndContext, xPos, yPos, fn) \
+    (void)(fn)((hwnd), WM_CONTEXTMENU, (WPARAM)(HWND)(hwndContext), MAKELPARAM((UINT)(xPos), (UINT)(yPos)))
+
+/* void Cls_OnMeasureItem(HWND hwnd, MEASUREITEMSTRUCT * lpMeasureItem) */
+#define HANDLE_WM_MEASUREITEM(hwnd, wParam, lParam, fn) \
+	    ((fn)((hwnd), (MEASUREITEMSTRUCT *)(lParam)), 0L)
+#define FORWARD_WM_MEASUREITEM(hwnd, lpMeasureItem, fn) \
+	    (void)(fn)((hwnd), WM_MEASUREITEM, (WPARAM)(((MEASUREITEMSTRUCT *)lpMeasureItem)->CtlID), (LPARAM)(MEASUREITEMSTRUCT *)(lpMeasureItem))
+
+/* void Cls_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) */
+#define HANDLE_WM_COMMAND(hwnd, wParam, lParam, fn) \
+	    ((fn)((hwnd), (int)(LOWORD(wParam)), (HWND)(lParam), (UINT)HIWORD(wParam)), 0L)
+#define FORWARD_WM_COMMAND(hwnd, id, hwndCtl, codeNotify, fn) \
+	    (void)(fn)((hwnd), WM_COMMAND, MAKEWPARAM((UINT)(id),(UINT)(codeNotify)), (LPARAM)(HWND)(hwndCtl))
+
+/* void Cls_OnTimer(HWND hwnd, UINT id) */
+#define HANDLE_WM_TIMER(hwnd, wParam, lParam, fn) ((fn)((hwnd), (UINT)(wParam)), 0L)
+#define FORWARD_WM_TIMER(hwnd, id, fn) (void)(fn)((hwnd), WM_TIMER, (WPARAM)(UINT)(id), 0L)
+
+/* void Cls_OnInitMenuPopup(HWND hwnd, HMENU hMenu, UINT item, BOOL fSystemMenu) */
+#define HANDLE_WM_INITMENUPOPUP(hwnd, wParam, lParam, fn) \
+        ((fn)((hwnd), (HMENU)(wParam), (UINT)LOWORD(lParam), (BOOL)HIWORD(lParam)), 0L)
+#define FORWARD_WM_INITMENUPOPUP(hwnd, hMenu, item, fSystemMenu, fn) \
+        (void)(fn)((hwnd), WM_INITMENUPOPUP, (WPARAM)(HMENU)(hMenu), MAKELPARAM((item),(fSystemMenu)))
+
+/* UINT Cls_OnNCHitTest(HWND hwnd, int x, int y) */
+#define HANDLE_WM_NCHITTEST(hwnd, wParam, lParam, fn) \
+	(LRESULT)(DWORD)(UINT)(fn)((hwnd), (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam))
+#define FORWARD_WM_NCHITTEST(hwnd, x, y, fn) \
+	(UINT)(DWORD)(fn)((hwnd), WM_NCHITTEST, 0L, MAKELPARAM((x), (y)))
+
+/* HFONT Cls_OnGetFont(HWND hwnd) */
+#define HANDLE_WM_GETFONT(hwnd, wParam, lParam, fn)  (LRESULT)(DWORD)(UINT)(HFONT)(fn)(hwnd)
+#define FORWARD_WM_GETFONT(hwnd, fn)  (HFONT)(UINT)(DWORD)(fn)((hwnd), WM_GETFONT, 0L, 0L)
+
+/* void Cls_OnSetFont(HWND hwndCtl, HFONT hfont, BOOL fRedraw) */
+#define HANDLE_WM_SETFONT(hwnd, wParam, lParam, fn) \
+	    ((fn)((hwnd), (HFONT)(wParam), (BOOL)(lParam)), 0L)
+#define FORWARD_WM_SETFONT(hwnd, hfont, fRedraw, fn) \
+			 (void)(fn)((hwnd), WM_SETFONT, (WPARAM)(HFONT)(hfont), (LPARAM)(BOOL)(fRedraw))
+
+/* void Cls_OnGetMinMaxInfo(HWND hwnd, LPMINMAXINFO lpMinMaxInfo) */
+#define HANDLE_WM_GETMINMAXINFO(hwnd, wParam, lParam, fn) \
+			 ((fn)((hwnd), (LPMINMAXINFO)(lParam)), 0L)
+#define FORWARD_WM_GETMINMAXINFO(hwnd, lpMinMaxInfo, fn) \
+			(void)(fn)((hwnd), WM_GETMINMAXINFO, 0L, (LPARAM)(LPMINMAXINFO)(lpMinMaxInfo))
+
+/* void Cls_OnDrawItem(HWND hwnd, const DRAWITEMSTRUCT lpDrawItem) */
+#define HANDLE_WM_DRAWITEM(hwnd, wParam, lParam, fn) \
+	    ((fn)((hwnd), (const DRAWITEMSTRUCT *)(lParam)), 0L)
+#define FORWARD_WM_DRAWITEM(hwnd, lpDrawItem, fn) \
+        (void)(fn)((hwnd), WM_DRAWITEM, (WPARAM)(((const DRAWITEMSTRUCT *)lpDrawItem)->CtlID), (LPARAM)(const DRAWITEMSTRUCT *)(lpDrawItem))
+
+
+/****** C runtime porting macros ****************************************/
+
+#define _ncalloc    calloc
+#define _nexpand    _expand
+#define _ffree      free
+#define _fmalloc    malloc
+#define _fmemccpy   _memccpy
+#define _fmemchr    memchr
+#define _fmemcmp    memcmp
+#define _fmemcpy    memcpy
+#define _fmemicmp   _memicmp
+#define _fmemmove   memmove
+#define _fmemset    memset
+#define _fmsize     _msize
+#define _frealloc   realloc
+#define _fstrcat    strcat
+#define _fstrchr    strchr
+#define _fstrcmp    strcmp
+#define _fstrcpy    strcpy
+#define _fstrcspn   strcspn
+#define _fstrdup    _strdup
+#define _fstricmp   _stricmp
+#define _fstrlen    strlen
+#define _fstrlwr    _strlwr
+#define _fstrncat   strncat
+#define _fstrncmp   strncmp
+#define _fstrncpy   strncpy
+#define _fstrnicmp  _strnicmp
+#define _fstrnset   _strnset
+#define _fstrpbrk   strpbrk
+#define _fstrrchr   strrchr
+#define _fstrrev    _strrev
+#define _fstrset    _strset
+#define _fstrspn    strspn
+#define _fstrstr    strstr
+#define _fstrtok    strtok
+#define _fstrupr    _strupr
+#define _nfree      free
+#define _nmalloc    malloc
+#define _nmsize     _msize
+#define _nrealloc   realloc
+#define _nstrdup    _strdup
+#define hmemcpy     MoveMemory
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/dcetypes.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/dcetypes.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/dcetypes.idl	(revision 16410)
@@ -0,0 +1,88 @@
+/*
+ * Common DCE Types
+ *
+ * Copyright 2006 Robert Shearman (for CodeWeavers)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/* pull in GUID type */
+import "wtypes.idl";
+
+typedef unsigned small unsigned8;
+typedef unsigned short unsigned16;
+typedef unsigned long unsigned32;
+typedef small signed8;
+typedef short signed16;
+typedef long signed32;
+typedef unsigned32 boolean32;
+typedef unsigned hyper u_int64;
+typedef unsigned long u_int32;
+typedef unsigned short u_int16;
+typedef unsigned small u_int8;
+
+typedef [ptr] GUID *uuid_p_t;
+
+typedef struct twr_t
+{
+				unsigned32 tower_length;
+	[size_is(tower_length)]	byte tower_octet_string[];
+} twr_t;
+typedef [ptr] twr_t *twr_p_t;
+
+typedef struct ndr_context_handle
+{
+    unsigned32      context_handle_attributes;
+    GUID            context_handle_uuid;
+} ndr_context_handle;
+
+const long  ndr_c_int_big_endian    = 0;
+const long  ndr_c_int_little_endian = 1;
+const long  ndr_c_float_ieee        = 0;
+const long  ndr_c_float_vax         = 1;
+const long  ndr_c_float_cray        = 2;
+const long  ndr_c_float_ibm         = 3;
+const long  ndr_c_char_ascii        = 0;
+const long  ndr_c_char_ebcdic       = 1;
+
+typedef struct
+{
+	unsigned8	int_rep;
+	unsigned8	char_rep;
+	unsigned8	float_rep;
+	byte		reserved;
+} ndr_format_t, *ndr_format_p_t;
+
+typedef struct
+{
+    GUID                    uuid;
+    unsigned16              vers_major;
+    unsigned16              vers_minor;
+} rpc_if_id_t;
+typedef [unique] rpc_if_id_t *rpc_if_id_p_t;
+
+typedef struct
+{
+    unsigned32              count;
+    [size_is(count)]
+    rpc_if_id_p_t           if_id[*];
+} rpc_if_id_vector_t;
+typedef [unique] rpc_if_id_vector_t *rpc_if_id_vector_p_t;
+
+typedef struct
+{
+    unsigned32          count;
+    unsigned32          stats[1];       /* length_is (count) */
+} rpc_stats_vector_t, *rpc_stats_vector_p_t;
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/debug.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/debug.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/debug.h	(revision 16410)
@@ -0,0 +1,288 @@
+/*
+ * Wine debugging interface
+ *
+ * Copyright 1999 Patrik Stridvall
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINE_DEBUG_H
+#define __WINE_WINE_DEBUG_H
+
+#include <stdarg.h>
+#include <windef.h>
+#ifndef GUID_DEFINED
+#include <guiddef.h>
+#endif
+
+#ifdef __WINE_WINE_TEST_H
+#error This file should not be used in Wine tests
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct _GUID;
+
+/*
+ * Internal definitions (do not use these directly)
+ */
+
+enum __wine_debug_class
+{
+    __WINE_DBCL_FIXME,
+    __WINE_DBCL_ERR,
+    __WINE_DBCL_WARN,
+    __WINE_DBCL_TRACE,
+
+    __WINE_DBCL_INIT = 7  /* lazy init flag */
+};
+
+struct __wine_debug_channel
+{
+    unsigned char flags;
+    char name[15];
+};
+
+#ifndef WINE_NO_TRACE_MSGS
+# define __WINE_GET_DEBUGGING_TRACE(dbch) ((dbch)->flags & (1 << __WINE_DBCL_TRACE))
+#else
+# define __WINE_GET_DEBUGGING_TRACE(dbch) 0
+#endif
+
+#ifndef WINE_NO_DEBUG_MSGS
+# define __WINE_GET_DEBUGGING_WARN(dbch)  ((dbch)->flags & (1 << __WINE_DBCL_WARN))
+# define __WINE_GET_DEBUGGING_FIXME(dbch) ((dbch)->flags & (1 << __WINE_DBCL_FIXME))
+#else
+# define __WINE_GET_DEBUGGING_WARN(dbch)  0
+# define __WINE_GET_DEBUGGING_FIXME(dbch) 0
+#endif
+
+/* define error macro regardless of what is configured */
+#define __WINE_GET_DEBUGGING_ERR(dbch)  ((dbch)->flags & (1 << __WINE_DBCL_ERR))
+
+#define __WINE_GET_DEBUGGING(dbcl,dbch)  __WINE_GET_DEBUGGING##dbcl(dbch)
+
+#define __WINE_IS_DEBUG_ON(dbcl,dbch) \
+  (__WINE_GET_DEBUGGING##dbcl(dbch) && (__wine_dbg_get_channel_flags(dbch) & (1 << __WINE_DBCL##dbcl)))
+
+#ifdef __GNUC__
+
+#define __WINE_DPRINTF(dbcl,dbch) \
+  do { if(__WINE_GET_DEBUGGING(dbcl,(dbch))) { \
+       struct __wine_debug_channel * const __dbch = (dbch); \
+       const enum __wine_debug_class __dbcl = __WINE_DBCL##dbcl; \
+       __WINE_DBG_LOG
+
+#define __WINE_DBG_LOG(args...) \
+    wine_dbg_log( __dbcl, __dbch, __FUNCTION__, args); } } while(0)
+
+#define __WINE_PRINTF_ATTR(fmt,args) __attribute__((format (printf,fmt,args)))
+
+
+#ifdef WINE_NO_TRACE_MSGS
+#define WINE_TRACE(args...) do { } while(0)
+#define WINE_TRACE_(ch) WINE_TRACE
+#endif
+
+#ifdef WINE_NO_DEBUG_MSGS
+#define WINE_WARN(args...) do { } while(0)
+#define WINE_WARN_(ch) WINE_WARN
+#define WINE_FIXME(args...) do { } while(0)
+#define WINE_FIXME_(ch) WINE_FIXME
+#endif
+
+#elif defined(__SUNPRO_C)
+
+#define __WINE_DPRINTF(dbcl,dbch) \
+  do { if(__WINE_GET_DEBUGGING(dbcl,(dbch))) { \
+       struct __wine_debug_channel * const __dbch = (dbch); \
+       const enum __WINE_DEBUG_CLASS __dbcl = __WINE_DBCL##dbcl; \
+       __WINE_DBG_LOG
+
+#define __WINE_DBG_LOG(...) \
+   wine_dbg_log( __dbcl, __dbch, __func__, __VA_ARGS__); } } while(0)
+
+#define __WINE_PRINTF_ATTR(fmt,args)
+
+#ifdef WINE_NO_TRACE_MSGS
+#define WINE_TRACE(...) do { } while(0)
+#define WINE_TRACE_(ch) WINE_TRACE
+#endif
+
+#ifdef WINE_NO_DEBUG_MSGS
+#define WINE_WARN(...) do { } while(0)
+#define WINE_WARN_(ch) WINE_WARN
+#define WINE_FIXME(...) do { } while(0)
+#define WINE_FIXME_(ch) WINE_FIXME
+#endif
+
+#else  /* !__GNUC__ && !__SUNPRO_C */
+
+#define __WINE_DPRINTF(dbcl,dbch) \
+    (!__WINE_GET_DEBUGGING(dbcl,(dbch)) || \
+     (wine_dbg_log(__WINE_DBCL##dbcl,(dbch),__FILE__,"%d: ",__LINE__) == -1)) ? \
+     (void)0 : (void)wine_dbg_printf
+
+#define __WINE_PRINTF_ATTR(fmt, args)
+
+#endif  /* !__GNUC__ && !__SUNPRO_C */
+
+struct __wine_debug_functions
+{
+    char * (*get_temp_buffer)( size_t n );
+    void   (*release_temp_buffer)( char *buffer, size_t n );
+    const char * (*dbgstr_an)( const char * s, int n );
+    const char * (*dbgstr_wn)( const WCHAR *s, int n );
+    int (*dbg_vprintf)( const char *format, va_list args );
+    int (*dbg_vlog)( enum __wine_debug_class cls, struct __wine_debug_channel *channel,
+                     const char *function, const char *format, va_list args );
+};
+
+extern unsigned char __wine_dbg_get_channel_flags( struct __wine_debug_channel *channel );
+extern int __wine_dbg_set_channel_flags( struct __wine_debug_channel *channel,
+                                         unsigned char set, unsigned char clear );
+extern void __wine_dbg_set_functions( const struct __wine_debug_functions *new_funcs,
+                                      struct __wine_debug_functions *old_funcs, size_t size );
+
+/*
+ * Exported definitions and macros
+ */
+
+/* These functions return a printable version of a string, including
+   quotes.  The string will be valid for some time, but not indefinitely
+   as strings are re-used.  */
+extern const char *wine_dbgstr_an( const char * s, int n );
+extern const char *wine_dbgstr_wn( const WCHAR *s, int n );
+extern const char *wine_dbg_sprintf( const char *format, ... ) __WINE_PRINTF_ATTR(1,2);
+
+extern int wine_dbg_printf( const char *format, ... ) __WINE_PRINTF_ATTR(1,2);
+extern int wine_dbg_log( enum __wine_debug_class cls, struct __wine_debug_channel *ch, const char *func,
+                         const char *format, ... ) __WINE_PRINTF_ATTR(4,5);
+
+static inline const char *wine_dbgstr_a( const char *s )
+{
+    return wine_dbgstr_an( s, -1 );
+}
+
+static inline const char *wine_dbgstr_w( const WCHAR *s )
+{
+    return wine_dbgstr_wn( s, -1 );
+}
+
+static inline const char *wine_dbgstr_guid( const GUID *id )
+{
+    if (!id) return "(null)";
+    if (!((ULONG_PTR)id >> 16)) return wine_dbg_sprintf( "<guid-0x%04lx>", (ULONG_PTR)id & 0xffff );
+    return wine_dbg_sprintf( "{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
+                             id->Data1, id->Data2, id->Data3,
+                             id->Data4[0], id->Data4[1], id->Data4[2], id->Data4[3],
+                             id->Data4[4], id->Data4[5], id->Data4[6], id->Data4[7] );
+}
+
+static inline const char *wine_dbgstr_point( const POINT *pt )
+{
+    if (!pt) return "(null)";
+    return wine_dbg_sprintf( "(%d,%d)", pt->x, pt->y );
+}
+
+static inline const char *wine_dbgstr_size( const SIZE *size )
+{
+    if (!size) return "(null)";
+    return wine_dbg_sprintf( "(%d,%d)", size->cx, size->cy );
+}
+
+static inline const char *wine_dbgstr_rect( const RECT *rect )
+{
+    if (!rect) return "(null)";
+    return wine_dbg_sprintf( "(%d,%d)-(%d,%d)", rect->left, rect->top,
+                             rect->right, rect->bottom );
+}
+
+static inline const char *wine_dbgstr_longlong( ULONGLONG ll )
+{
+    if (sizeof(ll) > sizeof(unsigned long) && ll >> 32)
+        return wine_dbg_sprintf( "%lx%08lx", (unsigned long)(ll >> 32), (unsigned long)ll );
+    else return wine_dbg_sprintf( "%lx", (unsigned long)ll );
+}
+
+#ifndef WINE_TRACE
+#define WINE_TRACE                 __WINE_DPRINTF(_TRACE,__wine_dbch___default)
+#define WINE_TRACE_(ch)            __WINE_DPRINTF(_TRACE,&__wine_dbch_##ch)
+#endif
+#define WINE_TRACE_ON(ch)          __WINE_IS_DEBUG_ON(_TRACE,&__wine_dbch_##ch)
+
+#ifndef WINE_WARN
+#define WINE_WARN                  __WINE_DPRINTF(_WARN,__wine_dbch___default)
+#define WINE_WARN_(ch)             __WINE_DPRINTF(_WARN,&__wine_dbch_##ch)
+#endif
+#define WINE_WARN_ON(ch)           __WINE_IS_DEBUG_ON(_WARN,&__wine_dbch_##ch)
+
+#ifndef WINE_FIXME
+#define WINE_FIXME                 __WINE_DPRINTF(_FIXME,__wine_dbch___default)
+#define WINE_FIXME_(ch)            __WINE_DPRINTF(_FIXME,&__wine_dbch_##ch)
+#endif
+#define WINE_FIXME_ON(ch)          __WINE_IS_DEBUG_ON(_FIXME,&__wine_dbch_##ch)
+
+#define WINE_ERR                   __WINE_DPRINTF(_ERR,__wine_dbch___default)
+#define WINE_ERR_(ch)              __WINE_DPRINTF(_ERR,&__wine_dbch_##ch)
+#define WINE_ERR_ON(ch)            __WINE_IS_DEBUG_ON(_ERR,&__wine_dbch_##ch)
+
+#define WINE_DECLARE_DEBUG_CHANNEL(ch) \
+    static struct __wine_debug_channel __wine_dbch_##ch = { ~0, #ch }
+#define WINE_DEFAULT_DEBUG_CHANNEL(ch) \
+    static struct __wine_debug_channel __wine_dbch_##ch = { ~0, #ch }; \
+    static struct __wine_debug_channel * const __wine_dbch___default = &__wine_dbch_##ch
+
+#define WINE_DPRINTF               wine_dbg_printf
+#define WINE_MESSAGE               wine_dbg_printf
+
+#ifdef __WINESRC__
+/* Wine uses shorter names that are very likely to conflict with other software */
+
+static inline const char *debugstr_an( const char * s, int n ) { return wine_dbgstr_an( s, n ); }
+static inline const char *debugstr_wn( const WCHAR *s, int n ) { return wine_dbgstr_wn( s, n ); }
+static inline const char *debugstr_guid( const struct _GUID *id ) { return wine_dbgstr_guid(id); }
+static inline const char *debugstr_a( const char *s )  { return wine_dbgstr_an( s, -1 ); }
+static inline const char *debugstr_w( const WCHAR *s ) { return wine_dbgstr_wn( s, -1 ); }
+
+#define TRACE                      WINE_TRACE
+#define TRACE_(ch)                 WINE_TRACE_(ch)
+#define TRACE_ON(ch)               WINE_TRACE_ON(ch)
+
+#define WARN                       WINE_WARN
+#define WARN_(ch)                  WINE_WARN_(ch)
+#define WARN_ON(ch)                WINE_WARN_ON(ch)
+
+#define FIXME                      WINE_FIXME
+#define FIXME_(ch)                 WINE_FIXME_(ch)
+#define FIXME_ON(ch)               WINE_FIXME_ON(ch)
+
+#undef ERR  /* Solaris got an 'ERR' define in <sys/reg.h> */
+#define ERR                        WINE_ERR
+#define ERR_(ch)                   WINE_ERR_(ch)
+#define ERR_ON(ch)                 WINE_ERR_ON(ch)
+
+#define DPRINTF                    WINE_DPRINTF
+#define MESSAGE                    WINE_MESSAGE
+
+#endif /* __WINESRC__ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* __WINE_WINE_DEBUG_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/dplaysp.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/dplaysp.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/dplaysp.h	(revision 16410)
@@ -0,0 +1,366 @@
+/*
+ * Copyright 2000 Peter Hunnisett
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DIRECT_PLAY_SP_H
+#define __WINE_DIRECT_PLAY_SP_H
+
+#include <stdarg.h>
+
+#include "windef.h"
+#include "winbase.h"
+#include "winuser.h"
+#include "dplay.h"
+#include "dplobby.h"
+
+/* GUID for IDirectPlaySP  {0C9F6360-CC61-11cf-ACEC-00AA006886E3} */
+DEFINE_GUID(IID_IDirectPlaySP, 0xc9f6360, 0xcc61, 0x11cf, 0xac, 0xec, 0x0, 0xaa, 0x0, 0x68, 0x86, 0xe3);
+typedef struct IDirectPlaySP *LPDIRECTPLAYSP;
+
+
+typedef BOOL (CALLBACK *LPENUMMRUCALLBACK)( LPCVOID lpData,
+                                            DWORD  dwDataSize,
+                                            LPVOID lpContext );
+
+/* For SP. Top 16 bits is dplay, bottom 16 is SP */
+#define DPSP_MAJORVERSION 0x00060000
+#define DPSP_DX5VERSION   0x00050000
+#define DPSP_DX3VERSION   0x00040000
+
+#define DPSP_MAJORVERSIONMASK 0xFFFF0000
+#define DPSP_MINORVERSIONMASK 0x0000FFFF
+
+
+/* Some flags */
+#define DPLAYI_PLAYER_SYSPLAYER      0x00000001
+#define DPLAYI_PLAYER_NAMESRVR       0x00000002
+#define DPLAYI_PLAYER_PLAYERINGROUP  0x00000004
+#define DPLAYI_PLAYER_PLAYERLOCAL    0x00000008
+#define DPLAYI_GROUP_SYSGROUP        0x00000020
+#define DPLAYI_GROUP_DPLAYOWNS       0x00000040
+#define DPLAYI_PLAYER_APPSERVER      0x00000080
+#define DPLAYI_GROUP_HIDDEN          0x00000400
+
+/* Define the COM interface */
+#define INTERFACE IDirectPlaySP
+DECLARE_INTERFACE_(IDirectPlaySP,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirectPlaySP methods ***/
+    STDMETHOD(AddMRUEntry)(THIS_ LPCWSTR lpSection, LPCWSTR lpKey, LPCVOID lpData, DWORD dwDataSize, DWORD dwMaxEntries ) PURE;
+    STDMETHOD(CreateAddress)(THIS_ REFGUID guidSP, REFGUID guidDataType, LPCVOID lpData, DWORD dwDataSize, LPVOID lpAddress,LPDWORD lpdwAddressSize) PURE;
+    STDMETHOD(EnumAddress)(THIS_ LPDPENUMADDRESSCALLBACK lpEnumAddressCallback, LPCVOID lpAddress, DWORD dwAddressSize, LPVOID lpContext ) PURE;
+    STDMETHOD(EnumMRUEntries)(THIS_ LPCWSTR lpSection, LPCWSTR lpKey, LPENUMMRUCALLBACK lpEnumMRUCallback, LPVOID lpContext ) PURE;
+    STDMETHOD(GetPlayerFlags)(THIS_ DPID idPlayer, LPDWORD lpdwPlayerFlags ) PURE;
+    STDMETHOD(GetSPPlayerData)(THIS_ DPID idPlayer, LPVOID *lplpData, LPDWORD lpdwDataSize, DWORD dwFlags ) PURE;
+    STDMETHOD(HandleMessage)(THIS_ LPVOID lpMessageBody, DWORD dwMessageBodySize, LPVOID lpMessageHeader ) PURE;
+    STDMETHOD(SetSPPlayerData)(THIS_ DPID idPlayer, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags ) PURE;
+    STDMETHOD(CreateCompoundAddress)(THIS_ LPCDPCOMPOUNDADDRESSELEMENT lpElements, DWORD dwElementCount, LPVOID lpAddress, LPDWORD lpdwAddressSize ) PURE;
+    STDMETHOD(GetSPData)(THIS_ LPVOID *lplpData, LPDWORD dwDataSize, DWORD dwFlags ) PURE;
+    STDMETHOD(SetSPData)(THIS_ LPVOID lpData, DWORD dwDataSize, DWORD dwFlags ) PURE;
+    STDMETHOD_(VOID,SendComplete)(THIS_ LPVOID , DWORD  ) PURE;
+};
+#undef INTERFACE
+
+
+/* NOTE: The microsoft provided header file doesn't have these access
+ * functions
+ */
+#if !defined (__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectPlaySP_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectPlaySP_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IDirectPlaySP_Release(p)                   (p)->lpVtbl->Release(p)
+/*** IDirectPlaySP methods ***/
+#define IDirectPlaySP_AddMRUEntry(p,a,b,c,d,e)     (p)->lpVtbl->AddMRUEntry(p,a,b,c,d,e)
+#define IDirectPlaySP_CreateAddress(p,a,b,c,d,e,f) (p)->lpVtbl->CreateAddress(p,a,b,c,d,e,f)
+#define IDirectPlaySP_EnumAddress(p,a,b,c,d)       (p)->lpVtbl->EnumAddress(p,a,b,c,d)
+#define IDirectPlaySP_EnumMRUEntries(p,a,b,c,d)    (p)->lpVtbl->EnumMRUEntries(p,a,b,c,d)
+#define IDirectPlaySP_GetPlayerFlags(p,a,b)        (p)->lpVtbl->GetPlayerFlags(p,a,b)
+#define IDirectPlaySP_GetSPPlayerData(p,a,b,c,d)   (p)->lpVtbl->GetSPPlayerData(p,a,b,c,d)
+#define IDirectPlaySP_HandleMessage(p,a,b,c)       (p)->lpVtbl->HandleMessage(p,a,b,c)
+#define IDirectPlaySP_SetSPPlayerData(p,a,b,c,d)   (p)->lpVtbl->SetSPPlayerData(p,a,b,c,d)
+#define IDirectPlaySP_CreateCompoundAddress(p,a,b,c,d)  (p)->lpVtbl->CreateCompoundAddress(p,a,b,c,d)
+#define IDirectPlaySP_GetSPData(p,a,b,c)           (p)->lpVtbl->GetSPData(p,a,b,c)
+#define IDirectPlaySP_SetSPData(p,a,b,c)           (p)->lpVtbl->SetSPData(p,a,b,c)
+#define IDirectPlaySP_SendComplete(p,a,b)          (p)->lpVtbl->SendComplete(p,a,b)
+#endif
+
+/* SP Callback stuff */
+
+typedef struct tagDPSP_ADDPLAYERTOGROUPDATA
+{
+  DPID           idPlayer;
+  DPID           idGroup;
+  IDirectPlaySP* lpISP;
+} DPSP_ADDPLAYERTOGROUPDATA, *LPDPSP_ADDPLAYERTOGROUPDATA;
+
+typedef struct tagDPSP_CLOSEDATA
+{
+  IDirectPlaySP* lpISP;
+} DPSP_CLOSEDATA, *LPDPSP_CLOSEDATA;
+
+typedef struct tagDPSP_CREATEGROUPDATA
+{
+  DPID           idGroup;
+  DWORD          dwFlags;
+  LPVOID         lpSPMessageHeader;
+  IDirectPlaySP* lpISP;
+} DPSP_CREATEGROUPDATA, *LPDPSP_CREATEGROUPDATA;
+
+typedef struct tagDPSP_CREATEPLAYERDATA
+{
+  DPID           idPlayer;
+  DWORD          dwFlags;
+  LPVOID         lpSPMessageHeader;
+  IDirectPlaySP* lpISP;
+} DPSP_CREATEPLAYERDATA, *LPDPSP_CREATEPLAYERDATA;
+
+typedef struct tagDPSP_DELETEGROUPDATA
+{
+  DPID           idGroup;
+  DWORD          dwFlags;
+  IDirectPlaySP* lpISP;
+} DPSP_DELETEGROUPDATA, *LPDPSP_DELETEGROUPDATA;
+
+typedef struct tagDPSP_DELETEPLAYERDATA
+{
+  DPID           idPlayer;
+  DWORD          dwFlags;
+  IDirectPlaySP* lpISP;
+} DPSP_DELETEPLAYERDATA, *LPDPSP_DELETEPLAYERDATA;
+
+typedef struct tagDPSP_ENUMSESSIONSDATA
+{
+  LPVOID         lpMessage;
+  DWORD          dwMessageSize;
+  IDirectPlaySP* lpISP;
+  BOOL           bReturnStatus;
+} DPSP_ENUMSESSIONSDATA, *LPDPSP_ENUMSESSIONSDATA;
+
+typedef struct _DPSP_GETADDRESSDATA
+{
+  DPID           idPlayer;
+  DWORD          dwFlags;
+  LPDPADDRESS    lpAddress;
+  LPDWORD        lpdwAddressSize;
+  IDirectPlaySP* lpISP;
+} DPSP_GETADDRESSDATA, *LPDPSP_GETADDRESSDATA;
+
+typedef struct tagDPSP_GETADDRESSCHOICESDATA
+{
+  LPDPADDRESS    lpAddress;
+  LPDWORD        lpdwAddressSize;
+  IDirectPlaySP* lpISP;
+} DPSP_GETADDRESSCHOICESDATA, *LPDPSP_GETADDRESSCHOICESDATA;
+
+typedef struct tagDPSP_GETCAPSDATA
+{
+  DPID           idPlayer;
+  LPDPCAPS       lpCaps;
+  DWORD          dwFlags;
+  IDirectPlaySP* lpISP;
+} DPSP_GETCAPSDATA, *LPDPSP_GETCAPSDATA;
+
+typedef struct tagDPSP_OPENDATA
+{
+  BOOL           bCreate;
+  LPVOID         lpSPMessageHeader;
+  IDirectPlaySP* lpISP;
+  BOOL           bReturnStatus;
+  DWORD          dwOpenFlags;
+  DWORD          dwSessionFlags;
+} DPSP_OPENDATA, *LPDPSP_OPENDATA;
+
+typedef struct tagDPSP_REMOVEPLAYERFROMGROUPDATA
+{
+  DPID           idPlayer;
+  DPID           idGroup;
+  IDirectPlaySP* lpISP;
+} DPSP_REMOVEPLAYERFROMGROUPDATA, *LPDPSP_REMOVEPLAYERFROMGROUPDATA;
+
+typedef struct tagDPSP_REPLYDATA
+{
+  LPVOID         lpSPMessageHeader;
+  LPVOID         lpMessage;
+  DWORD          dwMessageSize;
+  DPID           idNameServer;
+  IDirectPlaySP* lpISP;
+} DPSP_REPLYDATA, *LPDPSP_REPLYDATA;
+
+typedef struct tagDPSP_SENDDATA
+{
+  DWORD          dwFlags;
+  DPID           idPlayerTo;
+  DPID           idPlayerFrom;
+  LPVOID         lpMessage;
+  DWORD          dwMessageSize;
+  BOOL           bSystemMessage;
+  IDirectPlaySP* lpISP;
+} DPSP_SENDDATA, *LPDPSP_SENDDATA;
+
+typedef struct tagDPSP_SENDTOGROUPDATA
+{
+  DWORD          dwFlags;
+  DPID           idGroupTo;
+  DPID           idPlayerFrom;
+  LPVOID         lpMessage;
+  DWORD          dwMessageSize;
+  IDirectPlaySP* lpISP;
+} DPSP_SENDTOGROUPDATA, *LPDPSP_SENDTOGROUPDATA;
+
+typedef struct tagDPSP_SENDEXDATA
+{
+  IDirectPlaySP* lpISP;
+  DWORD          dwFlags;
+  DPID           idPlayerTo;
+  DPID           idPlayerFrom;
+  LPSGBUFFER     lpSendBuffers;
+  DWORD          cBuffers;
+  DWORD          dwMessageSize;
+  DWORD          dwPriority;
+  DWORD          dwTimeout;
+  LPVOID         lpDPContext;
+  LPDWORD        lpdwSPMsgID;
+  BOOL           bSystemMessage;
+} DPSP_SENDEXDATA, *LPDPSP_SENDEXDATA;
+
+typedef struct tagDPSP_SENDTOGROUPEXDATA
+{
+  IDirectPlaySP* lpISP;
+  DWORD          dwFlags;
+  DPID           idGroupTo;
+  DPID           idPlayerFrom;
+  LPSGBUFFER     lpSendBuffers;
+  DWORD          cBuffers;
+  DWORD          dwMessageSize;
+  DWORD          dwPriority;
+  DWORD          dwTimeout;
+  LPVOID         lpDPContext;
+  LPDWORD        lpdwSPMsgID;
+} DPSP_SENDTOGROUPEXDATA, *LPDPSP_SENDTOGROUPEXDATA;
+
+typedef struct tagDPSP_GETMESSAGEQUEUEDATA
+{
+  IDirectPlaySP* lpISP;
+  DWORD          dwFlags;
+  DPID           idFrom;
+  DPID           idTo;
+  LPDWORD        lpdwNumMsgs;
+  LPDWORD        lpdwNumBytes;
+} DPSP_GETMESSAGEQUEUEDATA, *LPDPSP_GETMESSAGEQUEUEDATA;
+
+#define DPCANCELSEND_PRIORITY 0x00000001
+#define DPCANCELSEND_ALL      0x00000002
+
+typedef struct tagDPSP_CANCELDATA
+{
+  IDirectPlaySP* lpISP;
+  DWORD          dwFlags;
+  LPRGLPVOID     lprglpvSPMsgID;
+  DWORD          cSPMsgID;
+  DWORD          dwMinPriority;
+  DWORD          dwMaxPriority;
+} DPSP_CANCELDATA, *LPDPSP_CANCELDATA;
+
+typedef struct tagDPSP_SHUTDOWNDATA
+{
+  IDirectPlaySP* lpISP;
+} DPSP_SHUTDOWNDATA, *LPDPSP_SHUTDOWNDATA;
+
+
+/* Prototypes returned by SPInit */
+typedef HRESULT (WINAPI *LPDPSP_CREATEPLAYER)(LPDPSP_CREATEPLAYERDATA);
+typedef HRESULT (WINAPI *LPDPSP_DELETEPLAYER)(LPDPSP_DELETEPLAYERDATA);
+typedef HRESULT (WINAPI *LPDPSP_SEND)(LPDPSP_SENDDATA);
+typedef HRESULT (WINAPI *LPDPSP_ENUMSESSIONS)(LPDPSP_ENUMSESSIONSDATA);
+typedef HRESULT (WINAPI *LPDPSP_REPLY)(LPDPSP_REPLYDATA);
+typedef HRESULT (WINAPI *LPDPSP_SHUTDOWN)(void);
+typedef HRESULT (WINAPI *LPDPSP_CREATEGROUP)(LPDPSP_CREATEGROUPDATA);
+typedef HRESULT (WINAPI *LPDPSP_DELETEGROUP)(LPDPSP_DELETEGROUPDATA);
+typedef HRESULT (WINAPI *LPDPSP_ADDPLAYERTOGROUP)(LPDPSP_ADDPLAYERTOGROUPDATA);
+typedef HRESULT (WINAPI *LPDPSP_REMOVEPLAYERFROMGROUP)(LPDPSP_REMOVEPLAYERFROMGROUPDATA);
+typedef HRESULT (WINAPI *LPDPSP_GETCAPS)(LPDPSP_GETCAPSDATA);
+typedef HRESULT (WINAPI *LPDPSP_GETADDRESS)(LPDPSP_GETADDRESSDATA);
+typedef HRESULT (WINAPI *LPDPSP_GETADDRESSCHOICES)(LPDPSP_GETADDRESSCHOICESDATA);
+typedef HRESULT (WINAPI *LPDPSP_OPEN)(LPDPSP_OPENDATA);
+typedef HRESULT (WINAPI *LPDPSP_CLOSE)(void);
+typedef HRESULT (WINAPI *LPDPSP_SENDTOGROUP)(LPDPSP_SENDTOGROUPDATA);
+typedef HRESULT (WINAPI *LPDPSP_SHUTDOWNEX)(LPDPSP_SHUTDOWNDATA);
+typedef HRESULT (WINAPI *LPDPSP_CLOSEEX)(LPDPSP_CLOSEDATA);
+typedef HRESULT (WINAPI *LPDPSP_SENDEX)(LPDPSP_SENDEXDATA);
+typedef HRESULT (WINAPI *LPDPSP_SENDTOGROUPEX)(LPDPSP_SENDTOGROUPEXDATA);
+typedef HRESULT (WINAPI *LPDPSP_CANCEL)(LPDPSP_CANCELDATA);
+typedef HRESULT (WINAPI *LPDPSP_GETMESSAGEQUEUE)(LPDPSP_GETMESSAGEQUEUEDATA);
+
+
+typedef struct tagDPSP_SPCALLBACKS
+{
+    DWORD                        dwSize;
+    DWORD                        dwVersion;
+
+    LPDPSP_ENUMSESSIONS          EnumSessions;          /* Must be provided */
+    LPDPSP_REPLY                 Reply;                 /* Must be provided */
+    LPDPSP_SEND                  Send;                  /* Must be provided */
+    LPDPSP_ADDPLAYERTOGROUP      AddPlayerToGroup;      /* Optional */
+    LPDPSP_CLOSE                 Close;                 /* Optional */
+    LPDPSP_CREATEGROUP           CreateGroup;           /* Optional */
+    LPDPSP_CREATEPLAYER          CreatePlayer;          /* Optional */
+    LPDPSP_DELETEGROUP           DeleteGroup;           /* Optional */
+    LPDPSP_DELETEPLAYER          DeletePlayer;          /* Optional */
+    LPDPSP_GETADDRESS            GetAddress;            /* Optional */
+    LPDPSP_GETCAPS               GetCaps;               /* Optional */
+    LPDPSP_OPEN                  Open;                  /* Optional */
+    LPDPSP_REMOVEPLAYERFROMGROUP RemovePlayerFromGroup; /* Optional */
+    LPDPSP_SENDTOGROUP           SendToGroup;           /* Optional */
+    LPDPSP_SHUTDOWN              Shutdown;              /* Optional */
+
+    LPDPSP_CLOSEEX               CloseEx;               /* Optional */
+    LPDPSP_SHUTDOWNEX            ShutdownEx;            /* Optional */
+    LPDPSP_GETADDRESSCHOICES     GetAddressChoices;     /* Optional */
+
+    LPDPSP_SENDEX                SendEx;                /* Optional */
+    LPDPSP_SENDTOGROUPEX         SendToGroupEx;         /* Optional */
+    LPDPSP_CANCEL                Cancel;                /* Optional */
+    LPDPSP_GETMESSAGEQUEUE       GetMessageQueue;       /* Optional */
+} DPSP_SPCALLBACKS, *LPDPSP_SPCALLBACKS;
+
+typedef struct tagSPINITDATA
+{
+    LPDPSP_SPCALLBACKS  lpCB;
+    IDirectPlaySP*      lpISP;
+    LPWSTR              lpszName;
+    LPGUID              lpGuid;
+    DWORD               dwReserved1;
+    DWORD               dwReserved2;
+    DWORD               dwSPHeaderSize;
+    LPDPADDRESS         lpAddress;
+    DWORD               dwAddressSize;
+    DWORD               dwSPVersion;
+} SPINITDATA, *LPSPINITDATA;
+
+typedef HRESULT (WINAPI *LPDPSP_SPINIT)(LPSPINITDATA);
+
+/* This variable is exported from the DLL at ordinal 6 to be accessed by the
+ * SP directly
+ */
+extern DWORD gdwDPlaySPRefCount;
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/epm.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/epm.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/epm.idl	(revision 16410)
@@ -0,0 +1,122 @@
+/*
+ * Endpoint Mapper
+ *
+ * Copyright 2006 Robert Shearman (for CodeWeavers)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/* FIXME: should be import */
+#include "dcetypes.idl"
+
+cpp_quote("RPC_STATUS WINAPI TowerExplode(")
+cpp_quote("    const twr_t *tower, PRPC_SYNTAX_IDENTIFIER object, PRPC_SYNTAX_IDENTIFIER syntax,")
+cpp_quote("    char **protseq, char **endpoint, char **address);")
+cpp_quote("RPC_STATUS WINAPI TowerConstruct(")
+cpp_quote("    const RPC_SYNTAX_IDENTIFIER *object, const RPC_SYNTAX_IDENTIFIER *syntax,")
+cpp_quote("    const char *protseq, const char *endpoint, const char *address,")
+cpp_quote("    twr_t **tower);")
+
+[
+    uuid(e1af8308-5d1f-11c9-91a4-08002b14a0fa),
+    version(3.0),
+    pointer_default(ref)
+]
+interface epm
+{
+    const long ept_max_annotation_size = 64;
+
+    typedef struct
+    {
+                    GUID        object;
+                    twr_t      *tower;
+        [string]    char        annotation[ept_max_annotation_size];
+    } ept_entry_t, *ept_entry_p_t;
+
+    typedef [context_handle] void *ept_lookup_handle_t;
+
+    /* Adds entries to an endpoint map */
+    void ept_insert(
+        [in]    handle_t            h,
+        [in]    unsigned32          num_ents,
+        [in, size_is(num_ents)]
+                ept_entry_t         entries[],
+        [in]    boolean32           replace,
+        [out]   error_status_t      *status
+    );
+
+    /* Removes entries from an endpoint map */
+    void ept_delete(
+        [in]    handle_t            h,
+        [in]    unsigned32          num_ents,
+        [in, size_is(num_ents)]
+                ept_entry_t         entries[],
+        [out]   error_status_t      *status
+    );
+
+    /* Lookup entries in an endpoint map */
+    [idempotent]
+    void ept_lookup(
+        [in]        handle_t            h,
+        [in]        unsigned32          inquiry_type,
+        [in]        uuid_p_t            object,
+        [in]        rpc_if_id_p_t       interface_id,
+        [in]        unsigned32          vers_option,
+        [in, out]   ept_lookup_handle_t *entry_handle,
+        [in]        unsigned32          max_ents,
+        [out]       unsigned32          *num_ents,
+        [out, length_is(*num_ents), size_is(max_ents)]
+                    ept_entry_t         entries[],
+        [out]       error_status_t      *status
+    );
+
+    /* Lookup entries in an endpoint map using the given input pattern */
+    [idempotent]
+    void ept_map(
+        [in]        handle_t            h,
+        [in]        uuid_p_t            object,
+        [in]        twr_p_t             map_tower,
+        [in, out]   ept_lookup_handle_t *entry_handle,
+        [in]        unsigned32          max_towers,
+        [out]       unsigned32          *num_towers,
+        [out, length_is(*num_towers), size_is(max_towers)]
+                    twr_p_t             *towers,
+        [out]       error_status_t      *status
+    );
+
+    /* Free the context handle returned by ept_lookup or ept_map */
+    void ept_lookup_handle_free(
+        [in]        handle_t            h,
+        [in, out]   ept_lookup_handle_t *entry_handle,
+        [out]       error_status_t      *status
+    );
+
+    /* Inquires as to the endpoint map's object identifier */
+    [idempotent]
+    void ept_inq_object(
+        [in]        handle_t            h,
+        [out]       GUID                *ept_object,
+        [out]       error_status_t      *status
+    );
+
+    /* Deletes matching entries in the endpoint map */
+    void ept_mgmt_delete(
+        [in]        handle_t            h,
+        [in]        boolean32           object_speced,
+        [in]        uuid_p_t            object,
+        [in]        twr_p_t             tower,
+        [out]       error_status_t      *status
+    );
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/exception.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/exception.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/exception.h	(revision 16410)
@@ -0,0 +1,340 @@
+/*
+ * Wine exception handling
+ *
+ * Copyright (c) 1999 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINE_EXCEPTION_H
+#define __WINE_WINE_EXCEPTION_H
+
+#include <setjmp.h>
+#include <windef.h>
+#include <excpt.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* The following definitions allow using exceptions in Wine and Winelib code
+ *
+ * They should be used like this:
+ *
+ * __TRY
+ * {
+ *     do some stuff that can raise an exception
+ * }
+ * __EXCEPT(filter_func,param)
+ * {
+ *     handle the exception here
+ * }
+ * __ENDTRY
+ *
+ * or
+ *
+ * __TRY
+ * {
+ *     do some stuff that can raise an exception
+ * }
+ * __FINALLY(finally_func,param)
+ *
+ * The filter_func must be defined with the WINE_EXCEPTION_FILTER
+ * macro, and return one of the EXCEPTION_* code; it can use
+ * GetExceptionInformation and GetExceptionCode to retrieve the
+ * exception info.
+ *
+ * The finally_func must be defined with the WINE_FINALLY_FUNC macro.
+ *
+ * Warning: inside a __TRY or __EXCEPT block, 'break' or 'continue' statements
+ *          break out of the current block. You cannot use 'return', 'goto'
+ *          or 'longjmp' to leave a __TRY block, as this will surely crash.
+ *          You can use them to leave a __EXCEPT block though.
+ *
+ * -- AJ
+ */
+
+/* Define this if you want to use your compiler built-in __try/__except support.
+ * This is only useful when compiling to a native Windows binary, as the built-in
+ * compiler exceptions will most certainly not work under Winelib.
+ */
+#ifdef USE_COMPILER_EXCEPTIONS
+
+#define __TRY __try
+#define __EXCEPT(func) __except((func)(GetExceptionInformation()))
+#define __FINALLY(func) __finally { (func)(!AbnormalTermination()); }
+#define __ENDTRY /*nothing*/
+#define __EXCEPT_PAGE_FAULT __except(GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION)
+#define __EXCEPT_ALL __except(EXCEPTION_EXECUTE_HANDLER)
+
+#else  /* USE_COMPILER_EXCEPTIONS */
+
+#ifndef __GNUC__
+#define __attribute__(x) /* nothing */
+#endif
+
+#if defined(__MINGW32__) || defined(__CYGWIN__)
+#define sigjmp_buf jmp_buf
+#define sigsetjmp(buf,sigs) setjmp(buf)
+#define siglongjmp(buf,val) longjmp(buf,val)
+#endif
+
+#define __TRY \
+    do { __WINE_FRAME __f; \
+         int __first = 1; \
+         for (;;) if (!__first) \
+         { \
+             do {
+
+#define __EXCEPT(func) \
+             } while(0); \
+             __wine_pop_frame( &__f.frame ); \
+             break; \
+         } else { \
+             __f.frame.Handler = __wine_exception_handler; \
+             __f.u.filter = (func); \
+             if (sigsetjmp( __f.jmp, 0 )) { \
+                 const __WINE_FRAME * const __eptr __attribute__((unused)) = &__f; \
+                 do {
+
+/* convenience handler for page fault exceptions */
+#define __EXCEPT_PAGE_FAULT \
+             } while(0); \
+             __wine_pop_frame( &__f.frame ); \
+             break; \
+         } else { \
+             __f.frame.Handler = __wine_exception_handler_page_fault; \
+             if (sigsetjmp( __f.jmp, 0 )) { \
+                 const __WINE_FRAME * const __eptr __attribute__((unused)) = &__f; \
+                 do {
+
+/* convenience handler for all exception */
+#define __EXCEPT_ALL \
+             } while(0); \
+             __wine_pop_frame( &__f.frame ); \
+             break; \
+         } else { \
+             __f.frame.Handler = __wine_exception_handler_all; \
+             if (sigsetjmp( __f.jmp, 0 )) { \
+                 const __WINE_FRAME * const __eptr __attribute__((unused)) = &__f; \
+                 do {
+
+#define __ENDTRY \
+                 } while (0); \
+                 break; \
+             } \
+             __wine_push_frame( &__f.frame ); \
+             __first = 0; \
+         } \
+    } while (0);
+
+#define __FINALLY(func) \
+             } while(0); \
+             __wine_pop_frame( &__f.frame ); \
+             (func)(1); \
+             break; \
+         } else { \
+             __f.frame.Handler = __wine_finally_handler; \
+             __f.u.finally_func = (func); \
+             __wine_push_frame( &__f.frame ); \
+             __first = 0; \
+         } \
+    } while (0);
+
+
+typedef LONG (CALLBACK *__WINE_FILTER)(PEXCEPTION_POINTERS);
+typedef void (CALLBACK *__WINE_FINALLY)(BOOL);
+
+#define GetExceptionInformation() (__eptr)
+#define GetExceptionCode()        (__eptr->ExceptionRecord->ExceptionCode)
+#define AbnormalTermination()     (!__normal)
+
+typedef struct __tagWINE_FRAME
+{
+    EXCEPTION_REGISTRATION_RECORD frame;
+    union
+    {
+        /* exception data */
+        __WINE_FILTER filter;
+        /* finally data */
+        __WINE_FINALLY finally_func;
+    } u;
+    sigjmp_buf jmp;
+    /* hack to make GetExceptionCode() work in handler */
+    DWORD ExceptionCode;
+    const struct __tagWINE_FRAME *ExceptionRecord;
+} __WINE_FRAME;
+
+#endif /* USE_COMPILER_EXCEPTIONS */
+
+static inline EXCEPTION_REGISTRATION_RECORD *__wine_push_frame( EXCEPTION_REGISTRATION_RECORD *frame )
+{
+#if defined(__GNUC__) && defined(__i386__)
+    EXCEPTION_REGISTRATION_RECORD *prev;
+    __asm__ __volatile__(".byte 0x64\n\tmovl (0),%0"
+                         "\n\tmovl %0,(%1)"
+                         "\n\t.byte 0x64\n\tmovl %1,(0)"
+                         : "=&r" (prev) : "r" (frame) : "memory" );
+    return prev;
+#else
+    NT_TIB *teb = (NT_TIB *)NtCurrentTeb();
+    frame->Prev = teb->ExceptionList;
+    teb->ExceptionList = frame;
+    return frame->Prev;
+#endif
+}
+
+static inline EXCEPTION_REGISTRATION_RECORD *__wine_pop_frame( EXCEPTION_REGISTRATION_RECORD *frame )
+{
+#if defined(__GNUC__) && defined(__i386__)
+    __asm__ __volatile__(".byte 0x64\n\tmovl %0,(0)"
+                         : : "r" (frame->Prev) : "memory" );
+    return frame->Prev;
+
+#else
+    NT_TIB *teb = (NT_TIB *)NtCurrentTeb();
+    teb->ExceptionList = frame->Prev;
+    return frame->Prev;
+#endif
+}
+
+/* Exception handling flags - from OS/2 2.0 exception handling */
+
+/* Win32 seems to use the same flags as ExceptionFlags in an EXCEPTION_RECORD */
+#define EH_NONCONTINUABLE   0x01
+#define EH_UNWINDING        0x02
+#define EH_EXIT_UNWIND      0x04
+#define EH_STACK_INVALID    0x08
+#define EH_NESTED_CALL      0x10
+
+/* Wine-specific exceptions codes */
+
+#define EXCEPTION_WINE_STUB       0x80000100  /* stub entry point called */
+#define EXCEPTION_WINE_ASSERTION  0x80000101  /* assertion failed */
+
+/* unhandled return status from vm86 mode */
+#define EXCEPTION_VM86_INTx       0x80000110
+#define EXCEPTION_VM86_STI        0x80000111
+#define EXCEPTION_VM86_PICRETURN  0x80000112
+
+extern void __wine_enter_vm86( CONTEXT *context );
+
+#ifndef USE_COMPILER_EXCEPTIONS
+
+extern void WINAPI RtlUnwind(PVOID,PVOID,PEXCEPTION_RECORD,PVOID);
+
+/* wrapper for RtlUnwind since it clobbers registers on Windows */
+static inline void __wine_rtl_unwind( EXCEPTION_REGISTRATION_RECORD* frame, EXCEPTION_RECORD *record )
+{
+#if defined(__GNUC__) && defined(__i386__)
+    int dummy1, dummy2, dummy3;
+    __asm__ __volatile__("pushl %%ebp\n\t"
+                         "pushl %%ebx\n\t"
+                         "pushl $0\n\t"
+                         "pushl %2\n\t"
+                         "pushl $0\n\t"
+                         "pushl %1\n\t"
+                         "call *%0\n\t"
+                         "popl %%ebx\n\t"
+                         "popl %%ebp"
+                         : "=a" (dummy1), "=S" (dummy2), "=D" (dummy3)
+                         : "0" (RtlUnwind), "1" (frame), "2" (record)
+                         : "ecx", "edx", "memory" );
+#else
+    RtlUnwind( frame, 0, record, 0 );
+#endif
+}
+
+static inline void DECLSPEC_NORETURN __wine_unwind_frame( EXCEPTION_RECORD *record,
+                                                          EXCEPTION_REGISTRATION_RECORD *frame )
+{
+    __WINE_FRAME *wine_frame = (__WINE_FRAME *)frame;
+
+    /* hack to make GetExceptionCode() work in handler */
+    wine_frame->ExceptionCode   = record->ExceptionCode;
+    wine_frame->ExceptionRecord = wine_frame;
+
+    __wine_rtl_unwind( frame, record );
+    __wine_pop_frame( frame );
+    siglongjmp( wine_frame->jmp, 1 );
+}
+
+static inline DWORD __wine_exception_handler( EXCEPTION_RECORD *record,
+                                              EXCEPTION_REGISTRATION_RECORD *frame,
+                                              CONTEXT *context,
+                                              EXCEPTION_REGISTRATION_RECORD **pdispatcher )
+{
+    __WINE_FRAME *wine_frame = (__WINE_FRAME *)frame;
+    EXCEPTION_POINTERS ptrs;
+
+    if (record->ExceptionFlags & (EH_UNWINDING | EH_EXIT_UNWIND | EH_NESTED_CALL))
+        return ExceptionContinueSearch;
+
+    ptrs.ExceptionRecord = record;
+    ptrs.ContextRecord = context;
+    switch(wine_frame->u.filter( &ptrs ))
+    {
+    case EXCEPTION_CONTINUE_SEARCH:
+        return ExceptionContinueSearch;
+    case EXCEPTION_CONTINUE_EXECUTION:
+        return ExceptionContinueExecution;
+    case EXCEPTION_EXECUTE_HANDLER:
+        break;
+    }
+    __wine_unwind_frame( record, frame );
+}
+
+static inline DWORD __wine_exception_handler_page_fault( EXCEPTION_RECORD *record,
+                                                         EXCEPTION_REGISTRATION_RECORD *frame,
+                                                         CONTEXT *context,
+                                                         EXCEPTION_REGISTRATION_RECORD **pdispatcher )
+{
+    if (record->ExceptionFlags & (EH_UNWINDING | EH_EXIT_UNWIND | EH_NESTED_CALL))
+        return ExceptionContinueSearch;
+    if (record->ExceptionCode != STATUS_ACCESS_VIOLATION)
+        return ExceptionContinueSearch;
+    __wine_unwind_frame( record, frame );
+}
+
+static inline DWORD __wine_exception_handler_all( EXCEPTION_RECORD *record,
+                                                  EXCEPTION_REGISTRATION_RECORD *frame,
+                                                  CONTEXT *context,
+                                                  EXCEPTION_REGISTRATION_RECORD **pdispatcher )
+{
+    if (record->ExceptionFlags & (EH_UNWINDING | EH_EXIT_UNWIND | EH_NESTED_CALL))
+        return ExceptionContinueSearch;
+    __wine_unwind_frame( record, frame );
+}
+
+static inline DWORD __wine_finally_handler( EXCEPTION_RECORD *record,
+                                            EXCEPTION_REGISTRATION_RECORD *frame,
+                                            CONTEXT *context,
+                                            EXCEPTION_REGISTRATION_RECORD **pdispatcher )
+{
+    if (record->ExceptionFlags & (EH_UNWINDING | EH_EXIT_UNWIND))
+    {
+        __WINE_FRAME *wine_frame = (__WINE_FRAME *)frame;
+        wine_frame->u.finally_func( FALSE );
+    }
+    return ExceptionContinueSearch;
+}
+
+#endif /* USE_COMPILER_EXCEPTIONS */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* __WINE_WINE_EXCEPTION_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/irot.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/irot.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/irot.idl	(revision 16410)
@@ -0,0 +1,97 @@
+/*
+ * Copyright 2007 Robert Shearman for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "wtypes.idl";
+
+cpp_quote("#define IROT_PROTSEQ {'n','c','a','l','r','p','c',0}")
+cpp_quote("#define IROT_ENDPOINT {'i','r','o','t',0}")
+
+typedef struct tagMonikerComparisonData {
+	ULONG ulCntData;
+	[size_is(ulCntData)] BYTE abData[];
+} MonikerComparisonData;
+
+[
+    uuid(7a98c254-6808-11cf-b73b-00aa00b677a8),
+    version(0.2),
+    strict_context_handle
+]
+interface Irot
+{
+	typedef struct tagInterfaceData
+	{
+		ULONG ulCntData;
+		[size_is(ulCntData)] BYTE abData[];
+	} InterfaceData;
+
+	typedef [unique] InterfaceData *PInterfaceData;
+
+	typedef struct tagInterfaceList
+	{
+		ULONG size;
+		[size_is(size)] PInterfaceData interfaces[];
+	} InterfaceList;
+
+	typedef [unique] InterfaceList *PInterfaceList;
+
+	typedef DWORD IrotCookie;
+
+	typedef handle_t IrotHandle;
+	typedef [context_handle] void *IrotContextHandle;
+
+	HRESULT IrotRegister(
+		[in]  IrotHandle h,
+		[in]  const MonikerComparisonData *moniker_data,
+		[in]  const InterfaceData *object,
+		[in]  const InterfaceData *moniker,
+		[in]  const FILETIME *time,
+		[in]  DWORD grfFlags,
+		[out] IrotCookie *cookie,
+		[out] IrotContextHandle *ctxt_handle);
+
+	HRESULT IrotRevoke(
+		[in]  IrotHandle h,
+		[in]  IrotCookie cookie,
+		[in, out] IrotContextHandle *ctxt_handle,
+		[out] PInterfaceData *object,
+		[out] PInterfaceData *moniker);
+
+	HRESULT IrotIsRunning(
+		[in]  IrotHandle h,
+		[in]  const MonikerComparisonData *moniker_data);
+
+	HRESULT IrotGetObject(
+		[in]  IrotHandle h,
+		[in]  const MonikerComparisonData *moniker_data,
+		[out] PInterfaceData *obj,
+		[out] IrotCookie *cookie);
+
+	HRESULT IrotNoteChangeTime(
+		[in]  IrotHandle h,
+		[in]  IrotCookie cookie,
+		[in]  const FILETIME *time);
+
+	HRESULT IrotGetTimeOfLastChange(
+		[in]  IrotHandle h,
+		[in]  const MonikerComparisonData *moniker_data,
+		[out] FILETIME *time);
+
+	HRESULT IrotEnumRunning(
+		[in]  IrotHandle h,
+		[out] PInterfaceList *list);
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/itss.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/itss.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/itss.idl	(revision 16410)
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2004 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "oaidl.idl";
+
+typedef struct _ITS_Control_Data
+{
+    UINT cdwControlData;
+    UINT adwControlData[1];
+
+} ITS_Control_Data, *PITS_Control_Data;
+
+typedef enum ECompactionLev { 
+    COMPACT_DATA = 0,
+    COMPACT_DATA_AND_PATH
+} ECompactionLev;
+
+[
+  object,
+  uuid(88cc31de-27ab-11d0-9df9-00a0c922e6ec),
+  pointer_default(unique)
+]
+interface IITStorage : IUnknown
+{
+    HRESULT StgCreateDocfile(
+        [in] const WCHAR * pwcsName,
+        [in] DWORD grfMode,
+        [in] DWORD reserved,
+        [out] IStorage ** ppstgOpen);
+
+    HRESULT StgCreateDocfileOnILockBytes(
+        [in] ILockBytes * plkbyt,
+        [in] DWORD grfMode,
+        [in] DWORD reserved, 
+        [out] IStorage ** ppstgOpen);
+
+
+    HRESULT StgIsStorageFile(
+        [in] const WCHAR * pwcsName);
+
+    HRESULT StgIsStorageILockBytes(
+        [in] ILockBytes * plkbyt);
+
+    HRESULT StgOpenStorage(
+        [in] const WCHAR * pwcsName,
+        [in] IStorage * pstgPriority,
+        [in] DWORD grfMode,
+        [in] SNB snbExclude,
+        [in] DWORD reserved,
+        [out] IStorage ** ppstgOpen);
+
+    HRESULT StgOpenStorageOnILockBytes(
+        [in] ILockBytes * plkbyt,
+        [in] IStorage * pStgPriority,
+        [in] DWORD grfMode,
+        [in] SNB snbExclude,
+        [in] DWORD reserved,
+        [out] IStorage ** ppstgOpen);
+
+    HRESULT StgSetTimes(
+        [in] WCHAR const * lpszName,
+        [in] FILETIME const * pctime,
+        [in] FILETIME const * patime,
+        [in] FILETIME const * pmtime);
+
+    HRESULT SetControlData(
+        [in] PITS_Control_Data pControlData);
+    
+    HRESULT DefaultControlData(
+        [out] PITS_Control_Data * ppControlData);
+
+    HRESULT Compact(
+        [in] const WCHAR * pwcsName,
+        [in] ECompactionLev iLev);
+}
+
+cpp_quote("DEFINE_GUID(CLSID_ITStorage,0x5d02926a,0x212e,0x11d0,0x9d,0xf9,0x00,0xa0,0xc9,0x22,0xe6,0xec);")
+cpp_quote("DEFINE_GUID(CLSID_MSFSStore,0xd54eee56,0xaaab,0x11d0,0x9e,0x1d,0x00,0xa0,0xc9,0x22,0xe6,0xec);")
+cpp_quote("DEFINE_GUID(CLSID_MSITStore,0x9d148290,0xb9c8,0x11d0,0xa4,0xcc,0x00,0x00,0xf8,0x01,0x49,0xf6);")
+cpp_quote("DEFINE_GUID(CLSID_ITSProtocol,0x9d148291,0xb9c8,0x11d0,0xa4,0xcc,0x00,0x00,0xf8,0x01,0x49,0xf6);")
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/library.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/library.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/library.h	(revision 16410)
@@ -0,0 +1,229 @@
+/*
+ * Definitions for the Wine library
+ *
+ * Copyright 2000 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINE_LIBRARY_H
+#define __WINE_WINE_LIBRARY_H
+
+#include <stdarg.h>
+#include <sys/types.h>
+
+#include <windef.h>
+#include <winbase.h>
+
+#ifdef __WINE_WINE_TEST_H
+#error This file should not be used in Wine tests
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* configuration */
+
+extern const char *wine_get_build_dir(void);
+extern const char *wine_get_config_dir(void);
+extern const char *wine_get_data_dir(void);
+extern const char *wine_get_server_dir(void);
+extern const char *wine_get_user_name(void);
+extern const char *wine_get_version(void);
+extern const char *wine_get_build_id(void);
+extern void wine_init_argv0_path( const char *argv0 );
+extern void wine_exec_wine_binary( const char *name, char **argv, const char *env_var );
+
+/* dll loading */
+
+typedef void (*load_dll_callback_t)( void *, const char * );
+
+extern void *wine_dlopen( const char *filename, int flag, char *error, size_t errorsize );
+extern void *wine_dlsym( void *handle, const char *symbol, char *error, size_t errorsize );
+extern int wine_dlclose( void *handle, char *error, size_t errorsize );
+extern void wine_dll_set_callback( load_dll_callback_t load );
+extern void *wine_dll_load( const char *filename, char *error, int errorsize, int *file_exists );
+extern void *wine_dll_load_main_exe( const char *name, char *error, int errorsize,
+                                     int test_only, int *file_exists );
+extern void wine_dll_unload( void *handle );
+extern const char *wine_dll_enum_load_path( unsigned int index );
+extern int wine_dll_get_owner( const char *name, char *buffer, int size, int *file_exists );
+
+extern int __wine_main_argc;
+extern char **__wine_main_argv;
+extern WCHAR **__wine_main_wargv;
+extern char **__wine_main_environ;
+extern void __wine_dll_register( const IMAGE_NT_HEADERS *header, const char *filename );
+extern void wine_init( int argc, char *argv[], char *error, int error_size );
+
+/* portability */
+
+extern void DECLSPEC_NORETURN wine_switch_to_stack( void (*func)(void *), void *arg, void *stack );
+extern int wine_call_on_stack( int (*func)(void *), void *arg, void *stack );
+
+/* memory mappings */
+
+extern void *wine_anon_mmap( void *start, size_t size, int prot, int flags );
+extern void wine_mmap_add_reserved_area( void *addr, size_t size );
+extern void wine_mmap_remove_reserved_area( void *addr, size_t size, int unmap );
+extern int wine_mmap_is_in_reserved_area( void *addr, size_t size );
+extern int wine_mmap_enum_reserved_areas( int (*enum_func)(void *base, size_t size, void *arg),
+                                          void *arg, int top_down );
+
+/* LDT management */
+
+extern void wine_ldt_init_locking( void (*lock_func)(void), void (*unlock_func)(void) );
+extern void wine_ldt_get_entry( unsigned short sel, LDT_ENTRY *entry );
+extern int wine_ldt_set_entry( unsigned short sel, const LDT_ENTRY *entry );
+extern int wine_ldt_is_system( unsigned short sel );
+extern void *wine_ldt_get_ptr( unsigned short sel, unsigned long offset );
+extern unsigned short wine_ldt_alloc_entries( int count );
+extern unsigned short wine_ldt_realloc_entries( unsigned short sel, int oldcount, int newcount );
+extern void wine_ldt_free_entries( unsigned short sel, int count );
+#if defined(__i386__) && !defined(__MINGW32__) && !defined(_MSC_VER)
+extern unsigned short wine_ldt_alloc_fs(void);
+extern void wine_ldt_init_fs( unsigned short sel, const LDT_ENTRY *entry );
+extern void wine_ldt_free_fs( unsigned short sel );
+#else  /* __i386__ */
+static inline unsigned short wine_ldt_alloc_fs(void) { return 0x0b; /* pseudo GDT selector */ }
+static inline void wine_ldt_init_fs( unsigned short sel, const LDT_ENTRY *entry ) { }
+static inline void wine_ldt_free_fs( unsigned short sel ) { }
+#endif  /* __i386__ */
+
+
+/* the local copy of the LDT */
+#ifdef __CYGWIN__
+# ifdef WINE_EXPORT_LDT_COPY
+#  define WINE_LDT_EXTERN __declspec(dllexport)
+# else
+#  define WINE_LDT_EXTERN __declspec(dllimport)
+# endif
+#else
+# define WINE_LDT_EXTERN extern
+#endif
+
+WINE_LDT_EXTERN struct __wine_ldt_copy
+{
+    void         *base[8192];  /* base address or 0 if entry is free   */
+    unsigned long limit[8192]; /* limit in bytes or 0 if entry is free */
+    unsigned char flags[8192]; /* flags (defined below) */
+} wine_ldt_copy;
+
+#define WINE_LDT_FLAGS_DATA      0x13  /* Data segment */
+#define WINE_LDT_FLAGS_STACK     0x17  /* Stack segment */
+#define WINE_LDT_FLAGS_CODE      0x1b  /* Code segment */
+#define WINE_LDT_FLAGS_TYPE_MASK 0x1f  /* Mask for segment type */
+#define WINE_LDT_FLAGS_32BIT     0x40  /* Segment is 32-bit (code or stack) */
+#define WINE_LDT_FLAGS_ALLOCATED 0x80  /* Segment is allocated (no longer free) */
+
+/* helper functions to manipulate the LDT_ENTRY structure */
+static inline void wine_ldt_set_base( LDT_ENTRY *ent, const void *base )
+{
+    ent->BaseLow               = (WORD)(unsigned long)base;
+    ent->HighWord.Bits.BaseMid = (BYTE)((unsigned long)base >> 16);
+    ent->HighWord.Bits.BaseHi  = (BYTE)((unsigned long)base >> 24);
+}
+static inline void wine_ldt_set_limit( LDT_ENTRY *ent, unsigned int limit )
+{
+    if ((ent->HighWord.Bits.Granularity = (limit >= 0x100000))) limit >>= 12;
+    ent->LimitLow = (WORD)limit;
+    ent->HighWord.Bits.LimitHi = (limit >> 16);
+}
+static inline void *wine_ldt_get_base( const LDT_ENTRY *ent )
+{
+    return (void *)(ent->BaseLow |
+                    (unsigned long)ent->HighWord.Bits.BaseMid << 16 |
+                    (unsigned long)ent->HighWord.Bits.BaseHi << 24);
+}
+static inline unsigned int wine_ldt_get_limit( const LDT_ENTRY *ent )
+{
+    unsigned int limit = ent->LimitLow | (ent->HighWord.Bits.LimitHi << 16);
+    if (ent->HighWord.Bits.Granularity) limit = (limit << 12) | 0xfff;
+    return limit;
+}
+static inline void wine_ldt_set_flags( LDT_ENTRY *ent, unsigned char flags )
+{
+    ent->HighWord.Bits.Dpl         = 3;
+    ent->HighWord.Bits.Pres        = 1;
+    ent->HighWord.Bits.Type        = flags;
+    ent->HighWord.Bits.Sys         = 0;
+    ent->HighWord.Bits.Reserved_0  = 0;
+    ent->HighWord.Bits.Default_Big = (flags & WINE_LDT_FLAGS_32BIT) != 0;
+}
+static inline unsigned char wine_ldt_get_flags( const LDT_ENTRY *ent )
+{
+    unsigned char ret = ent->HighWord.Bits.Type;
+    if (ent->HighWord.Bits.Default_Big) ret |= WINE_LDT_FLAGS_32BIT;
+    return ret;
+}
+static inline int wine_ldt_is_empty( const LDT_ENTRY *ent )
+{
+    const DWORD *dw = (const DWORD *)ent;
+    return (dw[0] | dw[1]) == 0;
+}
+
+/* segment register access */
+
+#ifdef __i386__
+# ifdef __MINGW32__
+#  define __DEFINE_GET_SEG(seg) \
+    static inline unsigned short wine_get_##seg(void); \
+    static inline unsigned short wine_get_##seg(void) \
+    { unsigned short res; __asm__ __volatile__("movw %%" #seg ",%w0" : "=r"(res)); return res; }
+#  define __DEFINE_SET_SEG(seg) \
+    static inline void wine_set_##seg(int val); \
+    static inline void wine_set_##seg(int val) { __asm__("movw %w0,%%" #seg : : "r" (val)); }
+# elif defined(__GNUC__)
+#  define __DEFINE_GET_SEG(seg) \
+    extern inline unsigned short wine_get_##seg(void); \
+    extern inline unsigned short wine_get_##seg(void) \
+    { unsigned short res; __asm__ __volatile__("movw %%" #seg ",%w0" : "=r"(res)); return res; }
+#  define __DEFINE_SET_SEG(seg) \
+    extern inline void wine_set_##seg(int val); \
+    extern inline void wine_set_##seg(int val) { __asm__("movw %w0,%%" #seg : : "r" (val)); }
+# elif defined(_MSC_VER)
+#  define __DEFINE_GET_SEG(seg) \
+    extern inline unsigned short wine_get_##seg(void); \
+    extern inline unsigned short wine_get_##seg(void) \
+    { unsigned short res; __asm { mov res, seg } return res; }
+#  define __DEFINE_SET_SEG(seg) \
+    extern inline void wine_set_##seg(unsigned short val); \
+    extern inline void wine_set_##seg(unsigned short val) { __asm { mov seg, val } }
+# else  /* __GNUC__ || _MSC_VER */
+#  define __DEFINE_GET_SEG(seg) extern unsigned short wine_get_##seg(void);
+#  define __DEFINE_SET_SEG(seg) extern void wine_set_##seg(unsigned int);
+# endif /* __GNUC__ || _MSC_VER */
+#else  /* __i386__ */
+# define __DEFINE_GET_SEG(seg) static inline unsigned short wine_get_##seg(void) { return 0; }
+# define __DEFINE_SET_SEG(seg) static inline void wine_set_##seg(int val) { /* nothing */ }
+#endif  /* __i386__ */
+
+__DEFINE_GET_SEG(cs)
+__DEFINE_GET_SEG(ds)
+__DEFINE_GET_SEG(es)
+__DEFINE_GET_SEG(fs)
+__DEFINE_GET_SEG(gs)
+__DEFINE_GET_SEG(ss)
+__DEFINE_SET_SEG(fs)
+__DEFINE_SET_SEG(gs)
+#undef __DEFINE_GET_SEG
+#undef __DEFINE_SET_SEG
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* __WINE_WINE_LIBRARY_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/list.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/list.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/list.h	(revision 16410)
@@ -0,0 +1,230 @@
+/*
+ * Linked lists support
+ *
+ * Copyright (C) 2002 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_SERVER_LIST_H
+#define __WINE_SERVER_LIST_H
+
+struct list
+{
+    struct list *next;
+    struct list *prev;
+};
+
+/* Define a list like so:
+ *
+ *   struct gadget
+ *   {
+ *       struct list  entry;   <-- doesn't have to be the first item in the struct
+ *       int          a, b;
+ *   };
+ *
+ *   static struct list global_gadgets = LIST_INIT( global_gadgets );
+ *
+ * or
+ *
+ *   struct some_global_thing
+ *   {
+ *       struct list gadgets;
+ *   };
+ *
+ *   list_init( &some_global_thing->gadgets );
+ *
+ * Manipulate it like this:
+ *
+ *   list_add_head( &global_gadgets, &new_gadget->entry );
+ *   list_remove( &new_gadget->entry );
+ *   list_add_after( &some_random_gadget->entry, &new_gadget->entry );
+ *
+ * And to iterate over it:
+ *
+ *   struct gadget *gadget;
+ *   LIST_FOR_EACH_ENTRY( gadget, &global_gadgets, struct gadget, entry )
+ *   {
+ *       ...
+ *   }
+ *
+ */
+
+/* add an element after the specified one */
+static inline void list_add_after( struct list *elem, struct list *to_add )
+{
+    to_add->next = elem->next;
+    to_add->prev = elem;
+    elem->next->prev = to_add;
+    elem->next = to_add;
+}
+
+/* add an element before the specified one */
+static inline void list_add_before( struct list *elem, struct list *to_add )
+{
+    to_add->next = elem;
+    to_add->prev = elem->prev;
+    elem->prev->next = to_add;
+    elem->prev = to_add;
+}
+
+/* add element at the head of the list */
+static inline void list_add_head( struct list *list, struct list *elem )
+{
+    list_add_after( list, elem );
+}
+
+/* add element at the tail of the list */
+static inline void list_add_tail( struct list *list, struct list *elem )
+{
+    list_add_before( list, elem );
+}
+
+/* remove an element from its list */
+static inline void list_remove( struct list *elem )
+{
+    elem->next->prev = elem->prev;
+    elem->prev->next = elem->next;
+}
+
+/* get the next element */
+static inline struct list *list_next( const struct list *list, const struct list *elem )
+{
+    struct list *ret = elem->next;
+    if (elem->next == list) ret = NULL;
+    return ret;
+}
+
+/* get the previous element */
+static inline struct list *list_prev( const struct list *list, const struct list *elem )
+{
+    struct list *ret = elem->prev;
+    if (elem->prev == list) ret = NULL;
+    return ret;
+}
+
+/* get the first element */
+static inline struct list *list_head( const struct list *list )
+{
+    return list_next( list, list );
+}
+
+/* get the last element */
+static inline struct list *list_tail( const struct list *list )
+{
+    return list_prev( list, list );
+}
+
+/* check if a list is empty */
+static inline int list_empty( const struct list *list )
+{
+    return list->next == list;
+}
+
+/* initialize a list */
+static inline void list_init( struct list *list )
+{
+    list->next = list->prev = list;
+}
+
+/* count the elements of a list */
+static inline unsigned int list_count( const struct list *list )
+{
+    unsigned count = 0;
+    const struct list *ptr;
+    for (ptr = list->next; ptr != list; ptr = ptr->next) count++;
+    return count;
+}
+
+/* move all elements from src to the tail of dst */
+static inline void list_move_tail( struct list *dst, struct list *src )
+{
+    if (list_empty(src)) return;
+
+    dst->prev->next = src->next;
+    src->next->prev = dst->prev;
+    dst->prev = src->prev;
+    src->prev->next = dst;
+    list_init(src);
+}
+
+/* move all elements from src to the head of dst */
+static inline void list_move_head( struct list *dst, struct list *src )
+{
+    if (list_empty(src)) return;
+
+    dst->next->prev = src->prev;
+    src->prev->next = dst->next;
+    dst->next = src->next;
+    src->next->prev = dst;
+    list_init(src);
+}
+
+/* iterate through the list */
+#define LIST_FOR_EACH(cursor,list) \
+    for ((cursor) = (list)->next; (cursor) != (list); (cursor) = (cursor)->next)
+
+/* iterate through the list, with safety against removal */
+#define LIST_FOR_EACH_SAFE(cursor, cursor2, list) \
+    for ((cursor) = (list)->next, (cursor2) = (cursor)->next; \
+         (cursor) != (list); \
+         (cursor) = (cursor2), (cursor2) = (cursor)->next)
+
+/* iterate through the list using a list entry */
+#define LIST_FOR_EACH_ENTRY(elem, list, type, field) \
+    for ((elem) = LIST_ENTRY((list)->next, type, field); \
+         &(elem)->field != (list); \
+         (elem) = LIST_ENTRY((elem)->field.next, type, field))
+
+/* iterate through the list using a list entry, with safety against removal */
+#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field) \
+    for ((cursor) = LIST_ENTRY((list)->next, type, field), \
+         (cursor2) = LIST_ENTRY((cursor)->field.next, type, field); \
+         &(cursor)->field != (list); \
+         (cursor) = (cursor2), \
+         (cursor2) = LIST_ENTRY((cursor)->field.next, type, field))
+
+/* iterate through the list in reverse order */
+#define LIST_FOR_EACH_REV(cursor,list) \
+    for ((cursor) = (list)->prev; (cursor) != (list); (cursor) = (cursor)->prev)
+
+/* iterate through the list in reverse order, with safety against removal */
+#define LIST_FOR_EACH_SAFE_REV(cursor, cursor2, list) \
+    for ((cursor) = (list)->prev, (cursor2) = (cursor)->prev; \
+         (cursor) != (list); \
+         (cursor) = (cursor2), (cursor2) = (cursor)->prev)
+
+/* iterate through the list in reverse order using a list entry */
+#define LIST_FOR_EACH_ENTRY_REV(elem, list, type, field) \
+    for ((elem) = LIST_ENTRY((list)->prev, type, field); \
+         &(elem)->field != (list); \
+         (elem) = LIST_ENTRY((elem)->field.prev, type, field))
+
+/* iterate through the list in reverse order using a list entry, with safety against removal */
+#define LIST_FOR_EACH_ENTRY_SAFE_REV(cursor, cursor2, list, type, field) \
+    for ((cursor) = LIST_ENTRY((list)->prev, type, field), \
+         (cursor2) = LIST_ENTRY((cursor)->field.prev, type, field); \
+         &(cursor)->field != (list); \
+         (cursor) = (cursor2), \
+         (cursor2) = LIST_ENTRY((cursor)->field.prev, type, field))
+
+/* macros for statically initialized lists */
+#define LIST_INIT(list)  { &(list), &(list) }
+
+/* get pointer to object containing list element */
+#define LIST_ENTRY(elem, type, field) \
+    ((type *)((char *)(elem) - (unsigned long)(&((type *)0)->field)))
+
+#endif  /* __WINE_SERVER_LIST_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/mmsystem16.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/mmsystem16.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/mmsystem16.h	(revision 16410)
@@ -0,0 +1,813 @@
+/*
+ * MMSYSTEM - Multimedia Wine Extension ... :-)
+ *
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINE_MMSYSTEM16_H
+#define __WINE_WINE_MMSYSTEM16_H
+
+#include <windef.h>
+#include <wine/windef16.h>
+#include <mmddk.h>
+
+#include <pshpack1.h>
+
+typedef UINT16	MMVERSION16;
+typedef UINT16	MCIDEVICEID16;
+typedef	UINT16	MMRESULT16;
+
+typedef struct {
+    UINT16    wType;		/* indicates the contents of the union */
+    union {
+	DWORD ms;		/* milliseconds */
+	DWORD sample;		/* samples */
+	DWORD cb;		/* byte count */
+	struct {		/* SMPTE */
+	    BYTE hour;		/* hours */
+	    BYTE min;		/* minutes */
+	    BYTE sec;		/* seconds */
+	    BYTE frame;		/* frames  */
+	    BYTE fps;		/* frames per second */
+	    BYTE dummy;		/* pad */
+	} smpte;
+	struct {		/* MIDI */
+	    DWORD songptrpos;	/* song pointer position */
+	} midi;
+    } u;
+} MMTIME16,  *LPMMTIME16;
+
+typedef struct {
+    DWORD   dwDCISize;
+    SEGPTR  lpszDCISectionName;
+    SEGPTR  lpszDCIAliasName;
+} DRVCONFIGINFO16, *LPDRVCONFIGINFO16;
+
+/* GetDriverInfo16 references this structure, so this a struct defined
+ * in the Win16 API.
+ * GetDriverInfo has been deprecated in Win32.
+ */
+typedef struct
+{
+    UINT16       length;
+    HDRVR16      hDriver;
+    HINSTANCE16  hModule;
+    CHAR         szAliasName[128];
+} DRIVERINFOSTRUCT16, *LPDRIVERINFOSTRUCT16;
+
+LRESULT   WINAPI DefDriverProc16(DWORD,HDRVR16,UINT16,LPARAM,LPARAM);
+HDRVR16   WINAPI OpenDriver16(LPCSTR,LPCSTR,LPARAM);
+LRESULT   WINAPI CloseDriver16(HDRVR16,LPARAM,LPARAM);
+LRESULT   WINAPI SendDriverMessage16(HDRVR16,UINT16,LPARAM,LPARAM);
+HMODULE16 WINAPI GetDriverModuleHandle16(HDRVR16);
+HDRVR16   WINAPI GetNextDriver16(HDRVR16,DWORD);
+BOOL16    WINAPI GetDriverInfo16(HDRVR16,DRIVERINFOSTRUCT16 *);
+
+typedef void (CALLBACK *LPDRVCALLBACK16) (HDRVR16,UINT16,DWORD,DWORD,DWORD);
+typedef LPDRVCALLBACK16 LPWAVECALLBACK16;
+
+UINT16    WINAPI mmsystemGetVersion16(void);
+BOOL16    WINAPI sndPlaySound16(LPCSTR,UINT16);
+
+typedef struct {
+    WORD	wMid;			/* manufacturer ID */
+    WORD	wPid;			/* product ID */
+    MMVERSION16	vDriverVersion;		/* version of the driver */
+    CHAR	szPname[MAXPNAMELEN];	/* product name (0 terminated string) */
+    DWORD	dwFormats;		/* formats supported */
+    WORD	wChannels;		/* number of sources supported */
+    DWORD	dwSupport;		/* functionality supported by driver */
+} WAVEOUTCAPS16, *LPWAVEOUTCAPS16;
+
+typedef struct {
+    WORD	wMid;			/* manufacturer ID */
+    WORD	wPid;			/* product ID */
+    MMVERSION16	vDriverVersion;		/* version of the driver */
+    CHAR	szPname[MAXPNAMELEN];	/* product name (0 terminated string) */
+    DWORD	dwFormats;		/* formats supported */
+    WORD	wChannels;		/* number of channels supported */
+} WAVEINCAPS16, *LPWAVEINCAPS16;
+
+typedef struct {
+	HWAVE16			hWave;
+	LPWAVEFORMATEX		lpFormat;
+	DWORD			dwCallback;
+	DWORD			dwInstance;
+	UINT16			uMappedDeviceID;
+        DWORD			dnDevNode;
+} WAVEOPENDESC16, *LPWAVEOPENDESC16;
+
+UINT16    WINAPI waveOutGetNumDevs16(void);
+UINT16    WINAPI waveOutGetDevCaps16(UINT16,LPWAVEOUTCAPS16,UINT16);
+UINT16    WINAPI waveOutGetVolume16(UINT16,DWORD*);
+UINT16    WINAPI waveOutSetVolume16(UINT16,DWORD);
+UINT16    WINAPI waveOutGetErrorText16(UINT16,LPSTR,UINT16);
+UINT16    WINAPI waveOutOpen16(HWAVEOUT16*,UINT16,const WAVEFORMATEX *,DWORD,DWORD,DWORD);
+UINT16    WINAPI waveOutClose16(HWAVEOUT16);
+UINT16    WINAPI waveOutPrepareHeader16(HWAVEOUT16,SEGPTR,UINT16);
+UINT16    WINAPI waveOutUnprepareHeader16(HWAVEOUT16,SEGPTR,UINT16);
+UINT16    WINAPI waveOutWrite16(HWAVEOUT16,WAVEHDR*,UINT16);
+UINT16    WINAPI waveOutPause16(HWAVEOUT16);
+UINT16    WINAPI waveOutRestart16(HWAVEOUT16);
+UINT16    WINAPI waveOutReset16(HWAVEOUT16);
+UINT16    WINAPI waveOutBreakLoop16(HWAVEOUT16);
+UINT16    WINAPI waveOutGetPosition16(HWAVEOUT16,LPMMTIME16,UINT16);
+UINT16    WINAPI waveOutGetPitch16(HWAVEOUT16,DWORD*);
+UINT16    WINAPI waveOutSetPitch16(HWAVEOUT16,DWORD);
+UINT16    WINAPI waveOutGetPlaybackRate16(HWAVEOUT16,DWORD*);
+UINT16    WINAPI waveOutSetPlaybackRate16(HWAVEOUT16,DWORD);
+UINT16    WINAPI waveOutGetID16(HWAVEOUT16,UINT16*);
+DWORD     WINAPI waveOutMessage16(HWAVEOUT16,UINT16,DWORD,DWORD);
+UINT16    WINAPI waveInGetNumDevs16(void);
+UINT16    WINAPI waveInGetDevCaps16(UINT16,LPWAVEINCAPS16,UINT16);
+UINT16    WINAPI waveInGetErrorText16(UINT16,LPSTR,UINT16);
+UINT16    WINAPI waveInOpen16(HWAVEIN16*,UINT16,const WAVEFORMATEX *,DWORD,DWORD,DWORD);
+UINT16    WINAPI waveInClose16(HWAVEIN16);
+UINT16    WINAPI waveInPrepareHeader16(HWAVEIN16,SEGPTR,UINT16);
+UINT16    WINAPI waveInUnprepareHeader16(HWAVEIN16,SEGPTR,UINT16);
+UINT16    WINAPI waveInAddBuffer16(HWAVEIN16,WAVEHDR*,UINT16);
+UINT16    WINAPI waveInStart16(HWAVEIN16);
+UINT16    WINAPI waveInStop16(HWAVEIN16);
+UINT16    WINAPI waveInReset16(HWAVEIN16);
+UINT16    WINAPI waveInGetPosition16(HWAVEIN16,LPMMTIME16,UINT16);
+UINT16    WINAPI waveInGetID16(HWAVEIN16,UINT16*);
+DWORD     WINAPI waveInMessage16(HWAVEIN16,UINT16,DWORD,DWORD);
+
+typedef LPDRVCALLBACK16 LPMIDICALLBACK16;
+
+typedef struct {
+    WORD	wMid;		/* manufacturer ID */
+    WORD	wPid;		/* product ID */
+    MMVERSION16	vDriverVersion;	/* version of the driver */
+    CHAR	szPname[MAXPNAMELEN];/* product name (NULL terminated string) */
+    WORD	wTechnology;	/* type of device */
+    WORD	wVoices;	/* # of voices (internal synth only) */
+    WORD	wNotes;		/* max # of notes (internal synth only) */
+    WORD	wChannelMask;	/* channels used (internal synth only) */
+    DWORD	dwSupport;	/* functionality supported by driver */
+} MIDIOUTCAPS16, *LPMIDIOUTCAPS16;
+
+typedef struct {
+    WORD	wMid;		/* manufacturer ID */
+    WORD	wPid;		/* product ID */
+    MMVERSION16	vDriverVersion;	/* version of the driver */
+    CHAR	szPname[MAXPNAMELEN];/* product name (NULL terminated string) */
+    DWORD	dwSupport;	/* included in win95 and higher */
+} MIDIINCAPS16, *LPMIDIINCAPS16;
+
+typedef struct midihdr16_tag {
+    LPSTR	lpData;		/* pointer to locked data block */
+    DWORD	dwBufferLength;	/* length of data in data block */
+    DWORD	dwBytesRecorded;/* used for input only */
+    DWORD	dwUser;		/* for client's use */
+    DWORD	dwFlags;	/* assorted flags (see defines) */
+    struct midihdr16_tag *lpNext;	/* reserved for driver */
+    DWORD	reserved;	/* reserved for driver */
+} MIDIHDR16, *LPMIDIHDR16;
+
+typedef struct {
+    HMIDI16         hMidi;
+    DWORD           dwCallback;
+    DWORD           dwInstance;
+    UINT16          reserved;
+    DWORD           dnDevNode;
+    DWORD           cIds;
+    MIDIOPENSTRMID  rgIds;
+} MIDIOPENDESC16, *LPMIDIOPENDESC16;
+
+UINT16     WINAPI midiOutGetNumDevs16(void);
+UINT16     WINAPI midiOutGetDevCaps16(UINT16,LPMIDIOUTCAPS16,UINT16);
+UINT16     WINAPI midiOutGetVolume16(UINT16,DWORD*);
+UINT16     WINAPI midiOutSetVolume16(UINT16,DWORD);
+UINT16     WINAPI midiOutGetErrorText16(UINT16,LPSTR,UINT16);
+UINT16     WINAPI midiOutOpen16(HMIDIOUT16*,UINT16,DWORD,DWORD,DWORD);
+UINT16     WINAPI midiOutClose16(HMIDIOUT16);
+UINT16     WINAPI midiOutPrepareHeader16(HMIDIOUT16,SEGPTR,UINT16);
+UINT16     WINAPI midiOutUnprepareHeader16(HMIDIOUT16,SEGPTR,UINT16);
+UINT16     WINAPI midiOutShortMsg16(HMIDIOUT16,DWORD);
+UINT16     WINAPI midiOutLongMsg16(HMIDIOUT16,MIDIHDR16*,UINT16);
+UINT16     WINAPI midiOutReset16(HMIDIOUT16);
+UINT16     WINAPI midiOutCachePatches16(HMIDIOUT16,UINT16,WORD*,UINT16);
+UINT16     WINAPI midiOutCacheDrumPatches16(HMIDIOUT16,UINT16,WORD*,UINT16);
+UINT16     WINAPI midiOutGetID16(HMIDIOUT16,UINT16*);
+DWORD      WINAPI midiOutMessage16(HMIDIOUT16,UINT16,DWORD,DWORD);
+UINT16     WINAPI midiInGetNumDevs16(void);
+UINT16     WINAPI midiInGetDevCaps16(UINT16,LPMIDIINCAPS16,UINT16);
+UINT16     WINAPI midiInGetErrorText16(UINT16,LPSTR,UINT16);
+UINT16     WINAPI midiInOpen16(HMIDIIN16*,UINT16,DWORD,DWORD,DWORD);
+UINT16     WINAPI midiInClose16(HMIDIIN16);
+UINT16     WINAPI midiInPrepareHeader16(HMIDIIN16,SEGPTR,UINT16);
+UINT16     WINAPI midiInUnprepareHeader16(HMIDIIN16,SEGPTR,UINT16);
+UINT16     WINAPI midiInAddBuffer16(HMIDIIN16,MIDIHDR16*,UINT16);
+UINT16     WINAPI midiInStart16(HMIDIIN16);
+UINT16     WINAPI midiInStop16(HMIDIIN16);
+UINT16     WINAPI midiInReset16(HMIDIIN16);
+UINT16     WINAPI midiInGetID16(HMIDIIN16,UINT16*);
+DWORD      WINAPI midiInMessage16(HMIDIIN16,UINT16,DWORD,DWORD);
+MMRESULT16 WINAPI midiStreamClose16(HMIDISTRM16 hms);
+MMRESULT16 WINAPI midiStreamOpen16(HMIDISTRM16*,LPUINT16,DWORD,DWORD,DWORD,DWORD);
+MMRESULT16 WINAPI midiStreamOut16(HMIDISTRM16,LPMIDIHDR16,UINT16);
+MMRESULT16 WINAPI midiStreamPause16(HMIDISTRM16);
+MMRESULT16 WINAPI midiStreamPosition16(HMIDISTRM16,LPMMTIME16,UINT16);
+MMRESULT16 WINAPI midiStreamProperty16(HMIDISTRM16,LPBYTE,DWORD);
+MMRESULT16 WINAPI midiStreamRestart16(HMIDISTRM16);
+MMRESULT16 WINAPI midiStreamStop16(HMIDISTRM16);
+
+typedef struct {
+    WORD	wMid;			/* manufacturer ID */
+    WORD	wPid;			/* product ID */
+    MMVERSION16	vDriverVersion;		/* version of the driver */
+    CHAR	szPname[MAXPNAMELEN];	/* product name (NULL terminated string) */
+    WORD	wTechnology;		/* type of device */
+    DWORD	dwSupport;		/* functionality supported by driver */
+} AUXCAPS16, *LPAUXCAPS16;
+
+typedef void (CALLBACK *LPTIMECALLBACK16)(UINT16,UINT16,DWORD,DWORD,DWORD);
+
+typedef struct {
+    UINT16	wPeriodMin;	/* minimum period supported  */
+    UINT16	wPeriodMax;	/* maximum period supported  */
+} TIMECAPS16,*LPTIMECAPS16;
+
+typedef struct {
+    WORD wMid;                  /* manufacturer ID */
+    WORD wPid;                  /* product ID */
+    char szPname[MAXPNAMELEN];	/* product name (NULL terminated string) */
+    UINT16 wXmin;               /* minimum x position value */
+    UINT16 wXmax;               /* maximum x position value */
+    UINT16 wYmin;               /* minimum y position value */
+    UINT16 wYmax;               /* maximum y position value */
+    UINT16 wZmin;               /* minimum z position value */
+    UINT16 wZmax;               /* maximum z position value */
+    UINT16 wNumButtons;         /* number of buttons */
+    UINT16 wPeriodMin;          /* minimum message period when captured */
+    UINT16 wPeriodMax;          /* maximum message period when captured */
+                                /* win95,nt4 additions: */
+    UINT16 wRmin;		/* minimum r position value */
+    UINT16 wRmax;		/* maximum r position value */
+    UINT16 wUmin;		/* minimum u (5th axis) position value */
+    UINT16 wUmax;		/* maximum u (5th axis) position value */
+    UINT16 wVmin;		/* minimum v (6th axis) position value */
+    UINT16 wVmax;		/* maximum v (6th axis) position value */
+    UINT16 wCaps;		/* joystick capabilities */
+    UINT16 wMaxAxes;		/* maximum number of axes supported */
+    UINT16 wNumAxes;		/* number of axes in use */
+    UINT16 wMaxButtons;		/* maximum number of buttons supported */
+    CHAR szRegKey[MAXPNAMELEN]; /* registry key */
+    CHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME]; /* OEM VxD in use */
+} JOYCAPS16, *LPJOYCAPS16;
+
+typedef struct {
+    UINT16 wXpos;                 /* x position */
+    UINT16 wYpos;                 /* y position */
+    UINT16 wZpos;                 /* z position */
+    UINT16 wButtons;              /* button states */
+} JOYINFO16, *LPJOYINFO16;
+
+typedef struct {
+    WORD         wMid;                  /* manufacturer id */
+    WORD         wPid;                  /* product id */
+    MMVERSION16  vDriverVersion;        /* version of the driver */
+    CHAR         szPname[MAXPNAMELEN];  /* product name */
+    DWORD        fdwSupport;            /* misc. support bits */
+    DWORD        cDestinations;         /* count of destinations */
+} MIXERCAPS16,*LPMIXERCAPS16;
+
+typedef struct tMIXEROPENDESC16
+{
+	HMIXEROBJ16		hmx;
+        LPVOID			pReserved0;
+	DWORD			dwCallback;
+	DWORD			dwInstance;
+} MIXEROPENDESC16, *LPMIXEROPENDESC16;
+
+typedef struct {
+    DWORD	cbStruct;		/* size of MIXERLINE structure */
+    DWORD	dwDestination;		/* zero based destination index */
+    DWORD	dwSource;		/* zero based source index (if source) */
+    DWORD	dwLineID;		/* unique line id for mixer device */
+    DWORD	fdwLine;		/* state/information about line */
+    DWORD	dwUser;			/* driver specific information */
+    DWORD	dwComponentType;	/* component type line connects to */
+    DWORD	cChannels;		/* number of channels line supports */
+    DWORD	cConnections;		/* number of connections [possible] */
+    DWORD	cControls;		/* number of controls at this line */
+    CHAR	szShortName[MIXER_SHORT_NAME_CHARS];
+    CHAR	szName[MIXER_LONG_NAME_CHARS];
+    struct {
+	DWORD	dwType;			/* MIXERLINE_TARGETTYPE_xxxx */
+	DWORD	dwDeviceID;		/* target device ID of device type */
+	WORD	wMid;			/* of target device */
+	WORD	wPid;			/*      " */
+	MMVERSION16	vDriverVersion;	/*      " */
+	CHAR	szPname[MAXPNAMELEN];	/*      " */
+    } Target;
+} MIXERLINE16, *LPMIXERLINE16;
+
+typedef struct {
+    DWORD		cbStruct;           /* size in bytes of MIXERCONTROL */
+    DWORD		dwControlID;        /* unique control id for mixer device */
+    DWORD		dwControlType;      /* MIXERCONTROL_CONTROLTYPE_xxx */
+    DWORD		fdwControl;         /* MIXERCONTROL_CONTROLF_xxx */
+    DWORD		cMultipleItems;     /* if MIXERCONTROL_CONTROLF_MULTIPLE set */
+    CHAR		szShortName[MIXER_SHORT_NAME_CHARS];
+    CHAR		szName[MIXER_LONG_NAME_CHARS];
+    union {
+	struct {
+	    LONG	lMinimum;	/* signed minimum for this control */
+	    LONG	lMaximum;	/* signed maximum for this control */
+	} s;
+	struct {
+	    DWORD	dwMinimum;	/* unsigned minimum for this control */
+	    DWORD	dwMaximum;	/* unsigned maximum for this control */
+	} s1;
+	DWORD       	dwReserved[6];
+    } Bounds;
+    union {
+	DWORD		cSteps;		/* # of steps between min & max */
+	DWORD		cbCustomData;	/* size in bytes of custom data */
+	DWORD		dwReserved[6];	/* !!! needed? we have cbStruct.... */
+    } Metrics;
+} MIXERCONTROL16, *LPMIXERCONTROL16;
+
+typedef struct {
+    DWORD	cbStruct;	/* size in bytes of MIXERLINECONTROLS */
+    DWORD	dwLineID;	/* line id (from MIXERLINE.dwLineID) */
+    union {
+	DWORD	dwControlID;	/* MIXER_GETLINECONTROLSF_ONEBYID */
+	DWORD	dwControlType;	/* MIXER_GETLINECONTROLSF_ONEBYTYPE */
+    } u;
+    DWORD	cControls;	/* count of controls pmxctrl points to */
+    DWORD	cbmxctrl;	/* size in bytes of _one_ MIXERCONTROL */
+    SEGPTR	pamxctrl;	/* pointer to first MIXERCONTROL array */
+} MIXERLINECONTROLS16, *LPMIXERLINECONTROLS16;
+
+typedef struct {
+    DWORD	cbStruct;	/* size in bytes of MIXERCONTROLDETAILS */
+    DWORD	dwControlID;	/* control id to get/set details on */
+    DWORD	cChannels;	/* number of channels in paDetails array */
+    union {
+        HWND16	hwndOwner;	/* for MIXER_SETCONTROLDETAILSF_CUSTOM */
+        DWORD	cMultipleItems;	/* if _MULTIPLE, the number of items per channel */
+    } u;
+    DWORD	cbDetails;	/* size of _one_ details_XX struct */
+    LPVOID	paDetails;	/* pointer to array of details_XX structs */
+} MIXERCONTROLDETAILS16,*LPMIXERCONTROLDETAILS16;
+
+typedef struct {
+    DWORD	dwParam1;
+    DWORD	dwParam2;
+    CHAR	szName[MIXER_LONG_NAME_CHARS];
+} MIXERCONTROLDETAILS_LISTTEXT16,*LPMIXERCONTROLDETAILS_LISTTEXT16;
+
+typedef LRESULT (CALLBACK *LPMMIOPROC16)(LPSTR lpmmioinfo,UINT16 uMessage,
+					 LPARAM lParam1,LPARAM lParam2);
+
+typedef struct {
+        DWORD		dwFlags;	/* general status flags */
+        FOURCC		fccIOProc;	/* pointer to I/O procedure */
+        LPMMIOPROC16	pIOProc;	/* pointer to I/O procedure */
+        UINT16		wErrorRet;	/* place for error to be returned */
+        HTASK16		hTask;		/* alternate local task */
+        /* fields maintained by MMIO functions during buffered I/O */
+        LONG		cchBuffer;	/* size of I/O buffer (or 0L) */
+        HPSTR		pchBuffer;	/* start of I/O buffer (or NULL) */
+        HPSTR		pchNext;	/* pointer to next byte to read/write */
+        HPSTR		pchEndRead;	/* pointer to last valid byte to read */
+        HPSTR		pchEndWrite;	/* pointer to last byte to write */
+        LONG		lBufOffset;	/* disk offset of start of buffer */
+        /* fields maintained by I/O procedure */
+        LONG		lDiskOffset;	/* disk offset of next read or write */
+        DWORD		adwInfo[3];	/* data specific to type of MMIOPROC */
+        /* other fields maintained by MMIO */
+        DWORD		dwReserved1;	/* reserved for MMIO use */
+        DWORD		dwReserved2;	/* reserved for MMIO use */
+        HMMIO16		hmmio;		/* handle to open file */
+} MMIOINFO16, *LPMMIOINFO16;
+
+typedef UINT16 (CALLBACK *YIELDPROC16)(UINT16,DWORD);
+
+UINT16		WINAPI auxGetNumDevs16(void);
+UINT16		WINAPI auxGetDevCaps16 (UINT16,LPAUXCAPS16,UINT16);
+UINT16		WINAPI auxSetVolume16(UINT16,DWORD);
+UINT16		WINAPI auxGetVolume16(UINT16,LPDWORD);
+DWORD		WINAPI auxOutMessage16(UINT16,UINT16,DWORD,DWORD);
+MMRESULT16	WINAPI timeGetSystemTime16(LPMMTIME16,UINT16);
+MMRESULT16	WINAPI timeSetEvent16(UINT16,UINT16,LPTIMECALLBACK16,DWORD,UINT16);
+MMRESULT16	WINAPI timeKillEvent16(UINT16);
+MMRESULT16	WINAPI timeGetDevCaps16(LPTIMECAPS16,UINT16);
+MMRESULT16	WINAPI timeBeginPeriod16(UINT16);
+MMRESULT16	WINAPI timeEndPeriod16(UINT16);
+MMRESULT16	WINAPI joyGetDevCaps16 (UINT16,LPJOYCAPS16,UINT16);
+UINT16		WINAPI joyGetNumDevs16(void);
+MMRESULT16	WINAPI joyGetPos16(UINT16,LPJOYINFO16);
+MMRESULT16	WINAPI joyGetPosEx16(UINT16,LPJOYINFOEX);
+MMRESULT16	WINAPI joyGetThreshold16(UINT16,UINT16*);
+MMRESULT16	WINAPI joyReleaseCapture16(UINT16);
+MMRESULT16	WINAPI joySetCapture16(HWND16,UINT16,UINT16,BOOL16);
+MMRESULT16	WINAPI joySetThreshold16(UINT16,UINT16);
+UINT16		WINAPI mixerGetNumDevs16(void);
+UINT16		WINAPI mixerOpen16(LPHMIXER16,UINT16,DWORD,DWORD,DWORD);
+UINT16		WINAPI mixerClose16(HMIXER16);
+DWORD		WINAPI mixerMessage16(HMIXER16,UINT16,DWORD,DWORD);
+UINT16		WINAPI mixerGetDevCaps16(UINT16,LPMIXERCAPS16,UINT16);
+UINT16		WINAPI mixerGetLineInfo16(HMIXEROBJ16,LPMIXERLINE16,DWORD);
+UINT16		WINAPI mixerGetID16(HMIXEROBJ16,LPUINT16,DWORD);
+UINT16		WINAPI mixerGetLineControls16(HMIXEROBJ16,LPMIXERLINECONTROLS16,DWORD);
+UINT16		WINAPI mixerGetControlDetails16(HMIXEROBJ16,LPMIXERCONTROLDETAILS16,DWORD);
+UINT16		WINAPI mixerSetControlDetails16(HMIXEROBJ16,LPMIXERCONTROLDETAILS16,DWORD);
+LPMMIOPROC16	WINAPI mmioInstallIOProc16(FOURCC,LPMMIOPROC16,DWORD);
+FOURCC 		WINAPI mmioStringToFOURCC16(LPCSTR,UINT16);
+HMMIO16		WINAPI mmioOpen16(LPSTR,MMIOINFO16*,DWORD);
+UINT16 		WINAPI mmioRename16(LPCSTR,LPCSTR,MMIOINFO16*,DWORD);
+MMRESULT16 	WINAPI mmioClose16(HMMIO16,UINT16);
+LONG 		WINAPI mmioRead16(HMMIO16,HPSTR,LONG);
+LONG 		WINAPI mmioWrite16(HMMIO16,HPCSTR,LONG);
+LONG 		WINAPI mmioSeek16(HMMIO16,LONG,INT16);
+MMRESULT16	WINAPI mmioGetInfo16(HMMIO16,MMIOINFO16*,UINT16);
+MMRESULT16 	WINAPI mmioSetInfo16(HMMIO16,const MMIOINFO16*,UINT16);
+UINT16 		WINAPI mmioSetBuffer16(HMMIO16,LPSTR,LONG,UINT16);
+UINT16 		WINAPI mmioFlush16(HMMIO16,UINT16);
+UINT16 		WINAPI mmioAdvance16(HMMIO16,MMIOINFO16*,UINT16);
+LRESULT		WINAPI mmioSendMessage16(HMMIO16,UINT16,LPARAM,LPARAM);
+UINT16		WINAPI mmioDescend16(HMMIO16,MMCKINFO*,const MMCKINFO*,UINT16);
+UINT16		WINAPI mmioAscend16(HMMIO16,MMCKINFO*,UINT16);
+UINT16		WINAPI mmioCreateChunk16(HMMIO16,MMCKINFO*,UINT16);
+DWORD		WINAPI mciSendCommand16(UINT16,UINT16,DWORD,DWORD);
+DWORD		WINAPI mciSendString16(LPCSTR,LPSTR,UINT16,HWND16);
+UINT16		WINAPI mciGetDeviceID16(LPCSTR);
+UINT16		WINAPI mciGetDeviceIDFromElementID16(DWORD,LPCSTR);
+BOOL16		WINAPI mciGetErrorString16 (DWORD,LPSTR,UINT16);
+BOOL16		WINAPI mciSetYieldProc16(UINT16,YIELDPROC16,DWORD);
+HTASK16		WINAPI mciGetCreatorTask16(UINT16);
+YIELDPROC16	WINAPI mciGetYieldProc16(UINT16,DWORD*);
+DWORD 		WINAPI mciGetDriverData16(UINT16 uDeviceID);
+BOOL16		WINAPI mciSetDriverData16(UINT16 uDeviceID, DWORD dwData);
+UINT16		WINAPI mciDriverYield16(UINT16 uDeviceID);
+BOOL16		WINAPI mciDriverNotify16(HWND16 hwndCallback, UINT16 uDeviceID,
+					  UINT16 uStatus);
+UINT16		WINAPI mciLoadCommandResource16(HINSTANCE16 hInstance,
+					 LPCSTR lpResName, UINT16 uType);
+BOOL16		WINAPI mciFreeCommandResource16(UINT16 uTable);
+
+HINSTANCE16	WINAPI mmTaskCreate16(SEGPTR spProc, HINSTANCE16 *lphMmTask, DWORD dwPmt);
+void    	WINAPI mmTaskBlock16(HINSTANCE16 hInst);
+LRESULT 	WINAPI mmTaskSignal16(HTASK16 ht);
+void    	WINAPI mmTaskYield16(void);
+LRESULT 	WINAPI mmThreadCreate16(FARPROC16 fpThreadAddr, LPHANDLE16 lpHndl,
+					 DWORD dwPmt, DWORD dwFlags);
+void 		WINAPI mmThreadSignal16(HANDLE16 hndl);
+void    	WINAPI mmThreadBlock16(HANDLE16 hndl);
+HANDLE16 	WINAPI mmThreadGetTask16(HANDLE16 hndl);
+BOOL16   	WINAPI mmThreadIsValid16(HANDLE16 hndl);
+BOOL16  	WINAPI mmThreadIsCurrent16(HANDLE16 hndl);
+
+BOOL16		WINAPI DriverCallback16(DWORD dwCallBack, UINT16 uFlags, HANDLE16 hDev,
+					 WORD wMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2);
+
+typedef struct {
+    DWORD	dwCallback;
+    WORD	wDeviceID;
+    WORD	wReserved0;
+    SEGPTR	lpstrDeviceType;
+    SEGPTR	lpstrElementName;
+    SEGPTR	lpstrAlias;
+} MCI_OPEN_PARMS16, *LPMCI_OPEN_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    SEGPTR  lpstrReturn;
+    DWORD   dwRetSize;
+} MCI_INFO_PARMS16, *LPMCI_INFO_PARMS16;
+
+typedef struct {
+    DWORD	dwCallback;
+    SEGPTR	lpstrReturn;
+    DWORD	dwRetSize;
+    DWORD	dwNumber;
+    WORD	wDeviceType;
+    WORD	wReserved0;
+} MCI_SYSINFO_PARMS16, *LPMCI_SYSINFO_PARMS16;
+
+typedef struct {
+    DWORD	dwCallback;
+    UINT16	nVirtKey;
+    WORD	wReserved0;
+    HWND16	hwndBreak;
+    WORD	wReserved1;
+} MCI_BREAK_PARMS16, *LPMCI_BREAK_PARMS16;
+
+typedef struct {
+    DWORD	dwCallback;
+    LPCSTR	lpfilename;
+} MCI_LOAD_PARMS16, *LPMCI_LOAD_PARMS16;
+
+typedef struct {
+    DWORD	dwCallback;
+    SEGPTR      lpstrSoundName;
+} MCI_SOUND_PARMS16, *LPMCI_SOUND_PARMS16;
+
+typedef struct {
+    DWORD	dwCallback;
+    SEGPTR	lpstrCommand;
+} MCI_VD_ESCAPE_PARMS16, *LPMCI_VD_ESCAPE_PARMS16;
+
+typedef struct {
+    UINT16			wDeviceID;		/* device ID */
+    SEGPTR			lpstrParams;		/* parameter string for entry in SYSTEM.INI */
+    UINT16			wCustomCommandTable;	/* custom command table (0xFFFF if none)
+							 * filled in by the driver */
+    UINT16			wType;			/* driver type (filled in by the driver) */
+} MCI_OPEN_DRIVER_PARMS16, *LPMCI_OPEN_DRIVER_PARMS16;
+
+typedef struct {
+    DWORD		dwCallback;
+    MCIDEVICEID16	wDeviceID;
+    WORD		wReserved0;
+    SEGPTR		lpstrDeviceType;
+    SEGPTR		lpstrElementName;
+    SEGPTR		lpstrAlias;
+    DWORD		dwBufferSeconds;
+} MCI_WAVE_OPEN_PARMS16, *LPMCI_WAVE_OPEN_PARMS16;
+
+typedef struct {
+    DWORD	dwCallback;
+    DWORD	dwTimeFormat;
+    DWORD	dwAudio;
+    UINT16	wInput;
+    UINT16	wReserved0;
+    UINT16	wOutput;
+    UINT16	wReserved1;
+    UINT16	wFormatTag;
+    UINT16	wReserved2;
+    UINT16	nChannels;
+    UINT16	wReserved3;
+    DWORD	nSamplesPerSec;
+    DWORD	nAvgBytesPerSec;
+    UINT16	nBlockAlign;
+    UINT16	wReserved4;
+    UINT16	wBitsPerSample;
+    UINT16	wReserved5;
+} MCI_WAVE_SET_PARMS16, * LPMCI_WAVE_SET_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    UINT16  wDeviceID;
+    UINT16  wReserved0;
+    SEGPTR  lpstrDeviceType;
+    SEGPTR  lpstrElementName;
+    SEGPTR  lpstrAlias;
+    DWORD   dwStyle;
+    HWND16  hWndParent;
+    UINT16  wReserved1;
+} MCI_ANIM_OPEN_PARMS16, *LPMCI_ANIM_OPEN_PARMS16;
+
+typedef struct {
+    DWORD	dwCallback;
+    HWND16	hWnd;
+    WORD	wReserved1;
+    WORD	nCmdShow;
+    WORD	wReserved2;
+    LPCSTR	lpstrText;
+} MCI_ANIM_WINDOW_PARMS16, *LPMCI_ANIM_WINDOW_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+#ifdef MCI_USE_OFFEXT
+    POINT16 ptOffset;
+    POINT16 ptExtent;
+#else   /* ifdef MCI_USE_OFFEXT */
+    RECT16  rc;
+#endif  /* ifdef MCI_USE_OFFEXT */
+} MCI_ANIM_RECT_PARMS16, *LPMCI_ANIM_RECT_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    RECT16  rc;
+    HDC16   hDC;
+} MCI_ANIM_UPDATE_PARMS16, *LPMCI_ANIM_UPDATE_PARMS16;
+
+typedef struct {
+    DWORD		dwCallback;
+    MCIDEVICEID16	wDeviceID;
+    WORD		wReserved0;
+    LPCSTR		lpstrDeviceType;
+    LPCSTR		lpstrElementName;
+    LPCSTR		lpstrAlias;
+    DWORD		dwStyle;
+    HWND16		hWndParent;
+    WORD		wReserved1;
+} MCI_OVLY_OPEN_PARMS16, *LPMCI_OVLY_OPEN_PARMS16;
+
+typedef struct {
+    DWORD	dwCallback;
+    HWND16	hWnd;
+    WORD	wReserved1;
+    UINT16	nCmdShow;
+    WORD	wReserved2;
+    LPCSTR	lpstrText;
+} MCI_OVLY_WINDOW_PARMS16, *LPMCI_OVLY_WINDOW_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+#ifdef MCI_USE_OFFEXT
+    POINT16 ptOffset;
+    POINT16 ptExtent;
+#else   /* ifdef MCI_USE_OFFEXT */
+    RECT16  rc;
+#endif  /* ifdef MCI_USE_OFFEXT */
+} MCI_OVLY_RECT_PARMS16, *LPMCI_OVLY_RECT_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    LPCSTR  lpfilename;
+    RECT16  rc;
+} MCI_OVLY_SAVE_PARMS16, *LPMCI_OVLY_SAVE_PARMS16;
+
+typedef struct {
+    DWORD	dwCallback;
+    LPCSTR	lpfilename;
+    RECT16	rc;
+} MCI_OVLY_LOAD_PARMS16, *LPMCI_OVLY_LOAD_PARMS16;
+
+/* from digitalv / 16 bit */
+typedef struct {
+    DWORD   dwCallback;
+    RECT16  rc;
+} MCI_DGV_RECT_PARMS16, *LPMCI_DGV_RECT_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    LPSTR   lpstrFileName;
+    RECT16  rc;
+} MCI_DGV_CAPTURE_PARMS16, *LPMCI_DGV_CAPTURE_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwFrom;
+    DWORD   dwTo;
+    RECT16  rc;
+    DWORD   dwAudioStream;
+    DWORD   dwVideoStream;
+} MCI_DGV_COPY_PARMS16, *LPMCI_DGV_COPY_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwFrom;
+    DWORD   dwTo;
+    RECT16  rc;
+    DWORD   dwAudioStream;
+    DWORD   dwVideoStream;
+} MCI_DGV_CUT_PARMS16, * LPMCI_DGV_CUT_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwFrom;
+    DWORD   dwTo;
+    RECT16  rc;
+    DWORD   dwAudioStream;
+    DWORD   dwVideoStream;
+} MCI_DGV_DELETE_PARMS16, * LPMCI_DGV_DELETE_PARMS16;
+
+typedef MCI_DGV_RECT_PARMS16 MCI_DGV_FREEZE_PARMS16, * LPMCI_DGV_FREEZE_PARMS16;
+
+typedef struct  {
+    DWORD   dwCallback;
+    LPSTR   lpstrReturn;
+    DWORD   dwRetSize;
+    DWORD   dwItem;
+} MCI_DGV_INFO_PARMS16, * LPMCI_DGV_INFO_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    LPSTR   lpstrReturn;
+    DWORD   dwLength;
+    DWORD   dwNumber;
+    DWORD   dwItem;
+    LPSTR   lpstrAlgorithm;
+} MCI_DGV_LIST_PARMS16, *LPMCI_DGV_LIST_PARMS16;
+
+typedef MCI_LOAD_PARMS16  MCI_DGV_LOAD_PARMS16 , * LPMCI_DGV_LOAD_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    UINT16  wDeviceID;
+    UINT16  wReserved0;
+    LPSTR   lpstrDeviceType;
+    LPSTR   lpstrElementName;
+    LPSTR   lpstrAlias;
+    DWORD   dwStyle;
+    HWND16  hWndParent;
+    UINT16  wReserved1;
+} MCI_DGV_OPEN_PARMS16, *LPMCI_DGV_OPEN_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwTo;
+    RECT16  rc;
+    DWORD   dwAudioStream;
+    DWORD   dwVideoStream;
+} MCI_DGV_PASTE_PARMS16, * LPMCI_DGV_PASTE_PARMS16;
+
+typedef MCI_DGV_RECT_PARMS16 MCI_DGV_PUT_PARMS16, * LPMCI_DGV_PUT_PARMS16;
+
+typedef struct {
+    DWORD       dwCallback;
+    DWORD       dwItem;
+    LPSTR       lpstrName;
+    DWORD       lpstrAlgorithm;
+    DWORD       dwHandle;
+} MCI_DGV_QUALITY_PARMS16, *LPMCI_DGV_QUALITY_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwFrom;
+    DWORD   dwTo;
+    RECT16  rc;
+    DWORD   dwAudioStream;
+    DWORD   dwVideoStream;
+} MCI_DGV_RECORD_PARMS16, * LPMCI_DGV_RECORD_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    LPSTR   lpstrPath;
+    DWORD   dwSize;
+} MCI_DGV_RESERVE_PARMS16, *LPMCI_DGV_RESERVE_PARMS16A;
+
+typedef struct {
+    DWORD   dwCallback;
+    LPSTR   lpstrFileName;
+    RECT16  rc;
+} MCI_DGV_RESTORE_PARMS16, *LPMCI_DGV_RESTORE_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    LPSTR   lpstrFileName;
+    RECT16  rc;
+} MCI_DGV_SAVE_PARMS16, *LPMCI_DGV_SAVE_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwItem;
+    DWORD   dwValue;
+    DWORD   dwOver;
+    LPSTR   lpstrAlgorithm;
+    LPSTR   lpstrQuality;
+} MCI_DGV_SETAUDIO_PARMS16, *LPMCI_DGV_SETAUDIO_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwItem;
+    DWORD   dwValue;
+    DWORD   dwOver;
+    LPSTR   lpstrAlgorithm;
+    LPSTR   lpstrQuality;
+    DWORD   dwSourceNumber;
+} MCI_DGV_SETVIDEO_PARMS16, *LPMCI_DGV_SETVIDEO_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwReturn;
+    DWORD   dwItem;
+    DWORD   dwTrack;
+    SEGPTR  lpstrDrive;
+    DWORD   dwReference;
+} MCI_DGV_STATUS_PARMS16, *LPMCI_DGV_STATUS_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    RECT16  rc;
+    HDC16   hDC;
+    UINT16  wReserved0;
+} MCI_DGV_UPDATE_PARMS16, * LPMCI_DGV_UPDATE_PARMS16;
+
+typedef MCI_DGV_RECT_PARMS16 MCI_DGV_UNFREEZE_PARMS16, * LPMCI_DGV_UNFREEZE_PARMS16;
+
+typedef MCI_DGV_RECT_PARMS16 MCI_DGV_WHERE_PARMS16, * LPMCI_DGV_WHERE_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    HWND16  hWnd;
+    UINT16  wReserved1;
+    UINT16  nCmdShow;
+    UINT16  wReserved2;
+    LPSTR   lpstrText;
+} MCI_DGV_WINDOW_PARMS16, *LPMCI_DGV_WINDOW_PARMS16;
+
+#include <poppack.h>
+
+#endif  /* __WINE_WINE_MMSYSTEM16_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/mscvpdb.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/mscvpdb.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/mscvpdb.h	(revision 16410)
@@ -0,0 +1,2047 @@
+/*
+ * MS debug information definitions.
+ *
+ * Copyright (C) 1996 Eric Youngdale
+ * Copyright (C) 1999-2000 Ulrich Weigand
+ * Copyright (C) 2004 Eric Pouech
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/* MS has stored all its debug information in a set of structures
+ * which has been rather consistent across the years (ie you can grasp
+ * some continuity, and not so many drastic changes).
+ *
+ * A bit of history on the various formats
+ *      MSVC 1.0        PDB v1 (new format for debug info)
+ *      MSVC 2.0        Inclusion in link of debug info (PDB v2)
+ *      MSVC 5.0        Types are 24 bits (instead of 16 for <= 4.x)
+ *      MSVC x.0        PDB (change in internal streams layout)
+ *
+ *      .DBG            Contains COFF, FPO and Codeview info
+ *      .PDB            New format for debug info (information is
+ *                      derived from Codeview information)
+ *      VCx0.PDB        x major MSVC number, stores types, while
+ *                      <project>.PDB stores symbols.
+ *
+ * Debug information can either be found in the debug section of a PE
+ * module (in something close to a .DBG file), or the debug section
+ * can actually refer to an external file, which can be in turn,
+ * either a .DBG or .PDB file.
+ *
+ * Regarding PDB files:
+ * -------------------
+ * They are implemented as a set of internal files (as a small file
+ * system). The file is split into blocks, an internal file is made
+ * of a set of blocks. Internal files are accessed through
+ * numbers. For example,
+ * 1/ is the ROOT (basic information on the file)
+ * 2/ is the Symbol information (global symbols, local variables...)
+ * 3/ is the Type internal file (each the symbols can have type
+ * information associated with it).
+ *
+ * Over the years, three formats existed for the PDB:
+ * - ?? was rather linked to 16 bit code (our support shall be rather
+ *   bad)
+ * - JG: it's the signature embedded in the file header. This format
+ *   has been used in MSVC 2.0 => 5.0.
+ * - DS: it's the signature embedded in the file header. It's the
+ *   current format supported my MS.
+ *
+ * Types internal stream
+ * ---------------------
+ * Types (from the Type internal file) have existed in three flavors
+ * (note that those flavors came as historical evolution, but there
+ * isn't a one to one link between types evolution and PDB formats'
+ * evolutions:
+ * - the first flavor (suffixed by V1 in this file), where the types
+ *   and subtypes are 16 bit entities; and where strings are in Pascal
+ *   format (first char is their length and are not 0 terminated)
+ * - the second flavor (suffixed by V2) differs from first flavor with
+ *   types and subtypes as 32 bit entities. This forced some
+ *   reordering of fields in some types
+ * - the third flavor (suffixed by V3) differs from second flavor with
+ *   strings stored as C strings (ie are 0 terminated, instead of
+ *   length prefixed)
+ * The different flavors can coexist in the same file (is this really
+ * true ??)
+ *
+ * For the evolution of types, the need of the second flavor was the
+ * number of types to be defined (limited to 0xFFFF, including the C
+ * basic types); the need of the third flavor is the increase of
+ * symbol size (to be greater than 256), which was likely needed for
+ * complex C++ types (nested + templates).
+ *
+ * It's somehow difficult to represent the layout of those types on
+ * disk because:
+ * - some integral values are stored as numeric leaf, which size is
+ *   variable depending on its value
+ *
+ * Symbols internal stream
+ * -----------------------
+ * Here also we find three flavors (that we've suffixed with _V1, _V2
+ * and _V3) even if their evolution is closer to the evolution of
+ * types, they are not completely linked together.
+ */
+
+#include "pshpack1.h"
+
+/* ======================================== *
+ *             Type information
+ * ======================================== */
+
+struct p_string
+{
+    unsigned char               namelen;
+    char                        name[1];
+};
+
+union codeview_type
+{
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+    } generic;
+
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+        short int               attribute;
+        short int               type;
+    } modifier_v1;
+
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+        int                     type;
+        short int               attribute;
+    } modifier_v2;
+
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+        short int               attribute;
+        short int               datatype;
+        struct p_string         p_name;
+    } pointer_v1;
+
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+        unsigned int            datatype;
+        unsigned int            attribute;
+        struct p_string         p_name;
+    } pointer_v2;
+
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+        short int               elemtype;
+        short int               idxtype;
+        unsigned short int      arrlen;     /* numeric leaf */
+#if 0
+        struct p_string         p_name;
+#endif
+    } array_v1;
+
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+        unsigned int            elemtype;
+        unsigned int            idxtype;
+        unsigned short int      arrlen;    /* numeric leaf */
+#if 0
+        struct p_string         p_name;
+#endif
+    } array_v2;
+
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+        unsigned int            elemtype;
+        unsigned int            idxtype;
+        unsigned short int      arrlen;    /* numeric leaf */
+#if 0
+        char                    name[1];
+#endif
+    } array_v3;
+
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+        short int               n_element;
+        short int               fieldlist;
+        short int               property;
+        short int               derived;
+        short int               vshape;
+        unsigned short int      structlen;  /* numeric leaf */
+#if 0
+        struct p_string         p_name;
+#endif
+    } struct_v1;
+
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+        short int               n_element;
+        short int               property;
+        unsigned int            fieldlist;
+        unsigned int            derived;
+        unsigned int            vshape;
+        unsigned short int      structlen;  /* numeric leaf */
+#if 0
+        struct p_string         p_name;
+#endif
+    } struct_v2;
+
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+        short int               n_element;
+        short int               property;
+        unsigned int            fieldlist;
+        unsigned int            derived;
+        unsigned int            vshape;
+        unsigned short int      structlen;  /* numeric leaf */
+#if 0
+        char                    name[1];
+#endif
+    } struct_v3;
+
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+        short int               count;
+        short int               fieldlist;
+        short int               property;
+        unsigned short int      un_len;     /* numeric leaf */
+#if 0
+        struct p_string         p_name;
+#endif
+    } union_v1;
+
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+        short int               count;
+        short int               property;
+        unsigned int            fieldlist;
+        unsigned short int      un_len;     /* numeric leaf */
+#if 0
+        struct p_string         p_name;
+#endif
+    } union_v2;
+
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+        short int               count;
+        short int               property;
+        unsigned int            fieldlist;
+        unsigned short int      un_len;     /* numeric leaf */
+#if 0
+        char                    name[1];
+#endif
+    } union_v3;
+
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+        short int               count;
+        short int               type;
+        short int               fieldlist;
+        short int               property;
+        struct p_string         p_name;
+    } enumeration_v1;
+
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+        short int               count;
+        short int               property;
+        unsigned int            type;
+        unsigned int            fieldlist;
+        struct p_string         p_name;
+    } enumeration_v2;
+
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+        short int               count;
+        short int               property;
+        unsigned int            type;
+        unsigned int            fieldlist;
+        char                    name[1];
+    } enumeration_v3;
+
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+        unsigned short int      rvtype;
+        unsigned char           call;
+        unsigned char           reserved;
+        unsigned short int      params;
+        unsigned short int      arglist;
+    } procedure_v1;
+
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+        unsigned int            rvtype;
+        unsigned char           call;
+        unsigned char           reserved;
+        unsigned short int      params;
+        unsigned int            arglist;
+    } procedure_v2;
+
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+        unsigned short int      rvtype;
+        unsigned short int      class_type;
+        unsigned short int      this_type;
+        unsigned char           call;
+        unsigned char           reserved;
+        unsigned short int      params;
+        unsigned short int      arglist;
+        unsigned int            this_adjust;
+    } mfunction_v1;
+
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+        unsigned int            rvtype;
+        unsigned int            class_type;
+        unsigned                this_type;
+        unsigned char           call;
+        unsigned char           reserved;
+        unsigned short          params;
+        unsigned int            arglist;
+        unsigned int            this_adjust;
+    } mfunction_v2;
+};
+
+union codeview_reftype
+{
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+    } generic;
+
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+        unsigned char           list[1];
+    } fieldlist;
+
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+        unsigned char           nbits;
+        unsigned char           bitoff;
+        unsigned short          type;
+    } bitfield_v1;
+
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+        unsigned int            type;
+        unsigned char           nbits;
+        unsigned char           bitoff;
+    } bitfield_v2;
+
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+        unsigned short          num;
+        unsigned short          args[1];
+    } arglist_v1;
+
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+        unsigned                num;
+        unsigned                args[1];
+    } arglist_v2;
+
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+        unsigned short          num;
+        unsigned short          drvdcls[1];
+    } derived_v1;
+
+    struct
+    {
+        unsigned short int      len;
+        short int               id;
+        unsigned                num;
+        unsigned                drvdcls[1];
+    } derived_v2;
+};
+
+union codeview_fieldtype
+{
+    struct
+    {
+        short int		id;
+    } generic;
+
+    struct
+    {
+        short int		id;
+        short int		type;
+        short int		attribute;
+        unsigned short int	offset;     /* numeric leaf */
+    } bclass_v1;
+
+    struct
+    {
+        short int		id;
+        short int		attribute;
+        unsigned int	        type;
+        unsigned short int	offset;     /* numeric leaf */
+    } bclass_v2;
+
+    struct
+    {
+        short int		id;
+        short int		btype;
+        short int		vbtype;
+        short int		attribute;
+        unsigned short int	vbpoff;     /* numeric leaf */
+#if 0
+        unsigned short int	vboff;      /* numeric leaf */
+#endif
+    } vbclass_v1;
+
+    struct
+    {
+        short int		id;
+        short int		attribute;
+        unsigned int	        btype;
+        unsigned int	        vbtype;
+        unsigned short int	vbpoff;     /* numeric leaf */
+#if 0
+        unsigned short int	vboff;      /* numeric leaf */
+#endif
+    } vbclass_v2;
+
+    struct
+    {
+        short int		id;
+        short int		attribute;
+        unsigned short int	value;     /* numeric leaf */
+#if 0
+        struct p_string         p_name;
+#endif
+    } enumerate_v1;
+
+   struct
+    {
+        short int               id;
+        short int               attribute;
+        unsigned short int      value;     /* numeric leaf */
+#if 0
+        char                    name[1];
+#endif
+    } enumerate_v3;
+
+    struct
+    {
+        short int		id;
+        short int		type;
+        struct p_string         p_name;
+    } friendfcn_v1;
+
+    struct
+    {
+        short int		id;
+        short int		_pad0;
+        unsigned int	        type;
+        struct p_string         p_name;
+    } friendfcn_v2;
+
+    struct
+    {
+        short int		id;
+        short int		type;
+        short int		attribute;
+        unsigned short int	offset;    /* numeric leaf */
+#if 0
+        struct p_string         p_name;
+#endif
+    } member_v1;
+
+    struct
+    {
+        short int		id;
+        short int		attribute;
+        unsigned int	        type;
+        unsigned short int	offset;    /* numeric leaf */
+#if 0
+        struct p_string         p_name;
+#endif
+    } member_v2;
+
+    struct
+    {
+        short int               id;
+        short int               attribute;
+        unsigned int            type;
+        unsigned short int      offset; /* numeric leaf */
+#if 0
+        unsigned char           name[1];
+#endif
+    }
+    member_v3;
+
+    struct
+    {
+        short int		id;
+        short int		type;
+        short int		attribute;
+        struct p_string         p_name;
+    } stmember_v1;
+
+    struct
+    {
+        short int		id;
+        short int		attribute;
+        unsigned int	        type;
+        struct p_string         p_name;
+    } stmember_v2;
+
+    struct
+    {
+        short int		id;
+        short int		attribute;
+        unsigned int	        type;
+        char                    name[1];
+    } stmember_v3;
+
+    struct
+    {
+        short int		id;
+        short int		count;
+        short int		mlist;
+        struct p_string         p_name;
+    } method_v1;
+
+    struct
+    {
+        short int		id;
+        short int		count;
+        unsigned int	        mlist;
+        struct p_string         p_name;
+    } method_v2;
+
+    struct
+    {
+        short int		id;
+        short int		count;
+        unsigned int	        mlist;
+        char                    name[1];
+    } method_v3;
+
+    struct
+    {
+        short int		id;
+        short int		type;
+        struct p_string         p_name;
+    } nesttype_v1;
+
+    struct
+    {
+        short int		id;
+        short int		_pad0;
+        unsigned int	        type;
+        struct p_string         p_name;
+    } nesttype_v2;
+
+    struct
+    {
+        short int		id;
+        short int		_pad0;
+        unsigned int	        type;
+        char                    name[1];
+    } nesttype_v3;
+
+    struct
+    {
+        short int		id;
+        short int		type;
+    } vfunctab_v1;
+
+    struct
+    {
+        short int		id;
+        short int		_pad0;
+        unsigned int	        type;
+    } vfunctab_v2;
+
+    struct
+    {
+        short int		id;
+        short int		type;
+    } friendcls_v1;
+
+    struct
+    {
+        short int		id;
+        short int		_pad0;
+        unsigned int	        type;
+    } friendcls_v2;
+
+    struct
+    {
+        short int		id;
+        short int		attribute;
+        short int		type;
+        struct p_string         p_name;
+    } onemethod_v1;
+
+    struct
+    {
+        short int		id;
+        short int		attribute;
+        unsigned int 	        type;
+        struct p_string         p_name;
+    } onemethod_v2;
+
+    struct
+    {
+        short int		id;
+        short int		attribute;
+        unsigned int 	        type;
+        char                    name[1];
+    } onemethod_v3;
+
+    struct
+    {
+        short int		id;
+        short int		attribute;
+        short int		type;
+        unsigned int	        vtab_offset;
+        struct p_string         p_name;
+    } onemethod_virt_v1;
+
+    struct
+    {
+        short int		id;
+        short int		attribute;
+        unsigned int	        type;
+        unsigned int	        vtab_offset;
+        struct p_string         p_name;
+    } onemethod_virt_v2;
+
+    struct
+    {
+        short int		id;
+        short int		attribute;
+        unsigned int	        type;
+        unsigned int	        vtab_offset;
+        char                    name[1];
+    } onemethod_virt_v3;
+
+    struct
+    {
+        short int		id;
+        short int		type;
+        unsigned int	        offset;
+    } vfuncoff_v1;
+
+    struct
+    {
+        short int		id;
+        short int		_pad0;
+        unsigned int	        type;
+        unsigned int	        offset;
+    } vfuncoff_v2;
+
+    struct
+    {
+        short int		id;
+        short int		attribute;
+        short int		type;
+        struct p_string         p_name;
+    } nesttypeex_v1;
+
+    struct
+    {
+        short int		id;
+        short int		attribute;
+        unsigned int	        type;
+        struct p_string         p_name;
+    } nesttypeex_v2;
+
+    struct
+    {
+        short int		id;
+        short int		attribute;
+        unsigned int	        type;
+        struct p_string         p_name;
+    } membermodify_v2;
+
+};
+
+
+/*
+ * This covers the basic datatypes that VC++ seems to be using these days.
+ * 32 bit mode only.  There are additional numbers for the pointers in 16
+ * bit mode.  There are many other types listed in the documents, but these
+ * are apparently not used by the compiler, or represent pointer types
+ * that are not used.
+ *
+ * Official MS documentation says that type (< 0x4000, so 12 bits) is made of:
+ *        +----------+------+------+----------+------+
+ *        |    11    | 10-8 | 7-4  |     3    | 2-0  |
+ *        +----------+------+------+----------+------+
+ *        | reserved | mode | type | reserved | size |
+ *        +----------+------+------+----------+------+
+ * In recent PDB files, type 8 exists, and is seen as an HRESULT... So we've
+ * added this basic type... as if bit 3 had been integrated into the size field
+ */
+
+/* the type number of a built-in type is a 16-bit value specified in the following format:
+    bit #   |   11     |   10-8   |   7-4    |    3     |    2-0   |
+    field   | reserved |   mode   |   type   | reserved |   size   |
+
+    where
+        <type> is one of the following types:
+                0x00 Special
+                0x01 Signed integral value
+                0x02 Unsigned integral value
+                0x03 Boolean
+                0x04 Real
+                0x05 Complex
+                0x06 Special2
+                0x07 Real int value
+                0x08 Reserved
+                0x09 Reserved
+                0x0a Reserved
+                0x0b Reserved
+                0x0c Reserved
+                0x0d Reserved
+                0x0e Reserved
+                0x0f Reserved for debugger expression evaluator
+
+        <size> is an enumerated value for each of the types.
+                Type = special
+                    0x00 No type
+                    0x01 Absolute symbol
+                    0x02 Segment
+                    0x03 Void
+                    0x04 Basic 8-byte currency value
+                    0x05 Near Basic string
+                    0x06 Far Basic string
+                    0x07 Untranslated type from previous Microsoft symbol formats
+                Type = signed/unsigned integral and Boolean values
+                    0x00 1 byte
+                    0x01 2 byte
+                    0x02 4 byte
+                    0x03 8 byte
+                    0x04 Reserved
+                    0x05 Reserved
+                    0x06 Reserved
+                    0x07 Reserved
+                Type = real and complex
+                    0x00 32 bit
+                    0x01 64 bit
+                    0x02 80 bit
+                    0x03 128 bit
+                    0x04 48 bit
+                    0x05 Reserved
+                    0x06 Reserved
+                    0x07 Reserved
+                Type = special2
+                    0x00 Bit
+                    0x01 Pascal CHAR
+                Type = Real int
+                    0x00 Char
+                    0x01 Wide character
+                    0x02 2-byte signed integer
+                    0x03 2-byte unsigned integer
+                    0x04 4-byte signed integer
+                    0x05 4-byte unsigned integer
+                    0x06 8-byte signed integer
+                    0x07 8-byte unsigned integer
+
+            <mode> is the pointer mode:
+                0x00 Direct; not a pointer
+                0x01 Near pointer
+                0x02 Far pointer
+                0x03 Huge pointer
+                0x04 32-bit near pointer
+                0x05 32-bit far pointer
+                0x06 64-bit near pointer
+                0x07 Reserved
+*/
+
+/* basic types */
+#define T_NOTYPE            0x0000  /* Notype */
+#define T_ABS               0x0001  /* Abs */
+#define T_SEGMENT           0x0002  /* segment type */
+#define T_VOID              0x0003  /* Void */
+#define T_CURRENCY          0x0004  /* basic 8-byte currency value */
+#define T_NBASICSTR         0x0005  /* near basic string */
+#define T_FBASICSTR         0x0006  /* far basic string */
+#define T_NOTTRANS          0x0007  /* untranslated type record from MS symbol format */
+#define T_HRESULT           0x0008  /* HRESULT - or error code ??? */
+#define T_CHAR              0x0010  /* signed char */
+#define T_SHORT             0x0011  /* short */
+#define T_LONG              0x0012  /* long */
+#define T_QUAD              0x0013  /* long long */
+#define T_UCHAR             0x0020  /* unsigned  char */
+#define T_USHORT            0x0021  /* unsigned short */
+#define T_ULONG             0x0022  /* unsigned long */
+#define T_UQUAD             0x0023  /* unsigned long long */
+#define T_BOOL08            0x0030  /* 8-bit boolean */
+#define T_BOOL16            0x0031  /* 16-bit boolean */
+#define T_BOOL32            0x0032  /* 32-bit boolean */
+#define T_BOOL64            0x0033  /* 64-bit boolean */
+#define T_REAL32            0x0040  /* float */
+#define T_REAL64            0x0041  /* double */
+#define T_REAL80            0x0042  /* 80-bit real */
+#define T_REAL128           0x0043  /* 128-bit real */
+#define T_REAL48            0x0044  /* 48-bit real */
+#define T_CPLX32            0x0050  /* 32-bit complex number */
+#define T_CPLX64            0x0051  /* 64-bit complex number */
+#define T_CPLX80            0x0052  /* 80-bit complex number */
+#define T_CPLX128           0x0053  /* 128-bit complex number */
+#define T_BIT               0x0060  /* bit */
+#define T_PASCHAR           0x0061  /* pascal CHAR */
+#define T_RCHAR             0x0070  /* real char */
+#define T_WCHAR             0x0071  /* wide char */
+#define T_INT2              0x0072  /* real 16-bit signed int */
+#define T_UINT2             0x0073  /* real 16-bit unsigned int */
+#define T_INT4              0x0074  /* int */
+#define T_UINT4             0x0075  /* unsigned int */
+#define T_INT8              0x0076  /* 64-bit signed int */
+#define T_UINT8             0x0077  /* 64-bit unsigned int */
+
+
+/* near pointers to basic types */
+#define T_PVOID             0x0103  /* near pointer to void */
+#define T_PCHAR             0x0110  /* Near pointer to 8-bit signed */
+#define T_PSHORT            0x0111  /* Near pointer to 16-bit signed */
+#define T_PLONG             0x0112  /* Near pointer to 32-bit signed */
+#define T_PQUAD             0x0113  /* Near pointer to 64-bit signed */
+#define T_PUCHAR            0x0120  /* Near pointer to 8-bit unsigned */
+#define T_PUSHORT           0x0121  /* Near pointer to 16-bit unsigned */
+#define T_PULONG            0x0122  /* Near pointer to 32-bit unsigned */
+#define T_PUQUAD            0x0123  /* Near pointer to 64-bit unsigned */
+#define T_PBOOL08           0x0130  /* Near pointer to 8-bit Boolean */
+#define T_PBOOL16           0x0131  /* Near pointer to 16-bit Boolean */
+#define T_PBOOL32           0x0132  /* Near pointer to 32-bit Boolean */
+#define T_PBOOL64           0x0133  /* Near pointer to 64-bit Boolean */
+#define T_PREAL32           0x0140  /* Near pointer to 32-bit real */
+#define T_PREAL64           0x0141  /* Near pointer to 64-bit real */
+#define T_PREAL80           0x0142  /* Near pointer to 80-bit real */
+#define T_PREAL128          0x0143  /* Near pointer to 128-bit real */
+#define T_PREAL48           0x0144  /* Near pointer to 48-bit real */
+#define T_PCPLX32           0x0150  /* Near pointer to 32-bit complex */
+#define T_PCPLX64           0x0151  /* Near pointer to 64-bit complex */
+#define T_PCPLX80           0x0152  /* Near pointer to 80-bit complex */
+#define T_PCPLX128          0x0153  /* Near pointer to 128-bit complex */
+#define T_PRCHAR            0x0170  /* Near pointer to a real char */
+#define T_PWCHAR            0x0171  /* Near pointer to a wide char */
+#define T_PINT2             0x0172  /* Near pointer to 16-bit signed int */
+#define T_PUINT2            0x0173  /* Near pointer to 16-bit unsigned int */
+#define T_PINT4             0x0174  /* Near pointer to 32-bit signed int */
+#define T_PUINT4            0x0175  /* Near pointer to 32-bit unsigned int */
+#define T_PINT8             0x0176  /* Near pointer to 64-bit signed int */
+#define T_PUINT8            0x0177  /* Near pointer to 64-bit unsigned int */
+
+
+/* far pointers to basic types */
+#define T_PFVOID            0x0203  /* Far pointer to void */
+#define T_PFCHAR            0x0210  /* Far pointer to 8-bit signed */
+#define T_PFSHORT           0x0211  /* Far pointer to 16-bit signed */
+#define T_PFLONG            0x0212  /* Far pointer to 32-bit signed */
+#define T_PFQUAD            0x0213  /* Far pointer to 64-bit signed */
+#define T_PFUCHAR           0x0220  /* Far pointer to 8-bit unsigned */
+#define T_PFUSHORT          0x0221  /* Far pointer to 16-bit unsigned */
+#define T_PFULONG           0x0222  /* Far pointer to 32-bit unsigned */
+#define T_PFUQUAD           0x0223  /* Far pointer to 64-bit unsigned */
+#define T_PFBOOL08          0x0230  /* Far pointer to 8-bit Boolean */
+#define T_PFBOOL16          0x0231  /* Far pointer to 16-bit Boolean */
+#define T_PFBOOL32          0x0232  /* Far pointer to 32-bit Boolean */
+#define T_PFBOOL64          0x0233  /* Far pointer to 64-bit Boolean */
+#define T_PFREAL32          0x0240  /* Far pointer to 32-bit real */
+#define T_PFREAL64          0x0241  /* Far pointer to 64-bit real */
+#define T_PFREAL80          0x0242  /* Far pointer to 80-bit real */
+#define T_PFREAL128         0x0243  /* Far pointer to 128-bit real */
+#define T_PFREAL48          0x0244  /* Far pointer to 48-bit real */
+#define T_PFCPLX32          0x0250  /* Far pointer to 32-bit complex */
+#define T_PFCPLX64          0x0251  /* Far pointer to 64-bit complex */
+#define T_PFCPLX80          0x0252  /* Far pointer to 80-bit complex */
+#define T_PFCPLX128         0x0253  /* Far pointer to 128-bit complex */
+#define T_PFRCHAR           0x0270  /* Far pointer to a real char */
+#define T_PFWCHAR           0x0271  /* Far pointer to a wide char */
+#define T_PFINT2            0x0272  /* Far pointer to 16-bit signed int */
+#define T_PFUINT2           0x0273  /* Far pointer to 16-bit unsigned int */
+#define T_PFINT4            0x0274  /* Far pointer to 32-bit signed int */
+#define T_PFUINT4           0x0275  /* Far pointer to 32-bit unsigned int */
+#define T_PFINT8            0x0276  /* Far pointer to 64-bit signed int */
+#define T_PFUINT8           0x0277  /* Far pointer to 64-bit unsigned int */
+
+
+/* huge pointers to basic types */
+#define T_PHVOID            0x0303  /* Huge pointer to void */
+#define T_PHCHAR            0x0310  /* Huge pointer to 8-bit signed */
+#define T_PHSHORT           0x0311  /* Huge pointer to 16-bit signed */
+#define T_PHLONG            0x0312  /* Huge pointer to 32-bit signed */
+#define T_PHQUAD            0x0313  /* Huge pointer to 64-bit signed */
+#define T_PHUCHAR           0x0320  /* Huge pointer to 8-bit unsigned */
+#define T_PHUSHORT          0x0321  /* Huge pointer to 16-bit unsigned */
+#define T_PHULONG           0x0322  /* Huge pointer to 32-bit unsigned */
+#define T_PHUQUAD           0x0323  /* Huge pointer to 64-bit unsigned */
+#define T_PHBOOL08          0x0330  /* Huge pointer to 8-bit Boolean */
+#define T_PHBOOL16          0x0331  /* Huge pointer to 16-bit Boolean */
+#define T_PHBOOL32          0x0332  /* Huge pointer to 32-bit Boolean */
+#define T_PHBOOL64          0x0333  /* Huge pointer to 64-bit Boolean */
+#define T_PHREAL32          0x0340  /* Huge pointer to 32-bit real */
+#define T_PHREAL64          0x0341  /* Huge pointer to 64-bit real */
+#define T_PHREAL80          0x0342  /* Huge pointer to 80-bit real */
+#define T_PHREAL128         0x0343  /* Huge pointer to 128-bit real */
+#define T_PHREAL48          0x0344  /* Huge pointer to 48-bit real */
+#define T_PHCPLX32          0x0350  /* Huge pointer to 32-bit complex */
+#define T_PHCPLX64          0x0351  /* Huge pointer to 64-bit complex */
+#define T_PHCPLX80          0x0352  /* Huge pointer to 80-bit complex */
+#define T_PHCPLX128         0x0353  /* Huge pointer to 128-bit real */
+#define T_PHRCHAR           0x0370  /* Huge pointer to a real char */
+#define T_PHWCHAR           0x0371  /* Huge pointer to a wide char */
+#define T_PHINT2            0x0372  /* Huge pointer to 16-bit signed int */
+#define T_PHUINT2           0x0373  /* Huge pointer to 16-bit unsigned int */
+#define T_PHINT4            0x0374  /* Huge pointer to 32-bit signed int */
+#define T_PHUINT4           0x0375  /* Huge pointer to 32-bit unsigned int */
+#define T_PHINT8            0x0376  /* Huge pointer to 64-bit signed int */
+#define T_PHUINT8           0x0377  /* Huge pointer to 64-bit unsigned int */
+
+
+/* 32-bit near pointers to basic types */
+#define T_32PVOID           0x0403  /* 32-bit near pointer to void */
+#define T_32PHRESULT        0x0408  /* 16:32 near pointer to HRESULT - or error code ??? */
+#define T_32PCHAR           0x0410  /* 16:32 near pointer to 8-bit signed */
+#define T_32PSHORT          0x0411  /* 16:32 near pointer to 16-bit signed */
+#define T_32PLONG           0x0412  /* 16:32 near pointer to 32-bit signed */
+#define T_32PQUAD           0x0413  /* 16:32 near pointer to 64-bit signed */
+#define T_32PUCHAR          0x0420  /* 16:32 near pointer to 8-bit unsigned */
+#define T_32PUSHORT         0x0421  /* 16:32 near pointer to 16-bit unsigned */
+#define T_32PULONG          0x0422  /* 16:32 near pointer to 32-bit unsigned */
+#define T_32PUQUAD          0x0423  /* 16:32 near pointer to 64-bit unsigned */
+#define T_32PBOOL08         0x0430  /* 16:32 near pointer to 8-bit Boolean */
+#define T_32PBOOL16         0x0431  /* 16:32 near pointer to 16-bit Boolean */
+#define T_32PBOOL32         0x0432  /* 16:32 near pointer to 32-bit Boolean */
+#define T_32PBOOL64         0x0433  /* 16:32 near pointer to 64-bit Boolean */
+#define T_32PREAL32         0x0440  /* 16:32 near pointer to 32-bit real */
+#define T_32PREAL64         0x0441  /* 16:32 near pointer to 64-bit real */
+#define T_32PREAL80         0x0442  /* 16:32 near pointer to 80-bit real */
+#define T_32PREAL128        0x0443  /* 16:32 near pointer to 128-bit real */
+#define T_32PREAL48         0x0444  /* 16:32 near pointer to 48-bit real */
+#define T_32PCPLX32         0x0450  /* 16:32 near pointer to 32-bit complex */
+#define T_32PCPLX64         0x0451  /* 16:32 near pointer to 64-bit complex */
+#define T_32PCPLX80         0x0452  /* 16:32 near pointer to 80-bit complex */
+#define T_32PCPLX128        0x0453  /* 16:32 near pointer to 128-bit complex */
+#define T_32PRCHAR          0x0470  /* 16:32 near pointer to a real char */
+#define T_32PWCHAR          0x0471  /* 16:32 near pointer to a wide char */
+#define T_32PINT2           0x0472  /* 16:32 near pointer to 16-bit signed int */
+#define T_32PUINT2          0x0473  /* 16:32 near pointer to 16-bit unsigned int */
+#define T_32PINT4           0x0474  /* 16:32 near pointer to 32-bit signed int */
+#define T_32PUINT4          0x0475  /* 16:32 near pointer to 32-bit unsigned int */
+#define T_32PINT8           0x0476  /* 16:32 near pointer to 64-bit signed int */
+#define T_32PUINT8          0x0477  /* 16:32 near pointer to 64-bit unsigned int */
+
+
+/* 32-bit far pointers to basic types */
+#define T_32PFVOID          0x0503  /* 32-bit far pointer to void */
+#define T_32PFCHAR          0x0510  /* 16:32 far pointer to 8-bit signed */
+#define T_32PFSHORT         0x0511  /* 16:32 far pointer to 16-bit signed */
+#define T_32PFLONG          0x0512  /* 16:32 far pointer to 32-bit signed */
+#define T_32PFQUAD          0x0513  /* 16:32 far pointer to 64-bit signed */
+#define T_32PFUCHAR         0x0520  /* 16:32 far pointer to 8-bit unsigned */
+#define T_32PFUSHORT        0x0521  /* 16:32 far pointer to 16-bit unsigned */
+#define T_32PFULONG         0x0522  /* 16:32 far pointer to 32-bit unsigned */
+#define T_32PFUQUAD         0x0523  /* 16:32 far pointer to 64-bit unsigned */
+#define T_32PFBOOL08        0x0530  /* 16:32 far pointer to 8-bit Boolean */
+#define T_32PFBOOL16        0x0531  /* 16:32 far pointer to 16-bit Boolean */
+#define T_32PFBOOL32        0x0532  /* 16:32 far pointer to 32-bit Boolean */
+#define T_32PFBOOL64        0x0533  /* 16:32 far pointer to 64-bit Boolean */
+#define T_32PFREAL32        0x0540  /* 16:32 far pointer to 32-bit real */
+#define T_32PFREAL64        0x0541  /* 16:32 far pointer to 64-bit real */
+#define T_32PFREAL80        0x0542  /* 16:32 far pointer to 80-bit real */
+#define T_32PFREAL128       0x0543  /* 16:32 far pointer to 128-bit real */
+#define T_32PFREAL48        0x0544  /* 16:32 far pointer to 48-bit real */
+#define T_32PFCPLX32        0x0550  /* 16:32 far pointer to 32-bit complex */
+#define T_32PFCPLX64        0x0551  /* 16:32 far pointer to 64-bit complex */
+#define T_32PFCPLX80        0x0552  /* 16:32 far pointer to 80-bit complex */
+#define T_32PFCPLX128       0x0553  /* 16:32 far pointer to 128-bit complex */
+#define T_32PFRCHAR         0x0570  /* 16:32 far pointer to a real char */
+#define T_32PFWCHAR         0x0571  /* 16:32 far pointer to a wide char */
+#define T_32PFINT2          0x0572  /* 16:32 far pointer to 16-bit signed int */
+#define T_32PFUINT2         0x0573  /* 16:32 far pointer to 16-bit unsigned int */
+#define T_32PFINT4          0x0574  /* 16:32 far pointer to 32-bit signed int */
+#define T_32PFUINT4         0x0575  /* 16:32 far pointer to 32-bit unsigned int */
+#define T_32PFINT8          0x0576  /* 16:32 far pointer to 64-bit signed int */
+#define T_32PFUINT8         0x0577  /* 16:32 far pointer to 64-bit unsigned int */
+
+
+/* counts, bit masks, and shift values needed to access various parts of the built-in type numbers */
+#define T_MAXPREDEFINEDTYPE 0x0580  /* maximum type index for all built-in types */
+#define T_MAXBASICTYPE      0x0080  /* maximum type index all non-pointer built-in types */
+#define T_BASICTYPE_MASK    0x00ff  /* mask of bits that can potentially identify a non-pointer basic type */
+#define T_BASICTYPE_SHIFT   8       /* shift count to push out the basic type bits from a type number */
+#define T_MODE_MASK         0x0700  /* type mode mask (ptr/non-ptr) */
+#define T_SIZE_MASK         0x0007  /* type size mask (depends on 'type' value) */
+#define T_TYPE_MASK         0x00f0  /* type type mask (data treatment mode) */
+
+/* bit patterns for the <mode> portion of a built-in type number */
+#define T_NEARPTR_BITS      0x0100
+#define T_FARPTR_BITS       0x0200
+#define T_HUGEPTR_BITS      0x0300
+#define T_NEAR32PTR_BITS    0x0400
+#define T_FAR32PTR_BITS     0x0500
+#define T_NEAR64PTR_BITS    0x0600
+
+#define LF_MODIFIER_V1          0x0001
+#define LF_POINTER_V1           0x0002
+#define LF_ARRAY_V1             0x0003
+#define LF_CLASS_V1             0x0004
+#define LF_STRUCTURE_V1         0x0005
+#define LF_UNION_V1             0x0006
+#define LF_ENUM_V1              0x0007
+#define LF_PROCEDURE_V1         0x0008
+#define LF_MFUNCTION_V1         0x0009
+#define LF_VTSHAPE_V1           0x000a
+#define LF_COBOL0_V1            0x000b
+#define LF_COBOL1_V1            0x000c
+#define LF_BARRAY_V1            0x000d
+#define LF_LABEL_V1             0x000e
+#define LF_NULL_V1              0x000f
+#define LF_NOTTRAN_V1           0x0010
+#define LF_DIMARRAY_V1          0x0011
+#define LF_VFTPATH_V1           0x0012
+#define LF_PRECOMP_V1           0x0013
+#define LF_ENDPRECOMP_V1        0x0014
+#define LF_OEM_V1               0x0015
+#define LF_TYPESERVER_V1        0x0016
+
+#define LF_MODIFIER_V2          0x1001     /* variants with new 32-bit type indices (V2) */
+#define LF_POINTER_V2           0x1002
+#define LF_ARRAY_V2             0x1003
+#define LF_CLASS_V2             0x1004
+#define LF_STRUCTURE_V2         0x1005
+#define LF_UNION_V2             0x1006
+#define LF_ENUM_V2              0x1007
+#define LF_PROCEDURE_V2         0x1008
+#define LF_MFUNCTION_V2         0x1009
+#define LF_COBOL0_V2            0x100a
+#define LF_BARRAY_V2            0x100b
+#define LF_DIMARRAY_V2          0x100c
+#define LF_VFTPATH_V2           0x100d
+#define LF_PRECOMP_V2           0x100e
+#define LF_OEM_V2               0x100f
+
+#define LF_SKIP_V1              0x0200
+#define LF_ARGLIST_V1           0x0201
+#define LF_DEFARG_V1            0x0202
+#define LF_LIST_V1              0x0203
+#define LF_FIELDLIST_V1         0x0204
+#define LF_DERIVED_V1           0x0205
+#define LF_BITFIELD_V1          0x0206
+#define LF_METHODLIST_V1        0x0207
+#define LF_DIMCONU_V1           0x0208
+#define LF_DIMCONLU_V1          0x0209
+#define LF_DIMVARU_V1           0x020a
+#define LF_DIMVARLU_V1          0x020b
+#define LF_REFSYM_V1            0x020c
+
+#define LF_SKIP_V2              0x1200    /* variants with new 32-bit type indices (V2) */
+#define LF_ARGLIST_V2           0x1201
+#define LF_DEFARG_V2            0x1202
+#define LF_FIELDLIST_V2         0x1203
+#define LF_DERIVED_V2           0x1204
+#define LF_BITFIELD_V2          0x1205
+#define LF_METHODLIST_V2        0x1206
+#define LF_DIMCONU_V2           0x1207
+#define LF_DIMCONLU_V2          0x1208
+#define LF_DIMVARU_V2           0x1209
+#define LF_DIMVARLU_V2          0x120a
+
+/* Field lists */
+#define LF_BCLASS_V1            0x0400
+#define LF_VBCLASS_V1           0x0401
+#define LF_IVBCLASS_V1          0x0402
+#define LF_ENUMERATE_V1         0x0403
+#define LF_FRIENDFCN_V1         0x0404
+#define LF_INDEX_V1             0x0405
+#define LF_MEMBER_V1            0x0406
+#define LF_STMEMBER_V1          0x0407
+#define LF_METHOD_V1            0x0408
+#define LF_NESTTYPE_V1          0x0409
+#define LF_VFUNCTAB_V1          0x040a
+#define LF_FRIENDCLS_V1         0x040b
+#define LF_ONEMETHOD_V1         0x040c
+#define LF_VFUNCOFF_V1          0x040d
+#define LF_NESTTYPEEX_V1        0x040e
+#define LF_MEMBERMODIFY_V1      0x040f
+
+#define LF_BCLASS_V2            0x1400    /* variants with new 32-bit type indices (V2) */
+#define LF_VBCLASS_V2           0x1401
+#define LF_IVBCLASS_V2          0x1402
+#define LF_FRIENDFCN_V2         0x1403
+#define LF_INDEX_V2             0x1404
+#define LF_MEMBER_V2            0x1405
+#define LF_STMEMBER_V2          0x1406
+#define LF_METHOD_V2            0x1407
+#define LF_NESTTYPE_V2          0x1408
+#define LF_VFUNCTAB_V2          0x1409
+#define LF_FRIENDCLS_V2         0x140a
+#define LF_ONEMETHOD_V2         0x140b
+#define LF_VFUNCOFF_V2          0x140c
+#define LF_NESTTYPEEX_V2        0x140d
+
+#define LF_ENUMERATE_V3         0x1502
+#define LF_ARRAY_V3             0x1503
+#define LF_CLASS_V3             0x1504
+#define LF_STRUCTURE_V3         0x1505
+#define LF_UNION_V3             0x1506
+#define LF_ENUM_V3              0x1507
+#define LF_MEMBER_V3            0x150d
+#define LF_STMEMBER_V3          0x150e
+#define LF_METHOD_V3            0x150f
+#define LF_NESTTYPE_V3          0x1510
+#define LF_ONEMETHOD_V3         0x1511
+
+#define LF_NUMERIC              0x8000    /* numeric leaf types */
+#define LF_CHAR                 0x8000
+#define LF_SHORT                0x8001
+#define LF_USHORT               0x8002
+#define LF_LONG                 0x8003
+#define LF_ULONG                0x8004
+#define LF_REAL32               0x8005
+#define LF_REAL64               0x8006
+#define LF_REAL80               0x8007
+#define LF_REAL128              0x8008
+#define LF_QUADWORD             0x8009
+#define LF_UQUADWORD            0x800a
+#define LF_REAL48               0x800b
+#define LF_COMPLEX32            0x800c
+#define LF_COMPLEX64            0x800d
+#define LF_COMPLEX80            0x800e
+#define LF_COMPLEX128           0x800f
+#define LF_VARSTRING            0x8010
+
+/* ======================================== *
+ *            Symbol information
+ * ======================================== */
+
+union codeview_symbol
+{
+    struct
+    {
+        short int	        len;
+        short int	        id;
+    } generic;
+
+    struct
+    {
+	short int	        len;
+	short int	        id;
+	unsigned int	        offset;
+	unsigned short	        segment;
+	unsigned short	        symtype;
+        struct p_string         p_name;
+    } data_v1;
+
+    struct
+    {
+	short int	        len;
+	short int	        id;
+	unsigned int	        symtype;
+	unsigned int	        offset;
+	unsigned short	        segment;
+        struct p_string         p_name;
+    } data_v2;
+
+    struct
+    {
+        short int               len;
+        short int               id;
+        unsigned int            symtype;
+        unsigned int            offset;
+        unsigned short          segment;
+        char                    name[1];
+    } data_v3;
+
+    struct
+    {
+	short int	        len;
+	short int	        id;
+	unsigned int	        pparent;
+	unsigned int	        pend;
+	unsigned int	        next;
+	unsigned int	        offset;
+	unsigned short	        segment;
+	unsigned short	        thunk_len;
+	unsigned char	        thtype;
+        struct p_string         p_name;
+    } thunk_v1;
+
+    struct
+    {
+        short int               len;
+        short int               id;
+        unsigned int            pparent;
+        unsigned int            pend;
+        unsigned int            next;
+        unsigned int            offset;
+        unsigned short          segment;
+        unsigned short          thunk_len;
+        unsigned char           thtype;
+        char                    name[1];
+    } thunk_v3;
+
+    struct
+    {
+	short int	        len;
+	short int	        id;
+	unsigned int	        pparent;
+	unsigned int	        pend;
+	unsigned int	        next;
+	unsigned int	        proc_len;
+	unsigned int	        debug_start;
+	unsigned int	        debug_end;
+	unsigned int	        offset;
+	unsigned short	        segment;
+	unsigned short	        proctype;
+	unsigned char	        flags;
+        struct p_string         p_name;
+    } proc_v1;
+
+    struct
+    {
+	short int	        len;
+	short int	        id;
+	unsigned int	        pparent;
+	unsigned int	        pend;
+	unsigned int	        next;
+	unsigned int	        proc_len;
+	unsigned int	        debug_start;
+	unsigned int	        debug_end;
+	unsigned int	        proctype;
+	unsigned int	        offset;
+	unsigned short	        segment;
+	unsigned char	        flags;
+        struct p_string         p_name;
+    } proc_v2;
+
+    struct
+    {
+        short int               len;
+        short int               id;
+        unsigned int            pparent;
+        unsigned int            pend;
+        unsigned int            next;
+        unsigned int            proc_len;
+        unsigned int            debug_start;
+        unsigned int            debug_end;
+        unsigned int            proctype;
+        unsigned int            offset;
+        unsigned short          segment;
+        unsigned char           flags;
+        char                    name[1];
+    } proc_v3;
+
+    struct
+    {
+        short int               len;
+        short int               id;
+        unsigned int            symtype;
+        unsigned int            offset;
+        unsigned short          segment;
+        struct p_string         p_name;
+    } public_v2;
+
+    struct
+    {
+        short int               len;
+        short int               id;
+        unsigned int            symtype;
+        unsigned int            offset;
+        unsigned short          segment;
+        char                    name[1];
+    } public_v3;
+
+    struct
+    {
+	short int	        len;	        /* Total length of this entry */
+	short int	        id;		/* Always S_BPREL_V1 */
+	unsigned int	        offset;	        /* Stack offset relative to BP */
+	unsigned short	        symtype;
+        struct p_string         p_name;
+    } stack_v1;
+
+    struct
+    {
+	short int	        len;	        /* Total length of this entry */
+	short int	        id;		/* Always S_BPREL_V2 */
+	unsigned int	        offset;	        /* Stack offset relative to EBP */
+	unsigned int	        symtype;
+        struct p_string         p_name;
+    } stack_v2;
+
+    struct
+    {
+        short int               len;            /* Total length of this entry */
+        short int               id;             /* Always S_BPREL_V3 */
+        int                     offset;         /* Stack offset relative to BP */
+        unsigned int            symtype;
+        char                    name[1];
+    } stack_v3;
+
+    struct
+    {
+        short int               len;            /* Total length of this entry */
+        short int               id;             /* Always S_BPREL_V3 */
+        int                     offset;         /* Stack offset relative to BP */
+        unsigned int            symtype;
+        unsigned short          unknown;
+        char                    name[1];
+    } stack_xxxx_v3;
+
+    struct
+    {
+	short int	        len;	        /* Total length of this entry */
+	short int	        id;		/* Always S_REGISTER */
+        unsigned short          type;
+        unsigned short          reg;
+        struct p_string         p_name;
+        /* don't handle register tracking */
+    } register_v1;
+
+    struct
+    {
+	short int	        len;	        /* Total length of this entry */
+	short int	        id;		/* Always S_REGISTER_V2 */
+        unsigned int            type;           /* check whether type & reg are correct */
+        unsigned short          reg;
+        struct p_string         p_name;
+        /* don't handle register tracking */
+    } register_v2;
+
+    struct
+    {
+	short int	        len;	        /* Total length of this entry */
+	short int	        id;		/* Always S_REGISTER_V3 */
+        unsigned int            type;           /* check whether type & reg are correct */
+        unsigned short          reg;
+        char                    name[1];
+        /* don't handle register tracking */
+    } register_v3;
+
+    struct
+    {
+        short int               len;
+        short int               id;
+        unsigned int            parent;
+        unsigned int            end;
+        unsigned int            length;
+        unsigned int            offset;
+        unsigned short          segment;
+        struct p_string         p_name;
+    } block_v1;
+
+    struct
+    {
+        short int               len;
+        short int               id;
+        unsigned int            parent;
+        unsigned int            end;
+        unsigned int            length;
+        unsigned int            offset;
+        unsigned short          segment;
+        char                    name[1];
+    } block_v3;
+
+    struct
+    {
+        short int               len;
+        short int               id;
+        unsigned int            offset;
+        unsigned short          segment;
+        unsigned char           flags;
+        struct p_string         p_name;
+    } label_v1;
+
+    struct
+    {
+        short int               len;
+        short int               id;
+        unsigned int            offset;
+        unsigned short          segment;
+        unsigned char           flags;
+        char                    name[1];
+    } label_v3;
+
+    struct
+    {
+        short int               len;
+        short int               id;
+        unsigned short          type;
+        unsigned short          cvalue;         /* numeric leaf */
+#if 0
+        struct p_string         p_name;
+#endif
+    } constant_v1;
+
+    struct
+    {
+        short int               len;
+        short int               id;
+        unsigned                type;
+        unsigned short          cvalue;         /* numeric leaf */
+#if 0
+        struct p_string         p_name;
+#endif
+    } constant_v2;
+
+    struct
+    {
+        short int               len;
+        short int               id;
+        unsigned                type;
+        unsigned short          cvalue;
+#if 0
+        char                    name[1];
+#endif
+    } constant_v3;
+
+    struct
+    {
+        short int               len;
+        short int               id;
+        unsigned short          type;
+        struct p_string         p_name;
+    } udt_v1;
+
+    struct
+    {
+        short int               len;
+        short int               id;
+        unsigned                type;
+        struct p_string         p_name;
+    } udt_v2;
+
+    struct
+    {
+        short int               len;
+        short int               id;
+        unsigned int            type;
+        char                    name[1];
+    } udt_v3;
+
+    struct
+    {
+        short int               len;
+        short int               id;
+        char                    signature[4];
+        struct p_string         p_name;
+    } objname_v1;
+
+    struct
+    {
+        short int               len;
+        short int               id;
+        unsigned int            unknown;
+        struct p_string         p_name;
+    } compiland_v1;
+
+    struct
+    {
+        short int               len;
+        short int               id;
+        unsigned                unknown1[4];
+        unsigned short          unknown2;
+        struct p_string         p_name;
+    } compiland_v2;
+
+    struct
+    {
+        short int               len;
+        short int               id;
+        unsigned int            unknown;
+        char                    name[1];
+    } compiland_v3;
+
+    struct
+    {
+        short int               len;
+        short int               id;
+        unsigned int            offset;
+        unsigned short          segment;
+    } ssearch_v1;
+
+    struct
+    {
+        short int               len;
+        short int               id;
+        unsigned int            offset;
+        unsigned int            unknown;
+    } security_cookie_v3;
+
+    struct
+    {
+        short int               len;
+        short int               id;
+        unsigned int            unknown1;       /* maybe size (of what ?) */
+        unsigned int            unknown2;
+        unsigned int            unknown3;
+        unsigned int            unknown4;       /* maybe size (of what ?) */
+        unsigned int            unknown5;       /* maybe address <offset and segment> (of what ?) */
+        unsigned short          unknown6;
+        unsigned short          flags;
+        unsigned int            unknown7;
+    } func_info_v2;
+};
+
+#define S_COMPILAND_V1  0x0001
+#define S_REGISTER_V1   0x0002
+#define S_CONSTANT_V1   0x0003
+#define S_UDT_V1        0x0004
+#define S_SSEARCH_V1    0x0005
+#define S_END_V1        0x0006
+#define S_SKIP_V1       0x0007
+#define S_CVRESERVE_V1  0x0008
+#define S_OBJNAME_V1    0x0009
+#define S_ENDARG_V1     0x000a
+#define S_COBOLUDT_V1   0x000b
+#define S_MANYREG_V1    0x000c
+#define S_RETURN_V1     0x000d
+#define S_ENTRYTHIS_V1  0x000e
+
+#define S_BPREL_V1      0x0200
+#define S_LDATA_V1      0x0201
+#define S_GDATA_V1      0x0202
+#define S_PUB_V1        0x0203
+#define S_LPROC_V1      0x0204
+#define S_GPROC_V1      0x0205
+#define S_THUNK_V1      0x0206
+#define S_BLOCK_V1      0x0207
+#define S_WITH_V1       0x0208
+#define S_LABEL_V1      0x0209
+#define S_CEXMODEL_V1   0x020a
+#define S_VFTPATH_V1    0x020b
+#define S_REGREL_V1     0x020c
+#define S_LTHREAD_V1    0x020d
+#define S_GTHREAD_V1    0x020e
+
+#define S_PROCREF_V1    0x0400
+#define S_DATAREF_V1    0x0401
+#define S_ALIGN_V1      0x0402
+#define S_LPROCREF_V1   0x0403
+
+#define S_REGISTER_V2   0x1001 /* Variants with new 32-bit type indices */
+#define S_CONSTANT_V2   0x1002
+#define S_UDT_V2        0x1003
+#define S_COBOLUDT_V2   0x1004
+#define S_MANYREG_V2    0x1005
+#define S_BPREL_V2      0x1006
+#define S_LDATA_V2      0x1007
+#define S_GDATA_V2      0x1008
+#define S_PUB_V2        0x1009
+#define S_LPROC_V2      0x100a
+#define S_GPROC_V2      0x100b
+#define S_VFTTABLE_V2   0x100c
+#define S_REGREL_V2     0x100d
+#define S_LTHREAD_V2    0x100e
+#define S_GTHREAD_V2    0x100f
+#define S_FUNCINFO_V2   0x1012
+#define S_COMPILAND_V2  0x1013
+
+#define S_COMPILAND_V3  0x1101
+#define S_THUNK_V3      0x1102
+#define S_BLOCK_V3      0x1103
+#define S_LABEL_V3      0x1105
+#define S_REGISTER_V3   0x1106
+#define S_CONSTANT_V3   0x1107
+#define S_UDT_V3        0x1108
+#define S_BPREL_V3      0x110B
+#define S_LDATA_V3      0x110C
+#define S_GDATA_V3      0x110D
+#define S_PUB_V3        0x110E
+#define S_LPROC_V3      0x110F
+#define S_GPROC_V3      0x1110
+#define S_BPREL_XXXX_V3 0x1111  /* not really understood, but looks like bprel... */
+#define S_MSTOOL_V3     0x1116  /* compiler command line options and build information */
+#define S_PUB_FUNC1_V3  0x1125  /* didn't get the difference between the two */
+#define S_PUB_FUNC2_V3  0x1127
+#define S_SECTINFO_V3   0x1136
+#define S_SUBSECTINFO_V3 0x1137
+#define S_ENTRYPOINT_V3 0x1138
+#define S_SECUCOOKIE_V3 0x113A
+#define S_MSTOOLINFO_V3 0x113C
+#define S_MSTOOLENV_V3  0x113D
+
+/* ======================================== *
+ *          Line number information
+ * ======================================== */
+
+struct codeview_linetab_block
+{
+    unsigned short              seg;
+    unsigned short              num_lines;
+    unsigned int                offsets[1];     /* in fact num_lines */
+/*  unsigned short              linenos[]; */
+};
+
+struct startend
+{
+    unsigned int	        start;
+    unsigned int	        end;
+};
+
+/* there's a new line tab structure from MS Studio 2005 and after
+ * it's made of:
+ * DWORD        000000f4
+ * DWORD        lineblk_offset (counting bytes after this field)
+ * an array of codeview_linetab2_file structures
+ * an array (starting at <lineblk_offset>) of codeview_linetab2_block structures
+ */
+
+struct codeview_linetab2_file
+{
+    DWORD       offset;         /* offset in string table for filename */
+    WORD        unk;            /* always 0x0110... type of following information ??? */
+    BYTE        md5[16];        /* MD5 signature of file (signature on file's content or name ???) */
+    WORD        pad0;           /* always 0 */
+};
+
+struct codeview_linetab2_block
+{
+    DWORD       header;         /* 0x000000f2 */
+    DWORD       size_of_block;  /* next block is at # bytes after this field */
+    DWORD       start;          /* start address of function with line numbers */
+    DWORD       seg;            /* segment of function with line numbers */
+    DWORD       size;           /* size of function with line numbers */
+    DWORD       file_offset;    /* offset for accessing corresponding codeview_linetab2_file */
+    DWORD       nlines;         /* number of lines in this block */
+    DWORD       size_lines;     /* number of bytes following for line number information */
+    struct {
+        DWORD   offset;         /* offset (from <seg>:<start>) for line number */
+        DWORD   lineno;         /* the line number (OR:ed with 0x80000000 why ???) */
+    } l[1];                     /* actually array of <nlines> */
+};
+
+/* ======================================== *
+ *            PDB file information
+ * ======================================== */
+
+
+struct PDB_FILE
+{
+    DWORD               size;
+    DWORD               unknown;
+};
+
+struct PDB_JG_HEADER
+{
+    CHAR                ident[40];
+    DWORD               signature;
+    DWORD               block_size;
+    WORD                free_list;
+    WORD                total_alloc;
+    struct PDB_FILE     toc;
+    WORD                toc_block[1];
+};
+
+struct PDB_DS_HEADER
+{
+    char                signature[32];
+    DWORD               block_size;
+    DWORD               unknown1;
+    DWORD               num_pages;
+    DWORD               toc_size;
+    DWORD               unknown2;
+    DWORD               toc_page;
+};
+
+struct PDB_JG_TOC
+{
+    DWORD               num_files;
+    struct PDB_FILE     file[1];
+};
+
+struct PDB_DS_TOC
+{
+    DWORD               num_files;
+    DWORD               file_size[1];
+};
+
+struct PDB_JG_ROOT
+{
+    DWORD               Version;
+    DWORD               TimeDateStamp;
+    DWORD               Age;
+    DWORD               cbNames;
+    CHAR                names[1];
+};
+
+struct PDB_DS_ROOT
+{
+    DWORD               Version;
+    DWORD               TimeDateStamp;
+    DWORD               Age;
+    GUID                guid;
+    DWORD               cbNames;
+    CHAR                names[1];
+};
+
+typedef struct _PDB_TYPES_OLD
+{
+    DWORD       version;
+    WORD        first_index;
+    WORD        last_index;
+    DWORD       type_size;
+    WORD        file;
+    WORD        pad;
+} PDB_TYPES_OLD, *PPDB_TYPES_OLD;
+
+typedef struct _PDB_TYPES
+{
+    DWORD       version;
+    DWORD       type_offset;
+    DWORD       first_index;
+    DWORD       last_index;
+    DWORD       type_size;
+    WORD        file;
+    WORD        pad;
+    DWORD       hash_size;
+    DWORD       hash_base;
+    DWORD       hash_offset;
+    DWORD       hash_len;
+    DWORD       search_offset;
+    DWORD       search_len;
+    DWORD       unknown_offset;
+    DWORD       unknown_len;
+} PDB_TYPES, *PPDB_TYPES;
+
+typedef struct _PDB_SYMBOL_RANGE
+{
+    WORD        segment;
+    WORD        pad1;
+    DWORD       offset;
+    DWORD       size;
+    DWORD       characteristics;
+    WORD        index;
+    WORD        pad2;
+} PDB_SYMBOL_RANGE, *PPDB_SYMBOL_RANGE;
+
+typedef struct _PDB_SYMBOL_RANGE_EX
+{
+    WORD        segment;
+    WORD        pad1;
+    DWORD       offset;
+    DWORD       size;
+    DWORD       characteristics;
+    WORD        index;
+    WORD        pad2;
+    DWORD       timestamp;
+    DWORD       unknown;
+} PDB_SYMBOL_RANGE_EX, *PPDB_SYMBOL_RANGE_EX;
+
+typedef struct _PDB_SYMBOL_FILE
+{
+    DWORD       unknown1;
+    PDB_SYMBOL_RANGE range;
+    WORD        flag;
+    WORD        file;
+    DWORD       symbol_size;
+    DWORD       lineno_size;
+    DWORD       unknown2;
+    DWORD       nSrcFiles;
+    DWORD       attribute;
+    CHAR        filename[1];
+} PDB_SYMBOL_FILE, *PPDB_SYMBOL_FILE;
+
+typedef struct _PDB_SYMBOL_FILE_EX
+{
+    DWORD       unknown1;
+    PDB_SYMBOL_RANGE_EX range;
+    WORD        flag;
+    WORD        file;
+    DWORD       symbol_size;
+    DWORD       lineno_size;
+    DWORD       unknown2;
+    DWORD       nSrcFiles;
+    DWORD       attribute;
+    DWORD       reserved[2];
+    CHAR        filename[1];
+} PDB_SYMBOL_FILE_EX, *PPDB_SYMBOL_FILE_EX;
+
+typedef struct _PDB_SYMBOL_SOURCE
+{
+    WORD        nModules;
+    WORD        nSrcFiles;
+    WORD        table[1];
+} PDB_SYMBOL_SOURCE, *PPDB_SYMBOL_SOURCE;
+
+typedef struct _PDB_SYMBOL_IMPORT
+{
+    DWORD       unknown1;
+    DWORD       unknown2;
+    DWORD       TimeDateStamp;
+    DWORD       Age;
+    CHAR        filename[1];
+} PDB_SYMBOL_IMPORT, *PPDB_SYMBOL_IMPORT;
+
+typedef struct _PDB_SYMBOLS_OLD
+{
+    WORD        hash1_file;
+    WORD        hash2_file;
+    WORD        gsym_file;
+    WORD        pad;
+    DWORD       module_size;
+    DWORD       offset_size;
+    DWORD       hash_size;
+    DWORD       srcmodule_size;
+} PDB_SYMBOLS_OLD, *PPDB_SYMBOLS_OLD;
+
+typedef struct _PDB_SYMBOLS
+{
+    DWORD       signature;
+    DWORD       version;
+    DWORD       unknown;
+    DWORD       hash1_file;
+    DWORD       hash2_file;
+    WORD        gsym_file;
+    WORD        unknown1;
+    DWORD       module_size;
+    DWORD       offset_size;
+    DWORD       hash_size;
+    DWORD       srcmodule_size;
+    DWORD       pdbimport_size;
+    DWORD       resvd[5];
+} PDB_SYMBOLS, *PPDB_SYMBOLS;
+
+#include "poppack.h"
+
+/* ----------------------------------------------
+ * Information used for parsing
+ * ---------------------------------------------- */
+
+typedef struct
+{
+    DWORD  from;
+    DWORD  to;
+} OMAP_DATA;
+
+struct msc_debug_info
+{
+    struct module*              module;
+    int			        nsect;
+    const IMAGE_SECTION_HEADER* sectp;
+    int			        nomap;
+    const OMAP_DATA*            omapp;
+    const BYTE*                 root;
+};
+
+/* coff.c */
+extern BOOL coff_process_info(const struct msc_debug_info* msc_dbg);
+
+/* ===================================================
+ * The old CodeView stuff (for NB09 and NB11)
+ * =================================================== */
+
+#define sstModule      0x120
+#define sstTypes       0x121
+#define sstPublic      0x122
+#define sstPublicSym   0x123
+#define sstSymbols     0x124
+#define sstAlignSym    0x125
+#define sstSrcLnSeg    0x126
+#define sstSrcModule   0x127
+#define sstLibraries   0x128
+#define sstGlobalSym   0x129
+#define sstGlobalPub   0x12a
+#define sstGlobalTypes 0x12b
+#define sstMPC         0x12c
+#define sstSegMap      0x12d
+#define sstSegName     0x12e
+#define sstPreComp     0x12f
+#define sstFileIndex   0x133
+#define sstStaticSym   0x134
+
+/* overall structure information */
+typedef struct OMFSignature
+{
+    char        Signature[4];
+    long        filepos;
+} OMFSignature;
+
+typedef struct OMFSignatureRSDS
+{
+    char        Signature[4];
+    GUID        guid;
+    DWORD       age;
+    CHAR        name[1];
+} OMFSignatureRSDS;
+
+typedef struct _CODEVIEW_PDB_DATA
+{
+    char        Signature[4];
+    long        filepos;
+    DWORD       timestamp;
+    DWORD       age;
+    CHAR        name[1];
+} CODEVIEW_PDB_DATA, *PCODEVIEW_PDB_DATA;
+
+typedef struct OMFDirHeader
+{
+    WORD        cbDirHeader;
+    WORD        cbDirEntry;
+    DWORD       cDir;
+    DWORD       lfoNextDir;
+    DWORD       flags;
+} OMFDirHeader;
+
+typedef struct OMFDirEntry
+{
+    WORD        SubSection;
+    WORD        iMod;
+    DWORD       lfo;
+    DWORD       cb;
+} OMFDirEntry;
+
+/* sstModule subsection */
+
+typedef struct OMFSegDesc
+{
+    WORD        Seg;
+    WORD        pad;
+    DWORD       Off;
+    DWORD       cbSeg;
+} OMFSegDesc;
+
+typedef struct OMFModule
+{
+    WORD        ovlNumber;
+    WORD        iLib;
+    WORD        cSeg;
+    char        Style[2];
+/*
+    OMFSegDesc  SegInfo[cSeg];
+    p_string    Name;
+*/
+} OMFModule;
+
+typedef struct OMFGlobalTypes
+{
+    DWORD       flags;
+    DWORD       cTypes;
+/*
+    DWORD       offset[cTypes];
+                types_record[];
+*/
+} OMFGlobalTypes;
+
+/* sstGlobalPub section */
+
+/* Header for symbol table */
+typedef struct OMFSymHash
+{
+    unsigned short  symhash;
+    unsigned short  addrhash;
+    unsigned long   cbSymbol;
+    unsigned long   cbHSym;
+    unsigned long   cbHAddr;
+} OMFSymHash;
+
+/* sstSegMap section */
+
+typedef struct OMFSegMapDesc
+{
+    unsigned short  flags;
+    unsigned short  ovl;
+    unsigned short  group;
+    unsigned short  frame;
+    unsigned short  iSegName;
+    unsigned short  iClassName;
+    unsigned long   offset;
+    unsigned long   cbSeg;
+} OMFSegMapDesc;
+
+typedef struct OMFSegMap
+{
+    unsigned short  cSeg;
+    unsigned short  cSegLog;
+/*    OMFSegMapDesc   rgDesc[0];*/
+} OMFSegMap;
+
+
+/* sstSrcModule section */
+
+typedef struct OMFSourceLine
+{
+    unsigned short  Seg;
+    unsigned short  cLnOff;
+    unsigned long   offset[1];
+    unsigned short  lineNbr[1];
+} OMFSourceLine;
+
+typedef struct OMFSourceFile
+{
+    unsigned short  cSeg;
+    unsigned short  reserved;
+    unsigned long   baseSrcLn[1];
+    unsigned short  cFName;
+    char            Name;
+} OMFSourceFile;
+
+typedef struct OMFSourceModule
+{
+    unsigned short  cFile;
+    unsigned short  cSeg;
+    unsigned long   baseSrcFile[1];
+} OMFSourceModule;
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/port.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/port.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/port.h	(revision 16410)
@@ -0,0 +1,473 @@
+/*
+ * Wine porting definitions
+ *
+ * Copyright 1996 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINE_PORT_H
+#define __WINE_WINE_PORT_H
+
+#ifndef __WINE_CONFIG_H
+# error You must include config.h to use this header
+#endif
+
+#ifdef __WINE_BASETSD_H
+# error You must include port.h before all other headers
+#endif
+
+#define _FILE_OFFSET_BITS 64
+#define _GNU_SOURCE  /* for pread/pwrite */
+#include <fcntl.h>
+#include <math.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#ifdef HAVE_DIRECT_H
+# include <direct.h>
+#endif
+#ifdef HAVE_IO_H
+# include <io.h>
+#endif
+#ifdef HAVE_PROCESS_H
+# include <process.h>
+#endif
+#include <string.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+
+/****************************************************************
+ * Type definitions
+ */
+
+#if !defined(_MSC_VER) && !defined(__int64)
+#  if defined(__x86_64__) || defined(_WIN64)
+#    define __int64 long
+#  else
+#    define __int64 long long
+#  endif
+#endif
+
+#ifndef HAVE_MODE_T
+typedef int mode_t;
+#endif
+#ifndef HAVE_OFF_T
+typedef long off_t;
+#endif
+#ifndef HAVE_PID_T
+typedef int pid_t;
+#endif
+#ifndef HAVE_SIZE_T
+typedef unsigned int size_t;
+#endif
+#ifndef HAVE_SSIZE_T
+typedef int ssize_t;
+#endif
+#ifndef HAVE_FSBLKCNT_T
+typedef unsigned long fsblkcnt_t;
+#endif
+#ifndef HAVE_FSFILCNT_T
+typedef unsigned long fsfilcnt_t;
+#endif
+
+#ifndef HAVE_STRUCT_STATVFS_F_BLOCKS
+struct statvfs
+{
+    unsigned long f_bsize;
+    unsigned long f_frsize;
+    fsblkcnt_t    f_blocks;
+    fsblkcnt_t    f_bfree;
+    fsblkcnt_t    f_bavail;
+    fsfilcnt_t    f_files;
+    fsfilcnt_t    f_ffree;
+    fsfilcnt_t    f_favail;
+    unsigned long f_fsid;
+    unsigned long f_flag;
+    unsigned long f_namemax;
+};
+#endif /* HAVE_STRUCT_STATVFS_F_BLOCKS */
+
+
+/****************************************************************
+ * Macro definitions
+ */
+
+#ifdef HAVE_DLFCN_H
+#include <dlfcn.h>
+#else
+#define RTLD_LAZY    0x001
+#define RTLD_NOW     0x002
+#define RTLD_GLOBAL  0x100
+#endif
+
+#if !defined(HAVE_FTRUNCATE) && defined(HAVE_CHSIZE)
+#define ftruncate chsize
+#endif
+
+#if !defined(HAVE_POPEN) && defined(HAVE__POPEN)
+#define popen _popen
+#endif
+
+#if !defined(HAVE_PCLOSE) && defined(HAVE__PCLOSE)
+#define pclose _pclose
+#endif
+
+#if !defined(HAVE_STRDUP) && defined(HAVE__STRDUP)
+#define strdup _strdup
+#endif
+
+#if !defined(HAVE_SNPRINTF) && defined(HAVE__SNPRINTF)
+#define snprintf _snprintf
+#endif
+
+#if !defined(HAVE_VSNPRINTF) && defined(HAVE__VSNPRINTF)
+#define vsnprintf _vsnprintf
+#endif
+
+#if !defined(HAVE_STRTOLL) && defined(HAVE__STRTOI64)
+#define strtoll _strtoi64
+#endif
+
+#if !defined(HAVE_STRTOULL) && defined(HAVE__STRTOUI64)
+#define strtoull _strtoui64
+#endif
+
+#ifndef S_ISLNK
+# define S_ISLNK(mod) (0)
+#endif
+
+#ifndef S_ISSOCK
+# define S_ISSOCK(mod) (0)
+#endif
+
+#ifndef S_ISDIR
+# define S_ISDIR(mod) (((mod) & _S_IFMT) == _S_IFDIR)
+#endif
+
+#ifndef S_ISCHR
+# define S_ISCHR(mod) (((mod) & _S_IFMT) == _S_IFCHR)
+#endif
+
+#ifndef S_ISFIFO
+# define S_ISFIFO(mod) (((mod) & _S_IFMT) == _S_IFIFO)
+#endif
+
+#ifndef S_ISREG
+# define S_ISREG(mod) (((mod) & _S_IFMT) == _S_IFREG)
+#endif
+
+#ifndef S_IWUSR
+# define S_IWUSR 0
+#endif
+
+/* So we open files in 64 bit access mode on Linux */
+#ifndef O_LARGEFILE
+# define O_LARGEFILE 0
+#endif
+
+#ifndef O_NONBLOCK
+# define O_NONBLOCK 0
+#endif
+
+#ifndef O_BINARY
+# define O_BINARY 0
+#endif
+
+#if !defined(S_IXUSR) && defined(S_IEXEC)
+# define S_IXUSR S_IEXEC
+#endif
+#if !defined(S_IXGRP) && defined(S_IEXEC)
+# define S_IXGRP S_IEXEC
+#endif
+#if !defined(S_IXOTH) && defined(S_IEXEC)
+# define S_IXOTH S_IEXEC
+#endif
+
+
+/****************************************************************
+ * Constants
+ */
+
+#ifndef M_PI
+#define M_PI 3.14159265358979323846
+#endif
+
+#ifndef M_PI_2
+#define M_PI_2 1.570796326794896619
+#endif
+
+
+/* Macros to define assembler functions somewhat portably */
+
+#if defined(__GNUC__) && !defined(__MINGW32__) && !defined(__CYGWIN__) && !defined(__APPLE__)
+# define __ASM_GLOBAL_FUNC(name,code) \
+      __asm__( ".text\n\t" \
+               ".align 4\n\t" \
+               ".globl " __ASM_NAME(#name) "\n\t" \
+               __ASM_FUNC(#name) "\n" \
+               __ASM_NAME(#name) ":\n\t" \
+               code \
+               "\n\t.previous" );
+#else  /* defined(__GNUC__) && !defined(__MINGW32__) && !defined(__APPLE__)  */
+# define __ASM_GLOBAL_FUNC(name,code) \
+      void __asm_dummy_##name(void) { \
+          asm( ".align 4\n\t" \
+               ".globl " __ASM_NAME(#name) "\n\t" \
+               __ASM_FUNC(#name) "\n" \
+               __ASM_NAME(#name) ":\n\t" \
+               code ); \
+      }
+#endif  /* __GNUC__ */
+
+
+/* Register functions */
+
+#ifdef __i386__
+#define DEFINE_REGS_ENTRYPOINT( name, args, pop_args ) \
+    __ASM_GLOBAL_FUNC( name, \
+                       "pushl %eax\n\t" \
+                       "call " __ASM_NAME("__wine_call_from_32_regs") "\n\t" \
+                       ".long " __ASM_NAME("__regs_") #name "-.\n\t" \
+                       ".byte " #args "," #pop_args )
+/* FIXME: add support for other CPUs */
+#endif  /* __i386__ */
+
+
+/****************************************************************
+ * Function definitions (only when using libwine_port)
+ */
+
+#ifndef NO_LIBWINE_PORT
+
+#ifndef HAVE_FSTATVFS
+int fstatvfs( int fd, struct statvfs *buf );
+#endif
+
+#ifndef HAVE_GETOPT_LONG
+extern char *optarg;
+extern int optind;
+extern int opterr;
+extern int optopt;
+struct option;
+
+#ifndef HAVE_STRUCT_OPTION_NAME
+struct option
+{
+    const char *name;
+    int has_arg;
+    int *flag;
+    int val;
+};
+#endif
+
+extern int getopt_long (int ___argc, char *const *___argv,
+                        const char *__shortopts,
+                        const struct option *__longopts, int *__longind);
+extern int getopt_long_only (int ___argc, char *const *___argv,
+                             const char *__shortopts,
+                             const struct option *__longopts, int *__longind);
+#endif  /* HAVE_GETOPT_LONG */
+
+#ifndef HAVE_FFS
+int ffs( int x );
+#endif
+
+#ifndef HAVE_FUTIMES
+struct timeval;
+int futimes(int fd, const struct timeval *tv);
+#endif
+
+#ifndef HAVE_GETPAGESIZE
+size_t getpagesize(void);
+#endif  /* HAVE_GETPAGESIZE */
+
+#ifndef HAVE_GETTID
+pid_t gettid(void);
+#endif /* HAVE_GETTID */
+
+#ifndef HAVE_ISINF
+int isinf(double x);
+#endif
+
+#ifndef HAVE_ISNAN
+int isnan(double x);
+#endif
+
+#ifndef HAVE_LSTAT
+int lstat(const char *file_name, struct stat *buf);
+#endif /* HAVE_LSTAT */
+
+#ifndef HAVE_MEMMOVE
+void *memmove(void *dest, const void *src, size_t len);
+#endif /* !defined(HAVE_MEMMOVE) */
+
+#ifndef HAVE_PREAD
+ssize_t pread( int fd, void *buf, size_t count, off_t offset );
+#endif /* HAVE_PREAD */
+
+#ifndef HAVE_PWRITE
+ssize_t pwrite( int fd, const void *buf, size_t count, off_t offset );
+#endif /* HAVE_PWRITE */
+
+#ifndef HAVE_READLINK
+int readlink( const char *path, char *buf, size_t size );
+#endif /* HAVE_READLINK */
+
+#ifndef HAVE_STATVFS
+int statvfs( const char *path, struct statvfs *buf );
+#endif
+
+#ifndef HAVE_STRNCASECMP
+# ifndef HAVE__STRNICMP
+int strncasecmp(const char *str1, const char *str2, size_t n);
+# else
+# define strncasecmp _strnicmp
+# endif
+#endif /* !defined(HAVE_STRNCASECMP) */
+
+#ifndef HAVE_STRERROR
+const char *strerror(int err);
+#endif /* !defined(HAVE_STRERROR) */
+
+#ifndef HAVE_STRCASECMP
+# ifndef HAVE__STRICMP
+int strcasecmp(const char *str1, const char *str2);
+# else
+# define strcasecmp _stricmp
+# endif
+#endif /* !defined(HAVE_STRCASECMP) */
+
+#ifndef HAVE_USLEEP
+int usleep (unsigned int useconds);
+#endif /* !defined(HAVE_USLEEP) */
+
+#ifdef __i386__
+static void *memcpy_unaligned( void *dst, const void *src, size_t size )
+{
+    return memcpy( dst, src, size );
+}
+#else
+extern void *memcpy_unaligned( void *dst, const void *src, size_t size );
+#endif /* __i386__ */
+
+extern int mkstemps(char *template, int suffix_len);
+
+/* Process creation flags */
+#ifndef _P_WAIT
+# define _P_WAIT    0
+# define _P_NOWAIT  1
+# define _P_OVERLAY 2
+# define _P_NOWAITO 3
+# define _P_DETACH  4
+#endif
+#ifndef HAVE_SPAWNVP
+extern int spawnvp(int mode, const char *cmdname, const char * const argv[]);
+#endif
+
+/* Interlocked functions */
+
+#if defined(__i386__) && defined(__GNUC__)
+
+extern inline int interlocked_cmpxchg( int *dest, int xchg, int compare );
+extern inline void *interlocked_cmpxchg_ptr( void **dest, void *xchg, void *compare );
+extern __int64 interlocked_cmpxchg64( __int64 *dest, __int64 xchg, __int64 compare );
+extern inline int interlocked_xchg( int *dest, int val );
+extern inline void *interlocked_xchg_ptr( void **dest, void *val );
+extern inline int interlocked_xchg_add( int *dest, int incr );
+
+extern inline int interlocked_cmpxchg( int *dest, int xchg, int compare )
+{
+    int ret;
+    __asm__ __volatile__( "lock; cmpxchgl %2,(%1)"
+                          : "=a" (ret) : "r" (dest), "r" (xchg), "0" (compare) : "memory" );
+    return ret;
+}
+
+extern inline void *interlocked_cmpxchg_ptr( void **dest, void *xchg, void *compare )
+{
+    void *ret;
+    __asm__ __volatile__( "lock; cmpxchgl %2,(%1)"
+                          : "=a" (ret) : "r" (dest), "r" (xchg), "0" (compare) : "memory" );
+    return ret;
+}
+
+extern inline int interlocked_xchg( int *dest, int val )
+{
+    int ret;
+    __asm__ __volatile__( "lock; xchgl %0,(%1)"
+                          : "=r" (ret) : "r" (dest), "0" (val) : "memory" );
+    return ret;
+}
+
+extern inline void *interlocked_xchg_ptr( void **dest, void *val )
+{
+    void *ret;
+    __asm__ __volatile__( "lock; xchgl %0,(%1)"
+                          : "=r" (ret) : "r" (dest), "0" (val) : "memory" );
+    return ret;
+}
+
+extern inline int interlocked_xchg_add( int *dest, int incr )
+{
+    int ret;
+    __asm__ __volatile__( "lock; xaddl %0,(%1)"
+                          : "=r" (ret) : "r" (dest), "0" (incr) : "memory" );
+    return ret;
+}
+
+#else  /* __i386___ && __GNUC__ */
+
+extern int interlocked_cmpxchg( int *dest, int xchg, int compare );
+extern void *interlocked_cmpxchg_ptr( void **dest, void *xchg, void *compare );
+extern __int64 interlocked_cmpxchg64( __int64 *dest, __int64 xchg, __int64 compare );
+extern int interlocked_xchg( int *dest, int val );
+extern void *interlocked_xchg_ptr( void **dest, void *val );
+extern int interlocked_xchg_add( int *dest, int incr );
+
+#endif  /* __i386___ && __GNUC__ */
+
+#else /* NO_LIBWINE_PORT */
+
+#define __WINE_NOT_PORTABLE(func) func##_is_not_portable func##_is_not_portable
+
+#define ffs                     __WINE_NOT_PORTABLE(ffs)
+#define fstatvfs                __WINE_NOT_PORTABLE(fstatvfs)
+#define futimes                 __WINE_NOT_PORTABLE(futimes)
+#define getopt_long             __WINE_NOT_PORTABLE(getopt_long)
+#define getopt_long_only        __WINE_NOT_PORTABLE(getopt_long_only)
+#define getpagesize             __WINE_NOT_PORTABLE(getpagesize)
+#define interlocked_cmpxchg     __WINE_NOT_PORTABLE(interlocked_cmpxchg)
+#define interlocked_cmpxchg_ptr __WINE_NOT_PORTABLE(interlocked_cmpxchg_ptr)
+#define interlocked_xchg        __WINE_NOT_PORTABLE(interlocked_xchg)
+#define interlocked_xchg_ptr    __WINE_NOT_PORTABLE(interlocked_xchg_ptr)
+#define interlocked_xchg_add    __WINE_NOT_PORTABLE(interlocked_xchg_add)
+#define lstat                   __WINE_NOT_PORTABLE(lstat)
+#define memcpy_unaligned        __WINE_NOT_PORTABLE(memcpy_unaligned)
+#undef memmove
+#define memmove                 __WINE_NOT_PORTABLE(memmove)
+#define pread                   __WINE_NOT_PORTABLE(pread)
+#define pwrite                  __WINE_NOT_PORTABLE(pwrite)
+#define spawnvp                 __WINE_NOT_PORTABLE(spawnvp)
+#define statvfs                 __WINE_NOT_PORTABLE(statvfs)
+#define strcasecmp              __WINE_NOT_PORTABLE(strcasecmp)
+#define strerror                __WINE_NOT_PORTABLE(strerror)
+#define strncasecmp             __WINE_NOT_PORTABLE(strncasecmp)
+#define usleep                  __WINE_NOT_PORTABLE(usleep)
+
+#endif /* NO_LIBWINE_PORT */
+
+#endif /* !defined(__WINE_WINE_PORT_H) */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/pthread.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/pthread.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/pthread.h	(revision 16410)
@@ -0,0 +1,118 @@
+/*
+ * Definitions for Wine pthread emulation
+ *
+ * Copyright 2003 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINE_PTHREAD_H
+#define __WINE_WINE_PTHREAD_H
+
+struct wine_pthread_callbacks;
+
+#include <signal.h>
+
+#ifndef HAVE_SIGSET_T
+struct sigset_t;
+typedef struct sigset_t sigset_t;
+#endif
+
+#ifdef HAVE_PTHREAD_H
+
+#define _GNU_SOURCE
+#include <pthread.h>
+#ifdef HAVE_PTHREAD_NP_H
+#include <pthread_np.h>
+#endif
+
+#ifndef HAVE_PTHREAD_RWLOCK_T
+typedef void *pthread_rwlock_t;
+#endif
+#ifndef HAVE_PTHREAD_RWLOCKATTR_T
+typedef void *pthread_rwlockattr_t;
+#endif
+
+struct wine_pthread_callbacks
+{
+    void *    (*ptr_get_thread_data)(void);
+    void      (*ptr_set_thread_data)(void *data);
+    pthread_t (*ptr_pthread_self)(void);
+    int       (*ptr_pthread_equal)(pthread_t thread1, pthread_t thread2);
+    int       (*ptr_pthread_create)(pthread_t* thread, const pthread_attr_t* attr,
+                                    void* (*start_routine)(void *), void* arg);
+    int       (*ptr_pthread_cancel)(pthread_t thread);
+    int       (*ptr_pthread_join)(pthread_t thread, void **value_ptr);
+    int       (*ptr_pthread_detach)(pthread_t thread);
+    void      (*ptr_pthread_exit)(void *retval, char *currentframe);
+    int       (*ptr_pthread_mutex_init)(pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr);
+    int       (*ptr_pthread_mutex_lock)(pthread_mutex_t *mutex);
+    int       (*ptr_pthread_mutex_trylock)(pthread_mutex_t *mutex);
+    int       (*ptr_pthread_mutex_unlock)(pthread_mutex_t *mutex);
+    int       (*ptr_pthread_mutex_destroy)(pthread_mutex_t *mutex);
+    int       (*ptr_pthread_rwlock_init)(pthread_rwlock_t *rwlock,
+                                         const pthread_rwlockattr_t *rwlock_attr);
+    int       (*ptr_pthread_rwlock_destroy)(pthread_rwlock_t *rwlock);
+    int       (*ptr_pthread_rwlock_rdlock)(pthread_rwlock_t *rwlock);
+    int       (*ptr_pthread_rwlock_tryrdlock)(pthread_rwlock_t *rwlock);
+    int       (*ptr_pthread_rwlock_wrlock)(pthread_rwlock_t *rwlock);
+    int       (*ptr_pthread_rwlock_trywrlock)(pthread_rwlock_t *rwlock);
+    int       (*ptr_pthread_rwlock_unlock)(pthread_rwlock_t *rwlock);
+    int       (*ptr_pthread_cond_init)(pthread_cond_t *cond, const pthread_condattr_t *cond_attr);
+    int       (*ptr_pthread_cond_destroy)(pthread_cond_t *cond);
+    int       (*ptr_pthread_cond_signal)(pthread_cond_t *cond);
+    int       (*ptr_pthread_cond_broadcast)(pthread_cond_t *cond);
+    int       (*ptr_pthread_cond_wait)(pthread_cond_t *cond, pthread_mutex_t *mutex);
+    int       (*ptr_pthread_cond_timedwait)(pthread_cond_t *cond, pthread_mutex_t *mutex,
+                                            const struct timespec *abstime);
+};
+
+#endif /* HAVE_PTHREAD_H */
+
+/* thread information used to creating and exiting threads */
+struct wine_pthread_thread_info
+{
+    void          *stack_base;  /* base address of the stack */
+    size_t         stack_size;  /* size of the stack */
+    void          *teb_base;    /* base address of the TEB */
+    size_t         teb_size;    /* size of the TEB (possibly including signal stack) */
+    unsigned short teb_sel;     /* selector to use for TEB */
+    int            pid;         /* Unix process id */
+    int            tid;         /* Unix thread id */
+    void         (*entry)( struct wine_pthread_thread_info *info );  /* thread entry point */
+    long           exit_status; /* thread exit status when calling wine_pthread_exit_thread */
+};
+
+struct wine_pthread_functions
+{
+    void   (*init_process)( const struct wine_pthread_callbacks *callbacks, size_t size );
+    void   (*init_thread)( struct wine_pthread_thread_info *info );
+    int    (*create_thread)( struct wine_pthread_thread_info *info );
+    void   (*init_current_teb)( struct wine_pthread_thread_info *info );
+    void * (*get_current_teb)(void);
+#ifdef __GNUC__
+    void   (* __attribute__((noreturn)) exit_thread)( struct wine_pthread_thread_info *info );
+    void   (* __attribute__((noreturn)) abort_thread)( long status );
+#else
+    void   (*exit_thread)( struct wine_pthread_thread_info *info );
+    void   (*abort_thread)( long status );
+#endif
+    int    (*sigprocmask)( int how, const sigset_t *newset, sigset_t *oldset );
+};
+
+extern void wine_pthread_get_functions( struct wine_pthread_functions *functions, size_t size );
+extern void wine_pthread_set_functions( const struct wine_pthread_functions *functions, size_t size );
+
+#endif  /* __WINE_WINE_PTHREAD_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/rpcfc.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/rpcfc.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/rpcfc.h	(revision 16410)
@@ -0,0 +1,203 @@
+/*
+ * RPC format chars, as found by studying MIDL output.
+ * Some, but not all, usage of these are explained on MSDN.
+ */
+
+#ifndef __WINE_RPCFC_H
+#define __WINE_RPCFC_H
+
+/* base types */
+#define RPC_FC_BYTE			0x01
+#define RPC_FC_CHAR			0x02
+#define RPC_FC_SMALL			0x03
+#define RPC_FC_USMALL			0x04
+#define RPC_FC_WCHAR			0x05
+#define RPC_FC_SHORT			0x06
+#define RPC_FC_USHORT			0x07
+#define RPC_FC_LONG			0x08
+#define RPC_FC_ULONG			0x09
+#define RPC_FC_FLOAT			0x0a
+#define RPC_FC_HYPER			0x0b
+#define RPC_FC_DOUBLE			0x0c
+#define RPC_FC_ENUM16			0x0d
+#define RPC_FC_ENUM32			0x0e
+#define RPC_FC_IGNORE			0x0f
+#define RPC_FC_ERROR_STATUS_T		0x10
+
+/* other stuff */
+#define RPC_FC_RP			0x11 /* reference pointer */
+#define RPC_FC_UP			0x12 /* unique pointer */
+#define RPC_FC_OP			0x13 /* unique pointer in object ? */
+#define RPC_FC_FP			0x14 /* full pointer */
+
+#define RPC_FC_STRUCT			0x15 /* simple structure */
+/* FC_STRUCT: align-1, NdrFcShort(size), fields */
+
+#define RPC_FC_PSTRUCT			0x16 /* simple structure w/ pointers */
+/* FC_PTRUCT: align-1, NdrFcShort(size), ptrs, fields */
+
+#define RPC_FC_CSTRUCT			0x17 /* conformant structure */
+
+#define RPC_FC_CPSTRUCT                 0x18 /* conformant structure w/ pointers */
+
+#define RPC_FC_CVSTRUCT                 0x19 /* conformant varying struct */
+
+#define RPC_FC_BOGUS_STRUCT		0x1a /* complex structure */
+
+#define RPC_FC_CARRAY			0x1b /* conformant array */
+/* FC_CARRAY: align-1, NdrFcShort(size), conformance, ptrs, fields */
+#define RPC_FC_CVARRAY			0x1c /* conformant varying array */
+/* FC_CARRAY: align-1, NdrFcShort(size), conformance, variance, ptrs, fields */
+#define RPC_FC_SMFARRAY			0x1d /* small (<64K) fixed array */
+/* FC_SMFARRAY: align-1, NdrFcShort(size), ptrs, fields */
+
+#define RPC_FC_LGFARRAY                 0x1e /* large (>= 64k) fixed array */
+
+#define RPC_FC_SMVARRAY                 0x1f /* small (<64k) varying array */
+
+#define RPC_FC_LGVARRAY                 0x20 /* large (>= 64k) varying array */
+
+#define RPC_FC_BOGUS_ARRAY		0x21 /* complex array */
+
+#define RPC_FC_C_CSTRING		0x22
+#define RPC_FC_C_SSTRING		0x24
+#define RPC_FC_C_WSTRING		0x25
+#define RPC_FC_CSTRING                  0x26
+#define RPC_FC_SSTRING			0x28
+#define RPC_FC_WSTRING                  0x29
+
+#define RPC_FC_ENCAPSULATED_UNION	0x2a
+#define RPC_FC_NON_ENCAPSULATED_UNION	0x2b
+
+#define RPC_FC_BYTE_COUNT_POINTER       0x2c /* [byte_count] ACF attribute */
+
+#define RPC_FC_TRANSMIT_AS              0x2d
+#define RPC_FC_REPRESENT_AS             0x2e
+
+#define RPC_FC_IP			0x2f /* interface pointer */
+/* FC_IP: FC_CONSTANT_IID iid */
+/* FC_IP: FC_PAD correlation */
+
+#define RPC_FC_BIND_CONTEXT		0x30
+
+#define RPC_FC_BIND_GENERIC		0x31
+#define RPC_FC_BIND_PRIMITIVE		0x32
+#define RPC_FC_AUTO_HANDLE		0x33
+#define RPC_FC_CALLBACK_HANDLE		0x34
+
+#define RPC_FC_POINTER			0x36
+
+#define RPC_FC_ALIGNM4			0x38
+#define RPC_FC_ALIGNM8			0x39
+
+#define RPC_FC_STRUCTPAD1		0x3d
+#define RPC_FC_STRUCTPAD2		0x3e
+#define RPC_FC_STRUCTPAD3		0x3f
+#define RPC_FC_STRUCTPAD4       0x40
+#define RPC_FC_STRUCTPAD5       0x41
+#define RPC_FC_STRUCTPAD6       0x42
+#define RPC_FC_STRUCTPAD7       0x43
+
+#define RPC_FC_STRING_SIZED		0x44
+
+#define RPC_FC_NO_REPEAT		0x46
+#define RPC_FC_FIXED_REPEAT		0x47
+#define RPC_FC_VARIABLE_REPEAT		0x48
+#define RPC_FC_FIXED_OFFSET		0x49
+#define RPC_FC_VARIABLE_OFFSET		0x4a
+
+#define RPC_FC_PP			0x4b /* pointer layout */
+/* FC_PP: FC_PAD layouts */
+/* layouts: FC_NO_REPEAT FC_PAD instance */
+/* instance: NdrFcShort(memofs), NdrFcShort(bufofs), desc */
+
+#define RPC_FC_EMBEDDED_COMPLEX		0x4c
+/* FC_EMBEDDED_COMPLEX: padding, NdrFcShort(typeofs) */
+
+#define RPC_FC_IN_PARAM			0x4d
+/* FC_IN_PARAM: stacksiz, NdrFcShort(typeofs) */
+#define RPC_FC_IN_PARAM_BASETYPE	0x4e
+/* FC_IN_PARAM_BASETYPE: basetype */
+#define RPC_FC_IN_PARAM_NO_FREE_INST	0x4f
+#define RPC_FC_IN_OUT_PARAM		0x50
+/* FC_IN_OUT_PARAM: stacksiz, NdrFcShort(typeofs) */
+#define RPC_FC_OUT_PARAM		0x51
+/* FC_OUT_PARAM: stacksiz, NdrFcShort(typeofs) */
+#define RPC_FC_RETURN_PARAM		0x52
+/* FC_RETURN_PARAM: stacksiz, NdrFcShort(typeofs) */
+#define RPC_FC_RETURN_PARAM_BASETYPE	0x53
+/* FC_RETURN_PARAM_BASETYPE: basetype */
+
+#define RPC_FC_DEREFERENCE		0x54
+#define RPC_FC_DIV_2			0x55
+#define RPC_FC_MULT_2			0x56
+#define RPC_FC_ADD_1			0x57
+#define RPC_FC_SUB_1			0x58
+
+#define RPC_FC_CALLBACK			0x59
+
+#define RPC_FC_CONSTANT_IID		0x5a
+/* FC_CONSTANT_IID: NdrFcLong(), NdrFcShort(), NdrFcShort(), 8x () */
+
+#define RPC_FC_END			0x5b
+#define RPC_FC_PAD			0x5c
+
+#define RPC_FC_USER_MARSHAL		0xb4
+
+#define RPC_FC_RANGE			0xb7
+
+#define RPC_FC_INT3264			0xb8
+#define RPC_FC_UINT3264			0xb9
+
+/* FC_RP/UP/OP/FP: flags, NdrFcShort(typeofs)/basetype */
+#define RPC_FC_P_ALLOCALLNODES		0x01
+#define RPC_FC_P_DONTFREE		0x02
+#define RPC_FC_P_ONSTACK		0x04 /* [alloced_on_stack] */
+#define RPC_FC_P_SIMPLEPOINTER		0x08 /* [simple_pointer] */
+#define RPC_FC_P_DEREF			0x10
+
+#define RPC_FC_BIND_EXPLICIT		0x00
+
+/* proc header: oiflags, NdrFcLong(rpcflags), NdrFcShort(procnum), NdrFcShort(stacksiz),
+ *  oi2 header: NdrFcShort(clientbuf), NdrFcShort(servbuf), oi2flags, parmcount
+ * oi2 parameters: NdrFcShort(flags), NdrFcShort(stackofs), NdrFcShort(typeofs)/basetype */
+#define RPC_FC_PROC_OIF_FULLPTR         0x01
+#define RPC_FC_PROC_OIF_RPCSSALLOC      0x02
+#define RPC_FC_PROC_OIF_OBJECT          0x04
+#define RPC_FC_PROC_OIF_RPCFLAGS        0x08
+#define RPC_FC_PROC_OIF_OBJ_V2          0x20
+#define RPC_FC_PROC_OIF_NEWINIT         0x40
+
+#define RPC_FC_PROC_PF_MUSTSIZE         0x0001
+#define RPC_FC_PROC_PF_MUSTFREE         0x0002
+#define RPC_FC_PROC_PF_PIPE             0x0004
+#define RPC_FC_PROC_PF_IN               0x0008
+#define RPC_FC_PROC_PF_OUT              0x0010
+#define RPC_FC_PROC_PF_RETURN           0x0020
+#define RPC_FC_PROC_PF_BASETYPE         0x0040
+#define RPC_FC_PROC_PF_BYVAL            0x0080
+#define RPC_FC_PROC_PF_SIMPLEREF        0x0100
+#define RPC_FC_PROC_PF_DONTFREEINST     0x0200
+#define RPC_FC_PROC_PF_SAVEASYNC        0x0400
+#define RPC_FC_PROC_PF_SRVALLOCSIZE     0xe000 /* in 8 byte units */
+
+/* correlation types */
+#define RPC_FC_NORMAL_CONFORMANCE		0x00
+#define RPC_FC_POINTER_CONFORMANCE		0x10
+#define RPC_FC_TOP_LEVEL_CONFORMANCE		0x20
+#define RPC_FC_CONSTANT_CONFORMANCE		0x40
+#define RPC_FC_TOP_LEVEL_MULTID_CONFORMANCE	0x80
+
+/* user marshal flags */
+#define USER_MARSHAL_UNIQUE	0x80
+#define USER_MARSHAL_REF	0x40
+#define USER_MARSHAL_POINTER	0xc0
+#define USER_MARSHAL_IID	0x20
+
+/* context handle flags */
+#define NDR_CONTEXT_HANDLE_CANNOT_BE_NULL   0x01
+#define NDR_CONTEXT_HANDLE_SERIALIZE        0x02
+#define NDR_CONTEXT_HANDLE_NO_SERIALIZE     0x04
+#define NDR_STRICT_CONTEXT_HANDLE           0x08
+
+#endif /* __WINE_RPCFC_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/server.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/server.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/server.h	(revision 16410)
@@ -0,0 +1,111 @@
+/*
+ * Definitions for the client side of the Wine server communication
+ *
+ * Copyright (C) 1998 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINE_SERVER_H
+#define __WINE_WINE_SERVER_H
+
+#include <stdarg.h>
+#include <windef.h>
+#include <winbase.h>
+#include <winternl.h>
+#include <wine/server_protocol.h>
+
+/* client communication functions */
+
+struct __server_iovec
+{
+    const void  *ptr;
+    data_size_t  size;
+};
+
+#define __SERVER_MAX_DATA 5
+
+struct __server_request_info
+{
+    union
+    {
+        union generic_request req;    /* request structure */
+        union generic_reply   reply;  /* reply structure */
+    } u;
+    unsigned int          data_count; /* count of request data pointers */
+    void                 *reply_data; /* reply data pointer */
+    struct __server_iovec data[__SERVER_MAX_DATA];  /* request variable size data */
+};
+
+extern unsigned int wine_server_call( void *req_ptr );
+extern void wine_server_send_fd( int fd );
+extern int wine_server_fd_to_handle( int fd, unsigned int access, unsigned int attributes, obj_handle_t *handle );
+extern int wine_server_handle_to_fd( obj_handle_t handle, unsigned int access, int *unix_fd, unsigned int *options );
+extern void wine_server_release_fd( obj_handle_t handle, int unix_fd );
+
+/* do a server call and set the last error code */
+static inline unsigned int wine_server_call_err( void *req_ptr )
+{
+    unsigned int res = wine_server_call( req_ptr );
+    if (res) SetLastError( RtlNtStatusToDosError(res) );
+    return res;
+}
+
+/* get the size of the variable part of the returned reply */
+static inline data_size_t wine_server_reply_size( const void *reply )
+{
+    return ((const struct reply_header *)reply)->reply_size;
+}
+
+/* add some data to be sent along with the request */
+static inline void wine_server_add_data( void *req_ptr, const void *ptr, data_size_t size )
+{
+    struct __server_request_info * const req = req_ptr;
+    if (size)
+    {
+        req->data[req->data_count].ptr = ptr;
+        req->data[req->data_count++].size = size;
+        req->u.req.request_header.request_size += size;
+    }
+}
+
+/* set the pointer and max size for the reply var data */
+static inline void wine_server_set_reply( void *req_ptr, void *ptr, data_size_t max_size )
+{
+    struct __server_request_info * const req = req_ptr;
+    req->reply_data = ptr;
+    req->u.req.request_header.reply_size = max_size;
+}
+
+
+/* macros for server requests */
+
+#define SERVER_START_REQ(type) \
+    do { \
+        struct __server_request_info __req; \
+        struct type##_request * const req = &__req.u.req.type##_request; \
+        const struct type##_reply * const reply = &__req.u.reply.type##_reply; \
+        memset( &__req.u.req, 0, sizeof(__req.u.req) ); \
+        __req.u.req.request_header.req = REQ_##type; \
+        __req.data_count = 0; \
+        (void)reply; \
+        do
+
+#define SERVER_END_REQ \
+        while(0); \
+    } while(0)
+
+
+#endif  /* __WINE_WINE_SERVER_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/server_protocol.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/server_protocol.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/server_protocol.h	(revision 16410)
@@ -0,0 +1,5077 @@
+/*
+ * Wine server protocol definitions
+ *
+ * This file is automatically generated; DO NO EDIT!
+ * Edit server/protocol.def instead and re-run tools/make_requests
+ */
+
+#ifndef __WINE_WINE_SERVER_PROTOCOL_H
+#define __WINE_WINE_SERVER_PROTOCOL_H
+
+#include <stdarg.h>
+#include <stdlib.h>
+#include <time.h>
+
+#include <windef.h>
+#include <winbase.h>
+
+typedef void *obj_handle_t;
+typedef void *user_handle_t;
+typedef unsigned short atom_t;
+typedef unsigned int process_id_t;
+typedef unsigned int thread_id_t;
+typedef unsigned int data_size_t;
+typedef unsigned int ioctl_code_t;
+typedef unsigned __int64 file_pos_t;
+
+struct request_header
+{
+    int          req;
+    data_size_t  request_size;
+    data_size_t  reply_size;
+};
+
+struct reply_header
+{
+    unsigned int error;
+    data_size_t  reply_size;
+};
+
+
+
+struct request_max_size
+{
+    int pad[16];
+};
+
+#define FIRST_USER_HANDLE 0x0020
+#define LAST_USER_HANDLE  0xffef
+
+
+
+struct debug_event_exception
+{
+    EXCEPTION_RECORD record;
+    int              first;
+};
+struct debug_event_create_thread
+{
+    obj_handle_t handle;
+    void        *teb;
+    void        *start;
+};
+struct debug_event_create_process
+{
+    obj_handle_t file;
+    obj_handle_t process;
+    obj_handle_t thread;
+    void        *base;
+    int          dbg_offset;
+    int          dbg_size;
+    void        *teb;
+    void        *start;
+    void        *name;
+    int          unicode;
+};
+struct debug_event_exit
+{
+    int          exit_code;
+};
+struct debug_event_load_dll
+{
+    obj_handle_t handle;
+    void        *base;
+    int          dbg_offset;
+    int          dbg_size;
+    void        *name;
+    int          unicode;
+};
+struct debug_event_unload_dll
+{
+    void       *base;
+};
+struct debug_event_output_string
+{
+    void       *string;
+    int         unicode;
+    int         length;
+};
+struct debug_event_rip_info
+{
+    int         error;
+    int         type;
+};
+union debug_event_data
+{
+    struct debug_event_exception      exception;
+    struct debug_event_create_thread  create_thread;
+    struct debug_event_create_process create_process;
+    struct debug_event_exit           exit;
+    struct debug_event_load_dll       load_dll;
+    struct debug_event_unload_dll     unload_dll;
+    struct debug_event_output_string  output_string;
+    struct debug_event_rip_info       rip_info;
+};
+
+
+typedef struct
+{
+    int                      code;
+    union debug_event_data   info;
+} debug_event_t;
+
+
+struct send_fd
+{
+    thread_id_t tid;
+    int         fd;
+};
+
+
+struct wake_up_reply
+{
+    void *cookie;
+    int   signaled;
+};
+
+
+typedef __int64 timeout_t;
+#define TIMEOUT_INFINITE (((timeout_t)0x7fffffff) << 32 | 0xffffffff)
+
+
+typedef struct
+{
+    atom_t         atom;
+    short          string;
+    obj_handle_t   handle;
+} property_data_t;
+
+
+typedef struct
+{
+    int  left;
+    int  top;
+    int  right;
+    int  bottom;
+} rectangle_t;
+
+
+typedef struct
+{
+    void           *callback;
+    void           *iosb;
+    void           *arg;
+    void           *apc;
+    obj_handle_t    event;
+    unsigned long   cvalue;
+} async_data_t;
+
+
+
+struct callback_msg_data
+{
+    void           *callback;
+    unsigned long   data;
+    unsigned long   result;
+};
+
+struct winevent_msg_data
+{
+    user_handle_t   hook;
+    thread_id_t     tid;
+    void           *hook_proc;
+
+};
+
+typedef union
+{
+    unsigned char            bytes[1];
+    struct callback_msg_data callback;
+    struct winevent_msg_data winevent;
+} message_data_t;
+
+
+typedef struct
+{
+    WCHAR          ch;
+    unsigned short attr;
+} char_info_t;
+
+typedef struct
+{
+    unsigned int low_part;
+    int          high_part;
+} luid_t;
+
+#define MAX_ACL_LEN 65535
+
+struct security_descriptor
+{
+    unsigned int control;
+    data_size_t  owner_len;
+    data_size_t  group_len;
+    data_size_t  sacl_len;
+    data_size_t  dacl_len;
+
+
+
+
+};
+
+struct object_attributes
+{
+    obj_handle_t rootdir;
+    data_size_t sd_len;
+    data_size_t name_len;
+
+
+};
+
+struct token_groups
+{
+    unsigned int count;
+
+
+};
+
+enum apc_type
+{
+    APC_NONE,
+    APC_USER,
+    APC_TIMER,
+    APC_ASYNC_IO,
+    APC_VIRTUAL_ALLOC,
+    APC_VIRTUAL_FREE,
+    APC_VIRTUAL_QUERY,
+    APC_VIRTUAL_PROTECT,
+    APC_VIRTUAL_FLUSH,
+    APC_VIRTUAL_LOCK,
+    APC_VIRTUAL_UNLOCK,
+    APC_MAP_VIEW,
+    APC_UNMAP_VIEW,
+    APC_CREATE_THREAD
+};
+
+typedef union
+{
+    enum apc_type type;
+    struct
+    {
+        enum apc_type    type;
+        void (__stdcall *func)(unsigned long,unsigned long,unsigned long);
+        unsigned long    args[3];
+    } user;
+    struct
+    {
+        enum apc_type   type;
+        void (__stdcall *func)(void*, unsigned int, unsigned int);
+        timeout_t        time;
+        void            *arg;
+    } timer;
+    struct
+    {
+        enum apc_type    type;
+        unsigned int   (*func)(void*, void*, unsigned int, unsigned long *);
+        void            *user;
+        void            *sb;
+        unsigned int     status;
+    } async_io;
+    struct
+    {
+        enum apc_type    type;
+        void            *addr;
+        unsigned long    size;
+        unsigned int     zero_bits;
+        unsigned int     op_type;
+        unsigned int     prot;
+    } virtual_alloc;
+    struct
+    {
+        enum apc_type    type;
+        void            *addr;
+        unsigned long    size;
+        unsigned int     op_type;
+    } virtual_free;
+    struct
+    {
+        enum apc_type    type;
+        const void      *addr;
+    } virtual_query;
+    struct
+    {
+        enum apc_type    type;
+        void            *addr;
+        unsigned long    size;
+        unsigned int     prot;
+    } virtual_protect;
+    struct
+    {
+        enum apc_type    type;
+        const void      *addr;
+        unsigned long    size;
+    } virtual_flush;
+    struct
+    {
+        enum apc_type    type;
+        void            *addr;
+        unsigned long    size;
+    } virtual_lock;
+    struct
+    {
+        enum apc_type    type;
+        void            *addr;
+        unsigned long    size;
+    } virtual_unlock;
+    struct
+    {
+        enum apc_type    type;
+        obj_handle_t     handle;
+        void            *addr;
+        unsigned long    size;
+        file_pos_t       offset;
+        unsigned int     zero_bits;
+        unsigned int     alloc_type;
+        unsigned int     prot;
+    } map_view;
+    struct
+    {
+        enum apc_type    type;
+        void            *addr;
+    } unmap_view;
+    struct
+    {
+        enum apc_type    type;
+        void (__stdcall *func)(void*);
+        void            *arg;
+        unsigned long    reserve;
+        unsigned long    commit;
+        int              suspend;
+    } create_thread;
+} apc_call_t;
+
+typedef union
+{
+    enum apc_type type;
+    struct
+    {
+        enum apc_type    type;
+        unsigned int     status;
+        unsigned long    total;
+    } async_io;
+    struct
+    {
+        enum apc_type    type;
+        unsigned int     status;
+        void            *addr;
+        unsigned long    size;
+    } virtual_alloc;
+    struct
+    {
+        enum apc_type    type;
+        unsigned int     status;
+        void            *addr;
+        unsigned long    size;
+    } virtual_free;
+    struct
+    {
+        enum apc_type    type;
+        unsigned int     status;
+        void            *base;
+        void            *alloc_base;
+        unsigned long    size;
+        unsigned int     state;
+        unsigned int     prot;
+        unsigned int     alloc_prot;
+        unsigned int     alloc_type;
+    } virtual_query;
+    struct
+    {
+        enum apc_type    type;
+        unsigned int     status;
+        void            *addr;
+        unsigned long    size;
+        unsigned int     prot;
+    } virtual_protect;
+    struct
+    {
+        enum apc_type    type;
+        unsigned int     status;
+        const void      *addr;
+        unsigned long    size;
+    } virtual_flush;
+    struct
+    {
+        enum apc_type    type;
+        unsigned int     status;
+        void            *addr;
+        unsigned long    size;
+    } virtual_lock;
+    struct
+    {
+        enum apc_type    type;
+        unsigned int     status;
+        void            *addr;
+        unsigned long    size;
+    } virtual_unlock;
+    struct
+    {
+        enum apc_type    type;
+        unsigned int     status;
+        void            *addr;
+        unsigned long    size;
+    } map_view;
+    struct
+    {
+        enum apc_type    type;
+        unsigned int     status;
+    } unmap_view;
+    struct
+    {
+        enum apc_type    type;
+        unsigned int     status;
+        thread_id_t      tid;
+        obj_handle_t     handle;
+    } create_thread;
+} apc_result_t;
+
+
+
+
+
+struct new_process_request
+{
+    struct request_header __header;
+    int          inherit_all;
+    unsigned int create_flags;
+    int          socket_fd;
+    obj_handle_t exe_file;
+    obj_handle_t hstdin;
+    obj_handle_t hstdout;
+    obj_handle_t hstderr;
+    unsigned int process_access;
+    unsigned int process_attr;
+    unsigned int thread_access;
+    unsigned int thread_attr;
+    /* VARARG(info,startup_info); */
+    /* VARARG(env,unicode_str); */
+};
+struct new_process_reply
+{
+    struct reply_header __header;
+    obj_handle_t info;
+    process_id_t pid;
+    obj_handle_t phandle;
+    thread_id_t  tid;
+    obj_handle_t thandle;
+};
+
+
+
+struct get_new_process_info_request
+{
+    struct request_header __header;
+    obj_handle_t info;
+};
+struct get_new_process_info_reply
+{
+    struct reply_header __header;
+    int          success;
+    int          exit_code;
+};
+
+
+
+struct new_thread_request
+{
+    struct request_header __header;
+    unsigned int access;
+    unsigned int attributes;
+    int          suspend;
+    int          request_fd;
+};
+struct new_thread_reply
+{
+    struct reply_header __header;
+    thread_id_t  tid;
+    obj_handle_t handle;
+};
+
+
+
+struct get_startup_info_request
+{
+    struct request_header __header;
+};
+struct get_startup_info_reply
+{
+    struct reply_header __header;
+    obj_handle_t exe_file;
+    obj_handle_t hstdin;
+    obj_handle_t hstdout;
+    obj_handle_t hstderr;
+    /* VARARG(info,startup_info); */
+    /* VARARG(env,unicode_str); */
+};
+
+
+
+struct init_process_done_request
+{
+    struct request_header __header;
+    void*        module;
+    void*        entry;
+    int          gui;
+};
+struct init_process_done_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct init_thread_request
+{
+    struct request_header __header;
+    int          unix_pid;
+    int          unix_tid;
+    int          debug_level;
+    void*        teb;
+    void*        peb;
+    void*        entry;
+    void*        ldt_copy;
+    int          reply_fd;
+    int          wait_fd;
+};
+struct init_thread_reply
+{
+    struct reply_header __header;
+    process_id_t pid;
+    thread_id_t  tid;
+    data_size_t  info_size;
+    timeout_t    server_start;
+    int          version;
+};
+
+
+
+struct terminate_process_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    int          exit_code;
+};
+struct terminate_process_reply
+{
+    struct reply_header __header;
+    int          self;
+};
+
+
+
+struct terminate_thread_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    int          exit_code;
+};
+struct terminate_thread_reply
+{
+    struct reply_header __header;
+    int          self;
+    int          last;
+};
+
+
+
+struct get_process_info_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+};
+struct get_process_info_reply
+{
+    struct reply_header __header;
+    process_id_t pid;
+    process_id_t ppid;
+    int          exit_code;
+    int          priority;
+    unsigned int affinity;
+    void*        peb;
+    timeout_t    start_time;
+    timeout_t    end_time;
+};
+
+
+
+struct set_process_info_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    int          mask;
+    int          priority;
+    unsigned int affinity;
+};
+struct set_process_info_reply
+{
+    struct reply_header __header;
+};
+#define SET_PROCESS_INFO_PRIORITY 0x01
+#define SET_PROCESS_INFO_AFFINITY 0x02
+
+
+
+struct get_thread_info_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    thread_id_t  tid_in;
+};
+struct get_thread_info_reply
+{
+    struct reply_header __header;
+    process_id_t pid;
+    thread_id_t  tid;
+    void*        teb;
+    int          exit_code;
+    int          priority;
+    unsigned int affinity;
+    timeout_t    creation_time;
+    timeout_t    exit_time;
+    int          last;
+};
+
+
+
+struct set_thread_info_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    int          mask;
+    int          priority;
+    unsigned int affinity;
+    obj_handle_t token;
+};
+struct set_thread_info_reply
+{
+    struct reply_header __header;
+};
+#define SET_THREAD_INFO_PRIORITY 0x01
+#define SET_THREAD_INFO_AFFINITY 0x02
+#define SET_THREAD_INFO_TOKEN    0x04
+
+
+
+struct get_dll_info_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    void*        base_address;
+};
+struct get_dll_info_reply
+{
+    struct reply_header __header;
+    size_t       size;
+    void*        entry_point;
+    data_size_t  filename_len;
+    /* VARARG(filename,unicode_str); */
+};
+
+
+
+struct suspend_thread_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+};
+struct suspend_thread_reply
+{
+    struct reply_header __header;
+    int          count;
+};
+
+
+
+struct resume_thread_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+};
+struct resume_thread_reply
+{
+    struct reply_header __header;
+    int          count;
+};
+
+
+
+struct load_dll_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    void*        base;
+    size_t       size;
+    int          dbg_offset;
+    int          dbg_size;
+    void*        name;
+    /* VARARG(filename,unicode_str); */
+};
+struct load_dll_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct unload_dll_request
+{
+    struct request_header __header;
+    void*        base;
+};
+struct unload_dll_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct queue_apc_request
+{
+    struct request_header __header;
+    obj_handle_t thread;
+    obj_handle_t process;
+    apc_call_t   call;
+};
+struct queue_apc_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+    int          self;
+};
+
+
+
+struct get_apc_result_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+};
+struct get_apc_result_reply
+{
+    struct reply_header __header;
+    apc_result_t result;
+};
+
+
+
+struct close_handle_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+};
+struct close_handle_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct set_handle_info_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    int          flags;
+    int          mask;
+};
+struct set_handle_info_reply
+{
+    struct reply_header __header;
+    int          old_flags;
+};
+
+
+
+struct dup_handle_request
+{
+    struct request_header __header;
+    obj_handle_t src_process;
+    obj_handle_t src_handle;
+    obj_handle_t dst_process;
+    unsigned int access;
+    unsigned int attributes;
+    unsigned int options;
+};
+struct dup_handle_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+    int          self;
+    int          closed;
+};
+#define DUP_HANDLE_CLOSE_SOURCE  DUPLICATE_CLOSE_SOURCE
+#define DUP_HANDLE_SAME_ACCESS   DUPLICATE_SAME_ACCESS
+#define DUP_HANDLE_MAKE_GLOBAL   0x80000000
+
+
+
+struct open_process_request
+{
+    struct request_header __header;
+    process_id_t pid;
+    unsigned int access;
+    unsigned int attributes;
+};
+struct open_process_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+
+struct open_thread_request
+{
+    struct request_header __header;
+    thread_id_t  tid;
+    unsigned int access;
+    unsigned int attributes;
+};
+struct open_thread_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+
+struct select_request
+{
+    struct request_header __header;
+    int          flags;
+    void*        cookie;
+    obj_handle_t signal;
+    obj_handle_t prev_apc;
+    timeout_t    timeout;
+    /* VARARG(result,apc_result); */
+    /* VARARG(handles,handles); */
+};
+struct select_reply
+{
+    struct reply_header __header;
+    obj_handle_t apc_handle;
+    timeout_t    timeout;
+    apc_call_t   call;
+};
+#define SELECT_ALL           1
+#define SELECT_ALERTABLE     2
+#define SELECT_INTERRUPTIBLE 4
+
+
+
+struct create_event_request
+{
+    struct request_header __header;
+    unsigned int access;
+    unsigned int attributes;
+    int          manual_reset;
+    int          initial_state;
+    /* VARARG(objattr,object_attributes); */
+};
+struct create_event_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+struct event_op_request
+{
+    struct request_header __header;
+    obj_handle_t  handle;
+    int           op;
+};
+struct event_op_reply
+{
+    struct reply_header __header;
+};
+enum event_op { PULSE_EVENT, SET_EVENT, RESET_EVENT };
+
+
+
+struct open_event_request
+{
+    struct request_header __header;
+    unsigned int access;
+    unsigned int attributes;
+    obj_handle_t rootdir;
+    /* VARARG(name,unicode_str); */
+};
+struct open_event_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+
+struct create_mutex_request
+{
+    struct request_header __header;
+    unsigned int access;
+    unsigned int attributes;
+    int          owned;
+    /* VARARG(objattr,object_attributes); */
+};
+struct create_mutex_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+
+struct release_mutex_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+};
+struct release_mutex_reply
+{
+    struct reply_header __header;
+    unsigned int prev_count;
+};
+
+
+
+struct open_mutex_request
+{
+    struct request_header __header;
+    unsigned int access;
+    unsigned int attributes;
+    obj_handle_t rootdir;
+    /* VARARG(name,unicode_str); */
+};
+struct open_mutex_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+
+struct create_semaphore_request
+{
+    struct request_header __header;
+    unsigned int access;
+    unsigned int attributes;
+    unsigned int initial;
+    unsigned int max;
+    /* VARARG(objattr,object_attributes); */
+};
+struct create_semaphore_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+
+struct release_semaphore_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    unsigned int count;
+};
+struct release_semaphore_reply
+{
+    struct reply_header __header;
+    unsigned int prev_count;
+};
+
+
+
+struct open_semaphore_request
+{
+    struct request_header __header;
+    unsigned int access;
+    unsigned int attributes;
+    obj_handle_t rootdir;
+    /* VARARG(name,unicode_str); */
+};
+struct open_semaphore_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+
+struct create_file_request
+{
+    struct request_header __header;
+    unsigned int access;
+    unsigned int attributes;
+    unsigned int sharing;
+    int          create;
+    unsigned int options;
+    unsigned int attrs;
+    /* VARARG(objattr,object_attributes); */
+    /* VARARG(filename,string); */
+};
+struct create_file_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+
+struct open_file_object_request
+{
+    struct request_header __header;
+    unsigned int access;
+    unsigned int attributes;
+    obj_handle_t rootdir;
+    unsigned int sharing;
+    unsigned int options;
+    /* VARARG(filename,unicode_str); */
+};
+struct open_file_object_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+
+struct alloc_file_handle_request
+{
+    struct request_header __header;
+    unsigned int access;
+    unsigned int attributes;
+    int          fd;
+};
+struct alloc_file_handle_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+
+struct get_handle_fd_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+};
+struct get_handle_fd_reply
+{
+    struct reply_header __header;
+    int          type;
+    int          removable;
+    unsigned int access;
+    unsigned int options;
+};
+enum server_fd_type
+{
+    FD_TYPE_INVALID,
+    FD_TYPE_FILE,
+    FD_TYPE_DIR,
+    FD_TYPE_SOCKET,
+    FD_TYPE_SERIAL,
+    FD_TYPE_PIPE,
+    FD_TYPE_MAILSLOT,
+    FD_TYPE_CHAR,
+    FD_TYPE_DEVICE,
+    FD_TYPE_NB_TYPES
+};
+
+
+
+struct flush_file_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+};
+struct flush_file_reply
+{
+    struct reply_header __header;
+    obj_handle_t event;
+};
+
+
+
+struct lock_file_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    file_pos_t   offset;
+    file_pos_t   count;
+    int          shared;
+    int          wait;
+};
+struct lock_file_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+    int          overlapped;
+};
+
+
+
+struct unlock_file_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    file_pos_t   offset;
+    file_pos_t   count;
+};
+struct unlock_file_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct create_socket_request
+{
+    struct request_header __header;
+    unsigned int access;
+    unsigned int attributes;
+    int          family;
+    int          type;
+    int          protocol;
+    unsigned int flags;
+};
+struct create_socket_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+
+struct accept_socket_request
+{
+    struct request_header __header;
+    obj_handle_t lhandle;
+    unsigned int access;
+    unsigned int attributes;
+};
+struct accept_socket_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+
+struct set_socket_event_request
+{
+    struct request_header __header;
+    obj_handle_t  handle;
+    unsigned int  mask;
+    obj_handle_t  event;
+    user_handle_t window;
+    unsigned int  msg;
+};
+struct set_socket_event_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct get_socket_event_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    int          service;
+    obj_handle_t c_event;
+};
+struct get_socket_event_reply
+{
+    struct reply_header __header;
+    unsigned int mask;
+    unsigned int pmask;
+    unsigned int state;
+    /* VARARG(errors,ints); */
+};
+
+
+
+struct enable_socket_event_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    unsigned int mask;
+    unsigned int sstate;
+    unsigned int cstate;
+};
+struct enable_socket_event_reply
+{
+    struct reply_header __header;
+};
+
+struct set_socket_deferred_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    obj_handle_t deferred;
+};
+struct set_socket_deferred_reply
+{
+    struct reply_header __header;
+};
+
+
+struct alloc_console_request
+{
+    struct request_header __header;
+    unsigned int access;
+    unsigned int attributes;
+    process_id_t pid;
+};
+struct alloc_console_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle_in;
+    obj_handle_t event;
+};
+
+
+
+struct free_console_request
+{
+    struct request_header __header;
+};
+struct free_console_reply
+{
+    struct reply_header __header;
+};
+
+
+#define CONSOLE_RENDERER_NONE_EVENT        0x00
+#define CONSOLE_RENDERER_TITLE_EVENT       0x01
+#define CONSOLE_RENDERER_ACTIVE_SB_EVENT   0x02
+#define CONSOLE_RENDERER_SB_RESIZE_EVENT   0x03
+#define CONSOLE_RENDERER_UPDATE_EVENT      0x04
+#define CONSOLE_RENDERER_CURSOR_POS_EVENT  0x05
+#define CONSOLE_RENDERER_CURSOR_GEOM_EVENT 0x06
+#define CONSOLE_RENDERER_DISPLAY_EVENT     0x07
+#define CONSOLE_RENDERER_EXIT_EVENT        0x08
+struct console_renderer_event
+{
+    short event;
+    union
+    {
+        struct update
+        {
+            short top;
+            short bottom;
+        } update;
+        struct resize
+        {
+            short width;
+            short height;
+        } resize;
+        struct cursor_pos
+        {
+            short x;
+            short y;
+        } cursor_pos;
+        struct cursor_geom
+        {
+            short visible;
+            short size;
+        } cursor_geom;
+        struct display
+        {
+            short left;
+            short top;
+            short width;
+            short height;
+        } display;
+    } u;
+};
+
+
+struct get_console_renderer_events_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+};
+struct get_console_renderer_events_reply
+{
+    struct reply_header __header;
+    /* VARARG(data,bytes); */
+};
+
+
+
+struct open_console_request
+{
+    struct request_header __header;
+    obj_handle_t from;
+
+    unsigned int access;
+    unsigned int attributes;
+    int          share;
+};
+struct open_console_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+
+struct get_console_wait_event_request
+{
+    struct request_header __header;
+};
+struct get_console_wait_event_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+struct get_console_mode_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+};
+struct get_console_mode_reply
+{
+    struct reply_header __header;
+    int          mode;
+};
+
+
+
+struct set_console_mode_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    int          mode;
+};
+struct set_console_mode_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct set_console_input_info_request
+{
+    struct request_header __header;
+    obj_handle_t  handle;
+    int           mask;
+    obj_handle_t  active_sb;
+    int           history_mode;
+    int           history_size;
+    int           edition_mode;
+    int           input_cp;
+    int           output_cp;
+    user_handle_t win;
+    /* VARARG(title,unicode_str); */
+};
+struct set_console_input_info_reply
+{
+    struct reply_header __header;
+};
+#define SET_CONSOLE_INPUT_INFO_ACTIVE_SB        0x01
+#define SET_CONSOLE_INPUT_INFO_TITLE            0x02
+#define SET_CONSOLE_INPUT_INFO_HISTORY_MODE     0x04
+#define SET_CONSOLE_INPUT_INFO_HISTORY_SIZE     0x08
+#define SET_CONSOLE_INPUT_INFO_EDITION_MODE     0x10
+#define SET_CONSOLE_INPUT_INFO_INPUT_CODEPAGE   0x20
+#define SET_CONSOLE_INPUT_INFO_OUTPUT_CODEPAGE  0x40
+#define SET_CONSOLE_INPUT_INFO_WIN              0x80
+
+
+
+struct get_console_input_info_request
+{
+    struct request_header __header;
+    obj_handle_t  handle;
+};
+struct get_console_input_info_reply
+{
+    struct reply_header __header;
+    int           history_mode;
+    int           history_size;
+    int           history_index;
+    int           edition_mode;
+    int           input_cp;
+    int           output_cp;
+    user_handle_t win;
+    /* VARARG(title,unicode_str); */
+};
+
+
+
+struct append_console_input_history_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    /* VARARG(line,unicode_str); */
+};
+struct append_console_input_history_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct get_console_input_history_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    int          index;
+};
+struct get_console_input_history_reply
+{
+    struct reply_header __header;
+    int          total;
+    /* VARARG(line,unicode_str); */
+};
+
+
+
+struct create_console_output_request
+{
+    struct request_header __header;
+    obj_handle_t handle_in;
+    unsigned int access;
+    unsigned int attributes;
+    unsigned int share;
+};
+struct create_console_output_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle_out;
+};
+
+
+
+struct set_console_output_info_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    int          mask;
+    short int    cursor_size;
+    short int    cursor_visible;
+    short int    cursor_x;
+    short int    cursor_y;
+    short int    width;
+    short int    height;
+    short int    attr;
+    short int    win_left;
+    short int    win_top;
+    short int    win_right;
+    short int    win_bottom;
+    short int    max_width;
+    short int    max_height;
+};
+struct set_console_output_info_reply
+{
+    struct reply_header __header;
+};
+#define SET_CONSOLE_OUTPUT_INFO_CURSOR_GEOM     0x01
+#define SET_CONSOLE_OUTPUT_INFO_CURSOR_POS      0x02
+#define SET_CONSOLE_OUTPUT_INFO_SIZE            0x04
+#define SET_CONSOLE_OUTPUT_INFO_ATTR            0x08
+#define SET_CONSOLE_OUTPUT_INFO_DISPLAY_WINDOW  0x10
+#define SET_CONSOLE_OUTPUT_INFO_MAX_SIZE        0x20
+
+
+
+struct get_console_output_info_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+};
+struct get_console_output_info_reply
+{
+    struct reply_header __header;
+    short int    cursor_size;
+    short int    cursor_visible;
+    short int    cursor_x;
+    short int    cursor_y;
+    short int    width;
+    short int    height;
+    short int    attr;
+    short int    win_left;
+    short int    win_top;
+    short int    win_right;
+    short int    win_bottom;
+    short int    max_width;
+    short int    max_height;
+};
+
+
+struct write_console_input_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    /* VARARG(rec,input_records); */
+};
+struct write_console_input_reply
+{
+    struct reply_header __header;
+    int          written;
+};
+
+
+
+struct read_console_input_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    int          flush;
+};
+struct read_console_input_reply
+{
+    struct reply_header __header;
+    int          read;
+    /* VARARG(rec,input_records); */
+};
+
+
+
+struct write_console_output_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    int          x;
+    int          y;
+    int          mode;
+    int          wrap;
+    /* VARARG(data,bytes); */
+};
+struct write_console_output_reply
+{
+    struct reply_header __header;
+    int          written;
+    int          width;
+    int          height;
+};
+enum char_info_mode
+{
+    CHAR_INFO_MODE_TEXT,
+    CHAR_INFO_MODE_ATTR,
+    CHAR_INFO_MODE_TEXTATTR,
+    CHAR_INFO_MODE_TEXTSTDATTR
+};
+
+
+
+struct fill_console_output_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    int          x;
+    int          y;
+    int          mode;
+    int          count;
+    int          wrap;
+    char_info_t  data;
+};
+struct fill_console_output_reply
+{
+    struct reply_header __header;
+    int          written;
+};
+
+
+
+struct read_console_output_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    int          x;
+    int          y;
+    int          mode;
+    int          wrap;
+};
+struct read_console_output_reply
+{
+    struct reply_header __header;
+    int          width;
+    int          height;
+    /* VARARG(data,bytes); */
+};
+
+
+
+struct move_console_output_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    short int    x_src;
+    short int    y_src;
+    short int    x_dst;
+    short int    y_dst;
+    short int    w;
+    short int    h;
+};
+struct move_console_output_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct send_console_signal_request
+{
+    struct request_header __header;
+    int          signal;
+    process_id_t group_id;
+};
+struct send_console_signal_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct read_directory_changes_request
+{
+    struct request_header __header;
+    unsigned int filter;
+    obj_handle_t handle;
+    int          subtree;
+    int          want_data;
+    async_data_t async;
+};
+struct read_directory_changes_reply
+{
+    struct reply_header __header;
+};
+
+
+struct read_change_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+};
+struct read_change_reply
+{
+    struct reply_header __header;
+    int          action;
+    /* VARARG(name,string); */
+};
+
+
+
+struct create_mapping_request
+{
+    struct request_header __header;
+    unsigned int access;
+    unsigned int attributes;
+    file_pos_t   size;
+    unsigned int protect;
+    obj_handle_t file_handle;
+    /* VARARG(objattr,object_attributes); */
+};
+struct create_mapping_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+#define VPROT_READ       0x01
+#define VPROT_WRITE      0x02
+#define VPROT_EXEC       0x04
+#define VPROT_WRITECOPY  0x08
+#define VPROT_GUARD      0x10
+#define VPROT_NOCACHE    0x20
+#define VPROT_COMMITTED  0x40
+#define VPROT_WRITEWATCH 0x80
+
+#define VPROT_IMAGE      0x0100
+#define VPROT_SYSTEM     0x0200
+#define VPROT_VALLOC     0x0400
+#define VPROT_NOEXEC     0x0800
+
+
+
+struct open_mapping_request
+{
+    struct request_header __header;
+    unsigned int access;
+    unsigned int attributes;
+    obj_handle_t rootdir;
+    /* VARARG(name,unicode_str); */
+};
+struct open_mapping_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+
+struct get_mapping_info_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    unsigned int access;
+};
+struct get_mapping_info_reply
+{
+    struct reply_header __header;
+    file_pos_t   size;
+    int          protect;
+    int          header_size;
+    void*        base;
+    obj_handle_t mapping;
+    obj_handle_t shared_file;
+};
+
+
+
+struct get_mapping_committed_range_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    file_pos_t   offset;
+};
+struct get_mapping_committed_range_reply
+{
+    struct reply_header __header;
+    file_pos_t   size;
+    int          committed;
+};
+
+
+
+struct add_mapping_committed_range_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    file_pos_t   offset;
+    file_pos_t   size;
+};
+struct add_mapping_committed_range_reply
+{
+    struct reply_header __header;
+};
+
+
+#define SNAP_HEAPLIST   0x00000001
+#define SNAP_PROCESS    0x00000002
+#define SNAP_THREAD     0x00000004
+#define SNAP_MODULE     0x00000008
+
+struct create_snapshot_request
+{
+    struct request_header __header;
+    unsigned int attributes;
+    int          flags;
+    process_id_t pid;
+};
+struct create_snapshot_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+
+struct next_process_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    int          reset;
+};
+struct next_process_reply
+{
+    struct reply_header __header;
+    int          count;
+    process_id_t pid;
+    process_id_t ppid;
+    void*        heap;
+    void*        module;
+    int          threads;
+    int          priority;
+    int          handles;
+    /* VARARG(filename,unicode_str); */
+};
+
+
+
+struct next_thread_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    int          reset;
+};
+struct next_thread_reply
+{
+    struct reply_header __header;
+    int          count;
+    process_id_t pid;
+    thread_id_t  tid;
+    int          base_pri;
+    int          delta_pri;
+};
+
+
+
+struct next_module_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    int          reset;
+};
+struct next_module_reply
+{
+    struct reply_header __header;
+    process_id_t pid;
+    void*        base;
+    size_t       size;
+    /* VARARG(filename,unicode_str); */
+};
+
+
+
+struct wait_debug_event_request
+{
+    struct request_header __header;
+    int           get_handle;
+};
+struct wait_debug_event_reply
+{
+    struct reply_header __header;
+    process_id_t  pid;
+    thread_id_t   tid;
+    obj_handle_t  wait;
+    /* VARARG(event,debug_event); */
+};
+
+
+
+struct queue_exception_event_request
+{
+    struct request_header __header;
+    int              first;
+    /* VARARG(record,exc_event); */
+};
+struct queue_exception_event_reply
+{
+    struct reply_header __header;
+    obj_handle_t     handle;
+};
+
+
+
+struct get_exception_status_request
+{
+    struct request_header __header;
+    obj_handle_t     handle;
+};
+struct get_exception_status_reply
+{
+    struct reply_header __header;
+    /* VARARG(context,context); */
+};
+
+
+
+struct output_debug_string_request
+{
+    struct request_header __header;
+    void*         string;
+    int           unicode;
+    int           length;
+};
+struct output_debug_string_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct continue_debug_event_request
+{
+    struct request_header __header;
+    process_id_t pid;
+    thread_id_t  tid;
+    int          status;
+};
+struct continue_debug_event_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct debug_process_request
+{
+    struct request_header __header;
+    process_id_t pid;
+    int          attach;
+};
+struct debug_process_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct debug_break_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+};
+struct debug_break_reply
+{
+    struct reply_header __header;
+    int          self;
+};
+
+
+
+struct set_debugger_kill_on_exit_request
+{
+    struct request_header __header;
+    int          kill_on_exit;
+};
+struct set_debugger_kill_on_exit_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct read_process_memory_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    void*        addr;
+};
+struct read_process_memory_reply
+{
+    struct reply_header __header;
+    /* VARARG(data,bytes); */
+};
+
+
+
+struct write_process_memory_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    void*        addr;
+    /* VARARG(data,bytes); */
+};
+struct write_process_memory_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct create_key_request
+{
+    struct request_header __header;
+    obj_handle_t parent;
+    unsigned int access;
+    unsigned int attributes;
+    unsigned int options;
+    time_t       modif;
+    data_size_t  namelen;
+    /* VARARG(name,unicode_str,namelen); */
+    /* VARARG(class,unicode_str); */
+};
+struct create_key_reply
+{
+    struct reply_header __header;
+    obj_handle_t hkey;
+    int          created;
+};
+
+
+struct open_key_request
+{
+    struct request_header __header;
+    obj_handle_t parent;
+    unsigned int access;
+    unsigned int attributes;
+    /* VARARG(name,unicode_str); */
+};
+struct open_key_reply
+{
+    struct reply_header __header;
+    obj_handle_t hkey;
+};
+
+
+
+struct delete_key_request
+{
+    struct request_header __header;
+    obj_handle_t hkey;
+};
+struct delete_key_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct flush_key_request
+{
+    struct request_header __header;
+    obj_handle_t hkey;
+};
+struct flush_key_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct enum_key_request
+{
+    struct request_header __header;
+    obj_handle_t hkey;
+    int          index;
+    int          info_class;
+};
+struct enum_key_reply
+{
+    struct reply_header __header;
+    int          subkeys;
+    int          max_subkey;
+    int          max_class;
+    int          values;
+    int          max_value;
+    int          max_data;
+    time_t       modif;
+    data_size_t  total;
+    data_size_t  namelen;
+    /* VARARG(name,unicode_str,namelen); */
+    /* VARARG(class,unicode_str); */
+};
+
+
+
+struct set_key_value_request
+{
+    struct request_header __header;
+    obj_handle_t hkey;
+    int          type;
+    data_size_t  namelen;
+    /* VARARG(name,unicode_str,namelen); */
+    /* VARARG(data,bytes); */
+};
+struct set_key_value_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct get_key_value_request
+{
+    struct request_header __header;
+    obj_handle_t hkey;
+    /* VARARG(name,unicode_str); */
+};
+struct get_key_value_reply
+{
+    struct reply_header __header;
+    int          type;
+    data_size_t  total;
+    /* VARARG(data,bytes); */
+};
+
+
+
+struct enum_key_value_request
+{
+    struct request_header __header;
+    obj_handle_t hkey;
+    int          index;
+    int          info_class;
+};
+struct enum_key_value_reply
+{
+    struct reply_header __header;
+    int          type;
+    data_size_t  total;
+    data_size_t  namelen;
+    /* VARARG(name,unicode_str,namelen); */
+    /* VARARG(data,bytes); */
+};
+
+
+
+struct delete_key_value_request
+{
+    struct request_header __header;
+    obj_handle_t hkey;
+    /* VARARG(name,unicode_str); */
+};
+struct delete_key_value_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct load_registry_request
+{
+    struct request_header __header;
+    obj_handle_t hkey;
+    obj_handle_t file;
+    /* VARARG(name,unicode_str); */
+};
+struct load_registry_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct unload_registry_request
+{
+    struct request_header __header;
+    obj_handle_t hkey;
+};
+struct unload_registry_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct save_registry_request
+{
+    struct request_header __header;
+    obj_handle_t hkey;
+    obj_handle_t file;
+};
+struct save_registry_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct set_registry_notification_request
+{
+    struct request_header __header;
+    obj_handle_t hkey;
+    obj_handle_t event;
+    int          subtree;
+    unsigned int filter;
+};
+struct set_registry_notification_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct create_timer_request
+{
+    struct request_header __header;
+    unsigned int access;
+    unsigned int attributes;
+    obj_handle_t rootdir;
+    int          manual;
+    /* VARARG(name,unicode_str); */
+};
+struct create_timer_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+
+struct open_timer_request
+{
+    struct request_header __header;
+    unsigned int access;
+    unsigned int attributes;
+    obj_handle_t rootdir;
+    /* VARARG(name,unicode_str); */
+};
+struct open_timer_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+struct set_timer_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    timeout_t    expire;
+    int          period;
+    void*        callback;
+    void*        arg;
+};
+struct set_timer_reply
+{
+    struct reply_header __header;
+    int          signaled;
+};
+
+
+struct cancel_timer_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+};
+struct cancel_timer_reply
+{
+    struct reply_header __header;
+     int         signaled;
+};
+
+
+struct get_timer_info_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+};
+struct get_timer_info_reply
+{
+    struct reply_header __header;
+    timeout_t    when;
+    int          signaled;
+};
+
+
+
+struct get_thread_context_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    unsigned int flags;
+    int          suspend;
+};
+struct get_thread_context_reply
+{
+    struct reply_header __header;
+    int          self;
+    /* VARARG(context,context); */
+};
+
+
+
+struct set_thread_context_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    unsigned int flags;
+    int          suspend;
+    /* VARARG(context,context); */
+};
+struct set_thread_context_reply
+{
+    struct reply_header __header;
+    int          self;
+};
+
+
+
+struct get_selector_entry_request
+{
+    struct request_header __header;
+    obj_handle_t  handle;
+    int           entry;
+};
+struct get_selector_entry_reply
+{
+    struct reply_header __header;
+    unsigned int  base;
+    unsigned int  limit;
+    unsigned char flags;
+};
+
+
+
+struct add_atom_request
+{
+    struct request_header __header;
+    obj_handle_t  table;
+    /* VARARG(name,unicode_str); */
+};
+struct add_atom_reply
+{
+    struct reply_header __header;
+    atom_t        atom;
+};
+
+
+
+struct delete_atom_request
+{
+    struct request_header __header;
+    obj_handle_t  table;
+    atom_t        atom;
+};
+struct delete_atom_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct find_atom_request
+{
+    struct request_header __header;
+    obj_handle_t table;
+    /* VARARG(name,unicode_str); */
+};
+struct find_atom_reply
+{
+    struct reply_header __header;
+    atom_t       atom;
+};
+
+
+
+struct get_atom_information_request
+{
+    struct request_header __header;
+    obj_handle_t table;
+    atom_t       atom;
+};
+struct get_atom_information_reply
+{
+    struct reply_header __header;
+    int          count;
+    int          pinned;
+    data_size_t  total;
+    /* VARARG(name,unicode_str); */
+};
+
+
+
+struct set_atom_information_request
+{
+    struct request_header __header;
+    obj_handle_t table;
+    atom_t       atom;
+    int          pinned;
+};
+struct set_atom_information_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct empty_atom_table_request
+{
+    struct request_header __header;
+    obj_handle_t table;
+    int          if_pinned;
+};
+struct empty_atom_table_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct init_atom_table_request
+{
+    struct request_header __header;
+    int          entries;
+};
+struct init_atom_table_reply
+{
+    struct reply_header __header;
+    obj_handle_t table;
+};
+
+
+
+struct get_msg_queue_request
+{
+    struct request_header __header;
+};
+struct get_msg_queue_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+
+struct set_queue_fd_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+};
+struct set_queue_fd_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct set_queue_mask_request
+{
+    struct request_header __header;
+    unsigned int wake_mask;
+    unsigned int changed_mask;
+    int          skip_wait;
+};
+struct set_queue_mask_reply
+{
+    struct reply_header __header;
+    unsigned int wake_bits;
+    unsigned int changed_bits;
+};
+
+
+
+struct get_queue_status_request
+{
+    struct request_header __header;
+    int          clear;
+};
+struct get_queue_status_reply
+{
+    struct reply_header __header;
+    unsigned int wake_bits;
+    unsigned int changed_bits;
+};
+
+
+
+struct get_process_idle_event_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+};
+struct get_process_idle_event_reply
+{
+    struct reply_header __header;
+    obj_handle_t event;
+};
+
+
+
+struct send_message_request
+{
+    struct request_header __header;
+    thread_id_t     id;
+    int             type;
+    int             flags;
+    user_handle_t   win;
+    unsigned int    msg;
+    unsigned long   wparam;
+    unsigned long   lparam;
+    timeout_t       timeout;
+    /* VARARG(data,message_data); */
+};
+struct send_message_reply
+{
+    struct reply_header __header;
+};
+
+struct post_quit_message_request
+{
+    struct request_header __header;
+    int             exit_code;
+};
+struct post_quit_message_reply
+{
+    struct reply_header __header;
+};
+
+enum message_type
+{
+    MSG_ASCII,
+    MSG_UNICODE,
+    MSG_NOTIFY,
+    MSG_CALLBACK,
+    MSG_CALLBACK_RESULT,
+    MSG_OTHER_PROCESS,
+    MSG_POSTED,
+    MSG_HARDWARE,
+    MSG_WINEVENT
+};
+#define SEND_MSG_ABORT_IF_HUNG  0x01
+
+
+
+struct send_hardware_message_request
+{
+    struct request_header __header;
+    thread_id_t     id;
+    user_handle_t   win;
+    unsigned int    msg;
+    unsigned int    time;
+    unsigned long   wparam;
+    unsigned long   lparam;
+    unsigned long   info;
+    int             x;
+    int             y;
+};
+struct send_hardware_message_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct get_message_request
+{
+    struct request_header __header;
+    unsigned int    flags;
+    user_handle_t   get_win;
+    unsigned int    get_first;
+    unsigned int    get_last;
+    unsigned int    hw_id;
+    unsigned int    wake_mask;
+    unsigned int    changed_mask;
+};
+struct get_message_reply
+{
+    struct reply_header __header;
+    user_handle_t   win;
+    int             type;
+    unsigned int    msg;
+    unsigned long   wparam;
+    unsigned long   lparam;
+    unsigned long   info;
+    int             x;
+    int             y;
+    unsigned int    time;
+    unsigned int    hw_id;
+    unsigned int    active_hooks;
+    data_size_t     total;
+    /* VARARG(data,message_data); */
+};
+
+
+
+struct reply_message_request
+{
+    struct request_header __header;
+    unsigned long   result;
+    int             remove;
+    /* VARARG(data,bytes); */
+};
+struct reply_message_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct accept_hardware_message_request
+{
+    struct request_header __header;
+    unsigned int    hw_id;
+    int             remove;
+    user_handle_t   new_win;
+};
+struct accept_hardware_message_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct get_message_reply_request
+{
+    struct request_header __header;
+    int             cancel;
+};
+struct get_message_reply_reply
+{
+    struct reply_header __header;
+    unsigned long   result;
+    /* VARARG(data,bytes); */
+};
+
+
+
+struct set_win_timer_request
+{
+    struct request_header __header;
+    user_handle_t   win;
+    unsigned int    msg;
+    unsigned int    rate;
+    unsigned long   id;
+    unsigned long   lparam;
+};
+struct set_win_timer_reply
+{
+    struct reply_header __header;
+    unsigned long   id;
+};
+
+
+
+struct kill_win_timer_request
+{
+    struct request_header __header;
+    user_handle_t   win;
+    unsigned int    msg;
+    unsigned long   id;
+};
+struct kill_win_timer_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct is_window_hung_request
+{
+    struct request_header __header;
+    user_handle_t   win;
+};
+struct is_window_hung_reply
+{
+    struct reply_header __header;
+    int is_hung;
+};
+
+
+
+struct get_serial_info_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+};
+struct get_serial_info_reply
+{
+    struct reply_header __header;
+    unsigned int readinterval;
+    unsigned int readconst;
+    unsigned int readmult;
+    unsigned int writeconst;
+    unsigned int writemult;
+    unsigned int eventmask;
+};
+
+
+
+struct set_serial_info_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    int          flags;
+    unsigned int readinterval;
+    unsigned int readconst;
+    unsigned int readmult;
+    unsigned int writeconst;
+    unsigned int writemult;
+    unsigned int eventmask;
+};
+struct set_serial_info_reply
+{
+    struct reply_header __header;
+};
+#define SERIALINFO_SET_TIMEOUTS  0x01
+#define SERIALINFO_SET_MASK      0x02
+
+
+
+struct register_async_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    int          type;
+    int          count;
+    async_data_t async;
+};
+struct register_async_reply
+{
+    struct reply_header __header;
+};
+#define ASYNC_TYPE_READ  0x01
+#define ASYNC_TYPE_WRITE 0x02
+#define ASYNC_TYPE_WAIT  0x03
+
+
+
+struct cancel_async_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+};
+struct cancel_async_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct ioctl_request
+{
+    struct request_header __header;
+    obj_handle_t   handle;
+    ioctl_code_t   code;
+    async_data_t   async;
+    /* VARARG(in_data,bytes); */
+};
+struct ioctl_reply
+{
+    struct reply_header __header;
+    obj_handle_t   wait;
+    unsigned int   options;
+    /* VARARG(out_data,bytes); */
+};
+
+
+
+struct get_ioctl_result_request
+{
+    struct request_header __header;
+    obj_handle_t   handle;
+    void*          user_arg;
+};
+struct get_ioctl_result_reply
+{
+    struct reply_header __header;
+    /* VARARG(out_data,bytes); */
+};
+
+
+
+struct create_named_pipe_request
+{
+    struct request_header __header;
+    unsigned int   access;
+    unsigned int   attributes;
+    obj_handle_t   rootdir;
+    unsigned int   options;
+    unsigned int   flags;
+    unsigned int   maxinstances;
+    unsigned int   outsize;
+    unsigned int   insize;
+    timeout_t      timeout;
+    /* VARARG(name,unicode_str); */
+};
+struct create_named_pipe_reply
+{
+    struct reply_header __header;
+    obj_handle_t   handle;
+};
+
+
+#define NAMED_PIPE_MESSAGE_STREAM_WRITE 0x0001
+#define NAMED_PIPE_MESSAGE_STREAM_READ  0x0002
+#define NAMED_PIPE_NONBLOCKING_MODE     0x0004
+#define NAMED_PIPE_SERVER_END           0x8000
+
+
+struct get_named_pipe_info_request
+{
+    struct request_header __header;
+    obj_handle_t   handle;
+};
+struct get_named_pipe_info_reply
+{
+    struct reply_header __header;
+    unsigned int   flags;
+    unsigned int   maxinstances;
+    unsigned int   instances;
+    unsigned int   outsize;
+    unsigned int   insize;
+};
+
+
+
+struct create_window_request
+{
+    struct request_header __header;
+    user_handle_t  parent;
+    user_handle_t  owner;
+    atom_t         atom;
+    void*          instance;
+    /* VARARG(class,unicode_str); */
+};
+struct create_window_reply
+{
+    struct reply_header __header;
+    user_handle_t  handle;
+    user_handle_t  parent;
+    user_handle_t  owner;
+    int            extra;
+    void*          class_ptr;
+};
+
+
+
+struct destroy_window_request
+{
+    struct request_header __header;
+    user_handle_t  handle;
+};
+struct destroy_window_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct get_desktop_window_request
+{
+    struct request_header __header;
+    int            force;
+};
+struct get_desktop_window_reply
+{
+    struct reply_header __header;
+    user_handle_t  top_window;
+    user_handle_t  msg_window;
+};
+
+
+
+struct set_window_owner_request
+{
+    struct request_header __header;
+    user_handle_t  handle;
+    user_handle_t  owner;
+};
+struct set_window_owner_reply
+{
+    struct reply_header __header;
+    user_handle_t  full_owner;
+    user_handle_t  prev_owner;
+};
+
+
+
+struct get_window_info_request
+{
+    struct request_header __header;
+    user_handle_t  handle;
+};
+struct get_window_info_reply
+{
+    struct reply_header __header;
+    user_handle_t  full_handle;
+    user_handle_t  last_active;
+    process_id_t   pid;
+    thread_id_t    tid;
+    atom_t         atom;
+    int            is_unicode;
+};
+
+
+
+struct set_window_info_request
+{
+    struct request_header __header;
+    unsigned int   flags;
+    user_handle_t  handle;
+    unsigned int   style;
+    unsigned int   ex_style;
+    unsigned int   id;
+    int            is_unicode;
+    void*          instance;
+    unsigned long  user_data;
+    int            extra_offset;
+    data_size_t    extra_size;
+    unsigned long  extra_value;
+};
+struct set_window_info_reply
+{
+    struct reply_header __header;
+    unsigned int   old_style;
+    unsigned int   old_ex_style;
+    unsigned int   old_id;
+    void*          old_instance;
+    unsigned long  old_user_data;
+    unsigned long  old_extra_value;
+};
+#define SET_WIN_STYLE     0x01
+#define SET_WIN_EXSTYLE   0x02
+#define SET_WIN_ID        0x04
+#define SET_WIN_INSTANCE  0x08
+#define SET_WIN_USERDATA  0x10
+#define SET_WIN_EXTRA     0x20
+#define SET_WIN_UNICODE   0x40
+
+
+
+struct set_parent_request
+{
+    struct request_header __header;
+    user_handle_t  handle;
+    user_handle_t  parent;
+};
+struct set_parent_reply
+{
+    struct reply_header __header;
+    user_handle_t  old_parent;
+    user_handle_t  full_parent;
+};
+
+
+
+struct get_window_parents_request
+{
+    struct request_header __header;
+    user_handle_t  handle;
+};
+struct get_window_parents_reply
+{
+    struct reply_header __header;
+    int            count;
+    /* VARARG(parents,user_handles); */
+};
+
+
+
+struct get_window_children_request
+{
+    struct request_header __header;
+    obj_handle_t   desktop;
+    user_handle_t  parent;
+    atom_t         atom;
+    thread_id_t    tid;
+    /* VARARG(class,unicode_str); */
+};
+struct get_window_children_reply
+{
+    struct reply_header __header;
+    int            count;
+    /* VARARG(children,user_handles); */
+};
+
+
+
+struct get_window_children_from_point_request
+{
+    struct request_header __header;
+    user_handle_t  parent;
+    int            x;
+    int            y;
+};
+struct get_window_children_from_point_reply
+{
+    struct reply_header __header;
+    int            count;
+    /* VARARG(children,user_handles); */
+};
+
+
+
+struct get_window_tree_request
+{
+    struct request_header __header;
+    user_handle_t  handle;
+};
+struct get_window_tree_reply
+{
+    struct reply_header __header;
+    user_handle_t  parent;
+    user_handle_t  owner;
+    user_handle_t  next_sibling;
+    user_handle_t  prev_sibling;
+    user_handle_t  first_sibling;
+    user_handle_t  last_sibling;
+    user_handle_t  first_child;
+    user_handle_t  last_child;
+};
+
+
+struct set_window_pos_request
+{
+    struct request_header __header;
+    unsigned int   flags;
+    user_handle_t  handle;
+    user_handle_t  previous;
+    rectangle_t    window;
+    rectangle_t    client;
+    /* VARARG(valid,rectangles); */
+};
+struct set_window_pos_reply
+{
+    struct reply_header __header;
+    unsigned int   new_style;
+    unsigned int   new_ex_style;
+};
+
+
+
+struct get_window_rectangles_request
+{
+    struct request_header __header;
+    user_handle_t  handle;
+};
+struct get_window_rectangles_reply
+{
+    struct reply_header __header;
+    rectangle_t    window;
+    rectangle_t    visible;
+    rectangle_t    client;
+};
+
+
+
+struct get_window_text_request
+{
+    struct request_header __header;
+    user_handle_t  handle;
+};
+struct get_window_text_reply
+{
+    struct reply_header __header;
+    /* VARARG(text,unicode_str); */
+};
+
+
+
+struct set_window_text_request
+{
+    struct request_header __header;
+    user_handle_t  handle;
+    /* VARARG(text,unicode_str); */
+};
+struct set_window_text_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct get_windows_offset_request
+{
+    struct request_header __header;
+    user_handle_t  from;
+    user_handle_t  to;
+};
+struct get_windows_offset_reply
+{
+    struct reply_header __header;
+    int            x;
+    int            y;
+};
+
+
+
+struct get_visible_region_request
+{
+    struct request_header __header;
+    user_handle_t  window;
+    unsigned int   flags;
+};
+struct get_visible_region_reply
+{
+    struct reply_header __header;
+    user_handle_t  top_win;
+    rectangle_t    top_rect;
+    rectangle_t    win_rect;
+    data_size_t    total_size;
+    /* VARARG(region,rectangles); */
+};
+
+
+
+struct get_window_region_request
+{
+    struct request_header __header;
+    user_handle_t  window;
+};
+struct get_window_region_reply
+{
+    struct reply_header __header;
+    data_size_t    total_size;
+    /* VARARG(region,rectangles); */
+};
+
+
+
+struct set_window_region_request
+{
+    struct request_header __header;
+    user_handle_t  window;
+    int            redraw;
+    /* VARARG(region,rectangles); */
+};
+struct set_window_region_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct get_update_region_request
+{
+    struct request_header __header;
+    user_handle_t  window;
+    user_handle_t  from_child;
+    unsigned int   flags;
+};
+struct get_update_region_reply
+{
+    struct reply_header __header;
+    user_handle_t  child;
+    unsigned int   flags;
+    data_size_t    total_size;
+    /* VARARG(region,rectangles); */
+};
+#define UPDATE_NONCLIENT       0x01
+#define UPDATE_ERASE           0x02
+#define UPDATE_PAINT           0x04
+#define UPDATE_INTERNALPAINT   0x08
+#define UPDATE_ALLCHILDREN     0x10
+#define UPDATE_NOCHILDREN      0x20
+#define UPDATE_NOREGION        0x40
+#define UPDATE_DELAYED_ERASE   0x80
+
+
+
+struct update_window_zorder_request
+{
+    struct request_header __header;
+    user_handle_t  window;
+    rectangle_t    rect;
+};
+struct update_window_zorder_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct redraw_window_request
+{
+    struct request_header __header;
+    user_handle_t  window;
+    unsigned int   flags;
+    /* VARARG(region,rectangles); */
+};
+struct redraw_window_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct set_window_property_request
+{
+    struct request_header __header;
+    user_handle_t  window;
+    atom_t         atom;
+    obj_handle_t   handle;
+    /* VARARG(name,unicode_str); */
+};
+struct set_window_property_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct remove_window_property_request
+{
+    struct request_header __header;
+    user_handle_t  window;
+    atom_t         atom;
+    /* VARARG(name,unicode_str); */
+};
+struct remove_window_property_reply
+{
+    struct reply_header __header;
+    obj_handle_t   handle;
+};
+
+
+
+struct get_window_property_request
+{
+    struct request_header __header;
+    user_handle_t  window;
+    atom_t         atom;
+    /* VARARG(name,unicode_str); */
+};
+struct get_window_property_reply
+{
+    struct reply_header __header;
+    obj_handle_t   handle;
+};
+
+
+
+struct get_window_properties_request
+{
+    struct request_header __header;
+    user_handle_t  window;
+};
+struct get_window_properties_reply
+{
+    struct reply_header __header;
+    int            total;
+    /* VARARG(props,properties); */
+};
+
+
+
+struct create_winstation_request
+{
+    struct request_header __header;
+    unsigned int flags;
+    unsigned int access;
+    unsigned int attributes;
+    /* VARARG(name,unicode_str); */
+};
+struct create_winstation_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+
+struct open_winstation_request
+{
+    struct request_header __header;
+    unsigned int access;
+    unsigned int attributes;
+    /* VARARG(name,unicode_str); */
+};
+struct open_winstation_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+
+struct close_winstation_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+};
+struct close_winstation_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct get_process_winstation_request
+{
+    struct request_header __header;
+};
+struct get_process_winstation_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+
+struct set_process_winstation_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+};
+struct set_process_winstation_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct enum_winstation_request
+{
+    struct request_header __header;
+    unsigned int index;
+};
+struct enum_winstation_reply
+{
+    struct reply_header __header;
+    unsigned int next;
+    /* VARARG(name,unicode_str); */
+};
+
+
+
+struct create_desktop_request
+{
+    struct request_header __header;
+    unsigned int flags;
+    unsigned int access;
+    unsigned int attributes;
+    /* VARARG(name,unicode_str); */
+};
+struct create_desktop_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+
+struct open_desktop_request
+{
+    struct request_header __header;
+    obj_handle_t winsta;
+    unsigned int flags;
+    unsigned int access;
+    unsigned int attributes;
+    /* VARARG(name,unicode_str); */
+};
+struct open_desktop_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+
+struct close_desktop_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+};
+struct close_desktop_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct get_thread_desktop_request
+{
+    struct request_header __header;
+    thread_id_t  tid;
+};
+struct get_thread_desktop_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+
+struct set_thread_desktop_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+};
+struct set_thread_desktop_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct enum_desktop_request
+{
+    struct request_header __header;
+    obj_handle_t winstation;
+    unsigned int index;
+};
+struct enum_desktop_reply
+{
+    struct reply_header __header;
+    unsigned int next;
+    /* VARARG(name,unicode_str); */
+};
+
+
+
+struct set_user_object_info_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+    unsigned int flags;
+    unsigned int obj_flags;
+};
+struct set_user_object_info_reply
+{
+    struct reply_header __header;
+    int          is_desktop;
+    unsigned int old_obj_flags;
+    /* VARARG(name,unicode_str); */
+};
+#define SET_USER_OBJECT_FLAGS 1
+
+
+
+struct attach_thread_input_request
+{
+    struct request_header __header;
+    thread_id_t    tid_from;
+    thread_id_t    tid_to;
+    int            attach;
+};
+struct attach_thread_input_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct get_thread_input_request
+{
+    struct request_header __header;
+    thread_id_t    tid;
+};
+struct get_thread_input_reply
+{
+    struct reply_header __header;
+    user_handle_t  focus;
+    user_handle_t  capture;
+    user_handle_t  active;
+    user_handle_t  foreground;
+    user_handle_t  menu_owner;
+    user_handle_t  move_size;
+    user_handle_t  caret;
+    rectangle_t    rect;
+};
+
+
+
+struct get_last_input_time_request
+{
+    struct request_header __header;
+};
+struct get_last_input_time_reply
+{
+    struct reply_header __header;
+    unsigned int time;
+};
+
+
+
+struct get_key_state_request
+{
+    struct request_header __header;
+    thread_id_t    tid;
+    int            key;
+};
+struct get_key_state_reply
+{
+    struct reply_header __header;
+    unsigned char  state;
+    /* VARARG(keystate,bytes); */
+};
+
+
+struct set_key_state_request
+{
+    struct request_header __header;
+    thread_id_t    tid;
+    /* VARARG(keystate,bytes); */
+};
+struct set_key_state_reply
+{
+    struct reply_header __header;
+};
+
+
+struct set_foreground_window_request
+{
+    struct request_header __header;
+    user_handle_t  handle;
+};
+struct set_foreground_window_reply
+{
+    struct reply_header __header;
+    user_handle_t  previous;
+    int            send_msg_old;
+    int            send_msg_new;
+};
+
+
+struct set_focus_window_request
+{
+    struct request_header __header;
+    user_handle_t  handle;
+};
+struct set_focus_window_reply
+{
+    struct reply_header __header;
+    user_handle_t  previous;
+};
+
+
+struct set_active_window_request
+{
+    struct request_header __header;
+    user_handle_t  handle;
+};
+struct set_active_window_reply
+{
+    struct reply_header __header;
+    user_handle_t  previous;
+};
+
+
+struct set_capture_window_request
+{
+    struct request_header __header;
+    user_handle_t  handle;
+    unsigned int   flags;
+};
+struct set_capture_window_reply
+{
+    struct reply_header __header;
+    user_handle_t  previous;
+    user_handle_t  full_handle;
+};
+#define CAPTURE_MENU     0x01
+#define CAPTURE_MOVESIZE 0x02
+
+
+
+struct set_caret_window_request
+{
+    struct request_header __header;
+    user_handle_t  handle;
+    int            width;
+    int            height;
+};
+struct set_caret_window_reply
+{
+    struct reply_header __header;
+    user_handle_t  previous;
+    rectangle_t    old_rect;
+    int            old_hide;
+    int            old_state;
+};
+
+
+
+struct set_caret_info_request
+{
+    struct request_header __header;
+    unsigned int   flags;
+    user_handle_t  handle;
+    int            x;
+    int            y;
+    int            hide;
+    int            state;
+};
+struct set_caret_info_reply
+{
+    struct reply_header __header;
+    user_handle_t  full_handle;
+    rectangle_t    old_rect;
+    int            old_hide;
+    int            old_state;
+};
+#define SET_CARET_POS        0x01
+#define SET_CARET_HIDE       0x02
+#define SET_CARET_STATE      0x04
+
+
+
+struct set_hook_request
+{
+    struct request_header __header;
+    int            id;
+    process_id_t   pid;
+    thread_id_t    tid;
+    int            event_min;
+    int            event_max;
+    int            flags;
+    void*          proc;
+    int            unicode;
+    /* VARARG(module,unicode_str); */
+};
+struct set_hook_reply
+{
+    struct reply_header __header;
+    user_handle_t  handle;
+    unsigned int   active_hooks;
+};
+
+
+
+struct remove_hook_request
+{
+    struct request_header __header;
+    user_handle_t  handle;
+    int            id;
+    void*          proc;
+};
+struct remove_hook_reply
+{
+    struct reply_header __header;
+    unsigned int   active_hooks;
+};
+
+
+
+struct start_hook_chain_request
+{
+    struct request_header __header;
+    int            id;
+    int            event;
+    user_handle_t  window;
+    int            object_id;
+    int            child_id;
+};
+struct start_hook_chain_reply
+{
+    struct reply_header __header;
+    user_handle_t  handle;
+    process_id_t   pid;
+    thread_id_t    tid;
+    void*          proc;
+    int            unicode;
+    unsigned int   active_hooks;
+    /* VARARG(module,unicode_str); */
+};
+
+
+
+struct finish_hook_chain_request
+{
+    struct request_header __header;
+    int            id;
+};
+struct finish_hook_chain_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct get_hook_info_request
+{
+    struct request_header __header;
+    user_handle_t  handle;
+    int            get_next;
+    int            event;
+    user_handle_t  window;
+    int            object_id;
+    int            child_id;
+};
+struct get_hook_info_reply
+{
+    struct reply_header __header;
+    user_handle_t  handle;
+    int            id;
+    process_id_t   pid;
+    thread_id_t    tid;
+    void*          proc;
+    int            unicode;
+    /* VARARG(module,unicode_str); */
+};
+
+
+
+struct create_class_request
+{
+    struct request_header __header;
+    int            local;
+    atom_t         atom;
+    unsigned int   style;
+    void*          instance;
+    int            extra;
+    int            win_extra;
+    void*          client_ptr;
+    /* VARARG(name,unicode_str); */
+};
+struct create_class_reply
+{
+    struct reply_header __header;
+    atom_t         atom;
+};
+
+
+
+struct destroy_class_request
+{
+    struct request_header __header;
+    atom_t         atom;
+    void*          instance;
+    /* VARARG(name,unicode_str); */
+};
+struct destroy_class_reply
+{
+    struct reply_header __header;
+    void*          client_ptr;
+};
+
+
+
+struct set_class_info_request
+{
+    struct request_header __header;
+    user_handle_t  window;
+    unsigned int   flags;
+    atom_t         atom;
+    unsigned int   style;
+    int            win_extra;
+    void*          instance;
+    int            extra_offset;
+    data_size_t    extra_size;
+    unsigned long  extra_value;
+};
+struct set_class_info_reply
+{
+    struct reply_header __header;
+    atom_t         old_atom;
+    unsigned int   old_style;
+    int            old_extra;
+    int            old_win_extra;
+    void*          old_instance;
+    unsigned long  old_extra_value;
+};
+#define SET_CLASS_ATOM      0x0001
+#define SET_CLASS_STYLE     0x0002
+#define SET_CLASS_WINEXTRA  0x0004
+#define SET_CLASS_INSTANCE  0x0008
+#define SET_CLASS_EXTRA     0x0010
+
+
+
+struct set_clipboard_info_request
+{
+    struct request_header __header;
+    unsigned int   flags;
+    user_handle_t  clipboard;
+    user_handle_t  owner;
+    user_handle_t  viewer;
+    unsigned int   seqno;
+};
+struct set_clipboard_info_reply
+{
+    struct reply_header __header;
+    unsigned int   flags;
+    user_handle_t  old_clipboard;
+    user_handle_t  old_owner;
+    user_handle_t  old_viewer;
+    unsigned int   seqno;
+};
+
+#define SET_CB_OPEN      0x001
+#define SET_CB_OWNER     0x002
+#define SET_CB_VIEWER    0x004
+#define SET_CB_SEQNO     0x008
+#define SET_CB_RELOWNER  0x010
+#define SET_CB_CLOSE     0x020
+#define CB_OPEN          0x040
+#define CB_OWNER         0x080
+#define CB_PROCESS       0x100
+
+
+
+struct open_token_request
+{
+    struct request_header __header;
+    obj_handle_t   handle;
+    unsigned int   access;
+    unsigned int   attributes;
+    unsigned int   flags;
+};
+struct open_token_reply
+{
+    struct reply_header __header;
+    obj_handle_t   token;
+};
+#define OPEN_TOKEN_THREAD   1
+#define OPEN_TOKEN_AS_SELF  2
+
+
+
+struct set_global_windows_request
+{
+    struct request_header __header;
+    unsigned int   flags;
+    user_handle_t  shell_window;
+    user_handle_t  shell_listview;
+    user_handle_t  progman_window;
+    user_handle_t  taskman_window;
+};
+struct set_global_windows_reply
+{
+    struct reply_header __header;
+    user_handle_t  old_shell_window;
+    user_handle_t  old_shell_listview;
+    user_handle_t  old_progman_window;
+    user_handle_t  old_taskman_window;
+};
+#define SET_GLOBAL_SHELL_WINDOWS   0x01
+#define SET_GLOBAL_PROGMAN_WINDOW  0x02
+#define SET_GLOBAL_TASKMAN_WINDOW  0x04
+
+
+struct adjust_token_privileges_request
+{
+    struct request_header __header;
+    obj_handle_t  handle;
+    int           disable_all;
+    int           get_modified_state;
+    /* VARARG(privileges,LUID_AND_ATTRIBUTES); */
+};
+struct adjust_token_privileges_reply
+{
+    struct reply_header __header;
+    unsigned int  len;
+    /* VARARG(privileges,LUID_AND_ATTRIBUTES); */
+};
+
+
+struct get_token_privileges_request
+{
+    struct request_header __header;
+    obj_handle_t  handle;
+};
+struct get_token_privileges_reply
+{
+    struct reply_header __header;
+    unsigned int  len;
+    /* VARARG(privileges,LUID_AND_ATTRIBUTES); */
+};
+
+
+struct check_token_privileges_request
+{
+    struct request_header __header;
+    obj_handle_t  handle;
+    int           all_required;
+    /* VARARG(privileges,LUID_AND_ATTRIBUTES); */
+};
+struct check_token_privileges_reply
+{
+    struct reply_header __header;
+    int           has_privileges;
+    /* VARARG(privileges,LUID_AND_ATTRIBUTES); */
+};
+
+struct duplicate_token_request
+{
+    struct request_header __header;
+    obj_handle_t  handle;
+    unsigned int  access;
+    unsigned int  attributes;
+    int           primary;
+    int           impersonation_level;
+};
+struct duplicate_token_reply
+{
+    struct reply_header __header;
+    obj_handle_t  new_handle;
+};
+
+struct access_check_request
+{
+    struct request_header __header;
+    obj_handle_t    handle;
+    unsigned int    desired_access;
+    unsigned int    mapping_read;
+    unsigned int    mapping_write;
+    unsigned int    mapping_execute;
+    unsigned int    mapping_all;
+    /* VARARG(sd,security_descriptor); */
+};
+struct access_check_reply
+{
+    struct reply_header __header;
+    unsigned int    access_granted;
+    unsigned int    access_status;
+    unsigned int    privileges_len;
+    /* VARARG(privileges,LUID_AND_ATTRIBUTES); */
+};
+
+struct get_token_user_request
+{
+    struct request_header __header;
+    obj_handle_t    handle;
+};
+struct get_token_user_reply
+{
+    struct reply_header __header;
+    data_size_t     user_len;
+    /* VARARG(user,SID); */
+};
+
+struct get_token_groups_request
+{
+    struct request_header __header;
+    obj_handle_t    handle;
+};
+struct get_token_groups_reply
+{
+    struct reply_header __header;
+    data_size_t     user_len;
+    /* VARARG(user,token_groups); */
+};
+
+struct set_security_object_request
+{
+    struct request_header __header;
+    obj_handle_t    handle;
+    unsigned int    security_info;
+    /* VARARG(sd,security_descriptor); */
+};
+struct set_security_object_reply
+{
+    struct reply_header __header;
+};
+
+struct get_security_object_request
+{
+    struct request_header __header;
+    obj_handle_t    handle;
+    unsigned int    security_info;
+};
+struct get_security_object_reply
+{
+    struct reply_header __header;
+    unsigned int    sd_len;
+    /* VARARG(sd,security_descriptor); */
+};
+
+
+struct create_mailslot_request
+{
+    struct request_header __header;
+    unsigned int   access;
+    unsigned int   attributes;
+    obj_handle_t   rootdir;
+    unsigned int   max_msgsize;
+    timeout_t      read_timeout;
+    /* VARARG(name,unicode_str); */
+};
+struct create_mailslot_reply
+{
+    struct reply_header __header;
+    obj_handle_t   handle;
+};
+
+
+
+struct set_mailslot_info_request
+{
+    struct request_header __header;
+    obj_handle_t   handle;
+    unsigned int   flags;
+    timeout_t      read_timeout;
+};
+struct set_mailslot_info_reply
+{
+    struct reply_header __header;
+    unsigned int   max_msgsize;
+    timeout_t      read_timeout;
+};
+#define MAILSLOT_SET_READ_TIMEOUT  1
+
+
+
+struct create_directory_request
+{
+    struct request_header __header;
+    unsigned int   access;
+    unsigned int   attributes;
+    obj_handle_t   rootdir;
+    /* VARARG(directory_name,unicode_str); */
+};
+struct create_directory_reply
+{
+    struct reply_header __header;
+    obj_handle_t   handle;
+};
+
+
+
+struct open_directory_request
+{
+    struct request_header __header;
+    unsigned int   access;
+    unsigned int   attributes;
+    obj_handle_t   rootdir;
+    /* VARARG(directory_name,unicode_str); */
+};
+struct open_directory_reply
+{
+    struct reply_header __header;
+    obj_handle_t   handle;
+};
+
+
+
+struct get_directory_entry_request
+{
+    struct request_header __header;
+    obj_handle_t   handle;
+    unsigned int   index;
+};
+struct get_directory_entry_reply
+{
+    struct reply_header __header;
+    size_t         name_len;
+    /* VARARG(name,unicode_str,name_len); */
+    /* VARARG(type,unicode_str); */
+};
+
+
+
+struct create_symlink_request
+{
+    struct request_header __header;
+    unsigned int   access;
+    unsigned int   attributes;
+    obj_handle_t   rootdir;
+    data_size_t    name_len;
+    /* VARARG(name,unicode_str,name_len); */
+    /* VARARG(target_name,unicode_str); */
+};
+struct create_symlink_reply
+{
+    struct reply_header __header;
+    obj_handle_t   handle;
+};
+
+
+
+struct open_symlink_request
+{
+    struct request_header __header;
+    unsigned int   access;
+    unsigned int   attributes;
+    obj_handle_t   rootdir;
+    /* VARARG(name,unicode_str); */
+};
+struct open_symlink_reply
+{
+    struct reply_header __header;
+    obj_handle_t   handle;
+};
+
+
+
+struct query_symlink_request
+{
+    struct request_header __header;
+    obj_handle_t   handle;
+};
+struct query_symlink_reply
+{
+    struct reply_header __header;
+    /* VARARG(target_name,unicode_str); */
+};
+
+
+
+struct get_object_info_request
+{
+    struct request_header __header;
+    obj_handle_t   handle;
+};
+struct get_object_info_reply
+{
+    struct reply_header __header;
+    unsigned int   access;
+    unsigned int   ref_count;
+};
+
+
+
+struct unlink_object_request
+{
+    struct request_header __header;
+    obj_handle_t   handle;
+};
+struct unlink_object_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct get_token_impersonation_level_request
+{
+    struct request_header __header;
+    obj_handle_t   handle;
+};
+struct get_token_impersonation_level_reply
+{
+    struct reply_header __header;
+    int            impersonation_level;
+};
+
+
+struct allocate_locally_unique_id_request
+{
+    struct request_header __header;
+};
+struct allocate_locally_unique_id_reply
+{
+    struct reply_header __header;
+    luid_t         luid;
+};
+
+
+
+struct create_device_manager_request
+{
+    struct request_header __header;
+    unsigned int access;
+    unsigned int attributes;
+};
+struct create_device_manager_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+
+struct create_device_request
+{
+    struct request_header __header;
+    unsigned int access;
+    unsigned int attributes;
+    obj_handle_t rootdir;
+    obj_handle_t manager;
+    void*        user_ptr;
+    /* VARARG(name,unicode_str); */
+};
+struct create_device_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+
+struct delete_device_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+};
+struct delete_device_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct get_next_device_request_request
+{
+    struct request_header __header;
+    obj_handle_t manager;
+    obj_handle_t prev;
+    unsigned int status;
+    /* VARARG(prev_data,bytes); */
+};
+struct get_next_device_request_reply
+{
+    struct reply_header __header;
+    obj_handle_t next;
+    ioctl_code_t code;
+    void*        user_ptr;
+    data_size_t  in_size;
+    data_size_t  out_size;
+    /* VARARG(next_data,bytes); */
+};
+
+
+
+struct make_process_system_request
+{
+    struct request_header __header;
+};
+struct make_process_system_reply
+{
+    struct reply_header __header;
+    obj_handle_t event;
+};
+
+
+
+struct get_token_statistics_request
+{
+    struct request_header __header;
+    obj_handle_t   handle;
+};
+struct get_token_statistics_reply
+{
+    struct reply_header __header;
+    luid_t         token_id;
+    luid_t         modified_id;
+    int            primary;
+    int            impersonation_level;
+    int            group_count;
+    int            privilege_count;
+};
+
+
+
+struct create_completion_request
+{
+    struct request_header __header;
+    unsigned int access;
+    unsigned int attributes;
+    unsigned int concurrent;
+    obj_handle_t rootdir;
+    /* VARARG(filename,string); */
+};
+struct create_completion_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+
+struct open_completion_request
+{
+    struct request_header __header;
+    unsigned int access;
+    unsigned int attributes;
+    obj_handle_t rootdir;
+    /* VARARG(filename,string); */
+};
+struct open_completion_reply
+{
+    struct reply_header __header;
+    obj_handle_t handle;
+};
+
+
+
+struct add_completion_request
+{
+    struct request_header __header;
+    obj_handle_t  handle;
+    unsigned long ckey;
+    unsigned long cvalue;
+    unsigned long information;
+    unsigned int  status;
+};
+struct add_completion_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct remove_completion_request
+{
+    struct request_header __header;
+    obj_handle_t handle;
+};
+struct remove_completion_reply
+{
+    struct reply_header __header;
+    unsigned long ckey;
+    unsigned long cvalue;
+    unsigned long information;
+    unsigned int  status;
+};
+
+
+
+struct query_completion_request
+{
+    struct request_header __header;
+    obj_handle_t  handle;
+};
+struct query_completion_reply
+{
+    struct reply_header __header;
+    unsigned int  depth;
+};
+
+
+
+struct set_completion_info_request
+{
+    struct request_header __header;
+    obj_handle_t  handle;
+    obj_handle_t  chandle;
+    unsigned long ckey;
+};
+struct set_completion_info_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct add_fd_completion_request
+{
+    struct request_header __header;
+    obj_handle_t   handle;
+    unsigned long  cvalue;
+    unsigned int   status;
+    unsigned long  information;
+};
+struct add_fd_completion_reply
+{
+    struct reply_header __header;
+};
+
+
+
+struct get_window_layered_info_request
+{
+    struct request_header __header;
+    user_handle_t  handle;
+};
+struct get_window_layered_info_reply
+{
+    struct reply_header __header;
+    unsigned int   color_key;
+    unsigned int   alpha;
+    unsigned int   flags;
+};
+
+
+
+struct set_window_layered_info_request
+{
+    struct request_header __header;
+    user_handle_t  handle;
+    unsigned int   color_key;
+    unsigned int   alpha;
+    unsigned int   flags;
+};
+struct set_window_layered_info_reply
+{
+    struct reply_header __header;
+};
+
+
+enum request
+{
+    REQ_new_process,
+    REQ_get_new_process_info,
+    REQ_new_thread,
+    REQ_get_startup_info,
+    REQ_init_process_done,
+    REQ_init_thread,
+    REQ_terminate_process,
+    REQ_terminate_thread,
+    REQ_get_process_info,
+    REQ_set_process_info,
+    REQ_get_thread_info,
+    REQ_set_thread_info,
+    REQ_get_dll_info,
+    REQ_suspend_thread,
+    REQ_resume_thread,
+    REQ_load_dll,
+    REQ_unload_dll,
+    REQ_queue_apc,
+    REQ_get_apc_result,
+    REQ_close_handle,
+    REQ_set_handle_info,
+    REQ_dup_handle,
+    REQ_open_process,
+    REQ_open_thread,
+    REQ_select,
+    REQ_create_event,
+    REQ_event_op,
+    REQ_open_event,
+    REQ_create_mutex,
+    REQ_release_mutex,
+    REQ_open_mutex,
+    REQ_create_semaphore,
+    REQ_release_semaphore,
+    REQ_open_semaphore,
+    REQ_create_file,
+    REQ_open_file_object,
+    REQ_alloc_file_handle,
+    REQ_get_handle_fd,
+    REQ_flush_file,
+    REQ_lock_file,
+    REQ_unlock_file,
+    REQ_create_socket,
+    REQ_accept_socket,
+    REQ_set_socket_event,
+    REQ_get_socket_event,
+    REQ_enable_socket_event,
+    REQ_set_socket_deferred,
+    REQ_alloc_console,
+    REQ_free_console,
+    REQ_get_console_renderer_events,
+    REQ_open_console,
+    REQ_get_console_wait_event,
+    REQ_get_console_mode,
+    REQ_set_console_mode,
+    REQ_set_console_input_info,
+    REQ_get_console_input_info,
+    REQ_append_console_input_history,
+    REQ_get_console_input_history,
+    REQ_create_console_output,
+    REQ_set_console_output_info,
+    REQ_get_console_output_info,
+    REQ_write_console_input,
+    REQ_read_console_input,
+    REQ_write_console_output,
+    REQ_fill_console_output,
+    REQ_read_console_output,
+    REQ_move_console_output,
+    REQ_send_console_signal,
+    REQ_read_directory_changes,
+    REQ_read_change,
+    REQ_create_mapping,
+    REQ_open_mapping,
+    REQ_get_mapping_info,
+    REQ_get_mapping_committed_range,
+    REQ_add_mapping_committed_range,
+    REQ_create_snapshot,
+    REQ_next_process,
+    REQ_next_thread,
+    REQ_next_module,
+    REQ_wait_debug_event,
+    REQ_queue_exception_event,
+    REQ_get_exception_status,
+    REQ_output_debug_string,
+    REQ_continue_debug_event,
+    REQ_debug_process,
+    REQ_debug_break,
+    REQ_set_debugger_kill_on_exit,
+    REQ_read_process_memory,
+    REQ_write_process_memory,
+    REQ_create_key,
+    REQ_open_key,
+    REQ_delete_key,
+    REQ_flush_key,
+    REQ_enum_key,
+    REQ_set_key_value,
+    REQ_get_key_value,
+    REQ_enum_key_value,
+    REQ_delete_key_value,
+    REQ_load_registry,
+    REQ_unload_registry,
+    REQ_save_registry,
+    REQ_set_registry_notification,
+    REQ_create_timer,
+    REQ_open_timer,
+    REQ_set_timer,
+    REQ_cancel_timer,
+    REQ_get_timer_info,
+    REQ_get_thread_context,
+    REQ_set_thread_context,
+    REQ_get_selector_entry,
+    REQ_add_atom,
+    REQ_delete_atom,
+    REQ_find_atom,
+    REQ_get_atom_information,
+    REQ_set_atom_information,
+    REQ_empty_atom_table,
+    REQ_init_atom_table,
+    REQ_get_msg_queue,
+    REQ_set_queue_fd,
+    REQ_set_queue_mask,
+    REQ_get_queue_status,
+    REQ_get_process_idle_event,
+    REQ_send_message,
+    REQ_post_quit_message,
+    REQ_send_hardware_message,
+    REQ_get_message,
+    REQ_reply_message,
+    REQ_accept_hardware_message,
+    REQ_get_message_reply,
+    REQ_set_win_timer,
+    REQ_kill_win_timer,
+    REQ_is_window_hung,
+    REQ_get_serial_info,
+    REQ_set_serial_info,
+    REQ_register_async,
+    REQ_cancel_async,
+    REQ_ioctl,
+    REQ_get_ioctl_result,
+    REQ_create_named_pipe,
+    REQ_get_named_pipe_info,
+    REQ_create_window,
+    REQ_destroy_window,
+    REQ_get_desktop_window,
+    REQ_set_window_owner,
+    REQ_get_window_info,
+    REQ_set_window_info,
+    REQ_set_parent,
+    REQ_get_window_parents,
+    REQ_get_window_children,
+    REQ_get_window_children_from_point,
+    REQ_get_window_tree,
+    REQ_set_window_pos,
+    REQ_get_window_rectangles,
+    REQ_get_window_text,
+    REQ_set_window_text,
+    REQ_get_windows_offset,
+    REQ_get_visible_region,
+    REQ_get_window_region,
+    REQ_set_window_region,
+    REQ_get_update_region,
+    REQ_update_window_zorder,
+    REQ_redraw_window,
+    REQ_set_window_property,
+    REQ_remove_window_property,
+    REQ_get_window_property,
+    REQ_get_window_properties,
+    REQ_create_winstation,
+    REQ_open_winstation,
+    REQ_close_winstation,
+    REQ_get_process_winstation,
+    REQ_set_process_winstation,
+    REQ_enum_winstation,
+    REQ_create_desktop,
+    REQ_open_desktop,
+    REQ_close_desktop,
+    REQ_get_thread_desktop,
+    REQ_set_thread_desktop,
+    REQ_enum_desktop,
+    REQ_set_user_object_info,
+    REQ_attach_thread_input,
+    REQ_get_thread_input,
+    REQ_get_last_input_time,
+    REQ_get_key_state,
+    REQ_set_key_state,
+    REQ_set_foreground_window,
+    REQ_set_focus_window,
+    REQ_set_active_window,
+    REQ_set_capture_window,
+    REQ_set_caret_window,
+    REQ_set_caret_info,
+    REQ_set_hook,
+    REQ_remove_hook,
+    REQ_start_hook_chain,
+    REQ_finish_hook_chain,
+    REQ_get_hook_info,
+    REQ_create_class,
+    REQ_destroy_class,
+    REQ_set_class_info,
+    REQ_set_clipboard_info,
+    REQ_open_token,
+    REQ_set_global_windows,
+    REQ_adjust_token_privileges,
+    REQ_get_token_privileges,
+    REQ_check_token_privileges,
+    REQ_duplicate_token,
+    REQ_access_check,
+    REQ_get_token_user,
+    REQ_get_token_groups,
+    REQ_set_security_object,
+    REQ_get_security_object,
+    REQ_create_mailslot,
+    REQ_set_mailslot_info,
+    REQ_create_directory,
+    REQ_open_directory,
+    REQ_get_directory_entry,
+    REQ_create_symlink,
+    REQ_open_symlink,
+    REQ_query_symlink,
+    REQ_get_object_info,
+    REQ_unlink_object,
+    REQ_get_token_impersonation_level,
+    REQ_allocate_locally_unique_id,
+    REQ_create_device_manager,
+    REQ_create_device,
+    REQ_delete_device,
+    REQ_get_next_device_request,
+    REQ_make_process_system,
+    REQ_get_token_statistics,
+    REQ_create_completion,
+    REQ_open_completion,
+    REQ_add_completion,
+    REQ_remove_completion,
+    REQ_query_completion,
+    REQ_set_completion_info,
+    REQ_add_fd_completion,
+    REQ_get_window_layered_info,
+    REQ_set_window_layered_info,
+    REQ_NB_REQUESTS
+};
+
+union generic_request
+{
+    struct request_max_size max_size;
+    struct request_header request_header;
+    struct new_process_request new_process_request;
+    struct get_new_process_info_request get_new_process_info_request;
+    struct new_thread_request new_thread_request;
+    struct get_startup_info_request get_startup_info_request;
+    struct init_process_done_request init_process_done_request;
+    struct init_thread_request init_thread_request;
+    struct terminate_process_request terminate_process_request;
+    struct terminate_thread_request terminate_thread_request;
+    struct get_process_info_request get_process_info_request;
+    struct set_process_info_request set_process_info_request;
+    struct get_thread_info_request get_thread_info_request;
+    struct set_thread_info_request set_thread_info_request;
+    struct get_dll_info_request get_dll_info_request;
+    struct suspend_thread_request suspend_thread_request;
+    struct resume_thread_request resume_thread_request;
+    struct load_dll_request load_dll_request;
+    struct unload_dll_request unload_dll_request;
+    struct queue_apc_request queue_apc_request;
+    struct get_apc_result_request get_apc_result_request;
+    struct close_handle_request close_handle_request;
+    struct set_handle_info_request set_handle_info_request;
+    struct dup_handle_request dup_handle_request;
+    struct open_process_request open_process_request;
+    struct open_thread_request open_thread_request;
+    struct select_request select_request;
+    struct create_event_request create_event_request;
+    struct event_op_request event_op_request;
+    struct open_event_request open_event_request;
+    struct create_mutex_request create_mutex_request;
+    struct release_mutex_request release_mutex_request;
+    struct open_mutex_request open_mutex_request;
+    struct create_semaphore_request create_semaphore_request;
+    struct release_semaphore_request release_semaphore_request;
+    struct open_semaphore_request open_semaphore_request;
+    struct create_file_request create_file_request;
+    struct open_file_object_request open_file_object_request;
+    struct alloc_file_handle_request alloc_file_handle_request;
+    struct get_handle_fd_request get_handle_fd_request;
+    struct flush_file_request flush_file_request;
+    struct lock_file_request lock_file_request;
+    struct unlock_file_request unlock_file_request;
+    struct create_socket_request create_socket_request;
+    struct accept_socket_request accept_socket_request;
+    struct set_socket_event_request set_socket_event_request;
+    struct get_socket_event_request get_socket_event_request;
+    struct enable_socket_event_request enable_socket_event_request;
+    struct set_socket_deferred_request set_socket_deferred_request;
+    struct alloc_console_request alloc_console_request;
+    struct free_console_request free_console_request;
+    struct get_console_renderer_events_request get_console_renderer_events_request;
+    struct open_console_request open_console_request;
+    struct get_console_wait_event_request get_console_wait_event_request;
+    struct get_console_mode_request get_console_mode_request;
+    struct set_console_mode_request set_console_mode_request;
+    struct set_console_input_info_request set_console_input_info_request;
+    struct get_console_input_info_request get_console_input_info_request;
+    struct append_console_input_history_request append_console_input_history_request;
+    struct get_console_input_history_request get_console_input_history_request;
+    struct create_console_output_request create_console_output_request;
+    struct set_console_output_info_request set_console_output_info_request;
+    struct get_console_output_info_request get_console_output_info_request;
+    struct write_console_input_request write_console_input_request;
+    struct read_console_input_request read_console_input_request;
+    struct write_console_output_request write_console_output_request;
+    struct fill_console_output_request fill_console_output_request;
+    struct read_console_output_request read_console_output_request;
+    struct move_console_output_request move_console_output_request;
+    struct send_console_signal_request send_console_signal_request;
+    struct read_directory_changes_request read_directory_changes_request;
+    struct read_change_request read_change_request;
+    struct create_mapping_request create_mapping_request;
+    struct open_mapping_request open_mapping_request;
+    struct get_mapping_info_request get_mapping_info_request;
+    struct get_mapping_committed_range_request get_mapping_committed_range_request;
+    struct add_mapping_committed_range_request add_mapping_committed_range_request;
+    struct create_snapshot_request create_snapshot_request;
+    struct next_process_request next_process_request;
+    struct next_thread_request next_thread_request;
+    struct next_module_request next_module_request;
+    struct wait_debug_event_request wait_debug_event_request;
+    struct queue_exception_event_request queue_exception_event_request;
+    struct get_exception_status_request get_exception_status_request;
+    struct output_debug_string_request output_debug_string_request;
+    struct continue_debug_event_request continue_debug_event_request;
+    struct debug_process_request debug_process_request;
+    struct debug_break_request debug_break_request;
+    struct set_debugger_kill_on_exit_request set_debugger_kill_on_exit_request;
+    struct read_process_memory_request read_process_memory_request;
+    struct write_process_memory_request write_process_memory_request;
+    struct create_key_request create_key_request;
+    struct open_key_request open_key_request;
+    struct delete_key_request delete_key_request;
+    struct flush_key_request flush_key_request;
+    struct enum_key_request enum_key_request;
+    struct set_key_value_request set_key_value_request;
+    struct get_key_value_request get_key_value_request;
+    struct enum_key_value_request enum_key_value_request;
+    struct delete_key_value_request delete_key_value_request;
+    struct load_registry_request load_registry_request;
+    struct unload_registry_request unload_registry_request;
+    struct save_registry_request save_registry_request;
+    struct set_registry_notification_request set_registry_notification_request;
+    struct create_timer_request create_timer_request;
+    struct open_timer_request open_timer_request;
+    struct set_timer_request set_timer_request;
+    struct cancel_timer_request cancel_timer_request;
+    struct get_timer_info_request get_timer_info_request;
+    struct get_thread_context_request get_thread_context_request;
+    struct set_thread_context_request set_thread_context_request;
+    struct get_selector_entry_request get_selector_entry_request;
+    struct add_atom_request add_atom_request;
+    struct delete_atom_request delete_atom_request;
+    struct find_atom_request find_atom_request;
+    struct get_atom_information_request get_atom_information_request;
+    struct set_atom_information_request set_atom_information_request;
+    struct empty_atom_table_request empty_atom_table_request;
+    struct init_atom_table_request init_atom_table_request;
+    struct get_msg_queue_request get_msg_queue_request;
+    struct set_queue_fd_request set_queue_fd_request;
+    struct set_queue_mask_request set_queue_mask_request;
+    struct get_queue_status_request get_queue_status_request;
+    struct get_process_idle_event_request get_process_idle_event_request;
+    struct send_message_request send_message_request;
+    struct post_quit_message_request post_quit_message_request;
+    struct send_hardware_message_request send_hardware_message_request;
+    struct get_message_request get_message_request;
+    struct reply_message_request reply_message_request;
+    struct accept_hardware_message_request accept_hardware_message_request;
+    struct get_message_reply_request get_message_reply_request;
+    struct set_win_timer_request set_win_timer_request;
+    struct kill_win_timer_request kill_win_timer_request;
+    struct is_window_hung_request is_window_hung_request;
+    struct get_serial_info_request get_serial_info_request;
+    struct set_serial_info_request set_serial_info_request;
+    struct register_async_request register_async_request;
+    struct cancel_async_request cancel_async_request;
+    struct ioctl_request ioctl_request;
+    struct get_ioctl_result_request get_ioctl_result_request;
+    struct create_named_pipe_request create_named_pipe_request;
+    struct get_named_pipe_info_request get_named_pipe_info_request;
+    struct create_window_request create_window_request;
+    struct destroy_window_request destroy_window_request;
+    struct get_desktop_window_request get_desktop_window_request;
+    struct set_window_owner_request set_window_owner_request;
+    struct get_window_info_request get_window_info_request;
+    struct set_window_info_request set_window_info_request;
+    struct set_parent_request set_parent_request;
+    struct get_window_parents_request get_window_parents_request;
+    struct get_window_children_request get_window_children_request;
+    struct get_window_children_from_point_request get_window_children_from_point_request;
+    struct get_window_tree_request get_window_tree_request;
+    struct set_window_pos_request set_window_pos_request;
+    struct get_window_rectangles_request get_window_rectangles_request;
+    struct get_window_text_request get_window_text_request;
+    struct set_window_text_request set_window_text_request;
+    struct get_windows_offset_request get_windows_offset_request;
+    struct get_visible_region_request get_visible_region_request;
+    struct get_window_region_request get_window_region_request;
+    struct set_window_region_request set_window_region_request;
+    struct get_update_region_request get_update_region_request;
+    struct update_window_zorder_request update_window_zorder_request;
+    struct redraw_window_request redraw_window_request;
+    struct set_window_property_request set_window_property_request;
+    struct remove_window_property_request remove_window_property_request;
+    struct get_window_property_request get_window_property_request;
+    struct get_window_properties_request get_window_properties_request;
+    struct create_winstation_request create_winstation_request;
+    struct open_winstation_request open_winstation_request;
+    struct close_winstation_request close_winstation_request;
+    struct get_process_winstation_request get_process_winstation_request;
+    struct set_process_winstation_request set_process_winstation_request;
+    struct enum_winstation_request enum_winstation_request;
+    struct create_desktop_request create_desktop_request;
+    struct open_desktop_request open_desktop_request;
+    struct close_desktop_request close_desktop_request;
+    struct get_thread_desktop_request get_thread_desktop_request;
+    struct set_thread_desktop_request set_thread_desktop_request;
+    struct enum_desktop_request enum_desktop_request;
+    struct set_user_object_info_request set_user_object_info_request;
+    struct attach_thread_input_request attach_thread_input_request;
+    struct get_thread_input_request get_thread_input_request;
+    struct get_last_input_time_request get_last_input_time_request;
+    struct get_key_state_request get_key_state_request;
+    struct set_key_state_request set_key_state_request;
+    struct set_foreground_window_request set_foreground_window_request;
+    struct set_focus_window_request set_focus_window_request;
+    struct set_active_window_request set_active_window_request;
+    struct set_capture_window_request set_capture_window_request;
+    struct set_caret_window_request set_caret_window_request;
+    struct set_caret_info_request set_caret_info_request;
+    struct set_hook_request set_hook_request;
+    struct remove_hook_request remove_hook_request;
+    struct start_hook_chain_request start_hook_chain_request;
+    struct finish_hook_chain_request finish_hook_chain_request;
+    struct get_hook_info_request get_hook_info_request;
+    struct create_class_request create_class_request;
+    struct destroy_class_request destroy_class_request;
+    struct set_class_info_request set_class_info_request;
+    struct set_clipboard_info_request set_clipboard_info_request;
+    struct open_token_request open_token_request;
+    struct set_global_windows_request set_global_windows_request;
+    struct adjust_token_privileges_request adjust_token_privileges_request;
+    struct get_token_privileges_request get_token_privileges_request;
+    struct check_token_privileges_request check_token_privileges_request;
+    struct duplicate_token_request duplicate_token_request;
+    struct access_check_request access_check_request;
+    struct get_token_user_request get_token_user_request;
+    struct get_token_groups_request get_token_groups_request;
+    struct set_security_object_request set_security_object_request;
+    struct get_security_object_request get_security_object_request;
+    struct create_mailslot_request create_mailslot_request;
+    struct set_mailslot_info_request set_mailslot_info_request;
+    struct create_directory_request create_directory_request;
+    struct open_directory_request open_directory_request;
+    struct get_directory_entry_request get_directory_entry_request;
+    struct create_symlink_request create_symlink_request;
+    struct open_symlink_request open_symlink_request;
+    struct query_symlink_request query_symlink_request;
+    struct get_object_info_request get_object_info_request;
+    struct unlink_object_request unlink_object_request;
+    struct get_token_impersonation_level_request get_token_impersonation_level_request;
+    struct allocate_locally_unique_id_request allocate_locally_unique_id_request;
+    struct create_device_manager_request create_device_manager_request;
+    struct create_device_request create_device_request;
+    struct delete_device_request delete_device_request;
+    struct get_next_device_request_request get_next_device_request_request;
+    struct make_process_system_request make_process_system_request;
+    struct get_token_statistics_request get_token_statistics_request;
+    struct create_completion_request create_completion_request;
+    struct open_completion_request open_completion_request;
+    struct add_completion_request add_completion_request;
+    struct remove_completion_request remove_completion_request;
+    struct query_completion_request query_completion_request;
+    struct set_completion_info_request set_completion_info_request;
+    struct add_fd_completion_request add_fd_completion_request;
+    struct get_window_layered_info_request get_window_layered_info_request;
+    struct set_window_layered_info_request set_window_layered_info_request;
+};
+union generic_reply
+{
+    struct request_max_size max_size;
+    struct reply_header reply_header;
+    struct new_process_reply new_process_reply;
+    struct get_new_process_info_reply get_new_process_info_reply;
+    struct new_thread_reply new_thread_reply;
+    struct get_startup_info_reply get_startup_info_reply;
+    struct init_process_done_reply init_process_done_reply;
+    struct init_thread_reply init_thread_reply;
+    struct terminate_process_reply terminate_process_reply;
+    struct terminate_thread_reply terminate_thread_reply;
+    struct get_process_info_reply get_process_info_reply;
+    struct set_process_info_reply set_process_info_reply;
+    struct get_thread_info_reply get_thread_info_reply;
+    struct set_thread_info_reply set_thread_info_reply;
+    struct get_dll_info_reply get_dll_info_reply;
+    struct suspend_thread_reply suspend_thread_reply;
+    struct resume_thread_reply resume_thread_reply;
+    struct load_dll_reply load_dll_reply;
+    struct unload_dll_reply unload_dll_reply;
+    struct queue_apc_reply queue_apc_reply;
+    struct get_apc_result_reply get_apc_result_reply;
+    struct close_handle_reply close_handle_reply;
+    struct set_handle_info_reply set_handle_info_reply;
+    struct dup_handle_reply dup_handle_reply;
+    struct open_process_reply open_process_reply;
+    struct open_thread_reply open_thread_reply;
+    struct select_reply select_reply;
+    struct create_event_reply create_event_reply;
+    struct event_op_reply event_op_reply;
+    struct open_event_reply open_event_reply;
+    struct create_mutex_reply create_mutex_reply;
+    struct release_mutex_reply release_mutex_reply;
+    struct open_mutex_reply open_mutex_reply;
+    struct create_semaphore_reply create_semaphore_reply;
+    struct release_semaphore_reply release_semaphore_reply;
+    struct open_semaphore_reply open_semaphore_reply;
+    struct create_file_reply create_file_reply;
+    struct open_file_object_reply open_file_object_reply;
+    struct alloc_file_handle_reply alloc_file_handle_reply;
+    struct get_handle_fd_reply get_handle_fd_reply;
+    struct flush_file_reply flush_file_reply;
+    struct lock_file_reply lock_file_reply;
+    struct unlock_file_reply unlock_file_reply;
+    struct create_socket_reply create_socket_reply;
+    struct accept_socket_reply accept_socket_reply;
+    struct set_socket_event_reply set_socket_event_reply;
+    struct get_socket_event_reply get_socket_event_reply;
+    struct enable_socket_event_reply enable_socket_event_reply;
+    struct set_socket_deferred_reply set_socket_deferred_reply;
+    struct alloc_console_reply alloc_console_reply;
+    struct free_console_reply free_console_reply;
+    struct get_console_renderer_events_reply get_console_renderer_events_reply;
+    struct open_console_reply open_console_reply;
+    struct get_console_wait_event_reply get_console_wait_event_reply;
+    struct get_console_mode_reply get_console_mode_reply;
+    struct set_console_mode_reply set_console_mode_reply;
+    struct set_console_input_info_reply set_console_input_info_reply;
+    struct get_console_input_info_reply get_console_input_info_reply;
+    struct append_console_input_history_reply append_console_input_history_reply;
+    struct get_console_input_history_reply get_console_input_history_reply;
+    struct create_console_output_reply create_console_output_reply;
+    struct set_console_output_info_reply set_console_output_info_reply;
+    struct get_console_output_info_reply get_console_output_info_reply;
+    struct write_console_input_reply write_console_input_reply;
+    struct read_console_input_reply read_console_input_reply;
+    struct write_console_output_reply write_console_output_reply;
+    struct fill_console_output_reply fill_console_output_reply;
+    struct read_console_output_reply read_console_output_reply;
+    struct move_console_output_reply move_console_output_reply;
+    struct send_console_signal_reply send_console_signal_reply;
+    struct read_directory_changes_reply read_directory_changes_reply;
+    struct read_change_reply read_change_reply;
+    struct create_mapping_reply create_mapping_reply;
+    struct open_mapping_reply open_mapping_reply;
+    struct get_mapping_info_reply get_mapping_info_reply;
+    struct get_mapping_committed_range_reply get_mapping_committed_range_reply;
+    struct add_mapping_committed_range_reply add_mapping_committed_range_reply;
+    struct create_snapshot_reply create_snapshot_reply;
+    struct next_process_reply next_process_reply;
+    struct next_thread_reply next_thread_reply;
+    struct next_module_reply next_module_reply;
+    struct wait_debug_event_reply wait_debug_event_reply;
+    struct queue_exception_event_reply queue_exception_event_reply;
+    struct get_exception_status_reply get_exception_status_reply;
+    struct output_debug_string_reply output_debug_string_reply;
+    struct continue_debug_event_reply continue_debug_event_reply;
+    struct debug_process_reply debug_process_reply;
+    struct debug_break_reply debug_break_reply;
+    struct set_debugger_kill_on_exit_reply set_debugger_kill_on_exit_reply;
+    struct read_process_memory_reply read_process_memory_reply;
+    struct write_process_memory_reply write_process_memory_reply;
+    struct create_key_reply create_key_reply;
+    struct open_key_reply open_key_reply;
+    struct delete_key_reply delete_key_reply;
+    struct flush_key_reply flush_key_reply;
+    struct enum_key_reply enum_key_reply;
+    struct set_key_value_reply set_key_value_reply;
+    struct get_key_value_reply get_key_value_reply;
+    struct enum_key_value_reply enum_key_value_reply;
+    struct delete_key_value_reply delete_key_value_reply;
+    struct load_registry_reply load_registry_reply;
+    struct unload_registry_reply unload_registry_reply;
+    struct save_registry_reply save_registry_reply;
+    struct set_registry_notification_reply set_registry_notification_reply;
+    struct create_timer_reply create_timer_reply;
+    struct open_timer_reply open_timer_reply;
+    struct set_timer_reply set_timer_reply;
+    struct cancel_timer_reply cancel_timer_reply;
+    struct get_timer_info_reply get_timer_info_reply;
+    struct get_thread_context_reply get_thread_context_reply;
+    struct set_thread_context_reply set_thread_context_reply;
+    struct get_selector_entry_reply get_selector_entry_reply;
+    struct add_atom_reply add_atom_reply;
+    struct delete_atom_reply delete_atom_reply;
+    struct find_atom_reply find_atom_reply;
+    struct get_atom_information_reply get_atom_information_reply;
+    struct set_atom_information_reply set_atom_information_reply;
+    struct empty_atom_table_reply empty_atom_table_reply;
+    struct init_atom_table_reply init_atom_table_reply;
+    struct get_msg_queue_reply get_msg_queue_reply;
+    struct set_queue_fd_reply set_queue_fd_reply;
+    struct set_queue_mask_reply set_queue_mask_reply;
+    struct get_queue_status_reply get_queue_status_reply;
+    struct get_process_idle_event_reply get_process_idle_event_reply;
+    struct send_message_reply send_message_reply;
+    struct post_quit_message_reply post_quit_message_reply;
+    struct send_hardware_message_reply send_hardware_message_reply;
+    struct get_message_reply get_message_reply;
+    struct reply_message_reply reply_message_reply;
+    struct accept_hardware_message_reply accept_hardware_message_reply;
+    struct get_message_reply_reply get_message_reply_reply;
+    struct set_win_timer_reply set_win_timer_reply;
+    struct kill_win_timer_reply kill_win_timer_reply;
+    struct is_window_hung_reply is_window_hung_reply;
+    struct get_serial_info_reply get_serial_info_reply;
+    struct set_serial_info_reply set_serial_info_reply;
+    struct register_async_reply register_async_reply;
+    struct cancel_async_reply cancel_async_reply;
+    struct ioctl_reply ioctl_reply;
+    struct get_ioctl_result_reply get_ioctl_result_reply;
+    struct create_named_pipe_reply create_named_pipe_reply;
+    struct get_named_pipe_info_reply get_named_pipe_info_reply;
+    struct create_window_reply create_window_reply;
+    struct destroy_window_reply destroy_window_reply;
+    struct get_desktop_window_reply get_desktop_window_reply;
+    struct set_window_owner_reply set_window_owner_reply;
+    struct get_window_info_reply get_window_info_reply;
+    struct set_window_info_reply set_window_info_reply;
+    struct set_parent_reply set_parent_reply;
+    struct get_window_parents_reply get_window_parents_reply;
+    struct get_window_children_reply get_window_children_reply;
+    struct get_window_children_from_point_reply get_window_children_from_point_reply;
+    struct get_window_tree_reply get_window_tree_reply;
+    struct set_window_pos_reply set_window_pos_reply;
+    struct get_window_rectangles_reply get_window_rectangles_reply;
+    struct get_window_text_reply get_window_text_reply;
+    struct set_window_text_reply set_window_text_reply;
+    struct get_windows_offset_reply get_windows_offset_reply;
+    struct get_visible_region_reply get_visible_region_reply;
+    struct get_window_region_reply get_window_region_reply;
+    struct set_window_region_reply set_window_region_reply;
+    struct get_update_region_reply get_update_region_reply;
+    struct update_window_zorder_reply update_window_zorder_reply;
+    struct redraw_window_reply redraw_window_reply;
+    struct set_window_property_reply set_window_property_reply;
+    struct remove_window_property_reply remove_window_property_reply;
+    struct get_window_property_reply get_window_property_reply;
+    struct get_window_properties_reply get_window_properties_reply;
+    struct create_winstation_reply create_winstation_reply;
+    struct open_winstation_reply open_winstation_reply;
+    struct close_winstation_reply close_winstation_reply;
+    struct get_process_winstation_reply get_process_winstation_reply;
+    struct set_process_winstation_reply set_process_winstation_reply;
+    struct enum_winstation_reply enum_winstation_reply;
+    struct create_desktop_reply create_desktop_reply;
+    struct open_desktop_reply open_desktop_reply;
+    struct close_desktop_reply close_desktop_reply;
+    struct get_thread_desktop_reply get_thread_desktop_reply;
+    struct set_thread_desktop_reply set_thread_desktop_reply;
+    struct enum_desktop_reply enum_desktop_reply;
+    struct set_user_object_info_reply set_user_object_info_reply;
+    struct attach_thread_input_reply attach_thread_input_reply;
+    struct get_thread_input_reply get_thread_input_reply;
+    struct get_last_input_time_reply get_last_input_time_reply;
+    struct get_key_state_reply get_key_state_reply;
+    struct set_key_state_reply set_key_state_reply;
+    struct set_foreground_window_reply set_foreground_window_reply;
+    struct set_focus_window_reply set_focus_window_reply;
+    struct set_active_window_reply set_active_window_reply;
+    struct set_capture_window_reply set_capture_window_reply;
+    struct set_caret_window_reply set_caret_window_reply;
+    struct set_caret_info_reply set_caret_info_reply;
+    struct set_hook_reply set_hook_reply;
+    struct remove_hook_reply remove_hook_reply;
+    struct start_hook_chain_reply start_hook_chain_reply;
+    struct finish_hook_chain_reply finish_hook_chain_reply;
+    struct get_hook_info_reply get_hook_info_reply;
+    struct create_class_reply create_class_reply;
+    struct destroy_class_reply destroy_class_reply;
+    struct set_class_info_reply set_class_info_reply;
+    struct set_clipboard_info_reply set_clipboard_info_reply;
+    struct open_token_reply open_token_reply;
+    struct set_global_windows_reply set_global_windows_reply;
+    struct adjust_token_privileges_reply adjust_token_privileges_reply;
+    struct get_token_privileges_reply get_token_privileges_reply;
+    struct check_token_privileges_reply check_token_privileges_reply;
+    struct duplicate_token_reply duplicate_token_reply;
+    struct access_check_reply access_check_reply;
+    struct get_token_user_reply get_token_user_reply;
+    struct get_token_groups_reply get_token_groups_reply;
+    struct set_security_object_reply set_security_object_reply;
+    struct get_security_object_reply get_security_object_reply;
+    struct create_mailslot_reply create_mailslot_reply;
+    struct set_mailslot_info_reply set_mailslot_info_reply;
+    struct create_directory_reply create_directory_reply;
+    struct open_directory_reply open_directory_reply;
+    struct get_directory_entry_reply get_directory_entry_reply;
+    struct create_symlink_reply create_symlink_reply;
+    struct open_symlink_reply open_symlink_reply;
+    struct query_symlink_reply query_symlink_reply;
+    struct get_object_info_reply get_object_info_reply;
+    struct unlink_object_reply unlink_object_reply;
+    struct get_token_impersonation_level_reply get_token_impersonation_level_reply;
+    struct allocate_locally_unique_id_reply allocate_locally_unique_id_reply;
+    struct create_device_manager_reply create_device_manager_reply;
+    struct create_device_reply create_device_reply;
+    struct delete_device_reply delete_device_reply;
+    struct get_next_device_request_reply get_next_device_request_reply;
+    struct make_process_system_reply make_process_system_reply;
+    struct get_token_statistics_reply get_token_statistics_reply;
+    struct create_completion_reply create_completion_reply;
+    struct open_completion_reply open_completion_reply;
+    struct add_completion_reply add_completion_reply;
+    struct remove_completion_reply remove_completion_reply;
+    struct query_completion_reply query_completion_reply;
+    struct set_completion_info_reply set_completion_info_reply;
+    struct add_fd_completion_reply add_fd_completion_reply;
+    struct get_window_layered_info_reply get_window_layered_info_reply;
+    struct set_window_layered_info_reply set_window_layered_info_reply;
+};
+
+#define SERVER_PROTOCOL_VERSION 346
+
+#endif /* __WINE_WINE_SERVER_PROTOCOL_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/svcctl.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/svcctl.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/svcctl.idl	(revision 16410)
@@ -0,0 +1,310 @@
+/*
+ * svcctl interface definitions - exported by services.exe to access the
+ * services database
+ *
+ * Copyright 2007 Google (Mikolaj Zalewski)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "wtypes.idl";
+
+/*
+ * some defined for the C code
+ */
+cpp_quote("#include \"winsvc.h\"")
+cpp_quote("#define SVCCTL_TRANSPORT {'n','c','a','c','n','_','n','p',0}")
+cpp_quote("#define SVCCTL_ENDPOINT {'\\\\','p','i','p','e','\\\\','s','v','c','c','t','l',0}")
+
+/* Not the Windows event name - if needed the true one can be found in Inside Windows */
+cpp_quote("#define SVCCTL_STARTED_EVENT {'_','_','w','i','n','e','_','S','v','c','c','t','l','S','t','a','r','t','e','d',0}")
+
+/* Service startup protocol over control pipe - not compatible with Windows */
+enum service_pipe_command
+{
+    WINESERV_STARTINFO = 1,
+    WINESERV_SENDCONTROL = 2
+};
+
+typedef struct service_start_info_t
+{
+    enum service_pipe_command cmd;        /* request code */
+    DWORD                     total_size; /* total request size */
+    DWORD                     name_size;  /* size of name in data buffer */
+    DWORD                     control;    /* control code */
+    WCHAR                     data[1];
+} service_start_info;
+
+[
+    uuid(367abb81-9844-35f1-ad32-98f038001003),
+    version(2.0),
+    pointer_default(unique),
+    endpoint("ncacn_np:[\\pipe\\svcctl]")
+]
+interface svcctl
+{
+    /* handle types */
+    typedef [handle] LPCWSTR MACHINE_HANDLEW;
+    typedef [context_handle] void *SC_RPC_HANDLE;
+    typedef [context_handle] void *SC_RPC_LOCK;
+
+    /* undocumented access rights */
+    cpp_quote("#define SERVICE_SET_STATUS   0x8000")
+
+cpp_quote("#if 0 /* already defined in winsvc.h */")
+typedef struct _QUERY_SERVICE_CONFIGW {
+    DWORD   dwServiceType;
+    DWORD   dwStartType;
+    DWORD   dwErrorControl;
+    [unique] LPWSTR  lpBinaryPathName;
+    [unique] LPWSTR  lpLoadOrderGroup;
+    DWORD   dwTagId;
+    [unique] LPWSTR  lpDependencies;
+    [unique] LPWSTR  lpServiceStartName;
+    [unique] LPWSTR  lpDisplayName;
+} QUERY_SERVICE_CONFIGW, *LPQUERY_SERVICE_CONFIGW;
+
+typedef struct _SERVICE_STATUS {
+  DWORD dwServiceType;
+  DWORD dwCurrentState;
+  DWORD dwControlsAccepted;
+  DWORD dwWin32ExitCode;
+  DWORD dwServiceSpecificExitCode;
+  DWORD dwCheckPoint;
+  DWORD dwWaitHint;
+} SERVICE_STATUS, *LPSERVICE_STATUS;
+
+typedef enum _SC_STATUS_TYPE {
+  SC_STATUS_PROCESS_INFO      = 0
+} SC_STATUS_TYPE;
+
+typedef struct _SERVICE_DESCRIPTIONW {
+   LPWSTR lpDescription;
+} SERVICE_DESCRIPTIONW,*LPSERVICE_DESCRIPTIONW;
+
+#define SERVICE_CONFIG_DESCRIPTION 1
+
+cpp_quote("#endif")
+
+typedef [switch_type(DWORD)] union
+{
+  [case (SERVICE_CONFIG_DESCRIPTION)] SERVICE_DESCRIPTIONW descr;
+} SERVICE_CONFIG2W;
+
+    /* Compatible with Windows function 0x00 */
+    DWORD svcctl_CloseServiceHandle(
+        [in,out] SC_RPC_HANDLE *handle
+    );
+
+    /* Compatible with Windows function 0x01 */
+    DWORD svcctl_ControlService(
+        [in] SC_RPC_HANDLE hService,
+        [in] DWORD dwControl,
+        [out] SERVICE_STATUS *lpServiceStatus
+    );
+
+    /* Compatible with Windows function 0x02 */
+    DWORD svcctl_DeleteService(
+        [in] SC_RPC_HANDLE hService
+    );
+
+    /* Compatible with Windows function 0x03 */
+    DWORD svcctl_LockServiceDatabase(
+        [in] SC_RPC_HANDLE hSCManager,
+        [out] SC_RPC_LOCK *phLock
+    );
+
+    /* Not compatible with Windows function 0x04 */
+    DWORD svcctl_QueryServiceObjectSecurity(/* FIXME */);
+
+    /* Not compatible with Windows function 0x05 */
+    DWORD svcctl_SetServiceObjectSecurity(/* FIXME */);
+
+    /* Not compatible with Windows function 0x06 */
+    DWORD svcctl_QueryServiceStatus(/* FIXME */);
+
+    /* Compatible with Windows function 0x07 */
+    DWORD svcctl_SetServiceStatus(
+        [in] SC_RPC_HANDLE hServiceStatus,
+        [in] LPSERVICE_STATUS lpServiceStatus
+    );
+
+    /* Compatible with Windows function 0x08 */
+    DWORD svcctl_UnlockServiceDatabase(
+        [in,out] SC_RPC_LOCK *phLock
+    );
+
+    /* Not compatible with Windows function 0x09 */
+    DWORD svcctl_NotifyBootConfigStatus(/* FIXME */);
+
+    /* Not compatible with Windows function 0x0a */
+    DWORD svcctl_SCSetServiceBitsW(/* FIXME */);
+
+    /* Compatible with Windows function 0x0b */
+    DWORD svcctl_ChangeServiceConfigW(
+        [in] SC_RPC_HANDLE hService,
+        [in] DWORD dwServiceType,
+        [in] DWORD dwStartType,
+        [in] DWORD dwErrorControl,
+        [in,unique] LPCWSTR lpBinaryPathName,
+        [in,unique] LPCWSTR lpLoadOrderGroupKey,
+        [in,out,unique] DWORD *lpdwTagId,
+        [in,unique,size_is(dwDependenciesSize)] const BYTE *lpDependencies,
+        [in] DWORD dwDependenciesSize,
+        [in,unique] LPCWSTR lpServiceStartName,
+        [in,unique,size_is(dwPasswordSize)] const BYTE *lpPassword,
+        [in] DWORD dwPasswordSize,
+        [in,unique] LPCWSTR lpDisplayName
+    );
+
+    /* Compatible with Windows function 0x0c */
+    DWORD svcctl_CreateServiceW(
+        [in] SC_RPC_HANDLE hSCManager,
+        [in] LPCWSTR lpServiceName,
+        [in,unique] LPCWSTR lpDisplayName,
+        [in] DWORD dwDesiredAccess,
+        [in] DWORD dwServiceType,
+        [in] DWORD dwStartType,
+        [in] DWORD dwErrorControl,
+        [in] LPCWSTR lpBinaryPathName,
+        [in,unique] LPCWSTR lpLoadOrderGroup,
+        [in,out,unique] DWORD *lpdwTagId,
+        [in,unique,size_is(dwDependenciesSize)] const BYTE *lpDependencies,
+        [in] DWORD dwDependenciesSize,
+        [in,unique] LPCWSTR lpServiceStartName,
+        [in,unique,size_is(dwPasswordSize)] const BYTE *lpPassword,
+        [in] DWORD dwPasswordSize,
+        [out] SC_RPC_HANDLE *phService
+    );
+
+    /* Not compatible with Windows function 0x0d */
+    DWORD svcctl_EnumDependentServicesW(/* FIXME */);
+
+    /* Not compatible with Windows function 0x0e */
+    DWORD svcctl_EnumServicesStatusW(/* FIXME */);
+
+    /* Compatible with Windows function 0x0f */
+    DWORD svcctl_OpenSCManagerW(
+        [in,unique] MACHINE_HANDLEW MachineName,
+        [in,unique] LPCWSTR DatabaseName,
+        [in] DWORD dwAccessMask,
+        [out] SC_RPC_HANDLE *handle
+    );
+
+    /* Compatible with Windows function 0x10 */
+    DWORD svcctl_OpenServiceW(
+        [in] SC_RPC_HANDLE hSCManager,
+        [in] LPCWSTR lpServiceName,
+        [in] DWORD dwDesiredAccess,
+        [out] SC_RPC_HANDLE *phService
+    );
+
+    /* Windows function 0x11 must be using a different prototype - not compatible */
+    DWORD svcctl_QueryServiceConfigW(
+        [in] SC_RPC_HANDLE hService,
+        [out] QUERY_SERVICE_CONFIGW *config);
+
+    /* Not compatible with Windows function 0x12 */
+    DWORD svcctl_QueryServiceLockStatusW(/* FIXME */);
+
+    /* Untested with Windows function 0x13 */
+    DWORD svcctl_StartServiceW(
+        [in] SC_RPC_HANDLE hService,
+        [in] DWORD dwNumServiceArgs,
+        [in,unique,size_is(dwNumServiceArgs)] LPCWSTR *lpServiceArgVectors
+    );
+
+    /* Compatible with Windows function 0x14 */
+    DWORD svcctl_GetServiceDisplayNameW(
+        [in] SC_RPC_HANDLE hSCManager,
+        [in] LPCWSTR lpServiceName,
+        [out,size_is(cchBufSize)] WCHAR lpBuffer[],
+        [in] DWORD cchBufSize,
+        [out] DWORD *cchLength);
+
+    /* Compatible with Windows function 0x15 */
+    DWORD svcctl_GetServiceKeyNameW(
+        [in] SC_RPC_HANDLE hSCManager,
+        [in] LPCWSTR lpServiceDisplayName,
+        [out,size_is(cchBufSize)] WCHAR lpBuffer[],
+        [in] DWORD cchBufSize,
+        [out] DWORD *cchLength);
+
+    /* Not compatible with Windows function 0x16 */
+    DWORD svcctl_SCSetServiceBitsA(/* FIXME */);
+
+    /* Not compatible with Windows function 0x17 */
+    DWORD svcctl_ChangeServiceConfigA(/* FIXME */);
+
+    /* Not compatible with Windows function 0x18 */
+    DWORD svcctl_CreateServiceA(/* FIXME */);
+
+    /* Not compatible with Windows function 0x19 */
+    DWORD svcctl_EnumDependentServicesA(/* FIXME */);
+
+    /* Not compatible with Windows function 0x1a */
+    DWORD svcctl_EnumServicesStatusA(/* FIXME */);
+
+    /* Not compatible with Windows function 0x1b */
+    DWORD svcctl_OpenSCManagerA(/* FIXME */);
+
+    /* Not compatible with Windows function 0x1c */
+    DWORD svcctl_OpenServiceA(/* FIXME */);
+
+    /* Not compatible with Windows function 0x1d */
+    DWORD svcctl_QueryServiceConfigA(/* FIXME */);
+
+    /* Not compatible with Windows function 0x1e */
+    DWORD svcctl_QueryServiceLockStatusA(/* FIXME */);
+
+    /* Not compatible with Windows function 0x1f */
+    DWORD svcctl_StartServiceA(/* FIXME */);
+
+    /* Not compatible with Windows function 0x20 */
+    DWORD svcctl_GetServiceDisplayNameA(/* FIXME */);
+
+    /* Not compatible with Windows function 0x21 */
+    DWORD svcctl_GetServiceKeyNameA(/* FIXME */);
+
+    /* Not compatible with Windows function 0x22 */
+    DWORD svcctl_GetCurrentGroupStateW(/* FIXME */);
+
+    /* Not compatible with Windows function 0x23 */
+    DWORD svcctl_EnumServiceGroupW(/* FIXME */);
+
+    /* Not compatible with Windows function 0x24 */
+    DWORD svcctl_ChangeServiceConfig2A(/* FIXME */);
+
+    /* Untested with Windows function 0x25 */
+    DWORD svcctl_ChangeServiceConfig2W(
+        [in] SC_RPC_HANDLE hService,
+        [in] DWORD InfoLevel,
+        [in,switch_is(InfoLevel)] SERVICE_CONFIG2W *config );
+
+    /* Not compatible with Windows function 0x26 */
+    DWORD svcctl_QueryServiceConfig2A(/* FIXME */);
+
+    /* Not compatible with Windows function 0x27 */
+    DWORD svcctl_QueryServiceConfig2W(/* FIXME */);
+
+    /* Untested with Windows function 0x28 */
+    DWORD svcctl_QueryServiceStatusEx(
+        [in] SC_RPC_HANDLE hService,
+        [in] SC_STATUS_TYPE InfoLevel,
+        [out,size_is(cbBufSize)] BYTE *lpBuffer,
+        [in] DWORD cbBufSize,
+        [out] LPDWORD pcbBytesNeeded
+    );
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/test.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/test.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/test.h	(revision 16410)
@@ -0,0 +1,507 @@
+/*
+ * Definitions for Wine C unit tests.
+ *
+ * Copyright (C) 2002 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINE_TEST_H
+#define __WINE_WINE_TEST_H
+
+#include <stdarg.h>
+#include <stdlib.h>
+#include <windef.h>
+#include <winbase.h>
+
+#ifdef __WINE_CONFIG_H
+#error config.h should not be used in Wine tests
+#endif
+#ifdef __WINE_WINE_LIBRARY_H
+#error wine/library.h should not be used in Wine tests
+#endif
+#ifdef __WINE_WINE_UNICODE_H
+#error wine/unicode.h should not be used in Wine tests
+#endif
+#ifdef __WINE_WINE_DEBUG_H
+#error wine/debug.h should not be used in Wine tests
+#endif
+
+#ifndef INVALID_FILE_ATTRIBUTES
+#define INVALID_FILE_ATTRIBUTES  ((DWORD)~0UL)
+#endif
+#ifndef INVALID_SET_FILE_POINTER
+#define INVALID_SET_FILE_POINTER ((DWORD)~0UL)
+#endif
+
+/* debug level */
+extern int winetest_debug;
+
+/* running in interactive mode? */
+extern int winetest_interactive;
+
+/* current platform */
+extern const char *winetest_platform;
+
+extern void winetest_set_location( const char* file, int line );
+extern void winetest_start_todo( const char* platform );
+extern int winetest_loop_todo(void);
+extern void winetest_end_todo( const char* platform );
+extern int winetest_get_mainargs( char*** pargv );
+extern void winetest_wait_child_process( HANDLE process );
+
+#ifdef STANDALONE
+#define START_TEST(name) \
+  static void func_##name(void); \
+  const struct test winetest_testlist[] = { { #name, func_##name }, { 0, 0 } }; \
+  static void func_##name(void)
+#else
+#define START_TEST(name) void func_##name(void)
+#endif
+
+extern int broken( int condition );
+extern int winetest_vok( int condition, const char *msg, va_list ap );
+extern void winetest_vskip( const char *msg, va_list ap );
+
+#ifdef __GNUC__
+
+extern int winetest_ok( int condition, const char *msg, ... ) __attribute__((format (printf,2,3) ));
+extern void winetest_skip( const char *msg, ... ) __attribute__((format (printf,1,2)));
+extern void winetest_win_skip( const char *msg, ... ) __attribute__((format (printf,1,2)));
+extern void winetest_trace( const char *msg, ... ) __attribute__((format (printf,1,2)));
+
+#else /* __GNUC__ */
+
+extern int winetest_ok( int condition, const char *msg, ... );
+extern void winetest_skip( const char *msg, ... );
+extern void winetest_win_skip( const char *msg, ... );
+extern void winetest_trace( const char *msg, ... );
+
+#endif /* __GNUC__ */
+
+#define ok_(file, line)       (winetest_set_location(file, line), 0) ? 0 : winetest_ok
+#define skip_(file, line)     (winetest_set_location(file, line), 0) ? (void)0 : winetest_skip
+#define win_skip_(file, line) (winetest_set_location(file, line), 0) ? (void)0 : winetest_win_skip
+#define trace_(file, line)    (winetest_set_location(file, line), 0) ? (void)0 : winetest_trace
+
+#define ok       ok_(__FILE__, __LINE__)
+#define skip     skip_(__FILE__, __LINE__)
+#define win_skip win_skip_(__FILE__, __LINE__)
+#define trace    trace_(__FILE__, __LINE__)
+
+#define todo(platform) for (winetest_start_todo(platform); \
+                            winetest_loop_todo(); \
+                            winetest_end_todo(platform))
+#define todo_wine      todo("wine")
+
+
+#ifdef NONAMELESSUNION
+# define U(x)  (x).u
+# define U1(x) (x).u1
+# define U2(x) (x).u2
+# define U3(x) (x).u3
+# define U4(x) (x).u4
+# define U5(x) (x).u5
+# define U6(x) (x).u6
+# define U7(x) (x).u7
+# define U8(x) (x).u8
+#else
+# define U(x)  (x)
+# define U1(x) (x)
+# define U2(x) (x)
+# define U3(x) (x)
+# define U4(x) (x)
+# define U5(x) (x)
+# define U6(x) (x)
+# define U7(x) (x)
+# define U8(x) (x)
+#endif
+
+#ifdef NONAMELESSSTRUCT
+# define S(x)  (x).s
+# define S1(x) (x).s1
+# define S2(x) (x).s2
+# define S3(x) (x).s3
+# define S4(x) (x).s4
+# define S5(x) (x).s5
+#else
+# define S(x)  (x)
+# define S1(x) (x)
+# define S2(x) (x)
+# define S3(x) (x)
+# define S4(x) (x)
+# define S5(x) (x)
+#endif
+
+
+/************************************************************************/
+/* Below is the implementation of the various functions, to be included
+ * directly into the generated testlist.c file.
+ * It is done that way so that the dlls can build the test routines with
+ * different includes or flags if needed.
+ */
+
+#ifdef STANDALONE
+
+#include <stdio.h>
+
+struct test
+{
+    const char *name;
+    void (*func)(void);
+};
+
+extern const struct test winetest_testlist[];
+
+/* debug level */
+int winetest_debug = 1;
+
+/* interactive mode? */
+int winetest_interactive = 0;
+
+/* current platform */
+const char *winetest_platform = "windows";
+
+/* report successful tests (BOOL) */
+static int report_success = 0;
+
+/* passing arguments around */
+static int winetest_argc;
+static char** winetest_argv;
+
+static const struct test *current_test; /* test currently being run */
+
+static LONG successes;       /* number of successful tests */
+static LONG failures;        /* number of failures */
+static LONG skipped;         /* number of skipped test chunks */
+static LONG todo_successes;  /* number of successful tests inside todo block */
+static LONG todo_failures;   /* number of failures inside todo block */
+
+/* The following data must be kept track of on a per-thread basis */
+typedef struct
+{
+    const char* current_file;        /* file of current check */
+    int current_line;                /* line of current check */
+    int todo_level;                  /* current todo nesting level */
+    int todo_do_loop;
+} tls_data;
+static DWORD tls_index;
+
+static tls_data* get_tls_data(void)
+{
+    tls_data* data;
+    DWORD last_error;
+
+    last_error=GetLastError();
+    data=TlsGetValue(tls_index);
+    if (!data)
+    {
+        data=HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(tls_data));
+        TlsSetValue(tls_index,data);
+    }
+    SetLastError(last_error);
+    return data;
+}
+
+static void exit_process( int code )
+{
+    fflush( stdout );
+    ExitProcess( code );
+}
+
+
+void winetest_set_location( const char* file, int line )
+{
+    tls_data* data=get_tls_data();
+    data->current_file=strrchr(file,'/');
+    if (data->current_file==NULL)
+        data->current_file=strrchr(file,'\\');
+    if (data->current_file==NULL)
+        data->current_file=file;
+    else
+        data->current_file++;
+    data->current_line=line;
+}
+
+int broken( int condition )
+{
+    return (strcmp(winetest_platform, "windows") == 0) && condition;
+}
+
+/*
+ * Checks condition.
+ * Parameters:
+ *   - condition - condition to check;
+ *   - msg test description;
+ *   - file - test application source code file name of the check
+ *   - line - test application source code file line number of the check
+ * Return:
+ *   0 if condition does not have the expected value, 1 otherwise
+ */
+int winetest_vok( int condition, const char *msg, va_list args )
+{
+    tls_data* data=get_tls_data();
+
+    if (data->todo_level)
+    {
+        if (condition)
+        {
+            fprintf( stdout, "%s:%d: Test succeeded inside todo block",
+                     data->current_file, data->current_line );
+            if (msg[0])
+            {
+                fprintf(stdout,": ");
+                vfprintf(stdout, msg, args);
+            }
+            InterlockedIncrement(&todo_failures);
+            return 0;
+        }
+        else InterlockedIncrement(&todo_successes);
+    }
+    else
+    {
+        if (!condition)
+        {
+            fprintf( stdout, "%s:%d: Test failed",
+                     data->current_file, data->current_line );
+            if (msg[0])
+            {
+                fprintf( stdout,": ");
+                vfprintf(stdout, msg, args);
+            }
+            InterlockedIncrement(&failures);
+            return 0;
+        }
+        else
+        {
+            if (report_success)
+                fprintf( stdout, "%s:%d: Test succeeded\n",
+                         data->current_file, data->current_line);
+            InterlockedIncrement(&successes);
+        }
+    }
+    return 1;
+}
+
+int winetest_ok( int condition, const char *msg, ... )
+{
+    va_list valist;
+    int rc;
+
+    va_start(valist, msg);
+    rc=winetest_vok(condition, msg, valist);
+    va_end(valist);
+    return rc;
+}
+
+void winetest_trace( const char *msg, ... )
+{
+    va_list valist;
+    tls_data* data=get_tls_data();
+
+    if (winetest_debug > 0)
+    {
+        fprintf( stdout, "%s:%d: ", data->current_file, data->current_line );
+        va_start(valist, msg);
+        vfprintf(stdout, msg, valist);
+        va_end(valist);
+    }
+}
+
+void winetest_vskip( const char *msg, va_list args )
+{
+    tls_data* data=get_tls_data();
+
+    fprintf( stdout, "%s:%d: Tests skipped: ", data->current_file, data->current_line );
+    vfprintf(stdout, msg, args);
+    skipped++;
+}
+
+void winetest_skip( const char *msg, ... )
+{
+    va_list valist;
+    va_start(valist, msg);
+    winetest_vskip(msg, valist);
+    va_end(valist);
+}
+
+void winetest_win_skip( const char *msg, ... )
+{
+    va_list valist;
+    va_start(valist, msg);
+    if (strcmp(winetest_platform, "windows") == 0)
+        winetest_vskip(msg, valist);
+    else
+        winetest_vok(0, msg, valist);
+    va_end(valist);
+}
+
+void winetest_start_todo( const char* platform )
+{
+    tls_data* data=get_tls_data();
+    if (strcmp(winetest_platform,platform)==0)
+        data->todo_level++;
+    data->todo_do_loop=1;
+}
+
+int winetest_loop_todo(void)
+{
+    tls_data* data=get_tls_data();
+    int do_loop=data->todo_do_loop;
+    data->todo_do_loop=0;
+    return do_loop;
+}
+
+void winetest_end_todo( const char* platform )
+{
+    if (strcmp(winetest_platform,platform)==0)
+    {
+        tls_data* data=get_tls_data();
+        data->todo_level--;
+    }
+}
+
+int winetest_get_mainargs( char*** pargv )
+{
+    *pargv = winetest_argv;
+    return winetest_argc;
+}
+
+void winetest_wait_child_process( HANDLE process )
+{
+    DWORD exit_code = 1;
+
+    if (WaitForSingleObject( process, 30000 ))
+        fprintf( stdout, "%s: child process wait failed\n", current_test->name );
+    else
+        GetExitCodeProcess( process, &exit_code );
+
+    if (exit_code)
+    {
+        if (exit_code > 255)
+        {
+            fprintf( stdout, "%s: exception 0x%08x in child process\n", current_test->name, exit_code );
+            InterlockedIncrement( &failures );
+        }
+        else
+        {
+            fprintf( stdout, "%s: %u failures in child process\n",
+                     current_test->name, exit_code );
+            while (exit_code-- > 0)
+                InterlockedIncrement(&failures);
+        }
+    }
+}
+
+/* Find a test by name */
+static const struct test *find_test( const char *name )
+{
+    const struct test *test;
+    const char *p;
+    size_t len;
+
+    if ((p = strrchr( name, '/' ))) name = p + 1;
+    if ((p = strrchr( name, '\\' ))) name = p + 1;
+    len = strlen(name);
+    if (len > 2 && !strcmp( name + len - 2, ".c" )) len -= 2;
+
+    for (test = winetest_testlist; test->name; test++)
+    {
+        if (!strncmp( test->name, name, len ) && !test->name[len]) break;
+    }
+    return test->name ? test : NULL;
+}
+
+
+/* Display list of valid tests */
+static void list_tests(void)
+{
+    const struct test *test;
+
+    fprintf( stdout, "Valid test names:\n" );
+    for (test = winetest_testlist; test->name; test++) fprintf( stdout, "    %s\n", test->name );
+}
+
+
+/* Run a named test, and return exit status */
+static int run_test( const char *name )
+{
+    const struct test *test;
+    int status;
+
+    if (!(test = find_test( name )))
+    {
+        fprintf( stdout, "Fatal: test '%s' does not exist.\n", name );
+        exit_process(1);
+    }
+    successes = failures = todo_successes = todo_failures = 0;
+    tls_index=TlsAlloc();
+    current_test = test;
+    test->func();
+
+    if (winetest_debug)
+    {
+        fprintf( stdout, "%s: %d tests executed (%d marked as todo, %d %s), %d skipped.\n",
+                 test->name, successes + failures + todo_successes + todo_failures,
+                 todo_successes, failures + todo_failures,
+                 (failures + todo_failures != 1) ? "failures" : "failure",
+                 skipped );
+    }
+    status = (failures + todo_failures < 255) ? failures + todo_failures : 255;
+    return status;
+}
+
+
+/* Display usage and exit */
+static void usage( const char *argv0 )
+{
+    fprintf( stdout, "Usage: %s test_name\n\n", argv0 );
+    list_tests();
+    exit_process(1);
+}
+
+
+/* main function */
+int main( int argc, char **argv )
+{
+    char p[128];
+
+    setvbuf (stdout, NULL, _IONBF, 0);
+
+    winetest_argc = argc;
+    winetest_argv = argv;
+
+    if (GetEnvironmentVariableA( "WINETEST_PLATFORM", p, sizeof(p) )) winetest_platform = strdup(p);
+    if (GetEnvironmentVariableA( "WINETEST_DEBUG", p, sizeof(p) )) winetest_debug = atoi(p);
+    if (GetEnvironmentVariableA( "WINETEST_INTERACTIVE", p, sizeof(p) )) winetest_interactive = atoi(p);
+    if (GetEnvironmentVariableA( "WINETEST_REPORT_SUCCESS", p, sizeof(p) )) report_success = atoi(p);
+
+    if (!argv[1])
+    {
+        if (winetest_testlist[0].name && !winetest_testlist[1].name)  /* only one test */
+            return run_test( winetest_testlist[0].name );
+        usage( argv[0] );
+    }
+    if (!strcmp( argv[1], "--list" ))
+    {
+        list_tests();
+        return 0;
+    }
+    return run_test(argv[1]);
+}
+
+#endif  /* STANDALONE */
+
+#endif  /* __WINE_WINE_TEST_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/unicode.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/unicode.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/unicode.h	(revision 16410)
@@ -0,0 +1,345 @@
+/*
+ * Wine internal Unicode definitions
+ *
+ * Copyright 2000 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINE_UNICODE_H
+#define __WINE_WINE_UNICODE_H
+
+#include <stdarg.h>
+
+#include <windef.h>
+#include <winbase.h>
+#include <winnls.h>
+
+#ifdef __WINE_WINE_TEST_H
+#error This file should not be used in Wine tests
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef WINE_UNICODE_API
+# if defined(_MSC_VER) || defined(__MINGW32__)
+#  define WINE_UNICODE_API DECLSPEC_IMPORT
+# else
+#  define WINE_UNICODE_API
+# endif
+#endif
+
+/*#ifndef WINE_UNICODE_INLINE
+#define WINE_UNICODE_INLINE extern inline
+#endif*/
+
+/* code page info common to SBCS and DBCS */
+struct cp_info
+{
+    unsigned int          codepage;          /* codepage id */
+    unsigned int          char_size;         /* char size (1 or 2 bytes) */
+    WCHAR                 def_char;          /* default char value (can be double-byte) */
+    WCHAR                 def_unicode_char;  /* default Unicode char value */
+    const char           *name;              /* code page name */
+};
+
+struct sbcs_table
+{
+    struct cp_info        info;
+    const WCHAR          *cp2uni;            /* code page -> Unicode map */
+    const WCHAR          *cp2uni_glyphs;     /* code page -> Unicode map with glyph chars */
+    const unsigned char  *uni2cp_low;        /* Unicode -> code page map */
+    const unsigned short *uni2cp_high;
+};
+
+struct dbcs_table
+{
+    struct cp_info        info;
+    const WCHAR          *cp2uni;            /* code page -> Unicode map */
+    const unsigned char  *cp2uni_leadbytes;
+    const unsigned short *uni2cp_low;        /* Unicode -> code page map */
+    const unsigned short *uni2cp_high;
+    unsigned char         lead_bytes[12];    /* lead bytes ranges */
+};
+
+union cptable
+{
+    struct cp_info    info;
+    struct sbcs_table sbcs;
+    struct dbcs_table dbcs;
+};
+
+extern const union cptable *wine_cp_get_table( unsigned int codepage );
+extern const union cptable *wine_cp_enum_table( unsigned int index );
+
+extern int wine_cp_mbstowcs( const union cptable *table, int flags,
+                             const char *src, int srclen,
+                             WCHAR *dst, int dstlen );
+extern int wine_cp_wcstombs( const union cptable *table, int flags,
+                             const WCHAR *src, int srclen,
+                             char *dst, int dstlen, const char *defchar, int *used );
+extern int wine_cpsymbol_mbstowcs( const char *src, int srclen, WCHAR *dst, int dstlen );
+extern int wine_cpsymbol_wcstombs( const WCHAR *src, int srclen, char *dst, int dstlen );
+extern int wine_utf8_mbstowcs( int flags, const char *src, int srclen, WCHAR *dst, int dstlen );
+extern int wine_utf8_wcstombs( int flags, const WCHAR *src, int srclen, char *dst, int dstlen );
+
+extern int wine_compare_string( int flags, const WCHAR *str1, int len1, const WCHAR *str2, int len2 );
+extern int wine_get_sortkey( int flags, const WCHAR *src, int srclen, char *dst, int dstlen );
+extern int wine_fold_string( int flags, const WCHAR *src, int srclen , WCHAR *dst, int dstlen );
+
+extern int strcmpiW( const WCHAR *str1, const WCHAR *str2 );
+extern int strncmpiW( const WCHAR *str1, const WCHAR *str2, int n );
+extern int memicmpW( const WCHAR *str1, const WCHAR *str2, int n );
+extern WCHAR *strstrW( const WCHAR *str, const WCHAR *sub );
+extern long int strtolW( const WCHAR *nptr, WCHAR **endptr, int base );
+extern unsigned long int strtoulW( const WCHAR *nptr, WCHAR **endptr, int base );
+extern int sprintfW( WCHAR *str, const WCHAR *format, ... );
+extern int snprintfW( WCHAR *str, size_t len, const WCHAR *format, ... );
+extern int vsprintfW( WCHAR *str, const WCHAR *format, va_list valist );
+extern int vsnprintfW( WCHAR *str, size_t len, const WCHAR *format, va_list valist );
+
+#ifdef WINE_UNICODE_INLINE
+
+WINE_UNICODE_INLINE int wine_is_dbcs_leadbyte( const union cptable *table, unsigned char ch );
+WINE_UNICODE_INLINE int wine_is_dbcs_leadbyte( const union cptable *table, unsigned char ch )
+{
+    return (table->info.char_size == 2) && (table->dbcs.cp2uni_leadbytes[ch]);
+}
+
+WINE_UNICODE_INLINE WCHAR tolowerW( WCHAR ch );
+WINE_UNICODE_INLINE WCHAR tolowerW( WCHAR ch )
+{
+    extern WINE_UNICODE_API const WCHAR wine_casemap_lower[];
+    return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)];
+}
+
+WINE_UNICODE_INLINE WCHAR toupperW( WCHAR ch );
+WINE_UNICODE_INLINE WCHAR toupperW( WCHAR ch )
+{
+    extern WINE_UNICODE_API const WCHAR wine_casemap_upper[];
+    return ch + wine_casemap_upper[wine_casemap_upper[ch >> 8] + (ch & 0xff)];
+}
+
+/* the character type contains the C1_* flags in the low 12 bits */
+/* and the C2_* type in the high 4 bits */
+WINE_UNICODE_INLINE unsigned short get_char_typeW( WCHAR ch );
+WINE_UNICODE_INLINE unsigned short get_char_typeW( WCHAR ch )
+{
+    extern WINE_UNICODE_API const unsigned short wine_wctype_table[];
+    return wine_wctype_table[wine_wctype_table[ch >> 8] + (ch & 0xff)];
+}
+
+WINE_UNICODE_INLINE int iscntrlW( WCHAR wc );
+WINE_UNICODE_INLINE int iscntrlW( WCHAR wc )
+{
+    return get_char_typeW(wc) & C1_CNTRL;
+}
+
+WINE_UNICODE_INLINE int ispunctW( WCHAR wc );
+WINE_UNICODE_INLINE int ispunctW( WCHAR wc )
+{
+    return get_char_typeW(wc) & C1_PUNCT;
+}
+
+WINE_UNICODE_INLINE int isspaceW( WCHAR wc );
+WINE_UNICODE_INLINE int isspaceW( WCHAR wc )
+{
+    return get_char_typeW(wc) & C1_SPACE;
+}
+
+WINE_UNICODE_INLINE int isdigitW( WCHAR wc );
+WINE_UNICODE_INLINE int isdigitW( WCHAR wc )
+{
+    return get_char_typeW(wc) & C1_DIGIT;
+}
+
+WINE_UNICODE_INLINE int isxdigitW( WCHAR wc );
+WINE_UNICODE_INLINE int isxdigitW( WCHAR wc )
+{
+    return get_char_typeW(wc) & C1_XDIGIT;
+}
+
+WINE_UNICODE_INLINE int islowerW( WCHAR wc );
+WINE_UNICODE_INLINE int islowerW( WCHAR wc )
+{
+    return get_char_typeW(wc) & C1_LOWER;
+}
+
+WINE_UNICODE_INLINE int isupperW( WCHAR wc );
+WINE_UNICODE_INLINE int isupperW( WCHAR wc )
+{
+    return get_char_typeW(wc) & C1_UPPER;
+}
+
+WINE_UNICODE_INLINE int isalnumW( WCHAR wc );
+WINE_UNICODE_INLINE int isalnumW( WCHAR wc )
+{
+    return get_char_typeW(wc) & (C1_ALPHA|C1_DIGIT|C1_LOWER|C1_UPPER);
+}
+
+WINE_UNICODE_INLINE int isalphaW( WCHAR wc );
+WINE_UNICODE_INLINE int isalphaW( WCHAR wc )
+{
+    return get_char_typeW(wc) & (C1_ALPHA|C1_LOWER|C1_UPPER);
+}
+
+WINE_UNICODE_INLINE int isgraphW( WCHAR wc );
+WINE_UNICODE_INLINE int isgraphW( WCHAR wc )
+{
+    return get_char_typeW(wc) & (C1_ALPHA|C1_PUNCT|C1_DIGIT|C1_LOWER|C1_UPPER);
+}
+
+WINE_UNICODE_INLINE int isprintW( WCHAR wc );
+WINE_UNICODE_INLINE int isprintW( WCHAR wc )
+{
+    return get_char_typeW(wc) & (C1_ALPHA|C1_BLANK|C1_PUNCT|C1_DIGIT|C1_LOWER|C1_UPPER);
+}
+
+/* some useful string manipulation routines */
+
+WINE_UNICODE_INLINE unsigned int strlenW( const WCHAR *str );
+WINE_UNICODE_INLINE unsigned int strlenW( const WCHAR *str )
+{
+    const WCHAR *s = str;
+    while (*s) s++;
+    return s - str;
+}
+
+WINE_UNICODE_INLINE WCHAR *strcpyW( WCHAR *dst, const WCHAR *src );
+WINE_UNICODE_INLINE WCHAR *strcpyW( WCHAR *dst, const WCHAR *src )
+{
+    WCHAR *p = dst;
+    while ((*p++ = *src++));
+    return dst;
+}
+
+/* strncpy doesn't do what you think, don't use it */
+#define strncpyW(d,s,n) error do_not_use_strncpyW_use_lstrcpynW_or_memcpy_instead
+
+WINE_UNICODE_INLINE int strcmpW( const WCHAR *str1, const WCHAR *str2 );
+WINE_UNICODE_INLINE int strcmpW( const WCHAR *str1, const WCHAR *str2 )
+{
+    while (*str1 && (*str1 == *str2)) { str1++; str2++; }
+    return *str1 - *str2;
+}
+
+WINE_UNICODE_INLINE int strncmpW( const WCHAR *str1, const WCHAR *str2, int n );
+WINE_UNICODE_INLINE int strncmpW( const WCHAR *str1, const WCHAR *str2, int n )
+{
+    if (n <= 0) return 0;
+    while ((--n > 0) && *str1 && (*str1 == *str2)) { str1++; str2++; }
+    return *str1 - *str2;
+}
+
+WINE_UNICODE_INLINE WCHAR *strcatW( WCHAR *dst, const WCHAR *src );
+WINE_UNICODE_INLINE WCHAR *strcatW( WCHAR *dst, const WCHAR *src )
+{
+    strcpyW( dst + strlenW(dst), src );
+    return dst;
+}
+
+WINE_UNICODE_INLINE WCHAR *strchrW( const WCHAR *str, WCHAR ch );
+WINE_UNICODE_INLINE WCHAR *strchrW( const WCHAR *str, WCHAR ch )
+{
+    do { if (*str == ch) return (WCHAR *)(ULONG_PTR)str; } while (*str++);
+    return NULL;
+}
+
+WINE_UNICODE_INLINE WCHAR *strrchrW( const WCHAR *str, WCHAR ch );
+WINE_UNICODE_INLINE WCHAR *strrchrW( const WCHAR *str, WCHAR ch )
+{
+    WCHAR *ret = NULL;
+    do { if (*str == ch) ret = (WCHAR *)(ULONG_PTR)str; } while (*str++);
+    return ret;
+}
+
+WINE_UNICODE_INLINE WCHAR *strpbrkW( const WCHAR *str, const WCHAR *accept );
+WINE_UNICODE_INLINE WCHAR *strpbrkW( const WCHAR *str, const WCHAR *accept )
+{
+    for ( ; *str; str++) if (strchrW( accept, *str )) return (WCHAR *)(ULONG_PTR)str;
+    return NULL;
+}
+
+WINE_UNICODE_INLINE size_t strspnW( const WCHAR *str, const WCHAR *accept );
+WINE_UNICODE_INLINE size_t strspnW( const WCHAR *str, const WCHAR *accept )
+{
+    const WCHAR *ptr;
+    for (ptr = str; *ptr; ptr++) if (!strchrW( accept, *ptr )) break;
+    return ptr - str;
+}
+
+WINE_UNICODE_INLINE size_t strcspnW( const WCHAR *str, const WCHAR *reject );
+WINE_UNICODE_INLINE size_t strcspnW( const WCHAR *str, const WCHAR *reject )
+{
+    const WCHAR *ptr;
+    for (ptr = str; *ptr; ptr++) if (strchrW( reject, *ptr )) break;
+    return ptr - str;
+}
+
+WINE_UNICODE_INLINE WCHAR *strlwrW( WCHAR *str );
+WINE_UNICODE_INLINE WCHAR *strlwrW( WCHAR *str )
+{
+    WCHAR *ret = str;
+    while ((*str = tolowerW(*str))) str++;
+    return ret;
+}
+
+WINE_UNICODE_INLINE WCHAR *struprW( WCHAR *str );
+WINE_UNICODE_INLINE WCHAR *struprW( WCHAR *str )
+{
+    WCHAR *ret = str;
+    while ((*str = toupperW(*str))) str++;
+    return ret;
+}
+
+WINE_UNICODE_INLINE WCHAR *memchrW( const WCHAR *ptr, WCHAR ch, size_t n );
+WINE_UNICODE_INLINE WCHAR *memchrW( const WCHAR *ptr, WCHAR ch, size_t n )
+{
+    const WCHAR *end;
+    for (end = ptr + n; ptr < end; ptr++) if (*ptr == ch) return (WCHAR *)(ULONG_PTR)ptr;
+    return NULL;
+}
+
+WINE_UNICODE_INLINE WCHAR *memrchrW( const WCHAR *ptr, WCHAR ch, size_t n );
+WINE_UNICODE_INLINE WCHAR *memrchrW( const WCHAR *ptr, WCHAR ch, size_t n )
+{
+    const WCHAR *end;
+    WCHAR *ret = NULL;
+    for (end = ptr + n; ptr < end; ptr++) if (*ptr == ch) ret = (WCHAR *)(ULONG_PTR)ptr;
+    return ret;
+}
+
+WINE_UNICODE_INLINE long int atolW( const WCHAR *str );
+WINE_UNICODE_INLINE long int atolW( const WCHAR *str )
+{
+    return strtolW( str, (WCHAR **)0, 10 );
+}
+
+WINE_UNICODE_INLINE int atoiW( const WCHAR *str );
+WINE_UNICODE_INLINE int atoiW( const WCHAR *str )
+{
+    return (int)atolW( str );
+}
+#endif //#ifdef WINE_UNICODE_INLINE
+
+#undef WINE_UNICODE_INLINE
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* __WINE_WINE_UNICODE_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/wgl.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/wgl.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/wgl.h	(revision 16410)
@@ -0,0 +1,252 @@
+/*
+ * Wine WGL extension + ATI GLX extension defines
+ *
+ * Copyright (c) 2004 Lionel Ulmer
+ * Copyright (c) 2005 Alex Woods
+ * Copyright (c) 2005 Raphael Junqueira
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/* For compatibility with old Mesa headers */
+#ifndef GLX_SAMPLE_BUFFERS_ARB
+# define GLX_SAMPLE_BUFFERS_ARB             100000
+#endif
+#ifndef GLX_SAMPLES_ARB
+# define GLX_SAMPLES_ARB                    100001
+#endif
+#ifndef GL_TEXTURE_CUBE_MAP
+# define GL_TEXTURE_CUBE_MAP 0x8513
+#endif
+
+#define HPBUFFERARB void *
+
+#define WGL_NUMBER_PIXEL_FORMATS_ARB		0x2000
+#define WGL_DRAW_TO_WINDOW_ARB			0x2001
+#define WGL_DRAW_TO_BITMAP_ARB			0x2002
+#define WGL_ACCELERATION_ARB			0x2003
+#define WGL_NEED_PALETTE_ARB			0x2004
+#define WGL_NEED_SYSTEM_PALETTE_ARB		0x2005
+#define WGL_SWAP_LAYER_BUFFERS_ARB		0x2006
+#define WGL_SWAP_METHOD_ARB			0x2007
+#define WGL_NUMBER_OVERLAYS_ARB			0x2008
+#define WGL_NUMBER_UNDERLAYS_ARB		0x2009
+#define WGL_TRANSPARENT_ARB			0x200A
+#define WGL_TRANSPARENT_RED_VALUE_ARB		0x2037
+#define WGL_TRANSPARENT_GREEN_VALUE_ARB		0x2038
+#define WGL_TRANSPARENT_BLUE_VALUE_ARB		0x2039
+#define WGL_TRANSPARENT_ALPHA_VALUE_ARB		0x203A
+#define WGL_TRANSPARENT_INDEX_VALUE_ARB		0x203B
+#define WGL_SHARE_DEPTH_ARB			0x200C
+#define WGL_SHARE_STENCIL_ARB			0x200D
+#define WGL_SHARE_ACCUM_ARB			0x200E
+#define WGL_SUPPORT_GDI_ARB			0x200F
+#define WGL_SUPPORT_OPENGL_ARB			0x2010
+#define WGL_DOUBLE_BUFFER_ARB			0x2011
+#define WGL_STEREO_ARB				0x2012
+#define WGL_PIXEL_TYPE_ARB			0x2013
+#define WGL_COLOR_BITS_ARB			0x2014
+#define WGL_RED_BITS_ARB			0x2015
+#define WGL_RED_SHIFT_ARB			0x2016
+#define WGL_GREEN_BITS_ARB			0x2017
+#define WGL_GREEN_SHIFT_ARB			0x2018
+#define WGL_BLUE_BITS_ARB			0x2019
+#define WGL_BLUE_SHIFT_ARB			0x201A
+#define WGL_ALPHA_BITS_ARB			0x201B
+#define WGL_ALPHA_SHIFT_ARB			0x201C
+#define WGL_ACCUM_BITS_ARB			0x201D
+#define WGL_ACCUM_RED_BITS_ARB			0x201E
+#define WGL_ACCUM_GREEN_BITS_ARB		0x201F
+#define WGL_ACCUM_BLUE_BITS_ARB			0x2020
+#define WGL_ACCUM_ALPHA_BITS_ARB		0x2021
+#define WGL_DEPTH_BITS_ARB			0x2022
+#define WGL_STENCIL_BITS_ARB			0x2023
+#define WGL_AUX_BUFFERS_ARB			0x2024
+
+#define WGL_NO_ACCELERATION_ARB			0x2025
+#define WGL_GENERIC_ACCELERATION_ARB		0x2026
+#define WGL_FULL_ACCELERATION_ARB		0x2027
+
+#define WGL_PBUFFER_WIDTH_ARB                   0x2034
+#define WGL_PBUFFER_HEIGHT_ARB                  0x2035
+#define WGL_PBUFFER_LOST_ARB                    0x2036
+#define WGL_DRAW_TO_PBUFFER_ARB		        0x202D
+#define WGL_MAX_PBUFFER_PIXELS_ARB	        0x202E
+#define WGL_MAX_PBUFFER_WIDTH_ARB		0x202F
+#define WGL_MAX_PBUFFER_HEIGHT_ARB	        0x2030
+#define WGL_PBUFFER_LARGEST_ARB                 0x2033
+
+#define WGL_TYPE_RGBA_ARB			0x202B
+#define WGL_TYPE_COLORINDEX_ARB			0x202C
+
+#define WGL_SAMPLE_BUFFERS_ARB		        0x2041
+#define WGL_SAMPLES_ARB	                        0x2042
+
+/**
+ * WGL_render_texture 
+ */
+/** GetPixelFormat/ChoosePixelFormat */
+#define WGL_BIND_TO_TEXTURE_RGB_ARB             0x2070
+#define WGL_BIND_TO_TEXTURE_RGBA_ARB            0x2071
+/** CreatePbuffer / QueryPbuffer */
+#define WGL_TEXTURE_FORMAT_ARB                  0x2072
+#define WGL_TEXTURE_TARGET_ARB                  0x2073
+#define WGL_MIPMAP_TEXTURE_ARB                  0x2074
+/** CreatePbuffer / QueryPbuffer */
+#define WGL_TEXTURE_RGB_ARB                     0x2075
+#define WGL_TEXTURE_RGBA_ARB                    0x2076
+#define WGL_NO_TEXTURE_ARB                      0x2077
+/** CreatePbuffer / QueryPbuffer */
+#define WGL_TEXTURE_CUBE_MAP_ARB                0x2078
+#define WGL_TEXTURE_1D_ARB                      0x2079
+#define WGL_TEXTURE_2D_ARB                      0x207A
+#define WGL_NO_TEXTURE_ARB                      0x2077
+/** SetPbufferAttribARB/QueryPbufferARB parameters */
+#define WGL_MIPMAP_LEVEL_ARB                    0x207B
+#define WGL_CUBE_MAP_FACE_ARB                   0x207C
+/** SetPbufferAttribARB/QueryPbufferARB attribs */
+#define WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB     0x207D
+#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB     0x207E
+#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB     0x207F
+#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB     0x2080
+#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB     0x2081 
+#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB     0x2082
+/** BindTexImageARB/ReleaseTexImageARB */
+#define WGL_FRONT_LEFT_ARB                  0x2083
+#define WGL_FRONT_RIGHT_ARB                 0x2084
+#define WGL_BACK_LEFT_ARB                   0x2085
+#define WGL_BACK_RIGHT_ARB                  0x2086
+#define WGL_AUX0_ARB                        0x2087 
+#define WGL_AUX1_ARB                        0x2088 
+#define WGL_AUX2_ARB                        0x2089 
+#define WGL_AUX3_ARB                        0x208A 
+#define WGL_AUX4_ARB                        0x208B 
+#define WGL_AUX5_ARB                        0x208C 
+#define WGL_AUX6_ARB                        0x208D
+#define WGL_AUX7_ARB                        0x208E 
+#define WGL_AUX8_ARB                        0x208F 
+#define WGL_AUX9_ARB                        0x2090
+
+/** WGL_NV_render_texture_rectangle */
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV 0x20A0
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV 0x20A1
+#define WGL_TEXTURE_RECTANGLE_NV       0x20A2
+/** WGL_NV_render_depth_texture */
+#define WGL_BIND_TO_TEXTURE_DEPTH_NV   0x20A3
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV 0x20A4
+#define WGL_DEPTH_TEXTURE_FORMAT_NV    0x20A5
+#define WGL_TEXTURE_DEPTH_COMPONENT_NV 0x20A6
+#define WGL_DEPTH_COMPONENT_NV         0x20A7
+/** WGL_NV_float_buffer */
+#define WGL_FLOAT_COMPONENTS_NV        0x20B0
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV 0x20B1
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV 0x20B2
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV 0x20B3
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV 0x20B4
+#define WGL_TEXTURE_FLOAT_R_NV         0x20B5
+#define WGL_TEXTURE_FLOAT_RG_NV        0x20B6
+#define WGL_TEXTURE_FLOAT_RGB_NV       0x20B7
+#define WGL_TEXTURE_FLOAT_RGBA_NV      0x20B8
+/** GL_NV_float_buffer */
+#define GL_FLOAT_R_NV                     0x8880
+#define GL_FLOAT_RG_NV                    0x8881
+#define GL_FLOAT_RGB_NV                   0x8882
+#define GL_FLOAT_RGBA_NV                  0x8883
+#define GL_FLOAT_R16_NV                   0x8884
+#define GL_FLOAT_R32_NV                   0x8885
+#define GL_FLOAT_RG16_NV                  0x8886
+#define GL_FLOAT_RG32_NV                  0x8887
+#define GL_FLOAT_RGB16_NV                 0x8888
+#define GL_FLOAT_RGB32_NV                 0x8889
+#define GL_FLOAT_RGBA16_NV                0x888A
+#define GL_FLOAT_RGBA32_NV                0x888B
+#define GL_TEXTURE_FLOAT_COMPONENTS_NV    0x888C
+#define GL_FLOAT_CLEAR_COLOR_VALUE_NV     0x888D
+#define GL_FLOAT_RGBA_MODE_NV             0x888E
+
+/** WGL_EXT_framebuffer_sRGB */
+#define WGL_FRAMEBUFFER_SRGB_CAPABLE_EXT  0x20A9
+#ifndef GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT
+# define GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20B2
+#endif
+
+/** WGL_ARB_create_context */
+#define WGL_CONTEXT_DEBUG_BIT_ARB      0x0001
+#define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x0002
+#define WGL_CONTEXT_MAJOR_VERSION_ARB  0x2091
+#define WGL_CONTEXT_MINOR_VERSION_ARB  0x2092
+#define WGL_CONTEXT_LAYER_PLANE_ARB    0x2093
+#define WGL_CONTEXT_FLAGS_ARB          0x2094
+#define ERROR_INVALID_VERSION_ARB      0x2095
+#ifndef GLX_ARB_create_context
+#define GLX_CONTEXT_DEBUG_BIT_ARB          0x00000001
+#define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002
+#define GLX_CONTEXT_MAJOR_VERSION_ARB      0x2091
+#define GLX_CONTEXT_MINOR_VERSION_ARB      0x2092
+#define GLX_CONTEXT_FLAGS_ARB              0x2094
+#endif
+
+/** 
+ * WGL_ATI_pixel_format_float / WGL_ARB_color_buffer_float
+ */
+#define WGL_TYPE_RGBA_FLOAT_ATI             0x21A0
+#define GL_RGBA_FLOAT_MODE_ATI              0x8820
+#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI  0x8835
+#define GL_CLAMP_VERTEX_COLOR_ARB           0x891A
+#define GL_CLAMP_FRAGMENT_COLOR_ARB         0x891B
+#define GL_CLAMP_READ_COLOR_ARB             0x891C
+/** GLX_ATI_pixel_format_float */
+#define GLX_RGBA_FLOAT_ATI_BIT              0x00000100
+/** GLX_ARB_pixel_format_float */
+#define GLX_RGBA_FLOAT_BIT                  0x00000004
+#define GLX_RGBA_FLOAT_TYPE                 0x20B9 
+/** GLX_ATI_render_texture */
+#define GLX_BIND_TO_TEXTURE_RGB_ATI         0x9800
+#define GLX_BIND_TO_TEXTURE_RGBA_ATI        0x9801
+#define GLX_TEXTURE_FORMAT_ATI              0x9802
+#define GLX_TEXTURE_TARGET_ATI              0x9803
+#define GLX_MIPMAP_TEXTURE_ATI              0x9804
+#define GLX_TEXTURE_RGB_ATI                 0x9805
+#define GLX_TEXTURE_RGBA_ATI                0x9806
+#define GLX_NO_TEXTURE_ATI                  0x9807
+#define GLX_TEXTURE_CUBE_MAP_ATI            0x9808
+#define GLX_TEXTURE_1D_ATI                  0x9809
+#define GLX_TEXTURE_2D_ATI                  0x980A
+#define GLX_MIPMAP_LEVEL_ATI                0x980B
+#define GLX_CUBE_MAP_FACE_ATI               0x980C
+#define GLX_TEXTURE_CUBE_MAP_POSITIVE_X_ATI 0x980D
+#define GLX_TEXTURE_CUBE_MAP_NEGATIVE_X_ATI 0x980E
+#define GLX_TEXTURE_CUBE_MAP_POSITIVE_Y_ATI 0x980F
+#define GLX_TEXTURE_CUBE_MAP_NEGATIVE_Y_ATI 0x9810
+#define GLX_TEXTURE_CUBE_MAP_POSITIVE_Z_ATI 0x9811
+#define GLX_TEXTURE_CUBE_MAP_NEGATIVE_Z_ATI 0x9812
+#define GLX_FRONT_LEFT_ATI                  0x9813
+#define GLX_FRONT_RIGHT_ATI                 0x9814
+#define GLX_BACK_LEFT_ATI                   0x9815
+#define GLX_BACK_RIGHT_ATI                  0x9816
+#define GLX_AUX0_ATI                        0x9817
+#define GLX_AUX1_ATI                        0x9818
+#define GLX_AUX2_ATI                        0x9819
+#define GLX_AUX3_ATI                        0x981A
+#define GLX_AUX4_ATI                        0x981B
+#define GLX_AUX5_ATI                        0x981C
+#define GLX_AUX6_ATI                        0x981D
+#define GLX_AUX7_ATI                        0x981E
+#define GLX_AUX8_ATI                        0x981F
+#define GLX_AUX9_ATI                        0x9820
+#define GLX_BIND_TO_TEXTURE_LUMINANCE_ATI   0x9821
+#define GLX_BIND_TO_TEXTURE_INTENSITY_ATI   0x9822
+/** GLX_NV_float_buffer */
+#define GLX_FLOAT_COMPONENTS_NV            0x20B0
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/winaspi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/winaspi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/winaspi.h	(revision 16410)
@@ -0,0 +1,143 @@
+/*
+ * This file should be source compatible with the Adaptec winaspi.h
+ * All DOS ASPI structures are the same as WINASPI
+ *
+ * Copyright (C) 2000 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINASPI_H__
+#define __WINASPI_H__
+
+/* Include base aspi defs */
+#include <wnaspi32.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* #ifdef __cplusplus */
+
+/* WINE SCSI Stuff */
+#define ASPI_DOS        1
+#define ASPI_WIN16      2
+
+#include <pshpack1.h>
+
+/* SRB HA_INQUIRY */
+
+typedef struct tagSRB16_HaInquiry {
+  BYTE	SRB_Cmd;
+  BYTE	SRB_Status;
+  BYTE	SRB_HaId;
+  BYTE	SRB_Flags;
+  WORD	SRB_55AASignature;
+  WORD	SRB_ExtBufferSize;
+  BYTE	HA_Count;
+  BYTE	HA_SCSI_ID;
+  BYTE	HA_ManagerId[16];
+  BYTE	HA_Identifier[16];
+  BYTE	HA_Unique[16];
+  BYTE	HA_ExtBuffer[4];
+} SRB_HaInquiry16, *PSRB_HaInquiry16, *LPSRB_HaInquiry16;
+
+typedef struct tagSRB16_GDEVBlock {
+  BYTE        SRB_Cmd;            /* ASPI command code = SC_GET_DEV_TYPE */
+  BYTE        SRB_Status;         /* ASPI command status byte */
+  BYTE        SRB_HaId;           /* ASPI host adapter number */
+  BYTE        SRB_Flags;          /* ASPI request flags */
+  DWORD       SRB_Hdr_Rsvd;       /* Reserved, MUST = 0 */
+  BYTE        SRB_Target;         /* Target's SCSI ID */
+  BYTE        SRB_Lun;            /* Target's LUN number */
+  BYTE        SRB_DeviceType;     /* Target's peripheral device type */
+} SRB_GDEVBlock16, *PSRB_GDEVBlock16, *LPSRB_GDEVBlock16;
+
+
+typedef struct tagSRB16_ExecSCSICmd {
+  BYTE        SRB_Cmd;                /* ASPI command code	      (W)  */
+  BYTE        SRB_Status;             /* ASPI command status byte     (R)  */
+  BYTE        SRB_HaId;               /* ASPI host adapter number     (W)  */
+  BYTE        SRB_Flags;              /* ASPI request flags	      (W)  */
+  DWORD       SRB_Hdr_Rsvd;           /* Reserved, MUST = 0	      (-)  */
+  BYTE        SRB_Target;             /* Target's SCSI ID	      (W)  */
+  BYTE        SRB_Lun;                /* Target's LUN number	      (W)  */
+  DWORD       SRB_BufLen;             /* Data Allocation LengthPG     (W/R)*/
+  BYTE        SRB_SenseLen;           /* Sense Allocation Length      (W)  */
+  SEGPTR      SRB_BufPointer;         /* Data Buffer Pointer	      (W)  */
+  DWORD       SRB_Rsvd1;              /* Reserved, MUST = 0	      (-/W)*/
+  BYTE        SRB_CDBLen;             /* CDB Length = 6		      (W)  */
+  BYTE        SRB_HaStat;             /* Host Adapter Status	      (R)  */
+  BYTE        SRB_TargStat;           /* Target Status		      (R)  */
+  FARPROC16   SRB_PostProc;	      /* Post routine		      (W)  */
+  BYTE        SRB_Rsvd2[34];          /* Reserved, MUST = 0                */
+  BYTE		CDBByte[1];	      /* SCSI CBD - variable length   (W)  */
+  /* variable example for 6 byte cbd
+   * BYTE        CDBByte[6];             * SCSI CDB                    (W) *
+   * BYTE        SenseArea6[SENSE_LEN];  * Request Sense buffer 	(R) *
+   */
+} SRB_ExecSCSICmd16, *PSRB_ExecSCSICmd16, *LPSRB_ExecSCSICmd16;
+
+typedef struct tagSRB16_Abort {
+  BYTE        SRB_Cmd;            /* ASPI command code = SC_ABORT_SRB */
+  BYTE        SRB_Status;         /* ASPI command status byte */
+  BYTE        SRB_HaId;           /* ASPI host adapter number */
+  BYTE        SRB_Flags;          /* ASPI request flags */
+  DWORD       SRB_Hdr_Rsvd;       /* Reserved, MUST = 0 */
+  SEGPTR      SRB_ToAbort;        /* Pointer to SRB to abort */
+} SRB_Abort16, *PSRB_Abort16, *LPSRB_Abort16;
+
+
+typedef struct tagSRB16_BusDeviceReset {
+  BYTE        SRB_Cmd;            /* ASPI command code = SC_RESET_DEV */
+  BYTE        SRB_Status;         /* ASPI command status byte */
+  BYTE        SRB_HaId;           /* ASPI host adapter number */
+  BYTE        SRB_Flags;          /* ASPI request flags */
+  DWORD       SRB_Hdr_Rsvd;       /* Reserved, MUST = 0 */
+  BYTE        SRB_Target;         /* Target's SCSI ID */
+  BYTE        SRB_Lun;            /* Target's LUN number */
+  BYTE        SRB_ResetRsvd1[14]; /* Reserved, MUST = 0 */
+  BYTE        SRB_HaStat;         /* Host Adapter Status */
+  BYTE        SRB_TargStat;       /* Target Status */
+  FARPROC16   SRB_PostProc;       /* Post routine */
+  BYTE        SRB_ResetRsvd2[34]; /* Reserved, MUST = 0 */
+} SRB_BusDeviceReset16, *PSRB_BusDeviceReset16, *LPSRB_BusDeviceReset16;
+
+
+typedef struct tagSRB16_Common {
+  BYTE        SRB_Cmd;            /* ASPI command code = SC_ABORT_SRB */
+  BYTE        SRB_Status;         /* ASPI command status byte */
+  BYTE        SRB_HaId;           /* ASPI host adapter number */
+  BYTE        SRB_Flags;          /* ASPI request flags */
+  DWORD       SRB_Hdr_Rsvd;       /* Reserved, MUST = 0 */
+} SRB_Common16, *PSRB_Common16, *LPSRB_Common16;
+
+typedef union tagSRB16 {
+    SRB_Common16          common;
+    SRB_HaInquiry16       inquiry;
+    SRB_ExecSCSICmd16     cmd;
+    SRB_Abort16           abort;
+    SRB_BusDeviceReset16  reset;
+    SRB_GDEVBlock16       devtype;
+} SRB16, *LPSRB16;
+
+#include <poppack.h>
+
+extern WORD WINAPI SendASPICommand16(SEGPTR);
+extern WORD WINAPI GetASPISupportInfo16(void);
+
+#ifdef __cplusplus
+}
+#endif /* #ifdef __cplusplus */
+
+#endif /* __WINE_WINASPI_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/winbase16.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/winbase16.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/winbase16.h	(revision 16410)
@@ -0,0 +1,530 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINE_WINBASE16_H
+#define __WINE_WINE_WINBASE16_H
+
+#include <stdarg.h>
+#include <windef.h>
+#include <winbase.h>
+#include <winnls.h>
+#include <wine/windef16.h>
+#include <wine/library.h>
+
+#include <pshpack1.h>
+
+/* Process database (i.e. a normal DOS PSP) */
+typedef struct
+{
+    WORD      int20;            /* 00 int 20h instruction */
+    WORD      nextParagraph;    /* 02 Segment of next paragraph */
+    BYTE      reserved1;
+    BYTE      dispatcher[5];    /* 05 Long call to DOS */
+    FARPROC16 savedint22;       /* 0a Saved int 22h handler */
+    FARPROC16 savedint23;       /* 0e Saved int 23h handler */
+    FARPROC16 savedint24;       /* 12 Saved int 24h handler */
+    WORD      parentPSP;        /* 16 Selector of parent PSP */
+    BYTE      fileHandles[20];  /* 18 Open file handles */
+    HANDLE16  environment;      /* 2c Selector of environment */
+    DWORD     saveStack;        /* 2e SS:SP on last int21 call */
+    WORD      nbFiles;          /* 32 Number of file handles */
+    SEGPTR    fileHandlesPtr;   /* 34 Pointer to file handle table */
+    HANDLE16  hFileHandles;     /* 38 Handle to fileHandlesPtr */
+    WORD      reserved3[17];
+    BYTE      fcb1[16];         /* 5c First FCB */
+    BYTE      fcb2[20];         /* 6c Second FCB */
+    BYTE      cmdLine[128];     /* 80 Command-line (first byte is len)*/
+    BYTE      padding[16];      /* Some apps access beyond the end of the cmd line */
+} PDB16;
+
+/* Task database. See 'Windows Internals' p. 226.
+ * Note that 16-bit OLE 2 libs like to read it directly
+ * so we have to keep entry offsets as they are.
+ */
+typedef struct _TDB
+{
+    HTASK16   hNext;              /* 00 Selector of next TDB */
+    DWORD     ss_sp;              /* 02 Stack pointer of task */
+    WORD      nEvents;            /* 06 Events for this task */
+    INT16     priority;           /* 08 Task priority, -32..15 */
+    WORD      unused1;            /* 0a */
+    HTASK16   hSelf;              /* 0c Selector of this TDB */
+    HANDLE16  hPrevInstance;      /* 0e Previous instance of module */
+    DWORD     unused2;            /* 10 */
+    WORD      ctrlword8087;       /* 14 80x87 control word */
+    WORD      flags;              /* 16 Task flags */
+    UINT16    error_mode;         /* 18 Error mode (see SetErrorMode)*/
+    WORD      version;            /* 1a Expected Windows version */
+    HANDLE16  hInstance;          /* 1c Instance handle for task */
+    HMODULE16 hModule;            /* 1e Module handle */
+    HQUEUE16  hQueue;             /* 20 Selector of task queue */
+    HTASK16   hParent;            /* 22 Selector of TDB of parent */
+    WORD      signal_flags;       /* 24 Flags for signal handler */
+    FARPROC16 sighandler;         /* 26 Signal handler */
+    FARPROC16 userhandler;        /* 2a USER signal handler */
+    FARPROC16 discardhandler;     /* 2e Handler for GlobalNotify() */
+    FARPROC16 int0;               /* 32 int 0 (divide by 0) handler */
+    FARPROC16 int2;               /* 36 int 2 (NMI) handler */
+    FARPROC16 int4;               /* 3a int 4 (INTO) handler */
+    FARPROC16 int6;               /* 3e int 6 (invalid opc) handler */
+    FARPROC16 int7;               /* 42 int 7 (coprocessor) handler */
+    FARPROC16 int3e;              /* 46 int 3e (80x87 emu) handler */
+    FARPROC16 int75;              /* 4a int 75 (80x87 error) handler */
+    DWORD     compat_flags;       /* 4e Compatibility flags */
+    BYTE      unused4[2];         /* 52 */
+    struct _TEB *teb;             /* 54 Pointer to thread database */
+    BYTE      unused5[8];         /* 58 */
+    HANDLE16  hPDB;               /* 60 Selector of PDB (i.e. PSP) */
+    SEGPTR    dta;                /* 62 Current DTA */
+    BYTE      curdrive;           /* 66 Current drive */
+    CHAR      curdir[65];         /* 67 Current directory */
+    WORD      nCmdShow;           /* a8 cmdShow parameter to WinMain */
+    HTASK16   hYieldTo;           /* aa Next task to schedule */
+    DWORD     dlls_to_init;       /* ac Ptr to DLLs to initialize */
+    HANDLE16  hCSAlias;           /* b0 Code segment for this TDB */
+    WORD      thunks[8*4];        /* b2 Make proc instance thunks */
+    CHAR      module_name[8];     /* f2 Module name for task */
+    WORD      magic;              /* fa TDB signature */
+    HANDLE    hEvent;             /* fc scheduler event handle */
+    PDB16     pdb;                /* 100 PDB for this task */
+} TDB;
+
+/* TDB flags */
+#define TDBF_WINOLDAP   0x0001
+#define TDBF_OS2APP     0x0008
+#define TDBF_WIN32      0x0010
+
+/* Windows 3.1 USER signals */
+#define USIG16_TERMINATION      0x0020
+#define USIG16_DLL_LOAD         0x0040
+#define USIG16_DLL_UNLOAD       0x0080
+#define USIG16_GPF              0x0666
+
+typedef struct _SEGINFO {
+    UINT16    offSegment;
+    UINT16    cbSegment;
+    UINT16    flags;
+    UINT16    cbAlloc;
+    HGLOBAL16 h;
+    UINT16    alignShift;
+    UINT16    reserved[2];
+} SEGINFO;
+
+/* GetWinFlags */
+
+#define WF_PMODE 	0x0001
+#define WF_CPU286 	0x0002
+#define	WF_CPU386	0x0004
+#define	WF_CPU486 	0x0008
+#define	WF_STANDARD	0x0010
+#define	WF_WIN286 	0x0010
+#define	WF_ENHANCED	0x0020
+#define	WF_WIN386	0x0020
+#define	WF_CPU086	0x0040
+#define	WF_CPU186	0x0080
+#define	WF_LARGEFRAME	0x0100
+#define	WF_SMALLFRAME	0x0200
+#define	WF_80x87	0x0400
+#define	WF_PAGING	0x0800
+#define	WF_HASCPUID     0x2000
+#define	WF_WIN32WOW     0x4000	/* undoc */
+#define	WF_WLO          0x8000
+
+/* Parameters for LoadModule() */
+typedef struct
+{
+    HGLOBAL16 hEnvironment; /* Environment segment */
+    SEGPTR    cmdLine;      /* Command-line */
+    SEGPTR    showCmd;      /* Code for ShowWindow() */
+    SEGPTR    reserved;
+} LOADPARAMS16;
+
+/* Debugging support (DEBUG SYSTEM ONLY) */
+typedef struct
+{
+    WORD    flags;
+    DWORD   dwOptions;
+    DWORD   dwFilter;
+    CHAR    achAllocModule[8];
+    DWORD   dwAllocBreak;
+    DWORD   dwAllocCount;
+} WINDEBUGINFO16, *LPWINDEBUGINFO16;
+
+/* definitions specific to Wine 16-bit relaying support */
+
+/* 32-bit stack layout after __wine_call_to_16() */
+typedef struct _STACK32FRAME
+{
+    DWORD   restore_addr;   /* 00 return address for restoring code selector */
+    DWORD   codeselector;   /* 04 code selector to restore */
+    EXCEPTION_REGISTRATION_RECORD frame;  /* 08 Exception frame */
+    SEGPTR  frame16;        /* 10 16-bit frame from last CallFrom16() */
+    DWORD   edi;            /* 14 saved registers */
+    DWORD   esi;            /* 18 */
+    DWORD   ebx;            /* 1c */
+    DWORD   ebp;            /* 20 saved 32-bit frame pointer */
+    DWORD   retaddr;        /* 24 return address */
+    DWORD   target;         /* 28 target address / CONTEXT86 pointer */
+    DWORD   nb_args;        /* 2c number of 16-bit argument bytes */
+} STACK32FRAME;
+
+/* 16-bit stack layout after __wine_call_from_16() */
+typedef struct _STACK16FRAME
+{
+    STACK32FRAME *frame32;        /* 00 32-bit frame from last CallTo16() */
+    DWORD         edx;            /* 04 saved registers */
+    DWORD         ecx;            /* 08 */
+    DWORD         ebp;            /* 0c */
+    WORD          ds;             /* 10 */
+    WORD          es;             /* 12 */
+    WORD          fs;             /* 14 */
+    WORD          gs;             /* 16 */
+    DWORD         callfrom_ip;    /* 18 callfrom tail IP */
+    DWORD         module_cs;      /* 1c module code segment */
+    DWORD         relay;          /* 20 relay function address */
+    WORD          entry_ip;       /* 22 entry point IP */
+    DWORD         entry_point;    /* 26 API entry point to call, reused as mutex count */
+    WORD          bp;             /* 2a 16-bit stack frame chain */
+    WORD          ip;             /* 2c return address */
+    WORD          cs;             /* 2e */
+} STACK16FRAME;
+
+/* argument type flags for relay debugging */
+enum arg_types
+{
+    ARG_NONE = 0, /* indicates end of arg list */
+    ARG_WORD,     /* unsigned word */
+    ARG_SWORD,    /* signed word */
+    ARG_LONG,     /* long or segmented pointer */
+    ARG_PTR,      /* linear pointer */
+    ARG_STR,      /* linear pointer to null-terminated string */
+    ARG_SEGSTR,   /* segmented pointer to null-terminated string */
+    ARG_VARARG    /* start of varargs */
+};
+
+#include <poppack.h>
+
+#define INVALID_HANDLE_VALUE16  ((HANDLE16) -1)
+#define INFINITE16      0xFFFF
+
+typedef struct {
+        DWORD dwOSVersionInfoSize;
+        DWORD dwMajorVersion;
+        DWORD dwMinorVersion;
+        DWORD dwBuildNumber;
+        DWORD dwPlatformId;
+        CHAR szCSDVersion[128];
+} OSVERSIONINFO16;
+
+
+/*
+ * NE Header FORMAT FLAGS
+ */
+#define NE_FFLAGS_SINGLEDATA    0x0001
+#define NE_FFLAGS_MULTIPLEDATA  0x0002
+#define NE_FFLAGS_WIN32         0x0010
+#define NE_FFLAGS_BUILTIN       0x0020  /* Wine built-in module */
+#define NE_FFLAGS_FRAMEBUF      0x0100  /* OS/2 fullscreen app */
+#define NE_FFLAGS_CONSOLE       0x0200  /* OS/2 console app */
+#define NE_FFLAGS_GUI           0x0300  /* right, (NE_FFLAGS_FRAMEBUF | NE_FFLAGS_CONSOLE) */
+#define NE_FFLAGS_SELFLOAD      0x0800
+#define NE_FFLAGS_LINKERROR     0x2000
+#define NE_FFLAGS_CALLWEP       0x4000
+#define NE_FFLAGS_LIBMODULE     0x8000
+
+/*
+ * NE Header OPERATING SYSTEM
+ */
+#define NE_OSFLAGS_UNKNOWN      0x01
+#define NE_OSFLAGS_WINDOWS      0x04
+
+/*
+ * NE Header ADDITIONAL FLAGS
+ */
+#define NE_AFLAGS_WIN2_PROTMODE 0x02
+#define NE_AFLAGS_WIN2_PROFONTS 0x04
+#define NE_AFLAGS_FASTLOAD      0x08
+
+/*
+ * Segment Flags
+ */
+#define NE_SEGFLAGS_DATA        0x0001
+#define NE_SEGFLAGS_ALLOCATED   0x0002
+#define NE_SEGFLAGS_LOADED      0x0004
+#define NE_SEGFLAGS_ITERATED    0x0008
+#define NE_SEGFLAGS_MOVEABLE    0x0010
+#define NE_SEGFLAGS_SHAREABLE   0x0020
+#define NE_SEGFLAGS_PRELOAD     0x0040
+#define NE_SEGFLAGS_EXECUTEONLY 0x0080
+#define NE_SEGFLAGS_READONLY    0x0080
+#define NE_SEGFLAGS_RELOC_DATA  0x0100
+#define NE_SEGFLAGS_SELFLOAD    0x0800
+#define NE_SEGFLAGS_DISCARDABLE 0x1000
+#define NE_SEGFLAGS_32BIT       0x2000
+
+/*
+ * Resource table structures.
+ */
+typedef struct
+{
+    WORD     offset;
+    WORD     length;
+    WORD     flags;
+    WORD     id;
+    HANDLE16 handle;
+    WORD     usage;
+} NE_NAMEINFO;
+
+typedef struct
+{
+    WORD        type_id;   /* Type identifier */
+    WORD        count;     /* Number of resources of this type */
+    FARPROC16   resloader; /* SetResourceHandler() */
+    /*
+     * Name info array.
+     */
+} NE_TYPEINFO;
+
+#define NE_RSCTYPE_CURSOR             0x8001
+#define NE_RSCTYPE_BITMAP             0x8002
+#define NE_RSCTYPE_ICON               0x8003
+#define NE_RSCTYPE_MENU               0x8004
+#define NE_RSCTYPE_DIALOG             0x8005
+#define NE_RSCTYPE_STRING             0x8006
+#define NE_RSCTYPE_FONTDIR            0x8007
+#define NE_RSCTYPE_FONT               0x8008
+#define NE_RSCTYPE_ACCELERATOR        0x8009
+#define NE_RSCTYPE_RCDATA             0x800a
+#define NE_RSCTYPE_GROUP_CURSOR       0x800c
+#define NE_RSCTYPE_GROUP_ICON         0x800e
+#define NE_RSCTYPE_SCALABLE_FONTPATH  0x80cc   /* Resource found in .fot files */
+
+
+#define __AHSHIFT  3  /* don't change! */
+#define __AHINCR   (1 << __AHSHIFT)
+
+/* undocumented functions */
+WORD        WINAPI AllocCStoDSAlias16(WORD);
+WORD        WINAPI AllocDStoCSAlias16(WORD);
+HGLOBAL16   WINAPI AllocResource16(HINSTANCE16,HRSRC16,DWORD);
+WORD        WINAPI AllocSelector16(WORD);
+WORD        WINAPI AllocSelectorArray16(WORD);
+VOID        WINAPI DirectedYield16(HTASK16);
+HGLOBAL16   WINAPI DirectResAlloc16(HINSTANCE16,WORD,UINT16);
+HANDLE16    WINAPI FarGetOwner16(HGLOBAL16);
+VOID        WINAPI FarSetOwner16(HGLOBAL16,HANDLE16);
+FARPROC16   WINAPI FileCDR16(FARPROC16);
+WORD        WINAPI FreeSelector16(WORD);
+HANDLE16    WINAPI GetAtomHandle16(ATOM);
+HANDLE16    WINAPI GetCodeHandle16(FARPROC16);
+BOOL16      WINAPI GetCodeInfo16(FARPROC16,SEGINFO*);
+DWORD       WINAPI GetCurrentPDB16(void);
+HTASK16     WINAPI GetCurrentTask(void);
+SEGPTR      WINAPI GetDOSEnvironment16(void);
+HMODULE16   WINAPI GetExePtr(HANDLE16);
+WORD        WINAPI GetExeVersion16(void);
+WORD        WINAPI GetExpWinVer16(HMODULE16);
+HQUEUE16    WINAPI GetFastQueue16(void);
+DWORD       WINAPI GetHeapSpaces16(HMODULE16);
+INT16       WINAPI GetInstanceData16(HINSTANCE16,WORD,INT16);
+BOOL16      WINAPI GetModuleName16(HINSTANCE16,LPSTR,INT16);
+INT16       WINAPI GetModuleUsage16(HINSTANCE16);
+UINT16      WINAPI GetNumTasks16(void);
+SEGPTR      WINAPI GetpWin16Lock16(void);
+DWORD       WINAPI GetSelectorLimit16(WORD);
+FARPROC16   WINAPI GetSetKernelDOSProc16(FARPROC16 DosProc);
+HINSTANCE16 WINAPI GetTaskDS16(void);
+HQUEUE16    WINAPI GetTaskQueue16(HTASK16);
+HQUEUE16    WINAPI GetThreadQueue16(DWORD);
+DWORD       WINAPI GetWinFlags16(void);
+DWORD       WINAPI GlobalDOSAlloc16(DWORD);
+WORD        WINAPI GlobalDOSFree16(WORD);
+void        WINAPI GlobalFreeAll16(HGLOBAL16);
+DWORD       WINAPI GlobalHandleNoRIP16(WORD);
+WORD        WINAPI GlobalHandleToSel16(HGLOBAL16);
+HGLOBAL16   WINAPI GlobalLRUNewest16(HGLOBAL16);
+HGLOBAL16   WINAPI GlobalLRUOldest16(HGLOBAL16);
+VOID        WINAPI GlobalNotify16(FARPROC16);
+WORD        WINAPI GlobalPageLock16(HGLOBAL16);
+WORD        WINAPI GlobalPageUnlock16(HGLOBAL16);
+SEGPTR      WINAPI HasGPHandler16(SEGPTR);
+BOOL16      WINAPI IsSharedSelector16(HANDLE16);
+BOOL16      WINAPI IsTask16(HTASK16);
+HTASK16     WINAPI IsTaskLocked16(void);
+VOID        WINAPI LogError16(UINT16, LPVOID);
+VOID        WINAPI LogParamError16(UINT16,FARPROC16,LPVOID);
+WORD        WINAPI LocalCountFree16(void);
+WORD        WINAPI LocalHandleDelta16(WORD);
+WORD        WINAPI LocalHeapSize16(void);
+BOOL16      WINAPI LocalInit16(HANDLE16,WORD,WORD);
+FARPROC16   WINAPI LocalNotify16(FARPROC16);
+HTASK16     WINAPI LockCurrentTask16(BOOL16);
+VOID        WINAPI OldYield16(void);
+VOID        WINAPI WIN32_OldYield16(void);
+VOID        WINAPI PostEvent16(HTASK16);
+WORD        WINAPI PrestoChangoSelector16(WORD,WORD);
+WORD        WINAPI SelectorAccessRights16(WORD,WORD,WORD);
+void        WINAPI SetFastQueue16(DWORD,HQUEUE16);
+VOID        WINAPI SetPriority16(HTASK16,INT16);
+FARPROC16   WINAPI SetResourceHandler16(HINSTANCE16,LPCSTR,FARPROC16);
+WORD        WINAPI SetSelectorLimit16(WORD,DWORD);
+HQUEUE16    WINAPI SetTaskQueue16(HTASK16,HQUEUE16);
+HQUEUE16    WINAPI SetThreadQueue16(DWORD,HQUEUE16);
+VOID        WINAPI SwitchStackTo16(WORD,WORD,WORD);
+BOOL16      WINAPI WaitEvent16(HTASK16);
+VOID        WINAPI WriteOutProfiles16(void);
+VOID        WINAPI hmemcpy16(LPVOID,LPCVOID,LONG);
+VOID        WINAPI _CreateSysLevel(SYSLEVEL*,INT);
+VOID        WINAPI _EnterWin16Lock(void);
+VOID        WINAPI _LeaveWin16Lock(void);
+
+
+INT16       WINAPI AccessResource16(HINSTANCE16,HRSRC16);
+ATOM        WINAPI AddAtom16(LPCSTR);
+UINT16      WINAPI CompareString16(DWORD,DWORD,LPCSTR,DWORD,LPCSTR,DWORD);
+BOOL16      WINAPI CreateDirectory16(LPCSTR,LPVOID);
+BOOL16      WINAPI DefineHandleTable16(WORD);
+ATOM        WINAPI DeleteAtom16(ATOM);
+BOOL16      WINAPI DeleteFile16(LPCSTR);
+void        WINAPI ExitKernel16(void);
+void        WINAPI FatalAppExit16(UINT16,LPCSTR);
+ATOM        WINAPI FindAtom16(LPCSTR);
+BOOL16      WINAPI FindClose16(HANDLE16);
+VOID        WINAPI FreeLibrary16(HINSTANCE16);
+HANDLE16    WINAPI FindFirstFile16(LPCSTR,LPWIN32_FIND_DATAA);
+BOOL16      WINAPI FindNextFile16(HANDLE16,LPWIN32_FIND_DATAA);
+HRSRC16     WINAPI FindResource16(HINSTANCE16,LPCSTR,LPCSTR);
+BOOL16      WINAPI FreeModule16(HMODULE16);
+void        WINAPI FreeProcInstance16(FARPROC16);
+BOOL16      WINAPI FreeResource16(HGLOBAL16);
+UINT16      WINAPI GetAtomName16(ATOM,LPSTR,INT16);
+UINT16      WINAPI GetCurrentDirectory16(UINT16,LPSTR);
+BOOL16      WINAPI GetDiskFreeSpace16(LPCSTR,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
+UINT16      WINAPI GetDriveType16(UINT16); /* yes, the arguments differ */
+INT16       WINAPI GetLocaleInfo16(LCID,LCTYPE,LPSTR,INT16);
+DWORD       WINAPI GetFileAttributes16(LPCSTR);
+DWORD       WINAPI GetFreeSpace16(UINT16);
+INT16       WINAPI GetModuleFileName16(HINSTANCE16,LPSTR,INT16);
+HMODULE16   WINAPI GetModuleHandle16(LPCSTR);
+UINT16      WINAPI GetPrivateProfileInt16(LPCSTR,LPCSTR,INT16,LPCSTR);
+INT16       WINAPI GetPrivateProfileSection16(LPCSTR,LPSTR,UINT16,LPCSTR);
+WORD        WINAPI GetPrivateProfileSectionNames16(LPSTR,UINT16,LPCSTR);
+INT16       WINAPI GetPrivateProfileString16(LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT16,LPCSTR);
+BOOL16      WINAPI GetPrivateProfileStruct16(LPCSTR,LPCSTR,LPVOID,UINT16,LPCSTR);
+FARPROC16   WINAPI GetProcAddress16(HMODULE16,LPCSTR);
+UINT16      WINAPI GetProfileInt16(LPCSTR,LPCSTR,INT16);
+INT16       WINAPI GetProfileSection16(LPCSTR,LPSTR,UINT16);
+WORD        WINAPI GetProfileSectionNames16(LPSTR,WORD);
+INT16       WINAPI GetProfileString16(LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT16);
+DWORD       WINAPI GetSelectorBase(WORD);
+BOOL16      WINAPI GetStringType16(LCID,DWORD,LPCSTR,INT16,LPWORD);
+UINT16      WINAPI GetSystemDirectory16(LPSTR,UINT16);
+UINT16      WINAPI GetTempFileName16(BYTE,LPCSTR,UINT16,LPSTR);
+DWORD       WINAPI GetVersion16(void);
+BOOL16      WINAPI GetVersionEx16(OSVERSIONINFO16*);
+BOOL16      WINAPI GetWinDebugInfo16(LPWINDEBUGINFO16,UINT16);
+UINT16      WINAPI GetWindowsDirectory16(LPSTR,UINT16);
+HGLOBAL16   WINAPI GlobalAlloc16(UINT16,DWORD);
+DWORD       WINAPI GlobalCompact16(DWORD);
+LPVOID      WINAPI GlobalLock16(HGLOBAL16);
+WORD        WINAPI GlobalFix16(HGLOBAL16);
+UINT16      WINAPI GlobalFlags16(HGLOBAL16);
+HGLOBAL16   WINAPI GlobalFree16(HGLOBAL16);
+DWORD       WINAPI GlobalHandle16(WORD);
+HGLOBAL16   WINAPI GlobalReAlloc16(HGLOBAL16,DWORD,UINT16);
+DWORD       WINAPI GlobalSize16(HGLOBAL16);
+VOID        WINAPI GlobalUnfix16(HGLOBAL16);
+BOOL16      WINAPI GlobalUnlock16(HGLOBAL16);
+BOOL16      WINAPI GlobalUnWire16(HGLOBAL16);
+SEGPTR      WINAPI GlobalWire16(HGLOBAL16);
+WORD        WINAPI InitAtomTable16(WORD);
+void        WINAPI InitTask16(CONTEXT86*);
+BOOL16      WINAPI IsBadCodePtr16(SEGPTR);
+BOOL16      WINAPI IsBadHugeReadPtr16(SEGPTR,DWORD);
+BOOL16      WINAPI IsBadHugeWritePtr16(SEGPTR,DWORD);
+BOOL16      WINAPI IsBadReadPtr16(SEGPTR,UINT16);
+BOOL16      WINAPI IsBadStringPtr16(SEGPTR,UINT16);
+BOOL16      WINAPI IsBadWritePtr16(SEGPTR,UINT16);
+BOOL16      WINAPI IsDBCSLeadByte16(BYTE);
+HINSTANCE16 WINAPI LoadLibrary16(LPCSTR);
+HINSTANCE16 WINAPI LoadModule16(LPCSTR,LPVOID);
+HGLOBAL16   WINAPI LoadResource16(HINSTANCE16,HRSRC16);
+HLOCAL16    WINAPI LocalAlloc16(UINT16,WORD);
+UINT16      WINAPI LocalCompact16(UINT16);
+UINT16      WINAPI LocalFlags16(HLOCAL16);
+HLOCAL16    WINAPI LocalFree16(HLOCAL16);
+HLOCAL16    WINAPI LocalHandle16(WORD);
+SEGPTR      WINAPI LocalLock16(HLOCAL16);
+HLOCAL16    WINAPI LocalReAlloc16(HLOCAL16,WORD,UINT16);
+UINT16      WINAPI LocalShrink16(HGLOBAL16,UINT16);
+UINT16      WINAPI LocalSize16(HLOCAL16);
+BOOL16      WINAPI LocalUnlock16(HLOCAL16);
+LPVOID      WINAPI LockResource16(HGLOBAL16);
+HGLOBAL16   WINAPI LockSegment16(HGLOBAL16);
+FARPROC16   WINAPI MakeProcInstance16(FARPROC16,HANDLE16);
+HFILE16     WINAPI OpenFile16(LPCSTR,OFSTRUCT*,UINT16);
+DWORD       WINAPI RegCloseKey16(HKEY);
+DWORD       WINAPI RegCreateKey16(HKEY,LPCSTR,PHKEY);
+DWORD       WINAPI RegDeleteKey16(HKEY,LPCSTR);
+DWORD       WINAPI RegDeleteValue16(HKEY,LPSTR);
+DWORD       WINAPI RegEnumKey16(HKEY,DWORD,LPSTR,DWORD);
+DWORD       WINAPI RegEnumValue16(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
+DWORD       WINAPI RegOpenKey16(HKEY,LPCSTR,PHKEY);
+DWORD       WINAPI RegQueryValue16(HKEY,LPCSTR,LPSTR,LPDWORD);
+DWORD       WINAPI RegQueryValueEx16(HKEY,LPCSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
+DWORD       WINAPI RegSetValue16(HKEY,LPCSTR,DWORD,LPCSTR,DWORD);
+DWORD       WINAPI RegSetValueEx16(HKEY,LPCSTR,DWORD,DWORD,CONST BYTE*,DWORD);
+BOOL16      WINAPI RemoveDirectory16(LPCSTR);
+BOOL16      WINAPI SetCurrentDirectory16(LPCSTR);
+UINT16      WINAPI SetErrorMode16(UINT16);
+BOOL16      WINAPI SetFileAttributes16(LPCSTR,DWORD);
+UINT16      WINAPI SetHandleCount16(UINT16);
+WORD        WINAPI SetSelectorBase(WORD,DWORD);
+LONG        WINAPI SetSwapAreaSize16(WORD);
+BOOL16      WINAPI SetWinDebugInfo16(LPWINDEBUGINFO16);
+DWORD       WINAPI SizeofResource16(HMODULE16,HRSRC16);
+void        WINAPI UnlockSegment16(HGLOBAL16);
+BOOL16      WINAPI WritePrivateProfileString16(LPCSTR,LPCSTR,LPCSTR,LPCSTR);
+BOOL16      WINAPI WriteProfileString16(LPCSTR,LPCSTR,LPCSTR);
+/* Yield16 will only be available from kernel module, use WOWYield instead */
+VOID        WINAPI Yield16(void);
+SEGPTR      WINAPI lstrcat16(SEGPTR,LPCSTR);
+SEGPTR      WINAPI lstrcatn16(SEGPTR,LPCSTR,INT16);
+SEGPTR      WINAPI lstrcpy16(SEGPTR,LPCSTR);
+SEGPTR      WINAPI lstrcpyn16(SEGPTR,LPCSTR,INT16);
+INT16       WINAPI lstrlen16(LPCSTR);
+HINSTANCE16 WINAPI WinExec16(LPCSTR,UINT16);
+LONG        WINAPI _hread16(HFILE16,LPVOID,LONG);
+LONG        WINAPI _hwrite16(HFILE16,LPCSTR,LONG);
+HFILE16     WINAPI _lcreat16(LPCSTR,INT16);
+HFILE16     WINAPI _lclose16(HFILE16);
+LONG        WINAPI _llseek16(HFILE16,LONG,INT16);
+HFILE16     WINAPI _lopen16(LPCSTR,INT16);
+UINT16      WINAPI _lread16(HFILE16,LPVOID,UINT16);
+UINT16      WINAPI _lwrite16(HFILE16,LPCSTR,UINT16);
+BOOL16      WINAPI WritePrivateProfileSection16(LPCSTR,LPCSTR,LPCSTR);
+BOOL16      WINAPI WritePrivateProfileStruct16(LPCSTR,LPCSTR,LPVOID,UINT16,LPCSTR);
+BOOL16      WINAPI WriteProfileSection16(LPCSTR,LPCSTR);
+
+/* Some optimizations */
+extern inline LPVOID WINAPI MapSL( SEGPTR segptr )
+{
+    return (char *)wine_ldt_copy.base[SELECTOROF(segptr) >> __AHSHIFT] + OFFSETOF(segptr);
+}
+
+#endif /* __WINE_WINE_WINBASE16_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/windef16.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/windef16.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/windef16.h	(revision 16410)
@@ -0,0 +1,163 @@
+/*
+ * Basic type definitions for 16 bit variations on Windows types.
+ * These types are provided mostly to insure compatibility with
+ * 16 bit windows code.
+ *
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINDEF16_H
+#define __WINE_WINDEF16_H
+
+#ifndef RC_INVOKED
+#include <stdarg.h>
+#endif
+#include <windef.h>
+#include <winbase.h>
+
+/* Standard data types */
+
+typedef unsigned short  BOOL16;
+typedef DWORD           SEGPTR;
+
+typedef UINT16          HANDLE16;
+typedef HANDLE16       *LPHANDLE16;
+
+typedef UINT16          WPARAM16;
+typedef INT16          *LPINT16;
+typedef UINT16         *LPUINT16;
+
+typedef WORD            CATCHBUF[9];
+typedef WORD           *LPCATCHBUF;
+
+#define MAKESEGPTR(seg,off) ((SEGPTR)MAKELONG(off,seg))
+#define SELECTOROF(ptr)     (HIWORD(ptr))
+#define OFFSETOF(ptr)       (LOWORD(ptr))
+
+typedef WORD *VA_LIST16;
+
+#define __VA_ROUNDED16(type) \
+    ((sizeof(type) + sizeof(WORD) - 1) / sizeof(WORD) * sizeof(WORD))
+#define VA_ARG16(list,type) \
+    (((list) = (VA_LIST16)((char *)(list) + __VA_ROUNDED16(type))), \
+     *((type *)(void *)((char *)(list) - __VA_ROUNDED16(type))))
+
+#define HFILE_ERROR16   ((HFILE16)-1)
+
+#define DECLARE_HANDLE16(a) \
+	typedef HANDLE16 a##16; \
+	typedef a##16 *P##a##16; \
+	typedef a##16 *NP##a##16; \
+	typedef a##16 *LP##a##16
+
+DECLARE_HANDLE16(HACMDRIVERID);
+DECLARE_HANDLE16(HACMDRIVER);
+DECLARE_HANDLE16(HACMOBJ);
+DECLARE_HANDLE16(HACMSTREAM);
+DECLARE_HANDLE16(HMETAFILEPICT);
+
+DECLARE_HANDLE16(HACCEL);
+DECLARE_HANDLE16(HBITMAP);
+DECLARE_HANDLE16(HBRUSH);
+DECLARE_HANDLE16(HCOLORSPACE);
+DECLARE_HANDLE16(HCURSOR);
+DECLARE_HANDLE16(HDC);
+DECLARE_HANDLE16(HDROP);
+DECLARE_HANDLE16(HDRVR);
+DECLARE_HANDLE16(HDWP);
+DECLARE_HANDLE16(HENHMETAFILE);
+DECLARE_HANDLE16(HFILE);
+DECLARE_HANDLE16(HFONT);
+DECLARE_HANDLE16(HICON);
+DECLARE_HANDLE16(HINSTANCE);
+DECLARE_HANDLE16(HKEY);
+DECLARE_HANDLE16(HMENU);
+DECLARE_HANDLE16(HMETAFILE);
+DECLARE_HANDLE16(HMIDI);
+DECLARE_HANDLE16(HMIDIIN);
+DECLARE_HANDLE16(HMIDIOUT);
+DECLARE_HANDLE16(HMIDISTRM);
+DECLARE_HANDLE16(HMIXER);
+DECLARE_HANDLE16(HMIXEROBJ);
+DECLARE_HANDLE16(HMMIO);
+DECLARE_HANDLE16(HPALETTE);
+DECLARE_HANDLE16(HPEN);
+DECLARE_HANDLE16(HQUEUE);
+DECLARE_HANDLE16(HRGN);
+DECLARE_HANDLE16(HRSRC);
+DECLARE_HANDLE16(HTASK);
+DECLARE_HANDLE16(HWAVE);
+DECLARE_HANDLE16(HWAVEIN);
+DECLARE_HANDLE16(HWAVEOUT);
+DECLARE_HANDLE16(HWINSTA);
+DECLARE_HANDLE16(HDESK);
+DECLARE_HANDLE16(HWND);
+DECLARE_HANDLE16(HKL);
+DECLARE_HANDLE16(HIC);
+DECLARE_HANDLE16(HRASCONN);
+#undef DECLARE_HANDLE16
+
+typedef HINSTANCE16 HMODULE16;
+typedef HANDLE16 HGDIOBJ16;
+typedef HANDLE16 HGLOBAL16;
+typedef HANDLE16 HLOCAL16;
+
+#include <pshpack1.h>
+
+/* The SIZE structure */
+
+typedef struct
+{
+    INT16  cx;
+    INT16  cy;
+} SIZE16, *PSIZE16, *LPSIZE16;
+
+/* The POINT structure */
+
+typedef struct
+{
+    INT16  x;
+    INT16  y;
+} POINT16, *PPOINT16, *LPPOINT16;
+
+/* The RECT structure */
+
+typedef struct
+{
+    INT16  left;
+    INT16  top;
+    INT16  right;
+    INT16  bottom;
+} RECT16, *LPRECT16;
+
+#include <poppack.h>
+
+/* Callback function pointers types */
+
+typedef LRESULT (CALLBACK *DRIVERPROC16)(DWORD,HDRVR16,UINT16,LPARAM,LPARAM);
+typedef BOOL16  (CALLBACK *DLGPROC16)(HWND16,UINT16,WPARAM16,LPARAM);
+typedef INT16   (CALLBACK *EDITWORDBREAKPROC16)(LPSTR,INT16,INT16,INT16);
+typedef LRESULT (CALLBACK *FARPROC16)();
+typedef INT16   (CALLBACK *PROC16)();
+typedef BOOL16  (CALLBACK *GRAYSTRINGPROC16)(HDC16,LPARAM,INT16);
+typedef LRESULT (CALLBACK *HOOKPROC16)(INT16,WPARAM16,LPARAM);
+typedef BOOL16  (CALLBACK *PROPENUMPROC16)(HWND16,SEGPTR,HANDLE16);
+typedef VOID    (CALLBACK *TIMERPROC16)(HWND16,UINT16,UINT16,DWORD);
+typedef LRESULT (CALLBACK *WNDENUMPROC16)(HWND16,LPARAM);
+typedef LRESULT (CALLBACK *WNDPROC16)(HWND16,UINT16,WPARAM16,LPARAM);
+
+#endif /* __WINE_WINDEF16_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/wine_common_ver.rc
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/wine_common_ver.rc	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/wine_common_ver.rc	(revision 16410)
@@ -0,0 +1,120 @@
+/*
+ * Copyright 2001 Dmitry Timoshkov
+ * Copyright 2004 Ivan Leo Puoti
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "windef.h"
+#include "winbase.h"
+#include "winver.h"
+
+/*
+Assign WINE_FILEVERSION and WINE_FILEVERSION_STR high enough number
+to make sure that programs, relying on the version numbers, will
+never complain.
+*/
+
+#ifndef WINE_FILEVERSION_MAJOR
+#define WINE_FILEVERSION_MAJOR 10
+#endif
+
+#ifndef WINE_FILEVERSION_MINOR
+#define WINE_FILEVERSION_MINOR 0
+#endif
+
+#ifndef WINE_FILEVERSION_BUILD
+#define WINE_FILEVERSION_BUILD 0
+#endif
+
+#ifndef WINE_FILEVERSION_PLATFORMID
+#define WINE_FILEVERSION_PLATFORMID 0
+#endif
+
+#ifndef WINE_FILEVERSION
+#define WINE_FILEVERSION WINE_FILEVERSION_MAJOR,WINE_FILEVERSION_MINOR,\
+                         WINE_FILEVERSION_BUILD,WINE_FILEVERSION_PLATFORMID
+#endif
+
+#define WINE_VER_STRINGIZE2(x) #x
+#define WINE_VER_STRINGIZE(x) WINE_VER_STRINGIZE2(x)
+
+#ifndef WINE_FILEVERSION_STR
+#define WINE_FILEVERSION_STR WINE_VER_STRINGIZE(WINE_FILEVERSION_MAJOR.WINE_FILEVERSION_MINOR.WINE_FILEVERSION_BUILD.WINE_FILEVERSION_PLATFORMID)
+#endif
+
+#ifndef WINE_FILEDESCRIPTION_STR
+#define WINE_FILEDESCRIPTION_STR "Wine core dll"
+#endif
+
+#ifndef WINE_FILENAME
+#define WINE_FILENAME ""
+#endif
+
+#ifndef WINE_FILENAME_STR
+#define WINE_FILENAME_STR ""
+#endif
+
+#ifndef WINE_FILETYPE
+#define WINE_FILETYPE VFT_DLL
+#endif
+
+#ifndef WINE_FILESUBTYPE
+#define WINE_FILESUBTYPE VFT2_UNKNOWN
+#endif
+
+#ifndef WINE_PRODUCTVERSION
+#define WINE_PRODUCTVERSION 1,0,0,0
+#endif
+
+#ifndef WINE_PRODUCTVERSION_STR
+#define WINE_PRODUCTVERSION_STR "1.0"
+#endif
+
+#ifndef WINE_PRODUCTNAME_STR
+#define WINE_PRODUCTNAME_STR "Wine"
+#endif
+
+VS_VERSION_INFO VERSIONINFO
+FILEVERSION    WINE_FILEVERSION
+PRODUCTVERSION WINE_PRODUCTVERSION
+FILEFLAGSMASK  63
+FILEFLAGS      0
+FILEOS         VOS_UNKNOWN
+FILETYPE       WINE_FILETYPE
+FILESUBTYPE    WINE_FILESUBTYPE
+{
+    BLOCK "StringFileInfo"
+    {
+	BLOCK "040904E4" /* LANG_ENGLISH/SUBLANG_DEFAULT, CP 1252 */
+	{
+	    VALUE "CompanyName", "Microsoft Corporation"  /* GameGuard depends on this */
+	    VALUE "FileDescription", WINE_FILEDESCRIPTION_STR
+	    VALUE "FileVersion", WINE_FILEVERSION_STR
+	    VALUE "InternalName", WINE_FILENAME
+	    VALUE "LegalCopyright", "Copyright (c) 1993-2008 the Wine project authors (see the file AUTHORS for a complete list)"
+	    VALUE "OriginalFilename", WINE_FILENAME_STR
+	    VALUE "ProductName", WINE_PRODUCTNAME_STR
+	    VALUE "ProductVersion", WINE_PRODUCTVERSION_STR
+#ifdef WINE_OLESELFREGISTER
+	    VALUE "OLESelfRegister", ""
+#endif
+	}
+    }
+    BLOCK "VarFileInfo"
+    {
+	VALUE "Translation", 0x0409, 0x04E4 /* LANG_ENGLISH/SUBLANG_DEFAULT, CP 1252 */
+    }
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/wined3d.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/wined3d.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/wined3d.h	(revision 16410)
@@ -0,0 +1,9526 @@
+/*** Autogenerated by WIDL 1.1.10 from ../../../dlls/wined3d/../../include/wine/wined3d.idl - Do not edit ***/
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef __WIDL_WINED3D_H
+#define __WIDL_WINED3D_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <unknwn.h>
+#if 0
+typedef HANDLE HMONITOR;
+typedef struct _RGNDATAHEADER {
+    DWORD dwSize;
+    DWORD iType;
+    DWORD nCount;
+    DWORD nRgnSize;
+    RECT rcBound;
+} RGNDATAHEADER;
+typedef struct _RGNDATA {
+    RGNDATAHEADER rdh;
+    char Buffer[1];
+} RGNDATA;
+#endif
+#define WINED3D_OK                                  S_OK
+#define _FACWINED3D (0x876)
+
+#define MAKE_WINED3DSTATUS(code)                    MAKE_HRESULT(0, _FACWINED3D, code)
+#define WINED3DOK_NOAUTOGEN                         MAKE_WINED3DSTATUS(2159)
+#define MAKE_WINED3DHRESULT(code)                   MAKE_HRESULT(1, _FACWINED3D, code)
+#define WINED3DERR_WRONGTEXTUREFORMAT               MAKE_WINED3DHRESULT(2072)
+#define WINED3DERR_UNSUPPORTEDCOLOROPERATION        MAKE_WINED3DHRESULT(2073)
+#define WINED3DERR_UNSUPPORTEDCOLORARG              MAKE_WINED3DHRESULT(2074)
+#define WINED3DERR_UNSUPPORTEDALPHAOPERATION        MAKE_WINED3DHRESULT(2075)
+#define WINED3DERR_UNSUPPORTEDALPHAARG              MAKE_WINED3DHRESULT(2076)
+#define WINED3DERR_TOOMANYOPERATIONS                MAKE_WINED3DHRESULT(2077)
+#define WINED3DERR_CONFLICTINGTEXTUREFILTER         MAKE_WINED3DHRESULT(2078)
+#define WINED3DERR_UNSUPPORTEDFACTORVALUE           MAKE_WINED3DHRESULT(2079)
+#define WINED3DERR_CONFLICTINGRENDERSTATE           MAKE_WINED3DHRESULT(2081)
+#define WINED3DERR_UNSUPPORTEDTEXTUREFILTER         MAKE_WINED3DHRESULT(2082)
+#define WINED3DERR_CONFLICTINGTEXTUREPALETTE        MAKE_WINED3DHRESULT(2086)
+#define WINED3DERR_DRIVERINTERNALERROR              MAKE_WINED3DHRESULT(2087)
+#define WINED3DERR_NOTFOUND                         MAKE_WINED3DHRESULT(2150)
+#define WINED3DERR_MOREDATA                         MAKE_WINED3DHRESULT(2151)
+#define WINED3DERR_DEVICELOST                       MAKE_WINED3DHRESULT(2152)
+#define WINED3DERR_DEVICENOTRESET                   MAKE_WINED3DHRESULT(2153)
+#define WINED3DERR_NOTAVAILABLE                     MAKE_WINED3DHRESULT(2154)
+#define WINED3DERR_OUTOFVIDEOMEMORY                 MAKE_WINED3DHRESULT(380)
+#define WINED3DERR_INVALIDDEVICE                    MAKE_WINED3DHRESULT(2155)
+#define WINED3DERR_INVALIDCALL                      MAKE_WINED3DHRESULT(2156)
+#define WINED3DERR_DRIVERINVALIDCALL                MAKE_WINED3DHRESULT(2157)
+#define WINED3DERR_WASSTILLDRAWING                  MAKE_WINED3DHRESULT(540)
+#define WINEDDERR_NOTAOVERLAYSURFACE                MAKE_WINED3DHRESULT(580)
+#define WINEDDERR_NODC                              MAKE_WINED3DHRESULT(586)
+#define WINEDDERR_DCALREADYCREATED                  MAKE_WINED3DHRESULT(620)
+#define WINEDDERR_NOTFLIPPABLE                      MAKE_WINED3DHRESULT(582)
+#define WINEDDERR_SURFACEBUSY                       MAKE_WINED3DHRESULT(430)
+#define WINEDDERR_INVALIDRECT                       MAKE_WINED3DHRESULT(150)
+#define WINEDDERR_NOCLIPLIST                        MAKE_WINED3DHRESULT(205)
+#define WINEDDERR_OVERLAYNOTVISIBLE                 MAKE_WINED3DHRESULT(577)
+typedef DWORD WINED3DCOLOR;
+typedef enum _WINED3DLIGHTTYPE {
+    WINED3DLIGHT_POINT = 1,
+    WINED3DLIGHT_SPOT = 2,
+    WINED3DLIGHT_DIRECTIONAL = 3,
+    WINED3DLIGHT_PARALLELPOINT = 4,
+    WINED3DLIGHT_GLSPOT = 5,
+    WINED3DLIGHT_FORCE_DWORD = 0x7fffffff
+} WINED3DLIGHTTYPE;
+typedef enum _WINED3DPRIMITIVETYPE {
+    WINED3DPT_POINTLIST = 1,
+    WINED3DPT_LINELIST = 2,
+    WINED3DPT_LINESTRIP = 3,
+    WINED3DPT_TRIANGLELIST = 4,
+    WINED3DPT_TRIANGLESTRIP = 5,
+    WINED3DPT_TRIANGLEFAN = 6,
+    WINED3DPT_FORCE_DWORD = 0x7fffffff
+} WINED3DPRIMITIVETYPE;
+typedef enum _WINED3DDEVTYPE {
+    WINED3DDEVTYPE_HAL = 1,
+    WINED3DDEVTYPE_REF = 2,
+    WINED3DDEVTYPE_SW = 3,
+    WINED3DDEVTYPE_NULLREF = 4,
+    WINED3DDEVTYPE_FORCE_DWORD = 0xffffffff
+} WINED3DDEVTYPE;
+typedef enum _WINED3DDEGREETYPE {
+    WINED3DDEGREE_LINEAR = 1,
+    WINED3DDEGREE_QUADRATIC = 2,
+    WINED3DDEGREE_CUBIC = 3,
+    WINED3DDEGREE_QUINTIC = 5,
+    WINED3DDEGREE_FORCE_DWORD = 0x7fffffff
+} WINED3DDEGREETYPE;
+typedef enum _WINED3DFORMAT {
+    WINED3DFMT_UNKNOWN = 0,
+    WINED3DFMT_R8G8B8 = 20,
+    WINED3DFMT_A8R8G8B8 = 21,
+    WINED3DFMT_X8R8G8B8 = 22,
+    WINED3DFMT_R5G6B5 = 23,
+    WINED3DFMT_X1R5G5B5 = 24,
+    WINED3DFMT_A1R5G5B5 = 25,
+    WINED3DFMT_A4R4G4B4 = 26,
+    WINED3DFMT_R3G3B2 = 27,
+    WINED3DFMT_A8 = 28,
+    WINED3DFMT_A8R3G3B2 = 29,
+    WINED3DFMT_X4R4G4B4 = 30,
+    WINED3DFMT_A2B10G10R10 = 31,
+    WINED3DFMT_A8B8G8R8 = 32,
+    WINED3DFMT_X8B8G8R8 = 33,
+    WINED3DFMT_G16R16 = 34,
+    WINED3DFMT_A2R10G10B10 = 35,
+    WINED3DFMT_A16B16G16R16 = 36,
+    WINED3DFMT_A8P8 = 40,
+    WINED3DFMT_P8 = 41,
+    WINED3DFMT_L8 = 50,
+    WINED3DFMT_A8L8 = 51,
+    WINED3DFMT_A4L4 = 52,
+    WINED3DFMT_V8U8 = 60,
+    WINED3DFMT_L6V5U5 = 61,
+    WINED3DFMT_X8L8V8U8 = 62,
+    WINED3DFMT_Q8W8V8U8 = 63,
+    WINED3DFMT_V16U16 = 64,
+    WINED3DFMT_W11V11U10 = 65,
+    WINED3DFMT_A2W10V10U10 = 67,
+    WINED3DFMT_D16_LOCKABLE = 70,
+    WINED3DFMT_D32 = 71,
+    WINED3DFMT_D15S1 = 73,
+    WINED3DFMT_D24S8 = 75,
+    WINED3DFMT_D24X8 = 77,
+    WINED3DFMT_D24X4S4 = 79,
+    WINED3DFMT_D16 = 80,
+    WINED3DFMT_L16 = 81,
+    WINED3DFMT_D32F_LOCKABLE = 82,
+    WINED3DFMT_D24FS8 = 83,
+    WINED3DFMT_VERTEXDATA = 100,
+    WINED3DFMT_INDEX16 = 101,
+    WINED3DFMT_INDEX32 = 102,
+    WINED3DFMT_Q16W16V16U16 = 110,
+    WINED3DFMT_R16F = 111,
+    WINED3DFMT_G16R16F = 112,
+    WINED3DFMT_A16B16G16R16F = 113,
+    WINED3DFMT_R32F = 114,
+    WINED3DFMT_G32R32F = 115,
+    WINED3DFMT_A32B32G32R32F = 116,
+    WINED3DFMT_CxV8U8 = 117,
+    WINED3DFMT_FORCE_DWORD = 0xffffffff
+} WINED3DFORMAT;
+#define WINEMAKEFOURCC(ch0, ch1, ch2, ch3) \
+        ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \
+        ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
+#define WINED3DFMT_UYVY         WINEMAKEFOURCC('U', 'Y', 'V', 'Y')
+#define WINED3DFMT_YUY2         WINEMAKEFOURCC('Y', 'U', 'Y', '2')
+#define WINED3DFMT_YV12         WINEMAKEFOURCC('Y', 'V', '1', '2')
+#define WINED3DFMT_DXT1         WINEMAKEFOURCC('D', 'X', 'T', '1')
+#define WINED3DFMT_DXT2         WINEMAKEFOURCC('D', 'X', 'T', '2')
+#define WINED3DFMT_DXT3         WINEMAKEFOURCC('D', 'X', 'T', '3')
+#define WINED3DFMT_DXT4         WINEMAKEFOURCC('D', 'X', 'T', '4')
+#define WINED3DFMT_DXT5         WINEMAKEFOURCC('D', 'X', 'T', '5')
+#define WINED3DFMT_MULTI2_ARGB8 WINEMAKEFOURCC('M', 'E', 'T', '1')
+#define WINED3DFMT_G8R8_G8B8    WINEMAKEFOURCC('G', 'R', 'G', 'B')
+#define WINED3DFMT_R8G8_B8G8    WINEMAKEFOURCC('R', 'G', 'B', 'G')
+#define WINED3DFMT_ATI2N        WINEMAKEFOURCC('A', 'T', 'I', '2')
+#define WINED3DFMT_NVHU         WINEMAKEFOURCC('N', 'V', 'H', 'U')
+#define WINED3DFMT_NVHS         WINEMAKEFOURCC('N', 'V', 'H', 'S')
+typedef enum _WINED3DRENDERSTATETYPE {
+    WINED3DRS_TEXTUREHANDLE = 1,
+    WINED3DRS_ANTIALIAS = 2,
+    WINED3DRS_TEXTUREADDRESS = 3,
+    WINED3DRS_TEXTUREPERSPECTIVE = 4,
+    WINED3DRS_WRAPU = 5,
+    WINED3DRS_WRAPV = 6,
+    WINED3DRS_ZENABLE = 7,
+    WINED3DRS_FILLMODE = 8,
+    WINED3DRS_SHADEMODE = 9,
+    WINED3DRS_LINEPATTERN = 10,
+    WINED3DRS_MONOENABLE = 11,
+    WINED3DRS_ROP2 = 12,
+    WINED3DRS_PLANEMASK = 13,
+    WINED3DRS_ZWRITEENABLE = 14,
+    WINED3DRS_ALPHATESTENABLE = 15,
+    WINED3DRS_LASTPIXEL = 16,
+    WINED3DRS_TEXTUREMAG = 17,
+    WINED3DRS_TEXTUREMIN = 18,
+    WINED3DRS_SRCBLEND = 19,
+    WINED3DRS_DESTBLEND = 20,
+    WINED3DRS_TEXTUREMAPBLEND = 21,
+    WINED3DRS_CULLMODE = 22,
+    WINED3DRS_ZFUNC = 23,
+    WINED3DRS_ALPHAREF = 24,
+    WINED3DRS_ALPHAFUNC = 25,
+    WINED3DRS_DITHERENABLE = 26,
+    WINED3DRS_ALPHABLENDENABLE = 27,
+    WINED3DRS_FOGENABLE = 28,
+    WINED3DRS_SPECULARENABLE = 29,
+    WINED3DRS_ZVISIBLE = 30,
+    WINED3DRS_SUBPIXEL = 31,
+    WINED3DRS_SUBPIXELX = 32,
+    WINED3DRS_STIPPLEDALPHA = 33,
+    WINED3DRS_FOGCOLOR = 34,
+    WINED3DRS_FOGTABLEMODE = 35,
+    WINED3DRS_FOGSTART = 36,
+    WINED3DRS_FOGEND = 37,
+    WINED3DRS_FOGDENSITY = 38,
+    WINED3DRS_STIPPLEENABLE = 39,
+    WINED3DRS_EDGEANTIALIAS = 40,
+    WINED3DRS_COLORKEYENABLE = 41,
+    WINED3DRS_BORDERCOLOR = 43,
+    WINED3DRS_TEXTUREADDRESSU = 44,
+    WINED3DRS_TEXTUREADDRESSV = 45,
+    WINED3DRS_MIPMAPLODBIAS = 46,
+    WINED3DRS_ZBIAS = 47,
+    WINED3DRS_RANGEFOGENABLE = 48,
+    WINED3DRS_ANISOTROPY = 49,
+    WINED3DRS_FLUSHBATCH = 50,
+    WINED3DRS_TRANSLUCENTSORTINDEPENDENT = 51,
+    WINED3DRS_STENCILENABLE = 52,
+    WINED3DRS_STENCILFAIL = 53,
+    WINED3DRS_STENCILZFAIL = 54,
+    WINED3DRS_STENCILPASS = 55,
+    WINED3DRS_STENCILFUNC = 56,
+    WINED3DRS_STENCILREF = 57,
+    WINED3DRS_STENCILMASK = 58,
+    WINED3DRS_STENCILWRITEMASK = 59,
+    WINED3DRS_TEXTUREFACTOR = 60,
+    WINED3DRS_STIPPLEPATTERN00 = 64,
+    WINED3DRS_STIPPLEPATTERN01 = 65,
+    WINED3DRS_STIPPLEPATTERN02 = 66,
+    WINED3DRS_STIPPLEPATTERN03 = 67,
+    WINED3DRS_STIPPLEPATTERN04 = 68,
+    WINED3DRS_STIPPLEPATTERN05 = 69,
+    WINED3DRS_STIPPLEPATTERN06 = 70,
+    WINED3DRS_STIPPLEPATTERN07 = 71,
+    WINED3DRS_STIPPLEPATTERN08 = 72,
+    WINED3DRS_STIPPLEPATTERN09 = 73,
+    WINED3DRS_STIPPLEPATTERN10 = 74,
+    WINED3DRS_STIPPLEPATTERN11 = 75,
+    WINED3DRS_STIPPLEPATTERN12 = 76,
+    WINED3DRS_STIPPLEPATTERN13 = 77,
+    WINED3DRS_STIPPLEPATTERN14 = 78,
+    WINED3DRS_STIPPLEPATTERN15 = 79,
+    WINED3DRS_STIPPLEPATTERN16 = 80,
+    WINED3DRS_STIPPLEPATTERN17 = 81,
+    WINED3DRS_STIPPLEPATTERN18 = 82,
+    WINED3DRS_STIPPLEPATTERN19 = 83,
+    WINED3DRS_STIPPLEPATTERN20 = 84,
+    WINED3DRS_STIPPLEPATTERN21 = 85,
+    WINED3DRS_STIPPLEPATTERN22 = 86,
+    WINED3DRS_STIPPLEPATTERN23 = 87,
+    WINED3DRS_STIPPLEPATTERN24 = 88,
+    WINED3DRS_STIPPLEPATTERN25 = 89,
+    WINED3DRS_STIPPLEPATTERN26 = 90,
+    WINED3DRS_STIPPLEPATTERN27 = 91,
+    WINED3DRS_STIPPLEPATTERN28 = 92,
+    WINED3DRS_STIPPLEPATTERN29 = 93,
+    WINED3DRS_STIPPLEPATTERN30 = 94,
+    WINED3DRS_STIPPLEPATTERN31 = 95,
+    WINED3DRS_WRAP0 = 128,
+    WINED3DRS_WRAP1 = 129,
+    WINED3DRS_WRAP2 = 130,
+    WINED3DRS_WRAP3 = 131,
+    WINED3DRS_WRAP4 = 132,
+    WINED3DRS_WRAP5 = 133,
+    WINED3DRS_WRAP6 = 134,
+    WINED3DRS_WRAP7 = 135,
+    WINED3DRS_CLIPPING = 136,
+    WINED3DRS_LIGHTING = 137,
+    WINED3DRS_EXTENTS = 138,
+    WINED3DRS_AMBIENT = 139,
+    WINED3DRS_FOGVERTEXMODE = 140,
+    WINED3DRS_COLORVERTEX = 141,
+    WINED3DRS_LOCALVIEWER = 142,
+    WINED3DRS_NORMALIZENORMALS = 143,
+    WINED3DRS_COLORKEYBLENDENABLE = 144,
+    WINED3DRS_DIFFUSEMATERIALSOURCE = 145,
+    WINED3DRS_SPECULARMATERIALSOURCE = 146,
+    WINED3DRS_AMBIENTMATERIALSOURCE = 147,
+    WINED3DRS_EMISSIVEMATERIALSOURCE = 148,
+    WINED3DRS_VERTEXBLEND = 151,
+    WINED3DRS_CLIPPLANEENABLE = 152,
+    WINED3DRS_SOFTWAREVERTEXPROCESSING = 153,
+    WINED3DRS_POINTSIZE = 154,
+    WINED3DRS_POINTSIZE_MIN = 155,
+    WINED3DRS_POINTSPRITEENABLE = 156,
+    WINED3DRS_POINTSCALEENABLE = 157,
+    WINED3DRS_POINTSCALE_A = 158,
+    WINED3DRS_POINTSCALE_B = 159,
+    WINED3DRS_POINTSCALE_C = 160,
+    WINED3DRS_MULTISAMPLEANTIALIAS = 161,
+    WINED3DRS_MULTISAMPLEMASK = 162,
+    WINED3DRS_PATCHEDGESTYLE = 163,
+    WINED3DRS_PATCHSEGMENTS = 164,
+    WINED3DRS_DEBUGMONITORTOKEN = 165,
+    WINED3DRS_POINTSIZE_MAX = 166,
+    WINED3DRS_INDEXEDVERTEXBLENDENABLE = 167,
+    WINED3DRS_COLORWRITEENABLE = 168,
+    WINED3DRS_TWEENFACTOR = 170,
+    WINED3DRS_BLENDOP = 171,
+    WINED3DRS_POSITIONORDER = 172,
+    WINED3DRS_NORMALORDER = 173,
+    WINED3DRS_POSITIONDEGREE = 172,
+    WINED3DRS_NORMALDEGREE = 173,
+    WINED3DRS_SCISSORTESTENABLE = 174,
+    WINED3DRS_SLOPESCALEDEPTHBIAS = 175,
+    WINED3DRS_ANTIALIASEDLINEENABLE = 176,
+    WINED3DRS_MINTESSELLATIONLEVEL = 178,
+    WINED3DRS_MAXTESSELLATIONLEVEL = 179,
+    WINED3DRS_ADAPTIVETESS_X = 180,
+    WINED3DRS_ADAPTIVETESS_Y = 181,
+    WINED3DRS_ADAPTIVETESS_Z = 182,
+    WINED3DRS_ADAPTIVETESS_W = 183,
+    WINED3DRS_ENABLEADAPTIVETESSELLATION = 184,
+    WINED3DRS_TWOSIDEDSTENCILMODE = 185,
+    WINED3DRS_CCW_STENCILFAIL = 186,
+    WINED3DRS_CCW_STENCILZFAIL = 187,
+    WINED3DRS_CCW_STENCILPASS = 188,
+    WINED3DRS_CCW_STENCILFUNC = 189,
+    WINED3DRS_COLORWRITEENABLE1 = 190,
+    WINED3DRS_COLORWRITEENABLE2 = 191,
+    WINED3DRS_COLORWRITEENABLE3 = 192,
+    WINED3DRS_BLENDFACTOR = 193,
+    WINED3DRS_SRGBWRITEENABLE = 194,
+    WINED3DRS_DEPTHBIAS = 195,
+    WINED3DRS_WRAP8 = 198,
+    WINED3DRS_WRAP9 = 199,
+    WINED3DRS_WRAP10 = 200,
+    WINED3DRS_WRAP11 = 201,
+    WINED3DRS_WRAP12 = 202,
+    WINED3DRS_WRAP13 = 203,
+    WINED3DRS_WRAP14 = 204,
+    WINED3DRS_WRAP15 = 205,
+    WINED3DRS_SEPARATEALPHABLENDENABLE = 206,
+    WINED3DRS_SRCBLENDALPHA = 207,
+    WINED3DRS_DESTBLENDALPHA = 208,
+    WINED3DRS_BLENDOPALPHA = 209,
+    WINED3DRS_FORCE_DWORD = 0x7fffffff
+} WINED3DRENDERSTATETYPE;
+#define WINEHIGHEST_RENDER_STATE (WINED3DRS_BLENDOPALPHA)
+
+typedef enum _WINED3DBLEND {
+    WINED3DBLEND_ZERO = 1,
+    WINED3DBLEND_ONE = 2,
+    WINED3DBLEND_SRCCOLOR = 3,
+    WINED3DBLEND_INVSRCCOLOR = 4,
+    WINED3DBLEND_SRCALPHA = 5,
+    WINED3DBLEND_INVSRCALPHA = 6,
+    WINED3DBLEND_DESTALPHA = 7,
+    WINED3DBLEND_INVDESTALPHA = 8,
+    WINED3DBLEND_DESTCOLOR = 9,
+    WINED3DBLEND_INVDESTCOLOR = 10,
+    WINED3DBLEND_SRCALPHASAT = 11,
+    WINED3DBLEND_BOTHSRCALPHA = 12,
+    WINED3DBLEND_BOTHINVSRCALPHA = 13,
+    WINED3DBLEND_BLENDFACTOR = 14,
+    WINED3DBLEND_INVBLENDFACTOR = 15,
+    WINED3DBLEND_FORCE_DWORD = 0x7fffffff
+} WINED3DBLEND;
+typedef enum _WINED3DBLENDOP {
+    WINED3DBLENDOP_ADD = 1,
+    WINED3DBLENDOP_SUBTRACT = 2,
+    WINED3DBLENDOP_REVSUBTRACT = 3,
+    WINED3DBLENDOP_MIN = 4,
+    WINED3DBLENDOP_MAX = 5,
+    WINED3DBLENDOP_FORCE_DWORD = 0x7fffffff
+} WINED3DBLENDOP;
+typedef enum _WINED3DVERTEXBLENDFLAGS {
+    WINED3DVBF_DISABLE = 0,
+    WINED3DVBF_1WEIGHTS = 1,
+    WINED3DVBF_2WEIGHTS = 2,
+    WINED3DVBF_3WEIGHTS = 3,
+    WINED3DVBF_TWEENING = 255,
+    WINED3DVBF_0WEIGHTS = 256
+} WINED3DVERTEXBLENDFLAGS;
+typedef enum _WINED3DCMPFUNC {
+    WINED3DCMP_NEVER = 1,
+    WINED3DCMP_LESS = 2,
+    WINED3DCMP_EQUAL = 3,
+    WINED3DCMP_LESSEQUAL = 4,
+    WINED3DCMP_GREATER = 5,
+    WINED3DCMP_NOTEQUAL = 6,
+    WINED3DCMP_GREATEREQUAL = 7,
+    WINED3DCMP_ALWAYS = 8,
+    WINED3DCMP_FORCE_DWORD = 0x7fffffff
+} WINED3DCMPFUNC;
+typedef enum _WINED3DZBUFFERTYPE {
+    WINED3DZB_FALSE = 0,
+    WINED3DZB_TRUE = 1,
+    WINED3DZB_USEW = 2,
+    WINED3DZB_FORCE_DWORD = 0x7fffffff
+} WINED3DZBUFFERTYPE;
+typedef enum _WINED3DFOGMODE {
+    WINED3DFOG_NONE = 0,
+    WINED3DFOG_EXP = 1,
+    WINED3DFOG_EXP2 = 2,
+    WINED3DFOG_LINEAR = 3,
+    WINED3DFOG_FORCE_DWORD = 0x7fffffff
+} WINED3DFOGMODE;
+typedef enum _WINED3DSHADEMODE {
+    WINED3DSHADE_FLAT = 1,
+    WINED3DSHADE_GOURAUD = 2,
+    WINED3DSHADE_PHONG = 3,
+    WINED3DSHADE_FORCE_DWORD = 0x7fffffff
+} WINED3DSHADEMODE;
+typedef enum _WINED3DFILLMODE {
+    WINED3DFILL_POINT = 1,
+    WINED3DFILL_WIREFRAME = 2,
+    WINED3DFILL_SOLID = 3,
+    WINED3DFILL_FORCE_DWORD = 0x7fffffff
+} WINED3DFILLMODE;
+typedef enum _WINED3DCULL {
+    WINED3DCULL_NONE = 1,
+    WINED3DCULL_CW = 2,
+    WINED3DCULL_CCW = 3,
+    WINED3DCULL_FORCE_DWORD = 0x7fffffff
+} WINED3DCULL;
+typedef enum _WINED3DSTENCILOP {
+    WINED3DSTENCILOP_KEEP = 1,
+    WINED3DSTENCILOP_ZERO = 2,
+    WINED3DSTENCILOP_REPLACE = 3,
+    WINED3DSTENCILOP_INCRSAT = 4,
+    WINED3DSTENCILOP_DECRSAT = 5,
+    WINED3DSTENCILOP_INVERT = 6,
+    WINED3DSTENCILOP_INCR = 7,
+    WINED3DSTENCILOP_DECR = 8,
+    WINED3DSTENCILOP_FORCE_DWORD = 0x7fffffff
+} WINED3DSTENCILOP;
+typedef enum _WINED3DMATERIALCOLORSOURCE {
+    WINED3DMCS_MATERIAL = 0,
+    WINED3DMCS_COLOR1 = 1,
+    WINED3DMCS_COLOR2 = 2,
+    WINED3DMCS_FORCE_DWORD = 0x7fffffff
+} WINED3DMATERIALCOLORSOURCE;
+typedef enum _WINED3DPATCHEDGESTYLE {
+    WINED3DPATCHEDGE_DISCRETE = 0,
+    WINED3DPATCHEDGE_CONTINUOUS = 1,
+    WINED3DPATCHEDGE_FORCE_DWORD = 0x7fffffff
+} WINED3DPATCHEDGESTYLE;
+typedef enum _WINED3DBACKBUFFER_TYPE {
+    WINED3DBACKBUFFER_TYPE_MONO = 0,
+    WINED3DBACKBUFFER_TYPE_LEFT = 1,
+    WINED3DBACKBUFFER_TYPE_RIGHT = 2,
+    WINED3DBACKBUFFER_TYPE_FORCE_DWORD = 0x7fffffff
+} WINED3DBACKBUFFER_TYPE;
+typedef enum _WINED3DSWAPEFFECT {
+    WINED3DSWAPEFFECT_DISCARD = 1,
+    WINED3DSWAPEFFECT_FLIP = 2,
+    WINED3DSWAPEFFECT_COPY = 3,
+    WINED3DSWAPEFFECT_COPY_VSYNC = 4,
+    WINED3DSWAPEFFECT_FORCE_DWORD = 0xffffffff
+} WINED3DSWAPEFFECT;
+typedef enum _WINED3DSAMPLERSTATETYPE {
+    WINED3DSAMP_ADDRESSU = 1,
+    WINED3DSAMP_ADDRESSV = 2,
+    WINED3DSAMP_ADDRESSW = 3,
+    WINED3DSAMP_BORDERCOLOR = 4,
+    WINED3DSAMP_MAGFILTER = 5,
+    WINED3DSAMP_MINFILTER = 6,
+    WINED3DSAMP_MIPFILTER = 7,
+    WINED3DSAMP_MIPMAPLODBIAS = 8,
+    WINED3DSAMP_MAXMIPLEVEL = 9,
+    WINED3DSAMP_MAXANISOTROPY = 10,
+    WINED3DSAMP_SRGBTEXTURE = 11,
+    WINED3DSAMP_ELEMENTINDEX = 12,
+    WINED3DSAMP_DMAPOFFSET = 13,
+    WINED3DSAMP_FORCE_DWORD = 0x7fffffff
+} WINED3DSAMPLERSTATETYPE;
+#define WINED3D_HIGHEST_SAMPLER_STATE (WINED3DSAMP_DMAPOFFSET)
+
+typedef enum _WINED3DMULTISAMPLE_TYPE {
+    WINED3DMULTISAMPLE_NONE = 0,
+    WINED3DMULTISAMPLE_NONMASKABLE = 1,
+    WINED3DMULTISAMPLE_2_SAMPLES = 2,
+    WINED3DMULTISAMPLE_3_SAMPLES = 3,
+    WINED3DMULTISAMPLE_4_SAMPLES = 4,
+    WINED3DMULTISAMPLE_5_SAMPLES = 5,
+    WINED3DMULTISAMPLE_6_SAMPLES = 6,
+    WINED3DMULTISAMPLE_7_SAMPLES = 7,
+    WINED3DMULTISAMPLE_8_SAMPLES = 8,
+    WINED3DMULTISAMPLE_9_SAMPLES = 9,
+    WINED3DMULTISAMPLE_10_SAMPLES = 10,
+    WINED3DMULTISAMPLE_11_SAMPLES = 11,
+    WINED3DMULTISAMPLE_12_SAMPLES = 12,
+    WINED3DMULTISAMPLE_13_SAMPLES = 13,
+    WINED3DMULTISAMPLE_14_SAMPLES = 14,
+    WINED3DMULTISAMPLE_15_SAMPLES = 15,
+    WINED3DMULTISAMPLE_16_SAMPLES = 16,
+    WINED3DMULTISAMPLE_FORCE_DWORD = 0xffffffff
+} WINED3DMULTISAMPLE_TYPE;
+typedef enum _WINED3DTEXTURESTAGESTATETYPE {
+    WINED3DTSS_COLOROP = 1,
+    WINED3DTSS_COLORARG1 = 2,
+    WINED3DTSS_COLORARG2 = 3,
+    WINED3DTSS_ALPHAOP = 4,
+    WINED3DTSS_ALPHAARG1 = 5,
+    WINED3DTSS_ALPHAARG2 = 6,
+    WINED3DTSS_BUMPENVMAT00 = 7,
+    WINED3DTSS_BUMPENVMAT01 = 8,
+    WINED3DTSS_BUMPENVMAT10 = 9,
+    WINED3DTSS_BUMPENVMAT11 = 10,
+    WINED3DTSS_TEXCOORDINDEX = 11,
+    WINED3DTSS_ADDRESS = 12,
+    WINED3DTSS_ADDRESSU = 13,
+    WINED3DTSS_ADDRESSV = 14,
+    WINED3DTSS_BORDERCOLOR = 15,
+    WINED3DTSS_MAGFILTER = 16,
+    WINED3DTSS_MINFILTER = 17,
+    WINED3DTSS_MIPFILTER = 18,
+    WINED3DTSS_MIPMAPLODBIAS = 19,
+    WINED3DTSS_MAXMIPLEVEL = 20,
+    WINED3DTSS_MAXANISOTROPY = 21,
+    WINED3DTSS_BUMPENVLSCALE = 22,
+    WINED3DTSS_BUMPENVLOFFSET = 23,
+    WINED3DTSS_TEXTURETRANSFORMFLAGS = 24,
+    WINED3DTSS_ADDRESSW = 25,
+    WINED3DTSS_COLORARG0 = 26,
+    WINED3DTSS_ALPHAARG0 = 27,
+    WINED3DTSS_RESULTARG = 28,
+    WINED3DTSS_CONSTANT = 32,
+    WINED3DTSS_FORCE_DWORD = 0x7fffffff
+} WINED3DTEXTURESTAGESTATETYPE;
+#define WINED3D_HIGHEST_TEXTURE_STATE (WINED3DTSS_CONSTANT)
+
+typedef enum _WINED3DTEXTURETRANSFORMFLAGS {
+    WINED3DTTFF_DISABLE = 0,
+    WINED3DTTFF_COUNT1 = 1,
+    WINED3DTTFF_COUNT2 = 2,
+    WINED3DTTFF_COUNT3 = 3,
+    WINED3DTTFF_COUNT4 = 4,
+    WINED3DTTFF_PROJECTED = 256,
+    WINED3DTTFF_FORCE_DWORD = 0x7fffffff
+} WINED3DTEXTURETRANSFORMFLAGS;
+typedef enum _WINED3DTEXTUREOP {
+    WINED3DTOP_DISABLE = 1,
+    WINED3DTOP_SELECTARG1 = 2,
+    WINED3DTOP_SELECTARG2 = 3,
+    WINED3DTOP_MODULATE = 4,
+    WINED3DTOP_MODULATE2X = 5,
+    WINED3DTOP_MODULATE4X = 6,
+    WINED3DTOP_ADD = 7,
+    WINED3DTOP_ADDSIGNED = 8,
+    WINED3DTOP_ADDSIGNED2X = 9,
+    WINED3DTOP_SUBTRACT = 10,
+    WINED3DTOP_ADDSMOOTH = 11,
+    WINED3DTOP_BLENDDIFFUSEALPHA = 12,
+    WINED3DTOP_BLENDTEXTUREALPHA = 13,
+    WINED3DTOP_BLENDFACTORALPHA = 14,
+    WINED3DTOP_BLENDTEXTUREALPHAPM = 15,
+    WINED3DTOP_BLENDCURRENTALPHA = 16,
+    WINED3DTOP_PREMODULATE = 17,
+    WINED3DTOP_MODULATEALPHA_ADDCOLOR = 18,
+    WINED3DTOP_MODULATECOLOR_ADDALPHA = 19,
+    WINED3DTOP_MODULATEINVALPHA_ADDCOLOR = 20,
+    WINED3DTOP_MODULATEINVCOLOR_ADDALPHA = 21,
+    WINED3DTOP_BUMPENVMAP = 22,
+    WINED3DTOP_BUMPENVMAPLUMINANCE = 23,
+    WINED3DTOP_DOTPRODUCT3 = 24,
+    WINED3DTOP_MULTIPLYADD = 25,
+    WINED3DTOP_LERP = 26,
+    WINED3DTOP_FORCE_DWORD = 0x7fffffff
+} WINED3DTEXTUREOP;
+typedef enum _WINED3DTEXTUREADDRESS {
+    WINED3DTADDRESS_WRAP = 1,
+    WINED3DTADDRESS_MIRROR = 2,
+    WINED3DTADDRESS_CLAMP = 3,
+    WINED3DTADDRESS_BORDER = 4,
+    WINED3DTADDRESS_MIRRORONCE = 5,
+    WINED3DTADDRESS_FORCE_DWORD = 0x7fffffff
+} WINED3DTEXTUREADDRESS;
+typedef enum _WINED3DTRANSFORMSTATETYPE {
+    WINED3DTS_VIEW = 2,
+    WINED3DTS_PROJECTION = 3,
+    WINED3DTS_TEXTURE0 = 16,
+    WINED3DTS_TEXTURE1 = 17,
+    WINED3DTS_TEXTURE2 = 18,
+    WINED3DTS_TEXTURE3 = 19,
+    WINED3DTS_TEXTURE4 = 20,
+    WINED3DTS_TEXTURE5 = 21,
+    WINED3DTS_TEXTURE6 = 22,
+    WINED3DTS_TEXTURE7 = 23,
+    WINED3DTS_FORCE_DWORD = 0x7fffffff
+} WINED3DTRANSFORMSTATETYPE;
+#define WINED3DTS_WORLD  WINED3DTS_WORLDMATRIX(0)
+#define WINED3DTS_WORLD1 WINED3DTS_WORLDMATRIX(1)
+#define WINED3DTS_WORLD2 WINED3DTS_WORLDMATRIX(2)
+#define WINED3DTS_WORLD3 WINED3DTS_WORLDMATRIX(3)
+#define WINED3DTS_WORLDMATRIX(index) (WINED3DTRANSFORMSTATETYPE)(index + 256)
+typedef enum _WINED3DBASISTYPE {
+    WINED3DBASIS_BEZIER = 0,
+    WINED3DBASIS_BSPLINE = 1,
+    WINED3DBASIS_INTERPOLATE = 2,
+    WINED3DBASIS_FORCE_DWORD = 0x7fffffff
+} WINED3DBASISTYPE;
+typedef enum _WINED3DCUBEMAP_FACES {
+    WINED3DCUBEMAP_FACE_POSITIVE_X = 0,
+    WINED3DCUBEMAP_FACE_NEGATIVE_X = 1,
+    WINED3DCUBEMAP_FACE_POSITIVE_Y = 2,
+    WINED3DCUBEMAP_FACE_NEGATIVE_Y = 3,
+    WINED3DCUBEMAP_FACE_POSITIVE_Z = 4,
+    WINED3DCUBEMAP_FACE_NEGATIVE_Z = 5,
+    WINED3DCUBEMAP_FACE_FORCE_DWORD = 0xffffffff
+} WINED3DCUBEMAP_FACES;
+typedef enum _WINED3DTEXTUREFILTERTYPE {
+    WINED3DTEXF_NONE = 0,
+    WINED3DTEXF_POINT = 1,
+    WINED3DTEXF_LINEAR = 2,
+    WINED3DTEXF_ANISOTROPIC = 3,
+    WINED3DTEXF_FLATCUBIC = 4,
+    WINED3DTEXF_GAUSSIANCUBIC = 5,
+    WINED3DTEXF_PYRAMIDALQUAD = 6,
+    WINED3DTEXF_GAUSSIANQUAD = 7,
+    WINED3DTEXF_FORCE_DWORD = 0x7fffffff
+} WINED3DTEXTUREFILTERTYPE;
+typedef enum _WINED3DRESOURCETYPE {
+    WINED3DRTYPE_SURFACE = 1,
+    WINED3DRTYPE_VOLUME = 2,
+    WINED3DRTYPE_TEXTURE = 3,
+    WINED3DRTYPE_VOLUMETEXTURE = 4,
+    WINED3DRTYPE_CUBETEXTURE = 5,
+    WINED3DRTYPE_VERTEXBUFFER = 6,
+    WINED3DRTYPE_INDEXBUFFER = 7,
+    WINED3DRTYPE_FORCE_DWORD = 0x7fffffff
+} WINED3DRESOURCETYPE;
+#define WINED3DRTYPECOUNT (WINED3DRTYPE_INDEXBUFFER + 1)
+
+typedef enum _WINED3DPOOL {
+    WINED3DPOOL_DEFAULT = 0,
+    WINED3DPOOL_MANAGED = 1,
+    WINED3DPOOL_SYSTEMMEM = 2,
+    WINED3DPOOL_SCRATCH = 3,
+    WINED3DPOOL_FORCE_DWORD = 0x7fffffff
+} WINED3DPOOL;
+typedef enum _WINED3DQUERYTYPE {
+    WINED3DQUERYTYPE_VCACHE = 4,
+    WINED3DQUERYTYPE_RESOURCEMANAGER = 5,
+    WINED3DQUERYTYPE_VERTEXSTATS = 6,
+    WINED3DQUERYTYPE_EVENT = 8,
+    WINED3DQUERYTYPE_OCCLUSION = 9,
+    WINED3DQUERYTYPE_TIMESTAMP = 10,
+    WINED3DQUERYTYPE_TIMESTAMPDISJOINT = 11,
+    WINED3DQUERYTYPE_TIMESTAMPFREQ = 12,
+    WINED3DQUERYTYPE_PIPELINETIMINGS = 13,
+    WINED3DQUERYTYPE_INTERFACETIMINGS = 14,
+    WINED3DQUERYTYPE_VERTEXTIMINGS = 15,
+    WINED3DQUERYTYPE_PIXELTIMINGS = 16,
+    WINED3DQUERYTYPE_BANDWIDTHTIMINGS = 17,
+    WINED3DQUERYTYPE_CACHEUTILIZATION = 18
+} WINED3DQUERYTYPE;
+#define WINED3DISSUE_BEGIN (1 << 1)
+
+#define WINED3DISSUE_END (1 << 0)
+
+#define WINED3DGETDATA_FLUSH (1 << 0)
+
+typedef enum _WINED3DSTATEBLOCKTYPE {
+    WINED3DSBT_INIT = 0,
+    WINED3DSBT_ALL = 1,
+    WINED3DSBT_PIXELSTATE = 2,
+    WINED3DSBT_VERTEXSTATE = 3,
+    WINED3DSBT_RECORDED = 4,
+    WINED3DSBT_FORCE_DWORD = 0xffffffff
+} WINED3DSTATEBLOCKTYPE;
+typedef enum _WINED3DDECLMETHOD {
+    WINED3DDECLMETHOD_DEFAULT = 0,
+    WINED3DDECLMETHOD_PARTIALU = 1,
+    WINED3DDECLMETHOD_PARTIALV = 2,
+    WINED3DDECLMETHOD_CROSSUV = 3,
+    WINED3DDECLMETHOD_UV = 4,
+    WINED3DDECLMETHOD_LOOKUP = 5,
+    WINED3DDECLMETHOD_LOOKUPPRESAMPLED = 6
+} WINED3DDECLMETHOD;
+typedef enum _WINED3DDECLTYPE {
+    WINED3DDECLTYPE_FLOAT1 = 0,
+    WINED3DDECLTYPE_FLOAT2 = 1,
+    WINED3DDECLTYPE_FLOAT3 = 2,
+    WINED3DDECLTYPE_FLOAT4 = 3,
+    WINED3DDECLTYPE_D3DCOLOR = 4,
+    WINED3DDECLTYPE_UBYTE4 = 5,
+    WINED3DDECLTYPE_SHORT2 = 6,
+    WINED3DDECLTYPE_SHORT4 = 7,
+    WINED3DDECLTYPE_UBYTE4N = 8,
+    WINED3DDECLTYPE_SHORT2N = 9,
+    WINED3DDECLTYPE_SHORT4N = 10,
+    WINED3DDECLTYPE_USHORT2N = 11,
+    WINED3DDECLTYPE_USHORT4N = 12,
+    WINED3DDECLTYPE_UDEC3 = 13,
+    WINED3DDECLTYPE_DEC3N = 14,
+    WINED3DDECLTYPE_FLOAT16_2 = 15,
+    WINED3DDECLTYPE_FLOAT16_4 = 16,
+    WINED3DDECLTYPE_UNUSED = 17
+} WINED3DDECLTYPE;
+#define WINED3DDECL_END() {0xFF, 0, WINED3DDECLTYPE_UNUSED, 0, 0, 0, -1}
+typedef enum _WINED3DDECLUSAGE {
+    WINED3DDECLUSAGE_POSITION = 0,
+    WINED3DDECLUSAGE_BLENDWEIGHT = 1,
+    WINED3DDECLUSAGE_BLENDINDICES = 2,
+    WINED3DDECLUSAGE_NORMAL = 3,
+    WINED3DDECLUSAGE_PSIZE = 4,
+    WINED3DDECLUSAGE_TEXCOORD = 5,
+    WINED3DDECLUSAGE_TANGENT = 6,
+    WINED3DDECLUSAGE_BINORMAL = 7,
+    WINED3DDECLUSAGE_TESSFACTOR = 8,
+    WINED3DDECLUSAGE_POSITIONT = 9,
+    WINED3DDECLUSAGE_COLOR = 10,
+    WINED3DDECLUSAGE_FOG = 11,
+    WINED3DDECLUSAGE_DEPTH = 12,
+    WINED3DDECLUSAGE_SAMPLE = 13
+} WINED3DDECLUSAGE;
+typedef enum _WINED3DSURFTYPE {
+    SURFACE_UNKNOWN = 0,
+    SURFACE_OPENGL = 1,
+    SURFACE_GDI = 2
+} WINED3DSURFTYPE;
+#define WINED3DCOLORWRITEENABLE_RED (1 << 0)
+
+#define WINED3DCOLORWRITEENABLE_GREEN (1 << 1)
+
+#define WINED3DCOLORWRITEENABLE_BLUE (1 << 2)
+
+#define WINED3DCOLORWRITEENABLE_ALPHA (1 << 3)
+
+#define WINED3DADAPTER_DEFAULT (0)
+
+#define WINED3DENUM_NO_WHQL_LEVEL (2)
+
+#define WINED3DPRESENT_BACK_BUFFER_MAX (3)
+
+#define WINED3DTSS_TCI_PASSTHRU (0x0)
+
+#define WINED3DTSS_TCI_CAMERASPACENORMAL (0x10000)
+
+#define WINED3DTSS_TCI_CAMERASPACEPOSITION (0x20000)
+
+#define WINED3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR (0x30000)
+
+#define WINED3DTSS_TCI_SPHEREMAP (0x40000)
+
+#define WINED3DTA_SELECTMASK (0xf)
+
+#define WINED3DTA_DIFFUSE (0x0)
+
+#define WINED3DTA_CURRENT (0x1)
+
+#define WINED3DTA_TEXTURE (0x2)
+
+#define WINED3DTA_TFACTOR (0x3)
+
+#define WINED3DTA_SPECULAR (0x4)
+
+#define WINED3DTA_TEMP (0x5)
+
+#define WINED3DTA_CONSTANT (0x6)
+
+#define WINED3DTA_COMPLEMENT (0x10)
+
+#define WINED3DTA_ALPHAREPLICATE (0x20)
+
+#define WINED3DPRESENTFLAG_LOCKABLE_BACKBUFFER (0x1)
+
+#define WINED3DPRESENTFLAG_DISCARD_DEPTHSTENCIL (0x2)
+
+#define WINED3DPRESENTFLAG_DEVICECLIP (0x4)
+
+#define WINED3DPRESENTFLAG_VIDEO (0x10)
+
+#define WINED3DPRESENTFLAG_NOAUTOROTATE (0x20)
+
+#define WINED3DPRESENTFLAG_UNPRUNEDMODE (0x40)
+
+#define WINED3DDP_MAXTEXCOORD (8)
+
+#define WINED3DUSAGE_RENDERTARGET (0x1)
+
+#define WINED3DUSAGE_DEPTHSTENCIL (0x2)
+
+#define WINED3DUSAGE_WRITEONLY (0x8)
+
+#define WINED3DUSAGE_SOFTWAREPROCESSING (0x10)
+
+#define WINED3DUSAGE_DONOTCLIP (0x20)
+
+#define WINED3DUSAGE_POINTS (0x40)
+
+#define WINED3DUSAGE_RTPATCHES (0x80)
+
+#define WINED3DUSAGE_NPATCHES (0x100)
+
+#define WINED3DUSAGE_DYNAMIC (0x200)
+
+#define WINED3DUSAGE_AUTOGENMIPMAP (0x400)
+
+#define WINED3DUSAGE_DMAP (0x4000)
+
+#define WINED3DUSAGE_MASK (0x4fff)
+
+#define WINED3DUSAGE_OVERLAY (0x80000000)
+
+#define WINED3DUSAGE_QUERY_LEGACYBUMPMAP (0x8000)
+
+#define WINED3DUSAGE_QUERY_FILTER (0x20000)
+
+#define WINED3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING (0x80000)
+
+#define WINED3DUSAGE_QUERY_SRGBREAD (0x10000)
+
+#define WINED3DUSAGE_QUERY_SRGBWRITE (0x40000)
+
+#define WINED3DUSAGE_QUERY_VERTEXTEXTURE (0x100000)
+
+#define WINED3DUSAGE_QUERY_WRAPANDMIP (0x200000)
+
+#define WINED3DUSAGE_QUERY_MASK (0x3f8000)
+
+#define WINED3DLOCK_READONLY (0x10)
+
+#define WINED3DLOCK_NOSYSLOCK (0x800)
+
+#define WINED3DLOCK_NOOVERWRITE (0x1000)
+
+#define WINED3DLOCK_DISCARD (0x2000)
+
+#define WINED3DLOCK_DONOTWAIT (0x4000)
+
+#define WINED3DLOCK_NO_DIRTY_UPDATE (0x8000)
+
+#define WINED3DPRESENT_RATE_DEFAULT (0x0)
+
+#define WINED3DPRESENT_INTERVAL_DEFAULT (0x0)
+
+#define WINED3DPRESENT_INTERVAL_ONE (0x1)
+
+#define WINED3DPRESENT_INTERVAL_TWO (0x2)
+
+#define WINED3DPRESENT_INTERVAL_THREE (0x4)
+
+#define WINED3DPRESENT_INTERVAL_FOUR (0x8)
+
+#define WINED3DPRESENT_INTERVAL_IMMEDIATE (0x80000000)
+
+#define WINED3DMAXUSERCLIPPLANES (32)
+
+#define WINED3DCLIPPLANE0 (1 << 0)
+
+#define WINED3DCLIPPLANE1 (1 << 1)
+
+#define WINED3DCLIPPLANE2 (1 << 2)
+
+#define WINED3DCLIPPLANE3 (1 << 3)
+
+#define WINED3DCLIPPLANE4 (1 << 4)
+
+#define WINED3DCLIPPLANE5 (1 << 5)
+
+#define WINED3DFVF_RESERVED0 (0x1)
+
+#define WINED3DFVF_POSITION_MASK (0xe)
+
+#define WINED3DFVF_XYZ (0x2)
+
+#define WINED3DFVF_XYZRHW (0x4)
+
+#define WINED3DFVF_XYZB1 (0x6)
+
+#define WINED3DFVF_XYZB2 (0x8)
+
+#define WINED3DFVF_XYZB3 (0xa)
+
+#define WINED3DFVF_XYZB4 (0xc)
+
+#define WINED3DFVF_XYZB5 (0xe)
+
+#define WINED3DFVF_XYZW (0x4002)
+
+#define WINED3DFVF_NORMAL (0x10)
+
+#define WINED3DFVF_PSIZE (0x20)
+
+#define WINED3DFVF_DIFFUSE (0x40)
+
+#define WINED3DFVF_SPECULAR (0x80)
+
+#define WINED3DFVF_TEXCOUNT_MASK (0xf00)
+
+#define WINED3DFVF_TEXCOUNT_SHIFT (8)
+
+#define WINED3DFVF_TEX0 (0x0)
+
+#define WINED3DFVF_TEX1 (0x100)
+
+#define WINED3DFVF_TEX2 (0x200)
+
+#define WINED3DFVF_TEX3 (0x300)
+
+#define WINED3DFVF_TEX4 (0x400)
+
+#define WINED3DFVF_TEX5 (0x500)
+
+#define WINED3DFVF_TEX6 (0x600)
+
+#define WINED3DFVF_TEX7 (0x700)
+
+#define WINED3DFVF_TEX8 (0x800)
+
+#define WINED3DFVF_LASTBETA_UBYTE4 (0x1000)
+
+#define WINED3DFVF_LASTBETA_D3DCOLOR (0x8000)
+
+#define WINED3DFVF_RESERVED2 (0x6000)
+
+#define WINED3DFVF_TEXTUREFORMAT1 (3)
+
+#define WINED3DFVF_TEXTUREFORMAT2 (0)
+
+#define WINED3DFVF_TEXTUREFORMAT3 (1)
+
+#define WINED3DFVF_TEXTUREFORMAT4 (2)
+
+#define WINED3DFVF_TEXCOORDSIZE1(CoordIndex) (WINED3DFVF_TEXTUREFORMAT1 << (CoordIndex*2 + 16))
+#define WINED3DFVF_TEXCOORDSIZE2(CoordIndex) (WINED3DFVF_TEXTUREFORMAT2)
+#define WINED3DFVF_TEXCOORDSIZE3(CoordIndex) (WINED3DFVF_TEXTUREFORMAT3 << (CoordIndex*2 + 16))
+#define WINED3DFVF_TEXCOORDSIZE4(CoordIndex) (WINED3DFVF_TEXTUREFORMAT4 << (CoordIndex*2 + 16))
+#define WINED3DCLEAR_TARGET (0x1)
+
+#define WINED3DCLEAR_ZBUFFER (0x2)
+
+#define WINED3DCLEAR_STENCIL (0x4)
+
+#define WINED3DSTREAMSOURCE_INDEXEDDATA (1 << 30)
+
+#define WINED3DSTREAMSOURCE_INSTANCEDATA (2 << 30)
+
+#define WINED3DSPD_IUNKNOWN (0x1)
+
+#define WINED3DCREATE_FPU_PRESERVE (0x2)
+
+#define WINED3DCREATE_PUREDEVICE (0x10)
+
+#define WINED3DCREATE_SOFTWARE_VERTEXPROCESSING (0x20)
+
+#define WINED3DCREATE_HARDWARE_VERTEXPROCESSING (0x40)
+
+#define WINED3DCREATE_MIXED_VERTEXPROCESSING (0x80)
+
+#define WINED3DCREATE_DISABLE_DRIVER_MANAGEMENT (0x100)
+
+#define WINED3DCREATE_ADAPTERGROUP_DEVICE (0x200)
+
+#define WINED3DDMAPSAMPLER (0x100)
+
+#define WINED3DVERTEXTEXTURESAMPLER0 (WINED3DDMAPSAMPLER + 1)
+
+#define WINED3DVERTEXTEXTURESAMPLER1 (WINED3DDMAPSAMPLER + 2)
+
+#define WINED3DVERTEXTEXTURESAMPLER2 (WINED3DDMAPSAMPLER + 3)
+
+#define WINED3DVERTEXTEXTURESAMPLER3 (WINED3DDMAPSAMPLER + 4)
+
+#define WINED3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD (0x20)
+
+#define WINED3DCAPS3_LINEAR_TO_SRGB_PRESENTATION (0x80)
+
+#define WINED3DCAPS3_COPY_TO_VIDMEM (0x100)
+
+#define WINED3DCAPS3_COPY_TO_SYSTEMMEM (0x200)
+
+#define WINED3DCAPS3_RESERVED (0x8000001f)
+
+#define WINED3DDEVCAPS2_STREAMOFFSET (0x1)
+
+#define WINED3DDEVCAPS2_DMAPNPATCH (0x2)
+
+#define WINED3DDEVCAPS2_ADAPTIVETESSRTPATCH (0x4)
+
+#define WINED3DDEVCAPS2_ADAPTIVETESSNPATCH (0x8)
+
+#define WINED3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES (0x10)
+
+#define WINED3DDEVCAPS2_PRESAMPLEDDMAPNPATCH (0x20)
+
+#define WINED3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET (0x40)
+
+#define WINED3DDTCAPS_UBYTE4 (0x1)
+
+#define WINED3DDTCAPS_UBYTE4N (0x2)
+
+#define WINED3DDTCAPS_SHORT2N (0x4)
+
+#define WINED3DDTCAPS_SHORT4N (0x8)
+
+#define WINED3DDTCAPS_USHORT2N (0x10)
+
+#define WINED3DDTCAPS_USHORT4N (0x20)
+
+#define WINED3DDTCAPS_UDEC3 (0x40)
+
+#define WINED3DDTCAPS_DEC3N (0x80)
+
+#define WINED3DDTCAPS_FLOAT16_2 (0x100)
+
+#define WINED3DDTCAPS_FLOAT16_4 (0x200)
+
+#define WINED3DFVFCAPS_TEXCOORDCOUNTMASK (0xffff)
+
+#define WINED3DFVFCAPS_DONOTSTRIPELEMENTS (0x80000)
+
+#define WINED3DFVFCAPS_PSIZE (0x100000)
+
+#define WINED3DLINECAPS_TEXTURE (0x1)
+
+#define WINED3DLINECAPS_ZTEST (0x2)
+
+#define WINED3DLINECAPS_BLEND (0x4)
+
+#define WINED3DLINECAPS_ALPHACMP (0x8)
+
+#define WINED3DLINECAPS_FOG (0x10)
+
+#define WINED3DLINECAPS_ANTIALIAS (0x20)
+
+#define WINED3DMAX30SHADERINSTRUCTIONS (32768)
+
+#define WINED3DMIN30SHADERINSTRUCTIONS (512)
+
+#define WINED3DPBLENDCAPS_ZERO (0x1)
+
+#define WINED3DPBLENDCAPS_ONE (0x2)
+
+#define WINED3DPBLENDCAPS_SRCCOLOR (0x4)
+
+#define WINED3DPBLENDCAPS_INVSRCCOLOR (0x8)
+
+#define WINED3DPBLENDCAPS_SRCALPHA (0x10)
+
+#define WINED3DPBLENDCAPS_INVSRCALPHA (0x20)
+
+#define WINED3DPBLENDCAPS_DESTALPHA (0x40)
+
+#define WINED3DPBLENDCAPS_INVDESTALPHA (0x80)
+
+#define WINED3DPBLENDCAPS_DESTCOLOR (0x100)
+
+#define WINED3DPBLENDCAPS_INVDESTCOLOR (0x200)
+
+#define WINED3DPBLENDCAPS_SRCALPHASAT (0x400)
+
+#define WINED3DPBLENDCAPS_BOTHSRCALPHA (0x800)
+
+#define WINED3DPBLENDCAPS_BOTHINVSRCALPHA (0x1000)
+
+#define WINED3DPBLENDCAPS_BLENDFACTOR (0x2000)
+
+#define WINED3DPCMPCAPS_NEVER (0x1)
+
+#define WINED3DPCMPCAPS_LESS (0x2)
+
+#define WINED3DPCMPCAPS_EQUAL (0x4)
+
+#define WINED3DPCMPCAPS_LESSEQUAL (0x8)
+
+#define WINED3DPCMPCAPS_GREATER (0x10)
+
+#define WINED3DPCMPCAPS_NOTEQUAL (0x20)
+
+#define WINED3DPCMPCAPS_GREATEREQUAL (0x40)
+
+#define WINED3DPCMPCAPS_ALWAYS (0x80)
+
+#define WINED3DPMISCCAPS_MASKZ (0x2)
+
+#define WINED3DPMISCCAPS_LINEPATTERNREP (0x4)
+
+#define WINED3DPMISCCAPS_CULLNONE (0x10)
+
+#define WINED3DPMISCCAPS_CULLCW (0x20)
+
+#define WINED3DPMISCCAPS_CULLCCW (0x40)
+
+#define WINED3DPMISCCAPS_COLORWRITEENABLE (0x80)
+
+#define WINED3DPMISCCAPS_CLIPPLANESCALEDPOINTS (0x100)
+
+#define WINED3DPMISCCAPS_CLIPTLVERTS (0x200)
+
+#define WINED3DPMISCCAPS_TSSARGTEMP (0x400)
+
+#define WINED3DPMISCCAPS_BLENDOP (0x800)
+
+#define WINED3DPMISCCAPS_NULLREFERENCE (0x1000)
+
+#define WINED3DPMISCCAPS_INDEPENDENTWRITEMASKS (0x4000)
+
+#define WINED3DPMISCCAPS_PERSTAGECONSTANT (0x8000)
+
+#define WINED3DPMISCCAPS_FOGANDSPECULARALPHA (0x10000)
+
+#define WINED3DPMISCCAPS_SEPARATEALPHABLEND (0x20000)
+
+#define WINED3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS (0x40000)
+
+#define WINED3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING (0x80000)
+
+#define WINED3DPMISCCAPS_FOGVERTEXCLAMPED (0x100000)
+
+#define WINED3DPS20_MAX_DYNAMICFLOWCONTROLDEPTH (24)
+
+#define WINED3DPS20_MIN_DYNAMICFLOWCONTROLDEPTH (0)
+
+#define WINED3DPS20_MAX_NUMTEMPS (32)
+
+#define WINED3DPS20_MIN_NUMTEMPS (12)
+
+#define WINED3DPS20_MAX_STATICFLOWCONTROLDEPTH (4)
+
+#define WINED3DPS20_MIN_STATICFLOWCONTROLDEPTH (0)
+
+#define WINED3DPS20_MAX_NUMINSTRUCTIONSLOTS (512)
+
+#define WINED3DPS20_MIN_NUMINSTRUCTIONSLOTS (96)
+
+#define WINED3DPS20CAPS_ARBITRARYSWIZZLE (0x1)
+
+#define WINED3DPS20CAPS_GRADIENTINSTRUCTIONS (0x2)
+
+#define WINED3DPS20CAPS_PREDICATION (0x4)
+
+#define WINED3DPS20CAPS_NODEPENDENTREADLIMIT (0x8)
+
+#define WINED3DPS20CAPS_NOTEXINSTRUCTIONLIMIT (0x10)
+
+#define WINED3DPTADDRESSCAPS_WRAP (0x1)
+
+#define WINED3DPTADDRESSCAPS_MIRROR (0x2)
+
+#define WINED3DPTADDRESSCAPS_CLAMP (0x4)
+
+#define WINED3DPTADDRESSCAPS_BORDER (0x8)
+
+#define WINED3DPTADDRESSCAPS_INDEPENDENTUV (0x10)
+
+#define WINED3DPTADDRESSCAPS_MIRRORONCE (0x20)
+
+#define WINED3DSTENCILCAPS_KEEP (0x1)
+
+#define WINED3DSTENCILCAPS_ZERO (0x2)
+
+#define WINED3DSTENCILCAPS_REPLACE (0x4)
+
+#define WINED3DSTENCILCAPS_INCRSAT (0x8)
+
+#define WINED3DSTENCILCAPS_DECRSAT (0x10)
+
+#define WINED3DSTENCILCAPS_INVERT (0x20)
+
+#define WINED3DSTENCILCAPS_INCR (0x40)
+
+#define WINED3DSTENCILCAPS_DECR (0x80)
+
+#define WINED3DSTENCILCAPS_TWOSIDED (0x100)
+
+#define WINED3DTEXOPCAPS_DISABLE (0x1)
+
+#define WINED3DTEXOPCAPS_SELECTARG1 (0x2)
+
+#define WINED3DTEXOPCAPS_SELECTARG2 (0x4)
+
+#define WINED3DTEXOPCAPS_MODULATE (0x8)
+
+#define WINED3DTEXOPCAPS_MODULATE2X (0x10)
+
+#define WINED3DTEXOPCAPS_MODULATE4X (0x20)
+
+#define WINED3DTEXOPCAPS_ADD (0x40)
+
+#define WINED3DTEXOPCAPS_ADDSIGNED (0x80)
+
+#define WINED3DTEXOPCAPS_ADDSIGNED2X (0x100)
+
+#define WINED3DTEXOPCAPS_SUBTRACT (0x200)
+
+#define WINED3DTEXOPCAPS_ADDSMOOTH (0x400)
+
+#define WINED3DTEXOPCAPS_BLENDDIFFUSEALPHA (0x800)
+
+#define WINED3DTEXOPCAPS_BLENDTEXTUREALPHA (0x1000)
+
+#define WINED3DTEXOPCAPS_BLENDFACTORALPHA (0x2000)
+
+#define WINED3DTEXOPCAPS_BLENDTEXTUREALPHAPM (0x4000)
+
+#define WINED3DTEXOPCAPS_BLENDCURRENTALPHA (0x8000)
+
+#define WINED3DTEXOPCAPS_PREMODULATE (0x10000)
+
+#define WINED3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR (0x20000)
+
+#define WINED3DTEXOPCAPS_MODULATECOLOR_ADDALPHA (0x40000)
+
+#define WINED3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR (0x80000)
+
+#define WINED3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA (0x100000)
+
+#define WINED3DTEXOPCAPS_BUMPENVMAP (0x200000)
+
+#define WINED3DTEXOPCAPS_BUMPENVMAPLUMINANCE (0x400000)
+
+#define WINED3DTEXOPCAPS_DOTPRODUCT3 (0x800000)
+
+#define WINED3DTEXOPCAPS_MULTIPLYADD (0x1000000)
+
+#define WINED3DTEXOPCAPS_LERP (0x2000000)
+
+#define WINED3DVS20_MAX_DYNAMICFLOWCONTROLDEPTH (24)
+
+#define WINED3DVS20_MIN_DYNAMICFLOWCONTROLDEPTH (0)
+
+#define WINED3DVS20_MAX_NUMTEMPS (32)
+
+#define WINED3DVS20_MIN_NUMTEMPS (12)
+
+#define WINED3DVS20_MAX_STATICFLOWCONTROLDEPTH (4)
+
+#define WINED3DVS20_MIN_STATICFLOWCONTROLDEPTH (1)
+
+#define WINED3DVS20CAPS_PREDICATION (0x1)
+
+#define WINED3DCAPS2_NO2DDURING3DSCENE (0x2)
+
+#define WINED3DCAPS2_FULLSCREENGAMMA (0x20000)
+
+#define WINED3DCAPS2_CANRENDERWINDOWED (0x80000)
+
+#define WINED3DCAPS2_CANCALIBRATEGAMMA (0x100000)
+
+#define WINED3DCAPS2_RESERVED (0x2000000)
+
+#define WINED3DCAPS2_CANMANAGERESOURCE (0x10000000)
+
+#define WINED3DCAPS2_DYNAMICTEXTURES (0x20000000)
+
+#define WINED3DCAPS2_CANAUTOGENMIPMAP (0x40000000)
+
+#define WINED3DPRASTERCAPS_DITHER (0x1)
+
+#define WINED3DPRASTERCAPS_ROP2 (0x2)
+
+#define WINED3DPRASTERCAPS_XOR (0x4)
+
+#define WINED3DPRASTERCAPS_PAT (0x8)
+
+#define WINED3DPRASTERCAPS_ZTEST (0x10)
+
+#define WINED3DPRASTERCAPS_SUBPIXEL (0x20)
+
+#define WINED3DPRASTERCAPS_SUBPIXELX (0x40)
+
+#define WINED3DPRASTERCAPS_FOGVERTEX (0x80)
+
+#define WINED3DPRASTERCAPS_FOGTABLE (0x100)
+
+#define WINED3DPRASTERCAPS_STIPPLE (0x200)
+
+#define WINED3DPRASTERCAPS_ANTIALIASSORTDEPENDENT (0x400)
+
+#define WINED3DPRASTERCAPS_ANTIALIASSORTINDEPENDENT (0x800)
+
+#define WINED3DPRASTERCAPS_ANTIALIASEDGES (0x1000)
+
+#define WINED3DPRASTERCAPS_MIPMAPLODBIAS (0x2000)
+
+#define WINED3DPRASTERCAPS_ZBIAS (0x4000)
+
+#define WINED3DPRASTERCAPS_ZBUFFERLESSHSR (0x8000)
+
+#define WINED3DPRASTERCAPS_FOGRANGE (0x10000)
+
+#define WINED3DPRASTERCAPS_ANISOTROPY (0x20000)
+
+#define WINED3DPRASTERCAPS_WBUFFER (0x40000)
+
+#define WINED3DPRASTERCAPS_TRANSLUCENTSORTINDEPENDENT (0x80000)
+
+#define WINED3DPRASTERCAPS_WFOG (0x100000)
+
+#define WINED3DPRASTERCAPS_ZFOG (0x200000)
+
+#define WINED3DPRASTERCAPS_COLORPERSPECTIVE (0x400000)
+
+#define WINED3DPRASTERCAPS_SCISSORTEST (0x1000000)
+
+#define WINED3DPRASTERCAPS_SLOPESCALEDEPTHBIAS (0x2000000)
+
+#define WINED3DPRASTERCAPS_DEPTHBIAS (0x4000000)
+
+#define WINED3DPRASTERCAPS_MULTISAMPLE_TOGGLE (0x8000000)
+
+#define WINED3DPSHADECAPS_COLORFLATMONO (0x1)
+
+#define WINED3DPSHADECAPS_COLORFLATRGB (0x2)
+
+#define WINED3DPSHADECAPS_COLORGOURAUDMONO (0x4)
+
+#define WINED3DPSHADECAPS_COLORGOURAUDRGB (0x8)
+
+#define WINED3DPSHADECAPS_COLORPHONGMONO (0x10)
+
+#define WINED3DPSHADECAPS_COLORPHONGRGB (0x20)
+
+#define WINED3DPSHADECAPS_SPECULARFLATMONO (0x40)
+
+#define WINED3DPSHADECAPS_SPECULARFLATRGB (0x80)
+
+#define WINED3DPSHADECAPS_SPECULARGOURAUDMONO (0x100)
+
+#define WINED3DPSHADECAPS_SPECULARGOURAUDRGB (0x200)
+
+#define WINED3DPSHADECAPS_SPECULARPHONGMONO (0x400)
+
+#define WINED3DPSHADECAPS_SPECULARPHONGRGB (0x800)
+
+#define WINED3DPSHADECAPS_ALPHAFLATBLEND (0x1000)
+
+#define WINED3DPSHADECAPS_ALPHAFLATSTIPPLED (0x2000)
+
+#define WINED3DPSHADECAPS_ALPHAGOURAUDBLEND (0x4000)
+
+#define WINED3DPSHADECAPS_ALPHAGOURAUDSTIPPLED (0x8000)
+
+#define WINED3DPSHADECAPS_ALPHAPHONGBLEND (0x10000)
+
+#define WINED3DPSHADECAPS_ALPHAPHONGSTIPPLED (0x20000)
+
+#define WINED3DPSHADECAPS_FOGFLAT (0x40000)
+
+#define WINED3DPSHADECAPS_FOGGOURAUD (0x80000)
+
+#define WINED3DPSHADECAPS_FOGPHONG (0x100000)
+
+#define WINED3DPTEXTURECAPS_PERSPECTIVE (0x1)
+
+#define WINED3DPTEXTURECAPS_POW2 (0x2)
+
+#define WINED3DPTEXTURECAPS_ALPHA (0x4)
+
+#define WINED3DPTEXTURECAPS_TRANSPARENCY (0x8)
+
+#define WINED3DPTEXTURECAPS_BORDER (0x10)
+
+#define WINED3DPTEXTURECAPS_SQUAREONLY (0x20)
+
+#define WINED3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE (0x40)
+
+#define WINED3DPTEXTURECAPS_ALPHAPALETTE (0x80)
+
+#define WINED3DPTEXTURECAPS_NONPOW2CONDITIONAL (0x100)
+
+#define WINED3DPTEXTURECAPS_PROJECTED (0x400)
+
+#define WINED3DPTEXTURECAPS_CUBEMAP (0x800)
+
+#define WINED3DPTEXTURECAPS_COLORKEYBLEND (0x1000)
+
+#define WINED3DPTEXTURECAPS_VOLUMEMAP (0x2000)
+
+#define WINED3DPTEXTURECAPS_MIPMAP (0x4000)
+
+#define WINED3DPTEXTURECAPS_MIPVOLUMEMAP (0x8000)
+
+#define WINED3DPTEXTURECAPS_MIPCUBEMAP (0x10000)
+
+#define WINED3DPTEXTURECAPS_CUBEMAP_POW2 (0x20000)
+
+#define WINED3DPTEXTURECAPS_VOLUMEMAP_POW2 (0x40000)
+
+#define WINED3DPTEXTURECAPS_NOPROJECTEDBUMPENV (0x200000)
+
+#define WINED3DPTFILTERCAPS_NEAREST (0x1)
+
+#define WINED3DPTFILTERCAPS_LINEAR (0x2)
+
+#define WINED3DPTFILTERCAPS_MIPNEAREST (0x4)
+
+#define WINED3DPTFILTERCAPS_MIPLINEAR (0x8)
+
+#define WINED3DPTFILTERCAPS_LINEARMIPNEAREST (0x10)
+
+#define WINED3DPTFILTERCAPS_LINEARMIPLINEAR (0x20)
+
+#define WINED3DPTFILTERCAPS_MINFPOINT (0x100)
+
+#define WINED3DPTFILTERCAPS_MINFLINEAR (0x200)
+
+#define WINED3DPTFILTERCAPS_MINFANISOTROPIC (0x400)
+
+#define WINED3DPTFILTERCAPS_MIPFPOINT (0x10000)
+
+#define WINED3DPTFILTERCAPS_MIPFLINEAR (0x20000)
+
+#define WINED3DPTFILTERCAPS_MAGFPOINT (0x1000000)
+
+#define WINED3DPTFILTERCAPS_MAGFLINEAR (0x2000000)
+
+#define WINED3DPTFILTERCAPS_MAGFANISOTROPIC (0x4000000)
+
+#define WINED3DPTFILTERCAPS_MAGFPYRAMIDALQUAD (0x8000000)
+
+#define WINED3DPTFILTERCAPS_MAGFGAUSSIANQUAD (0x10000000)
+
+#define WINED3DVTXPCAPS_TEXGEN (0x1)
+
+#define WINED3DVTXPCAPS_MATERIALSOURCE7 (0x2)
+
+#define WINED3DVTXPCAPS_VERTEXFOG (0x4)
+
+#define WINED3DVTXPCAPS_DIRECTIONALLIGHTS (0x8)
+
+#define WINED3DVTXPCAPS_POSITIONALLIGHTS (0x10)
+
+#define WINED3DVTXPCAPS_LOCALVIEWER (0x20)
+
+#define WINED3DVTXPCAPS_TWEENING (0x40)
+
+#define WINED3DVTXPCAPS_TEXGEN_SPHEREMAP (0x100)
+
+#define WINED3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER (0x200)
+
+#define WINED3DCURSORCAPS_COLOR (0x1)
+
+#define WINED3DCURSORCAPS_LOWRES (0x2)
+
+#define WINED3DDEVCAPS_FLOATTLVERTEX (0x1)
+
+#define WINED3DDEVCAPS_SORTINCREASINGZ (0x2)
+
+#define WINED3DDEVCAPS_SORTDECREASINGZ (0x4)
+
+#define WINED3DDEVCAPS_SORTEXACT (0x8)
+
+#define WINED3DDEVCAPS_EXECUTESYSTEMMEMORY (0x10)
+
+#define WINED3DDEVCAPS_EXECUTEVIDEOMEMORY (0x20)
+
+#define WINED3DDEVCAPS_TLVERTEXSYSTEMMEMORY (0x40)
+
+#define WINED3DDEVCAPS_TLVERTEXVIDEOMEMORY (0x80)
+
+#define WINED3DDEVCAPS_TEXTURESYSTEMMEMORY (0x100)
+
+#define WINED3DDEVCAPS_TEXTUREVIDEOMEMORY (0x200)
+
+#define WINED3DDEVCAPS_DRAWPRIMTLVERTEX (0x400)
+
+#define WINED3DDEVCAPS_CANRENDERAFTERFLIP (0x800)
+
+#define WINED3DDEVCAPS_TEXTURENONLOCALVIDMEM (0x1000)
+
+#define WINED3DDEVCAPS_DRAWPRIMITIVES2 (0x2000)
+
+#define WINED3DDEVCAPS_SEPARATETEXTUREMEMORIES (0x4000)
+
+#define WINED3DDEVCAPS_DRAWPRIMITIVES2EX (0x8000)
+
+#define WINED3DDEVCAPS_HWTRANSFORMANDLIGHT (0x10000)
+
+#define WINED3DDEVCAPS_CANBLTSYSTONONLOCAL (0x20000)
+
+#define WINED3DDEVCAPS_HWRASTERIZATION (0x80000)
+
+#define WINED3DDEVCAPS_PUREDEVICE (0x100000)
+
+#define WINED3DDEVCAPS_QUINTICRTPATCHES (0x200000)
+
+#define WINED3DDEVCAPS_RTPATCHES (0x400000)
+
+#define WINED3DDEVCAPS_RTPATCHHANDLEZERO (0x800000)
+
+#define WINED3DDEVCAPS_NPATCHES (0x1000000)
+
+#define WINEDDBLTFX_ARITHSTRETCHY (0x1)
+
+#define WINEDDBLTFX_MIRRORLEFTRIGHT (0x2)
+
+#define WINEDDBLTFX_MIRRORUPDOWN (0x4)
+
+#define WINEDDBLTFX_NOTEARING (0x8)
+
+#define WINEDDBLTFX_ROTATE180 (0x10)
+
+#define WINEDDBLTFX_ROTATE270 (0x20)
+
+#define WINEDDBLTFX_ROTATE90 (0x40)
+
+#define WINEDDBLTFX_ZBUFFERRANGE (0x80)
+
+#define WINEDDBLTFX_ZBUFFERBASEDEST (0x100)
+
+#define WINEDDBLT_ALPHADEST (0x1)
+
+#define WINEDDBLT_ALPHADESTCONSTOVERRIDE (0x2)
+
+#define WINEDDBLT_ALPHADESTNEG (0x4)
+
+#define WINEDDBLT_ALPHADESTSURFACEOVERRIDE (0x8)
+
+#define WINEDDBLT_ALPHAEDGEBLEND (0x10)
+
+#define WINEDDBLT_ALPHASRC (0x20)
+
+#define WINEDDBLT_ALPHASRCCONSTOVERRIDE (0x40)
+
+#define WINEDDBLT_ALPHASRCNEG (0x80)
+
+#define WINEDDBLT_ALPHASRCSURFACEOVERRIDE (0x100)
+
+#define WINEDDBLT_ASYNC (0x200)
+
+#define WINEDDBLT_COLORFILL (0x400)
+
+#define WINEDDBLT_DDFX (0x800)
+
+#define WINEDDBLT_DDROPS (0x1000)
+
+#define WINEDDBLT_KEYDEST (0x2000)
+
+#define WINEDDBLT_KEYDESTOVERRIDE (0x4000)
+
+#define WINEDDBLT_KEYSRC (0x8000)
+
+#define WINEDDBLT_KEYSRCOVERRIDE (0x10000)
+
+#define WINEDDBLT_ROP (0x20000)
+
+#define WINEDDBLT_ROTATIONANGLE (0x40000)
+
+#define WINEDDBLT_ZBUFFER (0x80000)
+
+#define WINEDDBLT_ZBUFFERDESTCONSTOVERRIDE (0x100000)
+
+#define WINEDDBLT_ZBUFFERDESTOVERRIDE (0x200000)
+
+#define WINEDDBLT_ZBUFFERSRCCONSTOVERRIDE (0x400000)
+
+#define WINEDDBLT_ZBUFFERSRCOVERRIDE (0x800000)
+
+#define WINEDDBLT_WAIT (0x1000000)
+
+#define WINEDDBLT_DEPTHFILL (0x2000000)
+
+#define WINEDDBLT_DONOTWAIT (0x8000000)
+
+#define WINEDDBLTFAST_NOCOLORKEY (0x0)
+
+#define WINEDDBLTFAST_SRCCOLORKEY (0x1)
+
+#define WINEDDBLTFAST_DESTCOLORKEY (0x2)
+
+#define WINEDDBLTFAST_WAIT (0x10)
+
+#define WINEDDBLTFAST_DONOTWAIT (0x20)
+
+#define WINEDDSD_CAPS (0x1)
+
+#define WINEDDSD_HEIGHT (0x2)
+
+#define WINEDDSD_WIDTH (0x4)
+
+#define WINEDDSD_PITCH (0x8)
+
+#define WINEDDSD_BACKBUFFERCOUNT (0x20)
+
+#define WINEDDSD_ZBUFFERBITDEPTH (0x40)
+
+#define WINEDDSD_ALPHABITDEPTH (0x80)
+
+#define WINEDDSD_LPSURFACE (0x800)
+
+#define WINEDDSD_PIXELFORMAT (0x1000)
+
+#define WINEDDSD_CKDESTOVERLAY (0x2000)
+
+#define WINEDDSD_CKDESTBLT (0x4000)
+
+#define WINEDDSD_CKSRCOVERLAY (0x8000)
+
+#define WINEDDSD_CKSRCBLT (0x10000)
+
+#define WINEDDSD_MIPMAPCOUNT (0x20000)
+
+#define WINEDDSD_REFRESHRATE (0x40000)
+
+#define WINEDDSD_LINEARSIZE (0x80000)
+
+#define WINEDDSD_TEXTURESTAGE (0x100000)
+
+#define WINEDDSD_FVF (0x200000)
+
+#define WINEDDSD_SRCVBHANDLE (0x400000)
+
+#define WINEDDSD_ALL (0x7ff9ee)
+
+#define WINEDDCKEY_COLORSPACE (0x1)
+
+#define WINEDDCKEY_DESTBLT (0x2)
+
+#define WINEDDCKEY_DESTOVERLAY (0x4)
+
+#define WINEDDCKEY_SRCBLT (0x8)
+
+#define WINEDDCKEY_SRCOVERLAY (0x10)
+
+#define WINEDDGBS_CANBLT (0x1)
+
+#define WINEDDGBS_ISBLTDONE (0x2)
+
+#define WINEDDGFS_CANFLIP (0x1)
+
+#define WINEDDGFS_ISFLIPDONE (0x2)
+
+#define WINEDDFLIP_WAIT (0x1)
+
+#define WINEDDFLIP_EVEN (0x2)
+
+#define WINEDDFLIP_ODD (0x4)
+
+#define WINEDDFLIP_NOVSYNC (0x8)
+
+#define WINEDDFLIP_STEREO (0x10)
+
+#define WINEDDFLIP_DONOTWAIT (0x20)
+
+#define WINEDDFLIP_INTERVAL2 (0x2000000)
+
+#define WINEDDFLIP_INTERVAL3 (0x3000000)
+
+#define WINEDDFLIP_INTERVAL4 (0x4000000)
+
+#define WINEDDOVER_ALPHADEST (0x1)
+
+#define WINEDDOVER_ALPHADESTCONSTOVERRIDE (0x2)
+
+#define WINEDDOVER_ALPHADESTNEG (0x4)
+
+#define WINEDDOVER_ALPHADESTSURFACEOVERRIDE (0x8)
+
+#define WINEDDOVER_ALPHAEDGEBLEND (0x10)
+
+#define WINEDDOVER_ALPHASRC (0x20)
+
+#define WINEDDOVER_ALPHASRCCONSTOVERRIDE (0x40)
+
+#define WINEDDOVER_ALPHASRCNEG (0x80)
+
+#define WINEDDOVER_ALPHASRCSURFACEOVERRIDE (0x100)
+
+#define WINEDDOVER_HIDE (0x200)
+
+#define WINEDDOVER_KEYDEST (0x400)
+
+#define WINEDDOVER_KEYDESTOVERRIDE (0x800)
+
+#define WINEDDOVER_KEYSRC (0x1000)
+
+#define WINEDDOVER_KEYSRCOVERRIDE (0x2000)
+
+#define WINEDDOVER_SHOW (0x4000)
+
+#define WINEDDOVER_ADDDIRTYRECT (0x8000)
+
+#define WINEDDOVER_REFRESHDIRTYRECTS (0x10000)
+
+#define WINEDDOVER_REFRESHALL (0x20000)
+
+#define WINEDDOVER_DDFX (0x80000)
+
+#define WINEDDOVER_AUTOFLIP (0x100000)
+
+#define WINEDDOVER_BOB (0x200000)
+
+#define WINEDDOVER_OVERRIDEBOBWEAVE (0x400000)
+
+#define WINEDDOVER_INTERLEAVED (0x800000)
+
+#define WINEDDSCAPS_RESERVED1 (0x1)
+
+#define WINEDDSCAPS_ALPHA (0x2)
+
+#define WINEDDSCAPS_BACKBUFFER (0x4)
+
+#define WINEDDSCAPS_COMPLEX (0x8)
+
+#define WINEDDSCAPS_FLIP (0x10)
+
+#define WINEDDSCAPS_FRONTBUFFER (0x20)
+
+#define WINEDDSCAPS_OFFSCREENPLAIN (0x40)
+
+#define WINEDDSCAPS_OVERLAY (0x80)
+
+#define WINEDDSCAPS_PALETTE (0x100)
+
+#define WINEDDSCAPS_PRIMARYSURFACE (0x200)
+
+#define WINEDDSCAPS_PRIMARYSURFACELEFT (0x400)
+
+#define WINEDDSCAPS_SYSTEMMEMORY (0x800)
+
+#define WINEDDSCAPS_TEXTURE (0x1000)
+
+#define WINEDDSCAPS_3DDEVICE (0x2000)
+
+#define WINEDDSCAPS_VIDEOMEMORY (0x4000)
+
+#define WINEDDSCAPS_VISIBLE (0x8000)
+
+#define WINEDDSCAPS_WRITEONLY (0x10000)
+
+#define WINEDDSCAPS_ZBUFFER (0x20000)
+
+#define WINEDDSCAPS_OWNDC (0x40000)
+
+#define WINEDDSCAPS_LIVEVIDEO (0x80000)
+
+#define WINEDDSCAPS_HWCODEC (0x100000)
+
+#define WINEDDSCAPS_MODEX (0x200000)
+
+#define WINEDDSCAPS_MIPMAP (0x400000)
+
+#define WINEDDSCAPS_RESERVED2 (0x800000)
+
+#define WINEDDSCAPS_ALLOCONLOAD (0x4000000)
+
+#define WINEDDSCAPS_VIDEOPORT (0x8000000)
+
+#define WINEDDSCAPS_LOCALVIDMEM (0x10000000)
+
+#define WINEDDSCAPS_NONLOCALVIDMEM (0x20000000)
+
+#define WINEDDSCAPS_STANDARDVGAMODE (0x40000000)
+
+#define WINEDDSCAPS_OPTIMIZED (0x80000000)
+
+#define WINEDDCKEYCAPS_DESTBLT (0x1)
+
+#define WINEDDCKEYCAPS_DESTBLTCLRSPACE (0x2)
+
+#define WINEDDCKEYCAPS_DESTBLTCLRSPACEYUV (0x4)
+
+#define WINEDDCKEYCAPS_DESTBLTYUV (0x8)
+
+#define WINEDDCKEYCAPS_DESTOVERLAY (0x10)
+
+#define WINEDDCKEYCAPS_DESTOVERLAYCLRSPACE (0x20)
+
+#define WINEDDCKEYCAPS_DESTOVERLAYCLRSPACEYUV (0x40)
+
+#define WINEDDCKEYCAPS_DESTOVERLAYONEACTIVE (0x80)
+
+#define WINEDDCKEYCAPS_DESTOVERLAYYUV (0x100)
+
+#define WINEDDCKEYCAPS_SRCBLT (0x200)
+
+#define WINEDDCKEYCAPS_SRCBLTCLRSPACE (0x400)
+
+#define WINEDDCKEYCAPS_SRCBLTCLRSPACEYUV (0x800)
+
+#define WINEDDCKEYCAPS_SRCBLTYUV (0x1000)
+
+#define WINEDDCKEYCAPS_SRCOVERLAY (0x2000)
+
+#define WINEDDCKEYCAPS_SRCOVERLAYCLRSPACE (0x4000)
+
+#define WINEDDCKEYCAPS_SRCOVERLAYCLRSPACEYUV (0x8000)
+
+#define WINEDDCKEYCAPS_SRCOVERLAYONEACTIVE (0x10000)
+
+#define WINEDDCKEYCAPS_SRCOVERLAYYUV (0x20000)
+
+#define WINEDDCKEYCAPS_NOCOSTOVERLAY (0x40000)
+
+#define WINEDDFXCAPS_BLTALPHA (0x1)
+
+#define WINEDDFXCAPS_OVERLAYALPHA (0x4)
+
+#define WINEDDFXCAPS_BLTARITHSTRETCHYN (0x10)
+
+#define WINEDDFXCAPS_BLTARITHSTRETCHY (0x20)
+
+#define WINEDDFXCAPS_BLTMIRRORLEFTRIGHT (0x40)
+
+#define WINEDDFXCAPS_BLTMIRRORUPDOWN (0x80)
+
+#define WINEDDFXCAPS_BLTROTATION (0x100)
+
+#define WINEDDFXCAPS_BLTROTATION90 (0x200)
+
+#define WINEDDFXCAPS_BLTSHRINKX (0x400)
+
+#define WINEDDFXCAPS_BLTSHRINKXN (0x800)
+
+#define WINEDDFXCAPS_BLTSHRINKY (0x1000)
+
+#define WINEDDFXCAPS_BLTSHRINKYN (0x2000)
+
+#define WINEDDFXCAPS_BLTSTRETCHX (0x4000)
+
+#define WINEDDFXCAPS_BLTSTRETCHXN (0x8000)
+
+#define WINEDDFXCAPS_BLTSTRETCHY (0x10000)
+
+#define WINEDDFXCAPS_BLTSTRETCHYN (0x20000)
+
+#define WINEDDFXCAPS_OVERLAYARITHSTRETCHY (0x40000)
+
+#define WINEDDFXCAPS_OVERLAYARITHSTRETCHYN (0x8)
+
+#define WINEDDFXCAPS_OVERLAYSHRINKX (0x80000)
+
+#define WINEDDFXCAPS_OVERLAYSHRINKXN (0x100000)
+
+#define WINEDDFXCAPS_OVERLAYSHRINKY (0x200000)
+
+#define WINEDDFXCAPS_OVERLAYSHRINKYN (0x400000)
+
+#define WINEDDFXCAPS_OVERLAYSTRETCHX (0x800000)
+
+#define WINEDDFXCAPS_OVERLAYSTRETCHXN (0x1000000)
+
+#define WINEDDFXCAPS_OVERLAYSTRETCHY (0x2000000)
+
+#define WINEDDFXCAPS_OVERLAYSTRETCHYN (0x4000000)
+
+#define WINEDDFXCAPS_OVERLAYMIRRORLEFTRIGHT (0x8000000)
+
+#define WINEDDFXCAPS_OVERLAYMIRRORUPDOWN (0x10000000)
+
+#define WINEDDCAPS_3D (0x1)
+
+#define WINEDDCAPS_ALIGNBOUNDARYDEST (0x2)
+
+#define WINEDDCAPS_ALIGNSIZEDEST (0x4)
+
+#define WINEDDCAPS_ALIGNBOUNDARYSRC (0x8)
+
+#define WINEDDCAPS_ALIGNSIZESRC (0x10)
+
+#define WINEDDCAPS_ALIGNSTRIDE (0x20)
+
+#define WINEDDCAPS_BLT (0x40)
+
+#define WINEDDCAPS_BLTQUEUE (0x80)
+
+#define WINEDDCAPS_BLTFOURCC (0x100)
+
+#define WINEDDCAPS_BLTSTRETCH (0x200)
+
+#define WINEDDCAPS_GDI (0x400)
+
+#define WINEDDCAPS_OVERLAY (0x800)
+
+#define WINEDDCAPS_OVERLAYCANTCLIP (0x1000)
+
+#define WINEDDCAPS_OVERLAYFOURCC (0x2000)
+
+#define WINEDDCAPS_OVERLAYSTRETCH (0x4000)
+
+#define WINEDDCAPS_PALETTE (0x8000)
+
+#define WINEDDCAPS_PALETTEVSYNC (0x10000)
+
+#define WINEDDCAPS_READSCANLINE (0x20000)
+
+#define WINEDDCAPS_STEREOVIEW (0x40000)
+
+#define WINEDDCAPS_VBI (0x80000)
+
+#define WINEDDCAPS_ZBLTS (0x100000)
+
+#define WINEDDCAPS_ZOVERLAYS (0x200000)
+
+#define WINEDDCAPS_COLORKEY (0x400000)
+
+#define WINEDDCAPS_ALPHA (0x800000)
+
+#define WINEDDCAPS_COLORKEYHWASSIST (0x1000000)
+
+#define WINEDDCAPS_NOHARDWARE (0x2000000)
+
+#define WINEDDCAPS_BLTCOLORFILL (0x4000000)
+
+#define WINEDDCAPS_BANKSWITCHED (0x8000000)
+
+#define WINEDDCAPS_BLTDEPTHFILL (0x10000000)
+
+#define WINEDDCAPS_CANCLIP (0x20000000)
+
+#define WINEDDCAPS_CANCLIPSTRETCHED (0x40000000)
+
+#define WINEDDCAPS_CANBLTSYSMEM (0x80000000)
+
+#define WINEDDCAPS2_CERTIFIED (0x1)
+
+#define WINEDDCAPS2_NO2DDURING3DSCENE (0x2)
+
+#define WINEDDCAPS2_VIDEOPORT (0x4)
+
+#define WINEDDCAPS2_AUTOFLIPOVERLAY (0x8)
+
+#define WINEDDCAPS2_CANBOBINTERLEAVED (0x10)
+
+#define WINEDDCAPS2_CANBOBNONINTERLEAVED (0x20)
+
+#define WINEDDCAPS2_COLORCONTROLOVERLAY (0x40)
+
+#define WINEDDCAPS2_COLORCONTROLPRIMARY (0x80)
+
+#define WINEDDCAPS2_CANDROPZ16BIT (0x100)
+
+#define WINEDDCAPS2_NONLOCALVIDMEM (0x200)
+
+#define WINEDDCAPS2_NONLOCALVIDMEMCAPS (0x400)
+
+#define WINEDDCAPS2_NOPAGELOCKREQUIRED (0x800)
+
+#define WINEDDCAPS2_WIDESURFACES (0x1000)
+
+#define WINEDDCAPS2_CANFLIPODDEVEN (0x2000)
+
+#define WINEDDCAPS2_CANBOBHARDWARE (0x4000)
+
+#define WINEDDCAPS2_COPYFOURCC (0x8000)
+
+#define WINEDDCAPS2_PRIMARYGAMMA (0x20000)
+
+#define WINEDDCAPS2_CANRENDERWINDOWED (0x80000)
+
+#define WINEDDCAPS2_CANCALIBRATEGAMMA (0x100000)
+
+#define WINEDDCAPS2_FLIPINTERVAL (0x200000)
+
+#define WINEDDCAPS2_FLIPNOVSYNC (0x400000)
+
+#define WINEDDCAPS2_CANMANAGETEXTURE (0x800000)
+
+#define WINEDDCAPS2_TEXMANINNONLOCALVIDMEM (0x1000000)
+
+#define WINEDDCAPS2_STEREO (0x2000000)
+
+#define WINEDDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL (0x4000000)
+
+#define WINEDDPCAPS_4BIT (0x1)
+
+#define WINEDDPCAPS_8BITENTRIES (0x2)
+
+#define WINEDDPCAPS_8BIT (0x4)
+
+#define WINEDDPCAPS_INITIALIZE (0x8)
+
+#define WINEDDPCAPS_PRIMARYSURFACE (0x10)
+
+#define WINEDDPCAPS_PRIMARYSURFACELEFT (0x20)
+
+#define WINEDDPCAPS_ALLOW256 (0x40)
+
+#define WINEDDPCAPS_VSYNC (0x80)
+
+#define WINEDDPCAPS_1BIT (0x100)
+
+#define WINEDDPCAPS_2BIT (0x200)
+
+#define WINEDDPCAPS_ALPHA (0x400)
+
+typedef struct _WINED3DDISPLAYMODE {
+    UINT Width;
+    UINT Height;
+    UINT RefreshRate;
+    WINED3DFORMAT Format;
+} WINED3DDISPLAYMODE;
+typedef struct _WINED3DCOLORVALUE {
+    float r;
+    float g;
+    float b;
+    float a;
+} WINED3DCOLORVALUE;
+typedef struct _WINED3DVECTOR {
+    float x;
+    float y;
+    float z;
+} WINED3DVECTOR;
+typedef struct _WINED3DMATRIX {
+    union {
+        struct {
+            float _11;
+            float _12;
+            float _13;
+            float _14;
+            float _21;
+            float _22;
+            float _23;
+            float _24;
+            float _31;
+            float _32;
+            float _33;
+            float _34;
+            float _41;
+            float _42;
+            float _43;
+            float _44;
+        } DUMMYSTRUCTNAME;
+        float m[4][4];
+    } DUMMYUNIONNAME;
+} WINED3DMATRIX;
+typedef struct _WINED3DRECT {
+    LONG x1;
+    LONG y1;
+    LONG x2;
+    LONG y2;
+} WINED3DRECT;
+typedef struct _WINED3DLIGHT {
+    WINED3DLIGHTTYPE Type;
+    WINED3DCOLORVALUE Diffuse;
+    WINED3DCOLORVALUE Specular;
+    WINED3DCOLORVALUE Ambient;
+    WINED3DVECTOR Position;
+    WINED3DVECTOR Direction;
+    float Range;
+    float Falloff;
+    float Attenuation0;
+    float Attenuation1;
+    float Attenuation2;
+    float Theta;
+    float Phi;
+} WINED3DLIGHT;
+typedef struct _WINED3DMATERIAL {
+    WINED3DCOLORVALUE Diffuse;
+    WINED3DCOLORVALUE Ambient;
+    WINED3DCOLORVALUE Specular;
+    WINED3DCOLORVALUE Emissive;
+    float Power;
+} WINED3DMATERIAL;
+typedef struct _WINED3DVIEWPORT {
+    DWORD X;
+    DWORD Y;
+    DWORD Width;
+    DWORD Height;
+    float MinZ;
+    float MaxZ;
+} WINED3DVIEWPORT;
+typedef struct _WINED3DGAMMARAMP {
+    WORD red[256];
+    WORD green[256];
+    WORD blue[256];
+} WINED3DGAMMARAMP;
+typedef struct _WINED3DLINEPATTERN {
+    WORD wRepeatFactor;
+    WORD wLinePattern;
+} WINED3DLINEPATTERN;
+typedef struct _WINEDD3DRECTPATCH_INFO {
+    UINT StartVertexOffsetWidth;
+    UINT StartVertexOffsetHeight;
+    UINT Width;
+    UINT Height;
+    UINT Stride;
+    WINED3DBASISTYPE Basis;
+    WINED3DDEGREETYPE Degree;
+} WINED3DRECTPATCH_INFO;
+typedef struct _WINED3DTRIPATCH_INFO {
+    UINT StartVertexOffset;
+    UINT NumVertices;
+    WINED3DBASISTYPE Basis;
+    WINED3DDEGREETYPE Degree;
+} WINED3DTRIPATCH_INFO;
+typedef struct _WINED3DADAPTER_IDENTIFIER {
+    char *Driver;
+    char *Description;
+    char *DeviceName;
+    LARGE_INTEGER *DriverVersion;
+    DWORD *VendorId;
+    DWORD *DeviceId;
+    DWORD *SubSysId;
+    DWORD *Revision;
+    GUID *DeviceIdentifier;
+    DWORD *WHQLLevel;
+} WINED3DADAPTER_IDENTIFIER;
+typedef struct _WINED3DPRESENT_PARAMETERS {
+    UINT BackBufferWidth;
+    UINT BackBufferHeight;
+    WINED3DFORMAT BackBufferFormat;
+    UINT BackBufferCount;
+    WINED3DMULTISAMPLE_TYPE MultiSampleType;
+    DWORD MultiSampleQuality;
+    WINED3DSWAPEFFECT SwapEffect;
+    HWND hDeviceWindow;
+    BOOL Windowed;
+    BOOL EnableAutoDepthStencil;
+    WINED3DFORMAT AutoDepthStencilFormat;
+    DWORD Flags;
+    UINT FullScreen_RefreshRateInHz;
+    UINT PresentationInterval;
+    BOOL AutoRestoreDisplayMode;
+} WINED3DPRESENT_PARAMETERS;
+typedef struct _WINED3DSURFACE_DESC {
+    WINED3DFORMAT *Format;
+    WINED3DRESOURCETYPE *Type;
+    DWORD *Usage;
+    WINED3DPOOL *Pool;
+    UINT *Size;
+    WINED3DMULTISAMPLE_TYPE *MultiSampleType;
+    DWORD *MultiSampleQuality;
+    UINT *Width;
+    UINT *Height;
+} WINED3DSURFACE_DESC;
+typedef struct _WINED3DVOLUME_DESC {
+    WINED3DFORMAT *Format;
+    WINED3DRESOURCETYPE *Type;
+    DWORD *Usage;
+    WINED3DPOOL *Pool;
+    UINT *Size;
+    UINT *Width;
+    UINT *Height;
+    UINT *Depth;
+} WINED3DVOLUME_DESC;
+typedef struct _WINED3DCLIPSTATUS {
+    DWORD ClipUnion;
+    DWORD ClipIntersection;
+} WINED3DCLIPSTATUS;
+typedef struct _WINED3DVERTEXELEMENT {
+    WORD Stream;
+    WORD Offset;
+    BYTE Type;
+    BYTE Method;
+    BYTE Usage;
+    BYTE UsageIndex;
+    int Reg;
+} WINED3DVERTEXELEMENT;
+typedef struct _WINED3DVERTEXELEMENT *LPWINED3DVERTEXELEMENT;
+typedef struct _WINED3DDEVICE_CREATION_PARAMETERS {
+    UINT AdapterOrdinal;
+    WINED3DDEVTYPE DeviceType;
+    HWND hFocusWindow;
+    DWORD BehaviorFlags;
+} WINED3DDEVICE_CREATION_PARAMETERS;
+typedef struct _WINED3DDEVINFO_BANDWIDTHTIMINGS {
+    float MaxBandwidthUtilized;
+    float FrontEndUploadMemoryUtilizedPercent;
+    float VertexRateUtilizedPercent;
+    float TriangleSetupRateUtilizedPercent;
+    float FillRateUtilizedPercent;
+} WINED3DDEVINFO_BANDWIDTHTIMINGS;
+typedef struct _WINED3DDEVINFO_CACHEUTILIZATION {
+    float TextureCacheHitRate;
+    float PostTransformVertexCacheHitRate;
+} WINED3DDEVINFO_CACHEUTILIZATION;
+typedef struct _WINED3DDEVINFO_INTERFACETIMINGS {
+    float WaitingForGPUToUseApplicationResourceTimePercent;
+    float WaitingForGPUToAcceptMoreCommandsTimePercent;
+    float WaitingForGPUToStayWithinLatencyTimePercent;
+    float WaitingForGPUExclusiveResourceTimePercent;
+    float WaitingForGPUOtherTimePercent;
+} WINED3DDEVINFO_INTERFACETIMINGS;
+typedef struct _WINED3DDEVINFO_PIPELINETIMINGS {
+    float VertexProcessingTimePercent;
+    float PixelProcessingTimePercent;
+    float OtherGPUProcessingTimePercent;
+    float GPUIdleTimePercent;
+} WINED3DDEVINFO_PIPELINETIMINGS;
+typedef struct _WINED3DDEVINFO_STAGETIMINGS {
+    float MemoryProcessingPercent;
+    float ComputationProcessingPercent;
+} WINED3DDEVINFO_STAGETIMINGS;
+typedef struct _WINED3DRASTER_STATUS {
+    BOOL InVBlank;
+    UINT ScanLine;
+} WINED3DRASTER_STATUS;
+typedef struct WINED3DRESOURCESTATS {
+    BOOL bThrashing;
+    DWORD ApproxBytesDownloaded;
+    DWORD NumEvicts;
+    DWORD NumVidCreates;
+    DWORD LastPri;
+    DWORD NumUsed;
+    DWORD NumUsedInVidMem;
+    DWORD WorkingSet;
+    DWORD WorkingSetBytes;
+    DWORD TotalManaged;
+    DWORD TotalBytes;
+} WINED3DRESOURCESTATS;
+typedef struct _WINED3DDEVINFO_RESOURCEMANAGER {
+    WINED3DRESOURCESTATS stats[8];
+} WINED3DDEVINFO_RESOURCEMANAGER;
+typedef struct _WINED3DDEVINFO_VERTEXSTATS {
+    DWORD NumRenderedTriangles;
+    DWORD NumExtraClippingTriangles;
+} WINED3DDEVINFO_VERTEXSTATS;
+typedef struct _WINED3DLOCKED_RECT {
+    INT Pitch;
+    void *pBits;
+} WINED3DLOCKED_RECT;
+typedef struct _WINED3DLOCKED_BOX {
+    INT RowPitch;
+    INT SlicePitch;
+    void *pBits;
+} WINED3DLOCKED_BOX;
+typedef struct _WINED3DBOX {
+    UINT Left;
+    UINT Top;
+    UINT Right;
+    UINT Bottom;
+    UINT Front;
+    UINT Back;
+} WINED3DBOX;
+typedef struct WINED3DDEVINFO_VCACHE {
+    DWORD Pattern;
+    DWORD OptMethod;
+    DWORD CacheSize;
+    DWORD MagicNumber;
+} WINED3DDEVINFO_VCACHE;
+typedef struct _WINED3DVERTEXBUFFER_DESC {
+    WINED3DFORMAT Format;
+    WINED3DRESOURCETYPE Type;
+    DWORD Usage;
+    WINED3DPOOL Pool;
+    UINT Size;
+    DWORD FVF;
+} WINED3DVERTEXBUFFER_DESC;
+typedef struct _WINED3DINDEXBUFFER_DESC {
+    WINED3DFORMAT Format;
+    WINED3DRESOURCETYPE Type;
+    DWORD Usage;
+    WINED3DPOOL Pool;
+    UINT Size;
+} WINED3DINDEXBUFFER_DESC;
+typedef struct glDescriptor {
+    UINT textureName;
+    int level;
+    int target;
+    int glFormat;
+    int glFormatInternal;
+    int glType;
+} glDescriptor;
+typedef struct WineDirect3DStridedData {
+    const BYTE *lpData;
+    DWORD dwStride;
+    DWORD dwType;
+    int VBO;
+    UINT streamNo;
+} WineDirect3DStridedData;
+typedef struct WineDirect3DVertexStridedData {
+    union {
+        struct {
+            WineDirect3DStridedData position;
+            WineDirect3DStridedData blendWeights;
+            WineDirect3DStridedData blendMatrixIndices;
+            WineDirect3DStridedData normal;
+            WineDirect3DStridedData pSize;
+            WineDirect3DStridedData diffuse;
+            WineDirect3DStridedData specular;
+            WineDirect3DStridedData texCoords[8];
+            WineDirect3DStridedData position2;
+            WineDirect3DStridedData normal2;
+            WineDirect3DStridedData tangent;
+            WineDirect3DStridedData binormal;
+            WineDirect3DStridedData tessFactor;
+            WineDirect3DStridedData fog;
+            WineDirect3DStridedData depth;
+            WineDirect3DStridedData sample;
+            BOOL position_transformed;
+        } s;
+        WineDirect3DStridedData input[16];
+    } u;
+} WineDirect3DVertexStridedData;
+typedef struct _WINED3DVSHADERCAPS2_0 {
+    DWORD Caps;
+    INT DynamicFlowControlDepth;
+    INT NumTemps;
+    INT StaticFlowControlDepth;
+} WINED3DVSHADERCAPS2_0;
+typedef struct _WINED3DPSHADERCAPS2_0 {
+    DWORD Caps;
+    INT DynamicFlowControlDepth;
+    INT NumTemps;
+    INT StaticFlowControlDepth;
+    INT NumInstructionSlots;
+} WINED3DPSHADERCAPS2_0;
+typedef struct _WINEDDCAPS {
+    DWORD Caps;
+    DWORD Caps2;
+    DWORD CKeyCaps;
+    DWORD FXCaps;
+    DWORD FXAlphaCaps;
+    DWORD PalCaps;
+    DWORD SVCaps;
+    DWORD SVBCaps;
+    DWORD SVBCKeyCaps;
+    DWORD SVBFXCaps;
+    DWORD VSBCaps;
+    DWORD VSBCKeyCaps;
+    DWORD VSBFXCaps;
+    DWORD SSBCaps;
+    DWORD SSBCKeyCaps;
+    DWORD SSBFXCaps;
+    DWORD ddsCaps;
+    DWORD StrideAlign;
+} WINEDDCAPS;
+typedef struct _WINED3DCAPS {
+    WINED3DDEVTYPE DeviceType;
+    UINT AdapterOrdinal;
+    DWORD Caps;
+    DWORD Caps2;
+    DWORD Caps3;
+    DWORD PresentationIntervals;
+    DWORD CursorCaps;
+    DWORD DevCaps;
+    DWORD PrimitiveMiscCaps;
+    DWORD RasterCaps;
+    DWORD ZCmpCaps;
+    DWORD SrcBlendCaps;
+    DWORD DestBlendCaps;
+    DWORD AlphaCmpCaps;
+    DWORD ShadeCaps;
+    DWORD TextureCaps;
+    DWORD TextureFilterCaps;
+    DWORD CubeTextureFilterCaps;
+    DWORD VolumeTextureFilterCaps;
+    DWORD TextureAddressCaps;
+    DWORD VolumeTextureAddressCaps;
+    DWORD LineCaps;
+    DWORD MaxTextureWidth;
+    DWORD MaxTextureHeight;
+    DWORD MaxVolumeExtent;
+    DWORD MaxTextureRepeat;
+    DWORD MaxTextureAspectRatio;
+    DWORD MaxAnisotropy;
+    float MaxVertexW;
+    float GuardBandLeft;
+    float GuardBandTop;
+    float GuardBandRight;
+    float GuardBandBottom;
+    float ExtentsAdjust;
+    DWORD StencilCaps;
+    DWORD FVFCaps;
+    DWORD TextureOpCaps;
+    DWORD MaxTextureBlendStages;
+    DWORD MaxSimultaneousTextures;
+    DWORD VertexProcessingCaps;
+    DWORD MaxActiveLights;
+    DWORD MaxUserClipPlanes;
+    DWORD MaxVertexBlendMatrices;
+    DWORD MaxVertexBlendMatrixIndex;
+    float MaxPointSize;
+    DWORD MaxPrimitiveCount;
+    DWORD MaxVertexIndex;
+    DWORD MaxStreams;
+    DWORD MaxStreamStride;
+    DWORD VertexShaderVersion;
+    DWORD MaxVertexShaderConst;
+    DWORD PixelShaderVersion;
+    float PixelShader1xMaxValue;
+    DWORD DevCaps2;
+    float MaxNpatchTessellationLevel;
+    DWORD Reserved5;
+    UINT MasterAdapterOrdinal;
+    UINT AdapterOrdinalInGroup;
+    UINT NumberOfAdaptersInGroup;
+    DWORD DeclTypes;
+    DWORD NumSimultaneousRTs;
+    DWORD StretchRectFilterCaps;
+    WINED3DVSHADERCAPS2_0 VS20Caps;
+    WINED3DPSHADERCAPS2_0 PS20Caps;
+    DWORD VertexTextureFilterCaps;
+    DWORD MaxVShaderInstructionsExecuted;
+    DWORD MaxPShaderInstructionsExecuted;
+    DWORD MaxVertexShader30InstructionSlots;
+    DWORD MaxPixelShader30InstructionSlots;
+    DWORD Reserved2;
+    DWORD Reserved3;
+    WINEDDCAPS DirectDrawCaps;
+} WINED3DCAPS;
+typedef struct _WINEDDCOLORKEY {
+    DWORD dwColorSpaceLowValue;
+    DWORD dwColorSpaceHighValue;
+} WINEDDCOLORKEY;
+typedef struct _WINEDDCOLORKEY *LPWINEDDCOLORKEY;
+typedef struct _WINEDDBLTFX {
+    DWORD dwSize;
+    DWORD dwDDFX;
+    DWORD dwROP;
+    DWORD dwDDROP;
+    DWORD dwRotationAngle;
+    DWORD dwZBufferOpCode;
+    DWORD dwZBufferLow;
+    DWORD dwZBufferHigh;
+    DWORD dwZBufferBaseDest;
+    DWORD dwZDestConstBitDepth;
+    union {
+        DWORD dwZDestConst;
+        struct IWineD3DSurface *lpDDSZBufferDest;
+    } DUMMYUNIONNAME1;
+    DWORD dwZSrcConstBitDepth;
+    union {
+        DWORD dwZSrcConst;
+        struct IWineD3DSurface *lpDDSZBufferSrc;
+    } DUMMYUNIONNAME2;
+    DWORD dwAlphaEdgeBlendBitDepth;
+    DWORD dwAlphaEdgeBlend;
+    DWORD dwReserved;
+    DWORD dwAlphaDestConstBitDepth;
+    union {
+        DWORD dwAlphaDestConst;
+        struct IWineD3DSurface *lpDDSAlphaDest;
+    } DUMMYUNIONNAME3;
+    DWORD dwAlphaSrcConstBitDepth;
+    union {
+        DWORD dwAlphaSrcConst;
+        struct IWineD3DSurface *lpDDSAlphaSrc;
+    } DUMMYUNIONNAME4;
+    union {
+        DWORD dwFillColor;
+        DWORD dwFillDepth;
+        DWORD dwFillPixel;
+        struct IWineD3DSurface *lpDDSPattern;
+    } DUMMYUNIONNAME5;
+    WINEDDCOLORKEY ddckDestColorkey;
+    WINEDDCOLORKEY ddckSrcColorkey;
+} WINEDDBLTFX;
+typedef struct _WINEDDBLTFX *LPWINEDDBLTFX;
+typedef struct _WINEDDOVERLAYFX {
+    DWORD dwSize;
+    DWORD dwAlphaEdgeBlendBitDepth;
+    DWORD dwAlphaEdgeBlend;
+    DWORD dwReserved;
+    DWORD dwAlphaDestConstBitDepth;
+    union {
+        DWORD dwAlphaDestConst;
+        struct IWineD3DSurface *lpDDSAlphaDest;
+    } DUMMYUNIONNAME1;
+    DWORD dwAlphaSrcConstBitDepth;
+    union {
+        DWORD dwAlphaSrcConst;
+        struct IWineD3DSurface *lpDDSAlphaSrc;
+    } DUMMYUNIONNAME2;
+    WINEDDCOLORKEY dckDestColorkey;
+    WINEDDCOLORKEY dckSrcColorkey;
+    DWORD dwDDFX;
+    DWORD dwFlags;
+} WINEDDOVERLAYFX;
+#ifndef __IWineD3DResource_FWD_DEFINED__
+#define __IWineD3DResource_FWD_DEFINED__
+typedef interface IWineD3DResource IWineD3DResource;
+#endif
+
+#ifndef __IWineD3DSurface_FWD_DEFINED__
+#define __IWineD3DSurface_FWD_DEFINED__
+typedef interface IWineD3DSurface IWineD3DSurface;
+#endif
+
+#ifndef __IWineD3DVolume_FWD_DEFINED__
+#define __IWineD3DVolume_FWD_DEFINED__
+typedef interface IWineD3DVolume IWineD3DVolume;
+#endif
+
+#ifndef __IWineD3DSwapChain_FWD_DEFINED__
+#define __IWineD3DSwapChain_FWD_DEFINED__
+typedef interface IWineD3DSwapChain IWineD3DSwapChain;
+#endif
+
+#ifndef __IWineD3DDevice_FWD_DEFINED__
+#define __IWineD3DDevice_FWD_DEFINED__
+typedef interface IWineD3DDevice IWineD3DDevice;
+#endif
+
+typedef HRESULT (STDMETHODCALLTYPE *D3DCB_CREATESURFACEFN)(IUnknown *pDevice,IUnknown *pSuperior,UINT Width,UINT Height,WINED3DFORMAT Format,DWORD Usage,WINED3DPOOL Pool,UINT Level,WINED3DCUBEMAP_FACES Face,IWineD3DSurface **ppSurface,HANDLE *pSharedHandle);
+typedef HRESULT (STDMETHODCALLTYPE *D3DCB_CREATERENDERTARGETFN)(IUnknown *pDevice,IUnknown *pSuperior,UINT Width,UINT Height,WINED3DFORMAT Format,WINED3DMULTISAMPLE_TYPE MultiSample,DWORD MultisampleQuality,BOOL Lockable,IWineD3DSurface **ppSurface,HANDLE *pSharedHandle);
+typedef HRESULT (STDMETHODCALLTYPE *D3DCB_CREATEDEPTHSTENCILSURFACEFN)(IUnknown *pDevice,IUnknown *pSuperior,UINT Width,UINT Height,WINED3DFORMAT Format,WINED3DMULTISAMPLE_TYPE MultiSample,DWORD MultisampleQuality,BOOL Discard,IWineD3DSurface **ppSurface,HANDLE *pSharedHandle);
+typedef ULONG (STDMETHODCALLTYPE *D3DCB_DESTROYSURFACEFN)(IWineD3DSurface *pSurface);
+typedef HRESULT (STDMETHODCALLTYPE *D3DCB_CREATEVOLUMEFN)(IUnknown *pDevice,IUnknown *pSuperior,UINT Width,UINT Height,UINT Depth,WINED3DFORMAT Format,WINED3DPOOL Pool,DWORD Usage,IWineD3DVolume **ppVolume,HANDLE *pSharedHandle);
+typedef ULONG (STDMETHODCALLTYPE *D3DCB_DESTROYVOLUMEFN)(IWineD3DVolume *pVolume);
+typedef HRESULT (STDMETHODCALLTYPE *D3DCB_CREATESWAPCHAIN)(IUnknown *pDevice,WINED3DPRESENT_PARAMETERS *pPresentationParameters,IWineD3DSwapChain **pSwapChain);
+typedef ULONG (STDMETHODCALLTYPE *D3DCB_DESTROYSWAPCHAINFN)(IWineD3DSwapChain *pSwapChain);
+typedef HRESULT (STDMETHODCALLTYPE *D3DCB_ENUMRESOURCES)(IWineD3DResource *resource,void *pData);
+#ifndef __IWineD3DBase_FWD_DEFINED__
+#define __IWineD3DBase_FWD_DEFINED__
+typedef interface IWineD3DBase IWineD3DBase;
+#endif
+
+/*****************************************************************************
+ * IWineD3DBase interface
+ */
+#ifndef __IWineD3DBase_INTERFACE_DEFINED__
+#define __IWineD3DBase_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DBase, 0x46799311, 0x8e0e, 0x40ce, 0xb2,0xec, 0xdd,0xb9,0x9f,0x18,0xfc,0xb4);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DBase : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetParent(
+        IUnknown **parent) = 0;
+
+};
+#else
+typedef struct IWineD3DBaseVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DBase* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DBase* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DBase* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DBase* This,
+        IUnknown **parent);
+
+    END_INTERFACE
+} IWineD3DBaseVtbl;
+interface IWineD3DBase {
+    CONST_VTBL IWineD3DBaseVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DBase_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DBase_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DBase_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DBase_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DBase_GetParent_Proxy(
+    IWineD3DBase* This,
+    IUnknown **parent);
+void __RPC_STUB IWineD3DBase_GetParent_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DBase_INTERFACE_DEFINED__ */
+
+#ifndef __IWineD3D_FWD_DEFINED__
+#define __IWineD3D_FWD_DEFINED__
+typedef interface IWineD3D IWineD3D;
+#endif
+
+/*****************************************************************************
+ * IWineD3D interface
+ */
+#ifndef __IWineD3D_INTERFACE_DEFINED__
+#define __IWineD3D_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3D, 0x108f9c44, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3D : public IWineD3DBase
+{
+    virtual UINT STDMETHODCALLTYPE GetAdapterCount(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RegisterSoftwareDevice(
+        void *pInitializeFunction) = 0;
+
+    virtual HMONITOR STDMETHODCALLTYPE GetAdapterMonitor(
+        UINT adapter_idx) = 0;
+
+    virtual UINT STDMETHODCALLTYPE GetAdapterModeCount(
+        UINT adapter_idx,
+        WINED3DFORMAT format) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumAdapterModes(
+        UINT adapter_idx,
+        UINT mode_idx,
+        WINED3DFORMAT format,
+        WINED3DDISPLAYMODE *mode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetAdapterDisplayMode(
+        UINT adapter_idx,
+        WINED3DDISPLAYMODE *mode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetAdapterIdentifier(
+        UINT adapter_idx,
+        DWORD flags,
+        WINED3DADAPTER_IDENTIFIER *identifier) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CheckDeviceMultiSampleType(
+        UINT adapter_idx,
+        WINED3DDEVTYPE device_type,
+        WINED3DFORMAT surface_format,
+        BOOL windowed,
+        WINED3DMULTISAMPLE_TYPE multisample_type,
+        DWORD *quality_levels) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CheckDepthStencilMatch(
+        UINT adapter_idx,
+        WINED3DDEVTYPE device_type,
+        WINED3DFORMAT adapter_format,
+        WINED3DFORMAT render_target_format,
+        WINED3DFORMAT depth_stencil_format) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CheckDeviceType(
+        UINT adapter_idx,
+        WINED3DDEVTYPE device_type,
+        WINED3DFORMAT display_format,
+        WINED3DFORMAT backbuffer_format,
+        BOOL windowed) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CheckDeviceFormat(
+        UINT adaper_idx,
+        WINED3DDEVTYPE device_type,
+        WINED3DFORMAT adapter_format,
+        DWORD usage,
+        WINED3DRESOURCETYPE resource_type,
+        WINED3DFORMAT check_format,
+        WINED3DSURFTYPE surface_type) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CheckDeviceFormatConversion(
+        UINT adapter_idx,
+        WINED3DDEVTYPE device_type,
+        WINED3DFORMAT source_format,
+        WINED3DFORMAT target_format) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDeviceCaps(
+        UINT adapter_idx,
+        WINED3DDEVTYPE device_type,
+        WINED3DCAPS *caps) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateDevice(
+        UINT adapter_idx,
+        WINED3DDEVTYPE device_type,
+        HWND focus_window,
+        DWORD behaviour_flags,
+        IWineD3DDevice **device,
+        IUnknown *parent) = 0;
+
+};
+#else
+typedef struct IWineD3DVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3D* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3D* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3D* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3D* This,
+        IUnknown **parent);
+
+    /*** IWineD3D methods ***/
+    UINT (STDMETHODCALLTYPE *GetAdapterCount)(
+        IWineD3D* This);
+
+    HRESULT (STDMETHODCALLTYPE *RegisterSoftwareDevice)(
+        IWineD3D* This,
+        void *pInitializeFunction);
+
+    HMONITOR (STDMETHODCALLTYPE *GetAdapterMonitor)(
+        IWineD3D* This,
+        UINT adapter_idx);
+
+    UINT (STDMETHODCALLTYPE *GetAdapterModeCount)(
+        IWineD3D* This,
+        UINT adapter_idx,
+        WINED3DFORMAT format);
+
+    HRESULT (STDMETHODCALLTYPE *EnumAdapterModes)(
+        IWineD3D* This,
+        UINT adapter_idx,
+        UINT mode_idx,
+        WINED3DFORMAT format,
+        WINED3DDISPLAYMODE *mode);
+
+    HRESULT (STDMETHODCALLTYPE *GetAdapterDisplayMode)(
+        IWineD3D* This,
+        UINT adapter_idx,
+        WINED3DDISPLAYMODE *mode);
+
+    HRESULT (STDMETHODCALLTYPE *GetAdapterIdentifier)(
+        IWineD3D* This,
+        UINT adapter_idx,
+        DWORD flags,
+        WINED3DADAPTER_IDENTIFIER *identifier);
+
+    HRESULT (STDMETHODCALLTYPE *CheckDeviceMultiSampleType)(
+        IWineD3D* This,
+        UINT adapter_idx,
+        WINED3DDEVTYPE device_type,
+        WINED3DFORMAT surface_format,
+        BOOL windowed,
+        WINED3DMULTISAMPLE_TYPE multisample_type,
+        DWORD *quality_levels);
+
+    HRESULT (STDMETHODCALLTYPE *CheckDepthStencilMatch)(
+        IWineD3D* This,
+        UINT adapter_idx,
+        WINED3DDEVTYPE device_type,
+        WINED3DFORMAT adapter_format,
+        WINED3DFORMAT render_target_format,
+        WINED3DFORMAT depth_stencil_format);
+
+    HRESULT (STDMETHODCALLTYPE *CheckDeviceType)(
+        IWineD3D* This,
+        UINT adapter_idx,
+        WINED3DDEVTYPE device_type,
+        WINED3DFORMAT display_format,
+        WINED3DFORMAT backbuffer_format,
+        BOOL windowed);
+
+    HRESULT (STDMETHODCALLTYPE *CheckDeviceFormat)(
+        IWineD3D* This,
+        UINT adaper_idx,
+        WINED3DDEVTYPE device_type,
+        WINED3DFORMAT adapter_format,
+        DWORD usage,
+        WINED3DRESOURCETYPE resource_type,
+        WINED3DFORMAT check_format,
+        WINED3DSURFTYPE surface_type);
+
+    HRESULT (STDMETHODCALLTYPE *CheckDeviceFormatConversion)(
+        IWineD3D* This,
+        UINT adapter_idx,
+        WINED3DDEVTYPE device_type,
+        WINED3DFORMAT source_format,
+        WINED3DFORMAT target_format);
+
+    HRESULT (STDMETHODCALLTYPE *GetDeviceCaps)(
+        IWineD3D* This,
+        UINT adapter_idx,
+        WINED3DDEVTYPE device_type,
+        WINED3DCAPS *caps);
+
+    HRESULT (STDMETHODCALLTYPE *CreateDevice)(
+        IWineD3D* This,
+        UINT adapter_idx,
+        WINED3DDEVTYPE device_type,
+        HWND focus_window,
+        DWORD behaviour_flags,
+        IWineD3DDevice **device,
+        IUnknown *parent);
+
+    END_INTERFACE
+} IWineD3DVtbl;
+interface IWineD3D {
+    CONST_VTBL IWineD3DVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3D_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3D_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3D_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3D_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3D methods ***/
+#define IWineD3D_GetAdapterCount(This) (This)->lpVtbl->GetAdapterCount(This)
+#define IWineD3D_RegisterSoftwareDevice(This,pInitializeFunction) (This)->lpVtbl->RegisterSoftwareDevice(This,pInitializeFunction)
+#define IWineD3D_GetAdapterMonitor(This,adapter_idx) (This)->lpVtbl->GetAdapterMonitor(This,adapter_idx)
+#define IWineD3D_GetAdapterModeCount(This,adapter_idx,format) (This)->lpVtbl->GetAdapterModeCount(This,adapter_idx,format)
+#define IWineD3D_EnumAdapterModes(This,adapter_idx,mode_idx,format,mode) (This)->lpVtbl->EnumAdapterModes(This,adapter_idx,mode_idx,format,mode)
+#define IWineD3D_GetAdapterDisplayMode(This,adapter_idx,mode) (This)->lpVtbl->GetAdapterDisplayMode(This,adapter_idx,mode)
+#define IWineD3D_GetAdapterIdentifier(This,adapter_idx,flags,identifier) (This)->lpVtbl->GetAdapterIdentifier(This,adapter_idx,flags,identifier)
+#define IWineD3D_CheckDeviceMultiSampleType(This,adapter_idx,device_type,surface_format,windowed,multisample_type,quality_levels) (This)->lpVtbl->CheckDeviceMultiSampleType(This,adapter_idx,device_type,surface_format,windowed,multisample_type,quality_levels)
+#define IWineD3D_CheckDepthStencilMatch(This,adapter_idx,device_type,adapter_format,render_target_format,depth_stencil_format) (This)->lpVtbl->CheckDepthStencilMatch(This,adapter_idx,device_type,adapter_format,render_target_format,depth_stencil_format)
+#define IWineD3D_CheckDeviceType(This,adapter_idx,device_type,display_format,backbuffer_format,windowed) (This)->lpVtbl->CheckDeviceType(This,adapter_idx,device_type,display_format,backbuffer_format,windowed)
+#define IWineD3D_CheckDeviceFormat(This,adaper_idx,device_type,adapter_format,usage,resource_type,check_format,surface_type) (This)->lpVtbl->CheckDeviceFormat(This,adaper_idx,device_type,adapter_format,usage,resource_type,check_format,surface_type)
+#define IWineD3D_CheckDeviceFormatConversion(This,adapter_idx,device_type,source_format,target_format) (This)->lpVtbl->CheckDeviceFormatConversion(This,adapter_idx,device_type,source_format,target_format)
+#define IWineD3D_GetDeviceCaps(This,adapter_idx,device_type,caps) (This)->lpVtbl->GetDeviceCaps(This,adapter_idx,device_type,caps)
+#define IWineD3D_CreateDevice(This,adapter_idx,device_type,focus_window,behaviour_flags,device,parent) (This)->lpVtbl->CreateDevice(This,adapter_idx,device_type,focus_window,behaviour_flags,device,parent)
+#endif
+
+#endif
+
+UINT STDMETHODCALLTYPE IWineD3D_GetAdapterCount_Proxy(
+    IWineD3D* This);
+void __RPC_STUB IWineD3D_GetAdapterCount_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3D_RegisterSoftwareDevice_Proxy(
+    IWineD3D* This,
+    void *pInitializeFunction);
+void __RPC_STUB IWineD3D_RegisterSoftwareDevice_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HMONITOR STDMETHODCALLTYPE IWineD3D_GetAdapterMonitor_Proxy(
+    IWineD3D* This,
+    UINT adapter_idx);
+void __RPC_STUB IWineD3D_GetAdapterMonitor_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+UINT STDMETHODCALLTYPE IWineD3D_GetAdapterModeCount_Proxy(
+    IWineD3D* This,
+    UINT adapter_idx,
+    WINED3DFORMAT format);
+void __RPC_STUB IWineD3D_GetAdapterModeCount_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3D_EnumAdapterModes_Proxy(
+    IWineD3D* This,
+    UINT adapter_idx,
+    UINT mode_idx,
+    WINED3DFORMAT format,
+    WINED3DDISPLAYMODE *mode);
+void __RPC_STUB IWineD3D_EnumAdapterModes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3D_GetAdapterDisplayMode_Proxy(
+    IWineD3D* This,
+    UINT adapter_idx,
+    WINED3DDISPLAYMODE *mode);
+void __RPC_STUB IWineD3D_GetAdapterDisplayMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3D_GetAdapterIdentifier_Proxy(
+    IWineD3D* This,
+    UINT adapter_idx,
+    DWORD flags,
+    WINED3DADAPTER_IDENTIFIER *identifier);
+void __RPC_STUB IWineD3D_GetAdapterIdentifier_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3D_CheckDeviceMultiSampleType_Proxy(
+    IWineD3D* This,
+    UINT adapter_idx,
+    WINED3DDEVTYPE device_type,
+    WINED3DFORMAT surface_format,
+    BOOL windowed,
+    WINED3DMULTISAMPLE_TYPE multisample_type,
+    DWORD *quality_levels);
+void __RPC_STUB IWineD3D_CheckDeviceMultiSampleType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3D_CheckDepthStencilMatch_Proxy(
+    IWineD3D* This,
+    UINT adapter_idx,
+    WINED3DDEVTYPE device_type,
+    WINED3DFORMAT adapter_format,
+    WINED3DFORMAT render_target_format,
+    WINED3DFORMAT depth_stencil_format);
+void __RPC_STUB IWineD3D_CheckDepthStencilMatch_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3D_CheckDeviceType_Proxy(
+    IWineD3D* This,
+    UINT adapter_idx,
+    WINED3DDEVTYPE device_type,
+    WINED3DFORMAT display_format,
+    WINED3DFORMAT backbuffer_format,
+    BOOL windowed);
+void __RPC_STUB IWineD3D_CheckDeviceType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3D_CheckDeviceFormat_Proxy(
+    IWineD3D* This,
+    UINT adaper_idx,
+    WINED3DDEVTYPE device_type,
+    WINED3DFORMAT adapter_format,
+    DWORD usage,
+    WINED3DRESOURCETYPE resource_type,
+    WINED3DFORMAT check_format,
+    WINED3DSURFTYPE surface_type);
+void __RPC_STUB IWineD3D_CheckDeviceFormat_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3D_CheckDeviceFormatConversion_Proxy(
+    IWineD3D* This,
+    UINT adapter_idx,
+    WINED3DDEVTYPE device_type,
+    WINED3DFORMAT source_format,
+    WINED3DFORMAT target_format);
+void __RPC_STUB IWineD3D_CheckDeviceFormatConversion_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3D_GetDeviceCaps_Proxy(
+    IWineD3D* This,
+    UINT adapter_idx,
+    WINED3DDEVTYPE device_type,
+    WINED3DCAPS *caps);
+void __RPC_STUB IWineD3D_GetDeviceCaps_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3D_CreateDevice_Proxy(
+    IWineD3D* This,
+    UINT adapter_idx,
+    WINED3DDEVTYPE device_type,
+    HWND focus_window,
+    DWORD behaviour_flags,
+    IWineD3DDevice **device,
+    IUnknown *parent);
+void __RPC_STUB IWineD3D_CreateDevice_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3D_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWineD3DResource interface
+ */
+#ifndef __IWineD3DResource_INTERFACE_DEFINED__
+#define __IWineD3DResource_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DResource, 0x1f3bfb34, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DResource : public IWineD3DBase
+{
+    virtual HRESULT STDMETHODCALLTYPE GetDevice(
+        IWineD3DDevice **device) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetPrivateData(
+        REFGUID guid,
+        const void *data,
+        DWORD data_size,
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPrivateData(
+        REFGUID guid,
+        void *data,
+        DWORD *data_size) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE FreePrivateData(
+        REFGUID guid) = 0;
+
+    virtual DWORD STDMETHODCALLTYPE SetPriority(
+        DWORD new_priority) = 0;
+
+    virtual DWORD STDMETHODCALLTYPE GetPriority(
+        ) = 0;
+
+    virtual void STDMETHODCALLTYPE PreLoad(
+        ) = 0;
+
+    virtual void STDMETHODCALLTYPE UnLoad(
+        ) = 0;
+
+    virtual WINED3DRESOURCETYPE STDMETHODCALLTYPE GetType(
+        ) = 0;
+
+};
+#else
+typedef struct IWineD3DResourceVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DResource* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DResource* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DResource* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DResource* This,
+        IUnknown **parent);
+
+    /*** IWineD3DResource methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetDevice)(
+        IWineD3DResource* This,
+        IWineD3DDevice **device);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        IWineD3DResource* This,
+        REFGUID guid,
+        const void *data,
+        DWORD data_size,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        IWineD3DResource* This,
+        REFGUID guid,
+        void *data,
+        DWORD *data_size);
+
+    HRESULT (STDMETHODCALLTYPE *FreePrivateData)(
+        IWineD3DResource* This,
+        REFGUID guid);
+
+    DWORD (STDMETHODCALLTYPE *SetPriority)(
+        IWineD3DResource* This,
+        DWORD new_priority);
+
+    DWORD (STDMETHODCALLTYPE *GetPriority)(
+        IWineD3DResource* This);
+
+    void (STDMETHODCALLTYPE *PreLoad)(
+        IWineD3DResource* This);
+
+    void (STDMETHODCALLTYPE *UnLoad)(
+        IWineD3DResource* This);
+
+    WINED3DRESOURCETYPE (STDMETHODCALLTYPE *GetType)(
+        IWineD3DResource* This);
+
+    END_INTERFACE
+} IWineD3DResourceVtbl;
+interface IWineD3DResource {
+    CONST_VTBL IWineD3DResourceVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DResource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DResource_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DResource_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DResource_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DResource methods ***/
+#define IWineD3DResource_GetDevice(This,device) (This)->lpVtbl->GetDevice(This,device)
+#define IWineD3DResource_SetPrivateData(This,guid,data,data_size,flags) (This)->lpVtbl->SetPrivateData(This,guid,data,data_size,flags)
+#define IWineD3DResource_GetPrivateData(This,guid,data,data_size) (This)->lpVtbl->GetPrivateData(This,guid,data,data_size)
+#define IWineD3DResource_FreePrivateData(This,guid) (This)->lpVtbl->FreePrivateData(This,guid)
+#define IWineD3DResource_SetPriority(This,new_priority) (This)->lpVtbl->SetPriority(This,new_priority)
+#define IWineD3DResource_GetPriority(This) (This)->lpVtbl->GetPriority(This)
+#define IWineD3DResource_PreLoad(This) (This)->lpVtbl->PreLoad(This)
+#define IWineD3DResource_UnLoad(This) (This)->lpVtbl->UnLoad(This)
+#define IWineD3DResource_GetType(This) (This)->lpVtbl->GetType(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DResource_GetDevice_Proxy(
+    IWineD3DResource* This,
+    IWineD3DDevice **device);
+void __RPC_STUB IWineD3DResource_GetDevice_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DResource_SetPrivateData_Proxy(
+    IWineD3DResource* This,
+    REFGUID guid,
+    const void *data,
+    DWORD data_size,
+    DWORD flags);
+void __RPC_STUB IWineD3DResource_SetPrivateData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DResource_GetPrivateData_Proxy(
+    IWineD3DResource* This,
+    REFGUID guid,
+    void *data,
+    DWORD *data_size);
+void __RPC_STUB IWineD3DResource_GetPrivateData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DResource_FreePrivateData_Proxy(
+    IWineD3DResource* This,
+    REFGUID guid);
+void __RPC_STUB IWineD3DResource_FreePrivateData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+DWORD STDMETHODCALLTYPE IWineD3DResource_SetPriority_Proxy(
+    IWineD3DResource* This,
+    DWORD new_priority);
+void __RPC_STUB IWineD3DResource_SetPriority_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+DWORD STDMETHODCALLTYPE IWineD3DResource_GetPriority_Proxy(
+    IWineD3DResource* This);
+void __RPC_STUB IWineD3DResource_GetPriority_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWineD3DResource_PreLoad_Proxy(
+    IWineD3DResource* This);
+void __RPC_STUB IWineD3DResource_PreLoad_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWineD3DResource_UnLoad_Proxy(
+    IWineD3DResource* This);
+void __RPC_STUB IWineD3DResource_UnLoad_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+WINED3DRESOURCETYPE STDMETHODCALLTYPE IWineD3DResource_GetType_Proxy(
+    IWineD3DResource* This);
+void __RPC_STUB IWineD3DResource_GetType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DResource_INTERFACE_DEFINED__ */
+
+#ifndef __IWineD3DVertexBuffer_FWD_DEFINED__
+#define __IWineD3DVertexBuffer_FWD_DEFINED__
+typedef interface IWineD3DVertexBuffer IWineD3DVertexBuffer;
+#endif
+
+/*****************************************************************************
+ * IWineD3DVertexBuffer interface
+ */
+#ifndef __IWineD3DVertexBuffer_INTERFACE_DEFINED__
+#define __IWineD3DVertexBuffer_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DVertexBuffer, 0x217f671e, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DVertexBuffer : public IWineD3DResource
+{
+    virtual HRESULT STDMETHODCALLTYPE Lock(
+        UINT offset,
+        UINT size,
+        BYTE **data,
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Unlock(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDesc(
+        WINED3DVERTEXBUFFER_DESC *desc) = 0;
+
+};
+#else
+typedef struct IWineD3DVertexBufferVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DVertexBuffer* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DVertexBuffer* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DVertexBuffer* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DVertexBuffer* This,
+        IUnknown **parent);
+
+    /*** IWineD3DResource methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetDevice)(
+        IWineD3DVertexBuffer* This,
+        IWineD3DDevice **device);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        IWineD3DVertexBuffer* This,
+        REFGUID guid,
+        const void *data,
+        DWORD data_size,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        IWineD3DVertexBuffer* This,
+        REFGUID guid,
+        void *data,
+        DWORD *data_size);
+
+    HRESULT (STDMETHODCALLTYPE *FreePrivateData)(
+        IWineD3DVertexBuffer* This,
+        REFGUID guid);
+
+    DWORD (STDMETHODCALLTYPE *SetPriority)(
+        IWineD3DVertexBuffer* This,
+        DWORD new_priority);
+
+    DWORD (STDMETHODCALLTYPE *GetPriority)(
+        IWineD3DVertexBuffer* This);
+
+    void (STDMETHODCALLTYPE *PreLoad)(
+        IWineD3DVertexBuffer* This);
+
+    void (STDMETHODCALLTYPE *UnLoad)(
+        IWineD3DVertexBuffer* This);
+
+    WINED3DRESOURCETYPE (STDMETHODCALLTYPE *GetType)(
+        IWineD3DVertexBuffer* This);
+
+    /*** IWineD3DVertexBuffer methods ***/
+    HRESULT (STDMETHODCALLTYPE *Lock)(
+        IWineD3DVertexBuffer* This,
+        UINT offset,
+        UINT size,
+        BYTE **data,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *Unlock)(
+        IWineD3DVertexBuffer* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetDesc)(
+        IWineD3DVertexBuffer* This,
+        WINED3DVERTEXBUFFER_DESC *desc);
+
+    END_INTERFACE
+} IWineD3DVertexBufferVtbl;
+interface IWineD3DVertexBuffer {
+    CONST_VTBL IWineD3DVertexBufferVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DVertexBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DVertexBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DVertexBuffer_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DVertexBuffer_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DResource methods ***/
+#define IWineD3DVertexBuffer_GetDevice(This,device) (This)->lpVtbl->GetDevice(This,device)
+#define IWineD3DVertexBuffer_SetPrivateData(This,guid,data,data_size,flags) (This)->lpVtbl->SetPrivateData(This,guid,data,data_size,flags)
+#define IWineD3DVertexBuffer_GetPrivateData(This,guid,data,data_size) (This)->lpVtbl->GetPrivateData(This,guid,data,data_size)
+#define IWineD3DVertexBuffer_FreePrivateData(This,guid) (This)->lpVtbl->FreePrivateData(This,guid)
+#define IWineD3DVertexBuffer_SetPriority(This,new_priority) (This)->lpVtbl->SetPriority(This,new_priority)
+#define IWineD3DVertexBuffer_GetPriority(This) (This)->lpVtbl->GetPriority(This)
+#define IWineD3DVertexBuffer_PreLoad(This) (This)->lpVtbl->PreLoad(This)
+#define IWineD3DVertexBuffer_UnLoad(This) (This)->lpVtbl->UnLoad(This)
+#define IWineD3DVertexBuffer_GetType(This) (This)->lpVtbl->GetType(This)
+/*** IWineD3DVertexBuffer methods ***/
+#define IWineD3DVertexBuffer_Lock(This,offset,size,data,flags) (This)->lpVtbl->Lock(This,offset,size,data,flags)
+#define IWineD3DVertexBuffer_Unlock(This) (This)->lpVtbl->Unlock(This)
+#define IWineD3DVertexBuffer_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DVertexBuffer_Lock_Proxy(
+    IWineD3DVertexBuffer* This,
+    UINT offset,
+    UINT size,
+    BYTE **data,
+    DWORD flags);
+void __RPC_STUB IWineD3DVertexBuffer_Lock_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DVertexBuffer_Unlock_Proxy(
+    IWineD3DVertexBuffer* This);
+void __RPC_STUB IWineD3DVertexBuffer_Unlock_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DVertexBuffer_GetDesc_Proxy(
+    IWineD3DVertexBuffer* This,
+    WINED3DVERTEXBUFFER_DESC *desc);
+void __RPC_STUB IWineD3DVertexBuffer_GetDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DVertexBuffer_INTERFACE_DEFINED__ */
+
+#ifndef __IWineD3DIndexBuffer_FWD_DEFINED__
+#define __IWineD3DIndexBuffer_FWD_DEFINED__
+typedef interface IWineD3DIndexBuffer IWineD3DIndexBuffer;
+#endif
+
+/*****************************************************************************
+ * IWineD3DIndexBuffer interface
+ */
+#ifndef __IWineD3DIndexBuffer_INTERFACE_DEFINED__
+#define __IWineD3DIndexBuffer_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DIndexBuffer, 0x3a02a54e, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DIndexBuffer : public IWineD3DResource
+{
+    virtual HRESULT STDMETHODCALLTYPE Lock(
+        UINT offset,
+        UINT size,
+        BYTE **data,
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Unlock(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDesc(
+        WINED3DINDEXBUFFER_DESC *desc) = 0;
+
+};
+#else
+typedef struct IWineD3DIndexBufferVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DIndexBuffer* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DIndexBuffer* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DIndexBuffer* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DIndexBuffer* This,
+        IUnknown **parent);
+
+    /*** IWineD3DResource methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetDevice)(
+        IWineD3DIndexBuffer* This,
+        IWineD3DDevice **device);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        IWineD3DIndexBuffer* This,
+        REFGUID guid,
+        const void *data,
+        DWORD data_size,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        IWineD3DIndexBuffer* This,
+        REFGUID guid,
+        void *data,
+        DWORD *data_size);
+
+    HRESULT (STDMETHODCALLTYPE *FreePrivateData)(
+        IWineD3DIndexBuffer* This,
+        REFGUID guid);
+
+    DWORD (STDMETHODCALLTYPE *SetPriority)(
+        IWineD3DIndexBuffer* This,
+        DWORD new_priority);
+
+    DWORD (STDMETHODCALLTYPE *GetPriority)(
+        IWineD3DIndexBuffer* This);
+
+    void (STDMETHODCALLTYPE *PreLoad)(
+        IWineD3DIndexBuffer* This);
+
+    void (STDMETHODCALLTYPE *UnLoad)(
+        IWineD3DIndexBuffer* This);
+
+    WINED3DRESOURCETYPE (STDMETHODCALLTYPE *GetType)(
+        IWineD3DIndexBuffer* This);
+
+    /*** IWineD3DIndexBuffer methods ***/
+    HRESULT (STDMETHODCALLTYPE *Lock)(
+        IWineD3DIndexBuffer* This,
+        UINT offset,
+        UINT size,
+        BYTE **data,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *Unlock)(
+        IWineD3DIndexBuffer* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetDesc)(
+        IWineD3DIndexBuffer* This,
+        WINED3DINDEXBUFFER_DESC *desc);
+
+    END_INTERFACE
+} IWineD3DIndexBufferVtbl;
+interface IWineD3DIndexBuffer {
+    CONST_VTBL IWineD3DIndexBufferVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DIndexBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DIndexBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DIndexBuffer_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DIndexBuffer_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DResource methods ***/
+#define IWineD3DIndexBuffer_GetDevice(This,device) (This)->lpVtbl->GetDevice(This,device)
+#define IWineD3DIndexBuffer_SetPrivateData(This,guid,data,data_size,flags) (This)->lpVtbl->SetPrivateData(This,guid,data,data_size,flags)
+#define IWineD3DIndexBuffer_GetPrivateData(This,guid,data,data_size) (This)->lpVtbl->GetPrivateData(This,guid,data,data_size)
+#define IWineD3DIndexBuffer_FreePrivateData(This,guid) (This)->lpVtbl->FreePrivateData(This,guid)
+#define IWineD3DIndexBuffer_SetPriority(This,new_priority) (This)->lpVtbl->SetPriority(This,new_priority)
+#define IWineD3DIndexBuffer_GetPriority(This) (This)->lpVtbl->GetPriority(This)
+#define IWineD3DIndexBuffer_PreLoad(This) (This)->lpVtbl->PreLoad(This)
+#define IWineD3DIndexBuffer_UnLoad(This) (This)->lpVtbl->UnLoad(This)
+#define IWineD3DIndexBuffer_GetType(This) (This)->lpVtbl->GetType(This)
+/*** IWineD3DIndexBuffer methods ***/
+#define IWineD3DIndexBuffer_Lock(This,offset,size,data,flags) (This)->lpVtbl->Lock(This,offset,size,data,flags)
+#define IWineD3DIndexBuffer_Unlock(This) (This)->lpVtbl->Unlock(This)
+#define IWineD3DIndexBuffer_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DIndexBuffer_Lock_Proxy(
+    IWineD3DIndexBuffer* This,
+    UINT offset,
+    UINT size,
+    BYTE **data,
+    DWORD flags);
+void __RPC_STUB IWineD3DIndexBuffer_Lock_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DIndexBuffer_Unlock_Proxy(
+    IWineD3DIndexBuffer* This);
+void __RPC_STUB IWineD3DIndexBuffer_Unlock_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DIndexBuffer_GetDesc_Proxy(
+    IWineD3DIndexBuffer* This,
+    WINED3DINDEXBUFFER_DESC *desc);
+void __RPC_STUB IWineD3DIndexBuffer_GetDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DIndexBuffer_INTERFACE_DEFINED__ */
+
+#ifndef __IWineD3DPalette_FWD_DEFINED__
+#define __IWineD3DPalette_FWD_DEFINED__
+typedef interface IWineD3DPalette IWineD3DPalette;
+#endif
+
+/*****************************************************************************
+ * IWineD3DPalette interface
+ */
+#ifndef __IWineD3DPalette_INTERFACE_DEFINED__
+#define __IWineD3DPalette_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DPalette, 0xf756720c, 0x32b9, 0x4439, 0xb5,0xa3, 0x1d,0x6c,0x97,0x03,0x7d,0x9e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DPalette : public IWineD3DBase
+{
+    virtual HRESULT STDMETHODCALLTYPE GetEntries(
+        DWORD flags,
+        DWORD start,
+        DWORD count,
+        PALETTEENTRY *entries) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCaps(
+        DWORD *caps) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetEntries(
+        DWORD flags,
+        DWORD start,
+        DWORD count,
+        const PALETTEENTRY *entries) = 0;
+
+};
+#else
+typedef struct IWineD3DPaletteVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DPalette* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DPalette* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DPalette* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DPalette* This,
+        IUnknown **parent);
+
+    /*** IWineD3DPalette methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetEntries)(
+        IWineD3DPalette* This,
+        DWORD flags,
+        DWORD start,
+        DWORD count,
+        PALETTEENTRY *entries);
+
+    HRESULT (STDMETHODCALLTYPE *GetCaps)(
+        IWineD3DPalette* This,
+        DWORD *caps);
+
+    HRESULT (STDMETHODCALLTYPE *SetEntries)(
+        IWineD3DPalette* This,
+        DWORD flags,
+        DWORD start,
+        DWORD count,
+        const PALETTEENTRY *entries);
+
+    END_INTERFACE
+} IWineD3DPaletteVtbl;
+interface IWineD3DPalette {
+    CONST_VTBL IWineD3DPaletteVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DPalette_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DPalette_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DPalette_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DPalette_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DPalette methods ***/
+#define IWineD3DPalette_GetEntries(This,flags,start,count,entries) (This)->lpVtbl->GetEntries(This,flags,start,count,entries)
+#define IWineD3DPalette_GetCaps(This,caps) (This)->lpVtbl->GetCaps(This,caps)
+#define IWineD3DPalette_SetEntries(This,flags,start,count,entries) (This)->lpVtbl->SetEntries(This,flags,start,count,entries)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DPalette_GetEntries_Proxy(
+    IWineD3DPalette* This,
+    DWORD flags,
+    DWORD start,
+    DWORD count,
+    PALETTEENTRY *entries);
+void __RPC_STUB IWineD3DPalette_GetEntries_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DPalette_GetCaps_Proxy(
+    IWineD3DPalette* This,
+    DWORD *caps);
+void __RPC_STUB IWineD3DPalette_GetCaps_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DPalette_SetEntries_Proxy(
+    IWineD3DPalette* This,
+    DWORD flags,
+    DWORD start,
+    DWORD count,
+    const PALETTEENTRY *entries);
+void __RPC_STUB IWineD3DPalette_SetEntries_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DPalette_INTERFACE_DEFINED__ */
+
+#ifndef __IWineD3DClipper_FWD_DEFINED__
+#define __IWineD3DClipper_FWD_DEFINED__
+typedef interface IWineD3DClipper IWineD3DClipper;
+#endif
+
+/*****************************************************************************
+ * IWineD3DClipper interface
+ */
+#ifndef __IWineD3DClipper_INTERFACE_DEFINED__
+#define __IWineD3DClipper_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DClipper, 0x8f2bceb1, 0xd338, 0x488c, 0xab,0x7f, 0x0e,0xc9,0x80,0xbf,0x5d,0x2d);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DClipper : public IWineD3DBase
+{
+    virtual HRESULT STDMETHODCALLTYPE GetClipList(
+        const RECT *rect,
+        RGNDATA *clip_list,
+        DWORD *clip_list_size) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetHWnd(
+        HWND *hwnd) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsClipListChanged(
+        BOOL *changed) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetClipList(
+        const RGNDATA *clip_list,
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetHWnd(
+        DWORD flags,
+        HWND hwnd) = 0;
+
+};
+#else
+typedef struct IWineD3DClipperVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DClipper* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DClipper* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DClipper* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DClipper* This,
+        IUnknown **parent);
+
+    /*** IWineD3DClipper methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetClipList)(
+        IWineD3DClipper* This,
+        const RECT *rect,
+        RGNDATA *clip_list,
+        DWORD *clip_list_size);
+
+    HRESULT (STDMETHODCALLTYPE *GetHWnd)(
+        IWineD3DClipper* This,
+        HWND *hwnd);
+
+    HRESULT (STDMETHODCALLTYPE *IsClipListChanged)(
+        IWineD3DClipper* This,
+        BOOL *changed);
+
+    HRESULT (STDMETHODCALLTYPE *SetClipList)(
+        IWineD3DClipper* This,
+        const RGNDATA *clip_list,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *SetHWnd)(
+        IWineD3DClipper* This,
+        DWORD flags,
+        HWND hwnd);
+
+    END_INTERFACE
+} IWineD3DClipperVtbl;
+interface IWineD3DClipper {
+    CONST_VTBL IWineD3DClipperVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DClipper_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DClipper_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DClipper_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DClipper_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DClipper methods ***/
+#define IWineD3DClipper_GetClipList(This,rect,clip_list,clip_list_size) (This)->lpVtbl->GetClipList(This,rect,clip_list,clip_list_size)
+#define IWineD3DClipper_GetHWnd(This,hwnd) (This)->lpVtbl->GetHWnd(This,hwnd)
+#define IWineD3DClipper_IsClipListChanged(This,changed) (This)->lpVtbl->IsClipListChanged(This,changed)
+#define IWineD3DClipper_SetClipList(This,clip_list,flags) (This)->lpVtbl->SetClipList(This,clip_list,flags)
+#define IWineD3DClipper_SetHWnd(This,flags,hwnd) (This)->lpVtbl->SetHWnd(This,flags,hwnd)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DClipper_GetClipList_Proxy(
+    IWineD3DClipper* This,
+    const RECT *rect,
+    RGNDATA *clip_list,
+    DWORD *clip_list_size);
+void __RPC_STUB IWineD3DClipper_GetClipList_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DClipper_GetHWnd_Proxy(
+    IWineD3DClipper* This,
+    HWND *hwnd);
+void __RPC_STUB IWineD3DClipper_GetHWnd_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DClipper_IsClipListChanged_Proxy(
+    IWineD3DClipper* This,
+    BOOL *changed);
+void __RPC_STUB IWineD3DClipper_IsClipListChanged_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DClipper_SetClipList_Proxy(
+    IWineD3DClipper* This,
+    const RGNDATA *clip_list,
+    DWORD flags);
+void __RPC_STUB IWineD3DClipper_SetClipList_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DClipper_SetHWnd_Proxy(
+    IWineD3DClipper* This,
+    DWORD flags,
+    HWND hwnd);
+void __RPC_STUB IWineD3DClipper_SetHWnd_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DClipper_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWineD3DSurface interface
+ */
+#ifndef __IWineD3DSurface_INTERFACE_DEFINED__
+#define __IWineD3DSurface_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DSurface, 0x37cd5526, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DSurface : public IWineD3DResource
+{
+    virtual HRESULT STDMETHODCALLTYPE GetContainer(
+        REFIID riid,
+        void **container) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDesc(
+        WINED3DSURFACE_DESC *desc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE LockRect(
+        WINED3DLOCKED_RECT *locked_rect,
+        const RECT *rect,
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnlockRect(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDC(
+        HDC *dc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ReleaseDC(
+        HDC dc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Flip(
+        IWineD3DSurface *override,
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Blt(
+        const RECT *dst_rect,
+        IWineD3DSurface *src_surface,
+        const RECT *src_rect,
+        DWORD flags,
+        const WINEDDBLTFX *blt_fx,
+        WINED3DTEXTUREFILTERTYPE filter) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetBltStatus(
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFlipStatus(
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsLost(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Restore(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE BltFast(
+        DWORD dst_x,
+        DWORD dst_y,
+        IWineD3DSurface *src_surface,
+        const RECT *src_rect,
+        DWORD trans) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPalette(
+        IWineD3DPalette **palette) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetPalette(
+        IWineD3DPalette *palette) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RealizePalette(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetColorKey(
+        DWORD flags,
+        const WINEDDCOLORKEY *color_key) = 0;
+
+    virtual DWORD STDMETHODCALLTYPE GetPitch(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetMem(
+        void *mem) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetOverlayPosition(
+        LONG x,
+        LONG y) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetOverlayPosition(
+        LONG *x,
+        LONG *y) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UpdateOverlayZOrder(
+        DWORD flags,
+        IWineD3DSurface *ref) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UpdateOverlay(
+        const RECT *src_rect,
+        IWineD3DSurface *dst_surface,
+        const RECT *dst_rect,
+        DWORD flags,
+        const WINEDDOVERLAYFX *fx) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetClipper(
+        IWineD3DClipper *clipper) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetClipper(
+        IWineD3DClipper **clipper) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddDirtyRect(
+        const RECT *dirty_rect) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE LoadTexture(
+        BOOL srgb_mode) = 0;
+
+    virtual void STDMETHODCALLTYPE BindTexture(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SaveSnapshot(
+        const char *filename) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetContainer(
+        IWineD3DBase *container) = 0;
+
+    virtual void STDMETHODCALLTYPE GetGlDesc(
+        glDescriptor **desc) = 0;
+
+    virtual const void * STDMETHODCALLTYPE GetData(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetFormat(
+        WINED3DFORMAT format) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PrivateSetup(
+        ) = 0;
+
+    virtual void STDMETHODCALLTYPE ModifyLocation(
+        DWORD location,
+        BOOL persistent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE LoadLocation(
+        DWORD location,
+        const RECT *rect) = 0;
+
+    virtual WINED3DSURFTYPE STDMETHODCALLTYPE GetImplType(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DrawOverlay(
+        ) = 0;
+
+};
+#else
+typedef struct IWineD3DSurfaceVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DSurface* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DSurface* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DSurface* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DSurface* This,
+        IUnknown **parent);
+
+    /*** IWineD3DResource methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetDevice)(
+        IWineD3DSurface* This,
+        IWineD3DDevice **device);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        IWineD3DSurface* This,
+        REFGUID guid,
+        const void *data,
+        DWORD data_size,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        IWineD3DSurface* This,
+        REFGUID guid,
+        void *data,
+        DWORD *data_size);
+
+    HRESULT (STDMETHODCALLTYPE *FreePrivateData)(
+        IWineD3DSurface* This,
+        REFGUID guid);
+
+    DWORD (STDMETHODCALLTYPE *SetPriority)(
+        IWineD3DSurface* This,
+        DWORD new_priority);
+
+    DWORD (STDMETHODCALLTYPE *GetPriority)(
+        IWineD3DSurface* This);
+
+    void (STDMETHODCALLTYPE *PreLoad)(
+        IWineD3DSurface* This);
+
+    void (STDMETHODCALLTYPE *UnLoad)(
+        IWineD3DSurface* This);
+
+    WINED3DRESOURCETYPE (STDMETHODCALLTYPE *GetType)(
+        IWineD3DSurface* This);
+
+    /*** IWineD3DSurface methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetContainer)(
+        IWineD3DSurface* This,
+        REFIID riid,
+        void **container);
+
+    HRESULT (STDMETHODCALLTYPE *GetDesc)(
+        IWineD3DSurface* This,
+        WINED3DSURFACE_DESC *desc);
+
+    HRESULT (STDMETHODCALLTYPE *LockRect)(
+        IWineD3DSurface* This,
+        WINED3DLOCKED_RECT *locked_rect,
+        const RECT *rect,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *UnlockRect)(
+        IWineD3DSurface* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetDC)(
+        IWineD3DSurface* This,
+        HDC *dc);
+
+    HRESULT (STDMETHODCALLTYPE *ReleaseDC)(
+        IWineD3DSurface* This,
+        HDC dc);
+
+    HRESULT (STDMETHODCALLTYPE *Flip)(
+        IWineD3DSurface* This,
+        IWineD3DSurface *override,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *Blt)(
+        IWineD3DSurface* This,
+        const RECT *dst_rect,
+        IWineD3DSurface *src_surface,
+        const RECT *src_rect,
+        DWORD flags,
+        const WINEDDBLTFX *blt_fx,
+        WINED3DTEXTUREFILTERTYPE filter);
+
+    HRESULT (STDMETHODCALLTYPE *GetBltStatus)(
+        IWineD3DSurface* This,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *GetFlipStatus)(
+        IWineD3DSurface* This,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *IsLost)(
+        IWineD3DSurface* This);
+
+    HRESULT (STDMETHODCALLTYPE *Restore)(
+        IWineD3DSurface* This);
+
+    HRESULT (STDMETHODCALLTYPE *BltFast)(
+        IWineD3DSurface* This,
+        DWORD dst_x,
+        DWORD dst_y,
+        IWineD3DSurface *src_surface,
+        const RECT *src_rect,
+        DWORD trans);
+
+    HRESULT (STDMETHODCALLTYPE *GetPalette)(
+        IWineD3DSurface* This,
+        IWineD3DPalette **palette);
+
+    HRESULT (STDMETHODCALLTYPE *SetPalette)(
+        IWineD3DSurface* This,
+        IWineD3DPalette *palette);
+
+    HRESULT (STDMETHODCALLTYPE *RealizePalette)(
+        IWineD3DSurface* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetColorKey)(
+        IWineD3DSurface* This,
+        DWORD flags,
+        const WINEDDCOLORKEY *color_key);
+
+    DWORD (STDMETHODCALLTYPE *GetPitch)(
+        IWineD3DSurface* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetMem)(
+        IWineD3DSurface* This,
+        void *mem);
+
+    HRESULT (STDMETHODCALLTYPE *SetOverlayPosition)(
+        IWineD3DSurface* This,
+        LONG x,
+        LONG y);
+
+    HRESULT (STDMETHODCALLTYPE *GetOverlayPosition)(
+        IWineD3DSurface* This,
+        LONG *x,
+        LONG *y);
+
+    HRESULT (STDMETHODCALLTYPE *UpdateOverlayZOrder)(
+        IWineD3DSurface* This,
+        DWORD flags,
+        IWineD3DSurface *ref);
+
+    HRESULT (STDMETHODCALLTYPE *UpdateOverlay)(
+        IWineD3DSurface* This,
+        const RECT *src_rect,
+        IWineD3DSurface *dst_surface,
+        const RECT *dst_rect,
+        DWORD flags,
+        const WINEDDOVERLAYFX *fx);
+
+    HRESULT (STDMETHODCALLTYPE *SetClipper)(
+        IWineD3DSurface* This,
+        IWineD3DClipper *clipper);
+
+    HRESULT (STDMETHODCALLTYPE *GetClipper)(
+        IWineD3DSurface* This,
+        IWineD3DClipper **clipper);
+
+    HRESULT (STDMETHODCALLTYPE *AddDirtyRect)(
+        IWineD3DSurface* This,
+        const RECT *dirty_rect);
+
+    HRESULT (STDMETHODCALLTYPE *LoadTexture)(
+        IWineD3DSurface* This,
+        BOOL srgb_mode);
+
+    void (STDMETHODCALLTYPE *BindTexture)(
+        IWineD3DSurface* This);
+
+    HRESULT (STDMETHODCALLTYPE *SaveSnapshot)(
+        IWineD3DSurface* This,
+        const char *filename);
+
+    HRESULT (STDMETHODCALLTYPE *SetContainer)(
+        IWineD3DSurface* This,
+        IWineD3DBase *container);
+
+    void (STDMETHODCALLTYPE *GetGlDesc)(
+        IWineD3DSurface* This,
+        glDescriptor **desc);
+
+    const void * (STDMETHODCALLTYPE *GetData)(
+        IWineD3DSurface* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetFormat)(
+        IWineD3DSurface* This,
+        WINED3DFORMAT format);
+
+    HRESULT (STDMETHODCALLTYPE *PrivateSetup)(
+        IWineD3DSurface* This);
+
+    void (STDMETHODCALLTYPE *ModifyLocation)(
+        IWineD3DSurface* This,
+        DWORD location,
+        BOOL persistent);
+
+    HRESULT (STDMETHODCALLTYPE *LoadLocation)(
+        IWineD3DSurface* This,
+        DWORD location,
+        const RECT *rect);
+
+    WINED3DSURFTYPE (STDMETHODCALLTYPE *GetImplType)(
+        IWineD3DSurface* This);
+
+    HRESULT (STDMETHODCALLTYPE *DrawOverlay)(
+        IWineD3DSurface* This);
+
+    END_INTERFACE
+} IWineD3DSurfaceVtbl;
+interface IWineD3DSurface {
+    CONST_VTBL IWineD3DSurfaceVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DSurface_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DSurface_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DSurface_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DSurface_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DResource methods ***/
+#define IWineD3DSurface_GetDevice(This,device) (This)->lpVtbl->GetDevice(This,device)
+#define IWineD3DSurface_SetPrivateData(This,guid,data,data_size,flags) (This)->lpVtbl->SetPrivateData(This,guid,data,data_size,flags)
+#define IWineD3DSurface_GetPrivateData(This,guid,data,data_size) (This)->lpVtbl->GetPrivateData(This,guid,data,data_size)
+#define IWineD3DSurface_FreePrivateData(This,guid) (This)->lpVtbl->FreePrivateData(This,guid)
+#define IWineD3DSurface_SetPriority(This,new_priority) (This)->lpVtbl->SetPriority(This,new_priority)
+#define IWineD3DSurface_GetPriority(This) (This)->lpVtbl->GetPriority(This)
+#define IWineD3DSurface_PreLoad(This) (This)->lpVtbl->PreLoad(This)
+#define IWineD3DSurface_UnLoad(This) (This)->lpVtbl->UnLoad(This)
+#define IWineD3DSurface_GetType(This) (This)->lpVtbl->GetType(This)
+/*** IWineD3DSurface methods ***/
+#define IWineD3DSurface_GetContainer(This,riid,container) (This)->lpVtbl->GetContainer(This,riid,container)
+#define IWineD3DSurface_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
+#define IWineD3DSurface_LockRect(This,locked_rect,rect,flags) (This)->lpVtbl->LockRect(This,locked_rect,rect,flags)
+#define IWineD3DSurface_UnlockRect(This) (This)->lpVtbl->UnlockRect(This)
+#define IWineD3DSurface_GetDC(This,dc) (This)->lpVtbl->GetDC(This,dc)
+#define IWineD3DSurface_ReleaseDC(This,dc) (This)->lpVtbl->ReleaseDC(This,dc)
+#define IWineD3DSurface_Flip(This,override,flags) (This)->lpVtbl->Flip(This,override,flags)
+#define IWineD3DSurface_Blt(This,dst_rect,src_surface,src_rect,flags,blt_fx,filter) (This)->lpVtbl->Blt(This,dst_rect,src_surface,src_rect,flags,blt_fx,filter)
+#define IWineD3DSurface_GetBltStatus(This,flags) (This)->lpVtbl->GetBltStatus(This,flags)
+#define IWineD3DSurface_GetFlipStatus(This,flags) (This)->lpVtbl->GetFlipStatus(This,flags)
+#define IWineD3DSurface_IsLost(This) (This)->lpVtbl->IsLost(This)
+#define IWineD3DSurface_Restore(This) (This)->lpVtbl->Restore(This)
+#define IWineD3DSurface_BltFast(This,dst_x,dst_y,src_surface,src_rect,trans) (This)->lpVtbl->BltFast(This,dst_x,dst_y,src_surface,src_rect,trans)
+#define IWineD3DSurface_GetPalette(This,palette) (This)->lpVtbl->GetPalette(This,palette)
+#define IWineD3DSurface_SetPalette(This,palette) (This)->lpVtbl->SetPalette(This,palette)
+#define IWineD3DSurface_RealizePalette(This) (This)->lpVtbl->RealizePalette(This)
+#define IWineD3DSurface_SetColorKey(This,flags,color_key) (This)->lpVtbl->SetColorKey(This,flags,color_key)
+#define IWineD3DSurface_GetPitch(This) (This)->lpVtbl->GetPitch(This)
+#define IWineD3DSurface_SetMem(This,mem) (This)->lpVtbl->SetMem(This,mem)
+#define IWineD3DSurface_SetOverlayPosition(This,x,y) (This)->lpVtbl->SetOverlayPosition(This,x,y)
+#define IWineD3DSurface_GetOverlayPosition(This,x,y) (This)->lpVtbl->GetOverlayPosition(This,x,y)
+#define IWineD3DSurface_UpdateOverlayZOrder(This,flags,ref) (This)->lpVtbl->UpdateOverlayZOrder(This,flags,ref)
+#define IWineD3DSurface_UpdateOverlay(This,src_rect,dst_surface,dst_rect,flags,fx) (This)->lpVtbl->UpdateOverlay(This,src_rect,dst_surface,dst_rect,flags,fx)
+#define IWineD3DSurface_SetClipper(This,clipper) (This)->lpVtbl->SetClipper(This,clipper)
+#define IWineD3DSurface_GetClipper(This,clipper) (This)->lpVtbl->GetClipper(This,clipper)
+#define IWineD3DSurface_AddDirtyRect(This,dirty_rect) (This)->lpVtbl->AddDirtyRect(This,dirty_rect)
+#define IWineD3DSurface_LoadTexture(This,srgb_mode) (This)->lpVtbl->LoadTexture(This,srgb_mode)
+#define IWineD3DSurface_BindTexture(This) (This)->lpVtbl->BindTexture(This)
+#define IWineD3DSurface_SaveSnapshot(This,filename) (This)->lpVtbl->SaveSnapshot(This,filename)
+#define IWineD3DSurface_SetContainer(This,container) (This)->lpVtbl->SetContainer(This,container)
+#define IWineD3DSurface_GetGlDesc(This,desc) (This)->lpVtbl->GetGlDesc(This,desc)
+#define IWineD3DSurface_GetData(This) (This)->lpVtbl->GetData(This)
+#define IWineD3DSurface_SetFormat(This,format) (This)->lpVtbl->SetFormat(This,format)
+#define IWineD3DSurface_PrivateSetup(This) (This)->lpVtbl->PrivateSetup(This)
+#define IWineD3DSurface_ModifyLocation(This,location,persistent) (This)->lpVtbl->ModifyLocation(This,location,persistent)
+#define IWineD3DSurface_LoadLocation(This,location,rect) (This)->lpVtbl->LoadLocation(This,location,rect)
+#define IWineD3DSurface_GetImplType(This) (This)->lpVtbl->GetImplType(This)
+#define IWineD3DSurface_DrawOverlay(This) (This)->lpVtbl->DrawOverlay(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_GetContainer_Proxy(
+    IWineD3DSurface* This,
+    REFIID riid,
+    void **container);
+void __RPC_STUB IWineD3DSurface_GetContainer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_GetDesc_Proxy(
+    IWineD3DSurface* This,
+    WINED3DSURFACE_DESC *desc);
+void __RPC_STUB IWineD3DSurface_GetDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_LockRect_Proxy(
+    IWineD3DSurface* This,
+    WINED3DLOCKED_RECT *locked_rect,
+    const RECT *rect,
+    DWORD flags);
+void __RPC_STUB IWineD3DSurface_LockRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_UnlockRect_Proxy(
+    IWineD3DSurface* This);
+void __RPC_STUB IWineD3DSurface_UnlockRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_GetDC_Proxy(
+    IWineD3DSurface* This,
+    HDC *dc);
+void __RPC_STUB IWineD3DSurface_GetDC_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_ReleaseDC_Proxy(
+    IWineD3DSurface* This,
+    HDC dc);
+void __RPC_STUB IWineD3DSurface_ReleaseDC_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_Flip_Proxy(
+    IWineD3DSurface* This,
+    IWineD3DSurface *override,
+    DWORD flags);
+void __RPC_STUB IWineD3DSurface_Flip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_Blt_Proxy(
+    IWineD3DSurface* This,
+    const RECT *dst_rect,
+    IWineD3DSurface *src_surface,
+    const RECT *src_rect,
+    DWORD flags,
+    const WINEDDBLTFX *blt_fx,
+    WINED3DTEXTUREFILTERTYPE filter);
+void __RPC_STUB IWineD3DSurface_Blt_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_GetBltStatus_Proxy(
+    IWineD3DSurface* This,
+    DWORD flags);
+void __RPC_STUB IWineD3DSurface_GetBltStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_GetFlipStatus_Proxy(
+    IWineD3DSurface* This,
+    DWORD flags);
+void __RPC_STUB IWineD3DSurface_GetFlipStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_IsLost_Proxy(
+    IWineD3DSurface* This);
+void __RPC_STUB IWineD3DSurface_IsLost_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_Restore_Proxy(
+    IWineD3DSurface* This);
+void __RPC_STUB IWineD3DSurface_Restore_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_BltFast_Proxy(
+    IWineD3DSurface* This,
+    DWORD dst_x,
+    DWORD dst_y,
+    IWineD3DSurface *src_surface,
+    const RECT *src_rect,
+    DWORD trans);
+void __RPC_STUB IWineD3DSurface_BltFast_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_GetPalette_Proxy(
+    IWineD3DSurface* This,
+    IWineD3DPalette **palette);
+void __RPC_STUB IWineD3DSurface_GetPalette_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_SetPalette_Proxy(
+    IWineD3DSurface* This,
+    IWineD3DPalette *palette);
+void __RPC_STUB IWineD3DSurface_SetPalette_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_RealizePalette_Proxy(
+    IWineD3DSurface* This);
+void __RPC_STUB IWineD3DSurface_RealizePalette_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_SetColorKey_Proxy(
+    IWineD3DSurface* This,
+    DWORD flags,
+    const WINEDDCOLORKEY *color_key);
+void __RPC_STUB IWineD3DSurface_SetColorKey_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+DWORD STDMETHODCALLTYPE IWineD3DSurface_GetPitch_Proxy(
+    IWineD3DSurface* This);
+void __RPC_STUB IWineD3DSurface_GetPitch_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_SetMem_Proxy(
+    IWineD3DSurface* This,
+    void *mem);
+void __RPC_STUB IWineD3DSurface_SetMem_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_SetOverlayPosition_Proxy(
+    IWineD3DSurface* This,
+    LONG x,
+    LONG y);
+void __RPC_STUB IWineD3DSurface_SetOverlayPosition_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_GetOverlayPosition_Proxy(
+    IWineD3DSurface* This,
+    LONG *x,
+    LONG *y);
+void __RPC_STUB IWineD3DSurface_GetOverlayPosition_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_UpdateOverlayZOrder_Proxy(
+    IWineD3DSurface* This,
+    DWORD flags,
+    IWineD3DSurface *ref);
+void __RPC_STUB IWineD3DSurface_UpdateOverlayZOrder_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_UpdateOverlay_Proxy(
+    IWineD3DSurface* This,
+    const RECT *src_rect,
+    IWineD3DSurface *dst_surface,
+    const RECT *dst_rect,
+    DWORD flags,
+    const WINEDDOVERLAYFX *fx);
+void __RPC_STUB IWineD3DSurface_UpdateOverlay_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_SetClipper_Proxy(
+    IWineD3DSurface* This,
+    IWineD3DClipper *clipper);
+void __RPC_STUB IWineD3DSurface_SetClipper_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_GetClipper_Proxy(
+    IWineD3DSurface* This,
+    IWineD3DClipper **clipper);
+void __RPC_STUB IWineD3DSurface_GetClipper_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_AddDirtyRect_Proxy(
+    IWineD3DSurface* This,
+    const RECT *dirty_rect);
+void __RPC_STUB IWineD3DSurface_AddDirtyRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_LoadTexture_Proxy(
+    IWineD3DSurface* This,
+    BOOL srgb_mode);
+void __RPC_STUB IWineD3DSurface_LoadTexture_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWineD3DSurface_BindTexture_Proxy(
+    IWineD3DSurface* This);
+void __RPC_STUB IWineD3DSurface_BindTexture_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_SaveSnapshot_Proxy(
+    IWineD3DSurface* This,
+    const char *filename);
+void __RPC_STUB IWineD3DSurface_SaveSnapshot_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_SetContainer_Proxy(
+    IWineD3DSurface* This,
+    IWineD3DBase *container);
+void __RPC_STUB IWineD3DSurface_SetContainer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWineD3DSurface_GetGlDesc_Proxy(
+    IWineD3DSurface* This,
+    glDescriptor **desc);
+void __RPC_STUB IWineD3DSurface_GetGlDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+const void * STDMETHODCALLTYPE IWineD3DSurface_GetData_Proxy(
+    IWineD3DSurface* This);
+void __RPC_STUB IWineD3DSurface_GetData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_SetFormat_Proxy(
+    IWineD3DSurface* This,
+    WINED3DFORMAT format);
+void __RPC_STUB IWineD3DSurface_SetFormat_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_PrivateSetup_Proxy(
+    IWineD3DSurface* This);
+void __RPC_STUB IWineD3DSurface_PrivateSetup_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWineD3DSurface_ModifyLocation_Proxy(
+    IWineD3DSurface* This,
+    DWORD location,
+    BOOL persistent);
+void __RPC_STUB IWineD3DSurface_ModifyLocation_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_LoadLocation_Proxy(
+    IWineD3DSurface* This,
+    DWORD location,
+    const RECT *rect);
+void __RPC_STUB IWineD3DSurface_LoadLocation_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+WINED3DSURFTYPE STDMETHODCALLTYPE IWineD3DSurface_GetImplType_Proxy(
+    IWineD3DSurface* This);
+void __RPC_STUB IWineD3DSurface_GetImplType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_DrawOverlay_Proxy(
+    IWineD3DSurface* This);
+void __RPC_STUB IWineD3DSurface_DrawOverlay_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DSurface_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWineD3DVolume interface
+ */
+#ifndef __IWineD3DVolume_INTERFACE_DEFINED__
+#define __IWineD3DVolume_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DVolume, 0x24769ed8, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DVolume : public IWineD3DResource
+{
+    virtual HRESULT STDMETHODCALLTYPE GetContainer(
+        REFIID riid,
+        void **container) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDesc(
+        WINED3DVOLUME_DESC *desc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE LockBox(
+        WINED3DLOCKED_BOX *locked_box,
+        const WINED3DBOX *box,
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnlockBox(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddDirtyBox(
+        const WINED3DBOX *dirty_box) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CleanDirtyBox(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE LoadTexture(
+        int gl_level,
+        BOOL srgb_mode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetContainer(
+        IWineD3DBase *container) = 0;
+
+};
+#else
+typedef struct IWineD3DVolumeVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DVolume* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DVolume* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DVolume* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DVolume* This,
+        IUnknown **parent);
+
+    /*** IWineD3DResource methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetDevice)(
+        IWineD3DVolume* This,
+        IWineD3DDevice **device);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        IWineD3DVolume* This,
+        REFGUID guid,
+        const void *data,
+        DWORD data_size,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        IWineD3DVolume* This,
+        REFGUID guid,
+        void *data,
+        DWORD *data_size);
+
+    HRESULT (STDMETHODCALLTYPE *FreePrivateData)(
+        IWineD3DVolume* This,
+        REFGUID guid);
+
+    DWORD (STDMETHODCALLTYPE *SetPriority)(
+        IWineD3DVolume* This,
+        DWORD new_priority);
+
+    DWORD (STDMETHODCALLTYPE *GetPriority)(
+        IWineD3DVolume* This);
+
+    void (STDMETHODCALLTYPE *PreLoad)(
+        IWineD3DVolume* This);
+
+    void (STDMETHODCALLTYPE *UnLoad)(
+        IWineD3DVolume* This);
+
+    WINED3DRESOURCETYPE (STDMETHODCALLTYPE *GetType)(
+        IWineD3DVolume* This);
+
+    /*** IWineD3DVolume methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetContainer)(
+        IWineD3DVolume* This,
+        REFIID riid,
+        void **container);
+
+    HRESULT (STDMETHODCALLTYPE *GetDesc)(
+        IWineD3DVolume* This,
+        WINED3DVOLUME_DESC *desc);
+
+    HRESULT (STDMETHODCALLTYPE *LockBox)(
+        IWineD3DVolume* This,
+        WINED3DLOCKED_BOX *locked_box,
+        const WINED3DBOX *box,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *UnlockBox)(
+        IWineD3DVolume* This);
+
+    HRESULT (STDMETHODCALLTYPE *AddDirtyBox)(
+        IWineD3DVolume* This,
+        const WINED3DBOX *dirty_box);
+
+    HRESULT (STDMETHODCALLTYPE *CleanDirtyBox)(
+        IWineD3DVolume* This);
+
+    HRESULT (STDMETHODCALLTYPE *LoadTexture)(
+        IWineD3DVolume* This,
+        int gl_level,
+        BOOL srgb_mode);
+
+    HRESULT (STDMETHODCALLTYPE *SetContainer)(
+        IWineD3DVolume* This,
+        IWineD3DBase *container);
+
+    END_INTERFACE
+} IWineD3DVolumeVtbl;
+interface IWineD3DVolume {
+    CONST_VTBL IWineD3DVolumeVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DVolume_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DVolume_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DVolume_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DVolume_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DResource methods ***/
+#define IWineD3DVolume_GetDevice(This,device) (This)->lpVtbl->GetDevice(This,device)
+#define IWineD3DVolume_SetPrivateData(This,guid,data,data_size,flags) (This)->lpVtbl->SetPrivateData(This,guid,data,data_size,flags)
+#define IWineD3DVolume_GetPrivateData(This,guid,data,data_size) (This)->lpVtbl->GetPrivateData(This,guid,data,data_size)
+#define IWineD3DVolume_FreePrivateData(This,guid) (This)->lpVtbl->FreePrivateData(This,guid)
+#define IWineD3DVolume_SetPriority(This,new_priority) (This)->lpVtbl->SetPriority(This,new_priority)
+#define IWineD3DVolume_GetPriority(This) (This)->lpVtbl->GetPriority(This)
+#define IWineD3DVolume_PreLoad(This) (This)->lpVtbl->PreLoad(This)
+#define IWineD3DVolume_UnLoad(This) (This)->lpVtbl->UnLoad(This)
+#define IWineD3DVolume_GetType(This) (This)->lpVtbl->GetType(This)
+/*** IWineD3DVolume methods ***/
+#define IWineD3DVolume_GetContainer(This,riid,container) (This)->lpVtbl->GetContainer(This,riid,container)
+#define IWineD3DVolume_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
+#define IWineD3DVolume_LockBox(This,locked_box,box,flags) (This)->lpVtbl->LockBox(This,locked_box,box,flags)
+#define IWineD3DVolume_UnlockBox(This) (This)->lpVtbl->UnlockBox(This)
+#define IWineD3DVolume_AddDirtyBox(This,dirty_box) (This)->lpVtbl->AddDirtyBox(This,dirty_box)
+#define IWineD3DVolume_CleanDirtyBox(This) (This)->lpVtbl->CleanDirtyBox(This)
+#define IWineD3DVolume_LoadTexture(This,gl_level,srgb_mode) (This)->lpVtbl->LoadTexture(This,gl_level,srgb_mode)
+#define IWineD3DVolume_SetContainer(This,container) (This)->lpVtbl->SetContainer(This,container)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DVolume_GetContainer_Proxy(
+    IWineD3DVolume* This,
+    REFIID riid,
+    void **container);
+void __RPC_STUB IWineD3DVolume_GetContainer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DVolume_GetDesc_Proxy(
+    IWineD3DVolume* This,
+    WINED3DVOLUME_DESC *desc);
+void __RPC_STUB IWineD3DVolume_GetDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DVolume_LockBox_Proxy(
+    IWineD3DVolume* This,
+    WINED3DLOCKED_BOX *locked_box,
+    const WINED3DBOX *box,
+    DWORD flags);
+void __RPC_STUB IWineD3DVolume_LockBox_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DVolume_UnlockBox_Proxy(
+    IWineD3DVolume* This);
+void __RPC_STUB IWineD3DVolume_UnlockBox_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DVolume_AddDirtyBox_Proxy(
+    IWineD3DVolume* This,
+    const WINED3DBOX *dirty_box);
+void __RPC_STUB IWineD3DVolume_AddDirtyBox_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DVolume_CleanDirtyBox_Proxy(
+    IWineD3DVolume* This);
+void __RPC_STUB IWineD3DVolume_CleanDirtyBox_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DVolume_LoadTexture_Proxy(
+    IWineD3DVolume* This,
+    int gl_level,
+    BOOL srgb_mode);
+void __RPC_STUB IWineD3DVolume_LoadTexture_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DVolume_SetContainer_Proxy(
+    IWineD3DVolume* This,
+    IWineD3DBase *container);
+void __RPC_STUB IWineD3DVolume_SetContainer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DVolume_INTERFACE_DEFINED__ */
+
+#ifndef __IWineD3DBaseTexture_FWD_DEFINED__
+#define __IWineD3DBaseTexture_FWD_DEFINED__
+typedef interface IWineD3DBaseTexture IWineD3DBaseTexture;
+#endif
+
+/*****************************************************************************
+ * IWineD3DBaseTexture interface
+ */
+#ifndef __IWineD3DBaseTexture_INTERFACE_DEFINED__
+#define __IWineD3DBaseTexture_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DBaseTexture, 0x3c2aebf6, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DBaseTexture : public IWineD3DResource
+{
+    virtual DWORD STDMETHODCALLTYPE SetLOD(
+        DWORD new_lod) = 0;
+
+    virtual DWORD STDMETHODCALLTYPE GetLOD(
+        ) = 0;
+
+    virtual DWORD STDMETHODCALLTYPE GetLevelCount(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetAutoGenFilterType(
+        WINED3DTEXTUREFILTERTYPE filter_type) = 0;
+
+    virtual WINED3DTEXTUREFILTERTYPE STDMETHODCALLTYPE GetAutoGenFilterType(
+        ) = 0;
+
+    virtual void STDMETHODCALLTYPE GenerateMipSubLevels(
+        ) = 0;
+
+    virtual BOOL STDMETHODCALLTYPE SetDirty(
+        BOOL dirty) = 0;
+
+    virtual BOOL STDMETHODCALLTYPE GetDirty(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE BindTexture(
+        ) = 0;
+
+    virtual UINT STDMETHODCALLTYPE GetTextureDimensions(
+        ) = 0;
+
+    virtual BOOL STDMETHODCALLTYPE IsCondNP2(
+        ) = 0;
+
+    virtual void STDMETHODCALLTYPE ApplyStateChanges(
+        const DWORD texture_states[33],
+        const DWORD sampler_states[14]) = 0;
+
+};
+#else
+typedef struct IWineD3DBaseTextureVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DBaseTexture* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DBaseTexture* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DBaseTexture* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DBaseTexture* This,
+        IUnknown **parent);
+
+    /*** IWineD3DResource methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetDevice)(
+        IWineD3DBaseTexture* This,
+        IWineD3DDevice **device);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        IWineD3DBaseTexture* This,
+        REFGUID guid,
+        const void *data,
+        DWORD data_size,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        IWineD3DBaseTexture* This,
+        REFGUID guid,
+        void *data,
+        DWORD *data_size);
+
+    HRESULT (STDMETHODCALLTYPE *FreePrivateData)(
+        IWineD3DBaseTexture* This,
+        REFGUID guid);
+
+    DWORD (STDMETHODCALLTYPE *SetPriority)(
+        IWineD3DBaseTexture* This,
+        DWORD new_priority);
+
+    DWORD (STDMETHODCALLTYPE *GetPriority)(
+        IWineD3DBaseTexture* This);
+
+    void (STDMETHODCALLTYPE *PreLoad)(
+        IWineD3DBaseTexture* This);
+
+    void (STDMETHODCALLTYPE *UnLoad)(
+        IWineD3DBaseTexture* This);
+
+    WINED3DRESOURCETYPE (STDMETHODCALLTYPE *GetType)(
+        IWineD3DBaseTexture* This);
+
+    /*** IWineD3DBaseTexture methods ***/
+    DWORD (STDMETHODCALLTYPE *SetLOD)(
+        IWineD3DBaseTexture* This,
+        DWORD new_lod);
+
+    DWORD (STDMETHODCALLTYPE *GetLOD)(
+        IWineD3DBaseTexture* This);
+
+    DWORD (STDMETHODCALLTYPE *GetLevelCount)(
+        IWineD3DBaseTexture* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetAutoGenFilterType)(
+        IWineD3DBaseTexture* This,
+        WINED3DTEXTUREFILTERTYPE filter_type);
+
+    WINED3DTEXTUREFILTERTYPE (STDMETHODCALLTYPE *GetAutoGenFilterType)(
+        IWineD3DBaseTexture* This);
+
+    void (STDMETHODCALLTYPE *GenerateMipSubLevels)(
+        IWineD3DBaseTexture* This);
+
+    BOOL (STDMETHODCALLTYPE *SetDirty)(
+        IWineD3DBaseTexture* This,
+        BOOL dirty);
+
+    BOOL (STDMETHODCALLTYPE *GetDirty)(
+        IWineD3DBaseTexture* This);
+
+    HRESULT (STDMETHODCALLTYPE *BindTexture)(
+        IWineD3DBaseTexture* This);
+
+    UINT (STDMETHODCALLTYPE *GetTextureDimensions)(
+        IWineD3DBaseTexture* This);
+
+    BOOL (STDMETHODCALLTYPE *IsCondNP2)(
+        IWineD3DBaseTexture* This);
+
+    void (STDMETHODCALLTYPE *ApplyStateChanges)(
+        IWineD3DBaseTexture* This,
+        const DWORD texture_states[33],
+        const DWORD sampler_states[14]);
+
+    END_INTERFACE
+} IWineD3DBaseTextureVtbl;
+interface IWineD3DBaseTexture {
+    CONST_VTBL IWineD3DBaseTextureVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DBaseTexture_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DBaseTexture_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DBaseTexture_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DBaseTexture_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DResource methods ***/
+#define IWineD3DBaseTexture_GetDevice(This,device) (This)->lpVtbl->GetDevice(This,device)
+#define IWineD3DBaseTexture_SetPrivateData(This,guid,data,data_size,flags) (This)->lpVtbl->SetPrivateData(This,guid,data,data_size,flags)
+#define IWineD3DBaseTexture_GetPrivateData(This,guid,data,data_size) (This)->lpVtbl->GetPrivateData(This,guid,data,data_size)
+#define IWineD3DBaseTexture_FreePrivateData(This,guid) (This)->lpVtbl->FreePrivateData(This,guid)
+#define IWineD3DBaseTexture_SetPriority(This,new_priority) (This)->lpVtbl->SetPriority(This,new_priority)
+#define IWineD3DBaseTexture_GetPriority(This) (This)->lpVtbl->GetPriority(This)
+#define IWineD3DBaseTexture_PreLoad(This) (This)->lpVtbl->PreLoad(This)
+#define IWineD3DBaseTexture_UnLoad(This) (This)->lpVtbl->UnLoad(This)
+#define IWineD3DBaseTexture_GetType(This) (This)->lpVtbl->GetType(This)
+/*** IWineD3DBaseTexture methods ***/
+#define IWineD3DBaseTexture_SetLOD(This,new_lod) (This)->lpVtbl->SetLOD(This,new_lod)
+#define IWineD3DBaseTexture_GetLOD(This) (This)->lpVtbl->GetLOD(This)
+#define IWineD3DBaseTexture_GetLevelCount(This) (This)->lpVtbl->GetLevelCount(This)
+#define IWineD3DBaseTexture_SetAutoGenFilterType(This,filter_type) (This)->lpVtbl->SetAutoGenFilterType(This,filter_type)
+#define IWineD3DBaseTexture_GetAutoGenFilterType(This) (This)->lpVtbl->GetAutoGenFilterType(This)
+#define IWineD3DBaseTexture_GenerateMipSubLevels(This) (This)->lpVtbl->GenerateMipSubLevels(This)
+#define IWineD3DBaseTexture_SetDirty(This,dirty) (This)->lpVtbl->SetDirty(This,dirty)
+#define IWineD3DBaseTexture_GetDirty(This) (This)->lpVtbl->GetDirty(This)
+#define IWineD3DBaseTexture_BindTexture(This) (This)->lpVtbl->BindTexture(This)
+#define IWineD3DBaseTexture_GetTextureDimensions(This) (This)->lpVtbl->GetTextureDimensions(This)
+#define IWineD3DBaseTexture_IsCondNP2(This) (This)->lpVtbl->IsCondNP2(This)
+#define IWineD3DBaseTexture_ApplyStateChanges(This,texture_states,sampler_states) (This)->lpVtbl->ApplyStateChanges(This,texture_states,sampler_states)
+#endif
+
+#endif
+
+DWORD STDMETHODCALLTYPE IWineD3DBaseTexture_SetLOD_Proxy(
+    IWineD3DBaseTexture* This,
+    DWORD new_lod);
+void __RPC_STUB IWineD3DBaseTexture_SetLOD_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+DWORD STDMETHODCALLTYPE IWineD3DBaseTexture_GetLOD_Proxy(
+    IWineD3DBaseTexture* This);
+void __RPC_STUB IWineD3DBaseTexture_GetLOD_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+DWORD STDMETHODCALLTYPE IWineD3DBaseTexture_GetLevelCount_Proxy(
+    IWineD3DBaseTexture* This);
+void __RPC_STUB IWineD3DBaseTexture_GetLevelCount_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DBaseTexture_SetAutoGenFilterType_Proxy(
+    IWineD3DBaseTexture* This,
+    WINED3DTEXTUREFILTERTYPE filter_type);
+void __RPC_STUB IWineD3DBaseTexture_SetAutoGenFilterType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+WINED3DTEXTUREFILTERTYPE STDMETHODCALLTYPE IWineD3DBaseTexture_GetAutoGenFilterType_Proxy(
+    IWineD3DBaseTexture* This);
+void __RPC_STUB IWineD3DBaseTexture_GetAutoGenFilterType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWineD3DBaseTexture_GenerateMipSubLevels_Proxy(
+    IWineD3DBaseTexture* This);
+void __RPC_STUB IWineD3DBaseTexture_GenerateMipSubLevels_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+BOOL STDMETHODCALLTYPE IWineD3DBaseTexture_SetDirty_Proxy(
+    IWineD3DBaseTexture* This,
+    BOOL dirty);
+void __RPC_STUB IWineD3DBaseTexture_SetDirty_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+BOOL STDMETHODCALLTYPE IWineD3DBaseTexture_GetDirty_Proxy(
+    IWineD3DBaseTexture* This);
+void __RPC_STUB IWineD3DBaseTexture_GetDirty_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DBaseTexture_BindTexture_Proxy(
+    IWineD3DBaseTexture* This);
+void __RPC_STUB IWineD3DBaseTexture_BindTexture_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+UINT STDMETHODCALLTYPE IWineD3DBaseTexture_GetTextureDimensions_Proxy(
+    IWineD3DBaseTexture* This);
+void __RPC_STUB IWineD3DBaseTexture_GetTextureDimensions_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+BOOL STDMETHODCALLTYPE IWineD3DBaseTexture_IsCondNP2_Proxy(
+    IWineD3DBaseTexture* This);
+void __RPC_STUB IWineD3DBaseTexture_IsCondNP2_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWineD3DBaseTexture_ApplyStateChanges_Proxy(
+    IWineD3DBaseTexture* This,
+    const DWORD texture_states[33],
+    const DWORD sampler_states[14]);
+void __RPC_STUB IWineD3DBaseTexture_ApplyStateChanges_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DBaseTexture_INTERFACE_DEFINED__ */
+
+#ifndef __IWineD3DTexture_FWD_DEFINED__
+#define __IWineD3DTexture_FWD_DEFINED__
+typedef interface IWineD3DTexture IWineD3DTexture;
+#endif
+
+/*****************************************************************************
+ * IWineD3DTexture interface
+ */
+#ifndef __IWineD3DTexture_INTERFACE_DEFINED__
+#define __IWineD3DTexture_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DTexture, 0x3e72cc1c, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DTexture : public IWineD3DBaseTexture
+{
+    virtual void STDMETHODCALLTYPE Destroy(
+        ULONG (STDMETHODCALLTYPE * destroy_surface_callback)(IWineD3DSurface *pSurface)) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetLevelDesc(
+        UINT level,
+        WINED3DSURFACE_DESC *desc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSurfaceLevel(
+        UINT level,
+        IWineD3DSurface **surface) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE LockRect(
+        UINT level,
+        WINED3DLOCKED_RECT *locked_rect,
+        const RECT *rect,
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnlockRect(
+        UINT level) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddDirtyRect(
+        const RECT *dirty_rect) = 0;
+
+};
+#else
+typedef struct IWineD3DTextureVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DTexture* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DTexture* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DTexture* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DTexture* This,
+        IUnknown **parent);
+
+    /*** IWineD3DResource methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetDevice)(
+        IWineD3DTexture* This,
+        IWineD3DDevice **device);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        IWineD3DTexture* This,
+        REFGUID guid,
+        const void *data,
+        DWORD data_size,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        IWineD3DTexture* This,
+        REFGUID guid,
+        void *data,
+        DWORD *data_size);
+
+    HRESULT (STDMETHODCALLTYPE *FreePrivateData)(
+        IWineD3DTexture* This,
+        REFGUID guid);
+
+    DWORD (STDMETHODCALLTYPE *SetPriority)(
+        IWineD3DTexture* This,
+        DWORD new_priority);
+
+    DWORD (STDMETHODCALLTYPE *GetPriority)(
+        IWineD3DTexture* This);
+
+    void (STDMETHODCALLTYPE *PreLoad)(
+        IWineD3DTexture* This);
+
+    void (STDMETHODCALLTYPE *UnLoad)(
+        IWineD3DTexture* This);
+
+    WINED3DRESOURCETYPE (STDMETHODCALLTYPE *GetType)(
+        IWineD3DTexture* This);
+
+    /*** IWineD3DBaseTexture methods ***/
+    DWORD (STDMETHODCALLTYPE *SetLOD)(
+        IWineD3DTexture* This,
+        DWORD new_lod);
+
+    DWORD (STDMETHODCALLTYPE *GetLOD)(
+        IWineD3DTexture* This);
+
+    DWORD (STDMETHODCALLTYPE *GetLevelCount)(
+        IWineD3DTexture* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetAutoGenFilterType)(
+        IWineD3DTexture* This,
+        WINED3DTEXTUREFILTERTYPE filter_type);
+
+    WINED3DTEXTUREFILTERTYPE (STDMETHODCALLTYPE *GetAutoGenFilterType)(
+        IWineD3DTexture* This);
+
+    void (STDMETHODCALLTYPE *GenerateMipSubLevels)(
+        IWineD3DTexture* This);
+
+    BOOL (STDMETHODCALLTYPE *SetDirty)(
+        IWineD3DTexture* This,
+        BOOL dirty);
+
+    BOOL (STDMETHODCALLTYPE *GetDirty)(
+        IWineD3DTexture* This);
+
+    HRESULT (STDMETHODCALLTYPE *BindTexture)(
+        IWineD3DTexture* This);
+
+    UINT (STDMETHODCALLTYPE *GetTextureDimensions)(
+        IWineD3DTexture* This);
+
+    BOOL (STDMETHODCALLTYPE *IsCondNP2)(
+        IWineD3DTexture* This);
+
+    void (STDMETHODCALLTYPE *ApplyStateChanges)(
+        IWineD3DTexture* This,
+        const DWORD texture_states[33],
+        const DWORD sampler_states[14]);
+
+    /*** IWineD3DTexture methods ***/
+    void (STDMETHODCALLTYPE *Destroy)(
+        IWineD3DTexture* This,
+        ULONG (STDMETHODCALLTYPE * destroy_surface_callback)(IWineD3DSurface *pSurface));
+
+    HRESULT (STDMETHODCALLTYPE *GetLevelDesc)(
+        IWineD3DTexture* This,
+        UINT level,
+        WINED3DSURFACE_DESC *desc);
+
+    HRESULT (STDMETHODCALLTYPE *GetSurfaceLevel)(
+        IWineD3DTexture* This,
+        UINT level,
+        IWineD3DSurface **surface);
+
+    HRESULT (STDMETHODCALLTYPE *LockRect)(
+        IWineD3DTexture* This,
+        UINT level,
+        WINED3DLOCKED_RECT *locked_rect,
+        const RECT *rect,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *UnlockRect)(
+        IWineD3DTexture* This,
+        UINT level);
+
+    HRESULT (STDMETHODCALLTYPE *AddDirtyRect)(
+        IWineD3DTexture* This,
+        const RECT *dirty_rect);
+
+    END_INTERFACE
+} IWineD3DTextureVtbl;
+interface IWineD3DTexture {
+    CONST_VTBL IWineD3DTextureVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DTexture_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DTexture_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DTexture_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DTexture_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DResource methods ***/
+#define IWineD3DTexture_GetDevice(This,device) (This)->lpVtbl->GetDevice(This,device)
+#define IWineD3DTexture_SetPrivateData(This,guid,data,data_size,flags) (This)->lpVtbl->SetPrivateData(This,guid,data,data_size,flags)
+#define IWineD3DTexture_GetPrivateData(This,guid,data,data_size) (This)->lpVtbl->GetPrivateData(This,guid,data,data_size)
+#define IWineD3DTexture_FreePrivateData(This,guid) (This)->lpVtbl->FreePrivateData(This,guid)
+#define IWineD3DTexture_SetPriority(This,new_priority) (This)->lpVtbl->SetPriority(This,new_priority)
+#define IWineD3DTexture_GetPriority(This) (This)->lpVtbl->GetPriority(This)
+#define IWineD3DTexture_PreLoad(This) (This)->lpVtbl->PreLoad(This)
+#define IWineD3DTexture_UnLoad(This) (This)->lpVtbl->UnLoad(This)
+#define IWineD3DTexture_GetType(This) (This)->lpVtbl->GetType(This)
+/*** IWineD3DBaseTexture methods ***/
+#define IWineD3DTexture_SetLOD(This,new_lod) (This)->lpVtbl->SetLOD(This,new_lod)
+#define IWineD3DTexture_GetLOD(This) (This)->lpVtbl->GetLOD(This)
+#define IWineD3DTexture_GetLevelCount(This) (This)->lpVtbl->GetLevelCount(This)
+#define IWineD3DTexture_SetAutoGenFilterType(This,filter_type) (This)->lpVtbl->SetAutoGenFilterType(This,filter_type)
+#define IWineD3DTexture_GetAutoGenFilterType(This) (This)->lpVtbl->GetAutoGenFilterType(This)
+#define IWineD3DTexture_GenerateMipSubLevels(This) (This)->lpVtbl->GenerateMipSubLevels(This)
+#define IWineD3DTexture_SetDirty(This,dirty) (This)->lpVtbl->SetDirty(This,dirty)
+#define IWineD3DTexture_GetDirty(This) (This)->lpVtbl->GetDirty(This)
+#define IWineD3DTexture_BindTexture(This) (This)->lpVtbl->BindTexture(This)
+#define IWineD3DTexture_GetTextureDimensions(This) (This)->lpVtbl->GetTextureDimensions(This)
+#define IWineD3DTexture_IsCondNP2(This) (This)->lpVtbl->IsCondNP2(This)
+#define IWineD3DTexture_ApplyStateChanges(This,texture_states,sampler_states) (This)->lpVtbl->ApplyStateChanges(This,texture_states,sampler_states)
+/*** IWineD3DTexture methods ***/
+#define IWineD3DTexture_Destroy(This,destroy_surface_callback) (This)->lpVtbl->Destroy(This,destroy_surface_callback)
+#define IWineD3DTexture_GetLevelDesc(This,level,desc) (This)->lpVtbl->GetLevelDesc(This,level,desc)
+#define IWineD3DTexture_GetSurfaceLevel(This,level,surface) (This)->lpVtbl->GetSurfaceLevel(This,level,surface)
+#define IWineD3DTexture_LockRect(This,level,locked_rect,rect,flags) (This)->lpVtbl->LockRect(This,level,locked_rect,rect,flags)
+#define IWineD3DTexture_UnlockRect(This,level) (This)->lpVtbl->UnlockRect(This,level)
+#define IWineD3DTexture_AddDirtyRect(This,dirty_rect) (This)->lpVtbl->AddDirtyRect(This,dirty_rect)
+#endif
+
+#endif
+
+void STDMETHODCALLTYPE IWineD3DTexture_Destroy_Proxy(
+    IWineD3DTexture* This,
+    ULONG (STDMETHODCALLTYPE * destroy_surface_callback)(IWineD3DSurface *pSurface));
+void __RPC_STUB IWineD3DTexture_Destroy_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DTexture_GetLevelDesc_Proxy(
+    IWineD3DTexture* This,
+    UINT level,
+    WINED3DSURFACE_DESC *desc);
+void __RPC_STUB IWineD3DTexture_GetLevelDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DTexture_GetSurfaceLevel_Proxy(
+    IWineD3DTexture* This,
+    UINT level,
+    IWineD3DSurface **surface);
+void __RPC_STUB IWineD3DTexture_GetSurfaceLevel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DTexture_LockRect_Proxy(
+    IWineD3DTexture* This,
+    UINT level,
+    WINED3DLOCKED_RECT *locked_rect,
+    const RECT *rect,
+    DWORD flags);
+void __RPC_STUB IWineD3DTexture_LockRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DTexture_UnlockRect_Proxy(
+    IWineD3DTexture* This,
+    UINT level);
+void __RPC_STUB IWineD3DTexture_UnlockRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DTexture_AddDirtyRect_Proxy(
+    IWineD3DTexture* This,
+    const RECT *dirty_rect);
+void __RPC_STUB IWineD3DTexture_AddDirtyRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DTexture_INTERFACE_DEFINED__ */
+
+#ifndef __IWineD3DCubeTexture_FWD_DEFINED__
+#define __IWineD3DCubeTexture_FWD_DEFINED__
+typedef interface IWineD3DCubeTexture IWineD3DCubeTexture;
+#endif
+
+/*****************************************************************************
+ * IWineD3DCubeTexture interface
+ */
+#ifndef __IWineD3DCubeTexture_INTERFACE_DEFINED__
+#define __IWineD3DCubeTexture_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DCubeTexture, 0x41752900, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DCubeTexture : public IWineD3DBaseTexture
+{
+    virtual void STDMETHODCALLTYPE Destroy(
+        ULONG (STDMETHODCALLTYPE * destroy_surface_callback)(IWineD3DSurface *pSurface)) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetLevelDesc(
+        UINT level,
+        WINED3DSURFACE_DESC *desc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCubeMapSurface(
+        WINED3DCUBEMAP_FACES face,
+        UINT level,
+        IWineD3DSurface **surface) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE LockRect(
+        WINED3DCUBEMAP_FACES face,
+        UINT level,
+        WINED3DLOCKED_RECT *locked_rect,
+        const RECT *rect,
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnlockRect(
+        WINED3DCUBEMAP_FACES face,
+        UINT level) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddDirtyRect(
+        WINED3DCUBEMAP_FACES face,
+        const RECT *dirty_rect) = 0;
+
+};
+#else
+typedef struct IWineD3DCubeTextureVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DCubeTexture* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DCubeTexture* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DCubeTexture* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DCubeTexture* This,
+        IUnknown **parent);
+
+    /*** IWineD3DResource methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetDevice)(
+        IWineD3DCubeTexture* This,
+        IWineD3DDevice **device);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        IWineD3DCubeTexture* This,
+        REFGUID guid,
+        const void *data,
+        DWORD data_size,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        IWineD3DCubeTexture* This,
+        REFGUID guid,
+        void *data,
+        DWORD *data_size);
+
+    HRESULT (STDMETHODCALLTYPE *FreePrivateData)(
+        IWineD3DCubeTexture* This,
+        REFGUID guid);
+
+    DWORD (STDMETHODCALLTYPE *SetPriority)(
+        IWineD3DCubeTexture* This,
+        DWORD new_priority);
+
+    DWORD (STDMETHODCALLTYPE *GetPriority)(
+        IWineD3DCubeTexture* This);
+
+    void (STDMETHODCALLTYPE *PreLoad)(
+        IWineD3DCubeTexture* This);
+
+    void (STDMETHODCALLTYPE *UnLoad)(
+        IWineD3DCubeTexture* This);
+
+    WINED3DRESOURCETYPE (STDMETHODCALLTYPE *GetType)(
+        IWineD3DCubeTexture* This);
+
+    /*** IWineD3DBaseTexture methods ***/
+    DWORD (STDMETHODCALLTYPE *SetLOD)(
+        IWineD3DCubeTexture* This,
+        DWORD new_lod);
+
+    DWORD (STDMETHODCALLTYPE *GetLOD)(
+        IWineD3DCubeTexture* This);
+
+    DWORD (STDMETHODCALLTYPE *GetLevelCount)(
+        IWineD3DCubeTexture* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetAutoGenFilterType)(
+        IWineD3DCubeTexture* This,
+        WINED3DTEXTUREFILTERTYPE filter_type);
+
+    WINED3DTEXTUREFILTERTYPE (STDMETHODCALLTYPE *GetAutoGenFilterType)(
+        IWineD3DCubeTexture* This);
+
+    void (STDMETHODCALLTYPE *GenerateMipSubLevels)(
+        IWineD3DCubeTexture* This);
+
+    BOOL (STDMETHODCALLTYPE *SetDirty)(
+        IWineD3DCubeTexture* This,
+        BOOL dirty);
+
+    BOOL (STDMETHODCALLTYPE *GetDirty)(
+        IWineD3DCubeTexture* This);
+
+    HRESULT (STDMETHODCALLTYPE *BindTexture)(
+        IWineD3DCubeTexture* This);
+
+    UINT (STDMETHODCALLTYPE *GetTextureDimensions)(
+        IWineD3DCubeTexture* This);
+
+    BOOL (STDMETHODCALLTYPE *IsCondNP2)(
+        IWineD3DCubeTexture* This);
+
+    void (STDMETHODCALLTYPE *ApplyStateChanges)(
+        IWineD3DCubeTexture* This,
+        const DWORD texture_states[33],
+        const DWORD sampler_states[14]);
+
+    /*** IWineD3DCubeTexture methods ***/
+    void (STDMETHODCALLTYPE *Destroy)(
+        IWineD3DCubeTexture* This,
+        ULONG (STDMETHODCALLTYPE * destroy_surface_callback)(IWineD3DSurface *pSurface));
+
+    HRESULT (STDMETHODCALLTYPE *GetLevelDesc)(
+        IWineD3DCubeTexture* This,
+        UINT level,
+        WINED3DSURFACE_DESC *desc);
+
+    HRESULT (STDMETHODCALLTYPE *GetCubeMapSurface)(
+        IWineD3DCubeTexture* This,
+        WINED3DCUBEMAP_FACES face,
+        UINT level,
+        IWineD3DSurface **surface);
+
+    HRESULT (STDMETHODCALLTYPE *LockRect)(
+        IWineD3DCubeTexture* This,
+        WINED3DCUBEMAP_FACES face,
+        UINT level,
+        WINED3DLOCKED_RECT *locked_rect,
+        const RECT *rect,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *UnlockRect)(
+        IWineD3DCubeTexture* This,
+        WINED3DCUBEMAP_FACES face,
+        UINT level);
+
+    HRESULT (STDMETHODCALLTYPE *AddDirtyRect)(
+        IWineD3DCubeTexture* This,
+        WINED3DCUBEMAP_FACES face,
+        const RECT *dirty_rect);
+
+    END_INTERFACE
+} IWineD3DCubeTextureVtbl;
+interface IWineD3DCubeTexture {
+    CONST_VTBL IWineD3DCubeTextureVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DCubeTexture_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DCubeTexture_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DCubeTexture_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DCubeTexture_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DResource methods ***/
+#define IWineD3DCubeTexture_GetDevice(This,device) (This)->lpVtbl->GetDevice(This,device)
+#define IWineD3DCubeTexture_SetPrivateData(This,guid,data,data_size,flags) (This)->lpVtbl->SetPrivateData(This,guid,data,data_size,flags)
+#define IWineD3DCubeTexture_GetPrivateData(This,guid,data,data_size) (This)->lpVtbl->GetPrivateData(This,guid,data,data_size)
+#define IWineD3DCubeTexture_FreePrivateData(This,guid) (This)->lpVtbl->FreePrivateData(This,guid)
+#define IWineD3DCubeTexture_SetPriority(This,new_priority) (This)->lpVtbl->SetPriority(This,new_priority)
+#define IWineD3DCubeTexture_GetPriority(This) (This)->lpVtbl->GetPriority(This)
+#define IWineD3DCubeTexture_PreLoad(This) (This)->lpVtbl->PreLoad(This)
+#define IWineD3DCubeTexture_UnLoad(This) (This)->lpVtbl->UnLoad(This)
+#define IWineD3DCubeTexture_GetType(This) (This)->lpVtbl->GetType(This)
+/*** IWineD3DBaseTexture methods ***/
+#define IWineD3DCubeTexture_SetLOD(This,new_lod) (This)->lpVtbl->SetLOD(This,new_lod)
+#define IWineD3DCubeTexture_GetLOD(This) (This)->lpVtbl->GetLOD(This)
+#define IWineD3DCubeTexture_GetLevelCount(This) (This)->lpVtbl->GetLevelCount(This)
+#define IWineD3DCubeTexture_SetAutoGenFilterType(This,filter_type) (This)->lpVtbl->SetAutoGenFilterType(This,filter_type)
+#define IWineD3DCubeTexture_GetAutoGenFilterType(This) (This)->lpVtbl->GetAutoGenFilterType(This)
+#define IWineD3DCubeTexture_GenerateMipSubLevels(This) (This)->lpVtbl->GenerateMipSubLevels(This)
+#define IWineD3DCubeTexture_SetDirty(This,dirty) (This)->lpVtbl->SetDirty(This,dirty)
+#define IWineD3DCubeTexture_GetDirty(This) (This)->lpVtbl->GetDirty(This)
+#define IWineD3DCubeTexture_BindTexture(This) (This)->lpVtbl->BindTexture(This)
+#define IWineD3DCubeTexture_GetTextureDimensions(This) (This)->lpVtbl->GetTextureDimensions(This)
+#define IWineD3DCubeTexture_IsCondNP2(This) (This)->lpVtbl->IsCondNP2(This)
+#define IWineD3DCubeTexture_ApplyStateChanges(This,texture_states,sampler_states) (This)->lpVtbl->ApplyStateChanges(This,texture_states,sampler_states)
+/*** IWineD3DCubeTexture methods ***/
+#define IWineD3DCubeTexture_Destroy(This,destroy_surface_callback) (This)->lpVtbl->Destroy(This,destroy_surface_callback)
+#define IWineD3DCubeTexture_GetLevelDesc(This,level,desc) (This)->lpVtbl->GetLevelDesc(This,level,desc)
+#define IWineD3DCubeTexture_GetCubeMapSurface(This,face,level,surface) (This)->lpVtbl->GetCubeMapSurface(This,face,level,surface)
+#define IWineD3DCubeTexture_LockRect(This,face,level,locked_rect,rect,flags) (This)->lpVtbl->LockRect(This,face,level,locked_rect,rect,flags)
+#define IWineD3DCubeTexture_UnlockRect(This,face,level) (This)->lpVtbl->UnlockRect(This,face,level)
+#define IWineD3DCubeTexture_AddDirtyRect(This,face,dirty_rect) (This)->lpVtbl->AddDirtyRect(This,face,dirty_rect)
+#endif
+
+#endif
+
+void STDMETHODCALLTYPE IWineD3DCubeTexture_Destroy_Proxy(
+    IWineD3DCubeTexture* This,
+    ULONG (STDMETHODCALLTYPE * destroy_surface_callback)(IWineD3DSurface *pSurface));
+void __RPC_STUB IWineD3DCubeTexture_Destroy_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DCubeTexture_GetLevelDesc_Proxy(
+    IWineD3DCubeTexture* This,
+    UINT level,
+    WINED3DSURFACE_DESC *desc);
+void __RPC_STUB IWineD3DCubeTexture_GetLevelDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DCubeTexture_GetCubeMapSurface_Proxy(
+    IWineD3DCubeTexture* This,
+    WINED3DCUBEMAP_FACES face,
+    UINT level,
+    IWineD3DSurface **surface);
+void __RPC_STUB IWineD3DCubeTexture_GetCubeMapSurface_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DCubeTexture_LockRect_Proxy(
+    IWineD3DCubeTexture* This,
+    WINED3DCUBEMAP_FACES face,
+    UINT level,
+    WINED3DLOCKED_RECT *locked_rect,
+    const RECT *rect,
+    DWORD flags);
+void __RPC_STUB IWineD3DCubeTexture_LockRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DCubeTexture_UnlockRect_Proxy(
+    IWineD3DCubeTexture* This,
+    WINED3DCUBEMAP_FACES face,
+    UINT level);
+void __RPC_STUB IWineD3DCubeTexture_UnlockRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DCubeTexture_AddDirtyRect_Proxy(
+    IWineD3DCubeTexture* This,
+    WINED3DCUBEMAP_FACES face,
+    const RECT *dirty_rect);
+void __RPC_STUB IWineD3DCubeTexture_AddDirtyRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DCubeTexture_INTERFACE_DEFINED__ */
+
+#ifndef __IWineD3DVolumeTexture_FWD_DEFINED__
+#define __IWineD3DVolumeTexture_FWD_DEFINED__
+typedef interface IWineD3DVolumeTexture IWineD3DVolumeTexture;
+#endif
+
+/*****************************************************************************
+ * IWineD3DVolumeTexture interface
+ */
+#ifndef __IWineD3DVolumeTexture_INTERFACE_DEFINED__
+#define __IWineD3DVolumeTexture_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DVolumeTexture, 0x7b39470c, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DVolumeTexture : public IWineD3DBaseTexture
+{
+    virtual void STDMETHODCALLTYPE Destroy(
+        ULONG (STDMETHODCALLTYPE * destroy_volume_callback)(IWineD3DVolume *pVolume)) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetLevelDesc(
+        UINT level,
+        WINED3DVOLUME_DESC *desc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetVolumeLevel(
+        UINT level,
+        IWineD3DVolume **volume) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE LockBox(
+        UINT level,
+        WINED3DLOCKED_BOX *locked_box,
+        const WINED3DBOX *box,
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnlockBox(
+        UINT level) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddDirtyBox(
+        const WINED3DBOX *dirty_box) = 0;
+
+};
+#else
+typedef struct IWineD3DVolumeTextureVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DVolumeTexture* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DVolumeTexture* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DVolumeTexture* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DVolumeTexture* This,
+        IUnknown **parent);
+
+    /*** IWineD3DResource methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetDevice)(
+        IWineD3DVolumeTexture* This,
+        IWineD3DDevice **device);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        IWineD3DVolumeTexture* This,
+        REFGUID guid,
+        const void *data,
+        DWORD data_size,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        IWineD3DVolumeTexture* This,
+        REFGUID guid,
+        void *data,
+        DWORD *data_size);
+
+    HRESULT (STDMETHODCALLTYPE *FreePrivateData)(
+        IWineD3DVolumeTexture* This,
+        REFGUID guid);
+
+    DWORD (STDMETHODCALLTYPE *SetPriority)(
+        IWineD3DVolumeTexture* This,
+        DWORD new_priority);
+
+    DWORD (STDMETHODCALLTYPE *GetPriority)(
+        IWineD3DVolumeTexture* This);
+
+    void (STDMETHODCALLTYPE *PreLoad)(
+        IWineD3DVolumeTexture* This);
+
+    void (STDMETHODCALLTYPE *UnLoad)(
+        IWineD3DVolumeTexture* This);
+
+    WINED3DRESOURCETYPE (STDMETHODCALLTYPE *GetType)(
+        IWineD3DVolumeTexture* This);
+
+    /*** IWineD3DBaseTexture methods ***/
+    DWORD (STDMETHODCALLTYPE *SetLOD)(
+        IWineD3DVolumeTexture* This,
+        DWORD new_lod);
+
+    DWORD (STDMETHODCALLTYPE *GetLOD)(
+        IWineD3DVolumeTexture* This);
+
+    DWORD (STDMETHODCALLTYPE *GetLevelCount)(
+        IWineD3DVolumeTexture* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetAutoGenFilterType)(
+        IWineD3DVolumeTexture* This,
+        WINED3DTEXTUREFILTERTYPE filter_type);
+
+    WINED3DTEXTUREFILTERTYPE (STDMETHODCALLTYPE *GetAutoGenFilterType)(
+        IWineD3DVolumeTexture* This);
+
+    void (STDMETHODCALLTYPE *GenerateMipSubLevels)(
+        IWineD3DVolumeTexture* This);
+
+    BOOL (STDMETHODCALLTYPE *SetDirty)(
+        IWineD3DVolumeTexture* This,
+        BOOL dirty);
+
+    BOOL (STDMETHODCALLTYPE *GetDirty)(
+        IWineD3DVolumeTexture* This);
+
+    HRESULT (STDMETHODCALLTYPE *BindTexture)(
+        IWineD3DVolumeTexture* This);
+
+    UINT (STDMETHODCALLTYPE *GetTextureDimensions)(
+        IWineD3DVolumeTexture* This);
+
+    BOOL (STDMETHODCALLTYPE *IsCondNP2)(
+        IWineD3DVolumeTexture* This);
+
+    void (STDMETHODCALLTYPE *ApplyStateChanges)(
+        IWineD3DVolumeTexture* This,
+        const DWORD texture_states[33],
+        const DWORD sampler_states[14]);
+
+    /*** IWineD3DVolumeTexture methods ***/
+    void (STDMETHODCALLTYPE *Destroy)(
+        IWineD3DVolumeTexture* This,
+        ULONG (STDMETHODCALLTYPE * destroy_volume_callback)(IWineD3DVolume *pVolume));
+
+    HRESULT (STDMETHODCALLTYPE *GetLevelDesc)(
+        IWineD3DVolumeTexture* This,
+        UINT level,
+        WINED3DVOLUME_DESC *desc);
+
+    HRESULT (STDMETHODCALLTYPE *GetVolumeLevel)(
+        IWineD3DVolumeTexture* This,
+        UINT level,
+        IWineD3DVolume **volume);
+
+    HRESULT (STDMETHODCALLTYPE *LockBox)(
+        IWineD3DVolumeTexture* This,
+        UINT level,
+        WINED3DLOCKED_BOX *locked_box,
+        const WINED3DBOX *box,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *UnlockBox)(
+        IWineD3DVolumeTexture* This,
+        UINT level);
+
+    HRESULT (STDMETHODCALLTYPE *AddDirtyBox)(
+        IWineD3DVolumeTexture* This,
+        const WINED3DBOX *dirty_box);
+
+    END_INTERFACE
+} IWineD3DVolumeTextureVtbl;
+interface IWineD3DVolumeTexture {
+    CONST_VTBL IWineD3DVolumeTextureVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DVolumeTexture_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DVolumeTexture_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DVolumeTexture_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DVolumeTexture_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DResource methods ***/
+#define IWineD3DVolumeTexture_GetDevice(This,device) (This)->lpVtbl->GetDevice(This,device)
+#define IWineD3DVolumeTexture_SetPrivateData(This,guid,data,data_size,flags) (This)->lpVtbl->SetPrivateData(This,guid,data,data_size,flags)
+#define IWineD3DVolumeTexture_GetPrivateData(This,guid,data,data_size) (This)->lpVtbl->GetPrivateData(This,guid,data,data_size)
+#define IWineD3DVolumeTexture_FreePrivateData(This,guid) (This)->lpVtbl->FreePrivateData(This,guid)
+#define IWineD3DVolumeTexture_SetPriority(This,new_priority) (This)->lpVtbl->SetPriority(This,new_priority)
+#define IWineD3DVolumeTexture_GetPriority(This) (This)->lpVtbl->GetPriority(This)
+#define IWineD3DVolumeTexture_PreLoad(This) (This)->lpVtbl->PreLoad(This)
+#define IWineD3DVolumeTexture_UnLoad(This) (This)->lpVtbl->UnLoad(This)
+#define IWineD3DVolumeTexture_GetType(This) (This)->lpVtbl->GetType(This)
+/*** IWineD3DBaseTexture methods ***/
+#define IWineD3DVolumeTexture_SetLOD(This,new_lod) (This)->lpVtbl->SetLOD(This,new_lod)
+#define IWineD3DVolumeTexture_GetLOD(This) (This)->lpVtbl->GetLOD(This)
+#define IWineD3DVolumeTexture_GetLevelCount(This) (This)->lpVtbl->GetLevelCount(This)
+#define IWineD3DVolumeTexture_SetAutoGenFilterType(This,filter_type) (This)->lpVtbl->SetAutoGenFilterType(This,filter_type)
+#define IWineD3DVolumeTexture_GetAutoGenFilterType(This) (This)->lpVtbl->GetAutoGenFilterType(This)
+#define IWineD3DVolumeTexture_GenerateMipSubLevels(This) (This)->lpVtbl->GenerateMipSubLevels(This)
+#define IWineD3DVolumeTexture_SetDirty(This,dirty) (This)->lpVtbl->SetDirty(This,dirty)
+#define IWineD3DVolumeTexture_GetDirty(This) (This)->lpVtbl->GetDirty(This)
+#define IWineD3DVolumeTexture_BindTexture(This) (This)->lpVtbl->BindTexture(This)
+#define IWineD3DVolumeTexture_GetTextureDimensions(This) (This)->lpVtbl->GetTextureDimensions(This)
+#define IWineD3DVolumeTexture_IsCondNP2(This) (This)->lpVtbl->IsCondNP2(This)
+#define IWineD3DVolumeTexture_ApplyStateChanges(This,texture_states,sampler_states) (This)->lpVtbl->ApplyStateChanges(This,texture_states,sampler_states)
+/*** IWineD3DVolumeTexture methods ***/
+#define IWineD3DVolumeTexture_Destroy(This,destroy_volume_callback) (This)->lpVtbl->Destroy(This,destroy_volume_callback)
+#define IWineD3DVolumeTexture_GetLevelDesc(This,level,desc) (This)->lpVtbl->GetLevelDesc(This,level,desc)
+#define IWineD3DVolumeTexture_GetVolumeLevel(This,level,volume) (This)->lpVtbl->GetVolumeLevel(This,level,volume)
+#define IWineD3DVolumeTexture_LockBox(This,level,locked_box,box,flags) (This)->lpVtbl->LockBox(This,level,locked_box,box,flags)
+#define IWineD3DVolumeTexture_UnlockBox(This,level) (This)->lpVtbl->UnlockBox(This,level)
+#define IWineD3DVolumeTexture_AddDirtyBox(This,dirty_box) (This)->lpVtbl->AddDirtyBox(This,dirty_box)
+#endif
+
+#endif
+
+void STDMETHODCALLTYPE IWineD3DVolumeTexture_Destroy_Proxy(
+    IWineD3DVolumeTexture* This,
+    ULONG (STDMETHODCALLTYPE * destroy_volume_callback)(IWineD3DVolume *pVolume));
+void __RPC_STUB IWineD3DVolumeTexture_Destroy_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DVolumeTexture_GetLevelDesc_Proxy(
+    IWineD3DVolumeTexture* This,
+    UINT level,
+    WINED3DVOLUME_DESC *desc);
+void __RPC_STUB IWineD3DVolumeTexture_GetLevelDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DVolumeTexture_GetVolumeLevel_Proxy(
+    IWineD3DVolumeTexture* This,
+    UINT level,
+    IWineD3DVolume **volume);
+void __RPC_STUB IWineD3DVolumeTexture_GetVolumeLevel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DVolumeTexture_LockBox_Proxy(
+    IWineD3DVolumeTexture* This,
+    UINT level,
+    WINED3DLOCKED_BOX *locked_box,
+    const WINED3DBOX *box,
+    DWORD flags);
+void __RPC_STUB IWineD3DVolumeTexture_LockBox_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DVolumeTexture_UnlockBox_Proxy(
+    IWineD3DVolumeTexture* This,
+    UINT level);
+void __RPC_STUB IWineD3DVolumeTexture_UnlockBox_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DVolumeTexture_AddDirtyBox_Proxy(
+    IWineD3DVolumeTexture* This,
+    const WINED3DBOX *dirty_box);
+void __RPC_STUB IWineD3DVolumeTexture_AddDirtyBox_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DVolumeTexture_INTERFACE_DEFINED__ */
+
+#ifndef __IWineD3DVertexDeclaration_FWD_DEFINED__
+#define __IWineD3DVertexDeclaration_FWD_DEFINED__
+typedef interface IWineD3DVertexDeclaration IWineD3DVertexDeclaration;
+#endif
+
+/*****************************************************************************
+ * IWineD3DVertexDeclaration interface
+ */
+#ifndef __IWineD3DVertexDeclaration_INTERFACE_DEFINED__
+#define __IWineD3DVertexDeclaration_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DVertexDeclaration, 0x7cd55be6, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DVertexDeclaration : public IWineD3DBase
+{
+    virtual HRESULT STDMETHODCALLTYPE GetDevice(
+        IWineD3DDevice **device) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDeclaration(
+        WINED3DVERTEXELEMENT *elements,
+        UINT *element_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetDeclaration(
+        const WINED3DVERTEXELEMENT *elements,
+        UINT element_count) = 0;
+
+};
+#else
+typedef struct IWineD3DVertexDeclarationVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DVertexDeclaration* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DVertexDeclaration* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DVertexDeclaration* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DVertexDeclaration* This,
+        IUnknown **parent);
+
+    /*** IWineD3DVertexDeclaration methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetDevice)(
+        IWineD3DVertexDeclaration* This,
+        IWineD3DDevice **device);
+
+    HRESULT (STDMETHODCALLTYPE *GetDeclaration)(
+        IWineD3DVertexDeclaration* This,
+        WINED3DVERTEXELEMENT *elements,
+        UINT *element_count);
+
+    HRESULT (STDMETHODCALLTYPE *SetDeclaration)(
+        IWineD3DVertexDeclaration* This,
+        const WINED3DVERTEXELEMENT *elements,
+        UINT element_count);
+
+    END_INTERFACE
+} IWineD3DVertexDeclarationVtbl;
+interface IWineD3DVertexDeclaration {
+    CONST_VTBL IWineD3DVertexDeclarationVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DVertexDeclaration_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DVertexDeclaration_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DVertexDeclaration_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DVertexDeclaration_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DVertexDeclaration methods ***/
+#define IWineD3DVertexDeclaration_GetDevice(This,device) (This)->lpVtbl->GetDevice(This,device)
+#define IWineD3DVertexDeclaration_GetDeclaration(This,elements,element_count) (This)->lpVtbl->GetDeclaration(This,elements,element_count)
+#define IWineD3DVertexDeclaration_SetDeclaration(This,elements,element_count) (This)->lpVtbl->SetDeclaration(This,elements,element_count)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DVertexDeclaration_GetDevice_Proxy(
+    IWineD3DVertexDeclaration* This,
+    IWineD3DDevice **device);
+void __RPC_STUB IWineD3DVertexDeclaration_GetDevice_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DVertexDeclaration_GetDeclaration_Proxy(
+    IWineD3DVertexDeclaration* This,
+    WINED3DVERTEXELEMENT *elements,
+    UINT *element_count);
+void __RPC_STUB IWineD3DVertexDeclaration_GetDeclaration_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DVertexDeclaration_SetDeclaration_Proxy(
+    IWineD3DVertexDeclaration* This,
+    const WINED3DVERTEXELEMENT *elements,
+    UINT element_count);
+void __RPC_STUB IWineD3DVertexDeclaration_SetDeclaration_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DVertexDeclaration_INTERFACE_DEFINED__ */
+
+#ifndef __IWineD3DStateBlock_FWD_DEFINED__
+#define __IWineD3DStateBlock_FWD_DEFINED__
+typedef interface IWineD3DStateBlock IWineD3DStateBlock;
+#endif
+
+/*****************************************************************************
+ * IWineD3DStateBlock interface
+ */
+#ifndef __IWineD3DStateBlock_INTERFACE_DEFINED__
+#define __IWineD3DStateBlock_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DStateBlock, 0x83b073ce, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DStateBlock : public IWineD3DBase
+{
+    virtual HRESULT STDMETHODCALLTYPE GetDevice(
+        IWineD3DDevice **device) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Capture(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Apply(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE InitStartupStateBlock(
+        ) = 0;
+
+};
+#else
+typedef struct IWineD3DStateBlockVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DStateBlock* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DStateBlock* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DStateBlock* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DStateBlock* This,
+        IUnknown **parent);
+
+    /*** IWineD3DStateBlock methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetDevice)(
+        IWineD3DStateBlock* This,
+        IWineD3DDevice **device);
+
+    HRESULT (STDMETHODCALLTYPE *Capture)(
+        IWineD3DStateBlock* This);
+
+    HRESULT (STDMETHODCALLTYPE *Apply)(
+        IWineD3DStateBlock* This);
+
+    HRESULT (STDMETHODCALLTYPE *InitStartupStateBlock)(
+        IWineD3DStateBlock* This);
+
+    END_INTERFACE
+} IWineD3DStateBlockVtbl;
+interface IWineD3DStateBlock {
+    CONST_VTBL IWineD3DStateBlockVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DStateBlock_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DStateBlock_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DStateBlock_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DStateBlock_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DStateBlock methods ***/
+#define IWineD3DStateBlock_GetDevice(This,device) (This)->lpVtbl->GetDevice(This,device)
+#define IWineD3DStateBlock_Capture(This) (This)->lpVtbl->Capture(This)
+#define IWineD3DStateBlock_Apply(This) (This)->lpVtbl->Apply(This)
+#define IWineD3DStateBlock_InitStartupStateBlock(This) (This)->lpVtbl->InitStartupStateBlock(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DStateBlock_GetDevice_Proxy(
+    IWineD3DStateBlock* This,
+    IWineD3DDevice **device);
+void __RPC_STUB IWineD3DStateBlock_GetDevice_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DStateBlock_Capture_Proxy(
+    IWineD3DStateBlock* This);
+void __RPC_STUB IWineD3DStateBlock_Capture_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DStateBlock_Apply_Proxy(
+    IWineD3DStateBlock* This);
+void __RPC_STUB IWineD3DStateBlock_Apply_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DStateBlock_InitStartupStateBlock_Proxy(
+    IWineD3DStateBlock* This);
+void __RPC_STUB IWineD3DStateBlock_InitStartupStateBlock_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DStateBlock_INTERFACE_DEFINED__ */
+
+#ifndef __IWineD3DQuery_FWD_DEFINED__
+#define __IWineD3DQuery_FWD_DEFINED__
+typedef interface IWineD3DQuery IWineD3DQuery;
+#endif
+
+/*****************************************************************************
+ * IWineD3DQuery interface
+ */
+#ifndef __IWineD3DQuery_INTERFACE_DEFINED__
+#define __IWineD3DQuery_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DQuery, 0x905ddbac, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DQuery : public IWineD3DBase
+{
+    virtual HRESULT STDMETHODCALLTYPE GetDevice(
+        IWineD3DDevice **device) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetData(
+        void *data,
+        DWORD data_size,
+        DWORD flags) = 0;
+
+    virtual DWORD STDMETHODCALLTYPE GetDataSize(
+        ) = 0;
+
+    virtual WINED3DQUERYTYPE STDMETHODCALLTYPE GetType(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Issue(
+        DWORD flags) = 0;
+
+};
+#else
+typedef struct IWineD3DQueryVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DQuery* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DQuery* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DQuery* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DQuery* This,
+        IUnknown **parent);
+
+    /*** IWineD3DQuery methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetDevice)(
+        IWineD3DQuery* This,
+        IWineD3DDevice **device);
+
+    HRESULT (STDMETHODCALLTYPE *GetData)(
+        IWineD3DQuery* This,
+        void *data,
+        DWORD data_size,
+        DWORD flags);
+
+    DWORD (STDMETHODCALLTYPE *GetDataSize)(
+        IWineD3DQuery* This);
+
+    WINED3DQUERYTYPE (STDMETHODCALLTYPE *GetType)(
+        IWineD3DQuery* This);
+
+    HRESULT (STDMETHODCALLTYPE *Issue)(
+        IWineD3DQuery* This,
+        DWORD flags);
+
+    END_INTERFACE
+} IWineD3DQueryVtbl;
+interface IWineD3DQuery {
+    CONST_VTBL IWineD3DQueryVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DQuery_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DQuery_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DQuery_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DQuery_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DQuery methods ***/
+#define IWineD3DQuery_GetDevice(This,device) (This)->lpVtbl->GetDevice(This,device)
+#define IWineD3DQuery_GetData(This,data,data_size,flags) (This)->lpVtbl->GetData(This,data,data_size,flags)
+#define IWineD3DQuery_GetDataSize(This) (This)->lpVtbl->GetDataSize(This)
+#define IWineD3DQuery_GetType(This) (This)->lpVtbl->GetType(This)
+#define IWineD3DQuery_Issue(This,flags) (This)->lpVtbl->Issue(This,flags)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DQuery_GetDevice_Proxy(
+    IWineD3DQuery* This,
+    IWineD3DDevice **device);
+void __RPC_STUB IWineD3DQuery_GetDevice_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DQuery_GetData_Proxy(
+    IWineD3DQuery* This,
+    void *data,
+    DWORD data_size,
+    DWORD flags);
+void __RPC_STUB IWineD3DQuery_GetData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+DWORD STDMETHODCALLTYPE IWineD3DQuery_GetDataSize_Proxy(
+    IWineD3DQuery* This);
+void __RPC_STUB IWineD3DQuery_GetDataSize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+WINED3DQUERYTYPE STDMETHODCALLTYPE IWineD3DQuery_GetType_Proxy(
+    IWineD3DQuery* This);
+void __RPC_STUB IWineD3DQuery_GetType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DQuery_Issue_Proxy(
+    IWineD3DQuery* This,
+    DWORD flags);
+void __RPC_STUB IWineD3DQuery_Issue_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DQuery_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWineD3DSwapChain interface
+ */
+#ifndef __IWineD3DSwapChain_INTERFACE_DEFINED__
+#define __IWineD3DSwapChain_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DSwapChain, 0x34d01b10, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DSwapChain : public IWineD3DBase
+{
+    virtual void STDMETHODCALLTYPE Destroy(
+        ULONG (STDMETHODCALLTYPE * destroy_surface_callback)(IWineD3DSurface *pSurface)) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDevice(
+        IWineD3DDevice **device) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Present(
+        const RECT *src_rect,
+        const RECT *dst_rect,
+        HWND dst_window_override,
+        const RGNDATA *dirty_region,
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetDestWindowOverride(
+        HWND window) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFrontBufferData(
+        IWineD3DSurface *dst_surface) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetBackBuffer(
+        UINT backbuffer_idx,
+        WINED3DBACKBUFFER_TYPE backbuffer_type,
+        IWineD3DSurface **backbuffer) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetRasterStatus(
+        WINED3DRASTER_STATUS *raster_status) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDisplayMode(
+        WINED3DDISPLAYMODE *mode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPresentParameters(
+        WINED3DPRESENT_PARAMETERS *present_parameters) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetGammaRamp(
+        DWORD flags,
+        const WINED3DGAMMARAMP *ramp) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetGammaRamp(
+        WINED3DGAMMARAMP *ramp) = 0;
+
+};
+#else
+typedef struct IWineD3DSwapChainVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DSwapChain* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DSwapChain* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DSwapChain* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DSwapChain* This,
+        IUnknown **parent);
+
+    /*** IWineD3DSwapChain methods ***/
+    void (STDMETHODCALLTYPE *Destroy)(
+        IWineD3DSwapChain* This,
+        ULONG (STDMETHODCALLTYPE * destroy_surface_callback)(IWineD3DSurface *pSurface));
+
+    HRESULT (STDMETHODCALLTYPE *GetDevice)(
+        IWineD3DSwapChain* This,
+        IWineD3DDevice **device);
+
+    HRESULT (STDMETHODCALLTYPE *Present)(
+        IWineD3DSwapChain* This,
+        const RECT *src_rect,
+        const RECT *dst_rect,
+        HWND dst_window_override,
+        const RGNDATA *dirty_region,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *SetDestWindowOverride)(
+        IWineD3DSwapChain* This,
+        HWND window);
+
+    HRESULT (STDMETHODCALLTYPE *GetFrontBufferData)(
+        IWineD3DSwapChain* This,
+        IWineD3DSurface *dst_surface);
+
+    HRESULT (STDMETHODCALLTYPE *GetBackBuffer)(
+        IWineD3DSwapChain* This,
+        UINT backbuffer_idx,
+        WINED3DBACKBUFFER_TYPE backbuffer_type,
+        IWineD3DSurface **backbuffer);
+
+    HRESULT (STDMETHODCALLTYPE *GetRasterStatus)(
+        IWineD3DSwapChain* This,
+        WINED3DRASTER_STATUS *raster_status);
+
+    HRESULT (STDMETHODCALLTYPE *GetDisplayMode)(
+        IWineD3DSwapChain* This,
+        WINED3DDISPLAYMODE *mode);
+
+    HRESULT (STDMETHODCALLTYPE *GetPresentParameters)(
+        IWineD3DSwapChain* This,
+        WINED3DPRESENT_PARAMETERS *present_parameters);
+
+    HRESULT (STDMETHODCALLTYPE *SetGammaRamp)(
+        IWineD3DSwapChain* This,
+        DWORD flags,
+        const WINED3DGAMMARAMP *ramp);
+
+    HRESULT (STDMETHODCALLTYPE *GetGammaRamp)(
+        IWineD3DSwapChain* This,
+        WINED3DGAMMARAMP *ramp);
+
+    END_INTERFACE
+} IWineD3DSwapChainVtbl;
+interface IWineD3DSwapChain {
+    CONST_VTBL IWineD3DSwapChainVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DSwapChain_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DSwapChain_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DSwapChain_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DSwapChain_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DSwapChain methods ***/
+#define IWineD3DSwapChain_Destroy(This,destroy_surface_callback) (This)->lpVtbl->Destroy(This,destroy_surface_callback)
+#define IWineD3DSwapChain_GetDevice(This,device) (This)->lpVtbl->GetDevice(This,device)
+#define IWineD3DSwapChain_Present(This,src_rect,dst_rect,dst_window_override,dirty_region,flags) (This)->lpVtbl->Present(This,src_rect,dst_rect,dst_window_override,dirty_region,flags)
+#define IWineD3DSwapChain_SetDestWindowOverride(This,window) (This)->lpVtbl->SetDestWindowOverride(This,window)
+#define IWineD3DSwapChain_GetFrontBufferData(This,dst_surface) (This)->lpVtbl->GetFrontBufferData(This,dst_surface)
+#define IWineD3DSwapChain_GetBackBuffer(This,backbuffer_idx,backbuffer_type,backbuffer) (This)->lpVtbl->GetBackBuffer(This,backbuffer_idx,backbuffer_type,backbuffer)
+#define IWineD3DSwapChain_GetRasterStatus(This,raster_status) (This)->lpVtbl->GetRasterStatus(This,raster_status)
+#define IWineD3DSwapChain_GetDisplayMode(This,mode) (This)->lpVtbl->GetDisplayMode(This,mode)
+#define IWineD3DSwapChain_GetPresentParameters(This,present_parameters) (This)->lpVtbl->GetPresentParameters(This,present_parameters)
+#define IWineD3DSwapChain_SetGammaRamp(This,flags,ramp) (This)->lpVtbl->SetGammaRamp(This,flags,ramp)
+#define IWineD3DSwapChain_GetGammaRamp(This,ramp) (This)->lpVtbl->GetGammaRamp(This,ramp)
+#endif
+
+#endif
+
+void STDMETHODCALLTYPE IWineD3DSwapChain_Destroy_Proxy(
+    IWineD3DSwapChain* This,
+    ULONG (STDMETHODCALLTYPE * destroy_surface_callback)(IWineD3DSurface *pSurface));
+void __RPC_STUB IWineD3DSwapChain_Destroy_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSwapChain_GetDevice_Proxy(
+    IWineD3DSwapChain* This,
+    IWineD3DDevice **device);
+void __RPC_STUB IWineD3DSwapChain_GetDevice_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSwapChain_Present_Proxy(
+    IWineD3DSwapChain* This,
+    const RECT *src_rect,
+    const RECT *dst_rect,
+    HWND dst_window_override,
+    const RGNDATA *dirty_region,
+    DWORD flags);
+void __RPC_STUB IWineD3DSwapChain_Present_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSwapChain_SetDestWindowOverride_Proxy(
+    IWineD3DSwapChain* This,
+    HWND window);
+void __RPC_STUB IWineD3DSwapChain_SetDestWindowOverride_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSwapChain_GetFrontBufferData_Proxy(
+    IWineD3DSwapChain* This,
+    IWineD3DSurface *dst_surface);
+void __RPC_STUB IWineD3DSwapChain_GetFrontBufferData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSwapChain_GetBackBuffer_Proxy(
+    IWineD3DSwapChain* This,
+    UINT backbuffer_idx,
+    WINED3DBACKBUFFER_TYPE backbuffer_type,
+    IWineD3DSurface **backbuffer);
+void __RPC_STUB IWineD3DSwapChain_GetBackBuffer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSwapChain_GetRasterStatus_Proxy(
+    IWineD3DSwapChain* This,
+    WINED3DRASTER_STATUS *raster_status);
+void __RPC_STUB IWineD3DSwapChain_GetRasterStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSwapChain_GetDisplayMode_Proxy(
+    IWineD3DSwapChain* This,
+    WINED3DDISPLAYMODE *mode);
+void __RPC_STUB IWineD3DSwapChain_GetDisplayMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSwapChain_GetPresentParameters_Proxy(
+    IWineD3DSwapChain* This,
+    WINED3DPRESENT_PARAMETERS *present_parameters);
+void __RPC_STUB IWineD3DSwapChain_GetPresentParameters_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSwapChain_SetGammaRamp_Proxy(
+    IWineD3DSwapChain* This,
+    DWORD flags,
+    const WINED3DGAMMARAMP *ramp);
+void __RPC_STUB IWineD3DSwapChain_SetGammaRamp_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSwapChain_GetGammaRamp_Proxy(
+    IWineD3DSwapChain* This,
+    WINED3DGAMMARAMP *ramp);
+void __RPC_STUB IWineD3DSwapChain_GetGammaRamp_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DSwapChain_INTERFACE_DEFINED__ */
+
+#ifndef __IWineD3DBaseShader_FWD_DEFINED__
+#define __IWineD3DBaseShader_FWD_DEFINED__
+typedef interface IWineD3DBaseShader IWineD3DBaseShader;
+#endif
+
+/*****************************************************************************
+ * IWineD3DBaseShader interface
+ */
+#ifndef __IWineD3DBaseShader_INTERFACE_DEFINED__
+#define __IWineD3DBaseShader_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DBaseShader, 0xeac93065, 0xa4df, 0x446f, 0x86,0xa1, 0x9e,0xf2,0xbc,0xa4,0x0a,0x3c);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DBaseShader : public IWineD3DBase
+{
+    virtual HRESULT STDMETHODCALLTYPE SetFunction(
+        const DWORD *function) = 0;
+
+};
+#else
+typedef struct IWineD3DBaseShaderVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DBaseShader* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DBaseShader* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DBaseShader* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DBaseShader* This,
+        IUnknown **parent);
+
+    /*** IWineD3DBaseShader methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetFunction)(
+        IWineD3DBaseShader* This,
+        const DWORD *function);
+
+    END_INTERFACE
+} IWineD3DBaseShaderVtbl;
+interface IWineD3DBaseShader {
+    CONST_VTBL IWineD3DBaseShaderVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DBaseShader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DBaseShader_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DBaseShader_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DBaseShader_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DBaseShader methods ***/
+#define IWineD3DBaseShader_SetFunction(This,function) (This)->lpVtbl->SetFunction(This,function)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DBaseShader_SetFunction_Proxy(
+    IWineD3DBaseShader* This,
+    const DWORD *function);
+void __RPC_STUB IWineD3DBaseShader_SetFunction_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DBaseShader_INTERFACE_DEFINED__ */
+
+#ifndef __IWineD3DVertexShader_FWD_DEFINED__
+#define __IWineD3DVertexShader_FWD_DEFINED__
+typedef interface IWineD3DVertexShader IWineD3DVertexShader;
+#endif
+
+/*****************************************************************************
+ * IWineD3DVertexShader interface
+ */
+#ifndef __IWineD3DVertexShader_INTERFACE_DEFINED__
+#define __IWineD3DVertexShader_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DVertexShader, 0x7f7a2b60, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DVertexShader : public IWineD3DBaseShader
+{
+    virtual HRESULT STDMETHODCALLTYPE GetDevice(
+        IWineD3DDevice **device) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFunction(
+        void *data,
+        UINT *data_size) = 0;
+
+    virtual void STDMETHODCALLTYPE FakeSemantics(
+        IWineD3DVertexDeclaration *vertex_declaration) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetLocalConstantsF(
+        UINT start_idx,
+        const float *src_data,
+        UINT vector4f_count) = 0;
+
+};
+#else
+typedef struct IWineD3DVertexShaderVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DVertexShader* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DVertexShader* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DVertexShader* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DVertexShader* This,
+        IUnknown **parent);
+
+    /*** IWineD3DBaseShader methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetFunction)(
+        IWineD3DVertexShader* This,
+        const DWORD *function);
+
+    /*** IWineD3DVertexShader methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetDevice)(
+        IWineD3DVertexShader* This,
+        IWineD3DDevice **device);
+
+    HRESULT (STDMETHODCALLTYPE *GetFunction)(
+        IWineD3DVertexShader* This,
+        void *data,
+        UINT *data_size);
+
+    void (STDMETHODCALLTYPE *FakeSemantics)(
+        IWineD3DVertexShader* This,
+        IWineD3DVertexDeclaration *vertex_declaration);
+
+    HRESULT (STDMETHODCALLTYPE *SetLocalConstantsF)(
+        IWineD3DVertexShader* This,
+        UINT start_idx,
+        const float *src_data,
+        UINT vector4f_count);
+
+    END_INTERFACE
+} IWineD3DVertexShaderVtbl;
+interface IWineD3DVertexShader {
+    CONST_VTBL IWineD3DVertexShaderVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DVertexShader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DVertexShader_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DVertexShader_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DVertexShader_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DBaseShader methods ***/
+#define IWineD3DVertexShader_SetFunction(This,function) (This)->lpVtbl->SetFunction(This,function)
+/*** IWineD3DVertexShader methods ***/
+#define IWineD3DVertexShader_GetDevice(This,device) (This)->lpVtbl->GetDevice(This,device)
+#define IWineD3DVertexShader_GetFunction(This,data,data_size) (This)->lpVtbl->GetFunction(This,data,data_size)
+#define IWineD3DVertexShader_FakeSemantics(This,vertex_declaration) (This)->lpVtbl->FakeSemantics(This,vertex_declaration)
+#define IWineD3DVertexShader_SetLocalConstantsF(This,start_idx,src_data,vector4f_count) (This)->lpVtbl->SetLocalConstantsF(This,start_idx,src_data,vector4f_count)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DVertexShader_GetDevice_Proxy(
+    IWineD3DVertexShader* This,
+    IWineD3DDevice **device);
+void __RPC_STUB IWineD3DVertexShader_GetDevice_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DVertexShader_GetFunction_Proxy(
+    IWineD3DVertexShader* This,
+    void *data,
+    UINT *data_size);
+void __RPC_STUB IWineD3DVertexShader_GetFunction_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWineD3DVertexShader_FakeSemantics_Proxy(
+    IWineD3DVertexShader* This,
+    IWineD3DVertexDeclaration *vertex_declaration);
+void __RPC_STUB IWineD3DVertexShader_FakeSemantics_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DVertexShader_SetLocalConstantsF_Proxy(
+    IWineD3DVertexShader* This,
+    UINT start_idx,
+    const float *src_data,
+    UINT vector4f_count);
+void __RPC_STUB IWineD3DVertexShader_SetLocalConstantsF_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DVertexShader_INTERFACE_DEFINED__ */
+
+#ifndef __IWineD3DPixelShader_FWD_DEFINED__
+#define __IWineD3DPixelShader_FWD_DEFINED__
+typedef interface IWineD3DPixelShader IWineD3DPixelShader;
+#endif
+
+/*****************************************************************************
+ * IWineD3DPixelShader interface
+ */
+#ifndef __IWineD3DPixelShader_INTERFACE_DEFINED__
+#define __IWineD3DPixelShader_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DPixelShader, 0x818503da, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DPixelShader : public IWineD3DBaseShader
+{
+    virtual HRESULT STDMETHODCALLTYPE UpdateSamplers(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDevice(
+        IWineD3DDevice **device) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFunction(
+        void *data,
+        UINT *data_size) = 0;
+
+};
+#else
+typedef struct IWineD3DPixelShaderVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DPixelShader* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DPixelShader* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DPixelShader* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DPixelShader* This,
+        IUnknown **parent);
+
+    /*** IWineD3DBaseShader methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetFunction)(
+        IWineD3DPixelShader* This,
+        const DWORD *function);
+
+    /*** IWineD3DPixelShader methods ***/
+    HRESULT (STDMETHODCALLTYPE *UpdateSamplers)(
+        IWineD3DPixelShader* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetDevice)(
+        IWineD3DPixelShader* This,
+        IWineD3DDevice **device);
+
+    HRESULT (STDMETHODCALLTYPE *GetFunction)(
+        IWineD3DPixelShader* This,
+        void *data,
+        UINT *data_size);
+
+    END_INTERFACE
+} IWineD3DPixelShaderVtbl;
+interface IWineD3DPixelShader {
+    CONST_VTBL IWineD3DPixelShaderVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DPixelShader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DPixelShader_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DPixelShader_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DPixelShader_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DBaseShader methods ***/
+#define IWineD3DPixelShader_SetFunction(This,function) (This)->lpVtbl->SetFunction(This,function)
+/*** IWineD3DPixelShader methods ***/
+#define IWineD3DPixelShader_UpdateSamplers(This) (This)->lpVtbl->UpdateSamplers(This)
+#define IWineD3DPixelShader_GetDevice(This,device) (This)->lpVtbl->GetDevice(This,device)
+#define IWineD3DPixelShader_GetFunction(This,data,data_size) (This)->lpVtbl->GetFunction(This,data,data_size)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DPixelShader_UpdateSamplers_Proxy(
+    IWineD3DPixelShader* This);
+void __RPC_STUB IWineD3DPixelShader_UpdateSamplers_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DPixelShader_GetDevice_Proxy(
+    IWineD3DPixelShader* This,
+    IWineD3DDevice **device);
+void __RPC_STUB IWineD3DPixelShader_GetDevice_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DPixelShader_GetFunction_Proxy(
+    IWineD3DPixelShader* This,
+    void *data,
+    UINT *data_size);
+void __RPC_STUB IWineD3DPixelShader_GetFunction_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DPixelShader_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWineD3DDevice interface
+ */
+#ifndef __IWineD3DDevice_INTERFACE_DEFINED__
+#define __IWineD3DDevice_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DDevice, 0x6d10a2ce, 0x09d0, 0x4a53, 0xa4,0x27, 0x11,0x38,0x8f,0x9f,0x8c,0xa5);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DDevice : public IWineD3DBase
+{
+    virtual HRESULT STDMETHODCALLTYPE CreateVertexBuffer(
+        UINT length,
+        DWORD usage,
+        DWORD fvf,
+        WINED3DPOOL pool,
+        IWineD3DVertexBuffer **vertex_buffer,
+        HANDLE *shared_handle,
+        IUnknown *parent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateIndexBuffer(
+        UINT length,
+        DWORD usage,
+        WINED3DFORMAT format,
+        WINED3DPOOL pool,
+        IWineD3DIndexBuffer **index_buffer,
+        HANDLE *shared_handle,
+        IUnknown *parent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateStateBlock(
+        WINED3DSTATEBLOCKTYPE type,
+        IWineD3DStateBlock **stateblock,
+        IUnknown *parent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateSurface(
+        UINT width,
+        UINT height,
+        WINED3DFORMAT format,
+        BOOL lockable,
+        BOOL discard,
+        UINT level,
+        IWineD3DSurface **surface,
+        WINED3DRESOURCETYPE resource_type,
+        DWORD usage,
+        WINED3DPOOL pool,
+        WINED3DMULTISAMPLE_TYPE multisample_type,
+        DWORD multisample_quality,
+        HANDLE *shared_handle,
+        WINED3DSURFTYPE surface_type,
+        IUnknown *parent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateTexture(
+        UINT width,
+        UINT height,
+        UINT levels,
+        DWORD usage,
+        WINED3DFORMAT format,
+        WINED3DPOOL pool,
+        IWineD3DTexture **texture,
+        HANDLE *shared_handle,
+        IUnknown *parent,
+        HRESULT (STDMETHODCALLTYPE * create_surface_callback)(IUnknown *pDevice,IUnknown *pSuperior,UINT Width,UINT Height,WINED3DFORMAT Format,DWORD Usage,WINED3DPOOL Pool,UINT Level,WINED3DCUBEMAP_FACES Face,IWineD3DSurface **ppSurface,HANDLE *pSharedHandle)) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateVolumeTexture(
+        UINT width,
+        UINT height,
+        UINT depth,
+        UINT levels,
+        DWORD usage,
+        WINED3DFORMAT format,
+        WINED3DPOOL pool,
+        IWineD3DVolumeTexture **texture,
+        HANDLE *shared_handle,
+        IUnknown *parent,
+        HRESULT (STDMETHODCALLTYPE * create_volume_callback)(IUnknown *pDevice,IUnknown *pSuperior,UINT Width,UINT Height,UINT Depth,WINED3DFORMAT Format,WINED3DPOOL Pool,DWORD Usage,IWineD3DVolume **ppVolume,HANDLE *pSharedHandle)) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateVolume(
+        UINT width,
+        UINT height,
+        UINT depth,
+        DWORD usage,
+        WINED3DFORMAT format,
+        WINED3DPOOL pool,
+        IWineD3DVolume **volume,
+        HANDLE *shared_handle,
+        IUnknown *parent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateCubeTexture(
+        UINT edge_length,
+        UINT levels,
+        DWORD usage,
+        WINED3DFORMAT format,
+        WINED3DPOOL pool,
+        IWineD3DCubeTexture **texture,
+        HANDLE *shared_handle,
+        IUnknown *parent,
+        HRESULT (STDMETHODCALLTYPE * create_surface_callback)(IUnknown *pDevice,IUnknown *pSuperior,UINT Width,UINT Height,WINED3DFORMAT Format,DWORD Usage,WINED3DPOOL Pool,UINT Level,WINED3DCUBEMAP_FACES Face,IWineD3DSurface **ppSurface,HANDLE *pSharedHandle)) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateQuery(
+        WINED3DQUERYTYPE type,
+        IWineD3DQuery **query,
+        IUnknown *parent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateSwapChain(
+        WINED3DPRESENT_PARAMETERS *present_parameters,
+        IWineD3DSwapChain **swapchain,
+        IUnknown *parent,
+        HRESULT (STDMETHODCALLTYPE * create_render_target_callback)(IUnknown *pDevice,IUnknown *pSuperior,UINT Width,UINT Height,WINED3DFORMAT Format,WINED3DMULTISAMPLE_TYPE MultiSample,DWORD MultisampleQuality,BOOL Lockable,IWineD3DSurface **ppSurface,HANDLE *pSharedHandle),
+        HRESULT (STDMETHODCALLTYPE * create_depth_stencil_callback)(IUnknown *pDevice,IUnknown *pSuperior,UINT Width,UINT Height,WINED3DFORMAT Format,WINED3DMULTISAMPLE_TYPE MultiSample,DWORD MultisampleQuality,BOOL Discard,IWineD3DSurface **ppSurface,HANDLE *pSharedHandle),
+        WINED3DSURFTYPE surface_type) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateVertexDeclaration(
+        IWineD3DVertexDeclaration **declaration,
+        IUnknown *parent,
+        const WINED3DVERTEXELEMENT *elements,
+        UINT element_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateVertexDeclarationFromFVF(
+        IWineD3DVertexDeclaration **declaration,
+        IUnknown *parent,
+        DWORD fvf) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateVertexShader(
+        IWineD3DVertexDeclaration *declaration,
+        const DWORD *function,
+        IWineD3DVertexShader **shader,
+        IUnknown *parent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreatePixelShader(
+        const DWORD *function,
+        IWineD3DPixelShader **shader,
+        IUnknown *parent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreatePalette(
+        DWORD flags,
+        const PALETTEENTRY *palette_entry,
+        IWineD3DPalette **palette,
+        IUnknown *parent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Init3D(
+        WINED3DPRESENT_PARAMETERS *present_parameters,
+        HRESULT (STDMETHODCALLTYPE * create_swapchain_callback)(IUnknown *pDevice,WINED3DPRESENT_PARAMETERS *pPresentationParameters,IWineD3DSwapChain **pSwapChain)) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE InitGDI(
+        WINED3DPRESENT_PARAMETERS *present_parameters,
+        HRESULT (STDMETHODCALLTYPE * create_swapchain_callback)(IUnknown *pDevice,WINED3DPRESENT_PARAMETERS *pPresentationParameters,IWineD3DSwapChain **pSwapChain)) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Uninit3D(
+        ULONG (STDMETHODCALLTYPE * destroy_surface_callback)(IWineD3DSurface *pSurface),
+        ULONG (STDMETHODCALLTYPE * destroy_swapchain_callback)(IWineD3DSwapChain *pSwapChain)) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UninitGDI(
+        ULONG (STDMETHODCALLTYPE * destroy_swapchain_callback)(IWineD3DSwapChain *pSwapChain)) = 0;
+
+    virtual void STDMETHODCALLTYPE SetMultithreaded(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EvictManagedResources(
+        ) = 0;
+
+    virtual UINT STDMETHODCALLTYPE GetAvailableTextureMem(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetBackBuffer(
+        UINT swapchain_idx,
+        UINT backbuffer_idx,
+        WINED3DBACKBUFFER_TYPE backbuffer_type,
+        IWineD3DSurface **backbuffer) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCreationParameters(
+        WINED3DDEVICE_CREATION_PARAMETERS *creation_parameters) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDeviceCaps(
+        WINED3DCAPS *caps) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDirect3D(
+        IWineD3D **d3d) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDisplayMode(
+        UINT swapchain_idx,
+        WINED3DDISPLAYMODE *mode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetDisplayMode(
+        UINT swapchain_idx,
+        const WINED3DDISPLAYMODE *mode) = 0;
+
+    virtual UINT STDMETHODCALLTYPE GetNumberOfSwapChains(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetRasterStatus(
+        UINT swapchain_idx,
+        WINED3DRASTER_STATUS *raster_status) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSwapChain(
+        UINT swapchain_idx,
+        IWineD3DSwapChain **swapchain) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        WINED3DPRESENT_PARAMETERS *present_parameters) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetDialogBoxMode(
+        BOOL enable_dialogs) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetCursorProperties(
+        UINT x_hotspot,
+        UINT y_hotspot,
+        IWineD3DSurface *cursor_surface) = 0;
+
+    virtual void STDMETHODCALLTYPE SetCursorPosition(
+        int x_screen_space,
+        int y_screen_space,
+        DWORD flags) = 0;
+
+    virtual BOOL STDMETHODCALLTYPE ShowCursor(
+        BOOL show) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE TestCooperativeLevel(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetClipPlane(
+        DWORD plane_idx,
+        const float *plane) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetClipPlane(
+        DWORD plane_idx,
+        float *plane) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetClipStatus(
+        const WINED3DCLIPSTATUS *clip_status) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetClipStatus(
+        WINED3DCLIPSTATUS *clip_status) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetCurrentTexturePalette(
+        UINT palette_number) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCurrentTexturePalette(
+        UINT *palette_number) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetDepthStencilSurface(
+        IWineD3DSurface *depth_stencil) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDepthStencilSurface(
+        IWineD3DSurface **depth_stencil) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetFVF(
+        DWORD fvf) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFVF(
+        DWORD *fvf) = 0;
+
+    virtual void STDMETHODCALLTYPE SetGammaRamp(
+        UINT swapchain_idx,
+        DWORD flags,
+        const WINED3DGAMMARAMP *ramp) = 0;
+
+    virtual void STDMETHODCALLTYPE GetGammaRamp(
+        UINT swapchain_idx,
+        WINED3DGAMMARAMP *ramp) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetIndices(
+        IWineD3DIndexBuffer *index_buffer) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetIndices(
+        IWineD3DIndexBuffer **index_buffer) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetBaseVertexIndex(
+        INT base_index) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetBaseVertexIndex(
+        INT *base_index) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetLight(
+        DWORD light_idx,
+        const WINED3DLIGHT *light) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetLight(
+        DWORD light_idx,
+        WINED3DLIGHT *light) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetLightEnable(
+        DWORD light_idx,
+        BOOL enable) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetLightEnable(
+        DWORD light_idx,
+        BOOL *enable) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetMaterial(
+        const WINED3DMATERIAL *material) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetMaterial(
+        WINED3DMATERIAL *material) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetNPatchMode(
+        float segments) = 0;
+
+    virtual float STDMETHODCALLTYPE GetNPatchMode(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetPaletteEntries(
+        UINT palette_number,
+        const PALETTEENTRY *entries) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPaletteEntries(
+        UINT palette_number,
+        PALETTEENTRY *entries) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetPixelShader(
+        IWineD3DPixelShader *shader) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPixelShader(
+        IWineD3DPixelShader **shader) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetPixelShaderConstantB(
+        UINT start_register,
+        const BOOL *constants,
+        UINT bool_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPixelShaderConstantB(
+        UINT start_register,
+        BOOL *constants,
+        UINT bool_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetPixelShaderConstantI(
+        UINT start_register,
+        const int *constants,
+        UINT vector4i_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPixelShaderConstantI(
+        UINT start_register,
+        int *constants,
+        UINT vector4i_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetPixelShaderConstantF(
+        UINT start_register,
+        const float *constants,
+        UINT vector4f_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPixelShaderConstantF(
+        UINT start_register,
+        float *constants,
+        UINT vector4f_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetRenderState(
+        WINED3DRENDERSTATETYPE state,
+        DWORD value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetRenderState(
+        WINED3DRENDERSTATETYPE state,
+        DWORD *value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetRenderTarget(
+        DWORD render_target_idx,
+        IWineD3DSurface *render_target) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetRenderTarget(
+        DWORD render_target_idx,
+        IWineD3DSurface **render_target) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetFrontBackBuffers(
+        IWineD3DSurface *front,
+        IWineD3DSurface *back) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetSamplerState(
+        DWORD sampler_idx,
+        WINED3DSAMPLERSTATETYPE state,
+        DWORD value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSamplerState(
+        DWORD sampler_idx,
+        WINED3DSAMPLERSTATETYPE state,
+        DWORD *value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetScissorRect(
+        const RECT *rect) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetScissorRect(
+        RECT *rect) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetSoftwareVertexProcessing(
+        BOOL software) = 0;
+
+    virtual BOOL STDMETHODCALLTYPE GetSoftwareVertexProcessing(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetStreamSource(
+        UINT stream_idx,
+        IWineD3DVertexBuffer *vertex_buffer,
+        UINT offset,
+        UINT stride) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetStreamSource(
+        UINT stream_idx,
+        IWineD3DVertexBuffer **vertex_buffer,
+        UINT *offset,
+        UINT *stride) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetStreamSourceFreq(
+        UINT stream_idx,
+        UINT divider) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetStreamSourceFreq(
+        UINT stream_idx,
+        UINT *divider) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetTexture(
+        DWORD stage,
+        IWineD3DBaseTexture *texture) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTexture(
+        DWORD stage,
+        IWineD3DBaseTexture **texture) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetTextureStageState(
+        DWORD stage,
+        WINED3DTEXTURESTAGESTATETYPE state,
+        DWORD value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTextureStageState(
+        DWORD stage,
+        WINED3DTEXTURESTAGESTATETYPE state,
+        DWORD *value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetTransform(
+        WINED3DTRANSFORMSTATETYPE state,
+        const WINED3DMATRIX *matrix) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTransform(
+        WINED3DTRANSFORMSTATETYPE state,
+        WINED3DMATRIX *matrix) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetVertexDeclaration(
+        IWineD3DVertexDeclaration *declaration) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetVertexDeclaration(
+        IWineD3DVertexDeclaration **declaration) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetVertexShader(
+        IWineD3DVertexShader *shader) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetVertexShader(
+        IWineD3DVertexShader **shader) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetVertexShaderConstantB(
+        UINT start_register,
+        const BOOL *constants,
+        UINT bool_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetVertexShaderConstantB(
+        UINT start_register,
+        BOOL *constants,
+        UINT bool_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetVertexShaderConstantI(
+        UINT start_register,
+        const int *constants,
+        UINT vector4i_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetVertexShaderConstantI(
+        UINT start_register,
+        int *constants,
+        UINT vector4i_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetVertexShaderConstantF(
+        UINT start_register,
+        const float *constants,
+        UINT vector4f_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetVertexShaderConstantF(
+        UINT start_register,
+        float *constants,
+        UINT vector4f_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetViewport(
+        const WINED3DVIEWPORT *viewport) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetViewport(
+        WINED3DVIEWPORT *viewport) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE MultiplyTransform(
+        WINED3DTRANSFORMSTATETYPE state,
+        const WINED3DMATRIX *matrix) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ValidateDevice(
+        DWORD *num_passes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ProcessVertices(
+        UINT src_start_idx,
+        UINT dst_idx,
+        UINT vertex_count,
+        IWineD3DVertexBuffer *dest_buffer,
+        IWineD3DVertexDeclaration *declaration,
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE BeginStateBlock(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EndStateBlock(
+        IWineD3DStateBlock **stateblock) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE BeginScene(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EndScene(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Present(
+        const RECT *src_rect,
+        const RECT *dst_rect,
+        HWND dst_window_override,
+        const RGNDATA *dirty_region) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clear(
+        DWORD rect_count,
+        const WINED3DRECT *rects,
+        DWORD flags,
+        WINED3DCOLOR color,
+        float z,
+        DWORD stencil) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DrawPrimitive(
+        WINED3DPRIMITIVETYPE primitive_type,
+        UINT start_vertex,
+        UINT primitive_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DrawIndexedPrimitive(
+        WINED3DPRIMITIVETYPE primitive_type,
+        UINT min_vertex_idx,
+        UINT vertex_count,
+        UINT start_idx,
+        UINT primitive_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DrawPrimitiveUP(
+        WINED3DPRIMITIVETYPE primitive_type,
+        UINT primitive_count,
+        const void *stream_data,
+        UINT stream_stride) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DrawIndexedPrimitiveUP(
+        WINED3DPRIMITIVETYPE primitive_type,
+        UINT min_vertex_idx,
+        UINT vertex_count,
+        UINT primitive_count,
+        const void *index_data,
+        WINED3DFORMAT index_data_format,
+        const void *stream_data,
+        UINT stream_stride) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DrawPrimitiveStrided(
+        WINED3DPRIMITIVETYPE primitive_type,
+        UINT primitive_count,
+        const WineDirect3DVertexStridedData *strided_data) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DrawIndexedPrimitiveStrided(
+        WINED3DPRIMITIVETYPE primitive_type,
+        UINT primitive_count,
+        const WineDirect3DVertexStridedData *strided_data,
+        UINT vertex_count,
+        const void *index_data,
+        WINED3DFORMAT index_data_format) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DrawRectPatch(
+        UINT handle,
+        const float *num_segs,
+        const WINED3DRECTPATCH_INFO *rect_patch_info) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DrawTriPatch(
+        UINT handle,
+        const float *num_segs,
+        const WINED3DTRIPATCH_INFO *tri_patch_info) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DeletePatch(
+        UINT handle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ColorFill(
+        IWineD3DSurface *surface,
+        const WINED3DRECT *rect,
+        WINED3DCOLOR color) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UpdateTexture(
+        IWineD3DBaseTexture *src_texture,
+        IWineD3DBaseTexture *dst_texture) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UpdateSurface(
+        IWineD3DSurface *src_surface,
+        const RECT *src_rect,
+        IWineD3DSurface *dst_surface,
+        const POINT *dst_point) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFrontBufferData(
+        UINT swapchain_idx,
+        IWineD3DSurface *dst_surface) = 0;
+
+    virtual void STDMETHODCALLTYPE ResourceReleased(
+        IWineD3DResource *resource) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumResources(
+        HRESULT (STDMETHODCALLTYPE * callback)(IWineD3DResource *resource,void *pData),
+        void *data) = 0;
+
+};
+#else
+typedef struct IWineD3DDeviceVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DDevice* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DDevice* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DDevice* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DDevice* This,
+        IUnknown **parent);
+
+    /*** IWineD3DDevice methods ***/
+    HRESULT (STDMETHODCALLTYPE *CreateVertexBuffer)(
+        IWineD3DDevice* This,
+        UINT length,
+        DWORD usage,
+        DWORD fvf,
+        WINED3DPOOL pool,
+        IWineD3DVertexBuffer **vertex_buffer,
+        HANDLE *shared_handle,
+        IUnknown *parent);
+
+    HRESULT (STDMETHODCALLTYPE *CreateIndexBuffer)(
+        IWineD3DDevice* This,
+        UINT length,
+        DWORD usage,
+        WINED3DFORMAT format,
+        WINED3DPOOL pool,
+        IWineD3DIndexBuffer **index_buffer,
+        HANDLE *shared_handle,
+        IUnknown *parent);
+
+    HRESULT (STDMETHODCALLTYPE *CreateStateBlock)(
+        IWineD3DDevice* This,
+        WINED3DSTATEBLOCKTYPE type,
+        IWineD3DStateBlock **stateblock,
+        IUnknown *parent);
+
+    HRESULT (STDMETHODCALLTYPE *CreateSurface)(
+        IWineD3DDevice* This,
+        UINT width,
+        UINT height,
+        WINED3DFORMAT format,
+        BOOL lockable,
+        BOOL discard,
+        UINT level,
+        IWineD3DSurface **surface,
+        WINED3DRESOURCETYPE resource_type,
+        DWORD usage,
+        WINED3DPOOL pool,
+        WINED3DMULTISAMPLE_TYPE multisample_type,
+        DWORD multisample_quality,
+        HANDLE *shared_handle,
+        WINED3DSURFTYPE surface_type,
+        IUnknown *parent);
+
+    HRESULT (STDMETHODCALLTYPE *CreateTexture)(
+        IWineD3DDevice* This,
+        UINT width,
+        UINT height,
+        UINT levels,
+        DWORD usage,
+        WINED3DFORMAT format,
+        WINED3DPOOL pool,
+        IWineD3DTexture **texture,
+        HANDLE *shared_handle,
+        IUnknown *parent,
+        HRESULT (STDMETHODCALLTYPE * create_surface_callback)(IUnknown *pDevice,IUnknown *pSuperior,UINT Width,UINT Height,WINED3DFORMAT Format,DWORD Usage,WINED3DPOOL Pool,UINT Level,WINED3DCUBEMAP_FACES Face,IWineD3DSurface **ppSurface,HANDLE *pSharedHandle));
+
+    HRESULT (STDMETHODCALLTYPE *CreateVolumeTexture)(
+        IWineD3DDevice* This,
+        UINT width,
+        UINT height,
+        UINT depth,
+        UINT levels,
+        DWORD usage,
+        WINED3DFORMAT format,
+        WINED3DPOOL pool,
+        IWineD3DVolumeTexture **texture,
+        HANDLE *shared_handle,
+        IUnknown *parent,
+        HRESULT (STDMETHODCALLTYPE * create_volume_callback)(IUnknown *pDevice,IUnknown *pSuperior,UINT Width,UINT Height,UINT Depth,WINED3DFORMAT Format,WINED3DPOOL Pool,DWORD Usage,IWineD3DVolume **ppVolume,HANDLE *pSharedHandle));
+
+    HRESULT (STDMETHODCALLTYPE *CreateVolume)(
+        IWineD3DDevice* This,
+        UINT width,
+        UINT height,
+        UINT depth,
+        DWORD usage,
+        WINED3DFORMAT format,
+        WINED3DPOOL pool,
+        IWineD3DVolume **volume,
+        HANDLE *shared_handle,
+        IUnknown *parent);
+
+    HRESULT (STDMETHODCALLTYPE *CreateCubeTexture)(
+        IWineD3DDevice* This,
+        UINT edge_length,
+        UINT levels,
+        DWORD usage,
+        WINED3DFORMAT format,
+        WINED3DPOOL pool,
+        IWineD3DCubeTexture **texture,
+        HANDLE *shared_handle,
+        IUnknown *parent,
+        HRESULT (STDMETHODCALLTYPE * create_surface_callback)(IUnknown *pDevice,IUnknown *pSuperior,UINT Width,UINT Height,WINED3DFORMAT Format,DWORD Usage,WINED3DPOOL Pool,UINT Level,WINED3DCUBEMAP_FACES Face,IWineD3DSurface **ppSurface,HANDLE *pSharedHandle));
+
+    HRESULT (STDMETHODCALLTYPE *CreateQuery)(
+        IWineD3DDevice* This,
+        WINED3DQUERYTYPE type,
+        IWineD3DQuery **query,
+        IUnknown *parent);
+
+    HRESULT (STDMETHODCALLTYPE *CreateSwapChain)(
+        IWineD3DDevice* This,
+        WINED3DPRESENT_PARAMETERS *present_parameters,
+        IWineD3DSwapChain **swapchain,
+        IUnknown *parent,
+        HRESULT (STDMETHODCALLTYPE * create_render_target_callback)(IUnknown *pDevice,IUnknown *pSuperior,UINT Width,UINT Height,WINED3DFORMAT Format,WINED3DMULTISAMPLE_TYPE MultiSample,DWORD MultisampleQuality,BOOL Lockable,IWineD3DSurface **ppSurface,HANDLE *pSharedHandle),
+        HRESULT (STDMETHODCALLTYPE * create_depth_stencil_callback)(IUnknown *pDevice,IUnknown *pSuperior,UINT Width,UINT Height,WINED3DFORMAT Format,WINED3DMULTISAMPLE_TYPE MultiSample,DWORD MultisampleQuality,BOOL Discard,IWineD3DSurface **ppSurface,HANDLE *pSharedHandle),
+        WINED3DSURFTYPE surface_type);
+
+    HRESULT (STDMETHODCALLTYPE *CreateVertexDeclaration)(
+        IWineD3DDevice* This,
+        IWineD3DVertexDeclaration **declaration,
+        IUnknown *parent,
+        const WINED3DVERTEXELEMENT *elements,
+        UINT element_count);
+
+    HRESULT (STDMETHODCALLTYPE *CreateVertexDeclarationFromFVF)(
+        IWineD3DDevice* This,
+        IWineD3DVertexDeclaration **declaration,
+        IUnknown *parent,
+        DWORD fvf);
+
+    HRESULT (STDMETHODCALLTYPE *CreateVertexShader)(
+        IWineD3DDevice* This,
+        IWineD3DVertexDeclaration *declaration,
+        const DWORD *function,
+        IWineD3DVertexShader **shader,
+        IUnknown *parent);
+
+    HRESULT (STDMETHODCALLTYPE *CreatePixelShader)(
+        IWineD3DDevice* This,
+        const DWORD *function,
+        IWineD3DPixelShader **shader,
+        IUnknown *parent);
+
+    HRESULT (STDMETHODCALLTYPE *CreatePalette)(
+        IWineD3DDevice* This,
+        DWORD flags,
+        const PALETTEENTRY *palette_entry,
+        IWineD3DPalette **palette,
+        IUnknown *parent);
+
+    HRESULT (STDMETHODCALLTYPE *Init3D)(
+        IWineD3DDevice* This,
+        WINED3DPRESENT_PARAMETERS *present_parameters,
+        HRESULT (STDMETHODCALLTYPE * create_swapchain_callback)(IUnknown *pDevice,WINED3DPRESENT_PARAMETERS *pPresentationParameters,IWineD3DSwapChain **pSwapChain));
+
+    HRESULT (STDMETHODCALLTYPE *InitGDI)(
+        IWineD3DDevice* This,
+        WINED3DPRESENT_PARAMETERS *present_parameters,
+        HRESULT (STDMETHODCALLTYPE * create_swapchain_callback)(IUnknown *pDevice,WINED3DPRESENT_PARAMETERS *pPresentationParameters,IWineD3DSwapChain **pSwapChain));
+
+    HRESULT (STDMETHODCALLTYPE *Uninit3D)(
+        IWineD3DDevice* This,
+        ULONG (STDMETHODCALLTYPE * destroy_surface_callback)(IWineD3DSurface *pSurface),
+        ULONG (STDMETHODCALLTYPE * destroy_swapchain_callback)(IWineD3DSwapChain *pSwapChain));
+
+    HRESULT (STDMETHODCALLTYPE *UninitGDI)(
+        IWineD3DDevice* This,
+        ULONG (STDMETHODCALLTYPE * destroy_swapchain_callback)(IWineD3DSwapChain *pSwapChain));
+
+    void (STDMETHODCALLTYPE *SetMultithreaded)(
+        IWineD3DDevice* This);
+
+    HRESULT (STDMETHODCALLTYPE *EvictManagedResources)(
+        IWineD3DDevice* This);
+
+    UINT (STDMETHODCALLTYPE *GetAvailableTextureMem)(
+        IWineD3DDevice* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetBackBuffer)(
+        IWineD3DDevice* This,
+        UINT swapchain_idx,
+        UINT backbuffer_idx,
+        WINED3DBACKBUFFER_TYPE backbuffer_type,
+        IWineD3DSurface **backbuffer);
+
+    HRESULT (STDMETHODCALLTYPE *GetCreationParameters)(
+        IWineD3DDevice* This,
+        WINED3DDEVICE_CREATION_PARAMETERS *creation_parameters);
+
+    HRESULT (STDMETHODCALLTYPE *GetDeviceCaps)(
+        IWineD3DDevice* This,
+        WINED3DCAPS *caps);
+
+    HRESULT (STDMETHODCALLTYPE *GetDirect3D)(
+        IWineD3DDevice* This,
+        IWineD3D **d3d);
+
+    HRESULT (STDMETHODCALLTYPE *GetDisplayMode)(
+        IWineD3DDevice* This,
+        UINT swapchain_idx,
+        WINED3DDISPLAYMODE *mode);
+
+    HRESULT (STDMETHODCALLTYPE *SetDisplayMode)(
+        IWineD3DDevice* This,
+        UINT swapchain_idx,
+        const WINED3DDISPLAYMODE *mode);
+
+    UINT (STDMETHODCALLTYPE *GetNumberOfSwapChains)(
+        IWineD3DDevice* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetRasterStatus)(
+        IWineD3DDevice* This,
+        UINT swapchain_idx,
+        WINED3DRASTER_STATUS *raster_status);
+
+    HRESULT (STDMETHODCALLTYPE *GetSwapChain)(
+        IWineD3DDevice* This,
+        UINT swapchain_idx,
+        IWineD3DSwapChain **swapchain);
+
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        IWineD3DDevice* This,
+        WINED3DPRESENT_PARAMETERS *present_parameters);
+
+    HRESULT (STDMETHODCALLTYPE *SetDialogBoxMode)(
+        IWineD3DDevice* This,
+        BOOL enable_dialogs);
+
+    HRESULT (STDMETHODCALLTYPE *SetCursorProperties)(
+        IWineD3DDevice* This,
+        UINT x_hotspot,
+        UINT y_hotspot,
+        IWineD3DSurface *cursor_surface);
+
+    void (STDMETHODCALLTYPE *SetCursorPosition)(
+        IWineD3DDevice* This,
+        int x_screen_space,
+        int y_screen_space,
+        DWORD flags);
+
+    BOOL (STDMETHODCALLTYPE *ShowCursor)(
+        IWineD3DDevice* This,
+        BOOL show);
+
+    HRESULT (STDMETHODCALLTYPE *TestCooperativeLevel)(
+        IWineD3DDevice* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetClipPlane)(
+        IWineD3DDevice* This,
+        DWORD plane_idx,
+        const float *plane);
+
+    HRESULT (STDMETHODCALLTYPE *GetClipPlane)(
+        IWineD3DDevice* This,
+        DWORD plane_idx,
+        float *plane);
+
+    HRESULT (STDMETHODCALLTYPE *SetClipStatus)(
+        IWineD3DDevice* This,
+        const WINED3DCLIPSTATUS *clip_status);
+
+    HRESULT (STDMETHODCALLTYPE *GetClipStatus)(
+        IWineD3DDevice* This,
+        WINED3DCLIPSTATUS *clip_status);
+
+    HRESULT (STDMETHODCALLTYPE *SetCurrentTexturePalette)(
+        IWineD3DDevice* This,
+        UINT palette_number);
+
+    HRESULT (STDMETHODCALLTYPE *GetCurrentTexturePalette)(
+        IWineD3DDevice* This,
+        UINT *palette_number);
+
+    HRESULT (STDMETHODCALLTYPE *SetDepthStencilSurface)(
+        IWineD3DDevice* This,
+        IWineD3DSurface *depth_stencil);
+
+    HRESULT (STDMETHODCALLTYPE *GetDepthStencilSurface)(
+        IWineD3DDevice* This,
+        IWineD3DSurface **depth_stencil);
+
+    HRESULT (STDMETHODCALLTYPE *SetFVF)(
+        IWineD3DDevice* This,
+        DWORD fvf);
+
+    HRESULT (STDMETHODCALLTYPE *GetFVF)(
+        IWineD3DDevice* This,
+        DWORD *fvf);
+
+    void (STDMETHODCALLTYPE *SetGammaRamp)(
+        IWineD3DDevice* This,
+        UINT swapchain_idx,
+        DWORD flags,
+        const WINED3DGAMMARAMP *ramp);
+
+    void (STDMETHODCALLTYPE *GetGammaRamp)(
+        IWineD3DDevice* This,
+        UINT swapchain_idx,
+        WINED3DGAMMARAMP *ramp);
+
+    HRESULT (STDMETHODCALLTYPE *SetIndices)(
+        IWineD3DDevice* This,
+        IWineD3DIndexBuffer *index_buffer);
+
+    HRESULT (STDMETHODCALLTYPE *GetIndices)(
+        IWineD3DDevice* This,
+        IWineD3DIndexBuffer **index_buffer);
+
+    HRESULT (STDMETHODCALLTYPE *SetBaseVertexIndex)(
+        IWineD3DDevice* This,
+        INT base_index);
+
+    HRESULT (STDMETHODCALLTYPE *GetBaseVertexIndex)(
+        IWineD3DDevice* This,
+        INT *base_index);
+
+    HRESULT (STDMETHODCALLTYPE *SetLight)(
+        IWineD3DDevice* This,
+        DWORD light_idx,
+        const WINED3DLIGHT *light);
+
+    HRESULT (STDMETHODCALLTYPE *GetLight)(
+        IWineD3DDevice* This,
+        DWORD light_idx,
+        WINED3DLIGHT *light);
+
+    HRESULT (STDMETHODCALLTYPE *SetLightEnable)(
+        IWineD3DDevice* This,
+        DWORD light_idx,
+        BOOL enable);
+
+    HRESULT (STDMETHODCALLTYPE *GetLightEnable)(
+        IWineD3DDevice* This,
+        DWORD light_idx,
+        BOOL *enable);
+
+    HRESULT (STDMETHODCALLTYPE *SetMaterial)(
+        IWineD3DDevice* This,
+        const WINED3DMATERIAL *material);
+
+    HRESULT (STDMETHODCALLTYPE *GetMaterial)(
+        IWineD3DDevice* This,
+        WINED3DMATERIAL *material);
+
+    HRESULT (STDMETHODCALLTYPE *SetNPatchMode)(
+        IWineD3DDevice* This,
+        float segments);
+
+    float (STDMETHODCALLTYPE *GetNPatchMode)(
+        IWineD3DDevice* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetPaletteEntries)(
+        IWineD3DDevice* This,
+        UINT palette_number,
+        const PALETTEENTRY *entries);
+
+    HRESULT (STDMETHODCALLTYPE *GetPaletteEntries)(
+        IWineD3DDevice* This,
+        UINT palette_number,
+        PALETTEENTRY *entries);
+
+    HRESULT (STDMETHODCALLTYPE *SetPixelShader)(
+        IWineD3DDevice* This,
+        IWineD3DPixelShader *shader);
+
+    HRESULT (STDMETHODCALLTYPE *GetPixelShader)(
+        IWineD3DDevice* This,
+        IWineD3DPixelShader **shader);
+
+    HRESULT (STDMETHODCALLTYPE *SetPixelShaderConstantB)(
+        IWineD3DDevice* This,
+        UINT start_register,
+        const BOOL *constants,
+        UINT bool_count);
+
+    HRESULT (STDMETHODCALLTYPE *GetPixelShaderConstantB)(
+        IWineD3DDevice* This,
+        UINT start_register,
+        BOOL *constants,
+        UINT bool_count);
+
+    HRESULT (STDMETHODCALLTYPE *SetPixelShaderConstantI)(
+        IWineD3DDevice* This,
+        UINT start_register,
+        const int *constants,
+        UINT vector4i_count);
+
+    HRESULT (STDMETHODCALLTYPE *GetPixelShaderConstantI)(
+        IWineD3DDevice* This,
+        UINT start_register,
+        int *constants,
+        UINT vector4i_count);
+
+    HRESULT (STDMETHODCALLTYPE *SetPixelShaderConstantF)(
+        IWineD3DDevice* This,
+        UINT start_register,
+        const float *constants,
+        UINT vector4f_count);
+
+    HRESULT (STDMETHODCALLTYPE *GetPixelShaderConstantF)(
+        IWineD3DDevice* This,
+        UINT start_register,
+        float *constants,
+        UINT vector4f_count);
+
+    HRESULT (STDMETHODCALLTYPE *SetRenderState)(
+        IWineD3DDevice* This,
+        WINED3DRENDERSTATETYPE state,
+        DWORD value);
+
+    HRESULT (STDMETHODCALLTYPE *GetRenderState)(
+        IWineD3DDevice* This,
+        WINED3DRENDERSTATETYPE state,
+        DWORD *value);
+
+    HRESULT (STDMETHODCALLTYPE *SetRenderTarget)(
+        IWineD3DDevice* This,
+        DWORD render_target_idx,
+        IWineD3DSurface *render_target);
+
+    HRESULT (STDMETHODCALLTYPE *GetRenderTarget)(
+        IWineD3DDevice* This,
+        DWORD render_target_idx,
+        IWineD3DSurface **render_target);
+
+    HRESULT (STDMETHODCALLTYPE *SetFrontBackBuffers)(
+        IWineD3DDevice* This,
+        IWineD3DSurface *front,
+        IWineD3DSurface *back);
+
+    HRESULT (STDMETHODCALLTYPE *SetSamplerState)(
+        IWineD3DDevice* This,
+        DWORD sampler_idx,
+        WINED3DSAMPLERSTATETYPE state,
+        DWORD value);
+
+    HRESULT (STDMETHODCALLTYPE *GetSamplerState)(
+        IWineD3DDevice* This,
+        DWORD sampler_idx,
+        WINED3DSAMPLERSTATETYPE state,
+        DWORD *value);
+
+    HRESULT (STDMETHODCALLTYPE *SetScissorRect)(
+        IWineD3DDevice* This,
+        const RECT *rect);
+
+    HRESULT (STDMETHODCALLTYPE *GetScissorRect)(
+        IWineD3DDevice* This,
+        RECT *rect);
+
+    HRESULT (STDMETHODCALLTYPE *SetSoftwareVertexProcessing)(
+        IWineD3DDevice* This,
+        BOOL software);
+
+    BOOL (STDMETHODCALLTYPE *GetSoftwareVertexProcessing)(
+        IWineD3DDevice* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetStreamSource)(
+        IWineD3DDevice* This,
+        UINT stream_idx,
+        IWineD3DVertexBuffer *vertex_buffer,
+        UINT offset,
+        UINT stride);
+
+    HRESULT (STDMETHODCALLTYPE *GetStreamSource)(
+        IWineD3DDevice* This,
+        UINT stream_idx,
+        IWineD3DVertexBuffer **vertex_buffer,
+        UINT *offset,
+        UINT *stride);
+
+    HRESULT (STDMETHODCALLTYPE *SetStreamSourceFreq)(
+        IWineD3DDevice* This,
+        UINT stream_idx,
+        UINT divider);
+
+    HRESULT (STDMETHODCALLTYPE *GetStreamSourceFreq)(
+        IWineD3DDevice* This,
+        UINT stream_idx,
+        UINT *divider);
+
+    HRESULT (STDMETHODCALLTYPE *SetTexture)(
+        IWineD3DDevice* This,
+        DWORD stage,
+        IWineD3DBaseTexture *texture);
+
+    HRESULT (STDMETHODCALLTYPE *GetTexture)(
+        IWineD3DDevice* This,
+        DWORD stage,
+        IWineD3DBaseTexture **texture);
+
+    HRESULT (STDMETHODCALLTYPE *SetTextureStageState)(
+        IWineD3DDevice* This,
+        DWORD stage,
+        WINED3DTEXTURESTAGESTATETYPE state,
+        DWORD value);
+
+    HRESULT (STDMETHODCALLTYPE *GetTextureStageState)(
+        IWineD3DDevice* This,
+        DWORD stage,
+        WINED3DTEXTURESTAGESTATETYPE state,
+        DWORD *value);
+
+    HRESULT (STDMETHODCALLTYPE *SetTransform)(
+        IWineD3DDevice* This,
+        WINED3DTRANSFORMSTATETYPE state,
+        const WINED3DMATRIX *matrix);
+
+    HRESULT (STDMETHODCALLTYPE *GetTransform)(
+        IWineD3DDevice* This,
+        WINED3DTRANSFORMSTATETYPE state,
+        WINED3DMATRIX *matrix);
+
+    HRESULT (STDMETHODCALLTYPE *SetVertexDeclaration)(
+        IWineD3DDevice* This,
+        IWineD3DVertexDeclaration *declaration);
+
+    HRESULT (STDMETHODCALLTYPE *GetVertexDeclaration)(
+        IWineD3DDevice* This,
+        IWineD3DVertexDeclaration **declaration);
+
+    HRESULT (STDMETHODCALLTYPE *SetVertexShader)(
+        IWineD3DDevice* This,
+        IWineD3DVertexShader *shader);
+
+    HRESULT (STDMETHODCALLTYPE *GetVertexShader)(
+        IWineD3DDevice* This,
+        IWineD3DVertexShader **shader);
+
+    HRESULT (STDMETHODCALLTYPE *SetVertexShaderConstantB)(
+        IWineD3DDevice* This,
+        UINT start_register,
+        const BOOL *constants,
+        UINT bool_count);
+
+    HRESULT (STDMETHODCALLTYPE *GetVertexShaderConstantB)(
+        IWineD3DDevice* This,
+        UINT start_register,
+        BOOL *constants,
+        UINT bool_count);
+
+    HRESULT (STDMETHODCALLTYPE *SetVertexShaderConstantI)(
+        IWineD3DDevice* This,
+        UINT start_register,
+        const int *constants,
+        UINT vector4i_count);
+
+    HRESULT (STDMETHODCALLTYPE *GetVertexShaderConstantI)(
+        IWineD3DDevice* This,
+        UINT start_register,
+        int *constants,
+        UINT vector4i_count);
+
+    HRESULT (STDMETHODCALLTYPE *SetVertexShaderConstantF)(
+        IWineD3DDevice* This,
+        UINT start_register,
+        const float *constants,
+        UINT vector4f_count);
+
+    HRESULT (STDMETHODCALLTYPE *GetVertexShaderConstantF)(
+        IWineD3DDevice* This,
+        UINT start_register,
+        float *constants,
+        UINT vector4f_count);
+
+    HRESULT (STDMETHODCALLTYPE *SetViewport)(
+        IWineD3DDevice* This,
+        const WINED3DVIEWPORT *viewport);
+
+    HRESULT (STDMETHODCALLTYPE *GetViewport)(
+        IWineD3DDevice* This,
+        WINED3DVIEWPORT *viewport);
+
+    HRESULT (STDMETHODCALLTYPE *MultiplyTransform)(
+        IWineD3DDevice* This,
+        WINED3DTRANSFORMSTATETYPE state,
+        const WINED3DMATRIX *matrix);
+
+    HRESULT (STDMETHODCALLTYPE *ValidateDevice)(
+        IWineD3DDevice* This,
+        DWORD *num_passes);
+
+    HRESULT (STDMETHODCALLTYPE *ProcessVertices)(
+        IWineD3DDevice* This,
+        UINT src_start_idx,
+        UINT dst_idx,
+        UINT vertex_count,
+        IWineD3DVertexBuffer *dest_buffer,
+        IWineD3DVertexDeclaration *declaration,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *BeginStateBlock)(
+        IWineD3DDevice* This);
+
+    HRESULT (STDMETHODCALLTYPE *EndStateBlock)(
+        IWineD3DDevice* This,
+        IWineD3DStateBlock **stateblock);
+
+    HRESULT (STDMETHODCALLTYPE *BeginScene)(
+        IWineD3DDevice* This);
+
+    HRESULT (STDMETHODCALLTYPE *EndScene)(
+        IWineD3DDevice* This);
+
+    HRESULT (STDMETHODCALLTYPE *Present)(
+        IWineD3DDevice* This,
+        const RECT *src_rect,
+        const RECT *dst_rect,
+        HWND dst_window_override,
+        const RGNDATA *dirty_region);
+
+    HRESULT (STDMETHODCALLTYPE *Clear)(
+        IWineD3DDevice* This,
+        DWORD rect_count,
+        const WINED3DRECT *rects,
+        DWORD flags,
+        WINED3DCOLOR color,
+        float z,
+        DWORD stencil);
+
+    HRESULT (STDMETHODCALLTYPE *DrawPrimitive)(
+        IWineD3DDevice* This,
+        WINED3DPRIMITIVETYPE primitive_type,
+        UINT start_vertex,
+        UINT primitive_count);
+
+    HRESULT (STDMETHODCALLTYPE *DrawIndexedPrimitive)(
+        IWineD3DDevice* This,
+        WINED3DPRIMITIVETYPE primitive_type,
+        UINT min_vertex_idx,
+        UINT vertex_count,
+        UINT start_idx,
+        UINT primitive_count);
+
+    HRESULT (STDMETHODCALLTYPE *DrawPrimitiveUP)(
+        IWineD3DDevice* This,
+        WINED3DPRIMITIVETYPE primitive_type,
+        UINT primitive_count,
+        const void *stream_data,
+        UINT stream_stride);
+
+    HRESULT (STDMETHODCALLTYPE *DrawIndexedPrimitiveUP)(
+        IWineD3DDevice* This,
+        WINED3DPRIMITIVETYPE primitive_type,
+        UINT min_vertex_idx,
+        UINT vertex_count,
+        UINT primitive_count,
+        const void *index_data,
+        WINED3DFORMAT index_data_format,
+        const void *stream_data,
+        UINT stream_stride);
+
+    HRESULT (STDMETHODCALLTYPE *DrawPrimitiveStrided)(
+        IWineD3DDevice* This,
+        WINED3DPRIMITIVETYPE primitive_type,
+        UINT primitive_count,
+        const WineDirect3DVertexStridedData *strided_data);
+
+    HRESULT (STDMETHODCALLTYPE *DrawIndexedPrimitiveStrided)(
+        IWineD3DDevice* This,
+        WINED3DPRIMITIVETYPE primitive_type,
+        UINT primitive_count,
+        const WineDirect3DVertexStridedData *strided_data,
+        UINT vertex_count,
+        const void *index_data,
+        WINED3DFORMAT index_data_format);
+
+    HRESULT (STDMETHODCALLTYPE *DrawRectPatch)(
+        IWineD3DDevice* This,
+        UINT handle,
+        const float *num_segs,
+        const WINED3DRECTPATCH_INFO *rect_patch_info);
+
+    HRESULT (STDMETHODCALLTYPE *DrawTriPatch)(
+        IWineD3DDevice* This,
+        UINT handle,
+        const float *num_segs,
+        const WINED3DTRIPATCH_INFO *tri_patch_info);
+
+    HRESULT (STDMETHODCALLTYPE *DeletePatch)(
+        IWineD3DDevice* This,
+        UINT handle);
+
+    HRESULT (STDMETHODCALLTYPE *ColorFill)(
+        IWineD3DDevice* This,
+        IWineD3DSurface *surface,
+        const WINED3DRECT *rect,
+        WINED3DCOLOR color);
+
+    HRESULT (STDMETHODCALLTYPE *UpdateTexture)(
+        IWineD3DDevice* This,
+        IWineD3DBaseTexture *src_texture,
+        IWineD3DBaseTexture *dst_texture);
+
+    HRESULT (STDMETHODCALLTYPE *UpdateSurface)(
+        IWineD3DDevice* This,
+        IWineD3DSurface *src_surface,
+        const RECT *src_rect,
+        IWineD3DSurface *dst_surface,
+        const POINT *dst_point);
+
+    HRESULT (STDMETHODCALLTYPE *GetFrontBufferData)(
+        IWineD3DDevice* This,
+        UINT swapchain_idx,
+        IWineD3DSurface *dst_surface);
+
+    void (STDMETHODCALLTYPE *ResourceReleased)(
+        IWineD3DDevice* This,
+        IWineD3DResource *resource);
+
+    HRESULT (STDMETHODCALLTYPE *EnumResources)(
+        IWineD3DDevice* This,
+        HRESULT (STDMETHODCALLTYPE * callback)(IWineD3DResource *resource,void *pData),
+        void *data);
+
+    END_INTERFACE
+} IWineD3DDeviceVtbl;
+interface IWineD3DDevice {
+    CONST_VTBL IWineD3DDeviceVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DDevice_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DDevice_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DDevice_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DDevice_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DDevice methods ***/
+#define IWineD3DDevice_CreateVertexBuffer(This,length,usage,fvf,pool,vertex_buffer,shared_handle,parent) (This)->lpVtbl->CreateVertexBuffer(This,length,usage,fvf,pool,vertex_buffer,shared_handle,parent)
+#define IWineD3DDevice_CreateIndexBuffer(This,length,usage,format,pool,index_buffer,shared_handle,parent) (This)->lpVtbl->CreateIndexBuffer(This,length,usage,format,pool,index_buffer,shared_handle,parent)
+#define IWineD3DDevice_CreateStateBlock(This,type,stateblock,parent) (This)->lpVtbl->CreateStateBlock(This,type,stateblock,parent)
+#define IWineD3DDevice_CreateSurface(This,width,height,format,lockable,discard,level,surface,resource_type,usage,pool,multisample_type,multisample_quality,shared_handle,surface_type,parent) (This)->lpVtbl->CreateSurface(This,width,height,format,lockable,discard,level,surface,resource_type,usage,pool,multisample_type,multisample_quality,shared_handle,surface_type,parent)
+#define IWineD3DDevice_CreateTexture(This,width,height,levels,usage,format,pool,texture,shared_handle,parent,create_surface_callback) (This)->lpVtbl->CreateTexture(This,width,height,levels,usage,format,pool,texture,shared_handle,parent,create_surface_callback)
+#define IWineD3DDevice_CreateVolumeTexture(This,width,height,depth,levels,usage,format,pool,texture,shared_handle,parent,create_volume_callback) (This)->lpVtbl->CreateVolumeTexture(This,width,height,depth,levels,usage,format,pool,texture,shared_handle,parent,create_volume_callback)
+#define IWineD3DDevice_CreateVolume(This,width,height,depth,usage,format,pool,volume,shared_handle,parent) (This)->lpVtbl->CreateVolume(This,width,height,depth,usage,format,pool,volume,shared_handle,parent)
+#define IWineD3DDevice_CreateCubeTexture(This,edge_length,levels,usage,format,pool,texture,shared_handle,parent,create_surface_callback) (This)->lpVtbl->CreateCubeTexture(This,edge_length,levels,usage,format,pool,texture,shared_handle,parent,create_surface_callback)
+#define IWineD3DDevice_CreateQuery(This,type,query,parent) (This)->lpVtbl->CreateQuery(This,type,query,parent)
+#define IWineD3DDevice_CreateSwapChain(This,present_parameters,swapchain,parent,create_render_target_callback,create_depth_stencil_callback,surface_type) (This)->lpVtbl->CreateSwapChain(This,present_parameters,swapchain,parent,create_render_target_callback,create_depth_stencil_callback,surface_type)
+#define IWineD3DDevice_CreateVertexDeclaration(This,declaration,parent,elements,element_count) (This)->lpVtbl->CreateVertexDeclaration(This,declaration,parent,elements,element_count)
+#define IWineD3DDevice_CreateVertexDeclarationFromFVF(This,declaration,parent,fvf) (This)->lpVtbl->CreateVertexDeclarationFromFVF(This,declaration,parent,fvf)
+#define IWineD3DDevice_CreateVertexShader(This,declaration,function,shader,parent) (This)->lpVtbl->CreateVertexShader(This,declaration,function,shader,parent)
+#define IWineD3DDevice_CreatePixelShader(This,function,shader,parent) (This)->lpVtbl->CreatePixelShader(This,function,shader,parent)
+#define IWineD3DDevice_CreatePalette(This,flags,palette_entry,palette,parent) (This)->lpVtbl->CreatePalette(This,flags,palette_entry,palette,parent)
+#define IWineD3DDevice_Init3D(This,present_parameters,create_swapchain_callback) (This)->lpVtbl->Init3D(This,present_parameters,create_swapchain_callback)
+#define IWineD3DDevice_InitGDI(This,present_parameters,create_swapchain_callback) (This)->lpVtbl->InitGDI(This,present_parameters,create_swapchain_callback)
+#define IWineD3DDevice_Uninit3D(This,destroy_surface_callback,destroy_swapchain_callback) (This)->lpVtbl->Uninit3D(This,destroy_surface_callback,destroy_swapchain_callback)
+#define IWineD3DDevice_UninitGDI(This,destroy_swapchain_callback) (This)->lpVtbl->UninitGDI(This,destroy_swapchain_callback)
+#define IWineD3DDevice_SetMultithreaded(This) (This)->lpVtbl->SetMultithreaded(This)
+#define IWineD3DDevice_EvictManagedResources(This) (This)->lpVtbl->EvictManagedResources(This)
+#define IWineD3DDevice_GetAvailableTextureMem(This) (This)->lpVtbl->GetAvailableTextureMem(This)
+#define IWineD3DDevice_GetBackBuffer(This,swapchain_idx,backbuffer_idx,backbuffer_type,backbuffer) (This)->lpVtbl->GetBackBuffer(This,swapchain_idx,backbuffer_idx,backbuffer_type,backbuffer)
+#define IWineD3DDevice_GetCreationParameters(This,creation_parameters) (This)->lpVtbl->GetCreationParameters(This,creation_parameters)
+#define IWineD3DDevice_GetDeviceCaps(This,caps) (This)->lpVtbl->GetDeviceCaps(This,caps)
+#define IWineD3DDevice_GetDirect3D(This,d3d) (This)->lpVtbl->GetDirect3D(This,d3d)
+#define IWineD3DDevice_GetDisplayMode(This,swapchain_idx,mode) (This)->lpVtbl->GetDisplayMode(This,swapchain_idx,mode)
+#define IWineD3DDevice_SetDisplayMode(This,swapchain_idx,mode) (This)->lpVtbl->SetDisplayMode(This,swapchain_idx,mode)
+#define IWineD3DDevice_GetNumberOfSwapChains(This) (This)->lpVtbl->GetNumberOfSwapChains(This)
+#define IWineD3DDevice_GetRasterStatus(This,swapchain_idx,raster_status) (This)->lpVtbl->GetRasterStatus(This,swapchain_idx,raster_status)
+#define IWineD3DDevice_GetSwapChain(This,swapchain_idx,swapchain) (This)->lpVtbl->GetSwapChain(This,swapchain_idx,swapchain)
+#define IWineD3DDevice_Reset(This,present_parameters) (This)->lpVtbl->Reset(This,present_parameters)
+#define IWineD3DDevice_SetDialogBoxMode(This,enable_dialogs) (This)->lpVtbl->SetDialogBoxMode(This,enable_dialogs)
+#define IWineD3DDevice_SetCursorProperties(This,x_hotspot,y_hotspot,cursor_surface) (This)->lpVtbl->SetCursorProperties(This,x_hotspot,y_hotspot,cursor_surface)
+#define IWineD3DDevice_SetCursorPosition(This,x_screen_space,y_screen_space,flags) (This)->lpVtbl->SetCursorPosition(This,x_screen_space,y_screen_space,flags)
+#define IWineD3DDevice_ShowCursor(This,show) (This)->lpVtbl->ShowCursor(This,show)
+#define IWineD3DDevice_TestCooperativeLevel(This) (This)->lpVtbl->TestCooperativeLevel(This)
+#define IWineD3DDevice_SetClipPlane(This,plane_idx,plane) (This)->lpVtbl->SetClipPlane(This,plane_idx,plane)
+#define IWineD3DDevice_GetClipPlane(This,plane_idx,plane) (This)->lpVtbl->GetClipPlane(This,plane_idx,plane)
+#define IWineD3DDevice_SetClipStatus(This,clip_status) (This)->lpVtbl->SetClipStatus(This,clip_status)
+#define IWineD3DDevice_GetClipStatus(This,clip_status) (This)->lpVtbl->GetClipStatus(This,clip_status)
+#define IWineD3DDevice_SetCurrentTexturePalette(This,palette_number) (This)->lpVtbl->SetCurrentTexturePalette(This,palette_number)
+#define IWineD3DDevice_GetCurrentTexturePalette(This,palette_number) (This)->lpVtbl->GetCurrentTexturePalette(This,palette_number)
+#define IWineD3DDevice_SetDepthStencilSurface(This,depth_stencil) (This)->lpVtbl->SetDepthStencilSurface(This,depth_stencil)
+#define IWineD3DDevice_GetDepthStencilSurface(This,depth_stencil) (This)->lpVtbl->GetDepthStencilSurface(This,depth_stencil)
+#define IWineD3DDevice_SetFVF(This,fvf) (This)->lpVtbl->SetFVF(This,fvf)
+#define IWineD3DDevice_GetFVF(This,fvf) (This)->lpVtbl->GetFVF(This,fvf)
+#define IWineD3DDevice_SetGammaRamp(This,swapchain_idx,flags,ramp) (This)->lpVtbl->SetGammaRamp(This,swapchain_idx,flags,ramp)
+#define IWineD3DDevice_GetGammaRamp(This,swapchain_idx,ramp) (This)->lpVtbl->GetGammaRamp(This,swapchain_idx,ramp)
+#define IWineD3DDevice_SetIndices(This,index_buffer) (This)->lpVtbl->SetIndices(This,index_buffer)
+#define IWineD3DDevice_GetIndices(This,index_buffer) (This)->lpVtbl->GetIndices(This,index_buffer)
+#define IWineD3DDevice_SetBaseVertexIndex(This,base_index) (This)->lpVtbl->SetBaseVertexIndex(This,base_index)
+#define IWineD3DDevice_GetBaseVertexIndex(This,base_index) (This)->lpVtbl->GetBaseVertexIndex(This,base_index)
+#define IWineD3DDevice_SetLight(This,light_idx,light) (This)->lpVtbl->SetLight(This,light_idx,light)
+#define IWineD3DDevice_GetLight(This,light_idx,light) (This)->lpVtbl->GetLight(This,light_idx,light)
+#define IWineD3DDevice_SetLightEnable(This,light_idx,enable) (This)->lpVtbl->SetLightEnable(This,light_idx,enable)
+#define IWineD3DDevice_GetLightEnable(This,light_idx,enable) (This)->lpVtbl->GetLightEnable(This,light_idx,enable)
+#define IWineD3DDevice_SetMaterial(This,material) (This)->lpVtbl->SetMaterial(This,material)
+#define IWineD3DDevice_GetMaterial(This,material) (This)->lpVtbl->GetMaterial(This,material)
+#define IWineD3DDevice_SetNPatchMode(This,segments) (This)->lpVtbl->SetNPatchMode(This,segments)
+#define IWineD3DDevice_GetNPatchMode(This) (This)->lpVtbl->GetNPatchMode(This)
+#define IWineD3DDevice_SetPaletteEntries(This,palette_number,entries) (This)->lpVtbl->SetPaletteEntries(This,palette_number,entries)
+#define IWineD3DDevice_GetPaletteEntries(This,palette_number,entries) (This)->lpVtbl->GetPaletteEntries(This,palette_number,entries)
+#define IWineD3DDevice_SetPixelShader(This,shader) (This)->lpVtbl->SetPixelShader(This,shader)
+#define IWineD3DDevice_GetPixelShader(This,shader) (This)->lpVtbl->GetPixelShader(This,shader)
+#define IWineD3DDevice_SetPixelShaderConstantB(This,start_register,constants,bool_count) (This)->lpVtbl->SetPixelShaderConstantB(This,start_register,constants,bool_count)
+#define IWineD3DDevice_GetPixelShaderConstantB(This,start_register,constants,bool_count) (This)->lpVtbl->GetPixelShaderConstantB(This,start_register,constants,bool_count)
+#define IWineD3DDevice_SetPixelShaderConstantI(This,start_register,constants,vector4i_count) (This)->lpVtbl->SetPixelShaderConstantI(This,start_register,constants,vector4i_count)
+#define IWineD3DDevice_GetPixelShaderConstantI(This,start_register,constants,vector4i_count) (This)->lpVtbl->GetPixelShaderConstantI(This,start_register,constants,vector4i_count)
+#define IWineD3DDevice_SetPixelShaderConstantF(This,start_register,constants,vector4f_count) (This)->lpVtbl->SetPixelShaderConstantF(This,start_register,constants,vector4f_count)
+#define IWineD3DDevice_GetPixelShaderConstantF(This,start_register,constants,vector4f_count) (This)->lpVtbl->GetPixelShaderConstantF(This,start_register,constants,vector4f_count)
+#define IWineD3DDevice_SetRenderState(This,state,value) (This)->lpVtbl->SetRenderState(This,state,value)
+#define IWineD3DDevice_GetRenderState(This,state,value) (This)->lpVtbl->GetRenderState(This,state,value)
+#define IWineD3DDevice_SetRenderTarget(This,render_target_idx,render_target) (This)->lpVtbl->SetRenderTarget(This,render_target_idx,render_target)
+#define IWineD3DDevice_GetRenderTarget(This,render_target_idx,render_target) (This)->lpVtbl->GetRenderTarget(This,render_target_idx,render_target)
+#define IWineD3DDevice_SetFrontBackBuffers(This,front,back) (This)->lpVtbl->SetFrontBackBuffers(This,front,back)
+#define IWineD3DDevice_SetSamplerState(This,sampler_idx,state,value) (This)->lpVtbl->SetSamplerState(This,sampler_idx,state,value)
+#define IWineD3DDevice_GetSamplerState(This,sampler_idx,state,value) (This)->lpVtbl->GetSamplerState(This,sampler_idx,state,value)
+#define IWineD3DDevice_SetScissorRect(This,rect) (This)->lpVtbl->SetScissorRect(This,rect)
+#define IWineD3DDevice_GetScissorRect(This,rect) (This)->lpVtbl->GetScissorRect(This,rect)
+#define IWineD3DDevice_SetSoftwareVertexProcessing(This,software) (This)->lpVtbl->SetSoftwareVertexProcessing(This,software)
+#define IWineD3DDevice_GetSoftwareVertexProcessing(This) (This)->lpVtbl->GetSoftwareVertexProcessing(This)
+#define IWineD3DDevice_SetStreamSource(This,stream_idx,vertex_buffer,offset,stride) (This)->lpVtbl->SetStreamSource(This,stream_idx,vertex_buffer,offset,stride)
+#define IWineD3DDevice_GetStreamSource(This,stream_idx,vertex_buffer,offset,stride) (This)->lpVtbl->GetStreamSource(This,stream_idx,vertex_buffer,offset,stride)
+#define IWineD3DDevice_SetStreamSourceFreq(This,stream_idx,divider) (This)->lpVtbl->SetStreamSourceFreq(This,stream_idx,divider)
+#define IWineD3DDevice_GetStreamSourceFreq(This,stream_idx,divider) (This)->lpVtbl->GetStreamSourceFreq(This,stream_idx,divider)
+#define IWineD3DDevice_SetTexture(This,stage,texture) (This)->lpVtbl->SetTexture(This,stage,texture)
+#define IWineD3DDevice_GetTexture(This,stage,texture) (This)->lpVtbl->GetTexture(This,stage,texture)
+#define IWineD3DDevice_SetTextureStageState(This,stage,state,value) (This)->lpVtbl->SetTextureStageState(This,stage,state,value)
+#define IWineD3DDevice_GetTextureStageState(This,stage,state,value) (This)->lpVtbl->GetTextureStageState(This,stage,state,value)
+#define IWineD3DDevice_SetTransform(This,state,matrix) (This)->lpVtbl->SetTransform(This,state,matrix)
+#define IWineD3DDevice_GetTransform(This,state,matrix) (This)->lpVtbl->GetTransform(This,state,matrix)
+#define IWineD3DDevice_SetVertexDeclaration(This,declaration) (This)->lpVtbl->SetVertexDeclaration(This,declaration)
+#define IWineD3DDevice_GetVertexDeclaration(This,declaration) (This)->lpVtbl->GetVertexDeclaration(This,declaration)
+#define IWineD3DDevice_SetVertexShader(This,shader) (This)->lpVtbl->SetVertexShader(This,shader)
+#define IWineD3DDevice_GetVertexShader(This,shader) (This)->lpVtbl->GetVertexShader(This,shader)
+#define IWineD3DDevice_SetVertexShaderConstantB(This,start_register,constants,bool_count) (This)->lpVtbl->SetVertexShaderConstantB(This,start_register,constants,bool_count)
+#define IWineD3DDevice_GetVertexShaderConstantB(This,start_register,constants,bool_count) (This)->lpVtbl->GetVertexShaderConstantB(This,start_register,constants,bool_count)
+#define IWineD3DDevice_SetVertexShaderConstantI(This,start_register,constants,vector4i_count) (This)->lpVtbl->SetVertexShaderConstantI(This,start_register,constants,vector4i_count)
+#define IWineD3DDevice_GetVertexShaderConstantI(This,start_register,constants,vector4i_count) (This)->lpVtbl->GetVertexShaderConstantI(This,start_register,constants,vector4i_count)
+#define IWineD3DDevice_SetVertexShaderConstantF(This,start_register,constants,vector4f_count) (This)->lpVtbl->SetVertexShaderConstantF(This,start_register,constants,vector4f_count)
+#define IWineD3DDevice_GetVertexShaderConstantF(This,start_register,constants,vector4f_count) (This)->lpVtbl->GetVertexShaderConstantF(This,start_register,constants,vector4f_count)
+#define IWineD3DDevice_SetViewport(This,viewport) (This)->lpVtbl->SetViewport(This,viewport)
+#define IWineD3DDevice_GetViewport(This,viewport) (This)->lpVtbl->GetViewport(This,viewport)
+#define IWineD3DDevice_MultiplyTransform(This,state,matrix) (This)->lpVtbl->MultiplyTransform(This,state,matrix)
+#define IWineD3DDevice_ValidateDevice(This,num_passes) (This)->lpVtbl->ValidateDevice(This,num_passes)
+#define IWineD3DDevice_ProcessVertices(This,src_start_idx,dst_idx,vertex_count,dest_buffer,declaration,flags) (This)->lpVtbl->ProcessVertices(This,src_start_idx,dst_idx,vertex_count,dest_buffer,declaration,flags)
+#define IWineD3DDevice_BeginStateBlock(This) (This)->lpVtbl->BeginStateBlock(This)
+#define IWineD3DDevice_EndStateBlock(This,stateblock) (This)->lpVtbl->EndStateBlock(This,stateblock)
+#define IWineD3DDevice_BeginScene(This) (This)->lpVtbl->BeginScene(This)
+#define IWineD3DDevice_EndScene(This) (This)->lpVtbl->EndScene(This)
+#define IWineD3DDevice_Present(This,src_rect,dst_rect,dst_window_override,dirty_region) (This)->lpVtbl->Present(This,src_rect,dst_rect,dst_window_override,dirty_region)
+#define IWineD3DDevice_Clear(This,rect_count,rects,flags,color,z,stencil) (This)->lpVtbl->Clear(This,rect_count,rects,flags,color,z,stencil)
+#define IWineD3DDevice_DrawPrimitive(This,primitive_type,start_vertex,primitive_count) (This)->lpVtbl->DrawPrimitive(This,primitive_type,start_vertex,primitive_count)
+#define IWineD3DDevice_DrawIndexedPrimitive(This,primitive_type,min_vertex_idx,vertex_count,start_idx,primitive_count) (This)->lpVtbl->DrawIndexedPrimitive(This,primitive_type,min_vertex_idx,vertex_count,start_idx,primitive_count)
+#define IWineD3DDevice_DrawPrimitiveUP(This,primitive_type,primitive_count,stream_data,stream_stride) (This)->lpVtbl->DrawPrimitiveUP(This,primitive_type,primitive_count,stream_data,stream_stride)
+#define IWineD3DDevice_DrawIndexedPrimitiveUP(This,primitive_type,min_vertex_idx,vertex_count,primitive_count,index_data,index_data_format,stream_data,stream_stride) (This)->lpVtbl->DrawIndexedPrimitiveUP(This,primitive_type,min_vertex_idx,vertex_count,primitive_count,index_data,index_data_format,stream_data,stream_stride)
+#define IWineD3DDevice_DrawPrimitiveStrided(This,primitive_type,primitive_count,strided_data) (This)->lpVtbl->DrawPrimitiveStrided(This,primitive_type,primitive_count,strided_data)
+#define IWineD3DDevice_DrawIndexedPrimitiveStrided(This,primitive_type,primitive_count,strided_data,vertex_count,index_data,index_data_format) (This)->lpVtbl->DrawIndexedPrimitiveStrided(This,primitive_type,primitive_count,strided_data,vertex_count,index_data,index_data_format)
+#define IWineD3DDevice_DrawRectPatch(This,handle,num_segs,rect_patch_info) (This)->lpVtbl->DrawRectPatch(This,handle,num_segs,rect_patch_info)
+#define IWineD3DDevice_DrawTriPatch(This,handle,num_segs,tri_patch_info) (This)->lpVtbl->DrawTriPatch(This,handle,num_segs,tri_patch_info)
+#define IWineD3DDevice_DeletePatch(This,handle) (This)->lpVtbl->DeletePatch(This,handle)
+#define IWineD3DDevice_ColorFill(This,surface,rect,color) (This)->lpVtbl->ColorFill(This,surface,rect,color)
+#define IWineD3DDevice_UpdateTexture(This,src_texture,dst_texture) (This)->lpVtbl->UpdateTexture(This,src_texture,dst_texture)
+#define IWineD3DDevice_UpdateSurface(This,src_surface,src_rect,dst_surface,dst_point) (This)->lpVtbl->UpdateSurface(This,src_surface,src_rect,dst_surface,dst_point)
+#define IWineD3DDevice_GetFrontBufferData(This,swapchain_idx,dst_surface) (This)->lpVtbl->GetFrontBufferData(This,swapchain_idx,dst_surface)
+#define IWineD3DDevice_ResourceReleased(This,resource) (This)->lpVtbl->ResourceReleased(This,resource)
+#define IWineD3DDevice_EnumResources(This,callback,data) (This)->lpVtbl->EnumResources(This,callback,data)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateVertexBuffer_Proxy(
+    IWineD3DDevice* This,
+    UINT length,
+    DWORD usage,
+    DWORD fvf,
+    WINED3DPOOL pool,
+    IWineD3DVertexBuffer **vertex_buffer,
+    HANDLE *shared_handle,
+    IUnknown *parent);
+void __RPC_STUB IWineD3DDevice_CreateVertexBuffer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateIndexBuffer_Proxy(
+    IWineD3DDevice* This,
+    UINT length,
+    DWORD usage,
+    WINED3DFORMAT format,
+    WINED3DPOOL pool,
+    IWineD3DIndexBuffer **index_buffer,
+    HANDLE *shared_handle,
+    IUnknown *parent);
+void __RPC_STUB IWineD3DDevice_CreateIndexBuffer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateStateBlock_Proxy(
+    IWineD3DDevice* This,
+    WINED3DSTATEBLOCKTYPE type,
+    IWineD3DStateBlock **stateblock,
+    IUnknown *parent);
+void __RPC_STUB IWineD3DDevice_CreateStateBlock_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateSurface_Proxy(
+    IWineD3DDevice* This,
+    UINT width,
+    UINT height,
+    WINED3DFORMAT format,
+    BOOL lockable,
+    BOOL discard,
+    UINT level,
+    IWineD3DSurface **surface,
+    WINED3DRESOURCETYPE resource_type,
+    DWORD usage,
+    WINED3DPOOL pool,
+    WINED3DMULTISAMPLE_TYPE multisample_type,
+    DWORD multisample_quality,
+    HANDLE *shared_handle,
+    WINED3DSURFTYPE surface_type,
+    IUnknown *parent);
+void __RPC_STUB IWineD3DDevice_CreateSurface_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateTexture_Proxy(
+    IWineD3DDevice* This,
+    UINT width,
+    UINT height,
+    UINT levels,
+    DWORD usage,
+    WINED3DFORMAT format,
+    WINED3DPOOL pool,
+    IWineD3DTexture **texture,
+    HANDLE *shared_handle,
+    IUnknown *parent,
+    HRESULT (STDMETHODCALLTYPE * create_surface_callback)(IUnknown *pDevice,IUnknown *pSuperior,UINT Width,UINT Height,WINED3DFORMAT Format,DWORD Usage,WINED3DPOOL Pool,UINT Level,WINED3DCUBEMAP_FACES Face,IWineD3DSurface **ppSurface,HANDLE *pSharedHandle));
+void __RPC_STUB IWineD3DDevice_CreateTexture_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateVolumeTexture_Proxy(
+    IWineD3DDevice* This,
+    UINT width,
+    UINT height,
+    UINT depth,
+    UINT levels,
+    DWORD usage,
+    WINED3DFORMAT format,
+    WINED3DPOOL pool,
+    IWineD3DVolumeTexture **texture,
+    HANDLE *shared_handle,
+    IUnknown *parent,
+    HRESULT (STDMETHODCALLTYPE * create_volume_callback)(IUnknown *pDevice,IUnknown *pSuperior,UINT Width,UINT Height,UINT Depth,WINED3DFORMAT Format,WINED3DPOOL Pool,DWORD Usage,IWineD3DVolume **ppVolume,HANDLE *pSharedHandle));
+void __RPC_STUB IWineD3DDevice_CreateVolumeTexture_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateVolume_Proxy(
+    IWineD3DDevice* This,
+    UINT width,
+    UINT height,
+    UINT depth,
+    DWORD usage,
+    WINED3DFORMAT format,
+    WINED3DPOOL pool,
+    IWineD3DVolume **volume,
+    HANDLE *shared_handle,
+    IUnknown *parent);
+void __RPC_STUB IWineD3DDevice_CreateVolume_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateCubeTexture_Proxy(
+    IWineD3DDevice* This,
+    UINT edge_length,
+    UINT levels,
+    DWORD usage,
+    WINED3DFORMAT format,
+    WINED3DPOOL pool,
+    IWineD3DCubeTexture **texture,
+    HANDLE *shared_handle,
+    IUnknown *parent,
+    HRESULT (STDMETHODCALLTYPE * create_surface_callback)(IUnknown *pDevice,IUnknown *pSuperior,UINT Width,UINT Height,WINED3DFORMAT Format,DWORD Usage,WINED3DPOOL Pool,UINT Level,WINED3DCUBEMAP_FACES Face,IWineD3DSurface **ppSurface,HANDLE *pSharedHandle));
+void __RPC_STUB IWineD3DDevice_CreateCubeTexture_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateQuery_Proxy(
+    IWineD3DDevice* This,
+    WINED3DQUERYTYPE type,
+    IWineD3DQuery **query,
+    IUnknown *parent);
+void __RPC_STUB IWineD3DDevice_CreateQuery_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateSwapChain_Proxy(
+    IWineD3DDevice* This,
+    WINED3DPRESENT_PARAMETERS *present_parameters,
+    IWineD3DSwapChain **swapchain,
+    IUnknown *parent,
+    HRESULT (STDMETHODCALLTYPE * create_render_target_callback)(IUnknown *pDevice,IUnknown *pSuperior,UINT Width,UINT Height,WINED3DFORMAT Format,WINED3DMULTISAMPLE_TYPE MultiSample,DWORD MultisampleQuality,BOOL Lockable,IWineD3DSurface **ppSurface,HANDLE *pSharedHandle),
+    HRESULT (STDMETHODCALLTYPE * create_depth_stencil_callback)(IUnknown *pDevice,IUnknown *pSuperior,UINT Width,UINT Height,WINED3DFORMAT Format,WINED3DMULTISAMPLE_TYPE MultiSample,DWORD MultisampleQuality,BOOL Discard,IWineD3DSurface **ppSurface,HANDLE *pSharedHandle),
+    WINED3DSURFTYPE surface_type);
+void __RPC_STUB IWineD3DDevice_CreateSwapChain_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateVertexDeclaration_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DVertexDeclaration **declaration,
+    IUnknown *parent,
+    const WINED3DVERTEXELEMENT *elements,
+    UINT element_count);
+void __RPC_STUB IWineD3DDevice_CreateVertexDeclaration_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateVertexDeclarationFromFVF_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DVertexDeclaration **declaration,
+    IUnknown *parent,
+    DWORD fvf);
+void __RPC_STUB IWineD3DDevice_CreateVertexDeclarationFromFVF_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateVertexShader_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DVertexDeclaration *declaration,
+    const DWORD *function,
+    IWineD3DVertexShader **shader,
+    IUnknown *parent);
+void __RPC_STUB IWineD3DDevice_CreateVertexShader_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreatePixelShader_Proxy(
+    IWineD3DDevice* This,
+    const DWORD *function,
+    IWineD3DPixelShader **shader,
+    IUnknown *parent);
+void __RPC_STUB IWineD3DDevice_CreatePixelShader_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreatePalette_Proxy(
+    IWineD3DDevice* This,
+    DWORD flags,
+    const PALETTEENTRY *palette_entry,
+    IWineD3DPalette **palette,
+    IUnknown *parent);
+void __RPC_STUB IWineD3DDevice_CreatePalette_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_Init3D_Proxy(
+    IWineD3DDevice* This,
+    WINED3DPRESENT_PARAMETERS *present_parameters,
+    HRESULT (STDMETHODCALLTYPE * create_swapchain_callback)(IUnknown *pDevice,WINED3DPRESENT_PARAMETERS *pPresentationParameters,IWineD3DSwapChain **pSwapChain));
+void __RPC_STUB IWineD3DDevice_Init3D_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_InitGDI_Proxy(
+    IWineD3DDevice* This,
+    WINED3DPRESENT_PARAMETERS *present_parameters,
+    HRESULT (STDMETHODCALLTYPE * create_swapchain_callback)(IUnknown *pDevice,WINED3DPRESENT_PARAMETERS *pPresentationParameters,IWineD3DSwapChain **pSwapChain));
+void __RPC_STUB IWineD3DDevice_InitGDI_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_Uninit3D_Proxy(
+    IWineD3DDevice* This,
+    ULONG (STDMETHODCALLTYPE * destroy_surface_callback)(IWineD3DSurface *pSurface),
+    ULONG (STDMETHODCALLTYPE * destroy_swapchain_callback)(IWineD3DSwapChain *pSwapChain));
+void __RPC_STUB IWineD3DDevice_Uninit3D_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_UninitGDI_Proxy(
+    IWineD3DDevice* This,
+    ULONG (STDMETHODCALLTYPE * destroy_swapchain_callback)(IWineD3DSwapChain *pSwapChain));
+void __RPC_STUB IWineD3DDevice_UninitGDI_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWineD3DDevice_SetMultithreaded_Proxy(
+    IWineD3DDevice* This);
+void __RPC_STUB IWineD3DDevice_SetMultithreaded_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_EvictManagedResources_Proxy(
+    IWineD3DDevice* This);
+void __RPC_STUB IWineD3DDevice_EvictManagedResources_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+UINT STDMETHODCALLTYPE IWineD3DDevice_GetAvailableTextureMem_Proxy(
+    IWineD3DDevice* This);
+void __RPC_STUB IWineD3DDevice_GetAvailableTextureMem_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetBackBuffer_Proxy(
+    IWineD3DDevice* This,
+    UINT swapchain_idx,
+    UINT backbuffer_idx,
+    WINED3DBACKBUFFER_TYPE backbuffer_type,
+    IWineD3DSurface **backbuffer);
+void __RPC_STUB IWineD3DDevice_GetBackBuffer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetCreationParameters_Proxy(
+    IWineD3DDevice* This,
+    WINED3DDEVICE_CREATION_PARAMETERS *creation_parameters);
+void __RPC_STUB IWineD3DDevice_GetCreationParameters_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetDeviceCaps_Proxy(
+    IWineD3DDevice* This,
+    WINED3DCAPS *caps);
+void __RPC_STUB IWineD3DDevice_GetDeviceCaps_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetDirect3D_Proxy(
+    IWineD3DDevice* This,
+    IWineD3D **d3d);
+void __RPC_STUB IWineD3DDevice_GetDirect3D_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetDisplayMode_Proxy(
+    IWineD3DDevice* This,
+    UINT swapchain_idx,
+    WINED3DDISPLAYMODE *mode);
+void __RPC_STUB IWineD3DDevice_GetDisplayMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetDisplayMode_Proxy(
+    IWineD3DDevice* This,
+    UINT swapchain_idx,
+    const WINED3DDISPLAYMODE *mode);
+void __RPC_STUB IWineD3DDevice_SetDisplayMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+UINT STDMETHODCALLTYPE IWineD3DDevice_GetNumberOfSwapChains_Proxy(
+    IWineD3DDevice* This);
+void __RPC_STUB IWineD3DDevice_GetNumberOfSwapChains_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetRasterStatus_Proxy(
+    IWineD3DDevice* This,
+    UINT swapchain_idx,
+    WINED3DRASTER_STATUS *raster_status);
+void __RPC_STUB IWineD3DDevice_GetRasterStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetSwapChain_Proxy(
+    IWineD3DDevice* This,
+    UINT swapchain_idx,
+    IWineD3DSwapChain **swapchain);
+void __RPC_STUB IWineD3DDevice_GetSwapChain_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_Reset_Proxy(
+    IWineD3DDevice* This,
+    WINED3DPRESENT_PARAMETERS *present_parameters);
+void __RPC_STUB IWineD3DDevice_Reset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetDialogBoxMode_Proxy(
+    IWineD3DDevice* This,
+    BOOL enable_dialogs);
+void __RPC_STUB IWineD3DDevice_SetDialogBoxMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetCursorProperties_Proxy(
+    IWineD3DDevice* This,
+    UINT x_hotspot,
+    UINT y_hotspot,
+    IWineD3DSurface *cursor_surface);
+void __RPC_STUB IWineD3DDevice_SetCursorProperties_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWineD3DDevice_SetCursorPosition_Proxy(
+    IWineD3DDevice* This,
+    int x_screen_space,
+    int y_screen_space,
+    DWORD flags);
+void __RPC_STUB IWineD3DDevice_SetCursorPosition_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+BOOL STDMETHODCALLTYPE IWineD3DDevice_ShowCursor_Proxy(
+    IWineD3DDevice* This,
+    BOOL show);
+void __RPC_STUB IWineD3DDevice_ShowCursor_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_TestCooperativeLevel_Proxy(
+    IWineD3DDevice* This);
+void __RPC_STUB IWineD3DDevice_TestCooperativeLevel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetClipPlane_Proxy(
+    IWineD3DDevice* This,
+    DWORD plane_idx,
+    const float *plane);
+void __RPC_STUB IWineD3DDevice_SetClipPlane_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetClipPlane_Proxy(
+    IWineD3DDevice* This,
+    DWORD plane_idx,
+    float *plane);
+void __RPC_STUB IWineD3DDevice_GetClipPlane_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetClipStatus_Proxy(
+    IWineD3DDevice* This,
+    const WINED3DCLIPSTATUS *clip_status);
+void __RPC_STUB IWineD3DDevice_SetClipStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetClipStatus_Proxy(
+    IWineD3DDevice* This,
+    WINED3DCLIPSTATUS *clip_status);
+void __RPC_STUB IWineD3DDevice_GetClipStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetCurrentTexturePalette_Proxy(
+    IWineD3DDevice* This,
+    UINT palette_number);
+void __RPC_STUB IWineD3DDevice_SetCurrentTexturePalette_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetCurrentTexturePalette_Proxy(
+    IWineD3DDevice* This,
+    UINT *palette_number);
+void __RPC_STUB IWineD3DDevice_GetCurrentTexturePalette_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetDepthStencilSurface_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DSurface *depth_stencil);
+void __RPC_STUB IWineD3DDevice_SetDepthStencilSurface_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetDepthStencilSurface_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DSurface **depth_stencil);
+void __RPC_STUB IWineD3DDevice_GetDepthStencilSurface_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetFVF_Proxy(
+    IWineD3DDevice* This,
+    DWORD fvf);
+void __RPC_STUB IWineD3DDevice_SetFVF_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetFVF_Proxy(
+    IWineD3DDevice* This,
+    DWORD *fvf);
+void __RPC_STUB IWineD3DDevice_GetFVF_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWineD3DDevice_SetGammaRamp_Proxy(
+    IWineD3DDevice* This,
+    UINT swapchain_idx,
+    DWORD flags,
+    const WINED3DGAMMARAMP *ramp);
+void __RPC_STUB IWineD3DDevice_SetGammaRamp_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWineD3DDevice_GetGammaRamp_Proxy(
+    IWineD3DDevice* This,
+    UINT swapchain_idx,
+    WINED3DGAMMARAMP *ramp);
+void __RPC_STUB IWineD3DDevice_GetGammaRamp_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetIndices_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DIndexBuffer *index_buffer);
+void __RPC_STUB IWineD3DDevice_SetIndices_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetIndices_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DIndexBuffer **index_buffer);
+void __RPC_STUB IWineD3DDevice_GetIndices_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetBaseVertexIndex_Proxy(
+    IWineD3DDevice* This,
+    INT base_index);
+void __RPC_STUB IWineD3DDevice_SetBaseVertexIndex_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetBaseVertexIndex_Proxy(
+    IWineD3DDevice* This,
+    INT *base_index);
+void __RPC_STUB IWineD3DDevice_GetBaseVertexIndex_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetLight_Proxy(
+    IWineD3DDevice* This,
+    DWORD light_idx,
+    const WINED3DLIGHT *light);
+void __RPC_STUB IWineD3DDevice_SetLight_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetLight_Proxy(
+    IWineD3DDevice* This,
+    DWORD light_idx,
+    WINED3DLIGHT *light);
+void __RPC_STUB IWineD3DDevice_GetLight_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetLightEnable_Proxy(
+    IWineD3DDevice* This,
+    DWORD light_idx,
+    BOOL enable);
+void __RPC_STUB IWineD3DDevice_SetLightEnable_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetLightEnable_Proxy(
+    IWineD3DDevice* This,
+    DWORD light_idx,
+    BOOL *enable);
+void __RPC_STUB IWineD3DDevice_GetLightEnable_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetMaterial_Proxy(
+    IWineD3DDevice* This,
+    const WINED3DMATERIAL *material);
+void __RPC_STUB IWineD3DDevice_SetMaterial_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetMaterial_Proxy(
+    IWineD3DDevice* This,
+    WINED3DMATERIAL *material);
+void __RPC_STUB IWineD3DDevice_GetMaterial_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetNPatchMode_Proxy(
+    IWineD3DDevice* This,
+    float segments);
+void __RPC_STUB IWineD3DDevice_SetNPatchMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+float STDMETHODCALLTYPE IWineD3DDevice_GetNPatchMode_Proxy(
+    IWineD3DDevice* This);
+void __RPC_STUB IWineD3DDevice_GetNPatchMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetPaletteEntries_Proxy(
+    IWineD3DDevice* This,
+    UINT palette_number,
+    const PALETTEENTRY *entries);
+void __RPC_STUB IWineD3DDevice_SetPaletteEntries_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetPaletteEntries_Proxy(
+    IWineD3DDevice* This,
+    UINT palette_number,
+    PALETTEENTRY *entries);
+void __RPC_STUB IWineD3DDevice_GetPaletteEntries_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetPixelShader_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DPixelShader *shader);
+void __RPC_STUB IWineD3DDevice_SetPixelShader_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetPixelShader_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DPixelShader **shader);
+void __RPC_STUB IWineD3DDevice_GetPixelShader_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetPixelShaderConstantB_Proxy(
+    IWineD3DDevice* This,
+    UINT start_register,
+    const BOOL *constants,
+    UINT bool_count);
+void __RPC_STUB IWineD3DDevice_SetPixelShaderConstantB_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetPixelShaderConstantB_Proxy(
+    IWineD3DDevice* This,
+    UINT start_register,
+    BOOL *constants,
+    UINT bool_count);
+void __RPC_STUB IWineD3DDevice_GetPixelShaderConstantB_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetPixelShaderConstantI_Proxy(
+    IWineD3DDevice* This,
+    UINT start_register,
+    const int *constants,
+    UINT vector4i_count);
+void __RPC_STUB IWineD3DDevice_SetPixelShaderConstantI_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetPixelShaderConstantI_Proxy(
+    IWineD3DDevice* This,
+    UINT start_register,
+    int *constants,
+    UINT vector4i_count);
+void __RPC_STUB IWineD3DDevice_GetPixelShaderConstantI_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetPixelShaderConstantF_Proxy(
+    IWineD3DDevice* This,
+    UINT start_register,
+    const float *constants,
+    UINT vector4f_count);
+void __RPC_STUB IWineD3DDevice_SetPixelShaderConstantF_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetPixelShaderConstantF_Proxy(
+    IWineD3DDevice* This,
+    UINT start_register,
+    float *constants,
+    UINT vector4f_count);
+void __RPC_STUB IWineD3DDevice_GetPixelShaderConstantF_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetRenderState_Proxy(
+    IWineD3DDevice* This,
+    WINED3DRENDERSTATETYPE state,
+    DWORD value);
+void __RPC_STUB IWineD3DDevice_SetRenderState_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetRenderState_Proxy(
+    IWineD3DDevice* This,
+    WINED3DRENDERSTATETYPE state,
+    DWORD *value);
+void __RPC_STUB IWineD3DDevice_GetRenderState_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetRenderTarget_Proxy(
+    IWineD3DDevice* This,
+    DWORD render_target_idx,
+    IWineD3DSurface *render_target);
+void __RPC_STUB IWineD3DDevice_SetRenderTarget_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetRenderTarget_Proxy(
+    IWineD3DDevice* This,
+    DWORD render_target_idx,
+    IWineD3DSurface **render_target);
+void __RPC_STUB IWineD3DDevice_GetRenderTarget_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetFrontBackBuffers_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DSurface *front,
+    IWineD3DSurface *back);
+void __RPC_STUB IWineD3DDevice_SetFrontBackBuffers_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetSamplerState_Proxy(
+    IWineD3DDevice* This,
+    DWORD sampler_idx,
+    WINED3DSAMPLERSTATETYPE state,
+    DWORD value);
+void __RPC_STUB IWineD3DDevice_SetSamplerState_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetSamplerState_Proxy(
+    IWineD3DDevice* This,
+    DWORD sampler_idx,
+    WINED3DSAMPLERSTATETYPE state,
+    DWORD *value);
+void __RPC_STUB IWineD3DDevice_GetSamplerState_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetScissorRect_Proxy(
+    IWineD3DDevice* This,
+    const RECT *rect);
+void __RPC_STUB IWineD3DDevice_SetScissorRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetScissorRect_Proxy(
+    IWineD3DDevice* This,
+    RECT *rect);
+void __RPC_STUB IWineD3DDevice_GetScissorRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetSoftwareVertexProcessing_Proxy(
+    IWineD3DDevice* This,
+    BOOL software);
+void __RPC_STUB IWineD3DDevice_SetSoftwareVertexProcessing_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+BOOL STDMETHODCALLTYPE IWineD3DDevice_GetSoftwareVertexProcessing_Proxy(
+    IWineD3DDevice* This);
+void __RPC_STUB IWineD3DDevice_GetSoftwareVertexProcessing_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetStreamSource_Proxy(
+    IWineD3DDevice* This,
+    UINT stream_idx,
+    IWineD3DVertexBuffer *vertex_buffer,
+    UINT offset,
+    UINT stride);
+void __RPC_STUB IWineD3DDevice_SetStreamSource_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetStreamSource_Proxy(
+    IWineD3DDevice* This,
+    UINT stream_idx,
+    IWineD3DVertexBuffer **vertex_buffer,
+    UINT *offset,
+    UINT *stride);
+void __RPC_STUB IWineD3DDevice_GetStreamSource_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetStreamSourceFreq_Proxy(
+    IWineD3DDevice* This,
+    UINT stream_idx,
+    UINT divider);
+void __RPC_STUB IWineD3DDevice_SetStreamSourceFreq_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetStreamSourceFreq_Proxy(
+    IWineD3DDevice* This,
+    UINT stream_idx,
+    UINT *divider);
+void __RPC_STUB IWineD3DDevice_GetStreamSourceFreq_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetTexture_Proxy(
+    IWineD3DDevice* This,
+    DWORD stage,
+    IWineD3DBaseTexture *texture);
+void __RPC_STUB IWineD3DDevice_SetTexture_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetTexture_Proxy(
+    IWineD3DDevice* This,
+    DWORD stage,
+    IWineD3DBaseTexture **texture);
+void __RPC_STUB IWineD3DDevice_GetTexture_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetTextureStageState_Proxy(
+    IWineD3DDevice* This,
+    DWORD stage,
+    WINED3DTEXTURESTAGESTATETYPE state,
+    DWORD value);
+void __RPC_STUB IWineD3DDevice_SetTextureStageState_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetTextureStageState_Proxy(
+    IWineD3DDevice* This,
+    DWORD stage,
+    WINED3DTEXTURESTAGESTATETYPE state,
+    DWORD *value);
+void __RPC_STUB IWineD3DDevice_GetTextureStageState_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetTransform_Proxy(
+    IWineD3DDevice* This,
+    WINED3DTRANSFORMSTATETYPE state,
+    const WINED3DMATRIX *matrix);
+void __RPC_STUB IWineD3DDevice_SetTransform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetTransform_Proxy(
+    IWineD3DDevice* This,
+    WINED3DTRANSFORMSTATETYPE state,
+    WINED3DMATRIX *matrix);
+void __RPC_STUB IWineD3DDevice_GetTransform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetVertexDeclaration_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DVertexDeclaration *declaration);
+void __RPC_STUB IWineD3DDevice_SetVertexDeclaration_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetVertexDeclaration_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DVertexDeclaration **declaration);
+void __RPC_STUB IWineD3DDevice_GetVertexDeclaration_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetVertexShader_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DVertexShader *shader);
+void __RPC_STUB IWineD3DDevice_SetVertexShader_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetVertexShader_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DVertexShader **shader);
+void __RPC_STUB IWineD3DDevice_GetVertexShader_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetVertexShaderConstantB_Proxy(
+    IWineD3DDevice* This,
+    UINT start_register,
+    const BOOL *constants,
+    UINT bool_count);
+void __RPC_STUB IWineD3DDevice_SetVertexShaderConstantB_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetVertexShaderConstantB_Proxy(
+    IWineD3DDevice* This,
+    UINT start_register,
+    BOOL *constants,
+    UINT bool_count);
+void __RPC_STUB IWineD3DDevice_GetVertexShaderConstantB_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetVertexShaderConstantI_Proxy(
+    IWineD3DDevice* This,
+    UINT start_register,
+    const int *constants,
+    UINT vector4i_count);
+void __RPC_STUB IWineD3DDevice_SetVertexShaderConstantI_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetVertexShaderConstantI_Proxy(
+    IWineD3DDevice* This,
+    UINT start_register,
+    int *constants,
+    UINT vector4i_count);
+void __RPC_STUB IWineD3DDevice_GetVertexShaderConstantI_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetVertexShaderConstantF_Proxy(
+    IWineD3DDevice* This,
+    UINT start_register,
+    const float *constants,
+    UINT vector4f_count);
+void __RPC_STUB IWineD3DDevice_SetVertexShaderConstantF_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetVertexShaderConstantF_Proxy(
+    IWineD3DDevice* This,
+    UINT start_register,
+    float *constants,
+    UINT vector4f_count);
+void __RPC_STUB IWineD3DDevice_GetVertexShaderConstantF_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetViewport_Proxy(
+    IWineD3DDevice* This,
+    const WINED3DVIEWPORT *viewport);
+void __RPC_STUB IWineD3DDevice_SetViewport_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetViewport_Proxy(
+    IWineD3DDevice* This,
+    WINED3DVIEWPORT *viewport);
+void __RPC_STUB IWineD3DDevice_GetViewport_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_MultiplyTransform_Proxy(
+    IWineD3DDevice* This,
+    WINED3DTRANSFORMSTATETYPE state,
+    const WINED3DMATRIX *matrix);
+void __RPC_STUB IWineD3DDevice_MultiplyTransform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_ValidateDevice_Proxy(
+    IWineD3DDevice* This,
+    DWORD *num_passes);
+void __RPC_STUB IWineD3DDevice_ValidateDevice_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_ProcessVertices_Proxy(
+    IWineD3DDevice* This,
+    UINT src_start_idx,
+    UINT dst_idx,
+    UINT vertex_count,
+    IWineD3DVertexBuffer *dest_buffer,
+    IWineD3DVertexDeclaration *declaration,
+    DWORD flags);
+void __RPC_STUB IWineD3DDevice_ProcessVertices_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_BeginStateBlock_Proxy(
+    IWineD3DDevice* This);
+void __RPC_STUB IWineD3DDevice_BeginStateBlock_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_EndStateBlock_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DStateBlock **stateblock);
+void __RPC_STUB IWineD3DDevice_EndStateBlock_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_BeginScene_Proxy(
+    IWineD3DDevice* This);
+void __RPC_STUB IWineD3DDevice_BeginScene_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_EndScene_Proxy(
+    IWineD3DDevice* This);
+void __RPC_STUB IWineD3DDevice_EndScene_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_Present_Proxy(
+    IWineD3DDevice* This,
+    const RECT *src_rect,
+    const RECT *dst_rect,
+    HWND dst_window_override,
+    const RGNDATA *dirty_region);
+void __RPC_STUB IWineD3DDevice_Present_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_Clear_Proxy(
+    IWineD3DDevice* This,
+    DWORD rect_count,
+    const WINED3DRECT *rects,
+    DWORD flags,
+    WINED3DCOLOR color,
+    float z,
+    DWORD stencil);
+void __RPC_STUB IWineD3DDevice_Clear_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_DrawPrimitive_Proxy(
+    IWineD3DDevice* This,
+    WINED3DPRIMITIVETYPE primitive_type,
+    UINT start_vertex,
+    UINT primitive_count);
+void __RPC_STUB IWineD3DDevice_DrawPrimitive_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_DrawIndexedPrimitive_Proxy(
+    IWineD3DDevice* This,
+    WINED3DPRIMITIVETYPE primitive_type,
+    UINT min_vertex_idx,
+    UINT vertex_count,
+    UINT start_idx,
+    UINT primitive_count);
+void __RPC_STUB IWineD3DDevice_DrawIndexedPrimitive_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_DrawPrimitiveUP_Proxy(
+    IWineD3DDevice* This,
+    WINED3DPRIMITIVETYPE primitive_type,
+    UINT primitive_count,
+    const void *stream_data,
+    UINT stream_stride);
+void __RPC_STUB IWineD3DDevice_DrawPrimitiveUP_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_DrawIndexedPrimitiveUP_Proxy(
+    IWineD3DDevice* This,
+    WINED3DPRIMITIVETYPE primitive_type,
+    UINT min_vertex_idx,
+    UINT vertex_count,
+    UINT primitive_count,
+    const void *index_data,
+    WINED3DFORMAT index_data_format,
+    const void *stream_data,
+    UINT stream_stride);
+void __RPC_STUB IWineD3DDevice_DrawIndexedPrimitiveUP_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_DrawPrimitiveStrided_Proxy(
+    IWineD3DDevice* This,
+    WINED3DPRIMITIVETYPE primitive_type,
+    UINT primitive_count,
+    const WineDirect3DVertexStridedData *strided_data);
+void __RPC_STUB IWineD3DDevice_DrawPrimitiveStrided_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_DrawIndexedPrimitiveStrided_Proxy(
+    IWineD3DDevice* This,
+    WINED3DPRIMITIVETYPE primitive_type,
+    UINT primitive_count,
+    const WineDirect3DVertexStridedData *strided_data,
+    UINT vertex_count,
+    const void *index_data,
+    WINED3DFORMAT index_data_format);
+void __RPC_STUB IWineD3DDevice_DrawIndexedPrimitiveStrided_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_DrawRectPatch_Proxy(
+    IWineD3DDevice* This,
+    UINT handle,
+    const float *num_segs,
+    const WINED3DRECTPATCH_INFO *rect_patch_info);
+void __RPC_STUB IWineD3DDevice_DrawRectPatch_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_DrawTriPatch_Proxy(
+    IWineD3DDevice* This,
+    UINT handle,
+    const float *num_segs,
+    const WINED3DTRIPATCH_INFO *tri_patch_info);
+void __RPC_STUB IWineD3DDevice_DrawTriPatch_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_DeletePatch_Proxy(
+    IWineD3DDevice* This,
+    UINT handle);
+void __RPC_STUB IWineD3DDevice_DeletePatch_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_ColorFill_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DSurface *surface,
+    const WINED3DRECT *rect,
+    WINED3DCOLOR color);
+void __RPC_STUB IWineD3DDevice_ColorFill_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_UpdateTexture_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DBaseTexture *src_texture,
+    IWineD3DBaseTexture *dst_texture);
+void __RPC_STUB IWineD3DDevice_UpdateTexture_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_UpdateSurface_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DSurface *src_surface,
+    const RECT *src_rect,
+    IWineD3DSurface *dst_surface,
+    const POINT *dst_point);
+void __RPC_STUB IWineD3DDevice_UpdateSurface_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetFrontBufferData_Proxy(
+    IWineD3DDevice* This,
+    UINT swapchain_idx,
+    IWineD3DSurface *dst_surface);
+void __RPC_STUB IWineD3DDevice_GetFrontBufferData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWineD3DDevice_ResourceReleased_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DResource *resource);
+void __RPC_STUB IWineD3DDevice_ResourceReleased_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_EnumResources_Proxy(
+    IWineD3DDevice* This,
+    HRESULT (STDMETHODCALLTYPE * callback)(IWineD3DResource *resource,void *pData),
+    void *data);
+void __RPC_STUB IWineD3DDevice_EnumResources_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DDevice_INTERFACE_DEFINED__ */
+
+IWineD3D * STDMETHODCALLTYPE  WineDirect3DCreate(UINT dxVersion,IUnknown *parent);
+
+IWineD3DClipper * STDMETHODCALLTYPE  WineDirect3DCreateClipper(IUnknown *parent);
+
+/* Begin additional prototypes for all interfaces */
+
+ULONG           __RPC_USER HWND_UserSize     (ULONG *, ULONG, HWND *);
+unsigned char * __RPC_USER HWND_UserMarshal  (ULONG *, unsigned char *, HWND *);
+unsigned char * __RPC_USER HWND_UserUnmarshal(ULONG *, unsigned char *, HWND *);
+void            __RPC_USER HWND_UserFree     (ULONG *, HWND *);
+ULONG           __RPC_USER HDC_UserSize     (ULONG *, ULONG, HDC *);
+unsigned char * __RPC_USER HDC_UserMarshal  (ULONG *, unsigned char *, HDC *);
+unsigned char * __RPC_USER HDC_UserUnmarshal(ULONG *, unsigned char *, HDC *);
+void            __RPC_USER HDC_UserFree     (ULONG *, HDC *);
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WIDL_WINED3D_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/wined3d.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/wined3d.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/wined3d.idl	(revision 16410)
@@ -0,0 +1,3429 @@
+/*
+ * Copyright 2002-2003 The wine-d3d team
+ * Copyright 2002-2003 Jason Edmeades
+ * Copyright 2002-2003 Raphael Junqueira
+ * Copyright 2005 Oliver Stieber
+ * Copyright 2006 Stefan Dösinger
+ * Copyright 2006 Stefan Dösinger for CodeWeavers
+ * Copyright 2007 Henri Verbeet
+ * Copyright 2008 Henri Verbeet for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "unknwn.idl";
+
+cpp_quote("#if 0")
+typedef HANDLE HMONITOR;
+
+typedef struct _RGNDATAHEADER
+{
+    DWORD dwSize;
+    DWORD iType;
+    DWORD nCount;
+    DWORD nRgnSize;
+    RECT rcBound;
+} RGNDATAHEADER;
+
+typedef struct _RGNDATA
+{
+    RGNDATAHEADER rdh;
+    char Buffer[1];
+} RGNDATA;
+cpp_quote("#endif")
+
+cpp_quote("#define WINED3D_OK                                  S_OK")
+
+const UINT _FACWINED3D = 0x876;
+cpp_quote("#define MAKE_WINED3DSTATUS(code)                    MAKE_HRESULT(0, _FACWINED3D, code)")
+cpp_quote("#define WINED3DOK_NOAUTOGEN                         MAKE_WINED3DSTATUS(2159)")
+
+cpp_quote("#define MAKE_WINED3DHRESULT(code)                   MAKE_HRESULT(1, _FACWINED3D, code)")
+cpp_quote("#define WINED3DERR_WRONGTEXTUREFORMAT               MAKE_WINED3DHRESULT(2072)")
+cpp_quote("#define WINED3DERR_UNSUPPORTEDCOLOROPERATION        MAKE_WINED3DHRESULT(2073)")
+cpp_quote("#define WINED3DERR_UNSUPPORTEDCOLORARG              MAKE_WINED3DHRESULT(2074)")
+cpp_quote("#define WINED3DERR_UNSUPPORTEDALPHAOPERATION        MAKE_WINED3DHRESULT(2075)")
+cpp_quote("#define WINED3DERR_UNSUPPORTEDALPHAARG              MAKE_WINED3DHRESULT(2076)")
+cpp_quote("#define WINED3DERR_TOOMANYOPERATIONS                MAKE_WINED3DHRESULT(2077)")
+cpp_quote("#define WINED3DERR_CONFLICTINGTEXTUREFILTER         MAKE_WINED3DHRESULT(2078)")
+cpp_quote("#define WINED3DERR_UNSUPPORTEDFACTORVALUE           MAKE_WINED3DHRESULT(2079)")
+cpp_quote("#define WINED3DERR_CONFLICTINGRENDERSTATE           MAKE_WINED3DHRESULT(2081)")
+cpp_quote("#define WINED3DERR_UNSUPPORTEDTEXTUREFILTER         MAKE_WINED3DHRESULT(2082)")
+cpp_quote("#define WINED3DERR_CONFLICTINGTEXTUREPALETTE        MAKE_WINED3DHRESULT(2086)")
+cpp_quote("#define WINED3DERR_DRIVERINTERNALERROR              MAKE_WINED3DHRESULT(2087)")
+cpp_quote("#define WINED3DERR_NOTFOUND                         MAKE_WINED3DHRESULT(2150)")
+cpp_quote("#define WINED3DERR_MOREDATA                         MAKE_WINED3DHRESULT(2151)")
+cpp_quote("#define WINED3DERR_DEVICELOST                       MAKE_WINED3DHRESULT(2152)")
+cpp_quote("#define WINED3DERR_DEVICENOTRESET                   MAKE_WINED3DHRESULT(2153)")
+cpp_quote("#define WINED3DERR_NOTAVAILABLE                     MAKE_WINED3DHRESULT(2154)")
+cpp_quote("#define WINED3DERR_OUTOFVIDEOMEMORY                 MAKE_WINED3DHRESULT(380)")
+cpp_quote("#define WINED3DERR_INVALIDDEVICE                    MAKE_WINED3DHRESULT(2155)")
+cpp_quote("#define WINED3DERR_INVALIDCALL                      MAKE_WINED3DHRESULT(2156)")
+cpp_quote("#define WINED3DERR_DRIVERINVALIDCALL                MAKE_WINED3DHRESULT(2157)")
+cpp_quote("#define WINED3DERR_WASSTILLDRAWING                  MAKE_WINED3DHRESULT(540)")
+cpp_quote("#define WINEDDERR_NOTAOVERLAYSURFACE                MAKE_WINED3DHRESULT(580)")
+cpp_quote("#define WINEDDERR_NODC                              MAKE_WINED3DHRESULT(586)")
+cpp_quote("#define WINEDDERR_DCALREADYCREATED                  MAKE_WINED3DHRESULT(620)")
+cpp_quote("#define WINEDDERR_NOTFLIPPABLE                      MAKE_WINED3DHRESULT(582)")
+cpp_quote("#define WINEDDERR_SURFACEBUSY                       MAKE_WINED3DHRESULT(430)")
+cpp_quote("#define WINEDDERR_INVALIDRECT                       MAKE_WINED3DHRESULT(150)")
+cpp_quote("#define WINEDDERR_NOCLIPLIST                        MAKE_WINED3DHRESULT(205)")
+cpp_quote("#define WINEDDERR_OVERLAYNOTVISIBLE                 MAKE_WINED3DHRESULT(577)")
+
+typedef DWORD WINED3DCOLOR;
+
+typedef enum _WINED3DLIGHTTYPE
+{
+    WINED3DLIGHT_POINT                      = 1,
+    WINED3DLIGHT_SPOT                       = 2,
+    WINED3DLIGHT_DIRECTIONAL                = 3,
+    WINED3DLIGHT_PARALLELPOINT              = 4, /* D3D7 */
+    WINED3DLIGHT_GLSPOT                     = 5, /* D3D7 */
+    WINED3DLIGHT_FORCE_DWORD                = 0x7fffffff
+} WINED3DLIGHTTYPE;
+
+typedef enum _WINED3DPRIMITIVETYPE
+{
+    WINED3DPT_POINTLIST                     = 1,
+    WINED3DPT_LINELIST                      = 2,
+    WINED3DPT_LINESTRIP                     = 3,
+    WINED3DPT_TRIANGLELIST                  = 4,
+    WINED3DPT_TRIANGLESTRIP                 = 5,
+    WINED3DPT_TRIANGLEFAN                   = 6,
+    WINED3DPT_FORCE_DWORD                   = 0x7fffffff
+} WINED3DPRIMITIVETYPE;
+
+typedef enum _WINED3DDEVTYPE
+{
+    WINED3DDEVTYPE_HAL                      = 1,
+    WINED3DDEVTYPE_REF                      = 2,
+    WINED3DDEVTYPE_SW                       = 3,
+    WINED3DDEVTYPE_NULLREF                  = 4,
+    WINED3DDEVTYPE_FORCE_DWORD              = 0xffffffff
+} WINED3DDEVTYPE;
+
+typedef enum _WINED3DDEGREETYPE
+{
+    WINED3DDEGREE_LINEAR                    = 1,
+    WINED3DDEGREE_QUADRATIC                 = 2,
+    WINED3DDEGREE_CUBIC                     = 3,
+    WINED3DDEGREE_QUINTIC                   = 5,
+    WINED3DDEGREE_FORCE_DWORD               = 0x7fffffff
+} WINED3DDEGREETYPE;
+
+typedef enum _WINED3DFORMAT
+{
+    WINED3DFMT_UNKNOWN                      = 0,
+    WINED3DFMT_R8G8B8                       = 20,
+    WINED3DFMT_A8R8G8B8                     = 21,
+    WINED3DFMT_X8R8G8B8                     = 22,
+    WINED3DFMT_R5G6B5                       = 23,
+    WINED3DFMT_X1R5G5B5                     = 24,
+    WINED3DFMT_A1R5G5B5                     = 25,
+    WINED3DFMT_A4R4G4B4                     = 26,
+    WINED3DFMT_R3G3B2                       = 27,
+    WINED3DFMT_A8                           = 28,
+    WINED3DFMT_A8R3G3B2                     = 29,
+    WINED3DFMT_X4R4G4B4                     = 30,
+    WINED3DFMT_A2B10G10R10                  = 31,
+    WINED3DFMT_A8B8G8R8                     = 32,
+    WINED3DFMT_X8B8G8R8                     = 33,
+    WINED3DFMT_G16R16                       = 34,
+    WINED3DFMT_A2R10G10B10                  = 35,
+    WINED3DFMT_A16B16G16R16                 = 36,
+    WINED3DFMT_A8P8                         = 40,
+    WINED3DFMT_P8                           = 41,
+    WINED3DFMT_L8                           = 50,
+    WINED3DFMT_A8L8                         = 51,
+    WINED3DFMT_A4L4                         = 52,
+    WINED3DFMT_V8U8                         = 60,
+    WINED3DFMT_L6V5U5                       = 61,
+    WINED3DFMT_X8L8V8U8                     = 62,
+    WINED3DFMT_Q8W8V8U8                     = 63,
+    WINED3DFMT_V16U16                       = 64,
+    WINED3DFMT_W11V11U10                    = 65,
+    WINED3DFMT_A2W10V10U10                  = 67,
+    WINED3DFMT_D16_LOCKABLE                 = 70,
+    WINED3DFMT_D32                          = 71,
+    WINED3DFMT_D15S1                        = 73,
+    WINED3DFMT_D24S8                        = 75,
+    WINED3DFMT_D24X8                        = 77,
+    WINED3DFMT_D24X4S4                      = 79,
+    WINED3DFMT_D16                          = 80,
+    WINED3DFMT_L16                          = 81,
+    WINED3DFMT_D32F_LOCKABLE                = 82,
+    WINED3DFMT_D24FS8                       = 83,
+    WINED3DFMT_VERTEXDATA                   = 100,
+    WINED3DFMT_INDEX16                      = 101,
+    WINED3DFMT_INDEX32                      = 102,
+    WINED3DFMT_Q16W16V16U16                 = 110,
+    WINED3DFMT_R16F                         = 111,
+    WINED3DFMT_G16R16F                      = 112,
+    WINED3DFMT_A16B16G16R16F                = 113,
+    WINED3DFMT_R32F                         = 114,
+    WINED3DFMT_G32R32F                      = 115,
+    WINED3DFMT_A32B32G32R32F                = 116,
+    WINED3DFMT_CxV8U8                       = 117,
+    WINED3DFMT_FORCE_DWORD                  = 0xffffffff
+} WINED3DFORMAT;
+cpp_quote("#define WINEMAKEFOURCC(ch0, ch1, ch2, ch3) \\")
+cpp_quote("        ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \\")
+cpp_quote("        ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))")
+cpp_quote("#define WINED3DFMT_UYVY         WINEMAKEFOURCC('U', 'Y', 'V', 'Y')")
+cpp_quote("#define WINED3DFMT_YUY2         WINEMAKEFOURCC('Y', 'U', 'Y', '2')")
+cpp_quote("#define WINED3DFMT_YV12         WINEMAKEFOURCC('Y', 'V', '1', '2')")
+cpp_quote("#define WINED3DFMT_DXT1         WINEMAKEFOURCC('D', 'X', 'T', '1')")
+cpp_quote("#define WINED3DFMT_DXT2         WINEMAKEFOURCC('D', 'X', 'T', '2')")
+cpp_quote("#define WINED3DFMT_DXT3         WINEMAKEFOURCC('D', 'X', 'T', '3')")
+cpp_quote("#define WINED3DFMT_DXT4         WINEMAKEFOURCC('D', 'X', 'T', '4')")
+cpp_quote("#define WINED3DFMT_DXT5         WINEMAKEFOURCC('D', 'X', 'T', '5')")
+cpp_quote("#define WINED3DFMT_MULTI2_ARGB8 WINEMAKEFOURCC('M', 'E', 'T', '1')")
+cpp_quote("#define WINED3DFMT_G8R8_G8B8    WINEMAKEFOURCC('G', 'R', 'G', 'B')")
+cpp_quote("#define WINED3DFMT_R8G8_B8G8    WINEMAKEFOURCC('R', 'G', 'B', 'G')")
+/* Vendor specific formats */
+cpp_quote("#define WINED3DFMT_ATI2N        WINEMAKEFOURCC('A', 'T', 'I', '2')")
+cpp_quote("#define WINED3DFMT_NVHU         WINEMAKEFOURCC('N', 'V', 'H', 'U')")
+cpp_quote("#define WINED3DFMT_NVHS         WINEMAKEFOURCC('N', 'V', 'H', 'S')")
+
+typedef enum _WINED3DRENDERSTATETYPE
+{
+    WINED3DRS_TEXTUREHANDLE                 = 1, /* d3d7 */
+    WINED3DRS_ANTIALIAS                     = 2, /* d3d7 */
+    WINED3DRS_TEXTUREADDRESS                = 3, /* d3d7 */
+    WINED3DRS_TEXTUREPERSPECTIVE            = 4, /* d3d7 */
+    WINED3DRS_WRAPU                         = 5, /* d3d7 */
+    WINED3DRS_WRAPV                         = 6, /* d3d7 */
+    WINED3DRS_ZENABLE                       = 7,
+    WINED3DRS_FILLMODE                      = 8,
+    WINED3DRS_SHADEMODE                     = 9,
+    WINED3DRS_LINEPATTERN                   = 10, /* d3d7, d3d8 */
+    WINED3DRS_MONOENABLE                    = 11, /* d3d7 */
+    WINED3DRS_ROP2                          = 12, /* d3d7 */
+    WINED3DRS_PLANEMASK                     = 13, /* d3d7 */
+    WINED3DRS_ZWRITEENABLE                  = 14,
+    WINED3DRS_ALPHATESTENABLE               = 15,
+    WINED3DRS_LASTPIXEL                     = 16,
+    WINED3DRS_TEXTUREMAG                    = 17, /* d3d7 */
+    WINED3DRS_TEXTUREMIN                    = 18, /* d3d7 */
+    WINED3DRS_SRCBLEND                      = 19,
+    WINED3DRS_DESTBLEND                     = 20,
+    WINED3DRS_TEXTUREMAPBLEND               = 21, /* d3d7 */
+    WINED3DRS_CULLMODE                      = 22,
+    WINED3DRS_ZFUNC                         = 23,
+    WINED3DRS_ALPHAREF                      = 24,
+    WINED3DRS_ALPHAFUNC                     = 25,
+    WINED3DRS_DITHERENABLE                  = 26,
+    WINED3DRS_ALPHABLENDENABLE              = 27,
+    WINED3DRS_FOGENABLE                     = 28,
+    WINED3DRS_SPECULARENABLE                = 29,
+    WINED3DRS_ZVISIBLE                      = 30, /* d3d7, d3d8 */
+    WINED3DRS_SUBPIXEL                      = 31, /* d3d7 */
+    WINED3DRS_SUBPIXELX                     = 32, /* d3d7 */
+    WINED3DRS_STIPPLEDALPHA                 = 33, /* d3d7 */
+    WINED3DRS_FOGCOLOR                      = 34,
+    WINED3DRS_FOGTABLEMODE                  = 35,
+    WINED3DRS_FOGSTART                      = 36,
+    WINED3DRS_FOGEND                        = 37,
+    WINED3DRS_FOGDENSITY                    = 38,
+    WINED3DRS_STIPPLEENABLE                 = 39, /* d3d7 */
+    WINED3DRS_EDGEANTIALIAS                 = 40, /* d3d7, d3d8 */
+    WINED3DRS_COLORKEYENABLE                = 41, /* d3d7 */
+    WINED3DRS_BORDERCOLOR                   = 43, /* d3d7 */
+    WINED3DRS_TEXTUREADDRESSU               = 44, /* d3d7 */
+    WINED3DRS_TEXTUREADDRESSV               = 45, /* d3d7 */
+    WINED3DRS_MIPMAPLODBIAS                 = 46, /* d3d7 */
+    WINED3DRS_ZBIAS                         = 47, /* d3d7, d3d8 */
+    WINED3DRS_RANGEFOGENABLE                = 48,
+    WINED3DRS_ANISOTROPY                    = 49, /* d3d7 */
+    WINED3DRS_FLUSHBATCH                    = 50, /* d3d7 */
+    WINED3DRS_TRANSLUCENTSORTINDEPENDENT    = 51, /* d3d7 */
+    WINED3DRS_STENCILENABLE                 = 52,
+    WINED3DRS_STENCILFAIL                   = 53,
+    WINED3DRS_STENCILZFAIL                  = 54,
+    WINED3DRS_STENCILPASS                   = 55,
+    WINED3DRS_STENCILFUNC                   = 56,
+    WINED3DRS_STENCILREF                    = 57,
+    WINED3DRS_STENCILMASK                   = 58,
+    WINED3DRS_STENCILWRITEMASK              = 59,
+    WINED3DRS_TEXTUREFACTOR                 = 60,
+    WINED3DRS_STIPPLEPATTERN00              = 64,
+    WINED3DRS_STIPPLEPATTERN01              = 65,
+    WINED3DRS_STIPPLEPATTERN02              = 66,
+    WINED3DRS_STIPPLEPATTERN03              = 67,
+    WINED3DRS_STIPPLEPATTERN04              = 68,
+    WINED3DRS_STIPPLEPATTERN05              = 69,
+    WINED3DRS_STIPPLEPATTERN06              = 70,
+    WINED3DRS_STIPPLEPATTERN07              = 71,
+    WINED3DRS_STIPPLEPATTERN08              = 72,
+    WINED3DRS_STIPPLEPATTERN09              = 73,
+    WINED3DRS_STIPPLEPATTERN10              = 74,
+    WINED3DRS_STIPPLEPATTERN11              = 75,
+    WINED3DRS_STIPPLEPATTERN12              = 76,
+    WINED3DRS_STIPPLEPATTERN13              = 77,
+    WINED3DRS_STIPPLEPATTERN14              = 78,
+    WINED3DRS_STIPPLEPATTERN15              = 79,
+    WINED3DRS_STIPPLEPATTERN16              = 80,
+    WINED3DRS_STIPPLEPATTERN17              = 81,
+    WINED3DRS_STIPPLEPATTERN18              = 82,
+    WINED3DRS_STIPPLEPATTERN19              = 83,
+    WINED3DRS_STIPPLEPATTERN20              = 84,
+    WINED3DRS_STIPPLEPATTERN21              = 85,
+    WINED3DRS_STIPPLEPATTERN22              = 86,
+    WINED3DRS_STIPPLEPATTERN23              = 87,
+    WINED3DRS_STIPPLEPATTERN24              = 88,
+    WINED3DRS_STIPPLEPATTERN25              = 89,
+    WINED3DRS_STIPPLEPATTERN26              = 90,
+    WINED3DRS_STIPPLEPATTERN27              = 91,
+    WINED3DRS_STIPPLEPATTERN28              = 92,
+    WINED3DRS_STIPPLEPATTERN29              = 93,
+    WINED3DRS_STIPPLEPATTERN30              = 94,
+    WINED3DRS_STIPPLEPATTERN31              = 95,
+    WINED3DRS_WRAP0                         = 128,
+    WINED3DRS_WRAP1                         = 129,
+    WINED3DRS_WRAP2                         = 130,
+    WINED3DRS_WRAP3                         = 131,
+    WINED3DRS_WRAP4                         = 132,
+    WINED3DRS_WRAP5                         = 133,
+    WINED3DRS_WRAP6                         = 134,
+    WINED3DRS_WRAP7                         = 135,
+    WINED3DRS_CLIPPING                      = 136,
+    WINED3DRS_LIGHTING                      = 137,
+    WINED3DRS_EXTENTS                       = 138, /* d3d7 */
+    WINED3DRS_AMBIENT                       = 139,
+    WINED3DRS_FOGVERTEXMODE                 = 140,
+    WINED3DRS_COLORVERTEX                   = 141,
+    WINED3DRS_LOCALVIEWER                   = 142,
+    WINED3DRS_NORMALIZENORMALS              = 143,
+    WINED3DRS_COLORKEYBLENDENABLE           = 144, /* d3d7 */
+    WINED3DRS_DIFFUSEMATERIALSOURCE         = 145,
+    WINED3DRS_SPECULARMATERIALSOURCE        = 146,
+    WINED3DRS_AMBIENTMATERIALSOURCE         = 147,
+    WINED3DRS_EMISSIVEMATERIALSOURCE        = 148,
+    WINED3DRS_VERTEXBLEND                   = 151,
+    WINED3DRS_CLIPPLANEENABLE               = 152,
+    WINED3DRS_SOFTWAREVERTEXPROCESSING      = 153, /* d3d8 */
+    WINED3DRS_POINTSIZE                     = 154,
+    WINED3DRS_POINTSIZE_MIN                 = 155,
+    WINED3DRS_POINTSPRITEENABLE             = 156,
+    WINED3DRS_POINTSCALEENABLE              = 157,
+    WINED3DRS_POINTSCALE_A                  = 158,
+    WINED3DRS_POINTSCALE_B                  = 159,
+    WINED3DRS_POINTSCALE_C                  = 160,
+    WINED3DRS_MULTISAMPLEANTIALIAS          = 161,
+    WINED3DRS_MULTISAMPLEMASK               = 162,
+    WINED3DRS_PATCHEDGESTYLE                = 163,
+    WINED3DRS_PATCHSEGMENTS                 = 164, /* d3d8 */
+    WINED3DRS_DEBUGMONITORTOKEN             = 165,
+    WINED3DRS_POINTSIZE_MAX                 = 166,
+    WINED3DRS_INDEXEDVERTEXBLENDENABLE      = 167,
+    WINED3DRS_COLORWRITEENABLE              = 168,
+    WINED3DRS_TWEENFACTOR                   = 170,
+    WINED3DRS_BLENDOP                       = 171,
+    WINED3DRS_POSITIONORDER                 = 172,
+    WINED3DRS_NORMALORDER                   = 173,
+    WINED3DRS_POSITIONDEGREE                = 172,
+    WINED3DRS_NORMALDEGREE                  = 173,
+    WINED3DRS_SCISSORTESTENABLE             = 174,
+    WINED3DRS_SLOPESCALEDEPTHBIAS           = 175,
+    WINED3DRS_ANTIALIASEDLINEENABLE         = 176,
+    WINED3DRS_MINTESSELLATIONLEVEL          = 178,
+    WINED3DRS_MAXTESSELLATIONLEVEL          = 179,
+    WINED3DRS_ADAPTIVETESS_X                = 180,
+    WINED3DRS_ADAPTIVETESS_Y                = 181,
+    WINED3DRS_ADAPTIVETESS_Z                = 182,
+    WINED3DRS_ADAPTIVETESS_W                = 183,
+    WINED3DRS_ENABLEADAPTIVETESSELLATION    = 184,
+    WINED3DRS_TWOSIDEDSTENCILMODE           = 185,
+    WINED3DRS_CCW_STENCILFAIL               = 186,
+    WINED3DRS_CCW_STENCILZFAIL              = 187,
+    WINED3DRS_CCW_STENCILPASS               = 188,
+    WINED3DRS_CCW_STENCILFUNC               = 189,
+    WINED3DRS_COLORWRITEENABLE1             = 190,
+    WINED3DRS_COLORWRITEENABLE2             = 191,
+    WINED3DRS_COLORWRITEENABLE3             = 192,
+    WINED3DRS_BLENDFACTOR                   = 193,
+    WINED3DRS_SRGBWRITEENABLE               = 194,
+    WINED3DRS_DEPTHBIAS                     = 195,
+    WINED3DRS_WRAP8                         = 198,
+    WINED3DRS_WRAP9                         = 199,
+    WINED3DRS_WRAP10                        = 200,
+    WINED3DRS_WRAP11                        = 201,
+    WINED3DRS_WRAP12                        = 202,
+    WINED3DRS_WRAP13                        = 203,
+    WINED3DRS_WRAP14                        = 204,
+    WINED3DRS_WRAP15                        = 205,
+    WINED3DRS_SEPARATEALPHABLENDENABLE      = 206,
+    WINED3DRS_SRCBLENDALPHA                 = 207,
+    WINED3DRS_DESTBLENDALPHA                = 208,
+    WINED3DRS_BLENDOPALPHA                  = 209,
+    WINED3DRS_FORCE_DWORD                   = 0x7fffffff
+} WINED3DRENDERSTATETYPE;
+const UINT WINEHIGHEST_RENDER_STATE         = WINED3DRS_BLENDOPALPHA;
+
+typedef enum _WINED3DBLEND
+{
+    WINED3DBLEND_ZERO                       =  1,
+    WINED3DBLEND_ONE                        =  2,
+    WINED3DBLEND_SRCCOLOR                   =  3,
+    WINED3DBLEND_INVSRCCOLOR                =  4,
+    WINED3DBLEND_SRCALPHA                   =  5,
+    WINED3DBLEND_INVSRCALPHA                =  6,
+    WINED3DBLEND_DESTALPHA                  =  7,
+    WINED3DBLEND_INVDESTALPHA               =  8,
+    WINED3DBLEND_DESTCOLOR                  =  9,
+    WINED3DBLEND_INVDESTCOLOR               = 10,
+    WINED3DBLEND_SRCALPHASAT                = 11,
+    WINED3DBLEND_BOTHSRCALPHA               = 12,
+    WINED3DBLEND_BOTHINVSRCALPHA            = 13,
+    WINED3DBLEND_BLENDFACTOR                = 14,
+    WINED3DBLEND_INVBLENDFACTOR             = 15,
+    WINED3DBLEND_FORCE_DWORD                = 0x7fffffff
+} WINED3DBLEND;
+
+typedef enum _WINED3DBLENDOP
+{
+    WINED3DBLENDOP_ADD                      = 1,
+    WINED3DBLENDOP_SUBTRACT                 = 2,
+    WINED3DBLENDOP_REVSUBTRACT              = 3,
+    WINED3DBLENDOP_MIN                      = 4,
+    WINED3DBLENDOP_MAX                      = 5,
+    WINED3DBLENDOP_FORCE_DWORD              = 0x7fffffff
+} WINED3DBLENDOP;
+
+typedef enum _WINED3DVERTEXBLENDFLAGS
+{
+    WINED3DVBF_DISABLE                      = 0,
+    WINED3DVBF_1WEIGHTS                     = 1,
+    WINED3DVBF_2WEIGHTS                     = 2,
+    WINED3DVBF_3WEIGHTS                     = 3,
+    WINED3DVBF_TWEENING                     = 255,
+    WINED3DVBF_0WEIGHTS                     = 256
+} WINED3DVERTEXBLENDFLAGS;
+
+typedef enum _WINED3DCMPFUNC
+{
+    WINED3DCMP_NEVER                        = 1,
+    WINED3DCMP_LESS                         = 2,
+    WINED3DCMP_EQUAL                        = 3,
+    WINED3DCMP_LESSEQUAL                    = 4,
+    WINED3DCMP_GREATER                      = 5,
+    WINED3DCMP_NOTEQUAL                     = 6,
+    WINED3DCMP_GREATEREQUAL                 = 7,
+    WINED3DCMP_ALWAYS                       = 8,
+    WINED3DCMP_FORCE_DWORD                  = 0x7fffffff
+} WINED3DCMPFUNC;
+
+typedef enum _WINED3DZBUFFERTYPE
+{
+    WINED3DZB_FALSE                         = 0,
+    WINED3DZB_TRUE                          = 1,
+    WINED3DZB_USEW                          = 2,
+    WINED3DZB_FORCE_DWORD                   = 0x7fffffff
+} WINED3DZBUFFERTYPE;
+
+typedef enum _WINED3DFOGMODE
+{
+    WINED3DFOG_NONE                         = 0,
+    WINED3DFOG_EXP                          = 1,
+    WINED3DFOG_EXP2                         = 2,
+    WINED3DFOG_LINEAR                       = 3,
+    WINED3DFOG_FORCE_DWORD                  = 0x7fffffff
+} WINED3DFOGMODE;
+
+typedef enum _WINED3DSHADEMODE
+{
+    WINED3DSHADE_FLAT                       = 1,
+    WINED3DSHADE_GOURAUD                    = 2,
+    WINED3DSHADE_PHONG                      = 3,
+    WINED3DSHADE_FORCE_DWORD                = 0x7fffffff
+} WINED3DSHADEMODE;
+
+typedef enum _WINED3DFILLMODE
+{
+    WINED3DFILL_POINT                       = 1,
+    WINED3DFILL_WIREFRAME                   = 2,
+    WINED3DFILL_SOLID                       = 3,
+    WINED3DFILL_FORCE_DWORD                 = 0x7fffffff
+} WINED3DFILLMODE;
+
+typedef enum _WINED3DCULL
+{
+    WINED3DCULL_NONE                        = 1,
+    WINED3DCULL_CW                          = 2,
+    WINED3DCULL_CCW                         = 3,
+    WINED3DCULL_FORCE_DWORD                 = 0x7fffffff
+} WINED3DCULL;
+
+typedef enum _WINED3DSTENCILOP
+{
+    WINED3DSTENCILOP_KEEP                   = 1,
+    WINED3DSTENCILOP_ZERO                   = 2,
+    WINED3DSTENCILOP_REPLACE                = 3,
+    WINED3DSTENCILOP_INCRSAT                = 4,
+    WINED3DSTENCILOP_DECRSAT                = 5,
+    WINED3DSTENCILOP_INVERT                 = 6,
+    WINED3DSTENCILOP_INCR                   = 7,
+    WINED3DSTENCILOP_DECR                   = 8,
+    WINED3DSTENCILOP_FORCE_DWORD            = 0x7fffffff
+} WINED3DSTENCILOP;
+
+typedef enum _WINED3DMATERIALCOLORSOURCE
+{
+    WINED3DMCS_MATERIAL                     = 0,
+    WINED3DMCS_COLOR1                       = 1,
+    WINED3DMCS_COLOR2                       = 2,
+    WINED3DMCS_FORCE_DWORD                  = 0x7fffffff
+} WINED3DMATERIALCOLORSOURCE;
+
+typedef enum _WINED3DPATCHEDGESTYLE
+{
+    WINED3DPATCHEDGE_DISCRETE               = 0,
+    WINED3DPATCHEDGE_CONTINUOUS             = 1,
+    WINED3DPATCHEDGE_FORCE_DWORD            = 0x7fffffff
+} WINED3DPATCHEDGESTYLE;
+
+typedef enum _WINED3DBACKBUFFER_TYPE
+{
+    WINED3DBACKBUFFER_TYPE_MONO             = 0,
+    WINED3DBACKBUFFER_TYPE_LEFT             = 1,
+    WINED3DBACKBUFFER_TYPE_RIGHT            = 2,
+    WINED3DBACKBUFFER_TYPE_FORCE_DWORD      = 0x7fffffff
+} WINED3DBACKBUFFER_TYPE;
+
+typedef enum _WINED3DSWAPEFFECT
+{
+    WINED3DSWAPEFFECT_DISCARD               = 1,
+    WINED3DSWAPEFFECT_FLIP                  = 2,
+    WINED3DSWAPEFFECT_COPY                  = 3,
+    WINED3DSWAPEFFECT_COPY_VSYNC            = 4,
+    WINED3DSWAPEFFECT_FORCE_DWORD           = 0xffffffff
+} WINED3DSWAPEFFECT;
+
+typedef enum _WINED3DSAMPLERSTATETYPE
+{
+    WINED3DSAMP_ADDRESSU                    = 1,
+    WINED3DSAMP_ADDRESSV                    = 2,
+    WINED3DSAMP_ADDRESSW                    = 3,
+    WINED3DSAMP_BORDERCOLOR                 = 4,
+    WINED3DSAMP_MAGFILTER                   = 5,
+    WINED3DSAMP_MINFILTER                   = 6,
+    WINED3DSAMP_MIPFILTER                   = 7,
+    WINED3DSAMP_MIPMAPLODBIAS               = 8,
+    WINED3DSAMP_MAXMIPLEVEL                 = 9,
+    WINED3DSAMP_MAXANISOTROPY               = 10,
+    WINED3DSAMP_SRGBTEXTURE                 = 11,
+    WINED3DSAMP_ELEMENTINDEX                = 12,
+    WINED3DSAMP_DMAPOFFSET                  = 13,
+    WINED3DSAMP_FORCE_DWORD                 = 0x7fffffff,
+} WINED3DSAMPLERSTATETYPE;
+const UINT WINED3D_HIGHEST_SAMPLER_STATE    = WINED3DSAMP_DMAPOFFSET;
+
+typedef enum _WINED3DMULTISAMPLE_TYPE
+{
+    WINED3DMULTISAMPLE_NONE                 = 0,
+    WINED3DMULTISAMPLE_NONMASKABLE          = 1,
+    WINED3DMULTISAMPLE_2_SAMPLES            = 2,
+    WINED3DMULTISAMPLE_3_SAMPLES            = 3,
+    WINED3DMULTISAMPLE_4_SAMPLES            = 4,
+    WINED3DMULTISAMPLE_5_SAMPLES            = 5,
+    WINED3DMULTISAMPLE_6_SAMPLES            = 6,
+    WINED3DMULTISAMPLE_7_SAMPLES            = 7,
+    WINED3DMULTISAMPLE_8_SAMPLES            = 8,
+    WINED3DMULTISAMPLE_9_SAMPLES            = 9,
+    WINED3DMULTISAMPLE_10_SAMPLES           = 10,
+    WINED3DMULTISAMPLE_11_SAMPLES           = 11,
+    WINED3DMULTISAMPLE_12_SAMPLES           = 12,
+    WINED3DMULTISAMPLE_13_SAMPLES           = 13,
+    WINED3DMULTISAMPLE_14_SAMPLES           = 14,
+    WINED3DMULTISAMPLE_15_SAMPLES           = 15,
+    WINED3DMULTISAMPLE_16_SAMPLES           = 16,
+    WINED3DMULTISAMPLE_FORCE_DWORD          = 0xffffffff
+} WINED3DMULTISAMPLE_TYPE;
+
+typedef enum _WINED3DTEXTURESTAGESTATETYPE
+{
+    WINED3DTSS_COLOROP                      = 1,
+    WINED3DTSS_COLORARG1                    = 2,
+    WINED3DTSS_COLORARG2                    = 3,
+    WINED3DTSS_ALPHAOP                      = 4,
+    WINED3DTSS_ALPHAARG1                    = 5,
+    WINED3DTSS_ALPHAARG2                    = 6,
+    WINED3DTSS_BUMPENVMAT00                 = 7,
+    WINED3DTSS_BUMPENVMAT01                 = 8,
+    WINED3DTSS_BUMPENVMAT10                 = 9,
+    WINED3DTSS_BUMPENVMAT11                 = 10,
+    WINED3DTSS_TEXCOORDINDEX                = 11,
+    WINED3DTSS_ADDRESS                      = 12,
+    WINED3DTSS_ADDRESSU                     = 13,
+    WINED3DTSS_ADDRESSV                     = 14,
+    WINED3DTSS_BORDERCOLOR                  = 15,
+    WINED3DTSS_MAGFILTER                    = 16,
+    WINED3DTSS_MINFILTER                    = 17,
+    WINED3DTSS_MIPFILTER                    = 18,
+    WINED3DTSS_MIPMAPLODBIAS                = 19,
+    WINED3DTSS_MAXMIPLEVEL                  = 20,
+    WINED3DTSS_MAXANISOTROPY                = 21,
+    WINED3DTSS_BUMPENVLSCALE                = 22,
+    WINED3DTSS_BUMPENVLOFFSET               = 23,
+    WINED3DTSS_TEXTURETRANSFORMFLAGS        = 24,
+    WINED3DTSS_ADDRESSW                     = 25,
+    WINED3DTSS_COLORARG0                    = 26,
+    WINED3DTSS_ALPHAARG0                    = 27,
+    WINED3DTSS_RESULTARG                    = 28,
+    WINED3DTSS_CONSTANT                     = 32,
+    WINED3DTSS_FORCE_DWORD                  = 0x7fffffff
+} WINED3DTEXTURESTAGESTATETYPE;
+const UINT WINED3D_HIGHEST_TEXTURE_STATE    = WINED3DTSS_CONSTANT;
+
+typedef enum _WINED3DTEXTURETRANSFORMFLAGS
+{
+    WINED3DTTFF_DISABLE                     = 0,
+    WINED3DTTFF_COUNT1                      = 1,
+    WINED3DTTFF_COUNT2                      = 2,
+    WINED3DTTFF_COUNT3                      = 3,
+    WINED3DTTFF_COUNT4                      = 4,
+    WINED3DTTFF_PROJECTED                   = 256,
+    WINED3DTTFF_FORCE_DWORD                 = 0x7fffffff
+} WINED3DTEXTURETRANSFORMFLAGS;
+
+typedef enum _WINED3DTEXTUREOP
+{
+    WINED3DTOP_DISABLE                      = 1,
+    WINED3DTOP_SELECTARG1                   = 2,
+    WINED3DTOP_SELECTARG2                   = 3,
+    WINED3DTOP_MODULATE                     = 4,
+    WINED3DTOP_MODULATE2X                   = 5,
+    WINED3DTOP_MODULATE4X                   = 6,
+    WINED3DTOP_ADD                          = 7,
+    WINED3DTOP_ADDSIGNED                    = 8,
+    WINED3DTOP_ADDSIGNED2X                  = 9,
+    WINED3DTOP_SUBTRACT                     = 10,
+    WINED3DTOP_ADDSMOOTH                    = 11,
+    WINED3DTOP_BLENDDIFFUSEALPHA            = 12,
+    WINED3DTOP_BLENDTEXTUREALPHA            = 13,
+    WINED3DTOP_BLENDFACTORALPHA             = 14,
+    WINED3DTOP_BLENDTEXTUREALPHAPM          = 15,
+    WINED3DTOP_BLENDCURRENTALPHA            = 16,
+    WINED3DTOP_PREMODULATE                  = 17,
+    WINED3DTOP_MODULATEALPHA_ADDCOLOR       = 18,
+    WINED3DTOP_MODULATECOLOR_ADDALPHA       = 19,
+    WINED3DTOP_MODULATEINVALPHA_ADDCOLOR    = 20,
+    WINED3DTOP_MODULATEINVCOLOR_ADDALPHA    = 21,
+    WINED3DTOP_BUMPENVMAP                   = 22,
+    WINED3DTOP_BUMPENVMAPLUMINANCE          = 23,
+    WINED3DTOP_DOTPRODUCT3                  = 24,
+    WINED3DTOP_MULTIPLYADD                  = 25,
+    WINED3DTOP_LERP                         = 26,
+    WINED3DTOP_FORCE_DWORD                  = 0x7fffffff,
+} WINED3DTEXTUREOP;
+
+typedef enum _WINED3DTEXTUREADDRESS
+{
+    WINED3DTADDRESS_WRAP                    = 1,
+    WINED3DTADDRESS_MIRROR                  = 2,
+    WINED3DTADDRESS_CLAMP                   = 3,
+    WINED3DTADDRESS_BORDER                  = 4,
+    WINED3DTADDRESS_MIRRORONCE              = 5,
+    WINED3DTADDRESS_FORCE_DWORD             = 0x7fffffff
+} WINED3DTEXTUREADDRESS;
+
+typedef enum _WINED3DTRANSFORMSTATETYPE
+{
+    WINED3DTS_VIEW                          = 2,
+    WINED3DTS_PROJECTION                    = 3,
+    WINED3DTS_TEXTURE0                      = 16,
+    WINED3DTS_TEXTURE1                      = 17,
+    WINED3DTS_TEXTURE2                      = 18,
+    WINED3DTS_TEXTURE3                      = 19,
+    WINED3DTS_TEXTURE4                      = 20,
+    WINED3DTS_TEXTURE5                      = 21,
+    WINED3DTS_TEXTURE6                      = 22,
+    WINED3DTS_TEXTURE7                      = 23,
+    WINED3DTS_FORCE_DWORD                   = 0x7fffffff
+} WINED3DTRANSFORMSTATETYPE;
+cpp_quote("#define WINED3DTS_WORLD  WINED3DTS_WORLDMATRIX(0)")
+cpp_quote("#define WINED3DTS_WORLD1 WINED3DTS_WORLDMATRIX(1)")
+cpp_quote("#define WINED3DTS_WORLD2 WINED3DTS_WORLDMATRIX(2)")
+cpp_quote("#define WINED3DTS_WORLD3 WINED3DTS_WORLDMATRIX(3)")
+cpp_quote("#define WINED3DTS_WORLDMATRIX(index) (WINED3DTRANSFORMSTATETYPE)(index + 256)")
+
+typedef enum _WINED3DBASISTYPE
+{
+    WINED3DBASIS_BEZIER                     = 0,
+    WINED3DBASIS_BSPLINE                    = 1,
+    WINED3DBASIS_INTERPOLATE                = 2,
+    WINED3DBASIS_FORCE_DWORD                = 0x7fffffff
+} WINED3DBASISTYPE;
+
+typedef enum _WINED3DCUBEMAP_FACES
+{
+    WINED3DCUBEMAP_FACE_POSITIVE_X          = 0,
+    WINED3DCUBEMAP_FACE_NEGATIVE_X          = 1,
+    WINED3DCUBEMAP_FACE_POSITIVE_Y          = 2,
+    WINED3DCUBEMAP_FACE_NEGATIVE_Y          = 3,
+    WINED3DCUBEMAP_FACE_POSITIVE_Z          = 4,
+    WINED3DCUBEMAP_FACE_NEGATIVE_Z          = 5,
+    WINED3DCUBEMAP_FACE_FORCE_DWORD         = 0xffffffff
+} WINED3DCUBEMAP_FACES;
+
+typedef enum _WINED3DTEXTUREFILTERTYPE
+{
+    WINED3DTEXF_NONE                        = 0,
+    WINED3DTEXF_POINT                       = 1,
+    WINED3DTEXF_LINEAR                      = 2,
+    WINED3DTEXF_ANISOTROPIC                 = 3,
+    WINED3DTEXF_FLATCUBIC                   = 4,
+    WINED3DTEXF_GAUSSIANCUBIC               = 5,
+    WINED3DTEXF_PYRAMIDALQUAD               = 6,
+    WINED3DTEXF_GAUSSIANQUAD                = 7,
+    WINED3DTEXF_FORCE_DWORD                 = 0x7fffffff
+} WINED3DTEXTUREFILTERTYPE;
+
+typedef enum _WINED3DRESOURCETYPE
+{
+    WINED3DRTYPE_SURFACE                    = 1,
+    WINED3DRTYPE_VOLUME                     = 2,
+    WINED3DRTYPE_TEXTURE                    = 3,
+    WINED3DRTYPE_VOLUMETEXTURE              = 4,
+    WINED3DRTYPE_CUBETEXTURE                = 5,
+    WINED3DRTYPE_VERTEXBUFFER               = 6,
+    WINED3DRTYPE_INDEXBUFFER                = 7,
+    WINED3DRTYPE_FORCE_DWORD                = 0x7fffffff
+} WINED3DRESOURCETYPE;
+const UINT WINED3DRTYPECOUNT                = WINED3DRTYPE_INDEXBUFFER + 1;
+
+typedef enum _WINED3DPOOL
+{
+    WINED3DPOOL_DEFAULT                     = 0,
+    WINED3DPOOL_MANAGED                     = 1,
+    WINED3DPOOL_SYSTEMMEM                   = 2,
+    WINED3DPOOL_SCRATCH                     = 3,
+    WINED3DPOOL_FORCE_DWORD                 = 0x7fffffff
+} WINED3DPOOL;
+
+typedef enum _WINED3DQUERYTYPE
+{
+    WINED3DQUERYTYPE_VCACHE                 = 4,
+    WINED3DQUERYTYPE_RESOURCEMANAGER        = 5,
+    WINED3DQUERYTYPE_VERTEXSTATS            = 6,
+    WINED3DQUERYTYPE_EVENT                  = 8,
+    WINED3DQUERYTYPE_OCCLUSION              = 9,
+    WINED3DQUERYTYPE_TIMESTAMP              = 10,
+    WINED3DQUERYTYPE_TIMESTAMPDISJOINT      = 11,
+    WINED3DQUERYTYPE_TIMESTAMPFREQ          = 12,
+    WINED3DQUERYTYPE_PIPELINETIMINGS        = 13,
+    WINED3DQUERYTYPE_INTERFACETIMINGS       = 14,
+    WINED3DQUERYTYPE_VERTEXTIMINGS          = 15,
+    WINED3DQUERYTYPE_PIXELTIMINGS           = 16,
+    WINED3DQUERYTYPE_BANDWIDTHTIMINGS       = 17,
+    WINED3DQUERYTYPE_CACHEUTILIZATION       = 18
+} WINED3DQUERYTYPE;
+
+const UINT WINED3DISSUE_BEGIN               = (1 << 1);
+const UINT WINED3DISSUE_END                 = (1 << 0);
+const UINT WINED3DGETDATA_FLUSH             = (1 << 0);
+
+typedef enum _WINED3DSTATEBLOCKTYPE
+{
+    WINED3DSBT_INIT                         = 0,
+    WINED3DSBT_ALL                          = 1,
+    WINED3DSBT_PIXELSTATE                   = 2,
+    WINED3DSBT_VERTEXSTATE                  = 3,
+    WINED3DSBT_RECORDED                     = 4, /* WineD3D private */
+    WINED3DSBT_FORCE_DWORD                  = 0xffffffff
+} WINED3DSTATEBLOCKTYPE;
+
+typedef enum _WINED3DDECLMETHOD
+{
+    WINED3DDECLMETHOD_DEFAULT               = 0,
+    WINED3DDECLMETHOD_PARTIALU              = 1,
+    WINED3DDECLMETHOD_PARTIALV              = 2,
+    WINED3DDECLMETHOD_CROSSUV               = 3,
+    WINED3DDECLMETHOD_UV                    = 4,
+    WINED3DDECLMETHOD_LOOKUP                = 5,
+    WINED3DDECLMETHOD_LOOKUPPRESAMPLED      = 6
+} WINED3DDECLMETHOD;
+
+typedef enum _WINED3DDECLTYPE
+{
+    WINED3DDECLTYPE_FLOAT1                  = 0,
+    WINED3DDECLTYPE_FLOAT2                  = 1,
+    WINED3DDECLTYPE_FLOAT3                  = 2,
+    WINED3DDECLTYPE_FLOAT4                  = 3,
+    WINED3DDECLTYPE_D3DCOLOR                = 4,
+    WINED3DDECLTYPE_UBYTE4                  = 5,
+    WINED3DDECLTYPE_SHORT2                  = 6,
+    WINED3DDECLTYPE_SHORT4                  = 7,
+    /* VS 2.0 */
+    WINED3DDECLTYPE_UBYTE4N                 = 8,
+    WINED3DDECLTYPE_SHORT2N                 = 9,
+    WINED3DDECLTYPE_SHORT4N                 = 10,
+    WINED3DDECLTYPE_USHORT2N                = 11,
+    WINED3DDECLTYPE_USHORT4N                = 12,
+    WINED3DDECLTYPE_UDEC3                   = 13,
+    WINED3DDECLTYPE_DEC3N                   = 14,
+    WINED3DDECLTYPE_FLOAT16_2               = 15,
+    WINED3DDECLTYPE_FLOAT16_4               = 16,
+    WINED3DDECLTYPE_UNUSED                  = 17,
+} WINED3DDECLTYPE;
+cpp_quote("#define WINED3DDECL_END() {0xFF, 0, WINED3DDECLTYPE_UNUSED, 0, 0, 0, -1}")
+
+typedef enum _WINED3DDECLUSAGE
+{
+    WINED3DDECLUSAGE_POSITION               = 0,
+    WINED3DDECLUSAGE_BLENDWEIGHT            = 1,
+    WINED3DDECLUSAGE_BLENDINDICES           = 2,
+    WINED3DDECLUSAGE_NORMAL                 = 3,
+    WINED3DDECLUSAGE_PSIZE                  = 4,
+    WINED3DDECLUSAGE_TEXCOORD               = 5,
+    WINED3DDECLUSAGE_TANGENT                = 6,
+    WINED3DDECLUSAGE_BINORMAL               = 7,
+    WINED3DDECLUSAGE_TESSFACTOR             = 8,
+    WINED3DDECLUSAGE_POSITIONT              = 9,
+    WINED3DDECLUSAGE_COLOR                  = 10,
+    WINED3DDECLUSAGE_FOG                    = 11,
+    WINED3DDECLUSAGE_DEPTH                  = 12,
+    WINED3DDECLUSAGE_SAMPLE                 = 13
+} WINED3DDECLUSAGE;
+
+typedef enum _WINED3DSURFTYPE
+{
+    SURFACE_UNKNOWN                         = 0,    /* Default / Unknown surface type */
+    SURFACE_OPENGL,                                 /* OpenGL surface: Renders using libGL, needed for 3D */
+    SURFACE_GDI,                                    /* User surface. No 3D, DirectDraw rendering with GDI */
+} WINED3DSURFTYPE;
+
+const UINT WINED3DCOLORWRITEENABLE_RED                          = (1<<0);
+const UINT WINED3DCOLORWRITEENABLE_GREEN                        = (1<<1);
+const UINT WINED3DCOLORWRITEENABLE_BLUE                         = (1<<2);
+const UINT WINED3DCOLORWRITEENABLE_ALPHA                        = (1<<3);
+
+const UINT WINED3DADAPTER_DEFAULT                               = 0;
+const UINT WINED3DENUM_NO_WHQL_LEVEL                            = 2;
+const UINT WINED3DPRESENT_BACK_BUFFER_MAX                       = 3;
+
+const UINT WINED3DTSS_TCI_PASSTHRU                              = 0x00000;
+const UINT WINED3DTSS_TCI_CAMERASPACENORMAL                     = 0x10000;
+const UINT WINED3DTSS_TCI_CAMERASPACEPOSITION                   = 0x20000;
+const UINT WINED3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR           = 0x30000;
+const UINT WINED3DTSS_TCI_SPHEREMAP                             = 0x40000;
+
+const UINT WINED3DTA_SELECTMASK                                 = 0x0000000f;
+const UINT WINED3DTA_DIFFUSE                                    = 0x00000000;
+const UINT WINED3DTA_CURRENT                                    = 0x00000001;
+const UINT WINED3DTA_TEXTURE                                    = 0x00000002;
+const UINT WINED3DTA_TFACTOR                                    = 0x00000003;
+const UINT WINED3DTA_SPECULAR                                   = 0x00000004;
+const UINT WINED3DTA_TEMP                                       = 0x00000005;
+const UINT WINED3DTA_CONSTANT                                   = 0x00000006;
+const UINT WINED3DTA_COMPLEMENT                                 = 0x00000010;
+const UINT WINED3DTA_ALPHAREPLICATE                             = 0x00000020;
+
+const UINT WINED3DPRESENTFLAG_LOCKABLE_BACKBUFFER               = 0x00000001;
+const UINT WINED3DPRESENTFLAG_DISCARD_DEPTHSTENCIL              = 0x00000002;
+const UINT WINED3DPRESENTFLAG_DEVICECLIP                        = 0x00000004;
+const UINT WINED3DPRESENTFLAG_VIDEO                             = 0x00000010;
+const UINT WINED3DPRESENTFLAG_NOAUTOROTATE                      = 0x00000020;
+const UINT WINED3DPRESENTFLAG_UNPRUNEDMODE                      = 0x00000040;
+
+const UINT WINED3DDP_MAXTEXCOORD                                = 8;
+
+const UINT WINED3DUSAGE_RENDERTARGET                            = 0x00000001;
+const UINT WINED3DUSAGE_DEPTHSTENCIL                            = 0x00000002;
+const UINT WINED3DUSAGE_WRITEONLY                               = 0x00000008;
+const UINT WINED3DUSAGE_SOFTWAREPROCESSING                      = 0x00000010;
+const UINT WINED3DUSAGE_DONOTCLIP                               = 0x00000020;
+const UINT WINED3DUSAGE_POINTS                                  = 0x00000040;
+const UINT WINED3DUSAGE_RTPATCHES                               = 0x00000080;
+const UINT WINED3DUSAGE_NPATCHES                                = 0x00000100;
+const UINT WINED3DUSAGE_DYNAMIC                                 = 0x00000200;
+const UINT WINED3DUSAGE_AUTOGENMIPMAP                           = 0x00000400;
+const UINT WINED3DUSAGE_DMAP                                    = 0x00004000;
+const UINT WINED3DUSAGE_MASK                                    = 0x00004fff;
+const UINT WINED3DUSAGE_OVERLAY                                 = 0x80000000;
+
+const UINT WINED3DUSAGE_QUERY_LEGACYBUMPMAP                     = 0x00008000;
+const UINT WINED3DUSAGE_QUERY_FILTER                            = 0x00020000;
+const UINT WINED3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING          = 0x00080000;
+const UINT WINED3DUSAGE_QUERY_SRGBREAD                          = 0x00010000;
+const UINT WINED3DUSAGE_QUERY_SRGBWRITE                         = 0x00040000;
+const UINT WINED3DUSAGE_QUERY_VERTEXTEXTURE                     = 0x00100000;
+const UINT WINED3DUSAGE_QUERY_WRAPANDMIP                        = 0x00200000;
+const UINT WINED3DUSAGE_QUERY_MASK                              = 0x003f8000;
+
+const UINT WINED3DLOCK_READONLY                                 = 0x0010;
+const UINT WINED3DLOCK_NOSYSLOCK                                = 0x0800;
+const UINT WINED3DLOCK_NOOVERWRITE                              = 0x1000;
+const UINT WINED3DLOCK_DISCARD                                  = 0x2000;
+const UINT WINED3DLOCK_DONOTWAIT                                = 0x4000;
+const UINT WINED3DLOCK_NO_DIRTY_UPDATE                          = 0x8000;
+
+const UINT WINED3DPRESENT_RATE_DEFAULT                          = 0x000000000;
+
+const UINT WINED3DPRESENT_INTERVAL_DEFAULT                      = 0x00000000;
+const UINT WINED3DPRESENT_INTERVAL_ONE                          = 0x00000001;
+const UINT WINED3DPRESENT_INTERVAL_TWO                          = 0x00000002;
+const UINT WINED3DPRESENT_INTERVAL_THREE                        = 0x00000004;
+const UINT WINED3DPRESENT_INTERVAL_FOUR                         = 0x00000008;
+const UINT WINED3DPRESENT_INTERVAL_IMMEDIATE                    = 0x80000000;
+
+const UINT WINED3DMAXUSERCLIPPLANES                             = 32;
+const UINT WINED3DCLIPPLANE0                                    = (1 << 0);
+const UINT WINED3DCLIPPLANE1                                    = (1 << 1);
+const UINT WINED3DCLIPPLANE2                                    = (1 << 2);
+const UINT WINED3DCLIPPLANE3                                    = (1 << 3);
+const UINT WINED3DCLIPPLANE4                                    = (1 << 4);
+const UINT WINED3DCLIPPLANE5                                    = (1 << 5);
+
+/* FVF (Flexible Vertex Format) codes */
+const UINT WINED3DFVF_RESERVED0                                 = 0x0001;
+const UINT WINED3DFVF_POSITION_MASK                             = 0x000e;
+const UINT WINED3DFVF_XYZ                                       = 0x0002;
+const UINT WINED3DFVF_XYZRHW                                    = 0x0004;
+const UINT WINED3DFVF_XYZB1                                     = 0x0006;
+const UINT WINED3DFVF_XYZB2                                     = 0x0008;
+const UINT WINED3DFVF_XYZB3                                     = 0x000a;
+const UINT WINED3DFVF_XYZB4                                     = 0x000c;
+const UINT WINED3DFVF_XYZB5                                     = 0x000e;
+const UINT WINED3DFVF_XYZW                                      = 0x4002;
+const UINT WINED3DFVF_NORMAL                                    = 0x0010;
+const UINT WINED3DFVF_PSIZE                                     = 0x0020;
+const UINT WINED3DFVF_DIFFUSE                                   = 0x0040;
+const UINT WINED3DFVF_SPECULAR                                  = 0x0080;
+const UINT WINED3DFVF_TEXCOUNT_MASK                             = 0x0f00;
+const UINT WINED3DFVF_TEXCOUNT_SHIFT                            = 8;
+const UINT WINED3DFVF_TEX0                                      = 0x0000;
+const UINT WINED3DFVF_TEX1                                      = 0x0100;
+const UINT WINED3DFVF_TEX2                                      = 0x0200;
+const UINT WINED3DFVF_TEX3                                      = 0x0300;
+const UINT WINED3DFVF_TEX4                                      = 0x0400;
+const UINT WINED3DFVF_TEX5                                      = 0x0500;
+const UINT WINED3DFVF_TEX6                                      = 0x0600;
+const UINT WINED3DFVF_TEX7                                      = 0x0700;
+const UINT WINED3DFVF_TEX8                                      = 0x0800;
+const UINT WINED3DFVF_LASTBETA_UBYTE4                           = 0x1000;
+const UINT WINED3DFVF_LASTBETA_D3DCOLOR                         = 0x8000;
+const UINT WINED3DFVF_RESERVED2                                 = 0x6000;
+
+const UINT WINED3DFVF_TEXTUREFORMAT1                            = 3;
+const UINT WINED3DFVF_TEXTUREFORMAT2                            = 0;
+const UINT WINED3DFVF_TEXTUREFORMAT3                            = 1;
+const UINT WINED3DFVF_TEXTUREFORMAT4                            = 2;
+cpp_quote("#define WINED3DFVF_TEXCOORDSIZE1(CoordIndex) (WINED3DFVF_TEXTUREFORMAT1 << (CoordIndex*2 + 16))")
+cpp_quote("#define WINED3DFVF_TEXCOORDSIZE2(CoordIndex) (WINED3DFVF_TEXTUREFORMAT2)")
+cpp_quote("#define WINED3DFVF_TEXCOORDSIZE3(CoordIndex) (WINED3DFVF_TEXTUREFORMAT3 << (CoordIndex*2 + 16))")
+cpp_quote("#define WINED3DFVF_TEXCOORDSIZE4(CoordIndex) (WINED3DFVF_TEXTUREFORMAT4 << (CoordIndex*2 + 16))")
+
+/* Clear flags */
+const UINT WINED3DCLEAR_TARGET                                  = 0x00000001;
+const UINT WINED3DCLEAR_ZBUFFER                                 = 0x00000002;
+const UINT WINED3DCLEAR_STENCIL                                 = 0x00000004;
+
+/* Stream source flags */
+const UINT WINED3DSTREAMSOURCE_INDEXEDDATA                      = (1 << 30);
+const UINT WINED3DSTREAMSOURCE_INSTANCEDATA                     = (2 << 30);
+
+/* SetPrivateData flags */
+const UINT WINED3DSPD_IUNKNOWN                                  = 0x00000001;
+
+/* IWineD3D::CreateDevice behaviour flags */
+const UINT WINED3DCREATE_FPU_PRESERVE                           = 0x00000002;
+const UINT WINED3DCREATE_PUREDEVICE                             = 0x00000010;
+const UINT WINED3DCREATE_SOFTWARE_VERTEXPROCESSING              = 0x00000020;
+const UINT WINED3DCREATE_HARDWARE_VERTEXPROCESSING              = 0x00000040;
+const UINT WINED3DCREATE_MIXED_VERTEXPROCESSING                 = 0x00000080;
+const UINT WINED3DCREATE_DISABLE_DRIVER_MANAGEMENT              = 0x00000100;
+const UINT WINED3DCREATE_ADAPTERGROUP_DEVICE                    = 0x00000200;
+
+/* VTF defines */
+const UINT WINED3DDMAPSAMPLER                                   = 0x100;
+const UINT WINED3DVERTEXTEXTURESAMPLER0                         = (WINED3DDMAPSAMPLER + 1);
+const UINT WINED3DVERTEXTEXTURESAMPLER1                         = (WINED3DDMAPSAMPLER + 2);
+const UINT WINED3DVERTEXTEXTURESAMPLER2                         = (WINED3DDMAPSAMPLER + 3);
+const UINT WINED3DVERTEXTEXTURESAMPLER3                         = (WINED3DDMAPSAMPLER + 4);
+
+const UINT WINED3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD        = 0x00000020;
+const UINT WINED3DCAPS3_LINEAR_TO_SRGB_PRESENTATION             = 0x00000080;
+const UINT WINED3DCAPS3_COPY_TO_VIDMEM                          = 0x00000100;
+const UINT WINED3DCAPS3_COPY_TO_SYSTEMMEM                       = 0x00000200;
+const UINT WINED3DCAPS3_RESERVED                                = 0x8000001f;
+
+const UINT WINED3DDEVCAPS2_STREAMOFFSET                         = 0x00000001;
+const UINT WINED3DDEVCAPS2_DMAPNPATCH                           = 0x00000002;
+const UINT WINED3DDEVCAPS2_ADAPTIVETESSRTPATCH                  = 0x00000004;
+const UINT WINED3DDEVCAPS2_ADAPTIVETESSNPATCH                   = 0x00000008;
+const UINT WINED3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES        = 0x00000010;
+const UINT WINED3DDEVCAPS2_PRESAMPLEDDMAPNPATCH                 = 0x00000020;
+const UINT WINED3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET   = 0x00000040;
+
+const UINT WINED3DDTCAPS_UBYTE4                                 = 0x00000001;
+const UINT WINED3DDTCAPS_UBYTE4N                                = 0x00000002;
+const UINT WINED3DDTCAPS_SHORT2N                                = 0x00000004;
+const UINT WINED3DDTCAPS_SHORT4N                                = 0x00000008;
+const UINT WINED3DDTCAPS_USHORT2N                               = 0x00000010;
+const UINT WINED3DDTCAPS_USHORT4N                               = 0x00000020;
+const UINT WINED3DDTCAPS_UDEC3                                  = 0x00000040;
+const UINT WINED3DDTCAPS_DEC3N                                  = 0x00000080;
+const UINT WINED3DDTCAPS_FLOAT16_2                              = 0x00000100;
+const UINT WINED3DDTCAPS_FLOAT16_4                              = 0x00000200;
+
+const UINT WINED3DFVFCAPS_TEXCOORDCOUNTMASK                     = 0x0000ffff;
+const UINT WINED3DFVFCAPS_DONOTSTRIPELEMENTS                    = 0x00080000;
+const UINT WINED3DFVFCAPS_PSIZE                                 = 0x00100000;
+
+const UINT WINED3DLINECAPS_TEXTURE                              = 0x00000001;
+const UINT WINED3DLINECAPS_ZTEST                                = 0x00000002;
+const UINT WINED3DLINECAPS_BLEND                                = 0x00000004;
+const UINT WINED3DLINECAPS_ALPHACMP                             = 0x00000008;
+const UINT WINED3DLINECAPS_FOG                                  = 0x00000010;
+const UINT WINED3DLINECAPS_ANTIALIAS                            = 0x00000020;
+
+const UINT WINED3DMAX30SHADERINSTRUCTIONS                       = 32768;
+const UINT WINED3DMIN30SHADERINSTRUCTIONS                       = 512;
+
+const UINT WINED3DPBLENDCAPS_ZERO                               = 0x00000001;
+const UINT WINED3DPBLENDCAPS_ONE                                = 0x00000002;
+const UINT WINED3DPBLENDCAPS_SRCCOLOR                           = 0x00000004;
+const UINT WINED3DPBLENDCAPS_INVSRCCOLOR                        = 0x00000008;
+const UINT WINED3DPBLENDCAPS_SRCALPHA                           = 0x00000010;
+const UINT WINED3DPBLENDCAPS_INVSRCALPHA                        = 0x00000020;
+const UINT WINED3DPBLENDCAPS_DESTALPHA                          = 0x00000040;
+const UINT WINED3DPBLENDCAPS_INVDESTALPHA                       = 0x00000080;
+const UINT WINED3DPBLENDCAPS_DESTCOLOR                          = 0x00000100;
+const UINT WINED3DPBLENDCAPS_INVDESTCOLOR                       = 0x00000200;
+const UINT WINED3DPBLENDCAPS_SRCALPHASAT                        = 0x00000400;
+const UINT WINED3DPBLENDCAPS_BOTHSRCALPHA                       = 0x00000800;
+const UINT WINED3DPBLENDCAPS_BOTHINVSRCALPHA                    = 0x00001000;
+const UINT WINED3DPBLENDCAPS_BLENDFACTOR                        = 0x00002000;
+
+const UINT WINED3DPCMPCAPS_NEVER                                = 0x00000001;
+const UINT WINED3DPCMPCAPS_LESS                                 = 0x00000002;
+const UINT WINED3DPCMPCAPS_EQUAL                                = 0x00000004;
+const UINT WINED3DPCMPCAPS_LESSEQUAL                            = 0x00000008;
+const UINT WINED3DPCMPCAPS_GREATER                              = 0x00000010;
+const UINT WINED3DPCMPCAPS_NOTEQUAL                             = 0x00000020;
+const UINT WINED3DPCMPCAPS_GREATEREQUAL                         = 0x00000040;
+const UINT WINED3DPCMPCAPS_ALWAYS                               = 0x00000080;
+
+const UINT WINED3DPMISCCAPS_MASKZ                               = 0x00000002;
+const UINT WINED3DPMISCCAPS_LINEPATTERNREP                      = 0x00000004;
+const UINT WINED3DPMISCCAPS_CULLNONE                            = 0x00000010;
+const UINT WINED3DPMISCCAPS_CULLCW                              = 0x00000020;
+const UINT WINED3DPMISCCAPS_CULLCCW                             = 0x00000040;
+const UINT WINED3DPMISCCAPS_COLORWRITEENABLE                    = 0x00000080;
+const UINT WINED3DPMISCCAPS_CLIPPLANESCALEDPOINTS               = 0x00000100;
+const UINT WINED3DPMISCCAPS_CLIPTLVERTS                         = 0x00000200;
+const UINT WINED3DPMISCCAPS_TSSARGTEMP                          = 0x00000400;
+const UINT WINED3DPMISCCAPS_BLENDOP                             = 0x00000800;
+const UINT WINED3DPMISCCAPS_NULLREFERENCE                       = 0x00001000;
+const UINT WINED3DPMISCCAPS_INDEPENDENTWRITEMASKS               = 0x00004000;
+const UINT WINED3DPMISCCAPS_PERSTAGECONSTANT                    = 0x00008000;
+const UINT WINED3DPMISCCAPS_FOGANDSPECULARALPHA                 = 0x00010000;
+const UINT WINED3DPMISCCAPS_SEPARATEALPHABLEND                  = 0x00020000;
+const UINT WINED3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS             = 0x00040000;
+const UINT WINED3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING          = 0x00080000;
+const UINT WINED3DPMISCCAPS_FOGVERTEXCLAMPED                    = 0x00100000;
+
+const UINT WINED3DPS20_MAX_DYNAMICFLOWCONTROLDEPTH              = 24;
+const UINT WINED3DPS20_MIN_DYNAMICFLOWCONTROLDEPTH              = 0;
+const UINT WINED3DPS20_MAX_NUMTEMPS                             = 32;
+const UINT WINED3DPS20_MIN_NUMTEMPS                             = 12;
+const UINT WINED3DPS20_MAX_STATICFLOWCONTROLDEPTH               = 4;
+const UINT WINED3DPS20_MIN_STATICFLOWCONTROLDEPTH               = 0;
+const UINT WINED3DPS20_MAX_NUMINSTRUCTIONSLOTS                  = 512;
+const UINT WINED3DPS20_MIN_NUMINSTRUCTIONSLOTS                  = 96;
+
+const UINT WINED3DPS20CAPS_ARBITRARYSWIZZLE                     = 0x00000001;
+const UINT WINED3DPS20CAPS_GRADIENTINSTRUCTIONS                 = 0x00000002;
+const UINT WINED3DPS20CAPS_PREDICATION                          = 0x00000004;
+const UINT WINED3DPS20CAPS_NODEPENDENTREADLIMIT                 = 0x00000008;
+const UINT WINED3DPS20CAPS_NOTEXINSTRUCTIONLIMIT                = 0x00000010;
+
+const UINT WINED3DPTADDRESSCAPS_WRAP                            = 0x00000001;
+const UINT WINED3DPTADDRESSCAPS_MIRROR                          = 0x00000002;
+const UINT WINED3DPTADDRESSCAPS_CLAMP                           = 0x00000004;
+const UINT WINED3DPTADDRESSCAPS_BORDER                          = 0x00000008;
+const UINT WINED3DPTADDRESSCAPS_INDEPENDENTUV                   = 0x00000010;
+const UINT WINED3DPTADDRESSCAPS_MIRRORONCE                      = 0x00000020;
+
+const UINT WINED3DSTENCILCAPS_KEEP                              = 0x00000001;
+const UINT WINED3DSTENCILCAPS_ZERO                              = 0x00000002;
+const UINT WINED3DSTENCILCAPS_REPLACE                           = 0x00000004;
+const UINT WINED3DSTENCILCAPS_INCRSAT                           = 0x00000008;
+const UINT WINED3DSTENCILCAPS_DECRSAT                           = 0x00000010;
+const UINT WINED3DSTENCILCAPS_INVERT                            = 0x00000020;
+const UINT WINED3DSTENCILCAPS_INCR                              = 0x00000040;
+const UINT WINED3DSTENCILCAPS_DECR                              = 0x00000080;
+const UINT WINED3DSTENCILCAPS_TWOSIDED                          = 0x00000100;
+
+const UINT WINED3DTEXOPCAPS_DISABLE                             = 0x00000001;
+const UINT WINED3DTEXOPCAPS_SELECTARG1                          = 0x00000002;
+const UINT WINED3DTEXOPCAPS_SELECTARG2                          = 0x00000004;
+const UINT WINED3DTEXOPCAPS_MODULATE                            = 0x00000008;
+const UINT WINED3DTEXOPCAPS_MODULATE2X                          = 0x00000010;
+const UINT WINED3DTEXOPCAPS_MODULATE4X                          = 0x00000020;
+const UINT WINED3DTEXOPCAPS_ADD                                 = 0x00000040;
+const UINT WINED3DTEXOPCAPS_ADDSIGNED                           = 0x00000080;
+const UINT WINED3DTEXOPCAPS_ADDSIGNED2X                         = 0x00000100;
+const UINT WINED3DTEXOPCAPS_SUBTRACT                            = 0x00000200;
+const UINT WINED3DTEXOPCAPS_ADDSMOOTH                           = 0x00000400;
+const UINT WINED3DTEXOPCAPS_BLENDDIFFUSEALPHA                   = 0x00000800;
+const UINT WINED3DTEXOPCAPS_BLENDTEXTUREALPHA                   = 0x00001000;
+const UINT WINED3DTEXOPCAPS_BLENDFACTORALPHA                    = 0x00002000;
+const UINT WINED3DTEXOPCAPS_BLENDTEXTUREALPHAPM                 = 0x00004000;
+const UINT WINED3DTEXOPCAPS_BLENDCURRENTALPHA                   = 0x00008000;
+const UINT WINED3DTEXOPCAPS_PREMODULATE                         = 0x00010000;
+const UINT WINED3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR              = 0x00020000;
+const UINT WINED3DTEXOPCAPS_MODULATECOLOR_ADDALPHA              = 0x00040000;
+const UINT WINED3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR           = 0x00080000;
+const UINT WINED3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA           = 0x00100000;
+const UINT WINED3DTEXOPCAPS_BUMPENVMAP                          = 0x00200000;
+const UINT WINED3DTEXOPCAPS_BUMPENVMAPLUMINANCE                 = 0x00400000;
+const UINT WINED3DTEXOPCAPS_DOTPRODUCT3                         = 0x00800000;
+const UINT WINED3DTEXOPCAPS_MULTIPLYADD                         = 0x01000000;
+const UINT WINED3DTEXOPCAPS_LERP                                = 0x02000000;
+
+const UINT WINED3DVS20_MAX_DYNAMICFLOWCONTROLDEPTH              = 24;
+const UINT WINED3DVS20_MIN_DYNAMICFLOWCONTROLDEPTH              = 0;
+const UINT WINED3DVS20_MAX_NUMTEMPS                             = 32;
+const UINT WINED3DVS20_MIN_NUMTEMPS                             = 12;
+const UINT WINED3DVS20_MAX_STATICFLOWCONTROLDEPTH               = 4;
+const UINT WINED3DVS20_MIN_STATICFLOWCONTROLDEPTH               = 1;
+
+const UINT WINED3DVS20CAPS_PREDICATION                          = 0x00000001;
+
+const UINT WINED3DCAPS2_NO2DDURING3DSCENE                       = 0x00000002;
+const UINT WINED3DCAPS2_FULLSCREENGAMMA                         = 0x00020000;
+const UINT WINED3DCAPS2_CANRENDERWINDOWED                       = 0x00080000;
+const UINT WINED3DCAPS2_CANCALIBRATEGAMMA                       = 0x00100000;
+const UINT WINED3DCAPS2_RESERVED                                = 0x02000000;
+const UINT WINED3DCAPS2_CANMANAGERESOURCE                       = 0x10000000;
+const UINT WINED3DCAPS2_DYNAMICTEXTURES                         = 0x20000000;
+const UINT WINED3DCAPS2_CANAUTOGENMIPMAP                        = 0x40000000;
+
+const UINT WINED3DPRASTERCAPS_DITHER                            = 0x00000001;
+const UINT WINED3DPRASTERCAPS_ROP2                              = 0x00000002;
+const UINT WINED3DPRASTERCAPS_XOR                               = 0x00000004;
+const UINT WINED3DPRASTERCAPS_PAT                               = 0x00000008;
+const UINT WINED3DPRASTERCAPS_ZTEST                             = 0x00000010;
+const UINT WINED3DPRASTERCAPS_SUBPIXEL                          = 0x00000020;
+const UINT WINED3DPRASTERCAPS_SUBPIXELX                         = 0x00000040;
+const UINT WINED3DPRASTERCAPS_FOGVERTEX                         = 0x00000080;
+const UINT WINED3DPRASTERCAPS_FOGTABLE                          = 0x00000100;
+const UINT WINED3DPRASTERCAPS_STIPPLE                           = 0x00000200;
+const UINT WINED3DPRASTERCAPS_ANTIALIASSORTDEPENDENT            = 0x00000400;
+const UINT WINED3DPRASTERCAPS_ANTIALIASSORTINDEPENDENT          = 0x00000800;
+const UINT WINED3DPRASTERCAPS_ANTIALIASEDGES                    = 0x00001000;
+const UINT WINED3DPRASTERCAPS_MIPMAPLODBIAS                     = 0x00002000;
+const UINT WINED3DPRASTERCAPS_ZBIAS                             = 0x00004000;
+const UINT WINED3DPRASTERCAPS_ZBUFFERLESSHSR                    = 0x00008000;
+const UINT WINED3DPRASTERCAPS_FOGRANGE                          = 0x00010000;
+const UINT WINED3DPRASTERCAPS_ANISOTROPY                        = 0x00020000;
+const UINT WINED3DPRASTERCAPS_WBUFFER                           = 0x00040000;
+const UINT WINED3DPRASTERCAPS_TRANSLUCENTSORTINDEPENDENT        = 0x00080000;
+const UINT WINED3DPRASTERCAPS_WFOG                              = 0x00100000;
+const UINT WINED3DPRASTERCAPS_ZFOG                              = 0x00200000;
+const UINT WINED3DPRASTERCAPS_COLORPERSPECTIVE                  = 0x00400000;
+const UINT WINED3DPRASTERCAPS_SCISSORTEST                       = 0x01000000;
+const UINT WINED3DPRASTERCAPS_SLOPESCALEDEPTHBIAS               = 0x02000000;
+const UINT WINED3DPRASTERCAPS_DEPTHBIAS                         = 0x04000000;
+const UINT WINED3DPRASTERCAPS_MULTISAMPLE_TOGGLE                = 0x08000000;
+
+const UINT WINED3DPSHADECAPS_COLORFLATMONO                      = 0x00000001;
+const UINT WINED3DPSHADECAPS_COLORFLATRGB                       = 0x00000002;
+const UINT WINED3DPSHADECAPS_COLORGOURAUDMONO                   = 0x00000004;
+const UINT WINED3DPSHADECAPS_COLORGOURAUDRGB                    = 0x00000008;
+const UINT WINED3DPSHADECAPS_COLORPHONGMONO                     = 0x00000010;
+const UINT WINED3DPSHADECAPS_COLORPHONGRGB                      = 0x00000020;
+const UINT WINED3DPSHADECAPS_SPECULARFLATMONO                   = 0x00000040;
+const UINT WINED3DPSHADECAPS_SPECULARFLATRGB                    = 0x00000080;
+const UINT WINED3DPSHADECAPS_SPECULARGOURAUDMONO                = 0x00000100;
+const UINT WINED3DPSHADECAPS_SPECULARGOURAUDRGB                 = 0x00000200;
+const UINT WINED3DPSHADECAPS_SPECULARPHONGMONO                  = 0x00000400;
+const UINT WINED3DPSHADECAPS_SPECULARPHONGRGB                   = 0x00000800;
+const UINT WINED3DPSHADECAPS_ALPHAFLATBLEND                     = 0x00001000;
+const UINT WINED3DPSHADECAPS_ALPHAFLATSTIPPLED                  = 0x00002000;
+const UINT WINED3DPSHADECAPS_ALPHAGOURAUDBLEND                  = 0x00004000;
+const UINT WINED3DPSHADECAPS_ALPHAGOURAUDSTIPPLED               = 0x00008000;
+const UINT WINED3DPSHADECAPS_ALPHAPHONGBLEND                    = 0x00010000;
+const UINT WINED3DPSHADECAPS_ALPHAPHONGSTIPPLED                 = 0x00020000;
+const UINT WINED3DPSHADECAPS_FOGFLAT                            = 0x00040000;
+const UINT WINED3DPSHADECAPS_FOGGOURAUD                         = 0x00080000;
+const UINT WINED3DPSHADECAPS_FOGPHONG                           = 0x00100000;
+
+const UINT WINED3DPTEXTURECAPS_PERSPECTIVE                      = 0x00000001;
+const UINT WINED3DPTEXTURECAPS_POW2                             = 0x00000002;
+const UINT WINED3DPTEXTURECAPS_ALPHA                            = 0x00000004;
+const UINT WINED3DPTEXTURECAPS_TRANSPARENCY                     = 0x00000008;
+const UINT WINED3DPTEXTURECAPS_BORDER                           = 0x00000010;
+const UINT WINED3DPTEXTURECAPS_SQUAREONLY                       = 0x00000020;
+const UINT WINED3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE         = 0x00000040;
+const UINT WINED3DPTEXTURECAPS_ALPHAPALETTE                     = 0x00000080;
+const UINT WINED3DPTEXTURECAPS_NONPOW2CONDITIONAL               = 0x00000100;
+const UINT WINED3DPTEXTURECAPS_PROJECTED                        = 0x00000400;
+const UINT WINED3DPTEXTURECAPS_CUBEMAP                          = 0x00000800;
+const UINT WINED3DPTEXTURECAPS_COLORKEYBLEND                    = 0x00001000;
+const UINT WINED3DPTEXTURECAPS_VOLUMEMAP                        = 0x00002000;
+const UINT WINED3DPTEXTURECAPS_MIPMAP                           = 0x00004000;
+const UINT WINED3DPTEXTURECAPS_MIPVOLUMEMAP                     = 0x00008000;
+const UINT WINED3DPTEXTURECAPS_MIPCUBEMAP                       = 0x00010000;
+const UINT WINED3DPTEXTURECAPS_CUBEMAP_POW2                     = 0x00020000;
+const UINT WINED3DPTEXTURECAPS_VOLUMEMAP_POW2                   = 0x00040000;
+const UINT WINED3DPTEXTURECAPS_NOPROJECTEDBUMPENV               = 0x00200000;
+
+const UINT WINED3DPTFILTERCAPS_NEAREST                          = 0x00000001;
+const UINT WINED3DPTFILTERCAPS_LINEAR                           = 0x00000002;
+const UINT WINED3DPTFILTERCAPS_MIPNEAREST                       = 0x00000004;
+const UINT WINED3DPTFILTERCAPS_MIPLINEAR                        = 0x00000008;
+const UINT WINED3DPTFILTERCAPS_LINEARMIPNEAREST                 = 0x00000010;
+const UINT WINED3DPTFILTERCAPS_LINEARMIPLINEAR                  = 0x00000020;
+const UINT WINED3DPTFILTERCAPS_MINFPOINT                        = 0x00000100;
+const UINT WINED3DPTFILTERCAPS_MINFLINEAR                       = 0x00000200;
+const UINT WINED3DPTFILTERCAPS_MINFANISOTROPIC                  = 0x00000400;
+const UINT WINED3DPTFILTERCAPS_MIPFPOINT                        = 0x00010000;
+const UINT WINED3DPTFILTERCAPS_MIPFLINEAR                       = 0x00020000;
+const UINT WINED3DPTFILTERCAPS_MAGFPOINT                        = 0x01000000;
+const UINT WINED3DPTFILTERCAPS_MAGFLINEAR                       = 0x02000000;
+const UINT WINED3DPTFILTERCAPS_MAGFANISOTROPIC                  = 0x04000000;
+const UINT WINED3DPTFILTERCAPS_MAGFPYRAMIDALQUAD                = 0x08000000;
+const UINT WINED3DPTFILTERCAPS_MAGFGAUSSIANQUAD                 = 0x10000000;
+
+const UINT WINED3DVTXPCAPS_TEXGEN                               = 0x00000001;
+const UINT WINED3DVTXPCAPS_MATERIALSOURCE7                      = 0x00000002;
+const UINT WINED3DVTXPCAPS_VERTEXFOG                            = 0x00000004;
+const UINT WINED3DVTXPCAPS_DIRECTIONALLIGHTS                    = 0x00000008;
+const UINT WINED3DVTXPCAPS_POSITIONALLIGHTS                     = 0x00000010;
+const UINT WINED3DVTXPCAPS_LOCALVIEWER                          = 0x00000020;
+const UINT WINED3DVTXPCAPS_TWEENING                             = 0x00000040;
+const UINT WINED3DVTXPCAPS_TEXGEN_SPHEREMAP                     = 0x00000100;
+const UINT WINED3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER             = 0x00000200;
+
+const UINT WINED3DCURSORCAPS_COLOR                              = 0x00000001;
+const UINT WINED3DCURSORCAPS_LOWRES                             = 0x00000002;
+
+const UINT WINED3DDEVCAPS_FLOATTLVERTEX                         = 0x00000001;
+const UINT WINED3DDEVCAPS_SORTINCREASINGZ                       = 0x00000002;
+const UINT WINED3DDEVCAPS_SORTDECREASINGZ                       = 0X00000004;
+const UINT WINED3DDEVCAPS_SORTEXACT                             = 0x00000008;
+const UINT WINED3DDEVCAPS_EXECUTESYSTEMMEMORY                   = 0x00000010;
+const UINT WINED3DDEVCAPS_EXECUTEVIDEOMEMORY                    = 0x00000020;
+const UINT WINED3DDEVCAPS_TLVERTEXSYSTEMMEMORY                  = 0x00000040;
+const UINT WINED3DDEVCAPS_TLVERTEXVIDEOMEMORY                   = 0x00000080;
+const UINT WINED3DDEVCAPS_TEXTURESYSTEMMEMORY                   = 0x00000100;
+const UINT WINED3DDEVCAPS_TEXTUREVIDEOMEMORY                    = 0x00000200;
+const UINT WINED3DDEVCAPS_DRAWPRIMTLVERTEX                      = 0x00000400;
+const UINT WINED3DDEVCAPS_CANRENDERAFTERFLIP                    = 0x00000800;
+const UINT WINED3DDEVCAPS_TEXTURENONLOCALVIDMEM                 = 0x00001000;
+const UINT WINED3DDEVCAPS_DRAWPRIMITIVES2                       = 0x00002000;
+const UINT WINED3DDEVCAPS_SEPARATETEXTUREMEMORIES               = 0x00004000;
+const UINT WINED3DDEVCAPS_DRAWPRIMITIVES2EX                     = 0x00008000;
+const UINT WINED3DDEVCAPS_HWTRANSFORMANDLIGHT                   = 0x00010000;
+const UINT WINED3DDEVCAPS_CANBLTSYSTONONLOCAL                   = 0x00020000;
+const UINT WINED3DDEVCAPS_HWRASTERIZATION                       = 0x00080000;
+const UINT WINED3DDEVCAPS_PUREDEVICE                            = 0x00100000;
+const UINT WINED3DDEVCAPS_QUINTICRTPATCHES                      = 0x00200000;
+const UINT WINED3DDEVCAPS_RTPATCHES                             = 0x00400000;
+const UINT WINED3DDEVCAPS_RTPATCHHANDLEZERO                     = 0x00800000;
+const UINT WINED3DDEVCAPS_NPATCHES                              = 0x01000000;
+
+/* dwDDFX */
+/* arithmetic stretching along y axis */
+const UINT WINEDDBLTFX_ARITHSTRETCHY                            = 0x00000001;
+/* mirror on y axis */
+const UINT WINEDDBLTFX_MIRRORLEFTRIGHT                          = 0x00000002;
+/* mirror on x axis */
+const UINT WINEDDBLTFX_MIRRORUPDOWN                             = 0x00000004;
+/* do not tear */
+const UINT WINEDDBLTFX_NOTEARING                                = 0x00000008;
+/* 180 degrees clockwise rotation */
+const UINT WINEDDBLTFX_ROTATE180                                = 0x00000010;
+/* 270 degrees clockwise rotation */
+const UINT WINEDDBLTFX_ROTATE270                                = 0x00000020;
+/* 90 degrees clockwise rotation */
+const UINT WINEDDBLTFX_ROTATE90                                 = 0x00000040;
+/* dwZBufferLow and dwZBufferHigh specify limits to the copied Z values */
+const UINT WINEDDBLTFX_ZBUFFERRANGE                             = 0x00000080;
+/* add dwZBufferBaseDest to every source z value before compare */
+const UINT WINEDDBLTFX_ZBUFFERBASEDEST                          = 0x00000100;
+
+/* dwFlags for Blt* */
+const UINT WINEDDBLT_ALPHADEST                                  = 0x00000001;
+const UINT WINEDDBLT_ALPHADESTCONSTOVERRIDE                     = 0x00000002;
+const UINT WINEDDBLT_ALPHADESTNEG                               = 0x00000004;
+const UINT WINEDDBLT_ALPHADESTSURFACEOVERRIDE                   = 0x00000008;
+const UINT WINEDDBLT_ALPHAEDGEBLEND                             = 0x00000010;
+const UINT WINEDDBLT_ALPHASRC                                   = 0x00000020;
+const UINT WINEDDBLT_ALPHASRCCONSTOVERRIDE                      = 0x00000040;
+const UINT WINEDDBLT_ALPHASRCNEG                                = 0x00000080;
+const UINT WINEDDBLT_ALPHASRCSURFACEOVERRIDE                    = 0x00000100;
+const UINT WINEDDBLT_ASYNC                                      = 0x00000200;
+const UINT WINEDDBLT_COLORFILL                                  = 0x00000400;
+const UINT WINEDDBLT_DDFX                                       = 0x00000800;
+const UINT WINEDDBLT_DDROPS                                     = 0x00001000;
+const UINT WINEDDBLT_KEYDEST                                    = 0x00002000;
+const UINT WINEDDBLT_KEYDESTOVERRIDE                            = 0x00004000;
+const UINT WINEDDBLT_KEYSRC                                     = 0x00008000;
+const UINT WINEDDBLT_KEYSRCOVERRIDE                             = 0x00010000;
+const UINT WINEDDBLT_ROP                                        = 0x00020000;
+const UINT WINEDDBLT_ROTATIONANGLE                              = 0x00040000;
+const UINT WINEDDBLT_ZBUFFER                                    = 0x00080000;
+const UINT WINEDDBLT_ZBUFFERDESTCONSTOVERRIDE                   = 0x00100000;
+const UINT WINEDDBLT_ZBUFFERDESTOVERRIDE                        = 0x00200000;
+const UINT WINEDDBLT_ZBUFFERSRCCONSTOVERRIDE                    = 0x00400000;
+const UINT WINEDDBLT_ZBUFFERSRCOVERRIDE                         = 0x00800000;
+const UINT WINEDDBLT_WAIT                                       = 0x01000000;
+const UINT WINEDDBLT_DEPTHFILL                                  = 0x02000000;
+const UINT WINEDDBLT_DONOTWAIT                                  = 0x08000000;
+
+/* dwTrans for BltFast */
+const UINT WINEDDBLTFAST_NOCOLORKEY                             = 0x00000000;
+const UINT WINEDDBLTFAST_SRCCOLORKEY                            = 0x00000001;
+const UINT WINEDDBLTFAST_DESTCOLORKEY                           = 0x00000002;
+const UINT WINEDDBLTFAST_WAIT                                   = 0x00000010;
+const UINT WINEDDBLTFAST_DONOTWAIT                              = 0x00000020;
+
+/* DDSURFACEDESC.dwFlags */
+const UINT WINEDDSD_CAPS                                        = 0x00000001;
+const UINT WINEDDSD_HEIGHT                                      = 0x00000002;
+const UINT WINEDDSD_WIDTH                                       = 0x00000004;
+const UINT WINEDDSD_PITCH                                       = 0x00000008;
+const UINT WINEDDSD_BACKBUFFERCOUNT                             = 0x00000020;
+const UINT WINEDDSD_ZBUFFERBITDEPTH                             = 0x00000040;
+const UINT WINEDDSD_ALPHABITDEPTH                               = 0x00000080;
+const UINT WINEDDSD_LPSURFACE                                   = 0x00000800;
+const UINT WINEDDSD_PIXELFORMAT                                 = 0x00001000;
+const UINT WINEDDSD_CKDESTOVERLAY                               = 0x00002000;
+const UINT WINEDDSD_CKDESTBLT                                   = 0x00004000;
+const UINT WINEDDSD_CKSRCOVERLAY                                = 0x00008000;
+const UINT WINEDDSD_CKSRCBLT                                    = 0x00010000;
+const UINT WINEDDSD_MIPMAPCOUNT                                 = 0x00020000;
+const UINT WINEDDSD_REFRESHRATE                                 = 0x00040000;
+const UINT WINEDDSD_LINEARSIZE                                  = 0x00080000;
+const UINT WINEDDSD_TEXTURESTAGE                                = 0x00100000;
+const UINT WINEDDSD_FVF                                         = 0x00200000;
+const UINT WINEDDSD_SRCVBHANDLE                                 = 0x00400000;
+const UINT WINEDDSD_ALL                                         = 0x007ff9ee;
+
+/* Set/Get Colour Key Flags */
+const UINT WINEDDCKEY_COLORSPACE                                = 0x00000001; /* Struct is single colour space */
+const UINT WINEDDCKEY_DESTBLT                                   = 0x00000002; /* To be used as dest for blt */
+const UINT WINEDDCKEY_DESTOVERLAY                               = 0x00000004; /* To be used as dest for CK overlays */
+const UINT WINEDDCKEY_SRCBLT                                    = 0x00000008; /* To be used as src for blt */
+const UINT WINEDDCKEY_SRCOVERLAY                                = 0x00000010; /* To be used as src for CK overlays */
+
+/* dwFlags for GetBltStatus */
+const UINT WINEDDGBS_CANBLT                                     = 0x00000001;
+const UINT WINEDDGBS_ISBLTDONE                                  = 0x00000002;
+
+/* dwFlags for GetFlipStatus */
+const UINT WINEDDGFS_CANFLIP                                    = 0x00000001;
+const UINT WINEDDGFS_ISFLIPDONE                                 = 0x00000002;
+
+/* dwFlags for Flip */
+const UINT WINEDDFLIP_WAIT                                      = 0x00000001;
+const UINT WINEDDFLIP_EVEN                                      = 0x00000002; /* only valid for overlay */
+const UINT WINEDDFLIP_ODD                                       = 0x00000004; /* only valid for overlay */
+const UINT WINEDDFLIP_NOVSYNC                                   = 0x00000008;
+const UINT WINEDDFLIP_STEREO                                    = 0x00000010;
+const UINT WINEDDFLIP_DONOTWAIT                                 = 0x00000020;
+const UINT WINEDDFLIP_INTERVAL2                                 = 0x02000000;
+const UINT WINEDDFLIP_INTERVAL3                                 = 0x03000000;
+const UINT WINEDDFLIP_INTERVAL4                                 = 0x04000000;
+
+const UINT WINEDDOVER_ALPHADEST                                 = 0x00000001;
+const UINT WINEDDOVER_ALPHADESTCONSTOVERRIDE                    = 0x00000002;
+const UINT WINEDDOVER_ALPHADESTNEG                              = 0x00000004;
+const UINT WINEDDOVER_ALPHADESTSURFACEOVERRIDE                  = 0x00000008;
+const UINT WINEDDOVER_ALPHAEDGEBLEND                            = 0x00000010;
+const UINT WINEDDOVER_ALPHASRC                                  = 0x00000020;
+const UINT WINEDDOVER_ALPHASRCCONSTOVERRIDE                     = 0x00000040;
+const UINT WINEDDOVER_ALPHASRCNEG                               = 0x00000080;
+const UINT WINEDDOVER_ALPHASRCSURFACEOVERRIDE                   = 0x00000100;
+const UINT WINEDDOVER_HIDE                                      = 0x00000200;
+const UINT WINEDDOVER_KEYDEST                                   = 0x00000400;
+const UINT WINEDDOVER_KEYDESTOVERRIDE                           = 0x00000800;
+const UINT WINEDDOVER_KEYSRC                                    = 0x00001000;
+const UINT WINEDDOVER_KEYSRCOVERRIDE                            = 0x00002000;
+const UINT WINEDDOVER_SHOW                                      = 0x00004000;
+const UINT WINEDDOVER_ADDDIRTYRECT                              = 0x00008000;
+const UINT WINEDDOVER_REFRESHDIRTYRECTS                         = 0x00010000;
+const UINT WINEDDOVER_REFRESHALL                                = 0x00020000;
+const UINT WINEDDOVER_DDFX                                      = 0x00080000;
+const UINT WINEDDOVER_AUTOFLIP                                  = 0x00100000;
+const UINT WINEDDOVER_BOB                                       = 0x00200000;
+const UINT WINEDDOVER_OVERRIDEBOBWEAVE                          = 0x00400000;
+const UINT WINEDDOVER_INTERLEAVED                               = 0x00800000;
+
+/* DirectDraw Caps */
+const UINT WINEDDSCAPS_RESERVED1                                = 0x00000001;
+const UINT WINEDDSCAPS_ALPHA                                    = 0x00000002;
+const UINT WINEDDSCAPS_BACKBUFFER                               = 0x00000004;
+const UINT WINEDDSCAPS_COMPLEX                                  = 0x00000008;
+const UINT WINEDDSCAPS_FLIP                                     = 0x00000010;
+const UINT WINEDDSCAPS_FRONTBUFFER                              = 0x00000020;
+const UINT WINEDDSCAPS_OFFSCREENPLAIN                           = 0x00000040;
+const UINT WINEDDSCAPS_OVERLAY                                  = 0x00000080;
+const UINT WINEDDSCAPS_PALETTE                                  = 0x00000100;
+const UINT WINEDDSCAPS_PRIMARYSURFACE                           = 0x00000200;
+const UINT WINEDDSCAPS_PRIMARYSURFACELEFT                       = 0x00000400;
+const UINT WINEDDSCAPS_SYSTEMMEMORY                             = 0x00000800;
+const UINT WINEDDSCAPS_TEXTURE                                  = 0x00001000;
+const UINT WINEDDSCAPS_3DDEVICE                                 = 0x00002000;
+const UINT WINEDDSCAPS_VIDEOMEMORY                              = 0x00004000;
+const UINT WINEDDSCAPS_VISIBLE                                  = 0x00008000;
+const UINT WINEDDSCAPS_WRITEONLY                                = 0x00010000;
+const UINT WINEDDSCAPS_ZBUFFER                                  = 0x00020000;
+const UINT WINEDDSCAPS_OWNDC                                    = 0x00040000;
+const UINT WINEDDSCAPS_LIVEVIDEO                                = 0x00080000;
+const UINT WINEDDSCAPS_HWCODEC                                  = 0x00100000;
+const UINT WINEDDSCAPS_MODEX                                    = 0x00200000;
+const UINT WINEDDSCAPS_MIPMAP                                   = 0x00400000;
+const UINT WINEDDSCAPS_RESERVED2                                = 0x00800000;
+const UINT WINEDDSCAPS_ALLOCONLOAD                              = 0x04000000;
+const UINT WINEDDSCAPS_VIDEOPORT                                = 0x08000000;
+const UINT WINEDDSCAPS_LOCALVIDMEM                              = 0x10000000;
+const UINT WINEDDSCAPS_NONLOCALVIDMEM                           = 0x20000000;
+const UINT WINEDDSCAPS_STANDARDVGAMODE                          = 0x40000000;
+const UINT WINEDDSCAPS_OPTIMIZED                                = 0x80000000;
+
+const UINT WINEDDCKEYCAPS_DESTBLT                               = 0x00000001;
+const UINT WINEDDCKEYCAPS_DESTBLTCLRSPACE                       = 0x00000002;
+const UINT WINEDDCKEYCAPS_DESTBLTCLRSPACEYUV                    = 0x00000004;
+const UINT WINEDDCKEYCAPS_DESTBLTYUV                            = 0x00000008;
+const UINT WINEDDCKEYCAPS_DESTOVERLAY                           = 0x00000010;
+const UINT WINEDDCKEYCAPS_DESTOVERLAYCLRSPACE                   = 0x00000020;
+const UINT WINEDDCKEYCAPS_DESTOVERLAYCLRSPACEYUV                = 0x00000040;
+const UINT WINEDDCKEYCAPS_DESTOVERLAYONEACTIVE                  = 0x00000080;
+const UINT WINEDDCKEYCAPS_DESTOVERLAYYUV                        = 0x00000100;
+const UINT WINEDDCKEYCAPS_SRCBLT                                = 0x00000200;
+const UINT WINEDDCKEYCAPS_SRCBLTCLRSPACE                        = 0x00000400;
+const UINT WINEDDCKEYCAPS_SRCBLTCLRSPACEYUV                     = 0x00000800;
+const UINT WINEDDCKEYCAPS_SRCBLTYUV                             = 0x00001000;
+const UINT WINEDDCKEYCAPS_SRCOVERLAY                            = 0x00002000;
+const UINT WINEDDCKEYCAPS_SRCOVERLAYCLRSPACE                    = 0x00004000;
+const UINT WINEDDCKEYCAPS_SRCOVERLAYCLRSPACEYUV                 = 0x00008000;
+const UINT WINEDDCKEYCAPS_SRCOVERLAYONEACTIVE                   = 0x00010000;
+const UINT WINEDDCKEYCAPS_SRCOVERLAYYUV                         = 0x00020000;
+const UINT WINEDDCKEYCAPS_NOCOSTOVERLAY                         = 0x00040000;
+
+const UINT WINEDDFXCAPS_BLTALPHA                                = 0x00000001;
+const UINT WINEDDFXCAPS_OVERLAYALPHA                            = 0x00000004;
+const UINT WINEDDFXCAPS_BLTARITHSTRETCHYN                       = 0x00000010;
+const UINT WINEDDFXCAPS_BLTARITHSTRETCHY                        = 0x00000020;
+const UINT WINEDDFXCAPS_BLTMIRRORLEFTRIGHT                      = 0x00000040;
+const UINT WINEDDFXCAPS_BLTMIRRORUPDOWN                         = 0x00000080;
+const UINT WINEDDFXCAPS_BLTROTATION                             = 0x00000100;
+const UINT WINEDDFXCAPS_BLTROTATION90                           = 0x00000200;
+const UINT WINEDDFXCAPS_BLTSHRINKX                              = 0x00000400;
+const UINT WINEDDFXCAPS_BLTSHRINKXN                             = 0x00000800;
+const UINT WINEDDFXCAPS_BLTSHRINKY                              = 0x00001000;
+const UINT WINEDDFXCAPS_BLTSHRINKYN                             = 0x00002000;
+const UINT WINEDDFXCAPS_BLTSTRETCHX                             = 0x00004000;
+const UINT WINEDDFXCAPS_BLTSTRETCHXN                            = 0x00008000;
+const UINT WINEDDFXCAPS_BLTSTRETCHY                             = 0x00010000;
+const UINT WINEDDFXCAPS_BLTSTRETCHYN                            = 0x00020000;
+const UINT WINEDDFXCAPS_OVERLAYARITHSTRETCHY                    = 0x00040000;
+const UINT WINEDDFXCAPS_OVERLAYARITHSTRETCHYN                   = 0x00000008;
+const UINT WINEDDFXCAPS_OVERLAYSHRINKX                          = 0x00080000;
+const UINT WINEDDFXCAPS_OVERLAYSHRINKXN                         = 0x00100000;
+const UINT WINEDDFXCAPS_OVERLAYSHRINKY                          = 0x00200000;
+const UINT WINEDDFXCAPS_OVERLAYSHRINKYN                         = 0x00400000;
+const UINT WINEDDFXCAPS_OVERLAYSTRETCHX                         = 0x00800000;
+const UINT WINEDDFXCAPS_OVERLAYSTRETCHXN                        = 0x01000000;
+const UINT WINEDDFXCAPS_OVERLAYSTRETCHY                         = 0x02000000;
+const UINT WINEDDFXCAPS_OVERLAYSTRETCHYN                        = 0x04000000;
+const UINT WINEDDFXCAPS_OVERLAYMIRRORLEFTRIGHT                  = 0x08000000;
+const UINT WINEDDFXCAPS_OVERLAYMIRRORUPDOWN                     = 0x10000000;
+
+const UINT WINEDDCAPS_3D                                        = 0x00000001;
+const UINT WINEDDCAPS_ALIGNBOUNDARYDEST                         = 0x00000002;
+const UINT WINEDDCAPS_ALIGNSIZEDEST                             = 0x00000004;
+const UINT WINEDDCAPS_ALIGNBOUNDARYSRC                          = 0x00000008;
+const UINT WINEDDCAPS_ALIGNSIZESRC                              = 0x00000010;
+const UINT WINEDDCAPS_ALIGNSTRIDE                               = 0x00000020;
+const UINT WINEDDCAPS_BLT                                       = 0x00000040;
+const UINT WINEDDCAPS_BLTQUEUE                                  = 0x00000080;
+const UINT WINEDDCAPS_BLTFOURCC                                 = 0x00000100;
+const UINT WINEDDCAPS_BLTSTRETCH                                = 0x00000200;
+const UINT WINEDDCAPS_GDI                                       = 0x00000400;
+const UINT WINEDDCAPS_OVERLAY                                   = 0x00000800;
+const UINT WINEDDCAPS_OVERLAYCANTCLIP                           = 0x00001000;
+const UINT WINEDDCAPS_OVERLAYFOURCC                             = 0x00002000;
+const UINT WINEDDCAPS_OVERLAYSTRETCH                            = 0x00004000;
+const UINT WINEDDCAPS_PALETTE                                   = 0x00008000;
+const UINT WINEDDCAPS_PALETTEVSYNC                              = 0x00010000;
+const UINT WINEDDCAPS_READSCANLINE                              = 0x00020000;
+const UINT WINEDDCAPS_STEREOVIEW                                = 0x00040000;
+const UINT WINEDDCAPS_VBI                                       = 0x00080000;
+const UINT WINEDDCAPS_ZBLTS                                     = 0x00100000;
+const UINT WINEDDCAPS_ZOVERLAYS                                 = 0x00200000;
+const UINT WINEDDCAPS_COLORKEY                                  = 0x00400000;
+const UINT WINEDDCAPS_ALPHA                                     = 0x00800000;
+const UINT WINEDDCAPS_COLORKEYHWASSIST                          = 0x01000000;
+const UINT WINEDDCAPS_NOHARDWARE                                = 0x02000000;
+const UINT WINEDDCAPS_BLTCOLORFILL                              = 0x04000000;
+const UINT WINEDDCAPS_BANKSWITCHED                              = 0x08000000;
+const UINT WINEDDCAPS_BLTDEPTHFILL                              = 0x10000000;
+const UINT WINEDDCAPS_CANCLIP                                   = 0x20000000;
+const UINT WINEDDCAPS_CANCLIPSTRETCHED                          = 0x40000000;
+const UINT WINEDDCAPS_CANBLTSYSMEM                              = 0x80000000;
+
+const UINT WINEDDCAPS2_CERTIFIED                                = 0x00000001;
+const UINT WINEDDCAPS2_NO2DDURING3DSCENE                        = 0x00000002;
+const UINT WINEDDCAPS2_VIDEOPORT                                = 0x00000004;
+const UINT WINEDDCAPS2_AUTOFLIPOVERLAY                          = 0x00000008;
+const UINT WINEDDCAPS2_CANBOBINTERLEAVED                        = 0x00000010;
+const UINT WINEDDCAPS2_CANBOBNONINTERLEAVED                     = 0x00000020;
+const UINT WINEDDCAPS2_COLORCONTROLOVERLAY                      = 0x00000040;
+const UINT WINEDDCAPS2_COLORCONTROLPRIMARY                      = 0x00000080;
+const UINT WINEDDCAPS2_CANDROPZ16BIT                            = 0x00000100;
+const UINT WINEDDCAPS2_NONLOCALVIDMEM                           = 0x00000200;
+const UINT WINEDDCAPS2_NONLOCALVIDMEMCAPS                       = 0x00000400;
+const UINT WINEDDCAPS2_NOPAGELOCKREQUIRED                       = 0x00000800;
+const UINT WINEDDCAPS2_WIDESURFACES                             = 0x00001000;
+const UINT WINEDDCAPS2_CANFLIPODDEVEN                           = 0x00002000;
+const UINT WINEDDCAPS2_CANBOBHARDWARE                           = 0x00004000;
+const UINT WINEDDCAPS2_COPYFOURCC                               = 0x00008000;
+const UINT WINEDDCAPS2_PRIMARYGAMMA                             = 0x00020000;
+const UINT WINEDDCAPS2_CANRENDERWINDOWED                        = 0x00080000;
+const UINT WINEDDCAPS2_CANCALIBRATEGAMMA                        = 0x00100000;
+const UINT WINEDDCAPS2_FLIPINTERVAL                             = 0x00200000;
+const UINT WINEDDCAPS2_FLIPNOVSYNC                              = 0x00400000;
+const UINT WINEDDCAPS2_CANMANAGETEXTURE                         = 0x00800000;
+const UINT WINEDDCAPS2_TEXMANINNONLOCALVIDMEM                   = 0x01000000;
+const UINT WINEDDCAPS2_STEREO                                   = 0x02000000;
+const UINT WINEDDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL              = 0x04000000;
+
+/* DDCAPS.d */
+const UINT WINEDDPCAPS_4BIT                                     = 0x00000001;
+const UINT WINEDDPCAPS_8BITENTRIES                              = 0x00000002;
+const UINT WINEDDPCAPS_8BIT                                     = 0x00000004;
+const UINT WINEDDPCAPS_INITIALIZE                               = 0x00000008;
+const UINT WINEDDPCAPS_PRIMARYSURFACE                           = 0x00000010;
+const UINT WINEDDPCAPS_PRIMARYSURFACELEFT                       = 0x00000020;
+const UINT WINEDDPCAPS_ALLOW256                                 = 0x00000040;
+const UINT WINEDDPCAPS_VSYNC                                    = 0x00000080;
+const UINT WINEDDPCAPS_1BIT                                     = 0x00000100;
+const UINT WINEDDPCAPS_2BIT                                     = 0x00000200;
+const UINT WINEDDPCAPS_ALPHA                                    = 0x00000400;
+
+typedef struct _WINED3DDISPLAYMODE
+{
+    UINT Width;
+    UINT Height;
+    UINT RefreshRate;
+    WINED3DFORMAT Format;
+} WINED3DDISPLAYMODE;
+
+typedef struct _WINED3DCOLORVALUE
+{
+    float r;
+    float g;
+    float b;
+    float a;
+} WINED3DCOLORVALUE;
+
+typedef struct _WINED3DVECTOR
+{
+    float x;
+    float y;
+    float z;
+} WINED3DVECTOR;
+
+typedef struct _WINED3DMATRIX
+{
+    union
+    {
+        struct
+        {
+            float _11, _12, _13, _14;
+            float _21, _22, _23, _24;
+            float _31, _32, _33, _34;
+            float _41, _42, _43, _44;
+        } DUMMYSTRUCTNAME;
+        float m[4][4];
+    } DUMMYUNIONNAME;
+} WINED3DMATRIX;
+
+typedef struct _WINED3DRECT
+{
+    LONG x1;
+    LONG y1;
+    LONG x2;
+    LONG y2;
+} WINED3DRECT;
+
+typedef struct _WINED3DLIGHT
+{
+    WINED3DLIGHTTYPE Type;
+    WINED3DCOLORVALUE Diffuse;
+    WINED3DCOLORVALUE Specular;
+    WINED3DCOLORVALUE Ambient;
+    WINED3DVECTOR Position;
+    WINED3DVECTOR Direction;
+    float Range;
+    float Falloff;
+    float Attenuation0;
+    float Attenuation1;
+    float Attenuation2;
+    float Theta;
+    float Phi;
+} WINED3DLIGHT;
+
+typedef struct _WINED3DMATERIAL
+{
+    WINED3DCOLORVALUE Diffuse;
+    WINED3DCOLORVALUE Ambient;
+    WINED3DCOLORVALUE Specular;
+    WINED3DCOLORVALUE Emissive;
+    float Power;
+} WINED3DMATERIAL;
+
+typedef struct _WINED3DVIEWPORT
+{
+    DWORD X;
+    DWORD Y;
+    DWORD Width;
+    DWORD Height;
+    float MinZ;
+    float MaxZ;
+} WINED3DVIEWPORT;
+
+typedef struct _WINED3DGAMMARAMP
+{
+    WORD red[256];
+    WORD green[256];
+    WORD blue[256];
+} WINED3DGAMMARAMP;
+
+typedef struct _WINED3DLINEPATTERN
+{
+    WORD wRepeatFactor;
+    WORD wLinePattern;
+} WINED3DLINEPATTERN;
+
+typedef struct _WINEDD3DRECTPATCH_INFO
+{
+    UINT StartVertexOffsetWidth;
+    UINT StartVertexOffsetHeight;
+    UINT Width;
+    UINT Height;
+    UINT Stride;
+    WINED3DBASISTYPE Basis;
+    WINED3DDEGREETYPE Degree;
+} WINED3DRECTPATCH_INFO;
+
+typedef struct _WINED3DTRIPATCH_INFO
+{
+    UINT StartVertexOffset;
+    UINT NumVertices;
+    WINED3DBASISTYPE Basis;
+    WINED3DDEGREETYPE Degree;
+} WINED3DTRIPATCH_INFO;
+
+typedef struct _WINED3DADAPTER_IDENTIFIER
+{
+    char *Driver;
+    char *Description;
+    char *DeviceName;
+    LARGE_INTEGER *DriverVersion;
+    DWORD *VendorId;
+    DWORD *DeviceId;
+    DWORD *SubSysId;
+    DWORD *Revision;
+    GUID *DeviceIdentifier;
+    DWORD *WHQLLevel;
+} WINED3DADAPTER_IDENTIFIER;
+
+typedef struct _WINED3DPRESENT_PARAMETERS
+{
+    UINT BackBufferWidth;
+    UINT BackBufferHeight;
+    WINED3DFORMAT BackBufferFormat;
+    UINT BackBufferCount;
+    WINED3DMULTISAMPLE_TYPE MultiSampleType;
+    DWORD MultiSampleQuality;
+    WINED3DSWAPEFFECT SwapEffect;
+    HWND hDeviceWindow;
+    BOOL Windowed;
+    BOOL EnableAutoDepthStencil;
+    WINED3DFORMAT AutoDepthStencilFormat;
+    DWORD Flags;
+    UINT FullScreen_RefreshRateInHz;
+    UINT PresentationInterval;
+    BOOL AutoRestoreDisplayMode;
+} WINED3DPRESENT_PARAMETERS;
+
+typedef struct _WINED3DSURFACE_DESC
+{
+    WINED3DFORMAT *Format;
+    WINED3DRESOURCETYPE *Type;
+    DWORD *Usage;
+    WINED3DPOOL *Pool;
+    UINT *Size;
+    WINED3DMULTISAMPLE_TYPE *MultiSampleType;
+    DWORD *MultiSampleQuality;
+    UINT *Width;
+    UINT *Height;
+} WINED3DSURFACE_DESC;
+
+typedef struct _WINED3DVOLUME_DESC
+{
+    WINED3DFORMAT *Format;
+    WINED3DRESOURCETYPE *Type;
+    DWORD *Usage;
+    WINED3DPOOL *Pool;
+    UINT *Size;
+    UINT *Width;
+    UINT *Height;
+    UINT *Depth;
+} WINED3DVOLUME_DESC;
+
+typedef struct _WINED3DCLIPSTATUS
+{
+   DWORD ClipUnion;
+   DWORD ClipIntersection;
+} WINED3DCLIPSTATUS;
+
+typedef struct _WINED3DVERTEXELEMENT
+{
+  WORD Stream;
+  WORD Offset;
+  BYTE Type;
+  BYTE Method;
+  BYTE Usage;
+  BYTE UsageIndex;
+  int Reg; /* DirectX 8 */
+} WINED3DVERTEXELEMENT, *LPWINED3DVERTEXELEMENT;
+
+typedef struct _WINED3DDEVICE_CREATION_PARAMETERS
+{
+    UINT AdapterOrdinal;
+    WINED3DDEVTYPE DeviceType;
+    HWND hFocusWindow;
+    DWORD BehaviorFlags;
+} WINED3DDEVICE_CREATION_PARAMETERS;
+
+typedef struct _WINED3DDEVINFO_BANDWIDTHTIMINGS
+{
+    float MaxBandwidthUtilized;
+    float FrontEndUploadMemoryUtilizedPercent;
+    float VertexRateUtilizedPercent;
+    float TriangleSetupRateUtilizedPercent;
+    float FillRateUtilizedPercent;
+} WINED3DDEVINFO_BANDWIDTHTIMINGS;
+
+typedef struct _WINED3DDEVINFO_CACHEUTILIZATION
+{
+    float TextureCacheHitRate;
+    float PostTransformVertexCacheHitRate;
+} WINED3DDEVINFO_CACHEUTILIZATION;
+
+typedef struct _WINED3DDEVINFO_INTERFACETIMINGS
+{
+    float WaitingForGPUToUseApplicationResourceTimePercent;
+    float WaitingForGPUToAcceptMoreCommandsTimePercent;
+    float WaitingForGPUToStayWithinLatencyTimePercent;
+    float WaitingForGPUExclusiveResourceTimePercent;
+    float WaitingForGPUOtherTimePercent;
+} WINED3DDEVINFO_INTERFACETIMINGS;
+
+typedef struct _WINED3DDEVINFO_PIPELINETIMINGS
+{
+    float VertexProcessingTimePercent;
+    float PixelProcessingTimePercent;
+    float OtherGPUProcessingTimePercent;
+    float GPUIdleTimePercent;
+} WINED3DDEVINFO_PIPELINETIMINGS;
+
+typedef struct _WINED3DDEVINFO_STAGETIMINGS
+{
+    float MemoryProcessingPercent;
+    float ComputationProcessingPercent;
+} WINED3DDEVINFO_STAGETIMINGS;
+
+typedef struct _WINED3DRASTER_STATUS
+{
+    BOOL InVBlank;
+    UINT ScanLine;
+} WINED3DRASTER_STATUS;
+
+typedef struct WINED3DRESOURCESTATS
+{
+    BOOL bThrashing;
+    DWORD ApproxBytesDownloaded;
+    DWORD NumEvicts;
+    DWORD NumVidCreates;
+    DWORD LastPri;
+    DWORD NumUsed;
+    DWORD NumUsedInVidMem;
+    DWORD WorkingSet;
+    DWORD WorkingSetBytes;
+    DWORD TotalManaged;
+    DWORD TotalBytes;
+} WINED3DRESOURCESTATS;
+
+typedef struct _WINED3DDEVINFO_RESOURCEMANAGER
+{
+    WINED3DRESOURCESTATS stats[WINED3DRTYPECOUNT];
+} WINED3DDEVINFO_RESOURCEMANAGER;
+
+typedef struct _WINED3DDEVINFO_VERTEXSTATS
+{
+    DWORD NumRenderedTriangles;
+    DWORD NumExtraClippingTriangles;
+} WINED3DDEVINFO_VERTEXSTATS;
+
+typedef struct _WINED3DLOCKED_RECT
+{
+    INT Pitch;
+    void *pBits;
+} WINED3DLOCKED_RECT;
+
+typedef struct _WINED3DLOCKED_BOX
+{
+    INT RowPitch;
+    INT SlicePitch;
+    void *pBits;
+} WINED3DLOCKED_BOX;
+
+typedef struct _WINED3DBOX
+{
+    UINT Left;
+    UINT Top;
+    UINT Right;
+    UINT Bottom;
+    UINT Front;
+    UINT Back;
+} WINED3DBOX;
+
+/*Vertex cache optimization hints.*/
+typedef struct WINED3DDEVINFO_VCACHE
+{
+    DWORD Pattern;      /* Must be a 4 char code FOURCC (e.g. CACH) */
+    DWORD OptMethod;    /* 0 to get the longest  strips, 1 vertex cache */
+    DWORD CacheSize;    /* Cache size to use (only valid if OptMethod==1) */
+    DWORD MagicNumber;  /* Internal for deciding when to restart strips,
+                           non user modifiable (only valid if OptMethod==1) */
+} WINED3DDEVINFO_VCACHE;
+
+typedef struct _WINED3DVERTEXBUFFER_DESC
+{
+    WINED3DFORMAT Format;
+    WINED3DRESOURCETYPE Type;
+    DWORD Usage;
+    WINED3DPOOL Pool;
+    UINT Size;
+    DWORD FVF;
+} WINED3DVERTEXBUFFER_DESC;
+
+typedef struct _WINED3DINDEXBUFFER_DESC
+{
+    WINED3DFORMAT Format;
+    WINED3DRESOURCETYPE Type;
+    DWORD Usage;
+    WINED3DPOOL Pool;
+    UINT Size;
+} WINED3DINDEXBUFFER_DESC;
+
+typedef struct glDescriptor
+{
+    UINT textureName;
+    int level;
+    int /*GLenum*/ target;
+    int /*GLenum*/ glFormat;
+    int /*GLenum*/ glFormatInternal;
+    int /*GLenum*/ glType;
+} glDescriptor;
+
+typedef struct WineDirect3DStridedData
+{
+    const BYTE *lpData; /* Pointer to start of data */
+    DWORD dwStride;     /* Stride between occurrences of this data */
+    DWORD dwType;       /* Type (as in D3DVSDT_TYPE) */
+    int VBO;            /* Vertex buffer object this data is in */
+    UINT streamNo;      /* D3D stream number */
+} WineDirect3DStridedData;
+
+typedef struct WineDirect3DVertexStridedData
+{
+    /*
+     * IMPORTANT:
+     * This structure can be accessed in two ways: Named access, and array
+     * access. Please note that named access is only valid with the fixed
+     * function vertex pipeline, and the arrays are only valid with the
+     * programmable vertex pipeline(vertex shaders).
+     */
+    union
+    {
+        struct
+        {
+            /* Do not add or reorder fields here,
+             * so this can be indexed as an array */
+            WineDirect3DStridedData position;
+            WineDirect3DStridedData blendWeights;
+            WineDirect3DStridedData blendMatrixIndices;
+            WineDirect3DStridedData normal;
+            WineDirect3DStridedData pSize;
+            WineDirect3DStridedData diffuse;
+            WineDirect3DStridedData specular;
+            WineDirect3DStridedData texCoords[WINED3DDP_MAXTEXCOORD];
+            WineDirect3DStridedData position2;  /* tween data */
+            WineDirect3DStridedData normal2;    /* tween data */
+            WineDirect3DStridedData tangent;
+            WineDirect3DStridedData binormal;
+            WineDirect3DStridedData tessFactor;
+            WineDirect3DStridedData fog;
+            WineDirect3DStridedData depth;
+            WineDirect3DStridedData sample;
+
+            /* Add fields here */
+            BOOL position_transformed;
+        } s;
+        WineDirect3DStridedData input[16];  /* Indexed by constants in D3DVSDE_REGISTER */
+    } u;
+} WineDirect3DVertexStridedData;
+
+typedef struct _WINED3DVSHADERCAPS2_0
+{
+    DWORD Caps;
+    INT DynamicFlowControlDepth;
+    INT NumTemps;
+    INT StaticFlowControlDepth;
+} WINED3DVSHADERCAPS2_0;
+
+typedef struct _WINED3DPSHADERCAPS2_0
+{
+    DWORD Caps;
+    INT DynamicFlowControlDepth;
+    INT NumTemps;
+    INT StaticFlowControlDepth;
+    INT NumInstructionSlots;
+} WINED3DPSHADERCAPS2_0;
+
+typedef struct _WINEDDCAPS
+{
+    DWORD Caps;
+    DWORD Caps2;
+    DWORD CKeyCaps;
+    DWORD FXCaps;
+    DWORD FXAlphaCaps;
+    DWORD PalCaps;
+    DWORD SVCaps;
+    DWORD SVBCaps;
+    DWORD SVBCKeyCaps;
+    DWORD SVBFXCaps;
+    DWORD VSBCaps;
+    DWORD VSBCKeyCaps;
+    DWORD VSBFXCaps;
+    DWORD SSBCaps;
+    DWORD SSBCKeyCaps;
+    DWORD SSBFXCaps;
+    DWORD ddsCaps;
+    DWORD StrideAlign;
+} WINEDDCAPS;
+
+typedef struct _WINED3DCAPS
+{
+    WINED3DDEVTYPE DeviceType;
+    UINT AdapterOrdinal;
+
+    DWORD Caps;
+    DWORD Caps2;
+    DWORD Caps3;
+    DWORD PresentationIntervals;
+
+    DWORD CursorCaps;
+    DWORD DevCaps;
+    DWORD PrimitiveMiscCaps;
+    DWORD RasterCaps;
+    DWORD ZCmpCaps;
+    DWORD SrcBlendCaps;
+    DWORD DestBlendCaps;
+    DWORD AlphaCmpCaps;
+    DWORD ShadeCaps;
+    DWORD TextureCaps;
+    DWORD TextureFilterCaps;
+    DWORD CubeTextureFilterCaps;
+    DWORD VolumeTextureFilterCaps;
+    DWORD TextureAddressCaps;
+    DWORD VolumeTextureAddressCaps;
+    DWORD LineCaps;
+
+    DWORD MaxTextureWidth;
+    DWORD MaxTextureHeight;
+    DWORD MaxVolumeExtent;
+    DWORD MaxTextureRepeat;
+    DWORD MaxTextureAspectRatio;
+    DWORD MaxAnisotropy;
+    float MaxVertexW;
+
+    float GuardBandLeft;
+    float GuardBandTop;
+    float GuardBandRight;
+    float GuardBandBottom;
+
+    float ExtentsAdjust;
+    DWORD StencilCaps;
+
+    DWORD FVFCaps;
+    DWORD TextureOpCaps;
+    DWORD MaxTextureBlendStages;
+    DWORD MaxSimultaneousTextures;
+
+    DWORD VertexProcessingCaps;
+    DWORD MaxActiveLights;
+    DWORD MaxUserClipPlanes;
+    DWORD MaxVertexBlendMatrices;
+    DWORD MaxVertexBlendMatrixIndex;
+
+    float MaxPointSize;
+
+    DWORD MaxPrimitiveCount;
+    DWORD MaxVertexIndex;
+    DWORD MaxStreams;
+    DWORD MaxStreamStride;
+
+    DWORD VertexShaderVersion;
+    DWORD MaxVertexShaderConst;
+
+    DWORD PixelShaderVersion;
+    float PixelShader1xMaxValue;
+
+    /* DX 9 */
+    DWORD DevCaps2;
+
+    float MaxNpatchTessellationLevel;
+    DWORD Reserved5; /* undocumented */
+
+    UINT MasterAdapterOrdinal;
+    UINT AdapterOrdinalInGroup;
+    UINT NumberOfAdaptersInGroup;
+    DWORD DeclTypes;
+    DWORD NumSimultaneousRTs;
+    DWORD StretchRectFilterCaps;
+    WINED3DVSHADERCAPS2_0 VS20Caps;
+    WINED3DPSHADERCAPS2_0 PS20Caps;
+    DWORD VertexTextureFilterCaps;
+    DWORD MaxVShaderInstructionsExecuted;
+    DWORD MaxPShaderInstructionsExecuted;
+    DWORD MaxVertexShader30InstructionSlots;
+    DWORD MaxPixelShader30InstructionSlots;
+    DWORD Reserved2; /* Not in the microsoft headers but documented */
+    DWORD Reserved3;
+
+    WINEDDCAPS DirectDrawCaps;
+} WINED3DCAPS;
+
+/* DirectDraw types */
+
+typedef struct _WINEDDCOLORKEY
+{
+    DWORD dwColorSpaceLowValue;     /* low boundary of color space that is to
+                                     * be treated as Color Key, inclusive */
+    DWORD dwColorSpaceHighValue;    /* high boundary of color space that is
+                                     * to be treated as Color Key, inclusive */
+} WINEDDCOLORKEY,*LPWINEDDCOLORKEY;
+
+typedef struct _WINEDDBLTFX
+{
+    DWORD dwSize;                                   /* size of structure */
+    DWORD dwDDFX;                                   /* FX operations */
+    DWORD dwROP;                                    /* Win32 raster operations */
+    DWORD dwDDROP;                                  /* Raster operations new for DirectDraw */
+    DWORD dwRotationAngle;                          /* Rotation angle for blt */
+    DWORD dwZBufferOpCode;                          /* ZBuffer compares */
+    DWORD dwZBufferLow;                             /* Low limit of Z buffer */
+    DWORD dwZBufferHigh;                            /* High limit of Z buffer */
+    DWORD dwZBufferBaseDest;                        /* Destination base value */
+    DWORD dwZDestConstBitDepth;                     /* Bit depth used to specify Z constant for destination */
+    union
+    {
+        DWORD dwZDestConst;                         /* Constant to use as Z buffer for dest */
+        struct IWineD3DSurface *lpDDSZBufferDest;   /* Surface to use as Z buffer for dest */
+    } DUMMYUNIONNAME1;
+    DWORD dwZSrcConstBitDepth;                      /* Bit depth used to specify Z constant for source */
+    union
+    {
+        DWORD dwZSrcConst;                          /* Constant to use as Z buffer for src */
+        struct IWineD3DSurface *lpDDSZBufferSrc;    /* Surface to use as Z buffer for src */
+    } DUMMYUNIONNAME2;
+    DWORD dwAlphaEdgeBlendBitDepth;                 /* Bit depth used to specify constant for alpha edge blend */
+    DWORD dwAlphaEdgeBlend;                         /* Alpha for edge blending */
+    DWORD dwReserved;
+    DWORD dwAlphaDestConstBitDepth;                 /* Bit depth used to specify alpha constant for destination */
+    union
+    {
+        DWORD dwAlphaDestConst;                     /* Constant to use as Alpha Channel */
+        struct IWineD3DSurface *lpDDSAlphaDest;     /* Surface to use as Alpha Channel */
+    } DUMMYUNIONNAME3;
+    DWORD dwAlphaSrcConstBitDepth;                  /* Bit depth used to specify alpha constant for source */
+    union
+    {
+        DWORD dwAlphaSrcConst;                      /* Constant to use as Alpha Channel */
+        struct IWineD3DSurface *lpDDSAlphaSrc;      /* Surface to use as Alpha Channel */
+    } DUMMYUNIONNAME4;
+    union
+    {
+        DWORD dwFillColor;                          /* color in RGB or Palettized */
+        DWORD dwFillDepth;                          /* depth value for z-buffer */
+        DWORD dwFillPixel;                          /* pixel val for RGBA or RGBZ */
+        struct IWineD3DSurface *lpDDSPattern;       /* Surface to use as pattern */
+    } DUMMYUNIONNAME5;
+    WINEDDCOLORKEY ddckDestColorkey;                /* DestColorkey override */
+    WINEDDCOLORKEY ddckSrcColorkey;                 /* SrcColorkey override */
+} WINEDDBLTFX,*LPWINEDDBLTFX;
+
+typedef struct _WINEDDOVERLAYFX
+{
+    DWORD dwSize;                                   /* size of structure */
+    DWORD dwAlphaEdgeBlendBitDepth;                 /* Bit depth used to specify constant for alpha edge blend */
+    DWORD dwAlphaEdgeBlend;                         /* Constant to use as alpha for edge blend */
+    DWORD dwReserved;
+    DWORD dwAlphaDestConstBitDepth;                 /* Bit depth used to specify alpha constant for destination */
+    union
+    {
+        DWORD dwAlphaDestConst;                     /* Constant to use as alpha channel for dest */
+        struct IWineD3DSurface *lpDDSAlphaDest;     /* Surface to use as alpha channel for dest */
+    } DUMMYUNIONNAME1;
+    DWORD dwAlphaSrcConstBitDepth;                  /* Bit depth used to specify alpha constant for source */
+    union
+    {
+        DWORD dwAlphaSrcConst;                      /* Constant to use as alpha channel for src */
+        struct IWineD3DSurface *lpDDSAlphaSrc;      /* Surface to use as alpha channel for src */
+    } DUMMYUNIONNAME2;
+    WINEDDCOLORKEY dckDestColorkey;                 /* DestColorkey override */
+    WINEDDCOLORKEY dckSrcColorkey;                  /* SrcColorkey override */
+    DWORD dwDDFX;                                   /* Overlay FX */
+    DWORD dwFlags;                                  /* flags */
+} WINEDDOVERLAYFX;
+
+interface IWineD3DResource;
+interface IWineD3DSurface;
+interface IWineD3DVolume;
+interface IWineD3DSwapChain;
+interface IWineD3DDevice;
+
+typedef HRESULT (*D3DCB_CREATESURFACEFN)(IUnknown *pDevice, IUnknown *pSuperior, UINT Width,
+        UINT Height, WINED3DFORMAT Format, DWORD Usage, WINED3DPOOL Pool, UINT Level, WINED3DCUBEMAP_FACES Face,
+        IWineD3DSurface **ppSurface, HANDLE *pSharedHandle);
+typedef HRESULT (*D3DCB_CREATERENDERTARGETFN)(IUnknown *pDevice, IUnknown *pSuperior, UINT Width,
+        UINT Height, WINED3DFORMAT Format, WINED3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality,
+        BOOL Lockable, IWineD3DSurface **ppSurface, HANDLE *pSharedHandle);
+typedef HRESULT (*D3DCB_CREATEDEPTHSTENCILSURFACEFN)(IUnknown *pDevice, IUnknown *pSuperior, UINT Width,
+        UINT Height, WINED3DFORMAT Format, WINED3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality,
+        BOOL Discard, IWineD3DSurface **ppSurface, HANDLE *pSharedHandle);
+typedef ULONG (*D3DCB_DESTROYSURFACEFN)(IWineD3DSurface *pSurface);
+typedef HRESULT (*D3DCB_CREATEVOLUMEFN)(IUnknown *pDevice, IUnknown *pSuperior, UINT Width,
+        UINT Height, UINT Depth, WINED3DFORMAT Format, WINED3DPOOL Pool, DWORD Usage,
+        IWineD3DVolume **ppVolume, HANDLE *pSharedHandle);
+typedef ULONG (*D3DCB_DESTROYVOLUMEFN)(IWineD3DVolume *pVolume);
+typedef HRESULT (*D3DCB_CREATESWAPCHAIN)(IUnknown *pDevice, WINED3DPRESENT_PARAMETERS *pPresentationParameters,
+        IWineD3DSwapChain **pSwapChain);
+typedef ULONG (*D3DCB_DESTROYSWAPCHAINFN)(IWineD3DSwapChain *pSwapChain);
+typedef HRESULT (*D3DCB_ENUMRESOURCES)(IWineD3DResource *resource, void *pData);
+
+[
+    object,
+    local,
+    uuid(46799311-8e0e-40ce-b2ec-ddb99f18fcb4)
+]
+interface IWineD3DBase : IUnknown
+{
+    HRESULT GetParent(
+        [out] IUnknown **parent
+    );
+}
+
+[
+    object,
+    local,
+    uuid(108f9c44-6f30-11d9-c687-00046142c14f)
+]
+interface IWineD3D : IWineD3DBase
+{
+    UINT GetAdapterCount(
+    );
+    HRESULT RegisterSoftwareDevice(
+        [in] void *pInitializeFunction
+    );
+    HMONITOR GetAdapterMonitor(
+        [in] UINT adapter_idx
+    );
+    UINT GetAdapterModeCount(
+        [in] UINT adapter_idx,
+        [in] WINED3DFORMAT format
+    );
+    HRESULT EnumAdapterModes(
+        [in] UINT adapter_idx,
+        [in] UINT mode_idx,
+        [in] WINED3DFORMAT format,
+        [out] WINED3DDISPLAYMODE *mode
+    );
+    HRESULT GetAdapterDisplayMode(
+        [in] UINT adapter_idx,
+        [out] WINED3DDISPLAYMODE *mode
+    );
+    HRESULT GetAdapterIdentifier(
+        [in] UINT adapter_idx,
+        [in] DWORD flags,
+        [out] WINED3DADAPTER_IDENTIFIER *identifier
+    );
+    HRESULT CheckDeviceMultiSampleType(
+        [in] UINT adapter_idx,
+        [in] WINED3DDEVTYPE device_type,
+        [in] WINED3DFORMAT surface_format,
+        [in] BOOL windowed,
+        [in] WINED3DMULTISAMPLE_TYPE multisample_type,
+        [out] DWORD *quality_levels
+    );
+    HRESULT CheckDepthStencilMatch(
+        [in] UINT adapter_idx,
+        [in] WINED3DDEVTYPE device_type,
+        [in] WINED3DFORMAT adapter_format,
+        [in] WINED3DFORMAT render_target_format,
+        [in] WINED3DFORMAT depth_stencil_format
+    );
+    HRESULT CheckDeviceType(
+        [in] UINT adapter_idx,
+        [in] WINED3DDEVTYPE device_type,
+        [in] WINED3DFORMAT display_format,
+        [in] WINED3DFORMAT backbuffer_format,
+        [in] BOOL windowed
+    );
+    HRESULT CheckDeviceFormat(
+        [in] UINT adaper_idx,
+        [in] WINED3DDEVTYPE device_type,
+        [in] WINED3DFORMAT adapter_format,
+        [in] DWORD usage,
+        [in] WINED3DRESOURCETYPE resource_type,
+        [in] WINED3DFORMAT check_format,
+        [in] WINED3DSURFTYPE surface_type
+    );
+    HRESULT CheckDeviceFormatConversion(
+        [in] UINT adapter_idx,
+        [in] WINED3DDEVTYPE device_type,
+        [in] WINED3DFORMAT source_format,
+        [in] WINED3DFORMAT target_format
+    );
+    HRESULT GetDeviceCaps(
+        [in] UINT adapter_idx,
+        [in] WINED3DDEVTYPE device_type,
+        [out] WINED3DCAPS *caps
+    );
+    HRESULT CreateDevice(
+        [in] UINT adapter_idx,
+        [in] WINED3DDEVTYPE device_type,
+        [in] HWND focus_window,
+        [in] DWORD behaviour_flags,
+        [out] IWineD3DDevice **device,
+        [in] IUnknown *parent
+    );
+}
+
+[
+    object,
+    local,
+    uuid(1f3bfb34-6f30-11d9-c687-00046142c14f)
+]
+interface IWineD3DResource : IWineD3DBase
+{
+    HRESULT GetDevice(
+        [out] IWineD3DDevice **device
+    );
+    HRESULT SetPrivateData(
+        [in] REFGUID guid,
+        [in] const void *data,
+        [in] DWORD data_size,
+        [in] DWORD flags
+    );
+    HRESULT GetPrivateData(
+        [in] REFGUID guid,
+        [out] void *data,
+        [in, out] DWORD *data_size
+    );
+    HRESULT FreePrivateData(
+        [in] REFGUID guid
+    );
+    DWORD SetPriority(
+        [in] DWORD new_priority
+    );
+    DWORD GetPriority(
+    );
+    void PreLoad(
+    );
+    void UnLoad(
+    );
+    WINED3DRESOURCETYPE GetType(
+    );
+}
+
+[
+    object,
+    local,
+    uuid(217f671e-6f30-11d9-c687-00046142c14f)
+]
+interface IWineD3DVertexBuffer : IWineD3DResource
+{
+    HRESULT Lock(
+        [in] UINT offset,
+        [in] UINT size,
+        [out] BYTE **data,
+        [in] DWORD flags
+    );
+    HRESULT Unlock(
+    );
+    HRESULT GetDesc(
+        [out] WINED3DVERTEXBUFFER_DESC *desc
+    );
+}
+
+[
+    object,
+    local,
+    uuid(3a02a54e-6f30-11d9-c687-00046142c14f)
+]
+interface IWineD3DIndexBuffer : IWineD3DResource
+{
+    HRESULT Lock(
+        [in] UINT offset,
+        [in] UINT size,
+        [out] BYTE **data,
+        [in] DWORD flags
+    );
+    HRESULT Unlock(
+    );
+    HRESULT GetDesc(
+        [out] WINED3DINDEXBUFFER_DESC *desc
+    );
+}
+
+[
+    object,
+    local,
+    uuid(f756720c-32b9-4439-b5a3-1d6c97037d9e)
+]
+interface IWineD3DPalette : IWineD3DBase
+{
+    HRESULT GetEntries(
+        [in] DWORD flags,
+        [in] DWORD start,
+        [in] DWORD count,
+        [out] PALETTEENTRY *entries
+    );
+    HRESULT GetCaps(
+        [out] DWORD *caps
+    );
+    HRESULT SetEntries(
+        [in] DWORD flags,
+        [in] DWORD start,
+        [in] DWORD count,
+        [in] const PALETTEENTRY *entries
+    );
+}
+
+[
+    object,
+    local,
+    uuid(8f2bceb1-d338-488c-ab7f-0ec980bf5d2d)
+]
+interface IWineD3DClipper : IWineD3DBase
+{
+    HRESULT GetClipList(
+        [in] const RECT *rect,
+        [out] RGNDATA *clip_list,
+        [in, out] DWORD *clip_list_size
+    );
+    HRESULT GetHWnd(
+        [out] HWND *hwnd
+    );
+    HRESULT IsClipListChanged(
+        [out] BOOL *changed
+    );
+    HRESULT SetClipList(
+        [in] const RGNDATA *clip_list,
+        [in] DWORD flags
+    );
+    HRESULT SetHWnd(
+        [in] DWORD flags,
+        [in] HWND hwnd
+    );
+}
+
+[
+    object,
+    local,
+    uuid(37cd5526-6f30-11d9-c687-00046142c14f)
+]
+interface IWineD3DSurface : IWineD3DResource
+{
+    HRESULT GetContainer(
+        [in] REFIID riid,
+        [out] void **container
+    );
+    HRESULT GetDesc(
+        [out] WINED3DSURFACE_DESC *desc
+    );
+    HRESULT LockRect(
+        [out] WINED3DLOCKED_RECT *locked_rect,
+        [in] const RECT *rect,
+        [in] DWORD flags
+    );
+    HRESULT UnlockRect(
+    );
+    HRESULT GetDC(
+        [out] HDC *dc
+    );
+    HRESULT ReleaseDC(
+        [in] HDC dc
+    );
+    HRESULT Flip(
+        [in] IWineD3DSurface *override,
+        [in] DWORD flags
+    );
+    HRESULT Blt(
+        [in] const RECT *dst_rect,
+        [in] IWineD3DSurface *src_surface,
+        [in] const RECT *src_rect,
+        [in] DWORD flags,
+        [in] const WINEDDBLTFX *blt_fx,
+        [in] WINED3DTEXTUREFILTERTYPE filter
+    );
+    HRESULT GetBltStatus(
+        [in] DWORD flags
+    );
+    HRESULT GetFlipStatus(
+        [in] DWORD flags
+    );
+    HRESULT IsLost(
+    );
+    HRESULT Restore(
+    );
+    HRESULT BltFast(
+        [in] DWORD dst_x,
+        [in] DWORD dst_y,
+        [in] IWineD3DSurface *src_surface,
+        [in] const RECT *src_rect,
+        [in] DWORD trans
+    );
+    HRESULT GetPalette(
+        [out] IWineD3DPalette **palette
+    );
+    HRESULT SetPalette(
+        [in] IWineD3DPalette *palette
+    );
+    HRESULT RealizePalette(
+    );
+    HRESULT SetColorKey(
+        [in] DWORD flags,
+        [in] const WINEDDCOLORKEY *color_key
+    );
+    DWORD GetPitch(
+    );
+    HRESULT SetMem(
+        [in] void *mem
+    );
+    HRESULT SetOverlayPosition(
+        [in] LONG x,
+        [in] LONG y
+    );
+    HRESULT GetOverlayPosition(
+        [out] LONG *x,
+        [out] LONG *y
+    );
+    HRESULT UpdateOverlayZOrder(
+        [in] DWORD flags,
+        [in] IWineD3DSurface *ref
+    );
+    HRESULT UpdateOverlay(
+        [in] const RECT *src_rect,
+        [in] IWineD3DSurface *dst_surface,
+        [in] const RECT *dst_rect,
+        [in] DWORD flags,
+        [in] const WINEDDOVERLAYFX *fx
+    );
+    HRESULT SetClipper(
+        [in] IWineD3DClipper *clipper
+    );
+    HRESULT GetClipper(
+        [out] IWineD3DClipper **clipper
+    );
+    HRESULT AddDirtyRect(
+        [in] const RECT *dirty_rect
+    );
+    HRESULT LoadTexture(
+        [in] BOOL srgb_mode
+    );
+    void BindTexture(
+    );
+    HRESULT SaveSnapshot(
+        [in] const char *filename
+    );
+    HRESULT SetContainer(
+        [in] IWineD3DBase *container
+    );
+    void GetGlDesc(
+        [out] glDescriptor **desc
+    );
+    const void *GetData(
+    );
+    HRESULT SetFormat(
+        [in] WINED3DFORMAT format
+    );
+    HRESULT PrivateSetup(
+    );
+    void ModifyLocation(
+        [in] DWORD location,
+        [in] BOOL persistent
+    );
+    HRESULT LoadLocation(
+        [in] DWORD location,
+        [in] const RECT *rect
+    );
+    WINED3DSURFTYPE GetImplType(
+    );
+    HRESULT DrawOverlay(
+    );
+}
+
+[
+    object,
+    local,
+    uuid(24769ed8-6f30-11d9-c687-00046142c14f)
+]
+interface IWineD3DVolume : IWineD3DResource
+{
+    HRESULT GetContainer(
+        [in] REFIID riid,
+        [out] void **container
+    );
+    HRESULT GetDesc(
+        [out] WINED3DVOLUME_DESC *desc
+    );
+    HRESULT LockBox(
+        [out] WINED3DLOCKED_BOX *locked_box,
+        [in] const WINED3DBOX *box,
+        [in] DWORD flags
+    );
+    HRESULT UnlockBox(
+    );
+    HRESULT AddDirtyBox(
+        [in] const WINED3DBOX *dirty_box
+    );
+    HRESULT CleanDirtyBox(
+    );
+    HRESULT LoadTexture(
+        [in] int gl_level,
+        [in] BOOL srgb_mode
+    );
+    HRESULT SetContainer(
+        [in] IWineD3DBase *container
+    );
+}
+
+[
+    object,
+    local,
+    uuid(3c2aebf6-6f30-11d9-c687-00046142c14f)
+]
+interface IWineD3DBaseTexture : IWineD3DResource
+{
+    DWORD SetLOD(
+        [in] DWORD new_lod
+    );
+    DWORD GetLOD(
+    );
+    DWORD GetLevelCount(
+    );
+    HRESULT SetAutoGenFilterType(
+        WINED3DTEXTUREFILTERTYPE filter_type
+    );
+    WINED3DTEXTUREFILTERTYPE GetAutoGenFilterType(
+    );
+    void GenerateMipSubLevels(
+    );
+    BOOL SetDirty(
+        BOOL dirty
+    );
+    BOOL GetDirty(
+    );
+    HRESULT BindTexture(
+    );
+    UINT GetTextureDimensions(
+    );
+    BOOL IsCondNP2(
+    );
+    void ApplyStateChanges(
+        const DWORD texture_states[WINED3D_HIGHEST_TEXTURE_STATE + 1],
+        const DWORD sampler_states[WINED3D_HIGHEST_SAMPLER_STATE + 1]
+    );
+}
+
+[
+    object,
+    local,
+    uuid(3e72cc1c-6f30-11d9-c687-00046142c14f)
+]
+interface IWineD3DTexture : IWineD3DBaseTexture
+{
+    void Destroy(
+        [in] D3DCB_DESTROYSURFACEFN destroy_surface_callback
+    );
+    HRESULT GetLevelDesc(
+        [in] UINT level,
+        [out] WINED3DSURFACE_DESC *desc
+    );
+    HRESULT GetSurfaceLevel(
+        [in] UINT level,
+        [out] IWineD3DSurface **surface
+    );
+    HRESULT LockRect(
+        [in] UINT level,
+        [out] WINED3DLOCKED_RECT *locked_rect,
+        [in] const RECT *rect,
+        [in] DWORD flags
+    );
+    HRESULT UnlockRect(
+        [in] UINT level
+    );
+    HRESULT AddDirtyRect(
+        [in] const RECT *dirty_rect
+    );
+}
+
+[
+    object,
+    local,
+    uuid(41752900-6f30-11d9-c687-00046142c14f)
+]
+interface IWineD3DCubeTexture : IWineD3DBaseTexture
+{
+    void Destroy(
+        [in] D3DCB_DESTROYSURFACEFN destroy_surface_callback
+    );
+    HRESULT GetLevelDesc(
+        [in] UINT level,
+        [out] WINED3DSURFACE_DESC *desc
+    );
+    HRESULT GetCubeMapSurface(
+        [in] WINED3DCUBEMAP_FACES face,
+        [in] UINT level,
+        [out] IWineD3DSurface **surface
+    );
+    HRESULT LockRect(
+        [in] WINED3DCUBEMAP_FACES face,
+        [in] UINT level,
+        [out] WINED3DLOCKED_RECT *locked_rect,
+        [in] const RECT *rect,
+        [in] DWORD flags
+    );
+    HRESULT UnlockRect(
+        [in] WINED3DCUBEMAP_FACES face,
+        [in] UINT level
+    );
+    HRESULT AddDirtyRect(
+        [in] WINED3DCUBEMAP_FACES face,
+        [in] const RECT *dirty_rect
+    );
+}
+
+[
+    object,
+    local,
+    uuid(7b39470c-6f30-11d9-c687-00046142c14f)
+]
+interface IWineD3DVolumeTexture : IWineD3DBaseTexture
+{
+    void Destroy(
+        [in] D3DCB_DESTROYVOLUMEFN destroy_volume_callback
+    );
+    HRESULT GetLevelDesc(
+        [in] UINT level,
+        [out] WINED3DVOLUME_DESC *desc
+    );
+    HRESULT GetVolumeLevel(
+        [in] UINT level,
+        [out] IWineD3DVolume **volume
+    );
+    HRESULT LockBox(
+        [in] UINT level,
+        [out] WINED3DLOCKED_BOX *locked_box,
+        [in] const WINED3DBOX *box,
+        [in] DWORD flags
+    );
+    HRESULT UnlockBox(
+        [in] UINT level
+    );
+    HRESULT AddDirtyBox(
+        [in] const WINED3DBOX *dirty_box
+    );
+}
+
+[
+    object,
+    local,
+    uuid(7cd55be6-6f30-11d9-c687-00046142c14f)
+]
+interface IWineD3DVertexDeclaration : IWineD3DBase
+{
+    HRESULT GetDevice(
+        [out] IWineD3DDevice **device
+    );
+    HRESULT GetDeclaration(
+        [out] WINED3DVERTEXELEMENT *elements,
+        [out] UINT *element_count
+    );
+    HRESULT SetDeclaration(
+        [in] const WINED3DVERTEXELEMENT *elements,
+        [in] UINT element_count
+    );
+}
+
+[
+    object,
+    local,
+    uuid(83b073ce-6f30-11d9-c687-00046142c14f)
+]
+interface IWineD3DStateBlock : IWineD3DBase
+{
+    HRESULT GetDevice(
+        [out] IWineD3DDevice **device
+    );
+    HRESULT Capture(
+    );
+    HRESULT Apply(
+    );
+    HRESULT InitStartupStateBlock(
+    );
+}
+
+[
+    object,
+    local,
+    uuid(905ddbac-6f30-11d9-c687-00046142c14f)
+]
+interface IWineD3DQuery : IWineD3DBase
+{
+    HRESULT GetDevice(
+        [out] IWineD3DDevice **device
+    );
+    HRESULT GetData(
+        [out] void *data,
+        [in] DWORD data_size,
+        [in] DWORD flags
+    );
+    DWORD GetDataSize(
+    );
+    WINED3DQUERYTYPE GetType(
+    );
+    HRESULT Issue(
+        DWORD flags
+    );
+}
+
+[
+    object,
+    local,
+    uuid(34d01b10-6f30-11d9-c687-00046142c14f)
+]
+interface IWineD3DSwapChain : IWineD3DBase
+{
+    void Destroy(
+        [in] D3DCB_DESTROYSURFACEFN destroy_surface_callback
+    );
+    HRESULT GetDevice(
+        [out] IWineD3DDevice **device
+    );
+    HRESULT Present(
+        [in] const RECT *src_rect,
+        [in] const RECT *dst_rect,
+        [in] HWND dst_window_override,
+        [in] const RGNDATA *dirty_region,
+        [in] DWORD flags
+    );
+    HRESULT SetDestWindowOverride(
+        [in] HWND window
+    );
+    HRESULT GetFrontBufferData(
+        [in] IWineD3DSurface *dst_surface
+    );
+    HRESULT GetBackBuffer(
+        [in] UINT backbuffer_idx,
+        [in] WINED3DBACKBUFFER_TYPE backbuffer_type,
+        [out] IWineD3DSurface **backbuffer
+    );
+    HRESULT GetRasterStatus(
+        [out] WINED3DRASTER_STATUS *raster_status
+    );
+    HRESULT GetDisplayMode(
+        [out] WINED3DDISPLAYMODE *mode
+    );
+    HRESULT GetPresentParameters(
+        [out] WINED3DPRESENT_PARAMETERS *present_parameters
+    );
+    HRESULT SetGammaRamp(
+        [in] DWORD flags,
+        [in] const WINED3DGAMMARAMP *ramp
+    );
+    HRESULT GetGammaRamp(
+        [out] WINED3DGAMMARAMP *ramp
+    );
+}
+
+[
+    object,
+    local,
+    uuid(eac93065-a4df-446f-86a1-9ef2bca40a3c)
+]
+interface IWineD3DBaseShader : IWineD3DBase
+{
+    HRESULT SetFunction(
+        [in] const DWORD *function
+    );
+}
+
+[
+    object,
+    local,
+    uuid(7f7a2b60-6f30-11d9-c687-00046142c14f)
+]
+interface IWineD3DVertexShader : IWineD3DBaseShader
+{
+    HRESULT GetDevice(
+        [out] IWineD3DDevice **device
+    );
+    HRESULT GetFunction(
+        [out] void *data,
+        [in, out] UINT *data_size
+    );
+    void FakeSemantics(
+        [in] IWineD3DVertexDeclaration *vertex_declaration
+    );
+    HRESULT SetLocalConstantsF(
+        [in] UINT start_idx,
+        [in] const float *src_data,
+        [in] UINT vector4f_count
+    );
+}
+
+[
+    object,
+    local,
+    uuid(818503da-6f30-11d9-c687-00046142c14f)
+]
+interface IWineD3DPixelShader : IWineD3DBaseShader
+{
+    HRESULT UpdateSamplers(
+    );
+    HRESULT GetDevice(
+        [out] IWineD3DDevice **device
+    );
+    HRESULT GetFunction(
+        [out] void *data,
+        [in, out] UINT *data_size
+    );
+}
+
+[
+    object,
+    local,
+    uuid(6d10a2ce-09d0-4a53-a427-11388f9f8ca5)
+]
+interface IWineD3DDevice : IWineD3DBase
+{
+    HRESULT CreateVertexBuffer(
+        [in] UINT length,
+        [in] DWORD usage,
+        [in] DWORD fvf,
+        [in] WINED3DPOOL pool,
+        [out] IWineD3DVertexBuffer **vertex_buffer,
+        [in] HANDLE *shared_handle,
+        [in] IUnknown *parent
+    );
+    HRESULT CreateIndexBuffer(
+        [in] UINT length,
+        [in] DWORD usage,
+        [in] WINED3DFORMAT format,
+        [in] WINED3DPOOL pool,
+        [out] IWineD3DIndexBuffer **index_buffer,
+        [in] HANDLE *shared_handle,
+        [in] IUnknown *parent
+    );
+    HRESULT CreateStateBlock(
+        [in] WINED3DSTATEBLOCKTYPE type,
+        [out] IWineD3DStateBlock **stateblock,
+        [in] IUnknown *parent
+    );
+    HRESULT CreateSurface(
+        [in] UINT width,
+        [in] UINT height,
+        [in] WINED3DFORMAT format,
+        [in] BOOL lockable,
+        [in] BOOL discard,
+        [in] UINT level,
+        [out] IWineD3DSurface **surface,
+        [in] WINED3DRESOURCETYPE resource_type,
+        [in] DWORD usage,
+        [in] WINED3DPOOL pool,
+        [in] WINED3DMULTISAMPLE_TYPE multisample_type,
+        [in] DWORD multisample_quality,
+        [in] HANDLE *shared_handle,
+        [in] WINED3DSURFTYPE surface_type,
+        [in] IUnknown *parent
+    );
+    HRESULT CreateTexture(
+        [in] UINT width,
+        [in] UINT height,
+        [in] UINT levels,
+        [in] DWORD usage,
+        [in] WINED3DFORMAT format,
+        [in] WINED3DPOOL pool,
+        [out] IWineD3DTexture **texture,
+        [in] HANDLE *shared_handle,
+        [in] IUnknown *parent,
+        [in] D3DCB_CREATESURFACEFN create_surface_callback
+    );
+    HRESULT CreateVolumeTexture(
+        [in] UINT width,
+        [in] UINT height,
+        [in] UINT depth,
+        [in] UINT levels,
+        [in] DWORD usage,
+        [in] WINED3DFORMAT format,
+        [in] WINED3DPOOL pool,
+        [out] IWineD3DVolumeTexture **texture,
+        [in] HANDLE *shared_handle,
+        [in] IUnknown *parent,
+        [in] D3DCB_CREATEVOLUMEFN create_volume_callback
+    );
+    HRESULT CreateVolume(
+        [in] UINT width,
+        [in] UINT height,
+        [in] UINT depth,
+        [in] DWORD usage,
+        [in] WINED3DFORMAT format,
+        [in] WINED3DPOOL pool,
+        [out] IWineD3DVolume **volume,
+        [in] HANDLE *shared_handle,
+        [in] IUnknown *parent
+    );
+    HRESULT CreateCubeTexture(
+        [in] UINT edge_length,
+        [in] UINT levels,
+        [in] DWORD usage,
+        [in] WINED3DFORMAT format,
+        [in] WINED3DPOOL pool,
+        [out] IWineD3DCubeTexture **texture,
+        [in] HANDLE *shared_handle,
+        [in] IUnknown *parent,
+        [in] D3DCB_CREATESURFACEFN create_surface_callback
+    );
+    HRESULT CreateQuery(
+        [in] WINED3DQUERYTYPE type,
+        [out] IWineD3DQuery **query,
+        [in] IUnknown *parent
+    );
+    HRESULT CreateSwapChain(
+        [in] WINED3DPRESENT_PARAMETERS *present_parameters,
+        [out] IWineD3DSwapChain **swapchain,
+        [in] IUnknown *parent,
+        [in] D3DCB_CREATERENDERTARGETFN create_render_target_callback,
+        [in] D3DCB_CREATEDEPTHSTENCILSURFACEFN create_depth_stencil_callback,
+        [in] WINED3DSURFTYPE surface_type
+    );
+    HRESULT CreateVertexDeclaration(
+        [out] IWineD3DVertexDeclaration **declaration,
+        [in] IUnknown *parent,
+        [in] const WINED3DVERTEXELEMENT *elements,
+        [in] UINT element_count
+    );
+    HRESULT CreateVertexDeclarationFromFVF(
+        [out] IWineD3DVertexDeclaration **declaration,
+        [in] IUnknown *parent,
+        [in] DWORD fvf
+    );
+    HRESULT CreateVertexShader(
+        [in] IWineD3DVertexDeclaration *declaration,
+        [in] const DWORD *function,
+        [out] IWineD3DVertexShader **shader,
+        [in] IUnknown *parent
+    );
+    HRESULT CreatePixelShader(
+        [in] const DWORD *function,
+        [out] IWineD3DPixelShader **shader,
+        [in] IUnknown *parent
+    );
+    HRESULT CreatePalette(
+        [in] DWORD flags,
+        [in] const PALETTEENTRY *palette_entry,
+        [out] IWineD3DPalette **palette,
+        [in] IUnknown *parent
+    );
+    HRESULT Init3D(
+        [in] WINED3DPRESENT_PARAMETERS *present_parameters,
+        [in] D3DCB_CREATESWAPCHAIN create_swapchain_callback
+    );
+    HRESULT InitGDI(
+        [in] WINED3DPRESENT_PARAMETERS *present_parameters,
+        [in] D3DCB_CREATESWAPCHAIN create_swapchain_callback
+    );
+    HRESULT Uninit3D(
+        [in] D3DCB_DESTROYSURFACEFN destroy_surface_callback,
+        [in] D3DCB_DESTROYSWAPCHAINFN destroy_swapchain_callback
+    );
+    HRESULT UninitGDI(
+        [in] D3DCB_DESTROYSWAPCHAINFN destroy_swapchain_callback
+    );
+    void SetMultithreaded(
+    );
+    HRESULT EvictManagedResources(
+    );
+    UINT GetAvailableTextureMem(
+    );
+    HRESULT GetBackBuffer(
+        [in] UINT swapchain_idx,
+        [in] UINT backbuffer_idx,
+        [in] WINED3DBACKBUFFER_TYPE backbuffer_type,
+        [out] IWineD3DSurface **backbuffer
+    );
+    HRESULT GetCreationParameters(
+        [out] WINED3DDEVICE_CREATION_PARAMETERS *creation_parameters
+    );
+    HRESULT GetDeviceCaps(
+        [out] WINED3DCAPS *caps
+    );
+    HRESULT GetDirect3D(
+        [out] IWineD3D** d3d
+    );
+    HRESULT GetDisplayMode(
+        [in] UINT swapchain_idx,
+        [out] WINED3DDISPLAYMODE *mode
+    );
+    HRESULT SetDisplayMode(
+        [in] UINT swapchain_idx,
+        [in] const WINED3DDISPLAYMODE *mode
+    );
+    UINT GetNumberOfSwapChains(
+    );
+    HRESULT GetRasterStatus(
+        [in] UINT swapchain_idx,
+        [out] WINED3DRASTER_STATUS *raster_status
+    );
+    HRESULT GetSwapChain(
+        [in] UINT swapchain_idx,
+        [out] IWineD3DSwapChain **swapchain
+    );
+    HRESULT Reset(
+        [in] WINED3DPRESENT_PARAMETERS *present_parameters
+    );
+    HRESULT SetDialogBoxMode(
+        [in] BOOL enable_dialogs
+    );
+    HRESULT SetCursorProperties(
+        [in] UINT x_hotspot,
+        [in] UINT y_hotspot,
+        [in] IWineD3DSurface *cursor_surface
+    );
+    void SetCursorPosition(
+        [in] int x_screen_space,
+        [in] int y_screen_space,
+        [in] DWORD flags
+    );
+    BOOL ShowCursor(
+        [in] BOOL show
+    );
+    HRESULT TestCooperativeLevel(
+    );
+    HRESULT SetClipPlane(
+        [in] DWORD plane_idx,
+        [in] const float *plane
+    );
+    HRESULT GetClipPlane(
+        [in] DWORD plane_idx,
+        [out] float *plane
+    );
+    HRESULT SetClipStatus(
+        [in] const WINED3DCLIPSTATUS *clip_status
+    );
+    HRESULT GetClipStatus(
+        [out] WINED3DCLIPSTATUS *clip_status
+    );
+    HRESULT SetCurrentTexturePalette(
+        [in] UINT palette_number
+    );
+    HRESULT GetCurrentTexturePalette(
+        [out] UINT *palette_number
+    );
+    HRESULT SetDepthStencilSurface(
+        [in] IWineD3DSurface *depth_stencil
+    );
+    HRESULT GetDepthStencilSurface(
+        [out] IWineD3DSurface **depth_stencil
+    );
+    HRESULT SetFVF(
+        [in] DWORD fvf
+    );
+    HRESULT GetFVF(
+        [out] DWORD *fvf
+    );
+    void SetGammaRamp(
+        [in] UINT swapchain_idx,
+        [in] DWORD flags,
+        [in] const WINED3DGAMMARAMP *ramp
+    );
+    void GetGammaRamp(
+        [in] UINT swapchain_idx,
+        [out] WINED3DGAMMARAMP *ramp
+    );
+    HRESULT SetIndices(
+        [in] IWineD3DIndexBuffer *index_buffer
+    );
+    HRESULT GetIndices(
+        [out] IWineD3DIndexBuffer **index_buffer
+    );
+    HRESULT SetBaseVertexIndex(
+        [in] INT base_index
+    );
+    HRESULT GetBaseVertexIndex(
+        [out] INT *base_index
+    );
+    HRESULT SetLight(
+        [in] DWORD light_idx,
+        [in] const WINED3DLIGHT *light
+    );
+    HRESULT GetLight(
+        [in] DWORD light_idx,
+        [out] WINED3DLIGHT *light
+    );
+    HRESULT SetLightEnable(
+        [in] DWORD light_idx,
+        [in] BOOL enable
+    );
+    HRESULT GetLightEnable(
+        [in] DWORD light_idx,
+        [out] BOOL *enable
+    );
+    HRESULT SetMaterial(
+        [in] const WINED3DMATERIAL *material
+    );
+    HRESULT GetMaterial(
+        [out] WINED3DMATERIAL *material
+    );
+    HRESULT SetNPatchMode(
+        [in] float segments
+    );
+    float GetNPatchMode(
+    );
+    HRESULT SetPaletteEntries(
+        [in] UINT palette_number,
+        [in] const PALETTEENTRY *entries
+    );
+    HRESULT GetPaletteEntries(
+        [in] UINT palette_number,
+        [out] PALETTEENTRY *entries
+    );
+    HRESULT SetPixelShader(
+        [in] IWineD3DPixelShader *shader
+    );
+    HRESULT GetPixelShader(
+        [out] IWineD3DPixelShader **shader
+    );
+    HRESULT SetPixelShaderConstantB(
+        [in] UINT start_register,
+        [in] const BOOL *constants,
+        [in] UINT bool_count
+    );
+    HRESULT GetPixelShaderConstantB(
+        [in] UINT start_register,
+        [out] BOOL *constants,
+        [in] UINT bool_count
+    );
+    HRESULT SetPixelShaderConstantI(
+        [in] UINT start_register,
+        [in] const int *constants,
+        [in] UINT vector4i_count
+    );
+    HRESULT GetPixelShaderConstantI(
+        [in] UINT start_register,
+        [out] int *constants,
+        [in] UINT vector4i_count
+    );
+    HRESULT SetPixelShaderConstantF(
+        [in] UINT start_register,
+        [in] const float *constants,
+        [in] UINT vector4f_count
+    );
+    HRESULT GetPixelShaderConstantF(
+        [in] UINT start_register,
+        [out] float *constants,
+        [in] UINT vector4f_count
+    );
+    HRESULT SetRenderState(
+        [in] WINED3DRENDERSTATETYPE state,
+        [in] DWORD value
+    );
+    HRESULT GetRenderState(
+        [in] WINED3DRENDERSTATETYPE state,
+        [out] DWORD *value
+    );
+    HRESULT SetRenderTarget(
+        [in] DWORD render_target_idx,
+        [in] IWineD3DSurface *render_target
+    );
+    HRESULT GetRenderTarget(
+        [in] DWORD render_target_idx,
+        [out] IWineD3DSurface **render_target
+    );
+    HRESULT SetFrontBackBuffers(
+        [in] IWineD3DSurface *front,
+        [in] IWineD3DSurface *back
+    );
+    HRESULT SetSamplerState(
+        [in] DWORD sampler_idx,
+        [in] WINED3DSAMPLERSTATETYPE state,
+        [in] DWORD value
+    );
+    HRESULT GetSamplerState(
+        [in] DWORD sampler_idx,
+        [in] WINED3DSAMPLERSTATETYPE state,
+        [out] DWORD *value
+    );
+    HRESULT SetScissorRect(
+        [in] const RECT *rect
+    );
+    HRESULT GetScissorRect(
+        [out] RECT *rect
+    );
+    HRESULT SetSoftwareVertexProcessing(
+        [in] BOOL software
+    );
+    BOOL GetSoftwareVertexProcessing(
+    );
+    HRESULT SetStreamSource(
+        [in] UINT stream_idx,
+        [in] IWineD3DVertexBuffer *vertex_buffer,
+        [in] UINT offset,
+        [in] UINT stride
+    );
+    HRESULT GetStreamSource(
+        [in] UINT stream_idx,
+        [out] IWineD3DVertexBuffer **vertex_buffer,
+        [out] UINT *offset,
+        [out] UINT *stride
+    );
+    HRESULT SetStreamSourceFreq(
+        [in] UINT stream_idx,
+        [in] UINT divider
+    );
+    HRESULT GetStreamSourceFreq(
+        [in] UINT stream_idx,
+        [out] UINT *divider
+    );
+    HRESULT SetTexture(
+        [in] DWORD stage,
+        [in] IWineD3DBaseTexture *texture
+    );
+    HRESULT GetTexture(
+        [in] DWORD stage,
+        [out] IWineD3DBaseTexture **texture
+    );
+    HRESULT SetTextureStageState(
+        [in] DWORD stage,
+        [in] WINED3DTEXTURESTAGESTATETYPE state,
+        [in] DWORD value
+    );
+    HRESULT GetTextureStageState(
+        [in] DWORD stage,
+        [in] WINED3DTEXTURESTAGESTATETYPE state,
+        [out] DWORD *value
+    );
+    HRESULT SetTransform(
+        [in] WINED3DTRANSFORMSTATETYPE state,
+        [in] const WINED3DMATRIX *matrix
+    );
+    HRESULT GetTransform(
+        [in] WINED3DTRANSFORMSTATETYPE state,
+        [out] WINED3DMATRIX *matrix
+    );
+    HRESULT SetVertexDeclaration(
+        [in] IWineD3DVertexDeclaration *declaration
+    );
+    HRESULT GetVertexDeclaration(
+        [out] IWineD3DVertexDeclaration **declaration
+    );
+    HRESULT SetVertexShader(
+        [in] IWineD3DVertexShader *shader
+    );
+    HRESULT GetVertexShader(
+        [out] IWineD3DVertexShader **shader
+    );
+    HRESULT SetVertexShaderConstantB(
+        [in] UINT start_register,
+        [in] const BOOL *constants,
+        [in] UINT bool_count
+    );
+    HRESULT GetVertexShaderConstantB(
+        [in] UINT start_register,
+        [out] BOOL *constants,
+        [in] UINT bool_count
+    );
+    HRESULT SetVertexShaderConstantI(
+        [in] UINT start_register,
+        [in] const int *constants,
+        [in] UINT vector4i_count
+    );
+    HRESULT GetVertexShaderConstantI(
+        [in] UINT start_register,
+        [out] int *constants,
+        [in] UINT vector4i_count
+    );
+    HRESULT SetVertexShaderConstantF(
+        [in] UINT start_register,
+        [in] const float *constants,
+        [in] UINT vector4f_count
+    );
+    HRESULT GetVertexShaderConstantF(
+        [in] UINT start_register,
+        [out] float *constants,
+        [in] UINT vector4f_count
+    );
+    HRESULT SetViewport(
+        [in] const WINED3DVIEWPORT *viewport
+    );
+    HRESULT GetViewport(
+        [out] WINED3DVIEWPORT *viewport
+    );
+    HRESULT MultiplyTransform(
+        [in] WINED3DTRANSFORMSTATETYPE state,
+        [in] const WINED3DMATRIX *matrix
+    );
+    HRESULT ValidateDevice(
+        [out] DWORD *num_passes
+    );
+    HRESULT ProcessVertices(
+        [in] UINT src_start_idx,
+        [in] UINT dst_idx,
+        [in] UINT vertex_count,
+        [in] IWineD3DVertexBuffer *dest_buffer,
+        [in] IWineD3DVertexDeclaration *declaration,
+        [in] DWORD flags
+    );
+    HRESULT BeginStateBlock(
+    );
+    HRESULT EndStateBlock(
+        [out] IWineD3DStateBlock **stateblock
+    );
+    HRESULT BeginScene(
+    );
+    HRESULT EndScene(
+    );
+    HRESULT Present(
+        [in] const RECT *src_rect,
+        [in] const RECT *dst_rect,
+        [in] HWND dst_window_override,
+        [in] const RGNDATA *dirty_region
+    );
+    HRESULT Clear(
+        [in] DWORD rect_count,
+        [in] const WINED3DRECT *rects,
+        [in] DWORD flags,
+        [in] WINED3DCOLOR color,
+        [in] float z,
+        [in] DWORD stencil
+    );
+    HRESULT DrawPrimitive(
+        [in] WINED3DPRIMITIVETYPE primitive_type,
+        [in] UINT start_vertex,
+        [in] UINT primitive_count
+    );
+    HRESULT DrawIndexedPrimitive(
+        [in] WINED3DPRIMITIVETYPE primitive_type,
+        [in] UINT min_vertex_idx,
+        [in] UINT vertex_count,
+        [in] UINT start_idx,
+        [in] UINT primitive_count
+    );
+    HRESULT DrawPrimitiveUP(
+        [in] WINED3DPRIMITIVETYPE primitive_type,
+        [in] UINT primitive_count,
+        [in] const void *stream_data,
+        [in] UINT stream_stride
+    );
+    HRESULT DrawIndexedPrimitiveUP(
+        [in] WINED3DPRIMITIVETYPE primitive_type,
+        [in] UINT min_vertex_idx,
+        [in] UINT vertex_count,
+        [in] UINT primitive_count,
+        [in] const void *index_data,
+        [in] WINED3DFORMAT index_data_format,
+        [in] const void *stream_data,
+        [in] UINT stream_stride
+    );
+    HRESULT DrawPrimitiveStrided(
+        [in] WINED3DPRIMITIVETYPE primitive_type,
+        [in] UINT primitive_count,
+        [in] const WineDirect3DVertexStridedData *strided_data
+    );
+    HRESULT DrawIndexedPrimitiveStrided(
+        [in] WINED3DPRIMITIVETYPE primitive_type,
+        [in] UINT primitive_count,
+        [in] const WineDirect3DVertexStridedData *strided_data,
+        [in] UINT vertex_count,
+        [in] const void *index_data,
+        [in] WINED3DFORMAT index_data_format
+    );
+    HRESULT DrawRectPatch(
+        [in] UINT handle,
+        [in] const float *num_segs,
+        [in] const WINED3DRECTPATCH_INFO *rect_patch_info
+    );
+    HRESULT DrawTriPatch(
+        [in] UINT handle,
+        [in] const float *num_segs,
+        [in] const WINED3DTRIPATCH_INFO *tri_patch_info
+    );
+    HRESULT DeletePatch(
+        [in] UINT handle
+    );
+    HRESULT ColorFill(
+        [in] IWineD3DSurface *surface,
+        [in] const WINED3DRECT *rect,
+        [in] WINED3DCOLOR color
+    );
+    HRESULT UpdateTexture(
+        [in] IWineD3DBaseTexture *src_texture,
+        [in] IWineD3DBaseTexture *dst_texture
+    );
+    HRESULT UpdateSurface(
+        [in] IWineD3DSurface *src_surface,
+        [in] const RECT *src_rect,
+        [in] IWineD3DSurface *dst_surface,
+        [in] const POINT *dst_point
+    );
+    HRESULT GetFrontBufferData(
+        [in] UINT swapchain_idx,
+        [in] IWineD3DSurface *dst_surface
+    );
+    void ResourceReleased(
+        [in] IWineD3DResource *resource
+    );
+    HRESULT EnumResources(
+        [in] D3DCB_ENUMRESOURCES callback,
+        [in] void *data
+    );
+}
+
+IWineD3D *WineDirect3DCreate(UINT dxVersion, IUnknown *parent);
+IWineD3DClipper *WineDirect3DCreateClipper(IUnknown *parent);
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/wingdi16.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/wingdi16.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/wingdi16.h	(revision 16410)
@@ -0,0 +1,620 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINE_WINGDI16_H
+#define __WINE_WINE_WINGDI16_H
+
+#include <stdarg.h>
+#include <windef.h>
+#include <winbase.h>
+#include <wingdi.h>
+#include <wine/winbase16.h>
+
+#include <pshpack1.h>
+
+typedef HANDLE16 HPQ16;
+typedef HANDLE16 HPJOB16;
+
+typedef struct
+{
+    WORD   wFirst;
+    WORD   wSecond;
+    INT16  iKernAmount;
+} KERNINGPAIR16, *LPKERNINGPAIR16;
+
+typedef struct
+{
+    INT16  bmType;
+    INT16  bmWidth;
+    INT16  bmHeight;
+    INT16  bmWidthBytes;
+    BYTE   bmPlanes;
+    BYTE   bmBitsPixel;
+    SEGPTR bmBits;
+} BITMAP16, *LPBITMAP16;
+
+typedef struct
+{
+    UINT16     lbStyle;
+    COLORREF   lbColor;
+    INT16      lbHatch;
+} LOGBRUSH16, *LPLOGBRUSH16;
+
+typedef struct
+{
+    INT16  lfHeight;
+    INT16  lfWidth;
+    INT16  lfEscapement;
+    INT16  lfOrientation;
+    INT16  lfWeight;
+    BYTE   lfItalic;
+    BYTE   lfUnderline;
+    BYTE   lfStrikeOut;
+    BYTE   lfCharSet;
+    BYTE   lfOutPrecision;
+    BYTE   lfClipPrecision;
+    BYTE   lfQuality;
+    BYTE   lfPitchAndFamily;
+    CHAR   lfFaceName[LF_FACESIZE];
+} LOGFONT16, *LPLOGFONT16;
+
+typedef struct
+{
+  LOGFONT16  elfLogFont;
+  BYTE       elfFullName[LF_FULLFACESIZE];
+  BYTE       elfStyle[LF_FACESIZE];
+} ENUMLOGFONT16, *LPENUMLOGFONT16;
+
+typedef struct
+{
+  LOGFONT16  elfLogFont;
+  BYTE       elfFullName[LF_FULLFACESIZE];
+  BYTE       elfStyle[LF_FACESIZE];
+  BYTE       elfScript[LF_FACESIZE];
+} ENUMLOGFONTEX16, *LPENUMLOGFONTEX16;
+
+typedef struct
+{
+    INT16  txfHeight;
+    INT16  txfWidth;
+    INT16  txfEscapement;
+    INT16  txfOrientation;
+    INT16  txfWeight;
+    CHAR   txfItalic;
+    CHAR   txfUnderline;
+    CHAR   txfStrikeOut;
+    CHAR   txfOutPrecision;
+    CHAR   txfClipPrecision;
+    INT16  txfAccelerator;
+    INT16  txfOverhang;
+} TEXTXFORM16, *LPTEXTXFORM16;
+
+typedef struct
+{
+    INT16 dfType;
+    INT16 dfPoints;
+    INT16 dfVertRes;
+    INT16 dfHorizRes;
+    INT16 dfAscent;
+    INT16 dfInternalLeading;
+    INT16 dfExternalLeading;
+    CHAR  dfItalic;
+    CHAR  dfUnderline;
+    CHAR  dfStrikeOut;
+    INT16 dfWeight;
+    BYTE  dfCharSet;
+    INT16 dfPixWidth;
+    INT16 dfPixHeight;
+    CHAR  dfPitchAndFamily;
+    INT16 dfAvgWidth;
+    INT16 dfMaxWidth;
+    CHAR  dfFirstChar;
+    CHAR  dfLastChar;
+    CHAR  dfDefaultChar;
+    CHAR  dfBreakChar;
+    INT16 dfWidthBytes;
+    LONG  dfDevice;
+    LONG  dfFace;
+    LONG  dfBitsPointer;
+    LONG  dfBitsOffset;
+    CHAR  dfReserved;
+    /* Fields, introduced for Windows 3.x fonts */
+    LONG  dfFlags;
+    INT16 dfAspace;
+    INT16 dfBspace;
+    INT16 dfCspace;
+    LONG  dfColorPointer;
+    LONG  dfReserved1[4];
+} FONTINFO16, *LPFONTINFO16;
+
+typedef struct {
+    WORD   dfVersion;
+    DWORD  dfSize;
+    CHAR   dfCopyright[60];
+    WORD   dfType;
+    WORD   dfPoints;
+    WORD   dfVertRes;
+    WORD   dfHorizRes;
+    WORD   dfAscent;
+    WORD   dfInternalLeading;
+    WORD   dfExternalLeading;
+    BYTE   dfItalic;
+    BYTE   dfUnderline;
+    BYTE   dfStrikeOut;
+    WORD   dfWeight;
+    BYTE   dfCharSet;
+    WORD   dfPixWidth;
+    WORD   dfPixHeight;
+    BYTE   dfPitchAndFamily;
+    WORD   dfAvgWidth;
+    WORD   dfMaxWidth;
+    BYTE   dfFirstChar;
+    BYTE   dfLastChar;
+    BYTE   dfDefaultChar;
+    BYTE   dfBreakChar;
+    WORD   dfWidthBytes;
+    DWORD  dfDevice;
+    DWORD  dfFace;
+    DWORD  dfReserved;
+    CHAR   szDeviceName[60]; /* FIXME: length unknown */
+    CHAR   szFaceName[60];   /* ditto */
+} FONTDIR16, *LPFONTDIR16;
+
+typedef struct
+{
+    INT16     tmHeight;
+    INT16     tmAscent;
+    INT16     tmDescent;
+    INT16     tmInternalLeading;
+    INT16     tmExternalLeading;
+    INT16     tmAveCharWidth;
+    INT16     tmMaxCharWidth;
+    INT16     tmWeight;
+    BYTE      tmItalic;
+    BYTE      tmUnderlined;
+    BYTE      tmStruckOut;
+    BYTE      tmFirstChar;
+    BYTE      tmLastChar;
+    BYTE      tmDefaultChar;
+    BYTE      tmBreakChar;
+    BYTE      tmPitchAndFamily;
+    BYTE      tmCharSet;
+    INT16     tmOverhang;
+    INT16     tmDigitizedAspectX;
+    INT16     tmDigitizedAspectY;
+} TEXTMETRIC16, *LPTEXTMETRIC16;
+
+typedef struct _OUTLINETEXTMETRIC16
+{
+    UINT16          otmSize;
+    TEXTMETRIC16    otmTextMetrics;
+    BYTE            otmFiller;
+    PANOSE          otmPanoseNumber;
+    UINT16          otmfsSelection;
+    UINT16          otmfsType;
+    INT16           otmsCharSlopeRise;
+    INT16           otmsCharSlopeRun;
+    INT16           otmItalicAngle;
+    UINT16          otmEMSquare;
+    INT16           otmAscent;
+    INT16           otmDescent;
+    UINT16          otmLineGap;
+    UINT16          otmsCapEmHeight;
+    UINT16          otmsXHeight;
+    RECT16          otmrcFontBox;
+    INT16           otmMacAscent;
+    INT16           otmMacDescent;
+    UINT16          otmMacLineGap;
+    UINT16          otmusMinimumPPEM;
+    POINT16         otmptSubscriptSize;
+    POINT16         otmptSubscriptOffset;
+    POINT16         otmptSuperscriptSize;
+    POINT16         otmptSuperscriptOffset;
+    UINT16          otmsStrikeoutSize;
+    INT16           otmsStrikeoutPosition;
+    INT16           otmsUnderscoreSize;
+    INT           otmsUnderscorePosition;
+    LPSTR           otmpFamilyName;
+    LPSTR           otmpFaceName;
+    LPSTR           otmpStyleName;
+    LPSTR           otmpFullName;
+} OUTLINETEXTMETRIC16,*LPOUTLINETEXTMETRIC16;
+
+typedef struct
+{
+    INT16     tmHeight;
+    INT16     tmAscent;
+    INT16     tmDescent;
+    INT16     tmInternalLeading;
+    INT16     tmExternalLeading;
+    INT16     tmAveCharWidth;
+    INT16     tmMaxCharWidth;
+    INT16     tmWeight;
+    BYTE      tmItalic;
+    BYTE      tmUnderlined;
+    BYTE      tmStruckOut;
+    BYTE      tmFirstChar;
+    BYTE      tmLastChar;
+    BYTE      tmDefaultChar;
+    BYTE      tmBreakChar;
+    BYTE      tmPitchAndFamily;
+    BYTE      tmCharSet;
+    INT16     tmOverhang;
+    INT16     tmDigitizedAspectX;
+    INT16     tmDigitizedAspectY;
+    DWORD     ntmFlags;
+    UINT16    ntmSizeEM;
+    UINT16    ntmCellHeight;
+    UINT16    ntmAvgWidth;
+} NEWTEXTMETRIC16,*LPNEWTEXTMETRIC16;
+
+typedef struct
+{
+    NEWTEXTMETRIC16	ntmTm;
+    FONTSIGNATURE       ntmFontSig;
+} NEWTEXTMETRICEX16,*LPNEWTEXTMETRICEX16;
+
+typedef INT16 (CALLBACK *FONTENUMPROC16)(SEGPTR,SEGPTR,UINT16,LPARAM);
+typedef VOID  (CALLBACK *LINEDDAPROC16)(INT16,INT16,LPARAM);
+typedef INT16 (CALLBACK *GOBJENUMPROC16)(SEGPTR,LPARAM);
+
+
+typedef struct
+{
+    UINT16	gmBlackBoxX;
+    UINT16	gmBlackBoxY;
+    POINT16	gmptGlyphOrigin;
+    INT16	gmCellIncX;
+    INT16	gmCellIncY;
+} GLYPHMETRICS16, *LPGLYPHMETRICS16;
+
+typedef struct
+{
+    INT16   abcA;
+    UINT16  abcB;
+    INT16   abcC;
+} ABC16, *LPABC16;
+
+typedef struct
+{
+    UINT16   lopnStyle;
+    POINT16  lopnWidth;
+    COLORREF lopnColor;
+} LOGPEN16, *LPLOGPEN16;
+
+typedef struct
+{
+    HGDIOBJ16 objectHandle[1];
+} HANDLETABLE16, *LPHANDLETABLE16;
+
+typedef struct
+{
+    INT16        mm;
+    INT16        xExt;
+    INT16        yExt;
+    HMETAFILE16  hMF;
+} METAFILEPICT16, *LPMETAFILEPICT16;
+
+typedef INT16 (CALLBACK *MFENUMPROC16)(HDC16,HANDLETABLE16*,METARECORD*,
+                                       INT16,LPARAM);
+typedef struct
+{
+    INT16    cbSize;
+    SEGPTR   lpszDocName;
+    SEGPTR   lpszOutput;
+    SEGPTR   lpszDatatype;
+    DWORD    fwType;
+} DOCINFO16, *LPDOCINFO16;
+
+typedef BOOL16 (CALLBACK *ABORTPROC16)(HDC16, INT16);
+
+#define INT_PD_DEFAULT_DEVMODE  1
+#define INT_PD_DEFAULT_MODEL    2
+
+/* Escape: CLIP_TO_PATH modes */
+#define CLIP_SAVE 0
+#define CLIP_RESTORE 1
+#define CLIP_INCLUSIVE 2
+#define CLIP_EXCLUSIVE 3
+
+/* Escape: END_PATH info */
+struct PATH_INFO {
+    short RenderMode;
+    BYTE FillMode;
+    BYTE BkMode;
+    LOGPEN16 Pen;
+    LOGBRUSH16 Brush;
+    DWORD BkColor;
+};
+
+/* RenderMode */
+#define RENDERMODE_NO_DISPLAY 0
+#define RENDERMODE_OPEN 1
+#define RENDERMODE_CLOSED 2
+
+/* For DRAWPATTERNRECT Escape, 16bit mode */
+typedef struct _DRAWPATRECT16
+{
+    POINT16	ptPosition;
+    POINT16	ptSize;
+    WORD	wStyle;
+    WORD	wPattern;
+} DRAWPATRECT16, *PDRAWPATRECT16;
+
+#include <poppack.h>
+
+
+INT16       WINAPI AbortDoc16(HDC16);
+BOOL16      WINAPI AbortPath16(HDC16);
+INT16       WINAPI AddFontResource16(LPCSTR);
+void        WINAPI AnimatePalette16(HPALETTE16,UINT16,UINT16,const PALETTEENTRY*);
+BOOL16      WINAPI Arc16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16);
+BOOL16      WINAPI BeginPath16(HDC16);
+BOOL16      WINAPI BitBlt16(HDC16,INT16,INT16,INT16,INT16,HDC16,INT16,INT16,DWORD);
+BOOL16      WINAPI Chord16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16);
+BOOL16      WINAPI CloseFigure16(HDC16);
+INT16       WINAPI CloseJob16(HPJOB16);
+HMETAFILE16 WINAPI CloseMetaFile16(HDC16);
+INT16       WINAPI CombineRgn16(HRGN16,HRGN16,HRGN16,INT16);
+HMETAFILE16 WINAPI CopyMetaFile16(HMETAFILE16,LPCSTR);
+HBITMAP16   WINAPI CreateBitmap16(INT16,INT16,UINT16,UINT16,LPCVOID);
+HBITMAP16   WINAPI CreateBitmapIndirect16(const BITMAP16*);
+HBRUSH16    WINAPI CreateBrushIndirect16(const LOGBRUSH16*);
+HBITMAP16   WINAPI CreateCompatibleBitmap16(HDC16,INT16,INT16);
+HDC16       WINAPI CreateCompatibleDC16(HDC16);
+HDC16       WINAPI CreateDC16(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
+HBITMAP16   WINAPI CreateDIBitmap16(HDC16,const BITMAPINFOHEADER*,DWORD,
+                                    LPCVOID,const BITMAPINFO*,UINT16);
+HBRUSH16    WINAPI CreateDIBPatternBrush16(HGLOBAL16,UINT16);
+HBITMAP16   WINAPI CreateDIBSection16 (HDC16, const BITMAPINFO *, UINT16,
+				       SEGPTR *, HANDLE, DWORD offset);
+HBITMAP16   WINAPI CreateDiscardableBitmap16(HDC16,INT16,INT16);
+HRGN16      WINAPI CreateEllipticRgn16(INT16,INT16,INT16,INT16);
+HRGN16      WINAPI CreateEllipticRgnIndirect16(const RECT16 *);
+HFONT16     WINAPI CreateFont16(INT16,INT16,INT16,INT16,INT16,BYTE,BYTE,BYTE,
+                                BYTE,BYTE,BYTE,BYTE,BYTE,LPCSTR);
+HFONT16     WINAPI CreateFontIndirect16(const LOGFONT16*);
+HPALETTE16  WINAPI CreateHalftonePalette16(HDC16);
+HBRUSH16    WINAPI CreateHatchBrush16(INT16,COLORREF);
+HDC16       WINAPI CreateIC16(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
+HDC16       WINAPI CreateMetaFile16(LPCSTR);
+HPALETTE16  WINAPI CreatePalette16(const LOGPALETTE*);
+HBRUSH16    WINAPI CreatePatternBrush16(HBITMAP16);
+HPEN16      WINAPI CreatePen16(INT16,INT16,COLORREF);
+HPEN16      WINAPI CreatePenIndirect16(const LOGPEN16*);
+HRGN16      WINAPI CreatePolyPolygonRgn16(const POINT16*,const INT16*,INT16,INT16);
+HRGN16      WINAPI CreatePolygonRgn16(const POINT16*,INT16,INT16);
+HRGN16      WINAPI CreateRectRgn16(INT16,INT16,INT16,INT16);
+HRGN16      WINAPI CreateRectRgnIndirect16(const RECT16*);
+HRGN16      WINAPI CreateRoundRectRgn16(INT16,INT16,INT16,INT16,INT16,INT16);
+BOOL16      WINAPI CreateScalableFontResource16(UINT16,LPCSTR,LPCSTR,LPCSTR);
+HBRUSH16    WINAPI CreateSolidBrush16(COLORREF);
+VOID        WINAPI Death16(HDC16);
+BOOL16      WINAPI DeleteDC16(HDC16);
+INT16       WINAPI DeleteJob16(HPJOB16,INT16);
+BOOL16      WINAPI DeleteMetaFile16(HMETAFILE16);
+BOOL16      WINAPI DeleteObject16(HGDIOBJ16);
+BOOL16      WINAPI DPtoLP16(HDC16,LPPOINT16,INT16);
+DWORD       WINAPI DrvGetPrinterData16(LPSTR,LPSTR,LPDWORD,LPBYTE,int cbData,LPDWORD);
+DWORD       WINAPI DrvSetPrinterData16(LPSTR,LPSTR,DWORD,LPBYTE,DWORD);
+BOOL16      WINAPI Ellipse16(HDC16,INT16,INT16,INT16,INT16);
+INT16       WINAPI EndDoc16(HDC16);
+INT16       WINAPI EndPage16(HDC16);
+BOOL16      WINAPI EndPath16(HDC16);
+INT16       WINAPI EndSpoolPage16(HPJOB16);
+INT16       WINAPI EnumFontFamilies16(HDC16,LPCSTR,FONTENUMPROC16,LPARAM);
+INT16       WINAPI EnumFontFamiliesEx16(HDC16,LPLOGFONT16,FONTENUMPROC16,LPARAM,DWORD);
+INT16       WINAPI EnumFonts16(HDC16,LPCSTR,FONTENUMPROC16,LPARAM);
+BOOL16      WINAPI EnumMetaFile16(HDC16,HMETAFILE16,MFENUMPROC16,LPARAM);
+INT16       WINAPI EnumObjects16(HDC16,INT16,GOBJENUMPROC16,LPARAM);
+BOOL16      WINAPI EqualRgn16(HRGN16,HRGN16);
+INT16       WINAPI Escape16(HDC16,INT16,INT16,SEGPTR,LPVOID);
+INT16       WINAPI ExcludeClipRect16(HDC16,INT16,INT16,INT16,INT16);
+INT16       WINAPI ExcludeVisRect16(HDC16,INT16,INT16,INT16,INT16);
+HPEN16      WINAPI ExtCreatePen16(DWORD,DWORD,const LOGBRUSH16*,DWORD,const DWORD*);
+BOOL16      WINAPI ExtFloodFill16(HDC16,INT16,INT16,COLORREF,UINT16);
+BOOL16      WINAPI ExtTextOut16(HDC16,INT16,INT16,UINT16,const RECT16*,
+                                LPCSTR,UINT16,const INT16*);
+BOOL16      WINAPI FastWindowFrame16(HDC16,const RECT16*,INT16,INT16,DWORD);
+BOOL16      WINAPI FillPath16(HDC16);
+BOOL16      WINAPI FillRgn16(HDC16,HRGN16,HBRUSH16);
+BOOL16      WINAPI FlattenPath16(HDC16);
+BOOL16      WINAPI FloodFill16(HDC16,INT16,INT16,COLORREF);
+BOOL16      WINAPI FrameRgn16(HDC16,HRGN16,HBRUSH16,INT16,INT16);
+UINT16      WINAPI GDIRealizePalette16(HDC16);
+DWORD       WINAPI GdiSeeGdiDo16(WORD,WORD,WORD,WORD);
+HPALETTE16  WINAPI GDISelectPalette16(HDC16,HPALETTE16,WORD);
+INT16       WINAPI GetArcDirection16(HDC16);
+BOOL16      WINAPI GetAspectRatioFilterEx16(HDC16,LPSIZE16);
+LONG        WINAPI GetBitmapBits16(HBITMAP16,LONG,LPVOID);
+DWORD       WINAPI GetBitmapDimension16(HBITMAP16);
+BOOL16      WINAPI GetBitmapDimensionEx16(HBITMAP16,LPSIZE16);
+DWORD       WINAPI GetBrushOrg16(HDC16);
+BOOL16      WINAPI GetBrushOrgEx16(HDC16,LPPOINT16);
+COLORREF    WINAPI GetBkColor16(HDC16);
+INT16       WINAPI GetBkMode16(HDC16);
+UINT16      WINAPI GetBoundsRect16(HDC16,LPRECT16,UINT16);
+BOOL16      WINAPI GetCharABCWidths16(HDC16,UINT16,UINT16,LPABC16);
+BOOL16      WINAPI GetCharWidth16(HDC16,UINT16,UINT16,LPINT16);
+INT16       WINAPI GetClipBox16(HDC16,LPRECT16);
+HRGN16      WINAPI GetClipRgn16(HDC16);
+HFONT16     WINAPI GetCurLogFont16(HDC16);
+DWORD       WINAPI GetCurrentPosition16(HDC16);
+BOOL16      WINAPI GetCurrentPositionEx16(HDC16,LPPOINT16);
+DWORD       WINAPI GetDCHook16(HDC16,FARPROC16*);
+DWORD       WINAPI GetDCOrg16(HDC16);
+HDC16       WINAPI GetDCState16(HDC16);
+INT16       WINAPI GetDeviceCaps16(HDC16,INT16);
+UINT16      WINAPI GetDIBColorTable16(HDC16,UINT16,UINT16,RGBQUAD*);
+INT16       WINAPI GetDIBits16(HDC16,HBITMAP16,UINT16,UINT16,LPVOID,LPBITMAPINFO,UINT16);
+INT16       WINAPI GetEnvironment16(LPCSTR,LPDEVMODEA,UINT16);
+DWORD       WINAPI GetFontData16(HDC16,DWORD,DWORD,LPVOID,DWORD);
+DWORD       WINAPI GetFontLanguageInfo16(HDC16);
+DWORD       WINAPI GetGlyphOutline16(HDC16,UINT16,UINT16,LPGLYPHMETRICS16,DWORD,LPVOID,const MAT2*);
+INT16       WINAPI GetKerningPairs16(HDC16,INT16,LPKERNINGPAIR16);
+INT16       WINAPI GetMapMode16(HDC16);
+HMETAFILE16 WINAPI GetMetaFile16(LPCSTR);
+HGLOBAL16   WINAPI GetMetaFileBits16(HMETAFILE16);
+DWORD       WINAPI GetNearestColor16(HDC16,DWORD);
+UINT16      WINAPI GetNearestPaletteIndex16(HPALETTE16,COLORREF);
+INT16       WINAPI GetObject16(HANDLE16,INT16,LPVOID);
+UINT16      WINAPI GetOutlineTextMetrics16(HDC16,UINT16,LPOUTLINETEXTMETRIC16);
+UINT16      WINAPI GetPaletteEntries16(HPALETTE16,UINT16,UINT16,LPPALETTEENTRY);
+INT16       WINAPI GetPath16(HDC16,LPPOINT16,LPBYTE,INT16);
+COLORREF    WINAPI GetPixel16(HDC16,INT16,INT16);
+INT16       WINAPI GetPolyFillMode16(HDC16);
+BOOL16      WINAPI GetRasterizerCaps16(LPRASTERIZER_STATUS,UINT16);
+DWORD       WINAPI GetRegionData16(HRGN16,DWORD,LPRGNDATA);
+INT16       WINAPI GetRelAbs16(HDC16);
+INT16       WINAPI GetRgnBox16(HRGN16,LPRECT16);
+INT16       WINAPI GetROP216(HDC16);
+DWORD       WINAPI GetSpoolJob16(int,LONG);
+HGDIOBJ16   WINAPI GetStockObject16(INT16);
+INT16       WINAPI GetStretchBltMode16(HDC16);
+UINT16      WINAPI GetSystemPaletteEntries16(HDC16,UINT16,UINT16,LPPALETTEENTRY);
+UINT16      WINAPI GetSystemPaletteUse16(HDC16);
+UINT16      WINAPI GetTextAlign16(HDC16);
+INT16       WINAPI GetTextCharacterExtra16(HDC16);
+UINT16      WINAPI GetTextCharset16(HDC16);
+COLORREF    WINAPI GetTextColor16(HDC16);
+DWORD       WINAPI GetTextExtent16(HDC16,LPCSTR,INT16);
+BOOL16      WINAPI GetTextExtentPoint16(HDC16,LPCSTR,INT16,LPSIZE16);
+INT16       WINAPI GetTextFace16(HDC16,INT16,LPSTR);
+BOOL16      WINAPI GetTextMetrics16(HDC16,LPTEXTMETRIC16);
+DWORD       WINAPI GetViewportExt16(HDC16);
+BOOL16      WINAPI GetViewportExtEx16(HDC16,LPSIZE16);
+BOOL16      WINAPI GetViewportOrgEx16(HDC16,LPPOINT16);
+DWORD       WINAPI GetViewportOrg16(HDC16);
+DWORD       WINAPI GetWindowExt16(HDC16);
+DWORD       WINAPI GetWindowOrg16(HDC16);
+BOOL16      WINAPI GetWindowExtEx16(HDC16,LPSIZE16);
+BOOL16      WINAPI GetWindowOrgEx16(HDC16,LPPOINT16);
+HRGN16      WINAPI InquireVisRgn16(HDC16);
+INT16       WINAPI IntersectClipRect16(HDC16,INT16,INT16,INT16,INT16);
+INT16       WINAPI IntersectVisRect16(HDC16,INT16,INT16,INT16,INT16);
+BOOL16      WINAPI InvertRgn16(HDC16,HRGN16);
+BOOL16      WINAPI IsDCCurrentPalette16(HDC16);
+BOOL16      WINAPI IsGDIObject16(HGDIOBJ16);
+BOOL16      WINAPI IsValidMetaFile16(HMETAFILE16);
+VOID        WINAPI LineDDA16(INT16,INT16,INT16,INT16,LINEDDAPROC16,LPARAM);
+BOOL16      WINAPI LineTo16(HDC16,INT16,INT16);
+BOOL16      WINAPI LPtoDP16(HDC16,LPPOINT16,INT16);
+DWORD       WINAPI MoveTo16(HDC16,INT16,INT16);
+BOOL16      WINAPI MoveToEx16(HDC16,INT16,INT16,LPPOINT16);
+INT16       WINAPI MulDiv16(INT16,INT16,INT16);
+INT16       WINAPI OffsetClipRgn16(HDC16,INT16,INT16);
+INT16       WINAPI OffsetRgn16(HRGN16,INT16,INT16);
+DWORD       WINAPI OffsetViewportOrg16(HDC16,INT16,INT16);
+BOOL16      WINAPI OffsetViewportOrgEx16(HDC16,INT16,INT16,LPPOINT16);
+INT16       WINAPI OffsetVisRgn16(HDC16,INT16,INT16);
+DWORD       WINAPI OffsetWindowOrg16(HDC16,INT16,INT16);
+BOOL16      WINAPI OffsetWindowOrgEx16(HDC16,INT16,INT16,LPPOINT16);
+HANDLE16    WINAPI OpenJob16(LPCSTR,LPCSTR,HDC16);
+BOOL16      WINAPI PaintRgn16(HDC16,HRGN16);
+BOOL16      WINAPI PatBlt16(HDC16,INT16,INT16,INT16,INT16,DWORD);
+HRGN16      WINAPI PathToRegion16(HDC16);
+BOOL16      WINAPI Pie16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16);
+BOOL16      WINAPI PlayMetaFile16(HDC16,HMETAFILE16);
+VOID        WINAPI PlayMetaFileRecord16(HDC16,LPHANDLETABLE16,LPMETARECORD,UINT16);
+BOOL16      WINAPI PolyBezier16(HDC16,const POINT16*,INT16);
+BOOL16      WINAPI PolyBezierTo16(HDC16,const POINT16*,INT16);
+BOOL16      WINAPI PolyPolygon16(HDC16,const POINT16*,const INT16*,UINT16);
+BOOL16      WINAPI Polygon16(HDC16,const POINT16*,INT16);
+BOOL16      WINAPI Polyline16(HDC16,const POINT16*,INT16);
+BOOL16      WINAPI PtInRegion16(HRGN16,INT16,INT16);
+BOOL16      WINAPI PtVisible16(HDC16,INT16,INT16);
+BOOL16      WINAPI QueryAbort16(HDC16,INT16);
+UINT16      WINAPI RealizeDefaultPalette16(HDC16);
+BOOL16      WINAPI Rectangle16(HDC16,INT16,INT16,INT16,INT16);
+BOOL16      WINAPI RectInRegion16(HRGN16,const RECT16 *);
+BOOL16      WINAPI RectVisible16(HDC16,const RECT16*);
+BOOL16      WINAPI RemoveFontResource16(LPCSTR);
+HDC16       WINAPI ResetDC16(HDC16,const DEVMODEA *);
+BOOL16      WINAPI ResizePalette16(HPALETTE16,UINT16);
+BOOL16      WINAPI RestoreDC16(HDC16,INT16);
+INT16       WINAPI RestoreVisRgn16(HDC16);
+VOID        WINAPI Resurrection16(HDC16,WORD,WORD,WORD,WORD,WORD,WORD);
+BOOL16      WINAPI RoundRect16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16);
+INT16       WINAPI SaveDC16(HDC16);
+HRGN16      WINAPI SaveVisRgn16(HDC16);
+DWORD       WINAPI ScaleViewportExt16(HDC16,INT16,INT16,INT16,INT16);
+BOOL16      WINAPI ScaleViewportExtEx16(HDC16,INT16,INT16,INT16,INT16,LPSIZE16);
+DWORD       WINAPI ScaleWindowExt16(HDC16,INT16,INT16,INT16,INT16);
+BOOL16      WINAPI ScaleWindowExtEx16(HDC16,INT16,INT16,INT16,INT16,LPSIZE16);
+BOOL16      WINAPI SelectClipPath16(HDC16,INT16);
+INT16       WINAPI SelectClipRgn16(HDC16,HRGN16);
+HGDIOBJ16   WINAPI SelectObject16(HDC16,HGDIOBJ16);
+INT16       WINAPI SelectVisRgn16(HDC16,HRGN16);
+INT16       WINAPI SetAbortProc16(HDC16,ABORTPROC16);
+INT16       WINAPI SetArcDirection16(HDC16,INT16);
+LONG        WINAPI SetBitmapBits16(HBITMAP16,LONG,LPCVOID);
+DWORD       WINAPI SetBitmapDimension16(HBITMAP16,INT16,INT16);
+BOOL16      WINAPI SetBitmapDimensionEx16(HBITMAP16,INT16,INT16,LPSIZE16);
+COLORREF    WINAPI SetBkColor16(HDC16,COLORREF);
+INT16       WINAPI SetBkMode16(HDC16,INT16);
+UINT16      WINAPI SetBoundsRect16(HDC16,const RECT16*,UINT16);
+DWORD       WINAPI SetBrushOrg16(HDC16,INT16,INT16);
+BOOL16      WINAPI SetDCHook16(HDC16,FARPROC16,DWORD);
+DWORD       WINAPI SetDCOrg16(HDC16,INT16,INT16);
+VOID        WINAPI SetDCState16(HDC16,HDC16);
+UINT16      WINAPI SetDIBColorTable16(HDC16,UINT16,UINT16,RGBQUAD*);
+INT16       WINAPI SetDIBits16(HDC16,HBITMAP16,UINT16,UINT16,LPCVOID,const BITMAPINFO*,UINT16);
+INT16       WINAPI SetDIBitsToDevice16(HDC16,INT16,INT16,INT16,INT16,INT16,
+                         INT16,UINT16,UINT16,LPCVOID,const BITMAPINFO*,UINT16);
+INT16       WINAPI SetEnvironment16(LPCSTR,LPDEVMODEA,UINT16);
+WORD        WINAPI SetHookFlags16(HDC16,WORD);
+INT16       WINAPI SetMapMode16(HDC16,INT16);
+DWORD       WINAPI SetMapperFlags16(HDC16,DWORD);
+HMETAFILE16 WINAPI SetMetaFileBits16(HGLOBAL16);
+UINT16      WINAPI SetPaletteEntries16(HPALETTE16,UINT16,UINT16,const PALETTEENTRY*);
+COLORREF    WINAPI SetPixel16(HDC16,INT16,INT16,COLORREF);
+INT16       WINAPI SetPolyFillMode16(HDC16,INT16);
+VOID        WINAPI SetRectRgn16(HRGN16,INT16,INT16,INT16,INT16);
+INT16       WINAPI SetRelAbs16(HDC16,INT16);
+INT16       WINAPI SetROP216(HDC16,INT16);
+INT16       WINAPI SetStretchBltMode16(HDC16,INT16);
+UINT16      WINAPI SetSystemPaletteUse16(HDC16,UINT16);
+UINT16      WINAPI SetTextAlign16(HDC16,UINT16);
+INT16       WINAPI SetTextCharacterExtra16(HDC16,INT16);
+COLORREF    WINAPI SetTextColor16(HDC16,COLORREF);
+INT16       WINAPI SetTextJustification16(HDC16,INT16,INT16);
+DWORD       WINAPI SetViewportExt16(HDC16,INT16,INT16);
+BOOL16      WINAPI SetViewportExtEx16(HDC16,INT16,INT16,LPSIZE16);
+DWORD       WINAPI SetViewportOrg16(HDC16,INT16,INT16);
+BOOL16      WINAPI SetViewportOrgEx16(HDC16,INT16,INT16,LPPOINT16);
+DWORD       WINAPI SetWindowExt16(HDC16,INT16,INT16);
+BOOL16      WINAPI SetWindowExtEx16(HDC16,INT16,INT16,LPSIZE16);
+DWORD       WINAPI SetWindowOrg16(HDC16,INT16,INT16);
+BOOL16      WINAPI SetWindowOrgEx16(HDC16,INT16,INT16,LPPOINT16);
+INT16       WINAPI StartDoc16(HDC16,const DOCINFO16*);
+INT16       WINAPI StartPage16(HDC16);
+INT16       WINAPI StartSpoolPage16(HPJOB16);
+BOOL16      WINAPI StretchBlt16(HDC16,INT16,INT16,INT16,INT16,HDC16,INT16,
+                                INT16,INT16,INT16,DWORD);
+INT16       WINAPI StretchDIBits16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16,
+                       INT16,INT16,const VOID*,const BITMAPINFO*,UINT16,DWORD);
+BOOL16      WINAPI StrokeAndFillPath16(HDC16);
+BOOL16      WINAPI StrokePath16(HDC16);
+BOOL16      WINAPI TextOut16(HDC16,INT16,INT16,LPCSTR,INT16);
+BOOL16      WINAPI UnrealizeObject16(HGDIOBJ16);
+INT16       WINAPI UpdateColors16(HDC16);
+BOOL16      WINAPI WidenPath16(HDC16);
+INT16       WINAPI WriteDialog16(HPJOB16,LPSTR,INT16);
+INT16       WINAPI WriteSpool16(HPJOB16,LPSTR,INT16);
+
+#endif /* __WINE_WINE_WINGDI16_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/winnet16.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/winnet16.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/winnet16.h	(revision 16410)
@@ -0,0 +1,288 @@
+/*
+ * Definitions for windows network service
+ *
+ * Copyright 1997 Andreas Mohr
+ * Copyright 1999 Ulrich Weigand
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINNET16_H
+#define __WINE_WINNET16_H
+
+#include <windef.h>
+#include <wine/windef16.h>
+
+#include <pshpack1.h>
+
+/*
+ * Remote printing
+ */
+
+typedef struct
+{
+    WORD    pqName;
+    WORD    pqComment;
+    WORD    pqStatus;
+    WORD    pqJobcount;
+    WORD    pqPrinters;
+
+} QUEUESTRUCT16, *LPQUEUESTRUCT16;
+
+#define WNPRQ_ACTIVE    0x0
+#define WNPRQ_PAUSE     0x1
+#define WNPRQ_ERROR     0x2
+#define WNPRQ_PENDING   0x3
+#define WNPRQ_PROBLEM   0x4
+
+typedef struct
+{
+    WORD    pjId;
+    WORD    pjUsername;
+    WORD    pjParms;
+    WORD    pjPosition;
+    WORD    pjStatus;
+    DWORD   pjSubmitted;
+    DWORD   pjSize;
+    WORD    pjCopies;
+    WORD    pjComment;
+
+} JOBSTRUCT16, *LPJOBSTRUCT16;
+
+#include <poppack.h>
+
+#define WNPRJ_QSTATUS           0x0007
+#define WNPRJ_DEVSTATUS         0x0FF8
+
+#define WNPRJ_QS_QUEUED         0x0000
+#define WNPRJ_QS_PAUSED         0x0001
+#define WNPRJ_QS_SPOOLING       0x0002
+#define WNPRJ_QS_PRINTING       0x0003
+
+#define WNPRJ_DS_COMPLETE       0x0008
+#define WNPRJ_DS_INTERV         0x0010
+#define WNPRJ_DS_ERROR          0x0020
+#define WNPRJ_DS_DESTOFFLINE    0x0040
+#define WNPRJ_DS_DESTPAUSED     0x0080
+#define WNPRJ_DS_NOTIFY         0x0100
+#define WNPRJ_DS_DESTNOPAPER    0x0200
+#define WNPRJ_DS_DESTFORMCHG    0x0400
+#define WNPRJ_DS_DESTCRTCHG     0x0800
+#define WNPRJ_DS_DESTPENCHG     0x1000
+
+#define SP_QUEUECHANGED         0x0500
+
+#define WNJ_NULL_JOBID  0
+
+WORD WINAPI WNetOpenJob16(LPSTR,LPSTR,WORD,LPINT16);
+WORD WINAPI WNetCloseJob16(WORD,LPINT16,LPSTR);
+WORD WINAPI WNetWriteJob16(HANDLE16,LPSTR,LPINT16);
+WORD WINAPI WNetAbortJob16(LPSTR,WORD);
+WORD WINAPI WNetHoldJob16(LPSTR,WORD);
+WORD WINAPI WNetReleaseJob16(LPSTR,WORD);
+WORD WINAPI WNetCancelJob16(LPSTR,WORD);
+WORD WINAPI WNetSetJobCopies16(LPSTR,WORD,WORD);
+
+WORD WINAPI WNetWatchQueue16(HWND16,LPSTR,LPSTR,WORD);
+WORD WINAPI WNetUnwatchQueue16(LPSTR);
+WORD WINAPI WNetLockQueueData16(LPSTR,LPSTR,LPQUEUESTRUCT16 *);
+WORD WINAPI WNetUnlockQueueData16(LPSTR);
+
+
+/*
+ * Connections
+ */
+
+WORD WINAPI WNetAddConnection16(LPCSTR,LPCSTR,LPCSTR);
+WORD WINAPI WNetCancelConnection16(LPSTR,BOOL16);
+WORD WINAPI WNetGetConnection16(LPSTR,LPSTR,UINT16 *);
+WORD WINAPI WNetRestoreConnection16(HWND16,LPSTR);
+
+/*
+ * Capabilities
+ */
+
+WORD WINAPI WNetGetCaps16(WORD);
+
+#define WNNC16_SPEC_VERSION                       0x01
+#define WNNC16_NET_TYPE                           0x02
+#define WNNC16_DRIVER_VERSION                     0x03
+#define WNNC16_USER                               0x04
+#define WNNC16_CONNECTION                         0x06
+#define WNNC16_PRINTING                           0x07
+#define WNNC16_DIALOG                             0x08
+#define WNNC16_ADMIN                              0x09
+#define WNNC16_ERROR                              0x0a
+#define WNNC16_PRINTMGREXT                        0x0b
+
+#define WNNC16_NET_NONE                           0x0
+#define WNNC16_NET_MSNet                          0x1
+#define WNNC16_NET_LanMan                         0x2
+#define WNNC16_NET_NetWare                        0x3
+#define WNNC16_NET_Vines                          0x4
+#define WNNC16_NET_10NET                          0x5
+#define WNNC16_NET_Locus                          0x6
+#define WNNC16_NET_SUN_PC_NFS                     0x7
+#define WNNC16_NET_LANstep                        0x8
+#define WNNC16_NET_9TILES                         0x9
+#define WNNC16_NET_LANtastic                      0xa
+#define WNNC16_NET_AS400                          0xb
+#define WNNC16_NET_FTP_NFS                        0xc
+#define WNNC16_NET_PATHWORKS                      0xd
+#define WNNC16_NET_LifeNet                        0xe
+#define WNNC16_NET_POWERLan                       0xf
+#define WNNC16_NET_MultiNet                       0x8000
+
+#define WNNC16_SUBNET_NONE                        0x00
+#define WNNC16_SUBNET_MSNet                       0x01
+#define WNNC16_SUBNET_LanMan                      0x02
+#define WNNC16_SUBNET_WinWorkgroups               0x04
+#define WNNC16_SUBNET_NetWare                     0x08
+#define WNNC16_SUBNET_Vines                       0x10
+#define WNNC16_SUBNET_Other                       0x80
+
+#define WNNC16_CON_AddConnection                  0x0001
+#define WNNC16_CON_CancelConnection               0x0002
+#define WNNC16_CON_GetConnections                 0x0004
+#define WNNC16_CON_AutoConnect                    0x0008
+#define WNNC16_CON_BrowseDialog                   0x0010
+#define WNNC16_CON_RestoreConnection              0x0020
+
+#define WNNC16_PRT_OpenJob                        0x0002
+#define WNNC16_PRT_CloseJob                       0x0004
+#define WNNC16_PRT_HoldJob                        0x0010
+#define WNNC16_PRT_ReleaseJob                     0x0020
+#define WNNC16_PRT_CancelJob                      0x0040
+#define WNNC16_PRT_SetJobCopies                   0x0080
+#define WNNC16_PRT_WatchQueue                     0x0100
+#define WNNC16_PRT_UnwatchQueue                   0x0200
+#define WNNC16_PRT_LockQueueData                  0x0400
+#define WNNC16_PRT_UnlockQueueData                0x0800
+#define WNNC16_PRT_ChangeMsg                      0x1000
+#define WNNC16_PRT_AbortJob                       0x2000
+#define WNNC16_PRT_NoArbitraryLock                0x4000
+#define WNNC16_PRT_WriteJob                       0x8000
+
+#define WNNC16_DLG_DeviceMode                     0x0001
+#define WNNC16_DLG_BrowseDialog                   0x0002
+#define WNNC16_DLG_ConnectDialog                  0x0004
+#define WNNC16_DLG_DisconnectDialog               0x0008
+#define WNNC16_DLG_ViewQueueDialog                0x0010
+#define WNNC16_DLG_PropertyDialog                 0x0020
+#define WNNC16_DLG_ConnectionDialog               0x0040
+#define WNNC16_DLG_PrinterConnectDialog           0x0080
+#define WNNC16_DLG_SharesDialog                   0x0100
+#define WNNC16_DLG_ShareAsDialog                  0x0200
+
+#define WNNC16_ADM_GetDirectoryType               0x0001
+#define WNNC16_ADM_DirectoryNotify                0x0002
+#define WNNC16_ADM_LongNames                      0x0004
+#define WNNC16_ADM_SetDefaultDrive                0x0008
+
+#define WNNC16_ERR_GetError                       0x0001
+#define WNNC16_ERR_GetErrorText                   0x0002
+
+
+/*
+ * Get User
+ */
+
+WORD WINAPI WNetGetUser16(LPCSTR,LPSTR,LPINT16);
+
+
+/*
+ * Browsing
+ */
+
+#define WNBD_CONN_UNKNOWN       0x0
+#define WNBD_CONN_DISKTREE      0x1
+#define WNBD_CONN_PRINTQ        0x3
+#define WNBD_MAX_LENGTH         0x80
+
+#define WNTYPE_DRIVE            1
+#define WNTYPE_FILE             2
+#define WNTYPE_PRINTER          3
+#define WNTYPE_COMM             4
+
+#define WNPS_FILE               0
+#define WNPS_DIR                1
+#define WNPS_MULT               2
+
+WORD WINAPI WNetDeviceMode16(HWND16);
+WORD WINAPI WNetBrowseDialog16(HWND16,WORD,LPSTR);
+WORD WINAPI WNetConnectDialog16(HWND16,WORD);
+WORD WINAPI WNetDisconnectDialog16(HWND16,WORD);
+WORD WINAPI WNetConnectionDialog16(HWND16,WORD);
+WORD WINAPI WNetViewQueueDialog16(HWND16,LPSTR);
+WORD WINAPI WNetPropertyDialog16(HWND16,WORD,WORD,LPSTR,WORD);
+WORD WINAPI WNetGetPropertyText16(WORD,WORD,LPSTR,LPSTR,WORD,WORD);
+
+
+/*
+ * Admin
+ */
+
+#define WNDT_NORMAL   0
+#define WNDT_NETWORK  1
+
+#define WNDN_MKDIR    1
+#define WNDN_RMDIR    2
+#define WNDN_MVDIR    3
+
+WORD WINAPI WNetGetDirectoryType16(LPSTR,LPINT16);
+WORD WINAPI WNetDirectoryNotify16(HWND16,LPSTR,WORD);
+
+
+/*
+ * Status codes
+ */
+
+WORD WINAPI WNetGetError16(LPINT16);
+WORD WINAPI WNetGetErrorText16(WORD,LPSTR,LPINT16);
+WORD WINAPI WNetErrorText16(WORD,LPSTR,WORD);
+
+#define WN16_SUCCESS                      0x0000
+#define WN16_NOT_SUPPORTED                0x0001
+#define WN16_NET_ERROR                    0x0002
+#define WN16_MORE_DATA                    0x0003
+#define WN16_BAD_POINTER                  0x0004
+#define WN16_BAD_VALUE                    0x0005
+#define WN16_BAD_PASSWORD                 0x0006
+#define WN16_ACCESS_DENIED                0x0007
+#define WN16_FUNCTION_BUSY                0x0008
+#define WN16_WINDOWS_ERROR                0x0009
+#define WN16_BAD_USER                     0x000A
+#define WN16_OUT_OF_MEMORY                0x000B
+#define WN16_CANCEL                       0x000C
+#define WN16_CONTINUE                     0x000D
+#define WN16_NOT_CONNECTED                0x0030
+#define WN16_OPEN_FILES                   0x0031
+#define WN16_BAD_NETNAME                  0x0032
+#define WN16_BAD_LOCALNAME                0x0033
+#define WN16_ALREADY_CONNECTED            0x0034
+#define WN16_DEVICE_ERROR                 0x0035
+#define WN16_CONNECTION_CLOSED            0x0036
+#define WN16_BAD_JOBID                    0x0040
+#define WN16_JOB_NOT_FOUND                0x0041
+#define WN16_JOB_NOT_HELD                 0x0042
+#define WN16_BAD_QUEUE                    0x0043
+#define WN16_BAD_FILE_HANDLE              0x0044
+#define WN16_CANT_SET_COPIES              0x0045
+#define WN16_ALREADY_LOCKED               0x0046
+#define WN16_NO_ERROR                     0x0050
+
+
+
+#endif /* __WINE_WINNET16_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/winsock16.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/winsock16.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/winsock16.h	(revision 16410)
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINE_WINSOCK16_H
+#define __WINE_WINE_WINSOCK16_H
+
+#include <stdarg.h>
+#include <windef.h>
+#include <winbase.h>
+#include <pshpack1.h>
+
+typedef UINT16 SOCKET16;
+
+typedef struct
+{
+        UINT16    fd_count;               /* how many are SET? */
+        SOCKET16  fd_array[WS_FD_SETSIZE];   /* an array of SOCKETs */
+} ws_fd_set16;
+
+/* ws_hostent16, ws_protoent16, ws_servent16, ws_netent16
+ * are 1-byte aligned here ! */
+typedef struct ws_hostent16
+{
+        SEGPTR  h_name;         /* official name of host */
+        SEGPTR  h_aliases;      /* alias list */
+        INT16   h_addrtype;     /* host address type */
+        INT16   h_length;       /* length of address */
+        SEGPTR  h_addr_list;    /* list of addresses from name server */
+} _ws_hostent16;
+
+typedef struct ws_protoent16
+{
+        SEGPTR  p_name;         /* official protocol name */
+        SEGPTR  p_aliases;      /* alias list */
+        INT16   p_proto;        /* protocol # */
+} _ws_protoent16;
+
+typedef struct ws_servent16
+{
+        SEGPTR  s_name;         /* official service name */
+        SEGPTR  s_aliases;      /* alias list */
+        INT16   s_port;         /* port # */
+        SEGPTR  s_proto;        /* protocol to use */
+} _ws_servent16;
+
+typedef struct ws_netent16
+{
+        SEGPTR  n_name;         /* official name of net */
+        SEGPTR  n_aliases;      /* alias list */
+        INT16   n_addrtype;     /* net address type */
+        INT     n_net;          /* network # */
+} _ws_netent16;
+
+typedef struct WSAData16
+{
+    WORD                    wVersion;
+    WORD                    wHighVersion;
+    char                    szDescription[WSADESCRIPTION_LEN+1];
+    char                    szSystemStatus[WSASYS_STATUS_LEN+1];
+    WORD                    iMaxSockets;
+    WORD                    iMaxUdpDg;
+    SEGPTR                  lpVendorInfo;
+} WSADATA16, *LPWSADATA16;
+
+#include <poppack.h>
+
+#define WS_FD_CLR16(fd, set)   __WS_FD_CLR((fd),(set), ws_fd_set16)
+#define WS_FD_SET16(fd, set)   __WS_FD_SET1((fd),(set), ws_fd_set16)
+#define WS_FD_ZERO16(set)      (((ws_fd_set16*)(set))->fd_count=0)
+#define WS_FD_ISSET16(fd, set) __WSAFDIsSet16((SOCKET16)(fd), (ws_fd_set16*)(set))
+
+#define INVALID_SOCKET16  ((SOCKET16)(~0))
+
+INT16     WINAPI __WSAFDIsSet16( SOCKET16, ws_fd_set16 * );
+INT16     WINAPI WSAStartup16(UINT16 wVersionRequired, LPWSADATA16 lpWSAData);
+void      WINAPI WSASetLastError16(INT16 iError);
+INT16     WINAPI WSAUnhookBlockingHook16(void);
+FARPROC16 WINAPI WSASetBlockingHook16(FARPROC16 lpBlockFunc);
+HANDLE16  WINAPI WSAAsyncGetServByName16(HWND16 hWnd, UINT16 wMsg, LPCSTR name, LPCSTR proto,
+                                         SEGPTR buf, INT16 buflen);
+HANDLE16  WINAPI WSAAsyncGetServByPort16(HWND16 hWnd, UINT16 wMsg, INT16 port,
+                                         LPCSTR proto, SEGPTR buf, INT16 buflen);
+HANDLE16  WINAPI WSAAsyncGetProtoByName16(HWND16 hWnd, UINT16 wMsg,
+                                          LPCSTR name, SEGPTR buf, INT16 buflen);
+HANDLE16  WINAPI WSAAsyncGetProtoByNumber16(HWND16 hWnd, UINT16 wMsg,
+                                            INT16 number, SEGPTR buf, INT16 buflen);
+HANDLE16  WINAPI WSAAsyncGetHostByName16(HWND16 hWnd, UINT16 wMsg,
+                                         LPCSTR name, SEGPTR buf, INT16 buflen);
+HANDLE16  WINAPI WSAAsyncGetHostByAddr16(HWND16 hWnd, UINT16 wMsg, LPCSTR addr,
+                              INT16 len, INT16 type, SEGPTR buf, INT16 buflen);
+INT16     WINAPI WSACancelAsyncRequest16(HANDLE16 hAsyncTaskHandle);
+INT16     WINAPI WSAAsyncSelect16(SOCKET16 s, HWND16 hWnd, UINT16 wMsg, LONG lEvent);
+INT16     WINAPI WSARecvEx16(SOCKET16 s, char *buf, INT16 len, INT16 *flags);
+
+#endif /* __WINE_WINE_WINSOCK16_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/winuser16.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/winuser16.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/winuser16.h	(revision 16410)
@@ -0,0 +1,977 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINE_WINUSER16_H
+#define __WINE_WINE_WINUSER16_H
+
+#include <wine/wingdi16.h> /* wingdi.h needed for COLORREF */
+#include <winuser.h> /* winuser.h needed for MSGBOXCALLBACK */
+
+#include <pshpack1.h>
+
+typedef struct tagCOMSTAT16
+{
+    BYTE   status;
+    UINT16 cbInQue;
+    UINT16 cbOutQue;
+} COMSTAT16,*LPCOMSTAT16;
+
+typedef struct tagDCB16
+{
+    BYTE   Id;
+    UINT16 BaudRate;
+    BYTE   ByteSize;
+    BYTE   Parity;
+    BYTE   StopBits;
+    UINT16 RlsTimeout;
+    UINT16 CtsTimeout;
+    UINT16 DsrTimeout;
+
+    unsigned fBinary        :1;
+    unsigned fRtsDisable    :1;
+    unsigned fParity        :1;
+    unsigned fOutxCtsFlow   :1;
+    unsigned fOutxDsrFlow   :1;
+    unsigned fDummy         :2;
+    unsigned fDtrDisable    :1;
+
+    unsigned fOutX          :1;
+    unsigned fInX           :1;
+    unsigned fPeChar        :1;
+    unsigned fNull          :1;
+    unsigned fChEvt         :1;
+    unsigned fDtrflow       :1;
+    unsigned fRtsflow       :1;
+    unsigned fDummy2        :1;
+
+    CHAR   XonChar;
+    CHAR   XoffChar;
+    UINT16 XonLim;
+    UINT16 XoffLim;
+    CHAR   PeChar;
+    CHAR   EofChar;
+    CHAR   EvtChar;
+    UINT16 TxDelay;
+} DCB16, *LPDCB16;
+
+
+typedef struct
+{
+   LPARAM   lParam;
+   WPARAM16 wParam;
+   UINT16   message;
+   HWND16   hwnd;
+} CWPSTRUCT16, *LPCWPSTRUCT16;
+
+typedef struct
+{
+  LRESULT       lResult;
+  LPARAM        lParam;
+  WPARAM16      wParam;
+  DWORD         message;
+  HWND16        hwnd;
+} CWPRETSTRUCT16, *LPCWPRETSTRUCT16;
+
+  /* SetWindowPlacement() struct */
+typedef struct
+{
+    UINT16   length;
+    UINT16   flags;
+    UINT16   showCmd;
+    POINT16  ptMinPosition;
+    POINT16  ptMaxPosition;
+    RECT16   rcNormalPosition;
+} WINDOWPLACEMENT16, *LPWINDOWPLACEMENT16;
+
+/****** Window classes ******/
+
+typedef struct
+{
+    UINT16      style;
+    WNDPROC16   lpfnWndProc;
+    INT16       cbClsExtra;
+    INT16       cbWndExtra;
+    HANDLE16    hInstance;
+    HICON16     hIcon;
+    HCURSOR16   hCursor;
+    HBRUSH16    hbrBackground;
+    SEGPTR      lpszMenuName;
+    SEGPTR      lpszClassName;
+} WNDCLASS16, *LPWNDCLASS16;
+
+typedef struct
+{
+    UINT      cbSize;
+    UINT      style;
+    WNDPROC16   lpfnWndProc;
+    INT16       cbClsExtra;
+    INT16       cbWndExtra;
+    HANDLE16    hInstance;
+    HICON16     hIcon;
+    HCURSOR16   hCursor;
+    HBRUSH16    hbrBackground;
+    SEGPTR      lpszMenuName;
+    SEGPTR      lpszClassName;
+    HICON16     hIconSm;
+} WNDCLASSEX16, *LPWNDCLASSEX16;
+
+typedef struct
+{
+    HWND16    hwnd;
+    UINT16    message;
+    WPARAM16  wParam;
+    LPARAM    lParam;
+    DWORD     time;
+    POINT16   pt;
+} MSG16, *LPMSG16;
+
+typedef struct
+{
+    MSG16 msg;
+    WORD wParamHigh;
+} MSG32_16, *LPMSG16_32;
+
+/* Cursors / Icons */
+
+typedef struct tagCURSORICONINFO
+{
+    POINT16 ptHotSpot;
+    WORD    nWidth;
+    WORD    nHeight;
+    WORD    nWidthBytes;
+    BYTE    bPlanes;
+    BYTE    bBitsPerPixel;
+} CURSORICONINFO;
+
+typedef struct {
+	BOOL16		fIcon;
+	WORD		xHotspot;
+	WORD		yHotspot;
+	HBITMAP16	hbmMask;
+	HBITMAP16	hbmColor;
+} ICONINFO16,*LPICONINFO16;
+
+typedef struct
+{
+    BYTE   fVirt;
+    WORD   key;
+    WORD   cmd;
+} ACCEL16, *LPACCEL16;
+
+/* FIXME: not sure this one is correct */
+typedef struct {
+  UINT16    cbSize;
+  UINT16    fMask;
+  UINT16    fType;
+  UINT16    fState;
+  UINT16    wID;
+  HMENU16   hSubMenu;
+  HBITMAP16 hbmpChecked;
+  HBITMAP16 hbmpUnchecked;
+  DWORD     dwItemData;
+  SEGPTR    dwTypeData;
+  UINT16    cch;
+} MENUITEMINFO16, *LPMENUITEMINFO16;
+
+/* DrawState defines ... */
+typedef BOOL16 (CALLBACK *DRAWSTATEPROC16)(HDC16,LPARAM,WPARAM16,INT16,INT16);
+
+/* Listbox messages */
+#define LB_ADDSTRING16           (WM_USER+1)
+#define LB_INSERTSTRING16        (WM_USER+2)
+#define LB_DELETESTRING16        (WM_USER+3)
+#define LB_SELITEMRANGEEX16      (WM_USER+4)
+#define LB_RESETCONTENT16        (WM_USER+5)
+#define LB_SETSEL16              (WM_USER+6)
+#define LB_SETCURSEL16           (WM_USER+7)
+#define LB_GETSEL16              (WM_USER+8)
+#define LB_GETCURSEL16           (WM_USER+9)
+#define LB_GETTEXT16             (WM_USER+10)
+#define LB_GETTEXTLEN16          (WM_USER+11)
+#define LB_GETCOUNT16            (WM_USER+12)
+#define LB_SELECTSTRING16        (WM_USER+13)
+#define LB_DIR16                 (WM_USER+14)
+#define LB_GETTOPINDEX16         (WM_USER+15)
+#define LB_FINDSTRING16          (WM_USER+16)
+#define LB_GETSELCOUNT16         (WM_USER+17)
+#define LB_GETSELITEMS16         (WM_USER+18)
+#define LB_SETTABSTOPS16         (WM_USER+19)
+#define LB_GETHORIZONTALEXTENT16 (WM_USER+20)
+#define LB_SETHORIZONTALEXTENT16 (WM_USER+21)
+#define LB_SETCOLUMNWIDTH16      (WM_USER+22)
+#define LB_ADDFILE16             (WM_USER+23)
+#define LB_SETTOPINDEX16         (WM_USER+24)
+#define LB_GETITEMRECT16         (WM_USER+25)
+#define LB_GETITEMDATA16         (WM_USER+26)
+#define LB_SETITEMDATA16         (WM_USER+27)
+#define LB_SELITEMRANGE16        (WM_USER+28)
+#define LB_SETANCHORINDEX16      (WM_USER+29)
+#define LB_GETANCHORINDEX16      (WM_USER+30)
+#define LB_SETCARETINDEX16       (WM_USER+31)
+#define LB_GETCARETINDEX16       (WM_USER+32)
+#define LB_SETITEMHEIGHT16       (WM_USER+33)
+#define LB_GETITEMHEIGHT16       (WM_USER+34)
+#define LB_FINDSTRINGEXACT16     (WM_USER+35)
+#define LB_CARETON16             (WM_USER+36)
+#define LB_CARETOFF16            (WM_USER+37)
+
+/* Combo box messages */
+#define CB_GETEDITSEL16            (WM_USER+0)
+#define CB_LIMITTEXT16             (WM_USER+1)
+#define CB_SETEDITSEL16            (WM_USER+2)
+#define CB_ADDSTRING16             (WM_USER+3)
+#define CB_DELETESTRING16          (WM_USER+4)
+#define CB_DIR16                   (WM_USER+5)
+#define CB_GETCOUNT16              (WM_USER+6)
+#define CB_GETCURSEL16             (WM_USER+7)
+#define CB_GETLBTEXT16             (WM_USER+8)
+#define CB_GETLBTEXTLEN16          (WM_USER+9)
+#define CB_INSERTSTRING16          (WM_USER+10)
+#define CB_RESETCONTENT16          (WM_USER+11)
+#define CB_FINDSTRING16            (WM_USER+12)
+#define CB_SELECTSTRING16          (WM_USER+13)
+#define CB_SETCURSEL16             (WM_USER+14)
+#define CB_SHOWDROPDOWN16          (WM_USER+15)
+#define CB_GETITEMDATA16           (WM_USER+16)
+#define CB_SETITEMDATA16           (WM_USER+17)
+#define CB_GETDROPPEDCONTROLRECT16 (WM_USER+18)
+#define CB_SETITEMHEIGHT16         (WM_USER+19)
+#define CB_GETITEMHEIGHT16         (WM_USER+20)
+#define CB_SETEXTENDEDUI16         (WM_USER+21)
+#define CB_GETEXTENDEDUI16         (WM_USER+22)
+#define CB_GETDROPPEDSTATE16       (WM_USER+23)
+#define CB_FINDSTRINGEXACT16       (WM_USER+24)
+
+typedef struct /* not sure if the 16bit version is correct */
+{
+    UINT	cbSize;
+    HWND16	hwndOwner;
+    HINSTANCE16	hInstance;
+    SEGPTR	lpszText;
+    SEGPTR	lpszCaption;
+    DWORD	dwStyle;
+    SEGPTR	lpszIcon;
+    DWORD	dwContextHelpId;
+    MSGBOXCALLBACK	lpfnMsgBoxCallback;
+    DWORD	dwLanguageId;
+} MSGBOXPARAMS16,*LPMSGBOXPARAMS16;
+
+  /* Windows */
+
+typedef struct
+{
+    SEGPTR      lpCreateParams;
+    HINSTANCE16 hInstance;
+    HMENU16     hMenu;
+    HWND16      hwndParent;
+    INT16       cy;
+    INT16       cx;
+    INT16       y;
+    INT16       x;
+    LONG        style;
+    SEGPTR      lpszName;
+    SEGPTR      lpszClass;
+    DWORD       dwExStyle;
+} CREATESTRUCT16, *LPCREATESTRUCT16;
+
+typedef struct
+{
+    HDC16   hdc;
+    BOOL16  fErase;
+    RECT16  rcPaint;
+    BOOL16  fRestore;
+    BOOL16  fIncUpdate;
+    BYTE    rgbReserved[16];
+} PAINTSTRUCT16, *LPPAINTSTRUCT16;
+
+typedef struct
+{
+    HMENU16   hWindowMenu;
+    UINT16    idFirstChild;
+} CLIENTCREATESTRUCT16, *LPCLIENTCREATESTRUCT16;
+
+typedef struct
+{
+    SEGPTR       szClass;
+    SEGPTR       szTitle;
+    HINSTANCE16  hOwner;
+    INT16        x;
+    INT16        y;
+    INT16        cx;
+    INT16        cy;
+    DWORD        style;
+    LPARAM       lParam;
+} MDICREATESTRUCT16, *LPMDICREATESTRUCT16;
+
+  /* WM_GETMINMAXINFO struct */
+typedef struct
+{
+    POINT16   ptReserved;
+    POINT16   ptMaxSize;
+    POINT16   ptMaxPosition;
+    POINT16   ptMinTrackSize;
+    POINT16   ptMaxTrackSize;
+} MINMAXINFO16;
+
+  /* WM_WINDOWPOSCHANGING/CHANGED struct */
+typedef struct tagWINDOWPOS16
+{
+    HWND16  hwnd;
+    HWND16  hwndInsertAfter;
+    INT16   x;
+    INT16   y;
+    INT16   cx;
+    INT16   cy;
+    UINT16  flags;
+} WINDOWPOS16, *LPWINDOWPOS16;
+
+  /* WM_NCCALCSIZE parameter structure */
+typedef struct
+{
+    RECT16  rgrc[3];
+    SEGPTR  lppos;
+} NCCALCSIZE_PARAMS16, *LPNCCALCSIZE_PARAMS16;
+
+typedef struct {
+	UINT16		cbSize;
+	INT16		iBorderWidth;
+	INT16		iScrollWidth;
+	INT16		iScrollHeight;
+	INT16		iCaptionWidth;
+	INT16		iCaptionHeight;
+	LOGFONT16	lfCaptionFont;
+	INT16		iSmCaptionWidth;
+	INT16		iSmCaptionHeight;
+	LOGFONT16	lfSmCaptionFont;
+	INT16		iMenuWidth;
+	INT16		iMenuHeight;
+	LOGFONT16	lfMenuFont;
+	LOGFONT16	lfStatusFont;
+	LOGFONT16	lfMessageFont;
+} NONCLIENTMETRICS16,*LPNONCLIENTMETRICS16;
+
+  /* Journalling hook structure */
+
+typedef struct
+{
+    UINT16  message;
+    UINT16  paramL;
+    UINT16  paramH;
+    DWORD   time;
+} EVENTMSG16, *LPEVENTMSG16;
+
+  /* Mouse hook structure */
+
+typedef struct
+{
+    POINT16 pt;
+    HWND16  hwnd;
+    UINT16  wHitTestCode;
+    DWORD   dwExtraInfo;
+} MOUSEHOOKSTRUCT16, *LPMOUSEHOOKSTRUCT16;
+
+  /* Hardware hook structure */
+
+typedef struct
+{
+    HWND16    hWnd;
+    UINT16    wMessage;
+    WPARAM16  wParam;
+    LPARAM    lParam;
+} HARDWAREHOOKSTRUCT16, *LPHARDWAREHOOKSTRUCT16;
+
+/* Scrollbar messages */
+#define SBM_SETPOS16             (WM_USER+0)
+#define SBM_GETPOS16             (WM_USER+1)
+#define SBM_SETRANGE16           (WM_USER+2)
+#define SBM_GETRANGE16           (WM_USER+3)
+#define SBM_ENABLE_ARROWS16      (WM_USER+4)
+#define SBM_SETRANGEREDRAW16     WM_NULL  /* Not in Win16 */
+#define SBM_SETSCROLLINFO16      WM_NULL  /* Not in Win16 */
+#define SBM_GETSCROLLINFO16      WM_NULL  /* Not in Win16 */
+
+  /* CBT hook structures */
+
+typedef struct
+{
+    CREATESTRUCT16  *lpcs;
+    HWND16           hwndInsertAfter;
+} CBT_CREATEWND16, *LPCBT_CREATEWND16;
+
+typedef struct
+{
+    BOOL16    fMouse;
+    HWND16    hWndActive;
+} CBTACTIVATESTRUCT16, *LPCBTACTIVATESTRUCT16;
+
+  /* Debug hook structure */
+
+typedef struct
+{
+    HMODULE16   hModuleHook;
+    LPARAM      reserved;
+    LPARAM      lParam;
+    WPARAM16    wParam;
+    INT16       code;
+} DEBUGHOOKINFO16, *LPDEBUGHOOKINFO16;
+
+#define GETMAXLPT	8
+#define GETMAXCOM	9
+#define GETBASEIRQ	10
+
+/* GetFreeSystemResources() parameters */
+
+#define GFSR_SYSTEMRESOURCES   0x0000
+#define GFSR_GDIRESOURCES      0x0001
+#define GFSR_USERRESOURCES     0x0002
+
+/* CreateWindow() coordinates */
+#define CW_USEDEFAULT16 ((INT16)0x8000)
+
+/* Win16 button control messages */
+#define BM_GETCHECK16          (WM_USER+0)
+#define BM_SETCHECK16          (WM_USER+1)
+#define BM_GETSTATE16          (WM_USER+2)
+#define BM_SETSTATE16          (WM_USER+3)
+#define BM_SETSTYLE16          (WM_USER+4)
+#define BM_CLICK16             WM_NULL  /* Does not exist in Win16 */
+#define BM_GETIMAGE16          WM_NULL  /* Does not exist in Win16 */
+#define BM_SETIMAGE16          WM_NULL  /* Does not exist in Win16 */
+
+/* Static Control Messages */
+#define STM_SETICON16       (WM_USER+0)
+#define STM_GETICON16       (WM_USER+1)
+
+/* Edit control messages */
+#define EM_GETSEL16                (WM_USER+0)
+#define EM_SETSEL16                (WM_USER+1)
+#define EM_GETRECT16               (WM_USER+2)
+#define EM_SETRECT16               (WM_USER+3)
+#define EM_SETRECTNP16             (WM_USER+4)
+#define EM_SCROLL16                (WM_USER+5)
+#define EM_LINESCROLL16            (WM_USER+6)
+#define EM_SCROLLCARET16           (WM_USER+7)
+#define EM_GETMODIFY16             (WM_USER+8)
+#define EM_SETMODIFY16             (WM_USER+9)
+#define EM_GETLINECOUNT16          (WM_USER+10)
+#define EM_LINEINDEX16             (WM_USER+11)
+#define EM_SETHANDLE16             (WM_USER+12)
+#define EM_GETHANDLE16             (WM_USER+13)
+#define EM_GETTHUMB16              (WM_USER+14)
+#define EM_LINELENGTH16            (WM_USER+17)
+#define EM_REPLACESEL16            (WM_USER+18)
+#define EM_GETLINE16               (WM_USER+20)
+#define EM_LIMITTEXT16             (WM_USER+21)
+#define EM_CANUNDO16               (WM_USER+22)
+#define EM_UNDO16                  (WM_USER+23)
+#define EM_FMTLINES16              (WM_USER+24)
+#define EM_LINEFROMCHAR16          (WM_USER+25)
+#define EM_SETTABSTOPS16           (WM_USER+27)
+#define EM_SETPASSWORDCHAR16       (WM_USER+28)
+#define EM_EMPTYUNDOBUFFER16       (WM_USER+29)
+#define EM_GETFIRSTVISIBLELINE16   (WM_USER+30)
+#define EM_SETREADONLY16           (WM_USER+31)
+#define EM_SETWORDBREAKPROC16      (WM_USER+32)
+#define EM_GETWORDBREAKPROC16      (WM_USER+33)
+#define EM_GETPASSWORDCHAR16       (WM_USER+34)
+/*
+  not in win16:
+    EM_SETMARGINS16            WM_NULL
+    EM_GETMARGINS16            WM_NULL
+    EM_GETLIMITTEXT16          WM_NULL
+    EM_POSFROMCHAR16           WM_NULL
+    EM_CHARFROMPOS16           WM_NULL
+    EM_SETLIMITTEXT16          WM_NULL - no name change in win16
+*/
+
+typedef struct
+{
+    UINT16      CtlType;
+    UINT16      CtlID;
+    UINT16      itemID;
+    UINT16      itemAction;
+    UINT16      itemState;
+    HWND16      hwndItem;
+    HDC16       hDC;
+    RECT16      rcItem;
+    DWORD       itemData;
+} DRAWITEMSTRUCT16, *PDRAWITEMSTRUCT16, *LPDRAWITEMSTRUCT16;
+
+typedef struct
+{
+    UINT16      CtlType;
+    UINT16      CtlID;
+    UINT16      itemID;
+    UINT16      itemWidth;
+    UINT16      itemHeight;
+    DWORD       itemData;
+} MEASUREITEMSTRUCT16, *PMEASUREITEMSTRUCT16, *LPMEASUREITEMSTRUCT16;
+
+typedef struct
+{
+    UINT16     CtlType;
+    UINT16     CtlID;
+    UINT16     itemID;
+    HWND16     hwndItem;
+    DWORD      itemData;
+} DELETEITEMSTRUCT16, *LPDELETEITEMSTRUCT16;
+
+typedef struct
+{
+    UINT16      CtlType;
+    UINT16      CtlID;
+    HWND16      hwndItem;
+    UINT16      itemID1;
+    DWORD       itemData1;
+    UINT16      itemID2;
+    DWORD       itemData2;
+} COMPAREITEMSTRUCT16, *LPCOMPAREITEMSTRUCT16;
+
+/* DragObject stuff */
+
+typedef struct
+{
+    HWND16     hWnd;
+    HANDLE16   hScope;
+    WORD       wFlags;
+    HANDLE16   hList;
+    HANDLE16   hOfStruct;
+    POINT16    pt;
+    LONG       l;
+} DRAGINFO16, *LPDRAGINFO16;
+
+/* undocumented */
+typedef struct tagCOPYDATASTRUCT16 {
+    DWORD dwData;
+    DWORD cbData;
+    SEGPTR lpData;
+} COPYDATASTRUCT16, *PCOPYDATASTRUCT16;
+
+#define DRAGOBJ_PROGRAM    0x0001
+#define DRAGOBJ_DATA       0x0002
+#define DRAGOBJ_DIRECTORY  0x0004
+#define DRAGOBJ_MULTIPLE   0x0008
+#define DRAGOBJ_EXTERNAL   0x8000
+
+#define DRAG_PRINT 0x544E5250
+#define DRAG_FILE  0x454C4946
+
+#include <poppack.h>
+
+/* WM_COMMNOTIFY flags */
+#define CN_RECEIVE	0x0001
+#define CN_TRANSMIT	0x0002
+#define CN_EVENT	0x0004
+
+BOOL16      WINAPI CheckMenuRadioItem16(HMENU16,UINT16,UINT16,UINT16,UINT16);
+HICON16     WINAPI CopyImage16(HANDLE16,UINT16,INT16,INT16,UINT16);
+HICON16     WINAPI CreateIconFromResource16(LPBYTE,UINT16,BOOL16,DWORD);
+BOOL16      WINAPI EnumChildWindows16(HWND16,WNDENUMPROC16,LPARAM);
+INT16       WINAPI EnumProps16(HWND16,PROPENUMPROC16);
+BOOL16      WINAPI EnumWindows16(WNDENUMPROC16,LPARAM);
+DWORD       WINAPI GetAppCompatFlags16(HTASK16);
+INT16       WINAPI GetKBCodePage16(void);
+INT16       WINAPI GetKeyboardType16(INT16);
+INT16       WINAPI GetKeyNameText16(LONG,LPSTR,INT16);
+INT16       WINAPI GetWindowRgn16(HWND16,HRGN16);
+BOOL16      WINAPI IsWindow16(HWND16);
+INT16       WINAPI LookupIconIdFromDirectory16(LPBYTE,BOOL16);
+UINT16      WINAPI MapVirtualKey16(UINT16,UINT16);
+FARPROC16   WINAPI SetWindowsHook16(INT16,HOOKPROC16);
+HHOOK       WINAPI SetWindowsHookEx16(INT16,HOOKPROC16,HINSTANCE16,HTASK16);
+BOOL16      WINAPI UnhookWindowsHook16(INT16,HOOKPROC16);
+BOOL16      WINAPI UnhookWindowsHookEx16(HHOOK);
+VOID        WINAPI CalcChildScroll16(HWND16,WORD);
+VOID        WINAPI CascadeChildWindows16(HWND16,WORD);
+INT16       WINAPI CloseComm16(INT16);
+HGLOBAL16   WINAPI CreateCursorIconIndirect16(HINSTANCE16,CURSORICONINFO*,
+                                            LPCVOID,LPCVOID);
+BOOL16      WINAPI DCHook16(HDC16,WORD,DWORD,LPARAM);
+BOOL16      WINAPI DlgDirSelect16(HWND16,LPSTR,INT16);
+BOOL16      WINAPI DlgDirSelectComboBox16(HWND16,LPSTR,INT16);
+DWORD       WINAPI DumpIcon16(SEGPTR,WORD*,SEGPTR*,SEGPTR*);
+BOOL16      WINAPI EnableCommNotification16(INT16,HWND16,INT16,INT16);
+BOOL16      WINAPI EnableHardwareInput16(BOOL16);
+VOID        WINAPI FillWindow16(HWND16,HWND16,HDC16,HBRUSH16);
+INT16       WINAPI FlushComm16(INT16,INT16);
+UINT16      WINAPI GetCommEventMask16(INT16,UINT16);
+HBRUSH16    WINAPI GetControlBrush16(HWND16,HDC16,UINT16);
+HWND16      WINAPI GetDesktopHwnd16(void);
+WORD        WINAPI GetIconID16(HGLOBAL16,DWORD);
+FARPROC16   WINAPI GetMouseEventProc16(void);
+INT16       WINAPI InitApp16(HINSTANCE16);
+BOOL16      WINAPI IsUserIdle16(void);
+HGLOBAL16   WINAPI LoadCursorIconHandler16(HGLOBAL16,HMODULE16,HRSRC16);
+HGLOBAL16   WINAPI LoadDIBCursorHandler16(HGLOBAL16,HMODULE16,HRSRC16);
+HGLOBAL16   WINAPI LoadDIBIconHandler16(HGLOBAL16,HMODULE16,HRSRC16);
+HICON16     WINAPI LoadIconHandler16(HGLOBAL16,BOOL16);
+HMENU16     WINAPI LookupMenuHandle16(HMENU16,INT16);
+INT16       WINAPI OpenComm16(LPCSTR,UINT16,UINT16);
+VOID        WINAPI PaintRect16(HWND16,HWND16,HDC16,HBRUSH16,const RECT16*);
+INT16       WINAPI ReadComm16(INT16,LPSTR,INT16);
+SEGPTR      WINAPI SetCommEventMask16(INT16,UINT16);
+BOOL16      WINAPI SetDeskPattern(void);
+VOID        WINAPI TileChildWindows16(HWND16,WORD);
+INT16       WINAPI UngetCommChar16(INT16,CHAR);
+VOID        WINAPI UserYield16(void);
+INT16       WINAPI WriteComm16(INT16,LPSTR,INT16);
+BOOL16      WINAPI AdjustWindowRect16(LPRECT16,DWORD,BOOL16);
+BOOL16      WINAPI AdjustWindowRectEx16(LPRECT16,DWORD,BOOL16,DWORD);
+SEGPTR      WINAPI AnsiLower16(SEGPTR);
+UINT16      WINAPI AnsiLowerBuff16(LPSTR,UINT16);
+SEGPTR      WINAPI AnsiNext16(SEGPTR);
+SEGPTR      WINAPI AnsiPrev16(LPCSTR,SEGPTR);
+SEGPTR      WINAPI AnsiUpper16(SEGPTR);
+UINT16      WINAPI AnsiUpperBuff16(LPSTR,UINT16);
+BOOL16      WINAPI AnyPopup16(void);
+BOOL16      WINAPI AppendMenu16(HMENU16,UINT16,UINT16,SEGPTR);
+UINT16      WINAPI ArrangeIconicWindows16(HWND16);
+HDWP16      WINAPI BeginDeferWindowPos16(INT16);
+HDC16       WINAPI BeginPaint16(HWND16,LPPAINTSTRUCT16);
+BOOL16      WINAPI BringWindowToTop16(HWND16);
+BOOL16      WINAPI CallMsgFilter16(MSG16*,INT16);
+BOOL16      WINAPI CallMsgFilter32_16(MSG32_16*,INT16,BOOL16);
+LRESULT     WINAPI CallNextHookEx16(HHOOK,INT16,WPARAM16,LPARAM);
+LRESULT     WINAPI CallWindowProc16(WNDPROC16,HWND16,UINT16,WPARAM16,LPARAM);
+BOOL16      WINAPI ChangeClipboardChain16(HWND16,HWND16);
+BOOL16      WINAPI ChangeMenu16(HMENU16,UINT16,SEGPTR,UINT16,UINT16);
+BOOL16      WINAPI CheckDlgButton16(HWND16,INT16,UINT16);
+BOOL16      WINAPI CheckMenuItem16(HMENU16,UINT16,UINT16);
+BOOL16      WINAPI CheckRadioButton16(HWND16,UINT16,UINT16,UINT16);
+HWND16      WINAPI ChildWindowFromPoint16(HWND16,POINT16);
+HWND16      WINAPI ChildWindowFromPointEx16(HWND16,POINT16,UINT16);
+INT16       WINAPI ClearCommBreak16(INT16);
+VOID        WINAPI ClientToScreen16(HWND16,LPPOINT16);
+BOOL16      WINAPI ClipCursor16(const RECT16*);
+BOOL16      WINAPI CloseClipboard16(void);
+BOOL16      WINAPI CloseWindow16(HWND16);
+void        WINAPI ControlPanelInfo16(INT16, WORD, LPSTR);
+HCURSOR16   WINAPI CopyCursor16(HINSTANCE16,HCURSOR16);
+HICON16     WINAPI CopyIcon16(HINSTANCE16,HICON16);
+BOOL16      WINAPI CopyRect16(RECT16*,const RECT16*);
+INT16       WINAPI CountClipboardFormats16(void);
+VOID        WINAPI CreateCaret16(HWND16,HBITMAP16,INT16,INT16);
+HCURSOR16   WINAPI CreateCursor16(HINSTANCE16,INT16,INT16,INT16,INT16,LPCVOID,LPCVOID);
+HWND16      WINAPI CreateDialog16(HINSTANCE16,LPCSTR,HWND16,DLGPROC16);
+HWND16      WINAPI CreateDialogIndirect16(HINSTANCE16,LPCVOID,HWND16,DLGPROC16);
+HWND16      WINAPI CreateDialogIndirectParam16(HINSTANCE16,LPCVOID,HWND16,
+                                               DLGPROC16,LPARAM);
+HWND16      WINAPI CreateDialogParam16(HINSTANCE16,LPCSTR,HWND16,DLGPROC16,LPARAM);
+HICON16     WINAPI CreateIcon16(HINSTANCE16,INT16,INT16,BYTE,BYTE,LPCVOID,LPCVOID);
+HICON16     WINAPI CreateIconFromResourceEx16(LPBYTE,UINT16,BOOL16,DWORD,INT16,INT16,UINT16);
+HMENU16     WINAPI CreateMenu16(void);
+HMENU16     WINAPI CreatePopupMenu16(void);
+HWND16      WINAPI CreateWindow16(LPCSTR,LPCSTR,DWORD,INT16,INT16,INT16,INT16,
+                                  HWND16,HMENU16,HINSTANCE16,LPVOID);
+HWND16      WINAPI CreateWindowEx16(DWORD,LPCSTR,LPCSTR,DWORD,INT16,INT16,
+                                INT16,INT16,HWND16,HMENU16,HINSTANCE16,LPVOID);
+LRESULT     WINAPI DefDlgProc16(HWND16,UINT16,WPARAM16,LPARAM);
+HDWP16      WINAPI DeferWindowPos16(HDWP16,HWND16,HWND16,INT16,INT16,INT16,INT16,UINT16);
+LRESULT     WINAPI DefFrameProc16(HWND16,HWND16,UINT16,WPARAM16,LPARAM);
+LRESULT     WINAPI DefHookProc16(INT16,WPARAM16,LPARAM,HHOOK*);
+LRESULT     WINAPI DefMDIChildProc16(HWND16,UINT16,WPARAM16,LPARAM);
+LRESULT     WINAPI DefWindowProc16(HWND16,UINT16,WPARAM16,LPARAM);
+BOOL16      WINAPI DeleteMenu16(HMENU16,UINT16,UINT16);
+VOID        WINAPI DestroyCaret16(void);
+BOOL16      WINAPI DestroyCursor16(HCURSOR16);
+BOOL16      WINAPI DestroyIcon16(HICON16);
+BOOL16      WINAPI DestroyMenu16(HMENU16);
+BOOL16      WINAPI DestroyWindow16(HWND16);
+INT16       WINAPI DialogBox16(HINSTANCE16,LPCSTR,HWND16,DLGPROC16);
+INT16       WINAPI DialogBoxIndirect16(HINSTANCE16,HANDLE16,HWND16,DLGPROC16);
+INT16       WINAPI DialogBoxIndirectParam16(HINSTANCE16,HANDLE16,HWND16,DLGPROC16,LPARAM);
+INT16       WINAPI DialogBoxParam16(HINSTANCE16,LPCSTR,HWND16,DLGPROC16,LPARAM);
+LONG        WINAPI DispatchMessage16(const MSG16*);
+LONG        WINAPI DispatchMessage32_16(const MSG32_16*,BOOL16);
+INT16       WINAPI DlgDirList16(HWND16,LPSTR,INT16,INT16,UINT16);
+INT16       WINAPI DlgDirListComboBox16(HWND16,LPSTR,INT16,INT16,UINT16);
+BOOL16      WINAPI DlgDirSelectComboBoxEx16(HWND16,LPSTR,INT16,INT16);
+BOOL16      WINAPI DlgDirSelectEx16(HWND16,LPSTR,INT16,INT16);
+BOOL16      WINAPI DragDetect16(HWND16,POINT16);
+DWORD       WINAPI DragObject16(HWND16,HWND16,UINT16,HANDLE16,WORD,HCURSOR16);
+BOOL16      WINAPI DrawAnimatedRects16(HWND16,INT16,const RECT16*,const RECT16*);
+BOOL16      WINAPI DrawCaption16(HWND16,HDC16,const RECT16*,UINT16);
+BOOL16      WINAPI DrawCaptionTemp16(HWND16,HDC16, const RECT16*,HFONT16,HICON16,LPCSTR,UINT16);
+BOOL16      WINAPI DrawEdge16(HDC16,LPRECT16,UINT16,UINT16);
+void        WINAPI DrawFocusRect16(HDC16,const RECT16*);
+BOOL16      WINAPI DrawFrameControl16(HDC16,LPRECT16,UINT16,UINT16);
+BOOL16      WINAPI DrawIcon16(HDC16,INT16,INT16,HICON16);
+BOOL16      WINAPI DrawIconEx16(HDC16,INT16,INT16,HICON16,INT16,INT16,
+				UINT16,HBRUSH16,UINT16);
+VOID        WINAPI DrawMenuBar16(HWND16);
+INT16       WINAPI DrawText16(HDC16,LPCSTR,INT16,LPRECT16,UINT16);
+BOOL16      WINAPI EmptyClipboard16(void);
+BOOL16      WINAPI EnableMenuItem16(HMENU16,UINT16,UINT16);
+BOOL16      WINAPI EnableScrollBar16(HWND16,INT16,UINT16);
+BOOL16      WINAPI EnableWindow16(HWND16,BOOL16);
+BOOL16      WINAPI EndDeferWindowPos16(HDWP16);
+BOOL16      WINAPI EndDialog16(HWND16,INT16);
+BOOL16      WINAPI EndPaint16(HWND16,const PAINTSTRUCT16*);
+UINT16      WINAPI EnumClipboardFormats16(UINT16);
+BOOL16      WINAPI EqualRect16(const RECT16*,const RECT16*);
+LONG        WINAPI EscapeCommFunction16(UINT16,UINT16);
+INT16       WINAPI ExcludeUpdateRgn16(HDC16,HWND16);
+BOOL16      WINAPI ExitWindows16(DWORD,UINT16);
+INT16       WINAPI FillRect16(HDC16,const RECT16*,HBRUSH16);
+HWND16      WINAPI FindWindow16(LPCSTR,LPCSTR);
+HWND16      WINAPI FindWindowEx16(HWND16,HWND16,LPCSTR,LPCSTR);
+BOOL16      WINAPI FlashWindow16(HWND16,BOOL16);
+DWORD       WINAPI FormatMessage16(DWORD,SEGPTR,WORD,WORD,LPSTR,WORD,LPDWORD);
+INT16       WINAPI FrameRect16(HDC16,const RECT16*,HBRUSH16);
+HWND16      WINAPI GetActiveWindow16(void);
+INT16       WINAPI GetAsyncKeyState16(INT16);
+HWND16      WINAPI GetCapture16(void);
+UINT16      WINAPI GetCaretBlinkTime16(void);
+VOID        WINAPI GetCaretPos16(LPPOINT16);
+BOOL16      WINAPI GetClassInfo16(HINSTANCE16,SEGPTR,WNDCLASS16 *);
+BOOL16      WINAPI GetClassInfoEx16(HINSTANCE16,SEGPTR,WNDCLASSEX16 *);
+LONG        WINAPI GetClassLong16(HWND16,INT16);
+INT16       WINAPI GetClassName16(HWND16,LPSTR,INT16);
+WORD        WINAPI GetClassWord16(HWND16,INT16);
+void        WINAPI GetClientRect16(HWND16,LPRECT16);
+HANDLE16    WINAPI GetClipboardData16(UINT16);
+INT16       WINAPI GetClipboardFormatName16(UINT16,LPSTR,INT16);
+HWND16      WINAPI GetClipboardOwner16(void);
+HWND16      WINAPI GetClipboardViewer16(void);
+void        WINAPI GetClipCursor16(LPRECT16);
+DWORD       WINAPI GetCurrentTime16(void);
+HCURSOR16   WINAPI GetCursor16(void);
+BOOL16      WINAPI GetCursorPos16(LPPOINT16);
+HDC16       WINAPI GetDC16(HWND16);
+HDC16       WINAPI GetDCEx16(HWND16,HRGN16,DWORD);
+HWND16      WINAPI GetDesktopWindow16(void);
+INT16       WINAPI GetDlgCtrlID16(HWND16);
+HWND16      WINAPI GetDlgItem16(HWND16,INT16);
+UINT16      WINAPI GetDlgItemInt16(HWND16,INT16,BOOL16*,BOOL16);
+INT16       WINAPI GetDlgItemText16(HWND16,INT16,SEGPTR,UINT16);
+UINT16      WINAPI GetDoubleClickTime16(void);
+HWND16      WINAPI GetFocus16(void);
+HWND16      WINAPI GetForegroundWindow16(void);
+BOOL16      WINAPI GetIconInfo16(HICON16,LPICONINFO16);
+BOOL16      WINAPI GetInputState16(void);
+UINT16      WINAPI GetInternalWindowPos16(HWND16,LPRECT16,LPPOINT16);
+INT16       WINAPI GetKeyboardLayoutName16(LPSTR);
+INT16       WINAPI GetKeyState16(INT16);
+HWND16      WINAPI GetLastActivePopup16(HWND16);
+HMENU16     WINAPI GetMenu16(HWND16);
+DWORD       WINAPI GetMenuContextHelpId16(HMENU16);
+INT16       WINAPI GetMenuItemCount16(HMENU16);
+UINT16      WINAPI GetMenuItemID16(HMENU16,INT16);
+BOOL16      WINAPI GetMenuItemRect16(HWND16,HMENU16,UINT16,LPRECT16);
+UINT16      WINAPI GetMenuState16(HMENU16,UINT16,UINT16);
+INT16       WINAPI GetMenuString16(HMENU16,UINT16,LPSTR,INT16,UINT16);
+BOOL16      WINAPI GetMessage16(MSG16*,HWND16,UINT16,UINT16);
+BOOL16      WINAPI GetMessage32_16(MSG32_16*,HWND16,UINT16,UINT16,BOOL16);
+HWND16      WINAPI GetNextDlgGroupItem16(HWND16,HWND16,BOOL16);
+HWND16      WINAPI GetNextDlgTabItem16(HWND16,HWND16,BOOL16);
+HWND16      WINAPI GetNextWindow16(HWND16,WORD);
+HWND16      WINAPI GetOpenClipboardWindow16(void);
+HWND16      WINAPI GetParent16(HWND16);
+INT16       WINAPI GetPriorityClipboardFormat16(UINT16*,INT16);
+HANDLE16    WINAPI GetProp16(HWND16,LPCSTR);
+DWORD       WINAPI GetQueueStatus16(UINT16);
+BOOL16      WINAPI GetScrollInfo16(HWND16,INT16,LPSCROLLINFO);
+INT16       WINAPI GetScrollPos16(HWND16,INT16);
+BOOL16      WINAPI GetScrollRange16(HWND16,INT16,LPINT16,LPINT16);
+HWND16      WINAPI GetShellWindow16(void);
+HMENU16     WINAPI GetSubMenu16(HMENU16,INT16);
+COLORREF    WINAPI GetSysColor16(INT16);
+HBRUSH16    WINAPI GetSysColorBrush16(INT16);
+HWND16      WINAPI GetSysModalWindow16(void);
+HMENU16     WINAPI GetSystemMenu16(HWND16,BOOL16);
+INT16       WINAPI GetSystemMetrics16(INT16);
+DWORD       WINAPI GetTabbedTextExtent16(HDC16,LPCSTR,INT16,INT16,const INT16*);
+HWND16      WINAPI GetTopWindow16(HWND16);
+BOOL16      WINAPI GetUpdateRect16(HWND16,LPRECT16,BOOL16);
+INT16       WINAPI GetUpdateRgn16(HWND16,HRGN16,BOOL16);
+HWND16      WINAPI GetWindow16(HWND16,WORD);
+HDC16       WINAPI GetWindowDC16(HWND16);
+LONG        WINAPI GetWindowLong16(HWND16,INT16);
+BOOL16      WINAPI GetWindowPlacement16(HWND16,LPWINDOWPLACEMENT16);
+void        WINAPI GetWindowRect16(HWND16,LPRECT16);
+HTASK16     WINAPI GetWindowTask16(HWND16);
+INT16       WINAPI GetWindowText16(HWND16,SEGPTR,INT16);
+INT16       WINAPI GetWindowTextLength16(HWND16);
+WORD        WINAPI GetWindowWord16(HWND16,INT16);
+ATOM        WINAPI GlobalAddAtom16(LPCSTR);
+ATOM        WINAPI GlobalDeleteAtom16(ATOM);
+ATOM        WINAPI GlobalFindAtom16(LPCSTR);
+UINT16      WINAPI GlobalGetAtomName16(ATOM,LPSTR,INT16);
+VOID        WINAPI HideCaret16(HWND16);
+BOOL16      WINAPI HiliteMenuItem16(HWND16,HMENU16,UINT16,UINT16);
+DWORD       WINAPI IconSize16(void);
+void        WINAPI InflateRect16(LPRECT16,INT16,INT16);
+HQUEUE16    WINAPI InitThreadInput16(WORD,WORD);
+BOOL16      WINAPI InSendMessage16(void);
+BOOL16      WINAPI InsertMenu16(HMENU16,UINT16,UINT16,UINT16,SEGPTR);
+BOOL16      WINAPI InsertMenuItem16(HMENU16,UINT16,BOOL16,const MENUITEMINFO16*);
+BOOL16      WINAPI IntersectRect16(LPRECT16,const RECT16*,const RECT16*);
+void        WINAPI InvalidateRect16(HWND16,const RECT16*,BOOL16);
+void        WINAPI InvalidateRgn16(HWND16,HRGN16,BOOL16);
+void        WINAPI InvertRect16(HDC16,const RECT16*);
+BOOL16      WINAPI IsCharAlpha16(CHAR);
+BOOL16      WINAPI IsCharAlphaNumeric16(CHAR);
+BOOL16      WINAPI IsCharLower16(CHAR);
+BOOL16      WINAPI IsCharUpper16(CHAR);
+BOOL16      WINAPI IsChild16(HWND16,HWND16);
+BOOL16      WINAPI IsClipboardFormatAvailable16(UINT16);
+UINT16      WINAPI IsDlgButtonChecked16(HWND16,UINT16);
+BOOL16      WINAPI IsIconic16(HWND16);
+BOOL16      WINAPI IsMenu16(HMENU16);
+BOOL16      WINAPI IsRectEmpty16(const RECT16*);
+BOOL16      WINAPI IsWindowEnabled16(HWND16);
+BOOL16      WINAPI IsWindowVisible16(HWND16);
+BOOL16      WINAPI IsZoomed16(HWND16);
+BOOL16      WINAPI KillSystemTimer16(HWND16,UINT16);
+BOOL16      WINAPI KillTimer16(HWND16,UINT16);
+HBITMAP16   WINAPI LoadBitmap16(HANDLE16,LPCSTR);
+HCURSOR16   WINAPI LoadCursor16(HINSTANCE16,LPCSTR);
+HICON16     WINAPI LoadIcon16(HINSTANCE16,LPCSTR);
+HANDLE16    WINAPI LoadImage16(HINSTANCE16,LPCSTR,UINT16,INT16,INT16,UINT16);
+HMENU16     WINAPI LoadMenu16(HINSTANCE16,LPCSTR);
+HMENU16     WINAPI LoadMenuIndirect16(LPCVOID);
+INT16       WINAPI LoadString16(HINSTANCE16,UINT16,LPSTR,INT16);
+BOOL16      WINAPI LockWindowUpdate16(HWND16);
+INT16       WINAPI LookupIconIdFromDirectoryEx16(LPBYTE,BOOL16,INT16,INT16,UINT16);
+void        WINAPI MapDialogRect16(HWND16,LPRECT16);
+void        WINAPI MapWindowPoints16(HWND16,HWND16,LPPOINT16,UINT16);
+VOID        WINAPI MessageBeep16(UINT16);
+INT16       WINAPI MessageBox16(HWND16,LPCSTR,LPCSTR,UINT16);
+INT16       WINAPI MessageBoxIndirect16(LPMSGBOXPARAMS16);
+BOOL16      WINAPI ModifyMenu16(HMENU16,UINT16,UINT16,UINT16,SEGPTR);
+BOOL16      WINAPI MoveWindow16(HWND16,INT16,INT16,INT16,INT16,BOOL16);
+void        WINAPI OffsetRect16(LPRECT16,INT16,INT16);
+BOOL16      WINAPI OpenClipboard16(HWND16);
+BOOL16      WINAPI OpenIcon16(HWND16);
+BOOL16      WINAPI PeekMessage16(MSG16*,HWND16,UINT16,UINT16,UINT16);
+BOOL16      WINAPI PeekMessage32_16(MSG32_16*,HWND16,UINT16,UINT16,UINT16,BOOL16);
+BOOL16      WINAPI PostAppMessage16(HTASK16,UINT16,WPARAM16,LPARAM);
+BOOL16      WINAPI PostMessage16(HWND16,UINT16,WPARAM16,LPARAM);
+void        WINAPI PostQuitMessage16(INT16);
+BOOL16      WINAPI PtInRect16(const RECT16*,POINT16);
+UINT16      WINAPI RealizePalette16(HDC16);
+BOOL16      WINAPI RedrawWindow16(HWND16,const RECT16*,HRGN16,UINT16);
+ATOM        WINAPI RegisterClass16(const WNDCLASS16*);
+ATOM        WINAPI RegisterClassEx16(const WNDCLASSEX16*);
+UINT16      WINAPI RegisterClipboardFormat16(LPCSTR);
+BOOL        WINAPI RegisterShellHook16(HWND16,UINT16);
+INT16       WINAPI ReleaseDC16(HWND16,HDC16);
+BOOL16      WINAPI RemoveMenu16(HMENU16,UINT16,UINT16);
+HANDLE16    WINAPI RemoveProp16(HWND16,LPCSTR);
+VOID        WINAPI ReplyMessage16(LRESULT);
+void        WINAPI ScreenToClient16(HWND16,LPPOINT16);
+VOID        WINAPI ScrollChildren16(HWND16,UINT16,WPARAM16,LPARAM);
+BOOL16      WINAPI ScrollDC16(HDC16,INT16,INT16,const RECT16*,const RECT16*,
+                      HRGN16,LPRECT16);
+void        WINAPI ScrollWindow16(HWND16,INT16,INT16,const RECT16*,const RECT16*);
+INT16       WINAPI ScrollWindowEx16(HWND16,INT16,INT16,const RECT16*,
+                                    const RECT16*,HRGN16,LPRECT16,UINT16);
+HPALETTE16  WINAPI SelectPalette16(HDC16,HPALETTE16,BOOL16);
+LRESULT     WINAPI SendDlgItemMessage16(HWND16,INT16,UINT16,WPARAM16,LPARAM);
+LRESULT     WINAPI SendMessage16(HWND16,UINT16,WPARAM16,LPARAM);
+HWND16      WINAPI SetActiveWindow16(HWND16);
+HWND16      WINAPI SetCapture16(HWND16);
+VOID        WINAPI SetCaretBlinkTime16(UINT16);
+VOID        WINAPI SetCaretPos16(INT16,INT16);
+LONG        WINAPI SetClassLong16(HWND16,INT16,LONG);
+WORD        WINAPI SetClassWord16(HWND16,INT16,WORD);
+HANDLE16    WINAPI SetClipboardData16(UINT16,HANDLE16);
+HWND16      WINAPI SetClipboardViewer16(HWND16);
+INT16       WINAPI SetCommBreak16(INT16);
+HCURSOR16   WINAPI SetCursor16(HCURSOR16);
+void        WINAPI SetCursorPos16(INT16,INT16);
+BOOL16      WINAPI SetDeskWallPaper16(LPCSTR);
+void        WINAPI SetDlgItemInt16(HWND16,INT16,UINT16,BOOL16);
+void        WINAPI SetDlgItemText16(HWND16,INT16,SEGPTR);
+VOID        WINAPI SetDoubleClickTime16(UINT16);
+HWND16      WINAPI SetFocus16(HWND16);
+BOOL16      WINAPI SetForegroundWindow16(HWND16);
+void        WINAPI SetInternalWindowPos16(HWND16,UINT16,LPRECT16,LPPOINT16);
+BOOL16      WINAPI SetMenu16(HWND16,HMENU16);
+BOOL16      WINAPI SetMenuContextHelpId16(HMENU16,DWORD);
+BOOL16      WINAPI SetMenuItemBitmaps16(HMENU16,UINT16,UINT16,HBITMAP16,HBITMAP16);
+BOOL16      WINAPI SetMessageQueue16(INT16);
+HWND16      WINAPI SetParent16(HWND16,HWND16);
+BOOL16      WINAPI SetProp16(HWND16,LPCSTR,HANDLE16);
+void        WINAPI SetRect16(LPRECT16,INT16,INT16,INT16,INT16);
+void        WINAPI SetRectEmpty16(LPRECT16);
+INT16       WINAPI SetScrollInfo16(HWND16,INT16,const SCROLLINFO*,BOOL16);
+INT16       WINAPI SetScrollPos16(HWND16,INT16,INT16,BOOL16);
+void        WINAPI SetScrollRange16(HWND16,INT16,INT16,INT16,BOOL16);
+VOID        WINAPI SetSysColors16(INT16,const INT16*,const COLORREF*);
+HWND16      WINAPI SetSysModalWindow16(HWND16);
+BOOL16      WINAPI SetSystemMenu16(HWND16,HMENU16);
+UINT16      WINAPI SetSystemTimer16(HWND16,UINT16,UINT16,TIMERPROC16);
+UINT16      WINAPI SetTimer16(HWND16,UINT16,UINT16,TIMERPROC16);
+LONG        WINAPI SetWindowLong16(HWND16,INT16,LONG);
+BOOL16      WINAPI SetWindowPlacement16(HWND16,const WINDOWPLACEMENT16*);
+BOOL16      WINAPI SetWindowPos16(HWND16,HWND16,INT16,INT16,INT16,INT16,WORD);
+INT16       WINAPI SetWindowRgn16(HWND16,HRGN16,BOOL16);
+BOOL16      WINAPI SetWindowText16(HWND16,SEGPTR);
+WORD        WINAPI SetWindowWord16(HWND16,INT16,WORD);
+VOID        WINAPI ShowCaret16(HWND16);
+INT16       WINAPI ShowCursor16(BOOL16);
+void        WINAPI ShowScrollBar16(HWND16,INT16,BOOL16);
+VOID        WINAPI ShowOwnedPopups16(HWND16,BOOL16);
+BOOL16      WINAPI ShowWindow16(HWND16,INT16);
+BOOL16      WINAPI SubtractRect16(LPRECT16,const RECT16*,const RECT16*);
+BOOL16      WINAPI SwapMouseButton16(BOOL16);
+VOID        WINAPI SwitchToThisWindow16(HWND16,BOOL16);
+BOOL16      WINAPI SystemParametersInfo16(UINT16,UINT16,LPVOID,UINT16);
+LONG        WINAPI TabbedTextOut16(HDC16,INT16,INT16,LPCSTR,INT16,INT16,const INT16*,INT16);
+BOOL16      WINAPI TrackPopupMenu16(HMENU16,UINT16,INT16,INT16,INT16,HWND16,const RECT16*);
+INT16       WINAPI TranslateAccelerator16(HWND16,HACCEL16,LPMSG16);
+BOOL16      WINAPI TranslateMDISysAccel16(HWND16,LPMSG16);
+BOOL16      WINAPI TranslateMessage16(const MSG16*);
+BOOL16      WINAPI TranslateMessage32_16(const MSG32_16*,BOOL16);
+INT16       WINAPI TransmitCommChar16(INT16,CHAR);
+BOOL16      WINAPI UnionRect16(LPRECT16,const RECT16*,const RECT16*);
+BOOL16      WINAPI UnregisterClass16(LPCSTR,HINSTANCE16);
+VOID        WINAPI UpdateWindow16(HWND16);
+VOID        WINAPI ValidateRect16(HWND16,const RECT16*);
+VOID        WINAPI ValidateRgn16(HWND16,HRGN16);
+HWND16      WINAPI WindowFromDC16(HDC16);
+HWND16      WINAPI WindowFromPoint16(POINT16);
+BOOL16      WINAPI WinHelp16(HWND16,LPCSTR,UINT16,DWORD);
+WORD        WINAPI WNetAddConnection16(LPCSTR,LPCSTR,LPCSTR);
+INT16       WINAPI wvsprintf16(LPSTR,LPCSTR,VA_LIST16);
+BOOL16      WINAPI DrawState16A(HDC16,HBRUSH16,DRAWSTATEPROC16,LPARAM,WPARAM16,INT16,INT16,INT16,INT16,UINT16);
+BOOL16      WINAPI IsDialogMessage16(HWND16,MSG16*);
+INT16       WINAPI GetCommError16(INT16,LPCOMSTAT16);
+INT16       WINAPI BuildCommDCB16(LPCSTR,LPDCB16);
+INT16       WINAPI GetCommState16(INT16,LPDCB16);
+INT16       WINAPI SetCommState16(LPDCB16);
+INT16       WINAPI lstrcmp16(LPCSTR,LPCSTR);
+INT16       WINAPI lstrcmpi16(LPCSTR,LPCSTR);
+
+/* undocumented functions */
+
+typedef VOID (*SYSTEMTIMERPROC)(WORD);
+
+void        WINAPI ConvertDialog32To16(LPCVOID,DWORD,LPVOID);
+WORD        WINAPI CreateSystemTimer(WORD,SYSTEMTIMERPROC);
+VOID        WINAPI DisableSystemTimers16(void);
+VOID        WINAPI EnableSystemTimers16(void);
+BOOL16      WINAPI EnumTaskWindows16(HTASK16,WNDENUMPROC16,LPARAM);
+BOOL16      WINAPI GrayString16(HDC16,HBRUSH16,GRAYSTRINGPROC16,LPARAM,
+                                INT16,INT16,INT16,INT16,INT16);
+DWORD       WINAPI GetFileResourceSize16(LPCSTR,LPCSTR,LPCSTR,LPDWORD);
+DWORD       WINAPI GetFileResource16(LPCSTR,LPCSTR,LPCSTR,DWORD,DWORD,LPVOID);
+FARPROC16   WINAPI SetTaskSignalProc(HTASK16,FARPROC16);
+
+#endif /* __WINE_WINE_WINUSER16_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/wpp.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/wpp.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wine/wpp.h	(revision 16410)
@@ -0,0 +1,36 @@
+/*
+ * Exported functions of the Wine preprocessor
+ *
+ * Copyright 2002 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WPP_H
+#define __WINE_WPP_H
+
+#include <stdio.h>
+
+extern void wpp_add_define( const char *name, const char *value );
+extern void wpp_del_define( const char *name );
+extern void wpp_add_cmdline_define( const char *value );
+extern void wpp_set_debug( int lex_debug, int parser_debug, int msg_debug );
+extern void wpp_set_pedantic( int on );
+extern void wpp_add_include_path( const char *path );
+extern char *wpp_find_include( const char *name, const char *parent_name );
+extern int wpp_parse( const char *input, FILE *output );
+extern int wpp_parse_temp( const char *input, const char *output_base, char **output_name );
+
+#endif  /* __WINE_WPP_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winerror.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winerror.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winerror.h	(revision 16410)
@@ -0,0 +1,2481 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINERROR_H
+#define __WINE_WINERROR_H
+
+#define FACILITY_NULL                         0
+#define FACILITY_RPC                          1
+#define FACILITY_DISPATCH                     2
+#define FACILITY_STORAGE                      3
+#define FACILITY_ITF                          4
+#define FACILITY_WIN32                        7
+#define FACILITY_WINDOWS                      8
+#define FACILITY_SSPI                         9
+#define FACILITY_SECURITY                     FACILITY_SSPI
+#define FACILITY_CONTROL                     10
+#define FACILITY_CERT                        11
+#define FACILITY_INTERNET                    12
+#define FACILITY_MEDIASERVER                 13
+#define FACILITY_MSMQ                        14
+#define FACILITY_SETUPAPI                    15
+#define FACILITY_SCARD                       16
+#define FACILITY_COMPLUS                     17
+#define FACILITY_AAF                         18
+#define FACILITY_URT                         19
+#define FACILITY_ACS                         20
+#define FACILITY_DPLAY                       21
+#define FACILITY_UMI                         22
+#define FACILITY_SXS                         23
+#define FACILITY_WINDOWS_CE                  24
+#define FACILITY_HTTP                        25
+#define FACILITY_COMMONLOG                   26
+#define FACILITY_USERMODE_FILTER_MANAGER     31
+#define FACILITY_BACKGROUNDCOPY              32
+#define FACILITY_CONFIGURATION               33
+#define FACILITY_STATE_MANAGEMENT            34
+#define FACILITY_METADIRECTORY               35
+#define FACILITY_WINDOWSUPDATE               36
+#define FACILITY_DIRECTORYSERVICE            37
+#define FACILITY_GRAPHICS                    38
+#define FACILITY_SHELL                       39
+#define FACILITY_TPM_SERVICES                40
+#define FACILITY_TPM_SOFTWARE                41
+#define FACILITY_PLA                         48
+#define FACILITY_FVE                         49
+#define FACILITY_WINDOWS_DEFENDER            80
+
+#define SEVERITY_SUCCESS    0
+#define SEVERITY_ERROR      1
+
+
+#define MAKE_HRESULT(sev,fac,code) \
+    ((HRESULT) (((unsigned long)(sev)<<31) | ((unsigned long)(fac)<<16) | ((unsigned long)(code))) )
+#define MAKE_SCODE(sev,fac,code) \
+        ((SCODE) (((unsigned long)(sev)<<31) | ((unsigned long)(fac)<<16) | ((unsigned long)(code))) )
+#define SUCCEEDED(stat) ((HRESULT)(stat)>=0)
+#define FAILED(stat) ((HRESULT)(stat)<0)
+#define IS_ERROR(stat) (((unsigned long)(stat)>>31) == SEVERITY_ERROR)
+
+#define HRESULT_CODE(hr) ((hr) & 0xFFFF)
+#define SCODE_CODE(sc)   ((sc) & 0xFFFF)
+
+#define HRESULT_FACILITY(hr)  (((hr) >> 16) & 0x1FFF)
+#define SCODE_FACILITY(sc)  (((sc) >> 16) & 0x1FFF)
+
+#define HRESULT_SEVERITY(hr)    (((hr) >> 31) & 0x1)
+#define SCODE_SEVERITY(sc)      (((sc) >> 31) & 0x1)
+
+#define __HRESULT_FROM_WIN32(x)   ((HRESULT)(x) > 0 ? ((HRESULT) (((x) & 0x0000FFFF) | (FACILITY_WIN32 << 16) | 0x80000000)) : (HRESULT)(x) )
+#ifndef _HRESULT_DEFINED
+#define _HRESULT_DEFINED
+# ifdef _MSC_VER
+typedef long            HRESULT;
+# else
+typedef int             HRESULT;
+# endif
+#endif
+static HRESULT HRESULT_FROM_WIN32(unsigned long x)
+{
+    return (HRESULT)x > 0 ? ((HRESULT) ((x & 0x0000FFFF) | (FACILITY_WIN32 << 16) | 0x80000000)) : (HRESULT)x;
+}
+#define FACILITY_NT_BIT         0x10000000
+#define HRESULT_FROM_NT(x)      ((HRESULT) ((x) | FACILITY_NT_BIT))
+
+/* SCODE <-> HRESULT functions */
+/* This macros is obsolete and should not be used in new apps. */
+#define GetScode(hr)         ((SCODE)(hr))
+/* This macros is obsolete and should not be used in new apps. */
+#define ResultFromScode(sc)  ((HRESULT)(sc))
+
+#define NO_ERROR                                           0
+#define ERROR_SUCCESS                                      0
+#define ERROR_INVALID_FUNCTION                             1
+#define ERROR_FILE_NOT_FOUND                               2
+#define ERROR_PATH_NOT_FOUND                               3
+#define ERROR_TOO_MANY_OPEN_FILES                          4
+#define ERROR_ACCESS_DENIED                                5
+#define ERROR_INVALID_HANDLE                               6
+#define ERROR_ARENA_TRASHED                                7
+#define ERROR_NOT_ENOUGH_MEMORY                            8
+#define ERROR_INVALID_BLOCK                                9
+#define ERROR_BAD_ENVIRONMENT                              10
+#define ERROR_BAD_FORMAT                                   11
+#define ERROR_INVALID_ACCESS                               12
+#define ERROR_INVALID_DATA                                 13
+#define ERROR_OUTOFMEMORY                                  14
+#define ERROR_INVALID_DRIVE                                15
+#define ERROR_CURRENT_DIRECTORY                            16
+#define ERROR_NOT_SAME_DEVICE                              17
+#define ERROR_NO_MORE_FILES                                18
+#define ERROR_WRITE_PROTECT                                19
+#define ERROR_BAD_UNIT                                     20
+#define ERROR_NOT_READY                                    21
+#define ERROR_BAD_COMMAND                                  22
+#define ERROR_CRC                                          23
+#define ERROR_BAD_LENGTH                                   24
+#define ERROR_SEEK                                         25
+#define ERROR_NOT_DOS_DISK                                 26
+#define ERROR_SECTOR_NOT_FOUND                             27
+#define ERROR_OUT_OF_PAPER                                 28
+#define ERROR_WRITE_FAULT                                  29
+#define ERROR_READ_FAULT                                   30
+#define ERROR_GEN_FAILURE                                  31
+#define ERROR_SHARING_VIOLATION                            32
+#define ERROR_LOCK_VIOLATION                               33
+#define ERROR_WRONG_DISK                                   34
+/* FIXME: 35 gets returned for some unsuccessful DeviceIoControl calls */
+#define ERROR_UNKNOWN_NAME_01                              35
+#define ERROR_SHARING_BUFFER_EXCEEDED                      36
+#define ERROR_HANDLE_EOF                                   38
+#define ERROR_HANDLE_DISK_FULL                             39
+#define ERROR_NOT_SUPPORTED                                50
+#define ERROR_REM_NOT_LIST                                 51
+#define ERROR_DUP_NAME                                     52
+#define ERROR_BAD_NETPATH                                  53
+#define ERROR_NETWORK_BUSY                                 54
+#define ERROR_DEV_NOT_EXIST                                55
+#define ERROR_TOO_MANY_CMDS                                56
+#define ERROR_ADAP_HDW_ERR                                 57
+#define ERROR_BAD_NET_RESP                                 58
+#define ERROR_UNEXP_NET_ERR                                59
+#define ERROR_BAD_REM_ADAP                                 60
+#define ERROR_PRINTQ_FULL                                  61
+#define ERROR_NO_SPOOL_SPACE                               62
+#define ERROR_PRINT_CANCELLED                              63
+#define ERROR_NETNAME_DELETED                              64
+#define ERROR_NETWORK_ACCESS_DENIED                        65
+#define ERROR_BAD_DEV_TYPE                                 66
+#define ERROR_BAD_NET_NAME                                 67
+#define ERROR_TOO_MANY_NAMES                               68
+#define ERROR_TOO_MANY_SESS                                69
+#define ERROR_SHARING_PAUSED                               70
+#define ERROR_REQ_NOT_ACCEP                                71
+#define ERROR_REDIR_PAUSED                                 72
+#define ERROR_FILE_EXISTS                                  80
+#define ERROR_CANNOT_MAKE                                  82
+#define ERROR_FAIL_I24                                     83
+#define ERROR_OUT_OF_STRUCTURES                            84
+#define ERROR_ALREADY_ASSIGNED                             85
+#define ERROR_INVALID_PASSWORD                             86
+#define ERROR_INVALID_PARAMETER                            87
+#define ERROR_NET_WRITE_FAULT                              88
+#define ERROR_NO_PROC_SLOTS                                89
+#define ERROR_TOO_MANY_SEMAPHORES                          100
+#define ERROR_EXCL_SEM_ALREADY_OWNED                       101
+#define ERROR_SEM_IS_SET                                   102
+#define ERROR_TOO_MANY_SEM_REQUESTS                        103
+#define ERROR_INVALID_AT_INTERRUPT_TIME                    104
+#define ERROR_SEM_OWNER_DIED                               105
+#define ERROR_SEM_USER_LIMIT                               106
+#define ERROR_DISK_CHANGE                                  107
+#define ERROR_DRIVE_LOCKED                                 108
+#define ERROR_BROKEN_PIPE                                  109
+#define ERROR_OPEN_FAILED                                  110
+#define ERROR_BUFFER_OVERFLOW                              111
+#define ERROR_DISK_FULL                                    112
+#define ERROR_NO_MORE_SEARCH_HANDLES                       113
+#define ERROR_INVALID_TARGET_HANDLE                        114
+#define ERROR_INVALID_CATEGORY                             117
+#define ERROR_INVALID_VERIFY_SWITCH                        118
+#define ERROR_BAD_DRIVER_LEVEL                             119
+#define ERROR_CALL_NOT_IMPLEMENTED                         120
+#define ERROR_SEM_TIMEOUT                                  121
+#define ERROR_INSUFFICIENT_BUFFER                          122
+#define ERROR_INVALID_NAME                                 123
+#define ERROR_INVALID_LEVEL                                124
+#define ERROR_NO_VOLUME_LABEL                              125
+#define ERROR_MOD_NOT_FOUND                                126
+#define ERROR_PROC_NOT_FOUND                               127
+#define ERROR_WAIT_NO_CHILDREN                             128
+#define ERROR_CHILD_NOT_COMPLETE                           129
+#define ERROR_DIRECT_ACCESS_HANDLE                         130
+#define ERROR_NEGATIVE_SEEK                                131
+#define ERROR_SEEK_ON_DEVICE                               132
+#define ERROR_IS_JOIN_TARGET                               133
+#define ERROR_IS_JOINED                                    134
+#define ERROR_IS_SUBSTED                                   135
+#define ERROR_NOT_JOINED                                   136
+#define ERROR_NOT_SUBSTED                                  137
+#define ERROR_JOIN_TO_JOIN                                 138
+#define ERROR_SUBST_TO_SUBST                               139
+#define ERROR_JOIN_TO_SUBST                                140
+#define ERROR_SUBST_TO_JOIN                                141
+#define ERROR_BUSY_DRIVE                                   142
+#define ERROR_SAME_DRIVE                                   143
+#define ERROR_DIR_NOT_ROOT                                 144
+#define ERROR_DIR_NOT_EMPTY                                145
+#define ERROR_IS_SUBST_PATH                                146
+#define ERROR_IS_JOIN_PATH                                 147
+#define ERROR_PATH_BUSY                                    148
+#define ERROR_IS_SUBST_TARGET                              149
+#define ERROR_SYSTEM_TRACE                                 150
+#define ERROR_INVALID_EVENT_COUNT                          151
+#define ERROR_TOO_MANY_MUXWAITERS                          152
+#define ERROR_INVALID_LIST_FORMAT                          153
+#define ERROR_LABEL_TOO_LONG                               154
+#define ERROR_TOO_MANY_TCBS                                155
+#define ERROR_SIGNAL_REFUSED                               156
+#define ERROR_DISCARDED                                    157
+#define ERROR_NOT_LOCKED                                   158
+#define ERROR_BAD_THREADID_ADDR                            159
+#define ERROR_BAD_ARGUMENTS                                160
+#define ERROR_BAD_PATHNAME                                 161
+#define ERROR_SIGNAL_PENDING                               162
+#define ERROR_MAX_THRDS_REACHED                            164
+#define ERROR_LOCK_FAILED                                  167
+#define ERROR_BUSY                                         170
+#define ERROR_CANCEL_VIOLATION                             173
+#define ERROR_ATOMIC_LOCKS_NOT_SUPPORTED                   174
+#define ERROR_INVALID_SEGMENT_NUMBER                       180
+#define ERROR_INVALID_ORDINAL                              182
+#define ERROR_ALREADY_EXISTS                               183
+#define ERROR_INVALID_FLAG_NUMBER                          186
+#define ERROR_SEM_NOT_FOUND                                187
+#define ERROR_INVALID_STARTING_CODESEG                     188
+#define ERROR_INVALID_STACKSEG                             189
+#define ERROR_INVALID_MODULETYPE                           190
+#define ERROR_INVALID_EXE_SIGNATURE                        191
+#define ERROR_EXE_MARKED_INVALID                           192
+#define ERROR_BAD_EXE_FORMAT                               193
+#define ERROR_ITERATED_DATA_EXCEEDS_64k                    194
+#define ERROR_INVALID_MINALLOCSIZE                         195
+#define ERROR_DYNLINK_FROM_INVALID_RING                    196
+#define ERROR_IOPL_NOT_ENABLED                             197
+#define ERROR_INVALID_SEGDPL                               198
+#define ERROR_AUTODATASEG_EXCEEDS_64k                      199
+#define ERROR_RING2SEG_MUST_BE_MOVABLE                     200
+#define ERROR_RELOC_CHAIN_XEEDS_SEGLIM                     201
+#define ERROR_INFLOOP_IN_RELOC_CHAIN                       202
+#define ERROR_ENVVAR_NOT_FOUND                             203
+#define ERROR_NO_SIGNAL_SENT                               205
+#define ERROR_FILENAME_EXCED_RANGE                         206
+#define ERROR_RING2_STACK_IN_USE                           207
+#define ERROR_META_EXPANSION_TOO_LONG                      208
+#define ERROR_INVALID_SIGNAL_NUMBER                        209
+#define ERROR_THREAD_1_INACTIVE                            210
+#define ERROR_LOCKED                                       212
+#define ERROR_TOO_MANY_MODULES                             214
+#define ERROR_NESTING_NOT_ALLOWED                          215
+#define ERROR_EXE_MACHINE_TYPE_MISMATCH                    216
+#define ERROR_BAD_PIPE                                     230
+#define ERROR_PIPE_BUSY                                    231
+#define ERROR_NO_DATA                                      232
+#define ERROR_PIPE_NOT_CONNECTED                           233
+#define ERROR_MORE_DATA                                    234
+#define ERROR_VC_DISCONNECTED                              240
+#define ERROR_INVALID_EA_NAME                              254
+#define ERROR_EA_LIST_INCONSISTENT                         255
+#define ERROR_NO_MORE_ITEMS                                259
+#define ERROR_CANNOT_COPY                                  266
+#define ERROR_DIRECTORY                                    267
+#define ERROR_EAS_DIDNT_FIT                                275
+#define ERROR_EA_FILE_CORRUPT                              276
+#define ERROR_EA_TABLE_FULL                                277
+#define ERROR_INVALID_EA_HANDLE                            278
+#define ERROR_EAS_NOT_SUPPORTED                            282
+#define ERROR_NOT_OWNER                                    288
+#define ERROR_TOO_MANY_POSTS                               298
+#define ERROR_PARTIAL_COPY                                 299
+#define ERROR_OPLOCK_NOT_GRANTED                           300
+#define ERROR_INVALID_OPLOCK_PROTOCOL                      301
+#define ERROR_DISK_TOO_FRAGMENTED                          302
+#define ERROR_MR_MID_NOT_FOUND                             317
+#define ERROR_SCOPE_NOT_FOUND                              318
+#define ERROR_FAIL_NOACTION_REBOOT                         350
+#define ERROR_FAIL_SHUTDOWN                                351
+#define ERROR_FAIL_RESTART                                 352
+#define ERROR_MAX_SESSIONS_REACHED                         353
+#define ERROR_INVALID_ADDRESS                              487
+#define ERROR_USER_PROFILE_LOAD                            500
+#define ERROR_ARITHMETIC_OVERFLOW                          534
+#define ERROR_PIPE_CONNECTED                               535
+#define ERROR_PIPE_LISTENING                               536
+#define ERROR_EA_ACCESS_DENIED                             994
+#define ERROR_OPERATION_ABORTED                            995
+#define ERROR_IO_INCOMPLETE                                996
+#define ERROR_IO_PENDING                                   997
+#define ERROR_NOACCESS                                     998
+#define ERROR_SWAPERROR                                    999
+#define ERROR_STACK_OVERFLOW                               1001
+#define ERROR_INVALID_MESSAGE                              1002
+#define ERROR_CAN_NOT_COMPLETE                             1003
+#define ERROR_INVALID_FLAGS                                1004
+#define ERROR_UNRECOGNIZED_VOLUME                          1005
+#define ERROR_FILE_INVALID                                 1006
+#define ERROR_FULLSCREEN_MODE                              1007
+#define ERROR_NO_TOKEN                                     1008
+#define ERROR_BADDB                                        1009
+#define ERROR_BADKEY                                       1010
+#define ERROR_CANTOPEN                                     1011
+#define ERROR_CANTREAD                                     1012
+#define ERROR_CANTWRITE                                    1013
+#define ERROR_REGISTRY_RECOVERED                           1014
+#define ERROR_REGISTRY_CORRUPT                             1015
+#define ERROR_REGISTRY_IO_FAILED                           1016
+#define ERROR_NOT_REGISTRY_FILE                            1017
+#define ERROR_KEY_DELETED                                  1018
+#define ERROR_NO_LOG_SPACE                                 1019
+#define ERROR_KEY_HAS_CHILDREN                             1020
+#define ERROR_CHILD_MUST_BE_VOLATILE                       1021
+#define ERROR_NOTIFY_ENUM_DIR                              1022
+#define ERROR_DEPENDENT_SERVICES_RUNNING                   1051
+#define ERROR_INVALID_SERVICE_CONTROL                      1052
+#define ERROR_SERVICE_REQUEST_TIMEOUT                      1053
+#define ERROR_SERVICE_NO_THREAD                            1054
+#define ERROR_SERVICE_DATABASE_LOCKED                      1055
+#define ERROR_SERVICE_ALREADY_RUNNING                      1056
+#define ERROR_INVALID_SERVICE_ACCOUNT                      1057
+#define ERROR_SERVICE_DISABLED                             1058
+#define ERROR_CIRCULAR_DEPENDENCY                          1059
+#define ERROR_SERVICE_DOES_NOT_EXIST                       1060
+#define ERROR_SERVICE_CANNOT_ACCEPT_CTRL                   1061
+#define ERROR_SERVICE_NOT_ACTIVE                           1062
+#define ERROR_FAILED_SERVICE_CONTROLLER_CONNECT            1063
+#define ERROR_EXCEPTION_IN_SERVICE                         1064
+#define ERROR_DATABASE_DOES_NOT_EXIST                      1065
+#define ERROR_SERVICE_SPECIFIC_ERROR                       1066
+#define ERROR_PROCESS_ABORTED                              1067
+#define ERROR_SERVICE_DEPENDENCY_FAIL                      1068
+#define ERROR_SERVICE_LOGON_FAILED                         1069
+#define ERROR_SERVICE_START_HANG                           1070
+#define ERROR_INVALID_SERVICE_LOCK                         1071
+#define ERROR_SERVICE_MARKED_FOR_DELETE                    1072
+#define ERROR_SERVICE_EXISTS                               1073
+#define ERROR_ALREADY_RUNNING_LKG                          1074
+#define ERROR_SERVICE_DEPENDENCY_DELETED                   1075
+#define ERROR_BOOT_ALREADY_ACCEPTED                        1076
+#define ERROR_SERVICE_NEVER_STARTED                        1077
+#define ERROR_DUPLICATE_SERVICE_NAME                       1078
+#define ERROR_DIFFERENT_SERVICE_ACCOUNT                    1079
+#define ERROR_CANNOT_DETECT_DRIVER_FAILURE                 1080
+#define ERROR_CANNOT_DETECT_PROCESS_ABORT                  1081
+#define ERROR_NO_RECOVERY_PROGRAM                          1082
+#define ERROR_SERVICE_NOT_IN_EXE                           1083
+#define ERROR_END_OF_MEDIA                                 1100
+#define ERROR_FILEMARK_DETECTED                            1101
+#define ERROR_BEGINNING_OF_MEDIA                           1102
+#define ERROR_SETMARK_DETECTED                             1103
+#define ERROR_NO_DATA_DETECTED                             1104
+#define ERROR_PARTITION_FAILURE                            1105
+#define ERROR_INVALID_BLOCK_LENGTH                         1106
+#define ERROR_DEVICE_NOT_PARTITIONED                       1107
+#define ERROR_UNABLE_TO_LOCK_MEDIA                         1108
+#define ERROR_UNABLE_TO_UNLOAD_MEDIA                       1109
+#define ERROR_MEDIA_CHANGED                                1110
+#define ERROR_BUS_RESET                                    1111
+#define ERROR_NO_MEDIA_IN_DRIVE                            1112
+#define ERROR_NO_UNICODE_TRANSLATION                       1113
+#define ERROR_DLL_INIT_FAILED                              1114
+#define ERROR_SHUTDOWN_IN_PROGRESS                         1115
+#define ERROR_NO_SHUTDOWN_IN_PROGRESS                      1116
+#define ERROR_IO_DEVICE                                    1117
+#define ERROR_SERIAL_NO_DEVICE                             1118
+#define ERROR_IRQ_BUSY                                     1119
+#define ERROR_MORE_WRITES                                  1120
+#define ERROR_COUNTER_TIMEOUT                              1121
+#define ERROR_FLOPPY_ID_MARK_NOT_FOUND                     1122
+#define ERROR_FLOPPY_WRONG_CYLINDER                        1123
+#define ERROR_FLOPPY_UNKNOWN_ERROR                         1124
+#define ERROR_FLOPPY_BAD_REGISTERS                         1125
+#define ERROR_DISK_RECALIBRATE_FAILED                      1126
+#define ERROR_DISK_OPERATION_FAILED                        1127
+#define ERROR_DISK_RESET_FAILED                            1128
+#define ERROR_EOM_OVERFLOW                                 1129
+#define ERROR_NOT_ENOUGH_SERVER_MEMORY                     1130
+#define ERROR_POSSIBLE_DEADLOCK                            1131
+#define ERROR_MAPPED_ALIGNMENT                             1132
+#define ERROR_SET_POWER_STATE_VETOED                       1140
+#define ERROR_SET_POWER_STATE_FAILED                       1141
+#define ERROR_TOO_MANY_LINKS                               1142
+#define ERROR_OLD_WIN_VERSION                              1150
+#define ERROR_APP_WRONG_OS                                 1151
+#define ERROR_SINGLE_INSTANCE_APP                          1152
+#define ERROR_RMODE_APP                                    1153
+#define ERROR_INVALID_DLL                                  1154
+#define ERROR_NO_ASSOCIATION                               1155
+#define ERROR_DDE_FAIL                                     1156
+#define ERROR_DLL_NOT_FOUND                                1157
+#define ERROR_NO_MORE_USER_HANDLES                         1158
+#define ERROR_MESSAGE_SYNC_ONLY                            1159
+#define ERROR_SOURCE_ELEMENT_EMPTY                         1160
+#define ERROR_DESTINATION_ELEMENT_FULL                     1161
+#define ERROR_ILLEGAL_ELEMENT_ADDRESS                      1162
+#define ERROR_MAGAZINE_NOT_PRESENT                         1163
+#define ERROR_DEVICE_REINITIALIZATION_NEEDED               1164
+#define ERROR_DEVICE_REQUIRES_CLEANING                     1165
+#define ERROR_DEVICE_DOOR_OPEN                             1166
+#define ERROR_DEVICE_NOT_CONNECTED                         1167
+#define ERROR_NOT_FOUND                                    1168
+#define ERROR_NO_MATCH                                     1169
+#define ERROR_SET_NOT_FOUND                                1170
+#define ERROR_POINT_NOT_FOUND                              1171
+#define ERROR_NO_TRACKING_SERVICE                          1172
+#define ERROR_NO_VOLUME_ID                                 1173
+#define ERROR_UNABLE_TO_REMOVE_REPLACED                    1175
+#define ERROR_UNABLE_TO_MOVE_REPLACEMENT                   1176
+#define ERROR_UNABLE_TO_MOVE_REPLACEMENT_2                 1177
+#define ERROR_JOURNAL_DELETE_IN_PROGRESS                   1178
+#define ERROR_JOURNAL_NOT_ACTIVE                           1179
+#define ERROR_POTENTIAL_FILE_FOUND                         1180
+#define ERROR_JOURNAL_ENTRY_DELETED                        1181
+#define ERROR_BAD_DEVICE                                   1200
+#define ERROR_CONNECTION_UNAVAIL                           1201
+#define ERROR_DEVICE_ALREADY_REMEMBERED                    1202
+#define ERROR_NO_NET_OR_BAD_PATH                           1203
+#define ERROR_BAD_PROVIDER                                 1204
+#define ERROR_CANNOT_OPEN_PROFILE                          1205
+#define ERROR_BAD_PROFILE                                  1206
+#define ERROR_NOT_CONTAINER                                1207
+#define ERROR_EXTENDED_ERROR                               1208
+#define ERROR_INVALID_GROUPNAME                            1209
+#define ERROR_INVALID_COMPUTERNAME                         1210
+#define ERROR_INVALID_EVENTNAME                            1211
+#define ERROR_INVALID_DOMAINNAME                           1212
+#define ERROR_INVALID_SERVICENAME                          1213
+#define ERROR_INVALID_NETNAME                              1214
+#define ERROR_INVALID_SHARENAME                            1215
+#define ERROR_INVALID_PASSWORDNAME                         1216
+#define ERROR_INVALID_MESSAGENAME                          1217
+#define ERROR_INVALID_MESSAGEDEST                          1218
+#define ERROR_SESSION_CREDENTIAL_CONFLICT                  1219
+#define ERROR_REMOTE_SESSION_LIMIT_EXCEEDED                1220
+#define ERROR_DUP_DOMAINNAME                               1221
+#define ERROR_NO_NETWORK                                   1222
+#define ERROR_CANCELLED                                    1223
+#define ERROR_USER_MAPPED_FILE                             1224
+#define ERROR_CONNECTION_REFUSED                           1225
+#define ERROR_GRACEFUL_DISCONNECT                          1226
+#define ERROR_ADDRESS_ALREADY_ASSOCIATED                   1227
+#define ERROR_ADDRESS_NOT_ASSOCIATED                       1228
+#define ERROR_CONNECTION_INVALID                           1229
+#define ERROR_CONNECTION_ACTIVE                            1230
+#define ERROR_NETWORK_UNREACHABLE                          1231
+#define ERROR_HOST_UNREACHABLE                             1232
+#define ERROR_PROTOCOL_UNREACHABLE                         1233
+#define ERROR_PORT_UNREACHABLE                             1234
+#define ERROR_REQUEST_ABORTED                              1235
+#define ERROR_CONNECTION_ABORTED                           1236
+#define ERROR_RETRY                                        1237
+#define ERROR_CONNECTION_COUNT_LIMIT                       1238
+#define ERROR_LOGIN_TIME_RESTRICTION                       1239
+#define ERROR_LOGIN_WKSTA_RESTRICTION                      1240
+#define ERROR_INCORRECT_ADDRESS                            1241
+#define ERROR_ALREADY_REGISTERED                           1242
+#define ERROR_SERVICE_NOT_FOUND                            1243
+#define ERROR_NOT_AUTHENTICATED                            1244
+#define ERROR_NOT_LOGGED_ON                                1245
+#define ERROR_CONTINUE                                     1246
+#define ERROR_ALREADY_INITIALIZED                          1247
+#define ERROR_NO_MORE_DEVICES                              1248
+#define ERROR_NO_SUCH_SITE                                 1249
+#define ERROR_DOMAIN_CONTROLLER_EXISTS                     1250
+#define ERROR_ONLY_IF_CONNECTED                            1251
+#define ERROR_OVERRIDE_NOCHANGES                           1252
+#define ERROR_BAD_USER_PROFILE                             1253
+#define ERROR_NOT_SUPPORTED_ON_SBS                         1254
+#define ERROR_SERVER_SHUTDOWN_IN_PROGRESS                  1255
+#define ERROR_HOST_DOWN                                    1256
+#define ERROR_ACCESS_DISABLED_BY_POLICY                    1260
+#define ERROR_REG_NAT_CONSUMPTION                          1261
+#define ERROR_PKINIT_FAILURE                               1263
+#define ERROR_SMARTCARD_SUBSYSTEM_FAILURE                  1264
+#define ERROR_DOWNGRADE_DETECTED                           1265
+#define ERROR_MACHINE_LOCKED                               1271
+#define ERROR_CALLBACK_SUPPLIED_INVALID_DATA               1273
+#define ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED             1274
+#define ERROR_DRIVER_BLOCKED                               1275
+#define ERROR_INVALID_IMPORT_OF_NON_DLL                    1276
+#define ERROR_NOT_ALL_ASSIGNED                             1300
+#define ERROR_SOME_NOT_MAPPED                              1301
+#define ERROR_NO_QUOTAS_FOR_ACCOUNT                        1302
+#define ERROR_LOCAL_USER_SESSION_KEY                       1303
+#define ERROR_NULL_LM_PASSWORD                             1304
+#define ERROR_UNKNOWN_REVISION                             1305
+#define ERROR_REVISION_MISMATCH                            1306
+#define ERROR_INVALID_OWNER                                1307
+#define ERROR_INVALID_PRIMARY_GROUP                        1308
+#define ERROR_NO_IMPERSONATION_TOKEN                       1309
+#define ERROR_CANT_DISABLE_MANDATORY                       1310
+#define ERROR_NO_LOGON_SERVERS                             1311
+#define ERROR_NO_SUCH_LOGON_SESSION                        1312
+#define ERROR_NO_SUCH_PRIVILEGE                            1313
+#define ERROR_PRIVILEGE_NOT_HELD                           1314
+#define ERROR_INVALID_ACCOUNT_NAME                         1315
+#define ERROR_USER_EXISTS                                  1316
+#define ERROR_NO_SUCH_USER                                 1317
+#define ERROR_GROUP_EXISTS                                 1318
+#define ERROR_NO_SUCH_GROUP                                1319
+#define ERROR_MEMBER_IN_GROUP                              1320
+#define ERROR_MEMBER_NOT_IN_GROUP                          1321
+#define ERROR_LAST_ADMIN                                   1322
+#define ERROR_WRONG_PASSWORD                               1323
+#define ERROR_ILL_FORMED_PASSWORD                          1324
+#define ERROR_PASSWORD_RESTRICTION                         1325
+#define ERROR_LOGON_FAILURE                                1326
+#define ERROR_ACCOUNT_RESTRICTION                          1327
+#define ERROR_INVALID_LOGON_HOURS                          1328
+#define ERROR_INVALID_WORKSTATION                          1329
+#define ERROR_PASSWORD_EXPIRED                             1330
+#define ERROR_ACCOUNT_DISABLED                             1331
+#define ERROR_NONE_MAPPED                                  1332
+#define ERROR_TOO_MANY_LUIDS_REQUESTED                     1333
+#define ERROR_LUIDS_EXHAUSTED                              1334
+#define ERROR_INVALID_SUB_AUTHORITY                        1335
+#define ERROR_INVALID_ACL                                  1336
+#define ERROR_INVALID_SID                                  1337
+#define ERROR_INVALID_SECURITY_DESCR                       1338
+#define ERROR_BAD_INHERITANCE_ACL                          1340
+#define ERROR_SERVER_DISABLED                              1341
+#define ERROR_SERVER_NOT_DISABLED                          1342
+#define ERROR_INVALID_ID_AUTHORITY                         1343
+#define ERROR_ALLOTTED_SPACE_EXCEEDED                      1344
+#define ERROR_INVALID_GROUP_ATTRIBUTES                     1345
+#define ERROR_BAD_IMPERSONATION_LEVEL                      1346
+#define ERROR_CANT_OPEN_ANONYMOUS                          1347
+#define ERROR_BAD_VALIDATION_CLASS                         1348
+#define ERROR_BAD_TOKEN_TYPE                               1349
+#define ERROR_NO_SECURITY_ON_OBJECT                        1350
+#define ERROR_CANT_ACCESS_DOMAIN_INFO                      1351
+#define ERROR_INVALID_SERVER_STATE                         1352
+#define ERROR_INVALID_DOMAIN_STATE                         1353
+#define ERROR_INVALID_DOMAIN_ROLE                          1354
+#define ERROR_NO_SUCH_DOMAIN                               1355
+#define ERROR_DOMAIN_EXISTS                                1356
+#define ERROR_DOMAIN_LIMIT_EXCEEDED                        1357
+#define ERROR_INTERNAL_DB_CORRUPTION                       1358
+#define ERROR_INTERNAL_ERROR                               1359
+#define ERROR_GENERIC_NOT_MAPPED                           1360
+#define ERROR_BAD_DESCRIPTOR_FORMAT                        1361
+#define ERROR_NOT_LOGON_PROCESS                            1362
+#define ERROR_LOGON_SESSION_EXISTS                         1363
+#define ERROR_NO_SUCH_PACKAGE                              1364
+#define ERROR_BAD_LOGON_SESSION_STATE                      1365
+#define ERROR_LOGON_SESSION_COLLISION                      1366
+#define ERROR_INVALID_LOGON_TYPE                           1367
+#define ERROR_CANNOT_IMPERSONATE                           1368
+#define ERROR_RXACT_INVALID_STATE                          1369
+#define ERROR_RXACT_COMMIT_FAILURE                         1370
+#define ERROR_SPECIAL_ACCOUNT                              1371
+#define ERROR_SPECIAL_GROUP                                1372
+#define ERROR_SPECIAL_USER                                 1373
+#define ERROR_MEMBERS_PRIMARY_GROUP                        1374
+#define ERROR_TOKEN_ALREADY_IN_USE                         1375
+#define ERROR_NO_SUCH_ALIAS                                1376
+#define ERROR_MEMBER_NOT_IN_ALIAS                          1377
+#define ERROR_MEMBER_IN_ALIAS                              1378
+#define ERROR_ALIAS_EXISTS                                 1379
+#define ERROR_LOGON_NOT_GRANTED                            1380
+#define ERROR_TOO_MANY_SECRETS                             1381
+#define ERROR_SECRET_TOO_LONG                              1382
+#define ERROR_INTERNAL_DB_ERROR                            1383
+#define ERROR_TOO_MANY_CONTEXT_IDS                         1384
+#define ERROR_LOGON_TYPE_NOT_GRANTED                       1385
+#define ERROR_NT_CROSS_ENCRYPTION_REQUIRED                 1386
+#define ERROR_NO_SUCH_MEMBER                               1387
+#define ERROR_INVALID_MEMBER                               1388
+#define ERROR_TOO_MANY_SIDS                                1389
+#define ERROR_LM_CROSS_ENCRYPTION_REQUIRED                 1390
+#define ERROR_NO_INHERITANCE                               1391
+#define ERROR_FILE_CORRUPT                                 1392
+#define ERROR_DISK_CORRUPT                                 1393
+#define ERROR_NO_USER_SESSION_KEY                          1394
+#define ERROR_LICENSE_QUOTA_EXCEEDED                       1395
+#define ERROR_WRONG_TARGET_NAME                            1396
+#define ERROR_MUTUAL_AUTH_FAILED                           1397
+#define ERROR_TIME_SKEW                                    1398
+#define ERROR_CURRENT_DOMAIN_NOT_ALLOWED                   1399
+#define ERROR_INVALID_WINDOW_HANDLE                        1400
+#define ERROR_INVALID_MENU_HANDLE                          1401
+#define ERROR_INVALID_CURSOR_HANDLE                        1402
+#define ERROR_INVALID_ACCEL_HANDLE                         1403
+#define ERROR_INVALID_HOOK_HANDLE                          1404
+#define ERROR_INVALID_DWP_HANDLE                           1405
+#define ERROR_TLW_WITH_WSCHILD                             1406
+#define ERROR_CANNOT_FIND_WND_CLASS                        1407
+#define ERROR_WINDOW_OF_OTHER_THREAD                       1408
+#define ERROR_HOTKEY_ALREADY_REGISTERED                    1409
+#define ERROR_CLASS_ALREADY_EXISTS                         1410
+#define ERROR_CLASS_DOES_NOT_EXIST                         1411
+#define ERROR_CLASS_HAS_WINDOWS                            1412
+#define ERROR_INVALID_INDEX                                1413
+#define ERROR_INVALID_ICON_HANDLE                          1414
+#define ERROR_PRIVATE_DIALOG_INDEX                         1415
+#define ERROR_LISTBOX_ID_NOT_FOUND                         1416
+#define ERROR_NO_WILDCARD_CHARACTERS                       1417
+#define ERROR_CLIPBOARD_NOT_OPEN                           1418
+#define ERROR_HOTKEY_NOT_REGISTERED                        1419
+#define ERROR_WINDOW_NOT_DIALOG                            1420
+#define ERROR_CONTROL_ID_NOT_FOUND                         1421
+#define ERROR_INVALID_COMBOBOX_MESSAGE                     1422
+#define ERROR_WINDOW_NOT_COMBOBOX                          1423
+#define ERROR_INVALID_EDIT_HEIGHT                          1424
+#define ERROR_DC_NOT_FOUND                                 1425
+#define ERROR_INVALID_HOOK_FILTER                          1426
+#define ERROR_INVALID_FILTER_PROC                          1427
+#define ERROR_HOOK_NEEDS_HMOD                              1428
+#define ERROR_GLOBAL_ONLY_HOOK                             1429
+#define ERROR_JOURNAL_HOOK_SET                             1430
+#define ERROR_HOOK_NOT_INSTALLED                           1431
+#define ERROR_INVALID_LB_MESSAGE                           1432
+#define ERROR_SETCOUNT_ON_BAD_LB                           1433
+#define ERROR_LB_WITHOUT_TABSTOPS                          1434
+#define ERROR_DESTROY_OBJECT_OF_OTHER_THREAD               1435
+#define ERROR_CHILD_WINDOW_MENU                            1436
+#define ERROR_NO_SYSTEM_MENU                               1437
+#define ERROR_INVALID_MSGBOX_STYLE                         1438
+#define ERROR_INVALID_SPI_VALUE                            1439
+#define ERROR_SCREEN_ALREADY_LOCKED                        1440
+#define ERROR_HWNDS_HAVE_DIFF_PARENT                       1441
+#define ERROR_NOT_CHILD_WINDOW                             1442
+#define ERROR_INVALID_GW_COMMAND                           1443
+#define ERROR_INVALID_THREAD_ID                            1444
+#define ERROR_NON_MDICHILD_WINDOW                          1445
+#define ERROR_POPUP_ALREADY_ACTIVE                         1446
+#define ERROR_NO_SCROLLBARS                                1447
+#define ERROR_INVALID_SCROLLBAR_RANGE                      1448
+#define ERROR_INVALID_SHOWWIN_COMMAND                      1449
+#define ERROR_NO_SYSTEM_RESOURCES                          1450
+#define ERROR_NONPAGED_SYSTEM_RESOURCES                    1451
+#define ERROR_PAGED_SYSTEM_RESOURCES                       1452
+#define ERROR_WORKING_SET_QUOTA                            1453
+#define ERROR_PAGEFILE_QUOTA                               1454
+#define ERROR_COMMITMENT_LIMIT                             1455
+#define ERROR_MENU_ITEM_NOT_FOUND                          1456
+#define ERROR_INVALID_KEYBOARD_HANDLE                      1457
+#define ERROR_HOOK_TYPE_NOT_ALLOWED                        1458
+#define ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION           1459
+#define ERROR_TIMEOUT                                      1460
+#define ERROR_INVALID_MONITOR_HANDLE                       1461
+#define ERROR_EVENTLOG_FILE_CORRUPT                        1500
+#define ERROR_EVENTLOG_CANT_START                          1501
+#define ERROR_LOG_FILE_FULL                                1502
+#define ERROR_EVENTLOG_FILE_CHANGED                        1503
+#define ERROR_INSTALL_SERVICE_FAILURE                      1601
+#define ERROR_INSTALL_USEREXIT                             1602
+#define ERROR_INSTALL_FAILURE                              1603
+#define ERROR_INSTALL_SUSPEND                              1604
+#define ERROR_UNKNOWN_PRODUCT                              1605
+#define ERROR_UNKNOWN_FEATURE                              1606
+#define ERROR_UNKNOWN_COMPONENT                            1607
+#define ERROR_UNKNOWN_PROPERTY                             1608
+#define ERROR_INVALID_HANDLE_STATE                         1609
+#define ERROR_BAD_CONFIGURATION                            1610
+#define ERROR_INDEX_ABSENT                                 1611
+#define ERROR_INSTALL_SOURCE_ABSENT                        1612
+#define ERROR_INSTALL_PACKAGE_VERSION                      1613
+#define ERROR_PRODUCT_UNINSTALLED                          1614
+#define ERROR_BAD_QUERY_SYNTAX                             1615
+#define ERROR_INVALID_FIELD                                1616
+#define ERROR_DEVICE_REMOVED                               1617
+#define ERROR_INSTALL_ALREADY_RUNNING                      1618
+#define ERROR_INSTALL_PACKAGE_OPEN_FAILED                  1619
+#define ERROR_INSTALL_PACKAGE_INVALID                      1620
+#define ERROR_INSTALL_UI_FAILURE                           1621
+#define ERROR_INSTALL_LOG_FAILURE                          1622
+#define ERROR_INSTALL_LANGUAGE_UNSUPPORTED                 1623
+#define ERROR_INSTALL_TRANSFORM_FAILURE                    1624
+#define ERROR_INSTALL_PACKAGE_REJECTED                     1625
+#define ERROR_FUNCTION_NOT_CALLED                          1626
+#define ERROR_FUNCTION_FAILED                              1627
+#define ERROR_INVALID_TABLE                                1628
+#define ERROR_DATATYPE_MISMATCH                            1629
+#define ERROR_UNSUPPORTED_TYPE                             1630
+#define ERROR_CREATE_FAILED                                1631
+#define ERROR_INSTALL_TEMP_UNWRITABLE                      1632
+#define ERROR_INSTALL_PLATFORM_UNSUPPORTED                 1633
+#define ERROR_INSTALL_NOTUSED                              1634
+#define ERROR_PATCH_PACKAGE_OPEN_FAILED                    1635
+#define ERROR_PATCH_PACKAGE_INVALID                        1636
+#define ERROR_PATCH_PACKAGE_UNSUPPORTED                    1637
+#define ERROR_PRODUCT_VERSION                              1638
+#define ERROR_INVALID_COMMAND_LINE                         1639
+#define ERROR_INSTALL_REMOTE_DISALLOWED                    1640
+#define ERROR_SUCCESS_REBOOT_INITIATED                     1641
+#define ERROR_UNKNOWN_PATCH                                1647
+#define RPC_S_INVALID_STRING_BINDING                       1700
+#define RPC_S_WRONG_KIND_OF_BINDING                        1701
+#define RPC_S_INVALID_BINDING                              1702
+#define RPC_S_PROTSEQ_NOT_SUPPORTED                        1703
+#define RPC_S_INVALID_RPC_PROTSEQ                          1704
+#define RPC_S_INVALID_STRING_UUID                          1705
+#define RPC_S_INVALID_ENDPOINT_FORMAT                      1706
+#define RPC_S_INVALID_NET_ADDR                             1707
+#define RPC_S_NO_ENDPOINT_FOUND                            1708
+#define RPC_S_INVALID_TIMEOUT                              1709
+#define RPC_S_OBJECT_NOT_FOUND                             1710
+#define RPC_S_ALREADY_REGISTERED                           1711
+#define RPC_S_TYPE_ALREADY_REGISTERED                      1712
+#define RPC_S_ALREADY_LISTENING                            1713
+#define RPC_S_NO_PROTSEQS_REGISTERED                       1714
+#define RPC_S_NOT_LISTENING                                1715
+#define RPC_S_UNKNOWN_MGR_TYPE                             1716
+#define RPC_S_UNKNOWN_IF                                   1717
+#define RPC_S_NO_BINDINGS                                  1718
+#define RPC_S_NO_PROTSEQS                                  1719
+#define RPC_S_CANT_CREATE_ENDPOINT                         1720
+#define RPC_S_OUT_OF_RESOURCES                             1721
+#define RPC_S_SERVER_UNAVAILABLE                           1722
+#define RPC_S_SERVER_TOO_BUSY                              1723
+#define RPC_S_INVALID_NETWORK_OPTIONS                      1724
+#define RPC_S_NO_CALL_ACTIVE                               1725
+#define RPC_S_CALL_FAILED                                  1726
+#define RPC_S_CALL_FAILED_DNE                              1727
+#define RPC_S_PROTOCOL_ERROR                               1728
+#define RPC_S_UNSUPPORTED_TRANS_SYN                        1730
+#define RPC_S_UNSUPPORTED_TYPE                             1732
+#define RPC_S_INVALID_TAG                                  1733
+#define RPC_S_INVALID_BOUND                                1734
+#define RPC_S_NO_ENTRY_NAME                                1735
+#define RPC_S_INVALID_NAME_SYNTAX                          1736
+#define RPC_S_UNSUPPORTED_NAME_SYNTAX                      1737
+#define RPC_S_UUID_NO_ADDRESS                              1739
+#define RPC_S_DUPLICATE_ENDPOINT                           1740
+#define RPC_S_UNKNOWN_AUTHN_TYPE                           1741
+#define RPC_S_MAX_CALLS_TOO_SMALL                          1742
+#define RPC_S_STRING_TOO_LONG                              1743
+#define RPC_S_PROTSEQ_NOT_FOUND                            1744
+#define RPC_S_PROCNUM_OUT_OF_RANGE                         1745
+#define RPC_S_BINDING_HAS_NO_AUTH                          1746
+#define RPC_S_UNKNOWN_AUTHN_SERVICE                        1747
+#define RPC_S_UNKNOWN_AUTHN_LEVEL                          1748
+#define RPC_S_INVALID_AUTH_IDENTITY                        1749
+#define RPC_S_UNKNOWN_AUTHZ_SERVICE                        1750
+#define EPT_S_INVALID_ENTRY                                1751
+#define EPT_S_CANT_PERFORM_OP                              1752
+#define EPT_S_NOT_REGISTERED                               1753
+#define RPC_S_NOTHING_TO_EXPORT                            1754
+#define RPC_S_INCOMPLETE_NAME                              1755
+#define RPC_S_INVALID_VERS_OPTION                          1756
+#define RPC_S_NO_MORE_MEMBERS                              1757
+#define RPC_S_NOT_ALL_OBJS_UNEXPORTED                      1758
+#define RPC_S_INTERFACE_NOT_FOUND                          1759
+#define RPC_S_ENTRY_ALREADY_EXISTS                         1760
+#define RPC_S_ENTRY_NOT_FOUND                              1761
+#define RPC_S_NAME_SERVICE_UNAVAILABLE                     1762
+#define RPC_S_INVALID_NAF_ID                               1763
+#define RPC_S_CANNOT_SUPPORT                               1764
+#define RPC_S_NO_CONTEXT_AVAILABLE                         1765
+#define RPC_S_INTERNAL_ERROR                               1766
+#define RPC_S_ZERO_DIVIDE                                  1767
+#define RPC_S_ADDRESS_ERROR                                1768
+#define RPC_S_FP_DIV_ZERO                                  1769
+#define RPC_S_FP_UNDERFLOW                                 1770
+#define RPC_S_FP_OVERFLOW                                  1771
+#define RPC_X_NO_MORE_ENTRIES                              1772
+#define RPC_X_SS_CHAR_TRANS_OPEN_FAIL                      1773
+#define RPC_X_SS_CHAR_TRANS_SHORT_FILE                     1774
+#define RPC_X_SS_IN_NULL_CONTEXT                           1775
+#define RPC_X_SS_CONTEXT_DAMAGED                           1777
+#define RPC_X_SS_HANDLES_MISMATCH                          1778
+#define RPC_X_SS_CANNOT_GET_CALL_HANDLE                    1779
+#define RPC_X_NULL_REF_POINTER                             1780
+#define RPC_X_ENUM_VALUE_OUT_OF_RANGE                      1781
+#define RPC_X_BYTE_COUNT_TOO_SMALL                         1782
+#define RPC_X_BAD_STUB_DATA                                1783
+#define ERROR_INVALID_USER_BUFFER                          1784
+#define ERROR_UNRECOGNIZED_MEDIA                           1785
+#define ERROR_NO_TRUST_LSA_SECRET                          1786
+#define ERROR_NO_TRUST_SAM_ACCOUNT                         1787
+#define ERROR_TRUSTED_DOMAIN_FAILURE                       1788
+#define ERROR_TRUSTED_RELATIONSHIP_FAILURE                 1789
+#define ERROR_TRUST_FAILURE                                1790
+#define RPC_S_CALL_IN_PROGRESS                             1791
+#define ERROR_NETLOGON_NOT_STARTED                         1792
+#define ERROR_ACCOUNT_EXPIRED                              1793
+#define ERROR_REDIRECTOR_HAS_OPEN_HANDLES                  1794
+#define ERROR_PRINTER_DRIVER_ALREADY_INSTALLED             1795
+#define ERROR_UNKNOWN_PORT                                 1796
+#define ERROR_UNKNOWN_PRINTER_DRIVER                       1797
+#define ERROR_UNKNOWN_PRINTPROCESSOR                       1798
+#define ERROR_INVALID_SEPARATOR_FILE                       1799
+#define ERROR_INVALID_PRIORITY                             1800
+#define ERROR_INVALID_PRINTER_NAME                         1801
+#define ERROR_PRINTER_ALREADY_EXISTS                       1802
+#define ERROR_INVALID_PRINTER_COMMAND                      1803
+#define ERROR_INVALID_DATATYPE                             1804
+#define ERROR_INVALID_ENVIRONMENT                          1805
+#define RPC_S_NO_MORE_BINDINGS                             1806
+#define ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT            1807
+#define ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT            1808
+#define ERROR_NOLOGON_SERVER_TRUST_ACCOUNT                 1809
+#define ERROR_DOMAIN_TRUST_INCONSISTENT                    1810
+#define ERROR_SERVER_HAS_OPEN_HANDLES                      1811
+#define ERROR_RESOURCE_DATA_NOT_FOUND                      1812
+#define ERROR_RESOURCE_TYPE_NOT_FOUND                      1813
+#define ERROR_RESOURCE_NAME_NOT_FOUND                      1814
+#define ERROR_RESOURCE_LANG_NOT_FOUND                      1815
+#define ERROR_NOT_ENOUGH_QUOTA                             1816
+#define RPC_S_NO_INTERFACES                                1817
+#define RPC_S_CALL_CANCELLED                               1818
+#define RPC_S_BINDING_INCOMPLETE                           1819
+#define RPC_S_COMM_FAILURE                                 1820
+#define RPC_S_UNSUPPORTED_AUTHN_LEVEL                      1821
+#define RPC_S_NO_PRINC_NAME                                1822
+#define RPC_S_NOT_RPC_ERROR                                1823
+#define RPC_S_UUID_LOCAL_ONLY                              1824
+#define RPC_S_SEC_PKG_ERROR                                1825
+#define RPC_S_NOT_CANCELLED                                1826
+#define RPC_X_INVALID_ES_ACTION                            1827
+#define RPC_X_WRONG_ES_VERSION                             1828
+#define RPC_X_WRONG_STUB_VERSION                           1829
+#define RPC_X_INVALID_PIPE_OBJECT                          1830
+#define RPC_X_WRONG_PIPE_ORDER                             1831
+#define RPC_X_WRONG_PIPE_VERSION                           1832
+#define RPC_S_GROUP_MEMBER_NOT_FOUND                       1898
+#define EPT_S_CANT_CREATE                                  1899
+#define RPC_S_INVALID_OBJECT                               1900
+#define ERROR_INVALID_TIME                                 1901
+#define ERROR_INVALID_FORM_NAME                            1902
+#define ERROR_INVALID_FORM_SIZE                            1903
+#define ERROR_ALREADY_WAITING                              1904
+#define ERROR_PRINTER_DELETED                              1905
+#define ERROR_INVALID_PRINTER_STATE                        1906
+#define ERROR_PASSWORD_MUST_CHANGE                         1907
+#define ERROR_DOMAIN_CONTROLLER_NOT_FOUND                  1908
+#define ERROR_ACCOUNT_LOCKED_OUT                           1909
+#define OR_INVALID_OXID                                    1910
+#define OR_INVALID_OID                                     1911
+#define OR_INVALID_SET                                     1912
+#define RPC_S_SEND_INCOMPLETE                              1913
+#define RPC_S_INVALID_ASYNC_HANDLE                         1914
+#define RPC_S_INVALID_ASYNC_CALL                           1915
+#define RPC_X_PIPE_CLOSED                                  1916
+#define RPC_X_PIPE_DISCIPLINE_ERROR                        1917
+#define RPC_X_PIPE_EMPTY                                   1918
+#define ERROR_NO_SITENAME                                  1919
+#define ERROR_CANT_ACCESS_FILE                             1920
+#define ERROR_CANT_RESOLVE_FILENAME                        1921
+#define RPC_S_ENTRY_TYPE_MISMATCH                          1922
+#define RPC_S_NOT_ALL_OBJS_EXPORTED                        1923
+#define RPC_S_INTERFACE_NOT_EXPORTED                       1924
+#define RPC_S_PROFILE_NOT_ADDED                            1925
+#define RPC_S_PRF_ELT_NOT_ADDED                            1926
+#define RPC_S_PRF_ELT_NOT_REMOVED                          1927
+#define RPC_S_GRP_ELT_NOT_ADDED                            1928
+#define RPC_S_GRP_ELT_NOT_REMOVED                          1929
+#define ERROR_KM_DRIVER_BLOCKED                            1930
+#define ERROR_CONTEXT_EXPIRED                              1931
+#define ERROR_PER_USER_TRUST_QUOTA_EXCEEDED                1932
+#define ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED                1933
+#define ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED             1934
+#define ERROR_AUTHENTICATION_FIREWALL_FAILED               1935
+#define ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED             1936
+#define ERROR_INVALID_PIXEL_FORMAT                         2000
+#define ERROR_BAD_DRIVER                                   2001
+#define ERROR_INVALID_WINDOW_STYLE                         2002
+#define ERROR_METAFILE_NOT_SUPPORTED                       2003
+#define ERROR_TRANSFORM_NOT_SUPPORTED                      2004
+#define ERROR_CLIPPING_NOT_SUPPORTED                       2005
+#define ERROR_INVALID_CMM                                  2010
+#define ERROR_INVALID_PROFILE                              2011
+#define ERROR_TAG_NOT_FOUND                                2012
+#define ERROR_TAG_NOT_PRESENT                              2013
+#define ERROR_DUPLICATE_TAG                                2014
+#define ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE           2015
+#define ERROR_PROFILE_NOT_FOUND                            2016
+#define ERROR_INVALID_COLORSPACE                           2017
+#define ERROR_ICM_NOT_ENABLED                              2018
+#define ERROR_DELETING_ICM_XFORM                           2019
+#define ERROR_INVALID_TRANSFORM                            2020
+#define ERROR_COLORSPACE_MISMATCH                          2021
+#define ERROR_INVALID_COLORINDEX                           2022
+#define ERROR_CONNECTED_OTHER_PASSWORD                     2108
+#define ERROR_BAD_USERNAME                                 2202
+#define ERROR_NOT_CONNECTED                                2250
+#define ERROR_OPEN_FILES                                   2401
+#define ERROR_ACTIVE_CONNECTIONS                           2402
+#define ERROR_DEVICE_IN_USE                                2404
+#define ERROR_UNKNOWN_PRINT_MONITOR                        3000
+#define ERROR_PRINTER_DRIVER_IN_USE                        3001
+#define ERROR_SPOOL_FILE_NOT_FOUND                         3002
+#define ERROR_SPL_NO_STARTDOC                              3003
+#define ERROR_SPL_NO_ADDJOB                                3004
+#define ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED            3005
+#define ERROR_PRINT_MONITOR_ALREADY_INSTALLED              3006
+#define ERROR_INVALID_PRINT_MONITOR                        3007
+#define ERROR_PRINT_MONITOR_IN_USE                         3008
+#define ERROR_PRINTER_HAS_JOBS_QUEUED                      3009
+#define ERROR_SUCCESS_REBOOT_REQUIRED                      3010
+#define ERROR_SUCCESS_RESTART_REQUIRED                     3011
+#define ERROR_PRINTER_NOT_FOUND                            3012
+#define ERROR_PRINTER_DRIVER_WARNED                        3013
+#define ERROR_PRINTER_DRIVER_BLOCKED                       3014
+#define ERROR_WINS_INTERNAL                                4000
+#define ERROR_CAN_NOT_DEL_LOCAL_WINS                       4001
+#define ERROR_STATIC_INIT                                  4002
+#define ERROR_INC_BACKUP                                   4003
+#define ERROR_FULL_BACKUP                                  4004
+#define ERROR_REC_NON_EXISTENT                             4005
+#define ERROR_RPL_NOT_ALLOWED                              4006
+#define ERROR_DHCP_ADDRESS_CONFLICT                        4100
+#define ERROR_WMI_GUID_NOT_FOUND                           4200
+#define ERROR_WMI_INSTANCE_NOT_FOUND                       4201
+#define ERROR_WMI_ITEMID_NOT_FOUND                         4202
+#define ERROR_WMI_TRY_AGAIN                                4203
+#define ERROR_WMI_DP_NOT_FOUND                             4204
+#define ERROR_WMI_UNRESOLVED_INSTANCE_REF                  4205
+#define ERROR_WMI_ALREADY_ENABLED                          4206
+#define ERROR_WMI_GUID_DISCONNECTED                        4207
+#define ERROR_WMI_SERVER_UNAVAILABLE                       4208
+#define ERROR_WMI_DP_FAILED                                4209
+#define ERROR_WMI_INVALID_MOF                              4210
+#define ERROR_WMI_INVALID_REGINFO                          4211
+#define ERROR_WMI_ALREADY_DISABLED                         4212
+#define ERROR_WMI_READ_ONLY                                4213
+#define ERROR_WMI_SET_FAILURE                              4214
+#define ERROR_INVALID_MEDIA                                4300
+#define ERROR_INVALID_LIBRARY                              4301
+#define ERROR_INVALID_MEDIA_POOL                           4302
+#define ERROR_DRIVE_MEDIA_MISMATCH                         4303
+#define ERROR_MEDIA_OFFLINE                                4304
+#define ERROR_LIBRARY_OFFLINE                              4305
+#define ERROR_EMPTY                                        4306
+#define ERROR_NOT_EMPTY                                    4307
+#define ERROR_MEDIA_UNAVAILABLE                            4308
+#define ERROR_RESOURCE_DISABLED                            4309
+#define ERROR_INVALID_CLEANER                              4310
+#define ERROR_UNABLE_TO_CLEAN                              4311
+#define ERROR_OBJECT_NOT_FOUND                             4312
+#define ERROR_DATABASE_FAILURE                             4313
+#define ERROR_DATABASE_FULL                                4314
+#define ERROR_MEDIA_INCOMPATIBLE                           4315
+#define ERROR_RESOURCE_NOT_PRESENT                         4316
+#define ERROR_INVALID_OPERATION                            4317
+#define ERROR_MEDIA_NOT_AVAILABLE                          4318
+#define ERROR_DEVICE_NOT_AVAILABLE                         4319
+#define ERROR_REQUEST_REFUSED                              4320
+#define ERROR_INVALID_DRIVE_OBJECT                         4321
+#define ERROR_LIBRARY_FULL                                 4322
+#define ERROR_MEDIUM_NOT_ACCESSIBLE                        4323
+#define ERROR_UNABLE_TO_LOAD_MEDIUM                        4324
+#define ERROR_UNABLE_TO_INVENTORY_DRIVE                    4325
+#define ERROR_UNABLE_TO_INVENTORY_SLOT                     4326
+#define ERROR_UNABLE_TO_INVENTORY_TRANSPORT                4327
+#define ERROR_TRANSPORT_FULL                               4328
+#define ERROR_CONTROLLING_IEPORT                           4329
+#define ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA                4330
+#define ERROR_CLEANER_SLOT_SET                             4331
+#define ERROR_CLEANER_SLOT_NOT_SET                         4332
+#define ERROR_CLEANER_CARTRIDGE_SPENT                      4333
+#define ERROR_UNEXPECTED_OMID                              4334
+#define ERROR_CANT_DELETE_LAST_ITEM                        4335
+#define ERROR_MESSAGE_EXCEEDS_MAX_SIZE                     4336
+#define ERROR_VOLUME_CONTAINS_SYS_FILES                    4337
+#define ERROR_INDIGENOUS_TYPE                              4338
+#define ERROR_NO_SUPPORTING_DRIVES                         4339
+#define ERROR_CLEANER_CARTRIDGE_INSTALLED                  4340
+#define ERROR_FILE_OFFLINE                                 4350
+#define ERROR_REMOTE_STORAGE_NOT_ACTIVE                    4351
+#define ERROR_REMOTE_STORAGE_MEDIA_ERROR                   4352
+#define ERROR_NOT_A_REPARSE_POINT                          4390
+#define ERROR_REPARSE_ATTRIBUTE_CONFLICT                   4391
+#define ERROR_INVALID_REPARSE_DATA                         4392
+#define ERROR_REPARSE_TAG_INVALID                          4393
+#define ERROR_REPARSE_TAG_MISMATCH                         4394
+#define ERROR_VOLUME_NOT_SIS_ENABLED                       4500
+#define ERROR_DEPENDENT_RESOURCE_EXISTS                    5001
+#define ERROR_DEPENDENCY_NOT_FOUND                         5002
+#define ERROR_DEPENDENCY_ALREADY_EXISTS                    5003
+#define ERROR_RESOURCE_NOT_ONLINE                          5004
+#define ERROR_HOST_NODE_NOT_AVAILABLE                      5005
+#define ERROR_RESOURCE_NOT_AVAILABLE                       5006
+#define ERROR_RESOURCE_NOT_FOUND                           5007
+#define ERROR_SHUTDOWN_CLUSTER                             5008
+#define ERROR_CANT_EVICT_ACTIVE_NODE                       5009
+#define ERROR_OBJECT_ALREADY_EXISTS                        5010
+#define ERROR_OBJECT_IN_LIST                               5011
+#define ERROR_GROUP_NOT_AVAILABLE                          5012
+#define ERROR_GROUP_NOT_FOUND                              5013
+#define ERROR_GROUP_NOT_ONLINE                             5014
+#define ERROR_HOST_NODE_NOT_RESOURCE_OWNER                 5015
+#define ERROR_HOST_NODE_NOT_GROUP_OWNER                    5016
+#define ERROR_RESMON_CREATE_FAILED                         5017
+#define ERROR_RESMON_ONLINE_FAILED                         5018
+#define ERROR_RESOURCE_ONLINE                              5019
+#define ERROR_QUORUM_RESOURCE                              5020
+#define ERROR_NOT_QUORUM_CAPABLE                           5021
+#define ERROR_CLUSTER_SHUTTING_DOWN                        5022
+#define ERROR_INVALID_STATE                                5023
+#define ERROR_RESOURCE_PROPERTIES_STORED                   5024
+#define ERROR_NOT_QUORUM_CLASS                             5025
+#define ERROR_CORE_RESOURCE                                5026
+#define ERROR_QUORUM_RESOURCE_ONLINE_FAILED                5027
+#define ERROR_QUORUMLOG_OPEN_FAILED                        5028
+#define ERROR_CLUSTERLOG_CORRUPT                           5029
+#define ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE            5030
+#define ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE                   5031
+#define ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND                5032
+#define ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE                  5033
+#define ERROR_QUORUM_OWNER_ALIVE                           5034
+#define ERROR_NETWORK_NOT_AVAILABLE                        5035
+#define ERROR_NODE_NOT_AVAILABLE                           5036
+#define ERROR_ALL_NODES_NOT_AVAILABLE                      5037
+#define ERROR_RESOURCE_FAILED                              5038
+#define ERROR_CLUSTER_INVALID_NODE                         5039
+#define ERROR_CLUSTER_NODE_EXISTS                          5040
+#define ERROR_CLUSTER_JOIN_IN_PROGRESS                     5041
+#define ERROR_CLUSTER_NODE_NOT_FOUND                       5042
+#define ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND                 5043
+#define ERROR_CLUSTER_NETWORK_EXISTS                       5044
+#define ERROR_CLUSTER_NETWORK_NOT_FOUND                    5045
+#define ERROR_CLUSTER_NETINTERFACE_EXISTS                  5046
+#define ERROR_CLUSTER_NETINTERFACE_NOT_FOUND               5047
+#define ERROR_CLUSTER_INVALID_REQUEST                      5048
+#define ERROR_CLUSTER_INVALID_NETWORK_PROVIDER             5049
+#define ERROR_CLUSTER_NODE_DOWN                            5050
+#define ERROR_CLUSTER_NODE_UNREACHABLE                     5051
+#define ERROR_CLUSTER_NODE_NOT_MEMBER                      5052
+#define ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS                 5053
+#define ERROR_CLUSTER_INVALID_NETWORK                      5054
+#define ERROR_CLUSTER_NODE_UP                              5056
+#define ERROR_CLUSTER_IPADDR_IN_USE                        5057
+#define ERROR_CLUSTER_NODE_NOT_PAUSED                      5058
+#define ERROR_CLUSTER_NO_SECURITY_CONTEXT                  5059
+#define ERROR_CLUSTER_NETWORK_NOT_INTERNAL                 5060
+#define ERROR_CLUSTER_NODE_ALREADY_UP                      5061
+#define ERROR_CLUSTER_NODE_ALREADY_DOWN                    5062
+#define ERROR_CLUSTER_NETWORK_ALREADY_ONLINE               5063
+#define ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE              5064
+#define ERROR_CLUSTER_NODE_ALREADY_MEMBER                  5065
+#define ERROR_CLUSTER_LAST_INTERNAL_NETWORK                5066
+#define ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS               5067
+#define ERROR_INVALID_OPERATION_ON_QUORUM                  5068
+#define ERROR_DEPENDENCY_NOT_ALLOWED                       5069
+#define ERROR_CLUSTER_NODE_PAUSED                          5070
+#define ERROR_NODE_CANT_HOST_RESOURCE                      5071
+#define ERROR_CLUSTER_NODE_NOT_READY                       5072
+#define ERROR_CLUSTER_NODE_SHUTTING_DOWN                   5073
+#define ERROR_CLUSTER_JOIN_ABORTED                         5074
+#define ERROR_CLUSTER_INCOMPATIBLE_VERSIONS                5075
+#define ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED         5076
+#define ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED                5077
+#define ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND              5078
+#define ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED                5079
+#define ERROR_CLUSTER_RESNAME_NOT_FOUND                    5080
+#define ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED           5081
+#define ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST                5082
+#define ERROR_CLUSTER_DATABASE_SEQMISMATCH                 5083
+#define ERROR_RESMON_INVALID_STATE                         5084
+#define ERROR_CLUSTER_GUM_NOT_LOCKER                       5085
+#define ERROR_QUORUM_DISK_NOT_FOUND                        5086
+#define ERROR_DATABASE_BACKUP_CORRUPT                      5087
+#define ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT            5088
+#define ERROR_RESOURCE_PROPERTY_UNCHANGEABLE               5089
+#define ERROR_ENCRYPTION_FAILED                            6000
+#define ERROR_DECRYPTION_FAILED                            6001
+#define ERROR_FILE_ENCRYPTED                               6002
+#define ERROR_NO_RECOVERY_POLICY                           6003
+#define ERROR_NO_EFS                                       6004
+#define ERROR_WRONG_EFS                                    6005
+#define ERROR_NO_USER_KEYS                                 6006
+#define ERROR_FILE_NOT_ENCRYPTED                           6007
+#define ERROR_NOT_EXPORT_FORMAT                            6008
+#define ERROR_FILE_READ_ONLY                               6009
+#define ERROR_DIR_EFS_DISALLOWED                           6010
+#define ERROR_EFS_SERVER_NOT_TRUSTED                       6011
+#define ERROR_EFS_ALG_BLOB_TOO_BIG                         6013
+#define ERROR_NO_BROWSER_SERVERS_FOUND                     6118
+#define SCHED_E_SERVICE_NOT_LOCALSYSTEM                    6200
+#define ERROR_CTX_WINSTATION_NAME_INVALID                  7001
+#define ERROR_CTX_INVALID_PD                               7002
+#define ERROR_CTX_PD_NOT_FOUND                             7003
+#define ERROR_CTX_WD_NOT_FOUND                             7004
+#define ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY               7005
+#define ERROR_CTX_SERVICE_NAME_COLLISION                   7006
+#define ERROR_CTX_CLOSE_PENDING                            7007
+#define ERROR_CTX_NO_OUTBUF                                7008
+#define ERROR_CTX_MODEM_INF_NOT_FOUND                      7009
+#define ERROR_CTX_INVALID_MODEMNAME                        7010
+#define ERROR_CTX_MODEM_RESPONSE_ERROR                     7011
+#define ERROR_CTX_MODEM_RESPONSE_TIMEOUT                   7012
+#define ERROR_CTX_MODEM_RESPONSE_NO_CARRIER                7013
+#define ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE               7014
+#define ERROR_CTX_MODEM_RESPONSE_BUSY                      7015
+#define ERROR_CTX_MODEM_RESPONSE_VOICE                     7016
+#define ERROR_CTX_TD_ERROR                                 7017
+#define ERROR_CTX_WINSTATION_NOT_FOUND                     7022
+#define ERROR_CTX_WINSTATION_ALREADY_EXISTS                7023
+#define ERROR_CTX_WINSTATION_BUSY                          7024
+#define ERROR_CTX_BAD_VIDEO_MODE                           7025
+#define ERROR_CTX_GRAPHICS_INVALID                         7035
+#define ERROR_CTX_LOGON_DISABLED                           7037
+#define ERROR_CTX_NOT_CONSOLE                              7038
+#define ERROR_CTX_CLIENT_QUERY_TIMEOUT                     7040
+#define ERROR_CTX_CONSOLE_DISCONNECT                       7041
+#define ERROR_CTX_CONSOLE_CONNECT                          7042
+#define ERROR_CTX_SHADOW_DENIED                            7044
+#define ERROR_CTX_WINSTATION_ACCESS_DENIED                 7045
+#define ERROR_CTX_INVALID_WD                               7049
+#define ERROR_CTX_SHADOW_INVALID                           7050
+#define ERROR_CTX_SHADOW_DISABLED                          7051
+#define ERROR_CTX_CLIENT_LICENSE_IN_USE                    7052
+#define ERROR_CTX_CLIENT_LICENSE_NOT_SET                   7053
+#define ERROR_CTX_LICENSE_NOT_AVAILABLE                    7054
+#define ERROR_CTX_LICENSE_CLIENT_INVALID                   7055
+#define ERROR_CTX_LICENSE_EXPIRED                          7056
+#define ERROR_CTX_SHADOW_NOT_RUNNING                       7057
+#define ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE              7058
+#define FRS_ERR_INVALID_API_SEQUENCE                       8001
+#define FRS_ERR_STARTING_SERVICE                           8002
+#define FRS_ERR_STOPPING_SERVICE                           8003
+#define FRS_ERR_INTERNAL_API                               8004
+#define FRS_ERR_INTERNAL                                   8005
+#define FRS_ERR_SERVICE_COMM                               8006
+#define FRS_ERR_INSUFFICIENT_PRIV                          8007
+#define FRS_ERR_AUTHENTICATION                             8008
+#define FRS_ERR_PARENT_INSUFFICIENT_PRIV                   8009
+#define FRS_ERR_PARENT_AUTHENTICATION                      8010
+#define FRS_ERR_CHILD_TO_PARENT_COMM                       8011
+#define FRS_ERR_PARENT_TO_CHILD_COMM                       8012
+#define FRS_ERR_SYSVOL_POPULATE                            8013
+#define FRS_ERR_SYSVOL_POPULATE_TIMEOUT                    8014
+#define FRS_ERR_SYSVOL_IS_BUSY                             8015
+#define FRS_ERR_SYSVOL_DEMOTE                              8016
+#define FRS_ERR_INVALID_SERVICE_PARAMETER                  8017
+#define ERROR_DS_NOT_INSTALLED                             8200
+#define ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY              8201
+#define ERROR_DS_NO_ATTRIBUTE_OR_VALUE                     8202
+#define ERROR_DS_INVALID_ATTRIBUTE_SYNTAX                  8203
+#define ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED                  8204
+#define ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS                 8205
+#define ERROR_DS_BUSY                                      8206
+#define ERROR_DS_UNAVAILABLE                               8207
+#define ERROR_DS_NO_RIDS_ALLOCATED                         8208
+#define ERROR_DS_NO_MORE_RIDS                              8209
+#define ERROR_DS_INCORRECT_ROLE_OWNER                      8210
+#define ERROR_DS_RIDMGR_INIT_ERROR                         8211
+#define ERROR_DS_OBJ_CLASS_VIOLATION                       8212
+#define ERROR_DS_CANT_ON_NON_LEAF                          8213
+#define ERROR_DS_CANT_ON_RDN                               8214
+#define ERROR_DS_CANT_MOD_OBJ_CLASS                        8215
+#define ERROR_DS_CROSS_DOM_MOVE_ERROR                      8216
+#define ERROR_DS_GC_NOT_AVAILABLE                          8217
+#define ERROR_SHARED_POLICY                                8218
+#define ERROR_POLICY_OBJECT_NOT_FOUND                      8219
+#define ERROR_POLICY_ONLY_IN_DS                            8220
+#define ERROR_PROMOTION_ACTIVE                             8221
+#define ERROR_NO_PROMOTION_ACTIVE                          8222
+#define ERROR_DS_OPERATIONS_ERROR                          8224
+#define ERROR_DS_PROTOCOL_ERROR                            8225
+#define ERROR_DS_TIMELIMIT_EXCEEDED                        8226
+#define ERROR_DS_SIZELIMIT_EXCEEDED                        8227
+#define ERROR_DS_ADMIN_LIMIT_EXCEEDED                      8228
+#define ERROR_DS_COMPARE_FALSE                             8229
+#define ERROR_DS_COMPARE_TRUE                              8230
+#define ERROR_DS_AUTH_METHOD_NOT_SUPPORTED                 8231
+#define ERROR_DS_STRONG_AUTH_REQUIRED                      8232
+#define ERROR_DS_INAPPROPRIATE_AUTH                        8233
+#define ERROR_DS_AUTH_UNKNOWN                              8234
+#define ERROR_DS_REFERRAL                                  8235
+#define ERROR_DS_UNAVAILABLE_CRIT_EXTENSION                8236
+#define ERROR_DS_CONFIDENTIALITY_REQUIRED                  8237
+#define ERROR_DS_INAPPROPRIATE_MATCHING                    8238
+#define ERROR_DS_CONSTRAINT_VIOLATION                      8239
+#define ERROR_DS_NO_SUCH_OBJECT                            8240
+#define ERROR_DS_ALIAS_PROBLEM                             8241
+#define ERROR_DS_INVALID_DN_SYNTAX                         8242
+#define ERROR_DS_IS_LEAF                                   8243
+#define ERROR_DS_ALIAS_DEREF_PROBLEM                       8244
+#define ERROR_DS_UNWILLING_TO_PERFORM                      8245
+#define ERROR_DS_LOOP_DETECT                               8246
+#define ERROR_DS_NAMING_VIOLATION                          8247
+#define ERROR_DS_OBJECT_RESULTS_TOO_LARGE                  8248
+#define ERROR_DS_AFFECTS_MULTIPLE_DSAS                     8249
+#define ERROR_DS_SERVER_DOWN                               8250
+#define ERROR_DS_LOCAL_ERROR                               8251
+#define ERROR_DS_ENCODING_ERROR                            8252
+#define ERROR_DS_DECODING_ERROR                            8253
+#define ERROR_DS_FILTER_UNKNOWN                            8254
+#define ERROR_DS_PARAM_ERROR                               8255
+#define ERROR_DS_NOT_SUPPORTED                             8256
+#define ERROR_DS_NO_RESULTS_RETURNED                       8257
+#define ERROR_DS_CONTROL_NOT_FOUND                         8258
+#define ERROR_DS_CLIENT_LOOP                               8259
+#define ERROR_DS_REFERRAL_LIMIT_EXCEEDED                   8260
+#define ERROR_DS_ROOT_MUST_BE_NC                           8301
+#define ERROR_DS_ADD_REPLICA_INHIBITED                     8302
+#define ERROR_DS_ATT_NOT_DEF_IN_SCHEMA                     8303
+#define ERROR_DS_MAX_OBJ_SIZE_EXCEEDED                     8304
+#define ERROR_DS_OBJ_STRING_NAME_EXISTS                    8305
+#define ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA                  8306
+#define ERROR_DS_RDN_DOESNT_MATCH_SCHEMA                   8307
+#define ERROR_DS_NO_REQUESTED_ATTS_FOUND                   8308
+#define ERROR_DS_USER_BUFFER_TO_SMALL                      8309
+#define ERROR_DS_ATT_IS_NOT_ON_OBJ                         8310
+#define ERROR_DS_ILLEGAL_MOD_OPERATION                     8311
+#define ERROR_DS_OBJ_TOO_LARGE                             8312
+#define ERROR_DS_BAD_INSTANCE_TYPE                         8313
+#define ERROR_DS_MASTERDSA_REQUIRED                        8314
+#define ERROR_DS_OBJECT_CLASS_REQUIRED                     8315
+#define ERROR_DS_MISSING_REQUIRED_ATT                      8316
+#define ERROR_DS_ATT_NOT_DEF_FOR_CLASS                     8317
+#define ERROR_DS_ATT_ALREADY_EXISTS                        8318
+#define ERROR_DS_CANT_ADD_ATT_VALUES                       8320
+#define ERROR_DS_SINGLE_VALUE_CONSTRAINT                   8321
+#define ERROR_DS_RANGE_CONSTRAINT                          8322
+#define ERROR_DS_ATT_VAL_ALREADY_EXISTS                    8323
+#define ERROR_DS_CANT_REM_MISSING_ATT                      8324
+#define ERROR_DS_CANT_REM_MISSING_ATT_VAL                  8325
+#define ERROR_DS_ROOT_CANT_BE_SUBREF                       8326
+#define ERROR_DS_NO_CHAINING                               8327
+#define ERROR_DS_NO_CHAINED_EVAL                           8328
+#define ERROR_DS_NO_PARENT_OBJECT                          8329
+#define ERROR_DS_PARENT_IS_AN_ALIAS                        8330
+#define ERROR_DS_CANT_MIX_MASTER_AND_REPS                  8331
+#define ERROR_DS_CHILDREN_EXIST                            8332
+#define ERROR_DS_OBJ_NOT_FOUND                             8333
+#define ERROR_DS_ALIASED_OBJ_MISSING                       8334
+#define ERROR_DS_BAD_NAME_SYNTAX                           8335
+#define ERROR_DS_ALIAS_POINTS_TO_ALIAS                     8336
+#define ERROR_DS_CANT_DEREF_ALIAS                          8337
+#define ERROR_DS_OUT_OF_SCOPE                              8338
+#define ERROR_DS_CANT_DELETE_DSA_OBJ                       8340
+#define ERROR_DS_GENERIC_ERROR                             8341
+#define ERROR_DS_DSA_MUST_BE_INT_MASTER                    8342
+#define ERROR_DS_CLASS_NOT_DSA                             8343
+#define ERROR_DS_INSUFF_ACCESS_RIGHTS                      8344
+#define ERROR_DS_ILLEGAL_SUPERIOR                          8345
+#define ERROR_DS_ATTRIBUTE_OWNED_BY_SAM                    8346
+#define ERROR_DS_NAME_TOO_MANY_PARTS                       8347
+#define ERROR_DS_NAME_TOO_LONG                             8348
+#define ERROR_DS_NAME_VALUE_TOO_LONG                       8349
+#define ERROR_DS_NAME_UNPARSEABLE                          8350
+#define ERROR_DS_NAME_TYPE_UNKNOWN                         8351
+#define ERROR_DS_NOT_AN_OBJECT                             8352
+#define ERROR_DS_SEC_DESC_TOO_SHORT                        8353
+#define ERROR_DS_SEC_DESC_INVALID                          8354
+#define ERROR_DS_NO_DELETED_NAME                           8355
+#define ERROR_DS_SUBREF_MUST_HAVE_PARENT                   8356
+#define ERROR_DS_NCNAME_MUST_BE_NC                         8357
+#define ERROR_DS_CANT_ADD_SYSTEM_ONLY                      8358
+#define ERROR_DS_CLASS_MUST_BE_CONCRETE                    8359
+#define ERROR_DS_INVALID_DMD                               8360
+#define ERROR_DS_OBJ_GUID_EXISTS                           8361
+#define ERROR_DS_NOT_ON_BACKLINK                           8362
+#define ERROR_DS_NO_CROSSREF_FOR_NC                        8363
+#define ERROR_DS_SHUTTING_DOWN                             8364
+#define ERROR_DS_UNKNOWN_OPERATION                         8365
+#define ERROR_DS_INVALID_ROLE_OWNER                        8366
+#define ERROR_DS_COULDNT_CONTACT_FSMO                      8367
+#define ERROR_DS_CROSS_NC_DN_RENAME                        8368
+#define ERROR_DS_CANT_MOD_SYSTEM_ONLY                      8369
+#define ERROR_DS_REPLICATOR_ONLY                           8370
+#define ERROR_DS_OBJ_CLASS_NOT_DEFINED                     8371
+#define ERROR_DS_OBJ_CLASS_NOT_SUBCLASS                    8372
+#define ERROR_DS_NAME_REFERENCE_INVALID                    8373
+#define ERROR_DS_CROSS_REF_EXISTS                          8374
+#define ERROR_DS_CANT_DEL_MASTER_CROSSREF                  8375
+#define ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD                8376
+#define ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX                 8377
+#define ERROR_DS_DUP_RDN                                   8378
+#define ERROR_DS_DUP_OID                                   8379
+#define ERROR_DS_DUP_MAPI_ID                               8380
+#define ERROR_DS_DUP_SCHEMA_ID_GUID                        8381
+#define ERROR_DS_DUP_LDAP_DISPLAY_NAME                     8382
+#define ERROR_DS_SEMANTIC_ATT_TEST                         8383
+#define ERROR_DS_SYNTAX_MISMATCH                           8384
+#define ERROR_DS_EXISTS_IN_MUST_HAVE                       8385
+#define ERROR_DS_EXISTS_IN_MAY_HAVE                        8386
+#define ERROR_DS_NONEXISTENT_MAY_HAVE                      8387
+#define ERROR_DS_NONEXISTENT_MUST_HAVE                     8388
+#define ERROR_DS_AUX_CLS_TEST_FAIL                         8389
+#define ERROR_DS_NONEXISTENT_POSS_SUP                      8390
+#define ERROR_DS_SUB_CLS_TEST_FAIL                         8391
+#define ERROR_DS_BAD_RDN_ATT_ID_SYNTAX                     8392
+#define ERROR_DS_EXISTS_IN_AUX_CLS                         8393
+#define ERROR_DS_EXISTS_IN_SUB_CLS                         8394
+#define ERROR_DS_EXISTS_IN_POSS_SUP                        8395
+#define ERROR_DS_RECALCSCHEMA_FAILED                       8396
+#define ERROR_DS_TREE_DELETE_NOT_FINISHED                  8397
+#define ERROR_DS_CANT_DELETE                               8398
+#define ERROR_DS_ATT_SCHEMA_REQ_ID                         8399
+#define ERROR_DS_BAD_ATT_SCHEMA_SYNTAX                     8400
+#define ERROR_DS_CANT_CACHE_ATT                            8401
+#define ERROR_DS_CANT_CACHE_CLASS                          8402
+#define ERROR_DS_CANT_REMOVE_ATT_CACHE                     8403
+#define ERROR_DS_CANT_REMOVE_CLASS_CACHE                   8404
+#define ERROR_DS_CANT_RETRIEVE_DN                          8405
+#define ERROR_DS_MISSING_SUPREF                            8406
+#define ERROR_DS_CANT_RETRIEVE_INSTANCE                    8407
+#define ERROR_DS_CODE_INCONSISTENCY                        8408
+#define ERROR_DS_DATABASE_ERROR                            8409
+#define ERROR_DS_GOVERNSID_MISSING                         8410
+#define ERROR_DS_MISSING_EXPECTED_ATT                      8411
+#define ERROR_DS_NCNAME_MISSING_CR_REF                     8412
+#define ERROR_DS_SECURITY_CHECKING_ERROR                   8413
+#define ERROR_DS_SCHEMA_NOT_LOADED                         8414
+#define ERROR_DS_SCHEMA_ALLOC_FAILED                       8415
+#define ERROR_DS_ATT_SCHEMA_REQ_SYNTAX                     8416
+#define ERROR_DS_GCVERIFY_ERROR                            8417
+#define ERROR_DS_DRA_SCHEMA_MISMATCH                       8418
+#define ERROR_DS_CANT_FIND_DSA_OBJ                         8419
+#define ERROR_DS_CANT_FIND_EXPECTED_NC                     8420
+#define ERROR_DS_CANT_FIND_NC_IN_CACHE                     8421
+#define ERROR_DS_CANT_RETRIEVE_CHILD                       8422
+#define ERROR_DS_SECURITY_ILLEGAL_MODIFY                   8423
+#define ERROR_DS_CANT_REPLACE_HIDDEN_REC                   8424
+#define ERROR_DS_BAD_HIERARCHY_FILE                        8425
+#define ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED              8426
+#define ERROR_DS_CONFIG_PARAM_MISSING                      8427
+#define ERROR_DS_COUNTING_AB_INDICES_FAILED                8428
+#define ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED             8429
+#define ERROR_DS_INTERNAL_FAILURE                          8430
+#define ERROR_DS_UNKNOWN_ERROR                             8431
+#define ERROR_DS_ROOT_REQUIRES_CLASS_TOP                   8432
+#define ERROR_DS_REFUSING_FSMO_ROLES                       8433
+#define ERROR_DS_MISSING_FSMO_SETTINGS                     8434
+#define ERROR_DS_UNABLE_TO_SURRENDER_ROLES                 8435
+#define ERROR_DS_DRA_GENERIC                               8436
+#define ERROR_DS_DRA_INVALID_PARAMETER                     8437
+#define ERROR_DS_DRA_BUSY                                  8438
+#define ERROR_DS_DRA_BAD_DN                                8439
+#define ERROR_DS_DRA_BAD_NC                                8440
+#define ERROR_DS_DRA_DN_EXISTS                             8441
+#define ERROR_DS_DRA_INTERNAL_ERROR                        8442
+#define ERROR_DS_DRA_INCONSISTENT_DIT                      8443
+#define ERROR_DS_DRA_CONNECTION_FAILED                     8444
+#define ERROR_DS_DRA_BAD_INSTANCE_TYPE                     8445
+#define ERROR_DS_DRA_OUT_OF_MEM                            8446
+#define ERROR_DS_DRA_MAIL_PROBLEM                          8447
+#define ERROR_DS_DRA_REF_ALREADY_EXISTS                    8448
+#define ERROR_DS_DRA_REF_NOT_FOUND                         8449
+#define ERROR_DS_DRA_OBJ_IS_REP_SOURCE                     8450
+#define ERROR_DS_DRA_DB_ERROR                              8451
+#define ERROR_DS_DRA_NO_REPLICA                            8452
+#define ERROR_DS_DRA_ACCESS_DENIED                         8453
+#define ERROR_DS_DRA_NOT_SUPPORTED                         8454
+#define ERROR_DS_DRA_RPC_CANCELLED                         8455
+#define ERROR_DS_DRA_SOURCE_DISABLED                       8456
+#define ERROR_DS_DRA_SINK_DISABLED                         8457
+#define ERROR_DS_DRA_NAME_COLLISION                        8458
+#define ERROR_DS_DRA_SOURCE_REINSTALLED                    8459
+#define ERROR_DS_DRA_MISSING_PARENT                        8460
+#define ERROR_DS_DRA_PREEMPTED                             8461
+#define ERROR_DS_DRA_ABANDON_SYNC                          8462
+#define ERROR_DS_DRA_SHUTDOWN                              8463
+#define ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET              8464
+#define ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA             8465
+#define ERROR_DS_DRA_EXTN_CONNECTION_FAILED                8466
+#define ERROR_DS_INSTALL_SCHEMA_MISMATCH                   8467
+#define ERROR_DS_DUP_LINK_ID                               8468
+#define ERROR_DS_NAME_ERROR_RESOLVING                      8469
+#define ERROR_DS_NAME_ERROR_NOT_FOUND                      8470
+#define ERROR_DS_NAME_ERROR_NOT_UNIQUE                     8471
+#define ERROR_DS_NAME_ERROR_NO_MAPPING                     8472
+#define ERROR_DS_NAME_ERROR_DOMAIN_ONLY                    8473
+#define ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING         8474
+#define ERROR_DS_CONSTRUCTED_ATT_MOD                       8475
+#define ERROR_DS_WRONG_OM_OBJ_CLASS                        8476
+#define ERROR_DS_DRA_REPL_PENDING                          8477
+#define ERROR_DS_DS_REQUIRED                               8478
+#define ERROR_DS_INVALID_LDAP_DISPLAY_NAME                 8479
+#define ERROR_DS_NON_BASE_SEARCH                           8480
+#define ERROR_DS_CANT_RETRIEVE_ATTS                        8481
+#define ERROR_DS_BACKLINK_WITHOUT_LINK                     8482
+#define ERROR_DS_EPOCH_MISMATCH                            8483
+#define ERROR_DS_SRC_NAME_MISMATCH                         8484
+#define ERROR_DS_SRC_AND_DST_NC_IDENTICAL                  8485
+#define ERROR_DS_DST_NC_MISMATCH                           8486
+#define ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC                8487
+#define ERROR_DS_SRC_GUID_MISMATCH                         8488
+#define ERROR_DS_CANT_MOVE_DELETED_OBJECT                  8489
+#define ERROR_DS_PDC_OPERATION_IN_PROGRESS                 8490
+#define ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD                 8491
+#define ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION               8492
+#define ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS           8493
+#define ERROR_DS_NC_MUST_HAVE_NC_PARENT                    8494
+#define ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE                 8495
+#define ERROR_DS_DST_DOMAIN_NOT_NATIVE                     8496
+#define ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER          8497
+#define ERROR_DS_CANT_MOVE_ACCOUNT_GROUP                   8498
+#define ERROR_DS_CANT_MOVE_RESOURCE_GROUP                  8499
+#define ERROR_DS_INVALID_SEARCH_FLAG                       8500
+#define ERROR_DS_NO_TREE_DELETE_ABOVE_NC                   8501
+#define ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE              8502
+#define ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE  8503
+#define ERROR_DS_SAM_INIT_FAILURE                          8504
+#define ERROR_DS_SENSITIVE_GROUP_VIOLATION                 8505
+#define ERROR_DS_CANT_MOD_PRIMARYGROUPID                   8506
+#define ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD                   8507
+#define ERROR_DS_NONSAFE_SCHEMA_CHANGE                     8508
+#define ERROR_DS_SCHEMA_UPDATE_DISALLOWED                  8509
+#define ERROR_DS_CANT_CREATE_UNDER_SCHEMA                  8510
+#define ERROR_DS_INSTALL_NO_SRC_SCH_VERSION                8511
+#define ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE         8512
+#define ERROR_DS_INVALID_GROUP_TYPE                        8513
+#define ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN        8514
+#define ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN         8515
+#define ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER             8516
+#define ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER         8517
+#define ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER          8518
+#define ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER       8519
+#define ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER  8520
+#define ERROR_DS_HAVE_PRIMARY_MEMBERS                      8521
+#define ERROR_DS_STRING_SD_CONVERSION_FAILED               8522
+#define ERROR_DS_NAMING_MASTER_GC                          8523
+#define ERROR_DS_LOOKUP_FAILURE                            8524
+#define ERROR_DS_COULDNT_UPDATE_SPNS                       8525
+#define ERROR_DS_CANT_RETRIEVE_SD                          8526
+#define ERROR_DS_KEY_NOT_UNIQUE                            8527
+#define ERROR_DS_WRONG_LINKED_ATT_SYNTAX                   8528
+#define ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD                 8529
+#define ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY                   8530
+#define ERROR_DS_CANT_START                                8531
+#define ERROR_DS_INIT_FAILURE                              8532
+#define ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION              8533
+#define ERROR_DS_SOURCE_DOMAIN_IN_FOREST                   8534
+#define ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST          8535
+#define ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED          8536
+#define ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN               8537
+#define ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER                 8538
+#define ERROR_DS_SRC_SID_EXISTS_IN_FOREST                  8539
+#define ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH         8540
+#define ERROR_SAM_INIT_FAILURE                             8541
+#define ERROR_DS_DRA_SCHEMA_INFO_SHIP                      8542
+#define ERROR_DS_DRA_SCHEMA_CONFLICT                       8543
+#define ERROR_DS_DRA_EARLIER_SCHEMA_CONLICT                8544
+#define ERROR_DS_DRA_OBJ_NC_MISMATCH                       8545
+#define ERROR_DS_NC_STILL_HAS_DSAS                         8546
+#define ERROR_DS_GC_REQUIRED                               8547
+#define ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY                8548
+#define ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS                8549
+#define ERROR_DS_CANT_ADD_TO_GC                            8550
+#define ERROR_DS_NO_CHECKPOINT_WITH_PDC                    8551
+#define ERROR_DS_SOURCE_AUDITING_NOT_ENABLED               8552
+#define ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC               8553
+#define ERROR_DS_INVALID_NAME_FOR_SPN                      8554
+#define ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS              8555
+#define ERROR_DS_UNICODEPWD_NOT_IN_QUOTES                  8556
+#define ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED            8557
+#define ERROR_DS_MUST_BE_RUN_ON_DST_DC                     8558
+#define ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER             8559
+#define ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ             8560
+#define ERROR_DS_INIT_FAILURE_CONSOLE                      8561
+#define ERROR_DS_SAM_INIT_FAILURE_CONSOLE                  8562
+#define ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4            8572
+#define ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER             8578
+#define DNS_ERROR_RCODE_FORMAT_ERROR                       9001
+#define DNS_ERROR_RCODE_SERVER_FAILURE                     9002
+#define DNS_ERROR_RCODE_NAME_ERROR                         9003
+#define DNS_ERROR_RCODE_NOT_IMPLEMENTED                    9004
+#define DNS_ERROR_RCODE_REFUSED                            9005
+#define DNS_ERROR_RCODE_YXDOMAIN                           9006
+#define DNS_ERROR_RCODE_YXRRSET                            9007
+#define DNS_ERROR_RCODE_NXRRSET                            9008
+#define DNS_ERROR_RCODE_NOTAUTH                            9009
+#define DNS_ERROR_RCODE_NOTZONE                            9010
+#define DNS_ERROR_RCODE_BADSIG                             9016
+#define DNS_ERROR_RCODE_BADKEY                             9017
+#define DNS_ERROR_RCODE_BADTIME                            9018
+#define DNS_INFO_NO_RECORDS                                9501
+#define DNS_ERROR_BAD_PACKET                               9502
+#define DNS_ERROR_NO_PACKET                                9503
+#define DNS_ERROR_RCODE                                    9504
+#define DNS_ERROR_UNSECURE_PACKET                          9505
+#define DNS_ERROR_INVALID_TYPE                             9551
+#define DNS_ERROR_INVALID_IP_ADDRESS                       9552
+#define DNS_ERROR_INVALID_PROPERTY                         9553
+#define DNS_ERROR_TRY_AGAIN_LATER                          9554
+#define DNS_ERROR_NOT_UNIQUE                               9555
+#define DNS_ERROR_NON_RFC_NAME                             9556
+#define DNS_STATUS_FQDN                                    9557
+#define DNS_STATUS_DOTTED_NAME                             9558
+#define DNS_STATUS_SINGLE_PART_NAME                        9559
+#define DNS_ERROR_INVALID_NAME_CHAR                        9560
+#define DNS_ERROR_NUMERIC_NAME                             9561
+#define DNS_ERROR_ZONE_DOES_NOT_EXIST                      9601
+#define DNS_ERROR_NO_ZONE_INFO                             9602
+#define DNS_ERROR_INVALID_ZONE_OPERATION                   9603
+#define DNS_ERROR_ZONE_CONFIGURATION_ERROR                 9604
+#define DNS_ERROR_ZONE_HAS_NO_SOA_RECORD                   9605
+#define DNS_ERROR_ZONE_HAS_NO_NS_RECORDS                   9606
+#define DNS_ERROR_ZONE_LOCKED                              9607
+#define DNS_ERROR_ZONE_CREATION_FAILED                     9608
+#define DNS_ERROR_ZONE_ALREADY_EXISTS                      9609
+#define DNS_ERROR_AUTOZONE_ALREADY_EXISTS                  9610
+#define DNS_ERROR_INVALID_ZONE_TYPE                        9611
+#define DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP             9612
+#define DNS_ERROR_ZONE_NOT_SECONDARY                       9613
+#define DNS_ERROR_NEED_SECONDARY_ADDRESSES                 9614
+#define DNS_ERROR_WINS_INIT_FAILED                         9615
+#define DNS_ERROR_NEED_WINS_SERVERS                        9616
+#define DNS_ERROR_NBSTAT_INIT_FAILED                       9617
+#define DNS_ERROR_SOA_DELETE_INVALID                       9618
+#define DNS_ERROR_PRIMARY_REQUIRES_DATAFILE                9651
+#define DNS_ERROR_INVALID_DATAFILE_NAME                    9652
+#define DNS_ERROR_DATAFILE_OPEN_FAILURE                    9653
+#define DNS_ERROR_FILE_WRITEBACK_FAILED                    9654
+#define DNS_ERROR_DATAFILE_PARSING                         9655
+#define DNS_ERROR_RECORD_DOES_NOT_EXIST                    9701
+#define DNS_ERROR_RECORD_FORMAT                            9702
+#define DNS_ERROR_NODE_CREATION_FAILED                     9703
+#define DNS_ERROR_UNKNOWN_RECORD_TYPE                      9704
+#define DNS_ERROR_RECORD_TIMED_OUT                         9705
+#define DNS_ERROR_NAME_NOT_IN_ZONE                         9706
+#define DNS_ERROR_CNAME_LOOP                               9707
+#define DNS_ERROR_NODE_IS_CNAME                            9708
+#define DNS_ERROR_CNAME_COLLISION                          9709
+#define DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT                 9710
+#define DNS_ERROR_RECORD_ALREADY_EXISTS                    9711
+#define DNS_ERROR_SECONDARY_DATA                           9712
+#define DNS_ERROR_NO_CREATE_CACHE_DATA                     9713
+#define DNS_ERROR_NAME_DOES_NOT_EXIST                      9714
+#define DNS_WARNING_PTR_CREATE_FAILED                      9715
+#define DNS_WARNING_DOMAIN_UNDELETED                       9716
+#define DNS_ERROR_DS_UNAVAILABLE                           9717
+#define DNS_ERROR_DS_ZONE_ALREADY_EXISTS                   9718
+#define DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE                   9719
+#define DNS_INFO_AXFR_COMPLETE                             9751
+#define DNS_ERROR_AXFR                                     9752
+#define DNS_INFO_ADDED_LOCAL_WINS                          9753
+#define DNS_STATUS_CONTINUE_NEEDED                         9801
+#define DNS_ERROR_NO_TCPIP                                 9851
+#define DNS_ERROR_NO_DNS_SERVERS                           9852
+#define ERROR_SXS_SECTION_NOT_FOUND                        14000
+#define ERROR_SXS_CANT_GEN_ACTCTX                          14001
+#define ERROR_SXS_INVALID_ACTCTXDATA_FORMAT                14002
+#define ERROR_SXS_ASSEMBLY_NOT_FOUND                       14003
+#define ERROR_SXS_MANIFEST_FORMAT_ERROR                    14004
+#define ERROR_SXS_MANIFEST_PARSE_ERROR                     14005
+#define ERROR_SXS_ACTIVATION_CONTEXT_DISABLED              14006
+#define ERROR_SXS_KEY_NOT_FOUND                            14007
+#define ERROR_SXS_WRONG_SECTION_TYPE                       14009
+#define ERROR_SXS_THREAD_QUERIES_DISABLED                  14010
+#define ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET              14011
+
+/* HRESULT values for OLE, SHELL and other Interface stuff */
+/* the codes 4000-40ff are reserved for OLE */
+#undef NOERROR  /* arpa/nameser_compat.h defines this */
+
+#ifdef RC_INVOKED
+#define _HRESULT_TYPEDEF_(x) (x)
+#else
+#define _HRESULT_TYPEDEF_(x) ((HRESULT)x)
+#endif
+
+#define NOERROR                                            _HRESULT_TYPEDEF_(0L)
+#define S_OK                                               _HRESULT_TYPEDEF_(0L)
+#define SEC_E_OK                                           _HRESULT_TYPEDEF_(0L)
+#define S_FALSE                                            _HRESULT_TYPEDEF_(1L)
+
+#define E_PENDING                                          _HRESULT_TYPEDEF_(0x8000000AL)
+
+
+#define E_NOTIMPL                                          _HRESULT_TYPEDEF_(0x80004001L)
+#define E_NOINTERFACE                                      _HRESULT_TYPEDEF_(0x80004002L)
+#define E_POINTER                                          _HRESULT_TYPEDEF_(0x80004003L)
+#define E_ABORT                                            _HRESULT_TYPEDEF_(0x80004004L)
+#define E_FAIL                                             _HRESULT_TYPEDEF_(0x80004005L)
+
+
+#define CO_E_INIT_TLS                                      _HRESULT_TYPEDEF_(0x80004006L)
+#define CO_E_INIT_SHARED_ALLOCATOR                         _HRESULT_TYPEDEF_(0x80004007L)
+#define CO_E_INIT_MEMORY_ALLOCATOR                         _HRESULT_TYPEDEF_(0x80004008L)
+#define CO_E_INIT_CLASS_CACHE                              _HRESULT_TYPEDEF_(0x80004009L)
+#define CO_E_INIT_RPC_CHANNEL                              _HRESULT_TYPEDEF_(0x8000400AL)
+#define CO_E_INIT_TLS_SET_CHANNEL_CONTROL                  _HRESULT_TYPEDEF_(0x8000400BL)
+#define CO_E_INIT_TLS_CHANNEL_CONTROL                      _HRESULT_TYPEDEF_(0x8000400CL)
+#define CO_E_INIT_UNACCEPTED_USER_ALLOCATOR                _HRESULT_TYPEDEF_(0x8000400DL)
+#define CO_E_INIT_SCM_MUTEX_EXISTS                         _HRESULT_TYPEDEF_(0x8000400EL)
+#define CO_E_INIT_SCM_FILE_MAPPING_EXISTS                  _HRESULT_TYPEDEF_(0x8000400FL)
+#define CO_E_INIT_SCM_MAP_VIEW_OF_FILE                     _HRESULT_TYPEDEF_(0x80004010L)
+#define CO_E_INIT_SCM_EXEC_FAILURE                         _HRESULT_TYPEDEF_(0x80004011L)
+#define CO_E_INIT_ONLY_SINGLE_THREADED                     _HRESULT_TYPEDEF_(0x80004012L)
+#define CO_E_CANT_REMOTE                                   _HRESULT_TYPEDEF_(0x80004013L)
+#define CO_E_BAD_SERVER_NAME                               _HRESULT_TYPEDEF_(0x80004014L)
+#define CO_E_WRONG_SERVER_IDENTITY                         _HRESULT_TYPEDEF_(0x80004015L)
+#define CO_E_OLE1DDE_DISABLED                              _HRESULT_TYPEDEF_(0x80004016L)
+#define CO_E_RUNAS_SYNTAX                                  _HRESULT_TYPEDEF_(0x80004017L)
+#define CO_E_CREATEPROCESS_FAILURE                         _HRESULT_TYPEDEF_(0x80004018L)
+#define CO_E_RUNAS_CREATEPROCESS_FAILURE                   _HRESULT_TYPEDEF_(0x80004019L)
+#define CO_E_RUNAS_LOGON_FAILURE                           _HRESULT_TYPEDEF_(0x8000401AL)
+#define CO_E_LAUNCH_PERMISSION_DENIED                      _HRESULT_TYPEDEF_(0x8000401BL)
+#define CO_E_START_SERVICE_FAILURE                         _HRESULT_TYPEDEF_(0x8000401CL)
+#define CO_E_REMOTE_COMMUNICATION_FAILURE                  _HRESULT_TYPEDEF_(0x8000401DL)
+#define CO_E_SERVER_START_TIMEOUT                          _HRESULT_TYPEDEF_(0x8000401EL)
+#define CO_E_CLSREG_INCONSISTENT                           _HRESULT_TYPEDEF_(0x8000401FL)
+#define CO_E_IIDREG_INCONSISTENT                           _HRESULT_TYPEDEF_(0x80004020L)
+#define CO_E_NOT_SUPPORTED                                 _HRESULT_TYPEDEF_(0x80004021L)
+#define CO_E_RELOAD_DLL                                    _HRESULT_TYPEDEF_(0x80004022L)
+#define CO_E_MSI_ERROR                                     _HRESULT_TYPEDEF_(0x80004023L)
+#define CO_E_ATTEMPT_TO_CREATE_OUTSIDE_CLIENT_CONTEXT      _HRESULT_TYPEDEF_(0x80004024L)
+#define CO_E_SERVER_PAUSED                                 _HRESULT_TYPEDEF_(0x80004025L)
+#define CO_E_SERVER_NOT_PAUSED                             _HRESULT_TYPEDEF_(0x80004026L)
+#define CO_E_CLASS_DISABLED                                _HRESULT_TYPEDEF_(0x80004027L)
+#define CO_E_CLRNOTAVAILABLE                               _HRESULT_TYPEDEF_(0x80004028L)
+#define CO_E_ASYNC_WORK_REJECTED                           _HRESULT_TYPEDEF_(0x80004029L)
+#define CO_E_SERVER_INIT_TIMEOUT                           _HRESULT_TYPEDEF_(0x8000402AL)
+#define CO_E_NO_SECCTX_IN_ACTIVATE                         _HRESULT_TYPEDEF_(0x8000402BL)
+#define CO_E_TRACKER_CONFIG                                _HRESULT_TYPEDEF_(0x80004030L)
+#define CO_E_THREADPOOL_CONFIG                             _HRESULT_TYPEDEF_(0x80004031L)
+#define CO_E_SXS_CONFIG                                    _HRESULT_TYPEDEF_(0x80004032L)
+#define CO_E_MALFORMED_SPN                                 _HRESULT_TYPEDEF_(0x80004033L)
+
+#define E_UNEXPECTED                                       _HRESULT_TYPEDEF_(0x8000FFFFL)
+
+#define RPC_E_CALL_REJECTED                                _HRESULT_TYPEDEF_(0x80010001L)
+#define RPC_E_CALL_CANCELED                                _HRESULT_TYPEDEF_(0x80010002L)
+#define RPC_E_CANTPOST_INSENDCALL                          _HRESULT_TYPEDEF_(0x80010003L)
+#define RPC_E_CANTCALLOUT_INASYNCCALL                      _HRESULT_TYPEDEF_(0x80010004L)
+#define RPC_E_CANTCALLOUT_INEXTERNALCALL                   _HRESULT_TYPEDEF_(0x80010005L)
+#define RPC_E_CONNECTION_TERMINATED                        _HRESULT_TYPEDEF_(0x80010006L)
+#define RPC_E_SERVER_DIED                                  _HRESULT_TYPEDEF_(0x80010007L)
+#define RPC_E_CLIENT_DIED                                  _HRESULT_TYPEDEF_(0x80010008L)
+#define RPC_E_INVALID_DATAPACKET                           _HRESULT_TYPEDEF_(0x80010009L)
+#define RPC_E_CANTTRANSMIT_CALL                            _HRESULT_TYPEDEF_(0x8001000AL)
+#define RPC_E_CLIENT_CANTMARSHAL_DATA                      _HRESULT_TYPEDEF_(0x8001000BL)
+#define RPC_E_CLIENT_CANTUNMARSHAL_DATA                    _HRESULT_TYPEDEF_(0x8001000CL)
+#define RPC_E_SERVER_CANTMARSHAL_DATA                      _HRESULT_TYPEDEF_(0x8001000DL)
+#define RPC_E_SERVER_CANTUNMARSHAL_DATA                    _HRESULT_TYPEDEF_(0x8001000EL)
+#define RPC_E_INVALID_DATA                                 _HRESULT_TYPEDEF_(0x8001000FL)
+#define RPC_E_INVALID_PARAMETER                            _HRESULT_TYPEDEF_(0x80010010L)
+#define RPC_E_CANTCALLOUT_AGAIN                            _HRESULT_TYPEDEF_(0x80010011L)
+#define RPC_E_SERVER_DIED_DNE                              _HRESULT_TYPEDEF_(0x80010012L)
+#define RPC_E_SYS_CALL_FAILED                              _HRESULT_TYPEDEF_(0x80010100L)
+#define RPC_E_OUT_OF_RESOURCES                             _HRESULT_TYPEDEF_(0x80010101L)
+#define RPC_E_ATTEMPTED_MULTITHREAD                        _HRESULT_TYPEDEF_(0x80010102L)
+#define RPC_E_NOT_REGISTERED                               _HRESULT_TYPEDEF_(0x80010103L)
+#define RPC_E_FAULT                                        _HRESULT_TYPEDEF_(0x80010104L)
+#define RPC_E_SERVERFAULT                                  _HRESULT_TYPEDEF_(0x80010105L)
+#define RPC_E_CHANGED_MODE                                 _HRESULT_TYPEDEF_(0x80010106L)
+#define RPC_E_INVALIDMETHOD                                _HRESULT_TYPEDEF_(0x80010107L)
+#define RPC_E_DISCONNECTED                                 _HRESULT_TYPEDEF_(0x80010108L)
+#define RPC_E_RETRY                                        _HRESULT_TYPEDEF_(0x80010109L)
+#define RPC_E_SERVERCALL_RETRYLATER                        _HRESULT_TYPEDEF_(0x8001010AL)
+#define RPC_E_SERVERCALL_REJECTED                          _HRESULT_TYPEDEF_(0x8001010BL)
+#define RPC_E_INVALID_CALLDATA                             _HRESULT_TYPEDEF_(0x8001010CL)
+#define RPC_E_CANTCALLOUT_ININPUTSYNCCALL                  _HRESULT_TYPEDEF_(0x8001010DL)
+#define RPC_E_WRONG_THREAD                                 _HRESULT_TYPEDEF_(0x8001010EL)
+#define RPC_E_THREAD_NOT_INIT                              _HRESULT_TYPEDEF_(0x8001010FL)
+#define RPC_E_VERSION_MISMATCH                             _HRESULT_TYPEDEF_(0x80010110L)
+#define RPC_E_INVALID_HEADER                               _HRESULT_TYPEDEF_(0x80010111L)
+#define RPC_E_INVALID_EXTENSION                            _HRESULT_TYPEDEF_(0x80010112L)
+#define RPC_E_INVALID_IPID                                 _HRESULT_TYPEDEF_(0x80010113L)
+#define RPC_E_INVALID_OBJECT                               _HRESULT_TYPEDEF_(0x80010114L)
+#define RPC_S_CALLPENDING                                  _HRESULT_TYPEDEF_(0x80010115L)
+#define RPC_S_WAITONTIMER                                  _HRESULT_TYPEDEF_(0x80010116L)
+#define RPC_E_CALL_COMPLETE                                _HRESULT_TYPEDEF_(0x80010117L)
+#define RPC_E_UNSECURE_CALL                                _HRESULT_TYPEDEF_(0x80010118L)
+#define RPC_E_TOO_LATE                                     _HRESULT_TYPEDEF_(0x80010119L)
+#define RPC_E_NO_GOOD_SECURITY_PACKAGES                    _HRESULT_TYPEDEF_(0x8001011AL)
+#define RPC_E_ACCESS_DENIED                                _HRESULT_TYPEDEF_(0x8001011BL)
+#define RPC_E_REMOTE_DISABLED                              _HRESULT_TYPEDEF_(0x8001011CL)
+#define RPC_E_INVALID_OBJREF                               _HRESULT_TYPEDEF_(0x8001011DL)
+#define RPC_E_NO_CONTEXT                                   _HRESULT_TYPEDEF_(0x8001011EL)
+#define RPC_E_TIMEOUT                                      _HRESULT_TYPEDEF_(0x8001011FL)
+#define RPC_E_NO_SYNC                                      _HRESULT_TYPEDEF_(0x80010120L)
+#define RPC_E_UNEXPECTED                                   _HRESULT_TYPEDEF_(0x8001FFFFL)
+
+#define DISP_E_UNKNOWNINTERFACE                            _HRESULT_TYPEDEF_(0x80020001L)
+#define DISP_E_MEMBERNOTFOUND                              _HRESULT_TYPEDEF_(0x80020003L)
+#define DISP_E_PARAMNOTFOUND                               _HRESULT_TYPEDEF_(0x80020004L)
+#define DISP_E_TYPEMISMATCH                                _HRESULT_TYPEDEF_(0x80020005L)
+#define DISP_E_UNKNOWNNAME                                 _HRESULT_TYPEDEF_(0x80020006L)
+#define DISP_E_NONAMEDARGS                                 _HRESULT_TYPEDEF_(0x80020007L)
+#define DISP_E_BADVARTYPE                                  _HRESULT_TYPEDEF_(0x80020008L)
+#define DISP_E_EXCEPTION                                   _HRESULT_TYPEDEF_(0x80020009L)
+#define DISP_E_OVERFLOW                                    _HRESULT_TYPEDEF_(0x8002000AL)
+#define DISP_E_BADINDEX                                    _HRESULT_TYPEDEF_(0x8002000BL)
+#define DISP_E_UNKNOWNLCID                                 _HRESULT_TYPEDEF_(0x8002000CL)
+#define DISP_E_ARRAYISLOCKED                               _HRESULT_TYPEDEF_(0x8002000DL)
+#define DISP_E_BADPARAMCOUNT                               _HRESULT_TYPEDEF_(0x8002000EL)
+#define DISP_E_PARAMNOTOPTIONAL                            _HRESULT_TYPEDEF_(0x8002000FL)
+#define DISP_E_BADCALLEE                                   _HRESULT_TYPEDEF_(0x80020010L)
+#define DISP_E_NOTACOLLECTION                              _HRESULT_TYPEDEF_(0x80020011L)
+#define DISP_E_DIVBYZERO                                   _HRESULT_TYPEDEF_(0x80020012L)
+
+#define TYPE_E_BUFFERTOOSMALL                              _HRESULT_TYPEDEF_(0x80028016L)
+#define TYPE_E_FIELDNOTFOUND                               _HRESULT_TYPEDEF_(0x80028017L)
+#define TYPE_E_INVDATAREAD                                 _HRESULT_TYPEDEF_(0x80028018L)
+#define TYPE_E_UNSUPFORMAT                                 _HRESULT_TYPEDEF_(0x80028019L)
+#define TYPE_E_REGISTRYACCESS                              _HRESULT_TYPEDEF_(0x8002801CL)
+#define TYPE_E_LIBNOTREGISTERED                            _HRESULT_TYPEDEF_(0x8002801DL)
+#define TYPE_E_UNDEFINEDTYPE                               _HRESULT_TYPEDEF_(0x80028027L)
+#define TYPE_E_QUALIFIEDNAMEDISALLOWED                     _HRESULT_TYPEDEF_(0x80028028L)
+#define TYPE_E_INVALIDSTATE                                _HRESULT_TYPEDEF_(0x80028029L)
+#define TYPE_E_WRONGTYPEKIND                               _HRESULT_TYPEDEF_(0x8002802AL)
+#define TYPE_E_ELEMENTNOTFOUND                             _HRESULT_TYPEDEF_(0x8002802BL)
+#define TYPE_E_AMBIGUOUSNAME                               _HRESULT_TYPEDEF_(0x8002802CL)
+#define TYPE_E_NAMECONFLICT                                _HRESULT_TYPEDEF_(0x8002802DL)
+#define TYPE_E_UNKNOWNLCID                                 _HRESULT_TYPEDEF_(0x8002802EL)
+#define TYPE_E_DLLFUNCTIONNOTFOUND                         _HRESULT_TYPEDEF_(0x8002802FL)
+#define TYPE_E_BADMODULEKIND                               _HRESULT_TYPEDEF_(0x800288BDL)
+#define TYPE_E_SIZETOOBIG                                  _HRESULT_TYPEDEF_(0x800288C5L)
+#define TYPE_E_DUPLICATEID                                 _HRESULT_TYPEDEF_(0x800288C6L)
+#define TYPE_E_INVALIDID                                   _HRESULT_TYPEDEF_(0x800288CFL)
+#define TYPE_E_TYPEMISMATCH                                _HRESULT_TYPEDEF_(0x80028CA0L)
+#define TYPE_E_OUTOFBOUNDS                                 _HRESULT_TYPEDEF_(0x80028CA1L)
+#define TYPE_E_IOERROR                                     _HRESULT_TYPEDEF_(0x80028CA2L)
+#define TYPE_E_CANTCREATETMPFILE                           _HRESULT_TYPEDEF_(0x80028CA3L)
+#define TYPE_E_CANTLOADLIBRARY                             _HRESULT_TYPEDEF_(0x80029C4AL)
+#define TYPE_E_INCONSISTENTPROPFUNCS                       _HRESULT_TYPEDEF_(0x80029C83L)
+#define TYPE_E_CIRCULARTYPE                                _HRESULT_TYPEDEF_(0x80029C84L)
+
+#define STG_S_CONVERTED                                    _HRESULT_TYPEDEF_(0x00030200L)
+#define STG_S_BLOCK                                        _HRESULT_TYPEDEF_(0x00030201L)
+#define STG_S_RETRYNOW                                     _HRESULT_TYPEDEF_(0x00030202L)
+#define STG_S_MONITORING                                   _HRESULT_TYPEDEF_(0x00030203L)
+#define STG_S_MULTIPLEOPENS                                _HRESULT_TYPEDEF_(0x00030204L)
+#define STG_S_CONSOLIDATIONFAILED                          _HRESULT_TYPEDEF_(0x00030205L)
+#define STG_S_CANNOTCONSOLIDATE                            _HRESULT_TYPEDEF_(0x00030206L)
+
+#define STG_E_INVALIDFUNCTION                              _HRESULT_TYPEDEF_(0x80030001L)
+#define STG_E_FILENOTFOUND                                 _HRESULT_TYPEDEF_(0x80030002L)
+#define STG_E_PATHNOTFOUND                                 _HRESULT_TYPEDEF_(0x80030003L)
+#define STG_E_TOOMANYOPENFILES                             _HRESULT_TYPEDEF_(0x80030004L)
+#define STG_E_ACCESSDENIED                                 _HRESULT_TYPEDEF_(0x80030005L)
+#define STG_E_INVALIDHANDLE                                _HRESULT_TYPEDEF_(0x80030006L)
+#define STG_E_INSUFFICIENTMEMORY                           _HRESULT_TYPEDEF_(0x80030008L)
+#define STG_E_INVALIDPOINTER                               _HRESULT_TYPEDEF_(0x80030009L)
+#define STG_E_NOMOREFILES                                  _HRESULT_TYPEDEF_(0x80030012L)
+#define STG_E_DISKISWRITEPROTECTED                         _HRESULT_TYPEDEF_(0x80030013L)
+#define STG_E_SEEKERROR                                    _HRESULT_TYPEDEF_(0x80030019L)
+#define STG_E_WRITEFAULT                                   _HRESULT_TYPEDEF_(0x8003001DL)
+#define STG_E_READFAULT                                    _HRESULT_TYPEDEF_(0x8003001EL)
+#define STG_E_SHAREVIOLATION                               _HRESULT_TYPEDEF_(0x80030020L)
+#define STG_E_LOCKVIOLATION                                _HRESULT_TYPEDEF_(0x80030021L)
+#define STG_E_FILEALREADYEXISTS                            _HRESULT_TYPEDEF_(0x80030050L)
+#define STG_E_INVALIDPARAMETER                             _HRESULT_TYPEDEF_(0x80030057L)
+#define STG_E_MEDIUMFULL                                   _HRESULT_TYPEDEF_(0x80030070L)
+#define STG_E_ABNORMALAPIEXIT                              _HRESULT_TYPEDEF_(0x800300FAL)
+#define STG_E_INVALIDHEADER                                _HRESULT_TYPEDEF_(0x800300FBL)
+#define STG_E_INVALIDNAME                                  _HRESULT_TYPEDEF_(0x800300FCL)
+#define STG_E_UNKNOWN                                      _HRESULT_TYPEDEF_(0x800300FDL)
+#define STG_E_UNIMPLEMENTEDFUNCTION                        _HRESULT_TYPEDEF_(0x800300FEL)
+#define STG_E_INVALIDFLAG                                  _HRESULT_TYPEDEF_(0x800300FFL)
+#define STG_E_INUSE                                        _HRESULT_TYPEDEF_(0x80030100L)
+#define STG_E_NOTCURRENT                                   _HRESULT_TYPEDEF_(0x80030101L)
+#define STG_E_REVERTED                                     _HRESULT_TYPEDEF_(0x80030102L)
+#define STG_E_CANTSAVE                                     _HRESULT_TYPEDEF_(0x80030103L)
+#define STG_E_OLDFORMAT                                    _HRESULT_TYPEDEF_(0x80030104L)
+#define STG_E_OLDDLL                                       _HRESULT_TYPEDEF_(0x80030105L)
+#define STG_E_SHAREREQUIRED                                _HRESULT_TYPEDEF_(0x80030106L)
+#define STG_E_NOTFILEBASEDSTORAGE                          _HRESULT_TYPEDEF_(0x80030107L)
+#define STG_E_EXTANTMARSHALLINGS                           _HRESULT_TYPEDEF_(0x80030108L)
+#define STG_E_DOCFILECORRUPT                               _HRESULT_TYPEDEF_(0x80030109L)
+
+#define STG_E_STATUS_COPY_PROTECTION_FAILURE               _HRESULT_TYPEDEF_(0x80030305L)
+#define STG_E_CSS_AUTHENTICATION_FAILURE                   _HRESULT_TYPEDEF_(0x80030306L)
+#define STG_E_CSS_KEY_NOT_PRESENT                          _HRESULT_TYPEDEF_(0x80030307L)
+#define STG_E_CSS_KEY_NOT_ESTABLISHED                      _HRESULT_TYPEDEF_(0x80030308L)
+#define STG_E_CSS_SCRAMBLED_SECTOR                         _HRESULT_TYPEDEF_(0x80030309L)
+#define STG_E_CSS_REGION_MISMATCH                          _HRESULT_TYPEDEF_(0x8003030AL)
+#define STG_E_RESETS_EXHAUSTED                             _HRESULT_TYPEDEF_(0x8003030BL)
+
+#define OLE_S_FIRST                                        _HRESULT_TYPEDEF_(0x00040000L)
+#define OLE_S_USEREG                                       _HRESULT_TYPEDEF_(0x00040000L)
+#define OLE_S_STATIC                                       _HRESULT_TYPEDEF_(0x00040001L)
+#define OLE_S_MAC_CLIPFORMAT                               _HRESULT_TYPEDEF_(0x00040002L)
+#define OLE_S_LAST                                         _HRESULT_TYPEDEF_(0x000400FFL)
+
+#define OLE_E_FIRST                                        _HRESULT_TYPEDEF_(0x80040000L)
+#define OLE_E_OLEVERB                                      _HRESULT_TYPEDEF_(0x80040000L)
+#define OLE_E_ADVF                                         _HRESULT_TYPEDEF_(0x80040001L)
+#define OLE_E_ENUM_NOMORE                                  _HRESULT_TYPEDEF_(0x80040002L)
+#define OLE_E_ADVISENOTSUPPORTED                           _HRESULT_TYPEDEF_(0x80040003L)
+#define OLE_E_NOCONNECTION                                 _HRESULT_TYPEDEF_(0x80040004L)
+#define OLE_E_NOTRUNNING                                   _HRESULT_TYPEDEF_(0x80040005L)
+#define OLE_E_NOCACHE                                      _HRESULT_TYPEDEF_(0x80040006L)
+#define OLE_E_BLANK                                        _HRESULT_TYPEDEF_(0x80040007L)
+#define OLE_E_CLASSDIFF                                    _HRESULT_TYPEDEF_(0x80040008L)
+#define OLE_E_CANT_GETMONIKER                              _HRESULT_TYPEDEF_(0x80040009L)
+#define OLE_E_CANT_BINDTOSOURCE                            _HRESULT_TYPEDEF_(0x8004000AL)
+#define OLE_E_STATIC                                       _HRESULT_TYPEDEF_(0x8004000BL)
+#define OLE_E_PROMPTSAVECANCELLED                          _HRESULT_TYPEDEF_(0x8004000CL)
+#define OLE_E_INVALIDRECT                                  _HRESULT_TYPEDEF_(0x8004000DL)
+#define OLE_E_WRONGCOMPOBJ                                 _HRESULT_TYPEDEF_(0x8004000EL)
+#define OLE_E_INVALIDHWND                                  _HRESULT_TYPEDEF_(0x8004000FL)
+#define OLE_E_NOT_INPLACEACTIVE                            _HRESULT_TYPEDEF_(0x80040010L)
+#define OLE_E_CANTCONVERT                                  _HRESULT_TYPEDEF_(0x80040011L)
+#define OLE_E_NOSTORAGE                                    _HRESULT_TYPEDEF_(0x80040012L)
+#define DV_E_FORMATETC                                     _HRESULT_TYPEDEF_(0x80040064L)
+#define DV_E_DVTARGETDEVICE                                _HRESULT_TYPEDEF_(0x80040065L)
+#define DV_E_STGMEDIUM                                     _HRESULT_TYPEDEF_(0x80040066L)
+#define DV_E_STATDATA                                      _HRESULT_TYPEDEF_(0x80040067L)
+#define DV_E_LINDEX                                        _HRESULT_TYPEDEF_(0x80040068L)
+#define DV_E_TYMED                                         _HRESULT_TYPEDEF_(0x80040069L)
+#define DV_E_CLIPFORMAT                                    _HRESULT_TYPEDEF_(0x8004006AL)
+#define DV_E_DVASPECT                                      _HRESULT_TYPEDEF_(0x8004006BL)
+#define DV_E_DVTARGETDEVICE_SIZE                           _HRESULT_TYPEDEF_(0x8004006CL)
+#define DV_E_NOIVIEWOBJECT                                 _HRESULT_TYPEDEF_(0x8004006DL)
+#define OLE_E_LAST                                         _HRESULT_TYPEDEF_(0x800400FFL)
+
+#define DRAGDROP_S_FIRST                                   _HRESULT_TYPEDEF_(0x00040100L)
+#define DRAGDROP_S_DROP                                    _HRESULT_TYPEDEF_(0x00040100L)
+#define DRAGDROP_S_CANCEL                                  _HRESULT_TYPEDEF_(0x00040101L)
+#define DRAGDROP_S_USEDEFAULTCURSORS                       _HRESULT_TYPEDEF_(0x00040102L)
+#define DRAGDROP_S_LAST                                    _HRESULT_TYPEDEF_(0x0004010FL)
+
+#define DRAGDROP_E_FIRST                                   _HRESULT_TYPEDEF_(0x80040100L)
+#define DRAGDROP_E_NOTREGISTERED                           _HRESULT_TYPEDEF_(0x80040100L)
+#define DRAGDROP_E_ALREADYREGISTERED                       _HRESULT_TYPEDEF_(0x80040101L)
+#define DRAGDROP_E_INVALIDHWND                             _HRESULT_TYPEDEF_(0x80040102L)
+#define DRAGDROP_E_LAST                                    _HRESULT_TYPEDEF_(0x8004010FL)
+
+
+#define CLASSFACTORY_S_FIRST                               _HRESULT_TYPEDEF_(0x00040110L)
+#define CLASSFACTORY_S_LAST                                _HRESULT_TYPEDEF_(0x0004011FL)
+
+#define CLASSFACTORY_E_FIRST                               _HRESULT_TYPEDEF_(0x80040110L)
+#define CLASS_E_NOAGGREGATION                              _HRESULT_TYPEDEF_(0x80040110L)
+#define CLASS_E_CLASSNOTAVAILABLE                          _HRESULT_TYPEDEF_(0x80040111L)
+#define CLASS_E_NOTLICENSED                                _HRESULT_TYPEDEF_(0x80040112L)
+#define CLASSFACTORY_E_LAST                                _HRESULT_TYPEDEF_(0x8004011FL)
+
+#define MARSHAL_S_FIRST                                    _HRESULT_TYPEDEF_(0x00040120L)
+#define MARSHAL_S_LAST                                     _HRESULT_TYPEDEF_(0x0004012FL)
+
+#define MARSHAL_E_FIRST                                    _HRESULT_TYPEDEF_(0x80040120L)
+#define MARSHAL_E_LAST                                     _HRESULT_TYPEDEF_(0x8004012FL)
+
+#define DATA_S_FIRST                                       _HRESULT_TYPEDEF_(0x00040130L)
+#define DATA_S_SAMEFORMATETC                               _HRESULT_TYPEDEF_(0x00040130L)
+#define DATA_S_LAST                                        _HRESULT_TYPEDEF_(0x0004013FL)
+
+#define DATA_E_FIRST                                       _HRESULT_TYPEDEF_(0x80040130L)
+#define DATA_E_LAST                                        _HRESULT_TYPEDEF_(0x8004013FL)
+
+#define VIEW_S_FIRST                                       _HRESULT_TYPEDEF_(0x00040140L)
+#define VIEW_S_ALREADY_FROZEN                              _HRESULT_TYPEDEF_(0x00040140L)
+#define VIEW_S_LAST                                        _HRESULT_TYPEDEF_(0x0004014FL)
+
+#define VIEW_E_FIRST                                       _HRESULT_TYPEDEF_(0x80040140L)
+#define VIEW_E_DRAW                                        _HRESULT_TYPEDEF_(0x80040140L)
+#define VIEW_E_LAST                                        _HRESULT_TYPEDEF_(0x8004014FL)
+
+#define REGDB_S_FIRST                                      _HRESULT_TYPEDEF_(0x00040150L)
+#define REGDB_S_LAST                                       _HRESULT_TYPEDEF_(0x0004015FL)
+
+#define REGDB_E_FIRST                                      _HRESULT_TYPEDEF_(0x80040150L)
+#define REGDB_E_READREGDB                                  _HRESULT_TYPEDEF_(0x80040150L)
+#define REGDB_E_WRITEREGDB                                 _HRESULT_TYPEDEF_(0x80040151L)
+#define REGDB_E_KEYMISSING                                 _HRESULT_TYPEDEF_(0x80040152L)
+#define REGDB_E_INVALIDVALUE                               _HRESULT_TYPEDEF_(0x80040153L)
+#define REGDB_E_CLASSNOTREG                                _HRESULT_TYPEDEF_(0x80040154L)
+#define REGDB_E_IIDNOTREG                                  _HRESULT_TYPEDEF_(0x80040155L)
+#define REGDB_E_LAST                                       _HRESULT_TYPEDEF_(0x8004015FL)
+
+#define CAT_E_FIRST                                        _HRESULT_TYPEDEF_(0x80040160L)
+#define CAT_E_CATIDNOEXIST                                 _HRESULT_TYPEDEF_(0x80040160L)
+#define CAT_E_NODESCRIPTION                                _HRESULT_TYPEDEF_(0x80040161L)
+#define CAT_E_LAST                                         _HRESULT_TYPEDEF_(0x80040161L)
+
+#define CACHE_S_FIRST                                      _HRESULT_TYPEDEF_(0x00040170L)
+#define CACHE_S_FORMATETC_NOTSUPPORTED                     _HRESULT_TYPEDEF_(0x00040170L)
+#define CACHE_S_SAMECACHE                                  _HRESULT_TYPEDEF_(0x00040171L)
+#define CACHE_S_SOMECACHES_NOTUPDATED                      _HRESULT_TYPEDEF_(0x00040172L)
+#define CACHE_S_LAST                                       _HRESULT_TYPEDEF_(0x0004017FL)
+
+#define CACHE_E_FIRST                                      _HRESULT_TYPEDEF_(0x80040170L)
+#define CACHE_E_NOCACHE_UPDATED                            _HRESULT_TYPEDEF_(0x80040170L)
+#define CACHE_E_LAST                                       _HRESULT_TYPEDEF_(0x8004017FL)
+
+#define OLEOBJ_S_FIRST                                     _HRESULT_TYPEDEF_(0x00040180L)
+#define OLEOBJ_S_INVALIDVERB                               _HRESULT_TYPEDEF_(0x00040180L)
+#define OLEOBJ_S_CANNOT_DOVERB_NOW                         _HRESULT_TYPEDEF_(0x00040181L)
+#define OLEOBJ_S_INVALIDHWND                               _HRESULT_TYPEDEF_(0x00040182L)
+#define OLEOBJ_S_LAST                                      _HRESULT_TYPEDEF_(0x0004018FL)
+
+#define OLEOBJ_E_FIRST                                     _HRESULT_TYPEDEF_(0x80040180L)
+#define OLEOBJ_E_NOVERBS                                   _HRESULT_TYPEDEF_(0x80040180L)
+#define OLEOBJ_E_INVALIDVERB                               _HRESULT_TYPEDEF_(0x80040181L)
+#define OLEOBJ_E_LAST                                      _HRESULT_TYPEDEF_(0x8004018FL)
+
+#define CLIENTSITE_S_FIRST                                 _HRESULT_TYPEDEF_(0x00040190L)
+#define CLIENTSITE_S_LAST                                  _HRESULT_TYPEDEF_(0x0004019FL)
+
+#define CLIENTSITE_E_FIRST                                 _HRESULT_TYPEDEF_(0x80040190L)
+#define CLIENTSITE_E_LAST                                  _HRESULT_TYPEDEF_(0x8004019FL)
+
+#define INPLACE_S_FIRST                                    _HRESULT_TYPEDEF_(0x000401A0L)
+#define INPLACE_S_TRUNCATED                                _HRESULT_TYPEDEF_(0x000401A0L)
+#define INPLACE_S_LAST                                     _HRESULT_TYPEDEF_(0x000401AFL)
+
+#define INPLACE_E_FIRST                                    _HRESULT_TYPEDEF_(0x800401A0L)
+#define INPLACE_E_NOTUNDOABLE                              _HRESULT_TYPEDEF_(0x800401A0L)
+#define INPLACE_E_NOTOOLSPACE                              _HRESULT_TYPEDEF_(0x800401A1L)
+#define INPLACE_E_LAST                                     _HRESULT_TYPEDEF_(0x800401AFL)
+
+#define ENUM_S_FIRST                                       _HRESULT_TYPEDEF_(0x000401B0L)
+#define ENUM_S_LAST                                        _HRESULT_TYPEDEF_(0x000401BFL)
+
+#define ENUM_E_FIRST                                       _HRESULT_TYPEDEF_(0x800401B0L)
+#define ENUM_E_LAST                                        _HRESULT_TYPEDEF_(0x800401BFL)
+
+#define CONVERT10_S_FIRST                                  _HRESULT_TYPEDEF_(0x000401C0L)
+#define CONVERT10_S_NO_PRESENTATION                        _HRESULT_TYPEDEF_(0x000401C0L)
+#define CONVERT10_S_LAST                                   _HRESULT_TYPEDEF_(0x000401CFL)
+
+#define CONVERT10_E_FIRST                                  _HRESULT_TYPEDEF_(0x800401C0L)
+#define CONVERT10_E_OLESTREAM_GET                          _HRESULT_TYPEDEF_(0x800401C0L)
+#define CONVERT10_E_OLESTREAM_PUT                          _HRESULT_TYPEDEF_(0x800401C1L)
+#define CONVERT10_E_OLESTREAM_FMT                          _HRESULT_TYPEDEF_(0x800401C2L)
+#define CONVERT10_E_OLESTREAM_BITMAP_TO_DIB                _HRESULT_TYPEDEF_(0x800401C3L)
+#define CONVERT10_E_STG_FMT                                _HRESULT_TYPEDEF_(0x800401C4L)
+#define CONVERT10_E_STG_NO_STD_STREAM                      _HRESULT_TYPEDEF_(0x800401C5L)
+#define CONVERT10_E_STG_DIB_TO_BITMAP                      _HRESULT_TYPEDEF_(0x800401C6L)
+#define CONVERT10_E_LAST                                   _HRESULT_TYPEDEF_(0x800401CFL)
+
+#define CLIPBRD_S_FIRST                                    _HRESULT_TYPEDEF_(0x000401D0L)
+#define CLIPBRD_S_LAST                                     _HRESULT_TYPEDEF_(0x000401DFL)
+
+#define CLIPBRD_E_FIRST                                    _HRESULT_TYPEDEF_(0x800401D0L)
+#define CLIPBRD_E_LAST                                     _HRESULT_TYPEDEF_(0x800401DFL)
+#define CLIPBRD_E_CANT_OPEN                                _HRESULT_TYPEDEF_(0x800401D0L)
+#define CLIPBRD_E_CANT_EMPTY                               _HRESULT_TYPEDEF_(0x800401D1L)
+#define CLIPBRD_E_CANT_SET                                 _HRESULT_TYPEDEF_(0x800401D2L)
+#define CLIPBRD_E_BAD_DATA                                 _HRESULT_TYPEDEF_(0x800401D3L)
+#define CLIPBRD_E_CANT_CLOSE                               _HRESULT_TYPEDEF_(0x800401D4L)
+
+#define MK_S_FIRST                                         _HRESULT_TYPEDEF_(0x000401E0L)
+#define MK_S_REDUCED_TO_SELF                               _HRESULT_TYPEDEF_(0x000401E2L)
+#define MK_S_ME                                            _HRESULT_TYPEDEF_(0x000401E4L)
+#define MK_S_HIM                                           _HRESULT_TYPEDEF_(0x000401E5L)
+#define MK_S_US                                            _HRESULT_TYPEDEF_(0x000401E6L)
+#define MK_S_MONIKERALREADYREGISTERED                      _HRESULT_TYPEDEF_(0x000401E7L)
+#define MK_S_LAST                                          _HRESULT_TYPEDEF_(0x000401EFL)
+
+#define MK_E_FIRST                                         _HRESULT_TYPEDEF_(0x800401E0L)
+#define MK_E_CONNECTMANUALLY                               _HRESULT_TYPEDEF_(0x800401E0L)
+#define MK_E_EXCEEDEDDEADLINE                              _HRESULT_TYPEDEF_(0x800401E1L)
+#define MK_E_NEEDGENERIC                                   _HRESULT_TYPEDEF_(0x800401E2L)
+#define MK_E_UNAVAILABLE                                   _HRESULT_TYPEDEF_(0x800401E3L)
+#define MK_E_SYNTAX                                        _HRESULT_TYPEDEF_(0x800401E4L)
+#define MK_E_NOOBJECT                                      _HRESULT_TYPEDEF_(0x800401E5L)
+#define MK_E_INVALIDEXTENSION                              _HRESULT_TYPEDEF_(0x800401E6L)
+#define MK_E_INTERMEDIATEINTERFACENOTSUPPORTED             _HRESULT_TYPEDEF_(0x800401E7L)
+#define MK_E_NOTBINDABLE                                   _HRESULT_TYPEDEF_(0x800401E8L)
+#define MK_E_NOTBOUND                                      _HRESULT_TYPEDEF_(0x800401E9L)
+#define MK_E_CANTOPENFILE                                  _HRESULT_TYPEDEF_(0x800401EAL)
+#define MK_E_MUSTBOTHERUSER                                _HRESULT_TYPEDEF_(0x800401EBL)
+#define MK_E_NOINVERSE                                     _HRESULT_TYPEDEF_(0x800401ECL)
+#define MK_E_NOSTORAGE                                     _HRESULT_TYPEDEF_(0x800401EDL)
+#define MK_E_NOPREFIX                                      _HRESULT_TYPEDEF_(0x800401EEL)
+#define MK_E_ENUMERATION_FAILED                            _HRESULT_TYPEDEF_(0x800401EFL)
+#define MK_E_LAST                                          _HRESULT_TYPEDEF_(0x800401EFL)
+
+#define CO_S_FIRST                                         _HRESULT_TYPEDEF_(0x000401F0L)
+#define CO_S_LAST                                          _HRESULT_TYPEDEF_(0x000401FFL)
+
+#define CO_E_FIRST                                         _HRESULT_TYPEDEF_(0x800401F0L)
+#define CO_E_NOTINITIALIZED                                _HRESULT_TYPEDEF_(0x800401F0L)
+#define CO_E_ALREADYINITIALIZED                            _HRESULT_TYPEDEF_(0x800401F1L)
+#define CO_E_CANTDETERMINECLASS                            _HRESULT_TYPEDEF_(0x800401F2L)
+#define CO_E_CLASSSTRING                                   _HRESULT_TYPEDEF_(0x800401F3L)
+#define CO_E_IIDSTRING                                     _HRESULT_TYPEDEF_(0x800401F4L)
+#define CO_E_APPNOTFOUND                                   _HRESULT_TYPEDEF_(0x800401F5L)
+#define CO_E_APPSINGLEUSE                                  _HRESULT_TYPEDEF_(0x800401F6L)
+#define CO_E_ERRORINAPP                                    _HRESULT_TYPEDEF_(0x800401F7L)
+#define CO_E_DLLNOTFOUND                                   _HRESULT_TYPEDEF_(0x800401F8L)
+#define CO_E_ERRORINDLL                                    _HRESULT_TYPEDEF_(0x800401F9L)
+#define CO_E_WRONGOSFORAPP                                 _HRESULT_TYPEDEF_(0x800401FAL)
+#define CO_E_OBJNOTREG                                     _HRESULT_TYPEDEF_(0x800401FBL)
+#define CO_E_OBJISREG                                      _HRESULT_TYPEDEF_(0x800401FCL)
+#define CO_E_OBJNOTCONNECTED                               _HRESULT_TYPEDEF_(0x800401FDL)
+#define CO_E_APPDIDNTREG                                   _HRESULT_TYPEDEF_(0x800401FEL)
+#define CO_E_RELEASED                                      _HRESULT_TYPEDEF_(0x800401FFL)
+#define CO_E_LAST                                          _HRESULT_TYPEDEF_(0x800401FFL)
+#define CO_E_FAILEDTOIMPERSONATE                           _HRESULT_TYPEDEF_(0x80040200L)
+#define CO_E_FAILEDTOGETSECCTX                             _HRESULT_TYPEDEF_(0x80040201L)
+#define CO_E_FAILEDTOOPENTHREADTOKEN                       _HRESULT_TYPEDEF_(0x80040202L)
+#define CO_E_FAILEDTOGETTOKENINFO                          _HRESULT_TYPEDEF_(0x80040203L)
+#define CO_E_TRUSTEEDOESNTMATCHCLIENT                      _HRESULT_TYPEDEF_(0x80040204L)
+#define CO_E_FAILEDTOQUERYCLIENTBLANKET                    _HRESULT_TYPEDEF_(0x80040205L)
+#define CO_E_FAILEDTOSETDACL                               _HRESULT_TYPEDEF_(0x80040206L)
+#define CO_E_ACCESSCHECKFAILED                             _HRESULT_TYPEDEF_(0x80040207L)
+#define CO_E_NETACCESSAPIFAILED                            _HRESULT_TYPEDEF_(0x80040208L)
+#define CO_E_WRONGTRUSTEENAMESYNTAX                        _HRESULT_TYPEDEF_(0x80040209L)
+#define CO_E_INVALIDSID                                    _HRESULT_TYPEDEF_(0x8004020AL)
+#define CO_E_CONVERSIONFAILED                              _HRESULT_TYPEDEF_(0x8004020BL)
+#define CO_E_NOMATCHINGSIDFOUND                            _HRESULT_TYPEDEF_(0x8004020CL)
+#define CO_E_LOOKUPACCSIDFAILED                            _HRESULT_TYPEDEF_(0x8004020DL)
+#define CO_E_NOMATCHINGNAMEFOUND                           _HRESULT_TYPEDEF_(0x8004020EL)
+#define CO_E_LOOKUPACCNAMEFAILED                           _HRESULT_TYPEDEF_(0x8004020FL)
+#define CO_E_SETSERLHNDLFAILED                             _HRESULT_TYPEDEF_(0x80040210L)
+#define CO_E_FAILEDTOGETWINDIR                             _HRESULT_TYPEDEF_(0x80040211L)
+#define CO_E_PATHTOOLONG                                   _HRESULT_TYPEDEF_(0x80040212L)
+#define CO_E_FAILEDTOGENUUID                               _HRESULT_TYPEDEF_(0x80040213L)
+#define CO_E_FAILEDTOCREATEFILE                            _HRESULT_TYPEDEF_(0x80040214L)
+#define CO_E_FAILEDTOCLOSEHANDLE                           _HRESULT_TYPEDEF_(0x80040215L)
+#define CO_E_EXCEEDSYSACLLIMIT                             _HRESULT_TYPEDEF_(0x80040216L)
+#define CO_E_ACESINWRONGORDER                              _HRESULT_TYPEDEF_(0x80040217L)
+#define CO_E_INCOMPATIBLESTREAMVERSION                     _HRESULT_TYPEDEF_(0x80040218L)
+#define CO_E_FAILEDTOOPENPROCESSTOKEN                      _HRESULT_TYPEDEF_(0x80040219L)
+#define CO_E_DECODEFAILED                                  _HRESULT_TYPEDEF_(0x8004021AL)
+#define CO_E_ACNOTINITIALIZED                              _HRESULT_TYPEDEF_(0x8004021BL)
+
+/* Task Scheduler Service Error Codes */
+#define SCHED_S_TASK_READY                                 _HRESULT_TYPEDEF_(0x00041300L)
+#define SCHED_S_TASK_RUNNING                               _HRESULT_TYPEDEF_(0x00041301L)
+#define SCHED_S_TASK_DISABLED                              _HRESULT_TYPEDEF_(0x00041302L)
+#define SCHED_S_TASK_HAS_NOT_RUN                           _HRESULT_TYPEDEF_(0x00041303L)
+#define SCHED_S_TASK_NO_MORE_RUNS                          _HRESULT_TYPEDEF_(0x00041304L)
+#define SCHED_S_TASK_NOT_SCHEDULED                         _HRESULT_TYPEDEF_(0x00041305L)
+#define SCHED_S_TASK_TERMINATED                            _HRESULT_TYPEDEF_(0x00041306L)
+#define SCHED_S_TASK_NO_VALID_TRIGGERS                     _HRESULT_TYPEDEF_(0x00041307L)
+#define SCHED_S_EVENT_TRIGGER                              _HRESULT_TYPEDEF_(0x00041308L)
+#define SCHED_E_TRIGGER_NOT_FOUND                          _HRESULT_TYPEDEF_(0x80041309L)
+#define SCHED_E_TASK_NOT_READY                             _HRESULT_TYPEDEF_(0x8004130AL)
+#define SCHED_E_TASK_NOT_RUNNING                           _HRESULT_TYPEDEF_(0x8004130BL)
+#define SCHED_E_SERVICE_NOT_INSTALLED                      _HRESULT_TYPEDEF_(0x8004130CL)
+#define SCHED_E_CANNOT_OPEN_TASK                           _HRESULT_TYPEDEF_(0x8004130DL)
+#define SCHED_E_INVALID_TASK                               _HRESULT_TYPEDEF_(0x8004130EL)
+#define SCHED_E_ACCOUNT_INFORMATION_NOT_SET                _HRESULT_TYPEDEF_(0x8004130FL)
+#define SCHED_E_ACCOUNT_NAME_NOT_FOUND                     _HRESULT_TYPEDEF_(0x80041310L)
+#define SCHED_E_ACCOUNT_DBASE_CORRUPT                      _HRESULT_TYPEDEF_(0x80041311L)
+#define SCHED_E_NO_SECURITY_SERVICES                       _HRESULT_TYPEDEF_(0x80041312L)
+#define SCHED_E_UNKNOWN_OBJECT_VERSION                     _HRESULT_TYPEDEF_(0x80041313L)
+#define SCHED_E_UNSUPPORTED_ACCOUNT_OPTION                 _HRESULT_TYPEDEF_(0x80041314L)
+#define SCHED_E_SERVICE_NOT_RUNNING                        _HRESULT_TYPEDEF_(0x80041315L)
+#define SCHED_E_UNEXPECTEDNODE                             _HRESULT_TYPEDEF_(0x80041316L)
+#define SCHED_E_NAMESPACE                                  _HRESULT_TYPEDEF_(0x80041317L)
+#define SCHED_E_INVALIDVALUE                               _HRESULT_TYPEDEF_(0x80041318L)
+#define SCHED_E_MISSINGNODE                                _HRESULT_TYPEDEF_(0x80041319L)
+#define SCHED_E_MALFORMEDXML                               _HRESULT_TYPEDEF_(0x8004131AL)
+#define SCHED_S_SOME_TRIGGERS_FAILED                       _HRESULT_TYPEDEF_(0x0004131BL)
+#define SCHED_S_BATCH_LOGON_PROBLEM                        _HRESULT_TYPEDEF_(0x0004131CL)
+#define SCHED_E_TOO_MANY_NODES                             _HRESULT_TYPEDEF_(0x8004131DL)
+#define SCHED_E_PAST_END_BOUNDARY                          _HRESULT_TYPEDEF_(0x8004131EL)
+#define SCHED_E_ALREADY_RUNNING                            _HRESULT_TYPEDEF_(0x8004131FL)
+#define SCHED_E_USER_NOT_LOGGED_ON                         _HRESULT_TYPEDEF_(0x80041320L)
+#define SCHED_E_INVALID_TASK_HASH                          _HRESULT_TYPEDEF_(0x80041321L)
+#define SCHED_E_SERVICE_NOT_AVAILABLE                      _HRESULT_TYPEDEF_(0x80041322L)
+#define SCHED_E_SERVICE_TOO_BUSY                           _HRESULT_TYPEDEF_(0x80041323L)
+#define SCHED_E_TASK_ATTEMPTED                             _HRESULT_TYPEDEF_(0x80041324L)
+#define SCHED_S_TASK_QUEUED                                _HRESULT_TYPEDEF_(0x00041325L)
+#define SCHED_E_TASK_DISABLED                              _HRESULT_TYPEDEF_(0x80041326L)
+#define SCHED_E_TASK_NOT_V1_COMPAT                         _HRESULT_TYPEDEF_(0x80041327L)
+#define SCHED_E_START_ON_DEMAND                            _HRESULT_TYPEDEF_(0x80041328L)
+
+#define E_ACCESSDENIED                                     _HRESULT_TYPEDEF_(0x80070005L)
+#define E_HANDLE                                           _HRESULT_TYPEDEF_(0x80070006L)
+#define E_OUTOFMEMORY                                      _HRESULT_TYPEDEF_(0x8007000EL)
+#define E_INVALIDARG                                       _HRESULT_TYPEDEF_(0x80070057L)
+
+#define CO_S_NOTALLINTERFACES                              _HRESULT_TYPEDEF_(0x00080012L)
+
+#define CO_E_CLASS_CREATE_FAILED                           _HRESULT_TYPEDEF_(0x80080001L)
+#define CO_E_SCM_ERROR                                     _HRESULT_TYPEDEF_(0x80080002L)
+#define CO_E_SCM_RPC_FAILURE                               _HRESULT_TYPEDEF_(0x80080003L)
+#define CO_E_BAD_PATH                                      _HRESULT_TYPEDEF_(0x80080004L)
+#define CO_E_SERVER_EXEC_FAILURE                           _HRESULT_TYPEDEF_(0x80080005L)
+#define CO_E_OBJSRV_RPC_FAILURE                            _HRESULT_TYPEDEF_(0x80080006L)
+#define MK_E_NO_NORMALIZED                                 _HRESULT_TYPEDEF_(0x80080007L)
+#define CO_E_SERVER_STOPPING                               _HRESULT_TYPEDEF_(0x80080008L)
+#define MEM_E_INVALID_ROOT                                 _HRESULT_TYPEDEF_(0x80080009L)
+#define MEM_E_INVALID_LINK                                 _HRESULT_TYPEDEF_(0x80080010L)
+#define MEM_E_INVALID_SIZE                                 _HRESULT_TYPEDEF_(0x80080011L)
+
+/*Cryptographic Error Codes */
+#define NTE_BAD_UID                                        _HRESULT_TYPEDEF_(0x80090001L)
+#define NTE_BAD_HASH                                       _HRESULT_TYPEDEF_(0x80090002L)
+#define NTE_BAD_KEY                                        _HRESULT_TYPEDEF_(0x80090003L)
+#define NTE_BAD_LEN                                        _HRESULT_TYPEDEF_(0x80090004L)
+#define NTE_BAD_DATA                                       _HRESULT_TYPEDEF_(0x80090005L)
+#define NTE_BAD_SIGNATURE                                  _HRESULT_TYPEDEF_(0x80090006L)
+#define NTE_BAD_VER                                        _HRESULT_TYPEDEF_(0x80090007L)
+#define NTE_BAD_ALGID                                      _HRESULT_TYPEDEF_(0x80090008L)
+#define NTE_BAD_FLAGS                                      _HRESULT_TYPEDEF_(0x80090009L)
+#define NTE_BAD_TYPE                                       _HRESULT_TYPEDEF_(0x8009000AL)
+#define NTE_BAD_KEY_STATE                                  _HRESULT_TYPEDEF_(0x8009000BL)
+#define NTE_BAD_HASH_STATE                                 _HRESULT_TYPEDEF_(0x8009000CL)
+#define NTE_NO_KEY                                         _HRESULT_TYPEDEF_(0x8009000DL)
+#define NTE_NO_MEMORY                                      _HRESULT_TYPEDEF_(0x8009000EL)
+#define NTE_EXISTS                                         _HRESULT_TYPEDEF_(0x8009000FL)
+#define NTE_PERM                                           _HRESULT_TYPEDEF_(0x80090010L)
+#define NTE_NOT_FOUND                                      _HRESULT_TYPEDEF_(0x80090011L)
+#define NTE_DOUBLE_ENCRYPT                                 _HRESULT_TYPEDEF_(0x80090012L)
+#define NTE_BAD_PROVIDER                                   _HRESULT_TYPEDEF_(0x80090013L)
+#define NTE_BAD_PROV_TYPE                                  _HRESULT_TYPEDEF_(0x80090014L)
+#define NTE_BAD_PUBLIC_KEY                                 _HRESULT_TYPEDEF_(0x80090015L)
+#define NTE_BAD_KEYSET                                     _HRESULT_TYPEDEF_(0x80090016L)
+#define NTE_PROV_TYPE_NOT_DEF                              _HRESULT_TYPEDEF_(0x80090017L)
+#define NTE_PROV_TYPE_ENTRY_BAD                            _HRESULT_TYPEDEF_(0x80090018L)
+#define NTE_KEYSET_NOT_DEF                                 _HRESULT_TYPEDEF_(0x80090019L)
+#define NTE_KEYSET_ENTRY_BAD                               _HRESULT_TYPEDEF_(0x8009001AL)
+#define NTE_PROV_TYPE_NO_MATCH                             _HRESULT_TYPEDEF_(0x8009001BL)
+#define NTE_SIGNATURE_FILE_BAD                             _HRESULT_TYPEDEF_(0x8009001CL)
+#define NTE_PROVIDER_DLL_FAIL                              _HRESULT_TYPEDEF_(0x8009001DL)
+#define NTE_PROV_DLL_NOT_FOUND                             _HRESULT_TYPEDEF_(0x8009001EL)
+#define NTE_BAD_KEYSET_PARAM                               _HRESULT_TYPEDEF_(0x8009001FL)
+#define NTE_FAIL                                           _HRESULT_TYPEDEF_(0x80090020L)
+#define NTE_SYS_ERR                                        _HRESULT_TYPEDEF_(0x80090021L)
+#define NTE_OP_OK                                          _HRESULT_TYPEDEF_(0)
+
+#define SEC_E_INSUFFICIENT_MEMORY                          _HRESULT_TYPEDEF_(0x80090300L)
+#define SEC_E_INVALID_HANDLE                               _HRESULT_TYPEDEF_(0x80090301L)
+#define SEC_E_UNSUPPORTED_FUNCTION                         _HRESULT_TYPEDEF_(0x80090302L)
+#define SEC_E_TARGET_UNKNOWN                               _HRESULT_TYPEDEF_(0x80090303L)
+#define SEC_E_INTERNAL_ERROR                               _HRESULT_TYPEDEF_(0x80090304L)
+#define SEC_E_SECPKG_NOT_FOUND                             _HRESULT_TYPEDEF_(0x80090305L)
+#define SEC_E_NOT_OWNER                                    _HRESULT_TYPEDEF_(0x80090306L)
+#define SEC_E_CANNOT_INSTALL                               _HRESULT_TYPEDEF_(0x80090307L)
+#define SEC_E_INVALID_TOKEN                                _HRESULT_TYPEDEF_(0x80090308L)
+#define SEC_E_CANNOT_PACK                                  _HRESULT_TYPEDEF_(0x80090309L)
+#define SEC_E_QOP_NOT_SUPPORTED                            _HRESULT_TYPEDEF_(0x8009030AL)
+#define SEC_E_NO_IMPERSONATION                             _HRESULT_TYPEDEF_(0x8009030BL)
+#define SEC_E_LOGON_DENIED                                 _HRESULT_TYPEDEF_(0x8009030CL)
+#define SEC_E_UNKNOWN_CREDENTIALS                          _HRESULT_TYPEDEF_(0x8009030DL)
+#define SEC_E_NO_CREDENTIALS                               _HRESULT_TYPEDEF_(0x8009030EL)
+#define SEC_E_MESSAGE_ALTERED                              _HRESULT_TYPEDEF_(0x8009030FL)
+#define SEC_E_OUT_OF_SEQUENCE                              _HRESULT_TYPEDEF_(0x80090310L)
+#define SEC_E_NO_AUTHENTICATING_AUTHORITY                  _HRESULT_TYPEDEF_(0x80090311L)
+#define SEC_I_CONTINUE_NEEDED                              _HRESULT_TYPEDEF_(0x00090312L)
+#define SEC_I_COMPLETE_NEEDED                              _HRESULT_TYPEDEF_(0x00090313L)
+#define SEC_I_COMPLETE_AND_CONTINUE                        _HRESULT_TYPEDEF_(0x00090314L) 
+#define SEC_E_BAD_PKGID                                    _HRESULT_TYPEDEF_(0x80090316L)
+#define SEC_E_CONTEXT_EXPIRED                              _HRESULT_TYPEDEF_(0x80090317L)
+#define SEC_E_INCOMPLETE_MESSAGE                           _HRESULT_TYPEDEF_(0x80090318L)
+#define SEC_E_INCOMPLETE_CREDENTIALS                       _HRESULT_TYPEDEF_(0x80090320L)
+#define SEC_E_BUFFER_TOO_SMALL                             _HRESULT_TYPEDEF_(0x80090321L)
+#define SEC_E_WRONG_PRINCIPAL                              _HRESULT_TYPEDEF_(0x80090322L)
+#define SEC_E_TIME_SKEW                                    _HRESULT_TYPEDEF_(0x80090324L)
+#define SEC_E_UNTRUSTED_ROOT                               _HRESULT_TYPEDEF_(0x80090325L)
+#define SEC_E_ILLEGAL_MESSAGE                              _HRESULT_TYPEDEF_(0x80090326L)
+#define SEC_E_CERT_UNKNOWN                                 _HRESULT_TYPEDEF_(0x80090327L)
+#define SEC_E_CERT_EXPIRED                                 _HRESULT_TYPEDEF_(0x80090328L)
+#define SEC_E_ENCRYPT_FAILURE                              _HRESULT_TYPEDEF_(0x80090329L)
+#define SEC_E_DECRYPT_FAILURE                              _HRESULT_TYPEDEF_(0x80090330L)
+#define SEC_E_ALGORITHM_MISMATCH                           _HRESULT_TYPEDEF_(0x80090331L)
+#define SEC_E_SECURITY_QOS_FAILED                          _HRESULT_TYPEDEF_(0x80090332L)
+#define SEC_E_UNFINISHED_CONTEXT_DELETED                   _HRESULT_TYPEDEF_(0x80090333L)
+#define SEC_E_NO_TGT_REPLY                                 _HRESULT_TYPEDEF_(0x80090334L)
+#define SEC_E_NO_IP_ADDRESSES                              _HRESULT_TYPEDEF_(0x80090335L)
+#define SEC_E_WRONG_CREDENTIAL_HANDLE                      _HRESULT_TYPEDEF_(0x80090336L)
+#define SEC_E_CRYPTO_SYSTEM_INVALID                        _HRESULT_TYPEDEF_(0x80090337L)
+#define SEC_E_MAX_REFERRALS_EXCEEDED                       _HRESULT_TYPEDEF_(0x80090338L)
+#define SEC_E_MUST_BE_KDC                                  _HRESULT_TYPEDEF_(0x80090339L)
+#define SEC_E_STRONG_CRYPTO_NOT_SUPPORTED                  _HRESULT_TYPEDEF_(0x8009033AL)
+#define SEC_E_TOO_MANY_PRINCIPALS                          _HRESULT_TYPEDEF_(0x8009033BL)
+#define SEC_E_NO_PA_DATA                                   _HRESULT_TYPEDEF_(0x8009033CL)
+#define SEC_E_PKINIT_NAME_MISMATCH                         _HRESULT_TYPEDEF_(0x8009033DL)
+#define SEC_E_SMARTCARD_LOGON_REQUIRED                     _HRESULT_TYPEDEF_(0x8009033EL)
+#define SEC_E_SHUTDOWN_IN_PROGRESS                         _HRESULT_TYPEDEF_(0x8009033FL)
+#define SEC_E_KDC_INVALID_REQUEST                          _HRESULT_TYPEDEF_(0x80090340L)
+#define SEC_E_KDC_UNABLE_TO_REFER                          _HRESULT_TYPEDEF_(0x80090341L)
+#define SEC_E_KDC_UNKNOWN_ETYPE                            _HRESULT_TYPEDEF_(0x80090342L)
+#define SEC_E_UNSUPPORTED_PREAUTH                          _HRESULT_TYPEDEF_(0x80090343L)
+#define SEC_E_DELEGATION_REQUIRED                          _HRESULT_TYPEDEF_(0x80090345L)
+#define SEC_E_BAD_BINDINGS                                 _HRESULT_TYPEDEF_(0x80090346L)
+#define SEC_E_MULTIPLE_ACCOUNTS                            _HRESULT_TYPEDEF_(0x80090347L)
+#define SEC_E_NO_KERB_KEY                                  _HRESULT_TYPEDEF_(0x80090348L)
+#define SEC_E_CERT_WRONG_USAGE                             _HRESULT_TYPEDEF_(0x80090349L)
+#define SEC_E_DOWNGRADE_DETECTED                           _HRESULT_TYPEDEF_(0x80090350L)
+#define SEC_E_SMARTCARD_CERT_REVOKED                       _HRESULT_TYPEDEF_(0x80090351L)
+#define SEC_E_ISSUING_CA_UNTRUSTED                         _HRESULT_TYPEDEF_(0x80090352L)
+#define SEC_E_REVOCATION_OFFLINE_C                         _HRESULT_TYPEDEF_(0x80090353L)
+#define SEC_E_PKINIT_CLIENT_FAILURE                        _HRESULT_TYPEDEF_(0x80090354L)
+#define SEC_E_SMARTCARD_CERT_EXPIRED                       _HRESULT_TYPEDEF_(0x80090355L)
+#define SEC_E_NO_S4U_PROT_SUPPORT                          _HRESULT_TYPEDEF_(0x80090356L)
+#define SEC_E_CROSSREALM_DELEGATION_FAILURE                _HRESULT_TYPEDEF_(0x80090357L)
+#define SEC_E_REVOCATION_OFFLINE_KDC                       _HRESULT_TYPEDEF_(0x80090358L)
+#define SEC_E_ISSUING_CA_UNTRUSTED_KDC                     _HRESULT_TYPEDEF_(0x80090359L)
+#define SEC_E_KDC_CERT_EXPIRED                             _HRESULT_TYPEDEF_(0x8009035AL)
+#define SEC_E_KDC_CERT_REVOKED                             _HRESULT_TYPEDEF_(0x8009035BL)
+
+#define CRYPT_E_MSG_ERROR                                  _HRESULT_TYPEDEF_(0x80091001L)
+#define CRYPT_E_UNKNOWN_ALGO                               _HRESULT_TYPEDEF_(0x80091002L)
+#define CRYPT_E_OID_FORMAT                                 _HRESULT_TYPEDEF_(0x80091003L)
+#define CRYPT_E_INVALID_MSG_TYPE                           _HRESULT_TYPEDEF_(0x80091004L)
+#define CRYPT_E_UNEXPECTED_ENCODING                        _HRESULT_TYPEDEF_(0x80091005L)
+#define CRYPT_E_AUTH_ATTR_MISSING                          _HRESULT_TYPEDEF_(0x80091006L)
+#define CRYPT_E_HASH_VALUE                                 _HRESULT_TYPEDEF_(0x80091007L)
+#define CRYPT_E_INVALID_INDEX                              _HRESULT_TYPEDEF_(0x80091008L)
+#define CRYPT_E_ALREADY_DECRYPTED                          _HRESULT_TYPEDEF_(0x80091009L)
+#define CRYPT_E_NOT_DECRYPTED                              _HRESULT_TYPEDEF_(0x8009100AL)
+#define CRYPT_E_RECIPIENT_NOT_FOUND                        _HRESULT_TYPEDEF_(0x8009100BL)
+#define CRYPT_E_CONTROL_TYPE                               _HRESULT_TYPEDEF_(0x8009100CL)
+#define CRYPT_E_ISSUER_SERIALNUMBER                        _HRESULT_TYPEDEF_(0x8009100DL)
+#define CRYPT_E_SIGNER_NOT_FOUND                           _HRESULT_TYPEDEF_(0x8009100EL)
+#define CRYPT_E_ATTRIBUTES_MISSING                         _HRESULT_TYPEDEF_(0x8009100FL)
+#define CRYPT_E_STREAM_MSG_NOT_READY                       _HRESULT_TYPEDEF_(0x80091010L)
+#define CRYPT_E_STREAM_INSUFFICIENT_DATA                   _HRESULT_TYPEDEF_(0x80091011L)
+#define CRYPT_I_NEW_PROTECTION_REQUIRED                    _HRESULT_TYPEDEF_(0x80091012L)
+
+#define CRYPT_E_BAD_LEN                                    _HRESULT_TYPEDEF_(0x80092001L)
+#define CRYPT_E_BAD_ENCODE                                 _HRESULT_TYPEDEF_(0x80092002L)
+#define CRYPT_E_FILE_ERROR                                 _HRESULT_TYPEDEF_(0x80092003L)
+#define CRYPT_E_NOT_FOUND                                  _HRESULT_TYPEDEF_(0x80092004L)
+#define CRYPT_E_EXISTS                                     _HRESULT_TYPEDEF_(0x80092005L)
+#define CRYPT_E_NO_PROVIDER                                _HRESULT_TYPEDEF_(0x80092006L)
+#define CRYPT_E_SELF_SIGNED                                _HRESULT_TYPEDEF_(0x80092007L)
+#define CRYPT_E_DELETED_PREV                               _HRESULT_TYPEDEF_(0x80092008L)
+#define CRYPT_E_NO_MATCH                                   _HRESULT_TYPEDEF_(0x80092009L)
+#define CRYPT_E_UNEXPECTED_MSG_TYPE                        _HRESULT_TYPEDEF_(0x8009200AL)
+#define CRYPT_E_NO_KEY_PROPERTY                            _HRESULT_TYPEDEF_(0x8009200BL)
+#define CRYPT_E_NO_DECRYPT_CERT                            _HRESULT_TYPEDEF_(0x8009200CL)
+#define CRYPT_E_BAD_MSG                                    _HRESULT_TYPEDEF_(0x8009200DL)
+#define CRYPT_E_NO_SIGNER                                  _HRESULT_TYPEDEF_(0x8009200EL)
+#define CRYPT_E_PENDING_CLOSE                              _HRESULT_TYPEDEF_(0x8009200FL)
+#define CRYPT_E_REVOKED                                    _HRESULT_TYPEDEF_(0x80092010L)
+#define CRYPT_E_NO_REVOCATION_DLL                          _HRESULT_TYPEDEF_(0x80092011L)
+#define CRYPT_E_NO_REVOCATION_CHECK                        _HRESULT_TYPEDEF_(0x80092012L)
+#define CRYPT_E_REVOCATION_OFFLINE                         _HRESULT_TYPEDEF_(0x80092013L)
+#define CRYPT_E_NOT_IN_REVOCATION_DATABASE                 _HRESULT_TYPEDEF_(0x80092014L)
+#define CRYPT_E_INVALID_NUMERIC_STRING                     _HRESULT_TYPEDEF_(0x80092020L)
+#define CRYPT_E_INVALID_PRINTABLE_STRING                   _HRESULT_TYPEDEF_(0x80092021L)
+#define CRYPT_E_INVALID_IA5_STRING                         _HRESULT_TYPEDEF_(0x80092022L)
+#define CRYPT_E_INVALID_X500_STRING                        _HRESULT_TYPEDEF_(0x80092023L)
+#define CRYPT_E_NOT_CHAR_STRING                            _HRESULT_TYPEDEF_(0x80092024L)
+#define CRYPT_E_FILERESIZED                                _HRESULT_TYPEDEF_(0x80092025L)
+#define CRYPT_E_SECURITY_SETTINGS                          _HRESULT_TYPEDEF_(0x80092026L)
+#define CRYPT_E_NO_VERIFY_USAGE_DLL                        _HRESULT_TYPEDEF_(0x80092027L)
+#define CRYPT_E_NO_VERIFY_USAGE_CHECK                      _HRESULT_TYPEDEF_(0x80092028L)
+#define CRYPT_E_VERIFY_USAGE_OFFLINE                       _HRESULT_TYPEDEF_(0x80092029L)
+#define CRYPT_E_NOT_IN_CTL                                 _HRESULT_TYPEDEF_(0x8009202AL)
+#define CRYPT_E_NO_TRUSTED_SIGNER                          _HRESULT_TYPEDEF_(0x8009202BL)
+#define CRYPT_E_MISSING_PUBKEY_PARA                        _HRESULT_TYPEDEF_(0x8009202CL)
+#define CRYPT_E_OSS_ERROR                                  _HRESULT_TYPEDEF_(0x80093000L)
+#define OSS_MORE_BUF                                       _HRESULT_TYPEDEF_(0x80093001L)
+#define OSS_NEGATIVE_UINTEGER                              _HRESULT_TYPEDEF_(0x80093002L)
+#define OSS_PDU_RANGE                                      _HRESULT_TYPEDEF_(0x80093003L)
+#define OSS_MORE_INPUT                                     _HRESULT_TYPEDEF_(0x80093004L)
+#define OSS_DATA_ERROR                                     _HRESULT_TYPEDEF_(0x80093005L)
+#define OSS_BAD_ARG                                        _HRESULT_TYPEDEF_(0x80093006L)
+#define OSS_BAD_VERSION                                    _HRESULT_TYPEDEF_(0x80093007L)
+#define OSS_OUT_MEMORY                                     _HRESULT_TYPEDEF_(0x80093008L)
+#define OSS_PDU_MISMATCH                                   _HRESULT_TYPEDEF_(0x80093009L)
+#define OSS_LIMITED                                        _HRESULT_TYPEDEF_(0x8009300AL)
+#define OSS_BAD_PTR                                        _HRESULT_TYPEDEF_(0x8009300BL)
+#define OSS_BAD_TIME                                       _HRESULT_TYPEDEF_(0x8009300CL)
+#define OSS_INDEFINITE_NOT_SUPPORTED                       _HRESULT_TYPEDEF_(0x8009300DL)
+#define OSS_MEM_ERROR                                      _HRESULT_TYPEDEF_(0x8009300EL)
+#define OSS_BAD_TABLE                                      _HRESULT_TYPEDEF_(0x8009300FL)
+#define OSS_TOO_LONG                                       _HRESULT_TYPEDEF_(0x80093010L)
+#define OSS_CONSTRAINT_VIOLATED                            _HRESULT_TYPEDEF_(0x80093011L)
+#define OSS_FATAL_ERROR                                    _HRESULT_TYPEDEF_(0x80093012L)
+#define OSS_ACCESS_SERIALIZATION_ERROR                     _HRESULT_TYPEDEF_(0x80093013L)
+#define OSS_NULL_TBL                                       _HRESULT_TYPEDEF_(0x80093014L)
+#define OSS_NULL_FCN                                       _HRESULT_TYPEDEF_(0x80093015L)
+#define OSS_BAD_ENCRULES                                   _HRESULT_TYPEDEF_(0x80093016L)
+#define OSS_UNAVAIL_ENCRULES                               _HRESULT_TYPEDEF_(0x80093017L)
+#define OSS_CANT_OPEN_TRACE_WINDOW                         _HRESULT_TYPEDEF_(0x80093018L)
+#define OSS_UNIMPLEMENTED                                  _HRESULT_TYPEDEF_(0x80093019L)
+#define OSS_OID_DLL_NOT_LINKED                             _HRESULT_TYPEDEF_(0x8009301AL)
+#define OSS_CANT_OPEN_TRACE_FILE                           _HRESULT_TYPEDEF_(0x8009301BL)
+#define OSS_TRACE_FILE_ALREADY_OPEN                        _HRESULT_TYPEDEF_(0x8009301CL)
+#define OSS_TABLE_MISMATCH                                 _HRESULT_TYPEDEF_(0x8009301DL)
+#define OSS_TYPE_NOT_SUPPORTED                             _HRESULT_TYPEDEF_(0x8009301EL)
+#define OSS_REAL_DLL_NOT_LINKED                            _HRESULT_TYPEDEF_(0x8009301FL)
+#define OSS_REAL_CODE_NOT_LINKED                           _HRESULT_TYPEDEF_(0x80093020L)
+#define OSS_OUT_OF_RANGE                                   _HRESULT_TYPEDEF_(0x80093021L)
+#define OSS_COPIER_DLL_NOT_LINKED                          _HRESULT_TYPEDEF_(0x80093022L)
+#define OSS_CONSTRAINT_DLL_NOT_LINKED                      _HRESULT_TYPEDEF_(0x80093023L)
+#define OSS_COMPARATOR_DLL_NOT_LINKED                      _HRESULT_TYPEDEF_(0x80093024L)
+#define OSS_COMPARATOR_CODE_NOT_LINKED                     _HRESULT_TYPEDEF_(0x80093025L)
+#define OSS_MEM_MGR_DLL_NOT_LINKED                         _HRESULT_TYPEDEF_(0x80093026L)
+#define OSS_PDV_DLL_NOT_LINKED                             _HRESULT_TYPEDEF_(0x80093027L)
+#define OSS_PDV_CODE_NOT_LINKED                            _HRESULT_TYPEDEF_(0x80093028L)
+#define OSS_API_DLL_NOT_LINKED                             _HRESULT_TYPEDEF_(0x80093029L)
+#define OSS_BERDER_DLL_NOT_LINKED                          _HRESULT_TYPEDEF_(0x8009302AL)
+#define OSS_PER_DLL_NOT_LINKED                             _HRESULT_TYPEDEF_(0x8009302BL)
+#define OSS_OPEN_TYPE_ERROR                                _HRESULT_TYPEDEF_(0x8009302CL)
+#define OSS_MUTEX_NOT_CREATED                              _HRESULT_TYPEDEF_(0x8009302DL)
+#define OSS_CANT_CLOSE_TRACE_FILE                          _HRESULT_TYPEDEF_(0x8009302EL)
+#define CRYPT_E_ASN1_ERROR                                 _HRESULT_TYPEDEF_(0x80093100L)
+#define CRYPT_E_ASN1_INTERNAL                              _HRESULT_TYPEDEF_(0x80093101L)
+#define CRYPT_E_ASN1_EOD                                   _HRESULT_TYPEDEF_(0x80093102L)
+#define CRYPT_E_ASN1_CORRUPT                               _HRESULT_TYPEDEF_(0x80093103L)
+#define CRYPT_E_ASN1_LARGE                                 _HRESULT_TYPEDEF_(0x80093104L)
+#define CRYPT_E_ASN1_CONSTRAINT                            _HRESULT_TYPEDEF_(0x80093105L)
+#define CRYPT_E_ASN1_MEMORY                                _HRESULT_TYPEDEF_(0x80093106L)
+#define CRYPT_E_ASN1_OVERFLOW                              _HRESULT_TYPEDEF_(0x80093107L)
+#define CRYPT_E_ASN1_BADPDU                                _HRESULT_TYPEDEF_(0x80093108L)
+#define CRYPT_E_ASN1_BADARGS                               _HRESULT_TYPEDEF_(0x80093109L)
+#define CRYPT_E_ASN1_BADREAL                               _HRESULT_TYPEDEF_(0x8009310AL)
+#define CRYPT_E_ASN1_BADTAG                                _HRESULT_TYPEDEF_(0x8009310BL)
+#define CRYPT_E_ASN1_CHOICE                                _HRESULT_TYPEDEF_(0x8009310CL)
+#define CRYPT_E_ASN1_RULE                                  _HRESULT_TYPEDEF_(0x8009310DL)
+#define CRYPT_E_ASN1_UTF8                                  _HRESULT_TYPEDEF_(0x8009310EL)
+#define CRYPT_E_ASN1_PDU_TYPE                              _HRESULT_TYPEDEF_(0x80093133L)
+#define CRYPT_E_ASN1_NYI                                   _HRESULT_TYPEDEF_(0x80093134L)
+#define CRYPT_E_ASN1_EXTENDED                              _HRESULT_TYPEDEF_(0x80093201L)
+#define CRYPT_E_ASN1_NOEOD                                 _HRESULT_TYPEDEF_(0x80093202L)
+
+#define TRUST_E_SYSTEM_ERROR                               _HRESULT_TYPEDEF_(0x80096001L)
+#define TRUST_E_NO_SIGNER_CERT                             _HRESULT_TYPEDEF_(0x80096002L)
+#define TRUST_E_COUNTER_SIGNER                             _HRESULT_TYPEDEF_(0x80096003L)
+#define TRUST_E_CERT_SIGNATURE                             _HRESULT_TYPEDEF_(0x80096004L)
+#define TRUST_E_TIME_STAMP                                 _HRESULT_TYPEDEF_(0x80096005L)
+#define TRUST_E_BAD_DIGEST                                 _HRESULT_TYPEDEF_(0x80096010L)
+#define TRUST_E_BASIC_CONSTRAINTS                          _HRESULT_TYPEDEF_(0x80096019L)
+#define TRUST_E_FINANCIAL_CRITERIA                         _HRESULT_TYPEDEF_(0x8009601EL)
+#define TRUST_E_PROVIDER_UNKNOWN                           _HRESULT_TYPEDEF_(0x800B0001L)
+#define TRUST_E_ACTION_UNKNOWN                             _HRESULT_TYPEDEF_(0x800B0002L)
+#define TRUST_E_SUBJECT_FORM_UNKNOWN                       _HRESULT_TYPEDEF_(0x800B0003L)
+#define TRUST_E_SUBJECT_NOT_TRUSTED                        _HRESULT_TYPEDEF_(0x800B0004L)
+#define TRUST_E_NOSIGNATURE                                _HRESULT_TYPEDEF_(0x800B0100L)
+#define CERT_E_EXPIRED                                     _HRESULT_TYPEDEF_(0x800B0101)
+#define CERT_E_VALIDITYPERIODNESTING                       _HRESULT_TYPEDEF_(0x800B0102)
+#define CERT_E_ROLE                                        _HRESULT_TYPEDEF_(0x800B0103)
+#define CERT_E_PATHLENCONST                                _HRESULT_TYPEDEF_(0x800B0104)
+#define CERT_E_CRITICAL                                    _HRESULT_TYPEDEF_(0x800B0105)
+#define CERT_E_PURPOSE                                     _HRESULT_TYPEDEF_(0x800B0106)
+#define CERT_E_ISSUERCHAINING                              _HRESULT_TYPEDEF_(0x800B0107)
+#define CERT_E_MALFORMED                                   _HRESULT_TYPEDEF_(0x800B0108)
+#define CERT_E_UNTRUSTEDROOT                               _HRESULT_TYPEDEF_(0x800B0109)
+#define CERT_E_CHAINING                                    _HRESULT_TYPEDEF_(0x800B010A)
+#define TRUST_E_FAIL                                       _HRESULT_TYPEDEF_(0x800B010B)
+#define CERT_E_REVOKED                                     _HRESULT_TYPEDEF_(0x800B010C)
+#define CERT_E_UNTRUSTEDTESTROOT                           _HRESULT_TYPEDEF_(0x800B010D)
+#define CERT_E_REVOCATION_FAILURE                          _HRESULT_TYPEDEF_(0x800B010E)
+#define CERT_E_CN_NO_MATCH                                 _HRESULT_TYPEDEF_(0x800B010F)
+#define CERT_E_WRONG_USAGE                                 _HRESULT_TYPEDEF_(0x800B0110)
+#define TRUST_E_EXPLICIT_DISTRUST                          _HRESULT_TYPEDEF_(0x800B0111)
+#define CERT_E_UNTRUSTEDCA                                 _HRESULT_TYPEDEF_(0x800B0112)
+#define CERT_E_INVALID_POLICY                              _HRESULT_TYPEDEF_(0x800B0113)
+#define CERT_E_INVALID_NAME                                _HRESULT_TYPEDEF_(0x800B0114)
+
+#define SPAPI_E_EXPECTED_SECTION_NAME                      _HRESULT_TYPEDEF_(0x800F0000L)
+#define SPAPI_E_BAD_SECTION_NAME_LINE                      _HRESULT_TYPEDEF_(0x800F0001L)
+#define SPAPI_E_SECTION_NAME_TOO_LONG                      _HRESULT_TYPEDEF_(0x800F0002L)
+#define SPAPI_E_GENERAL_SYNTAX                             _HRESULT_TYPEDEF_(0x800F0003L)
+#define SPAPI_E_WRONG_INF_STYLE                            _HRESULT_TYPEDEF_(0x800F0100L)
+#define SPAPI_E_SECTION_NOT_FOUND                          _HRESULT_TYPEDEF_(0x800F0101L)
+#define SPAPI_E_LINE_NOT_FOUND                             _HRESULT_TYPEDEF_(0x800F0102L)
+#define SPAPI_E_NO_BACKUP                                  _HRESULT_TYPEDEF_(0x800F0103L)
+#define SPAPI_E_NO_ASSOCIATED_CLASS                        _HRESULT_TYPEDEF_(0x800F0200L)
+#define SPAPI_E_CLASS_MISMATCH                             _HRESULT_TYPEDEF_(0x800F0201L)
+#define SPAPI_E_DUPLICATE_FOUND                            _HRESULT_TYPEDEF_(0x800F0202L)
+#define SPAPI_E_NO_DRIVER_SELECTED                         _HRESULT_TYPEDEF_(0x800F0203L)
+#define SPAPI_E_KEY_DOES_NOT_EXIST                         _HRESULT_TYPEDEF_(0x800F0204L)
+#define SPAPI_E_INVALID_DEVINST_NAME                       _HRESULT_TYPEDEF_(0x800F0205L)
+#define SPAPI_E_INVALID_CLASS                              _HRESULT_TYPEDEF_(0x800F0206L)
+#define SPAPI_E_DEVINST_ALREADY_EXISTS                     _HRESULT_TYPEDEF_(0x800F0207L)
+#define SPAPI_E_DEVINFO_NOT_REGISTERED                     _HRESULT_TYPEDEF_(0x800F0208L)
+#define SPAPI_E_INVALID_REG_PROPERTY                       _HRESULT_TYPEDEF_(0x800F0209L)
+#define SPAPI_E_NO_INF                                     _HRESULT_TYPEDEF_(0x800F020AL)
+#define SPAPI_E_NO_SUCH_DEVINST                            _HRESULT_TYPEDEF_(0x800F020BL)
+#define SPAPI_E_CANT_LOAD_CLASS_ICON                       _HRESULT_TYPEDEF_(0x800F020CL)
+#define SPAPI_E_INVALID_CLASS_INSTALLER                    _HRESULT_TYPEDEF_(0x800F020DL)
+#define SPAPI_E_DI_DO_DEFAULT                              _HRESULT_TYPEDEF_(0x800F020EL)
+#define SPAPI_E_DI_NOFILECOPY                              _HRESULT_TYPEDEF_(0x800F020FL)
+#define SPAPI_E_INVALID_HWPROFILE                          _HRESULT_TYPEDEF_(0x800F0210L)
+#define SPAPI_E_NO_DEVICE_SELECTED                         _HRESULT_TYPEDEF_(0x800F0211L)
+#define SPAPI_E_DEVINFO_LIST_LOCKED                        _HRESULT_TYPEDEF_(0x800F0212L)
+#define SPAPI_E_DEVINFO_DATA_LOCKED                        _HRESULT_TYPEDEF_(0x800F0213L)
+#define SPAPI_E_DI_BAD_PATH                                _HRESULT_TYPEDEF_(0x800F0214L)
+#define SPAPI_E_NO_CLASSINSTALL_PARAMS                     _HRESULT_TYPEDEF_(0x800F0215L)
+#define SPAPI_E_FILEQUEUE_LOCKED                           _HRESULT_TYPEDEF_(0x800F0216L)
+#define SPAPI_E_BAD_SERVICE_INSTALLSECT                    _HRESULT_TYPEDEF_(0x800F0217L)
+#define SPAPI_E_NO_CLASS_DRIVER_LIST                       _HRESULT_TYPEDEF_(0x800F0218L)
+#define SPAPI_E_NO_ASSOCIATED_SERVICE                      _HRESULT_TYPEDEF_(0x800F0219L)
+#define SPAPI_E_NO_DEFAULT_DEVICE_INTERFACE                _HRESULT_TYPEDEF_(0x800F021AL)
+#define SPAPI_E_DEVICE_INTERFACE_ACTIVE                    _HRESULT_TYPEDEF_(0x800F021BL)
+#define SPAPI_E_DEVICE_INTERFACE_REMOVED                   _HRESULT_TYPEDEF_(0x800F021CL)
+#define SPAPI_E_BAD_INTERFACE_INSTALLSECT                  _HRESULT_TYPEDEF_(0x800F021DL)
+#define SPAPI_E_NO_SUCH_INTERFACE_CLASS                    _HRESULT_TYPEDEF_(0x800F021EL)
+#define SPAPI_E_INVALID_REFERENCE_STRING                   _HRESULT_TYPEDEF_(0x800F021FL)
+#define SPAPI_E_INVALID_MACHINENAME                        _HRESULT_TYPEDEF_(0x800F0220L)
+#define SPAPI_E_REMOTE_COMM_FAILURE                        _HRESULT_TYPEDEF_(0x800F0221L)
+#define SPAPI_E_MACHINE_UNAVAILABLE                        _HRESULT_TYPEDEF_(0x800F0222L)
+#define SPAPI_E_NO_CONFIGMGR_SERVICES                      _HRESULT_TYPEDEF_(0x800F0223L)
+#define SPAPI_E_INVALID_PROPPAGE_PROVIDER                  _HRESULT_TYPEDEF_(0x800F0224L)
+#define SPAPI_E_NO_SUCH_DEVICE_INTERFACE                   _HRESULT_TYPEDEF_(0x800F0225L)
+#define SPAPI_E_DI_POSTPROCESSING_REQUIRED                 _HRESULT_TYPEDEF_(0x800F0226L)
+#define SPAPI_E_INVALID_COINSTALLER                        _HRESULT_TYPEDEF_(0x800F0227L)
+#define SPAPI_E_NO_COMPAT_DRIVERS                          _HRESULT_TYPEDEF_(0x800F0228L)
+#define SPAPI_E_NO_DEVICE_ICON                             _HRESULT_TYPEDEF_(0x800F0229L)
+#define SPAPI_E_INVALID_INF_LOGCONFIG                      _HRESULT_TYPEDEF_(0x800F022AL)
+#define SPAPI_E_DI_DONT_INSTALL                            _HRESULT_TYPEDEF_(0x800F022BL)
+#define SPAPI_E_INVALID_FILTER_DRIVER                      _HRESULT_TYPEDEF_(0x800F022CL)
+#define SPAPI_E_NON_WINDOWS_NT_DRIVER                      _HRESULT_TYPEDEF_(0x800F022DL)
+#define SPAPI_E_NON_WINDOWS_DRIVER                         _HRESULT_TYPEDEF_(0x800F022EL)
+#define SPAPI_E_NO_CATALOG_FOR_OEM_INF                     _HRESULT_TYPEDEF_(0x800F022FL)
+#define SPAPI_E_DEVINSTALL_QUEUE_NONNATIVE                 _HRESULT_TYPEDEF_(0x800F0230L)
+#define SPAPI_E_NOT_DISABLEABLE                            _HRESULT_TYPEDEF_(0x800F0231L)
+#define SPAPI_E_CANT_REMOVE_DEVINST                        _HRESULT_TYPEDEF_(0x800F0232L)
+#define SPAPI_E_INVALID_TARGET                             _HRESULT_TYPEDEF_(0x800F0233L)
+#define SPAPI_E_DRIVER_NONNATIVE                           _HRESULT_TYPEDEF_(0x800F0234L)
+#define SPAPI_E_IN_WOW64                                   _HRESULT_TYPEDEF_(0x800F0235L)
+#define SPAPI_E_SET_SYSTEM_RESTORE_POINT                   _HRESULT_TYPEDEF_(0x800F0236L)
+#define SPAPI_E_INCORRECTLY_COPIED_INF                     _HRESULT_TYPEDEF_(0x800F0237L)
+#define SPAPI_E_SCE_DISABLED                               _HRESULT_TYPEDEF_(0x800F0238L)
+#define SPAPI_E_ERROR_NOT_INSTALLED                        _HRESULT_TYPEDEF_(0x800F1000L)
+
+/* Smart card management error codes */
+#define SCARD_S_SUCCESS                                    NO_ERROR
+#define SCARD_F_INTERNAL_ERROR                             _HRESULT_TYPEDEF_(0x80100001L)
+#define SCARD_E_CANCELLED                                  _HRESULT_TYPEDEF_(0x80100002L)
+#define SCARD_E_INVALID_HANDLE                             _HRESULT_TYPEDEF_(0x80100003L)
+#define SCARD_E_INVALID_PARAMETER                          _HRESULT_TYPEDEF_(0x80100004L)
+#define SCARD_E_INVALID_TARGET                             _HRESULT_TYPEDEF_(0x80100005L)
+#define SCARD_E_NO_MEMORY                                  _HRESULT_TYPEDEF_(0x80100006L)
+#define SCARD_F_WAITED_TOO_LONG                            _HRESULT_TYPEDEF_(0x80100007L)
+#define SCARD_E_INSUFFICIENT_BUFFER                        _HRESULT_TYPEDEF_(0x80100008L)
+#define SCARD_E_UNKNOWN_READER                             _HRESULT_TYPEDEF_(0x80100009L)
+#define SCARD_E_TIMEOUT                                    _HRESULT_TYPEDEF_(0x8010000AL)
+#define SCARD_E_SHARING_VIOLATION                          _HRESULT_TYPEDEF_(0x8010000BL)
+#define SCARD_E_NO_SMARTCARD                               _HRESULT_TYPEDEF_(0x8010000CL)
+#define SCARD_E_UNKNOWN_CARD                               _HRESULT_TYPEDEF_(0x8010000DL)
+#define SCARD_E_CANT_DISPOSE                               _HRESULT_TYPEDEF_(0x8010000EL)
+#define SCARD_E_PROTO_MISMATCH                             _HRESULT_TYPEDEF_(0x8010000FL)
+#define SCARD_E_NOT_READY                                  _HRESULT_TYPEDEF_(0x80100010L)
+#define SCARD_E_INVALID_VALUE                              _HRESULT_TYPEDEF_(0x80100011L)
+#define SCARD_E_SYSTEM_CANCELLED                           _HRESULT_TYPEDEF_(0x80100012L)
+#define SCARD_F_COMM_ERROR                                 _HRESULT_TYPEDEF_(0x80100013L)
+#define SCARD_F_UNKNOWN_ERROR                              _HRESULT_TYPEDEF_(0x80100014L)
+#define SCARD_E_INVALID_ATR                                _HRESULT_TYPEDEF_(0x80100015L)
+#define SCARD_E_NOT_TRANSACTED                             _HRESULT_TYPEDEF_(0x80100016L)
+#define SCARD_E_READER_UNAVAILABLE                         _HRESULT_TYPEDEF_(0x80100017L)
+#define SCARD_P_SHUTDOWN                                   _HRESULT_TYPEDEF_(0x80100018L)
+#define SCARD_E_PCI_TOO_SMALL                              _HRESULT_TYPEDEF_(0x80100019L)
+#define SCARD_E_READER_UNSUPPORTED                         _HRESULT_TYPEDEF_(0x8010001AL)
+#define SCARD_E_DUPLICATE_READER                           _HRESULT_TYPEDEF_(0x8010001BL)
+#define SCARD_E_CARD_UNSUPPORTED                           _HRESULT_TYPEDEF_(0x8010001CL)
+#define SCARD_E_NO_SERVICE                                 _HRESULT_TYPEDEF_(0x8010001DL)
+#define SCARD_E_SERVICE_STOPPED                            _HRESULT_TYPEDEF_(0x8010001EL)
+#define SCARD_E_UNEXPECTED                                 _HRESULT_TYPEDEF_(0x8010001FL)
+#define SCARD_E_ICC_INSTALLATION                           _HRESULT_TYPEDEF_(0x80100020L)
+#define SCARD_E_ICC_CREATEORDER                            _HRESULT_TYPEDEF_(0x80100021L)
+#define SCARD_E_UNSUPPORTED_FEATURE                        _HRESULT_TYPEDEF_(0x80100022L)
+#define SCARD_E_DIR_NOT_FOUND                              _HRESULT_TYPEDEF_(0x80100023L)
+#define SCARD_E_FILE_NOT_FOUND                             _HRESULT_TYPEDEF_(0x80100024L)
+#define SCARD_E_NO_DIR                                     _HRESULT_TYPEDEF_(0x80100025L)
+#define SCARD_E_NO_FILE                                    _HRESULT_TYPEDEF_(0x80100026L)
+#define SCARD_E_NO_ACCESS                                  _HRESULT_TYPEDEF_(0x80100027L)
+#define SCARD_E_WRITE_TOO_MANY                             _HRESULT_TYPEDEF_(0x80100028L)
+#define SCARD_E_BAD_SEEK                                   _HRESULT_TYPEDEF_(0x80100029L)
+#define SCARD_E_INVALID_CHV                                _HRESULT_TYPEDEF_(0x8010002AL)
+#define SCARD_E_UNKNOWN_RES_MNG                            _HRESULT_TYPEDEF_(0x8010002BL)
+#define SCARD_E_NO_SUCH_CERTIFICATE                        _HRESULT_TYPEDEF_(0x8010002CL)
+#define SCARD_E_CERTIFICATE_UNAVAILABLE                    _HRESULT_TYPEDEF_(0x8010002DL)
+#define SCARD_E_NO_READERS_AVAILABLE                       _HRESULT_TYPEDEF_(0x8010002EL)
+#define SCARD_E_COMM_DATA_LOST                             _HRESULT_TYPEDEF_(0x8010002FL)
+#define SCARD_E_NO_KEY_CONTAINER                           _HRESULT_TYPEDEF_(0x80100030L)
+#define SCARD_E_SERVER_TOO_BUSY                            _HRESULT_TYPEDEF_(0x80100031L)
+#define SCARD_W_UNSUPPORTED_CARD                           _HRESULT_TYPEDEF_(0x80100065L)
+#define SCARD_W_UNRESPONSIVE_CARD                          _HRESULT_TYPEDEF_(0x80100066L)
+#define SCARD_W_UNPOWERED_CARD                             _HRESULT_TYPEDEF_(0x80100067L)
+#define SCARD_W_RESET_CARD                                 _HRESULT_TYPEDEF_(0x80100068L)
+#define SCARD_W_REMOVED_CARD                               _HRESULT_TYPEDEF_(0x80100069L)
+#define SCARD_W_SECURITY_VIOLATION                         _HRESULT_TYPEDEF_(0x8010006AL)
+#define SCARD_W_WRONG_CHV                                  _HRESULT_TYPEDEF_(0x8010006BL)
+#define SCARD_W_CHV_BLOCKED                                _HRESULT_TYPEDEF_(0x8010006CL)
+#define SCARD_W_EOF                                        _HRESULT_TYPEDEF_(0x8010006DL)
+#define SCARD_W_CANCELLED_BY_USER                          _HRESULT_TYPEDEF_(0x8010006EL)
+#define SCARD_W_CARD_NOT_AUTHENTICATED                     _HRESULT_TYPEDEF_(0x8010006FL)
+#define SCARD_W_CACHE_ITEM_NOT_FOUND                       _HRESULT_TYPEDEF_(0x80100070L)
+#define SCARD_W_CACHE_ITEM_STALE                           _HRESULT_TYPEDEF_(0x80100071L)
+#define SCARD_W_CACHE_ITEM_TOO_BIG                         _HRESULT_TYPEDEF_(0x80100072L)
+
+#define ERROR_AUDITING_DISABLED                            _HRESULT_TYPEDEF_(0xC0090001L)
+#define ERROR_ALL_SIDS_FILTERED                            _HRESULT_TYPEDEF_(0xC0090002L)
+
+#endif  /* __WINE_WINERROR_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wingdi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wingdi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wingdi.h	(revision 16410)
@@ -0,0 +1,3755 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _WINGDI_
+#define _WINGDI_
+#ifndef NOGDI
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef _GDI32_
+#define WINGDIAPI
+#else
+#define WINGDIAPI DECLSPEC_IMPORT
+#endif
+
+typedef struct _ABCFLOAT {
+    FLOAT   abcfA;
+    FLOAT   abcfB;
+    FLOAT   abcfC;
+} ABCFLOAT, *PABCFLOAT, *LPABCFLOAT;
+
+#define FONTMAPPER_MAX 10
+
+typedef struct
+{
+    WORD   wFirst;
+    WORD   wSecond;
+    INT  iKernAmount;
+} KERNINGPAIR, *LPKERNINGPAIR;
+
+typedef struct tagPIXELFORMATDESCRIPTOR {
+    WORD  nSize;
+    WORD  nVersion;
+    DWORD dwFlags;
+    BYTE  iPixelType;
+    BYTE  cColorBits;
+    BYTE  cRedBits;
+    BYTE  cRedShift;
+    BYTE  cGreenBits;
+    BYTE  cGreenShift;
+    BYTE  cBlueBits;
+    BYTE  cBlueShift;
+    BYTE  cAlphaBits;
+    BYTE  cAlphaShift;
+    BYTE  cAccumBits;
+    BYTE  cAccumRedBits;
+    BYTE  cAccumGreenBits;
+    BYTE  cAccumBlueBits;
+    BYTE  cAccumAlphaBits;
+    BYTE  cDepthBits;
+    BYTE  cStencilBits;
+    BYTE  cAuxBuffers;
+    BYTE  iLayerType;
+    BYTE  bReserved;
+    DWORD dwLayerMask;
+    DWORD dwVisibleMask;
+    DWORD dwDamageMask;
+} PIXELFORMATDESCRIPTOR, *PPIXELFORMATDESCRIPTOR, *LPPIXELFORMATDESCRIPTOR;
+
+#define PFD_TYPE_RGBA        0
+#define PFD_TYPE_COLORINDEX  1
+
+#define PFD_MAIN_PLANE       0
+#define PFD_OVERLAY_PLANE    1
+#define PFD_UNDERLAY_PLANE   (-1)
+
+#define PFD_DOUBLEBUFFER          0x00000001
+#define PFD_STEREO                0x00000002
+#define PFD_DRAW_TO_WINDOW        0x00000004
+#define PFD_DRAW_TO_BITMAP        0x00000008
+#define PFD_SUPPORT_GDI           0x00000010
+#define PFD_SUPPORT_OPENGL        0x00000020
+#define PFD_GENERIC_FORMAT        0x00000040
+#define PFD_NEED_PALETTE          0x00000080
+#define PFD_NEED_SYSTEM_PALETTE   0x00000100
+#define PFD_SWAP_EXCHANGE         0x00000200
+#define PFD_SWAP_COPY             0x00000400
+#define PFD_SWAP_LAYER_BUFFERS    0x00000800
+#define PFD_GENERIC_ACCELERATED   0x00001000
+#define PFD_SUPPORT_COMPOSITION   0x00008000 /* Vista stuff */
+
+#define PFD_DEPTH_DONTCARE        0x20000000
+#define PFD_DOUBLEBUFFER_DONTCARE 0x40000000
+#define PFD_STEREO_DONTCARE       0x80000000
+
+typedef struct tagCOLORADJUSTMENT
+{
+	WORD   caSize;
+	WORD   caFlags;
+	WORD   caIlluminantIndex;
+	WORD   caRedGamma;
+	WORD   caGreenGamma;
+	WORD   caBlueGamma;
+	WORD   caReferenceBlack;
+	WORD   caReferenceWhite;
+	SHORT  caContrast;
+	SHORT  caBrightness;
+	SHORT  caColorfulness;
+	SHORT  caRedGreenTint;
+} COLORADJUSTMENT, *PCOLORADJUSTMENT, *LPCOLORADJUSTMENT;
+
+#define CA_NEGATIVE          0x0001
+#define CA_LOG_FILTER        0x0002
+
+#define ILLUMINANT_DEVICE_DEFAULT   0
+#define ILLUMINANT_A                1
+#define ILLUMINANT_B                2
+#define ILLUMINANT_C                3
+#define ILLUMINANT_D50              4
+#define ILLUMINANT_D55              5
+#define ILLUMINANT_D65              6
+#define ILLUMINANT_D75              7
+#define ILLUMINANT_F2               8
+#define ILLUMINANT_MAX_INDEX        ILLUMINANT_F2
+
+#define ILLUMINANT_TUNGSTEN         ILLUMINANT_A
+#define ILLUMINANT_DAYLIGHT         ILLUMINANT_C
+#define ILLUMINANT_FLUORESCENT      ILLUMINANT_F2
+#define ILLUMINANT_NTSC             ILLUMINANT_C
+
+#define RGB_GAMMA_MIN               (WORD)02500
+#define RGB_GAMMA_MAX               (WORD)65000
+
+#define REFERENCE_WHITE_MIN         (WORD)6000
+#define REFERENCE_WHITE_MAX         (WORD)10000
+#define REFERENCE_BLACK_MIN         (WORD)0
+#define REFERENCE_BLACK_MAX         (WORD)4000
+
+#define COLOR_ADJ_MIN               ((SHORT)-100)
+#define COLOR_ADJ_MAX               (SHORT) 100
+
+typedef LONG FXPT16DOT16, *LPFXPT16DOT16;
+typedef LONG FXPT2DOT30, *LPFXPT2DOT30;
+typedef LONG LCSCSTYPE;
+typedef LONG LCSGAMUTMATCH;
+
+#define LCS_CALIBRATED_RGB    0x00000000L
+#define LCS_DEVICE_RGB        0x00000001L
+#define LCS_DEVICE_CMYK       0x00000002L
+
+#define LCS_GM_BUSINESS       0x00000001L
+#define LCS_GM_GRAPHICS       0x00000002L
+#define LCS_GM_IMAGES         0x00000004L
+
+#define CM_OUT_OF_GAMUT       255
+#define CM_IN_GAMUT           0
+
+typedef struct tagCIEXYZ
+{
+  FXPT2DOT30 ciexyzX;
+  FXPT2DOT30 ciexyzY;
+  FXPT2DOT30 ciexyzZ;
+} CIEXYZ, *LPCIEXYZ;
+
+typedef struct tagCIEXYZTRIPLE
+{
+  CIEXYZ ciexyzRed;
+  CIEXYZ ciexyzGreen;
+  CIEXYZ ciexyzBlue;
+} CIEXYZTRIPLE, *LPCIEXYZTRIPLE;
+
+typedef struct tagLOGCOLORSPACEA
+{
+  DWORD lcsSignature;
+  DWORD lcsVersion;
+  DWORD lcsSize;
+  LCSCSTYPE lcsCSType;
+  LCSGAMUTMATCH lcsIntent;
+  CIEXYZTRIPLE lcsEndpoints;
+  DWORD lcsGammaRed;
+  DWORD lcsGammaGreen;
+  DWORD lcsGammaBlue;
+  CHAR lcsFilename[MAX_PATH];
+} LOGCOLORSPACEA, *LPLOGCOLORSPACEA;
+
+ typedef struct tagLOGCOLORSPACEW
+{
+  DWORD lcsSignature;
+  DWORD lcsVersion;
+  DWORD lcsSize;
+  LCSCSTYPE lcsCSType;
+  LCSGAMUTMATCH lcsIntent;
+  CIEXYZTRIPLE lcsEndpoints;
+  DWORD lcsGammaRed;
+  DWORD lcsGammaGreen;
+  DWORD lcsGammaBlue;
+  WCHAR lcsFilename[MAX_PATH];
+} LOGCOLORSPACEW, *LPLOGCOLORSPACEW;
+
+DECL_WINELIB_TYPE_AW(LPLOGCOLORSPACE)
+DECL_WINELIB_TYPE_AW(LOGCOLORSPACE)
+
+#define DC_FIELDS		1
+#define DC_PAPERS		2
+#define DC_PAPERSIZE		3
+#define DC_MINEXTENT		4
+#define DC_MAXEXTENT		5
+#define DC_BINS			6
+#define DC_DUPLEX		7
+#define DC_SIZE			8
+#define DC_EXTRA		9
+#define DC_VERSION		10
+#define DC_DRIVER		11
+#define DC_BINNAMES		12
+#define DC_ENUMRESOLUTIONS	13
+#define DC_FILEDEPENDENCIES	14
+#define DC_TRUETYPE		15
+#define DC_PAPERNAMES		16
+#define DC_ORIENTATION		17
+#define DC_COPIES		18
+#define DC_BINADJUST            19
+#define DC_EMF_COMPLIANT        20
+#define DC_DATATYPE_PRODUCED    21
+#define DC_COLLATE              22
+#define DC_MANUFACTURER         23
+#define DC_MODEL                24
+#define DC_PERSONALITY          25
+#define DC_PRINTRATE            26
+#define DC_PRINTRATEUNIT        27
+#define DC_PRINTERMEM           28
+#define DC_MEDIAREADY           29
+#define DC_STAPLE               30
+#define DC_PRINTRATEPPM         31
+#define DC_COLORDEVICE          32
+#define DC_NUP                  33
+#define DC_MEDIATYPENAMES       34
+#define DC_MEDIATYPES           35
+
+#define DCTT_BITMAP             0x00000001L
+#define DCTT_DOWNLOAD           0x00000002L
+#define DCTT_SUBDEV             0x00000004L
+#define DCTT_DOWNLOAD_OUTLINE   0x00000008L
+
+#define DCBA_FACEUPNONE         0x0000
+#define DCBA_FACEUPCENTER       0x0001
+#define DCBA_FACEUPLEFT         0x0002
+#define DCBA_FACEUPRIGHT        0x0003
+#define DCBA_FACEDOWNNONE       0x0100
+#define DCBA_FACEDOWNCENTER     0x0101
+#define DCBA_FACEDOWNLEFT       0x0102
+#define DCBA_FACEDOWNRIGHT      0x0103
+
+#define PRINTRATEUNIT_PPM       1
+#define PRINTRATEUNIT_CPS       2
+#define PRINTRATEUNIT_LPM       3
+#define PRINTRATEUNIT_IPM       4
+
+/* Flag returned from Escape QUERYDIBSUPPORT */
+#define	QDI_SETDIBITS		1
+#define	QDI_GETDIBITS		2
+#define	QDI_DIBTOSCREEN		4
+#define	QDI_STRETCHDIB		8
+
+
+/* GDI Escape commands */
+#define	NEWFRAME		1
+#define	ABORTDOC		2
+#define	NEXTBAND		3
+#define	SETCOLORTABLE		4
+#define	GETCOLORTABLE		5
+#define	FLUSHOUTPUT		6
+#define	DRAFTMODE		7
+#define	QUERYESCSUPPORT		8
+#define	SETABORTPROC		9
+#define	STARTDOC		10
+#define	ENDDOC			11
+#define	GETPHYSPAGESIZE		12
+#define	GETPRINTINGOFFSET	13
+#define	GETSCALINGFACTOR	14
+#define	MFCOMMENT		15
+#define	GETPENWIDTH		16
+#define	SETCOPYCOUNT		17
+#define	SELECTPAPERSOURCE	18
+#define	DEVICEDATA		19
+#define	PASSTHROUGH		19
+#define	GETTECHNOLGY		20
+#define	GETTECHNOLOGY		20 /* yes, both of them */
+#define	SETLINECAP		21
+#define	SETLINEJOIN		22
+#define	SETMITERLIMIT		23
+#define	BANDINFO		24
+#define	DRAWPATTERNRECT		25
+#define	GETVECTORPENSIZE	26
+#define	GETVECTORBRUSHSIZE	27
+#define	ENABLEDUPLEX		28
+#define	GETSETPAPERBINS		29
+#define	GETSETPRINTORIENT	30
+#define	ENUMPAPERBINS		31
+#define	SETDIBSCALING		32
+#define	EPSPRINTING		33
+#define	ENUMPAPERMETRICS	34
+#define	GETSETPAPERMETRICS	35
+#define	POSTSCRIPT_DATA		37
+#define	POSTSCRIPT_IGNORE	38
+#define	MOUSETRAILS		39
+#define	GETDEVICEUNITS		42
+
+#define DESKTOPVERTRES          117
+#define DESKTOPHORZRES          118
+
+#define	GETEXTENDEDTEXTMETRICS	256
+#define	GETEXTENTTABLE		257
+#define	GETPAIRKERNTABLE	258
+#define	GETTRACKKERNTABLE	259
+#define	EXTTEXTOUT		512
+#define	GETFACENAME		513
+#define	DOWNLOADFACE		514
+#define	ENABLERELATIVEWIDTHS	768
+#define	ENABLEPAIRKERNING	769
+#define	SETKERNTRACK		770
+#define	SETALLJUSTVALUES	771
+#define	SETCHARSET		772
+
+#define	STRETCHBLT		2048
+#define	GETSETSCREENPARAMS	3072
+#define	QUERYDIBSUPPORT		3073
+#define	BEGIN_PATH		4096
+#define	CLIP_TO_PATH		4097
+#define	END_PATH		4098
+#define	EXT_DEVICE_CAPS		4099
+#define	RESTORE_CTM		4100
+#define	SAVE_CTM		4101
+#define	SET_ARC_DIRECTION	4102
+#define	SET_BACKGROUND_COLOR	4103
+#define	SET_POLY_MODE		4104
+#define	SET_SCREEN_ANGLE	4105
+#define	SET_SPREAD		4106
+#define	TRANSFORM_CTM		4107
+#define	SET_CLIP_BOX		4108
+#define	SET_BOUNDS		4109
+#define	SET_MIRROR_MODE		4110
+#define	OPENCHANNEL		4110
+#define	DOWNLOADHEADER		4111
+#define CLOSECHANNEL		4112
+#define	POSTSCRIPT_PASSTHROUGH	4115
+#define	ENCAPSULATED_POSTSCRIPT	4116
+#define	POSTSCRIPT_IDENTIFY	4117
+#define	POSTSCRIPT_INJECTION	4118
+
+/* for POSTSCRIPT_IDENTIFY */
+#define PSIDENT_GDICENTRIC	0
+#define PSIDENT_PSCENTRIC	1
+
+
+#define QDI_SETDIBITS           1
+#define QDI_GETDIBITS           2
+#define QDI_DIBTOSCREEN         4
+#define QDI_STRETCHDIB          8
+
+/* Spooler Error Codes */
+#define	SP_NOTREPORTED	0x4000
+#define	SP_ERROR	(-1)
+#define	SP_APPABORT	(-2)
+#define	SP_USERABORT	(-3)
+#define	SP_OUTOFDISK	(-4)
+#define	SP_OUTOFMEMORY	(-5)
+
+#define PR_JOBSTATUS     0
+
+  /* Raster operations */
+
+#define R2_BLACK         1
+#define R2_NOTMERGEPEN   2
+#define R2_MASKNOTPEN    3
+#define R2_NOTCOPYPEN    4
+#define R2_MASKPENNOT    5
+#define R2_NOT           6
+#define R2_XORPEN        7
+#define R2_NOTMASKPEN    8
+#define R2_MASKPEN       9
+#define R2_NOTXORPEN    10
+#define R2_NOP          11
+#define R2_MERGENOTPEN  12
+#define R2_COPYPEN      13
+#define R2_MERGEPENNOT  14
+#define R2_MERGEPEN     15
+#define R2_WHITE        16
+#define R2_LAST         16
+
+#define MAKEROP4(fore,back) (DWORD)((((back)<<8)&0xFF000000)|(fore))
+
+#define SRCCOPY         0xcc0020
+#define SRCPAINT        0xee0086
+#define SRCAND          0x8800c6
+#define SRCINVERT       0x660046
+#define SRCERASE        0x440328
+#define NOTSRCCOPY      0x330008
+#define NOTSRCERASE     0x1100a6
+#define MERGECOPY       0xc000ca
+#define MERGEPAINT      0xbb0226
+#define PATCOPY         0xf00021
+#define PATPAINT        0xfb0a09
+#define PATINVERT       0x5a0049
+#define DSTINVERT       0x550009
+#define BLACKNESS       0x000042
+#define WHITENESS       0xff0062
+
+  /* StretchBlt() modes */
+#define BLACKONWHITE         1
+#define WHITEONBLACK         2
+#define COLORONCOLOR	     3
+#define HALFTONE             4
+#define MAXSTRETCHBLTMODE    4
+
+#define STRETCH_ANDSCANS     BLACKONWHITE
+#define STRETCH_ORSCANS      WHITEONBLACK
+#define STRETCH_DELETESCANS  COLORONCOLOR
+#define STRETCH_HALFTONE     HALFTONE
+
+  /* Colors */
+
+#define RGB(r,g,b)          ((COLORREF)((BYTE)(r) | ((BYTE)(g) << 8) | ((BYTE)(b) << 16)))
+#define PALETTERGB(r,g,b)   (0x02000000 | RGB(r,g,b))
+#define PALETTEINDEX(i)     ((COLORREF)(0x01000000 | (WORD)(i)))
+
+#define GetRValue(rgb)      ((BYTE)  (rgb) )
+#define GetGValue(rgb)      ((BYTE) ((rgb) >> 8))
+#define GetBValue(rgb)      ((BYTE) ((rgb) >> 16))
+
+#define GetKValue(cmyk)     ((BYTE)  (cmyk) )
+#define GetYValue(cmyk)     ((BYTE) ((cmyk) >> 8))
+#define GetMValue(cmyk)     ((BYTE) ((cmyk) >> 16))
+#define GetCValue(cmyk)     ((BYTE) ((cmyk) >> 24))
+
+#define CMYK(c,m,y,k)       ((COLORREF)((((BYTE)(k)|((WORD)((BYTE)(y))<<8))|(((DWORD)(BYTE)(m))<<16))|(((DWORD)(BYTE)(c))<<24)))
+
+/* ICM stuff */
+typedef INT (CALLBACK *ICMENUMPROCA)(LPSTR lpszFilename,LPARAM lParam);
+typedef INT (CALLBACK *ICMENUMPROCW)(LPWSTR lpszFilename,LPARAM lParam);
+DECL_WINELIB_TYPE_AW(ICMENUMPROC)
+
+
+#define ICM_OFF   1
+#define ICM_ON    2
+#define ICM_QUERY 3
+
+  /* Bounds Accumulation APIs */
+#define DCB_RESET       0x0001
+#define DCB_ACCUMULATE  0x0002
+#define DCB_DIRTY       DCB_ACCUMULATE
+#define DCB_SET         (DCB_RESET | DCB_ACCUMULATE)
+#define DCB_ENABLE      0x0004
+#define DCB_DISABLE     0x0008
+
+typedef struct
+{
+    LONG paXCount;
+    LONG paYCount;
+    LONG paXExt;
+    LONG paYExt;
+    BYTE paRGBs;
+} PELARRAY, *PPELARRAY, *LPPELARRAY;
+
+  /* Bitmaps */
+
+typedef struct
+{
+    INT  bmType;
+    INT  bmWidth;
+    INT  bmHeight;
+    INT  bmWidthBytes;
+    WORD   bmPlanes;
+    WORD   bmBitsPixel;
+    LPVOID bmBits;
+} BITMAP, *PBITMAP, *LPBITMAP;
+
+
+  /* Brushes */
+
+typedef struct
+{
+    UINT       lbStyle;
+    COLORREF   lbColor;
+    ULONG_PTR  lbHatch;
+} LOGBRUSH, *PLOGBRUSH, *LPLOGBRUSH;
+
+typedef struct
+{
+    UINT       lbStyle;
+    COLORREF   lbColor;
+    ULONG      lbHatch;
+} LOGBRUSH32, *PLOGBRUSH32, *LPLOGBRUSH32;
+
+typedef LOGBRUSH PATTERN, *PPATTERN, *LPPATTERN;
+
+
+  /* Brush styles */
+#define BS_SOLID	    0
+#define BS_NULL		    1
+#define BS_HOLLOW	    1
+#define BS_HATCHED	    2
+#define BS_PATTERN	    3
+#define BS_INDEXED	    4
+#define	BS_DIBPATTERN	    5
+#define	BS_DIBPATTERNPT	    6
+#define BS_PATTERN8X8	    7
+#define	BS_DIBPATTERN8X8    8
+#define BS_MONOPATTERN      9
+
+  /* Hatch styles */
+#define HS_HORIZONTAL       0
+#define HS_VERTICAL         1
+#define HS_FDIAGONAL        2
+#define HS_BDIAGONAL        3
+#define HS_CROSS            4
+#define HS_DIAGCROSS        5
+
+  /* Fonts */
+
+#define LF_FACESIZE     32
+#define LF_FULLFACESIZE 64
+
+#define RASTER_FONTTYPE     0x0001
+#define DEVICE_FONTTYPE     0x0002
+#define TRUETYPE_FONTTYPE   0x0004
+
+typedef struct tagLOGFONTA
+{
+    LONG   lfHeight;
+    LONG   lfWidth;
+    LONG   lfEscapement;
+    LONG   lfOrientation;
+    LONG   lfWeight;
+    BYTE   lfItalic;
+    BYTE   lfUnderline;
+    BYTE   lfStrikeOut;
+    BYTE   lfCharSet;
+    BYTE   lfOutPrecision;
+    BYTE   lfClipPrecision;
+    BYTE   lfQuality;
+    BYTE   lfPitchAndFamily;
+    CHAR   lfFaceName[LF_FACESIZE];
+} LOGFONTA, *PLOGFONTA, *LPLOGFONTA;
+
+typedef struct tagLOGFONTW
+{
+    LONG   lfHeight;
+    LONG   lfWidth;
+    LONG   lfEscapement;
+    LONG   lfOrientation;
+    LONG   lfWeight;
+    BYTE   lfItalic;
+    BYTE   lfUnderline;
+    BYTE   lfStrikeOut;
+    BYTE   lfCharSet;
+    BYTE   lfOutPrecision;
+    BYTE   lfClipPrecision;
+    BYTE   lfQuality;
+    BYTE   lfPitchAndFamily;
+    WCHAR  lfFaceName[LF_FACESIZE];
+} LOGFONTW, *PLOGFONTW, *LPLOGFONTW;
+
+DECL_WINELIB_TYPE_AW(LOGFONT)
+DECL_WINELIB_TYPE_AW(PLOGFONT)
+DECL_WINELIB_TYPE_AW(LPLOGFONT)
+
+typedef struct
+{
+  LOGFONTA elfLogFont;
+  BYTE       elfFullName[LF_FULLFACESIZE];
+  BYTE       elfStyle[LF_FACESIZE];
+} ENUMLOGFONTA, *LPENUMLOGFONTA;
+
+typedef struct
+{
+  LOGFONTW elfLogFont;
+  WCHAR      elfFullName[LF_FULLFACESIZE];
+  WCHAR      elfStyle[LF_FACESIZE];
+} ENUMLOGFONTW, *LPENUMLOGFONTW;
+
+DECL_WINELIB_TYPE_AW(ENUMLOGFONT)
+DECL_WINELIB_TYPE_AW(LPENUMLOGFONT)
+
+typedef struct
+{
+  LOGFONTA elfLogFont;
+  BYTE       elfFullName[LF_FULLFACESIZE];
+  BYTE       elfStyle[LF_FACESIZE];
+  BYTE       elfScript[LF_FACESIZE];
+} ENUMLOGFONTEXA,*LPENUMLOGFONTEXA;
+
+typedef struct
+{
+  LOGFONTW elfLogFont;
+  WCHAR      elfFullName[LF_FULLFACESIZE];
+  WCHAR      elfStyle[LF_FACESIZE];
+  WCHAR      elfScript[LF_FACESIZE];
+} ENUMLOGFONTEXW,*LPENUMLOGFONTEXW;
+
+DECL_WINELIB_TYPE_AW(ENUMLOGFONTEX)
+DECL_WINELIB_TYPE_AW(LPENUMLOGFONTEX)
+
+/*
+ * The FONTSIGNATURE tells which Unicode ranges and which code pages
+ * have glyphs in a font.
+ *
+ * fsUsb  128-bit bitmap. The most significant bits are 10 (magic number).
+ *        The remaining 126 bits map the Unicode ISO 10646 subranges
+ *        for which the font provides glyphs.
+ *
+ * fsCsb  64-bit bitmap. The low 32 bits map the Windows codepages for
+ *        which the font provides glyphs. The high 32 bits are for
+ *        non Windows codepages.
+ */
+typedef struct
+{
+  DWORD fsUsb[4];
+  DWORD fsCsb[2];
+} FONTSIGNATURE, *PFONTSIGNATURE, *LPFONTSIGNATURE;
+
+typedef struct
+{
+  UINT	ciCharset; /* character set */
+  UINT	ciACP; /* ANSI code page */
+  FONTSIGNATURE	fs;
+} CHARSETINFO, *PCHARSETINFO, *LPCHARSETINFO;
+
+/* Flags for TranslateCharsetInfo */
+#define TCI_SRCCHARSET    1
+#define TCI_SRCCODEPAGE   2
+#define TCI_SRCFONTSIG    3
+
+typedef struct
+{
+    DWORD lsUsb[4];
+    DWORD lsCsbDefault[2];
+    DWORD lsCsbSupported[2];
+} LOCALESIGNATURE, *PLOCALESIGNATURE, *LPLOCALESIGNATURE;
+
+
+/* Flags for ModifyWorldTransform */
+#define MWT_IDENTITY      1
+#define MWT_LEFTMULTIPLY  2
+#define MWT_RIGHTMULTIPLY 3
+#define MWT_MIN           MWT_IDENTITY
+#define MWT_MAX           MWT_RIGHTMULTIPLY
+
+/* Object Definitions for EnumObjects() */
+#define OBJ_PEN             1
+#define OBJ_BRUSH           2
+#define OBJ_DC              3
+#define OBJ_METADC          4
+#define OBJ_PAL             5
+#define OBJ_FONT            6
+#define OBJ_BITMAP          7
+#define OBJ_REGION          8
+#define OBJ_METAFILE        9
+#define OBJ_MEMDC           10
+#define OBJ_EXTPEN          11
+#define OBJ_ENHMETADC       12
+#define OBJ_ENHMETAFILE     13
+#define OBJ_COLORSPACE      14
+
+typedef struct tagXFORM
+{
+    FLOAT  eM11;
+    FLOAT  eM12;
+    FLOAT  eM21;
+    FLOAT  eM22;
+    FLOAT  eDx;
+    FLOAT  eDy;
+} XFORM, *PXFORM, *LPXFORM;
+
+  /* lfWeight values */
+#define FW_DONTCARE	    0
+#define FW_THIN 	    100
+#define FW_EXTRALIGHT	    200
+#define FW_ULTRALIGHT	    200
+#define FW_LIGHT	    300
+#define FW_NORMAL	    400
+#define FW_REGULAR	    400
+#define FW_MEDIUM	    500
+#define FW_SEMIBOLD	    600
+#define FW_DEMIBOLD	    600
+#define FW_BOLD 	    700
+#define FW_EXTRABOLD	    800
+#define FW_ULTRABOLD	    800
+#define FW_HEAVY	    900
+#define FW_BLACK	    900
+
+  /* lfCharSet values */
+#define ANSI_CHARSET	      (BYTE)0   /* CP1252, ansi-0, iso8859-{1,15} */
+#define DEFAULT_CHARSET       (BYTE)1
+#define SYMBOL_CHARSET	      (BYTE)2
+#define SHIFTJIS_CHARSET      (BYTE)128 /* CP932 */
+#define HANGEUL_CHARSET       (BYTE)129 /* CP949, ksc5601.1987-0 */
+#define HANGUL_CHARSET        HANGEUL_CHARSET
+#define GB2312_CHARSET        (BYTE)134 /* CP936, gb2312.1980-0 */
+#define CHINESEBIG5_CHARSET   (BYTE)136 /* CP950, big5.et-0 */
+#define GREEK_CHARSET         (BYTE)161	/* CP1253 */
+#define TURKISH_CHARSET       (BYTE)162	/* CP1254, -iso8859-9 */
+#define HEBREW_CHARSET        (BYTE)177	/* CP1255, -iso8859-8 */
+#define ARABIC_CHARSET        (BYTE)178	/* CP1256, -iso8859-6 */
+#define BALTIC_CHARSET        (BYTE)186	/* CP1257, -iso8859-13 */
+#define VIETNAMESE_CHARSET    (BYTE)163 /* CP1258 */
+#define RUSSIAN_CHARSET       (BYTE)204	/* CP1251, -iso8859-5 */
+#define EE_CHARSET	      (BYTE)238	/* CP1250, -iso8859-2 */
+#define EASTEUROPE_CHARSET    EE_CHARSET
+#define THAI_CHARSET	      (BYTE)222 /* CP874, iso8859-11, tis620 */
+#define JOHAB_CHARSET         (BYTE)130 /* korean (johab) CP1361 */
+#define MAC_CHARSET           (BYTE)77
+#define OEM_CHARSET	      (BYTE)255
+/* I don't know if the values of *_CHARSET macros are defined in Windows
+ * or if we can choose them as we want. -- srtxg
+ */
+#define VISCII_CHARSET        (BYTE)240 /* viscii1.1-1 */
+#define TCVN_CHARSET          (BYTE)241 /* tcvn-0 */
+#define KOI8_CHARSET          (BYTE)242 /* koi8-{r,u,ru} */
+#define ISO3_CHARSET          (BYTE)243 /* iso8859-3 */
+#define ISO4_CHARSET          (BYTE)244 /* iso8859-4 */
+#define ISO10_CHARSET         (BYTE)245 /* iso8859-10 */
+#define CELTIC_CHARSET        (BYTE)246 /* iso8859-14 */
+
+#define FS_LATIN1              0x00000001L
+#define FS_LATIN2              0x00000002L
+#define FS_CYRILLIC            0x00000004L
+#define FS_GREEK               0x00000008L
+#define FS_TURKISH             0x00000010L
+#define FS_HEBREW              0x00000020L
+#define FS_ARABIC              0x00000040L
+#define FS_BALTIC              0x00000080L
+#define FS_VIETNAMESE          0x00000100L
+#define FS_THAI                0x00010000L
+#define FS_JISJAPAN            0x00020000L
+#define FS_CHINESESIMP         0x00040000L
+#define FS_WANSUNG             0x00080000L
+#define FS_CHINESETRAD         0x00100000L
+#define FS_JOHAB               0x00200000L
+#define FS_SYMBOL              0x80000000L
+
+  /* lfOutPrecision values */
+#define OUT_DEFAULT_PRECIS	0
+#define OUT_STRING_PRECIS	1
+#define OUT_CHARACTER_PRECIS	2
+#define OUT_STROKE_PRECIS	3
+#define OUT_TT_PRECIS		4
+#define OUT_DEVICE_PRECIS	5
+#define OUT_RASTER_PRECIS	6
+#define OUT_TT_ONLY_PRECIS	7
+#define OUT_OUTLINE_PRECIS      8
+
+  /* lfClipPrecision values */
+#define CLIP_DEFAULT_PRECIS     0x00
+#define CLIP_CHARACTER_PRECIS   0x01
+#define CLIP_STROKE_PRECIS      0x02
+#define CLIP_MASK		0x0F
+#define CLIP_LH_ANGLES		0x10
+#define CLIP_TT_ALWAYS		0x20
+#define CLIP_EMBEDDED		0x80
+
+  /* lfQuality values */
+#define DEFAULT_QUALITY        0
+#define DRAFT_QUALITY          1
+#define PROOF_QUALITY          2
+#define NONANTIALIASED_QUALITY 3
+#define ANTIALIASED_QUALITY    4
+
+  /* lfPitchAndFamily pitch values */
+#define DEFAULT_PITCH       0x00
+#define FIXED_PITCH         0x01
+#define VARIABLE_PITCH      0x02
+#define MONO_FONT           0x08
+
+#define FF_DONTCARE         0x00
+#define FF_ROMAN            0x10
+#define FF_SWISS            0x20
+#define FF_MODERN           0x30
+#define FF_SCRIPT           0x40
+#define FF_DECORATIVE       0x50
+
+#ifndef _TEXTMETRIC_DEFINED
+#define _TEXTMETRIC_DEFINED
+
+typedef struct tagTEXTMETRICA
+{
+    LONG      tmHeight;
+    LONG      tmAscent;
+    LONG      tmDescent;
+    LONG      tmInternalLeading;
+    LONG      tmExternalLeading;
+    LONG      tmAveCharWidth;
+    LONG      tmMaxCharWidth;
+    LONG      tmWeight;
+    LONG      tmOverhang;
+    LONG      tmDigitizedAspectX;
+    LONG      tmDigitizedAspectY;
+    BYTE      tmFirstChar;
+    BYTE      tmLastChar;
+    BYTE      tmDefaultChar;
+    BYTE      tmBreakChar;
+    BYTE      tmItalic;
+    BYTE      tmUnderlined;
+    BYTE      tmStruckOut;
+    BYTE      tmPitchAndFamily;
+    BYTE      tmCharSet;
+} TEXTMETRICA, *LPTEXTMETRICA, *PTEXTMETRICA;
+
+typedef struct tagTEXTMETRICW
+{
+    LONG      tmHeight;
+    LONG      tmAscent;
+    LONG      tmDescent;
+    LONG      tmInternalLeading;
+    LONG      tmExternalLeading;
+    LONG      tmAveCharWidth;
+    LONG      tmMaxCharWidth;
+    LONG      tmWeight;
+    LONG      tmOverhang;
+    LONG      tmDigitizedAspectX;
+    LONG      tmDigitizedAspectY;
+    WCHAR     tmFirstChar;
+    WCHAR     tmLastChar;
+    WCHAR     tmDefaultChar;
+    WCHAR     tmBreakChar;
+    BYTE      tmItalic;
+    BYTE      tmUnderlined;
+    BYTE      tmStruckOut;
+    BYTE      tmPitchAndFamily;
+    BYTE      tmCharSet;
+} TEXTMETRICW, *LPTEXTMETRICW, *PTEXTMETRICW;
+
+DECL_WINELIB_TYPE_AW(TEXTMETRIC)
+DECL_WINELIB_TYPE_AW(PTEXTMETRIC)
+DECL_WINELIB_TYPE_AW(LPTEXTMETRIC)
+#endif /* _TEXTMETRIC_DEFINED */
+
+
+typedef struct tagPANOSE
+{
+    BYTE bFamilyType;
+    BYTE bSerifStyle;
+    BYTE bWeight;
+    BYTE bProportion;
+    BYTE bContrast;
+    BYTE bStrokeVariation;
+    BYTE bArmStyle;
+    BYTE bLetterform;
+    BYTE bMidline;
+    BYTE bXHeight;
+} PANOSE, *LPPANOSE;
+
+#define PANOSE_COUNT                   10
+
+#define PAN_FAMILYTYPE_INDEX           0
+#define PAN_SERIFSTYLE_INDEX           1
+#define PAN_WEIGTH_INDEX               2
+#define PAN_PROPORTION_INDEX           3
+#define PAN_CONTRAST_INDEX             4
+#define PAN_STROKEVARIATION_INDEX      5
+#define PAN_ARMSTYLE_INDEX             6
+#define PAN_LETTERFORM_INDEX           7
+#define PAN_MIDLINE_INDEX              8
+#define PAN_XHEIGHT_INDEX              9
+
+#define PAN_CULTURE_LATIN              0
+
+#define PAN_ANY                        0
+#define PAN_NO_FIT                     1
+
+#define PAN_FAMILY_TEXT_DISPLAY        2
+#define PAN_FAMILY_SCRIPT              3
+#define PAN_FAMILY_DECORATIVE          4
+#define PAN_FAMILY_PICTORIAL           5
+
+#define PAN_SERIF_COVE                 2
+#define PAN_SERIF_OBTUSE_COVE          3
+#define PAN_SERIF_SQUARE_COVE          4
+#define PAN_SERIF_OBTUSE_SQUARE_COVE   5
+#define PAN_SERIF_SQUARE               6
+#define PAN_SERIF_THIN                 7
+#define PAN_SERIF_BONE                 8
+#define PAN_SERIF_EXAGGERATED          9
+#define PAN_SERIF_TRIANGLE             10
+#define PAN_SERIF_NORMAL_SANS          11
+#define PAN_SERIF_OBTUSE_SANS          12
+#define PAN_SERIF_PERP_SANS            13
+#define PAN_SERIF_FLARED               14
+#define PAN_SERIF_ROUNDED              15
+
+#define PAN_WEIGHT_VERY_LIGHT          2
+#define PAN_WEIGHT_LIGHT               3
+#define PAN_WEIGHT_THIN                4
+#define PAN_WEIGHT_BOOK                5
+#define PAN_WEIGHT_MEDIUM              6
+#define PAN_WEIGHT_DEMI                7
+#define PAN_WEIGHT_BOLD                8
+#define PAN_WEIGHT_HEAVY               9
+#define PAN_WEIGHT_BLACK               10
+#define PAN_WEIGHT_NORD                11
+
+#define PAN_PROP_OLD_STYLE             2
+#define PAN_PROP_MODERN                3
+#define PAN_PROP_EVEN_WIDTH            4
+#define PAN_PROP_EXPANDED              5
+#define PAN_PROP_CONDENSED             6
+#define PAN_PROP_VERY_EXPANDED         7
+#define PAN_PROP_VERY_CONDENSED        8
+#define PAN_PROP_MONOSPACED            9
+
+#define PAN_CONTRAST_NONE              2
+#define PAN_CONTRAST_VERY_LOW          3
+#define PAN_CONTRAST_LOW               4
+#define PAN_CONTRAST_MEDIUM_LOW        5
+#define PAN_CONTRAST_MEDIUM            6
+#define PAN_CONTRAST_MEDIUM_HIGH       7
+#define PAN_CONTRAST_HIGH              8
+#define PAN_CONTRAST_VERY_HIGH         9
+
+#define PAN_STROKE_GRADUAL_DIAG        2
+#define PAN_STROKE_GRADUAL_TRAN        3
+#define PAN_STROKE_GRADUAL_VERT        4
+#define PAN_STROKE_GRADUAL_HORZ        5
+#define PAN_STROKE_RAPID_VERT          6
+#define PAN_STROKE_RAPID_HORZ          7
+#define PAN_STROKE_INSTANT_VERT        8
+
+#define PAN_STRAIGHT_ARMS_HORZ         2
+#define PAN_STRAIGHT_ARMS_WEDGE        3
+#define PAN_STRAIGHT_ARMS_VERT         4
+#define PAN_STRAIGHT_ARMS_SINGLE_SERIF 5
+#define PAN_STRAIGHT_ARMS_DOUBLE_SERIF 6
+#define PAN_BENT_ARMS_HORZ             7
+#define PAN_BENT_ARMS_WEDGE            8
+#define PAN_BENT_ARMS_VERT             9
+#define PAN_BENT_ARMS_SINGLE_SERIF     10
+#define PAN_BENT_ARMS_DOUBLE_SERIF     11
+
+#define PAN_LETT_NORMAL_COMPACT        2
+#define PAN_LETT_NORMAL_WEIGHTED       3
+#define PAN_LETT_NORMAL_BOXED          4
+#define PAN_LETT_NORMAL_FLATTENED      5
+#define PAN_LETT_NORMAL_ROUNDED        6
+#define PAN_LETT_NORMAL_OFF_CENTER     7
+#define PAN_LETT_NORMAL_SQUARE         8
+#define PAN_LETT_OBLIQUE_COMPACT       9
+#define PAN_LETT_OBLIQUE_WEIGHTED      10
+#define PAN_LETT_OBLIQUE_BOXED         11
+#define PAN_LETT_OBLIQUE_FLATTENED     12
+#define PAN_LETT_OBLIQUE_ROUNDED       13
+#define PAN_LETT_OBLIQUE_OFF_CENTER    14
+#define PAN_LETT_OBLIQUE_SQUARE        15
+
+#define PAN_MIDLINE_STANDARD_TRIMMED   2
+#define PAN_MIDLINE_STANDARD_POINTED   3
+#define PAN_MIDLINE_STANDARD_SERIFED   4
+#define PAN_MIDLINE_HIGH_TRIMMED       5
+#define PAN_MIDLINE_HIGH_POINTED       6
+#define PAN_MIDLINE_HIGH_SERIFED       7
+#define PAN_MIDLINE_CONSTANT_TRIMMED   8
+#define PAN_MIDLINE_CONSTANT_POINTED   9
+#define PAN_MIDLINE_CONSTANT_SERIFED   10
+#define PAN_MIDLINE_LOW_TRIMMED        11
+#define PAN_MIDLINE_LOW_POINTED        12
+#define PAN_MIDLINE_LOW_SERIFED        13
+
+#define PAN_XHEIGHT_CONSTANT_SMALL     2
+#define PAN_XHEIGHT_CONSTANT_STANDARD  3
+#define PAN_XHEIGHT_CONSTANT_LARGE     4
+#define PAN_XHEIGHT_DUCKING_SMALL      5
+#define PAN_XHEIGHT_DUCKING_STANDARD   6
+#define PAN_XHEIGHT_DUCKING_LARGE      7
+
+#define ELF_VENDOR_SIZE 4
+typedef struct
+{
+  LOGFONTA    elfLogFont;
+  BYTE        elfFullName[LF_FULLFACESIZE];
+  BYTE        elfStyle[LF_FACESIZE];
+  DWORD       elfVersion;
+  DWORD       elfStyleSize;
+  DWORD       elfMatch;
+  DWORD       elfReserved;
+  BYTE        elfVendorId[ELF_VENDOR_SIZE];
+  DWORD       elfCulture;
+  PANOSE      elfPanose;
+} EXTLOGFONTA, *PEXTLOGFONTA, *LPEXTLOGFONTA;
+
+typedef struct
+{
+  LOGFONTW    elfLogFont;
+  WCHAR       elfFullName[LF_FULLFACESIZE];
+  WCHAR       elfStyle[LF_FACESIZE];
+  DWORD       elfVersion;
+  DWORD       elfStyleSize;
+  DWORD       elfMatch;
+  DWORD       elfReserved;
+  BYTE        elfVendorId[ELF_VENDOR_SIZE];
+  DWORD       elfCulture;
+  PANOSE      elfPanose;
+} EXTLOGFONTW, *PEXTLOGFONTW, *LPEXTLOGFONTW;
+
+DECL_WINELIB_TYPE_AW(EXTLOGFONT)
+DECL_WINELIB_TYPE_AW(PEXTLOGFONT)
+DECL_WINELIB_TYPE_AW(LPEXTLOGFONT)
+
+#define ELF_VERSION         0
+#define ELF_CULTURE_LATIN   0
+
+typedef struct _OUTLINETEXTMETRICA
+{
+    UINT          otmSize;
+    TEXTMETRICA   otmTextMetrics;
+    BYTE            otmFiller;
+    PANOSE          otmPanoseNumber;
+    UINT          otmfsSelection;
+    UINT          otmfsType;
+    INT           otmsCharSlopeRise;
+    INT           otmsCharSlopeRun;
+    INT           otmItalicAngle;
+    UINT          otmEMSquare;
+    INT           otmAscent;
+    INT           otmDescent;
+    UINT          otmLineGap;
+    UINT          otmsCapEmHeight;
+    UINT          otmsXHeight;
+    RECT          otmrcFontBox;
+    INT           otmMacAscent;
+    INT           otmMacDescent;
+    UINT          otmMacLineGap;
+    UINT          otmusMinimumPPEM;
+    POINT         otmptSubscriptSize;
+    POINT         otmptSubscriptOffset;
+    POINT         otmptSuperscriptSize;
+    POINT         otmptSuperscriptOffset;
+    UINT          otmsStrikeoutSize;
+    INT           otmsStrikeoutPosition;
+    INT           otmsUnderscoreSize;
+    INT           otmsUnderscorePosition;
+    LPSTR           otmpFamilyName;
+    LPSTR           otmpFaceName;
+    LPSTR           otmpStyleName;
+    LPSTR           otmpFullName;
+} OUTLINETEXTMETRICA, *POUTLINETEXTMETRICA, *LPOUTLINETEXTMETRICA;
+
+typedef struct _OUTLINETEXTMETRICW
+{
+    UINT          otmSize;
+    TEXTMETRICW   otmTextMetrics;
+    BYTE            otmFiller;
+    PANOSE          otmPanoseNumber;
+    UINT          otmfsSelection;
+    UINT          otmfsType;
+    INT           otmsCharSlopeRise;
+    INT           otmsCharSlopeRun;
+    INT           otmItalicAngle;
+    UINT          otmEMSquare;
+    INT           otmAscent;
+    INT           otmDescent;
+    UINT          otmLineGap;
+    UINT          otmsCapEmHeight;
+    UINT          otmsXHeight;
+    RECT          otmrcFontBox;
+    INT           otmMacAscent;
+    INT           otmMacDescent;
+    UINT          otmMacLineGap;
+    UINT          otmusMinimumPPEM;
+    POINT         otmptSubscriptSize;
+    POINT         otmptSubscriptOffset;
+    POINT         otmptSuperscriptSize;
+    POINT         otmptSuperscriptOffset;
+    UINT          otmsStrikeoutSize;
+    INT           otmsStrikeoutPosition;
+    INT           otmsUnderscoreSize;
+    INT           otmsUnderscorePosition;
+    LPSTR           otmpFamilyName;
+    LPSTR           otmpFaceName;
+    LPSTR           otmpStyleName;
+    LPSTR           otmpFullName;
+} OUTLINETEXTMETRICW, *POUTLINETEXTMETRICW, *LPOUTLINETEXTMETRICW;
+
+DECL_WINELIB_TYPE_AW(OUTLINETEXTMETRIC)
+DECL_WINELIB_TYPE_AW(POUTLINETEXTMETRIC)
+DECL_WINELIB_TYPE_AW(LPOUTLINETEXTMETRIC)
+
+typedef struct
+{
+    INT       x;
+    INT       y;
+    UINT      n;
+    LPCSTR    lpstr;
+    UINT      uiFlags;
+    RECT      rcl;
+    INT       *pdx;
+} POLYTEXTA, *PPOLYTEXTA, *LPPOLYTEXTA;
+
+typedef struct
+{
+    INT       x;
+    INT       y;
+    UINT      n;
+    LPCWSTR   lpstr;
+    UINT      uiFlags;
+    RECT      rcl;
+    INT       *pdx;
+} POLYTEXTW, *PPOLYTEXTW, *LPPOLYTEXTW;
+
+DECL_WINELIB_TYPE_AW(POLYTEXT)
+DECL_WINELIB_TYPE_AW(PPOLYTEXT)
+DECL_WINELIB_TYPE_AW(LPPOLYTEXT)
+
+
+/* ntmFlags field flags */
+#define NTM_REGULAR     0x00000040L
+#define NTM_BOLD        0x00000020L
+#define NTM_ITALIC      0x00000001L
+
+#define NTM_NONNEGATIVE_AC  0x00010000
+#define NTM_PS_OPENTYPE     0x00020000
+#define NTM_TT_OPENTYPE     0x00040000
+#define NTM_MULTIPLEMASTER  0x00080000
+#define NTM_TYPE1           0x00100000
+#define NTM_DSIG            0x00200000
+
+
+typedef struct
+{
+    LONG      tmHeight;
+    LONG      tmAscent;
+    LONG      tmDescent;
+    LONG      tmInternalLeading;
+    LONG      tmExternalLeading;
+    LONG      tmAveCharWidth;
+    LONG      tmMaxCharWidth;
+    LONG      tmWeight;
+    LONG      tmOverhang;
+    LONG      tmDigitizedAspectX;
+    LONG      tmDigitizedAspectY;
+    BYTE      tmFirstChar;
+    BYTE      tmLastChar;
+    BYTE      tmDefaultChar;
+    BYTE      tmBreakChar;
+    BYTE      tmItalic;
+    BYTE      tmUnderlined;
+    BYTE      tmStruckOut;
+    BYTE      tmPitchAndFamily;
+    BYTE      tmCharSet;
+    DWORD     ntmFlags;
+    UINT    ntmSizeEM;
+    UINT    ntmCellHeight;
+    UINT    ntmAvgWidth;
+} NEWTEXTMETRICA, *PNEWTEXTMETRICA, *LPNEWTEXTMETRICA;
+
+typedef struct
+{
+    LONG      tmHeight;
+    LONG      tmAscent;
+    LONG      tmDescent;
+    LONG      tmInternalLeading;
+    LONG      tmExternalLeading;
+    LONG      tmAveCharWidth;
+    LONG      tmMaxCharWidth;
+    LONG      tmWeight;
+    LONG      tmOverhang;
+    LONG      tmDigitizedAspectX;
+    LONG      tmDigitizedAspectY;
+    WCHAR     tmFirstChar;
+    WCHAR     tmLastChar;
+    WCHAR     tmDefaultChar;
+    WCHAR     tmBreakChar;
+    BYTE      tmItalic;
+    BYTE      tmUnderlined;
+    BYTE      tmStruckOut;
+    BYTE      tmPitchAndFamily;
+    BYTE      tmCharSet;
+    DWORD     ntmFlags;
+    UINT      ntmSizeEM;
+    UINT      ntmCellHeight;
+    UINT      ntmAvgWidth;
+} NEWTEXTMETRICW, *PNEWTEXTMETRICW, *LPNEWTEXTMETRICW;
+
+DECL_WINELIB_TYPE_AW(NEWTEXTMETRIC)
+DECL_WINELIB_TYPE_AW(PNEWTEXTMETRIC)
+DECL_WINELIB_TYPE_AW(LPNEWTEXTMETRIC)
+
+typedef struct
+{
+    NEWTEXTMETRICA	ntmTm;
+    FONTSIGNATURE       ntmFontSig;
+} NEWTEXTMETRICEXA;
+
+typedef struct
+{
+    NEWTEXTMETRICW	ntmTm;
+    FONTSIGNATURE       ntmFontSig;
+} NEWTEXTMETRICEXW;
+
+DECL_WINELIB_TYPE_AW(NEWTEXTMETRICEX)
+
+#if defined(STRICT)
+
+#if !defined(NOTEXTMETRIC)
+typedef int (CALLBACK *OLDFONTENUMPROCA)(const LOGFONTA *, const TEXTMETRICA *, DWORD, LPARAM);
+typedef int (CALLBACK *OLDFONTENUMPROCW)(const LOGFONTW *, const TEXTMETRICW *, DWORD, LPARAM);
+#else /* !defined(NOTEXTMETRIC) */
+typedef int (CALLBACK *OLDFONTENUMPROCA)(const LOGFONTA *, const VOID *, DWORD, LPARAM);
+typedef int (CALLBACK *OLDFONTENUMPROCW)(const LOGFONTW *, const VOID *, DWORD, LPARAM);
+#endif /* !defined(NOTEXTMETRIC) */
+DECL_WINELIB_TYPE_AW(OLDFONTENUMPROC)
+
+typedef OLDFONTENUMPROCA FONTENUMPROCA;
+typedef OLDFONTENUMPROCW FONTENUMPROCW;
+DECL_WINELIB_TYPE_AW(FONTENUMPROC)
+
+typedef INT (CALLBACK *GOBJENUMPROC)(LPVOID, LPARAM);
+typedef VOID (CALLBACK *LINEDDAPROC)(INT, INT, LPARAM);
+
+#else /* defined(STRICT) */
+
+typedef FARPROC OLDFONTENUMPROC;
+
+typedef FARPROC FONTENUMPROCA;
+typedef FARPROC FONTENUMPROCW;
+DECL_WINELIB_TYPE_AW(FONTENUMPROC)
+
+typedef FARPROC GOBJENUMPROC;
+typedef FARPROC LINEDDAPROC;
+
+#endif /* defined(STRICT) */
+
+  /* tmPitchAndFamily bits */
+#define TMPF_FIXED_PITCH    1		/* means variable pitch */
+#define TMPF_VECTOR	    2
+#define TMPF_TRUETYPE	    4
+#define TMPF_DEVICE	    8
+
+  /* Text alignment */
+#define TA_NOUPDATECP       0x00
+#define TA_UPDATECP         0x01
+#define TA_LEFT             0x00
+#define TA_RIGHT            0x02
+#define TA_CENTER           0x06
+#define TA_TOP              0x00
+#define TA_BOTTOM           0x08
+#define TA_BASELINE         0x18
+#define TA_RTLREADING        0x100
+#define TA_MASK             TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING
+
+#define VTA_BASELINE        TA_BASELINE
+#define VTA_LEFT            TA_BOTTOM
+#define VTA_RIGHT           TA_TOP
+#define VTA_CENTER          TA_CENTER
+#define VTA_BOTTOM          TA_RIGHT
+#define VTA_TOP             TA_LEFT
+
+
+  /* ExtTextOut() parameters */
+#define ETO_GRAYED          0x0001
+#define ETO_OPAQUE          0x0002
+#define ETO_CLIPPED         0x0004
+#define ETO_GLYPH_INDEX     0x0010
+#define ETO_RTLREADING      0x0080
+#define ETO_NUMERICSLOCAL   0x0400
+#define ETO_NUMERICSLATIN   0x0800
+#define ETO_IGNORELANGUAGE  0x1000
+#define ETO_PDY             0x2000
+
+#define ASPECT_FILTERING    0x0001
+
+  /* for GetGlyphIndices() */
+#define GGI_MARK_NONEXISTING_GLYPHS  0x0001
+
+typedef struct
+{
+    UINT	gmBlackBoxX;
+    UINT	gmBlackBoxY;
+    POINT	gmptGlyphOrigin;
+    SHORT	gmCellIncX;
+    SHORT	gmCellIncY;
+} GLYPHMETRICS, *LPGLYPHMETRICS;
+
+
+#define GGO_METRICS         0
+#define GGO_BITMAP          1
+#define GGO_NATIVE          2
+#define GGO_BEZIER          3
+#define GGO_GRAY2_BITMAP    4
+#define GGO_GRAY4_BITMAP    5
+#define GGO_GRAY8_BITMAP    6
+#define GGO_GLYPH_INDEX     0x80
+#define GGO_UNHINTED        0x100
+
+#ifdef __WINESRC__
+#define WINE_GGO_GRAY16_BITMAP 0x7f
+#endif
+
+typedef struct
+{
+    WORD    fract;
+    SHORT   value;
+} FIXED;
+
+typedef struct tagPOINTFX
+{
+	FIXED x;
+	FIXED y;
+} POINTFX, *LPPOINTFX;
+
+typedef struct tagTTPOLYCURVE
+{
+	WORD wType;
+	WORD cpfx;
+	POINTFX apfx[1];
+} TTPOLYCURVE, *LPTTPOLYCURVE;
+
+typedef struct tagTTPOLYGONHEADER
+{
+	DWORD cb;
+	DWORD dwType;
+	POINTFX pfxStart;
+} TTPOLYGONHEADER, *LPTTPOLYGONHEADER;
+
+typedef struct
+{
+     FIXED  eM11;
+     FIXED  eM12;
+     FIXED  eM21;
+     FIXED  eM22;
+} MAT2, *LPMAT2;
+
+  /* for GetCharABCWidths() */
+typedef struct
+{
+    INT   abcA;
+    UINT  abcB;
+    INT   abcC;
+} ABC, *PABC, *LPABC;
+
+
+  /* for GetCharacterPlacement () */
+
+#define GCP_DBCS          0x0001
+#define GCP_REORDER       0x0002
+#define GCP_USEKERNING    0x0008
+#define GCP_GLYPHSHAPE    0x0010
+#define GCP_LIGATE        0x0020
+#define GCP_DIACRITIC     0x0100
+#define GCP_KASHIDA       0x0200
+#define GCP_ERROR         0x8000
+#define FLI_MASK          0x103b
+#define GCP_JUSTIFY         0x00010000L
+#define FLI_GLYPHS          0x00040000L
+#define GCP_CLASSIN         0x00080000L
+#define GCP_MAXEXTENT       0x00100000L
+#define GCP_JUSTIFYIN       0x00200000L
+#define GCP_DISPLAYZWG      0x00400000L
+#define GCP_SYMSWAPOFF      0x00800000L
+#define GCP_NUMERICOVERRIDE 0x01000000L
+#define GCP_NEUTRALOVERRIDE 0x02000000L
+#define GCP_NUMERICSLATIN   0x04000000L
+#define GCP_NUMERICSLOCAL   0x08000000L
+
+#define GCPCLASS_LATIN                     1
+#define GCPCLASS_HEBREW                    2
+#define GCPCLASS_ARABIC                    3
+#define GCPCLASS_NEUTRAL                   4
+#define GCPCLASS_LOCALNUMBER               5
+#define GCPCLASS_LATINNUMBER               6
+#define GCPCLASS_LATINNUMERICTERMINATOR    7
+#define GCPCLASS_LATINNUMERICSEPARATOR     8
+#define GCPCLASS_NUMERICSEPARATOR          9
+#define GCPCLASS_PREBOUNDLTR               0x80
+#define GCPCLASS_PREBOUNDRLT               0x40
+#define GCPCLASS_POSTBOUNDLTR              0x20
+#define GCPCLASS_POSTBOUNDRTL              0x10
+
+#define GCPGLYPH_LINKBEFORE                0x8000
+#define GCPGLYPH_LINKAFTER                 0x4000
+
+
+typedef struct tagGCP_RESULTSA{
+    DWORD  lStructSize;
+    LPSTR  lpOutString;
+    UINT   *lpOrder;
+    INT    *lpDx;
+    INT    *lpCaretPos;
+    LPSTR  lpClass;
+    LPWSTR lpGlyphs;
+    UINT   nGlyphs;
+    UINT   nMaxFit;
+} GCP_RESULTSA, *LPGCP_RESULTSA;
+
+typedef struct tagGCP_RESULTSW
+{
+    DWORD  lStructSize;
+    LPWSTR lpOutString;
+    UINT   *lpOrder;
+    INT    *lpDx;
+    INT    *lpCaretPos;
+    LPSTR  lpClass;
+    LPWSTR lpGlyphs;
+    UINT   nGlyphs;
+    UINT   nMaxFit;
+} GCP_RESULTSW, *LPGCP_RESULTSW;
+
+DECL_WINELIB_TYPE_AW(GCP_RESULTS)
+DECL_WINELIB_TYPE_AW(LPGCP_RESULTS)
+
+  /* Rasterizer status */
+typedef struct
+{
+    SHORT nSize;
+    SHORT wFlags;
+    SHORT nLanguageID;
+} RASTERIZER_STATUS, *LPRASTERIZER_STATUS;
+
+#define TT_AVAILABLE        0x0001
+#define TT_ENABLED          0x0002
+
+#ifdef __WINESRC__
+#define WINE_TT_HINTER_ENABLED 0x8000
+#endif
+
+#define TT_PRIM_LINE    1
+#define TT_PRIM_QSPLINE 2
+#define TT_PRIM_CSPLINE 3
+#define TT_POLYGON_TYPE 24
+
+  /* OpenGL defines */
+typedef struct {
+  FLOAT      x;
+  FLOAT      y;
+} POINTFLOAT, *PPOINTFLOAT;
+
+typedef struct {
+  FLOAT      gmfBlackBoxX;
+  FLOAT      gmfBlackBoxY;
+  POINTFLOAT gmfptGlyphOrigin;
+  FLOAT      gmfCellIncX;
+  FLOAT      gmfCellIncY;
+} GLYPHMETRICSFLOAT, *PGLYPHMETRICSFLOAT, *LPGLYPHMETRICSFLOAT;
+
+typedef struct {
+  WORD  nSize;
+  WORD  nVersion;
+  DWORD dwFlags;
+  BYTE  iPixelType;
+  BYTE  cColorBits;
+  BYTE  cRedBits;
+  BYTE  cRedShift;
+  BYTE  cGreenBits;
+  BYTE  cGreenShift;
+  BYTE  cBlueBits;
+  BYTE  cBlueShift;
+  BYTE  cAlphaBits;
+  BYTE  cAlphaShift;
+  BYTE  cAccumBits;
+  BYTE  cAccumRedBits;
+  BYTE  cAccumGreenBits;
+  BYTE  cAccumBlueBits;
+  BYTE  cAccumAlphaBits;
+  BYTE  cDepthBits;
+  BYTE  cStencilBits;
+  BYTE  cAuxBuffers;
+  BYTE  iLayerPlane;
+  BYTE  bReserved;
+  COLORREF crTransparent;
+} LAYERPLANEDESCRIPTOR, *PLAYERPLANEDESCRIPTOR, *LPLAYERPLANEDESCRIPTOR;
+
+/* Get/SetSystemPaletteUse() values */
+#define SYSPAL_ERROR        0
+#define SYSPAL_STATIC       1
+#define SYSPAL_NOSTATIC     2
+#define SYSPAL_NOSTATIC256  3
+    
+#ifndef _PALETTEENTRY_DEFINED
+#define _PALETTEENTRY_DEFINED
+typedef struct tagPALETTEENTRY
+{
+	BYTE peRed, peGreen, peBlue, peFlags;
+} PALETTEENTRY, *PPALETTEENTRY, *LPPALETTEENTRY;
+#endif
+
+/* Logical palette entry flags */
+#define PC_RESERVED     0x01
+#define PC_EXPLICIT     0x02
+#define PC_NOCOLLAPSE   0x04
+
+#ifndef _LOGPALETTE_DEFINED
+#define _LOGPALETTE_DEFINED
+typedef struct tagLOGPALETTE
+{
+    WORD           palVersion;
+    WORD           palNumEntries;
+    PALETTEENTRY   palPalEntry[1];
+} LOGPALETTE, *PLOGPALETTE, *LPLOGPALETTE, *NPLOGPALETTE;
+#endif
+
+  /* Pens */
+
+typedef struct
+{
+    UINT     lopnStyle;
+    POINT    lopnWidth;
+    COLORREF lopnColor;
+} LOGPEN, *LPLOGPEN;
+
+
+typedef struct tagEXTLOGPEN
+{
+    DWORD    elpPenStyle;
+    DWORD    elpWidth;
+    UINT     elpBrushStyle;
+    COLORREF elpColor;
+    ULONG_PTR elpHatch;
+    DWORD elpNumEntries;
+    DWORD elpStyleEntry[1];
+} EXTLOGPEN, *PEXTLOGPEN, *NPEXTLOGPEN, *LPEXTLOGPEN;
+
+#define PS_SOLID         0x00000000
+#define PS_DASH          0x00000001
+#define PS_DOT           0x00000002
+#define PS_DASHDOT       0x00000003
+#define PS_DASHDOTDOT    0x00000004
+#define PS_NULL          0x00000005
+#define PS_INSIDEFRAME   0x00000006
+#define PS_USERSTYLE     0x00000007
+#define PS_ALTERNATE     0x00000008
+#define PS_STYLE_MASK    0x0000000f
+
+#define PS_ENDCAP_ROUND  0x00000000
+#define PS_ENDCAP_SQUARE 0x00000100
+#define PS_ENDCAP_FLAT   0x00000200
+#define PS_ENDCAP_MASK   0x00000f00
+
+#define PS_JOIN_ROUND    0x00000000
+#define PS_JOIN_BEVEL    0x00001000
+#define PS_JOIN_MITER    0x00002000
+#define PS_JOIN_MASK     0x0000f000
+
+#define PS_COSMETIC      0x00000000
+#define PS_GEOMETRIC     0x00010000
+#define PS_TYPE_MASK     0x000f0000
+
+  /* Regions */
+
+#define ERROR             0
+#define NULLREGION        1
+#define SIMPLEREGION      2
+#define COMPLEXREGION     3
+#define RGN_ERROR         ERROR
+
+#define RGN_AND           1
+#define RGN_OR            2
+#define RGN_XOR           3
+#define RGN_DIFF          4
+#define RGN_COPY          5
+#define RGN_MIN           RGN_AND
+#define RGN_MAX           RGN_COPY
+
+#define SYSRGN            4
+
+  /* Device contexts */
+
+  /* Polygon modes */
+#define ALTERNATE         1
+#define WINDING           2
+#define POLYFILL_LAST     2
+
+/* Background modes */
+/* Apparently some broken svr4 includes define TRANSPARENT */
+#undef TRANSPARENT
+#define TRANSPARENT       1
+#define OPAQUE            2
+#define BKMODE_LAST       2
+
+  /* Graphics Modes */
+#define GM_COMPATIBLE     1
+#define GM_ADVANCED       2
+#define GM_LAST           2
+
+  /* Arc direction modes */
+#define AD_COUNTERCLOCKWISE 1
+#define AD_CLOCKWISE        2
+
+  /* Map modes */
+#define MM_TEXT		  1
+#define MM_LOMETRIC	  2
+#define MM_HIMETRIC	  3
+#define MM_LOENGLISH	  4
+#define MM_HIENGLISH	  5
+#define MM_TWIPS	  6
+#define MM_ISOTROPIC	  7
+#define MM_ANISOTROPIC	  8
+
+#define MM_MIN            MM_TEXT
+#define MM_MAX            MM_ANISOTROPIC
+#define MM_MAX_FIXEDSCALE MM_TWIPS
+
+  /* Coordinate modes */
+#define ABSOLUTE          1
+#define RELATIVE          2
+
+  /* Flood fill modes */
+#define FLOODFILLBORDER   0
+#define FLOODFILLSURFACE  1
+
+  /* Device parameters for GetDeviceCaps() */
+#define DRIVERVERSION     0
+#define TECHNOLOGY        2
+#define HORZSIZE          4
+#define VERTSIZE          6
+#define HORZRES           8
+#define VERTRES           10
+#define BITSPIXEL         12
+#define PLANES            14
+#define NUMBRUSHES        16
+#define NUMPENS           18
+#define NUMMARKERS        20
+#define NUMFONTS          22
+#define NUMCOLORS         24
+#define PDEVICESIZE       26
+#define CURVECAPS         28
+#define LINECAPS          30
+#define POLYGONALCAPS     32
+#define TEXTCAPS          34
+#define CLIPCAPS          36
+#define RASTERCAPS        38
+#define ASPECTX           40
+#define ASPECTY           42
+#define ASPECTXY          44
+#define LOGPIXELSX        88
+#define LOGPIXELSY        90
+#define CAPS1             94
+#define SIZEPALETTE       104
+#define NUMRESERVED       106
+#define COLORRES          108
+
+#define PHYSICALWIDTH     110
+#define PHYSICALHEIGHT    111
+#define PHYSICALOFFSETX   112
+#define PHYSICALOFFSETY   113
+#define SCALINGFACTORX    114
+#define SCALINGFACTORY    115
+#define VREFRESH          116
+#define DESKTOPVERTRES    117
+#define DESKTOPHORZRES    118
+#define BLTALIGNMENT      119
+#define SHADEBLENDCAPS    120
+#define COLORMGMTCAPS     121
+
+/* TECHNOLOGY */
+#define DT_PLOTTER        0
+#define DT_RASDISPLAY     1
+#define DT_RASPRINTER     2
+#define DT_RASCAMERA      3
+#define DT_CHARSTREAM     4
+#define DT_METAFILE       5
+#define DT_DISPFILE       6
+
+/* CURVECAPS */
+#define CC_NONE           0x0000
+#define CC_CIRCLES        0x0001
+#define CC_PIE            0x0002
+#define CC_CHORD          0x0004
+#define CC_ELLIPSES       0x0008
+#define CC_WIDE           0x0010
+#define CC_STYLED         0x0020
+#define CC_WIDESTYLED     0x0040
+#define CC_INTERIORS      0x0080
+#define CC_ROUNDRECT      0x0100
+
+/* LINECAPS */
+#define LC_NONE           0x0000
+#define LC_POLYLINE       0x0002
+#define LC_MARKER         0x0004
+#define LC_POLYMARKER     0x0008
+#define LC_WIDE           0x0010
+#define LC_STYLED         0x0020
+#define LC_WIDESTYLED     0x0040
+#define LC_INTERIORS      0x0080
+
+/* POLYGONALCAPS */
+#define PC_NONE           0x0000
+#define PC_POLYGON        0x0001
+#define PC_RECTANGLE      0x0002
+#define PC_WINDPOLYGON    0x0004
+#define PC_TRAPEZOID      0x0004
+#define PC_SCANLINE       0x0008
+#define PC_WIDE           0x0010
+#define PC_STYLED         0x0020
+#define PC_WIDESTYLED     0x0040
+#define PC_INTERIORS      0x0080
+#define PC_POLYPOLYGON    0x0100
+#define PC_PATHS          0x0200
+
+/* TEXTCAPS */
+#define TC_OP_CHARACTER   0x0001
+#define TC_OP_STROKE      0x0002
+#define TC_CP_STROKE      0x0004
+#define TC_CR_90          0x0008
+#define TC_CR_ANY         0x0010
+#define TC_SF_X_YINDEP    0x0020
+#define TC_SA_DOUBLE      0x0040
+#define TC_SA_INTEGER     0x0080
+#define TC_SA_CONTIN      0x0100
+#define TC_EA_DOUBLE      0x0200
+#define TC_IA_ABLE        0x0400
+#define TC_UA_ABLE        0x0800
+#define TC_SO_ABLE        0x1000
+#define TC_RA_ABLE        0x2000
+#define TC_VA_ABLE        0x4000
+#define TC_RESERVED       0x8000
+#define TC_SCROLLBLT      0x00010000
+
+/* CLIPCAPS */
+#define CP_NONE           0x0000
+#define CP_RECTANGLE      0x0001
+#define CP_REGION         0x0002
+
+/* RASTERCAPS */
+#define RC_NONE           0x0000
+#define RC_BITBLT         0x0001
+#define RC_BANDING        0x0002
+#define RC_SCALING        0x0004
+#define RC_BITMAP64       0x0008
+#define RC_GDI20_OUTPUT   0x0010
+#define RC_GDI20_STATE    0x0020
+#define RC_SAVEBITMAP     0x0040
+#define RC_DI_BITMAP      0x0080
+#define RC_PALETTE        0x0100
+#define RC_DIBTODEV       0x0200
+#define RC_BIGFONT        0x0400
+#define RC_STRETCHBLT     0x0800
+#define RC_FLOODFILL      0x1000
+#define RC_STRETCHDIB     0x2000
+#define RC_OP_DX_OUTPUT   0x4000
+#define RC_DEVBITS        0x8000
+
+/* CAPS1 */
+#define C1_TRANSPARENT    0x0001
+#define TC_TT_ABLE        0x0002
+#define C1_TT_CR_ANY      0x0004
+#define C1_EMF_COMPLIANT  0x0008
+#define C1_DIBENGINE      0x0010
+#define C1_GAMMA_RAMP     0x0040
+#define C1_REINIT_ABLE    0x0080
+#define C1_GLYPH_INDEX    0x0100
+#define C1_BIT_PACKED     0x0200
+#define C1_BYTE_PACKED    0x0400
+#define C1_COLORCURSOR    0x0800
+#define C1_CMYK_ABLE      0x1000
+#define C1_SLOW_CARD      0x2000
+
+/* SHADEBLENDCAPS */
+#define SB_NONE           0x0000
+#define SB_CONST_ALPHA    0x0001
+#define SB_PIXEL_ALPHA    0x0002
+#define SB_PREMULT_ALPHA  0x0004
+#define SB_GRAD_RECT      0x0010
+#define SB_GRAD_TRI       0x0020
+
+  /* Device-independent bitmaps */
+
+typedef struct {
+  BYTE rgbBlue;
+  BYTE rgbGreen;
+  BYTE rgbRed;
+  BYTE rgbReserved;
+} RGBQUAD, *LPRGBQUAD;
+
+typedef struct {
+  BYTE rgbtBlue;
+  BYTE rgbtGreen;
+  BYTE rgbtRed;
+} RGBTRIPLE;
+
+#include <pshpack2.h>
+typedef struct
+{
+    WORD    bfType;
+    DWORD   bfSize;
+    WORD    bfReserved1;
+    WORD    bfReserved2;
+    DWORD   bfOffBits;
+} BITMAPFILEHEADER, *PBITMAPFILEHEADER, *LPBITMAPFILEHEADER;
+#include <poppack.h>
+
+#define MAKEPOINTS(l)  (*((POINTS *)&(l)))
+
+typedef struct
+{
+    DWORD 	biSize;
+    LONG  	biWidth;
+    LONG  	biHeight;
+    WORD 	biPlanes;
+    WORD 	biBitCount;
+    DWORD 	biCompression;
+    DWORD 	biSizeImage;
+    LONG  	biXPelsPerMeter;
+    LONG  	biYPelsPerMeter;
+    DWORD 	biClrUsed;
+    DWORD 	biClrImportant;
+} BITMAPINFOHEADER, *PBITMAPINFOHEADER, *LPBITMAPINFOHEADER;
+
+typedef struct
+{
+    DWORD        bV4Size;
+    LONG         bV4Width;
+    LONG         bV4Height;
+    WORD         bV4Planes;
+    WORD         bV4BitCount;
+    DWORD        bV4V4Compression;
+    DWORD        bV4SizeImage;
+    LONG         bV4XPelsPerMeter;
+    LONG         bV4YPelsPerMeter;
+    DWORD        bV4ClrUsed;
+    DWORD        bV4ClrImportant;
+    DWORD        bV4RedMask;
+    DWORD        bV4GreenMask;
+    DWORD        bV4BlueMask;
+    DWORD        bV4AlphaMask;
+    DWORD        bV4CSType;
+    CIEXYZTRIPLE bV4Endpoints;
+    DWORD        bV4GammaRed;
+    DWORD        bV4GammaGreen;
+    DWORD        bV4GammaBlue;
+} BITMAPV4HEADER, *PBITMAPV4HEADER;
+
+typedef struct {
+    DWORD        bV5Size;
+    LONG         bV5Width;
+    LONG         bV5Height;
+    WORD         bV5Planes;
+    WORD         bV5BitCount;
+    DWORD        bV5Compression;
+    DWORD        bV5SizeImage;
+    LONG         bV5XPelsPerMeter;
+    LONG         bV5YPelsPerMeter;
+    DWORD        bV5ClrUsed;
+    DWORD        bV5ClrImportant;
+    DWORD        bV5RedMask;
+    DWORD        bV5GreenMask;
+    DWORD        bV5BlueMask;
+    DWORD        bV5AlphaMask;
+    DWORD        bV5CSType;
+    CIEXYZTRIPLE bV5Endpoints;
+    DWORD        bV5GammaRed;
+    DWORD        bV5GammaGreen;
+    DWORD        bV5GammaBlue;
+    DWORD        bV5Intent;
+    DWORD        bV5ProfileData;
+    DWORD        bV5ProfileSize;
+    DWORD        bV5Reserved;
+} BITMAPV5HEADER, *LPBITMAPV5HEADER, *PBITMAPV5HEADER;
+
+#define PROFILE_LINKED   0x4c494e4b     /* 'LINK' */
+#define PROFILE_EMBEDDED 0x4d424544     /* 'MBED' */
+
+
+  /* biCompression */
+#define BI_RGB           0
+#define BI_RLE8          1
+#define BI_RLE4          2
+#define BI_BITFIELDS     3
+
+typedef struct tagBITMAPINFO
+{
+    BITMAPINFOHEADER bmiHeader;
+    RGBQUAD          bmiColors[1];
+} BITMAPINFO, *PBITMAPINFO, *LPBITMAPINFO;
+
+typedef struct
+{
+    DWORD   bcSize;
+    WORD    bcWidth;
+    WORD    bcHeight;
+    WORD    bcPlanes;
+    WORD    bcBitCount;
+} BITMAPCOREHEADER, *PBITMAPCOREHEADER, *LPBITMAPCOREHEADER;
+
+typedef struct
+{
+    BITMAPCOREHEADER bmciHeader;
+    RGBTRIPLE        bmciColors[1];
+} BITMAPCOREINFO, *PBITMAPCOREINFO, *LPBITMAPCOREINFO;
+
+#define DIB_RGB_COLORS   0
+#define DIB_PAL_COLORS   1
+#define CBM_INIT         4
+
+typedef struct
+{
+	BITMAP		dsBm;
+	BITMAPINFOHEADER	dsBmih;
+	DWORD			dsBitfields[3];
+	HANDLE		dshSection;
+	DWORD			dsOffset;
+} DIBSECTION, *PDIBSECTION, *LPDIBSECTION;
+
+  /* Stock GDI objects for GetStockObject() */
+
+#define WHITE_BRUSH	    0
+#define LTGRAY_BRUSH	    1
+#define GRAY_BRUSH	    2
+#define DKGRAY_BRUSH	    3
+#define BLACK_BRUSH	    4
+#define NULL_BRUSH	    5
+#define HOLLOW_BRUSH	    5
+#define WHITE_PEN	    6
+#define BLACK_PEN	    7
+#define NULL_PEN	    8
+#define OEM_FIXED_FONT	    10
+#define ANSI_FIXED_FONT     11
+#define ANSI_VAR_FONT	    12
+#define SYSTEM_FONT	    13
+#define DEVICE_DEFAULT_FONT 14
+#define DEFAULT_PALETTE     15
+#define SYSTEM_FIXED_FONT   16
+#define DEFAULT_GUI_FONT    17
+#define DC_BRUSH            18
+#define DC_PEN              19
+
+#define STOCK_LAST          19
+
+#define CLR_INVALID         0xffffffff
+/* Metafile header structure */
+#include <pshpack2.h>
+typedef struct
+{
+    WORD       mtType;
+    WORD       mtHeaderSize;
+    WORD       mtVersion;
+    DWORD      mtSize;
+    WORD       mtNoObjects;
+    DWORD      mtMaxRecord;
+    WORD       mtNoParameters;
+} METAHEADER, *PMETAHEADER, *LPMETAHEADER;
+#include <poppack.h>
+
+/* Metafile typical record structure */
+typedef struct
+{
+    DWORD      rdSize;
+    WORD       rdFunction;
+    WORD       rdParm[1];
+} METARECORD, *PMETARECORD, *LPMETARECORD;
+
+/* Handle table structure */
+
+typedef struct
+{
+    HGDIOBJ objectHandle[1];
+} HANDLETABLE, *PHANDLETABLE, *LPHANDLETABLE;
+
+
+/* Clipboard metafile picture structure */
+typedef struct
+{
+    LONG       mm;
+    LONG       xExt;
+    LONG       yExt;
+    HMETAFILE  hMF;
+} METAFILEPICT, *LPMETAFILEPICT;
+
+
+/* Metafile functions */
+#define META_SETBKCOLOR              0x0201
+#define META_SETBKMODE               0x0102
+#define META_SETMAPMODE              0x0103
+#define META_SETROP2                 0x0104
+#define META_SETRELABS               0x0105
+#define META_SETPOLYFILLMODE         0x0106
+#define META_SETSTRETCHBLTMODE       0x0107
+#define META_SETTEXTCHAREXTRA        0x0108
+#define META_SETTEXTCOLOR            0x0209
+#define META_SETTEXTJUSTIFICATION    0x020A
+#define META_SETWINDOWORG            0x020B
+#define META_SETWINDOWEXT            0x020C
+#define META_SETVIEWPORTORG          0x020D
+#define META_SETVIEWPORTEXT          0x020E
+#define META_OFFSETWINDOWORG         0x020F
+#define META_SCALEWINDOWEXT          0x0410
+#define META_OFFSETVIEWPORTORG       0x0211
+#define META_SCALEVIEWPORTEXT        0x0412
+#define META_LINETO                  0x0213
+#define META_MOVETO                  0x0214
+#define META_EXCLUDECLIPRECT         0x0415
+#define META_INTERSECTCLIPRECT       0x0416
+#define META_ARC                     0x0817
+#define META_ELLIPSE                 0x0418
+#define META_FLOODFILL               0x0419
+#define META_PIE                     0x081A
+#define META_RECTANGLE               0x041B
+#define META_ROUNDRECT               0x061C
+#define META_PATBLT                  0x061D
+#define META_SAVEDC                  0x001E
+#define META_SETPIXEL                0x041F
+#define META_OFFSETCLIPRGN           0x0220
+#define META_TEXTOUT                 0x0521
+#define META_BITBLT                  0x0922
+#define META_STRETCHBLT              0x0B23
+#define META_POLYGON                 0x0324
+#define META_POLYLINE                0x0325
+#define META_ESCAPE                  0x0626
+#define META_RESTOREDC               0x0127
+#define META_FILLREGION              0x0228
+#define META_FRAMEREGION             0x0429
+#define META_INVERTREGION            0x012A
+#define META_PAINTREGION             0x012B
+#define META_SELECTCLIPREGION        0x012C
+#define META_SELECTOBJECT            0x012D
+#define META_SETTEXTALIGN            0x012E
+#define META_DRAWTEXT                0x062F
+#define META_CHORD                   0x0830
+#define META_SETMAPPERFLAGS          0x0231
+#define META_EXTTEXTOUT              0x0A32
+#define META_SETDIBTODEV             0x0D33
+#define META_SELECTPALETTE           0x0234
+#define META_REALIZEPALETTE          0x0035
+#define META_ANIMATEPALETTE          0x0436
+#define META_SETPALENTRIES           0x0037
+#define META_POLYPOLYGON             0x0538
+#define META_RESIZEPALETTE           0x0139
+#define META_DIBBITBLT               0x0940
+#define META_DIBSTRETCHBLT           0x0B41
+#define META_DIBCREATEPATTERNBRUSH   0x0142
+#define META_STRETCHDIB              0x0F43
+#define META_EXTFLOODFILL            0x0548
+#define META_RESETDC                 0x014C
+#define META_STARTDOC                0x014D
+#define META_STARTPAGE               0x004F
+#define META_ENDPAGE                 0x0050
+#define META_ABORTDOC                0x0052
+#define META_ENDDOC                  0x005E
+#define META_DELETEOBJECT            0x01F0
+#define META_CREATEPALETTE           0x00F7
+#define META_CREATEBRUSH             0x00F8
+#define META_CREATEPATTERNBRUSH      0x01F9
+#define META_CREATEPENINDIRECT       0x02FA
+#define META_CREATEFONTINDIRECT      0x02FB
+#define META_CREATEBRUSHINDIRECT     0x02FC
+#define META_CREATEBITMAPINDIRECT    0x02FD
+#define META_CREATEBITMAP            0x06FE
+#define META_CREATEREGION            0x06FF
+#define META_UNKNOWN                 0x0529  /* FIXME: unknown meta magic */
+
+typedef INT (CALLBACK *MFENUMPROC)(HDC,HANDLETABLE*,METARECORD*,
+                                       INT,LPARAM);
+
+/* enhanced metafile structures and functions */
+
+/* note that ENHMETAHEADER is just a particular kind of ENHMETARECORD,
+   ie. the header is just the first record in the metafile */
+typedef struct {
+    DWORD iType;
+    DWORD nSize;
+    RECTL rclBounds;
+    RECTL rclFrame;
+    DWORD dSignature;
+    DWORD nVersion;
+    DWORD nBytes;
+    DWORD nRecords;
+    WORD  nHandles;
+    WORD  sReserved;
+    DWORD nDescription;
+    DWORD offDescription;
+    DWORD nPalEntries;
+    SIZEL szlDevice;
+    SIZEL szlMillimeters;
+    DWORD cbPixelFormat;
+    DWORD offPixelFormat;
+    DWORD bOpenGL;
+    SIZEL szlMicrometers;
+} ENHMETAHEADER, *PENHMETAHEADER, *LPENHMETAHEADER;
+
+typedef struct {
+    DWORD iType;
+    DWORD nSize;
+    DWORD dParm[1];
+} ENHMETARECORD, *LPENHMETARECORD;
+
+typedef struct {
+    DWORD iType;
+    DWORD nSize;
+} EMR, *PEMR;
+
+typedef struct {
+    POINTL ptlReference;
+    DWORD  nChars;
+    DWORD  offString;
+    DWORD  fOptions;
+    RECTL  rcl;
+    DWORD  offDx;
+} EMRTEXT, *PEMRTEXT;
+
+typedef struct {
+    EMR emr;
+} EMRABORTPATH,      *PEMRABORTPATH,
+  EMRBEGINPATH,      *PEMRBEGINPATH,
+  EMRENDPATH,        *PEMRENDPATH,
+  EMRCLOSEFIGURE,    *PEMRCLOSEFIGURE,
+  EMRFLATTENPATH,    *PEMRFLATTENPATH,
+  EMRWIDENPATH,      *PEMRWIDENPATH,
+  EMRSETMETARGN,     *PEMRSETMETARGN,
+  EMRSAVEDC,         *PEMRSAVEDC,
+  EMRREALIZEPALETTE, *PEMRREALIZEPALETTE;
+
+typedef struct {
+    EMR    emr;
+    POINTL ptlCenter;
+    DWORD  nRadius;
+    FLOAT  eStartAngle;
+    FLOAT  eSweepAngle;
+} EMRANGLEARC, *PEMRANGLEARC;
+
+typedef struct {
+    EMR    emr;
+    RECTL  rclBox;
+    POINTL ptlStart;
+    POINTL ptlEnd;
+} EMRARC,   *PEMRARC,
+  EMRARCTO, *PEMRARCTO,
+  EMRCHORD, *PEMRCHORD,
+  EMRPIE,   *PEMRPIE;
+
+typedef struct {
+    EMR      emr;
+    RECTL    rclBounds;
+    LONG     xDest;
+    LONG     yDest;
+    LONG     cxDest;
+    LONG     cyDest;
+    DWORD    dwRop;
+    LONG     xSrc;
+    LONG     ySrc;
+    XFORM    xformSrc;
+    COLORREF crBkColorSrc;
+    DWORD    iUsageSrc;
+    DWORD    offBmiSrc;
+    DWORD    cbBmiSrc;
+    DWORD    offBitsSrc;
+    DWORD    cbBitsSrc;
+} EMRBITBLT, *PEMRBITBLT;
+
+typedef struct {
+    EMR        emr;
+    DWORD      ihBrush;
+    LOGBRUSH32 lb;
+} EMRCREATEBRUSHINDIRECT, *PEMRCREATEBRUSHINDIRECT;
+
+typedef struct {
+    EMR            emr;
+    DWORD          ihCS;
+    LOGCOLORSPACEA lcs;
+} EMRCREATECOLORSPACE, *PEMRCREATECOLORSPACE;
+
+typedef struct {
+  EMR            emr;
+  DWORD          ihCS;
+  LOGCOLORSPACEW lcs;
+  DWORD          dwFlags;
+  DWORD          cbData;
+  BYTE           Data[1];
+} EMRCREATECOLORSPACEW, *PEMRCREATECOLORSPACEW;
+
+typedef struct {
+    EMR   emr;
+    DWORD ihBrush;
+    DWORD iUsage;
+    DWORD offBmi;
+    DWORD cbBmi;
+    DWORD offBits;
+    DWORD cbBits;
+} EMRCREATEDIBPATTERNBRUSHPT, *PEMRCREATEDIBPATTERNBRUSHPT;
+
+typedef struct {
+    EMR   emr;
+    DWORD ihBrush;
+    DWORD iUsage;
+    DWORD offBmi;
+    DWORD cbBmi;
+    DWORD offBits;
+    DWORD cbBits;
+} EMRCREATEMONOBRUSH, *PEMRCREATEMONOBRUSH;
+
+typedef struct {
+    EMR        emr;
+    DWORD      ihPal;
+    LOGPALETTE lgpl;
+} EMRCREATEPALETTE, *PEMRCREATEPALETTE;
+
+typedef struct {
+    EMR    emr;
+    DWORD  ihPen;
+    LOGPEN lopn;
+} EMRCREATEPEN, *PEMRCREATEPEN;
+
+typedef struct {
+    EMR           emr;
+    DWORD         ihCS;
+} EMRDELETECOLORSPACE, *PEMRDELETECOLORSPACE,
+  EMRSELECTCOLORSPACE, *PEMRSELECTCOLORSPACE,
+  EMRSETCOLORSPACE,    *PEMRSETCOLORSPACE;
+
+typedef struct {
+    EMR   emr;
+    DWORD ihObject;
+} EMRDELETEOBJECT, *PEMRDELETEOBJECT,
+  EMRSELECTOBJECT, *PEMRSELECTOBJECT;
+
+typedef struct {
+    EMR   emr;
+    RECTL rclBox;
+} EMRELLIPSE,   *PEMRELLIPSE,
+  EMRRECTANGLE, *PEMRRECTANGLE;
+
+typedef struct {
+    EMR   emr;
+    DWORD nPalEntries;
+    DWORD offPalEntries;
+    DWORD nSizeLast;
+} EMREOF, *PEMREOF;
+
+typedef struct {
+    EMR   emr;
+    RECTL rclClip;
+} EMREXCLUDECLIPRECT,   *PEMREXCLUDECLIPRECT,
+  EMRINTERSECTCLIPRECT, *PEMRINTERSECTCLIPRECT;
+
+typedef struct {
+    EMR         emr;
+    DWORD       ihFont;
+    EXTLOGFONTW elfw;
+} EMREXTCREATEFONTINDIRECTW, *PEMREXTCREATEFONTINDIRECTW;
+
+typedef struct {
+    EMR       emr;
+    DWORD     ihPen;
+    DWORD     offBmi;
+    DWORD     cbBmi;
+    DWORD     offBits;
+    DWORD     cbBits;
+    EXTLOGPEN elp;
+} EMREXTCREATEPEN, *PEMREXTCREATEPEN;
+
+typedef struct {
+    EMR      emr;
+    POINTL   ptlStart;
+    COLORREF crColor;
+    DWORD    iMode;
+} EMREXTFLOODFILL, *PEMREXTFLOODFILL;
+
+typedef struct {
+    EMR   emr;
+    DWORD cbRgnData;
+    DWORD iMode;
+    BYTE  RgnData[1];
+} EMREXTSELECTCLIPRGN, *PEMREXTSELECTCLIPRGN;
+
+typedef struct {
+    EMR     emr;
+    RECTL   rclBounds;
+    DWORD   iGraphicsMode;
+    FLOAT   exScale;
+    FLOAT   eyScale;
+    EMRTEXT emrtext;
+} EMREXTTEXTOUTA, *PEMREXTTEXTOUTA,
+  EMREXTTEXTOUTW, *PEMREXTTEXTOUTW;
+
+typedef struct {
+    EMR emr;
+    RECTL rclBounds;
+} EMRFILLPATH,          *PEMRFILLPATH,
+  EMRSTROKEANDFILLPATH, *PEMRSTROKEANDFILLPATH,
+  EMRSTROKEPATH,        *PEMRSTROKEPATH;
+
+typedef struct {
+    EMR   emr;
+    RECTL rclBounds;
+    DWORD cbRgnData;
+    DWORD ihBrush;
+    BYTE  RgnData[1];
+} EMRFILLRGN, *PEMRFILLRGN;
+
+typedef struct {
+    DWORD dSignature;
+    DWORD nVersion;
+    DWORD cbData;
+    DWORD offData;
+} EMRFORMAT, *PEMRFORMAT;
+
+typedef struct {
+    EMR   emr;
+    RECTL rclBounds;
+    DWORD cbRgnData;
+    DWORD ihBrush;
+    SIZEL szlStroke;
+    BYTE  RgnData[1];
+} EMRFRAMERGN, *PEMRFRAMERGN;
+
+typedef struct {
+    EMR   emr;
+    DWORD cbData;
+    BYTE  Data[1];
+} EMRGDICOMMENT, *PEMRGDICOMMENT;
+
+#if 0
+typedef struct {
+    EMR       emr;
+    RECTL     rclBounds;
+    DWORD     nVer;
+    DWORD     nTri;
+    ULONG     ulMode;
+    TRIVERTEX Ver[1];
+} EMRGRADIENTFILL, *PEMRGRADIENTFILL;
+#endif
+
+typedef struct {
+    EMR   emr;
+    RECTL rclBounds;
+    DWORD cbRgnData;
+    BYTE  RgnData[1];
+} EMRINVERTRGN, *PEMRINVERTRGN,
+  EMRPAINTRGN,  *PEMRPAINTRGN;
+
+typedef struct {
+    EMR    emr;
+    POINTL ptl;
+} EMRLINETO,   *PEMRLINETO,
+  EMRMOVETOEX, *PEMRMOVETOEX;
+
+typedef struct {
+    EMR      emr;
+    RECTL    rclBounds;
+    LONG     xDest;
+    LONG     yDest;
+    LONG     cxDest;
+    LONG     cyDest;
+    DWORD    dwRop;
+    LONG     xSrc;
+    LONG     ySrc;
+    XFORM    xformSrc;
+    COLORREF crBkColorSrc;
+    DWORD    iUsageSrc;
+    DWORD    offBmiSrc;
+    DWORD    cbBmiSrc;
+    DWORD    offBitsSrc;
+    DWORD    cbBitsSrc;
+    LONG     xMask;
+    LONG     yMask;
+    DWORD    iUsageMask;
+    DWORD    offBmiMask;
+    DWORD    cbBmiMask;
+    DWORD    offBitsMask;
+    DWORD    cbBitsMask;
+} EMRMASKBLT, *PEMRMASKBLT;
+
+typedef struct {
+    EMR   emr;
+    XFORM xform;
+    DWORD iMode;
+} EMRMODIFYWORLDTRANSFORM, *PEMRMODIFYWORLDTRANSFORM;
+
+typedef struct {
+    EMR    emr;
+    POINTL ptlOffset;
+} EMROFFSETCLIPRGN, *PEMROFFSETCLIPRGN;
+
+typedef struct {
+    EMR      emr;
+    RECTL    rclBounds;
+    POINTL   aptlDest[3];
+    LONG     xSrc;
+    LONG     ySrc;
+    LONG     cxSrc;
+    LONG     cySrc;
+    XFORM    xformSrc;
+    COLORREF crBkColorSrc;
+    DWORD    iUsageSrc;
+    DWORD    offBmiSrc;
+    DWORD    cbBmiSrc;
+    DWORD    offBitsSrc;
+    DWORD    cbBitsSrc;
+    LONG     xMask;
+    LONG     yMask;
+    DWORD    iUsageMask;
+    DWORD    offBmiMask;
+    DWORD    cbBmiMask;
+    DWORD    offBitsMask;
+    DWORD    cbBitsMask;
+} EMRPLGBLT, *PEMRPLGBLT;
+
+typedef struct {
+    EMR    emr;
+    RECTL  rclBounds;
+    DWORD  cptl;
+    POINTL aptl[1];
+} EMRPOLYLINE,     *PEMRPOLYLINE,
+  EMRPOLYBEZIER,   *PEMRPOLYBEZIER,
+  EMRPOLYGON,      *PEMRPOLYGON,
+  EMRPOLYBEZIERTO, *PEMRPOLYBEZIERTO,
+  EMRPOLYLINETO,   *PEMRPOLYLINETO;
+
+typedef struct {
+    EMR    emr;
+    RECTL  rclBounds;
+    DWORD  cpts;
+    POINTS apts[1];
+} EMRPOLYLINE16,     *PEMRPOLYLINE16,
+  EMRPOLYBEZIER16,   *PEMRPOLYBEZIER16,
+  EMRPOLYGON16,      *PEMRPOLYGON16,
+  EMRPOLYBEZIERTO16, *PEMRPOLYBEZIERTO16,
+  EMRPOLYLINETO16,   *PEMRPOLYLINETO16;
+
+typedef struct {
+    EMR    emr;
+    RECTL  rclBounds;
+    DWORD  cpts;
+    POINTS apts[1];
+    BYTE   abTypes[1];
+} EMRPOLYDRAW16, *PEMRPOLYDRAW16;
+
+typedef struct {
+    EMR     emr;
+    RECTL   rclBounds;
+    DWORD   nPolys;
+    DWORD   cpts;
+    DWORD   aPolyCounts[1];
+    POINTS  apts[1];
+} EMRPOLYPOLYLINE16, *PEMRPOLYPOLYLINE16,
+  EMRPOLYPOLYGON16,  *PEMRPOLYPOLYGON16;
+
+typedef struct {
+    EMR    emr;
+    RECTL  rclBounds;
+    DWORD  cptl;
+    POINTL aptl[1];
+    BYTE   abTypes[1];
+} EMRPOLYDRAW, *PEMRPOLYDRAW;
+
+typedef struct {
+    EMR     emr;
+    RECTL   rclBounds;
+    DWORD   nPolys;
+    DWORD   cptl;
+    DWORD   aPolyCounts[1];
+    POINTL  aptl[1];
+} EMRPOLYPOLYLINE, *PEMRPOLYPOLYLINE,
+  EMRPOLYPOLYGON,  *PEMRPOLYPOLYGON;
+
+typedef struct {
+    EMR     emr;
+    RECTL   rclBounds;
+    DWORD   iGraphicsMode;
+    FLOAT   exScale;
+    FLOAT   eyScale;
+    LONG    cStrings;
+    EMRTEXT aemrtext[1];
+} EMRPOLYTEXTOUTA, *PEMRPOLYTEXTOUTA,
+  EMRPOLYTEXTOUTW, *PEMRPOLYTEXTOUTW;
+
+typedef struct {
+    EMR   emr;
+    DWORD ihPal;
+    DWORD cEntries;
+} EMRRESIZEPALETTE, *PEMRRESIZEPALETTE;
+
+typedef struct {
+    EMR  emr;
+    LONG iRelative;
+} EMRRESTOREDC, *PEMRRESTOREDC;
+
+typedef struct {
+    EMR   emr;
+    RECTL rclBox;
+    SIZEL szlCorner;
+} EMRROUNDRECT, *PEMRROUNDRECT;
+
+typedef struct {
+    EMR  emr;
+    LONG xNum;
+    LONG xDenom;
+    LONG yNum;
+    LONG yDenom;
+} EMRSCALEVIEWPORTEXTEX, *PEMRSCALEVIEWPORTEXTEX,
+  EMRSCALEWINDOWEXTEX,   *PEMRSCALEWINDOWEXTEX;
+
+typedef struct {
+    EMR   emr;
+    DWORD iMode;
+} EMRSELECTCLIPPATH,    *PEMRSELECTCLIPPATH,
+  EMRSETBKMODE,         *PEMRSETBKMODE,
+  EMRSETMAPMODE,        *PEMRSETMAPMODE,
+  EMRSETPOLYFILLMODE,   *PEMRSETPOLYFILLMODE,
+  EMRSETROP2,           *PEMRSETROP2,
+  EMRSETSTRETCHBLTMODE, *PEMRSETSTRETCHBLTMODE,
+  EMRSETTEXTALIGN,      *PEMRSETTEXTALIGN,
+  EMRSETICMMODE,        *PEMRSETICMMODE,
+  EMRSETLAYOUT,         *PEMRSETLAYOUT;
+
+typedef struct {
+    EMR   emr;
+    DWORD ihPal;
+} EMRSELECTPALETTE, *PEMRSELECTPALETTE;
+
+typedef struct {
+    EMR   emr;
+    DWORD iArcDirection;
+} EMRSETARCDIRECTION, *PEMRSETARCDIRECTION;
+
+typedef struct {
+    EMR      emr;
+    COLORREF crColor;
+} EMRSETBKCOLOR,   *PEMRSETBKCOLOR,
+  EMRSETTEXTCOLOR, *PEMRSETTEXTCOLOR;
+
+typedef struct {
+    EMR   emr;
+    POINTL ptlOrigin;
+} EMRSETBRUSHORGEX,    *PEMRSETBRUSHORGEX,
+  EMRSETVIEWPORTORGEX, *PEMRSETVIEWPORTORGEX,
+  EMRSETWINDOWORGEX,   *PEMRSETWINDOWORGEX;
+
+typedef struct {
+    EMR  emr;
+    COLORADJUSTMENT ColorAdjustment;
+} EMRSETCOLORADJUSTMENT, *PEMRSETCOLORADJUSTMENT;
+
+typedef struct {
+    EMR   emr;
+    RECTL rclBounds;
+    LONG  xDest;
+    LONG  yDest;
+    LONG  xSrc;
+    LONG  ySrc;
+    LONG  cxSrc;
+    LONG  cySrc;
+    DWORD offBmiSrc;
+    DWORD cbBmiSrc;
+    DWORD offBitsSrc;
+    DWORD cbBitsSrc;
+    DWORD iUsageSrc;
+    DWORD iStartScan;
+    DWORD cScans;
+} EMRSETDIBITSTODEVICE, *PEMRSETDIBITSTODEVICE;
+
+typedef struct {
+    EMR   emr;
+    DWORD dwFlags;
+} EMRSETMAPPERFLAGS, *PEMRSETMAPPERFLAGS;
+
+typedef struct {
+    EMR   emr;
+    FLOAT eMiterLimit;
+} EMRSETMITERLIMIT, *PEMRSETMITERLIMIT;
+
+typedef struct {
+    EMR          emr;
+    DWORD        ihPal;
+    DWORD        iStart;
+    DWORD        cEntries;
+    PALETTEENTRY aPalEntries[1];
+} EMRSETPALETTEENTRIES, *PEMRSETPALETTEENTRIES;
+
+typedef struct {
+    EMR     emr;
+    POINTL  ptlPixel;
+    COLORREF crColor;
+} EMRSETPIXELV, *PEMRSETPIXELV;
+
+typedef struct {
+    EMR   emr;
+    SIZEL szlExtent;
+} EMRSETVIEWPORTEXTEX, *PEMRSETVIEWPORTEXTEX,
+  EMRSETWINDOWEXTEX,   *PEMRSETWINDOWEXTEX;
+
+typedef struct {
+    EMR   emr;
+    XFORM xform;
+} EMRSETWORLDTRANSFORM, *PEMRSETWORLDTRANSFORM;
+
+typedef struct {
+    EMR      emr;
+    RECTL    rclBounds;
+    LONG     xDest;
+    LONG     yDest;
+    LONG     cxDest;
+    LONG     cyDest;
+    DWORD    dwRop;
+    LONG     xSrc;
+    LONG     ySrc;
+    XFORM    xformSrc;
+    COLORREF crBkColorSrc;
+    DWORD    iUsageSrc;
+    DWORD    offBmiSrc;
+    DWORD    cbBmiSrc;
+    DWORD    offBitsSrc;
+    DWORD    cbBitsSrc;
+    LONG     cxSrc;
+    LONG     cySrc;
+} EMRSTRETCHBLT, *PEMRSTRETCHBLT;
+
+typedef struct {
+    EMR      emr;
+    RECTL    rclBounds;
+    LONG     xDest;
+    LONG     yDest;
+    LONG     cxDest;
+    LONG     cyDest;
+    DWORD    dwRop;
+    LONG     xSrc;
+    LONG     ySrc;
+    XFORM    xformSrc;
+    COLORREF crBkColorSrc;
+    DWORD    iUsageSrc;
+    DWORD    offBmiSrc;
+    DWORD    cbBmiSrc;
+    DWORD    offBitsSrc;
+    DWORD    cbBitsSrc;
+    LONG     cxSrc;
+    LONG     cySrc;
+} EMRALPHABLEND, *PEMRALPHABLEND;
+
+typedef struct {
+    EMR   emr;
+    RECTL rclBounds;
+    LONG  xDest;
+    LONG  yDest;
+    LONG  xSrc;
+    LONG  ySrc;
+    LONG  cxSrc;
+    LONG  cySrc;
+    DWORD offBmiSrc;
+    DWORD cbBmiSrc;
+    DWORD offBitsSrc;
+    DWORD cbBitsSrc;
+    DWORD iUsageSrc;
+    DWORD dwRop;
+    LONG  cxDest;
+    LONG  cyDest;
+} EMRSTRETCHDIBITS, *PEMRSTRETCHDIBITS;
+
+typedef struct {
+    EMR                   emr;
+    PIXELFORMATDESCRIPTOR pfd;
+} EMRPIXELFORMAT, *PEMRPIXELFORMAT;
+
+typedef struct tagEMRGLSRECORD {
+  EMR   emr;
+  DWORD cbData;
+  BYTE  Data[1];
+} EMRGLSRECORD, *PEMRGLSRECORD;
+
+typedef struct {
+  EMR   emr;
+  RECTL rclBounds;
+  DWORD cbData;
+  BYTE  Data[1];
+} EMRGLSBOUNDEDRECORD, *PEMRGLSBOUNDEDRECORD;
+
+typedef INT (CALLBACK *ENHMFENUMPROC)(HDC, HANDLETABLE *,
+                                      const ENHMETARECORD *, INT, LPARAM);
+
+#define EMR_HEADER	1
+#define EMR_POLYBEZIER	2
+#define EMR_POLYGON	3
+#define EMR_POLYLINE	4
+#define EMR_POLYBEZIERTO	5
+#define EMR_POLYLINETO	6
+#define EMR_POLYPOLYLINE	7
+#define EMR_POLYPOLYGON	8
+#define EMR_SETWINDOWEXTEX	9
+#define EMR_SETWINDOWORGEX	10
+#define EMR_SETVIEWPORTEXTEX	11
+#define EMR_SETVIEWPORTORGEX	12
+#define EMR_SETBRUSHORGEX	13
+#define EMR_EOF	14
+#define EMR_SETPIXELV	15
+#define EMR_SETMAPPERFLAGS	16
+#define EMR_SETMAPMODE	17
+#define EMR_SETBKMODE	18
+#define EMR_SETPOLYFILLMODE	19
+#define EMR_SETROP2	20
+#define EMR_SETSTRETCHBLTMODE	21
+#define EMR_SETTEXTALIGN	22
+#define EMR_SETCOLORADJUSTMENT	23
+#define EMR_SETTEXTCOLOR	24
+#define EMR_SETBKCOLOR	25
+#define EMR_OFFSETCLIPRGN	26
+#define EMR_MOVETOEX	27
+#define EMR_SETMETARGN	28
+#define EMR_EXCLUDECLIPRECT	29
+#define EMR_INTERSECTCLIPRECT	30
+#define EMR_SCALEVIEWPORTEXTEX	31
+#define EMR_SCALEWINDOWEXTEX	32
+#define EMR_SAVEDC	33
+#define EMR_RESTOREDC	34
+#define EMR_SETWORLDTRANSFORM	35
+#define EMR_MODIFYWORLDTRANSFORM	36
+#define EMR_SELECTOBJECT	37
+#define EMR_CREATEPEN	38
+#define EMR_CREATEBRUSHINDIRECT	39
+#define EMR_DELETEOBJECT	40
+#define EMR_ANGLEARC	41
+#define EMR_ELLIPSE	42
+#define EMR_RECTANGLE	43
+#define EMR_ROUNDRECT	44
+#define EMR_ARC	45
+#define EMR_CHORD	46
+#define EMR_PIE	47
+#define EMR_SELECTPALETTE	48
+#define EMR_CREATEPALETTE	49
+#define EMR_SETPALETTEENTRIES	50
+#define EMR_RESIZEPALETTE	51
+#define EMR_REALIZEPALETTE	52
+#define EMR_EXTFLOODFILL	53
+#define EMR_LINETO	54
+#define EMR_ARCTO	55
+#define EMR_POLYDRAW	56
+#define EMR_SETARCDIRECTION	57
+#define EMR_SETMITERLIMIT	58
+#define EMR_BEGINPATH	59
+#define EMR_ENDPATH	60
+#define EMR_CLOSEFIGURE	61
+#define EMR_FILLPATH	62
+#define EMR_STROKEANDFILLPATH	63
+#define EMR_STROKEPATH	64
+#define EMR_FLATTENPATH	65
+#define EMR_WIDENPATH	66
+#define EMR_SELECTCLIPPATH	67
+#define EMR_ABORTPATH	68
+#define EMR_GDICOMMENT	70
+#define EMR_FILLRGN	71
+#define EMR_FRAMERGN	72
+#define EMR_INVERTRGN	73
+#define EMR_PAINTRGN	74
+#define EMR_EXTSELECTCLIPRGN	75
+#define EMR_BITBLT	76
+#define EMR_STRETCHBLT	77
+#define EMR_MASKBLT	78
+#define EMR_PLGBLT	79
+#define EMR_SETDIBITSTODEVICE	80
+#define EMR_STRETCHDIBITS	81
+#define EMR_EXTCREATEFONTINDIRECTW	82
+#define EMR_EXTTEXTOUTA	83
+#define EMR_EXTTEXTOUTW	84
+#define EMR_POLYBEZIER16	85
+#define EMR_POLYGON16	86
+#define EMR_POLYLINE16	87
+#define EMR_POLYBEZIERTO16	88
+#define EMR_POLYLINETO16	89
+#define EMR_POLYPOLYLINE16	90
+#define EMR_POLYPOLYGON16	91
+#define EMR_POLYDRAW16	92
+#define EMR_CREATEMONOBRUSH	93
+#define EMR_CREATEDIBPATTERNBRUSHPT	94
+#define EMR_EXTCREATEPEN	95
+#define EMR_POLYTEXTOUTA	96
+#define EMR_POLYTEXTOUTW	97
+#define EMR_SETICMMODE	98
+#define EMR_CREATECOLORSPACE	99
+#define EMR_SETCOLORSPACE	100
+#define EMR_DELETECOLORSPACE	101
+#define EMR_GLSRECORD	102
+#define EMR_GLSBOUNDEDRECORD	103
+#define EMR_PIXELFORMAT 104
+#define EMR_DRAWESCAPE 	105
+#define EMR_EXTESCAPE	106
+#define EMR_STARTDOC	107
+#define EMR_SMALLTEXTOUT	108
+#define EMR_FORCEUFIMAPPING	109
+#define EMR_NAMEDESCAPE	110
+#define EMR_COLORCORRECTPALETTE	111
+#define EMR_SETICMPROFILEA	112
+#define EMR_SETICMPROFILEW	113
+#define EMR_ALPHABLEND	114
+#define EMR_SETLAYOUT	115
+#define EMR_TRANSPARENTBLT	116
+#define EMR_RESERVED_117	117
+#define EMR_GRADIENTFILL	118
+#define EMR_SETLINKEDUFI	119
+#define EMR_SETTEXTJUSTIFICATION	120
+#define EMR_COLORMATCHTOTARGETW	121
+#define EMR_CREATECOLORSPACEW	122
+
+#define EMR_MIN 1
+#define EMR_MAX 122
+
+#define ENHMETA_SIGNATURE	1179469088
+#define ENHMETA_STOCK_OBJECT	0x80000000
+
+#define GDICOMMENT_IDENTIFIER         0x43494447
+#define GDICOMMENT_WINDOWS_METAFILE   0x80000001
+#define GDICOMMENT_BEGINGROUP         0x00000002
+#define GDICOMMENT_ENDGROUP           0x00000003
+#define GDICOMMENT_MULTIFORMATS       0x40000004
+#define GDICOMMENT_UNICODE_STRING     0x00000040
+#define GDICOMMENT_UNICODE_END        0x00000080
+#define EPS_SIGNATURE                 0x46535045
+
+#define CCHDEVICENAME 32
+#define CCHFORMNAME   32
+
+typedef struct
+{
+    BYTE   dmDeviceName[CCHDEVICENAME];
+    WORD   dmSpecVersion;
+    WORD   dmDriverVersion;
+    WORD   dmSize;
+    WORD   dmDriverExtra;
+    DWORD  dmFields;
+    union {
+      struct {
+	short  dmOrientation;
+	short  dmPaperSize;
+	short  dmPaperLength;
+	short  dmPaperWidth;
+        short  dmScale;
+        short  dmCopies;
+        short  dmDefaultSource;
+        short  dmPrintQuality;
+      } DUMMYSTRUCTNAME1;
+      struct {
+        POINTL dmPosition;
+        DWORD dmDisplayOrientation;
+        DWORD dmDisplayFixedOutput;
+      } DUMMYSTRUCTNAME2;
+    } DUMMYUNIONNAME1;
+    short  dmColor;
+    short  dmDuplex;
+    short  dmYResolution;
+    short  dmTTOption;
+    short  dmCollate;
+    BYTE   dmFormName[CCHFORMNAME];
+    WORD   dmLogPixels;
+    DWORD  dmBitsPerPel;
+    DWORD  dmPelsWidth;
+    DWORD  dmPelsHeight;
+    union {
+      DWORD dmDisplayFlags;
+      DWORD dmNup;
+    } DUMMYUNIONNAME2;
+    DWORD  dmDisplayFrequency;
+    DWORD  dmICMMethod;
+    DWORD  dmICMIntent;
+    DWORD  dmMediaType;
+    DWORD  dmDitherType;
+    DWORD  dmReserved1;
+    DWORD  dmReserved2;
+    DWORD  dmPanningWidth;
+    DWORD  dmPanningHeight;
+} DEVMODEA, *PDEVMODEA, *LPDEVMODEA;
+
+typedef struct
+{
+    WCHAR  dmDeviceName[CCHDEVICENAME];
+    WORD   dmSpecVersion;
+    WORD   dmDriverVersion;
+    WORD   dmSize;
+    WORD   dmDriverExtra;
+    DWORD  dmFields;
+    union {
+      struct {
+	short  dmOrientation;
+	short  dmPaperSize;
+	short  dmPaperLength;
+	short  dmPaperWidth;
+        short  dmScale;
+        short  dmCopies;
+        short  dmDefaultSource;
+        short  dmPrintQuality;
+      } DUMMYSTRUCTNAME1;
+      struct {
+        POINTL dmPosition;
+        DWORD dmDisplayOrientation;
+        DWORD dmDisplayFixedOutput;
+      } DUMMYSTRUCTNAME2;
+    } DUMMYUNIONNAME1;
+    short  dmColor;
+    short  dmDuplex;
+    short  dmYResolution;
+    short  dmTTOption;
+    short  dmCollate;
+    WCHAR  dmFormName[CCHFORMNAME];
+    WORD   dmLogPixels;
+    DWORD  dmBitsPerPel;
+    DWORD  dmPelsWidth;
+    DWORD  dmPelsHeight;
+    union {
+      DWORD dmDisplayFlags;
+      DWORD dmNup;
+    } DUMMYUNIONNAME2;
+    DWORD  dmDisplayFrequency;
+    DWORD  dmICMMethod;
+    DWORD  dmICMIntent;
+    DWORD  dmMediaType;
+    DWORD  dmDitherType;
+    DWORD  dmReserved1;
+    DWORD  dmReserved2;
+    DWORD  dmPanningWidth;
+    DWORD  dmPanningHeight;
+} DEVMODEW, *PDEVMODEW, *LPDEVMODEW;
+
+DECL_WINELIB_TYPE_AW(DEVMODE)
+DECL_WINELIB_TYPE_AW(PDEVMODE)
+DECL_WINELIB_TYPE_AW(LPDEVMODE)
+
+#define DM_SPECVERSION  0x401
+#define DM_UPDATE	1
+#define DM_COPY		2
+#define DM_PROMPT	4
+#define DM_MODIFY	8
+
+#define DM_IN_BUFFER      DM_MODIFY
+#define DM_IN_PROMPT      DM_PROMPT
+#define DM_OUT_BUFFER     DM_COPY
+#define DM_OUT_DEFAULT    DM_UPDATE
+
+#define DM_ORIENTATION		0x00000001L
+#define DM_PAPERSIZE		0x00000002L
+#define DM_PAPERLENGTH		0x00000004L
+#define DM_PAPERWIDTH		0x00000008L
+#define DM_SCALE		0x00000010L
+#define DM_POSITION             0x00000020L
+#define DM_COPIES		0x00000100L
+#define DM_DEFAULTSOURCE	0x00000200L
+#define DM_PRINTQUALITY		0x00000400L
+#define DM_COLOR		0x00000800L
+#define DM_DUPLEX		0x00001000L
+#define DM_YRESOLUTION		0x00002000L
+#define DM_TTOPTION		0x00004000L
+#define DM_COLLATE              0x00008000L
+#define DM_FORMNAME             0x00010000L
+#define DM_LOGPIXELS            0x00020000L
+#define DM_BITSPERPEL           0x00040000L
+#define DM_PELSWIDTH            0x00080000L
+#define DM_PELSHEIGHT           0x00100000L
+#define DM_DISPLAYFLAGS         0x00200000L
+#define DM_DISPLAYFREQUENCY     0x00400000L
+#define DM_ICMMETHOD            0x00800000L
+#define DM_ICMINTENT            0x01000000L
+#define DM_MEDIATYPE            0x02000000L
+#define DM_DITHERTYPE           0x04000000L
+#define DM_PANNINGWIDTH         0x08000000L
+#define DM_PANNINGHEIGHT        0x10000000L
+
+#define DMORIENT_PORTRAIT	1
+#define DMORIENT_LANDSCAPE	2
+
+#define DMPAPER_FIRST              DMPAPER_LETTER
+#define DMPAPER_LETTER		   1
+#define DMPAPER_LETTERSMALL        2
+#define DMPAPER_TABLOID            3
+#define DMPAPER_LEDGER             4
+#define DMPAPER_LEGAL		   5
+#define DMPAPER_STATEMENT          6
+#define DMPAPER_EXECUTIVE	   7
+#define DMPAPER_A3		   8
+#define DMPAPER_A4		   9
+#define DMPAPER_A4SMALL            10
+#define DMPAPER_A5		   11
+#define DMPAPER_B4                 12
+#define DMPAPER_B5                 13
+#define DMPAPER_FOLIO              14
+#define DMPAPER_QUARTO             15
+#define DMPAPER_10X14              16
+#define DMPAPER_11X17              17
+#define DMPAPER_NOTE               18
+#define DMPAPER_ENV_9              19
+#define DMPAPER_ENV_10		   20
+#define DMPAPER_ENV_11             21
+#define DMPAPER_ENV_12             22
+#define DMPAPER_ENV_14             23
+#define DMPAPER_CSHEET             24
+#define DMPAPER_DSHEET             25
+#define DMPAPER_ESHEET             26
+#define DMPAPER_ENV_DL		   27
+#define DMPAPER_ENV_C5		   28
+#define DMPAPER_ENV_C3             29
+#define DMPAPER_ENV_C4             30
+#define DMPAPER_ENV_C6             31
+#define DMPAPER_ENV_C65            32
+#define DMPAPER_ENV_B4             33
+#define DMPAPER_ENV_B5		   34
+#define DMPAPER_ENV_B6             35
+#define DMPAPER_ENV_ITALY          36
+#define DMPAPER_ENV_MONARCH	   37
+#define DMPAPER_ENV_PERSONAL       38
+#define DMPAPER_FANFOLD_US         39
+#define DMPAPER_FANFOLD_STD_GERMAN 40
+#define DMPAPER_FANFOLD_LGL_GERMAN 41
+#define DMPAPER_ISO_B4             42
+#define DMPAPER_JAPANESE_POSTCARD  43
+#define DMPAPER_9X11               44
+#define DMPAPER_10X11              45
+#define DMPAPER_15X11              46
+#define DMPAPER_ENV_INVITE         47
+#define DMPAPER_RESERVED_48        48
+#define DMPAPER_RESERVED_49        49
+#define DMPAPER_LETTER_EXTRA       50
+#define DMPAPER_LEGAL_EXTRA        51
+#define DMPAPER_TABLOID_EXTRA      52
+#define DMPAPER_A4_EXTRA           53
+#define DMPAPER_LETTER_TRANSVERSE  54
+#define DMPAPER_A4_TRANSVERSE      55
+#define DMPAPER_LETTER_EXTRA_TRANSVERSE 56
+#define DMPAPER_A_PLUS             57
+#define DMPAPER_B_PLUS             58
+#define DMPAPER_LETTER_PLUS        59
+#define DMPAPER_A4_PLUS            60
+#define DMPAPER_A5_TRANSVERSE      61
+#define DMPAPER_B5_TRANSVERSE      62
+#define DMPAPER_A3_EXTRA           63
+#define DMPAPER_A5_EXTRA           64
+#define DMPAPER_B5_EXTRA           65
+#define DMPAPER_A2                 66
+#define DMPAPER_A3_TRANSVERSE      67
+#define DMPAPER_A3_EXTRA_TRANSVERSE           68
+#define DMPAPER_DBL_JAPANESE_POSTCARD         69
+#define DMPAPER_A6                 70
+#define DMPAPER_JENV_KAKU2         71
+#define DMPAPER_JENV_KAKU3         72
+#define DMPAPER_JENV_CHOU3         73
+#define DMPAPER_JENV_CHOU4         74
+#define DMPAPER_LETTER_ROTATED     75
+#define DMPAPER_A3_ROTATED         76
+#define DMPAPER_A4_ROTATED         77
+#define DMPAPER_A5_ROTATED         78
+#define DMPAPER_B4_JIS_ROTATED     79
+#define DMPAPER_B5_JIS_ROTATED     80
+#define DMPAPER_JAPANESE_POSTCARD_ROTATED     81
+#define DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED 82
+#define DMPAPER_A6_ROTATED         83
+#define DMPAPER_JENV_KAKU2_ROTATED 84
+#define DMPAPER_JENV_KAKU3_ROTATED 85
+#define DMPAPER_JENV_CHOU3_ROTATED 86
+#define DMPAPER_JENV_CHOU4_ROTATED 87
+#define DMPAPER_B6_JIS             88
+#define DMPAPER_B6_JIS_ROTATED     89
+#define DMPAPER_12X11              90
+#define DMPAPER_JENV_YOU4          91
+#define DMPAPER_JENV_YOU4_ROTATED  92
+#define DMPAPER_P16K               93
+#define DMPAPER_P32K               94
+#define DMPAPER_P32KBIG            95
+#define DMPAPER_PENV_1             96
+#define DMPAPER_PENV_2             97
+#define DMPAPER_PENV_3             98
+#define DMPAPER_PENV_4             99
+#define DMPAPER_PENV_5             100
+#define DMPAPER_PENV_6             101
+#define DMPAPER_PENV_7             102
+#define DMPAPER_PENV_8             103
+#define DMPAPER_PENV_9             104
+#define DMPAPER_PENV_10            105
+#define DMPAPER_P16K_ROTATED       106
+#define DMPAPER_P32K_ROTATED       107
+#define DMPAPER_P32KBIG_ROTATED    108
+#define DMPAPER_PENV_1_ROTATED     109
+#define DMPAPER_PENV_2_ROTATED     110
+#define DMPAPER_PENV_3_ROTATED     111
+#define DMPAPER_PENV_4_ROTATED     112
+#define DMPAPER_PENV_5_ROTATED     113
+#define DMPAPER_PENV_6_ROTATED     114
+#define DMPAPER_PENV_7_ROTATED     115
+#define DMPAPER_PENV_8_ROTATED     116
+#define DMPAPER_PENV_9_ROTATED     117
+#define DMPAPER_PENV_10_ROTATED    118
+
+#define DMPAPER_LAST               DMPAPER_PENV_10_ROTATED
+#define DMPAPER_USER               256
+
+#define DMBIN_FIRST             DMBIN_UPPER
+#define DMBIN_UPPER		1
+#define DMBIN_ONLYONE           1
+#define DMBIN_LOWER		2
+#define DMBIN_MIDDLE		3
+#define DMBIN_MANUAL		4
+#define DMBIN_ENVELOPE		5
+#define DMBIN_ENVMANUAL		6
+#define DMBIN_AUTO		7
+#define DMBIN_TRACTOR           8
+#define DMBIN_SMALLFMT          9
+#define DMBIN_LARGEFMT          10
+#define DMBIN_LARGECAPACITY	11
+#define DMBIN_CASSETTE          14
+#define DMBIN_FORMSOURCE        15
+#define DMBIN_LAST              DMBIN_FORMSOURCE
+#define DMBIN_USER              256
+
+#define DMRES_DRAFT             (-1)
+#define DMRES_LOW               (-2)
+#define DMRES_MEDIUM            (-3)
+#define DMRES_HIGH              (-4)
+
+#define DMCOLOR_MONOCHROME	1
+#define DMCOLOR_COLOR		2
+
+#define DMDUP_SIMPLEX           1
+#define DMDUP_VERTICAL          2
+#define DMDUP_HORIZONTAL        3
+
+#define DMTT_BITMAP		1
+#define DMTT_DOWNLOAD		2
+#define DMTT_SUBDEV		3
+#define DMTT_DOWNLOAD_OUTLINE   4
+
+#define DMCOLLATE_FALSE         0
+#define DMCOLLATE_TRUE          1
+
+#define DMICMMETHOD_NONE        1
+#define DMICMMETHOD_SYSTEM      2
+#define DMICMMETHOD_DRIVER      3
+#define DMICMMETHOD_DEVICE      4
+#define DMICMMETHOD_USER        256
+
+#define DMICM_SATURATE          1
+#define DMICM_CONTRAST          2
+#define DMICM_COLORMETRIC       3
+#define DMICM_USER              256
+
+#define DMMEDIA_STANDARD        1
+#define DMMEDIA_TRANSPARENCY    2
+#define DMMEDIA_GLOSSY          3
+#define DMMEDIA_USER            256
+
+#define DMDITHER_NONE           1
+#define DMDITHER_COARSE         2
+#define DMDITHER_FINE           3
+#define DMDITHER_LINEART        4
+#define DMDITHER_GRAYSCALE      5
+#define DMDITHER_USER           256
+
+typedef struct
+{
+    INT    cbSize;
+    LPCSTR   lpszDocName;
+    LPCSTR   lpszOutput;
+    LPCSTR   lpszDatatype;
+    DWORD    fwType;
+} DOCINFOA, *LPDOCINFOA;
+
+typedef struct
+{
+    INT    cbSize;
+    LPCWSTR  lpszDocName;
+    LPCWSTR  lpszOutput;
+    LPCWSTR  lpszDatatype;
+    DWORD    fwType;
+} DOCINFOW, *LPDOCINFOW;
+
+DECL_WINELIB_TYPE_AW(DOCINFO)
+DECL_WINELIB_TYPE_AW(LPDOCINFO)
+
+#define DI_APPBANDING     0x0001
+
+/* Flags for PolyDraw and GetPath */
+#define PT_CLOSEFIGURE          0x0001
+#define PT_LINETO               0x0002
+#define PT_BEZIERTO             0x0004
+#define PT_MOVETO               0x0006
+
+#define	RDH_RECTANGLES  1
+
+typedef struct _RGNDATAHEADER {
+    DWORD	dwSize;
+    DWORD	iType;
+    DWORD	nCount;
+    DWORD	nRgnSize;
+    RECT	rcBound;
+} RGNDATAHEADER,*PRGNDATAHEADER;
+
+typedef struct _RGNDATA {
+    RGNDATAHEADER	rdh;
+    char		Buffer[1];
+} RGNDATA,*PRGNDATA,*LPRGNDATA;
+
+typedef BOOL (CALLBACK *ABORTPROC)(HDC, INT);
+
+typedef struct {
+    DWORD	cb;
+    CHAR	DeviceName[32];
+    CHAR	DeviceString[128];
+    DWORD	StateFlags;
+    CHAR	DeviceID[128];
+    CHAR	DeviceKey[128];
+} DISPLAY_DEVICEA,*PDISPLAY_DEVICEA,*LPDISPLAY_DEVICEA;
+
+typedef struct {
+    DWORD	cb;
+    WCHAR	DeviceName[32];
+    WCHAR	DeviceString[128];
+    DWORD	StateFlags;
+    WCHAR	DeviceID[128];
+    WCHAR	DeviceKey[128];
+} DISPLAY_DEVICEW,*PDISPLAY_DEVICEW,*LPDISPLAY_DEVICEW;
+DECL_WINELIB_TYPE_AW(DISPLAY_DEVICE)
+DECL_WINELIB_TYPE_AW(PDISPLAY_DEVICE)
+DECL_WINELIB_TYPE_AW(LPDISPLAY_DEVICE)
+
+/* DISPLAY_DEVICE.StateFlags (?)*/
+#define	DISPLAY_DEVICE_ATTACHED_TO_DESKTOP	0x00000001
+#define	DISPLAY_DEVICE_MULTI_DRIVER		0x00000002
+#define	DISPLAY_DEVICE_PRIMARY_DEVICE		0x00000004
+#define	DISPLAY_DEVICE_MIRRORING_DRIVER		0x00000008
+#define	DISPLAY_DEVICE_VGA_COMPATIBLE		0x00000010
+
+typedef USHORT COLOR16;
+
+typedef struct _TRIVERTEX
+{
+    LONG    x;
+    LONG    y;
+    COLOR16 Red;
+    COLOR16 Green;
+    COLOR16 Blue;
+    COLOR16 Alpha;
+} TRIVERTEX, *PTRIVERTEX, *LPTRIVERTEX;
+
+typedef struct _GRADIENT_TRIANGLE
+{
+    ULONG Vertex1;
+    ULONG Vertex2;
+    ULONG Vertex3;
+} GRADIENT_TRIANGLE, *PGRADIENT_TRIANGLE, *LPGRADIENT_TRIANGLE;
+
+typedef struct _GRADIENT_RECT
+{
+    ULONG UpperLeft;
+    ULONG LowerRight;
+} GRADIENT_RECT, *PGRADIENT_RECT, *LPGRADIENT_RECT;
+
+#define AC_SRC_OVER  0x00
+#define AC_SRC_ALPHA 0x01
+
+typedef struct _BLENDFUNCTION
+{
+    BYTE BlendOp;
+    BYTE BlendFlags;
+    BYTE SourceConstantAlpha;
+    BYTE AlphaFormat;
+} BLENDFUNCTION, *PBLENDFUNCTION;
+
+#define GRADIENT_FILL_RECT_H      0x00000000
+#define GRADIENT_FILL_RECT_V      0x00000001
+#define GRADIENT_FILL_TRIANGLE    0x00000002
+#define GRADIENT_FILL_OP_FLAG     0x000000ff
+
+#define GDI_ERROR                               (0xFFFFFFFFL)
+#define HGDI_ERROR                              ((HANDLE)0xFFFFFFFFL)
+
+/* AddFontResourceEx flags */
+#define FR_PRIVATE  0x10
+#define FR_NOT_ENUM 0x20
+
+/* Mirroring flags */
+#define LAYOUT_LTR                         0x00000000
+#define LAYOUT_RTL                         0x00000001
+#define LAYOUT_BITMAPORIENTATIONPRESERVED  0x00000008
+#define NOMIRRORBITMAP                     0x80000000
+
+/* For DRAWPATTERNRECT Escape */
+typedef struct _DRAWPATRECT
+{
+    POINT ptPosition;
+    POINT ptSize;
+    WORD  wStyle;
+    WORD  wPattern;
+} DRAWPATRECT, *PDRAWPATRECT;
+
+typedef struct tagWCRANGE {
+  WCHAR  wcLow;
+  USHORT cGlyphs;
+} WCRANGE, *PWCRANGE, *LPWCRANGE;
+
+typedef struct tagGLYPHSET {
+  DWORD    cbThis;
+  DWORD    flAccel;
+  DWORD    cGlyphsSupported;
+  DWORD    cRanges;
+  WCRANGE  ranges[1];
+} GLYPHSET, *PGLYPHSET, *LPGLYPHSET;
+
+WINGDIAPI INT         WINAPI AbortDoc(HDC);
+WINGDIAPI BOOL        WINAPI AbortPath(HDC);
+WINGDIAPI INT         WINAPI AddFontResourceA(LPCSTR);
+WINGDIAPI INT         WINAPI AddFontResourceW(LPCWSTR);
+#define                      AddFontResource WINELIB_NAME_AW(AddFontResource)
+WINGDIAPI INT         WINAPI AddFontResourceExA(LPCSTR, DWORD, PVOID);
+WINGDIAPI INT         WINAPI AddFontResourceExW(LPCWSTR, DWORD, PVOID);
+#define                      AddFontResourceEx WINELIB_NAME_AW(AddFontResourceEx)
+WINGDIAPI HANDLE      WINAPI AddFontMemResourceEx(PVOID, DWORD, PVOID, DWORD *);
+WINGDIAPI BOOL        WINAPI AlphaBlend(HDC,int,int,int,int,HDC,int,int,int,int,BLENDFUNCTION);
+WINGDIAPI BOOL        WINAPI AngleArc(HDC, INT, INT, DWORD, FLOAT, FLOAT);
+WINGDIAPI BOOL        WINAPI AnimatePalette(HPALETTE,UINT,UINT,const PALETTEENTRY*);
+WINGDIAPI BOOL        WINAPI Arc(HDC,INT,INT,INT,INT,INT,INT,INT,INT);
+WINGDIAPI BOOL        WINAPI ArcTo(HDC, INT, INT, INT, INT, INT, INT, INT, INT);
+WINGDIAPI BOOL        WINAPI BeginPath(HDC);
+WINGDIAPI BOOL        WINAPI BitBlt(HDC,INT,INT,INT,INT,HDC,INT,INT,DWORD);
+WINGDIAPI INT         WINAPI ChoosePixelFormat(HDC,const PIXELFORMATDESCRIPTOR*);
+WINGDIAPI BOOL        WINAPI Chord(HDC,INT,INT,INT,INT,INT,INT,INT,INT);
+WINGDIAPI HENHMETAFILE WINAPI CloseEnhMetaFile(HDC);
+WINGDIAPI BOOL        WINAPI CloseFigure(HDC);
+WINGDIAPI HMETAFILE   WINAPI CloseMetaFile(HDC);
+WINGDIAPI INT         WINAPI CombineRgn(HRGN,HRGN,HRGN,INT);
+WINGDIAPI BOOL        WINAPI CombineTransform(LPXFORM,const XFORM *,const XFORM *);
+WINGDIAPI HENHMETAFILE WINAPI CopyEnhMetaFileA(HENHMETAFILE,LPCSTR);
+WINGDIAPI HENHMETAFILE WINAPI CopyEnhMetaFileW(HENHMETAFILE,LPCWSTR);
+#define                      CopyEnhMetaFile WINELIB_NAME_AW(CopyEnhMetaFile)
+WINGDIAPI HMETAFILE   WINAPI CopyMetaFileA(HMETAFILE,LPCSTR);
+WINGDIAPI HMETAFILE   WINAPI CopyMetaFileW(HMETAFILE,LPCWSTR);
+#define                      CopyMetaFile WINELIB_NAME_AW(CopyMetaFile)
+WINGDIAPI HBITMAP     WINAPI CreateBitmap(INT,INT,UINT,UINT,LPCVOID);
+WINGDIAPI HBITMAP     WINAPI CreateBitmapIndirect(const BITMAP*);
+WINGDIAPI HBRUSH      WINAPI CreateBrushIndirect(const LOGBRUSH*);
+WINGDIAPI HCOLORSPACE WINAPI CreateColorSpaceA(LPLOGCOLORSPACEA);
+WINGDIAPI HCOLORSPACE WINAPI CreateColorSpaceW(LPLOGCOLORSPACEW);
+#define                      CreateColorSpace WINELIB_NAME_AW(CreateColorSpace)
+WINGDIAPI HBITMAP     WINAPI CreateCompatibleBitmap(HDC,INT,INT);
+WINGDIAPI HDC         WINAPI CreateCompatibleDC(HDC);
+WINGDIAPI HDC         WINAPI CreateDCA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
+WINGDIAPI HDC         WINAPI CreateDCW(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*);
+#define                      CreateDC WINELIB_NAME_AW(CreateDC)
+WINGDIAPI HBITMAP     WINAPI CreateDIBitmap(HDC,const BITMAPINFOHEADER*,DWORD,LPCVOID,const BITMAPINFO*,UINT);
+WINGDIAPI HBRUSH      WINAPI CreateDIBPatternBrush(HGLOBAL,UINT);
+WINGDIAPI HBRUSH      WINAPI CreateDIBPatternBrushPt(const void*,UINT);
+WINGDIAPI HBITMAP     WINAPI CreateDIBSection(HDC, CONST BITMAPINFO *, UINT, VOID **, HANDLE, DWORD offset);
+WINGDIAPI HBITMAP     WINAPI CreateDiscardableBitmap(HDC,INT,INT);
+WINGDIAPI HRGN        WINAPI CreateEllipticRgn(INT,INT,INT,INT);
+WINGDIAPI HRGN        WINAPI CreateEllipticRgnIndirect(const RECT *);
+WINGDIAPI HDC         WINAPI CreateEnhMetaFileA(HDC,LPCSTR,const RECT*,LPCSTR);
+WINGDIAPI HDC         WINAPI CreateEnhMetaFileW(HDC,LPCWSTR,const RECT*,LPCWSTR);
+#define                      CreateEnhMetaFile WINELIB_NAME_AW(CreateEnhMetaFile)
+WINGDIAPI HFONT       WINAPI CreateFontA(INT,INT,INT,INT,INT,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCSTR);
+WINGDIAPI HFONT       WINAPI CreateFontW(INT,INT,INT,INT,INT,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCWSTR);
+#define                      CreateFont WINELIB_NAME_AW(CreateFont)
+WINGDIAPI HFONT       WINAPI CreateFontIndirectA(const LOGFONTA*);
+WINGDIAPI HFONT       WINAPI CreateFontIndirectW(const LOGFONTW*);
+#define                      CreateFontIndirect WINELIB_NAME_AW(CreateFontIndirect)
+WINGDIAPI HPALETTE    WINAPI CreateHalftonePalette(HDC);
+WINGDIAPI HBRUSH      WINAPI CreateHatchBrush(INT,COLORREF);
+WINGDIAPI HDC         WINAPI CreateICA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
+WINGDIAPI HDC         WINAPI CreateICW(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*);
+#define                      CreateIC WINELIB_NAME_AW(CreateIC)
+WINGDIAPI HDC         WINAPI CreateMetaFileA(LPCSTR);
+WINGDIAPI HDC         WINAPI CreateMetaFileW(LPCWSTR);
+#define                      CreateMetaFile WINELIB_NAME_AW(CreateMetaFile)
+WINGDIAPI HPALETTE    WINAPI CreatePalette(const LOGPALETTE*);
+WINGDIAPI HBRUSH      WINAPI CreatePatternBrush(HBITMAP);
+WINGDIAPI HPEN        WINAPI CreatePen(INT,INT,COLORREF);
+WINGDIAPI HPEN        WINAPI CreatePenIndirect(const LOGPEN*);
+WINGDIAPI HRGN        WINAPI CreatePolyPolygonRgn(const POINT*,const INT*,INT,INT);
+WINGDIAPI HRGN        WINAPI CreatePolygonRgn(const POINT*,INT,INT);
+WINGDIAPI HRGN        WINAPI CreateRectRgn(INT,INT,INT,INT);
+WINGDIAPI HRGN        WINAPI CreateRectRgnIndirect(const RECT*);
+WINGDIAPI HRGN        WINAPI CreateRoundRectRgn(INT,INT,INT,INT,INT,INT);
+WINGDIAPI BOOL        WINAPI CreateScalableFontResourceA(DWORD,LPCSTR,LPCSTR,LPCSTR);
+WINGDIAPI BOOL        WINAPI CreateScalableFontResourceW(DWORD,LPCWSTR,LPCWSTR,LPCWSTR);
+#define                      CreateScalableFontResource WINELIB_NAME_AW(CreateScalableFontResource)
+WINGDIAPI HBRUSH      WINAPI CreateSolidBrush(COLORREF);
+WINGDIAPI BOOL        WINAPI DPtoLP(HDC,LPPOINT,INT);
+WINGDIAPI BOOL        WINAPI DeleteColorSpace(HCOLORSPACE);
+WINGDIAPI BOOL        WINAPI DeleteDC(HDC);
+WINGDIAPI BOOL        WINAPI DeleteEnhMetaFile(HENHMETAFILE);
+WINGDIAPI BOOL        WINAPI DeleteMetaFile(HMETAFILE);
+WINGDIAPI BOOL        WINAPI DeleteObject(HGDIOBJ);
+WINGDIAPI INT         WINAPI DescribePixelFormat(HDC,int,UINT,LPPIXELFORMATDESCRIPTOR);
+WINGDIAPI INT         WINAPI DrawEscape(HDC,INT,INT,LPCSTR);
+WINGDIAPI BOOL        WINAPI Ellipse(HDC,INT,INT,INT,INT);
+WINGDIAPI INT         WINAPI EndDoc(HDC);
+WINGDIAPI BOOL        WINAPI EndPath(HDC);
+WINGDIAPI BOOL        WINAPI EnumEnhMetaFile(HDC,HENHMETAFILE,ENHMFENUMPROC,LPVOID,const RECT*);
+WINGDIAPI INT         WINAPI EnumFontFamiliesA(HDC,LPCSTR,FONTENUMPROCA,LPARAM);
+WINGDIAPI INT         WINAPI EnumFontFamiliesW(HDC,LPCWSTR,FONTENUMPROCW,LPARAM);
+#define                      EnumFontFamilies WINELIB_NAME_AW(EnumFontFamilies)
+WINGDIAPI INT         WINAPI EnumFontFamiliesExA(HDC,LPLOGFONTA,FONTENUMPROCA,LPARAM,DWORD);
+WINGDIAPI INT         WINAPI EnumFontFamiliesExW(HDC,LPLOGFONTW,FONTENUMPROCW,LPARAM,DWORD);
+#define                      EnumFontFamiliesEx WINELIB_NAME_AW(EnumFontFamiliesEx)
+WINGDIAPI INT         WINAPI EnumFontsA(HDC,LPCSTR,FONTENUMPROCA,LPARAM);
+WINGDIAPI INT         WINAPI EnumFontsW(HDC,LPCWSTR,FONTENUMPROCW,LPARAM);
+#define                      EnumFonts WINELIB_NAME_AW(EnumFonts)
+WINGDIAPI INT         WINAPI EnumICMProfilesA(HDC,ICMENUMPROCA,LPARAM);
+WINGDIAPI INT         WINAPI EnumICMProfilesW(HDC,ICMENUMPROCW,LPARAM);
+#define                      EnumICMProfiles WINELIB_NAME_AW(EnumICMProfiles)
+WINGDIAPI BOOL        WINAPI EnumMetaFile(HDC,HMETAFILE,MFENUMPROC,LPARAM);
+WINGDIAPI INT         WINAPI EnumObjects(HDC,INT,GOBJENUMPROC,LPARAM);
+WINGDIAPI BOOL        WINAPI EqualRgn(HRGN,HRGN);
+WINGDIAPI INT         WINAPI Escape(HDC,INT,INT,LPCSTR,LPVOID);
+WINGDIAPI INT         WINAPI ExcludeClipRect(HDC,INT,INT,INT,INT);
+WINGDIAPI HPEN        WINAPI ExtCreatePen(DWORD,DWORD,const LOGBRUSH*,DWORD,const DWORD*);
+WINGDIAPI HRGN        WINAPI ExtCreateRegion(const XFORM*,DWORD,const RGNDATA*);
+WINGDIAPI INT         WINAPI ExtEscape(HDC,INT,INT,LPCSTR,INT,LPSTR);
+WINGDIAPI BOOL        WINAPI ExtFloodFill(HDC,INT,INT,COLORREF,UINT);
+WINGDIAPI INT         WINAPI ExtSelectClipRgn(HDC,HRGN,INT);
+WINGDIAPI BOOL        WINAPI ExtTextOutA(HDC,INT,INT,UINT,const RECT*,LPCSTR,UINT,const INT*);
+WINGDIAPI BOOL        WINAPI ExtTextOutW(HDC,INT,INT,UINT,const RECT*,LPCWSTR,UINT,const INT*);
+#define                      ExtTextOut WINELIB_NAME_AW(ExtTextOut)
+WINGDIAPI BOOL        WINAPI FillPath(HDC);
+WINGDIAPI BOOL        WINAPI FillRgn(HDC,HRGN,HBRUSH);
+WINGDIAPI BOOL        WINAPI FixBrushOrgEx(HDC,INT,INT,LPPOINT);
+WINGDIAPI BOOL        WINAPI FlattenPath(HDC);
+WINGDIAPI BOOL        WINAPI FloodFill(HDC,INT,INT,COLORREF);
+WINGDIAPI BOOL        WINAPI FrameRgn(HDC,HRGN,HBRUSH,INT,INT);
+WINGDIAPI BOOL        WINAPI GdiAlphaBlend(HDC,int,int,int,int,HDC,int,int,int,int,BLENDFUNCTION);
+WINGDIAPI BOOL        WINAPI GdiComment(HDC,UINT,const BYTE *);
+WINGDIAPI DEVMODEW *  WINAPI GdiConvertToDevmodeW(const DEVMODEA *);
+WINGDIAPI BOOL        WINAPI GdiFlush(void);
+WINGDIAPI LONG        WINAPI GdiGetCharDimensions(HDC, LPTEXTMETRICW, LONG *);
+WINGDIAPI DWORD       WINAPI GdiGetCodePage(HDC);
+WINGDIAPI BOOL        WINAPI GdiGradientFill(HDC,PTRIVERTEX,ULONG,PVOID,ULONG,ULONG);
+WINGDIAPI BOOL        WINAPI GdiIsMetaFileDC(HDC);
+WINGDIAPI BOOL        WINAPI GdiIsMetaPrintDC(HDC);
+WINGDIAPI BOOL        WINAPI GdiIsPlayMetafileDC(HDC);
+WINGDIAPI BOOL        WINAPI GdiTransparentBlt(HDC,int,int,int,int,HDC,int,int,int,int,UINT);
+WINGDIAPI INT         WINAPI GetArcDirection(HDC);
+WINGDIAPI BOOL        WINAPI GetAspectRatioFilterEx(HDC,LPSIZE);
+WINGDIAPI LONG        WINAPI GetBitmapBits(HBITMAP,LONG,LPVOID);
+WINGDIAPI BOOL        WINAPI GetBitmapDimensionEx(HBITMAP,LPSIZE);
+WINGDIAPI BOOL        WINAPI GetBrushOrgEx(HDC,LPPOINT);
+WINGDIAPI COLORREF    WINAPI GetBkColor(HDC);
+WINGDIAPI INT         WINAPI GetBkMode(HDC);
+WINGDIAPI UINT        WINAPI GetBoundsRect(HDC,LPRECT,UINT);
+WINGDIAPI BOOL        WINAPI GetCharABCWidthsA(HDC,UINT,UINT,LPABC);
+WINGDIAPI BOOL        WINAPI GetCharABCWidthsW(HDC,UINT,UINT,LPABC);
+#define                      GetCharABCWidths WINELIB_NAME_AW(GetCharABCWidths)
+WINGDIAPI BOOL        WINAPI GetCharABCWidthsFloatA(HDC,UINT,UINT,LPABCFLOAT);
+WINGDIAPI BOOL        WINAPI GetCharABCWidthsFloatW(HDC,UINT,UINT,LPABCFLOAT);
+#define                      GetCharABCWidthsFloat WINELIB_NAME_AW(GetCharABCWidthsFloat)
+WINGDIAPI BOOL        WINAPI GetCharABCWidthsI(HDC,UINT,UINT,LPWORD,LPABC);
+WINGDIAPI DWORD       WINAPI GetCharacterPlacementA(HDC,LPCSTR,INT,INT,GCP_RESULTSA*,DWORD);
+WINGDIAPI DWORD       WINAPI GetCharacterPlacementW(HDC,LPCWSTR,INT,INT,GCP_RESULTSW*,DWORD);
+#define                      GetCharacterPlacement WINELIB_NAME_AW(GetCharacterPlacement)
+WINGDIAPI BOOL        WINAPI GetCharWidth32A(HDC,UINT,UINT,LPINT);
+WINGDIAPI BOOL        WINAPI GetCharWidth32W(HDC,UINT,UINT,LPINT);
+#define                      GetCharWidth32 WINELIB_NAME_AW(GetCharWidth32)
+WINGDIAPI BOOL        WINAPI GetCharWidthA(HDC,UINT,UINT,LPINT);
+WINGDIAPI BOOL        WINAPI GetCharWidthI(HDC,UINT,UINT,LPWORD,LPINT);
+WINGDIAPI BOOL        WINAPI GetCharWidthW(HDC,UINT,UINT,LPINT);
+#define                      GetCharWidth WINELIB_NAME_AW(GetCharWidth)
+WINGDIAPI BOOL        WINAPI GetCharWidthFloatA(HDC,UINT,UINT,PFLOAT);
+WINGDIAPI BOOL        WINAPI GetCharWidthFloatW(HDC,UINT,UINT,PFLOAT);
+#define                      GetCharWidthFloat WINELIB_NAME_AW(GetCharWidthFloat)
+WINGDIAPI INT         WINAPI GetClipBox(HDC,LPRECT);
+WINGDIAPI INT         WINAPI GetClipRgn(HDC,HRGN);
+WINGDIAPI BOOL        WINAPI GetColorAdjustment(HDC, LPCOLORADJUSTMENT);
+WINGDIAPI HCOLORSPACE WINAPI GetColorSpace(HDC);
+WINGDIAPI HGDIOBJ     WINAPI GetCurrentObject(HDC,UINT);
+WINGDIAPI BOOL        WINAPI GetCurrentPositionEx(HDC,LPPOINT);
+WINGDIAPI INT         WINAPI GetDeviceCaps(HDC,INT);
+WINGDIAPI BOOL        WINAPI GetDeviceGammaRamp(HDC,LPVOID);
+WINGDIAPI COLORREF    WINAPI GetDCBrushColor(HDC);
+WINGDIAPI BOOL        WINAPI GetDCOrgEx(HDC,LPPOINT);
+WINGDIAPI COLORREF    WINAPI GetDCPenColor(HDC);
+WINGDIAPI UINT        WINAPI GetDIBColorTable(HDC,UINT,UINT,RGBQUAD*);
+WINGDIAPI INT         WINAPI GetDIBits(HDC,HBITMAP,UINT,UINT,LPVOID,LPBITMAPINFO,UINT);
+WINGDIAPI HENHMETAFILE WINAPI GetEnhMetaFileA(LPCSTR);
+WINGDIAPI HENHMETAFILE WINAPI GetEnhMetaFileW(LPCWSTR);
+#define                      GetEnhMetaFile WINELIB_NAME_AW(GetEnhMetaFile)
+WINGDIAPI UINT        WINAPI GetEnhMetaFileBits(HENHMETAFILE,UINT,LPBYTE);
+WINGDIAPI UINT        WINAPI GetEnhMetaFileDescriptionA(HENHMETAFILE,UINT,LPSTR);
+WINGDIAPI UINT        WINAPI GetEnhMetaFileDescriptionW(HENHMETAFILE,UINT,LPWSTR);
+#define                      GetEnhMetaFileDescription WINELIB_NAME_AW(GetEnhMetaFileDescription)
+WINGDIAPI UINT        WINAPI GetEnhMetaFileHeader(HENHMETAFILE,UINT,LPENHMETAHEADER);
+WINGDIAPI UINT        WINAPI GetEnhMetaFilePaletteEntries(HENHMETAFILE,UINT,LPPALETTEENTRY);
+WINGDIAPI DWORD       WINAPI GetFontData(HDC,DWORD,DWORD,LPVOID,DWORD);
+WINGDIAPI DWORD       WINAPI GetFontLanguageInfo(HDC);
+WINGDIAPI DWORD       WINAPI GetFontUnicodeRanges(HDC,LPGLYPHSET);
+WINGDIAPI DWORD       WINAPI GetGlyphIndicesA(HDC,LPCSTR,INT,LPWORD,DWORD);
+WINGDIAPI DWORD       WINAPI GetGlyphIndicesW(HDC,LPCWSTR,INT,LPWORD,DWORD);
+#define                    GetGlyphIndices WINELIB_NAME_AW(GetGlyphIndices)
+WINGDIAPI DWORD       WINAPI GetGlyphOutlineA(HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,LPVOID,const MAT2*);
+WINGDIAPI DWORD       WINAPI GetGlyphOutlineW(HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,LPVOID,const MAT2*);
+#define                      GetGlyphOutline WINELIB_NAME_AW(GetGlyphOutline)
+WINGDIAPI INT         WINAPI GetGraphicsMode(HDC);
+WINGDIAPI BOOL        WINAPI GetICMProfileA(HDC,LPDWORD,LPSTR);
+WINGDIAPI BOOL        WINAPI GetICMProfileW(HDC,LPDWORD,LPWSTR);
+#define                      GetICMProfile WINELIB_NAME_AW(GetICMProfile)
+WINGDIAPI DWORD       WINAPI GetKerningPairsA(HDC,DWORD,LPKERNINGPAIR);
+WINGDIAPI DWORD       WINAPI GetKerningPairsW(HDC,DWORD,LPKERNINGPAIR);
+#define                      GetKerningPairs WINELIB_NAME_AW(GetKerningPairs)
+WINGDIAPI DWORD       WINAPI GetLayout(HDC);
+WINGDIAPI BOOL        WINAPI GetLogColorSpaceA(HCOLORSPACE,LPLOGCOLORSPACEA,DWORD);
+WINGDIAPI BOOL        WINAPI GetLogColorSpaceW(HCOLORSPACE,LPLOGCOLORSPACEW,DWORD);
+#define                      GetLogColorSpace WINELIB_NAME_AW(GetLogColorSpace)
+WINGDIAPI INT         WINAPI GetMapMode(HDC);
+WINGDIAPI HMETAFILE   WINAPI GetMetaFileA(LPCSTR);
+WINGDIAPI HMETAFILE   WINAPI GetMetaFileW(LPCWSTR);
+#define                      GetMetaFile WINELIB_NAME_AW(GetMetaFile)
+WINGDIAPI UINT        WINAPI GetMetaFileBitsEx(HMETAFILE,UINT,LPVOID);
+WINGDIAPI INT         WINAPI GetMetaRgn(HDC,HRGN);
+WINGDIAPI BOOL        WINAPI GetMiterLimit(HDC, PFLOAT);
+WINGDIAPI DWORD       WINAPI GetNearestColor(HDC,DWORD);
+WINGDIAPI UINT        WINAPI GetNearestPaletteIndex(HPALETTE,COLORREF);
+WINGDIAPI INT         WINAPI GetObjectA(HGDIOBJ,INT,LPVOID);
+WINGDIAPI INT         WINAPI GetObjectW(HGDIOBJ,INT,LPVOID);
+#define                      GetObject WINELIB_NAME_AW(GetObject)
+WINGDIAPI DWORD       WINAPI GetObjectType(HGDIOBJ);
+WINGDIAPI UINT        WINAPI GetOutlineTextMetricsA(HDC,UINT,LPOUTLINETEXTMETRICA);
+WINGDIAPI UINT        WINAPI GetOutlineTextMetricsW(HDC,UINT,LPOUTLINETEXTMETRICW);
+#define                      GetOutlineTextMetrics WINELIB_NAME_AW(GetOutlineTextMetrics)
+WINGDIAPI UINT        WINAPI GetPaletteEntries(HPALETTE,UINT,UINT,LPPALETTEENTRY);
+WINGDIAPI INT         WINAPI GetPath(HDC,LPPOINT,LPBYTE,INT);
+WINGDIAPI COLORREF    WINAPI GetPixel(HDC,INT,INT);
+WINGDIAPI INT         WINAPI GetPixelFormat(HDC);
+WINGDIAPI INT         WINAPI GetPolyFillMode(HDC);
+WINGDIAPI INT         WINAPI GetRandomRgn(HDC,HRGN,INT);
+WINGDIAPI BOOL        WINAPI GetRasterizerCaps(LPRASTERIZER_STATUS,UINT);
+WINGDIAPI DWORD       WINAPI GetRegionData(HRGN,DWORD,LPRGNDATA);
+WINGDIAPI INT         WINAPI GetRelAbs(HDC,DWORD);
+WINGDIAPI INT         WINAPI GetRgnBox(HRGN,LPRECT);
+WINGDIAPI INT         WINAPI GetROP2(HDC);
+WINGDIAPI HGDIOBJ     WINAPI GetStockObject(INT);
+WINGDIAPI INT         WINAPI GetStretchBltMode(HDC);
+WINGDIAPI UINT        WINAPI GetSystemPaletteEntries(HDC,UINT,UINT,LPPALETTEENTRY);
+WINGDIAPI UINT        WINAPI GetSystemPaletteUse(HDC);
+WINGDIAPI UINT        WINAPI GetTextAlign(HDC);
+WINGDIAPI INT         WINAPI GetTextCharacterExtra(HDC);
+WINGDIAPI UINT        WINAPI GetTextCharset(HDC);
+WINGDIAPI UINT        WINAPI GetTextCharsetInfo(HDC,LPFONTSIGNATURE,DWORD);
+WINGDIAPI COLORREF    WINAPI GetTextColor(HDC);
+WINGDIAPI BOOL        WINAPI GetTextExtentExPointA(HDC,LPCSTR,INT,INT,LPINT,LPINT,LPSIZE);
+WINGDIAPI BOOL        WINAPI GetTextExtentExPointW(HDC,LPCWSTR,INT,INT,LPINT,LPINT,LPSIZE);
+#define                      GetTextExtentExPoint WINELIB_NAME_AW(GetTextExtentExPoint)
+WINGDIAPI BOOL        WINAPI GetTextExtentPointA(HDC,LPCSTR,INT,LPSIZE);
+WINGDIAPI BOOL        WINAPI GetTextExtentPointW(HDC,LPCWSTR,INT,LPSIZE);
+#define                      GetTextExtentPoint WINELIB_NAME_AW(GetTextExtentPoint)
+WINGDIAPI BOOL        WINAPI GetTextExtentPoint32A(HDC,LPCSTR,INT,LPSIZE);
+WINGDIAPI BOOL        WINAPI GetTextExtentPoint32W(HDC,LPCWSTR,INT,LPSIZE);
+#define                      GetTextExtentPoint32 WINELIB_NAME_AW(GetTextExtentPoint32)
+WINGDIAPI BOOL        WINAPI GetTextExtentExPointI(HDC,const WORD*,INT,INT,LPINT,LPINT,LPSIZE);
+WINGDIAPI BOOL        WINAPI GetTextExtentPointI(HDC,const WORD*,INT,LPSIZE);
+WINGDIAPI INT         WINAPI GetTextFaceA(HDC,INT,LPSTR);
+WINGDIAPI INT         WINAPI GetTextFaceW(HDC,INT,LPWSTR);
+#define                      GetTextFace WINELIB_NAME_AW(GetTextFace)
+WINGDIAPI BOOL        WINAPI GetTextMetricsA(HDC,LPTEXTMETRICA);
+WINGDIAPI BOOL        WINAPI GetTextMetricsW(HDC,LPTEXTMETRICW);
+#define                      GetTextMetrics WINELIB_NAME_AW(GetTextMetrics)
+WINGDIAPI BOOL        WINAPI GetViewportExtEx(HDC,LPSIZE);
+WINGDIAPI BOOL        WINAPI GetViewportOrgEx(HDC,LPPOINT);
+WINGDIAPI BOOL        WINAPI GetWindowExtEx(HDC,LPSIZE);
+WINGDIAPI BOOL        WINAPI GetWindowOrgEx(HDC,LPPOINT);
+WINGDIAPI UINT        WINAPI GetWinMetaFileBits(HENHMETAFILE,UINT,LPBYTE,INT,HDC);
+WINGDIAPI BOOL        WINAPI GetWorldTransform(HDC,LPXFORM);
+WINGDIAPI BOOL        WINAPI GradientFill(HDC,PTRIVERTEX,ULONG,PVOID,ULONG,ULONG);
+WINGDIAPI INT         WINAPI IntersectClipRect(HDC,INT,INT,INT,INT);
+WINGDIAPI BOOL        WINAPI InvertRgn(HDC,HRGN);
+WINGDIAPI BOOL        WINAPI LineDDA(INT,INT,INT,INT,LINEDDAPROC,LPARAM);
+WINGDIAPI BOOL        WINAPI LineTo(HDC,INT,INT);
+WINGDIAPI BOOL        WINAPI LPtoDP(HDC,LPPOINT,INT);
+WINGDIAPI BOOL        WINAPI MaskBlt(HDC,INT,INT,INT,INT,HDC,INT,INT,HBITMAP,INT,INT,DWORD);
+WINGDIAPI BOOL        WINAPI ModifyWorldTransform(HDC,const XFORM *, DWORD);
+WINGDIAPI BOOL        WINAPI MoveToEx(HDC,INT,INT,LPPOINT);
+WINGDIAPI INT         WINAPI OffsetClipRgn(HDC,INT,INT);
+WINGDIAPI INT         WINAPI OffsetRgn(HRGN,INT,INT);
+WINGDIAPI BOOL        WINAPI OffsetViewportOrgEx(HDC,INT,INT,LPPOINT);
+WINGDIAPI BOOL        WINAPI OffsetWindowOrgEx(HDC,INT,INT,LPPOINT);
+WINGDIAPI BOOL        WINAPI PaintRgn(HDC,HRGN);
+WINGDIAPI BOOL        WINAPI PatBlt(HDC,INT,INT,INT,INT,DWORD);
+WINGDIAPI HRGN        WINAPI PathToRegion(HDC);
+WINGDIAPI BOOL        WINAPI Pie(HDC,INT,INT,INT,INT,INT,INT,INT,INT);
+WINGDIAPI BOOL        WINAPI PlayEnhMetaFile(HDC,HENHMETAFILE,const RECT*);
+WINGDIAPI BOOL        WINAPI PlayEnhMetaFileRecord(HDC,LPHANDLETABLE,const ENHMETARECORD*,UINT);
+WINGDIAPI BOOL        WINAPI PlayMetaFile(HDC,HMETAFILE);
+WINGDIAPI BOOL        WINAPI PlayMetaFileRecord(HDC,LPHANDLETABLE,LPMETARECORD,UINT);
+WINGDIAPI BOOL        WINAPI PlgBlt(HDC,const POINT*,HDC,INT,INT,INT,INT,HBITMAP,INT,INT);
+WINGDIAPI BOOL        WINAPI PolyBezier(HDC,const POINT*,DWORD);
+WINGDIAPI BOOL        WINAPI PolyBezierTo(HDC,const POINT*,DWORD);
+WINGDIAPI BOOL        WINAPI PolyDraw(HDC,const POINT*,const BYTE*,DWORD);
+WINGDIAPI BOOL        WINAPI PolyPolygon(HDC,const POINT*,const INT*,UINT);
+WINGDIAPI BOOL        WINAPI PolyPolyline(HDC,const POINT*,const DWORD*,DWORD);
+WINGDIAPI BOOL        WINAPI Polygon(HDC,const POINT*,INT);
+WINGDIAPI BOOL        WINAPI Polyline(HDC,const POINT*,INT);
+WINGDIAPI BOOL        WINAPI PolylineTo(HDC,const POINT*,DWORD);
+WINGDIAPI BOOL        WINAPI PtInRegion(HRGN,INT,INT);
+WINGDIAPI BOOL        WINAPI PtVisible(HDC,INT,INT);
+WINGDIAPI UINT        WINAPI RealizePalette(HDC);
+WINGDIAPI BOOL        WINAPI Rectangle(HDC,INT,INT,INT,INT);
+WINGDIAPI BOOL        WINAPI RectInRegion(HRGN,const RECT *);
+WINGDIAPI BOOL        WINAPI RectVisible(HDC,const RECT*);
+WINGDIAPI BOOL        WINAPI RemoveFontResourceA(LPCSTR);
+WINGDIAPI BOOL        WINAPI RemoveFontResourceW(LPCWSTR);
+#define                      RemoveFontResource WINELIB_NAME_AW(RemoveFontResource)
+WINGDIAPI BOOL        WINAPI RemoveFontResourceExA(LPCSTR, DWORD, PVOID);
+WINGDIAPI BOOL        WINAPI RemoveFontResourceExW(LPCWSTR, DWORD, PVOID);
+#define                      RemoveFontResourceEx WINELIB_NAME_AW(RemoveFontResourceEx)
+WINGDIAPI HDC         WINAPI ResetDCA(HDC,const DEVMODEA *);
+WINGDIAPI HDC         WINAPI ResetDCW(HDC,const DEVMODEW *);
+#define                      ResetDC WINELIB_NAME_AW(ResetDC)
+WINGDIAPI BOOL        WINAPI ResizePalette(HPALETTE,UINT);
+WINGDIAPI BOOL        WINAPI RestoreDC(HDC,INT);
+WINGDIAPI BOOL        WINAPI RoundRect(HDC,INT,INT,INT,INT,INT,INT);
+WINGDIAPI INT         WINAPI SaveDC(HDC);
+WINGDIAPI BOOL        WINAPI ScaleViewportExtEx(HDC,INT,INT,INT,INT,LPSIZE);
+WINGDIAPI BOOL        WINAPI ScaleWindowExtEx(HDC,INT,INT,INT,INT,LPSIZE);
+WINGDIAPI BOOL        WINAPI SelectClipPath(HDC,INT);
+WINGDIAPI INT         WINAPI SelectClipRgn(HDC,HRGN);
+WINGDIAPI HGDIOBJ     WINAPI SelectObject(HDC,HGDIOBJ);
+WINGDIAPI HPALETTE    WINAPI SelectPalette(HDC,HPALETTE,BOOL);
+WINGDIAPI INT         WINAPI SetAbortProc(HDC,ABORTPROC);
+WINGDIAPI INT         WINAPI SetArcDirection(HDC,INT);
+WINGDIAPI LONG        WINAPI SetBitmapBits(HBITMAP,LONG,LPCVOID);
+WINGDIAPI BOOL        WINAPI SetBitmapDimensionEx(HBITMAP,INT,INT,LPSIZE);
+WINGDIAPI COLORREF    WINAPI SetBkColor(HDC,COLORREF);
+WINGDIAPI INT         WINAPI SetBkMode(HDC,INT);
+WINGDIAPI UINT        WINAPI SetBoundsRect(HDC,const RECT*,UINT);
+WINGDIAPI BOOL        WINAPI SetBrushOrgEx(HDC,INT,INT,LPPOINT);
+WINGDIAPI BOOL        WINAPI SetColorAdjustment(HDC,const COLORADJUSTMENT*);
+WINGDIAPI HCOLORSPACE WINAPI SetColorSpace(HDC,HCOLORSPACE);
+WINGDIAPI BOOL        WINAPI SetDeviceGammaRamp(HDC,LPVOID);
+WINGDIAPI COLORREF    WINAPI SetDCBrushColor(HDC,COLORREF);
+WINGDIAPI COLORREF    WINAPI SetDCPenColor(HDC, COLORREF);
+WINGDIAPI UINT        WINAPI SetDIBColorTable(HDC,UINT,UINT,CONST RGBQUAD*);
+WINGDIAPI INT         WINAPI SetDIBits(HDC,HBITMAP,UINT,UINT,LPCVOID,const BITMAPINFO*,UINT);
+WINGDIAPI INT         WINAPI SetDIBitsToDevice(HDC,INT,INT,DWORD,DWORD,INT,INT,UINT,UINT,LPCVOID,const BITMAPINFO*,UINT);
+WINGDIAPI HENHMETAFILE WINAPI SetEnhMetaFileBits(UINT,const BYTE *);
+WINGDIAPI INT         WINAPI SetGraphicsMode(HDC,INT);
+WINGDIAPI INT         WINAPI SetICMMode(HDC,INT);
+WINGDIAPI BOOL        WINAPI SetICMProfileA(HDC,LPSTR);
+WINGDIAPI BOOL        WINAPI SetICMProfileW(HDC,LPWSTR);
+#define                      SetICMProfile WINELIB_NAME_AW(SetICMProfile)
+WINGDIAPI DWORD       WINAPI SetLayout(HDC,DWORD);
+WINGDIAPI INT         WINAPI SetMapMode(HDC,INT);
+WINGDIAPI DWORD       WINAPI SetMapperFlags(HDC,DWORD);
+WINGDIAPI HMETAFILE   WINAPI SetMetaFileBitsEx(UINT,const BYTE*);
+WINGDIAPI INT         WINAPI SetMetaRgn(HDC);
+WINGDIAPI BOOL        WINAPI SetMiterLimit(HDC, FLOAT, PFLOAT);
+WINGDIAPI UINT        WINAPI SetPaletteEntries(HPALETTE,UINT,UINT,const PALETTEENTRY*);
+WINGDIAPI COLORREF    WINAPI SetPixel(HDC,INT,INT,COLORREF);
+WINGDIAPI BOOL        WINAPI SetPixelV(HDC,INT,INT,COLORREF);
+WINGDIAPI BOOL        WINAPI SetPixelFormat(HDC,int,const PIXELFORMATDESCRIPTOR*);
+WINGDIAPI INT         WINAPI SetPolyFillMode(HDC,INT);
+WINGDIAPI BOOL        WINAPI SetRectRgn(HRGN,INT,INT,INT,INT);
+WINGDIAPI INT         WINAPI SetRelAbs(HDC,INT);
+WINGDIAPI INT         WINAPI SetROP2(HDC,INT);
+WINGDIAPI INT         WINAPI SetStretchBltMode(HDC,INT);
+WINGDIAPI UINT        WINAPI SetSystemPaletteUse(HDC,UINT);
+WINGDIAPI UINT        WINAPI SetTextAlign(HDC,UINT);
+WINGDIAPI INT         WINAPI SetTextCharacterExtra(HDC,INT);
+WINGDIAPI COLORREF    WINAPI SetTextColor(HDC,COLORREF);
+WINGDIAPI BOOL        WINAPI SetTextJustification(HDC,INT,INT);
+WINGDIAPI BOOL        WINAPI SetViewportExtEx(HDC,INT,INT,LPSIZE);
+WINGDIAPI BOOL        WINAPI SetViewportOrgEx(HDC,INT,INT,LPPOINT);
+WINGDIAPI BOOL        WINAPI SetWindowExtEx(HDC,INT,INT,LPSIZE);
+WINGDIAPI BOOL        WINAPI SetWindowOrgEx(HDC,INT,INT,LPPOINT);
+WINGDIAPI HENHMETAFILE WINAPI SetWinMetaFileBits(UINT,CONST BYTE*,HDC,CONST METAFILEPICT *);
+WINGDIAPI BOOL        WINAPI SetWorldTransform(HDC,const XFORM*);
+WINGDIAPI INT         WINAPI StartDocA(HDC,const DOCINFOA*);
+WINGDIAPI INT         WINAPI StartDocW(HDC,const DOCINFOW*);
+#define                      StartDoc WINELIB_NAME_AW(StartDoc)
+WINGDIAPI INT         WINAPI StartPage(HDC);
+WINGDIAPI INT         WINAPI EndPage(HDC);
+WINGDIAPI BOOL        WINAPI StretchBlt(HDC,INT,INT,INT,INT,HDC,INT,INT,INT,INT,DWORD);
+WINGDIAPI INT         WINAPI StretchDIBits(HDC,INT,INT,INT,INT,INT,INT,INT,INT,const VOID*,const BITMAPINFO*,UINT,DWORD);
+WINGDIAPI BOOL        WINAPI StrokeAndFillPath(HDC);
+WINGDIAPI BOOL        WINAPI StrokePath(HDC);
+WINGDIAPI BOOL        WINAPI SwapBuffers(HDC);
+WINGDIAPI BOOL        WINAPI TextOutA(HDC,INT,INT,LPCSTR,INT);
+WINGDIAPI BOOL        WINAPI TextOutW(HDC,INT,INT,LPCWSTR,INT);
+#define                      TextOut WINELIB_NAME_AW(TextOut)
+WINGDIAPI BOOL        WINAPI TranslateCharsetInfo(LPDWORD,LPCHARSETINFO,DWORD);
+WINGDIAPI BOOL        WINAPI TransparentBlt(HDC,int,int,int,int,HDC,int,int,int,int,UINT);
+WINGDIAPI BOOL        WINAPI UnrealizeObject(HGDIOBJ);
+WINGDIAPI BOOL        WINAPI UpdateColors(HDC);
+WINGDIAPI BOOL        WINAPI UpdateICMRegKeyA(DWORD,LPSTR,LPSTR,UINT);
+WINGDIAPI BOOL        WINAPI UpdateICMRegKeyW(DWORD,LPWSTR,LPWSTR,UINT);
+#define                      UpdateICMRegKey WINELIB_NAME_AW(UpdateICMRegKey)
+WINGDIAPI BOOL        WINAPI WidenPath(HDC);
+WINGDIAPI BOOL        WINAPI PolyTextOutA(HDC,const POLYTEXTA*,INT);
+WINGDIAPI BOOL        WINAPI PolyTextOutW(HDC,const POLYTEXTW*,INT);
+#define                      PolyTextOut WINELIB_NAME_AW(PolyTextOut)
+
+/* These defines are used by wglSwapLayerBuffers */
+#define WGL_SWAP_MAIN_PLANE (1 <<  0)
+#define WGL_SWAP_OVERLAY1   (1 <<  1)
+#define WGL_SWAP_OVERLAY2   (1 <<  2)
+#define WGL_SWAP_OVERLAY3   (1 <<  3)
+#define WGL_SWAP_OVERLAY4   (1 <<  4)
+#define WGL_SWAP_OVERLAY5   (1 <<  5)
+#define WGL_SWAP_OVERLAY6   (1 <<  6)
+#define WGL_SWAP_OVERLAY7   (1 <<  7)
+#define WGL_SWAP_OVERLAY8   (1 <<  8)
+#define WGL_SWAP_OVERLAY9   (1 <<  9)
+#define WGL_SWAP_OVERLAY10  (1 << 10)
+#define WGL_SWAP_OVERLAY11  (1 << 11)
+#define WGL_SWAP_OVERLAY12  (1 << 12)
+#define WGL_SWAP_OVERLAY13  (1 << 13)
+#define WGL_SWAP_OVERLAY14  (1 << 14)
+#define WGL_SWAP_OVERLAY15  (1 << 15)
+#define WGL_SWAP_UNDERLAY1  (1 << 16)
+#define WGL_SWAP_UNDERLAY2  (1 << 17)
+#define WGL_SWAP_UNDERLAY3  (1 << 18)
+#define WGL_SWAP_UNDERLAY4  (1 << 19)
+#define WGL_SWAP_UNDERLAY5  (1 << 20)
+#define WGL_SWAP_UNDERLAY6  (1 << 21)
+#define WGL_SWAP_UNDERLAY7  (1 << 22)
+#define WGL_SWAP_UNDERLAY8  (1 << 23)
+#define WGL_SWAP_UNDERLAY9  (1 << 24)
+#define WGL_SWAP_UNDERLAY10 (1 << 25)
+#define WGL_SWAP_UNDERLAY11 (1 << 26)
+#define WGL_SWAP_UNDERLAY12 (1 << 27)
+#define WGL_SWAP_UNDERLAY13 (1 << 28)
+#define WGL_SWAP_UNDERLAY14 (1 << 29)
+#define WGL_SWAP_UNDERLAY15 (1 << 30)
+
+/* WGL prototypes */
+WINGDIAPI HGLRC   WINAPI wglCreateContext(HDC);
+WINGDIAPI HGLRC   WINAPI wglCreateLayerContext(HDC,INT);
+WINGDIAPI BOOL    WINAPI wglCopyContext(HGLRC,HGLRC,UINT);
+WINGDIAPI BOOL    WINAPI wglDeleteContext(HGLRC);
+WINGDIAPI BOOL    WINAPI wglDescribeLayerPlane(HDC,INT,INT,UINT,LPLAYERPLANEDESCRIPTOR);
+WINGDIAPI HGLRC   WINAPI wglGetCurrentContext(void);
+WINGDIAPI HDC     WINAPI wglGetCurrentDC(void);
+WINGDIAPI INT     WINAPI wglGetLayerPaletteEntries(HDC,INT,INT,INT,const COLORREF *);
+WINGDIAPI PROC    WINAPI wglGetProcAddress(LPCSTR);
+WINGDIAPI BOOL    WINAPI wglMakeCurrent(HDC,HGLRC);
+WINGDIAPI BOOL    WINAPI wglRealizeLayerPalette(HDC,INT,BOOL);
+WINGDIAPI INT     WINAPI wglSetLayerPaletteEntries(HDC,INT,INT,INT,const COLORREF *);
+WINGDIAPI BOOL    WINAPI wglShareLists(HGLRC,HGLRC);
+WINGDIAPI BOOL    WINAPI wglSwapLayerBuffers(HDC,UINT);
+WINGDIAPI BOOL    WINAPI wglUseFontBitmapsA(HDC,DWORD,DWORD,DWORD);
+WINGDIAPI BOOL    WINAPI wglUseFontBitmapsW(HDC,DWORD,DWORD,DWORD);
+#define                  wglUseFontBitmaps WINELIB_NAME_AW(wglUseFontBitmaps)
+WINGDIAPI BOOL    WINAPI wglUseFontOutlinesA(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,INT,LPGLYPHMETRICSFLOAT);
+WINGDIAPI BOOL    WINAPI wglUseFontOutlinesW(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,INT,LPGLYPHMETRICSFLOAT);
+#define                  wglUseFontOutlines WINELIB_NAME_AW(wglUseFontOutlines)
+
+#ifdef __WINESRC__
+/* the DC hook support is only exported on Win16, the 32-bit version is a Wine extension */
+
+#define DCHC_INVALIDVISRGN      0x0001
+#define DCHC_DELETEDC           0x0002
+#define DCHF_INVALIDATEVISRGN   0x0001
+#define DCHF_VALIDATEVISRGN     0x0002
+
+typedef BOOL (CALLBACK *DCHOOKPROC)(HDC,WORD,DWORD_PTR,LPARAM);
+
+WINGDIAPI DWORD_PTR WINAPI GetDCHook(HDC,DCHOOKPROC*);
+WINGDIAPI BOOL      WINAPI SetDCHook(HDC,DCHOOKPROC,DWORD_PTR);
+WINGDIAPI WORD      WINAPI SetHookFlags(HDC,WORD);
+WINGDIAPI INT       WINAPI SelectVisRgn(HDC,HRGN);
+#endif /* __WINESRC__ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !NOGDI */
+#endif /* _WINGDI_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winhttp.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winhttp.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winhttp.h	(revision 16410)
@@ -0,0 +1,555 @@
+/*
+ * Copyright (C) 2007 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINHTTP_H
+#define __WINE_WINHTTP_H
+
+#define WINHTTPAPI
+#define BOOLAPI WINHTTPAPI BOOL WINAPI
+
+
+typedef LPVOID HINTERNET;
+typedef HINTERNET *LPHINTERNET;
+
+#define INTERNET_DEFAULT_PORT           0
+#define INTERNET_DEFAULT_HTTP_PORT      80
+#define INTERNET_DEFAULT_HTTPS_PORT     443
+typedef WORD INTERNET_PORT;
+typedef INTERNET_PORT *LPINTERNET_PORT;
+
+#define INTERNET_SCHEME_HTTP            1
+#define INTERNET_SCHEME_HTTPS           2
+typedef int INTERNET_SCHEME, *LPINTERNET_SCHEME;
+
+#define ICU_ESCAPE  0x80000000
+
+/* flags for WinHttpOpen */
+#define WINHTTP_FLAG_ASYNC                  0x10000000
+
+/* flags for WinHttpOpenRequest */
+#define WINHTTP_FLAG_ESCAPE_PERCENT         0x00000004
+#define WINHTTP_FLAG_NULL_CODEPAGE          0x00000008
+#define WINHTTP_FLAG_ESCAPE_DISABLE         0x00000040
+#define WINHTTP_FLAG_ESCAPE_DISABLE_QUERY   0x00000080
+#define WINHTTP_FLAG_BYPASS_PROXY_CACHE     0x00000100
+#define WINHTTP_FLAG_REFRESH                WINHTTP_FLAG_BYPASS_PROXY_CACHE
+#define WINHTTP_FLAG_SECURE                 0x00800000
+
+#define WINHTTP_ACCESS_TYPE_DEFAULT_PROXY   0
+#define WINHTTP_ACCESS_TYPE_NO_PROXY        1
+#define WINHTTP_ACCESS_TYPE_NAMED_PROXY     3
+
+#define WINHTTP_NO_PROXY_NAME               NULL
+#define WINHTTP_NO_PROXY_BYPASS             NULL
+
+#define WINHTTP_NO_REFERER                  NULL
+#define WINHTTP_DEFAULT_ACCEPT_TYPES        NULL
+
+#define WINHTTP_NO_ADDITIONAL_HEADERS       NULL
+#define WINHTTP_NO_REQUEST_DATA             NULL
+
+#define WINHTTP_HEADER_NAME_BY_INDEX        NULL
+#define WINHTTP_NO_OUTPUT_BUFFER            NULL
+#define WINHTTP_NO_HEADER_INDEX             NULL
+
+#define WINHTTP_ADDREQ_INDEX_MASK                    0x0000FFFF
+#define WINHTTP_ADDREQ_FLAGS_MASK                    0xFFFF0000
+#define WINHTTP_ADDREQ_FLAG_ADD_IF_NEW               0x10000000
+#define WINHTTP_ADDREQ_FLAG_ADD                      0x20000000
+#define WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA      0x40000000
+#define WINHTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON  0x01000000
+#define WINHTTP_ADDREQ_FLAG_COALESCE                 WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA
+#define WINHTTP_ADDREQ_FLAG_REPLACE                  0x80000000
+
+#define WINHTTP_IGNORE_REQUEST_TOTAL_LENGTH 0
+
+/* flags for WinHttp{Set/Query}Options */
+#define WINHTTP_FIRST_OPTION                         WINHTTP_OPTION_CALLBACK
+#define WINHTTP_OPTION_CALLBACK                       1
+#define WINHTTP_OPTION_RESOLVE_TIMEOUT                2
+#define WINHTTP_OPTION_CONNECT_TIMEOUT                3
+#define WINHTTP_OPTION_CONNECT_RETRIES                4
+#define WINHTTP_OPTION_SEND_TIMEOUT                   5
+#define WINHTTP_OPTION_RECEIVE_TIMEOUT                6
+#define WINHTTP_OPTION_RECEIVE_RESPONSE_TIMEOUT       7
+#define WINHTTP_OPTION_HANDLE_TYPE                    9
+#define WINHTTP_OPTION_READ_BUFFER_SIZE              12
+#define WINHTTP_OPTION_WRITE_BUFFER_SIZE             13
+#define WINHTTP_OPTION_PARENT_HANDLE                 21
+#define WINHTTP_OPTION_EXTENDED_ERROR                24
+#define WINHTTP_OPTION_SECURITY_FLAGS                31
+#define WINHTTP_OPTION_SECURITY_CERTIFICATE_STRUCT   32
+#define WINHTTP_OPTION_URL                           34
+#define WINHTTP_OPTION_SECURITY_KEY_BITNESS          36
+#define WINHTTP_OPTION_PROXY                         38
+#define WINHTTP_OPTION_USER_AGENT                    41
+#define WINHTTP_OPTION_CONTEXT_VALUE                 45
+#define WINHTTP_OPTION_CLIENT_CERT_CONTEXT           47
+#define WINHTTP_OPTION_REQUEST_PRIORITY              58
+#define WINHTTP_OPTION_HTTP_VERSION                  59
+#define WINHTTP_OPTION_DISABLE_FEATURE               63
+#define WINHTTP_OPTION_CODEPAGE                      68
+#define WINHTTP_OPTION_MAX_CONNS_PER_SERVER          73
+#define WINHTTP_OPTION_MAX_CONNS_PER_1_0_SERVER      74
+#define WINHTTP_OPTION_AUTOLOGON_POLICY              77
+#define WINHTTP_OPTION_SERVER_CERT_CONTEXT           78
+#define WINHTTP_OPTION_ENABLE_FEATURE                79
+#define WINHTTP_OPTION_WORKER_THREAD_COUNT           80
+#define WINHTTP_OPTION_PASSPORT_COBRANDING_TEXT      81
+#define WINHTTP_OPTION_PASSPORT_COBRANDING_URL       82
+#define WINHTTP_OPTION_CONFIGURE_PASSPORT_AUTH       83
+#define WINHTTP_OPTION_SECURE_PROTOCOLS              84
+#define WINHTTP_OPTION_ENABLETRACING                 85
+#define WINHTTP_OPTION_PASSPORT_SIGN_OUT             86
+#define WINHTTP_OPTION_PASSPORT_RETURN_URL           87
+#define WINHTTP_OPTION_REDIRECT_POLICY               88
+#define WINHTTP_OPTION_MAX_HTTP_AUTOMATIC_REDIRECTS  89
+#define WINHTTP_OPTION_MAX_HTTP_STATUS_CONTINUE      90
+#define WINHTTP_OPTION_MAX_RESPONSE_HEADER_SIZE      91
+#define WINHTTP_OPTION_MAX_RESPONSE_DRAIN_SIZE       92
+#define WINHTTP_OPTION_CONNECTION_INFO               93
+#define WINHTTP_OPTION_CLIENT_CERT_ISSUER_LIST       94
+#define WINHTTP_OPTION_SPN                           96
+#define WINHTTP_OPTION_GLOBAL_PROXY_CREDS            97
+#define WINHTTP_OPTION_GLOBAL_SERVER_CREDS           98
+#define WINHTTP_OPTION_UNLOAD_NOTIFY_EVENT           99
+#define WINHTTP_OPTION_REJECT_USERPWD_IN_URL         100
+#define WINHTTP_OPTION_USE_GLOBAL_SERVER_CREDENTIALS 101
+#define WINHTTP_LAST_OPTION                          WINHTTP_OPTION_USE_GLOBAL_SERVER_CREDENTIALS
+#define WINHTTP_OPTION_USERNAME                      0x1000
+#define WINHTTP_OPTION_PASSWORD                      0x1001
+#define WINHTTP_OPTION_PROXY_USERNAME                0x1002
+#define WINHTTP_OPTION_PROXY_PASSWORD                0x1003
+
+#define WINHTTP_CONNS_PER_SERVER_UNLIMITED 0xFFFFFFFF
+
+#define WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM   0
+#define WINHTTP_AUTOLOGON_SECURITY_LEVEL_LOW      1
+#define WINHTTP_AUTOLOGON_SECURITY_LEVEL_HIGH     2
+#define WINHTTP_AUTOLOGON_SECURITY_LEVEL_DEFAULT  WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM
+
+#define WINHTTP_OPTION_REDIRECT_POLICY_NEVER                        0
+#define WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP       1
+#define WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS                       2
+#define WINHTTP_OPTION_REDIRECT_POLICY_LAST            WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS
+#define WINHTTP_OPTION_REDIRECT_POLICY_DEFAULT         WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP
+
+#define WINHTTP_DISABLE_PASSPORT_AUTH    0x00000000
+#define WINHTTP_ENABLE_PASSPORT_AUTH     0x10000000
+#define WINHTTP_DISABLE_PASSPORT_KEYRING 0x20000000
+#define WINHTTP_ENABLE_PASSPORT_KEYRING  0x40000000
+
+#define WINHTTP_DISABLE_COOKIES                   0x00000001
+#define WINHTTP_DISABLE_REDIRECTS                 0x00000002
+#define WINHTTP_DISABLE_AUTHENTICATION            0x00000004
+#define WINHTTP_DISABLE_KEEP_ALIVE                0x00000008
+#define WINHTTP_ENABLE_SSL_REVOCATION             0x00000001
+#define WINHTTP_ENABLE_SSL_REVERT_IMPERSONATION   0x00000002
+#define WINHTTP_DISABLE_SPN_SERVER_PORT           0x00000000
+#define WINHTTP_ENABLE_SPN_SERVER_PORT            0x00000001
+#define WINHTTP_OPTION_SPN_MASK                   WINHTTP_ENABLE_SPN_SERVER_PORT
+
+/* Options for WinHttpOpenRequest */
+#define WINHTTP_NO_REFERER             NULL
+#define WINHTTP_DEFAULT_ACCEPT_TYPES   NULL
+
+/* Options for WinHttpSendRequest */
+#define WINHTTP_NO_ADDITIONAL_HEADERS   NULL
+#define WINHTTP_NO_REQUEST_DATA         NULL
+
+/* WinHTTP error codes */
+#define WINHTTP_ERROR_BASE                                  12000
+#define ERROR_WINHTTP_OUT_OF_HANDLES                        (WINHTTP_ERROR_BASE + 1)
+#define ERROR_WINHTTP_TIMEOUT                               (WINHTTP_ERROR_BASE + 2)
+#define ERROR_WINHTTP_INTERNAL_ERROR                        (WINHTTP_ERROR_BASE + 4)
+#define ERROR_WINHTTP_INVALID_URL                           (WINHTTP_ERROR_BASE + 5)
+#define ERROR_WINHTTP_UNRECOGNIZED_SCHEME                   (WINHTTP_ERROR_BASE + 6)
+#define ERROR_WINHTTP_NAME_NOT_RESOLVED                     (WINHTTP_ERROR_BASE + 7)
+#define ERROR_WINHTTP_INVALID_OPTION                        (WINHTTP_ERROR_BASE + 9)
+#define ERROR_WINHTTP_OPTION_NOT_SETTABLE                   (WINHTTP_ERROR_BASE + 11)
+#define ERROR_WINHTTP_SHUTDOWN                              (WINHTTP_ERROR_BASE + 12)
+#define ERROR_WINHTTP_LOGIN_FAILURE                         (WINHTTP_ERROR_BASE + 15)
+#define ERROR_WINHTTP_OPERATION_CANCELLED                   (WINHTTP_ERROR_BASE + 17)
+#define ERROR_WINHTTP_INCORRECT_HANDLE_TYPE                 (WINHTTP_ERROR_BASE + 18)
+#define ERROR_WINHTTP_INCORRECT_HANDLE_STATE                (WINHTTP_ERROR_BASE + 19)
+#define ERROR_WINHTTP_CANNOT_CONNECT                        (WINHTTP_ERROR_BASE + 29)
+#define ERROR_WINHTTP_CONNECTION_ERROR                      (WINHTTP_ERROR_BASE + 30)
+#define ERROR_WINHTTP_RESEND_REQUEST                        (WINHTTP_ERROR_BASE + 32)
+#define ERROR_WINHTTP_SECURE_CERT_DATE_INVALID              (WINHTTP_ERROR_BASE + 37)
+#define ERROR_WINHTTP_SECURE_CERT_CN_INVALID                (WINHTTP_ERROR_BASE + 38)
+#define ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED               (WINHTTP_ERROR_BASE + 44)
+#define ERROR_WINHTTP_SECURE_INVALID_CA                     (WINHTTP_ERROR_BASE + 45)
+#define ERROR_WINHTTP_SECURE_CERT_REV_FAILED                (WINHTTP_ERROR_BASE + 57)
+#define ERROR_WINHTTP_CANNOT_CALL_BEFORE_OPEN               (WINHTTP_ERROR_BASE + 100)
+#define ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND               (WINHTTP_ERROR_BASE + 101)
+#define ERROR_WINHTTP_CANNOT_CALL_AFTER_SEND                (WINHTTP_ERROR_BASE + 102)
+#define ERROR_WINHTTP_CANNOT_CALL_AFTER_OPEN                (WINHTTP_ERROR_BASE + 103)
+#define ERROR_WINHTTP_HEADER_NOT_FOUND                      (WINHTTP_ERROR_BASE + 150)
+#define ERROR_WINHTTP_INVALID_SERVER_RESPONSE               (WINHTTP_ERROR_BASE + 152)
+#define ERROR_WINHTTP_INVALID_HEADER                        (WINHTTP_ERROR_BASE + 153)
+#define ERROR_WINHTTP_INVALID_QUERY_REQUEST                 (WINHTTP_ERROR_BASE + 154)
+#define ERROR_WINHTTP_HEADER_ALREADY_EXISTS                 (WINHTTP_ERROR_BASE + 155)
+#define ERROR_WINHTTP_REDIRECT_FAILED                       (WINHTTP_ERROR_BASE + 156)
+#define ERROR_WINHTTP_SECURE_CHANNEL_ERROR                  (WINHTTP_ERROR_BASE + 157)
+#define ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT                 (WINHTTP_ERROR_BASE + 166)
+#define ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT             (WINHTTP_ERROR_BASE + 167)
+#define ERROR_WINHTTP_SECURE_INVALID_CERT                   (WINHTTP_ERROR_BASE + 169)
+#define ERROR_WINHTTP_SECURE_CERT_REVOKED                   (WINHTTP_ERROR_BASE + 170)
+#define ERROR_WINHTTP_NOT_INITIALIZED                       (WINHTTP_ERROR_BASE + 172)
+#define ERROR_WINHTTP_SECURE_FAILURE                        (WINHTTP_ERROR_BASE + 175)
+#define ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR              (WINHTTP_ERROR_BASE + 178)
+#define ERROR_WINHTTP_SECURE_CERT_WRONG_USAGE               (WINHTTP_ERROR_BASE + 179)
+#define ERROR_WINHTTP_AUTODETECTION_FAILED                  (WINHTTP_ERROR_BASE + 180)
+#define ERROR_WINHTTP_HEADER_COUNT_EXCEEDED                 (WINHTTP_ERROR_BASE + 181)
+#define ERROR_WINHTTP_HEADER_SIZE_OVERFLOW                  (WINHTTP_ERROR_BASE + 182)
+#define ERROR_WINHTTP_CHUNKED_ENCODING_HEADER_SIZE_OVERFLOW (WINHTTP_ERROR_BASE + 183)
+#define ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW               (WINHTTP_ERROR_BASE + 184)
+#define ERROR_WINHTTP_CLIENT_CERT_NO_PRIVATE_KEY            (WINHTTP_ERROR_BASE + 185)
+#define ERROR_WINHTTP_CLIENT_CERT_NO_ACCESS_PRIVATE_KEY     (WINHTTP_ERROR_BASE + 186)
+#define WINHTTP_ERROR_LAST                                  (WINHTTP_ERROR_BASE + 186)
+
+/* WinHttp status codes */
+#define HTTP_STATUS_CONTINUE            100
+#define HTTP_STATUS_SWITCH_PROTOCOLS    101
+#define HTTP_STATUS_OK                  200
+#define HTTP_STATUS_CREATED             201
+#define HTTP_STATUS_ACCEPTED            202
+#define HTTP_STATUS_PARTIAL             203
+#define HTTP_STATUS_NO_CONTENT          204
+#define HTTP_STATUS_RESET_CONTENT       205
+#define HTTP_STATUS_PARTIAL_CONTENT     206
+#define HTTP_STATUS_WEBDAV_MULTI_STATUS 207
+#define HTTP_STATUS_AMBIGUOUS           300
+#define HTTP_STATUS_MOVED               301
+#define HTTP_STATUS_REDIRECT            302
+#define HTTP_STATUS_REDIRECT_METHOD     303
+#define HTTP_STATUS_NOT_MODIFIED        304
+#define HTTP_STATUS_USE_PROXY           305
+#define HTTP_STATUS_REDIRECT_KEEP_VERB  307
+#define HTTP_STATUS_BAD_REQUEST         400
+#define HTTP_STATUS_DENIED              401
+#define HTTP_STATUS_PAYMENT_REQ         402
+#define HTTP_STATUS_FORBIDDEN           403
+#define HTTP_STATUS_NOT_FOUND           404
+#define HTTP_STATUS_BAD_METHOD          405
+#define HTTP_STATUS_NONE_ACCEPTABLE     406
+#define HTTP_STATUS_PROXY_AUTH_REQ      407
+#define HTTP_STATUS_REQUEST_TIMEOUT     408
+#define HTTP_STATUS_CONFLICT            409
+#define HTTP_STATUS_GONE                410
+#define HTTP_STATUS_LENGTH_REQUIRED     411
+#define HTTP_STATUS_PRECOND_FAILED      412
+#define HTTP_STATUS_REQUEST_TOO_LARGE   413
+#define HTTP_STATUS_URI_TOO_LONG        414
+#define HTTP_STATUS_UNSUPPORTED_MEDIA   415
+#define HTTP_STATUS_RETRY_WITH          449
+#define HTTP_STATUS_SERVER_ERROR        500
+#define HTTP_STATUS_NOT_SUPPORTED       501
+#define HTTP_STATUS_BAD_GATEWAY         502
+#define HTTP_STATUS_SERVICE_UNAVAIL     503
+#define HTTP_STATUS_GATEWAY_TIMEOUT     504
+#define HTTP_STATUS_VERSION_NOT_SUP     505
+#define HTTP_STATUS_FIRST               HTTP_STATUS_CONTINUE
+#define HTTP_STATUS_LAST                HTTP_STATUS_VERSION_NOT_SUP
+
+#define SECURITY_FLAG_IGNORE_UNKNOWN_CA         0x00000100
+#define SECURITY_FLAG_IGNORE_CERT_DATE_INVALID  0x00002000
+#define SECURITY_FLAG_IGNORE_CERT_CN_INVALID    0x00001000
+#define SECURITY_FLAG_IGNORE_CERT_WRONG_USAGE   0x00000200
+#define SECURITY_FLAG_SECURE                    0x00000001
+#define SECURITY_FLAG_STRENGTH_WEAK             0x10000000
+#define SECURITY_FLAG_STRENGTH_MEDIUM           0x40000000
+#define SECURITY_FLAG_STRENGTH_STRONG           0x20000000
+
+#define ICU_NO_ENCODE          0x20000000
+#define ICU_DECODE             0x10000000
+#define ICU_NO_META            0x08000000
+#define ICU_ENCODE_SPACES_ONLY 0x04000000
+#define ICU_BROWSER_MODE       0x02000000
+#define ICU_ENCODE_PERCENT     0x00001000
+
+/* Query flags */
+#define WINHTTP_QUERY_MIME_VERSION                 0
+#define WINHTTP_QUERY_CONTENT_TYPE                 1
+#define WINHTTP_QUERY_CONTENT_TRANSFER_ENCODING    2
+#define WINHTTP_QUERY_CONTENT_ID                   3
+#define WINHTTP_QUERY_CONTENT_DESCRIPTION          4
+#define WINHTTP_QUERY_CONTENT_LENGTH               5
+#define WINHTTP_QUERY_CONTENT_LANGUAGE             6
+#define WINHTTP_QUERY_ALLOW                        7
+#define WINHTTP_QUERY_PUBLIC                       8
+#define WINHTTP_QUERY_DATE                         9
+#define WINHTTP_QUERY_EXPIRES                      10
+#define WINHTTP_QUERY_LAST_MODIFIED                11
+#define WINHTTP_QUERY_MESSAGE_ID                   12
+#define WINHTTP_QUERY_URI                          13
+#define WINHTTP_QUERY_DERIVED_FROM                 14
+#define WINHTTP_QUERY_COST                         15
+#define WINHTTP_QUERY_LINK                         16
+#define WINHTTP_QUERY_PRAGMA                       17
+#define WINHTTP_QUERY_VERSION                      18
+#define WINHTTP_QUERY_STATUS_CODE                  19
+#define WINHTTP_QUERY_STATUS_TEXT                  20
+#define WINHTTP_QUERY_RAW_HEADERS                  21
+#define WINHTTP_QUERY_RAW_HEADERS_CRLF             22
+#define WINHTTP_QUERY_CONNECTION                   23
+#define WINHTTP_QUERY_ACCEPT                       24
+#define WINHTTP_QUERY_ACCEPT_CHARSET               25
+#define WINHTTP_QUERY_ACCEPT_ENCODING              26
+#define WINHTTP_QUERY_ACCEPT_LANGUAGE              27
+#define WINHTTP_QUERY_AUTHORIZATION                28
+#define WINHTTP_QUERY_CONTENT_ENCODING             29
+#define WINHTTP_QUERY_FORWARDED                    30
+#define WINHTTP_QUERY_FROM                         31
+#define WINHTTP_QUERY_IF_MODIFIED_SINCE            32
+#define WINHTTP_QUERY_LOCATION                     33
+#define WINHTTP_QUERY_ORIG_URI                     34
+#define WINHTTP_QUERY_REFERER                      35
+#define WINHTTP_QUERY_RETRY_AFTER                  36
+#define WINHTTP_QUERY_SERVER                       37
+#define WINHTTP_QUERY_TITLE                        38
+#define WINHTTP_QUERY_USER_AGENT                   39
+#define WINHTTP_QUERY_WWW_AUTHENTICATE             40
+#define WINHTTP_QUERY_PROXY_AUTHENTICATE           41
+#define WINHTTP_QUERY_ACCEPT_RANGES                42
+#define WINHTTP_QUERY_SET_COOKIE                   43
+#define WINHTTP_QUERY_COOKIE                       44
+#define WINHTTP_QUERY_REQUEST_METHOD               45
+#define WINHTTP_QUERY_REFRESH                      46
+#define WINHTTP_QUERY_CONTENT_DISPOSITION          47
+#define WINHTTP_QUERY_AGE                          48
+#define WINHTTP_QUERY_CACHE_CONTROL                49
+#define WINHTTP_QUERY_CONTENT_BASE                 50
+#define WINHTTP_QUERY_CONTENT_LOCATION             51
+#define WINHTTP_QUERY_CONTENT_MD5                  52
+#define WINHTTP_QUERY_CONTENT_RANGE                53
+#define WINHTTP_QUERY_ETAG                         54
+#define WINHTTP_QUERY_HOST                         55
+#define WINHTTP_QUERY_IF_MATCH                     56
+#define WINHTTP_QUERY_IF_NONE_MATCH                57
+#define WINHTTP_QUERY_IF_RANGE                     58
+#define WINHTTP_QUERY_IF_UNMODIFIED_SINCE          59
+#define WINHTTP_QUERY_MAX_FORWARDS                 60
+#define WINHTTP_QUERY_PROXY_AUTHORIZATION          61
+#define WINHTTP_QUERY_RANGE                        62
+#define WINHTTP_QUERY_TRANSFER_ENCODING            63
+#define WINHTTP_QUERY_UPGRADE                      64
+#define WINHTTP_QUERY_VARY                         65
+#define WINHTTP_QUERY_VIA                          66
+#define WINHTTP_QUERY_WARNING                      67
+#define WINHTTP_QUERY_EXPECT                       68
+#define WINHTTP_QUERY_PROXY_CONNECTION             69
+#define WINHTTP_QUERY_UNLESS_MODIFIED_SINCE        70
+#define WINHTTP_QUERY_PROXY_SUPPORT                75
+#define WINHTTP_QUERY_AUTHENTICATION_INFO          76
+#define WINHTTP_QUERY_PASSPORT_URLS                77
+#define WINHTTP_QUERY_PASSPORT_CONFIG              78
+#define WINHTTP_QUERY_MAX                          78
+#define WINHTTP_QUERY_CUSTOM                       65535
+#define WINHTTP_QUERY_FLAG_REQUEST_HEADERS         0x80000000
+#define WINHTTP_QUERY_FLAG_SYSTEMTIME              0x40000000
+#define WINHTTP_QUERY_FLAG_NUMBER                  0x20000000
+
+/* Callback options */
+#define WINHTTP_CALLBACK_STATUS_RESOLVING_NAME          0x00000001
+#define WINHTTP_CALLBACK_STATUS_NAME_RESOLVED           0x00000002
+#define WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER    0x00000004
+#define WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER     0x00000008
+#define WINHTTP_CALLBACK_STATUS_SENDING_REQUEST         0x00000010
+#define WINHTTP_CALLBACK_STATUS_REQUEST_SENT            0x00000020
+#define WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE      0x00000040
+#define WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED       0x00000080
+#define WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION      0x00000100
+#define WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED       0x00000200
+#define WINHTTP_CALLBACK_STATUS_HANDLE_CREATED          0x00000400
+#define WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING          0x00000800
+#define WINHTTP_CALLBACK_STATUS_DETECTING_PROXY         0x00001000
+#define WINHTTP_CALLBACK_STATUS_REDIRECT                0x00004000
+#define WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE   0x00008000
+#define WINHTTP_CALLBACK_STATUS_SECURE_FAILURE          0x00010000
+#define WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE       0x00020000
+#define WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE          0x00040000
+#define WINHTTP_CALLBACK_STATUS_READ_COMPLETE           0x00080000
+#define WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE          0x00100000
+#define WINHTTP_CALLBACK_STATUS_REQUEST_ERROR           0x00200000
+#define WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE    0x00400000
+#define WINHTTP_CALLBACK_FLAG_RESOLVE_NAME              (WINHTTP_CALLBACK_STATUS_RESOLVING_NAME | WINHTTP_CALLBACK_STATUS_NAME_RESOLVED)
+#define WINHTTP_CALLBACK_FLAG_CONNECT_TO_SERVER         (WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER | WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER)
+#define WINHTTP_CALLBACK_FLAG_SEND_REQUEST              (WINHTTP_CALLBACK_STATUS_SENDING_REQUEST | WINHTTP_CALLBACK_STATUS_REQUEST_SENT)
+#define WINHTTP_CALLBACK_FLAG_RECEIVE_RESPONSE          (WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE | WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED)
+#define WINHTTP_CALLBACK_FLAG_CLOSE_CONNECTION          (WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION | WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED)
+#define WINHTTP_CALLBACK_FLAG_HANDLES                   (WINHTTP_CALLBACK_STATUS_HANDLE_CREATED | WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING)
+#define WINHTTP_CALLBACK_FLAG_DETECTING_PROXY           WINHTTP_CALLBACK_STATUS_DETECTING_PROXY
+#define WINHTTP_CALLBACK_FLAG_REDIRECT                  WINHTTP_CALLBACK_STATUS_REDIRECT
+#define WINHTTP_CALLBACK_FLAG_INTERMEDIATE_RESPONSE     WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE
+#define WINHTTP_CALLBACK_FLAG_SECURE_FAILURE            WINHTTP_CALLBACK_STATUS_SECURE_FAILURE
+#define WINHTTP_CALLBACK_FLAG_SENDREQUEST_COMPLETE      WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE
+#define WINHTTP_CALLBACK_FLAG_HEADERS_AVAILABLE         WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE
+#define WINHTTP_CALLBACK_FLAG_DATA_AVAILABLE            WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE
+#define WINHTTP_CALLBACK_FLAG_READ_COMPLETE             WINHTTP_CALLBACK_STATUS_READ_COMPLETE
+#define WINHTTP_CALLBACK_FLAG_WRITE_COMPLETE            WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE
+#define WINHTTP_CALLBACK_FLAG_REQUEST_ERROR             WINHTTP_CALLBACK_STATUS_REQUEST_ERROR
+#define WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS           (WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE | WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE \
+                                                        | WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE | WINHTTP_CALLBACK_STATUS_READ_COMPLETE          \
+                                                        | WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE | WINHTTP_CALLBACK_STATUS_REQUEST_ERROR)
+#define WINHTTP_CALLBACK_FLAG_ALL_NOTIFICATIONS         0xffffffff
+#define WINHTTP_INVALID_STATUS_CALLBACK                 ((WINHTTP_STATUS_CALLBACK)(-1L))
+
+#define API_RECEIVE_RESPONSE          (1)
+#define API_QUERY_DATA_AVAILABLE      (2)
+#define API_READ_DATA                 (3)
+#define API_WRITE_DATA                (4)
+#define API_SEND_REQUEST              (5)
+
+#define WINHTTP_HANDLE_TYPE_SESSION                  1
+#define WINHTTP_HANDLE_TYPE_CONNECT                  2
+#define WINHTTP_HANDLE_TYPE_REQUEST                  3
+
+#define WINHTTP_CALLBACK_STATUS_FLAG_CERT_REV_FAILED         0x00000001
+#define WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CERT            0x00000002
+#define WINHTTP_CALLBACK_STATUS_FLAG_CERT_REVOKED            0x00000004
+#define WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CA              0x00000008
+#define WINHTTP_CALLBACK_STATUS_FLAG_CERT_CN_INVALID         0x00000010
+#define WINHTTP_CALLBACK_STATUS_FLAG_CERT_DATE_INVALID       0x00000020
+#define WINHTTP_CALLBACK_STATUS_FLAG_CERT_WRONG_USAGE        0x00000040
+#define WINHTTP_CALLBACK_STATUS_FLAG_SECURITY_CHANNEL_ERROR  0x80000000
+
+#define WINHTTP_AUTH_SCHEME_BASIC      0x00000001
+#define WINHTTP_AUTH_SCHEME_NTLM       0x00000002
+#define WINHTTP_AUTH_SCHEME_PASSPORT   0x00000004
+#define WINHTTP_AUTH_SCHEME_DIGEST     0x00000008
+#define WINHTTP_AUTH_SCHEME_NEGOTIATE  0x00000010
+
+#define WINHTTP_AUTH_TARGET_SERVER     0x00000000
+#define WINHTTP_AUTH_TARGET_PROXY      0x00000001
+
+#define WINHTTP_TIME_FORMAT_BUFSIZE    62
+
+typedef struct
+{
+    DWORD   dwStructSize;
+    LPWSTR  lpszScheme;
+    DWORD   dwSchemeLength;
+    INTERNET_SCHEME nScheme;
+    LPWSTR  lpszHostName;
+    DWORD   dwHostNameLength;
+    INTERNET_PORT nPort;
+    LPWSTR  lpszUserName;
+    DWORD   dwUserNameLength;
+    LPWSTR  lpszPassword;
+    DWORD   dwPasswordLength;
+    LPWSTR  lpszUrlPath;
+    DWORD   dwUrlPathLength;
+    LPWSTR  lpszExtraInfo;
+    DWORD   dwExtraInfoLength;
+} URL_COMPONENTS, *LPURL_COMPONENTS;
+typedef URL_COMPONENTS URL_COMPONENTSW;
+typedef LPURL_COMPONENTS LPURL_COMPONENTSW;
+
+typedef struct
+{
+    DWORD_PTR dwResult;
+    DWORD dwError;
+} WINHTTP_ASYNC_RESULT, *LPWINHTTP_ASYNC_RESULT;
+
+typedef struct
+{
+    FILETIME ftExpiry;
+    FILETIME ftStart;
+    LPWSTR lpszSubjectInfo;
+    LPWSTR lpszIssuerInfo;
+    LPWSTR lpszProtocolName;
+    LPWSTR lpszSignatureAlgName;
+    LPWSTR lpszEncryptionAlgName;
+    DWORD dwKeySize;
+} WINHTTP_CERTIFICATE_INFO;
+
+typedef struct
+{
+    DWORD dwAccessType;
+    LPCWSTR lpszProxy;
+    LPCWSTR lpszProxyBypass;
+} WINHTTP_PROXY_INFO, *LPWINHTTP_PROXY_INFO;
+typedef WINHTTP_PROXY_INFO WINHTTP_PROXY_INFOW;
+typedef LPWINHTTP_PROXY_INFO LPWINHTTP_PROXY_INFOW;
+
+typedef struct
+{
+    BOOL   fAutoDetect;
+    LPWSTR lpszAutoConfigUrl;
+    LPWSTR lpszProxy;
+    LPWSTR lpszProxyBypass;
+} WINHTTP_CURRENT_USER_IE_PROXY_CONFIG;
+
+typedef VOID (CALLBACK *WINHTTP_STATUS_CALLBACK)(HINTERNET,DWORD_PTR,DWORD,LPVOID,DWORD);
+
+typedef struct
+{
+    DWORD dwFlags;
+    DWORD dwAutoDetectFlags;
+    LPCWSTR lpszAutoConfigUrl;
+    LPVOID lpvReserved;
+    DWORD dwReserved;
+    BOOL fAutoLogonIfChallenged;
+} WINHTTP_AUTOPROXY_OPTIONS;
+
+typedef struct
+{
+    DWORD dwMajorVersion;
+    DWORD dwMinorVersion;
+} HTTP_VERSION_INFO, *LPHTTP_VERSION_INFO;
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+BOOL        WINAPI WinHttpAddRequestHeaders(HINTERNET,LPCWSTR,DWORD,DWORD);
+BOOL        WINAPI WinHttpDetectAutoProxyConfigUrl(DWORD,LPWSTR*);
+BOOL        WINAPI WinHttpCheckPlatform(void);
+BOOL        WINAPI WinHttpCloseHandle(HINTERNET);
+HINTERNET   WINAPI WinHttpConnect(HINTERNET,LPCWSTR,INTERNET_PORT,DWORD);
+BOOL        WINAPI WinHttpCrackUrl(LPCWSTR,DWORD,DWORD,LPURL_COMPONENTS);
+BOOL        WINAPI WinHttpCreateUrl(LPURL_COMPONENTS,DWORD,LPWSTR,LPDWORD);
+BOOL        WINAPI WinHttpGetDefaultProxyConfiguration(WINHTTP_PROXY_INFO*);
+BOOL        WINAPI WinHttpGetIEProxyConfigForCurrentUser(WINHTTP_CURRENT_USER_IE_PROXY_CONFIG*);
+BOOL        WINAPI WinHttpGetProxyForUrl(HINTERNET,LPCWSTR,WINHTTP_AUTOPROXY_OPTIONS*,WINHTTP_PROXY_INFO*);
+HINTERNET   WINAPI WinHttpOpen(LPCWSTR,DWORD,LPCWSTR,LPCWSTR,DWORD);
+HINTERNET   WINAPI WinHttpOpenRequest(HINTERNET,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR*,DWORD);
+BOOL        WINAPI WinHttpQueryAuthParams(HINTERNET,DWORD,LPVOID*);
+BOOL        WINAPI WinHttpQueryAuthSchemes(HINTERNET,LPDWORD,LPDWORD,LPDWORD);
+BOOL        WINAPI WinHttpQueryDataAvailable(HINTERNET,LPDWORD);
+BOOL        WINAPI WinHttpQueryHeaders(HINTERNET,DWORD,LPCWSTR,LPVOID,LPDWORD,LPDWORD);
+BOOL        WINAPI WinHttpQueryOption(HINTERNET,DWORD,LPVOID,LPDWORD);
+BOOL        WINAPI WinHttpReadData(HINTERNET,LPVOID,DWORD,LPDWORD);
+BOOL        WINAPI WinHttpReceiveResponse(HINTERNET,LPVOID);
+BOOL        WINAPI WinHttpSendRequest(HINTERNET,LPCWSTR,DWORD,LPVOID,DWORD,DWORD,DWORD_PTR);
+BOOL        WINAPI WinHttpSetDefaultProxyConfiguration(WINHTTP_PROXY_INFO*);
+BOOL        WINAPI WinHttpSetCredentials(HINTERNET,DWORD,DWORD,LPCWSTR,LPCWSTR,LPVOID);
+BOOL        WINAPI WinHttpSetOption(HINTERNET,DWORD,LPVOID,DWORD);
+WINHTTP_STATUS_CALLBACK WINAPI WinHttpSetStatusCallback(HINTERNET,WINHTTP_STATUS_CALLBACK,DWORD,DWORD_PTR);
+BOOL        WINAPI WinHttpSetTimeouts(HINTERNET,int,int,int,int);
+BOOL        WINAPI WinHttpTimeFromSystemTime(CONST SYSTEMTIME *,LPWSTR);
+BOOL        WINAPI WinHttpTimeToSystemTime(LPCWSTR,SYSTEMTIME*);
+BOOL        WINAPI WinHttpWriteData(HINTERNET,LPCVOID,DWORD,LPDWORD);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* __WINE_WINHTTP_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wininet.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wininet.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wininet.h	(revision 16410)
@@ -0,0 +1,1667 @@
+/*
+ * Copyright (C) 2000 Ulrich Czekalla
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _WINE_WININET_H_
+#define _WINE_WININET_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define INTERNETAPI
+#define BOOLAPI INTERNETAPI BOOL WINAPI
+
+typedef LPVOID HINTERNET;
+typedef HINTERNET * LPHINTERNET;
+
+typedef WORD INTERNET_PORT;
+typedef INTERNET_PORT * LPINTERNET_PORT;
+
+
+#define INTERNET_INVALID_PORT_NUMBER    0
+
+#define INTERNET_DEFAULT_FTP_PORT       21
+#define INTERNET_DEFAULT_GOPHER_PORT    70
+#define INTERNET_DEFAULT_HTTP_PORT      80
+#define INTERNET_DEFAULT_HTTPS_PORT     443
+#define INTERNET_DEFAULT_SOCKS_PORT     1080
+
+#define INTERNET_MAX_HOST_NAME_LENGTH   256
+#define INTERNET_MAX_USER_NAME_LENGTH   128
+#define INTERNET_MAX_PASSWORD_LENGTH    128
+#define INTERNET_MAX_PORT_NUMBER_LENGTH 5
+#define INTERNET_MAX_PORT_NUMBER_VALUE  65535
+#define INTERNET_MAX_PATH_LENGTH        2048
+#define INTERNET_MAX_SCHEME_LENGTH      32
+#define INTERNET_MAX_URL_LENGTH         (INTERNET_MAX_SCHEME_LENGTH + sizeof("://")+ INTERNET_MAX_PATH_LENGTH)
+#define INTERNET_KEEP_ALIVE_UNKNOWN     ((DWORD)-1)
+#define INTERNET_KEEP_ALIVE_ENABLED     1
+#define INTERNET_KEEP_ALIVE_DISABLED    0
+#define INTERNET_REQFLAG_FROM_CACHE     0x00000001
+#define INTERNET_REQFLAG_ASYNC          0x00000002
+#define INTERNET_REQFLAG_VIA_PROXY      0x00000004
+#define INTERNET_REQFLAG_NO_HEADERS     0x00000008
+#define INTERNET_REQFLAG_PASSIVE        0x00000010
+#define INTERNET_REQFLAG_CACHE_WRITE_DISABLED 0x00000040
+#define INTERNET_FLAG_RELOAD            0x80000000
+#define INTERNET_FLAG_RAW_DATA          0x40000000
+#define INTERNET_FLAG_EXISTING_CONNECT  0x20000000
+#define INTERNET_FLAG_ASYNC             0x10000000
+#define INTERNET_FLAG_PASSIVE           0x08000000
+#define INTERNET_FLAG_NO_CACHE_WRITE    0x04000000
+#define INTERNET_FLAG_DONT_CACHE        INTERNET_FLAG_NO_CACHE_WRITE
+#define INTERNET_FLAG_MAKE_PERSISTENT   0x02000000
+#define INTERNET_FLAG_FROM_CACHE        0x01000000
+#define INTERNET_FLAG_OFFLINE           INTERNET_FLAG_FROM_CACHE
+#define INTERNET_FLAG_SECURE            0x00800000
+#define INTERNET_FLAG_KEEP_CONNECTION   0x00400000
+#define INTERNET_FLAG_NO_AUTO_REDIRECT  0x00200000
+#define INTERNET_FLAG_READ_PREFETCH     0x00100000
+#define INTERNET_FLAG_NO_COOKIES        0x00080000
+#define INTERNET_FLAG_NO_AUTH           0x00040000
+#define INTERNET_FLAG_CACHE_IF_NET_FAIL 0x00010000
+#define INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP   0x00008000
+#define INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS  0x00004000
+#define INTERNET_FLAG_IGNORE_CERT_DATE_INVALID  0x00002000
+#define INTERNET_FLAG_IGNORE_CERT_CN_INVALID    0x00001000
+#define INTERNET_FLAG_RESYNCHRONIZE     0x00000800
+#define INTERNET_FLAG_HYPERLINK         0x00000400
+#define INTERNET_FLAG_NO_UI             0x00000200
+#define INTERNET_FLAG_PRAGMA_NOCACHE    0x00000100
+#define INTERNET_FLAG_CACHE_ASYNC       0x00000080
+#define INTERNET_FLAG_FORMS_SUBMIT      0x00000040
+#define INTERNET_FLAG_NEED_FILE         0x00000010
+#define INTERNET_FLAG_MUST_CACHE_REQUEST INTERNET_FLAG_NEED_FILE
+#define INTERNET_FLAG_TRANSFER_ASCII    FTP_TRANSFER_TYPE_ASCII
+#define INTERNET_FLAG_TRANSFER_BINARY   FTP_TRANSFER_TYPE_BINARY
+#define SECURITY_INTERNET_MASK  (INTERNET_FLAG_IGNORE_CERT_CN_INVALID|\
+INTERNET_FLAG_IGNORE_CERT_DATE_INVALID|\
+INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS|\
+INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP)
+
+#define INTERNET_FLAGS_MASK     (INTERNET_FLAG_RELOAD \
+                                | INTERNET_FLAG_RAW_DATA            \
+                                | INTERNET_FLAG_EXISTING_CONNECT    \
+                                | INTERNET_FLAG_ASYNC               \
+                                | INTERNET_FLAG_PASSIVE             \
+                                | INTERNET_FLAG_NO_CACHE_WRITE      \
+                                | INTERNET_FLAG_MAKE_PERSISTENT     \
+                                | INTERNET_FLAG_FROM_CACHE          \
+                                | INTERNET_FLAG_SECURE              \
+                                | INTERNET_FLAG_KEEP_CONNECTION     \
+                                | INTERNET_FLAG_NO_AUTO_REDIRECT    \
+                                | INTERNET_FLAG_READ_PREFETCH       \
+                                | INTERNET_FLAG_NO_COOKIES          \
+                                | INTERNET_FLAG_NO_AUTH             \
+                                | INTERNET_FLAG_CACHE_IF_NET_FAIL   \
+                                | SECURITY_INTERNET_MASK            \
+                                | INTERNET_FLAG_RESYNCHRONIZE       \
+                                | INTERNET_FLAG_HYPERLINK           \
+                                | INTERNET_FLAG_NO_UI               \
+                                | INTERNET_FLAG_PRAGMA_NOCACHE      \
+                                | INTERNET_FLAG_CACHE_ASYNC         \
+                                | INTERNET_FLAG_FORMS_SUBMIT        \
+                                | INTERNET_FLAG_NEED_FILE           \
+                                | INTERNET_FLAG_TRANSFER_BINARY     \
+                                | INTERNET_FLAG_TRANSFER_ASCII      \
+                                )
+
+#define INTERNET_ERROR_MASK_INSERT_CDROM                    0x1
+
+#define INTERNET_OPTIONS_MASK   (~INTERNET_FLAGS_MASK)
+#define WININET_API_FLAG_ASYNC          0x00000001
+#define WININET_API_FLAG_SYNC           0x00000004
+#define WININET_API_FLAG_USE_CONTEXT    0x00000008
+#define INTERNET_NO_CALLBACK            0
+
+typedef enum {
+    INTERNET_SCHEME_PARTIAL = -2,
+    INTERNET_SCHEME_UNKNOWN = -1,
+    INTERNET_SCHEME_DEFAULT = 0,
+    INTERNET_SCHEME_FTP,
+    INTERNET_SCHEME_GOPHER,
+    INTERNET_SCHEME_HTTP,
+    INTERNET_SCHEME_HTTPS,
+    INTERNET_SCHEME_FILE,
+    INTERNET_SCHEME_NEWS,
+    INTERNET_SCHEME_MAILTO,
+    INTERNET_SCHEME_SOCKS,
+    INTERNET_SCHEME_JAVASCRIPT,
+    INTERNET_SCHEME_VBSCRIPT,
+    INTERNET_SCHEME_RES,
+    INTERNET_SCHEME_FIRST = INTERNET_SCHEME_FTP,
+    INTERNET_SCHEME_LAST = INTERNET_SCHEME_RES
+} INTERNET_SCHEME,* LPINTERNET_SCHEME;
+
+typedef struct {
+    DWORD_PTR dwResult;
+    DWORD dwError;
+} INTERNET_ASYNC_RESULT,* LPINTERNET_ASYNC_RESULT;
+
+typedef struct {
+    DWORD dwAccessType;
+    LPCSTR lpszProxy;
+    LPCSTR lpszProxyBypass;
+} INTERNET_PROXY_INFOA,* LPINTERNET_PROXY_INFOA;
+
+typedef struct {
+    DWORD dwAccessType;
+    LPCWSTR lpszProxy;
+    LPCWSTR lpszProxyBypass;
+} INTERNET_PROXY_INFOW,* LPINTERNET_PROXY_INFOW;
+
+
+DECL_WINELIB_TYPE_AW(INTERNET_PROXY_INFO)
+DECL_WINELIB_TYPE_AW(LPINTERNET_PROXY_INFO)
+
+typedef struct {
+    DWORD dwMajorVersion;
+    DWORD dwMinorVersion;
+} INTERNET_VERSION_INFO,* LPINTERNET_VERSION_INFO;
+
+typedef struct {
+    DWORD dwMajorVersion;
+    DWORD dwMinorVersion;
+} HTTP_VERSION_INFO,* LPHTTP_VERSION_INFO;
+
+typedef struct {
+    DWORD dwConnectedState;
+    DWORD dwFlags;
+} INTERNET_CONNECTED_INFO,* LPINTERNET_CONNECTED_INFO;
+
+#define ISO_FORCE_DISCONNECTED  0x00000001
+
+typedef struct {
+    DWORD   dwStructSize;
+    LPSTR   lpszScheme;
+    DWORD   dwSchemeLength;
+    INTERNET_SCHEME nScheme;
+    LPSTR   lpszHostName;
+    DWORD   dwHostNameLength;
+    INTERNET_PORT nPort;
+    LPSTR   lpszUserName;
+    DWORD   dwUserNameLength;
+    LPSTR   lpszPassword;
+    DWORD   dwPasswordLength;
+    LPSTR   lpszUrlPath;
+    DWORD   dwUrlPathLength;
+    LPSTR   lpszExtraInfo;
+    DWORD   dwExtraInfoLength;
+} URL_COMPONENTSA,* LPURL_COMPONENTSA;
+
+typedef struct {
+    DWORD   dwStructSize;
+    LPWSTR  lpszScheme;
+    DWORD   dwSchemeLength;
+    INTERNET_SCHEME nScheme;
+    LPWSTR  lpszHostName;
+    DWORD   dwHostNameLength;
+    INTERNET_PORT nPort;
+    LPWSTR  lpszUserName;
+    DWORD   dwUserNameLength;
+    LPWSTR  lpszPassword;
+    DWORD   dwPasswordLength;
+    LPWSTR  lpszUrlPath;
+    DWORD   dwUrlPathLength;
+    LPWSTR  lpszExtraInfo;
+    DWORD   dwExtraInfoLength;
+} URL_COMPONENTSW,* LPURL_COMPONENTSW;
+
+DECL_WINELIB_TYPE_AW(URL_COMPONENTS)
+DECL_WINELIB_TYPE_AW(LPURL_COMPONENTS)
+
+typedef struct {
+    FILETIME ftExpiry;
+    FILETIME ftStart;
+    LPSTR lpszSubjectInfo;
+    LPSTR lpszIssuerInfo;
+    LPSTR lpszProtocolName;
+    LPSTR lpszSignatureAlgName;
+    LPSTR lpszEncryptionAlgName;
+    DWORD dwKeySize;
+
+} INTERNET_CERTIFICATE_INFOA,* LPINTERNET_CERTIFICATE_INFOA;
+
+typedef struct {
+    FILETIME ftExpiry;
+    FILETIME ftStart;
+    LPWSTR lpszSubjectInfo;
+    LPWSTR lpszIssuerInfo;
+    LPWSTR lpszProtocolName;
+    LPWSTR lpszSignatureAlgName;
+    LPWSTR lpszEncryptionAlgName;
+    DWORD dwKeySize;
+
+} INTERNET_CERTIFICATE_INFOW,* LPINTERNET_CERTIFICATE_INFOW;
+
+DECL_WINELIB_TYPE_AW(INTERNET_CERTIFICATE_INFO)
+DECL_WINELIB_TYPE_AW(LPINTERNET_CERTIFICATE_INFO)
+
+typedef struct _INTERNET_BUFFERSA {
+    DWORD dwStructSize;
+    struct _INTERNET_BUFFERSA * Next;
+    LPCSTR   lpcszHeader;
+    DWORD dwHeadersLength;
+    DWORD dwHeadersTotal;
+    LPVOID lpvBuffer;
+    DWORD dwBufferLength;
+    DWORD dwBufferTotal;
+    DWORD dwOffsetLow;
+    DWORD dwOffsetHigh;
+} INTERNET_BUFFERSA,* LPINTERNET_BUFFERSA;
+
+typedef struct _INTERNET_BUFFERSW {
+    DWORD dwStructSize;
+    struct _INTERNET_BUFFERSW * Next;
+    LPCWSTR  lpcszHeader;
+    DWORD dwHeadersLength;
+    DWORD dwHeadersTotal;
+    LPVOID lpvBuffer;
+    DWORD dwBufferLength;
+    DWORD dwBufferTotal;
+    DWORD dwOffsetLow;
+    DWORD dwOffsetHigh;
+} INTERNET_BUFFERSW,* LPINTERNET_BUFFERSW;
+
+DECL_WINELIB_TYPE_AW(INTERNET_BUFFERS)
+DECL_WINELIB_TYPE_AW(LPINTERNET_BUFFERS)
+
+#define GROUP_OWNER_STORAGE_SIZE 4
+#define GROUPNAME_MAX_LENGTH 120
+
+typedef struct _INTERNET_CACHE_GROUP_INFOA {
+    DWORD dwGroupSize;
+    DWORD dwGroupFlags;
+    DWORD dwGroupType;
+    DWORD dwDiskUsage;
+    DWORD dwDiskQuota;
+    DWORD dwOwnerStorage[GROUP_OWNER_STORAGE_SIZE];
+    CHAR  szGroupName[GROUPNAME_MAX_LENGTH];
+} INTERNET_CACHE_GROUP_INFOA, * LPINTERNET_CACHE_GROUP_INFOA;
+
+typedef struct _INTERNET_CACHE_GROUP_INFOW {
+    DWORD dwGroupSize;
+    DWORD dwGroupFlags;
+    DWORD dwGroupType;
+    DWORD dwDiskUsage;
+    DWORD dwDiskQuota;
+    DWORD dwOwnerStorage[GROUP_OWNER_STORAGE_SIZE];
+    WCHAR szGroupName[GROUPNAME_MAX_LENGTH];
+} INTERNET_CACHE_GROUP_INFOW, *LPINTERNET_CACHE_GROUP_INFOW;
+
+DECL_WINELIB_TYPE_AW(INTERNET_CACHE_GROUP_INFO)
+DECL_WINELIB_TYPE_AW(LPINTERNET_CACHE_GROUP_INFO)
+
+typedef struct _INTERNET_PER_CONN_OPTIONA {
+    DWORD dwOption;
+    union {
+        DWORD    dwValue;
+        LPSTR    pszValue;
+        FILETIME ftValue;
+    } Value;
+} INTERNET_PER_CONN_OPTIONA, *LPINTERNET_PER_CONN_OPTIONA;
+
+typedef struct _INTERNET_PER_CONN_OPTIONW {
+    DWORD dwOption;
+    union {
+        DWORD    dwValue;
+        LPWSTR   pszValue;
+        FILETIME ftValue;
+    } Value;
+} INTERNET_PER_CONN_OPTIONW, *LPINTERNET_PER_CONN_OPTIONW;
+
+DECL_WINELIB_TYPE_AW(INTERNET_PER_CONN_OPTION)
+DECL_WINELIB_TYPE_AW(LPINTERNET_PER_CONN_OPTION)
+
+#define INTERNET_PER_CONN_FLAGS                        1
+#define INTERNET_PER_CONN_PROXY_SERVER                 2
+#define INTERNET_PER_CONN_PROXY_BYPASS                 3
+#define INTERNET_PER_CONN_AUTOCONFIG_URL               4
+#define INTERNET_PER_CONN_AUTODISCOVERY_FLAGS          5
+#define INTERNET_PER_CONN_AUTOCONFIG_SECONDARY_URL     6
+#define INTERNET_PER_CONN_AUTOCONFIG_RELOAD_DELAY_MINS 7
+#define INTERNET_PER_CONN_AUTOCONFIG_LAST_DETECT_TIME  8
+#define INTERNET_PER_CONN_AUTOCONFIG_LAST_DETECT_URL   9
+
+/* Values for INTERNET_PER_CONN_FLAGS */
+#define PROXY_TYPE_DIRECT         0x00000001
+#define PROXY_TYPE_PROXY          0x00000002
+#define PROXY_TYPE_AUTO_PROXY_URL 0x00000004
+#define PROXY_TYPE_AUTO_DETECT    0x00000008
+/* Values for INTERNET_PER_CONN_AUTODISCOVERY_FLAGS */
+#define AUTO_PROXY_FLAG_USER_SET                0x00000001
+#define AUTO_PROXY_FLAG_ALWAYS_DETECT           0x00000002
+#define AUTO_PROXY_FLAG_DETECTION_RUN           0x00000004
+#define AUTO_PROXY_FLAG_MIGRATED                0x00000008
+#define AUTO_PROXY_FLAG_DONT_CACHE_PROXY_RESULT 0x00000010
+#define AUTO_PROXY_FLAG_CACHE_INIT_RUN          0x00000020
+#define AUTO_PROXY_FLAG_DETECTION_SUSPECT       0x00000040
+
+typedef struct _INTERNET_PER_CONN_OPTION_LISTA {
+    DWORD                       dwSize;
+    LPSTR                       pszConnection;
+    DWORD                       dwOptionCount;
+    DWORD                       dwOptionError;
+    LPINTERNET_PER_CONN_OPTIONA pOptions;
+} INTERNET_PER_CONN_OPTION_LISTA, *LPINTERNET_PER_CONN_OPTION_LISTA;
+
+typedef struct _INTERNET_PER_CONN_OPTION_LISTW {
+    DWORD                       dwSize;
+    LPWSTR                      pszConnection;
+    DWORD                       dwOptionCount;
+    DWORD                       dwOptionError;
+    LPINTERNET_PER_CONN_OPTIONW pOptions;
+} INTERNET_PER_CONN_OPTION_LISTW, *LPINTERNET_PER_CONN_OPTION_LISTW;
+
+DECL_WINELIB_TYPE_AW(INTERNET_PER_CONN_OPTION_LIST)
+DECL_WINELIB_TYPE_AW(LPINTERNET_PER_CONN_OPTION_LIST)
+
+BOOLAPI InternetTimeFromSystemTimeA(CONST SYSTEMTIME *,DWORD ,LPSTR ,DWORD);
+BOOLAPI InternetTimeFromSystemTimeW(CONST SYSTEMTIME *,DWORD ,LPWSTR ,DWORD);
+#define InternetTimeFromSystemTime WINELIB_NAME_AW(InternetTimeFromSystemTime)
+
+#define INTERNET_RFC1123_FORMAT    0
+#define INTERNET_RFC1123_BUFSIZE   30
+
+BOOLAPI InternetTimeToSystemTimeA(LPCSTR ,SYSTEMTIME *,DWORD);
+BOOLAPI InternetTimeToSystemTimeW(LPCWSTR ,SYSTEMTIME *,DWORD);
+#define InternetTimeToSystemTime WINELIB_NAME_AW(InternetTimeToSystemTime)
+
+BOOLAPI InternetCrackUrlA(LPCSTR ,DWORD ,DWORD ,LPURL_COMPONENTSA);
+BOOLAPI InternetCrackUrlW(LPCWSTR ,DWORD ,DWORD ,LPURL_COMPONENTSW);
+#define InternetCrackUrl  WINELIB_NAME_AW(InternetCrackUrl)
+
+BOOLAPI InternetCreateUrlA(LPURL_COMPONENTSA ,DWORD ,LPSTR ,LPDWORD);
+BOOLAPI InternetCreateUrlW(LPURL_COMPONENTSW ,DWORD ,LPWSTR ,LPDWORD);
+#define InternetCreateUrl WINELIB_NAME_AW(InternetCreateUrl)
+
+BOOLAPI InternetCanonicalizeUrlA(LPCSTR ,LPSTR ,LPDWORD ,DWORD);
+BOOLAPI InternetCanonicalizeUrlW(LPCWSTR ,LPWSTR ,LPDWORD ,DWORD);
+#define InternetCanonicalizeUrl  WINELIB_NAME_AW(InternetCanonicalizeUrl)
+
+BOOLAPI InternetCombineUrlA(LPCSTR ,LPCSTR ,LPSTR ,LPDWORD ,DWORD);
+BOOLAPI InternetCombineUrlW(LPCWSTR ,LPCWSTR ,LPWSTR ,LPDWORD ,DWORD);
+#define InternetCombineUrl  WINELIB_NAME_AW(InternetCombineUrl)
+
+#define ICU_ESCAPE      0x80000000
+#define ICU_USERNAME    0x40000000
+#define ICU_NO_ENCODE   0x20000000
+#define ICU_DECODE      0x10000000
+#define ICU_NO_META     0x08000000
+#define ICU_ENCODE_SPACES_ONLY 0x04000000
+#define ICU_BROWSER_MODE 0x02000000
+
+INTERNETAPI HINTERNET WINAPI InternetOpenA(LPCSTR ,DWORD ,LPCSTR ,LPCSTR ,DWORD);
+INTERNETAPI HINTERNET WINAPI InternetOpenW(LPCWSTR ,DWORD ,LPCWSTR ,LPCWSTR ,DWORD);
+#define InternetOpen  WINELIB_NAME_AW(InternetOpen)
+
+#define INTERNET_OPEN_TYPE_PRECONFIG                    0
+#define INTERNET_OPEN_TYPE_DIRECT                       1
+#define INTERNET_OPEN_TYPE_PROXY                        3
+#define INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY  4
+#define PRE_CONFIG_INTERNET_ACCESS  INTERNET_OPEN_TYPE_PRECONFIG
+#define LOCAL_INTERNET_ACCESS       INTERNET_OPEN_TYPE_DIRECT
+#define CERN_PROXY_INTERNET_ACCESS  INTERNET_OPEN_TYPE_PROXY
+
+BOOLAPI InternetCloseHandle(HINTERNET);
+
+INTERNETAPI HINTERNET WINAPI InternetConnectA(HINTERNET ,LPCSTR ,INTERNET_PORT ,
+	LPCSTR ,LPCSTR ,DWORD ,DWORD ,DWORD_PTR );
+INTERNETAPI HINTERNET WINAPI InternetConnectW(HINTERNET ,LPCWSTR ,INTERNET_PORT ,
+	LPCWSTR ,LPCWSTR ,DWORD ,DWORD ,DWORD_PTR );
+#define InternetConnect  WINELIB_NAME_AW(InternetConnect)
+
+#define INTERNET_SERVICE_URL    0
+#define INTERNET_SERVICE_FTP    1
+#define INTERNET_SERVICE_GOPHER 2
+#define INTERNET_SERVICE_HTTP   3
+
+#define InternetConnectUrl(hInternet,lpszUrl,dwFlags,dwContext) \
+    InternetConnect(hInternet,\
+                    lpszUrl,\
+                    INTERNET_INVALID_PORT_NUMBER,\
+                    NULL,\
+                    NULL,\
+                    INTERNET_SERVICE_URL,\
+                    dwFlags,\
+                    dwContext                       \
+                    )
+
+INTERNETAPI HINTERNET WINAPI InternetOpenUrlA(HINTERNET ,LPCSTR ,LPCSTR ,DWORD ,DWORD ,DWORD_PTR);
+INTERNETAPI HINTERNET WINAPI InternetOpenUrlW(HINTERNET ,LPCWSTR ,LPCWSTR ,DWORD ,DWORD ,DWORD_PTR);
+#define InternetOpenUrl  WINELIB_NAME_AW(InternetOpenUrl)
+
+BOOLAPI InternetReadFile( HINTERNET ,LPVOID ,DWORD ,LPDWORD );
+INTERNETAPI BOOL WINAPI InternetReadFileExA( HINTERNET ,LPINTERNET_BUFFERSA ,DWORD ,DWORD_PTR );
+INTERNETAPI BOOL WINAPI InternetReadFileExW( HINTERNET ,LPINTERNET_BUFFERSW ,DWORD ,DWORD_PTR );
+#define InternetReadFileEx  WINELIB_NAME_AW(InternetReadFileEx)
+
+#define IRF_ASYNC       WININET_API_FLAG_ASYNC
+#define IRF_SYNC        WININET_API_FLAG_SYNC
+#define IRF_USE_CONTEXT WININET_API_FLAG_USE_CONTEXT
+#define IRF_NO_WAIT     0x00000008
+
+INTERNETAPI DWORD WINAPI InternetSetFilePointer(HINTERNET ,LONG ,PVOID ,DWORD ,DWORD_PTR);
+BOOLAPI InternetWriteFile(HINTERNET ,LPCVOID ,DWORD ,LPDWORD);
+BOOLAPI InternetQueryDataAvailable(HINTERNET ,LPDWORD ,DWORD ,DWORD_PTR);
+BOOLAPI InternetFindNextFileA(HINTERNET ,LPVOID);
+BOOLAPI InternetFindNextFileW(HINTERNET ,LPVOID);
+#define InternetFindNextFile  WINELIB_NAME_AW(InternetFindNextFile)
+
+BOOLAPI InternetQueryOptionA(HINTERNET ,DWORD ,LPVOID ,LPDWORD);
+BOOLAPI InternetQueryOptionW(HINTERNET ,DWORD ,LPVOID ,LPDWORD);
+#define InternetQueryOption  WINELIB_NAME_AW(InternetQueryOption)
+
+BOOLAPI InternetSetOptionA(HINTERNET ,DWORD ,LPVOID ,DWORD);
+BOOLAPI InternetSetOptionW(HINTERNET ,DWORD ,LPVOID ,DWORD);
+#define InternetSetOption  WINELIB_NAME_AW(InternetSetOption)
+
+BOOLAPI InternetSetOptionExA(HINTERNET ,DWORD ,LPVOID ,DWORD ,DWORD);
+BOOLAPI InternetSetOptionExW(HINTERNET ,DWORD ,LPVOID ,DWORD ,DWORD);
+#define InternetSetOptionEx  WINELIB_NAME_AW(InternetSetOptionEx)
+
+BOOLAPI InternetLockRequestFile(HINTERNET ,HANDLE *);
+BOOLAPI InternetUnlockRequestFile(HANDLE);
+
+#define ISO_GLOBAL      0x00000001
+#define ISO_REGISTRY    0x00000002
+
+#define ISO_VALID_FLAGS (ISO_GLOBAL | ISO_REGISTRY)
+#define INTERNET_OPTION_CALLBACK                1
+#define INTERNET_OPTION_CONNECT_TIMEOUT         2
+#define INTERNET_OPTION_CONNECT_RETRIES         3
+#define INTERNET_OPTION_CONNECT_BACKOFF         4
+#define INTERNET_OPTION_SEND_TIMEOUT            5
+#define INTERNET_OPTION_CONTROL_SEND_TIMEOUT    INTERNET_OPTION_SEND_TIMEOUT
+#define INTERNET_OPTION_RECEIVE_TIMEOUT         6
+#define INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT INTERNET_OPTION_RECEIVE_TIMEOUT
+#define INTERNET_OPTION_DATA_SEND_TIMEOUT       7
+#define INTERNET_OPTION_DATA_RECEIVE_TIMEOUT    8
+#define INTERNET_OPTION_HANDLE_TYPE             9
+#define INTERNET_OPTION_LISTEN_TIMEOUT          11
+#define INTERNET_OPTION_READ_BUFFER_SIZE        12
+#define INTERNET_OPTION_WRITE_BUFFER_SIZE       13
+#define INTERNET_OPTION_ASYNC_ID                15
+#define INTERNET_OPTION_ASYNC_PRIORITY          16
+#define INTERNET_OPTION_PARENT_HANDLE           21
+#define INTERNET_OPTION_KEEP_CONNECTION         22
+#define INTERNET_OPTION_REQUEST_FLAGS           23
+#define INTERNET_OPTION_EXTENDED_ERROR          24
+#define INTERNET_OPTION_OFFLINE_MODE            26
+#define INTERNET_OPTION_CACHE_STREAM_HANDLE     27
+#define INTERNET_OPTION_USERNAME                28
+#define INTERNET_OPTION_PASSWORD                29
+#define INTERNET_OPTION_ASYNC                   30
+#define INTERNET_OPTION_SECURITY_FLAGS          31
+#define INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT 32
+#define INTERNET_OPTION_DATAFILE_NAME           33
+#define INTERNET_OPTION_URL                     34
+#define INTERNET_OPTION_SECURITY_CERTIFICATE    35
+#define INTERNET_OPTION_SECURITY_KEY_BITNESS    36
+#define INTERNET_OPTION_REFRESH                 37
+#define INTERNET_OPTION_PROXY                   38
+#define INTERNET_OPTION_SETTINGS_CHANGED        39
+#define INTERNET_OPTION_VERSION                 40
+#define INTERNET_OPTION_USER_AGENT              41
+#define INTERNET_OPTION_END_BROWSER_SESSION     42
+#define INTERNET_OPTION_PROXY_USERNAME          43
+#define INTERNET_OPTION_PROXY_PASSWORD          44
+#define INTERNET_OPTION_CONTEXT_VALUE           45
+#define INTERNET_OPTION_CONNECT_LIMIT           46
+#define INTERNET_OPTION_SECURITY_SELECT_CLIENT_CERT 47
+#define INTERNET_OPTION_POLICY                  48
+#define INTERNET_OPTION_DISCONNECTED_TIMEOUT    49
+#define INTERNET_OPTION_CONNECTED_STATE         50
+#define INTERNET_OPTION_IDLE_STATE              51
+#define INTERNET_OPTION_OFFLINE_SEMANTICS       52
+#define INTERNET_OPTION_SECONDARY_CACHE_KEY     53
+#define INTERNET_OPTION_CALLBACK_FILTER         54
+#define INTERNET_OPTION_CONNECT_TIME            55
+#define INTERNET_OPTION_SEND_THROUGHPUT         56
+#define INTERNET_OPTION_RECEIVE_THROUGHPUT      57
+#define INTERNET_OPTION_REQUEST_PRIORITY        58
+#define INTERNET_OPTION_HTTP_VERSION            59
+#define INTERNET_OPTION_RESET_URLCACHE_SESSION  60
+#define INTERNET_OPTION_ERROR_MASK              62
+#define INTERNET_OPTION_FROM_CACHE_TIMEOUT      63
+#define INTERNET_OPTION_BYPASS_EDITED_ENTRY     64
+#define INTERNET_OPTION_DIAGNOSTIC_SOCKET_INFO  67
+#define INTERNET_OPTION_CODEPAGE                68
+#define INTERNET_OPTION_CACHE_TIMESTAMPS        69
+#define INTERNET_OPTION_DISABLE_AUTODIAL        70
+#define INTERNET_OPTION_MAX_CONNS_PER_SERVER    73
+#define INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER 74
+#define INTERNET_OPTION_PER_CONNECTION_OPTION   75
+#define INTERNET_OPTION_DIGEST_AUTH_UNLOAD      76
+#define INTERNET_OPTION_IGNORE_OFFLINE          77
+#define INTERNET_OPTION_IDENTITY                78
+#define INTERNET_OPTION_REMOVE_IDENTITY         79
+#define INTERNET_OPTION_ALTER_IDENTITY          80
+#define INTERNET_OPTION_SUPPRESS_BEHAVIOR       81
+#define INTERNET_OPTION_AUTODIAL_MODE           82
+#define INTERNET_OPTION_AUTODIAL_CONNECTION     83
+#define INTERNET_OPTION_CLIENT_CERT_CONTEXT     84
+#define INTERNET_OPTION_AUTH_FLAGS              85
+#define INTERNET_OPTION_COOKIES_3RD_PARTY       86
+#define INTERNET_OPTION_DISABLE_PASSPORT_AUTH   87
+#define INTERNET_OPTION_SEND_UTF8_SERVERNAME_TO_PROXY 88
+#define INTERNET_OPTION_EXEMPT_CONNECTION_LIMIT 89
+#define INTERNET_OPTION_ENABLE_PASSPORT_AUTH    90
+
+#define INTERNET_OPTION_HIBERNATE_INACTIVE_WORKER_THREADS 91
+#define INTERNET_OPTION_ACTIVATE_WORKER_THREADS           92
+#define INTERNET_OPTION_RESTORE_WORKER_THREAD_DEFAULTS    93
+#define INTERNET_OPTION_SOCKET_SEND_BUFFER_LENGTH         94
+
+#define INTERNET_OPTION_PROXY_SETTINGS_CHANGED  95
+#define INTERNET_OPTION_DATAFILE_EXT            96
+
+#define INTERNET_FIRST_OPTION                   INTERNET_OPTION_CALLBACK
+#define INTERNET_LAST_OPTION                    INTERNET_OPTION_DATAFILE_EXT
+
+#define INTERNET_PRIORITY_FOREGROUND            1000
+#define INTERNET_HANDLE_TYPE_INTERNET           1
+#define INTERNET_HANDLE_TYPE_CONNECT_FTP        2
+#define INTERNET_HANDLE_TYPE_CONNECT_GOPHER     3
+#define INTERNET_HANDLE_TYPE_CONNECT_HTTP       4
+#define INTERNET_HANDLE_TYPE_FTP_FIND           5
+#define INTERNET_HANDLE_TYPE_FTP_FIND_HTML      6
+#define INTERNET_HANDLE_TYPE_FTP_FILE           7
+#define INTERNET_HANDLE_TYPE_FTP_FILE_HTML      8
+#define INTERNET_HANDLE_TYPE_GOPHER_FIND        9
+#define INTERNET_HANDLE_TYPE_GOPHER_FIND_HTML   10
+#define INTERNET_HANDLE_TYPE_GOPHER_FILE        11
+#define INTERNET_HANDLE_TYPE_GOPHER_FILE_HTML   12
+#define INTERNET_HANDLE_TYPE_HTTP_REQUEST       13
+#define SECURITY_FLAG_SECURE                    0x00000001
+#define SECURITY_FLAG_STRENGTH_WEAK             0x10000000
+#define SECURITY_FLAG_STRENGTH_MEDIUM           0x40000000
+#define SECURITY_FLAG_STRENGTH_STRONG           0x20000000
+#define SECURITY_FLAG_UNKNOWNBIT                0x80000000
+#define SECURITY_FLAG_NORMALBITNESS             SECURITY_FLAG_STRENGTH_WEAK
+#define SECURITY_FLAG_SSL                       0x00000002
+#define SECURITY_FLAG_SSL3                      0x00000004
+#define SECURITY_FLAG_PCT                       0x00000008
+#define SECURITY_FLAG_PCT4                      0x00000010
+#define SECURITY_FLAG_IETFSSL4                  0x00000020
+#define SECURITY_FLAG_40BIT                     SECURITY_FLAG_STRENGTH_WEAK
+#define SECURITY_FLAG_128BIT                    SECURITY_FLAG_STRENGTH_STRONG
+#define SECURITY_FLAG_56BIT                     SECURITY_FLAG_STRENGTH_MEDIUM
+#define SECURITY_FLAG_IGNORE_REVOCATION         0x00000080
+#define SECURITY_FLAG_IGNORE_UNKNOWN_CA         0x00000100
+#define SECURITY_FLAG_IGNORE_WRONG_USAGE        0x00000200
+#define SECURITY_FLAG_IGNORE_CERT_CN_INVALID    INTERNET_FLAG_IGNORE_CERT_CN_INVALID
+#define SECURITY_FLAG_IGNORE_CERT_DATE_INVALID  INTERNET_FLAG_IGNORE_CERT_DATE_INVALID
+#define SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTPS  INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS
+#define SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTP   INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP
+#define SECURITY_SET_MASK       (SECURITY_FLAG_IGNORE_REVOCATION |\
+                                 SECURITY_FLAG_IGNORE_UNKNOWN_CA |\
+                                 SECURITY_FLAG_IGNORE_CERT_CN_INVALID |\
+                                 SECURITY_FLAG_IGNORE_CERT_DATE_INVALID |\
+                                 SECURITY_FLAG_IGNORE_WRONG_USAGE)
+
+
+
+BOOLAPI InternetGetLastResponseInfoA(LPDWORD ,LPSTR ,LPDWORD);
+BOOLAPI InternetGetLastResponseInfoW(LPDWORD ,LPWSTR ,LPDWORD);
+#define InternetGetLastResponseInfo  WINELIB_NAME_AW(InternetGetLastResponseInfo)
+
+typedef VOID (CALLBACK *INTERNET_STATUS_CALLBACK)(HINTERNET ,DWORD_PTR ,DWORD ,
+	LPVOID ,DWORD);
+
+typedef INTERNET_STATUS_CALLBACK * LPINTERNET_STATUS_CALLBACK;
+
+INTERNETAPI INTERNET_STATUS_CALLBACK WINAPI InternetSetStatusCallbackA(HINTERNET ,INTERNET_STATUS_CALLBACK);
+INTERNETAPI INTERNET_STATUS_CALLBACK WINAPI InternetSetStatusCallbackW(HINTERNET ,INTERNET_STATUS_CALLBACK);
+#define InternetSetStatusCallback WINELIB_NAME_AW(InternetSetStatusCallback)
+
+#define INTERNET_STATUS_RESOLVING_NAME          10
+#define INTERNET_STATUS_NAME_RESOLVED           11
+#define INTERNET_STATUS_CONNECTING_TO_SERVER    20
+#define INTERNET_STATUS_CONNECTED_TO_SERVER     21
+#define INTERNET_STATUS_SENDING_REQUEST         30
+#define INTERNET_STATUS_REQUEST_SENT            31
+#define INTERNET_STATUS_RECEIVING_RESPONSE      40
+#define INTERNET_STATUS_RESPONSE_RECEIVED       41
+#define INTERNET_STATUS_CTL_RESPONSE_RECEIVED   42
+#define INTERNET_STATUS_PREFETCH                43
+#define INTERNET_STATUS_CLOSING_CONNECTION      50
+#define INTERNET_STATUS_CONNECTION_CLOSED       51
+#define INTERNET_STATUS_HANDLE_CREATED          60
+#define INTERNET_STATUS_HANDLE_CLOSING          70
+#define INTERNET_STATUS_DETECTING_PROXY         80
+#define INTERNET_STATUS_REQUEST_COMPLETE        100
+#define INTERNET_STATUS_REDIRECT                110
+#define INTERNET_STATUS_INTERMEDIATE_RESPONSE   120
+#define INTERNET_STATUS_USER_INPUT_REQUIRED     140
+#define INTERNET_STATUS_STATE_CHANGE            200
+#define INTERNET_STATUS_COOKIE_SENT             320
+#define INTERNET_STATUS_COOKIE_RECEIVED         321
+#define INTERNET_STATUS_PRIVACY_IMPACTED        324
+#define INTERNET_STATUS_P3P_HEADER              325
+#define INTERNET_STATUS_P3P_POLICYREF           326
+#define INTERNET_STATUS_COOKIE_HISTORY          327
+#define INTERNET_STATE_CONNECTED                0x00000001
+#define INTERNET_STATE_DISCONNECTED             0x00000002
+#define INTERNET_STATE_DISCONNECTED_BY_USER     0x00000010
+#define INTERNET_STATE_IDLE                     0x00000100
+#define INTERNET_STATE_BUSY                     0x00000200
+
+#define INTERNET_INVALID_STATUS_CALLBACK        ((INTERNET_STATUS_CALLBACK)(-1L))
+
+#define FTP_TRANSFER_TYPE_UNKNOWN   0x00000000
+#define FTP_TRANSFER_TYPE_ASCII     0x00000001
+#define FTP_TRANSFER_TYPE_BINARY    0x00000002
+#define FTP_TRANSFER_TYPE_MASK      (FTP_TRANSFER_TYPE_ASCII | FTP_TRANSFER_TYPE_BINARY)
+
+BOOLAPI FtpCommandA(HINTERNET, BOOL, DWORD, LPCSTR, DWORD_PTR, HINTERNET *);
+BOOLAPI FtpCommandW(HINTERNET, BOOL, DWORD, LPCWSTR, DWORD_PTR, HINTERNET *);
+#define FtpCommand  WINELIB_NAME_AW(FtpCommand)
+
+INTERNETAPI HINTERNET WINAPI FtpFindFirstFileA(HINTERNET ,LPCSTR ,
+	LPWIN32_FIND_DATAA ,DWORD ,DWORD_PTR);
+INTERNETAPI HINTERNET WINAPI FtpFindFirstFileW(HINTERNET ,LPCWSTR ,
+	LPWIN32_FIND_DATAW ,DWORD ,DWORD_PTR);
+#define FtpFindFirstFile  WINELIB_NAME_AW(FtpFindFirstFile)
+
+BOOLAPI FtpGetFileA(HINTERNET ,LPCSTR ,LPCSTR ,BOOL ,DWORD ,DWORD ,DWORD_PTR);
+BOOLAPI FtpGetFileW(HINTERNET ,LPCWSTR ,LPCWSTR ,BOOL ,DWORD ,DWORD ,DWORD_PTR);
+#define FtpGetFile  WINELIB_NAME_AW(FtpGetFile)
+
+DWORD WINAPI FtpGetFileSize(HINTERNET, LPDWORD);
+
+BOOLAPI FtpPutFileA(HINTERNET ,LPCSTR ,LPCSTR ,DWORD ,DWORD_PTR);
+BOOLAPI FtpPutFileW(HINTERNET ,LPCWSTR ,LPCWSTR ,DWORD ,DWORD_PTR);
+#define FtpPutFile  WINELIB_NAME_AW(FtpPutFile)
+
+BOOLAPI FtpDeleteFileA(HINTERNET ,LPCSTR);
+BOOLAPI FtpDeleteFileW(HINTERNET ,LPCWSTR);
+#define FtpDeleteFile  WINELIB_NAME_AW(FtpDeleteFile)
+
+BOOLAPI FtpRenameFileA(HINTERNET ,LPCSTR ,LPCSTR);
+BOOLAPI FtpRenameFileW(HINTERNET ,LPCWSTR ,LPCWSTR);
+#define FtpRenameFile  WINELIB_NAME_AW(FtpRenameFile)
+
+INTERNETAPI HINTERNET WINAPI FtpOpenFileA(HINTERNET ,LPCSTR ,DWORD ,DWORD ,DWORD_PTR);
+INTERNETAPI HINTERNET WINAPI FtpOpenFileW(HINTERNET ,LPCWSTR ,DWORD ,DWORD ,DWORD_PTR);
+#define FtpOpenFile  WINELIB_NAME_AW(FtpOpenFile)
+
+BOOLAPI FtpCreateDirectoryA(HINTERNET ,LPCSTR);
+BOOLAPI FtpCreateDirectoryW(HINTERNET ,LPCWSTR);
+#define FtpCreateDirectory  WINELIB_NAME_AW(FtpCreateDirectory)
+
+BOOLAPI FtpRemoveDirectoryA(HINTERNET ,LPCSTR);
+BOOLAPI FtpRemoveDirectoryW(HINTERNET ,LPCWSTR);
+#define FtpRemoveDirectory  WINELIB_NAME_AW(FtpRemoveDirectory)
+
+BOOLAPI FtpSetCurrentDirectoryA(HINTERNET ,LPCSTR);
+BOOLAPI FtpSetCurrentDirectoryW(HINTERNET ,LPCWSTR);
+#define FtpSetCurrentDirectory  WINELIB_NAME_AW(FtpSetCurrentDirectory)
+
+BOOLAPI FtpGetCurrentDirectoryA(HINTERNET ,LPSTR ,LPDWORD);
+BOOLAPI FtpGetCurrentDirectoryW(HINTERNET ,LPWSTR ,LPDWORD);
+#define FtpGetCurrentDirectory  WINELIB_NAME_AW(FtpGetCurrentDirectory)
+
+#define MAX_GOPHER_DISPLAY_TEXT     128
+#define MAX_GOPHER_SELECTOR_TEXT    256
+#define MAX_GOPHER_HOST_NAME        INTERNET_MAX_HOST_NAME_LENGTH
+#define MAX_GOPHER_LOCATOR_LENGTH   (1                                  \
+                                    + MAX_GOPHER_DISPLAY_TEXT           \
+                                    + 1                                 \
+                                    + MAX_GOPHER_SELECTOR_TEXT          \
+                                    + 1                                 \
+                                    + MAX_GOPHER_HOST_NAME              \
+                                    + 1                                 \
+                                    + INTERNET_MAX_PORT_NUMBER_LENGTH   \
+                                    + 1                                 \
+                                    + 1                                 \
+                                    + 2                                 \
+                                    )
+
+
+typedef struct {
+    CHAR   DisplayString[MAX_GOPHER_DISPLAY_TEXT + 1];
+    DWORD GopherType;
+    DWORD SizeLow;
+    DWORD SizeHigh;
+    FILETIME LastModificationTime;
+    CHAR   Locator[MAX_GOPHER_LOCATOR_LENGTH + 1];
+} GOPHER_FIND_DATAA,* LPGOPHER_FIND_DATAA;
+
+typedef struct {
+    WCHAR  DisplayString[MAX_GOPHER_DISPLAY_TEXT + 1];
+    DWORD GopherType;
+    DWORD SizeLow;
+    DWORD SizeHigh;
+    FILETIME LastModificationTime;
+    WCHAR  Locator[MAX_GOPHER_LOCATOR_LENGTH + 1];
+} GOPHER_FIND_DATAW,* LPGOPHER_FIND_DATAW;
+
+DECL_WINELIB_TYPE_AW(GOPHER_FIND_DATA)
+DECL_WINELIB_TYPE_AW(LPGOPHER_FIND_DATA)
+
+#define GOPHER_TYPE_TEXT_FILE       0x00000001
+#define GOPHER_TYPE_DIRECTORY       0x00000002
+#define GOPHER_TYPE_CSO             0x00000004
+#define GOPHER_TYPE_ERROR           0x00000008
+#define GOPHER_TYPE_MAC_BINHEX      0x00000010
+#define GOPHER_TYPE_DOS_ARCHIVE     0x00000020
+#define GOPHER_TYPE_UNIX_UUENCODED  0x00000040
+#define GOPHER_TYPE_INDEX_SERVER    0x00000080
+#define GOPHER_TYPE_TELNET          0x00000100
+#define GOPHER_TYPE_BINARY          0x00000200
+#define GOPHER_TYPE_REDUNDANT       0x00000400
+#define GOPHER_TYPE_TN3270          0x00000800
+#define GOPHER_TYPE_GIF             0x00001000
+#define GOPHER_TYPE_IMAGE           0x00002000
+#define GOPHER_TYPE_BITMAP          0x00004000
+#define GOPHER_TYPE_MOVIE           0x00008000
+#define GOPHER_TYPE_SOUND           0x00010000
+#define GOPHER_TYPE_HTML            0x00020000
+#define GOPHER_TYPE_PDF             0x00040000
+#define GOPHER_TYPE_CALENDAR        0x00080000
+#define GOPHER_TYPE_INLINE          0x00100000
+#define GOPHER_TYPE_UNKNOWN         0x20000000
+#define GOPHER_TYPE_ASK             0x40000000
+#define GOPHER_TYPE_GOPHER_PLUS     0x80000000
+
+#define IS_GOPHER_FILE(type)            (BOOL)(((type) & GOPHER_TYPE_FILE_MASK) ? TRUE : FALSE)
+#define IS_GOPHER_DIRECTORY(type)       (BOOL)(((type) & GOPHER_TYPE_DIRECTORY) ? TRUE : FALSE)
+#define IS_GOPHER_PHONE_SERVER(type)    (BOOL)(((type) & GOPHER_TYPE_CSO) ? TRUE : FALSE)
+#define IS_GOPHER_ERROR(type)           (BOOL)(((type) & GOPHER_TYPE_ERROR) ? TRUE : FALSE)
+#define IS_GOPHER_INDEX_SERVER(type)    (BOOL)(((type) & GOPHER_TYPE_INDEX_SERVER) ? TRUE : FALSE)
+#define IS_GOPHER_TELNET_SESSION(type)  (BOOL)(((type) & GOPHER_TYPE_TELNET) ? TRUE : FALSE)
+#define IS_GOPHER_BACKUP_SERVER(type)   (BOOL)(((type) & GOPHER_TYPE_REDUNDANT) ? TRUE : FALSE)
+#define IS_GOPHER_TN3270_SESSION(type)  (BOOL)(((type) & GOPHER_TYPE_TN3270) ? TRUE : FALSE)
+#define IS_GOPHER_ASK(type)             (BOOL)(((type) & GOPHER_TYPE_ASK) ? TRUE : FALSE)
+#define IS_GOPHER_PLUS(type)            (BOOL)(((type) & GOPHER_TYPE_GOPHER_PLUS) ? TRUE : FALSE)
+#define IS_GOPHER_TYPE_KNOWN(type)      (BOOL)(((type) & GOPHER_TYPE_UNKNOWN) ? FALSE : TRUE)
+#define GOPHER_TYPE_FILE_MASK       (GOPHER_TYPE_TEXT_FILE \
+                                    | GOPHER_TYPE_MAC_BINHEX        \
+                                    | GOPHER_TYPE_DOS_ARCHIVE       \
+                                    | GOPHER_TYPE_UNIX_UUENCODED    \
+                                    | GOPHER_TYPE_BINARY            \
+                                    | GOPHER_TYPE_GIF               \
+                                    | GOPHER_TYPE_IMAGE             \
+                                    | GOPHER_TYPE_BITMAP            \
+                                    | GOPHER_TYPE_MOVIE             \
+                                    | GOPHER_TYPE_SOUND             \
+                                    | GOPHER_TYPE_HTML              \
+                                    | GOPHER_TYPE_PDF               \
+                                    | GOPHER_TYPE_CALENDAR          \
+                                    | GOPHER_TYPE_INLINE            \
+                                    )
+
+
+typedef struct {
+    LPCSTR Comment;
+    LPCSTR EmailAddress;
+} GOPHER_ADMIN_ATTRIBUTE_TYPEA,* LPGOPHER_ADMIN_ATTRIBUTE_TYPEA;
+
+typedef struct {
+    LPCWSTR Comment;
+    LPCWSTR EmailAddress;
+} GOPHER_ADMIN_ATTRIBUTE_TYPEW,* LPGOPHER_ADMIN_ATTRIBUTE_TYPEW;
+
+DECL_WINELIB_TYPE_AW(GOPHER_ADMIN_ATTRIBUTE_TYPE)
+DECL_WINELIB_TYPE_AW(LPGOPHER_ADMIN_ATTRIBUTE_TYPE)
+
+typedef struct {
+    FILETIME DateAndTime;
+} GOPHER_MOD_DATE_ATTRIBUTE_TYPE,* LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE;
+
+typedef struct {
+    DWORD Ttl;
+} GOPHER_TTL_ATTRIBUTE_TYPE,* LPGOPHER_TTL_ATTRIBUTE_TYPE;
+
+typedef struct {
+    INT Score;
+} GOPHER_SCORE_ATTRIBUTE_TYPE,* LPGOPHER_SCORE_ATTRIBUTE_TYPE;
+
+typedef struct {
+    INT LowerBound;
+    INT UpperBound;
+} GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE,* LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE;
+
+typedef struct {
+    LPCSTR Site;
+} GOPHER_SITE_ATTRIBUTE_TYPEA,* LPGOPHER_SITE_ATTRIBUTE_TYPEA;
+
+typedef struct {
+    LPCWSTR Site;
+} GOPHER_SITE_ATTRIBUTE_TYPEW,* LPGOPHER_SITE_ATTRIBUTE_TYPEW;
+
+DECL_WINELIB_TYPE_AW(GOPHER_SITE_ATTRIBUTE_TYPE)
+DECL_WINELIB_TYPE_AW(LPGOPHER_SITE_ATTRIBUTE_TYPE)
+
+typedef struct {
+    LPCSTR Organization;
+} GOPHER_ORGANIZATION_ATTRIBUTE_TYPEA,* LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEA;
+
+typedef struct {
+    LPCWSTR Organization;
+} GOPHER_ORGANIZATION_ATTRIBUTE_TYPEW,* LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEW;
+
+DECL_WINELIB_TYPE_AW(GOPHER_ORGANIZATION_ATTRIBUTE_TYPE)
+DECL_WINELIB_TYPE_AW(LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPE)
+
+typedef struct {
+    LPCSTR Location;
+} GOPHER_LOCATION_ATTRIBUTE_TYPEA,* LPGOPHER_LOCATION_ATTRIBUTE_TYPEA;
+
+typedef struct {
+    LPCWSTR Location;
+} GOPHER_LOCATION_ATTRIBUTE_TYPEW,* LPGOPHER_LOCATION_ATTRIBUTE_TYPEW;
+
+DECL_WINELIB_TYPE_AW(GOPHER_LOCATION_ATTRIBUTE_TYPE)
+DECL_WINELIB_TYPE_AW(LPGOPHER_LOCATION_ATTRIBUTE_TYPE)
+
+typedef struct {
+    INT DegreesNorth;
+    INT MinutesNorth;
+    INT SecondsNorth;
+    INT DegreesEast;
+    INT MinutesEast;
+    INT SecondsEast;
+} GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE,* LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE;
+
+typedef struct {
+    INT Zone;
+} GOPHER_TIMEZONE_ATTRIBUTE_TYPE,* LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE;
+
+typedef struct {
+    LPCSTR Provider;
+} GOPHER_PROVIDER_ATTRIBUTE_TYPEA,* LPGOPHER_PROVIDER_ATTRIBUTE_TYPEA;
+
+typedef struct {
+    LPCWSTR Provider;
+} GOPHER_PROVIDER_ATTRIBUTE_TYPEW,* LPGOPHER_PROVIDER_ATTRIBUTE_TYPEW;
+
+DECL_WINELIB_TYPE_AW(GOPHER_PROVIDER_ATTRIBUTE_TYPE)
+DECL_WINELIB_TYPE_AW(LPGOPHER_PROVIDER_ATTRIBUTE_TYPE)
+
+typedef struct {
+    LPCSTR Version;
+} GOPHER_VERSION_ATTRIBUTE_TYPEA,* LPGOPHER_VERSION_ATTRIBUTE_TYPEA;
+
+typedef struct {
+    LPCWSTR Version;
+} GOPHER_VERSION_ATTRIBUTE_TYPEW,* LPGOPHER_VERSION_ATTRIBUTE_TYPEW;
+
+DECL_WINELIB_TYPE_AW(GOPHER_VERSION_ATTRIBUTE_TYPE)
+DECL_WINELIB_TYPE_AW(LPGOPHER_VERSION_ATTRIBUTE_TYPE)
+
+typedef struct {
+    LPCSTR ShortAbstract;
+    LPCSTR AbstractFile;
+} GOPHER_ABSTRACT_ATTRIBUTE_TYPEA,* LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEA;
+
+typedef struct {
+    LPCWSTR ShortAbstract;
+    LPCWSTR AbstractFile;
+} GOPHER_ABSTRACT_ATTRIBUTE_TYPEW,* LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEW;
+
+DECL_WINELIB_TYPE_AW(GOPHER_ABSTRACT_ATTRIBUTE_TYPE)
+DECL_WINELIB_TYPE_AW(LPGOPHER_ABSTRACT_ATTRIBUTE_TYPE)
+
+typedef struct {
+    LPCSTR ContentType;
+    LPCSTR Language;
+    DWORD Size;
+} GOPHER_VIEW_ATTRIBUTE_TYPEA,* LPGOPHER_VIEW_ATTRIBUTE_TYPEA;
+
+typedef struct {
+    LPCWSTR ContentType;
+    LPCWSTR Language;
+    DWORD Size;
+} GOPHER_VIEW_ATTRIBUTE_TYPEW,* LPGOPHER_VIEW_ATTRIBUTE_TYPEW;
+
+DECL_WINELIB_TYPE_AW(GOPHER_VIEW_ATTRIBUTE_TYPE)
+DECL_WINELIB_TYPE_AW(LPGOPHER_VIEW_ATTRIBUTE_TYPE)
+
+typedef struct {
+    BOOL TreeWalk;
+} GOPHER_VERONICA_ATTRIBUTE_TYPE,* LPGOPHER_VERONICA_ATTRIBUTE_TYPE;
+
+typedef struct {
+    LPCSTR QuestionType;
+    LPCSTR QuestionText;
+} GOPHER_ASK_ATTRIBUTE_TYPEA,* LPGOPHER_ASK_ATTRIBUTE_TYPEA;
+
+typedef struct {
+    LPCWSTR QuestionType;
+    LPCWSTR QuestionText;
+} GOPHER_ASK_ATTRIBUTE_TYPEW,* LPGOPHER_ASK_ATTRIBUTE_TYPEW;
+
+DECL_WINELIB_TYPE_AW(GOPHER_ASK_ATTRIBUTE_TYPE)
+DECL_WINELIB_TYPE_AW(LPGOPHER_ASK_ATTRIBUTE_TYPE)
+
+typedef struct {
+    LPCSTR Text;
+} GOPHER_UNKNOWN_ATTRIBUTE_TYPEA,* LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEA;
+
+typedef struct {
+    LPCWSTR Text;
+} GOPHER_UNKNOWN_ATTRIBUTE_TYPEW,* LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEW;
+
+DECL_WINELIB_TYPE_AW(GOPHER_UNKNOWN_ATTRIBUTE_TYPE)
+DECL_WINELIB_TYPE_AW(LPGOPHER_UNKNOWN_ATTRIBUTE_TYPE)
+
+typedef struct {
+    DWORD CategoryId;
+    DWORD AttributeId;
+    union {
+        GOPHER_ADMIN_ATTRIBUTE_TYPEA Admin;
+        GOPHER_MOD_DATE_ATTRIBUTE_TYPE ModDate;
+        GOPHER_TTL_ATTRIBUTE_TYPE Ttl;
+        GOPHER_SCORE_ATTRIBUTE_TYPE Score;
+        GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE ScoreRange;
+        GOPHER_SITE_ATTRIBUTE_TYPEA Site;
+        GOPHER_ORGANIZATION_ATTRIBUTE_TYPEA Organization;
+        GOPHER_LOCATION_ATTRIBUTE_TYPEA Location;
+        GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE GeographicalLocation;
+        GOPHER_TIMEZONE_ATTRIBUTE_TYPE TimeZone;
+        GOPHER_PROVIDER_ATTRIBUTE_TYPEA Provider;
+        GOPHER_VERSION_ATTRIBUTE_TYPEA Version;
+        GOPHER_ABSTRACT_ATTRIBUTE_TYPEA Abstract;
+        GOPHER_VIEW_ATTRIBUTE_TYPEA View;
+        GOPHER_VERONICA_ATTRIBUTE_TYPE Veronica;
+        GOPHER_ASK_ATTRIBUTE_TYPEA Ask;
+        GOPHER_UNKNOWN_ATTRIBUTE_TYPEA Unknown;
+    } AttributeType;
+} GOPHER_ATTRIBUTE_TYPEA, *LPGOPHER_ATTRIBUTE_TYPEA;
+
+typedef struct {
+    DWORD CategoryId;
+    DWORD AttributeId;
+    union {
+        GOPHER_ADMIN_ATTRIBUTE_TYPEW Admin;
+        GOPHER_MOD_DATE_ATTRIBUTE_TYPE ModDate;
+        GOPHER_TTL_ATTRIBUTE_TYPE Ttl;
+        GOPHER_SCORE_ATTRIBUTE_TYPE Score;
+        GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE ScoreRange;
+        GOPHER_SITE_ATTRIBUTE_TYPEW Site;
+        GOPHER_ORGANIZATION_ATTRIBUTE_TYPEW Organization;
+        GOPHER_LOCATION_ATTRIBUTE_TYPEW Location;
+        GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE GeographicalLocation;
+        GOPHER_TIMEZONE_ATTRIBUTE_TYPE TimeZone;
+        GOPHER_PROVIDER_ATTRIBUTE_TYPEW Provider;
+        GOPHER_VERSION_ATTRIBUTE_TYPEW Version;
+        GOPHER_ABSTRACT_ATTRIBUTE_TYPEW Abstract;
+        GOPHER_VIEW_ATTRIBUTE_TYPEW View;
+        GOPHER_VERONICA_ATTRIBUTE_TYPE Veronica;
+        GOPHER_ASK_ATTRIBUTE_TYPEW Ask;
+        GOPHER_UNKNOWN_ATTRIBUTE_TYPEW Unknown;
+    } AttributeType;
+} GOPHER_ATTRIBUTE_TYPEW, *LPGOPHER_ATTRIBUTE_TYPEW;
+
+DECL_WINELIB_TYPE_AW(GOPHER_ATTRIBUTE_TYPE)
+DECL_WINELIB_TYPE_AW(LPGOPHER_ATTRIBUTE_TYPE)
+
+#define MAX_GOPHER_CATEGORY_NAME    128
+#define MAX_GOPHER_ATTRIBUTE_NAME   128
+#define MIN_GOPHER_ATTRIBUTE_LENGTH 256
+
+#define GOPHER_INFO_CATEGORY        TEXT("+INFO")
+#define GOPHER_ADMIN_CATEGORY       TEXT("+ADMIN")
+#define GOPHER_VIEWS_CATEGORY       TEXT("+VIEWS")
+#define GOPHER_ABSTRACT_CATEGORY    TEXT("+ABSTRACT")
+#define GOPHER_VERONICA_CATEGORY    TEXT("+VERONICA")
+#define GOPHER_ADMIN_ATTRIBUTE      TEXT("Admin")
+#define GOPHER_MOD_DATE_ATTRIBUTE   TEXT("Mod-Date")
+#define GOPHER_TTL_ATTRIBUTE        TEXT("TTL")
+#define GOPHER_SCORE_ATTRIBUTE      TEXT("Score")
+#define GOPHER_RANGE_ATTRIBUTE      TEXT("Score-range")
+#define GOPHER_SITE_ATTRIBUTE       TEXT("Site")
+#define GOPHER_ORG_ATTRIBUTE        TEXT("Org")
+#define GOPHER_LOCATION_ATTRIBUTE   TEXT("Loc")
+#define GOPHER_GEOG_ATTRIBUTE       TEXT("Geog")
+#define GOPHER_TIMEZONE_ATTRIBUTE   TEXT("TZ")
+#define GOPHER_PROVIDER_ATTRIBUTE   TEXT("Provider")
+#define GOPHER_VERSION_ATTRIBUTE    TEXT("Version")
+#define GOPHER_ABSTRACT_ATTRIBUTE   TEXT("Abstract")
+#define GOPHER_VIEW_ATTRIBUTE       TEXT("View")
+#define GOPHER_TREEWALK_ATTRIBUTE   TEXT("treewalk")
+
+#define GOPHER_ATTRIBUTE_ID_BASE        0xabcccc00
+
+#define GOPHER_CATEGORY_ID_ALL          (GOPHER_ATTRIBUTE_ID_BASE + 1)
+#define GOPHER_CATEGORY_ID_INFO         (GOPHER_ATTRIBUTE_ID_BASE + 2)
+#define GOPHER_CATEGORY_ID_ADMIN        (GOPHER_ATTRIBUTE_ID_BASE + 3)
+#define GOPHER_CATEGORY_ID_VIEWS        (GOPHER_ATTRIBUTE_ID_BASE + 4)
+#define GOPHER_CATEGORY_ID_ABSTRACT     (GOPHER_ATTRIBUTE_ID_BASE + 5)
+#define GOPHER_CATEGORY_ID_VERONICA     (GOPHER_ATTRIBUTE_ID_BASE + 6)
+#define GOPHER_CATEGORY_ID_ASK          (GOPHER_ATTRIBUTE_ID_BASE + 7)
+#define GOPHER_CATEGORY_ID_UNKNOWN      (GOPHER_ATTRIBUTE_ID_BASE + 8)
+
+#define GOPHER_ATTRIBUTE_ID_ALL         (GOPHER_ATTRIBUTE_ID_BASE + 9)
+#define GOPHER_ATTRIBUTE_ID_ADMIN       (GOPHER_ATTRIBUTE_ID_BASE + 10)
+#define GOPHER_ATTRIBUTE_ID_MOD_DATE    (GOPHER_ATTRIBUTE_ID_BASE + 11)
+#define GOPHER_ATTRIBUTE_ID_TTL         (GOPHER_ATTRIBUTE_ID_BASE + 12)
+#define GOPHER_ATTRIBUTE_ID_SCORE       (GOPHER_ATTRIBUTE_ID_BASE + 13)
+#define GOPHER_ATTRIBUTE_ID_RANGE       (GOPHER_ATTRIBUTE_ID_BASE + 14)
+#define GOPHER_ATTRIBUTE_ID_SITE        (GOPHER_ATTRIBUTE_ID_BASE + 15)
+#define GOPHER_ATTRIBUTE_ID_ORG         (GOPHER_ATTRIBUTE_ID_BASE + 16)
+#define GOPHER_ATTRIBUTE_ID_LOCATION    (GOPHER_ATTRIBUTE_ID_BASE + 17)
+#define GOPHER_ATTRIBUTE_ID_GEOG        (GOPHER_ATTRIBUTE_ID_BASE + 18)
+#define GOPHER_ATTRIBUTE_ID_TIMEZONE    (GOPHER_ATTRIBUTE_ID_BASE + 19)
+#define GOPHER_ATTRIBUTE_ID_PROVIDER    (GOPHER_ATTRIBUTE_ID_BASE + 20)
+#define GOPHER_ATTRIBUTE_ID_VERSION     (GOPHER_ATTRIBUTE_ID_BASE + 21)
+#define GOPHER_ATTRIBUTE_ID_ABSTRACT    (GOPHER_ATTRIBUTE_ID_BASE + 22)
+#define GOPHER_ATTRIBUTE_ID_VIEW        (GOPHER_ATTRIBUTE_ID_BASE + 23)
+#define GOPHER_ATTRIBUTE_ID_TREEWALK    (GOPHER_ATTRIBUTE_ID_BASE + 24)
+#define GOPHER_ATTRIBUTE_ID_UNKNOWN     (GOPHER_ATTRIBUTE_ID_BASE + 25)
+
+BOOLAPI GopherCreateLocatorA(LPCSTR ,INTERNET_PORT ,LPCSTR ,
+	LPCSTR ,DWORD ,LPSTR ,LPDWORD);
+BOOLAPI GopherCreateLocatorW(LPCWSTR ,INTERNET_PORT ,LPCWSTR ,
+	LPCWSTR ,DWORD ,LPWSTR ,LPDWORD);
+#define GopherCreateLocator  WINELIB_NAME_AW(GopherCreateLocator)
+
+BOOLAPI GopherGetLocatorTypeA(LPCSTR ,LPDWORD);
+BOOLAPI GopherGetLocatorTypeW(LPCWSTR ,LPDWORD);
+#define GopherGetLocatorType  WINELIB_NAME_AW(GopherGetLocatorType)
+
+INTERNETAPI HINTERNET WINAPI GopherFindFirstFileA(HINTERNET ,LPCSTR ,
+	LPCSTR ,LPGOPHER_FIND_DATAA ,DWORD ,DWORD_PTR);
+INTERNETAPI HINTERNET WINAPI GopherFindFirstFileW(HINTERNET ,LPCWSTR ,
+	LPCWSTR ,LPGOPHER_FIND_DATAW ,DWORD ,DWORD_PTR);
+#define GopherFindFirstFile  WINELIB_NAME_AW(GopherFindFirstFile)
+
+INTERNETAPI HINTERNET WINAPI GopherOpenFileA(HINTERNET ,LPCSTR ,LPCSTR ,DWORD ,DWORD_PTR);
+INTERNETAPI HINTERNET WINAPI GopherOpenFileW(HINTERNET ,LPCWSTR ,LPCWSTR ,DWORD ,DWORD_PTR);
+#define GopherOpenFile  WINELIB_NAME_AW(GopherOpenFile)
+
+typedef BOOL (CALLBACK *GOPHER_ATTRIBUTE_ENUMERATORA)(LPGOPHER_ATTRIBUTE_TYPEA ,DWORD);
+typedef BOOL (CALLBACK *GOPHER_ATTRIBUTE_ENUMERATORW)(LPGOPHER_ATTRIBUTE_TYPEW ,DWORD);
+
+DECL_WINELIB_TYPE_AW(GOPHER_ATTRIBUTE_ENUMERATOR)
+
+BOOLAPI GopherGetAttributeA(HINTERNET ,LPCSTR ,LPCSTR ,LPBYTE ,
+	DWORD ,LPDWORD ,GOPHER_ATTRIBUTE_ENUMERATORA ,DWORD_PTR);
+BOOLAPI GopherGetAttributeW(HINTERNET ,LPCWSTR ,LPCWSTR ,LPBYTE ,
+	DWORD ,LPDWORD ,GOPHER_ATTRIBUTE_ENUMERATORW ,DWORD_PTR);
+#define GopherGetAttribute  WINELIB_NAME_AW(GopherGetAttribute)
+
+#define HTTP_MAJOR_VERSION      1
+#define HTTP_MINOR_VERSION      0
+#define HTTP_VERSION            TEXT("HTTP/1.0")
+#define HTTP_QUERY_MIME_VERSION                 0
+#define HTTP_QUERY_CONTENT_TYPE                 1
+#define HTTP_QUERY_CONTENT_TRANSFER_ENCODING    2
+#define HTTP_QUERY_CONTENT_ID                   3
+#define HTTP_QUERY_CONTENT_DESCRIPTION          4
+#define HTTP_QUERY_CONTENT_LENGTH               5
+#define HTTP_QUERY_CONTENT_LANGUAGE             6
+#define HTTP_QUERY_ALLOW                        7
+#define HTTP_QUERY_PUBLIC                       8
+#define HTTP_QUERY_DATE                         9
+#define HTTP_QUERY_EXPIRES                      10
+#define HTTP_QUERY_LAST_MODIFIED                11
+#define HTTP_QUERY_MESSAGE_ID                   12
+#define HTTP_QUERY_URI                          13
+#define HTTP_QUERY_DERIVED_FROM                 14
+#define HTTP_QUERY_COST                         15
+#define HTTP_QUERY_LINK                         16
+#define HTTP_QUERY_PRAGMA                       17
+#define HTTP_QUERY_VERSION                      18
+#define HTTP_QUERY_STATUS_CODE                  19
+#define HTTP_QUERY_STATUS_TEXT                  20
+#define HTTP_QUERY_RAW_HEADERS                  21
+#define HTTP_QUERY_RAW_HEADERS_CRLF             22
+#define HTTP_QUERY_CONNECTION                   23
+#define HTTP_QUERY_ACCEPT                       24
+#define HTTP_QUERY_ACCEPT_CHARSET               25
+#define HTTP_QUERY_ACCEPT_ENCODING              26
+#define HTTP_QUERY_ACCEPT_LANGUAGE              27
+#define HTTP_QUERY_AUTHORIZATION                28
+#define HTTP_QUERY_CONTENT_ENCODING             29
+#define HTTP_QUERY_FORWARDED                    30
+#define HTTP_QUERY_FROM                         31
+#define HTTP_QUERY_IF_MODIFIED_SINCE            32
+#define HTTP_QUERY_LOCATION                     33
+#define HTTP_QUERY_ORIG_URI                     34
+#define HTTP_QUERY_REFERER                      35
+#define HTTP_QUERY_RETRY_AFTER                  36
+#define HTTP_QUERY_SERVER                       37
+#define HTTP_QUERY_TITLE                        38
+#define HTTP_QUERY_USER_AGENT                   39
+#define HTTP_QUERY_WWW_AUTHENTICATE             40
+#define HTTP_QUERY_PROXY_AUTHENTICATE           41
+#define HTTP_QUERY_ACCEPT_RANGES                42
+#define HTTP_QUERY_SET_COOKIE                   43
+#define HTTP_QUERY_COOKIE                       44
+#define HTTP_QUERY_REQUEST_METHOD               45
+#define HTTP_QUERY_REFRESH                      46
+#define HTTP_QUERY_CONTENT_DISPOSITION          47
+#define HTTP_QUERY_AGE                          48
+#define HTTP_QUERY_CACHE_CONTROL                49
+#define HTTP_QUERY_CONTENT_BASE                 50
+#define HTTP_QUERY_CONTENT_LOCATION             51
+#define HTTP_QUERY_CONTENT_MD5                  52
+#define HTTP_QUERY_CONTENT_RANGE                53
+#define HTTP_QUERY_ETAG                         54
+#define HTTP_QUERY_HOST                         55
+#define HTTP_QUERY_IF_MATCH                     56
+#define HTTP_QUERY_IF_NONE_MATCH                57
+#define HTTP_QUERY_IF_RANGE                     58
+#define HTTP_QUERY_IF_UNMODIFIED_SINCE          59
+#define HTTP_QUERY_MAX_FORWARDS                 60
+#define HTTP_QUERY_PROXY_AUTHORIZATION          61
+#define HTTP_QUERY_RANGE                        62
+#define HTTP_QUERY_TRANSFER_ENCODING            63
+#define HTTP_QUERY_UPGRADE                      64
+#define HTTP_QUERY_VARY                         65
+#define HTTP_QUERY_VIA                          66
+#define HTTP_QUERY_WARNING                      67
+#define HTTP_QUERY_EXPECT                       68
+#define HTTP_QUERY_PROXY_CONNECTION             69
+#define HTTP_QUERY_UNLESS_MODIFIED_SINCE        70
+#define HTTP_QUERY_ECHO_REQUEST                 71
+#define HTTP_QUERY_ECHO_REPLY                   72
+#define HTTP_QUERY_ECHO_HEADERS                 73
+#define HTTP_QUERY_ECHO_HEADERS_CRLF            74
+#define HTTP_QUERY_PROXY_SUPPORT                75
+#define HTTP_QUERY_AUTHENTICATION_INFO          76
+#define HTTP_QUERY_PASSPORT_URLS                77
+#define HTTP_QUERY_PASSPORT_CONFIG              78
+#define HTTP_QUERY_MAX                          78
+#define HTTP_QUERY_CUSTOM                       65535
+#define HTTP_QUERY_FLAG_REQUEST_HEADERS         0x80000000
+#define HTTP_QUERY_FLAG_SYSTEMTIME              0x40000000
+#define HTTP_QUERY_FLAG_NUMBER                  0x20000000
+#define HTTP_QUERY_FLAG_COALESCE                0x10000000
+#define HTTP_QUERY_MODIFIER_FLAGS_MASK          (HTTP_QUERY_FLAG_REQUEST_HEADERS \
+                                                | HTTP_QUERY_FLAG_SYSTEMTIME        \
+                                                | HTTP_QUERY_FLAG_NUMBER            \
+                                                | HTTP_QUERY_FLAG_COALESCE          \
+                                                )
+#define HTTP_QUERY_HEADER_MASK                  (~HTTP_QUERY_MODIFIER_FLAGS_MASK)
+
+#define HTTP_STATUS_CONTINUE            100
+#define HTTP_STATUS_SWITCH_PROTOCOLS    101
+#define HTTP_STATUS_OK                  200
+#define HTTP_STATUS_CREATED             201
+#define HTTP_STATUS_ACCEPTED            202
+#define HTTP_STATUS_PARTIAL             203
+#define HTTP_STATUS_NO_CONTENT          204
+#define HTTP_STATUS_RESET_CONTENT       205
+#define HTTP_STATUS_PARTIAL_CONTENT     206
+#define HTTP_STATUS_AMBIGUOUS           300
+#define HTTP_STATUS_MOVED               301
+#define HTTP_STATUS_REDIRECT            302
+#define HTTP_STATUS_REDIRECT_METHOD     303
+#define HTTP_STATUS_NOT_MODIFIED        304
+#define HTTP_STATUS_USE_PROXY           305
+#define HTTP_STATUS_REDIRECT_KEEP_VERB  307
+#define HTTP_STATUS_BAD_REQUEST         400
+#define HTTP_STATUS_DENIED              401
+#define HTTP_STATUS_PAYMENT_REQ         402
+#define HTTP_STATUS_FORBIDDEN           403
+#define HTTP_STATUS_NOT_FOUND           404
+#define HTTP_STATUS_BAD_METHOD          405
+#define HTTP_STATUS_NONE_ACCEPTABLE     406
+#define HTTP_STATUS_PROXY_AUTH_REQ      407
+#define HTTP_STATUS_REQUEST_TIMEOUT     408
+#define HTTP_STATUS_CONFLICT            409
+#define HTTP_STATUS_GONE                410
+#define HTTP_STATUS_LENGTH_REQUIRED     411
+#define HTTP_STATUS_PRECOND_FAILED      412
+#define HTTP_STATUS_REQUEST_TOO_LARGE   413
+#define HTTP_STATUS_URI_TOO_LONG        414
+#define HTTP_STATUS_UNSUPPORTED_MEDIA   415
+#define HTTP_STATUS_SERVER_ERROR        500
+#define HTTP_STATUS_NOT_SUPPORTED       501
+#define HTTP_STATUS_BAD_GATEWAY         502
+#define HTTP_STATUS_SERVICE_UNAVAIL     503
+#define HTTP_STATUS_GATEWAY_TIMEOUT     504
+#define HTTP_STATUS_VERSION_NOT_SUP     505
+#define HTTP_STATUS_FIRST               HTTP_STATUS_CONTINUE
+#define HTTP_STATUS_LAST                HTTP_STATUS_VERSION_NOT_SUP
+
+
+INTERNETAPI HINTERNET WINAPI HttpOpenRequestA(HINTERNET ,LPCSTR ,LPCSTR ,LPCSTR ,
+	LPCSTR ,LPCSTR * ,DWORD ,DWORD_PTR);
+INTERNETAPI HINTERNET WINAPI HttpOpenRequestW(HINTERNET ,LPCWSTR ,LPCWSTR ,LPCWSTR ,
+	LPCWSTR ,LPCWSTR * ,DWORD ,DWORD_PTR);
+#define HttpOpenRequest  WINELIB_NAME_AW(HttpOpenRequest)
+
+BOOLAPI HttpAddRequestHeadersA(HINTERNET ,LPCSTR ,DWORD ,DWORD);
+BOOLAPI HttpAddRequestHeadersW(HINTERNET ,LPCWSTR ,DWORD ,DWORD);
+#define HttpAddRequestHeaders  WINELIB_NAME_AW(HttpAddRequestHeaders)
+
+#define HTTP_ADDREQ_INDEX_MASK      0x0000FFFF
+#define HTTP_ADDREQ_FLAGS_MASK      0xFFFF0000
+#define HTTP_ADDREQ_FLAG_ADD_IF_NEW 0x10000000
+#define HTTP_ADDREQ_FLAG_ADD        0x20000000
+#define HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA       0x40000000
+#define HTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON   0x01000000
+#define HTTP_ADDREQ_FLAG_COALESCE                  HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA
+#define HTTP_ADDREQ_FLAG_REPLACE    0x80000000
+
+BOOLAPI HttpSendRequestA(HINTERNET ,LPCSTR ,DWORD ,LPVOID ,DWORD);
+BOOLAPI HttpSendRequestW(HINTERNET ,LPCWSTR ,DWORD ,LPVOID ,DWORD);
+#define HttpSendRequest  WINELIB_NAME_AW(HttpSendRequest)
+
+INTERNETAPI BOOL WINAPI HttpSendRequestExA(HINTERNET ,LPINTERNET_BUFFERSA ,
+	LPINTERNET_BUFFERSA ,DWORD ,DWORD_PTR);
+INTERNETAPI BOOL WINAPI HttpSendRequestExW(HINTERNET ,LPINTERNET_BUFFERSW ,
+	LPINTERNET_BUFFERSW ,DWORD ,DWORD_PTR);
+#define HttpSendRequestEx  WINELIB_NAME_AW(HttpSendRequestEx)
+
+#define HSR_ASYNC       WININET_API_FLAG_ASYNC
+#define HSR_SYNC        WININET_API_FLAG_SYNC
+#define HSR_USE_CONTEXT WININET_API_FLAG_USE_CONTEXT
+#define HSR_INITIATE    0x00000008
+#define HSR_DOWNLOAD    0x00000010
+#define HSR_CHUNKED     0x00000020
+
+INTERNETAPI BOOL WINAPI HttpEndRequestA(HINTERNET ,LPINTERNET_BUFFERSA ,DWORD ,DWORD_PTR);
+INTERNETAPI BOOL WINAPI HttpEndRequestW(HINTERNET ,LPINTERNET_BUFFERSW ,DWORD ,DWORD_PTR);
+#define HttpEndRequest  WINELIB_NAME_AW(HttpEndRequest)
+
+BOOLAPI HttpQueryInfoA(HINTERNET ,DWORD ,LPVOID ,LPDWORD ,LPDWORD);
+BOOLAPI HttpQueryInfoW(HINTERNET ,DWORD ,LPVOID ,LPDWORD ,LPDWORD);
+#define HttpQueryInfo  WINELIB_NAME_AW(HttpQueryInfo)
+
+BOOLAPI InternetClearAllPerSiteCookieDecisions(VOID);
+
+BOOLAPI InternetEnumPerSiteCookieDecisionA(LPSTR,ULONG *,ULONG *,ULONG);
+BOOLAPI InternetEnumPerSiteCookieDecisionW(LPWSTR,ULONG *,ULONG *,ULONG);
+#define InternetEnumPerSiteCookieDecision WINELIB_NAME_AW(InternetEnumPerSiteCookieDecision)
+
+#define INTERNET_COOKIE_IS_SECURE       0x00000001
+#define INTERNET_COOKIE_IS_SESSION      0x00000002
+#define INTERNET_COOKIE_THIRD_PARTY     0x00000010
+#define INTERNET_COOKIE_PROMPT_REQUIRED 0x00000020
+#define INTERNET_COOKIE_EVALUATE_P3P    0x00000040
+#define INTERNET_COOKIE_APPLY_P3P       0x00000080
+#define INTERNET_COOKIE_P3P_ENABLED     0x00000100
+#define INTERNET_COOKIE_IS_RESTRICTED   0x00000200
+#define INTERNET_COOKIE_IE6             0x00000400
+#define INTERNET_COOKIE_IS_LEGACY       0x00000800
+
+BOOLAPI InternetGetCookieExA(LPCSTR,LPCSTR,LPSTR,LPDWORD,DWORD,LPVOID);
+BOOLAPI InternetGetCookieExW(LPCWSTR,LPCWSTR,LPWSTR,LPDWORD,DWORD,LPVOID);
+#define InternetGetCookieEx WINELIB_NAME_AW(InternetGetCookieEx)
+
+DWORD WINAPI InternetSetCookieExA(LPCSTR,LPCSTR,LPCSTR,DWORD,DWORD_PTR);
+DWORD WINAPI InternetSetCookieExW(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,DWORD_PTR);
+#define InternetSetCookieEx WINELIB_NAME_AW(InternetSetCookieEx)
+
+BOOLAPI InternetGetPerSiteCookieDecisionA(LPCSTR,ULONG *);
+BOOLAPI InternetGetPerSiteCookieDecisionW(LPCWSTR,ULONG *);
+#define InternetGetPerSiteCookieDecision WINELIB_NAME_AW(InternetGetPerSiteCookieDecision)
+
+BOOLAPI InternetSetPerSiteCookieDecisionA(LPCSTR,DWORD);
+BOOLAPI InternetSetPerSiteCookieDecisionW(LPCWSTR,DWORD);
+#define InternetSetPerSiteCookieDecision WINELIB_NAME_AW(InternetSetPerSiteCookieDecision)
+
+BOOLAPI InternetSetCookieA(LPCSTR ,LPCSTR ,LPCSTR);
+BOOLAPI InternetSetCookieW(LPCWSTR ,LPCWSTR ,LPCWSTR);
+#define InternetSetCookie  WINELIB_NAME_AW(InternetSetCookie)
+
+BOOLAPI InternetGetCookieA(LPCSTR ,LPCSTR ,LPSTR ,LPDWORD);
+BOOLAPI InternetGetCookieW(LPCWSTR ,LPCWSTR ,LPWSTR ,LPDWORD);
+#define InternetGetCookie  WINELIB_NAME_AW(InternetGetCookie)
+
+INTERNETAPI DWORD WINAPI InternetAttemptConnect(DWORD);
+BOOLAPI InternetCheckConnectionA(LPCSTR ,DWORD ,DWORD);
+BOOLAPI InternetCheckConnectionW(LPCWSTR ,DWORD ,DWORD);
+#define InternetCheckConnection  WINELIB_NAME_AW(InternetCheckConnection)
+
+#define FLAG_ICC_FORCE_CONNECTION       0x00000001
+
+#define FLAGS_ERROR_UI_FILTER_FOR_ERRORS        0x01
+#define FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS     0x02
+#define FLAGS_ERROR_UI_FLAGS_GENERATE_DATA      0x04
+#define FLAGS_ERROR_UI_FLAGS_NO_UI              0x08
+#define FLAGS_ERROR_UI_SERIALIZE_DIALOGS        0x10
+
+DWORD InternetAuthNotifyCallback ( DWORD_PTR ,DWORD ,LPVOID );
+typedef DWORD (CALLBACK *PFN_AUTH_NOTIFY) (DWORD_PTR,DWORD,LPVOID);
+
+typedef struct
+{
+    DWORD            cbStruct;
+    DWORD            dwOptions;
+    PFN_AUTH_NOTIFY  pfnNotify;
+    DWORD_PTR        dwContext;
+}
+INTERNET_AUTH_NOTIFY_DATA;
+
+
+INTERNETAPI DWORD WINAPI InternetErrorDlg(HWND ,HINTERNET ,DWORD ,DWORD ,LPVOID *);
+INTERNETAPI DWORD WINAPI InternetConfirmZoneCrossingA(HWND ,LPSTR ,LPSTR ,BOOL);
+INTERNETAPI DWORD WINAPI InternetConfirmZoneCrossingW(HWND ,LPWSTR ,LPWSTR ,BOOL);
+#define InternetConfirmZoneCrossing WINELIB_NAME_AW(InternetConfirmZoneCrossing)
+
+#define INTERNET_ERROR_BASE                     12000
+
+#define ERROR_INTERNET_OUT_OF_HANDLES           (INTERNET_ERROR_BASE + 1)
+#define ERROR_INTERNET_TIMEOUT                  (INTERNET_ERROR_BASE + 2)
+#define ERROR_INTERNET_EXTENDED_ERROR           (INTERNET_ERROR_BASE + 3)
+#define ERROR_INTERNET_INTERNAL_ERROR           (INTERNET_ERROR_BASE + 4)
+#define ERROR_INTERNET_INVALID_URL              (INTERNET_ERROR_BASE + 5)
+#define ERROR_INTERNET_UNRECOGNIZED_SCHEME      (INTERNET_ERROR_BASE + 6)
+#define ERROR_INTERNET_NAME_NOT_RESOLVED        (INTERNET_ERROR_BASE + 7)
+#define ERROR_INTERNET_PROTOCOL_NOT_FOUND       (INTERNET_ERROR_BASE + 8)
+#define ERROR_INTERNET_INVALID_OPTION           (INTERNET_ERROR_BASE + 9)
+#define ERROR_INTERNET_BAD_OPTION_LENGTH        (INTERNET_ERROR_BASE + 10)
+#define ERROR_INTERNET_OPTION_NOT_SETTABLE      (INTERNET_ERROR_BASE + 11)
+#define ERROR_INTERNET_SHUTDOWN                 (INTERNET_ERROR_BASE + 12)
+#define ERROR_INTERNET_INCORRECT_USER_NAME      (INTERNET_ERROR_BASE + 13)
+#define ERROR_INTERNET_INCORRECT_PASSWORD       (INTERNET_ERROR_BASE + 14)
+#define ERROR_INTERNET_LOGIN_FAILURE            (INTERNET_ERROR_BASE + 15)
+#define ERROR_INTERNET_INVALID_OPERATION        (INTERNET_ERROR_BASE + 16)
+#define ERROR_INTERNET_OPERATION_CANCELLED      (INTERNET_ERROR_BASE + 17)
+#define ERROR_INTERNET_INCORRECT_HANDLE_TYPE    (INTERNET_ERROR_BASE + 18)
+#define ERROR_INTERNET_INCORRECT_HANDLE_STATE   (INTERNET_ERROR_BASE + 19)
+#define ERROR_INTERNET_NOT_PROXY_REQUEST        (INTERNET_ERROR_BASE + 20)
+#define ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND (INTERNET_ERROR_BASE + 21)
+#define ERROR_INTERNET_BAD_REGISTRY_PARAMETER   (INTERNET_ERROR_BASE + 22)
+#define ERROR_INTERNET_NO_DIRECT_ACCESS         (INTERNET_ERROR_BASE + 23)
+#define ERROR_INTERNET_NO_CONTEXT               (INTERNET_ERROR_BASE + 24)
+#define ERROR_INTERNET_NO_CALLBACK              (INTERNET_ERROR_BASE + 25)
+#define ERROR_INTERNET_REQUEST_PENDING          (INTERNET_ERROR_BASE + 26)
+#define ERROR_INTERNET_INCORRECT_FORMAT         (INTERNET_ERROR_BASE + 27)
+#define ERROR_INTERNET_ITEM_NOT_FOUND           (INTERNET_ERROR_BASE + 28)
+#define ERROR_INTERNET_CANNOT_CONNECT           (INTERNET_ERROR_BASE + 29)
+#define ERROR_INTERNET_CONNECTION_ABORTED       (INTERNET_ERROR_BASE + 30)
+#define ERROR_INTERNET_CONNECTION_RESET         (INTERNET_ERROR_BASE + 31)
+#define ERROR_INTERNET_FORCE_RETRY              (INTERNET_ERROR_BASE + 32)
+#define ERROR_INTERNET_INVALID_PROXY_REQUEST    (INTERNET_ERROR_BASE + 33)
+#define ERROR_INTERNET_NEED_UI                  (INTERNET_ERROR_BASE + 34)
+#define ERROR_INTERNET_HANDLE_EXISTS            (INTERNET_ERROR_BASE + 36)
+#define ERROR_INTERNET_SEC_CERT_DATE_INVALID    (INTERNET_ERROR_BASE + 37)
+#define ERROR_INTERNET_SEC_CERT_CN_INVALID      (INTERNET_ERROR_BASE + 38)
+#define ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR   (INTERNET_ERROR_BASE + 39)
+#define ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR   (INTERNET_ERROR_BASE + 40)
+#define ERROR_INTERNET_MIXED_SECURITY           (INTERNET_ERROR_BASE + 41)
+#define ERROR_INTERNET_CHG_POST_IS_NON_SECURE   (INTERNET_ERROR_BASE + 42)
+#define ERROR_INTERNET_POST_IS_NON_SECURE       (INTERNET_ERROR_BASE + 43)
+#define ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED  (INTERNET_ERROR_BASE + 44)
+#define ERROR_INTERNET_INVALID_CA               (INTERNET_ERROR_BASE + 45)
+#define ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP    (INTERNET_ERROR_BASE + 46)
+#define ERROR_INTERNET_ASYNC_THREAD_FAILED      (INTERNET_ERROR_BASE + 47)
+#define ERROR_INTERNET_REDIRECT_SCHEME_CHANGE   (INTERNET_ERROR_BASE + 48)
+#define ERROR_INTERNET_DIALOG_PENDING           (INTERNET_ERROR_BASE + 49)
+#define ERROR_INTERNET_RETRY_DIALOG             (INTERNET_ERROR_BASE + 50)
+#define ERROR_INTERNET_HTTPS_HTTP_SUBMIT_REDIR  (INTERNET_ERROR_BASE + 52)
+#define ERROR_INTERNET_INSERT_CDROM             (INTERNET_ERROR_BASE + 53)
+#define ERROR_INTERNET_SEC_CERT_ERRORS          (INTERNET_ERROR_BASE + 55)
+#define ERROR_INTERNET_SEC_CERT_NO_REV          (INTERNET_ERROR_BASE + 56)
+#define ERROR_INTERNET_SEC_CERT_REV_FAILED      (INTERNET_ERROR_BASE + 57)
+#define ERROR_FTP_TRANSFER_IN_PROGRESS          (INTERNET_ERROR_BASE + 110)
+#define ERROR_FTP_DROPPED                       (INTERNET_ERROR_BASE + 111)
+#define ERROR_FTP_NO_PASSIVE_MODE               (INTERNET_ERROR_BASE + 112)
+#define ERROR_GOPHER_PROTOCOL_ERROR             (INTERNET_ERROR_BASE + 130)
+#define ERROR_GOPHER_NOT_FILE                   (INTERNET_ERROR_BASE + 131)
+#define ERROR_GOPHER_DATA_ERROR                 (INTERNET_ERROR_BASE + 132)
+#define ERROR_GOPHER_END_OF_DATA                (INTERNET_ERROR_BASE + 133)
+#define ERROR_GOPHER_INVALID_LOCATOR            (INTERNET_ERROR_BASE + 134)
+#define ERROR_GOPHER_INCORRECT_LOCATOR_TYPE     (INTERNET_ERROR_BASE + 135)
+#define ERROR_GOPHER_NOT_GOPHER_PLUS            (INTERNET_ERROR_BASE + 136)
+#define ERROR_GOPHER_ATTRIBUTE_NOT_FOUND        (INTERNET_ERROR_BASE + 137)
+#define ERROR_GOPHER_UNKNOWN_LOCATOR            (INTERNET_ERROR_BASE + 138)
+#define ERROR_HTTP_HEADER_NOT_FOUND             (INTERNET_ERROR_BASE + 150)
+#define ERROR_HTTP_DOWNLEVEL_SERVER             (INTERNET_ERROR_BASE + 151)
+#define ERROR_HTTP_INVALID_SERVER_RESPONSE      (INTERNET_ERROR_BASE + 152)
+#define ERROR_HTTP_INVALID_HEADER               (INTERNET_ERROR_BASE + 153)
+#define ERROR_HTTP_INVALID_QUERY_REQUEST        (INTERNET_ERROR_BASE + 154)
+#define ERROR_HTTP_HEADER_ALREADY_EXISTS        (INTERNET_ERROR_BASE + 155)
+#define ERROR_HTTP_REDIRECT_FAILED              (INTERNET_ERROR_BASE + 156)
+#define ERROR_HTTP_NOT_REDIRECTED               (INTERNET_ERROR_BASE + 160)
+#define ERROR_HTTP_COOKIE_NEEDS_CONFIRMATION    (INTERNET_ERROR_BASE + 161)
+#define ERROR_HTTP_COOKIE_DECLINED              (INTERNET_ERROR_BASE + 162)
+#define ERROR_HTTP_REDIRECT_NEEDS_CONFIRMATION  (INTERNET_ERROR_BASE + 168)
+#define ERROR_INTERNET_SECURITY_CHANNEL_ERROR   (INTERNET_ERROR_BASE + 157)
+#define ERROR_INTERNET_UNABLE_TO_CACHE_FILE     (INTERNET_ERROR_BASE + 158)
+#define ERROR_INTERNET_TCPIP_NOT_INSTALLED      (INTERNET_ERROR_BASE + 159)
+#define ERROR_INTERNET_DISCONNECTED             (INTERNET_ERROR_BASE + 163)
+#define ERROR_INTERNET_SERVER_UNREACHABLE       (INTERNET_ERROR_BASE + 164)
+#define ERROR_INTERNET_PROXY_SERVER_UNREACHABLE (INTERNET_ERROR_BASE + 165)
+#define ERROR_INTERNET_BAD_AUTO_PROXY_SCRIPT    (INTERNET_ERROR_BASE + 166)
+#define ERROR_INTERNET_UNABLE_TO_DOWNLOAD_SCRIPT (INTERNET_ERROR_BASE + 167)
+#define ERROR_INTERNET_SEC_INVALID_CERT    (INTERNET_ERROR_BASE + 169)
+#define ERROR_INTERNET_SEC_CERT_REVOKED    (INTERNET_ERROR_BASE + 170)
+#define ERROR_INTERNET_FAILED_DUETOSECURITYCHECK  (INTERNET_ERROR_BASE + 171)
+#define ERROR_INTERNET_NOT_INITIALIZED            (INTERNET_ERROR_BASE + 172)
+#define INTERNET_ERROR_LAST                       ERROR_INTERNET_NOT_INITIALIZED
+
+
+#define NORMAL_CACHE_ENTRY              0x00000001
+#define STICKY_CACHE_ENTRY              0x00000004
+#define EDITED_CACHE_ENTRY              0x00000008
+#define COOKIE_CACHE_ENTRY              0x00100000
+#define URLHISTORY_CACHE_ENTRY          0x00200000
+#define TRACK_OFFLINE_CACHE_ENTRY       0x00000010
+#define TRACK_ONLINE_CACHE_ENTRY        0x00000020
+#define SPARSE_CACHE_ENTRY              0x00010000
+
+#define URLCACHE_FIND_DEFAULT_FILTER    NORMAL_CACHE_ENTRY             \
+                                    |   COOKIE_CACHE_ENTRY             \
+                                    |   URLHISTORY_CACHE_ENTRY         \
+                                    |   TRACK_OFFLINE_CACHE_ENTRY      \
+                                    |   TRACK_ONLINE_CACHE_ENTRY       \
+                                    |   STICKY_CACHE_ENTRY
+
+
+typedef struct _INTERNET_CACHE_ENTRY_INFOA {
+    DWORD dwStructSize;
+    LPSTR lpszSourceUrlName;
+    LPSTR   lpszLocalFileName;
+    DWORD CacheEntryType;
+    DWORD dwUseCount;
+    DWORD dwHitRate;
+    DWORD dwSizeLow;
+    DWORD dwSizeHigh;
+    FILETIME LastModifiedTime;
+    FILETIME ExpireTime;
+    FILETIME LastAccessTime;
+    FILETIME LastSyncTime;
+
+    LPBYTE lpHeaderInfo;
+    DWORD dwHeaderInfoSize;
+    LPSTR lpszFileExtension;
+    union {
+      DWORD dwReserved;
+      DWORD dwExemptDelta;
+    } DUMMYUNIONNAME;
+} INTERNET_CACHE_ENTRY_INFOA,* LPINTERNET_CACHE_ENTRY_INFOA;
+
+typedef struct _INTERNET_CACHE_ENTRY_INFOW {
+    DWORD dwStructSize;
+    LPWSTR lpszSourceUrlName;
+    LPWSTR  lpszLocalFileName;
+    DWORD CacheEntryType;
+    DWORD dwUseCount;
+    DWORD dwHitRate;
+    DWORD dwSizeLow;
+    DWORD dwSizeHigh;
+    FILETIME LastModifiedTime;
+    FILETIME ExpireTime;
+    FILETIME LastAccessTime;
+    FILETIME LastSyncTime;
+
+    LPBYTE lpHeaderInfo;
+    DWORD dwHeaderInfoSize;
+    LPWSTR  lpszFileExtension;
+    union {
+      DWORD dwReserved;
+      DWORD dwExemptDelta;
+    } DUMMYUNIONNAME;
+} INTERNET_CACHE_ENTRY_INFOW,* LPINTERNET_CACHE_ENTRY_INFOW;
+
+DECL_WINELIB_TYPE_AW(INTERNET_CACHE_ENTRY_INFO)
+DECL_WINELIB_TYPE_AW(LPINTERNET_CACHE_ENTRY_INFO)
+
+BOOLAPI CreateUrlCacheEntryA(LPCSTR ,DWORD ,LPCSTR ,LPSTR ,DWORD);
+BOOLAPI CreateUrlCacheEntryW(LPCWSTR ,DWORD ,LPCWSTR ,LPWSTR ,DWORD);
+#define CreateUrlCacheEntry  WINELIB_NAME_AW(CreateUrlCacheEntry)
+
+BOOLAPI CommitUrlCacheEntryA(LPCSTR,LPCSTR,FILETIME,FILETIME,DWORD,LPBYTE,DWORD,LPCSTR,LPCSTR);
+BOOLAPI CommitUrlCacheEntryW(LPCWSTR,LPCWSTR,FILETIME,FILETIME,DWORD,LPWSTR,DWORD,LPCWSTR,LPCWSTR);
+#define CommitUrlCacheEntry  WINELIB_NAME_AW(CommitUrlCacheEntry)
+
+BOOLAPI ResumeSuspendedDownload(HINTERNET, DWORD);
+
+BOOLAPI RetrieveUrlCacheEntryFileA(LPCSTR ,LPINTERNET_CACHE_ENTRY_INFOA ,LPDWORD ,DWORD);
+BOOLAPI RetrieveUrlCacheEntryFileW(LPCWSTR ,LPINTERNET_CACHE_ENTRY_INFOW ,LPDWORD ,DWORD);
+#define RetrieveUrlCacheEntryFile  WINELIB_NAME_AW(RetrieveUrlCacheEntryFile)
+
+BOOLAPI UnlockUrlCacheEntryFileA(LPCSTR ,DWORD);
+BOOLAPI UnlockUrlCacheEntryFileW(LPCWSTR ,DWORD);
+#define UnlockUrlCacheEntryFile  WINELIB_NAME_AW(UnlockUrlCacheEntryFile)
+
+INTERNETAPI HANDLE WINAPI RetrieveUrlCacheEntryStreamA(LPCSTR ,
+	LPINTERNET_CACHE_ENTRY_INFOA , LPDWORD ,BOOL ,DWORD);
+INTERNETAPI HANDLE WINAPI RetrieveUrlCacheEntryStreamW(LPCWSTR ,LPINTERNET_CACHE_ENTRY_INFOW ,
+	LPDWORD ,BOOL ,DWORD);
+#define RetrieveUrlCacheEntryStream  WINELIB_NAME_AW(RetrieveUrlCacheEntryStream)
+
+BOOLAPI ReadUrlCacheEntryStream( HANDLE ,DWORD ,LPVOID ,LPDWORD ,DWORD );
+BOOLAPI UnlockUrlCacheEntryStream( HANDLE ,DWORD );
+BOOLAPI GetUrlCacheEntryInfoA(LPCSTR ,LPINTERNET_CACHE_ENTRY_INFOA ,LPDWORD);
+BOOLAPI GetUrlCacheEntryInfoW(LPCWSTR ,LPINTERNET_CACHE_ENTRY_INFOW ,LPDWORD);
+#define GetUrlCacheEntryInfo  WINELIB_NAME_AW(GetUrlCacheEntryInfo)
+
+BOOLAPI GetUrlCacheEntryInfoExA(
+    LPCSTR ,LPINTERNET_CACHE_ENTRY_INFOA ,LPDWORD ,LPSTR ,LPDWORD ,LPVOID ,DWORD);
+BOOLAPI GetUrlCacheEntryInfoExW(
+    LPCWSTR ,LPINTERNET_CACHE_ENTRY_INFOW ,LPDWORD ,LPWSTR ,LPDWORD ,LPVOID ,DWORD);
+#define GetUrlCacheEntryInfoEx  WINELIB_NAME_AW(GetUrlCacheEntryInfoEx)
+
+#define CACHE_ENTRY_ATTRIBUTE_FC    0x00000004
+#define CACHE_ENTRY_HITRATE_FC      0x00000010
+#define CACHE_ENTRY_MODTIME_FC      0x00000040
+#define CACHE_ENTRY_EXPTIME_FC      0x00000080
+#define CACHE_ENTRY_ACCTIME_FC      0x00000100
+#define CACHE_ENTRY_SYNCTIME_FC     0x00000200
+#define CACHE_ENTRY_HEADERINFO_FC   0x00000400
+#define CACHE_ENTRY_EXEMPT_DELTA_FC 0x00000800
+
+
+BOOLAPI SetUrlCacheEntryInfoA(LPCSTR ,LPINTERNET_CACHE_ENTRY_INFOA ,DWORD);
+BOOLAPI SetUrlCacheEntryInfoW(LPCWSTR ,LPINTERNET_CACHE_ENTRY_INFOW ,DWORD);
+#define SetUrlCacheEntryInfo  WINELIB_NAME_AW(SetUrlCacheEntryInfo)
+
+typedef LONGLONG GROUPID;
+
+INTERNETAPI GROUPID WINAPI CreateUrlCacheGroup(DWORD,LPVOID);
+BOOLAPI DeleteUrlCacheGroup(GROUPID ,DWORD ,LPVOID);
+
+INTERNETAPI HANDLE WINAPI FindFirstUrlCacheGroup(DWORD,DWORD,LPVOID,DWORD,GROUPID*,LPVOID);
+BOOLAPI FindNextUrlCacheGroup(HANDLE,GROUPID*,LPVOID);
+
+BOOLAPI GetUrlCacheGroupAttributeA(GROUPID,DWORD,DWORD,LPINTERNET_CACHE_GROUP_INFOA,LPDWORD,LPVOID);
+BOOLAPI GetUrlCacheGroupAttributeW(GROUPID,DWORD,DWORD,LPINTERNET_CACHE_GROUP_INFOW,LPDWORD,LPVOID);
+#define GetUrlCacheGroupAttribute  WINELIB_NAME_AW(GetUrlCacheGroupAttribute)
+
+#define INTERNET_CACHE_GROUP_ADD      0
+#define INTERNET_CACHE_GROUP_REMOVE   1
+
+BOOLAPI SetUrlCacheEntryGroupA(LPCSTR,DWORD,GROUPID,LPBYTE,DWORD,LPVOID);
+BOOLAPI SetUrlCacheEntryGroupW(LPCWSTR,DWORD,GROUPID,LPBYTE,DWORD,LPVOID);
+#define SetUrlCacheEntryGroup  WINELIB_NAME_AW(SetUrlCacheEntryGroup)
+
+BOOLAPI SetUrlCacheGroupAttributeA(GROUPID,DWORD,DWORD,LPINTERNET_CACHE_GROUP_INFOA,LPVOID);
+BOOLAPI SetUrlCacheGroupAttributeW(GROUPID,DWORD,DWORD,LPINTERNET_CACHE_GROUP_INFOW,LPVOID);
+#define SetUrlCacheGroupAttribute  WINELIB_NAME_AW(SetUrlCacheGroupAttribute)
+
+INTERNETAPI HANDLE WINAPI FindFirstUrlCacheEntryExA(
+    LPCSTR ,DWORD ,DWORD ,GROUPID ,LPINTERNET_CACHE_ENTRY_INFOA ,LPDWORD ,LPVOID ,LPDWORD ,LPVOID );
+INTERNETAPI HANDLE WINAPI FindFirstUrlCacheEntryExW(
+    LPCWSTR ,DWORD ,DWORD ,GROUPID ,LPINTERNET_CACHE_ENTRY_INFOW ,LPDWORD ,LPVOID ,LPDWORD ,LPVOID );
+#define FindFirstUrlCacheEntryEx  WINELIB_NAME_AW(FindFirstUrlCacheEntryEx)
+
+BOOLAPI FindNextUrlCacheEntryExA(HANDLE ,LPINTERNET_CACHE_ENTRY_INFOA ,LPDWORD ,LPVOID ,LPDWORD ,LPVOID);
+BOOLAPI FindNextUrlCacheEntryExW(HANDLE ,LPINTERNET_CACHE_ENTRY_INFOW ,LPDWORD ,LPVOID ,LPDWORD ,LPVOID);
+#define FindNextUrlCacheEntryEx  WINELIB_NAME_AW(FindNextUrlCacheEntryEx)
+
+INTERNETAPI HANDLE WINAPI FindFirstUrlCacheEntryA(LPCSTR ,LPINTERNET_CACHE_ENTRY_INFOA ,LPDWORD);
+INTERNETAPI HANDLE WINAPI FindFirstUrlCacheEntryW(LPCWSTR ,LPINTERNET_CACHE_ENTRY_INFOW ,LPDWORD);
+#define FindFirstUrlCacheEntry  WINELIB_NAME_AW(FindFirstUrlCacheEntry)
+
+BOOLAPI FindNextUrlCacheEntryA(HANDLE ,LPINTERNET_CACHE_ENTRY_INFOA ,LPDWORD);
+BOOLAPI FindNextUrlCacheEntryW(HANDLE ,LPINTERNET_CACHE_ENTRY_INFOW ,LPDWORD);
+#define FindNextUrlCacheEntry  WINELIB_NAME_AW(FindNextUrlCacheEntry)
+
+BOOLAPI FindCloseUrlCache(HANDLE);
+
+BOOLAPI DeleteUrlCacheEntryA(LPCSTR);
+BOOLAPI DeleteUrlCacheEntryW(LPCWSTR);
+#define DeleteUrlCacheEntry  WINELIB_NAME_AW(DeleteUrlCacheEntry)
+
+INTERNETAPI DWORD WINAPI InternetDialA(HWND ,LPSTR ,DWORD ,DWORD_PTR* ,DWORD);
+INTERNETAPI DWORD WINAPI InternetDialW(HWND ,LPWSTR ,DWORD ,DWORD_PTR* ,DWORD);
+#define InternetDial WINELIB_NAME_AW(InternetDial)
+
+
+#define INTERNET_DIAL_UNATTENDED       0x8000
+
+INTERNETAPI DWORD WINAPI InternetHangUp(DWORD_PTR ,DWORD);
+BOOLAPI CreateMD5SSOHash(PWSTR,PWSTR,PWSTR,PBYTE);
+
+#define INTERENT_GOONLINE_REFRESH 0x00000001
+#define INTERENT_GOONLINE_MASK 0x00000001
+INTERNETAPI BOOL WINAPI InternetGoOnlineA(LPSTR ,HWND ,DWORD);
+INTERNETAPI BOOL WINAPI InternetGoOnlineW(LPWSTR ,HWND ,DWORD);
+#define InternetGoOnline  WINELIB_NAME_AW(InternetGoOnline)
+INTERNETAPI BOOL WINAPI InternetAutodial(DWORD,HWND);
+
+#define INTERNET_AUTODIAL_FORCE_ONLINE          1
+#define INTERNET_AUTODIAL_FORCE_UNATTENDED      2
+#define INTERNET_AUTODIAL_FAILIFSECURITYCHECK   4
+
+#define INTERNET_AUTODIAL_FLAGS_MASK (INTERNET_AUTODIAL_FORCE_ONLINE | INTERNET_AUTODIAL_FORCE_UNATTENDED | INTERNET_AUTODIAL_FAILIFSECURITYCHECK)
+INTERNETAPI BOOL WINAPI InternetAutodialHangup(DWORD);
+INTERNETAPI BOOL WINAPI InternetGetConnectedState(LPDWORD ,DWORD);
+
+#define INTERNET_CONNECTION_MODEM           1
+#define INTERNET_CONNECTION_LAN             2
+#define INTERNET_CONNECTION_PROXY           4
+#define INTERNET_CONNECTION_MODEM_BUSY      8
+
+typedef DWORD (CALLBACK *PFN_DIAL_HANDLER) (HWND,LPCSTR,DWORD,LPDWORD);
+
+#define INTERNET_CUSTOMDIAL_CONNECT         0
+#define INTERNET_CUSTOMDIAL_UNATTENDED      1
+#define INTERNET_CUSTOMDIAL_DISCONNECT      2
+#define INTERNET_CUSTOMDIAL_SHOWOFFLINE     4
+#define INTERNET_CUSTOMDIAL_SAFE_FOR_UNATTENDED 1
+#define INTERNET_CUSTOMDIAL_WILL_SUPPLY_STATE   2
+#define INTERNET_CUSTOMDIAL_CAN_HANGUP          4
+
+INTERNETAPI BOOL WINAPI InternetSetDialStateA(LPCSTR ,DWORD ,DWORD);
+INTERNETAPI BOOL WINAPI InternetSetDialStateW(LPCWSTR ,DWORD ,DWORD);
+#define InternetSetDialState WINELIB_NAME_AW(InternetSetDialState)
+#define INTERNET_DIALSTATE_DISCONNECTED     1
+
+BOOL WINAPI InternetGetConnectedStateExA(LPDWORD, LPSTR, DWORD, DWORD);
+BOOL WINAPI InternetGetConnectedStateExW(LPDWORD, LPWSTR, DWORD, DWORD);
+#define InternetGetConnectedStateEx WINELIB_NAME_AW(InternetGetConnectedStateEx)
+
+BOOL WINAPI InternetInitializeAutoProxyDll(DWORD);
+BOOL WINAPI DetectAutoProxyUrl(LPSTR, DWORD, DWORD);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winineti.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winineti.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winineti.h	(revision 16410)
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2007 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _WINE_WININETI_H_
+#define _WINE_WININETI_H_
+
+/* FIXME: #include <iedial.h> */
+#include <schannel.h>
+
+typedef struct _INTERNET_CACHE_CONFIG_PATH_ENTRYA
+{
+    CHAR CachePath[MAX_PATH];
+    DWORD dwCacheSize;
+} INTERNET_CACHE_CONFIG_PATH_ENTRYA, *LPINTERNET_CACHE_CONFIG_PATH_ENTRYA;
+
+typedef struct _INTERNET_CACHE_CONFIG_PATH_ENTRYW
+{
+    WCHAR CachePath[MAX_PATH];
+    DWORD dwCacheSize;
+} INTERNET_CACHE_CONFIG_PATH_ENTRYW, *LPINTERNET_CACHE_CONFIG_PATH_ENTRYW;
+
+DECL_WINELIB_TYPE_AW(INTERNET_CACHE_CONFIG_PATH_ENTRY)
+DECL_WINELIB_TYPE_AW(LPINTERNET_CACHE_CONFIG_PATH_ENTRY)
+
+typedef struct _INTERNET_CACHE_CONFIG_INFOA
+{
+    DWORD dwStructSize;
+    DWORD dwContainer;
+    DWORD dwQuota;
+    DWORD dwReserved4;
+    BOOL fPerUser;
+    DWORD dwSyncMode;
+    DWORD dwNumCachePaths;
+    union
+    {
+        struct
+        {
+            CHAR CachePath[MAX_PATH];
+            DWORD dwCacheSize;
+        } DUMMYSTRUCTNAME;
+        INTERNET_CACHE_CONFIG_PATH_ENTRYA CachePaths[ANYSIZE_ARRAY];
+    } DUMYUNIONNAME;
+    DWORD dwNormalUsage;
+    DWORD dwExemptUsage;
+} INTERNET_CACHE_CONFIG_INFOA, *LPINTERNET_CACHE_CONFIG_INFOA;
+
+typedef struct _INTERNET_CACHE_CONFIG_INFOW
+{
+    DWORD dwStructSize;
+    DWORD dwContainer;
+    DWORD dwQuota;
+    DWORD dwReserved4;
+    BOOL  fPerUser;
+    DWORD dwSyncMode;
+    DWORD dwNumCachePaths;
+    union
+    {
+        struct
+        {
+            WCHAR CachePath[MAX_PATH];
+            DWORD dwCacheSize;
+        } DUMMYSTRUCTNAME;
+        INTERNET_CACHE_CONFIG_PATH_ENTRYW CachePaths[ANYSIZE_ARRAY];
+    } ;
+    DWORD dwNormalUsage;
+    DWORD dwExemptUsage;
+} INTERNET_CACHE_CONFIG_INFOW, *LPINTERNET_CACHE_CONFIG_INFOW;
+
+DECL_WINELIB_TYPE_AW(INTERNET_CACHE_CONFIG_INFO)
+DECL_WINELIB_TYPE_AW(LPINTERNET_CACHE_CONFIG_INFO)
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+DWORD       WINAPI DeleteIE3Cache(HWND,HINSTANCE,LPSTR,int);
+BOOL        WINAPI GetUrlCacheConfigInfoA(LPINTERNET_CACHE_CONFIG_INFOA,LPDWORD,DWORD);
+BOOL        WINAPI GetUrlCacheConfigInfoW(LPINTERNET_CACHE_CONFIG_INFOW,LPDWORD,DWORD);
+#define     GetUrlCacheConfigInfo WINELIB_NAME_AW(GetUrlCacheConfigInfo)
+BOOL        WINAPI InternetQueryFortezzaStatus(DWORD*,DWORD_PTR);
+BOOL        WINAPI IsUrlCacheEntryExpiredA(LPCSTR,DWORD,FILETIME*);
+BOOL        WINAPI IsUrlCacheEntryExpiredW(LPCWSTR,DWORD,FILETIME*);
+#define     IsUrlCacheEntryExpired WINELIB_NAME_AW(IsUrlCacheEntryExpired)
+BOOL        WINAPI SetUrlCacheConfigInfoA(LPINTERNET_CACHE_CONFIG_INFOA,DWORD);
+BOOL        WINAPI SetUrlCacheConfigInfoW(LPINTERNET_CACHE_CONFIG_INFOW,DWORD);
+#define     SetUrlCacheConfigInfo WINELIB_NAME_AW(SetUrlCacheConfigInfo)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _WINE_WININETI_H_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winioctl.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winioctl.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winioctl.h	(revision 16410)
@@ -0,0 +1,491 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINIOCTL_H
+#define __WINE_WINIOCTL_H
+
+#define CTL_CODE( DeviceType, Function, Method, Access ) (                 \
+    (DWORD)((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \
+)
+
+#define DEVICE_TYPE DWORD
+
+#define FILE_DEVICE_BEEP                0x00000001
+#define FILE_DEVICE_CD_ROM              0x00000002
+#define FILE_DEVICE_CD_ROM_FILE_SYSTEM  0x00000003
+#define FILE_DEVICE_CONTROLLER          0x00000004
+#define FILE_DEVICE_DATALINK            0x00000005
+#define FILE_DEVICE_DFS                 0x00000006
+#define FILE_DEVICE_DISK                0x00000007
+#define FILE_DEVICE_DISK_FILE_SYSTEM    0x00000008
+#define FILE_DEVICE_FILE_SYSTEM         0x00000009
+#define FILE_DEVICE_INPORT_PORT         0x0000000a
+#define FILE_DEVICE_KEYBOARD            0x0000000b
+#define FILE_DEVICE_MAILSLOT            0x0000000c
+#define FILE_DEVICE_MIDI_IN             0x0000000d
+#define FILE_DEVICE_MIDI_OUT            0x0000000e
+#define FILE_DEVICE_MOUSE               0x0000000f
+#define FILE_DEVICE_MULTI_UNC_PROVIDER  0x00000010
+#define FILE_DEVICE_NAMED_PIPE          0x00000011
+#define FILE_DEVICE_NETWORK             0x00000012
+#define FILE_DEVICE_NETWORK_BROWSER     0x00000013
+#define FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014
+#define FILE_DEVICE_NULL                0x00000015
+#define FILE_DEVICE_PARALLEL_PORT       0x00000016
+#define FILE_DEVICE_PHYSICAL_NETCARD    0x00000017
+#define FILE_DEVICE_PRINTER             0x00000018
+#define FILE_DEVICE_SCANNER             0x00000019
+#define FILE_DEVICE_SERIAL_MOUSE_PORT   0x0000001a
+#define FILE_DEVICE_SERIAL_PORT         0x0000001b
+#define FILE_DEVICE_SCREEN              0x0000001c
+#define FILE_DEVICE_SOUND               0x0000001d
+#define FILE_DEVICE_STREAMS             0x0000001e
+#define FILE_DEVICE_TAPE                0x0000001f
+#define FILE_DEVICE_TAPE_FILE_SYSTEM    0x00000020
+#define FILE_DEVICE_TRANSPORT           0x00000021
+#define FILE_DEVICE_UNKNOWN             0x00000022
+#define FILE_DEVICE_VIDEO               0x00000023
+#define FILE_DEVICE_VIRTUAL_DISK        0x00000024
+#define FILE_DEVICE_WAVE_IN             0x00000025
+#define FILE_DEVICE_WAVE_OUT            0x00000026
+#define FILE_DEVICE_8042_PORT           0x00000027
+#define FILE_DEVICE_NETWORK_REDIRECTOR  0x00000028
+#define FILE_DEVICE_BATTERY             0x00000029
+#define FILE_DEVICE_BUS_EXTENDER        0x0000002a
+#define FILE_DEVICE_MODEM               0x0000002b
+#define FILE_DEVICE_VDM                 0x0000002c
+#define FILE_DEVICE_MASS_STORAGE        0x0000002d
+#define FILE_DEVICE_SMB                 0x0000002e
+#define FILE_DEVICE_KS                  0x0000002f
+#define FILE_DEVICE_CHANGER             0x00000030
+#define FILE_DEVICE_SMARTCARD           0x00000031
+#define FILE_DEVICE_ACPI                0x00000032
+#define FILE_DEVICE_DVD                 0x00000033
+#define FILE_DEVICE_FULLSCREEN_VIDEO    0x00000034
+#define FILE_DEVICE_DFS_FILE_SYSTEM     0x00000035
+#define FILE_DEVICE_DFS_VOLUME          0x00000036
+#define FILE_DEVICE_SERENUM             0x00000037
+#define FILE_DEVICE_TERMSRV             0x00000038
+#define FILE_DEVICE_KSEC                0x00000039
+
+#define METHOD_BUFFERED                 0
+#define METHOD_IN_DIRECT                1
+#define METHOD_OUT_DIRECT               2
+#define METHOD_NEITHER                  3
+
+#define FILE_ANY_ACCESS                 0
+#define FILE_SPECIAL_ACCESS             0
+#define FILE_READ_ACCESS                FILE_READ_DATA  /* file & pipe */
+#define FILE_WRITE_ACCESS               FILE_WRITE_DATA /* file & pipe */
+
+#define FSCTL_REQUEST_OPLOCK_LEVEL_1             CTL_CODE(FILE_DEVICE_FILE_SYSTEM,   0, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_REQUEST_OPLOCK_LEVEL_2             CTL_CODE(FILE_DEVICE_FILE_SYSTEM,   1, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_REQUEST_BATCH_OPLOCK               CTL_CODE(FILE_DEVICE_FILE_SYSTEM,   2, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_OPLOCK_BREAK_ACKNOWLEDGE           CTL_CODE(FILE_DEVICE_FILE_SYSTEM,   3, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_OPBATCH_ACK_CLOSE_PENDING          CTL_CODE(FILE_DEVICE_FILE_SYSTEM,   4, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_OPLOCK_BREAK_NOTIFY                CTL_CODE(FILE_DEVICE_FILE_SYSTEM,   5, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_LOCK_VOLUME                        CTL_CODE(FILE_DEVICE_FILE_SYSTEM,   6, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_UNLOCK_VOLUME                      CTL_CODE(FILE_DEVICE_FILE_SYSTEM,   7, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DISMOUNT_VOLUME                    CTL_CODE(FILE_DEVICE_FILE_SYSTEM,   8, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_IS_VOLUME_MOUNTED                  CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  10, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_IS_PATHNAME_VALID                  CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  11, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_MARK_VOLUME_DIRTY                  CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  12, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_QUERY_RETRIEVAL_POINTERS           CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  14, METHOD_NEITHER,  FILE_ANY_ACCESS)
+#define FSCTL_GET_COMPRESSION                    CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  15, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_SET_COMPRESSION                    CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  16, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
+#define FSCTL_MARK_AS_SYSTEM_HIVE                CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  19, METHOD_NEITHER,  FILE_ANY_ACCESS)
+#define FSCTL_OPLOCK_BREAK_ACK_NO_2              CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  20, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_INVALIDATE_VOLUMES                 CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  21, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_QUERY_FAT_BPB                      CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  22, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_REQUEST_FILTER_OPLOCK              CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  23, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_FILESYSTEM_GET_STATISTICS          CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  24, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_GET_NTFS_VOLUME_DATA               CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  25, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_GET_NTFS_FILE_RECORD               CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  26, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_GET_VOLUME_BITMAP                  CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  27, METHOD_NEITHER,  FILE_ANY_ACCESS)
+#define FSCTL_GET_RETRIEVAL_POINTERS             CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  28, METHOD_NEITHER,  FILE_ANY_ACCESS)
+#define FSCTL_MOVE_FILE                          CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  29, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
+#define FSCTL_IS_VOLUME_DIRTY                    CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  30, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_GET_HFS_INFORMATION                CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  31, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_ALLOW_EXTENDED_DASD_IO             CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  32, METHOD_NEITHER,  FILE_ANY_ACCESS)
+#define FSCTL_READ_PROPERTY_DATA                 CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  33, METHOD_NEITHER,  FILE_ANY_ACCESS)
+#define FSCTL_WRITE_PROPERTY_DATA                CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  34, METHOD_NEITHER,  FILE_ANY_ACCESS)
+#define FSCTL_FIND_FILES_BY_SID                  CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  35, METHOD_NEITHER,  FILE_ANY_ACCESS)
+#define FSCTL_DUMP_PROPERTY_DATA                 CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  37, METHOD_NEITHER,  FILE_ANY_ACCESS)
+#define FSCTL_SET_OBJECT_ID                      CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  38, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
+#define FSCTL_GET_OBJECT_ID                      CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  39, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DELETE_OBJECT_ID                   CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  40, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
+#define FSCTL_SET_REPARSE_POINT                  CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  41, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
+#define FSCTL_GET_REPARSE_POINT                  CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  42, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DELETE_REPARSE_POINT               CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  43, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
+#define FSCTL_ENUM_USN_DATA                      CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  44, METHOD_NEITHER,  FILE_ANY_ACCESS)
+#define FSCTL_SECURITY_ID_CHECK                  CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  45, METHOD_NEITHER,  FILE_READ_DATA)
+#define FSCTL_READ_USN_JOURNAL                   CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  46, METHOD_NEITHER,  FILE_ANY_ACCESS)
+#define FSCTL_SET_OBJECT_ID_EXTENDED             CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  47, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
+#define FSCTL_CREATE_OR_GET_OBJECT_ID            CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  48, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_SET_SPARSE                         CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  49, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
+#define FSCTL_SET_ZERO_DATA                      CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  50, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define FSCTL_QUERY_ALLOCATED_RANGES             CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  51, METHOD_NEITHER,  FILE_READ_DATA)
+#define FSCTL_ENABLE_UPGRADE                     CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  52, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define FSCTL_SET_ENCRYPTION                     CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  53, METHOD_NEITHER,  FILE_ANY_ACCESS)
+#define FSCTL_ENCRYPTION_FSCTL_IO                CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  54, METHOD_NEITHER,  FILE_ANY_ACCESS)
+#define FSCTL_WRITE_RAW_ENCRYPTED                CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  55, METHOD_NEITHER,  FILE_SPECIAL_ACCESS)
+#define FSCTL_READ_RAW_ENCRYPTED                 CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  56, METHOD_NEITHER,  FILE_SPECIAL_ACCESS)
+#define FSCTL_CREATE_USN_JOURNAL                 CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  57, METHOD_NEITHER,  FILE_ANY_ACCESS)
+#define FSCTL_READ_FILE_USN_DATA                 CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  58, METHOD_NEITHER,  FILE_ANY_ACCESS)
+#define FSCTL_WRITE_USN_CLOSE_RECORD             CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  59, METHOD_NEITHER,  FILE_ANY_ACCESS)
+#define FSCTL_EXTEND_VOLUME                      CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  60, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_QUERY_USN_JOURNAL                  CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  61, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DELETE_USN_JOURNAL                 CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  62, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_MARK_HANDLE                        CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  63, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_SIS_COPYFILE                       CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  64, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_SIS_LINK_FILES                     CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  65, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
+#define FSCTL_HSM_MSG                            CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  66, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
+#define FSCTL_HSM_DATA                           CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  68, METHOD_NEITHER,  FILE_READ_DATA | FILE_WRITE_DATA)
+#define FSCTL_RECALL_FILE                        CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  69, METHOD_NEITHER,  FILE_ANY_ACCESS)
+#define FSCTL_READ_FROM_PLEX                     CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  71, METHOD_OUT_DIRECT,FILE_READ_DATA)
+#define FSCTL_FILE_PREFETCH                      CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  72, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
+#define FSCTL_MAKE_MEDIA_COMPATIBLE              CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  76, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define FSCTL_SET_DEFECT_MANAGEMENT              CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  77, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define FSCTL_QUERY_SPARING_INFO                 CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  78, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_QUERY_ON_DISK_VOLUME_INFO          CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  79, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_SET_VOLUME_COMPRESSION_STATE       CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  80, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
+#define FSCTL_TXFS_MODIFY_RM                     CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  81, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define FSCTL_TXFS_QUERY_RM_INFORMATION          CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  82, METHOD_BUFFERED, FILE_READ_DATA)
+#define FSCTL_TXFS_ROLLFORWARD_REDO              CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  84, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define FSCTL_TXFS_ROLLFORWARD_UNDO              CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  85, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define FSCTL_TXFS_START_RM                      CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  86, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define FSCTL_TXFS_SHUTDOWN_RM                   CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  87, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define FSCTL_TXFS_READ_BACKUP_INFORMATION       CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  88, METHOD_BUFFERED, FILE_READ_DATA)
+#define FSCTL_TXFS_WRITE_BACKUP_INFORMATION      CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  89, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define FSCTL_TXFS_CREATE_SECONDARY_RM           CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  90, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define FSCTL_TXFS_GET_METADATA_INFO             CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  91, METHOD_BUFFERED, FILE_READ_DATA)
+#define FSCTL_TXFS_GET_TRANSACTED_VERSION        CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  92, METHOD_BUFFERED, FILE_READ_DATA)
+#define FSCTL_TXFS_CREATE_MINIVERSION            CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  95, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define FSCTL_TXFS_TRANSACTION_ACTIVE            CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  99, METHOD_BUFFERED, FILE_READ_DATA)
+#define FSCTL_SET_ZERO_ON_DEALLOCATION           CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 101, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
+#define FSCTL_SET_REPAIR                         CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 102, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_GET_REPAIR                         CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 103, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_WAIT_FOR_REPAIR                    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 104, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_INITIATE_REPAIR                    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 106, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_CSC_INTERNAL                       CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 107, METHOD_NEITHER,  FILE_ANY_ACCESS)
+#define FSCTL_SHRINK_VOLUME                      CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 108, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
+#define FSCTL_SET_SHORT_NAME_BEHAVIOR            CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 109, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFSR_SET_GHOST_HANDLE_STATE        CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 110, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_TXFS_LIST_TRANSACTION_LOCKED_FILES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 120, METHOD_BUFFERED, FILE_READ_DATA)
+#define FSCTL_TXFS_LIST_TRANSACTIONS             CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 121, METHOD_BUFFERED, FILE_READ_DATA)
+#define FSCTL_QUERY_PAGEFILE_ENCRYPTION          CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 122, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_PIPE_ASSIGN_EVENT         CTL_CODE(FILE_DEVICE_NAMED_PIPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_DISCONNECT           CTL_CODE(FILE_DEVICE_NAMED_PIPE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_LISTEN               CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_PEEK                 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 3, METHOD_BUFFERED, FILE_READ_DATA)
+#define FSCTL_PIPE_QUERY_EVENT          CTL_CODE(FILE_DEVICE_NAMED_PIPE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_TRANSCEIVE           CTL_CODE(FILE_DEVICE_NAMED_PIPE, 5, METHOD_NEITHER,  FILE_READ_DATA | FILE_WRITE_DATA)
+#define FSCTL_PIPE_WAIT                 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_IMPERSONATE          CTL_CODE(FILE_DEVICE_NAMED_PIPE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_SET_CLIENT_PROCESS   CTL_CODE(FILE_DEVICE_NAMED_PIPE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_QUERY_CLIENT_PROCESS CTL_CODE(FILE_DEVICE_NAMED_PIPE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_INTERNAL_READ        CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2045, METHOD_BUFFERED, FILE_READ_DATA)
+#define FSCTL_PIPE_INTERNAL_WRITE       CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2046, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define FSCTL_PIPE_INTERNAL_TRANSCEIVE  CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2047, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
+#define FSCTL_PIPE_INTERNAL_READ_OVFLOW CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2048, METHOD_BUFFERED, FILE_READ_DATA)
+
+#define IOCTL_STORAGE_BASE FILE_DEVICE_MASS_STORAGE
+#define IOCTL_STORAGE_CHECK_VERIFY       CTL_CODE(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_CHECK_VERIFY2      CTL_CODE(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_STORAGE_MEDIA_REMOVAL      CTL_CODE(IOCTL_STORAGE_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_EJECT_MEDIA        CTL_CODE(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_LOAD_MEDIA         CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_LOAD_MEDIA2        CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_STORAGE_RESERVE            CTL_CODE(IOCTL_STORAGE_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_RELEASE            CTL_CODE(IOCTL_STORAGE_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_FIND_NEW_DEVICES   CTL_CODE(IOCTL_STORAGE_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_EJECTION_CONTROL   CTL_CODE(IOCTL_STORAGE_BASE, 0x0250, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_STORAGE_MCN_CONTROL        CTL_CODE(IOCTL_STORAGE_BASE, 0x0251, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_STORAGE_GET_MEDIA_TYPES         CTL_CODE(IOCTL_STORAGE_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_STORAGE_GET_MEDIA_TYPES_EX      CTL_CODE(IOCTL_STORAGE_BASE, 0x0301, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER CTL_CODE(IOCTL_STORAGE_BASE, 0x0304, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_STORAGE_GET_HOTPLUG_INFO        CTL_CODE(IOCTL_STORAGE_BASE, 0x0305, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_STORAGE_SET_HOTPLUG_INFO        CTL_CODE(IOCTL_STORAGE_BASE, 0x0306, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_STORAGE_RESET_BUS          CTL_CODE(IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_RESET_DEVICE       CTL_CODE(IOCTL_STORAGE_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_BREAK_RESERCATION  CTL_CODE(IOCTL_STORAGE_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS);
+#define IOCTL_STORAGE_PERSISTENT_RESERVE_IN   CTL_CODE(IOCTL_STORAGE_BASE, 0x0406, METHOD_BUFFERED, FILE_READ_ACCESS);
+#define IOCTL_STORAGE_PERSISTENT_RESERVE_OUT  CTL_CODE(IOCTL_STORAGE_BASE, 0x0407, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS);
+
+#define IOCTL_STORAGE_GET_DEVICE_NUMBER  CTL_CODE(IOCTL_STORAGE_BASE, 0x0420, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_DISK_BASE                 FILE_DEVICE_DISK
+#define IOCTL_DISK_GET_DRIVE_GEOMETRY   CTL_CODE(IOCTL_DISK_BASE, 0x0000, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_GET_PARTITION_INFO   CTL_CODE(IOCTL_DISK_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_SET_PARTITION_INFO   CTL_CODE(IOCTL_DISK_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_DISK_GET_DRIVE_LAYOUT     CTL_CODE(IOCTL_DISK_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_SET_DRIVE_LAYOUT     CTL_CODE(IOCTL_DISK_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_DISK_VERIFY               CTL_CODE(IOCTL_DISK_BASE, 0x0005, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_FORMAT_TRACKS        CTL_CODE(IOCTL_DISK_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_DISK_REASSIGN_BLOCKS      CTL_CODE(IOCTL_DISK_BASE, 0x0007, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_DISK_PERFORMANCE          CTL_CODE(IOCTL_DISK_BASE, 0x0008, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_IS_WRITABLE          CTL_CODE(IOCTL_DISK_BASE, 0x0009, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_LOGGING              CTL_CODE(IOCTL_DISK_BASE, 0x000a, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_FORMAT_TRACKS_EX     CTL_CODE(IOCTL_DISK_BASE, 0x000b, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_DISK_HISTOGRAM_STRUCTURE  CTL_CODE(IOCTL_DISK_BASE, 0x000c, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_HISTOGRAM_DATA       CTL_CODE(IOCTL_DISK_BASE, 0x000d, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_HISTOGRAM_RESET      CTL_CODE(IOCTL_DISK_BASE, 0x000e, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_REQUEST_STRUCTURE    CTL_CODE(IOCTL_DISK_BASE, 0x000f, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_REQUEST_DATA         CTL_CODE(IOCTL_DISK_BASE, 0x0010, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_CHECK_VERIFY         CTL_CODE(IOCTL_DISK_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_MEDIA_REMOVAL        CTL_CODE(IOCTL_DISK_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_EJECT_MEDIA          CTL_CODE(IOCTL_DISK_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_LOAD_MEDIA           CTL_CODE(IOCTL_DISK_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_RESERVE              CTL_CODE(IOCTL_DISK_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_RELEASE              CTL_CODE(IOCTL_DISK_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_FIND_NEW_DEVICES     CTL_CODE(IOCTL_DISK_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_GET_MEDIA_TYPES      CTL_CODE(IOCTL_DISK_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+
+#define IOCTL_DISK_CONTROLLER_NUMBER    CTL_CODE(IOCTL_DISK_BASE, 0x0011, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define SMART_GET_VERSION               CTL_CODE(IOCTL_DISK_BASE, 0x0020, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define SMART_SEND_DRIVE_COMMAND        CTL_CODE(IOCTL_DISK_BASE, 0x0021, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define SMART_RCV_DRIVE_DATA            CTL_CODE(IOCTL_DISK_BASE, 0x0022, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+#define IOCTL_VOLUME_BASE ((DWORD)'V')
+#define IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS      CTL_CODE(IOCTL_VOLUME_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_SERIAL_LSRMST_INSERT      CTL_CODE(FILE_DEVICE_SERIAL_PORT,31,METHOD_BUFFERED,FILE_ANY_ACCESS)
+
+
+/* Return Codes... should these be the same as something somewhere? */
+#define PARTITION_ENTRY_UNUSED          0x00      /* Entry unused */
+#define PARTITION_FAT_12                0x01      /* 12-bit FAT entries */
+#define PARTITION_XENIX_1               0x02      /* Xenix */
+#define PARTITION_XENIX_2               0x03      /* Xenix */
+#define PARTITION_FAT_16                0x04      /* 16-bit FAT entries */
+#define PARTITION_EXTENDED              0x05      /* Extended partition entry */
+#define PARTITION_HUGE                  0x06      /* Huge partition MS-DOS V4 */
+#define PARTITION_IFS                   0x07      /* IFS Partition */
+#define PARTITION_FAT32                 0x0B      /* FAT32 */
+#define PARTITION_FAT32_XINT13          0x0C      /* FAT32 using extended int13 services */
+#define PARTITION_XINT13                0x0E      /* Win95 partition using extended int13 services */
+#define PARTITION_XINT13_EXTENDED       0x0F      /* Same as type 5 but uses extended int13 services */
+#define PARTITION_PREP                  0x41      /* PowerPC Reference Platform (PReP) Boot Partition */
+#define PARTITION_LDM                   0x42      /* Logical Disk Manager partition */
+#define PARTITION_UNIX                  0x63      /* Unix */
+
+typedef enum _MEDIA_TYPE {
+    Unknown, F5_1Pt2_512, F3_1Pt44_512, F3_2Pt88_512, F3_20Pt8_512, F3_720_512, F5_360_512,
+    F5_320_512, F5_320_1024, F5_180_512, F5_160_512, RemovableMedia, FixedMedia, F3_120M_512,
+    F3_640_512, F5_640_512, F5_720_512, F3_1Pt2_512, F3_1Pt23_1024, F5_1Pt23_1024, F3_128Mb_512,
+    F3_230Mb_512, F8_256_128
+} MEDIA_TYPE, *PMEDIA_TYPE;
+
+typedef struct _FORMAT_PARAMETERS {
+   MEDIA_TYPE           MediaType;
+   DWORD                StartCylinderNumber;
+   DWORD                EndCylinderNumber;
+   DWORD                StartHeadNumber;
+   DWORD                EndHeadNumber;
+} FORMAT_PARAMETERS, *PFORMAT_PARAMETERS;
+
+typedef WORD   BAD_TRACK_NUMBER;
+typedef WORD   *PBAD_TRACK_NUMBER;
+
+typedef struct _FORMAT_EX_PARAMETERS {
+   MEDIA_TYPE           MediaType;
+   DWORD                StartCylinderNumber;
+   DWORD                EndCylinderNumber;
+   DWORD                StartHeadNumber;
+   DWORD                EndHeadNumber;
+   WORD                 FormatGapLength;
+   WORD                 SectorsPerTrack;
+   WORD                 SectorNumber[1];
+} FORMAT_EX_PARAMETERS, *PFORMAT_EX_PARAMETERS;
+
+typedef struct _DISK_GEOMETRY {
+    LARGE_INTEGER       Cylinders;
+    MEDIA_TYPE          MediaType;
+    DWORD               TracksPerCylinder;
+    DWORD               SectorsPerTrack;
+    DWORD               BytesPerSector;
+} DISK_GEOMETRY, *PDISK_GEOMETRY;
+
+typedef struct _PARTITION_INFORMATION {
+    LARGE_INTEGER       StartingOffset;
+    LARGE_INTEGER       PartitionLength;
+    DWORD               HiddenSectors;
+    DWORD               PartitionNumber;
+    BYTE                PartitionType;
+    BOOLEAN             BootIndicator;
+    BOOLEAN             RecognizedPartition;
+    BOOLEAN             RewritePartition;
+} PARTITION_INFORMATION, *PPARTITION_INFORMATION;
+
+typedef struct _SET_PARTITION_INFORMATION {
+    BYTE                PartitionType;
+} SET_PARTITION_INFORMATION, *PSET_PARTITION_INFORMATION;
+
+typedef struct _DRIVE_LAYOUT_INFORMATION {
+    DWORD               PartitionCount;
+    DWORD               Signature;
+    PARTITION_INFORMATION PartitionEntry[1];
+} DRIVE_LAYOUT_INFORMATION, *PDRIVE_LAYOUT_INFORMATION;
+
+typedef struct _VERIFY_INFORMATION {
+    LARGE_INTEGER       StartingOffset;
+    DWORD               Length;
+} VERIFY_INFORMATION, *PVERIFY_INFORMATION;
+
+typedef struct _REASSIGN_BLOCKS {
+    WORD                Reserved;
+    WORD                Count;
+    DWORD               BlockNumber[1];
+} REASSIGN_BLOCKS, *PREASSIGN_BLOCKS;
+
+/* Start: _WIN32_WINNT >= 0x0400 */
+
+typedef struct _DISK_CONTROLLER_NUMBER {
+    DWORD               ControllerNumber;
+    DWORD               DiskNumber;
+} DISK_CONTROLLER_NUMBER, *PDISK_CONTROLLER_NUMBER;
+
+/* VOLUME_GET_VOLUME_DISK_EXTENTS */
+typedef struct _DISK_EXTENT {
+    DWORD               DiskNumber;
+    LARGE_INTEGER       StartingOffset;
+    LARGE_INTEGER       ExtentLength;
+} DISK_EXTENT;
+
+typedef struct _VOLUME_DISK_EXTENTS {
+    DWORD               NumberOfDiskExtents;
+    DISK_EXTENT         Extents[1];
+} VOLUME_DISK_EXTENTS;
+
+/* End: _WIN32_WINNT >= 0x0400 */
+
+/* Device Io Stuff - Most VxD support.
+ * NOTE: All VxD messages seem to start with a hiword or 0
+ */
+typedef struct tagDIOCRegs {
+    DWORD   reg_EBX;
+    DWORD   reg_EDX;
+    DWORD   reg_ECX;
+    DWORD   reg_EAX;
+    DWORD   reg_EDI;
+    DWORD   reg_ESI;
+    DWORD   reg_Flags;
+} DIOC_REGISTERS, *PDIOC_REGISTERS;
+
+/* Start VWIN32 information:
+ * VWIN32 is a VxD which supports the MSDOS Io routines.
+ */
+#define VWIN32_DIOC_DOS_IOCTL     1 /* This is the specified MS-DOS device I/O ctl - Interrupt 21h Function 4400h - 4411h */
+#define VWIN32_DIOC_DOS_INT25     2 /* This is the Absolute Disk Read command - Interrupt 25h */
+#define VWIN32_DIOC_DOS_INT26     3 /* This is the Absolute Disk Write command - Interrupt 25h */
+#define VWIN32_DIOC_DOS_INT13     4 /* This is Interrupt 13h commands */
+#define VWIN32_DIOC_SIMCTRLC      5 /* Simulate Ctrl-C */
+#define VWIN32_DIOC_DOS_DRIVEINFO 6 /* This is Interrupt 21h Function 730X commands */
+
+/* Important: All MS_DOS data structures must be packed on a one-byte boundary - good old 16 bit. */
+
+#include <pshpack1.h>
+typedef struct tagMID {
+    WORD  midInfoLevel;
+    DWORD midSerialNum;
+    BYTE  midVolLabel[11];
+    BYTE  midFileSysType[8];
+} MID, *PMID;
+#include <poppack.h>
+
+/* End VWIN32 information */
+
+/*
+ *	NT I/O-Manager
+ */
+
+/*
+ * structures for NtQueryVolumeInformationFile
+ * (wdm.h)
+ */
+
+/* FileFsVolumeInformation = 1 */
+typedef struct _FILE_FS_VOLUME_INFORMATION {
+	LARGE_INTEGER	VolumeCreationTime;
+	ULONG		VolumeSerialNumber;
+	ULONG		VolumeLabelLength;
+	BOOLEAN		SupportsObjects;
+	WCHAR		VolumeLabel[1];
+} FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION;
+
+/* FileFsLabelInformation = 2 */
+/*
+ unknown
+*/
+
+/* FileFsSizeInformation = 3 */
+typedef struct _FILE_FS_SIZE_INFORMATION {
+	LARGE_INTEGER	TotalAllocationUnits;
+	LARGE_INTEGER	AvailableAllocationUnits;
+	ULONG		SectorsPerAllocationUnit;
+	ULONG		BytesPerSector;
+} FILE_FS_SIZE_INFORMATION, *PFILE_FS_SIZE_INFORMATION;
+
+/* FileFsDeviceInformation = 4 */
+typedef struct _FILE_FS_DEVICE_INFORMATION {
+	DEVICE_TYPE DeviceType;
+	ULONG Characteristics;
+} FILE_FS_DEVICE_INFORMATION, *PFILE_FS_DEVICE_INFORMATION;
+
+/* FileFsAttributeInformation = 5 */
+typedef struct _FILE_FS_ATTRIBUTE_INFORMATION {
+	ULONG	FileSystemAttribute;
+	LONG	MaximumComponentNameLength;
+	ULONG	FileSystemNameLength;
+	WCHAR	FileSystemName[1];
+} FILE_FS_ATTRIBUTE_INFORMATION, *PFILE_FS_ATTRIBUTE_INFORMATION;
+
+typedef struct _FILE_PIPE_WAIT_FOR_BUFFER {
+    LARGE_INTEGER   Timeout;
+    ULONG           NameLength;
+    BOOLEAN         TimeoutSpecified;
+    WCHAR           Name[1];
+} FILE_PIPE_WAIT_FOR_BUFFER, *PFILE_PIPE_WAIT_FOR_BUFFER;
+
+typedef struct _FILE_PIPE_PEEK_BUFFER {
+    ULONG   NamedPipeState;
+    ULONG   ReadDataAvailable;
+    ULONG   NumberOfMessages;
+    ULONG   MessageLength;
+    CHAR    Data[1];
+} FILE_PIPE_PEEK_BUFFER, *PFILE_PIPE_PEEK_BUFFER;
+
+/* Device GUIDs */
+#ifdef DEFINE_GUID
+
+DEFINE_GUID(GUID_DEVINTERFACE_COMPORT, 0x86E0D1E0L, 0x8089,
+ 0x11D0, 0x9C, 0xE4, 0x08, 0x00, 0x3E, 0x30, 0x1F, 0x73);
+DEFINE_GUID(GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR, 0x4D36E978L, 0xE325,
+ 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18);
+
+/* obsolete GUID names */
+#define GUID_CLASS_COMPORT          GUID_DEVINTERFACE_COMPORT
+#define GUID_SERENUM_BUS_ENUMERATOR GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR
+
+#endif /* DEFINE_GUID */
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winldap.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winldap.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winldap.h	(revision 16410)
@@ -0,0 +1,644 @@
+/*
+ * Copyright 2005 Hans Leidekker
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINLDAP_H
+#define __WINE_WINLDAP_H
+
+#include <windef.h>
+#include <schnlsp.h>
+
+#ifndef LDAPAPI
+#define LDAPAPI __cdecl
+#endif
+
+
+typedef enum {
+    LDAP_SUCCESS                    =   0x00,
+    LDAP_OPERATIONS_ERROR           =   0x01,
+    LDAP_PROTOCOL_ERROR             =   0x02,
+    LDAP_TIMELIMIT_EXCEEDED         =   0x03,
+    LDAP_SIZELIMIT_EXCEEDED         =   0x04,
+    LDAP_COMPARE_FALSE              =   0x05,
+    LDAP_COMPARE_TRUE               =   0x06,
+    LDAP_AUTH_METHOD_NOT_SUPPORTED  =   0x07,
+    LDAP_STRONG_AUTH_REQUIRED       =   0x08,
+    LDAP_REFERRAL_V2                =   0x09,
+    LDAP_PARTIAL_RESULTS            =   0x09,
+    LDAP_REFERRAL                   =   0x0a,
+    LDAP_ADMIN_LIMIT_EXCEEDED       =   0x0b,
+    LDAP_UNAVAILABLE_CRIT_EXTENSION =   0x0c,
+    LDAP_CONFIDENTIALITY_REQUIRED   =   0x0d,
+    LDAP_SASL_BIND_IN_PROGRESS      =   0x0e,
+
+    LDAP_NO_SUCH_ATTRIBUTE          =   0x10,
+    LDAP_UNDEFINED_TYPE             =   0x11,
+    LDAP_INAPPROPRIATE_MATCHING     =   0x12,
+    LDAP_CONSTRAINT_VIOLATION       =   0x13,
+    LDAP_ATTRIBUTE_OR_VALUE_EXISTS  =   0x14,
+    LDAP_INVALID_SYNTAX             =   0x15,
+
+    LDAP_NO_SUCH_OBJECT             =   0x20,
+    LDAP_ALIAS_PROBLEM              =   0x21,
+    LDAP_INVALID_DN_SYNTAX          =   0x22,
+    LDAP_IS_LEAF                    =   0x23,
+    LDAP_ALIAS_DEREF_PROBLEM        =   0x24,
+
+    LDAP_INAPPROPRIATE_AUTH         =   0x30,
+    LDAP_INVALID_CREDENTIALS        =   0x31,
+    LDAP_INSUFFICIENT_RIGHTS        =   0x32,
+    LDAP_BUSY                       =   0x33,
+    LDAP_UNAVAILABLE                =   0x34,
+    LDAP_UNWILLING_TO_PERFORM       =   0x35,
+    LDAP_LOOP_DETECT                =   0x36,
+    LDAP_SORT_CONTROL_MISSING       =   0x3C,
+    LDAP_OFFSET_RANGE_ERROR         =   0x3D,
+
+    LDAP_NAMING_VIOLATION           =   0x40,
+    LDAP_OBJECT_CLASS_VIOLATION     =   0x41,
+    LDAP_NOT_ALLOWED_ON_NONLEAF     =   0x42,
+    LDAP_NOT_ALLOWED_ON_RDN         =   0x43,
+    LDAP_ALREADY_EXISTS             =   0x44,
+    LDAP_NO_OBJECT_CLASS_MODS       =   0x45,
+    LDAP_RESULTS_TOO_LARGE          =   0x46,
+    LDAP_AFFECTS_MULTIPLE_DSAS      =   0x47,
+
+    LDAP_VIRTUAL_LIST_VIEW_ERROR    =   0x4c,
+
+    LDAP_OTHER                      =   0x50,
+    LDAP_SERVER_DOWN                =   0x51,
+    LDAP_LOCAL_ERROR                =   0x52,
+    LDAP_ENCODING_ERROR             =   0x53,
+    LDAP_DECODING_ERROR             =   0x54,
+    LDAP_TIMEOUT                    =   0x55,
+    LDAP_AUTH_UNKNOWN               =   0x56,
+    LDAP_FILTER_ERROR               =   0x57,
+    LDAP_USER_CANCELLED             =   0x58,
+    LDAP_PARAM_ERROR                =   0x59,
+    LDAP_NO_MEMORY                  =   0x5a,
+    LDAP_CONNECT_ERROR              =   0x5b,
+    LDAP_NOT_SUPPORTED              =   0x5c,
+    LDAP_NO_RESULTS_RETURNED        =   0x5e,
+    LDAP_CONTROL_NOT_FOUND          =   0x5d,
+    LDAP_MORE_RESULTS_TO_RETURN     =   0x5f,
+
+    LDAP_CLIENT_LOOP                =   0x60,
+    LDAP_REFERRAL_LIMIT_EXCEEDED    =   0x61
+} LDAP_RETCODE;
+
+#define LDAP_SCOPE_BASE         0x00
+#define LDAP_SCOPE_ONELEVEL     0x01
+#define LDAP_SCOPE_SUBTREE      0x02
+
+typedef struct berelement
+{
+    PCHAR opaque;
+} BerElement;
+
+#define LDAP_OPT_API_INFO               0x00
+#define LDAP_OPT_DESC                   0x01
+#define LDAP_OPT_DEREF                  0x02
+#define LDAP_OPT_SIZELIMIT              0x03
+#define LDAP_OPT_TIMELIMIT              0x04
+#define LDAP_OPT_THREAD_FN_PTRS         0x05
+#define LDAP_OPT_REBIND_FN              0x06
+#define LDAP_OPT_REBIND_ARG             0x07
+#define LDAP_OPT_REFERRALS              0x08
+#define LDAP_OPT_RESTART                0x09
+#define LDAP_OPT_SSL                    0x0a
+#define LDAP_OPT_IO_FN_PTRS             0x0b
+#define LDAP_OPT_CACHE_FN_PTRS          0x0d
+#define LDAP_OPT_CACHE_STRATEGY         0x0e
+#define LDAP_OPT_CACHE_ENABLE           0x0f
+#define LDAP_OPT_REFERRAL_HOP_LIMIT     0x10
+#define LDAP_OPT_PROTOCOL_VERSION       0x11
+#define LDAP_OPT_VERSION                0x11
+#define LDAP_OPT_API_FEATURE_INFO       0x15
+#define LDAP_OPT_HOST_NAME              0x30
+#define LDAP_OPT_ERROR_NUMBER           0x31
+#define LDAP_OPT_ERROR_STRING           0x32
+#define LDAP_OPT_SERVER_ERROR           0x33
+#define LDAP_OPT_SERVER_EXT_ERROR       0x34
+#define LDAP_OPT_PING_KEEP_ALIVE        0x36
+#define LDAP_OPT_PING_WAIT_TIME         0x37
+#define LDAP_OPT_PING_LIMIT             0x38
+#define LDAP_OPT_DNSDOMAIN_NAME         0x3b
+#define LDAP_OPT_GETDSNAME_FLAGS        0x3d
+#define LDAP_OPT_HOST_REACHABLE         0x3e
+#define LDAP_OPT_PROMPT_CREDENTIALS     0x3f
+#define LDAP_OPT_TCP_KEEPALIVE          0x40
+#define LDAP_OPT_FAST_CONCURRENT_BIND   0x41
+#define LDAP_OPT_SEND_TIMEOUT           0x42
+#define LDAP_OPT_REFERRAL_CALLBACK      0x70
+#define LDAP_OPT_CLIENT_CERTIFICATE     0x80
+#define LDAP_OPT_SERVER_CERTIFICATE     0x81
+#define LDAP_OPT_AUTO_RECONNECT         0x91
+#define LDAP_OPT_SSPI_FLAGS             0x92
+#define LDAP_OPT_SSL_INFO               0x93
+#define LDAP_OPT_REF_DEREF_CONN_PER_MSG 0x94
+#define LDAP_OPT_TLS                    LDAP_OPT_SSL
+#define LDAP_OPT_TLS_INFO               LDAP_OPT_SSL_INFO
+#define LDAP_OPT_SIGN                   0x95
+#define LDAP_OPT_ENCRYPT                0x96
+#define LDAP_OPT_SASL_METHOD            0x97
+#define LDAP_OPT_AREC_EXCLUSIVE         0x98
+#define LDAP_OPT_SECURITY_CONTEXT       0x99
+#define LDAP_OPT_ROOTDSE_CACHE          0x9a
+
+#define LDAP_OPT_ON                     ((void *)1)
+#define LDAP_OPT_OFF                    ((void *)0)
+
+#define LDAP_VERSION1   1
+#define LDAP_VERSION2   2
+#define LDAP_VERSION3   3
+#define LDAP_VERSION    LDAP_VERSION2
+
+#define LDAP_MSG_ONE        0
+#define LDAP_MSG_ALL        1
+#define LDAP_MSG_RECEIVED   2
+
+#define LDAP_RES_BIND           0x61
+#define LDAP_RES_SEARCH_ENTRY   0x64
+#define LDAP_RES_SEARCH_RESULT  0x65
+#define LDAP_RES_MODIFY         0x67
+#define LDAP_RES_ADD            0x69
+#define LDAP_RES_DELETE         0x6b
+#define LDAP_RES_MODRDN         0x6d
+#define LDAP_RES_COMPARE        0x6f
+#define LDAP_RES_SESSION        0x72
+#define LDAP_RES_REFERRAL       0x73
+#define LDAP_RES_EXTENDED       0x78
+#define LDAP_RES_ANY            (-1)
+
+typedef struct ldap
+{
+    struct
+    {
+        UINT_PTR sb_sd;
+        UCHAR Reserved1[41];
+        ULONG_PTR sb_naddr;
+        UCHAR Reserved2[24];
+    } ld_sb;
+
+    PCHAR ld_host;
+    ULONG ld_version;
+    UCHAR ld_lberoptions;
+    ULONG ld_deref;
+    ULONG ld_timelimit;
+    ULONG ld_sizelimit;
+    ULONG ld_errno;
+    PCHAR ld_matched;
+    PCHAR ld_error;
+    ULONG ld_msgid;
+    UCHAR Reserved3[25];
+    ULONG ld_cldaptries;
+    ULONG ld_cldaptimeout;
+    ULONG ld_refhoplimit;
+    ULONG ld_options;
+} LDAP, *PLDAP;
+
+#define LDAP_MOD_ADD        0x00
+#define LDAP_MOD_DELETE     0x01
+#define LDAP_MOD_REPLACE    0x02
+#define LDAP_MOD_BVALUES    0x80
+
+typedef struct ldapmodA {
+    ULONG mod_op;
+    PCHAR mod_type;
+    union {
+        PCHAR *modv_strvals;
+        struct berval **modv_bvals;
+    } mod_vals;
+} LDAPModA, *PLDAPModA;
+
+typedef struct ldapmodW {
+    ULONG mod_op;
+    PWCHAR mod_type;
+    union {
+        PWCHAR *modv_strvals;
+        struct berval **modv_bvals;
+    } mod_vals;
+} LDAPModW, *PLDAPModW;
+
+DECL_WINELIB_TYPE_AW(LDAPMod)
+DECL_WINELIB_TYPE_AW(PLDAPMod)
+
+typedef struct l_timeval
+{
+    LONG tv_sec;
+    LONG tv_usec;
+} LDAP_TIMEVAL, *PLDAP_TIMEVAL;
+
+typedef struct ldapmsg
+{
+    ULONG lm_msgid;
+    ULONG lm_msgtype;
+
+    PVOID lm_ber;
+
+    struct ldapmsg *lm_chain;
+    struct ldapmsg *lm_next;
+    ULONG lm_time;
+
+    PLDAP Connection;
+    PVOID Request;
+    ULONG lm_returncode;
+    USHORT lm_referral;
+    BOOLEAN lm_chased;
+    BOOLEAN lm_eom;
+    BOOLEAN ConnectionReferenced;
+} LDAPMessage, *PLDAPMessage;
+
+#define LAPI_MAJOR_VER1     1
+#define LAPI_MINOR_VER1     1
+
+typedef struct ldap_version_info
+{
+    ULONG lv_size;
+    ULONG lv_major;
+    ULONG lv_minor;
+} LDAP_VERSION_INFO, *PLDAP_VERSION_INFO;
+
+typedef struct berval
+{
+    ULONG bv_len;
+    PCHAR bv_val;
+} LDAP_BERVAL, *PLDAP_BERVAL, BERVAL, *PBERVAL, BerValue;
+
+typedef struct ldapcontrolA
+{
+    PCHAR ldctl_oid;
+    struct berval ldctl_value;
+    BOOLEAN ldctl_iscritical;
+} LDAPControlA, *PLDAPControlA;
+
+typedef struct ldapcontrolW
+{
+    PWCHAR ldctl_oid;
+    struct berval ldctl_value;
+    BOOLEAN ldctl_iscritical;
+} LDAPControlW, *PLDAPControlW;
+
+DECL_WINELIB_TYPE_AW(LDAPControl)
+DECL_WINELIB_TYPE_AW(PLDAPControl)
+
+typedef struct ldapvlvinfo
+{
+    int ldvlv_version;
+    ULONG ldvlv_before_count;
+    ULONG ldvlv_after_count;
+    ULONG ldvlv_offset;
+    ULONG ldvlv_count;
+    PBERVAL ldvlv_attrvalue;
+    PBERVAL ldvlv_context;
+    VOID *ldvlv_extradata;
+} LDAPVLVInfo, *PLDAPVLVInfo;
+
+typedef struct ldapsearch LDAPSearch, *PLDAPSearch;
+
+typedef struct ldapsortkeyA
+{
+    PCHAR sk_attrtype;
+    PCHAR sk_matchruleoid;
+    BOOLEAN sk_reverseorder;
+} LDAPSortKeyA, *PLDAPSortKeyA;
+
+typedef struct ldapsortkeyW
+{
+    PWCHAR sk_attrtype;
+    PWCHAR sk_matchruleoid;
+    BOOLEAN sk_reverseorder;
+} LDAPSortKeyW, *PLDAPSortKeyW;
+
+DECL_WINELIB_TYPE_AW(LDAPSortKey)
+DECL_WINELIB_TYPE_AW(PLDAPSortKey)
+
+#define LDAP_API_INFO_VERSION     1
+
+typedef struct ldapapiinfoA
+{
+    int ldapai_info_version;
+    int ldapai_api_version;
+    int ldapai_protocol_version;
+    char **ldapai_extensions;
+    char *ldapai_vendor_name;
+    int ldapai_vendor_version;
+} LDAPAPIInfoA;
+
+typedef struct ldapapiinfoW
+{
+    int ldapai_info_version;
+    int ldapai_api_version;
+    int ldapai_protocol_version;
+    PWCHAR *ldapai_extensions;
+    PWCHAR ldapai_vendor_name;
+    int ldapai_vendor_version;
+} LDAPAPIInfoW;
+
+DECL_WINELIB_TYPE_AW(LDAPAPIInfo)
+
+#define LDAP_FEATURE_INFO_VERSION    1
+
+typedef struct ldap_apifeature_infoA
+{
+    int ldapaif_info_version;
+    char *ldapaif_name;
+    int ldapaif_version;
+} LDAPAPIFeatureInfoA;
+
+typedef struct ldap_apifeature_infoW
+{
+    int ldapaif_info_version;
+    PWCHAR ldapaif_name;
+    int ldapaif_version;
+} LDAPAPIFeatureInfoW;
+
+DECL_WINELIB_TYPE_AW(LDAPAPIFeatureInfo)
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LDAP * CDECL cldap_openA(PCHAR,ULONG);
+LDAP * CDECL cldap_openW(PWCHAR,ULONG);
+#define    cldap_open WINELIB_NAME_AW(cldap_open)
+ULONG CDECL ldap_abandon(LDAP*,ULONG);
+ULONG CDECL ldap_addA(LDAP*,PCHAR,LDAPModA*[]);
+ULONG CDECL ldap_addW(LDAP*,PWCHAR,LDAPModW*[]);
+#define    ldap_add WINELIB_NAME_AW(ldap_add)
+ULONG CDECL ldap_add_extA(LDAP*,PCHAR,LDAPModA*[],PLDAPControlA*,PLDAPControlA*,ULONG*);
+ULONG CDECL ldap_add_extW(LDAP*,PWCHAR,LDAPModW*[],PLDAPControlW*,PLDAPControlW*,ULONG*);
+#define    ldap_add_ext WINELIB_NAME_AW(ldap_add_ext)
+ULONG CDECL ldap_add_ext_sA(LDAP*,PCHAR,LDAPModA*[],PLDAPControlA*,PLDAPControlA*);
+ULONG CDECL ldap_add_ext_sW(LDAP*,PWCHAR,LDAPModW*[],PLDAPControlW*,PLDAPControlW*);
+#define    ldap_add_ext_s WINELIB_NAME_AW(ldap_add_ext_s)
+ULONG CDECL ldap_add_sA(LDAP*,PCHAR,LDAPModA*[]);
+ULONG CDECL ldap_add_sW(LDAP*,PWCHAR,LDAPModW*[]);
+#define    ldap_add_s WINELIB_NAME_AW(ldap_add_s)
+ULONG CDECL ldap_bindA(LDAP*,PCHAR,PCHAR,ULONG);
+ULONG CDECL ldap_bindW(LDAP*,PWCHAR,PWCHAR,ULONG);
+#define    ldap_bind WINELIB_NAME_AW(ldap_bind)
+ULONG CDECL ldap_bind_sA(LDAP*,PCHAR,PCHAR,ULONG);
+ULONG CDECL ldap_bind_sW(LDAP*,PWCHAR,PWCHAR,ULONG);
+#define    ldap_bind_s WINELIB_NAME_AW(ldap_bind_s)
+ULONG CDECL ldap_check_filterA(LDAP*,PCHAR);
+ULONG CDECL ldap_check_filterW(LDAP*,PWCHAR);
+#define    ldap_check_filter WINELIB_NAME_AW(ldap_check_filter)
+ULONG CDECL ldap_cleanup(HANDLE);
+ULONG CDECL ldap_close_extended_op(LDAP*,ULONG);
+LDAP* CDECL ldap_conn_from_msg(LDAP*,LDAPMessage*);
+ULONG CDECL ldap_compareA(LDAP*,PCHAR,PCHAR,PCHAR);
+ULONG CDECL ldap_compareW(LDAP*,PWCHAR,PWCHAR,PWCHAR);
+#define    ldap_compare WINELIB_NAME_AW(ldap_compare)
+ULONG CDECL ldap_compare_extA(LDAP*,PCHAR,PCHAR,PCHAR,struct berval*,PLDAPControlA*,PLDAPControlA*,ULONG*);
+ULONG CDECL ldap_compare_extW(LDAP*,PWCHAR,PWCHAR,PWCHAR,struct berval*,PLDAPControlW*,PLDAPControlW*,ULONG*);
+#define    ldap_compare_ext WINELIB_NAME_AW(ldap_compare_ext)
+ULONG CDECL ldap_compare_ext_sA(LDAP*,PCHAR,PCHAR,PCHAR,struct berval*,PLDAPControlA*,PLDAPControlA*);
+ULONG CDECL ldap_compare_ext_sW(LDAP*,PWCHAR,PWCHAR,PWCHAR,struct berval*,PLDAPControlW*,PLDAPControlW*);
+#define    ldap_compare_ext_s WINELIB_NAME_AW(ldap_compare_ext_s)
+ULONG CDECL ldap_compare_sA(LDAP*,PCHAR,PCHAR,PCHAR);
+ULONG CDECL ldap_compare_sW(LDAP*,PWCHAR,PWCHAR,PWCHAR);
+#define    ldap_compare_s WINELIB_NAME_AW(ldap_compare_s)
+ULONG CDECL ldap_connect(LDAP*,struct l_timeval*);
+ULONG CDECL ldap_control_freeA(LDAPControlA*);
+ULONG CDECL ldap_control_freeW(LDAPControlW*);
+#define    ldap_control_free WINELIB_NAME_AW(ldap_control_free)
+ULONG CDECL ldap_controls_freeA(LDAPControlA**);
+ULONG CDECL ldap_controls_freeW(LDAPControlW**);
+#define    ldap_controls_free WINELIB_NAME_AW(ldap_controls_free)
+ULONG CDECL ldap_count_entries(LDAP*,LDAPMessage*);
+ULONG CDECL ldap_count_references(LDAP*,LDAPMessage*);
+ULONG CDECL ldap_count_values_len(struct berval**);
+ULONG CDECL ldap_count_valuesA(PCHAR*);
+ULONG CDECL ldap_count_valuesW(PWCHAR*);
+#define    ldap_count_values WINELIB_NAME_AW(ldap_count_values)
+ULONG CDECL ldap_create_page_controlA(PLDAP,ULONG,struct berval*,UCHAR,PLDAPControlA*);
+ULONG CDECL ldap_create_page_controlW(PLDAP,ULONG,struct berval*,UCHAR,PLDAPControlW*);
+#define    ldap_create_page_control WINELIB_NAME_AW(ldap_create_page_control)
+ULONG CDECL ldap_create_sort_controlA(PLDAP,PLDAPSortKeyA*,UCHAR,PLDAPControlA*);
+ULONG CDECL ldap_create_sort_controlW(PLDAP,PLDAPSortKeyW*,UCHAR,PLDAPControlW*);
+#define    ldap_create_sort_control WINELIB_NAME_AW(ldap_create_sort_control)
+INT CDECL  ldap_create_vlv_controlA(PLDAP,PLDAPVLVInfo,UCHAR,PLDAPControlA*);
+INT CDECL  ldap_create_vlv_controlW(PLDAP,PLDAPVLVInfo,UCHAR,PLDAPControlW*);
+#define    ldap_create_vlv_control WINELIB_NAME_AW(ldap_create_vlv_control)
+ULONG CDECL ldap_deleteA(LDAP*,PCHAR);
+ULONG CDECL ldap_deleteW(LDAP*,PWCHAR);
+#define    ldap_delete WINELIB_NAME_AW(ldap_delete)
+ULONG CDECL ldap_delete_extA(LDAP*,PCHAR,PLDAPControlA*,PLDAPControlA*,ULONG*);
+ULONG CDECL ldap_delete_extW(LDAP*,PWCHAR,PLDAPControlW*,PLDAPControlW*,ULONG*);
+#define    ldap_delete_ext WINELIB_NAME_AW(ldap_delete_ext)
+ULONG CDECL ldap_delete_ext_sA(LDAP*,PCHAR,PLDAPControlA*,PLDAPControlA*);
+ULONG CDECL ldap_delete_ext_sW(LDAP*,PWCHAR,PLDAPControlW*,PLDAPControlW*);
+#define    ldap_delete_ext_s WINELIB_NAME_AW(ldap_delete_ext_s)
+ULONG CDECL ldap_delete_sA(LDAP*,PCHAR);
+ULONG CDECL ldap_delete_sW(LDAP*,PWCHAR);
+#define    ldap_delete_s WINELIB_NAME_AW(ldap_delete_s)
+PCHAR CDECL ldap_dn2ufnA(PCHAR);
+PWCHAR CDECL ldap_dn2ufnW(PWCHAR);
+#define    ldap_dn2ufn WINELIB_NAME_AW(ldap_dn2ufn)
+ULONG CDECL ldap_encode_sort_controlA(PLDAP,PLDAPSortKeyA*,PLDAPControlA,BOOLEAN);
+ULONG CDECL ldap_encode_sort_controlW(PLDAP,PLDAPSortKeyW*,PLDAPControlW,BOOLEAN);
+#define    ldap_encode_sort_control WINELIB_NAME_AW(ldap_encode_sort_control)
+PCHAR CDECL ldap_err2stringA(ULONG);
+PWCHAR CDECL ldap_err2stringW(ULONG);
+#define    ldap_err2string WINELIB_NAME_AW(ldap_err2string)
+ULONG CDECL ldap_escape_filter_elementA(PCHAR,ULONG,PCHAR,ULONG);
+ULONG CDECL ldap_escape_filter_elementW(PCHAR,ULONG,PWCHAR,ULONG);
+#define    ldap_escape_filter_element WINELIB_NAME_AW(ldap_escape_filter_element)
+PCHAR* CDECL ldap_explode_dnA(PCHAR,ULONG);
+PWCHAR* CDECL ldap_explode_dnW(PWCHAR,ULONG);
+#define    ldap_explode_dn WINELIB_NAME_AW(ldap_explode_dn)
+ULONG CDECL ldap_extended_operationA(LDAP*,PCHAR,struct berval*,PLDAPControlA*,PLDAPControlA*,ULONG*);
+ULONG CDECL ldap_extended_operationW(LDAP*,PWCHAR,struct berval*,PLDAPControlW*,PLDAPControlW*,ULONG*);
+#define    ldap_extended_operation WINELIB_NAME_AW(ldap_extended_operation)
+ULONG CDECL ldap_extended_operation_sA(LDAP*,PCHAR,struct berval*,PLDAPControlA*,PLDAPControlA*,PCHAR*,struct berval**);
+ULONG CDECL ldap_extended_operation_sW(LDAP*,PWCHAR,struct berval*,PLDAPControlW*,PLDAPControlW*,PWCHAR*,struct berval**);
+#define    ldap_extended_operation_s WINELIB_NAME_AW(ldap_extended_operation_s)
+PCHAR CDECL ldap_first_attributeA(LDAP*,LDAPMessage*,BerElement**);
+PWCHAR CDECL ldap_first_attributeW(LDAP*,LDAPMessage*,BerElement**);
+#define    ldap_first_attribute WINELIB_NAME_AW(ldap_first_attribute)
+LDAPMessage* CDECL ldap_first_entry(LDAP*,LDAPMessage*);
+LDAPMessage* CDECL ldap_first_reference(LDAP*,LDAPMessage*);
+ULONG CDECL ldap_free_controlsA(LDAPControlA**);
+ULONG CDECL ldap_free_controlsW(LDAPControlW**);
+#define    ldap_free_controls WINELIB_NAME_AW(ldap_free_controls)
+PCHAR CDECL ldap_get_dnA(LDAP*,LDAPMessage*);
+PWCHAR CDECL ldap_get_dnW(LDAP*,LDAPMessage*);
+#define    ldap_get_dn WINELIB_NAME_AW(ldap_get_dn)
+ULONG CDECL ldap_get_next_page(PLDAP,PLDAPSearch,ULONG,ULONG*);
+ULONG CDECL ldap_get_next_page_s(PLDAP,PLDAPSearch,struct l_timeval*,ULONG,ULONG*,LDAPMessage**);
+ULONG CDECL ldap_get_optionA(LDAP*,int,void*);
+ULONG CDECL ldap_get_optionW(LDAP*,int,void*);
+#define    ldap_get_option WINELIB_NAME_AW(ldap_get_option)
+ULONG CDECL ldap_get_paged_count(LDAP*,PLDAPSearch,ULONG*,LDAPMessage*);
+PCHAR* CDECL ldap_get_valuesA(LDAP*,LDAPMessage*,PCHAR);
+PWCHAR* CDECL ldap_get_valuesW(LDAP*,LDAPMessage*,PWCHAR);
+#define    ldap_get_values WINELIB_NAME_AW(ldap_get_values)
+struct berval ** CDECL ldap_get_values_lenA(LDAP*,LDAPMessage*,PCHAR);
+struct berval ** CDECL ldap_get_values_lenW(LDAP*,LDAPMessage*,PWCHAR);
+#define    ldap_get_values_len WINELIB_NAME_AW(ldap_get_values_len)
+LDAP* CDECL ldap_initA(const PCHAR,ULONG);
+LDAP* CDECL ldap_initW(const PWCHAR,ULONG);
+#define    ldap_init WINELIB_NAME_AW(ldap_init)
+VOID CDECL ldap_memfreeA(PCHAR);
+VOID CDECL ldap_memfreeW(PWCHAR);
+#define    ldap_memfree WINELIB_NAME_AW(ldap_memfree)
+ULONG CDECL ldap_modifyA(LDAP*,PCHAR,LDAPModA*[]);
+ULONG CDECL ldap_modifyW(LDAP*,PWCHAR,LDAPModW*[]);
+#define    ldap_modify WINELIB_NAME_AW(ldap_modify)
+ULONG CDECL ldap_modify_extA(LDAP*,PCHAR,LDAPModA*[],PLDAPControlA*,PLDAPControlA*,ULONG*);
+ULONG CDECL ldap_modify_extW(LDAP*,PWCHAR,LDAPModW*[],PLDAPControlW*,PLDAPControlW*,ULONG*);
+#define    ldap_modify_ext WINELIB_NAME_AW(ldap_modify_ext)
+ULONG CDECL ldap_modify_ext_sA(LDAP*,PCHAR,LDAPModA*[],PLDAPControlA*,PLDAPControlA*);
+ULONG CDECL ldap_modify_ext_sW(LDAP*,PWCHAR,LDAPModW*[],PLDAPControlW*,PLDAPControlW*);
+#define    ldap_modify_ext_s WINELIB_NAME_AW(ldap_modify_ext_s)
+ULONG CDECL ldap_modify_sA(LDAP*,PCHAR,LDAPModA*[]);
+ULONG CDECL ldap_modify_sW(LDAP*,PWCHAR,LDAPModW*[]);
+#define    ldap_modify_s WINELIB_NAME_AW(ldap_modify_s)
+ULONG CDECL ldap_modrdnA(LDAP*,PCHAR,PCHAR);
+ULONG CDECL ldap_modrdnW(LDAP*,PWCHAR,PWCHAR);
+#define    ldap_modrdn WINELIB_NAME_AW(ldap_modrdn)
+ULONG CDECL ldap_modrdn2A(LDAP*,PCHAR,PCHAR,INT);
+ULONG CDECL ldap_modrdn2W(LDAP*,PWCHAR,PWCHAR,INT);
+#define    ldap_modrdn2 WINELIB_NAME_AW(ldap_modrdn2)
+ULONG CDECL ldap_modrdn2_sA(LDAP*,PCHAR,PCHAR,INT);
+ULONG CDECL ldap_modrdn2_sW(LDAP*,PWCHAR,PWCHAR,INT);
+#define    ldap_modrdn2_s WINELIB_NAME_AW(ldap_modrdn2_s)
+ULONG CDECL ldap_modrdn_sA(LDAP*,PCHAR,PCHAR);
+ULONG CDECL ldap_modrdn_sW(LDAP*,PWCHAR,PWCHAR);
+#define    ldap_modrdn_s WINELIB_NAME_AW(ldap_modrdn_s)
+ULONG CDECL ldap_msgfree(LDAPMessage*);
+PCHAR CDECL ldap_next_attributeA(LDAP*,LDAPMessage*,BerElement*);
+PWCHAR CDECL ldap_next_attributeW(LDAP*,LDAPMessage*,BerElement*);
+#define    ldap_next_attribute WINELIB_NAME_AW(ldap_next_attribute)
+LDAPMessage * CDECL ldap_next_entry(LDAP*,LDAPMessage*);
+LDAP * CDECL ldap_openA(PCHAR,ULONG);
+LDAP * CDECL ldap_openW(PWCHAR,ULONG);
+#define    ldap_open WINELIB_NAME_AW(ldap_open)
+ULONG CDECL ldap_parse_extended_resultA(LDAP*,LDAPMessage*,PCHAR*,struct berval**,BOOLEAN);
+ULONG CDECL ldap_parse_extended_resultW(LDAP*,LDAPMessage*,PWCHAR*,struct berval**,BOOLEAN);
+#define    ldap_parse_extended_result WINELIB_NAME_AW(ldap_parse_extended_result)
+ULONG CDECL ldap_parse_page_controlA(LDAP*,PLDAPControlA*,ULONG*,struct berval**);
+ULONG CDECL ldap_parse_page_controlW(LDAP*,PLDAPControlW*,ULONG*,struct berval**);
+#define    ldap_parse_page_control WINELIB_NAME_AW(ldap_parse_page_control)
+ULONG CDECL ldap_parse_referenceA(LDAP*,LDAPMessage*,PCHAR**);
+ULONG CDECL ldap_parse_referenceW(LDAP*,LDAPMessage*,PWCHAR**);
+#define    ldap_parse_reference WINELIB_NAME_AW(ldap_parse_reference)
+ULONG CDECL ldap_result2error(LDAP*,LDAPMessage*,ULONG);
+ULONG CDECL ldap_parse_resultA(LDAP*,LDAPMessage*,ULONG*,PCHAR*,PCHAR*,PCHAR**,PLDAPControlA**,BOOLEAN);
+ULONG CDECL ldap_parse_resultW(LDAP*,LDAPMessage*,ULONG*,PWCHAR*,PWCHAR*,PWCHAR**,PLDAPControlW**,BOOLEAN);
+#define    ldap_parse_result WINELIB_NAME_AW(ldap_parse_result)
+ULONG CDECL ldap_parse_sort_controlA(LDAP*,PLDAPControlA*,ULONG*,PCHAR*);
+ULONG CDECL ldap_parse_sort_controlW(LDAP*,PLDAPControlW*,ULONG*,PWCHAR*);
+#define    ldap_parse_sort_control WINELIB_NAME_AW(ldap_parse_sort_control)
+INT CDECL ldap_parse_vlv_controlA(PLDAP,PLDAPControlA*,PULONG,PULONG,PBERVAL*,PINT);
+INT CDECL ldap_parse_vlv_controlW(PLDAP,PLDAPControlW*,PULONG,PULONG,PBERVAL*,PINT);
+#define    ldap_parse_vlv_control WINELIB_NAME_AW(ldap_parse_vlv_control)
+void CDECL ldap_perror(LDAP*,const PCHAR);
+ULONG CDECL ldap_rename_extA(LDAP*,PCHAR,PCHAR,PCHAR,INT,PLDAPControlA*,PLDAPControlA*,ULONG*);
+ULONG CDECL ldap_rename_extW(LDAP*,PWCHAR,PWCHAR,PWCHAR,INT,PLDAPControlW*,PLDAPControlW*,ULONG*);
+#define    ldap_rename_ext WINELIB_NAME_AW(ldap_rename_ext)
+ULONG CDECL ldap_rename_ext_sA(LDAP*,PCHAR,PCHAR,PCHAR,INT,PLDAPControlA*,PLDAPControlA*);
+ULONG CDECL ldap_rename_ext_sW(LDAP*,PWCHAR,PWCHAR,PWCHAR,INT,PLDAPControlW*,PLDAPControlW*);
+#define    ldap_rename_ext_s WINELIB_NAME_AW(ldap_rename_ext_s)
+ULONG CDECL ldap_result(LDAP*,ULONG,ULONG,struct l_timeval*,LDAPMessage**);
+ULONG CDECL ldap_result2error(LDAP*,LDAPMessage*,ULONG);
+ULONG CDECL ldap_sasl_bindA(LDAP*,const PCHAR,const PCHAR,const BERVAL*,PLDAPControlA*,PLDAPControlA*,int*);
+ULONG CDECL ldap_sasl_bindW(LDAP*,const PWCHAR,const PWCHAR,const BERVAL*,PLDAPControlW*,PLDAPControlW*,int*);
+#define    ldap_sasl_bind WINELIB_NAME_AW(ldap_sasl_bind)
+ULONG CDECL ldap_sasl_bind_sA(LDAP*,const PCHAR,const PCHAR,const BERVAL*,PLDAPControlA*,PLDAPControlA*,PBERVAL*);
+ULONG CDECL ldap_sasl_bind_sW(LDAP*,const PWCHAR,const PWCHAR,const BERVAL*,PLDAPControlW*,PLDAPControlW*,PBERVAL*);
+#define    ldap_sasl_bind_s WINELIB_NAME_AW(ldap_sasl_bind_s)
+ULONG CDECL ldap_simple_bindA(LDAP*,PCHAR,PCHAR);
+ULONG CDECL ldap_simple_bindW(LDAP*,PWCHAR,PWCHAR);
+#define    ldap_simple_bind WINELIB_NAME_AW(ldap_simple_bind)
+ULONG CDECL ldap_simple_bind_sA(LDAP*,PCHAR,PCHAR);
+ULONG CDECL ldap_simple_bind_sW(LDAP*,PWCHAR,PWCHAR);
+#define    ldap_simple_bind_s WINELIB_NAME_AW(ldap_simple_bind_s)
+ULONG CDECL ldap_search_abandon_page(PLDAP,PLDAPSearch);
+ULONG CDECL ldap_searchA(LDAP*,PCHAR,ULONG,PCHAR,PCHAR[],ULONG);
+ULONG CDECL ldap_searchW(LDAP*,PWCHAR,ULONG,PWCHAR,PCHAR[],ULONG);
+#define    ldap_search WINELIB_NAME_AW(ldap_search)
+ULONG CDECL ldap_search_extA(LDAP*,PCHAR,ULONG,PCHAR,PCHAR[],ULONG,PLDAPControlA*,
+    PLDAPControlA*,ULONG,ULONG,ULONG*);
+ULONG CDECL ldap_search_extW(LDAP*,PWCHAR,ULONG,PWCHAR,PWCHAR[],ULONG,PLDAPControlW*,
+    PLDAPControlW*,ULONG,ULONG,ULONG*);
+#define    ldap_search_ext WINELIB_NAME_AW(ldap_search_ext)
+ULONG CDECL ldap_search_ext_sA(LDAP*,PCHAR,ULONG,PCHAR,PCHAR[],ULONG,PLDAPControlA*,
+    PLDAPControlA*,struct l_timeval*,ULONG,LDAPMessage**);
+ULONG CDECL ldap_search_ext_sW(LDAP*,PWCHAR,ULONG,PWCHAR,PWCHAR[],ULONG,PLDAPControlW*,
+    PLDAPControlW*,struct l_timeval*,ULONG,LDAPMessage**);
+#define    ldap_search_ext_s WINELIB_NAME_AW(ldap_search_ext_s)
+PLDAPSearch CDECL ldap_search_init_pageA(PLDAP,PCHAR,ULONG,PCHAR,PCHAR[],ULONG,PLDAPControlA*,
+    PLDAPControlA*,ULONG,ULONG,PLDAPSortKeyA*);
+PLDAPSearch CDECL ldap_search_init_pageW(PLDAP,PWCHAR,ULONG,PWCHAR,PWCHAR[],ULONG,PLDAPControlW*,
+    PLDAPControlW*,ULONG,ULONG, PLDAPSortKeyW*);
+#define    ldap_search_init_page WINELIB_NAME_AW(ldap_search_init_page)
+ULONG CDECL ldap_search_sA(LDAP*,PCHAR,ULONG,PCHAR,PCHAR[],ULONG,LDAPMessage**);
+ULONG CDECL ldap_search_sW(LDAP*,PWCHAR,ULONG,PWCHAR,PWCHAR[],ULONG,LDAPMessage**);
+#define    ldap_search_s WINELIB_NAME_AW(ldap_search_s)
+ULONG CDECL ldap_search_stA(LDAP*,const PCHAR,ULONG,const PCHAR,PCHAR[],ULONG,
+    struct l_timeval*,LDAPMessage**);
+ULONG CDECL ldap_search_stW(LDAP*,const PWCHAR,ULONG,const PWCHAR,PWCHAR[],ULONG,
+    struct l_timeval*,LDAPMessage**);
+#define    ldap_search_st WINELIB_NAME_AW(ldap_search_st)
+ULONG CDECL ldap_set_optionA(LDAP*,int,void*);
+ULONG CDECL ldap_set_optionW(LDAP*,int,void*);
+#define    ldap_set_option WINELIB_NAME_AW(ldap_set_option)
+LDAP * CDECL ldap_sslinitA(PCHAR,ULONG,int);
+LDAP * CDECL ldap_sslinitW(PWCHAR,ULONG,int);
+#define    ldap_sslinit WINELIB_NAME_AW(ldap_sslinit)
+ULONG CDECL ldap_start_tls_sA(LDAP*,PULONG,LDAPMessage**,PLDAPControlA*,PLDAPControlA*);
+ULONG CDECL ldap_start_tls_sW(LDAP*,PULONG,LDAPMessage**,PLDAPControlW*,PLDAPControlW*);
+#define    ldap_start_tls_s WINELIB_NAME_AW(ldap_start_tls_s)
+ULONG CDECL ldap_startup(PLDAP_VERSION_INFO,HANDLE*);
+BOOLEAN CDECL ldap_stop_tls_s(LDAP*);
+ULONG CDECL ldap_ufn2dnA(PCHAR,PCHAR*);
+ULONG CDECL ldap_ufn2dnW(PWCHAR,PWCHAR*);
+#define    ldap_ufn2dn WINELIB_NAME_AW(ldap_ufn2dn)
+ULONG CDECL ldap_unbind(LDAP*);
+ULONG CDECL ldap_unbind_s(LDAP*);
+ULONG CDECL ldap_value_freeA(PCHAR*);
+ULONG CDECL ldap_value_freeW(PWCHAR*);
+#define    ldap_value_free WINELIB_NAME_AW(ldap_value_free)
+ULONG CDECL ldap_value_free_len(struct berval**);
+
+BerElement* CDECL ber_alloc_t(INT);
+BERVAL* CDECL ber_bvdup(BERVAL*);
+void CDECL ber_bvecfree(PBERVAL*);
+void CDECL ber_bvfree(BERVAL*);
+ULONG CDECL ber_first_element(BerElement*,ULONG*,CHAR**);
+INT CDECL ber_flatten(BerElement*,PBERVAL*);
+void CDECL ber_free(BerElement*,INT);
+BerElement* CDECL ber_init(BERVAL*);
+ULONG CDECL ber_next_element(BerElement*,ULONG*,CHAR*);
+ULONG CDECL ber_peek_tag(BerElement*,ULONG*);
+INT CDECL ber_printf(BerElement*,PCHAR,...);
+ULONG CDECL ber_skip_tag(BerElement*,ULONG*);
+INT CDECL ber_scanf(BerElement*,PCHAR,...);
+
+ULONG CDECL LdapGetLastError(void);
+ULONG CDECL LdapMapErrorToWin32(ULONG);
+int CDECL LdapUnicodeToUTF8(LPCWSTR,int,LPSTR,int);
+int CDECL LdapUTF8ToUnicode(LPCSTR,int,LPWSTR,int);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* __WINE_WINLDAP_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winnetwk.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winnetwk.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winnetwk.h	(revision 16410)
@@ -0,0 +1,412 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+
+#ifndef _WINNETWK_H_
+#define _WINNETWK_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Network types
+ */
+
+#define WNNC_NET_MSNET      0x00010000
+#define WNNC_NET_LANMAN     0x00020000
+#define WNNC_NET_NETWARE    0x00030000
+#define WNNC_NET_VINES      0x00040000
+#define WNNC_NET_10NET      0x00050000
+#define WNNC_NET_LOCUS      0x00060000
+#define WNNC_NET_SUN_PC_NFS 0x00070000
+#define WNNC_NET_LANSTEP    0x00080000
+#define WNNC_NET_9TILES     0x00090000
+#define WNNC_NET_LANTASTIC  0x000A0000
+#define WNNC_NET_AS400      0x000B0000
+#define WNNC_NET_FTP_NFS    0x000C0000
+#define WNNC_NET_PATHWORKS  0x000D0000
+#define WNNC_NET_LIFENET    0x000E0000
+#define WNNC_NET_POWERLAN   0x000F0000
+#define WNNC_NET_BWNFS      0x00100000
+#define WNNC_NET_COGENT     0x00110000
+#define WNNC_NET_FARALLON   0x00120000
+#define WNNC_NET_APPLETALK  0x00130000
+#define WNNC_NET_INTERGRAPH 0x00140000
+
+/*
+ *  Network resources
+ */
+
+#define RESOURCE_CONNECTED      0x00000001
+#define RESOURCE_GLOBALNET      0x00000002
+#define RESOURCE_REMEMBERED     0x00000003
+#define RESOURCE_RECENT         0x00000004
+#define RESOURCE_CONTEXT        0x00000005
+
+#define RESOURCETYPE_ANY        0x00000000
+#define RESOURCETYPE_DISK       0x00000001
+#define RESOURCETYPE_PRINT      0x00000002
+#define RESOURCETYPE_RESERVED   0x00000008
+#define RESOURCETYPE_UNKNOWN    0xFFFFFFFF
+
+#define RESOURCEUSAGE_CONNECTABLE   0x00000001
+#define RESOURCEUSAGE_CONTAINER     0x00000002
+#define RESOURCEUSAGE_NOLOCALDEVICE 0x00000004
+#define RESOURCEUSAGE_SIBLING       0x00000008
+#define RESOURCEUSAGE_ATTACHED      0x00000010
+#define RESOURCEUSAGE_ALL           (RESOURCEUSAGE_CONNECTABLE | RESOURCEUSAGE_CONTAINER | RESOURCEUSAGE_ATTACHED)
+#define RESOURCEUSAGE_RESERVED      0x80000000
+
+#define RESOURCEDISPLAYTYPE_GENERIC        0x00000000
+#define RESOURCEDISPLAYTYPE_DOMAIN         0x00000001
+#define RESOURCEDISPLAYTYPE_SERVER         0x00000002
+#define RESOURCEDISPLAYTYPE_SHARE          0x00000003
+#define RESOURCEDISPLAYTYPE_FILE           0x00000004
+#define RESOURCEDISPLAYTYPE_GROUP          0x00000005
+#define RESOURCEDISPLAYTYPE_NETWORK        0x00000006
+#define RESOURCEDISPLAYTYPE_ROOT           0x00000007
+#define RESOURCEDISPLAYTYPE_SHAREADMIN     0x00000008
+#define RESOURCEDISPLAYTYPE_DIRECTORY      0x00000009
+#define RESOURCEDISPLAYTYPE_TREE           0x0000000A
+
+typedef struct {
+	DWORD	dwScope;
+	DWORD	dwType;
+	DWORD	dwDisplayType;
+	DWORD	dwUsage;
+	LPSTR	lpLocalName;
+	LPSTR	lpRemoteName;
+	LPSTR	lpComment ;
+	LPSTR	lpProvider;
+} NETRESOURCEA,*LPNETRESOURCEA;
+
+typedef struct {
+	DWORD	dwScope;
+	DWORD	dwType;
+	DWORD	dwDisplayType;
+	DWORD	dwUsage;
+	LPWSTR	lpLocalName;
+	LPWSTR	lpRemoteName;
+	LPWSTR	lpComment ;
+	LPWSTR	lpProvider;
+} NETRESOURCEW,*LPNETRESOURCEW;
+
+DECL_WINELIB_TYPE_AW(NETRESOURCE)
+DECL_WINELIB_TYPE_AW(LPNETRESOURCE)
+
+
+/*
+ *  Network connections
+ */
+
+#define NETPROPERTY_PERSISTENT       1
+
+#define CONNECT_UPDATE_PROFILE      0x00000001
+#define CONNECT_UPDATE_RECENT       0x00000002
+#define CONNECT_TEMPORARY           0x00000004
+#define CONNECT_INTERACTIVE         0x00000008
+#define CONNECT_PROMPT              0x00000010
+#define CONNECT_NEED_DRIVE          0x00000020
+#define CONNECT_REFCOUNT            0x00000040
+#define CONNECT_REDIRECT            0x00000080
+#define CONNECT_LOCALDRIVE          0x00000100
+#define CONNECT_CURRENT_MEDIA       0x00000200
+
+DWORD WINAPI WNetAddConnectionA(LPCSTR,LPCSTR,LPCSTR);
+DWORD WINAPI WNetAddConnectionW(LPCWSTR,LPCWSTR,LPCWSTR);
+#define      WNetAddConnection WINELIB_NAME_AW(WNetAddConnection)
+DWORD WINAPI WNetAddConnection2A(LPNETRESOURCEA,LPCSTR,LPCSTR,DWORD);
+DWORD WINAPI WNetAddConnection2W(LPNETRESOURCEW,LPCWSTR,LPCWSTR,DWORD);
+#define      WNetAddConnection2 WINELIB_NAME_AW(WNetAddConnection2)
+DWORD WINAPI WNetAddConnection3A(HWND,LPNETRESOURCEA,LPCSTR,LPCSTR,DWORD);
+DWORD WINAPI WNetAddConnection3W(HWND,LPNETRESOURCEW,LPCWSTR,LPCWSTR,DWORD);
+#define      WNetAddConnection3 WINELIB_NAME_AW(WNetAddConnection3)
+DWORD WINAPI WNetCancelConnectionA(LPCSTR,BOOL);
+DWORD WINAPI WNetCancelConnectionW(LPCWSTR,BOOL);
+#define      WNetCancelConnection WINELIB_NAME_AW(WNetCancelConnection)
+DWORD WINAPI WNetCancelConnection2A(LPCSTR,DWORD,BOOL);
+DWORD WINAPI WNetCancelConnection2W(LPCWSTR,DWORD,BOOL);
+#define      WNetCancelConnection2 WINELIB_NAME_AW(WNetCancelConnection2)
+DWORD WINAPI WNetGetConnectionA(LPCSTR,LPSTR,LPDWORD);
+DWORD WINAPI WNetGetConnectionW(LPCWSTR,LPWSTR,LPDWORD);
+#define      WNetGetConnection WINELIB_NAME_AW(WNetGetConnection)
+DWORD WINAPI WNetGetLastErrorA(LPDWORD,LPSTR,DWORD,LPSTR,DWORD);
+DWORD WINAPI WNetGetLastErrorW(LPDWORD,LPWSTR,DWORD,LPWSTR,DWORD);
+#define      WNetGetLastError WINELIB_NAME_AW(WNetGetLastError)
+DWORD WINAPI WNetRestoreConnectionA(HWND,LPCSTR);
+DWORD WINAPI WNetRestoreConnectionW(HWND,LPCWSTR);
+#define      WNetRestoreConnection WINELIB_NAME_AW(WNetRestoreConnection)
+DWORD WINAPI WNetUseConnectionA(HWND,LPNETRESOURCEA,LPCSTR,LPCSTR,DWORD,LPSTR,LPDWORD,LPDWORD);
+DWORD WINAPI WNetUseConnectionW(HWND,LPNETRESOURCEW,LPCWSTR,LPCWSTR,DWORD,LPWSTR,LPDWORD,LPDWORD);
+#define      WNetUseConnection WINELIB_NAME_AW(WNetUseConnection)
+DWORD WINAPI WNetSetConnectionA(LPCSTR,DWORD,LPVOID);
+DWORD WINAPI WNetSetConnectionW(LPCWSTR,DWORD,LPVOID);
+#define      WNetSetConnection WINELIB_NAME_AW(WNetSetConnection)
+
+/*
+ *  Network connection dialogs
+ */
+
+typedef struct {
+    DWORD cbStructure;       /* size of this structure in bytes */
+    HWND hwndOwner;          /* owner window for the dialog */
+    LPNETRESOURCEA lpConnRes;/* Requested Resource info    */
+    DWORD dwFlags;           /* flags (see below) */
+    DWORD dwDevNum;          /* number of devices connected to */
+} CONNECTDLGSTRUCTA, *LPCONNECTDLGSTRUCTA;
+typedef struct {
+    DWORD cbStructure;       /* size of this structure in bytes */
+    HWND hwndOwner;          /* owner window for the dialog */
+    LPNETRESOURCEW lpConnRes;/* Requested Resource info    */
+    DWORD dwFlags;           /* flags (see below) */
+    DWORD dwDevNum;          /* number of devices connected to */
+} CONNECTDLGSTRUCTW, *LPCONNECTDLGSTRUCTW;
+
+DECL_WINELIB_TYPE_AW(CONNECTDLGSTRUCT)
+DECL_WINELIB_TYPE_AW(LPCONNECTDLGSTRUCT)
+
+#define CONNDLG_RO_PATH     0x00000001 /* Resource path should be read-only    */
+#define CONNDLG_CONN_POINT  0x00000002 /* Netware -style movable connection point enabled */
+#define CONNDLG_USE_MRU     0x00000004 /* Use MRU combobox  */
+#define CONNDLG_HIDE_BOX    0x00000008 /* Hide persistent connect checkbox  */
+#define CONNDLG_PERSIST     0x00000010 /* Force persistent connection */
+#define CONNDLG_NOT_PERSIST 0x00000020 /* Force connection NOT persistent */
+
+typedef struct {
+    DWORD           cbStructure;      /* size of this structure in bytes */
+    HWND            hwndOwner;        /* owner window for the dialog */
+    LPSTR           lpLocalName;      /* local device name */
+    LPSTR           lpRemoteName;     /* network resource name */
+    DWORD           dwFlags;          /* flags */
+} DISCDLGSTRUCTA, *LPDISCDLGSTRUCTA;
+typedef struct {
+    DWORD           cbStructure;      /* size of this structure in bytes */
+    HWND            hwndOwner;        /* owner window for the dialog */
+    LPWSTR          lpLocalName;      /* local device name */
+    LPWSTR          lpRemoteName;     /* network resource name */
+    DWORD           dwFlags;          /* flags */
+} DISCDLGSTRUCTW, *LPDISCDLGSTRUCTW;
+
+DECL_WINELIB_TYPE_AW(DISCDLGSTRUCT)
+DECL_WINELIB_TYPE_AW(LPDISCDLGSTRUCT)
+
+#define DISC_UPDATE_PROFILE         0x00000001
+#define DISC_NO_FORCE               0x00000040
+
+DWORD WINAPI WNetConnectionDialog(HWND,DWORD);
+DWORD WINAPI WNetDisconnectDialog(HWND,DWORD);
+DWORD WINAPI WNetConnectionDialog1A(LPCONNECTDLGSTRUCTA);
+DWORD WINAPI WNetConnectionDialog1W(LPCONNECTDLGSTRUCTW);
+#define      WNetConnectionDialog1 WINELIB_NAME_AW(WNetConnectionDialog1)
+DWORD WINAPI WNetDisconnectDialog1A(LPDISCDLGSTRUCTA);
+DWORD WINAPI WNetDisconnectDialog1W(LPDISCDLGSTRUCTW);
+#define      WNetDisconnectDialog1 WINELIB_NAME_AW(WNetDisconnectDialog1)
+
+/*
+ *  Network browsing
+ */
+
+DWORD WINAPI WNetOpenEnumA(DWORD,DWORD,DWORD,LPNETRESOURCEA,LPHANDLE);
+DWORD WINAPI WNetOpenEnumW(DWORD,DWORD,DWORD,LPNETRESOURCEW,LPHANDLE);
+#define      WNetOpenEnum WINELIB_NAME_AW(WNetOpenEnum)
+DWORD WINAPI WNetEnumResourceA(HANDLE,LPDWORD,LPVOID,LPDWORD);
+DWORD WINAPI WNetEnumResourceW(HANDLE,LPDWORD,LPVOID,LPDWORD);
+#define      WNetEnumResource WINELIB_NAME_AW(WNetEnumResource)
+DWORD WINAPI WNetGetResourceInformationA(LPNETRESOURCEA,LPVOID,LPDWORD,LPSTR*);
+DWORD WINAPI WNetGetResourceInformationW(LPNETRESOURCEW,LPVOID,LPDWORD,LPWSTR*);
+#define      WNetGetResourceInformation WINELIB_NAME_AW(WNetGetResourceInformation)
+DWORD WINAPI WNetGetResourceParentA(LPNETRESOURCEA,LPVOID,LPDWORD);
+DWORD WINAPI WNetGetResourceParentW(LPNETRESOURCEW,LPVOID,LPDWORD);
+#define      WNetGetResourceParent WINELIB_NAME_AW(WNetGetResourceParent)
+DWORD WINAPI WNetCloseEnum(HANDLE);
+
+/*
+ *  Universal naming
+ */
+
+#define UNIVERSAL_NAME_INFO_LEVEL   0x00000001
+#define REMOTE_NAME_INFO_LEVEL      0x00000002
+
+typedef struct {
+    LPSTR    lpUniversalName;
+} UNIVERSAL_NAME_INFOA, *LPUNIVERSAL_NAME_INFOA;
+typedef struct {
+    LPWSTR   lpUniversalName;
+} UNIVERSAL_NAME_INFOW, *LPUNIVERSAL_NAME_INFOW;
+
+DECL_WINELIB_TYPE_AW(UNIVERSAL_NAME_INFO)
+DECL_WINELIB_TYPE_AW(LPUNIVERSAL_NAME_INFO)
+
+typedef struct {
+    LPSTR    lpUniversalName;
+    LPSTR    lpConnectionName;
+    LPSTR    lpRemainingPath;
+}REMOTE_NAME_INFOA, *LPREMOTE_NAME_INFOA;
+typedef struct {
+    LPWSTR   lpUniversalName;
+    LPWSTR   lpConnectionName;
+    LPWSTR   lpRemainingPath;
+}REMOTE_NAME_INFOW, *LPREMOTE_NAME_INFOW;
+
+DECL_WINELIB_TYPE_AW(REMOTE_NAME_INFO)
+DECL_WINELIB_TYPE_AW(LPREMOTE_NAME_INFO)
+
+DWORD WINAPI WNetGetUniversalNameA(LPCSTR,DWORD,LPVOID,LPDWORD);
+DWORD WINAPI WNetGetUniversalNameW(LPCWSTR,DWORD,LPVOID,LPDWORD);
+#define      WNetGetUniversalName WINELIB_NAME_AW(WNetGetUniversalName)
+
+/*
+ *  Other
+ */
+
+DWORD WINAPI WNetGetUserA(LPCSTR,LPSTR,LPDWORD);
+DWORD WINAPI WNetGetUserW(LPCWSTR,LPWSTR,LPDWORD);
+#define      WNetGetUser WINELIB_NAME_AW(WNetGetUser)
+
+#define WNFMT_MULTILINE         0x01
+#define WNFMT_ABBREVIATED       0x02
+#define WNFMT_INENUM            0x10
+#define WNFMT_CONNECTION        0x20
+
+DWORD WINAPI WNetGetProviderNameA(DWORD,LPSTR,LPDWORD);
+DWORD WINAPI WNetGetProviderNameW(DWORD,LPWSTR,LPDWORD);
+#define      WNetGetProviderName WINELIB_NAME_AW(WNetGetProviderName)
+
+typedef struct {
+    DWORD cbStructure;
+    DWORD dwProviderVersion;
+    DWORD dwStatus;
+    DWORD dwCharacteristics;
+    DWORD dwHandle;
+    WORD  wNetType;
+    DWORD dwPrinters;
+    DWORD dwDrives;
+} NETINFOSTRUCT, *LPNETINFOSTRUCT;
+
+#define NETINFO_DLL16       0x00000001
+#define NETINFO_DISKRED     0x00000004
+#define NETINFO_PRINTERRED  0x00000008
+
+DWORD WINAPI WNetGetNetworkInformationA(LPCSTR,LPNETINFOSTRUCT);
+DWORD WINAPI WNetGetNetworkInformationW(LPCWSTR,LPNETINFOSTRUCT);
+#define      WNetGetNetworkInformation WINELIB_NAME_AW(WNetGetNetworkInformation)
+
+
+/*
+ *  Status codes
+ */
+
+DWORD WINAPI WNetGetLastErrorA(LPDWORD,LPSTR,DWORD,LPSTR,DWORD);
+DWORD WINAPI WNetGetLastErrorW(LPDWORD,LPWSTR,DWORD,LPWSTR,DWORD);
+#define      WNetGetLastError WINELIB_NAME_AW(WNetGetLastError)
+
+#define WN_SUCCESS                      NO_ERROR
+#define WN_NO_ERROR                     NO_ERROR
+#define WN_NOT_SUPPORTED                ERROR_NOT_SUPPORTED
+#define WN_CANCEL                       ERROR_CANCELLED
+#define WN_RETRY                        ERROR_RETRY
+#define WN_NET_ERROR                    ERROR_UNEXP_NET_ERR
+#define WN_MORE_DATA                    ERROR_MORE_DATA
+#define WN_BAD_POINTER                  ERROR_INVALID_ADDRESS
+#define WN_BAD_VALUE                    ERROR_INVALID_PARAMETER
+#define WN_BAD_USER                     ERROR_BAD_USERNAME
+#define WN_BAD_PASSWORD                 ERROR_INVALID_PASSWORD
+#define WN_ACCESS_DENIED                ERROR_ACCESS_DENIED
+#define WN_FUNCTION_BUSY                ERROR_BUSY
+#define WN_WINDOWS_ERROR                ERROR_UNEXP_NET_ERR
+#define WN_OUT_OF_MEMORY                ERROR_NOT_ENOUGH_MEMORY
+#define WN_NO_NETWORK                   ERROR_NO_NETWORK
+#define WN_EXTENDED_ERROR               ERROR_EXTENDED_ERROR
+#define WN_BAD_LEVEL                    ERROR_INVALID_LEVEL
+#define WN_BAD_HANDLE                   ERROR_INVALID_HANDLE
+#define WN_NOT_INITIALIZING             ERROR_ALREADY_INITIALIZED
+#define WN_NO_MORE_DEVICES              ERROR_NO_MORE_DEVICES
+
+#define WN_NOT_CONNECTED                ERROR_NOT_CONNECTED
+#define WN_OPEN_FILES                   ERROR_OPEN_FILES
+#define WN_DEVICE_IN_USE                ERROR_DEVICE_IN_USE
+#define WN_BAD_NETNAME                  ERROR_BAD_NET_NAME
+#define WN_BAD_LOCALNAME                ERROR_BAD_DEVICE
+#define WN_ALREADY_CONNECTED            ERROR_ALREADY_ASSIGNED
+#define WN_DEVICE_ERROR                 ERROR_GEN_FAILURE
+#define WN_CONNECTION_CLOSED            ERROR_CONNECTION_UNAVAIL
+#define WN_NO_NET_OR_BAD_PATH           ERROR_NO_NET_OR_BAD_PATH
+#define WN_BAD_PROVIDER                 ERROR_BAD_PROVIDER
+#define WN_CANNOT_OPEN_PROFILE          ERROR_CANNOT_OPEN_PROFILE
+#define WN_BAD_PROFILE                  ERROR_BAD_PROFILE
+#define WN_BAD_DEV_TYPE                 ERROR_BAD_DEV_TYPE
+#define WN_DEVICE_ALREADY_REMEMBERED    ERROR_DEVICE_ALREADY_REMEMBERED
+
+#define WN_NO_MORE_ENTRIES              ERROR_NO_MORE_ITEMS
+#define WN_NOT_CONTAINER                ERROR_NOT_CONTAINER
+
+#define WN_NOT_AUTHENTICATED            ERROR_NOT_AUTHENTICATED
+#define WN_NOT_LOGGED_ON                ERROR_NOT_LOGGED_ON
+#define WN_NOT_VALIDATED                ERROR_NO_LOGON_SERVERS
+
+
+/*
+ *  Multinet (for Shell)
+ */
+
+typedef struct {
+	DWORD	cbStructure;
+	DWORD	dwFlags;
+	DWORD	dwSpeed;
+	DWORD	dwDelay;
+	DWORD	dwOptDataSize;
+} NETCONNECTINFOSTRUCT,*LPNETCONNECTINFOSTRUCT;
+
+#define WNCON_FORNETCARD        0x00000001
+#define WNCON_NOTROUTED         0x00000002
+#define WNCON_SLOWLINK          0x00000004
+#define WNCON_DYNAMIC           0x00000008
+
+DWORD WINAPI MultinetGetConnectionPerformanceA(LPNETRESOURCEA,LPNETCONNECTINFOSTRUCT);
+DWORD WINAPI MultinetGetConnectionPerformanceW(LPNETRESOURCEW,LPNETCONNECTINFOSTRUCT);
+#define      MultinetGetConnectionPerformance WINELIB_NAME_AW(MultinetGetConnectionPerformance)
+DWORD WINAPI MultinetGetErrorTextA(DWORD,DWORD,DWORD);
+DWORD WINAPI MultinetGetErrorTextW(DWORD,DWORD,DWORD);
+#define      MultinetGetErrorText WINELIB_NAME_AW(MultinetGetErrorText)
+
+/*
+ * Password cache
+ */
+
+/* WNetEnumCachedPasswords */
+typedef struct tagPASSWORD_CACHE_ENTRY
+{
+	WORD cbEntry;
+	WORD cbResource;
+	WORD cbPassword;
+	BYTE iEntry;
+	BYTE nType;
+	BYTE abResource[1];
+} PASSWORD_CACHE_ENTRY;
+
+typedef BOOL (CALLBACK *ENUMPASSWORDPROC)(PASSWORD_CACHE_ENTRY *, DWORD);
+UINT WINAPI WNetEnumCachedPasswords( LPSTR, WORD, BYTE, ENUMPASSWORDPROC, DWORD);
+DWORD WINAPI WNetGetCachedPassword( LPSTR, WORD, LPSTR, LPWORD, BYTE );
+DWORD WINAPI WNetCachePassword( LPSTR, WORD, LPSTR, WORD, BYTE, WORD );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _WINNETWK_H_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winnls.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winnls.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winnls.h	(revision 16410)
@@ -0,0 +1,796 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINNLS_H
+#define __WINE_WINNLS_H
+#ifndef NONLS
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Country codes */
+#define CTRY_DEFAULT            (0)
+#define CTRY_ALBANIA            (355)
+#define CTRY_ALGERIA            (213)
+#define CTRY_ARGENTINA          (54)
+#define CTRY_ARMENIA            (374)
+#define CTRY_AUSTRALIA          (61)
+#define CTRY_AUSTRIA            (43)
+#define CTRY_AZERBAIJAN         (994)
+#define CTRY_BAHRAIN            (973)
+#define CTRY_BELARUS            (375)
+#define CTRY_BELGIUM            (32)
+#define CTRY_BELIZE             (501)
+#define CTRY_BOLIVIA            (591)
+#define CTRY_BRAZIL             (55)
+#define CTRY_BRUNEI_DARUSSALAM  (673)
+#define CTRY_BULGARIA           (359)
+#define CTRY_CANADA             (2)
+#define CTRY_CARIBBEAN          (1)
+#define CTRY_CHILE              (56)
+#define CTRY_COLOMBIA           (57)
+#define CTRY_COSTA_RICA         (506)
+#define CTRY_CROATIA            (385)
+#define CTRY_CZECH              (420)
+#define CTRY_DENMARK            (45)
+#define CTRY_DOMINICAN_REPUBLIC (1)
+#define CTRY_ECUADOR            (593)
+#define CTRY_EGYPT              (20)
+#define CTRY_EL_SALVADOR        (503)
+#define CTRY_ESTONIA            (372)
+#define CTRY_FAEROE_ISLANDS     (298)
+#define CTRY_FINLAND            (358)
+#define CTRY_FRANCE             (33)
+#define CTRY_GEORGIA            (995)
+#define CTRY_GERMANY            (49)
+#define CTRY_GREECE             (30)
+#define CTRY_GUATEMALA          (502)
+#define CTRY_HONDURAS           (504)
+#define CTRY_HONG_KONG          (852)
+#define CTRY_HUNGARY            (36)
+#define CTRY_ICELAND            (354)
+#define CTRY_INDIA              (91)
+#define CTRY_INDONESIA          (62)
+#define CTRY_IRAN               (981)
+#define CTRY_IRAQ               (964)
+#define CTRY_IRELAND            (353)
+#define CTRY_ISRAEL             (972)
+#define CTRY_ITALY              (39)
+#define CTRY_JAMAICA            (1)
+#define CTRY_JAPAN              (81)
+#define CTRY_JORDAN             (962)
+#define CTRY_KAZAKSTAN          (7)
+#define CTRY_KENYA              (254)
+#define CTRY_KUWAIT             (965)
+#define CTRY_KYRGYZSTAN         (996)
+#define CTRY_LATVIA             (371)
+#define CTRY_LEBANON            (961)
+#define CTRY_LIBYA              (218)
+#define CTRY_LIECHTENSTEIN      (41)
+#define CTRY_LITHUANIA          (370)
+#define CTRY_LUXEMBOURG         (352)
+#define CTRY_MACAU              (853)
+#define CTRY_MACEDONIA          (389)
+#define CTRY_MALAYSIA           (60)
+#define CTRY_MALDIVES           (960)
+#define CTRY_MEXICO             (52)
+#define CTRY_MONACO             (33)
+#define CTRY_MONGOLIA           (976)
+#define CTRY_MOROCCO            (212)
+#define CTRY_NETHERLANDS        (31)
+#define CTRY_NEW_ZEALAND        (64)
+#define CTRY_NICARAGUA          (505)
+#define CTRY_NORWAY             (47)
+#define CTRY_OMAN               (968)
+#define CTRY_PAKISTAN           (92)
+#define CTRY_PANAMA             (507)
+#define CTRY_PARAGUAY           (595)
+#define CTRY_PERU               (51)
+#define CTRY_PHILIPPINES        (63)
+#define CTRY_POLAND             (48)
+#define CTRY_PORTUGAL           (351)
+#define CTRY_PRCHINA            (86)
+#define CTRY_PUERTO_RICO        (1)
+#define CTRY_QATAR              (974)
+#define CTRY_ROMANIA            (40)
+#define CTRY_RUSSIA             (7)
+#define CTRY_SAUDI_ARABIA       (966)
+#define CTRY_SERBIA             (381)
+#define CTRY_SINGAPORE          (65)
+#define CTRY_SLOVAK             (421)
+#define CTRY_SLOVENIA           (386)
+#define CTRY_SOUTH_AFRICA       (27)
+#define CTRY_SOUTH_KOREA        (82)
+#define CTRY_SPAIN              (34)
+#define CTRY_SWEDEN             (46)
+#define CTRY_SWITZERLAND        (41)
+#define CTRY_SYRIA              (963)
+#define CTRY_TAIWAN             (886)
+#define CTRY_TATARSTAN          (7)
+#define CTRY_THAILAND           (66)
+#define CTRY_TRINIDAD_Y_TOBAGO  (1)
+#define CTRY_TUNISIA            (216)
+#define CTRY_TURKEY             (90)
+#define CTRY_UAE                (971)
+#define CTRY_UKRAINE            (380)
+#define CTRY_UNITED_KINGDOM     (44)
+#define CTRY_UNITED_STATES      (1)
+#define CTRY_URUGUAY            (598)
+#define CTRY_UZBEKISTAN         (7)
+#define CTRY_VENEZUELA          (58)
+#define CTRY_VIET_NAM           (84)
+#define CTRY_YEMEN              (967)
+#define CTRY_ZIMBABWE           (263)
+
+#define MB_PRECOMPOSED              0x01
+#define MB_COMPOSITE                0x02
+#define MB_USEGLYPHCHARS            0x04
+#define MB_ERR_INVALID_CHARS        0x08
+
+#define LGRPID_INSTALLED            0x1
+#define LGRPID_SUPPORTED            0x2
+
+#define LCID_INSTALLED              0x1
+#define LCID_SUPPORTED              0x2
+#define LCID_ALTERNATE_SORTS        0x4
+
+/* Locale flags */
+#define	LOCALE_NOUSEROVERRIDE	    0x80000000
+#define	LOCALE_USE_CP_ACP	    0x40000000
+#define	LOCALE_RETURN_NUMBER	    0x20000000
+
+/* Locale information types */
+#define LOCALE_ILANGUAGE            0x0001
+#define LOCALE_SLANGUAGE            0x0002
+#define LOCALE_SENGLANGUAGE         0x1001
+#define LOCALE_SABBREVLANGNAME      0x0003
+#define LOCALE_SNATIVELANGNAME      0x0004
+#define LOCALE_ICOUNTRY             0x0005
+#define LOCALE_SCOUNTRY             0x0006
+#define LOCALE_SENGCOUNTRY          0x1002
+#define LOCALE_SABBREVCTRYNAME      0x0007
+#define LOCALE_SNATIVECTRYNAME      0x0008
+#define LOCALE_IDEFAULTLANGUAGE     0x0009
+#define LOCALE_IDEFAULTCOUNTRY      0x000A
+#define LOCALE_IDEFAULTCODEPAGE     0x000B
+#define LOCALE_IDEFAULTANSICODEPAGE 0x1004
+#define LOCALE_IDEFAULTMACCODEPAGE  0x1011
+#define LOCALE_SLIST                0x000C
+#define LOCALE_IMEASURE             0x000D
+#define LOCALE_SDECIMAL             0x000E
+#define LOCALE_STHOUSAND            0x000F
+#define LOCALE_SGROUPING            0x0010
+#define LOCALE_IDIGITS              0x0011
+#define LOCALE_ILZERO               0x0012
+#define LOCALE_INEGNUMBER           0x1010
+#define LOCALE_SNATIVEDIGITS        0x0013
+#define LOCALE_SCURRENCY            0x0014
+#define LOCALE_SINTLSYMBOL          0x0015
+#define LOCALE_SMONDECIMALSEP       0x0016
+#define LOCALE_SMONTHOUSANDSEP      0x0017
+#define LOCALE_SMONGROUPING         0x0018
+#define LOCALE_ICURRDIGITS          0x0019
+#define LOCALE_IINTLCURRDIGITS      0x001A
+#define LOCALE_ICURRENCY            0x001B
+#define LOCALE_INEGCURR             0x001C
+#define LOCALE_SDATE                0x001D
+#define LOCALE_STIME                0x001E
+#define LOCALE_SSHORTDATE           0x001F
+#define LOCALE_SLONGDATE            0x0020
+#define LOCALE_STIMEFORMAT          0x1003
+#define LOCALE_IDATE                0x0021
+#define LOCALE_ILDATE               0x0022
+#define LOCALE_ITIME                0x0023
+#define LOCALE_ITIMEMARKPOSN        0x1005
+#define LOCALE_ICENTURY             0x0024
+#define LOCALE_ITLZERO              0x0025
+#define LOCALE_IDAYLZERO            0x0026
+#define LOCALE_IMONLZERO            0x0027
+#define LOCALE_S1159                0x0028
+#define LOCALE_S2359                0x0029
+#define LOCALE_ICALENDARTYPE        0x1009
+#define LOCALE_IOPTIONALCALENDAR    0x100B
+#define LOCALE_IFIRSTDAYOFWEEK      0x100C
+#define LOCALE_IFIRSTWEEKOFYEAR     0x100D
+#define LOCALE_SDAYNAME1            0x002A
+#define LOCALE_SDAYNAME2            0x002B
+#define LOCALE_SDAYNAME3            0x002C
+#define LOCALE_SDAYNAME4            0x002D
+#define LOCALE_SDAYNAME5            0x002E
+#define LOCALE_SDAYNAME6            0x002F
+#define LOCALE_SDAYNAME7            0x0030
+#define LOCALE_SABBREVDAYNAME1      0x0031
+#define LOCALE_SABBREVDAYNAME2      0x0032
+#define LOCALE_SABBREVDAYNAME3      0x0033
+#define LOCALE_SABBREVDAYNAME4      0x0034
+#define LOCALE_SABBREVDAYNAME5      0x0035
+#define LOCALE_SABBREVDAYNAME6      0x0036
+#define LOCALE_SABBREVDAYNAME7      0x0037
+#define LOCALE_SMONTHNAME1          0x0038
+#define LOCALE_SMONTHNAME2          0x0039
+#define LOCALE_SMONTHNAME3          0x003A
+#define LOCALE_SMONTHNAME4          0x003B
+#define LOCALE_SMONTHNAME5          0x003C
+#define LOCALE_SMONTHNAME6          0x003D
+#define LOCALE_SMONTHNAME7          0x003E
+#define LOCALE_SMONTHNAME8          0x003F
+#define LOCALE_SMONTHNAME9          0x0040
+#define LOCALE_SMONTHNAME10         0x0041
+#define LOCALE_SMONTHNAME11         0x0042
+#define LOCALE_SMONTHNAME12         0x0043
+#define LOCALE_SMONTHNAME13         0x100E
+#define LOCALE_SABBREVMONTHNAME1    0x0044
+#define LOCALE_SABBREVMONTHNAME2    0x0045
+#define LOCALE_SABBREVMONTHNAME3    0x0046
+#define LOCALE_SABBREVMONTHNAME4    0x0047
+#define LOCALE_SABBREVMONTHNAME5    0x0048
+#define LOCALE_SABBREVMONTHNAME6    0x0049
+#define LOCALE_SABBREVMONTHNAME7    0x004A
+#define LOCALE_SABBREVMONTHNAME8    0x004B
+#define LOCALE_SABBREVMONTHNAME9    0x004C
+#define LOCALE_SABBREVMONTHNAME10   0x004D
+#define LOCALE_SABBREVMONTHNAME11   0x004E
+#define LOCALE_SABBREVMONTHNAME12   0x004F
+#define LOCALE_SABBREVMONTHNAME13   0x100F
+#define LOCALE_SPOSITIVESIGN        0x0050
+#define LOCALE_SNEGATIVESIGN        0x0051
+#define LOCALE_IPOSSIGNPOSN         0x0052
+#define LOCALE_INEGSIGNPOSN         0x0053
+#define LOCALE_IPOSSYMPRECEDES      0x0054
+#define LOCALE_IPOSSEPBYSPACE       0x0055
+#define LOCALE_INEGSYMPRECEDES      0x0056
+#define LOCALE_INEGSEPBYSPACE       0x0057
+#define	LOCALE_FONTSIGNATURE        0x0058
+#define LOCALE_SISO639LANGNAME      0x0059
+#define LOCALE_SISO3166CTRYNAME     0x005A
+#define LOCALE_SNAME                0x005C
+#define LOCALE_SDURATION            0x005D
+#define LOCALE_SKEYBOARDSTOINSTALL  0x005E
+#define LOCALE_SSHORTESTDAYNAME1    0x0060
+#define LOCALE_SSHORTESTDAYNAME2    0x0061
+#define LOCALE_SSHORTESTDAYNAME3    0x0062
+#define LOCALE_SSHORTESTDAYNAME4    0x0063
+#define LOCALE_SSHORTESTDAYNAME5    0x0064
+#define LOCALE_SSHORTESTDAYNAME6    0x0065
+#define LOCALE_SSHORTESTDAYNAME7    0x0066
+#define LOCALE_SISO639LANGNAME2     0x0067
+#define LOCALE_SISO3166CTRYNAME2    0x0068
+#define LOCALE_SNAN                 0x0069
+#define LOCALE_SPOSINFINITY         0x006A
+#define LOCALE_SNEGINFINITY         0x006B
+#define LOCALE_SSCRIPTS             0x006C
+#define LOCALE_SPARENT              0x006D
+#define LOCALE_SCONSOLEFALLBACKNAME 0x006E
+#define LOCALE_SLANGDISPLAYNAME     0x006F
+
+#define LOCALE_IDEFAULTEBCDICCODEPAGE 0x1012
+#define LOCALE_IPAPERSIZE             0x100A
+#define LOCALE_SENGCURRNAME           0x1007
+#define LOCALE_SNATIVECURRNAME        0x1008
+#define LOCALE_SYEARMONTH             0x1006
+#define LOCALE_SSORTNAME              0x1013
+#define LOCALE_IDIGITSUBSTITUTION     0x1014
+
+#define LOCALE_IDEFAULTUNIXCODEPAGE   0x1030 /* Wine extension */
+
+#define NORM_IGNORECASE     0x00001
+#define NORM_IGNORENONSPACE 0x00002
+#define NORM_IGNORESYMBOLS  0x00004
+#define NORM_STRINGSORT     0x01000
+#define NORM_IGNOREKANATYPE 0x10000
+#define NORM_IGNOREWIDTH    0x20000
+
+#define CP_ACP        0
+#define CP_OEMCP      1
+#define CP_MACCP      2
+#define CP_THREAD_ACP 3
+#define CP_SYMBOL     42
+#define CP_UTF7       65000
+#define CP_UTF8       65001
+
+#define CP_UNIXCP     65010 /* Wine extension */
+
+#define CP_INSTALLED 0x1
+#define CP_SUPPORTED 0x2
+
+#define HIGH_SURROGATE_START 0xd800
+#define HIGH_SURROGATE_END   0xdbff
+#define LOW_SURROGATE_START  0xdc00
+#define LOW_SURROGATE_END    0xdfff
+
+#define IS_HIGH_SURROGATE(ch)       ((ch) >= HIGH_SURROGATE_START && (ch) <= HIGH_SURROGATE_END)
+#define IS_LOW_SURROGATE(ch)        ((ch) >= LOW_SURROGATE_START  && (ch) <= LOW_SURROGATE_END)
+#define IS_SURROGATE_PAIR(high,low) (IS_HIGH_SURROGATE(high) && IS_LOW_SURROGATE(low))
+
+#define WC_DISCARDNS         0x0010
+#define WC_SEPCHARS          0x0020
+#define WC_DEFAULTCHAR       0x0040
+#define WC_ERR_INVALID_CHARS 0x0080
+#define WC_COMPOSITECHECK    0x0200
+#define WC_NO_BEST_FIT_CHARS 0x0400
+
+#define MAP_FOLDCZONE        0x0010
+#define MAP_PRECOMPOSED      0x0020
+#define MAP_COMPOSITE        0x0040
+#define MAP_FOLDDIGITS       0x0080
+#define MAP_EXPAND_LIGATURES 0x2000
+
+
+/* String mapping flags */
+#define LCMAP_LOWERCASE  0x00000100	/* Make lower-case */
+#define LCMAP_UPPERCASE  0x00000200	/* Make upper-case */
+#define LCMAP_SORTKEY    0x00000400	/* Create a sort key */
+#define LCMAP_BYTEREV    0x00000800	/* Reverse the result */
+
+#define SORT_STRINGSORT  0x00001000	/* Take punctuation into account */
+
+#define LCMAP_HIRAGANA   0x00100000	/* Transform Japanese katakana into hiragana */
+#define LCMAP_KATAKANA   0x00200000	/* Transform Japanese hiragana into katakana */
+#define LCMAP_HALFWIDTH  0x00400000	/* Use single byte chars in output */
+#define LCMAP_FULLWIDTH  0x00800000	/* Use double byte chars in output */
+
+#define LCMAP_LINGUISTIC_CASING   0x01000000 /* Change case by using language context */
+#define LCMAP_SIMPLIFIED_CHINESE  0x02000000 /* Transform Chinese traditional into simplified */
+#define LCMAP_TRADITIONAL_CHINESE 0x04000000 /* Transform Chinese simplified into traditional */
+
+/* Date and time formatting flags */
+#define DATE_SHORTDATE          0x01  /* Short date format */
+#define DATE_LONGDATE           0x02  /* Long date format */
+#define DATE_USE_ALT_CALENDAR   0x04  /* Use an Alternate calendar */
+#define DATE_YEARMONTH          0x08  /* Year/month format */
+#define DATE_LTRREADING         0x10  /* Add LTR reading marks */
+#define DATE_RTLREADING         0x20  /* Add RTL reading marks */
+
+#define TIME_FORCE24HOURFORMAT  0x08  /* Always use 24 hour clock */
+#define TIME_NOTIMEMARKER       0x04  /* show no AM/PM */
+#define TIME_NOSECONDS          0x02  /* show no seconds */
+#define TIME_NOMINUTESORSECONDS 0x01  /* show no minutes either */
+
+/* Unicode char type flags */
+#define	CT_CTYPE1		0x0001	/* usual ctype */
+#define	CT_CTYPE2		0x0002	/* bidirectional layout info */
+#define	CT_CTYPE3		0x0004	/* textprocessing info */
+
+/* Type 1 flags */
+#define C1_UPPER		0x0001
+#define C1_LOWER		0x0002
+#define C1_DIGIT		0x0004
+#define C1_SPACE		0x0008
+#define C1_PUNCT		0x0010
+#define C1_CNTRL		0x0020
+#define C1_BLANK		0x0040
+#define C1_XDIGIT		0x0080
+#define C1_ALPHA		0x0100
+
+/* Type 2 flags */
+#define	C2_LEFTTORIGHT		0x0001
+#define	C2_RIGHTTOLEFT		0x0002
+#define	C2_EUROPENUMBER		0x0003
+#define	C2_EUROPESEPARATOR	0x0004
+#define	C2_EUROPETERMINATOR	0x0005
+#define	C2_ARABICNUMBER		0x0006
+#define	C2_COMMONSEPARATOR	0x0007
+#define	C2_BLOCKSEPARATOR	0x0008
+#define	C2_SEGMENTSEPARATOR	0x0009
+#define	C2_WHITESPACE		0x000A
+#define	C2_OTHERNEUTRAL		0x000B
+#define	C2_NOTAPPLICABLE	0x0000
+
+/* Type 3 flags */
+#define	C3_NONSPACING		0x0001
+#define	C3_DIACRITIC		0x0002
+#define	C3_VOWELMARK		0x0004
+#define	C3_SYMBOL		0x0008
+#define	C3_KATAKANA		0x0010
+#define	C3_HIRAGANA		0x0020
+#define	C3_HALFWIDTH		0x0040
+#define	C3_FULLWIDTH		0x0080
+#define	C3_IDEOGRAPH		0x0100
+#define	C3_KASHIDA		0x0200
+#define	C3_LEXICAL		0x0400
+#define	C3_ALPHA		0x8000
+#define	C3_NOTAPPLICABLE	0x0000
+
+/* Code page information.
+ */
+#define MAX_LEADBYTES     12
+#define MAX_DEFAULTCHAR   2
+
+/* Defines for calendar handling */
+#define CAL_NOUSEROVERRIDE     LOCALE_NOUSEROVERRIDE
+#define CAL_USE_CP_ACP         LOCALE_USE_CP_ACP
+#define CAL_RETURN_NUMBER      LOCALE_RETURN_NUMBER
+
+#define CAL_ICALINTVALUE       0x01
+#define CAL_SCALNAME           0x02
+#define CAL_IYEAROFFSETRANGE   0x03
+#define CAL_SERASTRING         0x04
+#define CAL_SSHORTDATE         0x05
+#define CAL_SLONGDATE          0x06
+#define CAL_SDAYNAME1          0x07
+#define CAL_SDAYNAME2          0x08
+#define CAL_SDAYNAME3          0x09
+#define CAL_SDAYNAME4          0x0a
+#define CAL_SDAYNAME5          0x0b
+#define CAL_SDAYNAME6          0x0c
+#define CAL_SDAYNAME7          0x0d
+#define CAL_SABBREVDAYNAME1    0x0e
+#define CAL_SABBREVDAYNAME2    0x0f
+#define CAL_SABBREVDAYNAME3    0x10
+#define CAL_SABBREVDAYNAME4    0x11
+#define CAL_SABBREVDAYNAME5    0x12
+#define CAL_SABBREVDAYNAME6    0x13
+#define CAL_SABBREVDAYNAME7    0x14
+#define CAL_SMONTHNAME1        0x15
+#define CAL_SMONTHNAME2        0x16
+#define CAL_SMONTHNAME3        0x17
+#define CAL_SMONTHNAME4        0x18
+#define CAL_SMONTHNAME5        0x19
+#define CAL_SMONTHNAME6        0x1a
+#define CAL_SMONTHNAME7        0x1b
+#define CAL_SMONTHNAME8        0x1c
+#define CAL_SMONTHNAME9        0x1d
+#define CAL_SMONTHNAME10       0x1e
+#define CAL_SMONTHNAME11       0x1f
+#define CAL_SMONTHNAME12       0x20
+#define CAL_SMONTHNAME13       0x21
+#define CAL_SABBREVMONTHNAME1  0x22
+#define CAL_SABBREVMONTHNAME2  0x23
+#define CAL_SABBREVMONTHNAME3  0x24
+#define CAL_SABBREVMONTHNAME4  0x25
+#define CAL_SABBREVMONTHNAME5  0x26
+#define CAL_SABBREVMONTHNAME6  0x27
+#define CAL_SABBREVMONTHNAME7  0x28
+#define CAL_SABBREVMONTHNAME8  0x29
+#define CAL_SABBREVMONTHNAME9  0x2a
+#define CAL_SABBREVMONTHNAME10 0x2b
+#define CAL_SABBREVMONTHNAME11 0x2c
+#define CAL_SABBREVMONTHNAME12 0x2d
+#define CAL_SABBREVMONTHNAME13 0x2e
+#define CAL_SYEARMONTH         0x2f
+#define CAL_ITWODIGITYEARMAX   0x30
+
+/* Calendar types */
+#define CAL_GREGORIAN              1
+#define CAL_GREGORIAN_US           2
+#define CAL_JAPAN                  3
+#define CAL_TAIWAN                 4
+#define CAL_KOREA                  5
+#define CAL_HIJRI                  6
+#define CAL_THAI                   7
+#define CAL_HEBREW                 8
+#define CAL_GREGORIAN_ME_FRENCH    9
+#define CAL_GREGORIAN_ARABIC       10
+#define CAL_GREGORIAN_XLIT_ENGLISH 11
+#define CAL_GREGORIAN_XLIT_FRENCH  12
+
+/* EnumCalendarInfo Flags */
+#define ENUM_ALL_CALENDARS 0xffffffff /* Enumerate all calendars within a locale */
+
+/* CompareString results */
+#define CSTR_LESS_THAN    1
+#define CSTR_EQUAL        2
+#define CSTR_GREATER_THAN 3
+
+/*
+ * Language Group IDs.
+ * Resources in kernel32 are LGRPID_xxx+0x2000 because low values were used by LOCALE_xxx
+ * This is done because resources in win2k kernel32 / winxp kernel32 are not even
+ * stored the same way.
+ */
+#define LGRPID_WESTERN_EUROPE      0x01 /* Includes US and Africa */
+#define LGRPID_CENTRAL_EUROPE      0x02
+#define LGRPID_BALTIC              0x03
+#define LGRPID_GREEK               0x04
+#define LGRPID_CYRILLIC            0x05
+#define LGRPID_TURKISH             0x06
+#define LGRPID_JAPANESE            0x07
+#define LGRPID_KOREAN              0x08
+#define LGRPID_TRADITIONAL_CHINESE 0x09
+#define LGRPID_SIMPLIFIED_CHINESE  0x0A
+#define LGRPID_THAI                0x0B
+#define LGRPID_HEBREW              0x0C
+#define LGRPID_ARABIC              0x0D
+#define LGRPID_VIETNAMESE          0x0E
+#define LGRPID_INDIC               0x0F
+#define LGRPID_GEORGIAN            0x10
+#define LGRPID_ARMENIAN            0x11
+
+/* Types
+ */
+
+typedef DWORD CALID;
+typedef DWORD CALTYPE;
+typedef LONG  GEOID;
+typedef DWORD GEOCLASS;
+typedef DWORD GEOTYPE;
+typedef DWORD LCTYPE;
+typedef DWORD LGRPID;
+
+typedef struct
+{
+    UINT MaxCharSize;
+    BYTE DefaultChar[MAX_DEFAULTCHAR];
+    BYTE LeadByte[MAX_LEADBYTES];
+} CPINFO, *LPCPINFO;
+
+typedef struct
+{
+    UINT MaxCharSize;
+    BYTE DefaultChar[MAX_DEFAULTCHAR];
+    BYTE LeadByte[MAX_LEADBYTES];
+    WCHAR UnicodeDefaultChar;
+    UINT CodePage;
+    CHAR CodePageName[MAX_PATH];
+} CPINFOEXA, *LPCPINFOEXA;
+
+typedef struct
+{
+    UINT MaxCharSize;
+    BYTE DefaultChar[MAX_DEFAULTCHAR];
+    BYTE LeadByte[MAX_LEADBYTES];
+    WCHAR UnicodeDefaultChar;
+    UINT CodePage;
+    WCHAR CodePageName[MAX_PATH];
+} CPINFOEXW, *LPCPINFOEXW;
+
+DECL_WINELIB_TYPE_AW(CPINFOEX)
+DECL_WINELIB_TYPE_AW(LPCPINFOEX)
+
+typedef struct _numberfmtA {
+    UINT NumDigits;
+    UINT LeadingZero;
+    UINT Grouping;
+    LPSTR lpDecimalSep;
+    LPSTR lpThousandSep;
+    UINT NegativeOrder;
+} NUMBERFMTA, *LPNUMBERFMTA;
+
+typedef struct _numberfmtW {
+    UINT NumDigits;
+    UINT LeadingZero;
+    UINT Grouping;
+    LPWSTR lpDecimalSep;
+    LPWSTR lpThousandSep;
+    UINT NegativeOrder;
+} NUMBERFMTW, *LPNUMBERFMTW;
+
+DECL_WINELIB_TYPE_AW(NUMBERFMT)
+DECL_WINELIB_TYPE_AW(LPNUMBERFMT)
+
+typedef struct _currencyfmtA
+{
+    UINT NumDigits;
+    UINT LeadingZero;
+    UINT Grouping;
+    LPSTR lpDecimalSep;
+    LPSTR lpThousandSep;
+    UINT NegativeOrder;
+    UINT PositiveOrder;
+    LPSTR lpCurrencySymbol;
+} CURRENCYFMTA, *LPCURRENCYFMTA;
+
+typedef struct _currencyfmtW
+{
+    UINT NumDigits;
+    UINT LeadingZero;
+    UINT Grouping;
+    LPWSTR lpDecimalSep;
+    LPWSTR lpThousandSep;
+    UINT NegativeOrder;
+    UINT PositiveOrder;
+    LPWSTR lpCurrencySymbol;
+} CURRENCYFMTW, *LPCURRENCYFMTW;
+
+DECL_WINELIB_TYPE_AW(CURRENCYFMT)
+DECL_WINELIB_TYPE_AW(LPCURRENCYFMT)
+
+
+/* Define a bunch of callback types */
+
+#if defined(STRICT)
+typedef BOOL    (CALLBACK *CALINFO_ENUMPROCA)(LPSTR);
+typedef BOOL    (CALLBACK *CALINFO_ENUMPROCW)(LPWSTR);
+typedef BOOL    (CALLBACK *CALINFO_ENUMPROCEXA)(LPSTR,CALID);
+typedef BOOL    (CALLBACK *CALINFO_ENUMPROCEXW)(LPWSTR,CALID);
+typedef BOOL    (CALLBACK *CODEPAGE_ENUMPROCA)(LPSTR);
+typedef BOOL    (CALLBACK *CODEPAGE_ENUMPROCW)(LPWSTR);
+typedef BOOL    (CALLBACK *DATEFMT_ENUMPROCA)(LPSTR);
+typedef BOOL    (CALLBACK *DATEFMT_ENUMPROCW)(LPWSTR);
+typedef BOOL    (CALLBACK *DATEFMT_ENUMPROCEXA)(LPSTR,CALID);
+typedef BOOL    (CALLBACK *DATEFMT_ENUMPROCEXW)(LPWSTR,CALID);
+typedef BOOL    (CALLBACK *GEO_ENUMPROC)(GEOID);
+typedef BOOL    (CALLBACK *LANGGROUPLOCALE_ENUMPROCA)(LGRPID,LCID,LPSTR,LONG_PTR);
+typedef BOOL    (CALLBACK *LANGGROUPLOCALE_ENUMPROCW)(LGRPID,LCID,LPWSTR,LONG_PTR);
+typedef BOOL    (CALLBACK *LANGUAGEGROUP_ENUMPROCA)(LGRPID,LPSTR,LPSTR,DWORD,LONG_PTR);
+typedef BOOL    (CALLBACK *LANGUAGEGROUP_ENUMPROCW)(LGRPID,LPWSTR,LPWSTR,DWORD,LONG_PTR);
+typedef BOOL    (CALLBACK *LOCALE_ENUMPROCA)(LPSTR);
+typedef BOOL    (CALLBACK *LOCALE_ENUMPROCW)(LPWSTR);
+typedef BOOL    (CALLBACK *TIMEFMT_ENUMPROCA)(LPSTR);
+typedef BOOL    (CALLBACK *TIMEFMT_ENUMPROCW)(LPWSTR);
+typedef BOOL    (CALLBACK *UILANGUAGE_ENUMPROCA)(LPSTR,LONG_PTR);
+typedef BOOL    (CALLBACK *UILANGUAGE_ENUMPROCW)(LPWSTR,LONG_PTR);
+#else
+typedef FARPROC CALINFO_ENUMPROCA;
+typedef FARPROC CALINFO_ENUMPROCW;
+typedef FARPROC CALINFO_ENUMPROCEXA;
+typedef FARPROC CALINFO_ENUMPROCEXW;
+typedef FARPROC CODEPAGE_ENUMPROCA;
+typedef FARPROC CODEPAGE_ENUMPROCW;
+typedef FARPROC DATEFMT_ENUMPROCA;
+typedef FARPROC DATEFMT_ENUMPROCW;
+typedef FARPROC DATEFMT_ENUMPROCEXA;
+typedef FARPROC DATEFMT_ENUMPROCEXW;
+typedef FARPROC GEO_ENUMPROC;
+typedef FARPROC LANGGROUPLOCALE_ENUMPROCA;
+typedef FARPROC LANGGROUPLOCALE_ENUMPROCW;
+typedef FARPROC LANGUAGEGROUP_ENUMPROCA;
+typedef FARPROC LANGUAGEGROUP_ENUMPROCW;
+typedef FARPROC LOCALE_ENUMPROCA;
+typedef FARPROC LOCALE_ENUMPROCW;
+typedef FARPROC TIMEFMT_ENUMPROCA;
+typedef FARPROC TIMEFMT_ENUMPROCW;
+typedef FARPROC UILANGUAGE_ENUMPROCA;
+typedef FARPROC UILANGUAGE_ENUMPROCW;
+#endif /* STRICT */
+
+DECL_WINELIB_TYPE_AW(CALINFO_ENUMPROC)
+DECL_WINELIB_TYPE_AW(CALINFO_ENUMPROCEX)
+DECL_WINELIB_TYPE_AW(CODEPAGE_ENUMPROC)
+DECL_WINELIB_TYPE_AW(DATEFMT_ENUMPROC)
+DECL_WINELIB_TYPE_AW(DATEFMT_ENUMPROCEX)
+DECL_WINELIB_TYPE_AW(LANGGROUPLOCALE_ENUMPROC)
+DECL_WINELIB_TYPE_AW(LANGUAGEGROUP_ENUMPROC)
+DECL_WINELIB_TYPE_AW(LOCALE_ENUMPROC)
+DECL_WINELIB_TYPE_AW(TIMEFMT_ENUMPROC)
+DECL_WINELIB_TYPE_AW(UILANGUAGE_ENUMPROC)
+
+/* Geographic Information types */
+enum SYSGEOTYPE
+{
+    GEO_NATION = 1,
+    GEO_LATITUDE,
+    GEO_LONGITUDE,
+    GEO_ISO2,
+    GEO_ISO3,
+    GEO_RFC1766,
+    GEO_LCID,
+    GEO_FRIENDLYNAME,
+    GEO_OFFICIALNAME,
+    GEO_TIMEZONES,
+    GEO_OFFICIALLANGUAGES
+};
+
+enum SYSGEOCLASS
+{
+    GEOCLASS_REGION = 14,
+    GEOCLASS_NATION = 16
+};
+
+#define GEOID_NOT_AVAILABLE (-1)
+
+
+/* NLS Functions.
+ */
+
+WINBASEAPI INT         WINAPI CompareStringA(LCID,DWORD,LPCSTR,INT,LPCSTR,INT);
+WINBASEAPI INT         WINAPI CompareStringW(LCID,DWORD,LPCWSTR,INT,LPCWSTR,INT);
+#define                       CompareString WINELIB_NAME_AW(CompareString)
+WINBASEAPI LCID        WINAPI ConvertDefaultLocale(LCID);
+WINBASEAPI BOOL        WINAPI EnumCalendarInfoA(CALINFO_ENUMPROCA,LCID,CALID,CALTYPE);
+WINBASEAPI BOOL        WINAPI EnumCalendarInfoW(CALINFO_ENUMPROCW,LCID,CALID,CALTYPE);
+#define                       EnumCalendarInfo WINELIB_NAME_AW(EnumCalendarInfo)
+WINBASEAPI BOOL        WINAPI EnumCalendarInfoExA(CALINFO_ENUMPROCEXA,LCID,CALID,CALTYPE);
+WINBASEAPI BOOL        WINAPI EnumCalendarInfoExW(CALINFO_ENUMPROCEXW,LCID,CALID,CALTYPE);
+#define                       EnumCalendarInfoEx WINELIB_NAME_AW(EnumCalendarInfoEx)
+WINBASEAPI BOOL        WINAPI EnumDateFormatsA(DATEFMT_ENUMPROCA,LCID,DWORD);
+WINBASEAPI BOOL        WINAPI EnumDateFormatsW(DATEFMT_ENUMPROCW,LCID,DWORD);
+#define                       EnumDateFormats WINELIB_NAME_AW(EnumDateFormats)
+WINBASEAPI BOOL        WINAPI EnumDateFormatsExA(DATEFMT_ENUMPROCEXA,LCID,DWORD);
+WINBASEAPI BOOL        WINAPI EnumDateFormatsExW(DATEFMT_ENUMPROCEXW,LCID,DWORD);
+#define                       EnumDateFormatsEx WINELIB_NAME_AW(EnumDateFormatsEx)
+WINBASEAPI BOOL        WINAPI EnumSystemCodePagesA(CODEPAGE_ENUMPROCA,DWORD);
+WINBASEAPI BOOL        WINAPI EnumSystemCodePagesW(CODEPAGE_ENUMPROCW,DWORD);
+#define                       EnumSystemCodePages WINELIB_NAME_AW(EnumSystemCodePages)
+WINBASEAPI BOOL        WINAPI EnumSystemGeoID(GEOCLASS,GEOID,GEO_ENUMPROC);
+WINBASEAPI BOOL        WINAPI EnumSystemLocalesA(LOCALE_ENUMPROCA,DWORD);
+WINBASEAPI BOOL        WINAPI EnumSystemLocalesW(LOCALE_ENUMPROCW,DWORD);
+#define                       EnumSystemLocales WINELIB_NAME_AW(EnumSystemLocales)
+WINBASEAPI BOOL        WINAPI EnumSystemLanguageGroupsA(LANGUAGEGROUP_ENUMPROCA,DWORD,LONG_PTR);
+WINBASEAPI BOOL        WINAPI EnumSystemLanguageGroupsW(LANGUAGEGROUP_ENUMPROCW,DWORD,LONG_PTR);
+#define                       EnumSystemLanguageGroups WINELIB_NAME_AW(EnumSystemLanguageGroups)
+WINBASEAPI BOOL        WINAPI EnumLanguageGroupLocalesA(LANGGROUPLOCALE_ENUMPROCA,LGRPID,DWORD,LONG_PTR);
+WINBASEAPI BOOL        WINAPI EnumLanguageGroupLocalesW(LANGGROUPLOCALE_ENUMPROCW,LGRPID,DWORD,LONG_PTR);
+#define                       EnumLanguageGroupLocales WINELIB_NAME_AW(EnumLanguageGroupLocales)
+WINBASEAPI BOOL        WINAPI EnumTimeFormatsA(TIMEFMT_ENUMPROCA,LCID,DWORD);
+WINBASEAPI BOOL        WINAPI EnumTimeFormatsW(TIMEFMT_ENUMPROCW,LCID,DWORD);
+#define                       EnumTimeFormats WINELIB_NAME_AW(EnumTimeFormats)
+WINBASEAPI BOOL        WINAPI EnumUILanguagesA(UILANGUAGE_ENUMPROCA,DWORD,LONG_PTR);
+WINBASEAPI BOOL        WINAPI EnumUILanguagesW(UILANGUAGE_ENUMPROCW,DWORD,LONG_PTR);
+#define                       EnumUILanguages WINELIB_NAME_AW(EnumUILanguages)
+WINBASEAPI INT         WINAPI FoldStringA(DWORD,LPCSTR,INT,LPSTR,INT);
+WINBASEAPI INT         WINAPI FoldStringW(DWORD,LPCWSTR,INT,LPWSTR,INT);
+#define                       FoldString WINELIB_NAME_AW(FoldString)
+WINBASEAPI UINT        WINAPI GetACP(void);
+WINBASEAPI BOOL        WINAPI GetCPInfo(UINT,LPCPINFO);
+WINBASEAPI BOOL        WINAPI GetCPInfoExA(UINT,DWORD,LPCPINFOEXA);
+WINBASEAPI BOOL        WINAPI GetCPInfoExW(UINT,DWORD,LPCPINFOEXW);
+#define                       GetCPInfoEx WINELIB_NAME_AW(GetCPInfoEx)
+WINBASEAPI INT         WINAPI GetCalendarInfoA(LCID,DWORD,DWORD,LPSTR,INT,LPDWORD);
+WINBASEAPI INT         WINAPI GetCalendarInfoW(LCID,DWORD,DWORD,LPWSTR,INT,LPDWORD);
+#define                       GetCalendarInfo WINELIB_NAME_AW(GetCalendarInfo)
+WINBASEAPI INT         WINAPI GetCurrencyFormatA(LCID,DWORD,LPCSTR,const CURRENCYFMTA*,LPSTR,INT);
+WINBASEAPI INT         WINAPI GetCurrencyFormatW(LCID,DWORD,LPCWSTR,const CURRENCYFMTW*,LPWSTR,INT);
+#define                       GetCurrencyFormat WINELIB_NAME_AW(GetCurrencyFormat)
+WINBASEAPI INT         WINAPI GetDateFormatA(LCID,DWORD,const SYSTEMTIME*,LPCSTR,LPSTR,INT);
+WINBASEAPI INT         WINAPI GetDateFormatW(LCID,DWORD,const SYSTEMTIME*,LPCWSTR,LPWSTR,INT);
+#define                       GetDateFormat WINELIB_NAME_AW(GetDateFormat)
+WINBASEAPI INT         WINAPI GetGeoInfoA(GEOID,GEOTYPE,LPSTR,INT,LANGID);
+WINBASEAPI INT         WINAPI GetGeoInfoW(GEOID,GEOTYPE,LPWSTR,INT,LANGID);
+#define                       GetGeoInfo WINELIB_NAME_AW(GetGeoInfo)
+WINBASEAPI INT         WINAPI GetLocaleInfoA(LCID,LCTYPE,LPSTR,INT);
+WINBASEAPI INT         WINAPI GetLocaleInfoW(LCID,LCTYPE,LPWSTR,INT);
+#define                       GetLocaleInfo WINELIB_NAME_AW(GetLocaleInfo)
+WINBASEAPI INT         WINAPI GetNumberFormatA(LCID,DWORD,LPCSTR,const NUMBERFMTA*,LPSTR,INT);
+WINBASEAPI INT         WINAPI GetNumberFormatW(LCID,DWORD,LPCWSTR,const NUMBERFMTW*,LPWSTR,INT);
+#define                       GetNumberFormat WINELIB_NAME_AW(GetNumberFormat)
+WINBASEAPI UINT        WINAPI GetOEMCP(void);
+WINBASEAPI BOOL        WINAPI GetStringTypeA(LCID,DWORD,LPCSTR,INT,LPWORD);
+WINBASEAPI BOOL        WINAPI GetStringTypeW(DWORD,LPCWSTR,INT,LPWORD);
+WINBASEAPI BOOL        WINAPI GetStringTypeExA(LCID,DWORD,LPCSTR,INT,LPWORD);
+WINBASEAPI BOOL        WINAPI GetStringTypeExW(LCID,DWORD,LPCWSTR,INT,LPWORD);
+#define                       GetStringTypeEx WINELIB_NAME_AW(GetStringTypeEx)
+WINBASEAPI LANGID      WINAPI GetSystemDefaultLangID(void);
+WINBASEAPI LCID        WINAPI GetSystemDefaultLCID(void);
+WINBASEAPI LANGID      WINAPI GetSystemDefaultUILanguage(void);
+WINBASEAPI LCID        WINAPI GetThreadLocale(void);
+WINBASEAPI INT         WINAPI GetTimeFormatA(LCID,DWORD,const SYSTEMTIME*,LPCSTR,LPSTR,INT);
+WINBASEAPI INT         WINAPI GetTimeFormatW(LCID,DWORD,const SYSTEMTIME*,LPCWSTR,LPWSTR,INT);
+#define                       GetTimeFormat WINELIB_NAME_AW(GetTimeFormat)
+WINBASEAPI LANGID      WINAPI GetUserDefaultLangID(void);
+WINBASEAPI LCID        WINAPI GetUserDefaultLCID(void);
+WINBASEAPI LANGID      WINAPI GetUserDefaultUILanguage(void);
+WINBASEAPI GEOID       WINAPI GetUserGeoID(GEOCLASS);
+WINBASEAPI BOOL        WINAPI IsDBCSLeadByte(BYTE);
+WINBASEAPI BOOL        WINAPI IsDBCSLeadByteEx(UINT,BYTE);
+WINBASEAPI BOOL        WINAPI IsValidCodePage(UINT);
+WINBASEAPI BOOL        WINAPI IsValidLocale(LCID,DWORD);
+WINBASEAPI BOOL        WINAPI IsValidLanguageGroup(LGRPID,DWORD);
+WINBASEAPI INT         WINAPI LCIDToLocaleName(LCID,LPWSTR,INT,DWORD);
+WINBASEAPI INT         WINAPI LCMapStringA(LCID,DWORD,LPCSTR,INT,LPSTR,INT);
+WINBASEAPI INT         WINAPI LCMapStringW(LCID,DWORD,LPCWSTR,INT,LPWSTR,INT);
+#define                       LCMapString WINELIB_NAME_AW(LCMapString)
+WINBASEAPI LCID        WINAPI LocaleNameToLCID(LPCWSTR,DWORD);
+WINBASEAPI INT         WINAPI MultiByteToWideChar(UINT,DWORD,LPCSTR,INT,LPWSTR,INT);
+WINBASEAPI INT         WINAPI SetCalendarInfoA(LCID,CALID,CALTYPE,LPCSTR);
+WINBASEAPI INT         WINAPI SetCalendarInfoW(LCID,CALID,CALTYPE,LPCWSTR);
+#define                       SetCalendarInfo WINELIB_NAME_AW(SetCalendarInfo)
+WINBASEAPI BOOL        WINAPI SetLocaleInfoA(LCID,LCTYPE,LPCSTR);
+WINBASEAPI BOOL        WINAPI SetLocaleInfoW(LCID,LCTYPE,LPCWSTR);
+#define                       SetLocaleInfo WINELIB_NAME_AW(SetLocaleInfo)
+WINBASEAPI BOOL        WINAPI SetThreadLocale(LCID);
+WINBASEAPI BOOL        WINAPI SetUserGeoID(GEOID);
+WINBASEAPI INT         WINAPI WideCharToMultiByte(UINT,DWORD,LPCWSTR,INT,LPSTR,INT,LPCSTR,LPBOOL);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !NONLS */
+#endif  /* __WINE_WINNLS_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winnls32.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winnls32.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winnls32.h	(revision 16410)
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2005 Diego Petteno
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _WINNLS32_
+#define _WINNLS32_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+UINT        WINAPI WINNLSGetIMEHotkey(HWND);
+BOOL        WINAPI WINNLSEnableIME(HWND, BOOL);
+BOOL        WINAPI WINNLSGetEnableStatus(HWND);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* _WINNLS32_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winnt.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winnt.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winnt.h	(revision 16410)
@@ -0,0 +1,4950 @@
+/*
+ * Win32 definitions for Windows NT
+ *
+ * Copyright 1996 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _WINNT_
+#define _WINNT_
+
+#include <basetsd.h>
+#include <guiddef.h>
+
+#ifndef RC_INVOKED
+#include <ctype.h>
+#include <stddef.h>
+#include <string.h>
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef _NTSYSTEM_
+#define NTSYSAPI
+#else
+#define NTSYSAPI DECLSPEC_IMPORT
+#endif
+
+#define NTAPI __stdcall
+
+#ifndef MIDL_PASS
+# if defined(_MSC_VER)
+#  define DECLSPEC_IMPORT __declspec(dllimport)
+# elif defined(__MINGW32__) || defined(__CYGWIN__)
+#  define DECLSPEC_IMPORT __attribute__((dllimport))
+# else
+#  define DECLSPEC_IMPORT DECLSPEC_HIDDEN
+# endif
+#else
+# define DECLSPEC_IMPORT
+#endif
+
+#ifndef DECLSPEC_NORETURN
+# if defined(_MSC_VER) && (_MSC_VER >= 1200) && !defined(MIDL_PASS)
+#  define DECLSPEC_NORETURN __declspec(noreturn)
+# elif defined(__GNUC__)
+#  define DECLSPEC_NORETURN __attribute__((noreturn))
+# else
+#  define DECLSPEC_NORETURN
+# endif
+#endif
+
+#ifndef DECLSPEC_ALIGN
+# if defined(_MSC_VER) && (_MSC_VER >= 1300) && !defined(MIDL_PASS)
+#  define DECLSPEC_ALIGN(x) __declspec(align(x))
+# elif defined(__GNUC__)
+#  define DECLSPEC_ALIGN(x) __attribute__((aligned(x)))
+# else
+#  define DECLSPEC_ALIGN(x)
+# endif
+#endif
+
+#ifndef DECLSPEC_CACHEALIGN
+# define DECLSPEC_CACHEALIGN DECLSPEC_ALIGN(128)
+#endif
+
+#ifndef DECLSPEC_UUID
+# if defined(_MSC_VER) && (_MSC_VER >= 1100) && defined (__cplusplus)
+#  define DECLSPEC_UUID(x) __declspec(uuid(x))
+# else
+#  define DECLSPEC_UUID(x)
+# endif
+#endif
+
+#ifndef DECLSPEC_NOVTABLE
+# if defined(_MSC_VER) && (_MSC_VER >= 1100) && defined(__cplusplus)
+#  define DECLSPEC_NOVTABLE __declspec(novtable)
+# else
+#  define DECLSPEC_NOVTABLE
+# endif
+#endif
+
+#ifndef DECLSPEC_SELECTANY
+#if defined(_MSC_VER) && (_MSC_VER >= 1100)
+#define DECLSPEC_SELECTANY __declspec(selectany)
+#else
+#define DECLSPEC_SELECTANY
+#endif
+#endif
+
+#ifndef NOP_FUNCTION
+# if defined(_MSC_VER) && (_MSC_VER >= 1210)
+#  define NOP_FUNCTION __noop
+# else
+#  define NOP_FUNCTION (void)0
+# endif
+#endif
+
+#ifndef DECLSPEC_ADDRSAFE
+# if defined(_MSC_VER) && (_MSC_VER >= 1200) && (defined(_M_ALPHA) || defined(_M_AXP64))
+#  define DECLSPEC_ADDRSAFE __declspec(address_safe)
+# else
+#  define DECLSPEC_ADDRSAFE
+# endif
+#endif
+
+#ifndef FORCEINLINE
+# if defined(_MSC_VER) && (_MSC_VER >= 1200)
+#  define FORCEINLINE __forceinline
+# elif defined(__GNUC__) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 2)))
+#  define FORCEINLINE __attribute__((always_inline))
+# else
+#  define FORCEINLINE inline
+# endif
+#endif
+
+#ifndef DECLSPEC_DEPRECATED
+# if defined(_MSC_VER) && (_MSC_VER >= 1300) && !defined(MIDL_PASS)
+#  define DECLSPEC_DEPRECATED __declspec(deprecated)
+#  define DEPRECATE_SUPPORTED
+# elif defined(__GNUC__) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 2)))
+#  define DECLSPEC_DEPRECATED __attribute__((deprecated))
+#  define DEPRECATE_SUPPORTED
+# else
+#  define DECLSPEC_DEPRECATED
+#  undef  DEPRECATE_SUPPORTED
+# endif
+#endif
+
+/* a couple of useful Wine extensions */
+
+#ifdef _MSC_VER
+# define DECLSPEC_EXPORT __declspec(dllexport)
+#elif defined(__MINGW32__)
+# define DECLSPEC_EXPORT __attribute__((dllexport))
+#elif defined(__GNUC__) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)))
+# define DECLSPEC_EXPORT __attribute__((visibility ("default")))
+#else
+# define DECLSPEC_EXPORT
+#endif
+
+#if defined(__MSC_VER) || defined(__MINGW32__) || defined(__CYGWIN__)
+# define DECLSPEC_HIDDEN
+#elif defined(__GNUC__) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)))
+# define DECLSPEC_HIDDEN __attribute__((visibility ("hidden")))
+#else
+# define DECLSPEC_HIDDEN
+#endif
+
+#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)))
+#define __WINE_ALLOC_SIZE(x) __attribute__((__alloc_size__(x)))
+#else
+#define __WINE_ALLOC_SIZE(x)
+#endif
+
+/* Anonymous union/struct handling */
+
+#ifndef NONAMELESSSTRUCT
+# ifdef __GNUC__
+   /* Anonymous struct support starts with gcc 2.96 or gcc/g++ 3.x */
+#  if (__GNUC__ < 2) || ((__GNUC__ == 2) && (defined(__cplusplus) || (__GNUC_MINOR__ < 96)))
+#   define NONAMELESSSTRUCT
+#  endif
+# elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+#  define NONAMELESSSTRUCT
+# endif
+#endif  /* NONAMELESSSTRUCT */
+
+#ifndef NONAMELESSUNION
+# ifdef __GNUC__
+   /* Anonymous unions support starts with gcc 2.96/g++ 2.95 */
+#  if (__GNUC__ < 2) || ((__GNUC__ == 2) && ((__GNUC_MINOR__ < 95) || ((__GNUC_MINOR__ == 95) && !defined(__cplusplus))))
+#   define NONAMELESSUNION
+#  endif
+# elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+#  define NONAMELESSUNION
+# endif
+#endif  /* NONAMELESSUNION */
+
+#ifndef NONAMELESSSTRUCT
+#define DUMMYSTRUCTNAME
+#define DUMMYSTRUCTNAME1
+#define DUMMYSTRUCTNAME2
+#define DUMMYSTRUCTNAME3
+#define DUMMYSTRUCTNAME4
+#define DUMMYSTRUCTNAME5
+#else /* !defined(NONAMELESSSTRUCT) */
+#define DUMMYSTRUCTNAME   s
+#define DUMMYSTRUCTNAME1  s1
+#define DUMMYSTRUCTNAME2  s2
+#define DUMMYSTRUCTNAME3  s3
+#define DUMMYSTRUCTNAME4  s4
+#define DUMMYSTRUCTNAME5  s5
+#endif /* !defined(NONAMELESSSTRUCT) */
+
+#ifndef NONAMELESSUNION
+#define DUMMYUNIONNAME
+#define DUMMYUNIONNAME1
+#define DUMMYUNIONNAME2
+#define DUMMYUNIONNAME3
+#define DUMMYUNIONNAME4
+#define DUMMYUNIONNAME5
+#define DUMMYUNIONNAME6
+#define DUMMYUNIONNAME7
+#define DUMMYUNIONNAME8
+#else /* !defined(NONAMELESSUNION) */
+#define DUMMYUNIONNAME   u
+#define DUMMYUNIONNAME1  u1
+#define DUMMYUNIONNAME2  u2
+#define DUMMYUNIONNAME3  u3
+#define DUMMYUNIONNAME4  u4
+#define DUMMYUNIONNAME5  u5
+#define DUMMYUNIONNAME6  u6
+#define DUMMYUNIONNAME7  u7
+#define DUMMYUNIONNAME8  u8
+#endif /* !defined(NONAMELESSUNION) */
+
+/* C99 restrict support */
+
+#if defined(ENABLE_RESTRICTED) && !defined(MIDL_PASS) && !defined(RC_INVOKED)
+# if defined(_MSC_VER) && defined(_M_MRX000)
+#  define RESTRICTED_POINTER __restrict
+# elif defined(__GNUC__) && ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 95)))
+#  define RESTRICTED_POINTER __restrict
+# else
+#  define RESTRICTED_POINTER
+# endif
+#else
+# define RESTRICTED_POINTER
+#endif
+
+/* C99 unaligned support */
+
+#if defined(_MSC_VER) && (defined(_M_MRX000) || defined(_M_ALPHA) || defined(_M_PPC) || defined(_M_IA64) || defined(_M_AMD64))
+# define UNALIGNED __unaligned
+# ifdef _WIN64
+#  define UNALIGNED64 __unaligned
+# else
+#  define UNALIGNED64
+# endif
+#else
+# define UNALIGNED
+# define UNALIGNED64
+#endif
+
+/* Alignment macros */
+
+#if defined(_WIN64) || (defined(_MSC_VER) && defined(_M_ALPHA)) || defined(__alpha__)
+#define MAX_NATURAL_ALIGNMENT sizeof(ULONGLONG)
+#define MEMORY_ALLOCATION_ALIGNMENT 16
+#else
+#define MAX_NATURAL_ALIGNMENT sizeof(DWORD)
+#define MEMORY_ALLOCATION_ALIGNMENT 8
+#endif
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1300) && defined(__cplusplus)
+# define TYPE_ALIGNMENT(t) __alignof(t)
+#elif defined(__GNUC__)
+# define TYPE_ALIGNMENT(t) __alignof__(t)
+#else
+# define TYPE_ALIGNMENT(t) FIELD_OFFSET(struct { char x; t test; }, test)
+#endif
+
+#ifdef _WIN64
+# define PROBE_ALIGNMENT(_s) \
+    (TYPE_ALIGNMENT(_s) > TYPE_ALIGNMENT(DWORD) ? \
+    TYPE_ALIGNMENT(_s) : TYPE_ALIGNMENT(DWORD))
+# define PROBE_ALIGNMENT32(_s) TYPE_ALIGNMENT(DWORD)
+#else
+# define PROBE_ALIGNMENT(_s) TYPE_ALIGNMENT(DWORD)
+#endif
+
+/* Compile time assertion */
+
+#if defined(_MSC_VER)
+# define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1]
+#elif defined(__GNUC__) 
+# define C_ASSERT(e) extern char __C_ASSERT__[(e)?1:-1] __attribute__((unused))
+#else
+# define C_ASSERT(e)
+#endif
+
+/* Eliminate Microsoft C/C++ compiler warning 4715 */
+#if (_MSC_VER > 1200)
+# define DEFAULT_UNREACHABLE default: __assume(0)
+#else
+# define DEFAULT_UNREACHABLE
+#endif
+
+/* Error Masks */
+#define APPLICATION_ERROR_MASK       0x20000000
+#define ERROR_SEVERITY_SUCCESS       0x00000000
+#define ERROR_SEVERITY_INFORMATIONAL 0x40000000
+#define ERROR_SEVERITY_WARNING       0x80000000
+#define ERROR_SEVERITY_ERROR         0xC0000000
+
+/* Microsoft's macros for declaring functions */
+
+#ifdef __cplusplus
+# define EXTERN_C    extern "C"
+#else
+# define EXTERN_C    extern
+#endif
+
+#define STDMETHODCALLTYPE       __stdcall
+#define STDMETHODVCALLTYPE      __cdecl
+#define STDAPICALLTYPE          __stdcall
+#define STDAPIVCALLTYPE         __cdecl
+
+#define STDAPI                  EXTERN_C HRESULT STDAPICALLTYPE
+#define STDAPI_(type)           EXTERN_C type STDAPICALLTYPE
+#define STDMETHODIMP            HRESULT STDMETHODCALLTYPE
+#define STDMETHODIMP_(type)     type STDMETHODCALLTYPE
+#define STDAPIV                 EXTERN_C HRESULT STDAPIVCALLTYPE
+#define STDAPIV_(type)          EXTERN_C type STDAPIVCALLTYPE
+#define STDMETHODIMPV           HRESULT STDMETHODVCALLTYPE
+#define STDMETHODIMPV_(type)    type STDMETHODVCALLTYPE
+
+/* Define the basic types */
+#ifndef VOID
+#define VOID void
+#endif
+typedef VOID           *PVOID;
+typedef VOID           *PVOID64;
+typedef BYTE            BOOLEAN,    *PBOOLEAN;
+typedef char            CHAR,       *PCHAR;
+typedef short           SHORT,      *PSHORT;
+#ifdef _MSC_VER
+typedef long            LONG,       *PLONG;
+#else
+typedef int             LONG,       *PLONG;
+#endif
+
+/* Some systems might have wchar_t, but we really need 16 bit characters */
+#ifdef WINE_UNICODE_NATIVE
+typedef wchar_t         WCHAR,      *PWCHAR;
+#else
+typedef unsigned short  WCHAR,      *PWCHAR;
+#endif
+
+/* 'Extended/Wide' numerical types */
+#ifndef _ULONGLONG_
+# define _ULONGLONG_
+# ifdef _MSC_VER
+typedef signed __int64   LONGLONG,  *PLONGLONG;
+typedef unsigned __int64 ULONGLONG, *PULONGLONG;
+# else
+typedef signed __int64   DECLSPEC_ALIGN(8) LONGLONG,   *PLONGLONG;
+typedef unsigned __int64 DECLSPEC_ALIGN(8) ULONGLONG,  *PULONGLONG;
+# endif
+#endif
+
+#ifndef _DWORDLONG_
+# define _DWORDLONG_
+# ifdef _MSC_VER
+typedef ULONGLONG DWORDLONG, *PDWORDLONG;
+# else
+typedef ULONGLONG   DECLSPEC_ALIGN(8) DWORDLONG,   *PDWORDLONG;
+# endif
+#endif
+
+/* ANSI string types */
+typedef CHAR           *PCH,        *LPCH;
+typedef const CHAR     *PCCH,       *LPCCH;
+typedef CHAR           *PSTR,       *LPSTR,     *NPSTR;
+typedef const CHAR     *PCSTR,      *LPCSTR;
+
+/* Unicode string types */
+typedef WCHAR          *PWCH,       *LPWCH;
+typedef const WCHAR    *PCWCH,      *LPCWCH;
+typedef WCHAR          *PWSTR,      *LPWSTR,    *NWPSTR;
+typedef const WCHAR    *PCWSTR,     *LPCWSTR;
+
+/* Neutral character and string types */
+/* These are only defined for Winelib, i.e. _not_ defined for
+ * the emulator. The reason is they depend on the UNICODE
+ * macro which only exists in the user's code.
+ */
+#ifndef WINE_NO_UNICODE_MACROS
+# ifdef UNICODE
+# ifndef _TCHAR_DEFINED
+typedef WCHAR           TCHAR,      *PTCHAR;
+# define _TCHAR_DEFINED
+#endif
+typedef LPWSTR          PTSTR,       LPTSTR;
+typedef LPCWSTR         PCTSTR,      LPCTSTR;
+#  define __TEXT(string) L##string
+# else  /* UNICODE */
+# ifndef _TCHAR_DEFINED
+typedef CHAR            TCHAR,      *PTCHAR;
+# define _TCHAR_DEFINED
+# endif
+typedef LPSTR           PTSTR,       LPTSTR;
+typedef LPCSTR          PCTSTR,      LPCTSTR;
+#  define __TEXT(string) string
+# endif /* UNICODE */
+# define TEXT(quote) __TEXT(quote)
+#endif   /* WINE_NO_UNICODE_MACROS */
+
+/* Misc common WIN32 types */
+typedef char            CCHAR;
+typedef DWORD           LCID,       *PLCID;
+typedef WORD            LANGID;
+typedef DWORD		EXECUTION_STATE;
+#ifndef _HRESULT_DEFINED
+#define _HRESULT_DEFINED
+typedef LONG            HRESULT;
+#endif
+
+/* Handle type */
+
+typedef void *HANDLE;
+typedef HANDLE *PHANDLE, *LPHANDLE;
+
+#ifdef STRICT
+#define DECLARE_HANDLE(a) typedef struct a##__ { int unused; } *a
+#else /*STRICT*/
+#define DECLARE_HANDLE(a) typedef HANDLE a
+#endif /*STRICT*/
+
+typedef BYTE  FCHAR;
+typedef WORD  FSHORT;
+typedef DWORD FLONG;
+
+/* Defines */
+
+#ifndef WIN32_NO_STATUS
+
+#define STATUS_WAIT_0                    ((DWORD) 0x00000000)
+#define STATUS_ABANDONED_WAIT_0          ((DWORD) 0x00000080)
+#define STATUS_USER_APC                  ((DWORD) 0x000000C0)
+#define STATUS_TIMEOUT                   ((DWORD) 0x00000102)
+#define STATUS_PENDING                   ((DWORD) 0x00000103)
+#define STATUS_SEGMENT_NOTIFICATION      ((DWORD) 0x40000005)
+#define STATUS_GUARD_PAGE_VIOLATION      ((DWORD) 0x80000001)
+#define STATUS_DATATYPE_MISALIGNMENT     ((DWORD) 0x80000002)
+#define STATUS_BREAKPOINT                ((DWORD) 0x80000003)
+#define STATUS_SINGLE_STEP               ((DWORD) 0x80000004)
+#define STATUS_ACCESS_VIOLATION          ((DWORD) 0xC0000005)
+#define STATUS_IN_PAGE_ERROR             ((DWORD) 0xC0000006)
+#define STATUS_INVALID_HANDLE            ((DWORD) 0xC0000008)
+#define STATUS_NO_MEMORY                 ((DWORD) 0xC0000017)
+#define STATUS_ILLEGAL_INSTRUCTION       ((DWORD) 0xC000001D)
+#define STATUS_NONCONTINUABLE_EXCEPTION  ((DWORD) 0xC0000025)
+#define STATUS_INVALID_DISPOSITION       ((DWORD) 0xC0000026)
+#define STATUS_ARRAY_BOUNDS_EXCEEDED     ((DWORD) 0xC000008C)
+#define STATUS_FLOAT_DENORMAL_OPERAND    ((DWORD) 0xC000008D)
+#define STATUS_FLOAT_DIVIDE_BY_ZERO      ((DWORD) 0xC000008E)
+#define STATUS_FLOAT_INEXACT_RESULT      ((DWORD) 0xC000008F)
+#define STATUS_FLOAT_INVALID_OPERATION   ((DWORD) 0xC0000090)
+#define STATUS_FLOAT_OVERFLOW            ((DWORD) 0xC0000091)
+#define STATUS_FLOAT_STACK_CHECK         ((DWORD) 0xC0000092)
+#define STATUS_FLOAT_UNDERFLOW           ((DWORD) 0xC0000093)
+#define STATUS_INTEGER_DIVIDE_BY_ZERO    ((DWORD) 0xC0000094)
+#define STATUS_INTEGER_OVERFLOW          ((DWORD) 0xC0000095)
+#define STATUS_PRIVILEGED_INSTRUCTION    ((DWORD) 0xC0000096)
+#define STATUS_STACK_OVERFLOW            ((DWORD) 0xC00000FD)
+#define STATUS_CONTROL_C_EXIT            ((DWORD) 0xC000013A)
+#define STATUS_FLOAT_MULTIPLE_FAULTS     ((DWORD) 0xC00002B4)
+#define STATUS_FLOAT_MULTIPLE_TRAPS      ((DWORD) 0xC00002B5)
+#define STATUS_REG_NAT_CONSUMPTION       ((DWORD) 0xC00002C9)
+#define STATUS_SXS_EARLY_DEACTIVATION    ((DWORD) 0xC015000F)
+#define STATUS_SXS_INVALID_DEACTIVATION  ((DWORD) 0xC0150010)
+
+/* status values for ContinueDebugEvent */
+#define DBG_EXCEPTION_HANDLED       ((DWORD) 0x00010001)
+#define DBG_CONTINUE                ((DWORD) 0x00010002)
+#define DBG_TERMINATE_THREAD        ((DWORD) 0x40010003)
+#define DBG_TERMINATE_PROCESS       ((DWORD) 0x40010004)
+#define DBG_CONTROL_C               ((DWORD) 0x40010005)
+#define DBG_CONTROL_BREAK           ((DWORD) 0x40010008)
+#define DBG_COMMAND_EXCEPTION       ((DWORD) 0x40010009)
+#define DBG_EXCEPTION_NOT_HANDLED   ((DWORD) 0x80010001)
+
+#endif /* WIN32_NO_STATUS */
+
+/* Argument 1 passed to the DllEntryProc. */
+#define	DLL_PROCESS_DETACH	0	/* detach process (unload library) */
+#define	DLL_PROCESS_ATTACH	1	/* attach process (load library) */
+#define	DLL_THREAD_ATTACH	2	/* attach new thread */
+#define	DLL_THREAD_DETACH	3	/* detach thread */
+#ifdef __WINESRC__
+#define DLL_WINE_PREATTACH      8       /* called before process attach for Wine builtins */
+#endif
+
+/* u.x.wProcessorArchitecture (NT) */
+#define PROCESSOR_ARCHITECTURE_INTEL	0
+#define PROCESSOR_ARCHITECTURE_MIPS	1
+#define PROCESSOR_ARCHITECTURE_ALPHA	2
+#define PROCESSOR_ARCHITECTURE_PPC	3
+#define PROCESSOR_ARCHITECTURE_SHX	4
+#define PROCESSOR_ARCHITECTURE_ARM	5
+#define PROCESSOR_ARCHITECTURE_IA64     6
+#define PROCESSOR_ARCHITECTURE_ALPHA64  7
+#define PROCESSOR_ARCHITECTURE_MSIL     8
+#define PROCESSOR_ARCHITECTURE_AMD64    9
+#define PROCESSOR_ARCHITECTURE_UNKNOWN	0xFFFF
+
+/* dwProcessorType */
+#define PROCESSOR_INTEL_386      386
+#define PROCESSOR_INTEL_486      486
+#define PROCESSOR_INTEL_PENTIUM  586
+#define PROCESSOR_INTEL_860      860
+#define PROCESSOR_INTEL_IA64     2200
+#define PROCESSOR_AMD_X8664      8664
+#define PROCESSOR_MIPS_R2000     2000
+#define PROCESSOR_MIPS_R3000     3000
+#define PROCESSOR_MIPS_R4000     4000
+#define PROCESSOR_ALPHA_21064    21064
+#define PROCESSOR_PPC_601        601
+#define PROCESSOR_PPC_603        603
+#define PROCESSOR_PPC_604        604
+#define PROCESSOR_PPC_620        620
+#define PROCESSOR_HITACHI_SH3    10003
+#define PROCESSOR_HITACHI_SH3E   10004
+#define PROCESSOR_HITACHI_SH4    10005
+#define PROCESSOR_MOTOROLA_821   821
+#define PROCESSOR_SHx_SH3        103
+#define PROCESSOR_SHx_SH4        104
+#define PROCESSOR_STRONGARM      2577
+#define PROCESSOR_ARM720         1824    /* 0x720 */
+#define PROCESSOR_ARM820         2080    /* 0x820 */
+#define PROCESSOR_ARM920         2336    /* 0x920 */
+#define PROCESSOR_ARM_7TDMI      70001
+
+#define MAXIMUM_PROCESSORS       32
+typedef struct _MEMORY_BASIC_INFORMATION
+{
+    LPVOID   BaseAddress;
+    LPVOID   AllocationBase;
+    DWORD    AllocationProtect;
+    SIZE_T   RegionSize;
+    DWORD    State;
+    DWORD    Protect;
+    DWORD    Type;
+} MEMORY_BASIC_INFORMATION, *PMEMORY_BASIC_INFORMATION;
+
+#define	PAGE_NOACCESS		0x01
+#define	PAGE_READONLY		0x02
+#define	PAGE_READWRITE		0x04
+#define	PAGE_WRITECOPY		0x08
+#define	PAGE_EXECUTE		0x10
+#define	PAGE_EXECUTE_READ	0x20
+#define	PAGE_EXECUTE_READWRITE	0x40
+#define	PAGE_EXECUTE_WRITECOPY	0x80
+#define	PAGE_GUARD		0x100
+#define	PAGE_NOCACHE		0x200
+#define	PAGE_WRITECOMBINE	0x400
+
+#define MEM_COMMIT              0x00001000
+#define MEM_RESERVE             0x00002000
+#define MEM_DECOMMIT            0x00004000
+#define MEM_RELEASE             0x00008000
+#define MEM_FREE                0x00010000
+#define MEM_PRIVATE             0x00020000
+#define MEM_MAPPED              0x00040000
+#define MEM_RESET               0x00080000
+#define MEM_TOP_DOWN            0x00100000
+#define MEM_WRITE_WATCH         0x00200000
+#define MEM_PHYSICAL            0x00400000
+#define MEM_LARGE_PAGES         0x20000000
+#define MEM_4MB_PAGES           0x80000000
+
+#define SEC_FILE                0x00800000
+#define SEC_IMAGE               0x01000000
+#define SEC_RESERVE             0x04000000
+#define SEC_COMMIT              0x08000000
+#define SEC_NOCACHE             0x10000000
+#define SEC_LARGE_PAGES         0x80000000
+#define MEM_IMAGE               SEC_IMAGE
+
+#define WRITE_WATCH_FLAG_RESET  0x00000001
+
+
+#define MINCHAR       0x80
+#define MAXCHAR       0x7f
+#define MINSHORT      0x8000
+#define MAXSHORT      0x7fff
+#define MINLONG       0x80000000
+#define MAXLONG       0x7fffffff
+#define MAXBYTE       0xff
+#define MAXWORD       0xffff
+#define MAXDWORD      0xffffffff
+
+#define FIELD_OFFSET(type, field) \
+  ((LONG)(INT_PTR)&(((type *)0)->field))
+
+#define CONTAINING_RECORD(address, type, field) \
+  ((type *)((PCHAR)(address) - (PCHAR)(&((type *)0)->field)))
+
+/* Types */
+
+typedef struct _LIST_ENTRY {
+  struct _LIST_ENTRY *Flink;
+  struct _LIST_ENTRY *Blink;
+} LIST_ENTRY, *PLIST_ENTRY, * RESTRICTED_POINTER PRLIST_ENTRY;
+
+typedef struct _SINGLE_LIST_ENTRY {
+  struct _SINGLE_LIST_ENTRY *Next;
+} SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
+
+#ifdef _WIN64
+
+typedef struct DECLSPEC_ALIGN(16) _SLIST_ENTRY *PSLIST_ENTRY;
+typedef struct DECLSPEC_ALIGN(16) _SLIST_ENTRY {
+    PSLIST_ENTRY Next;
+} SLIST_ENTRY;
+
+typedef union DECLSPEC_ALIGN(16) _SLIST_HEADER {
+    struct {
+        ULONGLONG Alignment;
+        ULONGLONG Region;
+    } DUMMYSTRUCTNAME;
+    struct {
+        ULONGLONG Depth:16;
+        ULONGLONG Sequence:9;
+        ULONGLONG NextEntry:39;
+        ULONGLONG HeaderType:1;
+        ULONGLONG Init:1;
+        ULONGLONG Reserved:59;
+        ULONGLONG Region:3;
+    } Header8;
+    struct {
+        ULONGLONG Depth:16;
+        ULONGLONG Sequence:48;
+        ULONGLONG HeaderType:1;
+        ULONGLONG Init:1;
+        ULONGLONG Reserved:2;
+        ULONGLONG NextEntry:60;
+    } Header16;
+} SLIST_HEADER, *PSLIST_HEADER;
+
+#else
+
+#undef SLIST_ENTRY /* for Mac OS */
+#define SLIST_ENTRY SINGLE_LIST_ENTRY
+#define _SLIST_ENTRY _SINGLE_LIST_ENTRY
+#define PSLIST_ENTRY PSINGLE_LIST_ENTRY
+
+typedef union _SLIST_HEADER {
+    ULONGLONG Alignment;
+    struct {
+        SLIST_ENTRY Next;
+        WORD Depth;
+        WORD Sequence;
+    } DUMMYSTRUCTNAME;
+} SLIST_HEADER, *PSLIST_HEADER;
+
+#endif
+
+NTSYSAPI PSLIST_ENTRY WINAPI RtlFirstEntrySList(const SLIST_HEADER*);
+NTSYSAPI VOID         WINAPI RtlInitializeSListHead(PSLIST_HEADER);
+NTSYSAPI PSLIST_ENTRY WINAPI RtlInterlockedFlushSList(PSLIST_HEADER);
+NTSYSAPI PSLIST_ENTRY WINAPI RtlInterlockedPopEntrySList(PSLIST_HEADER);
+NTSYSAPI PSLIST_ENTRY WINAPI RtlInterlockedPushEntrySList(PSLIST_HEADER, PSLIST_ENTRY);
+NTSYSAPI WORD         WINAPI RtlQueryDepthSList(PSLIST_HEADER);
+
+
+/* Heap flags */
+
+#define HEAP_NO_SERIALIZE               0x00000001
+#define HEAP_GROWABLE                   0x00000002
+#define HEAP_GENERATE_EXCEPTIONS        0x00000004
+#define HEAP_ZERO_MEMORY                0x00000008
+#define HEAP_REALLOC_IN_PLACE_ONLY      0x00000010
+#define HEAP_TAIL_CHECKING_ENABLED      0x00000020
+#define HEAP_FREE_CHECKING_ENABLED      0x00000040
+#define HEAP_DISABLE_COALESCE_ON_FREE   0x00000080
+#define HEAP_CREATE_ALIGN_16            0x00010000
+#define HEAP_CREATE_ENABLE_TRACING      0x00020000
+#define HEAP_CREATE_ENABLE_EXECUTE      0x00040000
+
+/* This flag allows it to create heaps shared by all processes under win95,
+   FIXME: correct name */
+#define HEAP_SHARED                     0x04000000
+
+typedef enum _HEAP_INFORMATION_CLASS {
+    HeapCompatibilityInformation,
+} HEAP_INFORMATION_CLASS;
+
+/* Processor feature flags.  */
+#define PF_FLOATING_POINT_PRECISION_ERRATA	0
+#define PF_FLOATING_POINT_EMULATED		1
+#define PF_COMPARE_EXCHANGE_DOUBLE		2
+#define PF_MMX_INSTRUCTIONS_AVAILABLE		3
+#define PF_PPC_MOVEMEM_64BIT_OK			4
+#define PF_ALPHA_BYTE_INSTRUCTIONS		5
+#define PF_XMMI_INSTRUCTIONS_AVAILABLE		6
+#define PF_3DNOW_INSTRUCTIONS_AVAILABLE		7
+#define PF_RDTSC_INSTRUCTION_AVAILABLE		8
+#define PF_PAE_ENABLED				9
+#define PF_XMMI64_INSTRUCTIONS_AVAILABLE	10
+#define PF_SSE_DAZ_MODE_AVAILABLE		11
+#define PF_NX_ENABLED				12
+#define PF_SSE3_INSTRUCTIONS_AVAILABLE		13
+#define PF_COMPARE_EXCHANGE128			14
+#define PF_COMPARE64_EXCHANGE128		15
+#define PF_CHANNELS_ENABLED			16
+
+
+/* Execution state flags */
+#define ES_SYSTEM_REQUIRED    0x00000001
+#define ES_DISPLAY_REQUIRED   0x00000002
+#define ES_USER_PRESENT       0x00000004
+#define ES_CONTINUOUS         0x80000000
+
+/* The Win32 register context */
+
+/* CONTEXT is the CPU-dependent context; it should be used        */
+/* wherever a platform-specific context is needed (e.g. exception */
+/* handling, Win32 register functions). */
+
+/* CONTEXT86 is the i386-specific context; it should be used     */
+/* wherever only a 386 context makes sense (e.g. DOS interrupts, */
+/* Win16 register functions), so that this code can be compiled  */
+/* on all platforms. */
+
+#define SIZE_OF_80387_REGISTERS      80
+
+typedef struct _FLOATING_SAVE_AREA
+{
+    DWORD   ControlWord;
+    DWORD   StatusWord;
+    DWORD   TagWord;
+    DWORD   ErrorOffset;
+    DWORD   ErrorSelector;
+    DWORD   DataOffset;
+    DWORD   DataSelector;
+    BYTE    RegisterArea[SIZE_OF_80387_REGISTERS];
+    DWORD   Cr0NpxState;
+} FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA;
+
+#define MAXIMUM_SUPPORTED_EXTENSION     512
+
+typedef struct _CONTEXT86
+{
+    DWORD   ContextFlags;
+
+    /* These are selected by CONTEXT_DEBUG_REGISTERS */
+    DWORD   Dr0;
+    DWORD   Dr1;
+    DWORD   Dr2;
+    DWORD   Dr3;
+    DWORD   Dr6;
+    DWORD   Dr7;
+
+    /* These are selected by CONTEXT_FLOATING_POINT */
+    FLOATING_SAVE_AREA FloatSave;
+
+    /* These are selected by CONTEXT_SEGMENTS */
+    DWORD   SegGs;
+    DWORD   SegFs;
+    DWORD   SegEs;
+    DWORD   SegDs;
+
+    /* These are selected by CONTEXT_INTEGER */
+    DWORD   Edi;
+    DWORD   Esi;
+    DWORD   Ebx;
+    DWORD   Edx;
+    DWORD   Ecx;
+    DWORD   Eax;
+
+    /* These are selected by CONTEXT_CONTROL */
+    DWORD   Ebp;
+    DWORD   Eip;
+    DWORD   SegCs;
+    DWORD   EFlags;
+    DWORD   Esp;
+    DWORD   SegSs;
+
+    BYTE    ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION];
+} CONTEXT86;
+
+#define CONTEXT_X86       0x00010000
+#define CONTEXT_i386      CONTEXT_X86
+#define CONTEXT_i486      CONTEXT_X86
+
+#define CONTEXT86_CONTROL   (CONTEXT_i386 | 0x0001) /* SS:SP, CS:IP, FLAGS, BP */
+#define CONTEXT86_INTEGER   (CONTEXT_i386 | 0x0002) /* AX, BX, CX, DX, SI, DI */
+#define CONTEXT86_SEGMENTS  (CONTEXT_i386 | 0x0004) /* DS, ES, FS, GS */
+#define CONTEXT86_FLOATING_POINT  (CONTEXT_i386 | 0x0008L) /* 387 state */
+#define CONTEXT86_DEBUG_REGISTERS (CONTEXT_i386 | 0x0010L) /* DB 0-3,6,7 */
+#define CONTEXT86_EXTENDED_REGISTERS (CONTEXT_i386 | 0x0020L)
+#define CONTEXT86_FULL (CONTEXT86_CONTROL | CONTEXT86_INTEGER | CONTEXT86_SEGMENTS)
+#define CONTEXT86_ALL (CONTEXT86_CONTROL | CONTEXT86_INTEGER | CONTEXT86_SEGMENTS | \
+        CONTEXT86_FLOATING_POINT | CONTEXT86_DEBUG_REGISTERS | CONTEXT86_EXTENDED_REGISTERS)
+
+/* i386 context definitions */
+#ifdef __i386__
+
+#define CONTEXT_CONTROL         CONTEXT86_CONTROL
+#define CONTEXT_INTEGER         CONTEXT86_INTEGER
+#define CONTEXT_SEGMENTS        CONTEXT86_SEGMENTS
+#define CONTEXT_FLOATING_POINT  CONTEXT86_FLOATING_POINT
+#define CONTEXT_DEBUG_REGISTERS CONTEXT86_DEBUG_REGISTERS
+#define CONTEXT_EXTENDED_REGISTERS CONTEXT86_EXTENDED_REGISTERS
+#define CONTEXT_FULL            CONTEXT86_FULL
+#define CONTEXT_ALL             CONTEXT86_ALL
+
+typedef CONTEXT86 CONTEXT;
+
+#define EXCEPTION_READ_FAULT    0
+#define EXCEPTION_WRITE_FAULT   1
+#define EXCEPTION_EXECUTE_FAULT 8
+
+#endif  /* __i386__ */
+
+typedef struct _LDT_ENTRY {
+    WORD	LimitLow;
+    WORD	BaseLow;
+    union {
+        struct {
+            BYTE    BaseMid;
+            BYTE    Flags1;
+            BYTE    Flags2;
+            BYTE    BaseHi;
+        } Bytes;
+        struct {
+            unsigned    BaseMid: 8;
+            unsigned    Type : 5;
+            unsigned    Dpl : 2;
+            unsigned    Pres : 1;
+            unsigned    LimitHi : 4;
+            unsigned    Sys : 1;
+            unsigned    Reserved_0 : 1;
+            unsigned    Default_Big : 1;
+            unsigned    Granularity : 1;
+            unsigned    BaseHi : 8;
+        } Bits;
+    } HighWord;
+} LDT_ENTRY, *PLDT_ENTRY;
+
+/* x86-64 context definitions */
+#if defined(__x86_64__)
+
+#define CONTEXT_AMD64   0x00100000
+
+#define CONTEXT_CONTROL   (CONTEXT_AMD64 | 0x0001)
+#define CONTEXT_INTEGER   (CONTEXT_AMD64 | 0x0002)
+#define CONTEXT_SEGMENTS  (CONTEXT_AMD64 | 0x0004)
+#define CONTEXT_FLOATING_POINT  (CONTEXT_AMD64 | 0x0008L)
+#define CONTEXT_DEBUG_REGISTERS (CONTEXT_AMD64 | 0x0010L)
+#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT)
+#define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS)
+
+#define EXCEPTION_READ_FAULT    0
+#define EXCEPTION_WRITE_FAULT   1
+#define EXCEPTION_EXECUTE_FAULT 8
+
+typedef struct DECLSPEC_ALIGN(16) _M128A {
+    ULONGLONG Low;
+    LONGLONG High;
+} M128A, *PM128A;
+
+typedef struct _XMM_SAVE_AREA32 {
+    WORD ControlWord;
+    WORD StatusWord;
+    BYTE TagWord;
+    BYTE Reserved1;
+    WORD ErrorOpcode;
+    DWORD ErrorOffset;
+    WORD ErrorSelector;
+    WORD Reserved2;
+    DWORD DataOffset;
+    WORD DataSelector;
+    WORD Reserved3;
+    DWORD MxCsr;
+    DWORD MxCsr_Mask;
+    M128A FloatRegisters[8];
+    M128A XmmRegisters[16];
+    BYTE Reserved4[96];
+} XMM_SAVE_AREA32, *PXMM_SAVE_AREA32;
+
+typedef struct DECLSPEC_ALIGN(16) _CONTEXT {
+    DWORD64 P1Home;
+    DWORD64 P2Home;
+    DWORD64 P3Home;
+    DWORD64 P4Home;
+    DWORD64 P5Home;
+    DWORD64 P6Home;
+
+    /* Control flags */
+    DWORD ContextFlags;
+    DWORD MxCsr;
+
+    /* Segment */
+    WORD SegCs;
+    WORD SegDs;
+    WORD SegEs;
+    WORD SegFs;
+    WORD SegGs;
+    WORD SegSs;
+    DWORD EFlags;
+
+    /* Debug */
+    DWORD64 Dr0;
+    DWORD64 Dr1;
+    DWORD64 Dr2;
+    DWORD64 Dr3;
+    DWORD64 Dr6;
+    DWORD64 Dr7;
+
+    /* Integer */
+    DWORD64 Rax;
+    DWORD64 Rcx;
+    DWORD64 Rdx;
+    DWORD64 Rbx;
+    DWORD64 Rsp;
+    DWORD64 Rbp;
+    DWORD64 Rsi;
+    DWORD64 Rdi;
+    DWORD64 R8;
+    DWORD64 R9;
+    DWORD64 R10;
+    DWORD64 R11;
+    DWORD64 R12;
+    DWORD64 R13;
+    DWORD64 R14;
+    DWORD64 R15;
+
+    /* Counter */
+    DWORD64 Rip;
+
+    /* Floating point */
+    union {
+        XMM_SAVE_AREA32 FltSave;
+        struct {
+            M128A Header[2];
+            M128A Legacy[8];
+            M128A Xmm0;
+            M128A Xmm1;
+            M128A Xmm2;
+            M128A Xmm3;
+            M128A Xmm4;
+            M128A Xmm5;
+            M128A Xmm6;
+            M128A Xmm7;
+            M128A Xmm8;
+            M128A Xmm9;
+            M128A Xmm10;
+            M128A Xmm11;
+            M128A Xmm12;
+            M128A Xmm13;
+            M128A Xmm14;
+            M128A Xmm15;
+        } DUMMYSTRUCTNAME;
+    } DUMMYUNIONNAME;
+
+    /* Vector */
+    M128A VectorRegister[26];
+    DWORD64 VectorControl;
+
+    /* Debug control */
+    DWORD64 DebugControl;
+    DWORD64 LastBranchToRip;
+    DWORD64 LastBranchFromRip;
+    DWORD64 LastExceptionToRip;
+    DWORD64 LastExceptionFromRip;
+} CONTEXT;
+
+#endif /* __x86_64__ */
+
+/* Alpha context definitions */
+#if defined(_ALPHA_) || defined(__ALPHA__) || defined(__alpha__)
+
+#define CONTEXT_ALPHA   0x00020000
+
+#define CONTEXT_CONTROL		(CONTEXT_ALPHA | 0x00000001L)
+#define CONTEXT_FLOATING_POINT	(CONTEXT_ALPHA | 0x00000002L)
+#define CONTEXT_INTEGER		(CONTEXT_ALPHA | 0x00000004L)
+#define CONTEXT_FULL  (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
+
+#define EXCEPTION_READ_FAULT    0
+#define EXCEPTION_WRITE_FAULT   1
+#define EXCEPTION_EXECUTE_FAULT 8
+
+typedef struct _CONTEXT
+{
+    /* selected by CONTEXT_FLOATING_POINT */
+    ULONGLONG FltF0;
+    ULONGLONG FltF1;
+    ULONGLONG FltF2;
+    ULONGLONG FltF3;
+    ULONGLONG FltF4;
+    ULONGLONG FltF5;
+    ULONGLONG FltF6;
+    ULONGLONG FltF7;
+    ULONGLONG FltF8;
+    ULONGLONG FltF9;
+    ULONGLONG FltF10;
+    ULONGLONG FltF11;
+    ULONGLONG FltF12;
+    ULONGLONG FltF13;
+    ULONGLONG FltF14;
+    ULONGLONG FltF15;
+    ULONGLONG FltF16;
+    ULONGLONG FltF17;
+    ULONGLONG FltF18;
+    ULONGLONG FltF19;
+    ULONGLONG FltF20;
+    ULONGLONG FltF21;
+    ULONGLONG FltF22;
+    ULONGLONG FltF23;
+    ULONGLONG FltF24;
+    ULONGLONG FltF25;
+    ULONGLONG FltF26;
+    ULONGLONG FltF27;
+    ULONGLONG FltF28;
+    ULONGLONG FltF29;
+    ULONGLONG FltF30;
+    ULONGLONG FltF31;
+
+    /* selected by CONTEXT_INTEGER */
+    ULONGLONG IntV0;
+    ULONGLONG IntT0;
+    ULONGLONG IntT1;
+    ULONGLONG IntT2;
+    ULONGLONG IntT3;
+    ULONGLONG IntT4;
+    ULONGLONG IntT5;
+    ULONGLONG IntT6;
+    ULONGLONG IntT7;
+    ULONGLONG IntS0;
+    ULONGLONG IntS1;
+    ULONGLONG IntS2;
+    ULONGLONG IntS3;
+    ULONGLONG IntS4;
+    ULONGLONG IntS5;
+    ULONGLONG IntFp;
+    ULONGLONG IntA0;
+    ULONGLONG IntA1;
+    ULONGLONG IntA2;
+    ULONGLONG IntA3;
+    ULONGLONG IntA4;
+    ULONGLONG IntA5;
+    ULONGLONG IntT8;
+    ULONGLONG IntT9;
+    ULONGLONG IntT10;
+    ULONGLONG IntT11;
+    ULONGLONG IntRa;
+    ULONGLONG IntT12;
+    ULONGLONG IntAt;
+    ULONGLONG IntGp;
+    ULONGLONG IntSp;
+    ULONGLONG IntZero;
+
+    /* selected by CONTEXT_FLOATING_POINT */
+    ULONGLONG Fpcr;
+    ULONGLONG SoftFpcr;
+
+    /* selected by CONTEXT_CONTROL */
+    ULONGLONG Fir;
+    DWORD Psr;
+    DWORD ContextFlags;
+    DWORD Fill[4];
+} CONTEXT;
+
+#define _QUAD_PSR_OFFSET   HighSoftFpcr
+#define _QUAD_FLAGS_OFFSET HighFir
+
+#endif  /* _ALPHA_ */
+
+#ifdef __arm__
+
+/* The following flags control the contents of the CONTEXT structure. */
+
+#define CONTEXT_ARM    0x0000040
+#define CONTEXT_CONTROL         (CONTEXT_ARM | 0x00000001L)
+#define CONTEXT_INTEGER         (CONTEXT_ARM | 0x00000002L)
+
+#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER)
+
+#define EXCEPTION_READ_FAULT    0
+#define EXCEPTION_WRITE_FAULT   1
+#define EXCEPTION_EXECUTE_FAULT 8
+
+typedef struct _CONTEXT {
+	/* The flags values within this flag control the contents of
+	   a CONTEXT record.
+
+	   If the context record is used as an input parameter, then
+	   for each portion of the context record controlled by a flag
+	   whose value is set, it is assumed that that portion of the
+	   context record contains valid context. If the context record
+	   is being used to modify a thread's context, then only that
+	   portion of the threads context will be modified.
+
+	   If the context record is used as an IN OUT parameter to capture
+	   the context of a thread, then only those portions of the thread's
+	   context corresponding to set flags will be returned.
+
+	   The context record is never used as an OUT only parameter. */
+
+	ULONG ContextFlags;
+
+	/* This section is specified/returned if the ContextFlags word contains
+	   the flag CONTEXT_INTEGER. */
+	ULONG R0;
+	ULONG R1;
+	ULONG R2;
+	ULONG R3;
+	ULONG R4;
+	ULONG R5;
+	ULONG R6;
+	ULONG R7;
+	ULONG R8;
+	ULONG R9;
+	ULONG R10;
+	ULONG R11;
+	ULONG R12;
+
+	ULONG Sp;
+	ULONG Lr;
+	ULONG Pc;
+	ULONG Psr;
+} CONTEXT;
+
+#endif /* __arm__ */
+
+
+/* Mips context definitions */
+#ifdef _MIPS_
+
+#define CONTEXT_R4000   0x00010000
+
+#define CONTEXT_CONTROL         (CONTEXT_R4000 | 0x00000001)
+#define CONTEXT_FLOATING_POINT  (CONTEXT_R4000 | 0x00000002)
+#define CONTEXT_INTEGER         (CONTEXT_R4000 | 0x00000004)
+
+#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
+
+#define EXCEPTION_READ_FAULT    0
+#define EXCEPTION_WRITE_FAULT   1
+#define EXCEPTION_EXECUTE_FAULT 8
+
+typedef struct _CONTEXT
+{
+    DWORD Argument[4];
+    /* These are selected by CONTEXT_FLOATING_POINT */
+    DWORD FltF0;
+    DWORD FltF1;
+    DWORD FltF2;
+    DWORD FltF3;
+    DWORD FltF4;
+    DWORD FltF5;
+    DWORD FltF6;
+    DWORD FltF7;
+    DWORD FltF8;
+    DWORD FltF9;
+    DWORD FltF10;
+    DWORD FltF11;
+    DWORD FltF12;
+    DWORD FltF13;
+    DWORD FltF14;
+    DWORD FltF15;
+    DWORD FltF16;
+    DWORD FltF17;
+    DWORD FltF18;
+    DWORD FltF19;
+    DWORD FltF20;
+    DWORD FltF21;
+    DWORD FltF22;
+    DWORD FltF23;
+    DWORD FltF24;
+    DWORD FltF25;
+    DWORD FltF26;
+    DWORD FltF27;
+    DWORD FltF28;
+    DWORD FltF29;
+    DWORD FltF30;
+    DWORD FltF31;
+
+    /* These are selected by CONTEXT_INTEGER */
+    DWORD IntZero;
+    DWORD IntAt;
+    DWORD IntV0;
+    DWORD IntV1;
+    DWORD IntA0;
+    DWORD IntA1;
+    DWORD IntA2;
+    DWORD IntA3;
+    DWORD IntT0;
+    DWORD IntT1;
+    DWORD IntT2;
+    DWORD IntT3;
+    DWORD IntT4;
+    DWORD IntT5;
+    DWORD IntT6;
+    DWORD IntT7;
+    DWORD IntS0;
+    DWORD IntS1;
+    DWORD IntS2;
+    DWORD IntS3;
+    DWORD IntS4;
+    DWORD IntS5;
+    DWORD IntS6;
+    DWORD IntS7;
+    DWORD IntT8;
+    DWORD IntT9;
+    DWORD IntK0;
+    DWORD IntK1;
+    DWORD IntGp;
+    DWORD IntSp;
+    DWORD IntS8;
+    DWORD IntRa;
+    DWORD IntLo;
+    DWORD IntHi;
+
+    /* These are selected by CONTEXT_FLOATING_POINT */
+    DWORD Fsr;
+
+    /* These are selected by CONTEXT_CONTROL */
+    DWORD Fir;
+    DWORD Psr;
+
+    DWORD ContextFlags;
+    DWORD Fill[2];
+} CONTEXT;
+
+#endif  /* _MIPS_ */
+
+/* PowerPC context definitions */
+#ifdef __powerpc__
+
+#define CONTEXT_CONTROL         0x0001
+#define CONTEXT_FLOATING_POINT  0x0002
+#define CONTEXT_INTEGER         0x0004
+#define CONTEXT_DEBUG_REGISTERS 0x0008
+#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
+
+#define EXCEPTION_READ_FAULT    0
+#define EXCEPTION_WRITE_FAULT   1
+#define EXCEPTION_EXECUTE_FAULT 8
+
+typedef struct
+{
+    /* These are selected by CONTEXT_FLOATING_POINT */
+    double Fpr0;
+    double Fpr1;
+    double Fpr2;
+    double Fpr3;
+    double Fpr4;
+    double Fpr5;
+    double Fpr6;
+    double Fpr7;
+    double Fpr8;
+    double Fpr9;
+    double Fpr10;
+    double Fpr11;
+    double Fpr12;
+    double Fpr13;
+    double Fpr14;
+    double Fpr15;
+    double Fpr16;
+    double Fpr17;
+    double Fpr18;
+    double Fpr19;
+    double Fpr20;
+    double Fpr21;
+    double Fpr22;
+    double Fpr23;
+    double Fpr24;
+    double Fpr25;
+    double Fpr26;
+    double Fpr27;
+    double Fpr28;
+    double Fpr29;
+    double Fpr30;
+    double Fpr31;
+    double Fpscr;
+
+    /* These are selected by CONTEXT_INTEGER */
+    DWORD Gpr0;
+    DWORD Gpr1;
+    DWORD Gpr2;
+    DWORD Gpr3;
+    DWORD Gpr4;
+    DWORD Gpr5;
+    DWORD Gpr6;
+    DWORD Gpr7;
+    DWORD Gpr8;
+    DWORD Gpr9;
+    DWORD Gpr10;
+    DWORD Gpr11;
+    DWORD Gpr12;
+    DWORD Gpr13;
+    DWORD Gpr14;
+    DWORD Gpr15;
+    DWORD Gpr16;
+    DWORD Gpr17;
+    DWORD Gpr18;
+    DWORD Gpr19;
+    DWORD Gpr20;
+    DWORD Gpr21;
+    DWORD Gpr22;
+    DWORD Gpr23;
+    DWORD Gpr24;
+    DWORD Gpr25;
+    DWORD Gpr26;
+    DWORD Gpr27;
+    DWORD Gpr28;
+    DWORD Gpr29;
+    DWORD Gpr30;
+    DWORD Gpr31;
+
+    DWORD Cr;
+    DWORD Xer;
+
+    /* These are selected by CONTEXT_CONTROL */
+    DWORD Msr;
+    DWORD Iar; /* Instruction Address Register , aka PC ... */
+    DWORD Lr;
+    DWORD Ctr;
+
+    DWORD ContextFlags;
+    
+    DWORD Dar;   /* Fault registers for coredump */
+    DWORD Dsisr; 
+    DWORD Trap;  /* number of powerpc exception taken */
+
+    /* These are selected by CONTEXT_DEBUG_REGISTERS */
+    DWORD Dr0;
+    DWORD Dr1;
+    DWORD Dr2;
+    DWORD Dr3;
+    DWORD Dr4;
+    DWORD Dr5;
+    DWORD Dr6;
+    DWORD Dr7;
+} CONTEXT;
+
+typedef struct _STACK_FRAME_HEADER
+{
+    DWORD BackChain;
+    DWORD GlueSaved1;
+    DWORD GlueSaved2;
+    DWORD Reserved1;
+    DWORD Spare1;
+    DWORD Spare2;
+
+    DWORD Parameter0;
+    DWORD Parameter1;
+    DWORD Parameter2;
+    DWORD Parameter3;
+    DWORD Parameter4;
+    DWORD Parameter5;
+    DWORD Parameter6;
+    DWORD Parameter7;
+} STACK_FRAME_HEADER,*PSTACK_FRAME_HEADER;
+
+#endif  /* __powerpc__ */
+
+#ifdef __sparc__
+
+/*
+ * FIXME:
+ *
+ * There is no official CONTEXT structure defined for the SPARC
+ * architecture, so I just made one up.
+ *
+ * This structure is valid only for 32-bit SPARC architectures,
+ * not for 64-bit SPARC.
+ *
+ * Note that this structure contains only the 'top-level' registers;
+ * the rest of the register window chain is not visible.
+ *
+ * The layout follows the Solaris 'prgregset_t' structure.
+ *
+ */
+
+#define CONTEXT_SPARC            0x10000000
+
+#define CONTEXT_CONTROL         (CONTEXT_SPARC | 0x00000001)
+#define CONTEXT_FLOATING_POINT  (CONTEXT_SPARC | 0x00000002)
+#define CONTEXT_INTEGER         (CONTEXT_SPARC | 0x00000004)
+
+#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
+
+#define EXCEPTION_READ_FAULT    0
+#define EXCEPTION_WRITE_FAULT   1
+#define EXCEPTION_EXECUTE_FAULT 8
+
+typedef struct _CONTEXT
+{
+    DWORD ContextFlags;
+
+    /* These are selected by CONTEXT_INTEGER */
+    DWORD g0;
+    DWORD g1;
+    DWORD g2;
+    DWORD g3;
+    DWORD g4;
+    DWORD g5;
+    DWORD g6;
+    DWORD g7;
+    DWORD o0;
+    DWORD o1;
+    DWORD o2;
+    DWORD o3;
+    DWORD o4;
+    DWORD o5;
+    DWORD o6;
+    DWORD o7;
+    DWORD l0;
+    DWORD l1;
+    DWORD l2;
+    DWORD l3;
+    DWORD l4;
+    DWORD l5;
+    DWORD l6;
+    DWORD l7;
+    DWORD i0;
+    DWORD i1;
+    DWORD i2;
+    DWORD i3;
+    DWORD i4;
+    DWORD i5;
+    DWORD i6;
+    DWORD i7;
+
+    /* These are selected by CONTEXT_CONTROL */
+    DWORD psr;
+    DWORD pc;
+    DWORD npc;
+    DWORD y;
+    DWORD wim;
+    DWORD tbr;
+
+    /* FIXME: floating point registers missing */
+
+} CONTEXT;
+
+#endif  /* __sparc__ */
+
+#if !defined(CONTEXT_FULL) && !defined(RC_INVOKED)
+#error You need to define a CONTEXT for your CPU
+#endif
+
+typedef CONTEXT *PCONTEXT;
+
+NTSYSAPI void WINAPI RtlCaptureContext(CONTEXT*);
+
+/*
+ * Language IDs
+ */
+
+#define MAKELCID(l, s)		(MAKELONG(l, s))
+
+#define MAKELANGID(p, s)        ((((WORD)(s))<<10) | (WORD)(p))
+#define PRIMARYLANGID(l)        ((WORD)(l) & 0x3ff)
+#define SUBLANGID(l)            ((WORD)(l) >> 10)
+
+#define LANGIDFROMLCID(lcid)	((WORD)(lcid))
+#define SORTIDFROMLCID(lcid)	((WORD)((((DWORD)(lcid)) >> 16) & 0x0f))
+
+#define LANG_SYSTEM_DEFAULT	(MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT))
+#define LANG_USER_DEFAULT	(MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT))
+#define LOCALE_SYSTEM_DEFAULT	(MAKELCID(LANG_SYSTEM_DEFAULT, SORT_DEFAULT))
+#define LOCALE_USER_DEFAULT	(MAKELCID(LANG_USER_DEFAULT, SORT_DEFAULT))
+#define LOCALE_NEUTRAL		(MAKELCID(MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),SORT_DEFAULT))
+
+#define UNREFERENCED_PARAMETER(u)	(void)(u)
+#define DBG_UNREFERENCED_PARAMETER(u)	(void)(u)
+#define DBG_UNREFERENCED_LOCAL_VARIABLE(u) (void)(u)
+
+#define LANG_NEUTRAL        0x00
+#define LANG_INVARIANT      0x7f
+
+#define LANG_AFRIKAANS      0x36
+#define LANG_ALBANIAN       0x1c
+#define LANG_ALSATIAN       0x84
+#define LANG_AMHARIC        0x5e
+#define LANG_ARABIC         0x01
+#define LANG_ARMENIAN       0x2b
+#define LANG_ASSAMESE       0x4d
+#define LANG_AZERI          0x2c
+#define LANG_BASHKIR        0x6d
+#define LANG_BASQUE         0x2d
+#define LANG_BELARUSIAN     0x23
+#define LANG_BENGALI        0x45
+#define LANG_BOSNIAN        0x1a
+#define LANG_BOSNIAN_NEUTRAL      0x781a
+#define LANG_BRETON         0x7e
+#define LANG_BULGARIAN      0x02
+#define LANG_CATALAN        0x03
+#define LANG_CHINESE        0x04
+#define LANG_CHINESE_SIMPLIFIED   0x0004
+#define LANG_CHINESE_TRADITIONAL  0x7c04
+#define LANG_CORSICAN       0x83
+#define LANG_CROATIAN       0x1a
+#define LANG_CZECH          0x05
+#define LANG_DANISH         0x06
+#define LANG_DARI           0x8c
+#define LANG_DIVEHI         0x65
+#define LANG_DUTCH          0x13
+#define LANG_ENGLISH        0x09
+#define LANG_ESTONIAN       0x25
+#define LANG_FAEROESE       0x38
+#define LANG_FARSI          LANG_PERSIAN
+#define LANG_FILIPINO       0x64
+#define LANG_FINNISH        0x0b
+#define LANG_FRENCH         0x0c
+#define LANG_FRISIAN        0x62
+#define LANG_GALICIAN       0x56
+#define LANG_GEORGIAN       0x37
+#define LANG_GERMAN         0x07
+#define LANG_GREEK          0x08
+#define LANG_GREENLANDIC    0x6f
+#define LANG_GUJARATI       0x47
+#define LANG_HAUSA          0x68
+#define LANG_HEBREW         0x0d
+#define LANG_HINDI          0x39
+#define LANG_HUNGARIAN      0x0e
+#define LANG_ICELANDIC      0x0f
+#define LANG_IGBO           0x70
+#define LANG_INDONESIAN     0x21
+#define LANG_INUKTITUT      0x5d
+#define LANG_IRISH          0x3c
+#define LANG_ITALIAN        0x10
+#define LANG_JAPANESE       0x11
+#define LANG_KANNADA        0x4b
+#define LANG_KASHMIRI       0x60
+#define LANG_KAZAK          0x3f
+#define LANG_KHMER          0x53
+#define LANG_KICHE          0x86
+#define LANG_KINYARWANDA    0x87
+#define LANG_KONKANI        0x57
+#define LANG_KOREAN         0x12
+#define LANG_KYRGYZ         0x40
+#define LANG_LAO            0x54
+#define LANG_LATVIAN        0x26
+#define LANG_LITHUANIAN     0x27
+#define LANG_LOWER_SORBIAN  0x2e
+#define LANG_LUXEMBOURGISH  0x6e
+#define LANG_MACEDONIAN     0x2f
+#define LANG_MALAY          0x3e
+#define LANG_MALAYALAM      0x4c
+#define LANG_MALTESE        0x3a
+#define LANG_MANIPURI       0x58
+#define LANG_MAORI          0x81
+#define LANG_MAPUDUNGUN     0x7a
+#define LANG_MARATHI        0x4e
+#define LANG_MOHAWK         0x7c
+#define LANG_MONGOLIAN      0x50
+#define LANG_NEPALI         0x61
+#define LANG_NORWEGIAN      0x14
+#define LANG_OCCITAN        0x82
+#define LANG_ORIYA          0x48
+#define LANG_PASHTO         0x63
+#define LANG_PERSIAN        0x29
+#define LANG_POLISH         0x15
+#define LANG_PORTUGUESE     0x16
+#define LANG_PUNJABI        0x46
+#define LANG_QUECHUA        0x6b
+#define LANG_ROMANIAN       0x18
+#define LANG_ROMANSH        0x17
+#define LANG_RUSSIAN        0x19
+#define LANG_SAMI           0x3b
+#define LANG_SANSKRIT       0x4f
+#define LANG_SERBIAN        0x1a
+#define LANG_SERBIAN_NEUTRAL      0x7c1a
+#define LANG_SINDHI         0x59
+#define LANG_SINHALESE      0x5b
+#define LANG_SLOVAK         0x1b
+#define LANG_SLOVENIAN      0x24
+#define LANG_SOTHO          0x6c
+#define LANG_SPANISH        0x0a
+#define LANG_SWAHILI        0x41
+#define LANG_SWEDISH        0x1d
+#define LANG_SYRIAC         0x5a
+#define LANG_TAJIK          0x28
+#define LANG_TAMAZIGHT      0x5f
+#define LANG_TAMIL          0x49
+#define LANG_TATAR          0x44
+#define LANG_TELUGU         0x4a
+#define LANG_THAI           0x1e
+#define LANG_TIBETAN        0x51
+#define LANG_TIGRIGNA       0x73
+#define LANG_TSWANA         0x32
+#define LANG_TURKISH        0x1f
+#define LANG_TURKMEN        0x42
+#define LANG_UIGHUR         0x80
+#define LANG_UKRAINIAN      0x22
+#define LANG_UPPER_SORBIAN  0x2e
+#define LANG_URDU           0x20
+#define LANG_UZBEK          0x43
+#define LANG_VIETNAMESE     0x2a
+#define LANG_WELSH          0x52
+#define LANG_WOLOF          0x88
+#define LANG_XHOSA          0x34
+#define LANG_YAKUT          0x85
+#define LANG_YI             0x78
+#define LANG_YORUBA         0x6a
+#define LANG_ZULU           0x35
+
+/* These are documented by the MSDN but are missing from the Windows header */
+#define LANG_MALAGASY       0x8d
+
+/* FIXME: these are not defined anywhere */
+#define LANG_SUTU           0x30
+#define LANG_TSONGA         0x31
+#define LANG_VENDA          0x33
+
+/* non standard; keep the number high enough (but < 0xff) */
+#define LANG_ESPERANTO			 0x8f
+#define LANG_WALON			 0x90
+#define LANG_CORNISH                     0x91
+#define LANG_GAELIC                      0x94
+
+/* Sublanguage definitions */
+#define SUBLANG_NEUTRAL                  0x00    /* language neutral */
+#define SUBLANG_DEFAULT                  0x01    /* user default */
+#define SUBLANG_SYS_DEFAULT              0x02    /* system default */
+#define SUBLANG_CUSTOM_DEFAULT           0x03
+#define SUBLANG_CUSTOM_UNSPECIFIED       0x04
+#define SUBLANG_UI_CUSTOM_DEFAULT        0x05
+
+#define SUBLANG_AFRIKAANS_SOUTH_AFRICA     0x01
+#define SUBLANG_ALBANIAN_ALBANIA           0x01
+#define SUBLANG_ALSATIAN_FRANCE            0x01
+#define SUBLANG_AMHARIC_ETHIOPIA           0x01
+#define SUBLANG_ARABIC_SAUDI_ARABIA        0x01
+#define SUBLANG_ARABIC_IRAQ                0x02
+#define SUBLANG_ARABIC_EGYPT               0x03
+#define SUBLANG_ARABIC_LIBYA               0x04
+#define SUBLANG_ARABIC_ALGERIA             0x05
+#define SUBLANG_ARABIC_MOROCCO             0x06
+#define SUBLANG_ARABIC_TUNISIA             0x07
+#define SUBLANG_ARABIC_OMAN                0x08
+#define SUBLANG_ARABIC_YEMEN               0x09
+#define SUBLANG_ARABIC_SYRIA               0x0a
+#define SUBLANG_ARABIC_JORDAN              0x0b
+#define SUBLANG_ARABIC_LEBANON             0x0c
+#define SUBLANG_ARABIC_KUWAIT              0x0d
+#define SUBLANG_ARABIC_UAE                 0x0e
+#define SUBLANG_ARABIC_BAHRAIN             0x0f
+#define SUBLANG_ARABIC_QATAR               0x10
+#define SUBLANG_ARMENIAN_ARMENIA           0x01
+#define SUBLANG_ASSAMESE_INDIA             0x01
+#define SUBLANG_AZERI_LATIN                0x01
+#define SUBLANG_AZERI_CYRILLIC             0x02
+#define SUBLANG_BASHKIR_RUSSIA             0x01
+#define SUBLANG_BASQUE_BASQUE              0x01
+#define SUBLANG_BELARUSIAN_BELARUS         0x01
+#define SUBLANG_BENGALI_INDIA              0x01
+#define SUBLANG_BENGALI_BANGLADESH         0x02
+#define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN 0x05
+#define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x08
+#define SUBLANG_BRETON_FRANCE              0x01
+#define SUBLANG_BULGARIAN_BULGARIA         0x01
+#define SUBLANG_CATALAN_CATALAN            0x01
+#define SUBLANG_CHINESE_TRADITIONAL        0x01
+#define SUBLANG_CHINESE_SIMPLIFIED         0x02
+#define SUBLANG_CHINESE_HONGKONG           0x03
+#define SUBLANG_CHINESE_SINGAPORE          0x04
+#define SUBLANG_CHINESE_MACAU              0x05
+#define SUBLANG_CORSICAN_FRANCE            0x01
+#define SUBLANG_CROATIAN_CROATIA           0x01
+#define SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN 0x04
+#define SUBLANG_CZECH_CZECH_REPUBLIC       0x01
+#define SUBLANG_DANISH_DENMARK             0x01
+#define SUBLANG_DARI_AFGHANISTAN           0x01
+#define SUBLANG_DIVEHI_MALDIVES            0x01
+#define SUBLANG_DUTCH                      0x01
+#define SUBLANG_DUTCH_BELGIAN              0x02
+#define SUBLANG_ENGLISH_US                 0x01
+#define SUBLANG_ENGLISH_UK                 0x02
+#define SUBLANG_ENGLISH_AUS                0x03
+#define SUBLANG_ENGLISH_CAN                0x04
+#define SUBLANG_ENGLISH_NZ                 0x05
+#define SUBLANG_ENGLISH_EIRE               0x06
+#define SUBLANG_ENGLISH_SOUTH_AFRICA       0x07
+#define SUBLANG_ENGLISH_JAMAICA            0x08
+#define SUBLANG_ENGLISH_CARIBBEAN          0x09
+#define SUBLANG_ENGLISH_BELIZE             0x0a
+#define SUBLANG_ENGLISH_TRINIDAD           0x0b
+#define SUBLANG_ENGLISH_ZIMBABWE           0x0c
+#define SUBLANG_ENGLISH_PHILIPPINES        0x0d
+#define SUBLANG_ENGLISH_INDIA              0x10
+#define SUBLANG_ENGLISH_MALAYSIA           0x11
+#define SUBLANG_ENGLISH_SINGAPORE          0x12
+#define SUBLANG_ESTONIAN_ESTONIA           0x01
+#define SUBLANG_FAEROESE_FAROE_ISLANDS     0x01
+#define SUBLANG_FILIPINO_PHILIPPINES       0x01
+#define SUBLANG_FINNISH_FINLAND            0x01
+#define SUBLANG_FRENCH                     0x01
+#define SUBLANG_FRENCH_BELGIAN             0x02
+#define SUBLANG_FRENCH_CANADIAN            0x03
+#define SUBLANG_FRENCH_SWISS               0x04
+#define SUBLANG_FRENCH_LUXEMBOURG          0x05
+#define SUBLANG_FRENCH_MONACO              0x06
+#define SUBLANG_FRISIAN_NETHERLANDS        0x01
+#define SUBLANG_GALICIAN_GALICIAN          0x01
+#define SUBLANG_GEORGIAN_GEORGIA           0x01
+#define SUBLANG_GERMAN                     0x01
+#define SUBLANG_GERMAN_SWISS               0x02
+#define SUBLANG_GERMAN_AUSTRIAN            0x03
+#define SUBLANG_GERMAN_LUXEMBOURG          0x04
+#define SUBLANG_GERMAN_LIECHTENSTEIN       0x05
+#define SUBLANG_GREEK_GREECE               0x01
+#define SUBLANG_GREENLANDIC_GREENLAND      0x01
+#define SUBLANG_GUJARATI_INDIA             0x01
+#define SUBLANG_HAUSA_NIGERIA_LATIN        0x01
+#define SUBLANG_HEBREW_ISRAEL              0x01
+#define SUBLANG_HINDI_INDIA                0x01
+#define SUBLANG_HUNGARIAN_HUNGARY          0x01
+#define SUBLANG_ICELANDIC_ICELAND          0x01
+#define SUBLANG_IGBO_NIGERIA               0x01
+#define SUBLANG_INDONESIAN_INDONESIA       0x01
+#define SUBLANG_INUKTITUT_CANADA           0x01
+#define SUBLANG_INUKTITUT_CANADA_LATIN     0x02
+#define SUBLANG_IRISH_IRELAND              0x02
+#define SUBLANG_ITALIAN                    0x01
+#define SUBLANG_ITALIAN_SWISS              0x02
+#define SUBLANG_JAPANESE_JAPAN             0x01
+#define SUBLANG_KANNADA_INDIA              0x01
+#define SUBLANG_KASHMIRI_SASIA             0x02
+#define SUBLANG_KASHMIRI_INDIA             0x02
+#define SUBLANG_KAZAK_KAZAKHSTAN           0x01
+#define SUBLANG_KHMER_CAMBODIA             0x01
+#define SUBLANG_KICHE_GUATEMALA            0x01
+#define SUBLANG_KINYARWANDA_RWANDA         0X01
+#define SUBLANG_KONKANI_INDIA              0x01
+#define SUBLANG_KOREAN                     0x01
+#define SUBLANG_KYRGYZ_KYRGYZSTAN          0x01
+#define SUBLANG_LAO_LAO                    0x01
+#define SUBLANG_LATVIAN_LATVIA             0x01
+#define SUBLANG_LITHUANIAN_LITHUANIA       0x01
+#define SUBLANG_LOWER_SORBIAN_GERMANY      0x02
+#define SUBLANG_LUXEMBOURGISH_LUXEMBOURG   0x01
+#define SUBLANG_MACEDONIAN_MACEDONIA       0x01
+#define SUBLANG_MALAY_MALAYSIA             0x01
+#define SUBLANG_MALAY_BRUNEI_DARUSSALAM    0x02
+#define SUBLANG_MALAYALAM_INDIA            0x01
+#define SUBLANG_MALTESE_MALTA              0x01
+#define SUBLANG_MAORI_NEW_ZEALAND          0x01
+#define SUBLANG_MAPUDUNGUN_CHILE           0x01
+#define SUBLANG_MARATHI_INDIA              0x01
+#define SUBLANG_MOHAWK_MOHAWK              0x01
+#define SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA 0x01
+#define SUBLANG_MONGOLIAN_PRC              0x02
+#define SUBLANG_NEPALI_INDIA               0x02
+#define SUBLANG_NEPALI_NEPAL               0x01
+#define SUBLANG_NORWEGIAN_BOKMAL           0x01
+#define SUBLANG_NORWEGIAN_NYNORSK          0x02
+#define SUBLANG_OCCITAN_FRANCE             0x01
+#define SUBLANG_ORIYA_INDIA                0x01
+#define SUBLANG_PASHTO_AFGHANISTAN         0x01
+#define SUBLANG_PERSIAN_IRAN               0x01
+#define SUBLANG_POLISH_POLAND              0x01
+#define SUBLANG_PORTUGUESE                 0x02
+#define SUBLANG_PORTUGUESE_BRAZILIAN       0x01
+#define SUBLANG_PUNJABI_INDIA              0x01
+#define SUBLANG_QUECHUA_BOLIVIA            0x01
+#define SUBLANG_QUECHUA_ECUADOR            0x02
+#define SUBLANG_QUECHUA_PERU               0x03
+#define SUBLANG_ROMANIAN_ROMANIA           0x01
+#define SUBLANG_ROMANSH_SWITZERLAND        0x01
+#define SUBLANG_RUSSIAN_RUSSIA             0x01
+#define SUBLANG_SAMI_NORTHERN_NORWAY       0x01
+#define SUBLANG_SAMI_NORTHERN_SWEDEN       0x02
+#define SUBLANG_SAMI_NORTHERN_FINLAND      0x03
+#define SUBLANG_SAMI_LULE_NORWAY           0x04
+#define SUBLANG_SAMI_LULE_SWEDEN           0x05
+#define SUBLANG_SAMI_SOUTHERN_NORWAY       0x06
+#define SUBLANG_SAMI_SOUTHERN_SWEDEN       0x07
+#define SUBLANG_SAMI_SKOLT_FINLAND         0x08
+#define SUBLANG_SAMI_INARI_FINLAND         0x09
+#define SUBLANG_SANSKRIT_INDIA             0x01
+#define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN 0x06
+#define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x07
+#define SUBLANG_SERBIAN_CROATIA            0x01
+#define SUBLANG_SERBIAN_LATIN              0x02
+#define SUBLANG_SERBIAN_CYRILLIC           0x03
+#define SUBLANG_SINDHI_AFGHANISTAN         0x02
+#define SUBLANG_SINHALESE_SRI_LANKA        0x01
+#define SUBLANG_SLOVAK_SLOVAKIA            0x01
+#define SUBLANG_SLOVENIAN_SLOVENIA         0x01
+#define SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA 0x01
+#define SUBLANG_SPANISH                    0x01
+#define SUBLANG_SPANISH_MEXICAN            0x02
+#define SUBLANG_SPANISH_MODERN             0x03
+#define SUBLANG_SPANISH_GUATEMALA          0x04
+#define SUBLANG_SPANISH_COSTA_RICA         0x05
+#define SUBLANG_SPANISH_PANAMA             0x06
+#define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07
+#define SUBLANG_SPANISH_VENEZUELA          0x08
+#define SUBLANG_SPANISH_COLOMBIA           0x09
+#define SUBLANG_SPANISH_PERU               0x0a
+#define SUBLANG_SPANISH_ARGENTINA          0x0b
+#define SUBLANG_SPANISH_ECUADOR            0x0c
+#define SUBLANG_SPANISH_CHILE              0x0d
+#define SUBLANG_SPANISH_URUGUAY            0x0e
+#define SUBLANG_SPANISH_PARAGUAY           0x0f
+#define SUBLANG_SPANISH_BOLIVIA            0x10
+#define SUBLANG_SPANISH_EL_SALVADOR        0x11
+#define SUBLANG_SPANISH_HONDURAS           0x12
+#define SUBLANG_SPANISH_NICARAGUA          0x13
+#define SUBLANG_SPANISH_PUERTO_RICO        0x14
+#define SUBLANG_SPANISH_US                 0x15
+#define SUBLANG_SWAHILI_KENYA              0x01
+#define SUBLANG_SWEDISH                    0x01
+#define SUBLANG_SWEDISH_FINLAND            0x02
+#define SUBLANG_SYRIAC_SYRIA               0x01
+#define SUBLANG_TAJIK_TAJIKISTAN           0x01
+#define SUBLANG_TAMAZIGHT_ALGERIA_LATIN    0x02
+#define SUBLANG_TAMIL_INDIA                0x01
+#define SUBLANG_TATAR_RUSSIA               0x01
+#define SUBLANG_TELUGU_INDIA               0x01
+#define SUBLANG_THAI_THAILAND              0x01
+#define SUBLANG_TIBETAN_PRC                0x01
+#define SUBLANG_TIBETAN_BHUTAN             0x02
+#define SUBLANG_TIGRIGNA_ERITREA           0x02
+#define SUBLANG_TSWANA_SOUTH_AFRICA        0x01
+#define SUBLANG_TURKISH_TURKEY             0x01
+#define SUBLANG_TURKMEN_TURKMENISTAN       0x01
+#define SUBLANG_UIGHUR_PRC                 0x01
+#define SUBLANG_UKRAINIAN_UKRAINE          0x01
+#define SUBLANG_UPPER_SORBIAN_GERMANY      0x01
+#define SUBLANG_URDU_PAKISTAN              0x01
+#define SUBLANG_URDU_INDIA                 0x02
+#define SUBLANG_UZBEK_LATIN                0x01
+#define SUBLANG_UZBEK_CYRILLIC             0x02
+#define SUBLANG_VIETNAMESE_VIETNAM         0x01
+#define SUBLANG_WELSH_UNITED_KINGDOM       0x01
+#define SUBLANG_WOLOF_SENEGAL              0x01
+#define SUBLANG_XHOSA_SOUTH_AFRICA         0x01
+#define SUBLANG_YAKUT_RUSSIA               0x01
+#define SUBLANG_YI_PRC                     0x01
+#define SUBLANG_YORUBA_NIGERIA             0x01
+#define SUBLANG_ZULU_SOUTH_AFRICA          0x01
+
+/* These are documented by the MSDN but are missing from the Windows header */
+#define SUBLANG_ENGLISH_IRELAND            SUBLANG_ENGLISH_EIRE
+#define SUBLANG_HAUSA_NIGERIA              SUBLANG_HAUSA_NIGERIA_LATIN
+#define SUBLANG_LAO_LAO_PDR                SUBLANG_LAO_LAO
+#define SUBLANG_LITHUANIAN                 SUBLANG_LITHUANIAN_LITHUANIA
+#define SUBLANG_PORTUGUESE_PORTUGAL        SUBLANG_PORTUGUESE
+#define SUBLANG_SWAHILI                    SUBLANG_SWAHILI_KENYA
+#define SUBLANG_SWEDISH_SWEDEN             SUBLANG_SWEDISH
+#define SUBLANG_SYRIAC                     SUBLANG_SYRIAC_SYRIA
+
+/* FIXME: these are not defined anywhere */
+#define SUBLANG_DUTCH_SURINAM              0x03
+#define SUBLANG_ROMANIAN                   SUBLANG_ROMANIAN_ROMANIA
+#define SUBLANG_ROMANIAN_MOLDAVIA          0x02
+#define SUBLANG_RUSSIAN                    SUBLANG_RUSSIAN_RUSSIA
+#define SUBLANG_RUSSIAN_MOLDAVIA           0x02
+#define SUBLANG_CROATIAN                   SUBLANG_CROATIAN_CROATIA
+#define SUBLANG_LITHUANIAN_CLASSIC         0x02
+#define SUBLANG_GAELIC                     0x01
+#define SUBLANG_GAELIC_SCOTTISH            0x02
+#define SUBLANG_GAELIC_MANX                0x03
+
+
+/*
+ * Sort definitions
+ */
+
+#define SORT_DEFAULT                     0x0
+#define SORT_JAPANESE_XJIS               0x0
+#define SORT_JAPANESE_UNICODE            0x1
+#define SORT_CHINESE_BIG5                0x0
+#define SORT_CHINESE_UNICODE             0x1
+#define SORT_KOREAN_KSC                  0x0
+#define SORT_KOREAN_UNICODE              0x1
+
+
+
+/*
+ * Definitions for IsTextUnicode()
+ */
+
+#define IS_TEXT_UNICODE_ASCII16		   0x0001
+#define IS_TEXT_UNICODE_STATISTICS         0x0002
+#define IS_TEXT_UNICODE_CONTROLS           0x0004
+#define IS_TEXT_UNICODE_SIGNATURE	   0x0008
+#define IS_TEXT_UNICODE_UNICODE_MASK       0x000F
+#define IS_TEXT_UNICODE_REVERSE_ASCII16	   0x0010
+#define IS_TEXT_UNICODE_REVERSE_STATISTICS 0x0020
+#define IS_TEXT_UNICODE_REVERSE_CONTROLS   0x0040
+#define IS_TEXT_UNICODE_REVERSE_SIGNATURE  0x0080
+#define IS_TEXT_UNICODE_REVERSE_MASK       0x00F0
+#define IS_TEXT_UNICODE_ILLEGAL_CHARS	   0x0100
+#define IS_TEXT_UNICODE_ODD_LENGTH	   0x0200
+#define IS_TEXT_UNICODE_DBCS_LEADBYTE      0x0400
+#define IS_TEXT_UNICODE_NOT_UNICODE_MASK   0x0F00
+#define IS_TEXT_UNICODE_NULL_BYTES         0x1000
+#define IS_TEXT_UNICODE_NOT_ASCII_MASK     0xF000
+
+#define MAXIMUM_WAIT_OBJECTS 64
+#define MAXIMUM_SUSPEND_COUNT 127
+
+#define WT_EXECUTEDEFAULT              0x00
+#define WT_EXECUTEINIOTHREAD           0x01
+#define WT_EXECUTEINUITHREAD           0x02
+#define WT_EXECUTEINWAITTHREAD         0x04
+#define WT_EXECUTEONLYONCE             0x08
+#define WT_EXECUTELONGFUNCTION         0x10
+#define WT_EXECUTEINTIMERTHREAD        0x20
+#define WT_EXECUTEINPERSISTENTIOTHREAD 0x40
+#define WT_EXECUTEINPERSISTENTTHREAD   0x80
+#define WT_EXECUTEINLONGTHREAD         0x10
+#define WT_EXECUTEDELETEWAIT           0x08
+#define WT_TRANSFER_IMPERSONATION      0x0100
+
+
+#define EXCEPTION_CONTINUABLE        0
+#define EXCEPTION_NONCONTINUABLE     0x01
+
+/*
+ * The exception record used by Win32 to give additional information
+ * about exception to exception handlers.
+ */
+
+#define EXCEPTION_MAXIMUM_PARAMETERS 15
+
+typedef struct _EXCEPTION_RECORD
+{
+    DWORD    ExceptionCode;
+    DWORD    ExceptionFlags;
+    struct  _EXCEPTION_RECORD *ExceptionRecord;
+
+    PVOID    ExceptionAddress;
+    DWORD    NumberParameters;
+    ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
+} EXCEPTION_RECORD, *PEXCEPTION_RECORD;
+
+/*
+ * The exception pointers structure passed to exception filters
+ * in except() and the UnhandledExceptionFilter().
+ */
+
+typedef struct _EXCEPTION_POINTERS
+{
+  PEXCEPTION_RECORD  ExceptionRecord;
+  PCONTEXT           ContextRecord;
+} EXCEPTION_POINTERS, *PEXCEPTION_POINTERS;
+
+
+/*
+ * The exception frame, used for registering exception handlers
+ * Win32 cares only about this, but compilers generally emit
+ * larger exception frames for their own use.
+ */
+
+struct _EXCEPTION_REGISTRATION_RECORD;
+
+typedef DWORD (*PEXCEPTION_HANDLER)(PEXCEPTION_RECORD,struct _EXCEPTION_REGISTRATION_RECORD*,
+                                    PCONTEXT,struct _EXCEPTION_REGISTRATION_RECORD **);
+
+typedef struct _EXCEPTION_REGISTRATION_RECORD
+{
+  struct _EXCEPTION_REGISTRATION_RECORD *Prev;
+  PEXCEPTION_HANDLER       Handler;
+} EXCEPTION_REGISTRATION_RECORD;
+
+/*
+ * function pointer to an exception filter
+ */
+
+typedef LONG (CALLBACK *PVECTORED_EXCEPTION_HANDLER)(PEXCEPTION_POINTERS ExceptionInfo);
+
+typedef struct _NT_TIB
+{
+	struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
+	PVOID StackBase;
+	PVOID StackLimit;
+	PVOID SubSystemTib;
+	union {
+          PVOID FiberData;
+          DWORD Version;
+	} DUMMYUNIONNAME;
+	PVOID ArbitraryUserPointer;
+	struct _NT_TIB *Self;
+} NT_TIB, *PNT_TIB;
+
+struct _TEB;
+
+#if defined(__i386__) && defined(__GNUC__)
+extern inline struct _TEB * WINAPI NtCurrentTeb(void);
+extern inline struct _TEB * WINAPI NtCurrentTeb(void)
+{
+    struct _TEB *teb;
+    __asm__(".byte 0x64\n\tmovl (0x18),%0" : "=r" (teb));
+    return teb;
+}
+#elif defined(__i386__) && defined(_MSC_VER)
+extern inline struct _TEB * WINAPI NtCurrentTeb(void)
+{
+  struct _TEB *teb;
+  __asm mov eax, fs:[0x18];
+  __asm mov teb, eax;
+  return teb;
+}
+#elif defined(__x86_64__) && defined(__GNUC__)
+extern inline struct _TEB * WINAPI NtCurrentTeb(void)
+{
+    struct _TEB *teb;
+    __asm__(".byte 0x65\n\tmovq (0x30),%0" : "=r" (teb));
+    return teb;
+}
+#elif defined(__x86_64__) && defined (_MSC_VER)
+extern inline struct _TEB * WINAPI NtCurrentTeb(void)
+{
+  struct _TEB *teb;
+  __asm mov rax, gs:[0x30];
+  __asm mov teb, rax;
+  return teb;
+}
+#else
+extern struct _TEB * WINAPI NtCurrentTeb(void);
+#endif
+
+#ifdef NONAMELESSUNION
+#define GetCurrentFiber()  (((NT_TIB *)NtCurrentTeb())->u.FiberData)
+#else
+#define GetCurrentFiber()  (((NT_TIB *)NtCurrentTeb())->FiberData)
+#endif
+#define GetFiberData()     (*(void **)GetCurrentFiber())
+
+#define TLS_MINIMUM_AVAILABLE 64
+
+/*
+ * File formats definitions
+ */
+
+#include <pshpack2.h>
+typedef struct _IMAGE_DOS_HEADER {
+    WORD  e_magic;      /* 00: MZ Header signature */
+    WORD  e_cblp;       /* 02: Bytes on last page of file */
+    WORD  e_cp;         /* 04: Pages in file */
+    WORD  e_crlc;       /* 06: Relocations */
+    WORD  e_cparhdr;    /* 08: Size of header in paragraphs */
+    WORD  e_minalloc;   /* 0a: Minimum extra paragraphs needed */
+    WORD  e_maxalloc;   /* 0c: Maximum extra paragraphs needed */
+    WORD  e_ss;         /* 0e: Initial (relative) SS value */
+    WORD  e_sp;         /* 10: Initial SP value */
+    WORD  e_csum;       /* 12: Checksum */
+    WORD  e_ip;         /* 14: Initial IP value */
+    WORD  e_cs;         /* 16: Initial (relative) CS value */
+    WORD  e_lfarlc;     /* 18: File address of relocation table */
+    WORD  e_ovno;       /* 1a: Overlay number */
+    WORD  e_res[4];     /* 1c: Reserved words */
+    WORD  e_oemid;      /* 24: OEM identifier (for e_oeminfo) */
+    WORD  e_oeminfo;    /* 26: OEM information; e_oemid specific */
+    WORD  e_res2[10];   /* 28: Reserved words */
+    DWORD e_lfanew;     /* 3c: Offset to extended header */
+} IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
+#include <poppack.h>
+
+#define IMAGE_DOS_SIGNATURE    0x5A4D     /* MZ   */
+#define IMAGE_OS2_SIGNATURE    0x454E     /* NE   */
+#define IMAGE_OS2_SIGNATURE_LE 0x454C     /* LE   */
+#define IMAGE_OS2_SIGNATURE_LX 0x584C     /* LX */
+#define IMAGE_VXD_SIGNATURE    0x454C     /* LE   */
+#define IMAGE_NT_SIGNATURE     0x00004550 /* PE00 */
+
+/*
+ * This is the Windows executable (NE) header.
+ * the name IMAGE_OS2_HEADER is misleading, but in the SDK this way.
+ */
+#include <pshpack2.h>
+typedef struct
+{
+    WORD  ne_magic;             /* 00 NE signature 'NE' */
+    BYTE  ne_ver;               /* 02 Linker version number */
+    BYTE  ne_rev;               /* 03 Linker revision number */
+    WORD  ne_enttab;            /* 04 Offset to entry table relative to NE */
+    WORD  ne_cbenttab;          /* 06 Length of entry table in bytes */
+    LONG  ne_crc;               /* 08 Checksum */
+    WORD  ne_flags;             /* 0c Flags about segments in this file */
+    WORD  ne_autodata;          /* 0e Automatic data segment number */
+    WORD  ne_heap;              /* 10 Initial size of local heap */
+    WORD  ne_stack;             /* 12 Initial size of stack */
+    DWORD ne_csip;              /* 14 Initial CS:IP */
+    DWORD ne_sssp;              /* 18 Initial SS:SP */
+    WORD  ne_cseg;              /* 1c # of entries in segment table */
+    WORD  ne_cmod;              /* 1e # of entries in module reference tab. */
+    WORD  ne_cbnrestab;         /* 20 Length of nonresident-name table     */
+    WORD  ne_segtab;            /* 22 Offset to segment table */
+    WORD  ne_rsrctab;           /* 24 Offset to resource table */
+    WORD  ne_restab;            /* 26 Offset to resident-name table */
+    WORD  ne_modtab;            /* 28 Offset to module reference table */
+    WORD  ne_imptab;            /* 2a Offset to imported name table */
+    DWORD ne_nrestab;           /* 2c Offset to nonresident-name table */
+    WORD  ne_cmovent;           /* 30 # of movable entry points */
+    WORD  ne_align;             /* 32 Logical sector alignment shift count */
+    WORD  ne_cres;              /* 34 # of resource segments */
+    BYTE  ne_exetyp;            /* 36 Flags indicating target OS */
+    BYTE  ne_flagsothers;       /* 37 Additional information flags */
+    WORD  ne_pretthunks;        /* 38 Offset to return thunks */
+    WORD  ne_psegrefbytes;      /* 3a Offset to segment ref. bytes */
+    WORD  ne_swaparea;          /* 3c Reserved by Microsoft */
+    WORD  ne_expver;            /* 3e Expected Windows version number */
+} IMAGE_OS2_HEADER, *PIMAGE_OS2_HEADER;
+#include <poppack.h>
+
+#include <pshpack2.h>
+typedef struct _IMAGE_VXD_HEADER {
+  WORD  e32_magic;
+  BYTE  e32_border;
+  BYTE  e32_worder;
+  DWORD e32_level;
+  WORD  e32_cpu;
+  WORD  e32_os;
+  DWORD e32_ver;
+  DWORD e32_mflags;
+  DWORD e32_mpages;
+  DWORD e32_startobj;
+  DWORD e32_eip;
+  DWORD e32_stackobj;
+  DWORD e32_esp;
+  DWORD e32_pagesize;
+  DWORD e32_lastpagesize;
+  DWORD e32_fixupsize;
+  DWORD e32_fixupsum;
+  DWORD e32_ldrsize;
+  DWORD e32_ldrsum;
+  DWORD e32_objtab;
+  DWORD e32_objcnt;
+  DWORD e32_objmap;
+  DWORD e32_itermap;
+  DWORD e32_rsrctab;
+  DWORD e32_rsrccnt;
+  DWORD e32_restab;
+  DWORD e32_enttab;
+  DWORD e32_dirtab;
+  DWORD e32_dircnt;
+  DWORD e32_fpagetab;
+  DWORD e32_frectab;
+  DWORD e32_impmod;
+  DWORD e32_impmodcnt;
+  DWORD e32_impproc;
+  DWORD e32_pagesum;
+  DWORD e32_datapage;
+  DWORD e32_preload;
+  DWORD e32_nrestab;
+  DWORD e32_cbnrestab;
+  DWORD e32_nressum;
+  DWORD e32_autodata;
+  DWORD e32_debuginfo;
+  DWORD e32_debuglen;
+  DWORD e32_instpreload;
+  DWORD e32_instdemand;
+  DWORD e32_heapsize;
+  BYTE  e32_res3[12];
+  DWORD e32_winresoff;
+  DWORD e32_winreslen;
+  WORD  e32_devid;
+  WORD  e32_ddkver;
+} IMAGE_VXD_HEADER, *PIMAGE_VXD_HEADER;
+#include <poppack.h>
+
+/* These defines describe the meanings of the bits in the Characteristics
+   field */
+
+#define IMAGE_FILE_RELOCS_STRIPPED	0x0001 /* No relocation info */
+#define IMAGE_FILE_EXECUTABLE_IMAGE	0x0002
+#define IMAGE_FILE_LINE_NUMS_STRIPPED   0x0004
+#define IMAGE_FILE_LOCAL_SYMS_STRIPPED  0x0008
+#define IMAGE_FILE_AGGRESIVE_WS_TRIM	0x0010
+#define IMAGE_FILE_LARGE_ADDRESS_AWARE	0x0020
+#define IMAGE_FILE_16BIT_MACHINE	0x0040
+#define IMAGE_FILE_BYTES_REVERSED_LO	0x0080
+#define IMAGE_FILE_32BIT_MACHINE	0x0100
+#define IMAGE_FILE_DEBUG_STRIPPED	0x0200
+#define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP	0x0400
+#define IMAGE_FILE_NET_RUN_FROM_SWAP	0x0800
+#define IMAGE_FILE_SYSTEM		0x1000
+#define IMAGE_FILE_DLL			0x2000
+#define IMAGE_FILE_UP_SYSTEM_ONLY	0x4000
+#define IMAGE_FILE_BYTES_REVERSED_HI	0x8000
+
+/* These are the settings of the Machine field. */
+#define	IMAGE_FILE_MACHINE_UNKNOWN	0
+#define	IMAGE_FILE_MACHINE_I860		0x014d
+#define	IMAGE_FILE_MACHINE_I386		0x014c
+#define	IMAGE_FILE_MACHINE_R3000	0x0162
+#define	IMAGE_FILE_MACHINE_R4000	0x0166
+#define	IMAGE_FILE_MACHINE_R10000	0x0168
+#define	IMAGE_FILE_MACHINE_WCEMIPSV2	0x0169
+#define	IMAGE_FILE_MACHINE_ALPHA	0x0184
+#define	IMAGE_FILE_MACHINE_SH3		0x01a2
+#define	IMAGE_FILE_MACHINE_SH3DSP	0x01a3
+#define	IMAGE_FILE_MACHINE_SH3E		0x01a4
+#define	IMAGE_FILE_MACHINE_SH4		0x01a6
+#define	IMAGE_FILE_MACHINE_SH5		0x01a8
+#define	IMAGE_FILE_MACHINE_ARM		0x01c0
+#define	IMAGE_FILE_MACHINE_THUMB	0x01c2
+#define	IMAGE_FILE_MACHINE_AM33		0x01d3
+#define	IMAGE_FILE_MACHINE_POWERPC	0x01f0
+#define	IMAGE_FILE_MACHINE_POWERPCFP	0x01f1
+#define	IMAGE_FILE_MACHINE_IA64		0x0200
+#define	IMAGE_FILE_MACHINE_MIPS16	0x0266
+#define	IMAGE_FILE_MACHINE_ALPHA64	0x0284
+#define	IMAGE_FILE_MACHINE_MIPSFPU	0x0366
+#define	IMAGE_FILE_MACHINE_MIPSFPU16	0x0466
+#define	IMAGE_FILE_MACHINE_AXP64	IMAGE_FILE_MACHINE_ALPHA64
+#define	IMAGE_FILE_MACHINE_TRICORE	0x0520
+#define	IMAGE_FILE_MACHINE_CEF		0x0cef
+#define	IMAGE_FILE_MACHINE_EBC		0x0ebc
+#define	IMAGE_FILE_MACHINE_AMD64	0x8664
+#define	IMAGE_FILE_MACHINE_M32R		0x9041
+#define	IMAGE_FILE_MACHINE_CEE		0xc0ee
+
+#define	IMAGE_SIZEOF_FILE_HEADER		20
+#define IMAGE_SIZEOF_ROM_OPTIONAL_HEADER	56
+#define IMAGE_SIZEOF_STD_OPTIONAL_HEADER	28
+#define IMAGE_SIZEOF_NT_OPTIONAL32_HEADER 	224
+#define IMAGE_SIZEOF_NT_OPTIONAL64_HEADER 	240
+#define IMAGE_SIZEOF_SHORT_NAME 		8
+#define IMAGE_SIZEOF_SECTION_HEADER 		40
+#define IMAGE_SIZEOF_SYMBOL 			18
+#define IMAGE_SIZEOF_AUX_SYMBOL 		18
+#define IMAGE_SIZEOF_RELOCATION 		10
+#define IMAGE_SIZEOF_BASE_RELOCATION 		8
+#define IMAGE_SIZEOF_LINENUMBER 		6
+#define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 	60
+
+/* Possible Magic values */
+#define IMAGE_NT_OPTIONAL_HDR32_MAGIC      0x10b
+#define IMAGE_NT_OPTIONAL_HDR64_MAGIC      0x20b
+#define IMAGE_ROM_OPTIONAL_HDR_MAGIC       0x107
+
+#ifdef _WIN64
+#define IMAGE_SIZEOF_NT_OPTIONAL_HEADER IMAGE_SIZEOF_NT_OPTIONAL64_HEADER
+#define IMAGE_NT_OPTIONAL_HDR_MAGIC     IMAGE_NT_OPTIONAL_HDR64_MAGIC
+#else
+#define IMAGE_SIZEOF_NT_OPTIONAL_HEADER IMAGE_SIZEOF_NT_OPTIONAL32_HEADER
+#define IMAGE_NT_OPTIONAL_HDR_MAGIC     IMAGE_NT_OPTIONAL_HDR32_MAGIC
+#endif
+
+/* These are indexes into the DataDirectory array */
+#define IMAGE_FILE_EXPORT_DIRECTORY		0
+#define IMAGE_FILE_IMPORT_DIRECTORY		1
+#define IMAGE_FILE_RESOURCE_DIRECTORY		2
+#define IMAGE_FILE_EXCEPTION_DIRECTORY		3
+#define IMAGE_FILE_SECURITY_DIRECTORY		4
+#define IMAGE_FILE_BASE_RELOCATION_TABLE	5
+#define IMAGE_FILE_DEBUG_DIRECTORY		6
+#define IMAGE_FILE_DESCRIPTION_STRING		7
+#define IMAGE_FILE_MACHINE_VALUE		8  /* Mips */
+#define IMAGE_FILE_THREAD_LOCAL_STORAGE		9
+#define IMAGE_FILE_CALLBACK_DIRECTORY		10
+
+/* Directory Entries, indices into the DataDirectory array */
+
+#define	IMAGE_DIRECTORY_ENTRY_EXPORT		0
+#define	IMAGE_DIRECTORY_ENTRY_IMPORT		1
+#define	IMAGE_DIRECTORY_ENTRY_RESOURCE		2
+#define	IMAGE_DIRECTORY_ENTRY_EXCEPTION		3
+#define	IMAGE_DIRECTORY_ENTRY_SECURITY		4
+#define	IMAGE_DIRECTORY_ENTRY_BASERELOC		5
+#define	IMAGE_DIRECTORY_ENTRY_DEBUG		6
+#define	IMAGE_DIRECTORY_ENTRY_COPYRIGHT		7
+#define	IMAGE_DIRECTORY_ENTRY_GLOBALPTR		8   /* (MIPS GP) */
+#define	IMAGE_DIRECTORY_ENTRY_TLS		9
+#define	IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG	10
+#define	IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT	11
+#define	IMAGE_DIRECTORY_ENTRY_IAT		12  /* Import Address Table */
+#define	IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT	13
+#define	IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR	14
+
+/* Subsystem Values */
+
+#define	IMAGE_SUBSYSTEM_UNKNOWN			0
+#define	IMAGE_SUBSYSTEM_NATIVE			1
+#define	IMAGE_SUBSYSTEM_WINDOWS_GUI		2	/* Windows GUI subsystem */
+#define	IMAGE_SUBSYSTEM_WINDOWS_CUI		3	/* Windows character subsystem */
+#define	IMAGE_SUBSYSTEM_OS2_CUI			5
+#define	IMAGE_SUBSYSTEM_POSIX_CUI		7
+#define	IMAGE_SUBSYSTEM_NATIVE_WINDOWS		8	/* native Win9x driver */
+#define	IMAGE_SUBSYSTEM_WINDOWS_CE_GUI		9	/* Windows CE subsystem */
+#define	IMAGE_SUBSYSTEM_EFI_APPLICATION		10
+#define	IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER	11
+#define	IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER	12
+#define	IMAGE_SUBSYSTEM_EFI_ROM			13
+#define	IMAGE_SUBSYSTEM_XBOX			14
+
+/* DLL Characteristics */
+#define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE          0x0040
+#define IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY       0x0080
+#define IMAGE_DLLCHARACTERISTICS_NX_COMPAT             0x0100
+#define IMAGE_DLLCHARACTERISTICS_NO_ISOLATION          0x0200
+#define IMAGE_DLLCHARACTERISTICS_NO_SEH                0x0400
+#define IMAGE_DLLCHARACTERISTICS_NO_BIND               0x0800
+#define IMAGE_DLLCHARACTERISTICS_WDM_DRIVER            0x2000
+#define IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE 0x8000
+
+typedef struct _IMAGE_FILE_HEADER {
+  WORD  Machine;
+  WORD  NumberOfSections;
+  DWORD TimeDateStamp;
+  DWORD PointerToSymbolTable;
+  DWORD NumberOfSymbols;
+  WORD  SizeOfOptionalHeader;
+  WORD  Characteristics;
+} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
+
+typedef struct _IMAGE_DATA_DIRECTORY {
+  DWORD VirtualAddress;
+  DWORD Size;
+} IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;
+
+#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16
+
+typedef struct _IMAGE_OPTIONAL_HEADER64 {
+  WORD  Magic; /* 0x20b */
+  BYTE MajorLinkerVersion;
+  BYTE MinorLinkerVersion;
+  DWORD SizeOfCode;
+  DWORD SizeOfInitializedData;
+  DWORD SizeOfUninitializedData;
+  DWORD AddressOfEntryPoint;
+  DWORD BaseOfCode;
+  ULONGLONG ImageBase;
+  DWORD SectionAlignment;
+  DWORD FileAlignment;
+  WORD MajorOperatingSystemVersion;
+  WORD MinorOperatingSystemVersion;
+  WORD MajorImageVersion;
+  WORD MinorImageVersion;
+  WORD MajorSubsystemVersion;
+  WORD MinorSubsystemVersion;
+  DWORD Win32VersionValue;
+  DWORD SizeOfImage;
+  DWORD SizeOfHeaders;
+  DWORD CheckSum;
+  WORD Subsystem;
+  WORD DllCharacteristics;
+  ULONGLONG SizeOfStackReserve;
+  ULONGLONG SizeOfStackCommit;
+  ULONGLONG SizeOfHeapReserve;
+  ULONGLONG SizeOfHeapCommit;
+  DWORD LoaderFlags;
+  DWORD NumberOfRvaAndSizes;
+  IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
+} IMAGE_OPTIONAL_HEADER64, *PIMAGE_OPTIONAL_HEADER64;
+
+typedef struct _IMAGE_NT_HEADERS64 {
+  DWORD Signature;
+  IMAGE_FILE_HEADER FileHeader;
+  IMAGE_OPTIONAL_HEADER64 OptionalHeader;
+} IMAGE_NT_HEADERS64, *PIMAGE_NT_HEADERS64;
+
+typedef struct _IMAGE_OPTIONAL_HEADER {
+
+  /* Standard fields */
+
+  WORD  Magic; /* 0x10b or 0x107 */	/* 0x00 */
+  BYTE  MajorLinkerVersion;
+  BYTE  MinorLinkerVersion;
+  DWORD SizeOfCode;
+  DWORD SizeOfInitializedData;
+  DWORD SizeOfUninitializedData;
+  DWORD AddressOfEntryPoint;		/* 0x10 */
+  DWORD BaseOfCode;
+  DWORD BaseOfData;
+
+  /* NT additional fields */
+
+  DWORD ImageBase;
+  DWORD SectionAlignment;		/* 0x20 */
+  DWORD FileAlignment;
+  WORD  MajorOperatingSystemVersion;
+  WORD  MinorOperatingSystemVersion;
+  WORD  MajorImageVersion;
+  WORD  MinorImageVersion;
+  WORD  MajorSubsystemVersion;		/* 0x30 */
+  WORD  MinorSubsystemVersion;
+  DWORD Win32VersionValue;
+  DWORD SizeOfImage;
+  DWORD SizeOfHeaders;
+  DWORD CheckSum;			/* 0x40 */
+  WORD  Subsystem;
+  WORD  DllCharacteristics;
+  DWORD SizeOfStackReserve;
+  DWORD SizeOfStackCommit;
+  DWORD SizeOfHeapReserve;		/* 0x50 */
+  DWORD SizeOfHeapCommit;
+  DWORD LoaderFlags;
+  DWORD NumberOfRvaAndSizes;
+  IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; /* 0x60 */
+  /* 0xE0 */
+} IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32;
+
+typedef struct _IMAGE_NT_HEADERS {
+  DWORD Signature; /* "PE"\0\0 */	/* 0x00 */
+  IMAGE_FILE_HEADER FileHeader;		/* 0x04 */
+  IMAGE_OPTIONAL_HEADER32 OptionalHeader;	/* 0x18 */
+} IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32;
+
+#ifdef _WIN64
+typedef IMAGE_NT_HEADERS64  IMAGE_NT_HEADERS;
+typedef PIMAGE_NT_HEADERS64 PIMAGE_NT_HEADERS;
+typedef IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER;
+typedef PIMAGE_OPTIONAL_HEADER64 PIMAGE_OPTIONAL_HEADER;
+#else
+typedef IMAGE_NT_HEADERS32  IMAGE_NT_HEADERS;
+typedef PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS;
+typedef IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER;
+typedef PIMAGE_OPTIONAL_HEADER32 PIMAGE_OPTIONAL_HEADER;
+#endif
+
+#define IMAGE_SIZEOF_SHORT_NAME 8
+
+typedef struct _IMAGE_SECTION_HEADER {
+  BYTE  Name[IMAGE_SIZEOF_SHORT_NAME];
+  union {
+    DWORD PhysicalAddress;
+    DWORD VirtualSize;
+  } Misc;
+  DWORD VirtualAddress;
+  DWORD SizeOfRawData;
+  DWORD PointerToRawData;
+  DWORD PointerToRelocations;
+  DWORD PointerToLinenumbers;
+  WORD  NumberOfRelocations;
+  WORD  NumberOfLinenumbers;
+  DWORD Characteristics;
+} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;
+
+#define	IMAGE_SIZEOF_SECTION_HEADER 40
+
+#define IMAGE_FIRST_SECTION(ntheader) \
+  ((PIMAGE_SECTION_HEADER)(ULONG_PTR)((const BYTE *)&((const IMAGE_NT_HEADERS *)(ntheader))->OptionalHeader + \
+                           ((const IMAGE_NT_HEADERS *)(ntheader))->FileHeader.SizeOfOptionalHeader))
+
+/* These defines are for the Characteristics bitfield. */
+/* #define IMAGE_SCN_TYPE_REG			0x00000000 - Reserved */
+/* #define IMAGE_SCN_TYPE_DSECT			0x00000001 - Reserved */
+/* #define IMAGE_SCN_TYPE_NOLOAD		0x00000002 - Reserved */
+/* #define IMAGE_SCN_TYPE_GROUP			0x00000004 - Reserved */
+#define IMAGE_SCN_TYPE_NO_PAD			0x00000008 /* Reserved */
+/* #define IMAGE_SCN_TYPE_COPY			0x00000010 - Reserved */
+
+#define IMAGE_SCN_CNT_CODE			0x00000020
+#define IMAGE_SCN_CNT_INITIALIZED_DATA		0x00000040
+#define IMAGE_SCN_CNT_UNINITIALIZED_DATA	0x00000080
+
+#define	IMAGE_SCN_LNK_OTHER			0x00000100
+#define	IMAGE_SCN_LNK_INFO			0x00000200
+/* #define	IMAGE_SCN_TYPE_OVER		0x00000400 - Reserved */
+#define	IMAGE_SCN_LNK_REMOVE			0x00000800
+#define	IMAGE_SCN_LNK_COMDAT			0x00001000
+
+/* 						0x00002000 - Reserved */
+/* #define IMAGE_SCN_MEM_PROTECTED 		0x00004000 - Obsolete */
+#define	IMAGE_SCN_MEM_FARDATA			0x00008000
+
+/* #define IMAGE_SCN_MEM_SYSHEAP		0x00010000 - Obsolete */
+#define	IMAGE_SCN_MEM_PURGEABLE			0x00020000
+#define	IMAGE_SCN_MEM_16BIT			0x00020000
+#define	IMAGE_SCN_MEM_LOCKED			0x00040000
+#define	IMAGE_SCN_MEM_PRELOAD			0x00080000
+
+#define	IMAGE_SCN_ALIGN_1BYTES			0x00100000
+#define	IMAGE_SCN_ALIGN_2BYTES			0x00200000
+#define	IMAGE_SCN_ALIGN_4BYTES			0x00300000
+#define	IMAGE_SCN_ALIGN_8BYTES			0x00400000
+#define	IMAGE_SCN_ALIGN_16BYTES			0x00500000  /* Default */
+#define	IMAGE_SCN_ALIGN_32BYTES			0x00600000
+#define	IMAGE_SCN_ALIGN_64BYTES			0x00700000
+#define	IMAGE_SCN_ALIGN_128BYTES		0x00800000
+#define	IMAGE_SCN_ALIGN_256BYTES		0x00900000
+#define	IMAGE_SCN_ALIGN_512BYTES		0x00A00000
+#define	IMAGE_SCN_ALIGN_1024BYTES		0x00B00000
+#define	IMAGE_SCN_ALIGN_2048BYTES		0x00C00000
+#define	IMAGE_SCN_ALIGN_4096BYTES		0x00D00000
+#define	IMAGE_SCN_ALIGN_8192BYTES		0x00E00000
+/* 						0x00F00000 - Unused */
+#define	IMAGE_SCN_ALIGN_MASK			0x00F00000
+
+#define IMAGE_SCN_LNK_NRELOC_OVFL		0x01000000
+
+
+#define IMAGE_SCN_MEM_DISCARDABLE		0x02000000
+#define IMAGE_SCN_MEM_NOT_CACHED		0x04000000
+#define IMAGE_SCN_MEM_NOT_PAGED			0x08000000
+#define IMAGE_SCN_MEM_SHARED			0x10000000
+#define IMAGE_SCN_MEM_EXECUTE			0x20000000
+#define IMAGE_SCN_MEM_READ			0x40000000
+#define IMAGE_SCN_MEM_WRITE			0x80000000
+
+#include <pshpack2.h>
+
+typedef struct _IMAGE_SYMBOL {
+    union {
+        BYTE    ShortName[8];
+        struct {
+            DWORD   Short;
+            DWORD   Long;
+        } Name;
+        DWORD   LongName[2];
+    } N;
+    DWORD   Value;
+    SHORT   SectionNumber;
+    WORD    Type;
+    BYTE    StorageClass;
+    BYTE    NumberOfAuxSymbols;
+} IMAGE_SYMBOL;
+typedef IMAGE_SYMBOL *PIMAGE_SYMBOL;
+
+#define IMAGE_SIZEOF_SYMBOL 18
+
+typedef struct _IMAGE_LINENUMBER {
+    union {
+        DWORD   SymbolTableIndex;
+        DWORD   VirtualAddress;
+    } Type;
+    WORD    Linenumber;
+} IMAGE_LINENUMBER;
+typedef IMAGE_LINENUMBER *PIMAGE_LINENUMBER;
+
+#define IMAGE_SIZEOF_LINENUMBER  6
+
+typedef union _IMAGE_AUX_SYMBOL {
+    struct {
+        DWORD    TagIndex;
+        union {
+            struct {
+                WORD    Linenumber;
+                WORD    Size;
+            } LnSz;
+           DWORD    TotalSize;
+        } Misc;
+        union {
+            struct {
+                DWORD    PointerToLinenumber;
+                DWORD    PointerToNextFunction;
+            } Function;
+            struct {
+                WORD     Dimension[4];
+            } Array;
+        } FcnAry;
+        WORD    TvIndex;
+    } Sym;
+    struct {
+        BYTE    Name[IMAGE_SIZEOF_SYMBOL];
+    } File;
+    struct {
+        DWORD   Length;
+        WORD    NumberOfRelocations;
+        WORD    NumberOfLinenumbers;
+        DWORD   CheckSum;
+        SHORT   Number;
+        BYTE    Selection;
+    } Section;
+} IMAGE_AUX_SYMBOL;
+typedef IMAGE_AUX_SYMBOL *PIMAGE_AUX_SYMBOL;
+
+#define IMAGE_SIZEOF_AUX_SYMBOL 18
+
+#include <poppack.h>
+
+#define IMAGE_SYM_UNDEFINED           (SHORT)0
+#define IMAGE_SYM_ABSOLUTE            (SHORT)-1
+#define IMAGE_SYM_DEBUG               (SHORT)-2
+
+#define IMAGE_SYM_TYPE_NULL                 0x0000
+#define IMAGE_SYM_TYPE_VOID                 0x0001
+#define IMAGE_SYM_TYPE_CHAR                 0x0002
+#define IMAGE_SYM_TYPE_SHORT                0x0003
+#define IMAGE_SYM_TYPE_INT                  0x0004
+#define IMAGE_SYM_TYPE_LONG                 0x0005
+#define IMAGE_SYM_TYPE_FLOAT                0x0006
+#define IMAGE_SYM_TYPE_DOUBLE               0x0007
+#define IMAGE_SYM_TYPE_STRUCT               0x0008
+#define IMAGE_SYM_TYPE_UNION                0x0009
+#define IMAGE_SYM_TYPE_ENUM                 0x000A
+#define IMAGE_SYM_TYPE_MOE                  0x000B
+#define IMAGE_SYM_TYPE_BYTE                 0x000C
+#define IMAGE_SYM_TYPE_WORD                 0x000D
+#define IMAGE_SYM_TYPE_UINT                 0x000E
+#define IMAGE_SYM_TYPE_DWORD                0x000F
+#define IMAGE_SYM_TYPE_PCODE                0x8000
+
+#define IMAGE_SYM_DTYPE_NULL                0
+#define IMAGE_SYM_DTYPE_POINTER             1
+#define IMAGE_SYM_DTYPE_FUNCTION            2
+#define IMAGE_SYM_DTYPE_ARRAY               3
+
+#define IMAGE_SYM_CLASS_END_OF_FUNCTION     (BYTE )-1
+#define IMAGE_SYM_CLASS_NULL                0x0000
+#define IMAGE_SYM_CLASS_AUTOMATIC           0x0001
+#define IMAGE_SYM_CLASS_EXTERNAL            0x0002
+#define IMAGE_SYM_CLASS_STATIC              0x0003
+#define IMAGE_SYM_CLASS_REGISTER            0x0004
+#define IMAGE_SYM_CLASS_EXTERNAL_DEF        0x0005
+#define IMAGE_SYM_CLASS_LABEL               0x0006
+#define IMAGE_SYM_CLASS_UNDEFINED_LABEL     0x0007
+#define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT    0x0008
+#define IMAGE_SYM_CLASS_ARGUMENT            0x0009
+#define IMAGE_SYM_CLASS_STRUCT_TAG          0x000A
+#define IMAGE_SYM_CLASS_MEMBER_OF_UNION     0x000B
+#define IMAGE_SYM_CLASS_UNION_TAG           0x000C
+#define IMAGE_SYM_CLASS_TYPE_DEFINITION     0x000D
+#define IMAGE_SYM_CLASS_UNDEFINED_STATIC    0x000E
+#define IMAGE_SYM_CLASS_ENUM_TAG            0x000F
+#define IMAGE_SYM_CLASS_MEMBER_OF_ENUM      0x0010
+#define IMAGE_SYM_CLASS_REGISTER_PARAM      0x0011
+#define IMAGE_SYM_CLASS_BIT_FIELD           0x0012
+
+#define IMAGE_SYM_CLASS_FAR_EXTERNAL        0x0044
+#define IMAGE_SYM_CLASS_BLOCK               0x0064
+#define IMAGE_SYM_CLASS_FUNCTION            0x0065
+#define IMAGE_SYM_CLASS_END_OF_STRUCT       0x0066
+#define IMAGE_SYM_CLASS_FILE                0x0067
+#define IMAGE_SYM_CLASS_SECTION             0x0068
+#define IMAGE_SYM_CLASS_WEAK_EXTERNAL       0x0069
+
+#define N_BTMASK                            0x000F
+#define N_TMASK                             0x0030
+#define N_TMASK1                            0x00C0
+#define N_TMASK2                            0x00F0
+#define N_BTSHFT                            4
+#define N_TSHIFT                            2
+
+#define BTYPE(x) ((x) & N_BTMASK)
+
+#ifndef ISPTR
+#define ISPTR(x) (((x) & N_TMASK) == (IMAGE_SYM_DTYPE_POINTER << N_BTSHFT))
+#endif
+
+#ifndef ISFCN
+#define ISFCN(x) (((x) & N_TMASK) == (IMAGE_SYM_DTYPE_FUNCTION << N_BTSHFT))
+#endif
+
+#ifndef ISARY
+#define ISARY(x) (((x) & N_TMASK) == (IMAGE_SYM_DTYPE_ARRAY << N_BTSHFT))
+#endif
+
+#ifndef ISTAG
+#define ISTAG(x) ((x)==IMAGE_SYM_CLASS_STRUCT_TAG || (x)==IMAGE_SYM_CLASS_UNION_TAG || (x)==IMAGE_SYM_CLASS_ENUM_TAG)
+#endif
+
+#ifndef INCREF
+#define INCREF(x) ((((x)&~N_BTMASK)<<N_TSHIFT)|(IMAGE_SYM_DTYPE_POINTER<<N_BTSHFT)|((x)&N_BTMASK))
+#endif
+#ifndef DECREF
+#define DECREF(x) ((((x)>>N_TSHIFT)&~N_BTMASK)|((x)&N_BTMASK))
+#endif
+
+#define IMAGE_COMDAT_SELECT_NODUPLICATES    1
+#define IMAGE_COMDAT_SELECT_ANY             2
+#define IMAGE_COMDAT_SELECT_SAME_SIZE       3
+#define IMAGE_COMDAT_SELECT_EXACT_MATCH     4
+#define IMAGE_COMDAT_SELECT_ASSOCIATIVE     5
+#define IMAGE_COMDAT_SELECT_LARGEST         6
+#define IMAGE_COMDAT_SELECT_NEWEST          7
+
+#define IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY  1
+#define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY    2
+#define IMAGE_WEAK_EXTERN_SEARCH_ALIAS      3
+
+/* Export module directory */
+
+typedef struct _IMAGE_EXPORT_DIRECTORY {
+	DWORD	Characteristics;
+	DWORD	TimeDateStamp;
+	WORD	MajorVersion;
+	WORD	MinorVersion;
+	DWORD	Name;
+	DWORD	Base;
+	DWORD	NumberOfFunctions;
+	DWORD	NumberOfNames;
+	DWORD	AddressOfFunctions;
+	DWORD	AddressOfNames;
+	DWORD	AddressOfNameOrdinals;
+} IMAGE_EXPORT_DIRECTORY,*PIMAGE_EXPORT_DIRECTORY;
+
+/* Import name entry */
+typedef struct _IMAGE_IMPORT_BY_NAME {
+	WORD	Hint;
+	BYTE	Name[1];
+} IMAGE_IMPORT_BY_NAME,*PIMAGE_IMPORT_BY_NAME;
+
+#include <pshpack8.h>
+/* Import thunk */
+typedef struct _IMAGE_THUNK_DATA64 {
+	union {
+		ULONGLONG ForwarderString;
+		ULONGLONG Function;
+		ULONGLONG Ordinal;
+		ULONGLONG AddressOfData;
+	} u1;
+} IMAGE_THUNK_DATA64,*PIMAGE_THUNK_DATA64;
+#include <poppack.h>
+
+typedef struct _IMAGE_THUNK_DATA32 {
+	union {
+		DWORD ForwarderString;
+		DWORD Function;
+		DWORD Ordinal;
+		DWORD AddressOfData;
+	} u1;
+} IMAGE_THUNK_DATA32,*PIMAGE_THUNK_DATA32;
+
+/* Import module directory */
+
+typedef struct _IMAGE_IMPORT_DESCRIPTOR {
+	union {
+		DWORD	Characteristics; /* 0 for terminating null import descriptor  */
+		DWORD	OriginalFirstThunk;	/* RVA to original unbound IAT */
+	} DUMMYUNIONNAME;
+	DWORD	TimeDateStamp;	/* 0 if not bound,
+				 * -1 if bound, and real date\time stamp
+				 *    in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT
+				 * (new BIND)
+				 * otherwise date/time stamp of DLL bound to
+				 * (Old BIND)
+				 */
+	DWORD	ForwarderChain;	/* -1 if no forwarders */
+	DWORD	Name;
+	/* RVA to IAT (if bound this IAT has actual addresses) */
+	DWORD	FirstThunk;
+} IMAGE_IMPORT_DESCRIPTOR,*PIMAGE_IMPORT_DESCRIPTOR;
+
+#define IMAGE_ORDINAL_FLAG64             (((ULONGLONG)0x80000000 << 32) | 0x00000000)
+#define IMAGE_ORDINAL_FLAG32             0x80000000
+#define IMAGE_SNAP_BY_ORDINAL64(ordinal) (((ordinal) & IMAGE_ORDINAL_FLAG64) != 0)
+#define IMAGE_SNAP_BY_ORDINAL32(ordinal) (((ordinal) & IMAGE_ORDINAL_FLAG32) != 0)
+#define IMAGE_ORDINAL64(ordinal)         ((ordinal) & 0xffff)
+#define IMAGE_ORDINAL32(ordinal)         ((ordinal) & 0xffff)
+
+#ifdef _WIN64
+#define IMAGE_ORDINAL_FLAG              IMAGE_ORDINAL_FLAG64
+#define IMAGE_SNAP_BY_ORDINAL(Ordinal)  IMAGE_SNAP_BY_ORDINAL64(Ordinal)
+#define IMAGE_ORDINAL(Ordinal)          IMAGE_ORDINAL64(Ordinal)
+typedef IMAGE_THUNK_DATA64              IMAGE_THUNK_DATA;
+typedef PIMAGE_THUNK_DATA64             PIMAGE_THUNK_DATA;
+#else
+#define IMAGE_ORDINAL_FLAG              IMAGE_ORDINAL_FLAG32
+#define IMAGE_SNAP_BY_ORDINAL(Ordinal)  IMAGE_SNAP_BY_ORDINAL32(Ordinal)
+#define IMAGE_ORDINAL(Ordinal)          IMAGE_ORDINAL32(Ordinal)
+typedef IMAGE_THUNK_DATA32              IMAGE_THUNK_DATA;
+typedef PIMAGE_THUNK_DATA32             PIMAGE_THUNK_DATA;
+#endif
+
+typedef struct _IMAGE_BOUND_IMPORT_DESCRIPTOR
+{
+    DWORD   TimeDateStamp;
+    WORD    OffsetModuleName;
+    WORD    NumberOfModuleForwarderRefs;
+/* Array of zero or more IMAGE_BOUND_FORWARDER_REF follows */
+} IMAGE_BOUND_IMPORT_DESCRIPTOR,  *PIMAGE_BOUND_IMPORT_DESCRIPTOR;
+
+typedef struct _IMAGE_BOUND_FORWARDER_REF
+{
+    DWORD   TimeDateStamp;
+    WORD    OffsetModuleName;
+    WORD    Reserved;
+} IMAGE_BOUND_FORWARDER_REF, *PIMAGE_BOUND_FORWARDER_REF;
+
+typedef struct _IMAGE_BASE_RELOCATION
+{
+	DWORD	VirtualAddress;
+	DWORD	SizeOfBlock;
+	/* WORD	TypeOffset[1]; */
+} IMAGE_BASE_RELOCATION,*PIMAGE_BASE_RELOCATION;
+
+#include <pshpack2.h>
+
+typedef struct _IMAGE_RELOCATION
+{
+    union {
+        DWORD   VirtualAddress;
+        DWORD   RelocCount;
+    } DUMMYUNIONNAME;
+    DWORD   SymbolTableIndex;
+    WORD    Type;
+} IMAGE_RELOCATION, *PIMAGE_RELOCATION;
+
+#include <poppack.h>
+
+#define IMAGE_SIZEOF_RELOCATION 10
+
+/* generic relocation types */
+#define IMAGE_REL_BASED_ABSOLUTE 		0
+#define IMAGE_REL_BASED_HIGH			1
+#define IMAGE_REL_BASED_LOW			2
+#define IMAGE_REL_BASED_HIGHLOW			3
+#define IMAGE_REL_BASED_HIGHADJ			4
+#define IMAGE_REL_BASED_MIPS_JMPADDR		5
+#define IMAGE_REL_BASED_SECTION			6
+#define	IMAGE_REL_BASED_REL			7
+#define IMAGE_REL_BASED_MIPS_JMPADDR16		9
+#define IMAGE_REL_BASED_IA64_IMM64		9 /* yes, 9 too */
+#define IMAGE_REL_BASED_DIR64			10
+#define IMAGE_REL_BASED_HIGH3ADJ		11
+
+/* I386 relocation types */
+#define	IMAGE_REL_I386_ABSOLUTE			0
+#define	IMAGE_REL_I386_DIR16			1
+#define	IMAGE_REL_I386_REL16			2
+#define	IMAGE_REL_I386_DIR32			6
+#define	IMAGE_REL_I386_DIR32NB			7
+#define	IMAGE_REL_I386_SEG12			9
+#define	IMAGE_REL_I386_SECTION			10
+#define	IMAGE_REL_I386_SECREL			11
+#define	IMAGE_REL_I386_REL32			20
+
+/* MIPS relocation types */
+#define IMAGE_REL_MIPS_ABSOLUTE		0x0000
+#define IMAGE_REL_MIPS_REFHALF		0x0001
+#define IMAGE_REL_MIPS_REFWORD		0x0002
+#define IMAGE_REL_MIPS_JMPADDR		0x0003
+#define IMAGE_REL_MIPS_REFHI		0x0004
+#define IMAGE_REL_MIPS_REFLO		0x0005
+#define IMAGE_REL_MIPS_GPREL		0x0006
+#define IMAGE_REL_MIPS_LITERAL		0x0007
+#define IMAGE_REL_MIPS_SECTION		0x000A
+#define IMAGE_REL_MIPS_SECREL		0x000B
+#define IMAGE_REL_MIPS_SECRELLO		0x000C
+#define IMAGE_REL_MIPS_SECRELHI		0x000D
+#define	IMAGE_REL_MIPS_JMPADDR16	0x0010
+#define IMAGE_REL_MIPS_REFWORDNB	0x0022
+#define IMAGE_REL_MIPS_PAIR		0x0025
+
+/* ALPHA relocation types */
+#define IMAGE_REL_ALPHA_ABSOLUTE	0x0000
+#define IMAGE_REL_ALPHA_REFLONG		0x0001
+#define IMAGE_REL_ALPHA_REFQUAD		0x0002
+#define IMAGE_REL_ALPHA_GPREL		0x0003
+#define IMAGE_REL_ALPHA_LITERAL		0x0004
+#define IMAGE_REL_ALPHA_LITUSE		0x0005
+#define IMAGE_REL_ALPHA_GPDISP		0x0006
+#define IMAGE_REL_ALPHA_BRADDR		0x0007
+#define IMAGE_REL_ALPHA_HINT		0x0008
+#define IMAGE_REL_ALPHA_INLINE_REFLONG	0x0009
+#define IMAGE_REL_ALPHA_REFHI		0x000A
+#define IMAGE_REL_ALPHA_REFLO		0x000B
+#define IMAGE_REL_ALPHA_PAIR		0x000C
+#define IMAGE_REL_ALPHA_MATCH		0x000D
+#define IMAGE_REL_ALPHA_SECTION		0x000E
+#define IMAGE_REL_ALPHA_SECREL		0x000F
+#define IMAGE_REL_ALPHA_REFLONGNB	0x0010
+#define IMAGE_REL_ALPHA_SECRELLO	0x0011
+#define IMAGE_REL_ALPHA_SECRELHI	0x0012
+#define IMAGE_REL_ALPHA_REFQ3		0x0013
+#define IMAGE_REL_ALPHA_REFQ2		0x0014
+#define IMAGE_REL_ALPHA_REFQ1		0x0015
+#define IMAGE_REL_ALPHA_GPRELLO		0x0016
+#define IMAGE_REL_ALPHA_GPRELHI		0x0017
+
+/* PowerPC relocation types */
+#define IMAGE_REL_PPC_ABSOLUTE          0x0000
+#define IMAGE_REL_PPC_ADDR64            0x0001
+#define IMAGE_REL_PPC_ADDR            0x0002
+#define IMAGE_REL_PPC_ADDR24            0x0003
+#define IMAGE_REL_PPC_ADDR16            0x0004
+#define IMAGE_REL_PPC_ADDR14            0x0005
+#define IMAGE_REL_PPC_REL24             0x0006
+#define IMAGE_REL_PPC_REL14             0x0007
+#define IMAGE_REL_PPC_TOCREL16          0x0008
+#define IMAGE_REL_PPC_TOCREL14          0x0009
+#define IMAGE_REL_PPC_ADDR32NB          0x000A
+#define IMAGE_REL_PPC_SECREL            0x000B
+#define IMAGE_REL_PPC_SECTION           0x000C
+#define IMAGE_REL_PPC_IFGLUE            0x000D
+#define IMAGE_REL_PPC_IMGLUE            0x000E
+#define IMAGE_REL_PPC_SECREL16          0x000F
+#define IMAGE_REL_PPC_REFHI             0x0010
+#define IMAGE_REL_PPC_REFLO             0x0011
+#define IMAGE_REL_PPC_PAIR              0x0012
+#define IMAGE_REL_PPC_SECRELLO          0x0013
+#define IMAGE_REL_PPC_SECRELHI          0x0014
+#define IMAGE_REL_PPC_GPREL		0x0015
+#define IMAGE_REL_PPC_TYPEMASK          0x00FF
+/* modifier bits */
+#define IMAGE_REL_PPC_NEG               0x0100
+#define IMAGE_REL_PPC_BRTAKEN           0x0200
+#define IMAGE_REL_PPC_BRNTAKEN          0x0400
+#define IMAGE_REL_PPC_TOCDEFN           0x0800
+
+/* SH3 ? relocation type */
+#define IMAGE_REL_SH3_ABSOLUTE          0x0000
+#define IMAGE_REL_SH3_DIRECT16          0x0001
+#define IMAGE_REL_SH3_DIRECT          0x0002
+#define IMAGE_REL_SH3_DIRECT8           0x0003
+#define IMAGE_REL_SH3_DIRECT8_WORD      0x0004
+#define IMAGE_REL_SH3_DIRECT8_LONG      0x0005
+#define IMAGE_REL_SH3_DIRECT4           0x0006
+#define IMAGE_REL_SH3_DIRECT4_WORD      0x0007
+#define IMAGE_REL_SH3_DIRECT4_LONG      0x0008
+#define IMAGE_REL_SH3_PCREL8_WORD       0x0009
+#define IMAGE_REL_SH3_PCREL8_LONG       0x000A
+#define IMAGE_REL_SH3_PCREL12_WORD      0x000B
+#define IMAGE_REL_SH3_STARTOF_SECTION   0x000C
+#define IMAGE_REL_SH3_SIZEOF_SECTION    0x000D
+#define IMAGE_REL_SH3_SECTION           0x000E
+#define IMAGE_REL_SH3_SECREL            0x000F
+#define IMAGE_REL_SH3_DIRECT32_NB       0x0010
+
+/* ARM (Archimedes?) relocation types */
+#define IMAGE_REL_ARM_ABSOLUTE		0x0000
+#define IMAGE_REL_ARM_ADDR		0x0001
+#define IMAGE_REL_ARM_ADDR32NB		0x0002
+#define IMAGE_REL_ARM_BRANCH24		0x0003
+#define IMAGE_REL_ARM_BRANCH11		0x0004
+#define IMAGE_REL_ARM_SECTION		0x000E
+#define IMAGE_REL_ARM_SECREL		0x000F
+
+/* IA64 relocation types */
+#define IMAGE_REL_IA64_ABSOLUTE		0x0000
+#define IMAGE_REL_IA64_IMM14		0x0001
+#define IMAGE_REL_IA64_IMM22		0x0002
+#define IMAGE_REL_IA64_IMM64		0x0003
+#define IMAGE_REL_IA64_DIR		0x0004
+#define IMAGE_REL_IA64_DIR64		0x0005
+#define IMAGE_REL_IA64_PCREL21B		0x0006
+#define IMAGE_REL_IA64_PCREL21M		0x0007
+#define IMAGE_REL_IA64_PCREL21F		0x0008
+#define IMAGE_REL_IA64_GPREL22		0x0009
+#define IMAGE_REL_IA64_LTOFF22		0x000A
+#define IMAGE_REL_IA64_SECTION		0x000B
+#define IMAGE_REL_IA64_SECREL22		0x000C
+#define IMAGE_REL_IA64_SECREL64I	0x000D
+#define IMAGE_REL_IA64_SECREL		0x000E
+#define IMAGE_REL_IA64_LTOFF64		0x000F
+#define IMAGE_REL_IA64_DIR32NB		0x0010
+#define IMAGE_REL_IA64_RESERVED_11	0x0011
+#define IMAGE_REL_IA64_RESERVED_12	0x0012
+#define IMAGE_REL_IA64_RESERVED_13	0x0013
+#define IMAGE_REL_IA64_RESERVED_14	0x0014
+#define IMAGE_REL_IA64_RESERVED_15	0x0015
+#define IMAGE_REL_IA64_RESERVED_16	0x0016
+#define IMAGE_REL_IA64_ADDEND		0x001F
+
+/* AMD64 relocation types */
+#define IMAGE_REL_AMD64_ABSOLUTE        0x0000
+#define IMAGE_REL_AMD64_ADDR64          0x0001
+#define IMAGE_REL_AMD64_ADDR32          0x0002
+#define IMAGE_REL_AMD64_ADDR32NB        0x0003
+#define IMAGE_REL_AMD64_REL32           0x0004
+#define IMAGE_REL_AMD64_REL32_1         0x0005
+#define IMAGE_REL_AMD64_REL32_2         0x0006
+#define IMAGE_REL_AMD64_REL32_3         0x0007
+#define IMAGE_REL_AMD64_REL32_4         0x0008
+#define IMAGE_REL_AMD64_REL32_5         0x0009
+#define IMAGE_REL_AMD64_SECTION         0x000A
+#define IMAGE_REL_AMD64_SECREL          0x000B
+#define IMAGE_REL_AMD64_SECREL7         0x000C
+#define IMAGE_REL_AMD64_TOKEN           0x000D
+#define IMAGE_REL_AMD64_SREL32          0x000E
+#define IMAGE_REL_AMD64_PAIR            0x000F
+#define IMAGE_REL_AMD64_SSPAN32         0x0010
+
+/* archive format */
+
+#define IMAGE_ARCHIVE_START_SIZE             8
+#define IMAGE_ARCHIVE_START                  "!<arch>\n"
+#define IMAGE_ARCHIVE_END                    "`\n"
+#define IMAGE_ARCHIVE_PAD                    "\n"
+#define IMAGE_ARCHIVE_LINKER_MEMBER          "/               "
+#define IMAGE_ARCHIVE_LONGNAMES_MEMBER       "//              "
+
+typedef struct _IMAGE_ARCHIVE_MEMBER_HEADER
+{
+    BYTE     Name[16];
+    BYTE     Date[12];
+    BYTE     UserID[6];
+    BYTE     GroupID[6];
+    BYTE     Mode[8];
+    BYTE     Size[10];
+    BYTE     EndHeader[2];
+} IMAGE_ARCHIVE_MEMBER_HEADER, *PIMAGE_ARCHIVE_MEMBER_HEADER;
+
+#define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60
+
+typedef struct _IMPORT_OBJECT_HEADER
+{
+    WORD     Sig1;
+    WORD     Sig2;
+    WORD     Version;
+    WORD     Machine;
+    DWORD    TimeDateStamp;
+    DWORD    SizeOfData;
+    union
+    {
+        WORD Ordinal;
+        WORD Hint;
+    } DUMMYUNIONNAME;
+    WORD     Type : 2;
+    WORD     NameType : 3;
+    WORD     Reserved : 11;
+} IMPORT_OBJECT_HEADER;
+
+#define IMPORT_OBJECT_HDR_SIG2  0xffff
+
+typedef enum IMPORT_OBJECT_TYPE
+{
+    IMPORT_OBJECT_CODE = 0,
+    IMPORT_OBJECT_DATA = 1,
+    IMPORT_OBJECT_CONST = 2
+} IMPORT_OBJECT_TYPE;
+
+typedef enum IMPORT_OBJECT_NAME_TYPE
+{
+    IMPORT_OBJECT_ORDINAL = 0,
+    IMPORT_OBJECT_NAME = 1,
+    IMPORT_OBJECT_NAME_NO_PREFIX = 2,
+    IMPORT_OBJECT_NAME_UNDECORATE = 3
+} IMPORT_OBJECT_NAME_TYPE;
+
+typedef struct _ANON_OBJECT_HEADER
+{
+    WORD     Sig1;
+    WORD     Sig2;
+    WORD     Version;
+    WORD     Machine;
+    DWORD    TimeDateStamp;
+    CLSID    ClassID;
+    DWORD    SizeOfData;
+} ANON_OBJECT_HEADER;
+
+/*
+ * Resource directory stuff
+ */
+typedef struct _IMAGE_RESOURCE_DIRECTORY {
+	DWORD	Characteristics;
+	DWORD	TimeDateStamp;
+	WORD	MajorVersion;
+	WORD	MinorVersion;
+	WORD	NumberOfNamedEntries;
+	WORD	NumberOfIdEntries;
+	/*  IMAGE_RESOURCE_DIRECTORY_ENTRY DirectoryEntries[]; */
+} IMAGE_RESOURCE_DIRECTORY,*PIMAGE_RESOURCE_DIRECTORY;
+
+#define	IMAGE_RESOURCE_NAME_IS_STRING		0x80000000
+#define	IMAGE_RESOURCE_DATA_IS_DIRECTORY	0x80000000
+
+typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY {
+	union {
+		struct {
+#ifdef BITFIELDS_BIGENDIAN
+			unsigned NameIsString:1;
+			unsigned NameOffset:31;
+#else
+			unsigned NameOffset:31;
+			unsigned NameIsString:1;
+#endif
+		} DUMMYSTRUCTNAME1;
+		DWORD   Name;
+                struct {
+#ifdef WORDS_BIGENDIAN
+			WORD    __pad;
+			WORD    Id;
+#else
+			WORD    Id;
+			WORD    __pad;
+#endif
+		} DUMMYSTRUCTNAME2;
+	} DUMMYUNIONNAME1;
+	union {
+		DWORD   OffsetToData;
+		struct {
+#ifdef BITFIELDS_BIGENDIAN
+			unsigned DataIsDirectory:1;
+			unsigned OffsetToDirectory:31;
+#else
+			unsigned OffsetToDirectory:31;
+			unsigned DataIsDirectory:1;
+#endif
+		} DUMMYSTRUCTNAME3;
+	} DUMMYUNIONNAME2;
+} IMAGE_RESOURCE_DIRECTORY_ENTRY,*PIMAGE_RESOURCE_DIRECTORY_ENTRY;
+
+
+typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING {
+	WORD	Length;
+	CHAR	NameString[ 1 ];
+} IMAGE_RESOURCE_DIRECTORY_STRING,*PIMAGE_RESOURCE_DIRECTORY_STRING;
+
+typedef struct _IMAGE_RESOURCE_DIR_STRING_U {
+	WORD	Length;
+	WCHAR	NameString[ 1 ];
+} IMAGE_RESOURCE_DIR_STRING_U,*PIMAGE_RESOURCE_DIR_STRING_U;
+
+typedef struct _IMAGE_RESOURCE_DATA_ENTRY {
+	DWORD	OffsetToData;
+	DWORD	Size;
+	DWORD	CodePage;
+	DWORD	Reserved;
+} IMAGE_RESOURCE_DATA_ENTRY,*PIMAGE_RESOURCE_DATA_ENTRY;
+
+
+typedef VOID (CALLBACK *PIMAGE_TLS_CALLBACK)(
+	LPVOID DllHandle,DWORD Reason,LPVOID Reserved
+);
+
+typedef struct _IMAGE_TLS_DIRECTORY64 {
+    ULONGLONG   StartAddressOfRawData;
+    ULONGLONG   EndAddressOfRawData;
+    ULONGLONG   AddressOfIndex;
+    ULONGLONG   AddressOfCallBacks;
+    DWORD       SizeOfZeroFill;
+    DWORD       Characteristics;
+} IMAGE_TLS_DIRECTORY64, *PIMAGE_TLS_DIRECTORY64;
+
+typedef struct _IMAGE_TLS_DIRECTORY32 {
+    DWORD   StartAddressOfRawData;
+    DWORD   EndAddressOfRawData;
+    DWORD   AddressOfIndex;
+    DWORD   AddressOfCallBacks;
+    DWORD   SizeOfZeroFill;
+    DWORD   Characteristics;
+} IMAGE_TLS_DIRECTORY32, *PIMAGE_TLS_DIRECTORY32;
+
+#ifdef _WIN64
+typedef IMAGE_TLS_DIRECTORY64           IMAGE_TLS_DIRECTORY;
+typedef PIMAGE_TLS_DIRECTORY64          PIMAGE_TLS_DIRECTORY;
+#else
+typedef IMAGE_TLS_DIRECTORY32           IMAGE_TLS_DIRECTORY;
+typedef PIMAGE_TLS_DIRECTORY32          PIMAGE_TLS_DIRECTORY;
+#endif
+
+typedef struct _IMAGE_DEBUG_DIRECTORY {
+  DWORD Characteristics;
+  DWORD TimeDateStamp;
+  WORD  MajorVersion;
+  WORD  MinorVersion;
+  DWORD Type;
+  DWORD SizeOfData;
+  DWORD AddressOfRawData;
+  DWORD PointerToRawData;
+} IMAGE_DEBUG_DIRECTORY, *PIMAGE_DEBUG_DIRECTORY;
+
+#define IMAGE_DEBUG_TYPE_UNKNOWN        0
+#define IMAGE_DEBUG_TYPE_COFF           1
+#define IMAGE_DEBUG_TYPE_CODEVIEW       2
+#define IMAGE_DEBUG_TYPE_FPO            3
+#define IMAGE_DEBUG_TYPE_MISC           4
+#define IMAGE_DEBUG_TYPE_EXCEPTION      5
+#define IMAGE_DEBUG_TYPE_FIXUP          6
+#define IMAGE_DEBUG_TYPE_OMAP_TO_SRC    7
+#define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC  8
+#define IMAGE_DEBUG_TYPE_BORLAND        9
+#define IMAGE_DEBUG_TYPE_RESERVED10    10
+
+typedef enum ReplacesCorHdrNumericDefines
+{
+    COMIMAGE_FLAGS_ILONLY           = 0x00000001,
+    COMIMAGE_FLAGS_32BITREQUIRED    = 0x00000002,
+    COMIMAGE_FLAGS_IL_LIBRARY       = 0x00000004,
+    COMIMAGE_FLAGS_STRONGNAMESIGNED = 0x00000008,
+    COMIMAGE_FLAGS_TRACKDEBUGDATA   = 0x00010000,
+
+    COR_VERSION_MAJOR_V2       = 2,
+    COR_VERSION_MAJOR          = COR_VERSION_MAJOR_V2,
+    COR_VERSION_MINOR          = 0,
+    COR_DELETED_NAME_LENGTH    = 8,
+    COR_VTABLEGAP_NAME_LENGTH  = 8,
+
+    NATIVE_TYPE_MAX_CB = 1,
+    COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE = 0xff,
+
+    IMAGE_COR_MIH_METHODRVA  = 0x01,
+    IMAGE_COR_MIH_EHRVA      = 0x02,
+    IMAGE_COR_MIH_BASICBLOCK = 0x08,
+
+    COR_VTABLE_32BIT             = 0x01,
+    COR_VTABLE_64BIT             = 0x02,
+    COR_VTABLE_FROM_UNMANAGED    = 0x04,
+    COR_VTABLE_CALL_MOST_DERIVED = 0x10,
+
+    IMAGE_COR_EATJ_THUNK_SIZE = 32,
+
+    MAX_CLASS_NAME   = 1024,
+    MAX_PACKAGE_NAME = 1024,
+} ReplacesCorHdrNumericDefines;
+
+typedef struct IMAGE_COR20_HEADER
+{
+    DWORD cb;
+    WORD  MajorRuntimeVersion;
+    WORD  MinorRuntimeVersion;
+
+    IMAGE_DATA_DIRECTORY MetaData;
+    DWORD Flags;
+    DWORD EntryPointToken;
+
+    IMAGE_DATA_DIRECTORY Resources;
+    IMAGE_DATA_DIRECTORY StrongNameSignature;
+    IMAGE_DATA_DIRECTORY CodeManagerTable;
+    IMAGE_DATA_DIRECTORY VTableFixups;
+    IMAGE_DATA_DIRECTORY ExportAddressTableJumps;
+    IMAGE_DATA_DIRECTORY ManagedNativeHeader;
+
+} IMAGE_COR20_HEADER, *PIMAGE_COR20_HEADER;
+
+typedef struct _IMAGE_COFF_SYMBOLS_HEADER {
+  DWORD NumberOfSymbols;
+  DWORD LvaToFirstSymbol;
+  DWORD NumberOfLinenumbers;
+  DWORD LvaToFirstLinenumber;
+  DWORD RvaToFirstByteOfCode;
+  DWORD RvaToLastByteOfCode;
+  DWORD RvaToFirstByteOfData;
+  DWORD RvaToLastByteOfData;
+} IMAGE_COFF_SYMBOLS_HEADER, *PIMAGE_COFF_SYMBOLS_HEADER;
+
+#define FRAME_FPO       0
+#define FRAME_TRAP      1
+#define FRAME_TSS       2
+#define FRAME_NONFPO    3
+
+typedef struct _FPO_DATA {
+  DWORD ulOffStart;
+  DWORD cbProcSize;
+  DWORD cdwLocals;
+  WORD  cdwParams;
+  WORD  cbProlog : 8;
+  WORD  cbRegs   : 3;
+  WORD  fHasSEH  : 1;
+  WORD  fUseBP   : 1;
+  WORD  reserved : 1;
+  WORD  cbFrame  : 2;
+} FPO_DATA, *PFPO_DATA;
+
+typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY {
+  DWORD Size;
+  DWORD TimeDateStamp;
+  WORD  MajorVersion;
+  WORD  MinorVersion;
+  DWORD GlobalFlagsClear;
+  DWORD GlobalFlagsSet;
+  DWORD CriticalSectionDefaultTimeout;
+  DWORD DeCommitFreeBlockThreshold;
+  DWORD DeCommitTotalFreeThreshold;
+  PVOID LockPrefixTable;
+  DWORD MaximumAllocationSize;
+  DWORD VirtualMemoryThreshold;
+  DWORD ProcessHeapFlags;
+  DWORD ProcessAffinityMask;
+  WORD  CSDVersion;
+  WORD  Reserved1;
+  PVOID EditList;
+  DWORD SecurityCookie;
+  DWORD SEHandlerTable;
+  DWORD SEHandlerCount;
+} IMAGE_LOAD_CONFIG_DIRECTORY, *PIMAGE_LOAD_CONFIG_DIRECTORY;
+
+typedef struct _IMAGE_FUNCTION_ENTRY {
+  DWORD StartingAddress;
+  DWORD EndingAddress;
+  DWORD EndOfPrologue;
+} IMAGE_FUNCTION_ENTRY, *PIMAGE_FUNCTION_ENTRY;
+
+#define IMAGE_DEBUG_MISC_EXENAME    1
+
+typedef struct _IMAGE_DEBUG_MISC {
+    DWORD       DataType;
+    DWORD       Length;
+    BYTE        Unicode;
+    BYTE        Reserved[ 3 ];
+    BYTE        Data[ 1 ];
+} IMAGE_DEBUG_MISC, *PIMAGE_DEBUG_MISC;
+
+/* This is the structure that appears at the very start of a .DBG file. */
+
+typedef struct _IMAGE_SEPARATE_DEBUG_HEADER {
+	WORD	Signature;
+	WORD	Flags;
+	WORD	Machine;
+	WORD	Characteristics;
+	DWORD	TimeDateStamp;
+	DWORD	CheckSum;
+	DWORD	ImageBase;
+	DWORD	SizeOfImage;
+	DWORD	NumberOfSections;
+	DWORD	ExportedNamesSize;
+	DWORD	DebugDirectorySize;
+	DWORD	SectionAlignment;
+	DWORD	Reserved[ 2 ];
+} IMAGE_SEPARATE_DEBUG_HEADER,*PIMAGE_SEPARATE_DEBUG_HEADER;
+
+#define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4944
+
+
+typedef struct tagMESSAGE_RESOURCE_ENTRY {
+	WORD	Length;
+	WORD	Flags;
+	BYTE	Text[1];
+} MESSAGE_RESOURCE_ENTRY,*PMESSAGE_RESOURCE_ENTRY;
+#define	MESSAGE_RESOURCE_UNICODE	0x0001
+
+typedef struct tagMESSAGE_RESOURCE_BLOCK {
+	DWORD	LowId;
+	DWORD	HighId;
+	DWORD	OffsetToEntries;
+} MESSAGE_RESOURCE_BLOCK,*PMESSAGE_RESOURCE_BLOCK;
+
+typedef struct tagMESSAGE_RESOURCE_DATA {
+	DWORD			NumberOfBlocks;
+	MESSAGE_RESOURCE_BLOCK	Blocks[ 1 ];
+} MESSAGE_RESOURCE_DATA,*PMESSAGE_RESOURCE_DATA;
+
+/*
+ * Here follows typedefs for security and tokens.
+ */
+
+/*
+ * First a constant for the following typedefs.
+ */
+
+#define ANYSIZE_ARRAY   1
+
+/* FIXME:  Orphan.  What does it point to? */
+typedef PVOID PACCESS_TOKEN;
+typedef PVOID PSECURITY_DESCRIPTOR;
+typedef PVOID PSID;
+
+/*
+ * TOKEN_INFORMATION_CLASS
+ */
+
+typedef enum _TOKEN_INFORMATION_CLASS {
+  TokenUser = 1,
+  TokenGroups,
+  TokenPrivileges,
+  TokenOwner,
+  TokenPrimaryGroup,
+  TokenDefaultDacl,
+  TokenSource,
+  TokenType,
+  TokenImpersonationLevel,
+  TokenStatistics,
+  TokenRestrictedSids,
+  TokenSessionId,
+  TokenGroupsAndPrivileges,
+  TokenSessionReference,
+  TokenSandBoxInert
+} TOKEN_INFORMATION_CLASS;
+
+#define TOKEN_TOKEN_ADJUST_DEFAULT   0x0080
+#define TOKEN_ADJUST_GROUPS          0x0040
+#define TOKEN_ADJUST_PRIVILEGES      0x0020
+#define TOKEN_ADJUST_SESSIONID       0x0100
+#define TOKEN_ASSIGN_PRIMARY         0x0001
+#define TOKEN_DUPLICATE              0x0002
+#define TOKEN_EXECUTE                STANDARD_RIGHTS_EXECUTE
+#define TOKEN_IMPERSONATE            0x0004
+#define TOKEN_QUERY                  0x0008
+#define TOKEN_QUERY_SOURCE           0x0010
+#define TOKEN_ADJUST_DEFAULT         0x0080
+#define TOKEN_READ                   (STANDARD_RIGHTS_READ|TOKEN_QUERY)
+#define TOKEN_WRITE                  (STANDARD_RIGHTS_WRITE     | \
+					TOKEN_ADJUST_PRIVILEGES | \
+					TOKEN_ADJUST_GROUPS | \
+					TOKEN_ADJUST_DEFAULT )
+#define TOKEN_ALL_ACCESS             (STANDARD_RIGHTS_REQUIRED | \
+					TOKEN_ASSIGN_PRIMARY | \
+					TOKEN_DUPLICATE | \
+					TOKEN_IMPERSONATE | \
+					TOKEN_QUERY | \
+					TOKEN_QUERY_SOURCE | \
+					TOKEN_ADJUST_PRIVILEGES | \
+					TOKEN_ADJUST_GROUPS | \
+					TOKEN_ADJUST_SESSIONID | \
+					TOKEN_ADJUST_DEFAULT )
+
+#ifndef _SECURITY_DEFINED
+#define _SECURITY_DEFINED
+
+
+typedef DWORD ACCESS_MASK, *PACCESS_MASK;
+
+typedef struct _GENERIC_MAPPING {
+    ACCESS_MASK GenericRead;
+    ACCESS_MASK GenericWrite;
+    ACCESS_MASK GenericExecute;
+    ACCESS_MASK GenericAll;
+} GENERIC_MAPPING, *PGENERIC_MAPPING;
+
+#ifndef SID_IDENTIFIER_AUTHORITY_DEFINED
+#define SID_IDENTIFIER_AUTHORITY_DEFINED
+typedef struct {
+    BYTE Value[6];
+} SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY;
+#endif /* !defined(SID_IDENTIFIER_AUTHORITY_DEFINED) */
+
+#ifndef SID_DEFINED
+#define SID_DEFINED
+typedef struct _SID {
+    BYTE Revision;
+    BYTE SubAuthorityCount;
+    SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
+    DWORD SubAuthority[1];
+} SID,*PISID;
+#endif /* !defined(SID_DEFINED) */
+
+#define	SID_REVISION			(1)	/* Current revision */
+#define	SID_MAX_SUB_AUTHORITIES		(15)	/* current max subauths */
+#define	SID_RECOMMENDED_SUB_AUTHORITIES	(1)	/* recommended subauths */
+
+#define SECURITY_MAX_SID_SIZE (sizeof(SID) - sizeof(DWORD) + (SID_MAX_SUB_AUTHORITIES * sizeof(DWORD)))
+
+/*
+ * ACL
+ */
+
+#define ACL_REVISION1 1
+#define ACL_REVISION2 2
+#define ACL_REVISION3 3
+#define ACL_REVISION4 4
+
+#define MIN_ACL_REVISION ACL_REVISION2
+#define MAX_ACL_REVISION ACL_REVISION4
+
+#define ACL_REVISION 2
+
+typedef struct _ACL {
+    BYTE AclRevision;
+    BYTE Sbz1;
+    WORD AclSize;
+    WORD AceCount;
+    WORD Sbz2;
+} ACL, *PACL;
+
+typedef enum _ACL_INFORMATION_CLASS
+{
+  AclRevisionInformation = 1, 
+  AclSizeInformation
+} ACL_INFORMATION_CLASS;
+
+typedef struct _ACL_REVISION_INFORMATION
+{
+    DWORD AclRevision;
+} ACL_REVISION_INFORMATION, *PACL_REVISION_INFORMATION;
+
+typedef struct _ACL_SIZE_INFORMATION
+{
+    DWORD AceCount;
+    DWORD AclBytesInUse;
+    DWORD AclBytesFree;
+} ACL_SIZE_INFORMATION, *PACL_SIZE_INFORMATION;
+
+/* SECURITY_DESCRIPTOR */
+#define	SECURITY_DESCRIPTOR_REVISION	1
+#define	SECURITY_DESCRIPTOR_REVISION1	1
+
+
+/*
+ * Privilege Names
+ */
+#define SE_CREATE_TOKEN_NAME		TEXT("SeCreateTokenPrivilege")
+#define SE_ASSIGNPRIMARYTOKEN_NAME	TEXT("SeAssignPrimaryTokenPrivilege")
+#define SE_LOCK_MEMORY_NAME		TEXT("SeLockMemoryPrivilege")
+#define SE_INCREASE_QUOTA_NAME		TEXT("SeIncreaseQuotaPrivilege")
+#define SE_UNSOLICITED_INPUT_NAME	TEXT("SeUnsolicitedInputPrivilege")
+#define SE_MACHINE_ACCOUNT_NAME 	TEXT("SeMachineAccountPrivilege")
+#define SE_TCB_NAME			TEXT("SeTcbPrivilege")
+#define SE_SECURITY_NAME		TEXT("SeSecurityPrivilege")
+#define SE_TAKE_OWNERSHIP_NAME		TEXT("SeTakeOwnershipPrivilege")
+#define SE_LOAD_DRIVER_NAME		TEXT("SeLoadDriverPrivilege")
+#define SE_SYSTEM_PROFILE_NAME		TEXT("SeSystemProfilePrivilege")
+#define SE_SYSTEMTIME_NAME		TEXT("SeSystemtimePrivilege")
+#define SE_PROF_SINGLE_PROCESS_NAME	TEXT("SeProfileSingleProcessPrivilege")
+#define SE_INC_BASE_PRIORITY_NAME	TEXT("SeIncreaseBasePriorityPrivilege")
+#define SE_CREATE_PAGEFILE_NAME 	TEXT("SeCreatePagefilePrivilege")
+#define SE_CREATE_PERMANENT_NAME	TEXT("SeCreatePermanentPrivilege")
+#define SE_BACKUP_NAME 			TEXT("SeBackupPrivilege")
+#define SE_RESTORE_NAME			TEXT("SeRestorePrivilege")
+#define SE_SHUTDOWN_NAME		TEXT("SeShutdownPrivilege")
+#define SE_DEBUG_NAME			TEXT("SeDebugPrivilege")
+#define SE_AUDIT_NAME			TEXT("SeAuditPrivilege")
+#define SE_SYSTEM_ENVIRONMENT_NAME	TEXT("SeSystemEnvironmentPrivilege")
+#define SE_CHANGE_NOTIFY_NAME		TEXT("SeChangeNotifyPrivilege")
+#define SE_REMOTE_SHUTDOWN_NAME		TEXT("SeRemoteShutdownPrivilege")
+#define SE_UNDOCK_NAME                  TEXT("SeUndockPrivilege")
+#define SE_ENABLE_DELEGATION_NAME       TEXT("SeEnableDelegationPrivilege")
+#define SE_MANAGE_VOLUME_NAME           TEXT("SeManageVolumePrivilege")
+#define SE_IMPERSONATE_NAME             TEXT("SeImpersonatePrivilege")
+#define SE_CREATE_GLOBAL_NAME           TEXT("SeCreateGlobalPrivilege")
+
+#define SE_GROUP_MANDATORY 		0x00000001
+#define SE_GROUP_ENABLED_BY_DEFAULT 	0x00000002
+#define SE_GROUP_ENABLED 		0x00000004
+#define SE_GROUP_OWNER 			0x00000008
+#define SE_GROUP_USE_FOR_DENY_ONLY 	0x00000010
+#define SE_GROUP_LOGON_ID 		0xC0000000
+#define SE_GROUP_RESOURCE 		0x20000000
+
+#define SE_PRIVILEGE_ENABLED_BY_DEFAULT 0x00000001
+#define SE_PRIVILEGE_ENABLED 		0x00000002
+#define SE_PRIVILEGE_REMOVE		0x00000004
+#define SE_PRIVILEGE_USED_FOR_ACCESS 	0x80000000
+
+#define PRIVILEGE_SET_ALL_NECESSARY     1
+
+#define SE_OWNER_DEFAULTED		0x00000001
+#define SE_GROUP_DEFAULTED		0x00000002
+#define SE_DACL_PRESENT			0x00000004
+#define SE_DACL_DEFAULTED		0x00000008
+#define SE_SACL_PRESENT			0x00000010
+#define SE_SACL_DEFAULTED		0x00000020
+#define SE_DACL_AUTO_INHERIT_REQ	0x00000100
+#define SE_SACL_AUTO_INHERIT_REQ	0x00000200
+#define SE_DACL_AUTO_INHERITED		0x00000400
+#define SE_SACL_AUTO_INHERITED		0x00000800
+#define SE_DACL_PROTECTED 		0x00001000
+#define SE_SACL_PROTECTED 		0x00002000
+#define SE_RM_CONTROL_VALID		0x00004000
+#define SE_SELF_RELATIVE		0x00008000
+
+typedef DWORD SECURITY_INFORMATION, *PSECURITY_INFORMATION;
+typedef WORD SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
+
+/* The security descriptor structure */
+typedef struct {
+    BYTE Revision;
+    BYTE Sbz1;
+    SECURITY_DESCRIPTOR_CONTROL Control;
+    DWORD Owner;
+    DWORD Group;
+    DWORD Sacl;
+    DWORD Dacl;
+} SECURITY_DESCRIPTOR_RELATIVE, *PISECURITY_DESCRIPTOR_RELATIVE;
+
+typedef struct {
+    BYTE Revision;
+    BYTE Sbz1;
+    SECURITY_DESCRIPTOR_CONTROL Control;
+    PSID Owner;
+    PSID Group;
+    PACL Sacl;
+    PACL Dacl;
+} SECURITY_DESCRIPTOR, *PISECURITY_DESCRIPTOR;
+
+#define SECURITY_DESCRIPTOR_MIN_LENGTH   (sizeof(SECURITY_DESCRIPTOR))
+
+#endif /* _SECURITY_DEFINED */
+
+/*
+ * SID_AND_ATTRIBUTES
+ */
+
+typedef struct _SID_AND_ATTRIBUTES {
+  PSID  Sid;
+  DWORD Attributes;
+} SID_AND_ATTRIBUTES, *PSID_AND_ATTRIBUTES;
+
+/* security entities */
+#define SECURITY_NULL_RID			(0x00000000L)
+#define SECURITY_WORLD_RID			(0x00000000L)
+#define SECURITY_LOCAL_RID			(0X00000000L)
+
+#define SECURITY_NULL_SID_AUTHORITY		{0,0,0,0,0,0}
+
+/* S-1-1 */
+#define SECURITY_WORLD_SID_AUTHORITY		{0,0,0,0,0,1}
+
+/* S-1-2 */
+#define SECURITY_LOCAL_SID_AUTHORITY		{0,0,0,0,0,2}
+
+/* S-1-3 */
+#define SECURITY_CREATOR_SID_AUTHORITY		{0,0,0,0,0,3}
+#define SECURITY_CREATOR_OWNER_RID		(0x00000000L)
+#define SECURITY_CREATOR_GROUP_RID		(0x00000001L)
+#define SECURITY_CREATOR_OWNER_SERVER_RID	(0x00000002L)
+#define SECURITY_CREATOR_GROUP_SERVER_RID	(0x00000003L)
+
+/* S-1-4 */
+#define SECURITY_NON_UNIQUE_AUTHORITY		{0,0,0,0,0,4}
+
+/* S-1-5 */
+#define SECURITY_NT_AUTHORITY			{0,0,0,0,0,5}
+#define SECURITY_DIALUP_RID                     0x00000001L
+#define SECURITY_NETWORK_RID                    0x00000002L
+#define SECURITY_BATCH_RID                      0x00000003L
+#define SECURITY_INTERACTIVE_RID                0x00000004L
+#define SECURITY_LOGON_IDS_RID                  0x00000005L
+#define SECURITY_SERVICE_RID                    0x00000006L
+#define SECURITY_ANONYMOUS_LOGON_RID            0x00000007L
+#define SECURITY_PROXY_RID                      0x00000008L
+#define SECURITY_ENTERPRISE_CONTROLLERS_RID     0x00000009L
+#define SECURITY_SERVER_LOGON_RID               SECURITY_ENTERPRISE_CONTROLLERS_RID
+#define SECURITY_PRINCIPAL_SELF_RID             0x0000000AL
+#define SECURITY_AUTHENTICATED_USER_RID         0x0000000BL
+#define SECURITY_RESTRICTED_CODE_RID            0x0000000CL
+#define SECURITY_TERMINAL_SERVER_RID            0x0000000DL
+#define SECURITY_REMOTE_LOGON_RID               0x0000000EL
+#define SECURITY_THIS_ORGANIZATION_RID          0x0000000FL
+#define SECURITY_LOCAL_SYSTEM_RID               0x00000012L
+#define SECURITY_LOCAL_SERVICE_RID              0x00000013L
+#define SECURITY_NETWORK_SERVICE_RID            0x00000014L
+#define SECURITY_NT_NON_UNIQUE                  0x00000015L
+#define SECURITY_BUILTIN_DOMAIN_RID             0x00000020L
+
+#define SECURITY_PACKAGE_BASE_RID               0x00000040L
+#define SECURITY_PACKAGE_NTLM_RID               0x0000000AL
+#define SECURITY_PACKAGE_SCHANNEL_RID           0x0000000EL
+#define SECURITY_PACKAGE_DIGEST_RID             0x00000015L
+#define SECURITY_MAX_ALWAYS_FILTERED            0x000003E7L
+#define SECURITY_MIN_NEVER_FILTERED             0x000003E8L
+#define SECURITY_OTHER_ORGANIZATION_RID         0x000003E8L
+
+#define FOREST_USER_RID_MAX                     0x000001F3L
+#define DOMAIN_USER_RID_ADMIN                   0x000001F4L
+#define DOMAIN_USER_RID_GUEST                   0x000001F5L
+#define DOMAIN_USER_RID_KRBTGT                  0x000001F6L
+#define DOMAIN_USER_RID_MAX                     0x000003E7L
+
+#define DOMAIN_GROUP_RID_ADMINS                 0x00000200L
+#define DOMAIN_GROUP_RID_USERS                  0x00000201L
+#define DOMAIN_GROUP_RID_GUESTS                 0x00000202L
+#define DOMAIN_GROUP_RID_COMPUTERS              0x00000203L
+#define DOMAIN_GROUP_RID_CONTROLLERS            0x00000204L
+#define DOMAIN_GROUP_RID_CERT_ADMINS            0x00000205L
+#define DOMAIN_GROUP_RID_SCHEMA_ADMINS          0x00000206L
+#define DOMAIN_GROUP_RID_ENTERPRISE_ADMINS      0x00000207L
+#define DOMAIN_GROUP_RID_POLICY_ADMINS          0x00000208L
+
+#define DOMAIN_ALIAS_RID_ADMINS                 0x00000220L
+#define DOMAIN_ALIAS_RID_USERS                  0x00000221L
+#define DOMAIN_ALIAS_RID_GUESTS                 0x00000222L
+#define DOMAIN_ALIAS_RID_POWER_USERS            0x00000223L
+
+#define DOMAIN_ALIAS_RID_ACCOUNT_OPS            0x00000224L
+#define DOMAIN_ALIAS_RID_SYSTEM_OPS             0x00000225L
+#define DOMAIN_ALIAS_RID_PRINT_OPS              0x00000226L
+#define DOMAIN_ALIAS_RID_BACKUP_OPS             0x00000227L
+
+#define DOMAIN_ALIAS_RID_REPLICATOR             0x00000228L
+#define DOMAIN_ALIAS_RID_RAS_SERVERS            0x00000229L
+#define DOMAIN_ALIAS_RID_PREW2KCOMPACCESS       0x0000022AL
+#define DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS   0x0000022BL
+#define DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS 0x0000022CL
+#define DOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS 0x0000022DL
+
+#define DOMAIN_ALIAS_RID_MONITORING_USERS       0x0000022EL
+#define DOMAIN_ALIAS_RID_LOGGING_USERS          0x0000022FL
+#define DOMAIN_ALIAS_RID_AUTHORIZATIONACCESS    0x00000230L
+#define DOMAIN_ALIAS_RID_TS_LICENSE_SERVERS     0x00000231L
+#define DOMAIN_ALIAS_RID_DCOM_USERS             0x00000232L
+
+#define SECURITY_SERVER_LOGON_RID		SECURITY_ENTERPRISE_CONTROLLERS_RID
+
+#define SECURITY_PACKAGE_RID_COUNT              2L
+#define SECURITY_LOGON_IDS_RID_COUNT		3L
+
+typedef enum {
+    WinNullSid                                  = 0,
+    WinWorldSid                                 = 1,
+    WinLocalSid                                 = 2,
+    WinCreatorOwnerSid                          = 3,
+    WinCreatorGroupSid                          = 4,
+    WinCreatorOwnerServerSid                    = 5,
+    WinCreatorGroupServerSid                    = 6,
+    WinNtAuthoritySid                           = 7,
+    WinDialupSid                                = 8,
+    WinNetworkSid                               = 9,
+    WinBatchSid                                 = 10,
+    WinInteractiveSid                           = 11,
+    WinServiceSid                               = 12,
+    WinAnonymousSid                             = 13,
+    WinProxySid                                 = 14,
+    WinEnterpriseControllersSid                 = 15,
+    WinSelfSid                                  = 16,
+    WinAuthenticatedUserSid                     = 17,
+    WinRestrictedCodeSid                        = 18,
+    WinTerminalServerSid                        = 19,
+    WinRemoteLogonIdSid                         = 20,
+    WinLogonIdsSid                              = 21,
+    WinLocalSystemSid                           = 22,
+    WinLocalServiceSid                          = 23,
+    WinNetworkServiceSid                        = 24,
+    WinBuiltinDomainSid                         = 25,
+    WinBuiltinAdministratorsSid                 = 26,
+    WinBuiltinUsersSid                          = 27,
+    WinBuiltinGuestsSid                         = 28,
+    WinBuiltinPowerUsersSid                     = 29,
+    WinBuiltinAccountOperatorsSid               = 30,
+    WinBuiltinSystemOperatorsSid                = 31,
+    WinBuiltinPrintOperatorsSid                 = 32,
+    WinBuiltinBackupOperatorsSid                = 33,
+    WinBuiltinReplicatorSid                     = 34,
+    WinBuiltinPreWindows2000CompatibleAccessSid = 35,
+    WinBuiltinRemoteDesktopUsersSid             = 36,
+    WinBuiltinNetworkConfigurationOperatorsSid  = 37,
+    WinAccountAdministratorSid                  = 38,
+    WinAccountGuestSid                          = 39,
+    WinAccountKrbtgtSid                         = 40,
+    WinAccountDomainAdminsSid                   = 41,
+    WinAccountDomainUsersSid                    = 42,
+    WinAccountDomainGuestsSid                   = 43,
+    WinAccountComputersSid                      = 44,
+    WinAccountControllersSid                    = 45,
+    WinAccountCertAdminsSid                     = 46,
+    WinAccountSchemaAdminsSid                   = 47,
+    WinAccountEnterpriseAdminsSid               = 48,
+    WinAccountPolicyAdminsSid                   = 49,
+    WinAccountRasAndIasServersSid               = 50,
+    WinNTLMAuthenticationSid                    = 51,
+    WinDigestAuthenticationSid                  = 52,
+    WinSChannelAuthenticationSid                = 53,
+    WinThisOrganizationSid                      = 54,
+    WinOtherOrganizationSid                     = 55,
+    WinBuiltinIncomingForestTrustBuildersSid    = 56,
+    WinBuiltinPerfMonitoringUsersSid            = 57,
+    WinBuiltinPerfLoggingUsersSid               = 58,
+    WinBuiltinAuthorizationAccessSid            = 59,
+    WinBuiltinTerminalServerLicenseServersSid   = 60,
+    WinBuiltinDCOMUsersSid                      = 61
+} WELL_KNOWN_SID_TYPE;
+
+/*
+ * TOKEN_USER
+ */
+
+typedef struct _TOKEN_USER {
+    SID_AND_ATTRIBUTES User;
+} TOKEN_USER, *PTOKEN_USER;
+
+/*
+ * TOKEN_GROUPS
+ */
+
+typedef struct _TOKEN_GROUPS {
+    DWORD GroupCount;
+    SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY];
+} TOKEN_GROUPS, *PTOKEN_GROUPS;
+
+/*
+ * LUID_AND_ATTRIBUTES
+ */
+
+typedef union _LARGE_INTEGER {
+    struct {
+#ifdef WORDS_BIGENDIAN
+        LONG     HighPart;
+        DWORD    LowPart;
+#else
+        DWORD    LowPart;
+        LONG     HighPart;
+#endif
+    } u;
+#ifndef NONAMELESSSTRUCT
+    struct {
+#ifdef WORDS_BIGENDIAN
+        LONG     HighPart;
+        DWORD    LowPart;
+#else
+        DWORD    LowPart;
+        LONG     HighPart;
+#endif
+    };
+#endif
+    LONGLONG QuadPart;
+} LARGE_INTEGER, *PLARGE_INTEGER;
+
+typedef union _ULARGE_INTEGER {
+    struct {
+#ifdef WORDS_BIGENDIAN
+        DWORD    HighPart;
+        DWORD    LowPart;
+#else
+        DWORD    LowPart;
+        DWORD    HighPart;
+#endif
+    } u;
+#ifndef NONAMELESSSTRUCT
+    struct {
+#ifdef WORDS_BIGENDIAN
+        DWORD    HighPart;
+        DWORD    LowPart;
+#else
+        DWORD    LowPart;
+        DWORD    HighPart;
+#endif
+    };
+#endif
+    ULONGLONG QuadPart;
+} ULARGE_INTEGER, *PULARGE_INTEGER;
+
+/*
+ * Locally Unique Identifier
+ */
+
+typedef struct _LUID {
+    DWORD LowPart;
+    LONG HighPart;
+} LUID, *PLUID;
+
+#include <pshpack4.h>
+typedef struct _LUID_AND_ATTRIBUTES {
+  LUID   Luid;
+  DWORD  Attributes;
+} LUID_AND_ATTRIBUTES, *PLUID_AND_ATTRIBUTES;
+#include <poppack.h>
+
+/*
+ * PRIVILEGE_SET
+ */
+
+typedef struct _PRIVILEGE_SET {
+    DWORD PrivilegeCount;
+    DWORD Control;
+    LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY];
+} PRIVILEGE_SET, *PPRIVILEGE_SET;
+
+/*
+ * TOKEN_PRIVILEGES
+ */
+
+typedef struct _TOKEN_PRIVILEGES {
+  DWORD PrivilegeCount;
+  LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];
+} TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES;
+
+/*
+ * TOKEN_OWNER
+ */
+
+typedef struct _TOKEN_OWNER {
+  PSID Owner;
+} TOKEN_OWNER, *PTOKEN_OWNER;
+
+/*
+ * TOKEN_PRIMARY_GROUP
+ */
+
+typedef struct _TOKEN_PRIMARY_GROUP {
+  PSID PrimaryGroup;
+} TOKEN_PRIMARY_GROUP, *PTOKEN_PRIMARY_GROUP;
+
+
+/*
+ * TOKEN_DEFAULT_DACL
+ */
+
+typedef struct _TOKEN_DEFAULT_DACL {
+  PACL DefaultDacl;
+} TOKEN_DEFAULT_DACL, *PTOKEN_DEFAULT_DACL;
+
+/*
+ * TOKEN_SOURCEL
+ */
+
+#define TOKEN_SOURCE_LENGTH 8
+
+typedef struct _TOKEN_SOURCE {
+  char SourceName[TOKEN_SOURCE_LENGTH];
+  LUID SourceIdentifier;
+} TOKEN_SOURCE, *PTOKEN_SOURCE;
+
+/*
+ * TOKEN_TYPE
+ */
+
+typedef enum tagTOKEN_TYPE {
+  TokenPrimary = 1,
+  TokenImpersonation
+} TOKEN_TYPE;
+
+/*
+ * SECURITY_IMPERSONATION_LEVEL
+ */
+
+typedef enum _SECURITY_IMPERSONATION_LEVEL {
+  SecurityAnonymous,
+  SecurityIdentification,
+  SecurityImpersonation,
+  SecurityDelegation
+} SECURITY_IMPERSONATION_LEVEL, *PSECURITY_IMPERSONATION_LEVEL;
+
+#define SECURITY_DYNAMIC_TRACKING   (TRUE)
+#define SECURITY_STATIC_TRACKING    (FALSE)
+
+typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE,
+	* PSECURITY_CONTEXT_TRACKING_MODE;
+/*
+ *	Quality of Service
+ */
+
+typedef struct _SECURITY_QUALITY_OF_SERVICE {
+  DWORD				Length;
+  SECURITY_IMPERSONATION_LEVEL	ImpersonationLevel;
+  SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
+  BOOLEAN			EffectiveOnly;
+} SECURITY_QUALITY_OF_SERVICE, *PSECURITY_QUALITY_OF_SERVICE;
+
+/*
+ * TOKEN_STATISTICS
+ */
+
+#include <pshpack4.h>
+typedef struct _TOKEN_STATISTICS {
+  LUID  TokenId;
+  LUID  AuthenticationId;
+  LARGE_INTEGER ExpirationTime;
+  TOKEN_TYPE    TokenType;
+  SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
+  DWORD DynamicCharged;
+  DWORD DynamicAvailable;
+  DWORD GroupCount;
+  DWORD PrivilegeCount;
+  LUID  ModifiedId;
+} TOKEN_STATISTICS;
+#include <poppack.h>
+
+/*
+ *	ACLs of NT
+ */
+
+/* ACEs, directly starting after an ACL */
+typedef struct _ACE_HEADER {
+	BYTE	AceType;
+	BYTE	AceFlags;
+	WORD	AceSize;
+} ACE_HEADER,*PACE_HEADER;
+
+/* AceType */
+#define	ACCESS_ALLOWED_ACE_TYPE		0
+#define	ACCESS_DENIED_ACE_TYPE		1
+#define	SYSTEM_AUDIT_ACE_TYPE		2
+#define	SYSTEM_ALARM_ACE_TYPE		3
+
+/* inherit AceFlags */
+#define	OBJECT_INHERIT_ACE		0x01
+#define	CONTAINER_INHERIT_ACE		0x02
+#define	NO_PROPAGATE_INHERIT_ACE	0x04
+#define	INHERIT_ONLY_ACE		0x08
+#define	INHERITED_ACE		        0x10
+#define	VALID_INHERIT_FLAGS		0x1F
+
+/* AceFlags mask for what events we (should) audit */
+#define	SUCCESSFUL_ACCESS_ACE_FLAG	0x40
+#define	FAILED_ACCESS_ACE_FLAG		0x80
+
+/* different ACEs depending on AceType
+ * SidStart marks the begin of a SID
+ * so the thing finally looks like this:
+ * 0: ACE_HEADER
+ * 4: ACCESS_MASK
+ * 8... : SID
+ */
+typedef struct _ACCESS_ALLOWED_ACE {
+	ACE_HEADER	Header;
+	DWORD		Mask;
+	DWORD		SidStart;
+} ACCESS_ALLOWED_ACE,*PACCESS_ALLOWED_ACE;
+
+typedef struct _ACCESS_DENIED_ACE {
+	ACE_HEADER	Header;
+	DWORD		Mask;
+	DWORD		SidStart;
+} ACCESS_DENIED_ACE,*PACCESS_DENIED_ACE;
+
+typedef struct _SYSTEM_AUDIT_ACE {
+	ACE_HEADER	Header;
+	DWORD		Mask;
+	DWORD		SidStart;
+} SYSTEM_AUDIT_ACE,*PSYSTEM_AUDIT_ACE;
+
+typedef struct _SYSTEM_ALARM_ACE {
+	ACE_HEADER	Header;
+	DWORD		Mask;
+	DWORD		SidStart;
+} SYSTEM_ALARM_ACE,*PSYSTEM_ALARM_ACE;
+
+typedef enum tagSID_NAME_USE {
+	SidTypeUser = 1,
+	SidTypeGroup,
+	SidTypeDomain,
+	SidTypeAlias,
+	SidTypeWellKnownGroup,
+	SidTypeDeletedAccount,
+	SidTypeInvalid,
+	SidTypeUnknown
+} SID_NAME_USE,*PSID_NAME_USE;
+
+#define ACE_OBJECT_TYPE_PRESENT 0x1
+#define ACE_INHERITED_OBJECT_TYPE_PRESENT   0x2
+
+/* Access rights */
+
+/* DELETE may be already defined via /usr/include/arpa/nameser_compat.h */
+#undef  DELETE
+#define DELETE                     0x00010000
+#define READ_CONTROL               0x00020000
+#define WRITE_DAC                  0x00040000
+#define WRITE_OWNER                0x00080000
+#define SYNCHRONIZE                0x00100000
+#define STANDARD_RIGHTS_REQUIRED   0x000f0000
+
+#define STANDARD_RIGHTS_READ       READ_CONTROL
+#define STANDARD_RIGHTS_WRITE      READ_CONTROL
+#define STANDARD_RIGHTS_EXECUTE    READ_CONTROL
+
+#define STANDARD_RIGHTS_ALL        0x001f0000
+
+#define SPECIFIC_RIGHTS_ALL        0x0000ffff
+
+#define GENERIC_READ               0x80000000
+#define GENERIC_WRITE              0x40000000
+#define GENERIC_EXECUTE            0x20000000
+#define GENERIC_ALL                0x10000000
+
+#define MAXIMUM_ALLOWED            0x02000000
+#define ACCESS_SYSTEM_SECURITY     0x01000000
+
+#define EVENT_QUERY_STATE          0x0001
+#define EVENT_MODIFY_STATE         0x0002
+#define EVENT_ALL_ACCESS           (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
+
+#define SEMAPHORE_MODIFY_STATE     0x0002
+#define SEMAPHORE_ALL_ACCESS       (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
+
+#define MUTEX_MODIFY_STATE         0x0001
+#define MUTEX_ALL_ACCESS           (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x1)
+
+#define JOB_OBJECT_ASSIGN_PROCESS           0x0001
+#define JOB_OBJECT_SET_ATTRIBUTES           0x0002
+#define JOB_OBJECT_QUERY                    0x0004
+#define JOB_OBJECT_TERMINATE                0x0008
+#define JOB_OBJECT_SET_SECURITY_ATTRIBUTES  0x0010
+#define JOB_OBJECT_ALL_ACCESS               (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x1f)
+
+#define TIMER_QUERY_STATE          0x0001
+#define TIMER_MODIFY_STATE         0x0002
+#define TIMER_ALL_ACCESS           (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
+
+#define PROCESS_TERMINATE          0x0001
+#define PROCESS_CREATE_THREAD      0x0002
+#define PROCESS_VM_OPERATION       0x0008
+#define PROCESS_VM_READ            0x0010
+#define PROCESS_VM_WRITE           0x0020
+#define PROCESS_DUP_HANDLE         0x0040
+#define PROCESS_CREATE_PROCESS     0x0080
+#define PROCESS_SET_QUOTA          0x0100
+#define PROCESS_SET_INFORMATION    0x0200
+#define PROCESS_QUERY_INFORMATION  0x0400
+#define PROCESS_SUSPEND_RESUME     0x0800
+#define PROCESS_QUERY_LIMITED_INFORMATION 0x1000
+#define PROCESS_ALL_ACCESS         (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0xfff)
+
+#define THREAD_TERMINATE           0x0001
+#define THREAD_SUSPEND_RESUME      0x0002
+#define THREAD_GET_CONTEXT         0x0008
+#define THREAD_SET_CONTEXT         0x0010
+#define THREAD_SET_INFORMATION     0x0020
+#define THREAD_QUERY_INFORMATION   0x0040
+#define THREAD_SET_THREAD_TOKEN    0x0080
+#define THREAD_IMPERSONATE         0x0100
+#define THREAD_DIRECT_IMPERSONATION 0x0200
+#define THREAD_ALL_ACCESS          (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3ff)
+
+#define THREAD_BASE_PRIORITY_LOWRT  15
+#define THREAD_BASE_PRIORITY_MAX    2
+#define THREAD_BASE_PRIORITY_MIN   -2
+#define THREAD_BASE_PRIORITY_IDLE  -15
+
+typedef struct _QUOTA_LIMITS {
+    SIZE_T PagedPoolLimit;
+    SIZE_T NonPagedPoolLimit;
+    SIZE_T MinimumWorkingSetSize;
+    SIZE_T MaximumWorkingSetSize;
+    SIZE_T PagefileLimit;
+    LARGE_INTEGER TimeLimit;
+} QUOTA_LIMITS, *PQUOTA_LIMITS;
+
+#define QUOTA_LIMITS_HARDWS_MIN_ENABLE  0x00000001
+#define QUOTA_LIMITS_HARDWS_MIN_DISABLE 0x00000002
+#define QUOTA_LIMITS_HARDWS_MAX_ENABLE  0x00000004
+#define QUOTA_LIMITS_HARDWS_MAX_DISABLE 0x00000008
+
+typedef struct _QUOTA_LIMITS_EX {
+    SIZE_T PagedPoolLimit;
+    SIZE_T NonPagedPoolLimit;
+    SIZE_T MinimumWorkingSetSize;
+    SIZE_T MaximumWorkingSetSize;
+    SIZE_T PagefileLimit;
+    LARGE_INTEGER TimeLimit;
+    SIZE_T Reserved1;
+    SIZE_T Reserved2;
+    SIZE_T Reserved3;
+    SIZE_T Reserved4;
+    DWORD Flags;
+    DWORD Reserved5;
+} QUOTA_LIMITS_EX, *PQUOTA_LIMITS_EX;
+
+#define SECTION_QUERY              0x0001
+#define SECTION_MAP_WRITE          0x0002
+#define SECTION_MAP_READ           0x0004
+#define SECTION_MAP_EXECUTE        0x0008
+#define SECTION_EXTEND_SIZE        0x0010
+#define SECTION_MAP_EXECUTE_EXPLICIT 0x0020
+#define SECTION_ALL_ACCESS         (STANDARD_RIGHTS_REQUIRED|0x01f)
+
+#define FILE_READ_DATA            0x0001    /* file & pipe */
+#define FILE_LIST_DIRECTORY       0x0001    /* directory */
+#define FILE_WRITE_DATA           0x0002    /* file & pipe */
+#define FILE_ADD_FILE             0x0002    /* directory */
+#define FILE_APPEND_DATA          0x0004    /* file */
+#define FILE_ADD_SUBDIRECTORY     0x0004    /* directory */
+#define FILE_CREATE_PIPE_INSTANCE 0x0004    /* named pipe */
+#define FILE_READ_EA              0x0008    /* file & directory */
+#define FILE_READ_PROPERTIES      FILE_READ_EA
+#define FILE_WRITE_EA             0x0010    /* file & directory */
+#define FILE_WRITE_PROPERTIES     FILE_WRITE_EA
+#define FILE_EXECUTE              0x0020    /* file */
+#define FILE_TRAVERSE             0x0020    /* directory */
+#define FILE_DELETE_CHILD         0x0040    /* directory */
+#define FILE_READ_ATTRIBUTES      0x0080    /* all */
+#define FILE_WRITE_ATTRIBUTES     0x0100    /* all */
+#define FILE_ALL_ACCESS           (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x1ff)
+
+#define FILE_GENERIC_READ         (STANDARD_RIGHTS_READ | FILE_READ_DATA | \
+                                   FILE_READ_ATTRIBUTES | FILE_READ_EA | \
+                                   SYNCHRONIZE)
+#define FILE_GENERIC_WRITE        (STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | \
+                                   FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | \
+                                   FILE_APPEND_DATA | SYNCHRONIZE)
+#define FILE_GENERIC_EXECUTE      (STANDARD_RIGHTS_EXECUTE | FILE_EXECUTE | \
+                                   FILE_READ_ATTRIBUTES | SYNCHRONIZE)
+
+#define DUPLICATE_CLOSE_SOURCE     0x00000001
+#define DUPLICATE_SAME_ACCESS      0x00000002
+
+/* File attribute flags */
+#define FILE_SHARE_READ			0x00000001L
+#define FILE_SHARE_WRITE		0x00000002L
+#define FILE_SHARE_DELETE		0x00000004L
+
+#define FILE_ATTRIBUTE_READONLY            0x00000001
+#define FILE_ATTRIBUTE_HIDDEN              0x00000002
+#define FILE_ATTRIBUTE_SYSTEM              0x00000004
+#define FILE_ATTRIBUTE_DIRECTORY           0x00000010
+#define FILE_ATTRIBUTE_ARCHIVE             0x00000020
+#define FILE_ATTRIBUTE_DEVICE              0x00000040
+#define FILE_ATTRIBUTE_NORMAL              0x00000080
+#define FILE_ATTRIBUTE_TEMPORARY           0x00000100
+#define FILE_ATTRIBUTE_SPARSE_FILE         0x00000200
+#define FILE_ATTRIBUTE_REPARSE_POINT       0x00000400
+#define FILE_ATTRIBUTE_COMPRESSED          0x00000800
+#define FILE_ATTRIBUTE_OFFLINE             0x00001000
+#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000
+#define FILE_ATTRIBUTE_ENCRYPTED           0x00004000
+
+/* File notification flags */
+#define FILE_NOTIFY_CHANGE_FILE_NAME    0x00000001
+#define FILE_NOTIFY_CHANGE_DIR_NAME     0x00000002
+#define FILE_NOTIFY_CHANGE_ATTRIBUTES   0x00000004
+#define FILE_NOTIFY_CHANGE_SIZE         0x00000008
+#define FILE_NOTIFY_CHANGE_LAST_WRITE   0x00000010
+#define FILE_NOTIFY_CHANGE_LAST_ACCESS  0x00000020
+#define FILE_NOTIFY_CHANGE_CREATION     0x00000040
+#define FILE_NOTIFY_CHANGE_EA           0x00000080
+#define FILE_NOTIFY_CHANGE_SECURITY     0x00000100
+#define FILE_NOTIFY_CHANGE_STREAM_NAME  0x00000200
+#define FILE_NOTIFY_CHANGE_STREAM_SIZE  0x00000400
+#define FILE_NOTIFY_CHANGE_STREAM_WRITE 0x00000800
+
+#define FILE_ACTION_ADDED               0x00000001
+#define FILE_ACTION_REMOVED             0x00000002
+#define FILE_ACTION_MODIFIED            0x00000003
+#define FILE_ACTION_RENAMED_OLD_NAME    0x00000004
+#define FILE_ACTION_RENAMED_NEW_NAME    0x00000005
+#define FILE_ACTION_ADDED_STREAM        0x00000006
+#define FILE_ACTION_REMOVED_STREAM      0x00000007
+#define FILE_ACTION_MODIFIED_STREAM     0x00000008
+
+#define FILE_CASE_SENSITIVE_SEARCH      0x00000001
+#define FILE_CASE_PRESERVED_NAMES       0x00000002
+#define FILE_UNICODE_ON_DISK            0x00000004
+#define FILE_PERSISTENT_ACLS            0x00000008
+#define FILE_FILE_COMPRESSION           0x00000010
+#define FILE_VOLUME_IS_COMPRESSED       0x00008000
+#define FILE_SUPPORTS_OBJECT_IDS        0x00010000
+#define FILE_SUPPORTS_ENCRYPTION        0x00020000
+#define FILE_NAMED_STREAMS              0x00040000
+#define FILE_READ_ONLY_VOLUME           0x00080000
+
+/* File alignments (NT) */
+#define	FILE_BYTE_ALIGNMENT		0x00000000
+#define	FILE_WORD_ALIGNMENT		0x00000001
+#define	FILE_LONG_ALIGNMENT		0x00000003
+#define	FILE_QUAD_ALIGNMENT		0x00000007
+#define	FILE_OCTA_ALIGNMENT		0x0000000f
+#define	FILE_32_BYTE_ALIGNMENT		0x0000001f
+#define	FILE_64_BYTE_ALIGNMENT		0x0000003f
+#define	FILE_128_BYTE_ALIGNMENT		0x0000007f
+#define	FILE_256_BYTE_ALIGNMENT		0x000000ff
+#define	FILE_512_BYTE_ALIGNMENT		0x000001ff
+
+#define MAILSLOT_NO_MESSAGE             ((DWORD)-1)
+#define MAILSLOT_WAIT_FOREVER           ((DWORD)-1)
+
+#define REG_NONE		0	/* no type */
+#define REG_SZ			1	/* string type (ASCII) */
+#define REG_EXPAND_SZ		2	/* string, includes %ENVVAR% (expanded by caller) (ASCII) */
+#define REG_BINARY		3	/* binary format, callerspecific */
+/* YES, REG_DWORD == REG_DWORD_LITTLE_ENDIAN */
+#define REG_DWORD		4	/* DWORD in little endian format */
+#define REG_DWORD_LITTLE_ENDIAN	4	/* DWORD in little endian format */
+#define REG_DWORD_BIG_ENDIAN	5	/* DWORD in big endian format  */
+#define REG_LINK		6	/* symbolic link (UNICODE) */
+#define REG_MULTI_SZ		7	/* multiple strings, delimited by \0, terminated by \0\0 (ASCII) */
+#define REG_RESOURCE_LIST	8	/* resource list? huh? */
+#define REG_FULL_RESOURCE_DESCRIPTOR	9	/* full resource descriptor? huh? */
+#define REG_RESOURCE_REQUIREMENTS_LIST	10
+#define REG_QWORD		11	/* QWORD in little endian format */
+#define REG_QWORD_LITTLE_ENDIAN	11	/* QWORD in little endian format */
+
+/* ----------------------------- begin power management --------------------- */
+
+typedef enum _LATENCY_TIME {
+	LT_DONT_CARE,
+	LT_LOWEST_LATENCY
+} LATENCY_TIME, *PLATENCY_TIME;
+
+#define DISCHARGE_POLICY_CRITICAL 	0
+#define DISCHARGE_POLICY_LOW		1
+#define NUM_DISCHARGE_POLICIES		4
+
+#define PO_THROTTLE_NONE		0
+#define PO_THROTTLE_CONSTANT		1
+#define PO_THROTTLE_DEGRADE		2
+#define PO_THROTTLE_ADAPTIVE		3
+
+typedef enum _POWER_ACTION {
+	PowerActionNone = 0,
+	PowerActionReserved,
+	PowerActionSleep,
+	PowerActionHibernate,
+	PowerActionShutdown,
+	PowerActionShutdownReset,
+	PowerActionShutdownOff,
+	PowerActionWarmEject
+} POWER_ACTION,
+*PPOWER_ACTION;
+
+typedef enum _SYSTEM_POWER_STATE {
+	PowerSystemUnspecified = 0,
+	PowerSystemWorking = 1,
+	PowerSystemSleeping1 = 2,
+	PowerSystemSleeping2 = 3,
+	PowerSystemSleeping3 = 4,
+	PowerSystemHibernate = 5,
+	PowerSystemShutdown = 6,
+	PowerSystemMaximum = 7
+} SYSTEM_POWER_STATE,
+*PSYSTEM_POWER_STATE;
+
+typedef enum _DEVICE_POWER_STATE {
+    PowerDeviceUnspecified,
+    PowerDeviceD0,
+    PowerDeviceD1,
+    PowerDeviceD2,
+    PowerDeviceD3,
+    PowerDeviceMaximum
+} DEVICE_POWER_STATE, *PDEVICE_POWER_STATE;
+
+typedef enum _POWER_INFORMATION_LEVEL {
+        SystemPowerPolicyAc,
+        SystemPowerPolicyDc,
+        VerifySystemPolicyAc,
+        VerifySystemPolicyDc,
+        SystemPowerCapabilities,
+        SystemBatteryState,
+        SystemPowerStateHandler,
+        ProcessorStateHandler,
+        SystemPowerPolicyCurrent,
+        AdministratorPowerPolicy,
+        SystemReserveHiberFile,
+        ProcessorInformation,
+        SystemPowerInformation,
+        ProcessorStateHandler2,
+        LastWakeTime,
+        LastSleepTime,
+        SystemExecutionState,
+        SystemPowerStateNotifyHandler,
+        ProcessorPowerPolicyAc,
+        ProcessorPowerPolicyDc,
+        VerifyProcessorPowerPolicyAc,
+        VerifyProcessorPowerPolicyDc,
+        ProcessorPowerPolicyCurrent
+} POWER_INFORMATION_LEVEL;
+
+typedef struct _ADMINISTRATOR_POWER_POLICY {
+	SYSTEM_POWER_STATE MinSleep;
+	SYSTEM_POWER_STATE MaxSleep;
+	ULONG MinVideoTimeout;
+	ULONG MaxVideoTimeout;
+	ULONG MinSpindownTimeout;
+	ULONG MaxSpindownTimeout;
+} ADMINISTRATOR_POWER_POLICY, *PADMINISTRATOR_POWER_POLICY;
+
+typedef struct {
+	ULONG Granularity;
+	ULONG Capacity;
+} BATTERY_REPORTING_SCALE,
+*PBATTERY_REPORTING_SCALE;
+
+typedef struct {
+	POWER_ACTION Action;
+	ULONG Flags;
+	ULONG EventCode;
+} POWER_ACTION_POLICY,
+*PPOWER_ACTION_POLICY;
+
+typedef struct _PROCESSOR_POWER_INFORMATION {
+	ULONG Number;
+	ULONG MaxMhz;
+	ULONG CurrentMhz;
+	ULONG MhzLimit;
+	ULONG MaxIdleState;
+	ULONG CurrentIdleState;
+} PROCESSOR_POWER_INFORMATION,
+*PPROCESSOR_POWER_INFORMATION;
+
+typedef struct _PROCESSOR_POWER_POLICY_INFO {
+	ULONG TimeCheck;
+	ULONG DemoteLimit;
+	ULONG PromoteLimit;
+	UCHAR DemotePercent;
+	UCHAR PromotePercent;
+	UCHAR Spare[2];
+	ULONG AllowDemotion:1;
+	ULONG AllowPromotion:1;
+	ULONG Reserved:30;
+} PROCESSOR_POWER_POLICY_INFO,
+*PPROCESSOR_POWER_POLICY_INFO;
+
+typedef struct _PROCESSOR_POWER_POLICY {
+	DWORD Revision;
+	BYTE DynamicThrottle;
+	BYTE Spare[3];
+	DWORD DisableCStates:1;
+	DWORD Reserved:31;
+	DWORD PolicyCount;
+	PROCESSOR_POWER_POLICY_INFO Policy[3];
+} PROCESSOR_POWER_POLICY,
+*PPROCESSOR_POWER_POLICY;
+
+typedef struct {
+	BOOLEAN AcOnLine;
+	BOOLEAN BatteryPresent;
+	BOOLEAN Charging;
+	BOOLEAN Discharging;
+	BOOLEAN Spare1[4];
+	ULONG MaxCapacity;
+	ULONG RemainingCapacity;
+	ULONG Rate;
+	ULONG EstimatedTime;
+	ULONG DefaultAlert1;
+	ULONG DefaultAlert2;
+} SYSTEM_BATTERY_STATE,
+*PSYSTEM_BATTERY_STATE;
+
+typedef struct {
+	BOOLEAN PowerButtonPresent;
+	BOOLEAN SleepButtonPresent;
+	BOOLEAN LidPresent;
+	BOOLEAN SystemS1;
+	BOOLEAN SystemS2;
+	BOOLEAN SystemS3;
+	BOOLEAN SystemS4;
+	BOOLEAN SystemS5;
+	BOOLEAN HiberFilePresent;
+	BOOLEAN FullWake;
+	BOOLEAN VideoDimPresent;
+	BOOLEAN ApmPresent;
+	BOOLEAN UpsPresent;
+	BOOLEAN ThermalControl;
+	BOOLEAN ProcessorThrottle;
+	UCHAR ProcessorMinThrottle;
+	UCHAR ProcessorMaxThrottle;
+	UCHAR spare2[4];
+	BOOLEAN DiskSpinDown;
+	UCHAR spare3[8];
+	BOOLEAN SystemBatteriesPresent;
+	BOOLEAN BatteriesAreShortTerm;
+	BATTERY_REPORTING_SCALE BatteryScale[3];
+	SYSTEM_POWER_STATE AcOnLineWake;
+	SYSTEM_POWER_STATE SoftLidWake;
+	SYSTEM_POWER_STATE RtcWake;
+	SYSTEM_POWER_STATE MinDeviceWakeState;
+	SYSTEM_POWER_STATE DefaultLowLatencyWake;
+} SYSTEM_POWER_CAPABILITIES,
+*PSYSTEM_POWER_CAPABILITIES;
+
+typedef struct _SYSTEM_POWER_INFORMATION {
+	ULONG MaxIdlenessAllowed;
+	ULONG Idleness;
+	ULONG TimeRemaining;
+	UCHAR CoolingMode;
+} SYSTEM_POWER_INFORMATION,
+*PSYSTEM_POWER_INFORMATION;
+
+typedef struct _SYSTEM_POWER_LEVEL {
+	BOOLEAN Enable;
+	UCHAR Spare[3];
+	ULONG BatteryLevel;
+	POWER_ACTION_POLICY PowerPolicy;
+	SYSTEM_POWER_STATE MinSystemState;
+} SYSTEM_POWER_LEVEL,
+*PSYSTEM_POWER_LEVEL;
+
+typedef struct _SYSTEM_POWER_POLICY {
+	ULONG Revision;
+	POWER_ACTION_POLICY PowerButton;
+	POWER_ACTION_POLICY SleepButton;
+	POWER_ACTION_POLICY LidClose;
+	SYSTEM_POWER_STATE LidOpenWake;
+	ULONG Reserved;
+	POWER_ACTION_POLICY Idle;
+	ULONG IdleTimeout;
+	UCHAR IdleSensitivity;
+	UCHAR DynamicThrottle;
+	UCHAR Spare2[2];
+	SYSTEM_POWER_STATE MinSleep;
+	SYSTEM_POWER_STATE MaxSleep;
+	SYSTEM_POWER_STATE ReducedLatencySleep;
+	ULONG WinLogonFlags;
+	ULONG Spare3;
+	ULONG DozeS4Timeout;
+	ULONG BroadcastCapacityResolution;
+	SYSTEM_POWER_LEVEL DischargePolicy[NUM_DISCHARGE_POLICIES];
+	ULONG VideoTimeout;
+	BOOLEAN VideoDimDisplay;
+	ULONG VideoReserved[3];
+	ULONG SpindownTimeout;
+	BOOLEAN OptimizeForPower;
+	UCHAR FanThrottleTolerance;
+	UCHAR ForcedThrottle;
+	UCHAR MinThrottle;
+	POWER_ACTION_POLICY OverThrottled;
+} SYSTEM_POWER_POLICY,
+*PSYSTEM_POWER_POLICY;
+
+typedef union _FILE_SEGMENT_ELEMENT {
+	PVOID64 Buffer;
+	ULONGLONG Alignment;
+} FILE_SEGMENT_ELEMENT, *PFILE_SEGMENT_ELEMENT;
+
+typedef struct _FILE_NOTIFY_INFORMATION {
+	DWORD NextEntryOffset;
+	DWORD Action;
+	DWORD FileNameLength;
+	WCHAR FileName[1];
+} FILE_NOTIFY_INFORMATION, *PFILE_NOTIFY_INFORMATION;
+
+/* ----------------------------- begin tape storage --------------------- */
+
+#define TAPE_FIXED_PARTITIONS     0
+#define TAPE_SELECT_PARTITIONS    1
+#define TAPE_INITIATOR_PARTITIONS 2
+#define TAPE_ERASE_SHORT 0
+#define TAPE_ERASE_LONG  1
+#define TAPE_LOAD    0
+#define TAPE_UNLOAD  1
+#define TAPE_TENSION 2
+#define TAPE_LOCK    3
+#define TAPE_UNLOCK  4
+#define TAPE_FORMAT  5
+#define TAPE_SETMARKS  0
+#define TAPE_FILEMARKS 1
+#define TAPE_SHORT_FILEMARKS 2
+#define TAPE_LONG_FILEMARKS  3
+#define TAPE_REWIND                0
+#define TAPE_ABSOLUTE_BLOCK        1
+#define TAPE_LOGICAL_BLOCK         2
+#define TAPE_PSEUDO_LOGICAL_BLOCK  3
+#define TAPE_SPACE_END_OF_DATA     4
+#define TAPE_SPACE_RELATIVE_BLOCKS 5
+#define TAPE_SPACE_FILEMARKS       6
+#define TAPE_SPACE_SEQUENTIAL_FMKS 7
+#define TAPE_SPACE_SETMARKS        8
+#define TAPE_SPACE_SEQUENTIAL_SMKS 9
+
+typedef struct _TAPE_CREATE_PARTITION {
+    DWORD Method;
+    DWORD Count;
+    DWORD Size;
+} TAPE_CREATE_PARTITION, *PTAPE_CREATE_PARTITION;
+
+typedef struct _TAPE_ERASE {
+    DWORD Type;
+    BOOLEAN Immediate;
+} TAPE_ERASE, *PTAPE_ERASE;
+
+typedef struct _TAPE_PREPARE {
+    DWORD Operation;
+    BOOLEAN Immediate;
+} TAPE_PREPARE, *PTAPE_PREPARE;
+
+typedef struct _TAPE_SET_DRIVE_PARAMETERS {
+    BOOLEAN ECC;
+    BOOLEAN Compression;
+    BOOLEAN DataPadding;
+    BOOLEAN ReportSetmarks;
+    ULONG EOTWarningZoneSize;
+} TAPE_SET_DRIVE_PARAMETERS, *PTAPE_SET_DRIVE_PARAMETERS;
+
+typedef struct _TAPE_SET_MEDIA_PARAMETERS {
+    ULONG BlockSize;
+} TAPE_SET_MEDIA_PARAMETERS, *PTAPE_SET_MEDIA_PARAMETERS;
+
+typedef struct _TAPE_WRITE_MARKS {
+    DWORD Type;
+    DWORD Count;
+    BOOLEAN Immediate;
+} TAPE_WRITE_MARKS, *PTAPE_WRITE_MARKS;
+
+typedef struct _TAPE_GET_POSITION {
+    ULONG Type;
+    ULONG Partition;
+    ULONG OffsetLow;
+    ULONG OffsetHigh;
+} TAPE_GET_POSITION, *PTAPE_GET_POSITION;
+
+typedef struct _TAPE_SET_POSITION {
+    ULONG Method;
+    ULONG Partition;
+    LARGE_INTEGER Offset;
+    BOOLEAN Immediate;
+} TAPE_SET_POSITION, *PTAPE_SET_POSITION;
+
+typedef struct _TAPE_GET_DRIVE_PARAMETERS {
+    BOOLEAN ECC;
+    BOOLEAN Compression;
+    BOOLEAN DataPadding;
+    BOOLEAN ReportSetmarks;
+    DWORD DefaultBlockSize;
+    DWORD MaximumBlockSize;
+    DWORD MinimumBlockSize;
+    DWORD MaximumPartitionCount;
+    DWORD FeaturesLow;
+    DWORD FeaturesHigh;
+    DWORD EOTWarningZoneSize;
+} TAPE_GET_DRIVE_PARAMETERS, *PTAPE_GET_DRIVE_PARAMETERS;
+
+typedef struct _TAPE_GET_MEDIA_PARAMETERS {
+    LARGE_INTEGER Capacity;
+    LARGE_INTEGER Remaining;
+    DWORD BlockSize;
+    DWORD PartitionCount;
+    BOOLEAN WriteProtected;
+} TAPE_GET_MEDIA_PARAMETERS, *PTAPE_GET_MEDIA_PARAMETERS;
+
+/* ----------------------------- begin registry ----------------------------- */
+
+/* Registry security values */
+#define OWNER_SECURITY_INFORMATION	0x00000001
+#define GROUP_SECURITY_INFORMATION	0x00000002
+#define DACL_SECURITY_INFORMATION	0x00000004
+#define SACL_SECURITY_INFORMATION	0x00000008
+
+#define REG_OPTION_RESERVED		0x00000000
+#define REG_OPTION_NON_VOLATILE		0x00000000
+#define REG_OPTION_VOLATILE		0x00000001
+#define REG_OPTION_CREATE_LINK		0x00000002
+#define REG_OPTION_BACKUP_RESTORE	0x00000004 /* FIXME */
+#define REG_OPTION_OPEN_LINK		0x00000008
+#define REG_LEGAL_OPTION	       (REG_OPTION_RESERVED|  \
+					REG_OPTION_NON_VOLATILE|  \
+					REG_OPTION_VOLATILE|  \
+					REG_OPTION_CREATE_LINK|  \
+					REG_OPTION_BACKUP_RESTORE|  \
+					REG_OPTION_OPEN_LINK)
+
+
+#define REG_CREATED_NEW_KEY	0x00000001
+#define REG_OPENED_EXISTING_KEY	0x00000002
+
+/* For RegNotifyChangeKeyValue */
+#define REG_NOTIFY_CHANGE_NAME       0x01
+#define REG_NOTIFY_CHANGE_ATTRIBUTES 0x02
+#define REG_NOTIFY_CHANGE_LAST_SET   0x04
+#define REG_NOTIFY_CHANGE_SECURITY   0x08
+
+#define KEY_QUERY_VALUE		0x00000001
+#define KEY_SET_VALUE		0x00000002
+#define KEY_CREATE_SUB_KEY	0x00000004
+#define KEY_ENUMERATE_SUB_KEYS	0x00000008
+#define KEY_NOTIFY		0x00000010
+#define KEY_CREATE_LINK		0x00000020
+#define KEY_WOW64_64KEY         0x00000100
+#define KEY_WOW64_32KEY         0x00000200
+#define KEY_WOW64_RES           0x00000300
+
+/* for RegKeyRestore flags */
+#define REG_WHOLE_HIVE_VOLATILE 0x00000001
+#define REG_REFRESH_HIVE        0x00000002
+#define REG_NO_LAZY_FLUSH       0x00000004
+#define REG_FORCE_RESTORE       0x00000008
+
+#define KEY_READ	      ((STANDARD_RIGHTS_READ|  \
+				KEY_QUERY_VALUE|  \
+				KEY_ENUMERATE_SUB_KEYS|  \
+				KEY_NOTIFY)  \
+				& (~SYNCHRONIZE)  \
+			      )
+#define KEY_WRITE	      ((STANDARD_RIGHTS_WRITE|  \
+				KEY_SET_VALUE|  \
+				KEY_CREATE_SUB_KEY)  \
+				& (~SYNCHRONIZE)  \
+			      )
+#define KEY_EXECUTE           ((KEY_READ) & (~SYNCHRONIZE))
+#define KEY_ALL_ACCESS        ((STANDARD_RIGHTS_ALL|  \
+				KEY_QUERY_VALUE|  \
+				KEY_SET_VALUE|  \
+				KEY_CREATE_SUB_KEY|  \
+				KEY_ENUMERATE_SUB_KEYS|  \
+				KEY_NOTIFY|  \
+				KEY_CREATE_LINK)  \
+				& (~SYNCHRONIZE)  \
+			      )
+/* ------------------------------ end registry ------------------------------ */
+
+
+#define EVENTLOG_SUCCESS                0x0000
+#define EVENTLOG_ERROR_TYPE             0x0001
+#define EVENTLOG_WARNING_TYPE           0x0002
+#define EVENTLOG_INFORMATION_TYPE       0x0004
+#define EVENTLOG_AUDIT_SUCCESS          0x0008
+#define EVENTLOG_AUDIT_FAILURE          0x0010
+
+#define SERVICE_BOOT_START   0x00000000
+#define SERVICE_SYSTEM_START 0x00000001
+#define SERVICE_AUTO_START   0x00000002
+#define SERVICE_DEMAND_START 0x00000003
+#define SERVICE_DISABLED     0x00000004
+
+#define SERVICE_ERROR_IGNORE   0x00000000
+#define SERVICE_ERROR_NORMAL   0x00000001
+#define SERVICE_ERROR_SEVERE   0x00000002
+#define SERVICE_ERROR_CRITICAL 0x00000003
+
+/* Service types */
+#define SERVICE_KERNEL_DRIVER      0x00000001
+#define SERVICE_FILE_SYSTEM_DRIVER 0x00000002
+#define SERVICE_ADAPTER            0x00000004
+#define SERVICE_RECOGNIZER_DRIVER  0x00000008
+
+#define SERVICE_DRIVER ( SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | \
+                         SERVICE_RECOGNIZER_DRIVER )
+
+#define SERVICE_WIN32_OWN_PROCESS   0x00000010
+#define SERVICE_WIN32_SHARE_PROCESS 0x00000020
+#define SERVICE_WIN32  (SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS)
+
+#define SERVICE_INTERACTIVE_PROCESS 0x00000100
+
+#define SERVICE_TYPE_ALL ( SERVICE_WIN32 | SERVICE_ADAPTER | \
+                           SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS )
+
+
+typedef enum _CM_SERVICE_NODE_TYPE
+{
+  DriverType               = SERVICE_KERNEL_DRIVER,
+  FileSystemType           = SERVICE_FILE_SYSTEM_DRIVER,
+  Win32ServiceOwnProcess   = SERVICE_WIN32_OWN_PROCESS,
+  Win32ServiceShareProcess = SERVICE_WIN32_SHARE_PROCESS,
+  AdapterType              = SERVICE_ADAPTER,
+  RecognizerType           = SERVICE_RECOGNIZER_DRIVER
+} SERVICE_NODE_TYPE;
+
+typedef enum _CM_SERVICE_LOAD_TYPE
+{
+  BootLoad    = SERVICE_BOOT_START,
+  SystemLoad  = SERVICE_SYSTEM_START,
+  AutoLoad    = SERVICE_AUTO_START,
+  DemandLoad  = SERVICE_DEMAND_START,
+  DisableLoad = SERVICE_DISABLED
+} SERVICE_LOAD_TYPE;
+
+typedef enum _CM_ERROR_CONTROL_TYPE
+{
+  IgnoreError   = SERVICE_ERROR_IGNORE,
+  NormalError   = SERVICE_ERROR_NORMAL,
+  SevereError   = SERVICE_ERROR_SEVERE,
+  CriticalError = SERVICE_ERROR_CRITICAL
+} SERVICE_ERROR_TYPE;
+
+
+
+#define RtlEqualMemory(Destination, Source, Length) (!memcmp((Destination),(Source),(Length)))
+#define RtlMoveMemory(Destination, Source, Length) memmove((Destination),(Source),(Length))
+#define RtlCopyMemory(Destination, Source, Length) memcpy((Destination),(Source),(Length))
+#define RtlFillMemory(Destination, Length, Fill) memset((Destination),(Fill),(Length))
+#define RtlZeroMemory(Destination, Length) memset((Destination),0,(Length))
+
+#include <guiddef.h>
+
+typedef struct _OBJECT_TYPE_LIST {
+    WORD   Level;
+    WORD   Sbz;
+    GUID *ObjectType;
+} OBJECT_TYPE_LIST, *POBJECT_TYPE_LIST;
+
+typedef struct _RTL_CRITICAL_SECTION_DEBUG
+{
+  WORD   Type;
+  WORD   CreatorBackTraceIndex;
+  struct _RTL_CRITICAL_SECTION *CriticalSection;
+  LIST_ENTRY ProcessLocksList;
+  DWORD EntryCount;
+  DWORD ContentionCount;
+#ifdef __WINESRC__  /* in Wine we store the name here */
+  DWORD_PTR Spare[8/sizeof(DWORD_PTR)];
+#else
+  DWORD Spare[ 2 ];
+#endif
+} RTL_CRITICAL_SECTION_DEBUG, *PRTL_CRITICAL_SECTION_DEBUG, RTL_RESOURCE_DEBUG, *PRTL_RESOURCE_DEBUG;
+
+typedef struct _RTL_CRITICAL_SECTION {
+    PRTL_CRITICAL_SECTION_DEBUG DebugInfo;
+    LONG LockCount;
+    LONG RecursionCount;
+    HANDLE OwningThread;
+    HANDLE LockSemaphore;
+    ULONG_PTR SpinCount;
+}  RTL_CRITICAL_SECTION, *PRTL_CRITICAL_SECTION;
+
+#define RTL_CRITICAL_SECTION_FLAG_NO_DEBUG_INFO 0x1000000
+#define RTL_CRITICAL_SECTION_FLAG_DYNAMIC_SPIN  0x2000000
+#define RTL_CRITICAL_SECTION_FLAG_STATIC_INIT   0x4000000
+#define RTL_CRITICAL_SECTION_ALL_FLAG_BITS      0xFF000000
+#define RTL_CRITICAL_SECTION_FLAG_RESERVED      (RTL_CRITICAL_SECTION_ALL_FLAG_BITS & ~0x7000000)
+
+typedef VOID (NTAPI * WAITORTIMERCALLBACKFUNC) (PVOID, BOOLEAN );
+typedef VOID (NTAPI * PFLS_CALLBACK_FUNCTION) ( PVOID );
+
+#include <pshpack8.h>
+typedef struct _IO_COUNTERS {
+    ULONGLONG DECLSPEC_ALIGN(8) ReadOperationCount;
+    ULONGLONG DECLSPEC_ALIGN(8) WriteOperationCount;
+    ULONGLONG DECLSPEC_ALIGN(8) OtherOperationCount;
+    ULONGLONG DECLSPEC_ALIGN(8) ReadTransferCount;
+    ULONGLONG DECLSPEC_ALIGN(8) WriteTransferCount;
+    ULONGLONG DECLSPEC_ALIGN(8) OtherTransferCount;
+} IO_COUNTERS, *PIO_COUNTERS;
+#include <poppack.h>
+
+typedef struct {
+	DWORD dwOSVersionInfoSize;
+	DWORD dwMajorVersion;
+	DWORD dwMinorVersion;
+	DWORD dwBuildNumber;
+	DWORD dwPlatformId;
+	CHAR szCSDVersion[128];
+} OSVERSIONINFOA, *POSVERSIONINFOA, *LPOSVERSIONINFOA;
+
+typedef struct {
+	DWORD dwOSVersionInfoSize;
+	DWORD dwMajorVersion;
+	DWORD dwMinorVersion;
+	DWORD dwBuildNumber;
+	DWORD dwPlatformId;
+	WCHAR szCSDVersion[128];
+} OSVERSIONINFOW, *POSVERSIONINFOW, *LPOSVERSIONINFOW, RTL_OSVERSIONINFOW, *PRTL_OSVERSIONINFOW;
+
+DECL_WINELIB_TYPE_AW(OSVERSIONINFO)
+DECL_WINELIB_TYPE_AW(POSVERSIONINFO)
+DECL_WINELIB_TYPE_AW(LPOSVERSIONINFO)
+
+typedef struct {
+	DWORD dwOSVersionInfoSize;
+	DWORD dwMajorVersion;
+	DWORD dwMinorVersion;
+	DWORD dwBuildNumber;
+	DWORD dwPlatformId;
+	CHAR szCSDVersion[128];
+	WORD wServicePackMajor;
+	WORD wServicePackMinor;
+	WORD wSuiteMask;
+	BYTE wProductType;
+	BYTE wReserved;
+} OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA;
+
+typedef struct {
+	DWORD dwOSVersionInfoSize;
+	DWORD dwMajorVersion;
+	DWORD dwMinorVersion;
+	DWORD dwBuildNumber;
+	DWORD dwPlatformId;
+	WCHAR szCSDVersion[128];
+	WORD wServicePackMajor;
+	WORD wServicePackMinor;
+	WORD wSuiteMask;
+	BYTE wProductType;
+	BYTE wReserved;
+} OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW, RTL_OSVERSIONINFOEXW, *PRTL_OSVERSIONINFOEXW;
+
+DECL_WINELIB_TYPE_AW(OSVERSIONINFOEX)
+DECL_WINELIB_TYPE_AW(POSVERSIONINFOEX)
+DECL_WINELIB_TYPE_AW(LPOSVERSIONINFOEX)
+
+NTSYSAPI ULONGLONG WINAPI VerSetConditionMask(ULONGLONG,DWORD,BYTE);
+
+#define VER_SET_CONDITION(_m_,_t_,_c_) ((_m_)=VerSetConditionMask((_m_),(_t_),(_c_)))
+
+#define VER_PLATFORM_WIN32s                     0
+#define VER_PLATFORM_WIN32_WINDOWS              1
+#define VER_PLATFORM_WIN32_NT                   2
+
+#define	VER_MINORVERSION			0x00000001
+#define	VER_MAJORVERSION			0x00000002
+#define	VER_BUILDNUMBER				0x00000004
+#define	VER_PLATFORMID				0x00000008
+#define	VER_SERVICEPACKMINOR			0x00000010
+#define	VER_SERVICEPACKMAJOR			0x00000020
+#define	VER_SUITENAME				0x00000040
+#define	VER_PRODUCT_TYPE			0x00000080
+
+#define	VER_NT_WORKSTATION			1
+#define	VER_NT_DOMAIN_CONTROLLER		2
+#define	VER_NT_SERVER				3
+
+#define	VER_SUITE_SMALLBUSINESS			0x00000001
+#define	VER_SUITE_ENTERPRISE			0x00000002
+#define	VER_SUITE_BACKOFFICE			0x00000004
+#define	VER_SUITE_COMMUNICATIONS		0x00000008
+#define	VER_SUITE_TERMINAL			0x00000010
+#define	VER_SUITE_SMALLBUSINESS_RESTRICTED	0x00000020
+#define	VER_SUITE_EMBEDDEDNT			0x00000040
+#define	VER_SUITE_DATACENTER			0x00000080
+#define	VER_SUITE_SINGLEUSERTS			0x00000100
+#define	VER_SUITE_PERSONAL			0x00000200
+#define	VER_SUITE_BLADE				0x00000400
+
+#define	VER_EQUAL				1
+#define	VER_GREATER				2
+#define	VER_GREATER_EQUAL			3
+#define	VER_LESS				4
+#define	VER_LESS_EQUAL				5
+#define	VER_AND					6
+#define	VER_OR					7
+
+typedef struct _ACTIVATION_CONTEXT_DETAILED_INFORMATION {
+    DWORD dwFlags;
+    DWORD ulFormatVersion;
+    DWORD ulAssemblyCount;
+    DWORD ulRootManifestPathType;
+    DWORD ulRootManifestPathChars;
+    DWORD ulRootConfigurationPathType;
+    DWORD ulRootConfigurationPathChars;
+    DWORD ulAppDirPathType;
+    DWORD ulAppDirPathChars;
+    PCWSTR lpRootManifestPath;
+    PCWSTR lpRootConfigurationPath;
+    PCWSTR lpAppDirPath;
+} ACTIVATION_CONTEXT_DETAILED_INFORMATION, *PACTIVATION_CONTEXT_DETAILED_INFORMATION;
+
+typedef struct _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION {
+    DWORD ulFlags;
+    DWORD ulEncodedAssemblyIdentityLength;
+    DWORD ulManifestPathType;
+    DWORD ulManifestPathLength;
+    LARGE_INTEGER liManifestLastWriteTime;
+    DWORD ulPolicyPathType;
+    DWORD ulPolicyPathLength;
+    LARGE_INTEGER liPolicyLastWriteTime;
+    DWORD ulMetadataSatelliteRosterIndex;
+    DWORD ulManifestVersionMajor;
+    DWORD ulManifestVersionMinor;
+    DWORD ulPolicyVersionMajor;
+    DWORD ulPolicyVersionMinor;
+    DWORD ulAssemblyDirectoryNameLength;
+    PCWSTR lpAssemblyEncodedAssemblyIdentity;
+    PCWSTR lpAssemblyManifestPath;
+    PCWSTR lpAssemblyPolicyPath;
+    PCWSTR lpAssemblyDirectoryName;
+    DWORD  ulFileCount;
+} ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION, *PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION;
+
+typedef struct _ACTIVATION_CONTEXT_QUERY_INDEX {
+    DWORD ulAssemblyIndex;
+    DWORD ulFileIndexInAssembly;
+} ACTIVATION_CONTEXT_QUERY_INDEX, *PACTIVATION_CONTEXT_QUERY_INDEX;
+
+typedef const struct _ACTIVATION_CONTEXT_QUERY_INDEX *PCACTIVATION_CONTEXT_QUERY_INDEX;
+
+typedef struct _ASSEMBLY_FILE_DETAILED_INFORMATION {
+    DWORD ulFlags;
+    DWORD ulFilenameLength;
+    DWORD ulPathLength;
+    PCWSTR lpFileName;
+    PCWSTR lpFilePath;
+} ASSEMBLY_FILE_DETAILED_INFORMATION, *PASSEMBLY_FILE_DETAILED_INFORMATION;
+
+typedef const ASSEMBLY_FILE_DETAILED_INFORMATION *PCASSEMBLY_FILE_DETAILED_INFORMATION;
+
+typedef enum _ACTIVATION_CONTEXT_INFO_CLASS {
+    ActivationContextBasicInformation                       = 1,
+    ActivationContextDetailedInformation                    = 2,
+    AssemblyDetailedInformationInActivationContext          = 3,
+    FileInformationInAssemblyOfAssemblyInActivationContext  = 4,
+    MaxActivationContextInfoClass,
+
+    AssemblyDetailedInformationInActivationContxt          = 3,
+    FileInformationInAssemblyOfAssemblyInActivationContxt  = 4
+} ACTIVATION_CONTEXT_INFO_CLASS;
+
+#define ACTIVATION_CONTEXT_PATH_TYPE_NONE         1
+#define ACTIVATION_CONTEXT_PATH_TYPE_WIN32_FILE   2
+#define ACTIVATION_CONTEXT_PATH_TYPE_URL          3
+#define ACTIVATION_CONTEXT_PATH_TYPE_ASSEMBLYREF  4
+
+#define ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION          1
+#define ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION               2
+#define ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION      3
+#define ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION        4
+#define ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION     5
+#define ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION  6
+#define ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION        7
+#define ACTIVATION_CONTEXT_SECTION_GLOBAL_OBJECT_RENAME_TABLE    8
+#define ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES                9
+
+typedef enum _JOBOBJECTINFOCLASS
+{
+    JobObjectBasicAccountingInformation = 1,
+    JobObjectBasicLimitInformation,
+    JobObjectBasicProcessIdList,
+    JobObjectBasicUIRestrictions,
+    JobObjectSecurityLimitInformation,
+    JobObjectEndOfJobTimeInformation,
+    JobObjectAssociateCompletionPortInformation,
+    JobObjectBasicAndIoAccountingInformation,
+    JobObjectExtendedLimitInformation,
+    JobObjectJobSetInformation,
+    MaxJobObjectInfoClass
+} JOBOBJECTINFOCLASS;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* _WINNT_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winperf.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winperf.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winperf.h	(revision 16410)
@@ -0,0 +1,65 @@
+/*
+ * Performance Monitor
+ *
+ * Copyright 2007 Hans Leidekker
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _WINPERF_
+#define _WINPERF_
+
+#define PERF_SIZE_DWORD         0x00000000
+#define PERF_SIZE_LARGE         0x00000100
+#define PERF_SIZE_ZERO          0x00000200
+#define PERF_SIZE_VARIABLE_LEN  0x00000300
+
+#define PERF_TYPE_NUMBER        0x00000000
+#define PERF_TYPE_COUNTER       0x00000400
+#define PERF_TYPE_TEXT          0x00000800
+#define PERF_TYPE_ZERO          0x00000C00
+
+#define PERF_NUMBER_HEX         0x00000000
+#define PERF_NUMBER_DECIMAL     0x00010000
+#define PERF_NUMBER_DEC_1000    0x00020000
+
+#define PERF_COUNTER_VALUE      0x00000000
+#define PERF_COUNTER_RATE       0x00010000
+#define PERF_COUNTER_FRACTION   0x00020000
+#define PERF_COUNTER_BASE       0x00030000
+#define PERF_COUNTER_ELAPSED    0x00040000
+#define PERF_COUNTER_QUEUELEN   0x00050000
+#define PERF_COUNTER_HISTOGRAM  0x00060000
+#define PERF_COUNTER_PRECISION  0x00070000
+
+#define PERF_TEXT_UNICODE       0x00000000
+#define PERF_TEXT_ASCII         0x00010000
+
+#define PERF_TIMER_TICK         0x00000000
+#define PERF_TIMER_100NS        0x00100000
+#define PERF_OBJECT_TIMER       0x00200000
+
+#define PERF_DELTA_COUNTER      0x00400000
+#define PERF_DELTA_BASE         0x00800000
+#define PERF_INVERSE_COUNTER    0x01000000
+#define PERF_MULTI_COUNTER      0x02000000
+
+#define PERF_DISPLAY_NO_SUFFIX  0x00000000
+#define PERF_DISPLAY_PER_SEC    0x10000000
+#define PERF_DISPLAY_PERCENT    0x20000000
+#define PERF_DISPLAY_SECONDS    0x30000000
+#define PERF_DISPLAY_NOSHOW     0x40000000
+
+#endif /* _WINPERF_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winreg.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winreg.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winreg.h	(revision 16410)
@@ -0,0 +1,183 @@
+/*
+ * Win32 registry defines (see also winnt.h)
+ *
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINREG_H
+#define __WINE_WINREG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+#define HKEY_CLASSES_ROOT       ((HKEY) 0x80000000)
+#define HKEY_CURRENT_USER       ((HKEY) 0x80000001)
+#define HKEY_LOCAL_MACHINE      ((HKEY) 0x80000002)
+#define HKEY_USERS              ((HKEY) 0x80000003)
+#define HKEY_PERFORMANCE_DATA   ((HKEY) 0x80000004)
+#define HKEY_CURRENT_CONFIG     ((HKEY) 0x80000005)
+#define HKEY_DYN_DATA           ((HKEY) 0x80000006)
+
+/*
+ *	registry provider structs
+ */
+typedef struct value_entA
+{   LPSTR	ve_valuename;
+    DWORD	ve_valuelen;
+    DWORD_PTR	ve_valueptr;
+    DWORD	ve_type;
+} VALENTA, *PVALENTA;
+
+typedef struct value_entW {
+    LPWSTR	ve_valuename;
+    DWORD	ve_valuelen;
+    DWORD_PTR	ve_valueptr;
+    DWORD	ve_type;
+} VALENTW, *PVALENTW;
+
+typedef ACCESS_MASK REGSAM;
+typedef LONG LSTATUS;
+
+/*
+ * InitiateSystemShutdown() reasons
+ */
+#include <reason.h>
+
+#define REASON_OTHER            (SHTDN_REASON_MAJOR_OTHER | SHTDN_REASON_MINOR_OTHER)
+#define REASON_UNKNOWN          SHTDN_REASON_UNKNOWN
+#define REASON_LEGACY_API       SHTDN_REASON_LEGACY_API
+#define REASON_PLANNED_FLAG     SHTDN_REASON_FLAG_PLANNED
+
+#define MAX_SHUTDOWN_TIMEOUT    (10*365*24*60*60)
+
+/*
+ * RegGetValue() restrictions
+ */
+
+#define RRF_RT_REG_NONE         (1 << 0)
+#define RRF_RT_REG_SZ           (1 << 1)
+#define RRF_RT_REG_EXPAND_SZ    (1 << 2)
+#define RRF_RT_REG_BINARY       (1 << 3)
+#define RRF_RT_REG_DWORD        (1 << 4)
+#define RRF_RT_REG_MULTI_SZ     (1 << 5)
+#define RRF_RT_REG_QWORD        (1 << 6)
+#define RRF_RT_DWORD            (RRF_RT_REG_BINARY | RRF_RT_REG_DWORD)
+#define RRF_RT_QWORD            (RRF_RT_REG_BINARY | RRF_RT_REG_QWORD)
+#define RRF_RT_ANY              0xffff
+#define RRF_NOEXPAND            (1 << 28)
+#define RRF_ZEROONFAILURE       (1 << 29)
+
+WINADVAPI BOOL      WINAPI AbortSystemShutdownA(LPSTR);
+WINADVAPI BOOL      WINAPI AbortSystemShutdownW(LPWSTR);
+#define                    AbortSystemShutdown WINELIB_NAME_AW(AbortSystemShutdown)
+WINADVAPI BOOL      WINAPI InitiateSystemShutdownA(LPSTR,LPSTR,DWORD,BOOL,BOOL);
+WINADVAPI BOOL      WINAPI InitiateSystemShutdownW(LPWSTR,LPWSTR,DWORD,BOOL,BOOL);
+#define                    InitiateSystemShutdown WINELIB_NAME_AW(InitiateSystemShutdown);
+WINADVAPI BOOL      WINAPI InitiateSystemShutdownExA(LPSTR,LPSTR,DWORD,BOOL,BOOL,DWORD);
+WINADVAPI BOOL      WINAPI InitiateSystemShutdownExW(LPWSTR,LPWSTR,DWORD,BOOL,BOOL,DWORD);
+#define                    InitiateSystemShutdownEx WINELIB_NAME_AW(InitiateSystemShutdownEx);
+WINADVAPI LSTATUS   WINAPI RegCloseKey(HKEY);
+WINADVAPI LSTATUS   WINAPI RegConnectRegistryA(LPCSTR,HKEY,PHKEY);
+WINADVAPI LSTATUS   WINAPI RegConnectRegistryW(LPCWSTR,HKEY,PHKEY);
+#define                    RegConnectRegistry WINELIB_NAME_AW(RegConnectRegistry)
+WINADVAPI LSTATUS   WINAPI RegCreateKeyA(HKEY,LPCSTR,PHKEY);
+WINADVAPI LSTATUS   WINAPI RegCreateKeyW(HKEY,LPCWSTR,PHKEY);
+#define                    RegCreateKey WINELIB_NAME_AW(RegCreateKey)
+WINADVAPI LSTATUS   WINAPI RegCreateKeyExA(HKEY,LPCSTR,DWORD,LPSTR,DWORD,REGSAM,LPSECURITY_ATTRIBUTES,PHKEY,LPDWORD);
+WINADVAPI LSTATUS   WINAPI RegCreateKeyExW(HKEY,LPCWSTR,DWORD,LPWSTR,DWORD,REGSAM,LPSECURITY_ATTRIBUTES,PHKEY,LPDWORD);
+#define                    RegCreateKeyEx WINELIB_NAME_AW(RegCreateKeyEx)
+WINADVAPI LSTATUS   WINAPI RegDeleteKeyA(HKEY,LPCSTR);
+WINADVAPI LSTATUS   WINAPI RegDeleteKeyW(HKEY,LPCWSTR);
+#define                    RegDeleteKey WINELIB_NAME_AW(RegDeleteKey)
+WINADVAPI LSTATUS   WINAPI RegDeleteKeyValueA(HKEY,LPCSTR,LPCSTR);
+WINADVAPI LSTATUS   WINAPI RegDeleteKeyValueW(HKEY,LPCWSTR,LPCWSTR);
+#define                    RegDeleteKeyValue WINELIB_NAME_AW(RegDeleteKeyValue)
+WINADVAPI LSTATUS   WINAPI RegDeleteTreeA(HKEY,LPCSTR);
+WINADVAPI LSTATUS   WINAPI RegDeleteTreeW(HKEY,LPCWSTR);
+#define                    RegDeleteTree WINELIB_NAME_AW(RegDeleteTree)
+WINADVAPI LSTATUS   WINAPI RegDeleteValueA(HKEY,LPCSTR);
+WINADVAPI LSTATUS   WINAPI RegDeleteValueW(HKEY,LPCWSTR);
+#define                    RegDeleteValue WINELIB_NAME_AW(RegDeleteValue)
+WINADVAPI LSTATUS   WINAPI RegDisablePredefinedCache(void);
+WINADVAPI LSTATUS   WINAPI RegEnumKeyA(HKEY,DWORD,LPSTR,DWORD);
+WINADVAPI LSTATUS   WINAPI RegEnumKeyW(HKEY,DWORD,LPWSTR,DWORD);
+#define                    RegEnumKey WINELIB_NAME_AW(RegEnumKey)
+WINADVAPI LSTATUS   WINAPI RegEnumKeyExA(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPSTR,LPDWORD,LPFILETIME);
+WINADVAPI LSTATUS   WINAPI RegEnumKeyExW(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPWSTR,LPDWORD,LPFILETIME);
+#define                    RegEnumKeyEx WINELIB_NAME_AW(RegEnumKeyEx)
+WINADVAPI LSTATUS   WINAPI RegEnumValueA(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
+WINADVAPI LSTATUS   WINAPI RegEnumValueW(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
+#define                    RegEnumValue WINELIB_NAME_AW(RegEnumValue)
+WINADVAPI LSTATUS   WINAPI RegFlushKey(HKEY);
+WINADVAPI LSTATUS   WINAPI RegGetKeySecurity(HKEY,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,LPDWORD);
+WINADVAPI LSTATUS   WINAPI RegGetValueA(HKEY,LPCSTR,LPCSTR,DWORD,LPDWORD,PVOID,LPDWORD);
+WINADVAPI LSTATUS   WINAPI RegGetValueW(HKEY,LPCWSTR,LPCWSTR,DWORD,LPDWORD,PVOID,LPDWORD);
+#define                    RegGetValue WINELIB_NAME_AW(RegGetValue)
+WINADVAPI LSTATUS   WINAPI RegLoadKeyA(HKEY,LPCSTR,LPCSTR);
+WINADVAPI LSTATUS   WINAPI RegLoadKeyW(HKEY,LPCWSTR,LPCWSTR);
+#define                    RegLoadKey WINELIB_NAME_AW(RegLoadKey)
+WINADVAPI LSTATUS   WINAPI RegLoadMUIStringA(HKEY,LPCSTR,LPSTR,DWORD,LPDWORD,DWORD,LPCSTR);
+WINADVAPI LSTATUS   WINAPI RegLoadMUIStringW(HKEY,LPCWSTR,LPWSTR,DWORD,LPDWORD,DWORD,LPCWSTR);
+#define                    RegLoadMUIString WINELIB_NAME_AW(RegLoadMUIString)
+WINADVAPI LSTATUS   WINAPI RegNotifyChangeKeyValue(HKEY,BOOL,DWORD,HANDLE,BOOL);
+WINADVAPI LSTATUS   WINAPI RegOpenCurrentUser(REGSAM,PHKEY);
+WINADVAPI LSTATUS   WINAPI RegOpenKeyA(HKEY,LPCSTR,PHKEY);
+WINADVAPI LSTATUS   WINAPI RegOpenKeyW(HKEY,LPCWSTR,PHKEY);
+#define                    RegOpenKey WINELIB_NAME_AW(RegOpenKey)
+WINADVAPI LSTATUS   WINAPI RegOpenKeyExW(HKEY,LPCWSTR,DWORD,REGSAM,PHKEY);
+WINADVAPI LSTATUS   WINAPI RegOpenKeyExA(HKEY,LPCSTR,DWORD,REGSAM,PHKEY);
+#define                    RegOpenKeyEx WINELIB_NAME_AW(RegOpenKeyEx)
+WINADVAPI LSTATUS   WINAPI RegOpenUserClassesRoot(HANDLE,DWORD,REGSAM,PHKEY);
+WINADVAPI LSTATUS   WINAPI RegOverridePredefKey(HKEY,HKEY);
+WINADVAPI LSTATUS   WINAPI RegQueryInfoKeyW(HKEY,LPWSTR,LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPFILETIME);
+WINADVAPI LSTATUS   WINAPI RegQueryInfoKeyA(HKEY,LPSTR,LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPFILETIME);
+#define                    RegQueryInfoKey WINELIB_NAME_AW(RegQueryInfoKey)
+WINADVAPI LSTATUS   WINAPI RegQueryMultipleValuesA(HKEY,PVALENTA,DWORD,LPSTR,LPDWORD);
+WINADVAPI LSTATUS   WINAPI RegQueryMultipleValuesW(HKEY,PVALENTW,DWORD,LPWSTR,LPDWORD);
+#define                    RegQueryMultipleValues WINELIB_NAME_AW(RegQueryMultipleValues)
+WINADVAPI LSTATUS   WINAPI RegQueryValueA(HKEY,LPCSTR,LPSTR,LPLONG);
+WINADVAPI LSTATUS   WINAPI RegQueryValueW(HKEY,LPCWSTR,LPWSTR,LPLONG);
+#define                    RegQueryValue WINELIB_NAME_AW(RegQueryValue)
+WINADVAPI LSTATUS   WINAPI RegQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
+WINADVAPI LSTATUS   WINAPI RegQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
+#define                    RegQueryValueEx WINELIB_NAME_AW(RegQueryValueEx)
+WINADVAPI LSTATUS   WINAPI RegReplaceKeyA(HKEY,LPCSTR,LPCSTR,LPCSTR);
+WINADVAPI LSTATUS   WINAPI RegReplaceKeyW(HKEY,LPCWSTR,LPCWSTR,LPCWSTR);
+#define                    RegReplaceKey WINELIB_NAME_AW(RegReplaceKey)
+WINADVAPI LSTATUS   WINAPI RegRestoreKeyA(HKEY,LPCSTR,DWORD);
+WINADVAPI LSTATUS   WINAPI RegRestoreKeyW(HKEY,LPCWSTR,DWORD);
+#define                    RegRestoreKey WINELIB_NAME_AW(RegRestoreKey)
+WINADVAPI LSTATUS   WINAPI RegSaveKeyA(HKEY,LPCSTR,LPSECURITY_ATTRIBUTES);
+WINADVAPI LSTATUS   WINAPI RegSaveKeyW(HKEY,LPCWSTR,LPSECURITY_ATTRIBUTES);
+#define                    RegSaveKey WINELIB_NAME_AW(RegSaveKey)
+WINADVAPI LSTATUS   WINAPI RegSetKeySecurity(HKEY,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+WINADVAPI LSTATUS   WINAPI RegSetValueA(HKEY,LPCSTR,DWORD,LPCSTR,DWORD);
+WINADVAPI LSTATUS   WINAPI RegSetValueW(HKEY,LPCWSTR,DWORD,LPCWSTR,DWORD);
+#define                    RegSetValue WINELIB_NAME_AW(RegSetValue)
+WINADVAPI LSTATUS   WINAPI RegSetValueExA(HKEY,LPCSTR,DWORD,DWORD,CONST BYTE*,DWORD);
+WINADVAPI LSTATUS   WINAPI RegSetValueExW(HKEY,LPCWSTR,DWORD,DWORD,CONST BYTE*,DWORD);
+#define                    RegSetValueEx WINELIB_NAME_AW(RegSetValueEx)
+WINADVAPI LSTATUS   WINAPI RegUnLoadKeyA(HKEY,LPCSTR);
+WINADVAPI LSTATUS   WINAPI RegUnLoadKeyW(HKEY,LPCWSTR);
+#define                    RegUnLoadKey WINELIB_NAME_AW(RegUnLoadKey)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif  /* __WINE_WINREG_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winresrc.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winresrc.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winresrc.h	(revision 16410)
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2002 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _WINRESRC_
+#define _WINRESRC_
+
+#ifndef WINVER
+#define WINVER 0x0500
+#endif
+
+#ifndef _WIN32_IE
+#define _WIN32_IE 0x0501
+#endif
+
+#ifndef _WIN32_WINDOWS
+#define _WIN32_WINDOWS 0x0410
+#endif
+
+#ifndef _WIN32_WINNT
+#define _WIN32_WINNT 0x0500
+#endif
+
+#include <winuser.rh>
+#include <commctrl.rh>
+/* FIXME: #include <dde.rh> */
+/* FIXME: #include <winnt.rh> */
+#include <dlgs.h>
+#include <winver.h>
+
+#endif /* _WINRESRC_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winscard.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winscard.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winscard.h	(revision 16410)
@@ -0,0 +1,150 @@
+/*
+ * Winscard definitions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINSCARD_H
+#define __WINE_WINSCARD_H
+
+#include <wtypes.h>
+#include <winioctl.h>
+#include <winsmcrd.h>
+#include <scarderr.h>
+
+#ifndef _LPCBYTE_DEFINED
+#define _LPCBYTE_DEFINED
+typedef const BYTE *LPCBYTE;
+#endif
+
+typedef ULONG_PTR SCARDCONTEXT, *PSCARDCONTEXT, *LPSCARDCONTEXT;
+typedef ULONG_PTR SCARDHANDLE,  *PSCARDHANDLE,  *LPSCARDHANDLE;
+
+typedef struct _SCARD_ATRMASK
+{
+    DWORD cbAtr;
+    BYTE  rgbAtr[36];
+    BYTE  rgbMask[36];
+} SCARD_ATRMASK, *PSCARD_ATRMASK, *LPSCARD_ATRMASK;
+
+typedef struct
+{
+    LPCSTR szReader;
+    LPVOID pvUserData;
+    DWORD  dwCurrentState;
+    DWORD  dwEventState;
+    DWORD  cbAtr;
+    BYTE   rgbAtr[36];
+} SCARD_READERSTATEA, *PSCARD_READERSTATEA, *LPSCARD_READERSTATEA;
+typedef struct
+{
+    LPCWSTR szReader;
+    LPVOID  pvUserData;
+    DWORD   dwCurrentState;
+    DWORD   dwEventState;
+    DWORD   cbAtr;
+    BYTE    rgbAtr[36];
+} SCARD_READERSTATEW, *PSCARD_READERSTATEW, *LPSCARD_READERSTATEW;
+DECL_WINELIB_TYPE_AW(SCARD_READERSTATE)
+DECL_WINELIB_TYPE_AW(PSCARD_READERSTATE)
+DECL_WINELIB_TYPE_AW(LPSCARD_READERSTATE)
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+HANDLE      WINAPI SCardAccessStartedEvent(void);
+LONG        WINAPI SCardAddReaderToGroupA(SCARDCONTEXT,LPCSTR,LPCSTR);
+LONG        WINAPI SCardAddReaderToGroupW(SCARDCONTEXT,LPCWSTR,LPCWSTR);
+#define     SCardAddReaderToGroup WINELIB_NAME_AW(SCardAddReaderToGroup)
+LONG        WINAPI SCardBeginTransaction(SCARDHANDLE);
+LONG        WINAPI SCardCancel(SCARDCONTEXT);
+LONG        WINAPI SCardConnectA(SCARDCONTEXT,LPCSTR,DWORD,DWORD,LPSCARDHANDLE,LPDWORD);
+LONG        WINAPI SCardConnectW(SCARDCONTEXT,LPCWSTR,DWORD,DWORD,LPSCARDHANDLE,LPDWORD);
+#define     SCardConnect WINELIB_NAME_AW(SCardConnect)
+LONG        WINAPI SCardControl(SCARDHANDLE,DWORD,LPCVOID,DWORD,LPVOID,DWORD,LPDWORD);
+LONG        WINAPI SCardDisconnect(SCARDHANDLE,DWORD);
+LONG        WINAPI SCardEndTransaction(SCARDHANDLE,DWORD);
+LONG        WINAPI SCardEstablishContext(DWORD,LPCVOID,LPCVOID,LPSCARDCONTEXT);
+LONG        WINAPI SCardForgetCardTypeA(SCARDCONTEXT,LPCSTR);
+LONG        WINAPI SCardForgetCardTypeW(SCARDCONTEXT,LPCWSTR);
+#define     SCardForgetCardType WINELIB_NAME_AW(SCardForgetCardType)
+LONG        WINAPI SCardForgetReaderA(SCARDCONTEXT,LPCSTR);
+LONG        WINAPI SCardForgetReaderW(SCARDCONTEXT,LPCWSTR);
+#define     SCardForgetReader WINELIB_NAME_AW(SCardForgetReader)
+LONG        WINAPI SCardForgetReaderGroupA(SCARDCONTEXT,LPCSTR);
+LONG        WINAPI SCardForgetReaderGroupW(SCARDCONTEXT,LPCWSTR);
+#define     SCardForgetReaderGroup WINELIB_NAME_AW(SCardForgetReaderGroup)
+LONG        WINAPI SCardFreeMemory(SCARDCONTEXT,LPCVOID);
+LONG        WINAPI SCardGetAttrib(SCARDHANDLE,DWORD,LPBYTE,LPDWORD);
+LONG        WINAPI SCardGetCardTypeProviderNameA(SCARDCONTEXT,LPCSTR,DWORD,LPSTR,LPDWORD);
+LONG        WINAPI SCardGetCardTypeProviderNameW(SCARDCONTEXT,LPCWSTR,DWORD,LPWSTR,LPDWORD);
+#define     SCardGetCardTypeProviderName WINELIB_NAME_AW(SCardGetCardTypeProviderName)
+LONG        WINAPI SCardGetProviderIdA(SCARDCONTEXT,LPCSTR,LPGUID);
+LONG        WINAPI SCardGetProviderIdW(SCARDCONTEXT,LPCWSTR,LPGUID);
+#define     SCardGetProviderId WINELIB_NAME_AW(SCardGetProviderId)
+LONG        WINAPI SCardGetStatusChangeA(SCARDCONTEXT,DWORD,LPSCARD_READERSTATEA,DWORD);
+LONG        WINAPI SCardGetStatusChangeW(SCARDCONTEXT,DWORD,LPSCARD_READERSTATEW,DWORD);
+#define     SCardGetStatusChange WINELIB_NAME_AW(SCardGetStatusChange)
+LONG        WINAPI SCardIntroduceCardTypeA(SCARDCONTEXT,LPCSTR,LPCGUID,LPCGUID,DWORD,LPCBYTE,LPCBYTE,DWORD);
+LONG        WINAPI SCardIntroduceCardTypeW(SCARDCONTEXT,LPCWSTR,LPCGUID,LPCGUID,DWORD,LPCBYTE,LPCBYTE,DWORD);
+#define     SCardIntroduceCardType WINELIB_NAME_AW(SCardIntroduceCardType)
+LONG        WINAPI SCardIntroduceReaderA(SCARDCONTEXT,LPCSTR,LPCSTR);
+LONG        WINAPI SCardIntroduceReaderW(SCARDCONTEXT,LPCWSTR,LPCWSTR);
+#define     SCardIntroduceReader WINELIB_NAME_AW(SCardIntroduceReader)
+LONG        WINAPI SCardIntroduceReaderGroupA(SCARDCONTEXT,LPCSTR);
+LONG        WINAPI SCardIntroduceReaderGroupW(SCARDCONTEXT,LPCWSTR);
+#define     SCardIntroduceReaderGroup WINELIB_NAME_AW(SCardIntroduceReaderGroup)
+LONG        WINAPI SCardIsValidContext(SCARDCONTEXT);
+LONG        WINAPI SCardListCardsA(SCARDCONTEXT,LPCBYTE,LPCGUID,DWORD,LPSTR,LPDWORD);
+LONG        WINAPI SCardListCardsW(SCARDCONTEXT,LPCBYTE,LPCGUID,DWORD,LPWSTR,LPDWORD);
+#define     SCardListCards WINELIB_NAME_AW(SCardListCards)
+LONG        WINAPI SCardListInterfacesA(SCARDCONTEXT,LPCSTR,LPGUID,LPDWORD);
+LONG        WINAPI SCardListInterfacesW(SCARDCONTEXT,LPCWSTR,LPGUID,LPDWORD);
+#define     SCardListInterfaces WINELIB_NAME_AW(SCardListInterfaces)
+LONG        WINAPI SCardListReadersA(SCARDCONTEXT,LPCSTR,LPSTR,LPDWORD);
+LONG        WINAPI SCardListReadersW(SCARDCONTEXT,LPCWSTR,LPWSTR,LPDWORD);
+#define     SCardListReaders WINELIB_NAME_AW(SCardListReaders)
+LONG        WINAPI SCardListReaderGroupsA(SCARDCONTEXT,LPSTR,LPDWORD);
+LONG        WINAPI SCardListReaderGroupsW(SCARDCONTEXT,LPWSTR,LPDWORD);
+#define     SCardListReaderGroups WINELIB_NAME_AW(SCardListReaderGroups)
+LONG        WINAPI SCardLocateCardsA(SCARDCONTEXT,LPCSTR,LPSCARD_READERSTATEA,DWORD);
+LONG        WINAPI SCardLocateCardsW(SCARDCONTEXT,LPCWSTR,LPSCARD_READERSTATEW,DWORD);
+#define     SCardLocateCards WINELIB_NAME_AW(SCardLocateCards)
+LONG        WINAPI SCardLocateCardsByATRA(SCARDCONTEXT,LPSCARD_ATRMASK,DWORD,LPSCARD_READERSTATEA,DWORD);
+LONG        WINAPI SCardLocateCardsByATRW(SCARDCONTEXT,LPSCARD_ATRMASK,DWORD,LPSCARD_READERSTATEW,DWORD);
+#define     SCardLocateCardsByATR WINELIB_NAME_AW(SCardLocateCardsByATR)
+LONG        WINAPI SCardReconnect(SCARDHANDLE,DWORD,DWORD,DWORD,LPDWORD);
+LONG        WINAPI SCardReleaseContext(SCARDCONTEXT);
+void        WINAPI SCardReleaseStartedEvent(HANDLE);
+LONG        WINAPI SCardRemoveReaderFromGroupA(SCARDCONTEXT,LPCSTR,LPCSTR);
+LONG        WINAPI SCardRemoveReaderFromGroupW(SCARDCONTEXT,LPCWSTR,LPCWSTR);
+#define     SCardRemoveReaderFromGroup WINELIB_NAME_AW(SCardRemoveReaderFromGroup)
+LONG        WINAPI SCardSetAttrib(SCARDHANDLE,DWORD,LPCBYTE,DWORD);
+LONG        WINAPI SCardSetCardTypeProviderNameA(SCARDCONTEXT,LPCSTR,DWORD,LPCSTR);
+LONG        WINAPI SCardSetCardTypeProviderNameW(SCARDCONTEXT,LPCWSTR,DWORD,LPCWSTR);
+#define     SCardSetCardTypeProviderName WINELIB_NAME_AW(SCardSetCardTypeProviderName)
+LONG        WINAPI SCardState(SCARDHANDLE,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
+LONG        WINAPI SCardStatusA(SCARDHANDLE,LPSTR,LPDWORD,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
+LONG        WINAPI SCardStatusW(SCARDHANDLE,LPWSTR,LPDWORD,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
+#define     SCardStatus WINELIB_NAME_AW(SCardStatus)
+LONG        WINAPI SCardTransmit(SCARDHANDLE,LPCSCARD_IO_REQUEST,LPCBYTE,DWORD,LPSCARD_IO_REQUEST,LPBYTE,LPDWORD);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* __WINE_WINSCARD_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winsmcrd.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winsmcrd.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winsmcrd.h	(revision 16410)
@@ -0,0 +1,37 @@
+/*
+ * Winscard definitions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINSMCRD_H
+#define __WINE_WINSMCRD_H
+
+#define SCARD_PROTOCOL_UNDEFINED        0x00000000
+#define SCARD_PROTOCOL_OPTIMAL          0x00000000
+#define SCARD_PROTOCOL_T0               0x00000001
+#define SCARD_PROTOCOL_T1               0x00000002
+#define SCARD_PROTOCOL_RAW              0x00010000
+#define SCARD_PROTOCOL_DEFAULT          0x80000000
+#define SCARD_PROTOCOL_Tx               (SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1)
+
+typedef struct _SCARD_IO_REQUEST
+{
+    DWORD dwProtocol;
+    DWORD cbPciLength;
+} SCARD_IO_REQUEST, *PSCARD_IO_REQUEST, *LPSCARD_IO_REQUEST;
+typedef const SCARD_IO_REQUEST *LPCSCARD_IO_REQUEST;
+
+#endif  /* __WINE_WINSMCRD_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winsock.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winsock.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winsock.h	(revision 16410)
@@ -0,0 +1,1062 @@
+/* WINSOCK.H--definitions to be used with the WINSOCK.DLL
+ *
+ * This header file corresponds to version 1.1 of the Windows Sockets
+ * specification.
+ *
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifdef __WINESRC__
+# ifndef __WINE_WINSOCK2__
+#  error Please use Winsock2 in Wine
+# endif
+#endif
+
+#ifndef __WINE_WINSOCKAPI_STDLIB_H
+#define __WINE_WINSOCKAPI_STDLIB_H
+
+/*
+ * This section defines the items that conflict with the Unix headers.
+ */
+#ifndef USE_WS_PREFIX
+/* We are not using the WS_ prefix we risk getting conflicts for
+ * everything related to select.
+ */
+# ifdef FD_CLR
+/* Too late, the Unix version of stdlib.h was included before winsock.h.
+ * This means select and all the related stuff is already defined and we
+ * cannot override types and function prototypes.
+ * All we can do is disable all these symbols so that they are not used
+ * inadvertently.
+ */
+#  include <sys/types.h>
+#  undef FD_SETSIZE
+#  undef FD_CLR
+#  undef FD_SET
+#  undef FD_ZERO
+#  undef FD_ISSET
+
+#  define FD_SETSIZE Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library
+#  define FD_CLR     Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library
+#  define FD_SET     Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library
+#  define FD_ZERO    Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library
+#  define FD_ISSET   Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library
+#  define fd_set     Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library
+#  define select     Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library
+# elif defined(RLIM_INFINITY)
+/* On Darwin stdlib.h includes sys/resource.h which defines timeval but not the fd_set macros */
+#  define fd_set unix_fd_set
+#  include <sys/types.h>
+#  include <time.h>
+#  include <stdlib.h>
+#  undef fd_set
+#  undef FD_SETSIZE
+#  undef FD_CLR
+#  undef FD_SET
+#  undef FD_ZERO
+#  undef FD_ISSET
+#  define select     Include_winsock_h_before_sys_types_h_or_use_the_MSVCRT_library
+#  define timeval    Include_winsock_h_before_sys_types_h_or_use_the_MSVCRT_library
+# else  /* FD_CLR */
+/* stdlib.h has not been included yet so it's not too late. Include it now
+ * making sure that none of the select symbols is affected. Then we can
+ * define them with our own values.
+ */
+#  define fd_set unix_fd_set
+#  define timeval unix_timeval
+#  define select unix_select
+#  include <sys/types.h>
+#  include <time.h>
+#  include <stdlib.h>
+#  undef fd_set
+#  undef timeval
+#  undef select
+#  undef FD_SETSIZE
+#  undef FD_CLR
+#  undef FD_SET
+#  undef FD_ZERO
+#  undef FD_ISSET
+
+#  define WS_DEFINE_SELECT
+# endif /* FD_CLR */
+
+#else
+# define WS_DEFINE_SELECT
+# include <sys/types.h>
+# include <stdlib.h>
+#endif /* !USE_WS_PREFIX */
+
+#endif /* __WINE_WINSOCKAPI_STDLIB_H */
+
+#ifndef __WINESRC__
+# include <windows.h>
+#else
+# include <windef.h>
+#endif
+
+#ifndef _WINSOCKAPI_
+#define _WINSOCKAPI_
+
+#ifdef USE_WS_PREFIX
+typedef unsigned char  WS_u_char;
+typedef unsigned short WS_u_short;
+typedef unsigned int   WS_u_int;
+#ifdef _MSC_VER
+typedef unsigned long  WS_u_long;
+#else
+typedef unsigned int   WS_u_long;
+#endif
+#elif (defined(_MSC_VER) || defined(__MINGW_H) || defined(__WATCOMC__)) && !defined(_BSDTYPES_DEFINED)
+/* MinGW doesn't define the u_xxx types */
+typedef unsigned char  u_char;
+typedef unsigned short u_short;
+typedef unsigned int   u_int;
+#ifdef _MSC_VER
+typedef unsigned long  u_long;
+#else
+typedef unsigned int   u_long;
+#endif
+#define _BSDTYPES_DEFINED
+#endif
+
+#ifdef USE_WS_PREFIX
+# define WS(x)    WS_##x
+#else
+# define WS(x)    x
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+/* proper 4-byte packing */
+#include <pshpack4.h>
+
+/*
+ * Address families
+ */
+#ifndef USE_WS_PREFIX
+#define AF_UNSPEC                  0
+#define AF_UNIX                    1
+#define AF_INET                    2
+#define AF_IMPLINK                 3
+#define AF_PUP                     4
+#define AF_CHAOS                   5
+#define AF_NS                      6
+#define AF_IPX                     AF_NS
+#define AF_ISO                     7
+#define AF_OSI                     AF_ISO
+#define AF_ECMA                    8
+#define AF_DATAKIT                 9
+#define AF_CCITT                   10
+#define AF_SNA                     11
+#define AF_DECnet                  12
+#define AF_DLI                     13
+#define AF_LAT                     14
+#define AF_HYLINK                  15
+#define AF_APPLETALK               16
+#define AF_NETBIOS                 17
+#define AF_VOICEVIEW               18
+#define AF_FIREFOX                 19
+#define AF_UNKNOWN1                20
+#define AF_BAN                     21
+#define AF_ATM                     22
+#define AF_INET6                   23
+#define AF_CLUSTER                 24
+#define AF_12844                   25
+#define AF_IRDA                    26
+#define AF_MAX                     27
+#define PF_UNSPEC                  AF_UNSPEC
+#define PF_UNIX                    AF_UNIX
+#define PF_INET                    AF_INET
+#define PF_IMPLINK                 AF_IMPLINK
+#define PF_PUP                     AF_PUP
+#define PF_CHAOS                   AF_CHAOS
+#define PF_NS                      AF_NS
+#define PF_IPX                     AF_IPX
+#define PF_ISO                     AF_ISO
+#define PF_OSI                     AF_OSI
+#define PF_ECMA                    AF_ECMA
+#define PF_DATAKIT                 AF_DATAKIT
+#define PF_CCITT                   AF_CCITT
+#define PF_SNA                     AF_SNA
+#define PF_DECnet                  AF_DECnet
+#define PF_DLI                     AF_DLI
+#define PF_LAT                     AF_LAT
+#define PF_HYLINK                  AF_HYLINK
+#define PF_APPLETALK               AF_APPLETALK
+#define PF_VOICEVIEW               AF_VOICEVIEW
+#define PF_FIREFOX                 AF_FIREFOX
+#define PF_UNKNOWN1                AF_UNKNOWN1
+#define PF_BAN                     AF_BAN
+#define PF_MAX                     AF_MAX
+#else /* USE_WS_PREFIX */
+#define WS_AF_UNSPEC               0
+#define WS_AF_UNIX                 1
+#define WS_AF_INET                 2
+#define WS_AF_IMPLINK              3
+#define WS_AF_PUP                  4
+#define WS_AF_CHAOS                5
+#define WS_AF_NS                   6
+#define WS_AF_IPX                  WS_AF_NS
+#define WS_AF_ISO                  7
+#define WS_AF_OSI                  AF_ISO
+#define WS_AF_ECMA                 8
+#define WS_AF_DATAKIT              9
+#define WS_AF_CCITT                10
+#define WS_AF_SNA                  11
+#define WS_AF_DECnet               12
+#define WS_AF_DLI                  13
+#define WS_AF_LAT                  14
+#define WS_AF_HYLINK               15
+#define WS_AF_APPLETALK            16
+#define WS_AF_NETBIOS              17
+#define WS_AF_VOICEVIEW            18
+#define WS_AF_FIREFOX              19
+#define WS_AF_UNKNOWN1             20
+#define WS_AF_BAN                  21
+#define WS_AF_ATM                  22
+#define WS_AF_INET6                23
+#define WS_AF_CLUSTER              24
+#define WS_AF_12844                25
+#define WS_AF_IRDA                 26
+#define WS_AF_MAX                  27
+#endif /* USE_WS_PREFIX */
+
+/*
+ * Types
+ */
+#ifndef USE_WS_PREFIX
+#define SOCK_STREAM                1
+#define SOCK_DGRAM                 2
+#define SOCK_RAW                   3
+#define SOCK_RDM                   4
+#define SOCK_SEQPACKET             5
+#else /* USE_WS_PREFIX */
+#define WS_SOCK_STREAM             1
+#define WS_SOCK_DGRAM              2
+#define WS_SOCK_RAW                3
+#define WS_SOCK_RDM                4
+#define WS_SOCK_SEQPACKET          5
+#endif /* USE_WS_PREFIX */
+
+
+/*
+ * Protocols
+ */
+#ifndef USE_WS_PREFIX
+#define IPPROTO_IP                 0
+#define IPPROTO_ICMP               1
+#define IPPROTO_IGMP               2
+#define IPPROTO_GGP                3
+#define IPPROTO_TCP                6
+#define IPPROTO_UDP                17
+#define IPPROTO_IDP                22
+#define IPPROTO_ND                 77
+#define IPPROTO_RAW                255
+#define IPPROTO_MAX                256
+#else /* USE_WS_PREFIX */
+#define WS_IPPROTO_IP              0
+#define WS_IPPROTO_ICMP            1
+#define WS_IPPROTO_IGMP            2
+#define WS_IPPROTO_GGP             3
+#define WS_IPPROTO_TCP             6
+#define WS_IPPROTO_UDP             17
+#define WS_IPPROTO_IDP             22
+#define WS_IPPROTO_ND              77
+#define WS_IPPROTO_RAW             255
+#define WS_IPPROTO_MAX             256
+#endif /* USE_WS_PREFIX */
+
+typedef struct WS(protoent)
+{
+    char* p_name;
+    char** p_aliases;
+    short p_proto;
+} PROTOENT, *PPROTOENT, *LPPROTOENT;
+
+
+
+/*
+ * Networks
+ */
+struct WS(netent)
+{
+    char* n_name;                  /* official name of net */
+    char** n_aliases;              /* alias list */
+    short n_addrtype;              /* net address type */
+    WS(u_long) n_net;              /* network # */
+};
+
+
+/*
+ * Services
+ */
+#ifndef USE_WS_PREFIX
+#define IPPORT_ECHO                7
+#define IPPORT_DISCARD             9
+#define IPPORT_SYSTAT              11
+#define IPPORT_DAYTIME             13
+#define IPPORT_NETSTAT             15
+#define IPPORT_FTP                 21
+#define IPPORT_TELNET              23
+#define IPPORT_SMTP                25
+#define IPPORT_TIMESERVER          37
+#define IPPORT_NAMESERVER          42
+#define IPPORT_WHOIS               43
+#define IPPORT_MTP                 57
+#define IPPORT_TFTP                69
+#define IPPORT_RJE                 77
+#define IPPORT_FINGER              79
+#define IPPORT_TTYLINK             87
+#define IPPORT_SUPDUP              95
+#define IPPORT_EXECSERVER          512
+#define IPPORT_LOGINSERVER         513
+#define IPPORT_CMDSERVER           514
+#define IPPORT_EFSSERVER           520
+#define IPPORT_BIFFUDP             512
+#define IPPORT_WHOSERVER           513
+#define IPPORT_ROUTESERVER         520
+#define IPPORT_RESERVED            1024
+#else /* USE_WS_PREFIX */
+#define WS_IPPORT_ECHO             7
+#define WS_IPPORT_DISCARD          9
+#define WS_IPPORT_SYSTAT           11
+#define WS_IPPORT_DAYTIME          13
+#define WS_IPPORT_NETSTAT          15
+#define WS_IPPORT_FTP              21
+#define WS_IPPORT_TELNET           23
+#define WS_IPPORT_SMTP             25
+#define WS_IPPORT_TIMESERVER       37
+#define WS_IPPORT_NAMESERVER       42
+#define WS_IPPORT_WHOIS            43
+#define WS_IPPORT_MTP              57
+#define WS_IPPORT_TFTP             69
+#define WS_IPPORT_RJE              77
+#define WS_IPPORT_FINGER           79
+#define WS_IPPORT_TTYLINK          87
+#define WS_IPPORT_SUPDUP           95
+#define WS_IPPORT_EXECSERVER       512
+#define WS_IPPORT_LOGINSERVER      513
+#define WS_IPPORT_CMDSERVER        514
+#define WS_IPPORT_EFSSERVER        520
+#define WS_IPPORT_BIFFUDP          512
+#define WS_IPPORT_WHOSERVER        513
+#define WS_IPPORT_ROUTESERVER      520
+#define WS_IPPORT_RESERVED         1024
+#endif /* USE_WS_PREFIX */
+
+typedef struct WS(servent)
+{
+    char* s_name;                  /* official service name */
+    char** s_aliases;              /* alias list */
+    short s_port;                  /* port # */
+    char* s_proto;                 /* protocol to use */
+} SERVENT, *PSERVENT, *LPSERVENT;
+
+
+
+/*
+ * Hosts
+ */
+
+typedef struct WS(hostent)
+{
+    char* h_name;                  /* official name of host */
+    char** h_aliases;              /* alias list */
+    short h_addrtype;              /* host address type */
+    short h_length;                /* length of address */
+    char** h_addr_list;            /* list of addresses from name server */
+#define h_addr h_addr_list[0]      /* address, for backward compat */
+} HOSTENT, *PHOSTENT, *LPHOSTENT;
+
+
+/*
+ * Sockets
+ */
+
+typedef UINT_PTR SOCKET;
+
+/*
+ * This is used instead of -1, since the
+ * SOCKET type is unsigned.
+ */
+#define INVALID_SOCKET             (SOCKET)(~0)
+#define SOCKET_ERROR               (-1)
+
+typedef struct WS(sockaddr)
+{
+        WS(u_short) sa_family;
+        char        sa_data[14];
+} SOCKADDR, *PSOCKADDR, *LPSOCKADDR;
+
+typedef struct WS(linger)
+{
+    WS(u_short) l_onoff;           /* option on/off */
+    WS(u_short) l_linger;          /* linger time */
+} LINGER, *PLINGER, *LPLINGER;
+
+/*
+ * Select
+ */
+
+#ifdef WS_DEFINE_SELECT
+/* Define our own version of select and the associated types and macros */
+
+# ifndef USE_WS_PREFIX
+#  ifndef FD_SETSIZE
+#   define FD_SETSIZE              64
+#  endif
+# else
+#  ifndef WS_FD_SETSIZE
+#   define WS_FD_SETSIZE           64
+#  endif
+# endif
+
+typedef struct WS(fd_set)
+{
+    WS(u_int) fd_count;            /* how many are SET? */
+# ifndef USE_WS_PREFIX
+    SOCKET fd_array[FD_SETSIZE];   /* an array of SOCKETs */
+# else
+    SOCKET fd_array[WS_FD_SETSIZE];/* an array of SOCKETs */
+# endif
+} WS(fd_set), FD_SET, *PFD_SET, *LPFD_SET;
+
+#ifndef _TIMEVAL_DEFINED
+#define _TIMEVAL_DEFINED
+typedef struct WS(timeval)
+{
+    LONG    tv_sec;                /* seconds */
+    LONG    tv_usec;               /* and microseconds */
+} TIMEVAL, *PTIMEVAL, *LPTIMEVAL;
+#endif
+
+#define __WS_FD_CLR(fd, set, cast) do { \
+    unsigned int __i; \
+    for (__i = 0; __i < ((cast*)(set))->fd_count ; __i++) \
+    { \
+        if (((cast*)(set))->fd_array[__i] == fd) \
+        { \
+            while (__i < ((cast*)(set))->fd_count-1) \
+            { \
+                ((cast*)(set))->fd_array[__i] = \
+                    ((cast*)(set))->fd_array[__i+1]; \
+                __i++; \
+            } \
+            ((cast*)(set))->fd_count--; \
+            break; \
+        } \
+    } \
+} while(0)
+#define __WS_FD_SET1(fd, set, cast) do { \
+    if (((cast*)(set))->fd_count < FD_SETSIZE) \
+        ((cast*)(set))->fd_array[((cast*)(set))->fd_count++]=(fd); \
+} while(0)
+/* This version checks if the filedesc is already in the list, and appends it
+ * only if it's not the case
+ */
+#define __WS_FD_SET2(fd, set, cast) do { \
+    unsigned int __i; \
+    for (__i = 0; __i < ((cast*)(set))->fd_count ; __i++) \
+    { \
+        if (((cast*)(set))->fd_array[__i]==(fd)) \
+            break; \
+    } \
+    if (__i == ((cast*)(set))->fd_count && ((cast*)(set))->fd_count < FD_SETSIZE) \
+    { \
+        ((cast*)(set))->fd_count++; \
+        ((cast*)(set))->fd_array[__i]=(fd);\
+    } \
+} while(0)
+
+#ifndef __WINE_WINSOCK2__
+#define __WS_FD_SET(fd, set, cast) __WS_FD_SET1((fd),(set), cast)
+#else
+#define __WS_FD_SET(fd, set, cast) __WS_FD_SET2((fd),(set), cast)
+#endif
+
+#ifndef USE_WS_PREFIX
+#define FD_CLR(fd, set)      __WS_FD_CLR((fd),(set), fd_set)
+#define FD_SET(fd, set)      __WS_FD_SET((fd),(set), fd_set)
+#define FD_ZERO(set)         (((fd_set*)(set))->fd_count=0)
+#define FD_ISSET(fd, set)    __WSAFDIsSet((SOCKET)(fd), (fd_set*)(set))
+#else
+#define WS_FD_CLR(fd, set)   __WS_FD_CLR((fd),(set), WS_fd_set)
+#define WS_FD_SET(fd, set)   __WS_FD_SET((fd),(set), WS_fd_set)
+#define WS_FD_ZERO(set)      (((WS_fd_set*)(set))->fd_count=0)
+#define WS_FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (WS_fd_set*)(set))
+#endif
+
+int WINAPI __WSAFDIsSet(SOCKET,WS(fd_set)*);
+
+#endif /* WS_DEFINE_SELECT */
+
+/* we have to define hton/ntoh as macros to avoid conflicts with Unix headers */
+#ifndef USE_WS_PREFIX
+
+#undef htonl
+#undef htons
+#undef ntohl
+#undef ntohs
+
+#ifdef WORDS_BIGENDIAN
+
+#define htonl(l) ((u_long)(l))
+#define htons(s) ((u_short)(s))
+#define ntohl(l) ((u_long)(l))
+#define ntohs(s) ((u_short)(s))
+
+#else  /* WORDS_BIGENDIAN */
+
+static inline u_short __wine_ushort_swap(u_short s)
+{
+    return (s >> 8) | (s << 8);
+}
+static inline u_long __wine_ulong_swap(u_long l)
+{
+    return ((u_long)__wine_ushort_swap((u_short)l) << 16) | __wine_ushort_swap((u_short)(l >> 16));
+}
+#define htonl(l) __wine_ulong_swap(l)
+#define htons(s) __wine_ushort_swap(s)
+#define ntohl(l) __wine_ulong_swap(l)
+#define ntohs(s) __wine_ushort_swap(s)
+
+#endif  /* WORDS_BIGENDIAN */
+
+#endif  /* USE_WS_PREFIX */
+
+/*
+ * Internet address (old style... should be updated)
+ */
+
+#ifndef USE_WS_PREFIX
+#define IN_CLASSA_NSHIFT           24
+#define IN_CLASSA_MAX              128
+#define IN_CLASSA_NET              0xff000000
+#define IN_CLASSA_HOST             0x00ffffff
+#define IN_CLASSA(i)               (((LONG)(i) & 0x80000000) == 0)
+#define IN_CLASSB_NSHIFT           16
+#define IN_CLASSB_MAX              65536
+#define IN_CLASSB_NET              0xffff0000
+#define IN_CLASSB_HOST             0x0000ffff
+#define IN_CLASSB(i)               (((LONG)(i) & 0xc0000000) == 0x80000000)
+#define IN_CLASSC_NSHIFT           8
+#define IN_CLASSC_NET              0xffffff00
+#define IN_CLASSC_HOST             0x000000ff
+#define IN_CLASSC(i)               (((LONG)(i) & 0xe0000000) == 0xc0000000)
+#else
+#define WS_IN_CLASSA_NSHIFT        24
+#define WS_IN_CLASSA_MAX           128
+#define WS_IN_CLASSA_NET           0xff000000
+#define WS_IN_CLASSA_HOST          0x00ffffff
+#define WS_IN_CLASSA(i)            (((LONG)(i) & 0x80000000) == 0)
+#define WS_IN_CLASSB_NSHIFT        16
+#define WS_IN_CLASSB_MAX           65536
+#define WS_IN_CLASSB_NET           0xffff0000
+#define WS_IN_CLASSB_HOST          0x0000ffff
+#define WS_IN_CLASSB(i)            (((LONG)(i) & 0xc0000000) == 0x80000000)
+#define WS_IN_CLASSC_NSHIFT        8
+#define WS_IN_CLASSC_NET           0xffffff00
+#define WS_IN_CLASSC_HOST          0x000000ff
+#define WS_IN_CLASSC(i)            (((LONG)(i) & 0xe0000000) == 0xc0000000)
+#endif /* USE_WS_PREFIX */
+
+#ifndef USE_WS_PREFIX
+#define INADDR_ANY                 ((u_long)0x00000000)
+#define INADDR_LOOPBACK            0x7f000001
+#define INADDR_BROADCAST           ((u_long)0xffffffff)
+#define INADDR_NONE                0xffffffff
+#else
+#define WS_INADDR_ANY              ((WS_u_long)0x00000000)
+#define WS_INADDR_LOOPBACK         0x7f000001
+#define WS_INADDR_BROADCAST        ((WS_u_long)0xffffffff)
+#define WS_INADDR_NONE             0xffffffff
+#endif /* USE_WS_PREFIX */
+
+typedef struct WS(in_addr)
+{
+    union {
+        struct {
+            WS(u_char) s_b1,s_b2,s_b3,s_b4;
+        } S_un_b;
+        struct {
+            WS(u_short) s_w1,s_w2;
+        } S_un_w;
+        WS(u_long) S_addr;
+    } S_un;
+#ifndef USE_WS_PREFIX
+#define s_addr  S_un.S_addr
+#define s_host  S_un.S_un_b.s_b2
+#define s_net   S_un.S_un_b.s_b1
+#define s_imp   S_un.S_un_w.s_w2
+#define s_impno S_un.S_un_b.s_b4
+#define s_lh    S_un.S_un_b.s_b3
+#else
+#define WS_s_addr  S_un.S_addr
+#define WS_s_host  S_un.S_un_b.s_b2
+#define WS_s_net   S_un.S_un_b.s_b1
+#define WS_s_imp   S_un.S_un_w.s_w2
+#define WS_s_impno S_un.S_un_b.s_b4
+#define WS_s_lh    S_un.S_un_b.s_b3
+#endif /* USE_WS_PREFIX */
+} IN_ADDR, *PIN_ADDR, *LPIN_ADDR;
+
+typedef struct WS(sockaddr_in)
+{
+    short              sin_family;
+    WS(u_short)        sin_port;
+    struct WS(in_addr) sin_addr;
+    char               sin_zero[8];
+} SOCKADDR_IN, *PSOCKADDR_IN, *LPSOCKADDR_IN;
+
+/*
+ * Multicast group information
+ */
+
+#if !defined(__WINE_WINSOCK2__)
+struct WS(ip_mreq)
+{
+    struct WS(in_addr) imr_multiaddr;
+    struct WS(in_addr) imr_interface;
+};
+#endif
+
+/*
+ * WSAStartup
+ */
+#define WSADESCRIPTION_LEN      256
+#define WSASYS_STATUS_LEN       128
+
+typedef struct WS(WSAData)
+{
+    WORD                    wVersion;
+    WORD                    wHighVersion;
+    char                    szDescription[WSADESCRIPTION_LEN+1];
+    char                    szSystemStatus[WSASYS_STATUS_LEN+1];
+    WORD                    iMaxSockets;
+    WORD                    iMaxUdpDg;
+    char                   *lpVendorInfo;
+} WSADATA, *LPWSADATA;
+
+
+
+/*
+ * {get,set}sockopt
+ */
+#ifndef USE_WS_PREFIX
+#define SOL_SOCKET                 0xffff
+#define SO_DEBUG                   0x0001
+#define SO_ACCEPTCONN              0x0002
+#define SO_REUSEADDR               0x0004
+#define SO_EXCLUSIVEADDRUSE        ((u_int)(~SO_REUSEADDR))
+#define SO_KEEPALIVE               0x0008
+#define SO_DONTROUTE               0x0010
+#define SO_BROADCAST               0x0020
+#define SO_USELOOPBACK             0x0040
+#define SO_LINGER                  0x0080
+#define SO_OOBINLINE               0x0100
+#define SO_DONTLINGER              ((u_int)(~SO_LINGER))
+#define SO_SNDBUF                  0x1001
+#define SO_RCVBUF                  0x1002
+#define SO_SNDLOWAT                0x1003
+#define SO_RCVLOWAT                0x1004
+#define SO_SNDTIMEO                0x1005
+#define SO_RCVTIMEO                0x1006
+#define SO_ERROR                   0x1007
+#define SO_TYPE                    0x1008
+
+
+#define IOCPARM_MASK               0x7f
+#define IOC_VOID                   0x20000000
+#define IOC_OUT                    0x40000000
+#define IOC_IN                     0x80000000
+#define IOC_INOUT                  (IOC_IN|IOC_OUT)
+
+#define _IO(x,y)    (IOC_VOID|((x)<<8)|(y))
+#define _IOR(x,y,t) (IOC_OUT|(((UINT)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
+#define _IOW(x,y,t) (IOC_IN|(((UINT)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
+
+#else
+
+#define WS_SOL_SOCKET              0xffff
+#define WS_SO_DEBUG                0x0001
+#define WS_SO_ACCEPTCONN           0x0002
+#define WS_SO_REUSEADDR            0x0004
+#define WS_SO_EXCLUSIVEADDRUSE     ((WS_u_int)(~WS_SO_REUSEADDR))
+#define WS_SO_KEEPALIVE            0x0008
+#define WS_SO_DONTROUTE            0x0010
+#define WS_SO_BROADCAST            0x0020
+#define WS_SO_USELOOPBACK          0x0040
+#define WS_SO_LINGER               0x0080
+#define WS_SO_OOBINLINE            0x0100
+#define WS_SO_DONTLINGER           ((WS_u_int)(~WS_SO_LINGER))
+#define WS_SO_SNDBUF               0x1001
+#define WS_SO_RCVBUF               0x1002
+#define WS_SO_SNDLOWAT             0x1003
+#define WS_SO_RCVLOWAT             0x1004
+#define WS_SO_SNDTIMEO             0x1005
+#define WS_SO_RCVTIMEO             0x1006
+#define WS_SO_ERROR                0x1007
+#define WS_SO_TYPE                 0x1008
+
+#define WS_IOCPARM_MASK            0x7f
+#define WS_IOC_VOID                0x20000000
+#define WS_IOC_OUT                 0x40000000
+#define WS_IOC_IN                  0x80000000
+#define WS_IOC_INOUT               (WS_IOC_IN|WS_IOC_OUT)
+
+#define WS__IO(x,y)    (WS_IOC_VOID|((x)<<8)|(y))
+#define WS__IOR(x,y,t) (WS_IOC_OUT|(((LONG)sizeof(t)&WS_IOCPARM_MASK)<<16)|((x)<<8)|(y))
+#define WS__IOW(x,y,t) (WS_IOC_IN|(((LONG)sizeof(t)&WS_IOCPARM_MASK)<<16)|((x)<<8)|(y))
+
+#endif
+
+/* IPPROTO_TCP options */
+#ifndef USE_WS_PREFIX
+#define TCP_NODELAY                1
+#else
+#define WS_TCP_NODELAY             1
+#endif
+
+/* IPPROTO_IP options */
+#ifndef __WINE_WINSOCK2__    /* WinSock2 has different values for the IP_ constants */
+# ifndef USE_WS_PREFIX
+#  define IP_OPTIONS             1
+#  define IP_MULTICAST_IF        2
+#  define IP_MULTICAST_TTL       3
+#  define IP_MULTICAST_LOOP      4
+#  define IP_ADD_MEMBERSHIP      5
+#  define IP_DROP_MEMBERSHIP     6
+#  define IP_TTL                 7
+#  define IP_TOS                 8
+#  define IP_DONTFRAGMENT        9
+# else
+#  define WS_IP_OPTIONS          1
+#  define WS_IP_MULTICAST_IF     2
+#  define WS_IP_MULTICAST_TTL    3
+#  define WS_IP_MULTICAST_LOOP   4
+#  define WS_IP_ADD_MEMBERSHIP   5
+#  define WS_IP_DROP_MEMBERSHIP  6
+#  define WS_IP_TTL              7
+#  define WS_IP_TOS              8
+#  define WS_IP_DONTFRAGMENT     9
+# endif
+#endif
+
+
+/*
+ * Socket I/O flags (supported by spec 1.1)
+ */
+#ifndef USE_WS_PREFIX
+#define FIONREAD                   _IOR('f', 127, u_long)
+#define FIONBIO                    _IOW('f', 126, u_long)
+#define FIOASYNC                   _IOW('f', 125, u_long)
+#define SIOCSHIWAT                 _IOW('s',  0, u_long)
+#define SIOCGHIWAT                 _IOR('s',  1, u_long)
+#define SIOCSLOWAT                 _IOW('s',  2, u_long)
+#define SIOCGLOWAT                 _IOR('s',  3, u_long)
+#define SIOCATMARK                 _IOR('s',  7, u_long)
+#else
+#define WS_FIONREAD                WS__IOR('f', 127, WS_u_long)
+#define WS_FIONBIO                 WS__IOW('f', 126, WS_u_long)
+#define WS_FIOASYNC                WS__IOW('f', 125, WS_u_long)
+#define WS_SIOCSHIWAT              WS__IOW('s',  0, WS_u_long)
+#define WS_SIOCGHIWAT              WS__IOR('s',  1, WS_u_long)
+#define WS_SIOCSLOWAT              WS__IOW('s',  2, WS_u_long)
+#define WS_SIOCGLOWAT              WS__IOR('s',  3, WS_u_long)
+#define WS_SIOCATMARK              WS__IOR('s',  7, WS_u_long)
+#endif
+
+/*
+ * Maximum queue length specifiable by listen.
+ */
+#ifndef USE_WS_PREFIX
+#define SOMAXCONN                  5
+
+#define MSG_OOB                    0x0001
+#define MSG_PEEK                   0x0002
+#define MSG_DONTROUTE              0x0004
+#define MSG_PARTIAL                0x8000
+#define MSG_MAXIOVLEN              16
+#else /* USE_WS_PREFIX */
+#define WS_SOMAXCONN               5
+
+#define WS_MSG_OOB                 0x0001
+#define WS_MSG_PEEK                0x0002
+#define WS_MSG_DONTROUTE           0x0004
+#define WS_MSG_PARTIAL             0x8000
+#define WS_MSG_MAXIOVLEN           16
+#endif /* USE_WS_PREFIX */
+
+/*
+ * Define constant based on rfc883, used by gethostbyxxxx() calls.
+ */
+#ifndef USE_WS_PREFIX
+#define MAXGETHOSTSTRUCT           1024
+#else
+#define MAXGETHOSTSTRUCT           1024
+#endif
+
+
+/*
+ * Define flags to be used with the WSAAsyncSelect() call.
+ */
+#define FD_READ                    0x00000001
+#define FD_WRITE                   0x00000002
+#define FD_OOB                     0x00000004
+#define FD_ACCEPT                  0x00000008
+#define FD_CONNECT                 0x00000010
+#define FD_CLOSE                   0x00000020
+
+/* internal per-socket flags */
+#ifdef __WINESRC__
+#define FD_WINE_LISTENING          0x10000000
+#define FD_WINE_NONBLOCKING        0x20000000
+#define FD_WINE_CONNECTED          0x40000000
+#define FD_WINE_RAW                0x80000000
+#define FD_WINE_INTERNAL           0xFFFF0000
+#endif
+
+/*
+ * All Windows Sockets error constants are biased by WSABASEERR from
+ * the "normal"
+ */
+#define WSABASEERR                 10000
+/*
+ * Windows Sockets definitions of regular Microsoft C error constants
+ */
+#define WSAEINTR                   (WSABASEERR+4)
+#define WSAEBADF                   (WSABASEERR+9)
+#define WSAEACCES                  (WSABASEERR+13)
+#define WSAEFAULT                  (WSABASEERR+14)
+#define WSAEINVAL                  (WSABASEERR+22)
+#define WSAEMFILE                  (WSABASEERR+24)
+
+/*
+ * Windows Sockets definitions of regular Berkeley error constants
+ */
+#define WSAEWOULDBLOCK             (WSABASEERR+35)
+#define WSAEINPROGRESS             (WSABASEERR+36)
+#define WSAEALREADY                (WSABASEERR+37)
+#define WSAENOTSOCK                (WSABASEERR+38)
+#define WSAEDESTADDRREQ            (WSABASEERR+39)
+#define WSAEMSGSIZE                (WSABASEERR+40)
+#define WSAEPROTOTYPE              (WSABASEERR+41)
+#define WSAENOPROTOOPT             (WSABASEERR+42)
+#define WSAEPROTONOSUPPORT         (WSABASEERR+43)
+#define WSAESOCKTNOSUPPORT         (WSABASEERR+44)
+#define WSAEOPNOTSUPP              (WSABASEERR+45)
+#define WSAEPFNOSUPPORT            (WSABASEERR+46)
+#define WSAEAFNOSUPPORT            (WSABASEERR+47)
+#define WSAEADDRINUSE              (WSABASEERR+48)
+#define WSAEADDRNOTAVAIL           (WSABASEERR+49)
+#define WSAENETDOWN                (WSABASEERR+50)
+#define WSAENETUNREACH             (WSABASEERR+51)
+#define WSAENETRESET               (WSABASEERR+52)
+#define WSAECONNABORTED            (WSABASEERR+53)
+#define WSAECONNRESET              (WSABASEERR+54)
+#define WSAENOBUFS                 (WSABASEERR+55)
+#define WSAEISCONN                 (WSABASEERR+56)
+#define WSAENOTCONN                (WSABASEERR+57)
+#define WSAESHUTDOWN               (WSABASEERR+58)
+#define WSAETOOMANYREFS            (WSABASEERR+59)
+#define WSAETIMEDOUT               (WSABASEERR+60)
+#define WSAECONNREFUSED            (WSABASEERR+61)
+#define WSAELOOP                   (WSABASEERR+62)
+#define WSAENAMETOOLONG            (WSABASEERR+63)
+#define WSAEHOSTDOWN               (WSABASEERR+64)
+#define WSAEHOSTUNREACH            (WSABASEERR+65)
+#define WSAENOTEMPTY               (WSABASEERR+66)
+#define WSAEPROCLIM                (WSABASEERR+67)
+#define WSAEUSERS                  (WSABASEERR+68)
+#define WSAEDQUOT                  (WSABASEERR+69)
+#define WSAESTALE                  (WSABASEERR+70)
+#define WSAEREMOTE                 (WSABASEERR+71)
+
+/*
+ * Extended Windows Sockets error constant definitions
+ */
+#define WSASYSNOTREADY             (WSABASEERR+91)
+#define WSAVERNOTSUPPORTED         (WSABASEERR+92)
+#define WSANOTINITIALISED          (WSABASEERR+93)
+#define WSAEDISCON                 (WSABASEERR+101)
+#define WSAENOMORE                 (WSABASEERR+102)
+#define WSAECANCELLED              (WSABASEERR+103)
+#define WSAEINVALIDPROCTABLE       (WSABASEERR+104)
+#define WSAEINVALIDPROVIDER        (WSABASEERR+105)
+#define WSAEPROVIDERFAILEDINIT     (WSABASEERR+106)
+#define WSASYSCALLFAILURE          (WSABASEERR+107)
+#define WSASERVICE_NOT_FOUND       (WSABASEERR+108)
+#define WSATYPE_NOT_FOUND          (WSABASEERR+109)
+#define WSA_E_NO_MORE              (WSABASEERR+110)
+#define WSA_E_CANCELLED            (WSABASEERR+111)
+#define WSAEREFUSED                (WSABASEERR+112)
+
+/*
+ * Error return codes from gethostbyname() and gethostbyaddr()
+ * (when using the resolver). Note that these errors are
+ * retrieved via WSAGetLastError() and must therefore follow
+ * the rules for avoiding clashes with error numbers from
+ * specific implementations or language run-time systems.
+ * For this reason the codes are based at WSABASEERR+1001.
+ * Note also that [WSA]NO_ADDRESS is defined only for
+ * compatibility purposes.
+ */
+
+#ifndef USE_WS_PREFIX
+#define h_errno                    WSAGetLastError()
+#else
+#define WS_h_errno                 WSAGetLastError()
+#endif
+
+/* Authoritative Answer: Host not found */
+#define WSAHOST_NOT_FOUND          (WSABASEERR+1001)
+
+/* Non-Authoritative: Host not found, or SERVERFAIL */
+#define WSATRY_AGAIN               (WSABASEERR+1002)
+
+/* Non recoverable errors, FORMERR, REFUSED, NOTIMP */
+#define WSANO_RECOVERY             (WSABASEERR+1003)
+
+/* Valid name, no data record of requested type */
+#define WSANO_DATA                 (WSABASEERR+1004)
+
+/* no address, look for MX record */
+#define WSANO_ADDRESS              WSANO_DATA
+
+#ifndef USE_WS_PREFIX
+#define HOST_NOT_FOUND             WSAHOST_NOT_FOUND
+#define TRY_AGAIN                  WSATRY_AGAIN
+#define NO_RECOVERY                WSANO_RECOVERY
+#define NO_DATA                    WSANO_DATA
+#define NO_ADDRESS                 WSANO_ADDRESS
+#endif /* USE_WS_PREFIX */
+
+
+
+/*
+ * Windows message parameter composition and decomposition
+ * macros.
+ */
+
+/*
+ * WSAMAKEASYNCREPLY is intended for use by the Windows Sockets implementation
+ * when constructing the response to a WSAAsyncGetXByY() routine.
+ */
+#define WSAMAKEASYNCREPLY(buflen,error)     MAKELONG(buflen,error)
+/*
+ * WSAMAKESELECTREPLY is intended for use by the Windows Sockets implementation
+ * when constructing the response to WSAAsyncSelect().
+ */
+#define WSAMAKESELECTREPLY(event,error)     MAKELONG(event,error)
+/*
+ * WSAGETASYNCBUFLEN is intended for use by the Windows Sockets application
+ * to extract the buffer length from the lParam in the response
+ * to a WSAGetXByY().
+ */
+#define WSAGETASYNCBUFLEN(lParam)           LOWORD(lParam)
+/*
+ * WSAGETASYNCERROR is intended for use by the Windows Sockets application
+ * to extract the error code from the lParam in the response
+ * to a WSAGetXByY().
+ */
+#define WSAGETASYNCERROR(lParam)            HIWORD(lParam)
+/*
+ * WSAGETSELECTEVENT is intended for use by the Windows Sockets application
+ * to extract the event code from the lParam in the response
+ * to a WSAAsyncSelect().
+ */
+#define WSAGETSELECTEVENT(lParam)           LOWORD(lParam)
+/*
+ * WSAGETSELECTERROR is intended for use by the Windows Sockets application
+ * to extract the error code from the lParam in the response
+ * to a WSAAsyncSelect().
+ */
+#define WSAGETSELECTERROR(lParam)           HIWORD(lParam)
+
+
+
+/*
+ * Prototypes
+ *
+ * Remember to keep this section in sync with the
+ * "Winsock Function Typedefs" section in winsock2.h.
+ */
+#if !defined(__WINE_WINSOCK2__) || WS_API_PROTOTYPES
+HANDLE WINAPI WSAAsyncGetHostByAddr(HWND,WS(u_int),const char*,int,int,char*,int);
+HANDLE WINAPI WSAAsyncGetHostByName(HWND,WS(u_int),const char*,char*,int);
+HANDLE WINAPI WSAAsyncGetProtoByName(HWND,WS(u_int),const char*,char*,int);
+HANDLE WINAPI WSAAsyncGetProtoByNumber(HWND,WS(u_int),int,char*,int);
+HANDLE WINAPI WSAAsyncGetServByName(HWND,WS(u_int),const char*,const char*,char*,int);
+HANDLE WINAPI WSAAsyncGetServByPort(HWND,WS(u_int),int,const char*,char*,int);
+int WINAPI WSAAsyncSelect(SOCKET,HWND,WS(u_int),LONG);
+int WINAPI WSACancelAsyncRequest(HANDLE);
+int WINAPI WSACancelBlockingCall(void);
+int WINAPI WSACleanup(void);
+int WINAPI WSAGetLastError(void);
+BOOL WINAPI WSAIsBlocking(void);
+FARPROC WINAPI WSASetBlockingHook(FARPROC);
+void WINAPI WSASetLastError(int);
+int WINAPI WSAStartup(WORD,LPWSADATA);
+int WINAPI WSAUnhookBlockingHook(void);
+
+SOCKET WINAPI WS(accept)(SOCKET,struct WS(sockaddr)*,int*);
+int WINAPI WS(bind)(SOCKET,const struct WS(sockaddr)*,int);
+int WINAPI WS(closesocket)(SOCKET);
+int WINAPI WS(connect)(SOCKET,const struct WS(sockaddr)*,int);
+struct WS(hostent)* WINAPI WS(gethostbyaddr)(const char*,int,int);
+struct WS(hostent)* WINAPI WS(gethostbyname)(const char*);
+/* gethostname not defined because of conflicts with unistd.h */
+int WINAPI WS(getpeername)(SOCKET,struct WS(sockaddr)*,int*);
+struct WS(protoent)* WINAPI WS(getprotobyname)(const char*);
+struct WS(protoent)* WINAPI WS(getprotobynumber)(int);
+#ifdef WS_DEFINE_SELECT
+int WINAPI WS(select)(int,WS(fd_set)*,WS(fd_set)*,WS(fd_set)*,const struct WS(timeval)*);
+#endif
+struct WS(servent)* WINAPI WS(getservbyname)(const char*,const char*);
+struct WS(servent)* WINAPI WS(getservbyport)(int,const char*);
+int WINAPI WS(getsockname)(SOCKET,struct WS(sockaddr)*,int*);
+int WINAPI WS(getsockopt)(SOCKET,int,int,char*,int*);
+WS(u_long) WINAPI WS(inet_addr)(const char*);
+char* WINAPI WS(inet_ntoa)(struct WS(in_addr));
+int WINAPI WS(ioctlsocket)(SOCKET,LONG,WS(u_long)*);
+int WINAPI WS(listen)(SOCKET,int);
+int WINAPI WS(recv)(SOCKET,char*,int,int);
+int WINAPI WS(recvfrom)(SOCKET,char*,int,int,struct WS(sockaddr)*,int*);
+int WINAPI WS(send)(SOCKET,const char*,int,int);
+int WINAPI WS(sendto)(SOCKET,const char*,int,int,const struct WS(sockaddr)*,int);
+int WINAPI WS(setsockopt)(SOCKET,int,int,const char*,int);
+int WINAPI WS(shutdown)(SOCKET,int);
+SOCKET WINAPI WS(socket)(int,int,int);
+
+#endif /* !defined(__WINE_WINSOCK2__) || WS_API_PROTOTYPES */
+
+
+#include <poppack.h>
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifndef __WINE_WINSOCK2__
+#undef WS
+#undef WS_API_PROTOTYPES
+#undef WS_API_TYPEDEFS
+#endif
+
+#endif  /* _WINSOCKAPI_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winsock2.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winsock2.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winsock2.h	(revision 16410)
@@ -0,0 +1,747 @@
+/*
+ * Winsock 2 definitions - used for ws2_32.dll
+ *
+ * Copyright (C) 1999 Ove Kaaven
+ * Copyright (C) 2001 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ * FIXME: Still missing required Winsock 2 definitions.
+ */
+
+#ifndef _WINSOCK2API_
+#define _WINSOCK2API_
+
+/*
+ * Setup phase
+ */
+
+/* Everything common between winsock.h and winsock2.h */
+#ifndef INCL_WINSOCK_API_PROTOTYPES
+#define INCL_WINSOCK_API_PROTOTYPES 1
+#define WS_API_PROTOTYPES          1
+#else
+#define WS_API_PROTOTYPES          INCL_WINSOCK_API_PROTOTYPES
+#endif
+
+#ifndef INCL_WINSOCK_API_TYPEDEFS
+#define INCL_WINSOCK_API_TYPEDEFS  0
+#define WS_API_TYPEDEFS            0
+#else
+#define WS_API_TYPEDEFS            INCL_WINSOCK_API_TYPEDEFS
+#endif
+
+#define __WINE_WINSOCK2__
+#include <winsock.h>
+#undef  __WINE_WINSOCK2__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+
+#ifndef USE_WS_PREFIX
+#define SO_GROUP_ID                0x2001
+#define SO_GROUP_PRIORITY          0x2002
+#define SO_MAX_MSG_SIZE            0x2003
+#define SO_PROTOCOL_INFOA          0x2004
+#define SO_PROTOCOL_INFOW          0x2005
+#define SO_PROTOCOL_INFO           WINELIB_NAME_AW(WS_SO_PROTOCOL_INFO)
+#define PVD_CONFIG                 0x3001
+#define SO_CONDITIONAL_ACCEPT      0x3002
+#else
+#define WS_SO_GROUP_ID             0x2001
+#define WS_SO_GROUP_PRIORITY       0x2002
+#define WS_SO_MAX_MSG_SIZE         0x2003
+#define WS_SO_PROTOCOL_INFOA       0x2004
+#define WS_SO_PROTOCOL_INFOW       0x2005
+#define WS_SO_PROTOCOL_INFO        WINELIB_NAME_AW(WS_SO_PROTOCOL_INFO)
+#define WS_PVD_CONFIG              0x3001
+#define WS_SO_CONDITIONAL_ACCEPT   0x3002
+#endif
+
+/* protocol types */
+
+#define FROM_PROTOCOL_INFO       (-1)
+
+#ifndef USE_WS_PREFIX
+#define SOCK_STREAM                1
+#define SOCK_DGRAM                 2
+#define SOCK_RAW                   3
+#define SOCK_RDM                   4
+#define SOCK_SEQPACKET             5
+#else /* USE_WS_PREFIX */
+#define WS_SOCK_STREAM             1
+#define WS_SOCK_DGRAM              2
+#define WS_SOCK_RAW                3
+#define WS_SOCK_RDM                4
+#define WS_SOCK_SEQPACKET          5
+#endif /* USE_WS_PREFIX */
+
+/* option flags per socket */
+
+#define FD_MAX_EVENTS              10
+#define FD_READ_BIT                0
+#define FD_WRITE_BIT               1
+#define FD_OOB_BIT                 2
+#define FD_ACCEPT_BIT              3
+#define FD_CONNECT_BIT             4
+#define FD_CLOSE_BIT               5
+
+/* Constants for LPCONDITIONPROC */
+#define CF_ACCEPT                  0x0000
+#define CF_REJECT                  0x0001
+#define CF_DEFER                   0x0002
+
+/* Constants for shutdown() */
+#define SD_RECEIVE                 0x00
+#define SD_SEND                    0x01
+#define SD_BOTH                    0x02
+
+/* Constants for WSAIoctl() */
+#ifdef USE_WS_PREFIX
+#define WS_IOC_UNIX                0x00000000
+#define WS_IOC_WS2                 0x08000000
+#define WS_IOC_PROTOCOL            0x10000000
+#define WS_IOC_VENDOR              0x18000000
+#define WS_IOC_VOID                0x20000000
+#define WS_IOC_OUT                 0x40000000
+#define WS_IOC_IN                  0x80000000
+#define WS_IOC_INOUT               (WS_IOC_IN|WS_IOC_OUT)
+#define _WSAIO(x,y)                (WS_IOC_VOID|(x)|(y))
+#define _WSAIOR(x,y)               (WS_IOC_OUT|(x)|(y))
+#define _WSAIOW(x,y)               (WS_IOC_IN|(x)|(y))
+#define _WSAIORW(x,y)              (WS_IOC_INOUT|(x)|(y))
+#define WS_SIO_ASSOCIATE_HANDLE               _WSAIOW(WS_IOC_WS2,1)
+#define WS_SIO_ENABLE_CIRCULAR_QUEUEING       _WSAIO(WS_IOC_WS2,2)
+#define WS_SIO_FIND_ROUTE                     _WSAIOR(WS_IOC_WS2,3)
+#define WS_SIO_FLUSH                          _WSAIO(WS_IOC_WS2,4)
+#define WS_SIO_GET_BROADCAST_ADDRESS          _WSAIOR(WS_IOC_WS2,5)
+#define WS_SIO_GET_EXTENSION_FUNCTION_POINTER _WSAIORW(WS_IOC_WS2,6)
+#define WS_SIO_GET_QOS                        _WSAIORW(WS_IOC_WS2,7)
+#define WS_SIO_GET_GROUP_QOS                  _WSAIORW(WS_IOC_WS2,8)
+#define WS_SIO_MULTIPOINT_LOOPBACK            _WSAIOW(WS_IOC_WS2,9)
+#define WS_SIO_MULTICAST_SCOPE                _WSAIOW(WS_IOC_WS2,10)
+#define WS_SIO_SET_QOS                        _WSAIOW(WS_IOC_WS2,11)
+#define WS_SIO_SET_GROUP_QOS                  _WSAIOW(WS_IOC_WS2,12)
+#define WS_SIO_TRANSLATE_HANDLE               _WSAIORW(WS_IOC_WS2,13)
+#define WS_SIO_ROUTING_INTERFACE_QUERY        _WSAIORW(WS_IOC_WS2,20)
+#define WS_SIO_ROUTING_INTERFACE_CHANGE       _WSAIOW(WS_IOC_WS2,21)
+#define WS_SIO_ADDRESS_LIST_QUERY             _WSAIOR(WS_IOC_WS2,22)
+#define WS_SIO_ADDRESS_LIST_CHANGE            _WSAIO(WS_IOC_WS2,23)
+#define WS_SIO_QUERY_TARGET_PNP_HANDLE        _WSAIOR(WS_IOC_WS2,24)
+#define WS_SIO_GET_INTERFACE_LIST             WS__IOR('t', 127, WS_u_long)
+#else /* USE_WS_PREFIX */
+#undef IOC_VOID
+#undef IOC_IN
+#undef IOC_OUT
+#undef IOC_INOUT
+#define IOC_UNIX                   0x00000000
+#define IOC_WS2                    0x08000000
+#define IOC_PROTOCOL               0x10000000
+#define IOC_VENDOR                 0x18000000
+#define IOC_VOID                   0x20000000
+#define IOC_OUT                    0x40000000
+#define IOC_IN                     0x80000000
+#define IOC_INOUT                  (IOC_IN|IOC_OUT)
+#define _WSAIO(x,y)                (IOC_VOID|(x)|(y))
+#define _WSAIOR(x,y)               (IOC_OUT|(x)|(y))
+#define _WSAIOW(x,y)               (IOC_IN|(x)|(y))
+#define _WSAIORW(x,y)              (IOC_INOUT|(x)|(y))
+#define SIO_ASSOCIATE_HANDLE       _WSAIOW(IOC_WS2,1)
+#define SIO_ENABLE_CIRCULAR_QUEUEING _WSAIO(IOC_WS2,2)
+#define SIO_FIND_ROUTE             _WSAIOR(IOC_WS2,3)
+#define SIO_FLUSH                  _WSAIO(IOC_WS2,4)
+#define SIO_GET_BROADCAST_ADDRESS  _WSAIOR(IOC_WS2,5)
+#define SIO_GET_EXTENSION_FUNCTION_POINTER  _WSAIORW(IOC_WS2,6)
+#define SIO_GET_QOS                _WSAIORW(IOC_WS2,7)
+#define SIO_GET_GROUP_QOS          _WSAIORW(IOC_WS2,8)
+#define SIO_MULTIPOINT_LOOPBACK    _WSAIOW(IOC_WS2,9)
+#define SIO_MULTICAST_SCOPE        _WSAIOW(IOC_WS2,10)
+#define SIO_SET_QOS                _WSAIOW(IOC_WS2,11)
+#define SIO_SET_GROUP_QOS          _WSAIOW(IOC_WS2,12)
+#define SIO_TRANSLATE_HANDLE       _WSAIORW(IOC_WS2,13)
+#define SIO_ROUTING_INTERFACE_QUERY _WSAIORW(IOC_WS2,20)
+#define SIO_ROUTING_INTERFACE_CHANGE _WSAIOW(IOC_WS2,21)
+#define SIO_ADDRESS_LIST_QUERY     _WSAIOR(IOC_WS2,22)
+#define SIO_ADDRESS_LIST_CHANGE    _WSAIO(IOC_WS2,23)
+#define SIO_QUERY_TARGET_PNP_HANDLE _WSAIOR(IOC_WS2,24)
+#define SIO_GET_INTERFACE_LIST     _IOR ('t', 127, u_long)
+#endif /* USE_WS_PREFIX */
+
+/* Constants for WSAIoctl() */
+#define WSA_FLAG_OVERLAPPED        0x01
+#define WSA_FLAG_MULTIPOINT_C_ROOT 0x02
+#define WSA_FLAG_MULTIPOINT_C_LEAF 0x04
+#define WSA_FLAG_MULTIPOINT_D_ROOT 0x08
+#define WSA_FLAG_MULTIPOINT_D_LEAF 0x10
+
+/* Constants for WSAJoinLeaf() */
+#define JL_SENDER_ONLY    0x01
+#define JL_RECEIVER_ONLY  0x02
+#define JL_BOTH           0x04
+
+
+#ifndef GUID_DEFINED
+#include <guiddef.h>
+#endif
+
+#define MAX_PROTOCOL_CHAIN         7
+#define BASE_PROTOCOL              1
+#define LAYERED_PROTOCOL           0
+
+typedef struct _WSAPROTOCOLCHAIN
+{
+    int ChainLen;                  /* the length of the chain,     */
+                                   /* length = 0 means layered protocol, */
+                                   /* length = 1 means base protocol, */
+                                   /* length > 1 means protocol chain */
+    DWORD ChainEntries[MAX_PROTOCOL_CHAIN]; /* a list of dwCatalogEntryIds */
+} WSAPROTOCOLCHAIN, * LPWSAPROTOCOLCHAIN;
+
+#define XP1_CONNECTIONLESS                  0x00000001
+#define XP1_GUARANTEED_DELIVERY             0x00000002
+#define XP1_GUARANTEED_ORDER                0x00000004
+#define XP1_MESSAGE_ORIENTED                0x00000008
+#define XP1_PSEUDO_STREAM                   0x00000010
+#define XP1_GRACEFUL_CLOSE                  0x00000020
+#define XP1_EXPEDITED_DATA                  0x00000040
+#define XP1_CONNECT_DATA                    0x00000080
+#define XP1_DISCONNECT_DATA                 0x00000100
+#define XP1_SUPPORT_BROADCAST               0x00000200
+#define XP1_SUPPORT_MULTIPOINT              0x00000400
+#define XP1_MULTIPOINT_CONTROL_PLANE        0x00000800
+#define XP1_MULTIPOINT_DATA_PLANE           0x00001000
+#define XP1_QOS_SUPPORTED                   0x00002000
+#define XP1_INTERRUPT                       0x00004000
+#define XP1_UNI_SEND                        0x00008000
+#define XP1_UNI_RECV                        0x00010000
+#define XP1_IFS_HANDLES                     0x00020000
+#define XP1_PARTIAL_MESSAGE                 0x00040000
+
+#define BIGENDIAN                           0x0000
+#define LITTLEENDIAN                        0x0001
+
+#define SECURITY_PROTOCOL_NONE              0x0000
+
+#define WSAPROTOCOL_LEN  255
+typedef struct _WSAPROTOCOL_INFOA
+{
+    DWORD dwServiceFlags1;
+    DWORD dwServiceFlags2;
+    DWORD dwServiceFlags3;
+    DWORD dwServiceFlags4;
+    DWORD dwProviderFlags;
+    GUID ProviderId;
+    DWORD dwCatalogEntryId;
+    WSAPROTOCOLCHAIN ProtocolChain;
+    int iVersion;
+    int iAddressFamily;
+    int iMaxSockAddr;
+    int iMinSockAddr;
+    int iSocketType;
+    int iProtocol;
+    int iProtocolMaxOffset;
+    int iNetworkByteOrder;
+    int iSecurityScheme;
+    DWORD dwMessageSize;
+    DWORD dwProviderReserved;
+    CHAR szProtocol[WSAPROTOCOL_LEN+1];
+} WSAPROTOCOL_INFOA, * LPWSAPROTOCOL_INFOA;
+
+typedef struct _WSAPROTOCOL_INFOW
+{
+    DWORD dwServiceFlags1;
+    DWORD dwServiceFlags2;
+    DWORD dwServiceFlags3;
+    DWORD dwServiceFlags4;
+    DWORD dwProviderFlags;
+    GUID ProviderId;
+    DWORD dwCatalogEntryId;
+    WSAPROTOCOLCHAIN ProtocolChain;
+    int iVersion;
+    int iAddressFamily;
+    int iMaxSockAddr;
+    int iMinSockAddr;
+    int iSocketType;
+    int iProtocol;
+    int iProtocolMaxOffset;
+    int iNetworkByteOrder;
+    int iSecurityScheme;
+    DWORD dwMessageSize;
+    DWORD dwProviderReserved;
+    WCHAR szProtocol[WSAPROTOCOL_LEN+1];
+} WSAPROTOCOL_INFOW, *LPWSAPROTOCOL_INFOW;
+
+DECL_WINELIB_TYPE_AW(WSAPROTOCOL_INFO)
+DECL_WINELIB_TYPE_AW(LPWSAPROTOCOL_INFO)
+
+typedef struct _WSANETWORKEVENTS
+{
+    LONG lNetworkEvents;
+    int iErrorCode[FD_MAX_EVENTS];
+} WSANETWORKEVENTS, *LPWSANETWORKEVENTS;
+
+typedef struct _WSANSClassInfoA
+{
+    LPSTR lpszName;
+    DWORD dwNameSpace;
+    DWORD dwValueType;
+    DWORD dwValueSize;
+    LPVOID lpValue;
+} WSANSCLASSINFOA, *PWSANSCLASSINFOA, *LPWSANSCLASSINFOA;
+
+typedef struct _WSANSClassInfoW
+{
+    LPSTR lpszName;
+    DWORD dwNameSpace;
+    DWORD dwValueType;
+    DWORD dwValueSize;
+    LPVOID lpValue;
+} WSANSCLASSINFOW, *PWSANSCLASSINFOW, *LPWSANSCLASSINFOW;
+
+DECL_WINELIB_TYPE_AW(WSANSCLASSINFO)
+DECL_WINELIB_TYPE_AW(PWSANSCLASSINFO)
+DECL_WINELIB_TYPE_AW(LPWSANSCLASSINFO)
+
+typedef struct _WSAServiceClassInfoA
+{
+    LPGUID lpServiceClassId;
+    LPSTR lpszServiceClassName;
+    DWORD dwCount;
+    LPWSANSCLASSINFOA lpClassInfos;
+} WSASERVICECLASSINFOA, *PWSASERVICECLASSINFOA, *LPWSASERVICECLASSINFOA;
+
+typedef struct _WSAServiceClassInfoW
+{
+    LPGUID lpServiceClassId;
+    LPWSTR lpszServiceClassName;
+    DWORD dwCount;
+    LPWSANSCLASSINFOW lpClassInfos;
+} WSASERVICECLASSINFOW, *PWSASERVICECLASSINFOW, *LPWSASERVICECLASSINFOW;
+
+
+DECL_WINELIB_TYPE_AW(WSASERVICECLASSINFO)
+DECL_WINELIB_TYPE_AW(PWSASERVICECLASSINFO)
+DECL_WINELIB_TYPE_AW(LPWSASERVICECLASSINFO)
+
+typedef struct _WSABUF
+{
+    ULONG len;
+    CHAR* buf;
+} WSABUF, *LPWSABUF;
+
+#define WSAEVENT      HANDLE
+#define LPWSAEVENT    LPHANDLE
+#define WSAOVERLAPPED OVERLAPPED
+typedef struct _OVERLAPPED* LPWSAOVERLAPPED;
+
+#define WSA_IO_PENDING             (ERROR_IO_PENDING)
+#define WSA_IO_INCOMPLETE          (ERROR_IO_INCOMPLETE)
+#define WSA_INVALID_HANDLE         (ERROR_INVALID_HANDLE)
+#define WSA_INVALID_PARAMETER      (ERROR_INVALID_PARAMETER)
+#define WSA_NOT_ENOUGH_MEMORY      (ERROR_NOT_ENOUGH_MEMORY)
+#define WSA_OPERATION_ABORTED      (ERROR_OPERATION_ABORTED)
+
+#define WSA_INVALID_EVENT          ((WSAEVENT)NULL)
+#define WSA_MAXIMUM_WAIT_EVENTS    (MAXIMUM_WAIT_OBJECTS)
+#define WSA_WAIT_FAILED            ((DWORD)-1L)
+#define WSA_WAIT_EVENT_0           (WAIT_OBJECT_0)
+#define WSA_WAIT_IO_COMPLETION     (WAIT_IO_COMPLETION)
+#define WSA_WAIT_TIMEOUT           (WAIT_TIMEOUT)
+#define WSA_INFINITE               (INFINITE)
+
+typedef unsigned int   GROUP;
+#define SG_UNCONSTRAINED_GROUP   0x01
+#define SG_CONSTRAINED_GROUP     0x02
+
+/*
+ * FLOWSPEC and SERVICETYPE should eventually move to qos.h
+ */
+
+typedef ULONG   SERVICETYPE;
+
+typedef struct _FLOWSPEC {
+       unsigned int      TokenRate;
+       unsigned int      TokenBucketSize;
+       unsigned int      PeakBandwidth;
+       unsigned int      Latency;
+       unsigned int      DelayVariation;
+       SERVICETYPE       ServiceType;
+       unsigned int      MaxSduSize;
+       unsigned int      MinimumPolicedSize;
+   } FLOWSPEC, *PFLOWSPEC, *LPFLOWSPEC;
+
+typedef struct _QUALITYOFSERVICE {
+        FLOWSPEC           SendingFlowspec;
+        FLOWSPEC           ReceivingFlowspec;
+        WSABUF             ProviderSpecific;
+   } QOS, *LPQOS;
+
+typedef int (CALLBACK *LPCONDITIONPROC)
+(
+    LPWSABUF lpCallerId,
+    LPWSABUF lpCallerData,
+    LPQOS lpSQOS,
+    LPQOS lpGQOS,
+    LPWSABUF lpCalleeId,
+    LPWSABUF lpCalleeData,
+    GROUP *g,
+    DWORD dwCallbackData
+);
+
+typedef void (CALLBACK *LPWSAOVERLAPPED_COMPLETION_ROUTINE)
+(
+    DWORD dwError,
+    DWORD cbTransferred,
+    LPWSAOVERLAPPED lpOverlapped,
+    DWORD dwFlags
+);
+
+#ifndef _tagBLOB_DEFINED
+#define _tagBLOB_DEFINED
+#define _BLOB_DEFINED
+#define _LPBLOB_DEFINED
+typedef struct _BLOB {
+        ULONG   cbSize;
+        BYTE   *pBlobData;
+} BLOB, *LPBLOB;
+#endif
+
+#ifndef __CSADDR_DEFINED__
+#define __CSADDR_DEFINED__
+
+typedef struct _SOCKET_ADDRESS {
+        LPSOCKADDR      lpSockaddr;
+        INT             iSockaddrLength;
+} SOCKET_ADDRESS, *PSOCKET_ADDRESS, *LPSOCKET_ADDRESS;
+
+typedef struct _CSADDR_INFO {
+        SOCKET_ADDRESS  LocalAddr;
+        SOCKET_ADDRESS  RemoteAddr;
+        INT             iSocketType;
+        INT             iProtocol;
+} CSADDR_INFO, *PCSADDR_INFO, *LPCSADDR_INFO;
+#endif
+
+/*socket address list */
+typedef struct _SOCKET_ADDRESS_LIST {
+        INT             iAddressCount;
+        SOCKET_ADDRESS  Address[1];
+} SOCKET_ADDRESS_LIST, *LPSOCKET_ADDRESS_LIST;
+
+/*   addressfamily protocol pairs */
+typedef struct _AFPROTOCOLS {
+        INT     iAddressFamily;
+        INT     iProtocol;
+} AFPROTOCOLS, *PAFPROTOCOLS, *LPAFPROTOCOLS;
+
+/* client query definitions */
+typedef enum _WSAEcomparator {
+        COMP_EQUAL = 0,
+        COMP_NOTLESS
+} WSAECOMPARATOR, *PWSAECOMPARATOR, *LPWSAECOMPARATOR;
+
+typedef struct _WSAVersion {
+        DWORD           dwVersion;
+        WSAECOMPARATOR  ecHow;
+} WSAVERSION, *PWSAVERSION, *LPWSAVERSION;
+
+
+typedef struct _WSAQuerySetA {
+        DWORD           dwSize;
+        LPSTR           lpszServiceInstanceName;
+        LPGUID          lpServiceClassId;
+        LPWSAVERSION    lpVersion;
+        LPSTR           lpszComment;
+        DWORD           dwNameSpace;
+        LPGUID          lpNSProviderId;
+        LPSTR           lpszContext;
+        DWORD           dwNumberOfProtocols;
+        LPAFPROTOCOLS   lpafpProtocols;
+        LPSTR           lpszQueryString;
+        DWORD           dwNumberOfCsAddrs;
+        LPCSADDR_INFO   lpcsaBuffer;
+        DWORD           dwOutputFlags;
+        LPBLOB          lpBlob;
+} WSAQUERYSETA, *PWSAQUERYSETA, *LPWSAQUERYSETA;
+
+typedef struct _WSAQuerySetW {
+        DWORD           dwSize;
+        LPWSTR          lpszServiceInstanceName;
+        LPGUID          lpServiceClassId;
+        LPWSAVERSION    lpVersion;
+        LPWSTR          lpszComment;
+        DWORD           dwNameSpace;
+        LPGUID          lpNSProviderId;
+        LPWSTR          lpszContext;
+        DWORD           dwNumberOfProtocols;
+        LPAFPROTOCOLS   lpafpProtocols;
+        LPWSTR          lpszQueryString;
+        DWORD           dwNumberOfCsAddrs;
+        LPCSADDR_INFO   lpcsaBuffer;
+        DWORD           dwOutputFlags;
+        LPBLOB          lpBlob;
+} WSAQUERYSETW, *PWSAQUERYSETW, *LPWSAQUERYSETW;
+
+DECL_WINELIB_TYPE_AW(WSAQUERYSET)
+DECL_WINELIB_TYPE_AW(PWSAQUERYSET)
+DECL_WINELIB_TYPE_AW(LPWSAQUERYSET)
+
+typedef enum _WSAESETSERVICEOP {
+        RNRSERVICE_REGISTER = 0,
+        RNRSERVICE_DEREGISTER,
+        RNRSERVICE_DELETE
+} WSAESETSERVICEOP, *PWSAESETSERVICEOP, *LPWSAESETSERVICEOP;
+
+typedef struct _WSANAMESPACE_INFOA {
+        GUID    NSProviderId;
+        DWORD   dwNameSpace;
+        BOOL    fActive;
+        DWORD   dwVersion;
+        LPSTR   lpszIdentifier;
+} WSANAMESPACE_INFOA, *PWSANAMESPACE_INFOA, *LPWSANAMESPACE_INFOA;
+
+typedef struct _WSANAMESPACE_INFOW {
+        GUID    NSProviderId;
+        DWORD   dwNameSpace;
+        BOOL    fActive;
+        DWORD   dwVersion;
+        LPWSTR  lpszIdentifier;
+} WSANAMESPACE_INFOW, *PWSANAMESPACE_INFOW, *LPWSANAMESPACE_INFOW;
+
+DECL_WINELIB_TYPE_AW(WSANAMESPACE_INFO)
+DECL_WINELIB_TYPE_AW(PWSANAMESPACE_INFO)
+DECL_WINELIB_TYPE_AW(LPWSANAMESPACE_INFO)
+
+/*
+ * Winsock Function Typedefs
+ *
+ * Remember to keep this section in sync with the
+ * "Prototypes" section in winsock.h.
+ */
+#if WS_API_TYPEDEFS
+typedef HANDLE (WINAPI *LPFN_WSAASYNCGETHOSTBYADDR)(HWND,WS(u_int),const char*,int,int,char*,int);
+typedef HANDLE (WINAPI *LPFN_WSAASYNCGETHOSTBYNAME)(HWND,WS(u_int),const char*,char*,int);
+typedef HANDLE (WINAPI *LPFN_WSAASYNCGETPROTOBYNAME)(HWND,WS(u_int),const char*,char*,int);
+typedef HANDLE (WINAPI *LPFN_WSAASYNCGETPROTOBYNUMBER)(HWND,WS(u_int),int,char*,int);
+typedef HANDLE (WINAPI *LPFN_WSAASYNCGETSERVBYNAME)(HWND,WS(u_int),const char*,const char*,char*,int);
+typedef HANDLE (WINAPI *LPFN_WSAASYNCGETSERVBYPORT)(HWND,WS(u_int),int,const char*,char*,int);
+typedef int (WINAPI *LPFN_WSAASYNCSELECT)(SOCKET,HWND,WS(u_int),LONG);
+typedef int (WINAPI *LPFN_WSACANCELASYNCREQUEST)(HANDLE);
+typedef int (WINAPI *LPFN_WSACANCELBLOCKINGCALL)(void);
+typedef int (WINAPI *LPFN_WSACLEANUP)(void);
+typedef int (WINAPI *LPFN_WSAGETLASTERROR)(void);
+typedef BOOL (WINAPI *LPFN_WSAISBLOCKING)(void);
+typedef FARPROC (WINAPI *LPFN_WSASETBLOCKINGHOOK)(FARPROC);
+typedef void (WINAPI *LPFN_WSASETLASTERROR)(int);
+typedef int (WINAPI *LPFN_WSASTARTUP)(WORD,LPWSADATA);
+typedef int (WINAPI *LPFN_WSAUNHOOKBLOCKINGHOOK)(void);
+
+typedef SOCKET (WINAPI *LPFN_ACCEPT)(SOCKET,struct WS(sockaddr)*,int*);
+typedef int (WINAPI *LPFN_BIND)(SOCKET,const struct WS(sockaddr)*,int);
+typedef int (WINAPI *LPFN_CLOSESOCKET)(SOCKET);
+typedef int (WINAPI *LPFN_CONNECT)(SOCKET,const struct WS(sockaddr)*,int);
+typedef struct WS(hostent)* (WINAPI *LPFN_GETHOSTBYADDR)(const char*,int,int);
+typedef struct WS(hostent)* (WINAPI *LPFN_GETHOSTBYNAME)(const char*);
+typedef int (WINAPI *LPFN_GETHOSTNAME)(char*,int);
+typedef int (WINAPI *LPFN_GETPEERNAME)(SOCKET,struct WS(sockaddr)*,int*);
+typedef struct WS(protoent)* (WINAPI *LPFN_GETPROTOBYNAME)(const char*);
+typedef struct WS(protoent)* (WINAPI *LPFN_GETPROTOBYNUMBER)(int);
+#ifdef WS_DEFINE_SELECT
+typedef int (WINAPI* LPFN_SELECT)(int,WS(fd_set)*,WS(fd_set)*,WS(fd_set)*,const struct WS(timeval)*);
+#endif
+typedef struct WS(servent)* (WINAPI *LPFN_GETSERVBYNAME)(const char*,const char*);
+typedef struct WS(servent)* (WINAPI *LPFN_GETSERVBYPORT)(int,const char*);
+typedef int (WINAPI *LPFN_GETSOCKNAME)(SOCKET,struct WS(sockaddr)*,int*);
+typedef int (WINAPI *LPFN_GETSOCKOPT)(SOCKET,int,int,char*,int*);
+typedef WS(u_long) (WINAPI *LPFN_HTONL)(WS(u_long));
+typedef WS(u_short) (WINAPI *LPFN_HTONS)(WS(u_short));
+typedef ULONG (WINAPI *LPFN_INET_ADDR)(const char*);
+typedef char* (WINAPI *LPFN_INET_NTOA)(struct WS(in_addr);
+typedef int (WINAPI *LPFN_IOCTLSOCKET)(SOCKET,LONG,WS(u_long)*);
+typedef int (WINAPI *LPFN_LISTEN)(SOCKET,int);
+typedef WS(u_long) (WINAPI *LPFN_NTOHL)(WS(u_long));
+typedef WS(u_short) (WINAPI *LPFN_NTOHS)(WS(u_short));
+typedef int (WINAPI *LPFN_RECV)(SOCKET,char*,int,int);
+typedef int (WINAPI *LPFN_RECVFROM)(SOCKET,char*,int,int,struct WS(sockaddr)*,int*);
+typedef int (WINAPI *LPFN_SEND)(SOCKET,const char*,int,int);
+typedef int (WINAPI *LPFN_SENDTO)(SOCKET,const char*,int,int,const struct WS(sockaddr)*,int);
+typedef int (WINAPI *LPFN_SETSOCKOPT)(SOCKET,int,int,const char*,int);
+typedef int (WINAPI *LPFN_SHUTDOWN)(SOCKET,int);
+typedef SOCKET (WINAPI *LPFN_SOCKET)(int,int,int);
+#endif /* WS_API_TYPEDEFS */
+
+
+
+/*
+ * Winsock2 Prototypes
+ *
+ * Remember to keep this section in sync with the
+ * "Winsock2 Function Typedefs" section below.
+ */
+#if WS_API_PROTOTYPES
+SOCKET WINAPI WSAAccept(SOCKET,struct WS(sockaddr)*,LPINT,LPCONDITIONPROC,DWORD);
+INT WINAPI WSAAddressToStringA(LPSOCKADDR,DWORD,LPWSAPROTOCOL_INFOA,LPSTR,LPDWORD);
+INT WINAPI WSAAddressToStringW(LPSOCKADDR,DWORD,LPWSAPROTOCOL_INFOW,LPWSTR,LPDWORD);
+#define WSAAddressToString         WINELIB_NAME_AW(WSAAddressToString)
+BOOL WINAPI WSACloseEvent(WSAEVENT);
+int WINAPI WSAConnect(SOCKET,const struct WS(sockaddr)*,int,LPWSABUF,LPWSABUF,LPQOS,LPQOS);
+WSAEVENT WINAPI WSACreateEvent(void);
+INT WINAPI WSADuplicateSocketA(SOCKET,DWORD,LPWSAPROTOCOL_INFOA);
+INT WINAPI WSADuplicateSocketW(SOCKET,DWORD,LPWSAPROTOCOL_INFOW);
+#define WSADuplicateSocket         WINELIB_NAME_AW(WSADuplicateSocket)
+INT WINAPI WSAEnumNameSpaceProvidersA(LPDWORD,LPWSANAMESPACE_INFOA);
+INT WINAPI WSAEnumNameSpaceProvidersW(LPDWORD,LPWSANAMESPACE_INFOW);
+#define WSAEnumNameSpaceProviders  WINELIB_NAME_AW(WSAEnumNameSpaceProviders)
+int WINAPI WSAEnumNetworkEvents(SOCKET,WSAEVENT,LPWSANETWORKEVENTS);
+int WINAPI WSAEnumProtocolsA(LPINT,LPWSAPROTOCOL_INFOA,LPDWORD);
+int WINAPI WSAEnumProtocolsW(LPINT,LPWSAPROTOCOL_INFOW,LPDWORD);
+#define WSAEnumProtocols           WINELIB_NAME_AW(WSAEnumProtocols)
+int WINAPI WSAEventSelect(SOCKET,WSAEVENT,LONG);
+BOOL WINAPI WSAGetOverlappedResult(SOCKET,LPWSAOVERLAPPED,LPDWORD,BOOL,LPDWORD);
+BOOL WINAPI WSAGetQOSByName(SOCKET,LPWSABUF,LPQOS);
+INT WINAPI WSAGetServiceClassInfoA(LPGUID,LPGUID,LPDWORD,LPWSASERVICECLASSINFOA);
+INT WINAPI WSAGetServiceClassInfoW(LPGUID,LPGUID,LPDWORD,LPWSASERVICECLASSINFOW);
+#define WSAGetServiceClassInfo     WINELIB_NAME_AW(WSAGetServiceClassInfo)
+INT WINAPI WSAGetServiceClassNameByClassIdA(LPGUID,LPSTR,LPDWORD);
+INT WINAPI WSAGetServiceClassNameByClassIdW(LPGUID,LPWSTR,LPDWORD);
+#define WSAGetServiceClassNameByClassId WINELIB_NAME_AW(WSAGetServiceClassNameByClassId)
+int WINAPI WSAHtonl(SOCKET,WS(u_long),WS(u_long)*);
+int WINAPI WSAHtons(SOCKET,WS(u_short),WS(u_short)*);
+int WINAPI WSAInstallServiceClassA(LPWSASERVICECLASSINFOA);
+int WINAPI WSAInstallServiceClassW(LPWSASERVICECLASSINFOW);
+#define WSAInstallServiceClass     WINELIB_NAME_AW(WSAInstallServiceClass)
+int WINAPI WSAIoctl(SOCKET,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+SOCKET WINAPI WSAJoinLeaf(SOCKET,const struct WS(sockaddr)*,int,LPWSABUF,LPWSABUF,LPQOS,LPQOS,DWORD);
+INT WINAPI WSALookupServiceBeginA(LPWSAQUERYSETA,DWORD,LPHANDLE);
+INT WINAPI WSALookupServiceBeginW(LPWSAQUERYSETW,DWORD,LPHANDLE);
+#define WSALookupServiceBegin      WINELIB_NAME_AW(WSALookupServiceBegin)
+INT WINAPI WSALookupServiceEnd(HANDLE);
+INT WINAPI WSALookupServiceNextA(HANDLE,DWORD,LPDWORD,LPWSAQUERYSETA);
+INT WINAPI WSALookupServiceNextW(HANDLE,DWORD,LPDWORD,LPWSAQUERYSETW);
+#define WSALookupServiceNext       WINELIB_NAME_AW(WSALookupServiceNext) 
+int WINAPI WSANtohl(SOCKET,WS(u_long),WS(u_long)*);
+int WINAPI WSANtohs(SOCKET,WS(u_short),WS(u_short)*);
+INT WINAPI WSAProviderConfigChange(LPHANDLE,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+int WINAPI WSARecv(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+int WINAPI WSARecvDisconnect(SOCKET,LPWSABUF);
+int WINAPI WSARecvFrom(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,struct WS(sockaddr)*,LPINT,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+INT WINAPI WSARemoveServiceClass(LPGUID);
+BOOL WINAPI WSAResetEvent(WSAEVENT);
+int WINAPI WSASend(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+int WINAPI WSASendDisconnect(SOCKET,LPWSABUF);
+int WINAPI WSASendTo(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,const struct WS(sockaddr)*,int,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+BOOL WINAPI WSASetEvent(WSAEVENT);
+INT WINAPI WSASetServiceA(LPWSAQUERYSETA,WSAESETSERVICEOP,DWORD);
+INT WINAPI WSASetServiceW(LPWSAQUERYSETW,WSAESETSERVICEOP,DWORD);
+#define WSASetService   WINELIB_NAME_AW(WSASetService)
+SOCKET WINAPI WSASocketA(int,int,int,LPWSAPROTOCOL_INFOA,GROUP,DWORD);
+SOCKET WINAPI WSASocketW(int,int,int,LPWSAPROTOCOL_INFOW,GROUP,DWORD);
+#define WSASocket WINELIB_NAME_AW(WSASocket)
+INT WINAPI WSAStringToAddressA(LPSTR,INT,LPWSAPROTOCOL_INFOA,LPSOCKADDR,LPINT);
+INT WINAPI WSAStringToAddressW(LPWSTR,INT,LPWSAPROTOCOL_INFOW,LPSOCKADDR,LPINT);
+#define WSAStringToAddress WINELIB_NAME_AW(WSAStringToAddress)
+DWORD WINAPI WSAWaitForMultipleEvents(DWORD,const WSAEVENT*,BOOL,DWORD,BOOL);
+#endif /* WS_API_PROTOTYPES */
+
+
+
+/*
+ * Winsock2 Function Typedefs
+ *
+ * Remember to keep this section in sync with the
+ * "Winsock2 Prototypes" section above.
+ */
+#if WS_API_TYPEDEFS
+typedef SOCKET (WINAPI *LPFN_WSAACCEPT)(SOCKET,WS(sockaddr)*,LPINT,LPCONDITIONPROC,DWORD);
+typedef INT (WINAPI *LPFN_WSAADRESSTOSTRINGA)(LPSOCKADDR,DWORD,LPWSAPROTOCOL_INFOA,LPSTR,LPDWORD);
+typedef INT (WINAPI *LPFN_WSAADRESSTOSTRINGW)(LPSOCKADDR,DWORD,LPWSAPROTOCOL_INFOW,LPWSTR,LPDWORD);
+#define LPFN_WSAADDRESSTOSTRING    WINELIB_NAME_AW(LPFN_WSAADDRESSTOSTRING)
+typedef BOOL (WINAPI *LPFN_WSACLOSEEVENT)(WSAEVENT);
+typedef int (WINAPI *LPFN_WSACONNECT)(SOCKET,const struct WS(sockaddr)*,int,LPWSABUF,LPWSABUF,LPQOS,LPQOS);
+typedef WSAEVENT (WINAPI *LPFN_WSACREATEEVENT)(void);
+typedef INT (WINAPI *LPFN_WSADUPLICATESOCKETA)(SOCKET,DWORD,LPWSAPROTOCOL_INFOA);
+typedef INT (WINAPI *LPFN_WSADUPLICATESOCKETW)(SOCKET,DWORD,LPWSAPROTOCOL_INFOW);
+#define LPFN_WSADUPLICATESOCKET    WINELIB_NAME_AW(LPFN_WSADUPLICATESOCKET)
+typedef INT (WINAPI *LPFNWSAENUMNAMESPACEPROVIDERSA)(LPDWORD,LPWSANAMESPACE_INFOA);
+typedef INT (WINAPI *LPFNWSAENUMNAMESPACEPROVIDERSW)(LPDWORD,LPWSANAMESPACE_INFOW);
+#define LPFN_WSAENUMNAMESPACEPROVIDERS WINELIB_NAME_AW(LPFNWSAENUMNAMESPACEPROVIDERS)
+typedef int (WINAPI *LPFN_WSAENUMNETWORKEVENT)(SOCKET,WSAEVENT,LPWSANETWORKEVENTS);
+typedef int (WINAPI *LPFN_WSAENUMPROTOCOLSA)(LPINT,LPWSAPROTOCOL_INFOA,LPDWORD);
+typedef int (WINAPI *LPFN_WSAENUMPROTOCOLSW)(LPINT,LPWSAPROTOCOL_INFOW,LPDWORD);
+#define LPFN_WSAENUMPROTOCOLS      WINELIB_NAME_AW(LPFN_WSAENUMPROTOCOLS)
+typedef int (WINAPI *LPFN_WSAEVENTSELECT)(SOCKET,WSAEVENT,LONG);
+typedef BOOL (WINAPI *LPFN_WSAGETOVERLAPPEDRESULT)(SOCKET,LPWSAOVERLAPPED,LPDWORD,BOOL,LPDWORD);
+typedef BOOL (WINAPI *LPFNWSAGETQOSBYNAME)(SOCKET,LPWSABUF,LPQOS);
+typedef INT (WINAPI *LPFNWSAGETSERVICECLASSINFOA)(LPGUID,LPGUID,LPDWORD,LPWSASERVICECLASSINFOA);
+typedef INT (WINAPI *LPFNWSAGETSERVICECLASSINFOW)(LPGUID,LPGUID,LPDWORD,LPWSASERVICECLASSINFOW);
+#define LPFN_LPFNWSAGETSERVICECLASSINFO WINELIB_NAME_AW(LPFN_LPFNWSAGETSERVICECLASSINFO)
+typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA)(LPGUID,LPSTR,LPDWORD);
+typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW)(LPGUID,LPWSTR,LPDWORD);
+#define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID WINELIB_NAME_AW(LPFN_WSAGETSERVICECLASSNAMEBYCLASSID)
+typedef int (WINAPI *LPFN_WSAHTONL)(SOCKET,WS(u_long),WS(u_long)*);
+typedef int (WINAPI *LPFN_WSAHTONS)(SOCKET,WS(u_short),WS(u_short)*);
+typedef int (WINAPI LPFN_WSAINSTALLSERVICECLASSA)(LPWSASERVICECLASSINFOA);
+typedef int (WINAPI LPFN_WSAINSTALLSERVICECLASSW)(LPWSASERVICECLASSINFOW);
+typedef int (WINAPI *LPFN_WSAIOCTL)(SOCKET,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+typedef int (WINAPI *LPFN_WSAJOINLEAF)(SOCKET,const struct WS(sockaddr)*,int,LPWSABUF,LPWSABUF,LPQOS,LPQOS,DWORD);
+typedef INT (WINAPI *LPFN_WSALOOKUPSERVICEBEGINA)(LPWSAQUERYSETA,DWORD,LPHANDLE);
+typedef INT (WINAPI *LPFN_WSALOOKUPSERVICEBEGINW)(LPWSAQUERYSETW,DWORD,LPHANDLE);
+#define LPFN_WSALOOKUPSERVICEBEGIN WINELIB_NAME_AW(LPFN_WSALOOKUPSERVICEBEGIN);
+typedef INT (WINAPI *LPFN_WSALOOKUPSERVICEEND(HANDLE);
+typedef INT (WINAPI *LPFN_WSALOOKUPSERVICENEXTA)(HANDLE,DWORD,LPDWORD,LPWSAQUERYSETA);
+typedef INT (WINAPI *LPFN_WSALOOKUPSERVICENEXTW)(HANDLE,DWORD,LPDWORD,LPWSAQUERYSETW);
+#define LPFN_WSALOOKUPSERVICENEXT WINELIB_NAME_AW(LPFN_WSALOOKUPSERVICENEXT)
+typedef int (WINAPI *LPFN_WSANTOHL)(SOCKET,WS(u_long),WS(u_long)*);
+typedef int (WINAPI *LPFN_WSANTOHS)(SOCKET,WS(u_short),WS(u_short)*);
+typedef INT (WINAPI *LPFN_WSAPROVIDERCONFIGCHANGE)(LPHANDLE,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+typedef int (WINAPI *LPFN_WSARECV)(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+typedef int (WINAPI *LPFN_WSARECVDISCONNECT)(SOCKET,LPWSABUF);
+typedef int (WINAPI *LPFN_WSARECVFROM)(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,struct WS(sockaddr)*,LPINT,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+typedef INT (WINAPI *LPFN_WSAREMOVESERVICECLASS)(LPGUID);
+typedef BOOL (WINAPI *LPFN_WSARESETEVENT)(WSAEVENT);
+typedef int (WINAPI *LPFN_WSASEND)(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+typedef int (WINAPI *LPFN_WSASENDDISCONNECT)(SOCKET,LPWSABUF);
+typedef int (WINAPI *LPFN_WSASENDTO)(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,const struct WS(sockaddr)*,int,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+typedef BOOL (WINAPI *LPFN_WSASETEVENT)(WSAEVENT);
+typedef INT (WINAPI *LPFN_WSASETSERVICEA)(LPWSAQUERYSETA,WSAESETSERVICEOP,DWORD);
+typedef INT (WINAPI *LPFN_WSASETSERVICEW)(LPWSAQUERYSETW,WSAESETSERVICEOP,DWORD);
+#define LPFN_WSASETSERVICE WINELIB_NAME_AW(LPFN_WSASETSERVICE)
+typedef SOCKET (WINAPI *LPFN_WSASOCKETA)(int,int,int,LPWSAPROTOCOL_INFOA,GROUP,DWORD);
+typedef SOCKET (WINAPI *LPFN_WSASOCKETW)(int,int,int,LPWSAPROTOCOL_INFOW,GROUP,DWORD);
+typedef INT (WINAPI *LPFN_WSASTRINGTOADDRESSA)(LPSTR,INT,LPWSAPROTOCOL_INFOA,LPSOCKADDR,LPINT);
+typedef INT (WINAPI *LPFN_WSASTRINGTOADDRESSW)(LPSTR,INT,LPWSAPROTOCOL_INFOA,LPSOCKADDR,LPINT);
+#define LPFN_WSASOCKET             WINELIB_NAME_AW(LPFN_WSASOCKET)
+#define LPFN_WSASTRINGTOADDRESS    WINELIB_NAME_AW(LPFN_WSASTRINGTOADDRESS)
+typedef DWORD (WINAPI *LPFN_WSAWAITFORMULTIPLEEVENTS)(DWORD,const WSAEVENT*,BOOL,DWORD,BOOL);
+#endif /* WS_API_TYPEDEFS */
+
+
+/* Condition function return values */
+#define CF_ACCEPT       0x0000
+#define CF_REJECT       0x0001
+#define CF_DEFER        0x0002
+
+#ifdef __cplusplus
+}
+#endif
+
+#undef WS
+#undef WS_API_PROTOTYPES
+#undef WS_API_TYPEDEFS
+
+#endif /* __WINSOCK2API__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winspool.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winspool.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winspool.h	(revision 16410)
@@ -0,0 +1,1514 @@
+/* Definitions for printing
+ *
+ * Copyright 1998 Huw Davies, Andreas Mohr
+ *
+ * Portions Copyright (c) 1999 Corel Corporation
+ *                             (Paul Quinn, Albert Den Haan)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __WINE_WINSPOOL_H
+#define __WINE_WINSPOOL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* DEFINES */
+
+#define PRINTER_ATTRIBUTE_QUEUED            0x00000001
+#define PRINTER_ATTRIBUTE_DIRECT            0x00000002
+#define PRINTER_ATTRIBUTE_DEFAULT           0x00000004
+#define PRINTER_ATTRIBUTE_SHARED            0x00000008
+#define PRINTER_ATTRIBUTE_NETWORK           0x00000010
+#define PRINTER_ATTRIBUTE_HIDDEN            0x00000020
+#define PRINTER_ATTRIBUTE_LOCAL             0x00000040
+#define PRINTER_ATTRIBUTE_ENABLE_DEVQ       0x00000080
+#define PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS   0x00000100
+#define PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST 0x00000200
+#define PRINTER_ATTRIBUTE_WORK_OFFLINE      0x00000400
+#define PRINTER_ATTRIBUTE_ENABLE_BIDI       0x00000800
+#define PRINTER_ATTRIBUTE_RAW_ONLY          0x00001000
+#define PRINTER_ATTRIBUTE_PUBLISHED         0x00002000
+
+#define PRINTER_CONTROL_PAUSE      1
+#define PRINTER_CONTROL_RESUME     2
+#define PRINTER_CONTROL_PURGE      3
+#define PRINTER_CONTROL_SET_STATUS 4
+
+#define PRINTER_ENUM_DEFAULT     0x00000001
+#define PRINTER_ENUM_LOCAL       0x00000002
+#define PRINTER_ENUM_CONNECTIONS 0x00000004
+#define PRINTER_ENUM_FAVORITE    0x00000004
+#define PRINTER_ENUM_NAME        0x00000008
+#define PRINTER_ENUM_REMOTE      0x00000010
+#define PRINTER_ENUM_SHARED      0x00000020
+#define PRINTER_ENUM_NETWORK     0x00000040
+
+#define PRINTER_ENUM_EXPAND      0x00004000
+#define PRINTER_ENUM_CONTAINER   0x00008000
+
+#define PRINTER_ENUM_ICONMASK    0x00ff0000
+#define PRINTER_ENUM_ICON1       0x00010000
+#define PRINTER_ENUM_ICON2       0x00020000
+#define PRINTER_ENUM_ICON3       0x00040000
+#define PRINTER_ENUM_ICON4       0x00080000
+#define PRINTER_ENUM_ICON5       0x00100000
+#define PRINTER_ENUM_ICON6       0x00200000
+#define PRINTER_ENUM_ICON7       0x00400000
+#define PRINTER_ENUM_ICON8       0x00800000
+#define PRINTER_ENUM_HIDE        0x01000000
+
+
+/* various printer statuses */
+#define PRINTER_STATUS_PAUSED            0x00000001
+#define PRINTER_STATUS_ERROR             0x00000002
+#define PRINTER_STATUS_PENDING_DELETION  0x00000004
+#define PRINTER_STATUS_PAPER_JAM         0x00000008
+#define PRINTER_STATUS_PAPER_OUT         0x00000010
+#define PRINTER_STATUS_MANUAL_FEED       0x00000020
+#define PRINTER_STATUS_PAPER_PROBLEM     0x00000040
+#define PRINTER_STATUS_OFFLINE           0x00000080
+#define PRINTER_STATUS_IO_ACTIVE         0x00000100
+#define PRINTER_STATUS_BUSY              0x00000200
+#define PRINTER_STATUS_PRINTING          0x00000400
+#define PRINTER_STATUS_OUTPUT_BIN_FULL   0x00000800
+#define PRINTER_STATUS_NOT_AVAILABLE     0x00001000
+#define PRINTER_STATUS_WAITING           0x00002000
+#define PRINTER_STATUS_PROCESSING        0x00004000
+#define PRINTER_STATUS_INITIALIZING      0x00008000
+#define PRINTER_STATUS_WARMING_UP        0x00010000
+#define PRINTER_STATUS_TONER_LOW         0x00020000
+#define PRINTER_STATUS_NO_TONER          0x00040000
+#define PRINTER_STATUS_PAGE_PUNT         0x00080000
+#define PRINTER_STATUS_USER_INTERVENTION 0x00100000
+#define PRINTER_STATUS_OUT_OF_MEMORY     0x00200000
+#define PRINTER_STATUS_DOOR_OPEN         0x00400000
+#define PRINTER_STATUS_SERVER_UNKNOWN    0x00800000
+#define PRINTER_STATUS_POWER_SAVE        0x01000000
+
+#define NO_PRIORITY  0
+#define MAX_PRIORITY 99
+#define MIN_PRIORITY 1
+#define DEF_PRIORITY 1
+
+#define JOB_CONTROL_PAUSE             1
+#define JOB_CONTROL_RESUME            2
+#define JOB_CONTROL_CANCEL            3
+#define JOB_CONTROL_RESTART           4
+#define JOB_CONTROL_DELETE            5
+#define JOB_CONTROL_SENT_TO_PRINTER   6
+#define JOB_CONTROL_LAST_PAGE_EJECTED 7
+
+#define JOB_STATUS_PAUSED       0x0001
+#define JOB_STATUS_ERROR        0x0002
+#define JOB_STATUS_DELETING     0x0004
+#define JOB_STATUS_SPOOLING     0x0008
+#define JOB_STATUS_PRINTING     0x0010
+#define JOB_STATUS_OFFLINE      0x0020
+#define JOB_STATUS_PAPEROUT     0x0040
+#define JOB_STATUS_PRINTED      0x0080
+#define JOB_STATUS_DELETED      0x0100
+#define JOB_STATUS_BLOCKED_DEVQ 0x0200
+#define JOB_STATUS_USER_INTERVENTION 0x0400
+
+#define JOB_POSITION_UNSPECIFIED 1
+
+#define DI_CHANNEL 1
+#define DI_READ_SPOOL_JOB 3
+
+#define FORM_USER    0
+#define FORM_BUILTIN 1
+#define FORM_PRINTER 2
+
+#define PORT_TYPE_WRITE        1
+#define PORT_TYPE_READ         2
+#define PORT_TYPE_REDIRECTED   4
+#define PORT_TYPE_NET_ATTACHED 8
+
+#define PORT_STATUS_TYPE_ERROR   1
+#define PORT_STATUS_TYPE_WARNING 2
+#define PORT_STATUS_TYPE_INFO    3
+
+#define PORT_STATUS_OFFLINE           1
+#define PORT_STATUS_PAPER_JAM         2
+#define PORT_STATUS_PAPER_OUT         3
+#define PORT_STATUS_OUTPUT_BIN_FULL   4
+#define PORT_STATUS_PAPER_PROBLEM     5
+#define PORT_STATUS_NO_TONER          6
+#define PORT_STATUS_DOOR_OPEN         7
+#define PORT_STATUS_USER_INTERVENTION 8
+#define PORT_STATUS_OUT_OF_MEMORY     9
+#define PORT_STATUS_TONER_LOW         10
+#define PORT_STATUS_WARMING_UP        11
+#define PORT_STATUS_POWER_SAVE        12
+
+#define PRINTER_NOTIFY_TYPE 0
+#define JOB_NOTIFY_TYPE     1
+
+#define PRINTER_NOTIFY_FIELD_SERVER_NAME     0x00
+#define PRINTER_NOTIFY_FIELD_PRINTER_NAME    0x01
+#define PRINTER_NOTIFY_FIELD_SHARE_NAME      0x02
+#define PRINTER_NOTIFY_FIELD_PORT_NAME       0x03
+#define PRINTER_NOTIFY_FIELD_DRIVER_NAME     0x04
+#define PRINTER_NOTIFY_FIELD_COMMENT         0x05
+#define PRINTER_NOTIFY_FIELD_LOCATION        0x06
+#define PRINTER_NOTIFY_FIELD_DEVMODE         0x07
+#define PRINTER_NOTIFY_FIELD_SEPFILE         0x08
+#define PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR 0x09
+#define PRINTER_NOTIFY_FIELD_PARAMETERS      0x0a
+#define PRINTER_NOTIFY_FIELD_DATATYPE        0x0b
+#define PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR 0x0c
+#define PRINTER_NOTIFY_FIELD_ATTRIBUTES      0x0d
+#define PRINTER_NOTIFY_FIELD_PRIORITY        0x0e
+#define PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY 0x0f
+#define PRINTER_NOTIFY_FIELD_START_TIME      0x10
+#define PRINTER_NOTIFY_FIELD_UNTIL_TIME      0x11
+#define PRINTER_NOTIFY_FIELD_STATUS          0x12
+#define PRINTER_NOTIFY_FIELD_STATUS_STRING   0x13
+#define PRINTER_NOTIFY_FIELD_CJOBS           0x14
+#define PRINTER_NOTIFY_FIELD_AVERAGE_PPM     0x15
+#define PRINTER_NOTIFY_FIELD_TOTAL_PAGES     0x16
+#define PRINTER_NOTIFY_FIELD_PAGES_PRINTED   0x17
+#define PRINTER_NOTIFY_FIELD_TOTAL_BYTES     0x18
+#define PRINTER_NOTIFY_FIELD_BYTES_PRINTED   0x19
+
+#define JOB_NOTIFY_FIELD_PRINTER_NAME    0x00
+#define JOB_NOTIFY_FIELD_MACHINE_NAME    0x01
+#define JOB_NOTIFY_FIELD_PORT_NAME       0x02
+#define JOB_NOTIFY_FIELD_USER_NAME       0x03
+#define JOB_NOTIFY_FIELD_NOTIFY_NAME     0x04
+#define JOB_NOTIFY_FIELD_DATATYPE        0x05
+#define JOB_NOTIFY_FIELD_PRINT_PROCESSOR 0x06
+#define JOB_NOTIFY_FIELD_PARAMETERS      0x07
+#define JOB_NOTIFY_FIELD_DRIVER_NAME     0x08
+#define JOB_NOTIFY_FIELD_DEVMODE         0x09
+#define JOB_NOTIFY_FIELD_STATUS          0x0a
+#define JOB_NOTIFY_FIELD_STATUS_STRING   0x0b
+#define JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR 0x0c
+#define JOB_NOTIFY_FIELD_DOCUMENT        0x0d
+#define JOB_NOTIFY_FIELD_PRIORITY        0x0e
+#define JOB_NOTIFY_FIELD_POSITION        0x0f
+#define JOB_NOTIFY_FIELD_SUBMITTED       0x10
+#define JOB_NOTIFY_FIELD_START_TIME      0x11
+#define JOB_NOTIFY_FIELD_UNTIL_TIME      0x12
+#define JOB_NOTIFY_FIELD_TIME            0x13
+#define JOB_NOTIFY_FIELD_TOTAL_PAGES     0x14
+#define JOB_NOTIFY_FIELD_PAGES_PRINTED   0x15
+#define JOB_NOTIFY_FIELD_TOTAL_BYTES     0x16
+#define JOB_NOTIFY_FIELD_BYTES_PRINTED   0x17
+
+#define PRINTER_NOTIFY_OPTIONS_REFRESH   1
+#define PRINTER_NOTIFY_INFO_DISCARDED    1
+
+#define PRINTER_CHANGE_ADD_PRINTER               0x00000001
+#define PRINTER_CHANGE_SET_PRINTER               0x00000002
+#define PRINTER_CHANGE_DELETE_PRINTER            0x00000004
+#define PRINTER_CHANGE_FAILED_CONNECTION_PRINTER 0x00000008
+#define PRINTER_CHANGE_PRINTER                   0x000000ff
+#define PRINTER_CHANGE_ADD_JOB                   0x00000100
+#define PRINTER_CHANGE_SET_JOB                   0x00000200
+#define PRINTER_CHANGE_DELETE_JOB                0x00000400
+#define PRINTER_CHANGE_WRITE_JOB                 0x00000800
+#define PRINTER_CHANGE_JOB                       0x0000ff00
+#define PRINTER_CHANGE_ADD_FORM                  0x00010000
+#define PRINTER_CHANGE_SET_FORM                  0x00020000
+#define PRINTER_CHANGE_DELETE_FORM               0x00040000
+#define PRINTER_CHANGE_FORM                      0x00070000
+#define PRINTER_CHANGE_ADD_PORT                  0x00100000
+#define PRINTER_CHANGE_CONFIGURE_PORT            0x00200000
+#define PRINTER_CHANGE_DELETE_PORT               0x00400000
+#define PRINTER_CHANGE_PORT                      0x00700000
+#define PRINTER_CHANGE_ADD_PRINT_PROCESSOR       0x01000000
+#define PRINTER_CHANGE_DELETE_PRINTER_PROCESSOR  0x04000000
+#define PRINTER_CHANGE_PRINT_PROCESSOR           0x07000000
+#define PRINTER_CHANGE_ADD_PRINTER_DRIVER        0x10000000
+#define PRINTER_CHANGE_SET_PRINTER_DRIVER        0x20000000
+#define PRINTER_CHANGE_DELETE_PRINTER_DRIVER     0x40000000
+#define PRINTER_CHANGE_PRINTER_DRIVER            0x70000000
+#define PRINTER_CHANGE_TIMEOUT                   0x80000000
+#define PRINTER_CHANGE_ALL                       0x7777ffff
+
+#define PRINTER_ERROR_INFORMATION   0x80000000
+#define PRINTER_ERROR_WARNING       0x40000000
+#define PRINTER_ERROR_SEVERE        0x20000000
+
+#define PRINTER_ERROR_OUTODPAPER    0x00000001
+#define PRINTER_ERROR_JAM           0x00000002
+#define PRINTER_ERROR_OUTOFTONER    0x00000004
+
+/* Access Rights for Printserver, Printers and Printjobs */
+#define SERVER_ACCESS_ADMINISTER    0x00000001
+#define SERVER_ACCESS_ENUMERATE     0x00000002
+#define SERVER_READ        (STANDARD_RIGHTS_READ | SERVER_ACCESS_ENUMERATE)
+#define SERVER_WRITE       (STANDARD_RIGHTS_WRITE | \
+                            SERVER_ACCESS_ADMINISTER | SERVER_ACCESS_ENUMERATE)
+#define SERVER_EXECUTE     (STANDARD_RIGHTS_EXECUTE |  SERVER_ACCESS_ENUMERATE)
+#define SERVER_ALL_ACCESS  (STANDARD_RIGHTS_REQUIRED | \
+                            SERVER_ACCESS_ADMINISTER | SERVER_ACCESS_ENUMERATE)
+
+#define PRINTER_ACCESS_ADMINISTER   0x00000004
+#define PRINTER_ACCESS_USE          0x00000008
+#define PRINTER_READ        (STANDARD_RIGHTS_READ | PRINTER_ACCESS_USE)
+#define PRINTER_WRITE       (STANDARD_RIGHTS_WRITE | PRINTER_ACCESS_USE)
+#define PRINTER_EXECUTE     (STANDARD_RIGHTS_EXECUTE | PRINTER_ACCESS_USE)
+#define PRINTER_ALL_ACCESS  (STANDARD_RIGHTS_REQUIRED | \
+                             PRINTER_ACCESS_ADMINISTER | PRINTER_ACCESS_USE)
+
+#define JOB_ACCESS_ADMINISTER       0x00000010
+#define JOB_READ            (STANDARD_RIGHTS_READ | JOB_ACCESS_ADMINISTER)
+#define JOB_WRITE           (STANDARD_RIGHTS_WRITE | JOB_ACCESS_ADMINISTER)
+#define JOB_EXECUTE         (STANDARD_RIGHTS_EXECUTE | JOB_ACCESS_ADMINISTER)
+#define JOB_ALL_ACCESS      (STANDARD_RIGHTS_REQUIRED | JOB_ACCESS_ADMINISTER)
+
+
+/* Flags for printer drivers */
+#define DRIVER_KERNELMODE       0x00000001
+#define DRIVER_USERMODE         0x00000002
+
+#define APD_STRICT_UPGRADE      0x00000001
+#define APD_STRICT_DOWNGRADE    0x00000002
+#define APD_COPY_ALL_FILES      0x00000004
+#define APD_COPY_NEW_FILES      0x00000008
+#define APD_COPY_FROM_DIRECTORY 0x00000010
+
+#define DPD_DELETE_UNUSED_FILES     0x00000001
+#define DPD_DELETE_SPECIFIC_VERSION 0x00000002
+#define DPD_DELETE_ALL_FILES        0x00000004
+
+/* dwAction for PRINTER_INFO_7 */
+#define DSPRINT_PUBLISH     0x00000001
+#define DSPRINT_UPDATE      0x00000002
+#define DSPRINT_UNPUBLISH   0x00000004
+#define DSPRINT_REPUBLISH   0x00000008
+#define DSPRINT_PENDING     0x80000000
+
+/* ##################################### */
+
+/* TYPES */
+typedef struct _PRINTER_DEFAULTSA {
+  LPSTR        pDatatype;
+  LPDEVMODEA pDevMode;
+  ACCESS_MASK  DesiredAccess;
+} PRINTER_DEFAULTSA, *LPPRINTER_DEFAULTSA;
+
+typedef struct _PRINTER_DEFAULTSW {
+  LPWSTR       pDatatype;
+  LPDEVMODEW pDevMode;
+  ACCESS_MASK  DesiredAccess;
+} PRINTER_DEFAULTSW, *LPPRINTER_DEFAULTSW;
+
+DECL_WINELIB_TYPE_AW(PRINTER_DEFAULTS)
+DECL_WINELIB_TYPE_AW(LPPRINTER_DEFAULTS)
+
+typedef struct _DRIVER_INFO_1A {
+  LPSTR     pName;
+} DRIVER_INFO_1A, *PDRIVER_INFO_1A, *LPDRIVER_INFO_1A;
+
+typedef struct _DRIVER_INFO_1W {
+  LPWSTR    pName;
+} DRIVER_INFO_1W, *PDRIVER_INFO_1W, *LPDRIVER_INFO_1W;
+
+DECL_WINELIB_TYPE_AW(DRIVER_INFO_1)
+DECL_WINELIB_TYPE_AW(PDRIVER_INFO_1)
+DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_1)
+
+typedef struct _DRIVER_INFO_2A {
+  DWORD     cVersion;
+  LPSTR     pName;
+  LPSTR     pEnvironment;
+  LPSTR     pDriverPath;
+  LPSTR     pDataFile;
+  LPSTR     pConfigFile;
+} DRIVER_INFO_2A, *PDRIVER_INFO_2A, *LPDRIVER_INFO_2A;
+
+typedef struct _DRIVER_INFO_2W {
+  DWORD     cVersion;
+  LPWSTR    pName;
+  LPWSTR    pEnvironment;
+  LPWSTR    pDriverPath;
+  LPWSTR    pDataFile;
+  LPWSTR    pConfigFile;
+} DRIVER_INFO_2W, *PDRIVER_INFO_2W, *LPDRIVER_INFO_2W;
+
+DECL_WINELIB_TYPE_AW(DRIVER_INFO_2)
+DECL_WINELIB_TYPE_AW(PDRIVER_INFO_2)
+DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_2)
+
+typedef struct _DRIVER_INFO_3A {
+  DWORD cVersion;
+  LPSTR pName;
+  LPSTR pEnvironment;
+  LPSTR pDriverPath;
+  LPSTR pDataFile;
+  LPSTR pConfigFile;
+  LPSTR pHelpFile;
+  LPSTR pDependentFiles;
+  LPSTR pMonitorName;
+  LPSTR pDefaultDataType;
+} DRIVER_INFO_3A, *PDRIVER_INFO_3A, *LPDRIVER_INFO_3A;
+
+typedef struct _DRIVER_INFO_3W {
+  DWORD cVersion;
+  LPWSTR pName;
+  LPWSTR pEnvironment;
+  LPWSTR pDriverPath;
+  LPWSTR pDataFile;
+  LPWSTR pConfigFile;
+  LPWSTR pHelpFile;
+  LPWSTR pDependentFiles;
+  LPWSTR pMonitorName;
+  LPWSTR pDefaultDataType;
+} DRIVER_INFO_3W, *PDRIVER_INFO_3W, *LPDRIVER_INFO_3W;
+
+DECL_WINELIB_TYPE_AW(DRIVER_INFO_3)
+DECL_WINELIB_TYPE_AW(PDRIVER_INFO_3)
+DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_3)
+
+typedef struct _DRIVER_INFO_4A {
+  DWORD cVersion;
+  LPSTR pName;
+  LPSTR pEnvironment;
+  LPSTR pDriverPath;
+  LPSTR pDataFile;
+  LPSTR pConfigFile;
+  LPSTR pHelpFile;
+  LPSTR pDependentFiles;
+  LPSTR pMonitorName;
+  LPSTR pDefaultDataType;
+  LPSTR pszzPreviousNames;
+} DRIVER_INFO_4A, *PDRIVER_INFO_4A, *LPDRIVER_INFO_4A;
+
+typedef struct _DRIVER_INFO_4W {
+  DWORD cVersion;
+  LPWSTR pName;
+  LPWSTR pEnvironment;
+  LPWSTR pDriverPath;
+  LPWSTR pDataFile;
+  LPWSTR pConfigFile;
+  LPWSTR pHelpFile;
+  LPWSTR pDependentFiles;
+  LPWSTR pMonitorName;
+  LPWSTR pDefaultDataType;
+  LPWSTR pszzPreviousNames;
+} DRIVER_INFO_4W, *PDRIVER_INFO_4W, *LPDRIVER_INFO_4W;
+
+DECL_WINELIB_TYPE_AW(DRIVER_INFO_4)
+DECL_WINELIB_TYPE_AW(PDRIVER_INFO_4)
+DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_4)
+
+
+typedef struct _DRIVER_INFO_5A {
+  DWORD cVersion;
+  LPSTR pName;
+  LPSTR pEnvironment;
+  LPSTR pDriverPath;
+  LPSTR pDataFile;
+  LPSTR pConfigFile;
+  DWORD dwDriverAttributes;
+  DWORD dwConfigVersion;
+  DWORD dwDriverVersion;
+} DRIVER_INFO_5A, *PDRIVER_INFO_5A, *LPDRIVER_INFO_5A;
+
+typedef struct _DRIVER_INFO_5W {
+  DWORD  cVersion;
+  LPWSTR pName;
+  LPWSTR pEnvironment;
+  LPWSTR pDriverPath;
+  LPWSTR pDataFile;
+  LPWSTR pConfigFile;
+  DWORD  dwDriverAttributes;
+  DWORD  dwConfigVersion;
+  DWORD  dwDriverVersion;
+} DRIVER_INFO_5W, *PDRIVER_INFO_5W, *LPDRIVER_INFO_5W;
+
+DECL_WINELIB_TYPE_AW(DRIVER_INFO_5)
+DECL_WINELIB_TYPE_AW(PDRIVER_INFO_5)
+DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_5)
+
+typedef struct _DRIVER_INFO_6A {
+  DWORD     cVersion;
+  LPSTR     pName;
+  LPSTR     pEnvironment;
+  LPSTR     pDriverPath;
+  LPSTR     pDataFile;
+  LPSTR     pConfigFile;
+  LPSTR     pHelpFile;
+  LPSTR     pDependentFiles;
+  LPSTR     pMonitorName;
+  LPSTR     pDefaultDataType;
+  LPSTR     pszzPreviousNames;
+  FILETIME  ftDriverDate;
+  DWORDLONG dwlDriverVersion;
+  LPSTR     pszMfgName;
+  LPSTR     pszOEMUrl;
+  LPSTR     pszHardwareID;
+  LPSTR     pszProvider;
+} DRIVER_INFO_6A, *PDRIVER_INFO_6A, *LPDRIVER_INFO_6A;
+
+typedef struct _DRIVER_INFO_6W {
+  DWORD     cVersion;
+  LPWSTR    pName;
+  LPWSTR    pEnvironment;
+  LPWSTR    pDriverPath;
+  LPWSTR    pDataFile;
+  LPWSTR    pConfigFile;
+  LPWSTR    pHelpFile;
+  LPWSTR    pDependentFiles;
+  LPWSTR    pMonitorName;
+  LPWSTR    pDefaultDataType;
+  LPWSTR    pszzPreviousNames;
+  FILETIME  ftDriverDate;
+  DWORDLONG dwlDriverVersion;
+  LPWSTR    pszMfgName;
+  LPWSTR    pszOEMUrl;
+  LPWSTR    pszHardwareID;
+  LPWSTR    pszProvider;
+} DRIVER_INFO_6W, *PDRIVER_INFO_6W, *LPDRIVER_INFO_6W;
+
+DECL_WINELIB_TYPE_AW(DRIVER_INFO_6)
+DECL_WINELIB_TYPE_AW(PDRIVER_INFO_6)
+DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_6)
+
+/* DRIVER_INFO_7 is not defined in native winspool.h and not found in the www */
+
+typedef struct _DRIVER_INFO_8A {
+  DWORD     cVersion;
+  LPSTR     pName;
+  LPSTR     pEnvironment;
+  LPSTR     pDriverPath;
+  LPSTR     pDataFile;
+  LPSTR     pConfigFile;
+  LPSTR     pHelpFile;
+  LPSTR     pDependentFiles;
+  LPSTR     pMonitorName;
+  LPSTR     pDefaultDataType;
+  LPSTR     pszzPreviousNames;
+  FILETIME  ftDriverDate;
+  DWORDLONG dwlDriverVersion;
+  LPSTR     pszMfgName;
+  LPSTR     pszOEMUrl;
+  LPSTR     pszHardwareID;
+  LPSTR     pszProvider;
+  LPSTR     pszPrintProcessor;
+  LPSTR     pszVendorSetup;
+  LPSTR     pszzColorProfiles;
+  LPSTR     pszInfPath;
+  DWORD     dwPrinterDriverAttributes;
+  LPSTR     pszzCoreDriverDependencies;
+  FILETIME  ftMinInboxDriverVerDate;
+  DWORDLONG dwlMinInboxDriverVerVersion;
+} DRIVER_INFO_8A, *PDRIVER_INFO_8A, *LPDRIVER_INFO_8A;
+
+typedef struct _DRIVER_INFO_8W {
+  DWORD     cVersion;
+  LPWSTR    pName;
+  LPWSTR    pEnvironment;
+  LPWSTR    pDriverPath;
+  LPWSTR    pDataFile;
+  LPWSTR    pConfigFile;
+  LPWSTR    pHelpFile;
+  LPWSTR    pDependentFiles;
+  LPWSTR    pMonitorName;
+  LPWSTR    pDefaultDataType;
+  LPWSTR    pszzPreviousNames;
+  FILETIME  ftDriverDate;
+  DWORDLONG dwlDriverVersion;
+  LPWSTR    pszMfgName;
+  LPWSTR    pszOEMUrl;
+  LPWSTR    pszHardwareID;
+  LPWSTR    pszProvider;
+  LPWSTR    pszPrintProcessor;
+  LPWSTR    pszVendorSetup;
+  LPWSTR    pszzColorProfiles;
+  LPWSTR    pszInfPath;
+  DWORD     dwPrinterDriverAttributes;
+  LPWSTR    pszzCoreDriverDependencies;
+  FILETIME  ftMinInboxDriverVerDate;
+  DWORDLONG dwlMinInboxDriverVerVersion;
+} DRIVER_INFO_8W, *PDRIVER_INFO_8W, *LPDRIVER_INFO_8W;
+
+DECL_WINELIB_TYPE_AW(DRIVER_INFO_8)
+DECL_WINELIB_TYPE_AW(PDRIVER_INFO_8)
+DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_8)
+
+
+typedef struct _PRINTER_INFO_1A {
+  DWORD   Flags;
+  LPSTR   pDescription;
+  LPSTR   pName;
+  LPSTR   pComment;
+} PRINTER_INFO_1A, *PPRINTER_INFO_1A, *LPPRINTER_INFO_1A;
+
+typedef struct _PRINTER_INFO_1W {
+  DWORD   Flags;
+  LPWSTR  pDescription;
+  LPWSTR  pName;
+  LPWSTR  pComment;
+} PRINTER_INFO_1W, *PPRINTER_INFO_1W, *LPPRINTER_INFO_1W;
+
+DECL_WINELIB_TYPE_AW(PRINTER_INFO_1)
+DECL_WINELIB_TYPE_AW(PPRINTER_INFO_1)
+DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_1)
+
+/* FIXME: winspool.h declares some structure members with the name Status.
+ * unfortunately <X11/ICE/ICElib.h> #defines Status to the type 'int'
+ * therefore the following hack */
+#ifndef Status
+
+typedef struct _PRINTER_INFO_2A {
+  LPSTR     pServerName;
+  LPSTR     pPrinterName;
+  LPSTR     pShareName;
+  LPSTR     pPortName;
+  LPSTR     pDriverName;
+  LPSTR     pComment;
+  LPSTR     pLocation;
+  LPDEVMODEA pDevMode;
+  LPSTR     pSepFile;
+  LPSTR     pPrintProcessor;
+  LPSTR     pDatatype;
+  LPSTR     pParameters;
+  PSECURITY_DESCRIPTOR pSecurityDescriptor;
+  DWORD   Attributes;
+  DWORD   Priority;
+  DWORD   DefaultPriority;
+  DWORD   StartTime;
+  DWORD   UntilTime;
+  DWORD   Status;
+  DWORD   cJobs;
+  DWORD   AveragePPM;
+} PRINTER_INFO_2A, *PPRINTER_INFO_2A, *LPPRINTER_INFO_2A;
+
+typedef struct _PRINTER_INFO_2W {
+  LPWSTR    pServerName;
+  LPWSTR    pPrinterName;
+  LPWSTR    pShareName;
+  LPWSTR    pPortName;
+  LPWSTR    pDriverName;
+  LPWSTR    pComment;
+  LPWSTR    pLocation;
+  LPDEVMODEW pDevMode;
+  LPWSTR    pSepFile;
+  LPWSTR    pPrintProcessor;
+  LPWSTR    pDatatype;
+  LPWSTR    pParameters;
+  PSECURITY_DESCRIPTOR pSecurityDescriptor;
+  DWORD   Attributes;
+  DWORD   Priority;
+  DWORD   DefaultPriority;
+  DWORD   StartTime;
+  DWORD   UntilTime;
+  DWORD   Status;
+  DWORD   cJobs;
+  DWORD   AveragePPM;
+} PRINTER_INFO_2W, *PPRINTER_INFO_2W, *LPPRINTER_INFO_2W;
+
+DECL_WINELIB_TYPE_AW(PRINTER_INFO_2)
+DECL_WINELIB_TYPE_AW(PPRINTER_INFO_2)
+DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_2)
+
+typedef struct _PRINTER_INFO_3 {
+  PSECURITY_DESCRIPTOR pSecurityDescriptor;
+} PRINTER_INFO_3, *PPRINTER_INFO_3, *LPPRINTER_INFO_3;
+
+typedef struct _PRINTER_INFO_4A {
+  LPSTR     pPrinterName;
+  LPSTR     pServerName;
+  DWORD     Attributes;
+} PRINTER_INFO_4A, *PPRINTER_INFO_4A, *LPPRINTER_INFO_4A;
+
+typedef struct _PRINTER_INFO_4W {
+  LPWSTR     pPrinterName;
+  LPWSTR     pServerName;
+  DWORD     Attributes;
+} PRINTER_INFO_4W, *PPRINTER_INFO_4W, *LPPRINTER_INFO_4W;
+
+DECL_WINELIB_TYPE_AW(PRINTER_INFO_4)
+DECL_WINELIB_TYPE_AW(PPRINTER_INFO_4)
+DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_4)
+
+typedef struct _PRINTER_INFO_5A {
+  LPSTR     pPrinterName;
+  LPSTR     pPortName;
+  DWORD     Attributes;
+  DWORD     DeviceNotSelectedTimeout;
+  DWORD     TransmissionRetryTimeout;
+} PRINTER_INFO_5A, *PPRINTER_INFO_5A, *LPPRINTER_INFO_5A;
+
+typedef struct _PRINTER_INFO_5W {
+  LPWSTR    pPrinterName;
+  LPWSTR    pPortName;
+  DWORD     Attributes;
+  DWORD     DeviceNotSelectedTimeout;
+  DWORD     TransmissionRetryTimeout;
+} PRINTER_INFO_5W, *PPRINTER_INFO_5W, *LPPRINTER_INFO_5W;
+
+DECL_WINELIB_TYPE_AW(PRINTER_INFO_5)
+DECL_WINELIB_TYPE_AW(PPRINTER_INFO_5)
+DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_5)
+
+typedef struct _PRINTER_INFO_6 {
+  DWORD dwStatus;
+} PRINTER_INFO_6, *PPRINTER_INFO_6, *LPPRINTER_INFO_6;
+
+typedef struct _PRINTER_INFO_7A {
+  LPSTR     pszObjectGUID;
+  DWORD     dwAction;
+} PRINTER_INFO_7A, *PPRINTER_INFO_7A, *LPPRINTER_INFO_7A;
+
+typedef struct _PRINTER_INFO_7W {
+  LPWSTR    pszObjectGUID;
+  DWORD     dwAction;
+} PRINTER_INFO_7W, *PPRINTER_INFO_7W, *LPPRINTER_INFO_7W;
+
+DECL_WINELIB_TYPE_AW(PRINTER_INFO_7)
+DECL_WINELIB_TYPE_AW(PPRINTER_INFO_7)
+DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_7)
+
+typedef struct _PRINTER_INFO_8A {
+  LPDEVMODEA pDevMode;
+} PRINTER_INFO_8A, *PPRINTER_INFO_8A, *LPPRINTER_INFO_8A;
+
+typedef struct _PRINTER_INFO_8W {
+  LPDEVMODEW pDevMode;
+} PRINTER_INFO_8W, *PPRINTER_INFO_8W, *LPPRINTER_INFO_8W;
+
+DECL_WINELIB_TYPE_AW(PRINTER_INFO_8)
+DECL_WINELIB_TYPE_AW(PPRINTER_INFO_8)
+DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_8)
+
+typedef struct _PRINTER_INFO_9A {
+  LPDEVMODEA pDevMode;
+} PRINTER_INFO_9A, *PPRINTER_INFO_9A, *LPPRINTER_INFO_9A;
+
+typedef struct _PRINTER_INFO_9W {
+  LPDEVMODEW pDevMode;
+} PRINTER_INFO_9W, *PPRINTER_INFO_9W, *LPPRINTER_INFO_9W;
+
+DECL_WINELIB_TYPE_AW(PRINTER_INFO_9)
+DECL_WINELIB_TYPE_AW(PPRINTER_INFO_9)
+DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_9)
+
+
+typedef struct _JOB_INFO_1A {
+  DWORD JobId;
+  LPSTR pPrinterName;
+  LPSTR pMachineName;
+  LPSTR pUserName;
+  LPSTR pDocument;
+  LPSTR pDatatype;
+  LPSTR pStatus;
+  DWORD Status;
+  DWORD Priority;
+  DWORD Position;
+  DWORD TotalPages;
+  DWORD PagesPrinted;
+  SYSTEMTIME Submitted;
+} JOB_INFO_1A, *PJOB_INFO_1A, *LPJOB_INFO_1A;
+
+typedef struct _JOB_INFO_1W {
+  DWORD JobId;
+  LPWSTR pPrinterName;
+  LPWSTR pMachineName;
+  LPWSTR pUserName;
+  LPWSTR pDocument;
+  LPWSTR pDatatype;
+  LPWSTR pStatus;
+  DWORD Status;
+  DWORD Priority;
+  DWORD Position;
+  DWORD TotalPages;
+  DWORD PagesPrinted;
+  SYSTEMTIME Submitted;
+} JOB_INFO_1W, *PJOB_INFO_1W, *LPJOB_INFO_1W;
+
+DECL_WINELIB_TYPE_AW(JOB_INFO_1)
+DECL_WINELIB_TYPE_AW(PJOB_INFO_1)
+DECL_WINELIB_TYPE_AW(LPJOB_INFO_1)
+
+typedef struct _JOB_INFO_2A {
+  DWORD JobId;
+  LPSTR pPrinterName;
+  LPSTR pMachineName;
+  LPSTR pUserName;
+  LPSTR pDocument;
+  LPSTR pNotifyName;
+  LPSTR pDatatype;
+  LPSTR pPrintProcessor;
+  LPSTR pParameters;
+  LPSTR pDriverName;
+  LPDEVMODEA pDevMode;
+  LPSTR pStatus;
+  PSECURITY_DESCRIPTOR pSecurityDescriptor;
+  DWORD Status;
+  DWORD Priority;
+  DWORD Position;
+  DWORD StartTime;
+  DWORD UntilTime;
+  DWORD TotalPages;
+  DWORD Size;
+  SYSTEMTIME Submitted;
+  DWORD Time;
+  DWORD PagesPrinted;
+} JOB_INFO_2A, *PJOB_INFO_2A, *LPJOB_INFO_2A;
+
+typedef struct _JOB_INFO_2W {
+  DWORD JobId;
+  LPWSTR pPrinterName;
+  LPWSTR pMachineName;
+  LPWSTR pUserName;
+  LPWSTR pDocument;
+  LPWSTR pNotifyName;
+  LPWSTR pDatatype;
+  LPWSTR pPrintProcessor;
+  LPWSTR pParameters;
+  LPWSTR pDriverName;
+  LPDEVMODEW pDevMode;
+  LPWSTR pStatus;
+  PSECURITY_DESCRIPTOR pSecurityDescriptor;
+  DWORD Status;
+  DWORD Priority;
+  DWORD Position;
+  DWORD StartTime;
+  DWORD UntilTime;
+  DWORD TotalPages;
+  DWORD Size;
+  SYSTEMTIME Submitted;
+  DWORD Time;
+  DWORD PagesPrinted;
+} JOB_INFO_2W, *PJOB_INFO_2W, *LPJOB_INFO_2W;
+
+DECL_WINELIB_TYPE_AW(JOB_INFO_2)
+DECL_WINELIB_TYPE_AW(PJOB_INFO_2)
+DECL_WINELIB_TYPE_AW(LPJOB_INFO_2)
+
+typedef struct _JOB_INFO_3 {
+  DWORD JobId;
+  DWORD NextJobId;
+  DWORD Reserved;
+} JOB_INFO_3, *PJOB_INFO_3, *LPJOB_INFO_3;
+
+typedef struct _ADDJOB_INFO_1A {
+  LPSTR Path;
+  DWORD JobId;
+} ADDJOB_INFO_1A, *PADDJOB_INFO_1A, *LPADDJOB_INFO_1A;
+
+typedef struct _ADDJOB_INFO_1W {
+  LPWSTR Path;
+  DWORD  JobId;
+} ADDJOB_INFO_1W, *PADDJOB_INFO_1W, *LPADDJOB_INFO_1W;
+
+DECL_WINELIB_TYPE_AW(ADDJOB_INFO_1)
+DECL_WINELIB_TYPE_AW(PADDJOB_INFO_1)
+DECL_WINELIB_TYPE_AW(LPADDJOB_INFO_1)
+
+typedef struct _DOC_INFO_1A {
+  LPSTR pDocName;
+  LPSTR pOutputFile;
+  LPSTR pDatatype;
+} DOC_INFO_1A, *PDOC_INFO_1A, *LPDOC_INFO_1A;
+
+typedef struct _DOC_INFO_1W {
+  LPWSTR pDocName;
+  LPWSTR pOutputFile;
+  LPWSTR pDatatype;
+} DOC_INFO_1W, *PDOC_INFO_1W, *LPDOC_INFO_1W;
+
+DECL_WINELIB_TYPE_AW(DOC_INFO_1)
+DECL_WINELIB_TYPE_AW(PDOC_INFO_1)
+DECL_WINELIB_TYPE_AW(LPDOC_INFO_1)
+
+typedef struct _DOC_INFO_2A {
+  LPSTR pDocName;
+  LPSTR pOutputFile;
+  LPSTR pDatatype;
+  DWORD dwMode;
+  DWORD JobId;
+} DOC_INFO_2A, *PDOC_INFO_2A, *LPDOC_INFO_2A;
+
+typedef struct _DOC_INFO_2W {
+  LPWSTR pDocName;
+  LPWSTR pOutputFile;
+  LPWSTR pDatatype;
+  DWORD dwMode;
+  DWORD JobId;
+} DOC_INFO_2W, *PDOC_INFO_2W, *LPDOC_INFO_2W;
+
+DECL_WINELIB_TYPE_AW(DOC_INFO_2)
+DECL_WINELIB_TYPE_AW(PDOC_INFO_2)
+DECL_WINELIB_TYPE_AW(LPDOC_INFO_2)
+
+typedef struct _FORM_INFO_1A {
+  DWORD Flags;
+  LPSTR pName;
+  SIZEL Size;
+  RECTL ImageableArea;
+} FORM_INFO_1A, *PFORM_INFO_1A, *LPFORM_INFO_1A;
+
+typedef struct _FORM_INFO_1W {
+  DWORD Flags;
+  LPWSTR pName;
+  SIZEL Size;
+  RECTL ImageableArea;
+} FORM_INFO_1W, *PFORM_INFO_1W, *LPFORM_INFO_1W;
+
+DECL_WINELIB_TYPE_AW(FORM_INFO_1)
+DECL_WINELIB_TYPE_AW(PFORM_INFO_1)
+DECL_WINELIB_TYPE_AW(LPFORM_INFO_1)
+
+typedef struct _FORM_INFO_2A {
+  DWORD  Flags;
+  LPSTR  pName;
+  SIZEL  Size;
+  RECTL  ImageableArea;
+  LPCSTR pKeyword;
+  DWORD  StringType;
+  LPSTR  pMuiDll;
+  DWORD  dwResourceId;
+  LPSTR  pDisplayName;
+  LANGID wLangId;
+} FORM_INFO_2A, *PFORM_INFO_2A, *LPFORM_INFO_2A;
+
+typedef struct _FORM_INFO_2W {
+  DWORD  Flags;
+  LPWSTR pName;
+  SIZEL  Size;
+  RECTL  ImageableArea;
+  LPCSTR pKeyword;
+  DWORD  StringType;
+  LPWSTR pMuiDll;
+  DWORD  dwResourceId;
+  LPWSTR pDisplayName;
+  LANGID wLangId;
+} FORM_INFO_2W, *PFORM_INFO_2W, *LPFORM_INFO_2W;
+
+DECL_WINELIB_TYPE_AW(FORM_INFO_2)
+DECL_WINELIB_TYPE_AW(PFORM_INFO_2)
+DECL_WINELIB_TYPE_AW(LPFORM_INFO_2)
+
+typedef struct _PRINTPROCESSOR_INFO_1A {
+  LPSTR pName;
+} PRINTPROCESSOR_INFO_1A, *PPRINTPROCESSOR_INFO_1A,
+  *LPPRINTPROCESSOR_INFO_1A;
+
+typedef struct _PRINTPROCESSOR_INFO_1W {
+  LPWSTR pName;
+} PRINTPROCESSOR_INFO_1W, *PPRINTPROCESSOR_INFO_1W,
+  *LPPRINTPROCESSOR_INFO_1W;
+
+DECL_WINELIB_TYPE_AW(PRINTPROCESSOR_INFO_1)
+DECL_WINELIB_TYPE_AW(PPRINTPROCESSOR_INFO_1)
+DECL_WINELIB_TYPE_AW(LPPRINTPROCESSOR_INFO_1)
+
+typedef struct _PORT_INFO_1A {
+  LPSTR pName;
+} PORT_INFO_1A, *PPORT_INFO_1A, *LPPORT_INFO_1A;
+
+typedef struct _PORT_INFO_1W {
+  LPWSTR pName;
+} PORT_INFO_1W, *PPORT_INFO_1W, *LPPORT_INFO_1W;
+
+DECL_WINELIB_TYPE_AW(PORT_INFO_1)
+DECL_WINELIB_TYPE_AW(PPORT_INFO_1)
+DECL_WINELIB_TYPE_AW(LPPORT_INFO_1)
+
+typedef struct _PORT_INFO_2A {
+  LPSTR pPortName;
+  LPSTR pMonitorName;
+  LPSTR pDescription;
+  DWORD fPortType;
+  DWORD Reserved;
+} PORT_INFO_2A, *PPORT_INFO_2A, *LPPORT_INFO_2A;
+
+typedef struct _PORT_INFO_2W {
+  LPWSTR pPortName;
+  LPWSTR pMonitorName;
+  LPWSTR pDescription;
+  DWORD  fPortType;
+  DWORD  Reserved;
+} PORT_INFO_2W, *PPORT_INFO_2W, *LPPORT_INFO_2W;
+
+DECL_WINELIB_TYPE_AW(PORT_INFO_2)
+DECL_WINELIB_TYPE_AW(PPORT_INFO_2)
+DECL_WINELIB_TYPE_AW(LPPORT_INFO_2)
+
+typedef struct _PORT_INFO_3A {
+  DWORD dwStatus;
+  LPSTR pszStatus;
+  DWORD dwSeverity;
+} PORT_INFO_3A, *PPORT_INFO_3A, *LPPORT_INFO_3A;
+
+typedef struct _PORT_INFO_3W {
+  DWORD  dwStatus;
+  LPWSTR pszStatus;
+  DWORD  dwSeverity;
+} PORT_INFO_3W, *PPORT_INFO_3W, *LPPORT_INFO_3W;
+
+DECL_WINELIB_TYPE_AW(PORT_INFO_3)
+DECL_WINELIB_TYPE_AW(PPORT_INFO_3)
+DECL_WINELIB_TYPE_AW(LPPORT_INFO_3)
+
+typedef struct _MONITOR_INFO_1A {
+  LPSTR pName;
+} MONITOR_INFO_1A, *PMONITOR_INFO_1A, *LPMONITOR_INFO_1A;
+
+typedef struct _MONITOR_INFO_1W {
+  LPWSTR pName;
+} MONITOR_INFO_1W, *PMONITOR_INFO_1W, *LPMONITOR_INFO_1W;
+
+DECL_WINELIB_TYPE_AW(MONITOR_INFO_1)
+DECL_WINELIB_TYPE_AW(PMONITOR_INFO_1)
+DECL_WINELIB_TYPE_AW(LPMONITOR_INFO_1)
+
+#endif /* Status */
+
+
+typedef struct _MONITOR_INFO_2A {
+  LPSTR pName;
+  LPSTR pEnvironment;
+  LPSTR pDLLName;
+} MONITOR_INFO_2A, *PMONITOR_INFO_2A, *LPMONITOR_INFO_2A;
+
+typedef struct _MONITOR_INFO_2W {
+  LPWSTR pName;
+  LPWSTR pEnvironment;
+  LPWSTR pDLLName;
+} MONITOR_INFO_2W, *PMONITOR_INFO_2W, *LPMONITOR_INFO_2W;
+
+DECL_WINELIB_TYPE_AW(MONITOR_INFO_2)
+DECL_WINELIB_TYPE_AW(PMONITOR_INFO_2)
+DECL_WINELIB_TYPE_AW(LPMONITOR_INFO_2)
+
+typedef struct _DATATYPES_INFO_1A {
+  LPSTR pName;
+} DATATYPES_INFO_1A, *PDATATYPES_INFO_1A, *LPDATATYPES_INFO_1A;
+
+typedef struct _DATATYPES_INFO_1W {
+  LPWSTR pName;
+} DATATYPES_INFO_1W, *PDATATYPES_INFO_1W, *LPDATATYPES_INFO_1W;
+
+DECL_WINELIB_TYPE_AW(DATATYPES_INFO_1)
+DECL_WINELIB_TYPE_AW(PDATATYPES_INFO_1)
+DECL_WINELIB_TYPE_AW(LPDATATYPES_INFO_1)
+
+typedef struct _PRINTER_NOTIFY_OPTIONS_TYPE {
+  WORD  Type;
+  WORD  Reserved0;
+  DWORD Reserved1;
+  DWORD Reserved2;
+  DWORD Count;
+  PWORD pFields;
+} PRINTER_NOTIFY_OPTIONS_TYPE, *PPRINTER_NOTIFY_OPTIONS_TYPE,
+*LPPRINTER_NOTIFY_OPTIONS_TYPE;
+
+typedef struct _PRINTER_NOTIFY_OPTIONS {
+  DWORD Version;
+  DWORD Flags;
+  DWORD Count;
+  PPRINTER_NOTIFY_OPTIONS_TYPE pTypes;
+} PRINTER_NOTIFY_OPTIONS, *PPRINTER_NOTIFY_OPTIONS, *LPPRINTER_NOTIFY_OPTIONS;
+
+typedef struct _PRINTER_NOTIFY_INFO_DATA {
+  WORD Type;
+  WORD Field;
+  DWORD Reserved;
+  DWORD Id;
+  union {
+    DWORD adwData[2];
+    struct {
+      DWORD cbBuf;
+      LPVOID pBuf;
+    } Data;
+  } NotifyData;
+} PRINTER_NOTIFY_INFO_DATA, *PPRINTER_NOTIFY_INFO_DATA,
+*LPPRINTER_NOTIFY_INFO_DATA;
+
+typedef struct _PRINTER_NOTIFY_INFO {
+  DWORD Version;
+  DWORD Flags;
+  DWORD Count;
+  PRINTER_NOTIFY_INFO_DATA aData[1];
+} PRINTER_NOTIFY_INFO, *PPRINTER_NOTIFY_INFO, *LPPRINTER_NOTIFY_INFO;
+
+typedef struct _PROVIDOR_INFO_1A {
+  LPSTR pName;
+  LPSTR pEnvironment;
+  LPSTR pDLLName;
+} PROVIDOR_INFO_1A, *PPROVIDOR_INFO_1A, *LPPROVIDOR_INFO_1A;
+
+typedef struct _PROVIDOR_INFO_1W {
+  LPWSTR pName;
+  LPWSTR pEnvironment;
+  LPWSTR pDLLName;
+} PROVIDOR_INFO_1W, *PPROVIDOR_INFO_1W, *LPPROVIDOR_INFO_1W;
+
+DECL_WINELIB_TYPE_AW(PROVIDOR_INFO_1)
+DECL_WINELIB_TYPE_AW(PPROVIDOR_INFO_1)
+DECL_WINELIB_TYPE_AW(LPPROVIDOR_INFO_1)
+
+typedef struct _PRINTER_ENUM_VALUESA {
+  LPSTR	 pValueName;
+  DWORD  cbValueName;
+  DWORD  dwType;
+  LPBYTE pData;
+  DWORD  cbData;
+} PRINTER_ENUM_VALUESA, *PPRINTER_ENUM_VALUESA;
+
+typedef struct _PRINTER_ENUM_VALUESW {
+  LPWSTR pValueName;
+  DWORD  cbValueName;
+  DWORD  dwType;
+  LPBYTE pData;
+  DWORD  cbData;
+} PRINTER_ENUM_VALUESW, *PPRINTER_ENUM_VALUESW;
+
+DECL_WINELIB_TYPE_AW(PRINTER_ENUM_VALUES)
+DECL_WINELIB_TYPE_AW(PPRINTER_ENUM_VALUES)
+
+typedef enum {
+ BIDI_NULL = 0,
+ BIDI_INT,
+ BIDI_FLOAT,
+ BIDI_BOOL,
+ BIDI_STRING,
+ BIDI_TEXT,
+ BIDI_ENUM,
+ BIDI_BLOB
+} BIDI_TYPE;
+
+typedef struct _BINARY_CONTAINER {
+ DWORD  cbBuf;
+ LPBYTE pData;
+} BINARY_CONTAINER, *PBINARY_CONTAINER;
+
+typedef struct _BIDI_DATA {
+ DWORD  dwBidiType;
+ union
+ {
+   BOOL             bData;
+   INT              iData;
+   LPWSTR           sData;
+   FLOAT            fData;
+   BINARY_CONTAINER biData;
+ } u;
+} BIDI_DATA, *LPBIDI_DATA, *PBIDI_DATA;
+
+typedef struct _BIDI_REQUEST_DATA {
+ DWORD      dwReqNumber;
+ LPWSTR     pSchema;
+ BIDI_DATA  data;
+} BIDI_REQUEST_DATA, *LPBIDI_REQUEST_DATA, *PBIDI_REQUEST_DATA;
+
+typedef struct _BIDI_REQUEST_CONTAINER {
+ DWORD              Version;
+ DWORD              Flags;
+ DWORD              Count;
+ BIDI_REQUEST_DATA  aData[1];
+} BIDI_REQUEST_CONTAINER, *LPBIDI_REQUEST_CONTAINER, *PBIDI_REQUEST_CONTAINER;
+
+typedef struct _BIDI_RESPONSE_DATA {
+ DWORD      dwResult;
+ DWORD      dwReqNumber;
+ LPWSTR     pSchema;
+ BIDI_DATA  data;
+} BIDI_RESPONSE_DATA, *LPBIDI_RESPONSE_DATA, *PBIDI_RESPONSE_DATA;
+
+typedef struct _BIDI_RESPONSE_CONTAINER {
+ DWORD              Version;
+ DWORD              Flags;
+ DWORD              Count;
+ BIDI_RESPONSE_DATA aData[1];
+} BIDI_RESPONSE_CONTAINER, *LPBIDI_RESPONSE_CONTAINER, *PBIDI_RESPONSE_CONTAINER;
+
+/* DECLARATIONS */
+INT WINAPI DeviceCapabilitiesA(LPCSTR pDevice,LPCSTR pPort,WORD fwCapability,
+			       LPSTR pOutput, LPDEVMODEA pDevMode);
+INT WINAPI DeviceCapabilitiesW(LPCWSTR pDevice, LPCWSTR pPort,
+			       WORD fwCapability, LPWSTR pOutput,
+			       const DEVMODEW *pDevMode);
+
+#define DeviceCapabilities WINELIB_NAME_AW(DeviceCapabilities)
+
+LONG WINAPI DocumentPropertiesA(HWND hWnd,HANDLE hPrinter,
+                                LPSTR pDeviceName, LPDEVMODEA pDevModeOutput,
+				LPDEVMODEA pDevModeInput,DWORD fMode );
+LONG WINAPI DocumentPropertiesW(HWND hWnd, HANDLE hPrinter,
+				LPWSTR pDeviceName,
+				LPDEVMODEW pDevModeOutput,
+				LPDEVMODEW pDevModeInput, DWORD fMode);
+
+#define DocumentProperties WINELIB_NAME_AW(DocumentProperties)
+
+BOOL WINAPI OpenPrinterA(LPSTR lpPrinterName,HANDLE *phPrinter,
+			     LPPRINTER_DEFAULTSA pDefault);
+BOOL WINAPI OpenPrinterW(LPWSTR lpPrinterName,HANDLE *phPrinter,
+			     LPPRINTER_DEFAULTSW pDefault);
+
+#define OpenPrinter WINELIB_NAME_AW(OpenPrinter)
+
+BOOL WINAPI ResetPrinterA(HANDLE hPrinter, LPPRINTER_DEFAULTSA pDefault);
+BOOL WINAPI ResetPrinterW(HANDLE hPrinter, LPPRINTER_DEFAULTSW pDefault);
+#define ResetPrinter WINELIB_NAME_AW(ResetPrinter)
+
+BOOL WINAPI ClosePrinter (HANDLE phPrinter);
+
+BOOL WINAPI EnumJobsA(HANDLE hPrinter, DWORD FirstJob, DWORD NoJobs,
+		      DWORD Level, LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded,
+		      LPDWORD pcReturned);
+BOOL WINAPI EnumJobsW(HANDLE hPrinter, DWORD FirstJob, DWORD NoJobs,
+		      DWORD Level, LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded,
+		      LPDWORD pcReturned);
+#define EnumJobs WINELIB_NAME_AW(EnumJobs)
+
+BOOL  WINAPI EnumPrintersA(DWORD dwType, LPSTR lpszName,
+			       DWORD dwLevel, LPBYTE lpbPrinters,
+			       DWORD cbBuf, LPDWORD lpdwNeeded,
+			       LPDWORD lpdwReturned);
+BOOL  WINAPI EnumPrintersW(DWORD dwType, LPWSTR lpszName,
+			       DWORD dwLevel, LPBYTE lpbPrinters,
+			       DWORD cbBuf, LPDWORD lpdwNeeded,
+			       LPDWORD lpdwReturned);
+#define EnumPrinters WINELIB_NAME_AW(EnumPrinters)
+
+BOOL WINAPI PrinterProperties(HWND hWnd, HANDLE hPrinter);
+
+BOOL WINAPI GetPrinterDriverDirectoryA(LPSTR,LPSTR,DWORD,LPBYTE,DWORD,LPDWORD);
+BOOL WINAPI GetPrinterDriverDirectoryW(LPWSTR,LPWSTR,DWORD,LPBYTE,DWORD,LPDWORD);
+#define GetPrinterDriverDirectory WINELIB_NAME_AW(GetPrinterDriverDirectory)
+
+BOOL WINAPI GetPrinterDriverA(HANDLE hPrinter, LPSTR pEnvironment,
+			      DWORD Level, LPBYTE pDriverInfo,
+			      DWORD cbBuf, LPDWORD pcbNeeded);
+BOOL WINAPI GetPrinterDriverW(HANDLE hPrinter, LPWSTR pEnvironment,
+			      DWORD Level, LPBYTE pDriverInfo,
+			      DWORD cbBuf, LPDWORD pcbNeeded);
+#define GetPrinterDriver WINELIB_NAME_AW(GetPrinterDriver)
+
+BOOL WINAPI SetJobA(HANDLE hPrinter, DWORD JobID, DWORD Level, LPBYTE pJob,
+		    DWORD Command);
+BOOL WINAPI SetJobW(HANDLE hPrinter, DWORD JobID, DWORD Level, LPBYTE pJob,
+		    DWORD Command);
+#define SetJob WINELIB_NAME_AW(SetJob)
+
+BOOL WINAPI GetJobA(HANDLE hPrinter, DWORD JobID, DWORD Level, LPBYTE pJob,
+		    DWORD cbBuf, LPDWORD pcbNeeded);
+BOOL WINAPI GetJobW(HANDLE hPrinter, DWORD JobID, DWORD Level, LPBYTE pJob,
+		    DWORD cbBuf, LPDWORD pcbNeeded);
+#define GetJob WINELIB_NAME_AW(GetJob)
+
+HANDLE WINAPI AddPrinterA(LPSTR pName, DWORD Level, LPBYTE pPrinter);
+HANDLE WINAPI AddPrinterW(LPWSTR pName, DWORD Level, LPBYTE pPrinter);
+#define AddPrinter WINELIB_NAME_AW(AddPrinter)
+
+BOOL WINAPI DeletePrinter(HANDLE hPrinter);
+
+BOOL WINAPI SetPrinterA(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
+			DWORD Command);
+BOOL WINAPI SetPrinterW(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
+			DWORD Command);
+#define SetPrinter WINELIB_NAME_AW(SetPrinter)
+
+BOOL WINAPI GetPrinterA(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
+			DWORD cbBuf, LPDWORD pcbNeeded);
+BOOL WINAPI GetPrinterW(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
+			DWORD cbBuf, LPDWORD pcbNeeded);
+#define GetPrinter WINELIB_NAME_AW(GetPrinter)
+
+BOOL WINAPI AddPrinterDriverA(LPSTR pName, DWORD Level, LPBYTE pDriverInfo);
+BOOL WINAPI AddPrinterDriverW(LPWSTR pName, DWORD Level, LPBYTE pDriverInfo);
+#define AddPrinterDriver WINELIB_NAME_AW(AddPrinterDriver)
+
+BOOL WINAPI AddPrinterDriverExA(LPSTR pName, DWORD Level, LPBYTE pDriverInfo,
+                                DWORD dwFileCopyFlags);
+BOOL WINAPI AddPrinterDriverExW(LPWSTR pName, DWORD Level, LPBYTE pDriverInfo,
+                                DWORD dwFileCopyFlags);
+#define AddPrinterDriverEx WINELIB_NAME_AW(AddPrinterDriverEx)
+
+BOOL WINAPI EnumPrinterDriversA(LPSTR pName, LPSTR pEnvironment, DWORD Level,
+				LPBYTE pDriverInfo, DWORD cbBuf,
+				LPDWORD pcbNeeded, LPDWORD pcbReturned);
+BOOL WINAPI EnumPrinterDriversW(LPWSTR pName, LPWSTR pEnvironment, DWORD Level,
+				LPBYTE pDriverInfo, DWORD cbBuf,
+				LPDWORD pcbNeeded, LPDWORD pcbReturned);
+#define EnumPrinterDrivers WINELIB_NAME_AW(EnumPrinterDrivers)
+
+BOOL WINAPI GetDefaultPrinterA(LPSTR pName, LPDWORD pcbNameSize);
+BOOL WINAPI GetDefaultPrinterW(LPWSTR pName, LPDWORD pcbNameSize);
+#define GetDefaultPrinter WINELIB_NAME_AW(GetDefaultPrinter)
+
+BOOL WINAPI DeletePrinterDriverA(LPSTR pName, LPSTR pEnvironment,
+				 LPSTR pDriverName);
+BOOL WINAPI DeletePrinterDriverW(LPWSTR pName, LPWSTR pEnvironment,
+				 LPWSTR pDriverName);
+#define DeletePrinterDriver WINELIB_NAME_AW(DeletePrinterDriver)
+
+BOOL WINAPI DeletePrinterDriverExA(LPSTR pName, LPSTR pEnvironment,
+                                   LPSTR pDriverName, DWORD dwDeleteFlag, DWORD dwVersionFlag);
+BOOL WINAPI DeletePrinterDriverExW(LPWSTR pName, LPWSTR pEnvironment,
+                                   LPWSTR pDriverName, DWORD dwDeleteFlag, DWORD dwVersionFlag);
+#define DeletePrinterDriverEx WINELIB_NAME_AW(DeletePrinterDriverEx)
+
+BOOL WINAPI AddPrintProcessorA(LPSTR pName, LPSTR pEnvironment,
+			       LPSTR pPathName, LPSTR pPrintProcessorName);
+BOOL WINAPI AddPrintProcessorW(LPWSTR pName, LPWSTR pEnvironment,
+			       LPWSTR pPathName, LPWSTR pPrintProcessorName);
+#define AddPrintProcessor WINELIB_NAME_AW(AddPrintProcessor)
+
+BOOL WINAPI EnumPrintProcessorsA(LPSTR pName, LPSTR pEnvironment,
+				 DWORD Level, LPBYTE pPrintProcessorInfo,
+				 DWORD cbBuf, LPDWORD pcbNeeded,
+				 LPDWORD pcbReturned);
+BOOL WINAPI EnumPrintProcessorsW(LPWSTR pName, LPWSTR pEnvironment,
+				 DWORD Level, LPBYTE pPrintProcessorInfo,
+				 DWORD cbBuf, LPDWORD pcbNeeded,
+				 LPDWORD pcbReturned);
+#define EnumPrintProcessors WINELIB_NAME_AW(EnumPrintProcessors)
+
+BOOL WINAPI GetPrintProcessorDirectoryA(LPSTR pName, LPSTR pEnvironment,
+					DWORD Level,
+					LPBYTE pPrintProcessorInfo,
+					DWORD cbBuf, LPDWORD pcbNeeded);
+
+BOOL WINAPI GetPrintProcessorDirectoryW(LPWSTR pName, LPWSTR pEnvironment,
+					DWORD Level,
+					LPBYTE pPrintProcessorInfo,
+					DWORD cbBuf, LPDWORD pcbNeeded);
+#define GetPrintProcessorDirectory WINELIB_NAME_AW(GetPrintProcessorDirectory)
+
+BOOL WINAPI EnumPrintProcessorDatatypesA(LPSTR pName,
+					 LPSTR pPrintProcessorName,
+					 DWORD Level, LPBYTE pDatatypes,
+					 DWORD cbBuf, LPDWORD pcbNeeded,
+					 LPDWORD pcbReturned);
+BOOL WINAPI EnumPrintProcessorDatatypesW(LPWSTR pName,
+					 LPWSTR pPrintProcessorName,
+					 DWORD Level, LPBYTE pDatatypes,
+					 DWORD cbBuf, LPDWORD pcbNeeded,
+					 LPDWORD pcbReturned);
+#define EnumPrintProcessorDatatypes WINELIB_NAME_AW(EnumPrintProcessorDatatypes)
+
+BOOL WINAPI DeletePrintProcessorA(LPSTR pName, LPSTR pEnvironment,
+				  LPSTR pPrintProcessorName);
+BOOL WINAPI DeletePrintProcessorW(LPWSTR pName, LPWSTR pEnvironment,
+				  LPWSTR pPrintProcessorName);
+#define DeletePrintProcessor WINELIB_NAME_AW(DeletePrintProcessor)
+
+DWORD WINAPI StartDocPrinterA(HANDLE hPrinter, DWORD Level, LPBYTE pDocInfo);
+DWORD WINAPI StartDocPrinterW(HANDLE hPrinter, DWORD Level, LPBYTE pDocInfo);
+#define StartDocPrinter WINELIB_NAME_AW(StartDocPrinter)
+
+BOOL WINAPI StartPagePrinter(HANDLE hPrinter);
+BOOL WINAPI WritePrinter(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf,
+			 LPDWORD pcWritten);
+BOOL WINAPI EndPagePrinter(HANDLE hPrinter);
+BOOL WINAPI AbortPrinter(HANDLE hPrinter);
+BOOL WINAPI ReadPrinter(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf,
+			LPDWORD pNoBytesRead);
+BOOL WINAPI EndDocPrinter(HANDLE hPrinter);
+
+BOOL WINAPI AddJobA(HANDLE hPrinter, DWORD Level, LPBYTE pData, DWORD cbBuf,
+		    LPDWORD pcbNeeded);
+BOOL WINAPI AddJobW(HANDLE hPrinter, DWORD Level, LPBYTE pData, DWORD cbBuf,
+		    LPDWORD pcbNeeded);
+#define AddJob WINELIB_NAME_AW(AddJob)
+
+BOOL WINAPI ScheduleJob(HANDLE hPrinter, DWORD JobID);
+
+LONG WINAPI AdvancedDocumentPropertiesA(HWND hWnd, HANDLE hPrinter,
+					LPSTR pDeviceName,
+					PDEVMODEA pDevModeOutput,
+					PDEVMODEA pDevModeInput);
+LONG WINAPI AdvancedDocumentPropertiesW(HWND hWnd, HANDLE hPrinter,
+					LPWSTR pDeviceName,
+					PDEVMODEW pDevModeOutput,
+					PDEVMODEW pDevModeInput);
+#define AdvancedDocumentProperties WINELIB_NAME_AW(AdvancedDocumentProperties)
+
+DWORD WINAPI GetPrinterDataA(HANDLE hPrinter, LPSTR pValueName, LPDWORD pType,
+			     LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
+DWORD WINAPI GetPrinterDataW(HANDLE hPrinter, LPWSTR pValueName, LPDWORD pType,
+			     LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
+#define GetPrinterData WINELIB_NAME_AW(GetPrinterData)
+
+DWORD WINAPI GetPrinterDataExA(HANDLE hPrinter, LPCSTR pKeyName,
+			       LPCSTR pValueName, LPDWORD pType,
+			       LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
+DWORD WINAPI GetPrinterDataExW(HANDLE hPrinter, LPCWSTR pKeyName,
+			       LPCWSTR pValueName, LPDWORD pType,
+			       LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
+#define GetPrinterDataEx WINELIB_NAME_AW(GetPrinterDataEx)
+
+DWORD WINAPI DeletePrinterDataExA(HANDLE hPrinter, LPCSTR pKeyName,
+                                  LPCSTR pValueName);
+DWORD WINAPI DeletePrinterDataExW(HANDLE hPrinter, LPCWSTR pKeyName,
+                                  LPCWSTR pValueName);
+#define DeletePrinterDataEx WINELIB_NAME_AW(DeletePrinterDataEx)
+
+DWORD WINAPI SetPrinterDataA(HANDLE hPrinter, LPSTR pValueName, DWORD Type,
+			     LPBYTE pData, DWORD cbData);
+DWORD WINAPI SetPrinterDataW(HANDLE hPrinter, LPWSTR pValueName, DWORD Type,
+			     LPBYTE pData, DWORD cbData);
+#define SetPrinterData WINELIB_NAME_AW(SetPrinterData)
+
+DWORD WINAPI SetPrinterDataExA(HANDLE hPrinter, LPCSTR pKeyName,
+			       LPCSTR pValueName, DWORD Type,
+			       LPBYTE pData, DWORD cbData);
+DWORD WINAPI SetPrinterDataExW(HANDLE hPrinter, LPCWSTR pKeyName,
+			       LPCWSTR pValueName, DWORD Type,
+			       LPBYTE pData, DWORD cbData);
+#define SetPrinterDataEx WINELIB_NAME_AW(SetPrinterDataEx)
+
+DWORD WINAPI WaitForPrinterChange(HANDLE hPrinter, DWORD Flags);
+HANDLE WINAPI FindFirstPrinterChangeNotification(HANDLE hPrinter,
+						 DWORD fdwFlags,
+						 DWORD fdwOptions,
+						 LPVOID pPrinterNotifyOptions);
+BOOL WINAPI FindNextPrinterChangeNotification(HANDLE hChange,
+					      PDWORD pdwChange,
+					      LPVOID pvReserved,
+					      LPVOID *ppPrinterNotifyInfo);
+BOOL WINAPI FreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO pPrinterNotifyInfo);
+BOOL WINAPI FindClosePrinterChangeNotification(HANDLE hChange);
+
+DWORD WINAPI PrinterMessageBoxA(HANDLE hPrinter, DWORD Error, HWND hWnd,
+				LPSTR pText, LPSTR pCaption, DWORD dwType);
+DWORD WINAPI PrinterMessageBoxW(HANDLE hPrinter, DWORD Error, HWND hWnd,
+				LPWSTR pText, LPWSTR pCaption, DWORD dwType);
+#define PrinterMessageBox WINELIB_NAME_AW(PrinterMessageBox)
+
+BOOL WINAPI AddFormA(HANDLE hPrinter, DWORD Level, LPBYTE pForm);
+BOOL WINAPI AddFormW(HANDLE hPrinter, DWORD Level, LPBYTE pForm);
+#define AddForm WINELIB_NAME_AW(AddForm)
+
+BOOL WINAPI DeleteFormA(HANDLE hPrinter, LPSTR pFormName);
+BOOL WINAPI DeleteFormW(HANDLE hPrinter, LPWSTR pFormName);
+#define DeleteForm WINELIB_NAME_AW(DeleteForm)
+
+BOOL WINAPI GetFormA(HANDLE hPrinter, LPSTR pFormName, DWORD Level,
+		     LPBYTE pForm, DWORD cbBuf, LPDWORD pcbNeeded);
+BOOL WINAPI GetFormW(HANDLE hPrinter, LPWSTR pFormName, DWORD Level,
+		     LPBYTE pForm, DWORD cbBuf, LPDWORD pcbNeeded);
+#define GetForm WINELIB_NAME_AW(GetForm)
+
+BOOL WINAPI SetFormA(HANDLE hPrinter, LPSTR pFormName, DWORD Level,
+		     LPBYTE pForm);
+BOOL WINAPI SetFormW(HANDLE hPrinter, LPWSTR pFormName, DWORD Level,
+		     LPBYTE pForm);
+#define SetForm WINELIB_NAME_AW(SetForm)
+
+BOOL WINAPI EnumFormsA(HANDLE hPrinter, DWORD Level, LPBYTE pForm, DWORD cbBuf,
+		       LPDWORD pcbNeeded, LPDWORD pcReturned);
+BOOL WINAPI EnumFormsW(HANDLE hPrinter, DWORD Level, LPBYTE pForm, DWORD cbBuf,
+		       LPDWORD pcbNeeded, LPDWORD pcReturned);
+#define EnumForms WINELIB_NAME_AW(EnumForms)
+
+BOOL WINAPI EnumMonitorsA(LPSTR pName, DWORD Level, LPBYTE pMonitors,
+			  DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
+BOOL WINAPI EnumMonitorsW(LPWSTR pName, DWORD Level, LPBYTE pMonitors,
+			  DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
+#define EnumMonitors WINELIB_NAME_AW(EnumMonitors)
+
+DWORD WINAPI EnumPrinterDataA( HANDLE hPrinter, DWORD dwIndex, LPSTR pValueName,
+    DWORD cbValueName, LPDWORD pcbValueName, LPDWORD pType, LPBYTE pData,
+    DWORD cbData, LPDWORD pcbData );
+DWORD WINAPI EnumPrinterDataW( HANDLE hPrinter, DWORD dwIndex, LPWSTR pValueName,
+    DWORD cbValueName, LPDWORD pcbValueName, LPDWORD pType, LPBYTE pData,
+    DWORD cbData, LPDWORD pcbData );
+#define EnumPrinterData WINELIB_NAME_AW(EnumPrinterData)
+
+BOOL WINAPI AddMonitorA(LPSTR pName, DWORD Level, LPBYTE pMonitors);
+BOOL WINAPI AddMonitorW(LPWSTR pName, DWORD Level, LPBYTE pMonitors);
+#define AddMonitor WINELIB_NAME_AW(AddMonitor)
+
+BOOL WINAPI DeleteMonitorA(LPSTR pName, LPSTR pEnvironment,
+			   LPSTR pMonitorName);
+BOOL WINAPI DeleteMonitorW(LPWSTR pName, LPWSTR pEnvironment,
+			   LPWSTR pMonitorName);
+#define DeleteMonitor WINELIB_NAME_AW(DeleteMonitor)
+
+BOOL WINAPI EnumPortsA(LPSTR pName, DWORD Level, LPBYTE pPorts,
+		       DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
+BOOL WINAPI EnumPortsW(LPWSTR pName, DWORD Level, LPBYTE pPorts,
+		       DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
+#define EnumPorts WINELIB_NAME_AW(EnumPorts)
+
+BOOL WINAPI AddPortA(LPSTR pName, HWND hWnd, LPSTR pMonitorName);
+BOOL WINAPI AddPortW(LPWSTR pName, HWND hWnd, LPWSTR pMonitorName);
+#define AddPort WINELIB_NAME_AW(AddPort)
+
+BOOL WINAPI AddPortExA(LPSTR, DWORD, LPBYTE, LPSTR);
+BOOL WINAPI AddPortExW(LPWSTR, DWORD, LPBYTE, LPWSTR);
+#define AddPortEx WINELIB_NAME_AW(AddPortEx)
+
+BOOL WINAPI ConfigurePortA(LPSTR pName, HWND hWnd, LPSTR pPortName);
+BOOL WINAPI ConfigurePortW(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
+#define ConfigurePort WINELIB_NAME_AW(ConfigurePort)
+
+BOOL WINAPI DeletePortA(LPSTR pName, HWND hWnd, LPSTR pPortName);
+BOOL WINAPI DeletePortW(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
+#define DeletePort WINELIB_NAME_AW(DeletePort)
+
+BOOL WINAPI SetPortA(LPSTR pName, LPSTR pPortName, DWORD dwLevel,
+		     LPBYTE pPortInfo);
+BOOL WINAPI SetPortW(LPWSTR pName, LPWSTR pPortName, DWORD dwLevel,
+		     LPBYTE pPortInfo);
+#define SetPort WINELIB_NAME_AW(SetPort)
+
+BOOL WINAPI AddPrinterConnectionA(LPSTR pName);
+BOOL WINAPI AddPrinterConnectionW(LPWSTR pName);
+#define AddPrinterConnection WINELIB_NAME_AW(AddPrinterConnection)
+
+BOOL WINAPI DeletePrinterConnectionA(LPSTR pName);
+BOOL WINAPI DeletePrinterConnectionW(LPWSTR pName);
+#define DeletePrinterConnection WINELIB_NAME_AW(DeletePrinterConnection)
+
+HANDLE WINAPI ConnectToPrinterDlg(HWND hwnd, DWORD Flags);
+
+BOOL WINAPI AddPrintProvidorA(LPSTR pName, DWORD Level, LPBYTE pProvidorInfo);
+BOOL WINAPI AddPrintProvidorW(LPWSTR pName, DWORD Level, LPBYTE pProvidorInfo);
+#define AddPrintProvidor WINELIB_NAME_AW(AddPrintProvidor)
+
+BOOL WINAPI DeletePrintProvidorA(LPSTR pName, LPSTR pEnvironment,
+				 LPSTR pPrintProvidorName);
+BOOL WINAPI DeletePrintProvidorW(LPWSTR pName, LPWSTR pEnvironment,
+				 LPWSTR pPrintProvidorName);
+#define DeletePrintProvidor WINELIB_NAME_AW(DeletePrintProvidor)
+
+DWORD WINAPI EnumPrinterDataExA(HANDLE hPrinter, LPCSTR pKeyName,
+				LPBYTE pEnumValues, DWORD cbEnumValues,
+				LPDWORD pcbEnumValues, LPDWORD pnEnumValues);
+DWORD WINAPI EnumPrinterDataExW(HANDLE hPrinter, LPCWSTR pKeyName,
+				LPBYTE pEnumValues, DWORD cbEnumValues,
+				LPDWORD pcbEnumValues, LPDWORD pnEnumValues);
+#define EnumPrinterDataEx WINELIB_NAME_AW(EnumPrinterDataEx)
+
+LONG WINAPI ExtDeviceMode( HWND hWnd, HANDLE hInst, LPDEVMODEA pDevModeOutput,
+    LPSTR pDeviceName, LPSTR pPort, LPDEVMODEA pDevModeInput, LPSTR pProfile,
+    DWORD fMode);
+
+LPSTR WINAPI StartDocDlgA(HANDLE hPrinter, DOCINFOA *doc);
+LPWSTR WINAPI StartDocDlgW(HANDLE hPrinter, DOCINFOW *doc);
+#define StartDocDlg WINELIB_NAME_AW(StartDocDlg)
+
+BOOL WINAPI XcvDataW(HANDLE hXcv, LPCWSTR pszDataName, PBYTE pInputData,
+    DWORD cbInputData, PBYTE pOutputData, DWORD cbOutputData,
+    PDWORD pcbOutputNeeded, PDWORD pdwStatus);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif  /* __WINE_WINSPOOL_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winsvc.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winsvc.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winsvc.h	(revision 16410)
@@ -0,0 +1,387 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINSVC_H
+#define __WINE_WINSVC_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+#ifdef _ADVAPI32_
+#define WINADVAPI
+#else
+#define WINADVAPI DECLSPEC_IMPORT
+#endif
+
+/* Service database names */
+#define SERVICES_ACTIVE_DATABASEA     "ServicesActive"
+#define SERVICES_FAILED_DATABASEA     "ServicesFailed"
+
+#if defined(__GNUC__)
+# define SERVICES_ACTIVE_DATABASEW    (const WCHAR []){ 'S','e','r','v','i','c','e','s','A','c','t','i','v','e',0 }
+# define SERVICES_FAILED_DATABASEW    (const WCHAR []){ 'S','e','r','v','i','c','e','s','F','a','i','l','e','d',0 }
+#elif defined(_MSC_VER)
+# define SERVICES_ACTIVE_DATABASEW    L"ServicesActive"
+# define SERVICES_FAILED_DATABASEW    L"ServicesFailed"
+#endif
+
+#define SERVICES_ACTIVE_DATABASE      WINELIB_NAME_AW( SERVICES_ACTIVE_DATABASE )
+#define SERVICES_FAILED_DATABASE      WINELIB_NAME_AW( SERVICES_FAILED_DATABASE )
+
+/* Service State requests */
+#define SERVICE_ACTIVE                        0x00000001
+#define SERVICE_INACTIVE                      0x00000002
+#define SERVICE_STATE_ALL                     (SERVICE_ACTIVE | SERVICE_INACTIVE)
+
+/* Controls */
+#define SERVICE_CONTROL_STOP                  0x00000001
+#define SERVICE_CONTROL_PAUSE                 0x00000002
+#define SERVICE_CONTROL_CONTINUE              0x00000003
+#define SERVICE_CONTROL_INTERROGATE           0x00000004
+#define SERVICE_CONTROL_SHUTDOWN              0x00000005
+#define SERVICE_CONTROL_PARAMCHANGE           0x00000006
+#define SERVICE_CONTROL_NETBINDADD            0x00000007
+#define SERVICE_CONTROL_NETBINDREMOVE         0x00000008
+#define SERVICE_CONTROL_NETBINDENABLE         0x00000009
+#define SERVICE_CONTROL_NETBINDDISABLE        0x0000000A
+#define SERVICE_CONTROL_DEVICEEVENT           0x0000000B
+#define SERVICE_CONTROL_HARDWAREPROFILECHANGE 0x0000000C
+#define SERVICE_CONTROL_POWEREVENT            0x0000000D
+#define SERVICE_CONTROL_SESSIONCHANGE         0x0000000E
+
+/* Service State */
+#define SERVICE_STOPPED          0x00000001
+#define SERVICE_START_PENDING    0x00000002
+#define SERVICE_STOP_PENDING     0x00000003
+#define SERVICE_RUNNING          0x00000004
+#define SERVICE_CONTINUE_PENDING 0x00000005
+#define SERVICE_PAUSE_PENDING    0x00000006
+#define SERVICE_PAUSED           0x00000007
+
+/* Controls Accepted */
+#define SERVICE_ACCEPT_STOP                  0x00000001
+#define SERVICE_ACCEPT_PAUSE_CONTINUE        0x00000002
+#define SERVICE_ACCEPT_SHUTDOWN              0x00000004
+#define SERVICE_ACCEPT_PARAMCHANGE           0x00000008
+#define SERVICE_ACCEPT_NETBINDCHANGE         0x00000010
+#define SERVICE_ACCEPT_HARDWAREPROFILECHANGE 0x00000020
+#define SERVICE_ACCEPT_POWEREVENT            0x00000040
+#define SERVICE_ACCEPT_SESSIONCHANGE         0x00000080
+
+/* Service Control Manager Object access types */
+#define SC_MANAGER_CONNECT            0x0001
+#define SC_MANAGER_CREATE_SERVICE     0x0002
+#define SC_MANAGER_ENUMERATE_SERVICE  0x0004
+#define SC_MANAGER_LOCK               0x0008
+#define SC_MANAGER_QUERY_LOCK_STATUS  0x0010
+#define SC_MANAGER_MODIFY_BOOT_CONFIG 0x0020
+#define SC_MANAGER_ALL_ACCESS         ( STANDARD_RIGHTS_REQUIRED      | \
+                                        SC_MANAGER_CONNECT            | \
+                                        SC_MANAGER_CREATE_SERVICE     | \
+                                        SC_MANAGER_ENUMERATE_SERVICE  | \
+                                        SC_MANAGER_LOCK               | \
+                                        SC_MANAGER_QUERY_LOCK_STATUS  | \
+                                        SC_MANAGER_MODIFY_BOOT_CONFIG )
+
+#define SERVICE_QUERY_CONFIG         0x0001
+#define SERVICE_CHANGE_CONFIG        0x0002
+#define SERVICE_QUERY_STATUS         0x0004
+#define SERVICE_ENUMERATE_DEPENDENTS 0x0008
+#define SERVICE_START                0x0010
+#define SERVICE_STOP                 0x0020
+#define SERVICE_PAUSE_CONTINUE       0x0040
+#define SERVICE_INTERROGATE          0x0080
+#define SERVICE_USER_DEFINED_CONTROL 0x0100
+
+#define SERVICE_ALL_ACCESS           ( STANDARD_RIGHTS_REQUIRED     | \
+                                       SERVICE_QUERY_CONFIG         | \
+                                       SERVICE_CHANGE_CONFIG        | \
+                                       SERVICE_QUERY_STATUS         | \
+                                       SERVICE_ENUMERATE_DEPENDENTS | \
+                                       SERVICE_START                | \
+                                       SERVICE_STOP                 | \
+                                       SERVICE_PAUSE_CONTINUE       | \
+                                       SERVICE_INTERROGATE          | \
+                                       SERVICE_USER_DEFINED_CONTROL )
+
+#define SERVICE_NO_CHANGE 0xffffffff
+
+
+/* Handle types */
+
+DECLARE_HANDLE(SC_HANDLE);
+typedef SC_HANDLE *LPSC_HANDLE;
+DECLARE_HANDLE(SERVICE_STATUS_HANDLE);
+typedef LPVOID SC_LOCK;
+
+/* Service status structure */
+
+typedef struct _SERVICE_STATUS {
+  DWORD dwServiceType;
+  DWORD dwCurrentState;
+  DWORD dwControlsAccepted;
+  DWORD dwWin32ExitCode;
+  DWORD dwServiceSpecificExitCode;
+  DWORD dwCheckPoint;
+  DWORD dwWaitHint;
+} SERVICE_STATUS, *LPSERVICE_STATUS;
+
+/* Service status process structure */
+
+typedef struct _SERVICE_STATUS_PROCESS
+{
+  DWORD dwServiceType;
+  DWORD dwCurrentState;
+  DWORD dwControlsAccepted;
+  DWORD dwWin32ExitCode;
+  DWORD dwServiceSpecificExitCode;
+  DWORD dwCheckPoint;
+  DWORD dwWaitHint;
+  DWORD dwProcessId;
+  DWORD dwServiceFlags;
+} SERVICE_STATUS_PROCESS, *LPSERVICE_STATUS_PROCESS;
+
+typedef enum _SC_STATUS_TYPE {
+  SC_STATUS_PROCESS_INFO      = 0
+} SC_STATUS_TYPE;
+
+/* Service main function prototype */
+
+typedef VOID (CALLBACK *LPSERVICE_MAIN_FUNCTIONA)(DWORD,LPSTR*);
+typedef VOID (CALLBACK *LPSERVICE_MAIN_FUNCTIONW)(DWORD,LPWSTR*);
+DECL_WINELIB_TYPE_AW(LPSERVICE_MAIN_FUNCTION)
+
+/* Service start table */
+
+typedef struct _SERVICE_TABLE_ENTRYA {
+    LPSTR                    lpServiceName;
+    LPSERVICE_MAIN_FUNCTIONA lpServiceProc;
+} SERVICE_TABLE_ENTRYA, *LPSERVICE_TABLE_ENTRYA;
+
+typedef struct _SERVICE_TABLE_ENTRYW {
+  LPWSTR                   lpServiceName;
+  LPSERVICE_MAIN_FUNCTIONW lpServiceProc;
+} SERVICE_TABLE_ENTRYW, *LPSERVICE_TABLE_ENTRYW;
+
+DECL_WINELIB_TYPE_AW(SERVICE_TABLE_ENTRY)
+DECL_WINELIB_TYPE_AW(LPSERVICE_TABLE_ENTRY)
+
+/* Service status enumeration structure */
+
+typedef struct _ENUM_SERVICE_STATUSA {
+  LPSTR          lpServiceName;
+  LPSTR          lpDisplayName;
+  SERVICE_STATUS ServiceStatus;
+} ENUM_SERVICE_STATUSA, *LPENUM_SERVICE_STATUSA;
+
+typedef struct _ENUM_SERVICE_STATUSW {
+    LPWSTR         lpServiceName;
+    LPWSTR         lpDisplayName;
+    SERVICE_STATUS ServiceStatus;
+} ENUM_SERVICE_STATUSW, *LPENUM_SERVICE_STATUSW;
+
+DECL_WINELIB_TYPE_AW(ENUM_SERVICE_STATUS)
+DECL_WINELIB_TYPE_AW(LPENUM_SERVICE_STATUS)
+
+typedef struct _ENUM_SERVICE_STATUS_PROCESSA {
+  LPSTR          lpServiceName;
+  LPSTR          lpDisplayName;
+  SERVICE_STATUS_PROCESS ServiceStatusProcess;
+} ENUM_SERVICE_STATUS_PROCESSA, *LPENUM_SERVICE_STATUS_PROCESSA;
+
+typedef struct _ENUM_SERVICE_STATUS_PROCESSW {
+    LPWSTR         lpServiceName;
+    LPWSTR         lpDisplayName;
+    SERVICE_STATUS_PROCESS ServiceStatusProcess;
+} ENUM_SERVICE_STATUS_PROCESSW, *LPENUM_SERVICE_STATUS_PROCESSW;
+
+DECL_WINELIB_TYPE_AW(ENUM_SERVICE_STATUS_PROCESS)
+DECL_WINELIB_TYPE_AW(LPENUM_SERVICE_STATUS_PROCESS)
+
+typedef enum _SC_ENUM_TYPE {
+    SC_ENUM_PROCESS_INFO      = 0
+} SC_ENUM_TYPE;
+
+typedef struct _QUERY_SERVICE_CONFIGA {
+    DWORD   dwServiceType;
+    DWORD   dwStartType;
+    DWORD   dwErrorControl;
+    LPSTR   lpBinaryPathName;
+    LPSTR   lpLoadOrderGroup;
+    DWORD   dwTagId;
+    LPSTR   lpDependencies;
+    LPSTR   lpServiceStartName;
+    LPSTR   lpDisplayName;
+} QUERY_SERVICE_CONFIGA, *LPQUERY_SERVICE_CONFIGA;
+
+typedef struct _QUERY_SERVICE_CONFIGW {
+    DWORD   dwServiceType;
+    DWORD   dwStartType;
+    DWORD   dwErrorControl;
+    LPWSTR  lpBinaryPathName;
+    LPWSTR  lpLoadOrderGroup;
+    DWORD   dwTagId;
+    LPWSTR  lpDependencies;
+    LPWSTR  lpServiceStartName;
+    LPWSTR  lpDisplayName;
+} QUERY_SERVICE_CONFIGW, *LPQUERY_SERVICE_CONFIGW;
+
+/* defines and structures for ChangeServiceConfig2 */
+#define SERVICE_CONFIG_DESCRIPTION              1
+#define SERVICE_CONFIG_FAILURE_ACTIONS          2
+#define SERVICE_CONFIG_DELAYED_AUTO_START_INFO  3
+#define SERVICE_CONFIG_FAILURE_ACTIONS_FLAG     4
+#define SERVICE_CONFIG_SERVICE_SID_INFO         5
+#define SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO 6
+#define SERVICE_CONFIG_PRESHUTDOWN_INFO         7
+
+
+typedef struct _SERVICE_DESCRIPTIONA {
+   LPSTR lpDescription;
+} SERVICE_DESCRIPTIONA,*LPSERVICE_DESCRIPTIONA;
+
+typedef struct _SERVICE_DESCRIPTIONW {
+   LPWSTR lpDescription;
+} SERVICE_DESCRIPTIONW,*LPSERVICE_DESCRIPTIONW;
+
+DECL_WINELIB_TYPE_AW(SERVICE_DESCRIPTION)
+DECL_WINELIB_TYPE_AW(LPSERVICE_DESCRIPTION)
+
+typedef enum _SC_ACTION_TYPE {
+    SC_ACTION_NONE        = 0,
+    SC_ACTION_RESTART     = 1,
+    SC_ACTION_REBOOT      = 2,
+    SC_ACTION_RUN_COMMAND = 3
+} SC_ACTION_TYPE;
+
+typedef struct _SC_ACTION {
+   SC_ACTION_TYPE  Type;
+   DWORD       Delay;
+} SC_ACTION,*LPSC_ACTION;
+
+typedef struct _SERVICE_FAILURE_ACTIONSA {
+   DWORD   dwResetPeriod;
+   LPSTR   lpRebootMsg;
+   LPSTR   lpCommand;
+   DWORD   cActions;
+   SC_ACTION * lpsaActions;
+} SERVICE_FAILURE_ACTIONSA,*LPSERVICE_FAILURE_ACTIONSA;
+
+typedef struct _SERVICE_FAILURE_ACTIONSW {
+   DWORD   dwResetPeriod;
+   LPWSTR  lpRebootMsg;
+   LPWSTR  lpCommand;
+   DWORD   cActions;
+   SC_ACTION * lpsaActions;
+} SERVICE_FAILURE_ACTIONSW,*LPSERVICE_FAILURE_ACTIONSW;
+
+DECL_WINELIB_TYPE_AW(SERVICE_FAILURE_ACTIONS)
+DECL_WINELIB_TYPE_AW(LPSERVICE_FAILURE_ACTIONS)
+
+typedef struct _QUERY_SERVICE_LOCK_STATUSA
+{
+  DWORD fIsLocked;
+  LPSTR lpLockOwner;
+  DWORD dwLockDuration;
+} QUERY_SERVICE_LOCK_STATUSA, *LPQUERY_SERVICE_LOCK_STATUSA;
+
+typedef struct _QUERY_SERVICE_LOCK_STATUSW
+{
+  DWORD fIsLocked;
+  LPWSTR lpLockOwner;
+  DWORD dwLockDuration;
+} QUERY_SERVICE_LOCK_STATUSW, *LPQUERY_SERVICE_LOCK_STATUSW;
+
+DECL_WINELIB_TYPE_AW(QUERY_SERVICE_LOCK_STATUS)
+
+/* Service control handler function prototype */
+
+typedef VOID (WINAPI *LPHANDLER_FUNCTION)(DWORD);
+typedef DWORD (WINAPI *LPHANDLER_FUNCTION_EX)(DWORD,DWORD,LPVOID,LPVOID);
+
+/* API function prototypes */
+
+WINADVAPI BOOL        WINAPI ChangeServiceConfigA(SC_HANDLE,DWORD,DWORD,DWORD,LPCSTR,LPCSTR,LPDWORD,LPCSTR,LPCSTR,LPCSTR,LPCSTR);
+WINADVAPI BOOL        WINAPI ChangeServiceConfigW(SC_HANDLE,DWORD,DWORD,DWORD,LPCWSTR,LPCWSTR,LPDWORD,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR);
+#define                      ChangeServiceConfig WINELIB_NAME_AW(ChangeServiceConfig)
+WINADVAPI BOOL        WINAPI ChangeServiceConfig2A(SC_HANDLE,DWORD,LPVOID);
+WINADVAPI BOOL        WINAPI ChangeServiceConfig2W(SC_HANDLE,DWORD,LPVOID);
+#define                      ChangeServiceConfig2 WINELIB_NAME_AW(ChangeServiceConfig2)
+WINADVAPI BOOL        WINAPI CloseServiceHandle(SC_HANDLE);
+WINADVAPI BOOL        WINAPI ControlService(SC_HANDLE,DWORD,LPSERVICE_STATUS);
+WINADVAPI SC_HANDLE   WINAPI CreateServiceA(SC_HANDLE,LPCSTR,LPCSTR,DWORD,DWORD,DWORD,DWORD,LPCSTR,LPCSTR,LPDWORD,LPCSTR,LPCSTR,LPCSTR);
+WINADVAPI SC_HANDLE   WINAPI CreateServiceW(SC_HANDLE,LPCWSTR,LPCWSTR,DWORD,DWORD,DWORD,DWORD,LPCWSTR,LPCWSTR,LPDWORD,LPCWSTR,LPCWSTR,LPCWSTR);
+#define                      CreateService WINELIB_NAME_AW(CreateService)
+WINADVAPI BOOL        WINAPI DeleteService(SC_HANDLE);
+WINADVAPI BOOL        WINAPI EnumDependentServicesA(SC_HANDLE,DWORD,LPENUM_SERVICE_STATUSA,DWORD,LPDWORD,LPDWORD);
+WINADVAPI BOOL        WINAPI EnumDependentServicesW(SC_HANDLE,DWORD,LPENUM_SERVICE_STATUSW,DWORD,LPDWORD,LPDWORD);
+#define                      EnumDependentServices WINELIB_NAME_AW(EnumDependentServices)
+WINADVAPI BOOL        WINAPI EnumServicesStatusA(SC_HANDLE,DWORD,DWORD,LPENUM_SERVICE_STATUSA,DWORD,LPDWORD,LPDWORD,LPDWORD);
+WINADVAPI BOOL        WINAPI EnumServicesStatusW(SC_HANDLE,DWORD,DWORD,LPENUM_SERVICE_STATUSW,DWORD,LPDWORD,LPDWORD,LPDWORD);
+#define                      EnumServicesStatus WINELIB_NAME_AW(EnumServicesStatus)
+WINADVAPI BOOL        WINAPI EnumServicesStatusExA(SC_HANDLE,SC_ENUM_TYPE,DWORD,DWORD,LPBYTE,DWORD,LPDWORD,LPDWORD,LPDWORD,LPCSTR);
+WINADVAPI BOOL        WINAPI EnumServicesStatusExW(SC_HANDLE,SC_ENUM_TYPE,DWORD,DWORD,LPBYTE,DWORD,LPDWORD,LPDWORD,LPDWORD,LPCWSTR);
+#define                      EnumServicesStatus WINELIB_NAME_AW(EnumServicesStatus)
+WINADVAPI BOOL        WINAPI GetServiceDisplayNameA(SC_HANDLE,LPCSTR,LPSTR,LPDWORD);
+WINADVAPI BOOL        WINAPI GetServiceDisplayNameW(SC_HANDLE,LPCWSTR,LPWSTR,LPDWORD);
+#define                      GetServiceDisplayName WINELIB_NAME_AW(GetServiceDisplayName)
+WINADVAPI BOOL        WINAPI GetServiceKeyNameA(SC_HANDLE,LPCSTR,LPSTR,LPDWORD);
+WINADVAPI BOOL        WINAPI GetServiceKeyNameW(SC_HANDLE,LPCWSTR,LPWSTR,LPDWORD);
+#define                      GetServiceKeyName WINELIB_NAME_AW(GetServiceKeyName)
+WINADVAPI SC_LOCK     WINAPI LockServiceDatabase(SC_HANDLE);
+WINADVAPI BOOL        WINAPI NotifyBootConfigStatus(BOOL);
+WINADVAPI SC_HANDLE   WINAPI OpenSCManagerA(LPCSTR,LPCSTR,DWORD);
+WINADVAPI SC_HANDLE   WINAPI OpenSCManagerW(LPCWSTR,LPCWSTR,DWORD);
+#define                      OpenSCManager WINELIB_NAME_AW(OpenSCManager)
+WINADVAPI SC_HANDLE   WINAPI OpenServiceA(SC_HANDLE,LPCSTR,DWORD);
+WINADVAPI SC_HANDLE   WINAPI OpenServiceW(SC_HANDLE,LPCWSTR,DWORD);
+#define                      OpenService WINELIB_NAME_AW(OpenService)
+WINADVAPI BOOL        WINAPI QueryServiceStatus(SC_HANDLE,LPSERVICE_STATUS);
+WINADVAPI BOOL        WINAPI QueryServiceStatusEx(SC_HANDLE,SC_STATUS_TYPE,LPBYTE,DWORD,LPDWORD);
+WINADVAPI BOOL        WINAPI QueryServiceConfigA(SC_HANDLE,LPQUERY_SERVICE_CONFIGA,DWORD,LPDWORD);
+WINADVAPI BOOL        WINAPI QueryServiceConfigW(SC_HANDLE,LPQUERY_SERVICE_CONFIGW,DWORD,LPDWORD);
+#define                      QueryServiceConfig WINELIB_NAME_AW(QueryServiceConfig)
+WINADVAPI BOOL        WINAPI QueryServiceConfig2A(SC_HANDLE,DWORD,LPBYTE,DWORD,LPDWORD);
+WINADVAPI BOOL        WINAPI QueryServiceConfig2W(SC_HANDLE,DWORD,LPBYTE,DWORD,LPDWORD);
+#define                      QueryServiceConfig2 WINELIB_NAME_AW(QueryServiceConfig2)
+WINADVAPI BOOL        WINAPI QueryServiceLockStatusA(SC_HANDLE,LPQUERY_SERVICE_LOCK_STATUSA,DWORD,LPDWORD);
+WINADVAPI BOOL        WINAPI QueryServiceLockStatusW(SC_HANDLE,LPQUERY_SERVICE_LOCK_STATUSW,DWORD,LPDWORD);
+#define                      QueryServiceLockStatus WINELIB_NAME_AW(QueryServiceLockStatus)
+WINADVAPI BOOL        WINAPI QueryServiceObjectSecurity(SC_HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,LPDWORD);
+WINADVAPI SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerA(LPCSTR,LPHANDLER_FUNCTION);
+WINADVAPI SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerW(LPCWSTR,LPHANDLER_FUNCTION);
+#define                      RegisterServiceCtrlHandler WINELIB_NAME_AW(RegisterServiceCtrlHandler)
+WINADVAPI SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerExA(LPCSTR,LPHANDLER_FUNCTION_EX,LPVOID);
+WINADVAPI SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerExW(LPCWSTR,LPHANDLER_FUNCTION_EX,LPVOID);
+#define                      RegisterServiceCtrlHandlerEx WINELIB_NAME_AW(RegisterServiceCtrlHandlerEx)
+WINADVAPI BOOL        WINAPI SetServiceObjectSecurity(SC_HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+WINADVAPI BOOL        WINAPI SetServiceStatus(SERVICE_STATUS_HANDLE,LPSERVICE_STATUS);
+WINADVAPI BOOL        WINAPI StartServiceA(SC_HANDLE,DWORD,LPCSTR*);
+WINADVAPI BOOL        WINAPI StartServiceW(SC_HANDLE,DWORD,LPCWSTR*);
+#define                      StartService WINELIB_NAME_AW(StartService)
+WINADVAPI BOOL        WINAPI StartServiceCtrlDispatcherA(const SERVICE_TABLE_ENTRYA*);
+WINADVAPI BOOL        WINAPI StartServiceCtrlDispatcherW(const SERVICE_TABLE_ENTRYW*);
+#define                      StartServiceCtrlDispatcher WINELIB_NAME_AW(StartServiceCtrlDispatcher)
+WINADVAPI BOOL        WINAPI UnlockServiceDatabase(SC_LOCK);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif /* !defined(__WINE_WINSVC_H) */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wintab.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wintab.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wintab.h	(revision 16410)
@@ -0,0 +1,788 @@
+/*
+ * Copyright (C) 1991-1998 by LCS/Telegraphics
+ * Copyright (C) 2002 Patrik Stridvall
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINTAB_H
+#define __WINE_WINTAB_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+/***********************************************************************
+ * Messages 
+ */
+#ifndef NOWTMESSAGES
+
+#define WT_DEFBASE    0x7FF0
+#define WT_MAXOFFSET  0xF
+
+#define _WT_PACKET(b)      ((b)+0)
+#define _WT_CTXOPEN(b)     ((b)+1)
+#define _WT_CTXCLOSE(b)    ((b)+2)
+#define _WT_CTXUPDATE(b)   ((b)+3)
+#define _WT_CTXOVERLAP(b)  ((b)+4)
+#define _WT_PROXIMITY(b)   ((b)+5)
+#define _WT_INFOCHANGE(b)  ((b)+6)
+#define _WT_CSRCHANGE(b)   ((b)+7)  /* 1.1 */
+#define _WT_MAX(b)         ((b)+WT_MAXOFFSET)
+
+#define WT_PACKET      _WT_PACKET(WT_DEFBASE)
+#define WT_CTXOPEN     _WT_CTXOPEN(WT_DEFBASE)
+#define WT_CTXCLOSE    _WT_CTXCLOSE(WT_DEFBASE)
+#define WT_CTXUPDATE   _WT_CTXUPDATE(WT_DEFBASE)
+#define WT_CTXOVERLAP  _WT_CTXOVERLAP(WT_DEFBASE)
+#define WT_PROXIMITY   _WT_PROXIMITY(WT_DEFBASE)
+#define WT_INFOCHANGE  _WT_INFOCHANGE(WT_DEFBASE)
+#define WT_CSRCHANGE   _WT_CSRCHANGE(WT_DEFBASE)  /* 1.1 */
+#define WT_MAX         _WT_MAX(WT_DEFBASE)
+
+#endif
+
+/***********************************************************************
+ * COMMON DATA DEFS
+ */
+
+DECLARE_HANDLE(HMGR);     /* manager handle */
+DECLARE_HANDLE(HCTX);     /* context handle */
+DECLARE_HANDLE(HWTHOOK);  /* hook handle */
+
+typedef DWORD WTPKT;   /* packet mask */
+
+#ifndef NOWTPKT
+
+/* WTPKT bits */
+#define PK_CONTEXT           0x0001  /* reporting context */
+#define PK_STATUS            0x0002  /* status bits */
+#define PK_TIME              0x0004  /* time stamp */
+#define PK_CHANGED           0x0008  /* change bit vector */
+#define PK_SERIAL_NUMBER     0x0010  /* packet serial number */
+#define PK_CURSOR            0x0020  /* reporting cursor */
+#define PK_BUTTONS           0x0040  /* button information */
+#define PK_X                 0x0080  /* x axis */
+#define PK_Y                 0x0100  /* y axis */
+#define PK_Z                 0x0200  /* z axis */
+#define PK_NORMAL_PRESSURE   0x0400  /* normal or tip pressure */
+#define PK_TANGENT_PRESSURE  0x0800  /* tangential or barrel pressure */
+#define PK_ORIENTATION       0x1000  /* orientation info: tilts */
+#define PK_ROTATION          0x2000  /* rotation info; 1.1 */
+
+#endif
+
+typedef DWORD FIX32; /* fixed-point arithmetic type */
+
+#ifndef NOFIX32
+
+#define INT(x) HIWORD(x)
+#define FRAC(x) LOWORD(x)
+
+#define CASTFIX32(x) ((FIX32)((x)*65536L))
+
+#define ROUND(x) (INT(x) + (FRAC(x) > (WORD)0x8000))
+
+#define FIX_MUL(c, a, b) \
+    (c = (((DWORD)FRAC(a) * FRAC(b)) >> 16) + \
+           (DWORD)INT(a) * FRAC(b) + \
+           (DWORD)INT(b) * FRAC(a) + \
+          ((DWORD)INT(a) * INT(b) << 16))
+
+#ifdef _WINDLL
+# define FIX_DIV_SC static
+#else
+# define FIX_DIV_SC
+# endif
+
+#define FIX_DIV(c, a, b) \
+    { \
+        FIX_DIV_SC DWORD temp, rem, btemp; \
+        \
+        /* fraction done bytewise */ \
+        temp = ((a / b) << 16); \
+        rem = a % b;   \
+        btemp = b; \
+        if (INT(btemp) < 256) { \
+            rem <<= 8; \
+        } else { \
+            btemp >>= 8; \
+        } \
+        temp += ((rem / btemp) << 8); \
+        rem %= btemp; \
+        rem <<= 8; \
+        temp += rem / btemp; \
+        c = temp; \
+    }
+
+#endif
+
+/***********************************************************************
+ * INFO DATA DEFS
+ */
+
+#ifndef NOWTINFO
+
+#ifndef NOWTAXIS
+
+typedef struct tagAXIS {
+    LONG   axMin;
+    LONG   axMax;
+    UINT   axUnits;
+    FIX32  axResolution;
+} AXIS, *PAXIS, *NPAXIS, *LPAXIS;
+
+/* unit specifiers */
+#define TU_NONE         0
+#define TU_INCHES       1
+#define TU_CENTIMETERS  2
+#define TU_CIRCLE       3
+
+#endif
+
+#ifndef NOWTSYSBUTTONS
+
+/* system button assignment values */
+#define SBN_NONE       0x00
+#define SBN_LCLICK     0x01
+#define SBN_LDBLCLICK  0x02
+#define SBN_LDRAG      0x03
+#define SBN_RCLICK     0x04
+#define SBN_RDBLCLICK  0x05
+#define SBN_RDRAG      0x06
+#define SBN_MCLICK     0x07
+#define SBN_MDBLCLICK  0x08
+#define SBN_MDRAG      0x09
+
+/* for Pen Windows */
+#define SBN_PTCLICK     0x10
+#define SBN_PTDBLCLICK  0x20
+#define SBN_PTDRAG      0x30
+#define SBN_PNCLICK     0x40
+#define SBN_PNDBLCLICK  0x50
+#define SBN_PNDRAG      0x60
+#define SBN_P1CLICK     0x70
+#define SBN_P1DBLCLICK  0x80
+#define SBN_P1DRAG      0x90
+#define SBN_P2CLICK     0xA0
+#define SBN_P2DBLCLICK  0xB0
+#define SBN_P2DRAG      0xC0
+#define SBN_P3CLICK     0xD0
+#define SBN_P3DBLCLICK  0xE0
+#define SBN_P3DRAG      0xF0
+
+#endif
+
+#ifndef NOWTCAPABILITIES
+
+/* hardware capabilities */
+#define HWC_INTEGRATED      0x0001
+#define HWC_TOUCH           0x0002
+#define HWC_HARDPROX        0x0004
+#define HWC_PHYSID_CURSORS  0x0008  /* 1.1 */
+#endif
+
+#ifndef NOWTIFC
+
+#ifndef NOWTCURSORS 
+
+/* cursor capabilities */
+#define CRC_MULTIMODE  0x0001  /* 1.1 */
+#define CRC_AGGREGATE  0x0002  /* 1.1 */
+#define CRC_INVERT     0x0004  /* 1.1 */
+
+#endif 
+
+/* info categories */
+#define WTI_INTERFACE    1
+#define IFC_WINTABID     1
+#define IFC_SPECVERSION  2
+#define IFC_IMPLVERSION  3
+#define IFC_NDEVICES     4
+#define IFC_NCURSORS     5
+#define IFC_NCONTEXTS    6
+#define IFC_CTXOPTIONS   7
+#define IFC_CTXSAVESIZE  8
+#define IFC_NEXTENSIONS  9
+#define IFC_NMANAGERS    10
+#define IFC_MAX          10
+
+#endif
+
+#ifndef NOWTSTATUS
+
+#define WTI_STATUS     2
+#define STA_CONTEXTS   1
+#define STA_SYSCTXS    2
+#define STA_PKTRATE    3
+#define STA_PKTDATA    4
+#define STA_MANAGERS   5
+#define STA_SYSTEM     6
+#define STA_BUTTONUSE  7
+#define STA_SYSBTNUSE  8
+#define STA_MAX        8
+
+#endif
+
+#ifndef NOWTDEFCONTEXT
+
+#define WTI_DEFCONTEXT  3
+#define WTI_DEFSYSCTX   4
+#define WTI_DDCTXS      400 /* 1.1 */
+#define WTI_DSCTXS      500 /* 1.1 */
+#define CTX_NAME        1
+#define CTX_OPTIONS     2
+#define CTX_STATUS      3
+#define CTX_LOCKS       4
+#define CTX_MSGBASE     5
+#define CTX_DEVICE      6
+#define CTX_PKTRATE     7
+#define CTX_PKTDATA     8
+#define CTX_PKTMODE     9
+#define CTX_MOVEMASK    10
+#define CTX_BTNDNMASK   11
+#define CTX_BTNUPMASK   12
+#define CTX_INORGX      13
+#define CTX_INORGY      14
+#define CTX_INORGZ      15
+#define CTX_INEXTX      16
+#define CTX_INEXTY      17
+#define CTX_INEXTZ      18
+#define CTX_OUTORGX     19
+#define CTX_OUTORGY     20
+#define CTX_OUTORGZ     21
+#define CTX_OUTEXTX     22
+#define CTX_OUTEXTY     23
+#define CTX_OUTEXTZ     24
+#define CTX_SENSX       25
+#define CTX_SENSY       26
+#define CTX_SENSZ       27
+#define CTX_SYSMODE     28
+#define CTX_SYSORGX     29
+#define CTX_SYSORGY     30
+#define CTX_SYSEXTX     31
+#define CTX_SYSEXTY     32
+#define CTX_SYSSENSX    33
+#define CTX_SYSSENSY    34
+#define CTX_MAX         34
+
+#endif
+
+#ifndef NOWTDEVICES
+
+#define WTI_DEVICES      100
+#define DVC_NAME         1
+#define DVC_HARDWARE     2
+#define DVC_NCSRTYPES    3
+#define DVC_FIRSTCSR     4
+#define DVC_PKTRATE      5
+#define DVC_PKTDATA      6
+#define DVC_PKTMODE      7
+#define DVC_CSRDATA      8
+#define DVC_XMARGIN      9
+#define DVC_YMARGIN      10
+#define DVC_ZMARGIN      11
+#define DVC_X            12
+#define DVC_Y            13
+#define DVC_Z            14
+#define DVC_NPRESSURE    15
+#define DVC_TPRESSURE    16
+#define DVC_ORIENTATION  17
+#define DVC_ROTATION     18  /* 1.1 */
+#define DVC_PNPID        19  /* 1.1 */
+#define DVC_MAX          19
+
+#endif
+
+#ifndef NOWTCURSORS
+
+#define WTI_CURSORS      200
+#define CSR_NAME         1
+#define CSR_ACTIVE       2
+#define CSR_PKTDATA      3
+#define CSR_BUTTONS      4
+#define CSR_BUTTONBITS   5
+#define CSR_BTNNAMES     6
+#define CSR_BUTTONMAP    7
+#define CSR_SYSBTNMAP    8
+#define CSR_NPBUTTON     9
+#define CSR_NPBTNMARKS   10
+#define CSR_NPRESPONSE   11
+#define CSR_TPBUTTON     12
+#define CSR_TPBTNMARKS   13
+#define CSR_TPRESPONSE   14
+#define CSR_PHYSID       15  /* 1.1 */
+#define CSR_MODE         16  /* 1.1 */
+#define CSR_MINPKTDATA   17  /* 1.1 */
+#define CSR_MINBUTTONS   18  /* 1.1 */
+#define CSR_CAPABILITIES 19  /* 1.1 */
+/* from http://www.wacomeng.com/devsupport/ibmpc/wacomwindevfaq.html */
+#define CSR_TYPE        20
+#define CSR_MAX         20
+
+#endif
+
+#ifndef NOWTEXTENSIONS
+
+#define WTI_EXTENSIONS  300
+#define EXT_NAME        1
+#define EXT_TAG         2
+#define EXT_MASK        3
+#define EXT_SIZE        4
+#define EXT_AXES        5
+#define EXT_DEFAULT     6
+#define EXT_DEFCONTEXT  7
+#define EXT_DEFSYSCTX   8
+#define EXT_CURSORS     9 
+#define EXT_MAX         109  /* Allow 100 cursors */
+
+#endif
+
+#endif
+
+/***********************************************************************
+ * CONTEXT DATA DEFS
+ */
+
+#define LCNAMELEN 40
+#define LC_NAMELEN 40
+
+typedef struct tagLOGCONTEXTA {
+    char   lcName[LCNAMELEN];
+    UINT   lcOptions;
+    UINT   lcStatus;
+    UINT   lcLocks;
+    UINT   lcMsgBase;
+    UINT   lcDevice;
+    UINT   lcPktRate;
+    WTPKT  lcPktData;
+    WTPKT  lcPktMode;
+    WTPKT  lcMoveMask;
+    DWORD  lcBtnDnMask;
+    DWORD  lcBtnUpMask;
+    LONG   lcInOrgX;
+    LONG   lcInOrgY;
+    LONG   lcInOrgZ;
+    LONG   lcInExtX;
+    LONG   lcInExtY;
+    LONG   lcInExtZ;
+    LONG   lcOutOrgX;
+    LONG   lcOutOrgY;
+    LONG   lcOutOrgZ;
+    LONG   lcOutExtX;
+    LONG   lcOutExtY;
+    LONG   lcOutExtZ;
+    FIX32  lcSensX;
+    FIX32  lcSensY;
+    FIX32  lcSensZ;
+    BOOL   lcSysMode;
+    int    lcSysOrgX;
+    int    lcSysOrgY;
+    int    lcSysExtX;
+    int    lcSysExtY;
+    FIX32  lcSysSensX;
+    FIX32  lcSysSensY;
+} LOGCONTEXTA, *PLOGCONTEXTA, *NPLOGCONTEXTA, *LPLOGCONTEXTA;
+
+typedef struct tagLOGCONTEXTW {
+    WCHAR  lcName[LCNAMELEN];
+    UINT   lcOptions;
+    UINT   lcStatus;
+    UINT   lcLocks;
+    UINT   lcMsgBase;
+    UINT   lcDevice;
+    UINT   lcPktRate;
+    WTPKT  lcPktData;
+    WTPKT  lcPktMode;
+    WTPKT  lcMoveMask;
+    DWORD  lcBtnDnMask;
+    DWORD  lcBtnUpMask;
+    LONG   lcInOrgX;
+    LONG   lcInOrgY;
+    LONG   lcInOrgZ;
+    LONG   lcInExtX;
+    LONG   lcInExtY;
+    LONG   lcInExtZ;
+    LONG   lcOutOrgX;
+    LONG   lcOutOrgY;
+    LONG   lcOutOrgZ;
+    LONG   lcOutExtX;
+    LONG   lcOutExtY;
+    LONG   lcOutExtZ;
+    FIX32  lcSensX;
+    FIX32  lcSensY;
+    FIX32  lcSensZ;
+    BOOL   lcSysMode;
+    int    lcSysOrgX;
+    int    lcSysOrgY;
+    int    lcSysExtX;
+    int    lcSysExtY;
+    FIX32  lcSysSensX;
+    FIX32  lcSysSensY;
+} LOGCONTEXTW, *PLOGCONTEXTW, *NPLOGCONTEXTW, *LPLOGCONTEXTW;
+
+DECL_WINELIB_TYPE_AW(LOGCONTEXT)
+DECL_WINELIB_TYPE_AW(PLOGCONTEXT)
+DECL_WINELIB_TYPE_AW(NPLOGCONTEXT)
+DECL_WINELIB_TYPE_AW(LPLOGCONTEXT)
+
+/* context option values */
+#define CXO_SYSTEM       0x0001
+#define CXO_PEN          0x0002
+#define CXO_MESSAGES     0x0004
+#define CXO_MARGIN       0x8000
+#define CXO_MGNINSIDE    0x4000
+#define CXO_CSRMESSAGES  0x0008  /* 1.1 */
+
+/* context status values */
+#define CXS_DISABLED  0x0001
+#define CXS_OBSCURED  0x0002
+#define CXS_ONTOP     0x0004
+
+/* context lock values */
+#define CXL_INSIZE       0x0001
+#define CXL_INASPECT     0x0002
+#define CXL_SENSITIVITY  0x0004
+#define CXL_MARGIN       0x0008
+#define CXL_SYSOUT       0x0010
+
+/***********************************************************************
+ * EVENT DATA DEFS
+ */
+
+/* For packet structure definition, see pktdef.h */
+
+/* packet status values */
+#define TPS_PROXIMITY  0x0001
+#define TPS_QUEUE_ERR  0x0002
+#define TPS_MARGIN     0x0004
+#define TPS_GRAB       0x0008
+#define TPS_INVERT     0x0010  /* 1.1 */
+
+typedef struct tagORIENTATION {
+    int orAzimuth;
+    int orAltitude;
+    int orTwist;
+} ORIENTATION, *PORIENTATION, *NPORIENTATION, *LPORIENTATION;
+
+typedef struct tagROTATION {  /* 1.1 */
+    int roPitch;
+    int roRoll;
+    int roYaw;
+} ROTATION, *PROTATION, *NPROTATION, *LPROTATION;
+
+/* grandfather in obsolete member names. */
+#define rotPitch  roPitch
+#define rotRoll   roRoll
+#define rotYaw    roYaw
+
+/* relative buttons */
+#define TBN_NONE  0
+#define TBN_UP    1
+#define TBN_DOWN  2
+
+/***********************************************************************
+ * DEVICE CONFIG CONSTANTS
+ */
+
+#ifndef NOWTDEVCFG
+
+#define WTDC_NONE     0
+#define WTDC_CANCEL   1
+#define WTDC_OK       2
+#define WTDC_RESTART  3
+
+#endif
+
+/***********************************************************************
+ * HOOK CONSTANTS
+ */
+
+#ifndef NOWTHOOKS
+
+#define WTH_PLAYBACK  1
+#define WTH_RECORD    2
+
+#define WTHC_GETLPLPFN   (-3)
+#define WTHC_LPLPFNNEXT  (-2)
+#define WTHC_LPFNNEXT    (-1)
+#define WTHC_ACTION      0
+#define WTHC_GETNEXT     1
+#define WTHC_SKIP        2
+
+#endif
+
+/***********************************************************************
+ * PREFERENCE FUNCTION CONSTANTS
+ */
+
+#ifndef NOWTPREF
+
+#define WTP_LPDEFAULT  ((LPVOID)-1L)
+#define WTP_DWDEFAULT  ((DWORD)-1L)
+
+#endif
+
+/***********************************************************************
+ * EXTENSION TAGS AND CONSTANTS
+ */
+
+#ifndef NOWTEXTENSIONS
+
+/* constants for use with pktdef.h */
+#define PKEXT_ABSOLUTE    1
+#define PKEXT_RELATIVE    2
+
+/* Extension tags. */
+#define WTX_OBT       0  /* Out of bounds tracking */
+#define WTX_FKEYS     1  /* Function keys */
+#define WTX_TILT      2  /* Raw Cartesian tilt; 1.1 */
+#define WTX_CSRMASK   3  /* select input by cursor type; 1.1 */
+#define WTX_XBTNMASK  4  /* Extended button mask; 1.1 */
+
+typedef struct tagXBTNMASK {
+    BYTE xBtnDnMask[32];
+    BYTE xBtnUpMask[32];
+} XBTNMASK;
+
+typedef struct tagTILT {  /* 1.1 */
+    int tiltX;
+    int tiltY;
+} TILT;
+
+#endif
+
+/***********************************************************************
+ * Functions
+ */
+
+#ifndef NOWTCALLBACKS
+
+#ifndef NOWTMANAGERFXNS
+
+/* callback function types */
+typedef BOOL (WINAPI * WTENUMPROC)(HCTX, LPARAM);  /* changed CALLBACK->WINAPI, 1.1 */
+typedef BOOL (WINAPI * WTCONFIGPROC)(HCTX, HWND);
+typedef LRESULT (WINAPI * WTHOOKPROC)(int, WPARAM, LPARAM);
+typedef WTHOOKPROC *LPWTHOOKPROC;
+
+#endif
+
+#endif
+
+#ifndef NOWTFUNCTIONS
+
+#ifndef NOWTBASICFXNS
+/* BASIC FUNCTIONS */
+
+#define ORD_WTInfoA       20
+#define ORD_WTInfoW       1020
+#define ORD_WTInfo        WINELIB_NAME_AW(ORD_WTInfo)
+#define ORD_WTOpenA       21
+#define ORD_WTOpenW       1021
+#define ORD_WTOpen        WINELIB_NAME_AW(ORD_WTOpen)
+#define ORD_WTClose       22
+#define ORD_WTPacketsGet  23
+#define ORD_WTPacket      24
+
+UINT WINAPI WTInfoA(UINT, UINT, LPVOID);
+UINT WINAPI WTInfoW(UINT, UINT, LPVOID);
+#define WTInfo WINELIB_NAME_AW(WTInfo)
+HCTX WINAPI WTOpenA(HWND, LPLOGCONTEXTA, BOOL);
+HCTX WINAPI WTOpenW(HWND, LPLOGCONTEXTW, BOOL);
+#define WTOpen WINELIB_NAME_AW(WTOpen)
+BOOL WINAPI WTClose(HCTX);
+int  WINAPI WTPacketsGet(HCTX, int, LPVOID);
+BOOL WINAPI WTPacket(HCTX, UINT, LPVOID);
+
+#endif
+
+#ifndef NOWTVISIBILITYFXNS
+/* VISIBILITY FUNCTIONS */
+
+#define ORD_WTEnable   40
+#define ORD_WTOverlap  41
+
+BOOL WINAPI WTEnable(HCTX, BOOL);
+BOOL WINAPI WTOverlap(HCTX, BOOL);
+
+#endif
+
+#ifndef NOWTCTXEDITFXNS
+/* CONTEXT EDITING FUNCTIONS */
+
+#define ORD_WTConfig   60
+#define ORD_WTGetA     61
+#define ORD_WTGetW     1061
+#define ORD_WTGet      WINELIB_NAME_AW(ORD_WTGet)
+#define ORD_WTSetA     62
+#define ORD_WTSetW     1062
+#define ORD_WTSet      WINELIB_NAME_AW(ORD_WTSet)
+#define ORD_WTExtGet   63
+#define ORD_WTExtSet   64
+#define ORD_WTSave     65
+#define ORD_WTRestore  66
+
+BOOL WINAPI WTConfig(HCTX, HWND);
+BOOL WINAPI WTGetA(HCTX, LPLOGCONTEXTA);
+BOOL WINAPI WTGetW(HCTX, LPLOGCONTEXTW);
+#define WTGet WINELIB_NAME_AW(WTGet)
+BOOL WINAPI WTSetA(HCTX, LPLOGCONTEXTA);
+BOOL WINAPI WTSetW(HCTX, LPLOGCONTEXTW);
+#define WTSet WINELIB_NAME_AW(WTSet)
+BOOL WINAPI WTExtGet(HCTX, UINT, LPVOID);
+BOOL WINAPI WTExtSet(HCTX, UINT, LPVOID);
+BOOL WINAPI WTSave(HCTX, LPVOID);
+HCTX WINAPI WTRestore(HWND, LPVOID, BOOL);
+
+#endif
+
+#ifndef NOWTQUEUEFXNS
+/* ADVANCED PACKET AND QUEUE FUNCTIONS */
+
+#define ORD_WTPacketsPeek   80
+#define ORD_WTDataGet       81
+#define ORD_WTDataPeek      82
+#define ORD_WTQueueSizeGet  84
+#define ORD_WTQueueSizeSet  85
+
+int WINAPI WTPacketsPeek(HCTX, int, LPVOID);
+int WINAPI WTDataGet(HCTX, UINT, UINT, int, LPVOID, LPINT);
+int WINAPI WTDataPeek(HCTX, UINT, UINT, int, LPVOID, LPINT);
+int WINAPI WTQueueSizeGet(HCTX);
+BOOL WINAPI WTQueueSizeSet(HCTX, int);
+
+#endif
+
+#ifndef NOWTHMGRFXNS
+/* MANAGER HANDLE FUNCTIONS */
+
+#define ORD_WTMgrOpen   100
+#define ORD_WTMgrClose  101
+
+HMGR WINAPI WTMgrOpen(HWND, UINT);
+BOOL WINAPI WTMgrClose(HMGR);
+
+#endif
+
+#ifndef NOWTMGRCTXFXNS
+/* MANAGER CONTEXT FUNCTIONS */
+
+#define ORD_WTMgrContextEnum   120
+#define ORD_WTMgrContextOwner  121
+#define ORD_WTMgrDefContext    122
+#define ORD_WTMgrDefContextEx  206
+
+BOOL WINAPI WTMgrContextEnum(HMGR, WTENUMPROC, LPARAM);
+HWND WINAPI WTMgrContextOwner(HMGR, HCTX);
+HCTX WINAPI WTMgrDefContext(HMGR, BOOL);
+HCTX WINAPI WTMgrDefContextEx(HMGR, UINT, BOOL);  /* 1.1 */
+
+#endif
+
+#ifndef NOWTMGRCONFIGFXNS
+/* MANAGER CONFIG BOX  FUNCTIONS */
+
+#define ORD_WTMgrDeviceConfig 140
+
+UINT WINAPI WTMgrDeviceConfig(HMGR, UINT, HWND);
+
+#endif
+
+#ifndef NOWTMGRHOOKFXNS
+/* MANAGER PACKET HOOK FUNCTIONS */
+
+/* OBSOLETE IN WIN32! */
+
+#endif
+
+#ifndef NOWTMGRPREFFXNS
+/* MANAGER PREFERENCE DATA FUNCTIONS */
+
+#define ORD_WTMgrExt                  180
+#define ORD_WTMgrCsrEnable            181
+#define ORD_WTMgrCsrButtonMap         182
+#define ORD_WTMgrCsrPressureBtnMarks  183
+#define ORD_WTMgrCsrPressureResponse  184
+#define ORD_WTMgrCsrExt               185
+
+BOOL WINAPI WTMgrExt(HMGR, UINT, LPVOID);
+BOOL WINAPI WTMgrCsrEnable(HMGR, UINT, BOOL);
+BOOL WINAPI WTMgrCsrButtonMap(HMGR, UINT, LPBYTE, LPBYTE);
+BOOL WINAPI WTMgrCsrPressureBtnMarks(HMGR, UINT, DWORD, DWORD);
+BOOL WINAPI WTMgrCsrPressureResponse(HMGR, UINT, UINT *, UINT *);
+BOOL WINAPI WTMgrCsrExt(HMGR, UINT, UINT, LPVOID);
+
+#endif
+
+/***********************************************************************
+ * Win32 replacements for non-portable functions.
+ */
+
+#ifndef NOWTQUEUEFXNS
+/* ADVANCED PACKET AND QUEUE FUNCTIONS */
+
+#define ORD_WTQueuePacketsEx  200
+
+BOOL WINAPI WTQueuePacketsEx(HCTX, UINT *, UINT *);
+
+#endif
+
+#ifndef NOWTMGRCONFIGFXNS
+/* MANAGER CONFIG BOX FUNCTIONS */
+
+#define ORD_WTMgrConfigReplaceExA  202
+#define ORD_WTMgrConfigReplaceExW  1202
+#define ORD_WTMgrConfigReplaceEx   WINELIB_NAME_AW(ORD_WTMgrConfigReplaceEx)
+
+BOOL WINAPI WTMgrConfigReplaceExA(HMGR, BOOL, LPSTR, LPSTR);
+BOOL WINAPI WTMgrConfigReplaceExW(HMGR, BOOL, LPWSTR, LPSTR);
+#define WTMgrConfigReplaceEx WINELIB_NAME_AW(WTMgrConfigReplaceEx)
+
+#endif
+
+#ifndef NOWTMGRHOOKFXNS
+/* MANAGER PACKET HOOK FUNCTIONS */
+
+#define ORD_WTMgrPacketHookExA   203
+#define ORD_WTMgrPacketHookExW   1203
+#define ORD_WTMgrPacketHookEx    WINELIB_NAME_AW(ORD_WTMgrPacketHookEx)
+#define ORD_WTMgrPacketUnhook    204
+#define ORD_WTMgrPacketHookNext  205
+
+HWTHOOK WINAPI WTMgrPacketHookExA(HMGR, int, LPSTR, LPSTR);
+HWTHOOK WINAPI WTMgrPacketHookExW(HMGR, int, LPWSTR, LPSTR);
+#define WTMgrPacketHookEx WINELIB_NAME_AW(WTMgrPacketHookEx)
+BOOL    WINAPI WTMgrPacketUnhook(HWTHOOK);
+LRESULT WINAPI WTMgrPacketHookNext(HWTHOOK, int, WPARAM, LPARAM);
+
+#endif
+
+#ifndef NOWTMGRPREFFXNS
+/* MANAGER PREFERENCE DATA FUNCTIONS */
+
+#define ORD_WTMgrCsrPressureBtnMarksEx  201
+
+BOOL WINAPI WTMgrCsrPressureBtnMarksEx(HMGR, UINT, UINT *, UINT *);
+
+#endif
+
+#endif
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif /* defined(__WINE_WINTAB_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wintabx.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wintabx.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wintabx.h	(revision 16410)
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 1991-1998 by LCS/Telegraphics
+ * Copyright (C) 2002 Patrik Stridvall
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINTABX_H
+#define __WINE_WINTABX_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+/***********************************************************************
+ * Wintab message crackers
+ */
+
+#ifndef HANDLE_MSG
+# define HANDLE_MSG(hwnd, message, fn) \
+    case (message): return HANDLE_##message((hwnd), (wParam), (lParam), (fn))
+#endif
+
+/* void Cls_OnWintabPacket(HWND hwnd, HCTX hCtx, UINT sn) */
+#define HANDLE_WT_PACKET(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (HCTX)(lParam), (UINT)(wParam)), 0L)
+#define FORWARD__WT_PACKET(hwnd, bs, hCtx, sn, fn) \
+    (void)(fn)((hwnd), _WT_PACKET(bs), (WPARAM)(UINT)(sn), (LPARAM)(HCTX)(hCtx))
+#define FORWARD_WT_PACKET(hwnd, hCtx, sn, fn) \
+    FORWARD__WT_PACKET(hwnd, WT_DEFBASE, hCtx, sn, fn)
+
+/* void Cls_OnWintabCtxOpen(HWND hwnd, HCTX hCtx, UINT sf) */
+#define HANDLE_WT_CTXOPEN(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (HCTX)(wParam), (UINT)(lParam)), 0L)
+#define FORWARD__WT_CTXOPEN(hwnd, bs, hCtx, sf, fn) \
+    (void)(fn)((hwnd), _WT_CTXOPEN(bs), (WPARAM)(HCTX)(hCtx), (LPARAM)(UINT)(sf))
+#define FORWARD_WT_CTXOPEN(hwnd, hCtx, sf, fn) \
+    FORWARD__WT_CTXOPEN(hwnd, WT_DEFBASE, hCtx, sf, fn)
+
+/* void Cls_OnWintabCtxClose(HWND hwnd, HCTX hCtx, UINT sf) */
+#define HANDLE_WT_CTXCLOSE(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (HCTX)(wParam), (UINT)(lParam)), 0L)
+#define FORWARD__WT_CTXCLOSE(hwnd, bs, hCtx, sf, fn) \
+    (void)(fn)((hwnd), _WT_CTXCLOSE(bs), (WPARAM)(HCTX)(hCtx), (LPARAM)(UINT)(sf))
+#define FORWARD_WT_CTXCLOSE(hwnd, hCtx, sf, fn) \
+    FORWARD__WT_CTXCLOSE(hwnd, WT_DEFBASE, hCtx, sf, fn)
+
+/* void Cls_OnWintabCtxUpdate(HWND hwnd, HCTX hCtx, UINT sf) */
+#define HANDLE_WT_CTXUPDATE(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (HCTX)(wParam), (UINT)(lParam)), 0L)
+#define FORWARD__WT_CTXUPDATE(hwnd, bs, hCtx, sf, fn) \
+    (void)(fn)((hwnd), _WT_CTXUPDATE(bs), (WPARAM)(HCTX)(hCtx), (LPARAM)(UINT)(sf))
+#define FORWARD_WT_CTXUPDATE(hwnd, hCtx, sf, fn) \
+    FORWARD__WT_CTXUPDATE(hwnd, WT_DEFBASE, hCtx, sf, fn)
+
+/* void Cls_OnWintabCtxOverlap(HWND hwnd, HCTX hCtx, UINT sf) */
+#define HANDLE_WT_CTXOVERLAP(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (HCTX)(wParam), (UINT)(lParam)), 0L)
+#define FORWARD__WT_CTXOVERLAP(hwnd, bs, hCtx, sf, fn) \
+    (void)(fn)((hwnd), _WT_CTXOVERLAP(bs), (WPARAM)(HCTX)(hCtx), (LPARAM)(UINT)(sf))
+#define FORWARD_WT_CTXOVERLAP(hwnd, hCtx, sf, fn) \
+    FORWARD__WT_CTXOVERLAP(hwnd, WT_DEFBASE, hCtx, sf, fn)
+
+/* void Cls_OnWintabProximity(HWND hwnd, HCTX hCtx, BOOL cp, BOOL hp) */
+#define HANDLE_WT_PROXIMITY(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (HCTX)(wParam), (BOOL)LOWORD(lParam),  (BOOL)HIWORD(lParam)), 0L)
+#define FORWARD__WT_PROXIMITY(hwnd, bs, hCtx, cp, hp, fn) \
+    (void)(fn)((hwnd), _WT_PROXIMITY(bs), (WPARAM)(HCTX)(hCtx), MAKELPARAM((cp), (hp))
+#define FORWARD_WT_PROXIMITY(hwnd, hCtx, sf, fn) \
+    FORWARD__WT_PROXIMITY(hwnd, WT_DEFBASE, hCtx, cp, hp, fn)
+
+/* void Cls_OnWintabInfoChange(HWND hwnd, HMGR hMgr, UINT c, UINT i) */
+#define HANDLE_WT_INFOCHANGE(hwnd, wParam, lParam, fn) \
+    ((fn)((hwnd), (HMGR)(wParam), (UINT)LOWORD(lParam),  (UINT)HIWORD(lParam)), 0L)
+#define FORWARD__WT_INFOCHANGE(hwnd, bs, hMgr, cp, hp, fn) \
+    (void)(fn)((hwnd), _WT_INFOCHANGE(bs), (WPARAM)(HMGR)(hMgr), MAKELPARAM((c), (i))
+#define FORWARD_WT_INFOCHANGE(hwnd, hMgr, sf, fn) \
+    FORWARD__WT_INFOCHANGE(hwnd, WT_DEFBASE, hMgr, cp, hp, fn)
+
+/***********************************************************************
+ * Alternate porting layer macros
+ */
+
+#define GET_WT_PACKET_HCTX(wp, lp)    ((HCTX)lp)
+#define GET_WT_PACKET_SERIAL(wp, lp)  (wp)
+#define GET_WT_PACKET_MPS(h, s)       (s), (LPARAM)(h)
+
+#define GET_WT_CTXOPEN_HCTX(wp, lp)    ((HCTX)wp)
+#define GET_WT_CTXOPEN_STATUS(wp, lp)  ((UINT)lp)
+#define GET_WT_CTXOPEN_MPS(h, s)       (WPARAM)(h), (LPARAM)(s)
+
+#define GET_WT_CTXCLOSE_HCTX(wp, lp)    ((HCTX)wp)
+#define GET_WT_CTXCLOSE_STATUS(wp, lp)  ((UINT)lp)
+#define GET_WT_CTXCLOSE_MPS(h, s)       (WPARAM)(h), (LPARAM)(s)
+
+#define GET_WT_CTXUPDATE_HCTX(wp, lp)    ((HCTX)wp)
+#define GET_WT_CTXUPDATE_STATUS(wp, lp)  ((UINT)lp)
+#define GET_WT_CTXUPDATE_MPS(h, s)       (WPARAM)(h), (LPARAM)(s)
+
+#define GET_WT_CTXOVERLAP_HCTX(wp, lp)    ((HCTX)wp)
+#define GET_WT_CTXOVERLAP_STATUS(wp, lp)  ((UINT)lp)
+#define GET_WT_CTXOVERLAP_MPS(h, s)       (WPARAM)(h), (LPARAM)(s)
+
+#define GET_WT_PROXIMITY_HCTX(wp, lp)      ((HCTX)wp)
+#define GET_WT_PROXIMITY_CTXPROX(wp, lp)   LOWORD(lp)
+#define GET_WT_PROXIMITY_HARDPROX(wp, lp)  HIWORD(lp)
+#define GET_WT_PROXIMITY_MPS(h, fc, fh)    (WPARAM)(h), MAKELONG(fc, fh)
+
+#define GET_WT_INFOCHANGE_HMGR(wp, lp)      ((HMGR)wp)
+#define GET_WT_INFOCHANGE_CATEGORY(wp, lp)  LOWORD(lp)
+#define GET_WT_INFOCHANGE_INDEX(wp, lp)     HIWORD(lp)
+#define GET_WT_INFOCHANGE_MPS(h, c, i)      (WPARAM)(h), MAKELONG(c, i)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif /* defined(__WINE_WINTABX_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winternl.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winternl.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winternl.h	(revision 16410)
@@ -0,0 +1,2499 @@
+/*
+ * Internal NT APIs and data structures
+ *
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINTERNL_H
+#define __WINE_WINTERNL_H
+
+#include <windef.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+
+/**********************************************************************
+ * Fundamental types and data structures
+ */
+
+#ifndef WINE_NTSTATUS_DECLARED
+#define WINE_NTSTATUS_DECLARED
+typedef LONG NTSTATUS;
+#endif
+
+typedef CONST char *PCSZ;
+
+typedef short CSHORT;
+typedef CSHORT *PCSHORT;
+
+#ifndef __STRING_DEFINED__
+#define __STRING_DEFINED__
+typedef struct _STRING {
+  USHORT Length;
+  USHORT MaximumLength;
+  PCHAR Buffer;
+} STRING, *PSTRING;
+#endif
+
+typedef STRING ANSI_STRING;
+typedef PSTRING PANSI_STRING;
+typedef const STRING *PCANSI_STRING;
+
+typedef STRING OEM_STRING;
+typedef PSTRING POEM_STRING;
+typedef const STRING *PCOEM_STRING;
+
+#ifndef __UNICODE_STRING_DEFINED__
+#define __UNICODE_STRING_DEFINED__
+typedef struct _UNICODE_STRING {
+  USHORT Length;        /* bytes */
+  USHORT MaximumLength; /* bytes */
+  PWSTR  Buffer;
+} UNICODE_STRING, *PUNICODE_STRING;
+#endif
+
+typedef const UNICODE_STRING *PCUNICODE_STRING;
+
+#ifndef _FILETIME_
+#define _FILETIME_
+/* 64 bit number of 100 nanoseconds intervals since January 1, 1601 */
+typedef struct _FILETIME
+{
+#ifdef WORDS_BIGENDIAN
+  DWORD  dwHighDateTime;
+  DWORD  dwLowDateTime;
+#else
+  DWORD  dwLowDateTime;
+  DWORD  dwHighDateTime;
+#endif
+} FILETIME, *PFILETIME, *LPFILETIME;
+#endif /* _FILETIME_ */
+
+/*
+ * RTL_SYSTEM_TIME and RTL_TIME_ZONE_INFORMATION are the same as
+ * the SYSTEMTIME and TIME_ZONE_INFORMATION structures defined
+ * in winbase.h, however we need to define them separately so
+ * winternl.h doesn't depend on winbase.h.  They are used by
+ * RtlQueryTimeZoneInformation and RtlSetTimeZoneInformation.
+ * The names are guessed; if anybody knows the real names, let me know.
+ */
+typedef struct _RTL_SYSTEM_TIME {
+    WORD wYear;
+    WORD wMonth;
+    WORD wDayOfWeek;
+    WORD wDay;
+    WORD wHour;
+    WORD wMinute;
+    WORD wSecond;
+    WORD wMilliseconds;
+} RTL_SYSTEM_TIME, *PRTL_SYSTEM_TIME;
+
+typedef struct _RTL_TIME_ZONE_INFORMATION {
+    LONG Bias;
+    WCHAR StandardName[32];
+    RTL_SYSTEM_TIME StandardDate;
+    LONG StandardBias;
+    WCHAR DaylightName[32];
+    RTL_SYSTEM_TIME DaylightDate;
+    LONG DaylightBias;
+} RTL_TIME_ZONE_INFORMATION, *PRTL_TIME_ZONE_INFORMATION;
+
+typedef struct _CLIENT_ID
+{
+   HANDLE UniqueProcess;
+   HANDLE UniqueThread;
+} CLIENT_ID, *PCLIENT_ID;
+
+typedef struct _CURDIR
+{
+    UNICODE_STRING DosPath;
+    PVOID Handle;
+} CURDIR, *PCURDIR;
+
+typedef struct RTL_DRIVE_LETTER_CURDIR
+{
+    USHORT              Flags;
+    USHORT              Length;
+    ULONG               TimeStamp;
+    UNICODE_STRING      DosPath;
+} RTL_DRIVE_LETTER_CURDIR, *PRTL_DRIVE_LETTER_CURDIR;
+
+typedef struct tagRTL_BITMAP {
+    ULONG  SizeOfBitMap; /* Number of bits in the bitmap */
+    PULONG Buffer; /* Bitmap data, assumed sized to a DWORD boundary */
+} RTL_BITMAP, *PRTL_BITMAP;
+
+typedef const RTL_BITMAP *PCRTL_BITMAP;
+
+typedef struct tagRTL_BITMAP_RUN {
+    ULONG StartingIndex; /* Bit position at which run starts */
+    ULONG NumberOfBits;  /* Size of the run in bits */
+} RTL_BITMAP_RUN, *PRTL_BITMAP_RUN;
+
+typedef const RTL_BITMAP_RUN *PCRTL_BITMAP_RUN;
+
+typedef struct _RTL_USER_PROCESS_PARAMETERS
+{
+    ULONG               AllocationSize;
+    ULONG               Size;
+    ULONG               Flags;
+    ULONG               DebugFlags;
+    HANDLE              ConsoleHandle;
+    ULONG               ConsoleFlags;
+    HANDLE              hStdInput;
+    HANDLE              hStdOutput;
+    HANDLE              hStdError;
+    CURDIR              CurrentDirectory;
+    UNICODE_STRING      DllPath;
+    UNICODE_STRING      ImagePathName;
+    UNICODE_STRING      CommandLine;
+    PWSTR               Environment;
+    ULONG               dwX;
+    ULONG               dwY;
+    ULONG               dwXSize;
+    ULONG               dwYSize;
+    ULONG               dwXCountChars;
+    ULONG               dwYCountChars;
+    ULONG               dwFillAttribute;
+    ULONG               dwFlags;
+    ULONG               wShowWindow;
+    UNICODE_STRING      WindowTitle;
+    UNICODE_STRING      Desktop;
+    UNICODE_STRING      ShellInfo;
+    UNICODE_STRING      RuntimeInfo;
+    RTL_DRIVE_LETTER_CURDIR DLCurrentDirectory[0x20];
+} RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;
+
+/* value for Flags field (FIXME: not the correct name) */
+#define PROCESS_PARAMS_FLAG_NORMALIZED 1
+
+typedef struct _PEB_LDR_DATA
+{
+    ULONG               Length;
+    BOOLEAN             Initialized;
+    PVOID               SsHandle;
+    LIST_ENTRY          InLoadOrderModuleList;
+    LIST_ENTRY          InMemoryOrderModuleList;
+    LIST_ENTRY          InInitializationOrderModuleList;
+} PEB_LDR_DATA, *PPEB_LDR_DATA;
+
+typedef struct _GDI_TEB_BATCH
+{
+    ULONG  Offset;
+    HANDLE HDC;
+    ULONG  Buffer[0x136];
+} GDI_TEB_BATCH;
+
+typedef struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME
+{
+    struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME *Previous;
+    struct _ACTIVATION_CONTEXT                 *ActivationContext;
+    ULONG                                       Flags;
+} RTL_ACTIVATION_CONTEXT_STACK_FRAME, *PRTL_ACTIVATION_CONTEXT_STACK_FRAME;
+
+typedef struct _ACTIVATION_CONTEXT_STACK
+{
+    ULONG                               Flags;
+    ULONG                               NextCookieSequenceNumber;
+    RTL_ACTIVATION_CONTEXT_STACK_FRAME *ActiveFrame;
+    LIST_ENTRY                          FrameListCache;
+} ACTIVATION_CONTEXT_STACK, *PACTIVATION_CONTEXT_STACK;
+
+/***********************************************************************
+ * PEB data structure
+ */
+typedef struct _PEB
+{
+    BOOLEAN                      InheritedAddressSpace;             /*  00 */
+    BOOLEAN                      ReadImageFileExecOptions;          /*  01 */
+    BOOLEAN                      BeingDebugged;                     /*  02 */
+    BOOLEAN                      SpareBool;                         /*  03 */
+    HANDLE                       Mutant;                            /*  04 */
+    HMODULE                      ImageBaseAddress;                  /*  08 */
+    PPEB_LDR_DATA                LdrData;                           /*  0c */
+    RTL_USER_PROCESS_PARAMETERS *ProcessParameters;                 /*  10 */
+    PVOID                        SubSystemData;                     /*  14 */
+    HANDLE                       ProcessHeap;                       /*  18 */
+    PRTL_CRITICAL_SECTION        FastPebLock;                       /*  1c */
+    PVOID /*PPEBLOCKROUTINE*/    FastPebLockRoutine;                /*  20 */
+    PVOID /*PPEBLOCKROUTINE*/    FastPebUnlockRoutine;              /*  24 */
+    ULONG                        EnvironmentUpdateCount;            /*  28 */
+    PVOID                        KernelCallbackTable;               /*  2c */
+    PVOID                        EventLogSection;                   /*  30 */
+    PVOID                        EventLog;                          /*  34 */
+    PVOID /*PPEB_FREE_BLOCK*/    FreeList;                          /*  38 */
+    ULONG                        TlsExpansionCounter;               /*  3c */
+    PRTL_BITMAP                  TlsBitmap;                         /*  40 */
+    ULONG                        TlsBitmapBits[2];                  /*  44 */
+    PVOID                        ReadOnlySharedMemoryBase;          /*  4c */
+    PVOID                        ReadOnlySharedMemoryHeap;          /*  50 */
+    PVOID                       *ReadOnlyStaticServerData;          /*  54 */
+    PVOID                        AnsiCodePageData;                  /*  58 */
+    PVOID                        OemCodePageData;                   /*  5c */
+    PVOID                        UnicodeCaseTableData;              /*  60 */
+    ULONG                        NumberOfProcessors;                /*  64 */
+    ULONG                        NtGlobalFlag;                      /*  68 */
+    BYTE                         Spare2[4];                         /*  6c */
+    LARGE_INTEGER                CriticalSectionTimeout;            /*  70 */
+    ULONG                        HeapSegmentReserve;                /*  78 */
+    ULONG                        HeapSegmentCommit;                 /*  7c */
+    ULONG                        HeapDeCommitTotalFreeThreshold;    /*  80 */
+    ULONG                        HeapDeCommitFreeBlockThreshold;    /*  84 */
+    ULONG                        NumberOfHeaps;                     /*  88 */
+    ULONG                        MaximumNumberOfHeaps;              /*  8c */
+    PVOID                       *ProcessHeaps;                      /*  90 */
+    PVOID                        GdiSharedHandleTable;              /*  94 */
+    PVOID                        ProcessStarterHelper;              /*  98 */
+    PVOID                        GdiDCAttributeList;                /*  9c */
+    PVOID                        LoaderLock;                        /*  a0 */
+    ULONG                        OSMajorVersion;                    /*  a4 */
+    ULONG                        OSMinorVersion;                    /*  a8 */
+    ULONG                        OSBuildNumber;                     /*  ac */
+    ULONG                        OSPlatformId;                      /*  b0 */
+    ULONG                        ImageSubSystem;                    /*  b4 */
+    ULONG                        ImageSubSystemMajorVersion;        /*  b8 */
+    ULONG                        ImageSubSystemMinorVersion;        /*  bc */
+    ULONG                        ImageProcessAffinityMask;          /*  c0 */
+    ULONG                        GdiHandleBuffer[34];               /*  c4 */
+    ULONG                        PostProcessInitRoutine;            /* 14c */
+    PRTL_BITMAP                  TlsExpansionBitmap;                /* 150 */
+    ULONG                        TlsExpansionBitmapBits[32];        /* 154 */
+    ULONG                        SessionId;                         /* 1d4 */
+    ULARGE_INTEGER               AppCompatFlags;                    /* 1d8 */
+    ULARGE_INTEGER               AppCompatFlagsUser;                /* 1e0 */
+    PVOID                        ShimData;                          /* 1e8 */
+    PVOID                        AppCompatInfo;                     /* 1ec */
+    UNICODE_STRING               CSDVersion;                        /* 1f0 */
+    PVOID                        ActivationContextData;             /* 1f8 */
+    PVOID                        ProcessAssemblyStorageMap;         /* 1fc */
+    PVOID                        SystemDefaultActivationData;       /* 200 */
+    PVOID                        SystemAssemblyStorageMap;          /* 204 */
+    ULONG                        MinimumStackCommit;                /* 208 */
+    PVOID                       *FlsCallback;                       /* 20c */
+    LIST_ENTRY                   FlsListHead;                       /* 210 */
+    PRTL_BITMAP                  FlsBitmap;                         /* 218 */
+    ULONG                        FlsBitmapBits[4];                  /* 21c */
+} PEB, *PPEB;
+
+
+/***********************************************************************
+ * TEB data structure
+ */
+typedef struct _TEB
+{
+    NT_TIB          Tib;                        /* 000 */
+    PVOID           EnvironmentPointer;         /* 01c */
+    CLIENT_ID       ClientId;                   /* 020 */
+    PVOID           ActiveRpcHandle;            /* 028 */
+    PVOID           ThreadLocalStoragePointer;  /* 02c */
+    PPEB            Peb;                        /* 030 */
+    ULONG           LastErrorValue;             /* 034 */
+    ULONG           CountOfOwnedCriticalSections;/* 038 */
+    PVOID           CsrClientThread;            /* 03c */
+    PVOID           Win32ThreadInfo;            /* 040 */
+    ULONG           Win32ClientInfo[31];        /* 044 used for user32 private data in Wine */
+    PVOID           WOW32Reserved;              /* 0c0 */
+    ULONG           CurrentLocale;              /* 0c4 */
+    ULONG           FpSoftwareStatusRegister;   /* 0c8 */
+    PVOID           SystemReserved1[54];        /* 0cc used for kernel32 private data in Wine */
+    LONG            ExceptionCode;              /* 1a4 */
+    ACTIVATION_CONTEXT_STACK ActivationContextStack; /* 1a8 */
+    BYTE            SpareBytes1[24];            /* 1bc used for ntdll private data in Wine */
+    PVOID           SystemReserved2[10];        /* 1d4 used for ntdll private data in Wine */
+    GDI_TEB_BATCH   GdiTebBatch;                /* 1fc used for vm86 private data in Wine */
+    ULONG           gdiRgn;                     /* 6dc */
+    ULONG           gdiPen;                     /* 6e0 */
+    ULONG           gdiBrush;                   /* 6e4 */
+    CLIENT_ID       RealClientId;               /* 6e8 */
+    HANDLE          GdiCachedProcessHandle;     /* 6f0 */
+    ULONG           GdiClientPID;               /* 6f4 */
+    ULONG           GdiClientTID;               /* 6f8 */
+    PVOID           GdiThreadLocaleInfo;        /* 6fc */
+    PVOID           UserReserved[5];            /* 700 */
+    PVOID           glDispachTable[280];        /* 714 */
+    ULONG           glReserved1[26];            /* b74 */
+    PVOID           glReserved2;                /* bdc */
+    PVOID           glSectionInfo;              /* be0 */
+    PVOID           glSection;                  /* be4 */
+    PVOID           glTable;                    /* be8 */
+    PVOID           glCurrentRC;                /* bec */
+    PVOID           glContext;                  /* bf0 */
+    ULONG           LastStatusValue;            /* bf4 */
+    UNICODE_STRING  StaticUnicodeString;        /* bf8 used by advapi32 */
+    WCHAR           StaticUnicodeBuffer[261];   /* c00 used by advapi32 */
+    PVOID           DeallocationStack;          /* e0c */
+    PVOID           TlsSlots[64];               /* e10 */
+    LIST_ENTRY      TlsLinks;                   /* f10 */
+    PVOID           Vdm;                        /* f18 */
+    PVOID           ReservedForNtRpc;           /* f1c */
+    PVOID           DbgSsReserved[2];           /* f20 */
+    ULONG           HardErrorDisabled;          /* f28 */
+    PVOID           Instrumentation[16];        /* f2c */
+    PVOID           WinSockData;                /* f6c */
+    ULONG           GdiBatchCount;              /* f70 */
+    ULONG           Spare2;                     /* f74 */
+    ULONG           Spare3;                     /* f78 */
+    ULONG           Spare4;                     /* f7c */
+    PVOID           ReservedForOle;             /* f80 */
+    ULONG           WaitingOnLoaderLock;        /* f84 */
+    PVOID           Reserved5[3];               /* f88 */
+    PVOID          *TlsExpansionSlots;          /* f94 */
+    ULONG           ImpersonationLocale;        /* f98 */
+    ULONG           IsImpersonating;            /* f9c */
+    PVOID           NlsCache;                   /* fa0 */
+    PVOID           ShimData;                   /* fa4 */
+    ULONG           HeapVirtualAffinity;        /* fa8 */
+    PVOID           CurrentTransactionHandle;   /* fac */
+    PVOID           ActiveFrame;                /* fb0 */
+    PVOID          *FlsSlots;                   /* fb4 */
+} TEB, *PTEB;
+
+/***********************************************************************
+ * Enums
+ */
+
+typedef enum _FILE_INFORMATION_CLASS {
+    FileDirectoryInformation = 1,
+    FileFullDirectoryInformation,
+    FileBothDirectoryInformation,
+    FileBasicInformation,
+    FileStandardInformation,
+    FileInternalInformation,
+    FileEaInformation,
+    FileAccessInformation,
+    FileNameInformation,
+    FileRenameInformation,
+    FileLinkInformation,
+    FileNamesInformation,
+    FileDispositionInformation,
+    FilePositionInformation,
+    FileFullEaInformation,
+    FileModeInformation,
+    FileAlignmentInformation,
+    FileAllInformation,
+    FileAllocationInformation,
+    FileEndOfFileInformation,
+    FileAlternateNameInformation,
+    FileStreamInformation,
+    FilePipeInformation,
+    FilePipeLocalInformation,
+    FilePipeRemoteInformation,
+    FileMailslotQueryInformation,
+    FileMailslotSetInformation,
+    FileCompressionInformation,
+    FileObjectIdInformation,
+    FileCompletionInformation,
+    FileMoveClusterInformation,
+    FileQuotaInformation,
+    FileReparsePointInformation,
+    FileNetworkOpenInformation,
+    FileAttributeTagInformation,
+    FileTrackingInformation,
+    FileMaximumInformation
+} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
+
+typedef struct _FILE_DIRECTORY_INFORMATION {
+    ULONG               NextEntryOffset;
+    ULONG               FileIndex;
+    LARGE_INTEGER       CreationTime;
+    LARGE_INTEGER       LastAccessTime;
+    LARGE_INTEGER       LastWriteTime;
+    LARGE_INTEGER       ChangeTime;
+    LARGE_INTEGER       EndOfFile;
+    LARGE_INTEGER       AllocationSize;
+    ULONG               FileAttributes;
+    ULONG               FileNameLength;
+    WCHAR               FileName[ANYSIZE_ARRAY];
+} FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION;
+
+typedef struct _FILE_FULL_DIRECTORY_INFORMATION {
+    ULONG               NextEntryOffset;
+    ULONG               FileIndex;
+    LARGE_INTEGER       CreationTime;
+    LARGE_INTEGER       LastAccessTime;
+    LARGE_INTEGER       LastWriteTime;
+    LARGE_INTEGER       ChangeTime;
+    LARGE_INTEGER       EndOfFile;
+    LARGE_INTEGER       AllocationSize;
+    ULONG               FileAttributes;
+    ULONG               FileNameLength;
+    ULONG               EaSize;
+    WCHAR               FileName[ANYSIZE_ARRAY];
+} FILE_FULL_DIRECTORY_INFORMATION, *PFILE_FULL_DIRECTORY_INFORMATION,
+  FILE_FULL_DIR_INFORMATION, *PFILE_FULL_DIR_INFORMATION;
+
+typedef struct _FILE_BOTH_DIRECTORY_INFORMATION {
+    ULONG               NextEntryOffset;
+    ULONG               FileIndex;
+    LARGE_INTEGER       CreationTime;
+    LARGE_INTEGER       LastAccessTime;
+    LARGE_INTEGER       LastWriteTime;
+    LARGE_INTEGER       ChangeTime;
+    LARGE_INTEGER       EndOfFile;
+    LARGE_INTEGER       AllocationSize;
+    ULONG               FileAttributes;
+    ULONG               FileNameLength;
+    ULONG               EaSize;
+    CHAR                ShortNameLength;
+    WCHAR               ShortName[12];
+    WCHAR               FileName[ANYSIZE_ARRAY];
+} FILE_BOTH_DIRECTORY_INFORMATION, *PFILE_BOTH_DIRECTORY_INFORMATION,
+  FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;
+
+typedef struct _FILE_BASIC_INFORMATION {
+    LARGE_INTEGER CreationTime;
+    LARGE_INTEGER LastAccessTime;
+    LARGE_INTEGER LastWriteTime;
+    LARGE_INTEGER ChangeTime;
+    ULONG FileAttributes;
+} FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
+
+typedef struct _FILE_STANDARD_INFORMATION {
+    LARGE_INTEGER AllocationSize;
+    LARGE_INTEGER EndOfFile;
+    ULONG NumberOfLinks;
+    BOOLEAN DeletePending;
+    BOOLEAN Directory;
+} FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;
+
+typedef struct _FILE_INTERNAL_INFORMATION {
+    LARGE_INTEGER IndexNumber;
+} FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;
+
+typedef struct _FILE_EA_INFORMATION {
+    ULONG EaSize;
+} FILE_EA_INFORMATION, *PFILE_EA_INFORMATION;
+
+typedef struct _FILE_ACCESS_INFORMATION {
+    ACCESS_MASK AccessFlags;
+} FILE_ACCESS_INFORMATION, *PFILE_ACCESS_INFORMATION;
+
+typedef struct _FILE_NAME_INFORMATION {
+    ULONG FileNameLength;
+    WCHAR FileName[1];
+} FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
+
+typedef struct _FILE_RENAME_INFORMATION {
+    BOOLEAN Replace;
+    HANDLE RootDir;
+    ULONG FileNameLength;
+    WCHAR FileName[1];
+} FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;
+
+typedef struct _FILE_NAMES_INFORMATION {
+    ULONG NextEntryOffset;
+    ULONG FileIndex;
+    ULONG FileNameLength;
+    WCHAR FileName[1];
+} FILE_NAMES_INFORMATION, *PFILE_NAMES_INFORMATION;
+
+typedef struct _FILE_DISPOSITION_INFORMATION {
+    BOOLEAN DoDeleteFile;
+} FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION;
+
+typedef struct _FILE_POSITION_INFORMATION {
+    LARGE_INTEGER CurrentByteOffset;
+} FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;
+
+typedef struct _FILE_ALIGNMENT_INFORMATION {
+    ULONG AlignmentRequirement;
+} FILE_ALIGNMENT_INFORMATION, *PFILE_ALIGNMENT_INFORMATION;
+
+typedef struct _FILE_ALLOCATION_INFORMATION {
+    LARGE_INTEGER AllocationSize;
+} FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION;
+
+typedef struct _FILE_END_OF_FILE_INFORMATION {
+    LARGE_INTEGER EndOfFile;
+} FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;
+
+typedef struct _FILE_NETWORK_OPEN_INFORMATION {
+    LARGE_INTEGER CreationTime;
+    LARGE_INTEGER LastAccessTime;
+    LARGE_INTEGER LastWriteTime;
+    LARGE_INTEGER ChangeTime;
+    LARGE_INTEGER AllocationSize;
+    LARGE_INTEGER EndOfFile;
+    ULONG FileAttributes;
+} FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;
+
+typedef struct _FILE_FULL_EA_INFORMATION {
+    ULONG NextEntryOffset;
+    UCHAR Flags;
+    UCHAR EaNameLength;
+    USHORT EaValueLength;
+    CHAR EaName[1];
+} FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
+
+typedef struct _FILE_MODE_INFORMATION {
+    ULONG Mode;
+} FILE_MODE_INFORMATION, *PFILE_MODE_INFORMATION;
+
+typedef struct _FILE_STREAM_INFORMATION
+{
+    ULONG NextEntryOffset;
+    ULONG StreamNameLength;
+    LARGE_INTEGER StreamSize;
+    LARGE_INTEGER StreamAllocationSize;
+    WCHAR StreamName[1];
+} FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
+
+typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION
+{
+    ULONG FileAttributes;
+    ULONG ReparseTag;
+} FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION;
+
+typedef struct _FILE_MAILSLOT_QUERY_INFORMATION {
+    ULONG MaximumMessageSize;
+    ULONG MailslotQuota;
+    ULONG NextMessageSize;
+    ULONG MessagesAvailable;
+    LARGE_INTEGER ReadTimeout;
+} FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION;
+
+typedef struct _FILE_MAILSLOT_SET_INFORMATION {
+    LARGE_INTEGER ReadTimeout;
+} FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION;
+
+typedef struct _FILE_PIPE_LOCAL_INFORMATION {
+    ULONG NamedPipeType;
+    ULONG NamedPipeConfiguration;
+    ULONG MaximumInstances;
+    ULONG CurrentInstances;
+    ULONG InboundQuota;
+    ULONG ReadDataAvailable;
+    ULONG OutboundQuota;
+    ULONG WriteQuotaAvailable;
+    ULONG NamedPipeState;
+    ULONG NamedPipeEnd;
+} FILE_PIPE_LOCAL_INFORMATION, *PFILE_PIPE_LOCAL_INFORMATION;
+
+typedef struct _FILE_ALL_INFORMATION {
+    FILE_BASIC_INFORMATION     BasicInformation;
+    FILE_STANDARD_INFORMATION  StandardInformation;
+    FILE_INTERNAL_INFORMATION  InternalInformation;
+    FILE_EA_INFORMATION        EaInformation;
+    FILE_ACCESS_INFORMATION    AccessInformation;
+    FILE_POSITION_INFORMATION  PositionInformation;
+    FILE_MODE_INFORMATION      ModeInformation;
+    FILE_ALIGNMENT_INFORMATION AlignmentInformation;
+    FILE_NAME_INFORMATION      NameInformation;
+} FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION;
+
+typedef enum _FSINFOCLASS {
+    FileFsVolumeInformation = 1,
+    FileFsLabelInformation,
+    FileFsSizeInformation,
+    FileFsDeviceInformation,
+    FileFsAttributeInformation,
+    FileFsControlInformation,
+    FileFsFullSizeInformation,
+    FileFsObjectIdInformation,
+    FileFsMaximumInformation
+} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
+
+typedef enum _KEY_INFORMATION_CLASS {
+    KeyBasicInformation,
+    KeyNodeInformation,
+    KeyFullInformation
+} KEY_INFORMATION_CLASS;
+
+typedef enum _KEY_VALUE_INFORMATION_CLASS {
+    KeyValueBasicInformation,
+    KeyValueFullInformation,
+    KeyValuePartialInformation,
+    KeyValueFullInformationAlign64,
+    KeyValuePartialInformationAlign64
+} KEY_VALUE_INFORMATION_CLASS;
+
+typedef enum _OBJECT_INFORMATION_CLASS {
+    ObjectBasicInformation,
+    ObjectNameInformation,
+    ObjectTypeInformation,
+    ObjectAllInformation,
+    ObjectDataInformation
+} OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS;
+
+typedef enum _PROCESSINFOCLASS {
+    ProcessBasicInformation = 0,
+    ProcessQuotaLimits = 1,
+    ProcessIoCounters = 2,
+    ProcessVmCounters = 3,
+    ProcessTimes = 4,
+    ProcessBasePriority = 5,
+    ProcessRaisePriority = 6,
+    ProcessDebugPort = 7,
+    ProcessExceptionPort = 8,
+    ProcessAccessToken = 9,
+    ProcessLdtInformation = 10,
+    ProcessLdtSize = 11,
+    ProcessDefaultHardErrorMode = 12,
+    ProcessIoPortHandlers = 13,
+    ProcessPooledUsageAndLimits = 14,
+    ProcessWorkingSetWatch = 15,
+    ProcessUserModeIOPL = 16,
+    ProcessEnableAlignmentFaultFixup = 17,
+    ProcessPriorityClass = 18,
+    ProcessWx86Information = 19,
+    ProcessHandleCount = 20,
+    ProcessAffinityMask = 21,
+    ProcessPriorityBoost = 22,
+    ProcessDeviceMap = 23,
+    ProcessSessionInformation = 24,
+    ProcessForegroundInformation = 25,
+    ProcessWow64Information = 26,
+    ProcessImageFileName = 27,
+    ProcessLUIDDeviceMapsEnabled = 28,
+    ProcessBreakOnTermination = 29,
+    ProcessDebugObjectHandle = 30,
+    ProcessDebugFlags = 31,
+    ProcessHandleTracing = 32,
+    ProcessExecuteFlags = 34,
+    MaxProcessInfoClass
+} PROCESSINFOCLASS, PROCESS_INFORMATION_CLASS;
+
+#define MEM_EXECUTE_OPTION_DISABLE   0x01
+#define MEM_EXECUTE_OPTION_ENABLE    0x02
+#define MEM_EXECUTE_OPTION_PERMANENT 0x08
+
+typedef enum _SECTION_INHERIT {
+    ViewShare = 1,
+    ViewUnmap = 2
+} SECTION_INHERIT;
+
+typedef enum _SYSTEM_INFORMATION_CLASS {
+    SystemBasicInformation = 0,
+    SystemCpuInformation = 1,
+    SystemPerformanceInformation = 2,
+    SystemTimeOfDayInformation = 3, /* was SystemTimeInformation */
+    Unknown4,
+    SystemProcessInformation = 5,
+    Unknown6,
+    Unknown7,
+    SystemProcessorPerformanceInformation = 8,
+    Unknown9,
+    Unknown10,
+    SystemModuleInformation = 11,
+    Unknown12,
+    Unknown13,
+    Unknown14,
+    Unknown15,
+    SystemHandleInformation = 16,
+    Unknown17,
+    SystemPageFileInformation = 18,
+    Unknown19,
+    Unknown20,
+    SystemCacheInformation = 21,
+    Unknown22,
+    SystemInterruptInformation = 23,
+    SystemDpcBehaviourInformation = 24,
+    SystemFullMemoryInformation = 25,
+    SystemNotImplemented6 = 25,
+    SystemLoadImage = 26,
+    SystemUnloadImage = 27,
+    SystemTimeAdjustmentInformation = 28,
+    SystemTimeAdjustment = 28,
+    SystemSummaryMemoryInformation = 29,
+    SystemNotImplemented7 = 29,
+    SystemNextEventIdInformation = 30,
+    SystemNotImplemented8 = 30,
+    SystemEventIdsInformation = 31,
+    SystemCrashDumpInformation = 32,
+    SystemExceptionInformation = 33,
+    SystemCrashDumpStateInformation = 34,
+    SystemKernelDebuggerInformation = 35,
+    SystemContextSwitchInformation = 36,
+    SystemRegistryQuotaInformation = 37,
+    SystemCurrentTimeZoneInformation = 44,
+    SystemTimeZoneInformation = 44,
+    SystemLookasideInformation = 45,
+    SystemSetTimeSlipEvent = 46,
+    SystemCreateSession = 47,
+    SystemDeleteSession = 48,
+    SystemInvalidInfoClass4 = 49,
+    SystemRangeStartInformation = 50,
+    SystemVerifierInformation = 51,
+    SystemAddVerifier = 52,
+    SystemSessionProcessesInformation	= 53,
+    SystemInformationClassMax
+} SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS;
+
+typedef enum _TIMER_TYPE {
+    NotificationTimer,
+    SynchronizationTimer
+} TIMER_TYPE;
+
+typedef enum _THREADINFOCLASS {
+    ThreadBasicInformation,
+    ThreadTimes,
+    ThreadPriority,
+    ThreadBasePriority,
+    ThreadAffinityMask,
+    ThreadImpersonationToken,
+    ThreadDescriptorTableEntry,
+    ThreadEnableAlignmentFaultFixup,
+    ThreadEventPair_Reusable,
+    ThreadQuerySetWin32StartAddress,
+    ThreadZeroTlsCell,
+    ThreadPerformanceCount,
+    ThreadAmILastThread,
+    ThreadIdealProcessor,
+    ThreadPriorityBoost,
+    ThreadSetTlsArrayAddress,
+    ThreadIsIoPending,
+    MaxThreadInfoClass
+} THREADINFOCLASS;
+
+typedef struct _THREAD_BASIC_INFORMATION
+{
+    NTSTATUS  ExitStatus;
+    PVOID     TebBaseAddress;
+    CLIENT_ID ClientId;
+    ULONG_PTR AffinityMask;
+    LONG      Priority;
+    LONG      BasePriority;
+} THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION;
+
+typedef struct _THREAD_DESCRIPTOR_INFORMATION
+{
+    DWORD       Selector;
+    LDT_ENTRY   Entry;
+} THREAD_DESCRIPTOR_INFORMATION, *PTHREAD_DESCRIPTOR_INFORMATION;
+
+typedef struct _KERNEL_USER_TIMES {
+    LARGE_INTEGER  CreateTime;
+    LARGE_INTEGER  ExitTime;
+    LARGE_INTEGER  KernelTime;
+    LARGE_INTEGER  UserTime;
+} KERNEL_USER_TIMES, *PKERNEL_USER_TIMES;
+
+typedef enum _WINSTATIONINFOCLASS {
+    WinStationInformation = 8
+} WINSTATIONINFOCLASS;
+
+typedef enum _MEMORY_INFORMATION_CLASS {
+    MemoryBasicInformation,
+    MemoryWorkingSetList,
+    MemorySectionName,
+    MemoryBasicVlmInformation
+} MEMORY_INFORMATION_CLASS;
+
+typedef enum _MUTANT_INFORMATION_CLASS
+{
+    MutantBasicInformation
+} MUTANT_INFORMATION_CLASS, *PMUTANT_INFORMATION_CLASS;
+
+typedef struct _MUTANT_BASIC_INFORMATION {
+    LONG        CurrentCount;
+    BOOLEAN     OwnedByCaller;
+    BOOLEAN     AbandonedState;
+} MUTANT_BASIC_INFORMATION, *PMUTANT_BASIC_INFORMATION;
+
+typedef enum _TIMER_INFORMATION_CLASS
+{
+    TimerBasicInformation = 0
+} TIMER_INFORMATION_CLASS;
+
+typedef struct _TIMER_BASIC_INFORMATION
+{
+    LARGE_INTEGER RemainingTime;
+    BOOLEAN       TimerState;
+} TIMER_BASIC_INFORMATION, *PTIMER_BASIC_INFORMATION;
+
+
+/* return type of RtlDetermineDosPathNameType_U (FIXME: not the correct names) */
+typedef enum
+{
+    INVALID_PATH = 0,
+    UNC_PATH,              /* "//foo" */
+    ABSOLUTE_DRIVE_PATH,   /* "c:/foo" */
+    RELATIVE_DRIVE_PATH,   /* "c:foo" */
+    ABSOLUTE_PATH,         /* "/foo" */
+    RELATIVE_PATH,         /* "foo" */
+    DEVICE_PATH,           /* "//./foo" */
+    UNC_DOT_PATH           /* "//." */
+} DOS_PATHNAME_TYPE;
+
+/***********************************************************************
+ * IA64 specific types and data structures
+ */
+
+#ifdef __ia64__
+
+typedef struct _FRAME_POINTERS {
+  ULONGLONG MemoryStackFp;
+  ULONGLONG BackingStoreFp;
+} FRAME_POINTERS, *PFRAME_POINTERS;
+
+#define UNWIND_HISTORY_TABLE_SIZE 12
+
+typedef struct _RUNTIME_FUNCTION {
+  ULONG BeginAddress;
+  ULONG EndAddress;
+  ULONG UnwindInfoAddress;
+} RUNTIME_FUNCTION, *PRUNTIME_FUNCTION;
+
+typedef struct _UNWIND_HISTORY_TABLE_ENTRY {
+  ULONG64 ImageBase;
+  ULONG64 Gp;
+  PRUNTIME_FUNCTION FunctionEntry;
+} UNWIND_HISTORY_TABLE_ENTRY, *PUNWIND_HISTORY_TABLE_ENTRY;
+
+typedef struct _UNWIND_HISTORY_TABLE {
+  ULONG Count;
+  UCHAR Search;
+  ULONG64 LowAddress;
+  ULONG64 HighAddress;
+  UNWIND_HISTORY_TABLE_ENTRY Entry[UNWIND_HISTORY_TABLE_SIZE];
+} UNWIND_HISTORY_TABLE, *PUNWIND_HISTORY_TABLE;
+
+#endif /* defined(__ia64__) */
+
+/***********************************************************************
+ * Types and data structures
+ */
+
+/* This is used by NtQuerySystemInformation */
+typedef struct _SYSTEM_THREAD_INFORMATION{
+    FILETIME    ftKernelTime;
+    FILETIME    ftUserTime;
+    FILETIME    ftCreateTime;
+    DWORD       dwTickCount;
+    DWORD       dwStartAddress;
+    DWORD       dwOwningPID;
+    DWORD       dwThreadID;
+    DWORD       dwCurrentPriority;
+    DWORD       dwBasePriority;
+    DWORD       dwContextSwitches;
+    DWORD       dwThreadState;
+    DWORD       dwWaitReason;
+    DWORD       dwUnknown;
+} SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION;
+
+typedef struct _IO_STATUS_BLOCK {
+  union {
+    NTSTATUS Status;
+    PVOID Pointer;
+  } DUMMYUNIONNAME;
+
+  ULONG_PTR Information;
+} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
+
+typedef void (WINAPI * PIO_APC_ROUTINE)(PVOID,PIO_STATUS_BLOCK,ULONG);
+
+typedef struct _KEY_BASIC_INFORMATION {
+    LARGE_INTEGER LastWriteTime;
+    ULONG         TitleIndex;
+    ULONG         NameLength;
+    WCHAR         Name[1];
+} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
+
+typedef struct _KEY_NODE_INFORMATION
+{
+    LARGE_INTEGER LastWriteTime;
+    ULONG         TitleIndex;
+    ULONG         ClassOffset;
+    ULONG         ClassLength;
+    ULONG         NameLength;
+    WCHAR         Name[1];
+   /* Class[1]; */
+} KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
+
+typedef struct _KEY_FULL_INFORMATION
+{
+    LARGE_INTEGER LastWriteTime;
+    ULONG         TitleIndex;
+    ULONG         ClassOffset;
+    ULONG         ClassLength;
+    ULONG         SubKeys;
+    ULONG         MaxNameLen;
+    ULONG         MaxClassLen;
+    ULONG         Values;
+    ULONG         MaxValueNameLen;
+    ULONG         MaxValueDataLen;
+    WCHAR         Class[1];
+} KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
+
+typedef struct _KEY_VALUE_ENTRY
+{
+    PUNICODE_STRING ValueName;
+    ULONG           DataLength;
+    ULONG           DataOffset;
+    ULONG           Type;
+} KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
+
+typedef struct _KEY_VALUE_BASIC_INFORMATION {
+    ULONG TitleIndex;
+    ULONG Type;
+    ULONG NameLength;
+    WCHAR Name[1];
+} KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
+
+typedef struct _KEY_VALUE_FULL_INFORMATION {
+    ULONG TitleIndex;
+    ULONG Type;
+    ULONG DataOffset;
+    ULONG DataLength;
+    ULONG NameLength;
+    WCHAR Name[1];
+} KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
+
+typedef struct _KEY_VALUE_PARTIAL_INFORMATION {
+    ULONG TitleIndex;
+    ULONG Type;
+    ULONG DataLength;
+    UCHAR Data[1];
+} KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
+
+#ifndef __OBJECT_ATTRIBUTES_DEFINED__
+#define __OBJECT_ATTRIBUTES_DEFINED__
+typedef struct _OBJECT_ATTRIBUTES {
+  ULONG Length;
+  HANDLE RootDirectory;
+  PUNICODE_STRING ObjectName;
+  ULONG Attributes;
+  PVOID SecurityDescriptor;       /* type SECURITY_DESCRIPTOR */
+  PVOID SecurityQualityOfService; /* type SECURITY_QUALITY_OF_SERVICE */
+} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
+#endif
+
+typedef struct _OBJECT_DATA_INFORMATION {
+    BOOLEAN InheritHandle;
+    BOOLEAN ProtectFromClose;
+} OBJECT_DATA_INFORMATION, *POBJECT_DATA_INFORMATION;
+
+typedef struct _OBJECT_BASIC_INFORMATION {
+    ULONG  Attributes;
+    ACCESS_MASK  GrantedAccess;
+    ULONG  HandleCount;
+    ULONG  PointerCount;
+    ULONG  PagedPoolUsage;
+    ULONG  NonPagedPoolUsage;
+    ULONG  Reserved[3];
+    ULONG  NameInformationLength;
+    ULONG  TypeInformationLength;
+    ULONG  SecurityDescriptorLength;
+    LARGE_INTEGER  CreateTime;
+} OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION;
+
+typedef struct _PROCESS_BASIC_INFORMATION {
+#ifdef __WINESRC__
+    DWORD_PTR ExitStatus;
+    PPEB PebBaseAddress;
+    DWORD_PTR AffinityMask;
+    DWORD_PTR BasePriority;
+    ULONG_PTR UniqueProcessId;
+    ULONG_PTR InheritedFromUniqueProcessId;
+#else
+    PVOID Reserved1;
+    PPEB PebBaseAddress;
+    PVOID Reserved2[2];
+    ULONG_PTR UniqueProcessId;
+    PVOID Reserved3;
+#endif
+} PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
+
+#define PROCESS_PRIOCLASS_IDLE          1
+#define PROCESS_PRIOCLASS_NORMAL        2
+#define PROCESS_PRIOCLASS_HIGH          3
+#define PROCESS_PRIOCLASS_REALTIME      4
+#define PROCESS_PRIOCLASS_BELOW_NORMAL  5
+#define PROCESS_PRIOCLASS_ABOVE_NORMAL  6
+
+typedef struct _PROCESS_PRIORITY_CLASS {
+    BOOLEAN     Foreground;
+    UCHAR       PriorityClass;
+} PROCESS_PRIORITY_CLASS, *PPROCESS_PRIORITY_CLASS;
+
+typedef struct _RTL_HEAP_DEFINITION {
+    ULONG Length; /* = sizeof(RTL_HEAP_DEFINITION) */
+
+    ULONG Unknown[11];
+} RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION;
+
+typedef struct _RTL_RWLOCK {
+    RTL_CRITICAL_SECTION rtlCS;
+
+    HANDLE hSharedReleaseSemaphore;
+    UINT   uSharedWaiters;
+
+    HANDLE hExclusiveReleaseSemaphore;
+    UINT   uExclusiveWaiters;
+
+    INT    iNumberActive;
+    HANDLE hOwningThreadId;
+    DWORD  dwTimeoutBoost;
+    PVOID  pDebugInfo;
+} RTL_RWLOCK, *LPRTL_RWLOCK;
+
+/* System Information Class 0x00 */
+
+typedef struct _SYSTEM_BASIC_INFORMATION {
+#ifdef __WINESRC__
+    DWORD dwUnknown1;
+    ULONG uKeMaximumIncrement;
+    ULONG uPageSize;
+    ULONG uMmNumberOfPhysicalPages;
+    ULONG uMmLowestPhysicalPage;
+    ULONG uMmHighestPhysicalPage;
+    ULONG uAllocationGranularity;
+    PVOID pLowestUserAddress;
+    PVOID pMmHighestUserAddress;
+    ULONG uKeActiveProcessors;
+    BYTE bKeNumberProcessors;
+    BYTE bUnknown2;
+    WORD wUnknown3;
+#else
+    BYTE Reserved1[24];
+    PVOID Reserved2[4];
+    CCHAR NumberOfProcessors;
+#endif
+} SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
+
+/* System Information Class 0x01 */
+
+typedef struct _SYSTEM_CPU_INFORMATION {
+    WORD Architecture;
+    WORD Level;
+    WORD Revision;       /* combination of CPU model and stepping */
+    WORD Reserved;       /* always zero */
+    DWORD FeatureSet;    /* see bit flags below */
+} SYSTEM_CPU_INFORMATION, *PSYSTEM_CPU_INFORMATION;
+
+/* definitions of bits in the Feature set for the x86 processors */
+#define CPU_FEATURE_VME    0x00000005   /* Virtual 86 Mode Extensions */
+#define CPU_FEATURE_TSC    0x00000002   /* Time Stamp Counter available */
+#define CPU_FEATURE_CMOV   0x00000008   /* Conditional Move instruction*/
+#define CPU_FEATURE_PGE    0x00000014   /* Page table Entry Global bit */ 
+#define CPU_FEATURE_PSE    0x00000024   /* Page Size Extension */
+#define CPU_FEATURE_MTRR   0x00000040   /* Memory Type Range Registers */
+#define CPU_FEATURE_CX8    0x00000080   /* Compare and eXchange 8 byte instr. */
+#define CPU_FEATURE_MMX    0x00000100   /* Multi Media eXtensions */
+#define CPU_FEATURE_X86    0x00000200   /* seems to be always ON, on the '86 */
+#define CPU_FEATURE_PAT    0x00000400   /* Page Attribute Table */
+#define CPU_FEATURE_FXSR   0x00000800   /* FXSAVE and FXSTORE instructions */
+#define CPU_FEATURE_SEP    0x00001000   /* SYSENTER and SYSEXIT instructions */
+#define CPU_FEATURE_SSE    0x00002000   /* SSE extensions (ext. MMX) */
+#define CPU_FEATURE_3DNOW  0x00008000   /* 3DNOW instructions available 
+                                           (FIXME: needs to be confirmed) */
+#define CPU_FEATURE_SSE2   0x00010000   /* SSE2 extensions (XMMI64) */
+#define CPU_FEATURE_DS     0x00020000   /* Debug Store */
+#define CPU_FEATURE_HTT    0x00040000   /* Hyper Threading Technology */
+
+/* System Information Class 0x02 */
+
+typedef struct _SYSTEM_PERFORMANCE_INFORMATION {
+    BYTE Reserved1[312];
+} SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
+
+/* System Information Class 0x03 */
+
+typedef struct _SYSTEM_TIMEOFDAY_INFORMATION {
+#ifdef __WINESRC__
+    LARGE_INTEGER liKeBootTime;
+    LARGE_INTEGER liKeSystemTime;
+    LARGE_INTEGER liExpTimeZoneBias;
+    ULONG uCurrentTimeZoneId;
+    DWORD dwUnknown1[5];
+#else
+    BYTE Reserved1[48];
+#endif
+} SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION; /* was SYSTEM_TIME_INFORMATION */
+
+/* System Information Class 0x08 */
+
+typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION {
+#ifdef __WINESRC__
+    LARGE_INTEGER liIdleTime;
+    LARGE_INTEGER liKernelTime;
+    LARGE_INTEGER liUserTime;
+    DWORD dwSpare[5];
+#else
+    LARGE_INTEGER IdleTime;
+    LARGE_INTEGER KernelTime;
+    LARGE_INTEGER UserTime;
+    LARGE_INTEGER Reserved1[2];
+    ULONG Reserved2;
+#endif
+} SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
+
+/* System Information Class 0x0b */
+
+typedef struct _SYSTEM_DRIVER_INFORMATION {
+    PVOID pvAddress;
+    DWORD dwUnknown1;
+    DWORD dwUnknown2;
+    DWORD dwEntryIndex;
+    DWORD dwUnknown3;
+    char szName[MAX_PATH + 1];
+} SYSTEM_DRIVER_INFORMATION, *PSYSTEM_DRIVER_INFORMATION;
+
+/* System Information Class 0x10 */
+
+typedef struct _SYSTEM_HANDLE_ENTRY {
+    ULONG  OwnerPid;
+    BYTE   ObjectType;
+    BYTE   HandleFlags;
+    USHORT HandleValue;
+    PVOID  ObjectPointer;
+    ULONG  AccessMask;
+} SYSTEM_HANDLE_ENTRY, *PSYSTEM_HANDLE_ENTRY;
+
+typedef struct _SYSTEM_HANDLE_INFORMATION {
+    ULONG               Count;
+    SYSTEM_HANDLE_ENTRY Handle[1];
+} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
+
+/* System Information Class 0x15 */
+
+typedef struct _SYSTEM_CACHE_INFORMATION {
+    ULONG CurrentSize;
+    ULONG PeakSize;
+    ULONG PageFaultCount;
+    ULONG MinimumWorkingSet;
+    ULONG MaximumWorkingSet;
+    ULONG unused[4];
+} SYSTEM_CACHE_INFORMATION, *PSYSTEM_CACHE_INFORMATION;
+
+/* System Information Class 0x17 */
+
+typedef struct _SYSTEM_INTERRUPT_INFORMATION {
+    BYTE Reserved1[24];
+} SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION;
+
+typedef struct _SYSTEM_CONFIGURATION_INFO {
+    union {
+        ULONG	OemId;
+        struct {
+	    WORD ProcessorArchitecture;
+	    WORD Reserved;
+	} tag1;
+    } tag2;
+    ULONG PageSize;
+    PVOID MinimumApplicationAddress;
+    PVOID MaximumApplicationAddress;
+    ULONG ActiveProcessorMask;
+    ULONG NumberOfProcessors;
+    ULONG ProcessorType;
+    ULONG AllocationGranularity;
+    WORD  ProcessorLevel;
+    WORD  ProcessorRevision;
+} SYSTEM_CONFIGURATION_INFO, *PSYSTEM_CONFIGURATION_INFO;
+
+typedef struct _SYSTEM_EXCEPTION_INFORMATION {
+    BYTE Reserved1[16];
+} SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION;
+
+typedef struct _SYSTEM_LOOKASIDE_INFORMATION {
+    BYTE Reserved1[32];
+} SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION;
+
+typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION {
+	BOOLEAN  DebuggerEnabled;
+	BOOLEAN  DebuggerNotPresent;
+} SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION;
+
+/* System Information Class 0x05 */
+
+typedef struct _VM_COUNTERS_ {
+    SIZE_T PeakVirtualSize;
+    SIZE_T VirtualSize;
+    ULONG  PageFaultCount;
+    SIZE_T PeakWorkingSetSize;
+    SIZE_T WorkingSetSize;
+    SIZE_T QuotaPeakPagedPoolUsage;
+    SIZE_T QuotaPagedPoolUsage;
+    SIZE_T QuotaPeakNonPagedPoolUsage;
+    SIZE_T QuotaNonPagedPoolUsage;
+    SIZE_T PagefileUsage;
+    SIZE_T PeakPagefileUsage;
+} VM_COUNTERS, *PVM_COUNTERS;
+
+typedef struct _SYSTEM_PROCESS_INFORMATION {
+#ifdef __WINESRC__
+    DWORD dwOffset;
+    DWORD dwThreadCount;
+    DWORD dwUnknown1[6];
+    FILETIME ftCreationTime;
+    FILETIME ftUserTime;
+    FILETIME ftKernelTime;
+    UNICODE_STRING ProcessName;
+    DWORD dwBasePriority;
+    DWORD dwProcessID;
+    DWORD dwParentProcessID;
+    DWORD dwHandleCount;
+    DWORD dwUnknown3;
+    DWORD dwUnknown4;
+    VM_COUNTERS vmCounters;
+    IO_COUNTERS ioCounters;
+    SYSTEM_THREAD_INFORMATION ti[1];
+#else
+    ULONG NextEntryOffset;
+    BYTE Reserved1[52];
+    PVOID Reserved2[3];
+    HANDLE UniqueProcessId;
+    PVOID Reserved3;
+    ULONG HandleCount;
+    BYTE Reserved4[4];
+    PVOID Reserved5[11];
+    SIZE_T PeakPagefileUsage;
+    SIZE_T PrivatePageCount;
+    LARGE_INTEGER Reserved6[6];
+#endif
+} SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
+
+typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION {
+    ULONG RegistryQuotaAllowed;
+    ULONG RegistryQuotaUsed;
+    PVOID Reserved1;
+} SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION;
+
+typedef struct _SYSTEM_TIME_ADJUSTMENT {
+    ULONG   TimeAdjustment;
+    BOOLEAN TimeAdjustmentDisabled;
+} SYSTEM_TIME_ADJUSTMENT, *PSYSTEM_TIME_ADJUSTMENT;
+
+typedef struct _TIME_FIELDS
+{   CSHORT Year;
+    CSHORT Month;
+    CSHORT Day;
+    CSHORT Hour;
+    CSHORT Minute;
+    CSHORT Second;
+    CSHORT Milliseconds;
+    CSHORT Weekday;
+} TIME_FIELDS, *PTIME_FIELDS;
+
+typedef struct _WINSTATIONINFORMATIONW {
+  BYTE Reserved2[70];
+  ULONG LogonId;
+  BYTE Reserved3[1140];
+} WINSTATIONINFORMATIONW, *PWINSTATIONINFORMATIONW;
+
+typedef BOOLEAN (WINAPI * PWINSTATIONQUERYINFORMATIONW)(HANDLE,ULONG,WINSTATIONINFOCLASS,PVOID,ULONG,PULONG);
+
+typedef struct _LDR_RESOURCE_INFO
+{
+    ULONG_PTR Type;
+    ULONG_PTR Name;
+    ULONG Language;
+} LDR_RESOURCE_INFO, *PLDR_RESOURCE_INFO;
+
+
+/* debug buffer definitions */
+
+typedef struct _DEBUG_BUFFER {
+  HANDLE SectionHandle;
+  PVOID  SectionBase;
+  PVOID  RemoteSectionBase;
+  ULONG  SectionBaseDelta;
+  HANDLE EventPairHandle;
+  ULONG  Unknown[2];
+  HANDLE RemoteThreadHandle;
+  ULONG  InfoClassMask;
+  ULONG  SizeOfInfo;
+  ULONG  AllocatedSize;
+  ULONG  SectionSize;
+  PVOID  ModuleInformation;
+  PVOID  BackTraceInformation;
+  PVOID  HeapInformation;
+  PVOID  LockInformation;
+  PVOID  Reserved[8];
+} DEBUG_BUFFER, *PDEBUG_BUFFER;
+
+#define PDI_MODULES                       0x01
+#define PDI_BACKTRACE                     0x02
+#define PDI_HEAPS                         0x04
+#define PDI_HEAP_TAGS                     0x08
+#define PDI_HEAP_BLOCKS                   0x10
+#define PDI_LOCKS                         0x20
+
+typedef struct _DEBUG_MODULE_INFORMATION {
+  ULONG  Reserved[2];
+  ULONG  Base;
+  ULONG  Size;
+  ULONG  Flags;
+  USHORT Index;
+  USHORT Unknown;
+  USHORT LoadCount;
+  USHORT ModuleNameOffset;
+  CHAR   ImageName[256];
+} DEBUG_MODULE_INFORMATION, *PDEBUG_MODULE_INFORMATION;
+
+typedef struct _DEBUG_HEAP_INFORMATION {
+  ULONG  Base;
+  ULONG  Flags;
+  USHORT Granularity;
+  USHORT Unknown;
+  ULONG  Allocated;
+  ULONG  Committed;
+  ULONG  TagCount;
+  ULONG  BlockCount;
+  ULONG  Reserved[7];
+  PVOID  Tags;
+  PVOID  Blocks;
+} DEBUG_HEAP_INFORMATION, *PDEBUG_HEAP_INFORMATION;
+
+typedef struct _DEBUG_LOCK_INFORMATION {
+  PVOID  Address;
+  USHORT Type;
+  USHORT CreatorBackTraceIndex;
+  ULONG  OwnerThreadId;
+  ULONG  ActiveCount;
+  ULONG  ContentionCount;
+  ULONG  EntryCount;
+  ULONG  RecursionCount;
+  ULONG  NumberOfSharedWaiters;
+  ULONG  NumberOfExclusiveWaiters;
+} DEBUG_LOCK_INFORMATION, *PDEBUG_LOCK_INFORMATION;
+
+typedef struct _PORT_MESSAGE_HEADER {
+  USHORT DataSize;
+  USHORT MessageSize;
+  USHORT MessageType;
+  USHORT VirtualRangesOffset;
+  CLIENT_ID ClientId;
+  ULONG MessageId;
+  ULONG SectionSize;
+} PORT_MESSAGE_HEADER, *PPORT_MESSAGE_HEADER, PORT_MESSAGE, *PPORT_MESSAGE;
+
+typedef unsigned short RTL_ATOM, *PRTL_ATOM;
+
+/* Wine doesn't implement atom table as NT does:
+ * - in NT, atom tables are user space tables, which ntdll directly accesses
+ * - on Wine, (even local) atom tables are wineserver objects, hence a HANDLE
+ */
+typedef struct atom_table *RTL_ATOM_TABLE, **PRTL_ATOM_TABLE;
+
+typedef enum _ATOM_INFORMATION_CLASS {
+   AtomBasicInformation         = 0,
+   AtomTableInformation         = 1,
+} ATOM_INFORMATION_CLASS;
+
+typedef struct _ATOM_BASIC_INFORMATION {
+   USHORT       ReferenceCount;
+   USHORT       Pinned;
+   USHORT       NameLength;
+   WCHAR        Name[1];
+} ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION;
+
+/* FIXME: names probably not correct */
+typedef struct _RTL_HANDLE
+{
+    struct _RTL_HANDLE * Next;
+} RTL_HANDLE;
+
+/* FIXME: names probably not correct */
+typedef struct _RTL_HANDLE_TABLE
+{
+    ULONG MaxHandleCount;  /* 0x00 */
+    ULONG HandleSize;      /* 0x04 */
+    ULONG Unused[2];       /* 0x08-0x0c */
+    PVOID NextFree;        /* 0x10 */
+    PVOID FirstHandle;     /* 0x14 */
+    PVOID ReservedMemory;  /* 0x18 */
+    PVOID MaxHandle;       /* 0x1c */
+} RTL_HANDLE_TABLE;
+
+/***********************************************************************
+ * Defines
+ */
+
+/* flags for NtCreateFile and NtOpenFile */
+#define FILE_DIRECTORY_FILE             0x00000001
+#define FILE_WRITE_THROUGH              0x00000002
+#define FILE_SEQUENTIAL_ONLY            0x00000004
+#define FILE_NO_INTERMEDIATE_BUFFERING  0x00000008
+#define FILE_SYNCHRONOUS_IO_ALERT       0x00000010
+#define FILE_SYNCHRONOUS_IO_NONALERT    0x00000020
+#define FILE_NON_DIRECTORY_FILE         0x00000040
+#define FILE_CREATE_TREE_CONNECTION     0x00000080
+#define FILE_COMPLETE_IF_OPLOCKED       0x00000100
+#define FILE_NO_EA_KNOWLEDGE            0x00000200
+#define FILE_OPEN_FOR_RECOVERY          0x00000400
+#define FILE_RANDOM_ACCESS              0x00000800
+#define FILE_DELETE_ON_CLOSE            0x00001000
+#define FILE_OPEN_BY_FILE_ID            0x00002000
+#define FILE_OPEN_FOR_BACKUP_INTENT     0x00004000
+#define FILE_NO_COMPRESSION             0x00008000
+#define FILE_RESERVE_OPFILTER           0x00100000
+#define FILE_TRANSACTED_MODE            0x00200000
+#define FILE_OPEN_OFFLINE_FILE          0x00400000
+#define FILE_OPEN_FOR_FREE_SPACE_QUERY  0x00800000
+
+#define FILE_ATTRIBUTE_VALID_FLAGS      0x00007fb7
+#define FILE_ATTRIBUTE_VALID_SET_FLAGS  0x000031a7
+
+/* status for NtCreateFile or NtOpenFile */
+#define FILE_SUPERSEDED                 0
+#define FILE_OPENED                     1
+#define FILE_CREATED                    2
+#define FILE_OVERWRITTEN                3
+#define FILE_EXISTS                     4
+#define FILE_DOES_NOT_EXIST             5
+
+/* disposition for NtCreateFile */
+#define FILE_SUPERSEDE                  0
+#define FILE_OPEN                       1
+#define FILE_CREATE                     2
+#define FILE_OPEN_IF                    3
+#define FILE_OVERWRITE                  4
+#define FILE_OVERWRITE_IF               5
+#define FILE_MAXIMUM_DISPOSITION        5
+
+/* Characteristics of a File System */
+#define FILE_REMOVABLE_MEDIA            0x00000001
+#define FILE_READ_ONLY_DEVICE           0x00000002
+#define FILE_FLOPPY_DISKETTE            0x00000004
+#define FILE_WRITE_ONE_MEDIA            0x00000008
+#define FILE_REMOTE_DEVICE              0x00000010
+#define FILE_DEVICE_IS_MOUNTED          0x00000020
+#define FILE_VIRTUAL_VOLUME             0x00000040
+#define FILE_AUTOGENERATED_DEVICE_NAME  0x00000080
+#define FILE_DEVICE_SECURE_OPEN         0x00000100
+
+/* options for NtCreateNamedPipeFile */
+#define FILE_PIPE_INBOUND               0x00000000
+#define FILE_PIPE_OUTBOUND              0x00000001
+#define FILE_PIPE_FULL_DUPLEX           0x00000002
+
+/* options for pipe's type */
+#define FILE_PIPE_TYPE_MESSAGE          0x00000001
+#define FILE_PIPE_TYPE_BYTE             0x00000000
+/* and client / server end */
+#define FILE_PIPE_SERVER_END            0x00000001
+#define FILE_PIPE_CLIENT_END            0x00000000
+
+#if (_WIN32_WINNT >= 0x0501)
+#define INTERNAL_TS_ACTIVE_CONSOLE_ID ( *((volatile ULONG*)(0x7ffe02d8)) )
+#endif /* (_WIN32_WINNT >= 0x0501) */
+
+#define LOGONID_CURRENT    ((ULONG)-1)
+
+#define OBJ_INHERIT          0x00000002L
+#define OBJ_PERMANENT        0x00000010L
+#define OBJ_EXCLUSIVE        0x00000020L
+#define OBJ_CASE_INSENSITIVE 0x00000040L
+#define OBJ_OPENIF           0x00000080L
+#define OBJ_OPENLINK         0x00000100L
+#define OBJ_KERNEL_HANDLE    0x00000200L
+#define OBJ_VALID_ATTRIBUTES 0x000003F2L
+
+#define SERVERNAME_CURRENT ((HANDLE)NULL)
+
+typedef void (CALLBACK *PNTAPCFUNC)(ULONG_PTR,ULONG_PTR,ULONG_PTR); /* FIXME: not the right name */
+typedef void (CALLBACK *PRTL_THREAD_START_ROUTINE)(LPVOID); /* FIXME: not the right name */
+typedef DWORD (CALLBACK *PRTL_WORK_ITEM_ROUTINE)(LPVOID); /* FIXME: not the right name */
+typedef void (NTAPI *RTL_WAITORTIMERCALLBACKFUNC)(PVOID,BOOLEAN); /* FIXME: not the right name */
+
+
+/* DbgPrintEx default levels */
+#define DPFLTR_ERROR_LEVEL     0
+#define DPFLTR_WARNING_LEVEL   1
+#define DPFLTR_TRACE_LEVEL     2
+#define DPFLTR_INFO_LEVEL      3
+#define DPFLTR_MASK    0x8000000
+
+/* Well-known LUID values */
+#define SE_MIN_WELL_KNOWN_PRIVILEGE       2L
+#define SE_CREATE_TOKEN_PRIVILEGE         2L
+#define SE_ASSIGNPRIMARYTOKEN_PRIVILEGE   3L
+#define SE_LOCK_MEMORY_PRIVILEGE          4L
+#define SE_INCREASE_QUOTA_PRIVILEGE       5L
+#define SE_UNSOLICITED_INPUT_PRIVILEGE    6L /* obsolete */
+#define SE_MACHINE_ACCOUNT_PRIVILEGE      6L
+#define SE_TCB_PRIVILEGE                  7L
+#define SE_SECURITY_PRIVILEGE             8L
+#define SE_TAKE_OWNERSHIP_PRIVILEGE       9L
+#define SE_LOAD_DRIVER_PRIVILEGE         10L
+#define SE_SYSTEM_PROFILE_PRIVILEGE      11L
+#define SE_SYSTEMTIME_PRIVILEGE          12L
+#define SE_PROF_SINGLE_PROCESS_PRIVILEGE 13L
+#define SE_INC_BASE_PRIORITY_PRIVILEGE   14L
+#define SE_CREATE_PAGEFILE_PRIVILEGE     15L
+#define SE_CREATE_PERMANENT_PRIVILEGE    16L
+#define SE_BACKUP_PRIVILEGE              17L
+#define SE_RESTORE_PRIVILEGE             18L
+#define SE_SHUTDOWN_PRIVILEGE            19L
+#define SE_DEBUG_PRIVILEGE               20L
+#define SE_AUDIT_PRIVILEGE               21L
+#define SE_SYSTEM_ENVIRONMENT_PRIVILEGE  22L
+#define SE_CHANGE_NOTIFY_PRIVILEGE       23L
+#define SE_REMOTE_SHUTDOWN_PRIVILEGE     24L
+#define SE_UNDOCK_PRIVILEGE              25L
+#define SE_SYNC_AGENT_PRIVILEGE          26L
+#define SE_ENABLE_DELEGATION_PRIVILEGE   27L
+#define SE_MANAGE_VOLUME_PRIVILEGE       28L
+#define SE_IMPERSONATE_PRIVILEGE         29L
+#define SE_CREATE_GLOBAL_PRIVILEGE       30L
+#define SE_MAX_WELL_KNOWN_PRIVILEGE      SE_CREATE_GLOBAL_PRIVILEGE
+
+
+/* Rtl*Registry* functions structs and defines */
+#define RTL_REGISTRY_ABSOLUTE             0
+#define RTL_REGISTRY_SERVICES             1
+#define RTL_REGISTRY_CONTROL              2
+#define RTL_REGISTRY_WINDOWS_NT           3
+#define RTL_REGISTRY_DEVICEMAP            4
+#define RTL_REGISTRY_USER                 5
+
+#define RTL_REGISTRY_HANDLE       0x40000000
+#define RTL_REGISTRY_OPTIONAL     0x80000000
+
+#define RTL_QUERY_REGISTRY_SUBKEY         0x00000001
+#define RTL_QUERY_REGISTRY_TOPKEY         0x00000002
+#define RTL_QUERY_REGISTRY_REQUIRED       0x00000004
+#define RTL_QUERY_REGISTRY_NOVALUE        0x00000008
+#define RTL_QUERY_REGISTRY_NOEXPAND       0x00000010
+#define RTL_QUERY_REGISTRY_DIRECT         0x00000020
+#define RTL_QUERY_REGISTRY_DELETE         0x00000040
+
+typedef NTSTATUS (WINAPI *PRTL_QUERY_REGISTRY_ROUTINE)( PCWSTR ValueName,
+                                                        ULONG  ValueType,
+                                                        PVOID  ValueData,
+                                                        ULONG  ValueLength,
+                                                        PVOID  Context,
+                                                        PVOID  EntryContext);
+
+typedef struct _RTL_QUERY_REGISTRY_TABLE
+{
+  PRTL_QUERY_REGISTRY_ROUTINE  QueryRoutine;
+  ULONG  Flags;
+  PWSTR  Name;
+  PVOID  EntryContext;
+  ULONG  DefaultType;
+  PVOID  DefaultData;
+  ULONG  DefaultLength;
+} RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
+
+typedef struct _KEY_MULTIPLE_VALUE_INFORMATION
+{
+  PUNICODE_STRING ValueName;
+  ULONG DataLength;
+  ULONG DataOffset;
+  ULONG Type;
+} KEY_MULTIPLE_VALUE_INFORMATION, *PKEY_MULTIPLE_VALUE_INFORMATION;
+
+typedef VOID (CALLBACK *PRTL_OVERLAPPED_COMPLETION_ROUTINE)(DWORD,DWORD,LPVOID);
+
+typedef VOID (*PTIMER_APC_ROUTINE) ( PVOID, ULONG, LONG );
+
+typedef enum _EVENT_TYPE {
+  NotificationEvent,
+  SynchronizationEvent
+} EVENT_TYPE, *PEVENT_TYPE;
+
+typedef enum _EVENT_INFORMATION_CLASS {
+  EventBasicInformation
+} EVENT_INFORMATION_CLASS, *PEVENT_INFORMATION_CLASS;
+
+typedef struct _EVENT_BASIC_INFORMATION {
+  EVENT_TYPE EventType;
+  LONG EventState;
+} EVENT_BASIC_INFORMATION, *PEVENT_BASIC_INFORMATION;
+
+typedef enum _SEMAPHORE_INFORMATION_CLASS {
+  SemaphoreBasicInformation
+} SEMAPHORE_INFORMATION_CLASS, *PSEMAPHORE_INFORMATION_CLASS;
+
+typedef struct _SEMAPHORE_BASIC_INFORMATION {
+  ULONG CurrentCount;
+  ULONG MaximumCount;
+} SEMAPHORE_BASIC_INFORMATION, *PSEMAPHORE_BASIC_INFORMATION;
+
+typedef enum _SECTION_INFORMATION_CLASS
+{
+  SectionBasicInformation,
+  SectionImageInformation,
+} SECTION_INFORMATION_CLASS;
+
+typedef struct _SECTION_BASIC_INFORMATION {
+  ULONG BaseAddress;
+  ULONG Attributes;
+  LARGE_INTEGER Size;
+} SECTION_BASIC_INFORMATION, *PSECTION_BASIC_INFORMATION;
+
+typedef struct _SECTION_IMAGE_INFORMATION {
+  PVOID EntryPoint;
+  ULONG StackZeroBits;
+  ULONG StackReserved;
+  ULONG StackCommit;
+  ULONG ImageSubsystem;
+  WORD SubsystemVersionLow;
+  WORD SubsystemVersionHigh;
+  ULONG Unknown1;
+  ULONG ImageCharacteristics;
+  ULONG ImageMachineType;
+  ULONG Unknown2[3];
+} SECTION_IMAGE_INFORMATION, *PSECTION_IMAGE_INFORMATION;
+
+typedef struct _LPC_SECTION_WRITE {
+  ULONG Length;
+  HANDLE SectionHandle;
+  ULONG SectionOffset;
+  ULONG ViewSize;
+  PVOID ViewBase;
+  PVOID TargetViewBase;
+} LPC_SECTION_WRITE, *PLPC_SECTION_WRITE;
+
+typedef struct _LPC_SECTION_READ {
+  ULONG Length;
+  ULONG ViewSize;
+  PVOID ViewBase;
+} LPC_SECTION_READ, *PLPC_SECTION_READ;
+
+typedef struct _LPC_MESSAGE {
+  USHORT DataSize;
+  USHORT MessageSize;
+  USHORT MessageType;
+  USHORT VirtualRangesOffset;
+  CLIENT_ID ClientId;
+  ULONG MessageId;
+  ULONG SectionSize;
+  UCHAR Data[ANYSIZE_ARRAY];
+} LPC_MESSAGE, *PLPC_MESSAGE;
+
+typedef enum _SHUTDOWN_ACTION {
+  ShutdownNoReboot,
+  ShutdownReboot,
+  ShutdownPowerOff
+} SHUTDOWN_ACTION, *PSHUTDOWN_ACTION;
+
+typedef enum _KPROFILE_SOURCE {
+  ProfileTime,
+  ProfileAlignmentFixup,
+  ProfileTotalIssues,
+  ProfilePipelineDry,
+  ProfileLoadInstructions,
+  ProfilePipelineFrozen,
+  ProfileBranchInstructions,
+  ProfileTotalNonissues,
+  ProfileDcacheMisses,
+  ProfileIcacheMisses,
+  ProfileCacheMisses,
+  ProfileBranchMispredictions,
+  ProfileStoreInstructions,
+  ProfileFpInstructions,
+  ProfileIntegerInstructions,
+  Profile2Issue,
+  Profile3Issue,
+  Profile4Issue,
+  ProfileSpecialInstructions,
+  ProfileTotalCycles,
+  ProfileIcacheIssues,
+  ProfileDcacheAccesses,
+  ProfileMemoryBarrierCycles,
+  ProfileLoadLinkedIssues,
+  ProfileMaximum
+} KPROFILE_SOURCE, *PKPROFILE_SOURCE;
+
+typedef struct _DIRECTORY_BASIC_INFORMATION {
+  UNICODE_STRING ObjectName;
+  UNICODE_STRING ObjectTypeName;
+} DIRECTORY_BASIC_INFORMATION, *PDIRECTORY_BASIC_INFORMATION;
+
+typedef struct _INITIAL_TEB {
+  PVOID StackBase;
+  PVOID StackLimit;
+  PVOID StackCommit;
+  PVOID StackCommitMax;
+  PVOID StackReserved;
+} INITIAL_TEB, *PINITIAL_TEB;
+
+typedef enum _PORT_INFORMATION_CLASS {
+  PortNoInformation
+} PORT_INFORMATION_CLASS, *PPORT_INFORMATION_CLASS;
+
+typedef enum _IO_COMPLETION_INFORMATION_CLASS {
+  IoCompletionBasicInformation
+} IO_COMPLETION_INFORMATION_CLASS, *PIO_COMPLETION_INFORMATION_CLASS;
+
+typedef struct _FILE_COMPLETION_INFORMATION {
+    HANDLE CompletionPort;
+    ULONG_PTR CompletionKey;
+} FILE_COMPLETION_INFORMATION, *PFILE_COMPLETION_INFORMATION;
+
+#define IO_COMPLETION_QUERY_STATE  0x0001
+#define IO_COMPLETION_MODIFY_STATE 0x0002
+#define IO_COMPLETION_ALL_ACCESS   (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
+
+typedef enum _HARDERROR_RESPONSE_OPTION {
+  OptionAbortRetryIgnore,
+  OptionOk,
+  OptionOkCancel,
+  OptionRetryCancel,
+  OptionYesNo,
+  OptionYesNoCancel,
+  OptionShutdownSystem
+} HARDERROR_RESPONSE_OPTION, *PHARDERROR_RESPONSE_OPTION;
+
+typedef enum _HARDERROR_RESPONSE {
+  ResponseReturnToCaller,
+  ResponseNotHandled,
+  ResponseAbort,
+  ResponseCancel,
+  ResponseIgnore,
+  ResponseNo,
+  ResponseOk,
+  ResponseRetry,
+  ResponseYes
+} HARDERROR_RESPONSE, *PHARDERROR_RESPONSE;
+
+typedef enum _SYSDBG_COMMAND {
+  SysDbgQueryModuleInformation,
+  SysDbgQueryTraceInformation,
+  SysDbgSetTracepoint,
+  SysDbgSetSpecialCall,
+  SysDbgClearSpecialCalls,
+  SysDbgQuerySpecialCalls
+} SYSDBG_COMMAND, *PSYSDBG_COMMAND;
+
+
+/*************************************************************************
+ * Loader structures
+ *
+ * Those are not part of standard Winternl.h
+ */
+typedef struct _LDR_MODULE
+{
+    LIST_ENTRY          InLoadOrderModuleList;
+    LIST_ENTRY          InMemoryOrderModuleList;
+    LIST_ENTRY          InInitializationOrderModuleList;
+    void*               BaseAddress;
+    void*               EntryPoint;
+    ULONG               SizeOfImage;
+    UNICODE_STRING      FullDllName;
+    UNICODE_STRING      BaseDllName;
+    ULONG               Flags;
+    SHORT               LoadCount;
+    SHORT               TlsIndex;
+    HANDLE              SectionHandle;
+    ULONG               CheckSum;
+    ULONG               TimeDateStamp;
+    HANDLE              ActivationContext;
+} LDR_MODULE, *PLDR_MODULE;
+
+/* those defines are (some of the) regular LDR_MODULE.Flags values */
+#define LDR_IMAGE_IS_DLL                0x00000004
+#define LDR_LOAD_IN_PROGRESS            0x00001000
+#define LDR_UNLOAD_IN_PROGRESS          0x00002000
+#define LDR_NO_DLL_CALLS                0x00040000
+#define LDR_PROCESS_ATTACHED            0x00080000
+#define LDR_MODULE_REBASED              0x00200000
+
+/* these ones is Wine specific */
+#define LDR_DONT_RESOLVE_REFS           0x40000000
+#define LDR_WINE_INTERNAL               0x80000000
+
+/* FIXME: to be checked */
+#define MAXIMUM_FILENAME_LENGTH 256
+
+typedef struct _SYSTEM_MODULE
+{
+    ULONG               Reserved1;
+    ULONG               Reserved2;
+    PVOID               ImageBaseAddress;
+    ULONG               ImageSize;
+    ULONG               Flags;
+    WORD                Id;
+    WORD                Rank;
+    WORD                Unknown;
+    WORD                NameOffset;
+    BYTE                Name[MAXIMUM_FILENAME_LENGTH];
+} SYSTEM_MODULE, *PSYSTEM_MODULE;
+
+typedef struct _SYSTEM_MODULE_INFORMATION
+{
+    ULONG               ModulesCount;
+    SYSTEM_MODULE       Modules[1]; /* FIXME: should be Modules[0] */
+} SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;
+
+/***********************************************************************
+ * Function declarations
+ */
+
+#if defined(__i386__) && defined(__GNUC__)
+static inline void WINAPI DbgBreakPoint(void) { __asm__ __volatile__("int3"); }
+static inline void WINAPI DbgUserBreakPoint(void) { __asm__ __volatile__("int3"); }
+#else  /* __i386__ && __GNUC__ */
+NTSYSAPI void WINAPI DbgBreakPoint(void);
+NTSYSAPI void WINAPI DbgUserBreakPoint(void);
+#endif  /* __i386__ && __GNUC__ */
+NTSYSAPI NTSTATUS WINAPIV DbgPrint(LPCSTR fmt, ...);
+NTSYSAPI NTSTATUS WINAPIV DbgPrintEx(ULONG iComponentId, ULONG Level, LPCSTR fmt, ...);
+NTSYSAPI NTSTATUS  WINAPI LdrAccessResource(HMODULE,const IMAGE_RESOURCE_DATA_ENTRY*,void**,PULONG);
+NTSYSAPI NTSTATUS  WINAPI LdrAddRefDll(ULONG,HMODULE);
+NTSYSAPI NTSTATUS  WINAPI LdrFindResourceDirectory_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DIRECTORY**);
+NTSYSAPI NTSTATUS  WINAPI LdrFindResource_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DATA_ENTRY**);
+NTSYSAPI NTSTATUS  WINAPI LdrDisableThreadCalloutsForDll(HMODULE);
+NTSYSAPI NTSTATUS  WINAPI LdrFindEntryForAddress(const void*, PLDR_MODULE*);
+NTSYSAPI NTSTATUS  WINAPI LdrGetDllHandle(LPCWSTR, ULONG, const UNICODE_STRING*, HMODULE*);
+NTSYSAPI NTSTATUS  WINAPI LdrGetProcedureAddress(HMODULE, const ANSI_STRING*, ULONG, void**);
+NTSYSAPI void      WINAPI LdrInitializeThunk(ULONG,ULONG,ULONG,ULONG);
+NTSYSAPI NTSTATUS  WINAPI LdrLoadDll(LPCWSTR, DWORD, const UNICODE_STRING*, HMODULE*);
+NTSYSAPI NTSTATUS  WINAPI LdrLockLoaderLock(ULONG,ULONG*,ULONG*);
+IMAGE_BASE_RELOCATION * WINAPI LdrProcessRelocationBlock(void*,UINT,USHORT*,INT);
+NTSYSAPI NTSTATUS  WINAPI LdrQueryProcessModuleInformation(SYSTEM_MODULE_INFORMATION*, ULONG, ULONG*);
+NTSYSAPI void      WINAPI LdrShutdownProcess(void);
+NTSYSAPI void      WINAPI LdrShutdownThread(void);
+NTSYSAPI NTSTATUS  WINAPI LdrUnloadDll(HMODULE);
+NTSYSAPI NTSTATUS  WINAPI LdrUnlockLoaderLock(ULONG,ULONG);
+NTSYSAPI NTSTATUS  WINAPI NtAcceptConnectPort(PHANDLE,ULONG,PLPC_MESSAGE,BOOLEAN,PLPC_SECTION_WRITE,PLPC_SECTION_READ);
+NTSYSAPI NTSTATUS  WINAPI NtAccessCheck(PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,PGENERIC_MAPPING,PPRIVILEGE_SET,PULONG,PULONG,NTSTATUS*);
+NTSYSAPI NTSTATUS  WINAPI NtAccessCheckAndAuditAlarm(PUNICODE_STRING,HANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,ACCESS_MASK,PGENERIC_MAPPING,BOOLEAN,PACCESS_MASK,PBOOLEAN,PBOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI NtAddAtom(const WCHAR*,ULONG,RTL_ATOM*);
+NTSYSAPI NTSTATUS  WINAPI NtAdjustGroupsToken(HANDLE,BOOLEAN,PTOKEN_GROUPS,ULONG,PTOKEN_GROUPS,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtAdjustPrivilegesToken(HANDLE,BOOLEAN,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD);
+NTSYSAPI NTSTATUS  WINAPI NtAlertResumeThread(HANDLE,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtAlertThread(HANDLE ThreadHandle);
+NTSYSAPI NTSTATUS  WINAPI NtAllocateLocallyUniqueId(PLUID lpLuid);
+NTSYSAPI NTSTATUS  WINAPI NtAllocateUuids(PULARGE_INTEGER,PULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtAllocateVirtualMemory(HANDLE,PVOID*,ULONG,SIZE_T*,ULONG,ULONG);
+NTSYSAPI NTSTATUS  WINAPI NtAreMappedFilesTheSame(PVOID,PVOID);
+NTSYSAPI NTSTATUS  WINAPI NtAssignProcessToJobObject(HANDLE,HANDLE);
+NTSYSAPI NTSTATUS  WINAPI NtCallbackReturn(PVOID,ULONG,NTSTATUS);
+NTSYSAPI NTSTATUS  WINAPI NtCancelIoFile(HANDLE,PIO_STATUS_BLOCK);
+NTSYSAPI NTSTATUS  WINAPI NtCancelTimer(HANDLE, BOOLEAN*);
+NTSYSAPI NTSTATUS  WINAPI NtClearEvent(HANDLE);
+NTSYSAPI NTSTATUS  WINAPI NtClose(HANDLE);
+NTSYSAPI NTSTATUS  WINAPI NtCloseObjectAuditAlarm(PUNICODE_STRING,HANDLE,BOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI NtCompleteConnectPort(HANDLE);
+NTSYSAPI NTSTATUS  WINAPI NtConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtContinue(PCONTEXT,BOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI NtCreateDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
+NTSYSAPI NTSTATUS  WINAPI NtCreateEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *,BOOLEAN,BOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI NtCreateEventPair(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
+NTSYSAPI NTSTATUS  WINAPI NtCreateFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,PLARGE_INTEGER,ULONG,ULONG,ULONG,ULONG,PVOID,ULONG);
+NTSYSAPI NTSTATUS  WINAPI NtCreateIoCompletion(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,ULONG);
+NTSYSAPI NTSTATUS  WINAPI NtCreateJobObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
+NTSYSAPI NTSTATUS  WINAPI NtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtCreateMailslotFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,PLARGE_INTEGER);
+NTSYSAPI NTSTATUS  WINAPI NtCreateMutant(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,BOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI NtCreateNamedPipeFile(PHANDLE,ULONG,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,PLARGE_INTEGER);
+NTSYSAPI NTSTATUS  WINAPI NtCreatePagingFile(PUNICODE_STRING,PLARGE_INTEGER,PLARGE_INTEGER,PLARGE_INTEGER);
+NTSYSAPI NTSTATUS  WINAPI NtCreatePort(PHANDLE,POBJECT_ATTRIBUTES,ULONG,ULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtCreateProcess(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,HANDLE,BOOLEAN,HANDLE,HANDLE,HANDLE);
+NTSYSAPI NTSTATUS  WINAPI NtCreateProfile(PHANDLE,HANDLE,PVOID,ULONG,ULONG,PVOID,ULONG,KPROFILE_SOURCE,KAFFINITY);
+NTSYSAPI NTSTATUS  WINAPI NtCreateSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const LARGE_INTEGER*,ULONG,ULONG,HANDLE);
+NTSYSAPI NTSTATUS  WINAPI NtCreateSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,LONG,LONG);
+NTSYSAPI NTSTATUS  WINAPI NtCreateSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PUNICODE_STRING);
+NTSYSAPI NTSTATUS  WINAPI NtCreateThread(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,HANDLE,PCLIENT_ID,PCONTEXT,PINITIAL_TEB,BOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI NtCreateTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*, TIMER_TYPE);
+NTSYSAPI NTSTATUS  WINAPI NtCreateToken(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,TOKEN_TYPE,PLUID,PLARGE_INTEGER,PTOKEN_USER,PTOKEN_GROUPS,PTOKEN_PRIVILEGES,PTOKEN_OWNER,PTOKEN_PRIMARY_GROUP,PTOKEN_DEFAULT_DACL,PTOKEN_SOURCE);
+NTSYSAPI NTSTATUS  WINAPI NtDelayExecution(BOOLEAN,const LARGE_INTEGER*);
+NTSYSAPI NTSTATUS  WINAPI NtDeleteAtom(RTL_ATOM);
+NTSYSAPI NTSTATUS  WINAPI NtDeleteFile(POBJECT_ATTRIBUTES);
+NTSYSAPI NTSTATUS  WINAPI NtDeleteKey(HANDLE);
+NTSYSAPI NTSTATUS  WINAPI NtDeleteValueKey(HANDLE,const UNICODE_STRING *);
+NTSYSAPI NTSTATUS  WINAPI NtDeviceIoControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
+NTSYSAPI NTSTATUS  WINAPI NtDisplayString(PUNICODE_STRING);
+NTSYSAPI NTSTATUS  WINAPI NtDuplicateObject(HANDLE,HANDLE,HANDLE,PHANDLE,ACCESS_MASK,ULONG,ULONG);
+NTSYSAPI NTSTATUS  WINAPI NtDuplicateToken(HANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,PHANDLE);
+NTSYSAPI NTSTATUS  WINAPI NtEnumerateKey(HANDLE,ULONG,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
+NTSYSAPI NTSTATUS  WINAPI NtEnumerateValueKey(HANDLE,ULONG,KEY_VALUE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtExtendSection(HANDLE,PLARGE_INTEGER);
+NTSYSAPI NTSTATUS  WINAPI NtFindAtom(const WCHAR*,ULONG,RTL_ATOM*);
+NTSYSAPI NTSTATUS  WINAPI NtFlushBuffersFile(HANDLE,IO_STATUS_BLOCK*);
+NTSYSAPI NTSTATUS  WINAPI NtFlushInstructionCache(HANDLE,LPCVOID,SIZE_T);
+NTSYSAPI NTSTATUS  WINAPI NtFlushKey(HANDLE);
+NTSYSAPI NTSTATUS  WINAPI NtFlushVirtualMemory(HANDLE,LPCVOID*,SIZE_T*,ULONG);
+NTSYSAPI NTSTATUS  WINAPI NtFlushWriteBuffer(VOID);
+NTSYSAPI NTSTATUS  WINAPI NtFreeVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
+NTSYSAPI NTSTATUS  WINAPI NtFsControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
+NTSYSAPI NTSTATUS  WINAPI NtGetContextThread(HANDLE,CONTEXT*);
+NTSYSAPI NTSTATUS  WINAPI NtGetPlugPlayEvent(ULONG,ULONG,PVOID,ULONG);
+NTSYSAPI ULONG     WINAPI NtGetTickCount(VOID);
+NTSYSAPI NTSTATUS  WINAPI NtGetWriteWatch(HANDLE,ULONG,PVOID,SIZE_T,PVOID*,ULONG_PTR*,ULONG*);
+NTSYSAPI NTSTATUS  WINAPI NtImpersonateAnonymousToken(HANDLE);
+NTSYSAPI NTSTATUS  WINAPI NtImpersonateClientOfPort(HANDLE,PPORT_MESSAGE);
+NTSYSAPI NTSTATUS  WINAPI NtImpersonateThread(HANDLE,HANDLE,PSECURITY_QUALITY_OF_SERVICE);
+NTSYSAPI NTSTATUS  WINAPI NtInitializeRegistry(BOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI NtInitiatePowerAction(POWER_ACTION,SYSTEM_POWER_STATE,ULONG,BOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI NtIsProcessInJob(HANDLE,HANDLE);
+NTSYSAPI NTSTATUS  WINAPI NtListenPort(HANDLE,PLPC_MESSAGE);
+NTSYSAPI NTSTATUS  WINAPI NtLoadDriver(const UNICODE_STRING *);
+NTSYSAPI NTSTATUS  WINAPI NtLoadKey(const OBJECT_ATTRIBUTES *,OBJECT_ATTRIBUTES *);
+NTSYSAPI NTSTATUS  WINAPI NtLockFile(HANDLE,HANDLE,PIO_APC_ROUTINE,void*,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,ULONG*,BOOLEAN,BOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI NtLockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
+NTSYSAPI NTSTATUS  WINAPI NtMakeTemporaryObject(HANDLE);
+NTSYSAPI NTSTATUS  WINAPI NtMapViewOfSection(HANDLE,HANDLE,PVOID*,ULONG,SIZE_T,const LARGE_INTEGER*,SIZE_T*,SECTION_INHERIT,ULONG,ULONG);
+NTSYSAPI NTSTATUS  WINAPI NtNotifyChangeDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,ULONG,BOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI NtNotifyChangeKey(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI NtOpenDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
+NTSYSAPI NTSTATUS  WINAPI NtOpenEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
+NTSYSAPI NTSTATUS  WINAPI NtOpenEventPair(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
+NTSYSAPI NTSTATUS  WINAPI NtOpenFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG);
+NTSYSAPI NTSTATUS  WINAPI NtOpenIoCompletion(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
+NTSYSAPI NTSTATUS  WINAPI NtOpenJobObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
+NTSYSAPI NTSTATUS  WINAPI NtOpenKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
+NTSYSAPI NTSTATUS  WINAPI NtOpenMutant(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
+NTSYSAPI NTSTATUS  WINAPI NtOpenObjectAuditAlarm(PUNICODE_STRING,PHANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,ACCESS_MASK,PPRIVILEGE_SET,BOOLEAN,BOOLEAN,PBOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI NtOpenProcess(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
+NTSYSAPI NTSTATUS  WINAPI NtOpenProcessToken(HANDLE,DWORD,HANDLE *);
+NTSYSAPI NTSTATUS  WINAPI NtOpenProcessTokenEx(HANDLE,DWORD,DWORD,HANDLE *);
+NTSYSAPI NTSTATUS  WINAPI NtOpenSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
+NTSYSAPI NTSTATUS  WINAPI NtOpenSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
+NTSYSAPI NTSTATUS  WINAPI NtOpenSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
+NTSYSAPI NTSTATUS  WINAPI NtOpenThread(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
+NTSYSAPI NTSTATUS  WINAPI NtOpenThreadToken(HANDLE,DWORD,BOOLEAN,HANDLE *);
+NTSYSAPI NTSTATUS  WINAPI NtOpenThreadTokenEx(HANDLE,DWORD,BOOLEAN,DWORD,HANDLE *);
+NTSYSAPI NTSTATUS  WINAPI NtOpenTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*);
+NTSYSAPI NTSTATUS  WINAPI NtPowerInformation(POWER_INFORMATION_LEVEL,PVOID,ULONG,PVOID,ULONG);
+NTSYSAPI NTSTATUS  WINAPI NtPrivilegeCheck(HANDLE,PPRIVILEGE_SET,PBOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI NtPrivilegeObjectAuditAlarm(PUNICODE_STRING,HANDLE,HANDLE,ULONG,PPRIVILEGE_SET,BOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI NtPrivilegedServiceAuditAlarm(PUNICODE_STRING,PUNICODE_STRING,HANDLE,PPRIVILEGE_SET,BOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI NtProtectVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG,ULONG*);
+NTSYSAPI NTSTATUS  WINAPI NtPulseEvent(HANDLE,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtQueueApcThread(HANDLE,PNTAPCFUNC,ULONG_PTR,ULONG_PTR,ULONG_PTR);
+NTSYSAPI NTSTATUS  WINAPI NtQueryAttributesFile(const OBJECT_ATTRIBUTES*,FILE_BASIC_INFORMATION*);
+NTSYSAPI NTSTATUS  WINAPI NtQueryDefaultLocale(BOOLEAN,LCID*);
+NTSYSAPI NTSTATUS  WINAPI NtQueryDefaultUILanguage(LANGID*);
+NTSYSAPI NTSTATUS  WINAPI NtQueryDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS,BOOLEAN,PUNICODE_STRING,BOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI NtQueryDirectoryObject(HANDLE,PDIRECTORY_BASIC_INFORMATION,ULONG,BOOLEAN,BOOLEAN,PULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtQueryEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,BOOLEAN,PVOID,ULONG,PULONG,BOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI NtQueryEvent(HANDLE,EVENT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtQueryFullAttributesFile(const OBJECT_ATTRIBUTES*,FILE_NETWORK_OPEN_INFORMATION*);
+NTSYSAPI NTSTATUS  WINAPI NtQueryInformationAtom(RTL_ATOM,ATOM_INFORMATION_CLASS,PVOID,ULONG,ULONG*);
+NTSYSAPI NTSTATUS  WINAPI NtQueryInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,LONG,FILE_INFORMATION_CLASS);
+NTSYSAPI NTSTATUS  WINAPI NtQueryInformationJobObject(HANDLE,JOBOBJECTINFOCLASS,PVOID,ULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtQueryInformationPort(HANDLE,PORT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtQueryInformationProcess(HANDLE,PROCESSINFOCLASS,PVOID,ULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtQueryInformationThread(HANDLE,THREADINFOCLASS,PVOID,ULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtQueryInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtQueryInstallUILanguage(LANGID*);
+NTSYSAPI NTSTATUS  WINAPI NtQueryIntervalProfile(KPROFILE_SOURCE,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtQueryIoCompletion(HANDLE,IO_COMPLETION_INFORMATION_CLASS,PVOID,ULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtQueryKey(HANDLE,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
+NTSYSAPI NTSTATUS  WINAPI NtQueryMultipleValueKey(HANDLE,PKEY_MULTIPLE_VALUE_INFORMATION,ULONG,PVOID,ULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtQueryMutant(HANDLE,MUTANT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtQueryObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG, PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtQueryOpenSubKeys(POBJECT_ATTRIBUTES,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtQueryPerformanceCounter(PLARGE_INTEGER, PLARGE_INTEGER);
+NTSYSAPI NTSTATUS  WINAPI NtQuerySecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,ULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtQuerySection(HANDLE,SECTION_INFORMATION_CLASS,PVOID,ULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtQuerySemaphore(HANDLE,SEMAPHORE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtQuerySymbolicLinkObject(HANDLE,PUNICODE_STRING,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtQuerySystemEnvironmentValue(PUNICODE_STRING,PWCHAR,ULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtQuerySystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtQuerySystemTime(PLARGE_INTEGER);
+NTSYSAPI NTSTATUS  WINAPI NtQueryTimer(HANDLE,TIMER_INFORMATION_CLASS,PVOID,ULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtQueryTimerResolution(PULONG,PULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtQueryValueKey(HANDLE,const UNICODE_STRING *,KEY_VALUE_INFORMATION_CLASS,void *,DWORD,DWORD *);
+NTSYSAPI NTSTATUS  WINAPI NtQueryVirtualMemory(HANDLE,LPCVOID,MEMORY_INFORMATION_CLASS,PVOID,SIZE_T,SIZE_T*);
+NTSYSAPI NTSTATUS  WINAPI NtQueryVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
+NTSYSAPI NTSTATUS  WINAPI NtRaiseException(PEXCEPTION_RECORD,PCONTEXT,BOOL);
+NTSYSAPI NTSTATUS  WINAPI NtRaiseHardError(NTSTATUS,ULONG,PUNICODE_STRING,PVOID*,HARDERROR_RESPONSE_OPTION,PHARDERROR_RESPONSE);
+NTSYSAPI NTSTATUS  WINAPI NtReadFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,PLARGE_INTEGER,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtReadFileScatter(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,FILE_SEGMENT_ELEMENT*,ULONG,PLARGE_INTEGER,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtReadRequestData(HANDLE,PLPC_MESSAGE,ULONG,PVOID,ULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtReadVirtualMemory(HANDLE,const void*,void*,SIZE_T,SIZE_T*);
+NTSYSAPI NTSTATUS  WINAPI NtRegisterThreadTerminatePort(HANDLE);
+NTSYSAPI NTSTATUS  WINAPI NtReleaseMutant(HANDLE,PLONG);
+NTSYSAPI NTSTATUS  WINAPI NtReleaseSemaphore(HANDLE,ULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtRemoveIoCompletion(HANDLE,PULONG_PTR,PULONG_PTR,PIO_STATUS_BLOCK,PLARGE_INTEGER);
+NTSYSAPI NTSTATUS  WINAPI NtReplaceKey(POBJECT_ATTRIBUTES,HANDLE,POBJECT_ATTRIBUTES);
+NTSYSAPI NTSTATUS  WINAPI NtReplyPort(HANDLE,PLPC_MESSAGE);
+NTSYSAPI NTSTATUS  WINAPI NtReplyWaitReceivePort(HANDLE,PULONG,PLPC_MESSAGE,PLPC_MESSAGE);
+NTSYSAPI NTSTATUS  WINAPI NtReplyWaitReceivePortEx(HANDLE,PVOID*,PPORT_MESSAGE,PPORT_MESSAGE,PLARGE_INTEGER);
+NTSYSAPI NTSTATUS  WINAPI NtReplyWaitReplyPort(HANDLE,PLPC_MESSAGE);
+NTSYSAPI NTSTATUS  WINAPI NtRequestPort(HANDLE,PLPC_MESSAGE);
+NTSYSAPI NTSTATUS  WINAPI NtRequestWaitReplyPort(HANDLE,PLPC_MESSAGE,PLPC_MESSAGE);
+NTSYSAPI NTSTATUS  WINAPI NtResetEvent(HANDLE,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtResetWriteWatch(HANDLE,PVOID,SIZE_T);
+NTSYSAPI NTSTATUS  WINAPI NtRestoreKey(HANDLE,HANDLE,ULONG);
+NTSYSAPI NTSTATUS  WINAPI NtResumeThread(HANDLE,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtSaveKey(HANDLE,HANDLE);
+NTSYSAPI NTSTATUS  WINAPI NtSecureConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PSID,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtSetContextThread(HANDLE,const CONTEXT*);
+NTSYSAPI NTSTATUS  WINAPI NtSetDefaultHardErrorPort(HANDLE);
+NTSYSAPI NTSTATUS  WINAPI NtSetDefaultLocale(BOOLEAN,LCID);
+NTSYSAPI NTSTATUS  WINAPI NtSetDefaultUILanguage(LANGID);
+NTSYSAPI NTSTATUS  WINAPI NtSetEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG);
+NTSYSAPI NTSTATUS  WINAPI NtSetEvent(HANDLE,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtSetHighEventPair(HANDLE);
+NTSYSAPI NTSTATUS  WINAPI NtSetHighWaitLowEventPair(HANDLE);
+NTSYSAPI NTSTATUS  WINAPI NtSetHighWaitLowThread(VOID);
+NTSYSAPI NTSTATUS  WINAPI NtSetInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS);
+NTSYSAPI NTSTATUS  WINAPI NtSetInformationJobObject(HANDLE,JOBOBJECTINFOCLASS,PVOID,ULONG);
+NTSYSAPI NTSTATUS  WINAPI NtSetInformationKey(HANDLE,const int,PVOID,ULONG);
+NTSYSAPI NTSTATUS  WINAPI NtSetInformationObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG);
+NTSYSAPI NTSTATUS  WINAPI NtSetInformationProcess(HANDLE,PROCESS_INFORMATION_CLASS,PVOID,ULONG);
+NTSYSAPI NTSTATUS  WINAPI NtSetInformationThread(HANDLE,THREADINFOCLASS,LPCVOID,ULONG);
+NTSYSAPI NTSTATUS  WINAPI NtSetInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG);
+NTSYSAPI NTSTATUS  WINAPI NtSetIntervalProfile(ULONG,KPROFILE_SOURCE);
+NTSYSAPI NTSTATUS  WINAPI NtSetIoCompletion(HANDLE,ULONG_PTR,ULONG_PTR,NTSTATUS,ULONG);
+NTSYSAPI NTSTATUS  WINAPI NtSetLdtEntries(ULONG,LDT_ENTRY,ULONG,LDT_ENTRY);
+NTSYSAPI NTSTATUS  WINAPI NtSetLowEventPair(HANDLE);
+NTSYSAPI NTSTATUS  WINAPI NtSetLowWaitHighEventPair(HANDLE);
+NTSYSAPI NTSTATUS  WINAPI NtSetLowWaitHighThread(VOID);
+NTSYSAPI NTSTATUS  WINAPI NtSetSecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+NTSYSAPI NTSTATUS  WINAPI NtSetSystemEnvironmentValue(PUNICODE_STRING,PUNICODE_STRING);
+NTSYSAPI NTSTATUS  WINAPI NtSetSystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG);
+NTSYSAPI NTSTATUS  WINAPI NtSetSystemPowerState(POWER_ACTION,SYSTEM_POWER_STATE,ULONG);
+NTSYSAPI NTSTATUS  WINAPI NtSetSystemTime(const LARGE_INTEGER*,LARGE_INTEGER*);
+NTSYSAPI NTSTATUS  WINAPI NtSetTimer(HANDLE, const LARGE_INTEGER*, PTIMER_APC_ROUTINE, PVOID, BOOLEAN, ULONG, BOOLEAN*);
+NTSYSAPI NTSTATUS  WINAPI NtSetTimerResolution(ULONG,BOOLEAN,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtSetValueKey(HANDLE,const UNICODE_STRING *,ULONG,ULONG,const void *,ULONG);
+NTSYSAPI NTSTATUS  WINAPI NtSetVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
+NTSYSAPI NTSTATUS  WINAPI NtSignalAndWaitForSingleObject(HANDLE,HANDLE,BOOLEAN,const LARGE_INTEGER*);
+NTSYSAPI NTSTATUS  WINAPI NtShutdownSystem(SHUTDOWN_ACTION);
+NTSYSAPI NTSTATUS  WINAPI NtStartProfile(HANDLE);
+NTSYSAPI NTSTATUS  WINAPI NtStopProfile(HANDLE);
+NTSYSAPI NTSTATUS  WINAPI NtSuspendThread(HANDLE,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtSystemDebugControl(SYSDBG_COMMAND,PVOID,ULONG,PVOID,ULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtTerminateJobObject(HANDLE,NTSTATUS);
+NTSYSAPI NTSTATUS  WINAPI NtTerminateProcess(HANDLE,LONG);
+NTSYSAPI NTSTATUS  WINAPI NtTerminateThread(HANDLE,LONG);
+NTSYSAPI NTSTATUS  WINAPI NtTestAlert(VOID);
+NTSYSAPI NTSTATUS  WINAPI NtUnloadDriver(const UNICODE_STRING *);
+NTSYSAPI NTSTATUS  WINAPI NtUnloadKey(POBJECT_ATTRIBUTES);
+NTSYSAPI NTSTATUS  WINAPI NtUnloadKeyEx(POBJECT_ATTRIBUTES,HANDLE);
+NTSYSAPI NTSTATUS  WINAPI NtUnlockFile(HANDLE,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtUnlockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
+NTSYSAPI NTSTATUS  WINAPI NtUnmapViewOfSection(HANDLE,PVOID);
+NTSYSAPI NTSTATUS  WINAPI NtVdmControl(ULONG,PVOID);
+NTSYSAPI NTSTATUS  WINAPI NtWaitForSingleObject(HANDLE,BOOLEAN,const LARGE_INTEGER*);
+NTSYSAPI NTSTATUS  WINAPI NtWaitForMultipleObjects(ULONG,const HANDLE*,BOOLEAN,BOOLEAN,const LARGE_INTEGER*);
+NTSYSAPI NTSTATUS  WINAPI NtWaitHighEventPair(HANDLE);
+NTSYSAPI NTSTATUS  WINAPI NtWaitLowEventPair(HANDLE);
+NTSYSAPI NTSTATUS  WINAPI NtWriteFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,const void*,ULONG,PLARGE_INTEGER,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtWriteFileGather(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,FILE_SEGMENT_ELEMENT*,ULONG,PLARGE_INTEGER,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtWriteRequestData(HANDLE,PLPC_MESSAGE,ULONG,PVOID,ULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtWriteVirtualMemory(HANDLE,void*,const void*,SIZE_T,SIZE_T*);
+NTSYSAPI NTSTATUS  WINAPI NtYieldExecution(void);
+
+NTSYSAPI void      WINAPI RtlAcquirePebLock(void);
+NTSYSAPI BYTE      WINAPI RtlAcquireResourceExclusive(LPRTL_RWLOCK,BYTE);
+NTSYSAPI BYTE      WINAPI RtlAcquireResourceShared(LPRTL_RWLOCK,BYTE);
+NTSYSAPI NTSTATUS  WINAPI RtlActivateActivationContext(DWORD,HANDLE,ULONG_PTR*);
+NTSYSAPI NTSTATUS  WINAPI RtlAddAce(PACL,DWORD,DWORD,PACE_HEADER,DWORD);
+NTSYSAPI NTSTATUS  WINAPI RtlAddAccessAllowedAce(PACL,DWORD,DWORD,PSID);
+NTSYSAPI NTSTATUS  WINAPI RtlAddAccessAllowedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
+NTSYSAPI NTSTATUS  WINAPI RtlAddAccessDeniedAce(PACL,DWORD,DWORD,PSID);
+NTSYSAPI NTSTATUS  WINAPI RtlAddAccessDeniedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
+NTSYSAPI NTSTATUS  WINAPI RtlAddAtomToAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*);
+NTSYSAPI NTSTATUS  WINAPI RtlAddAuditAccessAce(PACL,DWORD,DWORD,PSID,BOOL,BOOL);
+NTSYSAPI NTSTATUS  WINAPI RtlAddAuditAccessAceEx(PACL,DWORD,DWORD,DWORD,PSID,BOOL,BOOL);
+NTSYSAPI void      WINAPI RtlAddRefActivationContext(HANDLE);
+NTSYSAPI PVOID     WINAPI RtlAddVectoredExceptionHandler(ULONG,PVECTORED_EXCEPTION_HANDLER);
+NTSYSAPI NTSTATUS  WINAPI RtlAdjustPrivilege(ULONG,BOOLEAN,BOOLEAN,PBOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI RtlAllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PSID *);
+NTSYSAPI RTL_HANDLE * WINAPI RtlAllocateHandle(RTL_HANDLE_TABLE *,ULONG *);
+NTSYSAPI PVOID     WINAPI RtlAllocateHeap(HANDLE,ULONG,SIZE_T) __WINE_ALLOC_SIZE(3);
+NTSYSAPI WCHAR     WINAPI RtlAnsiCharToUnicodeChar(LPSTR *);
+NTSYSAPI DWORD     WINAPI RtlAnsiStringToUnicodeSize(const STRING *);
+NTSYSAPI NTSTATUS  WINAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING,PCANSI_STRING,BOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI RtlAppendAsciizToString(STRING *,LPCSTR);
+NTSYSAPI NTSTATUS  WINAPI RtlAppendStringToString(STRING *,const STRING *);
+NTSYSAPI NTSTATUS  WINAPI RtlAppendUnicodeStringToString(UNICODE_STRING *,const UNICODE_STRING *);
+NTSYSAPI NTSTATUS  WINAPI RtlAppendUnicodeToString(UNICODE_STRING *,LPCWSTR);
+NTSYSAPI BOOLEAN   WINAPI RtlAreAllAccessesGranted(ACCESS_MASK,ACCESS_MASK);
+NTSYSAPI BOOLEAN   WINAPI RtlAreAnyAccessesGranted(ACCESS_MASK,ACCESS_MASK);
+NTSYSAPI BOOLEAN   WINAPI RtlAreBitsSet(PCRTL_BITMAP,ULONG,ULONG);
+NTSYSAPI BOOLEAN   WINAPI RtlAreBitsClear(PCRTL_BITMAP,ULONG,ULONG);
+NTSYSAPI NTSTATUS  WINAPI RtlCharToInteger(PCSZ,ULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI RtlCheckRegistryKey(ULONG, PWSTR);
+NTSYSAPI void      WINAPI RtlClearAllBits(PRTL_BITMAP);
+NTSYSAPI void      WINAPI RtlClearBits(PRTL_BITMAP,ULONG,ULONG);
+NTSYSAPI NTSTATUS  WINAPI RtlCreateActivationContext(HANDLE*,const void*);
+NTSYSAPI PDEBUG_BUFFER WINAPI RtlCreateQueryDebugBuffer(ULONG,BOOLEAN);
+NTSYSAPI ULONG     WINAPI RtlCompactHeap(HANDLE,ULONG);
+NTSYSAPI LONG      WINAPI RtlCompareString(const STRING*,const STRING*,BOOLEAN);
+NTSYSAPI LONG      WINAPI RtlCompareUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
+NTSYSAPI DWORD     WINAPI RtlComputeCrc32(DWORD,const BYTE*,INT);
+NTSYSAPI NTSTATUS  WINAPI RtlConvertSidToUnicodeString(PUNICODE_STRING,PSID,BOOLEAN);
+NTSYSAPI LONGLONG  WINAPI RtlConvertLongToLargeInteger(LONG);
+NTSYSAPI ULONGLONG WINAPI RtlConvertUlongToLargeInteger(ULONG);
+NTSYSAPI void      WINAPI RtlCopyLuid(PLUID,const LUID*);
+NTSYSAPI void      WINAPI RtlCopyLuidAndAttributesArray(ULONG,const LUID_AND_ATTRIBUTES*,PLUID_AND_ATTRIBUTES);
+NTSYSAPI BOOLEAN   WINAPI RtlCopySid(DWORD,PSID,PSID);
+NTSYSAPI NTSTATUS  WINAPI RtlCopySecurityDescriptor(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR);
+NTSYSAPI void      WINAPI RtlCopyString(STRING*,const STRING*);
+NTSYSAPI void      WINAPI RtlCopyUnicodeString(UNICODE_STRING*,const UNICODE_STRING*);
+NTSYSAPI NTSTATUS  WINAPI RtlCreateAcl(PACL,DWORD,DWORD);
+NTSYSAPI NTSTATUS  WINAPI RtlCreateAtomTable(ULONG,RTL_ATOM_TABLE*);
+NTSYSAPI NTSTATUS  WINAPI RtlCreateEnvironment(BOOLEAN, PWSTR*);
+NTSYSAPI HANDLE    WINAPI RtlCreateHeap(ULONG,PVOID,SIZE_T,SIZE_T,PVOID,PRTL_HEAP_DEFINITION);
+NTSYSAPI NTSTATUS  WINAPI RtlCreateProcessParameters(RTL_USER_PROCESS_PARAMETERS**,const UNICODE_STRING*,const UNICODE_STRING*,const UNICODE_STRING*,const UNICODE_STRING*,PWSTR,const UNICODE_STRING*,const UNICODE_STRING*,const UNICODE_STRING*,const UNICODE_STRING*);
+NTSYSAPI NTSTATUS  WINAPI RtlCreateSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD);
+NTSYSAPI NTSTATUS  WINAPI RtlCreateTimerQueue(PHANDLE);
+NTSYSAPI NTSTATUS  WINAPI RtlCreateTimer(PHANDLE, HANDLE, RTL_WAITORTIMERCALLBACKFUNC, PVOID, DWORD, DWORD, ULONG);
+NTSYSAPI BOOLEAN   WINAPI RtlCreateUnicodeString(PUNICODE_STRING,LPCWSTR);
+NTSYSAPI BOOLEAN   WINAPI RtlCreateUnicodeStringFromAsciiz(PUNICODE_STRING,LPCSTR);
+NTSYSAPI NTSTATUS  WINAPI RtlCreateUserThread(HANDLE,const SECURITY_DESCRIPTOR*,BOOLEAN,PVOID,SIZE_T,SIZE_T,PRTL_THREAD_START_ROUTINE,void*,HANDLE*,CLIENT_ID*);
+NTSYSAPI void      WINAPI RtlDeactivateActivationContext(DWORD,ULONG_PTR);
+NTSYSAPI NTSTATUS  WINAPI RtlDeleteAce(PACL,DWORD);
+NTSYSAPI NTSTATUS  WINAPI RtlDeleteAtomFromAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
+NTSYSAPI NTSTATUS  WINAPI RtlDeleteCriticalSection(RTL_CRITICAL_SECTION *);
+NTSYSAPI NTSTATUS  WINAPI RtlDeleteRegistryValue(ULONG, PCWSTR, PCWSTR);
+NTSYSAPI void      WINAPI RtlDeleteResource(LPRTL_RWLOCK);
+NTSYSAPI NTSTATUS  WINAPI RtlDeleteSecurityObject(PSECURITY_DESCRIPTOR*);
+NTSYSAPI NTSTATUS  WINAPI RtlDeleteTimer(HANDLE, HANDLE, HANDLE);
+NTSYSAPI NTSTATUS  WINAPI RtlDeleteTimerQueueEx(HANDLE, HANDLE);
+NTSYSAPI PRTL_USER_PROCESS_PARAMETERS WINAPI RtlDeNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
+NTSYSAPI NTSTATUS  WINAPI RtlDeregisterWait(HANDLE);
+NTSYSAPI NTSTATUS  WINAPI RtlDeregisterWaitEx(HANDLE,HANDLE);
+NTSYSAPI NTSTATUS  WINAPI RtlDestroyAtomTable(RTL_ATOM_TABLE);
+NTSYSAPI NTSTATUS  WINAPI RtlDestroyEnvironment(PWSTR);
+NTSYSAPI NTSTATUS  WINAPI RtlDestroyHandleTable(RTL_HANDLE_TABLE *);
+NTSYSAPI HANDLE    WINAPI RtlDestroyHeap(HANDLE);
+NTSYSAPI void      WINAPI RtlDestroyProcessParameters(RTL_USER_PROCESS_PARAMETERS*);
+NTSYSAPI NTSTATUS  WINAPI RtlDestroyQueryDebugBuffer(PDEBUG_BUFFER);
+NTSYSAPI DOS_PATHNAME_TYPE WINAPI RtlDetermineDosPathNameType_U(PCWSTR);
+NTSYSAPI BOOLEAN   WINAPI RtlDllShutdownInProgress(void);
+NTSYSAPI BOOLEAN   WINAPI RtlDoesFileExists_U(LPCWSTR);
+NTSYSAPI BOOLEAN   WINAPI RtlDosPathNameToNtPathName_U(PCWSTR,PUNICODE_STRING,PWSTR*,CURDIR*);
+NTSYSAPI ULONG     WINAPI RtlDosSearchPath_U(LPCWSTR, LPCWSTR, LPCWSTR, ULONG, LPWSTR, LPWSTR*);
+NTSYSAPI WCHAR     WINAPI RtlDowncaseUnicodeChar(WCHAR);
+NTSYSAPI NTSTATUS  WINAPI RtlDowncaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
+NTSYSAPI void      WINAPI RtlDumpResource(LPRTL_RWLOCK);
+NTSYSAPI NTSTATUS  WINAPI RtlDuplicateUnicodeString(int,const UNICODE_STRING*,UNICODE_STRING*);
+NTSYSAPI NTSTATUS  WINAPI RtlEmptyAtomTable(RTL_ATOM_TABLE,BOOLEAN);
+NTSYSAPI LONGLONG  WINAPI RtlEnlargedIntegerMultiply(INT,INT);
+NTSYSAPI ULONGLONG WINAPI RtlEnlargedUnsignedMultiply(UINT,UINT);
+NTSYSAPI UINT      WINAPI RtlEnlargedUnsignedDivide(ULONGLONG,UINT,UINT *);
+NTSYSAPI NTSTATUS  WINAPI RtlEnterCriticalSection(RTL_CRITICAL_SECTION *);
+NTSYSAPI void      WINAPI RtlEraseUnicodeString(UNICODE_STRING*);
+NTSYSAPI NTSTATUS  WINAPI RtlEqualComputerName(const UNICODE_STRING*,const UNICODE_STRING*);
+NTSYSAPI NTSTATUS  WINAPI RtlEqualDomainName(const UNICODE_STRING*,const UNICODE_STRING*);
+NTSYSAPI BOOLEAN   WINAPI RtlEqualLuid(const LUID*,const LUID*);
+NTSYSAPI BOOL      WINAPI RtlEqualPrefixSid(PSID,PSID);
+NTSYSAPI BOOL      WINAPI RtlEqualSid(PSID,PSID);
+NTSYSAPI BOOLEAN   WINAPI RtlEqualString(const STRING*,const STRING*,BOOLEAN);
+NTSYSAPI BOOLEAN   WINAPI RtlEqualUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
+NTSYSAPI void      DECLSPEC_NORETURN WINAPI RtlExitUserThread(ULONG);
+NTSYSAPI NTSTATUS  WINAPI RtlExpandEnvironmentStrings_U(PCWSTR, const UNICODE_STRING*, UNICODE_STRING*, ULONG*);
+NTSYSAPI LONGLONG  WINAPI RtlExtendedMagicDivide(LONGLONG,LONGLONG,INT);
+NTSYSAPI LONGLONG  WINAPI RtlExtendedIntegerMultiply(LONGLONG,INT);
+NTSYSAPI LONGLONG  WINAPI RtlExtendedLargeIntegerDivide(LONGLONG,INT,INT *);
+NTSYSAPI NTSTATUS  WINAPI RtlFindActivationContextSectionString(ULONG,const GUID*,ULONG,const UNICODE_STRING*,PVOID);
+NTSYSAPI NTSTATUS  WINAPI RtlFindCharInUnicodeString(int,const UNICODE_STRING*,const UNICODE_STRING*,USHORT*);
+NTSYSAPI ULONG     WINAPI RtlFindClearBits(PCRTL_BITMAP,ULONG,ULONG);
+NTSYSAPI ULONG     WINAPI RtlFindClearBitsAndSet(PRTL_BITMAP,ULONG,ULONG);
+NTSYSAPI ULONG     WINAPI RtlFindClearRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
+NTSYSAPI ULONG     WINAPI RtlFindLastBackwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
+NTSYSAPI ULONG     WINAPI RtlFindLastBackwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
+NTSYSAPI CCHAR     WINAPI RtlFindLeastSignificantBit(ULONGLONG);
+NTSYSAPI ULONG     WINAPI RtlFindLongestRunSet(PCRTL_BITMAP,PULONG);
+NTSYSAPI ULONG     WINAPI RtlFindLongestRunClear(PCRTL_BITMAP,PULONG);
+NTSYSAPI NTSTATUS  WINAPI RtlFindMessage(HMODULE,ULONG,ULONG,ULONG,const MESSAGE_RESOURCE_ENTRY**);
+NTSYSAPI CCHAR     WINAPI RtlFindMostSignificantBit(ULONGLONG);
+NTSYSAPI ULONG     WINAPI RtlFindNextForwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
+NTSYSAPI ULONG     WINAPI RtlFindNextForwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
+NTSYSAPI ULONG     WINAPI RtlFindSetBits(PCRTL_BITMAP,ULONG,ULONG);
+NTSYSAPI ULONG     WINAPI RtlFindSetBitsAndClear(PRTL_BITMAP,ULONG,ULONG);
+NTSYSAPI ULONG     WINAPI RtlFindSetRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
+NTSYSAPI BOOLEAN   WINAPI RtlFirstFreeAce(PACL,PACE_HEADER *);
+NTSYSAPI NTSTATUS  WINAPI RtlFormatCurrentUserKeyPath(PUNICODE_STRING);
+NTSYSAPI NTSTATUS  WINAPI RtlFormatMessage(LPWSTR,UCHAR,BOOLEAN,BOOLEAN,BOOLEAN,va_list *,LPWSTR,ULONG);
+NTSYSAPI void      WINAPI RtlFreeAnsiString(PANSI_STRING);
+NTSYSAPI BOOLEAN   WINAPI RtlFreeHandle(RTL_HANDLE_TABLE *,RTL_HANDLE *);
+NTSYSAPI BOOLEAN   WINAPI RtlFreeHeap(HANDLE,ULONG,PVOID);
+NTSYSAPI void      WINAPI RtlFreeOemString(POEM_STRING);
+NTSYSAPI DWORD     WINAPI RtlFreeSid(PSID);
+NTSYSAPI void      WINAPI RtlFreeThreadActivationContextStack(void);
+NTSYSAPI void      WINAPI RtlFreeUnicodeString(PUNICODE_STRING);
+NTSYSAPI NTSTATUS  WINAPI RtlGetAce(PACL,DWORD,LPVOID *);
+NTSYSAPI NTSTATUS  WINAPI RtlGetActiveActivationContext(HANDLE*);
+NTSYSAPI NTSTATUS  WINAPI RtlGetControlSecurityDescriptor(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL,LPDWORD);
+NTSYSAPI NTSTATUS  WINAPI RtlGetCurrentDirectory_U(ULONG, LPWSTR);
+NTSYSAPI PEB *     WINAPI RtlGetCurrentPeb(void);
+NTSYSAPI NTSTATUS  WINAPI RtlGetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
+NTSYSAPI ULONG     WINAPI RtlGetFullPathName_U(PCWSTR,ULONG,PWSTR,PWSTR*);
+NTSYSAPI NTSTATUS  WINAPI RtlGetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI RtlGetLastNtStatus(void);
+NTSYSAPI DWORD     WINAPI RtlGetLastWin32Error(void);
+NTSYSAPI DWORD     WINAPI RtlGetLongestNtPathLength(void);
+NTSYSAPI BOOLEAN   WINAPI RtlGetNtProductType(LPDWORD);
+NTSYSAPI NTSTATUS  WINAPI RtlGetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
+NTSYSAPI ULONG     WINAPI RtlGetProcessHeaps(ULONG,HANDLE*);
+NTSYSAPI NTSTATUS  WINAPI RtlGetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI RtlGetVersion(RTL_OSVERSIONINFOEXW*);
+NTSYSAPI NTSTATUS  WINAPI RtlGUIDFromString(PUNICODE_STRING,GUID*);
+NTSYSAPI PSID_IDENTIFIER_AUTHORITY WINAPI RtlIdentifierAuthoritySid(PSID);
+NTSYSAPI PVOID     WINAPI RtlImageDirectoryEntryToData(HMODULE,BOOL,WORD,ULONG *);
+NTSYSAPI PIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE);
+NTSYSAPI PIMAGE_SECTION_HEADER WINAPI RtlImageRvaToSection(const IMAGE_NT_HEADERS *,HMODULE,DWORD);
+NTSYSAPI PVOID     WINAPI RtlImageRvaToVa(const IMAGE_NT_HEADERS *,HMODULE,DWORD,IMAGE_SECTION_HEADER **);
+NTSYSAPI NTSTATUS  WINAPI RtlImpersonateSelf(SECURITY_IMPERSONATION_LEVEL);
+NTSYSAPI void      WINAPI RtlInitString(PSTRING,PCSZ);
+NTSYSAPI void      WINAPI RtlInitAnsiString(PANSI_STRING,PCSZ);
+NTSYSAPI NTSTATUS  WINAPI RtlInitAnsiStringEx(PANSI_STRING,PCSZ);
+NTSYSAPI void      WINAPI RtlInitUnicodeString(PUNICODE_STRING,PCWSTR);
+NTSYSAPI NTSTATUS  WINAPI RtlInitUnicodeStringEx(PUNICODE_STRING,PCWSTR);
+NTSYSAPI NTSTATUS  WINAPI RtlInitializeCriticalSection(RTL_CRITICAL_SECTION *);
+NTSYSAPI NTSTATUS  WINAPI RtlInitializeCriticalSectionAndSpinCount(RTL_CRITICAL_SECTION *,ULONG);
+NTSYSAPI NTSTATUS  WINAPI RtlInitializeCriticalSectionEx(RTL_CRITICAL_SECTION *,ULONG,ULONG);
+NTSYSAPI void      WINAPI RtlInitializeBitMap(PRTL_BITMAP,PULONG,ULONG);
+NTSYSAPI void      WINAPI RtlInitializeHandleTable(ULONG,ULONG,RTL_HANDLE_TABLE *);
+NTSYSAPI void      WINAPI RtlInitializeResource(LPRTL_RWLOCK);
+NTSYSAPI BOOL      WINAPI RtlInitializeSid(PSID,PSID_IDENTIFIER_AUTHORITY,BYTE);
+NTSYSAPI NTSTATUS  WINAPI RtlInt64ToUnicodeString(ULONGLONG,ULONG,UNICODE_STRING *);
+NTSYSAPI NTSTATUS  WINAPI RtlIntegerToChar(ULONG,ULONG,ULONG,PCHAR);
+NTSYSAPI NTSTATUS  WINAPI RtlIntegerToUnicodeString(ULONG,ULONG,UNICODE_STRING *);
+NTSYSAPI BOOLEAN   WINAPI RtlIsActivationContextActive(HANDLE);
+NTSYSAPI ULONG     WINAPI RtlIsDosDeviceName_U(PCWSTR);
+NTSYSAPI BOOLEAN   WINAPI RtlIsNameLegalDOS8Dot3(const UNICODE_STRING*,POEM_STRING,PBOOLEAN);
+NTSYSAPI BOOLEAN   WINAPI RtlIsTextUnicode(LPCVOID,INT,INT *);
+NTSYSAPI BOOLEAN   WINAPI RtlIsValidHandle(const RTL_HANDLE_TABLE *, const RTL_HANDLE *);
+NTSYSAPI BOOLEAN   WINAPI RtlIsValidIndexHandle(const RTL_HANDLE_TABLE *, ULONG Index, RTL_HANDLE **);
+NTSYSAPI LONGLONG  WINAPI RtlLargeIntegerAdd(LONGLONG,LONGLONG);
+NTSYSAPI LONGLONG  WINAPI RtlLargeIntegerArithmeticShift(LONGLONG,INT);
+NTSYSAPI ULONGLONG WINAPI RtlLargeIntegerDivide( ULONGLONG,ULONGLONG,ULONGLONG *);
+NTSYSAPI LONGLONG  WINAPI RtlLargeIntegerNegate(LONGLONG);
+NTSYSAPI LONGLONG  WINAPI RtlLargeIntegerShiftLeft(LONGLONG,INT);
+NTSYSAPI LONGLONG  WINAPI RtlLargeIntegerShiftRight(LONGLONG,INT);
+NTSYSAPI LONGLONG  WINAPI RtlLargeIntegerSubtract(LONGLONG,LONGLONG);
+NTSYSAPI NTSTATUS  WINAPI RtlLargeIntegerToChar(const ULONGLONG *,ULONG,ULONG,PCHAR);
+NTSYSAPI NTSTATUS  WINAPI RtlLeaveCriticalSection(RTL_CRITICAL_SECTION *);
+NTSYSAPI DWORD     WINAPI RtlLengthRequiredSid(DWORD);
+NTSYSAPI ULONG     WINAPI RtlLengthSecurityDescriptor(PSECURITY_DESCRIPTOR);
+NTSYSAPI DWORD     WINAPI RtlLengthSid(PSID);
+NTSYSAPI NTSTATUS  WINAPI RtlLocalTimeToSystemTime(const LARGE_INTEGER*,PLARGE_INTEGER);
+NTSYSAPI BOOLEAN   WINAPI RtlLockHeap(HANDLE);
+NTSYSAPI NTSTATUS  WINAPI RtlLookupAtomInAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*);
+NTSYSAPI NTSTATUS  WINAPI RtlMakeSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,LPDWORD);
+NTSYSAPI void      WINAPI RtlMapGenericMask(PACCESS_MASK,const GENERIC_MAPPING*);
+NTSYSAPI NTSTATUS  WINAPI RtlMultiByteToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
+NTSYSAPI NTSTATUS  WINAPI RtlMultiByteToUnicodeSize(DWORD*,LPCSTR,UINT);
+NTSYSAPI NTSTATUS  WINAPI RtlNewSecurityObject(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,BOOLEAN,HANDLE,PGENERIC_MAPPING);
+NTSYSAPI PRTL_USER_PROCESS_PARAMETERS WINAPI RtlNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
+NTSYSAPI ULONG     WINAPI RtlNtStatusToDosError(NTSTATUS);
+NTSYSAPI ULONG     WINAPI RtlNtStatusToDosErrorNoTeb(NTSTATUS);
+NTSYSAPI ULONG     WINAPI RtlNumberOfSetBits(PCRTL_BITMAP);
+NTSYSAPI ULONG     WINAPI RtlNumberOfClearBits(PCRTL_BITMAP);
+NTSYSAPI UINT      WINAPI RtlOemStringToUnicodeSize(const STRING*);
+NTSYSAPI NTSTATUS  WINAPI RtlOemStringToUnicodeString(UNICODE_STRING*,const STRING*,BOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI RtlOemToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
+NTSYSAPI NTSTATUS  WINAPI RtlOpenCurrentUser(ACCESS_MASK,PHANDLE);
+NTSYSAPI PVOID     WINAPI RtlPcToFileHeader(PVOID,PVOID*);
+NTSYSAPI NTSTATUS  WINAPI RtlPinAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
+NTSYSAPI BOOLEAN   WINAPI RtlPrefixString(const STRING*,const STRING*,BOOLEAN);
+NTSYSAPI BOOLEAN   WINAPI RtlPrefixUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI RtlQueryAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM,ULONG*,ULONG*,WCHAR*,ULONG*);
+NTSYSAPI NTSTATUS  WINAPI RtlQueryEnvironmentVariable_U(PWSTR,PUNICODE_STRING,PUNICODE_STRING);
+NTSYSAPI NTSTATUS  WINAPI RtlQueryInformationAcl(PACL,LPVOID,DWORD,ACL_INFORMATION_CLASS);
+NTSYSAPI NTSTATUS  WINAPI RtlQueryInformationActivationContext(ULONG,HANDLE,PVOID,ULONG,PVOID,SIZE_T,SIZE_T*);
+NTSYSAPI NTSTATUS  WINAPI RtlQueryProcessDebugInformation(ULONG,ULONG,PDEBUG_BUFFER);
+NTSYSAPI NTSTATUS  WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID);
+NTSYSAPI NTSTATUS  WINAPI RtlQueryTimeZoneInformation(RTL_TIME_ZONE_INFORMATION*);
+NTSYSAPI NTSTATUS  WINAPI RtlQueueWorkItem(PRTL_WORK_ITEM_ROUTINE,PVOID,ULONG);
+NTSYSAPI void      WINAPI RtlRaiseException(PEXCEPTION_RECORD);
+NTSYSAPI void      WINAPI RtlRaiseStatus(NTSTATUS);
+NTSYSAPI ULONG     WINAPI RtlRandom(PULONG);
+NTSYSAPI PVOID     WINAPI RtlReAllocateHeap(HANDLE,ULONG,PVOID,SIZE_T);
+NTSYSAPI NTSTATUS  WINAPI RtlRegisterWait(PHANDLE,HANDLE,RTL_WAITORTIMERCALLBACKFUNC,PVOID,ULONG,ULONG);
+NTSYSAPI void      WINAPI RtlReleaseActivationContext(HANDLE);
+NTSYSAPI void      WINAPI RtlReleasePebLock(void);
+NTSYSAPI void      WINAPI RtlReleaseResource(LPRTL_RWLOCK);
+NTSYSAPI ULONG     WINAPI RtlRemoveVectoredExceptionHandler(PVOID);
+NTSYSAPI void      WINAPI RtlRestoreLastWin32Error(DWORD);
+NTSYSAPI void      WINAPI RtlSecondsSince1970ToTime(DWORD,LARGE_INTEGER *);
+NTSYSAPI void      WINAPI RtlSecondsSince1980ToTime(DWORD,LARGE_INTEGER *);
+NTSYSAPI NTSTATUS  WINAPI RtlSelfRelativeToAbsoluteSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PDWORD,PACL,PDWORD,PACL,PDWORD,PSID,PDWORD,PSID,PDWORD);
+NTSYSAPI void      WINAPI RtlSetAllBits(PRTL_BITMAP);
+NTSYSAPI void      WINAPI RtlSetBits(PRTL_BITMAP,ULONG,ULONG);
+NTSYSAPI ULONG     WINAPI RtlSetCriticalSectionSpinCount(RTL_CRITICAL_SECTION*,ULONG);
+NTSYSAPI NTSTATUS  WINAPI RtlSetControlSecurityDescriptor(PSECURITY_DESCRIPTOR,SECURITY_DESCRIPTOR_CONTROL,SECURITY_DESCRIPTOR_CONTROL);
+NTSYSAPI NTSTATUS  WINAPI RtlSetCurrentDirectory_U(const UNICODE_STRING*);
+NTSYSAPI void      WINAPI RtlSetCurrentEnvironment(PWSTR, PWSTR*);
+NTSYSAPI NTSTATUS  WINAPI RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI RtlSetEnvironmentVariable(PWSTR*,PUNICODE_STRING,PUNICODE_STRING);
+NTSYSAPI NTSTATUS  WINAPI RtlSetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI RtlSetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI RtlSetIoCompletionCallback(HANDLE,PRTL_OVERLAPPED_COMPLETION_ROUTINE,ULONG);
+NTSYSAPI void      WINAPI RtlSetLastWin32Error(DWORD);
+NTSYSAPI void      WINAPI RtlSetLastWin32ErrorAndNtStatusFromNtStatus(NTSTATUS);
+NTSYSAPI NTSTATUS  WINAPI RtlSetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI RtlSetTimeZoneInformation(const RTL_TIME_ZONE_INFORMATION*);
+NTSYSAPI SIZE_T    WINAPI RtlSizeHeap(HANDLE,ULONG,const void*);
+NTSYSAPI NTSTATUS  WINAPI RtlStringFromGUID(REFGUID,PUNICODE_STRING);
+NTSYSAPI LPDWORD   WINAPI RtlSubAuthoritySid(PSID,DWORD);
+NTSYSAPI LPBYTE    WINAPI RtlSubAuthorityCountSid(PSID);
+NTSYSAPI NTSTATUS  WINAPI RtlSystemTimeToLocalTime(const LARGE_INTEGER*,PLARGE_INTEGER);
+NTSYSAPI void      WINAPI RtlTimeToTimeFields(const LARGE_INTEGER*,PTIME_FIELDS);
+NTSYSAPI BOOLEAN   WINAPI RtlTimeFieldsToTime(PTIME_FIELDS,PLARGE_INTEGER);
+NTSYSAPI void      WINAPI RtlTimeToElapsedTimeFields(const LARGE_INTEGER *,PTIME_FIELDS);
+NTSYSAPI BOOLEAN   WINAPI RtlTimeToSecondsSince1970(const LARGE_INTEGER *,LPDWORD);
+NTSYSAPI BOOLEAN   WINAPI RtlTimeToSecondsSince1980(const LARGE_INTEGER *,LPDWORD);
+NTSYSAPI BOOL      WINAPI RtlTryEnterCriticalSection(RTL_CRITICAL_SECTION *);
+NTSYSAPI ULONGLONG __cdecl RtlUlonglongByteSwap(ULONGLONG);
+NTSYSAPI DWORD     WINAPI RtlUnicodeStringToAnsiSize(const UNICODE_STRING*);
+NTSYSAPI NTSTATUS  WINAPI RtlUnicodeStringToAnsiString(PANSI_STRING,PCUNICODE_STRING,BOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI RtlUnicodeStringToInteger(const UNICODE_STRING *,ULONG,ULONG *);
+NTSYSAPI DWORD     WINAPI RtlUnicodeStringToOemSize(const UNICODE_STRING*);
+NTSYSAPI NTSTATUS  WINAPI RtlUnicodeStringToOemString(POEM_STRING,PCUNICODE_STRING,BOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI RtlUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
+NTSYSAPI NTSTATUS  WINAPI RtlUnicodeToMultiByteSize(PULONG,PCWSTR,ULONG);
+NTSYSAPI NTSTATUS  WINAPI RtlUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
+NTSYSAPI ULONG     WINAPI RtlUniform(PULONG);
+NTSYSAPI BOOLEAN   WINAPI RtlUnlockHeap(HANDLE);
+NTSYSAPI void      WINAPI RtlUnwind(PVOID,PVOID,PEXCEPTION_RECORD,PVOID);
+#ifdef __ia64__
+NTSYSAPI void      WINAPI RtlUnwind2(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT);
+NTSYSAPI void      WINAPI RtlUnwindEx(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT,PUNWIND_HISTORY_TABLE);
+#endif
+NTSYSAPI WCHAR     WINAPI RtlUpcaseUnicodeChar(WCHAR);
+NTSYSAPI NTSTATUS  WINAPI RtlUpcaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING *,BOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI RtlUpcaseUnicodeStringToAnsiString(STRING*,const UNICODE_STRING*,BOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI RtlUpcaseUnicodeStringToCountedOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI RtlUpcaseUnicodeStringToOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
+NTSYSAPI NTSTATUS  WINAPI RtlUpcaseUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
+NTSYSAPI NTSTATUS  WINAPI RtlUpcaseUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
+NTSYSAPI NTSTATUS  WINAPI RtlUpdateTimer(HANDLE, HANDLE, DWORD, DWORD);
+NTSYSAPI CHAR      WINAPI RtlUpperChar(CHAR);
+NTSYSAPI void      WINAPI RtlUpperString(STRING *,const STRING *);
+NTSYSAPI NTSTATUS  WINAPI RtlValidSecurityDescriptor(PSECURITY_DESCRIPTOR);
+NTSYSAPI BOOLEAN   WINAPI RtlValidAcl(PACL);
+NTSYSAPI BOOLEAN   WINAPI RtlValidSid(PSID);
+NTSYSAPI BOOLEAN   WINAPI RtlValidateHeap(HANDLE,ULONG,LPCVOID);
+NTSYSAPI NTSTATUS  WINAPI RtlVerifyVersionInfo(const RTL_OSVERSIONINFOEXW*,DWORD,DWORDLONG);
+NTSYSAPI NTSTATUS  WINAPI RtlWalkHeap(HANDLE,PVOID);
+NTSYSAPI NTSTATUS  WINAPI RtlWriteRegistryValue(ULONG,PCWSTR,PCWSTR,ULONG,PVOID,ULONG);
+NTSYSAPI NTSTATUS  WINAPI RtlpNtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI RtlpNtEnumerateSubKey(HANDLE,UNICODE_STRING *, ULONG);
+NTSYSAPI NTSTATUS  WINAPI RtlpWaitForCriticalSection(RTL_CRITICAL_SECTION *);
+NTSYSAPI NTSTATUS  WINAPI RtlpUnWaitCriticalSection(RTL_CRITICAL_SECTION *);
+NTSYSAPI NTSTATUS  WINAPI vDbgPrintEx(ULONG,ULONG,LPCSTR,va_list);
+NTSYSAPI NTSTATUS  WINAPI vDbgPrintExWithPrefix(LPCSTR,ULONG,ULONG,LPCSTR,va_list);
+
+/* Wine internal functions */
+
+NTSYSAPI NTSTATUS wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRING *unix_name_ret,
+                                             UINT disposition, BOOLEAN check_case );
+NTSYSAPI NTSTATUS wine_unix_to_nt_file_name( const ANSI_STRING *name, UNICODE_STRING *nt );
+
+
+/***********************************************************************
+ * Inline functions
+ */
+
+#define InitializeObjectAttributes(p,n,a,r,s) \
+    do { \
+        (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
+        (p)->RootDirectory = r; \
+        (p)->Attributes = a; \
+        (p)->ObjectName = n; \
+        (p)->SecurityDescriptor = s; \
+        (p)->SecurityQualityOfService = NULL; \
+    } while (0)
+
+#define NtCurrentProcess() ((HANDLE)-1)
+
+#define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length))
+#define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length))
+#define RtlStoreUlong(p,v)  do { ULONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
+#define RtlStoreUlonglong(p,v) do { ULONGLONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
+#define RtlRetrieveUlong(p,s) memcpy((p), (s), sizeof(ULONG))
+#define RtlRetrieveUlonglong(p,s) memcpy((p), (s), sizeof(ULONGLONG))
+#define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))
+
+static inline BOOLEAN RtlCheckBit(PCRTL_BITMAP lpBits, ULONG ulBit)
+{
+    if (lpBits && ulBit < lpBits->SizeOfBitMap &&
+        lpBits->Buffer[ulBit >> 5] & (1 << (ulBit & 31)))
+        return TRUE;
+    return FALSE;
+}
+
+/* These are implemented as __fastcall, so we can't let Winelib apps link with them */
+static inline USHORT RtlUshortByteSwap(USHORT s)
+{
+    return (s >> 8) | (s << 8);
+}
+static inline ULONG RtlUlongByteSwap(ULONG i)
+{
+#if defined(__i386__) && defined(__GNUC__)
+    ULONG ret;
+    __asm__("bswap %0" : "=r" (ret) : "0" (i) );
+    return ret;
+#else
+    return ((ULONG)RtlUshortByteSwap((USHORT)i) << 16) | RtlUshortByteSwap((USHORT)(i >> 16));
+#endif
+}
+
+/* list manipulation macros */
+#define InitializeListHead(le)  (void)((le)->Flink = (le)->Blink = (le))
+#define InsertHeadList(le,e)    do { PLIST_ENTRY f = (le)->Flink; (e)->Flink = f; (e)->Blink = (le); f->Blink = (e); (le)->Flink = (e); } while (0)
+#define InsertTailList(le,e)    do { PLIST_ENTRY b = (le)->Blink; (e)->Flink = (le); (e)->Blink = b; b->Flink = (e); (le)->Blink = (e); } while (0)
+#define IsListEmpty(le)         ((le)->Flink == (le))
+#define RemoveEntryList(e)      do { PLIST_ENTRY f = (e)->Flink, b = (e)->Blink; f->Blink = b; b->Flink = f; (e)->Flink = (e)->Blink = NULL; } while (0)
+static inline PLIST_ENTRY RemoveHeadList(PLIST_ENTRY le)
+{
+    PLIST_ENTRY f, b, e;
+
+    e = le->Flink;
+    f = le->Flink->Flink;
+    b = le->Flink->Blink;
+    f->Blink = b;
+    b->Flink = f;
+
+    if (e != le) e->Flink = e->Blink = NULL;
+    return e;
+}
+static inline PLIST_ENTRY RemoveTailList(PLIST_ENTRY le)
+{
+    PLIST_ENTRY f, b, e;
+
+    e = le->Blink;
+    f = le->Blink->Flink;
+    b = le->Blink->Blink;
+    f->Blink = b;
+    b->Flink = f;
+
+    if (e != le) e->Flink = e->Blink = NULL;
+    return e;
+}
+
+
+#ifdef __WINESRC__
+
+/* FIXME: private structure for vm86 mode, stored in teb->GdiTebBatch */
+typedef struct
+{
+    DWORD        dpmi_vif;
+    DWORD        vm86_pending;
+} WINE_VM86_TEB_INFO;
+
+static inline WINE_VM86_TEB_INFO *get_vm86_teb_info(void)
+{
+    return (WINE_VM86_TEB_INFO *)&NtCurrentTeb()->GdiTebBatch;
+}
+
+/* The thread information for 16-bit threads */
+/* NtCurrentTeb()->SubSystemTib points to this */
+typedef struct
+{
+    void           *unknown;    /* 00 unknown */
+    UNICODE_STRING *exe_name;   /* 04 exe module name */
+
+    /* the following fields do not exist under Windows */
+    UNICODE_STRING  exe_str;    /* exe name string pointed to by exe_name */
+    CURDIR          curdir;     /* current directory */
+    WCHAR           curdir_buffer[MAX_PATH];
+} WIN16_SUBSYSTEM_TIB;
+
+#endif /* __WINESRC__ */
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif  /* __WINE_WINTERNL_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wintrust.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wintrust.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wintrust.h	(revision 16410)
@@ -0,0 +1,624 @@
+/*
+ * Copyright (C) 2004 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINTRUST_H
+#define __WINE_WINTRUST_H
+
+#include <wincrypt.h>
+
+
+#include <pshpack8.h>
+
+typedef struct WINTRUST_FILE_INFO_
+{
+    DWORD   cbStruct;
+    LPCWSTR pcwszFilePath;
+    HANDLE  hFile;
+    GUID*   pgKnownSubject;
+} WINTRUST_FILE_INFO, *PWINTRUST_FILE_INFO;
+
+typedef struct WINTRUST_CATALOG_INFO_
+{
+    DWORD         cbStruct;
+    DWORD         dwCatalogVersion;
+    LPCWSTR       pcwszCatalogFilePath;
+    LPCWSTR       pcwszMemberTag;
+    LPCWSTR       pcwszMemberFilePath;
+    HANDLE        hMemberFile;
+    BYTE*         pbCalculatedFileHash;
+    DWORD         cbCalculatedFileHash;
+    PCCTL_CONTEXT pcCatalogContext;
+} WINTRUST_CATALOG_INFO, *PWINTRUST_CATALOG_INFO;
+
+typedef struct WINTRUST_BLOB_INFO_
+{
+    DWORD   cbStruct;
+    GUID    gSubject;
+    LPCWSTR pcwszDisplayName;
+    DWORD   cbMemObject;
+    BYTE*   pbMemObject;
+    DWORD   cbMemSignedMsg;
+    BYTE*   pbMemSignedMsg;
+} WINTRUST_BLOB_INFO, *PWINTRUST_BLOB_INFO;
+
+typedef struct WINTRUST_SGNR_INFO_
+{
+    DWORD             cbStruct;
+    LPCWSTR           pcwszDisplayName;
+    CMSG_SIGNER_INFO* psSignerInfo;
+    DWORD             chStores;
+    HCERTSTORE*       pahStores;
+} WINTRUST_SGNR_INFO, *PWINTRUST_SGNR_INFO;
+
+typedef struct WINTRUST_CERT_INFO_
+{
+    DWORD         cbStruct;
+    LPCWSTR       pcwszDisplayName;
+    CERT_CONTEXT* psCertContext;
+    DWORD         chStores;
+    HCERTSTORE*   pahStores;
+    DWORD         dwFlags;
+    FILETIME*     psftVerifyAsOf;
+} WINTRUST_CERT_INFO, *PWINTRUST_CERT_INFO;
+
+#define WTCI_DONT_OPEN_STORES 0x00000001
+#define WTCI_OPEN_ONLY_ROOT   0x00000002
+
+/* dwUIChoice */
+#define WTD_UI_ALL                1
+#define WTD_UI_NONE               2
+#define WTD_UI_NOBAD              3
+#define WTD_UI_NOGOOD             4
+/* fdwRevocationChecks */
+#define WTD_REVOKE_NONE           0
+#define WTD_REVOKE_WHOLECHAIN     1
+/* dwUnionChoice */
+#define WTD_CHOICE_FILE           1
+#define WTD_CHOICE_CATALOG        2
+#define WTD_CHOICE_BLOB           3
+#define WTD_CHOICE_SIGNER         4
+#define WTD_CHOICE_CERT           5
+
+typedef struct _WINTRUST_DATA
+{
+    DWORD  cbStruct;
+    LPVOID pPolicyCallbackData;
+    LPVOID pSIPClientData;
+    DWORD  dwUIChoice;
+    DWORD  fdwRevocationChecks;
+    DWORD  dwUnionChoice;
+    union
+    {
+        struct WINTRUST_FILE_INFO_*    pFile;
+        struct WINTRUST_CATALOG_INFO_* pCatalog;
+        struct WINTRUST_BLOB_INFO_*    pBlob;
+        struct WINTRUST_SGNR_INFO_*    pSgnr;
+        struct WINTRUST_CERT_INFO_*    pCert;
+    } DUMMYUNIONNAME;
+
+    DWORD  dwStateAction;
+    HANDLE hWVTStateData;
+    WCHAR* pwszURLReference;
+    DWORD  dwProvFlags;
+    DWORD  dwUIContext;
+} WINTRUST_DATA, *PWINTRUST_DATA;
+
+#define WTD_STATEACTION_IGNORE           0
+#define WTD_STATEACTION_VERIFY           1
+#define WTD_STATEACTION_CLOSE            2
+#define WTD_STATEACTION_AUTO_CACHE       3
+#define WTD_STATEACTION_AUTO_CACHE_FLUSH 4
+
+#define WTD_PROV_FLAGS_MASK                     0x0000ffff
+#define WTD_USE_IE4_TRUST_FLAG                  0x00000001
+#define WTD_NO_IE4_CHAIN_FLAG                   0x00000002
+#define WTD_NO_POLICY_USAGE_FLAG                0x00000004
+#define WTD_REVOCATION_CHECK_NONE               0x00000010
+#define WTD_REVOCATION_CHECK_END_CERT           0x00000020
+#define WTD_REVOCATION_CHECK_CHAIN              0x00000040
+#define WTD_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT 0x00000080
+#define WTD_SAFER_FLAG                          0x00000100
+#define WTD_HASH_ONLY_FLAG                      0x00000200
+#define WTD_USE_DEFAULT_OSVER_CHECK             0x00000400
+#define WTD_LIFETIME_SIGNING_FLAG               0x00000800
+#define WTD_CACHE_ONLY_URL_RETRIEVAL            0x00001000
+
+#define WTD_UICONTEXT_EXECUTE 0
+#define WTD_UICONTEXT_INSTALL 1
+
+typedef struct _CRYPT_TRUST_REG_ENTRY
+{
+    DWORD cbStruct;
+    WCHAR *pwszDLLName;
+    WCHAR *pwszFunctionName;
+} CRYPT_TRUST_REG_ENTRY, *PCRYPT_TRUST_REG_ENTRY;
+
+typedef struct _CRYPT_REGISTER_ACTIONID
+{
+    DWORD cbStruct;
+    CRYPT_TRUST_REG_ENTRY sInitProvider;
+    CRYPT_TRUST_REG_ENTRY sObjectProvider;
+    CRYPT_TRUST_REG_ENTRY sSignatureProvider;
+    CRYPT_TRUST_REG_ENTRY sCertificateProvider;
+    CRYPT_TRUST_REG_ENTRY sCertificatePolicyProvider;
+    CRYPT_TRUST_REG_ENTRY sFinalPolicyProvider;
+    CRYPT_TRUST_REG_ENTRY sTestPolicyProvider;
+    CRYPT_TRUST_REG_ENTRY sCleanupProvider;
+} CRYPT_REGISTER_ACTIONID, *PCRYPT_REGISTER_ACTIONID;
+
+typedef struct _CRYPT_PROVIDER_REGDEFUSAGE
+{
+    DWORD cbStruct;
+    GUID  *pgActionID;
+    WCHAR *pwszDllName;
+    char  *pwszLoadCallbackDataFunctionName;
+    char  *pwszFreeCallbackDataFunctionName;
+} CRYPT_PROVIDER_REGDEFUSAGE, *PCRYPT_PROVIDER_REGDEFUSAGE;
+
+typedef struct _CRYPT_PROVUI_DATA {
+    DWORD cbStruct;
+    DWORD dwFinalError;
+    WCHAR *pYesButtonText;
+    WCHAR *pNoButtonText;
+    WCHAR *pMoreInfoButtonText;
+    WCHAR *pAdvancedLinkText;
+    WCHAR *pCopyActionText;
+    WCHAR *pCopyActionTextNoTS;
+    WCHAR *pCopyActionTextNotSigned;
+} CRYPT_PROVUI_DATA, *PCRYPT_PROVUI_DATA;
+
+typedef struct _CRYPT_PROVIDER_CERT {
+    DWORD               cbStruct;
+    PCCERT_CONTEXT      pCert;
+    BOOL                fCommercial;
+    BOOL                fTrustedRoot;
+    BOOL                fSelfSigned;
+    BOOL                fTestCert;
+    DWORD               dwRevokedReason;
+    DWORD               dwConfidence;
+    DWORD               dwError;
+    CTL_CONTEXT        *pTrustListContext;
+    BOOL                fTrustListSignerCert;
+    PCCTL_CONTEXT       pCtlContext;
+    DWORD               dwCtlError;
+    BOOL                fIsCyclic;
+    PCERT_CHAIN_ELEMENT pChainElement;
+} CRYPT_PROVIDER_CERT, *PCRYPT_PROVIDER_CERT;
+
+#define CERT_CONFIDENCE_SIG       0x10000000
+#define CERT_CONFIDENCE_TIME      0x01000000
+#define CERT_CONFIDENCE_TIMENEST  0x00100000
+#define CERT_CONFIDENCE_AUTHIDEXT 0x00010000
+#define CERT_CONFIDENCE_HYGIENE   0x00001000
+#define CERT_CONFIDENCE_HIGHEST   0x11111000
+
+typedef struct _CRYPT_PROVIDER_SGNR {
+    DWORD                cbStruct;
+    FILETIME             sftVerifyAsOf;
+    DWORD                csCertChain;
+    CRYPT_PROVIDER_CERT *pasCertChain;
+    DWORD                dwSignerType;
+    CMSG_SIGNER_INFO    *psSigner;
+    DWORD                dwError;
+    DWORD                csCounterSigners;
+    struct _CRYPT_PROVIDER_SGNR *pasCounterSigners;
+    PCCERT_CHAIN_CONTEXT pChainContext;
+} CRYPT_PROVIDER_SGNR, *PCRYPT_PROVIDER_SGNR;
+
+#define SGNR_TYPE_TIMESTAMP 0x00000010
+
+typedef struct _CRYPT_PROVIDER_PRIVDATA {
+    DWORD cbStruct;
+    GUID  gProviderID;
+    DWORD cbProvData;
+    void *pvProvData;
+} CRYPT_PROVIDER_PRIVDATA, *PCRYPT_PROVIDER_PRIVDATA;
+
+struct _CRYPT_PROVIDER_DATA;
+
+#define TRUSTERROR_STEP_WVTPARAMS               0
+#define TRUSTERROR_STEP_FILEIO                  2
+#define TRUSTERROR_STEP_SIP                     3
+#define TRUSTERROR_STEP_SIPSUBJINFO             5
+#define TRUSTERROR_STEP_CATALOGFILE             6
+#define TRUSTERROR_STEP_CERTSTORE               7
+#define TRUSTERROR_STEP_MESSAGE                 8
+#define TRUSTERROR_STEP_MSG_SIGNERCOUNT         9
+#define TRUSTERROR_STEP_MSG_INNERCNTTYPE       10
+#define TRUSTERROR_STEP_MSG_INNERCNT           11
+#define TRUSTERROR_STEP_MSG_STORE              12
+#define TRUSTERROR_STEP_MSG_SIGNERINFO         13
+#define TRUSTERROR_STEP_MSG_SIGNERCERT         14
+#define TRUSTERROR_STEP_MSG_CERTCHAIN          15
+#define TRUSTERROR_STEP_MSG_COUNTERSIGINFO     16
+#define TRUSTERROR_STEP_MSG_COUNTERSIGCERT     17
+#define TRUSTERROR_STEP_VERIFY_MSGHASH         18
+#define TRUSTERROR_STEP_VERIFY_MSGINDIRECTDATA 19
+#define TRUSTERROR_STEP_FINAL_WVTINIT          30
+#define TRUSTERROR_STEP_FINAL_INITPROV         31
+#define TRUSTERROR_STEP_FINAL_OBJPROV          32
+#define TRUSTERROR_STEP_FINAL_SIGPROV          33
+#define TRUSTERROR_STEP_FINAL_CERTPROV         34
+#define TRUSTERROR_STEP_FINAL_CERTCHKPROV      35
+#define TRUSTERROR_STEP_FINAL_POLICYPROV       36
+#define TRUSTERROR_STEP_FINAL_UIPROV           37
+
+#define TRUSTERROR_MAX_STEPS                   38
+
+typedef void * (__WINE_ALLOC_SIZE(1) WINAPI *PFN_CPD_MEM_ALLOC)(DWORD cbSize);
+typedef void (WINAPI *PFN_CPD_MEM_FREE)(void *pvMem2Free);
+typedef BOOL (WINAPI *PFN_CPD_ADD_STORE)(struct _CRYPT_PROVIDER_DATA *pProvData,
+ HCERTSTORE hStore2Add);
+typedef BOOL (WINAPI *PFN_CPD_ADD_SGNR)(struct _CRYPT_PROVIDER_DATA *pProvData,
+ BOOL fCounterSigner, DWORD idxSigner, struct _CRYPT_PROVIDER_SGNR *pSgnr2Add);
+typedef BOOL (WINAPI *PFN_CPD_ADD_CERT)(struct _CRYPT_PROVIDER_DATA *pProvData,
+ DWORD idxSigner, BOOL fCounterSigner, DWORD idxCounterSigner,
+ PCCERT_CONTEXT pCert2Add);
+typedef BOOL (WINAPI *PFN_CPD_ADD_PRIVDATA)(struct _CRYPT_PROVIDER_DATA *pProvData,
+ struct _CRYPT_PROVIDER_PRIVDATA *pPrivData2Add);
+typedef HRESULT (WINAPI *PFN_PROVIDER_INIT_CALL)(
+ struct _CRYPT_PROVIDER_DATA *pProvData);
+typedef HRESULT (WINAPI *PFN_PROVIDER_OBJTRUST_CALL)(
+ struct _CRYPT_PROVIDER_DATA *pProvData);
+typedef HRESULT (WINAPI *PFN_PROVIDER_SIGTRUST_CALL)(
+ struct _CRYPT_PROVIDER_DATA *pProvData);
+typedef HRESULT (WINAPI *PFN_PROVIDER_CERTTRUST_CALL)(
+ struct _CRYPT_PROVIDER_DATA *pProvData);
+typedef HRESULT (WINAPI *PFN_PROVIDER_FINALPOLICY_CALL)(
+ struct _CRYPT_PROVIDER_DATA *pProvData);
+typedef HRESULT (WINAPI *PFN_PROVIDER_TESTFINALPOLICY_CALL)(
+ struct _CRYPT_PROVIDER_DATA *pProvData);
+typedef HRESULT (WINAPI *PFN_PROVIDER_CLEANUP_CALL)(
+ struct _CRYPT_PROVIDER_DATA *pProvData);
+typedef BOOL (WINAPI *PFN_PROVIDER_CERTCHKPOLICY_CALL)(
+ struct _CRYPT_PROVIDER_DATA *pProvData, DWORD idxSigner,
+ BOOL fCounterSignerChain, DWORD idxCounterSigner);
+
+typedef struct _CRYPT_PROVIDER_FUNCTIONS {
+    DWORD cbStruct;
+    PFN_CPD_MEM_ALLOC    pfnAlloc;
+    PFN_CPD_MEM_FREE     pfnFree;
+    PFN_CPD_ADD_STORE    pfnAddStore2Chain;
+    PFN_CPD_ADD_SGNR     pfnAddSgnr2Chain;
+    PFN_CPD_ADD_CERT     pfnAddCert2Chain;
+    PFN_CPD_ADD_PRIVDATA pfnAddPrivData2Chain;
+    PFN_PROVIDER_INIT_CALL            pfnInitialize;
+    PFN_PROVIDER_OBJTRUST_CALL        pfnObjectTrust;
+    PFN_PROVIDER_SIGTRUST_CALL        pfnSignatureTrust;
+    PFN_PROVIDER_CERTTRUST_CALL       pfnCertificateTrust;
+    PFN_PROVIDER_FINALPOLICY_CALL     pfnFinalPolicy;
+    PFN_PROVIDER_CERTCHKPOLICY_CALL   pfnCertCheckPolicy;
+    PFN_PROVIDER_TESTFINALPOLICY_CALL pfnTestFinalPolicy;
+    struct _CRYPT_PROVUI_FUNCS       *psUIpfns;
+    PFN_PROVIDER_CLEANUP_CALL         pfnCleanupPolicy;
+} CRYPT_PROVIDER_FUNCTIONS, *PCRYPT_PROVIDER_FUNCTIONS;
+
+struct SIP_DISPATCH_INFO_;
+struct SIP_SUBJECTINFO_;
+struct SIP_INDIRECT_DATA_;
+
+typedef struct _PROVDATA_SIP {
+    DWORD cbStruct;
+    GUID  gSubject;
+    struct SIP_DISPATCH_INFO_ *pSip;
+    struct SIP_DISPATCH_INFO_ *pCATSip;
+    struct SIP_SUBJECTINFO_   *psSipSubjectInfo;
+    struct SIP_SUBJECTINFO_   *psSipCATSubjectInfo;
+    struct SIP_INDIRECT_DATA_ *psIndirectData;
+} PROVDATA_SIP, *PPROVDATA_SIP;
+
+typedef struct _CRYPT_PROVIDER_DATA {
+    DWORD                     cbStruct;
+    WINTRUST_DATA            *pWintrustData;
+    BOOL                      fOpenedFile;
+    HWND                      hWndParent;
+    GUID                     *pgActionID;
+    HCRYPTPROV                hProv;
+    DWORD                     dwError;
+    DWORD                     dwRegSecuritySettings;
+    DWORD                     dwRegPolicySettings;
+    CRYPT_PROVIDER_FUNCTIONS *psPfns;
+    DWORD                     cdwTrustStepErrors;
+    DWORD                    *padwTrustStepErrors;
+    DWORD                     chStores;
+    HCERTSTORE               *pahStores;
+    DWORD                     dwEncoding;
+    HCRYPTMSG                 hMsg;
+    DWORD                     csSigners;
+    CRYPT_PROVIDER_SGNR      *pasSigners;
+    DWORD                     csProvPrivData;
+    CRYPT_PROVIDER_PRIVDATA  *pasProvPrivData;
+    DWORD                     dwSubjectChoice;
+    union {
+        struct _PROVDATA_SIP        *pPDSip;
+    } DUMMYUNIONNAME;
+    char                     *pszUsageOID;
+    BOOL                      fRecallWithState;
+    FILETIME                  sftSystemTime;
+    char                      *pszCTLSignerUsageOID;
+    DWORD                     dwProvFlags;
+    DWORD                     dwFinalError;
+    PCERT_USAGE_MATCH         pRequestUsage;
+    DWORD                     dwTrustPubSettings;
+    DWORD                     dwUIStateFlags;
+} CRYPT_PROVIDER_DATA, *PCRYPT_PROVIDER_DATA;
+
+#define CPD_CHOICE_SIP 1
+
+#define CPD_USE_NT5_CHAIN_FLAG                  0x80000000
+#define CPD_REVOCATION_CHECK_NONE               0x00010000
+#define CPD_REVOCATION_CHECK_END_CERT           0x00020000
+#define CPD_REVOCATION_CHECK_CHAIN              0x00040000
+#define CPD_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT 0x00080000
+
+#define CPD_UISTATE_MODE_PROMPT 0x00000000
+#define CPD_UISTATE_MODE_BLOCK  0x00000001
+#define CPD_UISTATE_MODE_ALLOW  0x00000002
+#define CPD_UISTATE_MODE_MASK   0x00000003
+
+typedef BOOL (*PFN_PROVUI_CALL)(HWND hWndSecurityDialog,
+ struct _CRYPT_PROVIDER_DATA *pProvData);
+
+typedef struct _CRYPT_PROVUI_FUNCS {
+    DWORD cbStruct;
+    CRYPT_PROVUI_DATA psUIData;
+    PFN_PROVUI_CALL pfnOnMoreInfoClick;
+    PFN_PROVUI_CALL pfnOnMoreInfoClickDefault;
+    PFN_PROVUI_CALL pfnOnAdvancedClick;
+    PFN_PROVUI_CALL pfnOnAdvancedClickDefault;
+} CRYPT_PROVUI_FUNCS, *PCRYPT_PROVUI_FUNCS;
+
+#include <poppack.h>
+
+#define WVT_OFFSETOF(t,f)     ((ULONG)((ULONG_PTR)(&((t*)0)->f)))
+#define WVT_ISINSTRUCT(t,s,f) (WVT_OFFSETOF(t,f) + sizeof(((t*)0)->f) <= (s))
+#define WVT_IS_CBSTRUCT_GT_MEMBEROFFSET(t,s,f) WVT_ISINSTRUCT(t,s,f)
+
+#define WTPF_TRUSTTEST            0x00000020
+#define WTPF_TESTCANBEVALID       0x00000080
+#define WTPF_IGNOREEXPIRATION     0x00000100
+#define WTPF_IGNOREREVOKATION     0x00000200
+#define WTPF_OFFLINEOK_IND        0x00000400
+#define WTPF_OFFLINEOK_COM        0x00000800
+#define WTPF_OFFLINEOKNBU_IND     0x00001000
+#define WTPF_OFFLINEOKNBU_COM     0x00002000
+#define WTPF_VERIFY_V1_OFF        0x00010000
+#define WTPF_IGNOREREVOCATIONONTS 0x00020000
+#define WTPF_ALLOWONLYPERTRUST    0x00040000
+
+#define WT_ADD_ACTION_ID_RET_RESULT_FLAG 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if defined(__GNUC__)
+#define WT_PROVIDER_CERTTRUST_FUNCTION (const WCHAR []) \
+    {'W','i','n','t','r','u','s','t','C','e','r','t','i','f','i','c','a','t','e','T','r','u','s','t', 0}
+#elif defined(_MSC_VER)
+#define WT_PROVIDER_CERTTRUST_FUNCTION L"WintrustCertificateTrust"
+#else
+static const WCHAR WT_PROVIDER_CERTTRUST_FUNCTION[] =
+    {'W','i','n','t','r','u','s','t','C','e','r','t','i','f','i','c','a','t','e','T','r','u','s','t', 0};
+#endif
+
+BOOL      WINAPI WintrustAddActionID(GUID*,DWORD,CRYPT_REGISTER_ACTIONID*);
+BOOL      WINAPI WintrustRemoveActionID(GUID*);
+BOOL      WINAPI WintrustLoadFunctionPointers(GUID*,CRYPT_PROVIDER_FUNCTIONS*);
+BOOL      WINAPI WintrustAddDefaultForUsage(const char*,CRYPT_PROVIDER_REGDEFUSAGE*);
+void      WINAPI WintrustGetRegPolicyFlags(DWORD*);
+BOOL      WINAPI WintrustSetRegPolicyFlags(DWORD);
+LONG      WINAPI WinVerifyTrust(HWND,GUID*,LPVOID);
+HRESULT   WINAPI WinVerifyTrustEx(HWND,GUID*,WINTRUST_DATA*);
+
+CRYPT_PROVIDER_CERT * WINAPI WTHelperGetProvCertFromChain(
+ CRYPT_PROVIDER_SGNR *pSgnr, DWORD idxCert);
+CRYPT_PROVIDER_SGNR * WINAPI WTHelperGetProvSignerFromChain(
+ CRYPT_PROVIDER_DATA *pProvData, DWORD idxSigner, BOOL fCounterSigner,
+ DWORD idxCounterSigner);
+CRYPT_PROVIDER_DATA * WINAPI WTHelperProvDataFromStateData(HANDLE hStateData);
+CRYPT_PROVIDER_PRIVDATA * WINAPI WTHelperGetProvPrivateDataFromChain(CRYPT_PROVIDER_DATA *,GUID *);
+
+#define SPC_INDIRECT_DATA_OBJID      "1.3.6.1.4.1.311.2.1.4"
+#define SPC_SP_AGENCY_INFO_OBJID     "1.3.6.1.4.1.311.2.1.10"
+#define SPC_STATEMENT_TYPE_OBJID     "1.3.6.1.4.1.311.2.1.11"
+#define SPC_SP_OPUS_INFO_OBJID       "1.3.6.1.4.1.311.2.1.12"
+#define SPC_CERT_EXTENSIONS_OBJID    "1.3.6.1.4.1.311.2.1.14"
+#define SPC_PE_IMAGE_DATA_OBJID      "1.3.6.1.4.1.311.2.1.15"
+#define SPC_RAW_FILE_DATA_OBJID      "1.3.6.1.4.1.311.2.1.18"
+#define SPC_STRUCTURED_STORAGE_DATA_OBJID "1.3.6.1.4.1.311.2.1.19"
+#define SPC_JAVA_CLASS_DATA_OBJID    "1.3.6.1.4.1.311.2.1.20"
+#define SPC_INDIVIDUAL_SP_KEY_PURPOSE_OBJID "1.3.6.1.4.1.311.2.1.21"
+#define SPC_COMMERCIAL_SP_KEY_PURPOSE_OBJID "1.3.6.1.4.1.311.2.1.22"
+#define SPC_CAB_DATA_OBJID           "1.3.6.1.4.1.311.2.1.25"
+#define SPC_GLUE_RDN_OBJID           "1.3.6.1.4.1.311.2.1.25"
+#define SPC_MINIMAL_CRITERIA_OBJID   "1.3.6.1.4.1.311.2.1.26"
+#define SPC_FINANCIAL_CRITERIA_OBJID "1.3.6.1.4.1.311.2.1.27"
+#define SPC_LINK_OBJID               "1.3.6.1.4.1.311.2.1.28"
+#define SPC_SIGINFO_OBJID            "1.3.6.1.4.1.311.2.1.30"
+#define CAT_NAMEVALUE_OBJID          "1.3.6.1.4.1.311.12.2.1"
+#define CAT_MEMBERINFO_OBJID         "1.3.6.1.4.1.311.12.2.2"
+
+#define SPC_SP_AGENCY_INFO_STRUCT        ((LPCSTR) 2000)
+#define SPC_MINIMAL_CRITERIA_STRUCT      ((LPCSTR) 2001)
+#define SPC_FINANCIAL_CRITERIA_STRUCT    ((LPCSTR) 2002)
+#define SPC_INDIRECT_DATA_CONTENT_STRUCT ((LPCSTR) 2003)
+#define SPC_PE_IMAGE_DATA_STRUCT         ((LPCSTR) 2004)
+#define SPC_LINK_STRUCT                  ((LPCSTR) 2005)
+#define SPC_STATEMENT_TYPE_STRUCT        ((LPCSTR) 2006)
+#define SPC_SP_OPUS_INFO_STRUCT          ((LPCSTR) 2007)
+#define SPC_CAB_DATA_STRUCT              ((LPCSTR) 2008)
+#define SPC_JAVA_CLASS_DATA_STRUCT       ((LPCSTR) 2009)
+#define SPC_SIGINFO_STRUCT               ((LPCSTR) 2130)
+#define CAT_NAMEVALUE_STRUCT             ((LPCSTR) 2221)
+#define CAT_MEMBERINFO_STRUCT            ((LPCSTR) 2222)
+
+#define SPC_UUID_LENGTH 16
+typedef BYTE SPC_UUID[SPC_UUID_LENGTH];
+
+typedef struct _SPC_SERIALIZED_OBJECT
+{
+    SPC_UUID        ClassId;
+    CRYPT_DATA_BLOB SerializedData;
+} SPC_SERIALIZED_OBJECT, *PSPC_SERIALIZED_OBJECT;
+
+typedef struct SPC_SIGINFO_
+{
+    DWORD dwSipVersion;
+    GUID  gSIPGuid;
+    DWORD dwReserved1;
+    DWORD dwReserved2;
+    DWORD dwReserved3;
+    DWORD dwReserved4;
+    DWORD dwReserved5;
+} SPC_SIGINFO, *PSPC_SIGINFO;
+
+#define SPC_URL_LINK_CHOICE     1
+#define SPC_MONIKER_LINK_CHOICE 2
+#define SPC_FILE_LINK_CHOICE    3
+
+typedef struct SPC_LINK_
+{
+    DWORD dwLinkChoice;
+    union
+    {
+        LPWSTR                pwszUrl;
+        SPC_SERIALIZED_OBJECT Moniker;
+        LPWSTR                pwszFile;
+    } DUMMYUNIONNAME;
+} SPC_LINK, *PSPC_LINK;
+
+typedef struct _SPC_PE_IMAGE_DATA
+{
+    CRYPT_BIT_BLOB Flags;
+    PSPC_LINK      pFile;
+} SPC_PE_IMAGE_DATA, *PSPC_PE_IMAGE_DATA;
+
+typedef struct _SPC_INDIRECT_DATA_CONTENT
+{
+    CRYPT_ATTRIBUTE_TYPE_VALUE Data;
+    CRYPT_ALGORITHM_IDENTIFIER DigestAlgorithm;
+    CRYPT_HASH_BLOB            Digest;
+} SPC_INDIRECT_DATA_CONTENT, *PSPC_INDIRECT_DATA_CONTENT;
+
+typedef struct _SPC_FINANCIAL_CRITERIA
+{
+    BOOL fFinancialInfoAvailable;
+    BOOL fMeetsCriteria;
+} SPC_FINANCIAL_CRITERIA, *PSPC_FINANCIAL_CRITERIA;
+
+typedef struct _SPC_IMAGE
+{
+    struct SPC_LINK_ *pImageLink;
+    CRYPT_DATA_BLOB   Bitmap;
+    CRYPT_DATA_BLOB   Metafile;
+    CRYPT_DATA_BLOB   EnhancedMetafile;
+    CRYPT_DATA_BLOB   GifFile;
+} SPC_IMAGE, *PSPC_IMAGE;
+
+typedef struct _SPC_SP_AGENCY_INFO
+{
+    struct SPC_LINK_ *pPolicyInformation;
+    LPWSTR            pwszPolicyDisplayText;
+    PSPC_IMAGE        pLogoImage;
+    struct SPC_LINK_ *pLogoLink;
+} SPC_SP_AGENCY_INFO, *PSPC_SP_AGENCY_INFO;
+
+typedef struct _SPC_STATEMENT_TYPE
+{
+    DWORD  cKeyPurposeId;
+    LPSTR *rgpszKeyPurposeId;
+} SPC_STATEMENT_TYPE, *PSPC_STATEMENT_TYPE;
+
+typedef struct _SPC_SP_OPUS_INFO
+{
+    LPCWSTR           pwszProgramName;
+    struct SPC_LINK_ *pMoreInfo;
+    struct SPC_LINK_ *pPublisherInfo;
+} SPC_SP_OPUS_INFO, *PSPC_SP_OPUS_INFO;
+
+typedef struct _CAT_NAMEVALUE
+{
+    LPWSTR          pwszTag;
+    DWORD           fdwFlags;
+    CRYPT_DATA_BLOB Value;
+} CAT_NAMEVALUE, *PCAT_NAMEVALUE;
+
+typedef struct _CAT_MEMBERINFO
+{
+    LPWSTR pwszSubjGuid;
+    DWORD  dwCertVersion;
+} CAT_MEMBERINFO, *PCAT_MEMBERINFO;
+
+/* PSDK protects the remaining defines with WT_DEFINE_ALL_APIS, but it's
+ * defined by default.  No need to protect against bad headers from old PSDKs.
+ */
+
+typedef struct _WIN_CERTIFICATE {
+  DWORD dwLength;
+  WORD  wRevision;                   /*  WIN_CERT_REVISION_xxx */
+  WORD  wCertificateType;            /*  WIN_CERT_TYPE_xxx */
+  BYTE  bCertificate[ANYSIZE_ARRAY];
+} WIN_CERTIFICATE, *LPWIN_CERTIFICATE;
+
+#define WIN_CERT_REVISION_1_0 0x0100
+#define WIN_CERT_REVISION_2_0 0x0200
+
+#define WIN_CERT_TYPE_X509             0x0001 /* X.509 Certificate */
+#define WIN_CERT_TYPE_PKCS_SIGNED_DATA 0x0002 /* PKCS SignedData */
+#define WIN_CERT_TYPE_RESERVED_1       0x0003 /* Reserved */
+#define WIN_CERT_TYPE_TS_STACK_SIGNED  0x0004
+
+typedef LPVOID WIN_TRUST_SUBJECT;
+
+typedef struct _WIN_TRUST_ACTDATA_CONTEXT_WITH_SUBJECT
+{
+    HANDLE            hClientToken;
+    GUID             *SubjectType;
+    WIN_TRUST_SUBJECT Subject;
+} WIN_TRUST_ACTDATA_CONTEXT_WITH_SUBJECT,
+ *LPWIN_TRUST_ACTDATA_CONTEXT_WITH_SUBJECT;
+
+typedef struct _WIN_TRUST_ACTDATA_CONTEXT_SUBJECT_ONLY
+{
+    GUID             *SubjectType;
+    WIN_TRUST_SUBJECT Subject;
+} WIN_TRUST_ACTDATA_CONTEXT_SUBJECT_ONLY,
+ *LPWIN_TRUST_ACTDATA_CONTEXT_SUBJECT_ONLY;
+
+typedef struct _WIN_TRUST_SUBJECT_FILE
+{
+    HANDLE  hFile;
+    LPCWSTR lpPath;
+} WIN_TRUST_SUBJECT_FILE, *LPWIN_TRUST_SUBJECT_FILE;
+
+typedef struct _WIN_TRUST_SUBJECT_FILE_AND_DISPLAY
+{
+    HANDLE  hFile;
+    LPCWSTR lpPath;
+    LPCWSTR lpDisplayName;
+} WIN_TRUST_SUBJECT_FILE_AND_DISPLAY, *LPWIN_TRUST_SUBJECT_FILE_AND_DISPLAY;
+
+#define WIN_SPUB_ACTION_PUBLISHED_SOFTWARE \
+     { 0x64b9d180, 0x8da2, 0x11cf, { 0x87,0x36,0x00,0xaa,0x00,0xa4,0x85,0xeb }}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winuser.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winuser.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winuser.h	(revision 16410)
@@ -0,0 +1,5084 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _WINUSER_
+#define _WINUSER_
+
+#if !defined(_USER32_)
+#define WINUSERAPI DECLSPEC_IMPORT
+#else
+#define WINUSERAPI
+#endif
+
+#ifndef RC_INVOKED
+#include <stdarg.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Define a bunch of callback types */
+
+#if defined(STRICT)
+typedef INT_PTR (CALLBACK *DLGPROC)(HWND,UINT,WPARAM,LPARAM);
+typedef BOOL    (CALLBACK *DRAWSTATEPROC)(HDC,LPARAM,WPARAM,int,int);
+typedef INT     (CALLBACK *EDITWORDBREAKPROCA)(LPSTR,INT,INT,INT);
+typedef INT     (CALLBACK *EDITWORDBREAKPROCW)(LPWSTR,INT,INT,INT);
+typedef BOOL    (CALLBACK *GRAYSTRINGPROC)(HDC,LPARAM,INT);
+typedef LRESULT (CALLBACK *HOOKPROC)(INT,WPARAM,LPARAM);
+typedef BOOL    (CALLBACK *NAMEENUMPROCA)(LPSTR,LPARAM);
+typedef BOOL    (CALLBACK *NAMEENUMPROCW)(LPWSTR,LPARAM);
+typedef BOOL    (CALLBACK *PROPENUMPROCA)(HWND,LPCSTR,HANDLE);
+typedef BOOL    (CALLBACK *PROPENUMPROCW)(HWND,LPCWSTR,HANDLE);
+typedef BOOL    (CALLBACK *PROPENUMPROCEXA)(HWND,LPSTR,HANDLE,ULONG_PTR);
+typedef BOOL    (CALLBACK *PROPENUMPROCEXW)(HWND,LPWSTR,HANDLE,ULONG_PTR);
+typedef VOID    (CALLBACK *SENDASYNCPROC)(HWND,UINT,ULONG_PTR,LRESULT);
+typedef VOID    (CALLBACK *TIMERPROC)(HWND,UINT,UINT_PTR,DWORD);
+typedef VOID    (CALLBACK *WINEVENTPROC)(HWINEVENTHOOK,DWORD,HWND,LONG,LONG,
+                                         DWORD,DWORD);
+typedef BOOL    (CALLBACK *WNDENUMPROC)(HWND,LPARAM);
+
+#else
+typedef FARPROC DLGPROC;
+typedef FARPROC DRAWSTATEPROC;
+typedef FARPROC EDITWORDBREAKPROCA;
+typedef FARPROC EDITWORDBREAKPROCW;
+typedef FARPROC GRAYSTRINGPROC;
+typedef FARPROC HOOKPROC;
+typedef FARPROC NAMEENUMPROCA;
+typedef FARPROC NAMEENUMPROCW;
+typedef FARPROC PROPENUMPROCA;
+typedef FARPROC PROPENUMPROCW;
+typedef FARPROC PROPENUMPROCEXA;
+typedef FARPROC PROPENUMPROCEXW;
+typedef FARPROC SENDASYNCPROC;
+typedef FARPROC TIMERPROC;
+typedef FARPROC WINEVENTPROC;
+typedef FARPROC WNDENUMPROC;
+#endif /* STRICT */
+
+typedef NAMEENUMPROCA WINSTAENUMPROCA;
+typedef NAMEENUMPROCA DESKTOPENUMPROCA;
+typedef NAMEENUMPROCW WINSTAENUMPROCW;
+typedef NAMEENUMPROCW DESKTOPENUMPROCW;
+
+typedef LRESULT (CALLBACK *WNDPROC)(HWND,UINT,WPARAM,LPARAM);
+
+DECL_WINELIB_TYPE_AW(DESKTOPENUMPROC)
+DECL_WINELIB_TYPE_AW(EDITWORDBREAKPROC)
+DECL_WINELIB_TYPE_AW(NAMEENUMPROC)
+DECL_WINELIB_TYPE_AW(PROPENUMPROC)
+DECL_WINELIB_TYPE_AW(PROPENUMPROCEX)
+DECL_WINELIB_TYPE_AW(WINSTAENUMPROC)
+
+
+typedef HANDLE HDWP;
+
+#define UOI_FLAGS       1
+#define UOI_NAME        2
+#define UOI_TYPE        3
+#define UOI_USER_SID    4
+
+#define WSF_VISIBLE     1
+#define DF_ALLOWOTHERACCOUNTHOOK  1
+
+typedef struct tagUSEROBJECTFLAGS {
+    BOOL fInherit;
+    BOOL fReserved;
+    DWORD dwFlags;
+} USEROBJECTFLAGS, *PUSEROBJECTFLAGS;
+
+typedef struct tagBSMINFO {
+    UINT  cbSize;
+    HDESK hdesk;
+    HWND  hwnd;
+    LUID  luid;
+} BSMINFO, *PBSMINFO;
+
+/* Window stations */
+#define WINSTA_ENUMDESKTOPS         0x0001
+#define WINSTA_READATTRIBUTES       0x0002
+#define WINSTA_ACCESSCLIPBOARD      0x0004
+#define WINSTA_CREATEDESKTOP        0x0008
+#define WINSTA_WRITEATTRIBUTES      0x0010
+#define WINSTA_ACCESSGLOBALATOMS    0x0020
+#define WINSTA_EXITWINDOWS          0x0040
+#define WINSTA_ENUMERATE            0x0100
+#define WINSTA_READSCREEN           0x0200
+#define WINSTA_ALL_ACCESS           0x037f
+
+/* Desktops */
+#define DESKTOP_READOBJECTS         0x0001
+#define DESKTOP_CREATEWINDOW        0x0002
+#define DESKTOP_CREATEMENU          0x0004
+#define DESKTOP_HOOKCONTROL         0x0008
+#define DESKTOP_JOURNALRECORD       0x0010
+#define DESKTOP_JOURNALPLAYBACK     0x0020
+#define DESKTOP_ENUMERATE           0x0040
+#define DESKTOP_WRITEOBJECTS        0x0080
+#define DESKTOP_SWITCHDESKTOP       0x0100
+
+
+/* flags for FILTERKEYS dwFlags field */
+#define FKF_AVAILABLE       0x00000002
+#define FKF_CLICKON         0x00000040
+#define FKF_FILTERKEYSON    0x00000001
+#define FKF_HOTKEYACTIVE    0x00000004
+#define FKF_HOTKEYSOUND     0x00000010
+#define FKF_CONFIRMHOTKEY   0x00000008
+#define FKF_INDICATOR       0x00000020
+
+typedef struct tagFILTERKEYS
+{
+    UINT   cbSize;
+    DWORD  dwFlags;
+    DWORD  iWaitMSec;
+    DWORD  iDelayMSec;
+    DWORD  iRepeatMSec;
+    DWORD  iBounceMSec;
+} FILTERKEYS, *LPFILTERKEYS;
+
+/* flags for TOGGLEKEYS dwFlags field */
+#define TKF_AVAILABLE       0x00000002
+#define TKF_CONFIRMHOTKEY   0x00000008
+#define TKF_HOTKEYACTIVE    0x00000004
+#define TKF_HOTKEYSOUND     0x00000010
+#define TKF_TOGGLEKEYSON    0x00000001
+
+typedef struct tagTOGGLEKEYS
+{
+    DWORD   cbSize;
+    DWORD   dwFlags;
+} TOGGLEKEYS, *LPTOGGLEKEYS;
+
+/* flags for MOUSEKEYS dwFlags field */
+#define MKF_AVAILABLE       0x00000002
+#define MKF_CONFIRMHOTKEY   0x00000008
+#define MKF_HOTKEYACTIVE    0x00000004
+#define MKF_HOTKEYSOUND     0x00000010
+#define MKF_INDICATOR       0x00000020
+#define MKF_MOUSEKEYSON     0x00000001
+#define MKF_MODIFIERS       0x00000040
+#define MKF_REPLACENUMBERS  0x00000080
+
+typedef struct tagMOUSEKEYS
+{
+    UINT    cbSize;
+    DWORD   dwFlags;
+    DWORD   iMaxSpeed;
+    DWORD   iTimeToMaxSpeed;
+    DWORD   iCtrlSpeed;
+    DWORD   dwReserved1;
+    DWORD   dwReserved2;
+} MOUSEKEYS, *LPMOUSEKEYS;
+
+/* struct and defines for GetMouseMovePointsEx */
+#define GMMP_USE_DISPLAY_POINTS 1
+#define GMMP_USE_HIGH_RESOLUTION_POINTS 2
+
+typedef struct tagMOUSEMOVEPOINT {
+    int x;
+    int y;
+    DWORD time;
+    ULONG_PTR dwExtraInfo;
+} MOUSEMOVEPOINT,*PMOUSEMOVEPOINT,*LPMOUSEMOVEPOINT;
+
+/* flags for STICKYKEYS dwFlags field */
+#define SKF_AUDIBLEFEEDBACK 0x00000040
+#define SKF_AVAILABLE       0x00000002
+#define SKF_CONFIRMHOTKEY   0x00000008
+#define SKF_HOTKEYACTIVE    0x00000004
+#define SKF_HOTKEYSOUND     0x00000010
+#define SKF_INDICATOR       0x00000020
+#define SKF_STICKYKEYSON    0x00000001
+#define SKF_TRISTATE        0x00000080
+#define SKF_TWOKEYSOFF      0x00000100
+
+typedef struct tagSTICKYKEYS
+{
+    DWORD   cbSize;
+    DWORD   dwFlags;
+} STICKYKEYS, *LPSTICKYKEYS;
+
+/* flags for ACCESSTIMEOUT dwFlags field */
+#define ATF_ONOFFFEEDBACK   0x00000002
+#define ATF_AVAILABLE       0x00000004
+#define ATF_TIMEOUTON       0x00000001
+
+typedef struct tagACCESSTIMEOUT
+{
+    UINT    cbSize;
+    DWORD   dwFlags;
+    DWORD   iTimeOutMSec;
+} ACCESSTIMEOUT, *LPACCESSTIMEOUT;
+
+/* flags for SERIALKEYS dwFlags field */
+#define SERKF_ACTIVE        0x00000008
+#define SERKF_AVAILABLE     0x00000002
+#define SERKF_INDICATOR     0x00000004
+#define SERKF_SERIALKEYSON  0x00000001
+
+typedef struct tagSERIALKEYSA
+{
+    UINT  cbSize;
+    DWORD  dwFlags;
+    LPSTR  lpszActivePort;
+    LPSTR  lpszPort;
+    UINT  iBaudRate;
+    UINT  iPortState;
+    UINT  iActive;
+} SERIALKEYSA, *LPSERIALKEYSA;
+
+typedef struct tagSERIALKEYSW {
+    UINT  cbSize;
+    DWORD   dwFlags;
+    LPWSTR  lpszActivePort;
+    LPWSTR  lpszPort;
+    UINT   iBaudRate;
+    UINT   iPortState;
+    UINT   iActive;
+} SERIALKEYSW,*LPSERIALKEYSW;
+
+DECL_WINELIB_TYPE_AW(SERIALKEYS)
+DECL_WINELIB_TYPE_AW(LPSERIALKEYS)
+
+/* flags for SOUNDSENTRY dwFlags field */
+#define SSF_AVAILABLE       0x00000002
+#define SSF_SOUNDSENTRYON   0x00000001
+
+#define SSTF_BORDER         0x00000002
+#define SSTF_CHARS          0x00000001
+#define SSTF_DISPLAY        0x00000003
+#define SSTF_NONE           0x00000000
+
+#define SSGF_DISPLAY        0x00000003
+#define SSGF_NONE           0x00000000
+
+#define SSWF_DISPLAY        0x00000003
+#define SSWF_NONE           0x00000000
+#define SSWF_TITLE          0x00000001
+#define SSWF_WINDOW         0x00000002
+
+typedef struct tagSOUNDSENTRYA
+{
+    UINT  cbSize;
+    DWORD  dwFlags;
+    DWORD  iFSTextEffect;
+    DWORD  iFSTextEffectMSec;
+    DWORD  iFSTextEffectColorBits;
+    DWORD  iFSGrafEffect;
+    DWORD  iFSGrafEffectMSec;
+    DWORD  iFSGrafEffectColor;
+    DWORD  iWindowsEffect;
+    DWORD  iWindowsEffectMSec;
+    LPSTR  lpszWindowsEffectDLL;
+    DWORD  iWindowsEffectOrdinal;
+} SOUNDSENTRYA, *LPSOUNDSENTRYA;
+
+typedef struct tagSOUNDSENTRYW
+{
+    UINT  cbSize;
+    DWORD  dwFlags;
+    DWORD  iFSTextEffect;
+    DWORD  iFSTextEffectMSec;
+    DWORD  iFSTextEffectColorBits;
+    DWORD  iFSGrafEffect;
+    DWORD  iFSGrafEffectMSec;
+    DWORD  iFSGrafEffectColor;
+    DWORD  iWindowsEffect;
+    DWORD  iWindowsEffectMSec;
+    LPWSTR  lpszWindowsEffectDLL;
+    DWORD  iWindowsEffectOrdinal;
+} SOUNDSENTRYW, *LPSOUNDSENTRYW;
+
+DECL_WINELIB_TYPE_AW(SOUNDSENTRY)
+DECL_WINELIB_TYPE_AW(LPSOUNDSENTRY)
+
+/* flags for HIGHCONTRAST dwFlags field */
+#define HCF_HIGHCONTRASTON  0x00000001
+#define HCF_AVAILABLE       0x00000002
+#define HCF_HOTKEYACTIVE    0x00000004
+#define HCF_CONFIRMHOTKEY   0x00000008
+#define HCF_HOTKEYSOUND     0x00000010
+#define HCF_INDICATOR       0x00000020
+#define HCF_HOTKEYAVAILABLE 0x00000040
+
+typedef struct tagHIGHCONTRASTA
+{
+    UINT  cbSize;
+    DWORD   dwFlags;
+    LPSTR   lpszDefaultScheme;
+} HIGHCONTRASTA, *LPHIGHCONTRASTA;
+
+typedef struct tagHIGHCONTRASTW
+{
+    UINT  cbSize;
+    DWORD   dwFlags;
+    LPWSTR  lpszDefaultScheme;
+} HIGHCONTRASTW, *LPHIGHCONTRASTW;
+
+DECL_WINELIB_TYPE_AW(HIGHCONTRAST)
+DECL_WINELIB_TYPE_AW(LPHIGHCONTRAST)
+
+typedef struct tagEVENTMSG
+{
+    UINT  message;
+    UINT  paramL;
+    UINT  paramH;
+    DWORD   time;
+    HWND  hwnd;
+} EVENTMSG, *PEVENTMSG, *LPEVENTMSG;
+
+/* WH_KEYBOARD_LL structure */
+typedef struct tagKBDLLHOOKSTRUCT
+{
+    DWORD   vkCode;
+    DWORD   scanCode;
+    DWORD   flags;
+    DWORD   time;
+    ULONG_PTR dwExtraInfo;
+} KBDLLHOOKSTRUCT, *LPKBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT;
+
+#define LLKHF_EXTENDED   (KF_EXTENDED >> 8)
+#define LLKHF_INJECTED   0x00000010
+#define LLKHF_ALTDOWN    (KF_ALTDOWN >> 8)
+#define LLKHF_UP         (KF_UP >> 8)
+
+/* WH_MOUSE_LL structure */
+typedef struct tagMSLLHOOKSTRUCT
+{
+    POINT   pt;
+    DWORD   mouseData;
+    DWORD   flags;
+    DWORD   time;
+    ULONG_PTR dwExtraInfo;
+} MSLLHOOKSTRUCT, *LPMSLLHOOKSTRUCT, *PMSLLHOOKSTRUCT;
+
+#define LLMHF_INJECTED  0x00000001
+
+    /* Mouse hook structure */
+
+typedef struct
+{
+    POINT pt;
+    HWND  hwnd;
+    UINT  wHitTestCode;
+    ULONG_PTR dwExtraInfo;
+} MOUSEHOOKSTRUCT, *PMOUSEHOOKSTRUCT, *LPMOUSEHOOKSTRUCT;
+
+
+    /* Hardware hook structure */
+
+typedef struct
+{
+    HWND    hwnd;
+    UINT    message;
+    WPARAM  wParam;
+    LPARAM  lParam;
+} HARDWAREHOOKSTRUCT, *PHARDWAREHOOKSTRUCT, *LPHARDWAREHOOKSTRUCT;
+
+
+  /* Debug hook structure */
+
+typedef struct tagDEBUGHOOKINFO
+{
+    DWORD       idThread;
+    DWORD       idThreadInstaller;
+    LPARAM      lParam;
+    WPARAM    wParam;
+    INT       code;
+} DEBUGHOOKINFO, *PDEBUGHOOKINFO, *LPDEBUGHOOKINFO;
+
+#define HKL_PREV   0
+#define HKL_NEXT   1
+
+#define KLF_ACTIVATE       0x00000001
+#define KLF_SUBSTITUTE_OK  0x00000002
+#define KLF_UNLOADPREVIOUS 0x00000004
+#define KLF_REORDER        0x00000008
+#define KLF_REPLACELANG    0x00000010
+#define KLF_NOTELLSHELL    0x00000080
+#define KLF_SETFORPROCESS  0x00000100
+#define KLF_SHIFTLOCK      0x00010000
+#define KLF_RESET          0x40000000
+
+#define KL_NAMELENGTH      9
+
+typedef struct tagMOUSEINPUT
+{
+    LONG    dx;
+    LONG    dy;
+    DWORD   mouseData;
+    DWORD   dwFlags;
+    DWORD   time;
+    ULONG_PTR dwExtraInfo;
+} MOUSEINPUT, *PMOUSEINPUT, *LPMOUSEINPUT;
+
+typedef struct tagKEYBDINPUT
+{
+    WORD    wVk;
+    WORD    wScan;
+    DWORD   dwFlags;
+    DWORD   time;
+    ULONG_PTR dwExtraInfo;
+} KEYBDINPUT, *PKEYBDINPUT, *LPKEYBDINPUT;
+
+typedef struct tagHARDWAREINPUT
+{
+    DWORD   uMsg;
+    WORD    wParamL;
+    WORD    wParamH;
+} HARDWAREINPUT, *PHARDWAREINPUT, *LPHARDWAREINPUT;
+
+#define INPUT_MOUSE     0
+#define INPUT_KEYBOARD  1
+#define INPUT_HARDWARE  2
+
+typedef struct tagINPUT
+{
+    DWORD type;
+    union
+    {
+        MOUSEINPUT      mi;
+        KEYBDINPUT      ki;
+        HARDWAREINPUT   hi;
+    } DUMMYUNIONNAME;
+} INPUT, *PINPUT, *LPINPUT;
+
+DECLARE_HANDLE(HRAWINPUT);
+
+typedef struct tagRAWINPUTDEVICELIST
+{
+    HANDLE hDevice;
+    DWORD dwType;
+} RAWINPUTDEVICELIST, *PRAWINPUTDEVICELIST;
+
+typedef struct tagRAWHID {
+    DWORD dwSizeHid;
+    DWORD dwCount;
+    BYTE bRawData;
+} RAWHID, *LPRAWHID;
+
+typedef struct tagRAWKEYBOARD {
+    USHORT MakeCode;
+    USHORT Flags;
+    USHORT Reserved;
+    USHORT VKey;
+    UINT Message;
+    ULONG ExtraInformation;
+} RAWKEYBOARD, *PRAWKEYBOARD, *LPRAWKEYBOARD;
+
+typedef struct tagRAWMOUSE {
+    USHORT usFlags;
+    union {
+        ULONG ulButtons;
+        struct {
+            USHORT usButtonFlags;
+            USHORT usButtonData;
+        } DUMMYSTRUCTNAME;
+    } DUMMYUNIONNAME;
+    ULONG ulRawButtons;
+    LONG  lLastX;
+    LONG  lLastY;
+    ULONG ulExtraInformation;
+} RAWMOUSE, *PRAWMOUSE, *LPRAWMOUSE;
+
+typedef struct tagRAWINPUTHEADER {
+    DWORD dwType;
+    DWORD dwSize;
+    HANDLE hDevice;
+    WPARAM wParam;
+} RAWINPUTHEADER, *PRAWINPUTHEADER;
+
+typedef struct tagRAWINPUT {
+    RAWINPUTHEADER header;
+    union {
+        RAWMOUSE    mouse;
+        RAWKEYBOARD keyboard;
+        RAWHID      hid;
+    } data;
+} RAWINPUT, *PRAWINPUT, *LPRAWINPUT;
+
+typedef struct tagRAWINPUTDEVICE {
+    USHORT usUsagePage;
+    USHORT usUsage;
+    DWORD dwFlags;
+    HWND hwndTarget;
+} RAWINPUTDEVICE, *PRAWINPUTDEVICE, *LPRAWINPUTDEVICE;
+
+typedef struct tagRID_DEVICE_INFO_MOUSE {
+    DWORD dwId;
+    DWORD dwNumberOfButtons;
+    DWORD dwSampleRate;
+    BOOL fHasHorizontalWheel;
+} RID_DEVICE_INFO_MOUSE, *PRID_DEVICE_INFO_MOUSE;
+
+typedef struct tagRID_DEVICE_INFO_KEYBOARD {
+    DWORD dwType;
+    DWORD dwSubType;
+    DWORD dwKeyboardMode;
+    DWORD dwNumberOfFunctionKeys;
+    DWORD dwNumberOfIndicators;
+    DWORD dwNumberOfKeysTotal;
+} RID_DEVICE_INFO_KEYBOARD, *PRID_DEVICE_INFO_KEYBOARD;
+
+typedef struct tagRID_DEVICE_INFO_HID {
+    DWORD dwVendorId;
+    DWORD dwProductId;
+    DWORD dwVersionNumber;
+    USHORT usUsagePage;
+    USHORT usUsage;
+} RID_DEVICE_INFO_HID, *PRID_DEVICE_INFO_HID;
+
+typedef struct tagRID_DEVICE_INFO {
+    DWORD    cbSize;
+    DWORD    dwType;
+    union {
+        RID_DEVICE_INFO_MOUSE     mouse;
+        RID_DEVICE_INFO_KEYBOARD  keyboard;
+        RID_DEVICE_INFO_HID       hid;
+    } DUMMYUNIONNAME;
+} RID_DEVICE_INFO, *PRID_DEVICE_INFO, *LPRID_DEVICE_INFO;
+
+
+typedef struct tagGUITHREADINFO
+{
+    DWORD   cbSize;
+    DWORD   flags;
+    HWND    hwndActive;
+    HWND    hwndFocus;
+    HWND    hwndCapture;
+    HWND    hwndMenuOwner;
+    HWND    hwndMoveSize;
+    HWND    hwndCaret;
+    RECT    rcCaret;
+} GUITHREADINFO, *PGUITHREADINFO, *LPGUITHREADINFO;
+
+#define GUI_CARETBLINKING   0x00000001
+#define GUI_INMOVESIZE      0x00000002
+#define GUI_INMENUMODE      0x00000004
+#define GUI_SYSTEMMENUMODE  0x00000008
+#define GUI_POPUPMENUMODE   0x00000010
+#define GUI_16BITTASK       0x00000020
+
+
+/***** Dialogs *****/
+
+/* Gcc on Solaris has a version of this that we don't care about */
+#undef FSHIFT
+
+#define	FVIRTKEY	TRUE          /* Assumed to be == TRUE */
+#define	FNOINVERT	0x02
+#define	FSHIFT		0x04
+#define	FCONTROL	0x08
+#define	FALT		0x10
+
+
+typedef struct tagANIMATIONINFO
+{
+       UINT          cbSize;
+       INT           iMinAnimate;
+} ANIMATIONINFO, *LPANIMATIONINFO;
+
+typedef struct tagNMHDR
+{
+    HWND  hwndFrom;
+    UINT_PTR idFrom;
+    UINT  code;
+} NMHDR, *LPNMHDR;
+
+typedef struct tagDRAWTEXTPARAMS
+{
+	UINT	cbSize;
+	INT	iTabLength;
+	INT	iLeftMargin;
+	INT	iRightMargin;
+	UINT	uiLengthDrawn;
+} DRAWTEXTPARAMS,*LPDRAWTEXTPARAMS;
+
+#define WM_USER             0x0400
+
+typedef struct
+{
+  LPARAM        lParam;
+  WPARAM      wParam;
+  UINT        message;
+  HWND        hwnd;
+} CWPSTRUCT, *PCWPSTRUCT, *LPCWPSTRUCT;
+
+typedef struct
+{
+  LRESULT       lResult;
+  LPARAM        lParam;
+  WPARAM      wParam;
+  DWORD         message;
+  HWND        hwnd;
+} CWPRETSTRUCT, *PCWPRETSTRUCT, *LPCWPRETSTRUCT;
+
+typedef struct tagWINDOWPLACEMENT
+{
+    UINT   length;
+    UINT   flags;
+    UINT   showCmd;
+    POINT  ptMinPosition;
+    POINT  ptMaxPosition;
+    RECT   rcNormalPosition;
+} WINDOWPLACEMENT, *PWINDOWPLACEMENT, *LPWINDOWPLACEMENT;
+
+
+  /* WINDOWPLACEMENT flags */
+#define WPF_SETMINPOSITION      0x0001
+#define WPF_RESTORETOMAXIMIZED  0x0002
+
+/***** Dialogs *****/
+
+#define IS_INTRESOURCE(x)   (((ULONG_PTR)(x) >> 16) == 0)
+#define MAKEINTRESOURCEA(i) (LPSTR)((ULONG_PTR)((WORD)(i)))
+#define MAKEINTRESOURCEW(i) (LPWSTR)((ULONG_PTR)((WORD)(i)))
+
+#ifdef WINE_NO_UNICODE_MACROS /* force using a cast */
+#define MAKEINTRESOURCE(i) ((ULONG_PTR)((WORD)(i)))
+#else
+#define MAKEINTRESOURCE WINELIB_NAME_AW(MAKEINTRESOURCE)
+#endif
+
+/* Predefined resource types */
+#define RT_CURSOR         MAKEINTRESOURCE(1)
+#define RT_BITMAP         MAKEINTRESOURCE(2)
+#define RT_ICON           MAKEINTRESOURCE(3)
+#define RT_MENU           MAKEINTRESOURCE(4)
+#define RT_DIALOG         MAKEINTRESOURCE(5)
+#define RT_STRING         MAKEINTRESOURCE(6)
+#define RT_FONTDIR        MAKEINTRESOURCE(7)
+#define RT_FONT           MAKEINTRESOURCE(8)
+#define RT_ACCELERATOR    MAKEINTRESOURCE(9)
+#define RT_RCDATA         MAKEINTRESOURCE(10)
+#define RT_MESSAGETABLE   MAKEINTRESOURCE(11)
+#define RT_GROUP_CURSOR   MAKEINTRESOURCE(12)
+#define RT_GROUP_ICON     MAKEINTRESOURCE(14)
+#define RT_VERSION        MAKEINTRESOURCE(16)
+#define RT_DLGINCLUDE     MAKEINTRESOURCE(17)
+#define RT_PLUGPLAY       MAKEINTRESOURCE(19)
+#define RT_VXD            MAKEINTRESOURCE(20)
+#define RT_ANICURSOR      MAKEINTRESOURCE(21)
+#define RT_ANIICON        MAKEINTRESOURCE(22)
+#define RT_HTML           MAKEINTRESOURCE(23)
+
+#ifndef RC_INVOKED
+#define RT_MANIFEST                                        MAKEINTRESOURCE(24)
+#define CREATEPROCESS_MANIFEST_RESOURCE_ID                 MAKEINTRESOURCE(1)
+#define ISOLATIONAWARE_MANIFEST_RESOURCE_ID                MAKEINTRESOURCE(2)
+#define ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(3)
+#define MINIMUM_RESERVED_MANIFEST_RESOURCE_ID              MAKEINTRESOURCE(1)
+#define MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID              MAKEINTRESOURCE(16)
+#else
+#define RT_MANIFEST                                        24
+#define CREATEPROCESS_MANIFEST_RESOURCE_ID                 1
+#define ISOLATIONAWARE_MANIFEST_RESOURCE_ID                2
+#define ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID 3
+#define MINIMUM_RESERVED_MANIFEST_RESOURCE_ID              1
+#define MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID              16
+#endif
+
+  /* cbWndExtra bytes for dialog class */
+#define DLGWINDOWEXTRA      30
+
+/* Button control styles */
+#define BS_PUSHBUTTON          0x00000000L
+#define BS_DEFPUSHBUTTON       0x00000001L
+#define BS_CHECKBOX            0x00000002L
+#define BS_AUTOCHECKBOX        0x00000003L
+#define BS_RADIOBUTTON         0x00000004L
+#define BS_3STATE              0x00000005L
+#define BS_AUTO3STATE          0x00000006L
+#define BS_GROUPBOX            0x00000007L
+#define BS_USERBUTTON          0x00000008L
+#define BS_AUTORADIOBUTTON     0x00000009L
+#define BS_OWNERDRAW           0x0000000BL
+#define BS_LEFTTEXT            0x00000020L
+#define BS_RIGHTBUTTON         BS_LEFTTEXT
+
+#define BS_TEXT                0x00000000L
+#define BS_ICON                0x00000040L
+#define BS_BITMAP              0x00000080L
+#define BS_LEFT                0x00000100L
+#define BS_RIGHT               0x00000200L
+#define BS_CENTER              0x00000300L
+#define BS_TOP                 0x00000400L
+#define BS_BOTTOM              0x00000800L
+#define BS_VCENTER             0x00000C00L
+#define BS_PUSHLIKE            0x00001000L
+#define BS_MULTILINE           0x00002000L
+#define BS_NOTIFY              0x00004000L
+#define BS_FLAT                0x00008000L
+
+  /* Dialog styles */
+#define DS_ABSALIGN		0x0001
+#define DS_SYSMODAL		0x0002
+#define DS_3DLOOK		0x0004	/* win95 */
+#define DS_FIXEDSYS		0x0008	/* win95 */
+#define DS_NOFAILCREATE		0x0010	/* win95 */
+#define DS_LOCALEDIT		0x0020
+#define DS_SETFONT		0x0040
+#define DS_MODALFRAME		0x0080
+#define DS_NOIDLEMSG		0x0100
+#define DS_SETFOREGROUND	0x0200	/* win95 */
+#define DS_CONTROL		0x0400	/* win95 */
+#define DS_CENTER		0x0800	/* win95 */
+#define DS_CENTERMOUSE		0x1000	/* win95 */
+#define DS_CONTEXTHELP		0x2000	/* win95 */
+#define DS_USEPIXELS		0x8000
+#define DS_SHELLFONT		(DS_SETFONT | DS_FIXEDSYS)
+
+
+  /* Dialog messages */
+#define DM_GETDEFID         (WM_USER+0)
+#define DM_SETDEFID         (WM_USER+1)
+#define DM_REPOSITION       (WM_USER+2)
+
+#define DC_HASDEFID         0x534b
+
+/* Bit flags for DRAWITEMSTRUCT.CtlType */
+#define ODT_MENU        1
+#define ODT_LISTBOX     2
+#define ODT_COMBOBOX    3
+#define ODT_BUTTON      4
+#define ODT_STATIC      5
+
+/* Bit flags for DRAWITEMSTRUCT.itemAction */
+#define ODA_DRAWENTIRE 0x1
+#define ODA_SELECT     0x2
+#define ODA_FOCUS      0x4
+
+/* Bit flags for DRAWITEMSTRUCT.itemState */
+#define ODS_SELECTED     0x0001 /* Selected */
+#define ODS_GRAYED       0x0002 /* Grayed (Menus only) */
+#define ODS_DISABLED     0x0004 /* Disabled */
+#define ODS_CHECKED      0x0008 /* Checked (Menus only) */
+#define ODS_FOCUS        0x0010 /* Has focus */
+#define ODS_DEFAULT      0x0020 /* Default */
+#define ODS_HOTLIGHT     0x0040 /* Highlighted when under mouse */
+#define ODS_INACTIVE     0x0080 /* Inactive */
+#define ODS_NOACCEL      0x0100 /* No keyboard accelerator */
+#define ODS_NOFOCUSRECT  0x0200 /* No focus rectangle */
+#define ODS_COMBOBOXEDIT 0x1000 /* Edit of a combo box */
+
+/* Edit control styles */
+#ifndef NOWINSTYLES
+#define ES_LEFT         0x00000000
+#define ES_CENTER       0x00000001
+#define ES_RIGHT        0x00000002
+#define ES_MULTILINE    0x00000004
+#define ES_UPPERCASE    0x00000008
+#define ES_LOWERCASE    0x00000010
+#define ES_PASSWORD     0x00000020
+#define ES_AUTOVSCROLL  0x00000040
+#define ES_AUTOHSCROLL  0x00000080
+#define ES_NOHIDESEL    0x00000100
+#define ES_COMBO        0x00000200   /* Undocumented. Parent is a combobox */
+#define ES_OEMCONVERT   0x00000400
+#define ES_READONLY     0x00000800
+#define ES_WANTRETURN   0x00001000
+#define ES_NUMBER       0x00002000
+#endif /* NOWINSTYLES */
+
+/* OEM Resource Ordinal Numbers */
+#ifdef OEMRESOURCE
+#define OBM_TRTYPE          32732
+#define OBM_LFARROWI        32734
+#define OBM_RGARROWI        32735
+#define OBM_DNARROWI        32736
+#define OBM_UPARROWI        32737
+#define OBM_COMBO           32738
+#define OBM_MNARROW         32739
+#define OBM_LFARROWD        32740
+#define OBM_RGARROWD        32741
+#define OBM_DNARROWD        32742
+#define OBM_UPARROWD        32743
+#define OBM_RESTORED        32744
+#define OBM_ZOOMD           32745
+#define OBM_REDUCED         32746
+#define OBM_RESTORE         32747
+#define OBM_ZOOM            32748
+#define OBM_REDUCE          32749
+#define OBM_LFARROW         32750
+#define OBM_RGARROW         32751
+#define OBM_DNARROW         32752
+#define OBM_UPARROW         32753
+#define OBM_CLOSE           32754
+#define OBM_OLD_RESTORE     32755
+#define OBM_OLD_ZOOM        32756
+#define OBM_OLD_REDUCE      32757
+#define OBM_BTNCORNERS      32758
+#define OBM_CHECKBOXES      32759
+#define OBM_CHECK           32760
+#define OBM_BTSIZE          32761
+#define OBM_OLD_LFARROW     32762
+#define OBM_OLD_RGARROW     32763
+#define OBM_OLD_DNARROW     32764
+#define OBM_OLD_UPARROW     32765
+#define OBM_SIZE            32766
+#define OBM_OLD_CLOSE       32767
+
+#define OCR_NORMAL          32512
+#define OCR_IBEAM           32513
+#define OCR_WAIT            32514
+#define OCR_CROSS           32515
+#define OCR_UP              32516
+#define OCR_SIZE            32640
+#define OCR_ICON            32641
+#define OCR_SIZENWSE        32642
+#define OCR_SIZENESW        32643
+#define OCR_SIZEWE          32644
+#define OCR_SIZENS          32645
+#define OCR_SIZEALL         32646
+#define OCR_ICOCUR          32647
+#define OCR_NO              32648
+#define OCR_HAND            32649
+#define OCR_APPSTARTING     32650
+#define OCR_HELP            32651
+
+/* only defined in wine (FIXME) */
+#define OCR_DRAGOBJECT      32653
+
+#define OIC_SAMPLE          32512
+#define OIC_HAND            32513
+#define OIC_QUES            32514
+#define OIC_BANG            32515
+#define OIC_NOTE            32516
+#define OIC_WINLOGO         32517
+#define OIC_WARNING         OIC_BANG
+#define OIC_ERROR           OIC_HAND
+#define OIC_INFORMATION     OIC_NOTE
+#endif /* OEMRESOURCE */
+
+#ifndef NOCOLOR
+
+#define COLOR_SCROLLBAR		    0
+#define COLOR_BACKGROUND	    1
+#define COLOR_ACTIVECAPTION	    2
+#define COLOR_INACTIVECAPTION	    3
+#define COLOR_MENU		    4
+#define COLOR_WINDOW		    5
+#define COLOR_WINDOWFRAME	    6
+#define COLOR_MENUTEXT		    7
+#define COLOR_WINDOWTEXT	    8
+#define COLOR_CAPTIONTEXT  	    9
+#define COLOR_ACTIVEBORDER	   10
+#define COLOR_INACTIVEBORDER	   11
+#define COLOR_APPWORKSPACE	   12
+#define COLOR_HIGHLIGHT		   13
+#define COLOR_HIGHLIGHTTEXT	   14
+#define COLOR_BTNFACE              15
+#define COLOR_BTNSHADOW            16
+#define COLOR_GRAYTEXT             17
+#define COLOR_BTNTEXT		   18
+#define COLOR_INACTIVECAPTIONTEXT  19
+#define COLOR_BTNHIGHLIGHT         20
+/* win95 colors */
+#define COLOR_3DDKSHADOW           21
+#define COLOR_3DLIGHT              22
+#define COLOR_INFOTEXT             23
+#define COLOR_INFOBK               24
+#define COLOR_DESKTOP              COLOR_BACKGROUND
+#define COLOR_3DFACE               COLOR_BTNFACE
+#define COLOR_3DSHADOW             COLOR_BTNSHADOW
+#define COLOR_3DHIGHLIGHT          COLOR_BTNHIGHLIGHT
+#define COLOR_3DHILIGHT            COLOR_BTNHIGHLIGHT
+#define COLOR_BTNHILIGHT           COLOR_BTNHIGHLIGHT
+/* win98 colors */
+#define COLOR_ALTERNATEBTNFACE         25  /* undocumented, constant's name unknown */
+#define COLOR_HOTLIGHT                 26
+#define COLOR_GRADIENTACTIVECAPTION    27
+#define COLOR_GRADIENTINACTIVECAPTION  28
+/* win2k/xp colors */
+#define COLOR_MENUHILIGHT              29
+#define COLOR_MENUBAR                  30
+
+  /* WM_CTLCOLOR values */
+#define CTLCOLOR_MSGBOX             0
+#define CTLCOLOR_EDIT               1
+#define CTLCOLOR_LISTBOX            2
+#define CTLCOLOR_BTN                3
+#define CTLCOLOR_DLG                4
+#define CTLCOLOR_SCROLLBAR          5
+#define CTLCOLOR_STATIC             6
+
+WINUSERAPI COLORREF WINAPI GetSysColor(INT);
+WINUSERAPI BOOL     WINAPI SetSysColors(INT,const INT*,const COLORREF*);
+
+#endif /* NOCOLOR */
+
+/* Edit control messages */
+#define EM_GETSEL                0x00b0
+#define EM_SETSEL                0x00b1
+#define EM_GETRECT               0x00b2
+#define EM_SETRECT               0x00b3
+#define EM_SETRECTNP             0x00b4
+#define EM_SCROLL                0x00b5
+#define EM_LINESCROLL            0x00b6
+#define EM_SCROLLCARET           0x00b7
+#define EM_GETMODIFY             0x00b8
+#define EM_SETMODIFY             0x00b9
+#define EM_GETLINECOUNT          0x00ba
+#define EM_LINEINDEX             0x00bb
+#define EM_SETHANDLE             0x00bc
+#define EM_GETHANDLE             0x00bd
+#define EM_GETTHUMB              0x00be
+/* FIXME : missing from specs 0x00bf and 0x00c0 */
+#define EM_LINELENGTH            0x00c1
+#define EM_REPLACESEL            0x00c2
+/* FIXME : missing from specs 0x00c3 */
+#define EM_GETLINE               0x00c4
+#define EM_LIMITTEXT             0x00c5
+#define EM_CANUNDO               0x00c6
+#define EM_UNDO                  0x00c7
+#define EM_FMTLINES              0x00c8
+#define EM_LINEFROMCHAR          0x00c9
+/* FIXME : missing from specs 0x00ca */
+#define EM_SETTABSTOPS           0x00cb
+#define EM_SETPASSWORDCHAR       0x00cc
+#define EM_EMPTYUNDOBUFFER       0x00cd
+#define EM_GETFIRSTVISIBLELINE   0x00ce
+#define EM_SETREADONLY           0x00cf
+#define EM_SETWORDBREAKPROC      0x00d0
+#define EM_GETWORDBREAKPROC      0x00d1
+#define EM_GETPASSWORDCHAR       0x00d2
+#define EM_SETMARGINS            0x00d3
+#define EM_GETMARGINS            0x00d4
+#define EM_GETLIMITTEXT          0x00d5
+#define EM_POSFROMCHAR           0x00d6
+#define EM_CHARFROMPOS           0x00d7
+#define EM_SETIMESTATUS          0x00d8
+#define EM_GETIMESTATUS          0x00d9
+/* a name change since win95 */
+#define EM_SETLIMITTEXT          EM_LIMITTEXT
+
+/* EDITWORDBREAKPROC code values */
+#define WB_LEFT         0
+#define WB_RIGHT        1
+#define WB_ISDELIMITER  2
+
+/* Edit control notification codes */
+#define EN_SETFOCUS     0x0100
+#define EN_KILLFOCUS    0x0200
+#define EN_CHANGE       0x0300
+#define EN_UPDATE       0x0400
+#define EN_ERRSPACE     0x0500
+#define EN_MAXTEXT      0x0501
+#define EN_HSCROLL      0x0601
+#define EN_VSCROLL      0x0602
+
+/* New since win95 : EM_SETMARGIN parameters */
+#define EC_LEFTMARGIN	0x0001
+#define EC_RIGHTMARGIN	0x0002
+#define EC_USEFONTINFO	0xffff
+
+
+  /* GetSystemMetrics() codes */
+#define SM_CXSCREEN	       0
+#define SM_CYSCREEN            1
+#define SM_CXVSCROLL           2
+#define SM_CYHSCROLL	       3
+#define SM_CYCAPTION	       4
+#define SM_CXBORDER	       5
+#define SM_CYBORDER	       6
+#define SM_CXDLGFRAME	       7
+#define SM_CYDLGFRAME	       8
+#define SM_CYVTHUMB	       9
+#define SM_CXHTHUMB	      10
+#define SM_CXICON	      11
+#define SM_CYICON	      12
+#define SM_CXCURSOR	      13
+#define SM_CYCURSOR	      14
+#define SM_CYMENU	      15
+#define SM_CXFULLSCREEN       16
+#define SM_CYFULLSCREEN       17
+#define SM_CYKANJIWINDOW      18
+#define SM_MOUSEPRESENT       19
+#define SM_CYVSCROLL	      20
+#define SM_CXHSCROLL	      21
+#define SM_DEBUG	      22
+#define SM_SWAPBUTTON	      23
+#define SM_RESERVED1	      24
+#define SM_RESERVED2	      25
+#define SM_RESERVED3	      26
+#define SM_RESERVED4	      27
+#define SM_CXMIN	      28
+#define SM_CYMIN	      29
+#define SM_CXSIZE	      30
+#define SM_CYSIZE	      31
+#define SM_CXFRAME	      32
+#define SM_CYFRAME	      33
+#define SM_CXMINTRACK	      34
+#define SM_CYMINTRACK	      35
+#define SM_CXDOUBLECLK        36
+#define SM_CYDOUBLECLK        37
+#define SM_CXICONSPACING      38
+#define SM_CYICONSPACING      39
+#define SM_MENUDROPALIGNMENT  40
+#define SM_PENWINDOWS         41
+#define SM_DBCSENABLED        42
+#define SM_CMOUSEBUTTONS      43
+#define SM_CXFIXEDFRAME	      SM_CXDLGFRAME
+#define SM_CYFIXEDFRAME	      SM_CYDLGFRAME
+#define SM_CXSIZEFRAME	      SM_CXFRAME
+#define SM_CYSIZEFRAME	      SM_CYFRAME
+#define SM_SECURE	      44
+#define SM_CXEDGE	      45
+#define SM_CYEDGE	      46
+#define SM_CXMINSPACING	      47
+#define SM_CYMINSPACING	      48
+#define SM_CXSMICON	      49
+#define SM_CYSMICON	      50
+#define SM_CYSMCAPTION	      51
+#define SM_CXSMSIZE	      52
+#define SM_CYSMSIZE	      53
+#define SM_CXMENUSIZE	      54
+#define SM_CYMENUSIZE	      55
+#define SM_ARRANGE	      56
+#define SM_CXMINIMIZED	      57
+#define SM_CYMINIMIZED	      58
+#define SM_CXMAXTRACK	      59
+#define SM_CYMAXTRACK	      60
+#define SM_CXMAXIMIZED	      61
+#define SM_CYMAXIMIZED	      62
+#define SM_NETWORK	      63
+#define SM_CLEANBOOT	      67
+#define SM_CXDRAG	      68
+#define SM_CYDRAG	      69
+#define SM_SHOWSOUNDS	      70
+#define SM_CXMENUCHECK	      71
+#define SM_CYMENUCHECK	      72
+#define SM_SLOWMACHINE	      73
+#define SM_MIDEASTENABLED     74
+#define SM_MOUSEWHEELPRESENT  75
+#define SM_XVIRTUALSCREEN     76
+#define SM_YVIRTUALSCREEN     77
+#define SM_CXVIRTUALSCREEN    78
+#define SM_CYVIRTUALSCREEN    79
+#define SM_CMONITORS          80
+#define SM_SAMEDISPLAYFORMAT  81
+#define SM_IMMENABLED         82
+#define SM_CXFOCUSBORDER      83
+#define SM_CYFOCUSBORDER      84
+#define SM_TABLETPC           86
+#define SM_MEDIACENTER        87
+#define SM_STARTER            88
+#define SM_SERVERR2           89
+#define SM_CMETRICS           90
+#define SM_MOUSEHORIZONTALWHEELPRESENT 91
+
+#define SM_REMOTESESSION        0x1000
+#define SM_SHUTTINGDOWN         0x2000
+#define SM_REMOTECONTROL        0x2001
+#define SM_CARETBLINKINGENABLED 0x2002
+
+#define PMB_ACTIVE      0x00000001
+
+/* Messages */
+#define WM_NULL                 0x0000
+#define WM_CREATE               0x0001
+#define WM_DESTROY              0x0002
+#define WM_MOVE                 0x0003
+#define WM_SIZEWAIT             0x0004
+#define WM_SIZE                 0x0005
+#define WM_ACTIVATE             0x0006
+#define WM_SETFOCUS             0x0007
+#define WM_KILLFOCUS            0x0008
+#define WM_SETVISIBLE           0x0009
+#define WM_ENABLE               0x000a
+#define WM_SETREDRAW            0x000b
+#define WM_SETTEXT              0x000c
+#define WM_GETTEXT              0x000d
+#define WM_GETTEXTLENGTH        0x000e
+#define WM_PAINT                0x000f
+#define WM_CLOSE                0x0010
+#define WM_QUERYENDSESSION      0x0011
+#define WM_QUIT                 0x0012
+#define WM_QUERYOPEN            0x0013
+#define WM_ERASEBKGND           0x0014
+#define WM_SYSCOLORCHANGE       0x0015
+#define WM_ENDSESSION           0x0016
+#define WM_SYSTEMERROR          0x0017
+#define WM_SHOWWINDOW           0x0018
+#define WM_CTLCOLOR             0x0019
+#define WM_WININICHANGE         0x001a
+#define WM_SETTINGCHANGE        WM_WININICHANGE
+#define WM_DEVMODECHANGE        0x001b
+#define WM_ACTIVATEAPP          0x001c
+#define WM_FONTCHANGE           0x001d
+#define WM_TIMECHANGE           0x001e
+#define WM_CANCELMODE           0x001f
+#define WM_SETCURSOR            0x0020
+#define WM_MOUSEACTIVATE        0x0021
+#define WM_CHILDACTIVATE        0x0022
+#define WM_QUEUESYNC            0x0023
+#define WM_GETMINMAXINFO        0x0024
+
+#define WM_PAINTICON            0x0026
+#define WM_ICONERASEBKGND       0x0027
+#define WM_NEXTDLGCTL           0x0028
+#define WM_ALTTABACTIVE         0x0029
+#define WM_SPOOLERSTATUS        0x002a
+#define WM_DRAWITEM             0x002b
+#define WM_MEASUREITEM          0x002c
+#define WM_DELETEITEM           0x002d
+#define WM_VKEYTOITEM           0x002e
+#define WM_CHARTOITEM           0x002f
+#define WM_SETFONT              0x0030
+#define WM_GETFONT              0x0031
+#define WM_SETHOTKEY            0x0032
+#define WM_GETHOTKEY            0x0033
+#define WM_FILESYSCHANGE        0x0034
+#define WM_ISACTIVEICON         0x0035
+#define WM_QUERYPARKICON        0x0036
+#define WM_QUERYDRAGICON        0x0037
+#define WM_QUERYSAVESTATE       0x0038
+#define WM_COMPAREITEM          0x0039
+#define WM_TESTING              0x003a
+
+#define WM_GETOBJECT            0x003d
+
+#define WM_ACTIVATESHELLWINDOW	0x003e
+
+#define WM_COMPACTING		0x0041
+
+#define WM_COMMNOTIFY		0x0044
+#define WM_WINDOWPOSCHANGING 	0x0046
+#define WM_WINDOWPOSCHANGED 	0x0047
+#define WM_POWER		0x0048
+
+  /* Win32 4.0 messages */
+#define WM_COPYDATA		0x004a
+#define WM_CANCELJOURNAL	0x004b
+#define WM_KEYF1		0x004d
+#define WM_NOTIFY		0x004e
+#define WM_INPUTLANGCHANGEREQUEST       0x0050
+#define WM_INPUTLANGCHANGE              0x0051
+#define WM_TCARD                0x0052
+#define WM_HELP			0x0053
+#define WM_USERCHANGED		0x0054
+#define WM_NOTIFYFORMAT		0x0055
+
+#define WM_CONTEXTMENU		0x007b
+#define WM_STYLECHANGING 	0x007c
+#define WM_STYLECHANGED		0x007d
+#define WM_DISPLAYCHANGE        0x007e
+#define WM_GETICON		0x007f
+#define WM_SETICON		0x0080
+
+  /* Non-client system messages */
+#define WM_NCCREATE         0x0081
+#define WM_NCDESTROY        0x0082
+#define WM_NCCALCSIZE       0x0083
+#define WM_NCHITTEST        0x0084
+#define WM_NCPAINT          0x0085
+#define WM_NCACTIVATE       0x0086
+
+#define WM_GETDLGCODE	    0x0087
+#define WM_SYNCPAINT	    0x0088
+#define WM_SYNCTASK	    0x0089
+
+  /* Non-client mouse messages */
+#define WM_NCMOUSEMOVE      0x00a0
+#define WM_NCLBUTTONDOWN    0x00a1
+#define WM_NCLBUTTONUP      0x00a2
+#define WM_NCLBUTTONDBLCLK  0x00a3
+#define WM_NCRBUTTONDOWN    0x00a4
+#define WM_NCRBUTTONUP      0x00a5
+#define WM_NCRBUTTONDBLCLK  0x00a6
+#define WM_NCMBUTTONDOWN    0x00a7
+#define WM_NCMBUTTONUP      0x00a8
+#define WM_NCMBUTTONDBLCLK  0x00a9
+
+#define WM_NCXBUTTONDOWN    0x00ab
+#define WM_NCXBUTTONUP      0x00ac
+#define WM_NCXBUTTONDBLCLK  0x00ad
+
+  /* Raw input */
+#define WM_INPUT_DEVICE_CHANGE 0x00fe
+#define WM_INPUT            0x00ff
+
+  /* Keyboard messages */
+#define WM_KEYDOWN          0x0100
+#define WM_KEYUP            0x0101
+#define WM_CHAR             0x0102
+#define WM_DEADCHAR         0x0103
+#define WM_SYSKEYDOWN       0x0104
+#define WM_SYSKEYUP         0x0105
+#define WM_SYSCHAR          0x0106
+#define WM_SYSDEADCHAR      0x0107
+#define WM_UNICHAR          0x0109
+#define WM_KEYFIRST         WM_KEYDOWN
+#define WM_KEYLAST          0x0109
+
+/* Win32 4.0 messages for IME */
+#define WM_IME_STARTCOMPOSITION     0x010d
+#define WM_IME_ENDCOMPOSITION       0x010e
+#define WM_IME_COMPOSITION          0x010f
+#define WM_IME_KEYLAST              0x010f
+
+#define WM_INITDIALOG       0x0110
+#define WM_COMMAND          0x0111
+#define WM_SYSCOMMAND       0x0112
+#define WM_TIMER	    0x0113
+
+  /* scroll messages */
+#define WM_HSCROLL          0x0114
+#define WM_VSCROLL          0x0115
+
+/* Menu messages */
+#define WM_INITMENU         0x0116
+#define WM_INITMENUPOPUP    0x0117
+
+#define WM_MENUSELECT       0x011F
+#define WM_MENUCHAR         0x0120
+#define WM_ENTERIDLE        0x0121
+
+#define WM_MENURBUTTONUP    0x0122
+#define WM_MENUDRAG         0x0123
+#define WM_MENUGETOBJECT    0x0124
+#define WM_UNINITMENUPOPUP  0x0125
+#define WM_MENUCOMMAND      0x0126
+
+#define WM_CHANGEUISTATE    0x0127
+#define WM_UPDATEUISTATE    0x0128
+#define WM_QUERYUISTATE     0x0129
+
+/* UI flags for WM_*UISTATE */
+/* for low-order word of wparam */
+#define UIS_SET                         1
+#define UIS_CLEAR                       2
+#define UIS_INITIALIZE                  3
+/* for hi-order word of wparam */
+#define UISF_HIDEFOCUS                  0x1
+#define UISF_HIDEACCEL                  0x2
+#define UISF_ACTIVE                     0x4
+
+#define WM_LBTRACKPOINT     0x0131
+
+  /* Win32 CTLCOLOR messages */
+#define WM_CTLCOLORMSGBOX    0x0132
+#define WM_CTLCOLOREDIT      0x0133
+#define WM_CTLCOLORLISTBOX   0x0134
+#define WM_CTLCOLORBTN       0x0135
+#define WM_CTLCOLORDLG       0x0136
+#define WM_CTLCOLORSCROLLBAR 0x0137
+#define WM_CTLCOLORSTATIC    0x0138
+
+#define MN_GETHMENU          0x01E1
+
+  /* Mouse messages */
+#define WM_MOUSEMOVE	    0x0200
+#define WM_LBUTTONDOWN	    0x0201
+#define WM_LBUTTONUP	    0x0202
+#define WM_LBUTTONDBLCLK    0x0203
+#define WM_RBUTTONDOWN	    0x0204
+#define WM_RBUTTONUP	    0x0205
+#define WM_RBUTTONDBLCLK    0x0206
+#define WM_MBUTTONDOWN	    0x0207
+#define WM_MBUTTONUP	    0x0208
+#define WM_MBUTTONDBLCLK    0x0209
+#define WM_MOUSEWHEEL       0x020A
+#define WM_XBUTTONDOWN      0x020B
+#define WM_XBUTTONUP        0x020C
+#define WM_XBUTTONDBLCLK    0x020D
+#define WM_MOUSEHWHEEL      0x020E
+
+#define XBUTTON1            0x0001
+#define XBUTTON2            0x0002
+
+#define WM_MOUSEFIRST       0x0200
+#define WM_MOUSELAST        0x020E
+
+#define WHEEL_DELTA      120
+#define WHEEL_PAGESCROLL  (UINT_MAX)
+#define GET_WHEEL_DELTA_WPARAM(wParam)  ((short)HIWORD(wParam))
+
+#define WM_PARENTNOTIFY     0x0210
+#define WM_ENTERMENULOOP    0x0211
+#define WM_EXITMENULOOP     0x0212
+#define WM_NEXTMENU	    0x0213
+
+  /* Win32 4.0 messages */
+#define WM_SIZING	    0x0214
+#define WM_CAPTURECHANGED   0x0215
+#define WM_MOVING	    0x0216
+#define WM_POWERBROADCAST   0x0218
+#define WM_DEVICECHANGE     0x0219
+
+/* wParam for WM_SIZING message */
+#define WMSZ_LEFT           1
+#define WMSZ_RIGHT          2
+#define WMSZ_TOP            3
+#define WMSZ_TOPLEFT        4
+#define WMSZ_TOPRIGHT       5
+#define WMSZ_BOTTOM         6
+#define WMSZ_BOTTOMLEFT     7
+#define WMSZ_BOTTOMRIGHT    8
+
+/* wParam for WM_POWERBROADCAST */
+#define PBT_APMQUERYSUSPEND       0x0000
+#define PBT_APMQUERYSTANDBY       0x0001
+#define PBT_APMQUERYSUSPENDFAILED 0x0002
+#define PBT_APMQUERYSTANDBYFAILED 0x0003
+#define PBT_APMSUSPEND            0x0004
+#define PBT_APMSTANDBY            0x0005
+#define PBT_APMRESUMECRITICAL     0x0006
+#define PBT_APMRESUMESUSPEND      0x0007
+#define PBT_APMRESUMESTANDBY      0x0008
+#define PBT_APMBATTERYLOW         0x0009
+#define PBT_APMPOWERSTATUSCHANGE  0x000A
+#define PBT_APMOEMEVENT           0x000B
+#define PBT_APMRESUMEAUTOMATIC    0x0012
+
+#define PBTF_APMRESUMEFROMFAILURE       0x00000001
+
+  /* MDI messages */
+#define WM_MDICREATE	    0x0220
+#define WM_MDIDESTROY	    0x0221
+#define WM_MDIACTIVATE	    0x0222
+#define WM_MDIRESTORE	    0x0223
+#define WM_MDINEXT	    0x0224
+#define WM_MDIMAXIMIZE	    0x0225
+#define WM_MDITILE	    0x0226
+#define WM_MDICASCADE	    0x0227
+#define WM_MDIICONARRANGE   0x0228
+#define WM_MDIGETACTIVE     0x0229
+#define WM_MDIREFRESHMENU   0x0234
+
+  /* D&D messages */
+#define WM_DROPOBJECT	    0x022A
+#define WM_QUERYDROPOBJECT  0x022B
+#define WM_BEGINDRAG	    0x022C
+#define WM_DRAGLOOP	    0x022D
+#define WM_DRAGSELECT	    0x022E
+#define WM_DRAGMOVE	    0x022F
+#define WM_MDISETMENU	    0x0230
+
+#define WM_ENTERSIZEMOVE    0x0231
+#define WM_EXITSIZEMOVE     0x0232
+#define WM_DROPFILES	    0x0233
+
+
+/* Win32 4.0 messages for IME */
+#define WM_IME_SETCONTEXT           0x0281
+#define WM_IME_NOTIFY               0x0282
+#define WM_IME_CONTROL              0x0283
+#define WM_IME_COMPOSITIONFULL      0x0284
+#define WM_IME_SELECT               0x0285
+#define WM_IME_CHAR                 0x0286
+/* Win32 5.0 messages for IME */
+#define WM_IME_REQUEST              0x0288
+
+/* Win32 4.0 messages for IME */
+#define WM_IME_KEYDOWN              0x0290
+#define WM_IME_KEYUP                0x0291
+
+#define WM_NCMOUSEHOVER     0x02A0
+#define WM_MOUSEHOVER       0x02A1
+#define WM_MOUSELEAVE       0x02A3
+#define WM_NCMOUSELEAVE     0x02A2
+
+#define WM_WTSSESSION_CHANGE        0x02B1
+
+#define WM_TABLET_FIRST             0x02c0
+#define WM_TABLET_LAST              0x02df
+
+/* Clipboard command messages */
+#define WM_CUT               0x0300
+#define WM_COPY              0x0301
+#define WM_PASTE             0x0302
+#define WM_CLEAR             0x0303
+#define WM_UNDO              0x0304
+
+/* Clipboard owner messages */
+#define WM_RENDERFORMAT      0x0305
+#define WM_RENDERALLFORMATS  0x0306
+#define WM_DESTROYCLIPBOARD  0x0307
+
+/* Clipboard viewer messages */
+#define WM_DRAWCLIPBOARD     0x0308
+#define WM_PAINTCLIPBOARD    0x0309
+#define WM_VSCROLLCLIPBOARD  0x030A
+#define WM_SIZECLIPBOARD     0x030B
+#define WM_ASKCBFORMATNAME   0x030C
+#define WM_CHANGECBCHAIN     0x030D
+#define WM_HSCROLLCLIPBOARD  0x030E
+
+#define WM_QUERYNEWPALETTE   0x030F
+#define WM_PALETTEISCHANGING 0x0310
+#define WM_PALETTECHANGED    0x0311
+#define WM_HOTKEY	     0x0312
+
+#define WM_PRINT             0x0317
+#define WM_PRINTCLIENT       0x0318
+#define WM_APPCOMMAND        0x0319
+#define WM_THEMECHANGED      0x031A
+#define WM_CLIPBOARDUPDATE   0x031D
+
+#define WM_DWMCOMPOSITIONCHANGED 0x031E
+#define WM_DWMNCRENDERINGCHANGED 0x031F
+#define WM_DWMCOLORIZATIONCOLORCHANGED 0x0320
+#define WM_DWMWINDOWMAXIMIZEDCHANGE 0x0321
+
+#define WM_GETTITLEBARINFOEX 0x033F
+
+#define WM_HANDHELDFIRST     0x0358
+#define WM_HANDHELDLAST      0x035F
+
+#define WM_AFXFIRST          0x0360
+#define WM_AFXLAST           0x037F
+
+#define WM_PENWINFIRST      0x0380
+#define WM_PENWINLAST       0x038F
+
+#define WM_APP               0x8000
+
+#define UNICODE_NOCHAR       0xFFFF
+
+/* MsgWaitForMultipleObjectsEx flags */
+#define MWMO_WAITALL         0x0001
+#define MWMO_ALERTABLE       0x0002
+#define MWMO_INPUTAVAILABLE  0x0004
+
+/* WM_GETDLGCODE values */
+#define DLGC_WANTARROWS      0x0001
+#define DLGC_WANTTAB         0x0002
+#define DLGC_WANTALLKEYS     0x0004
+#define DLGC_WANTMESSAGE     0x0004
+#define DLGC_HASSETSEL       0x0008
+#define DLGC_DEFPUSHBUTTON   0x0010
+#define DLGC_UNDEFPUSHBUTTON 0x0020
+#define DLGC_RADIOBUTTON     0x0040
+#define DLGC_WANTCHARS       0x0080
+#define DLGC_STATIC          0x0100
+#define DLGC_BUTTON          0x2000
+
+/* Standard dialog button IDs */
+#define IDOK                1
+#define IDCANCEL            2
+#define IDABORT             3
+#define IDRETRY             4
+#define IDIGNORE            5
+#define IDYES               6
+#define IDNO                7
+#define IDCLOSE             8
+#define IDHELP              9
+#define IDTRYAGAIN         10
+#define IDCONTINUE         11
+
+#ifndef IDTIMEOUT
+#define IDTIMEOUT       32000
+#endif
+
+/* Used for EnumDisplaySettingsEx */
+#define ENUM_CURRENT_SETTINGS  ((DWORD) -1)
+#define ENUM_REGISTRY_SETTINGS ((DWORD) -2)
+
+/****** Window classes ******/
+
+typedef struct tagCREATESTRUCTA
+{
+    LPVOID      lpCreateParams;
+    HINSTANCE hInstance;
+    HMENU     hMenu;
+    HWND      hwndParent;
+    INT       cy;
+    INT       cx;
+    INT       y;
+    INT       x;
+    LONG        style;
+    LPCSTR      lpszName;
+    LPCSTR      lpszClass;
+    DWORD       dwExStyle;
+} CREATESTRUCTA, *LPCREATESTRUCTA;
+
+typedef struct tagCREATESTRUCTW
+{
+    LPVOID      lpCreateParams;
+    HINSTANCE hInstance;
+    HMENU     hMenu;
+    HWND      hwndParent;
+    INT       cy;
+    INT       cx;
+    INT       y;
+    INT       x;
+    LONG        style;
+    LPCWSTR     lpszName;
+    LPCWSTR     lpszClass;
+    DWORD       dwExStyle;
+} CREATESTRUCTW, *LPCREATESTRUCTW;
+
+DECL_WINELIB_TYPE_AW(CREATESTRUCT)
+DECL_WINELIB_TYPE_AW(LPCREATESTRUCT)
+
+typedef struct tagPAINTSTRUCT
+{
+    HDC   hdc;
+    BOOL  fErase;
+    RECT  rcPaint;
+    BOOL  fRestore;
+    BOOL  fIncUpdate;
+    BYTE  rgbReserved[32];
+} PAINTSTRUCT, *PPAINTSTRUCT, *LPPAINTSTRUCT;
+
+typedef struct tagCLIENTCREATESTRUCT
+{
+    HMENU   hWindowMenu;
+    UINT    idFirstChild;
+} CLIENTCREATESTRUCT, *LPCLIENTCREATESTRUCT;
+
+
+typedef struct tagMDICREATESTRUCTA
+{
+    LPCSTR       szClass;
+    LPCSTR       szTitle;
+    HINSTANCE  hOwner;
+    INT        x;
+    INT        y;
+    INT        cx;
+    INT        cy;
+    DWORD        style;
+    LPARAM       lParam;
+} MDICREATESTRUCTA, *LPMDICREATESTRUCTA;
+
+typedef struct tagMDICREATESTRUCTW
+{
+    LPCWSTR      szClass;
+    LPCWSTR      szTitle;
+    HINSTANCE  hOwner;
+    INT        x;
+    INT        y;
+    INT        cx;
+    INT        cy;
+    DWORD        style;
+    LPARAM       lParam;
+} MDICREATESTRUCTW, *LPMDICREATESTRUCTW;
+
+DECL_WINELIB_TYPE_AW(MDICREATESTRUCT)
+DECL_WINELIB_TYPE_AW(LPMDICREATESTRUCT)
+
+#define MDITILE_VERTICAL     0x0000
+#define MDITILE_HORIZONTAL   0x0001
+#define MDITILE_SKIPDISABLED 0x0002
+#define MDITILE_ZORDER       0x0004
+
+#define MDIS_ALLCHILDSTYLES  0x0001
+
+typedef struct tagSTYLESTRUCT {
+    DWORD   styleOld;
+    DWORD   styleNew;
+} STYLESTRUCT, *LPSTYLESTRUCT;
+
+#define WC_DIALOG  MAKEINTATOM(0x8002)
+
+  /* Offsets for GetWindowLong() and GetWindowWord() */
+#define GWL_EXSTYLE         (-20)
+#define GWL_STYLE           (-16)
+#if !defined _WIN64 && !defined __WINESRC__
+# define GWL_USERDATA        (-21)
+# define GWL_ID              (-12)
+# define GWL_HWNDPARENT      (-8)
+# define GWL_HINSTANCE       (-6)
+# define GWL_WNDPROC         (-4)
+# define DWL_MSGRESULT       0
+# define DWL_DLGPROC         4
+# define DWL_USER            8
+#endif /* _WIN64 && __WINESRC__ */
+
+  /* Offsets for GetWindowLongPtr() and SetWindowLongPtr() */
+#define GWLP_USERDATA        (-21)
+#define GWLP_ID              (-12)
+#define GWLP_HWNDPARENT      (-8)
+#define GWLP_HINSTANCE       (-6)
+#define GWLP_WNDPROC         (-4)
+#define DWLP_MSGRESULT       0
+#define DWLP_DLGPROC         DWLP_MSGRESULT + sizeof(LRESULT)
+#define DWLP_USER            DWLP_DLGPROC + sizeof(DLGPROC)
+
+  /* GetWindow() constants */
+#define GW_HWNDFIRST	0
+#define GW_HWNDLAST	1
+#define GW_HWNDNEXT	2
+#define GW_HWNDPREV	3
+#define GW_OWNER	4
+#define GW_CHILD	5
+
+/* GetAncestor() constants */
+#define GA_PARENT       1
+#define GA_ROOT         2
+#define GA_ROOTOWNER    3
+
+  /* WM_GETMINMAXINFO struct */
+typedef struct tagMINMAXINFO
+{
+    POINT   ptReserved;
+    POINT   ptMaxSize;
+    POINT   ptMaxPosition;
+    POINT   ptMinTrackSize;
+    POINT   ptMaxTrackSize;
+} MINMAXINFO, *PMINMAXINFO, *LPMINMAXINFO;
+
+
+  /* RedrawWindow() flags */
+#define RDW_INVALIDATE       0x0001
+#define RDW_INTERNALPAINT    0x0002
+#define RDW_ERASE            0x0004
+#define RDW_VALIDATE         0x0008
+#define RDW_NOINTERNALPAINT  0x0010
+#define RDW_NOERASE          0x0020
+#define RDW_NOCHILDREN       0x0040
+#define RDW_ALLCHILDREN      0x0080
+#define RDW_UPDATENOW        0x0100
+#define RDW_ERASENOW         0x0200
+#define RDW_FRAME            0x0400
+#define RDW_NOFRAME          0x0800
+
+/* debug flags */
+#define DBGFILL_ALLOC  0xfd
+#define DBGFILL_FREE   0xfb
+#define DBGFILL_BUFFER 0xf9
+#define DBGFILL_STACK  0xf7
+
+  /* WM_WINDOWPOSCHANGING/CHANGED struct */
+typedef struct tagWINDOWPOS
+{
+    HWND  hwnd;
+    HWND  hwndInsertAfter;
+    INT   x;
+    INT   y;
+    INT   cx;
+    INT   cy;
+    UINT  flags;
+} WINDOWPOS, *PWINDOWPOS, *LPWINDOWPOS;
+
+
+  /* WM_MOUSEACTIVATE return values */
+#define MA_ACTIVATE             1
+#define MA_ACTIVATEANDEAT       2
+#define MA_NOACTIVATE           3
+#define MA_NOACTIVATEANDEAT     4
+
+  /* WM_ACTIVATE wParam values */
+#define WA_INACTIVE             0
+#define WA_ACTIVE               1
+#define WA_CLICKACTIVE          2
+
+/* WM_GETICON/WM_SETICON params values */
+#define ICON_SMALL              0
+#define ICON_BIG                1
+#define ICON_SMALL2             2
+
+  /* WM_NCCALCSIZE parameter structure */
+typedef struct
+{
+    RECT       rgrc[3];
+    WINDOWPOS *lppos;
+} NCCALCSIZE_PARAMS, *LPNCCALCSIZE_PARAMS;
+
+
+  /* WM_NCCALCSIZE return flags */
+#define WVR_ALIGNTOP        0x0010
+#define WVR_ALIGNLEFT       0x0020
+#define WVR_ALIGNBOTTOM     0x0040
+#define WVR_ALIGNRIGHT      0x0080
+#define WVR_HREDRAW         0x0100
+#define WVR_VREDRAW         0x0200
+#define WVR_REDRAW          (WVR_HREDRAW | WVR_VREDRAW)
+#define WVR_VALIDRECTS      0x0400
+
+  /* WM_NCHITTEST return codes */
+#define HTERROR             (-2)
+#define HTTRANSPARENT       (-1)
+#define HTNOWHERE           0
+#define HTCLIENT            1
+#define HTCAPTION           2
+#define HTSYSMENU           3
+#define HTSIZE              4
+#define HTMENU              5
+#define HTHSCROLL           6
+#define HTVSCROLL           7
+#define HTMINBUTTON         8
+#define HTMAXBUTTON         9
+#define HTLEFT              10
+#define HTRIGHT             11
+#define HTTOP               12
+#define HTTOPLEFT           13
+#define HTTOPRIGHT          14
+#define HTBOTTOM            15
+#define HTBOTTOMLEFT        16
+#define HTBOTTOMRIGHT       17
+#define HTBORDER            18
+#define HTGROWBOX           HTSIZE
+#define HTREDUCE            HTMINBUTTON
+#define HTZOOM              HTMAXBUTTON
+#define HTOBJECT            19
+#define HTCLOSE             20
+#define HTHELP              21
+#define HTSIZEFIRST         HTLEFT
+#define HTSIZELAST          HTBOTTOMRIGHT
+
+/* SendMessageTimeout flags */
+#define SMTO_NORMAL              0x0000
+#define SMTO_BLOCK               0x0001
+#define SMTO_ABORTIFHUNG         0x0002
+#define SMTO_NOTIMEOUTIFNOTHUNG  0x0008
+
+  /* WM_SYSCOMMAND parameters */
+#ifdef SC_SIZE /* at least HP-UX: already defined in /usr/include/sys/signal.h */
+#undef SC_SIZE
+#endif
+#define SC_SIZE         0xf000
+#define SC_MOVE         0xf010
+#define SC_MINIMIZE     0xf020
+#define SC_MAXIMIZE     0xf030
+#define SC_NEXTWINDOW   0xf040
+#define SC_PREVWINDOW   0xf050
+#define SC_CLOSE        0xf060
+#define SC_VSCROLL      0xf070
+#define SC_HSCROLL      0xf080
+#define SC_MOUSEMENU    0xf090
+#define SC_KEYMENU      0xf100
+#define SC_ARRANGE      0xf110
+#define SC_RESTORE      0xf120
+#define SC_TASKLIST     0xf130
+#define SC_SCREENSAVE   0xf140
+#define SC_HOTKEY       0xf150
+  /* Win32 4.0 */
+#define SC_DEFAULT      0xf160
+#define SC_MONITORPOWER 0xf170
+#define SC_CONTEXTHELP  0xf180
+#define SC_SEPARATOR    0xf00f
+
+/* obsolete names(SC_ICON and SC_ZOOM) */
+#define SC_ICON   SC_MINIMIZE
+#define SC_ZOOM   SC_MAXIMIZE
+
+#ifndef NOWINSTYLES
+#define CS_VREDRAW          0x00000001
+#define CS_HREDRAW          0x00000002
+#define CS_KEYCVTWINDOW     0x00000004
+#define CS_DBLCLKS          0x00000008
+#define CS_OWNDC            0x00000020
+#define CS_CLASSDC          0x00000040
+#define CS_PARENTDC         0x00000080
+#define CS_NOKEYCVT         0x00000100
+#define CS_NOCLOSE          0x00000200
+#define CS_SAVEBITS         0x00000800
+#define CS_BYTEALIGNCLIENT  0x00001000
+#define CS_BYTEALIGNWINDOW  0x00002000
+#define CS_GLOBALCLASS      0x00004000
+#define CS_IME              0x00010000
+#define CS_DROPSHADOW       0x00020000
+#endif /* NOWINSTYLES */
+
+#define PRF_CHECKVISIBLE    0x00000001L
+#define PRF_NONCLIENT       0x00000002L
+#define PRF_CLIENT          0x00000004L
+#define PRF_ERASEBKGND      0x00000008L
+#define PRF_CHILDREN        0x00000010L
+#define PRF_OWNED           0x00000020L
+
+  /* Offsets for GetClassLong() and GetClassWord() */
+#if !defined _WIN64 && !defined __WINESRC__
+# define GCL_MENUNAME       (-8)
+# define GCL_HBRBACKGROUND  (-10)
+# define GCL_HCURSOR        (-12)
+# define GCL_HICON          (-14)
+# define GCL_HMODULE        (-16)
+# define GCL_WNDPROC        (-24)
+# define GCL_HICONSM        (-34)
+#endif /* _WIN64 && __WINESRC__ */
+
+#define GCL_CBWNDEXTRA      (-18)
+#define GCL_CBCLSEXTRA      (-20)
+#define GCL_STYLE           (-26)
+#define GCW_ATOM            (-32)
+
+#define GCLP_MENUNAME       (-8)
+#define GCLP_HBRBACKGROUND  (-10)
+#define GCLP_HCURSOR        (-12)
+#define GCLP_HICON          (-14)
+#define GCLP_HMODULE        (-16)
+#define GCLP_WNDPROC        (-24)
+#define GCLP_HICONSM        (-34)
+
+/* BroadcastSystemMessage flags */
+#define BSM_ALLCOMPONENTS        0x00000000
+#define BSM_VXDS                 0x00000001
+#define BSM_NETDRIVER            0x00000002
+#define BSM_INSTALLABLEDRIVERS   0x00000004
+#define BSM_APPLICATIONS         0x00000008
+#define BSM_ALLDESKTOPS          0x00000010
+
+#define BSF_QUERY                0x00000001
+#define BSF_IGNORECURRENTTASK    0x00000002
+#define BSF_FLUSHDISK            0x00000004
+#define BSF_NOHANG               0x00000008
+#define BSF_POSTMESSAGE          0x00000010
+#define BSF_FORCEIFHUNG          0x00000020
+#define BSF_NOTIMEOUTIFNOTHUNG   0x00000040
+#define BSF_ALLOWSFW             0x00000080
+#define BSF_SENDNOTIFYMESSAGE    0x00000100
+#define BSF_RETURNHDESK          0x00000200
+#define BSF_LUID                 0x00000400
+
+#define BROADCAST_QUERY_DENY     0x424D5144
+
+/***** Window hooks *****/
+
+  /* Hook values */
+#define WH_MIN		    (-1)
+#define WH_MSGFILTER	    (-1)
+#define WH_JOURNALRECORD    0
+#define WH_JOURNALPLAYBACK  1
+#define WH_KEYBOARD	    2
+#define WH_GETMESSAGE	    3
+#define WH_CALLWNDPROC	    4
+#define WH_CBT		    5
+#define WH_SYSMSGFILTER	    6
+#define WH_MOUSE	    7
+#define WH_HARDWARE	    8
+#define WH_DEBUG	    9
+#define WH_SHELL            10
+#define WH_FOREGROUNDIDLE   11
+#define WH_CALLWNDPROCRET   12
+#define WH_KEYBOARD_LL      13
+#define WH_MOUSE_LL         14
+#define WH_MAX              14
+
+#define WH_MINHOOK          WH_MIN
+#define WH_MAXHOOK          WH_MAX
+
+  /* Hook action codes */
+#define HC_ACTION           0
+#define HC_GETNEXT          1
+#define HC_SKIP             2
+#define HC_NOREMOVE         3
+#define HC_NOREM            HC_NOREMOVE
+#define HC_SYSMODALON       4
+#define HC_SYSMODALOFF      5
+
+  /* CallMsgFilter() values */
+#define MSGF_DIALOGBOX      0
+#define MSGF_MESSAGEBOX     1
+#define MSGF_MENU           2
+#define MSGF_MOVE           3
+#define MSGF_SIZE           4
+#define MSGF_SCROLLBAR      5
+#define MSGF_NEXTWINDOW     6
+#define MSGF_MAX            8
+#define MSGF_USER           0x1000
+#define MSGF_DDEMGR         0x8001
+
+typedef struct tagWNDCLASSA
+{
+    UINT      style;
+    WNDPROC   lpfnWndProc;
+    INT       cbClsExtra;
+    INT       cbWndExtra;
+    HINSTANCE hInstance;
+    HICON     hIcon;
+    HCURSOR   hCursor;
+    HBRUSH    hbrBackground;
+    LPCSTR      lpszMenuName;
+    LPCSTR      lpszClassName;
+} WNDCLASSA, *PWNDCLASSA, *LPWNDCLASSA;
+
+typedef struct tagWNDCLASSW
+{
+    UINT      style;
+    WNDPROC   lpfnWndProc;
+    INT       cbClsExtra;
+    INT       cbWndExtra;
+    HINSTANCE hInstance;
+    HICON     hIcon;
+    HCURSOR   hCursor;
+    HBRUSH    hbrBackground;
+    LPCWSTR     lpszMenuName;
+    LPCWSTR     lpszClassName;
+} WNDCLASSW, *PWNDCLASSW, *LPWNDCLASSW;
+
+DECL_WINELIB_TYPE_AW(WNDCLASS)
+DECL_WINELIB_TYPE_AW(PWNDCLASS)
+DECL_WINELIB_TYPE_AW(LPWNDCLASS)
+
+typedef struct tagCOPYDATASTRUCT {
+    ULONG_PTR dwData;
+    DWORD cbData;
+    PVOID lpData;
+} COPYDATASTRUCT, *PCOPYDATASTRUCT;
+
+typedef struct tagMDINEXTMENU {
+    HMENU hmenuIn;
+    HMENU hmenuNext;
+    HWND  hwndNext;
+} MDINEXTMENU, *PMDINEXTMENU, *LPMDINEXTMENU;
+
+typedef struct tagMULTIKEYHELPA
+{
+    DWORD   mkSize;
+    CHAR    mkKeylist;
+    CHAR    szKeyphrase[1];
+} MULTIKEYHELPA, *PMULTIKEYHELPA, *LPMULTIKEYHELPA;
+
+typedef struct tagMULTIKEYHELPW
+{
+    DWORD   mkSize;
+    WCHAR   mkKeylist;
+    WCHAR   szKeyphrase[1];
+} MULTIKEYHELPW, *PMULTIKEYHELPW, *LPMULTIKEYHELPW;
+
+DECL_WINELIB_TYPE_AW(MULTIKEYHELP)
+DECL_WINELIB_TYPE_AW(PMULTIKEYHELP)
+DECL_WINELIB_TYPE_AW(LPMULTIKEYHELP)
+
+typedef struct tagHELPWININFOA {
+	int wStructSize;
+	int x;
+	int y;
+	int dx;
+	int dy;
+	int wMax;
+	CHAR rgchMember[2];
+} HELPWININFOA, *PHELPWININFOA, *LPHELPWININFOA;
+
+typedef struct tagHELPWININFOW {
+	int wStructSize;
+	int x;
+	int y;
+	int dx;
+	int dy;
+	int wMax;
+	WCHAR rgchMember[2];
+} HELPWININFOW, *PHELPWININFOW, *LPHELPWININFOW;
+
+DECL_WINELIB_TYPE_AW(HELPWININFO)
+DECL_WINELIB_TYPE_AW(PHELPWININFO)
+DECL_WINELIB_TYPE_AW(LPHELPWININFO)
+
+#define HELP_CONTEXT        0x0001
+#define HELP_QUIT           0x0002
+#define HELP_INDEX          0x0003
+#define HELP_CONTENTS       0x0003
+#define HELP_HELPONHELP     0x0004
+#define HELP_SETINDEX       0x0005
+#define HELP_SETCONTENTS    0x0005
+#define HELP_CONTEXTPOPUP   0x0008
+#define HELP_FORCEFILE      0x0009
+#define HELP_KEY            0x0101
+#define HELP_COMMAND        0x0102
+#define HELP_PARTIALKEY     0x0105
+#define HELP_MULTIKEY       0x0201
+#define HELP_SETWINPOS      0x0203
+#define HELP_CONTEXTMENU    0x000a
+#define HELP_FINDER	    0x000b
+#define HELP_WM_HELP	    0x000c
+#define HELP_SETPOPUP_POS   0x000d
+
+#define HELP_TCARD	    0x8000
+#define HELP_TCARD_DATA	    0x0010
+#define HELP_TCARD_OTHER_CALLER 0x0011
+
+
+#define IDH_NO_HELP             28440
+#define IDH_MISSING_CONTEXT     28441
+#define IDH_GENERIC_HELP_BUTTON 28442
+#define IDH_OK                  28443
+#define IDH_CANCEL              28444
+#define IDH_HELP                28445
+
+
+     /* ChangeDisplaySettings return codes */
+
+#define DISP_CHANGE_SUCCESSFUL 0
+#define DISP_CHANGE_RESTART    1
+#define DISP_CHANGE_FAILED     (-1)
+#define DISP_CHANGE_BADMODE    (-2)
+#define DISP_CHANGE_NOTUPDATED (-3)
+#define DISP_CHANGE_BADFLAGS   (-4)
+#define DISP_CHANGE_BADPARAM   (-5)
+#define DISP_CHANGE_BADDUALVIEW (-6)
+
+/* ChangeDisplaySettings.dwFlags */
+#define	CDS_UPDATEREGISTRY	0x00000001
+#define	CDS_TEST		0x00000002
+#define	CDS_FULLSCREEN		0x00000004
+#define	CDS_GLOBAL		0x00000008
+#define	CDS_SET_PRIMARY		0x00000010
+#define	CDS_VIDEOPARAMETERS	0x00000020
+#define	CDS_NORESET		0x10000000
+#define	CDS_SETRECT		0x20000000
+#define	CDS_RESET		0x40000000
+
+typedef struct tagWNDCLASSEXA
+{
+    UINT      cbSize;
+    UINT      style;
+    WNDPROC   lpfnWndProc;
+    INT       cbClsExtra;
+    INT       cbWndExtra;
+    HINSTANCE hInstance;
+    HICON     hIcon;
+    HCURSOR   hCursor;
+    HBRUSH    hbrBackground;
+    LPCSTR      lpszMenuName;
+    LPCSTR      lpszClassName;
+    HICON     hIconSm;
+} WNDCLASSEXA, *PWNDCLASSEXA, *LPWNDCLASSEXA;
+
+typedef struct tagWNDCLASSEXW
+{
+    UINT      cbSize;
+    UINT      style;
+    WNDPROC   lpfnWndProc;
+    INT       cbClsExtra;
+    INT       cbWndExtra;
+    HINSTANCE hInstance;
+    HICON     hIcon;
+    HCURSOR   hCursor;
+    HBRUSH    hbrBackground;
+    LPCWSTR     lpszMenuName;
+    LPCWSTR     lpszClassName;
+    HICON     hIconSm;
+} WNDCLASSEXW, *PWNDCLASSEXW, *LPWNDCLASSEXW;
+
+DECL_WINELIB_TYPE_AW(WNDCLASSEX)
+DECL_WINELIB_TYPE_AW(PWNDCLASSEX)
+DECL_WINELIB_TYPE_AW(LPWNDCLASSEX)
+
+typedef struct tagMSG
+{
+    HWND    hwnd;
+    UINT    message;
+    WPARAM  wParam;
+    LPARAM    lParam;
+    DWORD     time;
+    POINT   pt;
+} MSG, *PMSG, *LPMSG;
+
+#define POINTSTOPOINT(pt, pts) { (pt).x = (pts).x; (pt).y = (pts).y; }
+#define POINTTOPOINTS(pt)      (MAKELONG((short)((pt).x), (short)((pt).y)))
+
+#define MAKELPARAM(low,high)   ((LPARAM)MAKELONG(low,high))
+#define MAKEWPARAM(low,high)   ((WPARAM)MAKELONG(low,high))
+#define MAKELRESULT(low,high)  ((LRESULT)MAKELONG(low,high))
+
+/* Cursors / Icons */
+
+typedef struct _ICONINFO {
+	BOOL		fIcon;
+	DWORD		xHotspot;
+	DWORD		yHotspot;
+	HBITMAP	hbmMask;
+	HBITMAP	hbmColor;
+} ICONINFO, *PICONINFO;
+
+
+typedef struct tagCURSORINFO
+{
+    DWORD cbSize;
+    DWORD flags;
+    HCURSOR hCursor;
+    POINT ptScreenPos;
+} CURSORINFO, *PCURSORINFO, *LPCURSORINFO;
+
+#define CURSOR_SHOWING 0x00000001
+
+/* this is the 6 byte accel struct used in Win32 when presented to the user */
+typedef struct tagACCEL
+{
+#ifdef WORDS_BIGENDIAN
+    WORD   fVirt;
+    WORD   key;
+    DWORD  cmd;
+#else
+    BYTE   fVirt;
+    WORD   key;
+    WORD   cmd;
+#endif
+} ACCEL, *LPACCEL;
+
+
+/* Flags for TrackPopupMenu */
+#define TPM_LEFTBUTTON    0x0000
+#define TPM_RECURSE       0x0001
+#define TPM_RIGHTBUTTON   0x0002
+#define TPM_LEFTALIGN     0x0000
+#define TPM_CENTERALIGN   0x0004
+#define TPM_RIGHTALIGN    0x0008
+#define TPM_TOPALIGN      0x0000
+#define TPM_VCENTERALIGN  0x0010
+#define TPM_BOTTOMALIGN   0x0020
+#define TPM_HORIZONTAL    0x0000
+#define TPM_VERTICAL      0x0040
+#define TPM_NONOTIFY      0x0080
+#define TPM_RETURNCMD     0x0100
+#define TPM_HORPOSANIMATION 0x0400
+#define TPM_HORNEGANIMATION 0x0800
+#define TPM_VERPOSANIMATION 0x1000
+#define TPM_VERNEGANIMATION 0x2000
+#define TPM_NOANIMATION     0x4000
+#define TPM_LAYOUTRTL       0x8000
+
+typedef struct tagTPMPARAMS
+{
+    UINT   cbSize;
+    RECT   rcExclude;
+} TPMPARAMS, *LPTPMPARAMS;
+
+
+/*
+ * Combobox information
+ */
+typedef struct tagCOMBOBOXINFO
+{
+    DWORD cbSize;
+    RECT  rcItem;
+    RECT  rcButton;
+    DWORD stateButton;
+    HWND  hwndCombo;
+    HWND  hwndItem;
+    HWND  hwndList;
+} COMBOBOXINFO, *PCOMBOBOXINFO, *LPCOMBOBOXINFO;
+
+typedef struct tagMENUITEMINFOA {
+  UINT    cbSize;
+  UINT    fMask;
+  UINT    fType;
+  UINT    fState;
+  UINT    wID;
+  HMENU   hSubMenu;
+  HBITMAP hbmpChecked;
+  HBITMAP hbmpUnchecked;
+  ULONG_PTR dwItemData;
+  LPSTR   dwTypeData;
+  UINT    cch;
+  HBITMAP hbmpItem;
+} MENUITEMINFOA, *LPMENUITEMINFOA;
+
+typedef struct tagMENUITEMINFOW {
+  UINT    cbSize;
+  UINT    fMask;
+  UINT    fType;
+  UINT    fState;
+  UINT    wID;
+  HMENU   hSubMenu;
+  HBITMAP hbmpChecked;
+  HBITMAP hbmpUnchecked;
+  ULONG_PTR dwItemData;
+  LPWSTR  dwTypeData;
+  UINT    cch;
+  HBITMAP hbmpItem;
+} MENUITEMINFOW, *LPMENUITEMINFOW;
+
+DECL_WINELIB_TYPE_AW(MENUITEMINFO)
+DECL_WINELIB_TYPE_AW(LPMENUITEMINFO)
+typedef const MENUITEMINFOA *LPCMENUITEMINFOA;
+typedef const MENUITEMINFOW *LPCMENUITEMINFOW;
+DECL_WINELIB_TYPE_AW(LPCMENUITEMINFO)
+
+typedef struct tagMENUBARINFO {
+  DWORD cbSize;
+  RECT  rcBar;
+  HMENU hMenu;
+  HWND  hwndMenu;
+  BOOL  fBarFocused:1;
+  BOOL  fFocused:1;
+} MENUBARINFO, *PMENUBARINFO, *LPMENUBARINFO;
+
+typedef struct tagMENUINFO {
+  DWORD   cbSize;
+  DWORD   fMask;
+  DWORD   dwStyle;
+  UINT    cyMax;
+  HBRUSH  hbrBack;
+  DWORD   dwContextHelpID;
+  ULONG_PTR dwMenuData;
+} MENUINFO, *LPMENUINFO;
+
+typedef const MENUINFO *LPCMENUINFO;
+
+#define MIM_MAXHEIGHT		0x00000001
+#define MIM_BACKGROUND		0x00000002
+#define MIM_HELPID		0x00000004
+#define MIM_MENUDATA		0x00000008
+#define MIM_STYLE		0x00000010
+#define MIM_APPLYTOSUBMENUS	0x80000000
+
+#define MNS_NOCHECK             0x80000000
+#define MNS_MODELESS            0x40000000
+#define MNS_DRAGDROP            0x20000000
+#define MNS_AUTODISMISS         0x10000000
+#define MNS_NOTIFYBYPOS         0x08000000
+#define MNS_CHECKORBMP          0x04000000
+
+typedef struct {
+  WORD versionNumber;
+  WORD offset;
+} MENUITEMTEMPLATEHEADER, *PMENUITEMTEMPLATEHEADER;
+
+
+typedef struct {
+  WORD mtOption;
+  WORD mtID;
+  WCHAR mtString[1];
+} MENUITEMTEMPLATE, *PMENUITEMTEMPLATE;
+
+
+typedef VOID   MENUTEMPLATE;
+typedef PVOID *LPMENUTEMPLATE;
+
+/* Field specifiers for MENUITEMINFO[AW] type.  */
+#define MIIM_STATE       0x00000001
+#define MIIM_ID          0x00000002
+#define MIIM_SUBMENU     0x00000004
+#define MIIM_CHECKMARKS  0x00000008
+#define MIIM_TYPE        0x00000010
+#define MIIM_DATA        0x00000020
+#define MIIM_STRING      0x00000040
+#define MIIM_BITMAP      0x00000080
+#define MIIM_FTYPE       0x00000100
+
+#define HBMMENU_CALLBACK	((HBITMAP) -1)
+#define HBMMENU_SYSTEM		((HBITMAP)  1)
+#define HBMMENU_MBAR_RESTORE	((HBITMAP)  2)
+#define HBMMENU_MBAR_MINIMIZE	((HBITMAP)  3)
+#define HBMMENU_MBAR_CLOSE	((HBITMAP)  5)
+#define HBMMENU_MBAR_CLOSE_D	((HBITMAP)  6)
+#define HBMMENU_MBAR_MINIMIZE_D	((HBITMAP)  7)
+#define HBMMENU_POPUP_CLOSE	((HBITMAP)  8)
+#define HBMMENU_POPUP_RESTORE	((HBITMAP)  9)
+#define HBMMENU_POPUP_MAXIMIZE	((HBITMAP) 10)
+#define HBMMENU_POPUP_MINIMIZE	((HBITMAP) 11)
+
+/* WM_H/VSCROLL commands */
+#define SB_LINEUP           0
+#define SB_LINELEFT         0
+#define SB_LINEDOWN         1
+#define SB_LINERIGHT        1
+#define SB_PAGEUP           2
+#define SB_PAGELEFT         2
+#define SB_PAGEDOWN         3
+#define SB_PAGERIGHT        3
+#define SB_THUMBPOSITION    4
+#define SB_THUMBTRACK       5
+#define SB_TOP              6
+#define SB_LEFT             6
+#define SB_BOTTOM           7
+#define SB_RIGHT            7
+#define SB_ENDSCROLL        8
+
+/* Scroll bar selection constants */
+#define SB_HORZ             0
+#define SB_VERT             1
+#define SB_CTL              2
+#define SB_BOTH             3
+
+/* Scrollbar styles */
+#ifndef NOWINSTYLES
+#define SBS_HORZ                    0x0000L
+#define SBS_VERT                    0x0001L
+#define SBS_TOPALIGN                0x0002L
+#define SBS_LEFTALIGN               0x0002L
+#define SBS_BOTTOMALIGN             0x0004L
+#define SBS_RIGHTALIGN              0x0004L
+#define SBS_SIZEBOXTOPLEFTALIGN     0x0002L
+#define SBS_SIZEBOXBOTTOMRIGHTALIGN 0x0004L
+#define SBS_SIZEBOX                 0x0008L
+#define SBS_SIZEGRIP                0x0010L
+#endif /* NOWINSTYLES */
+
+/* EnableScrollBar() flags */
+#define ESB_ENABLE_BOTH     0x0000
+#define ESB_DISABLE_BOTH    0x0003
+
+#define ESB_DISABLE_LEFT    0x0001
+#define ESB_DISABLE_RIGHT   0x0002
+
+#define ESB_DISABLE_UP      0x0001
+#define ESB_DISABLE_DOWN    0x0002
+
+#define ESB_DISABLE_LTUP    ESB_DISABLE_LEFT
+#define ESB_DISABLE_RTDN    ESB_DISABLE_RIGHT
+
+/* Win32 button control messages */
+#define BM_GETCHECK          0x00f0
+#define BM_SETCHECK          0x00f1
+#define BM_GETSTATE          0x00f2
+#define BM_SETSTATE          0x00f3
+#define BM_SETSTYLE          0x00f4
+#define BM_CLICK             0x00f5
+#define BM_GETIMAGE          0x00f6
+#define BM_SETIMAGE          0x00f7
+/* Winelib button control messages */
+
+/* Button notification codes */
+#define BN_CLICKED             0
+#define BN_PAINT               1
+#define BN_HILITE              2
+#define BN_PUSHED              BN_HILITE
+#define BN_UNHILITE            3
+#define BN_UNPUSHED            BN_UNHILITE
+#define BN_DISABLE             4
+#define BN_DOUBLECLICKED       5
+#define BN_DBLCLK              BN_DOUBLECLICKED
+#define BN_SETFOCUS            6
+#define BN_KILLFOCUS           7
+
+/* Button states */
+#define BST_UNCHECKED        0x0000
+#define BST_CHECKED          0x0001
+#define BST_INDETERMINATE    0x0002
+#define BST_PUSHED           0x0004
+#define BST_FOCUS            0x0008
+
+/* Static Control Styles */
+#define SS_LEFT             0x00000000L
+#define SS_CENTER           0x00000001L
+#define SS_RIGHT            0x00000002L
+#define SS_ICON             0x00000003L
+#define SS_BLACKRECT        0x00000004L
+#define SS_GRAYRECT         0x00000005L
+#define SS_WHITERECT        0x00000006L
+#define SS_BLACKFRAME       0x00000007L
+#define SS_GRAYFRAME        0x00000008L
+#define SS_WHITEFRAME       0x00000009L
+#define SS_USERITEM         0x0000000AL
+#define SS_SIMPLE           0x0000000BL
+#define SS_LEFTNOWORDWRAP   0x0000000CL
+#define SS_OWNERDRAW        0x0000000DL
+#define SS_BITMAP           0x0000000EL
+#define SS_ENHMETAFILE      0x0000000FL
+#define SS_ETCHEDHORZ       0x00000010L
+#define SS_ETCHEDVERT       0x00000011L
+#define SS_ETCHEDFRAME      0x00000012L
+#define SS_TYPEMASK         0x0000001FL
+
+#define SS_REALSIZECONTROL  0x00000040L
+#define SS_NOPREFIX         0x00000080L
+#define SS_NOTIFY           0x00000100L
+#define SS_CENTERIMAGE      0x00000200L
+#define SS_RIGHTJUST        0x00000400L
+#define SS_REALSIZEIMAGE    0x00000800L
+#define SS_SUNKEN           0x00001000L
+#define SS_EDITCONTROL      0x00002000L
+#define SS_ENDELLIPSIS      0x00004000L
+#define SS_PATHELLIPSIS     0x00008000L
+#define SS_WORDELLIPSIS     0x0000C000L
+#define SS_ELLIPSISMASK     0x0000C000L
+
+/* Static Control Messages */
+#define STM_SETICON       0x0170
+#define STM_GETICON       0x0171
+#define STM_SETIMAGE        0x0172
+#define STM_GETIMAGE        0x0173
+#define STM_MSGMAX          0x0174
+
+#define STN_CLICKED         0
+#define STN_DBLCLK          1
+#define STN_ENABLE          2
+#define STN_DISABLE         3
+
+/* Scrollbar messages */
+#define SBM_SETPOS             0x00e0
+#define SBM_GETPOS             0x00e1
+#define SBM_SETRANGE           0x00e2
+#define SBM_GETRANGE           0x00e3
+#define SBM_ENABLE_ARROWS      0x00e4
+#define SBM_SETRANGEREDRAW     0x00e6
+#define SBM_SETSCROLLINFO      0x00e9
+#define SBM_GETSCROLLINFO      0x00ea
+#define SBM_GETSCROLLBARINFO   0x00eb
+
+/* Scrollbar info */
+typedef struct tagSCROLLINFO
+{
+    UINT    cbSize;
+    UINT    fMask;
+    INT     nMin;
+    INT     nMax;
+    UINT    nPage;
+    INT     nPos;
+    INT     nTrackPos;
+} SCROLLINFO, *LPSCROLLINFO;
+
+typedef const SCROLLINFO *LPCSCROLLINFO;
+
+#define CCHILDREN_SCROLLBAR 5
+
+typedef struct tagSCROLLBARINFO
+{
+    DWORD   cbSize;             /* Size of SCROLLBARINFO struct */
+    RECT    rcScrollBar;        /* Coordinates of the scroll bar */
+    INT     dxyLineButton;      /* Height or width */
+    INT     xyThumbTop;         /* Position of the top or the left */
+    INT     xyThumbBottom;      /* Position of the bottom or the right */
+    INT     reserved;
+    DWORD   rgstate[CCHILDREN_SCROLLBAR+1];
+} SCROLLBARINFO, *PSCROLLBARINFO, *LPSCROLLBARINFO;
+
+/* GetScrollInfo() flags */
+#define SIF_RANGE           0x0001
+#define SIF_PAGE            0x0002
+#define SIF_POS             0x0004
+#define SIF_DISABLENOSCROLL 0x0008
+#define SIF_TRACKPOS        0x0010
+#define SIF_ALL             (SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS)
+
+/* Listbox styles */
+#ifndef NOWINSTYLES
+#define LBS_NOTIFY               0x0001
+#define LBS_SORT                 0x0002
+#define LBS_NOREDRAW             0x0004
+#define LBS_MULTIPLESEL          0x0008
+#define LBS_OWNERDRAWFIXED       0x0010
+#define LBS_OWNERDRAWVARIABLE    0x0020
+#define LBS_HASSTRINGS           0x0040
+#define LBS_USETABSTOPS          0x0080
+#define LBS_NOINTEGRALHEIGHT     0x0100
+#define LBS_MULTICOLUMN          0x0200
+#define LBS_WANTKEYBOARDINPUT    0x0400
+#define LBS_EXTENDEDSEL          0x0800
+#define LBS_DISABLENOSCROLL      0x1000
+#define LBS_NODATA               0x2000
+#define LBS_NOSEL                0x4000
+#define LBS_COMBOBOX             0x8000
+#define LBS_STANDARD  (LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER)
+#endif /* NOWINSTYLES */
+
+/* Listbox messages */
+#define LB_ADDSTRING           0x0180
+#define LB_INSERTSTRING        0x0181
+#define LB_DELETESTRING        0x0182
+#define LB_SELITEMRANGEEX      0x0183
+#define LB_RESETCONTENT        0x0184
+#define LB_SETSEL              0x0185
+#define LB_SETCURSEL           0x0186
+#define LB_GETSEL              0x0187
+#define LB_GETCURSEL           0x0188
+#define LB_GETTEXT             0x0189
+#define LB_GETTEXTLEN          0x018a
+#define LB_GETCOUNT            0x018b
+#define LB_SELECTSTRING        0x018c
+#define LB_DIR                 0x018d
+#define LB_GETTOPINDEX         0x018e
+#define LB_FINDSTRING          0x018f
+#define LB_GETSELCOUNT         0x0190
+#define LB_GETSELITEMS         0x0191
+#define LB_SETTABSTOPS         0x0192
+#define LB_GETHORIZONTALEXTENT 0x0193
+#define LB_SETHORIZONTALEXTENT 0x0194
+#define LB_SETCOLUMNWIDTH      0x0195
+#define LB_ADDFILE             0x0196
+#define LB_SETTOPINDEX         0x0197
+#define LB_GETITEMRECT         0x0198
+#define LB_GETITEMDATA         0x0199
+#define LB_SETITEMDATA         0x019a
+#define LB_SELITEMRANGE        0x019b
+#define LB_SETANCHORINDEX      0x019c
+#define LB_GETANCHORINDEX      0x019d
+#define LB_SETCARETINDEX       0x019e
+#define LB_GETCARETINDEX       0x019f
+#define LB_SETITEMHEIGHT       0x01a0
+#define LB_GETITEMHEIGHT       0x01a1
+#define LB_FINDSTRINGEXACT     0x01a2
+#define LB_CARETON             0x01a3
+#define LB_CARETOFF            0x01a4
+#define LB_SETLOCALE           0x01a5
+#define LB_GETLOCALE           0x01a6
+#define LB_SETCOUNT            0x01a7
+#define LB_INITSTORAGE         0x01a8
+#define LB_ITEMFROMPOINT       0x01a9
+#define LB_GETLISTBOXINFO      0x01b2
+#define LB_MSGMAX              0x01b3
+
+/* Listbox notification codes */
+#define LBN_ERRSPACE        (-2)
+#define LBN_SELCHANGE       1
+#define LBN_DBLCLK          2
+#define LBN_SELCANCEL       3
+#define LBN_SETFOCUS        4
+#define LBN_KILLFOCUS       5
+
+/* Listbox message return values */
+#define LB_OKAY             0
+#define LB_ERR              (-1)
+#define LB_ERRSPACE         (-2)
+
+#define LB_CTLCODE          0L
+
+/* Combo box styles */
+#ifndef NOWINSTYLES
+#define CBS_SIMPLE            0x0001L
+#define CBS_DROPDOWN          0x0002L
+#define CBS_DROPDOWNLIST      0x0003L
+#define CBS_OWNERDRAWFIXED    0x0010L
+#define CBS_OWNERDRAWVARIABLE 0x0020L
+#define CBS_AUTOHSCROLL       0x0040L
+#define CBS_OEMCONVERT        0x0080L
+#define CBS_SORT              0x0100L
+#define CBS_HASSTRINGS        0x0200L
+#define CBS_NOINTEGRALHEIGHT  0x0400L
+#define CBS_DISABLENOSCROLL   0x0800L
+
+#define CBS_UPPERCASE	      0x2000L
+#define CBS_LOWERCASE	      0x4000L
+#endif /* NOWINSTYLES */
+
+/* Combo box messages */
+#define CB_GETEDITSEL            0x0140
+#define CB_LIMITTEXT             0x0141
+#define CB_SETEDITSEL            0x0142
+#define CB_ADDSTRING             0x0143
+#define CB_DELETESTRING          0x0144
+#define CB_DIR                   0x0145
+#define CB_GETCOUNT              0x0146
+#define CB_GETCURSEL             0x0147
+#define CB_GETLBTEXT             0x0148
+#define CB_GETLBTEXTLEN          0x0149
+#define CB_INSERTSTRING          0x014a
+#define CB_RESETCONTENT          0x014b
+#define CB_FINDSTRING            0x014c
+#define CB_SELECTSTRING          0x014d
+#define CB_SETCURSEL             0x014e
+#define CB_SHOWDROPDOWN          0x014f
+#define CB_GETITEMDATA           0x0150
+#define CB_SETITEMDATA           0x0151
+#define CB_GETDROPPEDCONTROLRECT 0x0152
+#define CB_SETITEMHEIGHT         0x0153
+#define CB_GETITEMHEIGHT         0x0154
+#define CB_SETEXTENDEDUI         0x0155
+#define CB_GETEXTENDEDUI         0x0156
+#define CB_GETDROPPEDSTATE       0x0157
+#define CB_FINDSTRINGEXACT       0x0158
+#define CB_SETLOCALE             0x0159
+#define CB_GETLOCALE             0x015a
+#define CB_GETTOPINDEX           0x015b
+#define CB_SETTOPINDEX           0x015c
+#define CB_GETHORIZONTALEXTENT   0x015d
+#define CB_SETHORIZONTALEXTENT   0x015e
+#define CB_GETDROPPEDWIDTH       0x015f
+#define CB_SETDROPPEDWIDTH       0x0160
+#define CB_INITSTORAGE           0x0161
+#define CB_MULTIPLEADDSTRING     0x0163
+#define CB_GETCOMBOBOXINFO       0x0164
+#define CB_MSGMAX                0x0165
+
+/* Combo box notification codes */
+#define CBN_ERRSPACE        (-1)
+#define CBN_SELCHANGE       1
+#define CBN_DBLCLK          2
+#define CBN_SETFOCUS        3
+#define CBN_KILLFOCUS       4
+#define CBN_EDITCHANGE      5
+#define CBN_EDITUPDATE      6
+#define CBN_DROPDOWN        7
+#define CBN_CLOSEUP         8
+#define CBN_SELENDOK        9
+#define CBN_SELENDCANCEL    10
+
+/* Combo box message return values */
+#define CB_OKAY             0
+#define CB_ERR              (-1)
+#define CB_ERRSPACE         (-2)
+
+#define MB_OK			0x00000000
+#define MB_OKCANCEL		0x00000001
+#define MB_ABORTRETRYIGNORE	0x00000002
+#define MB_YESNOCANCEL		0x00000003
+#define MB_YESNO		0x00000004
+#define MB_RETRYCANCEL		0x00000005
+#define MB_CANCELTRYCONTINUE	0x00000006
+#define MB_TYPEMASK		0x0000000F
+
+#define MB_ICONHAND		0x00000010
+#define MB_ICONQUESTION		0x00000020
+#define MB_ICONEXCLAMATION	0x00000030
+#define MB_ICONASTERISK		0x00000040
+#define	MB_USERICON		0x00000080
+#define MB_ICONMASK		0x000000F0
+
+#define MB_ICONINFORMATION	MB_ICONASTERISK
+#define MB_ICONSTOP		MB_ICONHAND
+#define MB_ICONWARNING		MB_ICONEXCLAMATION
+#define MB_ICONERROR		MB_ICONHAND
+
+#define MB_DEFBUTTON1		0x00000000
+#define MB_DEFBUTTON2		0x00000100
+#define MB_DEFBUTTON3		0x00000200
+#define MB_DEFBUTTON4		0x00000300
+#define MB_DEFMASK		0x00000F00
+
+#define MB_APPLMODAL		0x00000000
+#define MB_SYSTEMMODAL		0x00001000
+#define MB_TASKMODAL		0x00002000
+#define MB_MODEMASK		0x00003000
+
+#define MB_HELP			0x00004000
+#define MB_NOFOCUS		0x00008000
+#define MB_MISCMASK		0x0000C000
+
+#define MB_SETFOREGROUND	0x00010000
+#define MB_DEFAULT_DESKTOP_ONLY	0x00020000
+#define MB_SERVICE_NOTIFICATION	0x00040000
+#define MB_TOPMOST		0x00040000
+#define MB_RIGHT		0x00080000
+#define MB_RTLREADING		0x00100000
+
+#define	HELPINFO_WINDOW		0x0001
+#define	HELPINFO_MENUITEM	0x0002
+
+/* Structure pointed to by lParam of WM_HELP */
+typedef struct tagHELPINFO
+{
+    UINT	cbSize;		/* Size in bytes of this struct  */
+    INT	iContextType;	/* Either HELPINFO_WINDOW or HELPINFO_MENUITEM */
+    INT	iCtrlId;	/* Control Id or a Menu item Id. */
+    HANDLE	hItemHandle;	/* hWnd of control or hMenu.     */
+    DWORD_PTR	dwContextId;	/* Context Id associated with this item */
+    POINT	MousePos;	/* Mouse Position in screen co-ordinates */
+}  HELPINFO,*LPHELPINFO;
+
+typedef void (CALLBACK *MSGBOXCALLBACK)(LPHELPINFO lpHelpInfo);
+
+typedef struct tagMSGBOXPARAMSA
+{
+    UINT	cbSize;
+    HWND	hwndOwner;
+    HINSTANCE	hInstance;
+    LPCSTR	lpszText;
+    LPCSTR	lpszCaption;
+    DWORD	dwStyle;
+    LPCSTR	lpszIcon;
+    DWORD_PTR	dwContextHelpId;
+    MSGBOXCALLBACK	lpfnMsgBoxCallback;
+    DWORD	dwLanguageId;
+} MSGBOXPARAMSA, *PMSGBOXPARAMSA, *LPMSGBOXPARAMSA;
+
+typedef struct tagMSGBOXPARAMSW
+{
+    UINT	cbSize;
+    HWND	hwndOwner;
+    HINSTANCE	hInstance;
+    LPCWSTR	lpszText;
+    LPCWSTR	lpszCaption;
+    DWORD	dwStyle;
+    LPCWSTR	lpszIcon;
+    DWORD_PTR	dwContextHelpId;
+    MSGBOXCALLBACK	lpfnMsgBoxCallback;
+    DWORD	dwLanguageId;
+} MSGBOXPARAMSW, *PMSGBOXPARAMSW, *LPMSGBOXPARAMSW;
+
+DECL_WINELIB_TYPE_AW(MSGBOXPARAMS)
+DECL_WINELIB_TYPE_AW(PMSGBOXPARAMS)
+DECL_WINELIB_TYPE_AW(LPMSGBOXPARAMS)
+
+#define MONITOR_DEFAULTTONULL       0x00000000
+#define MONITOR_DEFAULTTOPRIMARY    0x00000001
+#define MONITOR_DEFAULTTONEAREST    0x00000002
+
+#define MONITORINFOF_PRIMARY        0x00000001
+
+#ifndef CCHDEVICENAME
+#define CCHDEVICENAME 32
+#endif
+
+typedef struct tagMONITORINFO
+{
+    DWORD cbSize;
+    RECT  rcMonitor;
+    RECT  rcWork;
+    DWORD dwFlags;
+} MONITORINFO, *LPMONITORINFO;
+
+typedef struct tagMONITORINFOEXA
+{   /* the 4 first entries are the same as MONITORINFO */
+    DWORD	cbSize;	
+    RECT	rcMonitor;
+    RECT	rcWork;
+    DWORD	dwFlags;
+    CHAR        szDevice[CCHDEVICENAME];
+} MONITORINFOEXA, *LPMONITORINFOEXA;
+
+typedef struct tagMONITORINFOEXW
+{   /* the 4 first entries are the same as MONITORINFO */
+    DWORD	cbSize;
+    RECT	rcMonitor;
+    RECT	rcWork;
+    DWORD	dwFlags;
+    WCHAR       szDevice[CCHDEVICENAME];
+} MONITORINFOEXW, *LPMONITORINFOEXW;
+
+DECL_WINELIB_TYPE_AW(MONITORINFOEX)
+DECL_WINELIB_TYPE_AW(LPMONITORINFOEX)
+
+typedef BOOL  (CALLBACK *MONITORENUMPROC)(HMONITOR,HDC,LPRECT,LPARAM);
+
+#include <pshpack2.h>
+
+typedef struct tagDLGTEMPLATE
+{
+    DWORD style;
+    DWORD dwExtendedStyle;
+    WORD cdit;
+    short x;
+    short y;
+    short cx;
+    short cy;
+} DLGTEMPLATE;
+
+typedef DLGTEMPLATE *LPDLGTEMPLATEA;
+typedef DLGTEMPLATE *LPDLGTEMPLATEW;
+DECL_WINELIB_TYPE_AW(LPDLGTEMPLATE)
+typedef const DLGTEMPLATE *LPCDLGTEMPLATEA;
+typedef const DLGTEMPLATE *LPCDLGTEMPLATEW;
+DECL_WINELIB_TYPE_AW(LPCDLGTEMPLATE)
+
+typedef struct tagDLGITEMTEMPLATE
+{
+    DWORD style;
+    DWORD dwExtendedStyle;
+    short x;
+    short y;
+    short cx;
+    short cy;
+    WORD id;
+} DLGITEMTEMPLATE;
+
+typedef DLGITEMTEMPLATE *PDLGITEMTEMPLATEA;
+typedef DLGITEMTEMPLATE *PDLGITEMTEMPLATEW;
+DECL_WINELIB_TYPE_AW(PDLGITEMTEMPLATE)
+typedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATEA;
+typedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATEW;
+DECL_WINELIB_TYPE_AW(LPDLGITEMTEMPLATE)
+
+#include <poppack.h>
+
+  /* CBT hook values */
+#define HCBT_MOVESIZE	    0
+#define HCBT_MINMAX	    1
+#define HCBT_QS 	    2
+#define HCBT_CREATEWND	    3
+#define HCBT_DESTROYWND	    4
+#define HCBT_ACTIVATE	    5
+#define HCBT_CLICKSKIPPED   6
+#define HCBT_KEYSKIPPED     7
+#define HCBT_SYSCOMMAND	    8
+#define HCBT_SETFOCUS	    9
+
+  /* CBT hook structures */
+
+typedef struct tagCBT_CREATEWNDA
+{
+    CREATESTRUCTA *lpcs;
+    HWND           hwndInsertAfter;
+} CBT_CREATEWNDA, *LPCBT_CREATEWNDA;
+
+typedef struct tagCBT_CREATEWNDW
+{
+    CREATESTRUCTW *lpcs;
+    HWND           hwndInsertAfter;
+} CBT_CREATEWNDW, *LPCBT_CREATEWNDW;
+
+DECL_WINELIB_TYPE_AW(CBT_CREATEWND)
+DECL_WINELIB_TYPE_AW(LPCBT_CREATEWND)
+
+typedef struct tagCBTACTIVATESTRUCT
+{
+    BOOL    fMouse;
+    HWND    hWndActive;
+} CBTACTIVATESTRUCT, *LPCBTACTIVATESTRUCT;
+
+
+/* modifiers for RegisterHotKey */
+#define	MOD_ALT		0x0001
+#define	MOD_CONTROL	0x0002
+#define	MOD_SHIFT	0x0004
+#define	MOD_WIN		0x0008
+
+/* ids for RegisterHotKey */
+#define	IDHOT_SNAPWINDOW	(-1)    /* SHIFT-PRINTSCRN  */
+#define	IDHOT_SNAPDESKTOP	(-2)    /* PRINTSCRN        */
+
+  /* keybd_event flags */
+#define KEYEVENTF_EXTENDEDKEY        0x0001
+#define KEYEVENTF_KEYUP              0x0002
+
+  /* mouse_event flags */
+#define MOUSEEVENTF_MOVE        0x0001
+#define MOUSEEVENTF_LEFTDOWN    0x0002
+#define MOUSEEVENTF_LEFTUP      0x0004
+#define MOUSEEVENTF_RIGHTDOWN   0x0008
+#define MOUSEEVENTF_RIGHTUP     0x0010
+#define MOUSEEVENTF_MIDDLEDOWN  0x0020
+#define MOUSEEVENTF_MIDDLEUP    0x0040
+#define MOUSEEVENTF_XDOWN       0x0080
+#define MOUSEEVENTF_XUP         0x0100
+#define MOUSEEVENTF_WHEEL       0x0800
+#define MOUSEEVENTF_HWHEEL      0x1000
+#define MOUSEEVENTF_ABSOLUTE    0x8000
+
+/* ExitWindows() flags */
+#define EW_RESTARTWINDOWS   0x0042
+#define EW_REBOOTSYSTEM     0x0043
+#define EW_EXITANDEXECAPP   0x0044
+
+/* ExitWindowsEx() flags */
+#define EWX_LOGOFF           0
+#define EWX_SHUTDOWN         1
+#define EWX_REBOOT           2
+#define EWX_FORCE            4
+#define EWX_POWEROFF         8
+#define EWX_FORCEIFHUNG     16
+
+/* SetLastErrorEx types */
+#define	SLE_ERROR	0x00000001
+#define	SLE_MINORERROR	0x00000002
+#define	SLE_WARNING	0x00000003
+
+/* Predefined resources */
+#define IDI_APPLICATION    MAKEINTRESOURCE(32512)
+#define IDI_HAND           MAKEINTRESOURCE(32513)
+#define IDI_QUESTION       MAKEINTRESOURCE(32514)
+#define IDI_EXCLAMATION    MAKEINTRESOURCE(32515)
+#define IDI_ASTERISK       MAKEINTRESOURCE(32516)
+#define IDI_WINLOGO        MAKEINTRESOURCE(32517)
+
+#define IDI_WARNING        IDI_EXCLAMATION
+#define IDI_ERROR          IDI_HAND
+#define IDI_INFORMATION    IDI_ASTERISK
+
+#define IDC_ARROW          MAKEINTRESOURCE(32512)
+#define IDC_IBEAM          MAKEINTRESOURCE(32513)
+#define IDC_WAIT           MAKEINTRESOURCE(32514)
+#define IDC_CROSS          MAKEINTRESOURCE(32515)
+#define IDC_UPARROW        MAKEINTRESOURCE(32516)
+#define IDC_SIZE           MAKEINTRESOURCE(32640)
+#define IDC_ICON           MAKEINTRESOURCE(32641)
+#define IDC_SIZENWSE       MAKEINTRESOURCE(32642)
+#define IDC_SIZENESW       MAKEINTRESOURCE(32643)
+#define IDC_SIZEWE         MAKEINTRESOURCE(32644)
+#define IDC_SIZENS         MAKEINTRESOURCE(32645)
+#define IDC_SIZEALL        MAKEINTRESOURCE(32646)
+#define IDC_NO             MAKEINTRESOURCE(32648)
+#define IDC_HAND           MAKEINTRESOURCE(32649)
+#define IDC_APPSTARTING    MAKEINTRESOURCE(32650)
+#define IDC_HELP           MAKEINTRESOURCE(32651)
+
+#define MNC_IGNORE 0
+#define MNC_CLOSE 1
+#define MNC_EXECUTE 2
+#define MNC_SELECT 3
+
+/* SystemParametersInfo */
+#define SPI_GETBEEP               1
+#define SPI_SETBEEP               2
+#define SPI_GETMOUSE              3
+#define SPI_SETMOUSE              4
+#define SPI_GETBORDER             5
+#define SPI_SETBORDER             6
+#define SPI_GETKEYBOARDSPEED      10
+#define SPI_SETKEYBOARDSPEED      11
+#define SPI_LANGDRIVER            12
+#define SPI_ICONHORIZONTALSPACING 13
+#define SPI_GETSCREENSAVETIMEOUT  14
+#define SPI_SETSCREENSAVETIMEOUT  15
+#define SPI_GETSCREENSAVEACTIVE   16
+#define SPI_SETSCREENSAVEACTIVE   17
+#define SPI_GETGRIDGRANULARITY    18
+#define SPI_SETGRIDGRANULARITY    19
+#define SPI_SETDESKWALLPAPER      20
+#define SPI_SETDESKPATTERN        21
+#define SPI_GETKEYBOARDDELAY      22
+#define SPI_SETKEYBOARDDELAY      23
+#define SPI_ICONVERTICALSPACING   24
+#define SPI_GETICONTITLEWRAP      25
+#define SPI_SETICONTITLEWRAP      26
+#define SPI_GETMENUDROPALIGNMENT  27
+#define SPI_SETMENUDROPALIGNMENT  28
+#define SPI_SETDOUBLECLKWIDTH     29
+#define SPI_SETDOUBLECLKHEIGHT    30
+#define SPI_GETICONTITLELOGFONT   31
+#define SPI_SETDOUBLECLICKTIME    32
+#define SPI_SETMOUSEBUTTONSWAP    33
+#define SPI_SETICONTITLELOGFONT   34
+#define SPI_GETFASTTASKSWITCH     35
+#define SPI_SETFASTTASKSWITCH     36
+#define SPI_SETDRAGFULLWINDOWS    37
+#define SPI_GETDRAGFULLWINDOWS    38
+#define SPI_GETNONCLIENTMETRICS   41
+#define SPI_SETNONCLIENTMETRICS   42
+#define SPI_GETMINIMIZEDMETRICS   43
+#define SPI_SETMINIMIZEDMETRICS   44
+#define SPI_GETICONMETRICS        45
+#define SPI_SETICONMETRICS        46
+#define SPI_SETWORKAREA           47
+#define SPI_GETWORKAREA           48
+#define SPI_SETPENWINDOWS         49
+#define SPI_GETFILTERKEYS         50
+#define SPI_SETFILTERKEYS         51
+#define SPI_GETTOGGLEKEYS         52
+#define SPI_SETTOGGLEKEYS         53
+#define SPI_GETMOUSEKEYS          54
+#define SPI_SETMOUSEKEYS          55
+#define SPI_GETSHOWSOUNDS         56
+#define SPI_SETSHOWSOUNDS         57
+#define SPI_GETSTICKYKEYS         58
+#define SPI_SETSTICKYKEYS         59
+#define SPI_GETACCESSTIMEOUT      60
+#define SPI_SETACCESSTIMEOUT      61
+#define SPI_GETSERIALKEYS         62
+#define SPI_SETSERIALKEYS         63
+#define SPI_GETSOUNDSENTRY        64
+#define SPI_SETSOUNDSENTRY        65
+#define SPI_GETHIGHCONTRAST       66
+#define SPI_SETHIGHCONTRAST       67
+#define SPI_GETKEYBOARDPREF       68
+#define SPI_SETKEYBOARDPREF       69
+#define SPI_GETSCREENREADER       70
+#define SPI_SETSCREENREADER       71
+#define SPI_GETANIMATION          72
+#define SPI_SETANIMATION          73
+#define SPI_GETFONTSMOOTHING      74
+#define SPI_SETFONTSMOOTHING      75
+#define SPI_SETDRAGWIDTH          76
+#define SPI_SETDRAGHEIGHT         77
+#define SPI_SETHANDHELD           78
+#define SPI_GETLOWPOWERTIMEOUT    79
+#define SPI_GETPOWEROFFTIMEOUT    80
+#define SPI_SETLOWPOWERTIMEOUT    81
+#define SPI_SETPOWEROFFTIMEOUT    82
+#define SPI_GETLOWPOWERACTIVE     83
+#define SPI_GETPOWEROFFACTIVE     84
+#define SPI_SETLOWPOWERACTIVE     85
+#define SPI_SETPOWEROFFACTIVE     86
+#define SPI_SETCURSORS            87
+#define SPI_SETICONS              88
+#define SPI_GETDEFAULTINPUTLANG   89
+#define SPI_SETDEFAULTINPUTLANG   90
+#define SPI_SETLANGTOGGLE         91
+#define SPI_GETWINDOWSEXTENSION   92
+#define SPI_SETMOUSETRAILS        93
+#define SPI_GETMOUSETRAILS        94
+#define SPI_GETSNAPTODEFBUTTON    95
+#define SPI_SETSNAPTODEFBUTTON    96
+#define SPI_SETSCREENSAVERRUNNING 97
+#define SPI_SCREENSAVERRUNNING    SPI_SETSCREENSAVERRUNNING
+#define SPI_GETMOUSEHOVERWIDTH    98
+#define SPI_SETMOUSEHOVERWIDTH    99
+#define SPI_GETMOUSEHOVERHEIGHT   100
+#define SPI_SETMOUSEHOVERHEIGHT   101
+#define SPI_GETMOUSEHOVERTIME     102
+#define SPI_SETMOUSEHOVERTIME     103
+#define SPI_GETWHEELSCROLLLINES   104
+#define SPI_SETWHEELSCROLLLINES   105
+#define SPI_GETMENUSHOWDELAY      106
+#define SPI_SETMENUSHOWDELAY      107
+#define SPI_GETWHEELSCROLLCHARS   108
+#define SPI_SETWHEELSCROLLCHARS   109
+#define SPI_GETSHOWIMEUI          110
+#define SPI_SETSHOWIMEUI          111
+#define SPI_GETMOUSESPEED         112
+#define SPI_SETMOUSESPEED         113
+#define SPI_GETSCREENSAVERRUNNING 114
+#define SPI_GETDESKWALLPAPER      115
+
+#define SPI_GETACTIVEWINDOWTRACKING    0x1000
+#define SPI_SETACTIVEWINDOWTRACKING    0x1001
+#define SPI_GETMENUANIMATION           0x1002
+#define SPI_SETMENUANIMATION           0x1003
+#define SPI_GETCOMBOBOXANIMATION       0x1004
+#define SPI_SETCOMBOBOXANIMATION       0x1005
+#define SPI_GETLISTBOXSMOOTHSCROLLING  0x1006
+#define SPI_SETLISTBOXSMOOTHSCROLLING  0x1007
+#define SPI_GETGRADIENTCAPTIONS        0x1008
+#define SPI_SETGRADIENTCAPTIONS        0x1009
+#define SPI_GETKEYBOARDCUES            0x100A
+#define SPI_SETKEYBOARDCUES            0x100B
+#define SPI_GETMENUUNDERLINES          SPI_GETKEYBOARDCUES
+#define SPI_SETMENUUNDERLINES          SPI_SETKEYBOARDCUES
+#define SPI_GETACTIVEWNDTRKZORDER      0x100C
+#define SPI_SETACTIVEWNDTRKZORDER      0x100D
+#define SPI_GETHOTTRACKING             0x100E
+#define SPI_SETHOTTRACKING             0x100F
+#define SPI_GETMENUFADE                0x1012
+#define SPI_SETMENUFADE                0x1013
+#define SPI_GETSELECTIONFADE           0x1014
+#define SPI_SETSELECTIONFADE           0x1015
+#define SPI_GETTOOLTIPANIMATION        0x1016
+#define SPI_SETTOOLTIPANIMATION        0x1017
+#define SPI_GETTOOLTIPFADE             0x1018
+#define SPI_SETTOOLTIPFADE             0x1019
+#define SPI_GETCURSORSHADOW            0x101A
+#define SPI_SETCURSORSHADOW            0x101B
+#define SPI_GETMOUSESONAR              0x101C
+#define SPI_SETMOUSESONAR              0x101D
+#define SPI_GETMOUSECLICKLOCK          0x101E
+#define SPI_SETMOUSECLICKLOCK          0x101F
+#define SPI_GETMOUSEVANISH             0x1020
+#define SPI_SETMOUSEVANISH             0x1021
+#define SPI_GETFLATMENU                0x1022
+#define SPI_SETFLATMENU                0x1023
+#define SPI_GETDROPSHADOW              0x1024
+#define SPI_SETDROPSHADOW              0x1025
+#define SPI_GETBLOCKSENDINPUTRESETS    0x1026
+#define SPI_SETBLOCKSENDINPUTRESETS    0x1027
+#define SPI_GETUIEFFECTS               0x103E
+#define SPI_SETUIEFFECTS               0x103F
+#define SPI_GETFOREGROUNDLOCKTIMEOUT   0x2000
+#define SPI_SETFOREGROUNDLOCKTIMEOUT   0x2001
+#define SPI_GETACTIVEWNDTRKTIMEOUT     0x2002
+#define SPI_SETACTIVEWNDTRKTIMEOUT     0x2003
+#define SPI_GETFOREGROUNDFLASHCOUNT    0x2004
+#define SPI_SETFOREGROUNDFLASHCOUNT    0x2005
+#define SPI_GETCARETWIDTH              0x2006
+#define SPI_SETCARETWIDTH              0x2007
+#define SPI_GETMOUSECLICKLOCKTIME      0x2008
+#define SPI_SETMOUSECLICKLOCKTIME      0x2009
+#define SPI_GETFONTSMOOTHINGTYPE       0x200A
+#define SPI_SETFONTSMOOTHINGTYPE       0x200B
+#define SPI_GETFONTSMOOTHINGCONTRAST   0x200C
+#define SPI_SETFONTSMOOTHINGCONTRAST   0x200D
+#define SPI_GETFOCUSBORDERWIDTH        0x200E
+#define SPI_SETFOCUSBORDERWIDTH        0x200F
+#define SPI_GETFOCUSBORDERHEIGHT       0x2010
+#define SPI_SETFOCUSBORDERHEIGHT       0x2011
+#define SPI_GETFONTSMOOTHINGORIENTATION 0x2012
+#define SPI_SETFONTSMOOTHINGORIENTATION 0x2013
+
+#define FE_FONTSMOOTHINGSTANDARD       0x0001
+#define FE_FONTSMOOTHINGCLEARTYPE      0x0002
+#define FE_FONTSMOOTHINGDOCKING        0x8000
+
+#define FE_FONTSMOOTHINGORIENTATIONBGR 0x0000
+#define FE_FONTSMOOTHINGORIENTATIONRGB 0x0001
+
+#define SETWALLPAPER_DEFAULT           ((LPWSTR)-1)
+
+/* SystemParametersInfo flags */
+
+#define SPIF_UPDATEINIFILE              1
+#define SPIF_SENDWININICHANGE           2
+#define SPIF_SENDCHANGE                 SPIF_SENDWININICHANGE
+
+#if defined(_WINGDI_) && !defined(NOGDI)
+typedef struct tagNONCLIENTMETRICSA {
+	UINT		cbSize;
+	INT		iBorderWidth;
+	INT		iScrollWidth;
+	INT		iScrollHeight;
+	INT		iCaptionWidth;
+	INT		iCaptionHeight;
+	LOGFONTA	lfCaptionFont;
+	INT		iSmCaptionWidth;
+	INT		iSmCaptionHeight;
+	LOGFONTA	lfSmCaptionFont;
+	INT		iMenuWidth;
+	INT		iMenuHeight;
+	LOGFONTA	lfMenuFont;
+	LOGFONTA	lfStatusFont;
+	LOGFONTA	lfMessageFont;
+} NONCLIENTMETRICSA, *PNONCLIENTMETRICSA, *LPNONCLIENTMETRICSA;
+
+typedef struct tagNONCLIENTMETRICSW {
+	UINT		cbSize;
+	INT		iBorderWidth;
+	INT		iScrollWidth;
+	INT		iScrollHeight;
+	INT		iCaptionWidth;
+	INT		iCaptionHeight;
+	LOGFONTW	lfCaptionFont;
+	INT		iSmCaptionWidth;
+	INT		iSmCaptionHeight;
+	LOGFONTW	lfSmCaptionFont;
+	INT		iMenuWidth;
+	INT		iMenuHeight;
+	LOGFONTW	lfMenuFont;
+	LOGFONTW	lfStatusFont;
+	LOGFONTW	lfMessageFont;
+} NONCLIENTMETRICSW, *PNONCLIENTMETRICSW, *LPNONCLIENTMETRICSW;
+
+DECL_WINELIB_TYPE_AW(NONCLIENTMETRICS)
+DECL_WINELIB_TYPE_AW(PNONCLIENTMETRICS)
+DECL_WINELIB_TYPE_AW(LPNONCLIENTMETRICS)
+
+typedef struct tagICONMETRICSA {
+    UINT cbSize;
+    int iHorzSpacing;
+    int iVertSpacing;
+    int iTitleWrap;
+    LOGFONTA lfFont;
+} ICONMETRICSA, *PICONMETRICSA, *LPICONMETRICSA;
+
+typedef struct tagICONMETRICSW {
+    UINT cbSize;
+    int iHorzSpacing;
+    int iVertSpacing;
+    int iTitleWrap;
+    LOGFONTW lfFont;
+} ICONMETRICSW, *PICONMETRICSW, *LPICONMETRICSW;
+
+DECL_WINELIB_TYPE_AW(ICONMETRICS)
+DECL_WINELIB_TYPE_AW(PICONMETRICS)
+DECL_WINELIB_TYPE_AW(LPICONMETRICS)
+
+typedef struct tagUPDATELAYEREDWINDOWINFO
+{
+    DWORD                cbSize;
+    HDC                  hdcDst;
+    POINT CONST*         pptDst;
+    SIZE CONST*          psize;
+    HDC                  hdcSrc;
+    POINT CONST*         pptSrc;
+    COLORREF             crKey;
+    BLENDFUNCTION CONST* pblend;
+    DWORD                dwFlags;
+    RECT CONST*          prcDirty;
+} UPDATELAYEREDWINDOWINFO, *PUPDATELAYEREDWINDOWINFO;
+
+#endif /* defined(_WINGDI_) && !defined(NOGDI) */
+
+#define ARW_BOTTOMLEFT              0x0000L
+#define ARW_BOTTOMRIGHT             0x0001L
+#define ARW_TOPLEFT                 0x0002L
+#define ARW_TOPRIGHT                0x0003L
+#define ARW_STARTMASK               0x0003L
+#define ARW_STARTRIGHT              0x0001L
+#define ARW_STARTTOP                0x0002L
+
+#define ARW_LEFT                    0x0000L
+#define ARW_RIGHT                   0x0000L
+#define ARW_UP                      0x0004L
+#define ARW_DOWN                    0x0004L
+#define ARW_HIDE                    0x0008L
+
+typedef struct tagMINIMIZEDMETRICS {
+    UINT cbSize;
+    int iWidth;
+    int iHorzGap;
+    int iVertGap;
+    int iArrange;
+} MINIMIZEDMETRICS, *PMINIMIZEDMETRICS, *LPMINIMIZEDMETRICS;
+
+#ifndef NOWINSTYLES
+
+/* Window Styles */
+#define WS_OVERLAPPED    0x00000000L
+#define WS_POPUP         0x80000000L
+#define WS_CHILD         0x40000000L
+#define WS_MINIMIZE      0x20000000L
+#define WS_VISIBLE       0x10000000L
+#define WS_DISABLED      0x08000000L
+#define WS_CLIPSIBLINGS  0x04000000L
+#define WS_CLIPCHILDREN  0x02000000L
+#define WS_MAXIMIZE      0x01000000L
+#define WS_CAPTION       0x00C00000L
+#define WS_BORDER        0x00800000L
+#define WS_DLGFRAME      0x00400000L
+#define WS_VSCROLL       0x00200000L
+#define WS_HSCROLL       0x00100000L
+#define WS_SYSMENU       0x00080000L
+#define WS_THICKFRAME    0x00040000L
+#define WS_GROUP         0x00020000L
+#define WS_TABSTOP       0x00010000L
+#define WS_MINIMIZEBOX   0x00020000L
+#define WS_MAXIMIZEBOX   0x00010000L
+#define WS_TILED         WS_OVERLAPPED
+#define WS_ICONIC        WS_MINIMIZE
+#define WS_SIZEBOX       WS_THICKFRAME
+#define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME| WS_MINIMIZEBOX | WS_MAXIMIZEBOX)
+#define WS_POPUPWINDOW (WS_POPUP | WS_BORDER | WS_SYSMENU)
+#define WS_CHILDWINDOW (WS_CHILD)
+#define WS_TILEDWINDOW (WS_OVERLAPPEDWINDOW)
+
+/* Window extended styles */
+#define WS_EX_DLGMODALFRAME    0x00000001L
+#define WS_EX_DRAGDETECT       0x00000002L
+#define WS_EX_NOPARENTNOTIFY   0x00000004L
+#define WS_EX_TOPMOST          0x00000008L
+#define WS_EX_ACCEPTFILES      0x00000010L
+#define WS_EX_TRANSPARENT      0x00000020L
+#define WS_EX_MDICHILD         0x00000040L
+#define WS_EX_TOOLWINDOW       0x00000080L
+#define WS_EX_WINDOWEDGE       0x00000100L
+#define WS_EX_CLIENTEDGE       0x00000200L
+#define WS_EX_CONTEXTHELP      0x00000400L
+#define WS_EX_RIGHT            0x00001000L
+#define WS_EX_LEFT             0x00000000L
+#define WS_EX_RTLREADING       0x00002000L
+#define WS_EX_LTRREADING       0x00000000L
+#define WS_EX_LEFTSCROLLBAR    0x00004000L
+#define WS_EX_RIGHTSCROLLBAR   0x00000000L
+#define WS_EX_CONTROLPARENT    0x00010000L
+#define WS_EX_STATICEDGE       0x00020000L
+#define WS_EX_APPWINDOW        0x00040000L
+#define WS_EX_LAYERED          0x00080000L
+#define WS_EX_NOINHERITLAYOUT  0x00100000L
+#define WS_EX_LAYOUTRTL        0x00400000L
+#define WS_EX_COMPOSITED       0x02000000L
+#define WS_EX_NOACTIVATE       0x08000000L
+
+#define WS_EX_OVERLAPPEDWINDOW (WS_EX_WINDOWEDGE|WS_EX_CLIENTEDGE)
+#define WS_EX_PALETTEWINDOW    (WS_EX_WINDOWEDGE|WS_EX_TOOLWINDOW|WS_EX_TOPMOST)
+
+#endif /* NOWINSTYLES */
+
+/* Window scrolling */
+#define SW_SCROLLCHILDREN      0x0001
+#define SW_INVALIDATE          0x0002
+#define SW_ERASE               0x0004
+
+/* CreateWindow() coordinates */
+#define CW_USEDEFAULT ((INT)0x80000000)
+
+/* ChildWindowFromPointEx Flags */
+#define CWP_ALL                0x0000
+#define CWP_SKIPINVISIBLE      0x0001
+#define CWP_SKIPDISABLED       0x0002
+#define CWP_SKIPTRANSPARENT    0x0004
+
+  /* PeekMessage() options */
+#define PM_NOREMOVE       0x0000
+#define PM_REMOVE         0x0001
+#define PM_NOYIELD        0x0002
+#define PM_QS_INPUT       (QS_INPUT << 16)
+#define PM_QS_POSTMESSAGE ((QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER) << 16)
+#define PM_QS_PAINT       (QS_PAINT << 16)
+#define PM_QS_SENDMESSAGE (QS_SENDMESSAGE << 16)
+
+/* AnimateWindow() flags */
+#define AW_SLIDE        0x00040000
+#define AW_ACTIVATE     0x00020000
+#define AW_BLEND        0x00080000
+#define AW_HIDE         0x00010000
+#define AW_CENTER       0x00000010
+#define AW_HOR_POSITIVE 0x00000001
+#define AW_HOR_NEGATIVE 0x00000002
+#define AW_VER_POSITIVE 0x00000004
+#define AW_VER_NEGATIVE 0x00000008
+
+/* FlashWindowEx() flags */
+#define FLASHW_STOP      0x00000000
+#define FLASHW_CAPTION   0x00000001
+#define FLASHW_TRAY      0x00000002
+#define FLASHW_ALL       (FLASHW_CAPTION|FLASHW_TRAY)
+#define FLASHW_TIMER     0x00000004
+#define FLASHW_TIMERNOFG 0x0000000C
+
+typedef struct {
+    UINT cbSize;
+    HWND hwnd;
+    DWORD dwFlags;
+    UINT uCount;
+    DWORD dwTimeout;
+} FLASHWINFO, *PFLASHWINFO;
+
+/* WM_SHOWWINDOW lParam codes */
+#define SW_PARENTCLOSING    1
+#define SW_OTHERZOOM        2
+#define SW_PARENTOPENING    3
+#define SW_OTHERUNZOOM      4
+
+/* SetLayeredWindowAttributes() flags */
+#define LWA_COLORKEY        0x00000001
+#define LWA_ALPHA           0x00000002
+
+/* UpdateLayeredWindow() flags */
+#define ULW_COLORKEY        0x00000001
+#define ULW_ALPHA           0x00000002
+#define ULW_OPAQUE          0x00000004
+#define ULW_EX_NORESIZE     0x00000008
+
+  /* ShowWindow() codes */
+#define SW_HIDE             0
+#define SW_SHOWNORMAL       1
+#define SW_NORMAL           1
+#define SW_SHOWMINIMIZED    2
+#define SW_SHOWMAXIMIZED    3
+#define SW_MAXIMIZE         3
+#define SW_SHOWNOACTIVATE   4
+#define SW_SHOW             5
+#define SW_MINIMIZE         6
+#define SW_SHOWMINNOACTIVE  7
+#define SW_SHOWNA           8
+#define SW_RESTORE          9
+#define SW_SHOWDEFAULT	    10
+#define SW_FORCEMINIMIZE    11
+#define SW_MAX              11
+#define SW_NORMALNA	    0xCC	/* undoc. flag in MinMaximize */
+
+  /* WM_SIZE message wParam values */
+#define SIZE_RESTORED        0
+#define SIZE_MINIMIZED       1
+#define SIZE_MAXIMIZED       2
+#define SIZE_MAXSHOW         3
+#define SIZE_MAXHIDE         4
+#define SIZENORMAL           SIZE_RESTORED
+#define SIZEICONIC           SIZE_MINIMIZED
+#define SIZEFULLSCREEN       SIZE_MAXIMIZED
+#define SIZEZOOMSHOW         SIZE_MAXSHOW
+#define SIZEZOOMHIDE         SIZE_MAXHIDE
+
+/* SetWindowPos() and WINDOWPOS flags */
+#define SWP_NOSIZE          0x0001
+#define SWP_NOMOVE          0x0002
+#define SWP_NOZORDER        0x0004
+#define SWP_NOREDRAW        0x0008
+#define SWP_NOACTIVATE      0x0010
+#define SWP_FRAMECHANGED    0x0020  /* The frame changed: send WM_NCCALCSIZE */
+#define SWP_SHOWWINDOW      0x0040
+#define SWP_HIDEWINDOW      0x0080
+#define SWP_NOCOPYBITS      0x0100
+#define SWP_NOOWNERZORDER   0x0200  /* Don't do owner Z ordering */
+
+#define SWP_DRAWFRAME       SWP_FRAMECHANGED
+#define SWP_NOREPOSITION    SWP_NOOWNERZORDER
+
+#define SWP_NOSENDCHANGING  0x0400
+#define SWP_DEFERERASE      0x2000
+#define SWP_ASYNCWINDOWPOS  0x4000
+
+/* undocumented SWP flags - from SDK 3.1 */
+#define SWP_NOCLIENTSIZE    0x0800
+#define SWP_NOCLIENTMOVE    0x1000
+#define SWP_STATECHANGED    0x8000
+
+#define HWND_DESKTOP        ((HWND)0)
+#define HWND_BROADCAST      ((HWND)0xffff)
+
+/* SetWindowPos() hwndInsertAfter field values */
+#define HWND_TOP            ((HWND)0)
+#define HWND_BOTTOM         ((HWND)1)
+#define HWND_TOPMOST        ((HWND)-1)
+#define HWND_NOTOPMOST      ((HWND)-2)
+#define HWND_MESSAGE        ((HWND)-3)
+
+/* GetDCEx flags */
+#define DCX_WINDOW           0x00000001
+#define DCX_CACHE            0x00000002
+#define DCX_NORESETATTRS     0x00000004
+#define DCX_CLIPCHILDREN     0x00000008
+#define DCX_CLIPSIBLINGS     0x00000010
+#define DCX_PARENTCLIP       0x00000020
+#define DCX_EXCLUDERGN       0x00000040
+#define DCX_INTERSECTRGN     0x00000080
+#define DCX_EXCLUDEUPDATE    0x00000100
+#define DCX_INTERSECTUPDATE  0x00000200
+#define DCX_LOCKWINDOWUPDATE 0x00000400
+#define DCX_USESTYLE         0x00010000
+#define DCX_NORECOMPUTE      0x00100000
+#define DCX_VALIDATE         0x00200000
+
+#define MF_INSERT          0x0000
+#define MF_CHANGE          0x0080
+#define MF_APPEND          0x0100
+#define MF_DELETE          0x0200
+#define MF_REMOVE          0x1000
+#define MF_END             0x0080
+
+#define MF_ENABLED         0x0000
+#define MF_GRAYED          0x0001
+#define MF_DISABLED        0x0002
+#define MF_STRING          0x0000
+#define MF_BITMAP          0x0004
+#define MF_UNCHECKED       0x0000
+#define MF_CHECKED         0x0008
+#define MF_POPUP           0x0010
+#define MF_MENUBARBREAK    0x0020
+#define MF_MENUBREAK       0x0040
+#define MF_UNHILITE        0x0000
+#define MF_HILITE          0x0080
+#define MF_OWNERDRAW       0x0100
+#define MF_USECHECKBITMAPS 0x0200
+#define MF_BYCOMMAND       0x0000
+#define MF_BYPOSITION      0x0400
+#define MF_SEPARATOR       0x0800
+#define MF_DEFAULT         0x1000
+#define MF_SYSMENU         0x2000
+#define MF_HELP            0x4000
+#define MF_RIGHTJUSTIFY    0x4000
+#define MF_MOUSESELECT     0x8000
+
+/* Flags for extended menu item types.  */
+#define MFT_STRING         MF_STRING
+#define MFT_BITMAP         MF_BITMAP
+#define MFT_MENUBARBREAK   MF_MENUBARBREAK
+#define MFT_MENUBREAK      MF_MENUBREAK
+#define MFT_OWNERDRAW      MF_OWNERDRAW
+#define MFT_RADIOCHECK     0x00000200L
+#define MFT_SEPARATOR      MF_SEPARATOR
+#define MFT_RIGHTORDER     0x00002000L
+#define MFT_RIGHTJUSTIFY   MF_RIGHTJUSTIFY
+
+/* Flags for extended menu item states.  */
+#define MFS_GRAYED          0x00000003L
+#define MFS_DISABLED        MFS_GRAYED
+#define MFS_CHECKED         MF_CHECKED
+#define MFS_HILITE          MF_HILITE
+#define MFS_ENABLED         MF_ENABLED
+#define MFS_UNCHECKED       MF_UNCHECKED
+#define MFS_UNHILITE        MF_UNHILITE
+#define MFS_DEFAULT         MF_DEFAULT
+#define MFS_MASK            0x0000108BL
+#define MFS_HOTTRACKDRAWN   0x10000000L
+#define MFS_CACHEDBMP       0x20000000L
+#define MFS_BOTTOMGAPDROP   0x40000000L
+#define MFS_TOPGAPDROP      0x80000000L
+#define MFS_GAPDROP         0xC0000000L
+
+/* for GetMenuDefaultItem */
+#define GMDI_USEDISABLED    0x0001L
+#define GMDI_GOINTOPOPUPS   0x0002L
+
+/* DrawText() flags */
+#define DT_TOP                  0x00000000
+#define DT_LEFT                 0x00000000
+#define DT_CENTER               0x00000001
+#define DT_RIGHT                0x00000002
+#define DT_VCENTER              0x00000004
+#define DT_BOTTOM               0x00000008
+#define DT_WORDBREAK            0x00000010
+#define DT_SINGLELINE           0x00000020
+#define DT_EXPANDTABS           0x00000040
+#define DT_TABSTOP              0x00000080
+#define DT_NOCLIP               0x00000100
+#define DT_EXTERNALLEADING      0x00000200
+#define DT_CALCRECT             0x00000400
+#define DT_NOPREFIX             0x00000800
+#define DT_INTERNAL             0x00001000
+#define DT_EDITCONTROL          0x00002000
+#define DT_PATH_ELLIPSIS        0x00004000
+#define DT_END_ELLIPSIS         0x00008000
+#define DT_MODIFYSTRING         0x00010000
+#define DT_RTLREADING           0x00020000
+#define DT_WORD_ELLIPSIS        0x00040000
+#define DT_NOFULLWIDTHCHARBREAK 0x00080000
+#define DT_HIDEPREFIX           0x00100000
+#define DT_PREFIXONLY           0x00200000
+
+/* DrawCaption()/DrawCaptionTemp() flags */
+#define DC_ACTIVE		0x0001
+#define DC_SMALLCAP		0x0002
+#define DC_ICON			0x0004
+#define DC_TEXT			0x0008
+#define DC_INBUTTON		0x0010
+#define DC_GRADIENT             0x0020
+#define DC_BUTTONS              0x1000
+
+/* DrawEdge() flags */
+#define BDR_RAISEDOUTER    0x0001
+#define BDR_SUNKENOUTER    0x0002
+#define BDR_RAISEDINNER    0x0004
+#define BDR_SUNKENINNER    0x0008
+
+#define BDR_OUTER          0x0003
+#define BDR_INNER          0x000c
+#define BDR_RAISED         0x0005
+#define BDR_SUNKEN         0x000a
+
+#define EDGE_RAISED        (BDR_RAISEDOUTER | BDR_RAISEDINNER)
+#define EDGE_SUNKEN        (BDR_SUNKENOUTER | BDR_SUNKENINNER)
+#define EDGE_ETCHED        (BDR_SUNKENOUTER | BDR_RAISEDINNER)
+#define EDGE_BUMP          (BDR_RAISEDOUTER | BDR_SUNKENINNER)
+
+/* border flags */
+#define BF_LEFT            0x0001
+#define BF_TOP             0x0002
+#define BF_RIGHT           0x0004
+#define BF_BOTTOM          0x0008
+#define BF_DIAGONAL        0x0010
+#define BF_MIDDLE          0x0800  /* Fill in the middle */
+#define BF_SOFT            0x1000  /* For softer buttons */
+#define BF_ADJUST          0x2000  /* Calculate the space left over */
+#define BF_FLAT            0x4000  /* For flat rather than 3D borders */
+#define BF_MONO            0x8000  /* For monochrome borders */
+#define BF_TOPLEFT         (BF_TOP | BF_LEFT)
+#define BF_TOPRIGHT        (BF_TOP | BF_RIGHT)
+#define BF_BOTTOMLEFT      (BF_BOTTOM | BF_LEFT)
+#define BF_BOTTOMRIGHT     (BF_BOTTOM | BF_RIGHT)
+#define BF_RECT            (BF_LEFT | BF_TOP | BF_RIGHT | BF_BOTTOM)
+#define BF_DIAGONAL_ENDTOPRIGHT     (BF_DIAGONAL | BF_TOP | BF_RIGHT)
+#define BF_DIAGONAL_ENDTOPLEFT      (BF_DIAGONAL | BF_TOP | BF_LEFT)
+#define BF_DIAGONAL_ENDBOTTOMLEFT   (BF_DIAGONAL | BF_BOTTOM | BF_LEFT)
+#define BF_DIAGONAL_ENDBOTTOMRIGHT  (BF_DIAGONAL | BF_BOTTOM | BF_RIGHT)
+
+/* DrawFrameControl() uType's */
+
+#define DFC_CAPTION             1
+#define DFC_MENU                2
+#define DFC_SCROLL              3
+#define DFC_BUTTON              4
+#define DFC_POPUPMENU           5
+
+/* uState's */
+
+#define DFCS_CAPTIONCLOSE       0x0000
+#define DFCS_CAPTIONMIN         0x0001
+#define DFCS_CAPTIONMAX         0x0002
+#define DFCS_CAPTIONRESTORE     0x0003
+#define DFCS_CAPTIONHELP        0x0004		/* Windows 95 only */
+
+#define DFCS_MENUARROW          0x0000
+#define DFCS_MENUCHECK          0x0001
+#define DFCS_MENUBULLET         0x0002
+#define DFCS_MENUARROWRIGHT     0x0004
+
+#define DFCS_SCROLLUP            0x0000
+#define DFCS_SCROLLDOWN          0x0001
+#define DFCS_SCROLLLEFT          0x0002
+#define DFCS_SCROLLRIGHT         0x0003
+#define DFCS_SCROLLCOMBOBOX      0x0005
+#define DFCS_SCROLLSIZEGRIP      0x0008
+#define DFCS_SCROLLSIZEGRIPRIGHT 0x0010
+
+#define DFCS_BUTTONCHECK        0x0000
+#define DFCS_BUTTONRADIOIMAGE   0x0001
+#define DFCS_BUTTONRADIOMASK    0x0002		/* to draw nonsquare button */
+#define DFCS_BUTTONRADIO        0x0004
+#define DFCS_BUTTON3STATE       0x0008
+#define DFCS_BUTTONPUSH         0x0010
+
+/* additional state of the control */
+
+#define DFCS_INACTIVE           0x0100
+#define DFCS_PUSHED             0x0200
+#define DFCS_CHECKED            0x0400
+#define DFCS_TRANSPARENT        0x0800
+#define DFCS_HOT                0x1000
+#define DFCS_ADJUSTRECT         0x2000		/* exclude surrounding edge */
+#define DFCS_FLAT               0x4000
+#define DFCS_MONO               0x8000
+
+
+/* Image type */
+#define	DST_COMPLEX	0x0000
+#define	DST_TEXT	0x0001
+#define	DST_PREFIXTEXT	0x0002
+#define	DST_ICON	0x0003
+#define	DST_BITMAP	0x0004
+
+/* State type */
+#define	DSS_NORMAL	0x0000
+#define	DSS_UNION	0x0010  /* Gray string appearance */
+#define	DSS_DISABLED	0x0020
+#define	DSS_DEFAULT	0x0040  /* Make it bold */
+#define	DSS_MONO	0x0080
+#define	DSS_HIDEPREFIX	0x0200
+#define	DSS_PREFIXONLY	0x0400
+#define	DSS_RIGHT	0x8000
+
+/* UserObjectInformation classes */
+#define UOI_FLAGS 1
+#define UOI_NAME 2
+#define UOI_TYPE 3
+#define UOI_USER_SID 4
+
+
+/* Sent as the lParam of a WM_DRAWITEM message to instruct how an
+ * owner drawn control is to be drawn */
+typedef struct tagDRAWITEMSTRUCT
+{
+    UINT      CtlType;    /* Type of control (ODT_* flags from "winuser.h") */
+    UINT      CtlID;      /* Control ID */
+    UINT      itemID;     /* Menu item ID */
+    UINT      itemAction; /* Action to perform (ODA_* flags from "winuser.h") */
+    UINT      itemState;  /* Item state (ODS_* flags from "winuser.h") */
+    HWND      hwndItem;   /* Control window */
+    HDC       hDC;        /* Device context to draw to */
+    RECT      rcItem;     /* Position of the control in hDC */
+    ULONG_PTR itemData;   /* Extra data added by the application, if any */
+} DRAWITEMSTRUCT, *PDRAWITEMSTRUCT, *LPDRAWITEMSTRUCT;
+
+
+typedef struct tagMEASUREITEMSTRUCT
+{
+    UINT      CtlType;
+    UINT      CtlID;
+    UINT      itemID;
+    UINT      itemWidth;
+    UINT      itemHeight;
+    ULONG_PTR itemData;
+} MEASUREITEMSTRUCT, *PMEASUREITEMSTRUCT, *LPMEASUREITEMSTRUCT;
+
+
+typedef struct tagDELETEITEMSTRUCT
+{
+    UINT     CtlType;
+    UINT     CtlID;
+    UINT     itemID;
+    HWND     hwndItem;
+    ULONG_PTR itemData;
+} DELETEITEMSTRUCT, *PDELETEITEMSTRUCT, *LPDELETEITEMSTRUCT;
+
+
+typedef struct tagCOMPAREITEMSTRUCT
+{
+    UINT      CtlType;
+    UINT      CtlID;
+    HWND      hwndItem;
+    UINT      itemID1;
+    ULONG_PTR itemData1;
+    UINT      itemID2;
+    ULONG_PTR itemData2;
+    DWORD     dwLocaleId;
+} COMPAREITEMSTRUCT, *PCOMPAREITEMSTRUCT, *LPCOMPAREITEMSTRUCT;
+
+
+/* WM_KEYUP/DOWN/CHAR HIWORD(lParam) flags */
+#define KF_EXTENDED         0x0100
+#define KF_DLGMODE          0x0800
+#define KF_MENUMODE         0x1000
+#define KF_ALTDOWN          0x2000
+#define KF_REPEAT           0x4000
+#define KF_UP               0x8000
+
+/* Virtual key codes */
+#define VK_LBUTTON          0x01
+#define VK_RBUTTON          0x02
+#define VK_CANCEL           0x03
+#define VK_MBUTTON          0x04
+#define VK_XBUTTON1         0x05
+#define VK_XBUTTON2         0x06
+/*                          0x07  Undefined */
+#define VK_BACK             0x08
+#define VK_TAB              0x09
+/*                          0x0A-0x0B  Undefined */
+#define VK_CLEAR            0x0C
+#define VK_RETURN           0x0D
+/*                          0x0E-0x0F  Undefined */
+#define VK_SHIFT            0x10
+#define VK_CONTROL          0x11
+#define VK_MENU             0x12
+#define VK_PAUSE            0x13
+#define VK_CAPITAL          0x14
+
+#define VK_KANA             0x15
+#define VK_HANGEUL          0x15
+#define VK_HANGUL           0x15
+#define VK_JUNJA            0x17
+#define VK_FINAL            0x18
+#define VK_HANJA            0x19
+#define VK_KANJI            0x19
+
+/*                          0x1A       Undefined */
+#define VK_ESCAPE           0x1B
+
+#define VK_CONVERT          0x1C
+#define VK_NONCONVERT       0x1D
+#define VK_ACCEPT           0x1E
+#define VK_MODECHANGE       0x1F
+
+#define VK_SPACE            0x20
+#define VK_PRIOR            0x21
+#define VK_NEXT             0x22
+#define VK_END              0x23
+#define VK_HOME             0x24
+#define VK_LEFT             0x25
+#define VK_UP               0x26
+#define VK_RIGHT            0x27
+#define VK_DOWN             0x28
+#define VK_SELECT           0x29
+#define VK_PRINT            0x2A /* OEM specific in Windows 3.1 SDK */
+#define VK_EXECUTE          0x2B
+#define VK_SNAPSHOT         0x2C
+#define VK_INSERT           0x2D
+#define VK_DELETE           0x2E
+#define VK_HELP             0x2F
+/* VK_0 - VK-9              0x30-0x39  Use ASCII instead */
+/*                          0x3A-0x40  Undefined */
+/* VK_A - VK_Z              0x41-0x5A  Use ASCII instead */
+#define VK_LWIN             0x5B
+#define VK_RWIN             0x5C
+#define VK_APPS             0x5D
+/*                          0x5E Unassigned */
+#define VK_SLEEP            0x5F
+#define VK_NUMPAD0          0x60
+#define VK_NUMPAD1          0x61
+#define VK_NUMPAD2          0x62
+#define VK_NUMPAD3          0x63
+#define VK_NUMPAD4          0x64
+#define VK_NUMPAD5          0x65
+#define VK_NUMPAD6          0x66
+#define VK_NUMPAD7          0x67
+#define VK_NUMPAD8          0x68
+#define VK_NUMPAD9          0x69
+#define VK_MULTIPLY         0x6A
+#define VK_ADD              0x6B
+#define VK_SEPARATOR        0x6C
+#define VK_SUBTRACT         0x6D
+#define VK_DECIMAL          0x6E
+#define VK_DIVIDE           0x6F
+#define VK_F1               0x70
+#define VK_F2               0x71
+#define VK_F3               0x72
+#define VK_F4               0x73
+#define VK_F5               0x74
+#define VK_F6               0x75
+#define VK_F7               0x76
+#define VK_F8               0x77
+#define VK_F9               0x78
+#define VK_F10              0x79
+#define VK_F11              0x7A
+#define VK_F12              0x7B
+#define VK_F13              0x7C
+#define VK_F14              0x7D
+#define VK_F15              0x7E
+#define VK_F16              0x7F
+#define VK_F17              0x80
+#define VK_F18              0x81
+#define VK_F19              0x82
+#define VK_F20              0x83
+#define VK_F21              0x84
+#define VK_F22              0x85
+#define VK_F23              0x86
+#define VK_F24              0x87
+/*                          0x88-0x8F  Unassigned */
+#define VK_NUMLOCK          0x90
+#define VK_SCROLL           0x91
+#define VK_OEM_NEC_EQUAL    0x92
+#define VK_OEM_FJ_JISHO     0x92
+#define VK_OEM_FJ_MASSHOU   0x93
+#define VK_OEM_FJ_TOUROKU   0x94
+#define VK_OEM_FJ_LOYA      0x95
+#define VK_OEM_FJ_ROYA      0x96
+/*                          0x97-0x9F  Unassigned */
+/*
+ * differencing between right and left shift/control/alt key.
+ * Used only by GetAsyncKeyState() and GetKeyState().
+ */
+#define VK_LSHIFT           0xA0
+#define VK_RSHIFT           0xA1
+#define VK_LCONTROL         0xA2
+#define VK_RCONTROL         0xA3
+#define VK_LMENU            0xA4
+#define VK_RMENU            0xA5
+
+#define VK_BROWSER_BACK        0xA6
+#define VK_BROWSER_FORWARD     0xA7
+#define VK_BROWSER_REFRESH     0xA8
+#define VK_BROWSER_STOP        0xA9
+#define VK_BROWSER_SEARCH      0xAA
+#define VK_BROWSER_FAVORITES   0xAB
+#define VK_BROWSER_HOME        0xAC
+#define VK_VOLUME_MUTE         0xAD
+#define VK_VOLUME_DOWN         0xAE
+#define VK_VOLUME_UP           0xAF
+#define VK_MEDIA_NEXT_TRACK    0xB0
+#define VK_MEDIA_PREV_TRACK    0xB1
+#define VK_MEDIA_STOP          0xB2
+#define VK_MEDIA_PLAY_PAUSE    0xB3
+#define VK_LAUNCH_MAIL         0xB4
+#define VK_LAUNCH_MEDIA_SELECT 0xB5
+#define VK_LAUNCH_APP1         0xB6
+#define VK_LAUNCH_APP2         0xB7
+
+/*                          0xB8-0xB9  Unassigned */
+#define VK_OEM_1            0xBA
+#define VK_OEM_PLUS         0xBB
+#define VK_OEM_COMMA        0xBC
+#define VK_OEM_MINUS        0xBD
+#define VK_OEM_PERIOD       0xBE
+#define VK_OEM_2            0xBF
+#define VK_OEM_3            0xC0
+/*                          0xC1-0xDA  Unassigned */
+#define VK_OEM_4            0xDB
+#define VK_OEM_5            0xDC
+#define VK_OEM_6            0xDD
+#define VK_OEM_7            0xDE
+#define VK_OEM_8            0xDF
+/*                          0xE0       OEM specific */
+#define VK_OEM_AX           0xE1  /* "AX" key on Japanese AX keyboard */
+#define VK_OEM_102          0xE2  /* "<>" or "\|" on RT 102-key keyboard */
+#define VK_ICO_HELP         0xE3  /* Help key on ICO */
+#define VK_ICO_00           0xE4  /* 00 key on ICO */
+#define VK_PROCESSKEY       0xE5
+
+/*                          0xE6       OEM specific */
+/*                          0xE7-0xE8  Unassigned */
+/*                          0xE9-0xF5  OEM specific */
+
+#define VK_ATTN             0xF6
+#define VK_CRSEL            0xF7
+#define VK_EXSEL            0xF8
+#define VK_EREOF            0xF9
+#define VK_PLAY             0xFA
+#define VK_ZOOM             0xFB
+#define VK_NONAME           0xFC
+#define VK_PA1              0xFD
+#define VK_OEM_CLEAR        0xFE
+
+/* MapVirtualKey translation types */
+#define MAPVK_VK_TO_VSC     0
+#define MAPVK_VSC_TO_VK     1
+#define MAPVK_VK_TO_CHAR    2
+#define MAPVK_VSC_TO_VK_EX  3
+#define MAPVK_VK_TO_VSC_EX  4
+
+  /* Key status flags for mouse events */
+#define MK_LBUTTON	    0x0001
+#define MK_RBUTTON	    0x0002
+#define MK_SHIFT	    0x0004
+#define MK_CONTROL	    0x0008
+#define MK_MBUTTON	    0x0010
+#define MK_XBUTTON1         0x0020
+#define MK_XBUTTON2         0x0040
+
+
+#define TME_HOVER       0x00000001
+#define TME_LEAVE       0x00000002
+#define TME_NONCLIENT   0x00000010
+#define TME_QUERY       0x40000000
+#define TME_CANCEL      0x80000000
+
+#define HOVER_DEFAULT   0xFFFFFFFF
+
+typedef struct tagTRACKMOUSEEVENT {
+    DWORD cbSize;
+    DWORD dwFlags;
+    HWND  hwndTrack;
+    DWORD dwHoverTime;
+} TRACKMOUSEEVENT, *LPTRACKMOUSEEVENT;
+
+  /* Queue status flags */
+#define QS_KEY		0x0001
+#define QS_MOUSEMOVE	0x0002
+#define QS_MOUSEBUTTON	0x0004
+#define QS_MOUSE	(QS_MOUSEMOVE | QS_MOUSEBUTTON)
+#define QS_POSTMESSAGE	0x0008
+#define QS_TIMER	0x0010
+#define QS_PAINT	0x0020
+#define QS_SENDMESSAGE	0x0040
+#define QS_HOTKEY	0x0080
+#define QS_ALLPOSTMESSAGE 0x0100
+#define QS_RAWINPUT       0x0400
+#define QS_INPUT	(QS_MOUSE | QS_KEY | QS_RAWINPUT)
+#define QS_ALLEVENTS	(QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY)
+#define QS_ALLINPUT     (QS_ALLEVENTS | QS_SENDMESSAGE)
+
+/* Extra (undocumented) queue wake bits - see "Undoc. Windows" */
+#define QS_SMRESULT      0x8000
+
+/* InSendMessageEx flags */
+#define ISMEX_NOSEND      0x00000000
+#define ISMEX_SEND        0x00000001
+#define ISMEX_NOTIFY      0x00000002
+#define ISMEX_CALLBACK    0x00000004
+#define ISMEX_REPLIED     0x00000008
+
+#define DDL_READWRITE	0x0000
+#define DDL_READONLY	0x0001
+#define DDL_HIDDEN	0x0002
+#define DDL_SYSTEM	0x0004
+#define DDL_DIRECTORY	0x0010
+#define DDL_ARCHIVE	0x0020
+
+#define DDL_POSTMSGS	0x2000
+#define DDL_DRIVES	0x4000
+#define DDL_EXCLUSIVE	0x8000
+
+  /* Shell hook values */
+#define HSHELL_WINDOWCREATED       1
+#define HSHELL_WINDOWDESTROYED     2
+#define HSHELL_ACTIVATESHELLWINDOW 3
+#define HSHELL_WINDOWACTIVATED     4
+#define HSHELL_GETMINRECT          5
+#define HSHELL_REDRAW              6
+#define HSHELL_TASKMAN             7
+#define HSHELL_LANGUAGE            8
+#define HSHELL_SYSMENU             9
+#define HSHELL_ENDTASK             10
+#define HSHELL_ACCESSIBILITYSTATE  11
+#define HSHELL_APPCOMMAND          12
+#define HSHELL_WINDOWREPLACED      13
+#define HSHELL_WINDOWREPLACING     14
+
+#define HSHELL_HIGHBIT             0x8000
+#define HSHELL_FLASH               (HSHELL_REDRAW|HSHELL_HIGHBIT)
+#define HSHELL_RUDEAPPACTIVATED    (HSHELL_WINDOWACTIVATED|HSHELL_HIGHBIT)
+
+/* App commands */
+#define APPCOMMAND_BROWSER_BACKWARD                  1
+#define APPCOMMAND_BROWSER_FORWARD                   2
+#define APPCOMMAND_BROWSER_REFRESH                   3
+#define APPCOMMAND_BROWSER_STOP                      4
+#define APPCOMMAND_BROWSER_SEARCH                    5
+#define APPCOMMAND_BROWSER_FAVORITES                 6
+#define APPCOMMAND_BROWSER_HOME                      7
+#define APPCOMMAND_VOLUME_MUTE                       8
+#define APPCOMMAND_VOLUME_DOWN                       9
+#define APPCOMMAND_VOLUME_UP                         10
+#define APPCOMMAND_MEDIA_NEXTTRACK                   11
+#define APPCOMMAND_MEDIA_PREVIOUSTRACK               12
+#define APPCOMMAND_MEDIA_STOP                        13
+#define APPCOMMAND_MEDIA_PLAY_PAUSE                  14
+#define APPCOMMAND_LAUNCH_MAIL                       15
+#define APPCOMMAND_LAUNCH_MEDIA_SELECT               16
+#define APPCOMMAND_LAUNCH_APP1                       17
+#define APPCOMMAND_LAUNCH_APP2                       18
+#define APPCOMMAND_BASS_DOWN                         19
+#define APPCOMMAND_BASS_BOOST                        20
+#define APPCOMMAND_BASS_UP                           21
+#define APPCOMMAND_TREBLE_DOWN                       22
+#define APPCOMMAND_TREBLE_UP                         23
+#define APPCOMMAND_MICROPHONE_VOLUME_MUTE            24
+#define APPCOMMAND_MICROPHONE_VOLUME_DOWN            25
+#define APPCOMMAND_MICROPHONE_VOLUME_UP              26
+#define APPCOMMAND_HELP                              27
+#define APPCOMMAND_FIND                              28
+#define APPCOMMAND_NEW                               29
+#define APPCOMMAND_OPEN                              30
+#define APPCOMMAND_CLOSE                             31
+#define APPCOMMAND_SAVE                              32
+#define APPCOMMAND_PRINT                             33
+#define APPCOMMAND_UNDO                              34
+#define APPCOMMAND_REDO                              35
+#define APPCOMMAND_COPY                              36
+#define APPCOMMAND_CUT                               37
+#define APPCOMMAND_PASTE                             38
+#define APPCOMMAND_REPLY_TO_MAIL                     39
+#define APPCOMMAND_FORWARD_MAIL                      40
+#define APPCOMMAND_SEND_MAIL                         41
+#define APPCOMMAND_SPELL_CHECK                       42
+#define APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE 43
+#define APPCOMMAND_MIC_ON_OFF_TOGGLE                 44
+#define APPCOMMAND_CORRECTION_LIST                   45
+#define APPCOMMAND_MEDIA_PLAY                        46
+#define APPCOMMAND_MEDIA_PAUSE                       47
+#define APPCOMMAND_MEDIA_RECORD                      48
+#define APPCOMMAND_MEDIA_FAST_FORWARD                49
+#define APPCOMMAND_MEDIA_REWIND                      50
+#define APPCOMMAND_MEDIA_CHANNEL_UP                  51
+#define APPCOMMAND_MEDIA_CHANNEL_DOWN                52
+#define APPCOMMAND_DELETE                            53
+#define APPCOMMAND_DWM_FLIP3D                        54
+
+#define FAPPCOMMAND_MOUSE 0x8000
+#define FAPPCOMMAND_KEY   0
+#define FAPPCOMMAND_OEM   0x1000
+#define FAPPCOMMAND_MASK  0xF000
+
+#define GET_APPCOMMAND_LPARAM(lParam) ((short)(HIWORD(lParam) & ~FAPPCOMMAND_MASK))
+#define GET_DEVICE_LPARAM(lParam)     ((WORD)(HIWORD(lParam) & FAPPCOMMAND_MASK))
+#define GET_MOUSEORKEY_LPARAM         GET_DEVICE_LPARAM
+#define GET_FLAGS_LPARAM(lParam)      (LOWORD(lParam))
+#define GET_KEYSTATE_LPARAM(lParam)   GET_FLAGS_LPARAM(lParam)
+
+/* Predefined Clipboard Formats */
+#define CF_TEXT              1
+#define CF_BITMAP            2
+#define CF_METAFILEPICT      3
+#define CF_SYLK              4
+#define CF_DIF               5
+#define CF_TIFF              6
+#define CF_OEMTEXT           7
+#define CF_DIB               8
+#define CF_PALETTE           9
+#define CF_PENDATA          10
+#define CF_RIFF             11
+#define CF_WAVE             12
+#define CF_UNICODETEXT      13
+#define CF_ENHMETAFILE      14
+#define CF_HDROP            15
+#define CF_LOCALE           16
+#define CF_DIBV5            17
+#define CF_MAX              18
+
+#define CF_OWNERDISPLAY     0x0080
+#define CF_DSPTEXT          0x0081
+#define CF_DSPBITMAP        0x0082
+#define CF_DSPMETAFILEPICT  0x0083
+#define CF_DSPENHMETAFILE   0x008E
+
+/* "Private" formats don't get GlobalFree()'d */
+#define CF_PRIVATEFIRST     0x0200
+#define CF_PRIVATELAST      0x02FF
+
+/* "GDIOBJ" formats do get DeleteObject()'d */
+#define CF_GDIOBJFIRST      0x0300
+#define CF_GDIOBJLAST       0x03FF
+
+
+/* types of LoadImage */
+#define IMAGE_BITMAP	0
+#define IMAGE_ICON	1
+#define IMAGE_CURSOR	2
+#define IMAGE_ENHMETAFILE	3
+
+/* loadflags to LoadImage */
+#define LR_DEFAULTCOLOR		0x0000
+#define LR_MONOCHROME		0x0001
+#define LR_COLOR		0x0002
+#define LR_COPYRETURNORG	0x0004
+#define LR_COPYDELETEORG	0x0008
+#define LR_LOADFROMFILE		0x0010
+#define LR_LOADTRANSPARENT	0x0020
+#define LR_DEFAULTSIZE		0x0040
+#define LR_VGA_COLOR		0x0080
+#define LR_LOADMAP3DCOLORS	0x1000
+#define	LR_CREATEDIBSECTION	0x2000
+#define LR_COPYFROMRESOURCE	0x4000
+#define LR_SHARED		0x8000
+
+/* Flags for DrawIconEx.  */
+#define DI_MASK                 0x0001
+#define DI_IMAGE                0x0002
+#define DI_NORMAL               (DI_MASK | DI_IMAGE)
+#define DI_COMPAT               0x0004
+#define DI_DEFAULTSIZE          0x0008
+#define DI_NOMIRROR             0x0010
+
+/* WM_NOTIFYFORMAT commands and return values */
+#define NFR_ANSI	    1
+#define NFR_UNICODE	    2
+#define NF_QUERY	    3
+#define NF_REQUERY	    4
+
+/* RegisterDeviceNotification stuff */
+typedef  PVOID           HDEVNOTIFY;
+typedef  HDEVNOTIFY     *PHDEVNOTIFY;
+
+#define DEVICE_NOTIFY_WINDOW_HANDLE     0x00000000
+
+/* used for GetWindowInfo() */
+
+#define WS_ACTIVECAPTION    0x0001
+
+typedef struct tagWINDOWINFO {
+    DWORD cbSize;
+    RECT  rcWindow;
+    RECT  rcClient;
+    DWORD dwStyle;
+    DWORD dwExStyle;
+    DWORD dwWindowStatus;
+    UINT  cxWindowBorders;
+    UINT  cyWindowBorders;
+    ATOM  atomWindowType;
+    WORD  wCreatorVersion;
+} WINDOWINFO, *PWINDOWINFO, *LPWINDOWINFO;
+
+/* used for GetTitleBarInfo() */
+
+#define CCHILDREN_TITLEBAR      5
+
+typedef struct tagTITLEBARINFO {
+    DWORD cbSize;
+    RECT  rcTitleBar;
+    DWORD rgstate[CCHILDREN_TITLEBAR+1];
+} TITLEBARINFO, *PTITLEBARINFO, *LPTITLEBARINFO;
+
+/* used by GetLastInputInfo */
+typedef struct tagLASTINPUTINFO {
+    UINT cbSize;
+    DWORD dwTime;
+} LASTINPUTINFO, *PLASTINPUTINFO;
+
+/* used by GetAltTabInfo */
+typedef struct
+{
+    DWORD cbSize;
+    INT cItems;
+    INT cColumns;
+    INT cRows;
+    INT iColFocus;
+    INT iRowFocus;
+    INT cxItem;
+    INT cyItem;
+    POINT ptStart;
+} ALTTABINFO, *PALTTABINFO, *LPALTTABINFO;
+
+/* SetWinEventHook() flags */
+#define WINEVENT_OUTOFCONTEXT   0x0
+#define WINEVENT_SKIPOWNTHREAD  0x1
+#define WINEVENT_SKIPOWNPROCESS 0x2
+#define WINEVENT_INCONTEXT      0x4
+
+#define ENDSESSION_LOGOFF    0x80000000
+
+/* Object Id's */
+#define CHILDID_SELF      0
+#define INDEXID_OBJECT    0
+#define INDEXID_CONTAINER 0
+
+/* System object Id's */
+#define OBJID_WINDOW            0
+#define OBJID_SYSMENU           -1
+#define OBJID_TITLEBAR          -2
+#define OBJID_MENU              -3
+#define OBJID_CLIENT            -4
+#define OBJID_VSCROLL           -5
+#define OBJID_HSCROLL           -6
+#define OBJID_SIZEGRIP          -7
+#define OBJID_CARET             -8
+#define OBJID_CURSOR            -9
+#define OBJID_ALERT             -10
+#define OBJID_SOUND             -11
+#define OBJID_QUERYCLASSNAMEIDX -12
+#define OBJID_NATIVEOM          -16
+
+/* User event Id limits */
+#define EVENT_MIN 0x00000001
+#define EVENT_MAX 0x7FFFFFFF
+
+/* System events */
+#define EVENT_SYSTEM_SOUND            0x01
+#define EVENT_SYSTEM_ALERT            0x02
+#define EVENT_SYSTEM_FOREGROUND       0x03
+#define EVENT_SYSTEM_MENUSTART        0x04
+#define EVENT_SYSTEM_MENUEND          0x05
+#define EVENT_SYSTEM_MENUPOPUPSTART   0x06
+#define EVENT_SYSTEM_MENUPOPUPEND     0x07
+#define EVENT_SYSTEM_CAPTURESTART     0x08
+#define EVENT_SYSTEM_CAPTUREEND       0x09
+#define EVENT_SYSTEM_MOVESIZESTART    0x0A
+#define EVENT_SYSTEM_MOVESIZEEND      0x0B
+#define EVENT_SYSTEM_CONTEXTHELPSTART 0x0C
+#define EVENT_SYSTEM_CONTEXTHELPEND   0x0D
+#define EVENT_SYSTEM_DRAGDROPSTART    0x0E
+#define EVENT_SYSTEM_DRAGDROPEND      0x0F
+#define EVENT_SYSTEM_DIALOGSTART      0x10
+#define EVENT_SYSTEM_DIALOGEND        0x11
+#define EVENT_SYSTEM_SCROLLINGSTART   0x12
+#define EVENT_SYSTEM_SCROLLINGEND     0x13
+#define EVENT_SYSTEM_SWITCHSTART      0x14
+#define EVENT_SYSTEM_SWITCHEND        0x15
+#define EVENT_SYSTEM_MINIMIZESTART    0x16
+#define EVENT_SYSTEM_MINIMIZEEND      0x17
+
+/* Console events */
+#define EVENT_CONSOLE_CARET             0x4001
+#define EVENT_CONSOLE_UPDATE_REGION     0x4002
+#define EVENT_CONSOLE_UPDATE_SIMPLE     0x4003
+#define EVENT_CONSOLE_UPDATE_SCROLL     0x4004
+#define EVENT_CONSOLE_LAYOUT            0x4005
+#define EVENT_CONSOLE_START_APPLICATION 0x4006
+#define EVENT_CONSOLE_END_APPLICATION   0x4007
+
+#define CONSOLE_APPLICATION_16BIT 0x1
+#define CONSOLE_CARET_SELECTION   0x1
+#define CONSOLE_CARET_VISIBLE     0x2
+
+/* Object events */
+#define EVENT_OBJECT_CREATE            0x8000
+#define EVENT_OBJECT_DESTROY           0x8001
+#define EVENT_OBJECT_SHOW              0x8002
+#define EVENT_OBJECT_HIDE              0x8003
+#define EVENT_OBJECT_REORDER           0x8004
+#define EVENT_OBJECT_FOCUS             0x8005
+#define EVENT_OBJECT_SELECTION         0x8006
+#define EVENT_OBJECT_SELECTIONADD      0x8007
+#define EVENT_OBJECT_SELECTIONREMOVE   0x8008
+#define EVENT_OBJECT_SELECTIONWITHIN   0x8009
+#define EVENT_OBJECT_STATECHANGE       0x800A
+#define EVENT_OBJECT_LOCATIONCHANGE    0x800B
+#define EVENT_OBJECT_NAMECHANGE        0x800C
+#define EVENT_OBJECT_DESCRIPTIONCHANGE 0x800D
+#define EVENT_OBJECT_VALUECHANGE       0x800E
+#define EVENT_OBJECT_PARENTCHANGE      0x800F
+#define EVENT_OBJECT_HELPCHANGE        0x8010
+#define EVENT_OBJECT_DEFACTIONCHANGE   0x8011
+#define EVENT_OBJECT_ACCELERATORCHANGE 0x8012
+
+/* Sound events */
+#define SOUND_SYSTEM_STARTUP      1
+#define SOUND_SYSTEM_SHUTDOWN     2
+#define SOUND_SYSTEM_BEEP         3
+#define SOUND_SYSTEM_ERROR        4
+#define SOUND_SYSTEM_QUESTION     5
+#define SOUND_SYSTEM_WARNING      6
+#define SOUND_SYSTEM_INFORMATION  7
+#define SOUND_SYSTEM_MAXIMIZE     8
+#define SOUND_SYSTEM_MINIMIZE     9
+#define SOUND_SYSTEM_RESTOREUP   10
+#define SOUND_SYSTEM_RESTOREDOWN 11
+#define SOUND_SYSTEM_APPSTART    12
+#define SOUND_SYSTEM_FAULT       13
+#define SOUND_SYSTEM_APPEND      14
+#define SOUND_SYSTEM_MENUCOMMAND 15
+#define SOUND_SYSTEM_MENUPOPUP   16
+#define CSOUND_SYSTEM            16
+
+/* Alert events */
+#define ALERT_SYSTEM_INFORMATIONAL 1
+#define ALERT_SYSTEM_WARNING       2
+#define ALERT_SYSTEM_ERROR         3
+#define ALERT_SYSTEM_QUERY         4
+#define ALERT_SYSTEM_CRITICAL      5
+#define CALERT_SYSTEM              6
+
+/* System state flags */
+#define STATE_SYSTEM_UNAVAILABLE     0x00000001
+#define STATE_SYSTEM_SELECTED        0x00000002
+#define STATE_SYSTEM_FOCUSED         0x00000004
+#define STATE_SYSTEM_PRESSED         0x00000008
+#define STATE_SYSTEM_CHECKED         0x00000010
+#define STATE_SYSTEM_MIXED           0x00000020
+#define STATE_SYSTEM_INDETERMINATE   STATE_SYSTEM_MIXED
+#define STATE_SYSTEM_READONLY        0x00000040
+#define STATE_SYSTEM_HOTTRACKED      0x00000080
+#define STATE_SYSTEM_DEFAULT         0x00000100
+#define STATE_SYSTEM_EXPANDED        0x00000200
+#define STATE_SYSTEM_COLLAPSED       0x00000400
+#define STATE_SYSTEM_BUSY            0x00000800
+#define STATE_SYSTEM_FLOATING        0x00001000
+#define STATE_SYSTEM_MARQUEED        0x00002000
+#define STATE_SYSTEM_ANIMATED        0x00004000
+#define STATE_SYSTEM_INVISIBLE       0x00008000
+#define STATE_SYSTEM_OFFSCREEN       0x00010000
+#define STATE_SYSTEM_SIZEABLE        0x00020000
+#define STATE_SYSTEM_MOVEABLE        0x00040000
+#define STATE_SYSTEM_SELFVOICING     0x00080000
+#define STATE_SYSTEM_FOCUSABLE       0x00100000
+#define STATE_SYSTEM_SELECTABLE      0x00200000
+#define STATE_SYSTEM_LINKED          0x00400000
+#define STATE_SYSTEM_TRAVERSED       0x00800000
+#define STATE_SYSTEM_MULTISELECTABLE 0x01000000
+#define STATE_SYSTEM_EXTSELECTABLE   0x02000000
+#define STATE_SYSTEM_ALERT_LOW       0x04000000
+#define STATE_SYSTEM_ALERT_MEDIUM    0x08000000
+#define STATE_SYSTEM_ALERT_HIGH      0x10000000
+#define STATE_SYSTEM_PROTECTED       0x20000000
+#define STATE_SYSTEM_VALID           0x3FFFFFFF
+
+/* Lock codes for LockSetForegroundWindow */
+#define LSFW_LOCK   1
+#define LSFW_UNLOCK 2
+
+/* Values for AllowSetForegroundWindow */
+#define ASFW_ANY    ((DWORD)-1)
+
+#define     EnumTaskWindows(handle,proc,lparam) \
+            EnumThreadWindows(handle,proc,lparam)
+#define     OemToAnsiA OemToCharA
+#define     OemToAnsiW OemToCharW
+#define     OemToAnsi WINELIB_NAME_AW(OemToAnsi)
+#define     OemToAnsiBuffA OemToCharBuffA
+#define     OemToAnsiBuffW OemToCharBuffW
+#define     OemToAnsiBuff WINELIB_NAME_AW(OemToAnsiBuff)
+#define     AnsiToOemA CharToOemA
+#define     AnsiToOemW CharToOemW
+#define     AnsiToOem WINELIB_NAME_AW(AnsiToOem)
+#define     AnsiToOemBuffA CharToOemBuffA
+#define     AnsiToOemBuffW CharToOemBuffW
+#define     AnsiToOemBuff WINELIB_NAME_AW(AnsiToOemBuff)
+
+#if defined(_WINGDI_) && !defined(NOGDI)
+WINUSERAPI LONG        WINAPI ChangeDisplaySettingsA(LPDEVMODEA,DWORD);
+WINUSERAPI LONG        WINAPI ChangeDisplaySettingsW(LPDEVMODEW,DWORD);
+#define                       ChangeDisplaySettings WINELIB_NAME_AW(ChangeDisplaySettings)
+WINUSERAPI LONG        WINAPI ChangeDisplaySettingsExA(LPCSTR,LPDEVMODEA,HWND,DWORD,LPVOID);
+WINUSERAPI LONG        WINAPI ChangeDisplaySettingsExW(LPCWSTR,LPDEVMODEW,HWND,DWORD,LPVOID);
+#define                       ChangeDisplaySettingsEx WINELIB_NAME_AW(ChangeDisplaySettingsEx)
+WINUSERAPI HDESK       WINAPI CreateDesktopA(LPCSTR,LPCSTR,LPDEVMODEA,DWORD,ACCESS_MASK,LPSECURITY_ATTRIBUTES);
+WINUSERAPI HDESK       WINAPI CreateDesktopW(LPCWSTR,LPCWSTR,LPDEVMODEW,DWORD,ACCESS_MASK,LPSECURITY_ATTRIBUTES);
+#define                       CreateDesktop WINELIB_NAME_AW(CreateDesktop)
+WINUSERAPI BOOL        WINAPI EnumDisplayDevicesA(LPCSTR,DWORD,LPDISPLAY_DEVICEA,DWORD);
+WINUSERAPI BOOL        WINAPI EnumDisplayDevicesW(LPCWSTR,DWORD,LPDISPLAY_DEVICEW,DWORD);
+#define                       EnumDisplayDevices WINELIB_NAME_AW(EnumDisplayDevices)
+WINUSERAPI BOOL        WINAPI EnumDisplaySettingsA(LPCSTR,DWORD,LPDEVMODEA);
+WINUSERAPI BOOL        WINAPI EnumDisplaySettingsW(LPCWSTR,DWORD,LPDEVMODEW);
+#define                       EnumDisplaySettings WINELIB_NAME_AW(EnumDisplaySettings)
+WINUSERAPI BOOL        WINAPI EnumDisplaySettingsExA(LPCSTR,DWORD,LPDEVMODEA,DWORD);
+WINUSERAPI BOOL        WINAPI EnumDisplaySettingsExW(LPCWSTR,DWORD,LPDEVMODEW,DWORD);
+#define                       EnumDisplaySettingsEx WINELIB_NAME_AW(EnumDisplaySettingsEx)
+WINUSERAPI BOOL        WINAPI UpdateLayeredWindow(HWND,HDC,POINT*,SIZE*,HDC,POINT*,COLORREF,BLENDFUNCTION*,DWORD);
+WINUSERAPI BOOL        WINAPI UpdateLayeredWindowIndirect(HWND,UPDATELAYEREDWINDOWINFO CONST*);
+#endif /* defined(_WINGDI_) && !defined(NOGDI) */
+
+WINUSERAPI HKL         WINAPI ActivateKeyboardLayout(HKL,UINT);
+WINUSERAPI BOOL        WINAPI AdjustWindowRect(LPRECT,DWORD,BOOL);
+WINUSERAPI BOOL        WINAPI AdjustWindowRectEx(LPRECT,DWORD,BOOL,DWORD);
+WINUSERAPI BOOL        WINAPI AllowSetForegroundWindow(DWORD);
+WINUSERAPI BOOL        WINAPI AnimateWindow(HWND,DWORD,DWORD);
+#define                       AnsiLowerA CharLowerA
+#define                       AnsiLowerW CharLowerW
+#define                       AnsiLower WINELIB_NAME_AW(AnsiLower)
+#define                       AnsiLowerBuffA CharLowerBuffA
+#define                       AnsiLowerBuffW CharLowerBuffW
+#define                       AnsiLowerBuff WINELIB_NAME_AW(AnsiLowerBuff)
+#define                       AnsiNextA CharNextA
+#define                       AnsiNextW CharNextW
+#define                       AnsiNext WINELIB_NAME_AW(AnsiNext)
+#define                       AnsiPrevA CharPrevA
+#define                       AnsiPrevW CharPrevW
+#define                       AnsiPrev WINELIB_NAME_AW(AnsiPrev)
+#define                       AnsiUpperA CharUpperA
+#define                       AnsiUpperW CharUpperW
+#define                       AnsiUpper WINELIB_NAME_AW(AnsiUpper)
+#define                       AnsiUpperBuffA CharUpperBuffA
+#define                       AnsiUpperBuffW CharUpperBuffW
+#define                       AnsiUpperBuff WINELIB_NAME_AW(AnsiUpperBuff)
+WINUSERAPI BOOL        WINAPI AnyPopup(void);
+WINUSERAPI BOOL        WINAPI AppendMenuA(HMENU,UINT,UINT_PTR,LPCSTR);
+WINUSERAPI BOOL        WINAPI AppendMenuW(HMENU,UINT,UINT_PTR,LPCWSTR);
+#define                       AppendMenu WINELIB_NAME_AW(AppendMenu)
+WINUSERAPI UINT        WINAPI ArrangeIconicWindows(HWND);
+WINUSERAPI BOOL        WINAPI AttachThreadInput(DWORD,DWORD,BOOL);
+WINUSERAPI HDWP        WINAPI BeginDeferWindowPos(INT);
+WINUSERAPI HDC         WINAPI BeginPaint(HWND,LPPAINTSTRUCT);
+WINUSERAPI BOOL        WINAPI BringWindowToTop(HWND);
+WINUSERAPI LONG        WINAPI BroadcastSystemMessageA(DWORD,LPDWORD,UINT,WPARAM,LPARAM);
+WINUSERAPI LONG        WINAPI BroadcastSystemMessageW(DWORD,LPDWORD,UINT,WPARAM,LPARAM);
+#define                       BroadcastSystemMessage WINELIB_NAME_AW(BroadcastSystemMessage)
+WINUSERAPI LONG        WINAPI BroadcastSystemMessageExA(DWORD,LPDWORD,UINT,WPARAM,LPARAM,PBSMINFO);
+WINUSERAPI LONG        WINAPI BroadcastSystemMessageExW(DWORD,LPDWORD,UINT,WPARAM,LPARAM,PBSMINFO);
+#define                       BroadcastSystemMessageEx WINELIB_NAME_AW(BroadcastSystemMessageEx)
+WINUSERAPI void        WINAPI CalcChildScroll(HWND, INT);
+WINUSERAPI BOOL        WINAPI CallMsgFilterA(LPMSG,INT);
+WINUSERAPI BOOL        WINAPI CallMsgFilterW(LPMSG,INT);
+#define                       CallMsgFilter WINELIB_NAME_AW(CallMsgFilter)
+WINUSERAPI LRESULT     WINAPI CallNextHookEx(HHOOK,INT,WPARAM,LPARAM);
+WINUSERAPI LRESULT     WINAPI CallWindowProcA(WNDPROC,HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI LRESULT     WINAPI CallWindowProcW(WNDPROC,HWND,UINT,WPARAM,LPARAM);
+#define                       CallWindowProc WINELIB_NAME_AW(CallWindowProc)
+WINUSERAPI WORD        WINAPI CascadeWindows(HWND, UINT, const RECT *, UINT, const HWND *);
+WINUSERAPI BOOL        WINAPI ChangeClipboardChain(HWND,HWND);
+WINUSERAPI BOOL        WINAPI ChangeMenuA(HMENU,UINT,LPCSTR,UINT,UINT);
+WINUSERAPI BOOL        WINAPI ChangeMenuW(HMENU,UINT,LPCWSTR,UINT,UINT);
+#define                       ChangeMenu WINELIB_NAME_AW(ChangeMenu)
+WINUSERAPI LPSTR       WINAPI CharLowerA(LPSTR);
+WINUSERAPI LPWSTR      WINAPI CharLowerW(LPWSTR);
+#define                       CharLower WINELIB_NAME_AW(CharLower)
+WINUSERAPI DWORD       WINAPI CharLowerBuffA(LPSTR,DWORD);
+WINUSERAPI DWORD       WINAPI CharLowerBuffW(LPWSTR,DWORD);
+#define                       CharLowerBuff WINELIB_NAME_AW(CharLowerBuff)
+WINUSERAPI LPSTR       WINAPI CharNextA(LPCSTR);
+WINUSERAPI LPWSTR      WINAPI CharNextW(LPCWSTR);
+#define                       CharNext WINELIB_NAME_AW(CharNext)
+WINUSERAPI LPSTR       WINAPI CharNextExA(WORD,LPCSTR,DWORD);
+/* no CharNextExW (doesn't make sense) */
+WINUSERAPI LPSTR       WINAPI CharPrevA(LPCSTR,LPCSTR);
+WINUSERAPI LPWSTR      WINAPI CharPrevW(LPCWSTR,LPCWSTR);
+#define                       CharPrev WINELIB_NAME_AW(CharPrev)
+WINUSERAPI LPSTR       WINAPI CharPrevExA(WORD,LPCSTR,LPCSTR,DWORD);
+/* no CharPrevExW (doesn't make sense) */
+WINUSERAPI LPSTR       WINAPI CharUpperA(LPSTR);
+WINUSERAPI LPWSTR      WINAPI CharUpperW(LPWSTR);
+#define                       CharUpper WINELIB_NAME_AW(CharUpper)
+WINUSERAPI DWORD       WINAPI CharUpperBuffA(LPSTR,DWORD);
+WINUSERAPI DWORD       WINAPI CharUpperBuffW(LPWSTR,DWORD);
+#define                       CharUpperBuff WINELIB_NAME_AW(CharUpperBuff)
+WINUSERAPI BOOL        WINAPI CharToOemA(LPCSTR,LPSTR);
+WINUSERAPI BOOL        WINAPI CharToOemW(LPCWSTR,LPSTR);
+#define                       CharToOem WINELIB_NAME_AW(CharToOem)
+WINUSERAPI BOOL        WINAPI CharToOemBuffA(LPCSTR,LPSTR,DWORD);
+WINUSERAPI BOOL        WINAPI CharToOemBuffW(LPCWSTR,LPSTR,DWORD);
+#define                       CharToOemBuff WINELIB_NAME_AW(CharToOemBuff)
+WINUSERAPI BOOL        WINAPI CheckDlgButton(HWND,INT,UINT);
+WINUSERAPI DWORD       WINAPI CheckMenuItem(HMENU,UINT,UINT);
+WINUSERAPI BOOL        WINAPI CheckMenuRadioItem(HMENU,UINT,UINT,UINT,UINT);
+WINUSERAPI BOOL        WINAPI CheckRadioButton(HWND,int,int,int);
+WINUSERAPI HWND        WINAPI ChildWindowFromPoint(HWND,POINT);
+WINUSERAPI HWND        WINAPI ChildWindowFromPointEx(HWND,POINT,UINT);
+WINUSERAPI BOOL        WINAPI ClientToScreen(HWND,LPPOINT);
+WINUSERAPI BOOL        WINAPI ClipCursor(const RECT*);
+WINUSERAPI BOOL        WINAPI CloseClipboard(void);
+WINUSERAPI BOOL        WINAPI CloseDesktop(HDESK);
+WINUSERAPI BOOL        WINAPI CloseWindow(HWND);
+WINUSERAPI BOOL        WINAPI CloseWindowStation(HWINSTA);
+WINUSERAPI INT         WINAPI CopyAcceleratorTableA(HACCEL,LPACCEL,INT);
+WINUSERAPI INT         WINAPI CopyAcceleratorTableW(HACCEL,LPACCEL,INT);
+#define                       CopyAcceleratorTable WINELIB_NAME_AW(CopyAcceleratorTable)
+#define                       CopyCursor(cur) ((HCURSOR)CopyIcon((HICON)(cur)))
+WINUSERAPI HICON       WINAPI CopyIcon(HICON);
+WINUSERAPI HANDLE      WINAPI CopyImage(HANDLE,UINT,INT,INT,UINT);
+WINUSERAPI BOOL        WINAPI CopyRect(RECT*,const RECT*);
+WINUSERAPI INT         WINAPI CountClipboardFormats(void);
+WINUSERAPI HACCEL      WINAPI CreateAcceleratorTableA(LPACCEL,INT);
+WINUSERAPI HACCEL      WINAPI CreateAcceleratorTableW(LPACCEL,INT);
+#define                       CreateAcceleratorTable WINELIB_NAME_AW(CreateAcceleratorTable)
+WINUSERAPI HICON       WINAPI CreateIconIndirect(PICONINFO);
+WINUSERAPI BOOL        WINAPI CreateCaret(HWND,HBITMAP,INT,INT);
+WINUSERAPI HCURSOR     WINAPI CreateCursor(HINSTANCE,INT,INT,INT,INT,LPCVOID,LPCVOID);
+#define                       CreateDialogA(inst,ptr,hwnd,dlg) CreateDialogParamA(inst,ptr,hwnd,dlg,0)
+#define                       CreateDialogW(inst,ptr,hwnd,dlg) CreateDialogParamW(inst,ptr,hwnd,dlg,0)
+#define                       CreateDialog WINELIB_NAME_AW(CreateDialog)
+#define                       CreateDialogIndirectA(inst,ptr,hwnd,dlg) CreateDialogIndirectParamA(inst,ptr,hwnd,dlg,0)
+#define                       CreateDialogIndirectW(inst,ptr,hwnd,dlg) CreateDialogIndirectParamW(inst,ptr,hwnd,dlg,0)
+#define                       CreateDialogIndirect WINELIB_NAME_AW(CreateDialogIndirect)
+WINUSERAPI HWND        WINAPI CreateDialogIndirectParamA(HINSTANCE,LPCDLGTEMPLATEA,HWND,DLGPROC,LPARAM);
+WINUSERAPI HWND        WINAPI CreateDialogIndirectParamW(HINSTANCE,LPCDLGTEMPLATEW,HWND,DLGPROC,LPARAM);
+#define                       CreateDialogIndirectParam WINELIB_NAME_AW(CreateDialogIndirectParam)
+WINUSERAPI HWND        WINAPI CreateDialogParamA(HINSTANCE,LPCSTR,HWND,DLGPROC,LPARAM);
+WINUSERAPI HWND        WINAPI CreateDialogParamW(HINSTANCE,LPCWSTR,HWND,DLGPROC,LPARAM);
+#define                       CreateDialogParam WINELIB_NAME_AW(CreateDialogParam)
+WINUSERAPI HICON       WINAPI CreateIcon(HINSTANCE,INT,INT,BYTE,BYTE,LPCVOID,LPCVOID);
+WINUSERAPI HICON       WINAPI CreateIconFromResource(LPBYTE,UINT,BOOL,DWORD);
+WINUSERAPI HICON       WINAPI CreateIconFromResourceEx(LPBYTE,UINT,BOOL,DWORD,INT,INT,UINT);
+WINUSERAPI HMENU       WINAPI CreateMenu(void);
+WINUSERAPI HMENU       WINAPI CreatePopupMenu(void);
+#define                       CreateWindowA(className,titleName,style,x,y,width,height,parent,menu,instance,param) CreateWindowExA(0,className,titleName,style,x,y,width,height,parent,menu,instance,param)
+#define                       CreateWindowW(className,titleName,style,x,y,width,height,parent,menu,instance,param) CreateWindowExW(0,className,titleName,style,x,y,width,height,parent,menu,instance,param)
+#define                       CreateWindow WINELIB_NAME_AW(CreateWindow)
+WINUSERAPI HWND        WINAPI CreateWindowExA(DWORD,LPCSTR,LPCSTR,DWORD,INT,INT,INT,INT,HWND,HMENU,HINSTANCE,LPVOID);
+WINUSERAPI HWND        WINAPI CreateWindowExW(DWORD,LPCWSTR,LPCWSTR,DWORD,INT,INT,INT,INT,HWND,HMENU,HINSTANCE,LPVOID);
+#define                       CreateWindowEx WINELIB_NAME_AW(CreateWindowEx)
+WINUSERAPI HWINSTA     WINAPI CreateWindowStationA(LPCSTR,DWORD,ACCESS_MASK,LPSECURITY_ATTRIBUTES);
+WINUSERAPI HWINSTA     WINAPI CreateWindowStationW(LPCWSTR,DWORD,ACCESS_MASK,LPSECURITY_ATTRIBUTES);
+#define                       CreateWindowStation WINELIB_NAME_AW(CreateWindowStation)
+WINUSERAPI HWND        WINAPI CreateMDIWindowA(LPCSTR,LPCSTR,DWORD,INT,INT,INT,INT,HWND,HINSTANCE,LPARAM);
+WINUSERAPI HWND        WINAPI CreateMDIWindowW(LPCWSTR,LPCWSTR,DWORD,INT,INT,INT,INT,HWND,HINSTANCE,LPARAM);
+#define                       CreateMDIWindow WINELIB_NAME_AW(CreateMDIWindow)
+WINUSERAPI LRESULT     WINAPI DefDlgProcA(HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI LRESULT     WINAPI DefDlgProcW(HWND,UINT,WPARAM,LPARAM);
+#define                       DefDlgProc WINELIB_NAME_AW(DefDlgProc)
+WINUSERAPI HDWP        WINAPI DeferWindowPos(HDWP,HWND,HWND,INT,INT,INT,INT,UINT);
+WINUSERAPI LRESULT     WINAPI DefFrameProcA(HWND,HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI LRESULT     WINAPI DefFrameProcW(HWND,HWND,UINT,WPARAM,LPARAM);
+#define                       DefFrameProc WINELIB_NAME_AW(DefFrameProc)
+#define                       DefHookProc(code,wparam,lparam,phhook) CallNextHookEx(*(phhook),code,wparam,lparam)
+WINUSERAPI LRESULT     WINAPI DefMDIChildProcA(HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI LRESULT     WINAPI DefMDIChildProcW(HWND,UINT,WPARAM,LPARAM);
+#define                       DefMDIChildProc WINELIB_NAME_AW(DefMDIChildProc)
+WINUSERAPI LRESULT     WINAPI DefRawInputProc(PRAWINPUT*,INT,UINT);
+WINUSERAPI LRESULT     WINAPI DefWindowProcA(HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI LRESULT     WINAPI DefWindowProcW(HWND,UINT,WPARAM,LPARAM);
+#define                       DefWindowProc WINELIB_NAME_AW(DefWindowProc)
+WINUSERAPI BOOL        WINAPI DeleteMenu(HMENU,UINT,UINT);
+WINUSERAPI BOOL        WINAPI DestroyAcceleratorTable(HACCEL);
+WINUSERAPI BOOL        WINAPI DestroyCaret(void);
+WINUSERAPI BOOL        WINAPI DestroyCursor(HCURSOR);
+WINUSERAPI BOOL        WINAPI DestroyIcon(HICON);
+WINUSERAPI BOOL        WINAPI DestroyMenu(HMENU);
+WINUSERAPI BOOL        WINAPI DestroyWindow(HWND);
+#define                       DialogBoxA(inst,template,owner,func) DialogBoxParamA(inst,template,owner,func,0)
+#define                       DialogBoxW(inst,template,owner,func) DialogBoxParamW(inst,template,owner,func,0)
+#define                       DialogBox WINELIB_NAME_AW(DialogBox)
+#define                       DialogBoxIndirectA(inst,template,owner,func) DialogBoxIndirectParamA(inst,template,owner,func,0)
+#define                       DialogBoxIndirectW(inst,template,owner,func) DialogBoxIndirectParamW(inst,template,owner,func,0)
+#define                       DialogBoxIndirect WINELIB_NAME_AW(DialogBoxIndirect)
+WINUSERAPI INT_PTR     WINAPI DialogBoxIndirectParamA(HINSTANCE,LPCDLGTEMPLATEA,HWND,DLGPROC,LPARAM);
+WINUSERAPI INT_PTR     WINAPI DialogBoxIndirectParamW(HINSTANCE,LPCDLGTEMPLATEW,HWND,DLGPROC,LPARAM);
+#define                       DialogBoxIndirectParam WINELIB_NAME_AW(DialogBoxIndirectParam)
+WINUSERAPI INT_PTR     WINAPI DialogBoxParamA(HINSTANCE,LPCSTR,HWND,DLGPROC,LPARAM);
+WINUSERAPI INT_PTR     WINAPI DialogBoxParamW(HINSTANCE,LPCWSTR,HWND,DLGPROC,LPARAM);
+#define                       DialogBoxParam WINELIB_NAME_AW(DialogBoxParam)
+WINUSERAPI LRESULT     WINAPI DispatchMessageA(const MSG*);
+WINUSERAPI LRESULT     WINAPI DispatchMessageW(const MSG*);
+#define                       DispatchMessage WINELIB_NAME_AW(DispatchMessage)
+WINUSERAPI INT         WINAPI DlgDirListA(HWND,LPSTR,INT,INT,UINT);
+WINUSERAPI INT         WINAPI DlgDirListW(HWND,LPWSTR,INT,INT,UINT);
+#define                       DlgDirList WINELIB_NAME_AW(DlgDirList)
+WINUSERAPI INT         WINAPI DlgDirListComboBoxA(HWND,LPSTR,INT,INT,UINT);
+WINUSERAPI INT         WINAPI DlgDirListComboBoxW(HWND,LPWSTR,INT,INT,UINT);
+#define                       DlgDirListComboBox WINELIB_NAME_AW(DlgDirListComboBox)
+WINUSERAPI BOOL        WINAPI DlgDirSelectComboBoxExA(HWND,LPSTR,INT,INT);
+WINUSERAPI BOOL        WINAPI DlgDirSelectComboBoxExW(HWND,LPWSTR,INT,INT);
+#define                       DlgDirSelectComboBoxEx WINELIB_NAME_AW(DlgDirSelectComboBoxEx)
+WINUSERAPI BOOL        WINAPI DlgDirSelectExA(HWND,LPSTR,INT,INT);
+WINUSERAPI BOOL        WINAPI DlgDirSelectExW(HWND,LPWSTR,INT,INT);
+#define                       DlgDirSelectEx WINELIB_NAME_AW(DlgDirSelectEx)
+WINUSERAPI BOOL        WINAPI DragDetect(HWND,POINT);
+WINUSERAPI DWORD       WINAPI DragObject(HWND,HWND,UINT,ULONG_PTR,HCURSOR);
+WINUSERAPI BOOL        WINAPI DrawAnimatedRects(HWND,int,const RECT*,const RECT*);
+WINUSERAPI BOOL        WINAPI DrawCaption(HWND,HDC,const RECT*,UINT);
+WINUSERAPI BOOL        WINAPI DrawCaptionTempA(HWND,HDC,const RECT*,HFONT,HICON,LPCSTR,UINT);
+WINUSERAPI BOOL        WINAPI DrawCaptionTempW(HWND,HDC,const RECT*,HFONT,HICON,LPCWSTR,UINT);
+#define                       DrawCaptionTemp WINELIB_NAME_AW(DrawCaptionTemp)
+WINUSERAPI BOOL        WINAPI DrawEdge(HDC,LPRECT,UINT,UINT);
+WINUSERAPI BOOL        WINAPI DrawFocusRect(HDC,const RECT*);
+WINUSERAPI BOOL        WINAPI DrawFrameControl(HDC,LPRECT,UINT,UINT);
+WINUSERAPI BOOL        WINAPI DrawIcon(HDC,INT,INT,HICON);
+WINUSERAPI BOOL        WINAPI DrawIconEx(HDC,INT,INT,HICON,INT,INT,UINT,HBRUSH,UINT);
+WINUSERAPI BOOL        WINAPI DrawMenuBar(HWND);
+WINUSERAPI BOOL        WINAPI DrawStateA(HDC,HBRUSH,DRAWSTATEPROC,LPARAM,WPARAM,INT,INT,INT,INT,UINT);
+WINUSERAPI BOOL        WINAPI DrawStateW(HDC,HBRUSH,DRAWSTATEPROC,LPARAM,WPARAM,INT,INT,INT,INT,UINT);
+#define                       DrawState WINELIB_NAME_AW(DrawState)
+WINUSERAPI INT         WINAPI DrawTextA(HDC,LPCSTR,INT,LPRECT,UINT);
+WINUSERAPI INT         WINAPI DrawTextW(HDC,LPCWSTR,INT,LPRECT,UINT);
+#define                       DrawText WINELIB_NAME_AW(DrawText)
+WINUSERAPI INT         WINAPI DrawTextExA(HDC,LPSTR,INT,LPRECT,UINT,LPDRAWTEXTPARAMS);
+WINUSERAPI INT         WINAPI DrawTextExW(HDC,LPWSTR,INT,LPRECT,UINT,LPDRAWTEXTPARAMS);
+#define                       DrawTextEx WINELIB_NAME_AW(DrawTextEx)
+WINUSERAPI BOOL        WINAPI EmptyClipboard(void);
+WINUSERAPI BOOL        WINAPI EnableMenuItem(HMENU,UINT,UINT);
+WINUSERAPI BOOL        WINAPI EnableScrollBar(HWND,UINT,UINT);
+WINUSERAPI BOOL        WINAPI EnableWindow(HWND,BOOL);
+WINUSERAPI BOOL        WINAPI EndDeferWindowPos(HDWP);
+WINUSERAPI BOOL        WINAPI EndDialog(HWND,INT_PTR);
+WINUSERAPI BOOL        WINAPI EndMenu(void);
+WINUSERAPI BOOL        WINAPI EndPaint(HWND,const PAINTSTRUCT*);
+WINUSERAPI BOOL        WINAPI EnumChildWindows(HWND,WNDENUMPROC,LPARAM);
+WINUSERAPI UINT        WINAPI EnumClipboardFormats(UINT);
+WINUSERAPI BOOL        WINAPI EnumDesktopsA(HWINSTA,DESKTOPENUMPROCA,LPARAM);
+WINUSERAPI BOOL        WINAPI EnumDesktopsW(HWINSTA,DESKTOPENUMPROCW,LPARAM);
+#define                       EnumDesktops WINELIB_NAME_AW(EnumDesktops)
+WINUSERAPI BOOL        WINAPI EnumDesktopWindows(HDESK,WNDENUMPROC,LPARAM);
+WINUSERAPI BOOL        WINAPI EnumDisplayMonitors(HDC,LPRECT,MONITORENUMPROC,LPARAM);
+WINUSERAPI INT         WINAPI EnumPropsA(HWND,PROPENUMPROCA);
+WINUSERAPI INT         WINAPI EnumPropsW(HWND,PROPENUMPROCW);
+#define                       EnumProps WINELIB_NAME_AW(EnumProps)
+WINUSERAPI INT         WINAPI EnumPropsExA(HWND,PROPENUMPROCEXA,LPARAM);
+WINUSERAPI INT         WINAPI EnumPropsExW(HWND,PROPENUMPROCEXW,LPARAM);
+#define                       EnumPropsEx WINELIB_NAME_AW(EnumPropsEx)
+WINUSERAPI BOOL        WINAPI EnumThreadWindows(DWORD,WNDENUMPROC,LPARAM);
+WINUSERAPI BOOL        WINAPI EnumWindows(WNDENUMPROC,LPARAM);
+WINUSERAPI BOOL        WINAPI EnumWindowStationsA(WINSTAENUMPROCA,LPARAM);
+WINUSERAPI BOOL        WINAPI EnumWindowStationsW(WINSTAENUMPROCW,LPARAM);
+#define                       EnumWindowStations WINELIB_NAME_AW(EnumWindowStations)
+WINUSERAPI BOOL        WINAPI EqualRect(const RECT*,const RECT*);
+WINUSERAPI INT         WINAPI ExcludeUpdateRgn(HDC,HWND);
+#define                       ExitWindows(a,b) ExitWindowsEx(EWX_LOGOFF,0xffffffff)
+WINUSERAPI BOOL        WINAPI ExitWindowsEx(UINT,DWORD);
+WINUSERAPI INT         WINAPI FillRect(HDC,const RECT*,HBRUSH);
+WINUSERAPI HWND        WINAPI FindWindowA(LPCSTR,LPCSTR);
+WINUSERAPI HWND        WINAPI FindWindowW(LPCWSTR,LPCWSTR);
+#define                       FindWindow WINELIB_NAME_AW(FindWindow)
+WINUSERAPI HWND        WINAPI FindWindowExA(HWND,HWND,LPCSTR,LPCSTR);
+WINUSERAPI HWND        WINAPI FindWindowExW(HWND,HWND,LPCWSTR,LPCWSTR);
+#define                       FindWindowEx WINELIB_NAME_AW(FindWindowEx)
+WINUSERAPI BOOL        WINAPI FlashWindow(HWND,BOOL);
+WINUSERAPI BOOL        WINAPI FlashWindowEx(PFLASHWINFO);
+WINUSERAPI INT         WINAPI FrameRect(HDC,const RECT*,HBRUSH);
+WINUSERAPI HWND        WINAPI GetActiveWindow(void);
+WINUSERAPI BOOL        WINAPI GetAltTabInfoA(HWND,INT,PALTTABINFO,LPSTR,UINT);
+WINUSERAPI BOOL        WINAPI GetAltTabInfoW(HWND,INT,PALTTABINFO,LPWSTR,UINT);
+#define                       GetAltTabInfo WINELIB_NAME_AW(GetAltTabInfo)
+WINUSERAPI HWND        WINAPI GetAncestor(HWND,UINT);
+WINUSERAPI DWORD       WINAPI GetAppCompatFlags(HTASK);
+WINUSERAPI SHORT       WINAPI GetAsyncKeyState(INT);
+WINUSERAPI HWND        WINAPI GetCapture(void);
+WINUSERAPI UINT        WINAPI GetCaretBlinkTime(void);
+WINUSERAPI BOOL        WINAPI GetCaretPos(LPPOINT);
+WINUSERAPI BOOL        WINAPI GetClassInfoA(HINSTANCE,LPCSTR,WNDCLASSA *);
+WINUSERAPI BOOL        WINAPI GetClassInfoW(HINSTANCE,LPCWSTR,WNDCLASSW *);
+#define                       GetClassInfo WINELIB_NAME_AW(GetClassInfo)
+WINUSERAPI BOOL        WINAPI GetClassInfoExA(HINSTANCE,LPCSTR,WNDCLASSEXA *);
+WINUSERAPI BOOL        WINAPI GetClassInfoExW(HINSTANCE,LPCWSTR,WNDCLASSEXW *);
+#define                       GetClassInfoEx WINELIB_NAME_AW(GetClassInfoEx)
+WINUSERAPI DWORD       WINAPI GetClassLongA(HWND,INT);
+WINUSERAPI DWORD       WINAPI GetClassLongW(HWND,INT);
+#define                       GetClassLong WINELIB_NAME_AW(GetClassLong)
+#ifdef _WIN64
+WINUSERAPI ULONG_PTR   WINAPI GetClassLongPtrA(HWND,INT);
+WINUSERAPI ULONG_PTR   WINAPI GetClassLongPtrW(HWND,INT);
+#else
+#define                       GetClassLongPtrA GetClassLongA
+#define                       GetClassLongPtrW GetClassLongW
+#endif
+#define                       GetClassLongPtr WINELIB_NAME_AW(GetClassLongPtr)
+WINUSERAPI INT         WINAPI GetClassNameA(HWND,LPSTR,INT);
+WINUSERAPI INT         WINAPI GetClassNameW(HWND,LPWSTR,INT);
+#define                       GetClassName WINELIB_NAME_AW(GetClassName)
+WINUSERAPI WORD        WINAPI GetClassWord(HWND,INT);
+WINUSERAPI BOOL        WINAPI GetClientRect(HWND,LPRECT);
+WINUSERAPI HANDLE      WINAPI GetClipboardData(UINT);
+WINUSERAPI INT         WINAPI GetClipboardFormatNameA(UINT,LPSTR,INT);
+WINUSERAPI INT         WINAPI GetClipboardFormatNameW(UINT,LPWSTR,INT);
+#define                       GetClipboardFormatName WINELIB_NAME_AW(GetClipboardFormatName)
+WINUSERAPI HWND        WINAPI GetClipboardOwner(void);
+WINUSERAPI DWORD       WINAPI GetClipboardSequenceNumber(VOID);
+WINUSERAPI HWND        WINAPI GetClipboardViewer(void);
+WINUSERAPI BOOL        WINAPI GetClipCursor(LPRECT);
+WINUSERAPI BOOL        WINAPI GetComboBoxInfo(HWND,PCOMBOBOXINFO);
+WINUSERAPI HCURSOR     WINAPI GetCursor(void);
+WINUSERAPI BOOL        WINAPI GetCursorInfo(PCURSORINFO);
+WINUSERAPI BOOL        WINAPI GetCursorPos(LPPOINT);
+WINUSERAPI HDC         WINAPI GetDC(HWND);
+WINUSERAPI HDC         WINAPI GetDCEx(HWND,HRGN,DWORD);
+WINUSERAPI HWND        WINAPI GetDesktopWindow(void);
+WINUSERAPI DWORD       WINAPI GetDialogBaseUnits(void);
+WINUSERAPI INT         WINAPI GetDlgCtrlID(HWND);
+WINUSERAPI HWND        WINAPI GetDlgItem(HWND,INT);
+WINUSERAPI UINT        WINAPI GetDlgItemInt(HWND,INT,BOOL*,BOOL);
+WINUSERAPI UINT        WINAPI GetDlgItemTextA(HWND,INT,LPSTR,INT);
+WINUSERAPI UINT        WINAPI GetDlgItemTextW(HWND,INT,LPWSTR,INT);
+#define                       GetDlgItemText WINELIB_NAME_AW(GetDlgItemText)
+WINUSERAPI UINT        WINAPI GetDoubleClickTime(void);
+WINUSERAPI HWND        WINAPI GetFocus(void);
+WINUSERAPI HWND        WINAPI GetForegroundWindow(void);
+WINUSERAPI BOOL        WINAPI GetGUIThreadInfo(DWORD,GUITHREADINFO*);
+WINUSERAPI BOOL        WINAPI GetIconInfo(HICON,PICONINFO);
+WINUSERAPI BOOL        WINAPI GetInputState(void);
+WINUSERAPI UINT        WINAPI GetInternalWindowPos(HWND,LPRECT,LPPOINT);
+WINUSERAPI UINT        WINAPI GetKBCodePage(void);
+WINUSERAPI HKL         WINAPI GetKeyboardLayout(DWORD);
+WINUSERAPI UINT        WINAPI GetKeyboardLayoutList(INT,HKL *);
+WINUSERAPI BOOL        WINAPI GetKeyboardState(LPBYTE);
+WINUSERAPI INT         WINAPI GetKeyboardType(INT);
+WINUSERAPI INT         WINAPI GetKeyNameTextA(LONG,LPSTR,INT);
+WINUSERAPI INT         WINAPI GetKeyNameTextW(LONG,LPWSTR,INT);
+#define                       GetKeyNameText WINELIB_NAME_AW(GetKeyNameText)
+WINUSERAPI BOOL        WINAPI GetKeyboardLayoutNameA(LPSTR);
+WINUSERAPI BOOL        WINAPI GetKeyboardLayoutNameW(LPWSTR);
+#define                       GetKeyboardLayoutName WINELIB_NAME_AW(GetKeyboardLayoutName)
+WINUSERAPI SHORT       WINAPI GetKeyState(INT);
+WINUSERAPI HWND        WINAPI GetLastActivePopup(HWND);
+WINUSERAPI BOOL        WINAPI GetLastInputInfo(PLASTINPUTINFO);
+WINUSERAPI UINT        WINAPI GetRawInputBuffer(PRAWINPUT,PUINT,UINT);
+WINUSERAPI UINT        WINAPI GetRawInputData(HRAWINPUT,UINT,LPVOID,PUINT,UINT);
+WINUSERAPI UINT        WINAPI GetRawInputDeviceInfoA(HANDLE,UINT,LPVOID,PUINT);
+WINUSERAPI UINT        WINAPI GetRawInputDeviceInfoW(HANDLE,UINT,LPVOID,PUINT);
+#define                       GetRawInputDeviceInfo WINELIB_NAME_AW(GetRawInputDeviceInfo)
+WINUSERAPI UINT        WINAPI GetRawInputDeviceList(PRAWINPUTDEVICELIST,PUINT,UINT);
+WINUSERAPI BOOL        WINAPI GetLayeredWindowAttributes(HWND,COLORREF*,BYTE*,DWORD*);
+WINUSERAPI HMENU       WINAPI GetMenu(HWND);
+WINUSERAPI BOOL        WINAPI GetMenuBarInfo(HWND,LONG,LONG,PMENUBARINFO);
+WINUSERAPI DWORD       WINAPI GetMenuCheckMarkDimensions(void);
+WINUSERAPI DWORD       WINAPI GetMenuContextHelpId(HMENU);
+WINUSERAPI UINT        WINAPI GetMenuDefaultItem(HMENU,UINT,UINT);
+WINUSERAPI BOOL        WINAPI GetMenuInfo(HMENU,LPMENUINFO);
+WINUSERAPI INT         WINAPI GetMenuItemCount(HMENU);
+WINUSERAPI UINT        WINAPI GetMenuItemID(HMENU,INT);
+WINUSERAPI BOOL        WINAPI GetMenuItemInfoA(HMENU,UINT,BOOL,MENUITEMINFOA*);
+WINUSERAPI BOOL        WINAPI GetMenuItemInfoW(HMENU,UINT,BOOL,MENUITEMINFOW*);
+#define                       GetMenuItemInfo WINELIB_NAME_AW(GetMenuItemInfo)
+WINUSERAPI BOOL        WINAPI GetMenuItemRect(HWND,HMENU,UINT,LPRECT);
+WINUSERAPI UINT        WINAPI GetMenuState(HMENU,UINT,UINT);
+WINUSERAPI INT         WINAPI GetMenuStringA(HMENU,UINT,LPSTR,INT,UINT);
+WINUSERAPI INT         WINAPI GetMenuStringW(HMENU,UINT,LPWSTR,INT,UINT);
+#define                       GetMenuString WINELIB_NAME_AW(GetMenuString)
+WINUSERAPI BOOL        WINAPI GetMessageA(LPMSG,HWND,UINT,UINT);
+WINUSERAPI BOOL        WINAPI GetMessageW(LPMSG,HWND,UINT,UINT);
+#define                       GetMessage WINELIB_NAME_AW(GetMessage)
+WINUSERAPI LPARAM      WINAPI GetMessageExtraInfo(void);
+WINUSERAPI DWORD       WINAPI GetMessagePos(void);
+WINUSERAPI LONG        WINAPI GetMessageTime(void);
+WINUSERAPI BOOL        WINAPI GetMonitorInfoA(HMONITOR,LPMONITORINFO);
+WINUSERAPI BOOL        WINAPI GetMonitorInfoW(HMONITOR,LPMONITORINFO);
+#define                       GetMonitorInfo WINELIB_NAME_AW(GetMonitorInfo)
+WINUSERAPI HWND        WINAPI GetNextDlgGroupItem(HWND,HWND,BOOL);
+WINUSERAPI HWND        WINAPI GetNextDlgTabItem(HWND,HWND,BOOL);
+#define                       GetNextWindow GetWindow
+WINUSERAPI HWND        WINAPI GetOpenClipboardWindow(void);
+WINUSERAPI HWND        WINAPI GetParent(HWND);
+WINUSERAPI INT         WINAPI GetPriorityClipboardFormat(UINT*,INT);
+WINUSERAPI BOOL        WINAPI GetProcessDefaultLayout(DWORD*);
+WINUSERAPI HANDLE      WINAPI GetPropA(HWND,LPCSTR);
+WINUSERAPI HANDLE      WINAPI GetPropW(HWND,LPCWSTR);
+#define                       GetProp WINELIB_NAME_AW(GetProp)
+WINUSERAPI DWORD       WINAPI GetQueueStatus(UINT);
+WINUSERAPI BOOL        WINAPI GetScrollInfo(HWND,INT,LPSCROLLINFO);
+WINUSERAPI BOOL        WINAPI GetScrollBarInfo(HWND,LONG,LPSCROLLBARINFO);
+WINUSERAPI INT         WINAPI GetScrollPos(HWND,INT);
+WINUSERAPI BOOL        WINAPI GetScrollRange(HWND,INT,LPINT,LPINT);
+WINUSERAPI HWND        WINAPI GetShellWindow(void);
+WINUSERAPI HMENU       WINAPI GetSubMenu(HMENU,INT);
+WINUSERAPI HBRUSH      WINAPI GetSysColorBrush(INT);
+#define                       GetSysModalWindow() ((HWND)0)
+WINUSERAPI HMENU       WINAPI GetSystemMenu(HWND,BOOL);
+WINUSERAPI INT         WINAPI GetSystemMetrics(INT);
+WINUSERAPI DWORD       WINAPI GetTabbedTextExtentA(HDC,LPCSTR,INT,INT,const INT*);
+WINUSERAPI DWORD       WINAPI GetTabbedTextExtentW(HDC,LPCWSTR,INT,INT,const INT*);
+#define                       GetTabbedTextExtent WINELIB_NAME_AW(GetTabbedTextExtent)
+WINUSERAPI BOOL        WINAPI GetTitleBarInfo(HWND,PTITLEBARINFO);
+WINUSERAPI HDESK       WINAPI GetThreadDesktop(DWORD);
+WINUSERAPI HWND        WINAPI GetTopWindow(HWND);
+WINUSERAPI BOOL        WINAPI GetUpdateRect(HWND,LPRECT,BOOL);
+WINUSERAPI INT         WINAPI GetUpdateRgn(HWND,HRGN,BOOL);
+WINUSERAPI BOOL        WINAPI GetUserObjectInformationA(HANDLE,INT,LPVOID,DWORD,LPDWORD);
+WINUSERAPI BOOL        WINAPI GetUserObjectInformationW(HANDLE,INT,LPVOID,DWORD,LPDWORD);
+#define                       GetUserObjectInformation WINELIB_NAME_AW(GetUserObjectInformation)
+WINUSERAPI BOOL        WINAPI GetUserObjectSecurity(HANDLE,PSECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,LPDWORD);
+WINUSERAPI HWND        WINAPI GetWindow(HWND,UINT);
+WINUSERAPI DWORD       WINAPI GetWindowContextHelpId(HWND);
+WINUSERAPI HDC         WINAPI GetWindowDC(HWND);
+WINUSERAPI BOOL        WINAPI GetWindowInfo(HWND, PWINDOWINFO);
+WINUSERAPI LONG        WINAPI GetWindowLongA(HWND,INT);
+WINUSERAPI LONG        WINAPI GetWindowLongW(HWND,INT);
+#define                       GetWindowLong WINELIB_NAME_AW(GetWindowLong)
+#ifdef _WIN64
+WINUSERAPI LONG_PTR    WINAPI GetWindowLongPtrA(HWND,INT);
+WINUSERAPI LONG_PTR    WINAPI GetWindowLongPtrW(HWND,INT);
+#else
+#define                       GetWindowLongPtrA GetWindowLongA
+#define                       GetWindowLongPtrW GetWindowLongW
+#endif
+#define                       GetWindowLongPtr WINELIB_NAME_AW(GetWindowLongPtr)
+WINUSERAPI UINT        WINAPI GetWindowModuleFileNameA(HWND,LPSTR,UINT);
+WINUSERAPI UINT        WINAPI GetWindowModuleFileNameW(HWND,LPWSTR,UINT);
+#define                       GetWindowModuleFileName WINELIB_NAME_AW(GetWindowModuleFileName)
+WINUSERAPI BOOL        WINAPI GetWindowPlacement(HWND,LPWINDOWPLACEMENT);
+WINUSERAPI BOOL        WINAPI GetWindowRect(HWND,LPRECT);
+WINUSERAPI INT         WINAPI GetWindowRgn(HWND,HRGN);
+WINUSERAPI HWINSTA     WINAPI GetProcessWindowStation(void);
+#define                       GetWindowTask(hwnd) ((HTASK)GetWindowThreadProcessId(hwnd,NULL))
+WINUSERAPI INT         WINAPI GetWindowTextA(HWND,LPSTR,INT);
+WINUSERAPI INT         WINAPI GetWindowTextW(HWND,LPWSTR,INT);
+#define                       GetWindowText WINELIB_NAME_AW(GetWindowText)
+WINUSERAPI INT         WINAPI GetWindowTextLengthA(HWND);
+WINUSERAPI INT         WINAPI GetWindowTextLengthW(HWND);
+#define                       GetWindowTextLength WINELIB_NAME_AW(GetWindowTextLength)
+WINUSERAPI DWORD       WINAPI GetWindowThreadProcessId(HWND,LPDWORD);
+WINUSERAPI WORD        WINAPI GetWindowWord(HWND,INT);
+WINUSERAPI BOOL        WINAPI GrayStringA(HDC,HBRUSH,GRAYSTRINGPROC,LPARAM,INT,INT,INT,INT,INT);
+WINUSERAPI BOOL        WINAPI GrayStringW(HDC,HBRUSH,GRAYSTRINGPROC,LPARAM,INT,INT,INT,INT,INT);
+#define                       GrayString WINELIB_NAME_AW(GrayString)
+WINUSERAPI BOOL        WINAPI HideCaret(HWND);
+WINUSERAPI BOOL        WINAPI HiliteMenuItem(HWND,HMENU,UINT,UINT);
+WINUSERAPI BOOL        WINAPI InflateRect(LPRECT,INT,INT);
+WINUSERAPI BOOL        WINAPI InSendMessage(void);
+WINUSERAPI DWORD       WINAPI InSendMessageEx(LPVOID);
+WINUSERAPI BOOL        WINAPI InsertMenuA(HMENU,UINT,UINT,UINT_PTR,LPCSTR);
+WINUSERAPI BOOL        WINAPI InsertMenuW(HMENU,UINT,UINT,UINT_PTR,LPCWSTR);
+#define                       InsertMenu WINELIB_NAME_AW(InsertMenu)
+WINUSERAPI BOOL        WINAPI InsertMenuItemA(HMENU,UINT,BOOL,const MENUITEMINFOA*);
+WINUSERAPI BOOL        WINAPI InsertMenuItemW(HMENU,UINT,BOOL,const MENUITEMINFOW*);
+#define                       InsertMenuItem WINELIB_NAME_AW(InsertMenuItem)
+WINUSERAPI INT         WINAPI InternalGetWindowText(HWND,LPWSTR,INT);
+WINUSERAPI BOOL        WINAPI IntersectRect(LPRECT,const RECT*,const RECT*);
+WINUSERAPI BOOL        WINAPI InvalidateRect(HWND,const RECT*,BOOL);
+WINUSERAPI BOOL        WINAPI InvalidateRgn(HWND,HRGN,BOOL);
+WINUSERAPI BOOL        WINAPI InvertRect(HDC,const RECT*);
+WINUSERAPI BOOL        WINAPI IsCharAlphaA(CHAR);
+WINUSERAPI BOOL        WINAPI IsCharAlphaW(WCHAR);
+#define                       IsCharAlpha WINELIB_NAME_AW(IsCharAlpha)
+WINUSERAPI BOOL        WINAPI IsCharAlphaNumericA(CHAR);
+WINUSERAPI BOOL        WINAPI IsCharAlphaNumericW(WCHAR);
+#define                       IsCharAlphaNumeric WINELIB_NAME_AW(IsCharAlphaNumeric)
+WINUSERAPI BOOL        WINAPI IsCharLowerA(CHAR);
+WINUSERAPI BOOL        WINAPI IsCharLowerW(WCHAR);
+#define                       IsCharLower WINELIB_NAME_AW(IsCharLower)
+WINUSERAPI BOOL        WINAPI IsCharUpperA(CHAR);
+WINUSERAPI BOOL        WINAPI IsCharUpperW(WCHAR);
+#define                       IsCharUpper WINELIB_NAME_AW(IsCharUpper)
+WINUSERAPI BOOL        WINAPI IsChild(HWND,HWND);
+WINUSERAPI BOOL        WINAPI IsClipboardFormatAvailable(UINT);
+WINUSERAPI BOOL        WINAPI IsDialogMessageA(HWND,LPMSG);
+WINUSERAPI BOOL        WINAPI IsDialogMessageW(HWND,LPMSG);
+#define                       IsDialogMessage WINELIB_NAME_AW(IsDialogMessage)
+WINUSERAPI UINT        WINAPI IsDlgButtonChecked(HWND,int);
+WINUSERAPI BOOL        WINAPI IsHungAppWindow(HWND);
+WINUSERAPI BOOL        WINAPI IsIconic(HWND);
+WINUSERAPI BOOL        WINAPI IsMenu(HMENU);
+WINUSERAPI BOOL        WINAPI IsRectEmpty(const RECT*);
+WINUSERAPI BOOL        WINAPI IsWinEventHookInstalled(DWORD);
+WINUSERAPI BOOL        WINAPI IsWindow(HWND);
+WINUSERAPI BOOL        WINAPI IsWindowEnabled(HWND);
+WINUSERAPI BOOL        WINAPI IsWindowUnicode(HWND);
+WINUSERAPI BOOL        WINAPI IsWindowVisible(HWND);
+WINUSERAPI BOOL        WINAPI IsZoomed(HWND);
+WINUSERAPI BOOL        WINAPI KillSystemTimer(HWND,UINT_PTR);
+WINUSERAPI BOOL        WINAPI KillTimer(HWND,UINT_PTR);
+WINUSERAPI HACCEL      WINAPI LoadAcceleratorsA(HINSTANCE,LPCSTR);
+WINUSERAPI HACCEL      WINAPI LoadAcceleratorsW(HINSTANCE,LPCWSTR);
+#define                       LoadAccelerators WINELIB_NAME_AW(LoadAccelerators)
+WINUSERAPI HBITMAP     WINAPI LoadBitmapA(HINSTANCE,LPCSTR);
+WINUSERAPI HBITMAP     WINAPI LoadBitmapW(HINSTANCE,LPCWSTR);
+#define                       LoadBitmap WINELIB_NAME_AW(LoadBitmap)
+WINUSERAPI HCURSOR     WINAPI LoadCursorA(HINSTANCE,LPCSTR);
+WINUSERAPI HCURSOR     WINAPI LoadCursorW(HINSTANCE,LPCWSTR);
+#define                       LoadCursor WINELIB_NAME_AW(LoadCursor)
+WINUSERAPI HCURSOR     WINAPI LoadCursorFromFileA(LPCSTR);
+WINUSERAPI HCURSOR     WINAPI LoadCursorFromFileW(LPCWSTR);
+#define                       LoadCursorFromFile WINELIB_NAME_AW(LoadCursorFromFile)
+WINUSERAPI HICON       WINAPI LoadIconA(HINSTANCE,LPCSTR);
+WINUSERAPI HICON       WINAPI LoadIconW(HINSTANCE,LPCWSTR);
+#define                       LoadIcon WINELIB_NAME_AW(LoadIcon)
+WINUSERAPI HANDLE      WINAPI LoadImageA(HINSTANCE,LPCSTR,UINT,INT,INT,UINT);
+WINUSERAPI HANDLE      WINAPI LoadImageW(HINSTANCE,LPCWSTR,UINT,INT,INT,UINT);
+#define                       LoadImage WINELIB_NAME_AW(LoadImage)
+WINUSERAPI HKL         WINAPI LoadKeyboardLayoutA(LPCSTR,UINT);
+WINUSERAPI HKL         WINAPI LoadKeyboardLayoutW(LPCWSTR,UINT);
+#define                       LoadKeyboardLayout WINELIB_NAME_AW(LoadKeyboardLayout)
+WINUSERAPI HMENU       WINAPI LoadMenuA(HINSTANCE,LPCSTR);
+WINUSERAPI HMENU       WINAPI LoadMenuW(HINSTANCE,LPCWSTR);
+#define                       LoadMenu WINELIB_NAME_AW(LoadMenu)
+WINUSERAPI HMENU       WINAPI LoadMenuIndirectA(LPCVOID);
+WINUSERAPI HMENU       WINAPI LoadMenuIndirectW(LPCVOID);
+#define                       LoadMenuIndirect WINELIB_NAME_AW(LoadMenuIndirect)
+WINUSERAPI INT         WINAPI LoadStringA(HINSTANCE,UINT,LPSTR,INT);
+WINUSERAPI INT         WINAPI LoadStringW(HINSTANCE,UINT,LPWSTR,INT);
+#define                       LoadString WINELIB_NAME_AW(LoadString)
+WINUSERAPI BOOL        WINAPI LockSetForegroundWindow(UINT);
+WINUSERAPI BOOL        WINAPI LockWindowUpdate(HWND);
+WINUSERAPI INT         WINAPI LookupIconIdFromDirectory(LPBYTE,BOOL);
+WINUSERAPI INT         WINAPI LookupIconIdFromDirectoryEx(LPBYTE,BOOL,INT,INT,UINT);
+WINUSERAPI UINT        WINAPI MapVirtualKeyA(UINT,UINT);
+WINUSERAPI UINT        WINAPI MapVirtualKeyW(UINT,UINT);
+#define                       MapVirtualKey WINELIB_NAME_AW(MapVirtualKey)
+WINUSERAPI UINT        WINAPI MapVirtualKeyExA(UINT,UINT,HKL);
+WINUSERAPI UINT        WINAPI MapVirtualKeyExW(UINT,UINT,HKL);
+#define                       MapVirtualKeyEx WINELIB_NAME_AW(MapVirtualKeyEx)
+WINUSERAPI BOOL        WINAPI MapDialogRect(HWND,LPRECT);
+WINUSERAPI INT         WINAPI MapWindowPoints(HWND,HWND,LPPOINT,UINT);
+WINUSERAPI INT         WINAPI MenuItemFromPoint(HWND,HMENU,POINT);
+WINUSERAPI BOOL        WINAPI MessageBeep(UINT);
+WINUSERAPI INT         WINAPI MessageBoxA(HWND,LPCSTR,LPCSTR,UINT);
+WINUSERAPI INT         WINAPI MessageBoxW(HWND,LPCWSTR,LPCWSTR,UINT);
+#define                       MessageBox WINELIB_NAME_AW(MessageBox)
+WINUSERAPI INT         WINAPI MessageBoxExA(HWND,LPCSTR,LPCSTR,UINT,WORD);
+WINUSERAPI INT         WINAPI MessageBoxExW(HWND,LPCWSTR,LPCWSTR,UINT,WORD);
+#define                       MessageBoxEx WINELIB_NAME_AW(MessageBoxEx)
+WINUSERAPI INT         WINAPI MessageBoxIndirectA(LPMSGBOXPARAMSA);
+WINUSERAPI INT         WINAPI MessageBoxIndirectW(LPMSGBOXPARAMSW);
+#define                       MessageBoxIndirect WINELIB_NAME_AW(MessageBoxIndirect)
+WINUSERAPI BOOL        WINAPI ModifyMenuA(HMENU,UINT,UINT,UINT_PTR,LPCSTR);
+WINUSERAPI BOOL        WINAPI ModifyMenuW(HMENU,UINT,UINT,UINT_PTR,LPCWSTR);
+#define                       ModifyMenu WINELIB_NAME_AW(ModifyMenu)
+WINUSERAPI HMONITOR    WINAPI MonitorFromPoint(POINT,DWORD);
+WINUSERAPI HMONITOR    WINAPI MonitorFromRect(LPRECT,DWORD);
+WINUSERAPI HMONITOR    WINAPI MonitorFromWindow(HWND,DWORD);
+WINUSERAPI BOOL        WINAPI MoveWindow(HWND,INT,INT,INT,INT,BOOL);
+WINUSERAPI DWORD       WINAPI MsgWaitForMultipleObjects(DWORD,CONST HANDLE*,BOOL,DWORD,DWORD);
+WINUSERAPI DWORD       WINAPI MsgWaitForMultipleObjectsEx(DWORD,CONST HANDLE*,DWORD,DWORD,DWORD);
+WINUSERAPI VOID        WINAPI NotifyWinEvent(DWORD,HWND,LONG,LONG);
+WINUSERAPI DWORD       WINAPI OemKeyScan(WORD);
+WINUSERAPI BOOL        WINAPI OemToCharA(LPCSTR,LPSTR);
+WINUSERAPI BOOL        WINAPI OemToCharW(LPCSTR,LPWSTR);
+#define                       OemToChar WINELIB_NAME_AW(OemToChar)
+WINUSERAPI BOOL        WINAPI OemToCharBuffA(LPCSTR,LPSTR,DWORD);
+WINUSERAPI BOOL        WINAPI OemToCharBuffW(LPCSTR,LPWSTR,DWORD);
+#define                       OemToCharBuff WINELIB_NAME_AW(OemToCharBuff)
+WINUSERAPI BOOL        WINAPI OffsetRect(LPRECT,INT,INT);
+WINUSERAPI BOOL        WINAPI OpenClipboard(HWND);
+WINUSERAPI HDESK       WINAPI OpenDesktopA(LPCSTR,DWORD,BOOL,ACCESS_MASK);
+WINUSERAPI HDESK       WINAPI OpenDesktopW(LPCWSTR,DWORD,BOOL,ACCESS_MASK);
+#define                       OpenDesktop WINELIB_NAME_AW(OpenDesktop)
+WINUSERAPI BOOL        WINAPI OpenIcon(HWND);
+WINUSERAPI HDESK       WINAPI OpenInputDesktop(DWORD,BOOL,ACCESS_MASK);
+WINUSERAPI HWINSTA     WINAPI OpenWindowStationA(LPCSTR,BOOL,ACCESS_MASK);
+WINUSERAPI HWINSTA     WINAPI OpenWindowStationW(LPCWSTR,BOOL,ACCESS_MASK);
+#define                       OpenWindowStation WINELIB_NAME_AW(OpenWindowStation)
+WINUSERAPI BOOL        WINAPI PaintDesktop(HDC);
+WINUSERAPI BOOL        WINAPI PeekMessageA(LPMSG,HWND,UINT,UINT,UINT);
+WINUSERAPI BOOL        WINAPI PeekMessageW(LPMSG,HWND,UINT,UINT,UINT);
+#define                       PeekMessage WINELIB_NAME_AW(PeekMessage)
+#define                       PostAppMessageA(thread,msg,wparam,lparam) PostThreadMessageA((DWORD)(thread),msg,wparam,lparam)
+#define                       PostAppMessageW(thread,msg,wparam,lparam) PostThreadMessageW((DWORD)(thread),msg,wparam,lparam)
+#define                       PostAppMessage WINELIB_NAME_AW(PostAppMessage)
+WINUSERAPI BOOL        WINAPI PostMessageA(HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI BOOL        WINAPI PostMessageW(HWND,UINT,WPARAM,LPARAM);
+#define                       PostMessage WINELIB_NAME_AW(PostMessage)
+WINUSERAPI void        WINAPI PostQuitMessage(INT);
+WINUSERAPI BOOL        WINAPI PostThreadMessageA(DWORD,UINT,WPARAM,LPARAM);
+WINUSERAPI BOOL        WINAPI PostThreadMessageW(DWORD,UINT,WPARAM,LPARAM);
+#define                       PostThreadMessage WINELIB_NAME_AW(PostThreadMessage)
+WINUSERAPI UINT        WINAPI PrivateExtractIconExA(LPCSTR,int,HICON*,HICON*,UINT);
+WINUSERAPI UINT        WINAPI PrivateExtractIconExW(LPCWSTR,int,HICON*,HICON*,UINT);
+WINUSERAPI UINT        WINAPI PrivateExtractIconsA(LPCSTR,int,int,int,HICON*,UINT*,UINT,UINT);
+WINUSERAPI UINT        WINAPI PrivateExtractIconsW(LPCWSTR,int,int,int,HICON*,UINT*,UINT,UINT);
+WINUSERAPI BOOL        WINAPI PtInRect(const RECT*,POINT);
+WINUSERAPI HWND        WINAPI RealChildWindowFromPoint(HWND,POINT);
+WINUSERAPI UINT        WINAPI RealGetWindowClassA(HWND,LPSTR,UINT);
+WINUSERAPI UINT        WINAPI RealGetWindowClassW(HWND,LPWSTR,UINT);
+#define                       RealGetWindowClass WINELIB_NAME_AW(RealGetWindowClass)
+WINUSERAPI BOOL        WINAPI RedrawWindow(HWND,const RECT*,HRGN,UINT);
+WINUSERAPI ATOM        WINAPI RegisterClassA(const WNDCLASSA *);
+WINUSERAPI ATOM        WINAPI RegisterClassW(const WNDCLASSW *);
+#define                       RegisterClass WINELIB_NAME_AW(RegisterClass)
+WINUSERAPI ATOM        WINAPI RegisterClassExA(const WNDCLASSEXA *);
+WINUSERAPI ATOM        WINAPI RegisterClassExW(const WNDCLASSEXW *);
+#define                       RegisterClassEx WINELIB_NAME_AW(RegisterClassEx)
+WINUSERAPI UINT        WINAPI RegisterClipboardFormatA(LPCSTR);
+WINUSERAPI UINT        WINAPI RegisterClipboardFormatW(LPCWSTR);
+#define                       RegisterClipboardFormat WINELIB_NAME_AW(RegisterClipboardFormat)
+WINUSERAPI HDEVNOTIFY  WINAPI RegisterDeviceNotificationA(HANDLE,LPVOID,DWORD);
+WINUSERAPI HDEVNOTIFY  WINAPI RegisterDeviceNotificationW(HANDLE,LPVOID,DWORD);
+#define                       RegisterDeviceNotification WINELIB_NAME_AW(RegisterDeviceNotification)
+WINUSERAPI BOOL        WINAPI RegisterHotKey(HWND,INT,UINT,UINT);
+WINUSERAPI BOOL        WINAPI RegisterRawInputDevices(PRAWINPUTDEVICE,UINT,UINT);
+WINUSERAPI UINT        WINAPI RegisterWindowMessageA(LPCSTR);
+WINUSERAPI UINT        WINAPI RegisterWindowMessageW(LPCWSTR);
+#define                       RegisterWindowMessage WINELIB_NAME_AW(RegisterWindowMessage)
+WINUSERAPI BOOL        WINAPI ReleaseCapture(void);
+WINUSERAPI INT         WINAPI ReleaseDC(HWND,HDC);
+WINUSERAPI BOOL        WINAPI RemoveMenu(HMENU,UINT,UINT);
+WINUSERAPI HANDLE      WINAPI RemovePropA(HWND,LPCSTR);
+WINUSERAPI HANDLE      WINAPI RemovePropW(HWND,LPCWSTR);
+#define                       RemoveProp WINELIB_NAME_AW(RemoveProp)
+WINUSERAPI BOOL        WINAPI ReplyMessage(LRESULT);
+WINUSERAPI BOOL        WINAPI ScreenToClient(HWND,LPPOINT);
+WINUSERAPI VOID        WINAPI ScrollChildren(HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI BOOL        WINAPI ScrollDC(HDC,INT,INT,const RECT*,const RECT*,HRGN,LPRECT);
+WINUSERAPI BOOL        WINAPI ScrollWindow(HWND,INT,INT,const RECT*,const RECT*);
+WINUSERAPI INT         WINAPI ScrollWindowEx(HWND,INT,INT,const RECT*,const RECT*,HRGN,LPRECT,UINT);
+WINUSERAPI LRESULT     WINAPI SendDlgItemMessageA(HWND,INT,UINT,WPARAM,LPARAM);
+WINUSERAPI LRESULT     WINAPI SendDlgItemMessageW(HWND,INT,UINT,WPARAM,LPARAM);
+#define                       SendDlgItemMessage WINELIB_NAME_AW(SendDlgItemMessage)
+WINUSERAPI UINT        WINAPI SendInput(UINT,LPINPUT,int);
+WINUSERAPI LRESULT     WINAPI SendMessageA(HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI LRESULT     WINAPI SendMessageW(HWND,UINT,WPARAM,LPARAM);
+#define                       SendMessage WINELIB_NAME_AW(SendMessage)
+WINUSERAPI BOOL        WINAPI SendMessageCallbackA(HWND,UINT,WPARAM,LPARAM,SENDASYNCPROC,ULONG_PTR);
+WINUSERAPI BOOL        WINAPI SendMessageCallbackW(HWND,UINT,WPARAM,LPARAM,SENDASYNCPROC,ULONG_PTR);
+#define                       SendMessageCallback WINELIB_NAME_AW(SendMessageCallback)
+WINUSERAPI LRESULT     WINAPI SendMessageTimeoutA(HWND,UINT,WPARAM,LPARAM,UINT,UINT,PDWORD_PTR);
+WINUSERAPI LRESULT     WINAPI SendMessageTimeoutW(HWND,UINT,WPARAM,LPARAM,UINT,UINT,PDWORD_PTR);
+#define                       SendMessageTimeout WINELIB_NAME_AW(SendMessageTimeout)
+WINUSERAPI BOOL        WINAPI SendNotifyMessageA(HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI BOOL        WINAPI SendNotifyMessageW(HWND,UINT,WPARAM,LPARAM);
+#define                       SendNotifyMessage WINELIB_NAME_AW(SendNotifyMessage)
+WINUSERAPI HWND        WINAPI SetActiveWindow(HWND);
+WINUSERAPI HWND        WINAPI SetCapture(HWND);
+WINUSERAPI BOOL        WINAPI SetCaretBlinkTime(UINT);
+WINUSERAPI BOOL        WINAPI SetCaretPos(INT,INT);
+WINUSERAPI DWORD       WINAPI SetClassLongA(HWND,INT,LONG);
+WINUSERAPI DWORD       WINAPI SetClassLongW(HWND,INT,LONG);
+#define                       SetClassLong WINELIB_NAME_AW(SetClassLong)
+#ifdef _WIN64
+WINUSERAPI ULONG_PTR   WINAPI SetClassLongPtrA(HWND,INT,LONG_PTR);
+WINUSERAPI ULONG_PTR   WINAPI SetClassLongPtrW(HWND,INT,LONG_PTR);
+#else
+#define                       SetClassLongPtrA SetClassLongA
+#define                       SetClassLongPtrW SetClassLongW
+#endif
+#define                       SetClassLongPtr WINELIB_NAME_AW(SetClassLongPtr)
+WINUSERAPI WORD        WINAPI SetClassWord(HWND,INT,WORD);
+WINUSERAPI HANDLE      WINAPI SetClipboardData(UINT,HANDLE);
+WINUSERAPI HWND        WINAPI SetClipboardViewer(HWND);
+WINUSERAPI HCURSOR     WINAPI SetCursor(HCURSOR);
+WINUSERAPI BOOL        WINAPI SetCursorPos(INT,INT);
+WINUSERAPI VOID        WINAPI SetDebugErrorLevel(DWORD);
+WINUSERAPI BOOL        WINAPI SetDeskWallPaper(LPCSTR);
+WINUSERAPI BOOL        WINAPI SetDlgItemInt(HWND,INT,UINT,BOOL);
+WINUSERAPI BOOL        WINAPI SetDlgItemTextA(HWND,INT,LPCSTR);
+WINUSERAPI BOOL        WINAPI SetDlgItemTextW(HWND,INT,LPCWSTR);
+#define                       SetDlgItemText WINELIB_NAME_AW(SetDlgItemText)
+WINUSERAPI BOOL        WINAPI SetDoubleClickTime(UINT);
+WINUSERAPI HWND        WINAPI SetFocus(HWND);
+WINUSERAPI BOOL        WINAPI SetForegroundWindow(HWND);
+WINUSERAPI void        WINAPI SetInternalWindowPos(HWND,UINT,LPRECT,LPPOINT);
+WINUSERAPI BOOL        WINAPI SetKeyboardState(LPBYTE);
+WINUSERAPI VOID        WINAPI SetLastErrorEx(DWORD,DWORD);
+WINUSERAPI BOOL        WINAPI SetLayeredWindowAttributes(HWND,COLORREF,BYTE,DWORD);
+WINUSERAPI BOOL        WINAPI SetMenu(HWND,HMENU);
+WINUSERAPI BOOL        WINAPI SetMenuContextHelpId(HMENU,DWORD);
+WINUSERAPI BOOL        WINAPI SetMenuDefaultItem(HMENU,UINT,UINT);
+WINUSERAPI BOOL        WINAPI SetMenuInfo(HMENU,LPCMENUINFO);
+WINUSERAPI BOOL        WINAPI SetMenuItemBitmaps(HMENU,UINT,UINT,HBITMAP,HBITMAP);
+WINUSERAPI BOOL        WINAPI SetMenuItemInfoA(HMENU,UINT,BOOL,const MENUITEMINFOA*);
+WINUSERAPI BOOL        WINAPI SetMenuItemInfoW(HMENU,UINT,BOOL,const MENUITEMINFOW*);
+#define                       SetMenuItemInfo WINELIB_NAME_AW(SetMenuItemInfo)
+WINUSERAPI LPARAM      WINAPI SetMessageExtraInfo(LPARAM);
+WINUSERAPI BOOL        WINAPI SetMessageQueue(INT);
+WINUSERAPI BOOL        WINAPI SetProcessDefaultLayout(DWORD);
+WINUSERAPI BOOL        WINAPI SetProcessWindowStation(HWINSTA);
+WINUSERAPI HWND        WINAPI SetParent(HWND,HWND);
+WINUSERAPI BOOL        WINAPI SetPropA(HWND,LPCSTR,HANDLE);
+WINUSERAPI BOOL        WINAPI SetPropW(HWND,LPCWSTR,HANDLE);
+#define                       SetProp WINELIB_NAME_AW(SetProp)
+WINUSERAPI BOOL        WINAPI SetRect(LPRECT,INT,INT,INT,INT);
+WINUSERAPI BOOL        WINAPI SetRectEmpty(LPRECT);
+WINUSERAPI INT         WINAPI SetScrollInfo(HWND,INT,const SCROLLINFO*,BOOL);
+WINUSERAPI INT         WINAPI SetScrollPos(HWND,INT,INT,BOOL);
+WINUSERAPI BOOL        WINAPI SetScrollRange(HWND,INT,INT,INT,BOOL);
+#define                       SetSysModalWindow(hwnd) ((HWND)0)
+WINUSERAPI BOOL        WINAPI SetSystemCursor(HCURSOR,DWORD);
+WINUSERAPI BOOL        WINAPI SetSystemMenu(HWND,HMENU);
+WINUSERAPI UINT_PTR    WINAPI SetSystemTimer(HWND,UINT_PTR,UINT,TIMERPROC);
+WINUSERAPI BOOL        WINAPI SetThreadDesktop(HDESK);
+WINUSERAPI UINT_PTR    WINAPI SetTimer(HWND,UINT_PTR,UINT,TIMERPROC);
+WINUSERAPI BOOL        WINAPI SetUserObjectInformationA(HANDLE,INT,LPVOID,DWORD);
+WINUSERAPI BOOL        WINAPI SetUserObjectInformationW(HANDLE,INT,LPVOID,DWORD);
+#define                       SetUserObjectInformation WINELIB_NAME_AW(SetUserObjectInformation)
+WINUSERAPI BOOL        WINAPI SetUserObjectSecurity(HANDLE,PSECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+WINUSERAPI BOOL        WINAPI SetWindowContextHelpId(HWND,DWORD);
+WINUSERAPI LONG        WINAPI SetWindowLongA(HWND,INT,LONG);
+WINUSERAPI LONG        WINAPI SetWindowLongW(HWND,INT,LONG);
+#define                       SetWindowLong WINELIB_NAME_AW(SetWindowLong)
+#ifdef _WIN64
+WINUSERAPI LONG_PTR    WINAPI SetWindowLongPtrA(HWND,INT,LONG_PTR);
+WINUSERAPI LONG_PTR    WINAPI SetWindowLongPtrW(HWND,INT,LONG_PTR);
+#else
+#define                       SetWindowLongPtrA SetWindowLongA
+#define                       SetWindowLongPtrW SetWindowLongW
+#endif
+#define                       SetWindowLongPtr WINELIB_NAME_AW(SetWindowLongPtr)
+WINUSERAPI BOOL        WINAPI SetWindowPlacement(HWND,const WINDOWPLACEMENT*);
+WINUSERAPI HHOOK       WINAPI SetWindowsHookA(INT,HOOKPROC);
+WINUSERAPI HHOOK       WINAPI SetWindowsHookW(INT,HOOKPROC);
+#define                       SetWindowsHook WINELIB_NAME_AW(SetWindowsHook)
+WINUSERAPI HHOOK       WINAPI SetWindowsHookExA(INT,HOOKPROC,HINSTANCE,DWORD);
+WINUSERAPI HHOOK       WINAPI SetWindowsHookExW(INT,HOOKPROC,HINSTANCE,DWORD);
+#define                       SetWindowsHookEx WINELIB_NAME_AW(SetWindowsHookEx)
+WINUSERAPI BOOL        WINAPI SetWindowPos(HWND,HWND,INT,INT,INT,INT,UINT);
+WINUSERAPI INT         WINAPI SetWindowRgn(HWND,HRGN,BOOL);
+WINUSERAPI BOOL        WINAPI SetWindowTextA(HWND,LPCSTR);
+WINUSERAPI BOOL        WINAPI SetWindowTextW(HWND,LPCWSTR);
+#define                       SetWindowText WINELIB_NAME_AW(SetWindowText)
+WINUSERAPI WORD        WINAPI SetWindowWord(HWND,INT,WORD);
+WINUSERAPI HWINEVENTHOOK WINAPI SetWinEventHook(DWORD,DWORD,HMODULE,WINEVENTPROC,DWORD,DWORD,DWORD);
+WINUSERAPI BOOL        WINAPI ShowCaret(HWND);
+WINUSERAPI INT         WINAPI ShowCursor(BOOL);
+WINUSERAPI BOOL        WINAPI ShowScrollBar(HWND,INT,BOOL);
+WINUSERAPI BOOL        WINAPI ShowOwnedPopups(HWND,BOOL);
+WINUSERAPI BOOL        WINAPI ShowWindow(HWND,INT);
+WINUSERAPI BOOL        WINAPI ShowWindowAsync(HWND,INT);
+WINUSERAPI BOOL        WINAPI SubtractRect(LPRECT,const RECT*,const RECT*);
+WINUSERAPI BOOL        WINAPI SwapMouseButton(BOOL);
+WINUSERAPI BOOL        WINAPI SwitchDesktop(HDESK);
+WINUSERAPI VOID        WINAPI SwitchToThisWindow(HWND,BOOL);
+WINUSERAPI BOOL        WINAPI SystemParametersInfoA(UINT,UINT,LPVOID,UINT);
+WINUSERAPI BOOL        WINAPI SystemParametersInfoW(UINT,UINT,LPVOID,UINT);
+#define                       SystemParametersInfo WINELIB_NAME_AW(SystemParametersInfo)
+WINUSERAPI LONG        WINAPI TabbedTextOutA(HDC,INT,INT,LPCSTR,INT,INT,const INT*,INT);
+WINUSERAPI LONG        WINAPI TabbedTextOutW(HDC,INT,INT,LPCWSTR,INT,INT,const INT*,INT);
+#define                       TabbedTextOut WINELIB_NAME_AW(TabbedTextOut)
+WINUSERAPI WORD        WINAPI TileWindows (HWND,UINT,const RECT *,UINT,const HWND *);
+WINUSERAPI INT         WINAPI ToAscii(UINT,UINT,const BYTE *,LPWORD,UINT);
+WINUSERAPI INT         WINAPI ToAsciiEx(UINT,UINT,const BYTE *,LPWORD,UINT,HKL);
+WINUSERAPI INT         WINAPI ToUnicode(UINT,UINT,const BYTE *,LPWSTR,int,UINT);
+WINUSERAPI INT         WINAPI ToUnicodeEx(UINT,UINT,const BYTE *,LPWSTR,int,UINT,HKL);
+WINUSERAPI BOOL        WINAPI TrackMouseEvent(LPTRACKMOUSEEVENT);
+WINUSERAPI BOOL        WINAPI TrackPopupMenu(HMENU,UINT,INT,INT,INT,HWND,const RECT*);
+WINUSERAPI BOOL        WINAPI TrackPopupMenuEx(HMENU,UINT,INT,INT,HWND,LPTPMPARAMS);
+WINUSERAPI INT         WINAPI TranslateAcceleratorA(HWND,HACCEL,LPMSG);
+WINUSERAPI INT         WINAPI TranslateAcceleratorW(HWND,HACCEL,LPMSG);
+#define                       TranslateAccelerator WINELIB_NAME_AW(TranslateAccelerator)
+WINUSERAPI BOOL        WINAPI TranslateMDISysAccel(HWND,LPMSG);
+WINUSERAPI BOOL        WINAPI TranslateMessage(const MSG*);
+WINUSERAPI BOOL        WINAPI UnhookWinEvent(HWINEVENTHOOK);
+WINUSERAPI BOOL        WINAPI UnhookWindowsHook(INT,HOOKPROC);
+WINUSERAPI BOOL        WINAPI UnhookWindowsHookEx(HHOOK);
+WINUSERAPI BOOL        WINAPI UnloadKeyboardLayout(HKL);
+WINUSERAPI BOOL        WINAPI UnionRect(LPRECT,const RECT*,const RECT*);
+WINUSERAPI BOOL        WINAPI UnregisterClassA(LPCSTR,HINSTANCE);
+WINUSERAPI BOOL        WINAPI UnregisterClassW(LPCWSTR,HINSTANCE);
+#define                       UnregisterClass WINELIB_NAME_AW(UnregisterClass)
+WINUSERAPI BOOL        WINAPI UnregisterDeviceNotification(HDEVNOTIFY);
+WINUSERAPI BOOL        WINAPI UnregisterHotKey(HWND,INT);
+WINUSERAPI BOOL        WINAPI UpdateWindow(HWND);
+WINUSERAPI UINT        WINAPI UserRealizePalette(HDC);
+WINUSERAPI BOOL        WINAPI ValidateRect(HWND,const RECT*);
+WINUSERAPI BOOL        WINAPI ValidateRgn(HWND,HRGN);
+WINUSERAPI SHORT       WINAPI VkKeyScanA(CHAR);
+WINUSERAPI SHORT       WINAPI VkKeyScanW(WCHAR);
+#define                       VkKeyScan WINELIB_NAME_AW(VkKeyScan)
+WINUSERAPI WORD        WINAPI VkKeyScanExA(CHAR, HKL);
+WINUSERAPI WORD        WINAPI VkKeyScanExW(WCHAR, HKL);
+#define                       VkKeyScanEx WINELIB_NAME_AW(VkKeyScanEx)
+WINUSERAPI DWORD       WINAPI WaitForInputIdle(HANDLE,DWORD);
+WINUSERAPI BOOL        WINAPI WaitMessage(void);
+WINUSERAPI HWND        WINAPI WindowFromDC(HDC);
+WINUSERAPI HWND        WINAPI WindowFromPoint(POINT);
+WINUSERAPI BOOL        WINAPI WinHelpA(HWND,LPCSTR,UINT,ULONG_PTR);
+WINUSERAPI BOOL        WINAPI WinHelpW(HWND,LPCWSTR,UINT,ULONG_PTR);
+#define                       WinHelp WINELIB_NAME_AW(WinHelp)
+WINUSERAPI VOID        WINAPI keybd_event(BYTE,BYTE,DWORD,ULONG_PTR);
+WINUSERAPI VOID        WINAPI mouse_event(DWORD,DWORD,DWORD,DWORD,ULONG_PTR);
+WINUSERAPI INT        WINAPIV wsprintfA(LPSTR,LPCSTR,...);
+WINUSERAPI INT        WINAPIV wsprintfW(LPWSTR,LPCWSTR,...);
+#define                       wsprintf WINELIB_NAME_AW(wsprintf)
+WINUSERAPI INT         WINAPI wvsprintfA(LPSTR,LPCSTR,va_list);
+WINUSERAPI INT         WINAPI wvsprintfW(LPWSTR,LPCWSTR,va_list);
+#define                       wvsprintf WINELIB_NAME_AW(wvsprintf)
+
+/* Undocumented functions */
+
+/* NOTE: This is SYSTEM.3, not USER.182, which is also named KillSystemTimer */
+WORD        WINAPI SYSTEM_KillSystemTimer( WORD );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _WINUSER_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winuser.rh
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winuser.rh	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winuser.rh	(revision 16410)
@@ -0,0 +1,210 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/* Window Styles */
+#define WS_OVERLAPPED    0x00000000L
+#define WS_POPUP         0x80000000L
+#define WS_CHILD         0x40000000L
+#define WS_MINIMIZE      0x20000000L
+#define WS_VISIBLE       0x10000000L
+#define WS_DISABLED      0x08000000L
+#define WS_CLIPSIBLINGS  0x04000000L
+#define WS_CLIPCHILDREN  0x02000000L
+#define WS_MAXIMIZE      0x01000000L
+#define WS_CAPTION       0x00C00000L
+#define WS_BORDER        0x00800000L
+#define WS_DLGFRAME      0x00400000L
+#define WS_VSCROLL       0x00200000L
+#define WS_HSCROLL       0x00100000L
+#define WS_SYSMENU       0x00080000L
+#define WS_THICKFRAME    0x00040000L
+#define WS_GROUP         0x00020000L
+#define WS_TABSTOP       0x00010000L
+#define WS_MINIMIZEBOX   0x00020000L
+#define WS_MAXIMIZEBOX   0x00010000L
+#define WS_TILED         WS_OVERLAPPED
+#define WS_ICONIC        WS_MINIMIZE
+#define WS_SIZEBOX       WS_THICKFRAME
+#define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME| WS_MINIMIZEBOX | WS_MAXIMIZEBOX)
+#define WS_POPUPWINDOW (WS_POPUP | WS_BORDER | WS_SYSMENU)
+#define WS_CHILDWINDOW (WS_CHILD)
+#define WS_TILEDWINDOW (WS_OVERLAPPEDWINDOW)
+
+/* Window extended styles */
+#define WS_EX_DLGMODALFRAME    0x00000001L
+#define WS_EX_DRAGDETECT       0x00000002L
+#define WS_EX_NOPARENTNOTIFY   0x00000004L
+#define WS_EX_TOPMOST          0x00000008L
+#define WS_EX_ACCEPTFILES      0x00000010L
+#define WS_EX_TRANSPARENT      0x00000020L
+#define WS_EX_MDICHILD         0x00000040L
+#define WS_EX_TOOLWINDOW       0x00000080L
+#define WS_EX_WINDOWEDGE       0x00000100L
+#define WS_EX_CLIENTEDGE       0x00000200L
+#define WS_EX_CONTEXTHELP      0x00000400L
+#define WS_EX_RIGHT            0x00001000L
+#define WS_EX_LEFT             0x00000000L
+#define WS_EX_RTLREADING       0x00002000L
+#define WS_EX_LTRREADING       0x00000000L
+#define WS_EX_LEFTSCROLLBAR    0x00004000L
+#define WS_EX_RIGHTSCROLLBAR   0x00000000L
+#define WS_EX_CONTROLPARENT    0x00010000L
+#define WS_EX_STATICEDGE       0x00020000L
+#define WS_EX_APPWINDOW        0x00040000L
+#define WS_EX_LAYERED          0x00080000L
+#define WS_EX_NOINHERITLAYOUT  0x00100000L
+#define WS_EX_LAYOUTRTL        0x00400000L
+#define WS_EX_COMPOSITED       0x02000000L
+#define WS_EX_NOACTIVATE       0x08000000L
+
+#define WS_EX_OVERLAPPEDWINDOW (WS_EX_WINDOWEDGE|WS_EX_CLIENTEDGE)
+#define WS_EX_PALETTEWINDOW    (WS_EX_WINDOWEDGE|WS_EX_TOOLWINDOW|WS_EX_TOPMOST)
+
+/* Button control styles */
+#define BS_PUSHBUTTON          0x00000000L
+#define BS_DEFPUSHBUTTON       0x00000001L
+#define BS_CHECKBOX            0x00000002L
+#define BS_AUTOCHECKBOX        0x00000003L
+#define BS_RADIOBUTTON         0x00000004L
+#define BS_3STATE              0x00000005L
+#define BS_AUTO3STATE          0x00000006L
+#define BS_GROUPBOX            0x00000007L
+#define BS_USERBUTTON          0x00000008L
+#define BS_AUTORADIOBUTTON     0x00000009L
+#define BS_OWNERDRAW           0x0000000BL
+#define BS_LEFTTEXT            0x00000020L
+#define BS_RIGHTBUTTON         BS_LEFTTEXT
+
+#define BS_TEXT                0x00000000L
+#define BS_ICON                0x00000040L
+#define BS_BITMAP              0x00000080L
+#define BS_LEFT                0x00000100L
+#define BS_RIGHT               0x00000200L
+#define BS_CENTER              0x00000300L
+#define BS_TOP                 0x00000400L
+#define BS_BOTTOM              0x00000800L
+#define BS_VCENTER             0x00000C00L
+#define BS_PUSHLIKE            0x00001000L
+#define BS_MULTILINE           0x00002000L
+#define BS_NOTIFY              0x00004000L
+#define BS_FLAT                0x00008000L
+
+/* Combo box styles */
+#define CBS_SIMPLE            0x0001L
+#define CBS_DROPDOWN          0x0002L
+#define CBS_DROPDOWNLIST      0x0003L
+#define CBS_OWNERDRAWFIXED    0x0010L
+#define CBS_OWNERDRAWVARIABLE 0x0020L
+#define CBS_AUTOHSCROLL       0x0040L
+#define CBS_OEMCONVERT        0x0080L
+#define CBS_SORT              0x0100L
+#define CBS_HASSTRINGS        0x0200L
+#define CBS_NOINTEGRALHEIGHT  0x0400L
+#define CBS_DISABLENOSCROLL   0x0800L
+
+#define CBS_UPPERCASE	      0x2000L
+#define CBS_LOWERCASE	      0x4000L
+
+/* Dialog styles */
+#define DS_ABSALIGN		0x0001
+#define DS_SYSMODAL		0x0002
+#define DS_3DLOOK		0x0004	/* win95 */
+#define DS_FIXEDSYS		0x0008	/* win95 */
+#define DS_NOFAILCREATE		0x0010	/* win95 */
+#define DS_LOCALEDIT		0x0020
+#define DS_SETFONT		0x0040
+#define DS_MODALFRAME		0x0080
+#define DS_NOIDLEMSG		0x0100
+#define DS_SETFOREGROUND	0x0200	/* win95 */
+#define DS_CONTROL		0x0400	/* win95 */
+#define DS_CENTER		0x0800	/* win95 */
+#define DS_CENTERMOUSE		0x1000	/* win95 */
+#define DS_CONTEXTHELP		0x2000	/* win95 */
+#define DS_USEPIXELS		0x8000
+#define DS_SHELLFONT		(DS_SETFONT | DS_FIXEDSYS)
+
+/* Edit control styles */
+#define ES_LEFT         0x00000000
+#define ES_CENTER       0x00000001
+#define ES_RIGHT        0x00000002
+#define ES_MULTILINE    0x00000004
+#define ES_UPPERCASE    0x00000008
+#define ES_LOWERCASE    0x00000010
+#define ES_PASSWORD     0x00000020
+#define ES_AUTOVSCROLL  0x00000040
+#define ES_AUTOHSCROLL  0x00000080
+#define ES_NOHIDESEL    0x00000100
+#define ES_COMBO        0x00000200   /* Undocumented. Parent is a combobox */
+#define ES_OEMCONVERT   0x00000400
+#define ES_READONLY     0x00000800
+#define ES_WANTRETURN   0x00001000
+#define ES_NUMBER       0x00002000
+
+/* Listbox styles */
+#define LBS_NOTIFY               0x0001
+#define LBS_SORT                 0x0002
+#define LBS_NOREDRAW             0x0004
+#define LBS_MULTIPLESEL          0x0008
+#define LBS_OWNERDRAWFIXED       0x0010
+#define LBS_OWNERDRAWVARIABLE    0x0020
+#define LBS_HASSTRINGS           0x0040
+#define LBS_USETABSTOPS          0x0080
+#define LBS_NOINTEGRALHEIGHT     0x0100
+#define LBS_MULTICOLUMN          0x0200
+#define LBS_WANTKEYBOARDINPUT    0x0400
+#define LBS_EXTENDEDSEL          0x0800
+#define LBS_DISABLENOSCROLL      0x1000
+#define LBS_NODATA               0x2000
+#define LBS_NOSEL                0x4000
+#define LBS_COMBOBOX             0x8000
+#define LBS_STANDARD  (LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER)
+
+/* Static Control Styles */
+#define SS_LEFT             0x00000000L
+#define SS_CENTER           0x00000001L
+#define SS_RIGHT            0x00000002L
+#define SS_ICON             0x00000003L
+#define SS_BLACKRECT        0x00000004L
+#define SS_GRAYRECT         0x00000005L
+#define SS_WHITERECT        0x00000006L
+#define SS_BLACKFRAME       0x00000007L
+#define SS_GRAYFRAME        0x00000008L
+#define SS_WHITEFRAME       0x00000009L
+#define SS_USERITEM         0x0000000AL
+#define SS_SIMPLE           0x0000000BL
+#define SS_LEFTNOWORDWRAP   0x0000000CL
+#define SS_OWNERDRAW        0x0000000DL
+#define SS_BITMAP           0x0000000EL
+#define SS_ENHMETAFILE      0x0000000FL
+#define SS_ETCHEDHORZ       0x00000010L
+#define SS_ETCHEDVERT       0x00000011L
+#define SS_ETCHEDFRAME      0x00000012L
+#define SS_TYPEMASK         0x0000001FL
+
+#define SS_REALSIZECONTROL  0x00000040L
+#define SS_NOPREFIX         0x00000080L
+#define SS_NOTIFY           0x00000100L
+#define SS_CENTERIMAGE      0x00000200L
+#define SS_RIGHTJUST        0x00000400L
+#define SS_REALSIZEIMAGE    0x00000800L
+#define SS_SUNKEN           0x00001000L
+#define SS_EDITCONTROL      0x00002000L
+#define SS_ENDELLIPSIS      0x00004000L
+#define SS_PATHELLIPSIS     0x00008000L
+#define SS_WORDELLIPSIS     0x0000C000L
+#define SS_ELLIPSISMASK     0x0000C000L
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winver.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winver.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winver.h	(revision 16410)
@@ -0,0 +1,180 @@
+/* Definitions for the VERsion infolibrary (VER.DLL)
+ *
+ * Copyright 1996 Marcus Meissner
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINVER_H
+#define __WINE_WINVER_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+/* resource ids for different version infos */
+#define	VS_FILE_INFO		16
+#define	VS_VERSION_INFO		1
+#define	VS_USER_DEFINED		100
+
+#define	VS_FFI_SIGNATURE	0xfeef04bdL	/* FileInfo Magic */
+#define	VS_FFI_STRUCVERSION	0x00010000L	/* struc version 1.0 */
+#define	VS_FFI_FILEFLAGSMASK	0x0000003fL	/* valid flags */
+
+/* VS_VERSION.dwFileFlags */
+#define	VS_FF_DEBUG		0x01L
+#define	VS_FF_PRERELEASE	0x02L
+#define	VS_FF_PATCHED		0x04L
+#define	VS_FF_PRIVATEBUILD	0x08L
+#define	VS_FF_INFOINFERRED	0x10L
+#define	VS_FF_SPECIALBUILD	0x20L
+
+/* VS_VERSION.dwFileOS */
+
+/* major os version */
+#define	VOS_UNKNOWN		0x00000000L
+#define	VOS_DOS			0x00010000L
+#define	VOS_OS216		0x00020000L
+#define	VOS_OS232		0x00030000L
+#define	VOS_NT			0x00040000L
+
+/* minor os version */
+#define	VOS__BASE		0x00000000L
+#define	VOS__WINDOWS16		0x00000001L
+#define	VOS__PM16		0x00000002L
+#define	VOS__PM32		0x00000003L
+#define	VOS__WINDOWS32		0x00000004L
+
+/* possible versions */
+#define	VOS_DOS_WINDOWS16	(VOS_DOS|VOS__WINDOWS16)
+#define	VOS_DOS_WINDOWS32	(VOS_DOS|VOS__WINDOWS32)
+#define	VOS_OS216_PM16		(VOS_OS216|VOS__PM16)
+#define	VOS_OS232_PM32		(VOS_OS232|VOS__PM32)
+#define	VOS_NT_WINDOWS32	(VOS_NT|VOS__WINDOWS32)
+
+/* VS_VERSION.dwFileType */
+#define	VFT_UNKNOWN		0x00000000L
+#define	VFT_APP			0x00000001L
+#define	VFT_DLL			0x00000002L
+#define	VFT_DRV			0x00000003L
+#define	VFT_FONT		0x00000004L
+#define	VFT_VXD			0x00000005L
+/* ??one type missing??		0x00000006L -Marcus */
+#define	VFT_STATIC_LIB		0x00000007L
+
+/* VS_VERSION.dwFileSubtype for VFT_DRV */
+#define	VFT2_UNKNOWN		0x00000000L
+#define	VFT2_DRV_PRINTER	0x00000001L
+#define	VFT2_DRV_KEYBOARD	0x00000002L
+#define	VFT2_DRV_LANGUAGE	0x00000003L
+#define	VFT2_DRV_DISPLAY	0x00000004L
+#define	VFT2_DRV_MOUSE		0x00000005L
+#define	VFT2_DRV_NETWORK	0x00000006L
+#define	VFT2_DRV_SYSTEM		0x00000007L
+#define	VFT2_DRV_INSTALLABLE	0x00000008L
+#define	VFT2_DRV_SOUND		0x00000009L
+#define	VFT2_DRV_COMM		0x0000000aL
+#define	VFT2_DRV_INPUTMETHOD	0x0000000bL
+#define	VFT2_DRV_VERSIONED_PRINTER	0x0000000cL
+
+/* VS_VERSION.dwFileSubtype for VFT_FONT */
+#define	VFT2_FONT_RASTER	0x00000001L
+#define	VFT2_FONT_VECTOR	0x00000002L
+#define	VFT2_FONT_TRUETYPE	0x00000003L
+
+/* VerFindFile Flags */
+	/* input */
+#define	VFFF_ISSHAREDFILE	0x0001
+
+	/* output (returned) */
+#define	VFF_CURNEDEST		0x0001
+#define	VFF_FILEINUSE		0x0002
+#define	VFF_BUFFTOOSMALL	0x0004
+
+/* VerInstallFile Flags */
+	/* input */
+#define	VIFF_FORCEINSTALL	0x0001
+#define	VIFF_DONTDELETEOLD	0x0002
+
+	/* output (return) */
+#define	VIF_TEMPFILE		0x00000001L
+#define	VIF_MISMATCH		0x00000002L
+#define	VIF_SRCOLD		0x00000004L
+#define	VIF_DIFFLANG		0x00000008L
+#define	VIF_DIFFCODEPG		0x00000010L
+#define	VIF_DIFFTYPE		0x00000020L
+#define	VIF_WRITEPROT		0x00000040L
+#define	VIF_FILEINUSE		0x00000080L
+#define	VIF_OUTOFSPACE		0x00000100L
+#define	VIF_ACCESSVIOLATION	0x00000200L
+#define	VIF_SHARINGVIOLATION	0x00000400L
+#define	VIF_CANNOTCREATE	0x00000800L
+#define	VIF_CANNOTDELETE	0x00001000L
+#define	VIF_CANNOTRENAME	0x00002000L
+#define	VIF_CANNOTDELETECUR	0x00004000L
+#define	VIF_OUTOFMEMORY		0x00008000L
+#define	VIF_CANNOTREADSRC	0x00010000L
+#define	VIF_CANNOTREADDST	0x00020000L
+#define	VIF_BUFFTOOSMALL	0x00040000L
+
+typedef struct tagVS_FIXEDFILEINFO {
+	DWORD   dwSignature;
+	DWORD   dwStrucVersion;
+	DWORD   dwFileVersionMS;
+	DWORD   dwFileVersionLS;
+	DWORD   dwProductVersionMS;
+	DWORD   dwProductVersionLS;
+	DWORD   dwFileFlagsMask;
+	DWORD   dwFileFlags;
+	DWORD   dwFileOS;
+	DWORD   dwFileType;
+	DWORD   dwFileSubtype;
+	DWORD   dwFileDateMS;
+	DWORD   dwFileDateLS;
+} VS_FIXEDFILEINFO;
+
+
+#ifndef RC_INVOKED
+
+/* function prototypes */
+
+DWORD       WINAPI VerFindFileA(DWORD,LPCSTR,LPCSTR,LPCSTR,LPSTR,PUINT,LPSTR,PUINT);
+DWORD       WINAPI VerFindFileW(DWORD,LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,PUINT,LPWSTR,PUINT);
+#define     VerFindFile WINELIB_NAME_AW(VerFindFile)
+DWORD       WINAPI VerInstallFileA(DWORD,LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPSTR,PUINT);
+DWORD       WINAPI VerInstallFileW(DWORD,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,PUINT);
+#define     VerInstallFile WINELIB_NAME_AW(VerInstallFile)
+DWORD       WINAPI VerLanguageNameA(DWORD,LPSTR,DWORD);
+DWORD       WINAPI VerLanguageNameW(DWORD,LPWSTR,DWORD);
+#define     VerLanguageName WINELIB_NAME_AW(VerLanguageName)
+BOOL        WINAPI VerQueryValueA(LPCVOID,LPCSTR,LPVOID*,PUINT);
+BOOL        WINAPI VerQueryValueW(LPCVOID,LPCWSTR,LPVOID*,PUINT);
+#define     VerQueryValue WINELIB_NAME_AW(VerQueryValue)
+DWORD       WINAPI GetFileVersionInfoSizeA(LPCSTR,LPDWORD);
+DWORD       WINAPI GetFileVersionInfoSizeW(LPCWSTR,LPDWORD);
+#define     GetFileVersionInfoSize WINELIB_NAME_AW(GetFileVersionInfoSize)
+BOOL        WINAPI GetFileVersionInfoA(LPCSTR,DWORD,DWORD,LPVOID);
+BOOL        WINAPI GetFileVersionInfoW(LPCWSTR,DWORD,DWORD,LPVOID);
+#define     GetFileVersionInfo WINELIB_NAME_AW(GetFileVersionInfo)
+
+/* 20 GETFILEVERSIONINFORAW */
+
+#endif /* RC_INVOKED */
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif /* __WINE_WINVER_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wmistr.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wmistr.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wmistr.h	(revision 16410)
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2005 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _WMISTR_
+#define _WMISTR_
+
+typedef enum
+{
+    WMI_GET_ALL_DATA = 0,
+    WMI_GET_SINGLE_INSTANCE = 1,
+    WMI_SET_SINGLE_INSTANCE = 2,
+    WMI_SET_SINGLE_ITEM = 3,
+    WMI_ENABLE_EVENTS = 4,
+    WMI_DISABLE_EVENTS = 5,
+    WMI_ENABLE_CONNECTION = 6,
+    WMI_DISABLE_CONNECTION = 7,
+    WMI_REGINFO = 8,
+    WMI_EXECUTE_METHOD = 9,
+} WMIDPREQUESTCODE;
+
+#endif /* _WMISTR_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wnaspi32.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wnaspi32.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wnaspi32.h	(revision 16410)
@@ -0,0 +1,241 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WNASPI32_H__
+#define __WNASPI32_H__
+
+/* This file should be 100% source compatible according to MSes docs and
+ * Adaptecs docs */
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* #ifdef __cplusplus */
+
+/* SCSI Miscellaneous Stuff */
+#define SENSE_LEN			14
+#define SRB_DIR_SCSI			0x00
+#define SRB_POSTING			0x01
+#define SRB_ENABLE_RESIDUAL_COUNT	0x04
+#define SRB_DIR_IN			0x08
+#define SRB_DIR_OUT			0x10
+
+/* ASPI Command Definitions */
+#define SC_HA_INQUIRY			0x00
+#define SC_GET_DEV_TYPE			0x01
+#define SC_EXEC_SCSI_CMD		0x02
+#define SC_ABORT_SRB			0x03
+#define SC_RESET_DEV			0x04
+#define SC_SET_HA_PARMS			0x05
+#define SC_GET_DISK_INFO		0x06
+
+/* SRB status codes */
+#define SS_PENDING			0x00
+#define SS_COMP				0x01
+#define SS_ABORTED			0x02
+#define SS_ABORT_FAIL			0x03
+#define SS_ERR				0x04
+
+#define SS_INVALID_CMD			0x80
+#define SS_INVALID_HA			0x81
+#define SS_NO_DEVICE			0x82
+
+#define SS_INVALID_SRB			0xE0
+#define SS_OLD_MANAGER			0xE1
+#define SS_BUFFER_ALIGN			0xE1 /* Win32 */
+#define SS_ILLEGAL_MODE			0xE2
+#define SS_NO_ASPI			0xE3
+#define SS_FAILED_INIT			0xE4
+#define SS_ASPI_IS_BUSY			0xE5
+#define SS_BUFFER_TO_BIG		0xE6
+#define SS_MISMATCHED_COMPONENTS	0xE7 /* DLLs/EXE version mismatch */
+#define SS_NO_ADAPTERS			0xE8
+#define SS_INSUFFICIENT_RESOURCES	0xE9
+#define SS_ASPI_IS_SHUTDOWN		0xEA
+#define SS_BAD_INSTALL			0xEB
+
+
+/* Host status codes */
+#define HASTAT_OK			0x00
+#define HASTAT_SEL_TO			0x11
+#define HASTAT_DO_DU			0x12
+#define HASTAT_BUS_FREE			0x13
+#define HASTAT_PHASE_ERR		0x14
+
+#define HASTAT_TIMEOUT			0x09
+#define HASTAT_COMMAND_TIMEOUT		0x0B
+#define HASTAT_MESSAGE_REJECT		0x0D
+#define HASTAT_BUS_RESET		0x0E
+#define HASTAT_PARITY_ERROR		0x0F
+#define HASTAT_REQUEST_SENSE_FAILED	0x10
+
+
+/* Additional definitions */
+/* SCSI Miscellaneous Stuff */
+#define SRB_EVENT_NOTIFY		0x40
+#define RESIDUAL_COUNT_SUPPORTED	0x02
+#define MAX_SRB_TIMEOUT			1080001u
+#define DEFAULT_SRB_TIMEOUT		1080001u
+
+/* These are defined by MS but not adaptec */
+#define SRB_DATA_SG_LIST		0x02
+#define WM_ASPIPOST			0x4D42
+
+
+/* ASPI Command Definitions */
+#define SC_RESCAN_SCSI_BUS		0x07
+#define SC_GETSET_TIMEOUTS		0x08
+
+/* SRB Status.. MS defined */
+#define SS_SECURITY_VIOLATION		0xE2 /* Replaces SS_INVALID_MODE */
+/*** END DEFS */
+
+#include <pshpack1.h>
+
+/* SRB - HOST ADAPTER INQUIRY - SC_HA_INQUIRY */
+typedef struct tagSRB32_HaInquiry {
+ BYTE  SRB_Cmd;                 /* 00 ASPI command code = SC_HA_INQUIRY */
+ BYTE  SRB_Status;              /* 01 ASPI command status byte */
+ BYTE  SRB_HaId;                /* 02 ASPI host adapter number */
+ BYTE  SRB_Flags;               /* 03 ASPI request flags */
+ DWORD  SRB_Hdr_Rsvd;           /* 04 Reserved, MUST = 0 */
+ BYTE  HA_Count;                /* 08 Number of host adapters present */
+ BYTE  HA_SCSI_ID;              /* 09 SCSI ID of host adapter */
+ BYTE  HA_ManagerId[16];        /* 0A String describing the manager */
+ BYTE  HA_Identifier[16];       /* 1A String describing the host adapter */
+ BYTE  HA_Unique[16];           /* 2A Host Adapter Unique parameters */
+ WORD  HA_Rsvd1;
+} SRB_HaInquiry, *PSRB_HaInquiry;
+
+/* SRB - GET DEVICE TYPE - SC_GET_DEV_TYPE */
+typedef struct tagSRB32_GDEVBlock {
+ BYTE  SRB_Cmd;                 /* 00 ASPI command code = SC_GET_DEV_TYPE */
+ BYTE  SRB_Status;              /* 01 ASPI command status byte */
+ BYTE  SRB_HaId;                /* 02 ASPI host adapter number */
+ BYTE  SRB_Flags;               /* 03 Reserved */
+ DWORD  SRB_Hdr_Rsvd;           /* 04 Reserved */
+ BYTE  SRB_Target;              /* 08 Target's SCSI ID */
+ BYTE  SRB_Lun;                 /* 09 Target's LUN number */
+ BYTE  SRB_DeviceType;          /* 0A Target's peripheral device type */
+ BYTE  SRB_Rsvd1;
+} SRB_GDEVBlock, *PSRB_GDEVBlock;
+
+/* SRB - EXECUTE SCSI COMMAND - SC_EXEC_SCSI_CMD */
+typedef struct tagSRB32_ExecSCSICmd {
+  BYTE        SRB_Cmd;            /* 00 ASPI command code = SC_EXEC_SCSI_CMD */
+  BYTE        SRB_Status;         /* 01 ASPI command status byte */
+  BYTE        SRB_HaId;           /* 02 ASPI host adapter number */
+  BYTE        SRB_Flags;          /* 03 ASPI request flags */
+  DWORD       SRB_Hdr_Rsvd;       /* 04 Reserved */
+  BYTE        SRB_Target;         /* 08 Target's SCSI ID */
+  BYTE        SRB_Lun;            /* 09 Target's LUN number */
+  WORD        SRB_Rsvd1;          /* 0A Reserved for Alignment */
+  DWORD       SRB_BufLen;         /* 0C Data Allocation Length */
+  BYTE        *SRB_BufPointer;    /* 10 Data Buffer Point */
+  BYTE        SRB_SenseLen;       /* 14 Sense Allocation Length */
+  BYTE        SRB_CDBLen;         /* 15 CDB Length */
+  BYTE        SRB_HaStat;         /* 16 Host Adapter Status */
+  BYTE        SRB_TargStat;       /* 17 Target Status */
+  void        (*SRB_PostProc)();  /* 18 Post routine */
+  void        *SRB_Rsvd2;         /* 1C Reserved */
+  BYTE        SRB_Rsvd3[16];      /* 20 Reserved for expansion */
+  BYTE        CDBByte[16];        /* 30 SCSI CDB */
+  BYTE        SenseArea[SENSE_LEN+2];  /* 40 Request sense buffer - var length */
+} SRB_ExecSCSICmd, *PSRB_ExecSCSICmd;
+
+/* SRB - ABORT AN ARB - SC_ABORT_SRB */
+typedef struct tagSRB32_Abort {
+  BYTE        SRB_Cmd;            /* 00 ASPI command code = SC_ABORT_SRB */
+  BYTE        SRB_Status;         /* 01 ASPI command status byte */
+  BYTE        SRB_HaId;           /* 02 ASPI host adapter number */
+  BYTE        SRB_Flags;          /* 03 Reserved */
+  DWORD       SRB_Hdr_Rsvd;       /* 04 Reserved, MUST = 0 */
+  VOID       *SRB_ToAbort;        /* 08 Pointer to SRB to abort */
+} SRB_Abort, *PSRB_Abort;
+
+/* SRB - BUS DEVICE RESET - SC_RESET_DEV */
+typedef struct tagSRB32_BusDeviceReset {
+ BYTE         SRB_Cmd;                  /* 00 ASPI cmd code = SC_RESET_DEV */
+ BYTE         SRB_Status;               /* 01 ASPI command status byte */
+ BYTE         SRB_HaId;                 /* 02 ASPI host adapter number */
+ BYTE         SRB_Flags;                /* 03 Reserved */
+ DWORD        SRB_Hdr_Rsvd;             /* 04 Reserved */
+ BYTE         SRB_Target;               /* 08 Target's SCSI ID */
+ BYTE         SRB_Lun;                  /* 09 Target's LUN number */
+ BYTE         SRB_Rsvd1[12];            /* 0A Reserved for Alignment */
+ BYTE         SRB_HaStat;               /* 16 Host Adapter Status */
+ BYTE         SRB_TargStat;             /* 17 Target Status */
+ void         (*SRB_PostProc)();        /* 18 Post routine */
+ void         *SRB_Rsvd2;               /* 1c Reserved */
+ BYTE         SRB_Rsvd3[32];            /* 20 Reserved */
+} SRB_BusDeviceReset, *PSRB_BusDeviceReset;
+
+/* SRB - GET DISK INFORMATION - SC_GET_DISK_INFO */
+typedef struct tagSRB32_GetDiskInfo {
+ BYTE         SRB_Cmd;                  /* 00 ASPI cmd code = SC_RESET_DEV */
+ BYTE         SRB_Status;               /* 01 ASPI command status byte */
+ BYTE         SRB_HaId;                 /* 02 ASPI host adapter number */
+ BYTE         SRB_Flags;                /* 03 Reserved */
+ DWORD        SRB_Hdr_Rsvd;             /* 04 Reserved */
+ BYTE         SRB_Target;               /* 08 Target's SCSI ID */
+ BYTE         SRB_Lun;                  /* 09 Target's LUN number */
+ BYTE         SRB_DriveFlags;           /* 0A Driver flags */
+ BYTE         SRB_Int13HDriveInfo;      /* 0B Host Adapter Status */
+ BYTE         SRB_Heads;                /* 0C Preferred number of heads trans */
+ BYTE         SRB_Sectors;              /* 0D Preferred number of sectors trans */
+ BYTE         SRB_Rsvd1[10];            /* 0E Reserved */
+} SRB_GetDiskInfo, *PSRB_GetDiskInfo;
+
+/* SRB header */
+typedef struct tagSRB32_Header {
+ BYTE         SRB_Cmd;                  /* 00 ASPI cmd code = SC_RESET_DEV */
+ BYTE         SRB_Status;               /* 01 ASPI command status byte */
+ BYTE         SRB_HaId;                 /* 02 ASPI host adapter number */
+ BYTE         SRB_Flags;                /* 03 Reserved */
+ DWORD        SRB_Hdr_Rsvd;             /* 04 Reserved */
+} SRB_Header, *PSRB_Header;
+
+typedef union tagSRB32 {
+    SRB_Header          common;
+    SRB_HaInquiry       inquiry;
+    SRB_ExecSCSICmd     cmd;
+    SRB_Abort           abort;
+    SRB_BusDeviceReset  reset;
+    SRB_GDEVBlock       devtype;
+    SRB_GetDiskInfo	diskinfo;
+} SRB, *PSRB, *LPSRB;
+
+typedef struct tagASPI32BUFF {
+    LPBYTE AB_BufPointer;	/* pointer to buffer */
+    DWORD AB_BufLen;		/* length of buffer */
+    DWORD AB_ZeroFill;		/* set to 1 if zeroing */
+    DWORD AB_Reserved;		/* 0 */
+} ASPI32BUFF, *PASPI32BUFF;
+
+#include <poppack.h>
+
+/* Prototypes */
+extern DWORD __cdecl SendASPI32Command (PSRB);
+extern DWORD __cdecl GetASPI32SupportInfo (void);
+extern DWORD __cdecl GetASPI32DLLVersion(void);
+extern BOOL  __cdecl GetASPI32Buffer(PASPI32BUFF pab);
+
+#ifdef __cplusplus
+}
+#endif /* #ifdef __cplusplus */
+
+#endif /* __WNASPI32_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wownt32.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wownt32.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wownt32.h	(revision 16410)
@@ -0,0 +1,158 @@
+/*
+ * WOW Generic Thunk API
+ *
+ * Copyright (C) 1999 Ulrich Weigand
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _WOWNT32_H_
+#define _WOWNT32_H_
+
+#ifdef __WINESRC__
+/* under Wine use the kernel functions directly so we don't have to import wow32 */
+#define WOWCallback16 K32WOWCallback16
+#define WOWCallback16Ex K32WOWCallback16Ex
+#define WOWDirectedYield16 K32WOWDirectedYield16
+#define WOWGetVDMPointer K32WOWGetVDMPointer
+#define WOWGetVDMPointerFix K32WOWGetVDMPointerFix
+#define WOWGetVDMPointerUnfix K32WOWGetVDMPointerUnfix
+#define WOWGlobalAlloc16 K32WOWGlobalAlloc16
+#define WOWGlobalAllocLock16 K32WOWGlobalAllocLock16
+#define WOWGlobalFree16 K32WOWGlobalFree16
+#define WOWGlobalLock16 K32WOWGlobalLock16
+#define WOWGlobalLockSize16 K32WOWGlobalLockSize16
+#define WOWGlobalUnlock16 K32WOWGlobalUnlock16
+#define WOWGlobalUnlockFree16 K32WOWGlobalUnlockFree16
+#define WOWHandle16 K32WOWHandle16
+#define WOWHandle32 K32WOWHandle32
+#define WOWYield16 K32WOWYield16
+#endif
+
+LPVOID WINAPI WOWGetVDMPointer(DWORD,DWORD,BOOL);
+LPVOID WINAPI WOWGetVDMPointerFix(DWORD,DWORD,BOOL);
+VOID   WINAPI WOWGetVDMPointerUnfix(DWORD);
+
+WORD   WINAPI WOWGlobalAlloc16(WORD,DWORD);
+WORD   WINAPI WOWGlobalFree16(WORD);
+DWORD  WINAPI WOWGlobalLock16(WORD);
+BOOL   WINAPI WOWGlobalUnlock16(WORD);
+DWORD  WINAPI WOWGlobalAllocLock16(WORD,DWORD,WORD *);
+WORD   WINAPI WOWGlobalUnlockFree16(DWORD);
+DWORD  WINAPI WOWGlobalLockSize16(WORD,PDWORD);
+
+VOID   WINAPI WOWYield16(VOID);
+VOID   WINAPI WOWDirectedYield16(WORD);
+
+typedef enum
+{
+    WOW_TYPE_HWND,
+    WOW_TYPE_HMENU,
+    WOW_TYPE_HDWP,
+    WOW_TYPE_HDROP,
+    WOW_TYPE_HDC,
+    WOW_TYPE_HFONT,
+    WOW_TYPE_HMETAFILE,
+    WOW_TYPE_HRGN,
+    WOW_TYPE_HBITMAP,
+    WOW_TYPE_HBRUSH,
+    WOW_TYPE_HPALETTE,
+    WOW_TYPE_HPEN,
+    WOW_TYPE_HACCEL,
+    WOW_TYPE_HTASK,
+    WOW_TYPE_FULLHWND
+
+} WOW_HANDLE_TYPE;
+
+HANDLE WINAPI WOWHandle32(WORD,WOW_HANDLE_TYPE);
+WORD   WINAPI WOWHandle16(HANDLE,WOW_HANDLE_TYPE);
+
+#ifdef __WINESRC__
+/* under Wine we use optimized versions where we can */
+#define HWND_32(h16)      ((HWND)      (ULONG_PTR)(h16))
+#define HMENU_32(h16)     ((HMENU)     (ULONG_PTR)(h16))
+#define HDWP_32(h16)      ((HDWP)      (ULONG_PTR)(h16))
+#define HDROP_32(h16)     ((HDROP)     (ULONG_PTR)(h16))
+#define HDC_32(h16)       ((HDC)       (ULONG_PTR)(h16))
+#define HFONT_32(h16)     ((HFONT)     (ULONG_PTR)(h16))
+#define HRGN_32(h16)      ((HRGN)      (ULONG_PTR)(h16))
+#define HBITMAP_32(h16)   ((HBITMAP)   (ULONG_PTR)(h16))
+#define HBRUSH_32(h16)    ((HBRUSH)    (ULONG_PTR)(h16))
+#define HPALETTE_32(h16)  ((HPALETTE)  (ULONG_PTR)(h16))
+#define HPEN_32(h16)      ((HPEN)      (ULONG_PTR)(h16))
+#define HACCEL_32(h16)    ((HACCEL)    (ULONG_PTR)(h16))
+
+#define HWND_16(h32)      (LOWORD(h32))
+#define HMENU_16(h32)     (LOWORD(h32))
+#define HDWP_16(h32)      (LOWORD(h32))
+#define HDROP_16(h32)     (LOWORD(h32))
+#define HDC_16(h32)       (LOWORD(h32))
+#define HFONT_16(h32)     (LOWORD(h32))
+#define HRGN_16(h32)      (LOWORD(h32))
+#define HBITMAP_16(h32)   (LOWORD(h32))
+#define HBRUSH_16(h32)    (LOWORD(h32))
+#define HPALETTE_16(h32)  (LOWORD(h32))
+#define HPEN_16(h32)      (LOWORD(h32))
+#define HACCEL_16(h32)    (LOWORD(h32))
+
+#else  /* __WINESRC__ */
+
+#define HWND_32(h16)      ((HWND)      (WOWHandle32(h16, WOW_TYPE_HWND)))
+#define HMENU_32(h16)     ((HMENU)     (WOWHandle32(h16, WOW_TYPE_HMENU)))
+#define HDWP_32(h16)      ((HDWP)      (WOWHandle32(h16, WOW_TYPE_HDWP)))
+#define HDROP_32(h16)     ((HDROP)     (WOWHandle32(h16, WOW_TYPE_HDROP)))
+#define HDC_32(h16)       ((HDC)       (WOWHandle32(h16, WOW_TYPE_HDC)))
+#define HFONT_32(h16)     ((HFONT)     (WOWHandle32(h16, WOW_TYPE_HFONT)))
+#define HRGN_32(h16)      ((HRGN)      (WOWHandle32(h16, WOW_TYPE_HRGN)))
+#define HBITMAP_32(h16)   ((HBITMAP)   (WOWHandle32(h16, WOW_TYPE_HBITMAP)))
+#define HBRUSH_32(h16)    ((HBRUSH)    (WOWHandle32(h16, WOW_TYPE_HBRUSH)))
+#define HPALETTE_32(h16)  ((HPALETTE)  (WOWHandle32(h16, WOW_TYPE_HPALETTE)))
+#define HPEN_32(h16)      ((HPEN)      (WOWHandle32(h16, WOW_TYPE_HPEN)))
+#define HACCEL_32(h16)    ((HACCEL)    (WOWHandle32(h16, WOW_TYPE_HACCEL)))
+
+#define HWND_16(h32)      (WOWHandle16(h32, WOW_TYPE_HWND))
+#define HMENU_16(h32)     (WOWHandle16(h32, WOW_TYPE_HMENU))
+#define HDWP_16(h32)      (WOWHandle16(h32, WOW_TYPE_HDWP))
+#define HDROP_16(h32)     (WOWHandle16(h32, WOW_TYPE_HDROP))
+#define HDC_16(h32)       (WOWHandle16(h32, WOW_TYPE_HDC))
+#define HFONT_16(h32)     (WOWHandle16(h32, WOW_TYPE_HFONT))
+#define HRGN_16(h32)      (WOWHandle16(h32, WOW_TYPE_HRGN))
+#define HBITMAP_16(h32)   (WOWHandle16(h32, WOW_TYPE_HBITMAP))
+#define HBRUSH_16(h32)    (WOWHandle16(h32, WOW_TYPE_HBRUSH))
+#define HPALETTE_16(h32)  (WOWHandle16(h32, WOW_TYPE_HPALETTE))
+#define HPEN_16(h32)      (WOWHandle16(h32, WOW_TYPE_HPEN))
+#define HACCEL_16(h32)    (WOWHandle16(h32, WOW_TYPE_HACCEL))
+
+#endif  /* __WINESRC__ */
+
+#define HMETAFILE_32(h16) ((HMETAFILE)(WOWHandle32(h16, WOW_TYPE_HMETAFILE)))
+#define HTASK_32(h16)     ((DWORD)(WOWHandle32(h16, WOW_TYPE_HTASK)))
+#define FULLHWND_32(h16)  ((HWND)(WOWHandle32(h16, WOW_TYPE_FULLHWND)))
+
+#define HMETAFILE_16(h32) (WOWHandle16(h32, WOW_TYPE_HMETAFILE))
+#define HTASK_16(h32)     (WOWHandle16((HANDLE)(h32), WOW_TYPE_HTASK))
+
+#define WCB16_PASCAL     0
+#define WCB16_CDECL      1
+#define WCB16_MAX_CBARGS 16
+
+/* Wine extensions: call register function, context ptr is passed in the return value LPDWORD */
+#define WCB16_REGS       2
+#define WCB16_REGS_LONG  4  /* function uses 32-bit lret */
+
+DWORD WINAPI WOWCallback16(DWORD,DWORD);
+BOOL  WINAPI WOWCallback16Ex(DWORD,DWORD,DWORD,LPVOID,LPDWORD);
+
+#endif /* _WOWNT32_H_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ws2spi.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ws2spi.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ws2spi.h	(revision 16410)
@@ -0,0 +1,53 @@
+/*
+ * WS2SPI.H -- definitions to be used with the WinSock service provider.
+ *
+ * Copyright (C) 2001 Patrik Stridvall
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _WINSOCK2SPI_
+#define _WINSOCK2SPI_
+
+#ifndef _WINSOCK2API_
+#include <winsock2.h>
+#endif /* !defined(_WINSOCK2API_) */
+
+#include <pshpack4.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+typedef BOOL (WINAPI *LPWPUPOSTMESSAGE)(HWND,UINT,WPARAM,LPARAM);
+
+WSAEVENT WINAPI WPUCompleteOverlappedRequest(SOCKET,LPWSAOVERLAPPED,DWORD,DWORD,LPINT);
+INT      WINAPI WSCInstallProvider(const LPGUID,LPCWSTR,const LPWSAPROTOCOL_INFOW,
+                                   DWORD,LPINT);
+INT      WINAPI WSCDeinstallProvider(LPGUID,LPINT);
+INT      WINAPI WSCEnableNSProvider(LPGUID,BOOL);
+INT      WINAPI WSCEnumProtocols(LPINT,LPWSAPROTOCOL_INFOW,LPDWORD,LPINT);
+INT      WINAPI WSCGetProviderPath(LPGUID,LPWSTR,LPINT,LPINT);
+INT      WINAPI WSCInstallNameSpace(LPWSTR,LPWSTR,DWORD,DWORD,LPGUID);
+INT      WINAPI WSCUnInstallNameSpace(LPGUID);
+INT      WINAPI WSCWriteProviderOrder(LPDWORD,DWORD);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#include <poppack.h>
+
+#endif /* !defined(_WINSOCK2SPI_) */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ws2tcpip.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ws2tcpip.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/ws2tcpip.h	(revision 16410)
@@ -0,0 +1,268 @@
+/*
+ * Copyright (C) 2001 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WS2TCPIP__
+#define __WS2TCPIP__
+
+#include <winsock2.h>
+/* FIXME: #include <ws2ipdef.h> */
+#include <limits.h>
+
+#ifdef USE_WS_PREFIX
+#define WS(x)    WS_##x
+#else
+#define WS(x)    x
+#endif
+
+/* FIXME: This gets defined by some Unix (Linux) header and messes things */
+#undef s6_addr
+
+/* for addrinfo calls */
+typedef struct WS(addrinfo)
+{
+    int                ai_flags;
+    int                ai_family;
+    int                ai_socktype;
+    int                ai_protocol;
+    size_t             ai_addrlen;
+    char *             ai_canonname;
+    struct WS(sockaddr)*   ai_addr;
+    struct WS(addrinfo)*   ai_next;
+} ADDRINFOA, *PADDRINFOA;
+
+typedef struct WS(addrinfoW)
+{
+    int                ai_flags;
+    int                ai_family;
+    int                ai_socktype;
+    int                ai_protocol;
+    size_t             ai_addrlen;
+    PWSTR              ai_canonname;
+    struct WS(sockaddr)*   ai_addr;
+    struct WS(addrinfoW)*   ai_next;
+} ADDRINFOW, *PADDRINFOW;
+
+typedef int WS(socklen_t);
+
+typedef ADDRINFOA ADDRINFO, *LPADDRINFO;
+
+/*
+ * Multicast group information
+ */
+
+struct WS(ip_mreq)
+{
+    struct WS(in_addr) imr_multiaddr;
+    struct WS(in_addr) imr_interface;
+};
+
+struct WS(ip_mreq_source) {
+    struct WS(in_addr) imr_multiaddr;
+    struct WS(in_addr) imr_sourceaddr;
+    struct WS(in_addr) imr_interface;
+};
+
+struct WS(ip_msfilter) {
+    struct WS(in_addr) imsf_multiaddr;
+    struct WS(in_addr) imsf_interface;
+    WS(u_long)         imsf_fmode;
+    WS(u_long)         imsf_numsrc;
+    struct WS(in_addr) imsf_slist[1];
+};
+
+typedef struct WS(in_addr6)
+{
+   WS(u_char) s6_addr[16]; /* IPv6 address */
+} IN6_ADDR, *PIN6_ADDR, *LPIN6_ADDR;
+
+typedef struct WS(sockaddr_in6)
+{
+   short   sin6_family;            /* AF_INET6 */
+   WS(u_short) sin6_port;          /* Transport level port number */
+   WS(u_long) sin6_flowinfo;       /* IPv6 flow information */
+   struct  WS(in_addr6) sin6_addr; /* IPv6 address */
+   WS(u_long) sin6_scope_id;       /* IPv6 scope id */
+} SOCKADDR_IN6,*PSOCKADDR_IN6, *LPSOCKADDR_IN6;
+
+typedef struct WS(sockaddr_in6_old)
+{
+   short   sin6_family;            /* AF_INET6 */
+   WS(u_short) sin6_port;              /* Transport level port number */
+   WS(u_long) sin6_flowinfo;          /* IPv6 flow information */
+   struct  WS(in_addr6) sin6_addr; /* IPv6 address */
+} SOCKADDR_IN6_OLD,*PSOCKADDR_IN6_OLD, *LPSOCKADDR_IN6_OLD;
+
+typedef union sockaddr_gen
+{
+   struct WS(sockaddr) Address;
+   struct WS(sockaddr_in)  AddressIn;
+   struct WS(sockaddr_in6_old) AddressIn6;
+} WS(sockaddr_gen);
+
+/* Structure to keep interface specific information */
+typedef struct _INTERFACE_INFO
+{
+    WS(u_long)        iiFlags;             /* Interface flags */
+    WS(sockaddr_gen)  iiAddress;           /* Interface address */
+    WS(sockaddr_gen)  iiBroadcastAddress;  /* Broadcast address */
+    WS(sockaddr_gen)  iiNetmask;           /* Network mask */
+} INTERFACE_INFO, * LPINTERFACE_INFO;
+
+/* Possible flags for the  iiFlags - bitmask  */
+#ifndef USE_WS_PREFIX
+#define IFF_UP                0x00000001 /* Interface is up */
+#define IFF_BROADCAST         0x00000002 /* Broadcast is  supported */
+#define IFF_LOOPBACK          0x00000004 /* this is loopback interface */
+#define IFF_POINTTOPOINT      0x00000008 /* this is point-to-point interface */
+#define IFF_MULTICAST         0x00000010 /* multicast is supported */
+#else
+#define WS_IFF_UP             0x00000001 /* Interface is up */
+#define WS_IFF_BROADCAST      0x00000002 /* Broadcast is  supported */
+#define WS_IFF_LOOPBACK       0x00000004 /* this is loopback interface */
+#define WS_IFF_POINTTOPOINT   0x00000008 /* this is point-to-point interface */
+#define WS_IFF_MULTICAST      0x00000010 /* multicast is supported */
+#endif /* USE_WS_PREFIX */
+
+#ifndef USE_WS_PREFIX
+#define IP_OPTIONS                      1
+#define IP_HDRINCL                      2
+#define IP_TOS                          3
+#define IP_TTL                          4
+#define IP_MULTICAST_IF                 9
+#define IP_MULTICAST_TTL                10
+#define IP_MULTICAST_LOOP               11
+#define IP_ADD_MEMBERSHIP               12
+#define IP_DROP_MEMBERSHIP              13
+#define IP_DONTFRAGMENT                 14
+#define IP_ADD_SOURCE_MEMBERSHIP        15
+#define IP_DROP_SOURCE_MEMBERSHIP       16
+#define IP_BLOCK_SOURCE                 17
+#define IP_UNBLOCK_SOURCE               18
+#define IP_PKTINFO                      19
+#define IP_RECEIVE_BROADCAST            22
+#else
+#define WS_IP_OPTIONS                   1
+#define WS_IP_HDRINCL                   2
+#define WS_IP_TOS                       3
+#define WS_IP_TTL                       4
+#define WS_IP_MULTICAST_IF              9
+#define WS_IP_MULTICAST_TTL             10
+#define WS_IP_MULTICAST_LOOP            11
+#define WS_IP_ADD_MEMBERSHIP            12
+#define WS_IP_DROP_MEMBERSHIP           13
+#define WS_IP_DONTFRAGMENT              14
+#define WS_IP_ADD_SOURCE_MEMBERSHIP     15
+#define WS_IP_DROP_SOURCE_MEMBERSHIP    16
+#define WS_IP_BLOCK_SOURCE              17
+#define WS_IP_UNBLOCK_SOURCE            18
+#define WS_IP_PKTINFO                   19
+#define WS_IP_RECEIVE_BROADCAST         22
+#endif /* USE_WS_PREFIX */
+
+/* Possible Windows flags for getaddrinfo() */
+#ifndef USE_WS_PREFIX
+# define AI_PASSIVE     0x0001
+# define AI_CANONNAME   0x0002
+# define AI_NUMERICHOST 0x0004
+/* getaddrinfo error codes */
+# define EAI_AGAIN	WSATRY_AGAIN
+# define EAI_BADFLAGS	WSAEINVAL
+# define EAI_FAIL	WSANO_RECOVERY
+# define EAI_FAMILY	WSAEAFNOSUPPORT
+# define EAI_MEMORY	WSA_NOT_ENOUGH_MEMORY
+# define EAI_NODATA	EAI_NONAME
+# define EAI_NONAME	WSAHOST_NOT_FOUND
+# define EAI_SERVICE	WSATYPE_NOT_FOUND
+# define EAI_SOCKTYPE	WSAESOCKTNOSUPPORT
+#else
+# define WS_AI_PASSIVE     0x0001
+# define WS_AI_CANONNAME   0x0002
+# define WS_AI_NUMERICHOST 0x0004
+/* getaddrinfo error codes */
+# define WS_EAI_AGAIN	WSATRY_AGAIN
+# define WS_EAI_BADFLAGS	WSAEINVAL
+# define WS_EAI_FAIL	WSANO_RECOVERY
+# define WS_EAI_FAMILY	WSAEAFNOSUPPORT
+# define WS_EAI_MEMORY	WSA_NOT_ENOUGH_MEMORY
+# define WS_EAI_NODATA	WS_EAI_NONAME
+# define WS_EAI_NONAME	WSAHOST_NOT_FOUND
+# define WS_EAI_SERVICE	WSATYPE_NOT_FOUND
+# define WS_EAI_SOCKTYPE	WSAESOCKTNOSUPPORT
+#endif
+
+/* Possible Windows flags for getnameinfo() */
+#ifndef USE_WS_PREFIX
+# define NI_NOFQDN          0x01
+# define NI_NUMERICHOST     0x02
+# define NI_NAMEREQD        0x04
+# define NI_NUMERICSERV     0x08
+# define NI_DGRAM           0x10
+#else
+# define WS_NI_NOFQDN       0x01
+# define WS_NI_NUMERICHOST  0x02
+# define WS_NI_NAMEREQD     0x04
+# define WS_NI_NUMERICSERV  0x08
+# define WS_NI_DGRAM        0x10
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void WINAPI WS(freeaddrinfo)(LPADDRINFO);
+#define     FreeAddrInfoA WS(freeaddrinfo)
+void WINAPI FreeAddrInfoW(PADDRINFOW);
+#define     FreeAddrInfo WINELIB_NAME_AW(FreeAddrInfo)
+int WINAPI  WS(getaddrinfo)(const char*,const char*,const struct WS(addrinfo)*,struct WS(addrinfo)**);
+#define     GetAddrInfoA WS(getaddrinfo)
+int WINAPI  GetAddrInfoW(PCWSTR,PCWSTR,const ADDRINFOW*,PADDRINFOW*);
+#define     GetAddrInfo WINELIB_NAME_AW(GetAddrInfo)
+int WINAPI  WS(getnameinfo)(const SOCKADDR*,WS(socklen_t),PCHAR,DWORD,PCHAR,DWORD,INT);
+#define     GetNameInfoA WS(getnameinfo)
+INT WINAPI  GetNameInfoW(const SOCKADDR*,WS(socklen_t),PWCHAR,DWORD,PWCHAR,DWORD,INT);
+#define     GetNameInfo WINELIB_NAME_AW(GetNameInfo)
+
+/*
+ * Ws2tcpip Function Typedefs
+ *
+ * Remember to keep this section in sync with the
+ * prototypes above.
+ */
+#if INCL_WINSOCK_API_TYPEDEFS
+
+typedef void (WINAPI *LPFN_FREEADDRINFO)(LPADDRINFO);
+#define LPFN_FREEADDRINFOA LPFN_FREEADDRINFO
+typedef void (WINAPI *LPFN_FREEADDRINFOW)(PADDRINFOW);
+#define LPFN_FREEADDRINFOT WINELIB_NAME_AW(LPFN_FREEADDRINFO)
+typedef int (WINAPI *LPFN_GETADDRINFO)(const char*,const char*,const struct WS(addrinfo)*,struct WS(addrinfo)**);
+#define LPFN_GETADDRINFOA LPFN_GETADDRINFO
+typedef int (WINAPI *LPFN_GETADDRINFOW)(PCWSTR,PCWSTR,const ADDRINFOW*,PADDRINFOW*);
+#define LPFN_GETADDRINFOT WINELIB_NAME_AW(LPFN_GETADDRINFO)
+typedef int (WINAPI *LPFN_GETNAMEINFO)(const struct sockaddr*,socklen_t,char*,DWORD,char*,DWORD,int);
+#define LPFN_GETNAMEINFOA LPFN_GETNAMEINFO
+typedef int (WINAPI *LPFN_GETNAMEINFOW)(const SOCKADDR*,socklen_t,PWCHAR,DWORD,PWCHAR,DWORD,INT);
+#define LPFN_GETNAMEINFOT WINELIB_NAME_AW(LPFN_GETNAMEINFO)
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WS2TCPIP__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wshisotp.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wshisotp.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wshisotp.h	(revision 16410)
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2001 Stefan Leichter
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _WINE_WSHISOTP_
+#define _WINE_WSHISOTP_
+
+
+/*
+ * constants
+ */
+#define ISOPROTO_TP4       29
+#define ISOPROTO_TP        ISOPROTO_TP4
+
+
+#endif /* _WINE_WSHISOTP_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wsipx.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wsipx.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wsipx.h	(revision 16410)
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2001 Stefan Leichter
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _WINE_WSIPX_
+#define _WINE_WSIPX_
+
+#ifdef USE_WS_PREFIX
+# define WS(x)    WS_##x
+#else
+# define WS(x)    x
+#endif
+
+typedef struct WS_sockaddr_ipx
+{
+    short sa_family;
+    char sa_netnum[4];
+    char sa_nodenum[6];
+    unsigned short sa_socket;
+} SOCKADDR_IPX, *PSOCKADDR_IPX, *LPSOCKADDR_IPX;
+
+/*
+ * constants
+ */
+#define NSPROTO_IPX                 1000
+#define NSPROTO_SPX                 1256
+#define NSPROTO_SPXII               1257
+
+#undef WS
+#endif /* _WINE_WSIPX_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wsnwlink.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wsnwlink.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wsnwlink.h	(revision 16410)
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2003,2004 Roderick Colenbrander
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _WSNWLINK_
+#define _WSNWLINK_
+
+#define IPX_PTYPE 0x4000
+#define IPX_FILTERPTYPE 0x4001
+#define IPX_DSTYPE 0x4002
+#define IPX_STOPFILTERPTYPE 0x4003
+#define IPX_EXTENDED_ADDRESS 0x4004
+#define IPX_RECVHDR 0x4005
+#define IPX_MAXSIZE 0x4006
+#define IPX_ADDRESS 0x4007
+#define IPX_GETNETINFO 0x4008
+#define IPX_GETNETINFO_NORIP 0x4009
+#define IPX_SPXGETCONNECTIONSTATUS 0x400b
+#define IPX_ADDRESS_NOTIFY 0x400c
+#define IPX_MAX_ADAPTER_NUM 0x400d
+#define IPX_RERIPNETNUMBER 0x400e
+#define IPX_RECEIVE_BROADCAST 0x400f
+#define IPX_IMMEDIATESPXACK 0x4010
+
+typedef struct _IPX_ADDRESS_DATA {
+    INT   adapternum;
+    UCHAR netnum[4];
+    UCHAR nodenum[6];
+    BOOLEAN wan;
+    BOOLEAN status;
+    INT maxpkt;
+    ULONG linkspeed;
+} IPX_ADDRESS_DATA, *PIPX_ADDRESS_DATA;
+
+#endif /* _WSNWLINK_ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wtsapi32.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wtsapi32.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wtsapi32.h	(revision 16410)
@@ -0,0 +1,165 @@
+/*
+ * Copyright 2005 Ulrich Czekalla (For CodeWeavers)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WTSAPI32_H
+#define __WINE_WTSAPI32_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+typedef enum tagWTS_INFO_CLASS
+{
+    WTSInitialProgram,
+    WTSApplicationName,
+    WTSWorkingDirectory,
+    WTSOEMId,
+    WTSSessionId,
+    WTSUserName,
+    WTSWinStationName,
+    WTSDomainName,
+    WTSConnectState,
+    WTSClientBuildNumber,
+    WTSClientName,
+    WTSClientDirectory,
+    WTSClientProductId,
+    WTSClientHardwareId,
+    WTSClientAddress,
+    WTSClientDisplay,
+    WTSClientProtocolType,
+} WTS_INFO_CLASS;
+
+typedef enum _WTS_CONNECTSTATE_CLASS
+{
+    WTSActive,
+    WTSConnected,
+    WTSConnectQuery,
+    WTSShadow,
+    WTSDisconnected,
+    WTSIdle,
+    WTSListen,
+    WTSReset,
+    WTSDown,
+    WTSInit
+} WTS_CONNECTSTATE_CLASS;
+
+typedef enum _WTS_CONFIG_CLASS
+{
+    WTSUserConfigInitialProgram,
+    WTSUserConfigWorkingDirectory,
+    WTSUserConfigInheritInitialProgram,
+    WTSUserConfigAllowLogonTerminalServer,
+    WTSUserConfigTimeoutSettingsConnections,
+    WTSUserConfigTimeoutSettingsDisconnections,
+    WTSUserConfigTimeoutSettingsIdle,
+    WTSUserConfigDeviceClientDrives,
+    WTSUserConfigDeviceClientPrinters,
+    WTSUserConfigDeviceClientDefaultPrinter,
+    WTSUserConfigBrokenTimeoutSettings,
+    WTSUserConfigModemCallbackSettings,
+    WTSUserConfigModemCallbackPhoneNumber,
+    WTSUserConfigShadowSettings,
+    WTSUserConfigTerminalServerProfilePath,
+    WTSUserConfigTerminalServerHomeDirectory,
+    WTSUserConfigfTerminalServerRemoteHomeDir
+} WTS_CONFIG_CLASS;
+
+typedef struct _WTS_PROCESS_INFOA
+{
+    DWORD SessionId;
+    DWORD ProcessId;
+    LPSTR pProcessName;
+    PSID pUserSid;
+} WTS_PROCESS_INFOA, *PWTS_PROCESS_INFOA;
+
+typedef struct _WTS_PROCESS_INFOW
+{
+    DWORD SessionId;
+    DWORD ProcessId;
+    LPWSTR pProcessName;
+    PSID pUserSid;
+} WTS_PROCESS_INFOW, *PWTS_PROCESS_INFOW;
+
+DECL_WINELIB_TYPE_AW(WTS_PROCESS_INFO)
+DECL_WINELIB_TYPE_AW(PWTS_PROCESS_INFO)
+
+typedef struct _WTS_SESSION_INFOA
+{
+    DWORD SessionId;
+    LPSTR pWinStationName;
+    WTS_CONNECTSTATE_CLASS State;
+} WTS_SESSION_INFOA, *PWTS_SESSION_INFOA;
+
+typedef struct _WTS_SESSION_INFOW
+{
+    DWORD SessionId;
+    LPWSTR pWinStationName;
+    WTS_CONNECTSTATE_CLASS State;
+} WTS_SESSION_INFOW, *PWTS_SESSION_INFOW;
+
+DECL_WINELIB_TYPE_AW(WTS_SESSION_INFO)
+DECL_WINELIB_TYPE_AW(PWTS_SESSION_INFO)
+
+typedef struct _WTS_SERVER_INFOA
+{
+    LPSTR pServerName;
+} WTS_SERVER_INFOA, *PWTS_SERVER_INFOA;
+
+typedef struct _WTS_SERVER_INFOW
+{
+    LPWSTR pServerName;
+} WTS_SERVER_INFOW, *PWTS_SERVER_INFOW;
+
+DECL_WINELIB_TYPE_AW(WTS_SERVER_INFO)
+DECL_WINELIB_TYPE_AW(PWTS_SERVER_INFO)
+
+void WINAPI WTSCloseServer(HANDLE);
+BOOL WINAPI WTSDisconnectSession(HANDLE, DWORD, BOOL);
+BOOL WINAPI WTSEnumerateProcessesA(HANDLE, DWORD, DWORD, PWTS_PROCESS_INFOA *, DWORD *);
+BOOL WINAPI WTSEnumerateProcessesW(HANDLE, DWORD, DWORD, PWTS_PROCESS_INFOW *, DWORD *);
+#define     WTSEnumerateProcesses WINELIB_NAME_AW(WTSEnumerateProcesses)
+BOOL WINAPI WTSEnumerateServersA( LPSTR, DWORD, DWORD, PWTS_SERVER_INFOA*, DWORD*);
+BOOL WINAPI WTSEnumerateServersW( LPWSTR, DWORD, DWORD, PWTS_SERVER_INFOW*, DWORD*);
+#define     WTSEnumerateServers WINELIB_NAME_AW(WTSEnumerateServers)
+BOOL WINAPI WTSEnumerateSessionsA(HANDLE, DWORD, DWORD, PWTS_SESSION_INFOA *, DWORD *);
+BOOL WINAPI WTSEnumerateSessionsW(HANDLE, DWORD, DWORD, PWTS_SESSION_INFOW *, DWORD *);
+#define     WTSEnumerateSessions WINELIB_NAME_AW(WTSEnumerateSessions)
+void WINAPI WTSFreeMemory(PVOID); 
+HANDLE WINAPI WTSOpenServerA(LPSTR);
+HANDLE WINAPI WTSOpenServerW(LPWSTR);
+#define     WTSOpenServer WINELIB_NAME_AW(WTSOpenServer)
+BOOL WINAPI WTSQuerySessionInformationA(HANDLE, DWORD, WTS_INFO_CLASS, LPSTR *, DWORD *);
+BOOL WINAPI WTSQuerySessionInformationW(HANDLE, DWORD, WTS_INFO_CLASS, LPWSTR *, DWORD *);
+#define     WTSQuerySessionInformation WINELIB_NAME_AW(WTSQuerySessionInformation)
+BOOL WINAPI WTSQueryUserConfigA(LPSTR,LPSTR,WTS_CONFIG_CLASS,LPSTR*,DWORD*);
+BOOL WINAPI WTSQueryUserConfigW(LPWSTR,LPWSTR,WTS_CONFIG_CLASS,LPWSTR*,DWORD*);
+#define     WTSQueryUserConfig WINELIB_NAME_AW(WTSQueryUserConfig)
+BOOL WINAPI WTSQueryUserToken(ULONG, PHANDLE);
+BOOL WINAPI WTSRegisterSessionNotification(HWND, DWORD);
+BOOL WINAPI WTSRegisterSessionNotificationEx(HANDLE, HWND, DWORD);
+BOOL WINAPI WTSTerminateProcess(HANDLE, DWORD, DWORD);
+BOOL WINAPI WTSUnRegisterSessionNotification(HWND);
+BOOL WINAPI WTSUnRegisterSessionNotificationEx(HANDLE, HWND);
+BOOL WINAPI WTSWaitSystemEvent(HANDLE, DWORD, DWORD*);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wtypes.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wtypes.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wtypes.h	(revision 16410)
@@ -0,0 +1,751 @@
+/*** Autogenerated by WIDL 1.1.10 from ../../../dlls/wined3d/../../include/wtypes.idl - Do not edit ***/
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef __WIDL_WTYPES_H
+#define __WIDL_WTYPES_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <basetsd.h>
+#include <guiddef.h>
+#if 0 /* winnt.h */
+typedef unsigned char BYTE;
+typedef unsigned short WORD;
+typedef unsigned long DWORD;
+typedef long BOOL;
+typedef unsigned char UCHAR;
+typedef int INT;
+typedef unsigned int UINT;
+typedef short SHORT;
+typedef unsigned short USHORT;
+typedef long LONG;
+typedef unsigned long ULONG;
+typedef float FLOAT;
+typedef void *PVOID;
+typedef void *LPVOID;
+typedef DWORD *LPDWORD;
+typedef char CHAR;
+typedef CHAR *LPSTR;
+typedef const CHAR *LPCSTR;
+typedef wchar_t WCHAR;
+typedef WCHAR *LPWSTR;
+typedef const WCHAR *LPCWSTR;
+typedef boolean BOOLEAN;
+typedef DWORD COLORREF;
+typedef void *HANDLE;
+typedef void *HMODULE;
+typedef void *HINSTANCE;
+typedef void *HRGN;
+typedef void *HTASK;
+typedef void *HKEY;
+typedef void *HDESK;
+typedef void *HMF;
+typedef void *HEMF;
+typedef void *HPEN;
+typedef void *HRSRC;
+typedef void *HSTR;
+typedef void *HWINSTA;
+typedef void *HKL;
+typedef void *HGDIOBJ;
+typedef HANDLE HDWP;
+typedef LONG_PTR LRESULT;
+typedef LONG HRESULT;
+typedef DWORD LCID;
+typedef unsigned __int64 DWORDLONG;
+typedef __int64 LONGLONG;
+typedef unsigned __int64 ULONGLONG;
+typedef struct _LARGE_INTEGER {
+    LONGLONG QuadPart;
+} LARGE_INTEGER;
+typedef struct _ULARGE_INTEGER {
+    ULONGLONG QuadPart;
+} ULARGE_INTEGER;
+typedef struct _SID_IDENTIFIER_AUTHORITY {
+    UCHAR Value[6];
+} SID_IDENTIFIER_AUTHORITY;
+typedef struct _SID_IDENTIFIER_AUTHORITY *PSID_IDENTIFIER_AUTHORITY;
+typedef struct _SID {
+    UCHAR Revision;
+    UCHAR SubAuthorityCount;
+    SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
+    ULONG SubAuthority[1];
+} SID;
+typedef struct _SID *PSID;
+typedef USHORT SECURITY_DESCRIPTOR_CONTROL;
+typedef USHORT *PSECURITY_DESCRIPTOR_CONTROL;
+typedef struct _ACL {
+    UCHAR AclRevision;
+    UCHAR Sbz1;
+    USHORT AclSize;
+    USHORT AceCount;
+    USHORT Sbz2;
+} ACL;
+typedef ACL *PACL;
+typedef struct _SECURITY_DESCRIPTOR {
+    UCHAR Revision;
+    UCHAR Sbz1;
+    SECURITY_DESCRIPTOR_CONTROL Control;
+    PSID Owner;
+    PSID Group;
+    PACL Sacl;
+    PACL Dacl;
+} SECURITY_DESCRIPTOR;
+typedef struct _SECURITY_DESCRIPTOR *PSECURITY_DESCRIPTOR;
+typedef struct _SECURITY_ATTRIBUTES {
+    DWORD nLength;
+    LPVOID lpSecurityDescriptor;
+    BOOL bInheritHandle;
+} SECURITY_ATTRIBUTES;
+typedef struct _SECURITY_ATTRIBUTES *PSECURITY_ATTRIBUTES;
+typedef struct _SECURITY_ATTRIBUTES *LPSECURITY_ATTRIBUTES;
+typedef struct tagSIZE {
+    LONG cx;
+    LONG cy;
+} SIZE;
+typedef struct tagSIZE *PSIZE;
+typedef struct tagSIZE *LPSIZE;
+typedef SIZE SIZEL;
+typedef SIZE *PSIZEL;
+typedef SIZE *LPSIZEL;
+typedef struct tagPOINT {
+    LONG x;
+    LONG y;
+} POINT;
+typedef struct tagPOINT *PPOINT;
+typedef struct tagPOINT *LPPOINT;
+typedef struct _POINTL {
+    LONG x;
+    LONG y;
+} POINTL;
+typedef struct _POINTL *PPOINTL;
+typedef struct tagRECT {
+    LONG left;
+    LONG top;
+    LONG right;
+    LONG bottom;
+} RECT;
+typedef struct tagRECT *PRECT;
+typedef struct tagRECT *LPRECT;
+typedef const RECT *LPCRECT;
+typedef struct _RECTL {
+    LONG left;
+    LONG top;
+    LONG right;
+    LONG bottom;
+} RECTL;
+typedef struct _RECTL *PRECTL;
+typedef struct _RECTL *LPRECTL;
+typedef const RECTL *LPCRECTL;
+typedef UINT_PTR WPARAM;
+typedef LONG_PTR LPARAM;
+#endif /* winnt.h */
+#ifdef _MSC_VER
+typedef double DOUBLE;
+#else
+typedef double DECLSPEC_ALIGN(8) DOUBLE;
+#endif
+#ifndef _PALETTEENTRY_DEFINED
+#define _PALETTEENTRY_DEFINED
+typedef struct tagPALETTEENTRY {
+    BYTE peRed;
+    BYTE peGreen;
+    BYTE peBlue;
+    BYTE peFlags;
+} PALETTEENTRY;
+typedef struct tagPALETTEENTRY *PPALETTEENTRY;
+typedef struct tagPALETTEENTRY *LPPALETTEENTRY;
+#endif
+#ifndef _LOGPALETTE_DEFINED
+#define _LOGPALETTE_DEFINED
+typedef struct tagLOGPALETTE {
+    WORD palVersion;
+    WORD palNumEntries;
+    PALETTEENTRY palPalEntry[1];
+} LOGPALETTE;
+typedef struct tagLOGPALETTE *PLOGPALETTE;
+typedef struct tagLOGPALETTE *LPLOGPALETTE;
+#endif
+#ifndef _SYSTEMTIME_
+#define _SYSTEMTIME_
+typedef struct _SYSTEMTIME {
+    WORD wYear;
+    WORD wMonth;
+    WORD wDayOfWeek;
+    WORD wDay;
+    WORD wHour;
+    WORD wMinute;
+    WORD wSecond;
+    WORD wMilliseconds;
+} SYSTEMTIME;
+typedef struct _SYSTEMTIME *PSYSTEMTIME;
+typedef struct _SYSTEMTIME *LPSYSTEMTIME;
+#endif
+#ifndef _FILETIME_
+#define _FILETIME_
+typedef struct _FILETIME {
+    DWORD dwLowDateTime;
+    DWORD dwHighDateTime;
+} FILETIME;
+typedef struct _FILETIME *PFILETIME;
+typedef struct _FILETIME *LPFILETIME;
+#endif
+#ifndef _TEXTMETRIC_DEFINED
+#define _TEXTMETRIC_DEFINED
+typedef struct tagTEXTMETRICA {
+    LONG tmHeight;
+    LONG tmAscent;
+    LONG tmDescent;
+    LONG tmInternalLeading;
+    LONG tmExternalLeading;
+    LONG tmAveCharWidth;
+    LONG tmMaxCharWidth;
+    LONG tmWeight;
+    LONG tmOverhang;
+    LONG tmDigitizedAspectX;
+    LONG tmDigitizedAspectY;
+    BYTE tmFirstChar;
+    BYTE tmLastChar;
+    BYTE tmDefaultChar;
+    BYTE tmBreakChar;
+    BYTE tmItalic;
+    BYTE tmUnderlined;
+    BYTE tmStruckOut;
+    BYTE tmPitchAndFamily;
+    BYTE tmCharSet;
+} TEXTMETRICA;
+typedef struct tagTEXTMETRICA *LPTEXTMETRICA;
+typedef struct tagTEXTMETRICA *PTEXTMETRICA;
+typedef struct tagTEXTMETRICW {
+    LONG tmHeight;
+    LONG tmAscent;
+    LONG tmDescent;
+    LONG tmInternalLeading;
+    LONG tmExternalLeading;
+    LONG tmAveCharWidth;
+    LONG tmMaxCharWidth;
+    LONG tmWeight;
+    LONG tmOverhang;
+    LONG tmDigitizedAspectX;
+    LONG tmDigitizedAspectY;
+    WCHAR tmFirstChar;
+    WCHAR tmLastChar;
+    WCHAR tmDefaultChar;
+    WCHAR tmBreakChar;
+    BYTE tmItalic;
+    BYTE tmUnderlined;
+    BYTE tmStruckOut;
+    BYTE tmPitchAndFamily;
+    BYTE tmCharSet;
+} TEXTMETRICW;
+typedef struct tagTEXTMETRICW *LPTEXTMETRICW;
+typedef struct tagTEXTMETRICW *PTEXTMETRICW;
+#endif
+typedef WCHAR OLECHAR;
+typedef OLECHAR *LPOLESTR;
+typedef const OLECHAR *LPCOLESTR;
+#ifndef __WINESRC__
+#define OLESTR(str) L##str
+#endif
+typedef LONG SCODE;
+typedef struct _COAUTHIDENTITY {
+    USHORT *User;
+    ULONG UserLength;
+    USHORT *Domain;
+    ULONG DomainLength;
+    USHORT *Password;
+    ULONG PasswordLength;
+    ULONG Flags;
+} COAUTHIDENTITY;
+typedef struct _COAUTHINFO {
+    DWORD dwAuthnSvc;
+    DWORD dwAuthzSvc;
+    LPWSTR pwszServerPrincName;
+    DWORD dwAuthnLevel;
+    DWORD dwImpersonationLevel;
+    COAUTHIDENTITY *pAuthIdentityData;
+    DWORD dwCapabilities;
+} COAUTHINFO;
+typedef enum tagMEMCTX {
+    MEMCTX_TASK = 1,
+    MEMCTX_SHARED = 2,
+    MEMCTX_MACSYSTEM = 3,
+    MEMCTX_UNKNOWN = -1,
+    MEMCTX_SAME = -2
+} MEMCTX;
+#ifndef _ROT_COMPARE_MAX_DEFINED
+#define _ROT_COMPARE_MAX_DEFINED
+#define ROT_COMPARE_MAX 2048
+#endif
+#ifndef _ROTFLAGS_DEFINED
+#define _ROTFLAGS_DEFINED
+#define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1
+#define ROTFLAGS_ALLOWANYCLIENT 0x2
+#endif
+typedef enum tagCLSCTX {
+    CLSCTX_INPROC_SERVER = 0x1,
+    CLSCTX_INPROC_HANDLER = 0x2,
+    CLSCTX_LOCAL_SERVER = 0x4,
+    CLSCTX_INPROC_SERVER16 = 0x8,
+    CLSCTX_REMOTE_SERVER = 0x10,
+    CLSCTX_INPROC_HANDLER16 = 0x20,
+    CLSCTX_INPROC_SERVERX86 = 0x40,
+    CLSCTX_INPROC_HANDLERX86 = 0x80,
+    CLSCTX_ESERVER_HANDLER = 0x100,
+    CLSCTX_NO_CODE_DOWNLOAD = 0x400,
+    CLSCTX_NO_CUSTOM_MARSHAL = 0x1000,
+    CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000,
+    CLSCTX_NO_FAILURE_LOG = 0x4000,
+    CLSCTX_DISABLE_AAA = 0x8000,
+    CLSCTX_ENABLE_AAA = 0x10000,
+    CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000
+} CLSCTX;
+#define CLSCTX_INPROC (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER)
+#define CLSCTX_ALL (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)
+#define CLSCTX_SERVER (CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)
+typedef enum tagMSHLFLAGS {
+    MSHLFLAGS_NORMAL = 0,
+    MSHLFLAGS_TABLESTRONG = 1,
+    MSHLFLAGS_TABLEWEAK = 2,
+    MSHLFLAGS_NOPING = 4
+} MSHLFLAGS;
+typedef enum tagMSHCTX {
+    MSHCTX_LOCAL = 0,
+    MSHCTX_NOSHAREDMEM = 1,
+    MSHCTX_DIFFERENTMACHINE = 2,
+    MSHCTX_INPROC = 3,
+    MSHCTX_CROSSCTX = 4
+} MSHCTX;
+typedef struct _BYTE_BLOB {
+    unsigned long clSize;
+    byte abData[1];
+} BYTE_BLOB;
+typedef BYTE_BLOB *UP_BYTE_BLOB;
+typedef struct _FLAGGED_BYTE_BLOB {
+    unsigned long fFlags;
+    unsigned long clSize;
+    byte abData[1];
+} FLAGGED_BYTE_BLOB;
+typedef FLAGGED_BYTE_BLOB *UP_FLAGGED_BYTE_BLOB;
+typedef struct _FLAGGED_WORD_BLOB {
+    unsigned long fFlags;
+    unsigned long clSize;
+    unsigned short asData[1];
+} FLAGGED_WORD_BLOB;
+typedef FLAGGED_WORD_BLOB *UP_FLAGGED_WORD_BLOB;
+typedef struct _BYTE_SIZEDARR {
+    unsigned long clSize;
+    byte *pData;
+} BYTE_SIZEDARR;
+typedef struct _SHORT_SIZEDARR {
+    unsigned long clSize;
+    unsigned short *pData;
+} WORD_SIZEDARR;
+typedef struct _LONG_SIZEDARR {
+    unsigned long clSize;
+    unsigned long *pData;
+} DWORD_SIZEDARR;
+typedef struct _HYPER_SIZEDARR {
+    unsigned long clSize;
+    hyper *pData;
+} HYPER_SIZEDARR;
+#define WDT_INPROC_CALL (0x48746457)
+
+#define WDT_REMOTE_CALL (0x52746457)
+
+#define WDT_INPROC64_CALL (0x50746457)
+
+typedef struct _userCLIPFORMAT {
+    long fContext;
+    union {
+        DWORD dwValue;
+        LPWSTR pwszName;
+    } u;
+} userCLIPFORMAT;
+typedef userCLIPFORMAT *wireCLIPFORMAT;
+typedef WORD CLIPFORMAT;
+typedef struct tagRemHGLOBAL {
+    long fNullHGlobal;
+    unsigned long cbData;
+    byte data[1];
+} RemHGLOBAL;
+typedef struct _userHGLOBAL {
+    long fContext;
+    union {
+        long hInproc;
+        FLAGGED_BYTE_BLOB *hRemote;
+        long hGlobal;
+    } u;
+} userHGLOBAL;
+typedef userHGLOBAL *wireHGLOBAL;
+typedef struct tagRemHMETAFILEPICT {
+    long mm;
+    long xExt;
+    long yExt;
+    unsigned long cbData;
+    byte data[1];
+} RemHMETAFILEPICT;
+typedef struct _userHMETAFILE {
+    long fContext;
+    union {
+        long hInproc;
+        BYTE_BLOB *hRemote;
+        long hGlobal;
+    } u;
+} userHMETAFILE;
+typedef userHMETAFILE *wireHMETAFILE;
+typedef struct _remoteMETAFILEPICT {
+    long mm;
+    long xExt;
+    long yExt;
+    userHMETAFILE *hMF;
+} remoteMETAFILEPICT;
+typedef struct _userHMETAFILEPICT {
+    long fContext;
+    union {
+        long hInproc;
+        remoteMETAFILEPICT *hRemote;
+        long hGlobal;
+    } u;
+} userHMETAFILEPICT;
+typedef userHMETAFILEPICT *wireHMETAFILEPICT;
+typedef struct tagRemHENHMETAFILE {
+    unsigned long cbData;
+    byte data[1];
+} RemHENHMETAFILE;
+typedef struct _userHENHMETAFILE {
+    long fContext;
+    union {
+        long hInproc;
+        BYTE_BLOB *hRemote;
+        long hGlobal;
+    } u;
+} userHENHMETAFILE;
+typedef userHENHMETAFILE *wireHENHMETAFILE;
+typedef struct tagRemHBITMAP {
+    unsigned long cbData;
+    byte data[1];
+} RemHBITMAP;
+typedef struct _userBITMAP {
+    LONG bmType;
+    LONG bmWidth;
+    LONG bmHeight;
+    LONG bmWidthBytes;
+    WORD bmPlanes;
+    WORD bmBitsPixel;
+    ULONG cbSize;
+    byte pBuffer[1];
+} userBITMAP;
+typedef struct _userHBITMAP {
+    long fContext;
+    union {
+        long hInproc;
+        userBITMAP *hRemote;
+        long hGlobal;
+    } u;
+} userHBITMAP;
+typedef userHBITMAP *wireHBITMAP;
+typedef struct tagRemHPALETTE {
+    unsigned long cbData;
+    byte data[1];
+} RemHPALETTE;
+typedef struct tagrpcLOGPALETTE {
+    WORD palVersion;
+    WORD palNumEntries;
+    PALETTEENTRY palPalEntry[1];
+} rpcLOGPALETTE;
+typedef struct _userHPALETTE {
+    long fContext;
+    union {
+        long hInproc;
+        rpcLOGPALETTE *hRemote;
+        long hGlobal;
+    } u;
+} userHPALETTE;
+typedef userHPALETTE *wireHPALETTE;
+#if 0
+typedef void *HGLOBAL;
+typedef HGLOBAL HLOCAL;
+typedef void *HBITMAP;
+typedef void *HPALETTE;
+typedef void *HENHMETAFILE;
+typedef void *HMETAFILE;
+#endif
+typedef void *HMETAFILEPICT;
+typedef struct _RemotableHandle {
+    long fContext;
+    union {
+        long hInproc;
+        long hRemote;
+    } u;
+} RemotableHandle;
+typedef RemotableHandle *wireHACCEL;
+typedef RemotableHandle *wireHBRUSH;
+typedef RemotableHandle *wireHDC;
+typedef RemotableHandle *wireHFONT;
+typedef RemotableHandle *wireHICON;
+typedef RemotableHandle *wireHMENU;
+typedef RemotableHandle *wireHWND;
+#if 0
+typedef void *HACCEL;
+typedef void *HBRUSH;
+typedef void *HDC;
+typedef void *HFONT;
+typedef void *HICON;
+typedef void *HMENU;
+typedef void *HWND;
+typedef HICON HCURSOR;
+typedef struct tagMSG {
+    HWND hwnd;
+    UINT message;
+    WPARAM wParam;
+    LPARAM lParam;
+    DWORD time;
+    POINT pt;
+} MSG;
+typedef struct tagMSG *PMSG;
+typedef struct tagMSG *NPMSG;
+typedef struct tagMSG *LPMSG;
+#endif
+#if 0
+typedef GUID *REFGUID;
+typedef IID *REFIID;
+typedef CLSID *REFCLSID;
+typedef FMTID *REFFMTID;
+#endif
+typedef enum tagDVASPECT {
+    DVASPECT_CONTENT = 1,
+    DVASPECT_THUMBNAIL = 2,
+    DVASPECT_ICON = 4,
+    DVASPECT_DOCPRINT = 8
+} DVASPECT;
+typedef enum tagSTGC {
+    STGC_DEFAULT = 0,
+    STGC_OVERWRITE = 1,
+    STGC_ONLYIFCURRENT = 2,
+    STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4,
+    STGC_CONSOLIDATE = 8
+} STGC;
+typedef enum tagSTGMOVE {
+    STGMOVE_MOVE = 0,
+    STGMOVE_COPY = 1,
+    STGMOVE_SHALLOWCOPY = 2
+} STGMOVE;
+typedef enum tagSTATFLAG {
+    STATFLAG_DEFAULT = 0,
+    STATFLAG_NONAME = 1,
+    STATFLAG_NOOPEN = 2
+} STATFLAG;
+#ifdef _MSC_VER
+typedef double DATE;
+#else
+typedef double DECLSPEC_ALIGN(8) DATE;
+#endif
+#if 0
+typedef struct tagCY {
+    LONGLONG int64;
+} CY;
+#else
+#ifndef _tagCY_DEFINED
+#define _tagCY_DEFINED
+typedef union tagCY {
+    struct {
+#ifdef WORDS_BIGENDIAN
+        LONG  Hi;
+        ULONG Lo;
+#else
+        ULONG Lo;
+        LONG  Hi;
+#endif
+    } DUMMYSTRUCTNAME;
+    LONGLONG int64;
+} CY;
+#endif
+#endif
+typedef CY *LPCY;
+#if 0
+typedef struct tagDEC {
+    USHORT wReserved;
+    BYTE scale;
+    BYTE sign;
+    ULONG Hi32;
+    ULONGLONG Lo64;
+} DECIMAL;
+#else
+typedef struct tagDEC {
+  USHORT wReserved;
+  union {
+    struct {
+      BYTE scale;
+      BYTE sign;
+    } DUMMYSTRUCTNAME;
+    USHORT signscale;
+  } DUMMYUNIONNAME;
+  ULONG Hi32;
+  union {
+    struct {
+#ifdef WORDS_BIGENDIAN
+      ULONG Mid32;
+      ULONG Lo32;
+#else
+      ULONG Lo32;
+      ULONG Mid32;
+#endif
+    } DUMMYSTRUCTNAME1;
+    ULONGLONG Lo64;
+  } DUMMYUNIONNAME1;
+} DECIMAL;
+#endif
+#define DECIMAL_NEG ((BYTE)0x80)
+#define DECIMAL_SETZERO(d) do{ memset(((char*)&(d)) + sizeof(USHORT), 0, sizeof(ULONG) * 3u + sizeof(USHORT)); }while (0)
+typedef DECIMAL *LPDECIMAL;
+typedef FLAGGED_WORD_BLOB *wireBSTR;
+typedef OLECHAR *BSTR;
+typedef BSTR *LPBSTR;
+typedef short VARIANT_BOOL;
+typedef VARIANT_BOOL _VARIANT_BOOL;
+#define VARIANT_TRUE  ((VARIANT_BOOL)0xFFFF)
+#define VARIANT_FALSE ((VARIANT_BOOL)0x0000)
+typedef struct tagBSTRBLOB {
+    ULONG cbSize;
+    BYTE *pData;
+} BSTRBLOB;
+typedef struct tagBSTRBLOB *LPBSTRBLOB;
+#ifndef _tagBLOB_DEFINED
+#define _tagBLOB_DEFINED
+#define _BLOB_DEFINED
+#define _LPBLOB_DEFINED
+typedef struct tagBLOB {
+    ULONG cbSize;
+    BYTE *pBlobData;
+} BLOB;
+typedef struct tagBLOB *LPBLOB;
+#endif
+typedef struct tagCLIPDATA {
+    ULONG cbSize;
+    long ulClipFmt;
+    BYTE *pClipData;
+} CLIPDATA;
+#define CBPCLIPDATA(cb) ((cb).cbSize - sizeof((cb).ulClipFmt))
+typedef ULONG PROPID;
+typedef unsigned short VARTYPE;
+enum VARENUM {
+    VT_EMPTY = 0,
+    VT_NULL = 1,
+    VT_I2 = 2,
+    VT_I4 = 3,
+    VT_R4 = 4,
+    VT_R8 = 5,
+    VT_CY = 6,
+    VT_DATE = 7,
+    VT_BSTR = 8,
+    VT_DISPATCH = 9,
+    VT_ERROR = 10,
+    VT_BOOL = 11,
+    VT_VARIANT = 12,
+    VT_UNKNOWN = 13,
+    VT_DECIMAL = 14,
+    VT_I1 = 16,
+    VT_UI1 = 17,
+    VT_UI2 = 18,
+    VT_UI4 = 19,
+    VT_I8 = 20,
+    VT_UI8 = 21,
+    VT_INT = 22,
+    VT_UINT = 23,
+    VT_VOID = 24,
+    VT_HRESULT = 25,
+    VT_PTR = 26,
+    VT_SAFEARRAY = 27,
+    VT_CARRAY = 28,
+    VT_USERDEFINED = 29,
+    VT_LPSTR = 30,
+    VT_LPWSTR = 31,
+    VT_RECORD = 36,
+    VT_INT_PTR = 37,
+    VT_UINT_PTR = 38,
+    VT_FILETIME = 64,
+    VT_BLOB = 65,
+    VT_STREAM = 66,
+    VT_STORAGE = 67,
+    VT_STREAMED_OBJECT = 68,
+    VT_STORED_OBJECT = 69,
+    VT_BLOB_OBJECT = 70,
+    VT_CF = 71,
+    VT_CLSID = 72,
+    VT_VERSIONED_STREAM = 73,
+    VT_BSTR_BLOB = 0xfff,
+    VT_VECTOR = 0x1000,
+    VT_ARRAY = 0x2000,
+    VT_BYREF = 0x4000,
+    VT_RESERVED = 0x8000,
+    VT_ILLEGAL = 0xffff,
+    VT_ILLEGALMASKED = 0xfff,
+    VT_TYPEMASK = 0xfff
+};
+
+typedef struct tagCSPLATFORM {
+    DWORD dwPlatformId;
+    DWORD dwVersionHi;
+    DWORD dwVersionLo;
+    DWORD dwProcessorArch;
+} CSPLATFORM;
+typedef struct tagQUERYCONTEXT {
+    DWORD dwContext;
+    CSPLATFORM Platform;
+    LCID Locale;
+    DWORD dwVersionHi;
+    DWORD dwVersionLo;
+} QUERYCONTEXT;
+typedef enum tagTYSPEC {
+    TYSPEC_CLSID = 0,
+    TYSPEC_FILEEXT = 1,
+    TYSPEC_MIMETYPE = 2,
+    TYSPEC_PROGID = 3,
+    TYSPEC_FILENAME = 4,
+    TYSPEC_PACKAGENAME = 5,
+    TYSPEC_OBJECTID = 6
+} TYSPEC;
+typedef struct __WIDL_wtypes_generated_name_00000000 {
+    DWORD tyspec;
+    union {
+        CLSID clsid;
+        LPOLESTR pFileExt;
+        LPOLESTR pMimeType;
+        LPOLESTR pProgId;
+        LPOLESTR pFileName;
+        struct {
+            LPOLESTR pPackageName;
+            GUID PolicyId;
+        } ByName;
+        struct {
+            GUID ObjectId;
+            GUID PolicyId;
+        } ByObjectId;
+    } tagged_union;
+} uCLSSPEC;
+void * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free(void *);
+
+/*****************************************************************************
+ * IWinTypes interface (v0.1)
+ */
+#ifndef __IWinTypes_INTERFACE_DEFINED__
+#define __IWinTypes_INTERFACE_DEFINED__
+
+extern RPC_IF_HANDLE IWinTypes_v0_1_c_ifspec;
+extern RPC_IF_HANDLE IWinTypes_v0_1_s_ifspec;
+
+#endif  /* __IWinTypes_INTERFACE_DEFINED__ */
+
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WIDL_WTYPES_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wtypes.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wtypes.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/wtypes.idl	(revision 16410)
@@ -0,0 +1,829 @@
+/*
+ * Basic types used by COM interfaces
+ *
+ * Copyright 2002 Ove Kaaven
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "basetsd.h";
+import "guiddef.h";
+
+[
+  uuid(D3980A60-910C-1068-9341-00DD010F2F1C),
+  version(0.1),
+  pointer_default(unique)
+]
+
+interface IWinTypes
+{
+
+/******************** BASIC WIN32 TYPES ********************/
+cpp_quote("#if 0 /* winnt.h */") /* don't redefine these */
+
+typedef unsigned char BYTE;
+typedef unsigned short WORD;
+typedef unsigned long DWORD;
+typedef long BOOL;
+typedef unsigned char UCHAR;
+typedef int INT;
+typedef unsigned int UINT;
+typedef short SHORT;
+typedef unsigned short USHORT;
+typedef long LONG;
+typedef unsigned long ULONG;
+typedef float FLOAT;
+
+typedef void *PVOID, *LPVOID;
+
+typedef DWORD *LPDWORD;
+
+typedef char CHAR;
+typedef [string] CHAR *LPSTR;
+typedef [string] const CHAR *LPCSTR;
+
+typedef wchar_t WCHAR;
+typedef [string] WCHAR *LPWSTR;
+typedef [string] const WCHAR *LPCWSTR;
+
+typedef boolean BOOLEAN;
+
+typedef DWORD COLORREF;
+
+typedef void *HANDLE;
+#define DECLARE_HANDLE(name) typedef void *name
+#define DECLARE_WIREM_HANDLE(name) typedef [wire_marshal(wire##name)] void*name
+
+DECLARE_HANDLE(HMODULE);
+DECLARE_HANDLE(HINSTANCE);
+DECLARE_HANDLE(HRGN);
+DECLARE_HANDLE(HTASK);
+DECLARE_HANDLE(HKEY);
+DECLARE_HANDLE(HDESK);
+DECLARE_HANDLE(HMF);
+DECLARE_HANDLE(HEMF);
+DECLARE_HANDLE(HPEN);
+DECLARE_HANDLE(HRSRC);
+DECLARE_HANDLE(HSTR);
+DECLARE_HANDLE(HWINSTA);
+DECLARE_HANDLE(HKL);
+DECLARE_HANDLE(HGDIOBJ);
+
+typedef HANDLE HDWP;
+
+typedef LONG_PTR LRESULT;
+
+typedef LONG HRESULT;
+typedef DWORD LCID;
+
+typedef unsigned __int64 DWORDLONG;
+typedef __int64 LONGLONG;
+typedef unsigned __int64 ULONGLONG;
+
+typedef struct _LARGE_INTEGER {
+  LONGLONG QuadPart;
+} LARGE_INTEGER;
+
+typedef struct _ULARGE_INTEGER {
+  ULONGLONG QuadPart;
+} ULARGE_INTEGER;
+
+typedef struct _SID_IDENTIFIER_AUTHORITY {
+  UCHAR Value[6];
+} SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY;
+
+typedef struct _SID {
+  UCHAR Revision;
+  UCHAR SubAuthorityCount;
+  SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
+  [size_is(SubAuthorityCount)] ULONG SubAuthority[*];
+} SID, *PSID;
+
+typedef USHORT SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
+
+typedef struct _ACL {
+  UCHAR AclRevision;
+  UCHAR Sbz1;
+  USHORT AclSize;
+  USHORT AceCount;
+  USHORT Sbz2;
+} ACL;
+typedef ACL *PACL;
+
+typedef struct _SECURITY_DESCRIPTOR {
+  UCHAR Revision;
+  UCHAR Sbz1;
+  SECURITY_DESCRIPTOR_CONTROL Control;
+  PSID Owner;
+  PSID Group;
+  PACL Sacl;
+  PACL Dacl;
+} SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR;
+
+typedef struct _SECURITY_ATTRIBUTES
+{
+    DWORD nLength;
+    [size_is(nLength)] LPVOID lpSecurityDescriptor;
+    BOOL bInheritHandle;
+} SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
+
+typedef struct tagSIZE
+{
+    LONG cx;
+    LONG cy;
+} SIZE, *PSIZE, *LPSIZE;
+typedef SIZE SIZEL, *PSIZEL, *LPSIZEL;
+
+typedef struct tagPOINT
+{
+    LONG  x;
+    LONG  y;
+} POINT, *PPOINT, *LPPOINT;
+
+typedef struct _POINTL
+{
+    LONG x;
+    LONG y;
+} POINTL, *PPOINTL;
+
+typedef struct tagRECT
+{
+    LONG left;
+    LONG top;
+    LONG right;
+    LONG bottom;
+} RECT, *PRECT, *LPRECT;
+typedef const RECT *LPCRECT;
+
+typedef struct _RECTL
+{
+    LONG left;
+    LONG top;
+    LONG right;
+    LONG bottom;
+} RECTL, *PRECTL, *LPRECTL;
+typedef const RECTL *LPCRECTL;
+
+typedef UINT_PTR WPARAM;
+typedef LONG_PTR LPARAM;
+
+cpp_quote("#endif /* winnt.h */")
+
+cpp_quote("#ifdef _MSC_VER") /* for IDL and MSVC only */
+typedef double DOUBLE;
+cpp_quote("#else")
+cpp_quote("typedef double DECLSPEC_ALIGN(8) DOUBLE;")
+cpp_quote("#endif")
+
+cpp_quote("#ifndef _PALETTEENTRY_DEFINED")
+cpp_quote("#define _PALETTEENTRY_DEFINED")
+typedef struct tagPALETTEENTRY {
+  BYTE peRed;
+  BYTE peGreen;
+  BYTE peBlue;
+  BYTE peFlags;
+} PALETTEENTRY, *PPALETTEENTRY, *LPPALETTEENTRY;
+cpp_quote("#endif")
+
+cpp_quote("#ifndef _LOGPALETTE_DEFINED")
+cpp_quote("#define _LOGPALETTE_DEFINED")
+typedef struct tagLOGPALETTE
+{
+  WORD palVersion;
+  WORD palNumEntries;
+  [size_is(palNumEntries)] PALETTEENTRY palPalEntry[*];
+} LOGPALETTE, *PLOGPALETTE, *LPLOGPALETTE;
+cpp_quote("#endif")
+
+cpp_quote("#ifndef _SYSTEMTIME_")
+cpp_quote("#define _SYSTEMTIME_")
+typedef struct _SYSTEMTIME{
+        WORD wYear;
+        WORD wMonth;
+        WORD wDayOfWeek;
+        WORD wDay;
+        WORD wHour;
+        WORD wMinute;
+        WORD wSecond;
+        WORD wMilliseconds;
+} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
+cpp_quote("#endif")
+
+cpp_quote("#ifndef _FILETIME_")
+cpp_quote("#define _FILETIME_")
+typedef struct _FILETIME {
+  DWORD dwLowDateTime;
+  DWORD dwHighDateTime;
+} FILETIME, *PFILETIME, *LPFILETIME;
+cpp_quote("#endif")
+
+cpp_quote("#ifndef _TEXTMETRIC_DEFINED")
+cpp_quote("#define _TEXTMETRIC_DEFINED")
+typedef struct tagTEXTMETRICA
+{
+    LONG      tmHeight;
+    LONG      tmAscent;
+    LONG      tmDescent;
+    LONG      tmInternalLeading;
+    LONG      tmExternalLeading;
+    LONG      tmAveCharWidth;
+    LONG      tmMaxCharWidth;
+    LONG      tmWeight;
+    LONG      tmOverhang;
+    LONG      tmDigitizedAspectX;
+    LONG      tmDigitizedAspectY;
+    BYTE      tmFirstChar;
+    BYTE      tmLastChar;
+    BYTE      tmDefaultChar;
+    BYTE      tmBreakChar;
+    BYTE      tmItalic;
+    BYTE      tmUnderlined;
+    BYTE      tmStruckOut;
+    BYTE      tmPitchAndFamily;
+    BYTE      tmCharSet;
+} TEXTMETRICA, *LPTEXTMETRICA, *PTEXTMETRICA;
+
+typedef struct tagTEXTMETRICW
+{
+    LONG      tmHeight;
+    LONG      tmAscent;
+    LONG      tmDescent;
+    LONG      tmInternalLeading;
+    LONG      tmExternalLeading;
+    LONG      tmAveCharWidth;
+    LONG      tmMaxCharWidth;
+    LONG      tmWeight;
+    LONG      tmOverhang;
+    LONG      tmDigitizedAspectX;
+    LONG      tmDigitizedAspectY;
+    WCHAR     tmFirstChar;
+    WCHAR     tmLastChar;
+    WCHAR     tmDefaultChar;
+    WCHAR     tmBreakChar;
+    BYTE      tmItalic;
+    BYTE      tmUnderlined;
+    BYTE      tmStruckOut;
+    BYTE      tmPitchAndFamily;
+    BYTE      tmCharSet;
+} TEXTMETRICW, *LPTEXTMETRICW, *PTEXTMETRICW;
+cpp_quote("#endif")
+
+/******************** BASIC COM/OLE TYPES ********************/
+
+typedef WCHAR OLECHAR;
+typedef [string] OLECHAR *LPOLESTR;
+typedef [string] const OLECHAR *LPCOLESTR;
+cpp_quote("#ifndef __WINESRC__")
+cpp_quote("#define OLESTR(str) L##str")
+cpp_quote("#endif")
+
+typedef LONG SCODE;
+
+typedef struct _COAUTHIDENTITY {
+  [size_is(UserLength+1)] USHORT *User;
+  ULONG UserLength;
+  [size_is(DomainLength+1)] USHORT *Domain;
+  ULONG DomainLength;
+  [size_is(PasswordLength+1)] USHORT *Password;
+  ULONG PasswordLength;
+  ULONG Flags;
+} COAUTHIDENTITY;
+
+typedef struct _COAUTHINFO {
+  DWORD dwAuthnSvc;
+  DWORD dwAuthzSvc;
+  LPWSTR pwszServerPrincName;
+  DWORD dwAuthnLevel;
+  DWORD dwImpersonationLevel;
+  COAUTHIDENTITY *pAuthIdentityData;
+  DWORD dwCapabilities;
+} COAUTHINFO;
+
+typedef enum tagMEMCTX {
+  MEMCTX_TASK      = 1,
+  MEMCTX_SHARED    = 2,
+  MEMCTX_MACSYSTEM = 3,
+  MEMCTX_UNKNOWN   = -1,
+  MEMCTX_SAME      = -2
+} MEMCTX;
+
+cpp_quote("#ifndef _ROT_COMPARE_MAX_DEFINED")
+cpp_quote("#define _ROT_COMPARE_MAX_DEFINED")
+cpp_quote("#define ROT_COMPARE_MAX 2048")
+cpp_quote("#endif")
+
+cpp_quote("#ifndef _ROTFLAGS_DEFINED")
+cpp_quote("#define _ROTFLAGS_DEFINED")
+cpp_quote("#define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1")
+cpp_quote("#define ROTFLAGS_ALLOWANYCLIENT 0x2")
+cpp_quote("#endif")
+
+typedef enum tagCLSCTX {
+  CLSCTX_INPROC_SERVER        = 0x1,
+  CLSCTX_INPROC_HANDLER       = 0x2,
+  CLSCTX_LOCAL_SERVER         = 0x4,
+  CLSCTX_INPROC_SERVER16      = 0x8,
+  CLSCTX_REMOTE_SERVER        = 0x10,
+  CLSCTX_INPROC_HANDLER16     = 0x20,
+  CLSCTX_INPROC_SERVERX86     = 0x40,
+  CLSCTX_INPROC_HANDLERX86    = 0x80,
+  CLSCTX_ESERVER_HANDLER      = 0x100,
+  CLSCTX_NO_CODE_DOWNLOAD     = 0x400,
+  CLSCTX_NO_CUSTOM_MARSHAL    = 0x1000,
+  CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000,
+  CLSCTX_NO_FAILURE_LOG       = 0x4000,
+  CLSCTX_DISABLE_AAA          = 0x8000,
+  CLSCTX_ENABLE_AAA           = 0x10000,
+  CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000
+} CLSCTX;
+
+cpp_quote("#define CLSCTX_INPROC (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER)")
+cpp_quote("#define CLSCTX_ALL (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)")
+cpp_quote("#define CLSCTX_SERVER (CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)")
+
+typedef enum tagMSHLFLAGS {
+  MSHLFLAGS_NORMAL      = 0,
+  MSHLFLAGS_TABLESTRONG = 1,
+  MSHLFLAGS_TABLEWEAK   = 2,
+  MSHLFLAGS_NOPING      = 4
+} MSHLFLAGS;
+
+typedef enum tagMSHCTX {
+  MSHCTX_LOCAL            = 0,
+  MSHCTX_NOSHAREDMEM      = 1,
+  MSHCTX_DIFFERENTMACHINE = 2,
+  MSHCTX_INPROC           = 3,
+  MSHCTX_CROSSCTX         = 4
+} MSHCTX;
+
+/******************** BLOB TYPES ********************/
+
+typedef struct _BYTE_BLOB {
+  unsigned long clSize;
+  [size_is(clSize)] byte abData[];
+} BYTE_BLOB;
+typedef [unique] BYTE_BLOB *UP_BYTE_BLOB;
+
+typedef struct _FLAGGED_BYTE_BLOB {
+  unsigned long fFlags;
+  unsigned long clSize;
+  [size_is(clSize)] byte abData[];
+} FLAGGED_BYTE_BLOB;
+typedef [unique] FLAGGED_BYTE_BLOB *UP_FLAGGED_BYTE_BLOB;
+
+typedef struct _FLAGGED_WORD_BLOB {
+  unsigned long fFlags;
+  unsigned long clSize;
+  [size_is(clSize)] unsigned short asData[];
+} FLAGGED_WORD_BLOB;
+typedef [unique] FLAGGED_WORD_BLOB *UP_FLAGGED_WORD_BLOB;
+
+typedef struct _BYTE_SIZEDARR {
+  unsigned long clSize;
+  [size_is(clSize)] byte *pData;
+} BYTE_SIZEDARR;
+
+typedef struct _SHORT_SIZEDARR {
+  unsigned long clSize;
+  [size_is(clSize)] unsigned short *pData;
+} WORD_SIZEDARR;
+
+typedef struct _LONG_SIZEDARR {
+  unsigned long clSize;
+  [size_is(clSize)] unsigned long *pData;
+} DWORD_SIZEDARR;
+
+typedef struct _HYPER_SIZEDARR {
+  unsigned long clSize;
+  [size_is(clSize)] hyper *pData;
+} HYPER_SIZEDARR;
+
+/******************** GDI TYPES ********************/
+
+const unsigned long WDT_INPROC_CALL   = 0x48746457;
+const unsigned long WDT_REMOTE_CALL   = 0x52746457;
+const unsigned long WDT_INPROC64_CALL = 0x50746457;
+
+typedef union _userCLIPFORMAT switch(long fContext) u {
+  case WDT_INPROC_CALL: DWORD dwValue;
+  case WDT_REMOTE_CALL: LPWSTR pwszName;
+} userCLIPFORMAT;
+
+typedef [unique] userCLIPFORMAT *wireCLIPFORMAT;
+typedef [wire_marshal(wireCLIPFORMAT)] WORD CLIPFORMAT;
+
+typedef struct tagRemHGLOBAL {
+  long fNullHGlobal;
+  unsigned long cbData;
+  [size_is(cbData)] byte data[];
+} RemHGLOBAL;
+
+typedef union _userHGLOBAL switch(long fContext) u {
+  case WDT_INPROC_CALL: long               hInproc;
+  case WDT_REMOTE_CALL: FLAGGED_BYTE_BLOB *hRemote;
+  default:              long               hGlobal;
+} userHGLOBAL;
+
+typedef [unique] userHGLOBAL *wireHGLOBAL;
+
+typedef struct tagRemHMETAFILEPICT {
+  long mm;
+  long xExt;
+  long yExt;
+  unsigned long cbData;
+  [size_is(cbData)] byte data[];
+} RemHMETAFILEPICT;
+
+typedef union _userHMETAFILE switch(long fContext) u {
+  case WDT_INPROC_CALL: long       hInproc;
+  case WDT_REMOTE_CALL: BYTE_BLOB *hRemote;
+  default:              long       hGlobal;
+} userHMETAFILE;
+
+typedef [unique] userHMETAFILE *wireHMETAFILE;
+
+typedef struct _remoteMETAFILEPICT {
+  long mm;
+  long xExt;
+  long yExt;
+  userHMETAFILE *hMF;
+} remoteMETAFILEPICT;
+
+typedef union _userHMETAFILEPICT switch(long fContext) u {
+  case WDT_INPROC_CALL: long                hInproc;
+  case WDT_REMOTE_CALL: remoteMETAFILEPICT *hRemote;
+  default:              long                hGlobal;
+} userHMETAFILEPICT;
+
+typedef [unique] userHMETAFILEPICT *wireHMETAFILEPICT;
+
+typedef struct tagRemHENHMETAFILE {
+  unsigned long cbData;
+  [size_is(cbData)] byte data[];
+} RemHENHMETAFILE;
+
+typedef union _userHENHMETAFILE switch(long fContext) u {
+  case WDT_INPROC_CALL: long       hInproc;
+  case WDT_REMOTE_CALL: BYTE_BLOB *hRemote;
+  default:              long       hGlobal;
+} userHENHMETAFILE;
+
+typedef [unique] userHENHMETAFILE *wireHENHMETAFILE;
+
+typedef struct tagRemHBITMAP
+{
+  unsigned long cbData;
+  [size_is(cbData)] byte data[];
+} RemHBITMAP;
+
+typedef struct _userBITMAP {
+  LONG bmType;
+  LONG bmWidth;
+  LONG bmHeight;
+  LONG bmWidthBytes;
+  WORD bmPlanes;
+  WORD bmBitsPixel;
+  ULONG cbSize;
+  [size_is(cbSize)] byte pBuffer[];
+} userBITMAP;
+
+typedef union _userHBITMAP switch(long fContext) u {
+  case WDT_INPROC_CALL: long        hInproc;
+  case WDT_REMOTE_CALL: userBITMAP *hRemote;
+  default:              long        hGlobal;
+} userHBITMAP;
+
+typedef [unique] userHBITMAP *wireHBITMAP;
+
+typedef struct tagRemHPALETTE {
+  unsigned long cbData;
+  [size_is(cbData)] byte data[];
+} RemHPALETTE;
+
+typedef struct tagrpcLOGPALETTE {
+  WORD palVersion;
+  WORD palNumEntries;
+  [size_is(palNumEntries)] PALETTEENTRY palPalEntry[];
+} rpcLOGPALETTE;
+
+typedef union _userHPALETTE switch(long fContext) u {
+  case WDT_INPROC_CALL: long           hInproc;
+  case WDT_REMOTE_CALL: rpcLOGPALETTE *hRemote;
+  default:              long           hGlobal;
+} userHPALETTE;
+
+typedef [unique] userHPALETTE *wireHPALETTE;
+
+cpp_quote("#if 0")
+DECLARE_WIREM_HANDLE(HGLOBAL);
+typedef HGLOBAL HLOCAL;
+DECLARE_WIREM_HANDLE(HBITMAP);
+DECLARE_WIREM_HANDLE(HPALETTE);
+DECLARE_WIREM_HANDLE(HENHMETAFILE);
+DECLARE_WIREM_HANDLE(HMETAFILE);
+cpp_quote("#endif")
+DECLARE_WIREM_HANDLE(HMETAFILEPICT);
+
+typedef union _RemotableHandle switch (long fContext) u
+{
+    case WDT_INPROC_CALL: long hInproc;
+    case WDT_REMOTE_CALL: long hRemote;
+} RemotableHandle;
+
+typedef [unique] RemotableHandle *wireHACCEL;
+typedef [unique] RemotableHandle *wireHBRUSH;
+typedef [unique] RemotableHandle *wireHDC;
+typedef [unique] RemotableHandle *wireHFONT;
+typedef [unique] RemotableHandle *wireHICON;
+typedef [unique] RemotableHandle *wireHMENU;
+typedef [unique] RemotableHandle *wireHWND;
+
+cpp_quote("#if 0") /* for IDL only (C/C++ defs are in windef.h) */
+DECLARE_WIREM_HANDLE(HACCEL);
+DECLARE_WIREM_HANDLE(HBRUSH);
+DECLARE_WIREM_HANDLE(HDC);
+DECLARE_WIREM_HANDLE(HFONT);
+DECLARE_WIREM_HANDLE(HICON);
+DECLARE_WIREM_HANDLE(HMENU);
+DECLARE_WIREM_HANDLE(HWND);
+
+typedef HICON HCURSOR;
+
+typedef struct tagMSG
+{
+    HWND   hwnd;
+    UINT   message;
+    WPARAM wParam;
+    LPARAM lParam;
+    DWORD  time;
+    POINT  pt;
+} MSG, *PMSG, *NPMSG, *LPMSG;
+
+cpp_quote("#endif")
+
+/******************** GUID TYPES ********************/
+
+cpp_quote("#if 0") /* for IDL only (C/C++ defs are in guiddef.h) */
+typedef GUID *REFGUID;
+typedef IID *REFIID;
+typedef CLSID *REFCLSID;
+typedef FMTID *REFFMTID;
+cpp_quote("#endif")
+
+/******************** MISC TYPES ********************/
+
+typedef enum tagDVASPECT {
+  DVASPECT_CONTENT   = 1,
+  DVASPECT_THUMBNAIL = 2,
+  DVASPECT_ICON      = 4,
+  DVASPECT_DOCPRINT  = 8
+} DVASPECT;
+
+typedef enum tagSTGC {
+  STGC_DEFAULT       = 0,
+  STGC_OVERWRITE     = 1,
+  STGC_ONLYIFCURRENT = 2,
+  STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4,
+  STGC_CONSOLIDATE   = 8
+} STGC;
+
+typedef enum tagSTGMOVE {
+  STGMOVE_MOVE        = 0,
+  STGMOVE_COPY        = 1,
+  STGMOVE_SHALLOWCOPY = 2
+} STGMOVE;
+
+typedef enum tagSTATFLAG {
+  STATFLAG_DEFAULT = 0,
+  STATFLAG_NONAME  = 1,
+  STATFLAG_NOOPEN  = 2
+} STATFLAG;
+
+/******************** OLE Automation ********************/
+
+cpp_quote("#ifdef _MSC_VER") /* for IDL and MSVC only */
+typedef double DATE;
+cpp_quote("#else")
+cpp_quote("typedef double DECLSPEC_ALIGN(8) DATE;")
+cpp_quote("#endif")
+
+cpp_quote("#if 0") /* for IDL only */
+typedef struct tagCY {
+  LONGLONG int64;
+} CY;
+cpp_quote("#else") /* C/C++ defs */
+cpp_quote("#ifndef _tagCY_DEFINED")
+cpp_quote("#define _tagCY_DEFINED")
+cpp_quote("typedef union tagCY {")
+cpp_quote("    struct {")
+cpp_quote("#ifdef WORDS_BIGENDIAN")
+cpp_quote("        LONG  Hi;")
+cpp_quote("        ULONG Lo;")
+cpp_quote("#else")
+cpp_quote("        ULONG Lo;")
+cpp_quote("        LONG  Hi;")
+cpp_quote("#endif")
+cpp_quote("    } DUMMYSTRUCTNAME;")
+cpp_quote("    LONGLONG int64;")
+cpp_quote("} CY;")
+cpp_quote("#endif")
+cpp_quote("#endif")
+
+typedef CY *LPCY;
+
+cpp_quote("#if 0") /* for IDL only */
+typedef struct tagDEC {
+  USHORT wReserved;
+  BYTE scale;
+  BYTE sign;
+  ULONG Hi32;
+  ULONGLONG Lo64;
+} DECIMAL;
+cpp_quote("#else") /* C/C++ defs */
+cpp_quote("typedef struct tagDEC {")
+cpp_quote("  USHORT wReserved;")
+cpp_quote("  union {")
+cpp_quote("    struct {")
+cpp_quote("      BYTE scale;")
+cpp_quote("      BYTE sign;")
+cpp_quote("    } DUMMYSTRUCTNAME;")
+cpp_quote("    USHORT signscale;")
+cpp_quote("  } DUMMYUNIONNAME;")
+cpp_quote("  ULONG Hi32;")
+cpp_quote("  union {")
+cpp_quote("    struct {")
+cpp_quote("#ifdef WORDS_BIGENDIAN")
+cpp_quote("      ULONG Mid32;")
+cpp_quote("      ULONG Lo32;")
+cpp_quote("#else")
+cpp_quote("      ULONG Lo32;")
+cpp_quote("      ULONG Mid32;")
+cpp_quote("#endif")
+cpp_quote("    } DUMMYSTRUCTNAME1;")
+cpp_quote("    ULONGLONG Lo64;")
+cpp_quote("  } DUMMYUNIONNAME1;")
+cpp_quote("} DECIMAL;")
+cpp_quote("#endif")
+cpp_quote("#define DECIMAL_NEG ((BYTE)0x80)")
+cpp_quote("#define DECIMAL_SETZERO(d) do{ memset(((char*)&(d)) + sizeof(USHORT), 0, sizeof(ULONG) * 3u + sizeof(USHORT)); }while (0)")
+
+typedef DECIMAL *LPDECIMAL;
+
+typedef [unique] FLAGGED_WORD_BLOB *wireBSTR;
+typedef [wire_marshal(wireBSTR)] OLECHAR *BSTR;
+typedef BSTR *LPBSTR;
+
+typedef short VARIANT_BOOL;
+typedef VARIANT_BOOL _VARIANT_BOOL;
+cpp_quote("#define VARIANT_TRUE  ((VARIANT_BOOL)0xFFFF)")
+cpp_quote("#define VARIANT_FALSE ((VARIANT_BOOL)0x0000)")
+
+typedef struct tagBSTRBLOB {
+  ULONG cbSize;
+  [size_is(cbSize)] BYTE *pData;
+} BSTRBLOB, *LPBSTRBLOB;
+
+cpp_quote("#ifndef _tagBLOB_DEFINED")
+cpp_quote("#define _tagBLOB_DEFINED")
+cpp_quote("#define _BLOB_DEFINED")
+cpp_quote("#define _LPBLOB_DEFINED")
+typedef struct tagBLOB {
+  ULONG cbSize;
+  [size_is(cbSize)] BYTE *pBlobData;
+} BLOB, *LPBLOB;
+cpp_quote("#endif")
+
+typedef struct tagCLIPDATA {
+  ULONG cbSize;
+  long ulClipFmt;
+  [size_is(cbSize-sizeof(long))] BYTE *pClipData;
+} CLIPDATA;
+cpp_quote("#define CBPCLIPDATA(cb) ((cb).cbSize - sizeof((cb).ulClipFmt))")
+
+typedef ULONG PROPID;
+
+/******************** VARTYPE ********************/
+
+typedef unsigned short VARTYPE;
+enum VARENUM {
+  VT_EMPTY           = 0,
+  VT_NULL            = 1,
+  VT_I2              = 2,
+  VT_I4              = 3,
+  VT_R4              = 4,
+  VT_R8              = 5,
+  VT_CY              = 6,
+  VT_DATE            = 7,
+  VT_BSTR            = 8,
+  VT_DISPATCH        = 9,
+  VT_ERROR           = 10,
+  VT_BOOL            = 11,
+  VT_VARIANT         = 12,
+  VT_UNKNOWN         = 13,
+  VT_DECIMAL         = 14,
+  VT_I1              = 16,
+  VT_UI1             = 17,
+  VT_UI2             = 18,
+  VT_UI4             = 19,
+  VT_I8              = 20,
+  VT_UI8             = 21,
+  VT_INT             = 22,
+  VT_UINT            = 23,
+  VT_VOID            = 24,
+  VT_HRESULT         = 25,
+  VT_PTR             = 26,
+  VT_SAFEARRAY       = 27,
+  VT_CARRAY          = 28,
+  VT_USERDEFINED     = 29,
+  VT_LPSTR           = 30,
+  VT_LPWSTR          = 31,
+  VT_RECORD          = 36,
+  VT_INT_PTR         = 37,
+  VT_UINT_PTR        = 38,
+  VT_FILETIME        = 64,
+  VT_BLOB            = 65,
+  VT_STREAM          = 66,
+  VT_STORAGE         = 67,
+  VT_STREAMED_OBJECT = 68,
+  VT_STORED_OBJECT   = 69,
+  VT_BLOB_OBJECT     = 70,
+  VT_CF              = 71,
+  VT_CLSID           = 72,
+  VT_VERSIONED_STREAM= 73,
+  VT_BSTR_BLOB       = 0x0fff,
+  VT_VECTOR          = 0x1000,
+  VT_ARRAY           = 0x2000,
+  VT_BYREF           = 0x4000,
+  VT_RESERVED        = 0x8000,
+  VT_ILLEGAL         = 0xffff,
+  VT_ILLEGALMASKED   = 0x0fff,
+  VT_TYPEMASK        = 0x0fff
+};
+
+typedef struct tagCSPLATFORM
+{
+    DWORD dwPlatformId;
+    DWORD dwVersionHi;
+    DWORD dwVersionLo;
+    DWORD dwProcessorArch;
+} CSPLATFORM;
+
+typedef struct tagQUERYCONTEXT
+{
+    DWORD dwContext;
+    CSPLATFORM Platform;
+    LCID Locale;
+    DWORD dwVersionHi;
+    DWORD dwVersionLo;
+} QUERYCONTEXT;
+
+typedef [v1_enum] enum tagTYSPEC 
+{
+    TYSPEC_CLSID,
+    TYSPEC_FILEEXT,
+    TYSPEC_MIMETYPE,
+    TYSPEC_PROGID,
+    TYSPEC_FILENAME,
+    TYSPEC_PACKAGENAME,
+    TYSPEC_OBJECTID
+} TYSPEC;
+
+typedef union switch(DWORD tyspec)
+{
+    case TYSPEC_CLSID:
+        CLSID clsid;
+    case TYSPEC_FILEEXT:
+        LPOLESTR pFileExt;
+    case TYSPEC_MIMETYPE:
+        LPOLESTR pMimeType;
+    case TYSPEC_PROGID:
+        LPOLESTR pProgId;
+    case TYSPEC_FILENAME:
+        LPOLESTR pFileName;
+    case TYSPEC_PACKAGENAME:
+        struct
+        {
+            LPOLESTR pPackageName;
+            GUID PolicyId;
+        } ByName;
+    case TYSPEC_OBJECTID:
+        struct
+        {
+            GUID ObjectId;
+            GUID PolicyId;
+        } ByObjectId;
+} uCLSSPEC;
+
+} /* interface IWinTypes */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/xcmc.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/xcmc.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/xcmc.h	(revision 16410)
@@ -0,0 +1,350 @@
+/*
+ * Copyright (C) 2004 Chris Morgan
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _XCMC_H
+#define _XCMC_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef char                CMC_sint8;
+typedef short               CMC_sint16;
+typedef long int            CMC_sint32;
+typedef unsigned short int  CMC_uint16;
+typedef unsigned long int   CMC_uint32;
+typedef void*               CMC_buffer;
+typedef char*               CMC_string;
+
+typedef CMC_uint16          CMC_boolean;
+typedef CMC_sint32          CMC_enum;
+typedef CMC_uint32          CMC_return_code;
+typedef CMC_uint32          CMC_flags;
+typedef CMC_string          CMC_object_identifier;
+typedef CMC_uint32          CMC_session_id;
+typedef CMC_uint32          CMC_ui_id;
+
+#define CMC_FALSE   ((CMC_boolean)0)
+#define CMC_TRUE    ((CMC_boolean)1)
+
+#define CMC_SUCCESS                         ((CMC_return_code) 0)
+
+#define CMC_E_AMBIGUOUS_RECIPIENT           ((CMC_return_code) 1)
+#define CMC_E_ATTACHMENT_NOT_FOUND          ((CMC_return_code) 2)
+#define CMC_E_ATTACHMENT_OPEN_FAILURE       ((CMC_return_code) 3)
+#define CMC_E_ATTACHMENT_READ_FAILURE       ((CMC_return_code) 4)
+#define CMC_E_ATTACHMENT_WRITE_FAILURE      ((CMC_return_code) 5)
+#define CMC_E_COUNTED_STRING_UNSUPPORTED    ((CMC_return_code) 6)
+#define CMC_E_DISK_FULL                     ((CMC_return_code) 7)
+#define CMC_E_FAILURE                       ((CMC_return_code) 8)
+#define CMC_E_INSUFFICIENT_MEMORY           ((CMC_return_code) 9)
+#define CMC_E_INVALID_CONFIGURATION         ((CMC_return_code) 10)
+#define CMC_E_INVALID_ENUM                  ((CMC_return_code) 11)
+#define CMC_E_INVALID_FLAG                  ((CMC_return_code) 12)
+#define CMC_E_INVALID_MEMORY                ((CMC_return_code) 13)
+#define CMC_E_INVALID_MESSAGE_PARAMETER     ((CMC_return_code) 14)
+#define CMC_E_INVALID_MESSAGE_REFERENCE     ((CMC_return_code) 15)
+#define CMC_E_INVALID_PARAMETER             ((CMC_return_code) 16)
+#define CMC_E_INVALID_SESSION_ID            ((CMC_return_code) 17)
+#define CMC_E_INVALID_UI_ID                 ((CMC_return_code) 18)
+#define CMC_E_LOGON_FAILURE                 ((CMC_return_code) 19)
+#define CMC_E_MESSAGE_IN_USE                ((CMC_return_code) 20)
+#define CMC_E_NOT_SUPPORTED                 ((CMC_return_code) 21)
+#define CMC_E_PASSWORD_REQUIRED             ((CMC_return_code) 22)
+#define CMC_E_RECIPIENT_NOT_FOUND           ((CMC_return_code) 23)
+#define CMC_E_SERVICE_UNAVAILABLE           ((CMC_return_code) 24)
+#define CMC_E_TEXT_TOO_LARGE                ((CMC_return_code) 25)
+#define CMC_E_TOO_MANY_FILES                ((CMC_return_code) 26)
+#define CMC_E_TOO_MANY_RECIPIENTS           ((CMC_return_code) 27)
+#define CMC_E_UNABLE_TO_NOT_MARK_AS_READ    ((CMC_return_code) 28)
+#define CMC_E_UNRECOGNIZED_MESSAGE_TYPE     ((CMC_return_code) 29)
+#define CMC_E_UNSUPPORTED_ACTION            ((CMC_return_code) 30)
+#define CMC_E_UNSUPPORTED_CHARACTER_SET     ((CMC_return_code) 31)
+#define CMC_E_UNSUPPORTED_DATA_EXT          ((CMC_return_code) 32)
+#define CMC_E_UNSUPPORTED_FLAG              ((CMC_return_code) 33)
+#define CMC_E_UNSUPPORTED_FUNCTION_EXT      ((CMC_return_code) 34)
+#define CMC_E_UNSUPPORTED_VERSION           ((CMC_return_code) 35)
+#define CMC_E_USER_CANCEL                   ((CMC_return_code) 36)
+#define CMC_E_USER_NOT_LOGGED_ON            ((CMC_return_code) 37)
+
+#define CMC_ERROR_DISPLAYED                 ((CMC_return_code) 0x00008000)
+#define CMC_ERROR_RSV_MASK                  ((CMC_return_code) 0x0000FFFF)
+#define CMC_ERROR_IMPL_MASK                 ((CMC_return_code) 0xFFFF0000)
+
+typedef struct {
+    CMC_uint32          length;
+    char                string[1];
+} CMC_counted_string;
+
+typedef CMC_counted_string CMC_message_reference;
+
+typedef struct {
+    CMC_sint8  second;
+    CMC_sint8  minute;
+    CMC_sint8  hour;
+    CMC_sint8  day;
+    CMC_sint8  month;
+    CMC_sint8  year;
+    CMC_sint8  isdst;
+    CMC_sint8  unused1;
+    CMC_sint16 tmzone;
+    CMC_sint16 unused2;
+} CMC_time;
+
+#define CMC_NO_TIMEZONE ((CMC_sint16) 0x8000)
+
+
+typedef struct {
+    CMC_uint32 item_code;
+    CMC_uint32 item_data;
+    CMC_buffer item_reference;
+    CMC_flags  extension_flags;
+} CMC_extension;
+
+#define CMC_EXT_REQUIRED                    ((CMC_flags) 0x00010000)
+#define CMC_EXT_OUTPUT                      ((CMC_flags) 0x00020000)
+#define CMC_EXT_LAST_ELEMENT                ((CMC_flags) 0x80000000)
+#define CMC_EXT_RSV_FLAG_MASK               ((CMC_flags) 0xFFFF0000)
+#define CMC_EXT_ITEM_FLAG_MASK              ((CMC_flags) 0x0000FFFF)
+
+
+typedef struct CMC_attachment_s {
+    CMC_string              attach_title;
+    CMC_object_identifier   attach_type;
+    CMC_string              attach_filename;
+    CMC_flags               attach_flags;
+    CMC_extension          *attach_extensions;
+} CMC_attachment;
+
+#define CMC_ATT_APP_OWNS_FILE  ((CMC_flags) 1)
+#define CMC_ATT_LAST_ELEMENT   ((CMC_flags) 0x80000000)
+
+#define CMC_ATT_OID_BINARY      "? ? ? ? ? ?"
+#define CMC_ATT_OID_TEXT        "? ? ? ? ? ?"
+
+
+typedef struct {
+    CMC_string              name;
+    CMC_enum                name_type;
+    CMC_string              address;
+    CMC_enum                role;
+    CMC_flags               recip_flags;
+    CMC_extension          *recip_extensions;
+} CMC_recipient;
+
+#define CMC_TYPE_UNKNOWN                    ((CMC_enum) 0)
+#define CMC_TYPE_INDIVIDUAL                 ((CMC_enum) 1)
+#define CMC_TYPE_GROUP                      ((CMC_enum) 2)
+
+#define CMC_ROLE_TO                         ((CMC_enum) 0)
+#define CMC_ROLE_CC                         ((CMC_enum) 1)
+#define CMC_ROLE_BCC                        ((CMC_enum) 2)
+#define CMC_ROLE_ORIGINATOR                 ((CMC_enum) 3)
+#define CMC_ROLE_AUTHORIZING_USER           ((CMC_enum) 4)
+
+#define CMC_RECIP_IGNORE                    ((CMC_flags) 1)
+#define CMC_RECIP_LIST_TRUNCATED            ((CMC_flags) 2)
+#define CMC_RECIP_LAST_ELEMENT              ((CMC_flags) 0x80000000)
+
+
+typedef struct {
+    CMC_message_reference  *message_reference;
+    CMC_string              message_type;
+    CMC_string              subject;
+    CMC_time                time_sent;
+    CMC_string              text_note;
+    CMC_recipient          *recipients;
+    CMC_attachment         *attachments;
+    CMC_flags               message_flags;
+    CMC_extension          *message_extensions;
+} CMC_message;
+
+#define CMC_MSG_READ                        ((CMC_flags) 1)
+#define CMC_MSG_TEXT_NOTE_AS_FILE           ((CMC_flags) 2)
+#define CMC_MSG_UNSENT                      ((CMC_flags) 4)
+#define CMC_MSG_LAST_ELEMENT                ((CMC_flags) 0x80000000)
+
+
+typedef struct {
+    CMC_message_reference  *message_reference;
+    CMC_string              message_type;
+    CMC_string              subject;
+    CMC_time                time_sent;
+    CMC_uint32              byte_length;
+    CMC_recipient          *originator;
+    CMC_flags               summary_flags;
+    CMC_extension          *message_summary_extensions;
+} CMC_message_summary;
+
+#define CMC_SUM_READ                        ((CMC_flags) 1)
+#define CMC_SUM_UNSENT                      ((CMC_flags) 2)
+#define CMC_SUM_LAST_ELEMENT                ((CMC_flags) 0x80000000)
+
+#define CMC_ERROR_UI_ALLOWED                ((CMC_flags) 0x01000000)
+#define CMC_LOGON_UI_ALLOWED                ((CMC_flags) 0x02000000)
+#define CMC_COUNTED_STRING_TYPE             ((CMC_flags) 0x04000000)
+
+CMC_return_code WINAPI cmc_send(
+    CMC_session_id          session,
+    CMC_message            *message,
+    CMC_flags               send_flags,
+    CMC_ui_id               ui_id,
+    CMC_extension          *send_extensions
+);
+
+#define CMC_SEND_UI_REQUESTED               ((CMC_flags) 1)
+
+
+CMC_return_code WINAPI cmc_send_documents(
+    CMC_string              recipient_addresses,
+    CMC_string              subject,
+    CMC_string              text_note,
+    CMC_flags               send_doc_flags,
+    CMC_string              file_paths,
+    CMC_string              file_names,
+    CMC_string              delimiter,
+    CMC_ui_id               ui_id
+);
+
+#define CMC_FIRST_ATTACH_AS_TEXT_NOTE       ((CMC_flags) 2)
+
+
+CMC_return_code WINAPI cmc_act_on(
+    CMC_session_id          session,
+    CMC_message_reference  *message_reference,
+    CMC_enum                operation,
+    CMC_flags               act_on_flags,
+    CMC_ui_id               ui_id,
+    CMC_extension          *act_on_extensions
+);
+
+#define CMC_ACT_ON_EXTENDED                 ((CMC_enum) 0)
+#define CMC_ACT_ON_DELETE                   ((CMC_enum) 1)
+
+
+CMC_return_code WINAPI cmc_list(
+    CMC_session_id          session,
+    CMC_string              message_type,
+    CMC_flags               list_flags,
+    CMC_message_reference  *seed,
+    CMC_uint32             *count,
+    CMC_ui_id               ui_id,
+    CMC_message_summary   **result,
+    CMC_extension          *list_extensions
+);
+
+#define CMC_LIST_UNREAD_ONLY                ((CMC_flags) 1)
+#define CMC_LIST_MSG_REFS_ONLY              ((CMC_flags) 2)
+#define CMC_LIST_COUNT_ONLY                 ((CMC_flags) 4)
+
+#define CMC_LENGTH_UNKNOWN          0xFFFFFFFF
+
+
+CMC_return_code WINAPI cmc_read(
+    CMC_session_id          session,
+    CMC_message_reference  *message_reference,
+    CMC_flags               read_flags,
+    CMC_message           **message,
+    CMC_ui_id               ui_id,
+    CMC_extension          *read_extensions
+);
+
+#define CMC_DO_NOT_MARK_AS_READ             ((CMC_flags) 1)
+#define CMC_MSG_AND_ATT_HDRS_ONLY           ((CMC_flags) 2)
+#define CMC_READ_FIRST_UNREAD_MESSAGE       ((CMC_flags) 4)
+
+
+CMC_return_code WINAPI cmc_look_up(
+    CMC_session_id          session,
+    CMC_recipient          *recipient_in,
+    CMC_flags               look_up_flags,
+    CMC_ui_id               ui_id,
+    CMC_uint32             *count,
+    CMC_recipient         **recipient_out,
+    CMC_extension          *look_up_extensions
+);
+
+#define CMC_LOOKUP_RESOLVE_PREFIX_SEARCH    ((CMC_flags) 1)
+#define CMC_LOOKUP_RESOLVE_IDENTITY         ((CMC_flags) 2)
+#define CMC_LOOKUP_RESOLVE_UI               ((CMC_flags) 4)
+#define CMC_LOOKUP_DETAILS_UI               ((CMC_flags) 8)
+#define CMC_LOOKUP_ADDRESSING_UI            ((CMC_flags) 16)
+
+
+CMC_return_code WINAPI cmc_free( CMC_buffer memory );
+
+CMC_return_code WINAPI cmc_logoff(
+    CMC_session_id          session,
+    CMC_ui_id               ui_id,
+    CMC_flags               logoff_flags,
+    CMC_extension          *logoff_extensions
+);
+
+CMC_return_code WINAPI cmc_logon(
+    CMC_string              service,
+    CMC_string              user,
+    CMC_string              password,
+    CMC_object_identifier   character_set,
+    CMC_ui_id               ui_id,
+    CMC_uint16              caller_cmc_version,
+    CMC_flags               logon_flags,
+    CMC_session_id         *session,
+    CMC_extension          *logon_extensions
+);
+
+#define CMC_VERSION         ((CMC_uint16) 100)
+
+CMC_return_code WINAPI cmc_query_configuration(
+    CMC_session_id          session,
+    CMC_enum                item,
+    CMC_buffer              reference,
+    CMC_extension          *config_extensions
+);
+
+#define CMC_CONFIG_CHARACTER_SET            ((CMC_enum) 1)
+#define CMC_CONFIG_LINE_TERM                ((CMC_enum) 2)
+#define CMC_CONFIG_DEFAULT_SERVICE          ((CMC_enum) 3)
+#define CMC_CONFIG_DEFAULT_USER             ((CMC_enum) 4)
+#define CMC_CONFIG_REQ_PASSWORD             ((CMC_enum) 5)
+#define CMC_CONFIG_REQ_SERVICE              ((CMC_enum) 6)
+#define CMC_CONFIG_REQ_USER                 ((CMC_enum) 7)
+#define CMC_CONFIG_UI_AVAIL                 ((CMC_enum) 8)
+#define CMC_CONFIG_SUP_NOMKMSGREAD          ((CMC_enum) 9)
+#define CMC_CONFIG_SUP_COUNTED_STR          ((CMC_enum) 10)
+#define CMC_CONFIG_VER_IMPLEM               ((CMC_enum) 11)
+#define CMC_CONFIG_VER_SPEC                 ((CMC_enum) 12)
+
+#define CMC_LINE_TERM_CRLF                  ((CMC_enum) 0)
+#define CMC_LINE_TERM_CR                    ((CMC_enum) 1)
+#define CMC_LINE_TERM_LF                    ((CMC_enum) 2)
+
+#define CMC_REQUIRED_NO                     ((CMC_enum) 0)
+#define CMC_REQUIRED_YES                    ((CMC_enum) 1)
+#define CMC_REQUIRED_OPT                    ((CMC_enum) 2)
+
+#define CMC_CHAR_CP437                      "1 2 840 113556 3 2 437"
+#define CMC_CHAR_CP850                      "1 2 840 113556 3 2 85"
+#define CMC_CHAR_CP1252                     "1 2 840 113556 3 2 1252"
+#define CMC_CHAR_ISTRING                    "1 2 840 113556 3 2 0"
+#define CMC_CHAR_UNICODE                    "1 2 840 113556 3 2 1"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* #ifndef _XCMC_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/xinput.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/xinput.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/xinput.h	(revision 16410)
@@ -0,0 +1,205 @@
+/*
+ * The Wine project - Xinput Joystick Library
+ * Copyright 2008 Andrew Fenn
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_XINPUT_H
+#define __WINE_XINPUT_H
+
+#include <windef.h>
+
+/*
+ * Bitmasks for the joysticks buttons, determines what has
+ * been pressed on the joystick, these need to be mapped
+ * to whatever device you're using instead of an xbox 360
+ * joystick
+ */
+
+#define XINPUT_GAMEPAD_DPAD_UP          0x0001
+#define XINPUT_GAMEPAD_DPAD_DOWN        0x0002
+#define XINPUT_GAMEPAD_DPAD_LEFT        0x0004
+#define XINPUT_GAMEPAD_DPAD_RIGHT       0x0008
+#define XINPUT_GAMEPAD_START            0x0010
+#define XINPUT_GAMEPAD_BACK             0x0020
+#define XINPUT_GAMEPAD_LEFT_THUMB       0x0040
+#define XINPUT_GAMEPAD_RIGHT_THUMB      0x0080
+#define XINPUT_GAMEPAD_LEFT_SHOULDER    0x0100
+#define XINPUT_GAMEPAD_RIGHT_SHOULDER   0x0200
+#define XINPUT_GAMEPAD_A                0x1000
+#define XINPUT_GAMEPAD_B                0x2000
+#define XINPUT_GAMEPAD_X                0x4000
+#define XINPUT_GAMEPAD_Y                0x8000
+
+/*
+ * Defines the flags used to determine if the user is pushing
+ * down on a button, not holding a button, etc
+ */
+
+#define XINPUT_KEYSTROKE_KEYDOWN        0x0001
+#define XINPUT_KEYSTROKE_KEYUP          0x0002
+#define XINPUT_KEYSTROKE_REPEAT         0x0004
+
+/*
+ * Defines the codes which are returned by XInputGetKeystroke
+ */
+
+#define VK_PAD_A                        0x5800
+#define VK_PAD_B                        0x5801
+#define VK_PAD_X                        0x5802
+#define VK_PAD_Y                        0x5803
+#define VK_PAD_RSHOULDER                0x5804
+#define VK_PAD_LSHOULDER                0x5805
+#define VK_PAD_LTRIGGER                 0x5806
+#define VK_PAD_RTRIGGER                 0x5807
+#define VK_PAD_DPAD_UP                  0x5810
+#define VK_PAD_DPAD_DOWN                0x5811
+#define VK_PAD_DPAD_LEFT                0x5812
+#define VK_PAD_DPAD_RIGHT               0x5813
+#define VK_PAD_START                    0x5814
+#define VK_PAD_BACK                     0x5815
+#define VK_PAD_LTHUMB_PRESS             0x5816
+#define VK_PAD_RTHUMB_PRESS             0x5817
+#define VK_PAD_LTHUMB_UP                0x5820
+#define VK_PAD_LTHUMB_DOWN              0x5821
+#define VK_PAD_LTHUMB_RIGHT             0x5822
+#define VK_PAD_LTHUMB_LEFT              0x5823
+#define VK_PAD_LTHUMB_UPLEFT            0x5824
+#define VK_PAD_LTHUMB_UPRIGHT           0x5825
+#define VK_PAD_LTHUMB_DOWNRIGHT         0x5826
+#define VK_PAD_LTHUMB_DOWNLEFT          0x5827
+#define VK_PAD_RTHUMB_UP                0x5830
+#define VK_PAD_RTHUMB_DOWN              0x5831
+#define VK_PAD_RTHUMB_RIGHT             0x5832
+#define VK_PAD_RTHUMB_LEFT              0x5833
+#define VK_PAD_RTHUMB_UPLEFT            0x5834
+#define VK_PAD_RTHUMB_UPRIGHT           0x5835
+#define VK_PAD_RTHUMB_DOWNRIGHT         0x5836
+#define VK_PAD_RTHUMB_DOWNLEFT          0x5837
+
+/*
+ * Deadzones are for analogue joystick controls on the joypad
+ * which determine when input should be assumed to be in the
+ * middle of the pad. This is a threshold to stop a joypad
+ * controlling the game when the player isn't touching the
+ * controls.
+ */
+
+#define XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE  7849
+#define XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE 8689
+#define XINPUT_GAMEPAD_TRIGGER_THRESHOLD    30
+
+
+/*
+ * Defines what type of abilities the type of joystick has
+ * DEVTYPE_GAMEPAD is avaliable for all joysticks, however
+ * there may be more specfic identifiers for other joysticks
+ * which are being used.
+ */
+
+#define XINPUT_DEVTYPE_GAMEPAD          0x01
+#define XINPUT_DEVSUBTYPE_GAMEPAD       0x01
+#define XINPUT_DEVSUBTYPE_WHEEL         0x02
+#define XINPUT_DEVSUBTYPE_ARCADE_STICK  0x03
+#define XINPUT_DEVSUBTYPE_FLIGHT_SICK   0x04
+#define XINPUT_DEVSUBTYPE_DANCE_PAD     0x05
+#define XINPUT_DEVSUBTYPE_GUITAR        0x06
+#define XINPUT_DEVSUBTYPE_DRUM_KIT      0x08
+
+/*
+ * These are used with the XInputGetCapabilities function to
+ * determine the abilities to the joystick which has been
+ * plugged in.
+ */
+
+#define XINPUT_CAPS_VOICE_SUPPORTED     0x0004
+#define XINPUT_FLAG_GAMEPAD             0x00000001
+
+/*
+ * Defines the status of the battery if one is used in the
+ * attached joystick. The first two define if the joystick
+ * supports a battery. Disconnected means that the joystick
+ * isn't connected. Wired shows that the joystick is a wired
+ * joystick.
+ */
+
+#define BATTERY_DEVTYPE_GAMEPAD         0x00
+#define BATTERY_DEVTYPE_HEADSET         0x01
+#define BATTERY_TYPE_DISCONNECTED       0x00
+#define BATTERY_TYPE_WIRED              0x01
+#define BATTERY_TYPE_ALKALINE           0x02
+#define BATTERY_TYPE_NIMH               0x03
+#define BATTERY_TYPE_UNKNOWN            0xFF
+#define BATTERY_LEVEL_EMPTY             0x00
+#define BATTERY_LEVEL_LOW               0x01
+#define BATTERY_LEVEL_MEDIUM            0x02
+#define BATTERY_LEVEL_FULL              0x03
+
+/*
+ * How many joysticks can be used with this library. Games that
+ * use the xinput library will not go over this number.
+ */
+
+#define XUSER_MAX_COUNT                 4
+#define XUSER_INDEX_ANY                 0x000000FF
+
+/*
+ * Defines the structure of an xbox 360 joystick.
+ */
+
+typedef struct _XINPUT_GAMEPAD {
+    WORD wButtons;
+    BYTE bLeftTrigger;
+    BYTE bRightTrigger;
+    SHORT sThumbLX;
+    SHORT sThumbLY;
+    SHORT sThumbRX;
+    SHORT sThumbRY;
+} XINPUT_GAMEPAD, *PXINPUT_GAMEPAD;
+
+typedef struct _XINPUT_STATE {
+    DWORD dwPacketNumber;
+    XINPUT_GAMEPAD Gamepad;
+} XINPUT_STATE, *PXINPUT_STATE;
+
+/*
+ * Defines the structure of how much vibration is set on both the
+ * right and left motors in a joystick. If you're not using a 360
+ * joystick you will have to map these to your device.
+ */
+
+typedef struct _XINPUT_VIBRATION {
+    WORD wLeftMotorSpeed;
+    WORD wRightMotorSpeed;
+} XINPUT_VIBRATION, *PXINPUT_VIBRATION;
+
+/*
+ * Defines the structure for what kind of abilities the joystick has
+ * such abilites are things such as if the joystick has the ability
+ * to send and receive audio, if the joystick is infact a driving
+ * wheel or perhaps if the joystick is some kind of dance pad or
+ * guitar.
+ */
+
+typedef struct _XINPUT_CAPABILITIES {
+    BYTE Type;
+    BYTE SubType;
+    WORD Flags;
+    XINPUT_GAMEPAD Gamepad;
+    XINPUT_VIBRATION Vibration;
+} XINPUT_CAPABILITIES, *PXINPUT_CAPABILITIES;
+
+#endif /* __WINE_XINPUT_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/xmldom.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/xmldom.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/xmldom.idl	(revision 16410)
@@ -0,0 +1,817 @@
+/*
+ * Copyright (C) 2005 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <xmldomdid.h>
+#include <idispids.h>
+
+import "ocidl.idl";
+
+interface IXMLDOMImplementation;
+interface IXMLDOMNode;
+interface IXMLDOMDocumentFragment;
+interface IXMLDOMDocument;
+interface IXMLDOMNodeList;
+interface IXMLDOMNamedNodeMap;
+interface IXMLDOMCharacterData;
+interface IXMLDOMAttribute;
+interface IXMLDOMElement;
+interface IXMLDOMText;
+interface IXMLDOMComment;
+interface IXMLDOMProcessingInstruction;
+interface IXMLDOMCDATASection;
+interface IXMLDOMDocumentType;
+interface IXMLDOMNotation;
+interface IXMLDOMEntity;
+interface IXMLDOMEntityReference;
+interface IXMLDOMParseError;
+interface IXTLRuntime;
+
+typedef enum tagDOMNodeType {
+    NODE_INVALID,
+    NODE_ELEMENT,
+    NODE_ATTRIBUTE,
+    NODE_TEXT,
+    NODE_CDATA_SECTION,
+    NODE_ENTITY_REFERENCE,
+    NODE_ENTITY,
+    NODE_PROCESSING_INSTRUCTION,
+    NODE_COMMENT,
+    NODE_DOCUMENT,
+    NODE_DOCUMENT_TYPE,
+    NODE_DOCUMENT_FRAGMENT,
+    NODE_NOTATION
+} DOMNodeType;
+
+[
+local,
+object,
+odl,
+dual,
+oleautomation,
+/*nonextensible,*/
+uuid(2933bf80-7b36-11d2-b20e-00c04f983e60),
+pointer_default(unique)
+]
+interface IXMLDOMNode : IDispatch
+{
+    [propget, id(DISPID_DOM_NODE_NODENAME)]
+    HRESULT nodeName( [out,retval] BSTR *name );
+
+    [propget, id(DISPID_DOM_NODE_NODEVALUE)]
+    HRESULT nodeValue( [out,retval] VARIANT *value );
+
+    [propput, id(DISPID_DOM_NODE_NODEVALUE)]
+    HRESULT nodeValue( [in] VARIANT value );
+
+    [propget, id(DISPID_DOM_NODE_NODETYPE)]
+    HRESULT nodeType( [out,retval] DOMNodeType *type );
+
+    [propget, id(DISPID_DOM_NODE_PARENTNODE)]
+    HRESULT parentNode( [out,retval] IXMLDOMNode **parent );
+
+    [propget, id(DISPID_DOM_NODE_CHILDNODES)]
+    HRESULT childNodes( [out,retval] IXMLDOMNodeList **childList );
+
+    [propget, id(DISPID_DOM_NODE_FIRSTCHILD)]
+    HRESULT firstChild( [out,retval] IXMLDOMNode **firstChild );
+
+    [propget, id(DISPID_DOM_NODE_LASTCHILD)]
+    HRESULT lastChild( [out,retval] IXMLDOMNode **lastChild );
+
+    [propget, id(DISPID_DOM_NODE_PREVIOUSSIBLING)]
+    HRESULT previousSibling( [out,retval] IXMLDOMNode **previousSibling );
+
+    [propget, id(DISPID_DOM_NODE_NEXTSIBLING)]
+    HRESULT nextSibling( [out,retval] IXMLDOMNode **nextSibling );
+
+    [propget, id(DISPID_DOM_NODE_ATTRIBUTES)]
+    HRESULT attributes( [out,retval] IXMLDOMNamedNodeMap **attributeMap );
+
+    [id(DISPID_DOM_NODE_INSERTBEFORE)]
+    HRESULT insertBefore( [in] IXMLDOMNode * newChild,
+                          [in] VARIANT refChild,
+                          [out,retval] IXMLDOMNode **outNewChild );
+
+    [id(DISPID_DOM_NODE_REPLACECHILD)]
+    HRESULT replaceChild( [in] IXMLDOMNode *newChild,
+                          [in] IXMLDOMNode *oldChild,
+                          [out,retval] IXMLDOMNode **outOldChild );
+
+    [id(DISPID_DOM_NODE_REMOVECHILD)]
+    HRESULT removeChild( [in] IXMLDOMNode *childNode,
+                         [out,retval] IXMLDOMNode **oldChild );
+
+    [id(DISPID_DOM_NODE_APPENDCHILD)]
+    HRESULT appendChild( [in] IXMLDOMNode *newChild,
+                         [out,retval] IXMLDOMNode **outNewChild );
+
+    [id(DISPID_DOM_NODE_HASCHILDNODES)]
+    HRESULT hasChildNodes( [out,retval] VARIANT_BOOL *hasChild );
+
+    [propget, id(DISPID_DOM_NODE_OWNERDOC)]
+    HRESULT ownerDocument( [out,retval] IXMLDOMDocument **DOMDocument );
+
+    [id(DISPID_DOM_NODE_CLONENODE)]
+    HRESULT cloneNode( [in] VARIANT_BOOL deep,
+                       [out,retval] IXMLDOMNode **cloneRoot );
+
+    [propget, id(DISPID_XMLDOM_NODE_STRINGTYPE)]
+    HRESULT nodeTypeString( [out,retval] BSTR *nodeType );
+
+    [propget, id(DISPID_XMLDOM_NODE_TEXT)]
+    HRESULT text( [out,retval] BSTR *text );
+
+    [propput, id(DISPID_XMLDOM_NODE_TEXT)]
+    HRESULT text( [in] BSTR text );
+
+    [propget, id(DISPID_XMLDOM_NODE_SPECIFIED)]
+    HRESULT specified( [out,retval] VARIANT_BOOL *isSpecified );
+
+    [propget, id(DISPID_XMLDOM_NODE_DEFINITION)]
+    HRESULT definition( [out,retval] IXMLDOMNode **definitionNode );
+
+    [propget, id(DISPID_XMLDOM_NODE_NODETYPEDVALUE)]
+    HRESULT nodeTypedValue( [out,retval] VARIANT *typedValue );
+
+    [propput, id(DISPID_XMLDOM_NODE_NODETYPEDVALUE)]
+    HRESULT nodeTypedValue( [in] VARIANT typedValue );
+
+    [propget, id(DISPID_XMLDOM_NODE_DATATYPE)]
+    HRESULT dataType( [out,retval] VARIANT *dataTypeName );
+
+    [propput, id(DISPID_XMLDOM_NODE_DATATYPE)]
+    HRESULT dataType( [in] BSTR dataTypeName );
+
+    [propget, id(DISPID_XMLDOM_NODE_XML)]
+    HRESULT xml( [out,retval] BSTR *xmlString );
+
+    [id(DISPID_XMLDOM_NODE_TRANSFORMNODE)]
+    HRESULT transformNode( [in] IXMLDOMNode *styleSheet,
+                           [out,retval] BSTR *xmlString );
+
+    [id(DISPID_XMLDOM_NODE_SELECTNODES)]
+    HRESULT selectNodes( [in] BSTR queryString,
+                         [out,retval] IXMLDOMNodeList **resultList );
+
+    [id(DISPID_XMLDOM_NODE_SELECTSINGLENODE)]
+    HRESULT selectSingleNode( [in] BSTR queryString,
+                              [out,retval] IXMLDOMNode **resultNode );
+
+    [propget, id(DISPID_XMLDOM_NODE_PARSED)]
+    HRESULT parsed( [out,retval] VARIANT_BOOL *isParsed );
+
+    [propget, id(DISPID_XMLDOM_NODE_NAMESPACE)]
+    HRESULT namespaceURI( [out,retval] BSTR *namespaceURI );
+
+    [propget, id(DISPID_XMLDOM_NODE_PREFIX)]
+    HRESULT prefix( [out,retval] BSTR *prefixString );
+
+    [propget, id(DISPID_XMLDOM_NODE_BASENAME)]
+    HRESULT baseName( [out,retval] BSTR *nameString );
+
+    [id(DISPID_XMLDOM_NODE_TRANSFORMNODETOOBJECT)]
+    HRESULT transformNodeToObject( [in] IXMLDOMNode *stylesheet,
+                                   [in] VARIANT outputObject );
+}
+
+[
+local,
+object,
+odl,
+dual,
+/*nonextensible,*/
+oleautomation,
+uuid(2933bf81-7b36-11d2-b20e-00c04f983e60),
+pointer_default(unique)
+]
+interface IXMLDOMDocument : IXMLDOMNode
+{
+    [propget, id(DISPID_DOM_DOCUMENT_DOCTYPE)]
+    HRESULT doctype( [out,retval] IXMLDOMDocumentType **documentType );
+
+    [propget, id(DISPID_DOM_DOCUMENT_IMPLEMENTATION)]
+    HRESULT implementation( [out,retval] IXMLDOMImplementation **impl );
+
+    [propget, id(DISPID_DOM_DOCUMENT_DOCUMENTELEMENT)]
+    HRESULT documentElement( [out,retval] IXMLDOMElement **DOMElement );
+
+    [propputref, id(DISPID_DOM_DOCUMENT_DOCUMENTELEMENT)]
+    HRESULT documentElement( [in] IXMLDOMElement *DOMElement );
+
+    [id(DISPID_DOM_DOCUMENT_CREATEELEMENT)]
+    HRESULT createElement( [in] BSTR tagname,
+                           [out,retval] IXMLDOMElement **element );
+
+    [id(DISPID_DOM_DOCUMENT_CREATEDOCUMENTFRAGMENT)]
+    HRESULT createDocumentFragment( [out,retval] IXMLDOMDocumentFragment **docFrag );
+
+    [id(DISPID_DOM_DOCUMENT_CREATETEXTNODE)]
+    HRESULT createTextNode( [in] BSTR data,
+                            [out,retval] IXMLDOMText **text );
+
+    [id(DISPID_DOM_DOCUMENT_CREATECOMMENT)]
+    HRESULT createComment( [in] BSTR data,
+                           [out,retval] IXMLDOMComment **comment );
+
+    [id(DISPID_DOM_DOCUMENT_CREATECDATASECTION)]
+    HRESULT createCDATASection( [in] BSTR data,
+                                [out,retval] IXMLDOMCDATASection **cdata );
+
+    [id(DISPID_DOM_DOCUMENT_CREATEPROCESSINGINSTRUCTION)]
+    HRESULT createProcessingInstruction( [in] BSTR target,
+                                         [in] BSTR data,
+                                         [out,retval] IXMLDOMProcessingInstruction **pi );
+
+    [id(DISPID_DOM_DOCUMENT_CREATEATTRIBUTE)]
+    HRESULT createAttribute( [in] BSTR name,
+                             [out,retval] IXMLDOMAttribute **attribute );
+
+    [id(DISPID_DOM_DOCUMENT_CREATEENTITYREFERENCE)]
+    HRESULT createEntityReference( [in] BSTR name,
+                                   [out,retval] IXMLDOMEntityReference **entityRef );
+
+    [id(DISPID_DOM_DOCUMENT_GETELEMENTSBYTAGNAME)]
+    HRESULT getElementsByTagName( [in] BSTR tagName,
+                                  [out,retval] IXMLDOMNodeList **resultList );
+
+    [id(DISPID_XMLDOM_DOCUMENT_CREATENODE)]
+    HRESULT createNode( [in] VARIANT Type,
+                        [in] BSTR name,
+                        [in] BSTR namespaceURI,
+                        [out,retval] IXMLDOMNode **node );
+
+    [id(DISPID_XMLDOM_DOCUMENT_NODEFROMID)]
+    HRESULT nodeFromID( [in] BSTR idString,
+                        [out,retval] IXMLDOMNode **node );
+
+    [id(DISPID_XMLDOM_DOCUMENT_LOAD)]
+    HRESULT load( [in] VARIANT xmlSource,
+                  [out,retval] VARIANT_BOOL *isSuccessful );
+
+    [propget, id(DISPID_READYSTATE)]
+    HRESULT readyState( [out,retval] long *value );
+
+    [propget, id(DISPID_XMLDOM_DOCUMENT_PARSEERROR)]
+    HRESULT parseError( [out,retval] IXMLDOMParseError **errorObj );
+
+    [propget, id(DISPID_XMLDOM_DOCUMENT_URL)]
+    HRESULT url( [out,retval] BSTR *urlString );
+
+    /* FIXME: these is meant to be async, but widl parses that as a keyword */
+    [propget, id(DISPID_XMLDOM_DOCUMENT_ASYNC)]
+    HRESULT async( [out,retval] VARIANT_BOOL *isAsync );
+
+    [propput, id(DISPID_XMLDOM_DOCUMENT_ASYNC)]
+    HRESULT async( [in] VARIANT_BOOL isAsync );
+
+    [id(DISPID_XMLDOM_DOCUMENT_ABORT)]
+    HRESULT abort();
+
+    [id(DISPID_XMLDOM_DOCUMENT_LOADXML)]
+    HRESULT loadXML( [in] BSTR bstrXML,
+                     [out,retval] VARIANT_BOOL *isSuccessful );
+
+    [id(DISPID_XMLDOM_DOCUMENT_SAVE)]
+    HRESULT save( [in] VARIANT destination );
+
+    [propget, id(DISPID_XMLDOM_DOCUMENT_VALIDATE)]
+    HRESULT validateOnParse( [out,retval] VARIANT_BOOL *isValidating );
+
+    [propput, id(DISPID_XMLDOM_DOCUMENT_VALIDATE)]
+    HRESULT validateOnParse( [in] VARIANT_BOOL isValidating );
+
+    [propget, id(DISPID_XMLDOM_DOCUMENT_RESOLVENAMESPACE)]
+    HRESULT resolveExternals( [out,retval] VARIANT_BOOL *isResolving );
+
+    [propput, id(DISPID_XMLDOM_DOCUMENT_RESOLVENAMESPACE)]
+    HRESULT resolveExternals( [in] VARIANT_BOOL isValidating );
+
+    [propget, id(DISPID_XMLDOM_DOCUMENT_PRESERVEWHITESPACE)]
+    HRESULT preserveWhiteSpace( [out,retval] VARIANT_BOOL *isPreserving );
+
+    [propput, id(DISPID_XMLDOM_DOCUMENT_PRESERVEWHITESPACE)]
+    HRESULT preserveWhiteSpace( [in] VARIANT_BOOL isPreserving );
+
+    [propput, id(DISPID_XMLDOM_DOCUMENT_ONREADYSTATECHANGE)]
+    HRESULT onreadystatechange( [in] VARIANT readystatechangeSink );
+
+    [propput, id(DISPID_XMLDOM_DOCUMENT_ONDATAAVAILABLE)]
+    HRESULT ondataavailable( [in] VARIANT ondataavailableSink );
+
+    [propput, id(DISPID_XMLDOM_DOCUMENT_ONTRANSFORMNODE)]
+    HRESULT ontransformnode( [in] VARIANT ontransformnodeSink );
+}
+
+[
+local,
+object,
+odl,
+dual,
+/*nonextensible,*/
+oleautomation,
+uuid(2933bf82-7b36-11d2-b20e-00c04f983e60),
+pointer_default(unique)
+]
+interface IXMLDOMNodeList : IDispatch
+{
+    [propget, id(DISPID_VALUE)]
+    HRESULT item( [in] long index,
+                  [out,retval] IXMLDOMNode **listItem );
+
+    [propget, id(DISPID_DOM_NODELIST_LENGTH)]
+    HRESULT length( [out,retval] long *listLength );
+
+    [id(DISPID_XMLDOM_NODELIST_NEXTNODE)]
+    HRESULT nextNode( [out,retval] IXMLDOMNode **nextItem );
+
+    [id(DISPID_XMLDOM_NODELIST_RESET)]
+    HRESULT reset();
+
+    [id(DISPID_NEWENUM)]
+    HRESULT _newEnum( [out,retval] IUnknown **ppUnk );
+}
+
+[
+local,
+object,
+odl,
+dual,
+/*nonextensible,*/
+oleautomation,
+uuid(2933bf83-7b36-11d2-b20e-00c04f983e60),
+pointer_default(unique)
+]
+interface IXMLDOMNamedNodeMap : IDispatch
+{
+    [id(DISPID_DOM_NAMEDNODEMAP_GETNAMEDITEM)]
+    HRESULT getNamedItem( [in] BSTR name,
+                          [out,retval] IXMLDOMNode **namedItem );
+
+    [id(DISPID_DOM_NAMEDNODEMAP_SETNAMEDITEM)]
+    HRESULT setNamedItem( [in] IXMLDOMNode *newItem,
+                          [out,retval] IXMLDOMNode **namedItem );
+
+    [id(DISPID_DOM_NAMEDNODEMAP_REMOVENAMEDITEM)]
+    HRESULT removeNamedItem( [in] BSTR name,
+                             [out,retval] IXMLDOMNode **namedItem );
+
+    [propget, id(DISPID_VALUE)]
+    HRESULT item( [in] long index,
+                  [out,retval] IXMLDOMNode **listItem );
+
+    [propget, id(DISPID_DOM_NODELIST_LENGTH)]
+    HRESULT length( [out,retval] long *listLength );
+
+    [id(DISPID_XMLDOM_NAMEDNODEMAP_GETQUALIFIEDITEM)]
+    HRESULT getQualifiedItem( [in] BSTR baseName,
+                              [in] BSTR namespaceURI,
+                              [out,retval] IXMLDOMNode **qualifiedItem );
+
+    [id(DISPID_XMLDOM_NAMEDNODEMAP_REMOVEQUALIFIEDITEM)]
+    HRESULT removeQualifiedItem( [in] BSTR baseName,
+                                 [in] BSTR namespaceURI,
+                                 [out,retval] IXMLDOMNode **qualifiedItem );
+
+    [id(DISPID_XMLDOM_NAMEDNODEMAP_NEXTNODE)]
+    HRESULT nextNode( [out,retval] IXMLDOMNode **nextItem );
+
+    [id(DISPID_XMLDOM_NAMEDNODEMAP_RESET)]
+    HRESULT reset();
+
+    [id(DISPID_NEWENUM)]
+    HRESULT _newEnum( [out,retval] IUnknown **ppUnk );
+}
+
+[
+local,
+object,
+odl,
+dual,
+/*nonextensible,*/
+oleautomation,
+uuid(3efaa413-272f-11d2-836f-0000f87a7782),
+pointer_default(unique)
+]
+interface IXMLDOMDocumentFragment : IXMLDOMNode
+{
+    /* empty */
+}
+
+[
+local,
+object,
+odl,
+dual,
+/*nonextensible,*/
+oleautomation,
+uuid(2933bf84-7b36-11d2-b20e-00c04f983e60),
+pointer_default(unique)
+]
+interface IXMLDOMCharacterData : IXMLDOMNode
+{
+    [propget, id(DISPID_DOM_DATA_DATA)]
+    HRESULT data( [out,retval] BSTR *data );
+
+    [propput, id(DISPID_DOM_DATA_DATA)]
+    HRESULT data( [in] BSTR data );
+
+    [propget, id(DISPID_DOM_DATA_LENGTH)]
+    HRESULT length( [out,retval] long *dataLength );
+
+    [id(DISPID_DOM_DATA_SUBSTRING)]
+    HRESULT substringData( [in] long offset,
+                           [in] long count,
+                           [out,retval] BSTR *data );
+
+    [id(DISPID_DOM_DATA_APPEND)]
+    HRESULT appendData( [in] BSTR data );
+
+    [id(DISPID_DOM_DATA_INSERT)]
+    HRESULT insertData( [in] long offset,
+                        [in] BSTR data );
+
+    [id(DISPID_DOM_DATA_DELETE)]
+    HRESULT deleteData( [in] long offset,
+                        [in] long count );
+
+    [id(DISPID_DOM_DATA_REPLACE)]
+    HRESULT replaceData( [in] long offset,
+                         [in] long count,
+                         [in] BSTR data );
+}
+
+[
+local,
+object,
+odl,
+dual,
+/*nonextensible,*/
+oleautomation,
+uuid(2933bf85-7b36-11d2-b20e-00c04f983e60),
+pointer_default(unique)
+]
+interface IXMLDOMAttribute : IXMLDOMNode
+{
+    [propget,id(DISPID_DOM_ATTRIBUTE_GETNAME)]
+    HRESULT name( [out,retval] BSTR *attributeName );
+
+    [propget,id(DISPID_DOM_ATTRIBUTE_VALUE)]
+    HRESULT value( [out,retval] VARIANT *attributeValue );
+
+    [propput,id(DISPID_DOM_ATTRIBUTE_VALUE)]
+    HRESULT value( [in] VARIANT attributeValue );
+}
+
+[
+local,
+object,
+odl,
+dual,
+/*nonextensible,*/
+oleautomation,
+uuid(2933bf86-7b36-11d2-b20e-00c04f983e60),
+pointer_default(unique)
+]
+interface IXMLDOMElement : IXMLDOMNode
+{
+    [propget, id(DISPID_DOM_ELEMENT_GETTAGNAME)]
+    HRESULT tagName( [out,retval] BSTR *tagName );
+
+    [id(DISPID_DOM_ELEMENT_GETATTRIBUTE)]
+    HRESULT getAttribute( [in] BSTR name,
+                          [out,retval] VARIANT * value );
+
+    [id(DISPID_DOM_ELEMENT_SETATTRIBUTE)]
+    HRESULT setAttribute( [in] BSTR name,
+                          [in] VARIANT value );
+
+    [id(DISPID_DOM_ELEMENT_REMOVEATTRIBUTE)]
+    HRESULT removeAttribute( [in] BSTR name );
+
+    [id(DISPID_DOM_ELEMENT_GETATTRIBUTENODE)]
+    HRESULT getAttributeNode( [in] BSTR name,
+                              [out, retval] IXMLDOMAttribute ** attributeNode );
+
+    [id(DISPID_DOM_ELEMENT_SETATTRIBUTENODE)]
+    HRESULT setAttributeNode( [in] IXMLDOMAttribute *DOMAttribute,
+                              [out, retval] IXMLDOMAttribute ** attributeNode );
+
+    [id(DISPID_DOM_ELEMENT_REMOVEATTRIBUTENODE)]
+    HRESULT removeAttributeNode( [in] IXMLDOMAttribute *DOMAttribute,
+                              [out, retval] IXMLDOMAttribute ** attributeNode );
+
+    [id(DISPID_DOM_ELEMENT_GETELEMENTSBYTAGNAME)]
+    HRESULT getElementsByTagName( [in] BSTR tagName,
+                              [out, retval] IXMLDOMNodeList ** resultList );
+
+    [id(DISPID_DOM_ELEMENT_NORMALIZE)]
+    HRESULT normalize();
+}
+
+[
+local,
+object,
+odl,
+dual,
+/*nonextensible,*/
+oleautomation,
+uuid(2933bf87-7b36-11d2-b20e-00c04f983e60),
+pointer_default(unique)
+]
+interface IXMLDOMText : IXMLDOMCharacterData
+{
+    [id(DISPID_DOM_TEXT_SPLITTEXT)]
+    HRESULT splitText( [in] long offset,
+                       [out,retval] IXMLDOMText **rightHandTextNode );
+}
+
+[
+local,
+object,
+odl,
+dual,
+/*nonextensible,*/
+oleautomation,
+uuid(2933bf88-7b36-11d2-b20e-00c04f983e60),
+pointer_default(unique)
+]
+interface IXMLDOMComment : IXMLDOMCharacterData
+{
+    /* empty */
+}
+
+[
+local,
+object,
+odl,
+dual,
+/*nonextensible,*/
+oleautomation,
+uuid(2933bf89-7b36-11d2-b20e-00c04f983e60),
+pointer_default(unique)
+]
+interface IXMLDOMProcessingInstruction : IXMLDOMNode
+{
+    [propget, id(DISPID_DOM_PI_TARGET)]
+    HRESULT target( [out, retval] BSTR *name );
+
+    [propget, id(DISPID_DOM_PI_DATA)]
+    HRESULT data( [out, retval] BSTR *value );
+
+    [propput, id(DISPID_DOM_PI_DATA)]
+    HRESULT data( [in] BSTR value );
+}
+
+[
+local,
+object,
+odl,
+dual,
+/*nonextensible,*/
+oleautomation,
+uuid(2933bf8a-7b36-11d2-b20e-00c04f983e60),
+pointer_default(unique)
+]
+interface IXMLDOMCDATASection : IXMLDOMText
+{
+    /* empty */
+}
+
+[
+local,
+object,
+odl,
+dual,
+/*nonextensible,*/
+oleautomation,
+uuid(2933bf8b-7b36-11d2-b20e-00c04f983e60),
+pointer_default(unique)
+]
+interface IXMLDOMDocumentType : IXMLDOMNode
+{
+    [propget, id(DISPID_DOM_DOCUMENTTYPE_NAME)]
+    HRESULT name( [out,retval] BSTR *rootName );
+
+    [propget, id(DISPID_DOM_DOCUMENTTYPE_ENTITIES)]
+    HRESULT entities( [out,retval] IXMLDOMNamedNodeMap **entityMap );
+
+    [propget, id(DISPID_DOM_DOCUMENTTYPE_NOTATIONS)]
+    HRESULT notations( [out,retval] IXMLDOMNamedNodeMap **notationMap );
+}
+
+[
+local,
+object,
+odl,
+dual,
+nonextensible,
+oleautomation,
+uuid(2933bf8c-7b36-11d2-b20e-00c04f983e60),
+pointer_default(unique)
+]
+interface IXMLDOMNotation : IXMLDOMNode
+{
+    [propget, id(DISPID_DOM_NOTATION_PUBLICID)]
+    HRESULT publicId([out, retval] VARIANT *publicId);
+
+    [propget, id(DISPID_DOM_NOTATION_SYSTEMID)]
+    HRESULT systemId([out, retval] VARIANT *systemId);
+}
+
+[
+local,
+object,
+odl,
+dual,
+nonextensible,
+oleautomation,
+uuid(2933bf8d-7b36-11d2-b20e-00c04f983e60),
+pointer_default(unique)
+]
+interface IXMLDOMEntity : IXMLDOMNode
+{
+    [propget, id(DISPID_DOM_ENTITY_PUBLICID)]
+    HRESULT publicId([out, retval] VARIANT *publicId);
+
+    [propget, id(DISPID_DOM_ENTITY_SYSTEMID)]
+    HRESULT systemId([out, retval] VARIANT *systemId);
+
+    [propget, id(DISPID_DOM_ENTITY_NOTATIONNAME)]
+    HRESULT notationName([out, retval] BSTR *name);
+}
+
+[
+local,
+object,
+odl,
+dual,
+nonextensible,
+oleautomation,
+uuid(2933bf8e-7b36-11d2-b20e-00c04f983e60),
+pointer_default(unique)
+]
+interface IXMLDOMEntityReference : IXMLDOMNode
+{
+}
+
+[
+local,
+object,
+odl,
+dual,
+nonextensible,
+oleautomation,
+uuid(2933bf8f-7b36-11d2-b20e-00c04f983e60),
+pointer_default(unique)
+]
+interface IXMLDOMImplementation : IDispatch
+{
+    [id(DISPID_DOM_IMPLEMENTATION_HASFEATURE)]
+    HRESULT hasFeature([in] BSTR feature, [in] BSTR version, [out, retval] VARIANT_BOOL *pbool);
+}
+
+[
+local,
+object,
+odl,
+dual,
+oleautomation,
+/*nonextensible,*/
+helpstring("structure for reporting parse errors"),
+pointer_default(unique),
+uuid (3efaa426-272f-11d2-836f-0000f87a7782)
+]
+interface IXMLDOMParseError : IDispatch
+{
+    [propget, id(DISPID_VALUE)]
+    HRESULT errorCode([retval, out] long *errCode);
+
+    [propget, id(DISPID_DOM_ERROR_URL)]
+    HRESULT url([retval, out] BSTR *p);
+
+    [propget, id(DISPID_DOM_ERROR_REASON)]
+    HRESULT reason([retval, out] BSTR *p);
+
+    [propget, id(DISPID_DOM_ERROR_SRCTEXT)]
+    HRESULT srcText([retval, out] BSTR *p);
+
+    [propget, id(DISPID_DOM_ERROR_LINE)]
+    HRESULT line([retval, out] long *lineNo);
+
+    [propget, id(DISPID_DOM_ERROR_LINEPOS)]
+    HRESULT linepos([retval, out] long * linePos);
+
+    [propget, id(DISPID_DOM_ERROR_FILEPOS)]
+    HRESULT filepos([retval, out] long * filePos);
+}
+
+[
+    hidden,
+    uuid(3efaa427-272f-11d2-836f-0000f87a7782)
+]
+dispinterface XMLDOMDocumentEvents
+{
+    properties:
+    methods:
+    [id(DISPID_XMLDOMEVENT_ONDATAAVAILABLE)]
+    HRESULT ondataavailable();
+
+    [id(DISPID_XMLDOMEVENT_ONREADYSTATECHANGE)]
+    HRESULT onreadystatechange();
+}
+
+[
+uuid(2933bf90-7b36-11d2-b20e-00c04f983e60)
+]
+coclass DOMDocument
+{
+    [default] interface IXMLDOMDocument;
+    [default, source] dispinterface XMLDOMDocumentEvents;
+}
+
+[
+uuid(2933bf91-7b36-11d2-b20e-00c04f983e60)
+]
+coclass DOMFreeThreadedDocument
+{
+    [default] interface IXMLDOMDocument;
+    [default, source] dispinterface XMLDOMDocumentEvents;
+}
+
+[
+object,
+uuid(ed8c108d-4349-11d2-91a4-00c04f7969e8),
+odl,
+dual,
+oleautomation,
+pointer_default(unique)
+]
+interface IXMLHttpRequest : IDispatch
+{
+    [id(1)]
+    HRESULT open([in] BSTR bstrMethod, [in] BSTR bstrUrl,
+                 [in, optional] VARIANT varAsync,
+                 [in, optional] VARIANT varUser,
+                 [in, optional] VARIANT varPassword);
+    [id(2)]
+    HRESULT setRequestHeader([in] BSTR bstrHeader, [in] BSTR bstrValue);
+
+    [id(3)]
+    HRESULT getResponseHeader([in] BSTR bstrHeader, [out, retval] BSTR *pbstrValue);
+
+    [id(4)]
+    HRESULT getAllResponseHeaders([out, retval] BSTR *pbstrHeaders);
+
+    [id(5)]
+    HRESULT send([in, optional] VARIANT varBody);
+
+    [id(6)]
+    HRESULT abort();
+
+    [propget, id(7)]
+    HRESULT status([out, retval] long *plStatus);
+
+    [propget, id(8)]
+    HRESULT statusText([out, retval] BSTR *bstrStatus);
+
+    [propget, id(9)]
+    HRESULT responseXML([out, retval] IDispatch **ppBody);
+
+    [propget, id(10)]
+    HRESULT responseText([out, retval] BSTR *pbstrBody);
+
+    [propget, id(11)]
+    HRESULT responseBody([out, retval] VARIANT *pvarBody);
+
+    [propget, id(12)]
+    HRESULT responseStream([out, retval] VARIANT *pvarBody);
+
+    [propget, id(13)]
+    HRESULT readyState([out, retval] long *plState);
+
+    [propput, id(14)]
+    HRESULT onreadystatechange([in] IDispatch *pReadyStateSink);
+}
+
+[
+uuid(ed8c108e-4349-11d2-91a4-00c04f7969e8)
+]
+coclass XMLHTTPRequest
+{
+    [default] interface IXMLHttpRequest;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/xmldomdid.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/xmldomdid.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/xmldomdid.h	(revision 16410)
@@ -0,0 +1,205 @@
+/*
+ * Copyright (C) 2005 Mike McCormack
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __XMLDOMDID_H__
+#define __XMLDOMDID_H__
+
+#define DISPID_DOM_BASE 1
+#define DISPID_DOM_COLLECTION_BASE 1000000
+#define DISPID_DOM_COLLECTION_MAX 2999999
+
+#define DISPID_DOM_NODE 1
+#define DISPID_DOM_NODE_NODENAME 2
+#define DISPID_DOM_NODE_NODEVALUE 3
+#define DISPID_DOM_NODE_NODETYPE 4
+#define DISPID_DOM_NODE_NODETYPEENUM 5
+#define DISPID_DOM_NODE_PARENTNODE 6
+#define DISPID_DOM_NODE_CHILDNODES 7
+#define DISPID_DOM_NODE_FIRSTCHILD 8
+#define DISPID_DOM_NODE_LASTCHILD 9
+#define DISPID_DOM_NODE_PREVIOUSSIBLING 10
+#define DISPID_DOM_NODE_NEXTSIBLING 11
+#define DISPID_DOM_NODE_ATTRIBUTES 12
+#define DISPID_DOM_NODE_INSERTBEFORE 13
+#define DISPID_DOM_NODE_REPLACECHILD 14
+#define DISPID_DOM_NODE_REMOVECHILD 15
+#define DISPID_DOM_NODE_APPENDCHILD 16
+#define DISPID_DOM_NODE_HASCHILDNODES 17
+#define DISPID_DOM_NODE_OWNERDOC 18
+#define DISPID_DOM_NODE_CLONENODE 19
+
+#define DISPID_XMLDOM_NODE 20
+#define DISPID_XMLDOM_NODE_STRINGTYPE 21
+#define DISPID_XMLDOM_NODE_SPECIFIED 22
+#define DISPID_XMLDOM_NODE_DEFINITION 23
+#define DISPID_XMLDOM_NODE_TEXT 24
+#define DISPID_XMLDOM_NODE_NODETYPEDVALUE 25
+#define DISPID_XMLDOM_NODE_DATATYPE 26
+#define DISPID_XMLDOM_NODE_XML 27
+#define DISPID_XMLDOM_NODE_TRANSFORMNODE 28
+#define DISPID_XMLDOM_NODE_SELECTNODES 29
+#define DISPID_XMLDOM_NODE_SELECTSINGLENODE 30
+#define DISPID_XMLDOM_NODE_PARSED 31
+#define DISPID_XMLDOM_NODE_NAMESPACE 32
+#define DISPID_XMLDOM_NODE_PREFIX 33
+#define DISPID_XMLDOM_NODE_BASENAME 34
+#define DISPID_XMLDOM_NODE_TRANSFORMNODETOOBJECT 35
+#define DISPID_XMLDOM_NODE__TOP 36
+
+#define DISPID_DOM_DOCUMENT 37
+#define DISPID_DOM_DOCUMENT_DOCTYPE 38
+#define DISPID_DOM_DOCUMENT_IMPLEMENTATION 39
+#define DISPID_DOM_DOCUMENT_DOCUMENTELEMENT 40
+#define DISPID_DOM_DOCUMENT_CREATEELEMENT 41
+#define DISPID_DOM_DOCUMENT_CREATEDOCUMENTFRAGMENT 42
+#define DISPID_DOM_DOCUMENT_CREATETEXTNODE 43
+#define DISPID_DOM_DOCUMENT_CREATECOMMENT 44
+#define DISPID_DOM_DOCUMENT_CREATECDATASECTION 45
+#define DISPID_DOM_DOCUMENT_CREATEPROCESSINGINSTRUCTION 46
+#define DISPID_DOM_DOCUMENT_CREATEATTRIBUTE 47
+#define DISPID_DOM_DOCUMENT_CREATEENTITY 48
+#define DISPID_DOM_DOCUMENT_CREATEENTITYREFERENCE 49
+#define DISPID_DOM_DOCUMENT_GETELEMENTSBYTAGNAME 50
+#define DISPID_DOM_DOCUMENT_TOP 51
+
+#define DISPID_XMLDOM_DOCUMENT 52
+#define DISPID_XMLDOM_DOCUMENT_DOCUMENTNODE 53
+#define DISPID_XMLDOM_DOCUMENT_CREATENODE 54
+#define DISPID_XMLDOM_DOCUMENT_CREATENODEEX 55
+#define DISPID_XMLDOM_DOCUMENT_NODEFROMID 56
+#define DISPID_XMLDOM_DOCUMENT_DOCUMENTNAMESPACES 57
+#define DISPID_XMLDOM_DOCUMENT_LOAD 58
+#define DISPID_XMLDOM_DOCUMENT_PARSEERROR 59
+#define DISPID_XMLDOM_DOCUMENT_URL 60
+#define DISPID_XMLDOM_DOCUMENT_ASYNC 61
+#define DISPID_XMLDOM_DOCUMENT_ABORT 62
+#define DISPID_XMLDOM_DOCUMENT_LOADXML 63
+#define DISPID_XMLDOM_DOCUMENT_SAVE 64
+#define DISPID_XMLDOM_DOCUMENT_VALIDATE 65
+#define DISPID_XMLDOM_DOCUMENT_RESOLVENAMESPACE 66
+#define DISPID_XMLDOM_DOCUMENT_PRESERVEWHITESPACE 67
+#define DISPID_XMLDOM_DOCUMENT_ONREADYSTATECHANGE 68
+#define DISPID_XMLDOM_DOCUMENT_ONDATAAVAILABLE 69
+#define DISPID_XMLDOM_DOCUMENT_ONTRANSFORMNODE 70
+#define DISPID_XMLDOM_DOCUMENT__TOP 71
+
+#define DISPID_DOM_NODELIST 72
+#define DISPID_DOM_NODELIST_ITEM 73
+#define DISPID_DOM_NODELIST_LENGTH 74
+
+#define DISPID_XMLDOM_NODELIST 75
+#define DISPID_XMLDOM_NODELIST_NEXTNODE 76
+#define DISPID_XMLDOM_NODELIST_RESET 77
+#define DISPID_XMLDOM_NODELIST_NEWENUM 78
+#define DISPID_XMLDOM_NODELIST__TOP 79
+
+#define DISPID_DOM_NAMEDNODEMAP 80
+#define DISPID_DOM_NAMEDNODEMAP_GETNAMEDITEM 81
+#define DISPID_DOM_NAMEDNODEMAP_SETNAMEDITEM 82
+#define DISPID_DOM_NAMEDNODEMAP_REMOVENAMEDITEM 83
+
+#define DISPID_XMLDOM_NAMEDNODEMAP 84
+#define DISPID_XMLDOM_NAMEDNODEMAP_GETQUALIFIEDITEM 85
+#define DISPID_XMLDOM_NAMEDNODEMAP_REMOVEQUALIFIEDITEM 86
+#define DISPID_XMLDOM_NAMEDNODEMAP_NEXTNODE 87
+#define DISPID_XMLDOM_NAMEDNODEMAP_RESET 88
+#define DISPID_XMLDOM_NAMEDNODEMAP_NEWENUM 89
+#define DISPID_XMLDOM_NAMEDNODEMAP__TOP 90
+
+#define DISPID_DOM_W3CWRAPPERS 91
+
+#define DISPID_DOM_DOCUMENTFRAGMENT 92
+#define DISPID_DOM_DOCUMENTFRAGMENT__TOP 93
+
+#define DISPID_DOM_ELEMENT 94
+#define DISPID_DOM_ELEMENT_GETTAGNAME 95
+#define DISPID_DOM_ELEMENT_GETATTRIBUTES 96
+#define DISPID_DOM_ELEMENT_GETATTRIBUTE 97
+#define DISPID_DOM_ELEMENT_SETATTRIBUTE 98
+#define DISPID_DOM_ELEMENT_REMOVEATTRIBUTE 99
+#define DISPID_DOM_ELEMENT_GETATTRIBUTENODE 100
+#define DISPID_DOM_ELEMENT_SETATTRIBUTENODE 101
+#define DISPID_DOM_ELEMENT_REMOVEATTRIBUTENODE 102
+#define DISPID_DOM_ELEMENT_GETELEMENTSBYTAGNAME 103
+#define DISPID_DOM_ELEMENT_NORMALIZE 104
+#define DISPID_DOM_ELEMENT__TOP 105
+
+#define DISPID_DOM_DATA 106
+#define DISPID_DOM_DATA_DATA 107
+#define DISPID_DOM_DATA_LENGTH 108
+#define DISPID_DOM_DATA_SUBSTRING 109
+#define DISPID_DOM_DATA_APPEND 110
+#define DISPID_DOM_DATA_INSERT 111
+#define DISPID_DOM_DATA_DELETE 112
+#define DISPID_DOM_DATA_REPLACE 113
+#define DISPID_DOM_DATA__TOP 114
+
+#define DISPID_DOM_ATTRIBUTE 115
+#define DISPID_DOM_ATTRIBUTE_GETNAME 116
+#define DISPID_DOM_ATTRIBUTE_SPECIFIED 117
+#define DISPID_DOM_ATTRIBUTE_VALUE 118
+#define DISPID_DOM_ATTRIBUTE__TOP 119
+
+#define DISPID_DOM_TEXT 120
+#define DISPID_DOM_TEXT_SPLITTEXT 121
+#define DISPID_DOM_TEXT_JOINTEXT 122
+#define DISPID_DOM_TEXT__TOP 123
+
+#define DISPID_DOM_PI 124
+#define DISPID_DOM_PI_TARGET 125
+#define DISPID_DOM_PI_DATA 126
+#define DISPID_DOM_PI__TOP 127
+
+#define DISPID_DOM_DOCUMENTTYPE 128
+#define DISPID_DOM_DOCUMENTTYPE_NAME 129
+#define DISPID_DOM_DOCUMENTTYPE_ENTITIES 130
+#define DISPID_DOM_DOCUMENTTYPE_NOTATIONS 131
+#define DISPID_DOM_DOCUMENTTYPE__TOP 132
+
+#define DISPID_DOM_NOTATION 133
+#define DISPID_DOM_NOTATION_PUBLICID 134
+#define DISPID_DOM_NOTATION_SYSTEMID 135
+#define DISPID_DOM_NOTATION__TOP 136
+
+#define DISPID_DOM_ENTITY 137
+#define DISPID_DOM_ENTITY_PUBLICID 138
+#define DISPID_DOM_ENTITY_SYSTEMID 139
+#define DISPID_DOM_ENTITY_NOTATIONNAME 140
+#define DISPID_DOM_ENTITY__TOP 141
+
+#define DISPID_DOM_IMPLEMENTATION 142
+#define DISPID_DOM_IMPLEMENTATION_HASFEATURE 143
+#define DISPID_DOM_IMPLEMENTATION__TOP 144
+
+
+#define  DISPID_DOM_ERROR              0x000000b0
+#define  DISPID_DOM_ERROR_ERRORCODE    0x000000b1
+#define  DISPID_DOM_ERROR_URL          0x000000b2
+#define  DISPID_DOM_ERROR_REASON       0x000000b3
+#define  DISPID_DOM_ERROR_SRCTEXT      0x000000b4
+#define  DISPID_DOM_ERROR_LINE         0x000000b5
+#define  DISPID_DOM_ERROR_LINEPOS      0x000000b6
+#define  DISPID_DOM_ERROR_FILEPOS      0x000000b7
+#define  DISPID_DOM_ERROR__TOP         0x000000b8
+
+#define  DISPID_XMLDOMEVENT                    197
+#define  DISPID_XMLDOMEVENT_ONREADYSTATECHANGE DISPID_READYSTATECHANGE
+#define  DISPID_XMLDOMEVENT_ONDATAAVAILABLE    198
+#define  DISPID_XMLDOMEVENT__TOP               199
+
+#endif /* __XMLDOMDID_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/xmldso.idl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/xmldso.idl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/xmldso.idl	(revision 16410)
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2005 Vijay Kiran Kamuju
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "wtypes.idl";
+import "ocidl.idl";
+
+#include <idispids.h>
+#include <xmldsodid.h>
+
+interface IXMLDOMDocument;
+
+[
+local,
+object,
+odl,
+dual,
+oleautomation,
+uuid(310afa62-0575-11d2-9ca9-0060b0ec3d39),
+pointer_default(unique)
+]
+interface IXMLDSOControl : IDispatch
+{
+	[propget,id(DISPID_XMLDSO_DOCUMENT)] 
+        HRESULT XMLDocument([out, retval] IXMLDOMDocument** ppDoc);
+
+	[propput,id(DISPID_XMLDSO_DOCUMENT)] 
+        HRESULT XMLDocument([in] IXMLDOMDocument* ppDoc);
+
+	[propget,id(DISPID_XMLDSO_JAVADSOCOMPATIBLE)] 
+        HRESULT JavaDSOCompatible([out, retval] BOOL* fJavaDSOCompatible);
+
+	[propput,id(DISPID_XMLDSO_JAVADSOCOMPATIBLE)] 
+        HRESULT JavaDSOCompatible([in]  BOOL fJavaDSOCompatible);
+
+	[propget, id(DISPID_READYSTATE)] 
+        HRESULT readyState([out, retval] long *state);
+}
+
+[
+uuid(550dda30-0541-11d2-9ca9-0060b0ec3d39)
+]
+coclass XMLDSOControl
+{
+	[default] interface IXMLDSOControl;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/xmldsodid.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/xmldsodid.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/xmldsodid.h	(revision 16410)
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2005 Vijay Kiran Kamuju
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __XMLDSODID_H__
+#define __XMLDSODID_H__
+
+#define DISPID_XOBJ_MIN                 0x00010000
+#define DISPID_XOBJ_MAX                 0x0001FFFF
+#define DISPID_XOBJ_BASE                0x00010000
+
+#define  DISPID_XMLDSO                      0x00010000
+#define  DISPID_XMLDSO_DOCUMENT             0x00010001
+#define  DISPID_XMLDSO_JAVADSOCOMPATIBLE    0x00010002
+
+#endif /* __XMLDSODID_H__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/zmouse.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/zmouse.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/zmouse.h	(revision 16410)
@@ -0,0 +1,46 @@
+/*
+ * Scroll wheel mouse definitions
+ *
+ * Copyright (C) 2000 CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_ZMOUSE_H
+#define __WINE_ZMOUSE_H
+
+#define MSH_MOUSEWHEEL "MSWHEEL_ROLLMSG"
+
+#define MOUSEZ_CLASSNAME  "MouseZ"
+#define MOUSEZ_TITLE      "Magellan MSWHEEL"
+
+#define MSH_WHEELMODULE_CLASS (MOUSEZ_CLASSNAME)
+#define MSH_WHEELMODULE_TITLE (MOUSEZ_TITLE)
+
+#define MSH_WHEELSUPPORT "MSH_WHEELSUPPORT_MSG"
+
+#define MSH_SCROLL_LINES "MSH_SCROLL_LINES_MSG"
+
+#define WHEEL_DELTA      120
+
+#ifndef WHEEL_PAGESCROLL
+#define WHEEL_PAGESCROLL  (UINT_MAX)
+#endif
+
+#ifndef SPI_SETWHEELSCROLLLINES
+#define SPI_SETWHEELSCROLLLINES   105
+#endif
+
+#endif  /* __WINE_ZMOUSE_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_037.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_037.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_037.c	(revision 16410)
@@ -0,0 +1,684 @@
+/* code page 037 (IBM EBCDIC US Canada) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/EBCDIC/CP037.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+    0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+    0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+    0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+    0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5,
+    0x00e7, 0x00f1, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c,
+    0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+    0x00ec, 0x00df, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac,
+    0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5,
+    0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+    0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+    0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+    0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1,
+    0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+    0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4,
+    0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+    0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae,
+    0x005e, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc,
+    0x00bd, 0x00be, 0x005b, 0x005d, 0x00af, 0x00a8, 0x00b4, 0x00d7,
+    0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5,
+    0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+    0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff,
+    0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+    0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
+    0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26,
+    0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
+    0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
+    0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
+    0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
+    0xe7, 0xe8, 0xe9, 0xba, 0xe0, 0xbb, 0xb0, 0x6d,
+    0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
+    0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
+    0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b,
+    0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08,
+    0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff,
+    0x41, 0xaa, 0x4a, 0xb1, 0x9f, 0xb2, 0x6a, 0xb5,
+    0xbd, 0xb4, 0x9a, 0x8a, 0x5f, 0xca, 0xaf, 0xbc,
+    0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3,
+    0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab,
+    0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68,
+    0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77,
+    0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf,
+    0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0xae, 0x59,
+    0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48,
+    0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57,
+    0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1,
+    0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf,
+    /* 0x0100 .. 0x01ff */
+    0xc1, 0x81, 0xc1, 0x81, 0xc1, 0x81, 0xc3, 0x83,
+    0xc3, 0x83, 0xc3, 0x83, 0xc3, 0x83, 0xc4, 0x84,
+    0xac, 0x84, 0xc5, 0x85, 0xc5, 0x85, 0xc5, 0x85,
+    0xc5, 0x85, 0xc5, 0x85, 0xc7, 0x87, 0xc7, 0x87,
+    0xc7, 0x87, 0xc7, 0x87, 0xc8, 0x88, 0xc8, 0x88,
+    0xc9, 0x89, 0xc9, 0x89, 0xc9, 0x89, 0xc9, 0x89,
+    0xc9, 0x89, 0x3f, 0x3f, 0xd1, 0x91, 0xd2, 0x92,
+    0x3f, 0xd3, 0x93, 0xd3, 0x93, 0xd3, 0x93, 0x3f,
+    0x3f, 0xd3, 0x93, 0xd5, 0x95, 0xd5, 0x95, 0xd5,
+    0x95, 0x3f, 0x3f, 0x3f, 0xd6, 0x96, 0xd6, 0x96,
+    0xd6, 0x96, 0xd6, 0x96, 0xd9, 0x99, 0xd9, 0x99,
+    0xd9, 0x99, 0xe2, 0xa2, 0xe2, 0xa2, 0xe2, 0xa2,
+    0xe2, 0xa2, 0xe3, 0xa3, 0xe3, 0xa3, 0xe3, 0xa3,
+    0xe4, 0xa4, 0xe4, 0xa4, 0xe4, 0xa4, 0xe4, 0xa4,
+    0xe4, 0xa4, 0xe4, 0xa4, 0xe6, 0xa6, 0xe8, 0xa8,
+    0xe8, 0xe9, 0xa9, 0xe9, 0xa9, 0xe9, 0xa9, 0xa2,
+    0x82, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xac, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc5, 0xc6, 0x86, 0x3f, 0x3f, 0x3f, 0x3f, 0xc9,
+    0x3f, 0x3f, 0x93, 0x3f, 0x3f, 0x3f, 0x3f, 0xd6,
+    0xd6, 0x96, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f, 0xe3, 0xe4,
+    0xa4, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xa9, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xc1, 0x81, 0xc9,
+    0x89, 0xd6, 0x96, 0xe4, 0xa4, 0xfc, 0xdc, 0xfc,
+    0xdc, 0xfc, 0xdc, 0xfc, 0xdc, 0x3f, 0x63, 0x43,
+    0xc1, 0x81, 0x9e, 0x9c, 0xc7, 0x87, 0xc7, 0x87,
+    0xd2, 0x92, 0xd6, 0x96, 0xd6, 0x96, 0x3f, 0x3f,
+    0x91, 0x3f, 0x3f, 0x3f, 0xc7, 0x87, 0x3f, 0x3f,
+    0xd5, 0x95, 0x67, 0x47, 0x9e, 0x9c, 0x80, 0x70,
+    /* 0x0200 .. 0x02ff */
+    0xc1, 0x81, 0xc1, 0x81, 0xc5, 0x85, 0xc5, 0x85,
+    0xc9, 0x89, 0xc9, 0x89, 0xd6, 0x96, 0xd6, 0x96,
+    0xd9, 0x99, 0xd9, 0x99, 0xe4, 0xa4, 0xe4, 0xa4,
+    0xe2, 0xa2, 0xe3, 0xa3, 0x3f, 0x3f, 0xc8, 0x88,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xc1, 0x81,
+    0xc5, 0x85, 0xec, 0xcc, 0xef, 0xcf, 0xd6, 0x96,
+    0xd6, 0x96, 0xe8, 0xa8, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x87, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x88, 0x3f, 0x91, 0x99, 0x3f, 0x3f, 0x3f, 0xa6,
+    0xa8, 0xbe, 0x7f, 0x79, 0x7d, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb0, 0x3f, 0xb0, 0xa5,
+    0x7d, 0xbc, 0xbe, 0x79, 0x3f, 0x6d, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x90, 0x3f, 0xa1, 0x7f, 0x3f, 0x3f,
+    0x3f, 0x93, 0xa2, 0xa7, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x79, 0xbe, 0xb0, 0xa1, 0xbc, 0xbc, 0x3f, 0x3f,
+    0xbd, 0x3f, 0x90, 0x7f, 0xa5, 0x3f, 0x7f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x9d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6d, 0x6d, 0x6d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x79, 0xbe, 0x3f, 0x3f, 0xbd, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xbe, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xbe, 0xbd, 0xc1, 0xb3,
+    0xc5, 0xc8, 0xc9, 0x3f, 0xd6, 0x3f, 0xe8, 0x3f,
+    0x3f, 0xc1, 0xc2, 0x3f, 0x3f, 0xc5, 0xe9, 0xc8,
+    0x3f, 0xc9, 0xd2, 0x3f, 0xd4, 0xd5, 0x3f, 0xd6,
+    0x3f, 0xd7, 0x3f, 0x3f, 0xe3, 0xe8, 0x3f, 0xe7,
+    0x3f, 0x3f, 0xc9, 0xe8, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x59, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xa0, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x3f, 0xe8, 0xe8, 0xe8, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xc1, 0x9e, 0xc2, 0x3f,
+    0xc4, 0xc5, 0x3f, 0xc7, 0xc8, 0xc9, 0xd1, 0xd2,
+    0xd3, 0xd4, 0xd5, 0x3f, 0xd6, 0x3f, 0xd7, 0xd9,
+    0xe3, 0xe4, 0xe6, 0x81, 0x3f, 0x3f, 0x3f, 0x82,
+    0x84, 0x85, 0x3f, 0x3f, 0x3f, 0x87, 0x3f, 0x92,
+    0x94, 0x3f, 0x96, 0x3f, 0x3f, 0x3f, 0x97, 0xa3,
+    0xa4, 0x3f, 0x3f, 0xa5, 0x3f, 0x59, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x89, 0x99, 0xa4, 0xa5, 0x59, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x83, 0x3f, 0x8c, 0x3f,
+    0x86, 0x3f, 0x87, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0xa9, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0xc1, 0x81, 0xc2, 0x82, 0xc2, 0x82, 0xc2, 0x82,
+    0x68, 0x48, 0xc4, 0x84, 0xc4, 0x84, 0xc4, 0x84,
+    0xc4, 0x84, 0xc4, 0x84, 0xc5, 0x85, 0xc5, 0x85,
+    0xc5, 0x85, 0xc5, 0x85, 0xc5, 0x85, 0xc6, 0x86,
+    0xc7, 0x87, 0xc8, 0x88, 0xc8, 0x88, 0xc8, 0x88,
+    0xc8, 0x88, 0xc8, 0x88, 0xc9, 0x89, 0x77, 0x57,
+    0xd2, 0x92, 0xd2, 0x92, 0xd2, 0x92, 0xd3, 0x93,
+    0xd3, 0x93, 0xd3, 0x93, 0xd3, 0x93, 0xd4, 0x94,
+    0xd4, 0x94, 0xd4, 0x94, 0xd5, 0x95, 0xd5, 0x95,
+    0xd5, 0x95, 0xd5, 0x95, 0xef, 0xcf, 0xef, 0xcf,
+    0xd6, 0x96, 0xd6, 0x96, 0xd7, 0x97, 0xd7, 0x97,
+    0xd9, 0x99, 0xd9, 0x99, 0xd9, 0x99, 0xd9, 0x99,
+    0xe2, 0xa2, 0xe2, 0xa2, 0xe2, 0xa2, 0xe2, 0xa2,
+    0xe2, 0xa2, 0xe3, 0xa3, 0xe3, 0xa3, 0xe3, 0xa3,
+    0xe3, 0xa3, 0xe4, 0xa4, 0xe4, 0xa4, 0xe4, 0xa4,
+    0xe4, 0xa4, 0xe4, 0xa4, 0xe5, 0xa5, 0xe5, 0xa5,
+    0xe6, 0xa6, 0xe6, 0xa6, 0xe6, 0xa6, 0xe6, 0xa6,
+    0xe6, 0xa6, 0xe7, 0xa7, 0xe7, 0xa7, 0xe8, 0xa8,
+    0xe9, 0xa9, 0xe9, 0xa9, 0xe9, 0xa9, 0x88, 0xa3,
+    0xa6, 0xa8, 0x3f, 0xa2, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc1, 0x81, 0xc1, 0x81, 0x62, 0x42, 0x62, 0x42,
+    0x62, 0x42, 0x62, 0x42, 0xc1, 0x81, 0xc1, 0x81,
+    0xc1, 0x81, 0xc1, 0x81, 0xc1, 0x81, 0xc1, 0x81,
+    0xc5, 0x85, 0xc5, 0x85, 0xc5, 0x85, 0x72, 0x52,
+    0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0xc5, 0x85,
+    0xc9, 0x89, 0xc9, 0x89, 0xd6, 0x96, 0xd6, 0x96,
+    0xeb, 0xcb, 0xeb, 0xcb, 0xeb, 0xcb, 0xeb, 0xcb,
+    0xd6, 0x96, 0xd6, 0x96, 0xd6, 0x96, 0xd6, 0x96,
+    0xd6, 0x96, 0xd6, 0x96, 0xe4, 0xa4, 0xe4, 0xa4,
+    0xe4, 0xa4, 0xe4, 0xa4, 0xe4, 0xa4, 0xe4, 0xa4,
+    0xe4, 0xa4, 0xe8, 0xa8, 0xe8, 0xa8, 0xe8, 0xa8,
+    0xe8, 0xa8, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xe8, 0x3f, 0xe8, 0x3f, 0xe8, 0x3f, 0xe8,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xbd, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc5, 0xc5, 0xc8, 0xc8, 0xc8, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc9, 0xc9, 0xc9, 0xc9, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe8, 0xe8, 0xe8, 0xe8, 0xd7, 0xbd, 0xbd, 0x79,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xd6, 0xd6, 0x3f, 0x3f, 0x3f, 0xbe, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
+    0x40, 0x40, 0x40, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x60, 0x3f, 0x60, 0x60, 0x60, 0x3f, 0x6d,
+    0x79, 0x7d, 0x6b, 0x79, 0x7f, 0x7f, 0x6b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x4b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x40,
+    0x3f, 0x3f, 0xbe, 0x7f, 0x3f, 0x79, 0x3f, 0x3f,
+    0x3f, 0x4c, 0x6e, 0x3f, 0x5a, 0x3f, 0xbc, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x61, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x40,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x90, 0x89, 0x3f, 0x3f, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0x4e, 0x60, 0x7e, 0x4d, 0x5d, 0x95,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0x4e, 0x60, 0x7e, 0x4d, 0x5d, 0x3f,
+    0x81, 0x85, 0x96, 0xa7, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x4a, 0x3f, 0x3f, 0xb1, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0xc3, 0x3f, 0x3f, 0x3f, 0x3f, 0xc5,
+    0x3f, 0x3f, 0x87, 0xc8, 0xc8, 0xc8, 0x88, 0x88,
+    0xc9, 0xc9, 0xd3, 0x93, 0x3f, 0xd5, 0x3f, 0x3f,
+    0xd7, 0xd7, 0xd8, 0xd9, 0xd9, 0xd9, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xe9, 0x3f, 0x3f, 0x3f,
+    0xe9, 0x3f, 0xd2, 0x67, 0xc2, 0xc3, 0x85, 0x85,
+    0xc5, 0xc6, 0x3f, 0xd4, 0x96, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x89, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xc4, 0x84, 0x85,
+    0x89, 0x91, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc9, 0x3f, 0x3f, 0x3f, 0xe5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xe7, 0x3f, 0x3f, 0xd3, 0xc3, 0xc4, 0xd4,
+    0x89, 0x3f, 0x3f, 0x3f, 0xa5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa7, 0x3f, 0x3f, 0x93, 0x83, 0x84, 0x94,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4c, 0xb0, 0x6e, 0xa5, 0x60, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x4c, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x60, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x80, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x60, 0x8f, 0x3f, 0x61, 0xe0, 0x5c,
+    0x90, 0x3f, 0xe5, 0x3f, 0x3f, 0x3f, 0x3f, 0xd3,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x4f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x95, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xa1, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa1, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa1, 0xa1, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x8a, 0x8b, 0x3f, 0x3f, 0x4c, 0x6e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb3, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0xb0, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x4c, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
+    0xf9, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xc1, 0xc2,
+    0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xd1,
+    0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9,
+    0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
+    0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88,
+    0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+    0xa8, 0xa9, 0xf0, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x60, 0x60, 0x4f, 0x4f, 0x60, 0x60, 0x6a, 0x6a,
+    0x60, 0x60, 0x6a, 0x6a, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x5f, 0x5f, 0x5f, 0x5f, 0xd3, 0xd3, 0xd3, 0xd3,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0xe3, 0xe3, 0xe3, 0xe3,
+    0xe3, 0xe3, 0xe3, 0xe3, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x60, 0x60, 0x6a, 0x6a,
+    0x7e, 0x4f, 0x4e, 0x4e, 0x4e, 0x5f, 0x5f, 0x5f,
+    0xd3, 0xd3, 0xd3, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0xe3, 0xe3, 0xe3, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x61, 0xe0, 0xe7, 0x60, 0x4f, 0x60, 0x4f,
+    0x60, 0x4f, 0x60, 0x4f, 0x60, 0x4f, 0x60, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0xd6, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xd6,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x40, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4c, 0x6e, 0x8a, 0x8b, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xba, 0xbb, 0x3f, 0x7f, 0x7f, 0x6b,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x4e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xbc, 0xbc, 0xbc, 0xbc, 0x6d, 0x6d, 0x6d,
+    0x6b, 0x3f, 0x4b, 0x3f, 0x5e, 0x7a, 0x6f, 0x5a,
+    0x60, 0x4d, 0x5d, 0xc0, 0xd0, 0x3f, 0x3f, 0x7b,
+    0x50, 0x5c, 0x4e, 0x60, 0x4c, 0x6e, 0x7e, 0x3f,
+    0xe0, 0x5b, 0x6c, 0x7c, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
+    0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
+    0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
+    0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
+    0xe7, 0xe8, 0xe9, 0xba, 0xe0, 0xbb, 0xb0, 0x6d,
+    0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
+    0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
+    0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4a, 0xb1, 0x5f, 0xbc, 0x6a, 0xb2, 0x3f, 0x3f,
+    0x4f, 0x4c, 0xb0, 0x6e, 0xa5, 0x3f, 0xd6, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_037 =
+{
+    { 37, 1, 0x003f, 0x003f, "IBM EBCDIC US Canada" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_10000.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_10000.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_10000.c	(revision 16410)
@@ -0,0 +1,684 @@
+/* code page 10000 (Mac Roman) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/MAC/ROMAN.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1,
+    0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8,
+    0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3,
+    0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc,
+    0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df,
+    0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8,
+    0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211,
+    0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x2126, 0x00e6, 0x00f8,
+    0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab,
+    0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153,
+    0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca,
+    0x00ff, 0x0178, 0x2044, 0x00a4, 0x2039, 0x203a, 0xfb01, 0xfb02,
+    0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1,
+    0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4,
+    0x003f, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc,
+    0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xca, 0xc1, 0xa2, 0xa3, 0xdb, 0xb4, 0x7c, 0xa4,
+    0xac, 0xa9, 0xbb, 0xc7, 0xc2, 0x2d, 0xa8, 0xf8,
+    0xa1, 0xb1, 0x32, 0x33, 0xab, 0xb5, 0xa6, 0xe1,
+    0xfc, 0x31, 0xbc, 0xc8, 0x3f, 0x3f, 0x3f, 0xc0,
+    0xcb, 0xe7, 0xe5, 0xcc, 0x80, 0x81, 0xae, 0x82,
+    0xe9, 0x83, 0xe6, 0xe8, 0xed, 0xea, 0xeb, 0xec,
+    0x44, 0x84, 0xf1, 0xee, 0xef, 0xcd, 0x85, 0x78,
+    0xaf, 0xf4, 0xf2, 0xf3, 0x86, 0x59, 0x3f, 0xa7,
+    0x88, 0x87, 0x89, 0x8b, 0x8a, 0x8c, 0xbe, 0x8d,
+    0x8f, 0x8e, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95,
+    0x64, 0x96, 0x98, 0x97, 0x99, 0x9b, 0x9a, 0xd6,
+    0xbf, 0x9d, 0x9c, 0x9e, 0x9f, 0x79, 0x3f, 0xd8,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0xf5, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0xce, 0xcf, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0xd9, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0xc4, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x86, 0x9f, 0x86,
+    0x9f, 0x86, 0x9f, 0x86, 0x9f, 0x3f, 0x80, 0x8a,
+    0x41, 0x61, 0xae, 0xbe, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x81, 0x8c, 0xae, 0xbe, 0xaf, 0xbf,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x85, 0x9a, 0xcd, 0x9b, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0xab, 0xfd, 0xd4, 0xd5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0xf6, 0xff,
+    0x27, 0xf8, 0xab, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf9, 0xfa, 0xfb, 0xfe, 0xf7, 0xfd, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0xab, 0xf6, 0xf7, 0xf8, 0xf8, 0xf9, 0xfa,
+    0xac, 0x3f, 0xfb, 0xfd, 0xff, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xfc,
+    0xfe, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0xab, 0x3f, 0x3f, 0xac, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xab, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xab, 0xac, 0x41, 0xe1,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xa7, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb5, 0x3f, 0x3f, 0x3f,
+    0xb9, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa7, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0xb9, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0xae, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xa7, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xa7, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x82, 0x8d, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0xec, 0x95,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0xcd, 0x9b, 0xcd, 0x9b,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0xe5, 0x89, 0xe5, 0x89,
+    0xe5, 0x89, 0xe5, 0x89, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0xe6, 0x90,
+    0xe6, 0x90, 0xe6, 0x90, 0xe6, 0x90, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0xef, 0x99, 0xef, 0x99, 0xef, 0x99, 0xef, 0x99,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xac, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0xac, 0xac, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0xab, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0xd0, 0xd1, 0xd0, 0x3f, 0x5f,
+    0xd4, 0xd5, 0xe2, 0xd4, 0xd2, 0xd3, 0xe3, 0x3f,
+    0xa0, 0xe0, 0xa5, 0x3f, 0x2e, 0x3f, 0xc9, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0xe4, 0x3f, 0xab, 0xfd, 0x3f, 0xd4, 0x3f, 0x3f,
+    0x3f, 0xdc, 0xdd, 0x3f, 0x21, 0x3f, 0xf8, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xda, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xfb, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa2, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xaa, 0x3f, 0x5a, 0x3f, 0xbd, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x81, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0xb9, 0x3f, 0x3f, 0x3f,
+    0xb7, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xdc, 0xf6, 0xdd, 0xff, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xdc, 0xdd, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0xb6, 0x3f, 0x3f, 0xaf, 0xc6, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb8,
+    0x3f, 0xb7, 0x2d, 0xb1, 0x3f, 0xda, 0x5c, 0x2a,
+    0xfb, 0xa5, 0xc3, 0x3f, 0x3f, 0x3f, 0xb0, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0xba, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc5, 0xc5, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xad, 0x3d, 0x3d, 0x3d, 0xb2, 0xb3, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xc7, 0xc8, 0x3f, 0x3f, 0x3c, 0x3e,
+    0xb2, 0xb3, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xe1, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xdc, 0xdd, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2b, 0x2b, 0x2b, 0x2b,
+    0xc2, 0xc2, 0xc2, 0xc2, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0xc2, 0xc2, 0xc2,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xd7, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xdc, 0xdd, 0xc7, 0xc8, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0xd2, 0xd3, 0xe3,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0xde, 0xdf, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xf8, 0xf8, 0xf8, 0xf8, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0xd1, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa2, 0xa3, 0xc2, 0xf8, 0x7c, 0xb4, 0x3f, 0x3f,
+    0x7c, 0xdc, 0xf6, 0xdd, 0xff, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_10000 =
+{
+    { 10000, 1, 0x003f, 0x003f, "Mac Roman" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_10006.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_10006.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_10006.c	(revision 16410)
@@ -0,0 +1,684 @@
+/* code page 10006 (Mac Greek) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/MAC/GREEK.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x00c4, 0x00b9, 0x00b2, 0x00c9, 0x00b3, 0x00d6, 0x00dc, 0x0385,
+    0x00e0, 0x00e2, 0x00e4, 0x0384, 0x00a8, 0x00e7, 0x00e9, 0x00e8,
+    0x00ea, 0x00eb, 0x00a3, 0x2122, 0x00ee, 0x00ef, 0x2022, 0x00bd,
+    0x2030, 0x00f4, 0x00f6, 0x00a6, 0x00ad, 0x00f9, 0x00fb, 0x00fc,
+    0x2020, 0x0393, 0x0394, 0x0398, 0x039b, 0x039e, 0x03a0, 0x00df,
+    0x00ae, 0x00a9, 0x03a3, 0x03aa, 0x00a7, 0x2260, 0x00b0, 0x0387,
+    0x0391, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x0392, 0x0395, 0x0396,
+    0x0397, 0x0399, 0x039a, 0x039c, 0x03a6, 0x03ab, 0x03a8, 0x03a9,
+    0x03ac, 0x039d, 0x00ac, 0x039f, 0x03a1, 0x2248, 0x03a4, 0x00ab,
+    0x00bb, 0x2026, 0x00a0, 0x03a5, 0x03a7, 0x0386, 0x0388, 0x0153,
+    0x2013, 0x2015, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x0389,
+    0x038a, 0x038c, 0x038e, 0x03ad, 0x03ae, 0x03af, 0x03cc, 0x038f,
+    0x03cd, 0x03b1, 0x03b2, 0x03c8, 0x03b4, 0x03b5, 0x03c6, 0x03b3,
+    0x03b7, 0x03b9, 0x03be, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03bf,
+    0x03c0, 0x03ce, 0x03c1, 0x03c3, 0x03c4, 0x03b8, 0x03c9, 0x03c2,
+    0x03c7, 0x03c5, 0x03b6, 0x03ca, 0x03cb, 0x0390, 0x03b0, 0x003f
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xca, 0x21, 0x63, 0x92, 0x3f, 0xb4, 0x9b, 0xac,
+    0x8c, 0xa9, 0x61, 0xc7, 0xc2, 0x9c, 0xa8, 0xd0,
+    0xae, 0xb1, 0x82, 0x84, 0x27, 0xed, 0x3f, 0x3f,
+    0x2c, 0x81, 0x6f, 0xc8, 0x3f, 0x97, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x80, 0x41, 0x41, 0x43,
+    0x45, 0x83, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0x4e, 0x4f, 0x4f, 0x4f, 0x4f, 0x85, 0x78,
+    0x4f, 0x55, 0x55, 0x55, 0x86, 0x59, 0x3f, 0xa7,
+    0x88, 0x61, 0x89, 0x61, 0x8a, 0x61, 0x61, 0x8d,
+    0x8f, 0x8e, 0x90, 0x91, 0x69, 0x69, 0x94, 0x95,
+    0x64, 0x6e, 0x6f, 0x6f, 0x99, 0x6f, 0x9a, 0xd6,
+    0x6f, 0x9d, 0x75, 0x9e, 0x9f, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0xcf, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x86, 0x9f, 0x86,
+    0x9f, 0x86, 0x9f, 0x86, 0x9f, 0x3f, 0x80, 0x8a,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x85, 0x9a, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0xd4, 0xd5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0xd0, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xae, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0xd0, 0xd0, 0x3f, 0x3f,
+    0x8c, 0x3f, 0xae, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0x8c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x8b, 0x87, 0xcd, 0xaf,
+    0xce, 0xd7, 0xd8, 0x3f, 0xd9, 0x3f, 0xda, 0xdf,
+    0xfd, 0xb0, 0xb5, 0xa1, 0xa2, 0xb6, 0xb7, 0xb8,
+    0xa3, 0xb9, 0xba, 0xa4, 0xbb, 0xc1, 0xa5, 0xc3,
+    0xa6, 0xc4, 0x3f, 0xaa, 0xc6, 0xcb, 0xbc, 0xcc,
+    0xbe, 0xbf, 0xab, 0xbd, 0xc0, 0xdb, 0xdc, 0xdd,
+    0xfe, 0xe1, 0xe2, 0xe7, 0xe4, 0xe5, 0xfa, 0xe8,
+    0xf5, 0xe9, 0xeb, 0xec, 0xed, 0xee, 0xea, 0xef,
+    0xf0, 0xf2, 0xf7, 0xf3, 0xf4, 0xf9, 0xe6, 0xf8,
+    0xe3, 0xf6, 0xfb, 0xfc, 0xde, 0xe0, 0xf1, 0x3f,
+    0xe2, 0xf5, 0xcb, 0xcb, 0xcb, 0xe6, 0xf0, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xeb, 0xf2, 0xf7, 0x3f, 0xa3, 0xe5, 0x3f, 0x3f,
+    0x3f, 0xaa, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xe2, 0xe7, 0xe4,
+    0xe6, 0xf8, 0x69, 0x72, 0x75, 0x76, 0xe2, 0xe7,
+    0xf2, 0xe6, 0xf8, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0xf5,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x8d, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x95,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x89, 0x41, 0x89,
+    0x41, 0x89, 0x41, 0x89, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x90,
+    0x45, 0x90, 0x45, 0x90, 0x45, 0x90, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x99, 0x4f, 0x99, 0x4f, 0x99, 0x4f, 0x99,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1,
+    0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0,
+    0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0x3f, 0x3f,
+    0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0x3f, 0x3f,
+    0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8,
+    0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8,
+    0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9,
+    0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9,
+    0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0x3f, 0x3f,
+    0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x3f, 0x3f,
+    0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
+    0x3f, 0xcb, 0x3f, 0xcb, 0x3f, 0xcb, 0x3f, 0xcb,
+    0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6,
+    0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf,
+    0xe1, 0xc0, 0xe5, 0xdb, 0xe8, 0xdc, 0xe9, 0xdd,
+    0xef, 0xde, 0xf9, 0xe0, 0xf6, 0xf1, 0x3f, 0x3f,
+    0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1,
+    0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0,
+    0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8,
+    0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8,
+    0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6,
+    0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf,
+    0xe1, 0xe1, 0xe1, 0xe1, 0xc0, 0x3f, 0xe1, 0xe1,
+    0xb0, 0xb0, 0xb0, 0xcd, 0xb0, 0x3f, 0xe9, 0x3f,
+    0x3f, 0x8c, 0xe8, 0xe8, 0xdc, 0x3f, 0xe8, 0xe8,
+    0xb6, 0xce, 0xb8, 0xd7, 0xb8, 0x3f, 0x3f, 0x3f,
+    0xe9, 0xe9, 0xfb, 0xfd, 0x3f, 0x3f, 0xe9, 0xfb,
+    0xb9, 0xb9, 0xb9, 0xd8, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf9, 0xf9, 0xfc, 0xfe, 0xf2, 0xf2, 0xf9, 0xfc,
+    0xcb, 0xcb, 0xcb, 0xda, 0xc4, 0x8c, 0x87, 0x60,
+    0x3f, 0x3f, 0xf6, 0xf6, 0xf1, 0x3f, 0xf6, 0xf6,
+    0xc3, 0xd9, 0xbf, 0xdf, 0xbf, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0xd0, 0xd0, 0xd1, 0x3f, 0x5f,
+    0xd4, 0xd5, 0x2c, 0xd4, 0xd2, 0xd3, 0x2c, 0x3f,
+    0xa0, 0x3f, 0x96, 0x3f, 0x2e, 0x3f, 0xc9, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x98, 0x3f, 0x27, 0x22, 0x3f, 0xd4, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0xd0, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xae, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x63, 0x3f, 0x3f, 0x92, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x93, 0x3f, 0x5a, 0x3f, 0xbf, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0xf0, 0xe7, 0xa1, 0xa6,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xb1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xae, 0x96, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc5, 0xc5, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xad, 0x3d, 0x3d, 0x3d, 0xb2, 0xb3, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xc7, 0xc8, 0x3f, 0x3f, 0x3c, 0x3e,
+    0xb2, 0xb3, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0x9b, 0x9b,
+    0x2d, 0x2d, 0x9b, 0x9b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0xc2, 0xc2, 0xc2, 0xc2, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0x9b, 0x9b,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0xc2, 0xc2, 0xc2,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0xc7, 0xc8, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0xd2, 0xd3, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xd0, 0xd0, 0xd0, 0xd0, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0xd0, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x63, 0x92, 0xc2, 0xd0, 0x9b, 0xb4, 0x3f, 0x3f,
+    0x7c, 0x3c, 0x5e, 0x3e, 0x76, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_10006 =
+{
+    { 10006, 1, 0x003f, 0x003f, "Mac Greek" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_10007.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_10007.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_10007.c	(revision 16410)
@@ -0,0 +1,717 @@
+/* code page 10007 (Mac Cyrillic) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/MAC/CYRILLIC.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+    0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+    0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+    0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+    0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x0406,
+    0x00ae, 0x00a9, 0x2122, 0x0402, 0x0452, 0x2260, 0x0403, 0x0453,
+    0x221e, 0x00b1, 0x2264, 0x2265, 0x0456, 0x00b5, 0x2202, 0x0408,
+    0x0404, 0x0454, 0x0407, 0x0457, 0x0409, 0x0459, 0x040a, 0x045a,
+    0x0458, 0x0405, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab,
+    0x00bb, 0x2026, 0x00a0, 0x040b, 0x045b, 0x040c, 0x045c, 0x0455,
+    0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x201e,
+    0x040e, 0x045e, 0x040f, 0x045f, 0x2116, 0x0401, 0x0451, 0x044f,
+    0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+    0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+    0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+    0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x00a4
+};
+
+static const unsigned char uni2cp_low[4864] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xca, 0x21, 0xa2, 0xa3, 0xff, 0x59, 0x7c, 0xa4,
+    0x22, 0xa9, 0x61, 0xc7, 0xc2, 0x2d, 0xa8, 0xd1,
+    0xa1, 0xb1, 0x32, 0x33, 0x27, 0xb5, 0xa6, 0x3f,
+    0x2c, 0x31, 0x6f, 0xc8, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43,
+    0x45, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0x4e, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x78,
+    0x4f, 0x55, 0x55, 0x55, 0x55, 0x59, 0x3f, 0x3f,
+    0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x63,
+    0x65, 0x65, 0x65, 0x65, 0x69, 0x69, 0x69, 0x69,
+    0x64, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0xd6,
+    0x6f, 0x75, 0x75, 0x75, 0x75, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0xc4, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75, 0x55,
+    0x75, 0x55, 0x75, 0x55, 0x75, 0x3f, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0xd4, 0xd5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0xd1, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xa1, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0xd1, 0xd1, 0x3f, 0x3f,
+    0x22, 0x3f, 0xa1, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0x22, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x22, 0x41, 0x3f,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0400 .. 0x04ff */
+    0x85, 0xdd, 0xab, 0xae, 0xb8, 0xc1, 0xa7, 0xba,
+    0xb7, 0xbc, 0xbe, 0xcb, 0xcd, 0x88, 0xd8, 0xda,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xdf,
+    0xe5, 0xde, 0xac, 0xaf, 0xb9, 0xcf, 0xb4, 0xbb,
+    0xc0, 0xbd, 0xbf, 0xcc, 0xce, 0xe8, 0xd9, 0xdb,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x86, 0xe6, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x80, 0xe0, 0x80, 0xe0, 0x3f, 0x3f, 0x85, 0xe5,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x86, 0xe6, 0x87, 0xe7,
+    0x3f, 0x3f, 0x88, 0xe8, 0x88, 0xe8, 0x8e, 0xee,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x9d, 0xfd, 0x93, 0xf3,
+    0x93, 0xf3, 0x93, 0xf3, 0x97, 0xf7, 0x3f, 0x3f,
+    0x9b, 0xfb, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xed, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x63, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x22, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0x22, 0x22, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0xd0, 0xd1, 0xd0, 0x3f, 0x5f,
+    0xd4, 0xd5, 0x2c, 0xd4, 0xd2, 0xd3, 0xd7, 0x3f,
+    0xa0, 0x3f, 0xa5, 0x3f, 0x2e, 0x3f, 0xc9, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x27, 0x22, 0x3f, 0xd4, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0xd1, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa1, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa2, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0xdc, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xaa, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0xb6, 0x3f, 0x3f, 0x4f, 0xc6, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xb1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xa1, 0xa5, 0xc3, 0x3f, 0x3f, 0x3f, 0xb0, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc5, 0xc5, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xad, 0x3d, 0x3d, 0x3d, 0xb2, 0xb3, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xc7, 0xc8, 0x3f, 0x3f, 0x3c, 0x3e,
+    0xb2, 0xb3, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2b, 0x2b, 0x2b, 0x2b,
+    0xc2, 0xc2, 0xc2, 0xc2, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0xc2, 0xc2, 0xc2,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0xc7, 0xc8, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0xd2, 0xd3, 0xd7,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xd1, 0xd1, 0xd1, 0xd1, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0xd1, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa2, 0xa3, 0xc2, 0xd1, 0x7c, 0x59, 0x3f, 0x3f,
+    0x7c, 0x3c, 0x5e, 0x3e, 0x76, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x0400, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x0500, 0x0600, 0x0700,
+    0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x0d00, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x0e00, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x0f00, 0x1200, 0x1200, 0x1000, 0x1100
+};
+
+const struct sbcs_table cptable_10007 =
+{
+    { 10007, 1, 0x003f, 0x003f, "Mac Cyrillic" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_10029.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_10029.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_10029.c	(revision 16410)
@@ -0,0 +1,684 @@
+/* code page 10029 (Mac Latin 2) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/MAC/LATIN2.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x00c4, 0x0100, 0x0101, 0x00c9, 0x0104, 0x00d6, 0x00dc, 0x00e1,
+    0x0105, 0x010c, 0x00e4, 0x010d, 0x0106, 0x0107, 0x00e9, 0x0179,
+    0x017a, 0x010e, 0x00ed, 0x010f, 0x0112, 0x0113, 0x0116, 0x00f3,
+    0x0117, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x011a, 0x011b, 0x00fc,
+    0x2020, 0x00b0, 0x0118, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df,
+    0x00ae, 0x00a9, 0x2122, 0x0119, 0x00a8, 0x2260, 0x0123, 0x012e,
+    0x012f, 0x012a, 0x2264, 0x2265, 0x012b, 0x0136, 0x2202, 0x2211,
+    0x0142, 0x013b, 0x013c, 0x013d, 0x013e, 0x0139, 0x013a, 0x0145,
+    0x0146, 0x0143, 0x00ac, 0x221a, 0x0144, 0x0147, 0x2206, 0x00ab,
+    0x00bb, 0x2026, 0x00a0, 0x0148, 0x0150, 0x00d5, 0x0151, 0x014c,
+    0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca,
+    0x014d, 0x0154, 0x0155, 0x0158, 0x2039, 0x203a, 0x0159, 0x0156,
+    0x0157, 0x0160, 0x201a, 0x201e, 0x0161, 0x015a, 0x015b, 0x00c1,
+    0x0164, 0x0165, 0x00cd, 0x017d, 0x017e, 0x016a, 0x00d3, 0x00d4,
+    0x016b, 0x016e, 0x00da, 0x016f, 0x0170, 0x0171, 0x0172, 0x0173,
+    0x00dd, 0x00fd, 0x0137, 0x017b, 0x0141, 0x017c, 0x0122, 0x02c7
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xca, 0x21, 0x63, 0xa3, 0x3f, 0x59, 0x7c, 0xa4,
+    0xac, 0xa9, 0x61, 0xc7, 0xc2, 0x2d, 0xa8, 0xd1,
+    0xa1, 0x3f, 0x32, 0x33, 0x27, 0x75, 0xa6, 0x3f,
+    0x2c, 0x31, 0x6f, 0xc8, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0xe7, 0x41, 0x41, 0x80, 0x41, 0x41, 0x43,
+    0x45, 0x83, 0x45, 0x45, 0x49, 0xea, 0x49, 0x49,
+    0x44, 0x4e, 0x4f, 0xee, 0xef, 0xcd, 0x85, 0x78,
+    0x4f, 0x55, 0xf2, 0x55, 0x86, 0xf8, 0x3f, 0xa7,
+    0x61, 0x87, 0x61, 0x61, 0x8a, 0x61, 0x61, 0x63,
+    0x65, 0x8e, 0x65, 0x65, 0x69, 0x92, 0x69, 0x69,
+    0x64, 0x6e, 0x6f, 0x97, 0x99, 0x9b, 0x9a, 0xd6,
+    0x6f, 0x75, 0x9c, 0x75, 0x9f, 0xf9, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x81, 0x82, 0x41, 0x61, 0x84, 0x88, 0x8c, 0x8d,
+    0x43, 0x63, 0x43, 0x63, 0x89, 0x8b, 0x91, 0x93,
+    0x44, 0x64, 0x94, 0x95, 0x45, 0x65, 0x96, 0x98,
+    0xa2, 0xab, 0x9d, 0x9e, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0xfe, 0xae, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0xb1, 0xb4, 0x49, 0x69, 0xaf, 0xb0,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0xb5, 0xfa,
+    0x3f, 0xbd, 0xbe, 0xb9, 0xba, 0xbb, 0xbc, 0x3f,
+    0x3f, 0xfc, 0xb8, 0xc1, 0xc4, 0xbf, 0xc0, 0xc5,
+    0xcb, 0x3f, 0x3f, 0x3f, 0xcf, 0xd8, 0x4f, 0x6f,
+    0xcc, 0xce, 0x4f, 0x6f, 0xd9, 0xda, 0xdf, 0xe0,
+    0xdb, 0xde, 0xe5, 0xe6, 0x53, 0x73, 0x53, 0x73,
+    0xe1, 0xe4, 0x54, 0x74, 0xe8, 0xe9, 0x54, 0x74,
+    0x55, 0x75, 0xed, 0xf0, 0x55, 0x75, 0xf1, 0xf3,
+    0xf4, 0xf5, 0xf6, 0xf7, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x8f, 0x90, 0xfb, 0xfd, 0xeb, 0xec, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x86, 0x9f, 0x86,
+    0x9f, 0x86, 0x9f, 0x86, 0x9f, 0x3f, 0x80, 0x8a,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x85, 0x9a, 0xcd, 0x9b, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0xd4, 0xd5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0xff,
+    0x27, 0xd1, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xa1, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0xd1, 0xd1, 0x3f, 0x3f,
+    0xac, 0x3f, 0xa1, 0x22, 0xff, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0xac, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0xac, 0x41, 0x3f,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xa7, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x75, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa7, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xa7, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xa7, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x63, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x94, 0x95, 0x94, 0x95,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0xcd, 0x9b, 0xcd, 0x9b,
+    0xcf, 0xd8, 0xcf, 0xd8, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0xe5, 0xe6, 0xe1, 0xe4,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0xed, 0xf0, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0xef, 0x99, 0xef, 0x99, 0xef, 0x99, 0xef, 0x99,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xac, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0xac, 0xac, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0xd0, 0xd1, 0xd0, 0x3f, 0x5f,
+    0xd4, 0xd5, 0xe2, 0xd4, 0xd2, 0xd3, 0xe3, 0x3f,
+    0xa0, 0x3f, 0xa5, 0x3f, 0x2e, 0x3f, 0xc9, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x27, 0x22, 0x3f, 0xd4, 0x3f, 0x3f,
+    0x3f, 0xdc, 0xdd, 0x3f, 0x21, 0x3f, 0xd1, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa1, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x63, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xaa, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb7, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xdc, 0x5e, 0xdd, 0xff, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xdc, 0xdd, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0xb6, 0x3f, 0x3f, 0x4f, 0xc6, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xb7, 0x2d, 0x3f, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xa1, 0xa5, 0xc3, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xad, 0x3d, 0x3d, 0x3d, 0xb2, 0xb3, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xc7, 0xc8, 0x3f, 0x3f, 0x3c, 0x3e,
+    0xb2, 0xb3, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xdc, 0xdd, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2b, 0x2b, 0x2b, 0x2b,
+    0xc2, 0xc2, 0xc2, 0xc2, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0xc2, 0xc2, 0xc2,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xd7, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xdc, 0xdd, 0xc7, 0xc8, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0xd2, 0xd3, 0xe3,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xd1, 0xd1, 0xd1, 0xd1, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0xd1, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x63, 0xa3, 0xc2, 0xd1, 0x7c, 0x59, 0x3f, 0x3f,
+    0x7c, 0xdc, 0x5e, 0xdd, 0xff, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_10029 =
+{
+    { 10029, 1, 0x003f, 0x003f, "Mac Latin 2" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1006.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1006.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1006.c	(revision 16410)
@@ -0,0 +1,717 @@
+/* code page 1006 (IBM Arabic) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MISC/CP1006.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x06f0, 0x06f1, 0x06f2, 0x06f3, 0x06f4, 0x06f5, 0x06f6,
+    0x06f7, 0x06f8, 0x06f9, 0x060c, 0x061b, 0x00ad, 0x061f, 0xfe81,
+    0xfe8d, 0xfe8e, 0xfe8e, 0xfe8f, 0xfe91, 0xfb56, 0xfb58, 0xfe93,
+    0xfe95, 0xfe97, 0xfb66, 0xfb68, 0xfe99, 0xfe9b, 0xfe9d, 0xfe9f,
+    0xfb7a, 0xfb7c, 0xfea1, 0xfea3, 0xfea5, 0xfea7, 0xfea9, 0xfb84,
+    0xfeab, 0xfead, 0xfb8c, 0xfeaf, 0xfb8a, 0xfeb1, 0xfeb3, 0xfeb5,
+    0xfeb7, 0xfeb9, 0xfebb, 0xfebd, 0xfebf, 0xfec1, 0xfec5, 0xfec9,
+    0xfeca, 0xfecb, 0xfecc, 0xfecd, 0xfece, 0xfecf, 0xfed0, 0xfed1,
+    0xfed3, 0xfed5, 0xfed7, 0xfed9, 0xfedb, 0xfb92, 0xfb94, 0xfedd,
+    0xfedf, 0xfee0, 0xfee1, 0xfee3, 0xfb9e, 0xfee5, 0xfee7, 0xfe85,
+    0xfeed, 0xfba6, 0xfba8, 0xfba9, 0xfbaa, 0xfe80, 0xfe89, 0xfe8a,
+    0xfe8b, 0xfef1, 0xfef2, 0xfef3, 0xfbb0, 0xfbae, 0xfe7c, 0xfe7d
+};
+
+static const unsigned char uni2cp_low[4864] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0x21, 0x63, 0x4c, 0x3f, 0x59, 0x7c, 0x3f,
+    0x22, 0x63, 0x61, 0x3c, 0x3f, 0xad, 0x72, 0x2d,
+    0x3f, 0x3f, 0x32, 0x33, 0x27, 0x75, 0x3f, 0x3f,
+    0x2c, 0x31, 0x6f, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43,
+    0x45, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0x4e, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x78,
+    0x4f, 0x55, 0x55, 0x55, 0x55, 0x59, 0x3f, 0x3f,
+    0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x63,
+    0x65, 0x65, 0x65, 0x65, 0x69, 0x69, 0x69, 0x69,
+    0x64, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x3f,
+    0x6f, 0x75, 0x75, 0x75, 0x75, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75, 0x55,
+    0x75, 0x55, 0x75, 0x55, 0x75, 0x3f, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0x2d, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0x2d, 0x2d, 0x3f, 0x3f,
+    0x22, 0x3f, 0x3f, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0x22, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x22, 0x41, 0x3f,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x75, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0600 .. 0x06ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xab, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0xac, 0x3f, 0x3f, 0x3f, 0xae,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8,
+    0xa9, 0xaa, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x63, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x22, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0x22, 0x22, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x27, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x63, 0x3f, 0x3f, 0x4c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0x3f, 0x3f, 0x2f, 0x5c, 0x2a,
+    0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb5, 0x3f,
+    0xb6, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xba, 0x3f,
+    0xbb, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xc0, 0x3f, 0xc1, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xc7, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xcc, 0x3f, 0xca, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xe5, 0x3f, 0xe6, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xec, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xf1, 0x3f,
+    0xf2, 0xf3, 0xf4, 0x3f, 0x3f, 0x3f, 0xfd, 0x3f,
+    0xfc, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2d, 0x2d, 0x2d, 0x2d, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xfe, 0xff, 0x3f, 0x3f,
+    0xf5, 0xaf, 0x3f, 0x3f, 0x3f, 0xef, 0x3f, 0x3f,
+    0x3f, 0xf6, 0xf7, 0xf8, 0x3f, 0xb0, 0xb1, 0xb3,
+    0x3f, 0xb4, 0x3f, 0xb7, 0x3f, 0xb8, 0x3f, 0xb9,
+    0x3f, 0xbc, 0x3f, 0xbd, 0x3f, 0xbe, 0x3f, 0xbf,
+    0x3f, 0xc2, 0x3f, 0xc3, 0x3f, 0xc4, 0x3f, 0xc5,
+    0x3f, 0xc6, 0x3f, 0xc8, 0x3f, 0xc9, 0x3f, 0xcb,
+    0x3f, 0xcd, 0x3f, 0xce, 0x3f, 0xcf, 0x3f, 0xd0,
+    0x3f, 0xd1, 0x3f, 0xd2, 0x3f, 0xd3, 0x3f, 0xd4,
+    0x3f, 0xd5, 0x3f, 0x3f, 0x3f, 0xd6, 0x3f, 0x3f,
+    0x3f, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd,
+    0xde, 0xdf, 0x3f, 0xe0, 0x3f, 0xe1, 0x3f, 0xe2,
+    0x3f, 0xe3, 0x3f, 0xe4, 0x3f, 0xe7, 0x3f, 0xe8,
+    0xe9, 0xea, 0x3f, 0xeb, 0x3f, 0xed, 0x3f, 0xee,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xf0, 0x3f, 0x3f,
+    0x3f, 0xf9, 0xfa, 0xfb, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x63, 0x4c, 0x3f, 0x2d, 0x7c, 0x59, 0x3f, 0x3f,
+    0x7c, 0x3c, 0x5e, 0x3e, 0x76, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1200, 0x1200, 0x0400, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x0500, 0x0600, 0x0700,
+    0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x0d00, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x0e00, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x0f00, 0x1200, 0x1200, 0x1000, 0x1100
+};
+
+const struct sbcs_table cptable_1006 =
+{
+    { 1006, 1, 0x003f, 0x003f, "IBM Arabic" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_10079.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_10079.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_10079.c	(revision 16410)
@@ -0,0 +1,684 @@
+/* code page 10079 (Mac Icelandic) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/MAC/ICELAND.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1,
+    0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8,
+    0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3,
+    0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc,
+    0x00dd, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df,
+    0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8,
+    0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211,
+    0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x2126, 0x00e6, 0x00f8,
+    0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab,
+    0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153,
+    0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca,
+    0x00ff, 0x0178, 0x2044, 0x00a4, 0x00d0, 0x00f0, 0x00de, 0x00fe,
+    0x00fd, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1,
+    0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4,
+    0x003f, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc,
+    0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xca, 0xc1, 0xa2, 0xa3, 0xdb, 0xb4, 0x7c, 0xa4,
+    0xac, 0xa9, 0xbb, 0xc7, 0xc2, 0x2d, 0xa8, 0xf8,
+    0xa1, 0xb1, 0x32, 0x33, 0xab, 0xb5, 0xa6, 0xe1,
+    0xfc, 0x31, 0xbc, 0xc8, 0x3f, 0x3f, 0x3f, 0xc0,
+    0xcb, 0xe7, 0xe5, 0xcc, 0x80, 0x81, 0xae, 0x82,
+    0xe9, 0x83, 0xe6, 0xe8, 0xed, 0xea, 0xeb, 0xec,
+    0xdc, 0x84, 0xf1, 0xee, 0xef, 0xcd, 0x85, 0x78,
+    0xaf, 0xf4, 0xf2, 0xf3, 0x86, 0xa0, 0xde, 0xa7,
+    0x88, 0x87, 0x89, 0x8b, 0x8a, 0x8c, 0xbe, 0x8d,
+    0x8f, 0x8e, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95,
+    0xdd, 0x96, 0x98, 0x97, 0x99, 0x9b, 0x9a, 0xd6,
+    0xbf, 0x9d, 0x9c, 0x9e, 0x9f, 0xe0, 0xdf, 0xd8,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0xdc, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0xf5, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0xce, 0xcf, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0xd9, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xdc, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0xc4, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x86, 0x9f, 0x86,
+    0x9f, 0x86, 0x9f, 0x86, 0x9f, 0x3f, 0x80, 0x8a,
+    0x41, 0x61, 0xae, 0xbe, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x81, 0x8c, 0xae, 0xbe, 0xaf, 0xbf,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x85, 0x9a, 0xcd, 0x9b, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0xab, 0xfd, 0xd4, 0xd5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0xf6, 0xff,
+    0x27, 0xf8, 0xab, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf9, 0xfa, 0xfb, 0xfe, 0xf7, 0xfd, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0xab, 0xf6, 0xf7, 0xf8, 0xf8, 0xf9, 0xfa,
+    0xac, 0x3f, 0xfb, 0xfd, 0xff, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xfc,
+    0xfe, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0xab, 0x3f, 0x3f, 0xac, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xab, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xab, 0xac, 0x41, 0xe1,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xa7, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb5, 0x3f, 0x3f, 0x3f,
+    0xb9, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa7, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0xb9, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0xae, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xa7, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xa7, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0xdd, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x82, 0x8d, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0xec, 0x95,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0xcd, 0x9b, 0xcd, 0x9b,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0xe5, 0x89, 0xe5, 0x89,
+    0xe5, 0x89, 0xe5, 0x89, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0xe6, 0x90,
+    0xe6, 0x90, 0xe6, 0x90, 0xe6, 0x90, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0xef, 0x99, 0xef, 0x99, 0xef, 0x99, 0xef, 0x99,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xac, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0xac, 0xac, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0xab, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0xd0, 0xd1, 0xd0, 0x3f, 0x5f,
+    0xd4, 0xd5, 0xe2, 0xd4, 0xd2, 0xd3, 0xe3, 0x3f,
+    0x3f, 0x3f, 0xa5, 0x3f, 0x2e, 0x3f, 0xc9, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0xe4, 0x3f, 0xab, 0xfd, 0x3f, 0xd4, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0xf8, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xda, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xfb, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa2, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xaa, 0x3f, 0x5a, 0x3f, 0xbd, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x81, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0xb9, 0x3f, 0x3f, 0x3f,
+    0xb7, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0xf6, 0x3e, 0xff, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0xb6, 0x3f, 0x3f, 0xaf, 0xc6, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb8,
+    0x3f, 0xb7, 0x2d, 0xb1, 0x3f, 0xda, 0x5c, 0x2a,
+    0xfb, 0xa5, 0xc3, 0x3f, 0x3f, 0x3f, 0xb0, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0xba, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc5, 0xc5, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xad, 0x3d, 0x3d, 0x3d, 0xb2, 0xb3, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xc7, 0xc8, 0x3f, 0x3f, 0x3c, 0x3e,
+    0xb2, 0xb3, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xe1, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2b, 0x2b, 0x2b, 0x2b,
+    0xc2, 0xc2, 0xc2, 0xc2, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0xc2, 0xc2, 0xc2,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xd7, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0xc7, 0xc8, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0xd2, 0xd3, 0xe3,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xf8, 0xf8, 0xf8, 0xf8, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0xd1, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa2, 0xa3, 0xc2, 0xf8, 0x7c, 0xb4, 0x3f, 0x3f,
+    0x7c, 0x3c, 0xf6, 0x3e, 0xff, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_10079 =
+{
+    { 10079, 1, 0x003f, 0x003f, "Mac Icelandic" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_10081.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_10081.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_10081.c	(revision 16410)
@@ -0,0 +1,684 @@
+/* code page 10081 (Mac Turkish) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/MAC/TURKISH.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1,
+    0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8,
+    0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3,
+    0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc,
+    0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df,
+    0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8,
+    0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211,
+    0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x2126, 0x00e6, 0x00f8,
+    0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab,
+    0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153,
+    0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca,
+    0x00ff, 0x0178, 0x011e, 0x011f, 0x0130, 0x0131, 0x015e, 0x015f,
+    0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1,
+    0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4,
+    0x003f, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x003f, 0x02c6, 0x02dc,
+    0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xca, 0xc1, 0xa2, 0xa3, 0x3f, 0xb4, 0x7c, 0xa4,
+    0xac, 0xa9, 0xbb, 0xc7, 0xc2, 0x2d, 0xa8, 0xf8,
+    0xa1, 0xb1, 0x32, 0x33, 0xab, 0xb5, 0xa6, 0xe1,
+    0xfc, 0x31, 0xbc, 0xc8, 0x3f, 0x3f, 0x3f, 0xc0,
+    0xcb, 0xe7, 0xe5, 0xcc, 0x80, 0x81, 0xae, 0x82,
+    0xe9, 0x83, 0xe6, 0xe8, 0xed, 0xea, 0xeb, 0xec,
+    0x44, 0x84, 0xf1, 0xee, 0xef, 0xcd, 0x85, 0x78,
+    0xaf, 0xf4, 0xf2, 0xf3, 0x86, 0x59, 0x3f, 0xa7,
+    0x88, 0x87, 0x89, 0x8b, 0x8a, 0x8c, 0xbe, 0x8d,
+    0x8f, 0x8e, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95,
+    0x64, 0x96, 0x98, 0x97, 0x99, 0x9b, 0x9a, 0xd6,
+    0xbf, 0x9d, 0x9c, 0x9e, 0x9f, 0x79, 0x3f, 0xd8,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0xda, 0xdb,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0xdc, 0xdd, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0xce, 0xcf, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0xde, 0xdf,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0xd9, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0xc4, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x86, 0x9f, 0x86,
+    0x9f, 0x86, 0x9f, 0x86, 0x9f, 0x3f, 0x80, 0x8a,
+    0x41, 0x61, 0xae, 0xbe, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x81, 0x8c, 0xae, 0xbe, 0xaf, 0xbf,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x85, 0x9a, 0xcd, 0x9b, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0xab, 0xfd, 0xd4, 0xd5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0xf6, 0xff,
+    0x27, 0xf8, 0xab, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf9, 0xfa, 0xfb, 0xfe, 0xf7, 0xfd, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0xab, 0xf6, 0xf7, 0xf8, 0xf8, 0xf9, 0xfa,
+    0xac, 0x3f, 0xfb, 0xfd, 0xff, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xfc,
+    0xfe, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0xab, 0x3f, 0x3f, 0xac, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xab, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xab, 0xac, 0x41, 0xe1,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xa7, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb5, 0x3f, 0x3f, 0x3f,
+    0xb9, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa7, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0xb9, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0xae, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xa7, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xa7, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x82, 0x8d, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0xec, 0x95,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0xcd, 0x9b, 0xcd, 0x9b,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0xe5, 0x89, 0xe5, 0x89,
+    0xe5, 0x89, 0xe5, 0x89, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0xe6, 0x90,
+    0xe6, 0x90, 0xe6, 0x90, 0xe6, 0x90, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0xef, 0x99, 0xef, 0x99, 0xef, 0x99, 0xef, 0x99,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xac, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0xac, 0xac, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0xab, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0xd0, 0xd1, 0xd0, 0x3f, 0x5f,
+    0xd4, 0xd5, 0xe2, 0xd4, 0xd2, 0xd3, 0xe3, 0x3f,
+    0xa0, 0xe0, 0xa5, 0x3f, 0x2e, 0x3f, 0xc9, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0xe4, 0x3f, 0xab, 0xfd, 0x3f, 0xd4, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0xf8, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xfb, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa2, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xaa, 0x3f, 0x5a, 0x3f, 0xbd, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x81, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0xb9, 0x3f, 0x3f, 0x3f,
+    0xb7, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0xf6, 0x3e, 0xff, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0xb6, 0x3f, 0x3f, 0xaf, 0xc6, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb8,
+    0x3f, 0xb7, 0x2d, 0xb1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xfb, 0xa5, 0xc3, 0x3f, 0x3f, 0x3f, 0xb0, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0xba, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc5, 0xc5, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xad, 0x3d, 0x3d, 0x3d, 0xb2, 0xb3, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xc7, 0xc8, 0x3f, 0x3f, 0x3c, 0x3e,
+    0xb2, 0xb3, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xe1, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2b, 0x2b, 0x2b, 0x2b,
+    0xc2, 0xc2, 0xc2, 0xc2, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0xc2, 0xc2, 0xc2,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xd7, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0xc7, 0xc8, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0xd2, 0xd3, 0xe3,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xf8, 0xf8, 0xf8, 0xf8, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0xd1, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa2, 0xa3, 0xc2, 0xf8, 0x7c, 0xb4, 0x3f, 0x3f,
+    0x7c, 0x3c, 0xf6, 0x3e, 0xff, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_10081 =
+{
+    { 10081, 1, 0x003f, 0x003f, "Mac Turkish" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1026.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1026.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1026.c	(revision 16410)
@@ -0,0 +1,684 @@
+/* code page 1026 (IBM EBCDIC Latin 5 Turkish) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/EBCDIC/CP1026.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+    0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+    0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+    0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+    0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5,
+    0x007b, 0x00f1, 0x00c7, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+    0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+    0x00ec, 0x00df, 0x011e, 0x0130, 0x002a, 0x0029, 0x003b, 0x005e,
+    0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5,
+    0x005b, 0x00d1, 0x015f, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+    0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+    0x00cc, 0x0131, 0x003a, 0x00d6, 0x015e, 0x0027, 0x003d, 0x00dc,
+    0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x00ab, 0x00bb, 0x007d, 0x0060, 0x00a6, 0x00b1,
+    0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+    0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4,
+    0x00b5, 0x00f6, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+    0x0079, 0x007a, 0x00a1, 0x00bf, 0x005d, 0x0024, 0x0040, 0x00ae,
+    0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc,
+    0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7,
+    0x00e7, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x00ad, 0x00f4, 0x007e, 0x00f2, 0x00f3, 0x00f5,
+    0x011f, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+    0x0051, 0x0052, 0x00b9, 0x00fb, 0x005c, 0x00f9, 0x00fa, 0x00ff,
+    0x00fc, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+    0x0059, 0x005a, 0x00b2, 0x00d4, 0x0023, 0x00d2, 0x00d3, 0x00d5,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x00b3, 0x00db, 0x0022, 0x00d9, 0x00da, 0x009f
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
+    0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26,
+    0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x40, 0x4f, 0xfc, 0xec, 0xad, 0x6c, 0x50, 0x7d,
+    0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
+    0xae, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
+    0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
+    0xe7, 0xe8, 0xe9, 0x68, 0xdc, 0xac, 0x5f, 0x6d,
+    0x8d, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
+    0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
+    0xa7, 0xa8, 0xa9, 0x48, 0xbb, 0x8c, 0xcc, 0x07,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b,
+    0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08,
+    0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff,
+    0x41, 0xaa, 0xb0, 0xb1, 0x9f, 0xb2, 0x8e, 0xb5,
+    0xbd, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xbc,
+    0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3,
+    0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab,
+    0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x4a,
+    0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77,
+    0xc4, 0x69, 0xed, 0xee, 0xeb, 0xef, 0x7b, 0xbf,
+    0x80, 0xfd, 0xfe, 0xfb, 0x7f, 0xe8, 0x3f, 0x59,
+    0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0xc0,
+    0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57,
+    0x84, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xa1, 0xe1,
+    0x70, 0xdd, 0xde, 0xdb, 0xe0, 0xa8, 0x3f, 0xdf,
+    /* 0x0100 .. 0x01ff */
+    0xc1, 0x81, 0xc1, 0x81, 0xc1, 0x81, 0xc3, 0x83,
+    0xc3, 0x83, 0xc3, 0x83, 0xc3, 0x83, 0xc4, 0x84,
+    0xc4, 0x84, 0xc5, 0x85, 0xc5, 0x85, 0xc5, 0x85,
+    0xc5, 0x85, 0xc5, 0x85, 0xc7, 0x87, 0x5a, 0xd0,
+    0xc7, 0x87, 0xc7, 0x87, 0xc8, 0x88, 0xc8, 0x88,
+    0xc9, 0x89, 0xc9, 0x89, 0xc9, 0x89, 0xc9, 0x89,
+    0x5b, 0x79, 0x3f, 0x3f, 0xd1, 0x91, 0xd2, 0x92,
+    0x3f, 0xd3, 0x93, 0xd3, 0x93, 0xd3, 0x93, 0x3f,
+    0x3f, 0xd3, 0x93, 0xd5, 0x95, 0xd5, 0x95, 0xd5,
+    0x95, 0x3f, 0x3f, 0x3f, 0xd6, 0x96, 0xd6, 0x96,
+    0xd6, 0x96, 0xd6, 0x96, 0xd9, 0x99, 0xd9, 0x99,
+    0xd9, 0x99, 0xe2, 0xa2, 0xe2, 0xa2, 0x7c, 0x6a,
+    0xe2, 0xa2, 0xe3, 0xa3, 0xe3, 0xa3, 0xe3, 0xa3,
+    0xe4, 0xa4, 0xe4, 0xa4, 0xe4, 0xa4, 0xe4, 0xa4,
+    0xe4, 0xa4, 0xe4, 0xa4, 0xe6, 0xa6, 0xe8, 0xa8,
+    0xe8, 0xe9, 0xa9, 0xe9, 0xa9, 0xe9, 0xa9, 0xa2,
+    0x82, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xc4, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc5, 0xc6, 0x86, 0x3f, 0x3f, 0x3f, 0x3f, 0xc9,
+    0x3f, 0x3f, 0x93, 0x3f, 0x3f, 0x3f, 0x3f, 0xd6,
+    0xd6, 0x96, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f, 0xe3, 0xe4,
+    0xa4, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xa9, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xbb, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xc1, 0x81, 0xc9,
+    0x89, 0xd6, 0x96, 0xe4, 0xa4, 0x7f, 0xe0, 0x7f,
+    0xe0, 0x7f, 0xe0, 0x7f, 0xe0, 0x3f, 0x63, 0x43,
+    0xc1, 0x81, 0x9e, 0x9c, 0xc7, 0x87, 0xc7, 0x87,
+    0xd2, 0x92, 0xd6, 0x96, 0xd6, 0x96, 0x3f, 0x3f,
+    0x91, 0x3f, 0x3f, 0x3f, 0xc7, 0x87, 0x3f, 0x3f,
+    0xd5, 0x95, 0x67, 0x47, 0x9e, 0x9c, 0x80, 0x70,
+    /* 0x0200 .. 0x02ff */
+    0xc1, 0x81, 0xc1, 0x81, 0xc5, 0x85, 0xc5, 0x85,
+    0xc9, 0x89, 0xc9, 0x89, 0xd6, 0x96, 0xd6, 0x96,
+    0xd9, 0x99, 0xd9, 0x99, 0xe4, 0xa4, 0xe4, 0xa4,
+    0xe2, 0xa2, 0xe3, 0xa3, 0x3f, 0x3f, 0xc8, 0x88,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xc1, 0x81,
+    0xc5, 0x85, 0x7b, 0xa1, 0xef, 0xcf, 0xd6, 0x96,
+    0xd6, 0x96, 0xe8, 0xa8, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x87, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x88, 0x3f, 0x91, 0x99, 0x3f, 0x3f, 0x3f, 0xa6,
+    0xa8, 0xbe, 0xfc, 0x8d, 0x7d, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5f, 0x3f, 0x5f, 0xa5,
+    0x7d, 0xbc, 0xbe, 0x8d, 0x3f, 0x6d, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x90, 0x3f, 0xcc, 0xfc, 0x3f, 0x3f,
+    0x3f, 0x93, 0xa2, 0xa7, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x8d, 0xbe, 0x5f, 0xcc, 0xbc, 0xbc, 0x3f, 0x3f,
+    0xbd, 0x3f, 0x90, 0xfc, 0xa5, 0x3f, 0xfc, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x9d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6d, 0x6d, 0x6d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x8d, 0xbe, 0x3f, 0x3f, 0xbd, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xbe, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xbe, 0xbd, 0xc1, 0xb3,
+    0xc5, 0xc8, 0xc9, 0x3f, 0xd6, 0x3f, 0xe8, 0x3f,
+    0x3f, 0xc1, 0xc2, 0x3f, 0x3f, 0xc5, 0xe9, 0xc8,
+    0x3f, 0xc9, 0xd2, 0x3f, 0xd4, 0xd5, 0x3f, 0xd6,
+    0x3f, 0xd7, 0x3f, 0x3f, 0xe3, 0xe8, 0x3f, 0xe7,
+    0x3f, 0x3f, 0xc9, 0xe8, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x59, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xa0, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x3f, 0xe8, 0xe8, 0xe8, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xc1, 0x9e, 0xc2, 0x3f,
+    0xc4, 0xc5, 0x3f, 0xc7, 0xc8, 0xc9, 0xd1, 0xd2,
+    0xd3, 0xd4, 0xd5, 0x3f, 0xd6, 0x3f, 0xd7, 0xd9,
+    0xe3, 0xe4, 0xe6, 0x81, 0x3f, 0x3f, 0x3f, 0x82,
+    0x84, 0x85, 0x3f, 0x3f, 0x3f, 0x87, 0x3f, 0x92,
+    0x94, 0x3f, 0x96, 0x3f, 0x3f, 0x3f, 0x97, 0xa3,
+    0xa4, 0x3f, 0x3f, 0xa5, 0x3f, 0x59, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x89, 0x99, 0xa4, 0xa5, 0x59, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x83, 0x3f, 0x84, 0x3f,
+    0x86, 0x3f, 0x87, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0xa9, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0xc1, 0x81, 0xc2, 0x82, 0xc2, 0x82, 0xc2, 0x82,
+    0x4a, 0xc0, 0xc4, 0x84, 0xc4, 0x84, 0xc4, 0x84,
+    0xc4, 0x84, 0xc4, 0x84, 0xc5, 0x85, 0xc5, 0x85,
+    0xc5, 0x85, 0xc5, 0x85, 0xc5, 0x85, 0xc6, 0x86,
+    0xc7, 0x87, 0xc8, 0x88, 0xc8, 0x88, 0xc8, 0x88,
+    0xc8, 0x88, 0xc8, 0x88, 0xc9, 0x89, 0x77, 0x57,
+    0xd2, 0x92, 0xd2, 0x92, 0xd2, 0x92, 0xd3, 0x93,
+    0xd3, 0x93, 0xd3, 0x93, 0xd3, 0x93, 0xd4, 0x94,
+    0xd4, 0x94, 0xd4, 0x94, 0xd5, 0x95, 0xd5, 0x95,
+    0xd5, 0x95, 0xd5, 0x95, 0xef, 0xcf, 0xef, 0xcf,
+    0xd6, 0x96, 0xd6, 0x96, 0xd7, 0x97, 0xd7, 0x97,
+    0xd9, 0x99, 0xd9, 0x99, 0xd9, 0x99, 0xd9, 0x99,
+    0xe2, 0xa2, 0xe2, 0xa2, 0xe2, 0xa2, 0xe2, 0xa2,
+    0xe2, 0xa2, 0xe3, 0xa3, 0xe3, 0xa3, 0xe3, 0xa3,
+    0xe3, 0xa3, 0xe4, 0xa4, 0xe4, 0xa4, 0xe4, 0xa4,
+    0xe4, 0xa4, 0xe4, 0xa4, 0xe5, 0xa5, 0xe5, 0xa5,
+    0xe6, 0xa6, 0xe6, 0xa6, 0xe6, 0xa6, 0xe6, 0xa6,
+    0xe6, 0xa6, 0xe7, 0xa7, 0xe7, 0xa7, 0xe8, 0xa8,
+    0xe9, 0xa9, 0xe9, 0xa9, 0xe9, 0xa9, 0x88, 0xa3,
+    0xa6, 0xa8, 0x3f, 0xa2, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc1, 0x81, 0xc1, 0x81, 0x62, 0x42, 0x62, 0x42,
+    0x62, 0x42, 0x62, 0x42, 0xc1, 0x81, 0xc1, 0x81,
+    0xc1, 0x81, 0xc1, 0x81, 0xc1, 0x81, 0xc1, 0x81,
+    0xc5, 0x85, 0xc5, 0x85, 0xc5, 0x85, 0x72, 0x52,
+    0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0xc5, 0x85,
+    0xc9, 0x89, 0xc9, 0x89, 0xd6, 0x96, 0xd6, 0x96,
+    0xeb, 0xcb, 0xeb, 0xcb, 0xeb, 0xcb, 0xeb, 0xcb,
+    0xd6, 0x96, 0xd6, 0x96, 0xd6, 0x96, 0xd6, 0x96,
+    0xd6, 0x96, 0xd6, 0x96, 0xe4, 0xa4, 0xe4, 0xa4,
+    0xe4, 0xa4, 0xe4, 0xa4, 0xe4, 0xa4, 0xe4, 0xa4,
+    0xe4, 0xa4, 0xe8, 0xa8, 0xe8, 0xa8, 0xe8, 0xa8,
+    0xe8, 0xa8, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xe8, 0x3f, 0xe8, 0x3f, 0xe8, 0x3f, 0xe8,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xbd, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc5, 0xc5, 0xc8, 0xc8, 0xc8, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc9, 0xc9, 0xc9, 0xc9, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe8, 0xe8, 0xe8, 0xe8, 0xd7, 0xbd, 0xbd, 0x8d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xd6, 0xd6, 0x3f, 0x3f, 0x3f, 0xbe, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
+    0x40, 0x40, 0x40, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x60, 0x3f, 0x60, 0x60, 0x60, 0x3f, 0x6d,
+    0x8d, 0x7d, 0x6b, 0x8d, 0xfc, 0xfc, 0x6b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x4b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x40,
+    0x3f, 0x3f, 0xbe, 0xfc, 0x3f, 0x8d, 0x3f, 0x3f,
+    0x3f, 0x4c, 0x6e, 0x3f, 0x4f, 0x3f, 0xbc, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x61, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x40,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x90, 0x89, 0x3f, 0x3f, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0x4e, 0x60, 0x7e, 0x4d, 0x5d, 0x95,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0x4e, 0x60, 0x7e, 0x4d, 0x5d, 0x3f,
+    0x81, 0x85, 0x96, 0xa7, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xb0, 0x3f, 0x3f, 0xb1, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0xc3, 0x3f, 0x3f, 0x3f, 0x3f, 0xc5,
+    0x3f, 0x3f, 0x87, 0xc8, 0xc8, 0xc8, 0x88, 0x88,
+    0xc9, 0xc9, 0xd3, 0x93, 0x3f, 0xd5, 0x3f, 0x3f,
+    0xd7, 0xd7, 0xd8, 0xd9, 0xd9, 0xd9, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xe9, 0x3f, 0x3f, 0x3f,
+    0xe9, 0x3f, 0xd2, 0x67, 0xc2, 0xc3, 0x85, 0x85,
+    0xc5, 0xc6, 0x3f, 0xd4, 0x96, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x89, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xc4, 0x84, 0x85,
+    0x89, 0x91, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc9, 0x3f, 0x3f, 0x3f, 0xe5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xe7, 0x3f, 0x3f, 0xd3, 0xc3, 0xc4, 0xd4,
+    0x89, 0x3f, 0x3f, 0x3f, 0xa5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa7, 0x3f, 0x3f, 0x93, 0x83, 0x84, 0x94,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4c, 0x5f, 0x6e, 0xa5, 0x60, 0xbb, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x4c, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x60, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x80, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x60, 0x8f, 0x3f, 0x61, 0xdc, 0x5c,
+    0x90, 0x3f, 0xe5, 0x3f, 0x3f, 0x3f, 0x3f, 0xd3,
+    0x3f, 0x3f, 0x3f, 0xbb, 0xbb, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x95, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xcc, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xcc, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xcc, 0xcc, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x8a, 0x8b, 0x3f, 0x3f, 0x4c, 0x6e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb3, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x4c, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
+    0xf9, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xc1, 0xc2,
+    0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xd1,
+    0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9,
+    0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
+    0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88,
+    0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+    0xa8, 0xa9, 0xf0, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x60, 0x60, 0xbb, 0xbb, 0x60, 0x60, 0x8e, 0x8e,
+    0x60, 0x60, 0x8e, 0x8e, 0x4e, 0x4e, 0x4e, 0x4e,
+    0xba, 0xba, 0xba, 0xba, 0xd3, 0xd3, 0xd3, 0xd3,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0xe3, 0xe3, 0xe3, 0xe3,
+    0xe3, 0xe3, 0xe3, 0xe3, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x60, 0x60, 0x8e, 0x8e,
+    0x7e, 0xbb, 0x4e, 0x4e, 0x4e, 0xba, 0xba, 0xba,
+    0xd3, 0xd3, 0xd3, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0xe3, 0xe3, 0xe3, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x61, 0xdc, 0xe7, 0x60, 0xbb, 0x60, 0xbb,
+    0x60, 0xbb, 0x60, 0xbb, 0x60, 0xbb, 0x60, 0xbb,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0xd6, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xd6,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x40, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4c, 0x6e, 0x8a, 0x8b, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x68, 0xac, 0x3f, 0xfc, 0xfc, 0x6b,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x4e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xbc, 0xbc, 0xbc, 0xbc, 0x6d, 0x6d, 0x6d,
+    0x6b, 0x3f, 0x4b, 0x3f, 0x5e, 0x7a, 0x6f, 0x4f,
+    0x60, 0x4d, 0x5d, 0x48, 0x8c, 0x3f, 0x3f, 0xec,
+    0x50, 0x5c, 0x4e, 0x60, 0x4c, 0x6e, 0x7e, 0x3f,
+    0xdc, 0xad, 0x6c, 0xae, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x4f, 0xfc, 0xec, 0xad, 0x6c, 0x50, 0x7d,
+    0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
+    0xae, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
+    0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
+    0xe7, 0xe8, 0xe9, 0x68, 0xdc, 0xac, 0x5f, 0x6d,
+    0x8d, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
+    0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
+    0xa7, 0xa8, 0xa9, 0x48, 0xbb, 0x8c, 0xcc, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb0, 0xb1, 0xba, 0xbc, 0x8e, 0xb2, 0x3f, 0x3f,
+    0xbb, 0x4c, 0x5f, 0x6e, 0xa5, 0x3f, 0xd6, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_1026 =
+{
+    { 1026, 1, 0x003f, 0x003f, "IBM EBCDIC Latin 5 Turkish" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1250.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1250.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1250.c	(revision 16410)
@@ -0,0 +1,684 @@
+/* code page 1250 (ANSI Eastern Europe) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1250.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x20ac, 0x0081, 0x201a, 0x0083, 0x201e, 0x2026, 0x2020, 0x2021,
+    0x0088, 0x2030, 0x0160, 0x2039, 0x015a, 0x0164, 0x017d, 0x0179,
+    0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+    0x0098, 0x2122, 0x0161, 0x203a, 0x015b, 0x0165, 0x017e, 0x017a,
+    0x00a0, 0x02c7, 0x02d8, 0x0141, 0x00a4, 0x0104, 0x00a6, 0x00a7,
+    0x00a8, 0x00a9, 0x015e, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x017b,
+    0x00b0, 0x00b1, 0x02db, 0x0142, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+    0x00b8, 0x0105, 0x015f, 0x00bb, 0x013d, 0x02dd, 0x013e, 0x017c,
+    0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7,
+    0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e,
+    0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7,
+    0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df,
+    0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7,
+    0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f,
+    0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7,
+    0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x81, 0x3f, 0x83, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x88, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x90, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x98, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa0, 0x21, 0x63, 0x4c, 0xa4, 0x59, 0xa6, 0xa7,
+    0xa8, 0xa9, 0x61, 0xab, 0xac, 0xad, 0xae, 0x97,
+    0xb0, 0xb1, 0x32, 0x33, 0xb4, 0xb5, 0xb6, 0xb7,
+    0xb8, 0x31, 0x6f, 0xbb, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0xc1, 0xc2, 0x41, 0xc4, 0x41, 0x41, 0xc7,
+    0x45, 0xc9, 0x45, 0xcb, 0x49, 0xcd, 0xce, 0x49,
+    0xd0, 0x4e, 0x4f, 0xd3, 0xd4, 0x4f, 0xd6, 0xd7,
+    0x4f, 0x55, 0xda, 0x55, 0xdc, 0xdd, 0x3f, 0xdf,
+    0x61, 0xe1, 0xe2, 0x61, 0xe4, 0x61, 0x61, 0xe7,
+    0x65, 0xe9, 0x65, 0xeb, 0x69, 0xed, 0xee, 0x69,
+    0x64, 0x6e, 0x6f, 0xf3, 0xf4, 0x6f, 0xf6, 0xf7,
+    0x6f, 0x75, 0xfa, 0x75, 0xfc, 0xfd, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0xc3, 0xe3, 0xa5, 0xb9, 0xc6, 0xe6,
+    0x43, 0x63, 0x43, 0x63, 0xc8, 0xe8, 0xcf, 0xef,
+    0xd0, 0xf0, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0xca, 0xea, 0xcc, 0xec, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0xc5, 0xe5, 0x4c, 0x6c, 0xbc, 0xbe, 0x3f,
+    0x3f, 0xa3, 0xb3, 0xd1, 0xf1, 0x4e, 0x6e, 0xd2,
+    0xf2, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0xd5, 0xf5, 0x4f, 0x6f, 0xc0, 0xe0, 0x52, 0x72,
+    0xd8, 0xf8, 0x8c, 0x9c, 0x53, 0x73, 0xaa, 0xba,
+    0x8a, 0x9a, 0xde, 0xfe, 0x8d, 0x9d, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0xd9, 0xf9,
+    0xdb, 0xfb, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x8f, 0x9f, 0xaf, 0xbf, 0x8e, 0x9e, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xd0, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0xdc, 0xfc, 0xdc,
+    0xfc, 0xdc, 0xfc, 0xdc, 0xfc, 0x3f, 0xc4, 0xe4,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0xd6, 0xf6, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0xb4, 0xbd, 0x91, 0x92, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0xa1,
+    0x27, 0x97, 0xb4, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa2, 0xff, 0xb0, 0xb2, 0x7e, 0xbd, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0xb4, 0x5e, 0x7e, 0x97, 0x97, 0xa2, 0xff,
+    0xa8, 0x3f, 0xb0, 0xbd, 0xa1, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb8,
+    0xb2, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0xb4, 0x3f, 0x3f, 0xa8, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb4, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb4, 0xa8, 0x41, 0xb7,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xdf, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xdf, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xdf, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xdf, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0xc7, 0xe7, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x8c, 0x9c, 0x8a, 0x9a,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0xc2, 0xe2, 0xc2, 0xe2,
+    0xc2, 0xe2, 0xc2, 0xe2, 0x41, 0x61, 0xc3, 0xe3,
+    0xc3, 0xe3, 0xc3, 0xe3, 0xc3, 0xe3, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0xd4, 0xf4, 0xd4, 0xf4, 0xd4, 0xf4, 0xd4, 0xf4,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa8, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0xa8, 0xa8, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0xb4, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x96, 0x97, 0x96, 0x3f, 0x5f,
+    0x91, 0x92, 0x82, 0x91, 0x93, 0x94, 0x84, 0x3f,
+    0x86, 0x87, 0x95, 0x3f, 0x2e, 0x3f, 0x85, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x89, 0x3f, 0xb4, 0xbd, 0x3f, 0x91, 0x3f, 0x3f,
+    0x3f, 0x8b, 0x9b, 0x3f, 0x21, 0x3f, 0x97, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb0, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x63, 0x3f, 0x3f, 0x4c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x80, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x99, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x8b, 0x5e, 0x9b, 0xa1, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x8b, 0x9b, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xb1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xb0, 0x95, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xab, 0xbb, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb7, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x8b, 0x9b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x2d, 0x2d, 0xa6, 0xa6, 0x2b, 0x2b, 0x2b, 0x2b,
+    0xac, 0xac, 0xac, 0xac, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0xac, 0xac, 0xac,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x8b, 0x9b, 0xab, 0xbb, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x93, 0x94, 0x84,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x97, 0x97, 0x97, 0x97, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x97, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x63, 0x4c, 0xac, 0x97, 0xa6, 0x59, 0x3f, 0x3f,
+    0x7c, 0x8b, 0x5e, 0x9b, 0xa1, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_1250 =
+{
+    { 1250, 1, 0x003f, 0x003f, "ANSI Eastern Europe" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1251.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1251.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1251.c	(revision 16410)
@@ -0,0 +1,717 @@
+/* code page 1251 (ANSI Cyrillic) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1251.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0402, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021,
+    0x20ac, 0x2030, 0x0409, 0x2039, 0x040a, 0x040c, 0x040b, 0x040f,
+    0x0452, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+    0x0098, 0x2122, 0x0459, 0x203a, 0x045a, 0x045c, 0x045b, 0x045f,
+    0x00a0, 0x040e, 0x045e, 0x0408, 0x00a4, 0x0490, 0x00a6, 0x00a7,
+    0x0401, 0x00a9, 0x0404, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0407,
+    0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00b5, 0x00b6, 0x00b7,
+    0x0451, 0x2116, 0x0454, 0x00bb, 0x0458, 0x0405, 0x0455, 0x0457,
+    0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+    0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+    0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+    0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+    0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+    0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+    0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+    0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f
+};
+
+static const unsigned char uni2cp_low[4864] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x98, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa0, 0x21, 0x63, 0x4c, 0xa4, 0x59, 0xa6, 0xa7,
+    0x22, 0xa9, 0x61, 0xab, 0xac, 0xad, 0xae, 0x97,
+    0xb0, 0xb1, 0x32, 0x33, 0x27, 0xb5, 0xb6, 0xb7,
+    0x2c, 0x31, 0x6f, 0xbb, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43,
+    0x45, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0x4e, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x78,
+    0x4f, 0x55, 0x55, 0x55, 0x55, 0x59, 0x3f, 0x3f,
+    0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x63,
+    0x65, 0x65, 0x65, 0x65, 0x69, 0x69, 0x69, 0x69,
+    0x64, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x3f,
+    0x6f, 0x75, 0x75, 0x75, 0x75, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75, 0x55,
+    0x75, 0x55, 0x75, 0x55, 0x75, 0x3f, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0x91, 0x92, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0x97, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xb0, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0x97, 0x97, 0x3f, 0x3f,
+    0x22, 0x3f, 0xb0, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0x22, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x22, 0x41, 0xb7,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0400 .. 0x04ff */
+    0xc5, 0xa8, 0x80, 0x81, 0xaa, 0xbd, 0xb2, 0xaf,
+    0xa3, 0x8a, 0x8c, 0x8e, 0x8d, 0xc8, 0xa1, 0x8f,
+    0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+    0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+    0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
+    0xe5, 0xb8, 0x90, 0x83, 0xba, 0xbe, 0xb3, 0xbf,
+    0xbc, 0x9a, 0x9c, 0x9e, 0x9d, 0xe8, 0xa2, 0x9f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa5, 0xb4, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xc6, 0xe6, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc0, 0xe0, 0xc0, 0xe0, 0x3f, 0x3f, 0xc5, 0xe5,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xc6, 0xe6, 0xc7, 0xe7,
+    0x3f, 0x3f, 0xc8, 0xe8, 0xc8, 0xe8, 0xce, 0xee,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xdd, 0xfd, 0xd3, 0xf3,
+    0xd3, 0xf3, 0xd3, 0xf3, 0xd7, 0xf7, 0x3f, 0x3f,
+    0xdb, 0xfb, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xed, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x63, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x22, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0x22, 0x22, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x96, 0x97, 0x96, 0x3f, 0x5f,
+    0x91, 0x92, 0x82, 0x91, 0x93, 0x94, 0x84, 0x3f,
+    0x86, 0x87, 0x95, 0x3f, 0x2e, 0x3f, 0x85, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x89, 0x3f, 0x27, 0x22, 0x3f, 0x91, 0x3f, 0x3f,
+    0x3f, 0x8b, 0x9b, 0x3f, 0x21, 0x3f, 0x97, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb0, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x63, 0x3f, 0x3f, 0x4c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x88, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0xb9, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x99, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x8b, 0x5e, 0x9b, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x8b, 0x9b, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xb1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xb0, 0x95, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xab, 0xbb, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb7, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x8b, 0x9b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x2d, 0x2d, 0xa6, 0xa6, 0x2b, 0x2b, 0x2b, 0x2b,
+    0xac, 0xac, 0xac, 0xac, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0xac, 0xac, 0xac,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x8b, 0x9b, 0xab, 0xbb, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x93, 0x94, 0x84,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x97, 0x97, 0x97, 0x97, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x97, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x63, 0x4c, 0xac, 0x97, 0xa6, 0x59, 0x3f, 0x3f,
+    0x7c, 0x8b, 0x5e, 0x9b, 0x76, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x0400, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x0500, 0x0600, 0x0700,
+    0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x0d00, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x0e00, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x0f00, 0x1200, 0x1200, 0x1000, 0x1100
+};
+
+const struct sbcs_table cptable_1251 =
+{
+    { 1251, 1, 0x003f, 0x003f, "ANSI Cyrillic" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1252.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1252.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1252.c	(revision 16410)
@@ -0,0 +1,684 @@
+/* code page 1252 (ANSI Latin 1) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1252.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x20ac, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+    0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x017d, 0x008f,
+    0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+    0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x017e, 0x0178,
+    0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+    0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+    0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+    0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+    0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+    0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+    0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
+    0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+    0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+    0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x81, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x8d, 0x3f, 0x8f,
+    0x90, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x9d, 0x3f, 0x3f,
+    0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+    0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+    0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+    0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+    0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+    0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+    0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0xd0, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x8c, 0x9c, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x8a, 0x9a, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x9f, 0x5a, 0x7a, 0x5a, 0x7a, 0x8e, 0x9e, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xd0, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x83, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0xdc, 0xfc, 0xdc,
+    0xfc, 0xdc, 0xfc, 0xdc, 0xfc, 0x3f, 0xc4, 0xe4,
+    0x41, 0x61, 0xc6, 0xe6, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0xc5, 0xe5, 0xc6, 0xe6, 0xd8, 0xf8,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0xd6, 0xf6, 0xd5, 0xf5, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0xb4, 0x22, 0x91, 0x92, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x88, 0x76,
+    0x27, 0xaf, 0xb4, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xb0, 0x3f, 0x98, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0xb4, 0x88, 0x98, 0xaf, 0xaf, 0x3f, 0x3f,
+    0xa8, 0x3f, 0xb0, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb8,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0xb4, 0x3f, 0x3f, 0xa8, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb4, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb4, 0xa8, 0x41, 0xb7,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xdf, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xdf, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0xc6, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xdf, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xdf, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0xf0, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0xc7, 0xe7, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0xcf, 0xef,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0xd5, 0xf5, 0xd5, 0xf5,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x8a, 0x9a,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0xc2, 0xe2, 0xc2, 0xe2,
+    0xc2, 0xe2, 0xc2, 0xe2, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0xca, 0xea,
+    0xca, 0xea, 0xca, 0xea, 0xca, 0xea, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0xd4, 0xf4, 0xd4, 0xf4, 0xd4, 0xf4, 0xd4, 0xf4,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa8, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0xa8, 0xa8, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0xb4, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x96, 0x97, 0x96, 0x3f, 0x5f,
+    0x91, 0x92, 0x82, 0x91, 0x93, 0x94, 0x84, 0x3f,
+    0x86, 0x87, 0x95, 0x3f, 0x2e, 0x3f, 0x85, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x89, 0x3f, 0xb4, 0x22, 0x3f, 0x91, 0x3f, 0x3f,
+    0x3f, 0x8b, 0x9b, 0x3f, 0x21, 0x3f, 0xaf, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb0, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa2, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x80, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x99, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0xc5, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x8b, 0x88, 0x9b, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x8b, 0x9b, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xd8, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xb1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xb0, 0x95, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x98, 0x98, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xab, 0xbb, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb7, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x8b, 0x9b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x2d, 0x2d, 0xa6, 0xa6, 0x2b, 0x2b, 0x2b, 0x2b,
+    0xac, 0xac, 0xac, 0xac, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0xac, 0xac, 0xac,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x8b, 0x9b, 0xab, 0xbb, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x93, 0x94, 0x84,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xaf, 0xaf, 0xaf, 0xaf, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x97, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa2, 0xa3, 0xac, 0xaf, 0xa6, 0xa5, 0x3f, 0x3f,
+    0x7c, 0x8b, 0x88, 0x9b, 0x76, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_1252 =
+{
+    { 1252, 1, 0x003f, 0x003f, "ANSI Latin 1" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1253.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1253.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1253.c	(revision 16410)
@@ -0,0 +1,684 @@
+/* code page 1253 (ANSI Greek) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1253.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x20ac, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+    0x0088, 0x2030, 0x008a, 0x2039, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+    0x0098, 0x2122, 0x009a, 0x203a, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x0385, 0x0386, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+    0x00a8, 0x00a9, 0x003f, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x2015,
+    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x00b5, 0x00b6, 0x00b7,
+    0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f,
+    0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
+    0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f,
+    0x03a0, 0x03a1, 0x003f, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7,
+    0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af,
+    0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
+    0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
+    0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7,
+    0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0x003f
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x81, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x88, 0x3f, 0x8a, 0x3f, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x98, 0x3f, 0x9a, 0x3f, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0x21, 0x63, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+    0xa8, 0xa9, 0x61, 0xab, 0xac, 0xad, 0xae, 0x97,
+    0xb0, 0xb1, 0xb2, 0xb3, 0x27, 0xb5, 0xb6, 0xb7,
+    0x2c, 0x31, 0x6f, 0xbb, 0x3f, 0xbd, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43,
+    0x45, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0x4e, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x78,
+    0x4f, 0x55, 0x55, 0x55, 0x55, 0x59, 0x3f, 0xe2,
+    0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x63,
+    0x65, 0x65, 0x65, 0x65, 0x69, 0x69, 0x69, 0x69,
+    0x64, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x3f,
+    0x6f, 0x75, 0x75, 0x75, 0x75, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x83, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75, 0x55,
+    0x75, 0x55, 0x75, 0x55, 0x75, 0x3f, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0x91, 0x92, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0x97, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xb0, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0x97, 0x97, 0x3f, 0x3f,
+    0xa8, 0x3f, 0xb0, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0xa8, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb4, 0xa1, 0xa2, 0xb7,
+    0xb8, 0xb9, 0xba, 0x3f, 0xbc, 0x3f, 0xbe, 0xbf,
+    0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+    0xd0, 0xd1, 0x3f, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+    0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x3f,
+    0xe2, 0xe8, 0xd5, 0xd5, 0xd5, 0xf6, 0xf0, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xea, 0xf1, 0xf2, 0x3f, 0xc8, 0xe5, 0x3f, 0x3f,
+    0x3f, 0xd3, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xe2, 0xe3, 0xe4,
+    0xf6, 0xf7, 0x69, 0x72, 0x75, 0x76, 0xe2, 0xe3,
+    0xf1, 0xf6, 0xf7, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0xe8,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x63, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
+    0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0x3f, 0x3f,
+    0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0x3f, 0x3f,
+    0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
+    0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
+    0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9,
+    0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9,
+    0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0x3f, 0x3f,
+    0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x3f, 0x3f,
+    0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
+    0x3f, 0xd5, 0x3f, 0xd5, 0x3f, 0xd5, 0x3f, 0xd5,
+    0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
+    0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9,
+    0xe1, 0xdc, 0xe5, 0xdd, 0xe7, 0xde, 0xe9, 0xdf,
+    0xef, 0xfc, 0xf5, 0xfd, 0xf9, 0xfe, 0x3f, 0x3f,
+    0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
+    0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
+    0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
+    0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
+    0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9,
+    0xe1, 0xe1, 0xe1, 0xe1, 0xdc, 0x3f, 0xe1, 0xe1,
+    0xc1, 0xc1, 0xc1, 0xa2, 0xc1, 0x3f, 0xe9, 0x3f,
+    0x3f, 0xa8, 0xe7, 0xe7, 0xde, 0x3f, 0xe7, 0xe7,
+    0xc5, 0xb8, 0xc7, 0xb9, 0xc7, 0x3f, 0x3f, 0x3f,
+    0xe9, 0xe9, 0xfa, 0xc0, 0x3f, 0x3f, 0xe9, 0xfa,
+    0xc9, 0xc9, 0xc9, 0xba, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf5, 0xf5, 0xfb, 0xe0, 0xf1, 0xf1, 0xf5, 0xfb,
+    0xd5, 0xd5, 0xd5, 0xbe, 0xd1, 0xa8, 0xa1, 0x60,
+    0x3f, 0x3f, 0xf9, 0xf9, 0xfe, 0x3f, 0xf9, 0xf9,
+    0xcf, 0xbc, 0xd9, 0xbf, 0xd9, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x96, 0x97, 0xaf, 0x3f, 0x5f,
+    0x91, 0x92, 0x82, 0x91, 0x93, 0x94, 0x84, 0x3f,
+    0x86, 0x87, 0x95, 0x3f, 0x2e, 0x3f, 0x85, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x89, 0x3f, 0x27, 0x22, 0x3f, 0x91, 0x3f, 0x3f,
+    0x3f, 0x8b, 0x9b, 0x3f, 0x21, 0x3f, 0x97, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb0, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x63, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x80, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x99, 0x3f, 0x5a, 0x3f, 0xd9, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0xf0, 0xe3, 0xc3, 0xd0,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x8b, 0x5e, 0x9b, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x8b, 0x9b, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xb1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xb0, 0x95, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xab, 0xbb, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb7, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x8b, 0x9b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x2d, 0x2d, 0xa6, 0xa6, 0x2b, 0x2b, 0x2b, 0x2b,
+    0xac, 0xac, 0xac, 0xac, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0xac, 0xac, 0xac,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x8b, 0x9b, 0xab, 0xbb, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x93, 0x94, 0x84,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x97, 0x97, 0x97, 0x97, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x97, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x63, 0xa3, 0xac, 0x97, 0xa6, 0xa5, 0x3f, 0x3f,
+    0x7c, 0x8b, 0x5e, 0x9b, 0x76, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_1253 =
+{
+    { 1253, 1, 0x003f, 0x003f, "ANSI Greek" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1254.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1254.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1254.c	(revision 16410)
@@ -0,0 +1,684 @@
+/* code page 1254 (ANSI Turkish) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1254.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x20ac, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+    0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+    0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x009e, 0x0178,
+    0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+    0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+    0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+    0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+    0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+    0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+    0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df,
+    0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+    0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+    0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x81, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x8d, 0x8e, 0x8f,
+    0x90, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x9d, 0x9e, 0x3f,
+    0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+    0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+    0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+    0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+    0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+    0x44, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+    0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0x59, 0x3f, 0xdf,
+    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0x64, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x79, 0x3f, 0xff,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0xd0, 0xf0,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0xdd, 0xfd, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x8c, 0x9c, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0xde, 0xfe,
+    0x8a, 0x9a, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x9f, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x83, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0xdc, 0xfc, 0xdc,
+    0xfc, 0xdc, 0xfc, 0xdc, 0xfc, 0x3f, 0xc4, 0xe4,
+    0x41, 0x61, 0xc6, 0xe6, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0xc5, 0xe5, 0xc6, 0xe6, 0xd8, 0xf8,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0xd6, 0xf6, 0xd5, 0xf5, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0xb4, 0x22, 0x91, 0x92, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x88, 0x76,
+    0x27, 0xaf, 0xb4, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xb0, 0x3f, 0x98, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0xb4, 0x88, 0x98, 0xaf, 0xaf, 0x3f, 0x3f,
+    0xa8, 0x3f, 0xb0, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb8,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0xb4, 0x3f, 0x3f, 0xa8, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb4, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb4, 0xa8, 0x41, 0xb7,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xdf, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xdf, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0xc6, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xdf, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xdf, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0xc7, 0xe7, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0xcf, 0xef,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0xd5, 0xf5, 0xd5, 0xf5,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x8a, 0x9a,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0xc2, 0xe2, 0xc2, 0xe2,
+    0xc2, 0xe2, 0xc2, 0xe2, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0xca, 0xea,
+    0xca, 0xea, 0xca, 0xea, 0xca, 0xea, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0xd4, 0xf4, 0xd4, 0xf4, 0xd4, 0xf4, 0xd4, 0xf4,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa8, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0xa8, 0xa8, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0xb4, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x96, 0x97, 0x96, 0x3f, 0x5f,
+    0x91, 0x92, 0x82, 0x91, 0x93, 0x94, 0x84, 0x3f,
+    0x86, 0x87, 0x95, 0x3f, 0x2e, 0x3f, 0x85, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x89, 0x3f, 0xb4, 0x22, 0x3f, 0x91, 0x3f, 0x3f,
+    0x3f, 0x8b, 0x9b, 0x3f, 0x21, 0x3f, 0xaf, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb0, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa2, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x80, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x99, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0xc5, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x8b, 0x88, 0x9b, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x8b, 0x9b, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xd8, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xb1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xb0, 0x95, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x98, 0x98, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xab, 0xbb, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb7, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x8b, 0x9b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x2d, 0x2d, 0xa6, 0xa6, 0x2b, 0x2b, 0x2b, 0x2b,
+    0xac, 0xac, 0xac, 0xac, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0xac, 0xac, 0xac,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x8b, 0x9b, 0xab, 0xbb, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x93, 0x94, 0x84,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xaf, 0xaf, 0xaf, 0xaf, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x97, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa2, 0xa3, 0xac, 0xaf, 0xa6, 0xa5, 0x3f, 0x3f,
+    0x7c, 0x8b, 0x88, 0x9b, 0x76, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_1254 =
+{
+    { 1254, 1, 0x003f, 0x003f, "ANSI Turkish" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1255.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1255.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1255.c	(revision 16410)
@@ -0,0 +1,717 @@
+/* code page 1255 (ANSI Hebrew) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1255.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x20ac, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+    0x02c6, 0x2030, 0x008a, 0x2039, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+    0x02dc, 0x2122, 0x009a, 0x203a, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20aa, 0x00a5, 0x00a6, 0x00a7,
+    0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+    0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+    0x05b0, 0x05b1, 0x05b2, 0x05b3, 0x05b4, 0x05b5, 0x05b6, 0x05b7,
+    0x05b8, 0x05b9, 0x003f, 0x05bb, 0x05bc, 0x05bd, 0x05be, 0x05bf,
+    0x05c0, 0x05c1, 0x05c2, 0x05c3, 0x05f0, 0x05f1, 0x05f2, 0x05f3,
+    0x05f4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x00de, 0x00df,
+    0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
+    0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
+    0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
+    0x05e8, 0x05e9, 0x05ea, 0x003f, 0x003f, 0x200e, 0x200f, 0x003f
+};
+
+static const unsigned char uni2cp_low[4864] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x81, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x8a, 0x3f, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x9a, 0x3f, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0xa1, 0xa2, 0xa3, 0x3f, 0xa5, 0xa6, 0xa7,
+    0xa8, 0xa9, 0x61, 0xab, 0xac, 0xad, 0xae, 0xaf,
+    0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+    0xb8, 0xb9, 0x6f, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43,
+    0x45, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0x4e, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0xaa,
+    0x4f, 0x55, 0x55, 0x55, 0x55, 0x59, 0xde, 0xdf,
+    0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x63,
+    0x65, 0x65, 0x65, 0x65, 0x69, 0x69, 0x69, 0x69,
+    0x64, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0xba,
+    0x6f, 0x75, 0x75, 0x75, 0x75, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x83, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75, 0x55,
+    0x75, 0x55, 0x75, 0x55, 0x75, 0x3f, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0xb4, 0x22, 0x91, 0x92, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x88, 0x76,
+    0x27, 0xaf, 0xb4, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xb0, 0x3f, 0x98, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0xb4, 0x88, 0x98, 0xaf, 0xaf, 0x3f, 0x3f,
+    0xa8, 0x3f, 0xb0, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb8,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0xb4, 0x3f, 0x3f, 0xa8, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb4, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb4, 0xa8, 0x41, 0xb7,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0500 .. 0x05ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0x3f, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+    0xd0, 0xd1, 0xd2, 0xd3, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0xfa, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x63, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa8, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0xa8, 0xa8, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0xb4, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0xfd, 0xfe,
+    0x2d, 0x2d, 0x3f, 0x96, 0x97, 0x96, 0x3f, 0x5f,
+    0x91, 0x92, 0x82, 0x91, 0x93, 0x94, 0x84, 0x3f,
+    0x86, 0x87, 0x95, 0x3f, 0x2e, 0x3f, 0x85, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x89, 0x3f, 0xb4, 0x22, 0x3f, 0x91, 0x3f, 0x3f,
+    0x3f, 0x8b, 0x9b, 0x3f, 0x21, 0x3f, 0xaf, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb0, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa2, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xa4, 0x3f, 0x80, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x99, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0xe0, 0xe1, 0xe2,
+    0xe3, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x8b, 0x88, 0x9b, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x8b, 0x9b, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xb1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xb0, 0x95, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x98, 0x98, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xab, 0xbb, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb7, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x8b, 0x9b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x2d, 0x2d, 0xa6, 0xa6, 0x2b, 0x2b, 0x2b, 0x2b,
+    0xac, 0xac, 0xac, 0xac, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0xac, 0xac, 0xac,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x8b, 0x9b, 0xab, 0xbb, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x93, 0x94, 0x84,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xe9, 0x3f, 0xd6,
+    0xf2, 0xe0, 0xe3, 0xe4, 0xeb, 0xec, 0xed, 0xf8,
+    0xfa, 0x2b, 0xf9, 0xf9, 0xf9, 0xf9, 0xe0, 0xe0,
+    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0x3f,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0x3f, 0xee, 0x3f,
+    0xf0, 0xf1, 0x3f, 0xf3, 0xf4, 0x3f, 0xf6, 0xf7,
+    0xf8, 0xf9, 0xfa, 0xe5, 0xe1, 0xeb, 0xf4, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xaf, 0xaf, 0xaf, 0xaf, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x97, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa2, 0xa3, 0xac, 0xaf, 0xa6, 0xa5, 0x3f, 0x3f,
+    0x7c, 0x8b, 0x88, 0x9b, 0x76, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1200, 0x0400, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x0500, 0x0600, 0x0700,
+    0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x0d00, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x0e00, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x0f00, 0x1200, 0x1200, 0x1000, 0x1100
+};
+
+const struct sbcs_table cptable_1255 =
+{
+    { 1255, 1, 0x003f, 0x003f, "ANSI Hebrew" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1256.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1256.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1256.c	(revision 16410)
@@ -0,0 +1,717 @@
+/* code page 1256 (ANSI Arabic) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1256.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x20ac, 0x067e, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+    0x02c6, 0x2030, 0x0679, 0x2039, 0x0152, 0x0686, 0x0698, 0x0688,
+    0x06af, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+    0x06a9, 0x2122, 0x0691, 0x203a, 0x0153, 0x200c, 0x200d, 0x06ba,
+    0x00a0, 0x060c, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+    0x00a8, 0x00a9, 0x06be, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+    0x00b8, 0x00b9, 0x061b, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x061f,
+    0x06c1, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
+    0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f,
+    0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00d7,
+    0x0637, 0x0638, 0x0639, 0x063a, 0x0640, 0x0641, 0x0642, 0x0643,
+    0x00e0, 0x0644, 0x00e2, 0x0645, 0x0646, 0x0647, 0x0648, 0x00e7,
+    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x0649, 0x064a, 0x00ee, 0x00ef,
+    0x064b, 0x064c, 0x064d, 0x064e, 0x00f4, 0x064f, 0x0650, 0x00f7,
+    0x0651, 0x00f9, 0x0652, 0x00fb, 0x00fc, 0x200e, 0x200f, 0x06d2
+};
+
+static const unsigned char uni2cp_low[4864] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa0, 0x21, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+    0xa8, 0xa9, 0x61, 0xab, 0xac, 0xad, 0xae, 0xaf,
+    0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+    0xb8, 0xb9, 0x6f, 0xbb, 0xbc, 0xbd, 0xbe, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43,
+    0x45, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0x4e, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0xd7,
+    0x4f, 0x55, 0x55, 0x55, 0x55, 0x59, 0x3f, 0x3f,
+    0xe0, 0x61, 0xe2, 0x61, 0x61, 0x61, 0x61, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0x69, 0x69, 0xee, 0xef,
+    0x64, 0x6e, 0x6f, 0x6f, 0xf4, 0x6f, 0x6f, 0xf7,
+    0x6f, 0xf9, 0x75, 0xfb, 0xfc, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x8c, 0x9c, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x83, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0xfc, 0x55,
+    0xfc, 0x55, 0xfc, 0x55, 0xfc, 0x3f, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0xb4, 0x22, 0x91, 0x92, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x88, 0x76,
+    0x27, 0xaf, 0xb4, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xb0, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0xb4, 0x88, 0x7e, 0xaf, 0xaf, 0x3f, 0x3f,
+    0xa8, 0x3f, 0xb0, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb8,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0xb4, 0x3f, 0x3f, 0xa8, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb4, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb4, 0xa8, 0x41, 0xb7,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0600 .. 0x06ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xa1, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0xba, 0x3f, 0x3f, 0x3f, 0xbf,
+    0x3f, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+    0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd8,
+    0xd9, 0xda, 0xdb, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xdc, 0xdd, 0xde, 0xdf, 0xe1, 0xe3, 0xe4, 0xe5,
+    0xe6, 0xec, 0xed, 0xf0, 0xf1, 0xf2, 0xf3, 0xf5,
+    0xf6, 0xf8, 0xfa, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x8a, 0x3f, 0x3f, 0x3f, 0x3f, 0x81, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x8d, 0x3f,
+    0x8f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x9a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x8e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x98, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x90,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x9f, 0x3f, 0x3f, 0x3f, 0xaa, 0x3f,
+    0x3f, 0xc0, 0xc0, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xff, 0xff, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0xe7, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0xef,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0xe2, 0x41, 0xe2,
+    0x41, 0xe2, 0x41, 0xe2, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0xea,
+    0x45, 0xea, 0x45, 0xea, 0x45, 0xea, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0xf4, 0x4f, 0xf4, 0x4f, 0xf4, 0x4f, 0xf4,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa8, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0xa8, 0xa8, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0xb4, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x9d, 0x9e, 0xfd, 0xfe,
+    0x2d, 0x2d, 0x3f, 0x96, 0x97, 0x96, 0x3f, 0x5f,
+    0x91, 0x92, 0x82, 0x91, 0x93, 0x94, 0x84, 0x3f,
+    0x86, 0x87, 0x95, 0x3f, 0x2e, 0x3f, 0x85, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x89, 0x3f, 0xb4, 0x22, 0x3f, 0x91, 0x3f, 0x3f,
+    0x3f, 0x8b, 0x9b, 0x3f, 0x21, 0x3f, 0xaf, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb0, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa2, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x80, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x99, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x8b, 0x88, 0x9b, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x8b, 0x9b, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xb1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xb0, 0x95, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xab, 0xbb, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb7, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x8b, 0x9b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x2d, 0x2d, 0xa6, 0xa6, 0x2b, 0x2b, 0x2b, 0x2b,
+    0xac, 0xac, 0xac, 0xac, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0xac, 0xac, 0xac,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x8b, 0x9b, 0xab, 0xbb, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x93, 0x94, 0x84,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xaf, 0xaf, 0xaf, 0xaf, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x97, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa2, 0xa3, 0xac, 0xaf, 0xa6, 0xa5, 0x3f, 0x3f,
+    0x7c, 0x8b, 0x88, 0x9b, 0x76, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1200, 0x1200, 0x0400, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x0500, 0x0600, 0x0700,
+    0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x0d00, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x0e00, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x0f00, 0x1200, 0x1200, 0x1000, 0x1100
+};
+
+const struct sbcs_table cptable_1256 =
+{
+    { 1256, 1, 0x003f, 0x003f, "ANSI Arabic" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1257.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1257.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1257.c	(revision 16410)
@@ -0,0 +1,684 @@
+/* code page 1257 (ANSI Baltic) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1257.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x20ac, 0x0081, 0x201a, 0x0083, 0x201e, 0x2026, 0x2020, 0x2021,
+    0x0088, 0x2030, 0x008a, 0x2039, 0x008c, 0x00a8, 0x02c7, 0x00b8,
+    0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+    0x0098, 0x2122, 0x009a, 0x203a, 0x009c, 0x00af, 0x02db, 0x009f,
+    0x00a0, 0x003f, 0x00a2, 0x00a3, 0x00a4, 0x003f, 0x00a6, 0x00a7,
+    0x00d8, 0x00a9, 0x0156, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6,
+    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+    0x00f8, 0x00b9, 0x0157, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6,
+    0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112,
+    0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b,
+    0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7,
+    0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 0x017b, 0x017d, 0x00df,
+    0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113,
+    0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c,
+    0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7,
+    0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0x02d9
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x81, 0x3f, 0x83, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x88, 0x3f, 0x8a, 0x3f, 0x8c, 0x3f, 0x3f, 0x3f,
+    0x90, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x98, 0x3f, 0x9a, 0x3f, 0x9c, 0x3f, 0x3f, 0x9f,
+    0xa0, 0x21, 0xa2, 0xa3, 0xa4, 0x59, 0xa6, 0xa7,
+    0x8d, 0xa9, 0x61, 0xab, 0xac, 0xad, 0xae, 0x9d,
+    0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+    0x8f, 0xb9, 0x6f, 0xbb, 0xbc, 0xbd, 0xbe, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0xc4, 0xc5, 0xaf, 0x43,
+    0x45, 0xc9, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0x4e, 0x4f, 0xd3, 0x4f, 0xd5, 0xd6, 0xd7,
+    0xa8, 0x55, 0x55, 0x55, 0xdc, 0x59, 0x3f, 0xdf,
+    0x61, 0x61, 0x61, 0x61, 0xe4, 0xe5, 0xbf, 0x63,
+    0x65, 0xe9, 0x65, 0x65, 0x69, 0x69, 0x69, 0x69,
+    0x64, 0x6e, 0x6f, 0xf3, 0x6f, 0xf5, 0xf6, 0xf7,
+    0xb8, 0x75, 0x75, 0x75, 0xfc, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0xc2, 0xe2, 0x41, 0x61, 0xc0, 0xe0, 0xc3, 0xe3,
+    0x43, 0x63, 0x43, 0x63, 0xc8, 0xe8, 0x44, 0x64,
+    0x44, 0x64, 0xc7, 0xe7, 0x45, 0x65, 0xcb, 0xeb,
+    0xc6, 0xe6, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0xcc, 0xec, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0xce, 0xee, 0x49, 0x69, 0xc1, 0xe1,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0xcd, 0xed,
+    0x3f, 0x4c, 0x6c, 0xcf, 0xef, 0x4c, 0x6c, 0x3f,
+    0x3f, 0xd9, 0xf9, 0xd1, 0xf1, 0xd2, 0xf2, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0xd4, 0xf4, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0xaa, 0xba,
+    0x52, 0x72, 0xda, 0xfa, 0x53, 0x73, 0x53, 0x73,
+    0xd0, 0xf0, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0xdb, 0xfb, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0xd8, 0xf8, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0xca, 0xea, 0xdd, 0xfd, 0xde, 0xfe, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0xdc, 0xfc, 0xdc,
+    0xfc, 0xdc, 0xfc, 0xdc, 0xfc, 0x3f, 0xc4, 0xe4,
+    0x41, 0x61, 0xaf, 0xbf, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0xc5, 0xe5, 0xaf, 0xbf, 0xa8, 0xb8,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0xd6, 0xf6, 0xd5, 0xf5, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0xb4, 0x22, 0x91, 0x92, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x8e,
+    0x27, 0x9d, 0xb4, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xff, 0xb0, 0x9e, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0xb4, 0x5e, 0x7e, 0x9d, 0x9d, 0x3f, 0xff,
+    0x8d, 0x3f, 0xb0, 0x22, 0x8e, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x8f,
+    0x9e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0xb4, 0x3f, 0x3f, 0x8d, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb4, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb4, 0x8d, 0x41, 0xb7,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xdf, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xdf, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0xaf, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xdf, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xdf, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x63, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0xc7, 0xe7, 0xc7, 0xe7,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0xd5, 0xf5, 0xd5, 0xf5,
+    0xd4, 0xf4, 0xd4, 0xf4, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0xda, 0xfa, 0xd0, 0xf0,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0xdb, 0xfb, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x8d, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0x8d, 0x8d, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0xb4, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x96, 0x97, 0x96, 0x3f, 0x5f,
+    0x91, 0x92, 0x82, 0x91, 0x93, 0x94, 0x84, 0x3f,
+    0x86, 0x87, 0x95, 0x3f, 0x2e, 0x3f, 0x85, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x89, 0x3f, 0xb4, 0x22, 0x3f, 0x91, 0x3f, 0x3f,
+    0x3f, 0x8b, 0x9b, 0x3f, 0x21, 0x3f, 0x9d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb0, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa2, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x80, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x99, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0xc5, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x8b, 0x5e, 0x9b, 0x8e, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x8b, 0x9b, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xa8, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xb1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xb0, 0x95, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xab, 0xbb, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb7, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x8b, 0x9b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x2d, 0x2d, 0xa6, 0xa6, 0x2b, 0x2b, 0x2b, 0x2b,
+    0xac, 0xac, 0xac, 0xac, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0xac, 0xac, 0xac,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x8b, 0x9b, 0xab, 0xbb, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x93, 0x94, 0x84,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x9d, 0x9d, 0x9d, 0x9d, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x97, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa2, 0xa3, 0xac, 0x9d, 0xa6, 0x59, 0x3f, 0x3f,
+    0x7c, 0x8b, 0x5e, 0x9b, 0x8e, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_1257 =
+{
+    { 1257, 1, 0x003f, 0x003f, "ANSI Baltic" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1258.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1258.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1258.c	(revision 16410)
@@ -0,0 +1,684 @@
+/* code page 1258 (ANSI/OEM Viet Nam) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1258.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x20ac, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+    0x02c6, 0x2030, 0x008a, 0x2039, 0x0152, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+    0x02dc, 0x2122, 0x009a, 0x203a, 0x0153, 0x009d, 0x009e, 0x0178,
+    0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+    0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+    0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+    0x00c0, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+    0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x0300, 0x00cd, 0x00ce, 0x00cf,
+    0x0110, 0x00d1, 0x0309, 0x00d3, 0x00d4, 0x01a0, 0x00d6, 0x00d7,
+    0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x01af, 0x0303, 0x00df,
+    0x00e0, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x0301, 0x00ed, 0x00ee, 0x00ef,
+    0x0111, 0x00f1, 0x0323, 0x00f3, 0x00f4, 0x01a1, 0x00f6, 0x00f7,
+    0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x01b0, 0x20ab, 0x00ff
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x81, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x8a, 0x3f, 0x3f, 0x8d, 0x8e, 0x8f,
+    0x90, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x9a, 0x3f, 0x3f, 0x9d, 0x9e, 0x3f,
+    0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+    0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+    0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+    0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+    0xc0, 0xc1, 0xc2, 0x41, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xca, 0xcb, 0x49, 0xcd, 0xce, 0xcf,
+    0xd0, 0xd1, 0x4f, 0xd3, 0xd4, 0x4f, 0xd6, 0xd7,
+    0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0x59, 0x3f, 0xdf,
+    0xe0, 0xe1, 0xe2, 0x61, 0xe4, 0xe5, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0x69, 0xed, 0xee, 0xef,
+    0x64, 0xf1, 0x6f, 0xf3, 0xf4, 0x6f, 0xf6, 0xf7,
+    0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x79, 0x3f, 0xff,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0xc3, 0xe3, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0xd0, 0xf0, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x8c, 0x9c, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x9f, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xd0, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x83, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0xd5, 0xf5, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0xdd,
+    0xfd, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0xdc, 0xfc, 0xdc,
+    0xfc, 0xdc, 0xfc, 0xdc, 0xfc, 0x3f, 0xc4, 0xe4,
+    0x41, 0x61, 0xc6, 0xe6, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0xc5, 0xe5, 0xc6, 0xe6, 0xd8, 0xf8,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0xd6, 0xf6, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0xb4, 0x22, 0x91, 0x92, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x88, 0x76,
+    0x27, 0xaf, 0xb4, 0xcc, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xb0, 0x3f, 0x98, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0xcc, 0xec, 0x88, 0xde, 0xaf, 0xaf, 0x3f, 0x3f,
+    0xa8, 0xd2, 0xb0, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0xf2, 0x3f, 0x3f, 0x3f, 0xb8,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xcc, 0xec, 0x3f, 0x3f, 0xa8, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb4, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xec, 0xa8, 0x41, 0xb7,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xdf, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xdf, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0xc6, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xdf, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xdf, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0xc7, 0xe7, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0xcf, 0xef,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0xc2, 0xe2, 0xc2, 0xe2,
+    0xc2, 0xe2, 0xc2, 0xe2, 0x41, 0x61, 0xc3, 0xe3,
+    0xc3, 0xe3, 0xc3, 0xe3, 0xc3, 0xe3, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0xca, 0xea,
+    0xca, 0xea, 0xca, 0xea, 0xca, 0xea, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0xd4, 0xf4, 0xd4, 0xf4, 0xd4, 0xf4, 0xd4, 0xf4,
+    0x4f, 0x6f, 0xd5, 0xf5, 0xd5, 0xf5, 0xd5, 0xf5,
+    0xd5, 0xf5, 0xd5, 0xf5, 0x55, 0x75, 0x55, 0x75,
+    0xdd, 0xfd, 0xdd, 0xfd, 0xdd, 0xfd, 0xdd, 0xfd,
+    0xdd, 0xfd, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa8, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0xa8, 0xa8, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0xb4, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x96, 0x97, 0x96, 0x3f, 0x5f,
+    0x91, 0x92, 0x82, 0x91, 0x93, 0x94, 0x84, 0x3f,
+    0x86, 0x87, 0x95, 0x3f, 0x2e, 0x3f, 0x85, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x89, 0x3f, 0xb4, 0x22, 0x3f, 0x91, 0x3f, 0x3f,
+    0x3f, 0x8b, 0x9b, 0x3f, 0x21, 0x3f, 0xaf, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb0, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa2, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0xfe, 0x80, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x99, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0xc5, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x8b, 0x88, 0x9b, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x8b, 0x9b, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xd8, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xb1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xb0, 0x95, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x98, 0x98, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xab, 0xbb, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb7, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x8b, 0x9b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x2d, 0x2d, 0xa6, 0xa6, 0x2b, 0x2b, 0x2b, 0x2b,
+    0xac, 0xac, 0xac, 0xac, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0xac, 0xac, 0xac,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x8b, 0x9b, 0xab, 0xbb, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x93, 0x94, 0x84,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xaf, 0xaf, 0xaf, 0xaf, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x97, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa2, 0xa3, 0xac, 0xaf, 0xa6, 0xa5, 0x3f, 0x3f,
+    0x7c, 0x8b, 0x88, 0x9b, 0x76, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_1258 =
+{
+    { 1258, 1, 0x003f, 0x003f, "ANSI/OEM Viet Nam" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1361.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1361.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_1361.c	(revision 16410)
@@ -0,0 +1,8872 @@
+/* code page 1361 (Korean Johab) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[28928] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x20a9, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x003f,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte 84 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x3133, 0x003f, 0x3135, 0x3136,
+    0x003f, 0x003f, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f,
+    0x3140, 0x003f, 0x003f, 0x003f, 0x3144, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x314f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3150, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3151, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3152, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3153, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte 85 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3154, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3155, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3156, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3157, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3158, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3159, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte 86 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x315a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x315b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x315c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x315d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x315e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x315f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte 87 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3160, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3161, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3162, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3163, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte 88 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3131, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xac00, 0xac01, 0xac02, 0xac03, 0xac04, 0xac05, 0xac06,
+    0xac07, 0xac08, 0xac09, 0xac0a, 0xac0b, 0xac0c, 0xac0d, 0xac0e,
+    0xac0f, 0xac10, 0x003f, 0xac11, 0xac12, 0xac13, 0xac14, 0xac15,
+    0xac16, 0xac17, 0xac18, 0xac19, 0xac1a, 0xac1b, 0x003f, 0x003f,
+    0x003f, 0xac1c, 0xac1d, 0xac1e, 0xac1f, 0xac20, 0xac21, 0xac22,
+    0xac23, 0xac24, 0xac25, 0xac26, 0xac27, 0xac28, 0xac29, 0xac2a,
+    0xac2b, 0xac2c, 0x003f, 0xac2d, 0xac2e, 0xac2f, 0xac30, 0xac31,
+    0xac32, 0xac33, 0xac34, 0xac35, 0xac36, 0xac37, 0x003f, 0x003f,
+    0x003f, 0xac38, 0xac39, 0xac3a, 0xac3b, 0xac3c, 0xac3d, 0xac3e,
+    0xac3f, 0xac40, 0xac41, 0xac42, 0xac43, 0xac44, 0xac45, 0xac46,
+    0xac47, 0xac48, 0x003f, 0xac49, 0xac4a, 0xac4b, 0xac4c, 0xac4d,
+    0xac4e, 0xac4f, 0xac50, 0xac51, 0xac52, 0xac53, 0x003f, 0x003f,
+    0x003f, 0xac54, 0xac55, 0xac56, 0xac57, 0xac58, 0xac59, 0xac5a,
+    0xac5b, 0xac5c, 0xac5d, 0xac5e, 0xac5f, 0xac60, 0xac61, 0xac62,
+    0xac63, 0xac64, 0x003f, 0xac65, 0xac66, 0xac67, 0xac68, 0xac69,
+    0xac6a, 0xac6b, 0xac6c, 0xac6d, 0xac6e, 0xac6f, 0x003f, 0x003f,
+    0x003f, 0xac70, 0xac71, 0xac72, 0xac73, 0xac74, 0xac75, 0xac76,
+    0xac77, 0xac78, 0xac79, 0xac7a, 0xac7b, 0xac7c, 0xac7d, 0xac7e,
+    0xac7f, 0xac80, 0x003f, 0xac81, 0xac82, 0xac83, 0xac84, 0xac85,
+    0xac86, 0xac87, 0xac88, 0xac89, 0xac8a, 0xac8b, 0x003f, 0x003f,
+    /* lead byte 89 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xac8c, 0xac8d, 0xac8e, 0xac8f, 0xac90, 0xac91, 0xac92,
+    0xac93, 0xac94, 0xac95, 0xac96, 0xac97, 0xac98, 0xac99, 0xac9a,
+    0xac9b, 0xac9c, 0x003f, 0xac9d, 0xac9e, 0xac9f, 0xaca0, 0xaca1,
+    0xaca2, 0xaca3, 0xaca4, 0xaca5, 0xaca6, 0xaca7, 0x003f, 0x003f,
+    0x003f, 0xaca8, 0xaca9, 0xacaa, 0xacab, 0xacac, 0xacad, 0xacae,
+    0xacaf, 0xacb0, 0xacb1, 0xacb2, 0xacb3, 0xacb4, 0xacb5, 0xacb6,
+    0xacb7, 0xacb8, 0x003f, 0xacb9, 0xacba, 0xacbb, 0xacbc, 0xacbd,
+    0xacbe, 0xacbf, 0xacc0, 0xacc1, 0xacc2, 0xacc3, 0x003f, 0x003f,
+    0x003f, 0xacc4, 0xacc5, 0xacc6, 0xacc7, 0xacc8, 0xacc9, 0xacca,
+    0xaccb, 0xaccc, 0xaccd, 0xacce, 0xaccf, 0xacd0, 0xacd1, 0xacd2,
+    0xacd3, 0xacd4, 0x003f, 0xacd5, 0xacd6, 0xacd7, 0xacd8, 0xacd9,
+    0xacda, 0xacdb, 0xacdc, 0xacdd, 0xacde, 0xacdf, 0x003f, 0x003f,
+    0x003f, 0xace0, 0xace1, 0xace2, 0xace3, 0xace4, 0xace5, 0xace6,
+    0xace7, 0xace8, 0xace9, 0xacea, 0xaceb, 0xacec, 0xaced, 0xacee,
+    0xacef, 0xacf0, 0x003f, 0xacf1, 0xacf2, 0xacf3, 0xacf4, 0xacf5,
+    0xacf6, 0xacf7, 0xacf8, 0xacf9, 0xacfa, 0xacfb, 0x003f, 0x003f,
+    0x003f, 0xacfc, 0xacfd, 0xacfe, 0xacff, 0xad00, 0xad01, 0xad02,
+    0xad03, 0xad04, 0xad05, 0xad06, 0xad07, 0xad08, 0xad09, 0xad0a,
+    0xad0b, 0xad0c, 0x003f, 0xad0d, 0xad0e, 0xad0f, 0xad10, 0xad11,
+    0xad12, 0xad13, 0xad14, 0xad15, 0xad16, 0xad17, 0x003f, 0x003f,
+    0x003f, 0xad18, 0xad19, 0xad1a, 0xad1b, 0xad1c, 0xad1d, 0xad1e,
+    0xad1f, 0xad20, 0xad21, 0xad22, 0xad23, 0xad24, 0xad25, 0xad26,
+    0xad27, 0xad28, 0x003f, 0xad29, 0xad2a, 0xad2b, 0xad2c, 0xad2d,
+    0xad2e, 0xad2f, 0xad30, 0xad31, 0xad32, 0xad33, 0x003f, 0x003f,
+    /* lead byte 8a */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xad34, 0xad35, 0xad36, 0xad37, 0xad38, 0xad39, 0xad3a,
+    0xad3b, 0xad3c, 0xad3d, 0xad3e, 0xad3f, 0xad40, 0xad41, 0xad42,
+    0xad43, 0xad44, 0x003f, 0xad45, 0xad46, 0xad47, 0xad48, 0xad49,
+    0xad4a, 0xad4b, 0xad4c, 0xad4d, 0xad4e, 0xad4f, 0x003f, 0x003f,
+    0x003f, 0xad50, 0xad51, 0xad52, 0xad53, 0xad54, 0xad55, 0xad56,
+    0xad57, 0xad58, 0xad59, 0xad5a, 0xad5b, 0xad5c, 0xad5d, 0xad5e,
+    0xad5f, 0xad60, 0x003f, 0xad61, 0xad62, 0xad63, 0xad64, 0xad65,
+    0xad66, 0xad67, 0xad68, 0xad69, 0xad6a, 0xad6b, 0x003f, 0x003f,
+    0x003f, 0xad6c, 0xad6d, 0xad6e, 0xad6f, 0xad70, 0xad71, 0xad72,
+    0xad73, 0xad74, 0xad75, 0xad76, 0xad77, 0xad78, 0xad79, 0xad7a,
+    0xad7b, 0xad7c, 0x003f, 0xad7d, 0xad7e, 0xad7f, 0xad80, 0xad81,
+    0xad82, 0xad83, 0xad84, 0xad85, 0xad86, 0xad87, 0x003f, 0x003f,
+    0x003f, 0xad88, 0xad89, 0xad8a, 0xad8b, 0xad8c, 0xad8d, 0xad8e,
+    0xad8f, 0xad90, 0xad91, 0xad92, 0xad93, 0xad94, 0xad95, 0xad96,
+    0xad97, 0xad98, 0x003f, 0xad99, 0xad9a, 0xad9b, 0xad9c, 0xad9d,
+    0xad9e, 0xad9f, 0xada0, 0xada1, 0xada2, 0xada3, 0x003f, 0x003f,
+    0x003f, 0xada4, 0xada5, 0xada6, 0xada7, 0xada8, 0xada9, 0xadaa,
+    0xadab, 0xadac, 0xadad, 0xadae, 0xadaf, 0xadb0, 0xadb1, 0xadb2,
+    0xadb3, 0xadb4, 0x003f, 0xadb5, 0xadb6, 0xadb7, 0xadb8, 0xadb9,
+    0xadba, 0xadbb, 0xadbc, 0xadbd, 0xadbe, 0xadbf, 0x003f, 0x003f,
+    0x003f, 0xadc0, 0xadc1, 0xadc2, 0xadc3, 0xadc4, 0xadc5, 0xadc6,
+    0xadc7, 0xadc8, 0xadc9, 0xadca, 0xadcb, 0xadcc, 0xadcd, 0xadce,
+    0xadcf, 0xadd0, 0x003f, 0xadd1, 0xadd2, 0xadd3, 0xadd4, 0xadd5,
+    0xadd6, 0xadd7, 0xadd8, 0xadd9, 0xadda, 0xaddb, 0x003f, 0x003f,
+    /* lead byte 8b */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xaddc, 0xaddd, 0xadde, 0xaddf, 0xade0, 0xade1, 0xade2,
+    0xade3, 0xade4, 0xade5, 0xade6, 0xade7, 0xade8, 0xade9, 0xadea,
+    0xadeb, 0xadec, 0x003f, 0xaded, 0xadee, 0xadef, 0xadf0, 0xadf1,
+    0xadf2, 0xadf3, 0xadf4, 0xadf5, 0xadf6, 0xadf7, 0x003f, 0x003f,
+    0x003f, 0xadf8, 0xadf9, 0xadfa, 0xadfb, 0xadfc, 0xadfd, 0xadfe,
+    0xadff, 0xae00, 0xae01, 0xae02, 0xae03, 0xae04, 0xae05, 0xae06,
+    0xae07, 0xae08, 0x003f, 0xae09, 0xae0a, 0xae0b, 0xae0c, 0xae0d,
+    0xae0e, 0xae0f, 0xae10, 0xae11, 0xae12, 0xae13, 0x003f, 0x003f,
+    0x003f, 0xae14, 0xae15, 0xae16, 0xae17, 0xae18, 0xae19, 0xae1a,
+    0xae1b, 0xae1c, 0xae1d, 0xae1e, 0xae1f, 0xae20, 0xae21, 0xae22,
+    0xae23, 0xae24, 0x003f, 0xae25, 0xae26, 0xae27, 0xae28, 0xae29,
+    0xae2a, 0xae2b, 0xae2c, 0xae2d, 0xae2e, 0xae2f, 0x003f, 0x003f,
+    0x003f, 0xae30, 0xae31, 0xae32, 0xae33, 0xae34, 0xae35, 0xae36,
+    0xae37, 0xae38, 0xae39, 0xae3a, 0xae3b, 0xae3c, 0xae3d, 0xae3e,
+    0xae3f, 0xae40, 0x003f, 0xae41, 0xae42, 0xae43, 0xae44, 0xae45,
+    0xae46, 0xae47, 0xae48, 0xae49, 0xae4a, 0xae4b, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte 8c */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3132, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xae4c, 0xae4d, 0xae4e, 0xae4f, 0xae50, 0xae51, 0xae52,
+    0xae53, 0xae54, 0xae55, 0xae56, 0xae57, 0xae58, 0xae59, 0xae5a,
+    0xae5b, 0xae5c, 0x003f, 0xae5d, 0xae5e, 0xae5f, 0xae60, 0xae61,
+    0xae62, 0xae63, 0xae64, 0xae65, 0xae66, 0xae67, 0x003f, 0x003f,
+    0x003f, 0xae68, 0xae69, 0xae6a, 0xae6b, 0xae6c, 0xae6d, 0xae6e,
+    0xae6f, 0xae70, 0xae71, 0xae72, 0xae73, 0xae74, 0xae75, 0xae76,
+    0xae77, 0xae78, 0x003f, 0xae79, 0xae7a, 0xae7b, 0xae7c, 0xae7d,
+    0xae7e, 0xae7f, 0xae80, 0xae81, 0xae82, 0xae83, 0x003f, 0x003f,
+    0x003f, 0xae84, 0xae85, 0xae86, 0xae87, 0xae88, 0xae89, 0xae8a,
+    0xae8b, 0xae8c, 0xae8d, 0xae8e, 0xae8f, 0xae90, 0xae91, 0xae92,
+    0xae93, 0xae94, 0x003f, 0xae95, 0xae96, 0xae97, 0xae98, 0xae99,
+    0xae9a, 0xae9b, 0xae9c, 0xae9d, 0xae9e, 0xae9f, 0x003f, 0x003f,
+    0x003f, 0xaea0, 0xaea1, 0xaea2, 0xaea3, 0xaea4, 0xaea5, 0xaea6,
+    0xaea7, 0xaea8, 0xaea9, 0xaeaa, 0xaeab, 0xaeac, 0xaead, 0xaeae,
+    0xaeaf, 0xaeb0, 0x003f, 0xaeb1, 0xaeb2, 0xaeb3, 0xaeb4, 0xaeb5,
+    0xaeb6, 0xaeb7, 0xaeb8, 0xaeb9, 0xaeba, 0xaebb, 0x003f, 0x003f,
+    0x003f, 0xaebc, 0xaebd, 0xaebe, 0xaebf, 0xaec0, 0xaec1, 0xaec2,
+    0xaec3, 0xaec4, 0xaec5, 0xaec6, 0xaec7, 0xaec8, 0xaec9, 0xaeca,
+    0xaecb, 0xaecc, 0x003f, 0xaecd, 0xaece, 0xaecf, 0xaed0, 0xaed1,
+    0xaed2, 0xaed3, 0xaed4, 0xaed5, 0xaed6, 0xaed7, 0x003f, 0x003f,
+    /* lead byte 8d */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xaed8, 0xaed9, 0xaeda, 0xaedb, 0xaedc, 0xaedd, 0xaede,
+    0xaedf, 0xaee0, 0xaee1, 0xaee2, 0xaee3, 0xaee4, 0xaee5, 0xaee6,
+    0xaee7, 0xaee8, 0x003f, 0xaee9, 0xaeea, 0xaeeb, 0xaeec, 0xaeed,
+    0xaeee, 0xaeef, 0xaef0, 0xaef1, 0xaef2, 0xaef3, 0x003f, 0x003f,
+    0x003f, 0xaef4, 0xaef5, 0xaef6, 0xaef7, 0xaef8, 0xaef9, 0xaefa,
+    0xaefb, 0xaefc, 0xaefd, 0xaefe, 0xaeff, 0xaf00, 0xaf01, 0xaf02,
+    0xaf03, 0xaf04, 0x003f, 0xaf05, 0xaf06, 0xaf07, 0xaf08, 0xaf09,
+    0xaf0a, 0xaf0b, 0xaf0c, 0xaf0d, 0xaf0e, 0xaf0f, 0x003f, 0x003f,
+    0x003f, 0xaf10, 0xaf11, 0xaf12, 0xaf13, 0xaf14, 0xaf15, 0xaf16,
+    0xaf17, 0xaf18, 0xaf19, 0xaf1a, 0xaf1b, 0xaf1c, 0xaf1d, 0xaf1e,
+    0xaf1f, 0xaf20, 0x003f, 0xaf21, 0xaf22, 0xaf23, 0xaf24, 0xaf25,
+    0xaf26, 0xaf27, 0xaf28, 0xaf29, 0xaf2a, 0xaf2b, 0x003f, 0x003f,
+    0x003f, 0xaf2c, 0xaf2d, 0xaf2e, 0xaf2f, 0xaf30, 0xaf31, 0xaf32,
+    0xaf33, 0xaf34, 0xaf35, 0xaf36, 0xaf37, 0xaf38, 0xaf39, 0xaf3a,
+    0xaf3b, 0xaf3c, 0x003f, 0xaf3d, 0xaf3e, 0xaf3f, 0xaf40, 0xaf41,
+    0xaf42, 0xaf43, 0xaf44, 0xaf45, 0xaf46, 0xaf47, 0x003f, 0x003f,
+    0x003f, 0xaf48, 0xaf49, 0xaf4a, 0xaf4b, 0xaf4c, 0xaf4d, 0xaf4e,
+    0xaf4f, 0xaf50, 0xaf51, 0xaf52, 0xaf53, 0xaf54, 0xaf55, 0xaf56,
+    0xaf57, 0xaf58, 0x003f, 0xaf59, 0xaf5a, 0xaf5b, 0xaf5c, 0xaf5d,
+    0xaf5e, 0xaf5f, 0xaf60, 0xaf61, 0xaf62, 0xaf63, 0x003f, 0x003f,
+    0x003f, 0xaf64, 0xaf65, 0xaf66, 0xaf67, 0xaf68, 0xaf69, 0xaf6a,
+    0xaf6b, 0xaf6c, 0xaf6d, 0xaf6e, 0xaf6f, 0xaf70, 0xaf71, 0xaf72,
+    0xaf73, 0xaf74, 0x003f, 0xaf75, 0xaf76, 0xaf77, 0xaf78, 0xaf79,
+    0xaf7a, 0xaf7b, 0xaf7c, 0xaf7d, 0xaf7e, 0xaf7f, 0x003f, 0x003f,
+    /* lead byte 8e */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xaf80, 0xaf81, 0xaf82, 0xaf83, 0xaf84, 0xaf85, 0xaf86,
+    0xaf87, 0xaf88, 0xaf89, 0xaf8a, 0xaf8b, 0xaf8c, 0xaf8d, 0xaf8e,
+    0xaf8f, 0xaf90, 0x003f, 0xaf91, 0xaf92, 0xaf93, 0xaf94, 0xaf95,
+    0xaf96, 0xaf97, 0xaf98, 0xaf99, 0xaf9a, 0xaf9b, 0x003f, 0x003f,
+    0x003f, 0xaf9c, 0xaf9d, 0xaf9e, 0xaf9f, 0xafa0, 0xafa1, 0xafa2,
+    0xafa3, 0xafa4, 0xafa5, 0xafa6, 0xafa7, 0xafa8, 0xafa9, 0xafaa,
+    0xafab, 0xafac, 0x003f, 0xafad, 0xafae, 0xafaf, 0xafb0, 0xafb1,
+    0xafb2, 0xafb3, 0xafb4, 0xafb5, 0xafb6, 0xafb7, 0x003f, 0x003f,
+    0x003f, 0xafb8, 0xafb9, 0xafba, 0xafbb, 0xafbc, 0xafbd, 0xafbe,
+    0xafbf, 0xafc0, 0xafc1, 0xafc2, 0xafc3, 0xafc4, 0xafc5, 0xafc6,
+    0xafc7, 0xafc8, 0x003f, 0xafc9, 0xafca, 0xafcb, 0xafcc, 0xafcd,
+    0xafce, 0xafcf, 0xafd0, 0xafd1, 0xafd2, 0xafd3, 0x003f, 0x003f,
+    0x003f, 0xafd4, 0xafd5, 0xafd6, 0xafd7, 0xafd8, 0xafd9, 0xafda,
+    0xafdb, 0xafdc, 0xafdd, 0xafde, 0xafdf, 0xafe0, 0xafe1, 0xafe2,
+    0xafe3, 0xafe4, 0x003f, 0xafe5, 0xafe6, 0xafe7, 0xafe8, 0xafe9,
+    0xafea, 0xafeb, 0xafec, 0xafed, 0xafee, 0xafef, 0x003f, 0x003f,
+    0x003f, 0xaff0, 0xaff1, 0xaff2, 0xaff3, 0xaff4, 0xaff5, 0xaff6,
+    0xaff7, 0xaff8, 0xaff9, 0xaffa, 0xaffb, 0xaffc, 0xaffd, 0xaffe,
+    0xafff, 0xb000, 0x003f, 0xb001, 0xb002, 0xb003, 0xb004, 0xb005,
+    0xb006, 0xb007, 0xb008, 0xb009, 0xb00a, 0xb00b, 0x003f, 0x003f,
+    0x003f, 0xb00c, 0xb00d, 0xb00e, 0xb00f, 0xb010, 0xb011, 0xb012,
+    0xb013, 0xb014, 0xb015, 0xb016, 0xb017, 0xb018, 0xb019, 0xb01a,
+    0xb01b, 0xb01c, 0x003f, 0xb01d, 0xb01e, 0xb01f, 0xb020, 0xb021,
+    0xb022, 0xb023, 0xb024, 0xb025, 0xb026, 0xb027, 0x003f, 0x003f,
+    /* lead byte 8f */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb028, 0xb029, 0xb02a, 0xb02b, 0xb02c, 0xb02d, 0xb02e,
+    0xb02f, 0xb030, 0xb031, 0xb032, 0xb033, 0xb034, 0xb035, 0xb036,
+    0xb037, 0xb038, 0x003f, 0xb039, 0xb03a, 0xb03b, 0xb03c, 0xb03d,
+    0xb03e, 0xb03f, 0xb040, 0xb041, 0xb042, 0xb043, 0x003f, 0x003f,
+    0x003f, 0xb044, 0xb045, 0xb046, 0xb047, 0xb048, 0xb049, 0xb04a,
+    0xb04b, 0xb04c, 0xb04d, 0xb04e, 0xb04f, 0xb050, 0xb051, 0xb052,
+    0xb053, 0xb054, 0x003f, 0xb055, 0xb056, 0xb057, 0xb058, 0xb059,
+    0xb05a, 0xb05b, 0xb05c, 0xb05d, 0xb05e, 0xb05f, 0x003f, 0x003f,
+    0x003f, 0xb060, 0xb061, 0xb062, 0xb063, 0xb064, 0xb065, 0xb066,
+    0xb067, 0xb068, 0xb069, 0xb06a, 0xb06b, 0xb06c, 0xb06d, 0xb06e,
+    0xb06f, 0xb070, 0x003f, 0xb071, 0xb072, 0xb073, 0xb074, 0xb075,
+    0xb076, 0xb077, 0xb078, 0xb079, 0xb07a, 0xb07b, 0x003f, 0x003f,
+    0x003f, 0xb07c, 0xb07d, 0xb07e, 0xb07f, 0xb080, 0xb081, 0xb082,
+    0xb083, 0xb084, 0xb085, 0xb086, 0xb087, 0xb088, 0xb089, 0xb08a,
+    0xb08b, 0xb08c, 0x003f, 0xb08d, 0xb08e, 0xb08f, 0xb090, 0xb091,
+    0xb092, 0xb093, 0xb094, 0xb095, 0xb096, 0xb097, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte 90 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3134, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb098, 0xb099, 0xb09a, 0xb09b, 0xb09c, 0xb09d, 0xb09e,
+    0xb09f, 0xb0a0, 0xb0a1, 0xb0a2, 0xb0a3, 0xb0a4, 0xb0a5, 0xb0a6,
+    0xb0a7, 0xb0a8, 0x003f, 0xb0a9, 0xb0aa, 0xb0ab, 0xb0ac, 0xb0ad,
+    0xb0ae, 0xb0af, 0xb0b0, 0xb0b1, 0xb0b2, 0xb0b3, 0x003f, 0x003f,
+    0x003f, 0xb0b4, 0xb0b5, 0xb0b6, 0xb0b7, 0xb0b8, 0xb0b9, 0xb0ba,
+    0xb0bb, 0xb0bc, 0xb0bd, 0xb0be, 0xb0bf, 0xb0c0, 0xb0c1, 0xb0c2,
+    0xb0c3, 0xb0c4, 0x003f, 0xb0c5, 0xb0c6, 0xb0c7, 0xb0c8, 0xb0c9,
+    0xb0ca, 0xb0cb, 0xb0cc, 0xb0cd, 0xb0ce, 0xb0cf, 0x003f, 0x003f,
+    0x003f, 0xb0d0, 0xb0d1, 0xb0d2, 0xb0d3, 0xb0d4, 0xb0d5, 0xb0d6,
+    0xb0d7, 0xb0d8, 0xb0d9, 0xb0da, 0xb0db, 0xb0dc, 0xb0dd, 0xb0de,
+    0xb0df, 0xb0e0, 0x003f, 0xb0e1, 0xb0e2, 0xb0e3, 0xb0e4, 0xb0e5,
+    0xb0e6, 0xb0e7, 0xb0e8, 0xb0e9, 0xb0ea, 0xb0eb, 0x003f, 0x003f,
+    0x003f, 0xb0ec, 0xb0ed, 0xb0ee, 0xb0ef, 0xb0f0, 0xb0f1, 0xb0f2,
+    0xb0f3, 0xb0f4, 0xb0f5, 0xb0f6, 0xb0f7, 0xb0f8, 0xb0f9, 0xb0fa,
+    0xb0fb, 0xb0fc, 0x003f, 0xb0fd, 0xb0fe, 0xb0ff, 0xb100, 0xb101,
+    0xb102, 0xb103, 0xb104, 0xb105, 0xb106, 0xb107, 0x003f, 0x003f,
+    0x003f, 0xb108, 0xb109, 0xb10a, 0xb10b, 0xb10c, 0xb10d, 0xb10e,
+    0xb10f, 0xb110, 0xb111, 0xb112, 0xb113, 0xb114, 0xb115, 0xb116,
+    0xb117, 0xb118, 0x003f, 0xb119, 0xb11a, 0xb11b, 0xb11c, 0xb11d,
+    0xb11e, 0xb11f, 0xb120, 0xb121, 0xb122, 0xb123, 0x003f, 0x003f,
+    /* lead byte 91 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb124, 0xb125, 0xb126, 0xb127, 0xb128, 0xb129, 0xb12a,
+    0xb12b, 0xb12c, 0xb12d, 0xb12e, 0xb12f, 0xb130, 0xb131, 0xb132,
+    0xb133, 0xb134, 0x003f, 0xb135, 0xb136, 0xb137, 0xb138, 0xb139,
+    0xb13a, 0xb13b, 0xb13c, 0xb13d, 0xb13e, 0xb13f, 0x003f, 0x003f,
+    0x003f, 0xb140, 0xb141, 0xb142, 0xb143, 0xb144, 0xb145, 0xb146,
+    0xb147, 0xb148, 0xb149, 0xb14a, 0xb14b, 0xb14c, 0xb14d, 0xb14e,
+    0xb14f, 0xb150, 0x003f, 0xb151, 0xb152, 0xb153, 0xb154, 0xb155,
+    0xb156, 0xb157, 0xb158, 0xb159, 0xb15a, 0xb15b, 0x003f, 0x003f,
+    0x003f, 0xb15c, 0xb15d, 0xb15e, 0xb15f, 0xb160, 0xb161, 0xb162,
+    0xb163, 0xb164, 0xb165, 0xb166, 0xb167, 0xb168, 0xb169, 0xb16a,
+    0xb16b, 0xb16c, 0x003f, 0xb16d, 0xb16e, 0xb16f, 0xb170, 0xb171,
+    0xb172, 0xb173, 0xb174, 0xb175, 0xb176, 0xb177, 0x003f, 0x003f,
+    0x003f, 0xb178, 0xb179, 0xb17a, 0xb17b, 0xb17c, 0xb17d, 0xb17e,
+    0xb17f, 0xb180, 0xb181, 0xb182, 0xb183, 0xb184, 0xb185, 0xb186,
+    0xb187, 0xb188, 0x003f, 0xb189, 0xb18a, 0xb18b, 0xb18c, 0xb18d,
+    0xb18e, 0xb18f, 0xb190, 0xb191, 0xb192, 0xb193, 0x003f, 0x003f,
+    0x003f, 0xb194, 0xb195, 0xb196, 0xb197, 0xb198, 0xb199, 0xb19a,
+    0xb19b, 0xb19c, 0xb19d, 0xb19e, 0xb19f, 0xb1a0, 0xb1a1, 0xb1a2,
+    0xb1a3, 0xb1a4, 0x003f, 0xb1a5, 0xb1a6, 0xb1a7, 0xb1a8, 0xb1a9,
+    0xb1aa, 0xb1ab, 0xb1ac, 0xb1ad, 0xb1ae, 0xb1af, 0x003f, 0x003f,
+    0x003f, 0xb1b0, 0xb1b1, 0xb1b2, 0xb1b3, 0xb1b4, 0xb1b5, 0xb1b6,
+    0xb1b7, 0xb1b8, 0xb1b9, 0xb1ba, 0xb1bb, 0xb1bc, 0xb1bd, 0xb1be,
+    0xb1bf, 0xb1c0, 0x003f, 0xb1c1, 0xb1c2, 0xb1c3, 0xb1c4, 0xb1c5,
+    0xb1c6, 0xb1c7, 0xb1c8, 0xb1c9, 0xb1ca, 0xb1cb, 0x003f, 0x003f,
+    /* lead byte 92 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb1cc, 0xb1cd, 0xb1ce, 0xb1cf, 0xb1d0, 0xb1d1, 0xb1d2,
+    0xb1d3, 0xb1d4, 0xb1d5, 0xb1d6, 0xb1d7, 0xb1d8, 0xb1d9, 0xb1da,
+    0xb1db, 0xb1dc, 0x003f, 0xb1dd, 0xb1de, 0xb1df, 0xb1e0, 0xb1e1,
+    0xb1e2, 0xb1e3, 0xb1e4, 0xb1e5, 0xb1e6, 0xb1e7, 0x003f, 0x003f,
+    0x003f, 0xb1e8, 0xb1e9, 0xb1ea, 0xb1eb, 0xb1ec, 0xb1ed, 0xb1ee,
+    0xb1ef, 0xb1f0, 0xb1f1, 0xb1f2, 0xb1f3, 0xb1f4, 0xb1f5, 0xb1f6,
+    0xb1f7, 0xb1f8, 0x003f, 0xb1f9, 0xb1fa, 0xb1fb, 0xb1fc, 0xb1fd,
+    0xb1fe, 0xb1ff, 0xb200, 0xb201, 0xb202, 0xb203, 0x003f, 0x003f,
+    0x003f, 0xb204, 0xb205, 0xb206, 0xb207, 0xb208, 0xb209, 0xb20a,
+    0xb20b, 0xb20c, 0xb20d, 0xb20e, 0xb20f, 0xb210, 0xb211, 0xb212,
+    0xb213, 0xb214, 0x003f, 0xb215, 0xb216, 0xb217, 0xb218, 0xb219,
+    0xb21a, 0xb21b, 0xb21c, 0xb21d, 0xb21e, 0xb21f, 0x003f, 0x003f,
+    0x003f, 0xb220, 0xb221, 0xb222, 0xb223, 0xb224, 0xb225, 0xb226,
+    0xb227, 0xb228, 0xb229, 0xb22a, 0xb22b, 0xb22c, 0xb22d, 0xb22e,
+    0xb22f, 0xb230, 0x003f, 0xb231, 0xb232, 0xb233, 0xb234, 0xb235,
+    0xb236, 0xb237, 0xb238, 0xb239, 0xb23a, 0xb23b, 0x003f, 0x003f,
+    0x003f, 0xb23c, 0xb23d, 0xb23e, 0xb23f, 0xb240, 0xb241, 0xb242,
+    0xb243, 0xb244, 0xb245, 0xb246, 0xb247, 0xb248, 0xb249, 0xb24a,
+    0xb24b, 0xb24c, 0x003f, 0xb24d, 0xb24e, 0xb24f, 0xb250, 0xb251,
+    0xb252, 0xb253, 0xb254, 0xb255, 0xb256, 0xb257, 0x003f, 0x003f,
+    0x003f, 0xb258, 0xb259, 0xb25a, 0xb25b, 0xb25c, 0xb25d, 0xb25e,
+    0xb25f, 0xb260, 0xb261, 0xb262, 0xb263, 0xb264, 0xb265, 0xb266,
+    0xb267, 0xb268, 0x003f, 0xb269, 0xb26a, 0xb26b, 0xb26c, 0xb26d,
+    0xb26e, 0xb26f, 0xb270, 0xb271, 0xb272, 0xb273, 0x003f, 0x003f,
+    /* lead byte 93 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb274, 0xb275, 0xb276, 0xb277, 0xb278, 0xb279, 0xb27a,
+    0xb27b, 0xb27c, 0xb27d, 0xb27e, 0xb27f, 0xb280, 0xb281, 0xb282,
+    0xb283, 0xb284, 0x003f, 0xb285, 0xb286, 0xb287, 0xb288, 0xb289,
+    0xb28a, 0xb28b, 0xb28c, 0xb28d, 0xb28e, 0xb28f, 0x003f, 0x003f,
+    0x003f, 0xb290, 0xb291, 0xb292, 0xb293, 0xb294, 0xb295, 0xb296,
+    0xb297, 0xb298, 0xb299, 0xb29a, 0xb29b, 0xb29c, 0xb29d, 0xb29e,
+    0xb29f, 0xb2a0, 0x003f, 0xb2a1, 0xb2a2, 0xb2a3, 0xb2a4, 0xb2a5,
+    0xb2a6, 0xb2a7, 0xb2a8, 0xb2a9, 0xb2aa, 0xb2ab, 0x003f, 0x003f,
+    0x003f, 0xb2ac, 0xb2ad, 0xb2ae, 0xb2af, 0xb2b0, 0xb2b1, 0xb2b2,
+    0xb2b3, 0xb2b4, 0xb2b5, 0xb2b6, 0xb2b7, 0xb2b8, 0xb2b9, 0xb2ba,
+    0xb2bb, 0xb2bc, 0x003f, 0xb2bd, 0xb2be, 0xb2bf, 0xb2c0, 0xb2c1,
+    0xb2c2, 0xb2c3, 0xb2c4, 0xb2c5, 0xb2c6, 0xb2c7, 0x003f, 0x003f,
+    0x003f, 0xb2c8, 0xb2c9, 0xb2ca, 0xb2cb, 0xb2cc, 0xb2cd, 0xb2ce,
+    0xb2cf, 0xb2d0, 0xb2d1, 0xb2d2, 0xb2d3, 0xb2d4, 0xb2d5, 0xb2d6,
+    0xb2d7, 0xb2d8, 0x003f, 0xb2d9, 0xb2da, 0xb2db, 0xb2dc, 0xb2dd,
+    0xb2de, 0xb2df, 0xb2e0, 0xb2e1, 0xb2e2, 0xb2e3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte 94 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3137, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb2e4, 0xb2e5, 0xb2e6, 0xb2e7, 0xb2e8, 0xb2e9, 0xb2ea,
+    0xb2eb, 0xb2ec, 0xb2ed, 0xb2ee, 0xb2ef, 0xb2f0, 0xb2f1, 0xb2f2,
+    0xb2f3, 0xb2f4, 0x003f, 0xb2f5, 0xb2f6, 0xb2f7, 0xb2f8, 0xb2f9,
+    0xb2fa, 0xb2fb, 0xb2fc, 0xb2fd, 0xb2fe, 0xb2ff, 0x003f, 0x003f,
+    0x003f, 0xb300, 0xb301, 0xb302, 0xb303, 0xb304, 0xb305, 0xb306,
+    0xb307, 0xb308, 0xb309, 0xb30a, 0xb30b, 0xb30c, 0xb30d, 0xb30e,
+    0xb30f, 0xb310, 0x003f, 0xb311, 0xb312, 0xb313, 0xb314, 0xb315,
+    0xb316, 0xb317, 0xb318, 0xb319, 0xb31a, 0xb31b, 0x003f, 0x003f,
+    0x003f, 0xb31c, 0xb31d, 0xb31e, 0xb31f, 0xb320, 0xb321, 0xb322,
+    0xb323, 0xb324, 0xb325, 0xb326, 0xb327, 0xb328, 0xb329, 0xb32a,
+    0xb32b, 0xb32c, 0x003f, 0xb32d, 0xb32e, 0xb32f, 0xb330, 0xb331,
+    0xb332, 0xb333, 0xb334, 0xb335, 0xb336, 0xb337, 0x003f, 0x003f,
+    0x003f, 0xb338, 0xb339, 0xb33a, 0xb33b, 0xb33c, 0xb33d, 0xb33e,
+    0xb33f, 0xb340, 0xb341, 0xb342, 0xb343, 0xb344, 0xb345, 0xb346,
+    0xb347, 0xb348, 0x003f, 0xb349, 0xb34a, 0xb34b, 0xb34c, 0xb34d,
+    0xb34e, 0xb34f, 0xb350, 0xb351, 0xb352, 0xb353, 0x003f, 0x003f,
+    0x003f, 0xb354, 0xb355, 0xb356, 0xb357, 0xb358, 0xb359, 0xb35a,
+    0xb35b, 0xb35c, 0xb35d, 0xb35e, 0xb35f, 0xb360, 0xb361, 0xb362,
+    0xb363, 0xb364, 0x003f, 0xb365, 0xb366, 0xb367, 0xb368, 0xb369,
+    0xb36a, 0xb36b, 0xb36c, 0xb36d, 0xb36e, 0xb36f, 0x003f, 0x003f,
+    /* lead byte 95 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb370, 0xb371, 0xb372, 0xb373, 0xb374, 0xb375, 0xb376,
+    0xb377, 0xb378, 0xb379, 0xb37a, 0xb37b, 0xb37c, 0xb37d, 0xb37e,
+    0xb37f, 0xb380, 0x003f, 0xb381, 0xb382, 0xb383, 0xb384, 0xb385,
+    0xb386, 0xb387, 0xb388, 0xb389, 0xb38a, 0xb38b, 0x003f, 0x003f,
+    0x003f, 0xb38c, 0xb38d, 0xb38e, 0xb38f, 0xb390, 0xb391, 0xb392,
+    0xb393, 0xb394, 0xb395, 0xb396, 0xb397, 0xb398, 0xb399, 0xb39a,
+    0xb39b, 0xb39c, 0x003f, 0xb39d, 0xb39e, 0xb39f, 0xb3a0, 0xb3a1,
+    0xb3a2, 0xb3a3, 0xb3a4, 0xb3a5, 0xb3a6, 0xb3a7, 0x003f, 0x003f,
+    0x003f, 0xb3a8, 0xb3a9, 0xb3aa, 0xb3ab, 0xb3ac, 0xb3ad, 0xb3ae,
+    0xb3af, 0xb3b0, 0xb3b1, 0xb3b2, 0xb3b3, 0xb3b4, 0xb3b5, 0xb3b6,
+    0xb3b7, 0xb3b8, 0x003f, 0xb3b9, 0xb3ba, 0xb3bb, 0xb3bc, 0xb3bd,
+    0xb3be, 0xb3bf, 0xb3c0, 0xb3c1, 0xb3c2, 0xb3c3, 0x003f, 0x003f,
+    0x003f, 0xb3c4, 0xb3c5, 0xb3c6, 0xb3c7, 0xb3c8, 0xb3c9, 0xb3ca,
+    0xb3cb, 0xb3cc, 0xb3cd, 0xb3ce, 0xb3cf, 0xb3d0, 0xb3d1, 0xb3d2,
+    0xb3d3, 0xb3d4, 0x003f, 0xb3d5, 0xb3d6, 0xb3d7, 0xb3d8, 0xb3d9,
+    0xb3da, 0xb3db, 0xb3dc, 0xb3dd, 0xb3de, 0xb3df, 0x003f, 0x003f,
+    0x003f, 0xb3e0, 0xb3e1, 0xb3e2, 0xb3e3, 0xb3e4, 0xb3e5, 0xb3e6,
+    0xb3e7, 0xb3e8, 0xb3e9, 0xb3ea, 0xb3eb, 0xb3ec, 0xb3ed, 0xb3ee,
+    0xb3ef, 0xb3f0, 0x003f, 0xb3f1, 0xb3f2, 0xb3f3, 0xb3f4, 0xb3f5,
+    0xb3f6, 0xb3f7, 0xb3f8, 0xb3f9, 0xb3fa, 0xb3fb, 0x003f, 0x003f,
+    0x003f, 0xb3fc, 0xb3fd, 0xb3fe, 0xb3ff, 0xb400, 0xb401, 0xb402,
+    0xb403, 0xb404, 0xb405, 0xb406, 0xb407, 0xb408, 0xb409, 0xb40a,
+    0xb40b, 0xb40c, 0x003f, 0xb40d, 0xb40e, 0xb40f, 0xb410, 0xb411,
+    0xb412, 0xb413, 0xb414, 0xb415, 0xb416, 0xb417, 0x003f, 0x003f,
+    /* lead byte 96 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb418, 0xb419, 0xb41a, 0xb41b, 0xb41c, 0xb41d, 0xb41e,
+    0xb41f, 0xb420, 0xb421, 0xb422, 0xb423, 0xb424, 0xb425, 0xb426,
+    0xb427, 0xb428, 0x003f, 0xb429, 0xb42a, 0xb42b, 0xb42c, 0xb42d,
+    0xb42e, 0xb42f, 0xb430, 0xb431, 0xb432, 0xb433, 0x003f, 0x003f,
+    0x003f, 0xb434, 0xb435, 0xb436, 0xb437, 0xb438, 0xb439, 0xb43a,
+    0xb43b, 0xb43c, 0xb43d, 0xb43e, 0xb43f, 0xb440, 0xb441, 0xb442,
+    0xb443, 0xb444, 0x003f, 0xb445, 0xb446, 0xb447, 0xb448, 0xb449,
+    0xb44a, 0xb44b, 0xb44c, 0xb44d, 0xb44e, 0xb44f, 0x003f, 0x003f,
+    0x003f, 0xb450, 0xb451, 0xb452, 0xb453, 0xb454, 0xb455, 0xb456,
+    0xb457, 0xb458, 0xb459, 0xb45a, 0xb45b, 0xb45c, 0xb45d, 0xb45e,
+    0xb45f, 0xb460, 0x003f, 0xb461, 0xb462, 0xb463, 0xb464, 0xb465,
+    0xb466, 0xb467, 0xb468, 0xb469, 0xb46a, 0xb46b, 0x003f, 0x003f,
+    0x003f, 0xb46c, 0xb46d, 0xb46e, 0xb46f, 0xb470, 0xb471, 0xb472,
+    0xb473, 0xb474, 0xb475, 0xb476, 0xb477, 0xb478, 0xb479, 0xb47a,
+    0xb47b, 0xb47c, 0x003f, 0xb47d, 0xb47e, 0xb47f, 0xb480, 0xb481,
+    0xb482, 0xb483, 0xb484, 0xb485, 0xb486, 0xb487, 0x003f, 0x003f,
+    0x003f, 0xb488, 0xb489, 0xb48a, 0xb48b, 0xb48c, 0xb48d, 0xb48e,
+    0xb48f, 0xb490, 0xb491, 0xb492, 0xb493, 0xb494, 0xb495, 0xb496,
+    0xb497, 0xb498, 0x003f, 0xb499, 0xb49a, 0xb49b, 0xb49c, 0xb49d,
+    0xb49e, 0xb49f, 0xb4a0, 0xb4a1, 0xb4a2, 0xb4a3, 0x003f, 0x003f,
+    0x003f, 0xb4a4, 0xb4a5, 0xb4a6, 0xb4a7, 0xb4a8, 0xb4a9, 0xb4aa,
+    0xb4ab, 0xb4ac, 0xb4ad, 0xb4ae, 0xb4af, 0xb4b0, 0xb4b1, 0xb4b2,
+    0xb4b3, 0xb4b4, 0x003f, 0xb4b5, 0xb4b6, 0xb4b7, 0xb4b8, 0xb4b9,
+    0xb4ba, 0xb4bb, 0xb4bc, 0xb4bd, 0xb4be, 0xb4bf, 0x003f, 0x003f,
+    /* lead byte 97 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb4c0, 0xb4c1, 0xb4c2, 0xb4c3, 0xb4c4, 0xb4c5, 0xb4c6,
+    0xb4c7, 0xb4c8, 0xb4c9, 0xb4ca, 0xb4cb, 0xb4cc, 0xb4cd, 0xb4ce,
+    0xb4cf, 0xb4d0, 0x003f, 0xb4d1, 0xb4d2, 0xb4d3, 0xb4d4, 0xb4d5,
+    0xb4d6, 0xb4d7, 0xb4d8, 0xb4d9, 0xb4da, 0xb4db, 0x003f, 0x003f,
+    0x003f, 0xb4dc, 0xb4dd, 0xb4de, 0xb4df, 0xb4e0, 0xb4e1, 0xb4e2,
+    0xb4e3, 0xb4e4, 0xb4e5, 0xb4e6, 0xb4e7, 0xb4e8, 0xb4e9, 0xb4ea,
+    0xb4eb, 0xb4ec, 0x003f, 0xb4ed, 0xb4ee, 0xb4ef, 0xb4f0, 0xb4f1,
+    0xb4f2, 0xb4f3, 0xb4f4, 0xb4f5, 0xb4f6, 0xb4f7, 0x003f, 0x003f,
+    0x003f, 0xb4f8, 0xb4f9, 0xb4fa, 0xb4fb, 0xb4fc, 0xb4fd, 0xb4fe,
+    0xb4ff, 0xb500, 0xb501, 0xb502, 0xb503, 0xb504, 0xb505, 0xb506,
+    0xb507, 0xb508, 0x003f, 0xb509, 0xb50a, 0xb50b, 0xb50c, 0xb50d,
+    0xb50e, 0xb50f, 0xb510, 0xb511, 0xb512, 0xb513, 0x003f, 0x003f,
+    0x003f, 0xb514, 0xb515, 0xb516, 0xb517, 0xb518, 0xb519, 0xb51a,
+    0xb51b, 0xb51c, 0xb51d, 0xb51e, 0xb51f, 0xb520, 0xb521, 0xb522,
+    0xb523, 0xb524, 0x003f, 0xb525, 0xb526, 0xb527, 0xb528, 0xb529,
+    0xb52a, 0xb52b, 0xb52c, 0xb52d, 0xb52e, 0xb52f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte 98 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3138, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb530, 0xb531, 0xb532, 0xb533, 0xb534, 0xb535, 0xb536,
+    0xb537, 0xb538, 0xb539, 0xb53a, 0xb53b, 0xb53c, 0xb53d, 0xb53e,
+    0xb53f, 0xb540, 0x003f, 0xb541, 0xb542, 0xb543, 0xb544, 0xb545,
+    0xb546, 0xb547, 0xb548, 0xb549, 0xb54a, 0xb54b, 0x003f, 0x003f,
+    0x003f, 0xb54c, 0xb54d, 0xb54e, 0xb54f, 0xb550, 0xb551, 0xb552,
+    0xb553, 0xb554, 0xb555, 0xb556, 0xb557, 0xb558, 0xb559, 0xb55a,
+    0xb55b, 0xb55c, 0x003f, 0xb55d, 0xb55e, 0xb55f, 0xb560, 0xb561,
+    0xb562, 0xb563, 0xb564, 0xb565, 0xb566, 0xb567, 0x003f, 0x003f,
+    0x003f, 0xb568, 0xb569, 0xb56a, 0xb56b, 0xb56c, 0xb56d, 0xb56e,
+    0xb56f, 0xb570, 0xb571, 0xb572, 0xb573, 0xb574, 0xb575, 0xb576,
+    0xb577, 0xb578, 0x003f, 0xb579, 0xb57a, 0xb57b, 0xb57c, 0xb57d,
+    0xb57e, 0xb57f, 0xb580, 0xb581, 0xb582, 0xb583, 0x003f, 0x003f,
+    0x003f, 0xb584, 0xb585, 0xb586, 0xb587, 0xb588, 0xb589, 0xb58a,
+    0xb58b, 0xb58c, 0xb58d, 0xb58e, 0xb58f, 0xb590, 0xb591, 0xb592,
+    0xb593, 0xb594, 0x003f, 0xb595, 0xb596, 0xb597, 0xb598, 0xb599,
+    0xb59a, 0xb59b, 0xb59c, 0xb59d, 0xb59e, 0xb59f, 0x003f, 0x003f,
+    0x003f, 0xb5a0, 0xb5a1, 0xb5a2, 0xb5a3, 0xb5a4, 0xb5a5, 0xb5a6,
+    0xb5a7, 0xb5a8, 0xb5a9, 0xb5aa, 0xb5ab, 0xb5ac, 0xb5ad, 0xb5ae,
+    0xb5af, 0xb5b0, 0x003f, 0xb5b1, 0xb5b2, 0xb5b3, 0xb5b4, 0xb5b5,
+    0xb5b6, 0xb5b7, 0xb5b8, 0xb5b9, 0xb5ba, 0xb5bb, 0x003f, 0x003f,
+    /* lead byte 99 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb5bc, 0xb5bd, 0xb5be, 0xb5bf, 0xb5c0, 0xb5c1, 0xb5c2,
+    0xb5c3, 0xb5c4, 0xb5c5, 0xb5c6, 0xb5c7, 0xb5c8, 0xb5c9, 0xb5ca,
+    0xb5cb, 0xb5cc, 0x003f, 0xb5cd, 0xb5ce, 0xb5cf, 0xb5d0, 0xb5d1,
+    0xb5d2, 0xb5d3, 0xb5d4, 0xb5d5, 0xb5d6, 0xb5d7, 0x003f, 0x003f,
+    0x003f, 0xb5d8, 0xb5d9, 0xb5da, 0xb5db, 0xb5dc, 0xb5dd, 0xb5de,
+    0xb5df, 0xb5e0, 0xb5e1, 0xb5e2, 0xb5e3, 0xb5e4, 0xb5e5, 0xb5e6,
+    0xb5e7, 0xb5e8, 0x003f, 0xb5e9, 0xb5ea, 0xb5eb, 0xb5ec, 0xb5ed,
+    0xb5ee, 0xb5ef, 0xb5f0, 0xb5f1, 0xb5f2, 0xb5f3, 0x003f, 0x003f,
+    0x003f, 0xb5f4, 0xb5f5, 0xb5f6, 0xb5f7, 0xb5f8, 0xb5f9, 0xb5fa,
+    0xb5fb, 0xb5fc, 0xb5fd, 0xb5fe, 0xb5ff, 0xb600, 0xb601, 0xb602,
+    0xb603, 0xb604, 0x003f, 0xb605, 0xb606, 0xb607, 0xb608, 0xb609,
+    0xb60a, 0xb60b, 0xb60c, 0xb60d, 0xb60e, 0xb60f, 0x003f, 0x003f,
+    0x003f, 0xb610, 0xb611, 0xb612, 0xb613, 0xb614, 0xb615, 0xb616,
+    0xb617, 0xb618, 0xb619, 0xb61a, 0xb61b, 0xb61c, 0xb61d, 0xb61e,
+    0xb61f, 0xb620, 0x003f, 0xb621, 0xb622, 0xb623, 0xb624, 0xb625,
+    0xb626, 0xb627, 0xb628, 0xb629, 0xb62a, 0xb62b, 0x003f, 0x003f,
+    0x003f, 0xb62c, 0xb62d, 0xb62e, 0xb62f, 0xb630, 0xb631, 0xb632,
+    0xb633, 0xb634, 0xb635, 0xb636, 0xb637, 0xb638, 0xb639, 0xb63a,
+    0xb63b, 0xb63c, 0x003f, 0xb63d, 0xb63e, 0xb63f, 0xb640, 0xb641,
+    0xb642, 0xb643, 0xb644, 0xb645, 0xb646, 0xb647, 0x003f, 0x003f,
+    0x003f, 0xb648, 0xb649, 0xb64a, 0xb64b, 0xb64c, 0xb64d, 0xb64e,
+    0xb64f, 0xb650, 0xb651, 0xb652, 0xb653, 0xb654, 0xb655, 0xb656,
+    0xb657, 0xb658, 0x003f, 0xb659, 0xb65a, 0xb65b, 0xb65c, 0xb65d,
+    0xb65e, 0xb65f, 0xb660, 0xb661, 0xb662, 0xb663, 0x003f, 0x003f,
+    /* lead byte 9a */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb664, 0xb665, 0xb666, 0xb667, 0xb668, 0xb669, 0xb66a,
+    0xb66b, 0xb66c, 0xb66d, 0xb66e, 0xb66f, 0xb670, 0xb671, 0xb672,
+    0xb673, 0xb674, 0x003f, 0xb675, 0xb676, 0xb677, 0xb678, 0xb679,
+    0xb67a, 0xb67b, 0xb67c, 0xb67d, 0xb67e, 0xb67f, 0x003f, 0x003f,
+    0x003f, 0xb680, 0xb681, 0xb682, 0xb683, 0xb684, 0xb685, 0xb686,
+    0xb687, 0xb688, 0xb689, 0xb68a, 0xb68b, 0xb68c, 0xb68d, 0xb68e,
+    0xb68f, 0xb690, 0x003f, 0xb691, 0xb692, 0xb693, 0xb694, 0xb695,
+    0xb696, 0xb697, 0xb698, 0xb699, 0xb69a, 0xb69b, 0x003f, 0x003f,
+    0x003f, 0xb69c, 0xb69d, 0xb69e, 0xb69f, 0xb6a0, 0xb6a1, 0xb6a2,
+    0xb6a3, 0xb6a4, 0xb6a5, 0xb6a6, 0xb6a7, 0xb6a8, 0xb6a9, 0xb6aa,
+    0xb6ab, 0xb6ac, 0x003f, 0xb6ad, 0xb6ae, 0xb6af, 0xb6b0, 0xb6b1,
+    0xb6b2, 0xb6b3, 0xb6b4, 0xb6b5, 0xb6b6, 0xb6b7, 0x003f, 0x003f,
+    0x003f, 0xb6b8, 0xb6b9, 0xb6ba, 0xb6bb, 0xb6bc, 0xb6bd, 0xb6be,
+    0xb6bf, 0xb6c0, 0xb6c1, 0xb6c2, 0xb6c3, 0xb6c4, 0xb6c5, 0xb6c6,
+    0xb6c7, 0xb6c8, 0x003f, 0xb6c9, 0xb6ca, 0xb6cb, 0xb6cc, 0xb6cd,
+    0xb6ce, 0xb6cf, 0xb6d0, 0xb6d1, 0xb6d2, 0xb6d3, 0x003f, 0x003f,
+    0x003f, 0xb6d4, 0xb6d5, 0xb6d6, 0xb6d7, 0xb6d8, 0xb6d9, 0xb6da,
+    0xb6db, 0xb6dc, 0xb6dd, 0xb6de, 0xb6df, 0xb6e0, 0xb6e1, 0xb6e2,
+    0xb6e3, 0xb6e4, 0x003f, 0xb6e5, 0xb6e6, 0xb6e7, 0xb6e8, 0xb6e9,
+    0xb6ea, 0xb6eb, 0xb6ec, 0xb6ed, 0xb6ee, 0xb6ef, 0x003f, 0x003f,
+    0x003f, 0xb6f0, 0xb6f1, 0xb6f2, 0xb6f3, 0xb6f4, 0xb6f5, 0xb6f6,
+    0xb6f7, 0xb6f8, 0xb6f9, 0xb6fa, 0xb6fb, 0xb6fc, 0xb6fd, 0xb6fe,
+    0xb6ff, 0xb700, 0x003f, 0xb701, 0xb702, 0xb703, 0xb704, 0xb705,
+    0xb706, 0xb707, 0xb708, 0xb709, 0xb70a, 0xb70b, 0x003f, 0x003f,
+    /* lead byte 9b */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb70c, 0xb70d, 0xb70e, 0xb70f, 0xb710, 0xb711, 0xb712,
+    0xb713, 0xb714, 0xb715, 0xb716, 0xb717, 0xb718, 0xb719, 0xb71a,
+    0xb71b, 0xb71c, 0x003f, 0xb71d, 0xb71e, 0xb71f, 0xb720, 0xb721,
+    0xb722, 0xb723, 0xb724, 0xb725, 0xb726, 0xb727, 0x003f, 0x003f,
+    0x003f, 0xb728, 0xb729, 0xb72a, 0xb72b, 0xb72c, 0xb72d, 0xb72e,
+    0xb72f, 0xb730, 0xb731, 0xb732, 0xb733, 0xb734, 0xb735, 0xb736,
+    0xb737, 0xb738, 0x003f, 0xb739, 0xb73a, 0xb73b, 0xb73c, 0xb73d,
+    0xb73e, 0xb73f, 0xb740, 0xb741, 0xb742, 0xb743, 0x003f, 0x003f,
+    0x003f, 0xb744, 0xb745, 0xb746, 0xb747, 0xb748, 0xb749, 0xb74a,
+    0xb74b, 0xb74c, 0xb74d, 0xb74e, 0xb74f, 0xb750, 0xb751, 0xb752,
+    0xb753, 0xb754, 0x003f, 0xb755, 0xb756, 0xb757, 0xb758, 0xb759,
+    0xb75a, 0xb75b, 0xb75c, 0xb75d, 0xb75e, 0xb75f, 0x003f, 0x003f,
+    0x003f, 0xb760, 0xb761, 0xb762, 0xb763, 0xb764, 0xb765, 0xb766,
+    0xb767, 0xb768, 0xb769, 0xb76a, 0xb76b, 0xb76c, 0xb76d, 0xb76e,
+    0xb76f, 0xb770, 0x003f, 0xb771, 0xb772, 0xb773, 0xb774, 0xb775,
+    0xb776, 0xb777, 0xb778, 0xb779, 0xb77a, 0xb77b, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte 9c */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3139, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb77c, 0xb77d, 0xb77e, 0xb77f, 0xb780, 0xb781, 0xb782,
+    0xb783, 0xb784, 0xb785, 0xb786, 0xb787, 0xb788, 0xb789, 0xb78a,
+    0xb78b, 0xb78c, 0x003f, 0xb78d, 0xb78e, 0xb78f, 0xb790, 0xb791,
+    0xb792, 0xb793, 0xb794, 0xb795, 0xb796, 0xb797, 0x003f, 0x003f,
+    0x003f, 0xb798, 0xb799, 0xb79a, 0xb79b, 0xb79c, 0xb79d, 0xb79e,
+    0xb79f, 0xb7a0, 0xb7a1, 0xb7a2, 0xb7a3, 0xb7a4, 0xb7a5, 0xb7a6,
+    0xb7a7, 0xb7a8, 0x003f, 0xb7a9, 0xb7aa, 0xb7ab, 0xb7ac, 0xb7ad,
+    0xb7ae, 0xb7af, 0xb7b0, 0xb7b1, 0xb7b2, 0xb7b3, 0x003f, 0x003f,
+    0x003f, 0xb7b4, 0xb7b5, 0xb7b6, 0xb7b7, 0xb7b8, 0xb7b9, 0xb7ba,
+    0xb7bb, 0xb7bc, 0xb7bd, 0xb7be, 0xb7bf, 0xb7c0, 0xb7c1, 0xb7c2,
+    0xb7c3, 0xb7c4, 0x003f, 0xb7c5, 0xb7c6, 0xb7c7, 0xb7c8, 0xb7c9,
+    0xb7ca, 0xb7cb, 0xb7cc, 0xb7cd, 0xb7ce, 0xb7cf, 0x003f, 0x003f,
+    0x003f, 0xb7d0, 0xb7d1, 0xb7d2, 0xb7d3, 0xb7d4, 0xb7d5, 0xb7d6,
+    0xb7d7, 0xb7d8, 0xb7d9, 0xb7da, 0xb7db, 0xb7dc, 0xb7dd, 0xb7de,
+    0xb7df, 0xb7e0, 0x003f, 0xb7e1, 0xb7e2, 0xb7e3, 0xb7e4, 0xb7e5,
+    0xb7e6, 0xb7e7, 0xb7e8, 0xb7e9, 0xb7ea, 0xb7eb, 0x003f, 0x003f,
+    0x003f, 0xb7ec, 0xb7ed, 0xb7ee, 0xb7ef, 0xb7f0, 0xb7f1, 0xb7f2,
+    0xb7f3, 0xb7f4, 0xb7f5, 0xb7f6, 0xb7f7, 0xb7f8, 0xb7f9, 0xb7fa,
+    0xb7fb, 0xb7fc, 0x003f, 0xb7fd, 0xb7fe, 0xb7ff, 0xb800, 0xb801,
+    0xb802, 0xb803, 0xb804, 0xb805, 0xb806, 0xb807, 0x003f, 0x003f,
+    /* lead byte 9d */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb808, 0xb809, 0xb80a, 0xb80b, 0xb80c, 0xb80d, 0xb80e,
+    0xb80f, 0xb810, 0xb811, 0xb812, 0xb813, 0xb814, 0xb815, 0xb816,
+    0xb817, 0xb818, 0x003f, 0xb819, 0xb81a, 0xb81b, 0xb81c, 0xb81d,
+    0xb81e, 0xb81f, 0xb820, 0xb821, 0xb822, 0xb823, 0x003f, 0x003f,
+    0x003f, 0xb824, 0xb825, 0xb826, 0xb827, 0xb828, 0xb829, 0xb82a,
+    0xb82b, 0xb82c, 0xb82d, 0xb82e, 0xb82f, 0xb830, 0xb831, 0xb832,
+    0xb833, 0xb834, 0x003f, 0xb835, 0xb836, 0xb837, 0xb838, 0xb839,
+    0xb83a, 0xb83b, 0xb83c, 0xb83d, 0xb83e, 0xb83f, 0x003f, 0x003f,
+    0x003f, 0xb840, 0xb841, 0xb842, 0xb843, 0xb844, 0xb845, 0xb846,
+    0xb847, 0xb848, 0xb849, 0xb84a, 0xb84b, 0xb84c, 0xb84d, 0xb84e,
+    0xb84f, 0xb850, 0x003f, 0xb851, 0xb852, 0xb853, 0xb854, 0xb855,
+    0xb856, 0xb857, 0xb858, 0xb859, 0xb85a, 0xb85b, 0x003f, 0x003f,
+    0x003f, 0xb85c, 0xb85d, 0xb85e, 0xb85f, 0xb860, 0xb861, 0xb862,
+    0xb863, 0xb864, 0xb865, 0xb866, 0xb867, 0xb868, 0xb869, 0xb86a,
+    0xb86b, 0xb86c, 0x003f, 0xb86d, 0xb86e, 0xb86f, 0xb870, 0xb871,
+    0xb872, 0xb873, 0xb874, 0xb875, 0xb876, 0xb877, 0x003f, 0x003f,
+    0x003f, 0xb878, 0xb879, 0xb87a, 0xb87b, 0xb87c, 0xb87d, 0xb87e,
+    0xb87f, 0xb880, 0xb881, 0xb882, 0xb883, 0xb884, 0xb885, 0xb886,
+    0xb887, 0xb888, 0x003f, 0xb889, 0xb88a, 0xb88b, 0xb88c, 0xb88d,
+    0xb88e, 0xb88f, 0xb890, 0xb891, 0xb892, 0xb893, 0x003f, 0x003f,
+    0x003f, 0xb894, 0xb895, 0xb896, 0xb897, 0xb898, 0xb899, 0xb89a,
+    0xb89b, 0xb89c, 0xb89d, 0xb89e, 0xb89f, 0xb8a0, 0xb8a1, 0xb8a2,
+    0xb8a3, 0xb8a4, 0x003f, 0xb8a5, 0xb8a6, 0xb8a7, 0xb8a8, 0xb8a9,
+    0xb8aa, 0xb8ab, 0xb8ac, 0xb8ad, 0xb8ae, 0xb8af, 0x003f, 0x003f,
+    /* lead byte 9e */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb8b0, 0xb8b1, 0xb8b2, 0xb8b3, 0xb8b4, 0xb8b5, 0xb8b6,
+    0xb8b7, 0xb8b8, 0xb8b9, 0xb8ba, 0xb8bb, 0xb8bc, 0xb8bd, 0xb8be,
+    0xb8bf, 0xb8c0, 0x003f, 0xb8c1, 0xb8c2, 0xb8c3, 0xb8c4, 0xb8c5,
+    0xb8c6, 0xb8c7, 0xb8c8, 0xb8c9, 0xb8ca, 0xb8cb, 0x003f, 0x003f,
+    0x003f, 0xb8cc, 0xb8cd, 0xb8ce, 0xb8cf, 0xb8d0, 0xb8d1, 0xb8d2,
+    0xb8d3, 0xb8d4, 0xb8d5, 0xb8d6, 0xb8d7, 0xb8d8, 0xb8d9, 0xb8da,
+    0xb8db, 0xb8dc, 0x003f, 0xb8dd, 0xb8de, 0xb8df, 0xb8e0, 0xb8e1,
+    0xb8e2, 0xb8e3, 0xb8e4, 0xb8e5, 0xb8e6, 0xb8e7, 0x003f, 0x003f,
+    0x003f, 0xb8e8, 0xb8e9, 0xb8ea, 0xb8eb, 0xb8ec, 0xb8ed, 0xb8ee,
+    0xb8ef, 0xb8f0, 0xb8f1, 0xb8f2, 0xb8f3, 0xb8f4, 0xb8f5, 0xb8f6,
+    0xb8f7, 0xb8f8, 0x003f, 0xb8f9, 0xb8fa, 0xb8fb, 0xb8fc, 0xb8fd,
+    0xb8fe, 0xb8ff, 0xb900, 0xb901, 0xb902, 0xb903, 0x003f, 0x003f,
+    0x003f, 0xb904, 0xb905, 0xb906, 0xb907, 0xb908, 0xb909, 0xb90a,
+    0xb90b, 0xb90c, 0xb90d, 0xb90e, 0xb90f, 0xb910, 0xb911, 0xb912,
+    0xb913, 0xb914, 0x003f, 0xb915, 0xb916, 0xb917, 0xb918, 0xb919,
+    0xb91a, 0xb91b, 0xb91c, 0xb91d, 0xb91e, 0xb91f, 0x003f, 0x003f,
+    0x003f, 0xb920, 0xb921, 0xb922, 0xb923, 0xb924, 0xb925, 0xb926,
+    0xb927, 0xb928, 0xb929, 0xb92a, 0xb92b, 0xb92c, 0xb92d, 0xb92e,
+    0xb92f, 0xb930, 0x003f, 0xb931, 0xb932, 0xb933, 0xb934, 0xb935,
+    0xb936, 0xb937, 0xb938, 0xb939, 0xb93a, 0xb93b, 0x003f, 0x003f,
+    0x003f, 0xb93c, 0xb93d, 0xb93e, 0xb93f, 0xb940, 0xb941, 0xb942,
+    0xb943, 0xb944, 0xb945, 0xb946, 0xb947, 0xb948, 0xb949, 0xb94a,
+    0xb94b, 0xb94c, 0x003f, 0xb94d, 0xb94e, 0xb94f, 0xb950, 0xb951,
+    0xb952, 0xb953, 0xb954, 0xb955, 0xb956, 0xb957, 0x003f, 0x003f,
+    /* lead byte 9f */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb958, 0xb959, 0xb95a, 0xb95b, 0xb95c, 0xb95d, 0xb95e,
+    0xb95f, 0xb960, 0xb961, 0xb962, 0xb963, 0xb964, 0xb965, 0xb966,
+    0xb967, 0xb968, 0x003f, 0xb969, 0xb96a, 0xb96b, 0xb96c, 0xb96d,
+    0xb96e, 0xb96f, 0xb970, 0xb971, 0xb972, 0xb973, 0x003f, 0x003f,
+    0x003f, 0xb974, 0xb975, 0xb976, 0xb977, 0xb978, 0xb979, 0xb97a,
+    0xb97b, 0xb97c, 0xb97d, 0xb97e, 0xb97f, 0xb980, 0xb981, 0xb982,
+    0xb983, 0xb984, 0x003f, 0xb985, 0xb986, 0xb987, 0xb988, 0xb989,
+    0xb98a, 0xb98b, 0xb98c, 0xb98d, 0xb98e, 0xb98f, 0x003f, 0x003f,
+    0x003f, 0xb990, 0xb991, 0xb992, 0xb993, 0xb994, 0xb995, 0xb996,
+    0xb997, 0xb998, 0xb999, 0xb99a, 0xb99b, 0xb99c, 0xb99d, 0xb99e,
+    0xb99f, 0xb9a0, 0x003f, 0xb9a1, 0xb9a2, 0xb9a3, 0xb9a4, 0xb9a5,
+    0xb9a6, 0xb9a7, 0xb9a8, 0xb9a9, 0xb9aa, 0xb9ab, 0x003f, 0x003f,
+    0x003f, 0xb9ac, 0xb9ad, 0xb9ae, 0xb9af, 0xb9b0, 0xb9b1, 0xb9b2,
+    0xb9b3, 0xb9b4, 0xb9b5, 0xb9b6, 0xb9b7, 0xb9b8, 0xb9b9, 0xb9ba,
+    0xb9bb, 0xb9bc, 0x003f, 0xb9bd, 0xb9be, 0xb9bf, 0xb9c0, 0xb9c1,
+    0xb9c2, 0xb9c3, 0xb9c4, 0xb9c5, 0xb9c6, 0xb9c7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte a0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3141, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb9c8, 0xb9c9, 0xb9ca, 0xb9cb, 0xb9cc, 0xb9cd, 0xb9ce,
+    0xb9cf, 0xb9d0, 0xb9d1, 0xb9d2, 0xb9d3, 0xb9d4, 0xb9d5, 0xb9d6,
+    0xb9d7, 0xb9d8, 0x003f, 0xb9d9, 0xb9da, 0xb9db, 0xb9dc, 0xb9dd,
+    0xb9de, 0xb9df, 0xb9e0, 0xb9e1, 0xb9e2, 0xb9e3, 0x003f, 0x003f,
+    0x003f, 0xb9e4, 0xb9e5, 0xb9e6, 0xb9e7, 0xb9e8, 0xb9e9, 0xb9ea,
+    0xb9eb, 0xb9ec, 0xb9ed, 0xb9ee, 0xb9ef, 0xb9f0, 0xb9f1, 0xb9f2,
+    0xb9f3, 0xb9f4, 0x003f, 0xb9f5, 0xb9f6, 0xb9f7, 0xb9f8, 0xb9f9,
+    0xb9fa, 0xb9fb, 0xb9fc, 0xb9fd, 0xb9fe, 0xb9ff, 0x003f, 0x003f,
+    0x003f, 0xba00, 0xba01, 0xba02, 0xba03, 0xba04, 0xba05, 0xba06,
+    0xba07, 0xba08, 0xba09, 0xba0a, 0xba0b, 0xba0c, 0xba0d, 0xba0e,
+    0xba0f, 0xba10, 0x003f, 0xba11, 0xba12, 0xba13, 0xba14, 0xba15,
+    0xba16, 0xba17, 0xba18, 0xba19, 0xba1a, 0xba1b, 0x003f, 0x003f,
+    0x003f, 0xba1c, 0xba1d, 0xba1e, 0xba1f, 0xba20, 0xba21, 0xba22,
+    0xba23, 0xba24, 0xba25, 0xba26, 0xba27, 0xba28, 0xba29, 0xba2a,
+    0xba2b, 0xba2c, 0x003f, 0xba2d, 0xba2e, 0xba2f, 0xba30, 0xba31,
+    0xba32, 0xba33, 0xba34, 0xba35, 0xba36, 0xba37, 0x003f, 0x003f,
+    0x003f, 0xba38, 0xba39, 0xba3a, 0xba3b, 0xba3c, 0xba3d, 0xba3e,
+    0xba3f, 0xba40, 0xba41, 0xba42, 0xba43, 0xba44, 0xba45, 0xba46,
+    0xba47, 0xba48, 0x003f, 0xba49, 0xba4a, 0xba4b, 0xba4c, 0xba4d,
+    0xba4e, 0xba4f, 0xba50, 0xba51, 0xba52, 0xba53, 0x003f, 0x003f,
+    /* lead byte a1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xba54, 0xba55, 0xba56, 0xba57, 0xba58, 0xba59, 0xba5a,
+    0xba5b, 0xba5c, 0xba5d, 0xba5e, 0xba5f, 0xba60, 0xba61, 0xba62,
+    0xba63, 0xba64, 0x003f, 0xba65, 0xba66, 0xba67, 0xba68, 0xba69,
+    0xba6a, 0xba6b, 0xba6c, 0xba6d, 0xba6e, 0xba6f, 0x003f, 0x003f,
+    0x003f, 0xba70, 0xba71, 0xba72, 0xba73, 0xba74, 0xba75, 0xba76,
+    0xba77, 0xba78, 0xba79, 0xba7a, 0xba7b, 0xba7c, 0xba7d, 0xba7e,
+    0xba7f, 0xba80, 0x003f, 0xba81, 0xba82, 0xba83, 0xba84, 0xba85,
+    0xba86, 0xba87, 0xba88, 0xba89, 0xba8a, 0xba8b, 0x003f, 0x003f,
+    0x003f, 0xba8c, 0xba8d, 0xba8e, 0xba8f, 0xba90, 0xba91, 0xba92,
+    0xba93, 0xba94, 0xba95, 0xba96, 0xba97, 0xba98, 0xba99, 0xba9a,
+    0xba9b, 0xba9c, 0x003f, 0xba9d, 0xba9e, 0xba9f, 0xbaa0, 0xbaa1,
+    0xbaa2, 0xbaa3, 0xbaa4, 0xbaa5, 0xbaa6, 0xbaa7, 0x003f, 0x003f,
+    0x003f, 0xbaa8, 0xbaa9, 0xbaaa, 0xbaab, 0xbaac, 0xbaad, 0xbaae,
+    0xbaaf, 0xbab0, 0xbab1, 0xbab2, 0xbab3, 0xbab4, 0xbab5, 0xbab6,
+    0xbab7, 0xbab8, 0x003f, 0xbab9, 0xbaba, 0xbabb, 0xbabc, 0xbabd,
+    0xbabe, 0xbabf, 0xbac0, 0xbac1, 0xbac2, 0xbac3, 0x003f, 0x003f,
+    0x003f, 0xbac4, 0xbac5, 0xbac6, 0xbac7, 0xbac8, 0xbac9, 0xbaca,
+    0xbacb, 0xbacc, 0xbacd, 0xbace, 0xbacf, 0xbad0, 0xbad1, 0xbad2,
+    0xbad3, 0xbad4, 0x003f, 0xbad5, 0xbad6, 0xbad7, 0xbad8, 0xbad9,
+    0xbada, 0xbadb, 0xbadc, 0xbadd, 0xbade, 0xbadf, 0x003f, 0x003f,
+    0x003f, 0xbae0, 0xbae1, 0xbae2, 0xbae3, 0xbae4, 0xbae5, 0xbae6,
+    0xbae7, 0xbae8, 0xbae9, 0xbaea, 0xbaeb, 0xbaec, 0xbaed, 0xbaee,
+    0xbaef, 0xbaf0, 0x003f, 0xbaf1, 0xbaf2, 0xbaf3, 0xbaf4, 0xbaf5,
+    0xbaf6, 0xbaf7, 0xbaf8, 0xbaf9, 0xbafa, 0xbafb, 0x003f, 0x003f,
+    /* lead byte a2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbafc, 0xbafd, 0xbafe, 0xbaff, 0xbb00, 0xbb01, 0xbb02,
+    0xbb03, 0xbb04, 0xbb05, 0xbb06, 0xbb07, 0xbb08, 0xbb09, 0xbb0a,
+    0xbb0b, 0xbb0c, 0x003f, 0xbb0d, 0xbb0e, 0xbb0f, 0xbb10, 0xbb11,
+    0xbb12, 0xbb13, 0xbb14, 0xbb15, 0xbb16, 0xbb17, 0x003f, 0x003f,
+    0x003f, 0xbb18, 0xbb19, 0xbb1a, 0xbb1b, 0xbb1c, 0xbb1d, 0xbb1e,
+    0xbb1f, 0xbb20, 0xbb21, 0xbb22, 0xbb23, 0xbb24, 0xbb25, 0xbb26,
+    0xbb27, 0xbb28, 0x003f, 0xbb29, 0xbb2a, 0xbb2b, 0xbb2c, 0xbb2d,
+    0xbb2e, 0xbb2f, 0xbb30, 0xbb31, 0xbb32, 0xbb33, 0x003f, 0x003f,
+    0x003f, 0xbb34, 0xbb35, 0xbb36, 0xbb37, 0xbb38, 0xbb39, 0xbb3a,
+    0xbb3b, 0xbb3c, 0xbb3d, 0xbb3e, 0xbb3f, 0xbb40, 0xbb41, 0xbb42,
+    0xbb43, 0xbb44, 0x003f, 0xbb45, 0xbb46, 0xbb47, 0xbb48, 0xbb49,
+    0xbb4a, 0xbb4b, 0xbb4c, 0xbb4d, 0xbb4e, 0xbb4f, 0x003f, 0x003f,
+    0x003f, 0xbb50, 0xbb51, 0xbb52, 0xbb53, 0xbb54, 0xbb55, 0xbb56,
+    0xbb57, 0xbb58, 0xbb59, 0xbb5a, 0xbb5b, 0xbb5c, 0xbb5d, 0xbb5e,
+    0xbb5f, 0xbb60, 0x003f, 0xbb61, 0xbb62, 0xbb63, 0xbb64, 0xbb65,
+    0xbb66, 0xbb67, 0xbb68, 0xbb69, 0xbb6a, 0xbb6b, 0x003f, 0x003f,
+    0x003f, 0xbb6c, 0xbb6d, 0xbb6e, 0xbb6f, 0xbb70, 0xbb71, 0xbb72,
+    0xbb73, 0xbb74, 0xbb75, 0xbb76, 0xbb77, 0xbb78, 0xbb79, 0xbb7a,
+    0xbb7b, 0xbb7c, 0x003f, 0xbb7d, 0xbb7e, 0xbb7f, 0xbb80, 0xbb81,
+    0xbb82, 0xbb83, 0xbb84, 0xbb85, 0xbb86, 0xbb87, 0x003f, 0x003f,
+    0x003f, 0xbb88, 0xbb89, 0xbb8a, 0xbb8b, 0xbb8c, 0xbb8d, 0xbb8e,
+    0xbb8f, 0xbb90, 0xbb91, 0xbb92, 0xbb93, 0xbb94, 0xbb95, 0xbb96,
+    0xbb97, 0xbb98, 0x003f, 0xbb99, 0xbb9a, 0xbb9b, 0xbb9c, 0xbb9d,
+    0xbb9e, 0xbb9f, 0xbba0, 0xbba1, 0xbba2, 0xbba3, 0x003f, 0x003f,
+    /* lead byte a3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbba4, 0xbba5, 0xbba6, 0xbba7, 0xbba8, 0xbba9, 0xbbaa,
+    0xbbab, 0xbbac, 0xbbad, 0xbbae, 0xbbaf, 0xbbb0, 0xbbb1, 0xbbb2,
+    0xbbb3, 0xbbb4, 0x003f, 0xbbb5, 0xbbb6, 0xbbb7, 0xbbb8, 0xbbb9,
+    0xbbba, 0xbbbb, 0xbbbc, 0xbbbd, 0xbbbe, 0xbbbf, 0x003f, 0x003f,
+    0x003f, 0xbbc0, 0xbbc1, 0xbbc2, 0xbbc3, 0xbbc4, 0xbbc5, 0xbbc6,
+    0xbbc7, 0xbbc8, 0xbbc9, 0xbbca, 0xbbcb, 0xbbcc, 0xbbcd, 0xbbce,
+    0xbbcf, 0xbbd0, 0x003f, 0xbbd1, 0xbbd2, 0xbbd3, 0xbbd4, 0xbbd5,
+    0xbbd6, 0xbbd7, 0xbbd8, 0xbbd9, 0xbbda, 0xbbdb, 0x003f, 0x003f,
+    0x003f, 0xbbdc, 0xbbdd, 0xbbde, 0xbbdf, 0xbbe0, 0xbbe1, 0xbbe2,
+    0xbbe3, 0xbbe4, 0xbbe5, 0xbbe6, 0xbbe7, 0xbbe8, 0xbbe9, 0xbbea,
+    0xbbeb, 0xbbec, 0x003f, 0xbbed, 0xbbee, 0xbbef, 0xbbf0, 0xbbf1,
+    0xbbf2, 0xbbf3, 0xbbf4, 0xbbf5, 0xbbf6, 0xbbf7, 0x003f, 0x003f,
+    0x003f, 0xbbf8, 0xbbf9, 0xbbfa, 0xbbfb, 0xbbfc, 0xbbfd, 0xbbfe,
+    0xbbff, 0xbc00, 0xbc01, 0xbc02, 0xbc03, 0xbc04, 0xbc05, 0xbc06,
+    0xbc07, 0xbc08, 0x003f, 0xbc09, 0xbc0a, 0xbc0b, 0xbc0c, 0xbc0d,
+    0xbc0e, 0xbc0f, 0xbc10, 0xbc11, 0xbc12, 0xbc13, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte a4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3142, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbc14, 0xbc15, 0xbc16, 0xbc17, 0xbc18, 0xbc19, 0xbc1a,
+    0xbc1b, 0xbc1c, 0xbc1d, 0xbc1e, 0xbc1f, 0xbc20, 0xbc21, 0xbc22,
+    0xbc23, 0xbc24, 0x003f, 0xbc25, 0xbc26, 0xbc27, 0xbc28, 0xbc29,
+    0xbc2a, 0xbc2b, 0xbc2c, 0xbc2d, 0xbc2e, 0xbc2f, 0x003f, 0x003f,
+    0x003f, 0xbc30, 0xbc31, 0xbc32, 0xbc33, 0xbc34, 0xbc35, 0xbc36,
+    0xbc37, 0xbc38, 0xbc39, 0xbc3a, 0xbc3b, 0xbc3c, 0xbc3d, 0xbc3e,
+    0xbc3f, 0xbc40, 0x003f, 0xbc41, 0xbc42, 0xbc43, 0xbc44, 0xbc45,
+    0xbc46, 0xbc47, 0xbc48, 0xbc49, 0xbc4a, 0xbc4b, 0x003f, 0x003f,
+    0x003f, 0xbc4c, 0xbc4d, 0xbc4e, 0xbc4f, 0xbc50, 0xbc51, 0xbc52,
+    0xbc53, 0xbc54, 0xbc55, 0xbc56, 0xbc57, 0xbc58, 0xbc59, 0xbc5a,
+    0xbc5b, 0xbc5c, 0x003f, 0xbc5d, 0xbc5e, 0xbc5f, 0xbc60, 0xbc61,
+    0xbc62, 0xbc63, 0xbc64, 0xbc65, 0xbc66, 0xbc67, 0x003f, 0x003f,
+    0x003f, 0xbc68, 0xbc69, 0xbc6a, 0xbc6b, 0xbc6c, 0xbc6d, 0xbc6e,
+    0xbc6f, 0xbc70, 0xbc71, 0xbc72, 0xbc73, 0xbc74, 0xbc75, 0xbc76,
+    0xbc77, 0xbc78, 0x003f, 0xbc79, 0xbc7a, 0xbc7b, 0xbc7c, 0xbc7d,
+    0xbc7e, 0xbc7f, 0xbc80, 0xbc81, 0xbc82, 0xbc83, 0x003f, 0x003f,
+    0x003f, 0xbc84, 0xbc85, 0xbc86, 0xbc87, 0xbc88, 0xbc89, 0xbc8a,
+    0xbc8b, 0xbc8c, 0xbc8d, 0xbc8e, 0xbc8f, 0xbc90, 0xbc91, 0xbc92,
+    0xbc93, 0xbc94, 0x003f, 0xbc95, 0xbc96, 0xbc97, 0xbc98, 0xbc99,
+    0xbc9a, 0xbc9b, 0xbc9c, 0xbc9d, 0xbc9e, 0xbc9f, 0x003f, 0x003f,
+    /* lead byte a5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbca0, 0xbca1, 0xbca2, 0xbca3, 0xbca4, 0xbca5, 0xbca6,
+    0xbca7, 0xbca8, 0xbca9, 0xbcaa, 0xbcab, 0xbcac, 0xbcad, 0xbcae,
+    0xbcaf, 0xbcb0, 0x003f, 0xbcb1, 0xbcb2, 0xbcb3, 0xbcb4, 0xbcb5,
+    0xbcb6, 0xbcb7, 0xbcb8, 0xbcb9, 0xbcba, 0xbcbb, 0x003f, 0x003f,
+    0x003f, 0xbcbc, 0xbcbd, 0xbcbe, 0xbcbf, 0xbcc0, 0xbcc1, 0xbcc2,
+    0xbcc3, 0xbcc4, 0xbcc5, 0xbcc6, 0xbcc7, 0xbcc8, 0xbcc9, 0xbcca,
+    0xbccb, 0xbccc, 0x003f, 0xbccd, 0xbcce, 0xbccf, 0xbcd0, 0xbcd1,
+    0xbcd2, 0xbcd3, 0xbcd4, 0xbcd5, 0xbcd6, 0xbcd7, 0x003f, 0x003f,
+    0x003f, 0xbcd8, 0xbcd9, 0xbcda, 0xbcdb, 0xbcdc, 0xbcdd, 0xbcde,
+    0xbcdf, 0xbce0, 0xbce1, 0xbce2, 0xbce3, 0xbce4, 0xbce5, 0xbce6,
+    0xbce7, 0xbce8, 0x003f, 0xbce9, 0xbcea, 0xbceb, 0xbcec, 0xbced,
+    0xbcee, 0xbcef, 0xbcf0, 0xbcf1, 0xbcf2, 0xbcf3, 0x003f, 0x003f,
+    0x003f, 0xbcf4, 0xbcf5, 0xbcf6, 0xbcf7, 0xbcf8, 0xbcf9, 0xbcfa,
+    0xbcfb, 0xbcfc, 0xbcfd, 0xbcfe, 0xbcff, 0xbd00, 0xbd01, 0xbd02,
+    0xbd03, 0xbd04, 0x003f, 0xbd05, 0xbd06, 0xbd07, 0xbd08, 0xbd09,
+    0xbd0a, 0xbd0b, 0xbd0c, 0xbd0d, 0xbd0e, 0xbd0f, 0x003f, 0x003f,
+    0x003f, 0xbd10, 0xbd11, 0xbd12, 0xbd13, 0xbd14, 0xbd15, 0xbd16,
+    0xbd17, 0xbd18, 0xbd19, 0xbd1a, 0xbd1b, 0xbd1c, 0xbd1d, 0xbd1e,
+    0xbd1f, 0xbd20, 0x003f, 0xbd21, 0xbd22, 0xbd23, 0xbd24, 0xbd25,
+    0xbd26, 0xbd27, 0xbd28, 0xbd29, 0xbd2a, 0xbd2b, 0x003f, 0x003f,
+    0x003f, 0xbd2c, 0xbd2d, 0xbd2e, 0xbd2f, 0xbd30, 0xbd31, 0xbd32,
+    0xbd33, 0xbd34, 0xbd35, 0xbd36, 0xbd37, 0xbd38, 0xbd39, 0xbd3a,
+    0xbd3b, 0xbd3c, 0x003f, 0xbd3d, 0xbd3e, 0xbd3f, 0xbd40, 0xbd41,
+    0xbd42, 0xbd43, 0xbd44, 0xbd45, 0xbd46, 0xbd47, 0x003f, 0x003f,
+    /* lead byte a6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbd48, 0xbd49, 0xbd4a, 0xbd4b, 0xbd4c, 0xbd4d, 0xbd4e,
+    0xbd4f, 0xbd50, 0xbd51, 0xbd52, 0xbd53, 0xbd54, 0xbd55, 0xbd56,
+    0xbd57, 0xbd58, 0x003f, 0xbd59, 0xbd5a, 0xbd5b, 0xbd5c, 0xbd5d,
+    0xbd5e, 0xbd5f, 0xbd60, 0xbd61, 0xbd62, 0xbd63, 0x003f, 0x003f,
+    0x003f, 0xbd64, 0xbd65, 0xbd66, 0xbd67, 0xbd68, 0xbd69, 0xbd6a,
+    0xbd6b, 0xbd6c, 0xbd6d, 0xbd6e, 0xbd6f, 0xbd70, 0xbd71, 0xbd72,
+    0xbd73, 0xbd74, 0x003f, 0xbd75, 0xbd76, 0xbd77, 0xbd78, 0xbd79,
+    0xbd7a, 0xbd7b, 0xbd7c, 0xbd7d, 0xbd7e, 0xbd7f, 0x003f, 0x003f,
+    0x003f, 0xbd80, 0xbd81, 0xbd82, 0xbd83, 0xbd84, 0xbd85, 0xbd86,
+    0xbd87, 0xbd88, 0xbd89, 0xbd8a, 0xbd8b, 0xbd8c, 0xbd8d, 0xbd8e,
+    0xbd8f, 0xbd90, 0x003f, 0xbd91, 0xbd92, 0xbd93, 0xbd94, 0xbd95,
+    0xbd96, 0xbd97, 0xbd98, 0xbd99, 0xbd9a, 0xbd9b, 0x003f, 0x003f,
+    0x003f, 0xbd9c, 0xbd9d, 0xbd9e, 0xbd9f, 0xbda0, 0xbda1, 0xbda2,
+    0xbda3, 0xbda4, 0xbda5, 0xbda6, 0xbda7, 0xbda8, 0xbda9, 0xbdaa,
+    0xbdab, 0xbdac, 0x003f, 0xbdad, 0xbdae, 0xbdaf, 0xbdb0, 0xbdb1,
+    0xbdb2, 0xbdb3, 0xbdb4, 0xbdb5, 0xbdb6, 0xbdb7, 0x003f, 0x003f,
+    0x003f, 0xbdb8, 0xbdb9, 0xbdba, 0xbdbb, 0xbdbc, 0xbdbd, 0xbdbe,
+    0xbdbf, 0xbdc0, 0xbdc1, 0xbdc2, 0xbdc3, 0xbdc4, 0xbdc5, 0xbdc6,
+    0xbdc7, 0xbdc8, 0x003f, 0xbdc9, 0xbdca, 0xbdcb, 0xbdcc, 0xbdcd,
+    0xbdce, 0xbdcf, 0xbdd0, 0xbdd1, 0xbdd2, 0xbdd3, 0x003f, 0x003f,
+    0x003f, 0xbdd4, 0xbdd5, 0xbdd6, 0xbdd7, 0xbdd8, 0xbdd9, 0xbdda,
+    0xbddb, 0xbddc, 0xbddd, 0xbdde, 0xbddf, 0xbde0, 0xbde1, 0xbde2,
+    0xbde3, 0xbde4, 0x003f, 0xbde5, 0xbde6, 0xbde7, 0xbde8, 0xbde9,
+    0xbdea, 0xbdeb, 0xbdec, 0xbded, 0xbdee, 0xbdef, 0x003f, 0x003f,
+    /* lead byte a7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbdf0, 0xbdf1, 0xbdf2, 0xbdf3, 0xbdf4, 0xbdf5, 0xbdf6,
+    0xbdf7, 0xbdf8, 0xbdf9, 0xbdfa, 0xbdfb, 0xbdfc, 0xbdfd, 0xbdfe,
+    0xbdff, 0xbe00, 0x003f, 0xbe01, 0xbe02, 0xbe03, 0xbe04, 0xbe05,
+    0xbe06, 0xbe07, 0xbe08, 0xbe09, 0xbe0a, 0xbe0b, 0x003f, 0x003f,
+    0x003f, 0xbe0c, 0xbe0d, 0xbe0e, 0xbe0f, 0xbe10, 0xbe11, 0xbe12,
+    0xbe13, 0xbe14, 0xbe15, 0xbe16, 0xbe17, 0xbe18, 0xbe19, 0xbe1a,
+    0xbe1b, 0xbe1c, 0x003f, 0xbe1d, 0xbe1e, 0xbe1f, 0xbe20, 0xbe21,
+    0xbe22, 0xbe23, 0xbe24, 0xbe25, 0xbe26, 0xbe27, 0x003f, 0x003f,
+    0x003f, 0xbe28, 0xbe29, 0xbe2a, 0xbe2b, 0xbe2c, 0xbe2d, 0xbe2e,
+    0xbe2f, 0xbe30, 0xbe31, 0xbe32, 0xbe33, 0xbe34, 0xbe35, 0xbe36,
+    0xbe37, 0xbe38, 0x003f, 0xbe39, 0xbe3a, 0xbe3b, 0xbe3c, 0xbe3d,
+    0xbe3e, 0xbe3f, 0xbe40, 0xbe41, 0xbe42, 0xbe43, 0x003f, 0x003f,
+    0x003f, 0xbe44, 0xbe45, 0xbe46, 0xbe47, 0xbe48, 0xbe49, 0xbe4a,
+    0xbe4b, 0xbe4c, 0xbe4d, 0xbe4e, 0xbe4f, 0xbe50, 0xbe51, 0xbe52,
+    0xbe53, 0xbe54, 0x003f, 0xbe55, 0xbe56, 0xbe57, 0xbe58, 0xbe59,
+    0xbe5a, 0xbe5b, 0xbe5c, 0xbe5d, 0xbe5e, 0xbe5f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte a8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3143, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbe60, 0xbe61, 0xbe62, 0xbe63, 0xbe64, 0xbe65, 0xbe66,
+    0xbe67, 0xbe68, 0xbe69, 0xbe6a, 0xbe6b, 0xbe6c, 0xbe6d, 0xbe6e,
+    0xbe6f, 0xbe70, 0x003f, 0xbe71, 0xbe72, 0xbe73, 0xbe74, 0xbe75,
+    0xbe76, 0xbe77, 0xbe78, 0xbe79, 0xbe7a, 0xbe7b, 0x003f, 0x003f,
+    0x003f, 0xbe7c, 0xbe7d, 0xbe7e, 0xbe7f, 0xbe80, 0xbe81, 0xbe82,
+    0xbe83, 0xbe84, 0xbe85, 0xbe86, 0xbe87, 0xbe88, 0xbe89, 0xbe8a,
+    0xbe8b, 0xbe8c, 0x003f, 0xbe8d, 0xbe8e, 0xbe8f, 0xbe90, 0xbe91,
+    0xbe92, 0xbe93, 0xbe94, 0xbe95, 0xbe96, 0xbe97, 0x003f, 0x003f,
+    0x003f, 0xbe98, 0xbe99, 0xbe9a, 0xbe9b, 0xbe9c, 0xbe9d, 0xbe9e,
+    0xbe9f, 0xbea0, 0xbea1, 0xbea2, 0xbea3, 0xbea4, 0xbea5, 0xbea6,
+    0xbea7, 0xbea8, 0x003f, 0xbea9, 0xbeaa, 0xbeab, 0xbeac, 0xbead,
+    0xbeae, 0xbeaf, 0xbeb0, 0xbeb1, 0xbeb2, 0xbeb3, 0x003f, 0x003f,
+    0x003f, 0xbeb4, 0xbeb5, 0xbeb6, 0xbeb7, 0xbeb8, 0xbeb9, 0xbeba,
+    0xbebb, 0xbebc, 0xbebd, 0xbebe, 0xbebf, 0xbec0, 0xbec1, 0xbec2,
+    0xbec3, 0xbec4, 0x003f, 0xbec5, 0xbec6, 0xbec7, 0xbec8, 0xbec9,
+    0xbeca, 0xbecb, 0xbecc, 0xbecd, 0xbece, 0xbecf, 0x003f, 0x003f,
+    0x003f, 0xbed0, 0xbed1, 0xbed2, 0xbed3, 0xbed4, 0xbed5, 0xbed6,
+    0xbed7, 0xbed8, 0xbed9, 0xbeda, 0xbedb, 0xbedc, 0xbedd, 0xbede,
+    0xbedf, 0xbee0, 0x003f, 0xbee1, 0xbee2, 0xbee3, 0xbee4, 0xbee5,
+    0xbee6, 0xbee7, 0xbee8, 0xbee9, 0xbeea, 0xbeeb, 0x003f, 0x003f,
+    /* lead byte a9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbeec, 0xbeed, 0xbeee, 0xbeef, 0xbef0, 0xbef1, 0xbef2,
+    0xbef3, 0xbef4, 0xbef5, 0xbef6, 0xbef7, 0xbef8, 0xbef9, 0xbefa,
+    0xbefb, 0xbefc, 0x003f, 0xbefd, 0xbefe, 0xbeff, 0xbf00, 0xbf01,
+    0xbf02, 0xbf03, 0xbf04, 0xbf05, 0xbf06, 0xbf07, 0x003f, 0x003f,
+    0x003f, 0xbf08, 0xbf09, 0xbf0a, 0xbf0b, 0xbf0c, 0xbf0d, 0xbf0e,
+    0xbf0f, 0xbf10, 0xbf11, 0xbf12, 0xbf13, 0xbf14, 0xbf15, 0xbf16,
+    0xbf17, 0xbf18, 0x003f, 0xbf19, 0xbf1a, 0xbf1b, 0xbf1c, 0xbf1d,
+    0xbf1e, 0xbf1f, 0xbf20, 0xbf21, 0xbf22, 0xbf23, 0x003f, 0x003f,
+    0x003f, 0xbf24, 0xbf25, 0xbf26, 0xbf27, 0xbf28, 0xbf29, 0xbf2a,
+    0xbf2b, 0xbf2c, 0xbf2d, 0xbf2e, 0xbf2f, 0xbf30, 0xbf31, 0xbf32,
+    0xbf33, 0xbf34, 0x003f, 0xbf35, 0xbf36, 0xbf37, 0xbf38, 0xbf39,
+    0xbf3a, 0xbf3b, 0xbf3c, 0xbf3d, 0xbf3e, 0xbf3f, 0x003f, 0x003f,
+    0x003f, 0xbf40, 0xbf41, 0xbf42, 0xbf43, 0xbf44, 0xbf45, 0xbf46,
+    0xbf47, 0xbf48, 0xbf49, 0xbf4a, 0xbf4b, 0xbf4c, 0xbf4d, 0xbf4e,
+    0xbf4f, 0xbf50, 0x003f, 0xbf51, 0xbf52, 0xbf53, 0xbf54, 0xbf55,
+    0xbf56, 0xbf57, 0xbf58, 0xbf59, 0xbf5a, 0xbf5b, 0x003f, 0x003f,
+    0x003f, 0xbf5c, 0xbf5d, 0xbf5e, 0xbf5f, 0xbf60, 0xbf61, 0xbf62,
+    0xbf63, 0xbf64, 0xbf65, 0xbf66, 0xbf67, 0xbf68, 0xbf69, 0xbf6a,
+    0xbf6b, 0xbf6c, 0x003f, 0xbf6d, 0xbf6e, 0xbf6f, 0xbf70, 0xbf71,
+    0xbf72, 0xbf73, 0xbf74, 0xbf75, 0xbf76, 0xbf77, 0x003f, 0x003f,
+    0x003f, 0xbf78, 0xbf79, 0xbf7a, 0xbf7b, 0xbf7c, 0xbf7d, 0xbf7e,
+    0xbf7f, 0xbf80, 0xbf81, 0xbf82, 0xbf83, 0xbf84, 0xbf85, 0xbf86,
+    0xbf87, 0xbf88, 0x003f, 0xbf89, 0xbf8a, 0xbf8b, 0xbf8c, 0xbf8d,
+    0xbf8e, 0xbf8f, 0xbf90, 0xbf91, 0xbf92, 0xbf93, 0x003f, 0x003f,
+    /* lead byte aa */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbf94, 0xbf95, 0xbf96, 0xbf97, 0xbf98, 0xbf99, 0xbf9a,
+    0xbf9b, 0xbf9c, 0xbf9d, 0xbf9e, 0xbf9f, 0xbfa0, 0xbfa1, 0xbfa2,
+    0xbfa3, 0xbfa4, 0x003f, 0xbfa5, 0xbfa6, 0xbfa7, 0xbfa8, 0xbfa9,
+    0xbfaa, 0xbfab, 0xbfac, 0xbfad, 0xbfae, 0xbfaf, 0x003f, 0x003f,
+    0x003f, 0xbfb0, 0xbfb1, 0xbfb2, 0xbfb3, 0xbfb4, 0xbfb5, 0xbfb6,
+    0xbfb7, 0xbfb8, 0xbfb9, 0xbfba, 0xbfbb, 0xbfbc, 0xbfbd, 0xbfbe,
+    0xbfbf, 0xbfc0, 0x003f, 0xbfc1, 0xbfc2, 0xbfc3, 0xbfc4, 0xbfc5,
+    0xbfc6, 0xbfc7, 0xbfc8, 0xbfc9, 0xbfca, 0xbfcb, 0x003f, 0x003f,
+    0x003f, 0xbfcc, 0xbfcd, 0xbfce, 0xbfcf, 0xbfd0, 0xbfd1, 0xbfd2,
+    0xbfd3, 0xbfd4, 0xbfd5, 0xbfd6, 0xbfd7, 0xbfd8, 0xbfd9, 0xbfda,
+    0xbfdb, 0xbfdc, 0x003f, 0xbfdd, 0xbfde, 0xbfdf, 0xbfe0, 0xbfe1,
+    0xbfe2, 0xbfe3, 0xbfe4, 0xbfe5, 0xbfe6, 0xbfe7, 0x003f, 0x003f,
+    0x003f, 0xbfe8, 0xbfe9, 0xbfea, 0xbfeb, 0xbfec, 0xbfed, 0xbfee,
+    0xbfef, 0xbff0, 0xbff1, 0xbff2, 0xbff3, 0xbff4, 0xbff5, 0xbff6,
+    0xbff7, 0xbff8, 0x003f, 0xbff9, 0xbffa, 0xbffb, 0xbffc, 0xbffd,
+    0xbffe, 0xbfff, 0xc000, 0xc001, 0xc002, 0xc003, 0x003f, 0x003f,
+    0x003f, 0xc004, 0xc005, 0xc006, 0xc007, 0xc008, 0xc009, 0xc00a,
+    0xc00b, 0xc00c, 0xc00d, 0xc00e, 0xc00f, 0xc010, 0xc011, 0xc012,
+    0xc013, 0xc014, 0x003f, 0xc015, 0xc016, 0xc017, 0xc018, 0xc019,
+    0xc01a, 0xc01b, 0xc01c, 0xc01d, 0xc01e, 0xc01f, 0x003f, 0x003f,
+    0x003f, 0xc020, 0xc021, 0xc022, 0xc023, 0xc024, 0xc025, 0xc026,
+    0xc027, 0xc028, 0xc029, 0xc02a, 0xc02b, 0xc02c, 0xc02d, 0xc02e,
+    0xc02f, 0xc030, 0x003f, 0xc031, 0xc032, 0xc033, 0xc034, 0xc035,
+    0xc036, 0xc037, 0xc038, 0xc039, 0xc03a, 0xc03b, 0x003f, 0x003f,
+    /* lead byte ab */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc03c, 0xc03d, 0xc03e, 0xc03f, 0xc040, 0xc041, 0xc042,
+    0xc043, 0xc044, 0xc045, 0xc046, 0xc047, 0xc048, 0xc049, 0xc04a,
+    0xc04b, 0xc04c, 0x003f, 0xc04d, 0xc04e, 0xc04f, 0xc050, 0xc051,
+    0xc052, 0xc053, 0xc054, 0xc055, 0xc056, 0xc057, 0x003f, 0x003f,
+    0x003f, 0xc058, 0xc059, 0xc05a, 0xc05b, 0xc05c, 0xc05d, 0xc05e,
+    0xc05f, 0xc060, 0xc061, 0xc062, 0xc063, 0xc064, 0xc065, 0xc066,
+    0xc067, 0xc068, 0x003f, 0xc069, 0xc06a, 0xc06b, 0xc06c, 0xc06d,
+    0xc06e, 0xc06f, 0xc070, 0xc071, 0xc072, 0xc073, 0x003f, 0x003f,
+    0x003f, 0xc074, 0xc075, 0xc076, 0xc077, 0xc078, 0xc079, 0xc07a,
+    0xc07b, 0xc07c, 0xc07d, 0xc07e, 0xc07f, 0xc080, 0xc081, 0xc082,
+    0xc083, 0xc084, 0x003f, 0xc085, 0xc086, 0xc087, 0xc088, 0xc089,
+    0xc08a, 0xc08b, 0xc08c, 0xc08d, 0xc08e, 0xc08f, 0x003f, 0x003f,
+    0x003f, 0xc090, 0xc091, 0xc092, 0xc093, 0xc094, 0xc095, 0xc096,
+    0xc097, 0xc098, 0xc099, 0xc09a, 0xc09b, 0xc09c, 0xc09d, 0xc09e,
+    0xc09f, 0xc0a0, 0x003f, 0xc0a1, 0xc0a2, 0xc0a3, 0xc0a4, 0xc0a5,
+    0xc0a6, 0xc0a7, 0xc0a8, 0xc0a9, 0xc0aa, 0xc0ab, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte ac */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3145, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc0ac, 0xc0ad, 0xc0ae, 0xc0af, 0xc0b0, 0xc0b1, 0xc0b2,
+    0xc0b3, 0xc0b4, 0xc0b5, 0xc0b6, 0xc0b7, 0xc0b8, 0xc0b9, 0xc0ba,
+    0xc0bb, 0xc0bc, 0x003f, 0xc0bd, 0xc0be, 0xc0bf, 0xc0c0, 0xc0c1,
+    0xc0c2, 0xc0c3, 0xc0c4, 0xc0c5, 0xc0c6, 0xc0c7, 0x003f, 0x003f,
+    0x003f, 0xc0c8, 0xc0c9, 0xc0ca, 0xc0cb, 0xc0cc, 0xc0cd, 0xc0ce,
+    0xc0cf, 0xc0d0, 0xc0d1, 0xc0d2, 0xc0d3, 0xc0d4, 0xc0d5, 0xc0d6,
+    0xc0d7, 0xc0d8, 0x003f, 0xc0d9, 0xc0da, 0xc0db, 0xc0dc, 0xc0dd,
+    0xc0de, 0xc0df, 0xc0e0, 0xc0e1, 0xc0e2, 0xc0e3, 0x003f, 0x003f,
+    0x003f, 0xc0e4, 0xc0e5, 0xc0e6, 0xc0e7, 0xc0e8, 0xc0e9, 0xc0ea,
+    0xc0eb, 0xc0ec, 0xc0ed, 0xc0ee, 0xc0ef, 0xc0f0, 0xc0f1, 0xc0f2,
+    0xc0f3, 0xc0f4, 0x003f, 0xc0f5, 0xc0f6, 0xc0f7, 0xc0f8, 0xc0f9,
+    0xc0fa, 0xc0fb, 0xc0fc, 0xc0fd, 0xc0fe, 0xc0ff, 0x003f, 0x003f,
+    0x003f, 0xc100, 0xc101, 0xc102, 0xc103, 0xc104, 0xc105, 0xc106,
+    0xc107, 0xc108, 0xc109, 0xc10a, 0xc10b, 0xc10c, 0xc10d, 0xc10e,
+    0xc10f, 0xc110, 0x003f, 0xc111, 0xc112, 0xc113, 0xc114, 0xc115,
+    0xc116, 0xc117, 0xc118, 0xc119, 0xc11a, 0xc11b, 0x003f, 0x003f,
+    0x003f, 0xc11c, 0xc11d, 0xc11e, 0xc11f, 0xc120, 0xc121, 0xc122,
+    0xc123, 0xc124, 0xc125, 0xc126, 0xc127, 0xc128, 0xc129, 0xc12a,
+    0xc12b, 0xc12c, 0x003f, 0xc12d, 0xc12e, 0xc12f, 0xc130, 0xc131,
+    0xc132, 0xc133, 0xc134, 0xc135, 0xc136, 0xc137, 0x003f, 0x003f,
+    /* lead byte ad */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc138, 0xc139, 0xc13a, 0xc13b, 0xc13c, 0xc13d, 0xc13e,
+    0xc13f, 0xc140, 0xc141, 0xc142, 0xc143, 0xc144, 0xc145, 0xc146,
+    0xc147, 0xc148, 0x003f, 0xc149, 0xc14a, 0xc14b, 0xc14c, 0xc14d,
+    0xc14e, 0xc14f, 0xc150, 0xc151, 0xc152, 0xc153, 0x003f, 0x003f,
+    0x003f, 0xc154, 0xc155, 0xc156, 0xc157, 0xc158, 0xc159, 0xc15a,
+    0xc15b, 0xc15c, 0xc15d, 0xc15e, 0xc15f, 0xc160, 0xc161, 0xc162,
+    0xc163, 0xc164, 0x003f, 0xc165, 0xc166, 0xc167, 0xc168, 0xc169,
+    0xc16a, 0xc16b, 0xc16c, 0xc16d, 0xc16e, 0xc16f, 0x003f, 0x003f,
+    0x003f, 0xc170, 0xc171, 0xc172, 0xc173, 0xc174, 0xc175, 0xc176,
+    0xc177, 0xc178, 0xc179, 0xc17a, 0xc17b, 0xc17c, 0xc17d, 0xc17e,
+    0xc17f, 0xc180, 0x003f, 0xc181, 0xc182, 0xc183, 0xc184, 0xc185,
+    0xc186, 0xc187, 0xc188, 0xc189, 0xc18a, 0xc18b, 0x003f, 0x003f,
+    0x003f, 0xc18c, 0xc18d, 0xc18e, 0xc18f, 0xc190, 0xc191, 0xc192,
+    0xc193, 0xc194, 0xc195, 0xc196, 0xc197, 0xc198, 0xc199, 0xc19a,
+    0xc19b, 0xc19c, 0x003f, 0xc19d, 0xc19e, 0xc19f, 0xc1a0, 0xc1a1,
+    0xc1a2, 0xc1a3, 0xc1a4, 0xc1a5, 0xc1a6, 0xc1a7, 0x003f, 0x003f,
+    0x003f, 0xc1a8, 0xc1a9, 0xc1aa, 0xc1ab, 0xc1ac, 0xc1ad, 0xc1ae,
+    0xc1af, 0xc1b0, 0xc1b1, 0xc1b2, 0xc1b3, 0xc1b4, 0xc1b5, 0xc1b6,
+    0xc1b7, 0xc1b8, 0x003f, 0xc1b9, 0xc1ba, 0xc1bb, 0xc1bc, 0xc1bd,
+    0xc1be, 0xc1bf, 0xc1c0, 0xc1c1, 0xc1c2, 0xc1c3, 0x003f, 0x003f,
+    0x003f, 0xc1c4, 0xc1c5, 0xc1c6, 0xc1c7, 0xc1c8, 0xc1c9, 0xc1ca,
+    0xc1cb, 0xc1cc, 0xc1cd, 0xc1ce, 0xc1cf, 0xc1d0, 0xc1d1, 0xc1d2,
+    0xc1d3, 0xc1d4, 0x003f, 0xc1d5, 0xc1d6, 0xc1d7, 0xc1d8, 0xc1d9,
+    0xc1da, 0xc1db, 0xc1dc, 0xc1dd, 0xc1de, 0xc1df, 0x003f, 0x003f,
+    /* lead byte ae */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc1e0, 0xc1e1, 0xc1e2, 0xc1e3, 0xc1e4, 0xc1e5, 0xc1e6,
+    0xc1e7, 0xc1e8, 0xc1e9, 0xc1ea, 0xc1eb, 0xc1ec, 0xc1ed, 0xc1ee,
+    0xc1ef, 0xc1f0, 0x003f, 0xc1f1, 0xc1f2, 0xc1f3, 0xc1f4, 0xc1f5,
+    0xc1f6, 0xc1f7, 0xc1f8, 0xc1f9, 0xc1fa, 0xc1fb, 0x003f, 0x003f,
+    0x003f, 0xc1fc, 0xc1fd, 0xc1fe, 0xc1ff, 0xc200, 0xc201, 0xc202,
+    0xc203, 0xc204, 0xc205, 0xc206, 0xc207, 0xc208, 0xc209, 0xc20a,
+    0xc20b, 0xc20c, 0x003f, 0xc20d, 0xc20e, 0xc20f, 0xc210, 0xc211,
+    0xc212, 0xc213, 0xc214, 0xc215, 0xc216, 0xc217, 0x003f, 0x003f,
+    0x003f, 0xc218, 0xc219, 0xc21a, 0xc21b, 0xc21c, 0xc21d, 0xc21e,
+    0xc21f, 0xc220, 0xc221, 0xc222, 0xc223, 0xc224, 0xc225, 0xc226,
+    0xc227, 0xc228, 0x003f, 0xc229, 0xc22a, 0xc22b, 0xc22c, 0xc22d,
+    0xc22e, 0xc22f, 0xc230, 0xc231, 0xc232, 0xc233, 0x003f, 0x003f,
+    0x003f, 0xc234, 0xc235, 0xc236, 0xc237, 0xc238, 0xc239, 0xc23a,
+    0xc23b, 0xc23c, 0xc23d, 0xc23e, 0xc23f, 0xc240, 0xc241, 0xc242,
+    0xc243, 0xc244, 0x003f, 0xc245, 0xc246, 0xc247, 0xc248, 0xc249,
+    0xc24a, 0xc24b, 0xc24c, 0xc24d, 0xc24e, 0xc24f, 0x003f, 0x003f,
+    0x003f, 0xc250, 0xc251, 0xc252, 0xc253, 0xc254, 0xc255, 0xc256,
+    0xc257, 0xc258, 0xc259, 0xc25a, 0xc25b, 0xc25c, 0xc25d, 0xc25e,
+    0xc25f, 0xc260, 0x003f, 0xc261, 0xc262, 0xc263, 0xc264, 0xc265,
+    0xc266, 0xc267, 0xc268, 0xc269, 0xc26a, 0xc26b, 0x003f, 0x003f,
+    0x003f, 0xc26c, 0xc26d, 0xc26e, 0xc26f, 0xc270, 0xc271, 0xc272,
+    0xc273, 0xc274, 0xc275, 0xc276, 0xc277, 0xc278, 0xc279, 0xc27a,
+    0xc27b, 0xc27c, 0x003f, 0xc27d, 0xc27e, 0xc27f, 0xc280, 0xc281,
+    0xc282, 0xc283, 0xc284, 0xc285, 0xc286, 0xc287, 0x003f, 0x003f,
+    /* lead byte af */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc288, 0xc289, 0xc28a, 0xc28b, 0xc28c, 0xc28d, 0xc28e,
+    0xc28f, 0xc290, 0xc291, 0xc292, 0xc293, 0xc294, 0xc295, 0xc296,
+    0xc297, 0xc298, 0x003f, 0xc299, 0xc29a, 0xc29b, 0xc29c, 0xc29d,
+    0xc29e, 0xc29f, 0xc2a0, 0xc2a1, 0xc2a2, 0xc2a3, 0x003f, 0x003f,
+    0x003f, 0xc2a4, 0xc2a5, 0xc2a6, 0xc2a7, 0xc2a8, 0xc2a9, 0xc2aa,
+    0xc2ab, 0xc2ac, 0xc2ad, 0xc2ae, 0xc2af, 0xc2b0, 0xc2b1, 0xc2b2,
+    0xc2b3, 0xc2b4, 0x003f, 0xc2b5, 0xc2b6, 0xc2b7, 0xc2b8, 0xc2b9,
+    0xc2ba, 0xc2bb, 0xc2bc, 0xc2bd, 0xc2be, 0xc2bf, 0x003f, 0x003f,
+    0x003f, 0xc2c0, 0xc2c1, 0xc2c2, 0xc2c3, 0xc2c4, 0xc2c5, 0xc2c6,
+    0xc2c7, 0xc2c8, 0xc2c9, 0xc2ca, 0xc2cb, 0xc2cc, 0xc2cd, 0xc2ce,
+    0xc2cf, 0xc2d0, 0x003f, 0xc2d1, 0xc2d2, 0xc2d3, 0xc2d4, 0xc2d5,
+    0xc2d6, 0xc2d7, 0xc2d8, 0xc2d9, 0xc2da, 0xc2db, 0x003f, 0x003f,
+    0x003f, 0xc2dc, 0xc2dd, 0xc2de, 0xc2df, 0xc2e0, 0xc2e1, 0xc2e2,
+    0xc2e3, 0xc2e4, 0xc2e5, 0xc2e6, 0xc2e7, 0xc2e8, 0xc2e9, 0xc2ea,
+    0xc2eb, 0xc2ec, 0x003f, 0xc2ed, 0xc2ee, 0xc2ef, 0xc2f0, 0xc2f1,
+    0xc2f2, 0xc2f3, 0xc2f4, 0xc2f5, 0xc2f6, 0xc2f7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte b0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3146, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc2f8, 0xc2f9, 0xc2fa, 0xc2fb, 0xc2fc, 0xc2fd, 0xc2fe,
+    0xc2ff, 0xc300, 0xc301, 0xc302, 0xc303, 0xc304, 0xc305, 0xc306,
+    0xc307, 0xc308, 0x003f, 0xc309, 0xc30a, 0xc30b, 0xc30c, 0xc30d,
+    0xc30e, 0xc30f, 0xc310, 0xc311, 0xc312, 0xc313, 0x003f, 0x003f,
+    0x003f, 0xc314, 0xc315, 0xc316, 0xc317, 0xc318, 0xc319, 0xc31a,
+    0xc31b, 0xc31c, 0xc31d, 0xc31e, 0xc31f, 0xc320, 0xc321, 0xc322,
+    0xc323, 0xc324, 0x003f, 0xc325, 0xc326, 0xc327, 0xc328, 0xc329,
+    0xc32a, 0xc32b, 0xc32c, 0xc32d, 0xc32e, 0xc32f, 0x003f, 0x003f,
+    0x003f, 0xc330, 0xc331, 0xc332, 0xc333, 0xc334, 0xc335, 0xc336,
+    0xc337, 0xc338, 0xc339, 0xc33a, 0xc33b, 0xc33c, 0xc33d, 0xc33e,
+    0xc33f, 0xc340, 0x003f, 0xc341, 0xc342, 0xc343, 0xc344, 0xc345,
+    0xc346, 0xc347, 0xc348, 0xc349, 0xc34a, 0xc34b, 0x003f, 0x003f,
+    0x003f, 0xc34c, 0xc34d, 0xc34e, 0xc34f, 0xc350, 0xc351, 0xc352,
+    0xc353, 0xc354, 0xc355, 0xc356, 0xc357, 0xc358, 0xc359, 0xc35a,
+    0xc35b, 0xc35c, 0x003f, 0xc35d, 0xc35e, 0xc35f, 0xc360, 0xc361,
+    0xc362, 0xc363, 0xc364, 0xc365, 0xc366, 0xc367, 0x003f, 0x003f,
+    0x003f, 0xc368, 0xc369, 0xc36a, 0xc36b, 0xc36c, 0xc36d, 0xc36e,
+    0xc36f, 0xc370, 0xc371, 0xc372, 0xc373, 0xc374, 0xc375, 0xc376,
+    0xc377, 0xc378, 0x003f, 0xc379, 0xc37a, 0xc37b, 0xc37c, 0xc37d,
+    0xc37e, 0xc37f, 0xc380, 0xc381, 0xc382, 0xc383, 0x003f, 0x003f,
+    /* lead byte b1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc384, 0xc385, 0xc386, 0xc387, 0xc388, 0xc389, 0xc38a,
+    0xc38b, 0xc38c, 0xc38d, 0xc38e, 0xc38f, 0xc390, 0xc391, 0xc392,
+    0xc393, 0xc394, 0x003f, 0xc395, 0xc396, 0xc397, 0xc398, 0xc399,
+    0xc39a, 0xc39b, 0xc39c, 0xc39d, 0xc39e, 0xc39f, 0x003f, 0x003f,
+    0x003f, 0xc3a0, 0xc3a1, 0xc3a2, 0xc3a3, 0xc3a4, 0xc3a5, 0xc3a6,
+    0xc3a7, 0xc3a8, 0xc3a9, 0xc3aa, 0xc3ab, 0xc3ac, 0xc3ad, 0xc3ae,
+    0xc3af, 0xc3b0, 0x003f, 0xc3b1, 0xc3b2, 0xc3b3, 0xc3b4, 0xc3b5,
+    0xc3b6, 0xc3b7, 0xc3b8, 0xc3b9, 0xc3ba, 0xc3bb, 0x003f, 0x003f,
+    0x003f, 0xc3bc, 0xc3bd, 0xc3be, 0xc3bf, 0xc3c0, 0xc3c1, 0xc3c2,
+    0xc3c3, 0xc3c4, 0xc3c5, 0xc3c6, 0xc3c7, 0xc3c8, 0xc3c9, 0xc3ca,
+    0xc3cb, 0xc3cc, 0x003f, 0xc3cd, 0xc3ce, 0xc3cf, 0xc3d0, 0xc3d1,
+    0xc3d2, 0xc3d3, 0xc3d4, 0xc3d5, 0xc3d6, 0xc3d7, 0x003f, 0x003f,
+    0x003f, 0xc3d8, 0xc3d9, 0xc3da, 0xc3db, 0xc3dc, 0xc3dd, 0xc3de,
+    0xc3df, 0xc3e0, 0xc3e1, 0xc3e2, 0xc3e3, 0xc3e4, 0xc3e5, 0xc3e6,
+    0xc3e7, 0xc3e8, 0x003f, 0xc3e9, 0xc3ea, 0xc3eb, 0xc3ec, 0xc3ed,
+    0xc3ee, 0xc3ef, 0xc3f0, 0xc3f1, 0xc3f2, 0xc3f3, 0x003f, 0x003f,
+    0x003f, 0xc3f4, 0xc3f5, 0xc3f6, 0xc3f7, 0xc3f8, 0xc3f9, 0xc3fa,
+    0xc3fb, 0xc3fc, 0xc3fd, 0xc3fe, 0xc3ff, 0xc400, 0xc401, 0xc402,
+    0xc403, 0xc404, 0x003f, 0xc405, 0xc406, 0xc407, 0xc408, 0xc409,
+    0xc40a, 0xc40b, 0xc40c, 0xc40d, 0xc40e, 0xc40f, 0x003f, 0x003f,
+    0x003f, 0xc410, 0xc411, 0xc412, 0xc413, 0xc414, 0xc415, 0xc416,
+    0xc417, 0xc418, 0xc419, 0xc41a, 0xc41b, 0xc41c, 0xc41d, 0xc41e,
+    0xc41f, 0xc420, 0x003f, 0xc421, 0xc422, 0xc423, 0xc424, 0xc425,
+    0xc426, 0xc427, 0xc428, 0xc429, 0xc42a, 0xc42b, 0x003f, 0x003f,
+    /* lead byte b2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc42c, 0xc42d, 0xc42e, 0xc42f, 0xc430, 0xc431, 0xc432,
+    0xc433, 0xc434, 0xc435, 0xc436, 0xc437, 0xc438, 0xc439, 0xc43a,
+    0xc43b, 0xc43c, 0x003f, 0xc43d, 0xc43e, 0xc43f, 0xc440, 0xc441,
+    0xc442, 0xc443, 0xc444, 0xc445, 0xc446, 0xc447, 0x003f, 0x003f,
+    0x003f, 0xc448, 0xc449, 0xc44a, 0xc44b, 0xc44c, 0xc44d, 0xc44e,
+    0xc44f, 0xc450, 0xc451, 0xc452, 0xc453, 0xc454, 0xc455, 0xc456,
+    0xc457, 0xc458, 0x003f, 0xc459, 0xc45a, 0xc45b, 0xc45c, 0xc45d,
+    0xc45e, 0xc45f, 0xc460, 0xc461, 0xc462, 0xc463, 0x003f, 0x003f,
+    0x003f, 0xc464, 0xc465, 0xc466, 0xc467, 0xc468, 0xc469, 0xc46a,
+    0xc46b, 0xc46c, 0xc46d, 0xc46e, 0xc46f, 0xc470, 0xc471, 0xc472,
+    0xc473, 0xc474, 0x003f, 0xc475, 0xc476, 0xc477, 0xc478, 0xc479,
+    0xc47a, 0xc47b, 0xc47c, 0xc47d, 0xc47e, 0xc47f, 0x003f, 0x003f,
+    0x003f, 0xc480, 0xc481, 0xc482, 0xc483, 0xc484, 0xc485, 0xc486,
+    0xc487, 0xc488, 0xc489, 0xc48a, 0xc48b, 0xc48c, 0xc48d, 0xc48e,
+    0xc48f, 0xc490, 0x003f, 0xc491, 0xc492, 0xc493, 0xc494, 0xc495,
+    0xc496, 0xc497, 0xc498, 0xc499, 0xc49a, 0xc49b, 0x003f, 0x003f,
+    0x003f, 0xc49c, 0xc49d, 0xc49e, 0xc49f, 0xc4a0, 0xc4a1, 0xc4a2,
+    0xc4a3, 0xc4a4, 0xc4a5, 0xc4a6, 0xc4a7, 0xc4a8, 0xc4a9, 0xc4aa,
+    0xc4ab, 0xc4ac, 0x003f, 0xc4ad, 0xc4ae, 0xc4af, 0xc4b0, 0xc4b1,
+    0xc4b2, 0xc4b3, 0xc4b4, 0xc4b5, 0xc4b6, 0xc4b7, 0x003f, 0x003f,
+    0x003f, 0xc4b8, 0xc4b9, 0xc4ba, 0xc4bb, 0xc4bc, 0xc4bd, 0xc4be,
+    0xc4bf, 0xc4c0, 0xc4c1, 0xc4c2, 0xc4c3, 0xc4c4, 0xc4c5, 0xc4c6,
+    0xc4c7, 0xc4c8, 0x003f, 0xc4c9, 0xc4ca, 0xc4cb, 0xc4cc, 0xc4cd,
+    0xc4ce, 0xc4cf, 0xc4d0, 0xc4d1, 0xc4d2, 0xc4d3, 0x003f, 0x003f,
+    /* lead byte b3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc4d4, 0xc4d5, 0xc4d6, 0xc4d7, 0xc4d8, 0xc4d9, 0xc4da,
+    0xc4db, 0xc4dc, 0xc4dd, 0xc4de, 0xc4df, 0xc4e0, 0xc4e1, 0xc4e2,
+    0xc4e3, 0xc4e4, 0x003f, 0xc4e5, 0xc4e6, 0xc4e7, 0xc4e8, 0xc4e9,
+    0xc4ea, 0xc4eb, 0xc4ec, 0xc4ed, 0xc4ee, 0xc4ef, 0x003f, 0x003f,
+    0x003f, 0xc4f0, 0xc4f1, 0xc4f2, 0xc4f3, 0xc4f4, 0xc4f5, 0xc4f6,
+    0xc4f7, 0xc4f8, 0xc4f9, 0xc4fa, 0xc4fb, 0xc4fc, 0xc4fd, 0xc4fe,
+    0xc4ff, 0xc500, 0x003f, 0xc501, 0xc502, 0xc503, 0xc504, 0xc505,
+    0xc506, 0xc507, 0xc508, 0xc509, 0xc50a, 0xc50b, 0x003f, 0x003f,
+    0x003f, 0xc50c, 0xc50d, 0xc50e, 0xc50f, 0xc510, 0xc511, 0xc512,
+    0xc513, 0xc514, 0xc515, 0xc516, 0xc517, 0xc518, 0xc519, 0xc51a,
+    0xc51b, 0xc51c, 0x003f, 0xc51d, 0xc51e, 0xc51f, 0xc520, 0xc521,
+    0xc522, 0xc523, 0xc524, 0xc525, 0xc526, 0xc527, 0x003f, 0x003f,
+    0x003f, 0xc528, 0xc529, 0xc52a, 0xc52b, 0xc52c, 0xc52d, 0xc52e,
+    0xc52f, 0xc530, 0xc531, 0xc532, 0xc533, 0xc534, 0xc535, 0xc536,
+    0xc537, 0xc538, 0x003f, 0xc539, 0xc53a, 0xc53b, 0xc53c, 0xc53d,
+    0xc53e, 0xc53f, 0xc540, 0xc541, 0xc542, 0xc543, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte b4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3147, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc544, 0xc545, 0xc546, 0xc547, 0xc548, 0xc549, 0xc54a,
+    0xc54b, 0xc54c, 0xc54d, 0xc54e, 0xc54f, 0xc550, 0xc551, 0xc552,
+    0xc553, 0xc554, 0x003f, 0xc555, 0xc556, 0xc557, 0xc558, 0xc559,
+    0xc55a, 0xc55b, 0xc55c, 0xc55d, 0xc55e, 0xc55f, 0x003f, 0x003f,
+    0x003f, 0xc560, 0xc561, 0xc562, 0xc563, 0xc564, 0xc565, 0xc566,
+    0xc567, 0xc568, 0xc569, 0xc56a, 0xc56b, 0xc56c, 0xc56d, 0xc56e,
+    0xc56f, 0xc570, 0x003f, 0xc571, 0xc572, 0xc573, 0xc574, 0xc575,
+    0xc576, 0xc577, 0xc578, 0xc579, 0xc57a, 0xc57b, 0x003f, 0x003f,
+    0x003f, 0xc57c, 0xc57d, 0xc57e, 0xc57f, 0xc580, 0xc581, 0xc582,
+    0xc583, 0xc584, 0xc585, 0xc586, 0xc587, 0xc588, 0xc589, 0xc58a,
+    0xc58b, 0xc58c, 0x003f, 0xc58d, 0xc58e, 0xc58f, 0xc590, 0xc591,
+    0xc592, 0xc593, 0xc594, 0xc595, 0xc596, 0xc597, 0x003f, 0x003f,
+    0x003f, 0xc598, 0xc599, 0xc59a, 0xc59b, 0xc59c, 0xc59d, 0xc59e,
+    0xc59f, 0xc5a0, 0xc5a1, 0xc5a2, 0xc5a3, 0xc5a4, 0xc5a5, 0xc5a6,
+    0xc5a7, 0xc5a8, 0x003f, 0xc5a9, 0xc5aa, 0xc5ab, 0xc5ac, 0xc5ad,
+    0xc5ae, 0xc5af, 0xc5b0, 0xc5b1, 0xc5b2, 0xc5b3, 0x003f, 0x003f,
+    0x003f, 0xc5b4, 0xc5b5, 0xc5b6, 0xc5b7, 0xc5b8, 0xc5b9, 0xc5ba,
+    0xc5bb, 0xc5bc, 0xc5bd, 0xc5be, 0xc5bf, 0xc5c0, 0xc5c1, 0xc5c2,
+    0xc5c3, 0xc5c4, 0x003f, 0xc5c5, 0xc5c6, 0xc5c7, 0xc5c8, 0xc5c9,
+    0xc5ca, 0xc5cb, 0xc5cc, 0xc5cd, 0xc5ce, 0xc5cf, 0x003f, 0x003f,
+    /* lead byte b5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc5d0, 0xc5d1, 0xc5d2, 0xc5d3, 0xc5d4, 0xc5d5, 0xc5d6,
+    0xc5d7, 0xc5d8, 0xc5d9, 0xc5da, 0xc5db, 0xc5dc, 0xc5dd, 0xc5de,
+    0xc5df, 0xc5e0, 0x003f, 0xc5e1, 0xc5e2, 0xc5e3, 0xc5e4, 0xc5e5,
+    0xc5e6, 0xc5e7, 0xc5e8, 0xc5e9, 0xc5ea, 0xc5eb, 0x003f, 0x003f,
+    0x003f, 0xc5ec, 0xc5ed, 0xc5ee, 0xc5ef, 0xc5f0, 0xc5f1, 0xc5f2,
+    0xc5f3, 0xc5f4, 0xc5f5, 0xc5f6, 0xc5f7, 0xc5f8, 0xc5f9, 0xc5fa,
+    0xc5fb, 0xc5fc, 0x003f, 0xc5fd, 0xc5fe, 0xc5ff, 0xc600, 0xc601,
+    0xc602, 0xc603, 0xc604, 0xc605, 0xc606, 0xc607, 0x003f, 0x003f,
+    0x003f, 0xc608, 0xc609, 0xc60a, 0xc60b, 0xc60c, 0xc60d, 0xc60e,
+    0xc60f, 0xc610, 0xc611, 0xc612, 0xc613, 0xc614, 0xc615, 0xc616,
+    0xc617, 0xc618, 0x003f, 0xc619, 0xc61a, 0xc61b, 0xc61c, 0xc61d,
+    0xc61e, 0xc61f, 0xc620, 0xc621, 0xc622, 0xc623, 0x003f, 0x003f,
+    0x003f, 0xc624, 0xc625, 0xc626, 0xc627, 0xc628, 0xc629, 0xc62a,
+    0xc62b, 0xc62c, 0xc62d, 0xc62e, 0xc62f, 0xc630, 0xc631, 0xc632,
+    0xc633, 0xc634, 0x003f, 0xc635, 0xc636, 0xc637, 0xc638, 0xc639,
+    0xc63a, 0xc63b, 0xc63c, 0xc63d, 0xc63e, 0xc63f, 0x003f, 0x003f,
+    0x003f, 0xc640, 0xc641, 0xc642, 0xc643, 0xc644, 0xc645, 0xc646,
+    0xc647, 0xc648, 0xc649, 0xc64a, 0xc64b, 0xc64c, 0xc64d, 0xc64e,
+    0xc64f, 0xc650, 0x003f, 0xc651, 0xc652, 0xc653, 0xc654, 0xc655,
+    0xc656, 0xc657, 0xc658, 0xc659, 0xc65a, 0xc65b, 0x003f, 0x003f,
+    0x003f, 0xc65c, 0xc65d, 0xc65e, 0xc65f, 0xc660, 0xc661, 0xc662,
+    0xc663, 0xc664, 0xc665, 0xc666, 0xc667, 0xc668, 0xc669, 0xc66a,
+    0xc66b, 0xc66c, 0x003f, 0xc66d, 0xc66e, 0xc66f, 0xc670, 0xc671,
+    0xc672, 0xc673, 0xc674, 0xc675, 0xc676, 0xc677, 0x003f, 0x003f,
+    /* lead byte b6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc678, 0xc679, 0xc67a, 0xc67b, 0xc67c, 0xc67d, 0xc67e,
+    0xc67f, 0xc680, 0xc681, 0xc682, 0xc683, 0xc684, 0xc685, 0xc686,
+    0xc687, 0xc688, 0x003f, 0xc689, 0xc68a, 0xc68b, 0xc68c, 0xc68d,
+    0xc68e, 0xc68f, 0xc690, 0xc691, 0xc692, 0xc693, 0x003f, 0x003f,
+    0x003f, 0xc694, 0xc695, 0xc696, 0xc697, 0xc698, 0xc699, 0xc69a,
+    0xc69b, 0xc69c, 0xc69d, 0xc69e, 0xc69f, 0xc6a0, 0xc6a1, 0xc6a2,
+    0xc6a3, 0xc6a4, 0x003f, 0xc6a5, 0xc6a6, 0xc6a7, 0xc6a8, 0xc6a9,
+    0xc6aa, 0xc6ab, 0xc6ac, 0xc6ad, 0xc6ae, 0xc6af, 0x003f, 0x003f,
+    0x003f, 0xc6b0, 0xc6b1, 0xc6b2, 0xc6b3, 0xc6b4, 0xc6b5, 0xc6b6,
+    0xc6b7, 0xc6b8, 0xc6b9, 0xc6ba, 0xc6bb, 0xc6bc, 0xc6bd, 0xc6be,
+    0xc6bf, 0xc6c0, 0x003f, 0xc6c1, 0xc6c2, 0xc6c3, 0xc6c4, 0xc6c5,
+    0xc6c6, 0xc6c7, 0xc6c8, 0xc6c9, 0xc6ca, 0xc6cb, 0x003f, 0x003f,
+    0x003f, 0xc6cc, 0xc6cd, 0xc6ce, 0xc6cf, 0xc6d0, 0xc6d1, 0xc6d2,
+    0xc6d3, 0xc6d4, 0xc6d5, 0xc6d6, 0xc6d7, 0xc6d8, 0xc6d9, 0xc6da,
+    0xc6db, 0xc6dc, 0x003f, 0xc6dd, 0xc6de, 0xc6df, 0xc6e0, 0xc6e1,
+    0xc6e2, 0xc6e3, 0xc6e4, 0xc6e5, 0xc6e6, 0xc6e7, 0x003f, 0x003f,
+    0x003f, 0xc6e8, 0xc6e9, 0xc6ea, 0xc6eb, 0xc6ec, 0xc6ed, 0xc6ee,
+    0xc6ef, 0xc6f0, 0xc6f1, 0xc6f2, 0xc6f3, 0xc6f4, 0xc6f5, 0xc6f6,
+    0xc6f7, 0xc6f8, 0x003f, 0xc6f9, 0xc6fa, 0xc6fb, 0xc6fc, 0xc6fd,
+    0xc6fe, 0xc6ff, 0xc700, 0xc701, 0xc702, 0xc703, 0x003f, 0x003f,
+    0x003f, 0xc704, 0xc705, 0xc706, 0xc707, 0xc708, 0xc709, 0xc70a,
+    0xc70b, 0xc70c, 0xc70d, 0xc70e, 0xc70f, 0xc710, 0xc711, 0xc712,
+    0xc713, 0xc714, 0x003f, 0xc715, 0xc716, 0xc717, 0xc718, 0xc719,
+    0xc71a, 0xc71b, 0xc71c, 0xc71d, 0xc71e, 0xc71f, 0x003f, 0x003f,
+    /* lead byte b7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc720, 0xc721, 0xc722, 0xc723, 0xc724, 0xc725, 0xc726,
+    0xc727, 0xc728, 0xc729, 0xc72a, 0xc72b, 0xc72c, 0xc72d, 0xc72e,
+    0xc72f, 0xc730, 0x003f, 0xc731, 0xc732, 0xc733, 0xc734, 0xc735,
+    0xc736, 0xc737, 0xc738, 0xc739, 0xc73a, 0xc73b, 0x003f, 0x003f,
+    0x003f, 0xc73c, 0xc73d, 0xc73e, 0xc73f, 0xc740, 0xc741, 0xc742,
+    0xc743, 0xc744, 0xc745, 0xc746, 0xc747, 0xc748, 0xc749, 0xc74a,
+    0xc74b, 0xc74c, 0x003f, 0xc74d, 0xc74e, 0xc74f, 0xc750, 0xc751,
+    0xc752, 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, 0x003f, 0x003f,
+    0x003f, 0xc758, 0xc759, 0xc75a, 0xc75b, 0xc75c, 0xc75d, 0xc75e,
+    0xc75f, 0xc760, 0xc761, 0xc762, 0xc763, 0xc764, 0xc765, 0xc766,
+    0xc767, 0xc768, 0x003f, 0xc769, 0xc76a, 0xc76b, 0xc76c, 0xc76d,
+    0xc76e, 0xc76f, 0xc770, 0xc771, 0xc772, 0xc773, 0x003f, 0x003f,
+    0x003f, 0xc774, 0xc775, 0xc776, 0xc777, 0xc778, 0xc779, 0xc77a,
+    0xc77b, 0xc77c, 0xc77d, 0xc77e, 0xc77f, 0xc780, 0xc781, 0xc782,
+    0xc783, 0xc784, 0x003f, 0xc785, 0xc786, 0xc787, 0xc788, 0xc789,
+    0xc78a, 0xc78b, 0xc78c, 0xc78d, 0xc78e, 0xc78f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte b8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3148, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc790, 0xc791, 0xc792, 0xc793, 0xc794, 0xc795, 0xc796,
+    0xc797, 0xc798, 0xc799, 0xc79a, 0xc79b, 0xc79c, 0xc79d, 0xc79e,
+    0xc79f, 0xc7a0, 0x003f, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4, 0xc7a5,
+    0xc7a6, 0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0x003f, 0x003f,
+    0x003f, 0xc7ac, 0xc7ad, 0xc7ae, 0xc7af, 0xc7b0, 0xc7b1, 0xc7b2,
+    0xc7b3, 0xc7b4, 0xc7b5, 0xc7b6, 0xc7b7, 0xc7b8, 0xc7b9, 0xc7ba,
+    0xc7bb, 0xc7bc, 0x003f, 0xc7bd, 0xc7be, 0xc7bf, 0xc7c0, 0xc7c1,
+    0xc7c2, 0xc7c3, 0xc7c4, 0xc7c5, 0xc7c6, 0xc7c7, 0x003f, 0x003f,
+    0x003f, 0xc7c8, 0xc7c9, 0xc7ca, 0xc7cb, 0xc7cc, 0xc7cd, 0xc7ce,
+    0xc7cf, 0xc7d0, 0xc7d1, 0xc7d2, 0xc7d3, 0xc7d4, 0xc7d5, 0xc7d6,
+    0xc7d7, 0xc7d8, 0x003f, 0xc7d9, 0xc7da, 0xc7db, 0xc7dc, 0xc7dd,
+    0xc7de, 0xc7df, 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3, 0x003f, 0x003f,
+    0x003f, 0xc7e4, 0xc7e5, 0xc7e6, 0xc7e7, 0xc7e8, 0xc7e9, 0xc7ea,
+    0xc7eb, 0xc7ec, 0xc7ed, 0xc7ee, 0xc7ef, 0xc7f0, 0xc7f1, 0xc7f2,
+    0xc7f3, 0xc7f4, 0x003f, 0xc7f5, 0xc7f6, 0xc7f7, 0xc7f8, 0xc7f9,
+    0xc7fa, 0xc7fb, 0xc7fc, 0xc7fd, 0xc7fe, 0xc7ff, 0x003f, 0x003f,
+    0x003f, 0xc800, 0xc801, 0xc802, 0xc803, 0xc804, 0xc805, 0xc806,
+    0xc807, 0xc808, 0xc809, 0xc80a, 0xc80b, 0xc80c, 0xc80d, 0xc80e,
+    0xc80f, 0xc810, 0x003f, 0xc811, 0xc812, 0xc813, 0xc814, 0xc815,
+    0xc816, 0xc817, 0xc818, 0xc819, 0xc81a, 0xc81b, 0x003f, 0x003f,
+    /* lead byte b9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc81c, 0xc81d, 0xc81e, 0xc81f, 0xc820, 0xc821, 0xc822,
+    0xc823, 0xc824, 0xc825, 0xc826, 0xc827, 0xc828, 0xc829, 0xc82a,
+    0xc82b, 0xc82c, 0x003f, 0xc82d, 0xc82e, 0xc82f, 0xc830, 0xc831,
+    0xc832, 0xc833, 0xc834, 0xc835, 0xc836, 0xc837, 0x003f, 0x003f,
+    0x003f, 0xc838, 0xc839, 0xc83a, 0xc83b, 0xc83c, 0xc83d, 0xc83e,
+    0xc83f, 0xc840, 0xc841, 0xc842, 0xc843, 0xc844, 0xc845, 0xc846,
+    0xc847, 0xc848, 0x003f, 0xc849, 0xc84a, 0xc84b, 0xc84c, 0xc84d,
+    0xc84e, 0xc84f, 0xc850, 0xc851, 0xc852, 0xc853, 0x003f, 0x003f,
+    0x003f, 0xc854, 0xc855, 0xc856, 0xc857, 0xc858, 0xc859, 0xc85a,
+    0xc85b, 0xc85c, 0xc85d, 0xc85e, 0xc85f, 0xc860, 0xc861, 0xc862,
+    0xc863, 0xc864, 0x003f, 0xc865, 0xc866, 0xc867, 0xc868, 0xc869,
+    0xc86a, 0xc86b, 0xc86c, 0xc86d, 0xc86e, 0xc86f, 0x003f, 0x003f,
+    0x003f, 0xc870, 0xc871, 0xc872, 0xc873, 0xc874, 0xc875, 0xc876,
+    0xc877, 0xc878, 0xc879, 0xc87a, 0xc87b, 0xc87c, 0xc87d, 0xc87e,
+    0xc87f, 0xc880, 0x003f, 0xc881, 0xc882, 0xc883, 0xc884, 0xc885,
+    0xc886, 0xc887, 0xc888, 0xc889, 0xc88a, 0xc88b, 0x003f, 0x003f,
+    0x003f, 0xc88c, 0xc88d, 0xc88e, 0xc88f, 0xc890, 0xc891, 0xc892,
+    0xc893, 0xc894, 0xc895, 0xc896, 0xc897, 0xc898, 0xc899, 0xc89a,
+    0xc89b, 0xc89c, 0x003f, 0xc89d, 0xc89e, 0xc89f, 0xc8a0, 0xc8a1,
+    0xc8a2, 0xc8a3, 0xc8a4, 0xc8a5, 0xc8a6, 0xc8a7, 0x003f, 0x003f,
+    0x003f, 0xc8a8, 0xc8a9, 0xc8aa, 0xc8ab, 0xc8ac, 0xc8ad, 0xc8ae,
+    0xc8af, 0xc8b0, 0xc8b1, 0xc8b2, 0xc8b3, 0xc8b4, 0xc8b5, 0xc8b6,
+    0xc8b7, 0xc8b8, 0x003f, 0xc8b9, 0xc8ba, 0xc8bb, 0xc8bc, 0xc8bd,
+    0xc8be, 0xc8bf, 0xc8c0, 0xc8c1, 0xc8c2, 0xc8c3, 0x003f, 0x003f,
+    /* lead byte ba */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc8c4, 0xc8c5, 0xc8c6, 0xc8c7, 0xc8c8, 0xc8c9, 0xc8ca,
+    0xc8cb, 0xc8cc, 0xc8cd, 0xc8ce, 0xc8cf, 0xc8d0, 0xc8d1, 0xc8d2,
+    0xc8d3, 0xc8d4, 0x003f, 0xc8d5, 0xc8d6, 0xc8d7, 0xc8d8, 0xc8d9,
+    0xc8da, 0xc8db, 0xc8dc, 0xc8dd, 0xc8de, 0xc8df, 0x003f, 0x003f,
+    0x003f, 0xc8e0, 0xc8e1, 0xc8e2, 0xc8e3, 0xc8e4, 0xc8e5, 0xc8e6,
+    0xc8e7, 0xc8e8, 0xc8e9, 0xc8ea, 0xc8eb, 0xc8ec, 0xc8ed, 0xc8ee,
+    0xc8ef, 0xc8f0, 0x003f, 0xc8f1, 0xc8f2, 0xc8f3, 0xc8f4, 0xc8f5,
+    0xc8f6, 0xc8f7, 0xc8f8, 0xc8f9, 0xc8fa, 0xc8fb, 0x003f, 0x003f,
+    0x003f, 0xc8fc, 0xc8fd, 0xc8fe, 0xc8ff, 0xc900, 0xc901, 0xc902,
+    0xc903, 0xc904, 0xc905, 0xc906, 0xc907, 0xc908, 0xc909, 0xc90a,
+    0xc90b, 0xc90c, 0x003f, 0xc90d, 0xc90e, 0xc90f, 0xc910, 0xc911,
+    0xc912, 0xc913, 0xc914, 0xc915, 0xc916, 0xc917, 0x003f, 0x003f,
+    0x003f, 0xc918, 0xc919, 0xc91a, 0xc91b, 0xc91c, 0xc91d, 0xc91e,
+    0xc91f, 0xc920, 0xc921, 0xc922, 0xc923, 0xc924, 0xc925, 0xc926,
+    0xc927, 0xc928, 0x003f, 0xc929, 0xc92a, 0xc92b, 0xc92c, 0xc92d,
+    0xc92e, 0xc92f, 0xc930, 0xc931, 0xc932, 0xc933, 0x003f, 0x003f,
+    0x003f, 0xc934, 0xc935, 0xc936, 0xc937, 0xc938, 0xc939, 0xc93a,
+    0xc93b, 0xc93c, 0xc93d, 0xc93e, 0xc93f, 0xc940, 0xc941, 0xc942,
+    0xc943, 0xc944, 0x003f, 0xc945, 0xc946, 0xc947, 0xc948, 0xc949,
+    0xc94a, 0xc94b, 0xc94c, 0xc94d, 0xc94e, 0xc94f, 0x003f, 0x003f,
+    0x003f, 0xc950, 0xc951, 0xc952, 0xc953, 0xc954, 0xc955, 0xc956,
+    0xc957, 0xc958, 0xc959, 0xc95a, 0xc95b, 0xc95c, 0xc95d, 0xc95e,
+    0xc95f, 0xc960, 0x003f, 0xc961, 0xc962, 0xc963, 0xc964, 0xc965,
+    0xc966, 0xc967, 0xc968, 0xc969, 0xc96a, 0xc96b, 0x003f, 0x003f,
+    /* lead byte bb */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc96c, 0xc96d, 0xc96e, 0xc96f, 0xc970, 0xc971, 0xc972,
+    0xc973, 0xc974, 0xc975, 0xc976, 0xc977, 0xc978, 0xc979, 0xc97a,
+    0xc97b, 0xc97c, 0x003f, 0xc97d, 0xc97e, 0xc97f, 0xc980, 0xc981,
+    0xc982, 0xc983, 0xc984, 0xc985, 0xc986, 0xc987, 0x003f, 0x003f,
+    0x003f, 0xc988, 0xc989, 0xc98a, 0xc98b, 0xc98c, 0xc98d, 0xc98e,
+    0xc98f, 0xc990, 0xc991, 0xc992, 0xc993, 0xc994, 0xc995, 0xc996,
+    0xc997, 0xc998, 0x003f, 0xc999, 0xc99a, 0xc99b, 0xc99c, 0xc99d,
+    0xc99e, 0xc99f, 0xc9a0, 0xc9a1, 0xc9a2, 0xc9a3, 0x003f, 0x003f,
+    0x003f, 0xc9a4, 0xc9a5, 0xc9a6, 0xc9a7, 0xc9a8, 0xc9a9, 0xc9aa,
+    0xc9ab, 0xc9ac, 0xc9ad, 0xc9ae, 0xc9af, 0xc9b0, 0xc9b1, 0xc9b2,
+    0xc9b3, 0xc9b4, 0x003f, 0xc9b5, 0xc9b6, 0xc9b7, 0xc9b8, 0xc9b9,
+    0xc9ba, 0xc9bb, 0xc9bc, 0xc9bd, 0xc9be, 0xc9bf, 0x003f, 0x003f,
+    0x003f, 0xc9c0, 0xc9c1, 0xc9c2, 0xc9c3, 0xc9c4, 0xc9c5, 0xc9c6,
+    0xc9c7, 0xc9c8, 0xc9c9, 0xc9ca, 0xc9cb, 0xc9cc, 0xc9cd, 0xc9ce,
+    0xc9cf, 0xc9d0, 0x003f, 0xc9d1, 0xc9d2, 0xc9d3, 0xc9d4, 0xc9d5,
+    0xc9d6, 0xc9d7, 0xc9d8, 0xc9d9, 0xc9da, 0xc9db, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte bc */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3149, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc9dc, 0xc9dd, 0xc9de, 0xc9df, 0xc9e0, 0xc9e1, 0xc9e2,
+    0xc9e3, 0xc9e4, 0xc9e5, 0xc9e6, 0xc9e7, 0xc9e8, 0xc9e9, 0xc9ea,
+    0xc9eb, 0xc9ec, 0x003f, 0xc9ed, 0xc9ee, 0xc9ef, 0xc9f0, 0xc9f1,
+    0xc9f2, 0xc9f3, 0xc9f4, 0xc9f5, 0xc9f6, 0xc9f7, 0x003f, 0x003f,
+    0x003f, 0xc9f8, 0xc9f9, 0xc9fa, 0xc9fb, 0xc9fc, 0xc9fd, 0xc9fe,
+    0xc9ff, 0xca00, 0xca01, 0xca02, 0xca03, 0xca04, 0xca05, 0xca06,
+    0xca07, 0xca08, 0x003f, 0xca09, 0xca0a, 0xca0b, 0xca0c, 0xca0d,
+    0xca0e, 0xca0f, 0xca10, 0xca11, 0xca12, 0xca13, 0x003f, 0x003f,
+    0x003f, 0xca14, 0xca15, 0xca16, 0xca17, 0xca18, 0xca19, 0xca1a,
+    0xca1b, 0xca1c, 0xca1d, 0xca1e, 0xca1f, 0xca20, 0xca21, 0xca22,
+    0xca23, 0xca24, 0x003f, 0xca25, 0xca26, 0xca27, 0xca28, 0xca29,
+    0xca2a, 0xca2b, 0xca2c, 0xca2d, 0xca2e, 0xca2f, 0x003f, 0x003f,
+    0x003f, 0xca30, 0xca31, 0xca32, 0xca33, 0xca34, 0xca35, 0xca36,
+    0xca37, 0xca38, 0xca39, 0xca3a, 0xca3b, 0xca3c, 0xca3d, 0xca3e,
+    0xca3f, 0xca40, 0x003f, 0xca41, 0xca42, 0xca43, 0xca44, 0xca45,
+    0xca46, 0xca47, 0xca48, 0xca49, 0xca4a, 0xca4b, 0x003f, 0x003f,
+    0x003f, 0xca4c, 0xca4d, 0xca4e, 0xca4f, 0xca50, 0xca51, 0xca52,
+    0xca53, 0xca54, 0xca55, 0xca56, 0xca57, 0xca58, 0xca59, 0xca5a,
+    0xca5b, 0xca5c, 0x003f, 0xca5d, 0xca5e, 0xca5f, 0xca60, 0xca61,
+    0xca62, 0xca63, 0xca64, 0xca65, 0xca66, 0xca67, 0x003f, 0x003f,
+    /* lead byte bd */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xca68, 0xca69, 0xca6a, 0xca6b, 0xca6c, 0xca6d, 0xca6e,
+    0xca6f, 0xca70, 0xca71, 0xca72, 0xca73, 0xca74, 0xca75, 0xca76,
+    0xca77, 0xca78, 0x003f, 0xca79, 0xca7a, 0xca7b, 0xca7c, 0xca7d,
+    0xca7e, 0xca7f, 0xca80, 0xca81, 0xca82, 0xca83, 0x003f, 0x003f,
+    0x003f, 0xca84, 0xca85, 0xca86, 0xca87, 0xca88, 0xca89, 0xca8a,
+    0xca8b, 0xca8c, 0xca8d, 0xca8e, 0xca8f, 0xca90, 0xca91, 0xca92,
+    0xca93, 0xca94, 0x003f, 0xca95, 0xca96, 0xca97, 0xca98, 0xca99,
+    0xca9a, 0xca9b, 0xca9c, 0xca9d, 0xca9e, 0xca9f, 0x003f, 0x003f,
+    0x003f, 0xcaa0, 0xcaa1, 0xcaa2, 0xcaa3, 0xcaa4, 0xcaa5, 0xcaa6,
+    0xcaa7, 0xcaa8, 0xcaa9, 0xcaaa, 0xcaab, 0xcaac, 0xcaad, 0xcaae,
+    0xcaaf, 0xcab0, 0x003f, 0xcab1, 0xcab2, 0xcab3, 0xcab4, 0xcab5,
+    0xcab6, 0xcab7, 0xcab8, 0xcab9, 0xcaba, 0xcabb, 0x003f, 0x003f,
+    0x003f, 0xcabc, 0xcabd, 0xcabe, 0xcabf, 0xcac0, 0xcac1, 0xcac2,
+    0xcac3, 0xcac4, 0xcac5, 0xcac6, 0xcac7, 0xcac8, 0xcac9, 0xcaca,
+    0xcacb, 0xcacc, 0x003f, 0xcacd, 0xcace, 0xcacf, 0xcad0, 0xcad1,
+    0xcad2, 0xcad3, 0xcad4, 0xcad5, 0xcad6, 0xcad7, 0x003f, 0x003f,
+    0x003f, 0xcad8, 0xcad9, 0xcada, 0xcadb, 0xcadc, 0xcadd, 0xcade,
+    0xcadf, 0xcae0, 0xcae1, 0xcae2, 0xcae3, 0xcae4, 0xcae5, 0xcae6,
+    0xcae7, 0xcae8, 0x003f, 0xcae9, 0xcaea, 0xcaeb, 0xcaec, 0xcaed,
+    0xcaee, 0xcaef, 0xcaf0, 0xcaf1, 0xcaf2, 0xcaf3, 0x003f, 0x003f,
+    0x003f, 0xcaf4, 0xcaf5, 0xcaf6, 0xcaf7, 0xcaf8, 0xcaf9, 0xcafa,
+    0xcafb, 0xcafc, 0xcafd, 0xcafe, 0xcaff, 0xcb00, 0xcb01, 0xcb02,
+    0xcb03, 0xcb04, 0x003f, 0xcb05, 0xcb06, 0xcb07, 0xcb08, 0xcb09,
+    0xcb0a, 0xcb0b, 0xcb0c, 0xcb0d, 0xcb0e, 0xcb0f, 0x003f, 0x003f,
+    /* lead byte be */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcb10, 0xcb11, 0xcb12, 0xcb13, 0xcb14, 0xcb15, 0xcb16,
+    0xcb17, 0xcb18, 0xcb19, 0xcb1a, 0xcb1b, 0xcb1c, 0xcb1d, 0xcb1e,
+    0xcb1f, 0xcb20, 0x003f, 0xcb21, 0xcb22, 0xcb23, 0xcb24, 0xcb25,
+    0xcb26, 0xcb27, 0xcb28, 0xcb29, 0xcb2a, 0xcb2b, 0x003f, 0x003f,
+    0x003f, 0xcb2c, 0xcb2d, 0xcb2e, 0xcb2f, 0xcb30, 0xcb31, 0xcb32,
+    0xcb33, 0xcb34, 0xcb35, 0xcb36, 0xcb37, 0xcb38, 0xcb39, 0xcb3a,
+    0xcb3b, 0xcb3c, 0x003f, 0xcb3d, 0xcb3e, 0xcb3f, 0xcb40, 0xcb41,
+    0xcb42, 0xcb43, 0xcb44, 0xcb45, 0xcb46, 0xcb47, 0x003f, 0x003f,
+    0x003f, 0xcb48, 0xcb49, 0xcb4a, 0xcb4b, 0xcb4c, 0xcb4d, 0xcb4e,
+    0xcb4f, 0xcb50, 0xcb51, 0xcb52, 0xcb53, 0xcb54, 0xcb55, 0xcb56,
+    0xcb57, 0xcb58, 0x003f, 0xcb59, 0xcb5a, 0xcb5b, 0xcb5c, 0xcb5d,
+    0xcb5e, 0xcb5f, 0xcb60, 0xcb61, 0xcb62, 0xcb63, 0x003f, 0x003f,
+    0x003f, 0xcb64, 0xcb65, 0xcb66, 0xcb67, 0xcb68, 0xcb69, 0xcb6a,
+    0xcb6b, 0xcb6c, 0xcb6d, 0xcb6e, 0xcb6f, 0xcb70, 0xcb71, 0xcb72,
+    0xcb73, 0xcb74, 0x003f, 0xcb75, 0xcb76, 0xcb77, 0xcb78, 0xcb79,
+    0xcb7a, 0xcb7b, 0xcb7c, 0xcb7d, 0xcb7e, 0xcb7f, 0x003f, 0x003f,
+    0x003f, 0xcb80, 0xcb81, 0xcb82, 0xcb83, 0xcb84, 0xcb85, 0xcb86,
+    0xcb87, 0xcb88, 0xcb89, 0xcb8a, 0xcb8b, 0xcb8c, 0xcb8d, 0xcb8e,
+    0xcb8f, 0xcb90, 0x003f, 0xcb91, 0xcb92, 0xcb93, 0xcb94, 0xcb95,
+    0xcb96, 0xcb97, 0xcb98, 0xcb99, 0xcb9a, 0xcb9b, 0x003f, 0x003f,
+    0x003f, 0xcb9c, 0xcb9d, 0xcb9e, 0xcb9f, 0xcba0, 0xcba1, 0xcba2,
+    0xcba3, 0xcba4, 0xcba5, 0xcba6, 0xcba7, 0xcba8, 0xcba9, 0xcbaa,
+    0xcbab, 0xcbac, 0x003f, 0xcbad, 0xcbae, 0xcbaf, 0xcbb0, 0xcbb1,
+    0xcbb2, 0xcbb3, 0xcbb4, 0xcbb5, 0xcbb6, 0xcbb7, 0x003f, 0x003f,
+    /* lead byte bf */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcbb8, 0xcbb9, 0xcbba, 0xcbbb, 0xcbbc, 0xcbbd, 0xcbbe,
+    0xcbbf, 0xcbc0, 0xcbc1, 0xcbc2, 0xcbc3, 0xcbc4, 0xcbc5, 0xcbc6,
+    0xcbc7, 0xcbc8, 0x003f, 0xcbc9, 0xcbca, 0xcbcb, 0xcbcc, 0xcbcd,
+    0xcbce, 0xcbcf, 0xcbd0, 0xcbd1, 0xcbd2, 0xcbd3, 0x003f, 0x003f,
+    0x003f, 0xcbd4, 0xcbd5, 0xcbd6, 0xcbd7, 0xcbd8, 0xcbd9, 0xcbda,
+    0xcbdb, 0xcbdc, 0xcbdd, 0xcbde, 0xcbdf, 0xcbe0, 0xcbe1, 0xcbe2,
+    0xcbe3, 0xcbe4, 0x003f, 0xcbe5, 0xcbe6, 0xcbe7, 0xcbe8, 0xcbe9,
+    0xcbea, 0xcbeb, 0xcbec, 0xcbed, 0xcbee, 0xcbef, 0x003f, 0x003f,
+    0x003f, 0xcbf0, 0xcbf1, 0xcbf2, 0xcbf3, 0xcbf4, 0xcbf5, 0xcbf6,
+    0xcbf7, 0xcbf8, 0xcbf9, 0xcbfa, 0xcbfb, 0xcbfc, 0xcbfd, 0xcbfe,
+    0xcbff, 0xcc00, 0x003f, 0xcc01, 0xcc02, 0xcc03, 0xcc04, 0xcc05,
+    0xcc06, 0xcc07, 0xcc08, 0xcc09, 0xcc0a, 0xcc0b, 0x003f, 0x003f,
+    0x003f, 0xcc0c, 0xcc0d, 0xcc0e, 0xcc0f, 0xcc10, 0xcc11, 0xcc12,
+    0xcc13, 0xcc14, 0xcc15, 0xcc16, 0xcc17, 0xcc18, 0xcc19, 0xcc1a,
+    0xcc1b, 0xcc1c, 0x003f, 0xcc1d, 0xcc1e, 0xcc1f, 0xcc20, 0xcc21,
+    0xcc22, 0xcc23, 0xcc24, 0xcc25, 0xcc26, 0xcc27, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte c0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x314a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcc28, 0xcc29, 0xcc2a, 0xcc2b, 0xcc2c, 0xcc2d, 0xcc2e,
+    0xcc2f, 0xcc30, 0xcc31, 0xcc32, 0xcc33, 0xcc34, 0xcc35, 0xcc36,
+    0xcc37, 0xcc38, 0x003f, 0xcc39, 0xcc3a, 0xcc3b, 0xcc3c, 0xcc3d,
+    0xcc3e, 0xcc3f, 0xcc40, 0xcc41, 0xcc42, 0xcc43, 0x003f, 0x003f,
+    0x003f, 0xcc44, 0xcc45, 0xcc46, 0xcc47, 0xcc48, 0xcc49, 0xcc4a,
+    0xcc4b, 0xcc4c, 0xcc4d, 0xcc4e, 0xcc4f, 0xcc50, 0xcc51, 0xcc52,
+    0xcc53, 0xcc54, 0x003f, 0xcc55, 0xcc56, 0xcc57, 0xcc58, 0xcc59,
+    0xcc5a, 0xcc5b, 0xcc5c, 0xcc5d, 0xcc5e, 0xcc5f, 0x003f, 0x003f,
+    0x003f, 0xcc60, 0xcc61, 0xcc62, 0xcc63, 0xcc64, 0xcc65, 0xcc66,
+    0xcc67, 0xcc68, 0xcc69, 0xcc6a, 0xcc6b, 0xcc6c, 0xcc6d, 0xcc6e,
+    0xcc6f, 0xcc70, 0x003f, 0xcc71, 0xcc72, 0xcc73, 0xcc74, 0xcc75,
+    0xcc76, 0xcc77, 0xcc78, 0xcc79, 0xcc7a, 0xcc7b, 0x003f, 0x003f,
+    0x003f, 0xcc7c, 0xcc7d, 0xcc7e, 0xcc7f, 0xcc80, 0xcc81, 0xcc82,
+    0xcc83, 0xcc84, 0xcc85, 0xcc86, 0xcc87, 0xcc88, 0xcc89, 0xcc8a,
+    0xcc8b, 0xcc8c, 0x003f, 0xcc8d, 0xcc8e, 0xcc8f, 0xcc90, 0xcc91,
+    0xcc92, 0xcc93, 0xcc94, 0xcc95, 0xcc96, 0xcc97, 0x003f, 0x003f,
+    0x003f, 0xcc98, 0xcc99, 0xcc9a, 0xcc9b, 0xcc9c, 0xcc9d, 0xcc9e,
+    0xcc9f, 0xcca0, 0xcca1, 0xcca2, 0xcca3, 0xcca4, 0xcca5, 0xcca6,
+    0xcca7, 0xcca8, 0x003f, 0xcca9, 0xccaa, 0xccab, 0xccac, 0xccad,
+    0xccae, 0xccaf, 0xccb0, 0xccb1, 0xccb2, 0xccb3, 0x003f, 0x003f,
+    /* lead byte c1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xccb4, 0xccb5, 0xccb6, 0xccb7, 0xccb8, 0xccb9, 0xccba,
+    0xccbb, 0xccbc, 0xccbd, 0xccbe, 0xccbf, 0xccc0, 0xccc1, 0xccc2,
+    0xccc3, 0xccc4, 0x003f, 0xccc5, 0xccc6, 0xccc7, 0xccc8, 0xccc9,
+    0xccca, 0xcccb, 0xcccc, 0xcccd, 0xccce, 0xcccf, 0x003f, 0x003f,
+    0x003f, 0xccd0, 0xccd1, 0xccd2, 0xccd3, 0xccd4, 0xccd5, 0xccd6,
+    0xccd7, 0xccd8, 0xccd9, 0xccda, 0xccdb, 0xccdc, 0xccdd, 0xccde,
+    0xccdf, 0xcce0, 0x003f, 0xcce1, 0xcce2, 0xcce3, 0xcce4, 0xcce5,
+    0xcce6, 0xcce7, 0xcce8, 0xcce9, 0xccea, 0xcceb, 0x003f, 0x003f,
+    0x003f, 0xccec, 0xcced, 0xccee, 0xccef, 0xccf0, 0xccf1, 0xccf2,
+    0xccf3, 0xccf4, 0xccf5, 0xccf6, 0xccf7, 0xccf8, 0xccf9, 0xccfa,
+    0xccfb, 0xccfc, 0x003f, 0xccfd, 0xccfe, 0xccff, 0xcd00, 0xcd01,
+    0xcd02, 0xcd03, 0xcd04, 0xcd05, 0xcd06, 0xcd07, 0x003f, 0x003f,
+    0x003f, 0xcd08, 0xcd09, 0xcd0a, 0xcd0b, 0xcd0c, 0xcd0d, 0xcd0e,
+    0xcd0f, 0xcd10, 0xcd11, 0xcd12, 0xcd13, 0xcd14, 0xcd15, 0xcd16,
+    0xcd17, 0xcd18, 0x003f, 0xcd19, 0xcd1a, 0xcd1b, 0xcd1c, 0xcd1d,
+    0xcd1e, 0xcd1f, 0xcd20, 0xcd21, 0xcd22, 0xcd23, 0x003f, 0x003f,
+    0x003f, 0xcd24, 0xcd25, 0xcd26, 0xcd27, 0xcd28, 0xcd29, 0xcd2a,
+    0xcd2b, 0xcd2c, 0xcd2d, 0xcd2e, 0xcd2f, 0xcd30, 0xcd31, 0xcd32,
+    0xcd33, 0xcd34, 0x003f, 0xcd35, 0xcd36, 0xcd37, 0xcd38, 0xcd39,
+    0xcd3a, 0xcd3b, 0xcd3c, 0xcd3d, 0xcd3e, 0xcd3f, 0x003f, 0x003f,
+    0x003f, 0xcd40, 0xcd41, 0xcd42, 0xcd43, 0xcd44, 0xcd45, 0xcd46,
+    0xcd47, 0xcd48, 0xcd49, 0xcd4a, 0xcd4b, 0xcd4c, 0xcd4d, 0xcd4e,
+    0xcd4f, 0xcd50, 0x003f, 0xcd51, 0xcd52, 0xcd53, 0xcd54, 0xcd55,
+    0xcd56, 0xcd57, 0xcd58, 0xcd59, 0xcd5a, 0xcd5b, 0x003f, 0x003f,
+    /* lead byte c2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcd5c, 0xcd5d, 0xcd5e, 0xcd5f, 0xcd60, 0xcd61, 0xcd62,
+    0xcd63, 0xcd64, 0xcd65, 0xcd66, 0xcd67, 0xcd68, 0xcd69, 0xcd6a,
+    0xcd6b, 0xcd6c, 0x003f, 0xcd6d, 0xcd6e, 0xcd6f, 0xcd70, 0xcd71,
+    0xcd72, 0xcd73, 0xcd74, 0xcd75, 0xcd76, 0xcd77, 0x003f, 0x003f,
+    0x003f, 0xcd78, 0xcd79, 0xcd7a, 0xcd7b, 0xcd7c, 0xcd7d, 0xcd7e,
+    0xcd7f, 0xcd80, 0xcd81, 0xcd82, 0xcd83, 0xcd84, 0xcd85, 0xcd86,
+    0xcd87, 0xcd88, 0x003f, 0xcd89, 0xcd8a, 0xcd8b, 0xcd8c, 0xcd8d,
+    0xcd8e, 0xcd8f, 0xcd90, 0xcd91, 0xcd92, 0xcd93, 0x003f, 0x003f,
+    0x003f, 0xcd94, 0xcd95, 0xcd96, 0xcd97, 0xcd98, 0xcd99, 0xcd9a,
+    0xcd9b, 0xcd9c, 0xcd9d, 0xcd9e, 0xcd9f, 0xcda0, 0xcda1, 0xcda2,
+    0xcda3, 0xcda4, 0x003f, 0xcda5, 0xcda6, 0xcda7, 0xcda8, 0xcda9,
+    0xcdaa, 0xcdab, 0xcdac, 0xcdad, 0xcdae, 0xcdaf, 0x003f, 0x003f,
+    0x003f, 0xcdb0, 0xcdb1, 0xcdb2, 0xcdb3, 0xcdb4, 0xcdb5, 0xcdb6,
+    0xcdb7, 0xcdb8, 0xcdb9, 0xcdba, 0xcdbb, 0xcdbc, 0xcdbd, 0xcdbe,
+    0xcdbf, 0xcdc0, 0x003f, 0xcdc1, 0xcdc2, 0xcdc3, 0xcdc4, 0xcdc5,
+    0xcdc6, 0xcdc7, 0xcdc8, 0xcdc9, 0xcdca, 0xcdcb, 0x003f, 0x003f,
+    0x003f, 0xcdcc, 0xcdcd, 0xcdce, 0xcdcf, 0xcdd0, 0xcdd1, 0xcdd2,
+    0xcdd3, 0xcdd4, 0xcdd5, 0xcdd6, 0xcdd7, 0xcdd8, 0xcdd9, 0xcdda,
+    0xcddb, 0xcddc, 0x003f, 0xcddd, 0xcdde, 0xcddf, 0xcde0, 0xcde1,
+    0xcde2, 0xcde3, 0xcde4, 0xcde5, 0xcde6, 0xcde7, 0x003f, 0x003f,
+    0x003f, 0xcde8, 0xcde9, 0xcdea, 0xcdeb, 0xcdec, 0xcded, 0xcdee,
+    0xcdef, 0xcdf0, 0xcdf1, 0xcdf2, 0xcdf3, 0xcdf4, 0xcdf5, 0xcdf6,
+    0xcdf7, 0xcdf8, 0x003f, 0xcdf9, 0xcdfa, 0xcdfb, 0xcdfc, 0xcdfd,
+    0xcdfe, 0xcdff, 0xce00, 0xce01, 0xce02, 0xce03, 0x003f, 0x003f,
+    /* lead byte c3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xce04, 0xce05, 0xce06, 0xce07, 0xce08, 0xce09, 0xce0a,
+    0xce0b, 0xce0c, 0xce0d, 0xce0e, 0xce0f, 0xce10, 0xce11, 0xce12,
+    0xce13, 0xce14, 0x003f, 0xce15, 0xce16, 0xce17, 0xce18, 0xce19,
+    0xce1a, 0xce1b, 0xce1c, 0xce1d, 0xce1e, 0xce1f, 0x003f, 0x003f,
+    0x003f, 0xce20, 0xce21, 0xce22, 0xce23, 0xce24, 0xce25, 0xce26,
+    0xce27, 0xce28, 0xce29, 0xce2a, 0xce2b, 0xce2c, 0xce2d, 0xce2e,
+    0xce2f, 0xce30, 0x003f, 0xce31, 0xce32, 0xce33, 0xce34, 0xce35,
+    0xce36, 0xce37, 0xce38, 0xce39, 0xce3a, 0xce3b, 0x003f, 0x003f,
+    0x003f, 0xce3c, 0xce3d, 0xce3e, 0xce3f, 0xce40, 0xce41, 0xce42,
+    0xce43, 0xce44, 0xce45, 0xce46, 0xce47, 0xce48, 0xce49, 0xce4a,
+    0xce4b, 0xce4c, 0x003f, 0xce4d, 0xce4e, 0xce4f, 0xce50, 0xce51,
+    0xce52, 0xce53, 0xce54, 0xce55, 0xce56, 0xce57, 0x003f, 0x003f,
+    0x003f, 0xce58, 0xce59, 0xce5a, 0xce5b, 0xce5c, 0xce5d, 0xce5e,
+    0xce5f, 0xce60, 0xce61, 0xce62, 0xce63, 0xce64, 0xce65, 0xce66,
+    0xce67, 0xce68, 0x003f, 0xce69, 0xce6a, 0xce6b, 0xce6c, 0xce6d,
+    0xce6e, 0xce6f, 0xce70, 0xce71, 0xce72, 0xce73, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte c4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x314b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xce74, 0xce75, 0xce76, 0xce77, 0xce78, 0xce79, 0xce7a,
+    0xce7b, 0xce7c, 0xce7d, 0xce7e, 0xce7f, 0xce80, 0xce81, 0xce82,
+    0xce83, 0xce84, 0x003f, 0xce85, 0xce86, 0xce87, 0xce88, 0xce89,
+    0xce8a, 0xce8b, 0xce8c, 0xce8d, 0xce8e, 0xce8f, 0x003f, 0x003f,
+    0x003f, 0xce90, 0xce91, 0xce92, 0xce93, 0xce94, 0xce95, 0xce96,
+    0xce97, 0xce98, 0xce99, 0xce9a, 0xce9b, 0xce9c, 0xce9d, 0xce9e,
+    0xce9f, 0xcea0, 0x003f, 0xcea1, 0xcea2, 0xcea3, 0xcea4, 0xcea5,
+    0xcea6, 0xcea7, 0xcea8, 0xcea9, 0xceaa, 0xceab, 0x003f, 0x003f,
+    0x003f, 0xceac, 0xcead, 0xceae, 0xceaf, 0xceb0, 0xceb1, 0xceb2,
+    0xceb3, 0xceb4, 0xceb5, 0xceb6, 0xceb7, 0xceb8, 0xceb9, 0xceba,
+    0xcebb, 0xcebc, 0x003f, 0xcebd, 0xcebe, 0xcebf, 0xcec0, 0xcec1,
+    0xcec2, 0xcec3, 0xcec4, 0xcec5, 0xcec6, 0xcec7, 0x003f, 0x003f,
+    0x003f, 0xcec8, 0xcec9, 0xceca, 0xcecb, 0xcecc, 0xcecd, 0xcece,
+    0xcecf, 0xced0, 0xced1, 0xced2, 0xced3, 0xced4, 0xced5, 0xced6,
+    0xced7, 0xced8, 0x003f, 0xced9, 0xceda, 0xcedb, 0xcedc, 0xcedd,
+    0xcede, 0xcedf, 0xcee0, 0xcee1, 0xcee2, 0xcee3, 0x003f, 0x003f,
+    0x003f, 0xcee4, 0xcee5, 0xcee6, 0xcee7, 0xcee8, 0xcee9, 0xceea,
+    0xceeb, 0xceec, 0xceed, 0xceee, 0xceef, 0xcef0, 0xcef1, 0xcef2,
+    0xcef3, 0xcef4, 0x003f, 0xcef5, 0xcef6, 0xcef7, 0xcef8, 0xcef9,
+    0xcefa, 0xcefb, 0xcefc, 0xcefd, 0xcefe, 0xceff, 0x003f, 0x003f,
+    /* lead byte c5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcf00, 0xcf01, 0xcf02, 0xcf03, 0xcf04, 0xcf05, 0xcf06,
+    0xcf07, 0xcf08, 0xcf09, 0xcf0a, 0xcf0b, 0xcf0c, 0xcf0d, 0xcf0e,
+    0xcf0f, 0xcf10, 0x003f, 0xcf11, 0xcf12, 0xcf13, 0xcf14, 0xcf15,
+    0xcf16, 0xcf17, 0xcf18, 0xcf19, 0xcf1a, 0xcf1b, 0x003f, 0x003f,
+    0x003f, 0xcf1c, 0xcf1d, 0xcf1e, 0xcf1f, 0xcf20, 0xcf21, 0xcf22,
+    0xcf23, 0xcf24, 0xcf25, 0xcf26, 0xcf27, 0xcf28, 0xcf29, 0xcf2a,
+    0xcf2b, 0xcf2c, 0x003f, 0xcf2d, 0xcf2e, 0xcf2f, 0xcf30, 0xcf31,
+    0xcf32, 0xcf33, 0xcf34, 0xcf35, 0xcf36, 0xcf37, 0x003f, 0x003f,
+    0x003f, 0xcf38, 0xcf39, 0xcf3a, 0xcf3b, 0xcf3c, 0xcf3d, 0xcf3e,
+    0xcf3f, 0xcf40, 0xcf41, 0xcf42, 0xcf43, 0xcf44, 0xcf45, 0xcf46,
+    0xcf47, 0xcf48, 0x003f, 0xcf49, 0xcf4a, 0xcf4b, 0xcf4c, 0xcf4d,
+    0xcf4e, 0xcf4f, 0xcf50, 0xcf51, 0xcf52, 0xcf53, 0x003f, 0x003f,
+    0x003f, 0xcf54, 0xcf55, 0xcf56, 0xcf57, 0xcf58, 0xcf59, 0xcf5a,
+    0xcf5b, 0xcf5c, 0xcf5d, 0xcf5e, 0xcf5f, 0xcf60, 0xcf61, 0xcf62,
+    0xcf63, 0xcf64, 0x003f, 0xcf65, 0xcf66, 0xcf67, 0xcf68, 0xcf69,
+    0xcf6a, 0xcf6b, 0xcf6c, 0xcf6d, 0xcf6e, 0xcf6f, 0x003f, 0x003f,
+    0x003f, 0xcf70, 0xcf71, 0xcf72, 0xcf73, 0xcf74, 0xcf75, 0xcf76,
+    0xcf77, 0xcf78, 0xcf79, 0xcf7a, 0xcf7b, 0xcf7c, 0xcf7d, 0xcf7e,
+    0xcf7f, 0xcf80, 0x003f, 0xcf81, 0xcf82, 0xcf83, 0xcf84, 0xcf85,
+    0xcf86, 0xcf87, 0xcf88, 0xcf89, 0xcf8a, 0xcf8b, 0x003f, 0x003f,
+    0x003f, 0xcf8c, 0xcf8d, 0xcf8e, 0xcf8f, 0xcf90, 0xcf91, 0xcf92,
+    0xcf93, 0xcf94, 0xcf95, 0xcf96, 0xcf97, 0xcf98, 0xcf99, 0xcf9a,
+    0xcf9b, 0xcf9c, 0x003f, 0xcf9d, 0xcf9e, 0xcf9f, 0xcfa0, 0xcfa1,
+    0xcfa2, 0xcfa3, 0xcfa4, 0xcfa5, 0xcfa6, 0xcfa7, 0x003f, 0x003f,
+    /* lead byte c6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcfa8, 0xcfa9, 0xcfaa, 0xcfab, 0xcfac, 0xcfad, 0xcfae,
+    0xcfaf, 0xcfb0, 0xcfb1, 0xcfb2, 0xcfb3, 0xcfb4, 0xcfb5, 0xcfb6,
+    0xcfb7, 0xcfb8, 0x003f, 0xcfb9, 0xcfba, 0xcfbb, 0xcfbc, 0xcfbd,
+    0xcfbe, 0xcfbf, 0xcfc0, 0xcfc1, 0xcfc2, 0xcfc3, 0x003f, 0x003f,
+    0x003f, 0xcfc4, 0xcfc5, 0xcfc6, 0xcfc7, 0xcfc8, 0xcfc9, 0xcfca,
+    0xcfcb, 0xcfcc, 0xcfcd, 0xcfce, 0xcfcf, 0xcfd0, 0xcfd1, 0xcfd2,
+    0xcfd3, 0xcfd4, 0x003f, 0xcfd5, 0xcfd6, 0xcfd7, 0xcfd8, 0xcfd9,
+    0xcfda, 0xcfdb, 0xcfdc, 0xcfdd, 0xcfde, 0xcfdf, 0x003f, 0x003f,
+    0x003f, 0xcfe0, 0xcfe1, 0xcfe2, 0xcfe3, 0xcfe4, 0xcfe5, 0xcfe6,
+    0xcfe7, 0xcfe8, 0xcfe9, 0xcfea, 0xcfeb, 0xcfec, 0xcfed, 0xcfee,
+    0xcfef, 0xcff0, 0x003f, 0xcff1, 0xcff2, 0xcff3, 0xcff4, 0xcff5,
+    0xcff6, 0xcff7, 0xcff8, 0xcff9, 0xcffa, 0xcffb, 0x003f, 0x003f,
+    0x003f, 0xcffc, 0xcffd, 0xcffe, 0xcfff, 0xd000, 0xd001, 0xd002,
+    0xd003, 0xd004, 0xd005, 0xd006, 0xd007, 0xd008, 0xd009, 0xd00a,
+    0xd00b, 0xd00c, 0x003f, 0xd00d, 0xd00e, 0xd00f, 0xd010, 0xd011,
+    0xd012, 0xd013, 0xd014, 0xd015, 0xd016, 0xd017, 0x003f, 0x003f,
+    0x003f, 0xd018, 0xd019, 0xd01a, 0xd01b, 0xd01c, 0xd01d, 0xd01e,
+    0xd01f, 0xd020, 0xd021, 0xd022, 0xd023, 0xd024, 0xd025, 0xd026,
+    0xd027, 0xd028, 0x003f, 0xd029, 0xd02a, 0xd02b, 0xd02c, 0xd02d,
+    0xd02e, 0xd02f, 0xd030, 0xd031, 0xd032, 0xd033, 0x003f, 0x003f,
+    0x003f, 0xd034, 0xd035, 0xd036, 0xd037, 0xd038, 0xd039, 0xd03a,
+    0xd03b, 0xd03c, 0xd03d, 0xd03e, 0xd03f, 0xd040, 0xd041, 0xd042,
+    0xd043, 0xd044, 0x003f, 0xd045, 0xd046, 0xd047, 0xd048, 0xd049,
+    0xd04a, 0xd04b, 0xd04c, 0xd04d, 0xd04e, 0xd04f, 0x003f, 0x003f,
+    /* lead byte c7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd050, 0xd051, 0xd052, 0xd053, 0xd054, 0xd055, 0xd056,
+    0xd057, 0xd058, 0xd059, 0xd05a, 0xd05b, 0xd05c, 0xd05d, 0xd05e,
+    0xd05f, 0xd060, 0x003f, 0xd061, 0xd062, 0xd063, 0xd064, 0xd065,
+    0xd066, 0xd067, 0xd068, 0xd069, 0xd06a, 0xd06b, 0x003f, 0x003f,
+    0x003f, 0xd06c, 0xd06d, 0xd06e, 0xd06f, 0xd070, 0xd071, 0xd072,
+    0xd073, 0xd074, 0xd075, 0xd076, 0xd077, 0xd078, 0xd079, 0xd07a,
+    0xd07b, 0xd07c, 0x003f, 0xd07d, 0xd07e, 0xd07f, 0xd080, 0xd081,
+    0xd082, 0xd083, 0xd084, 0xd085, 0xd086, 0xd087, 0x003f, 0x003f,
+    0x003f, 0xd088, 0xd089, 0xd08a, 0xd08b, 0xd08c, 0xd08d, 0xd08e,
+    0xd08f, 0xd090, 0xd091, 0xd092, 0xd093, 0xd094, 0xd095, 0xd096,
+    0xd097, 0xd098, 0x003f, 0xd099, 0xd09a, 0xd09b, 0xd09c, 0xd09d,
+    0xd09e, 0xd09f, 0xd0a0, 0xd0a1, 0xd0a2, 0xd0a3, 0x003f, 0x003f,
+    0x003f, 0xd0a4, 0xd0a5, 0xd0a6, 0xd0a7, 0xd0a8, 0xd0a9, 0xd0aa,
+    0xd0ab, 0xd0ac, 0xd0ad, 0xd0ae, 0xd0af, 0xd0b0, 0xd0b1, 0xd0b2,
+    0xd0b3, 0xd0b4, 0x003f, 0xd0b5, 0xd0b6, 0xd0b7, 0xd0b8, 0xd0b9,
+    0xd0ba, 0xd0bb, 0xd0bc, 0xd0bd, 0xd0be, 0xd0bf, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte c8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x314c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd0c0, 0xd0c1, 0xd0c2, 0xd0c3, 0xd0c4, 0xd0c5, 0xd0c6,
+    0xd0c7, 0xd0c8, 0xd0c9, 0xd0ca, 0xd0cb, 0xd0cc, 0xd0cd, 0xd0ce,
+    0xd0cf, 0xd0d0, 0x003f, 0xd0d1, 0xd0d2, 0xd0d3, 0xd0d4, 0xd0d5,
+    0xd0d6, 0xd0d7, 0xd0d8, 0xd0d9, 0xd0da, 0xd0db, 0x003f, 0x003f,
+    0x003f, 0xd0dc, 0xd0dd, 0xd0de, 0xd0df, 0xd0e0, 0xd0e1, 0xd0e2,
+    0xd0e3, 0xd0e4, 0xd0e5, 0xd0e6, 0xd0e7, 0xd0e8, 0xd0e9, 0xd0ea,
+    0xd0eb, 0xd0ec, 0x003f, 0xd0ed, 0xd0ee, 0xd0ef, 0xd0f0, 0xd0f1,
+    0xd0f2, 0xd0f3, 0xd0f4, 0xd0f5, 0xd0f6, 0xd0f7, 0x003f, 0x003f,
+    0x003f, 0xd0f8, 0xd0f9, 0xd0fa, 0xd0fb, 0xd0fc, 0xd0fd, 0xd0fe,
+    0xd0ff, 0xd100, 0xd101, 0xd102, 0xd103, 0xd104, 0xd105, 0xd106,
+    0xd107, 0xd108, 0x003f, 0xd109, 0xd10a, 0xd10b, 0xd10c, 0xd10d,
+    0xd10e, 0xd10f, 0xd110, 0xd111, 0xd112, 0xd113, 0x003f, 0x003f,
+    0x003f, 0xd114, 0xd115, 0xd116, 0xd117, 0xd118, 0xd119, 0xd11a,
+    0xd11b, 0xd11c, 0xd11d, 0xd11e, 0xd11f, 0xd120, 0xd121, 0xd122,
+    0xd123, 0xd124, 0x003f, 0xd125, 0xd126, 0xd127, 0xd128, 0xd129,
+    0xd12a, 0xd12b, 0xd12c, 0xd12d, 0xd12e, 0xd12f, 0x003f, 0x003f,
+    0x003f, 0xd130, 0xd131, 0xd132, 0xd133, 0xd134, 0xd135, 0xd136,
+    0xd137, 0xd138, 0xd139, 0xd13a, 0xd13b, 0xd13c, 0xd13d, 0xd13e,
+    0xd13f, 0xd140, 0x003f, 0xd141, 0xd142, 0xd143, 0xd144, 0xd145,
+    0xd146, 0xd147, 0xd148, 0xd149, 0xd14a, 0xd14b, 0x003f, 0x003f,
+    /* lead byte c9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd14c, 0xd14d, 0xd14e, 0xd14f, 0xd150, 0xd151, 0xd152,
+    0xd153, 0xd154, 0xd155, 0xd156, 0xd157, 0xd158, 0xd159, 0xd15a,
+    0xd15b, 0xd15c, 0x003f, 0xd15d, 0xd15e, 0xd15f, 0xd160, 0xd161,
+    0xd162, 0xd163, 0xd164, 0xd165, 0xd166, 0xd167, 0x003f, 0x003f,
+    0x003f, 0xd168, 0xd169, 0xd16a, 0xd16b, 0xd16c, 0xd16d, 0xd16e,
+    0xd16f, 0xd170, 0xd171, 0xd172, 0xd173, 0xd174, 0xd175, 0xd176,
+    0xd177, 0xd178, 0x003f, 0xd179, 0xd17a, 0xd17b, 0xd17c, 0xd17d,
+    0xd17e, 0xd17f, 0xd180, 0xd181, 0xd182, 0xd183, 0x003f, 0x003f,
+    0x003f, 0xd184, 0xd185, 0xd186, 0xd187, 0xd188, 0xd189, 0xd18a,
+    0xd18b, 0xd18c, 0xd18d, 0xd18e, 0xd18f, 0xd190, 0xd191, 0xd192,
+    0xd193, 0xd194, 0x003f, 0xd195, 0xd196, 0xd197, 0xd198, 0xd199,
+    0xd19a, 0xd19b, 0xd19c, 0xd19d, 0xd19e, 0xd19f, 0x003f, 0x003f,
+    0x003f, 0xd1a0, 0xd1a1, 0xd1a2, 0xd1a3, 0xd1a4, 0xd1a5, 0xd1a6,
+    0xd1a7, 0xd1a8, 0xd1a9, 0xd1aa, 0xd1ab, 0xd1ac, 0xd1ad, 0xd1ae,
+    0xd1af, 0xd1b0, 0x003f, 0xd1b1, 0xd1b2, 0xd1b3, 0xd1b4, 0xd1b5,
+    0xd1b6, 0xd1b7, 0xd1b8, 0xd1b9, 0xd1ba, 0xd1bb, 0x003f, 0x003f,
+    0x003f, 0xd1bc, 0xd1bd, 0xd1be, 0xd1bf, 0xd1c0, 0xd1c1, 0xd1c2,
+    0xd1c3, 0xd1c4, 0xd1c5, 0xd1c6, 0xd1c7, 0xd1c8, 0xd1c9, 0xd1ca,
+    0xd1cb, 0xd1cc, 0x003f, 0xd1cd, 0xd1ce, 0xd1cf, 0xd1d0, 0xd1d1,
+    0xd1d2, 0xd1d3, 0xd1d4, 0xd1d5, 0xd1d6, 0xd1d7, 0x003f, 0x003f,
+    0x003f, 0xd1d8, 0xd1d9, 0xd1da, 0xd1db, 0xd1dc, 0xd1dd, 0xd1de,
+    0xd1df, 0xd1e0, 0xd1e1, 0xd1e2, 0xd1e3, 0xd1e4, 0xd1e5, 0xd1e6,
+    0xd1e7, 0xd1e8, 0x003f, 0xd1e9, 0xd1ea, 0xd1eb, 0xd1ec, 0xd1ed,
+    0xd1ee, 0xd1ef, 0xd1f0, 0xd1f1, 0xd1f2, 0xd1f3, 0x003f, 0x003f,
+    /* lead byte ca */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd1f4, 0xd1f5, 0xd1f6, 0xd1f7, 0xd1f8, 0xd1f9, 0xd1fa,
+    0xd1fb, 0xd1fc, 0xd1fd, 0xd1fe, 0xd1ff, 0xd200, 0xd201, 0xd202,
+    0xd203, 0xd204, 0x003f, 0xd205, 0xd206, 0xd207, 0xd208, 0xd209,
+    0xd20a, 0xd20b, 0xd20c, 0xd20d, 0xd20e, 0xd20f, 0x003f, 0x003f,
+    0x003f, 0xd210, 0xd211, 0xd212, 0xd213, 0xd214, 0xd215, 0xd216,
+    0xd217, 0xd218, 0xd219, 0xd21a, 0xd21b, 0xd21c, 0xd21d, 0xd21e,
+    0xd21f, 0xd220, 0x003f, 0xd221, 0xd222, 0xd223, 0xd224, 0xd225,
+    0xd226, 0xd227, 0xd228, 0xd229, 0xd22a, 0xd22b, 0x003f, 0x003f,
+    0x003f, 0xd22c, 0xd22d, 0xd22e, 0xd22f, 0xd230, 0xd231, 0xd232,
+    0xd233, 0xd234, 0xd235, 0xd236, 0xd237, 0xd238, 0xd239, 0xd23a,
+    0xd23b, 0xd23c, 0x003f, 0xd23d, 0xd23e, 0xd23f, 0xd240, 0xd241,
+    0xd242, 0xd243, 0xd244, 0xd245, 0xd246, 0xd247, 0x003f, 0x003f,
+    0x003f, 0xd248, 0xd249, 0xd24a, 0xd24b, 0xd24c, 0xd24d, 0xd24e,
+    0xd24f, 0xd250, 0xd251, 0xd252, 0xd253, 0xd254, 0xd255, 0xd256,
+    0xd257, 0xd258, 0x003f, 0xd259, 0xd25a, 0xd25b, 0xd25c, 0xd25d,
+    0xd25e, 0xd25f, 0xd260, 0xd261, 0xd262, 0xd263, 0x003f, 0x003f,
+    0x003f, 0xd264, 0xd265, 0xd266, 0xd267, 0xd268, 0xd269, 0xd26a,
+    0xd26b, 0xd26c, 0xd26d, 0xd26e, 0xd26f, 0xd270, 0xd271, 0xd272,
+    0xd273, 0xd274, 0x003f, 0xd275, 0xd276, 0xd277, 0xd278, 0xd279,
+    0xd27a, 0xd27b, 0xd27c, 0xd27d, 0xd27e, 0xd27f, 0x003f, 0x003f,
+    0x003f, 0xd280, 0xd281, 0xd282, 0xd283, 0xd284, 0xd285, 0xd286,
+    0xd287, 0xd288, 0xd289, 0xd28a, 0xd28b, 0xd28c, 0xd28d, 0xd28e,
+    0xd28f, 0xd290, 0x003f, 0xd291, 0xd292, 0xd293, 0xd294, 0xd295,
+    0xd296, 0xd297, 0xd298, 0xd299, 0xd29a, 0xd29b, 0x003f, 0x003f,
+    /* lead byte cb */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd29c, 0xd29d, 0xd29e, 0xd29f, 0xd2a0, 0xd2a1, 0xd2a2,
+    0xd2a3, 0xd2a4, 0xd2a5, 0xd2a6, 0xd2a7, 0xd2a8, 0xd2a9, 0xd2aa,
+    0xd2ab, 0xd2ac, 0x003f, 0xd2ad, 0xd2ae, 0xd2af, 0xd2b0, 0xd2b1,
+    0xd2b2, 0xd2b3, 0xd2b4, 0xd2b5, 0xd2b6, 0xd2b7, 0x003f, 0x003f,
+    0x003f, 0xd2b8, 0xd2b9, 0xd2ba, 0xd2bb, 0xd2bc, 0xd2bd, 0xd2be,
+    0xd2bf, 0xd2c0, 0xd2c1, 0xd2c2, 0xd2c3, 0xd2c4, 0xd2c5, 0xd2c6,
+    0xd2c7, 0xd2c8, 0x003f, 0xd2c9, 0xd2ca, 0xd2cb, 0xd2cc, 0xd2cd,
+    0xd2ce, 0xd2cf, 0xd2d0, 0xd2d1, 0xd2d2, 0xd2d3, 0x003f, 0x003f,
+    0x003f, 0xd2d4, 0xd2d5, 0xd2d6, 0xd2d7, 0xd2d8, 0xd2d9, 0xd2da,
+    0xd2db, 0xd2dc, 0xd2dd, 0xd2de, 0xd2df, 0xd2e0, 0xd2e1, 0xd2e2,
+    0xd2e3, 0xd2e4, 0x003f, 0xd2e5, 0xd2e6, 0xd2e7, 0xd2e8, 0xd2e9,
+    0xd2ea, 0xd2eb, 0xd2ec, 0xd2ed, 0xd2ee, 0xd2ef, 0x003f, 0x003f,
+    0x003f, 0xd2f0, 0xd2f1, 0xd2f2, 0xd2f3, 0xd2f4, 0xd2f5, 0xd2f6,
+    0xd2f7, 0xd2f8, 0xd2f9, 0xd2fa, 0xd2fb, 0xd2fc, 0xd2fd, 0xd2fe,
+    0xd2ff, 0xd300, 0x003f, 0xd301, 0xd302, 0xd303, 0xd304, 0xd305,
+    0xd306, 0xd307, 0xd308, 0xd309, 0xd30a, 0xd30b, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte cc */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x314d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd30c, 0xd30d, 0xd30e, 0xd30f, 0xd310, 0xd311, 0xd312,
+    0xd313, 0xd314, 0xd315, 0xd316, 0xd317, 0xd318, 0xd319, 0xd31a,
+    0xd31b, 0xd31c, 0x003f, 0xd31d, 0xd31e, 0xd31f, 0xd320, 0xd321,
+    0xd322, 0xd323, 0xd324, 0xd325, 0xd326, 0xd327, 0x003f, 0x003f,
+    0x003f, 0xd328, 0xd329, 0xd32a, 0xd32b, 0xd32c, 0xd32d, 0xd32e,
+    0xd32f, 0xd330, 0xd331, 0xd332, 0xd333, 0xd334, 0xd335, 0xd336,
+    0xd337, 0xd338, 0x003f, 0xd339, 0xd33a, 0xd33b, 0xd33c, 0xd33d,
+    0xd33e, 0xd33f, 0xd340, 0xd341, 0xd342, 0xd343, 0x003f, 0x003f,
+    0x003f, 0xd344, 0xd345, 0xd346, 0xd347, 0xd348, 0xd349, 0xd34a,
+    0xd34b, 0xd34c, 0xd34d, 0xd34e, 0xd34f, 0xd350, 0xd351, 0xd352,
+    0xd353, 0xd354, 0x003f, 0xd355, 0xd356, 0xd357, 0xd358, 0xd359,
+    0xd35a, 0xd35b, 0xd35c, 0xd35d, 0xd35e, 0xd35f, 0x003f, 0x003f,
+    0x003f, 0xd360, 0xd361, 0xd362, 0xd363, 0xd364, 0xd365, 0xd366,
+    0xd367, 0xd368, 0xd369, 0xd36a, 0xd36b, 0xd36c, 0xd36d, 0xd36e,
+    0xd36f, 0xd370, 0x003f, 0xd371, 0xd372, 0xd373, 0xd374, 0xd375,
+    0xd376, 0xd377, 0xd378, 0xd379, 0xd37a, 0xd37b, 0x003f, 0x003f,
+    0x003f, 0xd37c, 0xd37d, 0xd37e, 0xd37f, 0xd380, 0xd381, 0xd382,
+    0xd383, 0xd384, 0xd385, 0xd386, 0xd387, 0xd388, 0xd389, 0xd38a,
+    0xd38b, 0xd38c, 0x003f, 0xd38d, 0xd38e, 0xd38f, 0xd390, 0xd391,
+    0xd392, 0xd393, 0xd394, 0xd395, 0xd396, 0xd397, 0x003f, 0x003f,
+    /* lead byte cd */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd398, 0xd399, 0xd39a, 0xd39b, 0xd39c, 0xd39d, 0xd39e,
+    0xd39f, 0xd3a0, 0xd3a1, 0xd3a2, 0xd3a3, 0xd3a4, 0xd3a5, 0xd3a6,
+    0xd3a7, 0xd3a8, 0x003f, 0xd3a9, 0xd3aa, 0xd3ab, 0xd3ac, 0xd3ad,
+    0xd3ae, 0xd3af, 0xd3b0, 0xd3b1, 0xd3b2, 0xd3b3, 0x003f, 0x003f,
+    0x003f, 0xd3b4, 0xd3b5, 0xd3b6, 0xd3b7, 0xd3b8, 0xd3b9, 0xd3ba,
+    0xd3bb, 0xd3bc, 0xd3bd, 0xd3be, 0xd3bf, 0xd3c0, 0xd3c1, 0xd3c2,
+    0xd3c3, 0xd3c4, 0x003f, 0xd3c5, 0xd3c6, 0xd3c7, 0xd3c8, 0xd3c9,
+    0xd3ca, 0xd3cb, 0xd3cc, 0xd3cd, 0xd3ce, 0xd3cf, 0x003f, 0x003f,
+    0x003f, 0xd3d0, 0xd3d1, 0xd3d2, 0xd3d3, 0xd3d4, 0xd3d5, 0xd3d6,
+    0xd3d7, 0xd3d8, 0xd3d9, 0xd3da, 0xd3db, 0xd3dc, 0xd3dd, 0xd3de,
+    0xd3df, 0xd3e0, 0x003f, 0xd3e1, 0xd3e2, 0xd3e3, 0xd3e4, 0xd3e5,
+    0xd3e6, 0xd3e7, 0xd3e8, 0xd3e9, 0xd3ea, 0xd3eb, 0x003f, 0x003f,
+    0x003f, 0xd3ec, 0xd3ed, 0xd3ee, 0xd3ef, 0xd3f0, 0xd3f1, 0xd3f2,
+    0xd3f3, 0xd3f4, 0xd3f5, 0xd3f6, 0xd3f7, 0xd3f8, 0xd3f9, 0xd3fa,
+    0xd3fb, 0xd3fc, 0x003f, 0xd3fd, 0xd3fe, 0xd3ff, 0xd400, 0xd401,
+    0xd402, 0xd403, 0xd404, 0xd405, 0xd406, 0xd407, 0x003f, 0x003f,
+    0x003f, 0xd408, 0xd409, 0xd40a, 0xd40b, 0xd40c, 0xd40d, 0xd40e,
+    0xd40f, 0xd410, 0xd411, 0xd412, 0xd413, 0xd414, 0xd415, 0xd416,
+    0xd417, 0xd418, 0x003f, 0xd419, 0xd41a, 0xd41b, 0xd41c, 0xd41d,
+    0xd41e, 0xd41f, 0xd420, 0xd421, 0xd422, 0xd423, 0x003f, 0x003f,
+    0x003f, 0xd424, 0xd425, 0xd426, 0xd427, 0xd428, 0xd429, 0xd42a,
+    0xd42b, 0xd42c, 0xd42d, 0xd42e, 0xd42f, 0xd430, 0xd431, 0xd432,
+    0xd433, 0xd434, 0x003f, 0xd435, 0xd436, 0xd437, 0xd438, 0xd439,
+    0xd43a, 0xd43b, 0xd43c, 0xd43d, 0xd43e, 0xd43f, 0x003f, 0x003f,
+    /* lead byte ce */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd440, 0xd441, 0xd442, 0xd443, 0xd444, 0xd445, 0xd446,
+    0xd447, 0xd448, 0xd449, 0xd44a, 0xd44b, 0xd44c, 0xd44d, 0xd44e,
+    0xd44f, 0xd450, 0x003f, 0xd451, 0xd452, 0xd453, 0xd454, 0xd455,
+    0xd456, 0xd457, 0xd458, 0xd459, 0xd45a, 0xd45b, 0x003f, 0x003f,
+    0x003f, 0xd45c, 0xd45d, 0xd45e, 0xd45f, 0xd460, 0xd461, 0xd462,
+    0xd463, 0xd464, 0xd465, 0xd466, 0xd467, 0xd468, 0xd469, 0xd46a,
+    0xd46b, 0xd46c, 0x003f, 0xd46d, 0xd46e, 0xd46f, 0xd470, 0xd471,
+    0xd472, 0xd473, 0xd474, 0xd475, 0xd476, 0xd477, 0x003f, 0x003f,
+    0x003f, 0xd478, 0xd479, 0xd47a, 0xd47b, 0xd47c, 0xd47d, 0xd47e,
+    0xd47f, 0xd480, 0xd481, 0xd482, 0xd483, 0xd484, 0xd485, 0xd486,
+    0xd487, 0xd488, 0x003f, 0xd489, 0xd48a, 0xd48b, 0xd48c, 0xd48d,
+    0xd48e, 0xd48f, 0xd490, 0xd491, 0xd492, 0xd493, 0x003f, 0x003f,
+    0x003f, 0xd494, 0xd495, 0xd496, 0xd497, 0xd498, 0xd499, 0xd49a,
+    0xd49b, 0xd49c, 0xd49d, 0xd49e, 0xd49f, 0xd4a0, 0xd4a1, 0xd4a2,
+    0xd4a3, 0xd4a4, 0x003f, 0xd4a5, 0xd4a6, 0xd4a7, 0xd4a8, 0xd4a9,
+    0xd4aa, 0xd4ab, 0xd4ac, 0xd4ad, 0xd4ae, 0xd4af, 0x003f, 0x003f,
+    0x003f, 0xd4b0, 0xd4b1, 0xd4b2, 0xd4b3, 0xd4b4, 0xd4b5, 0xd4b6,
+    0xd4b7, 0xd4b8, 0xd4b9, 0xd4ba, 0xd4bb, 0xd4bc, 0xd4bd, 0xd4be,
+    0xd4bf, 0xd4c0, 0x003f, 0xd4c1, 0xd4c2, 0xd4c3, 0xd4c4, 0xd4c5,
+    0xd4c6, 0xd4c7, 0xd4c8, 0xd4c9, 0xd4ca, 0xd4cb, 0x003f, 0x003f,
+    0x003f, 0xd4cc, 0xd4cd, 0xd4ce, 0xd4cf, 0xd4d0, 0xd4d1, 0xd4d2,
+    0xd4d3, 0xd4d4, 0xd4d5, 0xd4d6, 0xd4d7, 0xd4d8, 0xd4d9, 0xd4da,
+    0xd4db, 0xd4dc, 0x003f, 0xd4dd, 0xd4de, 0xd4df, 0xd4e0, 0xd4e1,
+    0xd4e2, 0xd4e3, 0xd4e4, 0xd4e5, 0xd4e6, 0xd4e7, 0x003f, 0x003f,
+    /* lead byte cf */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd4e8, 0xd4e9, 0xd4ea, 0xd4eb, 0xd4ec, 0xd4ed, 0xd4ee,
+    0xd4ef, 0xd4f0, 0xd4f1, 0xd4f2, 0xd4f3, 0xd4f4, 0xd4f5, 0xd4f6,
+    0xd4f7, 0xd4f8, 0x003f, 0xd4f9, 0xd4fa, 0xd4fb, 0xd4fc, 0xd4fd,
+    0xd4fe, 0xd4ff, 0xd500, 0xd501, 0xd502, 0xd503, 0x003f, 0x003f,
+    0x003f, 0xd504, 0xd505, 0xd506, 0xd507, 0xd508, 0xd509, 0xd50a,
+    0xd50b, 0xd50c, 0xd50d, 0xd50e, 0xd50f, 0xd510, 0xd511, 0xd512,
+    0xd513, 0xd514, 0x003f, 0xd515, 0xd516, 0xd517, 0xd518, 0xd519,
+    0xd51a, 0xd51b, 0xd51c, 0xd51d, 0xd51e, 0xd51f, 0x003f, 0x003f,
+    0x003f, 0xd520, 0xd521, 0xd522, 0xd523, 0xd524, 0xd525, 0xd526,
+    0xd527, 0xd528, 0xd529, 0xd52a, 0xd52b, 0xd52c, 0xd52d, 0xd52e,
+    0xd52f, 0xd530, 0x003f, 0xd531, 0xd532, 0xd533, 0xd534, 0xd535,
+    0xd536, 0xd537, 0xd538, 0xd539, 0xd53a, 0xd53b, 0x003f, 0x003f,
+    0x003f, 0xd53c, 0xd53d, 0xd53e, 0xd53f, 0xd540, 0xd541, 0xd542,
+    0xd543, 0xd544, 0xd545, 0xd546, 0xd547, 0xd548, 0xd549, 0xd54a,
+    0xd54b, 0xd54c, 0x003f, 0xd54d, 0xd54e, 0xd54f, 0xd550, 0xd551,
+    0xd552, 0xd553, 0xd554, 0xd555, 0xd556, 0xd557, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte d0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x314e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd558, 0xd559, 0xd55a, 0xd55b, 0xd55c, 0xd55d, 0xd55e,
+    0xd55f, 0xd560, 0xd561, 0xd562, 0xd563, 0xd564, 0xd565, 0xd566,
+    0xd567, 0xd568, 0x003f, 0xd569, 0xd56a, 0xd56b, 0xd56c, 0xd56d,
+    0xd56e, 0xd56f, 0xd570, 0xd571, 0xd572, 0xd573, 0x003f, 0x003f,
+    0x003f, 0xd574, 0xd575, 0xd576, 0xd577, 0xd578, 0xd579, 0xd57a,
+    0xd57b, 0xd57c, 0xd57d, 0xd57e, 0xd57f, 0xd580, 0xd581, 0xd582,
+    0xd583, 0xd584, 0x003f, 0xd585, 0xd586, 0xd587, 0xd588, 0xd589,
+    0xd58a, 0xd58b, 0xd58c, 0xd58d, 0xd58e, 0xd58f, 0x003f, 0x003f,
+    0x003f, 0xd590, 0xd591, 0xd592, 0xd593, 0xd594, 0xd595, 0xd596,
+    0xd597, 0xd598, 0xd599, 0xd59a, 0xd59b, 0xd59c, 0xd59d, 0xd59e,
+    0xd59f, 0xd5a0, 0x003f, 0xd5a1, 0xd5a2, 0xd5a3, 0xd5a4, 0xd5a5,
+    0xd5a6, 0xd5a7, 0xd5a8, 0xd5a9, 0xd5aa, 0xd5ab, 0x003f, 0x003f,
+    0x003f, 0xd5ac, 0xd5ad, 0xd5ae, 0xd5af, 0xd5b0, 0xd5b1, 0xd5b2,
+    0xd5b3, 0xd5b4, 0xd5b5, 0xd5b6, 0xd5b7, 0xd5b8, 0xd5b9, 0xd5ba,
+    0xd5bb, 0xd5bc, 0x003f, 0xd5bd, 0xd5be, 0xd5bf, 0xd5c0, 0xd5c1,
+    0xd5c2, 0xd5c3, 0xd5c4, 0xd5c5, 0xd5c6, 0xd5c7, 0x003f, 0x003f,
+    0x003f, 0xd5c8, 0xd5c9, 0xd5ca, 0xd5cb, 0xd5cc, 0xd5cd, 0xd5ce,
+    0xd5cf, 0xd5d0, 0xd5d1, 0xd5d2, 0xd5d3, 0xd5d4, 0xd5d5, 0xd5d6,
+    0xd5d7, 0xd5d8, 0x003f, 0xd5d9, 0xd5da, 0xd5db, 0xd5dc, 0xd5dd,
+    0xd5de, 0xd5df, 0xd5e0, 0xd5e1, 0xd5e2, 0xd5e3, 0x003f, 0x003f,
+    /* lead byte d1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd5e4, 0xd5e5, 0xd5e6, 0xd5e7, 0xd5e8, 0xd5e9, 0xd5ea,
+    0xd5eb, 0xd5ec, 0xd5ed, 0xd5ee, 0xd5ef, 0xd5f0, 0xd5f1, 0xd5f2,
+    0xd5f3, 0xd5f4, 0x003f, 0xd5f5, 0xd5f6, 0xd5f7, 0xd5f8, 0xd5f9,
+    0xd5fa, 0xd5fb, 0xd5fc, 0xd5fd, 0xd5fe, 0xd5ff, 0x003f, 0x003f,
+    0x003f, 0xd600, 0xd601, 0xd602, 0xd603, 0xd604, 0xd605, 0xd606,
+    0xd607, 0xd608, 0xd609, 0xd60a, 0xd60b, 0xd60c, 0xd60d, 0xd60e,
+    0xd60f, 0xd610, 0x003f, 0xd611, 0xd612, 0xd613, 0xd614, 0xd615,
+    0xd616, 0xd617, 0xd618, 0xd619, 0xd61a, 0xd61b, 0x003f, 0x003f,
+    0x003f, 0xd61c, 0xd61d, 0xd61e, 0xd61f, 0xd620, 0xd621, 0xd622,
+    0xd623, 0xd624, 0xd625, 0xd626, 0xd627, 0xd628, 0xd629, 0xd62a,
+    0xd62b, 0xd62c, 0x003f, 0xd62d, 0xd62e, 0xd62f, 0xd630, 0xd631,
+    0xd632, 0xd633, 0xd634, 0xd635, 0xd636, 0xd637, 0x003f, 0x003f,
+    0x003f, 0xd638, 0xd639, 0xd63a, 0xd63b, 0xd63c, 0xd63d, 0xd63e,
+    0xd63f, 0xd640, 0xd641, 0xd642, 0xd643, 0xd644, 0xd645, 0xd646,
+    0xd647, 0xd648, 0x003f, 0xd649, 0xd64a, 0xd64b, 0xd64c, 0xd64d,
+    0xd64e, 0xd64f, 0xd650, 0xd651, 0xd652, 0xd653, 0x003f, 0x003f,
+    0x003f, 0xd654, 0xd655, 0xd656, 0xd657, 0xd658, 0xd659, 0xd65a,
+    0xd65b, 0xd65c, 0xd65d, 0xd65e, 0xd65f, 0xd660, 0xd661, 0xd662,
+    0xd663, 0xd664, 0x003f, 0xd665, 0xd666, 0xd667, 0xd668, 0xd669,
+    0xd66a, 0xd66b, 0xd66c, 0xd66d, 0xd66e, 0xd66f, 0x003f, 0x003f,
+    0x003f, 0xd670, 0xd671, 0xd672, 0xd673, 0xd674, 0xd675, 0xd676,
+    0xd677, 0xd678, 0xd679, 0xd67a, 0xd67b, 0xd67c, 0xd67d, 0xd67e,
+    0xd67f, 0xd680, 0x003f, 0xd681, 0xd682, 0xd683, 0xd684, 0xd685,
+    0xd686, 0xd687, 0xd688, 0xd689, 0xd68a, 0xd68b, 0x003f, 0x003f,
+    /* lead byte d2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd68c, 0xd68d, 0xd68e, 0xd68f, 0xd690, 0xd691, 0xd692,
+    0xd693, 0xd694, 0xd695, 0xd696, 0xd697, 0xd698, 0xd699, 0xd69a,
+    0xd69b, 0xd69c, 0x003f, 0xd69d, 0xd69e, 0xd69f, 0xd6a0, 0xd6a1,
+    0xd6a2, 0xd6a3, 0xd6a4, 0xd6a5, 0xd6a6, 0xd6a7, 0x003f, 0x003f,
+    0x003f, 0xd6a8, 0xd6a9, 0xd6aa, 0xd6ab, 0xd6ac, 0xd6ad, 0xd6ae,
+    0xd6af, 0xd6b0, 0xd6b1, 0xd6b2, 0xd6b3, 0xd6b4, 0xd6b5, 0xd6b6,
+    0xd6b7, 0xd6b8, 0x003f, 0xd6b9, 0xd6ba, 0xd6bb, 0xd6bc, 0xd6bd,
+    0xd6be, 0xd6bf, 0xd6c0, 0xd6c1, 0xd6c2, 0xd6c3, 0x003f, 0x003f,
+    0x003f, 0xd6c4, 0xd6c5, 0xd6c6, 0xd6c7, 0xd6c8, 0xd6c9, 0xd6ca,
+    0xd6cb, 0xd6cc, 0xd6cd, 0xd6ce, 0xd6cf, 0xd6d0, 0xd6d1, 0xd6d2,
+    0xd6d3, 0xd6d4, 0x003f, 0xd6d5, 0xd6d6, 0xd6d7, 0xd6d8, 0xd6d9,
+    0xd6da, 0xd6db, 0xd6dc, 0xd6dd, 0xd6de, 0xd6df, 0x003f, 0x003f,
+    0x003f, 0xd6e0, 0xd6e1, 0xd6e2, 0xd6e3, 0xd6e4, 0xd6e5, 0xd6e6,
+    0xd6e7, 0xd6e8, 0xd6e9, 0xd6ea, 0xd6eb, 0xd6ec, 0xd6ed, 0xd6ee,
+    0xd6ef, 0xd6f0, 0x003f, 0xd6f1, 0xd6f2, 0xd6f3, 0xd6f4, 0xd6f5,
+    0xd6f6, 0xd6f7, 0xd6f8, 0xd6f9, 0xd6fa, 0xd6fb, 0x003f, 0x003f,
+    0x003f, 0xd6fc, 0xd6fd, 0xd6fe, 0xd6ff, 0xd700, 0xd701, 0xd702,
+    0xd703, 0xd704, 0xd705, 0xd706, 0xd707, 0xd708, 0xd709, 0xd70a,
+    0xd70b, 0xd70c, 0x003f, 0xd70d, 0xd70e, 0xd70f, 0xd710, 0xd711,
+    0xd712, 0xd713, 0xd714, 0xd715, 0xd716, 0xd717, 0x003f, 0x003f,
+    0x003f, 0xd718, 0xd719, 0xd71a, 0xd71b, 0xd71c, 0xd71d, 0xd71e,
+    0xd71f, 0xd720, 0xd721, 0xd722, 0xd723, 0xd724, 0xd725, 0xd726,
+    0xd727, 0xd728, 0x003f, 0xd729, 0xd72a, 0xd72b, 0xd72c, 0xd72d,
+    0xd72e, 0xd72f, 0xd730, 0xd731, 0xd732, 0xd733, 0x003f, 0x003f,
+    /* lead byte d3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd734, 0xd735, 0xd736, 0xd737, 0xd738, 0xd739, 0xd73a,
+    0xd73b, 0xd73c, 0xd73d, 0xd73e, 0xd73f, 0xd740, 0xd741, 0xd742,
+    0xd743, 0xd744, 0x003f, 0xd745, 0xd746, 0xd747, 0xd748, 0xd749,
+    0xd74a, 0xd74b, 0xd74c, 0xd74d, 0xd74e, 0xd74f, 0x003f, 0x003f,
+    0x003f, 0xd750, 0xd751, 0xd752, 0xd753, 0xd754, 0xd755, 0xd756,
+    0xd757, 0xd758, 0xd759, 0xd75a, 0xd75b, 0xd75c, 0xd75d, 0xd75e,
+    0xd75f, 0xd760, 0x003f, 0xd761, 0xd762, 0xd763, 0xd764, 0xd765,
+    0xd766, 0xd767, 0xd768, 0xd769, 0xd76a, 0xd76b, 0x003f, 0x003f,
+    0x003f, 0xd76c, 0xd76d, 0xd76e, 0xd76f, 0xd770, 0xd771, 0xd772,
+    0xd773, 0xd774, 0xd775, 0xd776, 0xd777, 0xd778, 0xd779, 0xd77a,
+    0xd77b, 0xd77c, 0x003f, 0xd77d, 0xd77e, 0xd77f, 0xd780, 0xd781,
+    0xd782, 0xd783, 0xd784, 0xd785, 0xd786, 0xd787, 0x003f, 0x003f,
+    0x003f, 0xd788, 0xd789, 0xd78a, 0xd78b, 0xd78c, 0xd78d, 0xd78e,
+    0xd78f, 0xd790, 0xd791, 0xd792, 0xd793, 0xd794, 0xd795, 0xd796,
+    0xd797, 0xd798, 0x003f, 0xd799, 0xd79a, 0xd79b, 0xd79c, 0xd79d,
+    0xd79e, 0xd79f, 0xd7a0, 0xd7a1, 0xd7a2, 0xd7a3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte d9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3000, 0x3001, 0x3002, 0x00b7, 0x2025, 0x2026, 0x00a8,
+    0x3003, 0x00ad, 0x2015, 0x2225, 0xff3c, 0x223c, 0x2018, 0x2019,
+    0x201c, 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b,
+    0x300c, 0x300d, 0x300e, 0x300f, 0x3010, 0x3011, 0x00b1, 0x00d7,
+    0x00f7, 0x2260, 0x2264, 0x2265, 0x221e, 0x2234, 0x00b0, 0x2032,
+    0x2033, 0x2103, 0x212b, 0xffe0, 0xffe1, 0xffe5, 0x2642, 0x2640,
+    0x2220, 0x22a5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252, 0x00a7,
+    0x203b, 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7, 0x25c6,
+    0x25a1, 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc, 0x2192, 0x2190,
+    0x2191, 0x2193, 0x2194, 0x3013, 0x226a, 0x226b, 0x221a, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x223d, 0x221d, 0x2235, 0x222b, 0x222c, 0x2208, 0x220b,
+    0x2286, 0x2287, 0x2282, 0x2283, 0x222a, 0x2229, 0x2227, 0x2228,
+    0xffe2, 0x21d2, 0x21d4, 0x2200, 0x2203, 0x00b4, 0xff5e, 0x02c7,
+    0x02d8, 0x02dd, 0x02da, 0x02d9, 0x00b8, 0x02db, 0x00a1, 0x00bf,
+    0x02d0, 0x222e, 0x2211, 0x220f, 0x00a4, 0x2109, 0x2030, 0x25c1,
+    0x25c0, 0x25b7, 0x25b6, 0x2664, 0x2660, 0x2661, 0x2665, 0x2667,
+    0x2663, 0x2299, 0x25c8, 0x25a3, 0x25d0, 0x25d1, 0x2592, 0x25a4,
+    0x25a5, 0x25a8, 0x25a7, 0x25a6, 0x25a9, 0x2668, 0x260f, 0x260e,
+    0x261c, 0x261e, 0x00b6, 0x2020, 0x2021, 0x2195, 0x2197, 0x2199,
+    0x2196, 0x2198, 0x266d, 0x2669, 0x266a, 0x266c, 0x327f, 0x321c,
+    0x2116, 0x33c7, 0x2122, 0x33c2, 0x33d8, 0x2121, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte da */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xff01, 0xff02, 0xff03, 0xff04, 0xff05, 0xff06, 0xff07,
+    0xff08, 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f,
+    0xff10, 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17,
+    0xff18, 0xff19, 0xff1a, 0xff1b, 0xff1c, 0xff1d, 0xff1e, 0xff1f,
+    0xff20, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27,
+    0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f,
+    0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37,
+    0xff38, 0xff39, 0xff3a, 0xff3b, 0xffe6, 0xff3d, 0xff3e, 0xff3f,
+    0xff40, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47,
+    0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xff4f, 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55,
+    0xff56, 0xff57, 0xff58, 0xff59, 0xff5a, 0xff5b, 0xff5c, 0xff5d,
+    0xffe3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x3164, 0x3165, 0x3166, 0x3167,
+    0x3168, 0x3169, 0x316a, 0x316b, 0x316c, 0x316d, 0x316e, 0x316f,
+    0x3170, 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3176, 0x3177,
+    0x3178, 0x3179, 0x317a, 0x317b, 0x317c, 0x317d, 0x317e, 0x317f,
+    0x3180, 0x3181, 0x3182, 0x3183, 0x3184, 0x3185, 0x3186, 0x3187,
+    0x3188, 0x3189, 0x318a, 0x318b, 0x318c, 0x318d, 0x318e, 0x003f,
+    /* lead byte db */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176,
+    0x2177, 0x2178, 0x2179, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167,
+    0x2168, 0x2169, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
+    0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f,
+    0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8,
+    0x03a9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
+    0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6,
+    0x03c7, 0x03c8, 0x03c9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x2500, 0x2502, 0x250c, 0x2510, 0x2518, 0x2514, 0x251c,
+    0x252c, 0x2524, 0x2534, 0x253c, 0x2501, 0x2503, 0x250f, 0x2513,
+    0x251b, 0x2517, 0x2523, 0x2533, 0x252b, 0x253b, 0x254b, 0x2520,
+    0x252f, 0x2528, 0x2537, 0x253f, 0x251d, 0x2530, 0x2525, 0x2538,
+    0x2542, 0x2512, 0x2511, 0x251a, 0x2519, 0x2516, 0x2515, 0x250e,
+    0x250d, 0x251e, 0x251f, 0x2521, 0x2522, 0x2526, 0x2527, 0x2529,
+    0x252a, 0x252d, 0x252e, 0x2531, 0x2532, 0x2535, 0x2536, 0x2539,
+    0x253a, 0x253d, 0x253e, 0x2540, 0x2541, 0x2543, 0x2544, 0x2545,
+    0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte dc */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3395, 0x3396, 0x3397, 0x2113, 0x3398, 0x33c4, 0x33a3,
+    0x33a4, 0x33a5, 0x33a6, 0x3399, 0x339a, 0x339b, 0x339c, 0x339d,
+    0x339e, 0x339f, 0x33a0, 0x33a1, 0x33a2, 0x33ca, 0x338d, 0x338e,
+    0x338f, 0x33cf, 0x3388, 0x3389, 0x33c8, 0x33a7, 0x33a8, 0x33b0,
+    0x33b1, 0x33b2, 0x33b3, 0x33b4, 0x33b5, 0x33b6, 0x33b7, 0x33b8,
+    0x33b9, 0x3380, 0x3381, 0x3382, 0x3383, 0x3384, 0x33ba, 0x33bb,
+    0x33bc, 0x33bd, 0x33be, 0x33bf, 0x3390, 0x3391, 0x3392, 0x3393,
+    0x3394, 0x2126, 0x33c0, 0x33c1, 0x338a, 0x338b, 0x338c, 0x33d6,
+    0x33c5, 0x33ad, 0x33ae, 0x33af, 0x33db, 0x33a9, 0x33aa, 0x33ab,
+    0x33ac, 0x33dd, 0x33d0, 0x33d3, 0x33c3, 0x33c9, 0x33dc, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x33c6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x00c6, 0x00d0, 0x00aa, 0x0126, 0x003f, 0x0132, 0x003f,
+    0x013f, 0x0141, 0x00d8, 0x0152, 0x00ba, 0x00de, 0x0166, 0x014a,
+    0x003f, 0x3260, 0x3261, 0x3262, 0x3263, 0x3264, 0x3265, 0x3266,
+    0x3267, 0x3268, 0x3269, 0x326a, 0x326b, 0x326c, 0x326d, 0x326e,
+    0x326f, 0x3270, 0x3271, 0x3272, 0x3273, 0x3274, 0x3275, 0x3276,
+    0x3277, 0x3278, 0x3279, 0x327a, 0x327b, 0x24d0, 0x24d1, 0x24d2,
+    0x24d3, 0x24d4, 0x24d5, 0x24d6, 0x24d7, 0x24d8, 0x24d9, 0x24da,
+    0x24db, 0x24dc, 0x24dd, 0x24de, 0x24df, 0x24e0, 0x24e1, 0x24e2,
+    0x24e3, 0x24e4, 0x24e5, 0x24e6, 0x24e7, 0x24e8, 0x24e9, 0x2460,
+    0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468,
+    0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x00bd, 0x2153,
+    0x2154, 0x00bc, 0x00be, 0x215b, 0x215c, 0x215d, 0x215e, 0x003f,
+    /* lead byte dd */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0138,
+    0x0140, 0x0142, 0x00f8, 0x0153, 0x00df, 0x00fe, 0x0167, 0x014b,
+    0x0149, 0x3200, 0x3201, 0x3202, 0x3203, 0x3204, 0x3205, 0x3206,
+    0x3207, 0x3208, 0x3209, 0x320a, 0x320b, 0x320c, 0x320d, 0x320e,
+    0x320f, 0x3210, 0x3211, 0x3212, 0x3213, 0x3214, 0x3215, 0x3216,
+    0x3217, 0x3218, 0x3219, 0x321a, 0x321b, 0x249c, 0x249d, 0x249e,
+    0x249f, 0x24a0, 0x24a1, 0x24a2, 0x24a3, 0x24a4, 0x24a5, 0x24a6,
+    0x24a7, 0x24a8, 0x24a9, 0x24aa, 0x24ab, 0x24ac, 0x24ad, 0x24ae,
+    0x24af, 0x24b0, 0x24b1, 0x24b2, 0x24b3, 0x24b4, 0x24b5, 0x2474,
+    0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a, 0x247b, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x247c, 0x247d, 0x247e, 0x247f, 0x2480, 0x2481, 0x2482,
+    0x00b9, 0x00b2, 0x00b3, 0x2074, 0x207f, 0x2081, 0x2082, 0x2083,
+    0x2084, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047,
+    0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f,
+    0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057,
+    0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f,
+    0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067,
+    0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f,
+    0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077,
+    0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f,
+    0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087,
+    0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f,
+    0x3090, 0x3091, 0x3092, 0x3093, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte de */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7,
+    0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af,
+    0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7,
+    0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf,
+    0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7,
+    0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf,
+    0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7,
+    0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df,
+    0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7,
+    0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x30ef, 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5,
+    0x30f6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401,
+    0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d,
+    0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425,
+    0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d,
+    0x042e, 0x042f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451,
+    0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d,
+    0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445,
+    0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d,
+    0x044e, 0x044f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte e0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x4f3d, 0x4f73, 0x5047, 0x50f9, 0x52a0, 0x53ef, 0x5475,
+    0x54e5, 0x5609, 0x5ac1, 0x5bb6, 0x6687, 0x67b6, 0x67b7, 0x67ef,
+    0x6b4c, 0x73c2, 0x75c2, 0x7a3c, 0x82db, 0x8304, 0x8857, 0x8888,
+    0x8a36, 0x8cc8, 0x8dcf, 0x8efb, 0x8fe6, 0x99d5, 0x523b, 0x5374,
+    0x5404, 0x606a, 0x6164, 0x6bbc, 0x73cf, 0x811a, 0x89ba, 0x89d2,
+    0x95a3, 0x4f83, 0x520a, 0x58be, 0x5978, 0x59e6, 0x5e72, 0x5e79,
+    0x61c7, 0x63c0, 0x6746, 0x67ec, 0x687f, 0x6f97, 0x764e, 0x770b,
+    0x78f5, 0x7a08, 0x7aff, 0x7c21, 0x809d, 0x826e, 0x8271, 0x8aeb,
+    0x9593, 0x4e6b, 0x559d, 0x66f7, 0x6e34, 0x78a3, 0x7aed, 0x845b,
+    0x8910, 0x874e, 0x97a8, 0x52d8, 0x574e, 0x582a, 0x5d4c, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x611f, 0x61be, 0x6221, 0x6562, 0x67d1, 0x6a44, 0x6e1b,
+    0x7518, 0x75b3, 0x76e3, 0x77b0, 0x7d3a, 0x90af, 0x9451, 0x9452,
+    0x9f95, 0x5323, 0x5cac, 0x7532, 0x80db, 0x9240, 0x9598, 0x525b,
+    0x5808, 0x59dc, 0x5ca1, 0x5d17, 0x5eb7, 0x5f3a, 0x5f4a, 0x6177,
+    0x6c5f, 0x757a, 0x7586, 0x7ce0, 0x7d73, 0x7db1, 0x7f8c, 0x8154,
+    0x8221, 0x8591, 0x8941, 0x8b1b, 0x92fc, 0x964d, 0x9c47, 0x4ecb,
+    0x4ef7, 0x500b, 0x51f1, 0x584f, 0x6137, 0x613e, 0x6168, 0x6539,
+    0x69ea, 0x6f11, 0x75a5, 0x7686, 0x76d6, 0x7b87, 0x82a5, 0x84cb,
+    0xf900, 0x93a7, 0x958b, 0x5580, 0x5ba2, 0x5751, 0xf901, 0x7cb3,
+    0x7fb9, 0x91b5, 0x5028, 0x53bb, 0x5c45, 0x5de8, 0x62d2, 0x636e,
+    0x64da, 0x64e7, 0x6e20, 0x70ac, 0x795b, 0x8ddd, 0x8e1e, 0xf902,
+    0x907d, 0x9245, 0x92f8, 0x4e7e, 0x4ef6, 0x5065, 0x5dfe, 0x5efa,
+    0x6106, 0x6957, 0x8171, 0x8654, 0x8e47, 0x9375, 0x9a2b, 0x4e5e,
+    0x5091, 0x6770, 0x6840, 0x5109, 0x528d, 0x5292, 0x6aa2, 0x003f,
+    /* lead byte e1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x77bc, 0x9210, 0x9ed4, 0x52ab, 0x602f, 0x8ff2, 0x5048,
+    0x61a9, 0x63ed, 0x64ca, 0x683c, 0x6a84, 0x6fc0, 0x8188, 0x89a1,
+    0x9694, 0x5805, 0x727d, 0x72ac, 0x7504, 0x7d79, 0x7e6d, 0x80a9,
+    0x898b, 0x8b74, 0x9063, 0x9d51, 0x6289, 0x6c7a, 0x6f54, 0x7d50,
+    0x7f3a, 0x8a23, 0x517c, 0x614a, 0x7b9d, 0x8b19, 0x9257, 0x938c,
+    0x4eac, 0x4fd3, 0x501e, 0x50be, 0x5106, 0x52c1, 0x52cd, 0x537f,
+    0x5770, 0x5883, 0x5e9a, 0x5f91, 0x6176, 0x61ac, 0x64ce, 0x656c,
+    0x666f, 0x66bb, 0x66f4, 0x6897, 0x6d87, 0x7085, 0x70f1, 0x749f,
+    0x74a5, 0x74ca, 0x75d9, 0x786c, 0x78ec, 0x7adf, 0x7af6, 0x7d45,
+    0x7d93, 0x8015, 0x803f, 0x811b, 0x8396, 0x8b66, 0x8f15, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9015, 0x93e1, 0x9803, 0x9838, 0x9a5a, 0x9be8, 0x4fc2,
+    0x5553, 0x583a, 0x5951, 0x5b63, 0x5c46, 0x60b8, 0x6212, 0x6842,
+    0x68b0, 0x68e8, 0x6eaa, 0x754c, 0x7678, 0x78ce, 0x7a3d, 0x7cfb,
+    0x7e6b, 0x7e7c, 0x8a08, 0x8aa1, 0x8c3f, 0x968e, 0x9dc4, 0x53e4,
+    0x53e9, 0x544a, 0x5471, 0x56fa, 0x59d1, 0x5b64, 0x5c3b, 0x5eab,
+    0x62f7, 0x6537, 0x6545, 0x6572, 0x66a0, 0x67af, 0x69c1, 0x6cbd,
+    0x75fc, 0x7690, 0x777e, 0x7a3f, 0x7f94, 0x8003, 0x80a1, 0x818f,
+    0x82e6, 0x82fd, 0x83f0, 0x85c1, 0x8831, 0x88b4, 0x8aa5, 0xf903,
+    0x8f9c, 0x932e, 0x96c7, 0x9867, 0x9ad8, 0x9f13, 0x54ed, 0x659b,
+    0x66f2, 0x688f, 0x7a40, 0x8c37, 0x9d60, 0x56f0, 0x5764, 0x5d11,
+    0x6606, 0x68b1, 0x68cd, 0x6efe, 0x7428, 0x889e, 0x9be4, 0x6c68,
+    0xf904, 0x9aa8, 0x4f9b, 0x516c, 0x5171, 0x529f, 0x5b54, 0x5de5,
+    0x6050, 0x606d, 0x62f1, 0x63a7, 0x653b, 0x73d9, 0x7a7a, 0x86a3,
+    0x8ca2, 0x978f, 0x4e32, 0x5be1, 0x6208, 0x679c, 0x74dc, 0x003f,
+    /* lead byte e2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x79d1, 0x83d3, 0x8a87, 0x8ab2, 0x8de8, 0x904e, 0x934b,
+    0x9846, 0x5ed3, 0x69e8, 0x85ff, 0x90ed, 0xf905, 0x51a0, 0x5b98,
+    0x5bec, 0x6163, 0x68fa, 0x6b3e, 0x704c, 0x742f, 0x74d8, 0x7ba1,
+    0x7f50, 0x83c5, 0x89c0, 0x8cab, 0x95dc, 0x9928, 0x522e, 0x605d,
+    0x62ec, 0x9002, 0x4f8a, 0x5149, 0x5321, 0x58d9, 0x5ee3, 0x66e0,
+    0x6d38, 0x709a, 0x72c2, 0x73d6, 0x7b50, 0x80f1, 0x945b, 0x5366,
+    0x639b, 0x7f6b, 0x4e56, 0x5080, 0x584a, 0x58de, 0x602a, 0x6127,
+    0x62d0, 0x69d0, 0x9b41, 0x5b8f, 0x7d18, 0x80b1, 0x8f5f, 0x4ea4,
+    0x50d1, 0x54ac, 0x55ac, 0x5b0c, 0x5da0, 0x5de7, 0x652a, 0x654e,
+    0x6821, 0x6a4b, 0x72e1, 0x768e, 0x77ef, 0x7d5e, 0x7ff9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x81a0, 0x854e, 0x86df, 0x8f03, 0x8f4e, 0x90ca, 0x9903,
+    0x9a55, 0x9bab, 0x4e18, 0x4e45, 0x4e5d, 0x4ec7, 0x4ff1, 0x5177,
+    0x52fe, 0x5340, 0x53e3, 0x53e5, 0x548e, 0x5614, 0x5775, 0x57a2,
+    0x5bc7, 0x5d87, 0x5ed0, 0x61fc, 0x62d8, 0x6551, 0x67b8, 0x67e9,
+    0x69cb, 0x6b50, 0x6bc6, 0x6bec, 0x6c42, 0x6e9d, 0x7078, 0x72d7,
+    0x7396, 0x7403, 0x77bf, 0x77e9, 0x7a76, 0x7d7f, 0x8009, 0x81fc,
+    0x8205, 0x820a, 0x82df, 0x8862, 0x8b33, 0x8cfc, 0x8ec0, 0x9011,
+    0x90b1, 0x9264, 0x92b6, 0x99d2, 0x9a45, 0x9ce9, 0x9dd7, 0x9f9c,
+    0x570b, 0x5c40, 0x83ca, 0x97a0, 0x97ab, 0x9eb4, 0x541b, 0x7a98,
+    0x7fa4, 0x88d9, 0x8ecd, 0x90e1, 0x5800, 0x5c48, 0x6398, 0x7a9f,
+    0x5bae, 0x5f13, 0x7a79, 0x7aae, 0x828e, 0x8eac, 0x5026, 0x5238,
+    0x52f8, 0x5377, 0x5708, 0x62f3, 0x6372, 0x6b0a, 0x6dc3, 0x7737,
+    0x53a5, 0x7357, 0x8568, 0x8e76, 0x95d5, 0x673a, 0x6ac3, 0x6f70,
+    0x8a6d, 0x8ecc, 0x994b, 0xf906, 0x6677, 0x6b78, 0x8cb4, 0x003f,
+    /* lead byte e3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9b3c, 0xf907, 0x53eb, 0x572d, 0x594e, 0x63c6, 0x69fb,
+    0x73ea, 0x7845, 0x7aba, 0x7ac5, 0x7cfe, 0x8475, 0x898f, 0x8d73,
+    0x9035, 0x95a8, 0x52fb, 0x5747, 0x7547, 0x7b60, 0x83cc, 0x921e,
+    0xf908, 0x6a58, 0x514b, 0x524b, 0x5287, 0x621f, 0x68d8, 0x6975,
+    0x9699, 0x50c5, 0x52a4, 0x52e4, 0x61c3, 0x65a4, 0x6839, 0x69ff,
+    0x747e, 0x7b4b, 0x82b9, 0x83eb, 0x89b2, 0x8b39, 0x8fd1, 0x9949,
+    0xf909, 0x4eca, 0x5997, 0x64d2, 0x6611, 0x6a8e, 0x7434, 0x7981,
+    0x79bd, 0x82a9, 0x887e, 0x887f, 0x895f, 0xf90a, 0x9326, 0x4f0b,
+    0x53ca, 0x6025, 0x6271, 0x6c72, 0x7d1a, 0x7d66, 0x4e98, 0x5162,
+    0x77dc, 0x80af, 0x4f01, 0x4f0e, 0x5176, 0x5180, 0x55dc, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x5668, 0x573b, 0x57fa, 0x57fc, 0x5914, 0x5947, 0x5993,
+    0x5bc4, 0x5c90, 0x5d0e, 0x5df1, 0x5e7e, 0x5fcc, 0x6280, 0x65d7,
+    0x65e3, 0x671e, 0x671f, 0x675e, 0x68cb, 0x68c4, 0x6a5f, 0x6b3a,
+    0x6c23, 0x6c7d, 0x6c82, 0x6dc7, 0x7398, 0x7426, 0x742a, 0x7482,
+    0x74a3, 0x7578, 0x757f, 0x7881, 0x78ef, 0x7941, 0x7947, 0x7948,
+    0x797a, 0x7b95, 0x7d00, 0x7dba, 0x7f88, 0x8006, 0x802d, 0x808c,
+    0x8a18, 0x8b4f, 0x8c48, 0x8d77, 0x9321, 0x9324, 0x98e2, 0x9951,
+    0x9a0e, 0x9a0f, 0x9a65, 0x9e92, 0x7dca, 0x4f76, 0x5409, 0x62ee,
+    0x6854, 0x91d1, 0x55ab, 0x513a, 0xf90b, 0xf90c, 0x5a1c, 0x61e6,
+    0xf90d, 0x62cf, 0x62ff, 0xf90e, 0xf90f, 0xf910, 0xf911, 0xf912,
+    0xf913, 0x90a3, 0xf914, 0xf915, 0xf916, 0xf917, 0xf918, 0x8afe,
+    0xf919, 0xf91a, 0xf91b, 0xf91c, 0x6696, 0xf91d, 0x7156, 0xf91e,
+    0xf91f, 0x96e3, 0xf920, 0x634f, 0x637a, 0x5357, 0xf921, 0x678f,
+    0x6960, 0x6e73, 0xf922, 0x7537, 0xf923, 0xf924, 0xf925, 0x003f,
+    /* lead byte e4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7d0d, 0xf926, 0xf927, 0x8872, 0x56ca, 0x5a18, 0xf928,
+    0xf929, 0xf92a, 0xf92b, 0xf92c, 0x4e43, 0xf92d, 0x5167, 0x5948,
+    0x67f0, 0x8010, 0xf92e, 0x5973, 0x5e74, 0x649a, 0x79ca, 0x5ff5,
+    0x606c, 0x62c8, 0x637b, 0x5be7, 0x5bd7, 0x52aa, 0xf92f, 0x5974,
+    0x5f29, 0x6012, 0xf930, 0xf931, 0xf932, 0x7459, 0xf933, 0xf934,
+    0xf935, 0xf936, 0xf937, 0xf938, 0x99d1, 0xf939, 0xf93a, 0xf93b,
+    0xf93c, 0xf93d, 0xf93e, 0xf93f, 0xf940, 0xf941, 0xf942, 0xf943,
+    0x6fc3, 0xf944, 0xf945, 0x81bf, 0x8fb2, 0x60f1, 0xf946, 0xf947,
+    0x8166, 0xf948, 0xf949, 0x5c3f, 0xf94a, 0xf94b, 0xf94c, 0xf94d,
+    0xf94e, 0xf94f, 0xf950, 0xf951, 0x5ae9, 0x8a25, 0x677b, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7d10, 0xf952, 0xf953, 0xf954, 0xf955, 0xf956, 0xf957,
+    0x80fd, 0xf958, 0xf959, 0x5c3c, 0x6ce5, 0x533f, 0x6eba, 0x591a,
+    0x8336, 0x4e39, 0x4eb6, 0x4f46, 0x55ae, 0x5718, 0x58c7, 0x5f56,
+    0x65b7, 0x65e6, 0x6a80, 0x6bb5, 0x6e4d, 0x77ed, 0x7aef, 0x7c1e,
+    0x7dde, 0x86cb, 0x8892, 0x9132, 0x935b, 0x64bb, 0x6fbe, 0x737a,
+    0x75b8, 0x9054, 0x5556, 0x574d, 0x61ba, 0x64d4, 0x66c7, 0x6de1,
+    0x6e5b, 0x6f6d, 0x6fb9, 0x75f0, 0x8043, 0x81bd, 0x8541, 0x8983,
+    0x8ac7, 0x8b5a, 0x931f, 0x6c93, 0x7553, 0x7b54, 0x8e0f, 0x905d,
+    0x5510, 0x5802, 0x5858, 0x5e62, 0x6207, 0x649e, 0x68e0, 0x7576,
+    0x7cd6, 0x87b3, 0x9ee8, 0x4ee3, 0x5788, 0x576e, 0x5927, 0x5c0d,
+    0x5cb1, 0x5e36, 0x5f85, 0x6234, 0x64e1, 0x73b3, 0x81fa, 0x888b,
+    0x8cb8, 0x968a, 0x9edb, 0x5b85, 0x5fb7, 0x60b3, 0x5012, 0x5200,
+    0x5230, 0x5716, 0x5835, 0x5857, 0x5c0e, 0x5c60, 0x5cf6, 0x5d8b,
+    0x5ea6, 0x5f92, 0x60bc, 0x6311, 0x6389, 0x6417, 0x6843, 0x003f,
+    /* lead byte e5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x68f9, 0x6ac2, 0x6dd8, 0x6e21, 0x6ed4, 0x6fe4, 0x71fe,
+    0x76dc, 0x7779, 0x79b1, 0x7a3b, 0x8404, 0x89a9, 0x8ced, 0x8df3,
+    0x8e48, 0x9003, 0x9014, 0x9053, 0x90fd, 0x934d, 0x9676, 0x97dc,
+    0x6bd2, 0x7006, 0x7258, 0x72a2, 0x7368, 0x7763, 0x79bf, 0x7be4,
+    0x7e9b, 0x8b80, 0x58a9, 0x60c7, 0x6566, 0x65fd, 0x66be, 0x6c8c,
+    0x711e, 0x71c9, 0x8c5a, 0x9813, 0x4e6d, 0x7a81, 0x4edd, 0x51ac,
+    0x51cd, 0x52d5, 0x540c, 0x61a7, 0x6771, 0x6850, 0x68df, 0x6d1e,
+    0x6f7c, 0x75bc, 0x77b3, 0x7ae5, 0x80f4, 0x8463, 0x9285, 0x515c,
+    0x6597, 0x675c, 0x6793, 0x75d8, 0x7ac7, 0x8373, 0xf95a, 0x8c46,
+    0x9017, 0x982d, 0x5c6f, 0x81c0, 0x829a, 0x9041, 0x906f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x920d, 0x5f97, 0x5d9d, 0x6a59, 0x71c8, 0x767b, 0x7b49,
+    0x85e4, 0x8b04, 0x9127, 0x9a30, 0x5587, 0x61f6, 0xf95b, 0x7669,
+    0x7f85, 0x863f, 0x87ba, 0x88f8, 0x908f, 0xf95c, 0x6d1b, 0x70d9,
+    0x73de, 0x7d61, 0x843d, 0xf95d, 0x916a, 0x99f1, 0xf95e, 0x4e82,
+    0x5375, 0x6b04, 0x6b12, 0x703e, 0x721b, 0x862d, 0x9e1e, 0x524c,
+    0x8fa3, 0x5d50, 0x64e5, 0x652c, 0x6b16, 0x6feb, 0x7c43, 0x7e9c,
+    0x85cd, 0x8964, 0x89bd, 0x62c9, 0x81d8, 0x881f, 0x5eca, 0x6717,
+    0x6d6a, 0x72fc, 0x7405, 0x746f, 0x8782, 0x90de, 0x4f86, 0x5d0d,
+    0x5fa0, 0x840a, 0x51b7, 0x63a0, 0x7565, 0x4eae, 0x5006, 0x5169,
+    0x51c9, 0x6881, 0x6a11, 0x7cae, 0x7cb1, 0x7ce7, 0x826f, 0x8ad2,
+    0x8f1b, 0x91cf, 0x4fb6, 0x5137, 0x52f5, 0x5442, 0x5eec, 0x616e,
+    0x623e, 0x65c5, 0x6ada, 0x6ffe, 0x792a, 0x85dc, 0x8823, 0x95ad,
+    0x9a62, 0x9a6a, 0x9e97, 0x9ece, 0x529b, 0x66c6, 0x6b77, 0x701d,
+    0x792b, 0x8f62, 0x9742, 0x6190, 0x6200, 0x6523, 0x6f23, 0x003f,
+    /* lead byte e6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7149, 0x7489, 0x7df4, 0x806f, 0x84ee, 0x8f26, 0x9023,
+    0x934a, 0x51bd, 0x5217, 0x52a3, 0x6d0c, 0x70c8, 0x88c2, 0x5ec9,
+    0x6582, 0x6bae, 0x6fc2, 0x7c3e, 0x7375, 0x4ee4, 0x4f36, 0x56f9,
+    0xf95f, 0x5cba, 0x5dba, 0x601c, 0x73b2, 0x7b2d, 0x7f9a, 0x7fce,
+    0x8046, 0x901e, 0x9234, 0x96f6, 0x9748, 0x9818, 0x9f61, 0x4f8b,
+    0x6fa7, 0x79ae, 0x91b4, 0x96b7, 0x52de, 0xf960, 0x6488, 0x64c4,
+    0x6ad3, 0x6f5e, 0x7018, 0x7210, 0x76e7, 0x8001, 0x8606, 0x865c,
+    0x8def, 0x8f05, 0x9732, 0x9b6f, 0x9dfa, 0x9e75, 0x788c, 0x797f,
+    0x7da0, 0x83c9, 0x9304, 0x9e7f, 0x9e93, 0x8ad6, 0x58df, 0x5f04,
+    0x6727, 0x7027, 0x74cf, 0x7c60, 0x807e, 0x5121, 0x7028, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7262, 0x78ca, 0x8cc2, 0x8cda, 0x8cf4, 0x96f7, 0x4e86,
+    0x50da, 0x5bee, 0x5ed6, 0x6599, 0x71ce, 0x7642, 0x77ad, 0x804a,
+    0x84fc, 0x907c, 0x9b27, 0x9f8d, 0x58d8, 0x5a41, 0x5c62, 0x6a13,
+    0x6dda, 0x6f0f, 0x763b, 0x7d2f, 0x7e37, 0x851e, 0x8938, 0x93e4,
+    0x964b, 0x5289, 0x65d2, 0x67f3, 0x69b4, 0x6d41, 0x6e9c, 0x700f,
+    0x7409, 0x7460, 0x7559, 0x7624, 0x786b, 0x8b2c, 0x985e, 0x516d,
+    0x622e, 0x9678, 0x4f96, 0x502b, 0x5d19, 0x6dea, 0x7db8, 0x8f2a,
+    0x5f8b, 0x6144, 0x6817, 0xf961, 0x9686, 0x52d2, 0x808b, 0x51dc,
+    0x51cc, 0x695e, 0x7a1c, 0x7dbe, 0x83f1, 0x9675, 0x4fda, 0x5229,
+    0x5398, 0x540f, 0x550e, 0x5c65, 0x60a7, 0x674e, 0x68a8, 0x6d6c,
+    0x7281, 0x72f8, 0x7406, 0x7483, 0xf962, 0x75e2, 0x7c6c, 0x7f79,
+    0x7fb8, 0x8389, 0x88cf, 0x88e1, 0x91cc, 0x91d0, 0x96e2, 0x9bc9,
+    0x541d, 0x6f7e, 0x71d0, 0x7498, 0x85fa, 0x8eaa, 0x96a3, 0x9c57,
+    0x9e9f, 0x6797, 0x6dcb, 0x7433, 0x81e8, 0x9716, 0x782c, 0x003f,
+    /* lead byte e7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7acb, 0x7b20, 0x7c92, 0x6469, 0x746a, 0x75f2, 0x78bc,
+    0x78e8, 0x99ac, 0x9b54, 0x9ebb, 0x5bde, 0x5e55, 0x6f20, 0x819c,
+    0x83ab, 0x9088, 0x4e07, 0x534d, 0x5a29, 0x5dd2, 0x5f4e, 0x6162,
+    0x633d, 0x6669, 0x66fc, 0x6eff, 0x6f2b, 0x7063, 0x779e, 0x842c,
+    0x8513, 0x883b, 0x8f13, 0x9945, 0x9c3b, 0x551c, 0x62b9, 0x672b,
+    0x6cab, 0x8309, 0x896a, 0x977a, 0x4ea1, 0x5984, 0x5fd8, 0x5fd9,
+    0x671b, 0x7db2, 0x7f54, 0x8292, 0x832b, 0x83bd, 0x8f1e, 0x9099,
+    0x57cb, 0x59b9, 0x5a92, 0x5bd0, 0x6627, 0x679a, 0x6885, 0x6bcf,
+    0x7164, 0x7f75, 0x8cb7, 0x8ce3, 0x9081, 0x9b45, 0x8108, 0x8c8a,
+    0x964c, 0x9a40, 0x9ea5, 0x5b5f, 0x6c13, 0x731b, 0x76f2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x76df, 0x840c, 0x51aa, 0x8993, 0x514d, 0x5195, 0x52c9,
+    0x68c9, 0x6c94, 0x7704, 0x7720, 0x7dbf, 0x7dec, 0x9762, 0x9eb5,
+    0x6ec5, 0x8511, 0x51a5, 0x540d, 0x547d, 0x660e, 0x669d, 0x6927,
+    0x6e9f, 0x76bf, 0x7791, 0x8317, 0x84c2, 0x879f, 0x9169, 0x9298,
+    0x9cf4, 0x8882, 0x4fae, 0x5192, 0x52df, 0x59c6, 0x5e3d, 0x6155,
+    0x6478, 0x6479, 0x66ae, 0x67d0, 0x6a21, 0x6bcd, 0x6bdb, 0x725f,
+    0x7261, 0x7441, 0x7738, 0x77db, 0x8017, 0x82bc, 0x8305, 0x8b00,
+    0x8b28, 0x8c8c, 0x6728, 0x6c90, 0x7267, 0x76ee, 0x7766, 0x7a46,
+    0x9da9, 0x6b7f, 0x6c92, 0x5922, 0x6726, 0x8499, 0x536f, 0x5893,
+    0x5999, 0x5edf, 0x63cf, 0x6634, 0x6773, 0x6e3a, 0x732b, 0x7ad7,
+    0x82d7, 0x9328, 0x52d9, 0x5deb, 0x61ae, 0x61cb, 0x620a, 0x62c7,
+    0x64ab, 0x65e0, 0x6959, 0x6b66, 0x6bcb, 0x7121, 0x73f7, 0x755d,
+    0x7e46, 0x821e, 0x8302, 0x856a, 0x8aa3, 0x8cbf, 0x9727, 0x9d61,
+    0x58a8, 0x9ed8, 0x5011, 0x520e, 0x543b, 0x554f, 0x6587, 0x003f,
+    /* lead byte e8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6c76, 0x7d0a, 0x7d0b, 0x805e, 0x868a, 0x9580, 0x96ef,
+    0x52ff, 0x6c95, 0x7269, 0x5473, 0x5a9a, 0x5c3e, 0x5d4b, 0x5f4c,
+    0x5fae, 0x672a, 0x68b6, 0x6963, 0x6e3c, 0x6e44, 0x7709, 0x7c73,
+    0x7f8e, 0x8587, 0x8b0e, 0x8ff7, 0x9761, 0x9ef4, 0x5cb7, 0x60b6,
+    0x610d, 0x61ab, 0x654f, 0x65fb, 0x65fc, 0x6c11, 0x6cef, 0x739f,
+    0x73c9, 0x7de1, 0x9594, 0x5bc6, 0x871c, 0x8b10, 0x525d, 0x535a,
+    0x62cd, 0x640f, 0x64b2, 0x6734, 0x6a38, 0x6cca, 0x73c0, 0x749e,
+    0x7b94, 0x7c95, 0x7e1b, 0x818a, 0x8236, 0x8584, 0x8feb, 0x96f9,
+    0x99c1, 0x4f34, 0x534a, 0x53cd, 0x53db, 0x62cc, 0x642c, 0x6500,
+    0x6591, 0x69c3, 0x6cee, 0x6f58, 0x73ed, 0x7554, 0x7622, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x76e4, 0x76fc, 0x78d0, 0x78fb, 0x792c, 0x7d46, 0x822c,
+    0x87e0, 0x8fd4, 0x9812, 0x98ef, 0x52c3, 0x62d4, 0x64a5, 0x6e24,
+    0x6f51, 0x767c, 0x8dcb, 0x91b1, 0x9262, 0x9aee, 0x9b43, 0x5023,
+    0x508d, 0x574a, 0x59a8, 0x5c28, 0x5e47, 0x5f77, 0x623f, 0x653e,
+    0x65b9, 0x65c1, 0x6609, 0x678b, 0x699c, 0x6ec2, 0x78c5, 0x7d21,
+    0x80aa, 0x8180, 0x822b, 0x82b3, 0x84a1, 0x868c, 0x8a2a, 0x8b17,
+    0x90a6, 0x9632, 0x9f90, 0x500d, 0x4ff3, 0xf963, 0x57f9, 0x5f98,
+    0x62dc, 0x6392, 0x676f, 0x6e43, 0x7119, 0x76c3, 0x80cc, 0x80da,
+    0x88f4, 0x88f5, 0x8919, 0x8ce0, 0x8f29, 0x914d, 0x966a, 0x4f2f,
+    0x4f70, 0x5e1b, 0x67cf, 0x6822, 0x767d, 0x767e, 0x9b44, 0x5e61,
+    0x6a0a, 0x7169, 0x71d4, 0x756a, 0xf964, 0x7e41, 0x8543, 0x85e9,
+    0x98dc, 0x4f10, 0x7b4f, 0x7f70, 0x95a5, 0x51e1, 0x5e06, 0x68b5,
+    0x6c3e, 0x6c4e, 0x6cdb, 0x72af, 0x7bc4, 0x8303, 0x6cd5, 0x743a,
+    0x50fb, 0x5288, 0x58c1, 0x64d8, 0x6a97, 0x74a7, 0x7656, 0x003f,
+    /* lead byte e9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x78a7, 0x8617, 0x95e2, 0x9739, 0xf965, 0x535e, 0x5f01,
+    0x8b8a, 0x8fa8, 0x8faf, 0x908a, 0x5225, 0x77a5, 0x9c49, 0x9f08,
+    0x4e19, 0x5002, 0x5175, 0x5c5b, 0x5e77, 0x661e, 0x663a, 0x67c4,
+    0x68c5, 0x70b3, 0x7501, 0x75c5, 0x79c9, 0x7add, 0x8f27, 0x9920,
+    0x9a08, 0x4fdd, 0x5821, 0x5831, 0x5bf6, 0x666e, 0x6b65, 0x6d11,
+    0x6e7a, 0x6f7d, 0x73e4, 0x752b, 0x83e9, 0x88dc, 0x8913, 0x8b5c,
+    0x8f14, 0x4f0f, 0x50d5, 0x5310, 0x535c, 0x5b93, 0x5fa9, 0x670d,
+    0x798f, 0x8179, 0x832f, 0x8514, 0x8907, 0x8986, 0x8f39, 0x8f3b,
+    0x99a5, 0x9c12, 0x672c, 0x4e76, 0x4ff8, 0x5949, 0x5c01, 0x5cef,
+    0x5cf0, 0x6367, 0x68d2, 0x70fd, 0x71a2, 0x742b, 0x7e2b, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x84ec, 0x8702, 0x9022, 0x92d2, 0x9cf3, 0x4e0d, 0x4ed8,
+    0x4fef, 0x5085, 0x5256, 0x526f, 0x5426, 0x5490, 0x57e0, 0x592b,
+    0x5a66, 0x5b5a, 0x5b75, 0x5bcc, 0x5e9c, 0xf966, 0x6276, 0x6577,
+    0x65a7, 0x6d6e, 0x6ea5, 0x7236, 0x7b26, 0x7c3f, 0x7f36, 0x8150,
+    0x8151, 0x819a, 0x8240, 0x8299, 0x83a9, 0x8a03, 0x8ca0, 0x8ce6,
+    0x8cfb, 0x8d74, 0x8dba, 0x90e8, 0x91dc, 0x961c, 0x9644, 0x99d9,
+    0x9ce7, 0x5317, 0x5206, 0x5429, 0x5674, 0x58b3, 0x5954, 0x596e,
+    0x5fff, 0x61a4, 0x626e, 0x6610, 0x6c7e, 0x711a, 0x76c6, 0x7c89,
+    0x7cde, 0x7d1b, 0x82ac, 0x8cc1, 0x96f0, 0xf967, 0x4f5b, 0x5f17,
+    0x5f7f, 0x62c2, 0x5d29, 0x670b, 0x68da, 0x787c, 0x7e43, 0x9d6c,
+    0x4e15, 0x5099, 0x5315, 0x532a, 0x5351, 0x5983, 0x5a62, 0x5e87,
+    0x60b2, 0x618a, 0x6249, 0x6279, 0x6590, 0x6787, 0x69a7, 0x6bd4,
+    0x6bd6, 0x6bd7, 0x6bd8, 0x6cb8, 0xf968, 0x7435, 0x75fa, 0x7812,
+    0x7891, 0x79d5, 0x79d8, 0x7c83, 0x7dcb, 0x7fe1, 0x80a5, 0x003f,
+    /* lead byte ea */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x813e, 0x81c2, 0x83f2, 0x871a, 0x88e8, 0x8ab9, 0x8b6c,
+    0x8cbb, 0x9119, 0x975e, 0x98db, 0x9f3b, 0x56ac, 0x5b2a, 0x5f6c,
+    0x658c, 0x6ab3, 0x6baf, 0x6d5c, 0x6ff1, 0x7015, 0x725d, 0x73ad,
+    0x8ca7, 0x8cd3, 0x983b, 0x6191, 0x6c37, 0x8058, 0x9a01, 0x4e4d,
+    0x4e8b, 0x4e9b, 0x4ed5, 0x4f3a, 0x4f3c, 0x4f7f, 0x4fdf, 0x50ff,
+    0x53f2, 0x53f8, 0x5506, 0x55e3, 0x56db, 0x58eb, 0x5962, 0x5a11,
+    0x5beb, 0x5bfa, 0x5c04, 0x5df3, 0x5e2b, 0x5f99, 0x601d, 0x6368,
+    0x659c, 0x65af, 0x67f6, 0x67fb, 0x68ad, 0x6b7b, 0x6c99, 0x6cd7,
+    0x6e23, 0x7009, 0x7345, 0x7802, 0x793e, 0x7940, 0x7960, 0x79c1,
+    0x7be9, 0x7d17, 0x7d72, 0x8086, 0x820d, 0x838e, 0x84d1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x86c7, 0x88df, 0x8a50, 0x8a5e, 0x8b1d, 0x8cdc, 0x8d66,
+    0x8fad, 0x90aa, 0x98fc, 0x99df, 0x9e9d, 0x524a, 0xf969, 0x6714,
+    0xf96a, 0x5098, 0x522a, 0x5c71, 0x6563, 0x6c55, 0x73ca, 0x7523,
+    0x759d, 0x7b97, 0x849c, 0x9178, 0x9730, 0x4e77, 0x6492, 0x6bba,
+    0x715e, 0x85a9, 0x4e09, 0xf96b, 0x6749, 0x68ee, 0x6e17, 0x829f,
+    0x8518, 0x886b, 0x63f7, 0x6f81, 0x9212, 0x98af, 0x4e0a, 0x50b7,
+    0x50cf, 0x511f, 0x5546, 0x55aa, 0x5617, 0x5b40, 0x5c19, 0x5ce0,
+    0x5e38, 0x5e8a, 0x5ea0, 0x5ec2, 0x60f3, 0x6851, 0x6a61, 0x6e58,
+    0x723d, 0x7240, 0x72c0, 0x76f8, 0x7965, 0x7bb1, 0x7fd4, 0x88f3,
+    0x89f4, 0x8a73, 0x8c61, 0x8cde, 0x971c, 0x585e, 0x74bd, 0x8cfd,
+    0x55c7, 0xf96c, 0x7a61, 0x7d22, 0x8272, 0x7272, 0x751f, 0x7525,
+    0xf96d, 0x7b19, 0x5885, 0x58fb, 0x5dbc, 0x5e8f, 0x5eb6, 0x5f90,
+    0x6055, 0x6292, 0x637f, 0x654d, 0x6691, 0x66d9, 0x66f8, 0x6816,
+    0x68f2, 0x7280, 0x745e, 0x7b6e, 0x7d6e, 0x7dd6, 0x7f72, 0x003f,
+    /* lead byte eb */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x80e5, 0x8212, 0x85af, 0x897f, 0x8a93, 0x901d, 0x92e4,
+    0x9ecd, 0x9f20, 0x5915, 0x596d, 0x5e2d, 0x60dc, 0x6614, 0x6673,
+    0x6790, 0x6c50, 0x6dc5, 0x6f5f, 0x77f3, 0x78a9, 0x84c6, 0x91cb,
+    0x932b, 0x4ed9, 0x50ca, 0x5148, 0x5584, 0x5b0b, 0x5ba3, 0x6247,
+    0x657e, 0x65cb, 0x6e32, 0x717d, 0x7401, 0x7444, 0x7487, 0x74bf,
+    0x766c, 0x79aa, 0x7dda, 0x7e55, 0x7fa8, 0x817a, 0x81b3, 0x8239,
+    0x861a, 0x87ec, 0x8a75, 0x8de3, 0x9078, 0x9291, 0x9425, 0x994d,
+    0x9bae, 0x5368, 0x5c51, 0x6954, 0x6cc4, 0x6d29, 0x6e2b, 0x820c,
+    0x859b, 0x893b, 0x8a2d, 0x8aaa, 0x96ea, 0x9f67, 0x5261, 0x66b9,
+    0x6bb2, 0x7e96, 0x87fe, 0x8d0d, 0x9583, 0x965d, 0x651d, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6d89, 0x71ee, 0xf96e, 0x57ce, 0x59d3, 0x5bac, 0x6027,
+    0x60fa, 0x6210, 0x661f, 0x665f, 0x7329, 0x73f9, 0x76db, 0x7701,
+    0x7b6c, 0x8056, 0x8072, 0x8165, 0x8aa0, 0x9192, 0x4e16, 0x52e2,
+    0x6b72, 0x6d17, 0x7a05, 0x7b39, 0x7d30, 0xf96f, 0x8cb0, 0x53ec,
+    0x562f, 0x5851, 0x5bb5, 0x5c0f, 0x5c11, 0x5de2, 0x6240, 0x6383,
+    0x6414, 0x662d, 0x68b3, 0x6cbc, 0x6d88, 0x6eaf, 0x701f, 0x70a4,
+    0x71d2, 0x7526, 0x758f, 0x758e, 0x7619, 0x7b11, 0x7be0, 0x7c2b,
+    0x7d20, 0x7d39, 0x852c, 0x856d, 0x8607, 0x8a34, 0x900d, 0x9061,
+    0x90b5, 0x92b7, 0x97f6, 0x9a37, 0x4fd7, 0x5c6c, 0x675f, 0x6d91,
+    0x7c9f, 0x7e8c, 0x8b16, 0x8d16, 0x901f, 0x5b6b, 0x5dfd, 0x640d,
+    0x84c0, 0x905c, 0x98e1, 0x7387, 0x5b8b, 0x609a, 0x677e, 0x6dde,
+    0x8a1f, 0x8aa6, 0x9001, 0x980c, 0x5237, 0xf970, 0x7051, 0x788e,
+    0x9396, 0x8870, 0x91d7, 0x4fee, 0x53d7, 0x55fd, 0x56da, 0x5782,
+    0x58fd, 0x5ac2, 0x5b88, 0x5cab, 0x5cc0, 0x5e25, 0x6101, 0x003f,
+    /* lead byte ec */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x620d, 0x624b, 0x6388, 0x641c, 0x6536, 0x6578, 0x6a39,
+    0x6b8a, 0x6c34, 0x6d19, 0x6f31, 0x71e7, 0x72e9, 0x7378, 0x7407,
+    0x74b2, 0x7626, 0x7761, 0x79c0, 0x7a57, 0x7aea, 0x7cb9, 0x7d8f,
+    0x7dac, 0x7e61, 0x7f9e, 0x8129, 0x8331, 0x8490, 0x84da, 0x85ea,
+    0x8896, 0x8ab0, 0x8b90, 0x8f38, 0x9042, 0x9083, 0x916c, 0x9296,
+    0x92b9, 0x968b, 0x96a7, 0x96a8, 0x96d6, 0x9700, 0x9808, 0x9996,
+    0x9ad3, 0x9b1a, 0x53d4, 0x587e, 0x5919, 0x5b70, 0x5bbf, 0x6dd1,
+    0x6f5a, 0x719f, 0x7421, 0x74b9, 0x8085, 0x83fd, 0x5de1, 0x5f87,
+    0x5faa, 0x6042, 0x65ec, 0x6812, 0x696f, 0x6a53, 0x6b89, 0x6d35,
+    0x6df3, 0x73e3, 0x76fe, 0x77ac, 0x7b4d, 0x7d14, 0x8123, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x821c, 0x8340, 0x84f4, 0x8563, 0x8a62, 0x8ac4, 0x9187,
+    0x931e, 0x9806, 0x99b4, 0x620c, 0x8853, 0x8ff0, 0x9265, 0x5d07,
+    0x5d27, 0x5d69, 0x745f, 0x819d, 0x8768, 0x6fd5, 0x62fe, 0x7fd2,
+    0x8936, 0x8972, 0x4e1e, 0x4e58, 0x50e7, 0x52dd, 0x5347, 0x627f,
+    0x6607, 0x7e69, 0x8805, 0x965e, 0x4f8d, 0x5319, 0x5636, 0x59cb,
+    0x5aa4, 0x5c38, 0x5c4e, 0x5c4d, 0x5e02, 0x5f11, 0x6043, 0x65bd,
+    0x662f, 0x6642, 0x67be, 0x67f4, 0x731c, 0x77e2, 0x793a, 0x7fc5,
+    0x8494, 0x84cd, 0x8996, 0x8a66, 0x8a69, 0x8ae1, 0x8c55, 0x8c7a,
+    0x57f4, 0x5bd4, 0x5f0f, 0x606f, 0x62ed, 0x690d, 0x6b96, 0x6e5c,
+    0x7184, 0x7bd2, 0x8755, 0x8b58, 0x8efe, 0x98df, 0x98fe, 0x4f38,
+    0x4f81, 0x4fe1, 0x547b, 0x5a20, 0x5bb8, 0x613c, 0x65b0, 0x6668,
+    0x71fc, 0x7533, 0x795e, 0x7d33, 0x814e, 0x81e3, 0x8398, 0x85aa,
+    0x85ce, 0x8703, 0x8a0a, 0x8eab, 0x8f9b, 0xf971, 0x8fc5, 0x5931,
+    0x5ba4, 0x5be6, 0x6089, 0x5be9, 0x5c0b, 0x5fc3, 0x6c81, 0x003f,
+    /* lead byte ed */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf972, 0x6df1, 0x700b, 0x751a, 0x82af, 0x8af6, 0x4ec0,
+    0x5341, 0xf973, 0x96d9, 0x6c0f, 0x4e9e, 0x4fc4, 0x5152, 0x555e,
+    0x5a25, 0x5ce8, 0x6211, 0x7259, 0x82bd, 0x83aa, 0x86fe, 0x8859,
+    0x8a1d, 0x963f, 0x96c5, 0x9913, 0x9d09, 0x9d5d, 0x580a, 0x5cb3,
+    0x5dbd, 0x5e44, 0x60e1, 0x6115, 0x63e1, 0x6a02, 0x6e25, 0x9102,
+    0x9354, 0x984e, 0x9c10, 0x9f77, 0x5b89, 0x5cb8, 0x6309, 0x664f,
+    0x6848, 0x773c, 0x96c1, 0x978d, 0x9854, 0x9b9f, 0x65a1, 0x8b01,
+    0x8ecb, 0x95bc, 0x5535, 0x5ca9, 0x5dd6, 0x5eb5, 0x6697, 0x764c,
+    0x83f4, 0x95c7, 0x58d3, 0x62bc, 0x72ce, 0x9d28, 0x4ef0, 0x592e,
+    0x600f, 0x663b, 0x6b83, 0x79e7, 0x9d26, 0x5393, 0x54c0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x57c3, 0x5d16, 0x611b, 0x66d6, 0x6daf, 0x788d, 0x827e,
+    0x9698, 0x9744, 0x5384, 0x627c, 0x6396, 0x6db2, 0x7e0a, 0x814b,
+    0x984d, 0x6afb, 0x7f4c, 0x9daf, 0x9e1a, 0x4e5f, 0x503b, 0x51b6,
+    0x591c, 0x60f9, 0x63f6, 0x6930, 0x723a, 0x8036, 0xf974, 0x91ce,
+    0x5f31, 0xf975, 0xf976, 0x7d04, 0x82e5, 0x846f, 0x84bb, 0x85e5,
+    0x8e8d, 0xf977, 0x4f6f, 0xf978, 0xf979, 0x58e4, 0x5b43, 0x6059,
+    0x63da, 0x6518, 0x656d, 0x6698, 0xf97a, 0x694a, 0x6a23, 0x6d0b,
+    0x7001, 0x716c, 0x75d2, 0x760d, 0x79b3, 0x7a70, 0xf97b, 0x7f8a,
+    0xf97c, 0x8944, 0xf97d, 0x8b93, 0x91c0, 0x967d, 0xf97e, 0x990a,
+    0x5704, 0x5fa1, 0x65bc, 0x6f01, 0x7600, 0x79a6, 0x8a9e, 0x99ad,
+    0x9b5a, 0x9f6c, 0x5104, 0x61b6, 0x6291, 0x6a8d, 0x81c6, 0x5043,
+    0x5830, 0x5f66, 0x7109, 0x8a00, 0x8afa, 0x5b7c, 0x8616, 0x4ffa,
+    0x513c, 0x56b4, 0x5944, 0x63a9, 0x6df9, 0x5daa, 0x696d, 0x5186,
+    0x4e88, 0x4f59, 0xf97f, 0xf980, 0xf981, 0x5982, 0xf982, 0x003f,
+    /* lead byte ee */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf983, 0x6b5f, 0x6c5d, 0xf984, 0x74b5, 0x7916, 0xf985,
+    0x8207, 0x8245, 0x8339, 0x8f3f, 0x8f5d, 0xf986, 0x9918, 0xf987,
+    0xf988, 0xf989, 0x4ea6, 0xf98a, 0x57df, 0x5f79, 0x6613, 0xf98b,
+    0xf98c, 0x75ab, 0x7e79, 0x8b6f, 0xf98d, 0x9006, 0x9a5b, 0x56a5,
+    0x5827, 0x59f8, 0x5a1f, 0x5bb4, 0xf98e, 0x5ef6, 0xf98f, 0xf990,
+    0x6350, 0x633b, 0xf991, 0x693d, 0x6c87, 0x6cbf, 0x6d8e, 0x6d93,
+    0x6df5, 0x6f14, 0xf992, 0x70df, 0x7136, 0x7159, 0xf993, 0x71c3,
+    0x71d5, 0xf994, 0x784f, 0x786f, 0xf995, 0x7b75, 0x7de3, 0xf996,
+    0x7e2f, 0xf997, 0x884d, 0x8edf, 0xf998, 0xf999, 0xf99a, 0x925b,
+    0xf99b, 0x9cf6, 0xf99c, 0xf99d, 0xf99e, 0x6085, 0x6d85, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf99f, 0x71b1, 0xf9a0, 0xf9a1, 0x95b1, 0x53ad, 0xf9a2,
+    0xf9a3, 0xf9a4, 0x67d3, 0xf9a5, 0x708e, 0x7130, 0x7430, 0x8276,
+    0x82d2, 0xf9a6, 0x95bb, 0x9ae5, 0x9e7d, 0x66c4, 0xf9a7, 0x71c1,
+    0x8449, 0xf9a8, 0xf9a9, 0x584b, 0xf9aa, 0xf9ab, 0x5db8, 0x5f71,
+    0xf9ac, 0x6620, 0x668e, 0x6979, 0x69ae, 0x6c38, 0x6cf3, 0x6e36,
+    0x6f41, 0x6fda, 0x701b, 0x702f, 0x7150, 0x71df, 0x7370, 0xf9ad,
+    0x745b, 0xf9ae, 0x74d4, 0x76c8, 0x7a4e, 0x7e93, 0xf9af, 0xf9b0,
+    0x82f1, 0x8a60, 0x8fce, 0xf9b1, 0x9348, 0xf9b2, 0x9719, 0xf9b3,
+    0xf9b4, 0x4e42, 0x502a, 0xf9b5, 0x5208, 0x53e1, 0x66f3, 0x6c6d,
+    0x6fca, 0x730a, 0x777f, 0x7a62, 0x82ae, 0x85dd, 0x8602, 0xf9b6,
+    0x88d4, 0x8a63, 0x8b7d, 0x8c6b, 0xf9b7, 0x92b3, 0xf9b8, 0x9713,
+    0x9810, 0x4e94, 0x4f0d, 0x4fc9, 0x50b2, 0x5348, 0x543e, 0x5433,
+    0x55da, 0x5862, 0x58ba, 0x5967, 0x5a1b, 0x5be4, 0x609f, 0xf9b9,
+    0x61ca, 0x6556, 0x65ff, 0x6664, 0x68a7, 0x6c5a, 0x6fb3, 0x003f,
+    /* lead byte ef */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x70cf, 0x71ac, 0x7352, 0x7b7d, 0x8708, 0x8aa4, 0x9c32,
+    0x9f07, 0x5c4b, 0x6c83, 0x7344, 0x7389, 0x923a, 0x6eab, 0x7465,
+    0x761f, 0x7a69, 0x7e15, 0x860a, 0x5140, 0x58c5, 0x64c1, 0x74ee,
+    0x7515, 0x7670, 0x7fc1, 0x9095, 0x96cd, 0x9954, 0x6e26, 0x74e6,
+    0x7aa9, 0x7aaa, 0x81e5, 0x86d9, 0x8778, 0x8a1b, 0x5a49, 0x5b8c,
+    0x5b9b, 0x68a1, 0x6900, 0x6d63, 0x73a9, 0x7413, 0x742c, 0x7897,
+    0x7de9, 0x7feb, 0x8118, 0x8155, 0x839e, 0x8c4c, 0x962e, 0x9811,
+    0x66f0, 0x5f80, 0x65fa, 0x6789, 0x6c6a, 0x738b, 0x502d, 0x5a03,
+    0x6b6a, 0x77ee, 0x5916, 0x5d6c, 0x5dcd, 0x7325, 0x754f, 0xf9ba,
+    0xf9bb, 0x50e5, 0x51f9, 0x582f, 0x592d, 0x5996, 0x59da, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x5be5, 0xf9bc, 0xf9bd, 0x5da2, 0x62d7, 0x6416, 0x6493,
+    0x64fe, 0xf9be, 0x66dc, 0xf9bf, 0x6a48, 0xf9c0, 0x71ff, 0x7464,
+    0xf9c1, 0x7a88, 0x7aaf, 0x7e47, 0x7e5e, 0x8000, 0x8170, 0xf9c2,
+    0x87ef, 0x8981, 0x8b20, 0x9059, 0xf9c3, 0x9080, 0x9952, 0x617e,
+    0x6b32, 0x6d74, 0x7e1f, 0x8925, 0x8fb1, 0x4fd1, 0x50ad, 0x5197,
+    0x52c7, 0x57c7, 0x5889, 0x5bb9, 0x5eb8, 0x6142, 0x6995, 0x6d8c,
+    0x6e67, 0x6eb6, 0x7194, 0x7462, 0x7528, 0x752c, 0x8073, 0x8338,
+    0x84c9, 0x8e0a, 0x9394, 0x93de, 0xf9c4, 0x4e8e, 0x4f51, 0x5076,
+    0x512a, 0x53c8, 0x53cb, 0x53f3, 0x5b87, 0x5bd3, 0x5c24, 0x611a,
+    0x6182, 0x65f4, 0x725b, 0x7397, 0x7440, 0x76c2, 0x7950, 0x7991,
+    0x79b9, 0x7d06, 0x7fbd, 0x828b, 0x85d5, 0x865e, 0x8fc2, 0x9047,
+    0x90f5, 0x91ea, 0x9685, 0x96e8, 0x96e9, 0x52d6, 0x5f67, 0x65ed,
+    0x6631, 0x682f, 0x715c, 0x7a36, 0x90c1, 0x980a, 0x4e91, 0xf9c5,
+    0x6a52, 0x6b9e, 0x6f90, 0x7189, 0x8018, 0x82b8, 0x8553, 0x003f,
+    /* lead byte f0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x904b, 0x9695, 0x96f2, 0x97fb, 0x851a, 0x9b31, 0x4e90,
+    0x718a, 0x96c4, 0x5143, 0x539f, 0x54e1, 0x5713, 0x5712, 0x57a3,
+    0x5a9b, 0x5ac4, 0x5bc3, 0x6028, 0x613f, 0x63f4, 0x6c85, 0x6d39,
+    0x6e72, 0x6e90, 0x7230, 0x733f, 0x7457, 0x82d1, 0x8881, 0x8f45,
+    0x9060, 0xf9c6, 0x9662, 0x9858, 0x9d1b, 0x6708, 0x8d8a, 0x925e,
+    0x4f4d, 0x5049, 0x50de, 0x5371, 0x570d, 0x59d4, 0x5a01, 0x5c09,
+    0x6170, 0x6690, 0x6e2d, 0x7232, 0x744b, 0x7def, 0x80c3, 0x840e,
+    0x8466, 0x853f, 0x875f, 0x885b, 0x8918, 0x8b02, 0x9055, 0x97cb,
+    0x9b4f, 0x4e73, 0x4f91, 0x5112, 0x516a, 0xf9c7, 0x552f, 0x55a9,
+    0x5b7a, 0x5ba5, 0x5e7c, 0x5e7d, 0x5ebe, 0x60a0, 0x60df, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6108, 0x6109, 0x63c4, 0x6538, 0x6709, 0xf9c8, 0x67d4,
+    0x67da, 0xf9c9, 0x6961, 0x6962, 0x6cb9, 0x6d27, 0xf9ca, 0x6e38,
+    0xf9cb, 0x6fe1, 0x7336, 0x7337, 0xf9cc, 0x745c, 0x7531, 0xf9cd,
+    0x7652, 0xf9ce, 0xf9cf, 0x7dad, 0x81fe, 0x8438, 0x88d5, 0x8a98,
+    0x8adb, 0x8aed, 0x8e30, 0x8e42, 0x904a, 0x903e, 0x907a, 0x9149,
+    0x91c9, 0x936e, 0xf9d0, 0xf9d1, 0x5809, 0xf9d2, 0x6bd3, 0x8089,
+    0x80b2, 0xf9d3, 0xf9d4, 0x5141, 0x596b, 0x5c39, 0xf9d5, 0xf9d6,
+    0x6f64, 0x73a7, 0x80e4, 0x8d07, 0xf9d7, 0x9217, 0x958f, 0xf9d8,
+    0xf9d9, 0xf9da, 0xf9db, 0x807f, 0x620e, 0x701c, 0x7d68, 0x878d,
+    0xf9dc, 0x57a0, 0x6069, 0x6147, 0x6bb7, 0x8abe, 0x9280, 0x96b1,
+    0x4e59, 0x541f, 0x6deb, 0x852d, 0x9670, 0x97f3, 0x98ee, 0x63d6,
+    0x6ce3, 0x9091, 0x51dd, 0x61c9, 0x81ba, 0x9df9, 0x4f9d, 0x501a,
+    0x5100, 0x5b9c, 0x610f, 0x61ff, 0x64ec, 0x6905, 0x6bc5, 0x7591,
+    0x77e3, 0x7fa9, 0x8264, 0x858f, 0x87fb, 0x8863, 0x8abc, 0x003f,
+    /* lead byte f1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8b70, 0x91ab, 0x4e8c, 0x4ee5, 0x4f0a, 0xf9dd, 0xf9de,
+    0x5937, 0x59e8, 0xf9df, 0x5df2, 0x5f1b, 0x5f5b, 0x6021, 0xf9e0,
+    0xf9e1, 0xf9e2, 0xf9e3, 0x723e, 0x73e5, 0xf9e4, 0x7570, 0x75cd,
+    0xf9e5, 0x79fb, 0xf9e6, 0x800c, 0x8033, 0x8084, 0x82e1, 0x8351,
+    0xf9e7, 0xf9e8, 0x8cbd, 0x8cb3, 0x9087, 0xf9e9, 0xf9ea, 0x98f4,
+    0x990c, 0xf9eb, 0xf9ec, 0x7037, 0x76ca, 0x7fca, 0x7fcc, 0x7ffc,
+    0x8b1a, 0x4eba, 0x4ec1, 0x5203, 0x5370, 0xf9ed, 0x54bd, 0x56e0,
+    0x59fb, 0x5bc5, 0x5f15, 0x5fcd, 0x6e6e, 0xf9ee, 0xf9ef, 0x7d6a,
+    0x8335, 0xf9f0, 0x8693, 0x8a8d, 0xf9f1, 0x976d, 0x9777, 0xf9f2,
+    0xf9f3, 0x4e00, 0x4f5a, 0x4f7e, 0x58f9, 0x65e5, 0x6ea2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9038, 0x93b0, 0x99b9, 0x4efb, 0x58ec, 0x598a, 0x59d9,
+    0x6041, 0xf9f4, 0xf9f5, 0x7a14, 0xf9f6, 0x834f, 0x8cc3, 0x5165,
+    0x5344, 0xf9f7, 0xf9f8, 0xf9f9, 0x4ecd, 0x5269, 0x5b55, 0x82bf,
+    0x4ed4, 0x523a, 0x54a8, 0x59c9, 0x59ff, 0x5b50, 0x5b57, 0x5b5c,
+    0x6063, 0x6148, 0x6ecb, 0x7099, 0x716e, 0x7386, 0x74f7, 0x75b5,
+    0x78c1, 0x7d2b, 0x8005, 0x81ea, 0x8328, 0x8517, 0x85c9, 0x8aee,
+    0x8cc7, 0x96cc, 0x4f5c, 0x52fa, 0x56bc, 0x65ab, 0x6628, 0x707c,
+    0x70b8, 0x7235, 0x7dbd, 0x828d, 0x914c, 0x96c0, 0x9d72, 0x5b71,
+    0x68e7, 0x6b98, 0x6f7a, 0x76de, 0x5c91, 0x66ab, 0x6f5b, 0x7bb4,
+    0x7c2a, 0x8836, 0x96dc, 0x4e08, 0x4ed7, 0x5320, 0x5834, 0x58bb,
+    0x58ef, 0x596c, 0x5c07, 0x5e33, 0x5e84, 0x5f35, 0x638c, 0x66b2,
+    0x6756, 0x6a1f, 0x6aa3, 0x6b0c, 0x6f3f, 0x7246, 0xf9fa, 0x7350,
+    0x748b, 0x7ae0, 0x7ca7, 0x8178, 0x81df, 0x81e7, 0x838a, 0x846c,
+    0x8523, 0x8594, 0x85cf, 0x88dd, 0x8d13, 0x91ac, 0x9577, 0x003f,
+    /* lead byte f2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x969c, 0x518d, 0x54c9, 0x5728, 0x5bb0, 0x624d, 0x6750,
+    0x683d, 0x6893, 0x6e3d, 0x6ed3, 0x707d, 0x7e21, 0x88c1, 0x8ca1,
+    0x8f09, 0x9f4b, 0x9f4e, 0x722d, 0x7b8f, 0x8acd, 0x931a, 0x4f47,
+    0x4f4e, 0x5132, 0x5480, 0x59d0, 0x5e95, 0x62b5, 0x6775, 0x696e,
+    0x6a17, 0x6cae, 0x6e1a, 0x72d9, 0x732a, 0x75bd, 0x7bb8, 0x7d35,
+    0x82e7, 0x83f9, 0x8457, 0x85f7, 0x8a5b, 0x8caf, 0x8e87, 0x9019,
+    0x90b8, 0x96ce, 0x9f5f, 0x52e3, 0x540a, 0x5ae1, 0x5bc2, 0x6458,
+    0x6575, 0x6ef4, 0x72c4, 0xf9fb, 0x7684, 0x7a4d, 0x7b1b, 0x7c4d,
+    0x7e3e, 0x7fdf, 0x837b, 0x8b2b, 0x8cca, 0x8d64, 0x8de1, 0x8e5f,
+    0x8fea, 0x8ff9, 0x9069, 0x93d1, 0x4f43, 0x4f7a, 0x50b3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x5168, 0x5178, 0x524d, 0x526a, 0x5861, 0x587c, 0x5960,
+    0x5c08, 0x5c55, 0x5edb, 0x609b, 0x6230, 0x6813, 0x6bbf, 0x6c08,
+    0x6fb1, 0x714e, 0x7420, 0x7530, 0x7538, 0x7551, 0x7672, 0x7b4c,
+    0x7b8b, 0x7bad, 0x7bc6, 0x7e8f, 0x8a6e, 0x8f3e, 0x8f49, 0x923f,
+    0x9293, 0x9322, 0x942b, 0x96fb, 0x985a, 0x986b, 0x991e, 0x5207,
+    0x622a, 0x6298, 0x6d59, 0x7664, 0x7aca, 0x7bc0, 0x7d76, 0x5360,
+    0x5cbe, 0x5e97, 0x6f38, 0x70b9, 0x7c98, 0x9711, 0x9b8e, 0x9ede,
+    0x63a5, 0x647a, 0x8776, 0x4e01, 0x4e95, 0x4ead, 0x505c, 0x5075,
+    0x5448, 0x59c3, 0x5b9a, 0x5e40, 0x5ead, 0x5ef7, 0x5f81, 0x60c5,
+    0x633a, 0x653f, 0x6574, 0x65cc, 0x6676, 0x6678, 0x67fe, 0x6968,
+    0x6a89, 0x6b63, 0x6c40, 0x6dc0, 0x6de8, 0x6e1f, 0x6e5e, 0x701e,
+    0x70a1, 0x738e, 0x73fd, 0x753a, 0x775b, 0x7887, 0x798e, 0x7a0b,
+    0x7a7d, 0x7cbe, 0x7d8e, 0x8247, 0x8a02, 0x8aea, 0x8c9e, 0x912d,
+    0x914a, 0x91d8, 0x9266, 0x92cc, 0x9320, 0x9706, 0x9756, 0x003f,
+    /* lead byte f3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x975c, 0x9802, 0x9f0e, 0x5236, 0x5291, 0x557c, 0x5824,
+    0x5e1d, 0x5f1f, 0x608c, 0x63d0, 0x68af, 0x6fdf, 0x796d, 0x7b2c,
+    0x81cd, 0x85ba, 0x88fd, 0x8af8, 0x8e44, 0x918d, 0x9664, 0x969b,
+    0x973d, 0x984c, 0x9f4a, 0x4fce, 0x5146, 0x51cb, 0x52a9, 0x5632,
+    0x5f14, 0x5f6b, 0x63aa, 0x64cd, 0x65e9, 0x6641, 0x66fa, 0x66f9,
+    0x671d, 0x689d, 0x68d7, 0x69fd, 0x6f15, 0x6f6e, 0x7167, 0x71e5,
+    0x722a, 0x74aa, 0x773a, 0x7956, 0x795a, 0x79df, 0x7a20, 0x7a95,
+    0x7c97, 0x7cdf, 0x7d44, 0x7e70, 0x8087, 0x85fb, 0x86a4, 0x8a54,
+    0x8abf, 0x8d99, 0x8e81, 0x9020, 0x906d, 0x91e3, 0x963b, 0x96d5,
+    0x9ce5, 0x65cf, 0x7c07, 0x8db3, 0x93c3, 0x5b58, 0x5c0a, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x5352, 0x62d9, 0x731d, 0x5027, 0x5b97, 0x5f9e, 0x60b0,
+    0x616b, 0x68d5, 0x6dd9, 0x742e, 0x7a2e, 0x7d42, 0x7d9c, 0x7e31,
+    0x816b, 0x8e2a, 0x8e35, 0x937e, 0x9418, 0x4f50, 0x5750, 0x5de6,
+    0x5ea7, 0x632b, 0x7f6a, 0x4e3b, 0x4f4f, 0x4f8f, 0x505a, 0x59dd,
+    0x80c4, 0x546a, 0x5468, 0x55fe, 0x594f, 0x5b99, 0x5dde, 0x5eda,
+    0x665d, 0x6731, 0x67f1, 0x682a, 0x6ce8, 0x6d32, 0x6e4a, 0x6f8d,
+    0x70b7, 0x73e0, 0x7587, 0x7c4c, 0x7d02, 0x7d2c, 0x7da2, 0x821f,
+    0x86db, 0x8a3b, 0x8a85, 0x8d70, 0x8e8a, 0x8f33, 0x9031, 0x914e,
+    0x9152, 0x9444, 0x99d0, 0x7af9, 0x7ca5, 0x4fca, 0x5101, 0x51c6,
+    0x57c8, 0x5bef, 0x5cfb, 0x6659, 0x6a3d, 0x6d5a, 0x6e96, 0x6fec,
+    0x710c, 0x756f, 0x7ae3, 0x8822, 0x9021, 0x9075, 0x96cb, 0x99ff,
+    0x8301, 0x4e2d, 0x4ef2, 0x8846, 0x91cd, 0x537d, 0x6adb, 0x696b,
+    0x6c41, 0x847a, 0x589e, 0x618e, 0x66fe, 0x62ef, 0x70dd, 0x7511,
+    0x75c7, 0x7e52, 0x84b8, 0x8b49, 0x8d08, 0x4e4b, 0x53ea, 0x003f,
+    /* lead byte f4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x54ab, 0x5730, 0x5740, 0x5fd7, 0x6301, 0x6307, 0x646f,
+    0x652f, 0x65e8, 0x667a, 0x679d, 0x67b3, 0x6b62, 0x6c60, 0x6c9a,
+    0x6f2c, 0x77e5, 0x7825, 0x7949, 0x7957, 0x7d19, 0x80a2, 0x8102,
+    0x81f3, 0x829d, 0x82b7, 0x8718, 0x8a8c, 0xf9fc, 0x8d04, 0x8dbe,
+    0x9072, 0x76f4, 0x7a19, 0x7a37, 0x7e54, 0x8077, 0x5507, 0x55d4,
+    0x5875, 0x632f, 0x6422, 0x6649, 0x664b, 0x686d, 0x699b, 0x6b84,
+    0x6d25, 0x6eb1, 0x73cd, 0x7468, 0x74a1, 0x755b, 0x75b9, 0x76e1,
+    0x771e, 0x778b, 0x79e6, 0x7e09, 0x7e1d, 0x81fb, 0x852f, 0x8897,
+    0x8a3a, 0x8cd1, 0x8eeb, 0x8fb0, 0x9032, 0x93ad, 0x9663, 0x9673,
+    0x9707, 0x4f84, 0x53f1, 0x59ea, 0x5ac9, 0x5e19, 0x684e, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x74c6, 0x75be, 0x79e9, 0x7a92, 0x81a3, 0x86ed, 0x8cea,
+    0x8dcc, 0x8fed, 0x659f, 0x6715, 0xf9fd, 0x57f7, 0x6f57, 0x7ddd,
+    0x8f2f, 0x93f6, 0x96c6, 0x5fb5, 0x61f2, 0x6f84, 0x4e14, 0x4f98,
+    0x501f, 0x53c9, 0x55df, 0x5d6f, 0x5dee, 0x6b21, 0x6b64, 0x78cb,
+    0x7b9a, 0xf9fe, 0x8e49, 0x8eca, 0x906e, 0x6349, 0x643e, 0x7740,
+    0x7a84, 0x932f, 0x947f, 0x9f6a, 0x64b0, 0x6faf, 0x71e6, 0x74a8,
+    0x74da, 0x7ac4, 0x7c12, 0x7e82, 0x7cb2, 0x7e98, 0x8b9a, 0x8d0a,
+    0x947d, 0x9910, 0x994c, 0x5239, 0x5bdf, 0x64e6, 0x672d, 0x7d2e,
+    0x50ed, 0x53c3, 0x5879, 0x6158, 0x6159, 0x61fa, 0x65ac, 0x7ad9,
+    0x8b92, 0x8b96, 0x5009, 0x5021, 0x5275, 0x5531, 0x5a3c, 0x5ee0,
+    0x5f70, 0x6134, 0x655e, 0x660c, 0x6636, 0x66a2, 0x69cd, 0x6ec4,
+    0x6f32, 0x7316, 0x7621, 0x7a93, 0x8139, 0x8259, 0x83d6, 0x84bc,
+    0x50b5, 0x57f0, 0x5bc0, 0x5be8, 0x5f69, 0x63a1, 0x7826, 0x7db5,
+    0x83dc, 0x8521, 0x91c7, 0x91f5, 0x518a, 0x67f5, 0x7b56, 0x003f,
+    /* lead byte f5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8cac, 0x51c4, 0x59bb, 0x60bd, 0x8655, 0x501c, 0xf9ff,
+    0x5254, 0x5c3a, 0x617d, 0x621a, 0x62d3, 0x64f2, 0x65a5, 0x6ecc,
+    0x7620, 0x810a, 0x8e60, 0x965f, 0x96bb, 0x4edf, 0x5343, 0x5598,
+    0x5929, 0x5ddd, 0x64c5, 0x6cc9, 0x6dfa, 0x7394, 0x7a7f, 0x821b,
+    0x85a6, 0x8ce4, 0x8e10, 0x9077, 0x91e7, 0x95e1, 0x9621, 0x97c6,
+    0x51f8, 0x54f2, 0x5586, 0x5fb9, 0x64a4, 0x6f88, 0x7db4, 0x8f1f,
+    0x8f4d, 0x9435, 0x50c9, 0x5c16, 0x6cbe, 0x6dfb, 0x751b, 0x77bb,
+    0x7c3d, 0x7c64, 0x8a79, 0x8ac2, 0x581e, 0x59be, 0x5e16, 0x6377,
+    0x7252, 0x758a, 0x776b, 0x8adc, 0x8cbc, 0x8f12, 0x5ef3, 0x6674,
+    0x6df8, 0x807d, 0x83c1, 0x8acb, 0x9751, 0x9bd6, 0xfa00, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x5243, 0x66ff, 0x6d95, 0x6eef, 0x7de0, 0x8ae6, 0x902e,
+    0x905e, 0x9ad4, 0x521d, 0x527f, 0x54e8, 0x6194, 0x6284, 0x62db,
+    0x68a2, 0x6912, 0x695a, 0x6a35, 0x7092, 0x7126, 0x785d, 0x7901,
+    0x790e, 0x79d2, 0x7a0d, 0x8096, 0x8278, 0x82d5, 0x8349, 0x8549,
+    0x8c82, 0x8d85, 0x9162, 0x918b, 0x91ae, 0x4fc3, 0x56d1, 0x71ed,
+    0x77d7, 0x8700, 0x89f8, 0x5bf8, 0x5fd6, 0x6751, 0x90a8, 0x53e2,
+    0x585a, 0x5bf5, 0x60a4, 0x6181, 0x6460, 0x7e3d, 0x8070, 0x8525,
+    0x9283, 0x64ae, 0x50ac, 0x5d14, 0x6700, 0x589c, 0x62bd, 0x63a8,
+    0x690e, 0x6978, 0x6a1e, 0x6e6b, 0x76ba, 0x79cb, 0x82bb, 0x8429,
+    0x8acf, 0x8da8, 0x8ffd, 0x9112, 0x914b, 0x919c, 0x9310, 0x9318,
+    0x939a, 0x96db, 0x9a36, 0x9c0d, 0x4e11, 0x755c, 0x795d, 0x7afa,
+    0x7b51, 0x7bc9, 0x7e2e, 0x84c4, 0x8e59, 0x8e74, 0x8ef8, 0x9010,
+    0x6625, 0x693f, 0x7443, 0x51fa, 0x672e, 0x9edc, 0x5145, 0x5fe0,
+    0x6c96, 0x87f2, 0x885d, 0x8877, 0x60b4, 0x81b5, 0x8403, 0x003f,
+    /* lead byte f6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8d05, 0x53d6, 0x5439, 0x5634, 0x5a36, 0x5c31, 0x708a,
+    0x7fe0, 0x805a, 0x8106, 0x81ed, 0x8da3, 0x9189, 0x9a5f, 0x9df2,
+    0x5074, 0x4ec4, 0x53a0, 0x60fb, 0x6e2c, 0x5c64, 0x4f88, 0x5024,
+    0x55e4, 0x5cd9, 0x5e5f, 0x6065, 0x6894, 0x6cbb, 0x6dc4, 0x71be,
+    0x75d4, 0x75f4, 0x7661, 0x7a1a, 0x7a49, 0x7dc7, 0x7dfb, 0x7f6e,
+    0x81f4, 0x86a9, 0x8f1c, 0x96c9, 0x99b3, 0x9f52, 0x5247, 0x52c5,
+    0x98ed, 0x89aa, 0x4e03, 0x67d2, 0x6f06, 0x4fb5, 0x5be2, 0x6795,
+    0x6c88, 0x6d78, 0x741b, 0x7827, 0x91dd, 0x937c, 0x87c4, 0x79e4,
+    0x7a31, 0x5feb, 0x4ed6, 0x54a4, 0x553e, 0x58ae, 0x59a5, 0x60f0,
+    0x6253, 0x62d6, 0x6736, 0x6955, 0x8235, 0x9640, 0x99b1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x99dd, 0x502c, 0x5353, 0x5544, 0x577c, 0xfa01, 0x6258,
+    0xfa02, 0x64e2, 0x666b, 0x67dd, 0x6fc1, 0x6fef, 0x7422, 0x7438,
+    0x8a17, 0x9438, 0x5451, 0x5606, 0x5766, 0x5f48, 0x619a, 0x6b4e,
+    0x7058, 0x70ad, 0x7dbb, 0x8a95, 0x596a, 0x812b, 0x63a2, 0x7708,
+    0x803d, 0x8caa, 0x5854, 0x642d, 0x69bb, 0x5b95, 0x5e11, 0x6e6f,
+    0xfa03, 0x8569, 0x514c, 0x53f0, 0x592a, 0x6020, 0x614b, 0x6b86,
+    0x6c70, 0x6cf0, 0x7b1e, 0x80ce, 0x82d4, 0x8dc6, 0x90b0, 0x98b1,
+    0xfa04, 0x64c7, 0x6fa4, 0x6491, 0x6504, 0x514e, 0x5410, 0x571f,
+    0x8a0e, 0x615f, 0x6876, 0xfa05, 0x75db, 0x7b52, 0x7d71, 0x901a,
+    0x5806, 0x69cc, 0x817f, 0x892a, 0x9000, 0x9839, 0x5078, 0x5957,
+    0x59ac, 0x6295, 0x900f, 0x9b2a, 0x615d, 0x7279, 0x95d6, 0x5761,
+    0x5a46, 0x5df4, 0x628a, 0x64ad, 0x64fa, 0x6777, 0x6ce2, 0x6d3e,
+    0x722c, 0x7436, 0x7834, 0x7f77, 0x82ad, 0x8ddb, 0x9817, 0x5224,
+    0x5742, 0x677f, 0x7248, 0x74e3, 0x8ca9, 0x8fa6, 0x9211, 0x003f,
+    /* lead byte f7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x962a, 0x516b, 0x53ed, 0x634c, 0x4f69, 0x5504, 0x6096,
+    0x6557, 0x6c9b, 0x6d7f, 0x724c, 0x72fd, 0x7a17, 0x8987, 0x8c9d,
+    0x5f6d, 0x6f8e, 0x70f9, 0x81a8, 0x610e, 0x4fbf, 0x504f, 0x6241,
+    0x7247, 0x7bc7, 0x7de8, 0x7fe9, 0x904d, 0x97ad, 0x9a19, 0x8cb6,
+    0x576a, 0x5e73, 0x67b0, 0x840d, 0x8a55, 0x5420, 0x5b16, 0x5e63,
+    0x5ee2, 0x5f0a, 0x6583, 0x80ba, 0x853d, 0x9589, 0x965b, 0x4f48,
+    0x5305, 0x530d, 0x530f, 0x5486, 0x54fa, 0x5703, 0x5e03, 0x6016,
+    0x629b, 0x62b1, 0x6355, 0xfa06, 0x6ce1, 0x6d66, 0x75b1, 0x7832,
+    0x80de, 0x812f, 0x82de, 0x8461, 0x84b2, 0x888d, 0x8912, 0x900b,
+    0x92ea, 0x98fd, 0x9b91, 0x5e45, 0x66b4, 0x66dd, 0x7011, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7206, 0xfa07, 0x4ff5, 0x527d, 0x5f6a, 0x6153, 0x6753,
+    0x6a19, 0x6f02, 0x74e2, 0x7968, 0x8868, 0x8c79, 0x98c7, 0x98c4,
+    0x9a43, 0x54c1, 0x7a1f, 0x6953, 0x8af7, 0x8c4a, 0x98a8, 0x99ae,
+    0x5f7c, 0x62ab, 0x75b2, 0x76ae, 0x88ab, 0x907f, 0x9642, 0x5339,
+    0x5f3c, 0x5fc5, 0x6ccc, 0x73cc, 0x7562, 0x758b, 0x7b46, 0x82fe,
+    0x999d, 0x4e4f, 0x903c, 0x4e0b, 0x4f55, 0x53a6, 0x590f, 0x5ec8,
+    0x6630, 0x6cb3, 0x7455, 0x8377, 0x8766, 0x8cc0, 0x9050, 0x971e,
+    0x9c15, 0x58d1, 0x5b78, 0x8650, 0x8b14, 0x9db4, 0x5bd2, 0x6068,
+    0x608d, 0x65f1, 0x6c57, 0x6f22, 0x6fa3, 0x701a, 0x7f55, 0x7ff0,
+    0x9591, 0x9592, 0x9650, 0x97d3, 0x5272, 0x8f44, 0x51fd, 0x542b,
+    0x54b8, 0x5563, 0x558a, 0x6abb, 0x6db5, 0x7dd8, 0x8266, 0x929c,
+    0x9677, 0x9e79, 0x5408, 0x54c8, 0x76d2, 0x86e4, 0x95a4, 0x95d4,
+    0x965c, 0x4ea2, 0x4f09, 0x59ee, 0x5ae6, 0x5df7, 0x6052, 0x6297,
+    0x676d, 0x6841, 0x6c86, 0x6e2f, 0x7f38, 0x809b, 0x822a, 0x003f,
+    /* lead byte f8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xfa08, 0xfa09, 0x9805, 0x4ea5, 0x5055, 0x54b3, 0x5793,
+    0x595a, 0x5b69, 0x5bb3, 0x61c8, 0x6977, 0x6d77, 0x7023, 0x87f9,
+    0x89e3, 0x8a72, 0x8ae7, 0x9082, 0x99ed, 0x9ab8, 0x52be, 0x6838,
+    0x5016, 0x5e78, 0x674f, 0x8347, 0x884c, 0x4eab, 0x5411, 0x56ae,
+    0x73e6, 0x9115, 0x97ff, 0x9909, 0x9957, 0x9999, 0x5653, 0x589f,
+    0x865b, 0x8a31, 0x61b2, 0x6af6, 0x737b, 0x8ed2, 0x6b47, 0x96aa,
+    0x9a57, 0x5955, 0x7200, 0x8d6b, 0x9769, 0x4fd4, 0x5cf4, 0x5f26,
+    0x61f8, 0x665b, 0x6ceb, 0x70ab, 0x7384, 0x73b9, 0x73fe, 0x7729,
+    0x774d, 0x7d43, 0x7d62, 0x7e23, 0x8237, 0x8852, 0xfa0a, 0x8ce2,
+    0x9249, 0x986f, 0x5b51, 0x7a74, 0x8840, 0x9801, 0x5acc, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x4fe0, 0x5354, 0x593e, 0x5cfd, 0x633e, 0x6d79, 0x72f9,
+    0x8105, 0x8107, 0x83a2, 0x92cf, 0x9830, 0x4ea8, 0x5144, 0x5211,
+    0x578b, 0x5f62, 0x6cc2, 0x6ece, 0x7005, 0x7050, 0x70af, 0x7192,
+    0x73e9, 0x7469, 0x834a, 0x87a2, 0x8861, 0x9008, 0x90a2, 0x93a3,
+    0x99a8, 0x516e, 0x5f57, 0x60e0, 0x6167, 0x66b3, 0x8559, 0x8e4a,
+    0x91af, 0x978b, 0x4e4e, 0x4e92, 0x547c, 0x58d5, 0x58fa, 0x597d,
+    0x5cb5, 0x5f27, 0x6236, 0x6248, 0x660a, 0x6667, 0x6beb, 0x6d69,
+    0x6dcf, 0x6e56, 0x6ef8, 0x6f94, 0x6fe0, 0x6fe9, 0x705d, 0x72d0,
+    0x7425, 0x745a, 0x74e0, 0x7693, 0x795c, 0x7cca, 0x7e1e, 0x80e1,
+    0x82a6, 0x846b, 0x84bf, 0x864e, 0x865f, 0x8774, 0x8b77, 0x8c6a,
+    0x93ac, 0x9800, 0x9865, 0x60d1, 0x6216, 0x9177, 0x5a5a, 0x660f,
+    0x6df7, 0x6e3e, 0x743f, 0x9b42, 0x5ffd, 0x60da, 0x7b0f, 0x54c4,
+    0x5f18, 0x6c5e, 0x6cd3, 0x6d2a, 0x70d8, 0x7d05, 0x8679, 0x8a0c,
+    0x9d3b, 0x5316, 0x548c, 0x5b05, 0x6a3a, 0x706b, 0x7575, 0x003f,
+    /* lead byte f9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x798d, 0x79be, 0x82b1, 0x83ef, 0x8a71, 0x8b41, 0x8ca8,
+    0x9774, 0xfa0b, 0x64f4, 0x652b, 0x78ba, 0x78bb, 0x7a6b, 0x4e38,
+    0x559a, 0x5950, 0x5ba6, 0x5e7b, 0x60a3, 0x63db, 0x6b61, 0x6665,
+    0x6853, 0x6e19, 0x7165, 0x74b0, 0x7d08, 0x9084, 0x9a69, 0x9c25,
+    0x6d3b, 0x6ed1, 0x733e, 0x8c41, 0x95ca, 0x51f0, 0x5e4c, 0x5fa8,
+    0x604d, 0x60f6, 0x6130, 0x614c, 0x6643, 0x6644, 0x69a5, 0x6cc1,
+    0x6e5f, 0x6ec9, 0x6f62, 0x714c, 0x749c, 0x7687, 0x7bc1, 0x7c27,
+    0x8352, 0x8757, 0x9051, 0x968d, 0x9ec3, 0x532f, 0x56de, 0x5efb,
+    0x5f8a, 0x6062, 0x6094, 0x61f7, 0x6666, 0x6703, 0x6a9c, 0x6dee,
+    0x6fae, 0x7070, 0x736a, 0x7e6a, 0x81be, 0x8334, 0x86d4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8aa8, 0x8cc4, 0x5283, 0x7372, 0x5b96, 0x6a6b, 0x9404,
+    0x54ee, 0x5686, 0x5b5d, 0x6548, 0x6585, 0x66c9, 0x689f, 0x6d8d,
+    0x6dc6, 0x723b, 0x80b4, 0x9175, 0x9a4d, 0x4faf, 0x5019, 0x539a,
+    0x540e, 0x543c, 0x5589, 0x55c5, 0x5e3f, 0x5f8c, 0x673d, 0x7166,
+    0x73dd, 0x9005, 0x52db, 0x52f3, 0x5864, 0x58ce, 0x7104, 0x718f,
+    0x71fb, 0x85b0, 0x8a13, 0x6688, 0x85a8, 0x55a7, 0x6684, 0x714a,
+    0x8431, 0x5349, 0x5599, 0x6bc1, 0x5f59, 0x5fbd, 0x63ee, 0x6689,
+    0x7147, 0x8af1, 0x8f1d, 0x9ebe, 0x4f11, 0x643a, 0x70cb, 0x7566,
+    0x8667, 0x6064, 0x8b4e, 0x9df8, 0x5147, 0x51f6, 0x5308, 0x6d36,
+    0x80f8, 0x9ed1, 0x6615, 0x6b23, 0x7098, 0x75d5, 0x5403, 0x5c79,
+    0x7d07, 0x8a16, 0x6b20, 0x6b3d, 0x6b46, 0x5438, 0x6070, 0x6d3d,
+    0x7fd5, 0x8208, 0x50d6, 0x51de, 0x559c, 0x566b, 0x56cd, 0x59ec,
+    0x5b09, 0x5e0c, 0x6199, 0x6198, 0x6231, 0x665e, 0x66e6, 0x7199,
+    0x71b9, 0x71ba, 0x72a7, 0x79a7, 0x7a00, 0x7fb2, 0x8a70, 0x003f
+};
+
+static const unsigned char cp2uni_leadbytes[256] =
+{
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04,
+    0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c,
+    0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14,
+    0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c,
+    0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24,
+    0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c,
+    0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34,
+    0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c,
+    0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44,
+    0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c,
+    0x4d, 0x4e, 0x4f, 0x50, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x00,
+    0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e,
+    0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66,
+    0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e,
+    0x6f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned short uni2cp_low[39168] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x003f, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0080, 0x0081, 0x0082, 0x0083, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0020, 0xd9ae, 0x0063, 0x004c, 0xd9b4, 0x0059, 0x007c, 0xd967,
+    0xd937, 0x0063, 0xdca3, 0xd946, 0x003f, 0xd939, 0x0072, 0xd93a,
+    0xd956, 0xd94e, 0xdd99, 0xdd9a, 0xd9a5, 0xdb7c, 0xd9d2, 0xd934,
+    0xd9ac, 0xdd98, 0xdcac, 0xd947, 0xdcf9, 0xdcf6, 0xdcfa, 0xd9af,
+    0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0xdca1, 0x0043,
+    0x0045, 0x0045, 0x0045, 0x0045, 0x0049, 0x0049, 0x0049, 0x0049,
+    0xdca2, 0x004e, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0xd94f,
+    0xdcaa, 0x0055, 0x0055, 0x0055, 0x0055, 0x0059, 0xdcad, 0xdd3c,
+    0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0xdd31, 0x0063,
+    0x0065, 0x0065, 0x0065, 0x0065, 0x0069, 0x0069, 0x0069, 0x0069,
+    0xdd33, 0x006e, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0xd950,
+    0xdd3a, 0x0075, 0x0075, 0x0075, 0x0075, 0x0079, 0xdd3d, 0x0079,
+    /* 0x0100 .. 0x01ff */
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0043, 0x0063,
+    0x0043, 0x0063, 0x0043, 0x0063, 0x0043, 0x0063, 0x0044, 0x0064,
+    0xdca2, 0xdd32, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065,
+    0x0045, 0x0065, 0x0045, 0x0065, 0x0047, 0x0067, 0x0047, 0x0067,
+    0x0047, 0x0067, 0x0047, 0x0067, 0x0048, 0x0068, 0xdca4, 0xdd34,
+    0x0049, 0x0069, 0x0049, 0x0069, 0x0049, 0x0069, 0x0049, 0x0069,
+    0x0049, 0xdd35, 0xdca6, 0xdd36, 0x004a, 0x006a, 0x004b, 0x006b,
+    0xdd37, 0x004c, 0x006c, 0x004c, 0x006c, 0x004c, 0x006c, 0xdca8,
+    0xdd38, 0xdca9, 0xdd39, 0x004e, 0x006e, 0x004e, 0x006e, 0x004e,
+    0x006e, 0xdd40, 0xdcaf, 0xdd3f, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0xdcab, 0xdd3b, 0x0052, 0x0072, 0x0052, 0x0072,
+    0x0052, 0x0072, 0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073,
+    0x0053, 0x0073, 0x0054, 0x0074, 0x0054, 0x0074, 0xdcae, 0xdd3e,
+    0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0055, 0x0075, 0x0055, 0x0075, 0x0057, 0x0077, 0x0059, 0x0079,
+    0x0059, 0x005a, 0x007a, 0x005a, 0x007a, 0x005a, 0x007a, 0x0073,
+    0x0062, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdca2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0045, 0x0046, 0x0066, 0x003f, 0x003f, 0x003f, 0x003f, 0x0049,
+    0x003f, 0x003f, 0x006c, 0x003f, 0x003f, 0x003f, 0x003f, 0x004f,
+    0x004f, 0x006f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x0074, 0x003f, 0x003f, 0x0054, 0x0055,
+    0x0075, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x007a, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdba2, 0x003f, 0x003f, 0x0021, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0041, 0x0061, 0x0049,
+    0x0069, 0x004f, 0x006f, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055,
+    0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x003f, 0x0041, 0x0061,
+    0x0041, 0x0061, 0xdca1, 0xdd31, 0x0047, 0x0067, 0x0047, 0x0067,
+    0x004b, 0x006b, 0x004f, 0x006f, 0x004f, 0x006f, 0x003f, 0x003f,
+    0x006a, 0x003f, 0x003f, 0x003f, 0x0047, 0x0067, 0x003f, 0x003f,
+    0x004e, 0x006e, 0x0041, 0x0061, 0xdca1, 0xdd31, 0xdcaa, 0xdd3a,
+    /* 0x0200 .. 0x02ff */
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0045, 0x0065, 0x0045, 0x0065,
+    0x0049, 0x0069, 0x0049, 0x0069, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x0052, 0x0072, 0x0052, 0x0072, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0053, 0x0073, 0x0054, 0x0074, 0x003f, 0x003f, 0x0048, 0x0068,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0041, 0x0061,
+    0x0045, 0x0065, 0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x0059, 0x0079, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0067, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0068, 0x003f, 0x006a, 0x0072, 0x003f, 0x003f, 0x003f, 0x0077,
+    0x0079, 0xd9a5, 0xd9a9, 0xd93e, 0xd93f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x005e, 0x003f, 0x005e, 0xd9a7,
+    0x0027, 0xd93a, 0xd9a5, 0x0060, 0x003f, 0x005f, 0x003f, 0x003f,
+    0xd9b0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd9a8, 0xd9ab, 0xd9aa, 0xd9ad, 0x007e, 0xd9a9, 0x003f, 0x003f,
+    0x003f, 0x006c, 0x0073, 0x0078, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x0300 .. 0x03ff */
+    0x0060, 0xd9a5, 0x005e, 0x007e, 0xd93a, 0xd93a, 0xd9a8, 0xd9ab,
+    0xd937, 0x003f, 0xd9aa, 0xd9a9, 0xd9a7, 0x003f, 0x0022, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9ac,
+    0xd9ad, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x005f, 0x005f, 0x005f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0060, 0xd9a5, 0x003f, 0x003f, 0xd937, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd9a5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003b, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd9a5, 0xd937, 0xdb51, 0xd934,
+    0xdb55, 0xdb57, 0xdb59, 0x003f, 0xdb5f, 0x003f, 0xdb64, 0xdb68,
+    0xdb79, 0xdb51, 0xdb52, 0xdb53, 0xdb54, 0xdb55, 0xdb56, 0xdb57,
+    0xdb58, 0xdb59, 0xdb5a, 0xdb5b, 0xdb5c, 0xdb5d, 0xdb5e, 0xdb5f,
+    0xdb60, 0xdb61, 0x003f, 0xdb62, 0xdb63, 0xdb64, 0xdb65, 0xdb66,
+    0xdb67, 0xdb68, 0xdb59, 0xdb64, 0xdb71, 0xdb75, 0xdb77, 0xdb79,
+    0xdb96, 0xdb71, 0xdb72, 0xdb73, 0xdb74, 0xdb75, 0xdb76, 0xdb77,
+    0xdb78, 0xdb79, 0xdb7a, 0xdb7b, 0xdb7c, 0xdb7d, 0xdb7e, 0xdb91,
+    0xdb92, 0xdb93, 0x003f, 0xdb94, 0xdb95, 0xdb96, 0xdb97, 0xdb98,
+    0xdb99, 0xdb9a, 0xdb79, 0xdb96, 0xdb91, 0xdb96, 0xdb9a, 0x003f,
+    0xdb72, 0xdb78, 0xdb64, 0xdb64, 0xdb64, 0xdb97, 0xdb92, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdb7a, 0xdb93, 0x003f, 0x003f, 0xdb58, 0xdb75, 0x003f, 0x003f,
+    0x003f, 0xdb62, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x0400 .. 0x04ff */
+    0xdea6, 0xdea7, 0x003f, 0xdea4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdeac, 0xdeaa, 0xdeb5, 0x003f,
+    0xdea1, 0xdea2, 0xdea3, 0xdea4, 0xdea5, 0xdea6, 0xdea8, 0xdea9,
+    0xdeaa, 0xdeab, 0xdeac, 0xdead, 0xdeae, 0xdeaf, 0xdeb0, 0xdeb1,
+    0xdeb2, 0xdeb3, 0xdeb4, 0xdeb5, 0xdeb6, 0xdeb7, 0xdeb8, 0xdeb9,
+    0xdeba, 0xdebb, 0xdebc, 0xdebd, 0xdebe, 0xdebf, 0xdec0, 0xdec1,
+    0xded1, 0xded2, 0xded3, 0xded4, 0xded5, 0xded6, 0xded8, 0xded9,
+    0xdeda, 0xdedb, 0xdedc, 0xdedd, 0xdede, 0xdedf, 0xdee0, 0xdee1,
+    0xdee2, 0xdee3, 0xdee4, 0xdee5, 0xdee6, 0xdee7, 0xdee8, 0xdee9,
+    0xdeea, 0xdeeb, 0xdeec, 0xdeed, 0xdeee, 0xdeef, 0xdef0, 0xdef1,
+    0xded6, 0xded7, 0x003f, 0xded4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdedc, 0xdeda, 0xdee5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdea8, 0xded8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdea1, 0xded1, 0xdea1, 0xded1, 0x003f, 0x003f, 0xdea6, 0xded6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdea8, 0xded8, 0xdea9, 0xded9,
+    0x003f, 0x003f, 0xdeaa, 0xdeda, 0xdeaa, 0xdeda, 0xdeb0, 0xdee0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdebf, 0xdeef, 0xdeb5, 0xdee5,
+    0xdeb5, 0xdee5, 0xdeb5, 0xdee5, 0xdeb9, 0xdee9, 0x003f, 0x003f,
+    0xdebd, 0xdeed, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x1d00 .. 0x1dff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x0041, 0xdca1, 0x0042, 0x003f,
+    0x0044, 0x0045, 0x003f, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b,
+    0x004c, 0x004d, 0x004e, 0x003f, 0x004f, 0x003f, 0x0050, 0x0052,
+    0x0054, 0x0055, 0x0057, 0x0061, 0x003f, 0x003f, 0x003f, 0x0062,
+    0x0064, 0x0065, 0x003f, 0x003f, 0x003f, 0x0067, 0x003f, 0x006b,
+    0x006d, 0xdd3f, 0x006f, 0x003f, 0x003f, 0x003f, 0x0070, 0x0074,
+    0x0075, 0x003f, 0x003f, 0x0076, 0x003f, 0xdb72, 0xdb73, 0xdb74,
+    0xdb97, 0xdb98, 0x0069, 0x0072, 0x0075, 0x0076, 0xdb72, 0xdb73,
+    0xdb93, 0xdb97, 0xdb98, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdedf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x0063, 0x003f, 0xdd33, 0x003f,
+    0x0066, 0x003f, 0x0067, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0074, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x007a, 0x003f, 0x003f, 0x003f, 0xdb78,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x1e00 .. 0x1eff */
+    0x0041, 0x0061, 0x0042, 0x0062, 0x0042, 0x0062, 0x0042, 0x0062,
+    0x0043, 0x0063, 0x0044, 0x0064, 0x0044, 0x0064, 0x0044, 0x0064,
+    0x0044, 0x0064, 0x0044, 0x0064, 0x0045, 0x0065, 0x0045, 0x0065,
+    0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, 0x0046, 0x0066,
+    0x0047, 0x0067, 0x0048, 0x0068, 0x0048, 0x0068, 0x0048, 0x0068,
+    0x0048, 0x0068, 0x0048, 0x0068, 0x0049, 0x0069, 0x0049, 0x0069,
+    0x004b, 0x006b, 0x004b, 0x006b, 0x004b, 0x006b, 0x004c, 0x006c,
+    0x004c, 0x006c, 0x004c, 0x006c, 0x004c, 0x006c, 0x004d, 0x006d,
+    0x004d, 0x006d, 0x004d, 0x006d, 0x004e, 0x006e, 0x004e, 0x006e,
+    0x004e, 0x006e, 0x004e, 0x006e, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x004f, 0x006f, 0x0050, 0x0070, 0x0050, 0x0070,
+    0x0052, 0x0072, 0x0052, 0x0072, 0x0052, 0x0072, 0x0052, 0x0072,
+    0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073,
+    0x0053, 0x0073, 0x0054, 0x0074, 0x0054, 0x0074, 0x0054, 0x0074,
+    0x0054, 0x0074, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0055, 0x0075, 0x0055, 0x0075, 0x0056, 0x0076, 0x0056, 0x0076,
+    0x0057, 0x0077, 0x0057, 0x0077, 0x0057, 0x0077, 0x0057, 0x0077,
+    0x0057, 0x0077, 0x0058, 0x0078, 0x0058, 0x0078, 0x0059, 0x0079,
+    0x005a, 0x007a, 0x005a, 0x007a, 0x005a, 0x007a, 0x0068, 0x0074,
+    0x0077, 0x0079, 0x003f, 0x0073, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061,
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061,
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061,
+    0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065,
+    0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065,
+    0x0049, 0x0069, 0x0049, 0x0069, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x004f, 0x006f, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0055, 0x0075, 0x0059, 0x0079, 0x0059, 0x0079, 0x0059, 0x0079,
+    0x0059, 0x0079, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x1f00 .. 0x1fff */
+    0xdb71, 0xdb71, 0xdb71, 0xdb71, 0xdb71, 0xdb71, 0xdb71, 0xdb71,
+    0xdb51, 0xdb51, 0xdb51, 0xdb51, 0xdb51, 0xdb51, 0xdb51, 0xdb51,
+    0xdb75, 0xdb75, 0xdb75, 0xdb75, 0xdb75, 0xdb75, 0x003f, 0x003f,
+    0xdb55, 0xdb55, 0xdb55, 0xdb55, 0xdb55, 0xdb55, 0x003f, 0x003f,
+    0xdb77, 0xdb77, 0xdb77, 0xdb77, 0xdb77, 0xdb77, 0xdb77, 0xdb77,
+    0xdb57, 0xdb57, 0xdb57, 0xdb57, 0xdb57, 0xdb57, 0xdb57, 0xdb57,
+    0xdb79, 0xdb79, 0xdb79, 0xdb79, 0xdb79, 0xdb79, 0xdb79, 0xdb79,
+    0xdb59, 0xdb59, 0xdb59, 0xdb59, 0xdb59, 0xdb59, 0xdb59, 0xdb59,
+    0xdb91, 0xdb91, 0xdb91, 0xdb91, 0xdb91, 0xdb91, 0x003f, 0x003f,
+    0xdb5f, 0xdb5f, 0xdb5f, 0xdb5f, 0xdb5f, 0xdb5f, 0x003f, 0x003f,
+    0xdb96, 0xdb96, 0xdb96, 0xdb96, 0xdb96, 0xdb96, 0xdb96, 0xdb96,
+    0x003f, 0xdb64, 0x003f, 0xdb64, 0x003f, 0xdb64, 0x003f, 0xdb64,
+    0xdb9a, 0xdb9a, 0xdb9a, 0xdb9a, 0xdb9a, 0xdb9a, 0xdb9a, 0xdb9a,
+    0xdb68, 0xdb68, 0xdb68, 0xdb68, 0xdb68, 0xdb68, 0xdb68, 0xdb68,
+    0xdb71, 0xdb71, 0xdb75, 0xdb75, 0xdb77, 0xdb77, 0xdb79, 0xdb79,
+    0xdb91, 0xdb91, 0xdb96, 0xdb96, 0xdb9a, 0xdb9a, 0x003f, 0x003f,
+    0xdb71, 0xdb71, 0xdb71, 0xdb71, 0xdb71, 0xdb71, 0xdb71, 0xdb71,
+    0xdb51, 0xdb51, 0xdb51, 0xdb51, 0xdb51, 0xdb51, 0xdb51, 0xdb51,
+    0xdb77, 0xdb77, 0xdb77, 0xdb77, 0xdb77, 0xdb77, 0xdb77, 0xdb77,
+    0xdb57, 0xdb57, 0xdb57, 0xdb57, 0xdb57, 0xdb57, 0xdb57, 0xdb57,
+    0xdb9a, 0xdb9a, 0xdb9a, 0xdb9a, 0xdb9a, 0xdb9a, 0xdb9a, 0xdb9a,
+    0xdb68, 0xdb68, 0xdb68, 0xdb68, 0xdb68, 0xdb68, 0xdb68, 0xdb68,
+    0xdb71, 0xdb71, 0xdb71, 0xdb71, 0xdb71, 0x003f, 0xdb71, 0xdb71,
+    0xdb51, 0xdb51, 0xdb51, 0xdb51, 0xdb51, 0x003f, 0xdb79, 0x003f,
+    0x003f, 0xd937, 0xdb77, 0xdb77, 0xdb77, 0x003f, 0xdb77, 0xdb77,
+    0xdb55, 0xdb55, 0xdb57, 0xdb57, 0xdb57, 0x003f, 0x003f, 0x003f,
+    0xdb79, 0xdb79, 0xdb79, 0xdb79, 0x003f, 0x003f, 0xdb79, 0xdb79,
+    0xdb59, 0xdb59, 0xdb59, 0xdb59, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdb96, 0xdb96, 0xdb96, 0xdb96, 0xdb93, 0xdb93, 0xdb96, 0xdb96,
+    0xdb64, 0xdb64, 0xdb64, 0xdb64, 0xdb61, 0xd937, 0xd937, 0x0060,
+    0x003f, 0x003f, 0xdb9a, 0xdb9a, 0xdb9a, 0x003f, 0xdb9a, 0xdb9a,
+    0xdb5f, 0xdb5f, 0xdb68, 0xdb68, 0xdb68, 0xd9a5, 0x003f, 0x003f,
+    /* 0x2000 .. 0x20ff */
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+    0x0020, 0x0020, 0x0020, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x002d, 0x002d, 0x003f, 0xd93a, 0xd93a, 0xd93a, 0x003f, 0x005f,
+    0xd93e, 0xd93f, 0x002c, 0xd93e, 0xd940, 0xd941, 0x002c, 0x003f,
+    0xd9d3, 0xd9d4, 0x003f, 0x003f, 0x002e, 0xd935, 0xd936, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0020,
+    0xd9b6, 0x003f, 0xd957, 0xd958, 0x003f, 0xd93e, 0x003f, 0x003f,
+    0x003f, 0xd944, 0xd945, 0xd968, 0x0021, 0x003f, 0xd93a, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x002f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0020,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd9aa, 0x0069, 0x003f, 0x003f, 0xdd9b, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x002b, 0x002d, 0x003d, 0x0028, 0x0029, 0xdd9c,
+    0x0030, 0xdd9d, 0xdd9e, 0xdd9f, 0xdda0, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x002b, 0x002d, 0x003d, 0x0028, 0x0029, 0x003f,
+    0x0061, 0x0065, 0x006f, 0x0078, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0063, 0x003f, 0x003f, 0x004c, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x005c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2100 .. 0x21ff */
+    0x003f, 0x003f, 0x0043, 0xd959, 0x003f, 0x003f, 0x003f, 0x0045,
+    0x003f, 0xd9b5, 0x0067, 0x0048, 0x0048, 0x0048, 0x0068, 0xdd34,
+    0x0049, 0x0049, 0x004c, 0xdc34, 0x003f, 0x004e, 0xd9e0, 0x003f,
+    0x0050, 0x0050, 0x0051, 0x0052, 0x0052, 0x0052, 0x003f, 0x003f,
+    0x003f, 0xd9e5, 0xd9e2, 0x003f, 0x005a, 0x003f, 0xdc69, 0x003f,
+    0x005a, 0x003f, 0x004b, 0xd95a, 0x0042, 0x0043, 0x0065, 0x0065,
+    0x0045, 0x0046, 0x003f, 0x004d, 0x006f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0069, 0x003f, 0x003f, 0xdb92, 0xdb73, 0xdb53, 0xdb60,
+    0xd9b2, 0x003f, 0x003f, 0x003f, 0x003f, 0x0044, 0x0064, 0x0065,
+    0x0069, 0x006a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdcf7, 0xdcf8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdcfb, 0xdcfc, 0xdcfd, 0xdcfe, 0x003f,
+    0xdb40, 0xdb41, 0xdb42, 0xdb43, 0xdb44, 0xdb45, 0xdb46, 0xdb47,
+    0xdb48, 0xdb49, 0x003f, 0x003f, 0x004c, 0x0043, 0x0044, 0x004d,
+    0xdb31, 0xdb32, 0xdb33, 0xdb34, 0xdb35, 0xdb36, 0xdb37, 0xdb38,
+    0xdb39, 0xdb3a, 0x003f, 0x003f, 0x006c, 0x0063, 0x0064, 0x006d,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd977, 0xd978, 0xd976, 0xd979, 0xd97a, 0xd9d5, 0xd9d8, 0xd9d6,
+    0xd9d9, 0xd9d7, 0xd977, 0xd976, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd97a, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9a2, 0xd9a1,
+    0x003f, 0x003f, 0xd9a1, 0x003f, 0xd9a2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2200 .. 0x22ff */
+    0xd9a3, 0x003f, 0xd963, 0xd9a4, 0xd9a4, 0xdcaa, 0x003f, 0xd964,
+    0xd996, 0xd996, 0x003f, 0xd997, 0xd997, 0x003f, 0x003f, 0xd9b3,
+    0x003f, 0xd9b2, 0x002d, 0xd94e, 0x003f, 0x002f, 0x003f, 0x002a,
+    0xd9aa, 0x003f, 0xd97e, 0x003f, 0x003f, 0xd992, 0xd954, 0x004c,
+    0xd960, 0x003f, 0x003f, 0x007c, 0x007c, 0xd93b, 0xd93b, 0xd99e,
+    0xd99f, 0xd99d, 0xd99c, 0xd994, 0xd995, 0x003f, 0xd9b1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd955, 0xd993, 0x003a, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd93d, 0xd991, 0x003f, 0x003f,
+    0x003f, 0xd93d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x007e, 0x007e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd966, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd951, 0xd965, 0xd965, 0xd965, 0xd952, 0xd953, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd97c, 0xd97d, 0x003f, 0x003f, 0x003c, 0x003e,
+    0xd952, 0xd953, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd99a, 0xd99b, 0xd99a, 0xd99b, 0xd998, 0xd999,
+    0xd998, 0xd999, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd9c1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd961, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd934, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2300 .. 0x23ff */
+    0x003f, 0x003f, 0x003f, 0x005e, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd962, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd944, 0xd945, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2400 .. 0x24ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdce7, 0xdce8, 0xdce9, 0xdcea, 0xdceb, 0xdcec, 0xdced, 0xdcee,
+    0xdcef, 0xdcf0, 0xdcf1, 0xdcf2, 0xdcf3, 0xdcf4, 0xdcf5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdd77, 0xdd78, 0xdd79, 0xdd7a,
+    0xdd7b, 0xdd7c, 0xdd7d, 0xdd7e, 0xdd91, 0xdd92, 0xdd93, 0xdd94,
+    0xdd95, 0xdd96, 0xdd97, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdd5d, 0xdd5e, 0xdd5f, 0xdd60,
+    0xdd61, 0xdd62, 0xdd63, 0xdd64, 0xdd65, 0xdd66, 0xdd67, 0xdd68,
+    0xdd69, 0xdd6a, 0xdd6b, 0xdd6c, 0xdd6d, 0xdd6e, 0xdd6f, 0xdd70,
+    0xdd71, 0xdd72, 0xdd73, 0xdd74, 0xdd75, 0xdd76, 0x0041, 0x0042,
+    0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a,
+    0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052,
+    0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a,
+    0xdccd, 0xdcce, 0xdccf, 0xdcd0, 0xdcd1, 0xdcd2, 0xdcd3, 0xdcd4,
+    0xdcd5, 0xdcd6, 0xdcd7, 0xdcd8, 0xdcd9, 0xdcda, 0xdcdb, 0xdcdc,
+    0xdcdd, 0xdcde, 0xdcdf, 0xdce0, 0xdce1, 0xdce2, 0xdce3, 0xdce4,
+    0xdce5, 0xdce6, 0x0030, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2500 .. 0x25ff */
+    0xdba1, 0xdbac, 0xdba2, 0xdbad, 0x002d, 0x002d, 0x007c, 0x007c,
+    0x002d, 0x002d, 0x007c, 0x007c, 0xdba3, 0xdbc8, 0xdbc7, 0xdbae,
+    0xdba4, 0xdbc2, 0xdbc1, 0xdbaf, 0xdba6, 0xdbc6, 0xdbc5, 0xdbb1,
+    0xdba5, 0xdbc4, 0xdbc3, 0xdbb0, 0xdba7, 0xdbbc, 0xdbc9, 0xdbca,
+    0xdbb7, 0xdbcb, 0xdbcc, 0xdbb2, 0xdba9, 0xdbbe, 0xdbcd, 0xdbce,
+    0xdbb9, 0xdbcf, 0xdbd0, 0xdbb4, 0xdba8, 0xdbd1, 0xdbd2, 0xdbb8,
+    0xdbbd, 0xdbd3, 0xdbd4, 0xdbb3, 0xdbaa, 0xdbd5, 0xdbd6, 0xdbba,
+    0xdbbf, 0xdbd7, 0xdbd8, 0xdbb5, 0xdbab, 0xdbd9, 0xdbda, 0xdbbb,
+    0xdbdb, 0xdbdc, 0xdbc0, 0xdbdd, 0xdbde, 0xdbdf, 0xdbe0, 0xdbe1,
+    0xdbe2, 0xdbe3, 0xdbe4, 0xdbb6, 0x002d, 0x002d, 0x007c, 0x007c,
+    0x003d, 0x007c, 0x002b, 0x002b, 0x002b, 0x003f, 0x003f, 0x003f,
+    0x004c, 0x004c, 0x004c, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b,
+    0x002b, 0x002b, 0x002b, 0x002b, 0x0054, 0x0054, 0x0054, 0x002b,
+    0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x002f, 0x003f, 0x0058, 0x002d, 0x007c, 0x002d, 0x007c,
+    0x002d, 0x007c, 0x002d, 0x007c, 0x002d, 0x007c, 0x002d, 0x007c,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd9c6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd971, 0xd970, 0x003f, 0xd9c3, 0xd9c7, 0xd9c8, 0xd9cb, 0xd9ca,
+    0xd9c9, 0xd9cc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd973, 0xd972, 0x003f, 0x003f, 0xd9ba, 0xd9b9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd975, 0xd974, 0x003f, 0x003f,
+    0xd9b8, 0xd9b7, 0x003f, 0x003f, 0x003f, 0x003f, 0xd96f, 0xd96e,
+    0xd9c2, 0x003f, 0x003f, 0xd96b, 0x003f, 0x003f, 0xd96d, 0xd96c,
+    0xd9c4, 0xd9c5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd96b,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2600 .. 0x26ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd96a, 0xd969, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9cf, 0xd9ce,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd9d0, 0x003f, 0xd9d1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd95f, 0x003f, 0xd95e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd9bc, 0xd9bd, 0x003f, 0xd9c0, 0xd9bb, 0xd9be, 0x003f, 0xd9bf,
+    0xd9cd, 0xd9db, 0xd9dc, 0x003f, 0xd9dd, 0xd9da, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2e00 .. 0x2eff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7bd,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2f00 .. 0x2fff */
+    0xf179, 0x003f, 0x003f, 0x003f, 0xf0e0, 0x003f, 0xf133, 0x003f,
+    0xf161, 0x003f, 0xf19f, 0xf732, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe4ef, 0xe5f4, 0x003f, 0xe9e2, 0x003f, 0x003f, 0xed38,
+    0xe964, 0x003f, 0x003f, 0x003f, 0xefd1, 0xe2a2, 0x003f, 0xf6cf,
+    0xea5d, 0x003f, 0x003f, 0xeb3a, 0xe4de, 0xe443, 0xf1ad, 0x003f,
+    0xf5bb, 0xebb3, 0x003f, 0xecb9, 0x003f, 0xeaa3, 0x003f, 0xe1ef,
+    0xe39b, 0xe0ee, 0xe05e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe2e1, 0x003f, 0x003f, 0x003f, 0xecfd, 0xe1fc, 0xf8c2, 0xec32,
+    0xf438, 0x003f, 0xe7fe, 0xe570, 0xe355, 0xe8b0, 0xe7e9, 0xf17d,
+    0xef68, 0xf055, 0xe7ca, 0xf9e2, 0xf43d, 0x003f, 0x003f, 0xe7ec,
+    0xe9ef, 0xe7be, 0xed3b, 0x003f, 0xec39, 0xf8fd, 0xf360, 0xe9ab,
+    0xf9a1, 0x003f, 0xf748, 0xed43, 0xefda, 0xe143, 0xf86c, 0xef3c,
+    0xe1fe, 0xef4f, 0xe098, 0xeae6, 0xefc4, 0xf2a3, 0xf7b5, 0x003f,
+    0x003f, 0xe8dc, 0xf7ab, 0xe7a9, 0xe7cd, 0xe7c3, 0xecc5, 0xeb44,
+    0xecc6, 0x003f, 0xf932, 0xf87b, 0xe731, 0xf3d3, 0xe847, 0x003f,
+    0xe9ae, 0x003f, 0xedcf, 0xefe2, 0xe665, 0xf14b, 0x003f, 0xf14c,
+    0xf0d3, 0xf0bf, 0xeced, 0xf1bb, 0xf448, 0xe2bf, 0xeb6f, 0xf54f,
+    0xf3c7, 0xe06d, 0xeae4, 0xf5ac, 0x003f, 0x003f, 0xf87c, 0xf84c,
+    0xf0fd, 0x003f, 0xe148, 0xe057, 0xedeb, 0xe1db, 0xe577, 0xecce,
+    0x003f, 0xf73f, 0xf275, 0xf3cb, 0xf37b, 0xecf3, 0xf4b3, 0xecf4,
+    0xf473, 0x003f, 0xf0e9, 0xf0b7, 0x003f, 0xe6ec, 0xe3d1, 0xf1fe,
+    0xe836, 0xe9bd, 0x003f, 0x003f, 0xefeb, 0xf57c, 0xea3a, 0xe79e,
+    0xf864, 0xf06f, 0x003f, 0xf0e5, 0xf87d, 0xf7a6, 0xea3b, 0xecdd,
+    0xec5f, 0xf855, 0xe739, 0xe1e9, 0xe1d4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe331, 0xede0, 0xf378, 0xe66d, 0xe673, 0xe77a, 0xe73b,
+    0xf96c, 0xeb38, 0xf9d9, 0x003f, 0x003f, 0xf333, 0xe1d5, 0xeb39,
+    0xea3c, 0xf34a, 0xf65d, 0xe6a3, 0xe2cf, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x3000 .. 0x30ff */
+    0xd931, 0xd932, 0xd933, 0xd938, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd944, 0xd945, 0xd946, 0xd947, 0xd948, 0xd949, 0xd94a, 0xd94b,
+    0xd94c, 0xd94d, 0x003f, 0xd97b, 0xd942, 0xd943, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x005b, 0x005d, 0x003f, 0xd940, 0xd941, 0x002c,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xed38, 0xf1a0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdda1, 0xdda2, 0xdda3, 0xdda4, 0xdda5, 0xdda6, 0xdda7,
+    0xdda8, 0xdda9, 0xddaa, 0xddab, 0xddac, 0xddad, 0xddae, 0xddaf,
+    0xddb0, 0xddb1, 0xddb2, 0xddb3, 0xddb4, 0xddb5, 0xddb6, 0xddb7,
+    0xddb8, 0xddb9, 0xddba, 0xddbb, 0xddbc, 0xddbd, 0xddbe, 0xddbf,
+    0xddc0, 0xddc1, 0xddc2, 0xddc3, 0xddc4, 0xddc5, 0xddc6, 0xddc7,
+    0xddc8, 0xddc9, 0xddca, 0xddcb, 0xddcc, 0xddcd, 0xddce, 0xddcf,
+    0xddd0, 0xddd1, 0xddd2, 0xddd3, 0xddd4, 0xddd5, 0xddd6, 0xddd7,
+    0xddd8, 0xddd9, 0xddda, 0xdddb, 0xdddc, 0xdddd, 0xddde, 0xdddf,
+    0xdde0, 0xdde1, 0xdde2, 0xdde3, 0xdde4, 0xdde5, 0xdde6, 0xdde7,
+    0xdde8, 0xdde9, 0xddea, 0xddeb, 0xddec, 0xdded, 0xddee, 0xddef,
+    0xddf0, 0xddf1, 0xddf2, 0xddf3, 0xdda6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xde31, 0xde32, 0xde33, 0xde34, 0xde35, 0xde36, 0xde37,
+    0xde38, 0xde39, 0xde3a, 0xde3b, 0xde3c, 0xde3d, 0xde3e, 0xde3f,
+    0xde40, 0xde41, 0xde42, 0xde43, 0xde44, 0xde45, 0xde46, 0xde47,
+    0xde48, 0xde49, 0xde4a, 0xde4b, 0xde4c, 0xde4d, 0xde4e, 0xde4f,
+    0xde50, 0xde51, 0xde52, 0xde53, 0xde54, 0xde55, 0xde56, 0xde57,
+    0xde58, 0xde59, 0xde5a, 0xde5b, 0xde5c, 0xde5d, 0xde5e, 0xde5f,
+    0xde60, 0xde61, 0xde62, 0xde63, 0xde64, 0xde65, 0xde66, 0xde67,
+    0xde68, 0xde69, 0xde6a, 0xde6b, 0xde6c, 0xde6d, 0xde6e, 0xde6f,
+    0xde70, 0xde71, 0xde72, 0xde73, 0xde74, 0xde75, 0xde76, 0xde77,
+    0xde78, 0xde79, 0xde7a, 0xde7b, 0xde7c, 0xde7d, 0xde7e, 0xde91,
+    0xde92, 0xde93, 0xde94, 0xde95, 0xde96, 0xde97, 0xde98, 0xde91,
+    0xde92, 0xde93, 0xde94, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x3100 .. 0x31ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8841, 0x8c41, 0x8444, 0x9041, 0x8446, 0x8447, 0x9441,
+    0x9841, 0x9c41, 0x844a, 0x844b, 0x844c, 0x844d, 0x844e, 0x844f,
+    0x8450, 0xa041, 0xa441, 0xa841, 0x8454, 0xac41, 0xb041, 0xb441,
+    0xb841, 0xbc41, 0xc041, 0xc441, 0xc841, 0xcc41, 0xd041, 0x8461,
+    0x8481, 0x84a1, 0x84c1, 0x84e1, 0x8541, 0x8561, 0x8581, 0x85a1,
+    0x85c1, 0x85e1, 0x8641, 0x8661, 0x8681, 0x86a1, 0x86c1, 0x86e1,
+    0x8741, 0x8761, 0x8781, 0x87a1, 0xdad4, 0xdad5, 0xdad6, 0xdad7,
+    0xdad8, 0xdad9, 0xdada, 0xdadb, 0xdadc, 0xdadd, 0xdade, 0xdadf,
+    0xdae0, 0xdae1, 0xdae2, 0xdae3, 0xdae4, 0xdae5, 0xdae6, 0xdae7,
+    0xdae8, 0xdae9, 0xdaea, 0xdaeb, 0xdaec, 0xdaed, 0xdaee, 0xdaef,
+    0xdaf0, 0xdaf1, 0xdaf2, 0xdaf3, 0xdaf4, 0xdaf5, 0xdaf6, 0xdaf7,
+    0xdaf8, 0xdaf9, 0xdafa, 0xdafb, 0xdafc, 0xdafd, 0xdafe, 0x003f,
+    0x003f, 0x003f, 0xf179, 0xf133, 0xeab2, 0xea5c, 0xeabe, 0xf3e9,
+    0xf7bb, 0xe0a3, 0xf0e0, 0xe940, 0xf2cb, 0xf548, 0xf432, 0xf161,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x3200 .. 0x32ff */
+    0xdd41, 0xdd42, 0xdd43, 0xdd44, 0xdd45, 0xdd46, 0xdd47, 0xdd48,
+    0xdd49, 0xdd4a, 0xdd4b, 0xdd4c, 0xdd4d, 0xdd4e, 0xdd4f, 0xdd50,
+    0xdd51, 0xdd52, 0xdd53, 0xdd54, 0xdd55, 0xdd56, 0xdd57, 0xdd58,
+    0xdd59, 0xdd5a, 0xdd5b, 0xdd5c, 0xd9df, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdcb1, 0xdcb2, 0xdcb3, 0xdcb4, 0xdcb5, 0xdcb6, 0xdcb7, 0xdcb8,
+    0xdcb9, 0xdcba, 0xdcbb, 0xdcbc, 0xdcbd, 0xdcbe, 0xdcbf, 0xdcc0,
+    0xdcc1, 0xdcc2, 0xdcc3, 0xdcc4, 0xdcc5, 0xdcc6, 0xdcc7, 0xdcc8,
+    0xdcc9, 0xdcca, 0xdccb, 0xdccc, 0x003f, 0x003f, 0x003f, 0xd9de,
+    0xf179, 0xf133, 0xeab2, 0xea5c, 0xeee9, 0xe6bf, 0xf662, 0xf732,
+    0xe29c, 0xed38, 0xf055, 0xf8fd, 0xec39, 0xe7ca, 0xe3d1, 0xf6cf,
+    0xf17d, 0xf3bb, 0xf095, 0xea74, 0xe7a3, 0xf6e5, 0xf23f, 0xf5e6,
+    0x003f, 0xe9fa, 0xe3fb, 0xe443, 0xf27a, 0xefd0, 0xf164, 0xf3bc,
+    0xf833, 0xf9cc, 0x003f, 0xf2e1, 0xeabe, 0xf3e9, 0xf7bb, 0xf3a7,
+    0xefd3, 0x003f, 0xf395, 0x003f, 0xe09a, 0xe37a, 0xf1c0, 0xf892,
+    0xeda8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xde32, 0xde34, 0xde36, 0xde38, 0xde3a, 0xde3b, 0xde3d, 0xde3f,
+    0xde41, 0xde43, 0xde45, 0xde47, 0xde49, 0xde4b, 0xde4d, 0xde4f,
+    0xde51, 0xde54, 0xde56, 0xde58, 0xde5a, 0xde5b, 0xde5c, 0xde5d,
+    0xde5e, 0xde5f, 0xde62, 0xde65, 0xde68, 0xde6b, 0xde6e, 0xde6f,
+    0xde70, 0xde71, 0xde72, 0xde74, 0xde76, 0xde78, 0xde79, 0xde7a,
+    0xde7b, 0xde7c, 0xde7d, 0xde91, 0xde92, 0xde93, 0xde94, 0x003f,
+    /* 0x3300 .. 0x33ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdc59, 0xdc5a, 0xdc5b, 0xdc5c, 0xdc5d, 0x003f, 0x003f, 0x003f,
+    0xdc4a, 0xdc4b, 0xdc6c, 0xdc6d, 0xdc6e, 0xdc46, 0xdc47, 0xdc48,
+    0xdc64, 0xdc65, 0xdc66, 0xdc67, 0xdc68, 0xdc31, 0xdc32, 0xdc33,
+    0xdc35, 0xdc3b, 0xdc3c, 0xdc3d, 0xdc3e, 0xdc3f, 0xdc40, 0xdc41,
+    0xdc42, 0xdc43, 0xdc44, 0xdc37, 0xdc38, 0xdc39, 0xdc3a, 0xdc4d,
+    0xdc4e, 0xdc75, 0xdc76, 0xdc77, 0xdc78, 0xdc71, 0xdc72, 0xdc73,
+    0xdc4f, 0xdc50, 0xdc51, 0xdc52, 0xdc53, 0xdc54, 0xdc55, 0xdc56,
+    0xdc57, 0xdc58, 0xdc5e, 0xdc5f, 0xdc60, 0xdc61, 0xdc62, 0xdc63,
+    0xdc6a, 0xdc6b, 0xd9e3, 0xdc7c, 0xdc36, 0xdc70, 0xdc91, 0xd9e1,
+    0xdc4c, 0xdc7d, 0xdc45, 0x003f, 0x003f, 0x003f, 0x003f, 0xdc49,
+    0xdc7a, 0x003f, 0x003f, 0xdc7b, 0x003f, 0x003f, 0xdc6f, 0x003f,
+    0xd9e4, 0x003f, 0x003f, 0xdc74, 0xdc7e, 0xdc79, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x4e00 .. 0x4eff */
+    0xf179, 0xf2cb, 0x003f, 0xf662, 0x003f, 0x003f, 0x003f, 0xe742,
+    0xf1db, 0xeab2, 0xeabe, 0xf7bb, 0x003f, 0xe996, 0x003f, 0x003f,
+    0x003f, 0xf5e4, 0x003f, 0x003f, 0xf4a6, 0xe9e0, 0xeba6, 0x003f,
+    0xe29a, 0xe940, 0x003f, 0x003f, 0x003f, 0x003f, 0xecaa, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3e9, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe1fa, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf93f, 0xe4a1, 0x003f, 0xf3ab, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeed1, 0xe43c, 0x003f, 0xe29b, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf3fd, 0x003f, 0xea4f, 0xf8ba, 0xf7b9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe262, 0x003f,
+    0xecab, 0xf0e0, 0x003f, 0x003f, 0x003f, 0xe29c, 0xe0f7, 0xeda5,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe071, 0x003f, 0xe55c, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf071, 0x003f, 0x003f, 0xe973, 0xeaad,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0eb, 0x003f,
+    0x003f, 0x003f, 0xe5af, 0x003f, 0x003f, 0x003f, 0xe697, 0x003f,
+    0xedf8, 0x003f, 0x003f, 0xea50, 0xf133, 0x003f, 0xefcd, 0x003f,
+    0xf037, 0xeff6, 0xf8bb, 0x003f, 0xeee9, 0xf2cc, 0x003f, 0x003f,
+    0xe376, 0x003f, 0x003f, 0xea51, 0x003f, 0x003f, 0xed3c, 0x003f,
+    0x003f, 0xe75c, 0xf7f1, 0x003f, 0xe26f, 0xf834, 0xee42, 0x003f,
+    0xf89d, 0x003f, 0x003f, 0xf84d, 0xe158, 0xf2cd, 0xe5d5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4a2, 0x003f,
+    0x003f, 0x003f, 0xf161, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xed37, 0xf162, 0x003f, 0x003f, 0xf641, 0x003f, 0x003f, 0xe29d,
+    0x003f, 0x003f, 0xe361, 0xe0bf, 0x003f, 0xf1a4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf1a8, 0xea52, 0xf672, 0xf1dc,
+    0xe997, 0xeb49, 0x003f, 0x003f, 0x003f, 0xe55e, 0x003f, 0xf545,
+    0x003f, 0x003f, 0x003f, 0xe4db, 0xe645, 0xf134, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xed76, 0x003f, 0xf3ea, 0x003f, 0x003f, 0x003f, 0xe0ec, 0xe0c0,
+    0x003f, 0x003f, 0x003f, 0xf194, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x4f00 .. 0x4fff */
+    0x003f, 0xe37a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf7f2, 0xf135, 0xe36f, 0x003f, 0xeeea, 0xe37b, 0xe961,
+    0xe8e9, 0xf9cc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8d7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe871, 0x003f, 0xe646, 0x003f,
+    0xecdf, 0x003f, 0xea53, 0x003f, 0xea54, 0xe031, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf27c, 0x003f, 0x003f, 0xe4a3, 0xf247,
+    0xf75f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf058, 0xf248, 0xf3ac,
+    0xf3a5, 0xefce, 0x003f, 0x003f, 0x003f, 0xf7bc, 0x003f, 0x003f,
+    0x003f, 0xedf9, 0xf17a, 0xe9d6, 0xf1c2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf735, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xedba,
+    0xe8d8, 0x003f, 0x003f, 0xe032, 0x003f, 0x003f, 0xe3cd, 0x003f,
+    0x003f, 0x003f, 0xf27d, 0x003f, 0x003f, 0x003f, 0xf17b, 0xea55,
+    0x003f, 0xece0, 0x003f, 0xe059, 0xf479, 0x003f, 0xe5ce, 0x003f,
+    0xf646, 0x003f, 0xe252, 0xe657, 0x003f, 0xecb4, 0x003f, 0xf3ad,
+    0x003f, 0xf072, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6c2, 0x003f,
+    0xf4a7, 0x003f, 0x003f, 0xe1ea, 0x003f, 0xf0ee, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7b2, 0xf9a5,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf665, 0xe5e2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf745,
+    0x003f, 0x003f, 0xe197, 0xf5b5, 0xed3d, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeeeb, 0xf3d5, 0x003f, 0x003f, 0x003f, 0xf34b, 0x003f,
+    0x003f, 0xefb5, 0x003f, 0xe159, 0xf865, 0x003f, 0x003f, 0xebd4,
+    0x003f, 0x003f, 0xe6d6, 0x003f, 0x003f, 0xe951, 0x003f, 0xea56,
+    0xf891, 0xece1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xebf3, 0xe998,
+    0x003f, 0xe29e, 0x003f, 0xe8c4, 0x003f, 0xf793, 0x003f, 0x003f,
+    0xe974, 0x003f, 0xedef, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x5000 .. 0x50ff */
+    0x003f, 0x003f, 0xe941, 0x003f, 0x003f, 0x003f, 0xe5d6, 0x003f,
+    0x003f, 0xf4da, 0x003f, 0xe0c1, 0x003f, 0xe8c3, 0x003f, 0x003f,
+    0x003f, 0xe7fa, 0xe4ee, 0x003f, 0x003f, 0x003f, 0xf848, 0x003f,
+    0x003f, 0xf9a6, 0xf0ef, 0x003f, 0xf536, 0x003f, 0xe15a, 0xf4a8,
+    0x003f, 0xf4db, 0x003f, 0xe8a7, 0xf647, 0x003f, 0xe2e6, 0xf394,
+    0xe0da, 0x003f, 0xeed2, 0xe6c3, 0xf692, 0xef6e, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xeda6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xede7, 0x003f, 0x003f, 0x003f, 0xe033,
+    0xe137, 0xf059, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf746,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf835, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf3ae, 0x003f, 0xf2ce, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0ed, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf640, 0xf2cf, 0xefcf, 0x003f,
+    0xf6de, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe263, 0x003f, 0x003f, 0x003f, 0x003f, 0xe999, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8a8, 0x003f, 0x003f,
+    0x003f, 0xe0f8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xeaa1, 0xe9e1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf5ca, 0xefb6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeeec, 0xf27e, 0x003f, 0xf4f0, 0x003f, 0xeabf,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe15b, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe351, 0x003f, 0x003f,
+    0x003f, 0xf562, 0xeb4a, 0x003f, 0x003f, 0x003f, 0x003f, 0xeac0,
+    0x003f, 0xe270, 0x003f, 0x003f, 0x003f, 0xe962, 0xf9ea, 0x003f,
+    0x003f, 0x003f, 0xe698, 0x003f, 0x003f, 0x003f, 0xf05a, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xef79, 0x003f, 0xecac,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf4d0, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe034, 0x003f, 0xe8f8, 0x003f, 0x003f, 0x003f, 0xea57,
+    /* 0x5100 .. 0x51ff */
+    0xf0f0, 0xf3d6, 0x003f, 0x003f, 0xede2, 0x003f, 0xe15c, 0x003f,
+    0x003f, 0xe0fb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf073, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeac1,
+    0x003f, 0xe67d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xefd0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf249, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5e3,
+    0x003f, 0x003f, 0xe3d3, 0x003f, 0xedf0, 0x003f, 0x003f, 0x003f,
+    0xef44, 0xf0c3, 0x003f, 0xf03a, 0xf89e, 0xf5f6, 0xf34c, 0xf9d4,
+    0xeb4b, 0xe253, 0x003f, 0xe34a, 0xf6ba, 0xe795, 0xf6cd, 0x003f,
+    0x003f, 0x003f, 0xed3e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe56f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe377, 0x003f, 0x003f, 0xf19f, 0x003f, 0xe43e,
+    0xf291, 0xe5d7, 0xf074, 0xf732, 0xe1eb, 0xe6bf, 0xf8b1, 0x003f,
+    0x003f, 0xe1ec, 0x003f, 0x003f, 0x003f, 0xe942, 0xe37c, 0xe29f,
+    0xf292, 0x003f, 0x003f, 0x003f, 0xe152, 0x003f, 0x003f, 0x003f,
+    0xe37d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xedf7, 0x003f,
+    0x003f, 0x003f, 0xf4fc, 0x003f, 0x003f, 0xf232, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe7b3, 0x003f, 0x003f, 0xe796, 0x003f, 0xefb7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe23e, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7a2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe793, 0x003f, 0xe55f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeda7, 0xe5d2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe639, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf532, 0x003f, 0xf3d7, 0x003f,
+    0x003f, 0xe5d8, 0x003f, 0xf34d, 0xe6d0, 0xe560, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe6cf, 0xf0ea, 0xf9eb, 0x003f,
+    0x003f, 0xe8ed, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf955, 0xe0c2, 0x003f, 0x003f, 0x003f, 0x003f, 0xf9d5, 0x003f,
+    0xf558, 0xef7a, 0xf5f3, 0x003f, 0x003f, 0xf7de, 0x003f, 0x003f,
+    /* 0x5200 .. 0x52ff */
+    0xe4ef, 0x003f, 0x003f, 0xf163, 0x003f, 0x003f, 0xe9c2, 0xf2b7,
+    0xeed4, 0x003f, 0xe05a, 0x003f, 0x003f, 0x003f, 0xe7fb, 0x003f,
+    0x003f, 0xf89f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe63a,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf59a, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf6f7, 0xe93c, 0x003f, 0x003f,
+    0x003f, 0xe6d7, 0xeaa2, 0x003f, 0x003f, 0x003f, 0xe24e, 0x003f,
+    0xe4f0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf334, 0xebec,
+    0xe2e7, 0xf4cb, 0xf1a9, 0xe04e, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf591, 0x003f, 0x003f, 0x003f, 0xf65e,
+    0x003f, 0x003f, 0xea9d, 0xe34b, 0xe5b7, 0xf293, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf538, 0x003f, 0xe99a, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe0a7, 0x003f, 0xe85e, 0x003f, 0x003f,
+    0x003f, 0xeb76, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf1a5, 0xf294, 0x003f, 0x003f, 0x003f, 0x003f, 0xe99b,
+    0x003f, 0x003f, 0xf7dc, 0x003f, 0x003f, 0xf4dc, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf794, 0x003f, 0xf59b,
+    0x003f, 0x003f, 0x003f, 0xf993, 0x003f, 0x003f, 0x003f, 0xe34c,
+    0xe8f9, 0xe6b1, 0x003f, 0x003f, 0x003f, 0xe0fc, 0x003f, 0x003f,
+    0x003f, 0xf335, 0xe0fd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe5f4, 0x003f, 0x003f, 0x003f, 0xe1ed,
+    0xe035, 0x003f, 0x003f, 0xe63b, 0xe352, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf34e, 0xe44d, 0xe134, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf846, 0x003f,
+    0x003f, 0xe15d, 0x003f, 0xe89c, 0x003f, 0xf65f, 0x003f, 0xefb8,
+    0x003f, 0xe797, 0x003f, 0x003f, 0x003f, 0xe15e, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe6cd, 0x003f, 0x003f, 0xe561, 0xefed, 0x003f,
+    0xe07b, 0xe7e2, 0x003f, 0xf9b2, 0x003f, 0xecad, 0xe65c, 0xe7b4,
+    0x003f, 0x003f, 0xeba7, 0xf263, 0xe353, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf9b3, 0x003f, 0xe5e4, 0x003f, 0x003f,
+    0xe2e8, 0x003f, 0xf1c3, 0xe342, 0x003f, 0x003f, 0xe2a0, 0xe838,
+    /* 0x5300 .. 0x53ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf760, 0x003f, 0x003f,
+    0xf9d6, 0x003f, 0x003f, 0x003f, 0x003f, 0xf761, 0x003f, 0xf762,
+    0xe963, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9e2, 0xf8f9, 0xe9c1,
+    0x003f, 0xecb5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf1dd, 0xe254, 0x003f, 0xe0a1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe9e3, 0x003f, 0x003f, 0x003f, 0x003f, 0xf96d,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf7af, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe49d,
+    0xe2a1, 0xed38, 0x003f, 0xf546, 0xf1a0, 0x003f, 0x003f, 0xecae,
+    0xeeed, 0xf9c1, 0xe872, 0x003f, 0x003f, 0xe743, 0x003f, 0x003f,
+    0x003f, 0xe9e4, 0xf391, 0xf693, 0xf892, 0x003f, 0x003f, 0xe3f5,
+    0x003f, 0x003f, 0xe85f, 0x003f, 0xe964, 0x003f, 0xe936, 0x003f,
+    0xf2bf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe25f, 0x003f,
+    0xeb69, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7d6,
+    0xf164, 0xf05b, 0x003f, 0x003f, 0xe04f, 0xe5b0, 0x003f, 0xe2e9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3ed, 0x003f, 0xe15f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xed9a, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xed7d, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe6d8, 0x003f, 0xf9a7, 0x003f, 0x003f, 0x003f, 0x003f, 0xf03b,
+    0xf642, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2f0, 0xf7bd, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xee96, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe0db, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf4d1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xefd1, 0xf4a9, 0xe370, 0xefd2, 0x003f, 0xe873, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xec62, 0x003f, 0xf632, 0xebf4,
+    0x003f, 0x003f, 0x003f, 0xe874, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeed5, 0xf5bf, 0xe2a2, 0xe1af, 0xe2a3, 0x003f, 0x003f,
+    0x003f, 0xe1b0, 0xf3fe, 0xe333, 0xebaf, 0xf733, 0x003f, 0xe036,
+    0xf6bb, 0xf47a, 0xea58, 0xefd3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xea59, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x5400 .. 0x54ff */
+    0x003f, 0x003f, 0x003f, 0xf9de, 0xe050, 0x003f, 0x003f, 0x003f,
+    0xf7ea, 0xe3ce, 0xf264, 0x003f, 0xe562, 0xe7a3, 0xf9a8, 0xe6d9,
+    0xf6ce, 0xf84e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe2d6, 0x003f, 0xe6f0, 0x003f, 0xf0e1,
+    0xf755, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe99c, 0x003f,
+    0x003f, 0xe9c3, 0x003f, 0xf7df, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xeeef, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf9e5, 0xf633, 0x003f, 0xe7fc, 0xf9a9, 0x003f, 0xeeee, 0x003f,
+    0x003f, 0x003f, 0xe5e5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf2d0, 0x003f, 0xe1b1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf6a2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf3b2, 0x003f, 0xf3b1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe1b2, 0x003f, 0xe83b, 0x003f, 0xe037, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xece2, 0xf8bc, 0xe7a4, 0x003f, 0x003f,
+    0xf24a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf763, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf8fa, 0x003f, 0xe2a4, 0x003f,
+    0xe99d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf673, 0x003f, 0x003f, 0x003f,
+    0xf1aa, 0x003f, 0x003f, 0xf431, 0xe271, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf836, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf7e0, 0x003f, 0x003f, 0x003f, 0x003f, 0xf166, 0x003f, 0x003f,
+    0xed7e, 0xf7a1, 0x003f, 0x003f, 0xf8ef, 0x003f, 0x003f, 0x003f,
+    0xf7eb, 0xf233, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf03c, 0x003f, 0x003f, 0x003f, 0xe038, 0x003f, 0x003f,
+    0xf59c, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1d6, 0xf998, 0x003f,
+    0x003f, 0x003f, 0xf559, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf764, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x5500 .. 0x55ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf736, 0x003f, 0xea5a, 0xf456,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6da, 0x003f,
+    0xe4d0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe755, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf076,
+    0x003f, 0xf4dd, 0x003f, 0x003f, 0x003f, 0xed6a, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf674, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf694, 0x003f, 0xeac2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7fd,
+    0x003f, 0x003f, 0x003f, 0xe198, 0x003f, 0x003f, 0xe4ba, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xed3f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf7e1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf336, 0x003f, 0x003f, 0x003f,
+    0xe0d3, 0x003f, 0x003f, 0x003f, 0xeb4c, 0x003f, 0xf55a, 0xe59c,
+    0x003f, 0xf9aa, 0xf7e2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf547, 0xf9c2, 0xf940, 0x003f, 0xf9ec, 0xe072, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf9bd,
+    0x003f, 0xf077, 0xeac3, 0xe3d2, 0xe272, 0x003f, 0xe4a4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf9ab, 0x003f, 0xeae0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf457, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeef0, 0x003f, 0xe37e, 0x003f, 0x003f, 0xf4aa,
+    0x003f, 0x003f, 0x003f, 0xea5b, 0xf648, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xebf5, 0xf3b3, 0x003f,
+    /* 0x5600 .. 0x56ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf6a3, 0x003f,
+    0x003f, 0xe039, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe2a5, 0x003f, 0x003f, 0xeac4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xebb0,
+    0x003f, 0x003f, 0xf34f, 0x003f, 0xf634, 0x003f, 0xecb6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf856, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe391, 0x003f, 0x003f, 0xf9ed, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe9c4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf999, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xee4f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xea3d, 0x003f, 0xf84f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xedf1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf1c4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe435, 0x003f, 0x003f, 0xf9ee, 0x003f, 0x003f,
+    0x003f, 0xf5b6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xebf6, 0xea5c, 0x003f, 0x003f, 0xf96e, 0x003f,
+    0xf167, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe1dd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe647, 0xe1b3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x5700 .. 0x57ff */
+    0x003f, 0x003f, 0x003f, 0xf765, 0xedd8, 0x003f, 0x003f, 0x003f,
+    0xe2ea, 0x003f, 0x003f, 0xe2d0, 0x003f, 0xf05c, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf03e, 0xf03d, 0x003f, 0x003f, 0xe4f1, 0x003f,
+    0xe4a5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf6cf,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf234, 0x003f, 0x003f, 0x003f, 0x003f, 0xe334, 0x003f, 0x003f,
+    0xf432, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe392, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf433, 0x003f, 0xf6f8, 0x003f, 0x003f, 0x003f, 0x003f, 0xe343,
+    0x003f, 0x003f, 0xe8a9, 0x003f, 0x003f, 0xe4bb, 0xe07c, 0x003f,
+    0xf3a6, 0xe0d5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf6e7, 0x003f, 0x003f, 0xe1de, 0x003f, 0xf6a4, 0x003f,
+    0x003f, 0x003f, 0xf750, 0x003f, 0x003f, 0x003f, 0xe4dd, 0x003f,
+    0xe160, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2a6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf695, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xebf7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe4dc, 0x003f, 0x003f, 0xf8a0, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf837, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf0d9, 0x003f, 0xe2a7, 0xf03f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xed91, 0x003f, 0x003f, 0x003f, 0xefb9,
+    0xf3d8, 0x003f, 0x003f, 0xe768, 0x003f, 0x003f, 0xeb94, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xee44,
+    0xe99e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf4f1, 0x003f, 0x003f, 0x003f, 0xecd0, 0x003f, 0x003f, 0xf49d,
+    0x003f, 0xe8c6, 0xe393, 0x003f, 0xe394, 0x003f, 0x003f, 0x003f,
+    /* 0x5800 .. 0x58ff */
+    0xe2dc, 0x003f, 0xe4d1, 0x003f, 0x003f, 0xe141, 0xf6d8, 0x003f,
+    0xe0a8, 0xf0bc, 0xed4e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf56c, 0x003f,
+    0x003f, 0xe952, 0x003f, 0x003f, 0xf337, 0x003f, 0x003f, 0xee50,
+    0x003f, 0x003f, 0xe07d, 0x003f, 0x003f, 0x003f, 0x003f, 0xef7b,
+    0xede8, 0xe953, 0x003f, 0x003f, 0xf1de, 0xe4f2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe199, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe264, 0xeeab, 0x003f, 0x003f, 0x003f, 0xe0c3,
+    0x003f, 0xebb1, 0x003f, 0x003f, 0xf6b2, 0x003f, 0x003f, 0xe4f3,
+    0xe4d2, 0x003f, 0xf5c0, 0x003f, 0x003f, 0x003f, 0xeadd, 0x003f,
+    0x003f, 0xf295, 0xeef1, 0x003f, 0xf9b4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf458, 0x003f, 0x003f,
+    0x003f, 0xf4d2, 0x003f, 0x003f, 0xf296, 0x003f, 0xec63, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe161, 0x003f, 0xeaea, 0x003f, 0x003f,
+    0x003f, 0xefba, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe7d7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf5cd, 0x003f, 0xf3f2, 0xf857,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe7f8, 0xe552, 0x003f, 0x003f, 0x003f, 0x003f, 0xf675, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe9c5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeef2, 0xf1df, 0x003f, 0x003f, 0xe05b, 0x003f,
+    0x003f, 0xe8fa, 0x003f, 0x003f, 0x003f, 0xef45, 0x003f, 0xe4a6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf9b5, 0x003f,
+    0x003f, 0xf7c9, 0x003f, 0xed72, 0x003f, 0xf8bd, 0x003f, 0x003f,
+    0xe6a4, 0xe255, 0x003f, 0x003f, 0x003f, 0x003f, 0xe265, 0xe676,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xedbd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xea5d, 0xf195, 0x003f, 0x003f, 0xf1e0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf17c, 0xf8be, 0xeaeb, 0x003f, 0xebf8, 0x003f, 0x003f,
+    /* 0x5900 .. 0x59ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf7be,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe395, 0xeb3a, 0xef72, 0x003f,
+    0x003f, 0xec64, 0xe49f, 0x003f, 0xeda8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe7d3, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4de,
+    0x003f, 0xf548, 0xf6bc, 0xe99f, 0x003f, 0xef7c, 0xed77, 0x003f,
+    0x003f, 0xecf7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf138,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf893, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xedf2, 0x003f, 0x003f, 0xe396,
+    0xe43f, 0xe975, 0x003f, 0x003f, 0x003f, 0x003f, 0xe335, 0xf3b4,
+    0xf941, 0xe19a, 0x003f, 0x003f, 0xe9c6, 0xf861, 0x003f, 0xf6df,
+    0x003f, 0x003f, 0xf838, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf297, 0x003f, 0xea5e, 0x003f, 0x003f, 0x003f, 0x003f, 0xeef3,
+    0x003f, 0x003f, 0xf6ac, 0xf0c4, 0xf1e1, 0xeb3b, 0xe9c7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe443, 0xe44f, 0x003f, 0x003f, 0x003f,
+    0xe05c, 0x003f, 0x003f, 0x003f, 0x003f, 0xf8bf, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xedfd, 0xe9e5, 0xe75d, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf196, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe397, 0x003f, 0x003f, 0xef7d, 0xe362,
+    0x003f, 0xe7d8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf676, 0x003f, 0x003f,
+    0xe8aa, 0x003f, 0x003f, 0x003f, 0xf6e0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe769, 0x003f, 0xf533, 0x003f, 0x003f, 0xf56d, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf2d1, 0x003f, 0x003f, 0xe7b5, 0x003f,
+    0x003f, 0xf1ab, 0x003f, 0xecb7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf24b, 0xe1b4, 0x003f, 0xeb95, 0xf05d, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf197, 0xef7e, 0x003f, 0xe0a9, 0xf3af, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe05d, 0x003f,
+    0xf139, 0x003f, 0xf47b, 0x003f, 0xf9ef, 0x003f, 0xf7f3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xee51, 0x003f, 0x003f, 0xf168, 0x003f, 0x003f, 0x003f, 0xf1ac,
+    /* 0x5a00 .. 0x5aff */
+    0x003f, 0xf05e, 0x003f, 0xef6f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xea5f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe436, 0x003f, 0x003f, 0xeef4, 0xe3d6, 0x003f, 0x003f, 0xee52,
+    0xece3, 0x003f, 0x003f, 0x003f, 0x003f, 0xed40, 0x003f, 0x003f,
+    0x003f, 0xe744, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf635, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf4de, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe6a5, 0x003f, 0x003f, 0x003f, 0x003f, 0xf6e8, 0x003f,
+    0x003f, 0xef56, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf8e6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe9e6, 0x003f, 0x003f, 0x003f, 0xe9a0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe76a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe83c, 0xf040, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xecb8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe03a, 0xebf9, 0x003f, 0xf041, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf47c, 0x003f, 0x003f, 0xf87e, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf265, 0x003f, 0x003f, 0x003f, 0x003f, 0xf7f4, 0x003f,
+    0x003f, 0xe47c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x5b00 .. 0x5bff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf8fb, 0x003f, 0x003f,
+    0x003f, 0xf9f0, 0x003f, 0xeb4d, 0xe273, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf756, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xea3e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xeac5, 0x003f, 0x003f, 0xedbe, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf1ad, 0xf87a, 0x003f, 0x003f, 0xe1ee, 0xf1a6, 0x003f, 0xf1ae,
+    0xf37d, 0x003f, 0xe9a1, 0x003f, 0xf1af, 0xf99a, 0x003f, 0xe77b,
+    0x003f, 0x003f, 0x003f, 0xe19b, 0xe1b5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf839, 0x003f, 0xebdd, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xec65, 0xf1cf, 0x003f, 0x003f, 0x003f, 0xe9a2, 0x003f, 0x003f,
+    0xf7ca, 0x003f, 0xf078, 0x003f, 0xeded, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4eb, 0x003f, 0xefd4,
+    0xebfa, 0xed5c, 0x003f, 0xebe4, 0xef57, 0x003f, 0x003f, 0xe26b,
+    0x003f, 0x003f, 0x003f, 0xe965, 0x003f, 0xf6b5, 0xf995, 0xf395,
+    0xe23f, 0xf3b5, 0xf2d2, 0xef58, 0xf0f1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe0d4, 0xeb4e, 0xecf8, 0xf079, 0xf942, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xeb96, 0x003f, 0xe2e0, 0x003f,
+    0xf235, 0x003f, 0x003f, 0xf83a, 0xee53, 0xebb2, 0xe03b, 0x003f,
+    0xece4, 0xefbb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xec66,
+    0xf4f2, 0x003f, 0xf266, 0xf042, 0xe398, 0xf169, 0xe85b, 0xe2a8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe9a3, 0x003f, 0x003f, 0x003f,
+    0xe76b, 0x003f, 0xf7ce, 0xefd5, 0xecd1, 0x003f, 0x003f, 0xe44c,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe73c, 0xf4cc,
+    0x003f, 0xe1fb, 0xf666, 0x003f, 0xeef5, 0xef91, 0xecf9, 0xe44b,
+    0xf4f3, 0xecfb, 0x003f, 0xea60, 0xe240, 0x003f, 0xe699, 0xf3d9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5c1, 0xe954, 0x003f,
+    0xf5bb, 0x003f, 0xea61, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x5c00 .. 0x5cff */
+    0x003f, 0xe976, 0x003f, 0x003f, 0xea62, 0x003f, 0x003f, 0xf1e2,
+    0xf298, 0xf05f, 0xf37e, 0xecfc, 0x003f, 0xe4df, 0xe4f4, 0xebb3,
+    0x003f, 0xebb4, 0x003f, 0x003f, 0x003f, 0x003f, 0xf563, 0x003f,
+    0x003f, 0xeac6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xefd6, 0x003f, 0x003f, 0x003f,
+    0xe8ab, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf636, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xecb9, 0xf0c5, 0xf539, 0xe1b6, 0xe49b, 0x003f, 0xe83d, 0xe473,
+    0xe2d1, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0dc, 0xe19c, 0x003f,
+    0xe2dd, 0x003f, 0x003f, 0xef39, 0x003f, 0xecbb, 0xecba, 0x003f,
+    0x003f, 0xeb6a, 0x003f, 0x003f, 0x003f, 0xf299, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe943, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe4f5, 0x003f, 0xe6a6, 0x003f, 0xf645, 0xe6db, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xebd5, 0x003f, 0x003f, 0xe57a,
+    0x003f, 0xeaa3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf9df, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe399, 0xf1d4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe0aa, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xed6b, 0x003f, 0xebfb, 0xe0a2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe4e0, 0x003f, 0xed4f, 0x003f, 0xf8c0, 0x003f, 0xe84e,
+    0xed5d, 0x003f, 0xe649, 0x003f, 0x003f, 0x003f, 0xf2c0, 0x003f,
+    0xebfc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf649, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xeac7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xed41, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe977,
+    0xe978, 0x003f, 0x003f, 0x003f, 0xf866, 0x003f, 0xe4f6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf3da, 0x003f, 0xf894, 0x003f, 0x003f,
+    /* 0x5d00 .. 0x5dff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xec9f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5cf, 0xe39a, 0x003f,
+    0x003f, 0xe1df, 0x003f, 0x003f, 0xf5cb, 0x003f, 0xed92, 0xe0ab,
+    0x003f, 0xe6c4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeca0,
+    0x003f, 0xe9da, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe83e, 0xe07e, 0x003f, 0x003f, 0x003f,
+    0xe5b9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeca1, 0x003f, 0x003f, 0xef73, 0x003f, 0x003f, 0xf4ab,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2a9,
+    0x003f, 0x003f, 0x003f, 0xe4f7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe593, 0x003f, 0x003f,
+    0xe274, 0x003f, 0xef94, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xedf5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xeeae, 0x003f, 0xe64a, 0x003f, 0xeaec, 0xed50, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xef74, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe745, 0x003f, 0x003f, 0x003f, 0xed6c, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf549, 0xf3b6, 0x003f,
+    0x003f, 0xec6e, 0xebb5, 0x003f, 0x003f, 0xe1ef, 0xf3a7, 0xe275,
+    0xe0dd, 0x003f, 0x003f, 0xe7e3, 0x003f, 0x003f, 0xf4ac, 0x003f,
+    0x003f, 0xe39b, 0xf13b, 0xea63, 0xf6e9, 0x003f, 0x003f, 0xf7f5,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xebde, 0xe0ee, 0x003f,
+    /* 0x5e00 .. 0x5eff */
+    0x003f, 0x003f, 0xecbc, 0xf766, 0x003f, 0x003f, 0xe8ee, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf9f1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf6b6, 0x003f, 0x003f, 0x003f, 0x003f, 0xf56e, 0x003f,
+    0x003f, 0xf47d, 0x003f, 0xe8d9, 0x003f, 0xf338, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xebfd, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xea64, 0x003f, 0xeb3c, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf1e3, 0x003f, 0x003f, 0xe4e1, 0x003f,
+    0xeac8, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7b6, 0x003f, 0xf9ac,
+    0xf2d3, 0x003f, 0x003f, 0x003f, 0xed51, 0xf77b, 0x003f, 0xe8ac,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf956, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe73d, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf64a,
+    0x003f, 0xe8df, 0xe4d3, 0xf757, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe05e, 0xf751, 0xe444, 0x003f, 0x003f, 0xe944,
+    0xf849, 0xe05f, 0x003f, 0xf943, 0xf07a, 0xf07b, 0xe39c, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf1e4, 0x003f, 0x003f, 0xe9e7,
+    0x003f, 0x003f, 0xeac9, 0x003f, 0x003f, 0x003f, 0x003f, 0xeaed,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf24c, 0x003f, 0xf2c1,
+    0x003f, 0x003f, 0xe162, 0x003f, 0xe9a4, 0x003f, 0x003f, 0x003f,
+    0xeaca, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4f8, 0xf3a8,
+    0x003f, 0x003f, 0x003f, 0xe1b7, 0x003f, 0xf2d4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xed6d, 0xeaee, 0xe0ac,
+    0xefbc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf07c, 0x003f,
+    0x003f, 0x003f, 0xeacb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf7bf, 0xe63f, 0xe5c6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe2aa, 0x003f, 0x003f, 0xe239, 0x003f, 0x003f, 0xe69a, 0x003f,
+    0x003f, 0x003f, 0xf3b7, 0xf29a, 0x003f, 0x003f, 0x003f, 0xe7d9,
+    0xf4df, 0x003f, 0xf758, 0xe256, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe5e6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf576, 0x003f, 0x003f, 0xee55, 0xf2d5,
+    0x003f, 0x003f, 0xe0ef, 0xf96f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x5f00 .. 0x5fff */
+    0x003f, 0xe937, 0x003f, 0x003f, 0xe677, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf759, 0x003f, 0x003f, 0x003f, 0x003f, 0xecd2,
+    0x003f, 0xecbd, 0x003f, 0xe2e1, 0xf350, 0xf16a, 0x003f, 0xe9d7,
+    0xf8f0, 0x003f, 0x003f, 0xf13c, 0x003f, 0x003f, 0x003f, 0xf339,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf867, 0xf8c1,
+    0x003f, 0xe450, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xedb0, 0x003f, 0x003f, 0x003f, 0xf1e5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe0ad, 0x003f, 0xf7b0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf6a5, 0x003f, 0xe0ae, 0x003f, 0xe83f, 0x003f, 0xe746, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4a7, 0xf8b2,
+    0x003f, 0xf9c4, 0x003f, 0xf13d, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf8a1, 0x003f, 0x003f, 0x003f, 0xede9, 0xefee,
+    0x003f, 0xf4f4, 0xf795, 0xf351, 0xea3f, 0xf740, 0x003f, 0x003f,
+    0xf4e0, 0xeeaf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8ad,
+    0x003f, 0xee45, 0x003f, 0x003f, 0xf7a8, 0x003f, 0x003f, 0xe9d8,
+    0xef69, 0xf2d6, 0x003f, 0x003f, 0x003f, 0xe4e2, 0x003f, 0xec6f,
+    0x003f, 0x003f, 0xf970, 0xe6c8, 0xf9ad, 0x003f, 0x003f, 0x003f,
+    0xeaef, 0xe163, 0xe4f9, 0x003f, 0x003f, 0x003f, 0x003f, 0xe592,
+    0xe8c7, 0xea65, 0x003f, 0x003f, 0x003f, 0x003f, 0xf396, 0x003f,
+    0xe5d0, 0xedd9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf957, 0xe966, 0xec70, 0x003f, 0x003f, 0x003f, 0xe840, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf4a3, 0x003f, 0xe4ec,
+    0x003f, 0xf55b, 0x003f, 0x003f, 0x003f, 0xf9c5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xecfd, 0x003f, 0xf7b1, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe39d, 0xf16b, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5bc, 0xf434,
+    0xe75e, 0xe75f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf5f7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf671, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe447, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf8ec, 0x003f, 0xe9c8,
+    /* 0x6000 .. 0x60ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xed78,
+    0x003f, 0x003f, 0xe451, 0x003f, 0x003f, 0x003f, 0xf767, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe64b, 0xea66, 0x003f, 0x003f,
+    0xf6bd, 0xf13e, 0x003f, 0x003f, 0x003f, 0xe371, 0x003f, 0xeb97,
+    0xf043, 0x003f, 0xe266, 0x003f, 0x003f, 0x003f, 0x003f, 0xe135,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf198, 0xec71, 0xecbe, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf958, 0x003f, 0x003f,
+    0xe1f0, 0x003f, 0xf7f6, 0x003f, 0x003f, 0xeaf0, 0x003f, 0x003f,
+    0x003f, 0xedbf, 0x003f, 0x003f, 0x003f, 0xe24f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf971, 0xf1b0, 0xf9d1, 0xf64b, 0x003f, 0x003f,
+    0xf7cf, 0xf0da, 0xe051, 0x003f, 0xe448, 0xe1f1, 0x003f, 0xecd3,
+    0xf9e6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xee7d, 0x003f, 0x003f,
+    0x003f, 0xecfa, 0x003f, 0x003f, 0xf33a, 0xf7d0, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf972, 0x003f, 0xf737, 0x003f,
+    0x003f, 0x003f, 0xebe5, 0xf29b, 0x003f, 0x003f, 0x003f, 0xeef6,
+    0xf07d, 0x003f, 0x003f, 0xf944, 0xf5c2, 0x003f, 0x003f, 0xe6dc,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf397, 0x003f, 0xe9e8, 0xe4ed, 0xf5fc, 0x003f, 0xe84f, 0x003f,
+    0xe19d, 0x003f, 0x003f, 0x003f, 0xe4fa, 0xf534, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2d7, 0x003f, 0xe553,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf8e3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf8ed, 0x003f, 0xeb3d, 0x003f, 0x003f, 0xf07e,
+    0xf8b3, 0xed52, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf677, 0xe46d, 0x003f, 0xeacc, 0x003f, 0x003f, 0xf959, 0x003f,
+    0x003f, 0xeda9, 0xeb98, 0xf643, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6100 .. 0x61ff */
+    0x003f, 0xebfe, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0f0, 0x003f,
+    0xf091, 0xf092, 0x003f, 0x003f, 0x003f, 0xe850, 0xf744, 0xf0f2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xed53, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xefd7, 0xed93, 0x003f, 0x003f, 0x003f, 0xe091,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe267,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf95a, 0x003f, 0x003f, 0x003f, 0xf4e1, 0x003f, 0x003f, 0xe0c4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xece5, 0x003f, 0xe0c5, 0xf044,
+    0x003f, 0x003f, 0xefbd, 0x003f, 0xe6c9, 0x003f, 0x003f, 0xf0db,
+    0xf1b1, 0x003f, 0xe153, 0xf6be, 0xf95b, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf796, 0x003f, 0xe7b7, 0x003f, 0x003f,
+    0xf4d3, 0xf4d4, 0x003f, 0x003f, 0x003f, 0xf6e4, 0x003f, 0xf6d1,
+    0x003f, 0x003f, 0xe747, 0xe241, 0xe052, 0x003f, 0x003f, 0xf8b4,
+    0xe0c6, 0x003f, 0x003f, 0xf398, 0x003f, 0x003f, 0xe5e7, 0x003f,
+    0xf060, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe164, 0xe0af,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf53a, 0xefaf, 0x003f,
+    0x003f, 0xf5c3, 0xefd8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe9e9, 0x003f, 0x003f, 0x003f, 0xf3f3, 0x003f,
+    0xe5fb, 0xea4b, 0x003f, 0x003f, 0xf59d, 0x003f, 0x003f, 0x003f,
+    0xf9f3, 0xf9f2, 0xf6a6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe9c9, 0x003f, 0x003f, 0xe563,
+    0x003f, 0xe138, 0x003f, 0xe851, 0xe165, 0x003f, 0xe7e4, 0x003f,
+    0x003f, 0x003f, 0xf85a, 0x003f, 0x003f, 0x003f, 0xede3, 0x003f,
+    0x003f, 0x003f, 0xe4bc, 0x003f, 0x003f, 0x003f, 0xe092, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe354, 0x003f, 0x003f, 0x003f, 0xe060,
+    0xf83b, 0xf0eb, 0xeef8, 0xe7e5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3d7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf4a4, 0x003f, 0x003f, 0x003f, 0xe59d, 0xf973,
+    0xf868, 0x003f, 0xf4d5, 0x003f, 0xe2ab, 0x003f, 0x003f, 0xf0f3,
+    /* 0x6200 .. 0x62ff */
+    0xe5fc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4d4,
+    0xe1fc, 0x003f, 0xe7e6, 0x003f, 0xec9b, 0xec31, 0xf0d4, 0x003f,
+    0xeb99, 0xed42, 0xe19e, 0x003f, 0x003f, 0x003f, 0xf8e4, 0x003f,
+    0x003f, 0x003f, 0xf53b, 0x003f, 0x003f, 0x003f, 0x003f, 0xe34d,
+    0x003f, 0xe093, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf2b8, 0x003f, 0x003f, 0x003f, 0xe6c0, 0x003f,
+    0xf29c, 0xf9f4, 0x003f, 0x003f, 0xe4e3, 0x003f, 0xf8c2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5e8, 0xe8ae,
+    0xebb6, 0xf747, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeb4f,
+    0xf8c3, 0xe9ea, 0x003f, 0xec32, 0x003f, 0xf236, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf678, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf697, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9ca, 0x003f,
+    0x003f, 0xe372, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9a6, 0x003f,
+    0x003f, 0xe9eb, 0x003f, 0x003f, 0xed9b, 0x003f, 0x003f, 0xecaf,
+    0xe39e, 0x003f, 0x003f, 0x003f, 0xf59e, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe14c, 0xf6ea, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xede4, 0xeaf1, 0x003f, 0x003f, 0xf6e1, 0x003f, 0xf7f7,
+    0xf2b9, 0x003f, 0x003f, 0xf768, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf7a9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf769, 0x003f, 0x003f, 0x003f, 0xf24d, 0x003f, 0x003f,
+    0x003f, 0xe756, 0x003f, 0x003f, 0xed73, 0xf5ce, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe9d9, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7e7,
+    0xe449, 0xe5c3, 0x003f, 0x003f, 0xe875, 0xe860, 0x003f, 0xe3d9,
+    0xe268, 0x003f, 0xe0de, 0xf53c, 0xe89d, 0x003f, 0xf679, 0xef95,
+    0xe2ac, 0xf392, 0x003f, 0xf59f, 0xe8c8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe250, 0xecd4, 0xe3cf, 0xf3f5,
+    0x003f, 0xe1f2, 0x003f, 0xe2eb, 0x003f, 0x003f, 0x003f, 0xe1b8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeca6, 0xe3da,
+    /* 0x6300 .. 0x63ff */
+    0x003f, 0xf435, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf436,
+    0x003f, 0xed5e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe4fb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf3a9, 0x003f, 0x003f, 0x003f, 0xf459,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf2d8, 0xee59, 0x003f, 0xe748, 0xf895, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf4b5, 0x003f, 0x003f, 0xf734, 0x003f, 0x003f, 0xe3f3,
+    0xee58, 0x003f, 0x003f, 0x003f, 0x003f, 0xf76a, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe979,
+    0xea67, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0df, 0x003f,
+    0x003f, 0x003f, 0xe2ec, 0x003f, 0x003f, 0x003f, 0x003f, 0xf56f,
+    0x003f, 0x003f, 0xe3f4, 0xe44a, 0x003f, 0x003f, 0x003f, 0xeaf2,
+    0x003f, 0x003f, 0x003f, 0xebb7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xec33, 0xe4fc, 0x003f, 0x003f, 0xf1e6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe8c9, 0x003f, 0x003f, 0x003f, 0xed9c, 0x003f,
+    0xe2de, 0x003f, 0x003f, 0xe260, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe5d3, 0xf4f5, 0xf6ae, 0x003f, 0x003f, 0xf2c8, 0x003f, 0xe1f3,
+    0xf5cf, 0xedf3, 0xf352, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe061, 0x003f, 0x003f, 0x003f, 0xf093, 0x003f, 0xe336, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7da,
+    0xf33b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf0e7, 0x003f,
+    0x003f, 0x003f, 0xedc0, 0xf945, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xed54, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe139, 0xf9c6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf045, 0x003f, 0xedaa, 0xeaba,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6400 .. 0x64ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xebdf, 0x003f, 0xe861,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xebb8, 0x003f, 0xef96, 0xe4fd,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xec34, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf45a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe876, 0xf6b3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf9cd, 0x003f, 0x003f, 0x003f, 0xf4b6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf267, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf5c4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe734, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf437,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe7b8, 0xe7b9, 0xf2c9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe65e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf6cb, 0xeaae, 0xef97, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe445, 0x003f, 0x003f, 0x003f, 0xe4d5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf55c, 0xe89e, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe7e8, 0x003f, 0xf6eb, 0xf5c9, 0x003f,
+    0xf4bc, 0x003f, 0xe862, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe4b5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xef46, 0x003f, 0x003f, 0xe65f, 0xf54a, 0x003f, 0xf6c9,
+    0x003f, 0x003f, 0xe13a, 0x003f, 0x003f, 0xf353, 0xe166, 0x003f,
+    0x003f, 0x003f, 0xe363, 0x003f, 0xe4bd, 0x003f, 0x003f, 0x003f,
+    0xe8fb, 0x003f, 0xe0e0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe4e4, 0xf699, 0x003f, 0x003f, 0xe5ba, 0xf4cd, 0xe0e1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf0f4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf53d, 0x003f, 0xf93a, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf6ec, 0x003f, 0x003f, 0x003f, 0xef98, 0x003f,
+    /* 0x6500 .. 0x65ff */
+    0xe877, 0x003f, 0x003f, 0x003f, 0xf6cc, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xedc1, 0x003f, 0x003f, 0x003f, 0x003f, 0xeb7e, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe5fd, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe276, 0xf93b, 0xe5bb, 0x003f, 0x003f, 0xf438,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xec35, 0xe1b9,
+    0xf094, 0xe0c7, 0x003f, 0xe1f4, 0x003f, 0x003f, 0xe8af, 0xf2d9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1ba, 0x003f, 0x003f,
+    0xf99b, 0x003f, 0x003f, 0x003f, 0x003f, 0xeaf3, 0xe277, 0xe852,
+    0x003f, 0xe2ad, 0x003f, 0x003f, 0x003f, 0x003f, 0xeef9, 0xf738,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf4e2, 0x003f,
+    0x003f, 0x003f, 0xe094, 0xeaa4, 0x003f, 0x003f, 0xe554, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe167, 0xedc2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe1bb, 0x003f, 0xf2da, 0xf268, 0x003f, 0xe9a7,
+    0xec36, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeb50, 0x003f,
+    0x003f, 0x003f, 0xe640, 0xf75a, 0x003f, 0xf99c, 0x003f, 0xe7fe,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xea40, 0x003f, 0x003f, 0x003f,
+    0xe9ec, 0xe878, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe570,
+    0x003f, 0xe69b, 0x003f, 0xe1d7, 0xea68, 0x003f, 0x003f, 0xf49a,
+    0x003f, 0xed66, 0x003f, 0x003f, 0xe355, 0xf53e, 0x003f, 0xe9a8,
+    0x003f, 0x003f, 0x003f, 0xf1c5, 0xf4d6, 0x003f, 0x003f, 0xea69,
+    0xece6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4a8,
+    0x003f, 0xe8b0, 0x003f, 0x003f, 0xedda, 0xecbf, 0x003f, 0x003f,
+    0x003f, 0xe8b1, 0x003f, 0x003f, 0x003f, 0xe5e9, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xeb51, 0xf2db, 0x003f, 0x003f, 0xf379,
+    0x003f, 0x003f, 0xe6b2, 0x003f, 0x003f, 0x003f, 0x003f, 0xe39f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe7e9, 0x003f, 0x003f, 0xe3a0, 0x003f, 0xf17d, 0xe4a9, 0x003f,
+    0xf439, 0xf354, 0x003f, 0x003f, 0xec72, 0xefef, 0x003f, 0x003f,
+    0x003f, 0xf7d1, 0x003f, 0x003f, 0xefd9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xef6a, 0xe853, 0xe854, 0xe555, 0x003f, 0xeefa,
+    /* 0x6600 .. 0x66ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1e0, 0xecb0,
+    0x003f, 0xe8b2, 0xf8c4, 0x003f, 0xf4e3, 0x003f, 0xe7a5, 0xf8e7,
+    0xe9cb, 0xe364, 0x003f, 0xee46, 0xeb3e, 0xf9da, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe945, 0xeb9a,
+    0xeeb1, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5f0, 0x003f, 0xe76c,
+    0xf1c6, 0x003f, 0x003f, 0x003f, 0x003f, 0xebb9, 0x003f, 0xecc0,
+    0xf7c0, 0xeff0, 0x003f, 0x003f, 0xe7db, 0x003f, 0xf4e4, 0x003f,
+    0x003f, 0x003f, 0xe946, 0xed79, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf355, 0xecc1, 0xf95c, 0xf95d, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf45b, 0x003f, 0xf45c, 0x003f, 0x003f, 0x003f, 0xed5f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf3db, 0x003f, 0xf869, 0x003f, 0xf3b8, 0xf9f5, 0xeb9b,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xeefb, 0xf947, 0xf974, 0xf8c5,
+    0xece7, 0xe749, 0x003f, 0xf69a, 0x003f, 0x003f, 0xe955, 0xe168,
+    0x003f, 0x003f, 0x003f, 0xeb3f, 0xf577, 0x003f, 0xf2dc, 0xe2fc,
+    0xf2dd, 0x003f, 0xf43a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf9be, 0x003f, 0x003f, 0xe03c,
+    0xf9bb, 0xf9c7, 0x003f, 0x003f, 0x003f, 0x003f, 0xeeb2, 0x003f,
+    0xf061, 0xeaf4, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3ec, 0xed6e,
+    0xedc3, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7a6, 0x003f, 0x003f,
+    0xe1bc, 0x003f, 0xf4e5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf1d5, 0x003f, 0x003f, 0xe7ba, 0x003f,
+    0x003f, 0x003f, 0xf1e7, 0xf8b5, 0xf77c, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeb77, 0x003f, 0xe169, 0x003f, 0x003f, 0xe556, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xeea5, 0x003f, 0xe5f5, 0xe4be,
+    0x003f, 0xf99d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xed94, 0x003f,
+    0x003f, 0xeaf5, 0x003f, 0x003f, 0xef9a, 0xf77d, 0x003f, 0x003f,
+    0xe257, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf9f6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xef68, 0x003f, 0xe1d8, 0xeed6, 0xe16a, 0x003f, 0x003f, 0xe073,
+    0xeaf6, 0xf357, 0xf356, 0x003f, 0xe74a, 0x003f, 0xf3f4, 0xf592,
+    /* 0x6700 .. 0x67ff */
+    0xf5cc, 0x003f, 0x003f, 0xf975, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf055, 0xf095, 0x003f, 0xe9db, 0x003f, 0xe967, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xea9f, 0xf49b, 0x003f, 0xe5c7,
+    0x003f, 0x003f, 0x003f, 0xe760, 0x003f, 0xf358, 0xe3a1, 0xe3a2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7d4, 0xe678,
+    0xe7ca, 0x003f, 0xe841, 0xe757, 0xe972, 0xf4ce, 0xf5f4, 0x003f,
+    0x003f, 0xf3b9, 0x003f, 0x003f, 0xe863, 0x003f, 0xf67a, 0x003f,
+    0x003f, 0x003f, 0xe2f5, 0x003f, 0x003f, 0xf9ae, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe062, 0x003f,
+    0x003f, 0xeab4, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6dd, 0xf84a,
+    0xf237, 0xf5bd, 0x003f, 0xf797, 0x003f, 0x003f, 0xf1e8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe571, 0x003f, 0xe3a3, 0xebd6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf7f8, 0x003f, 0xe8ca,
+    0xe0f9, 0xe564, 0x003f, 0xe7dc, 0x003f, 0xf24e, 0x003f, 0xf6ed,
+    0x003f, 0x003f, 0x003f, 0xe47e, 0x003f, 0x003f, 0xebe6, 0xf6f9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9ed,
+    0x003f, 0xef6b, 0x003f, 0xe8b3, 0x003f, 0x003f, 0x003f, 0xe3f7,
+    0xeb40, 0x003f, 0x003f, 0xe572, 0x003f, 0xf667, 0x003f, 0xe6f9,
+    0x003f, 0x003f, 0xe76d, 0x003f, 0xe1fd, 0xf43b, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1bd,
+    0xf752, 0x003f, 0x003f, 0xf43c, 0x003f, 0x003f, 0xe03d, 0xe03e,
+    0xe2ae, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xecc2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe947, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8da,
+    0xe7bb, 0xe095, 0xf663, 0xee9a, 0xf097, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf098, 0x003f, 0x003f, 0xf69b, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe2af, 0x003f, 0x003f, 0xe063, 0x003f, 0x003f, 0xe03f,
+    0xe440, 0xf3ba, 0x003f, 0xe6b3, 0xecc3, 0xf4fd, 0xea6a, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xea6b, 0x003f, 0x003f, 0xf2de, 0x003f,
+    /* 0x6800 .. 0x68ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xec73, 0xf29d, 0x003f, 0x003f, 0xeaf7, 0xe6ca,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe278, 0xe8db, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf3bb, 0x003f, 0x003f, 0x003f, 0x003f, 0xeff1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf847, 0xe356, 0x003f, 0x003f, 0xe13b, 0xf238, 0x003f, 0x003f,
+    0xe0fa, 0xf7f9, 0xe19f, 0xe4fe, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xed60, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf47e, 0x003f,
+    0xe565, 0xeacd, 0x003f, 0xf948, 0xe3d0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf45d, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf6d2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe064,
+    0x003f, 0xe5d9, 0x003f, 0x003f, 0x003f, 0xe76e, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1d9,
+    0x003f, 0x003f, 0x003f, 0xf239, 0xf64c, 0x003f, 0x003f, 0xe16b,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf359, 0x003f, 0xf99e,
+    0x003f, 0xef59, 0xf5a0, 0x003f, 0x003f, 0x003f, 0x003f, 0xeefc,
+    0xe6de, 0x003f, 0x003f, 0x003f, 0x003f, 0xea6c, 0x003f, 0xf33c,
+    0xe1a0, 0xe1e1, 0x003f, 0xebba, 0x003f, 0xe8ef, 0xe842, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe3a5, 0xe948, 0x003f, 0x003f,
+    0x003f, 0xe798, 0x003f, 0xe3a4, 0x003f, 0xe1e2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe97a, 0x003f, 0x003f, 0xf399, 0x003f, 0xf35a,
+    0xe34e, 0x003f, 0xe9dc, 0x003f, 0x003f, 0x003f, 0x003f, 0xe566,
+    0xe4d6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1d0,
+    0xe1a1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeab5, 0x003f,
+    0x003f, 0x003f, 0xeaf8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe531, 0xe242, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6900 .. 0x69ff */
+    0xef5a, 0x003f, 0x003f, 0x003f, 0x003f, 0xf0f5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xecd5, 0xf5d0, 0x003f,
+    0x003f, 0x003f, 0xf5a1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7a7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xedab, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xee5b, 0x003f, 0xf5f1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xedc5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf7a3, 0xeb6b, 0xf67b, 0x003f, 0xe0f1,
+    0x003f, 0xe7ea, 0xf5a2, 0x003f, 0x003f, 0x003f, 0xe6d1, 0x003f,
+    0xe3f8, 0xf09a, 0xf09b, 0xe843, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf2df, 0x003f, 0x003f, 0xf3ef, 0x003f, 0xedf6, 0xf24f, 0xec74,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe34f, 0x003f, 0xf83c,
+    0xf5d1, 0xeeb3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xefbe, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf45e, 0xe8b4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf95e, 0x003f, 0xe9ee,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeeb4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe6b4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf6b4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe1be, 0x003f, 0xe879, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe2b0, 0xf6d9, 0xf4e6, 0x003f, 0x003f,
+    0xe269, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe23a, 0x003f, 0xe0c8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe337, 0x003f, 0xf35b, 0x003f, 0xe357,
+    /* 0x6a00 .. 0x6aff */
+    0x003f, 0x003f, 0xed55, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe8e0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe5da, 0x003f, 0xe6a7, 0x003f, 0x003f, 0x003f, 0xf250,
+    0x003f, 0xf798, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5d2, 0xf1e9,
+    0x003f, 0xe7bc, 0x003f, 0xedc6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5a3, 0x003f, 0x003f,
+    0xe864, 0xec37, 0xf8fc, 0x003f, 0x003f, 0xf3dc, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe096, 0x003f, 0x003f, 0x003f,
+    0xef9c, 0x003f, 0x003f, 0xe279, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeff8, 0xec75, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe349, 0xe594, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3a6,
+    0x003f, 0xeace, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf996, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe4aa, 0x003f, 0x003f, 0x003f, 0xe13c, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf2e0, 0x003f, 0x003f, 0x003f, 0xede5, 0xe365, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8fc,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf976, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe0fe, 0xf1ea, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xea41, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf7e3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe532, 0xe2f6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe660, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe5ea, 0xf3ee, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf85b, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xeda1, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6b00 .. 0x6bff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe5b1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe2ed, 0x003f, 0xf1eb, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe5b2, 0x003f, 0x003f, 0x003f, 0xe5bc, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf9e2, 0xf4ad, 0x003f, 0xf9db, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xefb0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe3a7, 0x003f, 0x003f, 0xf9e3, 0xe243, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf9e4, 0xf85e,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe040, 0x003f, 0xf6a7, 0x003f,
+    0xe2b1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xee32,
+    0x003f, 0xf946, 0xf43d, 0xf2e1, 0xf4ae, 0xe956, 0xe7eb, 0x003f,
+    0x003f, 0x003f, 0xef70, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeba8, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5f6,
+    0xe2fd, 0x003f, 0x003f, 0xea6d, 0x003f, 0x003f, 0x003f, 0xe7d1,
+    0x003f, 0x003f, 0x003f, 0xed7a, 0xf45f, 0x003f, 0xf6bf, 0x003f,
+    0x003f, 0xec76, 0xec38, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xecd6, 0x003f,
+    0xf1d1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeff9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe641, 0xea42,
+    0x003f, 0x003f, 0xeb78, 0x003f, 0x003f, 0xe4ab, 0x003f, 0xf0dc,
+    0x003f, 0x003f, 0xeaaf, 0x003f, 0xe053, 0x003f, 0x003f, 0xf29e,
+    0x003f, 0xf9c3, 0x003f, 0x003f, 0x003f, 0xf0f6, 0xe2b2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe7ec, 0x003f, 0xe7bd, 0x003f, 0xe76f,
+    0x003f, 0x003f, 0xe548, 0xf0be, 0xe9ef, 0x003f, 0xe9f0, 0xe9f1,
+    0xe9f2, 0x003f, 0x003f, 0xe7be, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf8c6, 0xe2b3, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6c00 .. 0x6cff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf29f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xed3b,
+    0x003f, 0xe855, 0x003f, 0xe77c, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe3a8, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xec39, 0x003f, 0x003f, 0xea4c,
+    0xeeb5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8f0, 0x003f,
+    0xf2e2, 0xf3f0, 0xe2b4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8f1, 0x003f,
+    0xeb41, 0x003f, 0x003f, 0x003f, 0x003f, 0xeaa5, 0x003f, 0xf7d2,
+    0x003f, 0x003f, 0xeefd, 0x003f, 0x003f, 0xee33, 0xf8f1, 0xe0b0,
+    0xf43e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe1e7, 0x003f, 0xef6c, 0x003f, 0x003f, 0xeed7, 0x003f, 0x003f,
+    0xf6c0, 0x003f, 0xe373, 0x003f, 0x003f, 0x003f, 0xe831, 0x003f,
+    0x003f, 0x003f, 0xe14d, 0x003f, 0x003f, 0xe3a9, 0xe9cc, 0x003f,
+    0x003f, 0xecfe, 0xe3aa, 0xef3a, 0x003f, 0xf046, 0xf7fa, 0xee5c,
+    0xf668, 0x003f, 0x003f, 0x003f, 0xe557, 0x003f, 0x003f, 0x003f,
+    0xe7cb, 0x003f, 0xe7d2, 0xe4cb, 0xe799, 0xe839, 0xf5f8, 0x003f,
+    0x003f, 0xea6e, 0xf43f, 0xf739, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe758, 0x003f, 0x003f, 0xf251, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf7c1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe9f3, 0xf09c, 0x003f, 0xf64d, 0xebbb, 0xe1bf, 0xf564, 0xee5d,
+    0x003f, 0xf95f, 0xf8a2, 0x003f, 0xeb6c, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf54b, 0xe865, 0x003f, 0xf7b2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf8f2, 0x003f, 0xe8f6, 0x003f, 0xea6f,
+    0x003f, 0x003f, 0x003f, 0xe8f2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf76c, 0xf6ee, 0xf0e8, 0x003f, 0xe49c, 0x003f, 0x003f,
+    0xf3bc, 0x003f, 0x003f, 0xf86a, 0x003f, 0x003f, 0xe87a, 0xe856,
+    0xf6c1, 0x003f, 0x003f, 0xeeb6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6d00 .. 0x6dff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xedc7, 0xe63c, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe957, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeba9,
+    0x003f, 0xec3a, 0x003f, 0xe5a6, 0x003f, 0x003f, 0xe567, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf460, 0x003f, 0xf09d,
+    0x003f, 0xeb6d, 0xf8f3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf3bd, 0x003f, 0x003f, 0xec77, 0xf9d7, 0x003f,
+    0xe258, 0xf047, 0x003f, 0xf950, 0x003f, 0xf9e7, 0xf6ef, 0x003f,
+    0x003f, 0xe6b5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf2ba, 0xf3dd, 0x003f, 0xea43, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xef5b, 0x003f, 0x003f, 0xf76d, 0x003f,
+    0x003f, 0xf8c7, 0xe5c8, 0x003f, 0xe6df, 0x003f, 0xe9a9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xefb1, 0x003f, 0x003f, 0xf83d,
+    0xf669, 0xf896, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf73a,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xee7e, 0x003f, 0xe16c,
+    0xebbc, 0xeb91, 0x003f, 0x003f, 0xefbf, 0xf99f, 0xee5e, 0x003f,
+    0x003f, 0xebd7, 0x003f, 0xee5f, 0x003f, 0xf593, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xed95,
+    0x003f, 0x003f, 0xed9d, 0x003f, 0x003f, 0xf7e4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf2e3, 0x003f, 0x003f, 0xe2ee, 0xf64e, 0xeb42, 0xf9a0, 0xe3ab,
+    0x003f, 0x003f, 0x003f, 0xe6fa, 0x003f, 0x003f, 0x003f, 0xf8c8,
+    0x003f, 0xec67, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe533, 0xf39a, 0xe6a8, 0x003f, 0x003f, 0x003f, 0xebe7, 0x003f,
+    0x003f, 0xe4bf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf2e4, 0x003f, 0xe6c5, 0xf0e2, 0x003f, 0x003f, 0xf977, 0x003f,
+    0x003f, 0xed32, 0x003f, 0xec78, 0x003f, 0xee60, 0x003f, 0xf8e8,
+    0xf578, 0xedf4, 0xf54c, 0xf565, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6e00 .. 0x6eff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeab6,
+    0x003f, 0xf949, 0xf252, 0xe097, 0x003f, 0x003f, 0x003f, 0xf2e5,
+    0xe0e2, 0xe534, 0x003f, 0xea70, 0xe89f, 0xed56, 0xef4e, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xeb6e, 0xf644, 0xf062, 0x003f, 0xf7fb,
+    0x003f, 0x003f, 0xeb52, 0x003f, 0xe074, 0x003f, 0xeeb7, 0x003f,
+    0xf09f, 0x003f, 0xe7dd, 0x003f, 0xe844, 0xf23a, 0xf8e9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe8cb, 0xe845, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf3be, 0x003f, 0x003f, 0xe4ac, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf8c9, 0x003f,
+    0xeacf, 0x003f, 0x003f, 0xe4c0, 0xecd7, 0x003f, 0xf2e6, 0xf960,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xefc0,
+    0x003f, 0x003f, 0x003f, 0xf5d3, 0x003f, 0x003f, 0xf16c, 0xf6b7,
+    0x003f, 0x003f, 0xf048, 0xe3f9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe958, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf049, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3de, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe6b6, 0xe2b5, 0x003f, 0xe7a8,
+    0x003f, 0x003f, 0xf17e, 0x003f, 0x003f, 0xe9aa, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe1a2, 0xef3e, 0x003f, 0x003f, 0x003f, 0xebbd,
+    0x003f, 0xf461, 0x003f, 0x003f, 0x003f, 0x003f, 0xefc1, 0x003f,
+    0x003f, 0x003f, 0xe49e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe8b5, 0x003f, 0xf4e7, 0xe7a0, 0x003f, 0x003f,
+    0x003f, 0xf961, 0x003f, 0xf1b2, 0xf53f, 0x003f, 0xf8a3, 0x003f,
+    0x003f, 0xf951, 0x003f, 0xf23b, 0xe535, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf594,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf269, 0x003f, 0x003f, 0x003f,
+    0xf8ca, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1e3, 0xe74b,
+    /* 0x6f00 .. 0x6fff */
+    0x003f, 0xeddb, 0xf799, 0x003f, 0x003f, 0x003f, 0xf664, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6a9,
+    0x003f, 0xe0c9, 0x003f, 0x003f, 0xee61, 0xf35c, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe73e, 0x003f, 0xf7d3, 0xe5fe, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe74c, 0xf440, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xec3b, 0xf4e8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf2c2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1ec,
+    0x003f, 0xeeb8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe8a0, 0x003f, 0x003f, 0xe14e, 0x003f, 0x003f, 0xf49e,
+    0xe87b, 0x003f, 0xec68, 0xf1d6, 0x003f, 0x003f, 0xe661, 0xeb43,
+    0x003f, 0x003f, 0xf962, 0x003f, 0xf0c8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4c1, 0xf35d, 0x003f,
+    0xe2f7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf1d2, 0x003f, 0xe568, 0xe959, 0xe6f1, 0x003f,
+    0x003f, 0xeabb, 0x003f, 0x003f, 0xf4a5, 0x003f, 0x003f, 0x003f,
+    0xf55d, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3bf, 0xf741, 0x003f,
+    0xeffa, 0x003f, 0x003f, 0x003f, 0xf8cb, 0x003f, 0x003f, 0xe065,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf7d4, 0xf6ca, 0x003f, 0x003f, 0xe658,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf978, 0xf4bd,
+    0x003f, 0xf2a0, 0x003f, 0xeefe, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe4c2, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4b6, 0x003f,
+    0xe13d, 0xf69c, 0xe642, 0xe468, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeed8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeca5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeeb9, 0x003f, 0x003f, 0x003f, 0x003f, 0xf33d,
+    0xf8cc, 0xf0a1, 0x003f, 0x003f, 0xe536, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf8cd, 0x003f, 0xe5bd, 0xf3df, 0x003f, 0x003f, 0xf69d,
+    0x003f, 0xea44, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5eb, 0x003f,
+    /* 0x7000 .. 0x70ff */
+    0x003f, 0xedc8, 0x003f, 0x003f, 0x003f, 0xf8a4, 0xe549, 0x003f,
+    0x003f, 0xea71, 0x003f, 0xed33, 0x003f, 0x003f, 0x003f, 0xe6b7,
+    0x003f, 0xf77e, 0x003f, 0x003f, 0x003f, 0xea45, 0x003f, 0x003f,
+    0xe662, 0x003f, 0xf7d5, 0xeeba, 0xf0d5, 0xe5f7, 0xf2e7, 0xebbe,
+    0x003f, 0x003f, 0x003f, 0xf83e, 0x003f, 0x003f, 0x003f, 0xe679,
+    0xe67e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeebb,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf15b,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5b3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe244, 0x003f, 0x003f, 0x003f,
+    0xf8a5, 0xebee, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf6a8, 0x003f, 0x003f, 0x003f, 0x003f, 0xf8ce, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe74d, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf8fd, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf979, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe2b6, 0x003f, 0x003f, 0x003f, 0xf1c7, 0xf23c, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe16d, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf637, 0x003f, 0x003f, 0x003f, 0xee9c, 0x003f,
+    0x003f, 0x003f, 0xf5a4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf9dc, 0xf1b3, 0xe259, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf2e8, 0x003f, 0x003f, 0xebbf, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf86b, 0xe0e3, 0xf6a9, 0x003f, 0xf8a6,
+    0x003f, 0x003f, 0x003f, 0xe949, 0x003f, 0x003f, 0x003f, 0xf3c0,
+    0xf1c8, 0xf2c3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe63d, 0x003f, 0x003f, 0xf9ce, 0x003f, 0x003f, 0x003f, 0xef31,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf8f4, 0xe5a7, 0x003f, 0x003f, 0x003f, 0xf3f6, 0x003f, 0xee63,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe16e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf742, 0x003f, 0x003f, 0x003f, 0xe97b, 0x003f, 0x003f,
+    /* 0x7100 .. 0x71ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf9b6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xedea, 0x003f, 0x003f, 0xf3e0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe8cc, 0xe9cd, 0x003f, 0x003f, 0x003f, 0xe558, 0x003f,
+    0x003f, 0xe7ed, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5a5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xee9d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xee64, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf9c8,
+    0x003f, 0xe631, 0xf9bf, 0x003f, 0xf963, 0x003f, 0xf2a1, 0x003f,
+    0xeebc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3ee, 0x003f,
+    0x003f, 0xee65, 0x003f, 0x003f, 0xeff2, 0x003f, 0xeab0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe770, 0xf94a, 0xf9af, 0xf35e,
+    0x003f, 0xe8e1, 0x003f, 0x003f, 0xedc9, 0x003f, 0xf1b4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeb53, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xecd8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeffb, 0xf038, 0x003f, 0x003f, 0x003f, 0x003f, 0xf9b7,
+    0x003f, 0x003f, 0xf8a7, 0x003f, 0xefc2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf9f7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xec69,
+    0x003f, 0x003f, 0xe97c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xef32, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xee92, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf9f8, 0xf9f9, 0x003f, 0x003f, 0x003f, 0xf64f, 0x003f,
+    0x003f, 0xeea7, 0x003f, 0xee67, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe595, 0xe559, 0x003f, 0x003f, 0x003f, 0x003f, 0xe69c, 0x003f,
+    0xe6f2, 0x003f, 0xebc0, 0x003f, 0xe8e2, 0xee68, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeebd,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf35f, 0xf4be, 0xec3c,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5b7, 0xeb92, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf9b8, 0xece8, 0x003f, 0xe537, 0xef9e,
+    /* 0x7200 .. 0x72ff */
+    0xf862, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf791, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe663, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe5b4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf360, 0x003f, 0xf6f0, 0xf243, 0x003f, 0x003f,
+    0xf04a, 0x003f, 0xf063, 0x003f, 0x003f, 0xf1c9, 0xe9ab, 0x003f,
+    0x003f, 0x003f, 0xedac, 0xf9a1, 0x003f, 0xead0, 0xf143, 0x003f,
+    0xead1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1ed, 0xf748,
+    0xf6fa, 0x003f, 0x003f, 0x003f, 0xf73b, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf570, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe54a, 0xed43, 0x003f, 0xefda, 0x003f, 0xea46, 0x003f, 0xe7bf,
+    0x003f, 0xe7c0, 0xe691, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7cc,
+    0x003f, 0xe83a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeae5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf6e5, 0x003f, 0x003f, 0x003f, 0xe142, 0x003f, 0x003f,
+    0xeaf9, 0xe6e0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe54b, 0x003f, 0x003f, 0x003f, 0x003f, 0xf9fa,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe143, 0x003f, 0x003f, 0xe8f3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xead2, 0x003f, 0xe25a, 0x003f, 0xf26a, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xed74, 0x003f,
+    0xf8cf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2b7,
+    0x003f, 0xf253, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe27a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xec3d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe6e1, 0xf897, 0x003f, 0x003f, 0xe5c9, 0xf73c, 0x003f, 0x003f,
+    /* 0x7300 .. 0x73ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeed9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf4e9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe77d, 0xecc4, 0xf393, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xef75, 0x003f, 0x003f,
+    0x003f, 0xeb9c, 0xf254, 0xe7de, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf0a2, 0xf0a3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf952, 0xf04b,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xef3b, 0xea72, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf1ef, 0x003f, 0xef33, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2f1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe54c, 0x003f, 0xf97a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xeebe, 0x003f, 0xf994, 0x003f, 0x003f, 0xe644, 0x003f, 0x003f,
+    0xec3e, 0x003f, 0xe4b7, 0xf85c, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf86c, 0x003f, 0xf1b5, 0xebe3,
+    0x003f, 0xef3c, 0x003f, 0xef6d, 0x003f, 0x003f, 0xf2e9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf54d, 0x003f, 0xe2b8, 0xefdb,
+    0xe3ac, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe857,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf0c9,
+    0x003f, 0xef5c, 0x003f, 0x003f, 0x003f, 0xea47, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe64c, 0xe4e5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf86d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe866, 0x003f, 0xe041, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe858, 0xeaa6, 0x003f, 0xf7b3, 0xf462, 0x003f, 0xe054,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe25b, 0x003f,
+    0x003f, 0xe1f5, 0x003f, 0x003f, 0x003f, 0xf9b0, 0xe5a8, 0x003f,
+    0xf3c1, 0x003f, 0x003f, 0xec79, 0xe95a, 0xf144, 0xf850, 0x003f,
+    0x003f, 0xf8a8, 0xe338, 0x003f, 0x003f, 0xe87c, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7ee,
+    0x003f, 0xeb9d, 0x003f, 0x003f, 0x003f, 0xf2ea, 0xf86e, 0x003f,
+    /* 0x7400 .. 0x74ff */
+    0x003f, 0xeb54, 0x003f, 0xe2b9, 0x003f, 0xe5ca, 0xe6e2, 0xec3f,
+    0x003f, 0xe6b8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xef5d, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf66a, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf2a2, 0xec6a, 0xf69e, 0x003f, 0x003f, 0xf8d0, 0xe3ad, 0x003f,
+    0xe1e4, 0x003f, 0xe3ae, 0xe97d, 0xef5e, 0x003f, 0xf39b, 0xe245,
+    0xee9e, 0x003f, 0x003f, 0xe6fb, 0xe366, 0xe9f5, 0xf6f1, 0x003f,
+    0xf69f, 0x003f, 0xe8f7, 0x003f, 0x003f, 0x003f, 0x003f, 0xf8ea,
+    0xefdc, 0xe7c1, 0x003f, 0xf5f2, 0xeb55, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf064, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf7c2, 0x003f, 0xf04c,
+    0x003f, 0xe455, 0xf8d1, 0xeec0, 0xf0a5, 0x003f, 0xeafa, 0xeca2,
+    0xe6b9, 0x003f, 0xefc3, 0x003f, 0xef9f, 0xef3f, 0x003f, 0x003f,
+    0xf463, 0xf8a9, 0xe735, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5cb,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe358, 0x003f,
+    0x003f, 0x003f, 0xe3af, 0xe6e3, 0x003f, 0x003f, 0x003f, 0xeb56,
+    0x003f, 0xe632, 0x003f, 0xf1f0, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe6f3, 0x003f, 0x003f, 0x003f, 0xf964, 0x003f, 0xe867, 0xe16f,
+    0x003f, 0xf464, 0x003f, 0xe3b0, 0x003f, 0xe170, 0x003f, 0xe8fd,
+    0xf4bf, 0x003f, 0xf361, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf94b, 0x003f, 0xec40, 0x003f, 0x003f, 0xee35, 0x003f, 0x003f,
+    0x003f, 0xec6b, 0x003f, 0x003f, 0x003f, 0xeade, 0x003f, 0xeb57,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf491, 0x003f,
+    0x003f, 0x003f, 0xe171, 0x003f, 0x003f, 0x003f, 0x003f, 0xe67a,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xeec2, 0x003f, 0x003f, 0x003f,
+    0xe246, 0x003f, 0xf4c0, 0x003f, 0xe1fe, 0x003f, 0x003f, 0x003f,
+    0xf8d2, 0x003f, 0xf79a, 0xf6fb, 0x003f, 0x003f, 0xef4f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xef47, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1b6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x7500 .. 0x75ff */
+    0x003f, 0xe94a, 0x003f, 0x003f, 0xe144, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf3f7, 0x003f, 0x003f, 0x003f, 0xef48, 0x003f, 0x003f,
+    0xe098, 0x003f, 0xed34, 0xf566, 0x003f, 0x003f, 0x003f, 0xeae6,
+    0x003f, 0x003f, 0x003f, 0xeaa7, 0x003f, 0xeae7, 0xebc1, 0x003f,
+    0xefc4, 0x003f, 0x003f, 0xe95b, 0xefc5, 0x003f, 0x003f, 0x003f,
+    0xf2a3, 0xf0a6, 0xe0a3, 0xece9, 0x003f, 0x003f, 0x003f, 0xe3fb,
+    0xf2a4, 0x003f, 0xf2eb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe344,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe1a3, 0x003f, 0x003f, 0xef76,
+    0x003f, 0xf2a5, 0x003f, 0xe4cc, 0xe87d, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe6ba, 0x003f, 0xf465, 0xf5e5, 0xe7ef, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf7b4, 0x003f, 0x003f, 0xe5d4, 0xf9cf, 0x003f,
+    0x003f, 0x003f, 0xe8e3, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3e1,
+    0xf146, 0x003f, 0x003f, 0x003f, 0x003f, 0xf8fe, 0xe4d7, 0x003f,
+    0xe3b1, 0x003f, 0xe0b1, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3b2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0b2, 0xf3c2,
+    0x003f, 0x003f, 0xf571, 0xf7b5, 0x003f, 0x003f, 0xebc3, 0xebc2,
+    0x003f, 0xf0f7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeaa8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0ca, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xee49, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf76e, 0xf7aa, 0xe099, 0x003f, 0xf1b7, 0x003f, 0x003f,
+    0xe4b8, 0xf466, 0x003f, 0x003f, 0xe569, 0xf255, 0xf492, 0x003f,
+    0x003f, 0x003f, 0xe042, 0x003f, 0x003f, 0xe94b, 0x003f, 0xf3f8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf147, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xedca, 0x003f, 0xf650, 0xf9dd, 0x003f, 0x003f,
+    0xe573, 0xe172, 0x003f, 0xf6d4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe6e5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe4c3, 0x003f, 0xe736, 0x003f, 0xf651, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe9f6, 0x003f, 0xe1c0, 0x003f, 0x003f, 0x003f,
+    /* 0x7600 .. 0x76ff */
+    0xeddc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xedcb, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xebc4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xef40,
+    0xf540, 0xf4ea, 0xe87e, 0x003f, 0xe6bb, 0x003f, 0xec41, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe6aa, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe69d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xed6f, 0x003f, 0xe066, 0x003f,
+    0x003f, 0x003f, 0xf0a8, 0x003f, 0x003f, 0x003f, 0xe8fe, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf652, 0x003f, 0x003f, 0xf2bb, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe59f, 0x003f, 0x003f, 0xeb58, 0x003f, 0x003f, 0x003f,
+    0xef49, 0x003f, 0xf2a6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe1a4, 0x003f, 0x003f, 0xe596, 0xe8a1, 0xe8dc, 0xe8dd, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf26c, 0x003f, 0xe0cb, 0xf965,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe27b, 0x003f,
+    0xe1c1, 0x003f, 0x003f, 0xf8d3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf7ab, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf5d4, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7a9,
+    0x003f, 0x003f, 0xefdd, 0xe8cd, 0x003f, 0x003f, 0xe9ce, 0x003f,
+    0xeec3, 0x003f, 0xf15c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf7ec, 0x003f, 0x003f, 0x003f, 0xe0cc, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xeb9e, 0xe538, 0x003f, 0xf1d3, 0xe791,
+    0x003f, 0xf467, 0x003f, 0xe09a, 0xe891, 0x003f, 0x003f, 0xe664,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7cd, 0x003f,
+    0x003f, 0x003f, 0xe77e, 0x003f, 0xf451, 0x003f, 0x003f, 0x003f,
+    0xead3, 0x003f, 0x003f, 0x003f, 0xe892, 0x003f, 0xec7a, 0x003f,
+    /* 0x7700 .. 0x77ff */
+    0x003f, 0xeb9f, 0x003f, 0x003f, 0xe79a, 0x003f, 0x003f, 0x003f,
+    0xf6af, 0xe846, 0x003f, 0xe067, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf468, 0x003f,
+    0xe79b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf86f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2ef,
+    0xe7c2, 0x003f, 0xf362, 0x003f, 0xed61, 0x003f, 0x003f, 0x003f,
+    0xf4b7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf870, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf2ec, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xec42, 0x003f, 0xe54d, 0x003f, 0x003f, 0xe7ce, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf572, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe539, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1c2, 0xeeda,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf469, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe7aa, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe74e, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe93d, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xec7b, 0xe69e, 0x003f, 0x003f,
+    0xe09b, 0x003f, 0x003f, 0xe56a, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf567, 0xe131, 0x003f, 0x003f, 0xe2ba,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5b8,
+    0x003f, 0x003f, 0x003f, 0xe7c3, 0xe378, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xecc5, 0xf0f8, 0x003f, 0xf441, 0x003f, 0x003f,
+    0x003f, 0xe2bb, 0x003f, 0x003f, 0x003f, 0xe4ad, 0xef71, 0xe27c,
+    0x003f, 0x003f, 0x003f, 0xeb44, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x7800 .. 0x78ff */
+    0x003f, 0x003f, 0xea73, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe9f7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf442, 0xf4f6, 0xf66b,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe6fe, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf76f, 0x003f, 0xf6f2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe339, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xee6a,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5a6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe6bc, 0xe173, 0x003f, 0x003f, 0xee6b,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe9dd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe3b3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2ed,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe66e, 0xed96, 0xebef, 0x003f,
+    0x003f, 0xe9f8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xef5f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe075, 0x003f, 0x003f, 0x003f, 0xe931,
+    0x003f, 0xeb45, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf93c, 0xf93d, 0xe737, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf1b8, 0x003f, 0x003f, 0x003f, 0xe8b6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe692, 0xf4af, 0x003f, 0x003f, 0xe1a5, 0x003f,
+    0xe893, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe738, 0x003f, 0x003f, 0x003f, 0xe174, 0x003f, 0x003f, 0xe3b4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe068, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe894, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x7900 .. 0x79ff */
+    0x003f, 0xf5a7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5a8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xee36, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe5ec, 0xe5f8, 0xe895, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xecc6, 0x003f, 0x003f, 0x003f, 0xea74, 0x003f,
+    0xea75, 0xe3b5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3b6,
+    0xe3b7, 0xf443, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xefde, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf363, 0xf444,
+    0x003f, 0x003f, 0xf364, 0xe0e4, 0xf8d4, 0xf5e6, 0xecea, 0x003f,
+    0xea76, 0x003f, 0x003f, 0x003f, 0x003f, 0xead4, 0x003f, 0x003f,
+    0xf79b, 0x003f, 0x003f, 0x003f, 0x003f, 0xf33e, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe3b8, 0x003f, 0x003f, 0x003f, 0x003f, 0xe66f,
+    0x003f, 0xe367, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf931, 0xf2ee, 0xe968,
+    0x003f, 0xefdf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeddd, 0xf9fb,
+    0x003f, 0x003f, 0xeb59, 0x003f, 0x003f, 0x003f, 0xe659, 0x003f,
+    0x003f, 0xe53a, 0x003f, 0xedcc, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xefe0, 0x003f, 0x003f, 0x003f, 0xe368, 0xf932, 0xe54e,
+    0xec43, 0xea77, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe94c, 0xe446, 0xf5d5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe231, 0xf5a9, 0x003f, 0x003f, 0xe9f9, 0x003f, 0x003f,
+    0xe9fa, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf365,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf66f, 0x003f, 0xf46a, 0xed7b,
+    0x003f, 0xf493, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf149, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x7a00 .. 0x7aff */
+    0xf9fc, 0x003f, 0x003f, 0x003f, 0x003f, 0xebaa, 0x003f, 0x003f,
+    0xe069, 0x003f, 0x003f, 0xf2ef, 0x003f, 0xf5aa, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf19b, 0x003f, 0x003f, 0xf73d,
+    0x003f, 0xf452, 0xf653, 0x003f, 0xe6d2, 0x003f, 0x003f, 0xf7a2,
+    0xf366, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf39c, 0x003f,
+    0x003f, 0xf670, 0x003f, 0x003f, 0x003f, 0x003f, 0xeff3, 0xf453,
+    0x003f, 0x003f, 0x003f, 0xe53b, 0xe043, 0xe1a6, 0x003f, 0xe1c3,
+    0xe1da, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7cf, 0x003f,
+    0x003f, 0xf654, 0x003f, 0x003f, 0x003f, 0xf26d, 0xeec4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xec44,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeae2, 0xeedb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xef41, 0x003f, 0xf93e, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xedcd, 0x003f, 0x003f, 0x003f, 0xf87b, 0x003f, 0xe2bc, 0x003f,
+    0x003f, 0xe2e2, 0xe1f6, 0x003f, 0x003f, 0xf2f0, 0x003f, 0xf54e,
+    0x003f, 0xe55d, 0x003f, 0x003f, 0xf4b8, 0x003f, 0x003f, 0x003f,
+    0xefa1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf494, 0xf4eb, 0x003f, 0xf367, 0x003f, 0x003f,
+    0xe2d7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2df,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xef50, 0xef51, 0x003f, 0x003f, 0x003f, 0xe2e3, 0xefa2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe33a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf4c1, 0xe33b, 0x003f, 0xe574,
+    0x003f, 0x003f, 0xf2bc, 0xe731, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7df,
+    0x003f, 0xf4d7, 0x003f, 0x003f, 0x003f, 0xe94d, 0x003f, 0xe175,
+    0xf1f1, 0x003f, 0x003f, 0xf3e2, 0x003f, 0xe56b, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xec45, 0x003f, 0x003f, 0xe076, 0x003f, 0xe4ae,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe176, 0x003f,
+    0x003f, 0xf3d3, 0xf5e7, 0x003f, 0x003f, 0x003f, 0x003f, 0xe06a,
+    /* 0x7b00 .. 0x7bff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf8ee,
+    0x003f, 0xebc5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeae9, 0x003f, 0xf26e, 0x003f, 0x003f, 0xf6c2, 0x003f,
+    0xe732, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9ac, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf33f, 0xe64d, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xebab, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf7b6, 0x003f,
+    0x003f, 0xe597, 0x003f, 0xe359, 0xf2a7, 0xec7c, 0x003f, 0xe8ea,
+    0xe25c, 0xf5e8, 0xf6d5, 0x003f, 0xe4cd, 0x003f, 0xf4fe, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe345, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xeba0, 0x003f, 0xeafb, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xee6d, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xef34, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0cd,
+    0x003f, 0x003f, 0x003f, 0xf2a8, 0x003f, 0x003f, 0x003f, 0xf244,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe868, 0xe3b9, 0x003f, 0xeaa9,
+    0x003f, 0x003f, 0xf4b0, 0x003f, 0x003f, 0xe154, 0x003f, 0x003f,
+    0x003f, 0xe247, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2a9, 0x003f, 0x003f,
+    0x003f, 0xead5, 0x003f, 0x003f, 0xf1d7, 0x003f, 0x003f, 0x003f,
+    0xf256, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf2bd, 0xf966, 0x003f, 0x003f, 0xe8f4, 0x003f, 0xf2aa, 0xf749,
+    0x003f, 0xf5e9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xecd9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xebc6, 0x003f, 0x003f, 0x003f, 0xe54f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xea78, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x7c00 .. 0x7cff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf37a,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf4c2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4af, 0x003f,
+    0x003f, 0xe06b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf967,
+    0x003f, 0x003f, 0xf1d8, 0xebc7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf568, 0xe643, 0xe9ad,
+    0x003f, 0x003f, 0x003f, 0xe5be, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf3c3, 0xf26f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe67b, 0x003f, 0x003f, 0x003f, 0xf569, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe6e6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe847, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe9fb, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe9cf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe733, 0x003f, 0x003f, 0xe869, 0x003f, 0xf368,
+    0xf2c4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xebd8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3d4, 0x003f, 0xf1f2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5db, 0x003f,
+    0x003f, 0xe5dc, 0xf4c4, 0xe0d7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xec46, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2f1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf8d5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4d8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9d0, 0xf369,
+    0xe0b3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5dd,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe1a7, 0x003f, 0x003f, 0xe33c, 0x003f,
+    /* 0x7d00 .. 0x7dff */
+    0xe3ba, 0x003f, 0xf3c4, 0x003f, 0xedb3, 0xf8f5, 0xefe1, 0xf9e0,
+    0xf94c, 0x003f, 0xe832, 0xe833, 0x003f, 0xe431, 0x003f, 0x003f,
+    0xe491, 0x003f, 0x003f, 0x003f, 0xec7d, 0x003f, 0x003f, 0xea79,
+    0xe26c, 0xf445, 0xe374, 0xe9d1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xebc8, 0xe8b7, 0xeae3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf1b9, 0xf3c5, 0x003f, 0xf4cf, 0xe6ab,
+    0xebac, 0x003f, 0x003f, 0xeceb, 0x003f, 0xf257, 0x003f, 0x003f,
+    0x003f, 0xebc9, 0xe09c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf39d, 0xf871, 0xf36a, 0xe177, 0xe896, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe14f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe27d, 0x003f,
+    0x003f, 0xe5a9, 0xf872, 0x003f, 0x003f, 0x003f, 0xe375, 0x003f,
+    0xf0d6, 0x003f, 0xf16f, 0x003f, 0x003f, 0x003f, 0xeafc, 0x003f,
+    0x003f, 0xf6d6, 0xea7a, 0xe0b4, 0x003f, 0x003f, 0xf2be, 0x003f,
+    0x003f, 0xe145, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2bd,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2f2, 0xec47,
+    0x003f, 0x003f, 0x003f, 0xe178, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf39e, 0x003f, 0x003f, 0x003f,
+    0xe670, 0x003f, 0xf3c6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xec48, 0xf0ab, 0x003f, 0x003f,
+    0x003f, 0xe0b5, 0xe761, 0x003f, 0xf55e, 0xf4f7, 0x003f, 0x003f,
+    0xe6c6, 0x003f, 0xe3bb, 0xf6aa, 0x003f, 0xf1ca, 0xe6d3, 0xe79c,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf655,
+    0x003f, 0x003f, 0xe3cc, 0xe9fc, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeafd, 0x003f,
+    0xf7e5, 0x003f, 0xeb5a, 0x003f, 0x003f, 0xf49f, 0xe4b0, 0x003f,
+    0xf595, 0xe859, 0x003f, 0xee6e, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf74a, 0xef60, 0x003f, 0x003f, 0xe79d, 0x003f, 0x003f, 0xf065,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe633, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf656, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x7e00 .. 0x7eff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf46b, 0xed9e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xef42, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe86a, 0x003f, 0xf46c, 0xf8d6, 0xefb2,
+    0x003f, 0xf23d, 0x003f, 0xf873, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe97e, 0x003f, 0x003f, 0xf5ea, 0xee70,
+    0x003f, 0xf39f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6ac,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5c5, 0xf270, 0x003f,
+    0x003f, 0xe8e5, 0x003f, 0xe9de, 0x003f, 0x003f, 0xe7f0, 0xefa3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf3f9, 0x003f, 0xf454, 0xeb5b, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xefa4, 0x003f,
+    0x003f, 0xec49, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xecb1, 0xf97b, 0xe1a8, 0x003f, 0xe146, 0x003f, 0x003f,
+    0xf36b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xee4a, 0x003f, 0x003f, 0xe1a9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf4c3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xebd9, 0x003f, 0x003f, 0xf2ab,
+    0x003f, 0x003f, 0x003f, 0xeec5, 0x003f, 0x003f, 0xeb79, 0x003f,
+    0xf4c5, 0x003f, 0x003f, 0xe550, 0xe5bf, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x7f00 .. 0x7fff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9ae, 0x003f,
+    0xf7fc, 0x003f, 0xe150, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xeda2, 0x003f, 0x003f, 0x003f,
+    0xe248, 0x003f, 0x003f, 0x003f, 0xe762, 0xf7d6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf3aa, 0xe261, 0x003f, 0x003f, 0xf657, 0x003f,
+    0xe8eb, 0x003f, 0xeafe, 0x003f, 0x003f, 0xe771, 0x003f, 0xf6f3,
+    0x003f, 0xe6e7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5a0, 0x003f, 0x003f,
+    0xe3bc, 0x003f, 0xedcf, 0x003f, 0xe0b6, 0x003f, 0xe848, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe1c4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe64e, 0x003f, 0x003f, 0x003f, 0xec4a, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe2d8, 0x003f, 0x003f, 0x003f,
+    0xeb5c, 0xf0f9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf9fd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe6e8, 0xe0d8, 0x003f, 0x003f, 0x003f, 0xefe2, 0x003f, 0x003f,
+    0x003f, 0xef4a, 0x003f, 0x003f, 0x003f, 0xecc7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf15d, 0x003f, 0xf15e, 0x003f, 0xe64f, 0x003f,
+    0x003f, 0x003f, 0xeca7, 0x003f, 0xead6, 0xf9e8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf271,
+    0xf638, 0xe9fd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf74b, 0x003f, 0xef61, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf7d7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe27e, 0x003f, 0x003f, 0xf15f, 0x003f, 0x003f, 0x003f,
+    /* 0x8000 .. 0x80ff */
+    0xefa5, 0xe665, 0x003f, 0xe1c5, 0x003f, 0xf1ba, 0xe3bd, 0x003f,
+    0x003f, 0xe2be, 0x003f, 0x003f, 0xf14b, 0x003f, 0x003f, 0x003f,
+    0xe441, 0x003f, 0x003f, 0x003f, 0x003f, 0xe179, 0x003f, 0xe7c4,
+    0xeffc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3be, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf14c, 0x003f, 0x003f, 0xedad, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf6b0, 0x003f, 0xe17a,
+    0x003f, 0x003f, 0x003f, 0xe4c4, 0x003f, 0x003f, 0xe650, 0x003f,
+    0x003f, 0x003f, 0xe69f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeba1, 0x003f,
+    0xea4d, 0x003f, 0xf639, 0x003f, 0x003f, 0x003f, 0xe834, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe634,
+    0xf5c6, 0x003f, 0xeba2, 0xefc6, 0x003f, 0x003f, 0x003f, 0xf455,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf579, 0xe67c, 0xf0d3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf14d, 0xec6c, 0xea7b, 0xf36c,
+    0x003f, 0xf0bf, 0x003f, 0xe6ce, 0xe3bf, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5ab, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf7fd, 0x003f, 0xe06c, 0x003f, 0x003f,
+    0x003f, 0xe1c6, 0xf446, 0x003f, 0x003f, 0xe9fe, 0x003f, 0x003f,
+    0x003f, 0xe147, 0xe8b8, 0x003f, 0x003f, 0x003f, 0x003f, 0xe379,
+    0x003f, 0xe26d, 0xf0c0, 0x003f, 0xf9a2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf75b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf066, 0xf3b0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe8ce, 0x003f, 0xf6c3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe8cf, 0xe0a4, 0x003f, 0x003f, 0xf770, 0x003f,
+    0x003f, 0xf8d7, 0x003f, 0x003f, 0xf0ca, 0xeb31, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe25d, 0x003f, 0x003f, 0xe56c, 0x003f, 0x003f, 0x003f,
+    0xf9d8, 0x003f, 0x003f, 0x003f, 0x003f, 0xe498, 0x003f, 0x003f,
+    /* 0x8100 .. 0x81ff */
+    0x003f, 0x003f, 0xf447, 0x003f, 0x003f, 0xf898, 0xf63a, 0xf899,
+    0xe776, 0x003f, 0xf541, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xef62, 0x003f, 0xe055, 0xe17b, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xec7e, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xec4b, 0x003f, 0xf6ad, 0x003f, 0x003f, 0x003f, 0xf771,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf4ec, 0x003f, 0x003f, 0x003f, 0x003f, 0xea31, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xed9f, 0x003f, 0x003f, 0xecec, 0x003f,
+    0xe9af, 0xe9b0, 0x003f, 0x003f, 0xe0b7, 0xef63, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeba3, 0xe470, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf3a0, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xefa6, 0xe0f2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf1f3, 0xe969, 0xeb5d, 0x003f, 0x003f, 0x003f, 0x003f, 0xf6da,
+    0xe8b9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe13e, 0x003f, 0xe86b, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1c7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe9b1, 0x003f, 0xe73f, 0xeca3, 0x003f, 0x003f,
+    0xe291, 0x003f, 0x003f, 0xf495, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf743, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xeb5e, 0x003f, 0xf5fd, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf0ec, 0x003f, 0x003f, 0xe4c5, 0xf97c, 0xe46b,
+    0xe57b, 0x003f, 0xea32, 0x003f, 0x003f, 0x003f, 0xede6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf340, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe5c4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1f4,
+    0x003f, 0x003f, 0x003f, 0xeced, 0x003f, 0xef52, 0x003f, 0xf1f5,
+    0xe6fc, 0x003f, 0xf1bb, 0x003f, 0x003f, 0xf63b, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf448, 0xf658, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe4e6, 0xf46d, 0xe2bf, 0x003f, 0xf0ac, 0x003f,
+    /* 0x8200 .. 0x82ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2c0, 0x003f, 0xee38,
+    0xf9e9, 0x003f, 0xe2c1, 0x003f, 0xeb6f, 0xea7c, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeb32, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf54f, 0xec91, 0x003f, 0xe7f1, 0xf3c7,
+    0x003f, 0xe0b8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf7fe, 0xe8ba, 0xe897, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf67c, 0xe86c, 0xf874,
+    0x003f, 0xeb5f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe9b2, 0x003f, 0x003f, 0x003f, 0x003f, 0xee39, 0x003f, 0xf2f3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf4ed, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf0fa, 0x003f, 0xf7e6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe06d, 0xe5de,
+    0x003f, 0xe06e, 0xeae4, 0x003f, 0x003f, 0x003f, 0xee9f, 0x003f,
+    0xf5ac, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xed97, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xefe3, 0x003f, 0xf1cb, 0xe2e4, 0x003f,
+    0x003f, 0x003f, 0xe763, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe9b3, 0xe57c, 0x003f, 0x003f, 0xf449, 0x003f, 0xeab7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0ce, 0xf8d8, 0x003f,
+    0x003f, 0xe369, 0x003f, 0x003f, 0xe9d2, 0xf6f4, 0xeedc, 0xed35,
+    0x003f, 0xf933, 0x003f, 0xe8bb, 0x003f, 0x003f, 0x003f, 0xf44a,
+    0xeffd, 0xe35a, 0x003f, 0xf5d6, 0xe7c5, 0xed44, 0x003f, 0xf1a7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf04d, 0xeea0, 0x003f, 0xf6c4, 0xf5ad, 0x003f, 0xe7e0,
+    0x003f, 0x003f, 0x003f, 0xe044, 0x003f, 0x003f, 0xf772, 0xe2c2,
+    0x003f, 0xf14e, 0x003f, 0x003f, 0x003f, 0xedb4, 0xe1c8, 0xf258,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeec8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1c9, 0xf7b7, 0x003f,
+    /* 0x8300 .. 0x83ff */
+    0x003f, 0xf3e8, 0xe7f2, 0xe8f5, 0xe045, 0xe7c6, 0x003f, 0x003f,
+    0x003f, 0xe759, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7ab,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf1bc, 0x003f, 0x003f, 0xe764, 0x003f, 0x003f, 0x003f, 0xe96a,
+    0x003f, 0xec4c, 0x003f, 0x003f, 0xf97d, 0xf170, 0xe4a0, 0x003f,
+    0xefc7, 0xee3a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xec92, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf84b,
+    0x003f, 0xf5ae, 0xf8aa, 0x003f, 0x003f, 0x003f, 0x003f, 0xf19d,
+    0x003f, 0xf14f, 0xf968, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe575, 0x003f, 0x003f, 0x003f, 0xf7c3,
+    0x003f, 0x003f, 0x003f, 0xf272, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe6e9, 0xf1f6, 0x003f, 0x003f, 0x003f, 0xea7d, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe17c, 0x003f,
+    0xecee, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xef64, 0x003f,
+    0x003f, 0x003f, 0xf89a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe9b4, 0xed45, 0xe740, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe765, 0x003f, 0x003f,
+    0x003f, 0xf57a, 0x003f, 0x003f, 0x003f, 0xe249, 0x003f, 0x003f,
+    0x003f, 0xe671, 0xe2d2, 0x003f, 0xe346, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe232, 0x003f, 0x003f, 0xf4ee, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf4f8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe95c, 0x003f, 0xe35b, 0x003f, 0x003f, 0x003f, 0xf934,
+    0xe1ca, 0xe6d4, 0xea33, 0x003f, 0xed70, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf259, 0x003f, 0x003f, 0x003f, 0xec6d, 0x003f, 0x003f,
+    /* 0x8400 .. 0x84ff */
+    0x003f, 0x003f, 0x003f, 0xf5fe, 0xe53c, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe5d1, 0x003f, 0xe792, 0xf753, 0xf067, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf5d7, 0x003f, 0x003f, 0xe74f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf9c0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf0ad, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5aa, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeea8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf25a,
+    0x003f, 0x003f, 0x003f, 0xe077, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf773, 0x003f, 0xe56d, 0x003f, 0x003f, 0xf068, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf8d9, 0xf1f7, 0x003f, 0x003f, 0xedb5,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe33d, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf3f1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xec4d, 0x003f, 0x003f, 0x003f, 0xecc8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe7d5, 0x003f, 0x003f, 0xeaaa, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe8bc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf774, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf3fa, 0x003f, 0x003f, 0xedb6, 0xf4ef, 0x003f, 0x003f, 0xf8da,
+    0xebe0, 0x003f, 0xe7ac, 0x003f, 0xf5eb, 0x003f, 0xeb46, 0x003f,
+    0x003f, 0xefc8, 0x003f, 0xe0cf, 0x003f, 0xecc9, 0x003f, 0x003f,
+    0x003f, 0xea7e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xec4e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe991, 0x003f, 0xe635, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xec93, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe6a0, 0x003f, 0x003f, 0x003f,
+    /* 0x8500 .. 0x85ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe7a1, 0x003f, 0xe750, 0xe96b, 0x003f, 0x003f, 0xf1bd,
+    0xeab8, 0x003f, 0xf035, 0x003f, 0x003f, 0x003f, 0xe6ad, 0x003f,
+    0x003f, 0xf4f9, 0x003f, 0xf1f8, 0x003f, 0xf5c7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xebca, 0xf0e3, 0x003f, 0xf46e,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf75c, 0x003f, 0xf069,
+    0x003f, 0xe4c6, 0x003f, 0xe8e6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf5af, 0x003f, 0x003f, 0x003f, 0x003f, 0xe292, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xeffe, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf8b6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xec94, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe2f2, 0xf6b9, 0xe7f3, 0x003f, 0x003f, 0xebcb, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe86d, 0x003f, 0x003f, 0xe849,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf0fb,
+    0x003f, 0xe0b9, 0x003f, 0x003f, 0xf1f9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xeb70, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf550, 0x003f,
+    0xf9bc, 0xeab1, 0xecef, 0x003f, 0x003f, 0x003f, 0x003f, 0xeb33,
+    0xf9b9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf341, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe1cb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf1be, 0x003f, 0x003f, 0x003f, 0xe5c0, 0xecf0, 0xf1fa,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xefe4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe5ed, 0xeedd, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe598, 0xedb7, 0x003f, 0x003f,
+    0x003f, 0xe8e7, 0xec4f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf25b,
+    0x003f, 0x003f, 0xe6f4, 0xf36d, 0x003f, 0x003f, 0x003f, 0xe23b,
+    /* 0x8600 .. 0x86ff */
+    0x003f, 0x003f, 0xeede, 0x003f, 0x003f, 0x003f, 0xe666, 0xebcc,
+    0x003f, 0x003f, 0xef43, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xedee, 0xe932,
+    0x003f, 0x003f, 0xeb60, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5b5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5a1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf8db, 0x003f,
+    0xf7cb, 0x003f, 0x003f, 0x003f, 0xe0f3, 0xf535, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf858, 0xe667, 0x003f, 0xefe5, 0xf8dc,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf9d0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf8f6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe835, 0x003f, 0xe8bd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf172, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe1f7, 0xf36e, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf659, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xea91,
+    0x003f, 0x003f, 0x003f, 0xe4b1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf97e, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xef53, 0x003f, 0xf3c8, 0x003f, 0x003f, 0x003f, 0xe293,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf7ed, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf496, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xed46, 0x003f,
+    /* 0x8700 .. 0x87ff */
+    0xf5b9, 0x003f, 0xe992, 0xecf1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xef35, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf44b, 0x003f, 0xea34, 0x003f, 0xe85c, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe079, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xecda, 0x003f, 0xf969,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf06a,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf7c4, 0x003f,
+    0xeca4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf8dd, 0x003f, 0xf2ca, 0x003f,
+    0xef54, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe5cc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf0d7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7ad,
+    0x003f, 0x003f, 0xf8ab, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe4d9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe5a2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf66e, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe898, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xeb61, 0x003f, 0x003f, 0xefa8,
+    0x003f, 0x003f, 0xf5f9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf83f, 0x003f, 0xf0fc, 0x003f, 0x003f, 0xeb7a, 0x003f,
+    /* 0x8800 .. 0x88ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xecb2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5c5,
+    0x003f, 0x003f, 0xf3e3, 0xe5ee, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe1cc, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1d9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe751, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf87c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3eb, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf84c, 0xee72, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf875, 0xec9c, 0x003f, 0x003f, 0x003f, 0xe046,
+    0x003f, 0xed47, 0x003f, 0xf06b, 0x003f, 0xf5fa, 0x003f, 0x003f,
+    0x003f, 0xf8ac, 0xe2c3, 0xf0fd, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf79c, 0x003f, 0x003f, 0xeab9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xebf1, 0x003f, 0xe434, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5fb,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe36a, 0xe36b,
+    0x003f, 0xf04e, 0xe7b1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe047, 0x003f, 0x003f, 0xe4e7, 0x003f, 0xf775, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe4b2, 0x003f, 0x003f, 0x003f, 0xec50, 0xf46f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1e5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf7ac, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe1cd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf23e, 0xe63e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6ea,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xeee0, 0xf0ae, 0x003f, 0x003f,
+    0x003f, 0xe2d9, 0x003f, 0x003f, 0xe95d, 0xf1fb, 0x003f, 0xea92,
+    0x003f, 0xe6eb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xea35, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xead7, 0xe8d0, 0xe8d1, 0x003f, 0x003f,
+    0xe5a3, 0x003f, 0x003f, 0x003f, 0x003f, 0xf342, 0x003f, 0x003f,
+    /* 0x8900 .. 0x89ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe96c,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe078, 0x003f, 0xf776, 0xe95e, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf06c, 0xe8d2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xefb3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf6db, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeca8, 0x003f,
+    0xe6ae, 0x003f, 0x003f, 0xeb71, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe0ba, 0x003f, 0x003f, 0xedd1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe36c,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe5c1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe75a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeca9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeb34,
+    0x003f, 0xefa9, 0x003f, 0xe4c7, 0x003f, 0x003f, 0xe96d, 0xf73e,
+    0x003f, 0x003f, 0x003f, 0xe148, 0x003f, 0x003f, 0x003f, 0xe33e,
+    0x003f, 0x003f, 0x003f, 0xe794, 0x003f, 0x003f, 0xecca, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe13f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe53d, 0xf661, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe35c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe056, 0x003f, 0x003f, 0xe5c2, 0x003f, 0x003f,
+    0xe24a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe057, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf840, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xead8, 0x003f, 0x003f, 0x003f,
+    0xf5ba, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x8a00 .. 0x8aff */
+    0xedeb, 0x003f, 0xf2f4, 0xe9b5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe1aa, 0x003f, 0xecf2, 0x003f, 0xf8f7, 0x003f, 0xf6d0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf9ba, 0x003f, 0x003f, 0xf9e1, 0xf6a0,
+    0xe3c0, 0x003f, 0x003f, 0xef55, 0x003f, 0xed48, 0x003f, 0xebe8,
+    0x003f, 0x003f, 0x003f, 0xe151, 0x003f, 0xe47d, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe8be, 0x003f, 0x003f, 0xeb72, 0x003f, 0x003f,
+    0x003f, 0xf859, 0x003f, 0x003f, 0xebcd, 0x003f, 0xe048, 0x003f,
+    0x003f, 0x003f, 0xf470, 0xf3c9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xea93, 0x003f, 0x003f, 0x003f, 0xf36f, 0xf754, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf25c, 0x003f, 0x003f, 0xea94, 0x003f,
+    0xeec9, 0x003f, 0xec95, 0xeee1, 0x003f, 0x003f, 0xeccb, 0x003f,
+    0x003f, 0xeccc, 0x003f, 0x003f, 0x003f, 0xe2f8, 0xf2ac, 0x003f,
+    0xf9fe, 0xf935, 0xf841, 0xead9, 0x003f, 0xeb62, 0x003f, 0x003f,
+    0x003f, 0xf56a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3ca, 0x003f, 0xe233,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf44c, 0xf173, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xeb35, 0x003f, 0xf6ab, 0x003f, 0x003f,
+    0xf0af, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xedde, 0x003f,
+    0xeba4, 0xe1ab, 0x003f, 0xe7f4, 0xef36, 0xe1ce, 0xebe9, 0x003f,
+    0xf991, 0x003f, 0xeb73, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xec51, 0x003f, 0xe234, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xea36, 0x003f, 0x003f, 0xf0fe, 0x003f, 0xf0dd, 0xf370,
+    0x003f, 0x003f, 0xf56b, 0x003f, 0xec96, 0x003f, 0x003f, 0xe4c8,
+    0x003f, 0x003f, 0x003f, 0xf57b, 0x003f, 0xf245, 0x003f, 0xf5d8,
+    0x003f, 0x003f, 0xe5df, 0x003f, 0x003f, 0x003f, 0xe675, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf0b0, 0xf573, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeccd, 0x003f, 0x003f, 0x003f, 0x003f, 0xf596, 0xf842,
+    0x003f, 0x003f, 0xf2f5, 0xe06f, 0x003f, 0xf0b1, 0xf1bf, 0x003f,
+    0x003f, 0xf9c9, 0x003f, 0x003f, 0x003f, 0x003f, 0xed36, 0xf7a4,
+    0xf343, 0x003f, 0xedec, 0x003f, 0x003f, 0x003f, 0xe3e7, 0x003f,
+    /* 0x8b00 .. 0x8bff */
+    0xe7c7, 0xed67, 0xf06d, 0x003f, 0xe599, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe84a, 0x003f,
+    0xe85d, 0x003f, 0x003f, 0x003f, 0xf7cc, 0x003f, 0xebda, 0xe8bf,
+    0x003f, 0xe155, 0xf160, 0xe0bb, 0x003f, 0xea95, 0x003f, 0x003f,
+    0xefaa, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe7c8, 0x003f, 0x003f, 0xf273, 0xe6bd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe2c4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe35d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf936, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf3fb, 0x003f, 0x003f, 0x003f, 0x003f, 0xf9d2, 0xe3c1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xecdb, 0x003f, 0xe4c9, 0x003f, 0xe95f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe17d, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xea37, 0x003f, 0x003f, 0xee4b,
+    0xf131, 0x003f, 0x003f, 0x003f, 0xe149, 0x003f, 0x003f, 0xf8de,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeee2, 0x003f, 0x003f,
+    0xe551, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe938, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xec52, 0x003f, 0xf4d8, 0xedd3, 0x003f, 0x003f, 0xf4d9, 0x003f,
+    0x003f, 0x003f, 0xf4c6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x8c00 .. 0x8cff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1db,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1ac,
+    0x003f, 0xf953, 0x003f, 0x003f, 0x003f, 0x003f, 0xe577, 0x003f,
+    0xe3c2, 0x003f, 0xf7a5, 0x003f, 0xef65, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xecce, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe55a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeada, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf8df, 0xeee3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf79d, 0xeccf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf5b0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe777, 0x003f, 0xe7c9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf73f, 0xf2f6, 0x003f,
+    0xe9b6, 0xf23f, 0xe1f8, 0x003f, 0x003f, 0x003f, 0x003f, 0xea48,
+    0xf937, 0xf6fc, 0xf6b1, 0xe24b, 0xf531, 0x003f, 0x003f, 0xf25d,
+    0xebae, 0x003f, 0x003f, 0xf153, 0xe2fe, 0x003f, 0xf74f, 0xe772,
+    0xe4e8, 0x003f, 0x003f, 0xea38, 0xf574, 0xf152, 0x003f, 0xe7f5,
+    0xf7c5, 0xe9d3, 0xe693, 0xf19e, 0xf992, 0x003f, 0x003f, 0xf1c0,
+    0xe049, 0x003f, 0xf274, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf471, 0x003f, 0xea49, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe694, 0x003f, 0xea96, 0x003f, 0xeadb, 0x003f,
+    0xe8d3, 0x003f, 0xf877, 0xe773, 0xf551, 0x003f, 0xe9b7, 0x003f,
+    0x003f, 0x003f, 0xf497, 0x003f, 0x003f, 0xe53e, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe695, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe9b8, 0xe2c5, 0xeadf, 0x003f, 0x003f,
+    /* 0x8d00 .. 0x8dff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf44e, 0xf631, 0x003f, 0xf0cb,
+    0xf3fc, 0x003f, 0xf4c7, 0x003f, 0x003f, 0xeb7b, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf1fc, 0x003f, 0x003f, 0xebdb, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf275, 0x003f, 0xea97, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf863, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf3cb, 0x003f, 0x003f, 0xe33f, 0xe9b9, 0x003f, 0x003f, 0xe3c3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5b1, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf056, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf371, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf63c, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf5d9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf37b, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe9ba, 0x003f, 0x003f, 0x003f, 0xf44f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf6c5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe8a2, 0xf498, 0x003f, 0x003f, 0xe04a,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf6f5, 0x003f, 0xe0e5, 0x003f, 0x003f,
+    0x003f, 0xf276, 0x003f, 0xeb63, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe235, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe668,
+    0x003f, 0x003f, 0x003f, 0xe53f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x8e00 .. 0x8eff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xefc9, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4ce,
+    0xf552, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0e6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf3a1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf0b2, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3a2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf0b3, 0x003f, 0xf344, 0x003f, 0x003f, 0xe0f4,
+    0xe540, 0xf4b2, 0xf8b7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf5ec, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf277,
+    0xf542, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf5ed, 0x003f, 0xe2f3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf372, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf25e,
+    0x003f, 0x003f, 0xf3cc, 0x003f, 0x003f, 0xedb8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe6f5, 0xecf3, 0xe2e5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe2c6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf4b3, 0xed68, 0xe2f9, 0xe2da, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf85d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xee73,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf472, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf5ee, 0x003f, 0x003f, 0xe04b, 0x003f, 0x003f, 0xecdc, 0x003f,
+    /* 0x8f00 .. 0x8fff */
+    0x003f, 0x003f, 0x003f, 0xe294, 0x003f, 0xe669, 0x003f, 0x003f,
+    0x003f, 0xf240, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf575, 0xe752, 0xe960, 0xe17e, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe5e0, 0xf65a, 0xf9ca, 0xe766, 0xf55f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe636, 0xe94e,
+    0x003f, 0xe8d4, 0xe6c7, 0x003f, 0x003f, 0x003f, 0x003f, 0xf4a0,
+    0x003f, 0x003f, 0x003f, 0xf3cd, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xec53, 0xe96e, 0x003f, 0xe96f, 0x003f, 0x003f, 0xf2ad, 0xee3b,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf7dd, 0xf04f, 0x003f, 0x003f,
+    0x003f, 0xf2ae, 0x003f, 0x003f, 0x003f, 0xf560, 0xe295, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xee3c, 0x003f, 0xe26e,
+    0x003f, 0x003f, 0xe5f9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xecf4, 0xe1d0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe5b8, 0x003f, 0x003f, 0xf6fd, 0x003f,
+    0xe939, 0x003f, 0x003f, 0x003f, 0x003f, 0xea98, 0x003f, 0xe93a,
+    0xf473, 0xefb4, 0xe46c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xefe6, 0x003f, 0x003f, 0xecf6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeeca, 0x003f,
+    0x003f, 0xe35e, 0x003f, 0x003f, 0xe899, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe04c, 0x003f,
+    0x003f, 0x003f, 0xf278, 0xe86e, 0x003f, 0xf499, 0x003f, 0x003f,
+    0xec9d, 0x003f, 0xe136, 0x003f, 0x003f, 0x003f, 0x003f, 0xe84b,
+    0x003f, 0xf279, 0x003f, 0x003f, 0x003f, 0xf5da, 0x003f, 0x003f,
+    /* 0x9000 .. 0x90ff */
+    0xf6dc, 0xebea, 0xe251, 0xe541, 0x003f, 0xf9b1, 0xee4d, 0x003f,
+    0xf8ad, 0x003f, 0x003f, 0xf777, 0x003f, 0xebce, 0x003f, 0xf6e2,
+    0xf5ef, 0xe2c7, 0x003f, 0x003f, 0xe542, 0xe191, 0x003f, 0xe578,
+    0x003f, 0xf25f, 0xf6d7, 0x003f, 0x003f, 0xeb36, 0xe651, 0xebdc,
+    0xf373, 0xf3e4, 0xe993, 0xe637, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf597, 0x003f,
+    0x003f, 0xf3ce, 0xf474, 0x003f, 0x003f, 0xe340, 0x003f, 0x003f,
+    0xf191, 0x003f, 0x003f, 0x003f, 0xf7ba, 0x003f, 0xf0b5, 0x003f,
+    0x003f, 0xe57d, 0xec54, 0x003f, 0x003f, 0x003f, 0x003f, 0xefe7,
+    0x003f, 0x003f, 0xf0b4, 0xf031, 0x003f, 0xf74c, 0xe236, 0x003f,
+    0xf7c6, 0xf96a, 0x003f, 0xe543, 0xe4b9, 0xf06e, 0x003f, 0x003f,
+    0x003f, 0xefab, 0x003f, 0x003f, 0xebe1, 0xe4cf, 0xf598, 0x003f,
+    0xf050, 0xebcf, 0x003f, 0xe14a, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf27a, 0x003f, 0x003f, 0x003f, 0xf374, 0xf4b4, 0xe57e,
+    0x003f, 0x003f, 0xf450, 0x003f, 0x003f, 0xf3e5, 0x003f, 0xf553,
+    0xeb64, 0x003f, 0xf0b6, 0x003f, 0xe6a1, 0xe0e8, 0x003f, 0xf7ad,
+    0xefad, 0xe774, 0xf843, 0xec55, 0xf94d, 0x003f, 0x003f, 0xf154,
+    0xe741, 0x003f, 0xe93b, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5a4,
+    0x003f, 0xf0e9, 0x003f, 0x003f, 0x003f, 0xef4b, 0x003f, 0x003f,
+    0x003f, 0xe767, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf8ae, 0xe3e1, 0x003f, 0x003f, 0xe8c0, 0x003f,
+    0xf5be, 0x003f, 0xea99, 0x003f, 0x003f, 0x003f, 0x003f, 0xe09d,
+    0xf6c6, 0xe2c8, 0x003f, 0x003f, 0x003f, 0xebd0, 0x003f, 0x003f,
+    0xf260, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeff4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe296, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5cd, 0x003f,
+    0x003f, 0xe2db, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe9bb, 0x003f, 0x003f, 0x003f, 0x003f, 0xe23c, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xefe8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe544, 0x003f, 0x003f,
+    /* 0x9100 .. 0x91ff */
+    0x003f, 0x003f, 0xed57, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf5db, 0x003f, 0x003f, 0xf851, 0x003f, 0x003f,
+    0x003f, 0xea39, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe59a,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2f7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe4b3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf0b7, 0xf2f8, 0xf5dc, 0xf1cc, 0xe8d5, 0xf3cf, 0x003f,
+    0x003f, 0x003f, 0xf3d0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf5b2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe7ae, 0xe5ac, 0x003f, 0xec56, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf9a3, 0x003f, 0xf8e5,
+    0xeaab, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xec97,
+    0x003f, 0xf63d, 0x003f, 0xf5b3, 0x003f, 0xf345, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeba5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf5dd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf132, 0xf1fd, 0x003f, 0xf5b4, 0xf8b8,
+    0x003f, 0xe8a3, 0x003f, 0x003f, 0xe65a, 0xe0d9, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xedd4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf4fa,
+    0x003f, 0xf0b8, 0x003f, 0xeb47, 0xe6ec, 0xf3ec, 0xedaf, 0xe5e1,
+    0xe6ed, 0xe3d1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xebf2,
+    0xf2f9, 0x003f, 0x003f, 0x003f, 0xe9bc, 0xf66c, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf375, 0x003f, 0x003f, 0x003f, 0xf554,
+    0x003f, 0x003f, 0xefe9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf4fb, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9200 .. 0x92ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe591, 0x003f, 0x003f,
+    0xe132, 0xf6fe, 0xeabc, 0x003f, 0x003f, 0x003f, 0x003f, 0xf0cd,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe347, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe652, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xef3d, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2af,
+    0xe0a5, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0e9, 0x003f, 0x003f,
+    0x003f, 0xf878, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe156,
+    0x003f, 0x003f, 0x003f, 0xee77, 0x003f, 0x003f, 0xf057, 0x003f,
+    0x003f, 0x003f, 0xe8a4, 0x003f, 0xe2c9, 0xec9e, 0xf2fa, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf0de, 0x003f, 0x003f, 0xf5c8, 0x003f, 0xe56e, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeb65, 0x003f, 0xf2b0, 0x003f, 0x003f, 0xec57, 0x003f,
+    0xe7af, 0x003f, 0x003f, 0x003f, 0xf7e7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xeee5, 0x003f, 0x003f, 0xe2ca, 0xebd1,
+    0x003f, 0xec58, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf2fb, 0x003f, 0x003f, 0xf89b,
+    0x003f, 0x003f, 0xe994, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xeb37, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf778, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe0ea, 0x003f, 0x003f, 0x003f, 0xe0bc, 0x003f, 0x003f, 0x003f,
+    /* 0x9300 .. 0x93ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe672, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf5de, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf5df, 0x003f, 0xf246, 0x003f, 0x003f, 0x003f, 0xec98, 0xe4ca,
+    0xf2fc, 0xe3c4, 0xf2b1, 0x003f, 0xe3c5, 0x003f, 0xe36e, 0x003f,
+    0xe7e1, 0x003f, 0x003f, 0xeb48, 0x003f, 0x003f, 0xe1d1, 0xf4b9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xeecc, 0x003f, 0xe638, 0xe237, 0x003f, 0xe545, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xed58, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe4b4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf0b9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0f5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf66d, 0x003f, 0xf3a3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe157, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xefca, 0x003f, 0xebf0, 0x003f,
+    0x003f, 0x003f, 0xf5e0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf8af, 0x003f, 0x003f, 0x003f, 0xe0d1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf8e0, 0xf475, 0x003f, 0x003f,
+    0xf192, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf37c, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf27b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xefcb, 0x003f,
+    0x003f, 0xe192, 0x003f, 0x003f, 0xe6af, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf4a1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9400 .. 0x94ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf997, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf3a4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeb66, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf2b2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf561, 0x003f, 0x003f,
+    0xf6a1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf3d1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe09e, 0xe09f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe25e, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf4c8, 0x003f, 0xf4ba,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9500 .. 0x95ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1fe,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe836, 0x003f, 0x003f, 0xeb7c, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf75d, 0x003f, 0xe0d2, 0x003f, 0x003f, 0x003f, 0xf0ce,
+    0x003f, 0xf7d8, 0xf7d9, 0xe070, 0xe85a, 0x003f, 0x003f, 0x003f,
+    0xe0a6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe058, 0xf7ee, 0xe8ec, 0x003f, 0x003f,
+    0xe341, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5ef, 0x003f, 0x003f,
+    0x003f, 0xee95, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xeea2, 0xed69, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xed71,
+    0x003f, 0x003f, 0xf954, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf7ef, 0xe2f4, 0xf6e6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe24c, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf555, 0xe933, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9600 .. 0x96ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe9bd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf556, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf731, 0x003f, 0x003f, 0x003f, 0xef66, 0x003f,
+    0x003f, 0x003f, 0xe8c1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf376, 0x003f, 0x003f, 0x003f, 0xed49,
+    0xf67d, 0x003f, 0xf7ae, 0x003f, 0xe9be, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe6b0, 0xe778, 0xe0bd, 0x003f, 0x003f,
+    0xf7da, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf75e, 0xf7f0, 0xeb7d, 0xecb3, 0xf543,
+    0x003f, 0x003f, 0xf052, 0xf476, 0xf346, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe8d6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf0e4, 0x003f, 0x003f, 0xf477, 0x003f, 0xe6d5, 0xe546, 0xf7e8,
+    0xe6c1, 0x003f, 0x003f, 0x003f, 0x003f, 0xedd5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xefea, 0xe6cc, 0x003f,
+    0x003f, 0x003f, 0xe4e9, 0xec59, 0x003f, 0xf96b, 0xe1ad, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe140, 0xf032, 0x003f, 0x003f,
+    0xed98, 0xe350, 0x003f, 0xf347, 0xf231, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe6f6, 0x003f, 0x003f, 0x003f, 0xec5a,
+    0xec5b, 0x003f, 0xf85f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf0df, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe65b,
+    0x003f, 0x003f, 0x003f, 0xf544, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf1cd, 0xed62, 0x003f, 0x003f, 0xf039, 0xed4a, 0xf4a2, 0xe1d2,
+    0x003f, 0xf65b, 0x003f, 0xf3e6, 0xf1c1, 0xef4c, 0xf261, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf377, 0xec5c, 0x003f,
+    0x003f, 0xed3a, 0x003f, 0xf5e1, 0xf1da, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe6ee, 0xe3f1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xefeb, 0xefec, 0xeb74, 0x003f, 0x003f, 0x003f, 0x003f, 0xe837,
+    0xe9d4, 0x003f, 0xf033, 0x003f, 0x003f, 0x003f, 0xe653, 0xe696,
+    0x003f, 0xe86f, 0x003f, 0xf2b3, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9700 .. 0x97ff */
+    0xec5d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2fd, 0xf478,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf2c5, 0x003f, 0xeee7, 0x003f, 0x003f, 0xe6fd, 0x003f,
+    0x003f, 0xeece, 0x003f, 0x003f, 0xeadc, 0x003f, 0xf7c7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7f6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xeaac, 0x003f, 0xe66a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe934, 0x003f, 0x003f, 0x003f, 0xf348, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe5fa, 0x003f, 0xed99, 0x003f, 0x003f, 0x003f,
+    0xe654, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf57c, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2fe, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf331, 0x003f, 0xea3a, 0x003f,
+    0x003f, 0xe84c, 0xe79e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf864, 0x003f, 0x003f, 0x003f, 0xf175, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf938, 0x003f, 0x003f, 0xf176,
+    0x003f, 0x003f, 0xe75b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf8b9, 0x003f, 0xed63, 0x003f, 0xe1f9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe2d3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe07a, 0x003f, 0x003f, 0xe2d4, 0x003f, 0xf74d, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf557, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf06f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf7db, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe547, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf0e5, 0x003f, 0x003f, 0xebd2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf034, 0x003f, 0x003f, 0x003f, 0xf852,
+    /* 0x9800 .. 0x98ff */
+    0xf8e1, 0xf87d, 0xf332, 0xe193, 0x003f, 0xf833, 0xec99, 0x003f,
+    0xec5e, 0x003f, 0xeff5, 0x003f, 0xebeb, 0x003f, 0x003f, 0x003f,
+    0xeee8, 0xef67, 0xe89a, 0xe55b, 0x003f, 0x003f, 0x003f, 0xf6f6,
+    0xe655, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe579, 0x003f, 0x003f,
+    0xf89c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe194, 0xf6dd, 0x003f, 0xea4a, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe238, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf349, 0xeda0, 0xed59, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xed64, 0x003f, 0x003f, 0x003f,
+    0xf053, 0x003f, 0xf2b4, 0x003f, 0x003f, 0x003f, 0xe6be, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf8e2, 0x003f, 0xe1d3,
+    0x003f, 0x003f, 0x003f, 0xf2b5, 0x003f, 0x003f, 0x003f, 0xf879,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf7a6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeabd,
+    0x003f, 0xf6c7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf79f, 0x003f, 0x003f, 0xf79e,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xea3b, 0xe8e8, 0x003f, 0x003f, 0xecdd,
+    0x003f, 0xebe2, 0xe3c6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf660, 0xf0e6, 0xe89b,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf157, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xea9a, 0xf779, 0xecde, 0x003f,
+    /* 0x9900 .. 0x99ff */
+    0x003f, 0x003f, 0x003f, 0xe297, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf853, 0xedd7, 0x003f, 0xf158, 0x003f, 0x003f, 0x003f,
+    0xf4c9, 0x003f, 0x003f, 0xed4b, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xee3e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2b6, 0x003f,
+    0xe94f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe24d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe753, 0x003f, 0x003f,
+    0x003f, 0xe35f, 0x003f, 0xe2fa, 0xf4ca, 0xeb67, 0x003f, 0x003f,
+    0x003f, 0xe3c7, 0xefae, 0x003f, 0xef4d, 0x003f, 0x003f, 0xf854,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xec5f, 0x003f,
+    0x003f, 0xf855, 0x003f, 0x003f, 0x003f, 0xf7b8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe970, 0x003f, 0x003f,
+    0xf8b0, 0x003f, 0x003f, 0x003f, 0xe739, 0xeddf, 0xf7a7, 0x003f,
+    0x003f, 0xf67e, 0x003f, 0xf65c, 0xec9a, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf193, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe870, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf3d2, 0xe45c, 0xe2cb, 0x003f, 0x003f, 0xe04d, 0x003f, 0x003f,
+    0x003f, 0xe9bf, 0x003f, 0x003f, 0x003f, 0xf691, 0x003f, 0xea9b,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf844, 0x003f, 0x003f,
+    0x003f, 0xe5ad, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3e7,
+    /* 0x9a00 .. 0x9aff */
+    0x003f, 0xea4e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe950, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3c8, 0xe3c9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf74e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe0f6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe59b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5e2, 0xebd3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe779, 0x003f, 0x003f, 0xf7a0, 0x003f, 0xe2cc, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf9a4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe298, 0x003f, 0xf860,
+    0x003f, 0x003f, 0xe195, 0xee4e, 0x003f, 0x003f, 0x003f, 0xf63e,
+    0x003f, 0x003f, 0xe5f0, 0x003f, 0x003f, 0xe3ca, 0x003f, 0x003f,
+    0x003f, 0xf94e, 0xe5f1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe1e9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf845, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xec60, 0xf599, 0x003f, 0x003f, 0x003f,
+    0xe1d4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeea3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8a5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9b00 .. 0x9bff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xec61, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6a2,
+    0x003f, 0x003f, 0xf6e3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf036, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe331, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe26a, 0xf8eb, 0xe8a6, 0xe8de, 0xe775, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf070,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe73a, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xede0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe66b,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2c6, 0x003f,
+    0x003f, 0xf77a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xed65,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe299, 0x003f, 0x003f, 0xeb68, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe6ef, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf57d, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe1e6, 0x003f, 0x003f, 0x003f,
+    0xe196, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9c00 .. 0x9cff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5e3, 0x003f, 0x003f,
+    0xed5a, 0x003f, 0xe971, 0x003f, 0x003f, 0xf7c8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf94f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xef37, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe754, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0be,
+    0x003f, 0xe93e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6f7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf378, 0x003f, 0xe9c0,
+    0x003f, 0xe2cd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe995, 0xe7b0, 0x003f, 0xee79, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9d00 .. 0x9dff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xed4c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf054, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xed7c, 0x003f,
+    0xed75, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf8f8, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe14b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xed4d, 0x003f, 0x003f,
+    0xe1dc, 0xe7f7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe9df, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf1ce, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe7d0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeda3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf7cd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe1ae, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2ce,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf63f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf9d3, 0xf0ed, 0xe66c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9e00 .. 0x9eff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeda4, 0x003f, 0x003f, 0x003f, 0xe5b6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe66d, 0x003f, 0x003f,
+    0x003f, 0xf7e9, 0x003f, 0x003f, 0x003f, 0xeea4, 0x003f, 0xe673,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe3cb, 0xe674, 0x003f, 0x003f, 0x003f, 0xe5f2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xea9c, 0x003f, 0xe6f8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe77a, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe2d5, 0xe79f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe73b, 0x003f, 0x003f, 0xf9cb, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf96c, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeb38, 0xe5f3, 0x003f,
+    0x003f, 0xf9d9, 0x003f, 0x003f, 0xe133, 0x003f, 0x003f, 0x003f,
+    0xe7f9, 0x003f, 0x003f, 0xe4ea, 0xf5f5, 0x003f, 0xf2c7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe4da, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe84d, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9f00 .. 0x9fff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xef38,
+    0xe93f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf333, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe1d5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xeb39, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xea3c, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf34a, 0xf241, 0x003f, 0x003f, 0xf242, 0x003f,
+    0x003f, 0x003f, 0xf65d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf262,
+    0x003f, 0xe656, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeb75,
+    0x003f, 0x003f, 0xf4bb, 0x003f, 0xede1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xed5b,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6a3, 0x003f, 0x003f,
+    0xe8c2, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0a0, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe2cf, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0xac00 .. 0xacff */
+    0x8861, 0x8862, 0x8863, 0x8864, 0x8865, 0x8866, 0x8867, 0x8868,
+    0x8869, 0x886a, 0x886b, 0x886c, 0x886d, 0x886e, 0x886f, 0x8870,
+    0x8871, 0x8873, 0x8874, 0x8875, 0x8876, 0x8877, 0x8878, 0x8879,
+    0x887a, 0x887b, 0x887c, 0x887d, 0x8881, 0x8882, 0x8883, 0x8884,
+    0x8885, 0x8886, 0x8887, 0x8888, 0x8889, 0x888a, 0x888b, 0x888c,
+    0x888d, 0x888e, 0x888f, 0x8890, 0x8891, 0x8893, 0x8894, 0x8895,
+    0x8896, 0x8897, 0x8898, 0x8899, 0x889a, 0x889b, 0x889c, 0x889d,
+    0x88a1, 0x88a2, 0x88a3, 0x88a4, 0x88a5, 0x88a6, 0x88a7, 0x88a8,
+    0x88a9, 0x88aa, 0x88ab, 0x88ac, 0x88ad, 0x88ae, 0x88af, 0x88b0,
+    0x88b1, 0x88b3, 0x88b4, 0x88b5, 0x88b6, 0x88b7, 0x88b8, 0x88b9,
+    0x88ba, 0x88bb, 0x88bc, 0x88bd, 0x88c1, 0x88c2, 0x88c3, 0x88c4,
+    0x88c5, 0x88c6, 0x88c7, 0x88c8, 0x88c9, 0x88ca, 0x88cb, 0x88cc,
+    0x88cd, 0x88ce, 0x88cf, 0x88d0, 0x88d1, 0x88d3, 0x88d4, 0x88d5,
+    0x88d6, 0x88d7, 0x88d8, 0x88d9, 0x88da, 0x88db, 0x88dc, 0x88dd,
+    0x88e1, 0x88e2, 0x88e3, 0x88e4, 0x88e5, 0x88e6, 0x88e7, 0x88e8,
+    0x88e9, 0x88ea, 0x88eb, 0x88ec, 0x88ed, 0x88ee, 0x88ef, 0x88f0,
+    0x88f1, 0x88f3, 0x88f4, 0x88f5, 0x88f6, 0x88f7, 0x88f8, 0x88f9,
+    0x88fa, 0x88fb, 0x88fc, 0x88fd, 0x8941, 0x8942, 0x8943, 0x8944,
+    0x8945, 0x8946, 0x8947, 0x8948, 0x8949, 0x894a, 0x894b, 0x894c,
+    0x894d, 0x894e, 0x894f, 0x8950, 0x8951, 0x8953, 0x8954, 0x8955,
+    0x8956, 0x8957, 0x8958, 0x8959, 0x895a, 0x895b, 0x895c, 0x895d,
+    0x8961, 0x8962, 0x8963, 0x8964, 0x8965, 0x8966, 0x8967, 0x8968,
+    0x8969, 0x896a, 0x896b, 0x896c, 0x896d, 0x896e, 0x896f, 0x8970,
+    0x8971, 0x8973, 0x8974, 0x8975, 0x8976, 0x8977, 0x8978, 0x8979,
+    0x897a, 0x897b, 0x897c, 0x897d, 0x8981, 0x8982, 0x8983, 0x8984,
+    0x8985, 0x8986, 0x8987, 0x8988, 0x8989, 0x898a, 0x898b, 0x898c,
+    0x898d, 0x898e, 0x898f, 0x8990, 0x8991, 0x8993, 0x8994, 0x8995,
+    0x8996, 0x8997, 0x8998, 0x8999, 0x899a, 0x899b, 0x899c, 0x899d,
+    0x89a1, 0x89a2, 0x89a3, 0x89a4, 0x89a5, 0x89a6, 0x89a7, 0x89a8,
+    0x89a9, 0x89aa, 0x89ab, 0x89ac, 0x89ad, 0x89ae, 0x89af, 0x89b0,
+    0x89b1, 0x89b3, 0x89b4, 0x89b5, 0x89b6, 0x89b7, 0x89b8, 0x89b9,
+    0x89ba, 0x89bb, 0x89bc, 0x89bd, 0x89c1, 0x89c2, 0x89c3, 0x89c4,
+    /* 0xad00 .. 0xadff */
+    0x89c5, 0x89c6, 0x89c7, 0x89c8, 0x89c9, 0x89ca, 0x89cb, 0x89cc,
+    0x89cd, 0x89ce, 0x89cf, 0x89d0, 0x89d1, 0x89d3, 0x89d4, 0x89d5,
+    0x89d6, 0x89d7, 0x89d8, 0x89d9, 0x89da, 0x89db, 0x89dc, 0x89dd,
+    0x89e1, 0x89e2, 0x89e3, 0x89e4, 0x89e5, 0x89e6, 0x89e7, 0x89e8,
+    0x89e9, 0x89ea, 0x89eb, 0x89ec, 0x89ed, 0x89ee, 0x89ef, 0x89f0,
+    0x89f1, 0x89f3, 0x89f4, 0x89f5, 0x89f6, 0x89f7, 0x89f8, 0x89f9,
+    0x89fa, 0x89fb, 0x89fc, 0x89fd, 0x8a41, 0x8a42, 0x8a43, 0x8a44,
+    0x8a45, 0x8a46, 0x8a47, 0x8a48, 0x8a49, 0x8a4a, 0x8a4b, 0x8a4c,
+    0x8a4d, 0x8a4e, 0x8a4f, 0x8a50, 0x8a51, 0x8a53, 0x8a54, 0x8a55,
+    0x8a56, 0x8a57, 0x8a58, 0x8a59, 0x8a5a, 0x8a5b, 0x8a5c, 0x8a5d,
+    0x8a61, 0x8a62, 0x8a63, 0x8a64, 0x8a65, 0x8a66, 0x8a67, 0x8a68,
+    0x8a69, 0x8a6a, 0x8a6b, 0x8a6c, 0x8a6d, 0x8a6e, 0x8a6f, 0x8a70,
+    0x8a71, 0x8a73, 0x8a74, 0x8a75, 0x8a76, 0x8a77, 0x8a78, 0x8a79,
+    0x8a7a, 0x8a7b, 0x8a7c, 0x8a7d, 0x8a81, 0x8a82, 0x8a83, 0x8a84,
+    0x8a85, 0x8a86, 0x8a87, 0x8a88, 0x8a89, 0x8a8a, 0x8a8b, 0x8a8c,
+    0x8a8d, 0x8a8e, 0x8a8f, 0x8a90, 0x8a91, 0x8a93, 0x8a94, 0x8a95,
+    0x8a96, 0x8a97, 0x8a98, 0x8a99, 0x8a9a, 0x8a9b, 0x8a9c, 0x8a9d,
+    0x8aa1, 0x8aa2, 0x8aa3, 0x8aa4, 0x8aa5, 0x8aa6, 0x8aa7, 0x8aa8,
+    0x8aa9, 0x8aaa, 0x8aab, 0x8aac, 0x8aad, 0x8aae, 0x8aaf, 0x8ab0,
+    0x8ab1, 0x8ab3, 0x8ab4, 0x8ab5, 0x8ab6, 0x8ab7, 0x8ab8, 0x8ab9,
+    0x8aba, 0x8abb, 0x8abc, 0x8abd, 0x8ac1, 0x8ac2, 0x8ac3, 0x8ac4,
+    0x8ac5, 0x8ac6, 0x8ac7, 0x8ac8, 0x8ac9, 0x8aca, 0x8acb, 0x8acc,
+    0x8acd, 0x8ace, 0x8acf, 0x8ad0, 0x8ad1, 0x8ad3, 0x8ad4, 0x8ad5,
+    0x8ad6, 0x8ad7, 0x8ad8, 0x8ad9, 0x8ada, 0x8adb, 0x8adc, 0x8add,
+    0x8ae1, 0x8ae2, 0x8ae3, 0x8ae4, 0x8ae5, 0x8ae6, 0x8ae7, 0x8ae8,
+    0x8ae9, 0x8aea, 0x8aeb, 0x8aec, 0x8aed, 0x8aee, 0x8aef, 0x8af0,
+    0x8af1, 0x8af3, 0x8af4, 0x8af5, 0x8af6, 0x8af7, 0x8af8, 0x8af9,
+    0x8afa, 0x8afb, 0x8afc, 0x8afd, 0x8b41, 0x8b42, 0x8b43, 0x8b44,
+    0x8b45, 0x8b46, 0x8b47, 0x8b48, 0x8b49, 0x8b4a, 0x8b4b, 0x8b4c,
+    0x8b4d, 0x8b4e, 0x8b4f, 0x8b50, 0x8b51, 0x8b53, 0x8b54, 0x8b55,
+    0x8b56, 0x8b57, 0x8b58, 0x8b59, 0x8b5a, 0x8b5b, 0x8b5c, 0x8b5d,
+    0x8b61, 0x8b62, 0x8b63, 0x8b64, 0x8b65, 0x8b66, 0x8b67, 0x8b68,
+    /* 0xae00 .. 0xaeff */
+    0x8b69, 0x8b6a, 0x8b6b, 0x8b6c, 0x8b6d, 0x8b6e, 0x8b6f, 0x8b70,
+    0x8b71, 0x8b73, 0x8b74, 0x8b75, 0x8b76, 0x8b77, 0x8b78, 0x8b79,
+    0x8b7a, 0x8b7b, 0x8b7c, 0x8b7d, 0x8b81, 0x8b82, 0x8b83, 0x8b84,
+    0x8b85, 0x8b86, 0x8b87, 0x8b88, 0x8b89, 0x8b8a, 0x8b8b, 0x8b8c,
+    0x8b8d, 0x8b8e, 0x8b8f, 0x8b90, 0x8b91, 0x8b93, 0x8b94, 0x8b95,
+    0x8b96, 0x8b97, 0x8b98, 0x8b99, 0x8b9a, 0x8b9b, 0x8b9c, 0x8b9d,
+    0x8ba1, 0x8ba2, 0x8ba3, 0x8ba4, 0x8ba5, 0x8ba6, 0x8ba7, 0x8ba8,
+    0x8ba9, 0x8baa, 0x8bab, 0x8bac, 0x8bad, 0x8bae, 0x8baf, 0x8bb0,
+    0x8bb1, 0x8bb3, 0x8bb4, 0x8bb5, 0x8bb6, 0x8bb7, 0x8bb8, 0x8bb9,
+    0x8bba, 0x8bbb, 0x8bbc, 0x8bbd, 0x8c61, 0x8c62, 0x8c63, 0x8c64,
+    0x8c65, 0x8c66, 0x8c67, 0x8c68, 0x8c69, 0x8c6a, 0x8c6b, 0x8c6c,
+    0x8c6d, 0x8c6e, 0x8c6f, 0x8c70, 0x8c71, 0x8c73, 0x8c74, 0x8c75,
+    0x8c76, 0x8c77, 0x8c78, 0x8c79, 0x8c7a, 0x8c7b, 0x8c7c, 0x8c7d,
+    0x8c81, 0x8c82, 0x8c83, 0x8c84, 0x8c85, 0x8c86, 0x8c87, 0x8c88,
+    0x8c89, 0x8c8a, 0x8c8b, 0x8c8c, 0x8c8d, 0x8c8e, 0x8c8f, 0x8c90,
+    0x8c91, 0x8c93, 0x8c94, 0x8c95, 0x8c96, 0x8c97, 0x8c98, 0x8c99,
+    0x8c9a, 0x8c9b, 0x8c9c, 0x8c9d, 0x8ca1, 0x8ca2, 0x8ca3, 0x8ca4,
+    0x8ca5, 0x8ca6, 0x8ca7, 0x8ca8, 0x8ca9, 0x8caa, 0x8cab, 0x8cac,
+    0x8cad, 0x8cae, 0x8caf, 0x8cb0, 0x8cb1, 0x8cb3, 0x8cb4, 0x8cb5,
+    0x8cb6, 0x8cb7, 0x8cb8, 0x8cb9, 0x8cba, 0x8cbb, 0x8cbc, 0x8cbd,
+    0x8cc1, 0x8cc2, 0x8cc3, 0x8cc4, 0x8cc5, 0x8cc6, 0x8cc7, 0x8cc8,
+    0x8cc9, 0x8cca, 0x8ccb, 0x8ccc, 0x8ccd, 0x8cce, 0x8ccf, 0x8cd0,
+    0x8cd1, 0x8cd3, 0x8cd4, 0x8cd5, 0x8cd6, 0x8cd7, 0x8cd8, 0x8cd9,
+    0x8cda, 0x8cdb, 0x8cdc, 0x8cdd, 0x8ce1, 0x8ce2, 0x8ce3, 0x8ce4,
+    0x8ce5, 0x8ce6, 0x8ce7, 0x8ce8, 0x8ce9, 0x8cea, 0x8ceb, 0x8cec,
+    0x8ced, 0x8cee, 0x8cef, 0x8cf0, 0x8cf1, 0x8cf3, 0x8cf4, 0x8cf5,
+    0x8cf6, 0x8cf7, 0x8cf8, 0x8cf9, 0x8cfa, 0x8cfb, 0x8cfc, 0x8cfd,
+    0x8d41, 0x8d42, 0x8d43, 0x8d44, 0x8d45, 0x8d46, 0x8d47, 0x8d48,
+    0x8d49, 0x8d4a, 0x8d4b, 0x8d4c, 0x8d4d, 0x8d4e, 0x8d4f, 0x8d50,
+    0x8d51, 0x8d53, 0x8d54, 0x8d55, 0x8d56, 0x8d57, 0x8d58, 0x8d59,
+    0x8d5a, 0x8d5b, 0x8d5c, 0x8d5d, 0x8d61, 0x8d62, 0x8d63, 0x8d64,
+    0x8d65, 0x8d66, 0x8d67, 0x8d68, 0x8d69, 0x8d6a, 0x8d6b, 0x8d6c,
+    /* 0xaf00 .. 0xafff */
+    0x8d6d, 0x8d6e, 0x8d6f, 0x8d70, 0x8d71, 0x8d73, 0x8d74, 0x8d75,
+    0x8d76, 0x8d77, 0x8d78, 0x8d79, 0x8d7a, 0x8d7b, 0x8d7c, 0x8d7d,
+    0x8d81, 0x8d82, 0x8d83, 0x8d84, 0x8d85, 0x8d86, 0x8d87, 0x8d88,
+    0x8d89, 0x8d8a, 0x8d8b, 0x8d8c, 0x8d8d, 0x8d8e, 0x8d8f, 0x8d90,
+    0x8d91, 0x8d93, 0x8d94, 0x8d95, 0x8d96, 0x8d97, 0x8d98, 0x8d99,
+    0x8d9a, 0x8d9b, 0x8d9c, 0x8d9d, 0x8da1, 0x8da2, 0x8da3, 0x8da4,
+    0x8da5, 0x8da6, 0x8da7, 0x8da8, 0x8da9, 0x8daa, 0x8dab, 0x8dac,
+    0x8dad, 0x8dae, 0x8daf, 0x8db0, 0x8db1, 0x8db3, 0x8db4, 0x8db5,
+    0x8db6, 0x8db7, 0x8db8, 0x8db9, 0x8dba, 0x8dbb, 0x8dbc, 0x8dbd,
+    0x8dc1, 0x8dc2, 0x8dc3, 0x8dc4, 0x8dc5, 0x8dc6, 0x8dc7, 0x8dc8,
+    0x8dc9, 0x8dca, 0x8dcb, 0x8dcc, 0x8dcd, 0x8dce, 0x8dcf, 0x8dd0,
+    0x8dd1, 0x8dd3, 0x8dd4, 0x8dd5, 0x8dd6, 0x8dd7, 0x8dd8, 0x8dd9,
+    0x8dda, 0x8ddb, 0x8ddc, 0x8ddd, 0x8de1, 0x8de2, 0x8de3, 0x8de4,
+    0x8de5, 0x8de6, 0x8de7, 0x8de8, 0x8de9, 0x8dea, 0x8deb, 0x8dec,
+    0x8ded, 0x8dee, 0x8def, 0x8df0, 0x8df1, 0x8df3, 0x8df4, 0x8df5,
+    0x8df6, 0x8df7, 0x8df8, 0x8df9, 0x8dfa, 0x8dfb, 0x8dfc, 0x8dfd,
+    0x8e41, 0x8e42, 0x8e43, 0x8e44, 0x8e45, 0x8e46, 0x8e47, 0x8e48,
+    0x8e49, 0x8e4a, 0x8e4b, 0x8e4c, 0x8e4d, 0x8e4e, 0x8e4f, 0x8e50,
+    0x8e51, 0x8e53, 0x8e54, 0x8e55, 0x8e56, 0x8e57, 0x8e58, 0x8e59,
+    0x8e5a, 0x8e5b, 0x8e5c, 0x8e5d, 0x8e61, 0x8e62, 0x8e63, 0x8e64,
+    0x8e65, 0x8e66, 0x8e67, 0x8e68, 0x8e69, 0x8e6a, 0x8e6b, 0x8e6c,
+    0x8e6d, 0x8e6e, 0x8e6f, 0x8e70, 0x8e71, 0x8e73, 0x8e74, 0x8e75,
+    0x8e76, 0x8e77, 0x8e78, 0x8e79, 0x8e7a, 0x8e7b, 0x8e7c, 0x8e7d,
+    0x8e81, 0x8e82, 0x8e83, 0x8e84, 0x8e85, 0x8e86, 0x8e87, 0x8e88,
+    0x8e89, 0x8e8a, 0x8e8b, 0x8e8c, 0x8e8d, 0x8e8e, 0x8e8f, 0x8e90,
+    0x8e91, 0x8e93, 0x8e94, 0x8e95, 0x8e96, 0x8e97, 0x8e98, 0x8e99,
+    0x8e9a, 0x8e9b, 0x8e9c, 0x8e9d, 0x8ea1, 0x8ea2, 0x8ea3, 0x8ea4,
+    0x8ea5, 0x8ea6, 0x8ea7, 0x8ea8, 0x8ea9, 0x8eaa, 0x8eab, 0x8eac,
+    0x8ead, 0x8eae, 0x8eaf, 0x8eb0, 0x8eb1, 0x8eb3, 0x8eb4, 0x8eb5,
+    0x8eb6, 0x8eb7, 0x8eb8, 0x8eb9, 0x8eba, 0x8ebb, 0x8ebc, 0x8ebd,
+    0x8ec1, 0x8ec2, 0x8ec3, 0x8ec4, 0x8ec5, 0x8ec6, 0x8ec7, 0x8ec8,
+    0x8ec9, 0x8eca, 0x8ecb, 0x8ecc, 0x8ecd, 0x8ece, 0x8ecf, 0x8ed0,
+    /* 0xb000 .. 0xb0ff */
+    0x8ed1, 0x8ed3, 0x8ed4, 0x8ed5, 0x8ed6, 0x8ed7, 0x8ed8, 0x8ed9,
+    0x8eda, 0x8edb, 0x8edc, 0x8edd, 0x8ee1, 0x8ee2, 0x8ee3, 0x8ee4,
+    0x8ee5, 0x8ee6, 0x8ee7, 0x8ee8, 0x8ee9, 0x8eea, 0x8eeb, 0x8eec,
+    0x8eed, 0x8eee, 0x8eef, 0x8ef0, 0x8ef1, 0x8ef3, 0x8ef4, 0x8ef5,
+    0x8ef6, 0x8ef7, 0x8ef8, 0x8ef9, 0x8efa, 0x8efb, 0x8efc, 0x8efd,
+    0x8f41, 0x8f42, 0x8f43, 0x8f44, 0x8f45, 0x8f46, 0x8f47, 0x8f48,
+    0x8f49, 0x8f4a, 0x8f4b, 0x8f4c, 0x8f4d, 0x8f4e, 0x8f4f, 0x8f50,
+    0x8f51, 0x8f53, 0x8f54, 0x8f55, 0x8f56, 0x8f57, 0x8f58, 0x8f59,
+    0x8f5a, 0x8f5b, 0x8f5c, 0x8f5d, 0x8f61, 0x8f62, 0x8f63, 0x8f64,
+    0x8f65, 0x8f66, 0x8f67, 0x8f68, 0x8f69, 0x8f6a, 0x8f6b, 0x8f6c,
+    0x8f6d, 0x8f6e, 0x8f6f, 0x8f70, 0x8f71, 0x8f73, 0x8f74, 0x8f75,
+    0x8f76, 0x8f77, 0x8f78, 0x8f79, 0x8f7a, 0x8f7b, 0x8f7c, 0x8f7d,
+    0x8f81, 0x8f82, 0x8f83, 0x8f84, 0x8f85, 0x8f86, 0x8f87, 0x8f88,
+    0x8f89, 0x8f8a, 0x8f8b, 0x8f8c, 0x8f8d, 0x8f8e, 0x8f8f, 0x8f90,
+    0x8f91, 0x8f93, 0x8f94, 0x8f95, 0x8f96, 0x8f97, 0x8f98, 0x8f99,
+    0x8f9a, 0x8f9b, 0x8f9c, 0x8f9d, 0x8fa1, 0x8fa2, 0x8fa3, 0x8fa4,
+    0x8fa5, 0x8fa6, 0x8fa7, 0x8fa8, 0x8fa9, 0x8faa, 0x8fab, 0x8fac,
+    0x8fad, 0x8fae, 0x8faf, 0x8fb0, 0x8fb1, 0x8fb3, 0x8fb4, 0x8fb5,
+    0x8fb6, 0x8fb7, 0x8fb8, 0x8fb9, 0x8fba, 0x8fbb, 0x8fbc, 0x8fbd,
+    0x9061, 0x9062, 0x9063, 0x9064, 0x9065, 0x9066, 0x9067, 0x9068,
+    0x9069, 0x906a, 0x906b, 0x906c, 0x906d, 0x906e, 0x906f, 0x9070,
+    0x9071, 0x9073, 0x9074, 0x9075, 0x9076, 0x9077, 0x9078, 0x9079,
+    0x907a, 0x907b, 0x907c, 0x907d, 0x9081, 0x9082, 0x9083, 0x9084,
+    0x9085, 0x9086, 0x9087, 0x9088, 0x9089, 0x908a, 0x908b, 0x908c,
+    0x908d, 0x908e, 0x908f, 0x9090, 0x9091, 0x9093, 0x9094, 0x9095,
+    0x9096, 0x9097, 0x9098, 0x9099, 0x909a, 0x909b, 0x909c, 0x909d,
+    0x90a1, 0x90a2, 0x90a3, 0x90a4, 0x90a5, 0x90a6, 0x90a7, 0x90a8,
+    0x90a9, 0x90aa, 0x90ab, 0x90ac, 0x90ad, 0x90ae, 0x90af, 0x90b0,
+    0x90b1, 0x90b3, 0x90b4, 0x90b5, 0x90b6, 0x90b7, 0x90b8, 0x90b9,
+    0x90ba, 0x90bb, 0x90bc, 0x90bd, 0x90c1, 0x90c2, 0x90c3, 0x90c4,
+    0x90c5, 0x90c6, 0x90c7, 0x90c8, 0x90c9, 0x90ca, 0x90cb, 0x90cc,
+    0x90cd, 0x90ce, 0x90cf, 0x90d0, 0x90d1, 0x90d3, 0x90d4, 0x90d5,
+    /* 0xb100 .. 0xb1ff */
+    0x90d6, 0x90d7, 0x90d8, 0x90d9, 0x90da, 0x90db, 0x90dc, 0x90dd,
+    0x90e1, 0x90e2, 0x90e3, 0x90e4, 0x90e5, 0x90e6, 0x90e7, 0x90e8,
+    0x90e9, 0x90ea, 0x90eb, 0x90ec, 0x90ed, 0x90ee, 0x90ef, 0x90f0,
+    0x90f1, 0x90f3, 0x90f4, 0x90f5, 0x90f6, 0x90f7, 0x90f8, 0x90f9,
+    0x90fa, 0x90fb, 0x90fc, 0x90fd, 0x9141, 0x9142, 0x9143, 0x9144,
+    0x9145, 0x9146, 0x9147, 0x9148, 0x9149, 0x914a, 0x914b, 0x914c,
+    0x914d, 0x914e, 0x914f, 0x9150, 0x9151, 0x9153, 0x9154, 0x9155,
+    0x9156, 0x9157, 0x9158, 0x9159, 0x915a, 0x915b, 0x915c, 0x915d,
+    0x9161, 0x9162, 0x9163, 0x9164, 0x9165, 0x9166, 0x9167, 0x9168,
+    0x9169, 0x916a, 0x916b, 0x916c, 0x916d, 0x916e, 0x916f, 0x9170,
+    0x9171, 0x9173, 0x9174, 0x9175, 0x9176, 0x9177, 0x9178, 0x9179,
+    0x917a, 0x917b, 0x917c, 0x917d, 0x9181, 0x9182, 0x9183, 0x9184,
+    0x9185, 0x9186, 0x9187, 0x9188, 0x9189, 0x918a, 0x918b, 0x918c,
+    0x918d, 0x918e, 0x918f, 0x9190, 0x9191, 0x9193, 0x9194, 0x9195,
+    0x9196, 0x9197, 0x9198, 0x9199, 0x919a, 0x919b, 0x919c, 0x919d,
+    0x91a1, 0x91a2, 0x91a3, 0x91a4, 0x91a5, 0x91a6, 0x91a7, 0x91a8,
+    0x91a9, 0x91aa, 0x91ab, 0x91ac, 0x91ad, 0x91ae, 0x91af, 0x91b0,
+    0x91b1, 0x91b3, 0x91b4, 0x91b5, 0x91b6, 0x91b7, 0x91b8, 0x91b9,
+    0x91ba, 0x91bb, 0x91bc, 0x91bd, 0x91c1, 0x91c2, 0x91c3, 0x91c4,
+    0x91c5, 0x91c6, 0x91c7, 0x91c8, 0x91c9, 0x91ca, 0x91cb, 0x91cc,
+    0x91cd, 0x91ce, 0x91cf, 0x91d0, 0x91d1, 0x91d3, 0x91d4, 0x91d5,
+    0x91d6, 0x91d7, 0x91d8, 0x91d9, 0x91da, 0x91db, 0x91dc, 0x91dd,
+    0x91e1, 0x91e2, 0x91e3, 0x91e4, 0x91e5, 0x91e6, 0x91e7, 0x91e8,
+    0x91e9, 0x91ea, 0x91eb, 0x91ec, 0x91ed, 0x91ee, 0x91ef, 0x91f0,
+    0x91f1, 0x91f3, 0x91f4, 0x91f5, 0x91f6, 0x91f7, 0x91f8, 0x91f9,
+    0x91fa, 0x91fb, 0x91fc, 0x91fd, 0x9241, 0x9242, 0x9243, 0x9244,
+    0x9245, 0x9246, 0x9247, 0x9248, 0x9249, 0x924a, 0x924b, 0x924c,
+    0x924d, 0x924e, 0x924f, 0x9250, 0x9251, 0x9253, 0x9254, 0x9255,
+    0x9256, 0x9257, 0x9258, 0x9259, 0x925a, 0x925b, 0x925c, 0x925d,
+    0x9261, 0x9262, 0x9263, 0x9264, 0x9265, 0x9266, 0x9267, 0x9268,
+    0x9269, 0x926a, 0x926b, 0x926c, 0x926d, 0x926e, 0x926f, 0x9270,
+    0x9271, 0x9273, 0x9274, 0x9275, 0x9276, 0x9277, 0x9278, 0x9279,
+    /* 0xb200 .. 0xb2ff */
+    0x927a, 0x927b, 0x927c, 0x927d, 0x9281, 0x9282, 0x9283, 0x9284,
+    0x9285, 0x9286, 0x9287, 0x9288, 0x9289, 0x928a, 0x928b, 0x928c,
+    0x928d, 0x928e, 0x928f, 0x9290, 0x9291, 0x9293, 0x9294, 0x9295,
+    0x9296, 0x9297, 0x9298, 0x9299, 0x929a, 0x929b, 0x929c, 0x929d,
+    0x92a1, 0x92a2, 0x92a3, 0x92a4, 0x92a5, 0x92a6, 0x92a7, 0x92a8,
+    0x92a9, 0x92aa, 0x92ab, 0x92ac, 0x92ad, 0x92ae, 0x92af, 0x92b0,
+    0x92b1, 0x92b3, 0x92b4, 0x92b5, 0x92b6, 0x92b7, 0x92b8, 0x92b9,
+    0x92ba, 0x92bb, 0x92bc, 0x92bd, 0x92c1, 0x92c2, 0x92c3, 0x92c4,
+    0x92c5, 0x92c6, 0x92c7, 0x92c8, 0x92c9, 0x92ca, 0x92cb, 0x92cc,
+    0x92cd, 0x92ce, 0x92cf, 0x92d0, 0x92d1, 0x92d3, 0x92d4, 0x92d5,
+    0x92d6, 0x92d7, 0x92d8, 0x92d9, 0x92da, 0x92db, 0x92dc, 0x92dd,
+    0x92e1, 0x92e2, 0x92e3, 0x92e4, 0x92e5, 0x92e6, 0x92e7, 0x92e8,
+    0x92e9, 0x92ea, 0x92eb, 0x92ec, 0x92ed, 0x92ee, 0x92ef, 0x92f0,
+    0x92f1, 0x92f3, 0x92f4, 0x92f5, 0x92f6, 0x92f7, 0x92f8, 0x92f9,
+    0x92fa, 0x92fb, 0x92fc, 0x92fd, 0x9341, 0x9342, 0x9343, 0x9344,
+    0x9345, 0x9346, 0x9347, 0x9348, 0x9349, 0x934a, 0x934b, 0x934c,
+    0x934d, 0x934e, 0x934f, 0x9350, 0x9351, 0x9353, 0x9354, 0x9355,
+    0x9356, 0x9357, 0x9358, 0x9359, 0x935a, 0x935b, 0x935c, 0x935d,
+    0x9361, 0x9362, 0x9363, 0x9364, 0x9365, 0x9366, 0x9367, 0x9368,
+    0x9369, 0x936a, 0x936b, 0x936c, 0x936d, 0x936e, 0x936f, 0x9370,
+    0x9371, 0x9373, 0x9374, 0x9375, 0x9376, 0x9377, 0x9378, 0x9379,
+    0x937a, 0x937b, 0x937c, 0x937d, 0x9381, 0x9382, 0x9383, 0x9384,
+    0x9385, 0x9386, 0x9387, 0x9388, 0x9389, 0x938a, 0x938b, 0x938c,
+    0x938d, 0x938e, 0x938f, 0x9390, 0x9391, 0x9393, 0x9394, 0x9395,
+    0x9396, 0x9397, 0x9398, 0x9399, 0x939a, 0x939b, 0x939c, 0x939d,
+    0x93a1, 0x93a2, 0x93a3, 0x93a4, 0x93a5, 0x93a6, 0x93a7, 0x93a8,
+    0x93a9, 0x93aa, 0x93ab, 0x93ac, 0x93ad, 0x93ae, 0x93af, 0x93b0,
+    0x93b1, 0x93b3, 0x93b4, 0x93b5, 0x93b6, 0x93b7, 0x93b8, 0x93b9,
+    0x93ba, 0x93bb, 0x93bc, 0x93bd, 0x9461, 0x9462, 0x9463, 0x9464,
+    0x9465, 0x9466, 0x9467, 0x9468, 0x9469, 0x946a, 0x946b, 0x946c,
+    0x946d, 0x946e, 0x946f, 0x9470, 0x9471, 0x9473, 0x9474, 0x9475,
+    0x9476, 0x9477, 0x9478, 0x9479, 0x947a, 0x947b, 0x947c, 0x947d,
+    /* 0xb300 .. 0xb3ff */
+    0x9481, 0x9482, 0x9483, 0x9484, 0x9485, 0x9486, 0x9487, 0x9488,
+    0x9489, 0x948a, 0x948b, 0x948c, 0x948d, 0x948e, 0x948f, 0x9490,
+    0x9491, 0x9493, 0x9494, 0x9495, 0x9496, 0x9497, 0x9498, 0x9499,
+    0x949a, 0x949b, 0x949c, 0x949d, 0x94a1, 0x94a2, 0x94a3, 0x94a4,
+    0x94a5, 0x94a6, 0x94a7, 0x94a8, 0x94a9, 0x94aa, 0x94ab, 0x94ac,
+    0x94ad, 0x94ae, 0x94af, 0x94b0, 0x94b1, 0x94b3, 0x94b4, 0x94b5,
+    0x94b6, 0x94b7, 0x94b8, 0x94b9, 0x94ba, 0x94bb, 0x94bc, 0x94bd,
+    0x94c1, 0x94c2, 0x94c3, 0x94c4, 0x94c5, 0x94c6, 0x94c7, 0x94c8,
+    0x94c9, 0x94ca, 0x94cb, 0x94cc, 0x94cd, 0x94ce, 0x94cf, 0x94d0,
+    0x94d1, 0x94d3, 0x94d4, 0x94d5, 0x94d6, 0x94d7, 0x94d8, 0x94d9,
+    0x94da, 0x94db, 0x94dc, 0x94dd, 0x94e1, 0x94e2, 0x94e3, 0x94e4,
+    0x94e5, 0x94e6, 0x94e7, 0x94e8, 0x94e9, 0x94ea, 0x94eb, 0x94ec,
+    0x94ed, 0x94ee, 0x94ef, 0x94f0, 0x94f1, 0x94f3, 0x94f4, 0x94f5,
+    0x94f6, 0x94f7, 0x94f8, 0x94f9, 0x94fa, 0x94fb, 0x94fc, 0x94fd,
+    0x9541, 0x9542, 0x9543, 0x9544, 0x9545, 0x9546, 0x9547, 0x9548,
+    0x9549, 0x954a, 0x954b, 0x954c, 0x954d, 0x954e, 0x954f, 0x9550,
+    0x9551, 0x9553, 0x9554, 0x9555, 0x9556, 0x9557, 0x9558, 0x9559,
+    0x955a, 0x955b, 0x955c, 0x955d, 0x9561, 0x9562, 0x9563, 0x9564,
+    0x9565, 0x9566, 0x9567, 0x9568, 0x9569, 0x956a, 0x956b, 0x956c,
+    0x956d, 0x956e, 0x956f, 0x9570, 0x9571, 0x9573, 0x9574, 0x9575,
+    0x9576, 0x9577, 0x9578, 0x9579, 0x957a, 0x957b, 0x957c, 0x957d,
+    0x9581, 0x9582, 0x9583, 0x9584, 0x9585, 0x9586, 0x9587, 0x9588,
+    0x9589, 0x958a, 0x958b, 0x958c, 0x958d, 0x958e, 0x958f, 0x9590,
+    0x9591, 0x9593, 0x9594, 0x9595, 0x9596, 0x9597, 0x9598, 0x9599,
+    0x959a, 0x959b, 0x959c, 0x959d, 0x95a1, 0x95a2, 0x95a3, 0x95a4,
+    0x95a5, 0x95a6, 0x95a7, 0x95a8, 0x95a9, 0x95aa, 0x95ab, 0x95ac,
+    0x95ad, 0x95ae, 0x95af, 0x95b0, 0x95b1, 0x95b3, 0x95b4, 0x95b5,
+    0x95b6, 0x95b7, 0x95b8, 0x95b9, 0x95ba, 0x95bb, 0x95bc, 0x95bd,
+    0x95c1, 0x95c2, 0x95c3, 0x95c4, 0x95c5, 0x95c6, 0x95c7, 0x95c8,
+    0x95c9, 0x95ca, 0x95cb, 0x95cc, 0x95cd, 0x95ce, 0x95cf, 0x95d0,
+    0x95d1, 0x95d3, 0x95d4, 0x95d5, 0x95d6, 0x95d7, 0x95d8, 0x95d9,
+    0x95da, 0x95db, 0x95dc, 0x95dd, 0x95e1, 0x95e2, 0x95e3, 0x95e4,
+    /* 0xb400 .. 0xb4ff */
+    0x95e5, 0x95e6, 0x95e7, 0x95e8, 0x95e9, 0x95ea, 0x95eb, 0x95ec,
+    0x95ed, 0x95ee, 0x95ef, 0x95f0, 0x95f1, 0x95f3, 0x95f4, 0x95f5,
+    0x95f6, 0x95f7, 0x95f8, 0x95f9, 0x95fa, 0x95fb, 0x95fc, 0x95fd,
+    0x9641, 0x9642, 0x9643, 0x9644, 0x9645, 0x9646, 0x9647, 0x9648,
+    0x9649, 0x964a, 0x964b, 0x964c, 0x964d, 0x964e, 0x964f, 0x9650,
+    0x9651, 0x9653, 0x9654, 0x9655, 0x9656, 0x9657, 0x9658, 0x9659,
+    0x965a, 0x965b, 0x965c, 0x965d, 0x9661, 0x9662, 0x9663, 0x9664,
+    0x9665, 0x9666, 0x9667, 0x9668, 0x9669, 0x966a, 0x966b, 0x966c,
+    0x966d, 0x966e, 0x966f, 0x9670, 0x9671, 0x9673, 0x9674, 0x9675,
+    0x9676, 0x9677, 0x9678, 0x9679, 0x967a, 0x967b, 0x967c, 0x967d,
+    0x9681, 0x9682, 0x9683, 0x9684, 0x9685, 0x9686, 0x9687, 0x9688,
+    0x9689, 0x968a, 0x968b, 0x968c, 0x968d, 0x968e, 0x968f, 0x9690,
+    0x9691, 0x9693, 0x9694, 0x9695, 0x9696, 0x9697, 0x9698, 0x9699,
+    0x969a, 0x969b, 0x969c, 0x969d, 0x96a1, 0x96a2, 0x96a3, 0x96a4,
+    0x96a5, 0x96a6, 0x96a7, 0x96a8, 0x96a9, 0x96aa, 0x96ab, 0x96ac,
+    0x96ad, 0x96ae, 0x96af, 0x96b0, 0x96b1, 0x96b3, 0x96b4, 0x96b5,
+    0x96b6, 0x96b7, 0x96b8, 0x96b9, 0x96ba, 0x96bb, 0x96bc, 0x96bd,
+    0x96c1, 0x96c2, 0x96c3, 0x96c4, 0x96c5, 0x96c6, 0x96c7, 0x96c8,
+    0x96c9, 0x96ca, 0x96cb, 0x96cc, 0x96cd, 0x96ce, 0x96cf, 0x96d0,
+    0x96d1, 0x96d3, 0x96d4, 0x96d5, 0x96d6, 0x96d7, 0x96d8, 0x96d9,
+    0x96da, 0x96db, 0x96dc, 0x96dd, 0x96e1, 0x96e2, 0x96e3, 0x96e4,
+    0x96e5, 0x96e6, 0x96e7, 0x96e8, 0x96e9, 0x96ea, 0x96eb, 0x96ec,
+    0x96ed, 0x96ee, 0x96ef, 0x96f0, 0x96f1, 0x96f3, 0x96f4, 0x96f5,
+    0x96f6, 0x96f7, 0x96f8, 0x96f9, 0x96fa, 0x96fb, 0x96fc, 0x96fd,
+    0x9741, 0x9742, 0x9743, 0x9744, 0x9745, 0x9746, 0x9747, 0x9748,
+    0x9749, 0x974a, 0x974b, 0x974c, 0x974d, 0x974e, 0x974f, 0x9750,
+    0x9751, 0x9753, 0x9754, 0x9755, 0x9756, 0x9757, 0x9758, 0x9759,
+    0x975a, 0x975b, 0x975c, 0x975d, 0x9761, 0x9762, 0x9763, 0x9764,
+    0x9765, 0x9766, 0x9767, 0x9768, 0x9769, 0x976a, 0x976b, 0x976c,
+    0x976d, 0x976e, 0x976f, 0x9770, 0x9771, 0x9773, 0x9774, 0x9775,
+    0x9776, 0x9777, 0x9778, 0x9779, 0x977a, 0x977b, 0x977c, 0x977d,
+    0x9781, 0x9782, 0x9783, 0x9784, 0x9785, 0x9786, 0x9787, 0x9788,
+    /* 0xb500 .. 0xb5ff */
+    0x9789, 0x978a, 0x978b, 0x978c, 0x978d, 0x978e, 0x978f, 0x9790,
+    0x9791, 0x9793, 0x9794, 0x9795, 0x9796, 0x9797, 0x9798, 0x9799,
+    0x979a, 0x979b, 0x979c, 0x979d, 0x97a1, 0x97a2, 0x97a3, 0x97a4,
+    0x97a5, 0x97a6, 0x97a7, 0x97a8, 0x97a9, 0x97aa, 0x97ab, 0x97ac,
+    0x97ad, 0x97ae, 0x97af, 0x97b0, 0x97b1, 0x97b3, 0x97b4, 0x97b5,
+    0x97b6, 0x97b7, 0x97b8, 0x97b9, 0x97ba, 0x97bb, 0x97bc, 0x97bd,
+    0x9861, 0x9862, 0x9863, 0x9864, 0x9865, 0x9866, 0x9867, 0x9868,
+    0x9869, 0x986a, 0x986b, 0x986c, 0x986d, 0x986e, 0x986f, 0x9870,
+    0x9871, 0x9873, 0x9874, 0x9875, 0x9876, 0x9877, 0x9878, 0x9879,
+    0x987a, 0x987b, 0x987c, 0x987d, 0x9881, 0x9882, 0x9883, 0x9884,
+    0x9885, 0x9886, 0x9887, 0x9888, 0x9889, 0x988a, 0x988b, 0x988c,
+    0x988d, 0x988e, 0x988f, 0x9890, 0x9891, 0x9893, 0x9894, 0x9895,
+    0x9896, 0x9897, 0x9898, 0x9899, 0x989a, 0x989b, 0x989c, 0x989d,
+    0x98a1, 0x98a2, 0x98a3, 0x98a4, 0x98a5, 0x98a6, 0x98a7, 0x98a8,
+    0x98a9, 0x98aa, 0x98ab, 0x98ac, 0x98ad, 0x98ae, 0x98af, 0x98b0,
+    0x98b1, 0x98b3, 0x98b4, 0x98b5, 0x98b6, 0x98b7, 0x98b8, 0x98b9,
+    0x98ba, 0x98bb, 0x98bc, 0x98bd, 0x98c1, 0x98c2, 0x98c3, 0x98c4,
+    0x98c5, 0x98c6, 0x98c7, 0x98c8, 0x98c9, 0x98ca, 0x98cb, 0x98cc,
+    0x98cd, 0x98ce, 0x98cf, 0x98d0, 0x98d1, 0x98d3, 0x98d4, 0x98d5,
+    0x98d6, 0x98d7, 0x98d8, 0x98d9, 0x98da, 0x98db, 0x98dc, 0x98dd,
+    0x98e1, 0x98e2, 0x98e3, 0x98e4, 0x98e5, 0x98e6, 0x98e7, 0x98e8,
+    0x98e9, 0x98ea, 0x98eb, 0x98ec, 0x98ed, 0x98ee, 0x98ef, 0x98f0,
+    0x98f1, 0x98f3, 0x98f4, 0x98f5, 0x98f6, 0x98f7, 0x98f8, 0x98f9,
+    0x98fa, 0x98fb, 0x98fc, 0x98fd, 0x9941, 0x9942, 0x9943, 0x9944,
+    0x9945, 0x9946, 0x9947, 0x9948, 0x9949, 0x994a, 0x994b, 0x994c,
+    0x994d, 0x994e, 0x994f, 0x9950, 0x9951, 0x9953, 0x9954, 0x9955,
+    0x9956, 0x9957, 0x9958, 0x9959, 0x995a, 0x995b, 0x995c, 0x995d,
+    0x9961, 0x9962, 0x9963, 0x9964, 0x9965, 0x9966, 0x9967, 0x9968,
+    0x9969, 0x996a, 0x996b, 0x996c, 0x996d, 0x996e, 0x996f, 0x9970,
+    0x9971, 0x9973, 0x9974, 0x9975, 0x9976, 0x9977, 0x9978, 0x9979,
+    0x997a, 0x997b, 0x997c, 0x997d, 0x9981, 0x9982, 0x9983, 0x9984,
+    0x9985, 0x9986, 0x9987, 0x9988, 0x9989, 0x998a, 0x998b, 0x998c,
+    /* 0xb600 .. 0xb6ff */
+    0x998d, 0x998e, 0x998f, 0x9990, 0x9991, 0x9993, 0x9994, 0x9995,
+    0x9996, 0x9997, 0x9998, 0x9999, 0x999a, 0x999b, 0x999c, 0x999d,
+    0x99a1, 0x99a2, 0x99a3, 0x99a4, 0x99a5, 0x99a6, 0x99a7, 0x99a8,
+    0x99a9, 0x99aa, 0x99ab, 0x99ac, 0x99ad, 0x99ae, 0x99af, 0x99b0,
+    0x99b1, 0x99b3, 0x99b4, 0x99b5, 0x99b6, 0x99b7, 0x99b8, 0x99b9,
+    0x99ba, 0x99bb, 0x99bc, 0x99bd, 0x99c1, 0x99c2, 0x99c3, 0x99c4,
+    0x99c5, 0x99c6, 0x99c7, 0x99c8, 0x99c9, 0x99ca, 0x99cb, 0x99cc,
+    0x99cd, 0x99ce, 0x99cf, 0x99d0, 0x99d1, 0x99d3, 0x99d4, 0x99d5,
+    0x99d6, 0x99d7, 0x99d8, 0x99d9, 0x99da, 0x99db, 0x99dc, 0x99dd,
+    0x99e1, 0x99e2, 0x99e3, 0x99e4, 0x99e5, 0x99e6, 0x99e7, 0x99e8,
+    0x99e9, 0x99ea, 0x99eb, 0x99ec, 0x99ed, 0x99ee, 0x99ef, 0x99f0,
+    0x99f1, 0x99f3, 0x99f4, 0x99f5, 0x99f6, 0x99f7, 0x99f8, 0x99f9,
+    0x99fa, 0x99fb, 0x99fc, 0x99fd, 0x9a41, 0x9a42, 0x9a43, 0x9a44,
+    0x9a45, 0x9a46, 0x9a47, 0x9a48, 0x9a49, 0x9a4a, 0x9a4b, 0x9a4c,
+    0x9a4d, 0x9a4e, 0x9a4f, 0x9a50, 0x9a51, 0x9a53, 0x9a54, 0x9a55,
+    0x9a56, 0x9a57, 0x9a58, 0x9a59, 0x9a5a, 0x9a5b, 0x9a5c, 0x9a5d,
+    0x9a61, 0x9a62, 0x9a63, 0x9a64, 0x9a65, 0x9a66, 0x9a67, 0x9a68,
+    0x9a69, 0x9a6a, 0x9a6b, 0x9a6c, 0x9a6d, 0x9a6e, 0x9a6f, 0x9a70,
+    0x9a71, 0x9a73, 0x9a74, 0x9a75, 0x9a76, 0x9a77, 0x9a78, 0x9a79,
+    0x9a7a, 0x9a7b, 0x9a7c, 0x9a7d, 0x9a81, 0x9a82, 0x9a83, 0x9a84,
+    0x9a85, 0x9a86, 0x9a87, 0x9a88, 0x9a89, 0x9a8a, 0x9a8b, 0x9a8c,
+    0x9a8d, 0x9a8e, 0x9a8f, 0x9a90, 0x9a91, 0x9a93, 0x9a94, 0x9a95,
+    0x9a96, 0x9a97, 0x9a98, 0x9a99, 0x9a9a, 0x9a9b, 0x9a9c, 0x9a9d,
+    0x9aa1, 0x9aa2, 0x9aa3, 0x9aa4, 0x9aa5, 0x9aa6, 0x9aa7, 0x9aa8,
+    0x9aa9, 0x9aaa, 0x9aab, 0x9aac, 0x9aad, 0x9aae, 0x9aaf, 0x9ab0,
+    0x9ab1, 0x9ab3, 0x9ab4, 0x9ab5, 0x9ab6, 0x9ab7, 0x9ab8, 0x9ab9,
+    0x9aba, 0x9abb, 0x9abc, 0x9abd, 0x9ac1, 0x9ac2, 0x9ac3, 0x9ac4,
+    0x9ac5, 0x9ac6, 0x9ac7, 0x9ac8, 0x9ac9, 0x9aca, 0x9acb, 0x9acc,
+    0x9acd, 0x9ace, 0x9acf, 0x9ad0, 0x9ad1, 0x9ad3, 0x9ad4, 0x9ad5,
+    0x9ad6, 0x9ad7, 0x9ad8, 0x9ad9, 0x9ada, 0x9adb, 0x9adc, 0x9add,
+    0x9ae1, 0x9ae2, 0x9ae3, 0x9ae4, 0x9ae5, 0x9ae6, 0x9ae7, 0x9ae8,
+    0x9ae9, 0x9aea, 0x9aeb, 0x9aec, 0x9aed, 0x9aee, 0x9aef, 0x9af0,
+    /* 0xb700 .. 0xb7ff */
+    0x9af1, 0x9af3, 0x9af4, 0x9af5, 0x9af6, 0x9af7, 0x9af8, 0x9af9,
+    0x9afa, 0x9afb, 0x9afc, 0x9afd, 0x9b41, 0x9b42, 0x9b43, 0x9b44,
+    0x9b45, 0x9b46, 0x9b47, 0x9b48, 0x9b49, 0x9b4a, 0x9b4b, 0x9b4c,
+    0x9b4d, 0x9b4e, 0x9b4f, 0x9b50, 0x9b51, 0x9b53, 0x9b54, 0x9b55,
+    0x9b56, 0x9b57, 0x9b58, 0x9b59, 0x9b5a, 0x9b5b, 0x9b5c, 0x9b5d,
+    0x9b61, 0x9b62, 0x9b63, 0x9b64, 0x9b65, 0x9b66, 0x9b67, 0x9b68,
+    0x9b69, 0x9b6a, 0x9b6b, 0x9b6c, 0x9b6d, 0x9b6e, 0x9b6f, 0x9b70,
+    0x9b71, 0x9b73, 0x9b74, 0x9b75, 0x9b76, 0x9b77, 0x9b78, 0x9b79,
+    0x9b7a, 0x9b7b, 0x9b7c, 0x9b7d, 0x9b81, 0x9b82, 0x9b83, 0x9b84,
+    0x9b85, 0x9b86, 0x9b87, 0x9b88, 0x9b89, 0x9b8a, 0x9b8b, 0x9b8c,
+    0x9b8d, 0x9b8e, 0x9b8f, 0x9b90, 0x9b91, 0x9b93, 0x9b94, 0x9b95,
+    0x9b96, 0x9b97, 0x9b98, 0x9b99, 0x9b9a, 0x9b9b, 0x9b9c, 0x9b9d,
+    0x9ba1, 0x9ba2, 0x9ba3, 0x9ba4, 0x9ba5, 0x9ba6, 0x9ba7, 0x9ba8,
+    0x9ba9, 0x9baa, 0x9bab, 0x9bac, 0x9bad, 0x9bae, 0x9baf, 0x9bb0,
+    0x9bb1, 0x9bb3, 0x9bb4, 0x9bb5, 0x9bb6, 0x9bb7, 0x9bb8, 0x9bb9,
+    0x9bba, 0x9bbb, 0x9bbc, 0x9bbd, 0x9c61, 0x9c62, 0x9c63, 0x9c64,
+    0x9c65, 0x9c66, 0x9c67, 0x9c68, 0x9c69, 0x9c6a, 0x9c6b, 0x9c6c,
+    0x9c6d, 0x9c6e, 0x9c6f, 0x9c70, 0x9c71, 0x9c73, 0x9c74, 0x9c75,
+    0x9c76, 0x9c77, 0x9c78, 0x9c79, 0x9c7a, 0x9c7b, 0x9c7c, 0x9c7d,
+    0x9c81, 0x9c82, 0x9c83, 0x9c84, 0x9c85, 0x9c86, 0x9c87, 0x9c88,
+    0x9c89, 0x9c8a, 0x9c8b, 0x9c8c, 0x9c8d, 0x9c8e, 0x9c8f, 0x9c90,
+    0x9c91, 0x9c93, 0x9c94, 0x9c95, 0x9c96, 0x9c97, 0x9c98, 0x9c99,
+    0x9c9a, 0x9c9b, 0x9c9c, 0x9c9d, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca4,
+    0x9ca5, 0x9ca6, 0x9ca7, 0x9ca8, 0x9ca9, 0x9caa, 0x9cab, 0x9cac,
+    0x9cad, 0x9cae, 0x9caf, 0x9cb0, 0x9cb1, 0x9cb3, 0x9cb4, 0x9cb5,
+    0x9cb6, 0x9cb7, 0x9cb8, 0x9cb9, 0x9cba, 0x9cbb, 0x9cbc, 0x9cbd,
+    0x9cc1, 0x9cc2, 0x9cc3, 0x9cc4, 0x9cc5, 0x9cc6, 0x9cc7, 0x9cc8,
+    0x9cc9, 0x9cca, 0x9ccb, 0x9ccc, 0x9ccd, 0x9cce, 0x9ccf, 0x9cd0,
+    0x9cd1, 0x9cd3, 0x9cd4, 0x9cd5, 0x9cd6, 0x9cd7, 0x9cd8, 0x9cd9,
+    0x9cda, 0x9cdb, 0x9cdc, 0x9cdd, 0x9ce1, 0x9ce2, 0x9ce3, 0x9ce4,
+    0x9ce5, 0x9ce6, 0x9ce7, 0x9ce8, 0x9ce9, 0x9cea, 0x9ceb, 0x9cec,
+    0x9ced, 0x9cee, 0x9cef, 0x9cf0, 0x9cf1, 0x9cf3, 0x9cf4, 0x9cf5,
+    /* 0xb800 .. 0xb8ff */
+    0x9cf6, 0x9cf7, 0x9cf8, 0x9cf9, 0x9cfa, 0x9cfb, 0x9cfc, 0x9cfd,
+    0x9d41, 0x9d42, 0x9d43, 0x9d44, 0x9d45, 0x9d46, 0x9d47, 0x9d48,
+    0x9d49, 0x9d4a, 0x9d4b, 0x9d4c, 0x9d4d, 0x9d4e, 0x9d4f, 0x9d50,
+    0x9d51, 0x9d53, 0x9d54, 0x9d55, 0x9d56, 0x9d57, 0x9d58, 0x9d59,
+    0x9d5a, 0x9d5b, 0x9d5c, 0x9d5d, 0x9d61, 0x9d62, 0x9d63, 0x9d64,
+    0x9d65, 0x9d66, 0x9d67, 0x9d68, 0x9d69, 0x9d6a, 0x9d6b, 0x9d6c,
+    0x9d6d, 0x9d6e, 0x9d6f, 0x9d70, 0x9d71, 0x9d73, 0x9d74, 0x9d75,
+    0x9d76, 0x9d77, 0x9d78, 0x9d79, 0x9d7a, 0x9d7b, 0x9d7c, 0x9d7d,
+    0x9d81, 0x9d82, 0x9d83, 0x9d84, 0x9d85, 0x9d86, 0x9d87, 0x9d88,
+    0x9d89, 0x9d8a, 0x9d8b, 0x9d8c, 0x9d8d, 0x9d8e, 0x9d8f, 0x9d90,
+    0x9d91, 0x9d93, 0x9d94, 0x9d95, 0x9d96, 0x9d97, 0x9d98, 0x9d99,
+    0x9d9a, 0x9d9b, 0x9d9c, 0x9d9d, 0x9da1, 0x9da2, 0x9da3, 0x9da4,
+    0x9da5, 0x9da6, 0x9da7, 0x9da8, 0x9da9, 0x9daa, 0x9dab, 0x9dac,
+    0x9dad, 0x9dae, 0x9daf, 0x9db0, 0x9db1, 0x9db3, 0x9db4, 0x9db5,
+    0x9db6, 0x9db7, 0x9db8, 0x9db9, 0x9dba, 0x9dbb, 0x9dbc, 0x9dbd,
+    0x9dc1, 0x9dc2, 0x9dc3, 0x9dc4, 0x9dc5, 0x9dc6, 0x9dc7, 0x9dc8,
+    0x9dc9, 0x9dca, 0x9dcb, 0x9dcc, 0x9dcd, 0x9dce, 0x9dcf, 0x9dd0,
+    0x9dd1, 0x9dd3, 0x9dd4, 0x9dd5, 0x9dd6, 0x9dd7, 0x9dd8, 0x9dd9,
+    0x9dda, 0x9ddb, 0x9ddc, 0x9ddd, 0x9de1, 0x9de2, 0x9de3, 0x9de4,
+    0x9de5, 0x9de6, 0x9de7, 0x9de8, 0x9de9, 0x9dea, 0x9deb, 0x9dec,
+    0x9ded, 0x9dee, 0x9def, 0x9df0, 0x9df1, 0x9df3, 0x9df4, 0x9df5,
+    0x9df6, 0x9df7, 0x9df8, 0x9df9, 0x9dfa, 0x9dfb, 0x9dfc, 0x9dfd,
+    0x9e41, 0x9e42, 0x9e43, 0x9e44, 0x9e45, 0x9e46, 0x9e47, 0x9e48,
+    0x9e49, 0x9e4a, 0x9e4b, 0x9e4c, 0x9e4d, 0x9e4e, 0x9e4f, 0x9e50,
+    0x9e51, 0x9e53, 0x9e54, 0x9e55, 0x9e56, 0x9e57, 0x9e58, 0x9e59,
+    0x9e5a, 0x9e5b, 0x9e5c, 0x9e5d, 0x9e61, 0x9e62, 0x9e63, 0x9e64,
+    0x9e65, 0x9e66, 0x9e67, 0x9e68, 0x9e69, 0x9e6a, 0x9e6b, 0x9e6c,
+    0x9e6d, 0x9e6e, 0x9e6f, 0x9e70, 0x9e71, 0x9e73, 0x9e74, 0x9e75,
+    0x9e76, 0x9e77, 0x9e78, 0x9e79, 0x9e7a, 0x9e7b, 0x9e7c, 0x9e7d,
+    0x9e81, 0x9e82, 0x9e83, 0x9e84, 0x9e85, 0x9e86, 0x9e87, 0x9e88,
+    0x9e89, 0x9e8a, 0x9e8b, 0x9e8c, 0x9e8d, 0x9e8e, 0x9e8f, 0x9e90,
+    0x9e91, 0x9e93, 0x9e94, 0x9e95, 0x9e96, 0x9e97, 0x9e98, 0x9e99,
+    /* 0xb900 .. 0xb9ff */
+    0x9e9a, 0x9e9b, 0x9e9c, 0x9e9d, 0x9ea1, 0x9ea2, 0x9ea3, 0x9ea4,
+    0x9ea5, 0x9ea6, 0x9ea7, 0x9ea8, 0x9ea9, 0x9eaa, 0x9eab, 0x9eac,
+    0x9ead, 0x9eae, 0x9eaf, 0x9eb0, 0x9eb1, 0x9eb3, 0x9eb4, 0x9eb5,
+    0x9eb6, 0x9eb7, 0x9eb8, 0x9eb9, 0x9eba, 0x9ebb, 0x9ebc, 0x9ebd,
+    0x9ec1, 0x9ec2, 0x9ec3, 0x9ec4, 0x9ec5, 0x9ec6, 0x9ec7, 0x9ec8,
+    0x9ec9, 0x9eca, 0x9ecb, 0x9ecc, 0x9ecd, 0x9ece, 0x9ecf, 0x9ed0,
+    0x9ed1, 0x9ed3, 0x9ed4, 0x9ed5, 0x9ed6, 0x9ed7, 0x9ed8, 0x9ed9,
+    0x9eda, 0x9edb, 0x9edc, 0x9edd, 0x9ee1, 0x9ee2, 0x9ee3, 0x9ee4,
+    0x9ee5, 0x9ee6, 0x9ee7, 0x9ee8, 0x9ee9, 0x9eea, 0x9eeb, 0x9eec,
+    0x9eed, 0x9eee, 0x9eef, 0x9ef0, 0x9ef1, 0x9ef3, 0x9ef4, 0x9ef5,
+    0x9ef6, 0x9ef7, 0x9ef8, 0x9ef9, 0x9efa, 0x9efb, 0x9efc, 0x9efd,
+    0x9f41, 0x9f42, 0x9f43, 0x9f44, 0x9f45, 0x9f46, 0x9f47, 0x9f48,
+    0x9f49, 0x9f4a, 0x9f4b, 0x9f4c, 0x9f4d, 0x9f4e, 0x9f4f, 0x9f50,
+    0x9f51, 0x9f53, 0x9f54, 0x9f55, 0x9f56, 0x9f57, 0x9f58, 0x9f59,
+    0x9f5a, 0x9f5b, 0x9f5c, 0x9f5d, 0x9f61, 0x9f62, 0x9f63, 0x9f64,
+    0x9f65, 0x9f66, 0x9f67, 0x9f68, 0x9f69, 0x9f6a, 0x9f6b, 0x9f6c,
+    0x9f6d, 0x9f6e, 0x9f6f, 0x9f70, 0x9f71, 0x9f73, 0x9f74, 0x9f75,
+    0x9f76, 0x9f77, 0x9f78, 0x9f79, 0x9f7a, 0x9f7b, 0x9f7c, 0x9f7d,
+    0x9f81, 0x9f82, 0x9f83, 0x9f84, 0x9f85, 0x9f86, 0x9f87, 0x9f88,
+    0x9f89, 0x9f8a, 0x9f8b, 0x9f8c, 0x9f8d, 0x9f8e, 0x9f8f, 0x9f90,
+    0x9f91, 0x9f93, 0x9f94, 0x9f95, 0x9f96, 0x9f97, 0x9f98, 0x9f99,
+    0x9f9a, 0x9f9b, 0x9f9c, 0x9f9d, 0x9fa1, 0x9fa2, 0x9fa3, 0x9fa4,
+    0x9fa5, 0x9fa6, 0x9fa7, 0x9fa8, 0x9fa9, 0x9faa, 0x9fab, 0x9fac,
+    0x9fad, 0x9fae, 0x9faf, 0x9fb0, 0x9fb1, 0x9fb3, 0x9fb4, 0x9fb5,
+    0x9fb6, 0x9fb7, 0x9fb8, 0x9fb9, 0x9fba, 0x9fbb, 0x9fbc, 0x9fbd,
+    0xa061, 0xa062, 0xa063, 0xa064, 0xa065, 0xa066, 0xa067, 0xa068,
+    0xa069, 0xa06a, 0xa06b, 0xa06c, 0xa06d, 0xa06e, 0xa06f, 0xa070,
+    0xa071, 0xa073, 0xa074, 0xa075, 0xa076, 0xa077, 0xa078, 0xa079,
+    0xa07a, 0xa07b, 0xa07c, 0xa07d, 0xa081, 0xa082, 0xa083, 0xa084,
+    0xa085, 0xa086, 0xa087, 0xa088, 0xa089, 0xa08a, 0xa08b, 0xa08c,
+    0xa08d, 0xa08e, 0xa08f, 0xa090, 0xa091, 0xa093, 0xa094, 0xa095,
+    0xa096, 0xa097, 0xa098, 0xa099, 0xa09a, 0xa09b, 0xa09c, 0xa09d,
+    /* 0xba00 .. 0xbaff */
+    0xa0a1, 0xa0a2, 0xa0a3, 0xa0a4, 0xa0a5, 0xa0a6, 0xa0a7, 0xa0a8,
+    0xa0a9, 0xa0aa, 0xa0ab, 0xa0ac, 0xa0ad, 0xa0ae, 0xa0af, 0xa0b0,
+    0xa0b1, 0xa0b3, 0xa0b4, 0xa0b5, 0xa0b6, 0xa0b7, 0xa0b8, 0xa0b9,
+    0xa0ba, 0xa0bb, 0xa0bc, 0xa0bd, 0xa0c1, 0xa0c2, 0xa0c3, 0xa0c4,
+    0xa0c5, 0xa0c6, 0xa0c7, 0xa0c8, 0xa0c9, 0xa0ca, 0xa0cb, 0xa0cc,
+    0xa0cd, 0xa0ce, 0xa0cf, 0xa0d0, 0xa0d1, 0xa0d3, 0xa0d4, 0xa0d5,
+    0xa0d6, 0xa0d7, 0xa0d8, 0xa0d9, 0xa0da, 0xa0db, 0xa0dc, 0xa0dd,
+    0xa0e1, 0xa0e2, 0xa0e3, 0xa0e4, 0xa0e5, 0xa0e6, 0xa0e7, 0xa0e8,
+    0xa0e9, 0xa0ea, 0xa0eb, 0xa0ec, 0xa0ed, 0xa0ee, 0xa0ef, 0xa0f0,
+    0xa0f1, 0xa0f3, 0xa0f4, 0xa0f5, 0xa0f6, 0xa0f7, 0xa0f8, 0xa0f9,
+    0xa0fa, 0xa0fb, 0xa0fc, 0xa0fd, 0xa141, 0xa142, 0xa143, 0xa144,
+    0xa145, 0xa146, 0xa147, 0xa148, 0xa149, 0xa14a, 0xa14b, 0xa14c,
+    0xa14d, 0xa14e, 0xa14f, 0xa150, 0xa151, 0xa153, 0xa154, 0xa155,
+    0xa156, 0xa157, 0xa158, 0xa159, 0xa15a, 0xa15b, 0xa15c, 0xa15d,
+    0xa161, 0xa162, 0xa163, 0xa164, 0xa165, 0xa166, 0xa167, 0xa168,
+    0xa169, 0xa16a, 0xa16b, 0xa16c, 0xa16d, 0xa16e, 0xa16f, 0xa170,
+    0xa171, 0xa173, 0xa174, 0xa175, 0xa176, 0xa177, 0xa178, 0xa179,
+    0xa17a, 0xa17b, 0xa17c, 0xa17d, 0xa181, 0xa182, 0xa183, 0xa184,
+    0xa185, 0xa186, 0xa187, 0xa188, 0xa189, 0xa18a, 0xa18b, 0xa18c,
+    0xa18d, 0xa18e, 0xa18f, 0xa190, 0xa191, 0xa193, 0xa194, 0xa195,
+    0xa196, 0xa197, 0xa198, 0xa199, 0xa19a, 0xa19b, 0xa19c, 0xa19d,
+    0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4, 0xa1a5, 0xa1a6, 0xa1a7, 0xa1a8,
+    0xa1a9, 0xa1aa, 0xa1ab, 0xa1ac, 0xa1ad, 0xa1ae, 0xa1af, 0xa1b0,
+    0xa1b1, 0xa1b3, 0xa1b4, 0xa1b5, 0xa1b6, 0xa1b7, 0xa1b8, 0xa1b9,
+    0xa1ba, 0xa1bb, 0xa1bc, 0xa1bd, 0xa1c1, 0xa1c2, 0xa1c3, 0xa1c4,
+    0xa1c5, 0xa1c6, 0xa1c7, 0xa1c8, 0xa1c9, 0xa1ca, 0xa1cb, 0xa1cc,
+    0xa1cd, 0xa1ce, 0xa1cf, 0xa1d0, 0xa1d1, 0xa1d3, 0xa1d4, 0xa1d5,
+    0xa1d6, 0xa1d7, 0xa1d8, 0xa1d9, 0xa1da, 0xa1db, 0xa1dc, 0xa1dd,
+    0xa1e1, 0xa1e2, 0xa1e3, 0xa1e4, 0xa1e5, 0xa1e6, 0xa1e7, 0xa1e8,
+    0xa1e9, 0xa1ea, 0xa1eb, 0xa1ec, 0xa1ed, 0xa1ee, 0xa1ef, 0xa1f0,
+    0xa1f1, 0xa1f3, 0xa1f4, 0xa1f5, 0xa1f6, 0xa1f7, 0xa1f8, 0xa1f9,
+    0xa1fa, 0xa1fb, 0xa1fc, 0xa1fd, 0xa241, 0xa242, 0xa243, 0xa244,
+    /* 0xbb00 .. 0xbbff */
+    0xa245, 0xa246, 0xa247, 0xa248, 0xa249, 0xa24a, 0xa24b, 0xa24c,
+    0xa24d, 0xa24e, 0xa24f, 0xa250, 0xa251, 0xa253, 0xa254, 0xa255,
+    0xa256, 0xa257, 0xa258, 0xa259, 0xa25a, 0xa25b, 0xa25c, 0xa25d,
+    0xa261, 0xa262, 0xa263, 0xa264, 0xa265, 0xa266, 0xa267, 0xa268,
+    0xa269, 0xa26a, 0xa26b, 0xa26c, 0xa26d, 0xa26e, 0xa26f, 0xa270,
+    0xa271, 0xa273, 0xa274, 0xa275, 0xa276, 0xa277, 0xa278, 0xa279,
+    0xa27a, 0xa27b, 0xa27c, 0xa27d, 0xa281, 0xa282, 0xa283, 0xa284,
+    0xa285, 0xa286, 0xa287, 0xa288, 0xa289, 0xa28a, 0xa28b, 0xa28c,
+    0xa28d, 0xa28e, 0xa28f, 0xa290, 0xa291, 0xa293, 0xa294, 0xa295,
+    0xa296, 0xa297, 0xa298, 0xa299, 0xa29a, 0xa29b, 0xa29c, 0xa29d,
+    0xa2a1, 0xa2a2, 0xa2a3, 0xa2a4, 0xa2a5, 0xa2a6, 0xa2a7, 0xa2a8,
+    0xa2a9, 0xa2aa, 0xa2ab, 0xa2ac, 0xa2ad, 0xa2ae, 0xa2af, 0xa2b0,
+    0xa2b1, 0xa2b3, 0xa2b4, 0xa2b5, 0xa2b6, 0xa2b7, 0xa2b8, 0xa2b9,
+    0xa2ba, 0xa2bb, 0xa2bc, 0xa2bd, 0xa2c1, 0xa2c2, 0xa2c3, 0xa2c4,
+    0xa2c5, 0xa2c6, 0xa2c7, 0xa2c8, 0xa2c9, 0xa2ca, 0xa2cb, 0xa2cc,
+    0xa2cd, 0xa2ce, 0xa2cf, 0xa2d0, 0xa2d1, 0xa2d3, 0xa2d4, 0xa2d5,
+    0xa2d6, 0xa2d7, 0xa2d8, 0xa2d9, 0xa2da, 0xa2db, 0xa2dc, 0xa2dd,
+    0xa2e1, 0xa2e2, 0xa2e3, 0xa2e4, 0xa2e5, 0xa2e6, 0xa2e7, 0xa2e8,
+    0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec, 0xa2ed, 0xa2ee, 0xa2ef, 0xa2f0,
+    0xa2f1, 0xa2f3, 0xa2f4, 0xa2f5, 0xa2f6, 0xa2f7, 0xa2f8, 0xa2f9,
+    0xa2fa, 0xa2fb, 0xa2fc, 0xa2fd, 0xa341, 0xa342, 0xa343, 0xa344,
+    0xa345, 0xa346, 0xa347, 0xa348, 0xa349, 0xa34a, 0xa34b, 0xa34c,
+    0xa34d, 0xa34e, 0xa34f, 0xa350, 0xa351, 0xa353, 0xa354, 0xa355,
+    0xa356, 0xa357, 0xa358, 0xa359, 0xa35a, 0xa35b, 0xa35c, 0xa35d,
+    0xa361, 0xa362, 0xa363, 0xa364, 0xa365, 0xa366, 0xa367, 0xa368,
+    0xa369, 0xa36a, 0xa36b, 0xa36c, 0xa36d, 0xa36e, 0xa36f, 0xa370,
+    0xa371, 0xa373, 0xa374, 0xa375, 0xa376, 0xa377, 0xa378, 0xa379,
+    0xa37a, 0xa37b, 0xa37c, 0xa37d, 0xa381, 0xa382, 0xa383, 0xa384,
+    0xa385, 0xa386, 0xa387, 0xa388, 0xa389, 0xa38a, 0xa38b, 0xa38c,
+    0xa38d, 0xa38e, 0xa38f, 0xa390, 0xa391, 0xa393, 0xa394, 0xa395,
+    0xa396, 0xa397, 0xa398, 0xa399, 0xa39a, 0xa39b, 0xa39c, 0xa39d,
+    0xa3a1, 0xa3a2, 0xa3a3, 0xa3a4, 0xa3a5, 0xa3a6, 0xa3a7, 0xa3a8,
+    /* 0xbc00 .. 0xbcff */
+    0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac, 0xa3ad, 0xa3ae, 0xa3af, 0xa3b0,
+    0xa3b1, 0xa3b3, 0xa3b4, 0xa3b5, 0xa3b6, 0xa3b7, 0xa3b8, 0xa3b9,
+    0xa3ba, 0xa3bb, 0xa3bc, 0xa3bd, 0xa461, 0xa462, 0xa463, 0xa464,
+    0xa465, 0xa466, 0xa467, 0xa468, 0xa469, 0xa46a, 0xa46b, 0xa46c,
+    0xa46d, 0xa46e, 0xa46f, 0xa470, 0xa471, 0xa473, 0xa474, 0xa475,
+    0xa476, 0xa477, 0xa478, 0xa479, 0xa47a, 0xa47b, 0xa47c, 0xa47d,
+    0xa481, 0xa482, 0xa483, 0xa484, 0xa485, 0xa486, 0xa487, 0xa488,
+    0xa489, 0xa48a, 0xa48b, 0xa48c, 0xa48d, 0xa48e, 0xa48f, 0xa490,
+    0xa491, 0xa493, 0xa494, 0xa495, 0xa496, 0xa497, 0xa498, 0xa499,
+    0xa49a, 0xa49b, 0xa49c, 0xa49d, 0xa4a1, 0xa4a2, 0xa4a3, 0xa4a4,
+    0xa4a5, 0xa4a6, 0xa4a7, 0xa4a8, 0xa4a9, 0xa4aa, 0xa4ab, 0xa4ac,
+    0xa4ad, 0xa4ae, 0xa4af, 0xa4b0, 0xa4b1, 0xa4b3, 0xa4b4, 0xa4b5,
+    0xa4b6, 0xa4b7, 0xa4b8, 0xa4b9, 0xa4ba, 0xa4bb, 0xa4bc, 0xa4bd,
+    0xa4c1, 0xa4c2, 0xa4c3, 0xa4c4, 0xa4c5, 0xa4c6, 0xa4c7, 0xa4c8,
+    0xa4c9, 0xa4ca, 0xa4cb, 0xa4cc, 0xa4cd, 0xa4ce, 0xa4cf, 0xa4d0,
+    0xa4d1, 0xa4d3, 0xa4d4, 0xa4d5, 0xa4d6, 0xa4d7, 0xa4d8, 0xa4d9,
+    0xa4da, 0xa4db, 0xa4dc, 0xa4dd, 0xa4e1, 0xa4e2, 0xa4e3, 0xa4e4,
+    0xa4e5, 0xa4e6, 0xa4e7, 0xa4e8, 0xa4e9, 0xa4ea, 0xa4eb, 0xa4ec,
+    0xa4ed, 0xa4ee, 0xa4ef, 0xa4f0, 0xa4f1, 0xa4f3, 0xa4f4, 0xa4f5,
+    0xa4f6, 0xa4f7, 0xa4f8, 0xa4f9, 0xa4fa, 0xa4fb, 0xa4fc, 0xa4fd,
+    0xa541, 0xa542, 0xa543, 0xa544, 0xa545, 0xa546, 0xa547, 0xa548,
+    0xa549, 0xa54a, 0xa54b, 0xa54c, 0xa54d, 0xa54e, 0xa54f, 0xa550,
+    0xa551, 0xa553, 0xa554, 0xa555, 0xa556, 0xa557, 0xa558, 0xa559,
+    0xa55a, 0xa55b, 0xa55c, 0xa55d, 0xa561, 0xa562, 0xa563, 0xa564,
+    0xa565, 0xa566, 0xa567, 0xa568, 0xa569, 0xa56a, 0xa56b, 0xa56c,
+    0xa56d, 0xa56e, 0xa56f, 0xa570, 0xa571, 0xa573, 0xa574, 0xa575,
+    0xa576, 0xa577, 0xa578, 0xa579, 0xa57a, 0xa57b, 0xa57c, 0xa57d,
+    0xa581, 0xa582, 0xa583, 0xa584, 0xa585, 0xa586, 0xa587, 0xa588,
+    0xa589, 0xa58a, 0xa58b, 0xa58c, 0xa58d, 0xa58e, 0xa58f, 0xa590,
+    0xa591, 0xa593, 0xa594, 0xa595, 0xa596, 0xa597, 0xa598, 0xa599,
+    0xa59a, 0xa59b, 0xa59c, 0xa59d, 0xa5a1, 0xa5a2, 0xa5a3, 0xa5a4,
+    0xa5a5, 0xa5a6, 0xa5a7, 0xa5a8, 0xa5a9, 0xa5aa, 0xa5ab, 0xa5ac,
+    /* 0xbd00 .. 0xbdff */
+    0xa5ad, 0xa5ae, 0xa5af, 0xa5b0, 0xa5b1, 0xa5b3, 0xa5b4, 0xa5b5,
+    0xa5b6, 0xa5b7, 0xa5b8, 0xa5b9, 0xa5ba, 0xa5bb, 0xa5bc, 0xa5bd,
+    0xa5c1, 0xa5c2, 0xa5c3, 0xa5c4, 0xa5c5, 0xa5c6, 0xa5c7, 0xa5c8,
+    0xa5c9, 0xa5ca, 0xa5cb, 0xa5cc, 0xa5cd, 0xa5ce, 0xa5cf, 0xa5d0,
+    0xa5d1, 0xa5d3, 0xa5d4, 0xa5d5, 0xa5d6, 0xa5d7, 0xa5d8, 0xa5d9,
+    0xa5da, 0xa5db, 0xa5dc, 0xa5dd, 0xa5e1, 0xa5e2, 0xa5e3, 0xa5e4,
+    0xa5e5, 0xa5e6, 0xa5e7, 0xa5e8, 0xa5e9, 0xa5ea, 0xa5eb, 0xa5ec,
+    0xa5ed, 0xa5ee, 0xa5ef, 0xa5f0, 0xa5f1, 0xa5f3, 0xa5f4, 0xa5f5,
+    0xa5f6, 0xa5f7, 0xa5f8, 0xa5f9, 0xa5fa, 0xa5fb, 0xa5fc, 0xa5fd,
+    0xa641, 0xa642, 0xa643, 0xa644, 0xa645, 0xa646, 0xa647, 0xa648,
+    0xa649, 0xa64a, 0xa64b, 0xa64c, 0xa64d, 0xa64e, 0xa64f, 0xa650,
+    0xa651, 0xa653, 0xa654, 0xa655, 0xa656, 0xa657, 0xa658, 0xa659,
+    0xa65a, 0xa65b, 0xa65c, 0xa65d, 0xa661, 0xa662, 0xa663, 0xa664,
+    0xa665, 0xa666, 0xa667, 0xa668, 0xa669, 0xa66a, 0xa66b, 0xa66c,
+    0xa66d, 0xa66e, 0xa66f, 0xa670, 0xa671, 0xa673, 0xa674, 0xa675,
+    0xa676, 0xa677, 0xa678, 0xa679, 0xa67a, 0xa67b, 0xa67c, 0xa67d,
+    0xa681, 0xa682, 0xa683, 0xa684, 0xa685, 0xa686, 0xa687, 0xa688,
+    0xa689, 0xa68a, 0xa68b, 0xa68c, 0xa68d, 0xa68e, 0xa68f, 0xa690,
+    0xa691, 0xa693, 0xa694, 0xa695, 0xa696, 0xa697, 0xa698, 0xa699,
+    0xa69a, 0xa69b, 0xa69c, 0xa69d, 0xa6a1, 0xa6a2, 0xa6a3, 0xa6a4,
+    0xa6a5, 0xa6a6, 0xa6a7, 0xa6a8, 0xa6a9, 0xa6aa, 0xa6ab, 0xa6ac,
+    0xa6ad, 0xa6ae, 0xa6af, 0xa6b0, 0xa6b1, 0xa6b3, 0xa6b4, 0xa6b5,
+    0xa6b6, 0xa6b7, 0xa6b8, 0xa6b9, 0xa6ba, 0xa6bb, 0xa6bc, 0xa6bd,
+    0xa6c1, 0xa6c2, 0xa6c3, 0xa6c4, 0xa6c5, 0xa6c6, 0xa6c7, 0xa6c8,
+    0xa6c9, 0xa6ca, 0xa6cb, 0xa6cc, 0xa6cd, 0xa6ce, 0xa6cf, 0xa6d0,
+    0xa6d1, 0xa6d3, 0xa6d4, 0xa6d5, 0xa6d6, 0xa6d7, 0xa6d8, 0xa6d9,
+    0xa6da, 0xa6db, 0xa6dc, 0xa6dd, 0xa6e1, 0xa6e2, 0xa6e3, 0xa6e4,
+    0xa6e5, 0xa6e6, 0xa6e7, 0xa6e8, 0xa6e9, 0xa6ea, 0xa6eb, 0xa6ec,
+    0xa6ed, 0xa6ee, 0xa6ef, 0xa6f0, 0xa6f1, 0xa6f3, 0xa6f4, 0xa6f5,
+    0xa6f6, 0xa6f7, 0xa6f8, 0xa6f9, 0xa6fa, 0xa6fb, 0xa6fc, 0xa6fd,
+    0xa741, 0xa742, 0xa743, 0xa744, 0xa745, 0xa746, 0xa747, 0xa748,
+    0xa749, 0xa74a, 0xa74b, 0xa74c, 0xa74d, 0xa74e, 0xa74f, 0xa750,
+    /* 0xbe00 .. 0xbeff */
+    0xa751, 0xa753, 0xa754, 0xa755, 0xa756, 0xa757, 0xa758, 0xa759,
+    0xa75a, 0xa75b, 0xa75c, 0xa75d, 0xa761, 0xa762, 0xa763, 0xa764,
+    0xa765, 0xa766, 0xa767, 0xa768, 0xa769, 0xa76a, 0xa76b, 0xa76c,
+    0xa76d, 0xa76e, 0xa76f, 0xa770, 0xa771, 0xa773, 0xa774, 0xa775,
+    0xa776, 0xa777, 0xa778, 0xa779, 0xa77a, 0xa77b, 0xa77c, 0xa77d,
+    0xa781, 0xa782, 0xa783, 0xa784, 0xa785, 0xa786, 0xa787, 0xa788,
+    0xa789, 0xa78a, 0xa78b, 0xa78c, 0xa78d, 0xa78e, 0xa78f, 0xa790,
+    0xa791, 0xa793, 0xa794, 0xa795, 0xa796, 0xa797, 0xa798, 0xa799,
+    0xa79a, 0xa79b, 0xa79c, 0xa79d, 0xa7a1, 0xa7a2, 0xa7a3, 0xa7a4,
+    0xa7a5, 0xa7a6, 0xa7a7, 0xa7a8, 0xa7a9, 0xa7aa, 0xa7ab, 0xa7ac,
+    0xa7ad, 0xa7ae, 0xa7af, 0xa7b0, 0xa7b1, 0xa7b3, 0xa7b4, 0xa7b5,
+    0xa7b6, 0xa7b7, 0xa7b8, 0xa7b9, 0xa7ba, 0xa7bb, 0xa7bc, 0xa7bd,
+    0xa861, 0xa862, 0xa863, 0xa864, 0xa865, 0xa866, 0xa867, 0xa868,
+    0xa869, 0xa86a, 0xa86b, 0xa86c, 0xa86d, 0xa86e, 0xa86f, 0xa870,
+    0xa871, 0xa873, 0xa874, 0xa875, 0xa876, 0xa877, 0xa878, 0xa879,
+    0xa87a, 0xa87b, 0xa87c, 0xa87d, 0xa881, 0xa882, 0xa883, 0xa884,
+    0xa885, 0xa886, 0xa887, 0xa888, 0xa889, 0xa88a, 0xa88b, 0xa88c,
+    0xa88d, 0xa88e, 0xa88f, 0xa890, 0xa891, 0xa893, 0xa894, 0xa895,
+    0xa896, 0xa897, 0xa898, 0xa899, 0xa89a, 0xa89b, 0xa89c, 0xa89d,
+    0xa8a1, 0xa8a2, 0xa8a3, 0xa8a4, 0xa8a5, 0xa8a6, 0xa8a7, 0xa8a8,
+    0xa8a9, 0xa8aa, 0xa8ab, 0xa8ac, 0xa8ad, 0xa8ae, 0xa8af, 0xa8b0,
+    0xa8b1, 0xa8b3, 0xa8b4, 0xa8b5, 0xa8b6, 0xa8b7, 0xa8b8, 0xa8b9,
+    0xa8ba, 0xa8bb, 0xa8bc, 0xa8bd, 0xa8c1, 0xa8c2, 0xa8c3, 0xa8c4,
+    0xa8c5, 0xa8c6, 0xa8c7, 0xa8c8, 0xa8c9, 0xa8ca, 0xa8cb, 0xa8cc,
+    0xa8cd, 0xa8ce, 0xa8cf, 0xa8d0, 0xa8d1, 0xa8d3, 0xa8d4, 0xa8d5,
+    0xa8d6, 0xa8d7, 0xa8d8, 0xa8d9, 0xa8da, 0xa8db, 0xa8dc, 0xa8dd,
+    0xa8e1, 0xa8e2, 0xa8e3, 0xa8e4, 0xa8e5, 0xa8e6, 0xa8e7, 0xa8e8,
+    0xa8e9, 0xa8ea, 0xa8eb, 0xa8ec, 0xa8ed, 0xa8ee, 0xa8ef, 0xa8f0,
+    0xa8f1, 0xa8f3, 0xa8f4, 0xa8f5, 0xa8f6, 0xa8f7, 0xa8f8, 0xa8f9,
+    0xa8fa, 0xa8fb, 0xa8fc, 0xa8fd, 0xa941, 0xa942, 0xa943, 0xa944,
+    0xa945, 0xa946, 0xa947, 0xa948, 0xa949, 0xa94a, 0xa94b, 0xa94c,
+    0xa94d, 0xa94e, 0xa94f, 0xa950, 0xa951, 0xa953, 0xa954, 0xa955,
+    /* 0xbf00 .. 0xbfff */
+    0xa956, 0xa957, 0xa958, 0xa959, 0xa95a, 0xa95b, 0xa95c, 0xa95d,
+    0xa961, 0xa962, 0xa963, 0xa964, 0xa965, 0xa966, 0xa967, 0xa968,
+    0xa969, 0xa96a, 0xa96b, 0xa96c, 0xa96d, 0xa96e, 0xa96f, 0xa970,
+    0xa971, 0xa973, 0xa974, 0xa975, 0xa976, 0xa977, 0xa978, 0xa979,
+    0xa97a, 0xa97b, 0xa97c, 0xa97d, 0xa981, 0xa982, 0xa983, 0xa984,
+    0xa985, 0xa986, 0xa987, 0xa988, 0xa989, 0xa98a, 0xa98b, 0xa98c,
+    0xa98d, 0xa98e, 0xa98f, 0xa990, 0xa991, 0xa993, 0xa994, 0xa995,
+    0xa996, 0xa997, 0xa998, 0xa999, 0xa99a, 0xa99b, 0xa99c, 0xa99d,
+    0xa9a1, 0xa9a2, 0xa9a3, 0xa9a4, 0xa9a5, 0xa9a6, 0xa9a7, 0xa9a8,
+    0xa9a9, 0xa9aa, 0xa9ab, 0xa9ac, 0xa9ad, 0xa9ae, 0xa9af, 0xa9b0,
+    0xa9b1, 0xa9b3, 0xa9b4, 0xa9b5, 0xa9b6, 0xa9b7, 0xa9b8, 0xa9b9,
+    0xa9ba, 0xa9bb, 0xa9bc, 0xa9bd, 0xa9c1, 0xa9c2, 0xa9c3, 0xa9c4,
+    0xa9c5, 0xa9c6, 0xa9c7, 0xa9c8, 0xa9c9, 0xa9ca, 0xa9cb, 0xa9cc,
+    0xa9cd, 0xa9ce, 0xa9cf, 0xa9d0, 0xa9d1, 0xa9d3, 0xa9d4, 0xa9d5,
+    0xa9d6, 0xa9d7, 0xa9d8, 0xa9d9, 0xa9da, 0xa9db, 0xa9dc, 0xa9dd,
+    0xa9e1, 0xa9e2, 0xa9e3, 0xa9e4, 0xa9e5, 0xa9e6, 0xa9e7, 0xa9e8,
+    0xa9e9, 0xa9ea, 0xa9eb, 0xa9ec, 0xa9ed, 0xa9ee, 0xa9ef, 0xa9f0,
+    0xa9f1, 0xa9f3, 0xa9f4, 0xa9f5, 0xa9f6, 0xa9f7, 0xa9f8, 0xa9f9,
+    0xa9fa, 0xa9fb, 0xa9fc, 0xa9fd, 0xaa41, 0xaa42, 0xaa43, 0xaa44,
+    0xaa45, 0xaa46, 0xaa47, 0xaa48, 0xaa49, 0xaa4a, 0xaa4b, 0xaa4c,
+    0xaa4d, 0xaa4e, 0xaa4f, 0xaa50, 0xaa51, 0xaa53, 0xaa54, 0xaa55,
+    0xaa56, 0xaa57, 0xaa58, 0xaa59, 0xaa5a, 0xaa5b, 0xaa5c, 0xaa5d,
+    0xaa61, 0xaa62, 0xaa63, 0xaa64, 0xaa65, 0xaa66, 0xaa67, 0xaa68,
+    0xaa69, 0xaa6a, 0xaa6b, 0xaa6c, 0xaa6d, 0xaa6e, 0xaa6f, 0xaa70,
+    0xaa71, 0xaa73, 0xaa74, 0xaa75, 0xaa76, 0xaa77, 0xaa78, 0xaa79,
+    0xaa7a, 0xaa7b, 0xaa7c, 0xaa7d, 0xaa81, 0xaa82, 0xaa83, 0xaa84,
+    0xaa85, 0xaa86, 0xaa87, 0xaa88, 0xaa89, 0xaa8a, 0xaa8b, 0xaa8c,
+    0xaa8d, 0xaa8e, 0xaa8f, 0xaa90, 0xaa91, 0xaa93, 0xaa94, 0xaa95,
+    0xaa96, 0xaa97, 0xaa98, 0xaa99, 0xaa9a, 0xaa9b, 0xaa9c, 0xaa9d,
+    0xaaa1, 0xaaa2, 0xaaa3, 0xaaa4, 0xaaa5, 0xaaa6, 0xaaa7, 0xaaa8,
+    0xaaa9, 0xaaaa, 0xaaab, 0xaaac, 0xaaad, 0xaaae, 0xaaaf, 0xaab0,
+    0xaab1, 0xaab3, 0xaab4, 0xaab5, 0xaab6, 0xaab7, 0xaab8, 0xaab9,
+    /* 0xc000 .. 0xc0ff */
+    0xaaba, 0xaabb, 0xaabc, 0xaabd, 0xaac1, 0xaac2, 0xaac3, 0xaac4,
+    0xaac5, 0xaac6, 0xaac7, 0xaac8, 0xaac9, 0xaaca, 0xaacb, 0xaacc,
+    0xaacd, 0xaace, 0xaacf, 0xaad0, 0xaad1, 0xaad3, 0xaad4, 0xaad5,
+    0xaad6, 0xaad7, 0xaad8, 0xaad9, 0xaada, 0xaadb, 0xaadc, 0xaadd,
+    0xaae1, 0xaae2, 0xaae3, 0xaae4, 0xaae5, 0xaae6, 0xaae7, 0xaae8,
+    0xaae9, 0xaaea, 0xaaeb, 0xaaec, 0xaaed, 0xaaee, 0xaaef, 0xaaf0,
+    0xaaf1, 0xaaf3, 0xaaf4, 0xaaf5, 0xaaf6, 0xaaf7, 0xaaf8, 0xaaf9,
+    0xaafa, 0xaafb, 0xaafc, 0xaafd, 0xab41, 0xab42, 0xab43, 0xab44,
+    0xab45, 0xab46, 0xab47, 0xab48, 0xab49, 0xab4a, 0xab4b, 0xab4c,
+    0xab4d, 0xab4e, 0xab4f, 0xab50, 0xab51, 0xab53, 0xab54, 0xab55,
+    0xab56, 0xab57, 0xab58, 0xab59, 0xab5a, 0xab5b, 0xab5c, 0xab5d,
+    0xab61, 0xab62, 0xab63, 0xab64, 0xab65, 0xab66, 0xab67, 0xab68,
+    0xab69, 0xab6a, 0xab6b, 0xab6c, 0xab6d, 0xab6e, 0xab6f, 0xab70,
+    0xab71, 0xab73, 0xab74, 0xab75, 0xab76, 0xab77, 0xab78, 0xab79,
+    0xab7a, 0xab7b, 0xab7c, 0xab7d, 0xab81, 0xab82, 0xab83, 0xab84,
+    0xab85, 0xab86, 0xab87, 0xab88, 0xab89, 0xab8a, 0xab8b, 0xab8c,
+    0xab8d, 0xab8e, 0xab8f, 0xab90, 0xab91, 0xab93, 0xab94, 0xab95,
+    0xab96, 0xab97, 0xab98, 0xab99, 0xab9a, 0xab9b, 0xab9c, 0xab9d,
+    0xaba1, 0xaba2, 0xaba3, 0xaba4, 0xaba5, 0xaba6, 0xaba7, 0xaba8,
+    0xaba9, 0xabaa, 0xabab, 0xabac, 0xabad, 0xabae, 0xabaf, 0xabb0,
+    0xabb1, 0xabb3, 0xabb4, 0xabb5, 0xabb6, 0xabb7, 0xabb8, 0xabb9,
+    0xabba, 0xabbb, 0xabbc, 0xabbd, 0xac61, 0xac62, 0xac63, 0xac64,
+    0xac65, 0xac66, 0xac67, 0xac68, 0xac69, 0xac6a, 0xac6b, 0xac6c,
+    0xac6d, 0xac6e, 0xac6f, 0xac70, 0xac71, 0xac73, 0xac74, 0xac75,
+    0xac76, 0xac77, 0xac78, 0xac79, 0xac7a, 0xac7b, 0xac7c, 0xac7d,
+    0xac81, 0xac82, 0xac83, 0xac84, 0xac85, 0xac86, 0xac87, 0xac88,
+    0xac89, 0xac8a, 0xac8b, 0xac8c, 0xac8d, 0xac8e, 0xac8f, 0xac90,
+    0xac91, 0xac93, 0xac94, 0xac95, 0xac96, 0xac97, 0xac98, 0xac99,
+    0xac9a, 0xac9b, 0xac9c, 0xac9d, 0xaca1, 0xaca2, 0xaca3, 0xaca4,
+    0xaca5, 0xaca6, 0xaca7, 0xaca8, 0xaca9, 0xacaa, 0xacab, 0xacac,
+    0xacad, 0xacae, 0xacaf, 0xacb0, 0xacb1, 0xacb3, 0xacb4, 0xacb5,
+    0xacb6, 0xacb7, 0xacb8, 0xacb9, 0xacba, 0xacbb, 0xacbc, 0xacbd,
+    /* 0xc100 .. 0xc1ff */
+    0xacc1, 0xacc2, 0xacc3, 0xacc4, 0xacc5, 0xacc6, 0xacc7, 0xacc8,
+    0xacc9, 0xacca, 0xaccb, 0xaccc, 0xaccd, 0xacce, 0xaccf, 0xacd0,
+    0xacd1, 0xacd3, 0xacd4, 0xacd5, 0xacd6, 0xacd7, 0xacd8, 0xacd9,
+    0xacda, 0xacdb, 0xacdc, 0xacdd, 0xace1, 0xace2, 0xace3, 0xace4,
+    0xace5, 0xace6, 0xace7, 0xace8, 0xace9, 0xacea, 0xaceb, 0xacec,
+    0xaced, 0xacee, 0xacef, 0xacf0, 0xacf1, 0xacf3, 0xacf4, 0xacf5,
+    0xacf6, 0xacf7, 0xacf8, 0xacf9, 0xacfa, 0xacfb, 0xacfc, 0xacfd,
+    0xad41, 0xad42, 0xad43, 0xad44, 0xad45, 0xad46, 0xad47, 0xad48,
+    0xad49, 0xad4a, 0xad4b, 0xad4c, 0xad4d, 0xad4e, 0xad4f, 0xad50,
+    0xad51, 0xad53, 0xad54, 0xad55, 0xad56, 0xad57, 0xad58, 0xad59,
+    0xad5a, 0xad5b, 0xad5c, 0xad5d, 0xad61, 0xad62, 0xad63, 0xad64,
+    0xad65, 0xad66, 0xad67, 0xad68, 0xad69, 0xad6a, 0xad6b, 0xad6c,
+    0xad6d, 0xad6e, 0xad6f, 0xad70, 0xad71, 0xad73, 0xad74, 0xad75,
+    0xad76, 0xad77, 0xad78, 0xad79, 0xad7a, 0xad7b, 0xad7c, 0xad7d,
+    0xad81, 0xad82, 0xad83, 0xad84, 0xad85, 0xad86, 0xad87, 0xad88,
+    0xad89, 0xad8a, 0xad8b, 0xad8c, 0xad8d, 0xad8e, 0xad8f, 0xad90,
+    0xad91, 0xad93, 0xad94, 0xad95, 0xad96, 0xad97, 0xad98, 0xad99,
+    0xad9a, 0xad9b, 0xad9c, 0xad9d, 0xada1, 0xada2, 0xada3, 0xada4,
+    0xada5, 0xada6, 0xada7, 0xada8, 0xada9, 0xadaa, 0xadab, 0xadac,
+    0xadad, 0xadae, 0xadaf, 0xadb0, 0xadb1, 0xadb3, 0xadb4, 0xadb5,
+    0xadb6, 0xadb7, 0xadb8, 0xadb9, 0xadba, 0xadbb, 0xadbc, 0xadbd,
+    0xadc1, 0xadc2, 0xadc3, 0xadc4, 0xadc5, 0xadc6, 0xadc7, 0xadc8,
+    0xadc9, 0xadca, 0xadcb, 0xadcc, 0xadcd, 0xadce, 0xadcf, 0xadd0,
+    0xadd1, 0xadd3, 0xadd4, 0xadd5, 0xadd6, 0xadd7, 0xadd8, 0xadd9,
+    0xadda, 0xaddb, 0xaddc, 0xaddd, 0xade1, 0xade2, 0xade3, 0xade4,
+    0xade5, 0xade6, 0xade7, 0xade8, 0xade9, 0xadea, 0xadeb, 0xadec,
+    0xaded, 0xadee, 0xadef, 0xadf0, 0xadf1, 0xadf3, 0xadf4, 0xadf5,
+    0xadf6, 0xadf7, 0xadf8, 0xadf9, 0xadfa, 0xadfb, 0xadfc, 0xadfd,
+    0xae41, 0xae42, 0xae43, 0xae44, 0xae45, 0xae46, 0xae47, 0xae48,
+    0xae49, 0xae4a, 0xae4b, 0xae4c, 0xae4d, 0xae4e, 0xae4f, 0xae50,
+    0xae51, 0xae53, 0xae54, 0xae55, 0xae56, 0xae57, 0xae58, 0xae59,
+    0xae5a, 0xae5b, 0xae5c, 0xae5d, 0xae61, 0xae62, 0xae63, 0xae64,
+    /* 0xc200 .. 0xc2ff */
+    0xae65, 0xae66, 0xae67, 0xae68, 0xae69, 0xae6a, 0xae6b, 0xae6c,
+    0xae6d, 0xae6e, 0xae6f, 0xae70, 0xae71, 0xae73, 0xae74, 0xae75,
+    0xae76, 0xae77, 0xae78, 0xae79, 0xae7a, 0xae7b, 0xae7c, 0xae7d,
+    0xae81, 0xae82, 0xae83, 0xae84, 0xae85, 0xae86, 0xae87, 0xae88,
+    0xae89, 0xae8a, 0xae8b, 0xae8c, 0xae8d, 0xae8e, 0xae8f, 0xae90,
+    0xae91, 0xae93, 0xae94, 0xae95, 0xae96, 0xae97, 0xae98, 0xae99,
+    0xae9a, 0xae9b, 0xae9c, 0xae9d, 0xaea1, 0xaea2, 0xaea3, 0xaea4,
+    0xaea5, 0xaea6, 0xaea7, 0xaea8, 0xaea9, 0xaeaa, 0xaeab, 0xaeac,
+    0xaead, 0xaeae, 0xaeaf, 0xaeb0, 0xaeb1, 0xaeb3, 0xaeb4, 0xaeb5,
+    0xaeb6, 0xaeb7, 0xaeb8, 0xaeb9, 0xaeba, 0xaebb, 0xaebc, 0xaebd,
+    0xaec1, 0xaec2, 0xaec3, 0xaec4, 0xaec5, 0xaec6, 0xaec7, 0xaec8,
+    0xaec9, 0xaeca, 0xaecb, 0xaecc, 0xaecd, 0xaece, 0xaecf, 0xaed0,
+    0xaed1, 0xaed3, 0xaed4, 0xaed5, 0xaed6, 0xaed7, 0xaed8, 0xaed9,
+    0xaeda, 0xaedb, 0xaedc, 0xaedd, 0xaee1, 0xaee2, 0xaee3, 0xaee4,
+    0xaee5, 0xaee6, 0xaee7, 0xaee8, 0xaee9, 0xaeea, 0xaeeb, 0xaeec,
+    0xaeed, 0xaeee, 0xaeef, 0xaef0, 0xaef1, 0xaef3, 0xaef4, 0xaef5,
+    0xaef6, 0xaef7, 0xaef8, 0xaef9, 0xaefa, 0xaefb, 0xaefc, 0xaefd,
+    0xaf41, 0xaf42, 0xaf43, 0xaf44, 0xaf45, 0xaf46, 0xaf47, 0xaf48,
+    0xaf49, 0xaf4a, 0xaf4b, 0xaf4c, 0xaf4d, 0xaf4e, 0xaf4f, 0xaf50,
+    0xaf51, 0xaf53, 0xaf54, 0xaf55, 0xaf56, 0xaf57, 0xaf58, 0xaf59,
+    0xaf5a, 0xaf5b, 0xaf5c, 0xaf5d, 0xaf61, 0xaf62, 0xaf63, 0xaf64,
+    0xaf65, 0xaf66, 0xaf67, 0xaf68, 0xaf69, 0xaf6a, 0xaf6b, 0xaf6c,
+    0xaf6d, 0xaf6e, 0xaf6f, 0xaf70, 0xaf71, 0xaf73, 0xaf74, 0xaf75,
+    0xaf76, 0xaf77, 0xaf78, 0xaf79, 0xaf7a, 0xaf7b, 0xaf7c, 0xaf7d,
+    0xaf81, 0xaf82, 0xaf83, 0xaf84, 0xaf85, 0xaf86, 0xaf87, 0xaf88,
+    0xaf89, 0xaf8a, 0xaf8b, 0xaf8c, 0xaf8d, 0xaf8e, 0xaf8f, 0xaf90,
+    0xaf91, 0xaf93, 0xaf94, 0xaf95, 0xaf96, 0xaf97, 0xaf98, 0xaf99,
+    0xaf9a, 0xaf9b, 0xaf9c, 0xaf9d, 0xafa1, 0xafa2, 0xafa3, 0xafa4,
+    0xafa5, 0xafa6, 0xafa7, 0xafa8, 0xafa9, 0xafaa, 0xafab, 0xafac,
+    0xafad, 0xafae, 0xafaf, 0xafb0, 0xafb1, 0xafb3, 0xafb4, 0xafb5,
+    0xafb6, 0xafb7, 0xafb8, 0xafb9, 0xafba, 0xafbb, 0xafbc, 0xafbd,
+    0xb061, 0xb062, 0xb063, 0xb064, 0xb065, 0xb066, 0xb067, 0xb068,
+    /* 0xc300 .. 0xc3ff */
+    0xb069, 0xb06a, 0xb06b, 0xb06c, 0xb06d, 0xb06e, 0xb06f, 0xb070,
+    0xb071, 0xb073, 0xb074, 0xb075, 0xb076, 0xb077, 0xb078, 0xb079,
+    0xb07a, 0xb07b, 0xb07c, 0xb07d, 0xb081, 0xb082, 0xb083, 0xb084,
+    0xb085, 0xb086, 0xb087, 0xb088, 0xb089, 0xb08a, 0xb08b, 0xb08c,
+    0xb08d, 0xb08e, 0xb08f, 0xb090, 0xb091, 0xb093, 0xb094, 0xb095,
+    0xb096, 0xb097, 0xb098, 0xb099, 0xb09a, 0xb09b, 0xb09c, 0xb09d,
+    0xb0a1, 0xb0a2, 0xb0a3, 0xb0a4, 0xb0a5, 0xb0a6, 0xb0a7, 0xb0a8,
+    0xb0a9, 0xb0aa, 0xb0ab, 0xb0ac, 0xb0ad, 0xb0ae, 0xb0af, 0xb0b0,
+    0xb0b1, 0xb0b3, 0xb0b4, 0xb0b5, 0xb0b6, 0xb0b7, 0xb0b8, 0xb0b9,
+    0xb0ba, 0xb0bb, 0xb0bc, 0xb0bd, 0xb0c1, 0xb0c2, 0xb0c3, 0xb0c4,
+    0xb0c5, 0xb0c6, 0xb0c7, 0xb0c8, 0xb0c9, 0xb0ca, 0xb0cb, 0xb0cc,
+    0xb0cd, 0xb0ce, 0xb0cf, 0xb0d0, 0xb0d1, 0xb0d3, 0xb0d4, 0xb0d5,
+    0xb0d6, 0xb0d7, 0xb0d8, 0xb0d9, 0xb0da, 0xb0db, 0xb0dc, 0xb0dd,
+    0xb0e1, 0xb0e2, 0xb0e3, 0xb0e4, 0xb0e5, 0xb0e6, 0xb0e7, 0xb0e8,
+    0xb0e9, 0xb0ea, 0xb0eb, 0xb0ec, 0xb0ed, 0xb0ee, 0xb0ef, 0xb0f0,
+    0xb0f1, 0xb0f3, 0xb0f4, 0xb0f5, 0xb0f6, 0xb0f7, 0xb0f8, 0xb0f9,
+    0xb0fa, 0xb0fb, 0xb0fc, 0xb0fd, 0xb141, 0xb142, 0xb143, 0xb144,
+    0xb145, 0xb146, 0xb147, 0xb148, 0xb149, 0xb14a, 0xb14b, 0xb14c,
+    0xb14d, 0xb14e, 0xb14f, 0xb150, 0xb151, 0xb153, 0xb154, 0xb155,
+    0xb156, 0xb157, 0xb158, 0xb159, 0xb15a, 0xb15b, 0xb15c, 0xb15d,
+    0xb161, 0xb162, 0xb163, 0xb164, 0xb165, 0xb166, 0xb167, 0xb168,
+    0xb169, 0xb16a, 0xb16b, 0xb16c, 0xb16d, 0xb16e, 0xb16f, 0xb170,
+    0xb171, 0xb173, 0xb174, 0xb175, 0xb176, 0xb177, 0xb178, 0xb179,
+    0xb17a, 0xb17b, 0xb17c, 0xb17d, 0xb181, 0xb182, 0xb183, 0xb184,
+    0xb185, 0xb186, 0xb187, 0xb188, 0xb189, 0xb18a, 0xb18b, 0xb18c,
+    0xb18d, 0xb18e, 0xb18f, 0xb190, 0xb191, 0xb193, 0xb194, 0xb195,
+    0xb196, 0xb197, 0xb198, 0xb199, 0xb19a, 0xb19b, 0xb19c, 0xb19d,
+    0xb1a1, 0xb1a2, 0xb1a3, 0xb1a4, 0xb1a5, 0xb1a6, 0xb1a7, 0xb1a8,
+    0xb1a9, 0xb1aa, 0xb1ab, 0xb1ac, 0xb1ad, 0xb1ae, 0xb1af, 0xb1b0,
+    0xb1b1, 0xb1b3, 0xb1b4, 0xb1b5, 0xb1b6, 0xb1b7, 0xb1b8, 0xb1b9,
+    0xb1ba, 0xb1bb, 0xb1bc, 0xb1bd, 0xb1c1, 0xb1c2, 0xb1c3, 0xb1c4,
+    0xb1c5, 0xb1c6, 0xb1c7, 0xb1c8, 0xb1c9, 0xb1ca, 0xb1cb, 0xb1cc,
+    /* 0xc400 .. 0xc4ff */
+    0xb1cd, 0xb1ce, 0xb1cf, 0xb1d0, 0xb1d1, 0xb1d3, 0xb1d4, 0xb1d5,
+    0xb1d6, 0xb1d7, 0xb1d8, 0xb1d9, 0xb1da, 0xb1db, 0xb1dc, 0xb1dd,
+    0xb1e1, 0xb1e2, 0xb1e3, 0xb1e4, 0xb1e5, 0xb1e6, 0xb1e7, 0xb1e8,
+    0xb1e9, 0xb1ea, 0xb1eb, 0xb1ec, 0xb1ed, 0xb1ee, 0xb1ef, 0xb1f0,
+    0xb1f1, 0xb1f3, 0xb1f4, 0xb1f5, 0xb1f6, 0xb1f7, 0xb1f8, 0xb1f9,
+    0xb1fa, 0xb1fb, 0xb1fc, 0xb1fd, 0xb241, 0xb242, 0xb243, 0xb244,
+    0xb245, 0xb246, 0xb247, 0xb248, 0xb249, 0xb24a, 0xb24b, 0xb24c,
+    0xb24d, 0xb24e, 0xb24f, 0xb250, 0xb251, 0xb253, 0xb254, 0xb255,
+    0xb256, 0xb257, 0xb258, 0xb259, 0xb25a, 0xb25b, 0xb25c, 0xb25d,
+    0xb261, 0xb262, 0xb263, 0xb264, 0xb265, 0xb266, 0xb267, 0xb268,
+    0xb269, 0xb26a, 0xb26b, 0xb26c, 0xb26d, 0xb26e, 0xb26f, 0xb270,
+    0xb271, 0xb273, 0xb274, 0xb275, 0xb276, 0xb277, 0xb278, 0xb279,
+    0xb27a, 0xb27b, 0xb27c, 0xb27d, 0xb281, 0xb282, 0xb283, 0xb284,
+    0xb285, 0xb286, 0xb287, 0xb288, 0xb289, 0xb28a, 0xb28b, 0xb28c,
+    0xb28d, 0xb28e, 0xb28f, 0xb290, 0xb291, 0xb293, 0xb294, 0xb295,
+    0xb296, 0xb297, 0xb298, 0xb299, 0xb29a, 0xb29b, 0xb29c, 0xb29d,
+    0xb2a1, 0xb2a2, 0xb2a3, 0xb2a4, 0xb2a5, 0xb2a6, 0xb2a7, 0xb2a8,
+    0xb2a9, 0xb2aa, 0xb2ab, 0xb2ac, 0xb2ad, 0xb2ae, 0xb2af, 0xb2b0,
+    0xb2b1, 0xb2b3, 0xb2b4, 0xb2b5, 0xb2b6, 0xb2b7, 0xb2b8, 0xb2b9,
+    0xb2ba, 0xb2bb, 0xb2bc, 0xb2bd, 0xb2c1, 0xb2c2, 0xb2c3, 0xb2c4,
+    0xb2c5, 0xb2c6, 0xb2c7, 0xb2c8, 0xb2c9, 0xb2ca, 0xb2cb, 0xb2cc,
+    0xb2cd, 0xb2ce, 0xb2cf, 0xb2d0, 0xb2d1, 0xb2d3, 0xb2d4, 0xb2d5,
+    0xb2d6, 0xb2d7, 0xb2d8, 0xb2d9, 0xb2da, 0xb2db, 0xb2dc, 0xb2dd,
+    0xb2e1, 0xb2e2, 0xb2e3, 0xb2e4, 0xb2e5, 0xb2e6, 0xb2e7, 0xb2e8,
+    0xb2e9, 0xb2ea, 0xb2eb, 0xb2ec, 0xb2ed, 0xb2ee, 0xb2ef, 0xb2f0,
+    0xb2f1, 0xb2f3, 0xb2f4, 0xb2f5, 0xb2f6, 0xb2f7, 0xb2f8, 0xb2f9,
+    0xb2fa, 0xb2fb, 0xb2fc, 0xb2fd, 0xb341, 0xb342, 0xb343, 0xb344,
+    0xb345, 0xb346, 0xb347, 0xb348, 0xb349, 0xb34a, 0xb34b, 0xb34c,
+    0xb34d, 0xb34e, 0xb34f, 0xb350, 0xb351, 0xb353, 0xb354, 0xb355,
+    0xb356, 0xb357, 0xb358, 0xb359, 0xb35a, 0xb35b, 0xb35c, 0xb35d,
+    0xb361, 0xb362, 0xb363, 0xb364, 0xb365, 0xb366, 0xb367, 0xb368,
+    0xb369, 0xb36a, 0xb36b, 0xb36c, 0xb36d, 0xb36e, 0xb36f, 0xb370,
+    /* 0xc500 .. 0xc5ff */
+    0xb371, 0xb373, 0xb374, 0xb375, 0xb376, 0xb377, 0xb378, 0xb379,
+    0xb37a, 0xb37b, 0xb37c, 0xb37d, 0xb381, 0xb382, 0xb383, 0xb384,
+    0xb385, 0xb386, 0xb387, 0xb388, 0xb389, 0xb38a, 0xb38b, 0xb38c,
+    0xb38d, 0xb38e, 0xb38f, 0xb390, 0xb391, 0xb393, 0xb394, 0xb395,
+    0xb396, 0xb397, 0xb398, 0xb399, 0xb39a, 0xb39b, 0xb39c, 0xb39d,
+    0xb3a1, 0xb3a2, 0xb3a3, 0xb3a4, 0xb3a5, 0xb3a6, 0xb3a7, 0xb3a8,
+    0xb3a9, 0xb3aa, 0xb3ab, 0xb3ac, 0xb3ad, 0xb3ae, 0xb3af, 0xb3b0,
+    0xb3b1, 0xb3b3, 0xb3b4, 0xb3b5, 0xb3b6, 0xb3b7, 0xb3b8, 0xb3b9,
+    0xb3ba, 0xb3bb, 0xb3bc, 0xb3bd, 0xb461, 0xb462, 0xb463, 0xb464,
+    0xb465, 0xb466, 0xb467, 0xb468, 0xb469, 0xb46a, 0xb46b, 0xb46c,
+    0xb46d, 0xb46e, 0xb46f, 0xb470, 0xb471, 0xb473, 0xb474, 0xb475,
+    0xb476, 0xb477, 0xb478, 0xb479, 0xb47a, 0xb47b, 0xb47c, 0xb47d,
+    0xb481, 0xb482, 0xb483, 0xb484, 0xb485, 0xb486, 0xb487, 0xb488,
+    0xb489, 0xb48a, 0xb48b, 0xb48c, 0xb48d, 0xb48e, 0xb48f, 0xb490,
+    0xb491, 0xb493, 0xb494, 0xb495, 0xb496, 0xb497, 0xb498, 0xb499,
+    0xb49a, 0xb49b, 0xb49c, 0xb49d, 0xb4a1, 0xb4a2, 0xb4a3, 0xb4a4,
+    0xb4a5, 0xb4a6, 0xb4a7, 0xb4a8, 0xb4a9, 0xb4aa, 0xb4ab, 0xb4ac,
+    0xb4ad, 0xb4ae, 0xb4af, 0xb4b0, 0xb4b1, 0xb4b3, 0xb4b4, 0xb4b5,
+    0xb4b6, 0xb4b7, 0xb4b8, 0xb4b9, 0xb4ba, 0xb4bb, 0xb4bc, 0xb4bd,
+    0xb4c1, 0xb4c2, 0xb4c3, 0xb4c4, 0xb4c5, 0xb4c6, 0xb4c7, 0xb4c8,
+    0xb4c9, 0xb4ca, 0xb4cb, 0xb4cc, 0xb4cd, 0xb4ce, 0xb4cf, 0xb4d0,
+    0xb4d1, 0xb4d3, 0xb4d4, 0xb4d5, 0xb4d6, 0xb4d7, 0xb4d8, 0xb4d9,
+    0xb4da, 0xb4db, 0xb4dc, 0xb4dd, 0xb4e1, 0xb4e2, 0xb4e3, 0xb4e4,
+    0xb4e5, 0xb4e6, 0xb4e7, 0xb4e8, 0xb4e9, 0xb4ea, 0xb4eb, 0xb4ec,
+    0xb4ed, 0xb4ee, 0xb4ef, 0xb4f0, 0xb4f1, 0xb4f3, 0xb4f4, 0xb4f5,
+    0xb4f6, 0xb4f7, 0xb4f8, 0xb4f9, 0xb4fa, 0xb4fb, 0xb4fc, 0xb4fd,
+    0xb541, 0xb542, 0xb543, 0xb544, 0xb545, 0xb546, 0xb547, 0xb548,
+    0xb549, 0xb54a, 0xb54b, 0xb54c, 0xb54d, 0xb54e, 0xb54f, 0xb550,
+    0xb551, 0xb553, 0xb554, 0xb555, 0xb556, 0xb557, 0xb558, 0xb559,
+    0xb55a, 0xb55b, 0xb55c, 0xb55d, 0xb561, 0xb562, 0xb563, 0xb564,
+    0xb565, 0xb566, 0xb567, 0xb568, 0xb569, 0xb56a, 0xb56b, 0xb56c,
+    0xb56d, 0xb56e, 0xb56f, 0xb570, 0xb571, 0xb573, 0xb574, 0xb575,
+    /* 0xc600 .. 0xc6ff */
+    0xb576, 0xb577, 0xb578, 0xb579, 0xb57a, 0xb57b, 0xb57c, 0xb57d,
+    0xb581, 0xb582, 0xb583, 0xb584, 0xb585, 0xb586, 0xb587, 0xb588,
+    0xb589, 0xb58a, 0xb58b, 0xb58c, 0xb58d, 0xb58e, 0xb58f, 0xb590,
+    0xb591, 0xb593, 0xb594, 0xb595, 0xb596, 0xb597, 0xb598, 0xb599,
+    0xb59a, 0xb59b, 0xb59c, 0xb59d, 0xb5a1, 0xb5a2, 0xb5a3, 0xb5a4,
+    0xb5a5, 0xb5a6, 0xb5a7, 0xb5a8, 0xb5a9, 0xb5aa, 0xb5ab, 0xb5ac,
+    0xb5ad, 0xb5ae, 0xb5af, 0xb5b0, 0xb5b1, 0xb5b3, 0xb5b4, 0xb5b5,
+    0xb5b6, 0xb5b7, 0xb5b8, 0xb5b9, 0xb5ba, 0xb5bb, 0xb5bc, 0xb5bd,
+    0xb5c1, 0xb5c2, 0xb5c3, 0xb5c4, 0xb5c5, 0xb5c6, 0xb5c7, 0xb5c8,
+    0xb5c9, 0xb5ca, 0xb5cb, 0xb5cc, 0xb5cd, 0xb5ce, 0xb5cf, 0xb5d0,
+    0xb5d1, 0xb5d3, 0xb5d4, 0xb5d5, 0xb5d6, 0xb5d7, 0xb5d8, 0xb5d9,
+    0xb5da, 0xb5db, 0xb5dc, 0xb5dd, 0xb5e1, 0xb5e2, 0xb5e3, 0xb5e4,
+    0xb5e5, 0xb5e6, 0xb5e7, 0xb5e8, 0xb5e9, 0xb5ea, 0xb5eb, 0xb5ec,
+    0xb5ed, 0xb5ee, 0xb5ef, 0xb5f0, 0xb5f1, 0xb5f3, 0xb5f4, 0xb5f5,
+    0xb5f6, 0xb5f7, 0xb5f8, 0xb5f9, 0xb5fa, 0xb5fb, 0xb5fc, 0xb5fd,
+    0xb641, 0xb642, 0xb643, 0xb644, 0xb645, 0xb646, 0xb647, 0xb648,
+    0xb649, 0xb64a, 0xb64b, 0xb64c, 0xb64d, 0xb64e, 0xb64f, 0xb650,
+    0xb651, 0xb653, 0xb654, 0xb655, 0xb656, 0xb657, 0xb658, 0xb659,
+    0xb65a, 0xb65b, 0xb65c, 0xb65d, 0xb661, 0xb662, 0xb663, 0xb664,
+    0xb665, 0xb666, 0xb667, 0xb668, 0xb669, 0xb66a, 0xb66b, 0xb66c,
+    0xb66d, 0xb66e, 0xb66f, 0xb670, 0xb671, 0xb673, 0xb674, 0xb675,
+    0xb676, 0xb677, 0xb678, 0xb679, 0xb67a, 0xb67b, 0xb67c, 0xb67d,
+    0xb681, 0xb682, 0xb683, 0xb684, 0xb685, 0xb686, 0xb687, 0xb688,
+    0xb689, 0xb68a, 0xb68b, 0xb68c, 0xb68d, 0xb68e, 0xb68f, 0xb690,
+    0xb691, 0xb693, 0xb694, 0xb695, 0xb696, 0xb697, 0xb698, 0xb699,
+    0xb69a, 0xb69b, 0xb69c, 0xb69d, 0xb6a1, 0xb6a2, 0xb6a3, 0xb6a4,
+    0xb6a5, 0xb6a6, 0xb6a7, 0xb6a8, 0xb6a9, 0xb6aa, 0xb6ab, 0xb6ac,
+    0xb6ad, 0xb6ae, 0xb6af, 0xb6b0, 0xb6b1, 0xb6b3, 0xb6b4, 0xb6b5,
+    0xb6b6, 0xb6b7, 0xb6b8, 0xb6b9, 0xb6ba, 0xb6bb, 0xb6bc, 0xb6bd,
+    0xb6c1, 0xb6c2, 0xb6c3, 0xb6c4, 0xb6c5, 0xb6c6, 0xb6c7, 0xb6c8,
+    0xb6c9, 0xb6ca, 0xb6cb, 0xb6cc, 0xb6cd, 0xb6ce, 0xb6cf, 0xb6d0,
+    0xb6d1, 0xb6d3, 0xb6d4, 0xb6d5, 0xb6d6, 0xb6d7, 0xb6d8, 0xb6d9,
+    /* 0xc700 .. 0xc7ff */
+    0xb6da, 0xb6db, 0xb6dc, 0xb6dd, 0xb6e1, 0xb6e2, 0xb6e3, 0xb6e4,
+    0xb6e5, 0xb6e6, 0xb6e7, 0xb6e8, 0xb6e9, 0xb6ea, 0xb6eb, 0xb6ec,
+    0xb6ed, 0xb6ee, 0xb6ef, 0xb6f0, 0xb6f1, 0xb6f3, 0xb6f4, 0xb6f5,
+    0xb6f6, 0xb6f7, 0xb6f8, 0xb6f9, 0xb6fa, 0xb6fb, 0xb6fc, 0xb6fd,
+    0xb741, 0xb742, 0xb743, 0xb744, 0xb745, 0xb746, 0xb747, 0xb748,
+    0xb749, 0xb74a, 0xb74b, 0xb74c, 0xb74d, 0xb74e, 0xb74f, 0xb750,
+    0xb751, 0xb753, 0xb754, 0xb755, 0xb756, 0xb757, 0xb758, 0xb759,
+    0xb75a, 0xb75b, 0xb75c, 0xb75d, 0xb761, 0xb762, 0xb763, 0xb764,
+    0xb765, 0xb766, 0xb767, 0xb768, 0xb769, 0xb76a, 0xb76b, 0xb76c,
+    0xb76d, 0xb76e, 0xb76f, 0xb770, 0xb771, 0xb773, 0xb774, 0xb775,
+    0xb776, 0xb777, 0xb778, 0xb779, 0xb77a, 0xb77b, 0xb77c, 0xb77d,
+    0xb781, 0xb782, 0xb783, 0xb784, 0xb785, 0xb786, 0xb787, 0xb788,
+    0xb789, 0xb78a, 0xb78b, 0xb78c, 0xb78d, 0xb78e, 0xb78f, 0xb790,
+    0xb791, 0xb793, 0xb794, 0xb795, 0xb796, 0xb797, 0xb798, 0xb799,
+    0xb79a, 0xb79b, 0xb79c, 0xb79d, 0xb7a1, 0xb7a2, 0xb7a3, 0xb7a4,
+    0xb7a5, 0xb7a6, 0xb7a7, 0xb7a8, 0xb7a9, 0xb7aa, 0xb7ab, 0xb7ac,
+    0xb7ad, 0xb7ae, 0xb7af, 0xb7b0, 0xb7b1, 0xb7b3, 0xb7b4, 0xb7b5,
+    0xb7b6, 0xb7b7, 0xb7b8, 0xb7b9, 0xb7ba, 0xb7bb, 0xb7bc, 0xb7bd,
+    0xb861, 0xb862, 0xb863, 0xb864, 0xb865, 0xb866, 0xb867, 0xb868,
+    0xb869, 0xb86a, 0xb86b, 0xb86c, 0xb86d, 0xb86e, 0xb86f, 0xb870,
+    0xb871, 0xb873, 0xb874, 0xb875, 0xb876, 0xb877, 0xb878, 0xb879,
+    0xb87a, 0xb87b, 0xb87c, 0xb87d, 0xb881, 0xb882, 0xb883, 0xb884,
+    0xb885, 0xb886, 0xb887, 0xb888, 0xb889, 0xb88a, 0xb88b, 0xb88c,
+    0xb88d, 0xb88e, 0xb88f, 0xb890, 0xb891, 0xb893, 0xb894, 0xb895,
+    0xb896, 0xb897, 0xb898, 0xb899, 0xb89a, 0xb89b, 0xb89c, 0xb89d,
+    0xb8a1, 0xb8a2, 0xb8a3, 0xb8a4, 0xb8a5, 0xb8a6, 0xb8a7, 0xb8a8,
+    0xb8a9, 0xb8aa, 0xb8ab, 0xb8ac, 0xb8ad, 0xb8ae, 0xb8af, 0xb8b0,
+    0xb8b1, 0xb8b3, 0xb8b4, 0xb8b5, 0xb8b6, 0xb8b7, 0xb8b8, 0xb8b9,
+    0xb8ba, 0xb8bb, 0xb8bc, 0xb8bd, 0xb8c1, 0xb8c2, 0xb8c3, 0xb8c4,
+    0xb8c5, 0xb8c6, 0xb8c7, 0xb8c8, 0xb8c9, 0xb8ca, 0xb8cb, 0xb8cc,
+    0xb8cd, 0xb8ce, 0xb8cf, 0xb8d0, 0xb8d1, 0xb8d3, 0xb8d4, 0xb8d5,
+    0xb8d6, 0xb8d7, 0xb8d8, 0xb8d9, 0xb8da, 0xb8db, 0xb8dc, 0xb8dd,
+    /* 0xc800 .. 0xc8ff */
+    0xb8e1, 0xb8e2, 0xb8e3, 0xb8e4, 0xb8e5, 0xb8e6, 0xb8e7, 0xb8e8,
+    0xb8e9, 0xb8ea, 0xb8eb, 0xb8ec, 0xb8ed, 0xb8ee, 0xb8ef, 0xb8f0,
+    0xb8f1, 0xb8f3, 0xb8f4, 0xb8f5, 0xb8f6, 0xb8f7, 0xb8f8, 0xb8f9,
+    0xb8fa, 0xb8fb, 0xb8fc, 0xb8fd, 0xb941, 0xb942, 0xb943, 0xb944,
+    0xb945, 0xb946, 0xb947, 0xb948, 0xb949, 0xb94a, 0xb94b, 0xb94c,
+    0xb94d, 0xb94e, 0xb94f, 0xb950, 0xb951, 0xb953, 0xb954, 0xb955,
+    0xb956, 0xb957, 0xb958, 0xb959, 0xb95a, 0xb95b, 0xb95c, 0xb95d,
+    0xb961, 0xb962, 0xb963, 0xb964, 0xb965, 0xb966, 0xb967, 0xb968,
+    0xb969, 0xb96a, 0xb96b, 0xb96c, 0xb96d, 0xb96e, 0xb96f, 0xb970,
+    0xb971, 0xb973, 0xb974, 0xb975, 0xb976, 0xb977, 0xb978, 0xb979,
+    0xb97a, 0xb97b, 0xb97c, 0xb97d, 0xb981, 0xb982, 0xb983, 0xb984,
+    0xb985, 0xb986, 0xb987, 0xb988, 0xb989, 0xb98a, 0xb98b, 0xb98c,
+    0xb98d, 0xb98e, 0xb98f, 0xb990, 0xb991, 0xb993, 0xb994, 0xb995,
+    0xb996, 0xb997, 0xb998, 0xb999, 0xb99a, 0xb99b, 0xb99c, 0xb99d,
+    0xb9a1, 0xb9a2, 0xb9a3, 0xb9a4, 0xb9a5, 0xb9a6, 0xb9a7, 0xb9a8,
+    0xb9a9, 0xb9aa, 0xb9ab, 0xb9ac, 0xb9ad, 0xb9ae, 0xb9af, 0xb9b0,
+    0xb9b1, 0xb9b3, 0xb9b4, 0xb9b5, 0xb9b6, 0xb9b7, 0xb9b8, 0xb9b9,
+    0xb9ba, 0xb9bb, 0xb9bc, 0xb9bd, 0xb9c1, 0xb9c2, 0xb9c3, 0xb9c4,
+    0xb9c5, 0xb9c6, 0xb9c7, 0xb9c8, 0xb9c9, 0xb9ca, 0xb9cb, 0xb9cc,
+    0xb9cd, 0xb9ce, 0xb9cf, 0xb9d0, 0xb9d1, 0xb9d3, 0xb9d4, 0xb9d5,
+    0xb9d6, 0xb9d7, 0xb9d8, 0xb9d9, 0xb9da, 0xb9db, 0xb9dc, 0xb9dd,
+    0xb9e1, 0xb9e2, 0xb9e3, 0xb9e4, 0xb9e5, 0xb9e6, 0xb9e7, 0xb9e8,
+    0xb9e9, 0xb9ea, 0xb9eb, 0xb9ec, 0xb9ed, 0xb9ee, 0xb9ef, 0xb9f0,
+    0xb9f1, 0xb9f3, 0xb9f4, 0xb9f5, 0xb9f6, 0xb9f7, 0xb9f8, 0xb9f9,
+    0xb9fa, 0xb9fb, 0xb9fc, 0xb9fd, 0xba41, 0xba42, 0xba43, 0xba44,
+    0xba45, 0xba46, 0xba47, 0xba48, 0xba49, 0xba4a, 0xba4b, 0xba4c,
+    0xba4d, 0xba4e, 0xba4f, 0xba50, 0xba51, 0xba53, 0xba54, 0xba55,
+    0xba56, 0xba57, 0xba58, 0xba59, 0xba5a, 0xba5b, 0xba5c, 0xba5d,
+    0xba61, 0xba62, 0xba63, 0xba64, 0xba65, 0xba66, 0xba67, 0xba68,
+    0xba69, 0xba6a, 0xba6b, 0xba6c, 0xba6d, 0xba6e, 0xba6f, 0xba70,
+    0xba71, 0xba73, 0xba74, 0xba75, 0xba76, 0xba77, 0xba78, 0xba79,
+    0xba7a, 0xba7b, 0xba7c, 0xba7d, 0xba81, 0xba82, 0xba83, 0xba84,
+    /* 0xc900 .. 0xc9ff */
+    0xba85, 0xba86, 0xba87, 0xba88, 0xba89, 0xba8a, 0xba8b, 0xba8c,
+    0xba8d, 0xba8e, 0xba8f, 0xba90, 0xba91, 0xba93, 0xba94, 0xba95,
+    0xba96, 0xba97, 0xba98, 0xba99, 0xba9a, 0xba9b, 0xba9c, 0xba9d,
+    0xbaa1, 0xbaa2, 0xbaa3, 0xbaa4, 0xbaa5, 0xbaa6, 0xbaa7, 0xbaa8,
+    0xbaa9, 0xbaaa, 0xbaab, 0xbaac, 0xbaad, 0xbaae, 0xbaaf, 0xbab0,
+    0xbab1, 0xbab3, 0xbab4, 0xbab5, 0xbab6, 0xbab7, 0xbab8, 0xbab9,
+    0xbaba, 0xbabb, 0xbabc, 0xbabd, 0xbac1, 0xbac2, 0xbac3, 0xbac4,
+    0xbac5, 0xbac6, 0xbac7, 0xbac8, 0xbac9, 0xbaca, 0xbacb, 0xbacc,
+    0xbacd, 0xbace, 0xbacf, 0xbad0, 0xbad1, 0xbad3, 0xbad4, 0xbad5,
+    0xbad6, 0xbad7, 0xbad8, 0xbad9, 0xbada, 0xbadb, 0xbadc, 0xbadd,
+    0xbae1, 0xbae2, 0xbae3, 0xbae4, 0xbae5, 0xbae6, 0xbae7, 0xbae8,
+    0xbae9, 0xbaea, 0xbaeb, 0xbaec, 0xbaed, 0xbaee, 0xbaef, 0xbaf0,
+    0xbaf1, 0xbaf3, 0xbaf4, 0xbaf5, 0xbaf6, 0xbaf7, 0xbaf8, 0xbaf9,
+    0xbafa, 0xbafb, 0xbafc, 0xbafd, 0xbb41, 0xbb42, 0xbb43, 0xbb44,
+    0xbb45, 0xbb46, 0xbb47, 0xbb48, 0xbb49, 0xbb4a, 0xbb4b, 0xbb4c,
+    0xbb4d, 0xbb4e, 0xbb4f, 0xbb50, 0xbb51, 0xbb53, 0xbb54, 0xbb55,
+    0xbb56, 0xbb57, 0xbb58, 0xbb59, 0xbb5a, 0xbb5b, 0xbb5c, 0xbb5d,
+    0xbb61, 0xbb62, 0xbb63, 0xbb64, 0xbb65, 0xbb66, 0xbb67, 0xbb68,
+    0xbb69, 0xbb6a, 0xbb6b, 0xbb6c, 0xbb6d, 0xbb6e, 0xbb6f, 0xbb70,
+    0xbb71, 0xbb73, 0xbb74, 0xbb75, 0xbb76, 0xbb77, 0xbb78, 0xbb79,
+    0xbb7a, 0xbb7b, 0xbb7c, 0xbb7d, 0xbb81, 0xbb82, 0xbb83, 0xbb84,
+    0xbb85, 0xbb86, 0xbb87, 0xbb88, 0xbb89, 0xbb8a, 0xbb8b, 0xbb8c,
+    0xbb8d, 0xbb8e, 0xbb8f, 0xbb90, 0xbb91, 0xbb93, 0xbb94, 0xbb95,
+    0xbb96, 0xbb97, 0xbb98, 0xbb99, 0xbb9a, 0xbb9b, 0xbb9c, 0xbb9d,
+    0xbba1, 0xbba2, 0xbba3, 0xbba4, 0xbba5, 0xbba6, 0xbba7, 0xbba8,
+    0xbba9, 0xbbaa, 0xbbab, 0xbbac, 0xbbad, 0xbbae, 0xbbaf, 0xbbb0,
+    0xbbb1, 0xbbb3, 0xbbb4, 0xbbb5, 0xbbb6, 0xbbb7, 0xbbb8, 0xbbb9,
+    0xbbba, 0xbbbb, 0xbbbc, 0xbbbd, 0xbc61, 0xbc62, 0xbc63, 0xbc64,
+    0xbc65, 0xbc66, 0xbc67, 0xbc68, 0xbc69, 0xbc6a, 0xbc6b, 0xbc6c,
+    0xbc6d, 0xbc6e, 0xbc6f, 0xbc70, 0xbc71, 0xbc73, 0xbc74, 0xbc75,
+    0xbc76, 0xbc77, 0xbc78, 0xbc79, 0xbc7a, 0xbc7b, 0xbc7c, 0xbc7d,
+    0xbc81, 0xbc82, 0xbc83, 0xbc84, 0xbc85, 0xbc86, 0xbc87, 0xbc88,
+    /* 0xca00 .. 0xcaff */
+    0xbc89, 0xbc8a, 0xbc8b, 0xbc8c, 0xbc8d, 0xbc8e, 0xbc8f, 0xbc90,
+    0xbc91, 0xbc93, 0xbc94, 0xbc95, 0xbc96, 0xbc97, 0xbc98, 0xbc99,
+    0xbc9a, 0xbc9b, 0xbc9c, 0xbc9d, 0xbca1, 0xbca2, 0xbca3, 0xbca4,
+    0xbca5, 0xbca6, 0xbca7, 0xbca8, 0xbca9, 0xbcaa, 0xbcab, 0xbcac,
+    0xbcad, 0xbcae, 0xbcaf, 0xbcb0, 0xbcb1, 0xbcb3, 0xbcb4, 0xbcb5,
+    0xbcb6, 0xbcb7, 0xbcb8, 0xbcb9, 0xbcba, 0xbcbb, 0xbcbc, 0xbcbd,
+    0xbcc1, 0xbcc2, 0xbcc3, 0xbcc4, 0xbcc5, 0xbcc6, 0xbcc7, 0xbcc8,
+    0xbcc9, 0xbcca, 0xbccb, 0xbccc, 0xbccd, 0xbcce, 0xbccf, 0xbcd0,
+    0xbcd1, 0xbcd3, 0xbcd4, 0xbcd5, 0xbcd6, 0xbcd7, 0xbcd8, 0xbcd9,
+    0xbcda, 0xbcdb, 0xbcdc, 0xbcdd, 0xbce1, 0xbce2, 0xbce3, 0xbce4,
+    0xbce5, 0xbce6, 0xbce7, 0xbce8, 0xbce9, 0xbcea, 0xbceb, 0xbcec,
+    0xbced, 0xbcee, 0xbcef, 0xbcf0, 0xbcf1, 0xbcf3, 0xbcf4, 0xbcf5,
+    0xbcf6, 0xbcf7, 0xbcf8, 0xbcf9, 0xbcfa, 0xbcfb, 0xbcfc, 0xbcfd,
+    0xbd41, 0xbd42, 0xbd43, 0xbd44, 0xbd45, 0xbd46, 0xbd47, 0xbd48,
+    0xbd49, 0xbd4a, 0xbd4b, 0xbd4c, 0xbd4d, 0xbd4e, 0xbd4f, 0xbd50,
+    0xbd51, 0xbd53, 0xbd54, 0xbd55, 0xbd56, 0xbd57, 0xbd58, 0xbd59,
+    0xbd5a, 0xbd5b, 0xbd5c, 0xbd5d, 0xbd61, 0xbd62, 0xbd63, 0xbd64,
+    0xbd65, 0xbd66, 0xbd67, 0xbd68, 0xbd69, 0xbd6a, 0xbd6b, 0xbd6c,
+    0xbd6d, 0xbd6e, 0xbd6f, 0xbd70, 0xbd71, 0xbd73, 0xbd74, 0xbd75,
+    0xbd76, 0xbd77, 0xbd78, 0xbd79, 0xbd7a, 0xbd7b, 0xbd7c, 0xbd7d,
+    0xbd81, 0xbd82, 0xbd83, 0xbd84, 0xbd85, 0xbd86, 0xbd87, 0xbd88,
+    0xbd89, 0xbd8a, 0xbd8b, 0xbd8c, 0xbd8d, 0xbd8e, 0xbd8f, 0xbd90,
+    0xbd91, 0xbd93, 0xbd94, 0xbd95, 0xbd96, 0xbd97, 0xbd98, 0xbd99,
+    0xbd9a, 0xbd9b, 0xbd9c, 0xbd9d, 0xbda1, 0xbda2, 0xbda3, 0xbda4,
+    0xbda5, 0xbda6, 0xbda7, 0xbda8, 0xbda9, 0xbdaa, 0xbdab, 0xbdac,
+    0xbdad, 0xbdae, 0xbdaf, 0xbdb0, 0xbdb1, 0xbdb3, 0xbdb4, 0xbdb5,
+    0xbdb6, 0xbdb7, 0xbdb8, 0xbdb9, 0xbdba, 0xbdbb, 0xbdbc, 0xbdbd,
+    0xbdc1, 0xbdc2, 0xbdc3, 0xbdc4, 0xbdc5, 0xbdc6, 0xbdc7, 0xbdc8,
+    0xbdc9, 0xbdca, 0xbdcb, 0xbdcc, 0xbdcd, 0xbdce, 0xbdcf, 0xbdd0,
+    0xbdd1, 0xbdd3, 0xbdd4, 0xbdd5, 0xbdd6, 0xbdd7, 0xbdd8, 0xbdd9,
+    0xbdda, 0xbddb, 0xbddc, 0xbddd, 0xbde1, 0xbde2, 0xbde3, 0xbde4,
+    0xbde5, 0xbde6, 0xbde7, 0xbde8, 0xbde9, 0xbdea, 0xbdeb, 0xbdec,
+    /* 0xcb00 .. 0xcbff */
+    0xbded, 0xbdee, 0xbdef, 0xbdf0, 0xbdf1, 0xbdf3, 0xbdf4, 0xbdf5,
+    0xbdf6, 0xbdf7, 0xbdf8, 0xbdf9, 0xbdfa, 0xbdfb, 0xbdfc, 0xbdfd,
+    0xbe41, 0xbe42, 0xbe43, 0xbe44, 0xbe45, 0xbe46, 0xbe47, 0xbe48,
+    0xbe49, 0xbe4a, 0xbe4b, 0xbe4c, 0xbe4d, 0xbe4e, 0xbe4f, 0xbe50,
+    0xbe51, 0xbe53, 0xbe54, 0xbe55, 0xbe56, 0xbe57, 0xbe58, 0xbe59,
+    0xbe5a, 0xbe5b, 0xbe5c, 0xbe5d, 0xbe61, 0xbe62, 0xbe63, 0xbe64,
+    0xbe65, 0xbe66, 0xbe67, 0xbe68, 0xbe69, 0xbe6a, 0xbe6b, 0xbe6c,
+    0xbe6d, 0xbe6e, 0xbe6f, 0xbe70, 0xbe71, 0xbe73, 0xbe74, 0xbe75,
+    0xbe76, 0xbe77, 0xbe78, 0xbe79, 0xbe7a, 0xbe7b, 0xbe7c, 0xbe7d,
+    0xbe81, 0xbe82, 0xbe83, 0xbe84, 0xbe85, 0xbe86, 0xbe87, 0xbe88,
+    0xbe89, 0xbe8a, 0xbe8b, 0xbe8c, 0xbe8d, 0xbe8e, 0xbe8f, 0xbe90,
+    0xbe91, 0xbe93, 0xbe94, 0xbe95, 0xbe96, 0xbe97, 0xbe98, 0xbe99,
+    0xbe9a, 0xbe9b, 0xbe9c, 0xbe9d, 0xbea1, 0xbea2, 0xbea3, 0xbea4,
+    0xbea5, 0xbea6, 0xbea7, 0xbea8, 0xbea9, 0xbeaa, 0xbeab, 0xbeac,
+    0xbead, 0xbeae, 0xbeaf, 0xbeb0, 0xbeb1, 0xbeb3, 0xbeb4, 0xbeb5,
+    0xbeb6, 0xbeb7, 0xbeb8, 0xbeb9, 0xbeba, 0xbebb, 0xbebc, 0xbebd,
+    0xbec1, 0xbec2, 0xbec3, 0xbec4, 0xbec5, 0xbec6, 0xbec7, 0xbec8,
+    0xbec9, 0xbeca, 0xbecb, 0xbecc, 0xbecd, 0xbece, 0xbecf, 0xbed0,
+    0xbed1, 0xbed3, 0xbed4, 0xbed5, 0xbed6, 0xbed7, 0xbed8, 0xbed9,
+    0xbeda, 0xbedb, 0xbedc, 0xbedd, 0xbee1, 0xbee2, 0xbee3, 0xbee4,
+    0xbee5, 0xbee6, 0xbee7, 0xbee8, 0xbee9, 0xbeea, 0xbeeb, 0xbeec,
+    0xbeed, 0xbeee, 0xbeef, 0xbef0, 0xbef1, 0xbef3, 0xbef4, 0xbef5,
+    0xbef6, 0xbef7, 0xbef8, 0xbef9, 0xbefa, 0xbefb, 0xbefc, 0xbefd,
+    0xbf41, 0xbf42, 0xbf43, 0xbf44, 0xbf45, 0xbf46, 0xbf47, 0xbf48,
+    0xbf49, 0xbf4a, 0xbf4b, 0xbf4c, 0xbf4d, 0xbf4e, 0xbf4f, 0xbf50,
+    0xbf51, 0xbf53, 0xbf54, 0xbf55, 0xbf56, 0xbf57, 0xbf58, 0xbf59,
+    0xbf5a, 0xbf5b, 0xbf5c, 0xbf5d, 0xbf61, 0xbf62, 0xbf63, 0xbf64,
+    0xbf65, 0xbf66, 0xbf67, 0xbf68, 0xbf69, 0xbf6a, 0xbf6b, 0xbf6c,
+    0xbf6d, 0xbf6e, 0xbf6f, 0xbf70, 0xbf71, 0xbf73, 0xbf74, 0xbf75,
+    0xbf76, 0xbf77, 0xbf78, 0xbf79, 0xbf7a, 0xbf7b, 0xbf7c, 0xbf7d,
+    0xbf81, 0xbf82, 0xbf83, 0xbf84, 0xbf85, 0xbf86, 0xbf87, 0xbf88,
+    0xbf89, 0xbf8a, 0xbf8b, 0xbf8c, 0xbf8d, 0xbf8e, 0xbf8f, 0xbf90,
+    /* 0xcc00 .. 0xccff */
+    0xbf91, 0xbf93, 0xbf94, 0xbf95, 0xbf96, 0xbf97, 0xbf98, 0xbf99,
+    0xbf9a, 0xbf9b, 0xbf9c, 0xbf9d, 0xbfa1, 0xbfa2, 0xbfa3, 0xbfa4,
+    0xbfa5, 0xbfa6, 0xbfa7, 0xbfa8, 0xbfa9, 0xbfaa, 0xbfab, 0xbfac,
+    0xbfad, 0xbfae, 0xbfaf, 0xbfb0, 0xbfb1, 0xbfb3, 0xbfb4, 0xbfb5,
+    0xbfb6, 0xbfb7, 0xbfb8, 0xbfb9, 0xbfba, 0xbfbb, 0xbfbc, 0xbfbd,
+    0xc061, 0xc062, 0xc063, 0xc064, 0xc065, 0xc066, 0xc067, 0xc068,
+    0xc069, 0xc06a, 0xc06b, 0xc06c, 0xc06d, 0xc06e, 0xc06f, 0xc070,
+    0xc071, 0xc073, 0xc074, 0xc075, 0xc076, 0xc077, 0xc078, 0xc079,
+    0xc07a, 0xc07b, 0xc07c, 0xc07d, 0xc081, 0xc082, 0xc083, 0xc084,
+    0xc085, 0xc086, 0xc087, 0xc088, 0xc089, 0xc08a, 0xc08b, 0xc08c,
+    0xc08d, 0xc08e, 0xc08f, 0xc090, 0xc091, 0xc093, 0xc094, 0xc095,
+    0xc096, 0xc097, 0xc098, 0xc099, 0xc09a, 0xc09b, 0xc09c, 0xc09d,
+    0xc0a1, 0xc0a2, 0xc0a3, 0xc0a4, 0xc0a5, 0xc0a6, 0xc0a7, 0xc0a8,
+    0xc0a9, 0xc0aa, 0xc0ab, 0xc0ac, 0xc0ad, 0xc0ae, 0xc0af, 0xc0b0,
+    0xc0b1, 0xc0b3, 0xc0b4, 0xc0b5, 0xc0b6, 0xc0b7, 0xc0b8, 0xc0b9,
+    0xc0ba, 0xc0bb, 0xc0bc, 0xc0bd, 0xc0c1, 0xc0c2, 0xc0c3, 0xc0c4,
+    0xc0c5, 0xc0c6, 0xc0c7, 0xc0c8, 0xc0c9, 0xc0ca, 0xc0cb, 0xc0cc,
+    0xc0cd, 0xc0ce, 0xc0cf, 0xc0d0, 0xc0d1, 0xc0d3, 0xc0d4, 0xc0d5,
+    0xc0d6, 0xc0d7, 0xc0d8, 0xc0d9, 0xc0da, 0xc0db, 0xc0dc, 0xc0dd,
+    0xc0e1, 0xc0e2, 0xc0e3, 0xc0e4, 0xc0e5, 0xc0e6, 0xc0e7, 0xc0e8,
+    0xc0e9, 0xc0ea, 0xc0eb, 0xc0ec, 0xc0ed, 0xc0ee, 0xc0ef, 0xc0f0,
+    0xc0f1, 0xc0f3, 0xc0f4, 0xc0f5, 0xc0f6, 0xc0f7, 0xc0f8, 0xc0f9,
+    0xc0fa, 0xc0fb, 0xc0fc, 0xc0fd, 0xc141, 0xc142, 0xc143, 0xc144,
+    0xc145, 0xc146, 0xc147, 0xc148, 0xc149, 0xc14a, 0xc14b, 0xc14c,
+    0xc14d, 0xc14e, 0xc14f, 0xc150, 0xc151, 0xc153, 0xc154, 0xc155,
+    0xc156, 0xc157, 0xc158, 0xc159, 0xc15a, 0xc15b, 0xc15c, 0xc15d,
+    0xc161, 0xc162, 0xc163, 0xc164, 0xc165, 0xc166, 0xc167, 0xc168,
+    0xc169, 0xc16a, 0xc16b, 0xc16c, 0xc16d, 0xc16e, 0xc16f, 0xc170,
+    0xc171, 0xc173, 0xc174, 0xc175, 0xc176, 0xc177, 0xc178, 0xc179,
+    0xc17a, 0xc17b, 0xc17c, 0xc17d, 0xc181, 0xc182, 0xc183, 0xc184,
+    0xc185, 0xc186, 0xc187, 0xc188, 0xc189, 0xc18a, 0xc18b, 0xc18c,
+    0xc18d, 0xc18e, 0xc18f, 0xc190, 0xc191, 0xc193, 0xc194, 0xc195,
+    /* 0xcd00 .. 0xcdff */
+    0xc196, 0xc197, 0xc198, 0xc199, 0xc19a, 0xc19b, 0xc19c, 0xc19d,
+    0xc1a1, 0xc1a2, 0xc1a3, 0xc1a4, 0xc1a5, 0xc1a6, 0xc1a7, 0xc1a8,
+    0xc1a9, 0xc1aa, 0xc1ab, 0xc1ac, 0xc1ad, 0xc1ae, 0xc1af, 0xc1b0,
+    0xc1b1, 0xc1b3, 0xc1b4, 0xc1b5, 0xc1b6, 0xc1b7, 0xc1b8, 0xc1b9,
+    0xc1ba, 0xc1bb, 0xc1bc, 0xc1bd, 0xc1c1, 0xc1c2, 0xc1c3, 0xc1c4,
+    0xc1c5, 0xc1c6, 0xc1c7, 0xc1c8, 0xc1c9, 0xc1ca, 0xc1cb, 0xc1cc,
+    0xc1cd, 0xc1ce, 0xc1cf, 0xc1d0, 0xc1d1, 0xc1d3, 0xc1d4, 0xc1d5,
+    0xc1d6, 0xc1d7, 0xc1d8, 0xc1d9, 0xc1da, 0xc1db, 0xc1dc, 0xc1dd,
+    0xc1e1, 0xc1e2, 0xc1e3, 0xc1e4, 0xc1e5, 0xc1e6, 0xc1e7, 0xc1e8,
+    0xc1e9, 0xc1ea, 0xc1eb, 0xc1ec, 0xc1ed, 0xc1ee, 0xc1ef, 0xc1f0,
+    0xc1f1, 0xc1f3, 0xc1f4, 0xc1f5, 0xc1f6, 0xc1f7, 0xc1f8, 0xc1f9,
+    0xc1fa, 0xc1fb, 0xc1fc, 0xc1fd, 0xc241, 0xc242, 0xc243, 0xc244,
+    0xc245, 0xc246, 0xc247, 0xc248, 0xc249, 0xc24a, 0xc24b, 0xc24c,
+    0xc24d, 0xc24e, 0xc24f, 0xc250, 0xc251, 0xc253, 0xc254, 0xc255,
+    0xc256, 0xc257, 0xc258, 0xc259, 0xc25a, 0xc25b, 0xc25c, 0xc25d,
+    0xc261, 0xc262, 0xc263, 0xc264, 0xc265, 0xc266, 0xc267, 0xc268,
+    0xc269, 0xc26a, 0xc26b, 0xc26c, 0xc26d, 0xc26e, 0xc26f, 0xc270,
+    0xc271, 0xc273, 0xc274, 0xc275, 0xc276, 0xc277, 0xc278, 0xc279,
+    0xc27a, 0xc27b, 0xc27c, 0xc27d, 0xc281, 0xc282, 0xc283, 0xc284,
+    0xc285, 0xc286, 0xc287, 0xc288, 0xc289, 0xc28a, 0xc28b, 0xc28c,
+    0xc28d, 0xc28e, 0xc28f, 0xc290, 0xc291, 0xc293, 0xc294, 0xc295,
+    0xc296, 0xc297, 0xc298, 0xc299, 0xc29a, 0xc29b, 0xc29c, 0xc29d,
+    0xc2a1, 0xc2a2, 0xc2a3, 0xc2a4, 0xc2a5, 0xc2a6, 0xc2a7, 0xc2a8,
+    0xc2a9, 0xc2aa, 0xc2ab, 0xc2ac, 0xc2ad, 0xc2ae, 0xc2af, 0xc2b0,
+    0xc2b1, 0xc2b3, 0xc2b4, 0xc2b5, 0xc2b6, 0xc2b7, 0xc2b8, 0xc2b9,
+    0xc2ba, 0xc2bb, 0xc2bc, 0xc2bd, 0xc2c1, 0xc2c2, 0xc2c3, 0xc2c4,
+    0xc2c5, 0xc2c6, 0xc2c7, 0xc2c8, 0xc2c9, 0xc2ca, 0xc2cb, 0xc2cc,
+    0xc2cd, 0xc2ce, 0xc2cf, 0xc2d0, 0xc2d1, 0xc2d3, 0xc2d4, 0xc2d5,
+    0xc2d6, 0xc2d7, 0xc2d8, 0xc2d9, 0xc2da, 0xc2db, 0xc2dc, 0xc2dd,
+    0xc2e1, 0xc2e2, 0xc2e3, 0xc2e4, 0xc2e5, 0xc2e6, 0xc2e7, 0xc2e8,
+    0xc2e9, 0xc2ea, 0xc2eb, 0xc2ec, 0xc2ed, 0xc2ee, 0xc2ef, 0xc2f0,
+    0xc2f1, 0xc2f3, 0xc2f4, 0xc2f5, 0xc2f6, 0xc2f7, 0xc2f8, 0xc2f9,
+    /* 0xce00 .. 0xceff */
+    0xc2fa, 0xc2fb, 0xc2fc, 0xc2fd, 0xc341, 0xc342, 0xc343, 0xc344,
+    0xc345, 0xc346, 0xc347, 0xc348, 0xc349, 0xc34a, 0xc34b, 0xc34c,
+    0xc34d, 0xc34e, 0xc34f, 0xc350, 0xc351, 0xc353, 0xc354, 0xc355,
+    0xc356, 0xc357, 0xc358, 0xc359, 0xc35a, 0xc35b, 0xc35c, 0xc35d,
+    0xc361, 0xc362, 0xc363, 0xc364, 0xc365, 0xc366, 0xc367, 0xc368,
+    0xc369, 0xc36a, 0xc36b, 0xc36c, 0xc36d, 0xc36e, 0xc36f, 0xc370,
+    0xc371, 0xc373, 0xc374, 0xc375, 0xc376, 0xc377, 0xc378, 0xc379,
+    0xc37a, 0xc37b, 0xc37c, 0xc37d, 0xc381, 0xc382, 0xc383, 0xc384,
+    0xc385, 0xc386, 0xc387, 0xc388, 0xc389, 0xc38a, 0xc38b, 0xc38c,
+    0xc38d, 0xc38e, 0xc38f, 0xc390, 0xc391, 0xc393, 0xc394, 0xc395,
+    0xc396, 0xc397, 0xc398, 0xc399, 0xc39a, 0xc39b, 0xc39c, 0xc39d,
+    0xc3a1, 0xc3a2, 0xc3a3, 0xc3a4, 0xc3a5, 0xc3a6, 0xc3a7, 0xc3a8,
+    0xc3a9, 0xc3aa, 0xc3ab, 0xc3ac, 0xc3ad, 0xc3ae, 0xc3af, 0xc3b0,
+    0xc3b1, 0xc3b3, 0xc3b4, 0xc3b5, 0xc3b6, 0xc3b7, 0xc3b8, 0xc3b9,
+    0xc3ba, 0xc3bb, 0xc3bc, 0xc3bd, 0xc461, 0xc462, 0xc463, 0xc464,
+    0xc465, 0xc466, 0xc467, 0xc468, 0xc469, 0xc46a, 0xc46b, 0xc46c,
+    0xc46d, 0xc46e, 0xc46f, 0xc470, 0xc471, 0xc473, 0xc474, 0xc475,
+    0xc476, 0xc477, 0xc478, 0xc479, 0xc47a, 0xc47b, 0xc47c, 0xc47d,
+    0xc481, 0xc482, 0xc483, 0xc484, 0xc485, 0xc486, 0xc487, 0xc488,
+    0xc489, 0xc48a, 0xc48b, 0xc48c, 0xc48d, 0xc48e, 0xc48f, 0xc490,
+    0xc491, 0xc493, 0xc494, 0xc495, 0xc496, 0xc497, 0xc498, 0xc499,
+    0xc49a, 0xc49b, 0xc49c, 0xc49d, 0xc4a1, 0xc4a2, 0xc4a3, 0xc4a4,
+    0xc4a5, 0xc4a6, 0xc4a7, 0xc4a8, 0xc4a9, 0xc4aa, 0xc4ab, 0xc4ac,
+    0xc4ad, 0xc4ae, 0xc4af, 0xc4b0, 0xc4b1, 0xc4b3, 0xc4b4, 0xc4b5,
+    0xc4b6, 0xc4b7, 0xc4b8, 0xc4b9, 0xc4ba, 0xc4bb, 0xc4bc, 0xc4bd,
+    0xc4c1, 0xc4c2, 0xc4c3, 0xc4c4, 0xc4c5, 0xc4c6, 0xc4c7, 0xc4c8,
+    0xc4c9, 0xc4ca, 0xc4cb, 0xc4cc, 0xc4cd, 0xc4ce, 0xc4cf, 0xc4d0,
+    0xc4d1, 0xc4d3, 0xc4d4, 0xc4d5, 0xc4d6, 0xc4d7, 0xc4d8, 0xc4d9,
+    0xc4da, 0xc4db, 0xc4dc, 0xc4dd, 0xc4e1, 0xc4e2, 0xc4e3, 0xc4e4,
+    0xc4e5, 0xc4e6, 0xc4e7, 0xc4e8, 0xc4e9, 0xc4ea, 0xc4eb, 0xc4ec,
+    0xc4ed, 0xc4ee, 0xc4ef, 0xc4f0, 0xc4f1, 0xc4f3, 0xc4f4, 0xc4f5,
+    0xc4f6, 0xc4f7, 0xc4f8, 0xc4f9, 0xc4fa, 0xc4fb, 0xc4fc, 0xc4fd,
+    /* 0xcf00 .. 0xcfff */
+    0xc541, 0xc542, 0xc543, 0xc544, 0xc545, 0xc546, 0xc547, 0xc548,
+    0xc549, 0xc54a, 0xc54b, 0xc54c, 0xc54d, 0xc54e, 0xc54f, 0xc550,
+    0xc551, 0xc553, 0xc554, 0xc555, 0xc556, 0xc557, 0xc558, 0xc559,
+    0xc55a, 0xc55b, 0xc55c, 0xc55d, 0xc561, 0xc562, 0xc563, 0xc564,
+    0xc565, 0xc566, 0xc567, 0xc568, 0xc569, 0xc56a, 0xc56b, 0xc56c,
+    0xc56d, 0xc56e, 0xc56f, 0xc570, 0xc571, 0xc573, 0xc574, 0xc575,
+    0xc576, 0xc577, 0xc578, 0xc579, 0xc57a, 0xc57b, 0xc57c, 0xc57d,
+    0xc581, 0xc582, 0xc583, 0xc584, 0xc585, 0xc586, 0xc587, 0xc588,
+    0xc589, 0xc58a, 0xc58b, 0xc58c, 0xc58d, 0xc58e, 0xc58f, 0xc590,
+    0xc591, 0xc593, 0xc594, 0xc595, 0xc596, 0xc597, 0xc598, 0xc599,
+    0xc59a, 0xc59b, 0xc59c, 0xc59d, 0xc5a1, 0xc5a2, 0xc5a3, 0xc5a4,
+    0xc5a5, 0xc5a6, 0xc5a7, 0xc5a8, 0xc5a9, 0xc5aa, 0xc5ab, 0xc5ac,
+    0xc5ad, 0xc5ae, 0xc5af, 0xc5b0, 0xc5b1, 0xc5b3, 0xc5b4, 0xc5b5,
+    0xc5b6, 0xc5b7, 0xc5b8, 0xc5b9, 0xc5ba, 0xc5bb, 0xc5bc, 0xc5bd,
+    0xc5c1, 0xc5c2, 0xc5c3, 0xc5c4, 0xc5c5, 0xc5c6, 0xc5c7, 0xc5c8,
+    0xc5c9, 0xc5ca, 0xc5cb, 0xc5cc, 0xc5cd, 0xc5ce, 0xc5cf, 0xc5d0,
+    0xc5d1, 0xc5d3, 0xc5d4, 0xc5d5, 0xc5d6, 0xc5d7, 0xc5d8, 0xc5d9,
+    0xc5da, 0xc5db, 0xc5dc, 0xc5dd, 0xc5e1, 0xc5e2, 0xc5e3, 0xc5e4,
+    0xc5e5, 0xc5e6, 0xc5e7, 0xc5e8, 0xc5e9, 0xc5ea, 0xc5eb, 0xc5ec,
+    0xc5ed, 0xc5ee, 0xc5ef, 0xc5f0, 0xc5f1, 0xc5f3, 0xc5f4, 0xc5f5,
+    0xc5f6, 0xc5f7, 0xc5f8, 0xc5f9, 0xc5fa, 0xc5fb, 0xc5fc, 0xc5fd,
+    0xc641, 0xc642, 0xc643, 0xc644, 0xc645, 0xc646, 0xc647, 0xc648,
+    0xc649, 0xc64a, 0xc64b, 0xc64c, 0xc64d, 0xc64e, 0xc64f, 0xc650,
+    0xc651, 0xc653, 0xc654, 0xc655, 0xc656, 0xc657, 0xc658, 0xc659,
+    0xc65a, 0xc65b, 0xc65c, 0xc65d, 0xc661, 0xc662, 0xc663, 0xc664,
+    0xc665, 0xc666, 0xc667, 0xc668, 0xc669, 0xc66a, 0xc66b, 0xc66c,
+    0xc66d, 0xc66e, 0xc66f, 0xc670, 0xc671, 0xc673, 0xc674, 0xc675,
+    0xc676, 0xc677, 0xc678, 0xc679, 0xc67a, 0xc67b, 0xc67c, 0xc67d,
+    0xc681, 0xc682, 0xc683, 0xc684, 0xc685, 0xc686, 0xc687, 0xc688,
+    0xc689, 0xc68a, 0xc68b, 0xc68c, 0xc68d, 0xc68e, 0xc68f, 0xc690,
+    0xc691, 0xc693, 0xc694, 0xc695, 0xc696, 0xc697, 0xc698, 0xc699,
+    0xc69a, 0xc69b, 0xc69c, 0xc69d, 0xc6a1, 0xc6a2, 0xc6a3, 0xc6a4,
+    /* 0xd000 .. 0xd0ff */
+    0xc6a5, 0xc6a6, 0xc6a7, 0xc6a8, 0xc6a9, 0xc6aa, 0xc6ab, 0xc6ac,
+    0xc6ad, 0xc6ae, 0xc6af, 0xc6b0, 0xc6b1, 0xc6b3, 0xc6b4, 0xc6b5,
+    0xc6b6, 0xc6b7, 0xc6b8, 0xc6b9, 0xc6ba, 0xc6bb, 0xc6bc, 0xc6bd,
+    0xc6c1, 0xc6c2, 0xc6c3, 0xc6c4, 0xc6c5, 0xc6c6, 0xc6c7, 0xc6c8,
+    0xc6c9, 0xc6ca, 0xc6cb, 0xc6cc, 0xc6cd, 0xc6ce, 0xc6cf, 0xc6d0,
+    0xc6d1, 0xc6d3, 0xc6d4, 0xc6d5, 0xc6d6, 0xc6d7, 0xc6d8, 0xc6d9,
+    0xc6da, 0xc6db, 0xc6dc, 0xc6dd, 0xc6e1, 0xc6e2, 0xc6e3, 0xc6e4,
+    0xc6e5, 0xc6e6, 0xc6e7, 0xc6e8, 0xc6e9, 0xc6ea, 0xc6eb, 0xc6ec,
+    0xc6ed, 0xc6ee, 0xc6ef, 0xc6f0, 0xc6f1, 0xc6f3, 0xc6f4, 0xc6f5,
+    0xc6f6, 0xc6f7, 0xc6f8, 0xc6f9, 0xc6fa, 0xc6fb, 0xc6fc, 0xc6fd,
+    0xc741, 0xc742, 0xc743, 0xc744, 0xc745, 0xc746, 0xc747, 0xc748,
+    0xc749, 0xc74a, 0xc74b, 0xc74c, 0xc74d, 0xc74e, 0xc74f, 0xc750,
+    0xc751, 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, 0xc758, 0xc759,
+    0xc75a, 0xc75b, 0xc75c, 0xc75d, 0xc761, 0xc762, 0xc763, 0xc764,
+    0xc765, 0xc766, 0xc767, 0xc768, 0xc769, 0xc76a, 0xc76b, 0xc76c,
+    0xc76d, 0xc76e, 0xc76f, 0xc770, 0xc771, 0xc773, 0xc774, 0xc775,
+    0xc776, 0xc777, 0xc778, 0xc779, 0xc77a, 0xc77b, 0xc77c, 0xc77d,
+    0xc781, 0xc782, 0xc783, 0xc784, 0xc785, 0xc786, 0xc787, 0xc788,
+    0xc789, 0xc78a, 0xc78b, 0xc78c, 0xc78d, 0xc78e, 0xc78f, 0xc790,
+    0xc791, 0xc793, 0xc794, 0xc795, 0xc796, 0xc797, 0xc798, 0xc799,
+    0xc79a, 0xc79b, 0xc79c, 0xc79d, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4,
+    0xc7a5, 0xc7a6, 0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xc7ac,
+    0xc7ad, 0xc7ae, 0xc7af, 0xc7b0, 0xc7b1, 0xc7b3, 0xc7b4, 0xc7b5,
+    0xc7b6, 0xc7b7, 0xc7b8, 0xc7b9, 0xc7ba, 0xc7bb, 0xc7bc, 0xc7bd,
+    0xc861, 0xc862, 0xc863, 0xc864, 0xc865, 0xc866, 0xc867, 0xc868,
+    0xc869, 0xc86a, 0xc86b, 0xc86c, 0xc86d, 0xc86e, 0xc86f, 0xc870,
+    0xc871, 0xc873, 0xc874, 0xc875, 0xc876, 0xc877, 0xc878, 0xc879,
+    0xc87a, 0xc87b, 0xc87c, 0xc87d, 0xc881, 0xc882, 0xc883, 0xc884,
+    0xc885, 0xc886, 0xc887, 0xc888, 0xc889, 0xc88a, 0xc88b, 0xc88c,
+    0xc88d, 0xc88e, 0xc88f, 0xc890, 0xc891, 0xc893, 0xc894, 0xc895,
+    0xc896, 0xc897, 0xc898, 0xc899, 0xc89a, 0xc89b, 0xc89c, 0xc89d,
+    0xc8a1, 0xc8a2, 0xc8a3, 0xc8a4, 0xc8a5, 0xc8a6, 0xc8a7, 0xc8a8,
+    /* 0xd100 .. 0xd1ff */
+    0xc8a9, 0xc8aa, 0xc8ab, 0xc8ac, 0xc8ad, 0xc8ae, 0xc8af, 0xc8b0,
+    0xc8b1, 0xc8b3, 0xc8b4, 0xc8b5, 0xc8b6, 0xc8b7, 0xc8b8, 0xc8b9,
+    0xc8ba, 0xc8bb, 0xc8bc, 0xc8bd, 0xc8c1, 0xc8c2, 0xc8c3, 0xc8c4,
+    0xc8c5, 0xc8c6, 0xc8c7, 0xc8c8, 0xc8c9, 0xc8ca, 0xc8cb, 0xc8cc,
+    0xc8cd, 0xc8ce, 0xc8cf, 0xc8d0, 0xc8d1, 0xc8d3, 0xc8d4, 0xc8d5,
+    0xc8d6, 0xc8d7, 0xc8d8, 0xc8d9, 0xc8da, 0xc8db, 0xc8dc, 0xc8dd,
+    0xc8e1, 0xc8e2, 0xc8e3, 0xc8e4, 0xc8e5, 0xc8e6, 0xc8e7, 0xc8e8,
+    0xc8e9, 0xc8ea, 0xc8eb, 0xc8ec, 0xc8ed, 0xc8ee, 0xc8ef, 0xc8f0,
+    0xc8f1, 0xc8f3, 0xc8f4, 0xc8f5, 0xc8f6, 0xc8f7, 0xc8f8, 0xc8f9,
+    0xc8fa, 0xc8fb, 0xc8fc, 0xc8fd, 0xc941, 0xc942, 0xc943, 0xc944,
+    0xc945, 0xc946, 0xc947, 0xc948, 0xc949, 0xc94a, 0xc94b, 0xc94c,
+    0xc94d, 0xc94e, 0xc94f, 0xc950, 0xc951, 0xc953, 0xc954, 0xc955,
+    0xc956, 0xc957, 0xc958, 0xc959, 0xc95a, 0xc95b, 0xc95c, 0xc95d,
+    0xc961, 0xc962, 0xc963, 0xc964, 0xc965, 0xc966, 0xc967, 0xc968,
+    0xc969, 0xc96a, 0xc96b, 0xc96c, 0xc96d, 0xc96e, 0xc96f, 0xc970,
+    0xc971, 0xc973, 0xc974, 0xc975, 0xc976, 0xc977, 0xc978, 0xc979,
+    0xc97a, 0xc97b, 0xc97c, 0xc97d, 0xc981, 0xc982, 0xc983, 0xc984,
+    0xc985, 0xc986, 0xc987, 0xc988, 0xc989, 0xc98a, 0xc98b, 0xc98c,
+    0xc98d, 0xc98e, 0xc98f, 0xc990, 0xc991, 0xc993, 0xc994, 0xc995,
+    0xc996, 0xc997, 0xc998, 0xc999, 0xc99a, 0xc99b, 0xc99c, 0xc99d,
+    0xc9a1, 0xc9a2, 0xc9a3, 0xc9a4, 0xc9a5, 0xc9a6, 0xc9a7, 0xc9a8,
+    0xc9a9, 0xc9aa, 0xc9ab, 0xc9ac, 0xc9ad, 0xc9ae, 0xc9af, 0xc9b0,
+    0xc9b1, 0xc9b3, 0xc9b4, 0xc9b5, 0xc9b6, 0xc9b7, 0xc9b8, 0xc9b9,
+    0xc9ba, 0xc9bb, 0xc9bc, 0xc9bd, 0xc9c1, 0xc9c2, 0xc9c3, 0xc9c4,
+    0xc9c5, 0xc9c6, 0xc9c7, 0xc9c8, 0xc9c9, 0xc9ca, 0xc9cb, 0xc9cc,
+    0xc9cd, 0xc9ce, 0xc9cf, 0xc9d0, 0xc9d1, 0xc9d3, 0xc9d4, 0xc9d5,
+    0xc9d6, 0xc9d7, 0xc9d8, 0xc9d9, 0xc9da, 0xc9db, 0xc9dc, 0xc9dd,
+    0xc9e1, 0xc9e2, 0xc9e3, 0xc9e4, 0xc9e5, 0xc9e6, 0xc9e7, 0xc9e8,
+    0xc9e9, 0xc9ea, 0xc9eb, 0xc9ec, 0xc9ed, 0xc9ee, 0xc9ef, 0xc9f0,
+    0xc9f1, 0xc9f3, 0xc9f4, 0xc9f5, 0xc9f6, 0xc9f7, 0xc9f8, 0xc9f9,
+    0xc9fa, 0xc9fb, 0xc9fc, 0xc9fd, 0xca41, 0xca42, 0xca43, 0xca44,
+    0xca45, 0xca46, 0xca47, 0xca48, 0xca49, 0xca4a, 0xca4b, 0xca4c,
+    /* 0xd200 .. 0xd2ff */
+    0xca4d, 0xca4e, 0xca4f, 0xca50, 0xca51, 0xca53, 0xca54, 0xca55,
+    0xca56, 0xca57, 0xca58, 0xca59, 0xca5a, 0xca5b, 0xca5c, 0xca5d,
+    0xca61, 0xca62, 0xca63, 0xca64, 0xca65, 0xca66, 0xca67, 0xca68,
+    0xca69, 0xca6a, 0xca6b, 0xca6c, 0xca6d, 0xca6e, 0xca6f, 0xca70,
+    0xca71, 0xca73, 0xca74, 0xca75, 0xca76, 0xca77, 0xca78, 0xca79,
+    0xca7a, 0xca7b, 0xca7c, 0xca7d, 0xca81, 0xca82, 0xca83, 0xca84,
+    0xca85, 0xca86, 0xca87, 0xca88, 0xca89, 0xca8a, 0xca8b, 0xca8c,
+    0xca8d, 0xca8e, 0xca8f, 0xca90, 0xca91, 0xca93, 0xca94, 0xca95,
+    0xca96, 0xca97, 0xca98, 0xca99, 0xca9a, 0xca9b, 0xca9c, 0xca9d,
+    0xcaa1, 0xcaa2, 0xcaa3, 0xcaa4, 0xcaa5, 0xcaa6, 0xcaa7, 0xcaa8,
+    0xcaa9, 0xcaaa, 0xcaab, 0xcaac, 0xcaad, 0xcaae, 0xcaaf, 0xcab0,
+    0xcab1, 0xcab3, 0xcab4, 0xcab5, 0xcab6, 0xcab7, 0xcab8, 0xcab9,
+    0xcaba, 0xcabb, 0xcabc, 0xcabd, 0xcac1, 0xcac2, 0xcac3, 0xcac4,
+    0xcac5, 0xcac6, 0xcac7, 0xcac8, 0xcac9, 0xcaca, 0xcacb, 0xcacc,
+    0xcacd, 0xcace, 0xcacf, 0xcad0, 0xcad1, 0xcad3, 0xcad4, 0xcad5,
+    0xcad6, 0xcad7, 0xcad8, 0xcad9, 0xcada, 0xcadb, 0xcadc, 0xcadd,
+    0xcae1, 0xcae2, 0xcae3, 0xcae4, 0xcae5, 0xcae6, 0xcae7, 0xcae8,
+    0xcae9, 0xcaea, 0xcaeb, 0xcaec, 0xcaed, 0xcaee, 0xcaef, 0xcaf0,
+    0xcaf1, 0xcaf3, 0xcaf4, 0xcaf5, 0xcaf6, 0xcaf7, 0xcaf8, 0xcaf9,
+    0xcafa, 0xcafb, 0xcafc, 0xcafd, 0xcb41, 0xcb42, 0xcb43, 0xcb44,
+    0xcb45, 0xcb46, 0xcb47, 0xcb48, 0xcb49, 0xcb4a, 0xcb4b, 0xcb4c,
+    0xcb4d, 0xcb4e, 0xcb4f, 0xcb50, 0xcb51, 0xcb53, 0xcb54, 0xcb55,
+    0xcb56, 0xcb57, 0xcb58, 0xcb59, 0xcb5a, 0xcb5b, 0xcb5c, 0xcb5d,
+    0xcb61, 0xcb62, 0xcb63, 0xcb64, 0xcb65, 0xcb66, 0xcb67, 0xcb68,
+    0xcb69, 0xcb6a, 0xcb6b, 0xcb6c, 0xcb6d, 0xcb6e, 0xcb6f, 0xcb70,
+    0xcb71, 0xcb73, 0xcb74, 0xcb75, 0xcb76, 0xcb77, 0xcb78, 0xcb79,
+    0xcb7a, 0xcb7b, 0xcb7c, 0xcb7d, 0xcb81, 0xcb82, 0xcb83, 0xcb84,
+    0xcb85, 0xcb86, 0xcb87, 0xcb88, 0xcb89, 0xcb8a, 0xcb8b, 0xcb8c,
+    0xcb8d, 0xcb8e, 0xcb8f, 0xcb90, 0xcb91, 0xcb93, 0xcb94, 0xcb95,
+    0xcb96, 0xcb97, 0xcb98, 0xcb99, 0xcb9a, 0xcb9b, 0xcb9c, 0xcb9d,
+    0xcba1, 0xcba2, 0xcba3, 0xcba4, 0xcba5, 0xcba6, 0xcba7, 0xcba8,
+    0xcba9, 0xcbaa, 0xcbab, 0xcbac, 0xcbad, 0xcbae, 0xcbaf, 0xcbb0,
+    /* 0xd300 .. 0xd3ff */
+    0xcbb1, 0xcbb3, 0xcbb4, 0xcbb5, 0xcbb6, 0xcbb7, 0xcbb8, 0xcbb9,
+    0xcbba, 0xcbbb, 0xcbbc, 0xcbbd, 0xcc61, 0xcc62, 0xcc63, 0xcc64,
+    0xcc65, 0xcc66, 0xcc67, 0xcc68, 0xcc69, 0xcc6a, 0xcc6b, 0xcc6c,
+    0xcc6d, 0xcc6e, 0xcc6f, 0xcc70, 0xcc71, 0xcc73, 0xcc74, 0xcc75,
+    0xcc76, 0xcc77, 0xcc78, 0xcc79, 0xcc7a, 0xcc7b, 0xcc7c, 0xcc7d,
+    0xcc81, 0xcc82, 0xcc83, 0xcc84, 0xcc85, 0xcc86, 0xcc87, 0xcc88,
+    0xcc89, 0xcc8a, 0xcc8b, 0xcc8c, 0xcc8d, 0xcc8e, 0xcc8f, 0xcc90,
+    0xcc91, 0xcc93, 0xcc94, 0xcc95, 0xcc96, 0xcc97, 0xcc98, 0xcc99,
+    0xcc9a, 0xcc9b, 0xcc9c, 0xcc9d, 0xcca1, 0xcca2, 0xcca3, 0xcca4,
+    0xcca5, 0xcca6, 0xcca7, 0xcca8, 0xcca9, 0xccaa, 0xccab, 0xccac,
+    0xccad, 0xccae, 0xccaf, 0xccb0, 0xccb1, 0xccb3, 0xccb4, 0xccb5,
+    0xccb6, 0xccb7, 0xccb8, 0xccb9, 0xccba, 0xccbb, 0xccbc, 0xccbd,
+    0xccc1, 0xccc2, 0xccc3, 0xccc4, 0xccc5, 0xccc6, 0xccc7, 0xccc8,
+    0xccc9, 0xccca, 0xcccb, 0xcccc, 0xcccd, 0xccce, 0xcccf, 0xccd0,
+    0xccd1, 0xccd3, 0xccd4, 0xccd5, 0xccd6, 0xccd7, 0xccd8, 0xccd9,
+    0xccda, 0xccdb, 0xccdc, 0xccdd, 0xcce1, 0xcce2, 0xcce3, 0xcce4,
+    0xcce5, 0xcce6, 0xcce7, 0xcce8, 0xcce9, 0xccea, 0xcceb, 0xccec,
+    0xcced, 0xccee, 0xccef, 0xccf0, 0xccf1, 0xccf3, 0xccf4, 0xccf5,
+    0xccf6, 0xccf7, 0xccf8, 0xccf9, 0xccfa, 0xccfb, 0xccfc, 0xccfd,
+    0xcd41, 0xcd42, 0xcd43, 0xcd44, 0xcd45, 0xcd46, 0xcd47, 0xcd48,
+    0xcd49, 0xcd4a, 0xcd4b, 0xcd4c, 0xcd4d, 0xcd4e, 0xcd4f, 0xcd50,
+    0xcd51, 0xcd53, 0xcd54, 0xcd55, 0xcd56, 0xcd57, 0xcd58, 0xcd59,
+    0xcd5a, 0xcd5b, 0xcd5c, 0xcd5d, 0xcd61, 0xcd62, 0xcd63, 0xcd64,
+    0xcd65, 0xcd66, 0xcd67, 0xcd68, 0xcd69, 0xcd6a, 0xcd6b, 0xcd6c,
+    0xcd6d, 0xcd6e, 0xcd6f, 0xcd70, 0xcd71, 0xcd73, 0xcd74, 0xcd75,
+    0xcd76, 0xcd77, 0xcd78, 0xcd79, 0xcd7a, 0xcd7b, 0xcd7c, 0xcd7d,
+    0xcd81, 0xcd82, 0xcd83, 0xcd84, 0xcd85, 0xcd86, 0xcd87, 0xcd88,
+    0xcd89, 0xcd8a, 0xcd8b, 0xcd8c, 0xcd8d, 0xcd8e, 0xcd8f, 0xcd90,
+    0xcd91, 0xcd93, 0xcd94, 0xcd95, 0xcd96, 0xcd97, 0xcd98, 0xcd99,
+    0xcd9a, 0xcd9b, 0xcd9c, 0xcd9d, 0xcda1, 0xcda2, 0xcda3, 0xcda4,
+    0xcda5, 0xcda6, 0xcda7, 0xcda8, 0xcda9, 0xcdaa, 0xcdab, 0xcdac,
+    0xcdad, 0xcdae, 0xcdaf, 0xcdb0, 0xcdb1, 0xcdb3, 0xcdb4, 0xcdb5,
+    /* 0xd400 .. 0xd4ff */
+    0xcdb6, 0xcdb7, 0xcdb8, 0xcdb9, 0xcdba, 0xcdbb, 0xcdbc, 0xcdbd,
+    0xcdc1, 0xcdc2, 0xcdc3, 0xcdc4, 0xcdc5, 0xcdc6, 0xcdc7, 0xcdc8,
+    0xcdc9, 0xcdca, 0xcdcb, 0xcdcc, 0xcdcd, 0xcdce, 0xcdcf, 0xcdd0,
+    0xcdd1, 0xcdd3, 0xcdd4, 0xcdd5, 0xcdd6, 0xcdd7, 0xcdd8, 0xcdd9,
+    0xcdda, 0xcddb, 0xcddc, 0xcddd, 0xcde1, 0xcde2, 0xcde3, 0xcde4,
+    0xcde5, 0xcde6, 0xcde7, 0xcde8, 0xcde9, 0xcdea, 0xcdeb, 0xcdec,
+    0xcded, 0xcdee, 0xcdef, 0xcdf0, 0xcdf1, 0xcdf3, 0xcdf4, 0xcdf5,
+    0xcdf6, 0xcdf7, 0xcdf8, 0xcdf9, 0xcdfa, 0xcdfb, 0xcdfc, 0xcdfd,
+    0xce41, 0xce42, 0xce43, 0xce44, 0xce45, 0xce46, 0xce47, 0xce48,
+    0xce49, 0xce4a, 0xce4b, 0xce4c, 0xce4d, 0xce4e, 0xce4f, 0xce50,
+    0xce51, 0xce53, 0xce54, 0xce55, 0xce56, 0xce57, 0xce58, 0xce59,
+    0xce5a, 0xce5b, 0xce5c, 0xce5d, 0xce61, 0xce62, 0xce63, 0xce64,
+    0xce65, 0xce66, 0xce67, 0xce68, 0xce69, 0xce6a, 0xce6b, 0xce6c,
+    0xce6d, 0xce6e, 0xce6f, 0xce70, 0xce71, 0xce73, 0xce74, 0xce75,
+    0xce76, 0xce77, 0xce78, 0xce79, 0xce7a, 0xce7b, 0xce7c, 0xce7d,
+    0xce81, 0xce82, 0xce83, 0xce84, 0xce85, 0xce86, 0xce87, 0xce88,
+    0xce89, 0xce8a, 0xce8b, 0xce8c, 0xce8d, 0xce8e, 0xce8f, 0xce90,
+    0xce91, 0xce93, 0xce94, 0xce95, 0xce96, 0xce97, 0xce98, 0xce99,
+    0xce9a, 0xce9b, 0xce9c, 0xce9d, 0xcea1, 0xcea2, 0xcea3, 0xcea4,
+    0xcea5, 0xcea6, 0xcea7, 0xcea8, 0xcea9, 0xceaa, 0xceab, 0xceac,
+    0xcead, 0xceae, 0xceaf, 0xceb0, 0xceb1, 0xceb3, 0xceb4, 0xceb5,
+    0xceb6, 0xceb7, 0xceb8, 0xceb9, 0xceba, 0xcebb, 0xcebc, 0xcebd,
+    0xcec1, 0xcec2, 0xcec3, 0xcec4, 0xcec5, 0xcec6, 0xcec7, 0xcec8,
+    0xcec9, 0xceca, 0xcecb, 0xcecc, 0xcecd, 0xcece, 0xcecf, 0xced0,
+    0xced1, 0xced3, 0xced4, 0xced5, 0xced6, 0xced7, 0xced8, 0xced9,
+    0xceda, 0xcedb, 0xcedc, 0xcedd, 0xcee1, 0xcee2, 0xcee3, 0xcee4,
+    0xcee5, 0xcee6, 0xcee7, 0xcee8, 0xcee9, 0xceea, 0xceeb, 0xceec,
+    0xceed, 0xceee, 0xceef, 0xcef0, 0xcef1, 0xcef3, 0xcef4, 0xcef5,
+    0xcef6, 0xcef7, 0xcef8, 0xcef9, 0xcefa, 0xcefb, 0xcefc, 0xcefd,
+    0xcf41, 0xcf42, 0xcf43, 0xcf44, 0xcf45, 0xcf46, 0xcf47, 0xcf48,
+    0xcf49, 0xcf4a, 0xcf4b, 0xcf4c, 0xcf4d, 0xcf4e, 0xcf4f, 0xcf50,
+    0xcf51, 0xcf53, 0xcf54, 0xcf55, 0xcf56, 0xcf57, 0xcf58, 0xcf59,
+    /* 0xd500 .. 0xd5ff */
+    0xcf5a, 0xcf5b, 0xcf5c, 0xcf5d, 0xcf61, 0xcf62, 0xcf63, 0xcf64,
+    0xcf65, 0xcf66, 0xcf67, 0xcf68, 0xcf69, 0xcf6a, 0xcf6b, 0xcf6c,
+    0xcf6d, 0xcf6e, 0xcf6f, 0xcf70, 0xcf71, 0xcf73, 0xcf74, 0xcf75,
+    0xcf76, 0xcf77, 0xcf78, 0xcf79, 0xcf7a, 0xcf7b, 0xcf7c, 0xcf7d,
+    0xcf81, 0xcf82, 0xcf83, 0xcf84, 0xcf85, 0xcf86, 0xcf87, 0xcf88,
+    0xcf89, 0xcf8a, 0xcf8b, 0xcf8c, 0xcf8d, 0xcf8e, 0xcf8f, 0xcf90,
+    0xcf91, 0xcf93, 0xcf94, 0xcf95, 0xcf96, 0xcf97, 0xcf98, 0xcf99,
+    0xcf9a, 0xcf9b, 0xcf9c, 0xcf9d, 0xcfa1, 0xcfa2, 0xcfa3, 0xcfa4,
+    0xcfa5, 0xcfa6, 0xcfa7, 0xcfa8, 0xcfa9, 0xcfaa, 0xcfab, 0xcfac,
+    0xcfad, 0xcfae, 0xcfaf, 0xcfb0, 0xcfb1, 0xcfb3, 0xcfb4, 0xcfb5,
+    0xcfb6, 0xcfb7, 0xcfb8, 0xcfb9, 0xcfba, 0xcfbb, 0xcfbc, 0xcfbd,
+    0xd061, 0xd062, 0xd063, 0xd064, 0xd065, 0xd066, 0xd067, 0xd068,
+    0xd069, 0xd06a, 0xd06b, 0xd06c, 0xd06d, 0xd06e, 0xd06f, 0xd070,
+    0xd071, 0xd073, 0xd074, 0xd075, 0xd076, 0xd077, 0xd078, 0xd079,
+    0xd07a, 0xd07b, 0xd07c, 0xd07d, 0xd081, 0xd082, 0xd083, 0xd084,
+    0xd085, 0xd086, 0xd087, 0xd088, 0xd089, 0xd08a, 0xd08b, 0xd08c,
+    0xd08d, 0xd08e, 0xd08f, 0xd090, 0xd091, 0xd093, 0xd094, 0xd095,
+    0xd096, 0xd097, 0xd098, 0xd099, 0xd09a, 0xd09b, 0xd09c, 0xd09d,
+    0xd0a1, 0xd0a2, 0xd0a3, 0xd0a4, 0xd0a5, 0xd0a6, 0xd0a7, 0xd0a8,
+    0xd0a9, 0xd0aa, 0xd0ab, 0xd0ac, 0xd0ad, 0xd0ae, 0xd0af, 0xd0b0,
+    0xd0b1, 0xd0b3, 0xd0b4, 0xd0b5, 0xd0b6, 0xd0b7, 0xd0b8, 0xd0b9,
+    0xd0ba, 0xd0bb, 0xd0bc, 0xd0bd, 0xd0c1, 0xd0c2, 0xd0c3, 0xd0c4,
+    0xd0c5, 0xd0c6, 0xd0c7, 0xd0c8, 0xd0c9, 0xd0ca, 0xd0cb, 0xd0cc,
+    0xd0cd, 0xd0ce, 0xd0cf, 0xd0d0, 0xd0d1, 0xd0d3, 0xd0d4, 0xd0d5,
+    0xd0d6, 0xd0d7, 0xd0d8, 0xd0d9, 0xd0da, 0xd0db, 0xd0dc, 0xd0dd,
+    0xd0e1, 0xd0e2, 0xd0e3, 0xd0e4, 0xd0e5, 0xd0e6, 0xd0e7, 0xd0e8,
+    0xd0e9, 0xd0ea, 0xd0eb, 0xd0ec, 0xd0ed, 0xd0ee, 0xd0ef, 0xd0f0,
+    0xd0f1, 0xd0f3, 0xd0f4, 0xd0f5, 0xd0f6, 0xd0f7, 0xd0f8, 0xd0f9,
+    0xd0fa, 0xd0fb, 0xd0fc, 0xd0fd, 0xd141, 0xd142, 0xd143, 0xd144,
+    0xd145, 0xd146, 0xd147, 0xd148, 0xd149, 0xd14a, 0xd14b, 0xd14c,
+    0xd14d, 0xd14e, 0xd14f, 0xd150, 0xd151, 0xd153, 0xd154, 0xd155,
+    0xd156, 0xd157, 0xd158, 0xd159, 0xd15a, 0xd15b, 0xd15c, 0xd15d,
+    /* 0xd600 .. 0xd6ff */
+    0xd161, 0xd162, 0xd163, 0xd164, 0xd165, 0xd166, 0xd167, 0xd168,
+    0xd169, 0xd16a, 0xd16b, 0xd16c, 0xd16d, 0xd16e, 0xd16f, 0xd170,
+    0xd171, 0xd173, 0xd174, 0xd175, 0xd176, 0xd177, 0xd178, 0xd179,
+    0xd17a, 0xd17b, 0xd17c, 0xd17d, 0xd181, 0xd182, 0xd183, 0xd184,
+    0xd185, 0xd186, 0xd187, 0xd188, 0xd189, 0xd18a, 0xd18b, 0xd18c,
+    0xd18d, 0xd18e, 0xd18f, 0xd190, 0xd191, 0xd193, 0xd194, 0xd195,
+    0xd196, 0xd197, 0xd198, 0xd199, 0xd19a, 0xd19b, 0xd19c, 0xd19d,
+    0xd1a1, 0xd1a2, 0xd1a3, 0xd1a4, 0xd1a5, 0xd1a6, 0xd1a7, 0xd1a8,
+    0xd1a9, 0xd1aa, 0xd1ab, 0xd1ac, 0xd1ad, 0xd1ae, 0xd1af, 0xd1b0,
+    0xd1b1, 0xd1b3, 0xd1b4, 0xd1b5, 0xd1b6, 0xd1b7, 0xd1b8, 0xd1b9,
+    0xd1ba, 0xd1bb, 0xd1bc, 0xd1bd, 0xd1c1, 0xd1c2, 0xd1c3, 0xd1c4,
+    0xd1c5, 0xd1c6, 0xd1c7, 0xd1c8, 0xd1c9, 0xd1ca, 0xd1cb, 0xd1cc,
+    0xd1cd, 0xd1ce, 0xd1cf, 0xd1d0, 0xd1d1, 0xd1d3, 0xd1d4, 0xd1d5,
+    0xd1d6, 0xd1d7, 0xd1d8, 0xd1d9, 0xd1da, 0xd1db, 0xd1dc, 0xd1dd,
+    0xd1e1, 0xd1e2, 0xd1e3, 0xd1e4, 0xd1e5, 0xd1e6, 0xd1e7, 0xd1e8,
+    0xd1e9, 0xd1ea, 0xd1eb, 0xd1ec, 0xd1ed, 0xd1ee, 0xd1ef, 0xd1f0,
+    0xd1f1, 0xd1f3, 0xd1f4, 0xd1f5, 0xd1f6, 0xd1f7, 0xd1f8, 0xd1f9,
+    0xd1fa, 0xd1fb, 0xd1fc, 0xd1fd, 0xd241, 0xd242, 0xd243, 0xd244,
+    0xd245, 0xd246, 0xd247, 0xd248, 0xd249, 0xd24a, 0xd24b, 0xd24c,
+    0xd24d, 0xd24e, 0xd24f, 0xd250, 0xd251, 0xd253, 0xd254, 0xd255,
+    0xd256, 0xd257, 0xd258, 0xd259, 0xd25a, 0xd25b, 0xd25c, 0xd25d,
+    0xd261, 0xd262, 0xd263, 0xd264, 0xd265, 0xd266, 0xd267, 0xd268,
+    0xd269, 0xd26a, 0xd26b, 0xd26c, 0xd26d, 0xd26e, 0xd26f, 0xd270,
+    0xd271, 0xd273, 0xd274, 0xd275, 0xd276, 0xd277, 0xd278, 0xd279,
+    0xd27a, 0xd27b, 0xd27c, 0xd27d, 0xd281, 0xd282, 0xd283, 0xd284,
+    0xd285, 0xd286, 0xd287, 0xd288, 0xd289, 0xd28a, 0xd28b, 0xd28c,
+    0xd28d, 0xd28e, 0xd28f, 0xd290, 0xd291, 0xd293, 0xd294, 0xd295,
+    0xd296, 0xd297, 0xd298, 0xd299, 0xd29a, 0xd29b, 0xd29c, 0xd29d,
+    0xd2a1, 0xd2a2, 0xd2a3, 0xd2a4, 0xd2a5, 0xd2a6, 0xd2a7, 0xd2a8,
+    0xd2a9, 0xd2aa, 0xd2ab, 0xd2ac, 0xd2ad, 0xd2ae, 0xd2af, 0xd2b0,
+    0xd2b1, 0xd2b3, 0xd2b4, 0xd2b5, 0xd2b6, 0xd2b7, 0xd2b8, 0xd2b9,
+    0xd2ba, 0xd2bb, 0xd2bc, 0xd2bd, 0xd2c1, 0xd2c2, 0xd2c3, 0xd2c4,
+    /* 0xd700 .. 0xd7ff */
+    0xd2c5, 0xd2c6, 0xd2c7, 0xd2c8, 0xd2c9, 0xd2ca, 0xd2cb, 0xd2cc,
+    0xd2cd, 0xd2ce, 0xd2cf, 0xd2d0, 0xd2d1, 0xd2d3, 0xd2d4, 0xd2d5,
+    0xd2d6, 0xd2d7, 0xd2d8, 0xd2d9, 0xd2da, 0xd2db, 0xd2dc, 0xd2dd,
+    0xd2e1, 0xd2e2, 0xd2e3, 0xd2e4, 0xd2e5, 0xd2e6, 0xd2e7, 0xd2e8,
+    0xd2e9, 0xd2ea, 0xd2eb, 0xd2ec, 0xd2ed, 0xd2ee, 0xd2ef, 0xd2f0,
+    0xd2f1, 0xd2f3, 0xd2f4, 0xd2f5, 0xd2f6, 0xd2f7, 0xd2f8, 0xd2f9,
+    0xd2fa, 0xd2fb, 0xd2fc, 0xd2fd, 0xd341, 0xd342, 0xd343, 0xd344,
+    0xd345, 0xd346, 0xd347, 0xd348, 0xd349, 0xd34a, 0xd34b, 0xd34c,
+    0xd34d, 0xd34e, 0xd34f, 0xd350, 0xd351, 0xd353, 0xd354, 0xd355,
+    0xd356, 0xd357, 0xd358, 0xd359, 0xd35a, 0xd35b, 0xd35c, 0xd35d,
+    0xd361, 0xd362, 0xd363, 0xd364, 0xd365, 0xd366, 0xd367, 0xd368,
+    0xd369, 0xd36a, 0xd36b, 0xd36c, 0xd36d, 0xd36e, 0xd36f, 0xd370,
+    0xd371, 0xd373, 0xd374, 0xd375, 0xd376, 0xd377, 0xd378, 0xd379,
+    0xd37a, 0xd37b, 0xd37c, 0xd37d, 0xd381, 0xd382, 0xd383, 0xd384,
+    0xd385, 0xd386, 0xd387, 0xd388, 0xd389, 0xd38a, 0xd38b, 0xd38c,
+    0xd38d, 0xd38e, 0xd38f, 0xd390, 0xd391, 0xd393, 0xd394, 0xd395,
+    0xd396, 0xd397, 0xd398, 0xd399, 0xd39a, 0xd39b, 0xd39c, 0xd39d,
+    0xd3a1, 0xd3a2, 0xd3a3, 0xd3a4, 0xd3a5, 0xd3a6, 0xd3a7, 0xd3a8,
+    0xd3a9, 0xd3aa, 0xd3ab, 0xd3ac, 0xd3ad, 0xd3ae, 0xd3af, 0xd3b0,
+    0xd3b1, 0xd3b3, 0xd3b4, 0xd3b5, 0xd3b6, 0xd3b7, 0xd3b8, 0xd3b9,
+    0xd3ba, 0xd3bb, 0xd3bc, 0xd3bd, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0xf900 .. 0xf9ff */
+    0xe0d0, 0xe0d6, 0xe0e7, 0xe1cf, 0xe1e8, 0xe23d, 0xe2fb, 0xe332,
+    0xe348, 0xe360, 0xe36d, 0xe3d4, 0xe3d5, 0xe3d8, 0xe3db, 0xe3dc,
+    0xe3dd, 0xe3de, 0xe3df, 0xe3e0, 0xe3e2, 0xe3e3, 0xe3e4, 0xe3e5,
+    0xe3e6, 0xe3e8, 0xe3e9, 0xe3ea, 0xe3eb, 0xe3ed, 0xe3ef, 0xe3f0,
+    0xe3f2, 0xe3f6, 0xe3fa, 0xe3fc, 0xe3fd, 0xe3fe, 0xe432, 0xe433,
+    0xe437, 0xe438, 0xe439, 0xe43a, 0xe43b, 0xe43d, 0xe442, 0xe44e,
+    0xe452, 0xe453, 0xe454, 0xe456, 0xe457, 0xe458, 0xe459, 0xe45a,
+    0xe45b, 0xe45d, 0xe45e, 0xe45f, 0xe460, 0xe461, 0xe462, 0xe463,
+    0xe464, 0xe465, 0xe466, 0xe467, 0xe469, 0xe46a, 0xe46e, 0xe46f,
+    0xe471, 0xe472, 0xe474, 0xe475, 0xe476, 0xe477, 0xe478, 0xe479,
+    0xe47a, 0xe47b, 0xe492, 0xe493, 0xe494, 0xe495, 0xe496, 0xe497,
+    0xe499, 0xe49a, 0xe576, 0xe59e, 0xe5a5, 0xe5ab, 0xe5ae, 0xe648,
+    0xe65d, 0xe6cb, 0xe6e4, 0xe8c5, 0xe8e4, 0xe935, 0xe9a5, 0xe9d5,
+    0xe9f4, 0xea9e, 0xeaa0, 0xeab3, 0xeae1, 0xeae8, 0xeb93, 0xebad,
+    0xebed, 0xecf5, 0xed31, 0xed39, 0xedae, 0xedb1, 0xedb2, 0xedb9,
+    0xedbb, 0xedbc, 0xedc4, 0xedce, 0xedd0, 0xedd2, 0xedd6, 0xedfa,
+    0xedfb, 0xedfc, 0xedfe, 0xee31, 0xee34, 0xee37, 0xee3d, 0xee3f,
+    0xee40, 0xee41, 0xee43, 0xee47, 0xee48, 0xee4c, 0xee54, 0xee56,
+    0xee57, 0xee5a, 0xee62, 0xee66, 0xee69, 0xee6c, 0xee6f, 0xee71,
+    0xee74, 0xee75, 0xee76, 0xee78, 0xee7a, 0xee7b, 0xee7c, 0xee91,
+    0xee93, 0xee94, 0xee97, 0xee98, 0xee99, 0xee9b, 0xeea1, 0xeea6,
+    0xeea9, 0xeeaa, 0xeeac, 0xeead, 0xeeb0, 0xeebf, 0xeec1, 0xeec6,
+    0xeec7, 0xeecb, 0xeecd, 0xeecf, 0xeed0, 0xeed3, 0xeedf, 0xeee4,
+    0xeee6, 0xeef7, 0xef77, 0xef78, 0xef92, 0xef93, 0xef99, 0xef9b,
+    0xef9d, 0xefa0, 0xefa7, 0xefac, 0xefcc, 0xeff7, 0xf051, 0xf075,
+    0xf096, 0xf099, 0xf09e, 0xf0a0, 0xf0a4, 0xf0a7, 0xf0a9, 0xf0aa,
+    0xf0ba, 0xf0bb, 0xf0bd, 0xf0c1, 0xf0c2, 0xf0c6, 0xf0c7, 0xf0cc,
+    0xf0cf, 0xf0d0, 0xf0d1, 0xf0d2, 0xf0d8, 0xf136, 0xf137, 0xf13a,
+    0xf13f, 0xf140, 0xf141, 0xf142, 0xf145, 0xf148, 0xf14a, 0xf150,
+    0xf151, 0xf155, 0xf156, 0xf159, 0xf15a, 0xf165, 0xf16d, 0xf16e,
+    0xf171, 0xf174, 0xf177, 0xf178, 0xf199, 0xf19a, 0xf19c, 0xf1a1,
+    0xf1a2, 0xf1a3, 0xf1ee, 0xf26b, 0xf44d, 0xf49c, 0xf4b1, 0xf537,
+    /* 0xfa00 .. 0xfaff */
+    0xf57e, 0xf696, 0xf698, 0xf6b8, 0xf6c8, 0xf6d3, 0xf76b, 0xf792,
+    0xf831, 0xf832, 0xf876, 0xf939, 0xef44, 0x003f, 0x003f, 0x003f,
+    0xf5c0, 0x003f, 0xf577, 0x003f, 0x003f, 0xf9eb, 0xf254, 0xf15c,
+    0x003f, 0xecea, 0xead4, 0xe968, 0xf2fe, 0xf2f1, 0xefe2, 0x003f,
+    0x003f, 0x003f, 0xf343, 0x003f, 0x003f, 0xf191, 0xe544, 0x003f,
+    0x003f, 0x003f, 0xe89b, 0xea9a, 0xe24d, 0xf7cd, 0x003f, 0x003f,
+    0xe7b2, 0xecac, 0xe795, 0xe797, 0xe353, 0xe9e4, 0xe072, 0xf6a3,
+    0xe391, 0x003f, 0xe7f8, 0xf645, 0x003f, 0xf972, 0xe0c6, 0xf3f3,
+    0xf4a4, 0xe852, 0x003f, 0xeaf4, 0xe76e, 0xf83d, 0xf252, 0xf7d3,
+    0xf1b4, 0x003f, 0xf69e, 0xe9f8, 0xea74, 0xf443, 0xe3b7, 0xefde,
+    0xf363, 0xf5e6, 0xf931, 0xf2ee, 0xe1da, 0xe55d, 0xf2bd, 0xe633,
+    0xf46b, 0xe8e5, 0xeafe, 0xf1ba, 0xf63b, 0x003f, 0x003f, 0xf25a,
+    0xe078, 0xecca, 0xed67, 0xe35d, 0xea49, 0xf3fc, 0x003f, 0xf191,
+    0xe3f1, 0xf852, 0xea4a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf291, 0x003f, 0xf5f6, 0xe37d, 0xefb8, 0xf1c3,
+    0xe072, 0x003f, 0xf9c2, 0x003f, 0xf5c0, 0xe9c5, 0xedf2, 0xe9c6,
+    0xe9e6, 0x003f, 0x003f, 0x003f, 0xf4f4, 0x003f, 0x003f, 0x003f,
+    0xf091, 0xf3f3, 0x003f, 0xf4a4, 0xe4e3, 0xf093, 0xec34, 0x003f,
+    0xeef9, 0xf577, 0xe5c7, 0xe760, 0xf1e8, 0x003f, 0xeaaf, 0xe6b5,
+    0x003f, 0xf1b2, 0xf7d3, 0xf2e7, 0xf1b4, 0x003f, 0xf1c9, 0xe8f3,
+    0xf254, 0x003f, 0x003f, 0x003f, 0x003f, 0xef40, 0xf15c, 0xeb9e,
+    0xf451, 0x003f, 0xf4b7, 0x003f, 0x003f, 0xf2bd, 0x003f, 0x003f,
+    0xe633, 0x003f, 0xf1ba, 0xf968, 0xf934, 0x003f, 0xe0ba, 0xe96d,
+    0xecca, 0xf370, 0xf343, 0xf57b, 0xed67, 0xe3e7, 0xf0b1, 0xe35d,
+    0xe938, 0xf3fc, 0xec53, 0xf450, 0x003f, 0x003f, 0x003f, 0xe3f1,
+    0xf2fe, 0x003f, 0xf852, 0x003f, 0xea4a, 0x003f, 0xe2cf, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0xfb00 .. 0xfbff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x002b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0xfe00 .. 0xfeff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd93a, 0xd93a, 0xd93a, 0xd93a, 0x005f, 0x005f, 0x005f,
+    0x002c, 0xd932, 0x002e, 0x003f, 0x003b, 0x003a, 0x003f, 0x0021,
+    0xd93a, 0x0028, 0x0029, 0x007b, 0x007d, 0xd942, 0xd943, 0x0023,
+    0x0026, 0x002a, 0x002b, 0x002d, 0x003c, 0x003e, 0x003d, 0x003f,
+    0x003f, 0x0024, 0x0025, 0x0040, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0xff00 .. 0xffff */
+    0x003f, 0xda31, 0xda32, 0xda33, 0xda34, 0xda35, 0xda36, 0xda37,
+    0xda38, 0xda39, 0xda3a, 0xda3b, 0xda3c, 0xda3d, 0xda3e, 0xda3f,
+    0xda40, 0xda41, 0xda42, 0xda43, 0xda44, 0xda45, 0xda46, 0xda47,
+    0xda48, 0xda49, 0xda4a, 0xda4b, 0xda4c, 0xda4d, 0xda4e, 0xda4f,
+    0xda50, 0xda51, 0xda52, 0xda53, 0xda54, 0xda55, 0xda56, 0xda57,
+    0xda58, 0xda59, 0xda5a, 0xda5b, 0xda5c, 0xda5d, 0xda5e, 0xda5f,
+    0xda60, 0xda61, 0xda62, 0xda63, 0xda64, 0xda65, 0xda66, 0xda67,
+    0xda68, 0xda69, 0xda6a, 0xda6b, 0xd93c, 0xda6d, 0xda6e, 0xda6f,
+    0xda70, 0xda71, 0xda72, 0xda73, 0xda74, 0xda75, 0xda76, 0xda77,
+    0xda78, 0xda79, 0xda7a, 0xda7b, 0xda7c, 0xda7d, 0xda7e, 0xda91,
+    0xda92, 0xda93, 0xda94, 0xda95, 0xda96, 0xda97, 0xda98, 0xda99,
+    0xda9a, 0xda9b, 0xda9c, 0xda9d, 0xda9e, 0xda9f, 0xd9a6, 0x003f,
+    0x003f, 0xd933, 0xd948, 0xd949, 0xd932, 0x003f, 0xde94, 0xde31,
+    0xde33, 0xde35, 0xde37, 0xde39, 0xde73, 0xde75, 0xde77, 0xde53,
+    0x003f, 0xde32, 0xde34, 0xde36, 0xde38, 0xde3a, 0xde3b, 0xde3d,
+    0xde3f, 0xde41, 0xde43, 0xde45, 0xde47, 0xde49, 0xde4b, 0xde4d,
+    0xde4f, 0xde51, 0xde54, 0xde56, 0xde58, 0xde5a, 0xde5b, 0xde5c,
+    0xde5d, 0xde5e, 0xde5f, 0xde62, 0xde65, 0xde68, 0xde6b, 0xde6e,
+    0xde6f, 0xde70, 0xde71, 0xde72, 0xde74, 0xde76, 0xde78, 0xde79,
+    0xde7a, 0xde7b, 0xde7c, 0xde7d, 0xde91, 0xde95, 0x003f, 0x003f,
+    0xdad4, 0x8841, 0x8c41, 0x8444, 0x9041, 0x8446, 0x8447, 0x9441,
+    0x9841, 0x9c41, 0x844a, 0x844b, 0x844c, 0x844d, 0x844e, 0x844f,
+    0x8450, 0xa041, 0xa441, 0xa841, 0x8454, 0xac41, 0xb041, 0xb441,
+    0xb841, 0xbc41, 0xc041, 0xc441, 0xc841, 0xcc41, 0xd041, 0x003f,
+    0x003f, 0x003f, 0x8461, 0x8481, 0x84a1, 0x84c1, 0x84e1, 0x8541,
+    0x003f, 0x003f, 0x8561, 0x8581, 0x85a1, 0x85c1, 0x85e1, 0x8641,
+    0x003f, 0x003f, 0x8661, 0x8681, 0x86a1, 0x86c1, 0x86e1, 0x8741,
+    0x003f, 0x003f, 0x8761, 0x8781, 0x87a1, 0x003f, 0x003f, 0x003f,
+    0xd95b, 0xd95c, 0xd9a0, 0xdaa0, 0x007c, 0xd95d, 0xda6c, 0x003f,
+    0xdba2, 0xd977, 0xd978, 0xd976, 0xd979, 0xd971, 0xd96b, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* defaults */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x0400, 0x9800, 0x9800, 0x9800,
+    0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800,
+    0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800,
+    0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x0500, 0x0600, 0x0700,
+    0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x0d00, 0x0e00, 0x9800,
+    0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x0f00, 0x1000,
+    0x1100, 0x1200, 0x1300, 0x1400, 0x9800, 0x9800, 0x9800, 0x9800,
+    0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800,
+    0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800,
+    0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x1500, 0x1600,
+    0x1700, 0x1800, 0x1900, 0x1a00, 0x1b00, 0x1c00, 0x1d00, 0x1e00,
+    0x1f00, 0x2000, 0x2100, 0x2200, 0x2300, 0x2400, 0x2500, 0x2600,
+    0x2700, 0x2800, 0x2900, 0x2a00, 0x2b00, 0x2c00, 0x2d00, 0x2e00,
+    0x2f00, 0x3000, 0x3100, 0x3200, 0x3300, 0x3400, 0x3500, 0x3600,
+    0x3700, 0x3800, 0x3900, 0x3a00, 0x3b00, 0x3c00, 0x3d00, 0x3e00,
+    0x3f00, 0x4000, 0x4100, 0x4200, 0x4300, 0x4400, 0x4500, 0x4600,
+    0x4700, 0x4800, 0x4900, 0x4a00, 0x4b00, 0x4c00, 0x4d00, 0x4e00,
+    0x4f00, 0x5000, 0x5100, 0x5200, 0x5300, 0x5400, 0x5500, 0x5600,
+    0x5700, 0x5800, 0x5900, 0x5a00, 0x5b00, 0x5c00, 0x5d00, 0x5e00,
+    0x5f00, 0x6000, 0x6100, 0x6200, 0x6300, 0x6400, 0x6500, 0x6600,
+    0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800,
+    0x9800, 0x9800, 0x9800, 0x9800, 0x6700, 0x6800, 0x6900, 0x6a00,
+    0x6b00, 0x6c00, 0x6d00, 0x6e00, 0x6f00, 0x7000, 0x7100, 0x7200,
+    0x7300, 0x7400, 0x7500, 0x7600, 0x7700, 0x7800, 0x7900, 0x7a00,
+    0x7b00, 0x7c00, 0x7d00, 0x7e00, 0x7f00, 0x8000, 0x8100, 0x8200,
+    0x8300, 0x8400, 0x8500, 0x8600, 0x8700, 0x8800, 0x8900, 0x8a00,
+    0x8b00, 0x8c00, 0x8d00, 0x8e00, 0x8f00, 0x9000, 0x9100, 0x9200,
+    0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800,
+    0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800,
+    0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800,
+    0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800,
+    0x9800, 0x9300, 0x9400, 0x9500, 0x9800, 0x9800, 0x9600, 0x9700
+};
+
+const struct dbcs_table cptable_1361 =
+{
+    { 1361, 2, 0x003f, 0x003f, "Korean Johab" },
+    cp2uni,
+    cp2uni_leadbytes,
+    uni2cp_low,
+    uni2cp_high,
+    { 0x84, 0xd3, 0xd9, 0xde, 0xe0, 0xf9, 0x00, 0x00 }
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_20127.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_20127.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_20127.c	(revision 16410)
@@ -0,0 +1,683 @@
+/* code page 20127 (US-ASCII (7bit)) */
+/* Automatically generated; DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x20, 0x21, 0x63, 0x4c, 0x3f, 0x59, 0x7c, 0x3f,
+    0x22, 0x63, 0x61, 0x3c, 0x3f, 0x2d, 0x72, 0x2d,
+    0x3f, 0x3f, 0x32, 0x33, 0x27, 0x75, 0x3f, 0x3f,
+    0x2c, 0x31, 0x6f, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43,
+    0x45, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0x4e, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x78,
+    0x4f, 0x55, 0x55, 0x55, 0x55, 0x59, 0x3f, 0x3f,
+    0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x63,
+    0x65, 0x65, 0x65, 0x65, 0x69, 0x69, 0x69, 0x69,
+    0x64, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x3f,
+    0x6f, 0x75, 0x75, 0x75, 0x75, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75, 0x55,
+    0x75, 0x55, 0x75, 0x55, 0x75, 0x3f, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0x2d, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0x2d, 0x2d, 0x3f, 0x3f,
+    0x22, 0x3f, 0x3f, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0x22, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x22, 0x41, 0x3f,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x75, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x63, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x22, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0x22, 0x22, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x27, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x63, 0x3f, 0x3f, 0x4c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0x3f, 0x3f, 0x2f, 0x5c, 0x2a,
+    0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2d, 0x2d, 0x2d, 0x2d, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x63, 0x4c, 0x3f, 0x2d, 0x7c, 0x59, 0x3f, 0x3f,
+    0x7c, 0x3c, 0x5e, 0x3e, 0x76, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_20127 =
+{
+    { 20127, 1, 0x003f, 0x003f, "US-ASCII (7bit)" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_20866.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_20866.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_20866.c	(revision 16410)
@@ -0,0 +1,717 @@
+/* code page 20866 (Russian KOI8) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MISC/KOI8-R.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524,
+    0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590,
+    0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248,
+    0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7,
+    0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556,
+    0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e,
+    0x255f, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565,
+    0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x00a9,
+    0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
+    0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+    0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
+    0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
+    0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
+    0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+    0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
+    0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a
+};
+
+static const unsigned char uni2cp_low[4864] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x9a, 0x21, 0x63, 0x4c, 0x3f, 0x59, 0x7c, 0x3f,
+    0x22, 0xbf, 0x61, 0x3c, 0x3f, 0x2d, 0x72, 0x2d,
+    0x9c, 0x3f, 0x9d, 0x33, 0x27, 0x75, 0x3f, 0x9e,
+    0x2c, 0x31, 0x6f, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43,
+    0x45, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0x4e, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x78,
+    0x4f, 0x55, 0x55, 0x55, 0x55, 0x59, 0x3f, 0x3f,
+    0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x63,
+    0x65, 0x65, 0x65, 0x65, 0x69, 0x69, 0x69, 0x69,
+    0x64, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x9f,
+    0x6f, 0x75, 0x75, 0x75, 0x75, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x81, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75, 0x55,
+    0x75, 0x55, 0x75, 0x55, 0x75, 0x3f, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0x2d, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x9c, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0x2d, 0x2d, 0x3f, 0x3f,
+    0x22, 0x3f, 0x9c, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0x22, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x22, 0x41, 0x9e,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x75, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0400 .. 0x04ff */
+    0xe5, 0xb3, 0x3f, 0xe7, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xeb, 0xe9, 0xf5, 0x3f,
+    0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa,
+    0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0,
+    0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe,
+    0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1,
+    0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda,
+    0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0,
+    0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde,
+    0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1,
+    0xc5, 0xa3, 0x3f, 0xc7, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xcb, 0xc9, 0xd5, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xf6, 0xd6, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe1, 0xc1, 0xe1, 0xc1, 0x3f, 0x3f, 0xe5, 0xc5,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xf6, 0xd6, 0xfa, 0xda,
+    0x3f, 0x3f, 0xe9, 0xc9, 0xe9, 0xc9, 0xef, 0xcf,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xfc, 0xdc, 0xf5, 0xd5,
+    0xf5, 0xd5, 0xf5, 0xd5, 0xfe, 0xde, 0x3f, 0x3f,
+    0xf9, 0xd9, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xce, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x63, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x22, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0x22, 0x22, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0x95, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x27, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x9c, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x63, 0x3f, 0x3f, 0x4c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0x3f, 0x3f, 0x2f, 0x5c, 0x2a,
+    0x9c, 0x95, 0x96, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x97, 0x97, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x98, 0x99, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x98, 0x99, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x9e, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x93, 0x9b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x80, 0x80, 0x81, 0x81, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0x82, 0x82, 0x82, 0x82,
+    0x83, 0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84,
+    0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x86,
+    0x86, 0x86, 0x86, 0x86, 0x87, 0x87, 0x87, 0x87,
+    0x87, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88, 0x88,
+    0x88, 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x89,
+    0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a,
+    0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
+    0x8a, 0x8a, 0x8a, 0x8a, 0x2d, 0x2d, 0x7c, 0x7c,
+    0xa0, 0xa1, 0xa2, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8,
+    0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0,
+    0xb1, 0xb2, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9,
+    0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x8b, 0x3f, 0x3f, 0x3f, 0x8c, 0x3f, 0x3f, 0x3f,
+    0x8d, 0x3f, 0x3f, 0x3f, 0x8e, 0x3f, 0x3f, 0x3f,
+    0x8f, 0x90, 0x91, 0x92, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x94, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2d, 0x2d, 0x2d, 0x2d, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x63, 0x4c, 0x3f, 0x2d, 0x7c, 0x59, 0x3f, 0x3f,
+    0x81, 0x3c, 0x5e, 0x3e, 0x76, 0x94, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x0400, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x0500, 0x0600, 0x0700,
+    0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x0d00, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x0e00, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x0f00, 0x1200, 0x1200, 0x1000, 0x1100
+};
+
+const struct sbcs_table cptable_20866 =
+{
+    { 20866, 1, 0x003f, 0x003f, "Russian KOI8" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_20932.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_20932.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_20932.c	(revision 16410)
@@ -0,0 +1,6298 @@
+/* code page 20932 (EUC-JP) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0208.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[20480] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0000, 0x0000,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x003f,
+    /* unused lead bytes */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte 8e */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xff61, 0xff62, 0xff63, 0xff64, 0xff65, 0xff66, 0xff67,
+    0xff68, 0xff69, 0xff6a, 0xff6b, 0xff6c, 0xff6d, 0xff6e, 0xff6f,
+    0xff70, 0xff71, 0xff72, 0xff73, 0xff74, 0xff75, 0xff76, 0xff77,
+    0xff78, 0xff79, 0xff7a, 0xff7b, 0xff7c, 0xff7d, 0xff7e, 0xff7f,
+    0xff80, 0xff81, 0xff82, 0xff83, 0xff84, 0xff85, 0xff86, 0xff87,
+    0xff88, 0xff89, 0xff8a, 0xff8b, 0xff8c, 0xff8d, 0xff8e, 0xff8f,
+    0xff90, 0xff91, 0xff92, 0xff93, 0xff94, 0xff95, 0xff96, 0xff97,
+    0xff98, 0xff99, 0xff9a, 0xff9b, 0xff9c, 0xff9d, 0xff9e, 0xff9f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte a1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3000, 0x3001, 0x3002, 0xff0c, 0xff0e, 0x30fb, 0xff1a,
+    0xff1b, 0xff1f, 0xff01, 0x309b, 0x309c, 0x00b4, 0xff40, 0x00a8,
+    0xff3e, 0xffe3, 0xff3f, 0x30fd, 0x30fe, 0x309d, 0x309e, 0x3003,
+    0x4edd, 0x3005, 0x3006, 0x3007, 0x30fc, 0x2015, 0x2010, 0xff0f,
+    0xff3c, 0x301c, 0x2016, 0xff5c, 0x2026, 0x2025, 0x2018, 0x2019,
+    0x201c, 0x201d, 0xff08, 0xff09, 0x3014, 0x3015, 0xff3b, 0xff3d,
+    0xff5b, 0xff5d, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c, 0x300d,
+    0x300e, 0x300f, 0x3010, 0x3011, 0xff0b, 0x2212, 0x00b1, 0x00d7,
+    0x00f7, 0xff1d, 0x2260, 0xff1c, 0xff1e, 0x2266, 0x2267, 0x221e,
+    0x2234, 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xffe5,
+    0xff04, 0x00a2, 0x00a3, 0xff05, 0xff03, 0xff06, 0xff0a, 0xff20,
+    0x00a7, 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7, 0x003f,
+    /* lead byte a2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x25c6, 0x25a1, 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc,
+    0x203b, 0x3012, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x2208, 0x220b, 0x2286, 0x2287, 0x2282, 0x2283,
+    0x222a, 0x2229, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x2227, 0x2228, 0x00ac, 0x21d2, 0x21d4, 0x2200,
+    0x2203, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x2220, 0x22a5, 0x2312, 0x2202,
+    0x2207, 0x2261, 0x2252, 0x226a, 0x226b, 0x221a, 0x223d, 0x221d,
+    0x2235, 0x222b, 0x222c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x212b, 0x2030, 0x266f, 0x266d, 0x266a, 0x2020,
+    0x2021, 0x00b6, 0x003f, 0x003f, 0x003f, 0x003f, 0x25ef, 0x003f,
+    /* lead byte a3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xff10, 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17,
+    0xff18, 0xff19, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27,
+    0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f,
+    0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37,
+    0xff38, 0xff39, 0xff3a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47,
+    0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f,
+    0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57,
+    0xff58, 0xff59, 0xff5a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte a4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047,
+    0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f,
+    0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057,
+    0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f,
+    0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067,
+    0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f,
+    0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077,
+    0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f,
+    0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087,
+    0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f,
+    0x3090, 0x3091, 0x3092, 0x3093, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte a5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7,
+    0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af,
+    0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7,
+    0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf,
+    0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7,
+    0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf,
+    0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7,
+    0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df,
+    0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7,
+    0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef,
+    0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte a6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
+    0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f,
+    0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8,
+    0x03a9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
+    0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
+    0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8,
+    0x03c9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte a7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401,
+    0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d,
+    0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425,
+    0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d,
+    0x042e, 0x042f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451,
+    0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d,
+    0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445,
+    0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d,
+    0x044e, 0x044f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte a8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x2500, 0x2502, 0x250c, 0x2510, 0x2518, 0x2514, 0x251c,
+    0x252c, 0x2524, 0x2534, 0x253c, 0x2501, 0x2503, 0x250f, 0x2513,
+    0x251b, 0x2517, 0x2523, 0x2533, 0x252b, 0x253b, 0x254b, 0x2520,
+    0x252f, 0x2528, 0x2537, 0x253f, 0x251d, 0x2530, 0x2525, 0x2538,
+    0x2542, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte b0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x4e9c, 0x5516, 0x5a03, 0x963f, 0x54c0, 0x611b, 0x6328,
+    0x59f6, 0x9022, 0x8475, 0x831c, 0x7a50, 0x60aa, 0x63e1, 0x6e25,
+    0x65ed, 0x8466, 0x82a6, 0x9bf5, 0x6893, 0x5727, 0x65a1, 0x6271,
+    0x5b9b, 0x59d0, 0x867b, 0x98f4, 0x7d62, 0x7dbe, 0x9b8e, 0x6216,
+    0x7c9f, 0x88b7, 0x5b89, 0x5eb5, 0x6309, 0x6697, 0x6848, 0x95c7,
+    0x978d, 0x674f, 0x4ee5, 0x4f0a, 0x4f4d, 0x4f9d, 0x5049, 0x56f2,
+    0x5937, 0x59d4, 0x5a01, 0x5c09, 0x60df, 0x610f, 0x6170, 0x6613,
+    0x6905, 0x70ba, 0x754f, 0x7570, 0x79fb, 0x7dad, 0x7def, 0x80c3,
+    0x840e, 0x8863, 0x8b02, 0x9055, 0x907a, 0x533b, 0x4e95, 0x4ea5,
+    0x57df, 0x80b2, 0x90c1, 0x78ef, 0x4e00, 0x58f1, 0x6ea2, 0x9038,
+    0x7a32, 0x8328, 0x828b, 0x9c2f, 0x5141, 0x5370, 0x54bd, 0x54e1,
+    0x56e0, 0x59fb, 0x5f15, 0x98f2, 0x6deb, 0x80e4, 0x852d, 0x003f,
+    /* lead byte b1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9662, 0x9670, 0x96a0, 0x97fb, 0x540b, 0x53f3, 0x5b87,
+    0x70cf, 0x7fbd, 0x8fc2, 0x96e8, 0x536f, 0x9d5c, 0x7aba, 0x4e11,
+    0x7893, 0x81fc, 0x6e26, 0x5618, 0x5504, 0x6b1d, 0x851a, 0x9c3b,
+    0x59e5, 0x53a9, 0x6d66, 0x74dc, 0x958f, 0x5642, 0x4e91, 0x904b,
+    0x96f2, 0x834f, 0x990c, 0x53e1, 0x55b6, 0x5b30, 0x5f71, 0x6620,
+    0x66f3, 0x6804, 0x6c38, 0x6cf3, 0x6d29, 0x745b, 0x76c8, 0x7a4e,
+    0x9834, 0x82f1, 0x885b, 0x8a60, 0x92ed, 0x6db2, 0x75ab, 0x76ca,
+    0x99c5, 0x60a6, 0x8b01, 0x8d8a, 0x95b2, 0x698e, 0x53ad, 0x5186,
+    0x5712, 0x5830, 0x5944, 0x5bb4, 0x5ef6, 0x6028, 0x63a9, 0x63f4,
+    0x6cbf, 0x6f14, 0x708e, 0x7114, 0x7159, 0x71d5, 0x733f, 0x7e01,
+    0x8276, 0x82d1, 0x8597, 0x9060, 0x925b, 0x9d1b, 0x5869, 0x65bc,
+    0x6c5a, 0x7525, 0x51f9, 0x592e, 0x5965, 0x5f80, 0x5fdc, 0x003f,
+    /* lead byte b2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x62bc, 0x65fa, 0x6a2a, 0x6b27, 0x6bb4, 0x738b, 0x7fc1,
+    0x8956, 0x9d2c, 0x9d0e, 0x9ec4, 0x5ca1, 0x6c96, 0x837b, 0x5104,
+    0x5c4b, 0x61b6, 0x81c6, 0x6876, 0x7261, 0x4e59, 0x4ffa, 0x5378,
+    0x6069, 0x6e29, 0x7a4f, 0x97f3, 0x4e0b, 0x5316, 0x4eee, 0x4f55,
+    0x4f3d, 0x4fa1, 0x4f73, 0x52a0, 0x53ef, 0x5609, 0x590f, 0x5ac1,
+    0x5bb6, 0x5be1, 0x79d1, 0x6687, 0x679c, 0x67b6, 0x6b4c, 0x6cb3,
+    0x706b, 0x73c2, 0x798d, 0x79be, 0x7a3c, 0x7b87, 0x82b1, 0x82db,
+    0x8304, 0x8377, 0x83ef, 0x83d3, 0x8766, 0x8ab2, 0x5629, 0x8ca8,
+    0x8fe6, 0x904e, 0x971e, 0x868a, 0x4fc4, 0x5ce8, 0x6211, 0x7259,
+    0x753b, 0x81e5, 0x82bd, 0x86fe, 0x8cc0, 0x96c5, 0x9913, 0x99d5,
+    0x4ecb, 0x4f1a, 0x89e3, 0x56de, 0x584a, 0x58ca, 0x5efb, 0x5feb,
+    0x602a, 0x6094, 0x6062, 0x61d0, 0x6212, 0x62d0, 0x6539, 0x003f,
+    /* lead byte b3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9b41, 0x6666, 0x68b0, 0x6d77, 0x7070, 0x754c, 0x7686,
+    0x7d75, 0x82a5, 0x87f9, 0x958b, 0x968e, 0x8c9d, 0x51f1, 0x52be,
+    0x5916, 0x54b3, 0x5bb3, 0x5d16, 0x6168, 0x6982, 0x6daf, 0x788d,
+    0x84cb, 0x8857, 0x8a72, 0x93a7, 0x9ab8, 0x6d6c, 0x99a8, 0x86d9,
+    0x57a3, 0x67ff, 0x86ce, 0x920e, 0x5283, 0x5687, 0x5404, 0x5ed3,
+    0x62e1, 0x64b9, 0x683c, 0x6838, 0x6bbb, 0x7372, 0x78ba, 0x7a6b,
+    0x899a, 0x89d2, 0x8d6b, 0x8f03, 0x90ed, 0x95a3, 0x9694, 0x9769,
+    0x5b66, 0x5cb3, 0x697d, 0x984d, 0x984e, 0x639b, 0x7b20, 0x6a2b,
+    0x6a7f, 0x68b6, 0x9c0d, 0x6f5f, 0x5272, 0x559d, 0x6070, 0x62ec,
+    0x6d3b, 0x6e07, 0x6ed1, 0x845b, 0x8910, 0x8f44, 0x4e14, 0x9c39,
+    0x53f6, 0x691b, 0x6a3a, 0x9784, 0x682a, 0x515c, 0x7ac3, 0x84b2,
+    0x91dc, 0x938c, 0x565b, 0x9d28, 0x6822, 0x8305, 0x8431, 0x003f,
+    /* lead byte b4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7ca5, 0x5208, 0x82c5, 0x74e6, 0x4e7e, 0x4f83, 0x51a0,
+    0x5bd2, 0x520a, 0x52d8, 0x52e7, 0x5dfb, 0x559a, 0x582a, 0x59e6,
+    0x5b8c, 0x5b98, 0x5bdb, 0x5e72, 0x5e79, 0x60a3, 0x611f, 0x6163,
+    0x61be, 0x63db, 0x6562, 0x67d1, 0x6853, 0x68fa, 0x6b3e, 0x6b53,
+    0x6c57, 0x6f22, 0x6f97, 0x6f45, 0x74b0, 0x7518, 0x76e3, 0x770b,
+    0x7aff, 0x7ba1, 0x7c21, 0x7de9, 0x7f36, 0x7ff0, 0x809d, 0x8266,
+    0x839e, 0x89b3, 0x8acc, 0x8cab, 0x9084, 0x9451, 0x9593, 0x9591,
+    0x95a2, 0x9665, 0x97d3, 0x9928, 0x8218, 0x4e38, 0x542b, 0x5cb8,
+    0x5dcc, 0x73a9, 0x764c, 0x773c, 0x5ca9, 0x7feb, 0x8d0b, 0x96c1,
+    0x9811, 0x9854, 0x9858, 0x4f01, 0x4f0e, 0x5371, 0x559c, 0x5668,
+    0x57fa, 0x5947, 0x5b09, 0x5bc4, 0x5c90, 0x5e0c, 0x5e7e, 0x5fcc,
+    0x63ee, 0x673a, 0x65d7, 0x65e2, 0x671f, 0x68cb, 0x68c4, 0x003f,
+    /* lead byte b5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6a5f, 0x5e30, 0x6bc5, 0x6c17, 0x6c7d, 0x757f, 0x7948,
+    0x5b63, 0x7a00, 0x7d00, 0x5fbd, 0x898f, 0x8a18, 0x8cb4, 0x8d77,
+    0x8ecc, 0x8f1d, 0x98e2, 0x9a0e, 0x9b3c, 0x4e80, 0x507d, 0x5100,
+    0x5993, 0x5b9c, 0x622f, 0x6280, 0x64ec, 0x6b3a, 0x72a0, 0x7591,
+    0x7947, 0x7fa9, 0x87fb, 0x8abc, 0x8b70, 0x63ac, 0x83ca, 0x97a0,
+    0x5409, 0x5403, 0x55ab, 0x6854, 0x6a58, 0x8a70, 0x7827, 0x6775,
+    0x9ecd, 0x5374, 0x5ba2, 0x811a, 0x8650, 0x9006, 0x4e18, 0x4e45,
+    0x4ec7, 0x4f11, 0x53ca, 0x5438, 0x5bae, 0x5f13, 0x6025, 0x6551,
+    0x673d, 0x6c42, 0x6c72, 0x6ce3, 0x7078, 0x7403, 0x7a76, 0x7aae,
+    0x7b08, 0x7d1a, 0x7cfe, 0x7d66, 0x65e7, 0x725b, 0x53bb, 0x5c45,
+    0x5de8, 0x62d2, 0x62e0, 0x6319, 0x6e20, 0x865a, 0x8a31, 0x8ddd,
+    0x92f8, 0x6f01, 0x79a6, 0x9b5a, 0x4ea8, 0x4eab, 0x4eac, 0x003f,
+    /* lead byte b6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x4f9b, 0x4fa0, 0x50d1, 0x5147, 0x7af6, 0x5171, 0x51f6,
+    0x5354, 0x5321, 0x537f, 0x53eb, 0x55ac, 0x5883, 0x5ce1, 0x5f37,
+    0x5f4a, 0x602f, 0x6050, 0x606d, 0x631f, 0x6559, 0x6a4b, 0x6cc1,
+    0x72c2, 0x72ed, 0x77ef, 0x80f8, 0x8105, 0x8208, 0x854e, 0x90f7,
+    0x93e1, 0x97ff, 0x9957, 0x9a5a, 0x4ef0, 0x51dd, 0x5c2d, 0x6681,
+    0x696d, 0x5c40, 0x66f2, 0x6975, 0x7389, 0x6850, 0x7c81, 0x50c5,
+    0x52e4, 0x5747, 0x5dfe, 0x9326, 0x65a4, 0x6b23, 0x6b3d, 0x7434,
+    0x7981, 0x79bd, 0x7b4b, 0x7dca, 0x82b9, 0x83cc, 0x887f, 0x895f,
+    0x8b39, 0x8fd1, 0x91d1, 0x541f, 0x9280, 0x4e5d, 0x5036, 0x53e5,
+    0x533a, 0x72d7, 0x7396, 0x77e9, 0x82e6, 0x8eaf, 0x99c6, 0x99c8,
+    0x99d2, 0x5177, 0x611a, 0x865e, 0x55b0, 0x7a7a, 0x5076, 0x5bd3,
+    0x9047, 0x9685, 0x4e32, 0x6adb, 0x91e7, 0x5c51, 0x5c48, 0x003f,
+    /* lead byte b7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6398, 0x7a9f, 0x6c93, 0x9774, 0x8f61, 0x7aaa, 0x718a,
+    0x9688, 0x7c82, 0x6817, 0x7e70, 0x6851, 0x936c, 0x52f2, 0x541b,
+    0x85ab, 0x8a13, 0x7fa4, 0x8ecd, 0x90e1, 0x5366, 0x8888, 0x7941,
+    0x4fc2, 0x50be, 0x5211, 0x5144, 0x5553, 0x572d, 0x73ea, 0x578b,
+    0x5951, 0x5f62, 0x5f84, 0x6075, 0x6176, 0x6167, 0x61a9, 0x63b2,
+    0x643a, 0x656c, 0x666f, 0x6842, 0x6e13, 0x7566, 0x7a3d, 0x7cfb,
+    0x7d4c, 0x7d99, 0x7e4b, 0x7f6b, 0x830e, 0x834a, 0x86cd, 0x8a08,
+    0x8a63, 0x8b66, 0x8efd, 0x981a, 0x9d8f, 0x82b8, 0x8fce, 0x9be8,
+    0x5287, 0x621f, 0x6483, 0x6fc0, 0x9699, 0x6841, 0x5091, 0x6b20,
+    0x6c7a, 0x6f54, 0x7a74, 0x7d50, 0x8840, 0x8a23, 0x6708, 0x4ef6,
+    0x5039, 0x5026, 0x5065, 0x517c, 0x5238, 0x5263, 0x55a7, 0x570f,
+    0x5805, 0x5acc, 0x5efa, 0x61b2, 0x61f8, 0x62f3, 0x6372, 0x003f,
+    /* lead byte b8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x691c, 0x6a29, 0x727d, 0x72ac, 0x732e, 0x7814, 0x786f,
+    0x7d79, 0x770c, 0x80a9, 0x898b, 0x8b19, 0x8ce2, 0x8ed2, 0x9063,
+    0x9375, 0x967a, 0x9855, 0x9a13, 0x9e78, 0x5143, 0x539f, 0x53b3,
+    0x5e7b, 0x5f26, 0x6e1b, 0x6e90, 0x7384, 0x73fe, 0x7d43, 0x8237,
+    0x8a00, 0x8afa, 0x9650, 0x4e4e, 0x500b, 0x53e4, 0x547c, 0x56fa,
+    0x59d1, 0x5b64, 0x5df1, 0x5eab, 0x5f27, 0x6238, 0x6545, 0x67af,
+    0x6e56, 0x72d0, 0x7cca, 0x88b4, 0x80a1, 0x80e1, 0x83f0, 0x864e,
+    0x8a87, 0x8de8, 0x9237, 0x96c7, 0x9867, 0x9f13, 0x4e94, 0x4e92,
+    0x4f0d, 0x5348, 0x5449, 0x543e, 0x5a2f, 0x5f8c, 0x5fa1, 0x609f,
+    0x68a7, 0x6a8e, 0x745a, 0x7881, 0x8a9e, 0x8aa4, 0x8b77, 0x9190,
+    0x4e5e, 0x9bc9, 0x4ea4, 0x4f7c, 0x4faf, 0x5019, 0x5016, 0x5149,
+    0x516c, 0x529f, 0x52b9, 0x52fe, 0x539a, 0x53e3, 0x5411, 0x003f,
+    /* lead byte b9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x540e, 0x5589, 0x5751, 0x57a2, 0x597d, 0x5b54, 0x5b5d,
+    0x5b8f, 0x5de5, 0x5de7, 0x5df7, 0x5e78, 0x5e83, 0x5e9a, 0x5eb7,
+    0x5f18, 0x6052, 0x614c, 0x6297, 0x62d8, 0x63a7, 0x653b, 0x6602,
+    0x6643, 0x66f4, 0x676d, 0x6821, 0x6897, 0x69cb, 0x6c5f, 0x6d2a,
+    0x6d69, 0x6e2f, 0x6e9d, 0x7532, 0x7687, 0x786c, 0x7a3f, 0x7ce0,
+    0x7d05, 0x7d18, 0x7d5e, 0x7db1, 0x8015, 0x8003, 0x80af, 0x80b1,
+    0x8154, 0x818f, 0x822a, 0x8352, 0x884c, 0x8861, 0x8b1b, 0x8ca2,
+    0x8cfc, 0x90ca, 0x9175, 0x9271, 0x783f, 0x92fc, 0x95a4, 0x964d,
+    0x9805, 0x9999, 0x9ad8, 0x9d3b, 0x525b, 0x52ab, 0x53f7, 0x5408,
+    0x58d5, 0x62f7, 0x6fe0, 0x8c6a, 0x8f5f, 0x9eb9, 0x514b, 0x523b,
+    0x544a, 0x56fd, 0x7a40, 0x9177, 0x9d60, 0x9ed2, 0x7344, 0x6f09,
+    0x8170, 0x7511, 0x5ffd, 0x60da, 0x9aa8, 0x72db, 0x8fbc, 0x003f,
+    /* lead byte ba */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6b64, 0x9803, 0x4eca, 0x56f0, 0x5764, 0x58be, 0x5a5a,
+    0x6068, 0x61c7, 0x660f, 0x6606, 0x6839, 0x68b1, 0x6df7, 0x75d5,
+    0x7d3a, 0x826e, 0x9b42, 0x4e9b, 0x4f50, 0x53c9, 0x5506, 0x5d6f,
+    0x5de6, 0x5dee, 0x67fb, 0x6c99, 0x7473, 0x7802, 0x8a50, 0x9396,
+    0x88df, 0x5750, 0x5ea7, 0x632b, 0x50b5, 0x50ac, 0x518d, 0x6700,
+    0x54c9, 0x585e, 0x59bb, 0x5bb0, 0x5f69, 0x624d, 0x63a1, 0x683d,
+    0x6b73, 0x6e08, 0x707d, 0x91c7, 0x7280, 0x7815, 0x7826, 0x796d,
+    0x658e, 0x7d30, 0x83dc, 0x88c1, 0x8f09, 0x969b, 0x5264, 0x5728,
+    0x6750, 0x7f6a, 0x8ca1, 0x51b4, 0x5742, 0x962a, 0x583a, 0x698a,
+    0x80b4, 0x54b2, 0x5d0e, 0x57fc, 0x7895, 0x9dfa, 0x4f5c, 0x524a,
+    0x548b, 0x643e, 0x6628, 0x6714, 0x67f5, 0x7a84, 0x7b56, 0x7d22,
+    0x932f, 0x685c, 0x9bad, 0x7b39, 0x5319, 0x518a, 0x5237, 0x003f,
+    /* lead byte bb */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x5bdf, 0x62f6, 0x64ae, 0x64e6, 0x672d, 0x6bba, 0x85a9,
+    0x96d1, 0x7690, 0x9bd6, 0x634c, 0x9306, 0x9bab, 0x76bf, 0x6652,
+    0x4e09, 0x5098, 0x53c2, 0x5c71, 0x60e8, 0x6492, 0x6563, 0x685f,
+    0x71e6, 0x73ca, 0x7523, 0x7b97, 0x7e82, 0x8695, 0x8b83, 0x8cdb,
+    0x9178, 0x9910, 0x65ac, 0x66ab, 0x6b8b, 0x4ed5, 0x4ed4, 0x4f3a,
+    0x4f7f, 0x523a, 0x53f8, 0x53f2, 0x55e3, 0x56db, 0x58eb, 0x59cb,
+    0x59c9, 0x59ff, 0x5b50, 0x5c4d, 0x5e02, 0x5e2b, 0x5fd7, 0x601d,
+    0x6307, 0x652f, 0x5b5c, 0x65af, 0x65bd, 0x65e8, 0x679d, 0x6b62,
+    0x6b7b, 0x6c0f, 0x7345, 0x7949, 0x79c1, 0x7cf8, 0x7d19, 0x7d2b,
+    0x80a2, 0x8102, 0x81f3, 0x8996, 0x8a5e, 0x8a69, 0x8a66, 0x8a8c,
+    0x8aee, 0x8cc7, 0x8cdc, 0x96cc, 0x98fc, 0x6b6f, 0x4e8b, 0x4f3c,
+    0x4f8d, 0x5150, 0x5b57, 0x5bfa, 0x6148, 0x6301, 0x6642, 0x003f,
+    /* lead byte bc */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6b21, 0x6ecb, 0x6cbb, 0x723e, 0x74bd, 0x75d4, 0x78c1,
+    0x793a, 0x800c, 0x8033, 0x81ea, 0x8494, 0x8f9e, 0x6c50, 0x9e7f,
+    0x5f0f, 0x8b58, 0x9d2b, 0x7afa, 0x8ef8, 0x5b8d, 0x96eb, 0x4e03,
+    0x53f1, 0x57f7, 0x5931, 0x5ac9, 0x5ba4, 0x6089, 0x6e7f, 0x6f06,
+    0x75be, 0x8cea, 0x5b9f, 0x8500, 0x7be0, 0x5072, 0x67f4, 0x829d,
+    0x5c61, 0x854a, 0x7e1e, 0x820e, 0x5199, 0x5c04, 0x6368, 0x8d66,
+    0x659c, 0x716e, 0x793e, 0x7d17, 0x8005, 0x8b1d, 0x8eca, 0x906e,
+    0x86c7, 0x90aa, 0x501f, 0x52fa, 0x5c3a, 0x6753, 0x707c, 0x7235,
+    0x914c, 0x91c8, 0x932b, 0x82e5, 0x5bc2, 0x5f31, 0x60f9, 0x4e3b,
+    0x53d6, 0x5b88, 0x624b, 0x6731, 0x6b8a, 0x72e9, 0x73e0, 0x7a2e,
+    0x816b, 0x8da3, 0x9152, 0x9996, 0x5112, 0x53d7, 0x546a, 0x5bff,
+    0x6388, 0x6a39, 0x7dac, 0x9700, 0x56da, 0x53ce, 0x5468, 0x003f,
+    /* lead byte bd */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x5b97, 0x5c31, 0x5dde, 0x4fee, 0x6101, 0x62fe, 0x6d32,
+    0x79c0, 0x79cb, 0x7d42, 0x7e4d, 0x7fd2, 0x81ed, 0x821f, 0x8490,
+    0x8846, 0x8972, 0x8b90, 0x8e74, 0x8f2f, 0x9031, 0x914b, 0x916c,
+    0x96c6, 0x919c, 0x4ec0, 0x4f4f, 0x5145, 0x5341, 0x5f93, 0x620e,
+    0x67d4, 0x6c41, 0x6e0b, 0x7363, 0x7e26, 0x91cd, 0x9283, 0x53d4,
+    0x5919, 0x5bbf, 0x6dd1, 0x795d, 0x7e2e, 0x7c9b, 0x587e, 0x719f,
+    0x51fa, 0x8853, 0x8ff0, 0x4fca, 0x5cfb, 0x6625, 0x77ac, 0x7ae3,
+    0x821c, 0x99ff, 0x51c6, 0x5faa, 0x65ec, 0x696f, 0x6b89, 0x6df3,
+    0x6e96, 0x6f64, 0x76fe, 0x7d14, 0x5de1, 0x9075, 0x9187, 0x9806,
+    0x51e6, 0x521d, 0x6240, 0x6691, 0x66d9, 0x6e1a, 0x5eb6, 0x7dd2,
+    0x7f72, 0x66f8, 0x85af, 0x85f7, 0x8af8, 0x52a9, 0x53d9, 0x5973,
+    0x5e8f, 0x5f90, 0x6055, 0x92e4, 0x9664, 0x50b7, 0x511f, 0x003f,
+    /* lead byte be */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x52dd, 0x5320, 0x5347, 0x53ec, 0x54e8, 0x5546, 0x5531,
+    0x5617, 0x5968, 0x59be, 0x5a3c, 0x5bb5, 0x5c06, 0x5c0f, 0x5c11,
+    0x5c1a, 0x5e84, 0x5e8a, 0x5ee0, 0x5f70, 0x627f, 0x6284, 0x62db,
+    0x638c, 0x6377, 0x6607, 0x660c, 0x662d, 0x6676, 0x677e, 0x68a2,
+    0x6a1f, 0x6a35, 0x6cbc, 0x6d88, 0x6e09, 0x6e58, 0x713c, 0x7126,
+    0x7167, 0x75c7, 0x7701, 0x785d, 0x7901, 0x7965, 0x79f0, 0x7ae0,
+    0x7b11, 0x7ca7, 0x7d39, 0x8096, 0x83d6, 0x848b, 0x8549, 0x885d,
+    0x88f3, 0x8a1f, 0x8a3c, 0x8a54, 0x8a73, 0x8c61, 0x8cde, 0x91a4,
+    0x9266, 0x937e, 0x9418, 0x969c, 0x9798, 0x4e0a, 0x4e08, 0x4e1e,
+    0x4e57, 0x5197, 0x5270, 0x57ce, 0x5834, 0x58cc, 0x5b22, 0x5e38,
+    0x60c5, 0x64fe, 0x6761, 0x6756, 0x6d44, 0x72b6, 0x7573, 0x7a63,
+    0x84b8, 0x8b72, 0x91b8, 0x9320, 0x5631, 0x57f4, 0x98fe, 0x003f,
+    /* lead byte bf */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x62ed, 0x690d, 0x6b96, 0x71ed, 0x7e54, 0x8077, 0x8272,
+    0x89e6, 0x98df, 0x8755, 0x8fb1, 0x5c3b, 0x4f38, 0x4fe1, 0x4fb5,
+    0x5507, 0x5a20, 0x5bdd, 0x5be9, 0x5fc3, 0x614e, 0x632f, 0x65b0,
+    0x664b, 0x68ee, 0x699b, 0x6d78, 0x6df1, 0x7533, 0x75b9, 0x771f,
+    0x795e, 0x79e6, 0x7d33, 0x81e3, 0x82af, 0x85aa, 0x89aa, 0x8a3a,
+    0x8eab, 0x8f9b, 0x9032, 0x91dd, 0x9707, 0x4eba, 0x4ec1, 0x5203,
+    0x5875, 0x58ec, 0x5c0b, 0x751a, 0x5c3d, 0x814e, 0x8a0a, 0x8fc5,
+    0x9663, 0x976d, 0x7b25, 0x8acf, 0x9808, 0x9162, 0x56f3, 0x53a8,
+    0x9017, 0x5439, 0x5782, 0x5e25, 0x63a8, 0x6c34, 0x708a, 0x7761,
+    0x7c8b, 0x7fe0, 0x8870, 0x9042, 0x9154, 0x9310, 0x9318, 0x968f,
+    0x745e, 0x9ac4, 0x5d07, 0x5d69, 0x6570, 0x67a2, 0x8da8, 0x96db,
+    0x636e, 0x6749, 0x6919, 0x83c5, 0x9817, 0x96c0, 0x88fe, 0x003f,
+    /* lead byte c0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6f84, 0x647a, 0x5bf8, 0x4e16, 0x702c, 0x755d, 0x662f,
+    0x51c4, 0x5236, 0x52e2, 0x59d3, 0x5f81, 0x6027, 0x6210, 0x653f,
+    0x6574, 0x661f, 0x6674, 0x68f2, 0x6816, 0x6b63, 0x6e05, 0x7272,
+    0x751f, 0x76db, 0x7cbe, 0x8056, 0x58f0, 0x88fd, 0x897f, 0x8aa0,
+    0x8a93, 0x8acb, 0x901d, 0x9192, 0x9752, 0x9759, 0x6589, 0x7a0e,
+    0x8106, 0x96bb, 0x5e2d, 0x60dc, 0x621a, 0x65a5, 0x6614, 0x6790,
+    0x77f3, 0x7a4d, 0x7c4d, 0x7e3e, 0x810a, 0x8cac, 0x8d64, 0x8de1,
+    0x8e5f, 0x78a9, 0x5207, 0x62d9, 0x63a5, 0x6442, 0x6298, 0x8a2d,
+    0x7a83, 0x7bc0, 0x8aac, 0x96ea, 0x7d76, 0x820c, 0x8749, 0x4ed9,
+    0x5148, 0x5343, 0x5360, 0x5ba3, 0x5c02, 0x5c16, 0x5ddd, 0x6226,
+    0x6247, 0x64b0, 0x6813, 0x6834, 0x6cc9, 0x6d45, 0x6d17, 0x67d3,
+    0x6f5c, 0x714e, 0x717d, 0x65cb, 0x7a7f, 0x7bad, 0x7dda, 0x003f,
+    /* lead byte c1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7e4a, 0x7fa8, 0x817a, 0x821b, 0x8239, 0x85a6, 0x8a6e,
+    0x8cce, 0x8df5, 0x9078, 0x9077, 0x92ad, 0x9291, 0x9583, 0x9bae,
+    0x524d, 0x5584, 0x6f38, 0x7136, 0x5168, 0x7985, 0x7e55, 0x81b3,
+    0x7cce, 0x564c, 0x5851, 0x5ca8, 0x63aa, 0x66fe, 0x66fd, 0x695a,
+    0x72d9, 0x758f, 0x758e, 0x790e, 0x7956, 0x79df, 0x7c97, 0x7d20,
+    0x7d44, 0x8607, 0x8a34, 0x963b, 0x9061, 0x9f20, 0x50e7, 0x5275,
+    0x53cc, 0x53e2, 0x5009, 0x55aa, 0x58ee, 0x594f, 0x723d, 0x5b8b,
+    0x5c64, 0x531d, 0x60e3, 0x60f3, 0x635c, 0x6383, 0x633f, 0x63bb,
+    0x64cd, 0x65e9, 0x66f9, 0x5de3, 0x69cd, 0x69fd, 0x6f15, 0x71e5,
+    0x4e89, 0x75e9, 0x76f8, 0x7a93, 0x7cdf, 0x7dcf, 0x7d9c, 0x8061,
+    0x8349, 0x8358, 0x846c, 0x84bc, 0x85fb, 0x88c5, 0x8d70, 0x9001,
+    0x906d, 0x9397, 0x971c, 0x9a12, 0x50cf, 0x5897, 0x618e, 0x003f,
+    /* lead byte c2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x81d3, 0x8535, 0x8d08, 0x9020, 0x4fc3, 0x5074, 0x5247,
+    0x5373, 0x606f, 0x6349, 0x675f, 0x6e2c, 0x8db3, 0x901f, 0x4fd7,
+    0x5c5e, 0x8cca, 0x65cf, 0x7d9a, 0x5352, 0x8896, 0x5176, 0x63c3,
+    0x5b58, 0x5b6b, 0x5c0a, 0x640d, 0x6751, 0x905c, 0x4ed6, 0x591a,
+    0x592a, 0x6c70, 0x8a51, 0x553e, 0x5815, 0x59a5, 0x60f0, 0x6253,
+    0x67c1, 0x8235, 0x6955, 0x9640, 0x99c4, 0x9a28, 0x4f53, 0x5806,
+    0x5bfe, 0x8010, 0x5cb1, 0x5e2f, 0x5f85, 0x6020, 0x614b, 0x6234,
+    0x66ff, 0x6cf0, 0x6ede, 0x80ce, 0x817f, 0x82d4, 0x888b, 0x8cb8,
+    0x9000, 0x902e, 0x968a, 0x9edb, 0x9bdb, 0x4ee3, 0x53f0, 0x5927,
+    0x7b2c, 0x918d, 0x984c, 0x9df9, 0x6edd, 0x7027, 0x5353, 0x5544,
+    0x5b85, 0x6258, 0x629e, 0x62d3, 0x6ca2, 0x6fef, 0x7422, 0x8a17,
+    0x9438, 0x6fc1, 0x8afe, 0x8338, 0x51e7, 0x86f8, 0x53ea, 0x003f,
+    /* lead byte c3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x53e9, 0x4f46, 0x9054, 0x8fb0, 0x596a, 0x8131, 0x5dfd,
+    0x7aea, 0x8fbf, 0x68da, 0x8c37, 0x72f8, 0x9c48, 0x6a3d, 0x8ab0,
+    0x4e39, 0x5358, 0x5606, 0x5766, 0x62c5, 0x63a2, 0x65e6, 0x6b4e,
+    0x6de1, 0x6e5b, 0x70ad, 0x77ed, 0x7aef, 0x7baa, 0x7dbb, 0x803d,
+    0x80c6, 0x86cb, 0x8a95, 0x935b, 0x56e3, 0x58c7, 0x5f3e, 0x65ad,
+    0x6696, 0x6a80, 0x6bb5, 0x7537, 0x8ac7, 0x5024, 0x77e5, 0x5730,
+    0x5f1b, 0x6065, 0x667a, 0x6c60, 0x75f4, 0x7a1a, 0x7f6e, 0x81f4,
+    0x8718, 0x9045, 0x99b3, 0x7bc9, 0x755c, 0x7af9, 0x7b51, 0x84c4,
+    0x9010, 0x79e9, 0x7a92, 0x8336, 0x5ae1, 0x7740, 0x4e2d, 0x4ef2,
+    0x5b99, 0x5fe0, 0x62bd, 0x663c, 0x67f1, 0x6ce8, 0x866b, 0x8877,
+    0x8a3b, 0x914e, 0x92f3, 0x99d0, 0x6a17, 0x7026, 0x732a, 0x82e7,
+    0x8457, 0x8caf, 0x4e01, 0x5146, 0x51cb, 0x558b, 0x5bf5, 0x003f,
+    /* lead byte c4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x5e16, 0x5e33, 0x5e81, 0x5f14, 0x5f35, 0x5f6b, 0x5fb4,
+    0x61f2, 0x6311, 0x66a2, 0x671d, 0x6f6e, 0x7252, 0x753a, 0x773a,
+    0x8074, 0x8139, 0x8178, 0x8776, 0x8abf, 0x8adc, 0x8d85, 0x8df3,
+    0x929a, 0x9577, 0x9802, 0x9ce5, 0x52c5, 0x6357, 0x76f4, 0x6715,
+    0x6c88, 0x73cd, 0x8cc3, 0x93ae, 0x9673, 0x6d25, 0x589c, 0x690e,
+    0x69cc, 0x8ffd, 0x939a, 0x75db, 0x901a, 0x585a, 0x6802, 0x63b4,
+    0x69fb, 0x4f43, 0x6f2c, 0x67d8, 0x8fbb, 0x8526, 0x7db4, 0x9354,
+    0x693f, 0x6f70, 0x576a, 0x58f7, 0x5b2c, 0x7d2c, 0x722a, 0x540a,
+    0x91e3, 0x9db4, 0x4ead, 0x4f4e, 0x505c, 0x5075, 0x5243, 0x8c9e,
+    0x5448, 0x5824, 0x5b9a, 0x5e1d, 0x5e95, 0x5ead, 0x5ef7, 0x5f1f,
+    0x608c, 0x62b5, 0x633a, 0x63d0, 0x68af, 0x6c40, 0x7887, 0x798e,
+    0x7a0b, 0x7de0, 0x8247, 0x8a02, 0x8ae6, 0x8e44, 0x9013, 0x003f,
+    /* lead byte c5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x90b8, 0x912d, 0x91d8, 0x9f0e, 0x6ce5, 0x6458, 0x64e2,
+    0x6575, 0x6ef4, 0x7684, 0x7b1b, 0x9069, 0x93d1, 0x6eba, 0x54f2,
+    0x5fb9, 0x64a4, 0x8f4d, 0x8fed, 0x9244, 0x5178, 0x586b, 0x5929,
+    0x5c55, 0x5e97, 0x6dfb, 0x7e8f, 0x751c, 0x8cbc, 0x8ee2, 0x985b,
+    0x70b9, 0x4f1d, 0x6bbf, 0x6fb1, 0x7530, 0x96fb, 0x514e, 0x5410,
+    0x5835, 0x5857, 0x59ac, 0x5c60, 0x5f92, 0x6597, 0x675c, 0x6e21,
+    0x767b, 0x83df, 0x8ced, 0x9014, 0x90fd, 0x934d, 0x7825, 0x783a,
+    0x52aa, 0x5ea6, 0x571f, 0x5974, 0x6012, 0x5012, 0x515a, 0x51ac,
+    0x51cd, 0x5200, 0x5510, 0x5854, 0x5858, 0x5957, 0x5b95, 0x5cf6,
+    0x5d8b, 0x60bc, 0x6295, 0x642d, 0x6771, 0x6843, 0x68bc, 0x68df,
+    0x76d7, 0x6dd8, 0x6e6f, 0x6d9b, 0x706f, 0x71c8, 0x5f53, 0x75d8,
+    0x7977, 0x7b49, 0x7b54, 0x7b52, 0x7cd6, 0x7d71, 0x5230, 0x003f,
+    /* lead byte c6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8463, 0x8569, 0x85e4, 0x8a0e, 0x8b04, 0x8c46, 0x8e0f,
+    0x9003, 0x900f, 0x9419, 0x9676, 0x982d, 0x9a30, 0x95d8, 0x50cd,
+    0x52d5, 0x540c, 0x5802, 0x5c0e, 0x61a7, 0x649e, 0x6d1e, 0x77b3,
+    0x7ae5, 0x80f4, 0x8404, 0x9053, 0x9285, 0x5ce0, 0x9d07, 0x533f,
+    0x5f97, 0x5fb3, 0x6d9c, 0x7279, 0x7763, 0x79bf, 0x7be4, 0x6bd2,
+    0x72ec, 0x8aad, 0x6803, 0x6a61, 0x51f8, 0x7a81, 0x6934, 0x5c4a,
+    0x9cf6, 0x82eb, 0x5bc5, 0x9149, 0x701e, 0x5678, 0x5c6f, 0x60c7,
+    0x6566, 0x6c8c, 0x8c5a, 0x9041, 0x9813, 0x5451, 0x66c7, 0x920d,
+    0x5948, 0x90a3, 0x5185, 0x4e4d, 0x51ea, 0x8599, 0x8b0e, 0x7058,
+    0x637a, 0x934b, 0x6962, 0x99b4, 0x7e04, 0x7577, 0x5357, 0x6960,
+    0x8edf, 0x96e3, 0x6c5d, 0x4e8c, 0x5c3c, 0x5f10, 0x8fe9, 0x5302,
+    0x8cd1, 0x8089, 0x8679, 0x5eff, 0x65e5, 0x4e73, 0x5165, 0x003f,
+    /* lead byte c7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x5982, 0x5c3f, 0x97ee, 0x4efb, 0x598a, 0x5fcd, 0x8a8d,
+    0x6fe1, 0x79b0, 0x7962, 0x5be7, 0x8471, 0x732b, 0x71b1, 0x5e74,
+    0x5ff5, 0x637b, 0x649a, 0x71c3, 0x7c98, 0x4e43, 0x5efc, 0x4e4b,
+    0x57dc, 0x56a2, 0x60a9, 0x6fc3, 0x7d0d, 0x80fd, 0x8133, 0x81bf,
+    0x8fb2, 0x8997, 0x86a4, 0x5df4, 0x628a, 0x64ad, 0x8987, 0x6777,
+    0x6ce2, 0x6d3e, 0x7436, 0x7834, 0x5a46, 0x7f75, 0x82ad, 0x99ac,
+    0x4ff3, 0x5ec3, 0x62dd, 0x6392, 0x6557, 0x676f, 0x76c3, 0x724c,
+    0x80cc, 0x80ba, 0x8f29, 0x914d, 0x500d, 0x57f9, 0x5a92, 0x6885,
+    0x6973, 0x7164, 0x72fd, 0x8cb7, 0x58f2, 0x8ce0, 0x966a, 0x9019,
+    0x877f, 0x79e4, 0x77e7, 0x8429, 0x4f2f, 0x5265, 0x535a, 0x62cd,
+    0x67cf, 0x6cca, 0x767d, 0x7b94, 0x7c95, 0x8236, 0x8584, 0x8feb,
+    0x66dd, 0x6f20, 0x7206, 0x7e1b, 0x83ab, 0x99c1, 0x9ea6, 0x003f,
+    /* lead byte c8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x51fd, 0x7bb1, 0x7872, 0x7bb8, 0x8087, 0x7b48, 0x6ae8,
+    0x5e61, 0x808c, 0x7551, 0x7560, 0x516b, 0x9262, 0x6e8c, 0x767a,
+    0x9197, 0x9aea, 0x4f10, 0x7f70, 0x629c, 0x7b4f, 0x95a5, 0x9ce9,
+    0x567a, 0x5859, 0x86e4, 0x96bc, 0x4f34, 0x5224, 0x534a, 0x53cd,
+    0x53db, 0x5e06, 0x642c, 0x6591, 0x677f, 0x6c3e, 0x6c4e, 0x7248,
+    0x72af, 0x73ed, 0x7554, 0x7e41, 0x822c, 0x85e9, 0x8ca9, 0x7bc4,
+    0x91c6, 0x7169, 0x9812, 0x98ef, 0x633d, 0x6669, 0x756a, 0x76e4,
+    0x78d0, 0x8543, 0x86ee, 0x532a, 0x5351, 0x5426, 0x5983, 0x5e87,
+    0x5f7c, 0x60b2, 0x6249, 0x6279, 0x62ab, 0x6590, 0x6bd4, 0x6ccc,
+    0x75b2, 0x76ae, 0x7891, 0x79d8, 0x7dcb, 0x7f77, 0x80a5, 0x88ab,
+    0x8ab9, 0x8cbb, 0x907f, 0x975e, 0x98db, 0x6a0b, 0x7c38, 0x5099,
+    0x5c3e, 0x5fae, 0x6787, 0x6bd8, 0x7435, 0x7709, 0x7f8e, 0x003f,
+    /* lead byte c9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9f3b, 0x67ca, 0x7a17, 0x5339, 0x758b, 0x9aed, 0x5f66,
+    0x819d, 0x83f1, 0x8098, 0x5f3c, 0x5fc5, 0x7562, 0x7b46, 0x903c,
+    0x6867, 0x59eb, 0x5a9b, 0x7d10, 0x767e, 0x8b2c, 0x4ff5, 0x5f6a,
+    0x6a19, 0x6c37, 0x6f02, 0x74e2, 0x7968, 0x8868, 0x8a55, 0x8c79,
+    0x5edf, 0x63cf, 0x75c5, 0x79d2, 0x82d7, 0x9328, 0x92f2, 0x849c,
+    0x86ed, 0x9c2d, 0x54c1, 0x5f6c, 0x658c, 0x6d5c, 0x7015, 0x8ca7,
+    0x8cd3, 0x983b, 0x654f, 0x74f6, 0x4e0d, 0x4ed8, 0x57e0, 0x592b,
+    0x5a66, 0x5bcc, 0x51a8, 0x5e03, 0x5e9c, 0x6016, 0x6276, 0x6577,
+    0x65a7, 0x666e, 0x6d6e, 0x7236, 0x7b26, 0x8150, 0x819a, 0x8299,
+    0x8b5c, 0x8ca0, 0x8ce6, 0x8d74, 0x961c, 0x9644, 0x4fae, 0x64ab,
+    0x6b66, 0x821e, 0x8461, 0x856a, 0x90e8, 0x5c01, 0x6953, 0x98a8,
+    0x847a, 0x8557, 0x4f0f, 0x526f, 0x5fa9, 0x5e45, 0x670d, 0x003f,
+    /* lead byte ca */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x798f, 0x8179, 0x8907, 0x8986, 0x6df5, 0x5f17, 0x6255,
+    0x6cb8, 0x4ecf, 0x7269, 0x9b92, 0x5206, 0x543b, 0x5674, 0x58b3,
+    0x61a4, 0x626e, 0x711a, 0x596e, 0x7c89, 0x7cde, 0x7d1b, 0x96f0,
+    0x6587, 0x805e, 0x4e19, 0x4f75, 0x5175, 0x5840, 0x5e63, 0x5e73,
+    0x5f0a, 0x67c4, 0x4e26, 0x853d, 0x9589, 0x965b, 0x7c73, 0x9801,
+    0x50fb, 0x58c1, 0x7656, 0x78a7, 0x5225, 0x77a5, 0x8511, 0x7b86,
+    0x504f, 0x5909, 0x7247, 0x7bc7, 0x7de8, 0x8fba, 0x8fd4, 0x904d,
+    0x4fbf, 0x52c9, 0x5a29, 0x5f01, 0x97ad, 0x4fdd, 0x8217, 0x92ea,
+    0x5703, 0x6355, 0x6b69, 0x752b, 0x88dc, 0x8f14, 0x7a42, 0x52df,
+    0x5893, 0x6155, 0x620a, 0x66ae, 0x6bcd, 0x7c3f, 0x83e9, 0x5023,
+    0x4ff8, 0x5305, 0x5446, 0x5831, 0x5949, 0x5b9d, 0x5cf0, 0x5cef,
+    0x5d29, 0x5e96, 0x62b1, 0x6367, 0x653e, 0x65b9, 0x670b, 0x003f,
+    /* lead byte cb */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6cd5, 0x6ce1, 0x70f9, 0x7832, 0x7e2b, 0x80de, 0x82b3,
+    0x840c, 0x84ec, 0x8702, 0x8912, 0x8a2a, 0x8c4a, 0x90a6, 0x92d2,
+    0x98fd, 0x9cf3, 0x9d6c, 0x4e4f, 0x4ea1, 0x508d, 0x5256, 0x574a,
+    0x59a8, 0x5e3d, 0x5fd8, 0x5fd9, 0x623f, 0x66b4, 0x671b, 0x67d0,
+    0x68d2, 0x5192, 0x7d21, 0x80aa, 0x81a8, 0x8b00, 0x8c8c, 0x8cbf,
+    0x927e, 0x9632, 0x5420, 0x982c, 0x5317, 0x50d5, 0x535c, 0x58a8,
+    0x64b2, 0x6734, 0x7267, 0x7766, 0x7a46, 0x91e6, 0x52c3, 0x6ca1,
+    0x6b86, 0x5800, 0x5e4c, 0x5954, 0x672c, 0x7ffb, 0x51e1, 0x76c6,
+    0x6469, 0x78e8, 0x9b54, 0x9ebb, 0x57cb, 0x59b9, 0x6627, 0x679a,
+    0x6bce, 0x54e9, 0x69d9, 0x5e55, 0x819c, 0x6795, 0x9baa, 0x67fe,
+    0x9c52, 0x685d, 0x4ea6, 0x4fe3, 0x53c8, 0x62b9, 0x672b, 0x6cab,
+    0x8fc4, 0x4fad, 0x7e6d, 0x9ebf, 0x4e07, 0x6162, 0x6e80, 0x003f,
+    /* lead byte cc */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6f2b, 0x8513, 0x5473, 0x672a, 0x9b45, 0x5df3, 0x7b95,
+    0x5cac, 0x5bc6, 0x871c, 0x6e4a, 0x84d1, 0x7a14, 0x8108, 0x5999,
+    0x7c8d, 0x6c11, 0x7720, 0x52d9, 0x5922, 0x7121, 0x725f, 0x77db,
+    0x9727, 0x9d61, 0x690b, 0x5a7f, 0x5a18, 0x51a5, 0x540d, 0x547d,
+    0x660e, 0x76df, 0x8ff7, 0x9298, 0x9cf4, 0x59ea, 0x725d, 0x6ec5,
+    0x514d, 0x68c9, 0x7dbf, 0x7dec, 0x9762, 0x9eba, 0x6478, 0x6a21,
+    0x8302, 0x5984, 0x5b5f, 0x6bdb, 0x731b, 0x76f2, 0x7db2, 0x8017,
+    0x8499, 0x5132, 0x6728, 0x9ed9, 0x76ee, 0x6762, 0x52ff, 0x9905,
+    0x5c24, 0x623b, 0x7c7e, 0x8cb0, 0x554f, 0x60b6, 0x7d0b, 0x9580,
+    0x5301, 0x4e5f, 0x51b6, 0x591c, 0x723a, 0x8036, 0x91ce, 0x5f25,
+    0x77e2, 0x5384, 0x5f79, 0x7d04, 0x85ac, 0x8a33, 0x8e8d, 0x9756,
+    0x67f3, 0x85ae, 0x9453, 0x6109, 0x6108, 0x6cb9, 0x7652, 0x003f,
+    /* lead byte cd */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8aed, 0x8f38, 0x552f, 0x4f51, 0x512a, 0x52c7, 0x53cb,
+    0x5ba5, 0x5e7d, 0x60a0, 0x6182, 0x63d6, 0x6709, 0x67da, 0x6e67,
+    0x6d8c, 0x7336, 0x7337, 0x7531, 0x7950, 0x88d5, 0x8a98, 0x904a,
+    0x9091, 0x90f5, 0x96c4, 0x878d, 0x5915, 0x4e88, 0x4f59, 0x4e0e,
+    0x8a89, 0x8f3f, 0x9810, 0x50ad, 0x5e7c, 0x5996, 0x5bb9, 0x5eb8,
+    0x63da, 0x63fa, 0x64c1, 0x66dc, 0x694a, 0x69d8, 0x6d0b, 0x6eb6,
+    0x7194, 0x7528, 0x7aaf, 0x7f8a, 0x8000, 0x8449, 0x84c9, 0x8981,
+    0x8b21, 0x8e0a, 0x9065, 0x967d, 0x990a, 0x617e, 0x6291, 0x6b32,
+    0x6c83, 0x6d74, 0x7fcc, 0x7ffc, 0x6dc0, 0x7f85, 0x87ba, 0x88f8,
+    0x6765, 0x83b1, 0x983c, 0x96f7, 0x6d1b, 0x7d61, 0x843d, 0x916a,
+    0x4e71, 0x5375, 0x5d50, 0x6b04, 0x6feb, 0x85cd, 0x862d, 0x89a7,
+    0x5229, 0x540f, 0x5c65, 0x674e, 0x68a8, 0x7406, 0x7483, 0x003f,
+    /* lead byte ce */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x75e2, 0x88cf, 0x88e1, 0x91cc, 0x96e2, 0x9678, 0x5f8b,
+    0x7387, 0x7acb, 0x844e, 0x63a0, 0x7565, 0x5289, 0x6d41, 0x6e9c,
+    0x7409, 0x7559, 0x786b, 0x7c92, 0x9686, 0x7adc, 0x9f8d, 0x4fb6,
+    0x616e, 0x65c5, 0x865c, 0x4e86, 0x4eae, 0x50da, 0x4e21, 0x51cc,
+    0x5bee, 0x6599, 0x6881, 0x6dbc, 0x731f, 0x7642, 0x77ad, 0x7a1c,
+    0x7ce7, 0x826f, 0x8ad2, 0x907c, 0x91cf, 0x9675, 0x9818, 0x529b,
+    0x7dd1, 0x502b, 0x5398, 0x6797, 0x6dcb, 0x71d0, 0x7433, 0x81e8,
+    0x8f2a, 0x96a3, 0x9c57, 0x9e9f, 0x7460, 0x5841, 0x6d99, 0x7d2f,
+    0x985e, 0x4ee4, 0x4f36, 0x4f8b, 0x51b7, 0x52b1, 0x5dba, 0x601c,
+    0x73b2, 0x793c, 0x82d3, 0x9234, 0x96b7, 0x96f6, 0x970a, 0x9e97,
+    0x9f62, 0x66a6, 0x6b74, 0x5217, 0x52a3, 0x70c8, 0x88c2, 0x5ec9,
+    0x604b, 0x6190, 0x6f23, 0x7149, 0x7c3e, 0x7df4, 0x806f, 0x003f,
+    /* lead byte cf */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x84ee, 0x9023, 0x932c, 0x5442, 0x9b6f, 0x6ad3, 0x7089,
+    0x8cc2, 0x8def, 0x9732, 0x52b4, 0x5a41, 0x5eca, 0x5f04, 0x6717,
+    0x697c, 0x6994, 0x6d6a, 0x6f0f, 0x7262, 0x72fc, 0x7bed, 0x8001,
+    0x807e, 0x874b, 0x90ce, 0x516d, 0x9e93, 0x7984, 0x808b, 0x9332,
+    0x8ad6, 0x502d, 0x548c, 0x8a71, 0x6b6a, 0x8cc4, 0x8107, 0x60d1,
+    0x67a0, 0x9df2, 0x4e99, 0x4e98, 0x9c10, 0x8a6b, 0x85c1, 0x8568,
+    0x6900, 0x6e7e, 0x7897, 0x8155, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte d0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x5f0c, 0x4e10, 0x4e15, 0x4e2a, 0x4e31, 0x4e36, 0x4e3c,
+    0x4e3f, 0x4e42, 0x4e56, 0x4e58, 0x4e82, 0x4e85, 0x8c6b, 0x4e8a,
+    0x8212, 0x5f0d, 0x4e8e, 0x4e9e, 0x4e9f, 0x4ea0, 0x4ea2, 0x4eb0,
+    0x4eb3, 0x4eb6, 0x4ece, 0x4ecd, 0x4ec4, 0x4ec6, 0x4ec2, 0x4ed7,
+    0x4ede, 0x4eed, 0x4edf, 0x4ef7, 0x4f09, 0x4f5a, 0x4f30, 0x4f5b,
+    0x4f5d, 0x4f57, 0x4f47, 0x4f76, 0x4f88, 0x4f8f, 0x4f98, 0x4f7b,
+    0x4f69, 0x4f70, 0x4f91, 0x4f6f, 0x4f86, 0x4f96, 0x5118, 0x4fd4,
+    0x4fdf, 0x4fce, 0x4fd8, 0x4fdb, 0x4fd1, 0x4fda, 0x4fd0, 0x4fe4,
+    0x4fe5, 0x501a, 0x5028, 0x5014, 0x502a, 0x5025, 0x5005, 0x4f1c,
+    0x4ff6, 0x5021, 0x5029, 0x502c, 0x4ffe, 0x4fef, 0x5011, 0x5006,
+    0x5043, 0x5047, 0x6703, 0x5055, 0x5050, 0x5048, 0x505a, 0x5056,
+    0x506c, 0x5078, 0x5080, 0x509a, 0x5085, 0x50b4, 0x50b2, 0x003f,
+    /* lead byte d1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x50c9, 0x50ca, 0x50b3, 0x50c2, 0x50d6, 0x50de, 0x50e5,
+    0x50ed, 0x50e3, 0x50ee, 0x50f9, 0x50f5, 0x5109, 0x5101, 0x5102,
+    0x5116, 0x5115, 0x5114, 0x511a, 0x5121, 0x513a, 0x5137, 0x513c,
+    0x513b, 0x513f, 0x5140, 0x5152, 0x514c, 0x5154, 0x5162, 0x7af8,
+    0x5169, 0x516a, 0x516e, 0x5180, 0x5182, 0x56d8, 0x518c, 0x5189,
+    0x518f, 0x5191, 0x5193, 0x5195, 0x5196, 0x51a4, 0x51a6, 0x51a2,
+    0x51a9, 0x51aa, 0x51ab, 0x51b3, 0x51b1, 0x51b2, 0x51b0, 0x51b5,
+    0x51bd, 0x51c5, 0x51c9, 0x51db, 0x51e0, 0x8655, 0x51e9, 0x51ed,
+    0x51f0, 0x51f5, 0x51fe, 0x5204, 0x520b, 0x5214, 0x520e, 0x5227,
+    0x522a, 0x522e, 0x5233, 0x5239, 0x524f, 0x5244, 0x524b, 0x524c,
+    0x525e, 0x5254, 0x526a, 0x5274, 0x5269, 0x5273, 0x527f, 0x527d,
+    0x528d, 0x5294, 0x5292, 0x5271, 0x5288, 0x5291, 0x8fa8, 0x003f,
+    /* lead byte d2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8fa7, 0x52ac, 0x52ad, 0x52bc, 0x52b5, 0x52c1, 0x52cd,
+    0x52d7, 0x52de, 0x52e3, 0x52e6, 0x98ed, 0x52e0, 0x52f3, 0x52f5,
+    0x52f8, 0x52f9, 0x5306, 0x5308, 0x7538, 0x530d, 0x5310, 0x530f,
+    0x5315, 0x531a, 0x5323, 0x532f, 0x5331, 0x5333, 0x5338, 0x5340,
+    0x5346, 0x5345, 0x4e17, 0x5349, 0x534d, 0x51d6, 0x535e, 0x5369,
+    0x536e, 0x5918, 0x537b, 0x5377, 0x5382, 0x5396, 0x53a0, 0x53a6,
+    0x53a5, 0x53ae, 0x53b0, 0x53b6, 0x53c3, 0x7c12, 0x96d9, 0x53df,
+    0x66fc, 0x71ee, 0x53ee, 0x53e8, 0x53ed, 0x53fa, 0x5401, 0x543d,
+    0x5440, 0x542c, 0x542d, 0x543c, 0x542e, 0x5436, 0x5429, 0x541d,
+    0x544e, 0x548f, 0x5475, 0x548e, 0x545f, 0x5471, 0x5477, 0x5470,
+    0x5492, 0x547b, 0x5480, 0x5476, 0x5484, 0x5490, 0x5486, 0x54c7,
+    0x54a2, 0x54b8, 0x54a5, 0x54ac, 0x54c4, 0x54c8, 0x54a8, 0x003f,
+    /* lead byte d3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x54ab, 0x54c2, 0x54a4, 0x54be, 0x54bc, 0x54d8, 0x54e5,
+    0x54e6, 0x550f, 0x5514, 0x54fd, 0x54ee, 0x54ed, 0x54fa, 0x54e2,
+    0x5539, 0x5540, 0x5563, 0x554c, 0x552e, 0x555c, 0x5545, 0x5556,
+    0x5557, 0x5538, 0x5533, 0x555d, 0x5599, 0x5580, 0x54af, 0x558a,
+    0x559f, 0x557b, 0x557e, 0x5598, 0x559e, 0x55ae, 0x557c, 0x5583,
+    0x55a9, 0x5587, 0x55a8, 0x55da, 0x55c5, 0x55df, 0x55c4, 0x55dc,
+    0x55e4, 0x55d4, 0x5614, 0x55f7, 0x5616, 0x55fe, 0x55fd, 0x561b,
+    0x55f9, 0x564e, 0x5650, 0x71df, 0x5634, 0x5636, 0x5632, 0x5638,
+    0x566b, 0x5664, 0x562f, 0x566c, 0x566a, 0x5686, 0x5680, 0x568a,
+    0x56a0, 0x5694, 0x568f, 0x56a5, 0x56ae, 0x56b6, 0x56b4, 0x56c2,
+    0x56bc, 0x56c1, 0x56c3, 0x56c0, 0x56c8, 0x56ce, 0x56d1, 0x56d3,
+    0x56d7, 0x56ee, 0x56f9, 0x5700, 0x56ff, 0x5704, 0x5709, 0x003f,
+    /* lead byte d4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x5708, 0x570b, 0x570d, 0x5713, 0x5718, 0x5716, 0x55c7,
+    0x571c, 0x5726, 0x5737, 0x5738, 0x574e, 0x573b, 0x5740, 0x574f,
+    0x5769, 0x57c0, 0x5788, 0x5761, 0x577f, 0x5789, 0x5793, 0x57a0,
+    0x57b3, 0x57a4, 0x57aa, 0x57b0, 0x57c3, 0x57c6, 0x57d4, 0x57d2,
+    0x57d3, 0x580a, 0x57d6, 0x57e3, 0x580b, 0x5819, 0x581d, 0x5872,
+    0x5821, 0x5862, 0x584b, 0x5870, 0x6bc0, 0x5852, 0x583d, 0x5879,
+    0x5885, 0x58b9, 0x589f, 0x58ab, 0x58ba, 0x58de, 0x58bb, 0x58b8,
+    0x58ae, 0x58c5, 0x58d3, 0x58d1, 0x58d7, 0x58d9, 0x58d8, 0x58e5,
+    0x58dc, 0x58e4, 0x58df, 0x58ef, 0x58fa, 0x58f9, 0x58fb, 0x58fc,
+    0x58fd, 0x5902, 0x590a, 0x5910, 0x591b, 0x68a6, 0x5925, 0x592c,
+    0x592d, 0x5932, 0x5938, 0x593e, 0x7ad2, 0x5955, 0x5950, 0x594e,
+    0x595a, 0x5958, 0x5962, 0x5960, 0x5967, 0x596c, 0x5969, 0x003f,
+    /* lead byte d5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x5978, 0x5981, 0x599d, 0x4f5e, 0x4fab, 0x59a3, 0x59b2,
+    0x59c6, 0x59e8, 0x59dc, 0x598d, 0x59d9, 0x59da, 0x5a25, 0x5a1f,
+    0x5a11, 0x5a1c, 0x5a09, 0x5a1a, 0x5a40, 0x5a6c, 0x5a49, 0x5a35,
+    0x5a36, 0x5a62, 0x5a6a, 0x5a9a, 0x5abc, 0x5abe, 0x5acb, 0x5ac2,
+    0x5abd, 0x5ae3, 0x5ad7, 0x5ae6, 0x5ae9, 0x5ad6, 0x5afa, 0x5afb,
+    0x5b0c, 0x5b0b, 0x5b16, 0x5b32, 0x5ad0, 0x5b2a, 0x5b36, 0x5b3e,
+    0x5b43, 0x5b45, 0x5b40, 0x5b51, 0x5b55, 0x5b5a, 0x5b5b, 0x5b65,
+    0x5b69, 0x5b70, 0x5b73, 0x5b75, 0x5b78, 0x6588, 0x5b7a, 0x5b80,
+    0x5b83, 0x5ba6, 0x5bb8, 0x5bc3, 0x5bc7, 0x5bc9, 0x5bd4, 0x5bd0,
+    0x5be4, 0x5be6, 0x5be2, 0x5bde, 0x5be5, 0x5beb, 0x5bf0, 0x5bf6,
+    0x5bf3, 0x5c05, 0x5c07, 0x5c08, 0x5c0d, 0x5c13, 0x5c20, 0x5c22,
+    0x5c28, 0x5c38, 0x5c39, 0x5c41, 0x5c46, 0x5c4e, 0x5c53, 0x003f,
+    /* lead byte d6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x5c50, 0x5c4f, 0x5b71, 0x5c6c, 0x5c6e, 0x4e62, 0x5c76,
+    0x5c79, 0x5c8c, 0x5c91, 0x5c94, 0x599b, 0x5cab, 0x5cbb, 0x5cb6,
+    0x5cbc, 0x5cb7, 0x5cc5, 0x5cbe, 0x5cc7, 0x5cd9, 0x5ce9, 0x5cfd,
+    0x5cfa, 0x5ced, 0x5d8c, 0x5cea, 0x5d0b, 0x5d15, 0x5d17, 0x5d5c,
+    0x5d1f, 0x5d1b, 0x5d11, 0x5d14, 0x5d22, 0x5d1a, 0x5d19, 0x5d18,
+    0x5d4c, 0x5d52, 0x5d4e, 0x5d4b, 0x5d6c, 0x5d73, 0x5d76, 0x5d87,
+    0x5d84, 0x5d82, 0x5da2, 0x5d9d, 0x5dac, 0x5dae, 0x5dbd, 0x5d90,
+    0x5db7, 0x5dbc, 0x5dc9, 0x5dcd, 0x5dd3, 0x5dd2, 0x5dd6, 0x5ddb,
+    0x5deb, 0x5df2, 0x5df5, 0x5e0b, 0x5e1a, 0x5e19, 0x5e11, 0x5e1b,
+    0x5e36, 0x5e37, 0x5e44, 0x5e43, 0x5e40, 0x5e4e, 0x5e57, 0x5e54,
+    0x5e5f, 0x5e62, 0x5e64, 0x5e47, 0x5e75, 0x5e76, 0x5e7a, 0x9ebc,
+    0x5e7f, 0x5ea0, 0x5ec1, 0x5ec2, 0x5ec8, 0x5ed0, 0x5ecf, 0x003f,
+    /* lead byte d7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x5ed6, 0x5ee3, 0x5edd, 0x5eda, 0x5edb, 0x5ee2, 0x5ee1,
+    0x5ee8, 0x5ee9, 0x5eec, 0x5ef1, 0x5ef3, 0x5ef0, 0x5ef4, 0x5ef8,
+    0x5efe, 0x5f03, 0x5f09, 0x5f5d, 0x5f5c, 0x5f0b, 0x5f11, 0x5f16,
+    0x5f29, 0x5f2d, 0x5f38, 0x5f41, 0x5f48, 0x5f4c, 0x5f4e, 0x5f2f,
+    0x5f51, 0x5f56, 0x5f57, 0x5f59, 0x5f61, 0x5f6d, 0x5f73, 0x5f77,
+    0x5f83, 0x5f82, 0x5f7f, 0x5f8a, 0x5f88, 0x5f91, 0x5f87, 0x5f9e,
+    0x5f99, 0x5f98, 0x5fa0, 0x5fa8, 0x5fad, 0x5fbc, 0x5fd6, 0x5ffb,
+    0x5fe4, 0x5ff8, 0x5ff1, 0x5fdd, 0x60b3, 0x5fff, 0x6021, 0x6060,
+    0x6019, 0x6010, 0x6029, 0x600e, 0x6031, 0x601b, 0x6015, 0x602b,
+    0x6026, 0x600f, 0x603a, 0x605a, 0x6041, 0x606a, 0x6077, 0x605f,
+    0x604a, 0x6046, 0x604d, 0x6063, 0x6043, 0x6064, 0x6042, 0x606c,
+    0x606b, 0x6059, 0x6081, 0x608d, 0x60e7, 0x6083, 0x609a, 0x003f,
+    /* lead byte d8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6084, 0x609b, 0x6096, 0x6097, 0x6092, 0x60a7, 0x608b,
+    0x60e1, 0x60b8, 0x60e0, 0x60d3, 0x60b4, 0x5ff0, 0x60bd, 0x60c6,
+    0x60b5, 0x60d8, 0x614d, 0x6115, 0x6106, 0x60f6, 0x60f7, 0x6100,
+    0x60f4, 0x60fa, 0x6103, 0x6121, 0x60fb, 0x60f1, 0x610d, 0x610e,
+    0x6147, 0x613e, 0x6128, 0x6127, 0x614a, 0x613f, 0x613c, 0x612c,
+    0x6134, 0x613d, 0x6142, 0x6144, 0x6173, 0x6177, 0x6158, 0x6159,
+    0x615a, 0x616b, 0x6174, 0x616f, 0x6165, 0x6171, 0x615f, 0x615d,
+    0x6153, 0x6175, 0x6199, 0x6196, 0x6187, 0x61ac, 0x6194, 0x619a,
+    0x618a, 0x6191, 0x61ab, 0x61ae, 0x61cc, 0x61ca, 0x61c9, 0x61f7,
+    0x61c8, 0x61c3, 0x61c6, 0x61ba, 0x61cb, 0x7f79, 0x61cd, 0x61e6,
+    0x61e3, 0x61f6, 0x61fa, 0x61f4, 0x61ff, 0x61fd, 0x61fc, 0x61fe,
+    0x6200, 0x6208, 0x6209, 0x620d, 0x620c, 0x6214, 0x621b, 0x003f,
+    /* lead byte d9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x621e, 0x6221, 0x622a, 0x622e, 0x6230, 0x6232, 0x6233,
+    0x6241, 0x624e, 0x625e, 0x6263, 0x625b, 0x6260, 0x6268, 0x627c,
+    0x6282, 0x6289, 0x627e, 0x6292, 0x6293, 0x6296, 0x62d4, 0x6283,
+    0x6294, 0x62d7, 0x62d1, 0x62bb, 0x62cf, 0x62ff, 0x62c6, 0x64d4,
+    0x62c8, 0x62dc, 0x62cc, 0x62ca, 0x62c2, 0x62c7, 0x629b, 0x62c9,
+    0x630c, 0x62ee, 0x62f1, 0x6327, 0x6302, 0x6308, 0x62ef, 0x62f5,
+    0x6350, 0x633e, 0x634d, 0x641c, 0x634f, 0x6396, 0x638e, 0x6380,
+    0x63ab, 0x6376, 0x63a3, 0x638f, 0x6389, 0x639f, 0x63b5, 0x636b,
+    0x6369, 0x63be, 0x63e9, 0x63c0, 0x63c6, 0x63e3, 0x63c9, 0x63d2,
+    0x63f6, 0x63c4, 0x6416, 0x6434, 0x6406, 0x6413, 0x6426, 0x6436,
+    0x651d, 0x6417, 0x6428, 0x640f, 0x6467, 0x646f, 0x6476, 0x644e,
+    0x652a, 0x6495, 0x6493, 0x64a5, 0x64a9, 0x6488, 0x64bc, 0x003f,
+    /* lead byte da */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x64da, 0x64d2, 0x64c5, 0x64c7, 0x64bb, 0x64d8, 0x64c2,
+    0x64f1, 0x64e7, 0x8209, 0x64e0, 0x64e1, 0x62ac, 0x64e3, 0x64ef,
+    0x652c, 0x64f6, 0x64f4, 0x64f2, 0x64fa, 0x6500, 0x64fd, 0x6518,
+    0x651c, 0x6505, 0x6524, 0x6523, 0x652b, 0x6534, 0x6535, 0x6537,
+    0x6536, 0x6538, 0x754b, 0x6548, 0x6556, 0x6555, 0x654d, 0x6558,
+    0x655e, 0x655d, 0x6572, 0x6578, 0x6582, 0x6583, 0x8b8a, 0x659b,
+    0x659f, 0x65ab, 0x65b7, 0x65c3, 0x65c6, 0x65c1, 0x65c4, 0x65cc,
+    0x65d2, 0x65db, 0x65d9, 0x65e0, 0x65e1, 0x65f1, 0x6772, 0x660a,
+    0x6603, 0x65fb, 0x6773, 0x6635, 0x6636, 0x6634, 0x661c, 0x664f,
+    0x6644, 0x6649, 0x6641, 0x665e, 0x665d, 0x6664, 0x6667, 0x6668,
+    0x665f, 0x6662, 0x6670, 0x6683, 0x6688, 0x668e, 0x6689, 0x6684,
+    0x6698, 0x669d, 0x66c1, 0x66b9, 0x66c9, 0x66be, 0x66bc, 0x003f,
+    /* lead byte db */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x66c4, 0x66b8, 0x66d6, 0x66da, 0x66e0, 0x663f, 0x66e6,
+    0x66e9, 0x66f0, 0x66f5, 0x66f7, 0x670f, 0x6716, 0x671e, 0x6726,
+    0x6727, 0x9738, 0x672e, 0x673f, 0x6736, 0x6741, 0x6738, 0x6737,
+    0x6746, 0x675e, 0x6760, 0x6759, 0x6763, 0x6764, 0x6789, 0x6770,
+    0x67a9, 0x677c, 0x676a, 0x678c, 0x678b, 0x67a6, 0x67a1, 0x6785,
+    0x67b7, 0x67ef, 0x67b4, 0x67ec, 0x67b3, 0x67e9, 0x67b8, 0x67e4,
+    0x67de, 0x67dd, 0x67e2, 0x67ee, 0x67b9, 0x67ce, 0x67c6, 0x67e7,
+    0x6a9c, 0x681e, 0x6846, 0x6829, 0x6840, 0x684d, 0x6832, 0x684e,
+    0x68b3, 0x682b, 0x6859, 0x6863, 0x6877, 0x687f, 0x689f, 0x688f,
+    0x68ad, 0x6894, 0x689d, 0x689b, 0x6883, 0x6aae, 0x68b9, 0x6874,
+    0x68b5, 0x68a0, 0x68ba, 0x690f, 0x688d, 0x687e, 0x6901, 0x68ca,
+    0x6908, 0x68d8, 0x6922, 0x6926, 0x68e1, 0x690c, 0x68cd, 0x003f,
+    /* lead byte dc */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x68d4, 0x68e7, 0x68d5, 0x6936, 0x6912, 0x6904, 0x68d7,
+    0x68e3, 0x6925, 0x68f9, 0x68e0, 0x68ef, 0x6928, 0x692a, 0x691a,
+    0x6923, 0x6921, 0x68c6, 0x6979, 0x6977, 0x695c, 0x6978, 0x696b,
+    0x6954, 0x697e, 0x696e, 0x6939, 0x6974, 0x693d, 0x6959, 0x6930,
+    0x6961, 0x695e, 0x695d, 0x6981, 0x696a, 0x69b2, 0x69ae, 0x69d0,
+    0x69bf, 0x69c1, 0x69d3, 0x69be, 0x69ce, 0x5be8, 0x69ca, 0x69dd,
+    0x69bb, 0x69c3, 0x69a7, 0x6a2e, 0x6991, 0x69a0, 0x699c, 0x6995,
+    0x69b4, 0x69de, 0x69e8, 0x6a02, 0x6a1b, 0x69ff, 0x6b0a, 0x69f9,
+    0x69f2, 0x69e7, 0x6a05, 0x69b1, 0x6a1e, 0x69ed, 0x6a14, 0x69eb,
+    0x6a0a, 0x6a12, 0x6ac1, 0x6a23, 0x6a13, 0x6a44, 0x6a0c, 0x6a72,
+    0x6a36, 0x6a78, 0x6a47, 0x6a62, 0x6a59, 0x6a66, 0x6a48, 0x6a38,
+    0x6a22, 0x6a90, 0x6a8d, 0x6aa0, 0x6a84, 0x6aa2, 0x6aa3, 0x003f,
+    /* lead byte dd */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6a97, 0x8617, 0x6abb, 0x6ac3, 0x6ac2, 0x6ab8, 0x6ab3,
+    0x6aac, 0x6ade, 0x6ad1, 0x6adf, 0x6aaa, 0x6ada, 0x6aea, 0x6afb,
+    0x6b05, 0x8616, 0x6afa, 0x6b12, 0x6b16, 0x9b31, 0x6b1f, 0x6b38,
+    0x6b37, 0x76dc, 0x6b39, 0x98ee, 0x6b47, 0x6b43, 0x6b49, 0x6b50,
+    0x6b59, 0x6b54, 0x6b5b, 0x6b5f, 0x6b61, 0x6b78, 0x6b79, 0x6b7f,
+    0x6b80, 0x6b84, 0x6b83, 0x6b8d, 0x6b98, 0x6b95, 0x6b9e, 0x6ba4,
+    0x6baa, 0x6bab, 0x6baf, 0x6bb2, 0x6bb1, 0x6bb3, 0x6bb7, 0x6bbc,
+    0x6bc6, 0x6bcb, 0x6bd3, 0x6bdf, 0x6bec, 0x6beb, 0x6bf3, 0x6bef,
+    0x9ebe, 0x6c08, 0x6c13, 0x6c14, 0x6c1b, 0x6c24, 0x6c23, 0x6c5e,
+    0x6c55, 0x6c62, 0x6c6a, 0x6c82, 0x6c8d, 0x6c9a, 0x6c81, 0x6c9b,
+    0x6c7e, 0x6c68, 0x6c73, 0x6c92, 0x6c90, 0x6cc4, 0x6cf1, 0x6cd3,
+    0x6cbd, 0x6cd7, 0x6cc5, 0x6cdd, 0x6cae, 0x6cb1, 0x6cbe, 0x003f,
+    /* lead byte de */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6cba, 0x6cdb, 0x6cef, 0x6cd9, 0x6cea, 0x6d1f, 0x884d,
+    0x6d36, 0x6d2b, 0x6d3d, 0x6d38, 0x6d19, 0x6d35, 0x6d33, 0x6d12,
+    0x6d0c, 0x6d63, 0x6d93, 0x6d64, 0x6d5a, 0x6d79, 0x6d59, 0x6d8e,
+    0x6d95, 0x6fe4, 0x6d85, 0x6df9, 0x6e15, 0x6e0a, 0x6db5, 0x6dc7,
+    0x6de6, 0x6db8, 0x6dc6, 0x6dec, 0x6dde, 0x6dcc, 0x6de8, 0x6dd2,
+    0x6dc5, 0x6dfa, 0x6dd9, 0x6de4, 0x6dd5, 0x6dea, 0x6dee, 0x6e2d,
+    0x6e6e, 0x6e2e, 0x6e19, 0x6e72, 0x6e5f, 0x6e3e, 0x6e23, 0x6e6b,
+    0x6e2b, 0x6e76, 0x6e4d, 0x6e1f, 0x6e43, 0x6e3a, 0x6e4e, 0x6e24,
+    0x6eff, 0x6e1d, 0x6e38, 0x6e82, 0x6eaa, 0x6e98, 0x6ec9, 0x6eb7,
+    0x6ed3, 0x6ebd, 0x6eaf, 0x6ec4, 0x6eb2, 0x6ed4, 0x6ed5, 0x6e8f,
+    0x6ea5, 0x6ec2, 0x6e9f, 0x6f41, 0x6f11, 0x704c, 0x6eec, 0x6ef8,
+    0x6efe, 0x6f3f, 0x6ef2, 0x6f31, 0x6eef, 0x6f32, 0x6ecc, 0x003f,
+    /* lead byte df */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6f3e, 0x6f13, 0x6ef7, 0x6f86, 0x6f7a, 0x6f78, 0x6f81,
+    0x6f80, 0x6f6f, 0x6f5b, 0x6ff3, 0x6f6d, 0x6f82, 0x6f7c, 0x6f58,
+    0x6f8e, 0x6f91, 0x6fc2, 0x6f66, 0x6fb3, 0x6fa3, 0x6fa1, 0x6fa4,
+    0x6fb9, 0x6fc6, 0x6faa, 0x6fdf, 0x6fd5, 0x6fec, 0x6fd4, 0x6fd8,
+    0x6ff1, 0x6fee, 0x6fdb, 0x7009, 0x700b, 0x6ffa, 0x7011, 0x7001,
+    0x700f, 0x6ffe, 0x701b, 0x701a, 0x6f74, 0x701d, 0x7018, 0x701f,
+    0x7030, 0x703e, 0x7032, 0x7051, 0x7063, 0x7099, 0x7092, 0x70af,
+    0x70f1, 0x70ac, 0x70b8, 0x70b3, 0x70ae, 0x70df, 0x70cb, 0x70dd,
+    0x70d9, 0x7109, 0x70fd, 0x711c, 0x7119, 0x7165, 0x7155, 0x7188,
+    0x7166, 0x7162, 0x714c, 0x7156, 0x716c, 0x718f, 0x71fb, 0x7184,
+    0x7195, 0x71a8, 0x71ac, 0x71d7, 0x71b9, 0x71be, 0x71d2, 0x71c9,
+    0x71d4, 0x71ce, 0x71e0, 0x71ec, 0x71e7, 0x71f5, 0x71fc, 0x003f,
+    /* lead byte e0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x71f9, 0x71ff, 0x720d, 0x7210, 0x721b, 0x7228, 0x722d,
+    0x722c, 0x7230, 0x7232, 0x723b, 0x723c, 0x723f, 0x7240, 0x7246,
+    0x724b, 0x7258, 0x7274, 0x727e, 0x7282, 0x7281, 0x7287, 0x7292,
+    0x7296, 0x72a2, 0x72a7, 0x72b9, 0x72b2, 0x72c3, 0x72c6, 0x72c4,
+    0x72ce, 0x72d2, 0x72e2, 0x72e0, 0x72e1, 0x72f9, 0x72f7, 0x500f,
+    0x7317, 0x730a, 0x731c, 0x7316, 0x731d, 0x7334, 0x732f, 0x7329,
+    0x7325, 0x733e, 0x734e, 0x734f, 0x9ed8, 0x7357, 0x736a, 0x7368,
+    0x7370, 0x7378, 0x7375, 0x737b, 0x737a, 0x73c8, 0x73b3, 0x73ce,
+    0x73bb, 0x73c0, 0x73e5, 0x73ee, 0x73de, 0x74a2, 0x7405, 0x746f,
+    0x7425, 0x73f8, 0x7432, 0x743a, 0x7455, 0x743f, 0x745f, 0x7459,
+    0x7441, 0x745c, 0x7469, 0x7470, 0x7463, 0x746a, 0x7476, 0x747e,
+    0x748b, 0x749e, 0x74a7, 0x74ca, 0x74cf, 0x74d4, 0x73f1, 0x003f,
+    /* lead byte e1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x74e0, 0x74e3, 0x74e7, 0x74e9, 0x74ee, 0x74f2, 0x74f0,
+    0x74f1, 0x74f8, 0x74f7, 0x7504, 0x7503, 0x7505, 0x750c, 0x750e,
+    0x750d, 0x7515, 0x7513, 0x751e, 0x7526, 0x752c, 0x753c, 0x7544,
+    0x754d, 0x754a, 0x7549, 0x755b, 0x7546, 0x755a, 0x7569, 0x7564,
+    0x7567, 0x756b, 0x756d, 0x7578, 0x7576, 0x7586, 0x7587, 0x7574,
+    0x758a, 0x7589, 0x7582, 0x7594, 0x759a, 0x759d, 0x75a5, 0x75a3,
+    0x75c2, 0x75b3, 0x75c3, 0x75b5, 0x75bd, 0x75b8, 0x75bc, 0x75b1,
+    0x75cd, 0x75ca, 0x75d2, 0x75d9, 0x75e3, 0x75de, 0x75fe, 0x75ff,
+    0x75fc, 0x7601, 0x75f0, 0x75fa, 0x75f2, 0x75f3, 0x760b, 0x760d,
+    0x7609, 0x761f, 0x7627, 0x7620, 0x7621, 0x7622, 0x7624, 0x7634,
+    0x7630, 0x763b, 0x7647, 0x7648, 0x7646, 0x765c, 0x7658, 0x7661,
+    0x7662, 0x7668, 0x7669, 0x766a, 0x7667, 0x766c, 0x7670, 0x003f,
+    /* lead byte e2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7672, 0x7676, 0x7678, 0x767c, 0x7680, 0x7683, 0x7688,
+    0x768b, 0x768e, 0x7696, 0x7693, 0x7699, 0x769a, 0x76b0, 0x76b4,
+    0x76b8, 0x76b9, 0x76ba, 0x76c2, 0x76cd, 0x76d6, 0x76d2, 0x76de,
+    0x76e1, 0x76e5, 0x76e7, 0x76ea, 0x862f, 0x76fb, 0x7708, 0x7707,
+    0x7704, 0x7729, 0x7724, 0x771e, 0x7725, 0x7726, 0x771b, 0x7737,
+    0x7738, 0x7747, 0x775a, 0x7768, 0x776b, 0x775b, 0x7765, 0x777f,
+    0x777e, 0x7779, 0x778e, 0x778b, 0x7791, 0x77a0, 0x779e, 0x77b0,
+    0x77b6, 0x77b9, 0x77bf, 0x77bc, 0x77bd, 0x77bb, 0x77c7, 0x77cd,
+    0x77d7, 0x77da, 0x77dc, 0x77e3, 0x77ee, 0x77fc, 0x780c, 0x7812,
+    0x7926, 0x7820, 0x792a, 0x7845, 0x788e, 0x7874, 0x7886, 0x787c,
+    0x789a, 0x788c, 0x78a3, 0x78b5, 0x78aa, 0x78af, 0x78d1, 0x78c6,
+    0x78cb, 0x78d4, 0x78be, 0x78bc, 0x78c5, 0x78ca, 0x78ec, 0x003f,
+    /* lead byte e3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x78e7, 0x78da, 0x78fd, 0x78f4, 0x7907, 0x7912, 0x7911,
+    0x7919, 0x792c, 0x792b, 0x7940, 0x7960, 0x7957, 0x795f, 0x795a,
+    0x7955, 0x7953, 0x797a, 0x797f, 0x798a, 0x799d, 0x79a7, 0x9f4b,
+    0x79aa, 0x79ae, 0x79b3, 0x79b9, 0x79ba, 0x79c9, 0x79d5, 0x79e7,
+    0x79ec, 0x79e1, 0x79e3, 0x7a08, 0x7a0d, 0x7a18, 0x7a19, 0x7a20,
+    0x7a1f, 0x7980, 0x7a31, 0x7a3b, 0x7a3e, 0x7a37, 0x7a43, 0x7a57,
+    0x7a49, 0x7a61, 0x7a62, 0x7a69, 0x9f9d, 0x7a70, 0x7a79, 0x7a7d,
+    0x7a88, 0x7a97, 0x7a95, 0x7a98, 0x7a96, 0x7aa9, 0x7ac8, 0x7ab0,
+    0x7ab6, 0x7ac5, 0x7ac4, 0x7abf, 0x9083, 0x7ac7, 0x7aca, 0x7acd,
+    0x7acf, 0x7ad5, 0x7ad3, 0x7ad9, 0x7ada, 0x7add, 0x7ae1, 0x7ae2,
+    0x7ae6, 0x7aed, 0x7af0, 0x7b02, 0x7b0f, 0x7b0a, 0x7b06, 0x7b33,
+    0x7b18, 0x7b19, 0x7b1e, 0x7b35, 0x7b28, 0x7b36, 0x7b50, 0x003f,
+    /* lead byte e4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7b7a, 0x7b04, 0x7b4d, 0x7b0b, 0x7b4c, 0x7b45, 0x7b75,
+    0x7b65, 0x7b74, 0x7b67, 0x7b70, 0x7b71, 0x7b6c, 0x7b6e, 0x7b9d,
+    0x7b98, 0x7b9f, 0x7b8d, 0x7b9c, 0x7b9a, 0x7b8b, 0x7b92, 0x7b8f,
+    0x7b5d, 0x7b99, 0x7bcb, 0x7bc1, 0x7bcc, 0x7bcf, 0x7bb4, 0x7bc6,
+    0x7bdd, 0x7be9, 0x7c11, 0x7c14, 0x7be6, 0x7be5, 0x7c60, 0x7c00,
+    0x7c07, 0x7c13, 0x7bf3, 0x7bf7, 0x7c17, 0x7c0d, 0x7bf6, 0x7c23,
+    0x7c27, 0x7c2a, 0x7c1f, 0x7c37, 0x7c2b, 0x7c3d, 0x7c4c, 0x7c43,
+    0x7c54, 0x7c4f, 0x7c40, 0x7c50, 0x7c58, 0x7c5f, 0x7c64, 0x7c56,
+    0x7c65, 0x7c6c, 0x7c75, 0x7c83, 0x7c90, 0x7ca4, 0x7cad, 0x7ca2,
+    0x7cab, 0x7ca1, 0x7ca8, 0x7cb3, 0x7cb2, 0x7cb1, 0x7cae, 0x7cb9,
+    0x7cbd, 0x7cc0, 0x7cc5, 0x7cc2, 0x7cd8, 0x7cd2, 0x7cdc, 0x7ce2,
+    0x9b3b, 0x7cef, 0x7cf2, 0x7cf4, 0x7cf6, 0x7cfa, 0x7d06, 0x003f,
+    /* lead byte e5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7d02, 0x7d1c, 0x7d15, 0x7d0a, 0x7d45, 0x7d4b, 0x7d2e,
+    0x7d32, 0x7d3f, 0x7d35, 0x7d46, 0x7d73, 0x7d56, 0x7d4e, 0x7d72,
+    0x7d68, 0x7d6e, 0x7d4f, 0x7d63, 0x7d93, 0x7d89, 0x7d5b, 0x7d8f,
+    0x7d7d, 0x7d9b, 0x7dba, 0x7dae, 0x7da3, 0x7db5, 0x7dc7, 0x7dbd,
+    0x7dab, 0x7e3d, 0x7da2, 0x7daf, 0x7ddc, 0x7db8, 0x7d9f, 0x7db0,
+    0x7dd8, 0x7ddd, 0x7de4, 0x7dde, 0x7dfb, 0x7df2, 0x7de1, 0x7e05,
+    0x7e0a, 0x7e23, 0x7e21, 0x7e12, 0x7e31, 0x7e1f, 0x7e09, 0x7e0b,
+    0x7e22, 0x7e46, 0x7e66, 0x7e3b, 0x7e35, 0x7e39, 0x7e43, 0x7e37,
+    0x7e32, 0x7e3a, 0x7e67, 0x7e5d, 0x7e56, 0x7e5e, 0x7e59, 0x7e5a,
+    0x7e79, 0x7e6a, 0x7e69, 0x7e7c, 0x7e7b, 0x7e83, 0x7dd5, 0x7e7d,
+    0x8fae, 0x7e7f, 0x7e88, 0x7e89, 0x7e8c, 0x7e92, 0x7e90, 0x7e93,
+    0x7e94, 0x7e96, 0x7e8e, 0x7e9b, 0x7e9c, 0x7f38, 0x7f3a, 0x003f,
+    /* lead byte e6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7f45, 0x7f4c, 0x7f4d, 0x7f4e, 0x7f50, 0x7f51, 0x7f55,
+    0x7f54, 0x7f58, 0x7f5f, 0x7f60, 0x7f68, 0x7f69, 0x7f67, 0x7f78,
+    0x7f82, 0x7f86, 0x7f83, 0x7f88, 0x7f87, 0x7f8c, 0x7f94, 0x7f9e,
+    0x7f9d, 0x7f9a, 0x7fa3, 0x7faf, 0x7fb2, 0x7fb9, 0x7fae, 0x7fb6,
+    0x7fb8, 0x8b71, 0x7fc5, 0x7fc6, 0x7fca, 0x7fd5, 0x7fd4, 0x7fe1,
+    0x7fe6, 0x7fe9, 0x7ff3, 0x7ff9, 0x98dc, 0x8006, 0x8004, 0x800b,
+    0x8012, 0x8018, 0x8019, 0x801c, 0x8021, 0x8028, 0x803f, 0x803b,
+    0x804a, 0x8046, 0x8052, 0x8058, 0x805a, 0x805f, 0x8062, 0x8068,
+    0x8073, 0x8072, 0x8070, 0x8076, 0x8079, 0x807d, 0x807f, 0x8084,
+    0x8086, 0x8085, 0x809b, 0x8093, 0x809a, 0x80ad, 0x5190, 0x80ac,
+    0x80db, 0x80e5, 0x80d9, 0x80dd, 0x80c4, 0x80da, 0x80d6, 0x8109,
+    0x80ef, 0x80f1, 0x811b, 0x8129, 0x8123, 0x812f, 0x814b, 0x003f,
+    /* lead byte e7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x968b, 0x8146, 0x813e, 0x8153, 0x8151, 0x80fc, 0x8171,
+    0x816e, 0x8165, 0x8166, 0x8174, 0x8183, 0x8188, 0x818a, 0x8180,
+    0x8182, 0x81a0, 0x8195, 0x81a4, 0x81a3, 0x815f, 0x8193, 0x81a9,
+    0x81b0, 0x81b5, 0x81be, 0x81b8, 0x81bd, 0x81c0, 0x81c2, 0x81ba,
+    0x81c9, 0x81cd, 0x81d1, 0x81d9, 0x81d8, 0x81c8, 0x81da, 0x81df,
+    0x81e0, 0x81e7, 0x81fa, 0x81fb, 0x81fe, 0x8201, 0x8202, 0x8205,
+    0x8207, 0x820a, 0x820d, 0x8210, 0x8216, 0x8229, 0x822b, 0x8238,
+    0x8233, 0x8240, 0x8259, 0x8258, 0x825d, 0x825a, 0x825f, 0x8264,
+    0x8262, 0x8268, 0x826a, 0x826b, 0x822e, 0x8271, 0x8277, 0x8278,
+    0x827e, 0x828d, 0x8292, 0x82ab, 0x829f, 0x82bb, 0x82ac, 0x82e1,
+    0x82e3, 0x82df, 0x82d2, 0x82f4, 0x82f3, 0x82fa, 0x8393, 0x8303,
+    0x82fb, 0x82f9, 0x82de, 0x8306, 0x82dc, 0x8309, 0x82d9, 0x003f,
+    /* lead byte e8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8335, 0x8334, 0x8316, 0x8332, 0x8331, 0x8340, 0x8339,
+    0x8350, 0x8345, 0x832f, 0x832b, 0x8317, 0x8318, 0x8385, 0x839a,
+    0x83aa, 0x839f, 0x83a2, 0x8396, 0x8323, 0x838e, 0x8387, 0x838a,
+    0x837c, 0x83b5, 0x8373, 0x8375, 0x83a0, 0x8389, 0x83a8, 0x83f4,
+    0x8413, 0x83eb, 0x83ce, 0x83fd, 0x8403, 0x83d8, 0x840b, 0x83c1,
+    0x83f7, 0x8407, 0x83e0, 0x83f2, 0x840d, 0x8422, 0x8420, 0x83bd,
+    0x8438, 0x8506, 0x83fb, 0x846d, 0x842a, 0x843c, 0x855a, 0x8484,
+    0x8477, 0x846b, 0x84ad, 0x846e, 0x8482, 0x8469, 0x8446, 0x842c,
+    0x846f, 0x8479, 0x8435, 0x84ca, 0x8462, 0x84b9, 0x84bf, 0x849f,
+    0x84d9, 0x84cd, 0x84bb, 0x84da, 0x84d0, 0x84c1, 0x84c6, 0x84d6,
+    0x84a1, 0x8521, 0x84ff, 0x84f4, 0x8517, 0x8518, 0x852c, 0x851f,
+    0x8515, 0x8514, 0x84fc, 0x8540, 0x8563, 0x8558, 0x8548, 0x003f,
+    /* lead byte e9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8541, 0x8602, 0x854b, 0x8555, 0x8580, 0x85a4, 0x8588,
+    0x8591, 0x858a, 0x85a8, 0x856d, 0x8594, 0x859b, 0x85ea, 0x8587,
+    0x859c, 0x8577, 0x857e, 0x8590, 0x85c9, 0x85ba, 0x85cf, 0x85b9,
+    0x85d0, 0x85d5, 0x85dd, 0x85e5, 0x85dc, 0x85f9, 0x860a, 0x8613,
+    0x860b, 0x85fe, 0x85fa, 0x8606, 0x8622, 0x861a, 0x8630, 0x863f,
+    0x864d, 0x4e55, 0x8654, 0x865f, 0x8667, 0x8671, 0x8693, 0x86a3,
+    0x86a9, 0x86aa, 0x868b, 0x868c, 0x86b6, 0x86af, 0x86c4, 0x86c6,
+    0x86b0, 0x86c9, 0x8823, 0x86ab, 0x86d4, 0x86de, 0x86e9, 0x86ec,
+    0x86df, 0x86db, 0x86ef, 0x8712, 0x8706, 0x8708, 0x8700, 0x8703,
+    0x86fb, 0x8711, 0x8709, 0x870d, 0x86f9, 0x870a, 0x8734, 0x873f,
+    0x8737, 0x873b, 0x8725, 0x8729, 0x871a, 0x8760, 0x875f, 0x8778,
+    0x874c, 0x874e, 0x8774, 0x8757, 0x8768, 0x876e, 0x8759, 0x003f,
+    /* lead byte ea */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8753, 0x8763, 0x876a, 0x8805, 0x87a2, 0x879f, 0x8782,
+    0x87af, 0x87cb, 0x87bd, 0x87c0, 0x87d0, 0x96d6, 0x87ab, 0x87c4,
+    0x87b3, 0x87c7, 0x87c6, 0x87bb, 0x87ef, 0x87f2, 0x87e0, 0x880f,
+    0x880d, 0x87fe, 0x87f6, 0x87f7, 0x880e, 0x87d2, 0x8811, 0x8816,
+    0x8815, 0x8822, 0x8821, 0x8831, 0x8836, 0x8839, 0x8827, 0x883b,
+    0x8844, 0x8842, 0x8852, 0x8859, 0x885e, 0x8862, 0x886b, 0x8881,
+    0x887e, 0x889e, 0x8875, 0x887d, 0x88b5, 0x8872, 0x8882, 0x8897,
+    0x8892, 0x88ae, 0x8899, 0x88a2, 0x888d, 0x88a4, 0x88b0, 0x88bf,
+    0x88b1, 0x88c3, 0x88c4, 0x88d4, 0x88d8, 0x88d9, 0x88dd, 0x88f9,
+    0x8902, 0x88fc, 0x88f4, 0x88e8, 0x88f2, 0x8904, 0x890c, 0x890a,
+    0x8913, 0x8943, 0x891e, 0x8925, 0x892a, 0x892b, 0x8941, 0x8944,
+    0x893b, 0x8936, 0x8938, 0x894c, 0x891d, 0x8960, 0x895e, 0x003f,
+    /* lead byte eb */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8966, 0x8964, 0x896d, 0x896a, 0x896f, 0x8974, 0x8977,
+    0x897e, 0x8983, 0x8988, 0x898a, 0x8993, 0x8998, 0x89a1, 0x89a9,
+    0x89a6, 0x89ac, 0x89af, 0x89b2, 0x89ba, 0x89bd, 0x89bf, 0x89c0,
+    0x89da, 0x89dc, 0x89dd, 0x89e7, 0x89f4, 0x89f8, 0x8a03, 0x8a16,
+    0x8a10, 0x8a0c, 0x8a1b, 0x8a1d, 0x8a25, 0x8a36, 0x8a41, 0x8a5b,
+    0x8a52, 0x8a46, 0x8a48, 0x8a7c, 0x8a6d, 0x8a6c, 0x8a62, 0x8a85,
+    0x8a82, 0x8a84, 0x8aa8, 0x8aa1, 0x8a91, 0x8aa5, 0x8aa6, 0x8a9a,
+    0x8aa3, 0x8ac4, 0x8acd, 0x8ac2, 0x8ada, 0x8aeb, 0x8af3, 0x8ae7,
+    0x8ae4, 0x8af1, 0x8b14, 0x8ae0, 0x8ae2, 0x8af7, 0x8ade, 0x8adb,
+    0x8b0c, 0x8b07, 0x8b1a, 0x8ae1, 0x8b16, 0x8b10, 0x8b17, 0x8b20,
+    0x8b33, 0x97ab, 0x8b26, 0x8b2b, 0x8b3e, 0x8b28, 0x8b41, 0x8b4c,
+    0x8b4f, 0x8b4e, 0x8b49, 0x8b56, 0x8b5b, 0x8b5a, 0x8b6b, 0x003f,
+    /* lead byte ec */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8b5f, 0x8b6c, 0x8b6f, 0x8b74, 0x8b7d, 0x8b80, 0x8b8c,
+    0x8b8e, 0x8b92, 0x8b93, 0x8b96, 0x8b99, 0x8b9a, 0x8c3a, 0x8c41,
+    0x8c3f, 0x8c48, 0x8c4c, 0x8c4e, 0x8c50, 0x8c55, 0x8c62, 0x8c6c,
+    0x8c78, 0x8c7a, 0x8c82, 0x8c89, 0x8c85, 0x8c8a, 0x8c8d, 0x8c8e,
+    0x8c94, 0x8c7c, 0x8c98, 0x621d, 0x8cad, 0x8caa, 0x8cbd, 0x8cb2,
+    0x8cb3, 0x8cae, 0x8cb6, 0x8cc8, 0x8cc1, 0x8ce4, 0x8ce3, 0x8cda,
+    0x8cfd, 0x8cfa, 0x8cfb, 0x8d04, 0x8d05, 0x8d0a, 0x8d07, 0x8d0f,
+    0x8d0d, 0x8d10, 0x9f4e, 0x8d13, 0x8ccd, 0x8d14, 0x8d16, 0x8d67,
+    0x8d6d, 0x8d71, 0x8d73, 0x8d81, 0x8d99, 0x8dc2, 0x8dbe, 0x8dba,
+    0x8dcf, 0x8dda, 0x8dd6, 0x8dcc, 0x8ddb, 0x8dcb, 0x8dea, 0x8deb,
+    0x8ddf, 0x8de3, 0x8dfc, 0x8e08, 0x8e09, 0x8dff, 0x8e1d, 0x8e1e,
+    0x8e10, 0x8e1f, 0x8e42, 0x8e35, 0x8e30, 0x8e34, 0x8e4a, 0x003f,
+    /* lead byte ed */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8e47, 0x8e49, 0x8e4c, 0x8e50, 0x8e48, 0x8e59, 0x8e64,
+    0x8e60, 0x8e2a, 0x8e63, 0x8e55, 0x8e76, 0x8e72, 0x8e7c, 0x8e81,
+    0x8e87, 0x8e85, 0x8e84, 0x8e8b, 0x8e8a, 0x8e93, 0x8e91, 0x8e94,
+    0x8e99, 0x8eaa, 0x8ea1, 0x8eac, 0x8eb0, 0x8ec6, 0x8eb1, 0x8ebe,
+    0x8ec5, 0x8ec8, 0x8ecb, 0x8edb, 0x8ee3, 0x8efc, 0x8efb, 0x8eeb,
+    0x8efe, 0x8f0a, 0x8f05, 0x8f15, 0x8f12, 0x8f19, 0x8f13, 0x8f1c,
+    0x8f1f, 0x8f1b, 0x8f0c, 0x8f26, 0x8f33, 0x8f3b, 0x8f39, 0x8f45,
+    0x8f42, 0x8f3e, 0x8f4c, 0x8f49, 0x8f46, 0x8f4e, 0x8f57, 0x8f5c,
+    0x8f62, 0x8f63, 0x8f64, 0x8f9c, 0x8f9f, 0x8fa3, 0x8fad, 0x8faf,
+    0x8fb7, 0x8fda, 0x8fe5, 0x8fe2, 0x8fea, 0x8fef, 0x9087, 0x8ff4,
+    0x9005, 0x8ff9, 0x8ffa, 0x9011, 0x9015, 0x9021, 0x900d, 0x901e,
+    0x9016, 0x900b, 0x9027, 0x9036, 0x9035, 0x9039, 0x8ff8, 0x003f,
+    /* lead byte ee */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x904f, 0x9050, 0x9051, 0x9052, 0x900e, 0x9049, 0x903e,
+    0x9056, 0x9058, 0x905e, 0x9068, 0x906f, 0x9076, 0x96a8, 0x9072,
+    0x9082, 0x907d, 0x9081, 0x9080, 0x908a, 0x9089, 0x908f, 0x90a8,
+    0x90af, 0x90b1, 0x90b5, 0x90e2, 0x90e4, 0x6248, 0x90db, 0x9102,
+    0x9112, 0x9119, 0x9132, 0x9130, 0x914a, 0x9156, 0x9158, 0x9163,
+    0x9165, 0x9169, 0x9173, 0x9172, 0x918b, 0x9189, 0x9182, 0x91a2,
+    0x91ab, 0x91af, 0x91aa, 0x91b5, 0x91b4, 0x91ba, 0x91c0, 0x91c1,
+    0x91c9, 0x91cb, 0x91d0, 0x91d6, 0x91df, 0x91e1, 0x91db, 0x91fc,
+    0x91f5, 0x91f6, 0x921e, 0x91ff, 0x9214, 0x922c, 0x9215, 0x9211,
+    0x925e, 0x9257, 0x9245, 0x9249, 0x9264, 0x9248, 0x9295, 0x923f,
+    0x924b, 0x9250, 0x929c, 0x9296, 0x9293, 0x929b, 0x925a, 0x92cf,
+    0x92b9, 0x92b7, 0x92e9, 0x930f, 0x92fa, 0x9344, 0x932e, 0x003f,
+    /* lead byte ef */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9319, 0x9322, 0x931a, 0x9323, 0x933a, 0x9335, 0x933b,
+    0x935c, 0x9360, 0x937c, 0x936e, 0x9356, 0x93b0, 0x93ac, 0x93ad,
+    0x9394, 0x93b9, 0x93d6, 0x93d7, 0x93e8, 0x93e5, 0x93d8, 0x93c3,
+    0x93dd, 0x93d0, 0x93c8, 0x93e4, 0x941a, 0x9414, 0x9413, 0x9403,
+    0x9407, 0x9410, 0x9436, 0x942b, 0x9435, 0x9421, 0x943a, 0x9441,
+    0x9452, 0x9444, 0x945b, 0x9460, 0x9462, 0x945e, 0x946a, 0x9229,
+    0x9470, 0x9475, 0x9477, 0x947d, 0x945a, 0x947c, 0x947e, 0x9481,
+    0x947f, 0x9582, 0x9587, 0x958a, 0x9594, 0x9596, 0x9598, 0x9599,
+    0x95a0, 0x95a8, 0x95a7, 0x95ad, 0x95bc, 0x95bb, 0x95b9, 0x95be,
+    0x95ca, 0x6ff6, 0x95c3, 0x95cd, 0x95cc, 0x95d5, 0x95d4, 0x95d6,
+    0x95dc, 0x95e1, 0x95e5, 0x95e2, 0x9621, 0x9628, 0x962e, 0x962f,
+    0x9642, 0x964c, 0x964f, 0x964b, 0x9677, 0x965c, 0x965e, 0x003f,
+    /* lead byte f0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x965d, 0x965f, 0x9666, 0x9672, 0x966c, 0x968d, 0x9698,
+    0x9695, 0x9697, 0x96aa, 0x96a7, 0x96b1, 0x96b2, 0x96b0, 0x96b4,
+    0x96b6, 0x96b8, 0x96b9, 0x96ce, 0x96cb, 0x96c9, 0x96cd, 0x894d,
+    0x96dc, 0x970d, 0x96d5, 0x96f9, 0x9704, 0x9706, 0x9708, 0x9713,
+    0x970e, 0x9711, 0x970f, 0x9716, 0x9719, 0x9724, 0x972a, 0x9730,
+    0x9739, 0x973d, 0x973e, 0x9744, 0x9746, 0x9748, 0x9742, 0x9749,
+    0x975c, 0x9760, 0x9764, 0x9766, 0x9768, 0x52d2, 0x976b, 0x9771,
+    0x9779, 0x9785, 0x977c, 0x9781, 0x977a, 0x9786, 0x978b, 0x978f,
+    0x9790, 0x979c, 0x97a8, 0x97a6, 0x97a3, 0x97b3, 0x97b4, 0x97c3,
+    0x97c6, 0x97c8, 0x97cb, 0x97dc, 0x97ed, 0x9f4f, 0x97f2, 0x7adf,
+    0x97f6, 0x97f5, 0x980f, 0x980c, 0x9838, 0x9824, 0x9821, 0x9837,
+    0x983d, 0x9846, 0x984f, 0x984b, 0x986b, 0x986f, 0x9870, 0x003f,
+    /* lead byte f1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9871, 0x9874, 0x9873, 0x98aa, 0x98af, 0x98b1, 0x98b6,
+    0x98c4, 0x98c3, 0x98c6, 0x98e9, 0x98eb, 0x9903, 0x9909, 0x9912,
+    0x9914, 0x9918, 0x9921, 0x991d, 0x991e, 0x9924, 0x9920, 0x992c,
+    0x992e, 0x993d, 0x993e, 0x9942, 0x9949, 0x9945, 0x9950, 0x994b,
+    0x9951, 0x9952, 0x994c, 0x9955, 0x9997, 0x9998, 0x99a5, 0x99ad,
+    0x99ae, 0x99bc, 0x99df, 0x99db, 0x99dd, 0x99d8, 0x99d1, 0x99ed,
+    0x99ee, 0x99f1, 0x99f2, 0x99fb, 0x99f8, 0x9a01, 0x9a0f, 0x9a05,
+    0x99e2, 0x9a19, 0x9a2b, 0x9a37, 0x9a45, 0x9a42, 0x9a40, 0x9a43,
+    0x9a3e, 0x9a55, 0x9a4d, 0x9a5b, 0x9a57, 0x9a5f, 0x9a62, 0x9a65,
+    0x9a64, 0x9a69, 0x9a6b, 0x9a6a, 0x9aad, 0x9ab0, 0x9abc, 0x9ac0,
+    0x9acf, 0x9ad1, 0x9ad3, 0x9ad4, 0x9ade, 0x9adf, 0x9ae2, 0x9ae3,
+    0x9ae6, 0x9aef, 0x9aeb, 0x9aee, 0x9af4, 0x9af1, 0x9af7, 0x003f,
+    /* lead byte f2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9afb, 0x9b06, 0x9b18, 0x9b1a, 0x9b1f, 0x9b22, 0x9b23,
+    0x9b25, 0x9b27, 0x9b28, 0x9b29, 0x9b2a, 0x9b2e, 0x9b2f, 0x9b32,
+    0x9b44, 0x9b43, 0x9b4f, 0x9b4d, 0x9b4e, 0x9b51, 0x9b58, 0x9b74,
+    0x9b93, 0x9b83, 0x9b91, 0x9b96, 0x9b97, 0x9b9f, 0x9ba0, 0x9ba8,
+    0x9bb4, 0x9bc0, 0x9bca, 0x9bb9, 0x9bc6, 0x9bcf, 0x9bd1, 0x9bd2,
+    0x9be3, 0x9be2, 0x9be4, 0x9bd4, 0x9be1, 0x9c3a, 0x9bf2, 0x9bf1,
+    0x9bf0, 0x9c15, 0x9c14, 0x9c09, 0x9c13, 0x9c0c, 0x9c06, 0x9c08,
+    0x9c12, 0x9c0a, 0x9c04, 0x9c2e, 0x9c1b, 0x9c25, 0x9c24, 0x9c21,
+    0x9c30, 0x9c47, 0x9c32, 0x9c46, 0x9c3e, 0x9c5a, 0x9c60, 0x9c67,
+    0x9c76, 0x9c78, 0x9ce7, 0x9cec, 0x9cf0, 0x9d09, 0x9d08, 0x9ceb,
+    0x9d03, 0x9d06, 0x9d2a, 0x9d26, 0x9daf, 0x9d23, 0x9d1f, 0x9d44,
+    0x9d15, 0x9d12, 0x9d41, 0x9d3f, 0x9d3e, 0x9d46, 0x9d48, 0x003f,
+    /* lead byte f3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9d5d, 0x9d5e, 0x9d64, 0x9d51, 0x9d50, 0x9d59, 0x9d72,
+    0x9d89, 0x9d87, 0x9dab, 0x9d6f, 0x9d7a, 0x9d9a, 0x9da4, 0x9da9,
+    0x9db2, 0x9dc4, 0x9dc1, 0x9dbb, 0x9db8, 0x9dba, 0x9dc6, 0x9dcf,
+    0x9dc2, 0x9dd9, 0x9dd3, 0x9df8, 0x9de6, 0x9ded, 0x9def, 0x9dfd,
+    0x9e1a, 0x9e1b, 0x9e1e, 0x9e75, 0x9e79, 0x9e7d, 0x9e81, 0x9e88,
+    0x9e8b, 0x9e8c, 0x9e92, 0x9e95, 0x9e91, 0x9e9d, 0x9ea5, 0x9ea9,
+    0x9eb8, 0x9eaa, 0x9ead, 0x9761, 0x9ecc, 0x9ece, 0x9ecf, 0x9ed0,
+    0x9ed4, 0x9edc, 0x9ede, 0x9edd, 0x9ee0, 0x9ee5, 0x9ee8, 0x9eef,
+    0x9ef4, 0x9ef6, 0x9ef7, 0x9ef9, 0x9efb, 0x9efc, 0x9efd, 0x9f07,
+    0x9f08, 0x76b7, 0x9f15, 0x9f21, 0x9f2c, 0x9f3e, 0x9f4a, 0x9f52,
+    0x9f54, 0x9f63, 0x9f5f, 0x9f60, 0x9f61, 0x9f66, 0x9f67, 0x9f6c,
+    0x9f6a, 0x9f77, 0x9f72, 0x9f76, 0x9f95, 0x9f9c, 0x9fa0, 0x003f,
+    /* lead byte f4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x582f, 0x69c7, 0x9059, 0x7464, 0x51dc, 0x7199, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f
+};
+
+static const unsigned char cp2uni_leadbytes[256] =
+{
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
+    0x0a, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+    0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12,
+    0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a,
+    0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22,
+    0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a,
+    0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32,
+    0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a,
+    0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x01, 0x01, 0x01,
+    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00
+};
+
+static const unsigned short uni2cp_low[27648] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0020, 0x0021, 0xa1f1, 0xa1f2, 0x003f, 0x005c, 0x007c, 0xa1f8,
+    0xa1af, 0x0063, 0x0061, 0xa1d4, 0xa2cc, 0x002d, 0x0072, 0xa1bd,
+    0xa1eb, 0xa1de, 0x0032, 0x0033, 0xa1ad, 0xa6cc, 0xa2f9, 0x003f,
+    0x002c, 0x0031, 0x006f, 0xa1d5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0043,
+    0x0045, 0x0045, 0x0045, 0x0045, 0x0049, 0x0049, 0x0049, 0x0049,
+    0x0044, 0x004e, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0xa1df,
+    0x004f, 0x0055, 0x0055, 0x0055, 0x0055, 0x0059, 0x003f, 0xa6c2,
+    0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0063,
+    0x0065, 0x0065, 0x0065, 0x0065, 0x0069, 0x0069, 0x0069, 0x0069,
+    0x0064, 0x006e, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0xa1e0,
+    0x006f, 0x0075, 0x0075, 0x0075, 0x0075, 0x0079, 0x003f, 0x0079,
+    /* 0x0100 .. 0x01ff */
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0043, 0x0063,
+    0x0043, 0x0063, 0x0043, 0x0063, 0x0043, 0x0063, 0x0044, 0x0064,
+    0x0044, 0x0064, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065,
+    0x0045, 0x0065, 0x0045, 0x0065, 0x0047, 0x0067, 0x0047, 0x0067,
+    0x0047, 0x0067, 0x0047, 0x0067, 0x0048, 0x0068, 0x0048, 0x0068,
+    0x0049, 0x0069, 0x0049, 0x0069, 0x0049, 0x0069, 0x0049, 0x0069,
+    0x0049, 0x0069, 0x003f, 0x003f, 0x004a, 0x006a, 0x004b, 0x006b,
+    0x003f, 0x004c, 0x006c, 0x004c, 0x006c, 0x004c, 0x006c, 0x003f,
+    0x003f, 0x004c, 0x006c, 0x004e, 0x006e, 0x004e, 0x006e, 0x004e,
+    0x006e, 0x003f, 0x003f, 0x003f, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x004f, 0x006f, 0x0052, 0x0072, 0x0052, 0x0072,
+    0x0052, 0x0072, 0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073,
+    0x0053, 0x0073, 0x0054, 0x0074, 0x0054, 0x0074, 0x0054, 0x0074,
+    0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0055, 0x0075, 0x0055, 0x0075, 0x0057, 0x0077, 0x0059, 0x0079,
+    0x0059, 0x005a, 0x007a, 0x005a, 0x007a, 0x005a, 0x007a, 0x0073,
+    0x0062, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0044, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0045, 0x0046, 0x0066, 0x003f, 0x003f, 0x003f, 0x003f, 0x0049,
+    0x003f, 0x003f, 0x006c, 0x003f, 0x003f, 0x003f, 0x003f, 0x004f,
+    0x004f, 0x006f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x0074, 0x003f, 0x003f, 0x0054, 0x0055,
+    0x0075, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x007a, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa8a2, 0x003f, 0x003f, 0x0021, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0041, 0x0061, 0x0049,
+    0x0069, 0x004f, 0x006f, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055,
+    0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x003f, 0x0041, 0x0061,
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0047, 0x0067, 0x0047, 0x0067,
+    0x004b, 0x006b, 0x004f, 0x006f, 0x004f, 0x006f, 0x003f, 0x003f,
+    0x006a, 0x003f, 0x003f, 0x003f, 0x0047, 0x0067, 0x003f, 0x003f,
+    0x004e, 0x006e, 0x0041, 0x0061, 0x0041, 0x0061, 0x004f, 0x006f,
+    /* 0x0200 .. 0x02ff */
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0045, 0x0065, 0x0045, 0x0065,
+    0x0049, 0x0069, 0x0049, 0x0069, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x0052, 0x0072, 0x0052, 0x0072, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0053, 0x0073, 0x0054, 0x0074, 0x003f, 0x003f, 0x0048, 0x0068,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0041, 0x0061,
+    0x0045, 0x0065, 0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x0059, 0x0079, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0067, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0068, 0x003f, 0x006a, 0x0072, 0x003f, 0x003f, 0x003f, 0x0077,
+    0x0079, 0xa1ad, 0xa1ed, 0xa1c6, 0xa1c7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x005e, 0x003f, 0x005e, 0x0076,
+    0x0027, 0xa1bd, 0xa1ad, 0x0060, 0x003f, 0x005f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xa1eb, 0x003f, 0x007e, 0xa1ed, 0x003f, 0x003f,
+    0x003f, 0x006c, 0x0073, 0x0078, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x0300 .. 0x03ff */
+    0x0060, 0xa1ad, 0x005e, 0x007e, 0xa1bd, 0x007e, 0x003f, 0x003f,
+    0xa1af, 0x003f, 0xa1eb, 0xa1ed, 0x0076, 0x003f, 0x0022, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x002c,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x005f, 0x005f, 0x005f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0060, 0xa1ad, 0x003f, 0x003f, 0xa1af, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa1ad, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003b, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa1ad, 0xa1af, 0xa6a1, 0x003f,
+    0xa6a5, 0xa6a7, 0xa6a9, 0x003f, 0xa6af, 0x003f, 0xa6b4, 0xa6b8,
+    0xa6c9, 0xa6a1, 0xa6a2, 0xa6a3, 0xa6a4, 0xa6a5, 0xa6a6, 0xa6a7,
+    0xa6a8, 0xa6a9, 0xa6aa, 0xa6ab, 0xa6ac, 0xa6ad, 0xa6ae, 0xa6af,
+    0xa6b0, 0xa6b1, 0x003f, 0xa6b2, 0xa6b3, 0xa6b4, 0xa6b5, 0xa6b6,
+    0xa6b7, 0xa6b8, 0xa6a9, 0xa6b4, 0xa6c1, 0xa6c5, 0xa6c7, 0xa6c9,
+    0xa6d4, 0xa6c1, 0xa6c2, 0xa6c3, 0xa6c4, 0xa6c5, 0xa6c6, 0xa6c7,
+    0xa6c8, 0xa6c9, 0xa6ca, 0xa6cb, 0xa6cc, 0xa6cd, 0xa6ce, 0xa6cf,
+    0xa6d0, 0xa6d1, 0x003f, 0xa6d2, 0xa6d3, 0xa6d4, 0xa6d5, 0xa6d6,
+    0xa6d7, 0xa6d8, 0xa6c9, 0xa6d4, 0xa6cf, 0xa6d4, 0xa6d8, 0x003f,
+    0xa6c2, 0xa6c8, 0xa6b4, 0xa6b4, 0xa6b4, 0xa6d5, 0xa6d0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa6ca, 0xa6d1, 0x003f, 0x003f, 0xa6a8, 0xa6c5, 0x003f, 0x003f,
+    0x003f, 0xa6b2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x0400 .. 0x04ff */
+    0xa7a6, 0xa7a7, 0x003f, 0xa7a4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa7ac, 0xa7aa, 0xa7b5, 0x003f,
+    0xa7a1, 0xa7a2, 0xa7a3, 0xa7a4, 0xa7a5, 0xa7a6, 0xa7a8, 0xa7a9,
+    0xa7aa, 0xa7ab, 0xa7ac, 0xa7ad, 0xa7ae, 0xa7af, 0xa7b0, 0xa7b1,
+    0xa7b2, 0xa7b3, 0xa7b4, 0xa7b5, 0xa7b6, 0xa7b7, 0xa7b8, 0xa7b9,
+    0xa7ba, 0xa7bb, 0xa7bc, 0xa7bd, 0xa7be, 0xa7bf, 0xa7c0, 0xa7c1,
+    0xa7d1, 0xa7d2, 0xa7d3, 0xa7d4, 0xa7d5, 0xa7d6, 0xa7d8, 0xa7d9,
+    0xa7da, 0xa7db, 0xa7dc, 0xa7dd, 0xa7de, 0xa7df, 0xa7e0, 0xa7e1,
+    0xa7e2, 0xa7e3, 0xa7e4, 0xa7e5, 0xa7e6, 0xa7e7, 0xa7e8, 0xa7e9,
+    0xa7ea, 0xa7eb, 0xa7ec, 0xa7ed, 0xa7ee, 0xa7ef, 0xa7f0, 0xa7f1,
+    0xa7d6, 0xa7d7, 0x003f, 0xa7d4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa7dc, 0xa7da, 0xa7e5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xa7a8, 0xa7d8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa7a1, 0xa7d1, 0xa7a1, 0xa7d1, 0x003f, 0x003f, 0xa7a6, 0xa7d6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa7a8, 0xa7d8, 0xa7a9, 0xa7d9,
+    0x003f, 0x003f, 0xa7aa, 0xa7da, 0xa7aa, 0xa7da, 0xa7b0, 0xa7e0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa7bf, 0xa7ef, 0xa7b5, 0xa7e5,
+    0xa7b5, 0xa7e5, 0xa7b5, 0xa7e5, 0xa7b9, 0xa7e9, 0x003f, 0x003f,
+    0xa7bd, 0xa7ed, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x1d00 .. 0x1dff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x0041, 0x0041, 0x0042, 0x003f,
+    0x0044, 0x0045, 0x003f, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b,
+    0x004c, 0x004d, 0x004e, 0x003f, 0x004f, 0x003f, 0x0050, 0x0052,
+    0x0054, 0x0055, 0x0057, 0x0061, 0x003f, 0x003f, 0x003f, 0x0062,
+    0x0064, 0x0065, 0x003f, 0x003f, 0x003f, 0x0067, 0x003f, 0x006b,
+    0x006d, 0x003f, 0x006f, 0x003f, 0x003f, 0x003f, 0x0070, 0x0074,
+    0x0075, 0x003f, 0x003f, 0x0076, 0x003f, 0xa6c2, 0xa6c3, 0xa6c4,
+    0xa6d5, 0xa6d6, 0x0069, 0x0072, 0x0075, 0x0076, 0xa6c2, 0xa6c3,
+    0xa6d1, 0xa6d5, 0xa6d6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa7df, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x0063, 0x003f, 0x0064, 0x003f,
+    0x0066, 0x003f, 0x0067, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0074, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x007a, 0x003f, 0x003f, 0x003f, 0xa6c8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x1e00 .. 0x1eff */
+    0x0041, 0x0061, 0x0042, 0x0062, 0x0042, 0x0062, 0x0042, 0x0062,
+    0x0043, 0x0063, 0x0044, 0x0064, 0x0044, 0x0064, 0x0044, 0x0064,
+    0x0044, 0x0064, 0x0044, 0x0064, 0x0045, 0x0065, 0x0045, 0x0065,
+    0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, 0x0046, 0x0066,
+    0x0047, 0x0067, 0x0048, 0x0068, 0x0048, 0x0068, 0x0048, 0x0068,
+    0x0048, 0x0068, 0x0048, 0x0068, 0x0049, 0x0069, 0x0049, 0x0069,
+    0x004b, 0x006b, 0x004b, 0x006b, 0x004b, 0x006b, 0x004c, 0x006c,
+    0x004c, 0x006c, 0x004c, 0x006c, 0x004c, 0x006c, 0x004d, 0x006d,
+    0x004d, 0x006d, 0x004d, 0x006d, 0x004e, 0x006e, 0x004e, 0x006e,
+    0x004e, 0x006e, 0x004e, 0x006e, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x004f, 0x006f, 0x0050, 0x0070, 0x0050, 0x0070,
+    0x0052, 0x0072, 0x0052, 0x0072, 0x0052, 0x0072, 0x0052, 0x0072,
+    0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073,
+    0x0053, 0x0073, 0x0054, 0x0074, 0x0054, 0x0074, 0x0054, 0x0074,
+    0x0054, 0x0074, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0055, 0x0075, 0x0055, 0x0075, 0x0056, 0x0076, 0x0056, 0x0076,
+    0x0057, 0x0077, 0x0057, 0x0077, 0x0057, 0x0077, 0x0057, 0x0077,
+    0x0057, 0x0077, 0x0058, 0x0078, 0x0058, 0x0078, 0x0059, 0x0079,
+    0x005a, 0x007a, 0x005a, 0x007a, 0x005a, 0x007a, 0x0068, 0x0074,
+    0x0077, 0x0079, 0x003f, 0x0073, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061,
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061,
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061,
+    0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065,
+    0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065,
+    0x0049, 0x0069, 0x0049, 0x0069, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x004f, 0x006f, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0055, 0x0075, 0x0059, 0x0079, 0x0059, 0x0079, 0x0059, 0x0079,
+    0x0059, 0x0079, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x1f00 .. 0x1fff */
+    0xa6c1, 0xa6c1, 0xa6c1, 0xa6c1, 0xa6c1, 0xa6c1, 0xa6c1, 0xa6c1,
+    0xa6a1, 0xa6a1, 0xa6a1, 0xa6a1, 0xa6a1, 0xa6a1, 0xa6a1, 0xa6a1,
+    0xa6c5, 0xa6c5, 0xa6c5, 0xa6c5, 0xa6c5, 0xa6c5, 0x003f, 0x003f,
+    0xa6a5, 0xa6a5, 0xa6a5, 0xa6a5, 0xa6a5, 0xa6a5, 0x003f, 0x003f,
+    0xa6c7, 0xa6c7, 0xa6c7, 0xa6c7, 0xa6c7, 0xa6c7, 0xa6c7, 0xa6c7,
+    0xa6a7, 0xa6a7, 0xa6a7, 0xa6a7, 0xa6a7, 0xa6a7, 0xa6a7, 0xa6a7,
+    0xa6c9, 0xa6c9, 0xa6c9, 0xa6c9, 0xa6c9, 0xa6c9, 0xa6c9, 0xa6c9,
+    0xa6a9, 0xa6a9, 0xa6a9, 0xa6a9, 0xa6a9, 0xa6a9, 0xa6a9, 0xa6a9,
+    0xa6cf, 0xa6cf, 0xa6cf, 0xa6cf, 0xa6cf, 0xa6cf, 0x003f, 0x003f,
+    0xa6af, 0xa6af, 0xa6af, 0xa6af, 0xa6af, 0xa6af, 0x003f, 0x003f,
+    0xa6d4, 0xa6d4, 0xa6d4, 0xa6d4, 0xa6d4, 0xa6d4, 0xa6d4, 0xa6d4,
+    0x003f, 0xa6b4, 0x003f, 0xa6b4, 0x003f, 0xa6b4, 0x003f, 0xa6b4,
+    0xa6d8, 0xa6d8, 0xa6d8, 0xa6d8, 0xa6d8, 0xa6d8, 0xa6d8, 0xa6d8,
+    0xa6b8, 0xa6b8, 0xa6b8, 0xa6b8, 0xa6b8, 0xa6b8, 0xa6b8, 0xa6b8,
+    0xa6c1, 0xa6c1, 0xa6c5, 0xa6c5, 0xa6c7, 0xa6c7, 0xa6c9, 0xa6c9,
+    0xa6cf, 0xa6cf, 0xa6d4, 0xa6d4, 0xa6d8, 0xa6d8, 0x003f, 0x003f,
+    0xa6c1, 0xa6c1, 0xa6c1, 0xa6c1, 0xa6c1, 0xa6c1, 0xa6c1, 0xa6c1,
+    0xa6a1, 0xa6a1, 0xa6a1, 0xa6a1, 0xa6a1, 0xa6a1, 0xa6a1, 0xa6a1,
+    0xa6c7, 0xa6c7, 0xa6c7, 0xa6c7, 0xa6c7, 0xa6c7, 0xa6c7, 0xa6c7,
+    0xa6a7, 0xa6a7, 0xa6a7, 0xa6a7, 0xa6a7, 0xa6a7, 0xa6a7, 0xa6a7,
+    0xa6d8, 0xa6d8, 0xa6d8, 0xa6d8, 0xa6d8, 0xa6d8, 0xa6d8, 0xa6d8,
+    0xa6b8, 0xa6b8, 0xa6b8, 0xa6b8, 0xa6b8, 0xa6b8, 0xa6b8, 0xa6b8,
+    0xa6c1, 0xa6c1, 0xa6c1, 0xa6c1, 0xa6c1, 0x003f, 0xa6c1, 0xa6c1,
+    0xa6a1, 0xa6a1, 0xa6a1, 0xa6a1, 0xa6a1, 0x003f, 0xa6c9, 0x003f,
+    0x003f, 0xa1af, 0xa6c7, 0xa6c7, 0xa6c7, 0x003f, 0xa6c7, 0xa6c7,
+    0xa6a5, 0xa6a5, 0xa6a7, 0xa6a7, 0xa6a7, 0x003f, 0x003f, 0x003f,
+    0xa6c9, 0xa6c9, 0xa6c9, 0xa6c9, 0x003f, 0x003f, 0xa6c9, 0xa6c9,
+    0xa6a9, 0xa6a9, 0xa6a9, 0xa6a9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa6d4, 0xa6d4, 0xa6d4, 0xa6d4, 0xa6d1, 0xa6d1, 0xa6d4, 0xa6d4,
+    0xa6b4, 0xa6b4, 0xa6b4, 0xa6b4, 0xa6b1, 0xa1af, 0xa1af, 0x0060,
+    0x003f, 0x003f, 0xa6d8, 0xa6d8, 0xa6d8, 0x003f, 0xa6d8, 0xa6d8,
+    0xa6af, 0xa6af, 0xa6b8, 0xa6b8, 0xa6b8, 0xa1ad, 0x003f, 0x003f,
+    /* 0x2000 .. 0x20ff */
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+    0x0020, 0x0020, 0x0020, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa1be, 0xa1be, 0x003f, 0xa1bd, 0xa1bd, 0xa1bd, 0xa1c2, 0x005f,
+    0xa1c6, 0xa1c7, 0x002c, 0xa1c6, 0xa1c8, 0xa1c9, 0x002c, 0x003f,
+    0xa2f7, 0xa2f8, 0x003f, 0x003f, 0x002e, 0xa1c5, 0xa1c4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0020,
+    0xa2f3, 0x003f, 0xa1ec, 0xa1ed, 0x003f, 0xa1c6, 0x003f, 0x003f,
+    0x003f, 0xa1d2, 0xa1d3, 0xa2a8, 0x0021, 0x003f, 0x007e, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x002f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0020,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa1eb, 0x0069, 0x003f, 0x003f, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x002b, 0xa1dd, 0x003d, 0x0028, 0x0029, 0x006e,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x002b, 0xa1dd, 0x003d, 0x0028, 0x0029, 0x003f,
+    0x0061, 0x0065, 0x006f, 0x0078, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xa1f1, 0x003f, 0x003f, 0xa1f2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2100 .. 0x21ff */
+    0x003f, 0x003f, 0x0043, 0xa1ee, 0x003f, 0x003f, 0x003f, 0x0045,
+    0x003f, 0x003f, 0x0067, 0x0048, 0x0048, 0x0048, 0x0068, 0x0068,
+    0x0049, 0x0049, 0x004c, 0x006c, 0x003f, 0x004e, 0x003f, 0x003f,
+    0x0050, 0x0050, 0x0051, 0x0052, 0x0052, 0x0052, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x005a, 0x003f, 0xa6b8, 0x003f,
+    0x005a, 0x003f, 0x004b, 0xa2f2, 0x0042, 0x0043, 0x0065, 0x0065,
+    0x0045, 0x0046, 0x003f, 0x004d, 0x006f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0069, 0x003f, 0x003f, 0xa6d0, 0xa6c3, 0xa6a3, 0xa6b0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0044, 0x0064, 0x0065,
+    0x0069, 0x006a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0049, 0x003f, 0x003f, 0x003f, 0x0056, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0058, 0x003f, 0x003f, 0x004c, 0x0043, 0x0044, 0x004d,
+    0x0069, 0x003f, 0x003f, 0x003f, 0x0076, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0078, 0x003f, 0x003f, 0x006c, 0x0063, 0x0064, 0x006d,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa2ab, 0xa2ac, 0xa2aa, 0xa2ad, 0x002d, 0x007c, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xa2ab, 0xa2aa, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x002d, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa2ce, 0xa2cd,
+    0x003f, 0x003f, 0xa2cd, 0x003f, 0xa2ce, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2200 .. 0x22ff */
+    0xa2cf, 0x003f, 0xa2df, 0xa2d0, 0xa2d0, 0x004f, 0x003f, 0xa2e0,
+    0xa2ba, 0xa2ba, 0x003f, 0xa2bb, 0xa2bb, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xa1dd, 0xa1de, 0x003f, 0x002f, 0x005c, 0x002a,
+    0xa1eb, 0x003f, 0xa2e5, 0x003f, 0x003f, 0xa2e7, 0xa1e7, 0x004c,
+    0xa2dc, 0x003f, 0x003f, 0x007c, 0x007c, 0x003f, 0x003f, 0xa2ca,
+    0xa2cb, 0xa2c1, 0xa2c0, 0xa2e9, 0xa2ea, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa1e8, 0xa2e8, 0x003a, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x007e, 0xa2e6, 0x003f, 0x003f,
+    0x003f, 0x007e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x007e, 0x007e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xa2e2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa1e2, 0xa2e1, 0xa2e1, 0xa2e1, 0x003f, 0x003f, 0xa1e5, 0xa1e6,
+    0x003f, 0x003f, 0xa2e3, 0xa2e4, 0x003f, 0x003f, 0x003c, 0x003e,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xa2be, 0xa2bf, 0xa2be, 0xa2bf, 0xa2bc, 0xa2bd,
+    0xa2bc, 0xa2bd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa2dd, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2300 .. 0x23ff */
+    0x003f, 0x003f, 0x003f, 0x005e, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xa2de, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xa1d2, 0xa1d3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2400 .. 0x24ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038,
+    0x0039, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0041, 0x0042,
+    0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a,
+    0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052,
+    0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a,
+    0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068,
+    0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+    0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+    0x0079, 0x007a, 0x0030, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2500 .. 0x25ff */
+    0xa8a1, 0xa8ac, 0xa8a2, 0xa8ad, 0x002d, 0x002d, 0x007c, 0x007c,
+    0x002d, 0x002d, 0x007c, 0x007c, 0xa8a3, 0xa8a3, 0xa8a3, 0xa8ae,
+    0xa8a4, 0xa8a4, 0xa8a4, 0xa8af, 0xa8a6, 0xa8a6, 0xa8a6, 0xa8b1,
+    0xa8a5, 0xa8a5, 0xa8a5, 0xa8b0, 0xa8a7, 0xa8bc, 0xa8a7, 0xa8a7,
+    0xa8b7, 0xa8a7, 0xa8a7, 0xa8b2, 0xa8a9, 0xa8be, 0xa8a9, 0xa8a9,
+    0xa8b9, 0xa8a9, 0xa8a9, 0xa8b4, 0xa8a8, 0xa8a8, 0xa8a8, 0xa8b8,
+    0xa8bd, 0xa8a8, 0xa8a8, 0xa8b3, 0xa8aa, 0xa8aa, 0xa8aa, 0xa8ba,
+    0xa8bf, 0xa8aa, 0xa8aa, 0xa8b5, 0xa8ab, 0xa8ab, 0xa8ab, 0xa8bb,
+    0xa8ab, 0xa8ab, 0xa8c0, 0xa8ab, 0xa8ab, 0xa8ab, 0xa8ab, 0xa8ab,
+    0xa8ab, 0xa8ab, 0xa8ab, 0xa8b6, 0x002d, 0x002d, 0x007c, 0x007c,
+    0x003d, 0x007c, 0x002b, 0x002b, 0x002b, 0xa2cc, 0xa2cc, 0xa2cc,
+    0x004c, 0x004c, 0x004c, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b,
+    0x002b, 0x002b, 0x002b, 0x002b, 0x0054, 0x0054, 0x0054, 0x002b,
+    0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x002f, 0x005c, 0x0058, 0x002d, 0x007c, 0x002d, 0x007c,
+    0x002d, 0x007c, 0x002d, 0x007c, 0x002d, 0x007c, 0x002d, 0x007c,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa2a3, 0xa2a2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xa2a5, 0xa2a4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa2a7, 0xa2a6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa2a1, 0xa1fe,
+    0x003f, 0x003f, 0x003f, 0xa1fb, 0x003f, 0x003f, 0xa1fd, 0xa1fc,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa2fe,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2600 .. 0x26ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa1fa, 0xa1f9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa1ea, 0x003f, 0xa1e9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xa2f6, 0x003f, 0x003f, 0xa2f5, 0x003f, 0xa2f4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2e00 .. 0x2eff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcaec,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2f00 .. 0x2fff */
+    0xb0ec, 0x003f, 0xd0a6, 0xd0a8, 0xb2b5, 0xd0ad, 0xc6f3, 0xd0b5,
+    0xbfcd, 0xd1b9, 0xc6fe, 0xc8ac, 0xd1c4, 0xd1cc, 0xd1d2, 0xd1dc,
+    0xd1e1, 0xc5e1, 0xcecf, 0xd2b1, 0xd2b8, 0xd2b9, 0xd2be, 0xbdbd,
+    0xcbce, 0xd2c7, 0xd2cc, 0xd2d3, 0xcbf4, 0xb8fd, 0xd3f8, 0xc5da,
+    0xbbce, 0xd4e9, 0xd4ea, 0xcdbc, 0xc2e7, 0xbdf7, 0xbbd2, 0xd5df,
+    0xc0a3, 0xbeae, 0xd5f7, 0xd5f9, 0xd6a5, 0xbbb3, 0xd6df, 0xb9a9,
+    0xb8ca, 0xb6d2, 0xb4b3, 0xd6f6, 0xd6f8, 0xd7ae, 0xd7b0, 0xd7b5,
+    0xb5dd, 0x003f, 0xd7c4, 0xd7c6, 0xbfb4, 0xd8f9, 0x003f, 0xbcea,
+    0xbbd9, 0xdabd, 0xcab8, 0xc5cd, 0xb6d4, 0xcafd, 0xdadb, 0xc6fc,
+    0xdba9, 0xb7ee, 0xccda, 0xb7e7, 0xbbdf, 0xddc6, 0xddd5, 0xddd9,
+    0xc8e6, 0xccd3, 0xbbe1, 0xdde3, 0xbfe5, 0xb2d0, 0xc4de, 0xc9e3,
+    0xe0ab, 0xe0ad, 0xcad2, 0xb2e7, 0xb5ed, 0xb8a4, 0xb8bc, 0xb6cc,
+    0xb1bb, 0xb4a4, 0xb4c5, 0xc0b8, 0xcdd1, 0xc5c4, 0xc9a5, 0x003f,
+    0xe2a2, 0xc7f2, 0xc8e9, 0xbbae, 0xccdc, 0xccb7, 0xccf0, 0xc0d0,
+    0xbca8, 0x003f, 0xb2d3, 0xb7ea, 0xcea9, 0xc3dd, 0xcac6, 0xbbe5,
+    0xb4cc, 0xe6a6, 0xcdd3, 0xb1a9, 0xcfb7, 0xbca9, 0xe6d0, 0xbcaa,
+    0xe6e6, 0xc6f9, 0xbfc3, 0xbcab, 0xbbea, 0xb1b1, 0xc0e5, 0xc1a4,
+    0xbdae, 0xbab1, 0xbfa7, 0xe7e7, 0xe9c8, 0xc3ee, 0xb7ec, 0xb9d4,
+    0xb0e1, 0xeba8, 0xb8ab, 0xb3d1, 0xb8c0, 0xc3ab, 0xc6a6, 0xecb5,
+    0xecb8, 0xb3ad, 0xc0d6, 0xc1f6, 0xc2ad, 0xbfc8, 0xbcd6, 0xbfc9,
+    0xc3a4, 0x003f, 0xcdb8, 0xc6d3, 0xc8d0, 0xcea4, 0xb6e2, 0xc4b9,
+    0xcce7, 0xc9ec, 0xf0b0, 0xf0b2, 0xb1ab, 0x003f, 0xc8f3, 0xcccc,
+    0xb3d7, 0xf0ea, 0xf0ec, 0xb2bb, 0xcac7, 0xc9f7, 0xc8f4, 0xbfa9,
+    0xbcf3, 0xb9e1, 0xc7cf, 0xb9fc, 0xb9e2, 0xf1f5, 0xf2a8, 0xf2ae,
+    0xf2af, 0xb5b4, 0xb5fb, 0xc4bb, 0xf3c3, 0xbcaf, 0xf3ce, 0xcbe3,
+    0x003f, 0xb5d0, 0x003f, 0xf3e3, 0xf3e6, 0xc5a4, 0xb8dd, 0xc1cd,
+    0xc9a1, 0xf3ee, 0xf3ef, 0xceb6, 0xf3fd, 0xf3fe, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x3000 .. 0x30ff */
+    0xa1a1, 0xa1a2, 0xa1a3, 0xa1b7, 0x003f, 0xa1b9, 0xa1ba, 0xa1bb,
+    0xa1d2, 0xa1d3, 0xa1d4, 0xa1d5, 0xa1d6, 0xa1d7, 0xa1d8, 0xa1d9,
+    0xa1da, 0xa1db, 0xa2a9, 0xa2ae, 0xa1cc, 0xa1cd, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x005b, 0x005d, 0xa1c1, 0xa1c8, 0xa1c9, 0x002c,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa2a9, 0x003f,
+    0xbdbd, 0x003f, 0xd2c1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xa4a1, 0xa4a2, 0xa4a3, 0xa4a4, 0xa4a5, 0xa4a6, 0xa4a7,
+    0xa4a8, 0xa4a9, 0xa4aa, 0xa4ab, 0xa4ac, 0xa4ad, 0xa4ae, 0xa4af,
+    0xa4b0, 0xa4b1, 0xa4b2, 0xa4b3, 0xa4b4, 0xa4b5, 0xa4b6, 0xa4b7,
+    0xa4b8, 0xa4b9, 0xa4ba, 0xa4bb, 0xa4bc, 0xa4bd, 0xa4be, 0xa4bf,
+    0xa4c0, 0xa4c1, 0xa4c2, 0xa4c3, 0xa4c4, 0xa4c5, 0xa4c6, 0xa4c7,
+    0xa4c8, 0xa4c9, 0xa4ca, 0xa4cb, 0xa4cc, 0xa4cd, 0xa4ce, 0xa4cf,
+    0xa4d0, 0xa4d1, 0xa4d2, 0xa4d3, 0xa4d4, 0xa4d5, 0xa4d6, 0xa4d7,
+    0xa4d8, 0xa4d9, 0xa4da, 0xa4db, 0xa4dc, 0xa4dd, 0xa4de, 0xa4df,
+    0xa4e0, 0xa4e1, 0xa4e2, 0xa4e3, 0xa4e4, 0xa4e5, 0xa4e6, 0xa4e7,
+    0xa4e8, 0xa4e9, 0xa4ea, 0xa4eb, 0xa4ec, 0xa4ed, 0xa4ee, 0xa4ef,
+    0xa4f0, 0xa4f1, 0xa4f2, 0xa4f3, 0xa4a6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xa1ab, 0xa1ac, 0xa1b5, 0xa1b6, 0x003f,
+    0x003f, 0xa5a1, 0xa5a2, 0xa5a3, 0xa5a4, 0xa5a5, 0xa5a6, 0xa5a7,
+    0xa5a8, 0xa5a9, 0xa5aa, 0xa5ab, 0xa5ac, 0xa5ad, 0xa5ae, 0xa5af,
+    0xa5b0, 0xa5b1, 0xa5b2, 0xa5b3, 0xa5b4, 0xa5b5, 0xa5b6, 0xa5b7,
+    0xa5b8, 0xa5b9, 0xa5ba, 0xa5bb, 0xa5bc, 0xa5bd, 0xa5be, 0xa5bf,
+    0xa5c0, 0xa5c1, 0xa5c2, 0xa5c3, 0xa5c4, 0xa5c5, 0xa5c6, 0xa5c7,
+    0xa5c8, 0xa5c9, 0xa5ca, 0xa5cb, 0xa5cc, 0xa5cd, 0xa5ce, 0xa5cf,
+    0xa5d0, 0xa5d1, 0xa5d2, 0xa5d3, 0xa5d4, 0xa5d5, 0xa5d6, 0xa5d7,
+    0xa5d8, 0xa5d9, 0xa5da, 0xa5db, 0xa5dc, 0xa5dd, 0xa5de, 0xa5df,
+    0xa5e0, 0xa5e1, 0xa5e2, 0xa5e3, 0xa5e4, 0xa5e5, 0xa5e6, 0xa5e7,
+    0xa5e8, 0xa5e9, 0xa5ea, 0xa5eb, 0xa5ec, 0xa5ed, 0xa5ee, 0xa5ef,
+    0xa5f0, 0xa5f1, 0xa5f2, 0xa5f3, 0xa5f4, 0xa5f5, 0xa5f6, 0xa5ef,
+    0xa5f0, 0xa5f1, 0xa5f2, 0xa1a6, 0xa1bc, 0xa1b3, 0xa1b4, 0x003f,
+    /* 0x3100 .. 0x31ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb0ec, 0xc6f3, 0xbbb0, 0xbbcd, 0xbee5, 0xc3e6,
+    0xb2bc, 0xb9c3, 0xb2b5, 0xcaba, 0xc3fa, 0xc5b7, 0xc3cf, 0xbfcd,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x3200 .. 0x32ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xb0ec, 0xc6f3, 0xbbb0, 0xbbcd, 0xb8de, 0xcfbb, 0xbcb7, 0xc8ac,
+    0xb6e5, 0xbdbd, 0xb7ee, 0xb2d0, 0xbfe5, 0xccda, 0xb6e2, 0xc5da,
+    0xc6fc, 0xb3f4, 0xcdad, 0xbcd2, 0xccbe, 0xc6c3, 0xbae2, 0xbdcb,
+    0xcfab, 0xc8eb, 0xc3cb, 0xbdf7, 0xc5ac, 0xcda5, 0xb0f5, 0xc3ed,
+    0xb9e0, 0xb5d9, 0xbccc, 0xc0b5, 0xbee5, 0xc3e6, 0xb2bc, 0xbab8,
+    0xb1a6, 0xb0e5, 0xbda1, 0xb3d8, 0xb4c6, 0xb4eb, 0xbbf1, 0xb6a8,
+    0xcceb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa5a2, 0xa5a4, 0xa5a6, 0xa5a8, 0xa5aa, 0xa5ab, 0xa5ad, 0xa5af,
+    0xa5b1, 0xa5b3, 0xa5b5, 0xa5b7, 0xa5b9, 0xa5bb, 0xa5bd, 0xa5bf,
+    0xa5c1, 0xa5c4, 0xa5c6, 0xa5c8, 0xa5ca, 0xa5cb, 0xa5cc, 0xa5cd,
+    0xa5ce, 0xa5cf, 0xa5d2, 0xa5d5, 0xa5d8, 0xa5db, 0xa5de, 0xa5df,
+    0xa5e0, 0xa5e1, 0xa5e2, 0xa5e4, 0xa5e6, 0xa5e8, 0xa5e9, 0xa5ea,
+    0xa5eb, 0xa5ec, 0xa5ed, 0xa5ef, 0xa5f0, 0xa5f1, 0xa5f2, 0x003f,
+    /* 0x4e00 .. 0x4eff */
+    0xb0ec, 0xc3fa, 0x003f, 0xbcb7, 0x003f, 0x003f, 0x003f, 0xcbfc,
+    0xbee6, 0xbbb0, 0xbee5, 0xb2bc, 0x003f, 0xc9d4, 0xcdbf, 0x003f,
+    0xd0a2, 0xb1af, 0x003f, 0x003f, 0xb3ee, 0xd0a3, 0xc0a4, 0xd2c2,
+    0xb5d6, 0xcaba, 0x003f, 0x003f, 0x003f, 0x003f, 0xbee7, 0x003f,
+    0x003f, 0xcebe, 0x003f, 0x003f, 0x003f, 0x003f, 0xcac2, 0x003f,
+    0x003f, 0x003f, 0xd0a4, 0x003f, 0x003f, 0xc3e6, 0x003f, 0x003f,
+    0x003f, 0xd0a5, 0xb6fa, 0x003f, 0x003f, 0x003f, 0xd0a6, 0x003f,
+    0xb4dd, 0xc3b0, 0x003f, 0xbce7, 0xd0a7, 0x003f, 0x003f, 0xd0a8,
+    0x003f, 0x003f, 0xd0a9, 0xc7b5, 0x003f, 0xb5d7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xc7b7, 0x003f, 0xc6e3, 0xb8c3, 0xcbb3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9c9, 0xd0aa, 0xbee8,
+    0xd0ab, 0xb2b5, 0x003f, 0x003f, 0x003f, 0xb6e5, 0xb8f0, 0xcce9,
+    0x003f, 0x003f, 0xd6a6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcdf0, 0x003f, 0xc6fd, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb4a5, 0x003f,
+    0xb5b5, 0x003f, 0xd0ac, 0x003f, 0x003f, 0xd0ad, 0xcebb, 0x003f,
+    0xcdbd, 0xc1e8, 0xd0af, 0xbbf6, 0xc6f3, 0x003f, 0xd0b2, 0x003f,
+    0x003f, 0xb1be, 0xb8df, 0x003f, 0xb8de, 0xb0e6, 0x003f, 0x003f,
+    0xcfcb, 0xcfca, 0x003f, 0xbab3, 0xb0a1, 0x003f, 0xd0b3, 0xd0b4,
+    0xd0b5, 0xcbb4, 0xd0b6, 0x003f, 0xb8f2, 0xb0e7, 0xcbf2, 0x003f,
+    0xb5fc, 0x003f, 0x003f, 0xb5fd, 0xb5fe, 0xc4e2, 0xcebc, 0x003f,
+    0xd0b7, 0x003f, 0x003f, 0xd0b8, 0x003f, 0x003f, 0xd0b9, 0x003f,
+    0x003f, 0x003f, 0xbfcd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xbdba, 0xbfce, 0xd0be, 0x003f, 0xd0bc, 0x003f, 0xd0bd, 0xb5d8,
+    0x003f, 0x003f, 0xbaa3, 0xb2f0, 0x003f, 0xd0bb, 0xd0ba, 0xcaa9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xbbc6, 0xbbc5, 0xc2be, 0xd0bf,
+    0xc9d5, 0xc0e7, 0x003f, 0x003f, 0x003f, 0xa1b8, 0xd0c0, 0xd0c2,
+    0x003f, 0x003f, 0x003f, 0xc2e5, 0xcee1, 0xb0ca, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd0c1, 0xb2be, 0x003f,
+    0xb6c4, 0x003f, 0xc3e7, 0x003f, 0x003f, 0x003f, 0xb7ef, 0xd0c3,
+    0x003f, 0x003f, 0x003f, 0xc7a4, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x4f00 .. 0x4fff */
+    0x003f, 0xb4eb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd0c4, 0xb0cb, 0x003f, 0x003f, 0xb8e0, 0xb4ec, 0xc9fa,
+    0xc8b2, 0xb5d9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb2f1, 0x003f, 0xd0e7, 0xc5c1, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc7ec,
+    0xd0c6, 0x003f, 0x003f, 0x003f, 0xc8bc, 0x003f, 0xcee2, 0x003f,
+    0xbfad, 0x003f, 0xbbc7, 0x003f, 0xbbf7, 0xb2c0, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xc4d1, 0x003f, 0x003f, 0xc3a2, 0xd0ca,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb0cc, 0xc4e3, 0xbdbb,
+    0xbab4, 0xcda4, 0x003f, 0xc2ce, 0x003f, 0xb2bf, 0x003f, 0xd0c9,
+    0x003f, 0xcdbe, 0xd0c5, 0xd0c7, 0xbaee, 0xd0c8, 0xd5a4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd0d0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd0d3,
+    0xd0d1, 0x003f, 0x003f, 0xb2c2, 0x003f, 0xcabb, 0xd0cb, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd0cf, 0xb8f3, 0x003f, 0x003f, 0xbbc8,
+    0x003f, 0x003f, 0x003f, 0xb4a6, 0x003f, 0x003f, 0xd0d4, 0x003f,
+    0xd0cc, 0x003f, 0x003f, 0xcee3, 0x003f, 0xbbf8, 0x003f, 0xd0cd,
+    0x003f, 0xd0d2, 0x003f, 0x003f, 0x003f, 0x003f, 0xd0d5, 0x003f,
+    0xd0ce, 0x003f, 0x003f, 0xb6a1, 0x003f, 0xb0cd, 0x003f, 0x003f,
+    0xb6a2, 0xb2c1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd5a5, 0x003f, 0xcbf9, 0xc9ee, 0xb8f4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xbfaf, 0xceb7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcad8,
+    0x003f, 0x003f, 0xb7b8, 0xc2a5, 0xb2e4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xbdd3, 0x003f, 0x003f, 0x003f, 0xd0d9, 0x003f,
+    0xd0de, 0xd0dc, 0x003f, 0x003f, 0xd0d7, 0x003f, 0x003f, 0xc2af,
+    0xd0da, 0x003f, 0xd0dd, 0xd0db, 0x003f, 0xcadd, 0x003f, 0xd0d8,
+    0x003f, 0xbfae, 0x003f, 0xcbf3, 0xd0df, 0xd0e0, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xbda4, 0xd0ed,
+    0x003f, 0x003f, 0x003f, 0xc7d0, 0x003f, 0xc9b6, 0xd0e8, 0x003f,
+    0xcaf0, 0x003f, 0xb2b6, 0x003f, 0x003f, 0x003f, 0xd0ec, 0x003f,
+    /* 0x5000 .. 0x50ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd0e6, 0xd0ef, 0x003f,
+    0x003f, 0xc1d2, 0x003f, 0xb8c4, 0x003f, 0xc7dc, 0x003f, 0xe0c7,
+    0x003f, 0xd0ee, 0xc5dd, 0x003f, 0xd0e3, 0x003f, 0xb8f6, 0x003f,
+    0x003f, 0xb8f5, 0xd0e1, 0x003f, 0x003f, 0x003f, 0x003f, 0xbcda,
+    0x003f, 0xd0e9, 0x003f, 0xcaef, 0xc3cd, 0xd0e5, 0xb7f1, 0x003f,
+    0xd0e2, 0xd0ea, 0xd0e4, 0xced1, 0xd0eb, 0xcfc1, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb6e6, 0x003f,
+    0x003f, 0xb7f0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd0f0, 0x003f, 0x003f, 0x003f, 0xd0f1,
+    0xd0f5, 0xb0ce, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcad0,
+    0xd0f4, 0x003f, 0x003f, 0x003f, 0x003f, 0xd0f3, 0xd0f7, 0x003f,
+    0x003f, 0x003f, 0xd0f6, 0x003f, 0xc4e4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb7f2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd0f8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xbcc5, 0x003f, 0xc2a6, 0xc4e5, 0xb6f6, 0x003f,
+    0xd0f9, 0x003f, 0x003f, 0x003f, 0x003f, 0xb5b6, 0x003f, 0x003f,
+    0xd0fa, 0x003f, 0x003f, 0x003f, 0x003f, 0xd0fc, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcbb5, 0x003f, 0x003f,
+    0x003f, 0xb7e6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xbbb1, 0xc8f7, 0xd0fb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xbac5, 0xcdc3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd0fe, 0xd1a3, 0xd0fd, 0xbac4, 0x003f, 0xbdfd,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb7b9, 0x003f,
+    0x003f, 0x003f, 0xd1a4, 0x003f, 0x003f, 0xb6cf, 0x003f, 0x003f,
+    0x003f, 0xd1a1, 0xd1a2, 0x003f, 0x003f, 0xc6af, 0x003f, 0xc1fc,
+    0x003f, 0xb6a3, 0x003f, 0x003f, 0x003f, 0xcbcd, 0xd1a5, 0x003f,
+    0x003f, 0x003f, 0xcebd, 0x003f, 0x003f, 0x003f, 0xd1a6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd1a9, 0x003f, 0xd1a7, 0x003f, 0xc1ce,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd1a8, 0xd1aa, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd1ac, 0x003f, 0x003f,
+    0x003f, 0xd1ab, 0x003f, 0xcac8, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x5100 .. 0x51ff */
+    0xb5b7, 0xd1ae, 0xd1af, 0x003f, 0xb2af, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd1ad, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xbcf4, 0x003f, 0xd1b2, 0xd1b1, 0xd1b0, 0x003f,
+    0xd0d6, 0x003f, 0xd1b3, 0x003f, 0x003f, 0x003f, 0x003f, 0xbdfe,
+    0x003f, 0xd1b4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xcda5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xccd9, 0x003f, 0x003f, 0x003f, 0x003f, 0xd1b6,
+    0x003f, 0x003f, 0xd1b5, 0xd1b8, 0xd1b7, 0x003f, 0x003f, 0xd1b9,
+    0xd1ba, 0xb0f4, 0x003f, 0xb8b5, 0xb7bb, 0xbdbc, 0xc3fb, 0xb6a4,
+    0xc0e8, 0xb8f7, 0x003f, 0xb9ee, 0xd1bc, 0xccc8, 0xc5c6, 0x003f,
+    0xbbf9, 0x003f, 0xd1bb, 0x003f, 0xd1bd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xc5de, 0x003f, 0xb3f5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd1be, 0x003f, 0x003f, 0xc6fe, 0x003f, 0x003f,
+    0xc1b4, 0xd1c0, 0xd1c1, 0xc8ac, 0xb8f8, 0xcfbb, 0xd1c2, 0x003f,
+    0x003f, 0xb6a6, 0x003f, 0x003f, 0x003f, 0xcabc, 0xc2b6, 0xb6f1,
+    0xc5b5, 0x003f, 0x003f, 0x003f, 0xb7f3, 0x003f, 0x003f, 0x003f,
+    0xd1c3, 0x003f, 0xd1c4, 0x003f, 0x003f, 0xc6e2, 0xb1df, 0x003f,
+    0x003f, 0xd1c7, 0xbafd, 0x003f, 0xd1c6, 0xbac6, 0x003f, 0xd1c8,
+    0xe6ee, 0xd1c9, 0xcbc1, 0xd1ca, 0x003f, 0xd1cb, 0xd1cc, 0xbee9,
+    0x003f, 0xbccc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xb4a7, 0x003f, 0xd1cf, 0x003f, 0xd1cd, 0xccbd, 0xd1ce, 0x003f,
+    0xc9da, 0xd1d0, 0xd1d1, 0xd1d2, 0xc5df, 0x003f, 0x003f, 0x003f,
+    0xd1d6, 0xd1d4, 0xd1d5, 0xd1d3, 0xbae3, 0xd1d7, 0xccea, 0xcee4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd1d8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xc0a8, 0xd1d9, 0xbdda, 0x003f,
+    0x003f, 0xd1da, 0x003f, 0xc3fc, 0xcebf, 0xc5e0, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd2c5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd1db, 0xf4a5, 0xb6c5, 0x003f, 0x003f,
+    0xd1dc, 0xcbde, 0x003f, 0x003f, 0x003f, 0x003f, 0xbde8, 0xc2fc,
+    0x003f, 0xd1de, 0xc6e4, 0x003f, 0x003f, 0xd1df, 0x003f, 0x003f,
+    0xd1e0, 0xb3ae, 0x003f, 0x003f, 0x003f, 0xd1e1, 0xb6a7, 0x003f,
+    0xc6cc, 0xb1fa, 0xbdd0, 0x003f, 0x003f, 0xc8a1, 0xd1e2, 0x003f,
+    /* 0x5200 .. 0x52ff */
+    0xc5e1, 0x003f, 0x003f, 0xbfcf, 0xd1e3, 0x003f, 0xcaac, 0xc0da,
+    0xb4a2, 0x003f, 0xb4a9, 0xd1e4, 0x003f, 0x003f, 0xd1e6, 0x003f,
+    0x003f, 0xb7ba, 0x003f, 0x003f, 0xd1e5, 0x003f, 0x003f, 0xcef3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xbde9, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xc8bd, 0xcacc, 0x003f, 0xd1e7,
+    0x003f, 0xcdf8, 0xd1e8, 0x003f, 0x003f, 0x003f, 0xd1e9, 0x003f,
+    0xc5fe, 0x003f, 0x003f, 0xd1ea, 0x003f, 0x003f, 0xc0a9, 0xbafe,
+    0xb7f4, 0xd1eb, 0xbbc9, 0xb9ef, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xc4e6, 0xd1ed, 0x003f, 0x003f, 0xc2a7,
+    0x003f, 0x003f, 0xbaef, 0xd1ee, 0xd1ef, 0xc1b0, 0x003f, 0xd1ec,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd1f1, 0x003f, 0xcbb6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb9e4, 0x003f, 0x003f, 0xd1f0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb7f5, 0xbade, 0xc7ed, 0x003f, 0x003f,
+    0x003f, 0xd1f4, 0xd1f2, 0x003f, 0x003f, 0x003f, 0x003f, 0xc9fb,
+    0xbeea, 0xd1fb, 0xb3e4, 0xd1f5, 0xd1f3, 0xc1cf, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd1f7, 0x003f, 0xd1f6,
+    0x003f, 0x003f, 0x003f, 0xb3c4, 0x003f, 0x003f, 0x003f, 0xb7e0,
+    0xd1fc, 0xcead, 0x003f, 0x003f, 0x003f, 0xd1f8, 0x003f, 0x003f,
+    0x003f, 0xd1fd, 0xd1fa, 0x003f, 0xd1f9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xcecf, 0x003f, 0x003f, 0x003f, 0xb8f9,
+    0xb2c3, 0x003f, 0x003f, 0xcef4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbdf5, 0xc5d8, 0xb9e5, 0xd2a2, 0xd2a3, 0x003f, 0x003f,
+    0x003f, 0xcee5, 0x003f, 0x003f, 0xcfab, 0xd2a5, 0x003f, 0x003f,
+    0x003f, 0xb8fa, 0x003f, 0x003f, 0xd2a4, 0x003f, 0xb3af, 0x003f,
+    0x003f, 0xd2a6, 0x003f, 0xcbd6, 0x003f, 0xc4bc, 0x003f, 0xcda6,
+    0x003f, 0xcad9, 0x003f, 0x003f, 0x003f, 0xd2a7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf0d5, 0x003f, 0x003f, 0xc6b0, 0x003f, 0xd2a8,
+    0xb4aa, 0xccb3, 0x003f, 0x003f, 0x003f, 0xbea1, 0xd2a9, 0xcae7,
+    0xd2ad, 0x003f, 0xc0aa, 0xd2aa, 0xb6d0, 0x003f, 0xd2ab, 0xb4ab,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb7ae, 0xd2ae, 0x003f, 0xd2af, 0x003f, 0x003f,
+    0xd2b0, 0xd2b1, 0xbcdb, 0x003f, 0x003f, 0x003f, 0xb8fb, 0xccde,
+    /* 0x5300 .. 0x53ff */
+    0x003f, 0xcce8, 0xc6f7, 0x003f, 0x003f, 0xcaf1, 0xd2b2, 0x003f,
+    0xd2b3, 0x003f, 0x003f, 0x003f, 0x003f, 0xd2b5, 0x003f, 0xd2b7,
+    0xd2b6, 0x003f, 0x003f, 0x003f, 0x003f, 0xd2b8, 0xb2bd, 0xcbcc,
+    0x003f, 0xbafc, 0xd2b9, 0x003f, 0x003f, 0xc1d9, 0x003f, 0x003f,
+    0xbea2, 0xb6a9, 0x003f, 0xd2ba, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xc8db, 0x003f, 0x003f, 0x003f, 0x003f, 0xd2bb,
+    0x003f, 0xd2bc, 0x003f, 0xd2bd, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd2be, 0xc9a4, 0xb6e8, 0xb0e5, 0x003f, 0x003f, 0x003f, 0xc6bf,
+    0xd2bf, 0xbdbd, 0x003f, 0xc0e9, 0x003f, 0xd2c1, 0xd2c0, 0xbea3,
+    0xb8e1, 0xd2c3, 0xc8be, 0x003f, 0x003f, 0xd2c4, 0x003f, 0x003f,
+    0x003f, 0xc8dc, 0xc2b4, 0xc2ee, 0xb6a8, 0x003f, 0x003f, 0xc6ee,
+    0xc3b1, 0x003f, 0xc7ee, 0x003f, 0xcbce, 0x003f, 0xd2c6, 0x003f,
+    0xc0ea, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb7b5, 0x003f,
+    0x003f, 0xd2c7, 0x003f, 0x003f, 0x003f, 0x003f, 0xd2c8, 0xb1ac,
+    0xb0f5, 0xb4ed, 0x003f, 0xc2a8, 0xb5d1, 0xcdf1, 0x003f, 0xd2cb,
+    0xb2b7, 0x003f, 0x003f, 0xd2ca, 0x003f, 0x003f, 0x003f, 0xb6aa,
+    0x003f, 0x003f, 0xd2cc, 0x003f, 0xccf1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd2cd, 0x003f,
+    0xced2, 0x003f, 0xb8fc, 0x003f, 0x003f, 0x003f, 0x003f, 0xb8b6,
+    0xd2ce, 0x003f, 0x003f, 0x003f, 0x003f, 0xd2d0, 0xd2cf, 0x003f,
+    0xbfdf, 0xb1b9, 0x003f, 0x003f, 0x003f, 0xb1de, 0xd2d1, 0x003f,
+    0xd2d2, 0x003f, 0x003f, 0xb8b7, 0x003f, 0x003f, 0xd2d3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb5ee, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xbbb2, 0xd2d4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcbf4, 0xbab5, 0xb5da, 0xcda7, 0xc1d0, 0xc8bf, 0xbcfd, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xbdc7, 0x003f, 0xbce8, 0xbcf5,
+    0x003f, 0xbdf6, 0x003f, 0xc8c0, 0x003f, 0x003f, 0x003f, 0xd2d7,
+    0x003f, 0xb1c3, 0xc1d1, 0xb8fd, 0xb8c5, 0xb6e7, 0x003f, 0x003f,
+    0xd2db, 0xc3a1, 0xc2fe, 0xb6ab, 0xbea4, 0xd2dc, 0xd2da, 0xb2c4,
+    0xc2e6, 0xbcb8, 0xbbcb, 0xb1a6, 0x003f, 0x003f, 0xb3f0, 0xb9e6,
+    0xbbca, 0x003f, 0xd2dd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x5400 .. 0x54ff */
+    0x003f, 0xd2de, 0x003f, 0xb5c9, 0xb3c6, 0x003f, 0x003f, 0x003f,
+    0xb9e7, 0xb5c8, 0xc4df, 0xb1a5, 0xc6b1, 0xccbe, 0xb9a1, 0xcdf9,
+    0xc5c7, 0xb8fe, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb7af, 0x003f, 0xd2e7, 0x003f, 0xb6e3,
+    0xcbca, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc8dd, 0x003f,
+    0x003f, 0xd2e6, 0x003f, 0xb4de, 0xd2e1, 0xd2e2, 0xd2e4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd2e5, 0x003f,
+    0xb5db, 0xbfe1, 0x003f, 0xcaad, 0xd2e3, 0xd2df, 0xb8e3, 0x003f,
+    0xd2e0, 0x003f, 0xcfa4, 0x003f, 0x003f, 0x003f, 0xcaf2, 0x003f,
+    0xc4e8, 0xb8e2, 0xb9f0, 0x003f, 0x003f, 0x003f, 0xd2e8, 0x003f,
+    0x003f, 0xc6dd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd2ec,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xbcfe, 0x003f, 0xbcf6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd2ef, 0xd2ed, 0x003f, 0xcca3, 0x003f, 0xd2ea, 0xd2f3, 0xd2ee,
+    0x003f, 0x003f, 0x003f, 0xd2f1, 0xb8c6, 0xccbf, 0x003f, 0x003f,
+    0xd2f2, 0x003f, 0x003f, 0x003f, 0xd2f4, 0x003f, 0xd2f6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xbaf0, 0xcfc2, 0x003f, 0xd2eb, 0xd2e9,
+    0xd2f5, 0x003f, 0xd2f0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd2f8, 0x003f, 0xd3a3, 0xd2fa, 0x003f, 0x003f,
+    0xd2fe, 0x003f, 0x003f, 0xd3a1, 0xd2fb, 0x003f, 0x003f, 0xd3be,
+    0x003f, 0x003f, 0xbae9, 0xb3b1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd2f9, 0x003f, 0x003f, 0x003f, 0xd3a5, 0xb0f6, 0xd3a4, 0x003f,
+    0xb0a5, 0xc9ca, 0xd3a2, 0x003f, 0xd2fc, 0x003f, 0x003f, 0xd2f7,
+    0xd2fd, 0xbac8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd3a6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb0f7, 0xd3af, 0x003f, 0x003f, 0xd3a7, 0xd3a8, 0x003f,
+    0xbea5, 0xcbe9, 0x003f, 0x003f, 0x003f, 0xd3ad, 0xd3ac, 0x003f,
+    0x003f, 0x003f, 0xc5af, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd3ae, 0x003f, 0x003f, 0xd3ab, 0x003f, 0x003f,
+    /* 0x5500 .. 0x55ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0xb1b4, 0x003f, 0xbab6, 0xbfb0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd3a9,
+    0xc5e2, 0x003f, 0x003f, 0x003f, 0xd3aa, 0x003f, 0xb0a2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd3b4, 0xcda3,
+    0x003f, 0xbea7, 0x003f, 0xd3ba, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd3b9, 0xd3b0, 0x003f, 0x003f, 0x003f, 0x003f, 0xc2c3, 0x003f,
+    0xd3b1, 0x003f, 0x003f, 0x003f, 0xc2ef, 0xd3b6, 0xbea6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd3b3, 0x003f, 0x003f, 0xcce4,
+    0x003f, 0x003f, 0x003f, 0xb7bc, 0x003f, 0x003f, 0xd3b7, 0xd3b8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd3b5, 0xd3bb, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd3b2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd3c1, 0xd3c6, 0x003f, 0xd3c2, 0x003f,
+    0xd3bd, 0x003f, 0x003f, 0xd3c7, 0xc1b1, 0x003f, 0x003f, 0xd3c9,
+    0x003f, 0xb9a2, 0xd3bf, 0xc3fd, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd3c3, 0xd3bc, 0xb4ad, 0x003f, 0xb4ee, 0xb3e5, 0xd3c4, 0xd3c0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb7f6,
+    0xd3ca, 0xd3c8, 0xc1d3, 0xb5ca, 0xb6ac, 0x003f, 0xd3c5, 0x003f,
+    0xb6f4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb1c4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd3ce, 0xd3cc, 0x003f, 0xd4a7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd3d1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd3cb, 0x003f, 0xd3cf, 0x003f, 0x003f, 0xd3cd,
+    0x003f, 0x003f, 0x003f, 0xbbcc, 0xd3d0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd3d3,
+    0x003f, 0xd3d8, 0x003f, 0x003f, 0x003f, 0xd3d6, 0xd3d5, 0x003f,
+    /* 0x5600 .. 0x56ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc3b2, 0x003f,
+    0x003f, 0xb2c5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd3d2, 0x003f, 0xd3d4, 0xbea8,
+    0xb1b3, 0x003f, 0x003f, 0xd3d7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb2de, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd3e2,
+    0x003f, 0xbefc, 0xd3de, 0x003f, 0xd3dc, 0x003f, 0xd3dd, 0x003f,
+    0xd3df, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb1bd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xc1b9, 0x003f, 0xd3d9, 0x003f,
+    0xd3da, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb3fa, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd3e1, 0x003f, 0x003f, 0x003f,
+    0xb4ef, 0x003f, 0xd3e4, 0xd3e0, 0xd3e3, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xcaae, 0x003f, 0x003f, 0x003f,
+    0xc6d5, 0x003f, 0xc8b8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd3e6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd3e5, 0xb3c5,
+    0x003f, 0x003f, 0xd3e7, 0x003f, 0x003f, 0x003f, 0x003f, 0xd3ea,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd3e9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd3e8, 0x003f, 0xc7b9, 0x003f, 0x003f, 0xd3eb, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd3ec, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd3ee, 0x003f, 0xd3ed, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd3f0, 0x003f, 0x003f, 0x003f,
+    0xd3f3, 0xd3f1, 0xd3ef, 0xd3f2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd3f4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd3f5, 0x003f,
+    0x003f, 0xd3f6, 0x003f, 0xd3f7, 0x003f, 0x003f, 0x003f, 0xd3f8,
+    0xd1c5, 0x003f, 0xbcfc, 0xbbcd, 0x003f, 0x003f, 0xb2f3, 0x003f,
+    0xb0f8, 0x003f, 0x003f, 0xc3c4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd3f9, 0x003f,
+    0xbaa4, 0x003f, 0xb0cf, 0xbfde, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd3fa, 0xb8c7, 0x003f, 0x003f, 0xb9f1, 0x003f, 0xd3fc,
+    /* 0x5700 .. 0x57ff */
+    0xd3fb, 0x003f, 0x003f, 0xcae0, 0xd3fd, 0x003f, 0x003f, 0x003f,
+    0xd4a1, 0xd3fe, 0x003f, 0xd4a2, 0x003f, 0xd4a3, 0x003f, 0xb7f7,
+    0x003f, 0x003f, 0xb1e0, 0xd4a4, 0x003f, 0x003f, 0xd4a6, 0x003f,
+    0xd4a5, 0x003f, 0x003f, 0x003f, 0xd4a8, 0x003f, 0x003f, 0xc5da,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd4a9, 0xb0b5,
+    0xbadf, 0x003f, 0x003f, 0x003f, 0x003f, 0xb7bd, 0x003f, 0x003f,
+    0xc3cf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd4aa,
+    0xd4ab, 0x003f, 0x003f, 0xd4ad, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd4ae, 0x003f, 0xbae4, 0x003f, 0x003f, 0x003f, 0x003f, 0xb6d1,
+    0x003f, 0x003f, 0xcbb7, 0x003f, 0x003f, 0x003f, 0xd4ac, 0xd4af,
+    0xbac1, 0xb9a3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd4b3, 0x003f, 0x003f, 0xbaa5, 0x003f, 0xc3b3, 0x003f,
+    0x003f, 0xd4b0, 0xc4da, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd4b4,
+    0x003f, 0x003f, 0xbfe2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd4b2, 0xd4b5, 0x003f, 0xb7bf, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd4b6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd4b7, 0x003f, 0xb9a4, 0xb3c0, 0xd4b9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd4ba, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd4bb, 0x003f, 0x003f, 0xd4b8, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd4b1, 0x003f, 0x003f, 0xd4bc, 0x003f, 0x003f, 0xd4bd, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xcbe4, 0x003f, 0x003f, 0xbeeb, 0x003f,
+    0x003f, 0x003f, 0xd4bf, 0xd4c0, 0xd4be, 0x003f, 0xd4c2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xc7b8, 0x003f, 0x003f, 0xb0e8,
+    0xc9d6, 0x003f, 0x003f, 0xd4c3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xbefd, 0x003f, 0x003f, 0xbcb9,
+    0x003f, 0xc7dd, 0xb4f0, 0x003f, 0xbaeb, 0x003f, 0x003f, 0x003f,
+    /* 0x5800 .. 0x58ff */
+    0xcbd9, 0x003f, 0xc6b2, 0x003f, 0x003f, 0xb7f8, 0xc2cf, 0x003f,
+    0x003f, 0x003f, 0xd4c1, 0xd4c4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc2c4, 0x003f, 0x003f,
+    0x003f, 0xd4c5, 0x003f, 0x003f, 0x003f, 0xd4c6, 0x003f, 0x003f,
+    0x003f, 0xd4c8, 0x003f, 0x003f, 0xc4e9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb4ae, 0x003f, 0x003f, 0x003f, 0x003f, 0xf4a1,
+    0xb1e1, 0xcaf3, 0x003f, 0x003f, 0xbeec, 0xc5c8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xbae6, 0x003f, 0x003f, 0xd4ce, 0x003f, 0x003f,
+    0xcabd, 0xcedd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb2f4, 0xd4ca, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc1ba, 0xd4cd, 0x003f, 0xc5e3, 0x003f, 0x003f, 0xc5c9,
+    0xc5e4, 0xc8b9, 0xc4cd, 0x003f, 0x003f, 0x003f, 0xbac9, 0x003f,
+    0x003f, 0x003f, 0xd4c9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb1f6, 0x003f, 0xc5b6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd4cb, 0x003f, 0xd4c7, 0x003f, 0x003f, 0xbfd0, 0x003f, 0x003f,
+    0x003f, 0xd4cf, 0x003f, 0x003f, 0x003f, 0x003f, 0xbdce, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb6ad, 0x003f, 0xd4d0, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xcae8, 0x003f, 0x003f, 0x003f, 0xc1fd,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xc4c6, 0x003f, 0x003f, 0xd4d2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcbcf, 0x003f, 0x003f, 0xd4d3, 0x003f, 0x003f, 0xd4d8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xcaaf, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd4d7, 0xd4d1, 0xd4d4, 0xd4d6, 0x003f, 0x003f, 0xbaa6, 0x003f,
+    0x003f, 0xcac9, 0x003f, 0x003f, 0x003f, 0xd4d9, 0x003f, 0xc3c5,
+    0x003f, 0x003f, 0xb2f5, 0x003f, 0xbeed, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd4db, 0x003f, 0xd4da, 0x003f, 0xb9e8, 0x003f, 0xd4dc,
+    0xd4de, 0xd4dd, 0x003f, 0x003f, 0xd4e0, 0x003f, 0xd4d5, 0xd4e2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd4e1, 0xd4df, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xbbce, 0xbfd1, 0x003f, 0xc1d4, 0xd4e3,
+    0xc0bc, 0xb0ed, 0xc7e4, 0x003f, 0x003f, 0x003f, 0x003f, 0xc4db,
+    0x003f, 0xd4e5, 0xd4e4, 0xd4e6, 0xd4e7, 0xd4e8, 0x003f, 0x003f,
+    /* 0x5900 .. 0x59ff */
+    0x003f, 0x003f, 0xd4e9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcad1, 0xd4ea, 0x003f, 0x003f, 0x003f, 0x003f, 0xb2c6,
+    0xd4eb, 0x003f, 0x003f, 0x003f, 0x003f, 0xcdbc, 0xb3b0, 0x003f,
+    0xd2c9, 0xbdc8, 0xc2bf, 0xd4ec, 0xcceb, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xccb4, 0x003f, 0x003f, 0xd4ee, 0x003f, 0xc2e7,
+    0x003f, 0xc5b7, 0xc2c0, 0xc9d7, 0xd4ef, 0xd4f0, 0xb1fb, 0x003f,
+    0x003f, 0xbcba, 0xd4f1, 0x003f, 0x003f, 0x003f, 0x003f, 0xb0d0,
+    0xd4f2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd4f3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xb1e2, 0x003f, 0x003f, 0xb4f1,
+    0xc6e0, 0xcaf4, 0x003f, 0x003f, 0x003f, 0x003f, 0xd4f7, 0xc1d5,
+    0xd4f6, 0xb7c0, 0x003f, 0x003f, 0xcbdb, 0xd4f5, 0x003f, 0xc5e5,
+    0xd4f9, 0x003f, 0xd4f8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd4fb, 0x003f, 0xd4fa, 0x003f, 0x003f, 0xb1fc, 0x003f, 0xd4fc,
+    0xbea9, 0xd4fe, 0xc3a5, 0x003f, 0xd4fd, 0x003f, 0xcab3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xbdf7, 0xc5db, 0x003f, 0x003f, 0x003f,
+    0xd5a1, 0x003f, 0x003f, 0x003f, 0x003f, 0xb9a5, 0x003f, 0x003f,
+    0x003f, 0xd5a2, 0xc7a1, 0xc8de, 0xccd1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xc7a5, 0x003f, 0x003f, 0xd5ab, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb5b8, 0x003f, 0x003f, 0xcdc5, 0x003f,
+    0x003f, 0xccaf, 0x003f, 0xd6ac, 0x003f, 0xd5a3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd5a6, 0x003f, 0xc2c5, 0x003f, 0x003f,
+    0xcbb8, 0x003f, 0x003f, 0x003f, 0xc5ca, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd5a7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcbe5, 0x003f, 0xbaca, 0x003f, 0x003f, 0xbeaa, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd5a8, 0x003f,
+    0x003f, 0xbbd0, 0x003f, 0xbbcf, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xb0b9, 0xb8c8, 0x003f, 0xc0ab, 0xb0d1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd5ac, 0xd5ad, 0x003f, 0xd5aa, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb1b8, 0xb4af, 0x003f,
+    0xd5a9, 0x003f, 0xccc5, 0xc9b1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb0a8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb0f9, 0x003f, 0x003f, 0x003f, 0xbbd1,
+    /* 0x5a00 .. 0x5aff */
+    0x003f, 0xb0d2, 0x003f, 0xb0a3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd5b2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd5b0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xccbc, 0x003f, 0xd5b3, 0x003f, 0xd5b1, 0x003f, 0x003f, 0xd5af,
+    0xbfb1, 0x003f, 0x003f, 0x003f, 0x003f, 0xd5ae, 0x003f, 0x003f,
+    0x003f, 0xcada, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb8e4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd5b7, 0xd5b8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xbeab, 0x003f, 0x003f, 0x003f,
+    0xd5b4, 0xcfac, 0x003f, 0x003f, 0x003f, 0x003f, 0xc7cc, 0x003f,
+    0x003f, 0xd5b6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xbaa7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd5b9, 0x003f, 0x003f, 0x003f, 0xc9d8, 0x003f,
+    0x003f, 0x003f, 0xd5ba, 0x003f, 0xd5b5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xccbb,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xc7de, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd5bb, 0xc9b2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd5bc, 0xd5c0, 0xd5bd, 0x003f,
+    0x003f, 0xb2c7, 0xd5bf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbcbb, 0x003f, 0xd5be, 0xb7f9, 0x003f, 0x003f, 0x003f,
+    0xd5cc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd5c5, 0xd5c2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc3e4, 0x003f, 0xd5c1, 0x003f, 0x003f, 0xd5c3, 0x003f,
+    0x003f, 0xd5c4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd5c6, 0xd5c7, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x5b00 .. 0x5bff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb4f2, 0x003f, 0xd5c9, 0xd5c8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd5ca, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xbeee, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd5cd, 0x003f, 0xc4dc, 0x003f, 0x003f, 0x003f,
+    0xb1c5, 0x003f, 0xd5cb, 0x003f, 0x003f, 0x003f, 0xd5ce, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd5cf, 0x003f,
+    0xd5d2, 0x003f, 0x003f, 0xd5d0, 0x003f, 0xd5d1, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xbbd2, 0xd5d3, 0x003f, 0x003f, 0xb9a6, 0xd5d4, 0x003f, 0xbbfa,
+    0xc2b8, 0x003f, 0xd5d5, 0xd5d6, 0xbbda, 0xb9a7, 0x003f, 0xccd2,
+    0x003f, 0x003f, 0x003f, 0xb5a8, 0xb8c9, 0xd5d7, 0xb3d8, 0x003f,
+    0x003f, 0xd5d8, 0x003f, 0xc2b9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd5d9, 0xd6a3, 0x003f, 0xd5da, 0x003f, 0xd5db, 0x003f, 0x003f,
+    0xd5dc, 0x003f, 0xd5de, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd5df, 0x003f, 0x003f, 0xd5e0, 0x003f, 0xc2f0, 0x003f, 0xb1a7,
+    0xbce9, 0xb0c2, 0x003f, 0xc1d7, 0xb4b0, 0xbcb5, 0x003f, 0xb9a8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc5e6, 0x003f, 0xbda1,
+    0xb4b1, 0xc3e8, 0xc4ea, 0xb0b8, 0xb5b9, 0xcaf5, 0x003f, 0xbcc2,
+    0x003f, 0x003f, 0xb5d2, 0xc0eb, 0xbcbc, 0xcda8, 0xd5e1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb5dc, 0x003f,
+    0xbacb, 0x003f, 0x003f, 0xb3b2, 0xb1e3, 0xbeac, 0xb2c8, 0x003f,
+    0xd5e2, 0xcdc6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xbdc9,
+    0x003f, 0x003f, 0xbce4, 0xd5e3, 0xb4f3, 0xc6d2, 0xcca9, 0xd5e4,
+    0x003f, 0xd5e5, 0x003f, 0x003f, 0xc9d9, 0x003f, 0x003f, 0x003f,
+    0xd5e7, 0x003f, 0xb4a8, 0xb6f7, 0xd5e6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb4b2, 0x003f, 0xbfb2, 0xd5eb, 0xbba1,
+    0x003f, 0xb2c9, 0xd5ea, 0x003f, 0xd5e8, 0xd5ec, 0xd5e9, 0xc7ab,
+    0xdccd, 0xbfb3, 0x003f, 0xd5ed, 0x003f, 0x003f, 0xcec0, 0x003f,
+    0xd5ee, 0x003f, 0x003f, 0xd5f0, 0x003f, 0xc3fe, 0xd5ef, 0x003f,
+    0xc0a3, 0x003f, 0xbbfb, 0x003f, 0x003f, 0x003f, 0xc2d0, 0xbcf7,
+    /* 0x5c00 .. 0x5cff */
+    0x003f, 0xc9f5, 0xc0ec, 0x003f, 0xbccd, 0xd5f1, 0xbead, 0xd5f2,
+    0xd5f3, 0xb0d3, 0xc2ba, 0xbfd2, 0x003f, 0xd5f4, 0xc6b3, 0xbeae,
+    0x003f, 0xbeaf, 0x003f, 0xd5f5, 0x003f, 0x003f, 0xc0ed, 0x003f,
+    0x003f, 0x003f, 0xbeb0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd5f6, 0x003f, 0xd5f7, 0x003f, 0xcce0, 0x003f, 0x003f, 0x003f,
+    0xd5f8, 0x003f, 0x003f, 0x003f, 0x003f, 0xb6c6, 0x003f, 0x003f,
+    0x003f, 0xbda2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd5f9, 0xd5fa, 0xbcdc, 0xbfac, 0xc6f4, 0xbfd4, 0xc8f8, 0xc7a2,
+    0xb6c9, 0xd5fb, 0x003f, 0x003f, 0x003f, 0xb5ef, 0xd5fc, 0x003f,
+    0xb6fe, 0x003f, 0xc6cf, 0xb2b0, 0x003f, 0xbbd3, 0xd5fd, 0xd6a2,
+    0xd6a1, 0xb6fd, 0x003f, 0xd5fe, 0x003f, 0xc5b8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc2b0, 0x003f,
+    0xc5cb, 0xbcc8, 0x003f, 0x003f, 0xc1d8, 0xcdfa, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd6a4, 0x003f, 0xd6a5, 0xc6d6,
+    0x003f, 0xbbb3, 0x003f, 0x003f, 0x003f, 0x003f, 0xd6a7, 0x003f,
+    0x003f, 0xd6a8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd6a9, 0x003f, 0x003f, 0x003f,
+    0xb4f4, 0xd6aa, 0x003f, 0x003f, 0xd6ab, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb2ac, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xc1bb, 0xb4e4, 0x003f, 0xd6ad, 0xcca8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc2d2, 0x003f, 0xb3d9, 0x003f, 0x003f, 0xd6af, 0xd6b1,
+    0xb4df, 0x003f, 0x003f, 0xd6ae, 0xd6b0, 0x003f, 0xd6b3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd6b2, 0x003f, 0xd6b4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd6b5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xc6bd, 0xb6ae, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xb2e5, 0xd6b6, 0xd6bb, 0x003f, 0x003f, 0xd6b9, 0x003f, 0xcaf7,
+    0xcaf6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc5e7, 0x003f,
+    0x003f, 0x003f, 0xd6b8, 0xbdd4, 0x003f, 0xd6b7, 0x003f, 0x003f,
+    /* 0x5d00 .. 0x5dff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xbff2,
+    0x003f, 0x003f, 0x003f, 0xd6bc, 0x003f, 0x003f, 0xbaea, 0x003f,
+    0x003f, 0xd6c2, 0x003f, 0x003f, 0xd6c3, 0xd6bd, 0xb3b3, 0xd6be,
+    0xd6c7, 0xd6c6, 0xd6c5, 0xd6c1, 0x003f, 0x003f, 0x003f, 0xd6c0,
+    0x003f, 0x003f, 0xd6c4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcaf8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd6cb, 0xd6c8, 0x003f, 0xd6ca, 0x003f,
+    0xcdf2, 0x003f, 0xd6c9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd6bf, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbff3, 0x003f, 0x003f, 0xd6cc, 0x003f, 0x003f, 0xbab7,
+    0x003f, 0x003f, 0x003f, 0xd6cd, 0x003f, 0x003f, 0xd6ce, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd6d1, 0x003f, 0xd6d0, 0x003f, 0x003f, 0xd6cf,
+    0x003f, 0x003f, 0x003f, 0xc5e8, 0xd6ba, 0x003f, 0x003f, 0x003f,
+    0xd6d7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd6d3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd6d2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd6d4, 0x003f, 0xd6d5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd6d8,
+    0x003f, 0x003f, 0xcee6, 0x003f, 0xd6d9, 0xd6d6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd6da, 0x003f, 0x003f, 0xb4e0, 0xd6db, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd6dd, 0xd6dc, 0x003f, 0x003f, 0xd6de, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd6df, 0x003f, 0xc0ee, 0xbda3, 0x003f,
+    0x003f, 0xbde4, 0x003f, 0xc1e3, 0x003f, 0xb9a9, 0xbab8, 0xb9aa,
+    0xb5f0, 0x003f, 0x003f, 0xd6e0, 0x003f, 0x003f, 0xbab9, 0x003f,
+    0x003f, 0xb8ca, 0xd6e1, 0xcca6, 0xc7c3, 0xd6e2, 0x003f, 0xb9ab,
+    0x003f, 0x003f, 0x003f, 0xb4ac, 0x003f, 0xc3a7, 0xb6d2, 0x003f,
+    /* 0x5e00 .. 0x5eff */
+    0x003f, 0x003f, 0xbbd4, 0xc9db, 0x003f, 0x003f, 0xc8c1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd6e3, 0xb4f5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd6e6, 0x003f, 0x003f, 0x003f, 0x003f, 0xc4a1, 0x003f,
+    0x003f, 0xd6e5, 0xd6e4, 0xd6e7, 0x003f, 0xc4eb, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xbfe3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xbbd5, 0x003f, 0xc0ca, 0x003f, 0xc2d3,
+    0xb5a2, 0x003f, 0x003f, 0xc4a2, 0x003f, 0x003f, 0xd6e8, 0xd6e9,
+    0xbeef, 0x003f, 0x003f, 0x003f, 0x003f, 0xcbb9, 0x003f, 0x003f,
+    0xd6ec, 0x003f, 0x003f, 0xd6eb, 0xd6ea, 0xc9fd, 0x003f, 0xd6f3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xcbda, 0x003f, 0xd6ed, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd6ef, 0xcbeb, 0x003f, 0xd6ee,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd6f0,
+    0x003f, 0xc8a8, 0xd6f1, 0xcabe, 0xd6f2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb4b3, 0xcabf, 0xc7af, 0xd6f4, 0xd6f5, 0x003f,
+    0xb9ac, 0xb4b4, 0xd6f6, 0xb8b8, 0xcdc4, 0xcda9, 0xb4f6, 0xd6f8,
+    0x003f, 0xc4a3, 0x003f, 0xb9ad, 0xbeb1, 0x003f, 0x003f, 0xc8df,
+    0x003f, 0x003f, 0xbeb2, 0x003f, 0x003f, 0x003f, 0x003f, 0xbdf8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc4ec, 0xcaf9, 0xc5b9,
+    0x003f, 0x003f, 0xb9ae, 0x003f, 0xc9dc, 0x003f, 0x003f, 0x003f,
+    0xd6f9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc5d9, 0xbac2,
+    0x003f, 0x003f, 0x003f, 0xb8cb, 0x003f, 0xc4ed, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb0c3, 0xbdee, 0xb9af,
+    0xcdc7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd6fa, 0xd6fb, 0xc7d1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd6fc, 0xcef7, 0xcfad, 0x003f, 0x003f, 0x003f, 0x003f, 0xd6fe,
+    0xd6fd, 0x003f, 0x003f, 0xb3c7, 0x003f, 0x003f, 0xd7a1, 0x003f,
+    0x003f, 0x003f, 0xd7a4, 0xd7a5, 0x003f, 0xd7a3, 0x003f, 0xc9c0,
+    0xbeb3, 0xd7a7, 0xd7a6, 0xd7a2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd7a8, 0xd7a9, 0x003f, 0x003f, 0xd7aa, 0x003f, 0x003f, 0x003f,
+    0xd7ad, 0xd7ab, 0x003f, 0xd7ac, 0xd7ae, 0x003f, 0xb1e4, 0xc4ee,
+    0xd7af, 0x003f, 0xb7fa, 0xb2f6, 0xc7b6, 0x003f, 0xd7b0, 0xc6fb,
+    /* 0x5f00 .. 0x5fff */
+    0x003f, 0xcadb, 0x003f, 0xd7b1, 0xcfae, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd7b2, 0xcac0, 0xd7b5, 0xd0a1, 0xd0b1, 0x003f, 0xbcb0,
+    0xc6f5, 0xd7b6, 0x003f, 0xb5dd, 0xc4a4, 0xb0fa, 0xd7b7, 0xcaa6,
+    0xb9b0, 0x003f, 0x003f, 0xc3d0, 0x003f, 0x003f, 0x003f, 0xc4ef,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xccef, 0xb8b9, 0xb8cc,
+    0x003f, 0xd7b8, 0x003f, 0x003f, 0x003f, 0xd7b9, 0x003f, 0xd7bf,
+    0x003f, 0xbce5, 0x003f, 0x003f, 0x003f, 0xc4a5, 0x003f, 0xb6af,
+    0xd7ba, 0x003f, 0x003f, 0x003f, 0xc9ab, 0x003f, 0xc3c6, 0x003f,
+    0x003f, 0xd7bb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd7bc, 0x003f, 0xb6b0, 0x003f, 0xd7bd, 0x003f, 0xd7be, 0x003f,
+    0x003f, 0xd7c0, 0x003f, 0xc5f6, 0x003f, 0x003f, 0xd7c1, 0xd7c2,
+    0x003f, 0xd7c3, 0x003f, 0x003f, 0xd7b4, 0xd7b3, 0x003f, 0x003f,
+    0x003f, 0xd7c4, 0xb7c1, 0x003f, 0x003f, 0x003f, 0xc9a7, 0x003f,
+    0x003f, 0xbacc, 0xc9b7, 0xc4a6, 0xc9cb, 0xd7c5, 0x003f, 0x003f,
+    0xbeb4, 0xb1c6, 0x003f, 0xd7c6, 0x003f, 0x003f, 0x003f, 0xd7c7,
+    0x003f, 0xccf2, 0x003f, 0x003f, 0xc8e0, 0x003f, 0x003f, 0xd7ca,
+    0xb1fd, 0xc0ac, 0xd7c9, 0xd7c8, 0xb7c2, 0xc2d4, 0x003f, 0xd7ce,
+    0xd7cc, 0x003f, 0xd7cb, 0xcea7, 0xb8e5, 0x003f, 0x003f, 0x003f,
+    0xbdf9, 0xd7cd, 0xc5cc, 0xbdbe, 0x003f, 0x003f, 0x003f, 0xc6c0,
+    0xd7d1, 0xd7d0, 0x003f, 0x003f, 0x003f, 0x003f, 0xd7cf, 0x003f,
+    0xd7d2, 0xb8e6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd7d3, 0xc9fc, 0xbddb, 0x003f, 0x003f, 0xd7d4, 0xc8f9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xc6c1, 0xc4a7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc5b0, 0x003f, 0x003f, 0xd7d5, 0xb5ab, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xbfb4, 0x003f, 0xc9ac, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xb4f7, 0xc7a6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd7d6, 0xbbd6,
+    0xcbba, 0xcbbb, 0x003f, 0x003f, 0xb1fe, 0xd7db, 0x003f, 0x003f,
+    0xc3e9, 0x003f, 0x003f, 0x003f, 0xd7d8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb2f7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd8ad, 0xd7da, 0x003f, 0x003f, 0x003f, 0xc7b0, 0x003f, 0x003f,
+    0xd7d9, 0x003f, 0x003f, 0xd7d7, 0x003f, 0xb9fa, 0x003f, 0xd7dd,
+    /* 0x6000 .. 0x60ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd7e3, 0xd7e9,
+    0xd7e1, 0x003f, 0xc5dc, 0x003f, 0x003f, 0xd7e6, 0xc9dd, 0x003f,
+    0x003f, 0xd7e0, 0x003f, 0xd7e5, 0xcee7, 0xbbd7, 0x003f, 0x003f,
+    0xc2d5, 0xd7de, 0x003f, 0x003f, 0x003f, 0xb5de, 0xd7e8, 0xc0ad,
+    0xb1e5, 0xd7e2, 0xb2f8, 0xd7e7, 0x003f, 0x003f, 0x003f, 0xb6b1,
+    0x003f, 0xd7e4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd7ea, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd7ec, 0xd7f6, 0xd7f4, 0x003f, 0x003f, 0xd7f1, 0x003f,
+    0x003f, 0x003f, 0xd7f0, 0xcef8, 0x003f, 0xd7f2, 0x003f, 0x003f,
+    0xb6b2, 0x003f, 0xb9b1, 0x003f, 0x003f, 0xbdfa, 0x003f, 0x003f,
+    0x003f, 0xd7f9, 0xd7eb, 0x003f, 0x003f, 0x003f, 0x003f, 0xd7ef,
+    0xd7df, 0x003f, 0xb2fa, 0xd7f3, 0xd7f5, 0xc3d1, 0x003f, 0x003f,
+    0xbaa8, 0xb2b8, 0xd7ed, 0xd7f8, 0xd7f7, 0xb6b3, 0x003f, 0xc2a9,
+    0xb3e6, 0x003f, 0x003f, 0x003f, 0x003f, 0xb7c3, 0x003f, 0xd7ee,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd7fa, 0x003f, 0xd7fd, 0xd8a1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbcbd, 0x003f, 0xd8a7, 0xc4f0, 0xd7fb, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd8a5, 0x003f, 0xb2f9, 0x003f, 0xd8a3, 0xd8a4,
+    0x003f, 0x003f, 0xd7fe, 0xd8a2, 0x003f, 0x003f, 0x003f, 0xb8e7,
+    0xcdaa, 0x003f, 0x003f, 0xb4b5, 0x003f, 0x003f, 0xb1d9, 0xd8a6,
+    0x003f, 0xc7ba, 0xb0ad, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xc8e1, 0xd7dc, 0xd8ac, 0xd8b0, 0xcce5, 0x003f,
+    0xd8a9, 0x003f, 0x003f, 0x003f, 0xc5e9, 0xd8ae, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xbef0, 0xd8af, 0xc6d7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcfc7, 0x003f, 0xd8ab, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd8b1, 0x003f, 0xb9fb, 0x003f, 0xc0cb, 0x003f, 0x003f, 0xb0d4,
+    0xd8aa, 0xd8a8, 0x003f, 0xc1da, 0x003f, 0x003f, 0x003f, 0xd7fc,
+    0xbbb4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xc2c6, 0xd8bd, 0x003f, 0xc1db, 0xd8b8, 0x003f, 0xd8b5, 0xd8b6,
+    0x003f, 0xbce6, 0xd8b9, 0xd8bc, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6100 .. 0x61ff */
+    0xd8b7, 0xbda5, 0x003f, 0xd8ba, 0x003f, 0x003f, 0xd8b4, 0x003f,
+    0xccfc, 0xccfb, 0x003f, 0x003f, 0x003f, 0xd8be, 0xd8bf, 0xb0d5,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd8b3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb6f2, 0xb0a6, 0x003f, 0x003f, 0x003f, 0xb4b6,
+    0x003f, 0xd8bb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd8c3,
+    0xd8c2, 0x003f, 0x003f, 0x003f, 0xd8c7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd8c8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd8c6, 0xd8c9, 0xd8c1, 0xd8c5,
+    0x003f, 0x003f, 0xd8ca, 0x003f, 0xd8cb, 0x003f, 0x003f, 0xd8c0,
+    0xbbfc, 0x003f, 0xd8c4, 0xc2d6, 0xb9b2, 0xd8b2, 0xbfb5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd8d8, 0x003f, 0xcae9, 0x003f, 0x003f,
+    0xd8ce, 0xd8cf, 0xd8d0, 0x003f, 0x003f, 0xd8d7, 0x003f, 0xd8d6,
+    0x003f, 0x003f, 0xcbfd, 0xb4b7, 0x003f, 0xd8d4, 0x003f, 0xb7c5,
+    0xb3b4, 0x003f, 0x003f, 0xd8d1, 0x003f, 0x003f, 0xceb8, 0xd8d3,
+    0xb0d6, 0xd8d5, 0x003f, 0xd8cc, 0xd8d2, 0xd8d9, 0xb7c4, 0xd8cd,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcddd, 0x003f,
+    0x003f, 0x003f, 0xcdab, 0x003f, 0x003f, 0x003f, 0x003f, 0xd8dc,
+    0x003f, 0x003f, 0xd8e0, 0x003f, 0x003f, 0x003f, 0xc1fe, 0x003f,
+    0xcef9, 0xd8e1, 0x003f, 0x003f, 0xd8de, 0x003f, 0xd8db, 0x003f,
+    0x003f, 0xd8da, 0xd8df, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xcab0, 0x003f, 0x003f, 0xc6b4,
+    0x003f, 0xb7c6, 0x003f, 0xd8e2, 0xd8dd, 0x003f, 0xd8e3, 0x003f,
+    0x003f, 0x003f, 0xb7fb, 0x003f, 0x003f, 0x003f, 0xb2b1, 0x003f,
+    0x003f, 0x003f, 0xd8eb, 0x003f, 0x003f, 0x003f, 0xb4b8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd8e9, 0x003f, 0x003f, 0xd8ea, 0xbaa9,
+    0xd8e8, 0xd8e6, 0xd8e5, 0xd8ec, 0xd8e4, 0xd8ee, 0x003f, 0x003f,
+    0xb2fb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd8f0, 0x003f, 0x003f, 0xd8ef, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xc4a8, 0x003f, 0xd8f3, 0x003f, 0xd8f1, 0xd8e7,
+    0xb7fc, 0x003f, 0xd8f2, 0x003f, 0xd8f6, 0xd8f5, 0xd8f7, 0xd8f4,
+    /* 0x6200 .. 0x62ff */
+    0xd8f8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd8f9, 0xd8fa, 0xcaea, 0x003f, 0xd8fc, 0xd8fb, 0xbdbf, 0x003f,
+    0xc0ae, 0xb2e6, 0xb2fc, 0x003f, 0xd8fd, 0x003f, 0xb0bf, 0x003f,
+    0x003f, 0x003f, 0xc0cc, 0xd8fe, 0x003f, 0xecc3, 0xd9a1, 0xb7e1,
+    0x003f, 0xd9a2, 0x003f, 0x003f, 0x003f, 0x003f, 0xc0ef, 0x003f,
+    0x003f, 0x003f, 0xd9a3, 0x003f, 0x003f, 0x003f, 0xd9a4, 0xb5ba,
+    0xd9a5, 0x003f, 0xd9a6, 0xd9a7, 0xc2d7, 0x003f, 0x003f, 0x003f,
+    0xb8cd, 0x003f, 0x003f, 0xcce1, 0x003f, 0x003f, 0x003f, 0xcbbc,
+    0xbdea, 0xd9a8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc0f0,
+    0xeebd, 0xc8e2, 0x003f, 0xbcea, 0x003f, 0xbacd, 0xd9a9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xc2c7, 0x003f, 0xcaa7, 0x003f, 0x003f,
+    0xc2f1, 0x003f, 0x003f, 0xd9ac, 0x003f, 0x003f, 0xd9aa, 0x003f,
+    0xd9ad, 0x003f, 0x003f, 0xd9ab, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd9ae, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcab1, 0x003f,
+    0x003f, 0xb0b7, 0x003f, 0x003f, 0x003f, 0x003f, 0xc9de, 0x003f,
+    0x003f, 0xc8e3, 0x003f, 0x003f, 0xd9af, 0x003f, 0xd9b2, 0xbeb5,
+    0xb5bb, 0x003f, 0xd9b0, 0xd9b7, 0xbeb6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd9b1, 0xc7c4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcdde, 0xd9b3, 0xd9b4, 0xd9b8, 0xc5ea, 0xd9b5, 0xb9b3,
+    0xc0de, 0x003f, 0x003f, 0xd9c6, 0xc8b4, 0x003f, 0xc2f2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xc8e4, 0xdaad, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcafa, 0x003f, 0x003f, 0x003f, 0xc4f1, 0x003f, 0x003f,
+    0x003f, 0xcbf5, 0x003f, 0xd9bb, 0xb2a1, 0xc3ea, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd9c4, 0x003f, 0x003f, 0xc3b4, 0xd9be, 0xd9c5,
+    0xd9c0, 0xd9c7, 0xd9c3, 0x003f, 0xd9c2, 0xc7ef, 0x003f, 0xd9bc,
+    0xb2fd, 0xd9ba, 0xb5f1, 0xc2f3, 0xd9b6, 0x003f, 0x003f, 0xd9b9,
+    0xb9b4, 0xc0db, 0x003f, 0xbeb7, 0xd9c1, 0xc7d2, 0x003f, 0x003f,
+    0xb5f2, 0xb3c8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xb3e7, 0xbfa1, 0xd9c9, 0xd9ce,
+    0x003f, 0xd9ca, 0x003f, 0xb7fd, 0x003f, 0xd9cf, 0xbba2, 0xb9e9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xbda6, 0xd9bd,
+    /* 0x6300 .. 0x63ff */
+    0x003f, 0xbbfd, 0xd9cc, 0x003f, 0x003f, 0x003f, 0x003f, 0xbbd8,
+    0xd9cd, 0xb0c4, 0x003f, 0x003f, 0xd9c8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc4a9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb5f3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb6b4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9cb,
+    0xb0a7, 0x003f, 0x003f, 0xbac3, 0x003f, 0x003f, 0x003f, 0xbfb6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xc4f2, 0x003f, 0x003f, 0xc8d4, 0xd9d1, 0xc1de,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc2aa, 0x003f, 0x003f, 0xbbab, 0xd9d2, 0x003f, 0xd9d4,
+    0xd9d0, 0x003f, 0x003f, 0x003f, 0x003f, 0xcae1, 0x003f, 0xc4bd,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xc1dc, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcafb,
+    0xbcce, 0xd9e0, 0x003f, 0xd9df, 0x003f, 0x003f, 0xbff8, 0x003f,
+    0x003f, 0x003f, 0xb7fe, 0x003f, 0x003f, 0x003f, 0xd9d9, 0xbeb9,
+    0x003f, 0x003f, 0xc6e8, 0xc7b1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd9d7, 0x003f, 0x003f, 0xc1dd, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xbcf8, 0xd9dc, 0x003f, 0x003f, 0xbeb8, 0x003f, 0xd9d6, 0xd9db,
+    0x003f, 0x003f, 0xc7d3, 0x003f, 0x003f, 0x003f, 0xd9d5, 0x003f,
+    0xb7a1, 0x003f, 0x003f, 0xb3dd, 0x003f, 0x003f, 0x003f, 0xd9dd,
+    0xceab, 0xbace, 0xc3b5, 0xd9da, 0x003f, 0xc0dc, 0x003f, 0xb9b5,
+    0xbfe4, 0xb1e6, 0xc1bc, 0xd9d8, 0xb5c5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb7c7, 0x003f, 0xc4cf, 0xd9de, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xc1df, 0x003f, 0x003f, 0xd9e1, 0x003f,
+    0xd9e3, 0x003f, 0x003f, 0xc2b7, 0xd9e9, 0x003f, 0xd9e4, 0x003f,
+    0x003f, 0xd9e6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc9c1,
+    0xc4f3, 0x003f, 0xd9e7, 0x003f, 0x003f, 0x003f, 0xcdac, 0x003f,
+    0x003f, 0x003f, 0xcdc8, 0xb4b9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb0ae, 0x003f, 0xd9e5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd9e2, 0x003f, 0x003f, 0x003f, 0x003f, 0xb4f8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xb1e7, 0x003f, 0xd9e8, 0x003f,
+    0x003f, 0x003f, 0xcdc9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6400 .. 0x64ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9ec, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc2bb, 0x003f, 0xd9f3,
+    0x003f, 0x003f, 0x003f, 0xd9ed, 0x003f, 0x003f, 0xd9ea, 0xd9f1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd9d3, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9ee, 0x003f,
+    0xd9f2, 0x003f, 0x003f, 0x003f, 0xc8c2, 0xc5eb, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd9eb, 0x003f, 0xd9ef, 0x003f,
+    0x003f, 0x003f, 0xb7c8, 0x003f, 0x003f, 0x003f, 0xbaf1, 0x003f,
+    0x003f, 0x003f, 0xc0dd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9f7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xc5a6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9f4,
+    0x003f, 0xcbe0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9f5,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9f6, 0x003f,
+    0xccce, 0x003f, 0xc0a2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb7e2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd9fd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xbbb5, 0xd9fa, 0x003f, 0xd9f9, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xc7b2, 0x003f, 0x003f, 0x003f, 0xc6b5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xc5b1, 0xd9fb, 0x003f, 0x003f,
+    0x003f, 0xd9fc, 0x003f, 0xc9ef, 0x003f, 0xc7c5, 0xbba3, 0x003f,
+    0xc0f1, 0x003f, 0xcbd0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb3c9, 0x003f, 0xdaa5, 0xd9fe, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcdca, 0xdaa7, 0x003f, 0x003f, 0xdaa3, 0x003f, 0xdaa4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc1e0, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdaa2, 0x003f, 0xd9bf, 0x003f, 0x003f, 0x003f,
+    0xdaa6, 0x003f, 0xdaa1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdaab, 0xdaac, 0xc5a7, 0xdaae, 0x003f, 0x003f, 0xbba4, 0xdaa9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xb5bc, 0x003f, 0x003f, 0xdaaf,
+    0x003f, 0xdaa8, 0xdab3, 0x003f, 0xdab2, 0x003f, 0xdab1, 0x003f,
+    0x003f, 0x003f, 0xdab4, 0x003f, 0x003f, 0xdab6, 0xbef1, 0x003f,
+    /* 0x6500 .. 0x65ff */
+    0xdab5, 0x003f, 0x003f, 0x003f, 0x003f, 0xdab9, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdab7, 0x003f, 0x003f, 0x003f, 0xdab8, 0xd9f0, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdabb, 0xdaba, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd9f8, 0xdabc, 0xdab0, 0x003f, 0x003f, 0xbbd9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdabd, 0xdabe, 0xdac0, 0xdabf,
+    0xdac1, 0xb2fe, 0x003f, 0xb9b6, 0x003f, 0x003f, 0xcafc, 0xc0af,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb8ce, 0x003f, 0x003f,
+    0xdac3, 0x003f, 0x003f, 0x003f, 0x003f, 0xdac6, 0x003f, 0xc9d2,
+    0x003f, 0xb5df, 0x003f, 0x003f, 0x003f, 0xdac5, 0xdac4, 0xc7d4,
+    0xdac7, 0xb6b5, 0x003f, 0x003f, 0x003f, 0xdac9, 0xdac8, 0x003f,
+    0x003f, 0x003f, 0xb4ba, 0xbbb6, 0x003f, 0x003f, 0xc6d8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xb7c9, 0x003f, 0x003f, 0x003f,
+    0xbff4, 0x003f, 0xdaca, 0x003f, 0xc0b0, 0xc5a8, 0x003f, 0xc9df,
+    0xdacb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdacc, 0xdacd, 0x003f, 0x003f, 0x003f, 0xcab8,
+    0xd5dd, 0xc0c6, 0x003f, 0x003f, 0xc9cc, 0x003f, 0xbad8, 0x003f,
+    0xc8e5, 0xc8c3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc5cd,
+    0x003f, 0xcec1, 0x003f, 0xdacf, 0xbcd0, 0x003f, 0x003f, 0xdad0,
+    0x003f, 0xb0b6, 0x003f, 0x003f, 0xb6d4, 0xc0cd, 0x003f, 0xc9e0,
+    0x003f, 0x003f, 0x003f, 0xdad1, 0xbbc2, 0xc3c7, 0x003f, 0xbbdb,
+    0xbfb7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdad2,
+    0x003f, 0xcafd, 0x003f, 0x003f, 0xb1f7, 0xbbdc, 0x003f, 0x003f,
+    0x003f, 0xdad5, 0x003f, 0xdad3, 0xdad6, 0xceb9, 0xdad4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xc0fb, 0xdad7, 0x003f, 0x003f, 0xc2b2,
+    0x003f, 0x003f, 0xdad8, 0x003f, 0x003f, 0x003f, 0x003f, 0xb4fa,
+    0x003f, 0xdada, 0x003f, 0xdad9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdadb, 0xdadc, 0xb4fb, 0x003f, 0x003f, 0xc6fc, 0xc3b6, 0xb5ec,
+    0xbbdd, 0xc1e1, 0x003f, 0x003f, 0xbddc, 0xb0b0, 0x003f, 0x003f,
+    0x003f, 0xdadd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb2a2, 0xdae1, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6600 .. 0x66ff */
+    0x003f, 0x003f, 0xb9b7, 0xdae0, 0x003f, 0x003f, 0xbaab, 0xbeba,
+    0x003f, 0x003f, 0xdadf, 0x003f, 0xbebb, 0x003f, 0xccc0, 0xbaaa,
+    0x003f, 0x003f, 0x003f, 0xb0d7, 0xc0ce, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdae6, 0x003f, 0x003f, 0xc0b1,
+    0xb1c7, 0x003f, 0x003f, 0x003f, 0x003f, 0xbdd5, 0x003f, 0xcbe6,
+    0xbaf2, 0x003f, 0x003f, 0x003f, 0x003f, 0xbebc, 0x003f, 0xc0a7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdae5, 0xdae3, 0xdae4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xc3eb, 0x003f, 0x003f, 0xdba6,
+    0x003f, 0xdaea, 0xbbfe, 0xb9b8, 0xdae8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdae9, 0x003f, 0xbfb8, 0x003f, 0x003f, 0x003f, 0xdae7,
+    0x003f, 0x003f, 0xbbaf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdaec, 0xdaeb, 0xdaf0,
+    0x003f, 0x003f, 0xdaf1, 0x003f, 0xdaed, 0x003f, 0xb3a2, 0xdaee,
+    0xdaef, 0xc8d5, 0x003f, 0x003f, 0x003f, 0x003f, 0xc9e1, 0xb7ca,
+    0xdaf2, 0x003f, 0x003f, 0x003f, 0xc0b2, 0x003f, 0xbebd, 0x003f,
+    0x003f, 0x003f, 0xc3d2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb6c7, 0x003f, 0xdaf3, 0xdaf7, 0x003f, 0x003f, 0xb2cb,
+    0xdaf4, 0xdaf6, 0x003f, 0x003f, 0x003f, 0x003f, 0xdaf5, 0x003f,
+    0x003f, 0xbdeb, 0x003f, 0x003f, 0x003f, 0x003f, 0xc3c8, 0xb0c5,
+    0xdaf8, 0x003f, 0x003f, 0x003f, 0x003f, 0xdaf9, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xc4aa, 0x003f, 0x003f, 0x003f, 0xcef1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xbbc3, 0x003f, 0x003f, 0xcaeb, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xcbbd, 0x003f, 0x003f, 0x003f,
+    0xdba2, 0xdafb, 0x003f, 0x003f, 0xdafe, 0x003f, 0xdafd, 0x003f,
+    0x003f, 0xdafa, 0x003f, 0x003f, 0xdba1, 0x003f, 0x003f, 0xc6de,
+    0x003f, 0xdafc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdba3, 0x003f,
+    0x003f, 0xbdec, 0xdba4, 0x003f, 0xcdcb, 0xc7f8, 0x003f, 0x003f,
+    0xdba5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdba7, 0x003f,
+    0x003f, 0xdba8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdba9, 0x003f, 0xb6ca, 0xb1c8, 0xb9b9, 0xdbaa, 0x003f, 0xdbab,
+    0xbdf1, 0xc1e2, 0x003f, 0x003f, 0xd2d8, 0xc1be, 0xc1bd, 0xc2d8,
+    /* 0x6700 .. 0x67ff */
+    0xbac7, 0x003f, 0x003f, 0xd0f2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xb7ee, 0xcdad, 0x003f, 0xcafe, 0x003f, 0xc9fe, 0x003f, 0xdbac,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xbaf3, 0xc4bf, 0xdbad, 0xcfaf,
+    0x003f, 0x003f, 0x003f, 0xcbbe, 0x003f, 0xc4ab, 0xdbae, 0xb4fc,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdbaf, 0xdbb0,
+    0xccda, 0x003f, 0xcca4, 0xcbf6, 0xcbdc, 0xbba5, 0xdbb2, 0x003f,
+    0x003f, 0xbceb, 0x003f, 0x003f, 0xcbd1, 0x003f, 0xdbb4, 0xdbb7,
+    0xdbb6, 0x003f, 0xb4f9, 0x003f, 0x003f, 0xb5e0, 0x003f, 0xdbb3,
+    0x003f, 0xdbb5, 0x003f, 0x003f, 0x003f, 0x003f, 0xdbb8, 0x003f,
+    0x003f, 0xbff9, 0x003f, 0x003f, 0x003f, 0x003f, 0xcdfb, 0xb0c9,
+    0xbae0, 0xc2bc, 0x003f, 0xbcdd, 0x003f, 0x003f, 0xbef3, 0x003f,
+    0x003f, 0xdbbb, 0x003f, 0x003f, 0xc5ce, 0x003f, 0xdbb9, 0xc2ab,
+    0xdbba, 0xbef2, 0xccdd, 0xdbbc, 0xdbbd, 0xcde8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdbc2, 0x003f, 0x003f, 0xb9ba, 0x003f, 0xc7d5,
+    0xdbbf, 0xc5ec, 0xdade, 0xdae2, 0x003f, 0xb5cf, 0x003f, 0xc7c7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdbc1, 0x003f, 0xbebe, 0xc8c4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdbc7, 0x003f, 0xc8fa,
+    0x003f, 0xdbbe, 0x003f, 0xdbc4, 0xdbc3, 0x003f, 0x003f, 0x003f,
+    0xc0cf, 0x003f, 0x003f, 0x003f, 0x003f, 0xcbed, 0x003f, 0xced3,
+    0x003f, 0x003f, 0xcbe7, 0x003f, 0xb2cc, 0xbbde, 0x003f, 0x003f,
+    0xcfc8, 0xdbc6, 0xbff5, 0x003f, 0x003f, 0x003f, 0xdbc5, 0x003f,
+    0x003f, 0xdbc0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb8cf,
+    0x003f, 0x003f, 0x003f, 0xdbcc, 0xdbca, 0x003f, 0xb2cd, 0xdbc8,
+    0xdbce, 0xdbd4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc2c8, 0x003f, 0x003f, 0xcac1, 0x003f, 0xdbd6, 0x003f,
+    0x003f, 0x003f, 0xc9a2, 0x003f, 0x003f, 0x003f, 0xdbd5, 0xc7f0,
+    0xcbbf, 0xb4bb, 0x003f, 0xc0f7, 0xbdc0, 0x003f, 0x003f, 0x003f,
+    0xc4d3, 0x003f, 0xcdae, 0x003f, 0x003f, 0xdbd1, 0xdbd0, 0x003f,
+    0x003f, 0x003f, 0xdbd2, 0x003f, 0xdbcf, 0x003f, 0x003f, 0xdbd7,
+    0x003f, 0xdbcd, 0x003f, 0x003f, 0xdbcb, 0x003f, 0xdbd3, 0xdbc9,
+    0x003f, 0xc3ec, 0x003f, 0xccf8, 0xbcc6, 0xbaf4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xbaba, 0x003f, 0x003f, 0xcbef, 0xb3c1,
+    /* 0x6800 .. 0x68ff */
+    0x003f, 0x003f, 0xc4ce, 0xc6ca, 0xb1c9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xc0f2, 0x003f, 0x003f, 0xc0b4, 0xb7aa,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdbd9, 0x003f,
+    0x003f, 0xb9bb, 0xb3fc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdbdb, 0xb3f4, 0xdbe1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdbde, 0x003f, 0xc0f3, 0x003f, 0x003f, 0x003f,
+    0xb3cb, 0xbaac, 0x003f, 0x003f, 0xb3ca, 0xbacf, 0x003f, 0x003f,
+    0xdbdc, 0xb7e5, 0xb7cb, 0xc5ed, 0x003f, 0x003f, 0xdbda, 0x003f,
+    0xb0c6, 0x003f, 0x003f, 0x003f, 0x003f, 0xdbdd, 0xdbdf, 0x003f,
+    0xb6cd, 0xb7ac, 0x003f, 0xb4bc, 0xb5cb, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdbe2, 0x003f, 0x003f, 0xbaf9, 0xcbf1, 0x003f, 0xbbb7,
+    0x003f, 0x003f, 0x003f, 0xdbe3, 0x003f, 0x003f, 0x003f, 0xc9b0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdbef, 0x003f, 0xb2b3, 0xdbe4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdbf5, 0xdbe5,
+    0x003f, 0xcec2, 0x003f, 0xdbec, 0x003f, 0xc7df, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdbf4, 0x003f, 0xdbe7,
+    0x003f, 0x003f, 0x003f, 0xb0b4, 0xdbe9, 0x003f, 0x003f, 0xb9bc,
+    0x003f, 0x003f, 0x003f, 0xdbeb, 0x003f, 0xdbea, 0x003f, 0xdbe6,
+    0xdbf1, 0x003f, 0xbebf, 0x003f, 0x003f, 0x003f, 0xd4ed, 0xb8e8,
+    0xcdfc, 0x003f, 0x003f, 0x003f, 0x003f, 0xdbe8, 0x003f, 0xc4f4,
+    0xb3a3, 0xbaad, 0x003f, 0xdbe0, 0x003f, 0xdbf0, 0xb3e1, 0x003f,
+    0x003f, 0xdbee, 0xdbf2, 0x003f, 0xc5ee, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xb4fe, 0x003f, 0xdcb2, 0x003f,
+    0x003f, 0xccc9, 0xdbf7, 0xb4fd, 0x003f, 0xdbfe, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xcbc0, 0x003f, 0xdca1, 0xdca3, 0x003f, 0xdca7,
+    0xdbf9, 0x003f, 0xc3aa, 0x003f, 0x003f, 0x003f, 0x003f, 0xc5ef,
+    0xdcab, 0xdbfc, 0x003f, 0xdca8, 0x003f, 0x003f, 0x003f, 0xdca2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xbfb9, 0xdcac,
+    0x003f, 0x003f, 0xc0b3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdcaa, 0xb4bd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6900 .. 0x69ff */
+    0xcfd0, 0xdbf6, 0x003f, 0x003f, 0xdca6, 0xb0d8, 0x003f, 0x003f,
+    0xdbf8, 0x003f, 0x003f, 0xccba, 0xdbfd, 0xbfa2, 0xc4c7, 0xdbf3,
+    0x003f, 0x003f, 0xdca5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbffa, 0xdcaf, 0xb3f1, 0xb8a1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdcb1, 0xdbfa, 0xdcb0, 0x003f, 0xdca9, 0xdbfb, 0x003f,
+    0xdcad, 0x003f, 0xdcae, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdcbf, 0x003f, 0x003f, 0x003f, 0xc6ce, 0x003f, 0xdca4, 0x003f,
+    0x003f, 0xdcbb, 0x003f, 0x003f, 0x003f, 0xdcbd, 0x003f, 0xc4d8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xcdcc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xc9f6, 0xdcb8, 0xc2ca, 0x003f, 0x003f,
+    0x003f, 0xdcbe, 0xc1bf, 0x003f, 0xdcb5, 0xdcc2, 0xdcc1, 0x003f,
+    0xc6ef, 0xdcc0, 0xc6ea, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdcc4, 0xdcb7, 0x003f, 0xb6c8, 0xdcba, 0xbddd,
+    0x003f, 0x003f, 0x003f, 0xc7e0, 0xdcbc, 0xb6cb, 0x003f, 0xdcb4,
+    0xdcb6, 0xdcb3, 0x003f, 0x003f, 0xcfb0, 0xb3da, 0xdcb9, 0x003f,
+    0x003f, 0xdcc3, 0xb3b5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xbae7, 0x003f, 0x003f, 0x003f, 0xb1dd, 0x003f,
+    0x003f, 0xdcd4, 0x003f, 0x003f, 0xcfb1, 0xdcd7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xbfba, 0xdcd6, 0x003f, 0x003f, 0x003f,
+    0xdcd5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdcd2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdcc6, 0x003f,
+    0x003f, 0xdce3, 0xdcc5, 0x003f, 0xdcd8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdcd0, 0x003f, 0x003f, 0xdccb, 0xdcc8,
+    0x003f, 0xdcc9, 0x003f, 0xdcd1, 0x003f, 0x003f, 0x003f, 0xf4a2,
+    0x003f, 0x003f, 0xdcce, 0xb9bd, 0xc4c8, 0xc1e4, 0xdccc, 0x003f,
+    0xdcc7, 0x003f, 0x003f, 0xdcca, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcdcd, 0xcbea, 0x003f, 0x003f, 0x003f, 0xdccf, 0xdcd9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdce1,
+    0xdcda, 0x003f, 0x003f, 0xdce7, 0x003f, 0xdce5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdce0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdcdf, 0x003f, 0xc4d0, 0x003f, 0xc1e5, 0x003f, 0xdcdd,
+    /* 0x6a00 .. 0x6aff */
+    0x003f, 0x003f, 0xdcdb, 0x003f, 0x003f, 0xdce2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdce8, 0xc8f5, 0xdcee, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdce9, 0xdcec, 0xdce6, 0x003f, 0x003f, 0xc3f4,
+    0x003f, 0xc9b8, 0x003f, 0xdcdc, 0x003f, 0x003f, 0xdce4, 0xbec0,
+    0x003f, 0xcccf, 0xdcf8, 0xdceb, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb8a2, 0xb2a3, 0xb3df, 0x003f, 0x003f, 0xdcd3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xbec1, 0xdcf0, 0x003f,
+    0xdcf7, 0xbcf9, 0xb3f2, 0x003f, 0x003f, 0xc3ae, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdced, 0x003f, 0x003f, 0xdcf2,
+    0xdcf6, 0x003f, 0x003f, 0xb6b6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xb5cc, 0xdcf4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb5a1,
+    0x003f, 0xc6cb, 0xdcf3, 0x003f, 0x003f, 0x003f, 0xdcf5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdcef, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdcf1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb3e0,
+    0xc3c9, 0x003f, 0x003f, 0x003f, 0xdcfc, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdcfa, 0xb8e9, 0x003f,
+    0xdcf9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdda1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdbd8, 0x003f, 0x003f, 0x003f,
+    0xdcfb, 0x003f, 0xdcfd, 0xdcfe, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xddac, 0x003f, 0xdda8, 0x003f, 0xdbed, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdda7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdda6, 0x003f, 0x003f, 0xdda3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdcea, 0xdda5, 0xdda4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xddaa, 0x003f, 0xcfa6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xddad, 0xb6fb, 0x003f, 0x003f, 0xdda9, 0xddab,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xc8a7, 0x003f, 0xddae, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xddb2, 0xddaf, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6b00 .. 0x6bff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0xcdf3, 0xddb0, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdcde, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xddb3, 0x003f, 0x003f, 0x003f, 0xddb4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb1b5, 0x003f, 0xddb6,
+    0xb7e7, 0xbca1, 0x003f, 0xb6d5, 0x003f, 0x003f, 0x003f, 0xb2a4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xcddf, 0x003f, 0x003f, 0x003f, 0x003f, 0xddb8,
+    0xddb7, 0xddba, 0xb5bd, 0x003f, 0x003f, 0xb6d6, 0xb4be, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xddbd, 0x003f, 0x003f, 0x003f, 0xddbc,
+    0x003f, 0xddbe, 0x003f, 0x003f, 0xb2ce, 0x003f, 0xc3b7, 0x003f,
+    0xddbf, 0x003f, 0x003f, 0xb4bf, 0xddc1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xddc0, 0x003f, 0xddc2, 0x003f, 0x003f, 0x003f, 0xddc3,
+    0x003f, 0xddc4, 0xbbdf, 0xc0b5, 0xbaa1, 0x003f, 0xc9f0, 0x003f,
+    0x003f, 0xcae2, 0xcfc4, 0x003f, 0x003f, 0x003f, 0x003f, 0xbbf5,
+    0x003f, 0x003f, 0x003f, 0xbad0, 0xcef2, 0x003f, 0x003f, 0x003f,
+    0xddc5, 0xddc6, 0x003f, 0xbbe0, 0x003f, 0x003f, 0x003f, 0xddc7,
+    0xddc8, 0x003f, 0x003f, 0xddca, 0xddc9, 0x003f, 0xcbd8, 0x003f,
+    0x003f, 0xbdde, 0xbcec, 0xbbc4, 0x003f, 0xddcb, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xddcd, 0xbfa3, 0x003f,
+    0xddcc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xddce, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xddcf, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xddd0, 0xddd1, 0x003f, 0x003f, 0x003f, 0xddd2,
+    0x003f, 0xddd4, 0xddd3, 0xddd5, 0xb2a5, 0xc3ca, 0x003f, 0xddd6,
+    0x003f, 0x003f, 0xbba6, 0xb3cc, 0xddd7, 0x003f, 0x003f, 0xc5c2,
+    0xd4cc, 0x003f, 0x003f, 0x003f, 0x003f, 0xb5a3, 0xddd8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xddd9, 0x003f, 0xcaec, 0xcbe8, 0x003f,
+    0x003f, 0x003f, 0xc6c7, 0xddda, 0xc8e6, 0x003f, 0x003f, 0x003f,
+    0xc8fb, 0x003f, 0x003f, 0xccd3, 0x003f, 0x003f, 0x003f, 0xdddb,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdddd, 0xdddc, 0x003f, 0x003f, 0xdddf,
+    0x003f, 0x003f, 0x003f, 0xddde, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6c00 .. 0x6cff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdde1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xbbe1,
+    0x003f, 0xccb1, 0x003f, 0xdde2, 0xdde3, 0x003f, 0x003f, 0xb5a4,
+    0x003f, 0x003f, 0x003f, 0xdde4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdde6, 0xdde5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xbfe5, 0x003f, 0x003f, 0xc9b9,
+    0xb1ca, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc8c5, 0x003f,
+    0xc4f5, 0xbdc1, 0xb5e1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc8c6, 0x003f,
+    0xbcae, 0x003f, 0x003f, 0x003f, 0x003f, 0xdde8, 0x003f, 0xb4c0,
+    0x003f, 0x003f, 0xb1f8, 0x003f, 0x003f, 0xc6f2, 0xdde7, 0xb9be,
+    0xc3d3, 0x003f, 0xdde9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xddf1, 0x003f, 0xddea, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xc2c1, 0x003f, 0xb5e2, 0xddf2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb7e8, 0x003f, 0x003f, 0xb5a5, 0xddf0, 0x003f,
+    0x003f, 0xddee, 0xddeb, 0xcde0, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xc4c0, 0x003f, 0x003f, 0x003f, 0xc6d9, 0xddec, 0x003f, 0x003f,
+    0xddf4, 0x003f, 0xddf3, 0xb7a3, 0x003f, 0x003f, 0xb2ad, 0x003f,
+    0x003f, 0xbabb, 0xdded, 0xddef, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcbd7, 0xc2f4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xcbf7, 0x003f, 0x003f, 0xddfc, 0x003f,
+    0x003f, 0xddfd, 0x003f, 0xb2cf, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcaa8, 0xccfd, 0xdea1, 0xbca3, 0xbec2, 0xddf8, 0xddfe, 0xb1e8,
+    0x003f, 0xb6b7, 0x003f, 0x003f, 0xddf5, 0xddfa, 0x003f, 0x003f,
+    0x003f, 0xc0f4, 0xc7f1, 0x003f, 0xc8e7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xddf7, 0x003f, 0xcba1, 0x003f, 0xddf9,
+    0x003f, 0xdea4, 0x003f, 0xdea2, 0x003f, 0xddfb, 0x003f, 0x003f,
+    0x003f, 0xcba2, 0xc7c8, 0xb5e3, 0x003f, 0xc5a5, 0x003f, 0x003f,
+    0xc3ed, 0x003f, 0xdea5, 0x003f, 0x003f, 0x003f, 0x003f, 0xdea3,
+    0xc2d9, 0xddf6, 0x003f, 0xb1cb, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6d00 .. 0x6dff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xcdce, 0xdeb0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdeaf, 0x003f, 0x003f, 0x003f, 0x003f, 0xc0f6,
+    0x003f, 0xdeac, 0x003f, 0xcdec, 0x003f, 0x003f, 0xc6b6, 0xdea6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc4c5, 0x003f, 0x003f,
+    0x003f, 0xb1cc, 0xb9bf, 0xdea9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xbda7, 0xdeae, 0x003f, 0xdead, 0xdea8, 0x003f,
+    0xdeab, 0x003f, 0x003f, 0xb3e8, 0x003f, 0xdeaa, 0xc7c9, 0x003f,
+    0x003f, 0xceae, 0x003f, 0x003f, 0xbef4, 0xc0f5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdeb6, 0xdeb4, 0x003f, 0xc9cd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdeb1, 0xdeb3, 0x003f, 0xb1ba, 0x003f,
+    0x003f, 0xb9c0, 0xcfb2, 0x003f, 0xb3bd, 0x003f, 0xc9e2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xcde1, 0x003f, 0x003f, 0xb3a4,
+    0xbfbb, 0xdeb5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdeba, 0x003f, 0x003f,
+    0xbec3, 0x003f, 0x003f, 0x003f, 0xcdb0, 0x003f, 0xdeb7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdeb2, 0x003f, 0xdeb8, 0x003f, 0x003f,
+    0x003f, 0xcede, 0x003f, 0xc5f3, 0xc6c2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb3b6,
+    0x003f, 0x003f, 0xb1d5, 0x003f, 0x003f, 0xdebe, 0x003f, 0x003f,
+    0xdec1, 0x003f, 0x003f, 0x003f, 0xcec3, 0x003f, 0x003f, 0x003f,
+    0xcde4, 0x003f, 0x003f, 0x003f, 0x003f, 0xdec8, 0xdec2, 0xdebf,
+    0x003f, 0x003f, 0x003f, 0xced4, 0xdec5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbdca, 0xdec7, 0x003f, 0x003f, 0xdecc, 0x003f, 0x003f,
+    0xc5f1, 0xdeca, 0x003f, 0x003f, 0x003f, 0x003f, 0xdec4, 0x003f,
+    0x003f, 0xc3b8, 0x003f, 0x003f, 0xdecb, 0x003f, 0xdec0, 0x003f,
+    0xdec6, 0x003f, 0xdecd, 0xb0fc, 0xdec3, 0x003f, 0xdece, 0x003f,
+    0x003f, 0xbfbc, 0x003f, 0xbddf, 0x003f, 0xcaa5, 0x003f, 0xbaae,
+    0x003f, 0xdebb, 0xdec9, 0xc5ba, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6e00 .. 0x6eff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc0b6, 0x003f, 0xb3e9,
+    0xbad1, 0xbec4, 0xdebd, 0xbdc2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb7cc, 0x003f, 0xdebc, 0x003f, 0x003f,
+    0x003f, 0xded2, 0xbded, 0xb8ba, 0x003f, 0xdee1, 0x003f, 0xdedb,
+    0xb5f4, 0xc5cf, 0x003f, 0xded6, 0xdedf, 0xb0af, 0xb1b2, 0x003f,
+    0x003f, 0xb2b9, 0x003f, 0xded8, 0xc2ac, 0xdecf, 0xded1, 0xb9c1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdee2, 0x003f, 0xdedd, 0x003f, 0x003f, 0x003f, 0xded5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdedc, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xccab, 0x003f, 0x003f, 0xdeda, 0xdede, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb8d0, 0x003f,
+    0xbec5, 0x003f, 0x003f, 0xc3b9, 0x003f, 0x003f, 0x003f, 0xded4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcdaf,
+    0x003f, 0x003f, 0x003f, 0xded7, 0x003f, 0x003f, 0xded0, 0xc5f2,
+    0x003f, 0x003f, 0xded3, 0x003f, 0x003f, 0x003f, 0xded9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcfd1, 0xbcbe,
+    0xcbfe, 0x003f, 0xdee3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xc8ae, 0x003f, 0x003f, 0xdeef,
+    0xb8bb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xbde0, 0x003f,
+    0xdee5, 0x003f, 0x003f, 0x003f, 0xceaf, 0xb9c2, 0x003f, 0xdef2,
+    0x003f, 0x003f, 0xb0ee, 0x003f, 0x003f, 0xdef0, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdee4, 0x003f, 0x003f, 0x003f, 0x003f, 0xdeea,
+    0x003f, 0x003f, 0xdeec, 0x003f, 0x003f, 0x003f, 0xcdcf, 0xdee7,
+    0x003f, 0x003f, 0xc5ae, 0x003f, 0x003f, 0xdee9, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdef1, 0x003f, 0xdeeb, 0xccc7, 0x003f, 0x003f,
+    0x003f, 0xdee6, 0x003f, 0xbca2, 0xdefe, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb3ea, 0x003f, 0xdee8, 0xdeed, 0xdeee, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc2ec, 0xc2da, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdef6, 0x003f, 0x003f, 0xdefc,
+    0x003f, 0x003f, 0xdefa, 0x003f, 0xc5a9, 0x003f, 0x003f, 0xdfa3,
+    0xdef7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdef8, 0xdee0,
+    /* 0x6f00 .. 0x6fff */
+    0x003f, 0xb5f9, 0xc9ba, 0x003f, 0x003f, 0x003f, 0xbcbf, 0x003f,
+    0x003f, 0xb9f7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcfb3,
+    0x003f, 0xdef4, 0x003f, 0xdfa2, 0xb1e9, 0xc1e6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xc7f9, 0x003f, 0xb4c1, 0xcefa, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xcca1, 0xc4d2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdefb, 0xdefd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xc1b2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdfa1, 0xdef9,
+    0x003f, 0xdef3, 0x003f, 0x003f, 0x003f, 0xb4c3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xb7e9, 0x003f, 0x003f, 0x003f,
+    0xdfaf, 0x003f, 0x003f, 0xdfaa, 0xc0f8, 0x003f, 0x003f, 0xb3e3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xbde1, 0x003f, 0xdfb3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdfac, 0xc4ac, 0xdfa9,
+    0xc4d9, 0x003f, 0x003f, 0x003f, 0xdfcc, 0x003f, 0x003f, 0x003f,
+    0xdfa6, 0x003f, 0xdfa5, 0x003f, 0xdfae, 0x003f, 0x003f, 0x003f,
+    0xdfa8, 0xdfa7, 0xdfad, 0x003f, 0xc0a1, 0x003f, 0xdfa4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdfb0, 0x003f,
+    0x003f, 0xdfb1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb4c2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdfb6, 0x003f, 0xdfb5, 0xdfb7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdfba, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc5c3, 0x003f, 0xdfb4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdfb8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xb7e3, 0xc2f9, 0xdfb2, 0xc7bb, 0x003f, 0x003f, 0xdfb9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdfbe, 0xdfbc, 0x003f, 0x003f,
+    0xdfbf, 0x003f, 0x003f, 0xdfc2, 0x003f, 0x003f, 0x003f, 0xdfbb,
+    0xb9ea, 0xc7a8, 0x003f, 0x003f, 0xdeb9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xcdf4, 0xdfbd, 0x003f, 0xdfc1, 0xc2f5,
+    0x003f, 0xdfc0, 0x003f, 0xdfab, 0x003f, 0x003f, 0xefe9, 0x003f,
+    0x003f, 0x003f, 0xdfc5, 0x003f, 0x003f, 0x003f, 0xdfc9, 0x003f,
+    /* 0x7000 .. 0x70ff */
+    0x003f, 0xdfc7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdfc3, 0x003f, 0xdfc4, 0x003f, 0x003f, 0x003f, 0xdfc8,
+    0x003f, 0xdfc6, 0x003f, 0x003f, 0x003f, 0xc9ce, 0x003f, 0x003f,
+    0xdfce, 0x003f, 0xdfcb, 0xdfca, 0x003f, 0xdfcd, 0xc6d4, 0xdfcf,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc3f5, 0xc2ed,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xc0a5, 0x003f, 0x003f, 0x003f,
+    0xdfd0, 0x003f, 0xdfd2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdfd1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdef5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdfd3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xc6e7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdfd4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb2d0, 0x003f, 0x003f, 0x003f, 0xc5f4,
+    0xb3a5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xb5e4, 0x003f, 0x003f, 0x003f, 0xbcde, 0xbad2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcfa7, 0xbfe6, 0x003f, 0x003f, 0x003f, 0xb1ea, 0x003f,
+    0x003f, 0x003f, 0xdfd6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdfd5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdfd9, 0xc3ba, 0xdfdc, 0xdfd7,
+    0x003f, 0x003f, 0x003f, 0xdfdb, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdfda, 0xc5c0, 0xb0d9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcef5, 0x003f, 0x003f, 0xdfde, 0x003f, 0x003f, 0x003f, 0xb1a8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdfe0, 0x003f, 0x003f, 0x003f, 0xdfdf, 0x003f, 0xdfdd,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdfd8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcba3, 0x003f, 0x003f, 0x003f, 0xdfe2, 0x003f, 0x003f,
+    /* 0x7100 .. 0x71ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdfe1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xb1eb, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdfe4, 0xcab2, 0x003f, 0xdfe3, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xccb5, 0x003f, 0x003f, 0x003f, 0x003f, 0xbec7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc1b3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xbec6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcefb, 0x003f, 0x003f, 0xdfea, 0x003f, 0xc0f9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdfe6, 0xdfeb, 0x003f,
+    0x003f, 0xb1ec, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdfe9, 0x003f, 0xc7e1, 0xdfe5, 0xdfe8, 0xbec8,
+    0x003f, 0xc8d1, 0x003f, 0x003f, 0xdfec, 0x003f, 0xbcd1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc0fa, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdfef, 0x003f, 0x003f, 0x003f,
+    0xdfe7, 0x003f, 0xb7a7, 0x003f, 0x003f, 0x003f, 0x003f, 0xdfed,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xcdd0, 0xdff0, 0x003f, 0x003f,
+    0x003f, 0xf4a6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xbdcf,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdff1, 0x003f, 0x003f, 0x003f, 0xdff2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc7ae, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdff4, 0x003f, 0x003f, 0x003f, 0x003f, 0xdff5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xc7b3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xc5f5, 0xdff7, 0x003f, 0x003f, 0x003f, 0x003f, 0xdff9, 0x003f,
+    0xced5, 0x003f, 0xdff6, 0x003f, 0xdff8, 0xb1ed, 0x003f, 0xdff3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd3db,
+    0xdffa, 0x003f, 0x003f, 0x003f, 0x003f, 0xc1e7, 0xbbb8, 0xdffc,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdffb, 0xbfa4, 0xd2d9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdffd, 0x003f, 0x003f,
+    0x003f, 0xe0a1, 0x003f, 0xdfee, 0xdffe, 0x003f, 0x003f, 0xe0a2,
+    /* 0x7200 .. 0x72ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc7fa, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0a3, 0x003f, 0x003f,
+    0xe0a4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe0a5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe0a6, 0x003f, 0xc4de, 0x003f, 0xe0a8, 0xe0a7, 0x003f, 0x003f,
+    0xe0a9, 0x003f, 0xe0aa, 0x003f, 0x003f, 0xbcdf, 0xc9e3, 0x003f,
+    0x003f, 0x003f, 0xccec, 0xe0ab, 0xe0ac, 0xc1d6, 0xbca4, 0xe0ad,
+    0xe0ae, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0af, 0xcad2,
+    0xc8c7, 0x003f, 0x003f, 0xe0b0, 0xc7d7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xc4ad, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe0b1, 0xb2e7, 0x003f, 0xb5ed, 0x003f, 0xccc6, 0x003f, 0xccb6,
+    0x003f, 0xb2b4, 0xcfb4, 0x003f, 0x003f, 0x003f, 0x003f, 0xcbd2,
+    0x003f, 0xcaaa, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xc0b7, 0x003f, 0xe0b2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc6c3, 0x003f, 0x003f, 0x003f, 0xb8a3, 0xe0b3, 0x003f,
+    0xbad4, 0xe0b5, 0xe0b4, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0b6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe0b7, 0x003f, 0x003f, 0x003f, 0xe0b8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xb5be, 0x003f, 0xe0b9, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0ba,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xb8a4, 0x003f, 0x003f, 0xc8c8,
+    0x003f, 0x003f, 0xe0bc, 0x003f, 0x003f, 0x003f, 0xbef5, 0x003f,
+    0x003f, 0xe0bb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb6b8, 0xe0bd, 0xe0bf, 0x003f, 0xe0be, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0c0, 0x003f,
+    0xb8d1, 0x003f, 0xe0c1, 0x003f, 0x003f, 0x003f, 0x003f, 0xb6e9,
+    0x003f, 0xc1c0, 0x003f, 0xb9fd, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe0c3, 0xe0c4, 0xe0c2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbced, 0x003f, 0x003f, 0xc6c8, 0xb6b9, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0c6,
+    0xc3ac, 0xe0c5, 0x003f, 0x003f, 0xcfb5, 0xc7e2, 0x003f, 0x003f,
+    /* 0x7300 .. 0x73ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe0c9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0cb, 0xe0c8,
+    0x003f, 0x003f, 0x003f, 0xccd4, 0xe0ca, 0xe0cc, 0x003f, 0xcec4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0d0, 0x003f, 0x003f,
+    0x003f, 0xe0cf, 0xc3f6, 0xc7ad, 0x003f, 0x003f, 0xb8a5, 0xe0ce,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe0cd, 0x003f, 0xcdb1, 0xcdb2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0d1, 0xb1ee,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xb9f6, 0xbbe2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0d2, 0xe0d3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0d5,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xbdc3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe0d7, 0x003f, 0xe0d6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe0d8, 0x003f, 0xb3cd, 0x003f, 0x003f, 0xe0da, 0x003f, 0x003f,
+    0xe0d9, 0x003f, 0xe0dc, 0xe0db, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xb8bc, 0x003f, 0x003f, 0xcea8,
+    0x003f, 0xb6cc, 0x003f, 0xb2a6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb6ea, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb4e1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xcee8, 0xe0de, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe0e0, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe0e1, 0x003f, 0xb2d1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe0dd, 0x003f, 0xbbb9, 0x003f, 0x003f, 0xc4c1, 0xe0df, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0e4, 0x003f,
+    0xbcee, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0e2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb7be, 0x003f, 0x003f, 0xc8c9, 0xe0e3, 0x003f,
+    0x003f, 0xe0fe, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe0e9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb8bd, 0x003f,
+    /* 0x7400 .. 0x74ff */
+    0x003f, 0x003f, 0x003f, 0xb5e5, 0x003f, 0xe0e6, 0xcdfd, 0x003f,
+    0x003f, 0xceb0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xc2f6, 0x003f, 0x003f, 0xe0e8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe0ea, 0xced6, 0xb6d7, 0xc8fc, 0xc7ca, 0x003f,
+    0x003f, 0x003f, 0xe0eb, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0ed,
+    0x003f, 0xe0f0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0ec, 0x003f, 0x003f,
+    0x003f, 0xe0ef, 0xb8ea, 0xb1cd, 0xe0f1, 0x003f, 0xbff0, 0xe0ee,
+    0xcedc, 0x003f, 0x003f, 0xe0f4, 0xf4a4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe0f2, 0xe0f5, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0e7,
+    0xe0f3, 0x003f, 0x003f, 0xbabc, 0x003f, 0x003f, 0xe0f6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0f7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xcdfe, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe0f8, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0f9, 0x003f,
+    0x003f, 0x003f, 0xe0e5, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0fa,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xb4c4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xbca5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe0fb, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0fc,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe0fd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xb1bb, 0x003f, 0x003f, 0x003f,
+    0xe1a1, 0x003f, 0xc9bb, 0xe1a2, 0x003f, 0x003f, 0xb4a4, 0xe1a3,
+    0x003f, 0xe1a4, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1a5, 0x003f,
+    0xe1a7, 0xe1a8, 0xe1a6, 0x003f, 0x003f, 0x003f, 0xc9d3, 0xe1aa,
+    0xe1a9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x7500 .. 0x75ff */
+    0x003f, 0x003f, 0x003f, 0xe1ac, 0xe1ab, 0xe1ad, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe1ae, 0xe1b0, 0xe1af, 0x003f,
+    0x003f, 0xb9f9, 0x003f, 0xe1b2, 0x003f, 0xe1b1, 0x003f, 0x003f,
+    0xb4c5, 0x003f, 0xbfd3, 0x003f, 0xc5bc, 0x003f, 0xe1b3, 0xc0b8,
+    0x003f, 0x003f, 0x003f, 0xbbba, 0x003f, 0xb1f9, 0xe1b4, 0x003f,
+    0xcdd1, 0x003f, 0x003f, 0xcae3, 0xe1b5, 0x003f, 0x003f, 0x003f,
+    0xc5c4, 0xcdb3, 0xb9c3, 0xbfbd, 0x003f, 0x003f, 0x003f, 0xc3cb,
+    0xd2b4, 0x003f, 0xc4ae, 0xb2e8, 0xe1b6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe1b7, 0x003f, 0xe1bc, 0x003f,
+    0x003f, 0xe1ba, 0xe1b9, 0xdac2, 0xb3a6, 0xe1b8, 0x003f, 0xb0da,
+    0x003f, 0xc8aa, 0x003f, 0x003f, 0xc8ca, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xceb1, 0xe1bd, 0xe1bb, 0xc3dc, 0xc0a6, 0x003f, 0x003f,
+    0xc8ab, 0x003f, 0xc9ad, 0x003f, 0xe1bf, 0xceac, 0xb7cd, 0xe1c0,
+    0x003f, 0xe1be, 0xc8d6, 0xe1c1, 0x003f, 0xe1c2, 0x003f, 0x003f,
+    0xb0db, 0x003f, 0x003f, 0xbef6, 0xe1c7, 0x003f, 0xe1c4, 0xc6ed,
+    0xe1c3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb5a6,
+    0x003f, 0x003f, 0xe1ca, 0x003f, 0x003f, 0x003f, 0xe1c5, 0xe1c6,
+    0x003f, 0xe1c9, 0xe1c8, 0xc9a5, 0x003f, 0x003f, 0xc1c2, 0xc1c1,
+    0x003f, 0xb5bf, 0x003f, 0x003f, 0xe1cb, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe1cc, 0x003f, 0x003f, 0xe1cd, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe1cf, 0x003f, 0xe1ce, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb1d6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe1d7, 0xc8e8, 0xe1d1, 0x003f, 0xe1d3, 0x003f, 0x003f,
+    0xe1d5, 0xbfbe, 0x003f, 0x003f, 0xe1d6, 0xe1d4, 0xbcc0, 0x003f,
+    0x003f, 0x003f, 0xe1d0, 0xe1d2, 0x003f, 0xc9c2, 0x003f, 0xbec9,
+    0x003f, 0x003f, 0xe1d9, 0x003f, 0x003f, 0xe1d8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe1da, 0x003f, 0xbca6, 0xbaaf, 0x003f, 0x003f,
+    0xc5f7, 0xe1db, 0x003f, 0xc4cb, 0x003f, 0x003f, 0xe1dd, 0x003f,
+    0x003f, 0x003f, 0xcea1, 0xe1dc, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc1e9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe1e2, 0x003f, 0xe1e4, 0xe1e5, 0xc3d4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe1e3, 0x003f, 0xe1e0, 0x003f, 0xe1de, 0xe1df,
+    /* 0x7600 .. 0x76ff */
+    0x003f, 0xe1e1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe1e8, 0x003f, 0xe1e6, 0x003f, 0xe1e7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1e9,
+    0xe1eb, 0xe1ec, 0xe1ed, 0x003f, 0xe1ee, 0x003f, 0x003f, 0xe1ea,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe1f0, 0x003f, 0x003f, 0x003f, 0xe1ef, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe1f1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xcec5, 0x003f, 0x003f, 0x003f, 0xe1f4, 0xe1f2,
+    0xe1f3, 0x003f, 0x003f, 0x003f, 0xb4e2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xccfe, 0x003f, 0x003f, 0x003f, 0xcaca, 0x003f,
+    0xe1f6, 0x003f, 0x003f, 0x003f, 0xe1f5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe1f7, 0xe1f8, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1fc,
+    0xe1f9, 0xe1fa, 0xe1fb, 0x003f, 0xe1fd, 0x003f, 0x003f, 0x003f,
+    0xe1fe, 0x003f, 0xe2a1, 0x003f, 0x003f, 0x003f, 0xe2a2, 0x003f,
+    0xe2a3, 0x003f, 0xc8af, 0xc5d0, 0xe2a4, 0xc7f2, 0xc9b4, 0x003f,
+    0xe2a5, 0x003f, 0x003f, 0xe2a6, 0xc5aa, 0x003f, 0xb3a7, 0xb9c4,
+    0xe2a7, 0x003f, 0x003f, 0xe2a8, 0x003f, 0x003f, 0xe2a9, 0x003f,
+    0xbba9, 0x003f, 0x003f, 0xe2ab, 0x003f, 0x003f, 0xe2aa, 0x003f,
+    0x003f, 0xe2ac, 0xe2ad, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc8e9, 0x003f,
+    0xe2ae, 0x003f, 0x003f, 0x003f, 0xe2af, 0x003f, 0x003f, 0xf3e9,
+    0xe2b0, 0xe2b1, 0xe2b2, 0x003f, 0x003f, 0x003f, 0x003f, 0xbbae,
+    0x003f, 0x003f, 0xe2b3, 0xc7d6, 0x003f, 0x003f, 0xcbdf, 0x003f,
+    0xb1ce, 0x003f, 0xb1d7, 0x003f, 0x003f, 0xe2b4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe2b6, 0x003f, 0x003f, 0x003f, 0xe2b5, 0xc5f0,
+    0x003f, 0x003f, 0x003f, 0xc0b9, 0xddb9, 0x003f, 0xe2b7, 0xccc1,
+    0x003f, 0xe2b8, 0x003f, 0xb4c6, 0xc8d7, 0xe2b9, 0x003f, 0xe2ba,
+    0x003f, 0x003f, 0xe2bb, 0x003f, 0x003f, 0x003f, 0xccdc, 0x003f,
+    0x003f, 0x003f, 0xccd5, 0x003f, 0xc4be, 0x003f, 0x003f, 0x003f,
+    0xc1ea, 0x003f, 0x003f, 0xe2bd, 0x003f, 0x003f, 0xbde2, 0x003f,
+    /* 0x7700 .. 0x77ff */
+    0x003f, 0xbeca, 0x003f, 0x003f, 0xe2c0, 0x003f, 0x003f, 0xe2bf,
+    0xe2be, 0xc8fd, 0x003f, 0xb4c7, 0xb8a9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe2c6, 0x003f, 0x003f, 0xe2c3, 0xbfbf,
+    0xccb2, 0x003f, 0x003f, 0x003f, 0xe2c2, 0xe2c4, 0xe2c5, 0x003f,
+    0x003f, 0xe2c1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2c7,
+    0xe2c8, 0x003f, 0xc4af, 0x003f, 0xb4e3, 0x003f, 0x003f, 0x003f,
+    0xc3e5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2c9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe2ca, 0xe2cd, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbfe7, 0x003f, 0xc6c4, 0x003f, 0xe2ce, 0xcbd3, 0x003f,
+    0xe2cb, 0x003f, 0x003f, 0xe2cc, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe2d1, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2d0, 0xe2cf,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe2d3, 0x003f, 0x003f, 0xe2d2, 0x003f,
+    0x003f, 0xe2d4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2d6, 0x003f,
+    0xe2d5, 0x003f, 0x003f, 0x003f, 0x003f, 0xcacd, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xbdd6, 0xcec6, 0x003f, 0x003f,
+    0xe2d7, 0x003f, 0x003f, 0xc6b7, 0x003f, 0x003f, 0xe2d8, 0x003f,
+    0x003f, 0xe2d9, 0x003f, 0xe2dd, 0xe2db, 0xe2dc, 0x003f, 0xe2da,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2de,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2df, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2e0,
+    0x003f, 0x003f, 0xe2e1, 0xccb7, 0xe2e2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xccf0, 0xe2e3, 0x003f, 0xc3ce, 0x003f, 0xc7ea,
+    0x003f, 0xb6eb, 0x003f, 0x003f, 0x003f, 0xc3bb, 0xe2e4, 0xb6ba,
+    0x003f, 0x003f, 0x003f, 0xc0d0, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe2e5, 0x003f, 0x003f, 0x003f,
+    /* 0x7800 .. 0x78ff */
+    0x003f, 0x003f, 0xbabd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe2e6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe2e7, 0x003f, 0xb8a6, 0xbad5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe2e9, 0x003f, 0x003f, 0x003f, 0x003f, 0xc5d6, 0xbad6, 0xb5ce,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xcba4, 0x003f, 0xc7cb, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xc5d7, 0x003f, 0x003f, 0x003f, 0x003f, 0xb9dc,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2eb, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xbecb, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xceb2, 0xb9c5, 0x003f, 0x003f, 0xb8a7,
+    0x003f, 0x003f, 0xc8a3, 0x003f, 0xe2ed, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe2ef, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb8eb, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2ee, 0xc4f6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe2f1, 0xb3b7, 0xe2ec, 0x003f,
+    0x003f, 0xc8ea, 0x003f, 0xb1b0, 0x003f, 0xbaec, 0x003f, 0xcfd2,
+    0x003f, 0x003f, 0xe2f0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe2f2, 0x003f, 0x003f, 0x003f, 0xcacb,
+    0x003f, 0xc0d9, 0xe2f4, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2f5,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2f3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb3ce, 0x003f, 0xe2fb, 0x003f, 0xe2fa, 0x003f,
+    0x003f, 0xbca7, 0x003f, 0x003f, 0x003f, 0xe2fc, 0xe2f7, 0x003f,
+    0x003f, 0x003f, 0xe2fd, 0xe2f8, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xc8d8, 0xe2f6, 0x003f, 0x003f, 0xe2f9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe3a2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3a1,
+    0xcbe1, 0x003f, 0x003f, 0x003f, 0xe2fe, 0x003f, 0x003f, 0xb0eb,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe3a4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3a3, 0x003f, 0x003f,
+    /* 0x7900 .. 0x79ff */
+    0x003f, 0xbecc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3a5,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc1c3, 0x003f,
+    0x003f, 0xe3a7, 0xe3a6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe3a8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2e8, 0x003f,
+    0x003f, 0x003f, 0xe2ea, 0xe3aa, 0xe3a9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xbca8, 0x003f, 0xcee9, 0x003f, 0xbcd2, 0x003f,
+    0xe3ab, 0xb7b7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb5c0,
+    0xb5a7, 0xbbe3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcdb4, 0x003f, 0x003f, 0xe3b1, 0x003f, 0xe3b0, 0xc1c4, 0xe3ad,
+    0x003f, 0x003f, 0xe3af, 0x003f, 0x003f, 0xbdcb, 0xbfc0, 0xe3ae,
+    0xe3ac, 0x003f, 0xc7aa, 0x003f, 0x003f, 0xbecd, 0x003f, 0x003f,
+    0xc9bc, 0x003f, 0x003f, 0x003f, 0x003f, 0xbad7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc5f8,
+    0x003f, 0x003f, 0xe3b2, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3b3,
+    0xe3c9, 0xb6d8, 0x003f, 0x003f, 0xcfbd, 0xc1b5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe3b4, 0x003f, 0x003f, 0xb2d2, 0xc4f7, 0xcaa1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3b5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb5fa, 0xe3b6,
+    0x003f, 0x003f, 0xe3b8, 0x003f, 0x003f, 0x003f, 0xe3b9, 0x003f,
+    0xc7a9, 0x003f, 0x003f, 0xe3ba, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe3bb, 0xe3bc, 0x003f, 0x003f, 0xb6d9, 0xb2d3, 0xc6c5,
+    0xbda8, 0xbbe4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe3bd, 0x003f, 0xbda9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb2ca, 0xc9c3, 0x003f, 0x003f, 0xe3be, 0x003f, 0x003f,
+    0xc8eb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc1c5,
+    0x003f, 0xe3c1, 0x003f, 0xe3c2, 0xc7e9, 0x003f, 0xbfc1, 0xe3bf,
+    0x003f, 0xc3e1, 0x003f, 0x003f, 0xe3c0, 0x003f, 0x003f, 0x003f,
+    0xbece, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb0dc, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x7a00 .. 0x7aff */
+    0xb5a9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe3c3, 0x003f, 0x003f, 0xc4f8, 0x003f, 0xe3c4, 0xc0c7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xccad, 0x003f, 0x003f, 0xc9a3,
+    0xe3c5, 0xe3c6, 0xc3d5, 0x003f, 0xcec7, 0x003f, 0x003f, 0xe3c8,
+    0xe3c7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xbcef, 0x003f,
+    0x003f, 0xe3ca, 0xb0f0, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3cd,
+    0x003f, 0x003f, 0x003f, 0xe3cb, 0xb2d4, 0xb7ce, 0xe3cc, 0xb9c6,
+    0xb9f2, 0x003f, 0xcae6, 0xe3ce, 0x003f, 0x003f, 0xcbd4, 0x003f,
+    0x003f, 0xe3d0, 0x003f, 0x003f, 0x003f, 0xc0d1, 0xb1cf, 0xb2ba,
+    0xb0ac, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3cf,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe3d1, 0xe3d2, 0xbef7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe3d3, 0x003f, 0xb3cf, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe3d5, 0x003f, 0x003f, 0x003f, 0xb7ea, 0x003f, 0xb5e6, 0x003f,
+    0x003f, 0xe3d6, 0xb6f5, 0x003f, 0x003f, 0xe3d7, 0x003f, 0xc0fc,
+    0x003f, 0xc6cd, 0x003f, 0xc0e0, 0xbaf5, 0x003f, 0x003f, 0x003f,
+    0xe3d8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xc3e2, 0xc1eb, 0x003f, 0xe3da, 0xe3dc, 0xe3d9,
+    0xe3db, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb7a2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe3dd, 0xb7a6, 0x003f, 0x003f, 0x003f, 0xb5e7, 0xcdd2,
+    0xe3df, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3e0, 0x003f,
+    0x003f, 0x003f, 0xb1ae, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3e3,
+    0x003f, 0x003f, 0x003f, 0xb3f6, 0xe3e2, 0xe3e1, 0x003f, 0xe3e5,
+    0xe3de, 0x003f, 0xe3e6, 0xcea9, 0x003f, 0xe3e7, 0x003f, 0xe3e8,
+    0x003f, 0x003f, 0xd4f4, 0xe3ea, 0x003f, 0xe3e9, 0x003f, 0x003f,
+    0x003f, 0xe3eb, 0xe3ec, 0x003f, 0xceb5, 0xe3ed, 0x003f, 0xf0ef,
+    0xbecf, 0xe3ee, 0xe3ef, 0xbdd7, 0x003f, 0xc6b8, 0xe3f0, 0x003f,
+    0x003f, 0x003f, 0xc3a8, 0x003f, 0x003f, 0xe3f1, 0x003f, 0xc3bc,
+    0xe3f2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb6a5, 0x003f,
+    0xd1bf, 0xc3dd, 0xbcb3, 0x003f, 0x003f, 0x003f, 0x003f, 0xb4c8,
+    /* 0x7b00 .. 0x7bff */
+    0x003f, 0x003f, 0xe3f3, 0x003f, 0xe4a2, 0x003f, 0xe3f6, 0x003f,
+    0xb5e8, 0x003f, 0xe3f5, 0xe4a4, 0x003f, 0x003f, 0x003f, 0xe3f4,
+    0x003f, 0xbed0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe3f8, 0xe3f9, 0x003f, 0xc5ab, 0x003f, 0x003f, 0xe3fa, 0x003f,
+    0xb3de, 0x003f, 0x003f, 0x003f, 0x003f, 0xbfda, 0xc9e4, 0x003f,
+    0xe3fc, 0x003f, 0x003f, 0x003f, 0xc2e8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe3f7, 0x003f, 0xe3fb, 0xe3fd, 0x003f,
+    0x003f, 0xbafb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4a6, 0xc9ae, 0x003f,
+    0xc8a6, 0xc5f9, 0x003f, 0xb6da, 0xe4a5, 0xe4a3, 0x003f, 0xc8b5,
+    0xe3fe, 0xc3de, 0xc5fb, 0x003f, 0xc5fa, 0x003f, 0xbaf6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4b8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4a8, 0x003f, 0xe4aa,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe4ad, 0x003f, 0xe4ae, 0x003f,
+    0xe4ab, 0xe4ac, 0x003f, 0x003f, 0xe4a9, 0xe4a7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe4a1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcacf, 0xb2d5,
+    0x003f, 0x003f, 0x003f, 0xe4b5, 0x003f, 0xe4b2, 0x003f, 0xe4b7,
+    0x003f, 0x003f, 0xe4b6, 0x003f, 0xc7f3, 0xcca7, 0x003f, 0xbbbb,
+    0xe4b0, 0xe4b9, 0xe4b4, 0x003f, 0xe4b3, 0xe4af, 0x003f, 0xe4b1,
+    0x003f, 0xb4c9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xc3bd, 0x003f, 0x003f, 0xc0fd, 0x003f, 0x003f,
+    0x003f, 0xc8a2, 0x003f, 0x003f, 0xe4be, 0x003f, 0x003f, 0x003f,
+    0xc8a4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xc0e1, 0xe4bb, 0x003f, 0x003f, 0xc8cf, 0x003f, 0xe4bf, 0xcad3,
+    0x003f, 0xc3db, 0x003f, 0xe4ba, 0xe4bc, 0x003f, 0x003f, 0xe4bd,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4c0, 0x003f, 0x003f,
+    0xbcc4, 0x003f, 0x003f, 0x003f, 0xc6c6, 0xe4c5, 0xe4c4, 0x003f,
+    0x003f, 0xe4c1, 0x003f, 0x003f, 0x003f, 0xcfb6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe4ca, 0x003f, 0x003f, 0xe4ce, 0xe4cb,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x7c00 .. 0x7cff */
+    0xe4c7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4c8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4cd, 0x003f, 0x003f,
+    0x003f, 0xe4c2, 0xd2d5, 0xe4c9, 0xe4c3, 0x003f, 0x003f, 0xe4cc,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4d2,
+    0x003f, 0xb4ca, 0x003f, 0xe4cf, 0x003f, 0x003f, 0x003f, 0xe4d0,
+    0x003f, 0x003f, 0xe4d1, 0xe4d4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4d3,
+    0xc8f6, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4d5, 0xcefc, 0xcaed,
+    0xe4da, 0x003f, 0x003f, 0xe4d7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe4d6, 0xc0d2, 0x003f, 0xe4d9,
+    0xe4db, 0x003f, 0x003f, 0x003f, 0xe4d8, 0x003f, 0xe4df, 0x003f,
+    0xe4dc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4dd,
+    0xe4c6, 0x003f, 0x003f, 0x003f, 0xe4de, 0xe4e0, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe4e1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xcac6, 0x003f, 0xe4e2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcce2, 0x003f,
+    0x003f, 0xb6ce, 0xb7a9, 0xe4e3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcab4, 0x003f, 0xbfe8, 0x003f, 0xccb0, 0x003f, 0x003f,
+    0xe4e4, 0x003f, 0xceb3, 0x003f, 0x003f, 0xc7f4, 0x003f, 0xc1c6,
+    0xc7b4, 0x003f, 0x003f, 0xbdcd, 0x003f, 0x003f, 0x003f, 0xb0c0,
+    0x003f, 0xe4e9, 0xe4e7, 0x003f, 0xe4e5, 0xb4a1, 0x003f, 0xbed1,
+    0xe4ea, 0x003f, 0x003f, 0xe4e8, 0x003f, 0xe4e6, 0xe4ee, 0x003f,
+    0x003f, 0xe4ed, 0xe4ec, 0xe4eb, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe4ef, 0x003f, 0x003f, 0x003f, 0xe4f0, 0xc0ba, 0x003f,
+    0xe4f1, 0x003f, 0xe4f3, 0x003f, 0x003f, 0xe4f2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb8d2, 0x003f, 0x003f, 0x003f, 0xc1b8, 0x003f,
+    0x003f, 0x003f, 0xe4f5, 0x003f, 0x003f, 0x003f, 0xc5fc, 0x003f,
+    0xe4f4, 0x003f, 0x003f, 0x003f, 0xe4f6, 0x003f, 0xcab5, 0xc1ec,
+    0xb9c7, 0x003f, 0xe4f7, 0x003f, 0x003f, 0x003f, 0x003f, 0xcec8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4f9,
+    0x003f, 0x003f, 0xe4fa, 0x003f, 0xe4fb, 0x003f, 0xe4fc, 0x003f,
+    0xbbe5, 0x003f, 0xe4fd, 0xb7cf, 0x003f, 0x003f, 0xb5ea, 0x003f,
+    /* 0x7d00 .. 0x7dff */
+    0xb5aa, 0x003f, 0xe5a1, 0x003f, 0xccf3, 0xb9c8, 0xe4fe, 0x003f,
+    0x003f, 0x003f, 0xe5a4, 0xcce6, 0x003f, 0xc7bc, 0x003f, 0x003f,
+    0xc9b3, 0x003f, 0x003f, 0x003f, 0xbde3, 0xe5a3, 0x003f, 0xbcd3,
+    0xb9c9, 0xbbe6, 0xb5e9, 0xcab6, 0xe5a2, 0x003f, 0x003f, 0x003f,
+    0xc1c7, 0xcbc2, 0xbaf7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xbbe7, 0xc4dd, 0x003f, 0xe5a7, 0xcedf,
+    0xbad9, 0x003f, 0xe5a8, 0xbfc2, 0x003f, 0xe5aa, 0x003f, 0x003f,
+    0x003f, 0xbed2, 0xbab0, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5a9,
+    0x003f, 0x003f, 0xbdaa, 0xb8be, 0xc1c8, 0xe5a5, 0xe5ab, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe5a6, 0xb7d0, 0x003f, 0xe5ae, 0xe5b2,
+    0xb7eb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5ad, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe5b6, 0x003f, 0x003f, 0xb9ca, 0x003f,
+    0x003f, 0xcded, 0xb0bc, 0xe5b3, 0x003f, 0x003f, 0xb5eb, 0x003f,
+    0xe5b0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5b1, 0x003f,
+    0x003f, 0xc5fd, 0xe5af, 0xe5ac, 0x003f, 0xb3a8, 0xc0e4, 0x003f,
+    0x003f, 0xb8a8, 0x003f, 0x003f, 0x003f, 0xe5b8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe5b5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5b7,
+    0x003f, 0x003f, 0x003f, 0xe5b4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb7d1, 0xc2b3, 0xe5b9, 0xc1ee, 0x003f, 0x003f, 0xe5c6,
+    0x003f, 0x003f, 0xe5c2, 0xe5bc, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe5c0, 0xbcfa, 0xb0dd, 0xe5bb, 0xe5c3,
+    0xe5c7, 0xb9cb, 0xccd6, 0x003f, 0xc4d6, 0xe5bd, 0x003f, 0x003f,
+    0xe5c5, 0x003f, 0xe5ba, 0xc3be, 0x003f, 0xe5bf, 0xb0bd, 0xccca,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5be,
+    0x003f, 0x003f, 0xb6db, 0xc8ec, 0x003f, 0x003f, 0x003f, 0xc1ed,
+    0x003f, 0xced0, 0xbdef, 0x003f, 0x003f, 0xe5ee, 0x003f, 0x003f,
+    0xe5c8, 0x003f, 0xc0fe, 0x003f, 0xe5c4, 0xe5c9, 0xe5cb, 0x003f,
+    0xc4f9, 0xe5ce, 0x003f, 0x003f, 0xe5ca, 0x003f, 0x003f, 0x003f,
+    0xcad4, 0xb4cb, 0x003f, 0x003f, 0xcccb, 0x003f, 0x003f, 0xb0de,
+    0x003f, 0x003f, 0xe5cd, 0x003f, 0xcefd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe5cc, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x7e00 .. 0x7eff */
+    0x003f, 0xb1ef, 0x003f, 0x003f, 0xc6ec, 0xe5cf, 0x003f, 0x003f,
+    0x003f, 0xe5d6, 0xe5d0, 0xe5d7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe5d3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xc7fb, 0x003f, 0x003f, 0xbcca, 0xe5d5,
+    0x003f, 0xe5d2, 0xe5d8, 0xe5d1, 0x003f, 0x003f, 0xbdc4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xcba5, 0x003f, 0x003f, 0xbdcc, 0x003f,
+    0x003f, 0xe5d4, 0xe5e0, 0x003f, 0x003f, 0xe5dc, 0x003f, 0xe5df,
+    0x003f, 0xe5dd, 0xe5e1, 0xe5db, 0x003f, 0xe5c1, 0xc0d3, 0x003f,
+    0x003f, 0xc8cb, 0x003f, 0xe5de, 0x003f, 0x003f, 0xe5d9, 0x003f,
+    0x003f, 0x003f, 0xc1a1, 0xb7d2, 0x003f, 0xbdab, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xbfa5, 0xc1b6, 0xe5e4, 0x003f,
+    0x003f, 0xe5e6, 0xe5e7, 0x003f, 0x003f, 0xe5e3, 0xe5e5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5da, 0xe5e2,
+    0x003f, 0xe5ea, 0xe5e9, 0x003f, 0x003f, 0xcbfa, 0x003f, 0x003f,
+    0xb7ab, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe5e8, 0x003f, 0xe5ec, 0xe5eb, 0xe5ef, 0x003f, 0xe5f1,
+    0x003f, 0x003f, 0xbbbc, 0xe5ed, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe5f2, 0xe5f3, 0x003f, 0x003f, 0xe5f4, 0x003f, 0xe5fa, 0xc5bb,
+    0xe5f6, 0x003f, 0xe5f5, 0xe5f7, 0xe5f8, 0x003f, 0xe5f9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe5fb, 0xe5fc, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x7f00 .. 0x7fff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb4cc, 0x003f,
+    0xe5fd, 0x003f, 0xe5fe, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6a1, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe6a2, 0xe6a3, 0xe6a4, 0x003f,
+    0xe6a5, 0xe6a6, 0x003f, 0x003f, 0xe6a8, 0xe6a7, 0x003f, 0x003f,
+    0xe6a9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6aa,
+    0xe6ab, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6ae,
+    0xe6ac, 0xe6ad, 0xbae1, 0xb7d3, 0x003f, 0x003f, 0xc3d6, 0x003f,
+    0xc8b3, 0x003f, 0xbdf0, 0x003f, 0x003f, 0xc7cd, 0x003f, 0xc8ed,
+    0xe6af, 0xd8ed, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe6b0, 0xe6b2, 0x003f, 0xcde5, 0xe6b1, 0xe6b4,
+    0xe6b3, 0x003f, 0xcdd3, 0x003f, 0xe6b5, 0x003f, 0xc8fe, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe6b6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe6b9, 0x003f, 0x003f, 0xe6b8, 0xe6b7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe6ba, 0xb7b2, 0x003f, 0x003f, 0x003f,
+    0xc1a2, 0xb5c1, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6be, 0xe6bb,
+    0x003f, 0x003f, 0xe6bc, 0x003f, 0x003f, 0x003f, 0xe6bf, 0x003f,
+    0xe6c0, 0xe6bd, 0x003f, 0x003f, 0x003f, 0xb1a9, 0x003f, 0x003f,
+    0x003f, 0xb2a7, 0x003f, 0x003f, 0x003f, 0xe6c2, 0xe6c3, 0x003f,
+    0x003f, 0x003f, 0xe6c4, 0x003f, 0xcde2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xbdac, 0x003f, 0xe6c6, 0xe6c5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xbfe9, 0xe6c7, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6c8, 0x003f,
+    0x003f, 0xe6c9, 0x003f, 0xb4e5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xb4cd, 0x003f, 0x003f, 0xe6ca, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe6cb, 0x003f, 0xcbdd, 0xcde3, 0x003f, 0x003f, 0x003f,
+    /* 0x8000 .. 0x80ff */
+    0xcdd4, 0xcfb7, 0x003f, 0xb9cd, 0xe6ce, 0xbcd4, 0xe6cd, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe6cf, 0xbca9, 0x003f, 0x003f, 0x003f,
+    0xc2d1, 0x003f, 0xe6d0, 0x003f, 0x003f, 0xb9cc, 0x003f, 0xccd7,
+    0xe6d1, 0xe6d2, 0x003f, 0x003f, 0xe6d3, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe6d4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe6d5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xbcaa, 0x003f, 0x003f, 0xcced, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe6d7, 0x003f, 0xc3bf, 0x003f, 0xe6d6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6d9, 0x003f,
+    0x003f, 0x003f, 0xe6d8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe6da, 0x003f, 0x003f, 0x003f, 0xc0bb, 0x003f,
+    0xe6db, 0x003f, 0xe6dc, 0x003f, 0x003f, 0x003f, 0xcab9, 0xe6dd,
+    0x003f, 0xc1ef, 0xe6de, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe6df, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcefe,
+    0xe6e2, 0x003f, 0xe6e1, 0xe6e0, 0xc4b0, 0x003f, 0xe6e3, 0xbfa6,
+    0x003f, 0xe6e4, 0x003f, 0x003f, 0x003f, 0xe6e5, 0xcfb8, 0xe6e6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe6e7, 0xe6e9, 0xe6e8, 0xc8a5,
+    0x003f, 0xc6f9, 0x003f, 0xcfbe, 0xc8a9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe6eb, 0x003f, 0x003f, 0xbed3, 0x003f,
+    0xc9aa, 0x003f, 0xe6ec, 0xe6ea, 0x003f, 0xb4ce, 0x003f, 0x003f,
+    0x003f, 0xb8d4, 0xbbe8, 0x003f, 0x003f, 0xc8ee, 0x003f, 0x003f,
+    0x003f, 0xb8aa, 0xcbc3, 0x003f, 0xe6ef, 0xe6ed, 0x003f, 0xb9ce,
+    0x003f, 0xb9cf, 0xb0e9, 0x003f, 0xbae8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xc7d9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb0df, 0xe6f4, 0x003f, 0xc3c0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xc7d8, 0x003f, 0xc2db, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6f6, 0x003f,
+    0x003f, 0xe6f2, 0xe6f5, 0xe6f0, 0x003f, 0xe6f3, 0xcba6, 0x003f,
+    0x003f, 0xb8d5, 0x003f, 0x003f, 0xb0fd, 0xe6f1, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6f8,
+    0x003f, 0xe6f9, 0x003f, 0x003f, 0xc6b9, 0x003f, 0x003f, 0x003f,
+    0xb6bb, 0x003f, 0x003f, 0x003f, 0xe7a6, 0xc7bd, 0x003f, 0x003f,
+    /* 0x8100 .. 0x81ff */
+    0x003f, 0x003f, 0xbbe9, 0x003f, 0x003f, 0xb6bc, 0xc0c8, 0xcfc6,
+    0xccae, 0xe6f7, 0xc0d4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb5d3, 0xe6fa, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe6fc, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe6fb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6fd,
+    0x003f, 0xc3a6, 0x003f, 0xc7be, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc4b1, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7a3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7a2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe6fe, 0x003f, 0x003f, 0xbfd5, 0x003f,
+    0xc9e5, 0xe7a5, 0x003f, 0xe7a4, 0xb9d0, 0xcfd3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7b5,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7a9, 0xe7aa, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xbcf0, 0x003f, 0x003f, 0xe7a8, 0x003f,
+    0xb9f8, 0xe7a7, 0x003f, 0x003f, 0xe7ab, 0x003f, 0x003f, 0x003f,
+    0xc4b2, 0xcaa2, 0xc1a3, 0x003f, 0x003f, 0x003f, 0x003f, 0xc2dc,
+    0xe7af, 0x003f, 0xe7b0, 0xe7ac, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe7ad, 0x003f, 0xe7ae, 0x003f, 0x003f, 0x003f, 0x003f, 0xb9d1,
+    0x003f, 0x003f, 0x003f, 0xe7b6, 0x003f, 0xe7b2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xc9e6, 0x003f, 0xcbec, 0xc9a8, 0x003f, 0x003f,
+    0xe7b1, 0x003f, 0x003f, 0xe7b4, 0xe7b3, 0x003f, 0x003f, 0x003f,
+    0xcbc4, 0xe7b7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe7b8, 0x003f, 0x003f, 0xc1b7, 0x003f, 0xe7b9, 0x003f, 0x003f,
+    0xe7bb, 0x003f, 0xe7bf, 0x003f, 0x003f, 0xe7bc, 0xe7ba, 0xc7bf,
+    0xe7bd, 0x003f, 0xe7be, 0x003f, 0x003f, 0x003f, 0xb2b2, 0x003f,
+    0xe7c5, 0xe7c0, 0x003f, 0x003f, 0x003f, 0xe7c1, 0x003f, 0x003f,
+    0x003f, 0xe7c2, 0x003f, 0xc2a1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe7c4, 0xe7c3, 0xe7c6, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7c7,
+    0xe7c8, 0x003f, 0x003f, 0xbfc3, 0x003f, 0xb2e9, 0x003f, 0xe7c9,
+    0xced7, 0x003f, 0xbcab, 0x003f, 0x003f, 0xbdad, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xbbea, 0xc3d7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe7ca, 0xe7cb, 0xb1b1, 0x003f, 0xe7cc, 0x003f,
+    /* 0x8200 .. 0x82ff */
+    0x003f, 0xe7cd, 0xe7ce, 0x003f, 0x003f, 0xe7cf, 0x003f, 0xe7d0,
+    0xb6bd, 0xdaaa, 0xe7d1, 0x003f, 0xc0e5, 0xe7d2, 0xbccb, 0x003f,
+    0xe7d3, 0x003f, 0xd0b0, 0x003f, 0x003f, 0x003f, 0xe7d4, 0xcade,
+    0xb4dc, 0x003f, 0x003f, 0xc1a4, 0xbdd8, 0x003f, 0xc9f1, 0xbdae,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe7d5, 0xb9d2, 0xe7d6, 0xc8cc, 0x003f, 0xe7e4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe7d8, 0x003f, 0xc2c9, 0xc7f5, 0xb8bf,
+    0xe7d7, 0xc1a5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe7d9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc4fa,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe7db, 0xe7da, 0xe7dd, 0x003f, 0x003f, 0xe7dc, 0x003f, 0xe7de,
+    0x003f, 0x003f, 0xe7e0, 0x003f, 0xe7df, 0x003f, 0xb4cf, 0x003f,
+    0xe7e1, 0x003f, 0xe7e2, 0xe7e3, 0x003f, 0x003f, 0xbab1, 0xcec9,
+    0x003f, 0xe7e5, 0xbfa7, 0x003f, 0x003f, 0x003f, 0xb1f0, 0xe7e6,
+    0xe7e7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7e8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb0f2, 0x003f, 0xe7e9, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe7ea, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc9e7, 0x003f, 0x003f, 0x003f, 0xbcc7, 0x003f, 0xe7ec,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb3a9, 0xb0b2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe7eb, 0xe7ee, 0xc7ce, 0x003f, 0xbfc4,
+    0x003f, 0xb2d6, 0x003f, 0xcba7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xb7dd, 0xb6dc, 0x003f, 0xe7ed, 0x003f, 0xb2ea, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb4a3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb1f1, 0xe7f2, 0xceea, 0xc2dd, 0x003f, 0x003f, 0xc9c4,
+    0x003f, 0xe7fe, 0x003f, 0xb2d7, 0xe7fc, 0x003f, 0xe7fa, 0xe7f1,
+    0x003f, 0xe7ef, 0x003f, 0xe7f0, 0x003f, 0xbce3, 0xb6ec, 0xc3f7,
+    0x003f, 0x003f, 0x003f, 0xc6d1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb1d1, 0x003f, 0xe7f4, 0xe7f3, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe7f9, 0xe7f5, 0xe7f8, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x8300 .. 0x83ff */
+    0x003f, 0x003f, 0xccd0, 0xe7f7, 0xb2d8, 0xb3fd, 0xe7fb, 0x003f,
+    0x003f, 0xe7fd, 0x003f, 0x003f, 0x003f, 0x003f, 0xb7d4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8a3, 0xe8ac,
+    0xe8ad, 0x003f, 0x003f, 0x003f, 0xb0ab, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe8b4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xb0f1, 0x003f, 0x003f, 0xe8ab, 0x003f, 0x003f, 0x003f, 0xe8aa,
+    0x003f, 0xe8a5, 0xe8a4, 0x003f, 0xe8a2, 0xe8a1, 0xc3e3, 0x003f,
+    0xc2fb, 0xe8a7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe8a6, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8a9, 0x003f, 0x003f,
+    0x003f, 0xc1f0, 0xb7d5, 0x003f, 0x003f, 0x003f, 0x003f, 0xb1c1,
+    0xe8a8, 0x003f, 0xb9d3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xc1f1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe8ba, 0x003f, 0xe8bb, 0x003f, 0xb2d9,
+    0x003f, 0x003f, 0x003f, 0xb2ae, 0xe8b8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8ae, 0x003f, 0xe8b6,
+    0x003f, 0xe8bd, 0xe8b7, 0x003f, 0x003f, 0x003f, 0xe8b5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe7f6, 0x003f, 0x003f, 0xe8b3, 0x003f,
+    0x003f, 0x003f, 0xe8af, 0x003f, 0x003f, 0x003f, 0xb4d0, 0xe8b1,
+    0xe8bc, 0x003f, 0xe8b2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe8be, 0x003f, 0xe8b0, 0xc7fc, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcde9, 0x003f, 0x003f, 0x003f, 0xe8b9, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8cf, 0x003f, 0x003f,
+    0x003f, 0xe8c7, 0x003f, 0x003f, 0x003f, 0xbffb, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb5c6, 0x003f, 0xb6dd, 0x003f, 0xe8c2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb2db, 0x003f, 0x003f, 0xbed4, 0x003f,
+    0xe8c5, 0x003f, 0x003f, 0x003f, 0xbada, 0x003f, 0x003f, 0xc5d1,
+    0xe8ca, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcaee, 0x003f, 0xe8c1, 0x003f, 0x003f, 0x003f, 0xb2da,
+    0xb8d6, 0xc9a9, 0xe8cb, 0x003f, 0xe8bf, 0x003f, 0x003f, 0xe8c8,
+    0x003f, 0x003f, 0x003f, 0xe8d2, 0x003f, 0xe8c3, 0x003f, 0x003f,
+    /* 0x8400 .. 0x84ff */
+    0x003f, 0x003f, 0x003f, 0xe8c4, 0xc6ba, 0x003f, 0x003f, 0xe8c9,
+    0x003f, 0x003f, 0x003f, 0xe8c6, 0xcba8, 0xe8cc, 0xb0e0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe8c0, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe8ce, 0x003f, 0xe8cd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc7eb, 0xe8d4, 0x003f, 0xe8df, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb3fe, 0x003f, 0x003f, 0x003f, 0xe8e2, 0x003f, 0x003f,
+    0xe8d0, 0x003f, 0x003f, 0x003f, 0xe8d5, 0xcdee, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8de, 0x003f,
+    0x003f, 0xcdd5, 0x003f, 0x003f, 0x003f, 0x003f, 0xceaa, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc3f8,
+    0x003f, 0x003f, 0x003f, 0xb3eb, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc9f2, 0xe8e4, 0xc6a1, 0x003f, 0x003f, 0xb0b1, 0x003f,
+    0x003f, 0xe8dd, 0x003f, 0xe8d9, 0xc1f2, 0xe8d3, 0xe8db, 0xe8e0,
+    0x003f, 0xc7ac, 0x003f, 0x003f, 0x003f, 0xb0aa, 0x003f, 0xe8d8,
+    0x003f, 0xe8e1, 0xc9f8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe8dc, 0x003f, 0xe8d7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xbed5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xbdaf, 0x003f, 0x003f, 0x003f, 0xbcac, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xccd8, 0x003f, 0x003f, 0xc9c7, 0x003f, 0x003f, 0xe8e7,
+    0x003f, 0xe8f0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8da, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb3f7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xbef8, 0xe8e5, 0x003f, 0xe8ea, 0xc1f3, 0x003f, 0x003f, 0xe8e6,
+    0x003f, 0xe8ed, 0x003f, 0x003f, 0xc3df, 0x003f, 0xe8ee, 0x003f,
+    0x003f, 0xcdd6, 0xe8e3, 0xb3b8, 0x003f, 0xe8e9, 0x003f, 0x003f,
+    0xe8ec, 0xccac, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8ef, 0x003f,
+    0x003f, 0xe8e8, 0xe8eb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xcba9, 0x003f, 0xcfa1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe8f3, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe8fa, 0x003f, 0x003f, 0xe8f2,
+    /* 0x8500 .. 0x85ff */
+    0xbcc3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8d1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcace, 0x003f, 0xcca2, 0xe8f9, 0xe8f8, 0x003f, 0xe8f4,
+    0xe8f5, 0x003f, 0xb1b6, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8f7,
+    0x003f, 0xe8f1, 0x003f, 0x003f, 0x003f, 0x003f, 0xc4d5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe8f6, 0xb0fe, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc2a2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcac3, 0x003f, 0x003f,
+    0xe8fb, 0xe9a1, 0x003f, 0xc8d9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe8fe, 0xbed6, 0xbcc9, 0xe9a3, 0x003f, 0x003f, 0xb6be, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9a4, 0x003f, 0xc9f9,
+    0xe8fd, 0x003f, 0xe8d6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe8fc, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcfcf, 0xc6a2, 0xc9f3, 0x003f, 0x003f, 0xe9ab, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9b1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9b2, 0x003f,
+    0xe9a5, 0x003f, 0x003f, 0x003f, 0xc7f6, 0x003f, 0x003f, 0xe9af,
+    0xe9a7, 0x003f, 0xe9a9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe9b3, 0xe9a8, 0x003f, 0x003f, 0xe9ac, 0x003f, 0x003f, 0xb1f2,
+    0x003f, 0xc6e5, 0x003f, 0xe9ad, 0xe9b0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe9a6, 0x003f, 0xc1a6, 0x003f,
+    0xe9aa, 0xbba7, 0xbfc5, 0xb7b0, 0xccf4, 0x003f, 0xccf9, 0xbdf2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe9b7, 0xe9b5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcfce, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe9b4, 0x003f, 0x003f, 0x003f, 0xcdf5, 0x003f, 0xe9b6,
+    0xe9b8, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9b9, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe9bc, 0xe9ba, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xc6a3, 0xe9bb, 0x003f, 0x003f,
+    0x003f, 0xc8cd, 0xe9ae, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xbdf3,
+    0x003f, 0xe9bd, 0xe9c2, 0xc1f4, 0x003f, 0x003f, 0xe9c1, 0x003f,
+    /* 0x8600 .. 0x86ff */
+    0x003f, 0x003f, 0xe9a2, 0x003f, 0x003f, 0x003f, 0xe9c3, 0xc1c9,
+    0x003f, 0x003f, 0xe9be, 0xe9c0, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe9bf, 0x003f, 0x003f, 0xddb1, 0xdda2,
+    0x003f, 0x003f, 0xe9c5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe9c4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcdf6, 0x003f, 0xe2bc,
+    0xe9c6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9c7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9c8, 0xb8d7, 0x003f,
+    0xb5d4, 0x003f, 0x003f, 0x003f, 0xe9ca, 0xd1dd, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb5f5, 0x003f, 0xceba, 0x003f, 0xb6f3, 0xe9cb,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9cc,
+    0x003f, 0x003f, 0x003f, 0xc3ee, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe9cd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc6fa, 0x003f, 0xb0ba, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb2e3, 0xe9d2, 0xe9d3, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe9ce, 0x003f, 0xbbbd, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe9cf, 0xc7c2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe9d0, 0xe9d1, 0xe9db, 0x003f, 0x003f, 0x003f, 0xe9d5,
+    0xe9d8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9d4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe9d6, 0x003f, 0xe9d7, 0xbcd8,
+    0x003f, 0xe9d9, 0x003f, 0xc3c1, 0x003f, 0xb7d6, 0xb3c2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe9dc, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb3bf, 0x003f, 0xe9e1, 0x003f, 0x003f, 0xe9dd, 0xe9e0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xc8ba, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe9de, 0x003f, 0x003f, 0xe9df, 0xc9c8, 0xc8da, 0xe9e2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xc2fd, 0xe9ec, 0x003f, 0xe9e8, 0x003f, 0x003f, 0xb2eb, 0x003f,
+    /* 0x8700 .. 0x87ff */
+    0xe9e6, 0x003f, 0xcbaa, 0xe9e7, 0x003f, 0x003f, 0xe9e4, 0x003f,
+    0xe9e5, 0xe9ea, 0xe9ed, 0x003f, 0x003f, 0xe9eb, 0x003f, 0x003f,
+    0x003f, 0xe9e9, 0xe9e3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xc3d8, 0x003f, 0xe9f4, 0x003f, 0xccaa, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9f2, 0x003f, 0x003f,
+    0x003f, 0xe9f3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe9ee, 0x003f, 0x003f, 0xe9f0,
+    0x003f, 0x003f, 0x003f, 0xe9f1, 0x003f, 0x003f, 0x003f, 0xe9ef,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc0e6, 0x003f, 0xcfb9, 0xe9f8, 0x003f, 0xe9f9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xeaa1, 0x003f, 0xbfaa, 0x003f, 0xe9fb,
+    0x003f, 0xe9fe, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9f6,
+    0xe9f5, 0x003f, 0x003f, 0xeaa2, 0x003f, 0x003f, 0xb2dc, 0x003f,
+    0xe9fc, 0x003f, 0xeaa3, 0x003f, 0x003f, 0x003f, 0xe9fd, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe9fa, 0x003f, 0xc4b3, 0x003f,
+    0xe9f7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc7e8,
+    0x003f, 0x003f, 0xeaa7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcdbb, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeaa6,
+    0x003f, 0x003f, 0xeaa5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xeaae, 0x003f, 0x003f, 0x003f, 0xeaa8,
+    0x003f, 0x003f, 0x003f, 0xeab0, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xcde6, 0xeab3, 0x003f, 0xeaaa, 0x003f, 0x003f,
+    0xeaab, 0x003f, 0x003f, 0x003f, 0xeaaf, 0x003f, 0xeab2, 0xeab1,
+    0x003f, 0x003f, 0x003f, 0xeaa9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xeaac, 0x003f, 0xeabd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xeab6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeab4,
+    0x003f, 0x003f, 0xeab5, 0x003f, 0x003f, 0x003f, 0xeaba, 0xeabb,
+    0x003f, 0xb3aa, 0x003f, 0xb5c2, 0x003f, 0x003f, 0xeab9, 0x003f,
+    /* 0x8800 .. 0x88ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeaa4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeab8, 0xeabc, 0xeab7,
+    0x003f, 0xeabe, 0x003f, 0x003f, 0x003f, 0xeac0, 0xeabf, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeac2, 0xeac1, 0xe9da, 0x003f, 0x003f, 0x003f, 0xeac6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeac3, 0x003f, 0x003f, 0x003f, 0x003f, 0xeac4, 0x003f,
+    0x003f, 0xeac5, 0x003f, 0xeac7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xb7ec, 0x003f, 0xeac9, 0x003f, 0xeac8, 0x003f, 0xbdb0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xb9d4, 0xdea7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeaca, 0xbdd1, 0x003f, 0x003f, 0x003f, 0xb3b9,
+    0x003f, 0xeacb, 0x003f, 0xb1d2, 0x003f, 0xbed7, 0xeacc, 0x003f,
+    0x003f, 0xb9d5, 0xeacd, 0xb0e1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xc9bd, 0x003f, 0x003f, 0xeace, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xbfea, 0x003f, 0xead5, 0x003f, 0x003f, 0xead2, 0x003f, 0xc3ef,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xead3, 0xead0, 0xb6de,
+    0x003f, 0xeacf, 0xead6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xb7b6, 0x003f, 0x003f, 0xc2de, 0x003f, 0xeadc, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xead8, 0x003f, 0x003f, 0x003f, 0xc2b5, 0xead7,
+    0x003f, 0xeada, 0x003f, 0x003f, 0x003f, 0x003f, 0xead1, 0x003f,
+    0x003f, 0x003f, 0xeadb, 0x003f, 0xeadd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xc8ef, 0x003f, 0x003f, 0xead9, 0x003f,
+    0xeade, 0xeae0, 0x003f, 0x003f, 0xb8d3, 0xead4, 0x003f, 0xb0c1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeadf,
+    0x003f, 0xbadb, 0xcef6, 0xeae1, 0xeae2, 0xc1f5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcea2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xeae3, 0xcdb5, 0x003f, 0x003f,
+    0xeae4, 0xeae5, 0x003f, 0x003f, 0xcae4, 0xeae6, 0x003f, 0xbac0,
+    0x003f, 0xcea3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xeaeb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeaec, 0xbed8, 0xeaea, 0x003f, 0x003f, 0x003f,
+    0xcde7, 0xeae7, 0x003f, 0x003f, 0xeae9, 0xc0bd, 0xbffe, 0x003f,
+    /* 0x8900 .. 0x89ff */
+    0x003f, 0x003f, 0xeae8, 0x003f, 0xeaed, 0x003f, 0x003f, 0xcaa3,
+    0x003f, 0x003f, 0xeaef, 0x003f, 0xeaee, 0x003f, 0x003f, 0x003f,
+    0xb3ec, 0x003f, 0xcbab, 0xeaf0, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeafc, 0xeaf2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeaf3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeaf4, 0xeaf5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeaf9, 0x003f,
+    0xeafa, 0x003f, 0x003f, 0xeaf8, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeaf6, 0x003f, 0xeaf1, 0xeaf7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xeafb, 0xf0b7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb2a8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeafe, 0xb6df,
+    0xeafd, 0x003f, 0x003f, 0x003f, 0xeba2, 0x003f, 0xeba1, 0x003f,
+    0x003f, 0x003f, 0xeba4, 0x003f, 0x003f, 0xeba3, 0x003f, 0xeba5,
+    0x003f, 0x003f, 0xbdb1, 0x003f, 0xeba6, 0x003f, 0x003f, 0xeba7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeba8, 0xc0be,
+    0x003f, 0xcdd7, 0x003f, 0xeba9, 0x003f, 0x003f, 0xcaa4, 0xc7c6,
+    0xebaa, 0x003f, 0xebab, 0xb8ab, 0x003f, 0x003f, 0x003f, 0xb5ac,
+    0x003f, 0x003f, 0x003f, 0xebac, 0x003f, 0x003f, 0xbbeb, 0xc7c1,
+    0xebad, 0x003f, 0xb3d0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xebae, 0x003f, 0x003f, 0x003f, 0x003f, 0xebb0, 0xcdf7,
+    0x003f, 0xebaf, 0xbfc6, 0x003f, 0xebb1, 0x003f, 0x003f, 0xebb2,
+    0x003f, 0x003f, 0xebb3, 0xb4d1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xebb4, 0x003f, 0x003f, 0xebb5, 0x003f, 0xebb6,
+    0xebb7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb3d1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xebb8, 0x003f, 0xebb9, 0xebba, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb2f2, 0x003f, 0x003f, 0xbfa8, 0xebbb,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xebbc, 0x003f, 0x003f, 0x003f,
+    0xebbd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x8a00 .. 0x8aff */
+    0xb8c0, 0x003f, 0xc4fb, 0xebbe, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xb7d7, 0x003f, 0xbfd6, 0x003f, 0xebc1, 0x003f, 0xc6a4, 0x003f,
+    0xebc0, 0x003f, 0x003f, 0xb7b1, 0x003f, 0x003f, 0xebbf, 0xc2f7,
+    0xb5ad, 0x003f, 0x003f, 0xebc2, 0x003f, 0xebc3, 0x003f, 0xbed9,
+    0x003f, 0x003f, 0x003f, 0xb7ed, 0x003f, 0xebc4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xcbac, 0x003f, 0x003f, 0xc0df, 0x003f, 0x003f,
+    0x003f, 0xb5f6, 0x003f, 0xccf5, 0xc1ca, 0x003f, 0xebc5, 0x003f,
+    0x003f, 0x003f, 0xbfc7, 0xc3f0, 0xbeda, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xebc6, 0x003f, 0x003f, 0x003f, 0x003f, 0xebc9, 0x003f,
+    0xebca, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xbabe, 0xc2c2, 0xebc8, 0x003f, 0xbedb, 0xc9be, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xebc7, 0x003f, 0x003f, 0xbbec, 0x003f,
+    0xb1d3, 0x003f, 0xebce, 0xb7d8, 0x003f, 0x003f, 0xbbee, 0x003f,
+    0x003f, 0xbbed, 0x003f, 0xcfcd, 0xebcd, 0xebcc, 0xc1a7, 0x003f,
+    0xb5cd, 0xcfc3, 0xb3ba, 0xbedc, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xebcb, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xebd0, 0x003f, 0xebd1, 0xebcf, 0x003f, 0xb8d8,
+    0x003f, 0xcdc0, 0x003f, 0x003f, 0xbbef, 0xc7a7, 0x003f, 0x003f,
+    0x003f, 0xebd4, 0x003f, 0xc0c0, 0x003f, 0xc3c2, 0x003f, 0x003f,
+    0xcdb6, 0x003f, 0xebd7, 0x003f, 0x003f, 0x003f, 0xb8ec, 0x003f,
+    0xc0bf, 0xebd3, 0x003f, 0xebd8, 0xb8ed, 0xebd5, 0xebd6, 0x003f,
+    0xebd2, 0x003f, 0x003f, 0x003f, 0xc0e2, 0xc6c9, 0x003f, 0x003f,
+    0xc3af, 0x003f, 0xb2dd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc8f0, 0x003f, 0x003f, 0xb5c3, 0x003f, 0x003f, 0xc4b4,
+    0x003f, 0x003f, 0xebdb, 0x003f, 0xebd9, 0x003f, 0x003f, 0xc3cc,
+    0x003f, 0x003f, 0x003f, 0xc0c1, 0xb4d2, 0xebda, 0x003f, 0xbfdb,
+    0x003f, 0x003f, 0xceca, 0x003f, 0x003f, 0x003f, 0xcfc0, 0x003f,
+    0x003f, 0x003f, 0xebdc, 0xebe7, 0xc4b5, 0x003f, 0xebe6, 0x003f,
+    0xebe3, 0xebeb, 0xebe4, 0x003f, 0xebe0, 0x003f, 0xc4fc, 0xebdf,
+    0x003f, 0x003f, 0x003f, 0xebdd, 0x003f, 0xcda1, 0xbbf0, 0x003f,
+    0x003f, 0xebe1, 0x003f, 0xebde, 0x003f, 0x003f, 0x003f, 0xebe5,
+    0xbdf4, 0x003f, 0xb8c1, 0x003f, 0x003f, 0x003f, 0xc2fa, 0x003f,
+    /* 0x8b00 .. 0x8bff */
+    0xcbc5, 0xb1da, 0xb0e2, 0x003f, 0xc6a5, 0x003f, 0x003f, 0xebe9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xebe8, 0x003f, 0xc6e6, 0x003f,
+    0xebed, 0x003f, 0x003f, 0x003f, 0xebe2, 0x003f, 0xebec, 0xebee,
+    0x003f, 0xb8ac, 0xebea, 0xb9d6, 0x003f, 0xbcd5, 0x003f, 0x003f,
+    0xebef, 0xcdd8, 0x003f, 0x003f, 0x003f, 0x003f, 0xebf2, 0x003f,
+    0xebf5, 0x003f, 0x003f, 0xebf3, 0xc9b5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xebf0, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb6e0, 0x003f, 0x003f, 0x003f, 0x003f, 0xebf4, 0x003f,
+    0x003f, 0xebf6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xebfa, 0x003f, 0x003f, 0xebf7, 0x003f, 0xebf9, 0xebf8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xebfb, 0x003f,
+    0xbcb1, 0x003f, 0xebfd, 0xebfc, 0xc9e8, 0x003f, 0x003f, 0xeca1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb7d9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xebfe, 0xeca2, 0x003f, 0x003f, 0xeca3,
+    0xb5c4, 0xe6c1, 0xbef9, 0x003f, 0xeca4, 0x003f, 0x003f, 0xb8ee,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeca5, 0x003f, 0x003f,
+    0xeca6, 0x003f, 0x003f, 0xbbbe, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdace, 0x003f, 0xeca7, 0x003f, 0xeca8, 0x003f,
+    0xbdb2, 0x003f, 0xeca9, 0xecaa, 0x003f, 0x003f, 0xecab, 0x003f,
+    0x003f, 0xecac, 0xecad, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x8c00 .. 0x8cff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc3ab,
+    0x003f, 0x003f, 0xecae, 0x003f, 0x003f, 0x003f, 0x003f, 0xecb0,
+    0x003f, 0xecaf, 0x003f, 0x003f, 0x003f, 0x003f, 0xc6a6, 0x003f,
+    0xecb1, 0x003f, 0xcbad, 0x003f, 0xecb2, 0x003f, 0xecb3, 0x003f,
+    0xecb4, 0x003f, 0x003f, 0x003f, 0x003f, 0xecb5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xc6da, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbedd, 0xecb6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb9eb, 0xd0ae, 0xecb7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xecb8, 0xc9bf, 0xecb9, 0x003f, 0xecc1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xecba, 0x003f, 0x003f, 0xecbc, 0x003f, 0x003f,
+    0x003f, 0xecbb, 0xecbd, 0x003f, 0xcbc6, 0xecbe, 0xecbf, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xecc0, 0x003f, 0x003f, 0x003f,
+    0xecc2, 0x003f, 0x003f, 0x003f, 0x003f, 0xb3ad, 0xc4e7, 0x003f,
+    0xc9e9, 0xbae2, 0xb9d7, 0x003f, 0x003f, 0x003f, 0x003f, 0xc9cf,
+    0xb2df, 0xc8ce, 0xecc5, 0xb4d3, 0xc0d5, 0xecc4, 0xecc9, 0xc3f9,
+    0xcce3, 0x003f, 0xecc7, 0xecc8, 0xb5ae, 0x003f, 0xecca, 0xc7e3,
+    0xc2df, 0x003f, 0x003f, 0xc8f1, 0xc5bd, 0xecc6, 0x003f, 0xcbc7,
+    0xb2ec, 0xeccc, 0xcfa8, 0xc4c2, 0xcfc5, 0x003f, 0x003f, 0xbbf1,
+    0xeccb, 0x003f, 0xc2b1, 0x003f, 0x003f, 0xecdc, 0xc1a8, 0x003f,
+    0x003f, 0xc6f8, 0x003f, 0xc9d0, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeccf, 0xbbbf, 0xbbf2, 0x003f, 0xbede, 0x003f,
+    0xc7e5, 0x003f, 0xb8ad, 0xecce, 0xeccd, 0x003f, 0xc9ea, 0x003f,
+    0x003f, 0x003f, 0xbcc1, 0x003f, 0x003f, 0xc5d2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xecd1, 0xecd2, 0xb9d8, 0xecd0, 0x003f, 0x003f,
+    /* 0x8d00 .. 0x8dff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0xecd3, 0xecd4, 0x003f, 0xecd6,
+    0xc2a3, 0x003f, 0xecd5, 0xb4e6, 0x003f, 0xecd8, 0x003f, 0xecd7,
+    0xecd9, 0x003f, 0x003f, 0xecdb, 0xecdd, 0x003f, 0xecde, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xc0d6, 0x003f, 0xbccf, 0xecdf,
+    0x003f, 0x003f, 0x003f, 0xb3d2, 0x003f, 0xece0, 0x003f, 0x003f,
+    0xc1f6, 0xece1, 0x003f, 0xece2, 0xc9eb, 0x003f, 0x003f, 0xb5af,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xece3, 0x003f, 0x003f, 0x003f, 0xc4b6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb1db, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xece4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xbcf1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xbff6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xc2ad, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xece7, 0x003f, 0x003f, 0x003f, 0xece6, 0x003f,
+    0x003f, 0x003f, 0xece5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xeced, 0xeceb, 0x003f, 0x003f, 0xece8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xecea, 0x003f,
+    0x003f, 0x003f, 0xece9, 0xecec, 0x003f, 0xb5f7, 0x003f, 0xecf0,
+    0x003f, 0xc0d7, 0x003f, 0xecf1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xb8d9, 0x003f, 0xecee, 0xecef, 0x003f, 0x003f, 0x003f, 0xcfa9,
+    0x003f, 0x003f, 0x003f, 0xc4b7, 0x003f, 0xc1a9, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xecf2, 0x003f, 0x003f, 0xecf5,
+    /* 0x8e00 .. 0x8eff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xecf3, 0xecf4, 0xcdd9, 0x003f, 0x003f, 0x003f, 0x003f, 0xc6a7,
+    0xecf8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xecf6, 0xecf7, 0xecf9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeda9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xecfc, 0x003f, 0x003f, 0x003f, 0xecfd, 0xecfb, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xecfa, 0x003f, 0xc4fd, 0x003f, 0x003f, 0xeda1,
+    0xeda5, 0xeda2, 0xecfe, 0x003f, 0xeda3, 0x003f, 0x003f, 0x003f,
+    0xeda4, 0x003f, 0x003f, 0x003f, 0x003f, 0xedab, 0x003f, 0x003f,
+    0x003f, 0xeda6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc0d8,
+    0xeda8, 0x003f, 0x003f, 0xedaa, 0xeda7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xedad, 0x003f, 0xbdb3, 0x003f, 0xedac, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xedae, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xedaf, 0x003f, 0x003f, 0xedb2, 0xedb1, 0x003f, 0xedb0,
+    0x003f, 0x003f, 0xedb4, 0xedb3, 0x003f, 0xccf6, 0x003f, 0x003f,
+    0x003f, 0xedb6, 0x003f, 0xedb5, 0xedb7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xedb8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xedba, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xedb9, 0xbfc8, 0xedbb, 0x003f, 0x003f, 0xb6ed,
+    0xedbc, 0xedbe, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xedbf, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xedc0, 0xedbd, 0x003f,
+    0xedc1, 0x003f, 0xbcd6, 0xedc2, 0xb5b0, 0xb7b3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb8ae, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xedc3, 0x003f, 0x003f, 0x003f, 0xc6f0,
+    0x003f, 0x003f, 0xc5be, 0xedc4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xedc7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xbcb4, 0x003f, 0x003f, 0xedc6, 0xedc5, 0xb7da, 0xedc8, 0x003f,
+    /* 0x8f00 .. 0x8fff */
+    0x003f, 0x003f, 0x003f, 0xb3d3, 0x003f, 0xedca, 0x003f, 0x003f,
+    0x003f, 0xbadc, 0xedc9, 0x003f, 0xedd2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xedcc, 0xedce, 0xcae5, 0xedcb, 0x003f, 0x003f,
+    0x003f, 0xedcd, 0x003f, 0xedd1, 0xedcf, 0xb5b1, 0x003f, 0xedd0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xedd3, 0x003f,
+    0x003f, 0xc7da, 0xced8, 0x003f, 0x003f, 0x003f, 0x003f, 0xbdb4,
+    0x003f, 0x003f, 0x003f, 0xedd4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcda2, 0xedd6, 0x003f, 0xedd5, 0x003f, 0x003f, 0xedd9, 0xcdc1,
+    0x003f, 0x003f, 0xedd8, 0x003f, 0xb3ed, 0xedd7, 0xeddc, 0x003f,
+    0x003f, 0xeddb, 0x003f, 0x003f, 0xedda, 0xc5b2, 0xeddd, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xedde,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xeddf, 0x003f, 0x003f, 0xb9ec,
+    0x003f, 0xb7a5, 0xede0, 0xede1, 0xede2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xbfc9, 0xede3, 0x003f, 0xbcad, 0xede4,
+    0x003f, 0x003f, 0x003f, 0xede5, 0x003f, 0x003f, 0x003f, 0xd2a1,
+    0xd1fe, 0x003f, 0x003f, 0x003f, 0x003f, 0xede6, 0xe5f0, 0xede7,
+    0xc3a4, 0xbfab, 0xc7c0, 0x003f, 0x003f, 0x003f, 0x003f, 0xede8,
+    0x003f, 0x003f, 0xcad5, 0xc4d4, 0xb9fe, 0x003f, 0x003f, 0xc3a9,
+    0x003f, 0x003f, 0xb1aa, 0x003f, 0xcbf8, 0xbfd7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb7de, 0x003f,
+    0x003f, 0xb6e1, 0x003f, 0x003f, 0xcad6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xede9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xedeb, 0x003f, 0x003f, 0xedea, 0xb2e0, 0x003f,
+    0x003f, 0xc6f6, 0xedec, 0xc7f7, 0x003f, 0xc5b3, 0x003f, 0xeded,
+    0xbdd2, 0x003f, 0x003f, 0x003f, 0xedef, 0x003f, 0x003f, 0xccc2,
+    0xedfe, 0xedf1, 0xedf2, 0x003f, 0x003f, 0xc4c9, 0x003f, 0x003f,
+    /* 0x9000 .. 0x90ff */
+    0xc2e0, 0xc1f7, 0x003f, 0xc6a8, 0x003f, 0xedf0, 0xb5d5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xedf9, 0x003f, 0xedf6, 0xeea5, 0xc6a9,
+    0xc3e0, 0xedf3, 0x003f, 0xc4fe, 0xc5d3, 0xedf4, 0xedf8, 0xbfe0,
+    0x003f, 0xc7e7, 0xc4cc, 0x003f, 0x003f, 0xc0c2, 0xedf7, 0xc2ae,
+    0xc2a4, 0xedf5, 0xb0a9, 0xcfa2, 0x003f, 0x003f, 0x003f, 0xedfa,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc2e1, 0x003f,
+    0x003f, 0xbdb5, 0xbfca, 0x003f, 0x003f, 0xedfc, 0xedfb, 0x003f,
+    0xb0ef, 0xedfd, 0x003f, 0x003f, 0xc9af, 0x003f, 0xeea7, 0x003f,
+    0x003f, 0xc6db, 0xbfeb, 0x003f, 0x003f, 0xc3d9, 0x003f, 0xb6f8,
+    0x003f, 0xeea6, 0xcdb7, 0xb1bf, 0x003f, 0xcad7, 0xb2e1, 0xeea1,
+    0xeea2, 0xeea3, 0xeea4, 0xc6bb, 0xc3a3, 0xb0e3, 0xeea8, 0x003f,
+    0xeea9, 0xf4a3, 0x003f, 0x003f, 0xc2bd, 0x003f, 0xeeaa, 0x003f,
+    0xb1f3, 0xc1cc, 0x003f, 0xb8af, 0x003f, 0xcdda, 0x003f, 0x003f,
+    0xeeab, 0xc5ac, 0x003f, 0x003f, 0x003f, 0xc1f8, 0xbcd7, 0xeeac,
+    0x003f, 0x003f, 0xeeaf, 0x003f, 0x003f, 0xbde5, 0xeead, 0xc1ab,
+    0xc1aa, 0x003f, 0xb0e4, 0x003f, 0xcecb, 0xeeb1, 0x003f, 0xc8f2,
+    0xeeb3, 0xeeb2, 0xeeb0, 0xe3e4, 0xb4d4, 0x003f, 0x003f, 0xedee,
+    0x003f, 0xeeb5, 0xeeb4, 0x003f, 0x003f, 0x003f, 0x003f, 0xeeb6,
+    0x003f, 0xcdb8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xc6e1, 0x003f, 0x003f, 0xcbae, 0x003f,
+    0xeeb7, 0x003f, 0xbcd9, 0x003f, 0x003f, 0x003f, 0x003f, 0xeeb8,
+    0x003f, 0xeeb9, 0x003f, 0x003f, 0x003f, 0xeeba, 0x003f, 0x003f,
+    0xc5a1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb0ea, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb9d9, 0x003f, 0x003f, 0x003f, 0xcfba, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xeebe, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb7b4, 0xeebb, 0x003f, 0xeebc, 0x003f, 0x003f, 0x003f,
+    0xc9f4, 0x003f, 0x003f, 0x003f, 0x003f, 0xb3d4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcdb9, 0x003f, 0xb6bf,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc5d4, 0x003f, 0x003f,
+    /* 0x9100 .. 0x91ff */
+    0x003f, 0x003f, 0xeebf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeec0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeec1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc5a2, 0x003f, 0x003f,
+    0xeec3, 0x003f, 0xeec2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc6d3, 0xeec4, 0xbdb6, 0xbce0, 0xc7db, 0xc3f1, 0x003f,
+    0x003f, 0x003f, 0xbcf2, 0x003f, 0xbfec, 0x003f, 0xeec5, 0x003f,
+    0xeec6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xbfdd, 0xeec7, 0x003f, 0xeec8, 0x003f, 0x003f,
+    0x003f, 0xeec9, 0xcdef, 0x003f, 0xbdb7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeecb, 0xeeca, 0x003f, 0xb9da, 0x003f, 0xb9f3,
+    0xbbc0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeece, 0x003f, 0x003f, 0x003f, 0x003f, 0xbde6,
+    0x003f, 0xeecd, 0x003f, 0xeecc, 0x003f, 0xc2e9, 0x003f, 0x003f,
+    0xb8ef, 0x003f, 0xc0c3, 0x003f, 0x003f, 0x003f, 0x003f, 0xc8b0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xbdb9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeecf, 0x003f, 0xbedf, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeed2, 0xeed0, 0x003f, 0x003f, 0x003f, 0xeed1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xeed4, 0xeed3, 0x003f, 0x003f,
+    0xbefa, 0x003f, 0xeed5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xeed6, 0xeed7, 0x003f, 0x003f, 0x003f, 0x003f, 0xc8d0, 0xbad3,
+    0xbce1, 0xeed8, 0x003f, 0xeed9, 0xcea4, 0xbdc5, 0xccee, 0xcecc,
+    0xeeda, 0xb6e2, 0x003f, 0x003f, 0x003f, 0x003f, 0xeedb, 0x003f,
+    0xc5a3, 0x003f, 0x003f, 0xeede, 0xb3f8, 0xbfcb, 0x003f, 0xeedc,
+    0x003f, 0xeedd, 0x003f, 0xc4e0, 0x003f, 0x003f, 0xcbd5, 0xb6fc,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeee0, 0xeee1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xeedf, 0x003f, 0x003f, 0xeee3,
+    /* 0x9200 .. 0x92ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc6df, 0xb3c3, 0x003f,
+    0x003f, 0xeee7, 0x003f, 0x003f, 0xeee4, 0xeee6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeee2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xefcf, 0x003f, 0x003f, 0xeee5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xceeb, 0x003f, 0x003f, 0xb8da,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeeef,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xc5b4, 0xeeea, 0x003f, 0x003f,
+    0xeeed, 0xeeeb, 0x003f, 0xeef0, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xeef1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeee9,
+    0x003f, 0x003f, 0xeef6, 0xb1f4, 0x003f, 0x003f, 0xeee8, 0x003f,
+    0x003f, 0x003f, 0xc8ad, 0x003f, 0xeeec, 0x003f, 0xbee0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb9db, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcbc8, 0x003f,
+    0xb6e4, 0x003f, 0x003f, 0xbdc6, 0x003f, 0xc6bc, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc1ad, 0x003f, 0xeef4, 0x003f, 0xeeee, 0xeef3, 0x003f,
+    0xccc3, 0x003f, 0xc4b8, 0xeef5, 0xeef2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc1ac, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeef9,
+    0x003f, 0xeef8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeef7,
+    0x003f, 0x003f, 0xcbaf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xbdfb, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeefa, 0xcadf, 0x003f, 0x003f, 0xb1d4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xc9c6, 0xc3f2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xb5f8, 0x003f, 0xeefc, 0x003f, 0xb9dd, 0x003f, 0x003f, 0x003f,
+    /* 0x9300 .. 0x93ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xbbac, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeefb,
+    0xbfed, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xbfee, 0xefa1, 0xefa3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xbefb, 0x003f, 0xefa2, 0xefa4, 0x003f, 0x003f, 0xb6d3, 0x003f,
+    0xc9c5, 0x003f, 0x003f, 0xbce2, 0xcfa3, 0x003f, 0xeefe, 0xbaf8,
+    0x003f, 0x003f, 0xcfbf, 0x003f, 0x003f, 0xefa6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xefa5, 0xefa7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xeefd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xc6e9, 0x003f, 0xc5d5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xc4d7, 0x003f, 0xefac, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xc3c3, 0xefa8, 0x003f, 0x003f, 0x003f,
+    0xefa9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xb7ad, 0x003f, 0xefab, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb8b0, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xefaa, 0x003f, 0xbee1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xb3f9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xefb0, 0x003f, 0xbabf, 0xc1f9,
+    0x003f, 0x003f, 0xc4ca, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb3bb,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xefae, 0xefaf, 0xc4c3, 0x003f,
+    0xefad, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xefb1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xefb7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xefba, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xefb9, 0xc5ad, 0x003f, 0x003f, 0x003f, 0x003f, 0xefb2, 0xefb3,
+    0xefb6, 0x003f, 0x003f, 0x003f, 0x003f, 0xefb8, 0x003f, 0x003f,
+    0x003f, 0xb6c0, 0x003f, 0x003f, 0xefbb, 0xefb5, 0x003f, 0x003f,
+    0xefb4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9400 .. 0x94ff */
+    0x003f, 0x003f, 0x003f, 0xefbf, 0x003f, 0x003f, 0x003f, 0xefc0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xefc1, 0x003f, 0x003f, 0xefbe, 0xefbd, 0x003f, 0x003f, 0x003f,
+    0xbee2, 0xc6aa, 0xefbc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xefc5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xefc3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xefc4, 0xefc2, 0x003f,
+    0xc2f8, 0x003f, 0xefc6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xefc7, 0x003f, 0x003f, 0xefc9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb4d5, 0xefc8, 0xccfa, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xefd4, 0xefca, 0x003f, 0x003f, 0xefcd, 0x003f,
+    0xefcb, 0x003f, 0xefcc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xefce, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xefd0, 0x003f, 0x003f, 0x003f, 0x003f, 0xefd1, 0x003f, 0xefd2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xefd5, 0xefd3, 0xefd6, 0xefd8,
+    0x003f, 0xefd7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9500 .. 0x95ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc4b9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcce7, 0x003f, 0xefd9, 0xc1ae, 0x003f, 0x003f, 0x003f, 0xefda,
+    0x003f, 0xcac4, 0xefdb, 0xb3ab, 0x003f, 0x003f, 0x003f, 0xb1bc,
+    0x003f, 0xb4d7, 0x003f, 0xb4d6, 0xefdc, 0x003f, 0xefdd, 0x003f,
+    0xefde, 0xefdf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xefe0, 0x003f, 0xb4d8, 0xb3d5, 0xb9de, 0xc8b6, 0x003f, 0xefe2,
+    0xefe1, 0x003f, 0x003f, 0x003f, 0x003f, 0xefe3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb1dc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xefe6, 0x003f, 0xefe5, 0xefe4, 0x003f, 0xefe7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xefea, 0x003f, 0x003f, 0x003f, 0xb0c7,
+    0x003f, 0x003f, 0xefe8, 0x003f, 0xefec, 0xefeb, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xefee, 0xefed, 0xefef, 0x003f,
+    0xc6ae, 0x003f, 0x003f, 0x003f, 0xeff0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeff1, 0xeff3, 0x003f, 0x003f, 0xeff2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9600 .. 0x96ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xc9ec, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeff4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xeff5, 0x003f, 0xbae5, 0x003f, 0x003f, 0x003f, 0xeff6, 0xeff7,
+    0x003f, 0x003f, 0xcbc9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xc1cb, 0x003f, 0x003f, 0x003f, 0xb0a4,
+    0xc2cb, 0x003f, 0xeff8, 0x003f, 0xc9ed, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xeffb, 0xeff9, 0xb9df, 0x003f, 0xeffa,
+    0xb8c2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xcac5, 0xeffd, 0xf0a1, 0xeffe, 0xf0a2,
+    0x003f, 0x003f, 0xb1a1, 0xbfd8, 0xbdfc, 0xb4d9, 0xf0a3, 0x003f,
+    0x003f, 0x003f, 0xc7e6, 0x003f, 0xf0a5, 0x003f, 0x003f, 0x003f,
+    0xb1a2, 0x003f, 0xf0a4, 0xc4c4, 0x003f, 0xcecd, 0xc6ab, 0xeffc,
+    0xcea6, 0x003f, 0xb8b1, 0x003f, 0x003f, 0xcddb, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb6f9, 0xceb4, 0x003f,
+    0xb7a8, 0x003f, 0xc2e2, 0xe7a1, 0x003f, 0xf0a6, 0xb3ac, 0xbfef,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xb3d6, 0xf0a8, 0x003f, 0xf0a9,
+    0xf0a7, 0xb7e4, 0x003f, 0xbadd, 0xbee3, 0x003f, 0x003f, 0x003f,
+    0xb1a3, 0x003f, 0x003f, 0xced9, 0x003f, 0x003f, 0x003f, 0xf0ab,
+    0xeeae, 0x003f, 0xf0aa, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf0ae, 0xf0ac, 0xf0ad, 0x003f, 0xf0af, 0x003f, 0xf0b0, 0xceec,
+    0xf0b1, 0xf0b2, 0x003f, 0xc0c9, 0xc8bb, 0x003f, 0x003f, 0x003f,
+    0xbffd, 0xb4e7, 0x003f, 0x003f, 0xcdba, 0xb2ed, 0xbdb8, 0xb8db,
+    0x003f, 0xf0b5, 0x003f, 0xf0b4, 0xbbf3, 0xf0b6, 0xf0b3, 0x003f,
+    0x003f, 0xbba8, 0x003f, 0x003f, 0x003f, 0xf0ba, 0xeaad, 0x003f,
+    0x003f, 0xd2d6, 0x003f, 0xbff7, 0xf0b8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xcea5, 0xc6f1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xb1ab, 0x003f, 0xc0e3, 0xbcb6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcab7, 0x003f, 0xb1c0, 0x003f, 0x003f, 0x003f, 0xceed, 0xcdeb,
+    0x003f, 0xf0bb, 0x003f, 0xc5c5, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9700 .. 0x97ff */
+    0xbcfb, 0x003f, 0x003f, 0x003f, 0xf0bc, 0x003f, 0xf0bd, 0xbfcc,
+    0xf0be, 0x003f, 0xceee, 0x003f, 0x003f, 0xf0b9, 0xf0c0, 0xf0c2,
+    0x003f, 0xf0c1, 0x003f, 0xf0bf, 0x003f, 0x003f, 0xf0c3, 0x003f,
+    0x003f, 0xf0c4, 0x003f, 0x003f, 0xc1fa, 0x003f, 0xb2e2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf0c5, 0x003f, 0x003f, 0xccb8,
+    0x003f, 0x003f, 0xf0c6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf0c7, 0x003f, 0xcfaa, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdbb1, 0xf0c8, 0x003f, 0x003f, 0x003f, 0xf0c9, 0xf0ca, 0x003f,
+    0x003f, 0x003f, 0xf0ce, 0x003f, 0xf0cb, 0x003f, 0xf0cc, 0x003f,
+    0xf0cd, 0xf0cf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xc0c4, 0x003f, 0x003f, 0x003f, 0xccf7, 0x003f,
+    0x003f, 0xc0c5, 0x003f, 0x003f, 0xf0d0, 0x003f, 0xc8f3, 0x003f,
+    0xf0d1, 0xf3d3, 0xcccc, 0x003f, 0xf0d2, 0x003f, 0xf0d3, 0x003f,
+    0xf0d4, 0xb3d7, 0x003f, 0xf0d6, 0x003f, 0xbfd9, 0x003f, 0x003f,
+    0x003f, 0xf0d7, 0x003f, 0x003f, 0xb7a4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf0d8, 0xf0dc, 0x003f, 0xf0da, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf0db, 0x003f, 0x003f, 0xb3f3, 0xf0d9, 0xf0dd, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf0de, 0x003f, 0xb0c8, 0x003f, 0xf0df,
+    0xf0e0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xbee4, 0x003f, 0x003f, 0x003f, 0xf0e1, 0x003f, 0x003f, 0x003f,
+    0xb5c7, 0x003f, 0x003f, 0xf0e4, 0x003f, 0x003f, 0xf0e3, 0x003f,
+    0xf0e2, 0x003f, 0x003f, 0xebf1, 0x003f, 0xcadc, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf0e5, 0xf0e6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf0e7, 0x003f, 0x003f, 0xf0e8, 0x003f,
+    0xf0e9, 0x003f, 0x003f, 0xf0ea, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb4da, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf0eb, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf0ec, 0xc7a3, 0x003f,
+    0x003f, 0x003f, 0xf0ee, 0xb2bb, 0x003f, 0xf0f1, 0xf0f0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb1a4, 0x003f, 0x003f, 0x003f, 0xb6c1,
+    /* 0x9800 .. 0x98ff */
+    0x003f, 0xcac7, 0xc4ba, 0xbaa2, 0x003f, 0xb9e0, 0xbde7, 0x003f,
+    0xbfdc, 0x003f, 0x003f, 0x003f, 0xf0f3, 0x003f, 0x003f, 0xf0f2,
+    0xcdc2, 0xb4e8, 0xc8d2, 0xc6dc, 0x003f, 0x003f, 0x003f, 0xbffc,
+    0xcece, 0x003f, 0xb7db, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf0f6, 0x003f, 0x003f, 0xf0f5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xcbcb, 0xc6ac, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xb1d0, 0x003f, 0x003f, 0xf0f7,
+    0xf0f4, 0x003f, 0x003f, 0xc9d1, 0xcdea, 0xf0f8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf0f9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf0fb, 0xc2ea, 0xb3db, 0xb3dc, 0xf0fa,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xb4e9, 0xb8b2, 0x003f, 0x003f,
+    0xb4ea, 0x003f, 0x003f, 0xc5bf, 0x003f, 0x003f, 0xcee0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb8dc,
+    0x003f, 0x003f, 0x003f, 0xf0fc, 0x003f, 0x003f, 0x003f, 0xf0fd,
+    0xf0fe, 0xf1a1, 0x003f, 0xf1a3, 0xf1a2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xc9f7, 0x003f, 0xf1a4, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1a5,
+    0x003f, 0xf1a6, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1a7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf1a9, 0xf1a8, 0x003f, 0xf1aa, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xc8f4, 0xe6cc, 0x003f, 0x003f, 0xbfa9,
+    0x003f, 0x003f, 0xb5b2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf1ab, 0x003f, 0xf1ac, 0x003f, 0xd2ac, 0xddbb, 0xc8d3,
+    0x003f, 0x003f, 0xb0fb, 0x003f, 0xb0bb, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xbbf4, 0xcbb0, 0xbefe, 0x003f,
+    /* 0x9900 .. 0x99ff */
+    0x003f, 0x003f, 0x003f, 0xf1ad, 0x003f, 0xccdf, 0x003f, 0x003f,
+    0x003f, 0xf1ae, 0xcddc, 0x003f, 0xb1c2, 0x003f, 0x003f, 0x003f,
+    0xbbc1, 0x003f, 0xf1af, 0xb2ee, 0xf1b0, 0x003f, 0x003f, 0x003f,
+    0xf1b1, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1b3, 0xf1b4, 0x003f,
+    0xf1b6, 0xf1b2, 0x003f, 0x003f, 0xf1b5, 0x003f, 0x003f, 0x003f,
+    0xb4db, 0x003f, 0x003f, 0x003f, 0xf1b7, 0x003f, 0xf1b8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1b9, 0xf1ba, 0x003f,
+    0x003f, 0x003f, 0xf1bb, 0x003f, 0x003f, 0xf1bd, 0x003f, 0x003f,
+    0x003f, 0xf1bc, 0x003f, 0xf1bf, 0xf1c2, 0x003f, 0x003f, 0x003f,
+    0xf1be, 0xf1c0, 0xf1c1, 0x003f, 0x003f, 0xf1c3, 0x003f, 0xb6c2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xbcf3, 0xf1c4,
+    0xf1c5, 0xb9e1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1c6, 0x003f, 0x003f,
+    0xb3be, 0x003f, 0x003f, 0x003f, 0xc7cf, 0xf1c7, 0xf1c8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xc3da, 0xc6eb, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf1c9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc7fd, 0x003f, 0x003f, 0xc2cc, 0xb1d8, 0xb6ee, 0x003f,
+    0xb6ef, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xc3f3, 0xf1ce, 0xb6f0, 0x003f, 0x003f, 0xb2ef, 0x003f, 0x003f,
+    0xf1cd, 0x003f, 0x003f, 0xf1cb, 0x003f, 0xf1cc, 0x003f, 0xf1ca,
+    0x003f, 0x003f, 0xf1d8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1cf, 0xf1d0, 0x003f,
+    0x003f, 0xf1d1, 0xf1d2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf1d4, 0x003f, 0x003f, 0xf1d3, 0x003f, 0x003f, 0x003f, 0xbdd9,
+    /* 0x9a00 .. 0x9aff */
+    0x003f, 0xf1d5, 0x003f, 0x003f, 0x003f, 0xf1d7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb5b3, 0xf1d6,
+    0x003f, 0x003f, 0xc1fb, 0xb8b3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf1d9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xc2cd, 0x003f, 0x003f, 0xf1da, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xc6ad, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1db,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1e0, 0x003f,
+    0xf1de, 0x003f, 0xf1dd, 0xf1df, 0x003f, 0xf1dc, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1e2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1e1, 0x003f, 0xf1e4,
+    0x003f, 0x003f, 0xb6c3, 0xf1e3, 0x003f, 0x003f, 0x003f, 0xf1e5,
+    0x003f, 0x003f, 0xf1e6, 0x003f, 0xf1e8, 0xf1e7, 0x003f, 0x003f,
+    0x003f, 0xf1e9, 0xf1eb, 0xf1ea, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xb9fc, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1ec, 0x003f, 0x003f,
+    0xf1ed, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xb3bc, 0x003f, 0x003f, 0x003f, 0xf1ee, 0x003f, 0x003f, 0x003f,
+    0xf1ef, 0x003f, 0x003f, 0x003f, 0xbff1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1f0,
+    0x003f, 0xf1f1, 0x003f, 0xf1f2, 0xf1f3, 0x003f, 0x003f, 0x003f,
+    0xb9e2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1f4, 0xf1f5,
+    0x003f, 0x003f, 0xf1f6, 0xf1f7, 0x003f, 0x003f, 0xf1f8, 0x003f,
+    0x003f, 0x003f, 0xc8b1, 0xf1fa, 0x003f, 0xc9a6, 0xf1fb, 0xf1f9,
+    0x003f, 0xf1fd, 0x003f, 0x003f, 0xf1fc, 0x003f, 0x003f, 0xf1fe,
+    0x003f, 0x003f, 0x003f, 0xf2a1, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9b00 .. 0x9bff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2a2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf2a3, 0x003f, 0xf2a4, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2a5,
+    0x003f, 0x003f, 0xf2a6, 0xf2a7, 0x003f, 0xf2a8, 0x003f, 0xf2a9,
+    0xf2aa, 0xf2ab, 0xf2ac, 0x003f, 0x003f, 0x003f, 0xf2ad, 0xf2ae,
+    0x003f, 0xddb5, 0xf2af, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe4f8, 0xb5b4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb3a1, 0xbab2, 0xf2b1, 0xf2b0, 0xcca5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2b3, 0xf2b4, 0xf2b2,
+    0x003f, 0xf2b5, 0x003f, 0x003f, 0xcbe2, 0x003f, 0x003f, 0x003f,
+    0xf2b6, 0x003f, 0xb5fb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcfa5,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf2b7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf2b9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb0be, 0x003f,
+    0x003f, 0xf2ba, 0xcaab, 0xf2b8, 0x003f, 0x003f, 0xf2bb, 0xf2bc,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2bd,
+    0xf2be, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf2bf, 0x003f, 0xcbee, 0xbbad, 0x003f, 0xbafa, 0xc1af, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf2c0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf2c3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf2c1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2c4, 0x003f,
+    0x003f, 0xb8f1, 0xf2c2, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2c5,
+    0x003f, 0xf2c6, 0xf2c7, 0x003f, 0xf2cb, 0x003f, 0xbbaa, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xc2e4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf2cc, 0xf2c9, 0xf2c8, 0xf2ca, 0x003f, 0x003f, 0x003f,
+    0xb7df, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf2d0, 0xf2cf, 0xf2ce, 0x003f, 0x003f, 0xb0b3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9c00 .. 0x9cff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf2da, 0x003f, 0xf2d6, 0x003f,
+    0xf2d7, 0xf2d3, 0xf2d9, 0x003f, 0xf2d5, 0xb3e2, 0x003f, 0x003f,
+    0xcfcc, 0x003f, 0xf2d8, 0xf2d4, 0xf2d2, 0xf2d1, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf2dc, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf2df, 0x003f, 0x003f, 0xf2de, 0xf2dd, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc9c9, 0xf2db, 0xb0f3,
+    0xf2e0, 0x003f, 0xf2e2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb3ef, 0xf2cd, 0xb1b7, 0x003f, 0x003f, 0xf2e4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2e3, 0xf2e1,
+    0xc3ad, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xcbf0, 0x003f, 0x003f, 0x003f, 0x003f, 0xceda,
+    0x003f, 0x003f, 0xf2e5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf2e6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2e7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2e8, 0x003f,
+    0xf2e9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc4bb, 0x003f, 0xf2ea,
+    0x003f, 0xc8b7, 0x003f, 0xf2ef, 0xf2eb, 0x003f, 0x003f, 0x003f,
+    0xf2ec, 0x003f, 0x003f, 0xcbb1, 0xccc4, 0x003f, 0xc6d0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9d00 .. 0x9dff */
+    0x003f, 0x003f, 0x003f, 0xf2f0, 0x003f, 0x003f, 0xf2f1, 0xc6be,
+    0xf2ee, 0xf2ed, 0x003f, 0x003f, 0x003f, 0x003f, 0xb2aa, 0x003f,
+    0x003f, 0x003f, 0xf2f9, 0x003f, 0x003f, 0xf2f8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb1f5, 0x003f, 0x003f, 0x003f, 0xf2f6,
+    0x003f, 0x003f, 0x003f, 0xf2f5, 0x003f, 0x003f, 0xf2f3, 0x003f,
+    0xb3fb, 0x003f, 0xf2f2, 0xbcb2, 0xb2a9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb9e3, 0x003f, 0x003f, 0xf2fc, 0xf2fb,
+    0x003f, 0xf2fa, 0x003f, 0x003f, 0xf2f7, 0x003f, 0xf2fd, 0x003f,
+    0xf2fe, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf3a5, 0xf3a4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf3a6, 0x003f, 0x003f, 0xb1ad, 0xf3a1, 0xf3a2, 0x003f,
+    0xb9f4, 0xccb9, 0x003f, 0x003f, 0xf3a3, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xcbb2, 0x003f, 0x003f, 0xf3ab,
+    0x003f, 0x003f, 0xf3a7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf3ac, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3a9,
+    0x003f, 0xf3a8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb7dc,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf3ad, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf3ae, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf3af, 0x003f, 0xf3aa, 0x003f, 0x003f, 0x003f, 0xf2f4,
+    0x003f, 0x003f, 0xf3b0, 0x003f, 0xc4e1, 0x003f, 0x003f, 0x003f,
+    0xf3b4, 0x003f, 0xf3b5, 0xf3b3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf3b2, 0xf3b8, 0x003f, 0xf3b1, 0x003f, 0xf3b6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3b7,
+    0x003f, 0x003f, 0x003f, 0xf3ba, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf3b9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3bc, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3bd, 0x003f, 0xf3be,
+    0x003f, 0x003f, 0xcfc9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf3bb, 0xc2eb, 0xbaed, 0x003f, 0x003f, 0xf3bf, 0x003f, 0x003f,
+    /* 0x9e00 .. 0x9eff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf3c0, 0xf3c1, 0x003f, 0x003f, 0xf3c2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3c3, 0x003f, 0x003f,
+    0xb8b4, 0xf3c4, 0x003f, 0x003f, 0x003f, 0xf3c5, 0x003f, 0xbcaf,
+    0x003f, 0xf3c6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf3c7, 0x003f, 0x003f, 0xf3c8, 0xf3c9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf3cc, 0xf3ca, 0xcfbc, 0x003f, 0xf3cb, 0x003f, 0xceef,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3cd, 0x003f, 0xcedb,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3ce, 0xc7fe, 0x003f,
+    0x003f, 0xf3cf, 0xf3d1, 0x003f, 0x003f, 0xf3d2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf3d0, 0xb9ed, 0xcccd, 0xcbe3, 0xd6f7, 0x003f, 0xdde0, 0xcbfb,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xb2ab, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf3d4, 0xb5d0, 0xf3d5, 0xf3d6,
+    0xf3d7, 0x003f, 0xb9f5, 0x003f, 0xf3d8, 0x003f, 0x003f, 0x003f,
+    0xe0d4, 0xccdb, 0x003f, 0xc2e3, 0xf3d9, 0xf3db, 0xf3da, 0x003f,
+    0xf3dc, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3dd, 0x003f, 0x003f,
+    0xf3de, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3df,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf3e0, 0x003f, 0xf3e1, 0xf3e2,
+    0x003f, 0xf3e3, 0x003f, 0xf3e4, 0xf3e5, 0xf3e6, 0x003f, 0x003f,
+    /* 0x9f00 .. 0x9fff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3e7,
+    0xf3e8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc5a4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb8dd, 0x003f, 0xf3ea, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xc1cd, 0xf3eb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf3ec, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xc9a1, 0x003f, 0x003f, 0xf3ed, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf3ee, 0xe3b7, 0x003f, 0x003f, 0xecda, 0xf0ed,
+    0x003f, 0x003f, 0xf3ef, 0x003f, 0xf3f0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3f2,
+    0xf3f3, 0xf3f4, 0xcef0, 0xf3f1, 0x003f, 0x003f, 0xf3f5, 0xf3f6,
+    0x003f, 0x003f, 0xf3f8, 0x003f, 0xf3f7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf3fa, 0x003f, 0x003f, 0x003f, 0xf3fb, 0xf3f9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xceb6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3fc, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf3fd, 0xe3d4, 0x003f, 0x003f,
+    0xf3fe, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0xf900 .. 0xf9ff */
+    0xecb1, 0xb9b9, 0xbcd6, 0xeccb, 0xb3ea, 0xb6fa, 0xb6e7, 0xf3fd,
+    0xf3fd, 0xb7c0, 0xb6e2, 0xd3c9, 0xc6e0, 0xd8f1, 0xe1fa, 0xcde5,
+    0xe9c7, 0xcde6, 0xcde7, 0xeeb6, 0xdcdb, 0xcdec, 0xdfe0, 0xe0e4,
+    0xcdee, 0xcdef, 0xf1d1, 0xd0ac, 0xcdf1, 0xcdf3, 0xe0a5, 0xcdf6,
+    0xf3c2, 0xcdf2, 0xcdf4, 0xcdf5, 0xeba2, 0xd9c7, 0xe7c4, 0x003f,
+    0xcfad, 0xcfaf, 0xcfb2, 0xcfb5, 0xcfba, 0xd0d4, 0xcee4, 0xd2a9,
+    0x003f, 0xcfa6, 0xe0a4, 0xe2ba, 0xcfb7, 0xe9c3, 0xceba, 0xcfa9,
+    0xcfaa, 0xcfa5, 0xbaed, 0xe2f1, 0xe3b3, 0x003f, 0x003f, 0x003f,
+    0xbcaf, 0xcfc0, 0xd4e2, 0xcfae, 0xe4c6, 0xcfb8, 0xcfb4, 0xe2fd,
+    0xcfa8, 0xcdeb, 0xd4de, 0x003f, 0xdcec, 0x003f, 0xcfb3, 0xcedf,
+    0xe5df, 0xeffb, 0xf0d5, 0xcfbe, 0xf4a5, 0xcebf, 0xcec7, 0xb0bd,
+    0xc9a9, 0xcecd, 0xeca6, 0xd9bc, 0xdcdb, 0xc2fa, 0xc3b0, 0xc7ab,
+    0xc5dc, 0xcea8, 0xb0db, 0xcbcc, 0x003f, 0xcad8, 0xc9fc, 0xc9d4,
+    0xc8e7, 0xdacb, 0xbaf7, 0xd2d4, 0xbac9, 0xbeca, 0xcdd5, 0x003f,
+    0xbba6, 0xc3a4, 0xc4c0, 0xbda6, 0xbce3, 0xceab, 0xceac, 0xcebc,
+    0xd1c0, 0xd1da, 0xcec2, 0xcec8, 0xcec9, 0xceca, 0xcecc, 0xd2af,
+    0xcfa4, 0xbdf7, 0xd7aa, 0xceb9, 0xdfc9, 0xe2ea, 0xefe3, 0xf1eb,
+    0xceef, 0xf3d5, 0xcecf, 0x003f, 0x003f, 0xede0, 0xc7af, 0xcef9,
+    0xd8f8, 0xc7b2, 0xcefa, 0xcefb, 0x003f, 0x003f, 0xcefd, 0xcefe,
+    0xedd3, 0xcfa1, 0xcfa2, 0x003f, 0xcef3, 0xcef4, 0xb0f6, 0xcef5,
+    0xcef6, 0x003f, 0xcef7, 0xc7b0, 0xc7b1, 0x003f, 0xcefc, 0xe0da,
+    0xcee1, 0xd3fa, 0xc7ab, 0xcee6, 0xcee7, 0xcee8, 0xe0f2, 0xe6b9,
+    0xe6d9, 0xceeb, 0xceed, 0xf0cd, 0xcece, 0xcee3, 0xe3b9, 0xeed4,
+    0xf0b1, 0xd8a8, 0xcebb, 0xcebd, 0xcec0, 0xc7a2, 0xcec1, 0xdcdb,
+    0xdff9, 0xcec5, 0xe8fa, 0xcecb, 0xceb6, 0xdaf4, 0xeff6, 0xcead,
+    0x003f, 0xccf8, 0xceae, 0xceaf, 0xceb0, 0xceb1, 0xceb2, 0xc9b3,
+    0xcee0, 0xcfbb, 0xd9a4, 0xcea6, 0xced1, 0xd6c6, 0xdecd, 0xced8,
+    0xcea7, 0xd8cb, 0xb7aa, 0xcea8, 0xceb4, 0xcdf8, 0xcdf9, 0xcdfa,
+    0xb0d7, 0xcdfb, 0xcdfc, 0xc5a5, 0xcdfd, 0xcea1, 0xd8ed, 0xcea2,
+    0xcea3, 0xcea4, 0xcea5, 0xc6bf, 0xc5ae, 0xd2e7, 0xced5, 0x003f,
+    0xe9c2, 0xced9, 0xceda, 0xcedb, 0xced3, 0xced4, 0xced7, 0xcea9,
+    0xb3de, 0xceb3, 0x003f, 0xdfd5, 0xbcb1, 0xbdba, 0xc3e3, 0xbbc9,
+    /* 0xfa00 .. 0xfaff */
+    0xc0da, 0xc5d9, 0xc2f3, 0xc5fc, 0xc2f0, 0xc6b6, 0xcbbd, 0xedd5,
+    0xb9d4, 0xb9df, 0xb8ab, 0xb3c7, 0xd1ba, 0x003f, 0x003f, 0x003f,
+    0xc4cd, 0x003f, 0xc0b2, 0x003f, 0x003f, 0x003f, 0xc3f6, 0xb1d7,
+    0xcee9, 0xbfc0, 0xbecd, 0xcaa1, 0xccf7, 0xc0ba, 0xb1a9, 0x003f,
+    0x003f, 0x003f, 0xbdf4, 0x003f, 0x003f, 0xb0ef, 0xc5d4, 0x003f,
+    0x003f, 0x003f, 0xc8d3, 0xbbf4, 0xb4db, 0xc4e1, 0x003f, 0x003f,
+    0xc9ee, 0xc1ce, 0xccc8, 0xcad9, 0xb6d0, 0xc8dc, 0xb3e5, 0xc3b2,
+    0xb4ef, 0xcabd, 0xcbcf, 0xc1d8, 0xd6a5, 0xb2f9, 0xb3b4, 0xc1fe,
+    0xc4a8, 0xc9d2, 0xb4fb, 0xbdeb, 0xc7df, 0xb3a4, 0xbded, 0xb4c1,
+    0xbcd1, 0x003f, 0xc2f6, 0xc8ea, 0xbcd2, 0xbbe3, 0xb5a7, 0xcdb4,
+    0xc1c4, 0xbdcb, 0xb2d2, 0xc4f7, 0xb9f2, 0xc6cd, 0xc0e1, 0xcefd,
+    0xe5d6, 0xc8cb, 0xbdf0, 0xbcd4, 0xbdad, 0x003f, 0x003f, 0xc3f8,
+    0xb3ec, 0xbbeb, 0xb1da, 0xb6e0, 0xc9d0, 0xc2a3, 0x003f, 0xb0ef,
+    0xc6f1, 0xb6c1, 0xc9d1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcac2, 0xd1d7, 0xc1b4, 0x003f, 0xbdbc, 0xd1c3, 0xcda6, 0xbcdb,
+    0xb3e5, 0x003f, 0xd3bc, 0x003f, 0xc4cd, 0xcaaf, 0xb1e2, 0xcbdb,
+    0xd5b9, 0x003f, 0x003f, 0x003f, 0xbacc, 0xd7d4, 0xd8b1, 0xbfb5,
+    0xccfc, 0xc1fe, 0x003f, 0xc4a8, 0xc2d7, 0xd9e9, 0xd9d3, 0x003f,
+    0xdac4, 0xc0b2, 0xcfaf, 0xcbbe, 0xbef3, 0xddc6, 0xbba6, 0xceae,
+    0x003f, 0xbca2, 0xb4c1, 0xc6d4, 0xbcd1, 0x003f, 0xbcdf, 0xc8c8,
+    0xc3f6, 0x003f, 0x003f, 0xb2e8, 0x003f, 0xe1e9, 0xb1d7, 0xc0b9,
+    0xc4be, 0x003f, 0xc3e5, 0x003f, 0x003f, 0xc0e1, 0x003f, 0xe5b6,
+    0xcefd, 0x003f, 0xbcd4, 0xb9d3, 0xb2da, 0x003f, 0xeaf6, 0xcaa4,
+    0xbbeb, 0xc4b4, 0xbdf4, 0xc0c1, 0xb1da, 0xc2fa, 0xcda1, 0xb6e0,
+    0xdace, 0xc2a3, 0xcda2, 0xeeaf, 0x003f, 0x003f, 0x003f, 0xc6f1,
+    0xccf7, 0x003f, 0xb6c1, 0x003f, 0xc9d1, 0x003f, 0xf3fd, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0xfb00 .. 0xfbff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x002b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0xfe00 .. 0xfeff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x007e, 0x007e, 0x007e, 0x007e, 0x005f, 0x005f, 0x005f,
+    0x002c, 0xa1a2, 0x002e, 0x003f, 0x003b, 0x003a, 0x003f, 0x0021,
+    0xa1bd, 0x0028, 0x0029, 0x007b, 0x007d, 0xa1cc, 0xa1cd, 0x0023,
+    0x0026, 0x002a, 0x002b, 0x002d, 0x003c, 0x003e, 0x003d, 0x003f,
+    0x005c, 0x0024, 0x0025, 0x0040, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0xff00 .. 0xffff */
+    0x003f, 0xa1aa, 0x0022, 0xa1f4, 0xa1f0, 0xa1f3, 0xa1f5, 0x0027,
+    0xa1ca, 0xa1cb, 0xa1f6, 0xa1dc, 0xa1a4, 0x002d, 0xa1a5, 0xa1bf,
+    0xa3b0, 0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4, 0xa3b5, 0xa3b6, 0xa3b7,
+    0xa3b8, 0xa3b9, 0xa1a7, 0xa1a8, 0xa1e3, 0xa1e1, 0xa1e4, 0xa1a9,
+    0xa1f7, 0xa3c1, 0xa3c2, 0xa3c3, 0xa3c4, 0xa3c5, 0xa3c6, 0xa3c7,
+    0xa3c8, 0xa3c9, 0xa3ca, 0xa3cb, 0xa3cc, 0xa3cd, 0xa3ce, 0xa3cf,
+    0xa3d0, 0xa3d1, 0xa3d2, 0xa3d3, 0xa3d4, 0xa3d5, 0xa3d6, 0xa3d7,
+    0xa3d8, 0xa3d9, 0xa3da, 0xa1ce, 0xa1c0, 0xa1cf, 0xa1b0, 0xa1b2,
+    0xa1ae, 0xa3e1, 0xa3e2, 0xa3e3, 0xa3e4, 0xa3e5, 0xa3e6, 0xa3e7,
+    0xa3e8, 0xa3e9, 0xa3ea, 0xa3eb, 0xa3ec, 0xa3ed, 0xa3ee, 0xa3ef,
+    0xa3f0, 0xa3f1, 0xa3f2, 0xa3f3, 0xa3f4, 0xa3f5, 0xa3f6, 0xa3f7,
+    0xa3f8, 0xa3f9, 0xa3fa, 0xa1d0, 0xa1c3, 0xa1d1, 0x007e, 0x003f,
+    0x003f, 0x8ea1, 0x8ea2, 0x8ea3, 0x8ea4, 0x8ea5, 0x8ea6, 0x8ea7,
+    0x8ea8, 0x8ea9, 0x8eaa, 0x8eab, 0x8eac, 0x8ead, 0x8eae, 0x8eaf,
+    0x8eb0, 0x8eb1, 0x8eb2, 0x8eb3, 0x8eb4, 0x8eb5, 0x8eb6, 0x8eb7,
+    0x8eb8, 0x8eb9, 0x8eba, 0x8ebb, 0x8ebc, 0x8ebd, 0x8ebe, 0x8ebf,
+    0x8ec0, 0x8ec1, 0x8ec2, 0x8ec3, 0x8ec4, 0x8ec5, 0x8ec6, 0x8ec7,
+    0x8ec8, 0x8ec9, 0x8eca, 0x8ecb, 0x8ecc, 0x8ecd, 0x8ece, 0x8ecf,
+    0x8ed0, 0x8ed1, 0x8ed2, 0x8ed3, 0x8ed4, 0x8ed5, 0x8ed6, 0x8ed7,
+    0x8ed8, 0x8ed9, 0x8eda, 0x8edb, 0x8edc, 0x8edd, 0x8ede, 0x8edf,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa1f1, 0xa1f2, 0xa2cc, 0xa1b1, 0x007c, 0xa1ef, 0x003f, 0x003f,
+    0xa8a2, 0xa2ab, 0xa2ac, 0xa2aa, 0xa2ad, 0xa2a3, 0xa1fb, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* defaults */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x0400, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x0500, 0x0600, 0x0700,
+    0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x0d00, 0x0e00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x0f00, 0x1000,
+    0x1100, 0x1200, 0x1300, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x1400, 0x1500,
+    0x1600, 0x1700, 0x1800, 0x1900, 0x1a00, 0x1b00, 0x1c00, 0x1d00,
+    0x1e00, 0x1f00, 0x2000, 0x2100, 0x2200, 0x2300, 0x2400, 0x2500,
+    0x2600, 0x2700, 0x2800, 0x2900, 0x2a00, 0x2b00, 0x2c00, 0x2d00,
+    0x2e00, 0x2f00, 0x3000, 0x3100, 0x3200, 0x3300, 0x3400, 0x3500,
+    0x3600, 0x3700, 0x3800, 0x3900, 0x3a00, 0x3b00, 0x3c00, 0x3d00,
+    0x3e00, 0x3f00, 0x4000, 0x4100, 0x4200, 0x4300, 0x4400, 0x4500,
+    0x4600, 0x4700, 0x4800, 0x4900, 0x4a00, 0x4b00, 0x4c00, 0x4d00,
+    0x4e00, 0x4f00, 0x5000, 0x5100, 0x5200, 0x5300, 0x5400, 0x5500,
+    0x5600, 0x5700, 0x5800, 0x5900, 0x5a00, 0x5b00, 0x5c00, 0x5d00,
+    0x5e00, 0x5f00, 0x6000, 0x6100, 0x6200, 0x6300, 0x6400, 0x6500,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6600, 0x6700, 0x6800, 0x6b00, 0x6b00, 0x6900, 0x6a00
+};
+
+const struct dbcs_table cptable_20932 =
+{
+    { 20932, 2, 0x003f, 0x003f, "EUC-JP" },
+    cp2uni,
+    cp2uni_leadbytes,
+    uni2cp_low,
+    uni2cp_high,
+    { 0x8e, 0x8f, 0xa1, 0xfe, 0x00, 0x00 }
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_21866.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_21866.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_21866.c	(revision 16410)
@@ -0,0 +1,717 @@
+/* code page 21866 (Ukrainian KOI8) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MISC/KOI8-U.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524,
+    0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590,
+    0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248,
+    0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7,
+    0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457,
+    0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x0491, 0x045e, 0x255e,
+    0x255f, 0x2560, 0x2561, 0x0401, 0x0404, 0x2563, 0x0406, 0x0407,
+    0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x0490, 0x040e, 0x00a9,
+    0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
+    0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+    0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
+    0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
+    0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
+    0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+    0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
+    0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a
+};
+
+static const unsigned char uni2cp_low[4864] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x9a, 0x21, 0x63, 0x4c, 0x3f, 0x59, 0x7c, 0x3f,
+    0x22, 0xbf, 0x61, 0x3c, 0x3f, 0x2d, 0x72, 0x2d,
+    0x9c, 0x3f, 0x9d, 0x33, 0x27, 0x75, 0x3f, 0x9e,
+    0x2c, 0x31, 0x6f, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43,
+    0x45, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0x4e, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x78,
+    0x4f, 0x55, 0x55, 0x55, 0x55, 0x59, 0x3f, 0x3f,
+    0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x63,
+    0x65, 0x65, 0x65, 0x65, 0x69, 0x69, 0x69, 0x69,
+    0x64, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x9f,
+    0x6f, 0x75, 0x75, 0x75, 0x75, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x81, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75, 0x55,
+    0x75, 0x55, 0x75, 0x55, 0x75, 0x3f, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0x2d, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x9c, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0x2d, 0x2d, 0x3f, 0x3f,
+    0x22, 0x3f, 0x9c, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0x22, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x22, 0x41, 0x9e,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x75, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0400 .. 0x04ff */
+    0xe5, 0xb3, 0x3f, 0xe7, 0xb4, 0x3f, 0xb6, 0xb7,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xeb, 0xe9, 0xbe, 0x3f,
+    0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa,
+    0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0,
+    0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe,
+    0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1,
+    0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda,
+    0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0,
+    0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde,
+    0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1,
+    0xc5, 0xa3, 0x3f, 0xc7, 0xa4, 0x3f, 0xa6, 0xa7,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xcb, 0xc9, 0xae, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xbd, 0xad, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xf6, 0xd6, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe1, 0xc1, 0xe1, 0xc1, 0x3f, 0x3f, 0xe5, 0xc5,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xf6, 0xd6, 0xfa, 0xda,
+    0x3f, 0x3f, 0xe9, 0xc9, 0xe9, 0xc9, 0xef, 0xcf,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xfc, 0xdc, 0xf5, 0xd5,
+    0xf5, 0xd5, 0xf5, 0xd5, 0xfe, 0xde, 0x3f, 0x3f,
+    0xf9, 0xd9, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xce, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x63, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x22, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0x22, 0x22, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0x95, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x27, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x9c, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x63, 0x3f, 0x3f, 0x4c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0x3f, 0x3f, 0x2f, 0x5c, 0x2a,
+    0x9c, 0x95, 0x96, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x97, 0x97, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x98, 0x99, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x98, 0x99, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x9e, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x93, 0x9b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x80, 0x80, 0x81, 0x81, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0x82, 0x82, 0x82, 0x82,
+    0x83, 0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84,
+    0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x86,
+    0x86, 0x86, 0x86, 0x86, 0x87, 0x87, 0x87, 0x87,
+    0x87, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88, 0x88,
+    0x88, 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x89,
+    0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a,
+    0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
+    0x8a, 0x8a, 0x8a, 0x8a, 0x2d, 0x2d, 0x7c, 0x7c,
+    0xa0, 0xa1, 0xa2, 0xa2, 0xa5, 0xa8, 0xa8, 0xa8,
+    0xa9, 0xaa, 0xab, 0xac, 0xac, 0xac, 0xaf, 0xb0,
+    0xb1, 0xb2, 0xb2, 0xb5, 0xb8, 0xb8, 0xb8, 0xb9,
+    0xba, 0xbb, 0xbc, 0xbc, 0xbc, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x8b, 0x3f, 0x3f, 0x3f, 0x8c, 0x3f, 0x3f, 0x3f,
+    0x8d, 0x3f, 0x3f, 0x3f, 0x8e, 0x3f, 0x3f, 0x3f,
+    0x8f, 0x90, 0x91, 0x92, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x94, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2d, 0x2d, 0x2d, 0x2d, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x63, 0x4c, 0x3f, 0x2d, 0x7c, 0x59, 0x3f, 0x3f,
+    0x81, 0x3c, 0x5e, 0x3e, 0x76, 0x94, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x0400, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x0500, 0x0600, 0x0700,
+    0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x0d00, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x0e00, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x0f00, 0x1200, 0x1200, 0x1000, 0x1100
+};
+
+const struct sbcs_table cptable_21866 =
+{
+    { 21866, 1, 0x003f, 0x003f, "Ukrainian KOI8" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28591.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28591.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28591.c	(revision 16410)
@@ -0,0 +1,684 @@
+/* code page 28591 (ISO 8859-1 Latin 1) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/ISO8859/8859-1.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+    0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+    0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+    0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+    0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+    0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+    0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
+    0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+    0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+    0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+    0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+    0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+    0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+    0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+    0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+    0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0xd0, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xd0, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0xdc, 0xfc, 0xdc,
+    0xfc, 0xdc, 0xfc, 0xdc, 0xfc, 0x3f, 0xc4, 0xe4,
+    0x41, 0x61, 0xc6, 0xe6, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0xc5, 0xe5, 0xc6, 0xe6, 0xd8, 0xf8,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0xd6, 0xf6, 0xd5, 0xf5, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0xb4, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0xaf, 0xb4, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xb0, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0xb4, 0x5e, 0x7e, 0xaf, 0xaf, 0x3f, 0x3f,
+    0xa8, 0x3f, 0xb0, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb8,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0xb4, 0x3f, 0x3f, 0xa8, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb4, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb4, 0xa8, 0x41, 0xb7,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xdf, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xdf, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0xc6, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xdf, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xdf, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0xf0, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0xc7, 0xe7, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0xcf, 0xef,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0xd5, 0xf5, 0xd5, 0xf5,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0xc2, 0xe2, 0xc2, 0xe2,
+    0xc2, 0xe2, 0xc2, 0xe2, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0xca, 0xea,
+    0xca, 0xea, 0xca, 0xea, 0xca, 0xea, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0xd4, 0xf4, 0xd4, 0xf4, 0xd4, 0xf4, 0xd4, 0xf4,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa8, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0xa8, 0xa8, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0xb4, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0xb4, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0xaf, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb0, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa2, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0xc5, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xd8, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xb1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xb0, 0x3f, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xab, 0xbb, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb7, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x2d, 0x2d, 0xa6, 0xa6, 0x2b, 0x2b, 0x2b, 0x2b,
+    0xac, 0xac, 0xac, 0xac, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0xac, 0xac, 0xac,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0xab, 0xbb, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xaf, 0xaf, 0xaf, 0xaf, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa2, 0xa3, 0xac, 0xaf, 0xa6, 0xa5, 0x3f, 0x3f,
+    0x7c, 0x3c, 0x5e, 0x3e, 0x76, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_28591 =
+{
+    { 28591, 1, 0x003f, 0x003f, "ISO 8859-1 Latin 1" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28592.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28592.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28592.c	(revision 16410)
@@ -0,0 +1,684 @@
+/* code page 28592 (ISO 8859-2 Latin 2 (East European)) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/ISO8859/8859-2.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7,
+    0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b,
+    0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7,
+    0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c,
+    0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7,
+    0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e,
+    0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7,
+    0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df,
+    0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7,
+    0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f,
+    0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7,
+    0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0x21, 0x63, 0x4c, 0xa4, 0x59, 0x7c, 0xa7,
+    0xa8, 0x63, 0x61, 0x3c, 0x3f, 0xad, 0x72, 0x2d,
+    0xb0, 0x3f, 0x32, 0x33, 0xb4, 0x75, 0x3f, 0x3f,
+    0xb8, 0x31, 0x6f, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0xc1, 0xc2, 0x41, 0xc4, 0x41, 0x41, 0xc7,
+    0x45, 0xc9, 0x45, 0xcb, 0x49, 0xcd, 0xce, 0x49,
+    0xd0, 0x4e, 0x4f, 0xd3, 0xd4, 0x4f, 0xd6, 0xd7,
+    0x4f, 0x55, 0xda, 0x55, 0xdc, 0xdd, 0x3f, 0xdf,
+    0x61, 0xe1, 0xe2, 0x61, 0xe4, 0x61, 0x61, 0xe7,
+    0x65, 0xe9, 0x65, 0xeb, 0x69, 0xed, 0xee, 0x69,
+    0x64, 0x6e, 0x6f, 0xf3, 0xf4, 0x6f, 0xf6, 0xf7,
+    0x6f, 0x75, 0xfa, 0x75, 0xfc, 0xfd, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0xc3, 0xe3, 0xa1, 0xb1, 0xc6, 0xe6,
+    0x43, 0x63, 0x43, 0x63, 0xc8, 0xe8, 0xcf, 0xef,
+    0xd0, 0xf0, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0xca, 0xea, 0xcc, 0xec, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0xc5, 0xe5, 0x4c, 0x6c, 0xa5, 0xb5, 0x3f,
+    0x3f, 0xa3, 0xb3, 0xd1, 0xf1, 0x4e, 0x6e, 0xd2,
+    0xf2, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0xd5, 0xf5, 0x4f, 0x6f, 0xc0, 0xe0, 0x52, 0x72,
+    0xd8, 0xf8, 0xa6, 0xb6, 0x53, 0x73, 0xaa, 0xba,
+    0xa9, 0xb9, 0xde, 0xfe, 0xab, 0xbb, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0xd9, 0xf9,
+    0xdb, 0xfb, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0xac, 0xbc, 0xaf, 0xbf, 0xae, 0xbe, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xd0, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0xdc, 0xfc, 0xdc,
+    0xfc, 0xdc, 0xfc, 0xdc, 0xfc, 0x3f, 0xc4, 0xe4,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0xd6, 0xf6, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0xb4, 0xbd, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0xb7,
+    0x27, 0x2d, 0xb4, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa2, 0xff, 0xb0, 0xb2, 0x7e, 0xbd, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0xb4, 0x5e, 0x7e, 0x2d, 0x2d, 0xa2, 0xff,
+    0xa8, 0x3f, 0xb0, 0xbd, 0xb7, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb8,
+    0xb2, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0xb4, 0x3f, 0x3f, 0xa8, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb4, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb4, 0xa8, 0x41, 0x3f,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xdf, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x75, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xdf, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xdf, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xdf, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0xc7, 0xe7, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0xa6, 0xb6, 0xa9, 0xb9,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0xc2, 0xe2, 0xc2, 0xe2,
+    0xc2, 0xe2, 0xc2, 0xe2, 0x41, 0x61, 0xc3, 0xe3,
+    0xc3, 0xe3, 0xc3, 0xe3, 0xc3, 0xe3, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0xd4, 0xf4, 0xd4, 0xf4, 0xd4, 0xf4, 0xd4, 0xf4,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa8, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0xa8, 0xa8, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0xb4, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0xb4, 0xbd, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb0, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x63, 0x3f, 0x3f, 0x4c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0xb7, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0x3f, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xb0, 0x3f, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2d, 0x2d, 0x2d, 0x2d, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x63, 0x4c, 0x3f, 0x2d, 0x7c, 0x59, 0x3f, 0x3f,
+    0x7c, 0x3c, 0x5e, 0x3e, 0xb7, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_28592 =
+{
+    { 28592, 1, 0x003f, 0x003f, "ISO 8859-2 Latin 2 (East European)" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28593.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28593.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28593.c	(revision 16410)
@@ -0,0 +1,684 @@
+/* code page 28593 (ISO 8859-3 Latin 3 (South European)) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/ISO8859/8859-3.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x0126, 0x02d8, 0x00a3, 0x00a4, 0x003f, 0x0124, 0x00a7,
+    0x00a8, 0x0130, 0x015e, 0x011e, 0x0134, 0x00ad, 0x003f, 0x017b,
+    0x00b0, 0x0127, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x0125, 0x00b7,
+    0x00b8, 0x0131, 0x015f, 0x011f, 0x0135, 0x00bd, 0x00be, 0x017c,
+    0x00c0, 0x00c1, 0x00c2, 0x003f, 0x00c4, 0x010a, 0x0108, 0x00c7,
+    0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+    0x003f, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x0120, 0x00d6, 0x00d7,
+    0x011c, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x016c, 0x015c, 0x00df,
+    0x00e0, 0x00e1, 0x00e2, 0x003f, 0x00e4, 0x010b, 0x0109, 0x00e7,
+    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+    0x003f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x0121, 0x00f6, 0x00f7,
+    0x011d, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x016d, 0x015d, 0x02d9
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0x21, 0x63, 0xa3, 0xa4, 0x59, 0x7c, 0xa7,
+    0xa8, 0x63, 0x61, 0x3c, 0x3f, 0xad, 0x72, 0x2d,
+    0xb0, 0x3f, 0xb2, 0xb3, 0xb4, 0xb5, 0x3f, 0xb7,
+    0xb8, 0x31, 0x6f, 0x3e, 0x3f, 0xbd, 0xbe, 0x3f,
+    0xc0, 0xc1, 0xc2, 0x41, 0xc4, 0x41, 0x41, 0xc7,
+    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+    0x44, 0xd1, 0xd2, 0xd3, 0xd4, 0x4f, 0xd6, 0xd7,
+    0x4f, 0xd9, 0xda, 0xdb, 0xdc, 0x59, 0x3f, 0xdf,
+    0xe0, 0xe1, 0xe2, 0x61, 0xe4, 0x61, 0x61, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0x64, 0xf1, 0xf2, 0xf3, 0xf4, 0x6f, 0xf6, 0xf7,
+    0x6f, 0xf9, 0xfa, 0xfb, 0xfc, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0xc6, 0xe6, 0xc5, 0xe5, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0xd8, 0xf8, 0xab, 0xbb,
+    0xd5, 0xf5, 0x47, 0x67, 0xa6, 0xb6, 0xa1, 0xb1,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0xa9, 0xb9, 0x3f, 0x3f, 0xac, 0xbc, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0xde, 0xfe, 0xaa, 0xba,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0xdd, 0xfd, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0xaf, 0xbf, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0xdc, 0xfc, 0xdc,
+    0xfc, 0xdc, 0xfc, 0xdc, 0xfc, 0x3f, 0xc4, 0xe4,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0xd6, 0xf6, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0xb4, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0x2d, 0xb4, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa2, 0xff, 0xb0, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0xb4, 0x5e, 0x7e, 0x2d, 0x2d, 0xa2, 0xff,
+    0xa8, 0x3f, 0xb0, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb8,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0xb4, 0x3f, 0x3f, 0xa8, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb4, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb4, 0xa8, 0x41, 0xb7,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xdf, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xdf, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xdf, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xdf, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0xc7, 0xe7, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0xcf, 0xef,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0xc2, 0xe2, 0xc2, 0xe2,
+    0xc2, 0xe2, 0xc2, 0xe2, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0xca, 0xea,
+    0xca, 0xea, 0xca, 0xea, 0xca, 0xea, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0xd4, 0xf4, 0xd4, 0xf4, 0xd4, 0xf4, 0xd4, 0xf4,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa8, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0xa8, 0xa8, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0xb4, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0xb4, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb0, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x63, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0xb1,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0x3f, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xb0, 0x3f, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb7, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2d, 0x2d, 0x2d, 0x2d, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x63, 0xa3, 0x3f, 0x2d, 0x7c, 0x59, 0x3f, 0x3f,
+    0x7c, 0x3c, 0x5e, 0x3e, 0x76, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_28593 =
+{
+    { 28593, 1, 0x003f, 0x003f, "ISO 8859-3 Latin 3 (South European)" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28594.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28594.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28594.c	(revision 16410)
@@ -0,0 +1,684 @@
+/* code page 28594 (ISO 8859-4 Latin 4 (Baltic old)) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/ISO8859/8859-4.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7,
+    0x00a8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af,
+    0x00b0, 0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7,
+    0x00b8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b,
+    0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e,
+    0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a,
+    0x0110, 0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+    0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df,
+    0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f,
+    0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b,
+    0x0111, 0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+    0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0x21, 0x63, 0x4c, 0xa4, 0x59, 0x7c, 0xa7,
+    0xa8, 0x63, 0x61, 0x3c, 0x3f, 0xad, 0x72, 0xaf,
+    0xb0, 0x3f, 0x32, 0x33, 0xb4, 0x75, 0x3f, 0x3f,
+    0xb8, 0x31, 0x6f, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0x43,
+    0x45, 0xc9, 0x45, 0xcb, 0x49, 0xcd, 0xce, 0x49,
+    0xd0, 0x4e, 0x4f, 0x4f, 0xd4, 0xd5, 0xd6, 0xd7,
+    0xd8, 0x55, 0xda, 0xdb, 0xdc, 0x59, 0x3f, 0xdf,
+    0x61, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0x63,
+    0x65, 0xe9, 0x65, 0xeb, 0x69, 0xed, 0xee, 0x69,
+    0x64, 0x6e, 0x6f, 0x6f, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0x75, 0xfa, 0xfb, 0xfc, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0xc0, 0xe0, 0x41, 0x61, 0xa1, 0xb1, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0xc8, 0xe8, 0x44, 0x64,
+    0xd0, 0xf0, 0xaa, 0xba, 0x45, 0x65, 0xcc, 0xec,
+    0xca, 0xea, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0xab, 0xbb, 0x48, 0x68, 0x48, 0x68,
+    0xa5, 0xb5, 0xcf, 0xef, 0x49, 0x69, 0xc7, 0xe7,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0xd3, 0xf3,
+    0xa2, 0x4c, 0x6c, 0xa6, 0xb6, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0xd1, 0xf1, 0x4e,
+    0x6e, 0x3f, 0xbd, 0xbf, 0xd2, 0xf2, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0xa3, 0xb3,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0xa9, 0xb9, 0x54, 0x74, 0x54, 0x74, 0xac, 0xbc,
+    0xdd, 0xfd, 0xde, 0xfe, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0xd9, 0xf9, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0xae, 0xbe, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xd0, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0xdc, 0xfc, 0xdc,
+    0xfc, 0xdc, 0xfc, 0xdc, 0xfc, 0x3f, 0xc4, 0xe4,
+    0x41, 0x61, 0xc6, 0xe6, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0xc5, 0xe5, 0xc6, 0xe6, 0xd8, 0xf8,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0xd6, 0xf6, 0xd5, 0xf5, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0xb4, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0xb7,
+    0x27, 0xaf, 0xb4, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xff, 0xb0, 0xb2, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0xb4, 0x5e, 0x7e, 0xaf, 0xaf, 0x3f, 0xff,
+    0xa8, 0x3f, 0xb0, 0x22, 0xb7, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb8,
+    0xb2, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0xb4, 0x3f, 0x3f, 0xa8, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb4, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb4, 0xa8, 0x41, 0x3f,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xdf, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x75, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xdf, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0xc6, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0xbf, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xdf, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xdf, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x63, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0xaa, 0xba, 0xaa, 0xba,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0xd5, 0xf5, 0xd5, 0xf5,
+    0xd2, 0xf2, 0xd2, 0xf2, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0xa9, 0xb9,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0xdd, 0xfd, 0xde, 0xfe, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0xc2, 0xe2, 0xc2, 0xe2,
+    0xc2, 0xe2, 0xc2, 0xe2, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0xd4, 0xf4, 0xd4, 0xf4, 0xd4, 0xf4, 0xd4, 0xf4,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa8, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0xa8, 0xa8, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0xb4, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0xb4, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0xaf, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb0, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x63, 0x3f, 0x3f, 0x4c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0xc5, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0xb7, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xd8, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0x3f, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xb0, 0x3f, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xaf, 0xaf, 0xaf, 0xaf, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x63, 0x4c, 0x3f, 0xaf, 0x7c, 0x59, 0x3f, 0x3f,
+    0x7c, 0x3c, 0x5e, 0x3e, 0xb7, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_28594 =
+{
+    { 28594, 1, 0x003f, 0x003f, "ISO 8859-4 Latin 4 (Baltic old)" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28595.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28595.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28595.c	(revision 16410)
@@ -0,0 +1,717 @@
+/* code page 28595 (ISO 8859-5 Cyrillic) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/ISO8859/8859-5.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407,
+    0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f,
+    0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+    0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+    0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+    0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+    0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+    0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+    0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+    0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
+    0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457,
+    0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f
+};
+
+static const unsigned char uni2cp_low[4864] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0x21, 0x63, 0x4c, 0x3f, 0x59, 0x7c, 0xfd,
+    0x22, 0x63, 0x61, 0x3c, 0x3f, 0xad, 0x72, 0x2d,
+    0x3f, 0x3f, 0x32, 0x33, 0x27, 0x75, 0x3f, 0x3f,
+    0x2c, 0x31, 0x6f, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43,
+    0x45, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0x4e, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x78,
+    0x4f, 0x55, 0x55, 0x55, 0x55, 0x59, 0x3f, 0x3f,
+    0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x63,
+    0x65, 0x65, 0x65, 0x65, 0x69, 0x69, 0x69, 0x69,
+    0x64, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x3f,
+    0x6f, 0x75, 0x75, 0x75, 0x75, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75, 0x55,
+    0x75, 0x55, 0x75, 0x55, 0x75, 0x3f, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0x2d, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0x2d, 0x2d, 0x3f, 0x3f,
+    0x22, 0x3f, 0x3f, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0x22, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x22, 0x41, 0x3f,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x75, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0400 .. 0x04ff */
+    0xb5, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+    0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xb8, 0xae, 0xaf,
+    0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+    0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+    0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+    0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+    0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0xd5, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xd8, 0xfe, 0xff,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xb6, 0xd6, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb0, 0xd0, 0xb0, 0xd0, 0x3f, 0x3f, 0xb5, 0xd5,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb6, 0xd6, 0xb7, 0xd7,
+    0x3f, 0x3f, 0xb8, 0xd8, 0xb8, 0xd8, 0xbe, 0xde,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xcd, 0xed, 0xc3, 0xe3,
+    0xc3, 0xe3, 0xc3, 0xe3, 0xc7, 0xe7, 0x3f, 0x3f,
+    0xcb, 0xeb, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xdd, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x63, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x22, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0x22, 0x22, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x27, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x63, 0x3f, 0x3f, 0x4c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0xf0, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0x3f, 0x3f, 0x2f, 0x5c, 0x2a,
+    0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2d, 0x2d, 0x2d, 0x2d, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x63, 0x4c, 0x3f, 0x2d, 0x7c, 0x59, 0x3f, 0x3f,
+    0x7c, 0x3c, 0x5e, 0x3e, 0x76, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x0400, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x0500, 0x0600, 0x0700,
+    0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x0d00, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x0e00, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x0f00, 0x1200, 0x1200, 0x1000, 0x1100
+};
+
+const struct sbcs_table cptable_28595 =
+{
+    { 28595, 1, 0x003f, 0x003f, "ISO 8859-5 Cyrillic" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28596.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28596.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28596.c	(revision 16410)
@@ -0,0 +1,717 @@
+/* code page 28596 (ISO 8859-6 Arabic) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/ISO8859/8859-6.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x003f, 0x003f, 0x003f, 0x00a4, 0x003f, 0x003f, 0x00a7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x060c, 0x00ad, 0x003f, 0x003f,
+    0x00b0, 0x00b1, 0x003f, 0x003f, 0x003f, 0x003f, 0x00b6, 0x00b7,
+    0x003f, 0x003f, 0x003f, 0x061b, 0x00bc, 0x00bd, 0x00be, 0x061f,
+    0x003f, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
+    0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f,
+    0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637,
+    0x0638, 0x0639, 0x063a, 0x003f, 0x003f, 0x003f, 0x00de, 0x00df,
+    0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647,
+    0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f,
+    0x0650, 0x0651, 0x0652, 0x003f, 0x003f, 0x003f, 0x003f, 0x00f7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x00fe, 0x003f
+};
+
+static const unsigned char uni2cp_low[4864] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0x21, 0x63, 0x4c, 0xa4, 0x59, 0x7c, 0xa7,
+    0x22, 0x63, 0x61, 0x3c, 0x3f, 0xad, 0x72, 0x2d,
+    0xb0, 0xb1, 0x32, 0x33, 0x27, 0x75, 0xb6, 0xb7,
+    0x2c, 0x31, 0x6f, 0x3e, 0xbc, 0xbd, 0xbe, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43,
+    0x45, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0x4e, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x78,
+    0x4f, 0x55, 0x55, 0x55, 0x55, 0x59, 0xde, 0xdf,
+    0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x63,
+    0x65, 0x65, 0x65, 0x65, 0x69, 0x69, 0x69, 0x69,
+    0x64, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0xf7,
+    0x6f, 0x75, 0x75, 0x75, 0x75, 0x79, 0xfe, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75, 0x55,
+    0x75, 0x55, 0x75, 0x55, 0x75, 0x3f, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0x2d, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0x2d, 0x2d, 0x3f, 0x3f,
+    0x22, 0x3f, 0x3f, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0x22, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x22, 0x41, 0x3f,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x75, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0600 .. 0x06ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xac, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0xbb, 0x3f, 0x3f, 0x3f, 0xbf,
+    0x3f, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+    0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+    0xd8, 0xd9, 0xda, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0xf0, 0xf1, 0xf2, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x63, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x22, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0x22, 0x22, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x27, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x63, 0x3f, 0x3f, 0x4c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0x3f, 0x3f, 0x2f, 0x5c, 0x2a,
+    0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2d, 0x2d, 0x2d, 0x2d, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x63, 0x4c, 0x3f, 0x2d, 0x7c, 0x59, 0x3f, 0x3f,
+    0x7c, 0x3c, 0x5e, 0x3e, 0x76, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1200, 0x1200, 0x0400, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x0500, 0x0600, 0x0700,
+    0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x0d00, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x0e00, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x0f00, 0x1200, 0x1200, 0x1000, 0x1100
+};
+
+const struct sbcs_table cptable_28596 =
+{
+    { 28596, 1, 0x003f, 0x003f, "ISO 8859-6 Arabic" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28597.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28597.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28597.c	(revision 16410)
@@ -0,0 +1,684 @@
+/* code page 28597 (ISO 8859-7 Greek) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/ISO8859/8859-7.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x2018, 0x2019, 0x00a3, 0x20ac, 0x20af, 0x00a6, 0x00a7,
+    0x00a8, 0x00a9, 0x037a, 0x00ab, 0x00ac, 0x00ad, 0x003f, 0x2015,
+    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x0385, 0x0386, 0x00b7,
+    0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f,
+    0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
+    0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f,
+    0x03a0, 0x03a1, 0x003f, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7,
+    0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af,
+    0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
+    0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
+    0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7,
+    0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0x003f
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0x21, 0x63, 0xa3, 0x3f, 0x59, 0xa6, 0xa7,
+    0xa8, 0xa9, 0x61, 0xab, 0xac, 0xad, 0x72, 0xaf,
+    0xb0, 0xb1, 0xb2, 0xb3, 0x27, 0xec, 0x3f, 0xb7,
+    0x2c, 0x31, 0x6f, 0xbb, 0x3f, 0xbd, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43,
+    0x45, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0x4e, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x78,
+    0x4f, 0x55, 0x55, 0x55, 0x55, 0x59, 0x3f, 0xe2,
+    0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x63,
+    0x65, 0x65, 0x65, 0x65, 0x69, 0x69, 0x69, 0x69,
+    0x64, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x3f,
+    0x6f, 0x75, 0x75, 0x75, 0x75, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75, 0x55,
+    0x75, 0x55, 0x75, 0x55, 0x75, 0x3f, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0xa1, 0xa2, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0xaf, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xb0, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0xaf, 0xaf, 0x3f, 0x3f,
+    0xa8, 0x3f, 0xb0, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0xa8, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xaa, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb4, 0xb5, 0xb6, 0xb7,
+    0xb8, 0xb9, 0xba, 0x3f, 0xbc, 0x3f, 0xbe, 0xbf,
+    0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+    0xd0, 0xd1, 0x3f, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+    0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x3f,
+    0xe2, 0xe8, 0xd5, 0xd5, 0xd5, 0xf6, 0xf0, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xea, 0xf1, 0xf2, 0x3f, 0xc8, 0xe5, 0x3f, 0x3f,
+    0x3f, 0xd3, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xe2, 0xe3, 0xe4,
+    0xf6, 0xf7, 0x69, 0x72, 0x75, 0x76, 0xe2, 0xe3,
+    0xf1, 0xf6, 0xf7, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0xe8,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x63, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
+    0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0x3f, 0x3f,
+    0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0x3f, 0x3f,
+    0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
+    0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
+    0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9,
+    0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9,
+    0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0x3f, 0x3f,
+    0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x3f, 0x3f,
+    0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
+    0x3f, 0xd5, 0x3f, 0xd5, 0x3f, 0xd5, 0x3f, 0xd5,
+    0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
+    0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9,
+    0xe1, 0xdc, 0xe5, 0xdd, 0xe7, 0xde, 0xe9, 0xdf,
+    0xef, 0xfc, 0xf5, 0xfd, 0xf9, 0xfe, 0x3f, 0x3f,
+    0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
+    0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
+    0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
+    0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
+    0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9,
+    0xe1, 0xe1, 0xe1, 0xe1, 0xdc, 0x3f, 0xe1, 0xe1,
+    0xc1, 0xc1, 0xc1, 0xb6, 0xc1, 0x3f, 0xe9, 0x3f,
+    0x3f, 0xa8, 0xe7, 0xe7, 0xde, 0x3f, 0xe7, 0xe7,
+    0xc5, 0xb8, 0xc7, 0xb9, 0xc7, 0x3f, 0x3f, 0x3f,
+    0xe9, 0xe9, 0xfa, 0xc0, 0x3f, 0x3f, 0xe9, 0xfa,
+    0xc9, 0xc9, 0xc9, 0xba, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf5, 0xf5, 0xfb, 0xe0, 0xf1, 0xf1, 0xf5, 0xfb,
+    0xd5, 0xd5, 0xd5, 0xbe, 0xd1, 0xa8, 0xb5, 0x60,
+    0x3f, 0x3f, 0xf9, 0xf9, 0xfe, 0x3f, 0xf9, 0xf9,
+    0xcf, 0xbc, 0xd9, 0xbf, 0xd9, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0xaf, 0xaf, 0xaf, 0x3f, 0x5f,
+    0xa1, 0xa2, 0x2c, 0xa1, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x27, 0x22, 0x3f, 0xa1, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0xaf, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb0, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x63, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xa4, 0x3f, 0x3f, 0xa5,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0xd9, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0xf0, 0xe3, 0xc3, 0xd0,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xb1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xb0, 0x3f, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xab, 0xbb, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb7, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x2d, 0x2d, 0xa6, 0xa6, 0x2b, 0x2b, 0x2b, 0x2b,
+    0xac, 0xac, 0xac, 0xac, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0xac, 0xac, 0xac,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0xab, 0xbb, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xaf, 0xaf, 0xaf, 0xaf, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0xaf, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x63, 0xa3, 0xac, 0xaf, 0xa6, 0x59, 0x3f, 0x3f,
+    0x7c, 0x3c, 0x5e, 0x3e, 0x76, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_28597 =
+{
+    { 28597, 1, 0x003f, 0x003f, "ISO 8859-7 Greek" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28598.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28598.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28598.c	(revision 16410)
@@ -0,0 +1,717 @@
+/* code page 28598 (ISO 8859-8 Hebrew) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/ISO8859/8859-8.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x003f, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+    0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+    0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x00de, 0x2017,
+    0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
+    0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
+    0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
+    0x05e8, 0x05e9, 0x05ea, 0x003f, 0x003f, 0x200e, 0x200f, 0x003f
+};
+
+static const unsigned char uni2cp_low[4864] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0x21, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+    0xa8, 0xa9, 0x61, 0xab, 0xac, 0xad, 0xae, 0xaf,
+    0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+    0xb8, 0xb9, 0x6f, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43,
+    0x45, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0x4e, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0xaa,
+    0x4f, 0x55, 0x55, 0x55, 0x55, 0x59, 0xde, 0x3f,
+    0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x63,
+    0x65, 0x65, 0x65, 0x65, 0x69, 0x69, 0x69, 0x69,
+    0x64, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0xba,
+    0x6f, 0x75, 0x75, 0x75, 0x75, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75, 0x55,
+    0x75, 0x55, 0x75, 0x55, 0x75, 0x3f, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0xb4, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0xaf, 0xb4, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xb0, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0xb4, 0x5e, 0x7e, 0xaf, 0xaf, 0x3f, 0x3f,
+    0xa8, 0x3f, 0xb0, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb8,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0xb4, 0x3f, 0x3f, 0xa8, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb4, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb4, 0xa8, 0x41, 0xb7,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0500 .. 0x05ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0xfa, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x63, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa8, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0xa8, 0xa8, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0xb4, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0xfd, 0xfe,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0xdf,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0xb4, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0xaf, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb0, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa2, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0xe0, 0xe1, 0xe2,
+    0xe3, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xb1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xb0, 0x3f, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xab, 0xbb, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb7, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x2d, 0x2d, 0xa6, 0xa6, 0x2b, 0x2b, 0x2b, 0x2b,
+    0xac, 0xac, 0xac, 0xac, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0xac, 0xac, 0xac,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0xab, 0xbb, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xe9, 0x3f, 0x3f,
+    0xf2, 0xe0, 0xe3, 0xe4, 0xeb, 0xec, 0xed, 0xf8,
+    0xfa, 0x2b, 0xf9, 0xf9, 0xf9, 0xf9, 0xe0, 0xe0,
+    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0x3f,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0x3f, 0xee, 0x3f,
+    0xf0, 0xf1, 0x3f, 0xf3, 0xf4, 0x3f, 0xf6, 0xf7,
+    0xf8, 0xf9, 0xfa, 0xe5, 0xe1, 0xeb, 0xf4, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xaf, 0xaf, 0xaf, 0xaf, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa2, 0xa3, 0xac, 0xaf, 0xa6, 0xa5, 0x3f, 0x3f,
+    0x7c, 0x3c, 0x5e, 0x3e, 0x76, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1200, 0x0400, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x0500, 0x0600, 0x0700,
+    0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x0d00, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x0e00, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x0f00, 0x1200, 0x1200, 0x1000, 0x1100
+};
+
+const struct sbcs_table cptable_28598 =
+{
+    { 28598, 1, 0x003f, 0x003f, "ISO 8859-8 Hebrew" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28599.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28599.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28599.c	(revision 16410)
@@ -0,0 +1,684 @@
+/* code page 28599 (ISO 8859-9 Latin 5 (Turkish)) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/ISO8859/8859-9.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+    0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+    0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+    0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+    0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+    0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+    0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df,
+    0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+    0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+    0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+    0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+    0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+    0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+    0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+    0x44, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+    0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0x59, 0x3f, 0xdf,
+    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0x64, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x79, 0x3f, 0xff,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0xd0, 0xf0,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0xdd, 0xfd, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0xde, 0xfe,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0xdc, 0xfc, 0xdc,
+    0xfc, 0xdc, 0xfc, 0xdc, 0xfc, 0x3f, 0xc4, 0xe4,
+    0x41, 0x61, 0xc6, 0xe6, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0xc5, 0xe5, 0xc6, 0xe6, 0xd8, 0xf8,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0xd6, 0xf6, 0xd5, 0xf5, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0xb4, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0xaf, 0xb4, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xb0, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0xb4, 0x5e, 0x7e, 0xaf, 0xaf, 0x3f, 0x3f,
+    0xa8, 0x3f, 0xb0, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb8,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0xb4, 0x3f, 0x3f, 0xa8, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb4, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb4, 0xa8, 0x41, 0xb7,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xdf, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xdf, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0xc6, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xdf, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xdf, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0xc7, 0xe7, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0xcf, 0xef,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0xd5, 0xf5, 0xd5, 0xf5,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0xc2, 0xe2, 0xc2, 0xe2,
+    0xc2, 0xe2, 0xc2, 0xe2, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0xca, 0xea,
+    0xca, 0xea, 0xca, 0xea, 0xca, 0xea, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0xd4, 0xf4, 0xd4, 0xf4, 0xd4, 0xf4, 0xd4, 0xf4,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa8, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0xa8, 0xa8, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0xb4, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0xb4, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0xaf, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb0, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa2, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0xc5, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xd8, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xb1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xb0, 0x3f, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xab, 0xbb, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb7, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x2d, 0x2d, 0xa6, 0xa6, 0x2b, 0x2b, 0x2b, 0x2b,
+    0xac, 0xac, 0xac, 0xac, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0xac, 0xac, 0xac,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0xab, 0xbb, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xaf, 0xaf, 0xaf, 0xaf, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa2, 0xa3, 0xac, 0xaf, 0xa6, 0xa5, 0x3f, 0x3f,
+    0x7c, 0x3c, 0x5e, 0x3e, 0x76, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_28599 =
+{
+    { 28599, 1, 0x003f, 0x003f, "ISO 8859-9 Latin 5 (Turkish)" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28600.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28600.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28600.c	(revision 16410)
@@ -0,0 +1,684 @@
+/* code page 28600 (ISO 8859-10 Latin 6 (Nordic)) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/ISO8859/8859-10.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x0104, 0x0112, 0x0122, 0x012a, 0x0128, 0x0136, 0x00a7,
+    0x013b, 0x0110, 0x0160, 0x0166, 0x017d, 0x00ad, 0x016a, 0x014a,
+    0x00b0, 0x0105, 0x0113, 0x0123, 0x012b, 0x0129, 0x0137, 0x00b7,
+    0x013c, 0x0111, 0x0161, 0x0167, 0x017e, 0x2015, 0x016b, 0x014b,
+    0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e,
+    0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x00cf,
+    0x00d0, 0x0145, 0x014c, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0168,
+    0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
+    0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f,
+    0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x00ef,
+    0x00f0, 0x0146, 0x014d, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0169,
+    0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x0138
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0x21, 0x63, 0x4c, 0x3f, 0x59, 0x7c, 0xa7,
+    0x22, 0x63, 0x61, 0x3c, 0x3f, 0xad, 0x72, 0xbd,
+    0xb0, 0x3f, 0x32, 0x33, 0x27, 0x75, 0x3f, 0xb7,
+    0x2c, 0x31, 0x6f, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0x43,
+    0x45, 0xc9, 0x45, 0xcb, 0x49, 0xcd, 0xce, 0xcf,
+    0xd0, 0x4e, 0x4f, 0xd3, 0xd4, 0xd5, 0xd6, 0x78,
+    0xd8, 0x55, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+    0x61, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0x63,
+    0x65, 0xe9, 0x65, 0xeb, 0x69, 0xed, 0xee, 0xef,
+    0xf0, 0x6e, 0x6f, 0xf3, 0xf4, 0xf5, 0xf6, 0x3f,
+    0xf8, 0x75, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0xc0, 0xe0, 0x41, 0x61, 0xa1, 0xb1, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0xc8, 0xe8, 0x44, 0x64,
+    0xa9, 0xb9, 0xa2, 0xb2, 0x45, 0x65, 0xcc, 0xec,
+    0xca, 0xea, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0xa3, 0xb3, 0x48, 0x68, 0x48, 0x68,
+    0xa5, 0xb5, 0xa4, 0xb4, 0x49, 0x69, 0xc7, 0xe7,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0xa6, 0xb6,
+    0xff, 0x4c, 0x6c, 0xa8, 0xb8, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0xd1, 0xf1, 0x4e,
+    0x6e, 0x3f, 0xaf, 0xbf, 0xd2, 0xf2, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0xaa, 0xba, 0x54, 0x74, 0x54, 0x74, 0xab, 0xbb,
+    0xd7, 0xf7, 0xae, 0xbe, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0xd9, 0xf9, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0xac, 0xbc, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xd0, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0xdc, 0xfc, 0xdc,
+    0xfc, 0xdc, 0xfc, 0xdc, 0xfc, 0x3f, 0xc4, 0xe4,
+    0x41, 0x61, 0xc6, 0xe6, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0xc5, 0xe5, 0xc6, 0xe6, 0xd8, 0xf8,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0xd6, 0xf6, 0xd5, 0xf5, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0xbd, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xb0, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0xbd, 0xbd, 0x3f, 0x3f,
+    0x22, 0x3f, 0xb0, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0x22, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x22, 0x41, 0xb7,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xdf, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x75, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xdf, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0xc6, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0xbf, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xdf, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xdf, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0xf0, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x63, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0xa2, 0xb2, 0xa2, 0xb2,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0xcf, 0xef,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0xd5, 0xf5, 0xd5, 0xf5,
+    0xd2, 0xf2, 0xd2, 0xf2, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0xaa, 0xba,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0xd7, 0xf7, 0xae, 0xbe, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0xc2, 0xe2, 0xc2, 0xe2,
+    0xc2, 0xe2, 0xc2, 0xe2, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0xd4, 0xf4, 0xd4, 0xf4, 0xd4, 0xf4, 0xd4, 0xf4,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x22, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0x22, 0x22, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0xbd, 0xbd, 0xbd, 0x3f, 0x5f,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x27, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0xbd, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb0, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x63, 0x3f, 0x3f, 0x4c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0xc5, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xd8, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0x3f, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xb0, 0x3f, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb7, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xbd, 0xbd, 0xbd, 0xbd, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0xbd, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x63, 0x4c, 0x3f, 0xbd, 0x7c, 0x59, 0x3f, 0x3f,
+    0x7c, 0x3c, 0x5e, 0x3e, 0x76, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_28600 =
+{
+    { 28600, 1, 0x003f, 0x003f, "ISO 8859-10 Latin 6 (Nordic)" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28603.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28603.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28603.c	(revision 16410)
@@ -0,0 +1,684 @@
+/* code page 28603 (ISO 8859-13 Latin 7 (Baltic)) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/ISO8859/8859-13.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x201d, 0x00a2, 0x00a3, 0x00a4, 0x201e, 0x00a6, 0x00a7,
+    0x00d8, 0x00a9, 0x0156, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6,
+    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x201c, 0x00b5, 0x00b6, 0x00b7,
+    0x00f8, 0x00b9, 0x0157, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6,
+    0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112,
+    0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b,
+    0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7,
+    0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 0x017b, 0x017d, 0x00df,
+    0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113,
+    0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c,
+    0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7,
+    0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0x2019
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0x21, 0xa2, 0xa3, 0xa4, 0x59, 0xa6, 0xa7,
+    0x22, 0xa9, 0x61, 0xab, 0xac, 0xad, 0xae, 0x2d,
+    0xb0, 0xb1, 0xb2, 0xb3, 0x27, 0xb5, 0xb6, 0xb7,
+    0x2c, 0xb9, 0x6f, 0xbb, 0xbc, 0xbd, 0xbe, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0xc4, 0xc5, 0xaf, 0x43,
+    0x45, 0xc9, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0x4e, 0x4f, 0xd3, 0x4f, 0xd5, 0xd6, 0xd7,
+    0xa8, 0x55, 0x55, 0x55, 0xdc, 0x59, 0x3f, 0xdf,
+    0x61, 0x61, 0x61, 0x61, 0xe4, 0xe5, 0xbf, 0x63,
+    0x65, 0xe9, 0x65, 0x65, 0x69, 0x69, 0x69, 0x69,
+    0x64, 0x6e, 0x6f, 0xf3, 0x6f, 0xf5, 0xf6, 0xf7,
+    0xb8, 0x75, 0x75, 0x75, 0xfc, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0xc2, 0xe2, 0x41, 0x61, 0xc0, 0xe0, 0xc3, 0xe3,
+    0x43, 0x63, 0x43, 0x63, 0xc8, 0xe8, 0x44, 0x64,
+    0x44, 0x64, 0xc7, 0xe7, 0x45, 0x65, 0xcb, 0xeb,
+    0xc6, 0xe6, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0xcc, 0xec, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0xce, 0xee, 0x49, 0x69, 0xc1, 0xe1,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0xcd, 0xed,
+    0x3f, 0x4c, 0x6c, 0xcf, 0xef, 0x4c, 0x6c, 0x3f,
+    0x3f, 0xd9, 0xf9, 0xd1, 0xf1, 0xd2, 0xf2, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0xd4, 0xf4, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0xaa, 0xba,
+    0x52, 0x72, 0xda, 0xfa, 0x53, 0x73, 0x53, 0x73,
+    0xd0, 0xf0, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0xdb, 0xfb, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0xd8, 0xf8, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0xca, 0xea, 0xdd, 0xfd, 0xde, 0xfe, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0xdc, 0xfc, 0xdc,
+    0xfc, 0xdc, 0xfc, 0xdc, 0xfc, 0x3f, 0xc4, 0xe4,
+    0x41, 0x61, 0xaf, 0xbf, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0xc5, 0xe5, 0xaf, 0xbf, 0xa8, 0xb8,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0xd6, 0xf6, 0xd5, 0xf5, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0x60, 0xff, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0x2d, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xb0, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0x2d, 0x2d, 0x3f, 0x3f,
+    0x22, 0x3f, 0xb0, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0x22, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x22, 0x41, 0xb7,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xdf, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xdf, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0xaf, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xdf, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xdf, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x63, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0xc7, 0xe7, 0xc7, 0xe7,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0xd5, 0xf5, 0xd5, 0xf5,
+    0xd4, 0xf4, 0xd4, 0xf4, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0xda, 0xfa, 0xd0, 0xf0,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0xdb, 0xfb, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x22, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0x22, 0x22, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0xff, 0x2c, 0x60, 0xb4, 0xa1, 0xa5, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x27, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb0, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa2, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0xc5, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xa8, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xb1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xb0, 0x3f, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xab, 0xbb, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb7, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x2d, 0x2d, 0xa6, 0xa6, 0x2b, 0x2b, 0x2b, 0x2b,
+    0xac, 0xac, 0xac, 0xac, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0xa6, 0xa6,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0xac, 0xac, 0xac,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0xab, 0xbb, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0xb4, 0xa1, 0xa5,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2d, 0x2d, 0x2d, 0x2d, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa2, 0xa3, 0xac, 0x2d, 0xa6, 0x59, 0x3f, 0x3f,
+    0x7c, 0x3c, 0x5e, 0x3e, 0x76, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_28603 =
+{
+    { 28603, 1, 0x003f, 0x003f, "ISO 8859-13 Latin 7 (Baltic)" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28604.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28604.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28604.c	(revision 16410)
@@ -0,0 +1,684 @@
+/* code page 28604 (ISO 8859-14 Latin 8 (Celtic)) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/ISO8859/8859-14.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x1e02, 0x1e03, 0x00a3, 0x010a, 0x010b, 0x1e0a, 0x00a7,
+    0x1e80, 0x00a9, 0x1e82, 0x1e0b, 0x1ef2, 0x00ad, 0x00ae, 0x0178,
+    0x1e1e, 0x1e1f, 0x0120, 0x0121, 0x1e40, 0x1e41, 0x00b6, 0x1e56,
+    0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61,
+    0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+    0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+    0x0174, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x1e6a,
+    0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x0176, 0x00df,
+    0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+    0x0175, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x1e6b,
+    0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0177, 0x00ff
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0x21, 0x63, 0xa3, 0x3f, 0x59, 0x7c, 0xa7,
+    0x22, 0xa9, 0x61, 0x3c, 0x3f, 0xad, 0xae, 0x2d,
+    0x3f, 0x3f, 0x32, 0x33, 0x27, 0x75, 0xb6, 0x3f,
+    0x2c, 0x31, 0x6f, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+    0x44, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0x78,
+    0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x3f, 0xdf,
+    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0x64, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0x3f,
+    0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0x3f, 0xff,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0xa4, 0xa5, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0xb2, 0xb3, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0xd0, 0xf0, 0xde, 0xfe,
+    0xaf, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0xdc, 0xfc, 0xdc,
+    0xfc, 0xdc, 0xfc, 0xdc, 0xfc, 0x3f, 0xc4, 0xe4,
+    0x41, 0x61, 0xc6, 0xe6, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0xc5, 0xe5, 0xc6, 0xe6, 0xd8, 0xf8,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0xd6, 0xf6, 0xd5, 0xf5, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0x2d, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0x2d, 0x2d, 0x3f, 0x3f,
+    0x22, 0x3f, 0x3f, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0x22, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x22, 0x41, 0x3f,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xdf, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x75, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xdf, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0xc6, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xdf, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xdf, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0xa1, 0xa2, 0x42, 0x62, 0x42, 0x62,
+    0xc7, 0xe7, 0xa6, 0xab, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0xb0, 0xb1,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0xcf, 0xef,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0xb4, 0xb5, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0xd5, 0xf5, 0xd5, 0xf5,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0xb7, 0xb9,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0xbb, 0xbf, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0xd7, 0xf7, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0xa8, 0xb8, 0xaa, 0xba, 0xbd, 0xbe, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0xc2, 0xe2, 0xc2, 0xe2,
+    0xc2, 0xe2, 0xc2, 0xe2, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0xca, 0xea,
+    0xca, 0xea, 0xca, 0xea, 0xca, 0xea, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0xd4, 0xf4, 0xd4, 0xf4, 0xd4, 0xf4, 0xd4, 0xf4,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0xac, 0xbc, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x22, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0x22, 0x22, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x27, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x63, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0xc5, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xd8, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0x3f, 0x3f, 0x2f, 0x5c, 0x2a,
+    0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2d, 0x2d, 0x2d, 0x2d, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x63, 0xa3, 0x3f, 0x2d, 0x7c, 0x59, 0x3f, 0x3f,
+    0x7c, 0x3c, 0x5e, 0x3e, 0x76, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_28604 =
+{
+    { 28604, 1, 0x003f, 0x003f, "ISO 8859-14 Latin 8 (Celtic)" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28605.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28605.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28605.c	(revision 16410)
@@ -0,0 +1,684 @@
+/* code page 28605 (ISO 8859-15 Latin 9 (Euro)) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/ISO8859/8859-15.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x0160, 0x00a7,
+    0x0161, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x017d, 0x00b5, 0x00b6, 0x00b7,
+    0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 0x00bf,
+    0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+    0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+    0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+    0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
+    0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+    0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+    0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0xa1, 0xa2, 0xa3, 0x3f, 0xa5, 0x7c, 0xa7,
+    0x22, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+    0xb0, 0xb1, 0xb2, 0xb3, 0x27, 0xb5, 0xb6, 0xb7,
+    0x2c, 0xb9, 0xba, 0xbb, 0x3f, 0x3f, 0x3f, 0xbf,
+    0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+    0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+    0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0xd0, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0xbc, 0xbd, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0xa6, 0xa8, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0xbe, 0x5a, 0x7a, 0x5a, 0x7a, 0xb4, 0xb8, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xd0, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0xdc, 0xfc, 0xdc,
+    0xfc, 0xdc, 0xfc, 0xdc, 0xfc, 0x3f, 0xc4, 0xe4,
+    0x41, 0x61, 0xc6, 0xe6, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0xc5, 0xe5, 0xc6, 0xe6, 0xd8, 0xf8,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0xd6, 0xf6, 0xd5, 0xf5, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0xaf, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xb0, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0xaf, 0xaf, 0x3f, 0x3f,
+    0x22, 0x3f, 0xb0, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0x22, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x22, 0x41, 0xb7,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xdf, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xdf, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0xc6, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xdf, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xdf, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0xf0, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0xc7, 0xe7, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0xcf, 0xef,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0xd5, 0xf5, 0xd5, 0xf5,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0xa6, 0xa8,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0xc2, 0xe2, 0xc2, 0xe2,
+    0xc2, 0xe2, 0xc2, 0xe2, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0xca, 0xea,
+    0xca, 0xea, 0xca, 0xea, 0xca, 0xea, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0xd4, 0xf4, 0xd4, 0xf4, 0xd4, 0xf4, 0xd4, 0xf4,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x22, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0x22, 0x22, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x27, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0xaf, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb0, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa2, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xa4, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0xc5, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xd8, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xb1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xb0, 0x3f, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xab, 0xbb, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb7, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2b, 0x2b, 0x2b, 0x2b,
+    0xac, 0xac, 0xac, 0xac, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0xac, 0xac, 0xac,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0xab, 0xbb, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xaf, 0xaf, 0xaf, 0xaf, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa2, 0xa3, 0xac, 0xaf, 0x7c, 0xa5, 0x3f, 0x3f,
+    0x7c, 0x3c, 0x5e, 0x3e, 0x76, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_28605 =
+{
+    { 28605, 1, 0x003f, 0x003f, "ISO 8859-15 Latin 9 (Euro)" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28606.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28606.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_28606.c	(revision 16410)
@@ -0,0 +1,684 @@
+/* code page 28606 (ISO 8859-16 Latin 10 (Balkan)) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/ISO8859/8859-16.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x0104, 0x0105, 0x0141, 0x20ac, 0x201e, 0x0160, 0x00a7,
+    0x0161, 0x00a9, 0x0218, 0x00ab, 0x0179, 0x00ad, 0x017a, 0x017b,
+    0x00b0, 0x00b1, 0x010c, 0x0142, 0x017d, 0x201d, 0x00b6, 0x00b7,
+    0x017e, 0x010d, 0x0219, 0x00bb, 0x0152, 0x0153, 0x0178, 0x017c,
+    0x00c0, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0106, 0x00c6, 0x00c7,
+    0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+    0x0110, 0x0143, 0x00d2, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x015a,
+    0x0170, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0118, 0x021a, 0x00df,
+    0x00e0, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x0107, 0x00e6, 0x00e7,
+    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+    0x0111, 0x0144, 0x00f2, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x015b,
+    0x0171, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0119, 0x021b, 0x00ff
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0x21, 0x63, 0x4c, 0x3f, 0x59, 0x7c, 0xa7,
+    0x22, 0xa9, 0x61, 0xab, 0x3f, 0xad, 0x72, 0x2d,
+    0xb0, 0xb1, 0x32, 0x33, 0x27, 0x75, 0xb6, 0xb7,
+    0x2c, 0x31, 0x6f, 0xbb, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc0, 0xc1, 0xc2, 0x41, 0xc4, 0x41, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+    0xd0, 0x4e, 0xd2, 0xd3, 0xd4, 0x4f, 0xd6, 0x78,
+    0x4f, 0xd9, 0xda, 0xdb, 0xdc, 0x59, 0x3f, 0xdf,
+    0xe0, 0xe1, 0xe2, 0x61, 0xe4, 0x61, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0x64, 0x6e, 0xf2, 0xf3, 0xf4, 0x6f, 0xf6, 0x3f,
+    0x6f, 0xf9, 0xfa, 0xfb, 0xfc, 0x79, 0x3f, 0xff,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0xc3, 0xe3, 0xa1, 0xa2, 0xc5, 0xe5,
+    0x43, 0x63, 0x43, 0x63, 0xb2, 0xb9, 0x44, 0x64,
+    0xd0, 0xf0, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0xdd, 0xfd, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0xa3, 0xb3, 0xd1, 0xf1, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0xd5, 0xf5, 0xbc, 0xbd, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0xd7, 0xf7, 0x53, 0x73, 0x53, 0x73,
+    0xa6, 0xa8, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0xd8, 0xf8, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0xbe, 0xac, 0xae, 0xaf, 0xbf, 0xb4, 0xb8, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xd0, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0xdc, 0xfc, 0xdc,
+    0xfc, 0xdc, 0xfc, 0xdc, 0xfc, 0x3f, 0xc4, 0xe4,
+    0x41, 0x61, 0xc6, 0xe6, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0xc6, 0xe6, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0xaa, 0xba, 0xde, 0xfe, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0xd6, 0xf6, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0x2d, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xb0, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0x2d, 0x2d, 0x3f, 0x3f,
+    0x22, 0x3f, 0xb0, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0x22, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x22, 0x41, 0xb7,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xdf, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x75, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xdf, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0xc6, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xdf, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xdf, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0xc7, 0xe7, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0xcf, 0xef,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0xd7, 0xf7, 0xa6, 0xa8,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0xc2, 0xe2, 0xc2, 0xe2,
+    0xc2, 0xe2, 0xc2, 0xe2, 0x41, 0x61, 0xc3, 0xe3,
+    0xc3, 0xe3, 0xc3, 0xe3, 0xc3, 0xe3, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0xca, 0xea,
+    0xca, 0xea, 0xca, 0xea, 0xca, 0xea, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0xd4, 0xf4, 0xd4, 0xf4, 0xd4, 0xf4, 0xd4, 0xf4,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x22, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0x22, 0x22, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0xb5, 0xa5, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x27, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb0, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x63, 0x3f, 0x3f, 0x4c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xa4, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xb1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xb0, 0x3f, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xab, 0xbb, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb7, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0xab, 0xbb, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0xb5, 0xa5,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2d, 0x2d, 0x2d, 0x2d, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x63, 0x4c, 0x3f, 0x2d, 0x7c, 0x59, 0x3f, 0x3f,
+    0x7c, 0x3c, 0x5e, 0x3e, 0x76, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_28606 =
+{
+    { 28606, 1, 0x003f, 0x003f, "ISO 8859-16 Latin 10 (Balkan)" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_424.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_424.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_424.c	(revision 16410)
@@ -0,0 +1,717 @@
+/* code page 424 (IBM EBCDIC Hebrew) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MISC/CP424.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+    0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+    0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+    0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+    0x0020, 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6,
+    0x05d7, 0x05d8, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c,
+    0x0026, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
+    0x05e0, 0x05e1, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac,
+    0x002d, 0x002f, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
+    0x05e8, 0x05e9, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+    0x003f, 0x05ea, 0x003f, 0x003f, 0x00a0, 0x003f, 0x003f, 0x003f,
+    0x2017, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+    0x003f, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x00ab, 0x00bb, 0x003f, 0x003f, 0x003f, 0x00b1,
+    0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+    0x0071, 0x0072, 0x003f, 0x003f, 0x003f, 0x00b8, 0x003f, 0x00a4,
+    0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+    0x0079, 0x007a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x00ae,
+    0x005e, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc,
+    0x00bd, 0x00be, 0x005b, 0x005d, 0x00af, 0x00a8, 0x00b4, 0x00d7,
+    0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x00ad, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+    0x0051, 0x0052, 0x00b9, 0x003f, 0x003f, 0x003f, 0x00de, 0x00df,
+    0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+    0x0059, 0x005a, 0x00b2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x00b3, 0x003f, 0x003f, 0x003f, 0x00fe, 0x009f
+};
+
+static const unsigned char uni2cp_low[4864] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
+    0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26,
+    0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
+    0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
+    0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
+    0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
+    0xe7, 0xe8, 0xe9, 0xba, 0xe0, 0xbb, 0xb0, 0x6d,
+    0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
+    0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
+    0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b,
+    0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08,
+    0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff,
+    0x74, 0x5a, 0x4a, 0xb1, 0x9f, 0xb2, 0x6a, 0xb5,
+    0xbd, 0xb4, 0x81, 0x8a, 0x5f, 0xca, 0xaf, 0xbc,
+    0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3,
+    0x9d, 0xda, 0x96, 0x8b, 0xb7, 0xb8, 0xb9, 0x3f,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc3,
+    0xc5, 0xc5, 0xc5, 0xc5, 0xc9, 0xc9, 0xc9, 0xc9,
+    0xc4, 0xd5, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xbf,
+    0xd6, 0xe4, 0xe4, 0xe4, 0xe4, 0xe8, 0xde, 0xdf,
+    0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x83,
+    0x85, 0x85, 0x85, 0x85, 0x89, 0x89, 0x89, 0x89,
+    0x84, 0x95, 0x96, 0x96, 0x96, 0x96, 0x96, 0xe1,
+    0x96, 0xa4, 0xa4, 0xa4, 0xa4, 0xa8, 0xfe, 0xa8,
+    /* 0x0100 .. 0x01ff */
+    0xc1, 0x81, 0xc1, 0x81, 0xc1, 0x81, 0xc3, 0x83,
+    0xc3, 0x83, 0xc3, 0x83, 0xc3, 0x83, 0xc4, 0x84,
+    0xc4, 0x84, 0xc5, 0x85, 0xc5, 0x85, 0xc5, 0x85,
+    0xc5, 0x85, 0xc5, 0x85, 0xc7, 0x87, 0xc7, 0x87,
+    0xc7, 0x87, 0xc7, 0x87, 0xc8, 0x88, 0xc8, 0x88,
+    0xc9, 0x89, 0xc9, 0x89, 0xc9, 0x89, 0xc9, 0x89,
+    0xc9, 0x89, 0x3f, 0x3f, 0xd1, 0x91, 0xd2, 0x92,
+    0x3f, 0xd3, 0x93, 0xd3, 0x93, 0xd3, 0x93, 0x3f,
+    0x3f, 0xd3, 0x93, 0xd5, 0x95, 0xd5, 0x95, 0xd5,
+    0x95, 0x3f, 0x3f, 0x3f, 0xd6, 0x96, 0xd6, 0x96,
+    0xd6, 0x96, 0xd6, 0x96, 0xd9, 0x99, 0xd9, 0x99,
+    0xd9, 0x99, 0xe2, 0xa2, 0xe2, 0xa2, 0xe2, 0xa2,
+    0xe2, 0xa2, 0xe3, 0xa3, 0xe3, 0xa3, 0xe3, 0xa3,
+    0xe4, 0xa4, 0xe4, 0xa4, 0xe4, 0xa4, 0xe4, 0xa4,
+    0xe4, 0xa4, 0xe4, 0xa4, 0xe6, 0xa6, 0xe8, 0xa8,
+    0xe8, 0xe9, 0xa9, 0xe9, 0xa9, 0xe9, 0xa9, 0xa2,
+    0x82, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xc4, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc5, 0xc6, 0x86, 0x3f, 0x3f, 0x3f, 0x3f, 0xc9,
+    0x3f, 0x3f, 0x93, 0x3f, 0x3f, 0x3f, 0x3f, 0xd6,
+    0xd6, 0x96, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f, 0xe3, 0xe4,
+    0xa4, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xa9, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xc1, 0x81, 0xc9,
+    0x89, 0xd6, 0x96, 0xe4, 0xa4, 0xe4, 0xa4, 0xe4,
+    0xa4, 0xe4, 0xa4, 0xe4, 0xa4, 0x3f, 0xc1, 0x81,
+    0xc1, 0x81, 0xc1, 0x81, 0xc7, 0x87, 0xc7, 0x87,
+    0xd2, 0x92, 0xd6, 0x96, 0xd6, 0x96, 0x3f, 0x3f,
+    0x91, 0x3f, 0x3f, 0x3f, 0xc7, 0x87, 0x3f, 0x3f,
+    0xd5, 0x95, 0xc1, 0x81, 0xc1, 0x81, 0xd6, 0x96,
+    /* 0x0200 .. 0x02ff */
+    0xc1, 0x81, 0xc1, 0x81, 0xc5, 0x85, 0xc5, 0x85,
+    0xc9, 0x89, 0xc9, 0x89, 0xd6, 0x96, 0xd6, 0x96,
+    0xd9, 0x99, 0xd9, 0x99, 0xe4, 0xa4, 0xe4, 0xa4,
+    0xe2, 0xa2, 0xe3, 0xa3, 0x3f, 0x3f, 0xc8, 0x88,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xc1, 0x81,
+    0xc5, 0x85, 0xd6, 0x96, 0xd6, 0x96, 0xd6, 0x96,
+    0xd6, 0x96, 0xe8, 0xa8, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x87, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x88, 0x3f, 0x91, 0x99, 0x3f, 0x3f, 0x3f, 0xa6,
+    0xa8, 0xbe, 0x7f, 0x79, 0x7d, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xb0, 0x3f, 0xb0, 0xa5,
+    0x7d, 0xbc, 0xbe, 0x79, 0x3f, 0x6d, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x90, 0x3f, 0xa1, 0x7f, 0x3f, 0x3f,
+    0x3f, 0x93, 0xa2, 0xa7, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x79, 0xbe, 0xb0, 0xa1, 0xbc, 0xbc, 0x3f, 0x3f,
+    0xbd, 0x3f, 0x90, 0x7f, 0xa5, 0x3f, 0x7f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x9d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6d, 0x6d, 0x6d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x79, 0xbe, 0x3f, 0x3f, 0xbd, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xbe, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xbe, 0xbd, 0xc1, 0xb3,
+    0xc5, 0xc8, 0xc9, 0x3f, 0xd6, 0x3f, 0xe8, 0x3f,
+    0x3f, 0xc1, 0xc2, 0x3f, 0x3f, 0xc5, 0xe9, 0xc8,
+    0x3f, 0xc9, 0xd2, 0x3f, 0xd4, 0xd5, 0x3f, 0xd6,
+    0x3f, 0xd7, 0x3f, 0x3f, 0xe3, 0xe8, 0x3f, 0xe7,
+    0x3f, 0x3f, 0xc9, 0xe8, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xa0, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xe8, 0xe8, 0xe8, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0500 .. 0x05ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
+    0x49, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x71, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xc1, 0xc1, 0xc2, 0x3f,
+    0xc4, 0xc5, 0x3f, 0xc7, 0xc8, 0xc9, 0xd1, 0xd2,
+    0xd3, 0xd4, 0xd5, 0x3f, 0xd6, 0x3f, 0xd7, 0xd9,
+    0xe3, 0xe4, 0xe6, 0x81, 0x3f, 0x3f, 0x3f, 0x82,
+    0x84, 0x85, 0x3f, 0x3f, 0x3f, 0x87, 0x3f, 0x92,
+    0x94, 0x3f, 0x96, 0x3f, 0x3f, 0x3f, 0x97, 0xa3,
+    0xa4, 0x3f, 0x3f, 0xa5, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x89, 0x99, 0xa4, 0xa5, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x83, 0x3f, 0x84, 0x3f,
+    0x86, 0x3f, 0x87, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0xa9, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0xc1, 0x81, 0xc2, 0x82, 0xc2, 0x82, 0xc2, 0x82,
+    0xc3, 0x83, 0xc4, 0x84, 0xc4, 0x84, 0xc4, 0x84,
+    0xc4, 0x84, 0xc4, 0x84, 0xc5, 0x85, 0xc5, 0x85,
+    0xc5, 0x85, 0xc5, 0x85, 0xc5, 0x85, 0xc6, 0x86,
+    0xc7, 0x87, 0xc8, 0x88, 0xc8, 0x88, 0xc8, 0x88,
+    0xc8, 0x88, 0xc8, 0x88, 0xc9, 0x89, 0xc9, 0x89,
+    0xd2, 0x92, 0xd2, 0x92, 0xd2, 0x92, 0xd3, 0x93,
+    0xd3, 0x93, 0xd3, 0x93, 0xd3, 0x93, 0xd4, 0x94,
+    0xd4, 0x94, 0xd4, 0x94, 0xd5, 0x95, 0xd5, 0x95,
+    0xd5, 0x95, 0xd5, 0x95, 0xd6, 0x96, 0xd6, 0x96,
+    0xd6, 0x96, 0xd6, 0x96, 0xd7, 0x97, 0xd7, 0x97,
+    0xd9, 0x99, 0xd9, 0x99, 0xd9, 0x99, 0xd9, 0x99,
+    0xe2, 0xa2, 0xe2, 0xa2, 0xe2, 0xa2, 0xe2, 0xa2,
+    0xe2, 0xa2, 0xe3, 0xa3, 0xe3, 0xa3, 0xe3, 0xa3,
+    0xe3, 0xa3, 0xe4, 0xa4, 0xe4, 0xa4, 0xe4, 0xa4,
+    0xe4, 0xa4, 0xe4, 0xa4, 0xe5, 0xa5, 0xe5, 0xa5,
+    0xe6, 0xa6, 0xe6, 0xa6, 0xe6, 0xa6, 0xe6, 0xa6,
+    0xe6, 0xa6, 0xe7, 0xa7, 0xe7, 0xa7, 0xe8, 0xa8,
+    0xe9, 0xa9, 0xe9, 0xa9, 0xe9, 0xa9, 0x88, 0xa3,
+    0xa6, 0xa8, 0x3f, 0xa2, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc1, 0x81, 0xc1, 0x81, 0xc1, 0x81, 0xc1, 0x81,
+    0xc1, 0x81, 0xc1, 0x81, 0xc1, 0x81, 0xc1, 0x81,
+    0xc1, 0x81, 0xc1, 0x81, 0xc1, 0x81, 0xc1, 0x81,
+    0xc5, 0x85, 0xc5, 0x85, 0xc5, 0x85, 0xc5, 0x85,
+    0xc5, 0x85, 0xc5, 0x85, 0xc5, 0x85, 0xc5, 0x85,
+    0xc9, 0x89, 0xc9, 0x89, 0xd6, 0x96, 0xd6, 0x96,
+    0xd6, 0x96, 0xd6, 0x96, 0xd6, 0x96, 0xd6, 0x96,
+    0xd6, 0x96, 0xd6, 0x96, 0xd6, 0x96, 0xd6, 0x96,
+    0xd6, 0x96, 0xd6, 0x96, 0xe4, 0xa4, 0xe4, 0xa4,
+    0xe4, 0xa4, 0xe4, 0xa4, 0xe4, 0xa4, 0xe4, 0xa4,
+    0xe4, 0xa4, 0xe8, 0xa8, 0xe8, 0xa8, 0xe8, 0xa8,
+    0xe8, 0xa8, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xe8, 0x3f, 0xe8, 0x3f, 0xe8, 0x3f, 0xe8,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xbd, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc5, 0xc5, 0xc8, 0xc8, 0xc8, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc9, 0xc9, 0xc9, 0xc9, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe8, 0xe8, 0xe8, 0xe8, 0xd7, 0xbd, 0xbd, 0x79,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xd6, 0xd6, 0x3f, 0x3f, 0x3f, 0xbe, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
+    0x40, 0x40, 0x40, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x60, 0x3f, 0x60, 0x60, 0x60, 0x3f, 0x78,
+    0x79, 0x7d, 0x6b, 0x79, 0x7f, 0x7f, 0x6b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x4b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x40,
+    0x3f, 0x3f, 0xbe, 0x7f, 0x3f, 0x79, 0x3f, 0x3f,
+    0x3f, 0x4c, 0x6e, 0x3f, 0x5a, 0x3f, 0xbc, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x61, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x40,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x90, 0x89, 0x3f, 0x3f, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0x4e, 0x60, 0x7e, 0x4d, 0x5d, 0x95,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0x4e, 0x60, 0x7e, 0x4d, 0x5d, 0x3f,
+    0x81, 0x85, 0x96, 0xa7, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x4a, 0x3f, 0x3f, 0xb1, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0xc3, 0x3f, 0x3f, 0x3f, 0x3f, 0xc5,
+    0x3f, 0x3f, 0x87, 0xc8, 0xc8, 0xc8, 0x88, 0x88,
+    0xc9, 0xc9, 0xd3, 0x93, 0x3f, 0xd5, 0x3f, 0x3f,
+    0xd7, 0xd7, 0xd8, 0xd9, 0xd9, 0xd9, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xe9, 0x3f, 0x3f, 0x3f,
+    0xe9, 0x3f, 0xd2, 0xc1, 0xc2, 0xc3, 0x85, 0x85,
+    0xc5, 0xc6, 0x3f, 0xd4, 0x96, 0x41, 0x42, 0x43,
+    0x44, 0x89, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xc4, 0x84, 0x85,
+    0x89, 0x91, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc9, 0x3f, 0x3f, 0x3f, 0xe5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xe7, 0x3f, 0x3f, 0xd3, 0xc3, 0xc4, 0xd4,
+    0x89, 0x3f, 0x3f, 0x3f, 0xa5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa7, 0x3f, 0x3f, 0x93, 0x83, 0x84, 0x94,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4c, 0xb0, 0x6e, 0xa5, 0x60, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x4c, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x60, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xd6, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x60, 0x8f, 0x3f, 0x61, 0xe0, 0x5c,
+    0x90, 0x3f, 0xe5, 0x3f, 0x3f, 0x3f, 0x3f, 0xd3,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x4f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x95, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xa1, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa1, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa1, 0xa1, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x8a, 0x8b, 0x3f, 0x3f, 0x4c, 0x6e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb3, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0xb0, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x4c, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
+    0xf9, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xc1, 0xc2,
+    0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xd1,
+    0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9,
+    0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
+    0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88,
+    0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+    0xa8, 0xa9, 0xf0, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x60, 0x60, 0x4f, 0x4f, 0x60, 0x60, 0x6a, 0x6a,
+    0x60, 0x60, 0x6a, 0x6a, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x5f, 0x5f, 0x5f, 0x5f, 0xd3, 0xd3, 0xd3, 0xd3,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0xe3, 0xe3, 0xe3, 0xe3,
+    0xe3, 0xe3, 0xe3, 0xe3, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x60, 0x60, 0x6a, 0x6a,
+    0x7e, 0x4f, 0x4e, 0x4e, 0x4e, 0x5f, 0x5f, 0x5f,
+    0xd3, 0xd3, 0xd3, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0xe3, 0xe3, 0xe3, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x61, 0xe0, 0xe7, 0x60, 0x4f, 0x60, 0x4f,
+    0x60, 0x4f, 0x60, 0x4f, 0x60, 0x4f, 0x60, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0xd6, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xd6,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x40, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4c, 0x6e, 0x8a, 0x8b, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xba, 0xbb, 0x3f, 0x7f, 0x7f, 0x6b,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x51, 0x3f, 0x3f,
+    0x62, 0x41, 0x44, 0x45, 0x53, 0x54, 0x55, 0x68,
+    0x71, 0x4e, 0x69, 0x69, 0x69, 0x69, 0x41, 0x41,
+    0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x3f,
+    0x49, 0x51, 0x52, 0x53, 0x54, 0x3f, 0x56, 0x3f,
+    0x58, 0x59, 0x3f, 0x63, 0x64, 0x3f, 0x66, 0x67,
+    0x68, 0x69, 0x71, 0x46, 0x42, 0x53, 0x64, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xbc, 0xbc, 0xbc, 0xbc, 0x6d, 0x6d, 0x6d,
+    0x6b, 0x3f, 0x4b, 0x3f, 0x5e, 0x7a, 0x6f, 0x5a,
+    0x60, 0x4d, 0x5d, 0xc0, 0xd0, 0x3f, 0x3f, 0x7b,
+    0x50, 0x5c, 0x4e, 0x60, 0x4c, 0x6e, 0x7e, 0x3f,
+    0xe0, 0x5b, 0x6c, 0x7c, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
+    0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
+    0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
+    0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
+    0xe7, 0xe8, 0xe9, 0xba, 0xe0, 0xbb, 0xb0, 0x6d,
+    0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
+    0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
+    0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4a, 0xb1, 0x5f, 0xbc, 0x6a, 0xb2, 0x3f, 0x3f,
+    0x4f, 0x4c, 0xb0, 0x6e, 0xa5, 0x3f, 0xd6, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1200, 0x0400, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x0500, 0x0600, 0x0700,
+    0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x0d00, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x0e00, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x0f00, 0x1200, 0x1200, 0x1000, 0x1100
+};
+
+const struct sbcs_table cptable_424 =
+{
+    { 424, 1, 0x003f, 0x003f, "IBM EBCDIC Hebrew" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_437.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_437.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_437.c	(revision 16410)
@@ -0,0 +1,717 @@
+/* code page 437 (OEM United States) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP437.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[512] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7,
+    0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5,
+    0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9,
+    0x00ff, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0x0192,
+    0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba,
+    0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
+    0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
+    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
+    0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
+    0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4,
+    0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229,
+    0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248,
+    0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0,
+    /* glyphs */
+    0x0000, 0x263a, 0x263b, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022,
+    0x25d8, 0x25cb, 0x25d9, 0x2642, 0x2640, 0x266a, 0x266b, 0x263c,
+    0x25ba, 0x25c4, 0x2195, 0x203c, 0x00b6, 0x00a7, 0x25ac, 0x21a8,
+    0x2191, 0x2193, 0x2192, 0x2190, 0x221f, 0x2194, 0x25b2, 0x25bc,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2302,
+    0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7,
+    0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5,
+    0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9,
+    0x00ff, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0x0192,
+    0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba,
+    0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
+    0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
+    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
+    0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
+    0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4,
+    0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229,
+    0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248,
+    0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xff, 0xad, 0x9b, 0x9c, 0x3f, 0x9d, 0x7c, 0x3f,
+    0x22, 0x63, 0xa6, 0xae, 0xaa, 0x2d, 0x72, 0x2d,
+    0xf8, 0xf1, 0xfd, 0x33, 0x27, 0xe6, 0x3f, 0xfa,
+    0x2c, 0x31, 0xa7, 0xaf, 0xac, 0xab, 0x3f, 0xa8,
+    0x41, 0x41, 0x41, 0x41, 0x8e, 0x8f, 0x92, 0x80,
+    0x45, 0x90, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0xa5, 0x4f, 0x4f, 0x4f, 0x4f, 0x99, 0x78,
+    0x4f, 0x55, 0x55, 0x55, 0x9a, 0x59, 0x3f, 0xe1,
+    0x85, 0xa0, 0x83, 0x61, 0x84, 0x86, 0x91, 0x87,
+    0x8a, 0x82, 0x88, 0x89, 0x8d, 0xa1, 0x8c, 0x8b,
+    0x64, 0xa4, 0x95, 0xa2, 0x93, 0x6f, 0x94, 0xf6,
+    0x6f, 0x97, 0xa3, 0x96, 0x81, 0x79, 0x3f, 0x98,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x9f, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb3, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x9a, 0x81, 0x9a,
+    0x81, 0x9a, 0x81, 0x9a, 0x81, 0x3f, 0x8e, 0x84,
+    0x41, 0x61, 0x92, 0x91, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x8f, 0x86, 0x92, 0x91, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x99, 0x94, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0x2d, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xf8, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0x2d, 0x2d, 0x3f, 0x3f,
+    0x22, 0x3f, 0xf8, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0x22, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x22, 0x41, 0xfa,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0xea,
+    0x3f, 0x41, 0x42, 0xe2, 0x3f, 0x45, 0x5a, 0x48,
+    0xe9, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0xe4, 0x54, 0x59, 0xe8, 0x58,
+    0x3f, 0xea, 0x49, 0x59, 0xe0, 0xee, 0x3f, 0x3f,
+    0x3f, 0xe0, 0xe1, 0x3f, 0xeb, 0xee, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xe6, 0x3f, 0x3f, 0x3f,
+    0xe3, 0x3f, 0x3f, 0xe5, 0xe7, 0x3f, 0xed, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe1, 0x3f, 0x59, 0x59, 0x59, 0xed, 0xe3, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xe9, 0xee, 0x3f, 0x3f,
+    0x3f, 0xe4, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x92, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xe1, 0x3f, 0xeb,
+    0xed, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xe1, 0x3f,
+    0x3f, 0xed, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x80, 0x87, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x8b,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x83, 0x41, 0x83,
+    0x41, 0x83, 0x41, 0x83, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x88,
+    0x45, 0x88, 0x45, 0x88, 0x45, 0x88, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x93, 0x4f, 0x93, 0x4f, 0x93, 0x4f, 0x93,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea,
+    0xe0, 0xe0, 0xee, 0xee, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea,
+    0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x3f, 0xe0, 0xe0,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x22, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0x22, 0x22, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0xea, 0xea, 0xea, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0xf9, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x27, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf8, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0xfc,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x9b, 0x3f, 0x3f, 0x9c, 0x3f, 0x3f, 0x9e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0xea, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x8f, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0xe3, 0x3f, 0xe2, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xf1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xf8, 0xf9, 0xfb, 0x3f, 0x3f, 0x3f, 0xec, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xef, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf7, 0xf7, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0xf0, 0xf0, 0xf0, 0xf3, 0xf2, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xae, 0xaf, 0x3f, 0x3f, 0x3c, 0x3e,
+    0xf3, 0xf2, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xfa, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa9, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf4, 0xf5, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0xc4, 0xc4, 0xb3, 0xb3, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0xda, 0xda, 0xda, 0xda,
+    0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0,
+    0xd9, 0xd9, 0xd9, 0xd9, 0xc3, 0xc3, 0xc3, 0xc3,
+    0xc3, 0xc3, 0xc3, 0xc3, 0xb4, 0xb4, 0xb4, 0xb4,
+    0xb4, 0xb4, 0xb4, 0xb4, 0xc2, 0xc2, 0xc2, 0xc2,
+    0xc2, 0xc2, 0xc2, 0xc2, 0xc1, 0xc1, 0xc1, 0xc1,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0x2d, 0x2d, 0x7c, 0x7c,
+    0xcd, 0xba, 0xd5, 0xd6, 0xc9, 0xb8, 0xb7, 0xbb,
+    0xd4, 0xd3, 0xc8, 0xbe, 0xbd, 0xbc, 0xc6, 0xc7,
+    0xcc, 0xb5, 0xb6, 0xb9, 0xd1, 0xd2, 0xcb, 0xcf,
+    0xd0, 0xca, 0xd8, 0xd7, 0xce, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0xdf, 0x3f, 0x3f, 0x3f, 0xdc, 0x3f, 0x3f, 0x3f,
+    0xdb, 0x3f, 0x3f, 0x3f, 0xdd, 0x3f, 0x3f, 0x3f,
+    0xde, 0xb0, 0xb1, 0xb2, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xfe, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0xae, 0xaf, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2d, 0x2d, 0x2d, 0x2d, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x9b, 0x9c, 0xaa, 0x2d, 0x7c, 0x9d, 0x3f, 0x3f,
+    0xb3, 0x3c, 0x5e, 0x3e, 0x76, 0xfe, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_437 =
+{
+    { 437, 1, 0x003f, 0x003f, "OEM United States" },
+    cp2uni,
+    cp2uni + 256,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_500.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_500.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_500.c	(revision 16410)
@@ -0,0 +1,684 @@
+/* code page 500 (IBM EBCDIC International) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/EBCDIC/CP500.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+    0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+    0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+    0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+    0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5,
+    0x00e7, 0x00f1, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+    0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+    0x00ec, 0x00df, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+    0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5,
+    0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+    0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+    0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+    0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1,
+    0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+    0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4,
+    0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+    0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae,
+    0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc,
+    0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7,
+    0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5,
+    0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+    0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff,
+    0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+    0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
+    0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26,
+    0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x40, 0x4f, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
+    0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
+    0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
+    0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
+    0xe7, 0xe8, 0xe9, 0x4a, 0xe0, 0x5a, 0x5f, 0x6d,
+    0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
+    0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
+    0xa7, 0xa8, 0xa9, 0xc0, 0xbb, 0xd0, 0xa1, 0x07,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b,
+    0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08,
+    0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff,
+    0x41, 0xaa, 0xb0, 0xb1, 0x9f, 0xb2, 0x6a, 0xb5,
+    0xbd, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xbc,
+    0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3,
+    0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab,
+    0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68,
+    0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77,
+    0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf,
+    0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0xae, 0x59,
+    0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48,
+    0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57,
+    0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1,
+    0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf,
+    /* 0x0100 .. 0x01ff */
+    0xc1, 0x81, 0xc1, 0x81, 0xc1, 0x81, 0xc3, 0x83,
+    0xc3, 0x83, 0xc3, 0x83, 0xc3, 0x83, 0xc4, 0x84,
+    0xac, 0x84, 0xc5, 0x85, 0xc5, 0x85, 0xc5, 0x85,
+    0xc5, 0x85, 0xc5, 0x85, 0xc7, 0x87, 0xc7, 0x87,
+    0xc7, 0x87, 0xc7, 0x87, 0xc8, 0x88, 0xc8, 0x88,
+    0xc9, 0x89, 0xc9, 0x89, 0xc9, 0x89, 0xc9, 0x89,
+    0xc9, 0x89, 0x3f, 0x3f, 0xd1, 0x91, 0xd2, 0x92,
+    0x3f, 0xd3, 0x93, 0xd3, 0x93, 0xd3, 0x93, 0x3f,
+    0x3f, 0xd3, 0x93, 0xd5, 0x95, 0xd5, 0x95, 0xd5,
+    0x95, 0x3f, 0x3f, 0x3f, 0xd6, 0x96, 0xd6, 0x96,
+    0xd6, 0x96, 0xd6, 0x96, 0xd9, 0x99, 0xd9, 0x99,
+    0xd9, 0x99, 0xe2, 0xa2, 0xe2, 0xa2, 0xe2, 0xa2,
+    0xe2, 0xa2, 0xe3, 0xa3, 0xe3, 0xa3, 0xe3, 0xa3,
+    0xe4, 0xa4, 0xe4, 0xa4, 0xe4, 0xa4, 0xe4, 0xa4,
+    0xe4, 0xa4, 0xe4, 0xa4, 0xe6, 0xa6, 0xe8, 0xa8,
+    0xe8, 0xe9, 0xa9, 0xe9, 0xa9, 0xe9, 0xa9, 0xa2,
+    0x82, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xac, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc5, 0xc6, 0x86, 0x3f, 0x3f, 0x3f, 0x3f, 0xc9,
+    0x3f, 0x3f, 0x93, 0x3f, 0x3f, 0x3f, 0x3f, 0xd6,
+    0xd6, 0x96, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f, 0xe3, 0xe4,
+    0xa4, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xa9, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xbb, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xc1, 0x81, 0xc9,
+    0x89, 0xd6, 0x96, 0xe4, 0xa4, 0xfc, 0xdc, 0xfc,
+    0xdc, 0xfc, 0xdc, 0xfc, 0xdc, 0x3f, 0x63, 0x43,
+    0xc1, 0x81, 0x9e, 0x9c, 0xc7, 0x87, 0xc7, 0x87,
+    0xd2, 0x92, 0xd6, 0x96, 0xd6, 0x96, 0x3f, 0x3f,
+    0x91, 0x3f, 0x3f, 0x3f, 0xc7, 0x87, 0x3f, 0x3f,
+    0xd5, 0x95, 0x67, 0x47, 0x9e, 0x9c, 0x80, 0x70,
+    /* 0x0200 .. 0x02ff */
+    0xc1, 0x81, 0xc1, 0x81, 0xc5, 0x85, 0xc5, 0x85,
+    0xc9, 0x89, 0xc9, 0x89, 0xd6, 0x96, 0xd6, 0x96,
+    0xd9, 0x99, 0xd9, 0x99, 0xe4, 0xa4, 0xe4, 0xa4,
+    0xe2, 0xa2, 0xe3, 0xa3, 0x3f, 0x3f, 0xc8, 0x88,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xc1, 0x81,
+    0xc5, 0x85, 0xec, 0xcc, 0xef, 0xcf, 0xd6, 0x96,
+    0xd6, 0x96, 0xe8, 0xa8, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x87, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x88, 0x3f, 0x91, 0x99, 0x3f, 0x3f, 0x3f, 0xa6,
+    0xa8, 0xbe, 0x7f, 0x79, 0x7d, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5f, 0x3f, 0x5f, 0xa5,
+    0x7d, 0xbc, 0xbe, 0x79, 0x3f, 0x6d, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x90, 0x3f, 0xa1, 0x7f, 0x3f, 0x3f,
+    0x3f, 0x93, 0xa2, 0xa7, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x79, 0xbe, 0x5f, 0xa1, 0xbc, 0xbc, 0x3f, 0x3f,
+    0xbd, 0x3f, 0x90, 0x7f, 0xa5, 0x3f, 0x7f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x9d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6d, 0x6d, 0x6d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x79, 0xbe, 0x3f, 0x3f, 0xbd, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xbe, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xbe, 0xbd, 0xc1, 0xb3,
+    0xc5, 0xc8, 0xc9, 0x3f, 0xd6, 0x3f, 0xe8, 0x3f,
+    0x3f, 0xc1, 0xc2, 0x3f, 0x3f, 0xc5, 0xe9, 0xc8,
+    0x3f, 0xc9, 0xd2, 0x3f, 0xd4, 0xd5, 0x3f, 0xd6,
+    0x3f, 0xd7, 0x3f, 0x3f, 0xe3, 0xe8, 0x3f, 0xe7,
+    0x3f, 0x3f, 0xc9, 0xe8, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x59, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xa0, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x3f, 0xe8, 0xe8, 0xe8, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xc1, 0x9e, 0xc2, 0x3f,
+    0xc4, 0xc5, 0x3f, 0xc7, 0xc8, 0xc9, 0xd1, 0xd2,
+    0xd3, 0xd4, 0xd5, 0x3f, 0xd6, 0x3f, 0xd7, 0xd9,
+    0xe3, 0xe4, 0xe6, 0x81, 0x3f, 0x3f, 0x3f, 0x82,
+    0x84, 0x85, 0x3f, 0x3f, 0x3f, 0x87, 0x3f, 0x92,
+    0x94, 0x3f, 0x96, 0x3f, 0x3f, 0x3f, 0x97, 0xa3,
+    0xa4, 0x3f, 0x3f, 0xa5, 0x3f, 0x59, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x89, 0x99, 0xa4, 0xa5, 0x59, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x83, 0x3f, 0x8c, 0x3f,
+    0x86, 0x3f, 0x87, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0xa9, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0xc1, 0x81, 0xc2, 0x82, 0xc2, 0x82, 0xc2, 0x82,
+    0x68, 0x48, 0xc4, 0x84, 0xc4, 0x84, 0xc4, 0x84,
+    0xc4, 0x84, 0xc4, 0x84, 0xc5, 0x85, 0xc5, 0x85,
+    0xc5, 0x85, 0xc5, 0x85, 0xc5, 0x85, 0xc6, 0x86,
+    0xc7, 0x87, 0xc8, 0x88, 0xc8, 0x88, 0xc8, 0x88,
+    0xc8, 0x88, 0xc8, 0x88, 0xc9, 0x89, 0x77, 0x57,
+    0xd2, 0x92, 0xd2, 0x92, 0xd2, 0x92, 0xd3, 0x93,
+    0xd3, 0x93, 0xd3, 0x93, 0xd3, 0x93, 0xd4, 0x94,
+    0xd4, 0x94, 0xd4, 0x94, 0xd5, 0x95, 0xd5, 0x95,
+    0xd5, 0x95, 0xd5, 0x95, 0xef, 0xcf, 0xef, 0xcf,
+    0xd6, 0x96, 0xd6, 0x96, 0xd7, 0x97, 0xd7, 0x97,
+    0xd9, 0x99, 0xd9, 0x99, 0xd9, 0x99, 0xd9, 0x99,
+    0xe2, 0xa2, 0xe2, 0xa2, 0xe2, 0xa2, 0xe2, 0xa2,
+    0xe2, 0xa2, 0xe3, 0xa3, 0xe3, 0xa3, 0xe3, 0xa3,
+    0xe3, 0xa3, 0xe4, 0xa4, 0xe4, 0xa4, 0xe4, 0xa4,
+    0xe4, 0xa4, 0xe4, 0xa4, 0xe5, 0xa5, 0xe5, 0xa5,
+    0xe6, 0xa6, 0xe6, 0xa6, 0xe6, 0xa6, 0xe6, 0xa6,
+    0xe6, 0xa6, 0xe7, 0xa7, 0xe7, 0xa7, 0xe8, 0xa8,
+    0xe9, 0xa9, 0xe9, 0xa9, 0xe9, 0xa9, 0x88, 0xa3,
+    0xa6, 0xa8, 0x3f, 0xa2, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc1, 0x81, 0xc1, 0x81, 0x62, 0x42, 0x62, 0x42,
+    0x62, 0x42, 0x62, 0x42, 0xc1, 0x81, 0xc1, 0x81,
+    0xc1, 0x81, 0xc1, 0x81, 0xc1, 0x81, 0xc1, 0x81,
+    0xc5, 0x85, 0xc5, 0x85, 0xc5, 0x85, 0x72, 0x52,
+    0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0xc5, 0x85,
+    0xc9, 0x89, 0xc9, 0x89, 0xd6, 0x96, 0xd6, 0x96,
+    0xeb, 0xcb, 0xeb, 0xcb, 0xeb, 0xcb, 0xeb, 0xcb,
+    0xd6, 0x96, 0xd6, 0x96, 0xd6, 0x96, 0xd6, 0x96,
+    0xd6, 0x96, 0xd6, 0x96, 0xe4, 0xa4, 0xe4, 0xa4,
+    0xe4, 0xa4, 0xe4, 0xa4, 0xe4, 0xa4, 0xe4, 0xa4,
+    0xe4, 0xa4, 0xe8, 0xa8, 0xe8, 0xa8, 0xe8, 0xa8,
+    0xe8, 0xa8, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xe8, 0x3f, 0xe8, 0x3f, 0xe8, 0x3f, 0xe8,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xbd, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc5, 0xc5, 0xc8, 0xc8, 0xc8, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc9, 0xc9, 0xc9, 0xc9, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe8, 0xe8, 0xe8, 0xe8, 0xd7, 0xbd, 0xbd, 0x79,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xd6, 0xd6, 0x3f, 0x3f, 0x3f, 0xbe, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
+    0x40, 0x40, 0x40, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x60, 0x3f, 0x60, 0x60, 0x60, 0x3f, 0x6d,
+    0x79, 0x7d, 0x6b, 0x79, 0x7f, 0x7f, 0x6b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x4b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x40,
+    0x3f, 0x3f, 0xbe, 0x7f, 0x3f, 0x79, 0x3f, 0x3f,
+    0x3f, 0x4c, 0x6e, 0x3f, 0x4f, 0x3f, 0xbc, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x61, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x40,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x90, 0x89, 0x3f, 0x3f, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0x4e, 0x60, 0x7e, 0x4d, 0x5d, 0x95,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0x4e, 0x60, 0x7e, 0x4d, 0x5d, 0x3f,
+    0x81, 0x85, 0x96, 0xa7, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xb0, 0x3f, 0x3f, 0xb1, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0xc3, 0x3f, 0x3f, 0x3f, 0x3f, 0xc5,
+    0x3f, 0x3f, 0x87, 0xc8, 0xc8, 0xc8, 0x88, 0x88,
+    0xc9, 0xc9, 0xd3, 0x93, 0x3f, 0xd5, 0x3f, 0x3f,
+    0xd7, 0xd7, 0xd8, 0xd9, 0xd9, 0xd9, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xe9, 0x3f, 0x3f, 0x3f,
+    0xe9, 0x3f, 0xd2, 0x67, 0xc2, 0xc3, 0x85, 0x85,
+    0xc5, 0xc6, 0x3f, 0xd4, 0x96, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x89, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xc4, 0x84, 0x85,
+    0x89, 0x91, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc9, 0x3f, 0x3f, 0x3f, 0xe5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xe7, 0x3f, 0x3f, 0xd3, 0xc3, 0xc4, 0xd4,
+    0x89, 0x3f, 0x3f, 0x3f, 0xa5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa7, 0x3f, 0x3f, 0x93, 0x83, 0x84, 0x94,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4c, 0x5f, 0x6e, 0xa5, 0x60, 0xbb, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x4c, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x60, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x80, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x60, 0x8f, 0x3f, 0x61, 0xe0, 0x5c,
+    0x90, 0x3f, 0xe5, 0x3f, 0x3f, 0x3f, 0x3f, 0xd3,
+    0x3f, 0x3f, 0x3f, 0xbb, 0xbb, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x95, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xa1, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa1, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa1, 0xa1, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x8a, 0x8b, 0x3f, 0x3f, 0x4c, 0x6e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xb3, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x4c, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
+    0xf9, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xc1, 0xc2,
+    0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xd1,
+    0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9,
+    0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
+    0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88,
+    0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+    0xa8, 0xa9, 0xf0, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x60, 0x60, 0xbb, 0xbb, 0x60, 0x60, 0x6a, 0x6a,
+    0x60, 0x60, 0x6a, 0x6a, 0x4e, 0x4e, 0x4e, 0x4e,
+    0xba, 0xba, 0xba, 0xba, 0xd3, 0xd3, 0xd3, 0xd3,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0xe3, 0xe3, 0xe3, 0xe3,
+    0xe3, 0xe3, 0xe3, 0xe3, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x60, 0x60, 0x6a, 0x6a,
+    0x7e, 0xbb, 0x4e, 0x4e, 0x4e, 0xba, 0xba, 0xba,
+    0xd3, 0xd3, 0xd3, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0xe3, 0xe3, 0xe3, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x61, 0xe0, 0xe7, 0x60, 0xbb, 0x60, 0xbb,
+    0x60, 0xbb, 0x60, 0xbb, 0x60, 0xbb, 0x60, 0xbb,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0xd6, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xd6,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x40, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4c, 0x6e, 0x8a, 0x8b, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x4a, 0x5a, 0x3f, 0x7f, 0x7f, 0x6b,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x4e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xbc, 0xbc, 0xbc, 0xbc, 0x6d, 0x6d, 0x6d,
+    0x6b, 0x3f, 0x4b, 0x3f, 0x5e, 0x7a, 0x6f, 0x4f,
+    0x60, 0x4d, 0x5d, 0xc0, 0xd0, 0x3f, 0x3f, 0x7b,
+    0x50, 0x5c, 0x4e, 0x60, 0x4c, 0x6e, 0x7e, 0x3f,
+    0xe0, 0x5b, 0x6c, 0x7c, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x4f, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
+    0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
+    0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
+    0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
+    0xe7, 0xe8, 0xe9, 0x4a, 0xe0, 0x5a, 0x5f, 0x6d,
+    0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
+    0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
+    0xa7, 0xa8, 0xa9, 0xc0, 0xbb, 0xd0, 0xa1, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb0, 0xb1, 0xba, 0xbc, 0x6a, 0xb2, 0x3f, 0x3f,
+    0xbb, 0x4c, 0x5f, 0x6e, 0xa5, 0x3f, 0xd6, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_500 =
+{
+    { 500, 1, 0x003f, 0x003f, "IBM EBCDIC International" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_737.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_737.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_737.c	(revision 16410)
@@ -0,0 +1,717 @@
+/* code page 737 (OEM Greek 437G) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP737.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[512] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
+    0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
+    0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
+    0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8,
+    0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0,
+    0x03c1, 0x03c3, 0x03c2, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
+    0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
+    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
+    0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
+    0x03c9, 0x03ac, 0x03ad, 0x03ae, 0x03ca, 0x03af, 0x03cc, 0x03cd,
+    0x03cb, 0x03ce, 0x0386, 0x0388, 0x0389, 0x038a, 0x038c, 0x038e,
+    0x038f, 0x00b1, 0x2265, 0x2264, 0x03aa, 0x03ab, 0x00f7, 0x2248,
+    0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0,
+    /* glyphs */
+    0x0000, 0x263a, 0x263b, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022,
+    0x25d8, 0x25cb, 0x25d9, 0x2642, 0x2640, 0x266a, 0x266b, 0x263c,
+    0x25ba, 0x25c4, 0x2195, 0x203c, 0x00b6, 0x00a7, 0x25ac, 0x21a8,
+    0x2191, 0x2193, 0x2192, 0x2190, 0x221f, 0x2194, 0x25b2, 0x25bc,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2302,
+    0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
+    0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
+    0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
+    0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8,
+    0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0,
+    0x03c1, 0x03c3, 0x03c2, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
+    0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
+    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
+    0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
+    0x03c9, 0x03ac, 0x03ad, 0x03ae, 0x03ca, 0x03af, 0x03cc, 0x03cd,
+    0x03cb, 0x03ce, 0x0386, 0x0388, 0x0389, 0x038a, 0x038c, 0x038e,
+    0x038f, 0x00b1, 0x2265, 0x2264, 0x03aa, 0x03ab, 0x00f7, 0x2248,
+    0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xff, 0x21, 0x63, 0x4c, 0x3f, 0x59, 0x7c, 0x3f,
+    0x22, 0x63, 0x61, 0x3c, 0x3f, 0x2d, 0x72, 0x2d,
+    0xf8, 0xf1, 0xfd, 0x33, 0x27, 0xa3, 0x3f, 0xfa,
+    0x2c, 0x31, 0x6f, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43,
+    0x45, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0x4e, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x78,
+    0x4f, 0x55, 0x55, 0x55, 0x55, 0x59, 0x3f, 0x99,
+    0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x63,
+    0x65, 0x65, 0x65, 0x65, 0x69, 0x69, 0x69, 0x69,
+    0x64, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0xf6,
+    0x6f, 0x75, 0x75, 0x75, 0x75, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb3, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75, 0x55,
+    0x75, 0x55, 0x75, 0x55, 0x75, 0x3f, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0x2d, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xf8, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0x2d, 0x2d, 0x3f, 0x3f,
+    0x22, 0x3f, 0xf8, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0x22, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x22, 0xea, 0xfa,
+    0xeb, 0xec, 0xed, 0x3f, 0xee, 0x3f, 0xef, 0xf0,
+    0xe4, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86,
+    0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e,
+    0x8f, 0x90, 0x3f, 0x91, 0x92, 0x93, 0x94, 0x95,
+    0x96, 0x97, 0xf4, 0xf5, 0xe1, 0xe2, 0xe3, 0xe5,
+    0xe8, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e,
+    0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
+    0xa7, 0xa8, 0xaa, 0xa9, 0xab, 0xac, 0xad, 0xae,
+    0xaf, 0xe0, 0xe4, 0xe8, 0xe6, 0xe7, 0xe9, 0x3f,
+    0x99, 0x9f, 0x93, 0x93, 0x93, 0xad, 0xa7, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa1, 0xa8, 0xaa, 0x3f, 0x87, 0x9c, 0x3f, 0x3f,
+    0x3f, 0x91, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0x99, 0x9a, 0x9b,
+    0xad, 0xae, 0x69, 0x72, 0x75, 0x76, 0x99, 0x9a,
+    0xa8, 0xad, 0xae, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x9f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x63, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
+    0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
+    0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x3f, 0x3f,
+    0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x3f, 0x3f,
+    0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e,
+    0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
+    0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0,
+    0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
+    0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0x3f, 0x3f,
+    0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x3f, 0x3f,
+    0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac,
+    0x3f, 0x93, 0x3f, 0x93, 0x3f, 0x93, 0x3f, 0x93,
+    0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
+    0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
+    0x98, 0xe1, 0x9c, 0xe2, 0x9e, 0xe3, 0xa0, 0xe5,
+    0xa6, 0xe6, 0xac, 0xe7, 0xe0, 0xe9, 0x3f, 0x3f,
+    0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
+    0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
+    0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e,
+    0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
+    0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
+    0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
+    0x98, 0x98, 0x98, 0x98, 0xe1, 0x3f, 0x98, 0x98,
+    0x80, 0x80, 0x80, 0xea, 0x80, 0x3f, 0xa0, 0x3f,
+    0x3f, 0x22, 0x9e, 0x9e, 0xe3, 0x3f, 0x9e, 0x9e,
+    0x84, 0xeb, 0x86, 0xec, 0x86, 0x3f, 0x3f, 0x3f,
+    0xa0, 0xa0, 0xe4, 0xe4, 0x3f, 0x3f, 0xa0, 0xe4,
+    0x88, 0x88, 0x88, 0xed, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xac, 0xac, 0xe8, 0xe8, 0xa8, 0xa8, 0xac, 0xe8,
+    0x93, 0x93, 0x93, 0xef, 0x90, 0x22, 0x22, 0x60,
+    0x3f, 0x3f, 0xe0, 0xe0, 0xe9, 0x3f, 0xe0, 0xe0,
+    0x8e, 0xee, 0x97, 0xf0, 0x97, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0xf9, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x27, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf8, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0xfc,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x63, 0x3f, 0x3f, 0x4c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x97, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0xa7, 0x9a, 0x82, 0x8f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xf1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xf8, 0xf9, 0xfb, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf7, 0xf7, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0xf3, 0xf2, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3c, 0x3e,
+    0xf3, 0xf2, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xfa, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0xc4, 0xc4, 0xb3, 0xb3, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0xda, 0xda, 0xda, 0xda,
+    0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0,
+    0xd9, 0xd9, 0xd9, 0xd9, 0xc3, 0xc3, 0xc3, 0xc3,
+    0xc3, 0xc3, 0xc3, 0xc3, 0xb4, 0xb4, 0xb4, 0xb4,
+    0xb4, 0xb4, 0xb4, 0xb4, 0xc2, 0xc2, 0xc2, 0xc2,
+    0xc2, 0xc2, 0xc2, 0xc2, 0xc1, 0xc1, 0xc1, 0xc1,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0x2d, 0x2d, 0x7c, 0x7c,
+    0xcd, 0xba, 0xd5, 0xd6, 0xc9, 0xb8, 0xb7, 0xbb,
+    0xd4, 0xd3, 0xc8, 0xbe, 0xbd, 0xbc, 0xc6, 0xc7,
+    0xcc, 0xb5, 0xb6, 0xb9, 0xd1, 0xd2, 0xcb, 0xcf,
+    0xd0, 0xca, 0xd8, 0xd7, 0xce, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0xdf, 0x3f, 0x3f, 0x3f, 0xdc, 0x3f, 0x3f, 0x3f,
+    0xdb, 0x3f, 0x3f, 0x3f, 0xdd, 0x3f, 0x3f, 0x3f,
+    0xde, 0xb0, 0xb1, 0xb2, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xfe, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2d, 0x2d, 0x2d, 0x2d, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x63, 0x4c, 0x3f, 0x2d, 0x7c, 0x59, 0x3f, 0x3f,
+    0xb3, 0x3c, 0x5e, 0x3e, 0x76, 0xfe, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_737 =
+{
+    { 737, 1, 0x003f, 0x003f, "OEM Greek 437G" },
+    cp2uni,
+    cp2uni + 256,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_775.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_775.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_775.c	(revision 16410)
@@ -0,0 +1,717 @@
+/* code page 775 (OEM Baltic) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP775.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[512] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0106, 0x00fc, 0x00e9, 0x0101, 0x00e4, 0x0123, 0x00e5, 0x0107,
+    0x0142, 0x0113, 0x0156, 0x0157, 0x012b, 0x0179, 0x00c4, 0x00c5,
+    0x00c9, 0x00e6, 0x00c6, 0x014d, 0x00f6, 0x0122, 0x00a2, 0x015a,
+    0x015b, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x00d7, 0x00a4,
+    0x0100, 0x012a, 0x00f3, 0x017b, 0x017c, 0x017a, 0x201d, 0x00a6,
+    0x00a9, 0x00ae, 0x00ac, 0x00bd, 0x00bc, 0x0141, 0x00ab, 0x00bb,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x0104, 0x010c, 0x0118,
+    0x0116, 0x2563, 0x2551, 0x2557, 0x255d, 0x012e, 0x0160, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x0172, 0x016a,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x017d,
+    0x0105, 0x010d, 0x0119, 0x0117, 0x012f, 0x0161, 0x0173, 0x016b,
+    0x017e, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
+    0x00d3, 0x00df, 0x014c, 0x0143, 0x00f5, 0x00d5, 0x00b5, 0x0144,
+    0x0136, 0x0137, 0x013b, 0x013c, 0x0146, 0x0112, 0x0145, 0x2019,
+    0x00ad, 0x00b1, 0x201c, 0x00be, 0x00b6, 0x00a7, 0x00f7, 0x201e,
+    0x00b0, 0x2219, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0,
+    /* glyphs */
+    0x0000, 0x263a, 0x263b, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022,
+    0x25d8, 0x25cb, 0x25d9, 0x2642, 0x2640, 0x266a, 0x266b, 0x263c,
+    0x25ba, 0x25c4, 0x2195, 0x203c, 0x00b6, 0x00a7, 0x25ac, 0x21a8,
+    0x2191, 0x2193, 0x2192, 0x2190, 0x221f, 0x2194, 0x25b2, 0x25bc,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2302,
+    0x0106, 0x00fc, 0x00e9, 0x0101, 0x00e4, 0x0123, 0x00e5, 0x0107,
+    0x0142, 0x0113, 0x0156, 0x0157, 0x012b, 0x0179, 0x00c4, 0x00c5,
+    0x00c9, 0x00e6, 0x00c6, 0x014d, 0x00f6, 0x0122, 0x00a2, 0x015a,
+    0x015b, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x00d7, 0x00a4,
+    0x0100, 0x012a, 0x00f3, 0x017b, 0x017c, 0x017a, 0x201d, 0x00a6,
+    0x00a9, 0x00ae, 0x00ac, 0x00bd, 0x00bc, 0x0141, 0x00ab, 0x00bb,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x0104, 0x010c, 0x0118,
+    0x0116, 0x2563, 0x2551, 0x2557, 0x255d, 0x012e, 0x0160, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x0172, 0x016a,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x017d,
+    0x0105, 0x010d, 0x0119, 0x0117, 0x012f, 0x0161, 0x0173, 0x016b,
+    0x017e, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
+    0x00d3, 0x00df, 0x014c, 0x0143, 0x00f5, 0x00d5, 0x00b5, 0x0144,
+    0x0136, 0x0137, 0x013b, 0x013c, 0x0146, 0x0112, 0x0145, 0x2019,
+    0x00ad, 0x00b1, 0x201c, 0x00be, 0x00b6, 0x00a7, 0x00f7, 0x201e,
+    0x00b0, 0x2219, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xff, 0x21, 0x96, 0x9c, 0x9f, 0x59, 0xa7, 0xf5,
+    0x22, 0xa8, 0x61, 0xae, 0xaa, 0xf0, 0xa9, 0x2d,
+    0xf8, 0xf1, 0xfd, 0xfc, 0x27, 0xe6, 0xf4, 0xfa,
+    0x2c, 0xfb, 0x6f, 0xaf, 0xac, 0xab, 0xf3, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x8e, 0x8f, 0x92, 0x43,
+    0x45, 0x90, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0x4e, 0x4f, 0xe0, 0x4f, 0xe5, 0x99, 0x9e,
+    0x9d, 0x55, 0x55, 0x55, 0x9a, 0x59, 0x3f, 0xe1,
+    0x61, 0x61, 0x61, 0x61, 0x84, 0x86, 0x91, 0x63,
+    0x65, 0x82, 0x65, 0x65, 0x69, 0x69, 0x69, 0x69,
+    0x64, 0x6e, 0x6f, 0xa2, 0x6f, 0xe4, 0x94, 0xf6,
+    0x9b, 0x75, 0x75, 0x75, 0x81, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0xa0, 0x83, 0x41, 0x61, 0xb5, 0xd0, 0x80, 0x87,
+    0x43, 0x63, 0x43, 0x63, 0xb6, 0xd1, 0x44, 0x64,
+    0x44, 0x64, 0xed, 0x89, 0x45, 0x65, 0xb8, 0xd3,
+    0xb7, 0xd2, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x95, 0x85, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0xa1, 0x8c, 0x49, 0x69, 0xbd, 0xd4,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0xe8, 0xe9,
+    0x3f, 0x4c, 0x6c, 0xea, 0xeb, 0x4c, 0x6c, 0x3f,
+    0x3f, 0xad, 0x88, 0xe3, 0xe7, 0xee, 0xec, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0xe2, 0x93, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x8a, 0x8b,
+    0x52, 0x72, 0x97, 0x98, 0x53, 0x73, 0x53, 0x73,
+    0xbe, 0xd5, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0xc7, 0xd7, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0xc6, 0xd6, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x8d, 0xa5, 0xa3, 0xa4, 0xcf, 0xd8, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb3, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x9a, 0x81, 0x9a,
+    0x81, 0x9a, 0x81, 0x9a, 0x81, 0x3f, 0x8e, 0x84,
+    0x41, 0x61, 0x92, 0x91, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x8f, 0x86, 0x92, 0x91, 0x9d, 0x9b,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x99, 0x94, 0xe5, 0xe4, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0x60, 0xef, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0x2d, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xf8, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0x2d, 0x2d, 0x3f, 0x3f,
+    0x22, 0x3f, 0xf8, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0x22, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x22, 0x41, 0xfa,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xe1, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xe6, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe1, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x92, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xe1, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xe1, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x63, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0xed, 0x89, 0xed, 0x89,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0xe5, 0xe4, 0xe5, 0xe4,
+    0xe2, 0x93, 0xe2, 0x93, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x97, 0x98, 0xbe, 0xd5,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0xc7, 0xd7, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x22, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0x22, 0x22, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0xef, 0x2c, 0x60, 0xf2, 0xa6, 0xf7, 0x3f,
+    0x3f, 0x3f, 0xf9, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x27, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf8, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x96, 0x3f, 0x3f, 0x9c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x8f, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x9d, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xf1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xf8, 0xf9, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xae, 0xaf, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xfa, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0xc4, 0xc4, 0xb3, 0xb3, 0x2d, 0x2d, 0xa7, 0xa7,
+    0x2d, 0x2d, 0xa7, 0xa7, 0xda, 0xda, 0xda, 0xda,
+    0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0,
+    0xd9, 0xd9, 0xd9, 0xd9, 0xc3, 0xc3, 0xc3, 0xc3,
+    0xc3, 0xc3, 0xc3, 0xc3, 0xb4, 0xb4, 0xb4, 0xb4,
+    0xb4, 0xb4, 0xb4, 0xb4, 0xc2, 0xc2, 0xc2, 0xc2,
+    0xc2, 0xc2, 0xc2, 0xc2, 0xc1, 0xc1, 0xc1, 0xc1,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0x2d, 0x2d, 0xa7, 0xa7,
+    0xcd, 0xba, 0xc9, 0xc9, 0xc9, 0xbb, 0xbb, 0xbb,
+    0xc8, 0xc8, 0xc8, 0xbc, 0xbc, 0xbc, 0xcc, 0xcc,
+    0xcc, 0xb9, 0xb9, 0xb9, 0xcb, 0xcb, 0xcb, 0xca,
+    0xca, 0xca, 0xce, 0xce, 0xce, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0xdf, 0x3f, 0x3f, 0x3f, 0xdc, 0x3f, 0x3f, 0x3f,
+    0xdb, 0x3f, 0x3f, 0x3f, 0xdd, 0x3f, 0x3f, 0x3f,
+    0xde, 0xb0, 0xb1, 0xb2, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xfe, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0xae, 0xaf, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0xf2, 0xa6, 0xf7,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2d, 0x2d, 0x2d, 0x2d, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x96, 0x9c, 0xaa, 0x2d, 0xa7, 0x59, 0x3f, 0x3f,
+    0xb3, 0x3c, 0x5e, 0x3e, 0x76, 0xfe, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_775 =
+{
+    { 775, 1, 0x003f, 0x003f, "OEM Baltic" },
+    cp2uni,
+    cp2uni + 256,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_850.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_850.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_850.c	(revision 16410)
@@ -0,0 +1,717 @@
+/* code page 850 (OEM Multilingual Latin 1) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP850.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[512] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7,
+    0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5,
+    0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9,
+    0x00ff, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x00d7, 0x0192,
+    0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba,
+    0x00bf, 0x00ae, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x00c0,
+    0x00a9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00a2, 0x00a5, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x00e3, 0x00c3,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4,
+    0x00f0, 0x00d0, 0x00ca, 0x00cb, 0x00c8, 0x0131, 0x00cd, 0x00ce,
+    0x00cf, 0x2518, 0x250c, 0x2588, 0x2584, 0x00a6, 0x00cc, 0x2580,
+    0x00d3, 0x00df, 0x00d4, 0x00d2, 0x00f5, 0x00d5, 0x00b5, 0x00fe,
+    0x00de, 0x00da, 0x00db, 0x00d9, 0x00fd, 0x00dd, 0x00af, 0x00b4,
+    0x00ad, 0x00b1, 0x2017, 0x00be, 0x00b6, 0x00a7, 0x00f7, 0x00b8,
+    0x00b0, 0x00a8, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0,
+    /* glyphs */
+    0x0000, 0x263a, 0x263b, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022,
+    0x25d8, 0x25cb, 0x25d9, 0x2642, 0x2640, 0x266a, 0x266b, 0x263c,
+    0x25ba, 0x25c4, 0x2195, 0x203c, 0x00b6, 0x00a7, 0x25ac, 0x21a8,
+    0x2191, 0x2193, 0x2192, 0x2190, 0x221f, 0x2194, 0x25b2, 0x25bc,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2302,
+    0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7,
+    0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5,
+    0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9,
+    0x00ff, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x00d7, 0x0192,
+    0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba,
+    0x00bf, 0x00ae, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x00c0,
+    0x00a9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00a2, 0x00a5, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x00e3, 0x00c3,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4,
+    0x00f0, 0x00d0, 0x00ca, 0x00cb, 0x00c8, 0x0131, 0x00cd, 0x00ce,
+    0x00cf, 0x2518, 0x250c, 0x2588, 0x2584, 0x00a6, 0x00cc, 0x2580,
+    0x00d3, 0x00df, 0x00d4, 0x00d2, 0x00f5, 0x00d5, 0x00b5, 0x00fe,
+    0x00de, 0x00da, 0x00db, 0x00d9, 0x00fd, 0x00dd, 0x00af, 0x00b4,
+    0x00ad, 0x00b1, 0x2017, 0x00be, 0x00b6, 0x00a7, 0x00f7, 0x00b8,
+    0x00b0, 0x00a8, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xff, 0xad, 0xbd, 0x9c, 0xcf, 0xbe, 0xdd, 0xf5,
+    0xf9, 0xb8, 0xa6, 0xae, 0xaa, 0xf0, 0xa9, 0xee,
+    0xf8, 0xf1, 0xfd, 0xfc, 0xef, 0xe6, 0xf4, 0xfa,
+    0xf7, 0xfb, 0xa7, 0xaf, 0xac, 0xab, 0xf3, 0xa8,
+    0xb7, 0xb5, 0xb6, 0xc7, 0x8e, 0x8f, 0x92, 0x80,
+    0xd4, 0x90, 0xd2, 0xd3, 0xde, 0xd6, 0xd7, 0xd8,
+    0xd1, 0xa5, 0xe3, 0xe0, 0xe2, 0xe5, 0x99, 0x9e,
+    0x9d, 0xeb, 0xe9, 0xea, 0x9a, 0xed, 0xe8, 0xe1,
+    0x85, 0xa0, 0x83, 0xc6, 0x84, 0x86, 0x91, 0x87,
+    0x8a, 0x82, 0x88, 0x89, 0x8d, 0xa1, 0x8c, 0x8b,
+    0xd0, 0xa4, 0x95, 0xa2, 0x93, 0xe4, 0x94, 0xf6,
+    0x9b, 0x97, 0xa3, 0x96, 0x81, 0xec, 0xe7, 0x98,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0xd1, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0xd5, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xd1, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x9f, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb3, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x9a, 0x81, 0x9a,
+    0x81, 0x9a, 0x81, 0x9a, 0x81, 0x3f, 0x8e, 0x84,
+    0x41, 0x61, 0x92, 0x91, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x8f, 0x86, 0x92, 0x91, 0x9d, 0x9b,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x99, 0x94, 0xe5, 0xe4, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0xef, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0xee, 0xef, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xf8, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0xef, 0x5e, 0x7e, 0xee, 0xee, 0x3f, 0x3f,
+    0xf9, 0x3f, 0xf8, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xf7,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0xef, 0x3f, 0x3f, 0xf9, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xef, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xef, 0xf9, 0x41, 0xfa,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xe1, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xe6, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe1, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x92, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xe1, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xe1, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0xd0, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x80, 0x87, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0xd8, 0x8b,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0xe5, 0xe4, 0xe5, 0xe4,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0xb6, 0x83, 0xb6, 0x83,
+    0xb6, 0x83, 0xb6, 0x83, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0xd2, 0x88,
+    0xd2, 0x88, 0xd2, 0x88, 0xd2, 0x88, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0xe2, 0x93, 0xe2, 0x93, 0xe2, 0x93, 0xe2, 0x93,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xf9, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0xf9, 0xf9, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0xef, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0xf2,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0xef, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0xee, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf8, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xbd, 0x3f, 0x3f, 0x9c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x8f, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x9d, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xf1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xf8, 0x3f, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xae, 0xaf, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xfa, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0xc4, 0xc4, 0xb3, 0xb3, 0x2d, 0x2d, 0xdd, 0xdd,
+    0x2d, 0x2d, 0xdd, 0xdd, 0xda, 0xda, 0xda, 0xda,
+    0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0,
+    0xd9, 0xd9, 0xd9, 0xd9, 0xc3, 0xc3, 0xc3, 0xc3,
+    0xc3, 0xc3, 0xc3, 0xc3, 0xb4, 0xb4, 0xb4, 0xb4,
+    0xb4, 0xb4, 0xb4, 0xb4, 0xc2, 0xc2, 0xc2, 0xc2,
+    0xc2, 0xc2, 0xc2, 0xc2, 0xc1, 0xc1, 0xc1, 0xc1,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0x2d, 0x2d, 0xdd, 0xdd,
+    0xcd, 0xba, 0xc9, 0xc9, 0xc9, 0xbb, 0xbb, 0xbb,
+    0xc8, 0xc8, 0xc8, 0xbc, 0xbc, 0xbc, 0xcc, 0xcc,
+    0xcc, 0xb9, 0xb9, 0xb9, 0xcb, 0xcb, 0xcb, 0xca,
+    0xca, 0xca, 0xce, 0xce, 0xce, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0xdf, 0x3f, 0x3f, 0x3f, 0xdc, 0x3f, 0x3f, 0x3f,
+    0xdb, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xb0, 0xb1, 0xb2, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xfe, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0xae, 0xaf, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xee, 0xee, 0xee, 0xee, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xbd, 0x9c, 0xaa, 0xee, 0xdd, 0xbe, 0x3f, 0x3f,
+    0xb3, 0x3c, 0x5e, 0x3e, 0x76, 0xfe, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_850 =
+{
+    { 850, 1, 0x003f, 0x003f, "OEM Multilingual Latin 1" },
+    cp2uni,
+    cp2uni + 256,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_852.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_852.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_852.c	(revision 16410)
@@ -0,0 +1,717 @@
+/* code page 852 (OEM Slovak Latin 2) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP852.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[512] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x016f, 0x0107, 0x00e7,
+    0x0142, 0x00eb, 0x0150, 0x0151, 0x00ee, 0x0179, 0x00c4, 0x0106,
+    0x00c9, 0x0139, 0x013a, 0x00f4, 0x00f6, 0x013d, 0x013e, 0x015a,
+    0x015b, 0x00d6, 0x00dc, 0x0164, 0x0165, 0x0141, 0x00d7, 0x010d,
+    0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x0104, 0x0105, 0x017d, 0x017e,
+    0x0118, 0x0119, 0x00ac, 0x017a, 0x010c, 0x015f, 0x00ab, 0x00bb,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x011a,
+    0x015e, 0x2563, 0x2551, 0x2557, 0x255d, 0x017b, 0x017c, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x0102, 0x0103,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4,
+    0x0111, 0x0110, 0x010e, 0x00cb, 0x010f, 0x0147, 0x00cd, 0x00ce,
+    0x011b, 0x2518, 0x250c, 0x2588, 0x2584, 0x0162, 0x016e, 0x2580,
+    0x00d3, 0x00df, 0x00d4, 0x0143, 0x0144, 0x0148, 0x0160, 0x0161,
+    0x0154, 0x00da, 0x0155, 0x0170, 0x00fd, 0x00dd, 0x0163, 0x00b4,
+    0x00ad, 0x02dd, 0x02db, 0x02c7, 0x02d8, 0x00a7, 0x00f7, 0x00b8,
+    0x00b0, 0x00a8, 0x02d9, 0x0171, 0x0158, 0x0159, 0x25a0, 0x00a0,
+    /* glyphs */
+    0x0000, 0x263a, 0x263b, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022,
+    0x25d8, 0x25cb, 0x25d9, 0x2642, 0x2640, 0x266a, 0x266b, 0x263c,
+    0x25ba, 0x25c4, 0x2195, 0x203c, 0x00b6, 0x00a7, 0x25ac, 0x21a8,
+    0x2191, 0x2193, 0x2192, 0x2190, 0x221f, 0x2194, 0x25b2, 0x25bc,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2302,
+    0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x016f, 0x0107, 0x00e7,
+    0x0142, 0x00eb, 0x0150, 0x0151, 0x00ee, 0x0179, 0x00c4, 0x0106,
+    0x00c9, 0x0139, 0x013a, 0x00f4, 0x00f6, 0x013d, 0x013e, 0x015a,
+    0x015b, 0x00d6, 0x00dc, 0x0164, 0x0165, 0x0141, 0x00d7, 0x010d,
+    0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x0104, 0x0105, 0x017d, 0x017e,
+    0x0118, 0x0119, 0x00ac, 0x017a, 0x010c, 0x015f, 0x00ab, 0x00bb,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x011a,
+    0x015e, 0x2563, 0x2551, 0x2557, 0x255d, 0x017b, 0x017c, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x0102, 0x0103,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4,
+    0x0111, 0x0110, 0x010e, 0x00cb, 0x010f, 0x0147, 0x00cd, 0x00ce,
+    0x011b, 0x2518, 0x250c, 0x2588, 0x2584, 0x0162, 0x016e, 0x2580,
+    0x00d3, 0x00df, 0x00d4, 0x0143, 0x0144, 0x0148, 0x0160, 0x0161,
+    0x0154, 0x00da, 0x0155, 0x0170, 0x00fd, 0x00dd, 0x0163, 0x00b4,
+    0x00ad, 0x02dd, 0x02db, 0x02c7, 0x02d8, 0x00a7, 0x00f7, 0x00b8,
+    0x00b0, 0x00a8, 0x02d9, 0x0171, 0x0158, 0x0159, 0x25a0, 0x00a0
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xff, 0x21, 0x63, 0x4c, 0xcf, 0x59, 0x7c, 0xf5,
+    0xf9, 0x63, 0x61, 0xae, 0xaa, 0xf0, 0x72, 0x2d,
+    0xf8, 0x3f, 0x32, 0x33, 0xef, 0x75, 0x3f, 0x3f,
+    0xf7, 0x31, 0x6f, 0xaf, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0xb5, 0xb6, 0x41, 0x8e, 0x41, 0x41, 0x80,
+    0x45, 0x90, 0x45, 0xd3, 0x49, 0xd6, 0xd7, 0x49,
+    0xd1, 0x4e, 0x4f, 0xe0, 0xe2, 0x4f, 0x99, 0x9e,
+    0x4f, 0x55, 0xe9, 0x55, 0x9a, 0xed, 0x3f, 0xe1,
+    0x61, 0xa0, 0x83, 0x61, 0x84, 0x61, 0x61, 0x87,
+    0x65, 0x82, 0x65, 0x89, 0x69, 0xa1, 0x8c, 0x69,
+    0x64, 0x6e, 0x6f, 0xa2, 0x93, 0x6f, 0x94, 0xf6,
+    0x6f, 0x75, 0xa3, 0x75, 0x81, 0xec, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0xc6, 0xc7, 0xa4, 0xa5, 0x8f, 0x86,
+    0x43, 0x63, 0x43, 0x63, 0xac, 0x9f, 0xd2, 0xd4,
+    0xd1, 0xd0, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0xa8, 0xa9, 0xb7, 0xd8, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x91, 0x92, 0x4c, 0x6c, 0x95, 0x96, 0x3f,
+    0x3f, 0x9d, 0x88, 0xe3, 0xe4, 0x4e, 0x6e, 0xd5,
+    0xe5, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x8a, 0x8b, 0x4f, 0x6f, 0xe8, 0xea, 0x52, 0x72,
+    0xfc, 0xfd, 0x97, 0x98, 0x53, 0x73, 0xb8, 0xad,
+    0xe6, 0xe7, 0xdd, 0xee, 0x9b, 0x9c, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0xde, 0x85,
+    0xeb, 0xfb, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x8d, 0xab, 0xbd, 0xbe, 0xa6, 0xa7, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xd1, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb3, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x9a, 0x81, 0x9a,
+    0x81, 0x9a, 0x81, 0x9a, 0x81, 0x3f, 0x8e, 0x84,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x99, 0x94, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0xef, 0xf1, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0xf3,
+    0x27, 0x2d, 0xef, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf4, 0xfa, 0xf8, 0xf2, 0x7e, 0xf1, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0xef, 0x5e, 0x7e, 0x2d, 0x2d, 0xf4, 0xfa,
+    0xf9, 0x3f, 0xf8, 0xf1, 0xf3, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xf7,
+    0xf2, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0xef, 0x3f, 0x3f, 0xf9, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xef, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xef, 0xf9, 0x41, 0x3f,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xe1, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x75, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe1, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xe1, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xe1, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x80, 0x87, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x97, 0x98, 0xe6, 0xe7,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0xb6, 0x83, 0xb6, 0x83,
+    0xb6, 0x83, 0xb6, 0x83, 0x41, 0x61, 0xc6, 0xc7,
+    0xc6, 0xc7, 0xc6, 0xc7, 0xc6, 0xc7, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0xe2, 0x93, 0xe2, 0x93, 0xe2, 0x93, 0xe2, 0x93,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xf9, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0xf9, 0xf9, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0xef, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0xef, 0xf1, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf8, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x63, 0x3f, 0x3f, 0x4c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0xf3, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0x3f, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xf8, 0x3f, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xae, 0xaf, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0xc4, 0xc4, 0xb3, 0xb3, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0xda, 0xda, 0xda, 0xda,
+    0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0,
+    0xd9, 0xd9, 0xd9, 0xd9, 0xc3, 0xc3, 0xc3, 0xc3,
+    0xc3, 0xc3, 0xc3, 0xc3, 0xb4, 0xb4, 0xb4, 0xb4,
+    0xb4, 0xb4, 0xb4, 0xb4, 0xc2, 0xc2, 0xc2, 0xc2,
+    0xc2, 0xc2, 0xc2, 0xc2, 0xc1, 0xc1, 0xc1, 0xc1,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0x2d, 0x2d, 0x7c, 0x7c,
+    0xcd, 0xba, 0xc9, 0xc9, 0xc9, 0xbb, 0xbb, 0xbb,
+    0xc8, 0xc8, 0xc8, 0xbc, 0xbc, 0xbc, 0xcc, 0xcc,
+    0xcc, 0xb9, 0xb9, 0xb9, 0xcb, 0xcb, 0xcb, 0xca,
+    0xca, 0xca, 0xce, 0xce, 0xce, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0xdf, 0x3f, 0x3f, 0x3f, 0xdc, 0x3f, 0x3f, 0x3f,
+    0xdb, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xb0, 0xb1, 0xb2, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xfe, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0xae, 0xaf, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2d, 0x2d, 0x2d, 0x2d, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x63, 0x4c, 0xaa, 0x2d, 0x7c, 0x59, 0x3f, 0x3f,
+    0xb3, 0x3c, 0x5e, 0x3e, 0xf3, 0xfe, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_852 =
+{
+    { 852, 1, 0x003f, 0x003f, "OEM Slovak Latin 2" },
+    cp2uni,
+    cp2uni + 256,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_855.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_855.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_855.c	(revision 16410)
@@ -0,0 +1,750 @@
+/* code page 855 (OEM Cyrillic) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP855.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[512] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0452, 0x0402, 0x0453, 0x0403, 0x0451, 0x0401, 0x0454, 0x0404,
+    0x0455, 0x0405, 0x0456, 0x0406, 0x0457, 0x0407, 0x0458, 0x0408,
+    0x0459, 0x0409, 0x045a, 0x040a, 0x045b, 0x040b, 0x045c, 0x040c,
+    0x045e, 0x040e, 0x045f, 0x040f, 0x044e, 0x042e, 0x044a, 0x042a,
+    0x0430, 0x0410, 0x0431, 0x0411, 0x0446, 0x0426, 0x0434, 0x0414,
+    0x0435, 0x0415, 0x0444, 0x0424, 0x0433, 0x0413, 0x00ab, 0x00bb,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x0445, 0x0425, 0x0438,
+    0x0418, 0x2563, 0x2551, 0x2557, 0x255d, 0x0439, 0x0419, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x043a, 0x041a,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4,
+    0x043b, 0x041b, 0x043c, 0x041c, 0x043d, 0x041d, 0x043e, 0x041e,
+    0x043f, 0x2518, 0x250c, 0x2588, 0x2584, 0x041f, 0x044f, 0x2580,
+    0x042f, 0x0440, 0x0420, 0x0441, 0x0421, 0x0442, 0x0422, 0x0443,
+    0x0423, 0x0436, 0x0416, 0x0432, 0x0412, 0x044c, 0x042c, 0x2116,
+    0x00ad, 0x044b, 0x042b, 0x0437, 0x0417, 0x0448, 0x0428, 0x044d,
+    0x042d, 0x0449, 0x0429, 0x0447, 0x0427, 0x00a7, 0x25a0, 0x00a0,
+    /* glyphs */
+    0x0000, 0x263a, 0x263b, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022,
+    0x25d8, 0x25cb, 0x25d9, 0x2642, 0x2640, 0x266a, 0x266b, 0x263c,
+    0x25ba, 0x25c4, 0x2195, 0x203c, 0x00b6, 0x00a7, 0x25ac, 0x21a8,
+    0x2191, 0x2193, 0x2192, 0x2190, 0x221f, 0x2194, 0x25b2, 0x25bc,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2302,
+    0x0452, 0x0402, 0x0453, 0x0403, 0x0451, 0x0401, 0x0454, 0x0404,
+    0x0455, 0x0405, 0x0456, 0x0406, 0x0457, 0x0407, 0x0458, 0x0408,
+    0x0459, 0x0409, 0x045a, 0x040a, 0x045b, 0x040b, 0x045c, 0x040c,
+    0x045e, 0x040e, 0x045f, 0x040f, 0x044e, 0x042e, 0x044a, 0x042a,
+    0x0430, 0x0410, 0x0431, 0x0411, 0x0446, 0x0426, 0x0434, 0x0414,
+    0x0435, 0x0415, 0x0444, 0x0424, 0x0433, 0x0413, 0x00ab, 0x00bb,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x0445, 0x0425, 0x0438,
+    0x0418, 0x2563, 0x2551, 0x2557, 0x255d, 0x0439, 0x0419, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x043a, 0x041a,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4,
+    0x043b, 0x041b, 0x043c, 0x041c, 0x043d, 0x041d, 0x043e, 0x041e,
+    0x043f, 0x2518, 0x250c, 0x2588, 0x2584, 0x041f, 0x044f, 0x2580,
+    0x042f, 0x0440, 0x0420, 0x0441, 0x0421, 0x0442, 0x0422, 0x0443,
+    0x0423, 0x0436, 0x0416, 0x0432, 0x0412, 0x044c, 0x042c, 0x2116,
+    0x00ad, 0x044b, 0x042b, 0x0437, 0x0417, 0x0448, 0x0428, 0x044d,
+    0x042d, 0x0449, 0x0429, 0x0447, 0x0427, 0x00a7, 0x25a0, 0x00a0
+};
+
+static const unsigned char uni2cp_low[4864] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xff, 0x21, 0x63, 0x4c, 0xcf, 0x59, 0x7c, 0xfd,
+    0x22, 0x63, 0x61, 0xae, 0x3f, 0xf0, 0x72, 0x2d,
+    0x3f, 0x3f, 0x32, 0x33, 0x27, 0x75, 0x3f, 0x3f,
+    0x2c, 0x31, 0x6f, 0xaf, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43,
+    0x45, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0x4e, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x78,
+    0x4f, 0x55, 0x55, 0x55, 0x55, 0x59, 0x3f, 0x3f,
+    0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x63,
+    0x65, 0x65, 0x65, 0x65, 0x69, 0x69, 0x69, 0x69,
+    0x64, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x3f,
+    0x6f, 0x75, 0x75, 0x75, 0x75, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb3, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75, 0x55,
+    0x75, 0x55, 0x75, 0x55, 0x75, 0x3f, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0x2d, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0x2d, 0x2d, 0x3f, 0x3f,
+    0x22, 0x3f, 0x3f, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0x22, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x22, 0x41, 0x3f,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x75, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0400 .. 0x04ff */
+    0xa9, 0x85, 0x81, 0x83, 0x87, 0x89, 0x8b, 0x8d,
+    0x8f, 0x91, 0x93, 0x95, 0x97, 0xb8, 0x99, 0x9b,
+    0xa1, 0xa3, 0xec, 0xad, 0xa7, 0xa9, 0xea, 0xf4,
+    0xb8, 0xbe, 0xc7, 0xd1, 0xd3, 0xd5, 0xd7, 0xdd,
+    0xe2, 0xe4, 0xe6, 0xe8, 0xab, 0xb6, 0xa5, 0xfc,
+    0xf6, 0xfa, 0x9f, 0xf2, 0xee, 0xf8, 0x9d, 0xe0,
+    0xa0, 0xa2, 0xeb, 0xac, 0xa6, 0xa8, 0xe9, 0xf3,
+    0xb7, 0xbd, 0xc6, 0xd0, 0xd2, 0xd4, 0xd6, 0xd8,
+    0xe1, 0xe3, 0xe5, 0xe7, 0xaa, 0xb5, 0xa4, 0xfb,
+    0xf5, 0xf9, 0x9e, 0xf1, 0xed, 0xf7, 0x9c, 0xde,
+    0xa8, 0x84, 0x80, 0x82, 0x86, 0x88, 0x8a, 0x8c,
+    0x8e, 0x90, 0x92, 0x94, 0x96, 0xb7, 0x98, 0x9a,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xea, 0xe9, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa1, 0xa0, 0xa1, 0xa0, 0x3f, 0x3f, 0xa9, 0xa8,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xea, 0xe9, 0xf4, 0xf3,
+    0x3f, 0x3f, 0xb8, 0xb7, 0xb8, 0xb7, 0xd7, 0xd6,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xf8, 0xf7, 0xe8, 0xe7,
+    0xe8, 0xe7, 0xe8, 0xe7, 0xfc, 0xfb, 0x3f, 0x3f,
+    0xf2, 0xf1, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xd4, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x63, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x22, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0x22, 0x22, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x27, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x63, 0x3f, 0x3f, 0x4c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0xef, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0x3f, 0x3f, 0x2f, 0x5c, 0x2a,
+    0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xae, 0xaf, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0xc4, 0xc4, 0xb3, 0xb3, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0xda, 0xda, 0xda, 0xda,
+    0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0,
+    0xd9, 0xd9, 0xd9, 0xd9, 0xc3, 0xc3, 0xc3, 0xc3,
+    0xc3, 0xc3, 0xc3, 0xc3, 0xb4, 0xb4, 0xb4, 0xb4,
+    0xb4, 0xb4, 0xb4, 0xb4, 0xc2, 0xc2, 0xc2, 0xc2,
+    0xc2, 0xc2, 0xc2, 0xc2, 0xc1, 0xc1, 0xc1, 0xc1,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0x2d, 0x2d, 0x7c, 0x7c,
+    0xcd, 0xba, 0xc9, 0xc9, 0xc9, 0xbb, 0xbb, 0xbb,
+    0xc8, 0xc8, 0xc8, 0xbc, 0xbc, 0xbc, 0xcc, 0xcc,
+    0xcc, 0xb9, 0xb9, 0xb9, 0xcb, 0xcb, 0xcb, 0xca,
+    0xca, 0xca, 0xce, 0xce, 0xce, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0xdf, 0x3f, 0x3f, 0x3f, 0xdc, 0x3f, 0x3f, 0x3f,
+    0xdb, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xb0, 0xb1, 0xb2, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xfe, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0xae, 0xaf, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2d, 0x2d, 0x2d, 0x2d, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x63, 0x4c, 0x3f, 0x2d, 0x7c, 0x59, 0x3f, 0x3f,
+    0xb3, 0x3c, 0x5e, 0x3e, 0x76, 0xfe, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x0400, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x0500, 0x0600, 0x0700,
+    0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x0d00, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x0e00, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x0f00, 0x1200, 0x1200, 0x1000, 0x1100
+};
+
+const struct sbcs_table cptable_855 =
+{
+    { 855, 1, 0x003f, 0x003f, "OEM Cyrillic" },
+    cp2uni,
+    cp2uni + 256,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_856.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_856.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_856.c	(revision 16410)
@@ -0,0 +1,717 @@
+/* code page 856 (Hebrew PC) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MISC/CP856.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
+    0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
+    0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
+    0x05e8, 0x05e9, 0x05ea, 0x009b, 0x00a3, 0x009d, 0x00d7, 0x009f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x00ae, 0x00ac, 0x00bd, 0x00bc, 0x003f, 0x00ab, 0x00bb,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x003f, 0x003f, 0x003f,
+    0x00a9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00a2, 0x00a5, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x003f, 0x003f,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x2518, 0x250c, 0x2588, 0x2584, 0x00a6, 0x00de, 0x2580,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x00b5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x00af, 0x00b4,
+    0x00ad, 0x00b1, 0x2017, 0x00be, 0x00b6, 0x00a7, 0x00f7, 0x00b8,
+    0x00b0, 0x00a8, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0
+};
+
+static const unsigned char uni2cp_low[4864] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x9b, 0x3f, 0x9d, 0x3f, 0x9f,
+    0xff, 0x21, 0xbd, 0x9c, 0xcf, 0xbe, 0xdd, 0xf5,
+    0xf9, 0xb8, 0x61, 0xae, 0xaa, 0xf0, 0xa9, 0xee,
+    0xf8, 0xf1, 0xfd, 0xfc, 0xef, 0xe6, 0xf4, 0xfa,
+    0xf7, 0xfb, 0x6f, 0xaf, 0xac, 0xab, 0xf3, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43,
+    0x45, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0x4e, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x9e,
+    0x4f, 0x55, 0x55, 0x55, 0x55, 0x59, 0xde, 0x3f,
+    0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x63,
+    0x65, 0x65, 0x65, 0x65, 0x69, 0x69, 0x69, 0x69,
+    0x64, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0xf6,
+    0x6f, 0x75, 0x75, 0x75, 0x75, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb3, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75, 0x55,
+    0x75, 0x55, 0x75, 0x55, 0x75, 0x3f, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0xef, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0xee, 0xef, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xf8, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0xef, 0x5e, 0x7e, 0xee, 0xee, 0x3f, 0x3f,
+    0xf9, 0x3f, 0xf8, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xf7,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0xef, 0x3f, 0x3f, 0xf9, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xef, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xef, 0xf9, 0x41, 0xfa,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xe6, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0500 .. 0x05ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x63, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xf9, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0xf9, 0xf9, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0xef, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0xf2,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0xef, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0xee, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf8, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xbd, 0x3f, 0x3f, 0x9c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x80, 0x81, 0x82,
+    0x83, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xf1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xf8, 0x3f, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xae, 0xaf, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xfa, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0xc4, 0xc4, 0xb3, 0xb3, 0x2d, 0x2d, 0xdd, 0xdd,
+    0x2d, 0x2d, 0xdd, 0xdd, 0xda, 0xda, 0xda, 0xda,
+    0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0,
+    0xd9, 0xd9, 0xd9, 0xd9, 0xc3, 0xc3, 0xc3, 0xc3,
+    0xc3, 0xc3, 0xc3, 0xc3, 0xb4, 0xb4, 0xb4, 0xb4,
+    0xb4, 0xb4, 0xb4, 0xb4, 0xc2, 0xc2, 0xc2, 0xc2,
+    0xc2, 0xc2, 0xc2, 0xc2, 0xc1, 0xc1, 0xc1, 0xc1,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0x2d, 0x2d, 0xdd, 0xdd,
+    0xcd, 0xba, 0xc9, 0xc9, 0xc9, 0xbb, 0xbb, 0xbb,
+    0xc8, 0xc8, 0xc8, 0xbc, 0xbc, 0xbc, 0xcc, 0xcc,
+    0xcc, 0xb9, 0xb9, 0xb9, 0xcb, 0xcb, 0xcb, 0xca,
+    0xca, 0xca, 0xce, 0xce, 0xce, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0xdf, 0x3f, 0x3f, 0x3f, 0xdc, 0x3f, 0x3f, 0x3f,
+    0xdb, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xb0, 0xb1, 0xb2, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xfe, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0xae, 0xaf, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x89, 0x3f, 0x3f,
+    0x92, 0x80, 0x83, 0x84, 0x8b, 0x8c, 0x8d, 0x98,
+    0x9a, 0x2b, 0x99, 0x99, 0x99, 0x99, 0x80, 0x80,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x3f,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x3f, 0x8e, 0x3f,
+    0x90, 0x91, 0x3f, 0x93, 0x94, 0x3f, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x85, 0x81, 0x8b, 0x94, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xee, 0xee, 0xee, 0xee, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xbd, 0x9c, 0xaa, 0xee, 0xdd, 0xbe, 0x3f, 0x3f,
+    0xb3, 0x3c, 0x5e, 0x3e, 0x76, 0xfe, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1200, 0x0400, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x0500, 0x0600, 0x0700,
+    0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x0d00, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x0e00, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x0f00, 0x1200, 0x1200, 0x1000, 0x1100
+};
+
+const struct sbcs_table cptable_856 =
+{
+    { 856, 1, 0x003f, 0x003f, "Hebrew PC" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_857.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_857.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_857.c	(revision 16410)
@@ -0,0 +1,717 @@
+/* code page 857 (OEM Turkish) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP857.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[512] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7,
+    0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x0131, 0x00c4, 0x00c5,
+    0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9,
+    0x0130, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x015e, 0x015f,
+    0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x011e, 0x011f,
+    0x00bf, 0x00ae, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x00c0,
+    0x00a9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00a2, 0x00a5, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x00e3, 0x00c3,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4,
+    0x00ba, 0x00aa, 0x00ca, 0x00cb, 0x00c8, 0x003f, 0x00cd, 0x00ce,
+    0x00cf, 0x2518, 0x250c, 0x2588, 0x2584, 0x00a6, 0x00cc, 0x2580,
+    0x00d3, 0x00df, 0x00d4, 0x00d2, 0x00f5, 0x00d5, 0x00b5, 0x003f,
+    0x00d7, 0x00da, 0x00db, 0x00d9, 0x00ec, 0x00ff, 0x00af, 0x00b4,
+    0x00ad, 0x00b1, 0x003f, 0x00be, 0x00b6, 0x00a7, 0x00f7, 0x00b8,
+    0x00b0, 0x00a8, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0,
+    /* glyphs */
+    0x0000, 0x263a, 0x263b, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022,
+    0x25d8, 0x25cb, 0x25d9, 0x2642, 0x2640, 0x266a, 0x266b, 0x263c,
+    0x25ba, 0x25c4, 0x2195, 0x203c, 0x00b6, 0x00a7, 0x25ac, 0x21a8,
+    0x2191, 0x2193, 0x2192, 0x2190, 0x221f, 0x2194, 0x25b2, 0x25bc,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2302,
+    0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7,
+    0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x0131, 0x00c4, 0x00c5,
+    0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9,
+    0x0130, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x015e, 0x015f,
+    0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x011e, 0x011f,
+    0x00bf, 0x00ae, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x00c0,
+    0x00a9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00a2, 0x00a5, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x00e3, 0x00c3,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4,
+    0x00ba, 0x00aa, 0x00ca, 0x00cb, 0x00c8, 0x003f, 0x00cd, 0x00ce,
+    0x00cf, 0x2518, 0x250c, 0x2588, 0x2584, 0x00a6, 0x00cc, 0x2580,
+    0x00d3, 0x00df, 0x00d4, 0x00d2, 0x00f5, 0x00d5, 0x00b5, 0x003f,
+    0x00d7, 0x00da, 0x00db, 0x00d9, 0x00ec, 0x00ff, 0x00af, 0x00b4,
+    0x00ad, 0x00b1, 0x003f, 0x00be, 0x00b6, 0x00a7, 0x00f7, 0x00b8,
+    0x00b0, 0x00a8, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xff, 0xad, 0xbd, 0x9c, 0xcf, 0xbe, 0xdd, 0xf5,
+    0xf9, 0xb8, 0xd1, 0xae, 0xaa, 0xf0, 0xa9, 0xee,
+    0xf8, 0xf1, 0xfd, 0xfc, 0xef, 0xe6, 0xf4, 0xfa,
+    0xf7, 0xfb, 0xd0, 0xaf, 0xac, 0xab, 0xf3, 0xa8,
+    0xb7, 0xb5, 0xb6, 0xc7, 0x8e, 0x8f, 0x92, 0x80,
+    0xd4, 0x90, 0xd2, 0xd3, 0xde, 0xd6, 0xd7, 0xd8,
+    0x44, 0xa5, 0xe3, 0xe0, 0xe2, 0xe5, 0x99, 0xe8,
+    0x9d, 0xeb, 0xe9, 0xea, 0x9a, 0x59, 0x3f, 0xe1,
+    0x85, 0xa0, 0x83, 0xc6, 0x84, 0x86, 0x91, 0x87,
+    0x8a, 0x82, 0x88, 0x89, 0xec, 0xa1, 0x8c, 0x8b,
+    0x64, 0xa4, 0x95, 0xa2, 0x93, 0xe4, 0x94, 0xf6,
+    0x9b, 0x97, 0xa3, 0x96, 0x81, 0x79, 0x3f, 0xed,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0xa6, 0xa7,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x98, 0x8d, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x9e, 0x9f,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb3, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x9a, 0x81, 0x9a,
+    0x81, 0x9a, 0x81, 0x9a, 0x81, 0x3f, 0x8e, 0x84,
+    0x41, 0x61, 0x92, 0x91, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x8f, 0x86, 0x92, 0x91, 0x9d, 0x9b,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x99, 0x94, 0xe5, 0xe4, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0xef, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0xee, 0xef, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xf8, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0xef, 0x5e, 0x7e, 0xee, 0xee, 0x3f, 0x3f,
+    0xf9, 0x3f, 0xf8, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xf7,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0xef, 0x3f, 0x3f, 0xf9, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xef, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xef, 0xf9, 0x41, 0xfa,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xe1, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xe6, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe1, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x92, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xe1, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xe1, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x80, 0x87, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0xd8, 0x8b,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0xe5, 0xe4, 0xe5, 0xe4,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0xb6, 0x83, 0xb6, 0x83,
+    0xb6, 0x83, 0xb6, 0x83, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0xd2, 0x88,
+    0xd2, 0x88, 0xd2, 0x88, 0xd2, 0x88, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0xe2, 0x93, 0xe2, 0x93, 0xe2, 0x93, 0xe2, 0x93,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xf9, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0xf9, 0xf9, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0xef, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0xef, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0xee, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf8, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xbd, 0x3f, 0x3f, 0x9c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x8f, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x9d, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xf1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xf8, 0x3f, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xae, 0xaf, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xfa, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0xc4, 0xc4, 0xb3, 0xb3, 0x2d, 0x2d, 0xdd, 0xdd,
+    0x2d, 0x2d, 0xdd, 0xdd, 0xda, 0xda, 0xda, 0xda,
+    0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0,
+    0xd9, 0xd9, 0xd9, 0xd9, 0xc3, 0xc3, 0xc3, 0xc3,
+    0xc3, 0xc3, 0xc3, 0xc3, 0xb4, 0xb4, 0xb4, 0xb4,
+    0xb4, 0xb4, 0xb4, 0xb4, 0xc2, 0xc2, 0xc2, 0xc2,
+    0xc2, 0xc2, 0xc2, 0xc2, 0xc1, 0xc1, 0xc1, 0xc1,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0x2d, 0x2d, 0xdd, 0xdd,
+    0xcd, 0xba, 0xc9, 0xc9, 0xc9, 0xbb, 0xbb, 0xbb,
+    0xc8, 0xc8, 0xc8, 0xbc, 0xbc, 0xbc, 0xcc, 0xcc,
+    0xcc, 0xb9, 0xb9, 0xb9, 0xcb, 0xcb, 0xcb, 0xca,
+    0xca, 0xca, 0xce, 0xce, 0xce, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0xdf, 0x3f, 0x3f, 0x3f, 0xdc, 0x3f, 0x3f, 0x3f,
+    0xdb, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xb0, 0xb1, 0xb2, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xfe, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0xae, 0xaf, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xee, 0xee, 0xee, 0xee, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xbd, 0x9c, 0xaa, 0xee, 0xdd, 0xbe, 0x3f, 0x3f,
+    0xb3, 0x3c, 0x5e, 0x3e, 0x76, 0xfe, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_857 =
+{
+    { 857, 1, 0x003f, 0x003f, "OEM Turkish" },
+    cp2uni,
+    cp2uni + 256,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_860.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_860.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_860.c	(revision 16410)
@@ -0,0 +1,717 @@
+/* code page 860 (OEM Portuguese) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP860.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[512] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e3, 0x00e0, 0x00c1, 0x00e7,
+    0x00ea, 0x00ca, 0x00e8, 0x00cd, 0x00d4, 0x00ec, 0x00c3, 0x00c2,
+    0x00c9, 0x00c0, 0x00c8, 0x00f4, 0x00f5, 0x00f2, 0x00da, 0x00f9,
+    0x00cc, 0x00d5, 0x00dc, 0x00a2, 0x00a3, 0x00d9, 0x20a7, 0x00d3,
+    0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba,
+    0x00bf, 0x00d2, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
+    0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
+    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
+    0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
+    0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4,
+    0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229,
+    0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248,
+    0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0,
+    /* glyphs */
+    0x0000, 0x263a, 0x263b, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022,
+    0x25d8, 0x25cb, 0x25d9, 0x2642, 0x2640, 0x266a, 0x266b, 0x263c,
+    0x25ba, 0x25c4, 0x2195, 0x203c, 0x00b6, 0x00a7, 0x25ac, 0x21a8,
+    0x2191, 0x2193, 0x2192, 0x2190, 0x221f, 0x2194, 0x25b2, 0x25bc,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2302,
+    0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e3, 0x00e0, 0x00c1, 0x00e7,
+    0x00ea, 0x00ca, 0x00e8, 0x00cd, 0x00d4, 0x00ec, 0x00c3, 0x00c2,
+    0x00c9, 0x00c0, 0x00c8, 0x00f4, 0x00f5, 0x00f2, 0x00da, 0x00f9,
+    0x00cc, 0x00d5, 0x00dc, 0x00a2, 0x00a3, 0x00d9, 0x20a7, 0x00d3,
+    0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba,
+    0x00bf, 0x00d2, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
+    0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
+    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
+    0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
+    0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4,
+    0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229,
+    0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248,
+    0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xff, 0xad, 0x9b, 0x9c, 0x3f, 0x59, 0x7c, 0x3f,
+    0x22, 0x63, 0xa6, 0xae, 0xaa, 0x2d, 0x72, 0x2d,
+    0xf8, 0xf1, 0xfd, 0x33, 0x27, 0xe6, 0x3f, 0xfa,
+    0x2c, 0x31, 0xa7, 0xaf, 0xac, 0xab, 0x3f, 0xa8,
+    0x91, 0x86, 0x8f, 0x8e, 0x41, 0x41, 0x41, 0x80,
+    0x92, 0x90, 0x89, 0x45, 0x98, 0x8b, 0x49, 0x49,
+    0x44, 0xa5, 0xa9, 0x9f, 0x8c, 0x99, 0x4f, 0x78,
+    0x4f, 0x9d, 0x96, 0x55, 0x9a, 0x59, 0x3f, 0xe1,
+    0x85, 0xa0, 0x83, 0x84, 0x61, 0x61, 0x61, 0x87,
+    0x8a, 0x82, 0x88, 0x65, 0x8d, 0xa1, 0x69, 0x69,
+    0x64, 0xa4, 0x95, 0xa2, 0x93, 0x94, 0x6f, 0xf6,
+    0x6f, 0x97, 0xa3, 0x75, 0x81, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb3, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x9a, 0x81, 0x9a,
+    0x81, 0x9a, 0x81, 0x9a, 0x81, 0x3f, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x4f, 0x6f, 0x99, 0x94, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0x2d, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xf8, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0x2d, 0x2d, 0x3f, 0x3f,
+    0x22, 0x3f, 0xf8, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0x22, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x22, 0x41, 0xfa,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0xea,
+    0x3f, 0x41, 0x42, 0xe2, 0x3f, 0x45, 0x5a, 0x48,
+    0xe9, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0xe4, 0x54, 0x59, 0xe8, 0x58,
+    0x3f, 0xea, 0x49, 0x59, 0xe0, 0xee, 0x3f, 0x3f,
+    0x3f, 0xe0, 0xe1, 0x3f, 0xeb, 0xee, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xe6, 0x3f, 0x3f, 0x3f,
+    0xe3, 0x3f, 0x3f, 0xe5, 0xe7, 0x3f, 0xed, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe1, 0x3f, 0x59, 0x59, 0x59, 0xed, 0xe3, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xe9, 0xee, 0x3f, 0x3f,
+    0x3f, 0xe4, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xe1, 0x3f, 0xeb,
+    0xed, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xe1, 0x3f,
+    0x3f, 0xed, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x80, 0x87, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x99, 0x94, 0x99, 0x94,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x8f, 0x83, 0x8f, 0x83,
+    0x8f, 0x83, 0x8f, 0x83, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x89, 0x88,
+    0x89, 0x88, 0x89, 0x88, 0x89, 0x88, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x8c, 0x93, 0x8c, 0x93, 0x8c, 0x93, 0x8c, 0x93,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea,
+    0xe0, 0xe0, 0xee, 0xee, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea,
+    0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x3f, 0xe0, 0xe0,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x22, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0x22, 0x22, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0xea, 0xea, 0xea, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0xf9, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x27, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf8, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0xfc,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x9b, 0x3f, 0x3f, 0x9c, 0x3f, 0x3f, 0x9e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0xea, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0xe3, 0x3f, 0xe2, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xf1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xf8, 0xf9, 0xfb, 0x3f, 0x3f, 0x3f, 0xec, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xef, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf7, 0xf7, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0xf0, 0xf0, 0xf0, 0xf3, 0xf2, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xae, 0xaf, 0x3f, 0x3f, 0x3c, 0x3e,
+    0xf3, 0xf2, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xfa, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf4, 0xf5, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0xc4, 0xc4, 0xb3, 0xb3, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0xda, 0xda, 0xda, 0xda,
+    0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0,
+    0xd9, 0xd9, 0xd9, 0xd9, 0xc3, 0xc3, 0xc3, 0xc3,
+    0xc3, 0xc3, 0xc3, 0xc3, 0xb4, 0xb4, 0xb4, 0xb4,
+    0xb4, 0xb4, 0xb4, 0xb4, 0xc2, 0xc2, 0xc2, 0xc2,
+    0xc2, 0xc2, 0xc2, 0xc2, 0xc1, 0xc1, 0xc1, 0xc1,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0x2d, 0x2d, 0x7c, 0x7c,
+    0xcd, 0xba, 0xd5, 0xd6, 0xc9, 0xb8, 0xb7, 0xbb,
+    0xd4, 0xd3, 0xc8, 0xbe, 0xbd, 0xbc, 0xc6, 0xc7,
+    0xcc, 0xb5, 0xb6, 0xb9, 0xd1, 0xd2, 0xcb, 0xcf,
+    0xd0, 0xca, 0xd8, 0xd7, 0xce, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0xdf, 0x3f, 0x3f, 0x3f, 0xdc, 0x3f, 0x3f, 0x3f,
+    0xdb, 0x3f, 0x3f, 0x3f, 0xdd, 0x3f, 0x3f, 0x3f,
+    0xde, 0xb0, 0xb1, 0xb2, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xfe, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0xae, 0xaf, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2d, 0x2d, 0x2d, 0x2d, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x9b, 0x9c, 0xaa, 0x2d, 0x7c, 0x59, 0x3f, 0x3f,
+    0xb3, 0x3c, 0x5e, 0x3e, 0x76, 0xfe, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_860 =
+{
+    { 860, 1, 0x003f, 0x003f, "OEM Portuguese" },
+    cp2uni,
+    cp2uni + 256,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_861.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_861.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_861.c	(revision 16410)
@@ -0,0 +1,717 @@
+/* code page 861 (OEM Icelandic) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP861.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[512] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7,
+    0x00ea, 0x00eb, 0x00e8, 0x00d0, 0x00f0, 0x00de, 0x00c4, 0x00c5,
+    0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00fe, 0x00fb, 0x00dd,
+    0x00fd, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x20a7, 0x0192,
+    0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00c1, 0x00cd, 0x00d3, 0x00da,
+    0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
+    0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
+    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
+    0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
+    0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4,
+    0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229,
+    0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248,
+    0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0,
+    /* glyphs */
+    0x0000, 0x263a, 0x263b, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022,
+    0x25d8, 0x25cb, 0x25d9, 0x2642, 0x2640, 0x266a, 0x266b, 0x263c,
+    0x25ba, 0x25c4, 0x2195, 0x203c, 0x00b6, 0x00a7, 0x25ac, 0x21a8,
+    0x2191, 0x2193, 0x2192, 0x2190, 0x221f, 0x2194, 0x25b2, 0x25bc,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2302,
+    0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7,
+    0x00ea, 0x00eb, 0x00e8, 0x00d0, 0x00f0, 0x00de, 0x00c4, 0x00c5,
+    0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00fe, 0x00fb, 0x00dd,
+    0x00fd, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x20a7, 0x0192,
+    0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00c1, 0x00cd, 0x00d3, 0x00da,
+    0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
+    0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
+    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
+    0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
+    0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4,
+    0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229,
+    0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248,
+    0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xff, 0xad, 0x63, 0x9c, 0x3f, 0x59, 0x7c, 0x3f,
+    0x22, 0x63, 0x61, 0xae, 0xaa, 0x2d, 0x72, 0x2d,
+    0xf8, 0xf1, 0xfd, 0x33, 0x27, 0xe6, 0x3f, 0xfa,
+    0x2c, 0x31, 0x6f, 0xaf, 0xac, 0xab, 0x3f, 0xa8,
+    0x41, 0xa4, 0x41, 0x41, 0x8e, 0x8f, 0x92, 0x80,
+    0x45, 0x90, 0x45, 0x45, 0x49, 0xa5, 0x49, 0x49,
+    0x8b, 0x4e, 0x4f, 0xa6, 0x4f, 0x4f, 0x99, 0x78,
+    0x9d, 0x55, 0xa7, 0x55, 0x9a, 0x97, 0x8d, 0xe1,
+    0x85, 0xa0, 0x83, 0x61, 0x84, 0x86, 0x91, 0x87,
+    0x8a, 0x82, 0x88, 0x89, 0x69, 0xa1, 0x69, 0x69,
+    0x8c, 0x6e, 0x6f, 0xa2, 0x93, 0x6f, 0x94, 0xf6,
+    0x9b, 0x75, 0xa3, 0x96, 0x81, 0x98, 0x95, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x8b, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x8b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x9f, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb3, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x9a, 0x81, 0x9a,
+    0x81, 0x9a, 0x81, 0x9a, 0x81, 0x3f, 0x8e, 0x84,
+    0x41, 0x61, 0x92, 0x91, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x8f, 0x86, 0x92, 0x91, 0x9d, 0x9b,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x99, 0x94, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0x2d, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xf8, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0x2d, 0x2d, 0x3f, 0x3f,
+    0x22, 0x3f, 0xf8, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0x22, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x22, 0x41, 0xfa,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0xea,
+    0x3f, 0x41, 0x42, 0xe2, 0x3f, 0x45, 0x5a, 0x48,
+    0xe9, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0xe4, 0x54, 0x59, 0xe8, 0x58,
+    0x3f, 0xea, 0x49, 0x59, 0xe0, 0xee, 0x3f, 0x3f,
+    0x3f, 0xe0, 0xe1, 0x3f, 0xeb, 0xee, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xe6, 0x3f, 0x3f, 0x3f,
+    0xe3, 0x3f, 0x3f, 0xe5, 0xe7, 0x3f, 0xed, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe1, 0x3f, 0x59, 0x59, 0x59, 0xed, 0xe3, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xe9, 0xee, 0x3f, 0x3f,
+    0x3f, 0xe4, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x92, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xe1, 0x3f, 0xeb,
+    0xed, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xe1, 0x3f,
+    0x3f, 0xed, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x8c, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x80, 0x87, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x83, 0x41, 0x83,
+    0x41, 0x83, 0x41, 0x83, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x88,
+    0x45, 0x88, 0x45, 0x88, 0x45, 0x88, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x93, 0x4f, 0x93, 0x4f, 0x93, 0x4f, 0x93,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea,
+    0xe0, 0xe0, 0xee, 0xee, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea,
+    0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x3f, 0xe0, 0xe0,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x22, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0x22, 0x22, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0xea, 0xea, 0xea, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0xf9, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x27, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf8, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0xfc,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x63, 0x3f, 0x3f, 0x9c, 0x3f, 0x3f, 0x9e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0xea, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x8f, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0xe3, 0x3f, 0xe2, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x9d, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xf1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xf8, 0xf9, 0xfb, 0x3f, 0x3f, 0x3f, 0xec, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xef, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf7, 0xf7, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0xf0, 0xf0, 0xf0, 0xf3, 0xf2, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xae, 0xaf, 0x3f, 0x3f, 0x3c, 0x3e,
+    0xf3, 0xf2, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xfa, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa9, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf4, 0xf5, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0xc4, 0xc4, 0xb3, 0xb3, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0xda, 0xda, 0xda, 0xda,
+    0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0,
+    0xd9, 0xd9, 0xd9, 0xd9, 0xc3, 0xc3, 0xc3, 0xc3,
+    0xc3, 0xc3, 0xc3, 0xc3, 0xb4, 0xb4, 0xb4, 0xb4,
+    0xb4, 0xb4, 0xb4, 0xb4, 0xc2, 0xc2, 0xc2, 0xc2,
+    0xc2, 0xc2, 0xc2, 0xc2, 0xc1, 0xc1, 0xc1, 0xc1,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0x2d, 0x2d, 0x7c, 0x7c,
+    0xcd, 0xba, 0xd5, 0xd6, 0xc9, 0xb8, 0xb7, 0xbb,
+    0xd4, 0xd3, 0xc8, 0xbe, 0xbd, 0xbc, 0xc6, 0xc7,
+    0xcc, 0xb5, 0xb6, 0xb9, 0xd1, 0xd2, 0xcb, 0xcf,
+    0xd0, 0xca, 0xd8, 0xd7, 0xce, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0xdf, 0x3f, 0x3f, 0x3f, 0xdc, 0x3f, 0x3f, 0x3f,
+    0xdb, 0x3f, 0x3f, 0x3f, 0xdd, 0x3f, 0x3f, 0x3f,
+    0xde, 0xb0, 0xb1, 0xb2, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xfe, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0xae, 0xaf, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2d, 0x2d, 0x2d, 0x2d, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x63, 0x9c, 0xaa, 0x2d, 0x7c, 0x59, 0x3f, 0x3f,
+    0xb3, 0x3c, 0x5e, 0x3e, 0x76, 0xfe, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_861 =
+{
+    { 861, 1, 0x003f, 0x003f, "OEM Icelandic" },
+    cp2uni,
+    cp2uni + 256,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_862.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_862.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_862.c	(revision 16410)
@@ -0,0 +1,750 @@
+/* code page 862 (OEM Hebrew) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP862.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[512] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
+    0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
+    0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
+    0x05e8, 0x05e9, 0x05ea, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0x0192,
+    0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba,
+    0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
+    0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
+    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
+    0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
+    0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4,
+    0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229,
+    0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248,
+    0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0,
+    /* glyphs */
+    0x0000, 0x263a, 0x263b, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022,
+    0x25d8, 0x25cb, 0x25d9, 0x2642, 0x2640, 0x266a, 0x266b, 0x263c,
+    0x25ba, 0x25c4, 0x2195, 0x203c, 0x00b6, 0x00a7, 0x25ac, 0x21a8,
+    0x2191, 0x2193, 0x2192, 0x2190, 0x221f, 0x2194, 0x25b2, 0x25bc,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2302,
+    0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
+    0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
+    0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
+    0x05e8, 0x05e9, 0x05ea, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0x0192,
+    0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba,
+    0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
+    0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
+    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
+    0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
+    0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4,
+    0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229,
+    0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248,
+    0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
+};
+
+static const unsigned char uni2cp_low[4864] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xff, 0xad, 0x9b, 0x9c, 0x3f, 0x9d, 0x7c, 0x3f,
+    0x22, 0x63, 0xa6, 0xae, 0xaa, 0x2d, 0x72, 0x2d,
+    0xf8, 0xf1, 0xfd, 0x33, 0x27, 0xe6, 0x3f, 0xfa,
+    0x2c, 0x31, 0xa7, 0xaf, 0xac, 0xab, 0x3f, 0xa8,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43,
+    0x45, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0xa5, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x78,
+    0x4f, 0x55, 0x55, 0x55, 0x55, 0x59, 0x3f, 0xe1,
+    0x61, 0xa0, 0x61, 0x61, 0x61, 0x61, 0x61, 0x63,
+    0x65, 0x65, 0x65, 0x65, 0x69, 0xa1, 0x69, 0x69,
+    0x64, 0xa4, 0x6f, 0xa2, 0x6f, 0x6f, 0x6f, 0xf6,
+    0x6f, 0x75, 0xa3, 0x75, 0x75, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x9f, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb3, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75, 0x55,
+    0x75, 0x55, 0x75, 0x55, 0x75, 0x3f, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0x2d, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xf8, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0x2d, 0x2d, 0x3f, 0x3f,
+    0x22, 0x3f, 0xf8, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0x22, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x22, 0x41, 0xfa,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0xea,
+    0x3f, 0x41, 0x42, 0xe2, 0x3f, 0x45, 0x5a, 0x48,
+    0xe9, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0xe4, 0x54, 0x59, 0xe8, 0x58,
+    0x3f, 0xea, 0x49, 0x59, 0xe0, 0xee, 0x3f, 0x3f,
+    0x3f, 0xe0, 0xe1, 0x3f, 0xeb, 0xee, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xe6, 0x3f, 0x3f, 0x3f,
+    0xe3, 0x3f, 0x3f, 0xe5, 0xe7, 0x3f, 0xed, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe1, 0x3f, 0x59, 0x59, 0x59, 0xed, 0xe3, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xe9, 0xee, 0x3f, 0x3f,
+    0x3f, 0xe4, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0500 .. 0x05ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xe1, 0x3f, 0xeb,
+    0xed, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xe1, 0x3f,
+    0x3f, 0xed, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x63, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea,
+    0xe0, 0xe0, 0xee, 0xee, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea,
+    0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x3f, 0xe0, 0xe0,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x22, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0x22, 0x22, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0xea, 0xea, 0xea, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0xf9, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x27, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf8, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0xfc,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x9b, 0x3f, 0x3f, 0x9c, 0x3f, 0x3f, 0x9e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0xea, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x80, 0x81, 0x82,
+    0x83, 0x69, 0x3f, 0x3f, 0xe3, 0x3f, 0xe2, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xf1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xf8, 0xf9, 0xfb, 0x3f, 0x3f, 0x3f, 0xec, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xef, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf7, 0xf7, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0xf0, 0xf0, 0xf0, 0xf3, 0xf2, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xae, 0xaf, 0x3f, 0x3f, 0x3c, 0x3e,
+    0xf3, 0xf2, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xfa, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa9, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf4, 0xf5, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0xc4, 0xc4, 0xb3, 0xb3, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0xda, 0xda, 0xda, 0xda,
+    0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0,
+    0xd9, 0xd9, 0xd9, 0xd9, 0xc3, 0xc3, 0xc3, 0xc3,
+    0xc3, 0xc3, 0xc3, 0xc3, 0xb4, 0xb4, 0xb4, 0xb4,
+    0xb4, 0xb4, 0xb4, 0xb4, 0xc2, 0xc2, 0xc2, 0xc2,
+    0xc2, 0xc2, 0xc2, 0xc2, 0xc1, 0xc1, 0xc1, 0xc1,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0x2d, 0x2d, 0x7c, 0x7c,
+    0xcd, 0xba, 0xd5, 0xd6, 0xc9, 0xb8, 0xb7, 0xbb,
+    0xd4, 0xd3, 0xc8, 0xbe, 0xbd, 0xbc, 0xc6, 0xc7,
+    0xcc, 0xb5, 0xb6, 0xb9, 0xd1, 0xd2, 0xcb, 0xcf,
+    0xd0, 0xca, 0xd8, 0xd7, 0xce, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0xdf, 0x3f, 0x3f, 0x3f, 0xdc, 0x3f, 0x3f, 0x3f,
+    0xdb, 0x3f, 0x3f, 0x3f, 0xdd, 0x3f, 0x3f, 0x3f,
+    0xde, 0xb0, 0xb1, 0xb2, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xfe, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0xae, 0xaf, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x89, 0x3f, 0x3f,
+    0x92, 0x80, 0x83, 0x84, 0x8b, 0x8c, 0x8d, 0x98,
+    0x9a, 0x2b, 0x99, 0x99, 0x99, 0x99, 0x80, 0x80,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x3f,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x3f, 0x8e, 0x3f,
+    0x90, 0x91, 0x3f, 0x93, 0x94, 0x3f, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x85, 0x81, 0x8b, 0x94, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2d, 0x2d, 0x2d, 0x2d, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x9b, 0x9c, 0xaa, 0x2d, 0x7c, 0x9d, 0x3f, 0x3f,
+    0xb3, 0x3c, 0x5e, 0x3e, 0x76, 0xfe, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1200, 0x0400, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x0500, 0x0600, 0x0700,
+    0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x0d00, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x0e00, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x0f00, 0x1200, 0x1200, 0x1000, 0x1100
+};
+
+const struct sbcs_table cptable_862 =
+{
+    { 862, 1, 0x003f, 0x003f, "OEM Hebrew" },
+    cp2uni,
+    cp2uni + 256,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_863.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_863.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_863.c	(revision 16410)
@@ -0,0 +1,717 @@
+/* code page 863 (OEM Canadian French) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP863.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[512] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00c2, 0x00e0, 0x00b6, 0x00e7,
+    0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x2017, 0x00c0, 0x00a7,
+    0x00c9, 0x00c8, 0x00ca, 0x00f4, 0x00cb, 0x00cf, 0x00fb, 0x00f9,
+    0x00a4, 0x00d4, 0x00dc, 0x00a2, 0x00a3, 0x00d9, 0x00db, 0x0192,
+    0x00a6, 0x00b4, 0x00f3, 0x00fa, 0x00a8, 0x00b8, 0x00b3, 0x00af,
+    0x00ce, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00be, 0x00ab, 0x00bb,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
+    0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
+    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
+    0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
+    0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4,
+    0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229,
+    0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248,
+    0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0,
+    /* glyphs */
+    0x0000, 0x263a, 0x263b, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022,
+    0x25d8, 0x25cb, 0x25d9, 0x2642, 0x2640, 0x266a, 0x266b, 0x263c,
+    0x25ba, 0x25c4, 0x2195, 0x203c, 0x00b6, 0x00a7, 0x25ac, 0x21a8,
+    0x2191, 0x2193, 0x2192, 0x2190, 0x221f, 0x2194, 0x25b2, 0x25bc,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2302,
+    0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00c2, 0x00e0, 0x00b6, 0x00e7,
+    0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x2017, 0x00c0, 0x00a7,
+    0x00c9, 0x00c8, 0x00ca, 0x00f4, 0x00cb, 0x00cf, 0x00fb, 0x00f9,
+    0x00a4, 0x00d4, 0x00dc, 0x00a2, 0x00a3, 0x00d9, 0x00db, 0x0192,
+    0x00a6, 0x00b4, 0x00f3, 0x00fa, 0x00a8, 0x00b8, 0x00b3, 0x00af,
+    0x00ce, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00be, 0x00ab, 0x00bb,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
+    0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
+    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
+    0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
+    0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4,
+    0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229,
+    0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248,
+    0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xff, 0x21, 0x9b, 0x9c, 0x98, 0x59, 0xa0, 0x8f,
+    0xa4, 0x63, 0x61, 0xae, 0xaa, 0x2d, 0x72, 0xa7,
+    0xf8, 0xf1, 0xfd, 0xa6, 0xa1, 0xe6, 0x86, 0xfa,
+    0xa5, 0x31, 0x6f, 0xaf, 0xac, 0xab, 0xad, 0x3f,
+    0x8e, 0x41, 0x84, 0x41, 0x41, 0x41, 0x41, 0x80,
+    0x91, 0x90, 0x92, 0x94, 0x49, 0x49, 0xa8, 0x95,
+    0x44, 0x4e, 0x4f, 0x4f, 0x99, 0x4f, 0x4f, 0x78,
+    0x4f, 0x9d, 0x55, 0x9e, 0x9a, 0x59, 0x3f, 0xe1,
+    0x85, 0x61, 0x83, 0x61, 0x61, 0x61, 0x61, 0x87,
+    0x8a, 0x82, 0x88, 0x89, 0x69, 0x69, 0x8c, 0x8b,
+    0x64, 0x6e, 0x6f, 0xa2, 0x93, 0x6f, 0x6f, 0xf6,
+    0x6f, 0x97, 0xa3, 0x96, 0x81, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x9f, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb3, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x9a, 0x81, 0x9a,
+    0x81, 0x9a, 0x81, 0x9a, 0x81, 0x3f, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0xa1, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0xa7, 0xa1, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xf8, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0xa1, 0x5e, 0x7e, 0xa7, 0xa7, 0x3f, 0x3f,
+    0xa4, 0x3f, 0xf8, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xa5,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0xa1, 0x3f, 0x3f, 0xa4, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xa1, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xa1, 0xa4, 0x41, 0xfa,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0xea,
+    0x3f, 0x41, 0x42, 0xe2, 0x3f, 0x45, 0x5a, 0x48,
+    0xe9, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0xe4, 0x54, 0x59, 0xe8, 0x58,
+    0x3f, 0xea, 0x49, 0x59, 0xe0, 0xee, 0x3f, 0x3f,
+    0x3f, 0xe0, 0xe1, 0x3f, 0xeb, 0xee, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xe6, 0x3f, 0x3f, 0x3f,
+    0xe3, 0x3f, 0x3f, 0xe5, 0xe7, 0x3f, 0xed, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe1, 0x3f, 0x59, 0x59, 0x59, 0xed, 0xe3, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xe9, 0xee, 0x3f, 0x3f,
+    0x3f, 0xe4, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xe1, 0x3f, 0xeb,
+    0xed, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xe1, 0x3f,
+    0x3f, 0xed, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x80, 0x87, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x95, 0x8b,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x84, 0x83, 0x84, 0x83,
+    0x84, 0x83, 0x84, 0x83, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x92, 0x88,
+    0x92, 0x88, 0x92, 0x88, 0x92, 0x88, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x99, 0x93, 0x99, 0x93, 0x99, 0x93, 0x99, 0x93,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea,
+    0xe0, 0xe0, 0xee, 0xee, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea,
+    0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x3f, 0xe0, 0xe0,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa4, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0xa4, 0xa4, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0xea, 0xea, 0xea, 0xa1, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x8d,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0xf9, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0xa1, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0xa7, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf8, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0xfc,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x9b, 0x3f, 0x3f, 0x9c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0xea, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0xe3, 0x3f, 0xe2, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xf1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xf8, 0xf9, 0xfb, 0x3f, 0x3f, 0x3f, 0xec, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xef, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf7, 0xf7, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0xf0, 0xf0, 0xf0, 0xf3, 0xf2, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xae, 0xaf, 0x3f, 0x3f, 0x3c, 0x3e,
+    0xf3, 0xf2, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xfa, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa9, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf4, 0xf5, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0xc4, 0xc4, 0xb3, 0xb3, 0x2d, 0x2d, 0xa0, 0xa0,
+    0x2d, 0x2d, 0xa0, 0xa0, 0xda, 0xda, 0xda, 0xda,
+    0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0,
+    0xd9, 0xd9, 0xd9, 0xd9, 0xc3, 0xc3, 0xc3, 0xc3,
+    0xc3, 0xc3, 0xc3, 0xc3, 0xb4, 0xb4, 0xb4, 0xb4,
+    0xb4, 0xb4, 0xb4, 0xb4, 0xc2, 0xc2, 0xc2, 0xc2,
+    0xc2, 0xc2, 0xc2, 0xc2, 0xc1, 0xc1, 0xc1, 0xc1,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0x2d, 0x2d, 0xa0, 0xa0,
+    0xcd, 0xba, 0xd5, 0xd6, 0xc9, 0xb8, 0xb7, 0xbb,
+    0xd4, 0xd3, 0xc8, 0xbe, 0xbd, 0xbc, 0xc6, 0xc7,
+    0xcc, 0xb5, 0xb6, 0xb9, 0xd1, 0xd2, 0xcb, 0xcf,
+    0xd0, 0xca, 0xd8, 0xd7, 0xce, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0xdf, 0x3f, 0x3f, 0x3f, 0xdc, 0x3f, 0x3f, 0x3f,
+    0xdb, 0x3f, 0x3f, 0x3f, 0xdd, 0x3f, 0x3f, 0x3f,
+    0xde, 0xb0, 0xb1, 0xb2, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xfe, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0xae, 0xaf, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa7, 0xa7, 0xa7, 0xa7, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x9b, 0x9c, 0xaa, 0xa7, 0xa0, 0x59, 0x3f, 0x3f,
+    0xb3, 0x3c, 0x5e, 0x3e, 0x76, 0xfe, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_863 =
+{
+    { 863, 1, 0x003f, 0x003f, "OEM Canadian French" },
+    cp2uni,
+    cp2uni + 256,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_864.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_864.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_864.c	(revision 16410)
@@ -0,0 +1,717 @@
+/* code page 864 (OEM Arabic) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP864.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x066a, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x00b0, 0x00b7, 0x2219, 0x221a, 0x2592, 0x2500, 0x2502, 0x253c,
+    0x2524, 0x252c, 0x251c, 0x2534, 0x2510, 0x250c, 0x2514, 0x2518,
+    0x03b2, 0x221e, 0x03c6, 0x00b1, 0x00bd, 0x00bc, 0x2248, 0x00ab,
+    0x00bb, 0xfef7, 0xfef8, 0x009b, 0x009c, 0xfefb, 0xfefc, 0x009f,
+    0x00a0, 0x00ad, 0xfe82, 0x00a3, 0x00a4, 0xfe84, 0x003f, 0x00a7,
+    0xfe8e, 0xfe8f, 0xfe95, 0xfe99, 0x060c, 0xfe9d, 0xfea1, 0xfea5,
+    0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667,
+    0x0668, 0x0669, 0xfed1, 0x061b, 0xfeb1, 0xfeb5, 0xfeb9, 0x061f,
+    0x00a2, 0xfe80, 0xfe81, 0xfe83, 0xfe85, 0xfeca, 0xfe8b, 0xfe8d,
+    0xfe91, 0xfe93, 0xfe97, 0xfe9b, 0xfe9f, 0xfea3, 0xfea7, 0xfea9,
+    0xfeab, 0xfead, 0xfeaf, 0xfeb3, 0xfeb7, 0xfebb, 0xfebf, 0xfec1,
+    0xfec5, 0xfecb, 0xfecf, 0x00a6, 0x00ac, 0x00f7, 0x00d7, 0xfec9,
+    0x0640, 0xfed3, 0xfed7, 0xfedb, 0xfedf, 0xfee3, 0xfee7, 0xfeeb,
+    0xfeed, 0xfeef, 0xfef3, 0xfebd, 0xfecc, 0xfece, 0xfecd, 0xfee1,
+    0xfe7d, 0x0651, 0xfee5, 0xfee9, 0xfeec, 0xfef0, 0xfef2, 0xfed0,
+    0xfed5, 0xfef5, 0xfef6, 0xfedd, 0xfed9, 0xfef1, 0x25a0, 0x003f
+};
+
+static const unsigned char uni2cp_low[4864] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x3f, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x9b, 0x9c, 0x3f, 0x3f, 0x9f,
+    0xa0, 0x21, 0xc0, 0xa3, 0xa4, 0x59, 0xdb, 0xa7,
+    0x22, 0x63, 0x61, 0x97, 0xdc, 0xa1, 0x72, 0x2d,
+    0x80, 0x93, 0x32, 0x33, 0x27, 0x75, 0x3f, 0x81,
+    0x2c, 0x31, 0x6f, 0x98, 0x95, 0x94, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43,
+    0x45, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0x4e, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0xde,
+    0x4f, 0x55, 0x55, 0x55, 0x55, 0x59, 0x3f, 0x90,
+    0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x63,
+    0x65, 0x65, 0x65, 0x65, 0x69, 0x69, 0x69, 0x69,
+    0x64, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0xdd,
+    0x6f, 0x75, 0x75, 0x75, 0x75, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x86, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75, 0x55,
+    0x75, 0x55, 0x75, 0x55, 0x75, 0x3f, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0x2d, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x80, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0x2d, 0x2d, 0x3f, 0x3f,
+    0x22, 0x3f, 0x80, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0x22, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x22, 0x41, 0x81,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x90, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x75, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x92, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x90, 0x3f, 0x59, 0x59, 0x59, 0x92, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0600 .. 0x06ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xac, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0xbb, 0x3f, 0x3f, 0x3f, 0xbf,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe0, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xf1, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+    0xb8, 0xb9, 0x25, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0x90, 0x3f, 0x3f,
+    0x92, 0x3f, 0x69, 0x72, 0x75, 0x76, 0x90, 0x3f,
+    0x3f, 0x92, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x63, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x22, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0x22, 0x22, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0x82, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x27, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x80, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xc0, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0x93, 0x3f, 0x2f, 0x5c, 0x2a,
+    0x80, 0x82, 0x83, 0x3f, 0x3f, 0x3f, 0x91, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x96, 0x96, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x97, 0x98, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x81, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x85, 0x85, 0x86, 0x86, 0x2d, 0x2d, 0xdb, 0xdb,
+    0x2d, 0x2d, 0xdb, 0xdb, 0x8d, 0x8d, 0x8d, 0x8d,
+    0x8c, 0x8c, 0x8c, 0x8c, 0x8e, 0x8e, 0x8e, 0x8e,
+    0x8f, 0x8f, 0x8f, 0x8f, 0x8a, 0x8a, 0x8a, 0x8a,
+    0x8a, 0x8a, 0x8a, 0x8a, 0x88, 0x88, 0x88, 0x88,
+    0x88, 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x89,
+    0x89, 0x89, 0x89, 0x89, 0x8b, 0x8b, 0x8b, 0x8b,
+    0x8b, 0x8b, 0x8b, 0x8b, 0x87, 0x87, 0x87, 0x87,
+    0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
+    0x87, 0x87, 0x87, 0x87, 0x2d, 0x2d, 0xdb, 0xdb,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0xdc, 0xdc, 0xdc,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x84, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xfe, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0x97, 0x98, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2d, 0x2d, 0x2d, 0x2d, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x3f, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xf0, 0x3f, 0x3f,
+    0xc1, 0xc2, 0xa2, 0xc3, 0xa5, 0xc4, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0xc6, 0x3f, 0xc7, 0xa8, 0xa9,
+    0x3f, 0xc8, 0x3f, 0xc9, 0x3f, 0xaa, 0x3f, 0xca,
+    0x3f, 0xab, 0x3f, 0xcb, 0x3f, 0xad, 0x3f, 0xcc,
+    0x3f, 0xae, 0x3f, 0xcd, 0x3f, 0xaf, 0x3f, 0xce,
+    0x3f, 0xcf, 0x3f, 0xd0, 0x3f, 0xd1, 0x3f, 0xd2,
+    0x3f, 0xbc, 0x3f, 0xd3, 0x3f, 0xbd, 0x3f, 0xd4,
+    0x3f, 0xbe, 0x3f, 0xd5, 0x3f, 0xeb, 0x3f, 0xd6,
+    0x3f, 0xd7, 0x3f, 0x3f, 0x3f, 0xd8, 0x3f, 0x3f,
+    0x3f, 0xdf, 0xc5, 0xd9, 0xec, 0xee, 0xed, 0xda,
+    0xf7, 0xba, 0x3f, 0xe1, 0x3f, 0xf8, 0x3f, 0xe2,
+    0x3f, 0xfc, 0x3f, 0xe3, 0x3f, 0xfb, 0x3f, 0xe4,
+    0x3f, 0xef, 0x3f, 0xe5, 0x3f, 0xf2, 0x3f, 0xe6,
+    0x3f, 0xf3, 0x3f, 0xe7, 0xf4, 0xe8, 0x3f, 0xe9,
+    0xf5, 0xfd, 0xf6, 0xea, 0x3f, 0xf9, 0xfa, 0x99,
+    0x9a, 0x3f, 0x3f, 0x9d, 0x9e, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x3f, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc0, 0xa3, 0xdc, 0x2d, 0xdb, 0x59, 0x3f, 0x3f,
+    0x86, 0x3c, 0x5e, 0x3e, 0x76, 0xfe, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1200, 0x1200, 0x0400, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x0500, 0x0600, 0x0700,
+    0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x0d00, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x0e00, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x0f00, 0x1200, 0x1200, 0x1000, 0x1100
+};
+
+const struct sbcs_table cptable_864 =
+{
+    { 864, 1, 0x003f, 0x003f, "OEM Arabic" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_865.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_865.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_865.c	(revision 16410)
@@ -0,0 +1,717 @@
+/* code page 865 (OEM Nordic) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP865.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[512] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7,
+    0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5,
+    0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9,
+    0x00ff, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x20a7, 0x0192,
+    0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba,
+    0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00a4,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
+    0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
+    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
+    0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
+    0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4,
+    0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229,
+    0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248,
+    0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0,
+    /* glyphs */
+    0x0000, 0x263a, 0x263b, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022,
+    0x25d8, 0x25cb, 0x25d9, 0x2642, 0x2640, 0x266a, 0x266b, 0x263c,
+    0x25ba, 0x25c4, 0x2195, 0x203c, 0x00b6, 0x00a7, 0x25ac, 0x21a8,
+    0x2191, 0x2193, 0x2192, 0x2190, 0x221f, 0x2194, 0x25b2, 0x25bc,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2302,
+    0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7,
+    0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5,
+    0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9,
+    0x00ff, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x20a7, 0x0192,
+    0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba,
+    0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00a4,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
+    0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
+    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
+    0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
+    0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4,
+    0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229,
+    0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248,
+    0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xff, 0xad, 0x63, 0x9c, 0xaf, 0x59, 0x7c, 0x3f,
+    0x22, 0x63, 0xa6, 0xae, 0xaa, 0x2d, 0x72, 0x2d,
+    0xf8, 0xf1, 0xfd, 0x33, 0x27, 0xe6, 0x3f, 0xfa,
+    0x2c, 0x31, 0xa7, 0x3e, 0xac, 0xab, 0x3f, 0xa8,
+    0x41, 0x41, 0x41, 0x41, 0x8e, 0x8f, 0x92, 0x80,
+    0x45, 0x90, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0xa5, 0x4f, 0x4f, 0x4f, 0x4f, 0x99, 0x78,
+    0x9d, 0x55, 0x55, 0x55, 0x9a, 0x59, 0x3f, 0xe1,
+    0x85, 0xa0, 0x83, 0x61, 0x84, 0x86, 0x91, 0x87,
+    0x8a, 0x82, 0x88, 0x89, 0x8d, 0xa1, 0x8c, 0x8b,
+    0x64, 0xa4, 0x95, 0xa2, 0x93, 0x6f, 0x94, 0xf6,
+    0x9b, 0x97, 0xa3, 0x96, 0x81, 0x79, 0x3f, 0x98,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x9f, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb3, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x9a, 0x81, 0x9a,
+    0x81, 0x9a, 0x81, 0x9a, 0x81, 0x3f, 0x8e, 0x84,
+    0x41, 0x61, 0x92, 0x91, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x8f, 0x86, 0x92, 0x91, 0x9d, 0x9b,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x99, 0x94, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0x2d, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xf8, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0x2d, 0x2d, 0x3f, 0x3f,
+    0x22, 0x3f, 0xf8, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0x22, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x22, 0x41, 0xfa,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0xea,
+    0x3f, 0x41, 0x42, 0xe2, 0x3f, 0x45, 0x5a, 0x48,
+    0xe9, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0xe4, 0x54, 0x59, 0xe8, 0x58,
+    0x3f, 0xea, 0x49, 0x59, 0xe0, 0xee, 0x3f, 0x3f,
+    0x3f, 0xe0, 0xe1, 0x3f, 0xeb, 0xee, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xe6, 0x3f, 0x3f, 0x3f,
+    0xe3, 0x3f, 0x3f, 0xe5, 0xe7, 0x3f, 0xed, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe1, 0x3f, 0x59, 0x59, 0x59, 0xed, 0xe3, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xe9, 0xee, 0x3f, 0x3f,
+    0x3f, 0xe4, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x92, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xe1, 0x3f, 0xeb,
+    0xed, 0x3f, 0x69, 0x72, 0x75, 0x76, 0xe1, 0x3f,
+    0x3f, 0xed, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x80, 0x87, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x8b,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x83, 0x41, 0x83,
+    0x41, 0x83, 0x41, 0x83, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x88,
+    0x45, 0x88, 0x45, 0x88, 0x45, 0x88, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x93, 0x4f, 0x93, 0x4f, 0x93, 0x4f, 0x93,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea,
+    0xe0, 0xe0, 0xee, 0xee, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea,
+    0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x3f, 0xe0, 0xe0,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x22, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0x22, 0x22, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0xea, 0xea, 0xea, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0xf9, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x27, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf8, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0xfc,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x63, 0x3f, 0x3f, 0x9c, 0x3f, 0x3f, 0x9e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0xea, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x8f, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0xe3, 0x3f, 0xe2, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x9d, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xf1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xf8, 0xf9, 0xfb, 0x3f, 0x3f, 0x3f, 0xec, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xef, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf7, 0xf7, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0xf0, 0xf0, 0xf0, 0xf3, 0xf2, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xae, 0x3e, 0x3f, 0x3f, 0x3c, 0x3e,
+    0xf3, 0xf2, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xfa, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa9, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf4, 0xf5, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0xc4, 0xc4, 0xb3, 0xb3, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0xda, 0xda, 0xda, 0xda,
+    0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0,
+    0xd9, 0xd9, 0xd9, 0xd9, 0xc3, 0xc3, 0xc3, 0xc3,
+    0xc3, 0xc3, 0xc3, 0xc3, 0xb4, 0xb4, 0xb4, 0xb4,
+    0xb4, 0xb4, 0xb4, 0xb4, 0xc2, 0xc2, 0xc2, 0xc2,
+    0xc2, 0xc2, 0xc2, 0xc2, 0xc1, 0xc1, 0xc1, 0xc1,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0x2d, 0x2d, 0x7c, 0x7c,
+    0xcd, 0xba, 0xd5, 0xd6, 0xc9, 0xb8, 0xb7, 0xbb,
+    0xd4, 0xd3, 0xc8, 0xbe, 0xbd, 0xbc, 0xc6, 0xc7,
+    0xcc, 0xb5, 0xb6, 0xb9, 0xd1, 0xd2, 0xcb, 0xcf,
+    0xd0, 0xca, 0xd8, 0xd7, 0xce, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0xdf, 0x3f, 0x3f, 0x3f, 0xdc, 0x3f, 0x3f, 0x3f,
+    0xdb, 0x3f, 0x3f, 0x3f, 0xdd, 0x3f, 0x3f, 0x3f,
+    0xde, 0xb0, 0xb1, 0xb2, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xfe, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0xae, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2d, 0x2d, 0x2d, 0x2d, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x63, 0x9c, 0xaa, 0x2d, 0x7c, 0x59, 0x3f, 0x3f,
+    0xb3, 0x3c, 0x5e, 0x3e, 0x76, 0xfe, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_865 =
+{
+    { 865, 1, 0x003f, 0x003f, "OEM Nordic" },
+    cp2uni,
+    cp2uni + 256,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_866.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_866.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_866.c	(revision 16410)
@@ -0,0 +1,750 @@
+/* code page 866 (OEM Russian) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP866.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[512] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+    0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+    0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+    0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+    0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+    0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
+    0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
+    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
+    0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
+    0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+    0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
+    0x0401, 0x0451, 0x0404, 0x0454, 0x0407, 0x0457, 0x040e, 0x045e,
+    0x00b0, 0x2219, 0x00b7, 0x221a, 0x2116, 0x00a4, 0x25a0, 0x00a0,
+    /* glyphs */
+    0x0000, 0x263a, 0x263b, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022,
+    0x25d8, 0x25cb, 0x25d9, 0x2642, 0x2640, 0x266a, 0x266b, 0x263c,
+    0x25ba, 0x25c4, 0x2195, 0x203c, 0x00b6, 0x00a7, 0x25ac, 0x21a8,
+    0x2191, 0x2193, 0x2192, 0x2190, 0x221f, 0x2194, 0x25b2, 0x25bc,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2302,
+    0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+    0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+    0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+    0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+    0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+    0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
+    0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
+    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
+    0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
+    0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+    0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
+    0x0401, 0x0451, 0x0404, 0x0454, 0x0407, 0x0457, 0x040e, 0x045e,
+    0x00b0, 0x2219, 0x00b7, 0x221a, 0x2116, 0x00a4, 0x25a0, 0x00a0
+};
+
+static const unsigned char uni2cp_low[4864] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xff, 0x21, 0x63, 0x4c, 0xfd, 0x59, 0x7c, 0x3f,
+    0x22, 0x63, 0x61, 0x3c, 0x3f, 0x2d, 0x72, 0x2d,
+    0xf8, 0x3f, 0x32, 0x33, 0x27, 0x75, 0x3f, 0xfa,
+    0x2c, 0x31, 0x6f, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43,
+    0x45, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0x4e, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x78,
+    0x4f, 0x55, 0x55, 0x55, 0x55, 0x59, 0x3f, 0x3f,
+    0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x63,
+    0x65, 0x65, 0x65, 0x65, 0x69, 0x69, 0x69, 0x69,
+    0x64, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x3f,
+    0x6f, 0x75, 0x75, 0x75, 0x75, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb3, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75, 0x55,
+    0x75, 0x55, 0x75, 0x55, 0x75, 0x3f, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0x2d, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xf8, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0x2d, 0x2d, 0x3f, 0x3f,
+    0x22, 0x3f, 0xf8, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0x22, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x22, 0x41, 0xfa,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x75, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0400 .. 0x04ff */
+    0x85, 0xf0, 0x3f, 0x83, 0xf2, 0x3f, 0x3f, 0xf4,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x8a, 0x88, 0xf6, 0x3f,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+    0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0xa5, 0xf1, 0x3f, 0xa3, 0xf3, 0x3f, 0x3f, 0xf5,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xaa, 0xa8, 0xf7, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x86, 0xa6, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x80, 0xa0, 0x80, 0xa0, 0x3f, 0x3f, 0x85, 0xa5,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x86, 0xa6, 0x87, 0xa7,
+    0x3f, 0x3f, 0x88, 0xa8, 0x88, 0xa8, 0x8e, 0xae,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x9d, 0xed, 0x93, 0xe3,
+    0x93, 0xe3, 0x93, 0xe3, 0x97, 0xe7, 0x3f, 0x3f,
+    0x9b, 0xeb, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xad, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x63, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x22, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0x22, 0x22, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0xf9, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x27, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf8, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x63, 0x3f, 0x3f, 0x4c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0xfc, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0x3f, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xf8, 0xf9, 0xfb, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xfa, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0xc4, 0xc4, 0xb3, 0xb3, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0xda, 0xda, 0xda, 0xda,
+    0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0,
+    0xd9, 0xd9, 0xd9, 0xd9, 0xc3, 0xc3, 0xc3, 0xc3,
+    0xc3, 0xc3, 0xc3, 0xc3, 0xb4, 0xb4, 0xb4, 0xb4,
+    0xb4, 0xb4, 0xb4, 0xb4, 0xc2, 0xc2, 0xc2, 0xc2,
+    0xc2, 0xc2, 0xc2, 0xc2, 0xc1, 0xc1, 0xc1, 0xc1,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0x2d, 0x2d, 0x7c, 0x7c,
+    0xcd, 0xba, 0xd5, 0xd6, 0xc9, 0xb8, 0xb7, 0xbb,
+    0xd4, 0xd3, 0xc8, 0xbe, 0xbd, 0xbc, 0xc6, 0xc7,
+    0xcc, 0xb5, 0xb6, 0xb9, 0xd1, 0xd2, 0xcb, 0xcf,
+    0xd0, 0xca, 0xd8, 0xd7, 0xce, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0xdf, 0x3f, 0x3f, 0x3f, 0xdc, 0x3f, 0x3f, 0x3f,
+    0xdb, 0x3f, 0x3f, 0x3f, 0xdd, 0x3f, 0x3f, 0x3f,
+    0xde, 0xb0, 0xb1, 0xb2, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xfe, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2d, 0x2d, 0x2d, 0x2d, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x63, 0x4c, 0x3f, 0x2d, 0x7c, 0x59, 0x3f, 0x3f,
+    0xb3, 0x3c, 0x5e, 0x3e, 0x76, 0xfe, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x0400, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x0500, 0x0600, 0x0700,
+    0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x0d00, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x0e00, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x0f00, 0x1200, 0x1200, 0x1000, 0x1100
+};
+
+const struct sbcs_table cptable_866 =
+{
+    { 866, 1, 0x003f, 0x003f, "OEM Russian" },
+    cp2uni,
+    cp2uni + 256,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_869.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_869.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_869.c	(revision 16410)
@@ -0,0 +1,717 @@
+/* code page 869 (OEM Greek) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP869.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[512] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0386, 0x0087,
+    0x00b7, 0x00ac, 0x00a6, 0x2018, 0x2019, 0x0388, 0x2015, 0x0389,
+    0x038a, 0x03aa, 0x038c, 0x0093, 0x0094, 0x038e, 0x03ab, 0x00a9,
+    0x038f, 0x00b2, 0x00b3, 0x03ac, 0x00a3, 0x03ad, 0x03ae, 0x03af,
+    0x03ca, 0x0390, 0x03cc, 0x03cd, 0x0391, 0x0392, 0x0393, 0x0394,
+    0x0395, 0x0396, 0x0397, 0x00bd, 0x0398, 0x0399, 0x00ab, 0x00bb,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x039a, 0x039b, 0x039c,
+    0x039d, 0x2563, 0x2551, 0x2557, 0x255d, 0x039e, 0x039f, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x03a0, 0x03a1,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x03a3,
+    0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2,
+    0x03b3, 0x2518, 0x250c, 0x2588, 0x2584, 0x03b4, 0x03b5, 0x2580,
+    0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd,
+    0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c2, 0x03c4, 0x0384,
+    0x00ad, 0x00b1, 0x03c5, 0x03c6, 0x03c7, 0x00a7, 0x03c8, 0x0385,
+    0x00b0, 0x00a8, 0x03c9, 0x03cb, 0x03b0, 0x03ce, 0x25a0, 0x00a0,
+    /* glyphs */
+    0x0000, 0x263a, 0x263b, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022,
+    0x25d8, 0x25cb, 0x25d9, 0x2642, 0x2640, 0x266a, 0x266b, 0x263c,
+    0x25ba, 0x25c4, 0x2195, 0x203c, 0x00b6, 0x00a7, 0x25ac, 0x21a8,
+    0x2191, 0x2193, 0x2192, 0x2190, 0x221f, 0x2194, 0x25b2, 0x25bc,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2302,
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0386, 0x0087,
+    0x00b7, 0x00ac, 0x00a6, 0x2018, 0x2019, 0x0388, 0x2015, 0x0389,
+    0x038a, 0x03aa, 0x038c, 0x0093, 0x0094, 0x038e, 0x03ab, 0x00a9,
+    0x038f, 0x00b2, 0x00b3, 0x03ac, 0x00a3, 0x03ad, 0x03ae, 0x03af,
+    0x03ca, 0x0390, 0x03cc, 0x03cd, 0x0391, 0x0392, 0x0393, 0x0394,
+    0x0395, 0x0396, 0x0397, 0x00bd, 0x0398, 0x0399, 0x00ab, 0x00bb,
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x039a, 0x039b, 0x039c,
+    0x039d, 0x2563, 0x2551, 0x2557, 0x255d, 0x039e, 0x039f, 0x2510,
+    0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x03a0, 0x03a1,
+    0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x03a3,
+    0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2,
+    0x03b3, 0x2518, 0x250c, 0x2588, 0x2584, 0x03b4, 0x03b5, 0x2580,
+    0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd,
+    0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c2, 0x03c4, 0x0384,
+    0x00ad, 0x00b1, 0x03c5, 0x03c6, 0x03c7, 0x00a7, 0x03c8, 0x0385,
+    0x00b0, 0x00a8, 0x03c9, 0x03cb, 0x03b0, 0x03ce, 0x25a0, 0x00a0
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x3f, 0x87,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x93, 0x94, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xff, 0x21, 0x63, 0x9c, 0x3f, 0x59, 0x8a, 0xf5,
+    0xf9, 0x97, 0x61, 0xae, 0x89, 0xf0, 0x72, 0x8e,
+    0xf8, 0xf1, 0x99, 0x9a, 0x27, 0xe6, 0x3f, 0x88,
+    0x2c, 0x31, 0x6f, 0xaf, 0x3f, 0xab, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43,
+    0x45, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0x4e, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x78,
+    0x4f, 0x55, 0x55, 0x55, 0x55, 0x59, 0x3f, 0xd7,
+    0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x63,
+    0x65, 0x65, 0x65, 0x65, 0x69, 0x69, 0x69, 0x69,
+    0x64, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x3f,
+    0x6f, 0x75, 0x75, 0x75, 0x75, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xb3, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75, 0x55,
+    0x75, 0x55, 0x75, 0x55, 0x75, 0x3f, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0x8b, 0x8c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0x8e, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xf8, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0x8e, 0x8e, 0x3f, 0x3f,
+    0xf9, 0x3f, 0xf8, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0xf9, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xef, 0xf7, 0x86, 0x88,
+    0x8d, 0x8f, 0x90, 0x3f, 0x92, 0x3f, 0x95, 0x98,
+    0xa1, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa,
+    0xac, 0xad, 0xb5, 0xb6, 0xb7, 0xb8, 0xbd, 0xbe,
+    0xc6, 0xc7, 0x3f, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3,
+    0xd4, 0xd5, 0x91, 0x96, 0x9b, 0x9d, 0x9e, 0x9f,
+    0xfc, 0xd6, 0xd7, 0xd8, 0xdd, 0xde, 0xe0, 0xe1,
+    0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
+    0xea, 0xeb, 0xed, 0xec, 0xee, 0xf2, 0xf3, 0xf4,
+    0xf6, 0xfa, 0xa0, 0xfb, 0xa2, 0xa3, 0xfd, 0x3f,
+    0xd7, 0xe2, 0xd1, 0xd1, 0xd1, 0xf3, 0xea, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe4, 0xeb, 0xed, 0x3f, 0xac, 0xde, 0x3f, 0x3f,
+    0x3f, 0xcf, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0xd7, 0xd8, 0xdd,
+    0xf3, 0xf4, 0x69, 0x72, 0x75, 0x76, 0xd7, 0xd8,
+    0xeb, 0xf3, 0xf4, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0xe2,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x63, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
+    0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4,
+    0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0x3f, 0x3f,
+    0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x3f, 0x3f,
+    0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1,
+    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+    0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
+    0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
+    0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0x3f, 0x3f,
+    0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0x3f, 0x3f,
+    0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2,
+    0x3f, 0xd1, 0x3f, 0xd1, 0x3f, 0xd1, 0x3f, 0xd1,
+    0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
+    0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5,
+    0xd6, 0x9b, 0xde, 0x9d, 0xe1, 0x9e, 0xe3, 0x9f,
+    0xe9, 0xa2, 0xf2, 0xa3, 0xfa, 0xfd, 0x3f, 0x3f,
+    0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
+    0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4,
+    0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1,
+    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+    0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
+    0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5,
+    0xd6, 0xd6, 0xd6, 0xd6, 0x9b, 0x3f, 0xd6, 0xd6,
+    0xa4, 0xa4, 0xa4, 0x86, 0xa4, 0x3f, 0xe3, 0x3f,
+    0x3f, 0xf9, 0xe1, 0xe1, 0x9e, 0x3f, 0xe1, 0xe1,
+    0xa8, 0x8d, 0xaa, 0x8f, 0xaa, 0x3f, 0x3f, 0x3f,
+    0xe3, 0xe3, 0xa0, 0xa1, 0x3f, 0x3f, 0xe3, 0xa0,
+    0xad, 0xad, 0xad, 0x90, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf2, 0xf2, 0xfb, 0xfc, 0xeb, 0xeb, 0xf2, 0xfb,
+    0xd1, 0xd1, 0xd1, 0x95, 0xc7, 0xf9, 0xf7, 0x60,
+    0x3f, 0x3f, 0xfa, 0xfa, 0xfd, 0x3f, 0xfa, 0xfa,
+    0xbe, 0x92, 0xd5, 0x98, 0xd5, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x8e, 0x8e, 0x8e, 0x3f, 0x5f,
+    0x8b, 0x8c, 0x2c, 0x8b, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x27, 0x22, 0x3f, 0x8b, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0x8e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf8, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x63, 0x3f, 0x3f, 0x9c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0xd5, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0xea, 0xd8, 0xa6, 0xc6,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0xf1, 0x3f, 0x2f, 0x5c, 0x2a,
+    0xf8, 0x3f, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xae, 0xaf, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x88, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0xc4, 0xc4, 0xb3, 0xb3, 0x2d, 0x2d, 0x8a, 0x8a,
+    0x2d, 0x2d, 0x8a, 0x8a, 0xda, 0xda, 0xda, 0xda,
+    0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0,
+    0xd9, 0xd9, 0xd9, 0xd9, 0xc3, 0xc3, 0xc3, 0xc3,
+    0xc3, 0xc3, 0xc3, 0xc3, 0xb4, 0xb4, 0xb4, 0xb4,
+    0xb4, 0xb4, 0xb4, 0xb4, 0xc2, 0xc2, 0xc2, 0xc2,
+    0xc2, 0xc2, 0xc2, 0xc2, 0xc1, 0xc1, 0xc1, 0xc1,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5,
+    0xc5, 0xc5, 0xc5, 0xc5, 0x2d, 0x2d, 0x8a, 0x8a,
+    0xcd, 0xba, 0xc9, 0xc9, 0xc9, 0xbb, 0xbb, 0xbb,
+    0xc8, 0xc8, 0xc8, 0xbc, 0xbc, 0xbc, 0xcc, 0xcc,
+    0xcc, 0xb9, 0xb9, 0xb9, 0xcb, 0xcb, 0xcb, 0xca,
+    0xca, 0xca, 0xce, 0xce, 0xce, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0xdf, 0x3f, 0x3f, 0x3f, 0xdc, 0x3f, 0x3f, 0x3f,
+    0xdb, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xb0, 0xb1, 0xb2, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xfe, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0xae, 0xaf, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x8e, 0x8e, 0x8e, 0x8e, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x8e, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x63, 0x9c, 0x89, 0x8e, 0x8a, 0x59, 0x3f, 0x3f,
+    0xb3, 0x3c, 0x5e, 0x3e, 0x76, 0xfe, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_869 =
+{
+    { 869, 1, 0x003f, 0x003f, "OEM Greek" },
+    cp2uni,
+    cp2uni + 256,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_874.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_874.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_874.c	(revision 16410)
@@ -0,0 +1,750 @@
+/* code page 874 (ANSI/OEM Thai) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP874.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[512] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x20ac, 0x0081, 0x0082, 0x0083, 0x0084, 0x2026, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07,
+    0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f,
+    0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17,
+    0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f,
+    0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27,
+    0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f,
+    0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37,
+    0x0e38, 0x0e39, 0x0e3a, 0x003f, 0x003f, 0x003f, 0x00de, 0x0e3f,
+    0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47,
+    0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f,
+    0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57,
+    0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0x003f, 0x003f, 0x00fe, 0x003f,
+    /* glyphs */
+    0x0000, 0x263a, 0x263b, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022,
+    0x25d8, 0x25cb, 0x25d9, 0x2642, 0x2640, 0x266a, 0x266b, 0x263c,
+    0x25ba, 0x25c4, 0x2195, 0x203c, 0x00b6, 0x00a7, 0x25ac, 0x21a8,
+    0x2191, 0x2193, 0x2192, 0x2190, 0x221f, 0x2194, 0x25b2, 0x25bc,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2302,
+    0x20ac, 0x0081, 0x0082, 0x0083, 0x0084, 0x2026, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07,
+    0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f,
+    0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17,
+    0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f,
+    0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27,
+    0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f,
+    0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37,
+    0x0e38, 0x0e39, 0x0e3a, 0x003f, 0x003f, 0x003f, 0x00de, 0x0e3f,
+    0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47,
+    0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f,
+    0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57,
+    0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0x003f, 0x003f, 0x00fe, 0x003f
+};
+
+static const unsigned char uni2cp_low[4864] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x81, 0x82, 0x83, 0x84, 0x3f, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0x21, 0x63, 0x4c, 0x3f, 0x59, 0x7c, 0x3f,
+    0x22, 0x63, 0x61, 0x3c, 0x3f, 0x2d, 0x72, 0x97,
+    0x3f, 0x3f, 0x32, 0x33, 0x27, 0x75, 0x3f, 0x3f,
+    0x2c, 0x31, 0x6f, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43,
+    0x45, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0x4e, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x78,
+    0x4f, 0x55, 0x55, 0x55, 0x55, 0x59, 0xde, 0x3f,
+    0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x63,
+    0x65, 0x65, 0x65, 0x65, 0x69, 0x69, 0x69, 0x69,
+    0x64, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x3f,
+    0x6f, 0x75, 0x75, 0x75, 0x75, 0x79, 0xfe, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7c, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75, 0x55,
+    0x75, 0x55, 0x75, 0x55, 0x75, 0x3f, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0x91, 0x92, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0x97, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0x97, 0x97, 0x3f, 0x3f,
+    0x22, 0x3f, 0x3f, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0x22, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x22, 0x41, 0x3f,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x75, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0e00 .. 0x0eff */
+    0x3f, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+    0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+    0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+    0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+    0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+    0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+    0xd8, 0xd9, 0xda, 0x3f, 0x3f, 0x3f, 0x3f, 0xdf,
+    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0xfa, 0xfb, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x63, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x22, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0x22, 0x22, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x96, 0x97, 0x96, 0x3f, 0x5f,
+    0x91, 0x92, 0x2c, 0x91, 0x93, 0x94, 0x2c, 0x3f,
+    0x3f, 0x3f, 0x95, 0x3f, 0x2e, 0x3f, 0x85, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x27, 0x22, 0x3f, 0x91, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0x97, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x63, 0x3f, 0x3f, 0x4c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x80, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0x3f, 0x3f, 0x2f, 0x5c, 0x2a,
+    0x3f, 0x95, 0x56, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x54,
+    0x54, 0x54, 0x54, 0x54, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x3d, 0x7c, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x4c, 0x4c, 0x4c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x54, 0x54, 0x54, 0x2b,
+    0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x93, 0x94, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x97, 0x97, 0x97, 0x97, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x97, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x63, 0x4c, 0x3f, 0x97, 0x7c, 0x59, 0x3f, 0x3f,
+    0x7c, 0x3c, 0x5e, 0x3e, 0x76, 0x3f, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x0400, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x0500, 0x0600, 0x0700,
+    0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x0d00, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x0e00, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x0f00, 0x1200, 0x1200, 0x1000, 0x1100
+};
+
+const struct sbcs_table cptable_874 =
+{
+    { 874, 1, 0x003f, 0x003f, "ANSI/OEM Thai" },
+    cp2uni,
+    cp2uni + 256,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_875.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_875.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_875.c	(revision 16410)
@@ -0,0 +1,684 @@
+/* code page 875 (IBM EBCDIC Greek) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/EBCDIC/CP875.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+    0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+    0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+    0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+    0x0020, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
+    0x0398, 0x0399, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+    0x0026, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
+    0x03a1, 0x03a3, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+    0x002d, 0x002f, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
+    0x03aa, 0x03ab, 0x007c, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+    0x00a8, 0x0386, 0x0388, 0x0389, 0x00a0, 0x038a, 0x038c, 0x038e,
+    0x038f, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+    0x0385, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6,
+    0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+    0x0071, 0x0072, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc,
+    0x00b4, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+    0x0079, 0x007a, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3,
+    0x00a3, 0x03ac, 0x03ad, 0x03ae, 0x03ca, 0x03af, 0x03cc, 0x03cd,
+    0x03cb, 0x03ce, 0x03c2, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8,
+    0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x00ad, 0x03c9, 0x0390, 0x03b0, 0x2018, 0x2015,
+    0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+    0x0051, 0x0052, 0x00b1, 0x00bd, 0x001a, 0x0387, 0x2019, 0x00a6,
+    0x005c, 0x001a, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+    0x0059, 0x005a, 0x00b2, 0x00a7, 0x001a, 0x001a, 0x00ab, 0x00ac,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x00b3, 0x00a9, 0x001a, 0x001a, 0x00bb, 0x009f
+};
+
+static const unsigned char uni2cp_low[4608] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
+    0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26,
+    0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x40, 0x4f, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
+    0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
+    0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
+    0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
+    0xe7, 0xe8, 0xe9, 0x4a, 0xe0, 0x5a, 0x5f, 0x6d,
+    0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
+    0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
+    0xa7, 0xa8, 0xa9, 0xc0, 0x6a, 0xd0, 0xa1, 0x07,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b,
+    0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08,
+    0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff,
+    0x74, 0x4f, 0x83, 0xb0, 0x3f, 0xe8, 0xdf, 0xeb,
+    0x70, 0xfb, 0x81, 0xee, 0xef, 0xca, 0x99, 0xcf,
+    0x90, 0xda, 0xea, 0xfa, 0xa0, 0x9f, 0x3f, 0x3f,
+    0x6b, 0xf1, 0x96, 0xfe, 0x3f, 0xdb, 0x3f, 0x3f,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc3,
+    0xc5, 0xc5, 0xc5, 0xc5, 0xc9, 0xc9, 0xc9, 0xc9,
+    0xc4, 0xd5, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xa7,
+    0xd6, 0xe4, 0xe4, 0xe4, 0xe4, 0xe8, 0x3f, 0x8b,
+    0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x83,
+    0x85, 0x85, 0x85, 0x85, 0x89, 0x89, 0x89, 0x89,
+    0x84, 0x95, 0x96, 0x96, 0x96, 0x96, 0x96, 0x3f,
+    0x96, 0xa4, 0xa4, 0xa4, 0xa4, 0xa8, 0x3f, 0xa8,
+    /* 0x0100 .. 0x01ff */
+    0xc1, 0x81, 0xc1, 0x81, 0xc1, 0x81, 0xc3, 0x83,
+    0xc3, 0x83, 0xc3, 0x83, 0xc3, 0x83, 0xc4, 0x84,
+    0xc4, 0x84, 0xc5, 0x85, 0xc5, 0x85, 0xc5, 0x85,
+    0xc5, 0x85, 0xc5, 0x85, 0xc7, 0x87, 0xc7, 0x87,
+    0xc7, 0x87, 0xc7, 0x87, 0xc8, 0x88, 0xc8, 0x88,
+    0xc9, 0x89, 0xc9, 0x89, 0xc9, 0x89, 0xc9, 0x89,
+    0xc9, 0x89, 0x3f, 0x3f, 0xd1, 0x91, 0xd2, 0x92,
+    0x3f, 0xd3, 0x93, 0xd3, 0x93, 0xd3, 0x93, 0x3f,
+    0x3f, 0xd3, 0x93, 0xd5, 0x95, 0xd5, 0x95, 0xd5,
+    0x95, 0x3f, 0x3f, 0x3f, 0xd6, 0x96, 0xd6, 0x96,
+    0xd6, 0x96, 0xd6, 0x96, 0xd9, 0x99, 0xd9, 0x99,
+    0xd9, 0x99, 0xe2, 0xa2, 0xe2, 0xa2, 0xe2, 0xa2,
+    0xe2, 0xa2, 0xe3, 0xa3, 0xe3, 0xa3, 0xe3, 0xa3,
+    0xe4, 0xa4, 0xe4, 0xa4, 0xe4, 0xa4, 0xe4, 0xa4,
+    0xe4, 0xa4, 0xe4, 0xa4, 0xe6, 0xa6, 0xe8, 0xa8,
+    0xe8, 0xe9, 0xa9, 0xe9, 0xa9, 0xe9, 0xa9, 0xa2,
+    0x82, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xc4, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc5, 0xc6, 0x86, 0x3f, 0x3f, 0x3f, 0x3f, 0xc9,
+    0x3f, 0x3f, 0x93, 0x3f, 0x3f, 0x3f, 0x3f, 0xd6,
+    0xd6, 0x96, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f, 0xe3, 0xe4,
+    0xa4, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xa9, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xc1, 0x81, 0xc9,
+    0x89, 0xd6, 0x96, 0xe4, 0xa4, 0xe4, 0xa4, 0xe4,
+    0xa4, 0xe4, 0xa4, 0xe4, 0xa4, 0x3f, 0xc1, 0x81,
+    0xc1, 0x81, 0xc1, 0x81, 0xc7, 0x87, 0xc7, 0x87,
+    0xd2, 0x92, 0xd6, 0x96, 0xd6, 0x96, 0x3f, 0x3f,
+    0x91, 0x3f, 0x3f, 0x3f, 0xc7, 0x87, 0x3f, 0x3f,
+    0xd5, 0x95, 0xc1, 0x81, 0xc1, 0x81, 0xd6, 0x96,
+    /* 0x0200 .. 0x02ff */
+    0xc1, 0x81, 0xc1, 0x81, 0xc5, 0x85, 0xc5, 0x85,
+    0xc9, 0x89, 0xc9, 0x89, 0xd6, 0x96, 0xd6, 0x96,
+    0xd9, 0x99, 0xd9, 0x99, 0xe4, 0xa4, 0xe4, 0xa4,
+    0xe2, 0xa2, 0xe3, 0xa3, 0x3f, 0x3f, 0xc8, 0x88,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xc1, 0x81,
+    0xc5, 0x85, 0xd6, 0x96, 0xd6, 0x96, 0xd6, 0x96,
+    0xd6, 0x96, 0xe8, 0xa8, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x87, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x88, 0x3f, 0x91, 0x99, 0x3f, 0x3f, 0x3f, 0xa6,
+    0xa8, 0xa0, 0x7f, 0xce, 0xde, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5f, 0x3f, 0x5f, 0xa5,
+    0x7d, 0xcf, 0xa0, 0x79, 0x3f, 0x6d, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x90, 0x3f, 0xa1, 0x7f, 0x3f, 0x3f,
+    0x3f, 0x93, 0xa2, 0xa7, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x79, 0xa0, 0x5f, 0xa1, 0xcf, 0xcf, 0x3f, 0x3f,
+    0x70, 0x3f, 0x90, 0x7f, 0xa5, 0x3f, 0x7f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x6b,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6d, 0x6d, 0x6d, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x79, 0xa0, 0x3f, 0x3f, 0x70, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xa0, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xa0, 0x80, 0x71, 0xdd,
+    0x72, 0x73, 0x75, 0x3f, 0x76, 0x3f, 0x77, 0x78,
+    0xcc, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56,
+    0x57, 0x58, 0x3f, 0x59, 0x62, 0x63, 0x64, 0x65,
+    0x66, 0x67, 0x68, 0x69, 0xb1, 0xb2, 0xb3, 0xb5,
+    0xcd, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x9a,
+    0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xaa, 0xab, 0xac,
+    0xad, 0xae, 0xba, 0xaf, 0xbb, 0xbc, 0xbd, 0xbe,
+    0xbf, 0xcb, 0xb4, 0xb8, 0xb6, 0xb7, 0xb9, 0x3f,
+    0x8b, 0x9b, 0x63, 0x63, 0x63, 0xbd, 0xad, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x9d, 0xae, 0xba, 0x3f, 0x48, 0x8e, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xc1, 0xc1, 0xc2, 0x3f,
+    0xc4, 0xc5, 0x3f, 0xc7, 0xc8, 0xc9, 0xd1, 0xd2,
+    0xd3, 0xd4, 0xd5, 0x3f, 0xd6, 0x3f, 0xd7, 0xd9,
+    0xe3, 0xe4, 0xe6, 0x81, 0x3f, 0x3f, 0x3f, 0x82,
+    0x84, 0x85, 0x3f, 0x3f, 0x3f, 0x87, 0x3f, 0x92,
+    0x94, 0x3f, 0x96, 0x3f, 0x3f, 0x3f, 0x97, 0xa3,
+    0xa4, 0x3f, 0x3f, 0xa5, 0x3f, 0x8b, 0x8c, 0x8d,
+    0xbd, 0xbe, 0x89, 0x99, 0xa4, 0xa5, 0x8b, 0x8c,
+    0xae, 0xbd, 0xbe, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x83, 0x3f, 0x84, 0x3f,
+    0x86, 0x3f, 0x87, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xa3, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0xa9, 0x3f, 0x3f, 0x3f, 0x9b,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0xc1, 0x81, 0xc2, 0x82, 0xc2, 0x82, 0xc2, 0x82,
+    0xc3, 0x83, 0xc4, 0x84, 0xc4, 0x84, 0xc4, 0x84,
+    0xc4, 0x84, 0xc4, 0x84, 0xc5, 0x85, 0xc5, 0x85,
+    0xc5, 0x85, 0xc5, 0x85, 0xc5, 0x85, 0xc6, 0x86,
+    0xc7, 0x87, 0xc8, 0x88, 0xc8, 0x88, 0xc8, 0x88,
+    0xc8, 0x88, 0xc8, 0x88, 0xc9, 0x89, 0xc9, 0x89,
+    0xd2, 0x92, 0xd2, 0x92, 0xd2, 0x92, 0xd3, 0x93,
+    0xd3, 0x93, 0xd3, 0x93, 0xd3, 0x93, 0xd4, 0x94,
+    0xd4, 0x94, 0xd4, 0x94, 0xd5, 0x95, 0xd5, 0x95,
+    0xd5, 0x95, 0xd5, 0x95, 0xd6, 0x96, 0xd6, 0x96,
+    0xd6, 0x96, 0xd6, 0x96, 0xd7, 0x97, 0xd7, 0x97,
+    0xd9, 0x99, 0xd9, 0x99, 0xd9, 0x99, 0xd9, 0x99,
+    0xe2, 0xa2, 0xe2, 0xa2, 0xe2, 0xa2, 0xe2, 0xa2,
+    0xe2, 0xa2, 0xe3, 0xa3, 0xe3, 0xa3, 0xe3, 0xa3,
+    0xe3, 0xa3, 0xe4, 0xa4, 0xe4, 0xa4, 0xe4, 0xa4,
+    0xe4, 0xa4, 0xe4, 0xa4, 0xe5, 0xa5, 0xe5, 0xa5,
+    0xe6, 0xa6, 0xe6, 0xa6, 0xe6, 0xa6, 0xe6, 0xa6,
+    0xe6, 0xa6, 0xe7, 0xa7, 0xe7, 0xa7, 0xe8, 0xa8,
+    0xe9, 0xa9, 0xe9, 0xa9, 0xe9, 0xa9, 0x88, 0xa3,
+    0xa6, 0xa8, 0x3f, 0xa2, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc1, 0x81, 0xc1, 0x81, 0xc1, 0x81, 0xc1, 0x81,
+    0xc1, 0x81, 0xc1, 0x81, 0xc1, 0x81, 0xc1, 0x81,
+    0xc1, 0x81, 0xc1, 0x81, 0xc1, 0x81, 0xc1, 0x81,
+    0xc5, 0x85, 0xc5, 0x85, 0xc5, 0x85, 0xc5, 0x85,
+    0xc5, 0x85, 0xc5, 0x85, 0xc5, 0x85, 0xc5, 0x85,
+    0xc9, 0x89, 0xc9, 0x89, 0xd6, 0x96, 0xd6, 0x96,
+    0xd6, 0x96, 0xd6, 0x96, 0xd6, 0x96, 0xd6, 0x96,
+    0xd6, 0x96, 0xd6, 0x96, 0xd6, 0x96, 0xd6, 0x96,
+    0xd6, 0x96, 0xd6, 0x96, 0xe4, 0xa4, 0xe4, 0xa4,
+    0xe4, 0xa4, 0xe4, 0xa4, 0xe4, 0xa4, 0xe4, 0xa4,
+    0xe4, 0xa4, 0xe8, 0xa8, 0xe8, 0xa8, 0xe8, 0xa8,
+    0xe8, 0xa8, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a,
+    0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47,
+    0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0x3f, 0x3f,
+    0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x3f, 0x3f,
+    0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc,
+    0x3f, 0x63, 0x3f, 0x63, 0x3f, 0x63, 0x3f, 0x63,
+    0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb,
+    0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67,
+    0x8a, 0xb1, 0x8e, 0xb2, 0x9a, 0xb3, 0x9c, 0xb5,
+    0xac, 0xb6, 0xbc, 0xb7, 0xcb, 0xb9, 0x3f, 0x3f,
+    0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a,
+    0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47,
+    0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb,
+    0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67,
+    0x8a, 0x8a, 0x8a, 0x8a, 0xb1, 0x3f, 0x8a, 0x8a,
+    0x41, 0x41, 0x41, 0x71, 0x41, 0x3f, 0x9c, 0x3f,
+    0x3f, 0x70, 0x9a, 0x9a, 0xb3, 0x3f, 0x9a, 0x9a,
+    0x45, 0x72, 0x47, 0x73, 0x47, 0x3f, 0x3f, 0x3f,
+    0x9c, 0x9c, 0xb4, 0xcc, 0x3f, 0x3f, 0x9c, 0xb4,
+    0x49, 0x49, 0x49, 0x75, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xbc, 0xbc, 0xb8, 0xcd, 0xae, 0xae, 0xbc, 0xb8,
+    0x63, 0x63, 0x63, 0x77, 0x58, 0x70, 0x80, 0x79,
+    0x3f, 0x3f, 0xcb, 0xcb, 0xb9, 0x3f, 0xcb, 0xcb,
+    0x56, 0x76, 0x67, 0x78, 0x67, 0xa0, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
+    0x40, 0x40, 0x40, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x60, 0x3f, 0xcf, 0xcf, 0xcf, 0x3f, 0x6d,
+    0xce, 0xde, 0x6b, 0xce, 0x7f, 0x7f, 0x6b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x4b, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x40,
+    0x3f, 0x3f, 0xa0, 0x7f, 0x3f, 0xce, 0x3f, 0x3f,
+    0x3f, 0x4c, 0x6e, 0x3f, 0x4f, 0x3f, 0xcf, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x61, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x40,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x90, 0x89, 0x3f, 0x3f, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0x4e, 0x60, 0x7e, 0x4d, 0x5d, 0x95,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0x4e, 0x60, 0x7e, 0x4d, 0x5d, 0x3f,
+    0x81, 0x85, 0x96, 0xa7, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x83, 0x3f, 0x3f, 0xb0, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0xc3, 0x3f, 0x3f, 0x3f, 0x3f, 0xc5,
+    0x3f, 0x3f, 0x87, 0xc8, 0xc8, 0xc8, 0x88, 0x88,
+    0xc9, 0xc9, 0xd3, 0x93, 0x3f, 0xd5, 0x3f, 0x3f,
+    0xd7, 0xd7, 0xd8, 0xd9, 0xd9, 0xd9, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xe9, 0x3f, 0x67, 0x3f,
+    0xe9, 0x3f, 0xd2, 0xc1, 0xc2, 0xc3, 0x85, 0x85,
+    0xc5, 0xc6, 0x3f, 0xd4, 0x96, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x89, 0x3f, 0x3f, 0xad, 0x8c, 0x43, 0x57,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xc4, 0x84, 0x85,
+    0x89, 0x91, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xc9, 0x3f, 0x3f, 0x3f, 0xe5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xe7, 0x3f, 0x3f, 0xd3, 0xc3, 0xc4, 0xd4,
+    0x89, 0x3f, 0x3f, 0x3f, 0xa5, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa7, 0x3f, 0x3f, 0x93, 0x83, 0x84, 0x94,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4c, 0x5f, 0x6e, 0xa5, 0x60, 0x6a, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x4c, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x60, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xd6, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x60, 0xda, 0x3f, 0x61, 0xe0, 0x5c,
+    0x90, 0x3f, 0xe5, 0x3f, 0x3f, 0x3f, 0x3f, 0xd3,
+    0x3f, 0x3f, 0x3f, 0x6a, 0x6a, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x95, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xa1, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xa1, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xa1, 0xa1, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x7e, 0x7e, 0x7e, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0xee, 0xfe, 0x3f, 0x3f, 0x4c, 0x6e,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x4c, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
+    0xf9, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xc1, 0xc2,
+    0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xd1,
+    0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9,
+    0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
+    0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88,
+    0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+    0xa8, 0xa9, 0xf0, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x60, 0x60, 0x6a, 0x6a, 0x60, 0x60, 0xdf, 0xdf,
+    0x60, 0x60, 0xdf, 0xdf, 0x4e, 0x4e, 0x4e, 0x4e,
+    0xef, 0xef, 0xef, 0xef, 0xd3, 0xd3, 0xd3, 0xd3,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0xe3, 0xe3, 0xe3, 0xe3,
+    0xe3, 0xe3, 0xe3, 0xe3, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x60, 0x60, 0xdf, 0xdf,
+    0x7e, 0x6a, 0x4e, 0x4e, 0x4e, 0xef, 0xef, 0xef,
+    0xd3, 0xd3, 0xd3, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0xe3, 0xe3, 0xe3, 0x4e,
+    0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x61, 0xe0, 0xe7, 0x60, 0x6a, 0x60, 0x6a,
+    0x60, 0x6a, 0x60, 0x6a, 0x60, 0x6a, 0x60, 0x6a,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0xd6, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xd6,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x40, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4c, 0x6e, 0xee, 0xfe, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x4a, 0x5a, 0x3f, 0x7f, 0x7f, 0x6b,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x4e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xcf, 0xcf, 0xcf, 0xcf, 0x6d, 0x6d, 0x6d,
+    0x6b, 0x3f, 0x4b, 0x3f, 0x5e, 0x7a, 0x6f, 0x4f,
+    0xcf, 0x4d, 0x5d, 0xc0, 0xd0, 0x3f, 0x3f, 0x7b,
+    0x50, 0x5c, 0x4e, 0x60, 0x4c, 0x6e, 0x7e, 0x3f,
+    0xe0, 0x5b, 0x6c, 0x7c, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x4f, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
+    0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
+    0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
+    0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
+    0xe7, 0xe8, 0xe9, 0x4a, 0xe0, 0x5a, 0x5f, 0x6d,
+    0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
+    0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
+    0xa7, 0xa8, 0xa9, 0xc0, 0x6a, 0xd0, 0xa1, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x83, 0xb0, 0xef, 0xcf, 0xdf, 0xe8, 0x3f, 0x3f,
+    0x6a, 0x4c, 0x5f, 0x6e, 0xa5, 0x3f, 0xd6, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0d00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0e00, 0x1100, 0x1100, 0x0f00, 0x1000
+};
+
+const struct sbcs_table cptable_875 =
+{
+    { 875, 1, 0x003f, 0x003f, "IBM EBCDIC Greek" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_878.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_878.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_878.c	(revision 16410)
@@ -0,0 +1,717 @@
+/* code page 878 (Russian KOI8) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MISC/KOI8-R.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524,
+    0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590,
+    0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248,
+    0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7,
+    0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556,
+    0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e,
+    0x255f, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565,
+    0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x00a9,
+    0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
+    0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+    0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
+    0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
+    0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
+    0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+    0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
+    0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a
+};
+
+static const unsigned char uni2cp_low[4864] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x9a, 0x21, 0x63, 0x4c, 0x3f, 0x59, 0x7c, 0x3f,
+    0x22, 0xbf, 0x61, 0x3c, 0x3f, 0x2d, 0x72, 0x2d,
+    0x9c, 0x3f, 0x9d, 0x33, 0x27, 0x75, 0x3f, 0x9e,
+    0x2c, 0x31, 0x6f, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43,
+    0x45, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+    0x44, 0x4e, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x78,
+    0x4f, 0x55, 0x55, 0x55, 0x55, 0x59, 0x3f, 0x3f,
+    0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x63,
+    0x65, 0x65, 0x65, 0x65, 0x69, 0x69, 0x69, 0x69,
+    0x64, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x9f,
+    0x6f, 0x75, 0x75, 0x75, 0x75, 0x79, 0x3f, 0x79,
+    /* 0x0100 .. 0x01ff */
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x43, 0x63,
+    0x43, 0x63, 0x43, 0x63, 0x43, 0x63, 0x44, 0x64,
+    0x44, 0x64, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x47, 0x67, 0x47, 0x67,
+    0x47, 0x67, 0x47, 0x67, 0x48, 0x68, 0x48, 0x68,
+    0x49, 0x69, 0x49, 0x69, 0x49, 0x69, 0x49, 0x69,
+    0x49, 0x69, 0x3f, 0x3f, 0x4a, 0x6a, 0x4b, 0x6b,
+    0x3f, 0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x3f,
+    0x3f, 0x4c, 0x6c, 0x4e, 0x6e, 0x4e, 0x6e, 0x4e,
+    0x6e, 0x3f, 0x3f, 0x3f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x52, 0x72, 0x52, 0x72,
+    0x52, 0x72, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x57, 0x77, 0x59, 0x79,
+    0x59, 0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x73,
+    0x62, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x44, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x46, 0x66, 0x3f, 0x3f, 0x3f, 0x3f, 0x49,
+    0x3f, 0x3f, 0x6c, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x4f, 0x6f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f, 0x54, 0x55,
+    0x75, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x81, 0x3f, 0x3f, 0x21, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61, 0x49,
+    0x69, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75, 0x55,
+    0x75, 0x55, 0x75, 0x55, 0x75, 0x3f, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x47, 0x67, 0x47, 0x67,
+    0x4b, 0x6b, 0x4f, 0x6f, 0x4f, 0x6f, 0x3f, 0x3f,
+    0x6a, 0x3f, 0x3f, 0x3f, 0x47, 0x67, 0x3f, 0x3f,
+    0x4e, 0x6e, 0x41, 0x61, 0x41, 0x61, 0x4f, 0x6f,
+    /* 0x0200 .. 0x02ff */
+    0x41, 0x61, 0x41, 0x61, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x52, 0x72, 0x52, 0x72, 0x55, 0x75, 0x55, 0x75,
+    0x53, 0x73, 0x54, 0x74, 0x3f, 0x3f, 0x48, 0x68,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x61,
+    0x45, 0x65, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x68, 0x3f, 0x6a, 0x72, 0x3f, 0x3f, 0x3f, 0x77,
+    0x79, 0x27, 0x22, 0x60, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x5e, 0x76,
+    0x27, 0x2d, 0x27, 0x60, 0x3f, 0x5f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x9c, 0x3f, 0x7e, 0x22, 0x3f, 0x3f,
+    0x3f, 0x6c, 0x73, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0300 .. 0x03ff */
+    0x60, 0x27, 0x5e, 0x7e, 0x2d, 0x2d, 0x3f, 0x3f,
+    0x22, 0x3f, 0x9c, 0x22, 0x76, 0x3f, 0x22, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x5f, 0x5f, 0x5f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x60, 0x27, 0x3f, 0x3f, 0x22, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x27, 0x22, 0x41, 0x9e,
+    0x45, 0x48, 0x49, 0x3f, 0x4f, 0x3f, 0x59, 0x3f,
+    0x3f, 0x41, 0x42, 0x3f, 0x3f, 0x45, 0x5a, 0x48,
+    0x3f, 0x49, 0x4b, 0x3f, 0x4d, 0x4e, 0x3f, 0x4f,
+    0x3f, 0x50, 0x3f, 0x3f, 0x54, 0x59, 0x3f, 0x58,
+    0x3f, 0x3f, 0x49, 0x59, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x75, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x59, 0x59, 0x59, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x0400 .. 0x04ff */
+    0xe5, 0xb3, 0x3f, 0xe7, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xeb, 0xe9, 0xf5, 0x3f,
+    0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa,
+    0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0,
+    0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe,
+    0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1,
+    0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda,
+    0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0,
+    0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde,
+    0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1,
+    0xc5, 0xa3, 0x3f, 0xc7, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xcb, 0xc9, 0xd5, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0xf6, 0xd6, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xe1, 0xc1, 0xe1, 0xc1, 0x3f, 0x3f, 0xe5, 0xc5,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xf6, 0xd6, 0xfa, 0xda,
+    0x3f, 0x3f, 0xe9, 0xc9, 0xe9, 0xc9, 0xef, 0xcf,
+    0x3f, 0x3f, 0x3f, 0x3f, 0xfc, 0xdc, 0xf5, 0xd5,
+    0xf5, 0xd5, 0xf5, 0xd5, 0xfe, 0xde, 0x3f, 0x3f,
+    0xf9, 0xd9, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1d00 .. 0x1dff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x41, 0x42, 0x3f,
+    0x44, 0x45, 0x3f, 0x47, 0x48, 0x49, 0x4a, 0x4b,
+    0x4c, 0x4d, 0x4e, 0x3f, 0x4f, 0x3f, 0x50, 0x52,
+    0x54, 0x55, 0x57, 0x61, 0x3f, 0x3f, 0x3f, 0x62,
+    0x64, 0x65, 0x3f, 0x3f, 0x3f, 0x67, 0x3f, 0x6b,
+    0x6d, 0x3f, 0x6f, 0x3f, 0x3f, 0x3f, 0x70, 0x74,
+    0x75, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x69, 0x72, 0x75, 0x76, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0xce, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x63, 0x3f, 0x64, 0x3f,
+    0x66, 0x3f, 0x67, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x74, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x7a, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1e00 .. 0x1eff */
+    0x41, 0x61, 0x42, 0x62, 0x42, 0x62, 0x42, 0x62,
+    0x43, 0x63, 0x44, 0x64, 0x44, 0x64, 0x44, 0x64,
+    0x44, 0x64, 0x44, 0x64, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x46, 0x66,
+    0x47, 0x67, 0x48, 0x68, 0x48, 0x68, 0x48, 0x68,
+    0x48, 0x68, 0x48, 0x68, 0x49, 0x69, 0x49, 0x69,
+    0x4b, 0x6b, 0x4b, 0x6b, 0x4b, 0x6b, 0x4c, 0x6c,
+    0x4c, 0x6c, 0x4c, 0x6c, 0x4c, 0x6c, 0x4d, 0x6d,
+    0x4d, 0x6d, 0x4d, 0x6d, 0x4e, 0x6e, 0x4e, 0x6e,
+    0x4e, 0x6e, 0x4e, 0x6e, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x50, 0x70, 0x50, 0x70,
+    0x52, 0x72, 0x52, 0x72, 0x52, 0x72, 0x52, 0x72,
+    0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+    0x53, 0x73, 0x54, 0x74, 0x54, 0x74, 0x54, 0x74,
+    0x54, 0x74, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x56, 0x76, 0x56, 0x76,
+    0x57, 0x77, 0x57, 0x77, 0x57, 0x77, 0x57, 0x77,
+    0x57, 0x77, 0x58, 0x78, 0x58, 0x78, 0x59, 0x79,
+    0x5a, 0x7a, 0x5a, 0x7a, 0x5a, 0x7a, 0x68, 0x74,
+    0x77, 0x79, 0x3f, 0x73, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x41, 0x61, 0x41, 0x61, 0x41, 0x61, 0x41, 0x61,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x45, 0x65, 0x45, 0x65, 0x45, 0x65, 0x45, 0x65,
+    0x49, 0x69, 0x49, 0x69, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f, 0x4f, 0x6f,
+    0x4f, 0x6f, 0x4f, 0x6f, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x55, 0x75, 0x55, 0x75, 0x55, 0x75,
+    0x55, 0x75, 0x59, 0x79, 0x59, 0x79, 0x59, 0x79,
+    0x59, 0x79, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x1f00 .. 0x1fff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59, 0x3f, 0x59,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x22, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x45, 0x45, 0x48, 0x48, 0x48, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x49, 0x49, 0x49, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x59, 0x59, 0x59, 0x59, 0x50, 0x22, 0x22, 0x60,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x4f, 0x4f, 0x3f, 0x3f, 0x3f, 0x27, 0x3f, 0x3f,
+    /* 0x2000 .. 0x20ff */
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x2d, 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x5f,
+    0x60, 0x27, 0x2c, 0x60, 0x22, 0x22, 0x2c, 0x3f,
+    0x3f, 0x3f, 0x95, 0x3f, 0x2e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x27, 0x22, 0x3f, 0x60, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x21, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x2f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x20,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x9c, 0x69, 0x3f, 0x3f, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x6e,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x2b, 0x2d, 0x3d, 0x28, 0x29, 0x3f,
+    0x61, 0x65, 0x6f, 0x78, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x63, 0x3f, 0x3f, 0x4c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2100 .. 0x21ff */
+    0x3f, 0x3f, 0x43, 0x3f, 0x3f, 0x3f, 0x3f, 0x45,
+    0x3f, 0x3f, 0x67, 0x48, 0x48, 0x48, 0x68, 0x68,
+    0x49, 0x49, 0x4c, 0x6c, 0x3f, 0x4e, 0x3f, 0x3f,
+    0x50, 0x50, 0x51, 0x52, 0x52, 0x52, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x5a, 0x3f, 0x3f, 0x3f,
+    0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65,
+    0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x69, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x44, 0x64, 0x65,
+    0x69, 0x6a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x49, 0x3f, 0x3f, 0x3f, 0x56, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x58, 0x3f, 0x3f, 0x4c, 0x43, 0x44, 0x4d,
+    0x69, 0x3f, 0x3f, 0x3f, 0x76, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x78, 0x3f, 0x3f, 0x6c, 0x63, 0x64, 0x6d,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x5e, 0x3e, 0x76, 0x2d, 0x7c, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x2d, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2200 .. 0x22ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x2d, 0x3f, 0x3f, 0x2f, 0x5c, 0x2a,
+    0x9c, 0x95, 0x96, 0x3f, 0x3f, 0x3f, 0x3f, 0x4c,
+    0x3f, 0x3f, 0x3f, 0x7c, 0x7c, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x6e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3a, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x7e, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x7e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x97, 0x97, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3d, 0x3d, 0x3d, 0x3d, 0x98, 0x99, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3c, 0x3e,
+    0x98, 0x99, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x9e, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2300 .. 0x23ff */
+    0x3f, 0x3f, 0x3f, 0x5e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x93, 0x9b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2400 .. 0x24ff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x42,
+    0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+    0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
+    0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+    0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+    0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+    0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+    0x79, 0x7a, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x2500 .. 0x25ff */
+    0x80, 0x80, 0x81, 0x81, 0x2d, 0x2d, 0x7c, 0x7c,
+    0x2d, 0x2d, 0x7c, 0x7c, 0x82, 0x82, 0x82, 0x82,
+    0x83, 0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84,
+    0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x86,
+    0x86, 0x86, 0x86, 0x86, 0x87, 0x87, 0x87, 0x87,
+    0x87, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88, 0x88,
+    0x88, 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x89,
+    0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a,
+    0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
+    0x8a, 0x8a, 0x8a, 0x8a, 0x2d, 0x2d, 0x7c, 0x7c,
+    0xa0, 0xa1, 0xa2, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8,
+    0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0,
+    0xb1, 0xb2, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9,
+    0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2f, 0x5c, 0x58, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c, 0x2d, 0x7c,
+    0x8b, 0x3f, 0x3f, 0x3f, 0x8c, 0x3f, 0x3f, 0x3f,
+    0x8d, 0x3f, 0x3f, 0x3f, 0x8e, 0x3f, 0x3f, 0x3f,
+    0x8f, 0x90, 0x91, 0x92, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x94, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x4f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x4f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0x3000 .. 0x30ff */
+    0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3c, 0x3e, 0x3c, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x5b, 0x5d, 0x3f, 0x22, 0x22, 0x2c,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfb00 .. 0xfbff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xfe00 .. 0xfeff */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x2d, 0x2d, 0x2d, 0x2d, 0x5f, 0x5f, 0x5f,
+    0x2c, 0x3f, 0x2e, 0x3f, 0x3b, 0x3a, 0x3f, 0x21,
+    0x2d, 0x28, 0x29, 0x7b, 0x7d, 0x3f, 0x3f, 0x23,
+    0x26, 0x2a, 0x2b, 0x2d, 0x3c, 0x3e, 0x3d, 0x3f,
+    0x5c, 0x24, 0x25, 0x40, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* 0xff00 .. 0xffff */
+    0x3f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x63, 0x4c, 0x3f, 0x2d, 0x7c, 0x59, 0x3f, 0x3f,
+    0x81, 0x3c, 0x5e, 0x3e, 0x76, 0x94, 0x4f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    /* defaults */
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x0400, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x0500, 0x0600, 0x0700,
+    0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x0d00, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x0e00, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200, 0x1200,
+    0x1200, 0x1200, 0x1200, 0x0f00, 0x1200, 0x1200, 0x1000, 0x1100
+};
+
+const struct sbcs_table cptable_878 =
+{
+    { 878, 1, 0x003f, 0x003f, "Russian KOI8" },
+    cp2uni,
+    cp2uni,
+    uni2cp_low,
+    uni2cp_high
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_932.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_932.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_932.c	(revision 16410)
@@ -0,0 +1,5242 @@
+/* code page 932 (ANSI/OEM Japanese Shift-JIS) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[12032] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0080, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x003f, 0xff61, 0xff62, 0xff63, 0xff64, 0xff65, 0xff66, 0xff67,
+    0xff68, 0xff69, 0xff6a, 0xff6b, 0xff6c, 0xff6d, 0xff6e, 0xff6f,
+    0xff70, 0xff71, 0xff72, 0xff73, 0xff74, 0xff75, 0xff76, 0xff77,
+    0xff78, 0xff79, 0xff7a, 0xff7b, 0xff7c, 0xff7d, 0xff7e, 0xff7f,
+    0xff80, 0xff81, 0xff82, 0xff83, 0xff84, 0xff85, 0xff86, 0xff87,
+    0xff88, 0xff89, 0xff8a, 0xff8b, 0xff8c, 0xff8d, 0xff8e, 0xff8f,
+    0xff90, 0xff91, 0xff92, 0xff93, 0xff94, 0xff95, 0xff96, 0xff97,
+    0xff98, 0xff99, 0xff9a, 0xff9b, 0xff9c, 0xff9d, 0xff9e, 0xff9f,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x003f, 0x00fe, 0x003f,
+    /* unused lead bytes */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte 81 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x3000, 0x3001, 0x3002, 0xff0c, 0xff0e, 0x30fb, 0xff1a, 0xff1b,
+    0xff1f, 0xff01, 0x309b, 0x309c, 0x00b4, 0xff40, 0x00a8, 0xff3e,
+    0xffe3, 0xff3f, 0x30fd, 0x30fe, 0x309d, 0x309e, 0x3003, 0x4edd,
+    0x3005, 0x3006, 0x3007, 0x30fc, 0x2015, 0x2010, 0xff0f, 0xff3c,
+    0xff5e, 0x2225, 0xff5c, 0x2026, 0x2025, 0x2018, 0x2019, 0x201c,
+    0x201d, 0xff08, 0xff09, 0x3014, 0x3015, 0xff3b, 0xff3d, 0xff5b,
+    0xff5d, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c, 0x300d, 0x300e,
+    0x300f, 0x3010, 0x3011, 0xff0b, 0xff0d, 0x00b1, 0x00d7, 0x003f,
+    0x00f7, 0xff1d, 0x2260, 0xff1c, 0xff1e, 0x2266, 0x2267, 0x221e,
+    0x2234, 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xffe5,
+    0xff04, 0xffe0, 0xffe1, 0xff05, 0xff03, 0xff06, 0xff0a, 0xff20,
+    0x00a7, 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7, 0x25c6,
+    0x25a1, 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc, 0x203b, 0x3012,
+    0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x2208, 0x220b, 0x2286, 0x2287, 0x2282, 0x2283, 0x222a, 0x2229,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x2227, 0x2228, 0xffe2, 0x21d2, 0x21d4, 0x2200, 0x2203, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x2220, 0x22a5, 0x2312, 0x2202, 0x2207, 0x2261,
+    0x2252, 0x226a, 0x226b, 0x221a, 0x223d, 0x221d, 0x2235, 0x222b,
+    0x222c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x212b, 0x2030, 0x266f, 0x266d, 0x266a, 0x2020, 0x2021, 0x00b6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x25ef, 0x003f, 0x003f, 0x003f,
+    /* lead byte 82 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xff10,
+    0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18,
+    0xff19, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28,
+    0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30,
+    0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38,
+    0xff39, 0xff3a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47,
+    0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f,
+    0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57,
+    0xff58, 0xff59, 0xff5a, 0x003f, 0x003f, 0x003f, 0x003f, 0x3041,
+    0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049,
+    0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050, 0x3051,
+    0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059,
+    0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060, 0x3061,
+    0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069,
+    0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070, 0x3071,
+    0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079,
+    0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080, 0x3081,
+    0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089,
+    0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090, 0x3091,
+    0x3092, 0x3093, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte 83 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8,
+    0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0,
+    0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8,
+    0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0,
+    0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8,
+    0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0,
+    0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8,
+    0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x003f,
+    0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7,
+    0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef,
+    0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0391,
+    0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399,
+    0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1,
+    0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x03b1,
+    0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9,
+    0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1,
+    0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte 84 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416,
+    0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+    0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426,
+    0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e,
+    0x042f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436,
+    0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x003f,
+    0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445,
+    0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d,
+    0x044e, 0x044f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x2500,
+    0x2502, 0x250c, 0x2510, 0x2518, 0x2514, 0x251c, 0x252c, 0x2524,
+    0x2534, 0x253c, 0x2501, 0x2503, 0x250f, 0x2513, 0x251b, 0x2517,
+    0x2523, 0x2533, 0x252b, 0x253b, 0x254b, 0x2520, 0x252f, 0x2528,
+    0x2537, 0x253f, 0x251d, 0x2530, 0x2525, 0x2538, 0x2542, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte 87 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467,
+    0x2468, 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f,
+    0x2470, 0x2471, 0x2472, 0x2473, 0x2160, 0x2161, 0x2162, 0x2163,
+    0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x003f, 0x3349,
+    0x3314, 0x3322, 0x334d, 0x3318, 0x3327, 0x3303, 0x3336, 0x3351,
+    0x3357, 0x330d, 0x3326, 0x3323, 0x332b, 0x334a, 0x333b, 0x339c,
+    0x339d, 0x339e, 0x338e, 0x338f, 0x33c4, 0x33a1, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x337b, 0x003f,
+    0x301d, 0x301f, 0x2116, 0x33cd, 0x2121, 0x32a4, 0x32a5, 0x32a6,
+    0x32a7, 0x32a8, 0x3231, 0x3232, 0x3239, 0x337e, 0x337d, 0x337c,
+    0x2252, 0x2261, 0x222b, 0x222e, 0x2211, 0x221a, 0x22a5, 0x2220,
+    0x221f, 0x22bf, 0x2235, 0x2229, 0x222a, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte 88 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x4e9c,
+    0x5516, 0x5a03, 0x963f, 0x54c0, 0x611b, 0x6328, 0x59f6, 0x9022,
+    0x8475, 0x831c, 0x7a50, 0x60aa, 0x63e1, 0x6e25, 0x65ed, 0x8466,
+    0x82a6, 0x9bf5, 0x6893, 0x5727, 0x65a1, 0x6271, 0x5b9b, 0x59d0,
+    0x867b, 0x98f4, 0x7d62, 0x7dbe, 0x9b8e, 0x6216, 0x7c9f, 0x88b7,
+    0x5b89, 0x5eb5, 0x6309, 0x6697, 0x6848, 0x95c7, 0x978d, 0x674f,
+    0x4ee5, 0x4f0a, 0x4f4d, 0x4f9d, 0x5049, 0x56f2, 0x5937, 0x59d4,
+    0x5a01, 0x5c09, 0x60df, 0x610f, 0x6170, 0x6613, 0x6905, 0x70ba,
+    0x754f, 0x7570, 0x79fb, 0x7dad, 0x7def, 0x80c3, 0x840e, 0x8863,
+    0x8b02, 0x9055, 0x907a, 0x533b, 0x4e95, 0x4ea5, 0x57df, 0x80b2,
+    0x90c1, 0x78ef, 0x4e00, 0x58f1, 0x6ea2, 0x9038, 0x7a32, 0x8328,
+    0x828b, 0x9c2f, 0x5141, 0x5370, 0x54bd, 0x54e1, 0x56e0, 0x59fb,
+    0x5f15, 0x98f2, 0x6deb, 0x80e4, 0x852d, 0x003f, 0x003f, 0x003f,
+    /* lead byte 89 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9662, 0x9670, 0x96a0, 0x97fb, 0x540b, 0x53f3, 0x5b87, 0x70cf,
+    0x7fbd, 0x8fc2, 0x96e8, 0x536f, 0x9d5c, 0x7aba, 0x4e11, 0x7893,
+    0x81fc, 0x6e26, 0x5618, 0x5504, 0x6b1d, 0x851a, 0x9c3b, 0x59e5,
+    0x53a9, 0x6d66, 0x74dc, 0x958f, 0x5642, 0x4e91, 0x904b, 0x96f2,
+    0x834f, 0x990c, 0x53e1, 0x55b6, 0x5b30, 0x5f71, 0x6620, 0x66f3,
+    0x6804, 0x6c38, 0x6cf3, 0x6d29, 0x745b, 0x76c8, 0x7a4e, 0x9834,
+    0x82f1, 0x885b, 0x8a60, 0x92ed, 0x6db2, 0x75ab, 0x76ca, 0x99c5,
+    0x60a6, 0x8b01, 0x8d8a, 0x95b2, 0x698e, 0x53ad, 0x5186, 0x003f,
+    0x5712, 0x5830, 0x5944, 0x5bb4, 0x5ef6, 0x6028, 0x63a9, 0x63f4,
+    0x6cbf, 0x6f14, 0x708e, 0x7114, 0x7159, 0x71d5, 0x733f, 0x7e01,
+    0x8276, 0x82d1, 0x8597, 0x9060, 0x925b, 0x9d1b, 0x5869, 0x65bc,
+    0x6c5a, 0x7525, 0x51f9, 0x592e, 0x5965, 0x5f80, 0x5fdc, 0x62bc,
+    0x65fa, 0x6a2a, 0x6b27, 0x6bb4, 0x738b, 0x7fc1, 0x8956, 0x9d2c,
+    0x9d0e, 0x9ec4, 0x5ca1, 0x6c96, 0x837b, 0x5104, 0x5c4b, 0x61b6,
+    0x81c6, 0x6876, 0x7261, 0x4e59, 0x4ffa, 0x5378, 0x6069, 0x6e29,
+    0x7a4f, 0x97f3, 0x4e0b, 0x5316, 0x4eee, 0x4f55, 0x4f3d, 0x4fa1,
+    0x4f73, 0x52a0, 0x53ef, 0x5609, 0x590f, 0x5ac1, 0x5bb6, 0x5be1,
+    0x79d1, 0x6687, 0x679c, 0x67b6, 0x6b4c, 0x6cb3, 0x706b, 0x73c2,
+    0x798d, 0x79be, 0x7a3c, 0x7b87, 0x82b1, 0x82db, 0x8304, 0x8377,
+    0x83ef, 0x83d3, 0x8766, 0x8ab2, 0x5629, 0x8ca8, 0x8fe6, 0x904e,
+    0x971e, 0x868a, 0x4fc4, 0x5ce8, 0x6211, 0x7259, 0x753b, 0x81e5,
+    0x82bd, 0x86fe, 0x8cc0, 0x96c5, 0x9913, 0x99d5, 0x4ecb, 0x4f1a,
+    0x89e3, 0x56de, 0x584a, 0x58ca, 0x5efb, 0x5feb, 0x602a, 0x6094,
+    0x6062, 0x61d0, 0x6212, 0x62d0, 0x6539, 0x003f, 0x003f, 0x003f,
+    /* lead byte 8a */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9b41, 0x6666, 0x68b0, 0x6d77, 0x7070, 0x754c, 0x7686, 0x7d75,
+    0x82a5, 0x87f9, 0x958b, 0x968e, 0x8c9d, 0x51f1, 0x52be, 0x5916,
+    0x54b3, 0x5bb3, 0x5d16, 0x6168, 0x6982, 0x6daf, 0x788d, 0x84cb,
+    0x8857, 0x8a72, 0x93a7, 0x9ab8, 0x6d6c, 0x99a8, 0x86d9, 0x57a3,
+    0x67ff, 0x86ce, 0x920e, 0x5283, 0x5687, 0x5404, 0x5ed3, 0x62e1,
+    0x64b9, 0x683c, 0x6838, 0x6bbb, 0x7372, 0x78ba, 0x7a6b, 0x899a,
+    0x89d2, 0x8d6b, 0x8f03, 0x90ed, 0x95a3, 0x9694, 0x9769, 0x5b66,
+    0x5cb3, 0x697d, 0x984d, 0x984e, 0x639b, 0x7b20, 0x6a2b, 0x003f,
+    0x6a7f, 0x68b6, 0x9c0d, 0x6f5f, 0x5272, 0x559d, 0x6070, 0x62ec,
+    0x6d3b, 0x6e07, 0x6ed1, 0x845b, 0x8910, 0x8f44, 0x4e14, 0x9c39,
+    0x53f6, 0x691b, 0x6a3a, 0x9784, 0x682a, 0x515c, 0x7ac3, 0x84b2,
+    0x91dc, 0x938c, 0x565b, 0x9d28, 0x6822, 0x8305, 0x8431, 0x7ca5,
+    0x5208, 0x82c5, 0x74e6, 0x4e7e, 0x4f83, 0x51a0, 0x5bd2, 0x520a,
+    0x52d8, 0x52e7, 0x5dfb, 0x559a, 0x582a, 0x59e6, 0x5b8c, 0x5b98,
+    0x5bdb, 0x5e72, 0x5e79, 0x60a3, 0x611f, 0x6163, 0x61be, 0x63db,
+    0x6562, 0x67d1, 0x6853, 0x68fa, 0x6b3e, 0x6b53, 0x6c57, 0x6f22,
+    0x6f97, 0x6f45, 0x74b0, 0x7518, 0x76e3, 0x770b, 0x7aff, 0x7ba1,
+    0x7c21, 0x7de9, 0x7f36, 0x7ff0, 0x809d, 0x8266, 0x839e, 0x89b3,
+    0x8acc, 0x8cab, 0x9084, 0x9451, 0x9593, 0x9591, 0x95a2, 0x9665,
+    0x97d3, 0x9928, 0x8218, 0x4e38, 0x542b, 0x5cb8, 0x5dcc, 0x73a9,
+    0x764c, 0x773c, 0x5ca9, 0x7feb, 0x8d0b, 0x96c1, 0x9811, 0x9854,
+    0x9858, 0x4f01, 0x4f0e, 0x5371, 0x559c, 0x5668, 0x57fa, 0x5947,
+    0x5b09, 0x5bc4, 0x5c90, 0x5e0c, 0x5e7e, 0x5fcc, 0x63ee, 0x673a,
+    0x65d7, 0x65e2, 0x671f, 0x68cb, 0x68c4, 0x003f, 0x003f, 0x003f,
+    /* lead byte 8b */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6a5f, 0x5e30, 0x6bc5, 0x6c17, 0x6c7d, 0x757f, 0x7948, 0x5b63,
+    0x7a00, 0x7d00, 0x5fbd, 0x898f, 0x8a18, 0x8cb4, 0x8d77, 0x8ecc,
+    0x8f1d, 0x98e2, 0x9a0e, 0x9b3c, 0x4e80, 0x507d, 0x5100, 0x5993,
+    0x5b9c, 0x622f, 0x6280, 0x64ec, 0x6b3a, 0x72a0, 0x7591, 0x7947,
+    0x7fa9, 0x87fb, 0x8abc, 0x8b70, 0x63ac, 0x83ca, 0x97a0, 0x5409,
+    0x5403, 0x55ab, 0x6854, 0x6a58, 0x8a70, 0x7827, 0x6775, 0x9ecd,
+    0x5374, 0x5ba2, 0x811a, 0x8650, 0x9006, 0x4e18, 0x4e45, 0x4ec7,
+    0x4f11, 0x53ca, 0x5438, 0x5bae, 0x5f13, 0x6025, 0x6551, 0x003f,
+    0x673d, 0x6c42, 0x6c72, 0x6ce3, 0x7078, 0x7403, 0x7a76, 0x7aae,
+    0x7b08, 0x7d1a, 0x7cfe, 0x7d66, 0x65e7, 0x725b, 0x53bb, 0x5c45,
+    0x5de8, 0x62d2, 0x62e0, 0x6319, 0x6e20, 0x865a, 0x8a31, 0x8ddd,
+    0x92f8, 0x6f01, 0x79a6, 0x9b5a, 0x4ea8, 0x4eab, 0x4eac, 0x4f9b,
+    0x4fa0, 0x50d1, 0x5147, 0x7af6, 0x5171, 0x51f6, 0x5354, 0x5321,
+    0x537f, 0x53eb, 0x55ac, 0x5883, 0x5ce1, 0x5f37, 0x5f4a, 0x602f,
+    0x6050, 0x606d, 0x631f, 0x6559, 0x6a4b, 0x6cc1, 0x72c2, 0x72ed,
+    0x77ef, 0x80f8, 0x8105, 0x8208, 0x854e, 0x90f7, 0x93e1, 0x97ff,
+    0x9957, 0x9a5a, 0x4ef0, 0x51dd, 0x5c2d, 0x6681, 0x696d, 0x5c40,
+    0x66f2, 0x6975, 0x7389, 0x6850, 0x7c81, 0x50c5, 0x52e4, 0x5747,
+    0x5dfe, 0x9326, 0x65a4, 0x6b23, 0x6b3d, 0x7434, 0x7981, 0x79bd,
+    0x7b4b, 0x7dca, 0x82b9, 0x83cc, 0x887f, 0x895f, 0x8b39, 0x8fd1,
+    0x91d1, 0x541f, 0x9280, 0x4e5d, 0x5036, 0x53e5, 0x533a, 0x72d7,
+    0x7396, 0x77e9, 0x82e6, 0x8eaf, 0x99c6, 0x99c8, 0x99d2, 0x5177,
+    0x611a, 0x865e, 0x55b0, 0x7a7a, 0x5076, 0x5bd3, 0x9047, 0x9685,
+    0x4e32, 0x6adb, 0x91e7, 0x5c51, 0x5c48, 0x003f, 0x003f, 0x003f,
+    /* lead byte 8c */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6398, 0x7a9f, 0x6c93, 0x9774, 0x8f61, 0x7aaa, 0x718a, 0x9688,
+    0x7c82, 0x6817, 0x7e70, 0x6851, 0x936c, 0x52f2, 0x541b, 0x85ab,
+    0x8a13, 0x7fa4, 0x8ecd, 0x90e1, 0x5366, 0x8888, 0x7941, 0x4fc2,
+    0x50be, 0x5211, 0x5144, 0x5553, 0x572d, 0x73ea, 0x578b, 0x5951,
+    0x5f62, 0x5f84, 0x6075, 0x6176, 0x6167, 0x61a9, 0x63b2, 0x643a,
+    0x656c, 0x666f, 0x6842, 0x6e13, 0x7566, 0x7a3d, 0x7cfb, 0x7d4c,
+    0x7d99, 0x7e4b, 0x7f6b, 0x830e, 0x834a, 0x86cd, 0x8a08, 0x8a63,
+    0x8b66, 0x8efd, 0x981a, 0x9d8f, 0x82b8, 0x8fce, 0x9be8, 0x003f,
+    0x5287, 0x621f, 0x6483, 0x6fc0, 0x9699, 0x6841, 0x5091, 0x6b20,
+    0x6c7a, 0x6f54, 0x7a74, 0x7d50, 0x8840, 0x8a23, 0x6708, 0x4ef6,
+    0x5039, 0x5026, 0x5065, 0x517c, 0x5238, 0x5263, 0x55a7, 0x570f,
+    0x5805, 0x5acc, 0x5efa, 0x61b2, 0x61f8, 0x62f3, 0x6372, 0x691c,
+    0x6a29, 0x727d, 0x72ac, 0x732e, 0x7814, 0x786f, 0x7d79, 0x770c,
+    0x80a9, 0x898b, 0x8b19, 0x8ce2, 0x8ed2, 0x9063, 0x9375, 0x967a,
+    0x9855, 0x9a13, 0x9e78, 0x5143, 0x539f, 0x53b3, 0x5e7b, 0x5f26,
+    0x6e1b, 0x6e90, 0x7384, 0x73fe, 0x7d43, 0x8237, 0x8a00, 0x8afa,
+    0x9650, 0x4e4e, 0x500b, 0x53e4, 0x547c, 0x56fa, 0x59d1, 0x5b64,
+    0x5df1, 0x5eab, 0x5f27, 0x6238, 0x6545, 0x67af, 0x6e56, 0x72d0,
+    0x7cca, 0x88b4, 0x80a1, 0x80e1, 0x83f0, 0x864e, 0x8a87, 0x8de8,
+    0x9237, 0x96c7, 0x9867, 0x9f13, 0x4e94, 0x4e92, 0x4f0d, 0x5348,
+    0x5449, 0x543e, 0x5a2f, 0x5f8c, 0x5fa1, 0x609f, 0x68a7, 0x6a8e,
+    0x745a, 0x7881, 0x8a9e, 0x8aa4, 0x8b77, 0x9190, 0x4e5e, 0x9bc9,
+    0x4ea4, 0x4f7c, 0x4faf, 0x5019, 0x5016, 0x5149, 0x516c, 0x529f,
+    0x52b9, 0x52fe, 0x539a, 0x53e3, 0x5411, 0x003f, 0x003f, 0x003f,
+    /* lead byte 8d */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x540e, 0x5589, 0x5751, 0x57a2, 0x597d, 0x5b54, 0x5b5d, 0x5b8f,
+    0x5de5, 0x5de7, 0x5df7, 0x5e78, 0x5e83, 0x5e9a, 0x5eb7, 0x5f18,
+    0x6052, 0x614c, 0x6297, 0x62d8, 0x63a7, 0x653b, 0x6602, 0x6643,
+    0x66f4, 0x676d, 0x6821, 0x6897, 0x69cb, 0x6c5f, 0x6d2a, 0x6d69,
+    0x6e2f, 0x6e9d, 0x7532, 0x7687, 0x786c, 0x7a3f, 0x7ce0, 0x7d05,
+    0x7d18, 0x7d5e, 0x7db1, 0x8015, 0x8003, 0x80af, 0x80b1, 0x8154,
+    0x818f, 0x822a, 0x8352, 0x884c, 0x8861, 0x8b1b, 0x8ca2, 0x8cfc,
+    0x90ca, 0x9175, 0x9271, 0x783f, 0x92fc, 0x95a4, 0x964d, 0x003f,
+    0x9805, 0x9999, 0x9ad8, 0x9d3b, 0x525b, 0x52ab, 0x53f7, 0x5408,
+    0x58d5, 0x62f7, 0x6fe0, 0x8c6a, 0x8f5f, 0x9eb9, 0x514b, 0x523b,
+    0x544a, 0x56fd, 0x7a40, 0x9177, 0x9d60, 0x9ed2, 0x7344, 0x6f09,
+    0x8170, 0x7511, 0x5ffd, 0x60da, 0x9aa8, 0x72db, 0x8fbc, 0x6b64,
+    0x9803, 0x4eca, 0x56f0, 0x5764, 0x58be, 0x5a5a, 0x6068, 0x61c7,
+    0x660f, 0x6606, 0x6839, 0x68b1, 0x6df7, 0x75d5, 0x7d3a, 0x826e,
+    0x9b42, 0x4e9b, 0x4f50, 0x53c9, 0x5506, 0x5d6f, 0x5de6, 0x5dee,
+    0x67fb, 0x6c99, 0x7473, 0x7802, 0x8a50, 0x9396, 0x88df, 0x5750,
+    0x5ea7, 0x632b, 0x50b5, 0x50ac, 0x518d, 0x6700, 0x54c9, 0x585e,
+    0x59bb, 0x5bb0, 0x5f69, 0x624d, 0x63a1, 0x683d, 0x6b73, 0x6e08,
+    0x707d, 0x91c7, 0x7280, 0x7815, 0x7826, 0x796d, 0x658e, 0x7d30,
+    0x83dc, 0x88c1, 0x8f09, 0x969b, 0x5264, 0x5728, 0x6750, 0x7f6a,
+    0x8ca1, 0x51b4, 0x5742, 0x962a, 0x583a, 0x698a, 0x80b4, 0x54b2,
+    0x5d0e, 0x57fc, 0x7895, 0x9dfa, 0x4f5c, 0x524a, 0x548b, 0x643e,
+    0x6628, 0x6714, 0x67f5, 0x7a84, 0x7b56, 0x7d22, 0x932f, 0x685c,
+    0x9bad, 0x7b39, 0x5319, 0x518a, 0x5237, 0x003f, 0x003f, 0x003f,
+    /* lead byte 8e */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x5bdf, 0x62f6, 0x64ae, 0x64e6, 0x672d, 0x6bba, 0x85a9, 0x96d1,
+    0x7690, 0x9bd6, 0x634c, 0x9306, 0x9bab, 0x76bf, 0x6652, 0x4e09,
+    0x5098, 0x53c2, 0x5c71, 0x60e8, 0x6492, 0x6563, 0x685f, 0x71e6,
+    0x73ca, 0x7523, 0x7b97, 0x7e82, 0x8695, 0x8b83, 0x8cdb, 0x9178,
+    0x9910, 0x65ac, 0x66ab, 0x6b8b, 0x4ed5, 0x4ed4, 0x4f3a, 0x4f7f,
+    0x523a, 0x53f8, 0x53f2, 0x55e3, 0x56db, 0x58eb, 0x59cb, 0x59c9,
+    0x59ff, 0x5b50, 0x5c4d, 0x5e02, 0x5e2b, 0x5fd7, 0x601d, 0x6307,
+    0x652f, 0x5b5c, 0x65af, 0x65bd, 0x65e8, 0x679d, 0x6b62, 0x003f,
+    0x6b7b, 0x6c0f, 0x7345, 0x7949, 0x79c1, 0x7cf8, 0x7d19, 0x7d2b,
+    0x80a2, 0x8102, 0x81f3, 0x8996, 0x8a5e, 0x8a69, 0x8a66, 0x8a8c,
+    0x8aee, 0x8cc7, 0x8cdc, 0x96cc, 0x98fc, 0x6b6f, 0x4e8b, 0x4f3c,
+    0x4f8d, 0x5150, 0x5b57, 0x5bfa, 0x6148, 0x6301, 0x6642, 0x6b21,
+    0x6ecb, 0x6cbb, 0x723e, 0x74bd, 0x75d4, 0x78c1, 0x793a, 0x800c,
+    0x8033, 0x81ea, 0x8494, 0x8f9e, 0x6c50, 0x9e7f, 0x5f0f, 0x8b58,
+    0x9d2b, 0x7afa, 0x8ef8, 0x5b8d, 0x96eb, 0x4e03, 0x53f1, 0x57f7,
+    0x5931, 0x5ac9, 0x5ba4, 0x6089, 0x6e7f, 0x6f06, 0x75be, 0x8cea,
+    0x5b9f, 0x8500, 0x7be0, 0x5072, 0x67f4, 0x829d, 0x5c61, 0x854a,
+    0x7e1e, 0x820e, 0x5199, 0x5c04, 0x6368, 0x8d66, 0x659c, 0x716e,
+    0x793e, 0x7d17, 0x8005, 0x8b1d, 0x8eca, 0x906e, 0x86c7, 0x90aa,
+    0x501f, 0x52fa, 0x5c3a, 0x6753, 0x707c, 0x7235, 0x914c, 0x91c8,
+    0x932b, 0x82e5, 0x5bc2, 0x5f31, 0x60f9, 0x4e3b, 0x53d6, 0x5b88,
+    0x624b, 0x6731, 0x6b8a, 0x72e9, 0x73e0, 0x7a2e, 0x816b, 0x8da3,
+    0x9152, 0x9996, 0x5112, 0x53d7, 0x546a, 0x5bff, 0x6388, 0x6a39,
+    0x7dac, 0x9700, 0x56da, 0x53ce, 0x5468, 0x003f, 0x003f, 0x003f,
+    /* lead byte 8f */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x5b97, 0x5c31, 0x5dde, 0x4fee, 0x6101, 0x62fe, 0x6d32, 0x79c0,
+    0x79cb, 0x7d42, 0x7e4d, 0x7fd2, 0x81ed, 0x821f, 0x8490, 0x8846,
+    0x8972, 0x8b90, 0x8e74, 0x8f2f, 0x9031, 0x914b, 0x916c, 0x96c6,
+    0x919c, 0x4ec0, 0x4f4f, 0x5145, 0x5341, 0x5f93, 0x620e, 0x67d4,
+    0x6c41, 0x6e0b, 0x7363, 0x7e26, 0x91cd, 0x9283, 0x53d4, 0x5919,
+    0x5bbf, 0x6dd1, 0x795d, 0x7e2e, 0x7c9b, 0x587e, 0x719f, 0x51fa,
+    0x8853, 0x8ff0, 0x4fca, 0x5cfb, 0x6625, 0x77ac, 0x7ae3, 0x821c,
+    0x99ff, 0x51c6, 0x5faa, 0x65ec, 0x696f, 0x6b89, 0x6df3, 0x003f,
+    0x6e96, 0x6f64, 0x76fe, 0x7d14, 0x5de1, 0x9075, 0x9187, 0x9806,
+    0x51e6, 0x521d, 0x6240, 0x6691, 0x66d9, 0x6e1a, 0x5eb6, 0x7dd2,
+    0x7f72, 0x66f8, 0x85af, 0x85f7, 0x8af8, 0x52a9, 0x53d9, 0x5973,
+    0x5e8f, 0x5f90, 0x6055, 0x92e4, 0x9664, 0x50b7, 0x511f, 0x52dd,
+    0x5320, 0x5347, 0x53ec, 0x54e8, 0x5546, 0x5531, 0x5617, 0x5968,
+    0x59be, 0x5a3c, 0x5bb5, 0x5c06, 0x5c0f, 0x5c11, 0x5c1a, 0x5e84,
+    0x5e8a, 0x5ee0, 0x5f70, 0x627f, 0x6284, 0x62db, 0x638c, 0x6377,
+    0x6607, 0x660c, 0x662d, 0x6676, 0x677e, 0x68a2, 0x6a1f, 0x6a35,
+    0x6cbc, 0x6d88, 0x6e09, 0x6e58, 0x713c, 0x7126, 0x7167, 0x75c7,
+    0x7701, 0x785d, 0x7901, 0x7965, 0x79f0, 0x7ae0, 0x7b11, 0x7ca7,
+    0x7d39, 0x8096, 0x83d6, 0x848b, 0x8549, 0x885d, 0x88f3, 0x8a1f,
+    0x8a3c, 0x8a54, 0x8a73, 0x8c61, 0x8cde, 0x91a4, 0x9266, 0x937e,
+    0x9418, 0x969c, 0x9798, 0x4e0a, 0x4e08, 0x4e1e, 0x4e57, 0x5197,
+    0x5270, 0x57ce, 0x5834, 0x58cc, 0x5b22, 0x5e38, 0x60c5, 0x64fe,
+    0x6761, 0x6756, 0x6d44, 0x72b6, 0x7573, 0x7a63, 0x84b8, 0x8b72,
+    0x91b8, 0x9320, 0x5631, 0x57f4, 0x98fe, 0x003f, 0x003f, 0x003f,
+    /* lead byte 90 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x62ed, 0x690d, 0x6b96, 0x71ed, 0x7e54, 0x8077, 0x8272, 0x89e6,
+    0x98df, 0x8755, 0x8fb1, 0x5c3b, 0x4f38, 0x4fe1, 0x4fb5, 0x5507,
+    0x5a20, 0x5bdd, 0x5be9, 0x5fc3, 0x614e, 0x632f, 0x65b0, 0x664b,
+    0x68ee, 0x699b, 0x6d78, 0x6df1, 0x7533, 0x75b9, 0x771f, 0x795e,
+    0x79e6, 0x7d33, 0x81e3, 0x82af, 0x85aa, 0x89aa, 0x8a3a, 0x8eab,
+    0x8f9b, 0x9032, 0x91dd, 0x9707, 0x4eba, 0x4ec1, 0x5203, 0x5875,
+    0x58ec, 0x5c0b, 0x751a, 0x5c3d, 0x814e, 0x8a0a, 0x8fc5, 0x9663,
+    0x976d, 0x7b25, 0x8acf, 0x9808, 0x9162, 0x56f3, 0x53a8, 0x003f,
+    0x9017, 0x5439, 0x5782, 0x5e25, 0x63a8, 0x6c34, 0x708a, 0x7761,
+    0x7c8b, 0x7fe0, 0x8870, 0x9042, 0x9154, 0x9310, 0x9318, 0x968f,
+    0x745e, 0x9ac4, 0x5d07, 0x5d69, 0x6570, 0x67a2, 0x8da8, 0x96db,
+    0x636e, 0x6749, 0x6919, 0x83c5, 0x9817, 0x96c0, 0x88fe, 0x6f84,
+    0x647a, 0x5bf8, 0x4e16, 0x702c, 0x755d, 0x662f, 0x51c4, 0x5236,
+    0x52e2, 0x59d3, 0x5f81, 0x6027, 0x6210, 0x653f, 0x6574, 0x661f,
+    0x6674, 0x68f2, 0x6816, 0x6b63, 0x6e05, 0x7272, 0x751f, 0x76db,
+    0x7cbe, 0x8056, 0x58f0, 0x88fd, 0x897f, 0x8aa0, 0x8a93, 0x8acb,
+    0x901d, 0x9192, 0x9752, 0x9759, 0x6589, 0x7a0e, 0x8106, 0x96bb,
+    0x5e2d, 0x60dc, 0x621a, 0x65a5, 0x6614, 0x6790, 0x77f3, 0x7a4d,
+    0x7c4d, 0x7e3e, 0x810a, 0x8cac, 0x8d64, 0x8de1, 0x8e5f, 0x78a9,
+    0x5207, 0x62d9, 0x63a5, 0x6442, 0x6298, 0x8a2d, 0x7a83, 0x7bc0,
+    0x8aac, 0x96ea, 0x7d76, 0x820c, 0x8749, 0x4ed9, 0x5148, 0x5343,
+    0x5360, 0x5ba3, 0x5c02, 0x5c16, 0x5ddd, 0x6226, 0x6247, 0x64b0,
+    0x6813, 0x6834, 0x6cc9, 0x6d45, 0x6d17, 0x67d3, 0x6f5c, 0x714e,
+    0x717d, 0x65cb, 0x7a7f, 0x7bad, 0x7dda, 0x003f, 0x003f, 0x003f,
+    /* lead byte 91 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7e4a, 0x7fa8, 0x817a, 0x821b, 0x8239, 0x85a6, 0x8a6e, 0x8cce,
+    0x8df5, 0x9078, 0x9077, 0x92ad, 0x9291, 0x9583, 0x9bae, 0x524d,
+    0x5584, 0x6f38, 0x7136, 0x5168, 0x7985, 0x7e55, 0x81b3, 0x7cce,
+    0x564c, 0x5851, 0x5ca8, 0x63aa, 0x66fe, 0x66fd, 0x695a, 0x72d9,
+    0x758f, 0x758e, 0x790e, 0x7956, 0x79df, 0x7c97, 0x7d20, 0x7d44,
+    0x8607, 0x8a34, 0x963b, 0x9061, 0x9f20, 0x50e7, 0x5275, 0x53cc,
+    0x53e2, 0x5009, 0x55aa, 0x58ee, 0x594f, 0x723d, 0x5b8b, 0x5c64,
+    0x531d, 0x60e3, 0x60f3, 0x635c, 0x6383, 0x633f, 0x63bb, 0x003f,
+    0x64cd, 0x65e9, 0x66f9, 0x5de3, 0x69cd, 0x69fd, 0x6f15, 0x71e5,
+    0x4e89, 0x75e9, 0x76f8, 0x7a93, 0x7cdf, 0x7dcf, 0x7d9c, 0x8061,
+    0x8349, 0x8358, 0x846c, 0x84bc, 0x85fb, 0x88c5, 0x8d70, 0x9001,
+    0x906d, 0x9397, 0x971c, 0x9a12, 0x50cf, 0x5897, 0x618e, 0x81d3,
+    0x8535, 0x8d08, 0x9020, 0x4fc3, 0x5074, 0x5247, 0x5373, 0x606f,
+    0x6349, 0x675f, 0x6e2c, 0x8db3, 0x901f, 0x4fd7, 0x5c5e, 0x8cca,
+    0x65cf, 0x7d9a, 0x5352, 0x8896, 0x5176, 0x63c3, 0x5b58, 0x5b6b,
+    0x5c0a, 0x640d, 0x6751, 0x905c, 0x4ed6, 0x591a, 0x592a, 0x6c70,
+    0x8a51, 0x553e, 0x5815, 0x59a5, 0x60f0, 0x6253, 0x67c1, 0x8235,
+    0x6955, 0x9640, 0x99c4, 0x9a28, 0x4f53, 0x5806, 0x5bfe, 0x8010,
+    0x5cb1, 0x5e2f, 0x5f85, 0x6020, 0x614b, 0x6234, 0x66ff, 0x6cf0,
+    0x6ede, 0x80ce, 0x817f, 0x82d4, 0x888b, 0x8cb8, 0x9000, 0x902e,
+    0x968a, 0x9edb, 0x9bdb, 0x4ee3, 0x53f0, 0x5927, 0x7b2c, 0x918d,
+    0x984c, 0x9df9, 0x6edd, 0x7027, 0x5353, 0x5544, 0x5b85, 0x6258,
+    0x629e, 0x62d3, 0x6ca2, 0x6fef, 0x7422, 0x8a17, 0x9438, 0x6fc1,
+    0x8afe, 0x8338, 0x51e7, 0x86f8, 0x53ea, 0x003f, 0x003f, 0x003f,
+    /* lead byte 92 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x53e9, 0x4f46, 0x9054, 0x8fb0, 0x596a, 0x8131, 0x5dfd, 0x7aea,
+    0x8fbf, 0x68da, 0x8c37, 0x72f8, 0x9c48, 0x6a3d, 0x8ab0, 0x4e39,
+    0x5358, 0x5606, 0x5766, 0x62c5, 0x63a2, 0x65e6, 0x6b4e, 0x6de1,
+    0x6e5b, 0x70ad, 0x77ed, 0x7aef, 0x7baa, 0x7dbb, 0x803d, 0x80c6,
+    0x86cb, 0x8a95, 0x935b, 0x56e3, 0x58c7, 0x5f3e, 0x65ad, 0x6696,
+    0x6a80, 0x6bb5, 0x7537, 0x8ac7, 0x5024, 0x77e5, 0x5730, 0x5f1b,
+    0x6065, 0x667a, 0x6c60, 0x75f4, 0x7a1a, 0x7f6e, 0x81f4, 0x8718,
+    0x9045, 0x99b3, 0x7bc9, 0x755c, 0x7af9, 0x7b51, 0x84c4, 0x003f,
+    0x9010, 0x79e9, 0x7a92, 0x8336, 0x5ae1, 0x7740, 0x4e2d, 0x4ef2,
+    0x5b99, 0x5fe0, 0x62bd, 0x663c, 0x67f1, 0x6ce8, 0x866b, 0x8877,
+    0x8a3b, 0x914e, 0x92f3, 0x99d0, 0x6a17, 0x7026, 0x732a, 0x82e7,
+    0x8457, 0x8caf, 0x4e01, 0x5146, 0x51cb, 0x558b, 0x5bf5, 0x5e16,
+    0x5e33, 0x5e81, 0x5f14, 0x5f35, 0x5f6b, 0x5fb4, 0x61f2, 0x6311,
+    0x66a2, 0x671d, 0x6f6e, 0x7252, 0x753a, 0x773a, 0x8074, 0x8139,
+    0x8178, 0x8776, 0x8abf, 0x8adc, 0x8d85, 0x8df3, 0x929a, 0x9577,
+    0x9802, 0x9ce5, 0x52c5, 0x6357, 0x76f4, 0x6715, 0x6c88, 0x73cd,
+    0x8cc3, 0x93ae, 0x9673, 0x6d25, 0x589c, 0x690e, 0x69cc, 0x8ffd,
+    0x939a, 0x75db, 0x901a, 0x585a, 0x6802, 0x63b4, 0x69fb, 0x4f43,
+    0x6f2c, 0x67d8, 0x8fbb, 0x8526, 0x7db4, 0x9354, 0x693f, 0x6f70,
+    0x576a, 0x58f7, 0x5b2c, 0x7d2c, 0x722a, 0x540a, 0x91e3, 0x9db4,
+    0x4ead, 0x4f4e, 0x505c, 0x5075, 0x5243, 0x8c9e, 0x5448, 0x5824,
+    0x5b9a, 0x5e1d, 0x5e95, 0x5ead, 0x5ef7, 0x5f1f, 0x608c, 0x62b5,
+    0x633a, 0x63d0, 0x68af, 0x6c40, 0x7887, 0x798e, 0x7a0b, 0x7de0,
+    0x8247, 0x8a02, 0x8ae6, 0x8e44, 0x9013, 0x003f, 0x003f, 0x003f,
+    /* lead byte 93 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x90b8, 0x912d, 0x91d8, 0x9f0e, 0x6ce5, 0x6458, 0x64e2, 0x6575,
+    0x6ef4, 0x7684, 0x7b1b, 0x9069, 0x93d1, 0x6eba, 0x54f2, 0x5fb9,
+    0x64a4, 0x8f4d, 0x8fed, 0x9244, 0x5178, 0x586b, 0x5929, 0x5c55,
+    0x5e97, 0x6dfb, 0x7e8f, 0x751c, 0x8cbc, 0x8ee2, 0x985b, 0x70b9,
+    0x4f1d, 0x6bbf, 0x6fb1, 0x7530, 0x96fb, 0x514e, 0x5410, 0x5835,
+    0x5857, 0x59ac, 0x5c60, 0x5f92, 0x6597, 0x675c, 0x6e21, 0x767b,
+    0x83df, 0x8ced, 0x9014, 0x90fd, 0x934d, 0x7825, 0x783a, 0x52aa,
+    0x5ea6, 0x571f, 0x5974, 0x6012, 0x5012, 0x515a, 0x51ac, 0x003f,
+    0x51cd, 0x5200, 0x5510, 0x5854, 0x5858, 0x5957, 0x5b95, 0x5cf6,
+    0x5d8b, 0x60bc, 0x6295, 0x642d, 0x6771, 0x6843, 0x68bc, 0x68df,
+    0x76d7, 0x6dd8, 0x6e6f, 0x6d9b, 0x706f, 0x71c8, 0x5f53, 0x75d8,
+    0x7977, 0x7b49, 0x7b54, 0x7b52, 0x7cd6, 0x7d71, 0x5230, 0x8463,
+    0x8569, 0x85e4, 0x8a0e, 0x8b04, 0x8c46, 0x8e0f, 0x9003, 0x900f,
+    0x9419, 0x9676, 0x982d, 0x9a30, 0x95d8, 0x50cd, 0x52d5, 0x540c,
+    0x5802, 0x5c0e, 0x61a7, 0x649e, 0x6d1e, 0x77b3, 0x7ae5, 0x80f4,
+    0x8404, 0x9053, 0x9285, 0x5ce0, 0x9d07, 0x533f, 0x5f97, 0x5fb3,
+    0x6d9c, 0x7279, 0x7763, 0x79bf, 0x7be4, 0x6bd2, 0x72ec, 0x8aad,
+    0x6803, 0x6a61, 0x51f8, 0x7a81, 0x6934, 0x5c4a, 0x9cf6, 0x82eb,
+    0x5bc5, 0x9149, 0x701e, 0x5678, 0x5c6f, 0x60c7, 0x6566, 0x6c8c,
+    0x8c5a, 0x9041, 0x9813, 0x5451, 0x66c7, 0x920d, 0x5948, 0x90a3,
+    0x5185, 0x4e4d, 0x51ea, 0x8599, 0x8b0e, 0x7058, 0x637a, 0x934b,
+    0x6962, 0x99b4, 0x7e04, 0x7577, 0x5357, 0x6960, 0x8edf, 0x96e3,
+    0x6c5d, 0x4e8c, 0x5c3c, 0x5f10, 0x8fe9, 0x5302, 0x8cd1, 0x8089,
+    0x8679, 0x5eff, 0x65e5, 0x4e73, 0x5165, 0x003f, 0x003f, 0x003f,
+    /* lead byte 94 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x5982, 0x5c3f, 0x97ee, 0x4efb, 0x598a, 0x5fcd, 0x8a8d, 0x6fe1,
+    0x79b0, 0x7962, 0x5be7, 0x8471, 0x732b, 0x71b1, 0x5e74, 0x5ff5,
+    0x637b, 0x649a, 0x71c3, 0x7c98, 0x4e43, 0x5efc, 0x4e4b, 0x57dc,
+    0x56a2, 0x60a9, 0x6fc3, 0x7d0d, 0x80fd, 0x8133, 0x81bf, 0x8fb2,
+    0x8997, 0x86a4, 0x5df4, 0x628a, 0x64ad, 0x8987, 0x6777, 0x6ce2,
+    0x6d3e, 0x7436, 0x7834, 0x5a46, 0x7f75, 0x82ad, 0x99ac, 0x4ff3,
+    0x5ec3, 0x62dd, 0x6392, 0x6557, 0x676f, 0x76c3, 0x724c, 0x80cc,
+    0x80ba, 0x8f29, 0x914d, 0x500d, 0x57f9, 0x5a92, 0x6885, 0x003f,
+    0x6973, 0x7164, 0x72fd, 0x8cb7, 0x58f2, 0x8ce0, 0x966a, 0x9019,
+    0x877f, 0x79e4, 0x77e7, 0x8429, 0x4f2f, 0x5265, 0x535a, 0x62cd,
+    0x67cf, 0x6cca, 0x767d, 0x7b94, 0x7c95, 0x8236, 0x8584, 0x8feb,
+    0x66dd, 0x6f20, 0x7206, 0x7e1b, 0x83ab, 0x99c1, 0x9ea6, 0x51fd,
+    0x7bb1, 0x7872, 0x7bb8, 0x8087, 0x7b48, 0x6ae8, 0x5e61, 0x808c,
+    0x7551, 0x7560, 0x516b, 0x9262, 0x6e8c, 0x767a, 0x9197, 0x9aea,
+    0x4f10, 0x7f70, 0x629c, 0x7b4f, 0x95a5, 0x9ce9, 0x567a, 0x5859,
+    0x86e4, 0x96bc, 0x4f34, 0x5224, 0x534a, 0x53cd, 0x53db, 0x5e06,
+    0x642c, 0x6591, 0x677f, 0x6c3e, 0x6c4e, 0x7248, 0x72af, 0x73ed,
+    0x7554, 0x7e41, 0x822c, 0x85e9, 0x8ca9, 0x7bc4, 0x91c6, 0x7169,
+    0x9812, 0x98ef, 0x633d, 0x6669, 0x756a, 0x76e4, 0x78d0, 0x8543,
+    0x86ee, 0x532a, 0x5351, 0x5426, 0x5983, 0x5e87, 0x5f7c, 0x60b2,
+    0x6249, 0x6279, 0x62ab, 0x6590, 0x6bd4, 0x6ccc, 0x75b2, 0x76ae,
+    0x7891, 0x79d8, 0x7dcb, 0x7f77, 0x80a5, 0x88ab, 0x8ab9, 0x8cbb,
+    0x907f, 0x975e, 0x98db, 0x6a0b, 0x7c38, 0x5099, 0x5c3e, 0x5fae,
+    0x6787, 0x6bd8, 0x7435, 0x7709, 0x7f8e, 0x003f, 0x003f, 0x003f,
+    /* lead byte 95 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9f3b, 0x67ca, 0x7a17, 0x5339, 0x758b, 0x9aed, 0x5f66, 0x819d,
+    0x83f1, 0x8098, 0x5f3c, 0x5fc5, 0x7562, 0x7b46, 0x903c, 0x6867,
+    0x59eb, 0x5a9b, 0x7d10, 0x767e, 0x8b2c, 0x4ff5, 0x5f6a, 0x6a19,
+    0x6c37, 0x6f02, 0x74e2, 0x7968, 0x8868, 0x8a55, 0x8c79, 0x5edf,
+    0x63cf, 0x75c5, 0x79d2, 0x82d7, 0x9328, 0x92f2, 0x849c, 0x86ed,
+    0x9c2d, 0x54c1, 0x5f6c, 0x658c, 0x6d5c, 0x7015, 0x8ca7, 0x8cd3,
+    0x983b, 0x654f, 0x74f6, 0x4e0d, 0x4ed8, 0x57e0, 0x592b, 0x5a66,
+    0x5bcc, 0x51a8, 0x5e03, 0x5e9c, 0x6016, 0x6276, 0x6577, 0x003f,
+    0x65a7, 0x666e, 0x6d6e, 0x7236, 0x7b26, 0x8150, 0x819a, 0x8299,
+    0x8b5c, 0x8ca0, 0x8ce6, 0x8d74, 0x961c, 0x9644, 0x4fae, 0x64ab,
+    0x6b66, 0x821e, 0x8461, 0x856a, 0x90e8, 0x5c01, 0x6953, 0x98a8,
+    0x847a, 0x8557, 0x4f0f, 0x526f, 0x5fa9, 0x5e45, 0x670d, 0x798f,
+    0x8179, 0x8907, 0x8986, 0x6df5, 0x5f17, 0x6255, 0x6cb8, 0x4ecf,
+    0x7269, 0x9b92, 0x5206, 0x543b, 0x5674, 0x58b3, 0x61a4, 0x626e,
+    0x711a, 0x596e, 0x7c89, 0x7cde, 0x7d1b, 0x96f0, 0x6587, 0x805e,
+    0x4e19, 0x4f75, 0x5175, 0x5840, 0x5e63, 0x5e73, 0x5f0a, 0x67c4,
+    0x4e26, 0x853d, 0x9589, 0x965b, 0x7c73, 0x9801, 0x50fb, 0x58c1,
+    0x7656, 0x78a7, 0x5225, 0x77a5, 0x8511, 0x7b86, 0x504f, 0x5909,
+    0x7247, 0x7bc7, 0x7de8, 0x8fba, 0x8fd4, 0x904d, 0x4fbf, 0x52c9,
+    0x5a29, 0x5f01, 0x97ad, 0x4fdd, 0x8217, 0x92ea, 0x5703, 0x6355,
+    0x6b69, 0x752b, 0x88dc, 0x8f14, 0x7a42, 0x52df, 0x5893, 0x6155,
+    0x620a, 0x66ae, 0x6bcd, 0x7c3f, 0x83e9, 0x5023, 0x4ff8, 0x5305,
+    0x5446, 0x5831, 0x5949, 0x5b9d, 0x5cf0, 0x5cef, 0x5d29, 0x5e96,
+    0x62b1, 0x6367, 0x653e, 0x65b9, 0x670b, 0x003f, 0x003f, 0x003f,
+    /* lead byte 96 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6cd5, 0x6ce1, 0x70f9, 0x7832, 0x7e2b, 0x80de, 0x82b3, 0x840c,
+    0x84ec, 0x8702, 0x8912, 0x8a2a, 0x8c4a, 0x90a6, 0x92d2, 0x98fd,
+    0x9cf3, 0x9d6c, 0x4e4f, 0x4ea1, 0x508d, 0x5256, 0x574a, 0x59a8,
+    0x5e3d, 0x5fd8, 0x5fd9, 0x623f, 0x66b4, 0x671b, 0x67d0, 0x68d2,
+    0x5192, 0x7d21, 0x80aa, 0x81a8, 0x8b00, 0x8c8c, 0x8cbf, 0x927e,
+    0x9632, 0x5420, 0x982c, 0x5317, 0x50d5, 0x535c, 0x58a8, 0x64b2,
+    0x6734, 0x7267, 0x7766, 0x7a46, 0x91e6, 0x52c3, 0x6ca1, 0x6b86,
+    0x5800, 0x5e4c, 0x5954, 0x672c, 0x7ffb, 0x51e1, 0x76c6, 0x003f,
+    0x6469, 0x78e8, 0x9b54, 0x9ebb, 0x57cb, 0x59b9, 0x6627, 0x679a,
+    0x6bce, 0x54e9, 0x69d9, 0x5e55, 0x819c, 0x6795, 0x9baa, 0x67fe,
+    0x9c52, 0x685d, 0x4ea6, 0x4fe3, 0x53c8, 0x62b9, 0x672b, 0x6cab,
+    0x8fc4, 0x4fad, 0x7e6d, 0x9ebf, 0x4e07, 0x6162, 0x6e80, 0x6f2b,
+    0x8513, 0x5473, 0x672a, 0x9b45, 0x5df3, 0x7b95, 0x5cac, 0x5bc6,
+    0x871c, 0x6e4a, 0x84d1, 0x7a14, 0x8108, 0x5999, 0x7c8d, 0x6c11,
+    0x7720, 0x52d9, 0x5922, 0x7121, 0x725f, 0x77db, 0x9727, 0x9d61,
+    0x690b, 0x5a7f, 0x5a18, 0x51a5, 0x540d, 0x547d, 0x660e, 0x76df,
+    0x8ff7, 0x9298, 0x9cf4, 0x59ea, 0x725d, 0x6ec5, 0x514d, 0x68c9,
+    0x7dbf, 0x7dec, 0x9762, 0x9eba, 0x6478, 0x6a21, 0x8302, 0x5984,
+    0x5b5f, 0x6bdb, 0x731b, 0x76f2, 0x7db2, 0x8017, 0x8499, 0x5132,
+    0x6728, 0x9ed9, 0x76ee, 0x6762, 0x52ff, 0x9905, 0x5c24, 0x623b,
+    0x7c7e, 0x8cb0, 0x554f, 0x60b6, 0x7d0b, 0x9580, 0x5301, 0x4e5f,
+    0x51b6, 0x591c, 0x723a, 0x8036, 0x91ce, 0x5f25, 0x77e2, 0x5384,
+    0x5f79, 0x7d04, 0x85ac, 0x8a33, 0x8e8d, 0x9756, 0x67f3, 0x85ae,
+    0x9453, 0x6109, 0x6108, 0x6cb9, 0x7652, 0x003f, 0x003f, 0x003f,
+    /* lead byte 97 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8aed, 0x8f38, 0x552f, 0x4f51, 0x512a, 0x52c7, 0x53cb, 0x5ba5,
+    0x5e7d, 0x60a0, 0x6182, 0x63d6, 0x6709, 0x67da, 0x6e67, 0x6d8c,
+    0x7336, 0x7337, 0x7531, 0x7950, 0x88d5, 0x8a98, 0x904a, 0x9091,
+    0x90f5, 0x96c4, 0x878d, 0x5915, 0x4e88, 0x4f59, 0x4e0e, 0x8a89,
+    0x8f3f, 0x9810, 0x50ad, 0x5e7c, 0x5996, 0x5bb9, 0x5eb8, 0x63da,
+    0x63fa, 0x64c1, 0x66dc, 0x694a, 0x69d8, 0x6d0b, 0x6eb6, 0x7194,
+    0x7528, 0x7aaf, 0x7f8a, 0x8000, 0x8449, 0x84c9, 0x8981, 0x8b21,
+    0x8e0a, 0x9065, 0x967d, 0x990a, 0x617e, 0x6291, 0x6b32, 0x003f,
+    0x6c83, 0x6d74, 0x7fcc, 0x7ffc, 0x6dc0, 0x7f85, 0x87ba, 0x88f8,
+    0x6765, 0x83b1, 0x983c, 0x96f7, 0x6d1b, 0x7d61, 0x843d, 0x916a,
+    0x4e71, 0x5375, 0x5d50, 0x6b04, 0x6feb, 0x85cd, 0x862d, 0x89a7,
+    0x5229, 0x540f, 0x5c65, 0x674e, 0x68a8, 0x7406, 0x7483, 0x75e2,
+    0x88cf, 0x88e1, 0x91cc, 0x96e2, 0x9678, 0x5f8b, 0x7387, 0x7acb,
+    0x844e, 0x63a0, 0x7565, 0x5289, 0x6d41, 0x6e9c, 0x7409, 0x7559,
+    0x786b, 0x7c92, 0x9686, 0x7adc, 0x9f8d, 0x4fb6, 0x616e, 0x65c5,
+    0x865c, 0x4e86, 0x4eae, 0x50da, 0x4e21, 0x51cc, 0x5bee, 0x6599,
+    0x6881, 0x6dbc, 0x731f, 0x7642, 0x77ad, 0x7a1c, 0x7ce7, 0x826f,
+    0x8ad2, 0x907c, 0x91cf, 0x9675, 0x9818, 0x529b, 0x7dd1, 0x502b,
+    0x5398, 0x6797, 0x6dcb, 0x71d0, 0x7433, 0x81e8, 0x8f2a, 0x96a3,
+    0x9c57, 0x9e9f, 0x7460, 0x5841, 0x6d99, 0x7d2f, 0x985e, 0x4ee4,
+    0x4f36, 0x4f8b, 0x51b7, 0x52b1, 0x5dba, 0x601c, 0x73b2, 0x793c,
+    0x82d3, 0x9234, 0x96b7, 0x96f6, 0x970a, 0x9e97, 0x9f62, 0x66a6,
+    0x6b74, 0x5217, 0x52a3, 0x70c8, 0x88c2, 0x5ec9, 0x604b, 0x6190,
+    0x6f23, 0x7149, 0x7c3e, 0x7df4, 0x806f, 0x003f, 0x003f, 0x003f,
+    /* lead byte 98 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x84ee, 0x9023, 0x932c, 0x5442, 0x9b6f, 0x6ad3, 0x7089, 0x8cc2,
+    0x8def, 0x9732, 0x52b4, 0x5a41, 0x5eca, 0x5f04, 0x6717, 0x697c,
+    0x6994, 0x6d6a, 0x6f0f, 0x7262, 0x72fc, 0x7bed, 0x8001, 0x807e,
+    0x874b, 0x90ce, 0x516d, 0x9e93, 0x7984, 0x808b, 0x9332, 0x8ad6,
+    0x502d, 0x548c, 0x8a71, 0x6b6a, 0x8cc4, 0x8107, 0x60d1, 0x67a0,
+    0x9df2, 0x4e99, 0x4e98, 0x9c10, 0x8a6b, 0x85c1, 0x8568, 0x6900,
+    0x6e7e, 0x7897, 0x8155, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x5f0c,
+    0x4e10, 0x4e15, 0x4e2a, 0x4e31, 0x4e36, 0x4e3c, 0x4e3f, 0x4e42,
+    0x4e56, 0x4e58, 0x4e82, 0x4e85, 0x8c6b, 0x4e8a, 0x8212, 0x5f0d,
+    0x4e8e, 0x4e9e, 0x4e9f, 0x4ea0, 0x4ea2, 0x4eb0, 0x4eb3, 0x4eb6,
+    0x4ece, 0x4ecd, 0x4ec4, 0x4ec6, 0x4ec2, 0x4ed7, 0x4ede, 0x4eed,
+    0x4edf, 0x4ef7, 0x4f09, 0x4f5a, 0x4f30, 0x4f5b, 0x4f5d, 0x4f57,
+    0x4f47, 0x4f76, 0x4f88, 0x4f8f, 0x4f98, 0x4f7b, 0x4f69, 0x4f70,
+    0x4f91, 0x4f6f, 0x4f86, 0x4f96, 0x5118, 0x4fd4, 0x4fdf, 0x4fce,
+    0x4fd8, 0x4fdb, 0x4fd1, 0x4fda, 0x4fd0, 0x4fe4, 0x4fe5, 0x501a,
+    0x5028, 0x5014, 0x502a, 0x5025, 0x5005, 0x4f1c, 0x4ff6, 0x5021,
+    0x5029, 0x502c, 0x4ffe, 0x4fef, 0x5011, 0x5006, 0x5043, 0x5047,
+    0x6703, 0x5055, 0x5050, 0x5048, 0x505a, 0x5056, 0x506c, 0x5078,
+    0x5080, 0x509a, 0x5085, 0x50b4, 0x50b2, 0x003f, 0x003f, 0x003f,
+    /* lead byte 99 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x50c9, 0x50ca, 0x50b3, 0x50c2, 0x50d6, 0x50de, 0x50e5, 0x50ed,
+    0x50e3, 0x50ee, 0x50f9, 0x50f5, 0x5109, 0x5101, 0x5102, 0x5116,
+    0x5115, 0x5114, 0x511a, 0x5121, 0x513a, 0x5137, 0x513c, 0x513b,
+    0x513f, 0x5140, 0x5152, 0x514c, 0x5154, 0x5162, 0x7af8, 0x5169,
+    0x516a, 0x516e, 0x5180, 0x5182, 0x56d8, 0x518c, 0x5189, 0x518f,
+    0x5191, 0x5193, 0x5195, 0x5196, 0x51a4, 0x51a6, 0x51a2, 0x51a9,
+    0x51aa, 0x51ab, 0x51b3, 0x51b1, 0x51b2, 0x51b0, 0x51b5, 0x51bd,
+    0x51c5, 0x51c9, 0x51db, 0x51e0, 0x8655, 0x51e9, 0x51ed, 0x003f,
+    0x51f0, 0x51f5, 0x51fe, 0x5204, 0x520b, 0x5214, 0x520e, 0x5227,
+    0x522a, 0x522e, 0x5233, 0x5239, 0x524f, 0x5244, 0x524b, 0x524c,
+    0x525e, 0x5254, 0x526a, 0x5274, 0x5269, 0x5273, 0x527f, 0x527d,
+    0x528d, 0x5294, 0x5292, 0x5271, 0x5288, 0x5291, 0x8fa8, 0x8fa7,
+    0x52ac, 0x52ad, 0x52bc, 0x52b5, 0x52c1, 0x52cd, 0x52d7, 0x52de,
+    0x52e3, 0x52e6, 0x98ed, 0x52e0, 0x52f3, 0x52f5, 0x52f8, 0x52f9,
+    0x5306, 0x5308, 0x7538, 0x530d, 0x5310, 0x530f, 0x5315, 0x531a,
+    0x5323, 0x532f, 0x5331, 0x5333, 0x5338, 0x5340, 0x5346, 0x5345,
+    0x4e17, 0x5349, 0x534d, 0x51d6, 0x535e, 0x5369, 0x536e, 0x5918,
+    0x537b, 0x5377, 0x5382, 0x5396, 0x53a0, 0x53a6, 0x53a5, 0x53ae,
+    0x53b0, 0x53b6, 0x53c3, 0x7c12, 0x96d9, 0x53df, 0x66fc, 0x71ee,
+    0x53ee, 0x53e8, 0x53ed, 0x53fa, 0x5401, 0x543d, 0x5440, 0x542c,
+    0x542d, 0x543c, 0x542e, 0x5436, 0x5429, 0x541d, 0x544e, 0x548f,
+    0x5475, 0x548e, 0x545f, 0x5471, 0x5477, 0x5470, 0x5492, 0x547b,
+    0x5480, 0x5476, 0x5484, 0x5490, 0x5486, 0x54c7, 0x54a2, 0x54b8,
+    0x54a5, 0x54ac, 0x54c4, 0x54c8, 0x54a8, 0x003f, 0x003f, 0x003f,
+    /* lead byte 9a */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x54ab, 0x54c2, 0x54a4, 0x54be, 0x54bc, 0x54d8, 0x54e5, 0x54e6,
+    0x550f, 0x5514, 0x54fd, 0x54ee, 0x54ed, 0x54fa, 0x54e2, 0x5539,
+    0x5540, 0x5563, 0x554c, 0x552e, 0x555c, 0x5545, 0x5556, 0x5557,
+    0x5538, 0x5533, 0x555d, 0x5599, 0x5580, 0x54af, 0x558a, 0x559f,
+    0x557b, 0x557e, 0x5598, 0x559e, 0x55ae, 0x557c, 0x5583, 0x55a9,
+    0x5587, 0x55a8, 0x55da, 0x55c5, 0x55df, 0x55c4, 0x55dc, 0x55e4,
+    0x55d4, 0x5614, 0x55f7, 0x5616, 0x55fe, 0x55fd, 0x561b, 0x55f9,
+    0x564e, 0x5650, 0x71df, 0x5634, 0x5636, 0x5632, 0x5638, 0x003f,
+    0x566b, 0x5664, 0x562f, 0x566c, 0x566a, 0x5686, 0x5680, 0x568a,
+    0x56a0, 0x5694, 0x568f, 0x56a5, 0x56ae, 0x56b6, 0x56b4, 0x56c2,
+    0x56bc, 0x56c1, 0x56c3, 0x56c0, 0x56c8, 0x56ce, 0x56d1, 0x56d3,
+    0x56d7, 0x56ee, 0x56f9, 0x5700, 0x56ff, 0x5704, 0x5709, 0x5708,
+    0x570b, 0x570d, 0x5713, 0x5718, 0x5716, 0x55c7, 0x571c, 0x5726,
+    0x5737, 0x5738, 0x574e, 0x573b, 0x5740, 0x574f, 0x5769, 0x57c0,
+    0x5788, 0x5761, 0x577f, 0x5789, 0x5793, 0x57a0, 0x57b3, 0x57a4,
+    0x57aa, 0x57b0, 0x57c3, 0x57c6, 0x57d4, 0x57d2, 0x57d3, 0x580a,
+    0x57d6, 0x57e3, 0x580b, 0x5819, 0x581d, 0x5872, 0x5821, 0x5862,
+    0x584b, 0x5870, 0x6bc0, 0x5852, 0x583d, 0x5879, 0x5885, 0x58b9,
+    0x589f, 0x58ab, 0x58ba, 0x58de, 0x58bb, 0x58b8, 0x58ae, 0x58c5,
+    0x58d3, 0x58d1, 0x58d7, 0x58d9, 0x58d8, 0x58e5, 0x58dc, 0x58e4,
+    0x58df, 0x58ef, 0x58fa, 0x58f9, 0x58fb, 0x58fc, 0x58fd, 0x5902,
+    0x590a, 0x5910, 0x591b, 0x68a6, 0x5925, 0x592c, 0x592d, 0x5932,
+    0x5938, 0x593e, 0x7ad2, 0x5955, 0x5950, 0x594e, 0x595a, 0x5958,
+    0x5962, 0x5960, 0x5967, 0x596c, 0x5969, 0x003f, 0x003f, 0x003f,
+    /* lead byte 9b */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x5978, 0x5981, 0x599d, 0x4f5e, 0x4fab, 0x59a3, 0x59b2, 0x59c6,
+    0x59e8, 0x59dc, 0x598d, 0x59d9, 0x59da, 0x5a25, 0x5a1f, 0x5a11,
+    0x5a1c, 0x5a09, 0x5a1a, 0x5a40, 0x5a6c, 0x5a49, 0x5a35, 0x5a36,
+    0x5a62, 0x5a6a, 0x5a9a, 0x5abc, 0x5abe, 0x5acb, 0x5ac2, 0x5abd,
+    0x5ae3, 0x5ad7, 0x5ae6, 0x5ae9, 0x5ad6, 0x5afa, 0x5afb, 0x5b0c,
+    0x5b0b, 0x5b16, 0x5b32, 0x5ad0, 0x5b2a, 0x5b36, 0x5b3e, 0x5b43,
+    0x5b45, 0x5b40, 0x5b51, 0x5b55, 0x5b5a, 0x5b5b, 0x5b65, 0x5b69,
+    0x5b70, 0x5b73, 0x5b75, 0x5b78, 0x6588, 0x5b7a, 0x5b80, 0x003f,
+    0x5b83, 0x5ba6, 0x5bb8, 0x5bc3, 0x5bc7, 0x5bc9, 0x5bd4, 0x5bd0,
+    0x5be4, 0x5be6, 0x5be2, 0x5bde, 0x5be5, 0x5beb, 0x5bf0, 0x5bf6,
+    0x5bf3, 0x5c05, 0x5c07, 0x5c08, 0x5c0d, 0x5c13, 0x5c20, 0x5c22,
+    0x5c28, 0x5c38, 0x5c39, 0x5c41, 0x5c46, 0x5c4e, 0x5c53, 0x5c50,
+    0x5c4f, 0x5b71, 0x5c6c, 0x5c6e, 0x4e62, 0x5c76, 0x5c79, 0x5c8c,
+    0x5c91, 0x5c94, 0x599b, 0x5cab, 0x5cbb, 0x5cb6, 0x5cbc, 0x5cb7,
+    0x5cc5, 0x5cbe, 0x5cc7, 0x5cd9, 0x5ce9, 0x5cfd, 0x5cfa, 0x5ced,
+    0x5d8c, 0x5cea, 0x5d0b, 0x5d15, 0x5d17, 0x5d5c, 0x5d1f, 0x5d1b,
+    0x5d11, 0x5d14, 0x5d22, 0x5d1a, 0x5d19, 0x5d18, 0x5d4c, 0x5d52,
+    0x5d4e, 0x5d4b, 0x5d6c, 0x5d73, 0x5d76, 0x5d87, 0x5d84, 0x5d82,
+    0x5da2, 0x5d9d, 0x5dac, 0x5dae, 0x5dbd, 0x5d90, 0x5db7, 0x5dbc,
+    0x5dc9, 0x5dcd, 0x5dd3, 0x5dd2, 0x5dd6, 0x5ddb, 0x5deb, 0x5df2,
+    0x5df5, 0x5e0b, 0x5e1a, 0x5e19, 0x5e11, 0x5e1b, 0x5e36, 0x5e37,
+    0x5e44, 0x5e43, 0x5e40, 0x5e4e, 0x5e57, 0x5e54, 0x5e5f, 0x5e62,
+    0x5e64, 0x5e47, 0x5e75, 0x5e76, 0x5e7a, 0x9ebc, 0x5e7f, 0x5ea0,
+    0x5ec1, 0x5ec2, 0x5ec8, 0x5ed0, 0x5ecf, 0x003f, 0x003f, 0x003f,
+    /* lead byte 9c */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x5ed6, 0x5ee3, 0x5edd, 0x5eda, 0x5edb, 0x5ee2, 0x5ee1, 0x5ee8,
+    0x5ee9, 0x5eec, 0x5ef1, 0x5ef3, 0x5ef0, 0x5ef4, 0x5ef8, 0x5efe,
+    0x5f03, 0x5f09, 0x5f5d, 0x5f5c, 0x5f0b, 0x5f11, 0x5f16, 0x5f29,
+    0x5f2d, 0x5f38, 0x5f41, 0x5f48, 0x5f4c, 0x5f4e, 0x5f2f, 0x5f51,
+    0x5f56, 0x5f57, 0x5f59, 0x5f61, 0x5f6d, 0x5f73, 0x5f77, 0x5f83,
+    0x5f82, 0x5f7f, 0x5f8a, 0x5f88, 0x5f91, 0x5f87, 0x5f9e, 0x5f99,
+    0x5f98, 0x5fa0, 0x5fa8, 0x5fad, 0x5fbc, 0x5fd6, 0x5ffb, 0x5fe4,
+    0x5ff8, 0x5ff1, 0x5fdd, 0x60b3, 0x5fff, 0x6021, 0x6060, 0x003f,
+    0x6019, 0x6010, 0x6029, 0x600e, 0x6031, 0x601b, 0x6015, 0x602b,
+    0x6026, 0x600f, 0x603a, 0x605a, 0x6041, 0x606a, 0x6077, 0x605f,
+    0x604a, 0x6046, 0x604d, 0x6063, 0x6043, 0x6064, 0x6042, 0x606c,
+    0x606b, 0x6059, 0x6081, 0x608d, 0x60e7, 0x6083, 0x609a, 0x6084,
+    0x609b, 0x6096, 0x6097, 0x6092, 0x60a7, 0x608b, 0x60e1, 0x60b8,
+    0x60e0, 0x60d3, 0x60b4, 0x5ff0, 0x60bd, 0x60c6, 0x60b5, 0x60d8,
+    0x614d, 0x6115, 0x6106, 0x60f6, 0x60f7, 0x6100, 0x60f4, 0x60fa,
+    0x6103, 0x6121, 0x60fb, 0x60f1, 0x610d, 0x610e, 0x6147, 0x613e,
+    0x6128, 0x6127, 0x614a, 0x613f, 0x613c, 0x612c, 0x6134, 0x613d,
+    0x6142, 0x6144, 0x6173, 0x6177, 0x6158, 0x6159, 0x615a, 0x616b,
+    0x6174, 0x616f, 0x6165, 0x6171, 0x615f, 0x615d, 0x6153, 0x6175,
+    0x6199, 0x6196, 0x6187, 0x61ac, 0x6194, 0x619a, 0x618a, 0x6191,
+    0x61ab, 0x61ae, 0x61cc, 0x61ca, 0x61c9, 0x61f7, 0x61c8, 0x61c3,
+    0x61c6, 0x61ba, 0x61cb, 0x7f79, 0x61cd, 0x61e6, 0x61e3, 0x61f6,
+    0x61fa, 0x61f4, 0x61ff, 0x61fd, 0x61fc, 0x61fe, 0x6200, 0x6208,
+    0x6209, 0x620d, 0x620c, 0x6214, 0x621b, 0x003f, 0x003f, 0x003f,
+    /* lead byte 9d */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x621e, 0x6221, 0x622a, 0x622e, 0x6230, 0x6232, 0x6233, 0x6241,
+    0x624e, 0x625e, 0x6263, 0x625b, 0x6260, 0x6268, 0x627c, 0x6282,
+    0x6289, 0x627e, 0x6292, 0x6293, 0x6296, 0x62d4, 0x6283, 0x6294,
+    0x62d7, 0x62d1, 0x62bb, 0x62cf, 0x62ff, 0x62c6, 0x64d4, 0x62c8,
+    0x62dc, 0x62cc, 0x62ca, 0x62c2, 0x62c7, 0x629b, 0x62c9, 0x630c,
+    0x62ee, 0x62f1, 0x6327, 0x6302, 0x6308, 0x62ef, 0x62f5, 0x6350,
+    0x633e, 0x634d, 0x641c, 0x634f, 0x6396, 0x638e, 0x6380, 0x63ab,
+    0x6376, 0x63a3, 0x638f, 0x6389, 0x639f, 0x63b5, 0x636b, 0x003f,
+    0x6369, 0x63be, 0x63e9, 0x63c0, 0x63c6, 0x63e3, 0x63c9, 0x63d2,
+    0x63f6, 0x63c4, 0x6416, 0x6434, 0x6406, 0x6413, 0x6426, 0x6436,
+    0x651d, 0x6417, 0x6428, 0x640f, 0x6467, 0x646f, 0x6476, 0x644e,
+    0x652a, 0x6495, 0x6493, 0x64a5, 0x64a9, 0x6488, 0x64bc, 0x64da,
+    0x64d2, 0x64c5, 0x64c7, 0x64bb, 0x64d8, 0x64c2, 0x64f1, 0x64e7,
+    0x8209, 0x64e0, 0x64e1, 0x62ac, 0x64e3, 0x64ef, 0x652c, 0x64f6,
+    0x64f4, 0x64f2, 0x64fa, 0x6500, 0x64fd, 0x6518, 0x651c, 0x6505,
+    0x6524, 0x6523, 0x652b, 0x6534, 0x6535, 0x6537, 0x6536, 0x6538,
+    0x754b, 0x6548, 0x6556, 0x6555, 0x654d, 0x6558, 0x655e, 0x655d,
+    0x6572, 0x6578, 0x6582, 0x6583, 0x8b8a, 0x659b, 0x659f, 0x65ab,
+    0x65b7, 0x65c3, 0x65c6, 0x65c1, 0x65c4, 0x65cc, 0x65d2, 0x65db,
+    0x65d9, 0x65e0, 0x65e1, 0x65f1, 0x6772, 0x660a, 0x6603, 0x65fb,
+    0x6773, 0x6635, 0x6636, 0x6634, 0x661c, 0x664f, 0x6644, 0x6649,
+    0x6641, 0x665e, 0x665d, 0x6664, 0x6667, 0x6668, 0x665f, 0x6662,
+    0x6670, 0x6683, 0x6688, 0x668e, 0x6689, 0x6684, 0x6698, 0x669d,
+    0x66c1, 0x66b9, 0x66c9, 0x66be, 0x66bc, 0x003f, 0x003f, 0x003f,
+    /* lead byte 9e */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x66c4, 0x66b8, 0x66d6, 0x66da, 0x66e0, 0x663f, 0x66e6, 0x66e9,
+    0x66f0, 0x66f5, 0x66f7, 0x670f, 0x6716, 0x671e, 0x6726, 0x6727,
+    0x9738, 0x672e, 0x673f, 0x6736, 0x6741, 0x6738, 0x6737, 0x6746,
+    0x675e, 0x6760, 0x6759, 0x6763, 0x6764, 0x6789, 0x6770, 0x67a9,
+    0x677c, 0x676a, 0x678c, 0x678b, 0x67a6, 0x67a1, 0x6785, 0x67b7,
+    0x67ef, 0x67b4, 0x67ec, 0x67b3, 0x67e9, 0x67b8, 0x67e4, 0x67de,
+    0x67dd, 0x67e2, 0x67ee, 0x67b9, 0x67ce, 0x67c6, 0x67e7, 0x6a9c,
+    0x681e, 0x6846, 0x6829, 0x6840, 0x684d, 0x6832, 0x684e, 0x003f,
+    0x68b3, 0x682b, 0x6859, 0x6863, 0x6877, 0x687f, 0x689f, 0x688f,
+    0x68ad, 0x6894, 0x689d, 0x689b, 0x6883, 0x6aae, 0x68b9, 0x6874,
+    0x68b5, 0x68a0, 0x68ba, 0x690f, 0x688d, 0x687e, 0x6901, 0x68ca,
+    0x6908, 0x68d8, 0x6922, 0x6926, 0x68e1, 0x690c, 0x68cd, 0x68d4,
+    0x68e7, 0x68d5, 0x6936, 0x6912, 0x6904, 0x68d7, 0x68e3, 0x6925,
+    0x68f9, 0x68e0, 0x68ef, 0x6928, 0x692a, 0x691a, 0x6923, 0x6921,
+    0x68c6, 0x6979, 0x6977, 0x695c, 0x6978, 0x696b, 0x6954, 0x697e,
+    0x696e, 0x6939, 0x6974, 0x693d, 0x6959, 0x6930, 0x6961, 0x695e,
+    0x695d, 0x6981, 0x696a, 0x69b2, 0x69ae, 0x69d0, 0x69bf, 0x69c1,
+    0x69d3, 0x69be, 0x69ce, 0x5be8, 0x69ca, 0x69dd, 0x69bb, 0x69c3,
+    0x69a7, 0x6a2e, 0x6991, 0x69a0, 0x699c, 0x6995, 0x69b4, 0x69de,
+    0x69e8, 0x6a02, 0x6a1b, 0x69ff, 0x6b0a, 0x69f9, 0x69f2, 0x69e7,
+    0x6a05, 0x69b1, 0x6a1e, 0x69ed, 0x6a14, 0x69eb, 0x6a0a, 0x6a12,
+    0x6ac1, 0x6a23, 0x6a13, 0x6a44, 0x6a0c, 0x6a72, 0x6a36, 0x6a78,
+    0x6a47, 0x6a62, 0x6a59, 0x6a66, 0x6a48, 0x6a38, 0x6a22, 0x6a90,
+    0x6a8d, 0x6aa0, 0x6a84, 0x6aa2, 0x6aa3, 0x003f, 0x003f, 0x003f,
+    /* lead byte 9f */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6a97, 0x8617, 0x6abb, 0x6ac3, 0x6ac2, 0x6ab8, 0x6ab3, 0x6aac,
+    0x6ade, 0x6ad1, 0x6adf, 0x6aaa, 0x6ada, 0x6aea, 0x6afb, 0x6b05,
+    0x8616, 0x6afa, 0x6b12, 0x6b16, 0x9b31, 0x6b1f, 0x6b38, 0x6b37,
+    0x76dc, 0x6b39, 0x98ee, 0x6b47, 0x6b43, 0x6b49, 0x6b50, 0x6b59,
+    0x6b54, 0x6b5b, 0x6b5f, 0x6b61, 0x6b78, 0x6b79, 0x6b7f, 0x6b80,
+    0x6b84, 0x6b83, 0x6b8d, 0x6b98, 0x6b95, 0x6b9e, 0x6ba4, 0x6baa,
+    0x6bab, 0x6baf, 0x6bb2, 0x6bb1, 0x6bb3, 0x6bb7, 0x6bbc, 0x6bc6,
+    0x6bcb, 0x6bd3, 0x6bdf, 0x6bec, 0x6beb, 0x6bf3, 0x6bef, 0x003f,
+    0x9ebe, 0x6c08, 0x6c13, 0x6c14, 0x6c1b, 0x6c24, 0x6c23, 0x6c5e,
+    0x6c55, 0x6c62, 0x6c6a, 0x6c82, 0x6c8d, 0x6c9a, 0x6c81, 0x6c9b,
+    0x6c7e, 0x6c68, 0x6c73, 0x6c92, 0x6c90, 0x6cc4, 0x6cf1, 0x6cd3,
+    0x6cbd, 0x6cd7, 0x6cc5, 0x6cdd, 0x6cae, 0x6cb1, 0x6cbe, 0x6cba,
+    0x6cdb, 0x6cef, 0x6cd9, 0x6cea, 0x6d1f, 0x884d, 0x6d36, 0x6d2b,
+    0x6d3d, 0x6d38, 0x6d19, 0x6d35, 0x6d33, 0x6d12, 0x6d0c, 0x6d63,
+    0x6d93, 0x6d64, 0x6d5a, 0x6d79, 0x6d59, 0x6d8e, 0x6d95, 0x6fe4,
+    0x6d85, 0x6df9, 0x6e15, 0x6e0a, 0x6db5, 0x6dc7, 0x6de6, 0x6db8,
+    0x6dc6, 0x6dec, 0x6dde, 0x6dcc, 0x6de8, 0x6dd2, 0x6dc5, 0x6dfa,
+    0x6dd9, 0x6de4, 0x6dd5, 0x6dea, 0x6dee, 0x6e2d, 0x6e6e, 0x6e2e,
+    0x6e19, 0x6e72, 0x6e5f, 0x6e3e, 0x6e23, 0x6e6b, 0x6e2b, 0x6e76,
+    0x6e4d, 0x6e1f, 0x6e43, 0x6e3a, 0x6e4e, 0x6e24, 0x6eff, 0x6e1d,
+    0x6e38, 0x6e82, 0x6eaa, 0x6e98, 0x6ec9, 0x6eb7, 0x6ed3, 0x6ebd,
+    0x6eaf, 0x6ec4, 0x6eb2, 0x6ed4, 0x6ed5, 0x6e8f, 0x6ea5, 0x6ec2,
+    0x6e9f, 0x6f41, 0x6f11, 0x704c, 0x6eec, 0x6ef8, 0x6efe, 0x6f3f,
+    0x6ef2, 0x6f31, 0x6eef, 0x6f32, 0x6ecc, 0x003f, 0x003f, 0x003f,
+    /* lead byte e0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6f3e, 0x6f13, 0x6ef7, 0x6f86, 0x6f7a, 0x6f78, 0x6f81, 0x6f80,
+    0x6f6f, 0x6f5b, 0x6ff3, 0x6f6d, 0x6f82, 0x6f7c, 0x6f58, 0x6f8e,
+    0x6f91, 0x6fc2, 0x6f66, 0x6fb3, 0x6fa3, 0x6fa1, 0x6fa4, 0x6fb9,
+    0x6fc6, 0x6faa, 0x6fdf, 0x6fd5, 0x6fec, 0x6fd4, 0x6fd8, 0x6ff1,
+    0x6fee, 0x6fdb, 0x7009, 0x700b, 0x6ffa, 0x7011, 0x7001, 0x700f,
+    0x6ffe, 0x701b, 0x701a, 0x6f74, 0x701d, 0x7018, 0x701f, 0x7030,
+    0x703e, 0x7032, 0x7051, 0x7063, 0x7099, 0x7092, 0x70af, 0x70f1,
+    0x70ac, 0x70b8, 0x70b3, 0x70ae, 0x70df, 0x70cb, 0x70dd, 0x003f,
+    0x70d9, 0x7109, 0x70fd, 0x711c, 0x7119, 0x7165, 0x7155, 0x7188,
+    0x7166, 0x7162, 0x714c, 0x7156, 0x716c, 0x718f, 0x71fb, 0x7184,
+    0x7195, 0x71a8, 0x71ac, 0x71d7, 0x71b9, 0x71be, 0x71d2, 0x71c9,
+    0x71d4, 0x71ce, 0x71e0, 0x71ec, 0x71e7, 0x71f5, 0x71fc, 0x71f9,
+    0x71ff, 0x720d, 0x7210, 0x721b, 0x7228, 0x722d, 0x722c, 0x7230,
+    0x7232, 0x723b, 0x723c, 0x723f, 0x7240, 0x7246, 0x724b, 0x7258,
+    0x7274, 0x727e, 0x7282, 0x7281, 0x7287, 0x7292, 0x7296, 0x72a2,
+    0x72a7, 0x72b9, 0x72b2, 0x72c3, 0x72c6, 0x72c4, 0x72ce, 0x72d2,
+    0x72e2, 0x72e0, 0x72e1, 0x72f9, 0x72f7, 0x500f, 0x7317, 0x730a,
+    0x731c, 0x7316, 0x731d, 0x7334, 0x732f, 0x7329, 0x7325, 0x733e,
+    0x734e, 0x734f, 0x9ed8, 0x7357, 0x736a, 0x7368, 0x7370, 0x7378,
+    0x7375, 0x737b, 0x737a, 0x73c8, 0x73b3, 0x73ce, 0x73bb, 0x73c0,
+    0x73e5, 0x73ee, 0x73de, 0x74a2, 0x7405, 0x746f, 0x7425, 0x73f8,
+    0x7432, 0x743a, 0x7455, 0x743f, 0x745f, 0x7459, 0x7441, 0x745c,
+    0x7469, 0x7470, 0x7463, 0x746a, 0x7476, 0x747e, 0x748b, 0x749e,
+    0x74a7, 0x74ca, 0x74cf, 0x74d4, 0x73f1, 0x003f, 0x003f, 0x003f,
+    /* lead byte e1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x74e0, 0x74e3, 0x74e7, 0x74e9, 0x74ee, 0x74f2, 0x74f0, 0x74f1,
+    0x74f8, 0x74f7, 0x7504, 0x7503, 0x7505, 0x750c, 0x750e, 0x750d,
+    0x7515, 0x7513, 0x751e, 0x7526, 0x752c, 0x753c, 0x7544, 0x754d,
+    0x754a, 0x7549, 0x755b, 0x7546, 0x755a, 0x7569, 0x7564, 0x7567,
+    0x756b, 0x756d, 0x7578, 0x7576, 0x7586, 0x7587, 0x7574, 0x758a,
+    0x7589, 0x7582, 0x7594, 0x759a, 0x759d, 0x75a5, 0x75a3, 0x75c2,
+    0x75b3, 0x75c3, 0x75b5, 0x75bd, 0x75b8, 0x75bc, 0x75b1, 0x75cd,
+    0x75ca, 0x75d2, 0x75d9, 0x75e3, 0x75de, 0x75fe, 0x75ff, 0x003f,
+    0x75fc, 0x7601, 0x75f0, 0x75fa, 0x75f2, 0x75f3, 0x760b, 0x760d,
+    0x7609, 0x761f, 0x7627, 0x7620, 0x7621, 0x7622, 0x7624, 0x7634,
+    0x7630, 0x763b, 0x7647, 0x7648, 0x7646, 0x765c, 0x7658, 0x7661,
+    0x7662, 0x7668, 0x7669, 0x766a, 0x7667, 0x766c, 0x7670, 0x7672,
+    0x7676, 0x7678, 0x767c, 0x7680, 0x7683, 0x7688, 0x768b, 0x768e,
+    0x7696, 0x7693, 0x7699, 0x769a, 0x76b0, 0x76b4, 0x76b8, 0x76b9,
+    0x76ba, 0x76c2, 0x76cd, 0x76d6, 0x76d2, 0x76de, 0x76e1, 0x76e5,
+    0x76e7, 0x76ea, 0x862f, 0x76fb, 0x7708, 0x7707, 0x7704, 0x7729,
+    0x7724, 0x771e, 0x7725, 0x7726, 0x771b, 0x7737, 0x7738, 0x7747,
+    0x775a, 0x7768, 0x776b, 0x775b, 0x7765, 0x777f, 0x777e, 0x7779,
+    0x778e, 0x778b, 0x7791, 0x77a0, 0x779e, 0x77b0, 0x77b6, 0x77b9,
+    0x77bf, 0x77bc, 0x77bd, 0x77bb, 0x77c7, 0x77cd, 0x77d7, 0x77da,
+    0x77dc, 0x77e3, 0x77ee, 0x77fc, 0x780c, 0x7812, 0x7926, 0x7820,
+    0x792a, 0x7845, 0x788e, 0x7874, 0x7886, 0x787c, 0x789a, 0x788c,
+    0x78a3, 0x78b5, 0x78aa, 0x78af, 0x78d1, 0x78c6, 0x78cb, 0x78d4,
+    0x78be, 0x78bc, 0x78c5, 0x78ca, 0x78ec, 0x003f, 0x003f, 0x003f,
+    /* lead byte e2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x78e7, 0x78da, 0x78fd, 0x78f4, 0x7907, 0x7912, 0x7911, 0x7919,
+    0x792c, 0x792b, 0x7940, 0x7960, 0x7957, 0x795f, 0x795a, 0x7955,
+    0x7953, 0x797a, 0x797f, 0x798a, 0x799d, 0x79a7, 0x9f4b, 0x79aa,
+    0x79ae, 0x79b3, 0x79b9, 0x79ba, 0x79c9, 0x79d5, 0x79e7, 0x79ec,
+    0x79e1, 0x79e3, 0x7a08, 0x7a0d, 0x7a18, 0x7a19, 0x7a20, 0x7a1f,
+    0x7980, 0x7a31, 0x7a3b, 0x7a3e, 0x7a37, 0x7a43, 0x7a57, 0x7a49,
+    0x7a61, 0x7a62, 0x7a69, 0x9f9d, 0x7a70, 0x7a79, 0x7a7d, 0x7a88,
+    0x7a97, 0x7a95, 0x7a98, 0x7a96, 0x7aa9, 0x7ac8, 0x7ab0, 0x003f,
+    0x7ab6, 0x7ac5, 0x7ac4, 0x7abf, 0x9083, 0x7ac7, 0x7aca, 0x7acd,
+    0x7acf, 0x7ad5, 0x7ad3, 0x7ad9, 0x7ada, 0x7add, 0x7ae1, 0x7ae2,
+    0x7ae6, 0x7aed, 0x7af0, 0x7b02, 0x7b0f, 0x7b0a, 0x7b06, 0x7b33,
+    0x7b18, 0x7b19, 0x7b1e, 0x7b35, 0x7b28, 0x7b36, 0x7b50, 0x7b7a,
+    0x7b04, 0x7b4d, 0x7b0b, 0x7b4c, 0x7b45, 0x7b75, 0x7b65, 0x7b74,
+    0x7b67, 0x7b70, 0x7b71, 0x7b6c, 0x7b6e, 0x7b9d, 0x7b98, 0x7b9f,
+    0x7b8d, 0x7b9c, 0x7b9a, 0x7b8b, 0x7b92, 0x7b8f, 0x7b5d, 0x7b99,
+    0x7bcb, 0x7bc1, 0x7bcc, 0x7bcf, 0x7bb4, 0x7bc6, 0x7bdd, 0x7be9,
+    0x7c11, 0x7c14, 0x7be6, 0x7be5, 0x7c60, 0x7c00, 0x7c07, 0x7c13,
+    0x7bf3, 0x7bf7, 0x7c17, 0x7c0d, 0x7bf6, 0x7c23, 0x7c27, 0x7c2a,
+    0x7c1f, 0x7c37, 0x7c2b, 0x7c3d, 0x7c4c, 0x7c43, 0x7c54, 0x7c4f,
+    0x7c40, 0x7c50, 0x7c58, 0x7c5f, 0x7c64, 0x7c56, 0x7c65, 0x7c6c,
+    0x7c75, 0x7c83, 0x7c90, 0x7ca4, 0x7cad, 0x7ca2, 0x7cab, 0x7ca1,
+    0x7ca8, 0x7cb3, 0x7cb2, 0x7cb1, 0x7cae, 0x7cb9, 0x7cbd, 0x7cc0,
+    0x7cc5, 0x7cc2, 0x7cd8, 0x7cd2, 0x7cdc, 0x7ce2, 0x9b3b, 0x7cef,
+    0x7cf2, 0x7cf4, 0x7cf6, 0x7cfa, 0x7d06, 0x003f, 0x003f, 0x003f,
+    /* lead byte e3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7d02, 0x7d1c, 0x7d15, 0x7d0a, 0x7d45, 0x7d4b, 0x7d2e, 0x7d32,
+    0x7d3f, 0x7d35, 0x7d46, 0x7d73, 0x7d56, 0x7d4e, 0x7d72, 0x7d68,
+    0x7d6e, 0x7d4f, 0x7d63, 0x7d93, 0x7d89, 0x7d5b, 0x7d8f, 0x7d7d,
+    0x7d9b, 0x7dba, 0x7dae, 0x7da3, 0x7db5, 0x7dc7, 0x7dbd, 0x7dab,
+    0x7e3d, 0x7da2, 0x7daf, 0x7ddc, 0x7db8, 0x7d9f, 0x7db0, 0x7dd8,
+    0x7ddd, 0x7de4, 0x7dde, 0x7dfb, 0x7df2, 0x7de1, 0x7e05, 0x7e0a,
+    0x7e23, 0x7e21, 0x7e12, 0x7e31, 0x7e1f, 0x7e09, 0x7e0b, 0x7e22,
+    0x7e46, 0x7e66, 0x7e3b, 0x7e35, 0x7e39, 0x7e43, 0x7e37, 0x003f,
+    0x7e32, 0x7e3a, 0x7e67, 0x7e5d, 0x7e56, 0x7e5e, 0x7e59, 0x7e5a,
+    0x7e79, 0x7e6a, 0x7e69, 0x7e7c, 0x7e7b, 0x7e83, 0x7dd5, 0x7e7d,
+    0x8fae, 0x7e7f, 0x7e88, 0x7e89, 0x7e8c, 0x7e92, 0x7e90, 0x7e93,
+    0x7e94, 0x7e96, 0x7e8e, 0x7e9b, 0x7e9c, 0x7f38, 0x7f3a, 0x7f45,
+    0x7f4c, 0x7f4d, 0x7f4e, 0x7f50, 0x7f51, 0x7f55, 0x7f54, 0x7f58,
+    0x7f5f, 0x7f60, 0x7f68, 0x7f69, 0x7f67, 0x7f78, 0x7f82, 0x7f86,
+    0x7f83, 0x7f88, 0x7f87, 0x7f8c, 0x7f94, 0x7f9e, 0x7f9d, 0x7f9a,
+    0x7fa3, 0x7faf, 0x7fb2, 0x7fb9, 0x7fae, 0x7fb6, 0x7fb8, 0x8b71,
+    0x7fc5, 0x7fc6, 0x7fca, 0x7fd5, 0x7fd4, 0x7fe1, 0x7fe6, 0x7fe9,
+    0x7ff3, 0x7ff9, 0x98dc, 0x8006, 0x8004, 0x800b, 0x8012, 0x8018,
+    0x8019, 0x801c, 0x8021, 0x8028, 0x803f, 0x803b, 0x804a, 0x8046,
+    0x8052, 0x8058, 0x805a, 0x805f, 0x8062, 0x8068, 0x8073, 0x8072,
+    0x8070, 0x8076, 0x8079, 0x807d, 0x807f, 0x8084, 0x8086, 0x8085,
+    0x809b, 0x8093, 0x809a, 0x80ad, 0x5190, 0x80ac, 0x80db, 0x80e5,
+    0x80d9, 0x80dd, 0x80c4, 0x80da, 0x80d6, 0x8109, 0x80ef, 0x80f1,
+    0x811b, 0x8129, 0x8123, 0x812f, 0x814b, 0x003f, 0x003f, 0x003f,
+    /* lead byte e4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x968b, 0x8146, 0x813e, 0x8153, 0x8151, 0x80fc, 0x8171, 0x816e,
+    0x8165, 0x8166, 0x8174, 0x8183, 0x8188, 0x818a, 0x8180, 0x8182,
+    0x81a0, 0x8195, 0x81a4, 0x81a3, 0x815f, 0x8193, 0x81a9, 0x81b0,
+    0x81b5, 0x81be, 0x81b8, 0x81bd, 0x81c0, 0x81c2, 0x81ba, 0x81c9,
+    0x81cd, 0x81d1, 0x81d9, 0x81d8, 0x81c8, 0x81da, 0x81df, 0x81e0,
+    0x81e7, 0x81fa, 0x81fb, 0x81fe, 0x8201, 0x8202, 0x8205, 0x8207,
+    0x820a, 0x820d, 0x8210, 0x8216, 0x8229, 0x822b, 0x8238, 0x8233,
+    0x8240, 0x8259, 0x8258, 0x825d, 0x825a, 0x825f, 0x8264, 0x003f,
+    0x8262, 0x8268, 0x826a, 0x826b, 0x822e, 0x8271, 0x8277, 0x8278,
+    0x827e, 0x828d, 0x8292, 0x82ab, 0x829f, 0x82bb, 0x82ac, 0x82e1,
+    0x82e3, 0x82df, 0x82d2, 0x82f4, 0x82f3, 0x82fa, 0x8393, 0x8303,
+    0x82fb, 0x82f9, 0x82de, 0x8306, 0x82dc, 0x8309, 0x82d9, 0x8335,
+    0x8334, 0x8316, 0x8332, 0x8331, 0x8340, 0x8339, 0x8350, 0x8345,
+    0x832f, 0x832b, 0x8317, 0x8318, 0x8385, 0x839a, 0x83aa, 0x839f,
+    0x83a2, 0x8396, 0x8323, 0x838e, 0x8387, 0x838a, 0x837c, 0x83b5,
+    0x8373, 0x8375, 0x83a0, 0x8389, 0x83a8, 0x83f4, 0x8413, 0x83eb,
+    0x83ce, 0x83fd, 0x8403, 0x83d8, 0x840b, 0x83c1, 0x83f7, 0x8407,
+    0x83e0, 0x83f2, 0x840d, 0x8422, 0x8420, 0x83bd, 0x8438, 0x8506,
+    0x83fb, 0x846d, 0x842a, 0x843c, 0x855a, 0x8484, 0x8477, 0x846b,
+    0x84ad, 0x846e, 0x8482, 0x8469, 0x8446, 0x842c, 0x846f, 0x8479,
+    0x8435, 0x84ca, 0x8462, 0x84b9, 0x84bf, 0x849f, 0x84d9, 0x84cd,
+    0x84bb, 0x84da, 0x84d0, 0x84c1, 0x84c6, 0x84d6, 0x84a1, 0x8521,
+    0x84ff, 0x84f4, 0x8517, 0x8518, 0x852c, 0x851f, 0x8515, 0x8514,
+    0x84fc, 0x8540, 0x8563, 0x8558, 0x8548, 0x003f, 0x003f, 0x003f,
+    /* lead byte e5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8541, 0x8602, 0x854b, 0x8555, 0x8580, 0x85a4, 0x8588, 0x8591,
+    0x858a, 0x85a8, 0x856d, 0x8594, 0x859b, 0x85ea, 0x8587, 0x859c,
+    0x8577, 0x857e, 0x8590, 0x85c9, 0x85ba, 0x85cf, 0x85b9, 0x85d0,
+    0x85d5, 0x85dd, 0x85e5, 0x85dc, 0x85f9, 0x860a, 0x8613, 0x860b,
+    0x85fe, 0x85fa, 0x8606, 0x8622, 0x861a, 0x8630, 0x863f, 0x864d,
+    0x4e55, 0x8654, 0x865f, 0x8667, 0x8671, 0x8693, 0x86a3, 0x86a9,
+    0x86aa, 0x868b, 0x868c, 0x86b6, 0x86af, 0x86c4, 0x86c6, 0x86b0,
+    0x86c9, 0x8823, 0x86ab, 0x86d4, 0x86de, 0x86e9, 0x86ec, 0x003f,
+    0x86df, 0x86db, 0x86ef, 0x8712, 0x8706, 0x8708, 0x8700, 0x8703,
+    0x86fb, 0x8711, 0x8709, 0x870d, 0x86f9, 0x870a, 0x8734, 0x873f,
+    0x8737, 0x873b, 0x8725, 0x8729, 0x871a, 0x8760, 0x875f, 0x8778,
+    0x874c, 0x874e, 0x8774, 0x8757, 0x8768, 0x876e, 0x8759, 0x8753,
+    0x8763, 0x876a, 0x8805, 0x87a2, 0x879f, 0x8782, 0x87af, 0x87cb,
+    0x87bd, 0x87c0, 0x87d0, 0x96d6, 0x87ab, 0x87c4, 0x87b3, 0x87c7,
+    0x87c6, 0x87bb, 0x87ef, 0x87f2, 0x87e0, 0x880f, 0x880d, 0x87fe,
+    0x87f6, 0x87f7, 0x880e, 0x87d2, 0x8811, 0x8816, 0x8815, 0x8822,
+    0x8821, 0x8831, 0x8836, 0x8839, 0x8827, 0x883b, 0x8844, 0x8842,
+    0x8852, 0x8859, 0x885e, 0x8862, 0x886b, 0x8881, 0x887e, 0x889e,
+    0x8875, 0x887d, 0x88b5, 0x8872, 0x8882, 0x8897, 0x8892, 0x88ae,
+    0x8899, 0x88a2, 0x888d, 0x88a4, 0x88b0, 0x88bf, 0x88b1, 0x88c3,
+    0x88c4, 0x88d4, 0x88d8, 0x88d9, 0x88dd, 0x88f9, 0x8902, 0x88fc,
+    0x88f4, 0x88e8, 0x88f2, 0x8904, 0x890c, 0x890a, 0x8913, 0x8943,
+    0x891e, 0x8925, 0x892a, 0x892b, 0x8941, 0x8944, 0x893b, 0x8936,
+    0x8938, 0x894c, 0x891d, 0x8960, 0x895e, 0x003f, 0x003f, 0x003f,
+    /* lead byte e6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8966, 0x8964, 0x896d, 0x896a, 0x896f, 0x8974, 0x8977, 0x897e,
+    0x8983, 0x8988, 0x898a, 0x8993, 0x8998, 0x89a1, 0x89a9, 0x89a6,
+    0x89ac, 0x89af, 0x89b2, 0x89ba, 0x89bd, 0x89bf, 0x89c0, 0x89da,
+    0x89dc, 0x89dd, 0x89e7, 0x89f4, 0x89f8, 0x8a03, 0x8a16, 0x8a10,
+    0x8a0c, 0x8a1b, 0x8a1d, 0x8a25, 0x8a36, 0x8a41, 0x8a5b, 0x8a52,
+    0x8a46, 0x8a48, 0x8a7c, 0x8a6d, 0x8a6c, 0x8a62, 0x8a85, 0x8a82,
+    0x8a84, 0x8aa8, 0x8aa1, 0x8a91, 0x8aa5, 0x8aa6, 0x8a9a, 0x8aa3,
+    0x8ac4, 0x8acd, 0x8ac2, 0x8ada, 0x8aeb, 0x8af3, 0x8ae7, 0x003f,
+    0x8ae4, 0x8af1, 0x8b14, 0x8ae0, 0x8ae2, 0x8af7, 0x8ade, 0x8adb,
+    0x8b0c, 0x8b07, 0x8b1a, 0x8ae1, 0x8b16, 0x8b10, 0x8b17, 0x8b20,
+    0x8b33, 0x97ab, 0x8b26, 0x8b2b, 0x8b3e, 0x8b28, 0x8b41, 0x8b4c,
+    0x8b4f, 0x8b4e, 0x8b49, 0x8b56, 0x8b5b, 0x8b5a, 0x8b6b, 0x8b5f,
+    0x8b6c, 0x8b6f, 0x8b74, 0x8b7d, 0x8b80, 0x8b8c, 0x8b8e, 0x8b92,
+    0x8b93, 0x8b96, 0x8b99, 0x8b9a, 0x8c3a, 0x8c41, 0x8c3f, 0x8c48,
+    0x8c4c, 0x8c4e, 0x8c50, 0x8c55, 0x8c62, 0x8c6c, 0x8c78, 0x8c7a,
+    0x8c82, 0x8c89, 0x8c85, 0x8c8a, 0x8c8d, 0x8c8e, 0x8c94, 0x8c7c,
+    0x8c98, 0x621d, 0x8cad, 0x8caa, 0x8cbd, 0x8cb2, 0x8cb3, 0x8cae,
+    0x8cb6, 0x8cc8, 0x8cc1, 0x8ce4, 0x8ce3, 0x8cda, 0x8cfd, 0x8cfa,
+    0x8cfb, 0x8d04, 0x8d05, 0x8d0a, 0x8d07, 0x8d0f, 0x8d0d, 0x8d10,
+    0x9f4e, 0x8d13, 0x8ccd, 0x8d14, 0x8d16, 0x8d67, 0x8d6d, 0x8d71,
+    0x8d73, 0x8d81, 0x8d99, 0x8dc2, 0x8dbe, 0x8dba, 0x8dcf, 0x8dda,
+    0x8dd6, 0x8dcc, 0x8ddb, 0x8dcb, 0x8dea, 0x8deb, 0x8ddf, 0x8de3,
+    0x8dfc, 0x8e08, 0x8e09, 0x8dff, 0x8e1d, 0x8e1e, 0x8e10, 0x8e1f,
+    0x8e42, 0x8e35, 0x8e30, 0x8e34, 0x8e4a, 0x003f, 0x003f, 0x003f,
+    /* lead byte e7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8e47, 0x8e49, 0x8e4c, 0x8e50, 0x8e48, 0x8e59, 0x8e64, 0x8e60,
+    0x8e2a, 0x8e63, 0x8e55, 0x8e76, 0x8e72, 0x8e7c, 0x8e81, 0x8e87,
+    0x8e85, 0x8e84, 0x8e8b, 0x8e8a, 0x8e93, 0x8e91, 0x8e94, 0x8e99,
+    0x8eaa, 0x8ea1, 0x8eac, 0x8eb0, 0x8ec6, 0x8eb1, 0x8ebe, 0x8ec5,
+    0x8ec8, 0x8ecb, 0x8edb, 0x8ee3, 0x8efc, 0x8efb, 0x8eeb, 0x8efe,
+    0x8f0a, 0x8f05, 0x8f15, 0x8f12, 0x8f19, 0x8f13, 0x8f1c, 0x8f1f,
+    0x8f1b, 0x8f0c, 0x8f26, 0x8f33, 0x8f3b, 0x8f39, 0x8f45, 0x8f42,
+    0x8f3e, 0x8f4c, 0x8f49, 0x8f46, 0x8f4e, 0x8f57, 0x8f5c, 0x003f,
+    0x8f62, 0x8f63, 0x8f64, 0x8f9c, 0x8f9f, 0x8fa3, 0x8fad, 0x8faf,
+    0x8fb7, 0x8fda, 0x8fe5, 0x8fe2, 0x8fea, 0x8fef, 0x9087, 0x8ff4,
+    0x9005, 0x8ff9, 0x8ffa, 0x9011, 0x9015, 0x9021, 0x900d, 0x901e,
+    0x9016, 0x900b, 0x9027, 0x9036, 0x9035, 0x9039, 0x8ff8, 0x904f,
+    0x9050, 0x9051, 0x9052, 0x900e, 0x9049, 0x903e, 0x9056, 0x9058,
+    0x905e, 0x9068, 0x906f, 0x9076, 0x96a8, 0x9072, 0x9082, 0x907d,
+    0x9081, 0x9080, 0x908a, 0x9089, 0x908f, 0x90a8, 0x90af, 0x90b1,
+    0x90b5, 0x90e2, 0x90e4, 0x6248, 0x90db, 0x9102, 0x9112, 0x9119,
+    0x9132, 0x9130, 0x914a, 0x9156, 0x9158, 0x9163, 0x9165, 0x9169,
+    0x9173, 0x9172, 0x918b, 0x9189, 0x9182, 0x91a2, 0x91ab, 0x91af,
+    0x91aa, 0x91b5, 0x91b4, 0x91ba, 0x91c0, 0x91c1, 0x91c9, 0x91cb,
+    0x91d0, 0x91d6, 0x91df, 0x91e1, 0x91db, 0x91fc, 0x91f5, 0x91f6,
+    0x921e, 0x91ff, 0x9214, 0x922c, 0x9215, 0x9211, 0x925e, 0x9257,
+    0x9245, 0x9249, 0x9264, 0x9248, 0x9295, 0x923f, 0x924b, 0x9250,
+    0x929c, 0x9296, 0x9293, 0x929b, 0x925a, 0x92cf, 0x92b9, 0x92b7,
+    0x92e9, 0x930f, 0x92fa, 0x9344, 0x932e, 0x003f, 0x003f, 0x003f,
+    /* lead byte e8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9319, 0x9322, 0x931a, 0x9323, 0x933a, 0x9335, 0x933b, 0x935c,
+    0x9360, 0x937c, 0x936e, 0x9356, 0x93b0, 0x93ac, 0x93ad, 0x9394,
+    0x93b9, 0x93d6, 0x93d7, 0x93e8, 0x93e5, 0x93d8, 0x93c3, 0x93dd,
+    0x93d0, 0x93c8, 0x93e4, 0x941a, 0x9414, 0x9413, 0x9403, 0x9407,
+    0x9410, 0x9436, 0x942b, 0x9435, 0x9421, 0x943a, 0x9441, 0x9452,
+    0x9444, 0x945b, 0x9460, 0x9462, 0x945e, 0x946a, 0x9229, 0x9470,
+    0x9475, 0x9477, 0x947d, 0x945a, 0x947c, 0x947e, 0x9481, 0x947f,
+    0x9582, 0x9587, 0x958a, 0x9594, 0x9596, 0x9598, 0x9599, 0x003f,
+    0x95a0, 0x95a8, 0x95a7, 0x95ad, 0x95bc, 0x95bb, 0x95b9, 0x95be,
+    0x95ca, 0x6ff6, 0x95c3, 0x95cd, 0x95cc, 0x95d5, 0x95d4, 0x95d6,
+    0x95dc, 0x95e1, 0x95e5, 0x95e2, 0x9621, 0x9628, 0x962e, 0x962f,
+    0x9642, 0x964c, 0x964f, 0x964b, 0x9677, 0x965c, 0x965e, 0x965d,
+    0x965f, 0x9666, 0x9672, 0x966c, 0x968d, 0x9698, 0x9695, 0x9697,
+    0x96aa, 0x96a7, 0x96b1, 0x96b2, 0x96b0, 0x96b4, 0x96b6, 0x96b8,
+    0x96b9, 0x96ce, 0x96cb, 0x96c9, 0x96cd, 0x894d, 0x96dc, 0x970d,
+    0x96d5, 0x96f9, 0x9704, 0x9706, 0x9708, 0x9713, 0x970e, 0x9711,
+    0x970f, 0x9716, 0x9719, 0x9724, 0x972a, 0x9730, 0x9739, 0x973d,
+    0x973e, 0x9744, 0x9746, 0x9748, 0x9742, 0x9749, 0x975c, 0x9760,
+    0x9764, 0x9766, 0x9768, 0x52d2, 0x976b, 0x9771, 0x9779, 0x9785,
+    0x977c, 0x9781, 0x977a, 0x9786, 0x978b, 0x978f, 0x9790, 0x979c,
+    0x97a8, 0x97a6, 0x97a3, 0x97b3, 0x97b4, 0x97c3, 0x97c6, 0x97c8,
+    0x97cb, 0x97dc, 0x97ed, 0x9f4f, 0x97f2, 0x7adf, 0x97f6, 0x97f5,
+    0x980f, 0x980c, 0x9838, 0x9824, 0x9821, 0x9837, 0x983d, 0x9846,
+    0x984f, 0x984b, 0x986b, 0x986f, 0x9870, 0x003f, 0x003f, 0x003f,
+    /* lead byte e9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9871, 0x9874, 0x9873, 0x98aa, 0x98af, 0x98b1, 0x98b6, 0x98c4,
+    0x98c3, 0x98c6, 0x98e9, 0x98eb, 0x9903, 0x9909, 0x9912, 0x9914,
+    0x9918, 0x9921, 0x991d, 0x991e, 0x9924, 0x9920, 0x992c, 0x992e,
+    0x993d, 0x993e, 0x9942, 0x9949, 0x9945, 0x9950, 0x994b, 0x9951,
+    0x9952, 0x994c, 0x9955, 0x9997, 0x9998, 0x99a5, 0x99ad, 0x99ae,
+    0x99bc, 0x99df, 0x99db, 0x99dd, 0x99d8, 0x99d1, 0x99ed, 0x99ee,
+    0x99f1, 0x99f2, 0x99fb, 0x99f8, 0x9a01, 0x9a0f, 0x9a05, 0x99e2,
+    0x9a19, 0x9a2b, 0x9a37, 0x9a45, 0x9a42, 0x9a40, 0x9a43, 0x003f,
+    0x9a3e, 0x9a55, 0x9a4d, 0x9a5b, 0x9a57, 0x9a5f, 0x9a62, 0x9a65,
+    0x9a64, 0x9a69, 0x9a6b, 0x9a6a, 0x9aad, 0x9ab0, 0x9abc, 0x9ac0,
+    0x9acf, 0x9ad1, 0x9ad3, 0x9ad4, 0x9ade, 0x9adf, 0x9ae2, 0x9ae3,
+    0x9ae6, 0x9aef, 0x9aeb, 0x9aee, 0x9af4, 0x9af1, 0x9af7, 0x9afb,
+    0x9b06, 0x9b18, 0x9b1a, 0x9b1f, 0x9b22, 0x9b23, 0x9b25, 0x9b27,
+    0x9b28, 0x9b29, 0x9b2a, 0x9b2e, 0x9b2f, 0x9b32, 0x9b44, 0x9b43,
+    0x9b4f, 0x9b4d, 0x9b4e, 0x9b51, 0x9b58, 0x9b74, 0x9b93, 0x9b83,
+    0x9b91, 0x9b96, 0x9b97, 0x9b9f, 0x9ba0, 0x9ba8, 0x9bb4, 0x9bc0,
+    0x9bca, 0x9bb9, 0x9bc6, 0x9bcf, 0x9bd1, 0x9bd2, 0x9be3, 0x9be2,
+    0x9be4, 0x9bd4, 0x9be1, 0x9c3a, 0x9bf2, 0x9bf1, 0x9bf0, 0x9c15,
+    0x9c14, 0x9c09, 0x9c13, 0x9c0c, 0x9c06, 0x9c08, 0x9c12, 0x9c0a,
+    0x9c04, 0x9c2e, 0x9c1b, 0x9c25, 0x9c24, 0x9c21, 0x9c30, 0x9c47,
+    0x9c32, 0x9c46, 0x9c3e, 0x9c5a, 0x9c60, 0x9c67, 0x9c76, 0x9c78,
+    0x9ce7, 0x9cec, 0x9cf0, 0x9d09, 0x9d08, 0x9ceb, 0x9d03, 0x9d06,
+    0x9d2a, 0x9d26, 0x9daf, 0x9d23, 0x9d1f, 0x9d44, 0x9d15, 0x9d12,
+    0x9d41, 0x9d3f, 0x9d3e, 0x9d46, 0x9d48, 0x003f, 0x003f, 0x003f,
+    /* lead byte ea */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9d5d, 0x9d5e, 0x9d64, 0x9d51, 0x9d50, 0x9d59, 0x9d72, 0x9d89,
+    0x9d87, 0x9dab, 0x9d6f, 0x9d7a, 0x9d9a, 0x9da4, 0x9da9, 0x9db2,
+    0x9dc4, 0x9dc1, 0x9dbb, 0x9db8, 0x9dba, 0x9dc6, 0x9dcf, 0x9dc2,
+    0x9dd9, 0x9dd3, 0x9df8, 0x9de6, 0x9ded, 0x9def, 0x9dfd, 0x9e1a,
+    0x9e1b, 0x9e1e, 0x9e75, 0x9e79, 0x9e7d, 0x9e81, 0x9e88, 0x9e8b,
+    0x9e8c, 0x9e92, 0x9e95, 0x9e91, 0x9e9d, 0x9ea5, 0x9ea9, 0x9eb8,
+    0x9eaa, 0x9ead, 0x9761, 0x9ecc, 0x9ece, 0x9ecf, 0x9ed0, 0x9ed4,
+    0x9edc, 0x9ede, 0x9edd, 0x9ee0, 0x9ee5, 0x9ee8, 0x9eef, 0x003f,
+    0x9ef4, 0x9ef6, 0x9ef7, 0x9ef9, 0x9efb, 0x9efc, 0x9efd, 0x9f07,
+    0x9f08, 0x76b7, 0x9f15, 0x9f21, 0x9f2c, 0x9f3e, 0x9f4a, 0x9f52,
+    0x9f54, 0x9f63, 0x9f5f, 0x9f60, 0x9f61, 0x9f66, 0x9f67, 0x9f6c,
+    0x9f6a, 0x9f77, 0x9f72, 0x9f76, 0x9f95, 0x9f9c, 0x9fa0, 0x582f,
+    0x69c7, 0x9059, 0x7464, 0x51dc, 0x7199, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte ed */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7e8a, 0x891c, 0x9348, 0x9288, 0x84dc, 0x4fc9, 0x70bb, 0x6631,
+    0x68c8, 0x92f9, 0x66fb, 0x5f45, 0x4e28, 0x4ee1, 0x4efc, 0x4f00,
+    0x4f03, 0x4f39, 0x4f56, 0x4f92, 0x4f8a, 0x4f9a, 0x4f94, 0x4fcd,
+    0x5040, 0x5022, 0x4fff, 0x501e, 0x5046, 0x5070, 0x5042, 0x5094,
+    0x50f4, 0x50d8, 0x514a, 0x5164, 0x519d, 0x51be, 0x51ec, 0x5215,
+    0x529c, 0x52a6, 0x52c0, 0x52db, 0x5300, 0x5307, 0x5324, 0x5372,
+    0x5393, 0x53b2, 0x53dd, 0xfa0e, 0x549c, 0x548a, 0x54a9, 0x54ff,
+    0x5586, 0x5759, 0x5765, 0x57ac, 0x57c8, 0x57c7, 0xfa0f, 0x003f,
+    0xfa10, 0x589e, 0x58b2, 0x590b, 0x5953, 0x595b, 0x595d, 0x5963,
+    0x59a4, 0x59ba, 0x5b56, 0x5bc0, 0x752f, 0x5bd8, 0x5bec, 0x5c1e,
+    0x5ca6, 0x5cba, 0x5cf5, 0x5d27, 0x5d53, 0xfa11, 0x5d42, 0x5d6d,
+    0x5db8, 0x5db9, 0x5dd0, 0x5f21, 0x5f34, 0x5f67, 0x5fb7, 0x5fde,
+    0x605d, 0x6085, 0x608a, 0x60de, 0x60d5, 0x6120, 0x60f2, 0x6111,
+    0x6137, 0x6130, 0x6198, 0x6213, 0x62a6, 0x63f5, 0x6460, 0x649d,
+    0x64ce, 0x654e, 0x6600, 0x6615, 0x663b, 0x6609, 0x662e, 0x661e,
+    0x6624, 0x6665, 0x6657, 0x6659, 0xfa12, 0x6673, 0x6699, 0x66a0,
+    0x66b2, 0x66bf, 0x66fa, 0x670e, 0xf929, 0x6766, 0x67bb, 0x6852,
+    0x67c0, 0x6801, 0x6844, 0x68cf, 0xfa13, 0x6968, 0xfa14, 0x6998,
+    0x69e2, 0x6a30, 0x6a6b, 0x6a46, 0x6a73, 0x6a7e, 0x6ae2, 0x6ae4,
+    0x6bd6, 0x6c3f, 0x6c5c, 0x6c86, 0x6c6f, 0x6cda, 0x6d04, 0x6d87,
+    0x6d6f, 0x6d96, 0x6dac, 0x6dcf, 0x6df8, 0x6df2, 0x6dfc, 0x6e39,
+    0x6e5c, 0x6e27, 0x6e3c, 0x6ebf, 0x6f88, 0x6fb5, 0x6ff5, 0x7005,
+    0x7007, 0x7028, 0x7085, 0x70ab, 0x710f, 0x7104, 0x715c, 0x7146,
+    0x7147, 0xfa15, 0x71c1, 0x71fe, 0x72b1, 0x003f, 0x003f, 0x003f,
+    /* lead byte ee */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x72be, 0x7324, 0xfa16, 0x7377, 0x73bd, 0x73c9, 0x73d6, 0x73e3,
+    0x73d2, 0x7407, 0x73f5, 0x7426, 0x742a, 0x7429, 0x742e, 0x7462,
+    0x7489, 0x749f, 0x7501, 0x756f, 0x7682, 0x769c, 0x769e, 0x769b,
+    0x76a6, 0xfa17, 0x7746, 0x52af, 0x7821, 0x784e, 0x7864, 0x787a,
+    0x7930, 0xfa18, 0xfa19, 0xfa1a, 0x7994, 0xfa1b, 0x799b, 0x7ad1,
+    0x7ae7, 0xfa1c, 0x7aeb, 0x7b9e, 0xfa1d, 0x7d48, 0x7d5c, 0x7db7,
+    0x7da0, 0x7dd6, 0x7e52, 0x7f47, 0x7fa1, 0xfa1e, 0x8301, 0x8362,
+    0x837f, 0x83c7, 0x83f6, 0x8448, 0x84b4, 0x8553, 0x8559, 0x003f,
+    0x856b, 0xfa1f, 0x85b0, 0xfa20, 0xfa21, 0x8807, 0x88f5, 0x8a12,
+    0x8a37, 0x8a79, 0x8aa7, 0x8abe, 0x8adf, 0xfa22, 0x8af6, 0x8b53,
+    0x8b7f, 0x8cf0, 0x8cf4, 0x8d12, 0x8d76, 0xfa23, 0x8ecf, 0xfa24,
+    0xfa25, 0x9067, 0x90de, 0xfa26, 0x9115, 0x9127, 0x91da, 0x91d7,
+    0x91de, 0x91ed, 0x91ee, 0x91e4, 0x91e5, 0x9206, 0x9210, 0x920a,
+    0x923a, 0x9240, 0x923c, 0x924e, 0x9259, 0x9251, 0x9239, 0x9267,
+    0x92a7, 0x9277, 0x9278, 0x92e7, 0x92d7, 0x92d9, 0x92d0, 0xfa27,
+    0x92d5, 0x92e0, 0x92d3, 0x9325, 0x9321, 0x92fb, 0xfa28, 0x931e,
+    0x92ff, 0x931d, 0x9302, 0x9370, 0x9357, 0x93a4, 0x93c6, 0x93de,
+    0x93f8, 0x9431, 0x9445, 0x9448, 0x9592, 0xf9dc, 0xfa29, 0x969d,
+    0x96af, 0x9733, 0x973b, 0x9743, 0x974d, 0x974f, 0x9751, 0x9755,
+    0x9857, 0x9865, 0xfa2a, 0xfa2b, 0x9927, 0xfa2c, 0x999e, 0x9a4e,
+    0x9ad9, 0x9adc, 0x9b75, 0x9b72, 0x9b8f, 0x9bb1, 0x9bbb, 0x9c00,
+    0x9d70, 0x9d6b, 0xfa2d, 0x9e19, 0x9ed1, 0x003f, 0x003f, 0x2170,
+    0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178,
+    0x2179, 0xffe2, 0xffe4, 0xff07, 0xff02, 0x003f, 0x003f, 0x003f,
+    /* lead byte fa */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177,
+    0x2178, 0x2179, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165,
+    0x2166, 0x2167, 0x2168, 0x2169, 0xffe2, 0xffe4, 0xff07, 0xff02,
+    0x3231, 0x2116, 0x2121, 0x2235, 0x7e8a, 0x891c, 0x9348, 0x9288,
+    0x84dc, 0x4fc9, 0x70bb, 0x6631, 0x68c8, 0x92f9, 0x66fb, 0x5f45,
+    0x4e28, 0x4ee1, 0x4efc, 0x4f00, 0x4f03, 0x4f39, 0x4f56, 0x4f92,
+    0x4f8a, 0x4f9a, 0x4f94, 0x4fcd, 0x5040, 0x5022, 0x4fff, 0x501e,
+    0x5046, 0x5070, 0x5042, 0x5094, 0x50f4, 0x50d8, 0x514a, 0x003f,
+    0x5164, 0x519d, 0x51be, 0x51ec, 0x5215, 0x529c, 0x52a6, 0x52c0,
+    0x52db, 0x5300, 0x5307, 0x5324, 0x5372, 0x5393, 0x53b2, 0x53dd,
+    0xfa0e, 0x549c, 0x548a, 0x54a9, 0x54ff, 0x5586, 0x5759, 0x5765,
+    0x57ac, 0x57c8, 0x57c7, 0xfa0f, 0xfa10, 0x589e, 0x58b2, 0x590b,
+    0x5953, 0x595b, 0x595d, 0x5963, 0x59a4, 0x59ba, 0x5b56, 0x5bc0,
+    0x752f, 0x5bd8, 0x5bec, 0x5c1e, 0x5ca6, 0x5cba, 0x5cf5, 0x5d27,
+    0x5d53, 0xfa11, 0x5d42, 0x5d6d, 0x5db8, 0x5db9, 0x5dd0, 0x5f21,
+    0x5f34, 0x5f67, 0x5fb7, 0x5fde, 0x605d, 0x6085, 0x608a, 0x60de,
+    0x60d5, 0x6120, 0x60f2, 0x6111, 0x6137, 0x6130, 0x6198, 0x6213,
+    0x62a6, 0x63f5, 0x6460, 0x649d, 0x64ce, 0x654e, 0x6600, 0x6615,
+    0x663b, 0x6609, 0x662e, 0x661e, 0x6624, 0x6665, 0x6657, 0x6659,
+    0xfa12, 0x6673, 0x6699, 0x66a0, 0x66b2, 0x66bf, 0x66fa, 0x670e,
+    0xf929, 0x6766, 0x67bb, 0x6852, 0x67c0, 0x6801, 0x6844, 0x68cf,
+    0xfa13, 0x6968, 0xfa14, 0x6998, 0x69e2, 0x6a30, 0x6a6b, 0x6a46,
+    0x6a73, 0x6a7e, 0x6ae2, 0x6ae4, 0x6bd6, 0x6c3f, 0x6c5c, 0x6c86,
+    0x6c6f, 0x6cda, 0x6d04, 0x6d87, 0x6d6f, 0x003f, 0x003f, 0x003f,
+    /* lead byte fb */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6d96, 0x6dac, 0x6dcf, 0x6df8, 0x6df2, 0x6dfc, 0x6e39, 0x6e5c,
+    0x6e27, 0x6e3c, 0x6ebf, 0x6f88, 0x6fb5, 0x6ff5, 0x7005, 0x7007,
+    0x7028, 0x7085, 0x70ab, 0x710f, 0x7104, 0x715c, 0x7146, 0x7147,
+    0xfa15, 0x71c1, 0x71fe, 0x72b1, 0x72be, 0x7324, 0xfa16, 0x7377,
+    0x73bd, 0x73c9, 0x73d6, 0x73e3, 0x73d2, 0x7407, 0x73f5, 0x7426,
+    0x742a, 0x7429, 0x742e, 0x7462, 0x7489, 0x749f, 0x7501, 0x756f,
+    0x7682, 0x769c, 0x769e, 0x769b, 0x76a6, 0xfa17, 0x7746, 0x52af,
+    0x7821, 0x784e, 0x7864, 0x787a, 0x7930, 0xfa18, 0xfa19, 0x003f,
+    0xfa1a, 0x7994, 0xfa1b, 0x799b, 0x7ad1, 0x7ae7, 0xfa1c, 0x7aeb,
+    0x7b9e, 0xfa1d, 0x7d48, 0x7d5c, 0x7db7, 0x7da0, 0x7dd6, 0x7e52,
+    0x7f47, 0x7fa1, 0xfa1e, 0x8301, 0x8362, 0x837f, 0x83c7, 0x83f6,
+    0x8448, 0x84b4, 0x8553, 0x8559, 0x856b, 0xfa1f, 0x85b0, 0xfa20,
+    0xfa21, 0x8807, 0x88f5, 0x8a12, 0x8a37, 0x8a79, 0x8aa7, 0x8abe,
+    0x8adf, 0xfa22, 0x8af6, 0x8b53, 0x8b7f, 0x8cf0, 0x8cf4, 0x8d12,
+    0x8d76, 0xfa23, 0x8ecf, 0xfa24, 0xfa25, 0x9067, 0x90de, 0xfa26,
+    0x9115, 0x9127, 0x91da, 0x91d7, 0x91de, 0x91ed, 0x91ee, 0x91e4,
+    0x91e5, 0x9206, 0x9210, 0x920a, 0x923a, 0x9240, 0x923c, 0x924e,
+    0x9259, 0x9251, 0x9239, 0x9267, 0x92a7, 0x9277, 0x9278, 0x92e7,
+    0x92d7, 0x92d9, 0x92d0, 0xfa27, 0x92d5, 0x92e0, 0x92d3, 0x9325,
+    0x9321, 0x92fb, 0xfa28, 0x931e, 0x92ff, 0x931d, 0x9302, 0x9370,
+    0x9357, 0x93a4, 0x93c6, 0x93de, 0x93f8, 0x9431, 0x9445, 0x9448,
+    0x9592, 0xf9dc, 0xfa29, 0x969d, 0x96af, 0x9733, 0x973b, 0x9743,
+    0x974d, 0x974f, 0x9751, 0x9755, 0x9857, 0x9865, 0xfa2a, 0xfa2b,
+    0x9927, 0xfa2c, 0x999e, 0x9a4e, 0x9ad9, 0x003f, 0x003f, 0x003f,
+    /* lead byte fc */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9adc, 0x9b75, 0x9b72, 0x9b8f, 0x9bb1, 0x9bbb, 0x9c00, 0x9d70,
+    0x9d6b, 0xfa2d, 0x9e19, 0x9ed1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f
+};
+
+static const unsigned char cp2uni_leadbytes[256] =
+{
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x02, 0x03, 0x04, 0x05, 0x01, 0x01, 0x06,
+    0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e,
+    0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
+    0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26,
+    0x27, 0x28, 0x29, 0x01, 0x01, 0x2a, 0x2b, 0x01,
+    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+    0x01, 0x01, 0x2c, 0x2d, 0x2e, 0x00, 0x00, 0x00
+};
+
+static const unsigned short uni2cp_low[27904] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0080, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0020, 0x0021, 0x0063, 0x004c, 0x003f, 0x005c, 0x007c, 0x8198,
+    0x814e, 0x0063, 0x0061, 0x8173, 0x003f, 0x002d, 0x0072, 0x815c,
+    0x818b, 0x817d, 0x0032, 0x0033, 0x814c, 0x83ca, 0x81f7, 0x003f,
+    0x002c, 0x0031, 0x006f, 0x8174, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0043,
+    0x0045, 0x0045, 0x0045, 0x0045, 0x0049, 0x0049, 0x0049, 0x0049,
+    0x0044, 0x004e, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x817e,
+    0x004f, 0x0055, 0x0055, 0x0055, 0x0055, 0x0059, 0x003f, 0x83c0,
+    0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0063,
+    0x0065, 0x0065, 0x0065, 0x0065, 0x0069, 0x0069, 0x0069, 0x0069,
+    0x0064, 0x006e, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x8180,
+    0x006f, 0x0075, 0x0075, 0x0075, 0x0075, 0x0079, 0x00fe, 0x0079,
+    /* 0x0100 .. 0x01ff */
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0043, 0x0063,
+    0x0043, 0x0063, 0x0043, 0x0063, 0x0043, 0x0063, 0x0044, 0x0064,
+    0x0044, 0x0064, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065,
+    0x0045, 0x0065, 0x0045, 0x0065, 0x0047, 0x0067, 0x0047, 0x0067,
+    0x0047, 0x0067, 0x0047, 0x0067, 0x0048, 0x0068, 0x0048, 0x0068,
+    0x0049, 0x0069, 0x0049, 0x0069, 0x0049, 0x0069, 0x0049, 0x0069,
+    0x0049, 0x0069, 0x003f, 0x003f, 0x004a, 0x006a, 0x004b, 0x006b,
+    0x003f, 0x004c, 0x006c, 0x004c, 0x006c, 0x004c, 0x006c, 0x003f,
+    0x003f, 0x004c, 0x006c, 0x004e, 0x006e, 0x004e, 0x006e, 0x004e,
+    0x006e, 0x003f, 0x003f, 0x003f, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x004f, 0x006f, 0x0052, 0x0072, 0x0052, 0x0072,
+    0x0052, 0x0072, 0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073,
+    0x0053, 0x0073, 0x0054, 0x0074, 0x0054, 0x0074, 0x0054, 0x0074,
+    0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0055, 0x0075, 0x0055, 0x0075, 0x0057, 0x0077, 0x0059, 0x0079,
+    0x0059, 0x005a, 0x007a, 0x005a, 0x007a, 0x005a, 0x007a, 0x0073,
+    0x0062, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0044, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0045, 0x0046, 0x0066, 0x003f, 0x003f, 0x003f, 0x003f, 0x0049,
+    0x003f, 0x003f, 0x006c, 0x003f, 0x003f, 0x003f, 0x003f, 0x004f,
+    0x004f, 0x006f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x0074, 0x003f, 0x003f, 0x0054, 0x0055,
+    0x0075, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x007a, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x84a0, 0x003f, 0x003f, 0x0021, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0041, 0x0061, 0x0049,
+    0x0069, 0x004f, 0x006f, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055,
+    0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x003f, 0x0041, 0x0061,
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0047, 0x0067, 0x0047, 0x0067,
+    0x004b, 0x006b, 0x004f, 0x006f, 0x004f, 0x006f, 0x003f, 0x003f,
+    0x006a, 0x003f, 0x003f, 0x003f, 0x0047, 0x0067, 0x003f, 0x003f,
+    0x004e, 0x006e, 0x0041, 0x0061, 0x0041, 0x0061, 0x004f, 0x006f,
+    /* 0x0200 .. 0x02ff */
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0045, 0x0065, 0x0045, 0x0065,
+    0x0049, 0x0069, 0x0049, 0x0069, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x0052, 0x0072, 0x0052, 0x0072, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0053, 0x0073, 0x0054, 0x0074, 0x003f, 0x003f, 0x0048, 0x0068,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0041, 0x0061,
+    0x0045, 0x0065, 0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x0059, 0x0079, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0067, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0068, 0x003f, 0x006a, 0x0072, 0x003f, 0x003f, 0x003f, 0x0077,
+    0x0079, 0x814c, 0x818d, 0x8165, 0x8166, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x005e, 0x003f, 0x005e, 0x0076,
+    0x0027, 0x815c, 0x814c, 0x0060, 0x003f, 0x005f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x818b, 0x003f, 0x007e, 0x818d, 0x003f, 0x003f,
+    0x003f, 0x006c, 0x0073, 0x0078, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x0300 .. 0x03ff */
+    0x0060, 0x814c, 0x005e, 0x007e, 0x815c, 0x815c, 0x003f, 0x003f,
+    0x814e, 0x003f, 0x818b, 0x818d, 0x0076, 0x003f, 0x0022, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x002c,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x005f, 0x005f, 0x005f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0060, 0x814c, 0x003f, 0x003f, 0x814e, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x814c, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003b, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x814c, 0x814e, 0x839f, 0x003f,
+    0x83a3, 0x83a5, 0x83a7, 0x003f, 0x83ad, 0x003f, 0x83b2, 0x83b6,
+    0x83c7, 0x839f, 0x83a0, 0x83a1, 0x83a2, 0x83a3, 0x83a4, 0x83a5,
+    0x83a6, 0x83a7, 0x83a8, 0x83a9, 0x83aa, 0x83ab, 0x83ac, 0x83ad,
+    0x83ae, 0x83af, 0x003f, 0x83b0, 0x83b1, 0x83b2, 0x83b3, 0x83b4,
+    0x83b5, 0x83b6, 0x83a7, 0x83b2, 0x83bf, 0x83c3, 0x83c5, 0x83c7,
+    0x83d2, 0x83bf, 0x83c0, 0x83c1, 0x83c2, 0x83c3, 0x83c4, 0x83c5,
+    0x83c6, 0x83c7, 0x83c8, 0x83c9, 0x83ca, 0x83cb, 0x83cc, 0x83cd,
+    0x83ce, 0x83cf, 0x003f, 0x83d0, 0x83d1, 0x83d2, 0x83d3, 0x83d4,
+    0x83d5, 0x83d6, 0x83c7, 0x83d2, 0x83cd, 0x83d2, 0x83d6, 0x003f,
+    0x83c0, 0x83c6, 0x83b2, 0x83b2, 0x83b2, 0x83d3, 0x83ce, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x83c8, 0x83cf, 0x003f, 0x003f, 0x83a6, 0x83c3, 0x003f, 0x003f,
+    0x003f, 0x83b0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x0400 .. 0x04ff */
+    0x8445, 0x8446, 0x003f, 0x8443, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x844b, 0x8449, 0x8454, 0x003f,
+    0x8440, 0x8441, 0x8442, 0x8443, 0x8444, 0x8445, 0x8447, 0x8448,
+    0x8449, 0x844a, 0x844b, 0x844c, 0x844d, 0x844e, 0x844f, 0x8450,
+    0x8451, 0x8452, 0x8453, 0x8454, 0x8455, 0x8456, 0x8457, 0x8458,
+    0x8459, 0x845a, 0x845b, 0x845c, 0x845d, 0x845e, 0x845f, 0x8460,
+    0x8470, 0x8471, 0x8472, 0x8473, 0x8474, 0x8475, 0x8477, 0x8478,
+    0x8479, 0x847a, 0x847b, 0x847c, 0x847d, 0x847e, 0x8480, 0x8481,
+    0x8482, 0x8483, 0x8484, 0x8485, 0x8486, 0x8487, 0x8488, 0x8489,
+    0x848a, 0x848b, 0x848c, 0x848d, 0x848e, 0x848f, 0x8490, 0x8491,
+    0x8475, 0x8476, 0x003f, 0x8473, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x847b, 0x8479, 0x8485, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8447, 0x8477, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8440, 0x8470, 0x8440, 0x8470, 0x003f, 0x003f, 0x8445, 0x8475,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8447, 0x8477, 0x8448, 0x8478,
+    0x003f, 0x003f, 0x8449, 0x8479, 0x8449, 0x8479, 0x844f, 0x8480,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x845e, 0x848f, 0x8454, 0x8485,
+    0x8454, 0x8485, 0x8454, 0x8485, 0x8458, 0x8489, 0x003f, 0x003f,
+    0x845c, 0x848d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x1d00 .. 0x1dff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x0041, 0x0041, 0x0042, 0x003f,
+    0x0044, 0x0045, 0x003f, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b,
+    0x004c, 0x004d, 0x004e, 0x003f, 0x004f, 0x003f, 0x0050, 0x0052,
+    0x0054, 0x0055, 0x0057, 0x0061, 0x003f, 0x003f, 0x003f, 0x0062,
+    0x0064, 0x0065, 0x003f, 0x003f, 0x003f, 0x0067, 0x003f, 0x006b,
+    0x006d, 0x003f, 0x006f, 0x003f, 0x003f, 0x003f, 0x0070, 0x0074,
+    0x0075, 0x003f, 0x003f, 0x0076, 0x003f, 0x83c0, 0x83c1, 0x83c2,
+    0x83d3, 0x83d4, 0x0069, 0x0072, 0x0075, 0x0076, 0x83c0, 0x83c1,
+    0x83cf, 0x83d3, 0x83d4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x847e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x0063, 0x003f, 0x0064, 0x003f,
+    0x0066, 0x003f, 0x0067, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0074, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x007a, 0x003f, 0x003f, 0x003f, 0x83c6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x1e00 .. 0x1eff */
+    0x0041, 0x0061, 0x0042, 0x0062, 0x0042, 0x0062, 0x0042, 0x0062,
+    0x0043, 0x0063, 0x0044, 0x0064, 0x0044, 0x0064, 0x0044, 0x0064,
+    0x0044, 0x0064, 0x0044, 0x0064, 0x0045, 0x0065, 0x0045, 0x0065,
+    0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, 0x0046, 0x0066,
+    0x0047, 0x0067, 0x0048, 0x0068, 0x0048, 0x0068, 0x0048, 0x0068,
+    0x0048, 0x0068, 0x0048, 0x0068, 0x0049, 0x0069, 0x0049, 0x0069,
+    0x004b, 0x006b, 0x004b, 0x006b, 0x004b, 0x006b, 0x004c, 0x006c,
+    0x004c, 0x006c, 0x004c, 0x006c, 0x004c, 0x006c, 0x004d, 0x006d,
+    0x004d, 0x006d, 0x004d, 0x006d, 0x004e, 0x006e, 0x004e, 0x006e,
+    0x004e, 0x006e, 0x004e, 0x006e, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x004f, 0x006f, 0x0050, 0x0070, 0x0050, 0x0070,
+    0x0052, 0x0072, 0x0052, 0x0072, 0x0052, 0x0072, 0x0052, 0x0072,
+    0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073,
+    0x0053, 0x0073, 0x0054, 0x0074, 0x0054, 0x0074, 0x0054, 0x0074,
+    0x0054, 0x0074, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0055, 0x0075, 0x0055, 0x0075, 0x0056, 0x0076, 0x0056, 0x0076,
+    0x0057, 0x0077, 0x0057, 0x0077, 0x0057, 0x0077, 0x0057, 0x0077,
+    0x0057, 0x0077, 0x0058, 0x0078, 0x0058, 0x0078, 0x0059, 0x0079,
+    0x005a, 0x007a, 0x005a, 0x007a, 0x005a, 0x007a, 0x0068, 0x0074,
+    0x0077, 0x0079, 0x003f, 0x0073, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061,
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061,
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061,
+    0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065,
+    0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065,
+    0x0049, 0x0069, 0x0049, 0x0069, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x004f, 0x006f, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0055, 0x0075, 0x0059, 0x0079, 0x0059, 0x0079, 0x0059, 0x0079,
+    0x0059, 0x0079, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x1f00 .. 0x1fff */
+    0x83bf, 0x83bf, 0x83bf, 0x83bf, 0x83bf, 0x83bf, 0x83bf, 0x83bf,
+    0x839f, 0x839f, 0x839f, 0x839f, 0x839f, 0x839f, 0x839f, 0x839f,
+    0x83c3, 0x83c3, 0x83c3, 0x83c3, 0x83c3, 0x83c3, 0x003f, 0x003f,
+    0x83a3, 0x83a3, 0x83a3, 0x83a3, 0x83a3, 0x83a3, 0x003f, 0x003f,
+    0x83c5, 0x83c5, 0x83c5, 0x83c5, 0x83c5, 0x83c5, 0x83c5, 0x83c5,
+    0x83a5, 0x83a5, 0x83a5, 0x83a5, 0x83a5, 0x83a5, 0x83a5, 0x83a5,
+    0x83c7, 0x83c7, 0x83c7, 0x83c7, 0x83c7, 0x83c7, 0x83c7, 0x83c7,
+    0x83a7, 0x83a7, 0x83a7, 0x83a7, 0x83a7, 0x83a7, 0x83a7, 0x83a7,
+    0x83cd, 0x83cd, 0x83cd, 0x83cd, 0x83cd, 0x83cd, 0x003f, 0x003f,
+    0x83ad, 0x83ad, 0x83ad, 0x83ad, 0x83ad, 0x83ad, 0x003f, 0x003f,
+    0x83d2, 0x83d2, 0x83d2, 0x83d2, 0x83d2, 0x83d2, 0x83d2, 0x83d2,
+    0x003f, 0x83b2, 0x003f, 0x83b2, 0x003f, 0x83b2, 0x003f, 0x83b2,
+    0x83d6, 0x83d6, 0x83d6, 0x83d6, 0x83d6, 0x83d6, 0x83d6, 0x83d6,
+    0x83b6, 0x83b6, 0x83b6, 0x83b6, 0x83b6, 0x83b6, 0x83b6, 0x83b6,
+    0x83bf, 0x83bf, 0x83c3, 0x83c3, 0x83c5, 0x83c5, 0x83c7, 0x83c7,
+    0x83cd, 0x83cd, 0x83d2, 0x83d2, 0x83d6, 0x83d6, 0x003f, 0x003f,
+    0x83bf, 0x83bf, 0x83bf, 0x83bf, 0x83bf, 0x83bf, 0x83bf, 0x83bf,
+    0x839f, 0x839f, 0x839f, 0x839f, 0x839f, 0x839f, 0x839f, 0x839f,
+    0x83c5, 0x83c5, 0x83c5, 0x83c5, 0x83c5, 0x83c5, 0x83c5, 0x83c5,
+    0x83a5, 0x83a5, 0x83a5, 0x83a5, 0x83a5, 0x83a5, 0x83a5, 0x83a5,
+    0x83d6, 0x83d6, 0x83d6, 0x83d6, 0x83d6, 0x83d6, 0x83d6, 0x83d6,
+    0x83b6, 0x83b6, 0x83b6, 0x83b6, 0x83b6, 0x83b6, 0x83b6, 0x83b6,
+    0x83bf, 0x83bf, 0x83bf, 0x83bf, 0x83bf, 0x003f, 0x83bf, 0x83bf,
+    0x839f, 0x839f, 0x839f, 0x839f, 0x839f, 0x003f, 0x83c7, 0x003f,
+    0x003f, 0x814e, 0x83c5, 0x83c5, 0x83c5, 0x003f, 0x83c5, 0x83c5,
+    0x83a3, 0x83a3, 0x83a5, 0x83a5, 0x83a5, 0x003f, 0x003f, 0x003f,
+    0x83c7, 0x83c7, 0x83c7, 0x83c7, 0x003f, 0x003f, 0x83c7, 0x83c7,
+    0x83a7, 0x83a7, 0x83a7, 0x83a7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x83d2, 0x83d2, 0x83d2, 0x83d2, 0x83cf, 0x83cf, 0x83d2, 0x83d2,
+    0x83b2, 0x83b2, 0x83b2, 0x83b2, 0x83af, 0x814e, 0x814e, 0x0060,
+    0x003f, 0x003f, 0x83d6, 0x83d6, 0x83d6, 0x003f, 0x83d6, 0x83d6,
+    0x83ad, 0x83ad, 0x83b6, 0x83b6, 0x83b6, 0x814c, 0x003f, 0x003f,
+    /* 0x2000 .. 0x20ff */
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+    0x0020, 0x0020, 0x0020, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x815d, 0x815d, 0x003f, 0x815c, 0x815c, 0x815c, 0x003f, 0x005f,
+    0x8165, 0x8166, 0x002c, 0x8165, 0x8167, 0x8168, 0x8781, 0x003f,
+    0x81f5, 0x81f6, 0x003f, 0x003f, 0x002e, 0x8164, 0x8163, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0020,
+    0x81f1, 0x003f, 0x818c, 0x818d, 0x003f, 0x8165, 0x003f, 0x003f,
+    0x003f, 0x8171, 0x8172, 0x81a6, 0x0021, 0x003f, 0x815c, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x002f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0020,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x818b, 0x0069, 0x003f, 0x003f, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x002b, 0x815d, 0x003d, 0x0028, 0x0029, 0x006e,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x002b, 0x815d, 0x003d, 0x0028, 0x0029, 0x003f,
+    0x0061, 0x0065, 0x006f, 0x0078, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0063, 0x003f, 0x003f, 0x004c, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2100 .. 0x21ff */
+    0x003f, 0x003f, 0x0043, 0x818e, 0x003f, 0x003f, 0x003f, 0x0045,
+    0x003f, 0x003f, 0x0067, 0x0048, 0x0048, 0x0048, 0x0068, 0x0068,
+    0x0049, 0x0049, 0x004c, 0x006c, 0x003f, 0x004e, 0x8782, 0x003f,
+    0x0050, 0x0050, 0x0051, 0x0052, 0x0052, 0x0052, 0x003f, 0x003f,
+    0x003f, 0x8784, 0x003f, 0x003f, 0x005a, 0x003f, 0x83b6, 0x003f,
+    0x005a, 0x003f, 0x004b, 0x81f0, 0x0042, 0x0043, 0x0065, 0x0065,
+    0x0045, 0x0046, 0x003f, 0x004d, 0x006f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0069, 0x003f, 0x003f, 0x83ce, 0x83c1, 0x83a1, 0x83ae,
+    0x8794, 0x003f, 0x003f, 0x003f, 0x003f, 0x0044, 0x0064, 0x0065,
+    0x0069, 0x006a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8754, 0x8755, 0x8756, 0x8757, 0x8758, 0x8759, 0x875a, 0x875b,
+    0x875c, 0x875d, 0x003f, 0x003f, 0x004c, 0x0043, 0x0044, 0x004d,
+    0xeeef, 0xeef0, 0xeef1, 0xeef2, 0xeef3, 0xeef4, 0xeef5, 0xeef6,
+    0xeef7, 0xeef8, 0x003f, 0x003f, 0x006c, 0x0063, 0x0064, 0x006d,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x81a9, 0x81aa, 0x81a8, 0x81ab, 0x002d, 0x007c, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x81a9, 0x81a8, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x002d, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x81cc, 0x81cb,
+    0x003f, 0x003f, 0x81cb, 0x003f, 0x81cc, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2200 .. 0x22ff */
+    0x81cd, 0x003f, 0x81dd, 0x81ce, 0x81ce, 0x004f, 0x003f, 0x81de,
+    0x81b8, 0x81b8, 0x003f, 0x81b9, 0x81b9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8794, 0x815d, 0x817d, 0x003f, 0x002f, 0x005c, 0x002a,
+    0x818b, 0x003f, 0x81e3, 0x003f, 0x003f, 0x81e5, 0x8187, 0x8798,
+    0x81da, 0x003f, 0x003f, 0x007c, 0x007c, 0x8161, 0x8161, 0x81c8,
+    0x81c9, 0x81bf, 0x81be, 0x81e7, 0x81e8, 0x003f, 0x8793, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8188, 0x81e6, 0x003a, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x007e, 0x81e4, 0x003f, 0x003f,
+    0x003f, 0x007e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x007e, 0x007e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x81e0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8182, 0x81df, 0x81df, 0x81df, 0x003f, 0x003f, 0x8185, 0x8186,
+    0x003f, 0x003f, 0x81e1, 0x81e2, 0x003f, 0x003f, 0x003c, 0x003e,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x81bc, 0x81bd, 0x81bc, 0x81bd, 0x81ba, 0x81bb,
+    0x81ba, 0x81bb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x81db, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8799,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2300 .. 0x23ff */
+    0x003f, 0x003f, 0x003f, 0x005e, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x81dc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8171, 0x8172, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2400 .. 0x24ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8740, 0x8741, 0x8742, 0x8743, 0x8744, 0x8745, 0x8746, 0x8747,
+    0x8748, 0x8749, 0x874a, 0x874b, 0x874c, 0x874d, 0x874e, 0x874f,
+    0x8750, 0x8751, 0x8752, 0x8753, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0041, 0x0042,
+    0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a,
+    0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052,
+    0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a,
+    0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068,
+    0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+    0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+    0x0079, 0x007a, 0x0030, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2500 .. 0x25ff */
+    0x849f, 0x84aa, 0x84a0, 0x84ab, 0x002d, 0x002d, 0x007c, 0x007c,
+    0x002d, 0x002d, 0x007c, 0x007c, 0x84a1, 0x84a1, 0x84a1, 0x84ac,
+    0x84a2, 0x84a2, 0x84a2, 0x84ad, 0x84a4, 0x84a4, 0x84a4, 0x84af,
+    0x84a3, 0x84a3, 0x84a3, 0x84ae, 0x84a5, 0x84ba, 0x84a5, 0x84a5,
+    0x84b5, 0x84a5, 0x84a5, 0x84b0, 0x84a7, 0x84bc, 0x84a7, 0x84a7,
+    0x84b7, 0x84a7, 0x84a7, 0x84b2, 0x84a6, 0x84a6, 0x84a6, 0x84b6,
+    0x84bb, 0x84a6, 0x84a6, 0x84b1, 0x84a8, 0x84a8, 0x84a8, 0x84b8,
+    0x84bd, 0x84a8, 0x84a8, 0x84b3, 0x84a9, 0x84a9, 0x84a9, 0x84b9,
+    0x84a9, 0x84a9, 0x84be, 0x84a9, 0x84a9, 0x84a9, 0x84a9, 0x84a9,
+    0x84a9, 0x84a9, 0x84a9, 0x84b4, 0x002d, 0x002d, 0x007c, 0x007c,
+    0x003d, 0x007c, 0x002b, 0x002b, 0x002b, 0x003f, 0x003f, 0x003f,
+    0x004c, 0x004c, 0x004c, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b,
+    0x002b, 0x002b, 0x002b, 0x002b, 0x0054, 0x0054, 0x0054, 0x002b,
+    0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x002f, 0x005c, 0x0058, 0x002d, 0x007c, 0x002d, 0x007c,
+    0x002d, 0x007c, 0x002d, 0x007c, 0x002d, 0x007c, 0x002d, 0x007c,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x81a1, 0x81a0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x81a3, 0x81a2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x81a5, 0x81a4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x819f, 0x819e,
+    0x003f, 0x003f, 0x003f, 0x819b, 0x003f, 0x003f, 0x819d, 0x819c,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x81fc,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2600 .. 0x26ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x819a, 0x8199, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x818a, 0x003f, 0x8189, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x81f4, 0x003f, 0x003f, 0x81f3, 0x003f, 0x81f2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2e00 .. 0x2eff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x95ea,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2f00 .. 0x2fff */
+    0x88ea, 0xed4c, 0x98a4, 0x98a6, 0x89b3, 0x98ab, 0x93f1, 0x98b3,
+    0x906c, 0x9958, 0x93fc, 0x94aa, 0x9963, 0x996b, 0x9971, 0x997b,
+    0x9981, 0x9381, 0x97cd, 0x99af, 0x99b6, 0x99b7, 0x99bc, 0x8f5c,
+    0x966d, 0x99c5, 0x99ca, 0x99d1, 0x9694, 0x8cfb, 0x9a98, 0x9379,
+    0x8e6d, 0x9ae7, 0x9ae8, 0x975b, 0x91e5, 0x8f97, 0x8e71, 0x9b7e,
+    0x90a1, 0x8fac, 0x9b97, 0x9b99, 0x9ba3, 0x8e52, 0x9bdd, 0x8d48,
+    0x8cc8, 0x8bd0, 0x8ab1, 0x9bf4, 0x9bf6, 0x9c4d, 0x9c4f, 0x9c54,
+    0x8b7c, 0x003f, 0x9c63, 0x9c65, 0x9053, 0x9cf7, 0x003f, 0x8ee8,
+    0x8e78, 0x9dbb, 0x95b6, 0x936c, 0x8bd2, 0x95fb, 0x9dd9, 0x93fa,
+    0x9e48, 0x8c8e, 0x96d8, 0x8c87, 0x8e7e, 0x9f65, 0x9f74, 0x9f78,
+    0x94e4, 0x96d1, 0x8e81, 0x9f83, 0x9085, 0x89ce, 0x92dc, 0x9583,
+    0xe0a9, 0xe0ab, 0x95d0, 0x89e5, 0x8b8d, 0x8ca2, 0x8cba, 0x8bca,
+    0x895a, 0x8aa2, 0x8ac3, 0x90b6, 0x9770, 0x9363, 0x9544, 0x003f,
+    0xe1a0, 0x9492, 0x94e7, 0x8e4d, 0x96da, 0x96b5, 0x96ee, 0x90ce,
+    0x8ea6, 0x003f, 0x89d1, 0x8c8a, 0x97a7, 0x927c, 0x95c4, 0x8e85,
+    0x8aca, 0xe3a4, 0x9772, 0x8948, 0x9856, 0x8ea7, 0xe3ce, 0x8ea8,
+    0xe3e4, 0x93f7, 0x9062, 0x8ea9, 0x8e8a, 0x8950, 0x90e3, 0x9143,
+    0x8f4d, 0x8daf, 0x9046, 0xe487, 0xe567, 0x928e, 0x8c8c, 0x8d73,
+    0x88df, 0xe647, 0x8ca9, 0x8a70, 0x8cbe, 0x924a, 0x93a4, 0xe6b3,
+    0xe6b6, 0x8a4c, 0x90d4, 0x9196, 0x91ab, 0x9067, 0x8ed4, 0x9068,
+    0x9243, 0x003f, 0x9757, 0x93d1, 0x94ce, 0x97a2, 0x8be0, 0x92b7,
+    0x96e5, 0x958c, 0xe8ae, 0xe8b0, 0x894a, 0xeed6, 0x94f1, 0x96ca,
+    0x8a76, 0xe8e8, 0xe8ea, 0x89b9, 0x95c5, 0x9597, 0x94f2, 0x9048,
+    0x8ef1, 0x8d81, 0x946e, 0x8d9c, 0x8d82, 0xe995, 0xe9a6, 0xe9ac,
+    0xe9ad, 0x8b53, 0x8b9b, 0x92b9, 0xea62, 0x8ead, 0xea6d, 0x9683,
+    0x003f, 0x8b6f, 0xeeec, 0xea83, 0xea86, 0x9343, 0x8cdb, 0x916c,
+    0x9540, 0xea8e, 0xea8f, 0x97b4, 0xea9d, 0xea9e, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x3000 .. 0x30ff */
+    0x8140, 0x8141, 0x8142, 0x8156, 0x003f, 0x8158, 0x8159, 0x815a,
+    0x8171, 0x8172, 0x8173, 0x8174, 0x8175, 0x8176, 0x8177, 0x8178,
+    0x8179, 0x817a, 0x81a7, 0x81ac, 0x816b, 0x816c, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x005b, 0x005d, 0x003f, 0x8780, 0x8168, 0x8781,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x81a7, 0x003f,
+    0x8f5c, 0x003f, 0x99bf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x829f, 0x82a0, 0x82a1, 0x82a2, 0x82a3, 0x82a4, 0x82a5,
+    0x82a6, 0x82a7, 0x82a8, 0x82a9, 0x82aa, 0x82ab, 0x82ac, 0x82ad,
+    0x82ae, 0x82af, 0x82b0, 0x82b1, 0x82b2, 0x82b3, 0x82b4, 0x82b5,
+    0x82b6, 0x82b7, 0x82b8, 0x82b9, 0x82ba, 0x82bb, 0x82bc, 0x82bd,
+    0x82be, 0x82bf, 0x82c0, 0x82c1, 0x82c2, 0x82c3, 0x82c4, 0x82c5,
+    0x82c6, 0x82c7, 0x82c8, 0x82c9, 0x82ca, 0x82cb, 0x82cc, 0x82cd,
+    0x82ce, 0x82cf, 0x82d0, 0x82d1, 0x82d2, 0x82d3, 0x82d4, 0x82d5,
+    0x82d6, 0x82d7, 0x82d8, 0x82d9, 0x82da, 0x82db, 0x82dc, 0x82dd,
+    0x82de, 0x82df, 0x82e0, 0x82e1, 0x82e2, 0x82e3, 0x82e4, 0x82e5,
+    0x82e6, 0x82e7, 0x82e8, 0x82e9, 0x82ea, 0x82eb, 0x82ec, 0x82ed,
+    0x82ee, 0x82ef, 0x82f0, 0x82f1, 0x82a4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x814a, 0x814b, 0x8154, 0x8155, 0x003f,
+    0x003f, 0x8340, 0x8341, 0x8342, 0x8343, 0x8344, 0x8345, 0x8346,
+    0x8347, 0x8348, 0x8349, 0x834a, 0x834b, 0x834c, 0x834d, 0x834e,
+    0x834f, 0x8350, 0x8351, 0x8352, 0x8353, 0x8354, 0x8355, 0x8356,
+    0x8357, 0x8358, 0x8359, 0x835a, 0x835b, 0x835c, 0x835d, 0x835e,
+    0x835f, 0x8360, 0x8361, 0x8362, 0x8363, 0x8364, 0x8365, 0x8366,
+    0x8367, 0x8368, 0x8369, 0x836a, 0x836b, 0x836c, 0x836d, 0x836e,
+    0x836f, 0x8370, 0x8371, 0x8372, 0x8373, 0x8374, 0x8375, 0x8376,
+    0x8377, 0x8378, 0x8379, 0x837a, 0x837b, 0x837c, 0x837d, 0x837e,
+    0x8380, 0x8381, 0x8382, 0x8383, 0x8384, 0x8385, 0x8386, 0x8387,
+    0x8388, 0x8389, 0x838a, 0x838b, 0x838c, 0x838d, 0x838e, 0x838f,
+    0x8390, 0x8391, 0x8392, 0x8393, 0x8394, 0x8395, 0x8396, 0x838f,
+    0x8390, 0x8391, 0x8392, 0x8145, 0x815b, 0x8152, 0x8153, 0x003f,
+    /* 0x3100 .. 0x31ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x88ea, 0x93f1, 0x8e4f, 0x8e6c, 0x8fe3, 0x9286,
+    0x89ba, 0x8d62, 0x89b3, 0x95b8, 0x929a, 0x9356, 0x926e, 0x906c,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x3200 .. 0x32ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x878a, 0x878b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x878c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x88ea, 0x93f1, 0x8e4f, 0x8e6c, 0x8cdc, 0x985a, 0x8eb5, 0x94aa,
+    0x8be3, 0x8f5c, 0x8c8e, 0x89ce, 0x9085, 0x96d8, 0x8be0, 0x9379,
+    0x93fa, 0x8a94, 0x974c, 0x8ed0, 0x96bc, 0x93c1, 0x8de0, 0x8f6a,
+    0x984a, 0x94e9, 0x926a, 0x8f97, 0x934b, 0x9744, 0x88f3, 0x928d,
+    0x8d80, 0x8b78, 0x8eca, 0x90b3, 0x8785, 0x8786, 0x8787, 0x8788,
+    0x8789, 0x88e3, 0x8f40, 0x8a77, 0x8ac4, 0x8ae9, 0x8e91, 0x8ba6,
+    0x96e9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8341, 0x8343, 0x8345, 0x8347, 0x8349, 0x834a, 0x834c, 0x834e,
+    0x8350, 0x8352, 0x8354, 0x8356, 0x8358, 0x835a, 0x835c, 0x835e,
+    0x8360, 0x8363, 0x8365, 0x8367, 0x8369, 0x836a, 0x836b, 0x836c,
+    0x836d, 0x836e, 0x8371, 0x8374, 0x8377, 0x837a, 0x837d, 0x837e,
+    0x8380, 0x8381, 0x8382, 0x8384, 0x8386, 0x8388, 0x8389, 0x838a,
+    0x838b, 0x838c, 0x838d, 0x838f, 0x8390, 0x8391, 0x8392, 0x003f,
+    /* 0x3300 .. 0x33ff */
+    0x003f, 0x003f, 0x003f, 0x8765, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8769, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8760, 0x003f, 0x003f, 0x003f,
+    0x8763, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x8761, 0x876b, 0x003f, 0x003f, 0x876a, 0x8764,
+    0x003f, 0x003f, 0x003f, 0x876c, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8766, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x876e, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x875f, 0x876d, 0x003f, 0x003f, 0x8762, 0x003f, 0x003f,
+    0x003f, 0x8767, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8768,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x877e, 0x878f, 0x878e, 0x878d, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8772, 0x8773,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x876f, 0x8770, 0x8771, 0x003f,
+    0x003f, 0x8775, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8774, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8783, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x4e00 .. 0x4eff */
+    0x88ea, 0x929a, 0x003f, 0x8eb5, 0x003f, 0x003f, 0x003f, 0x969c,
+    0x8fe4, 0x8e4f, 0x8fe3, 0x89ba, 0x003f, 0x9573, 0x975e, 0x003f,
+    0x98a0, 0x894e, 0x003f, 0x003f, 0x8a8e, 0x98a1, 0x90a2, 0x99c0,
+    0x8b75, 0x95b8, 0x003f, 0x003f, 0x003f, 0x003f, 0x8fe5, 0x003f,
+    0x003f, 0x97bc, 0x003f, 0x003f, 0x003f, 0x003f, 0x95c0, 0x003f,
+    0xed4c, 0x003f, 0x98a2, 0x003f, 0x003f, 0x9286, 0x003f, 0x003f,
+    0x003f, 0x98a3, 0x8bf8, 0x003f, 0x003f, 0x003f, 0x98a4, 0x003f,
+    0x8adb, 0x924f, 0x003f, 0x8ee5, 0x98a5, 0x003f, 0x003f, 0x98a6,
+    0x003f, 0x003f, 0x98a7, 0x9454, 0x003f, 0x8b76, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9456, 0x003f, 0x93e1, 0x8cc1, 0x9652,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe568, 0x98a8, 0x8fe6,
+    0x98a9, 0x89b3, 0x003f, 0x003f, 0x003f, 0x8be3, 0x8cee, 0x96e7,
+    0x003f, 0x003f, 0x9ba4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9790, 0x003f, 0x93fb, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8aa3, 0x003f,
+    0x8b54, 0x003f, 0x98aa, 0x003f, 0x003f, 0x98ab, 0x97b9, 0x003f,
+    0x975c, 0x9188, 0x98ad, 0x8e96, 0x93f1, 0x003f, 0x98b0, 0x003f,
+    0x003f, 0x895d, 0x8cdd, 0x003f, 0x8cdc, 0x88e4, 0x003f, 0x003f,
+    0x986a, 0x9869, 0x003f, 0x8db1, 0x889f, 0x003f, 0x98b1, 0x98b2,
+    0x98b3, 0x9653, 0x98b4, 0x003f, 0x8cf0, 0x88e5, 0x9692, 0x003f,
+    0x8b9c, 0x003f, 0x003f, 0x8b9d, 0x8b9e, 0x92e0, 0x97ba, 0x003f,
+    0x98b5, 0x003f, 0x003f, 0x98b6, 0x003f, 0x003f, 0x98b7, 0x003f,
+    0x003f, 0x003f, 0x906c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8f59, 0x906d, 0x98bc, 0x003f, 0x98ba, 0x003f, 0x98bb, 0x8b77,
+    0x003f, 0x003f, 0x8da1, 0x89ee, 0x003f, 0x98b9, 0x98b8, 0x95a7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8e65, 0x8e64, 0x91bc, 0x98bd,
+    0x9574, 0x90e5, 0x003f, 0x003f, 0x003f, 0x8157, 0x98be, 0x98c0,
+    0x003f, 0xed4d, 0x003f, 0x91e3, 0x97df, 0x88c8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x98bf, 0x89bc, 0x003f,
+    0x8bc2, 0x003f, 0x9287, 0x003f, 0x003f, 0x003f, 0x8c8f, 0x98c1,
+    0x003f, 0x003f, 0x003f, 0x9443, 0xed4e, 0x003f, 0x003f, 0x003f,
+    /* 0x4f00 .. 0x4fff */
+    0xed4f, 0x8ae9, 0x003f, 0xed50, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x98c2, 0x88c9, 0x003f, 0x003f, 0x8cde, 0x8aea, 0x959a,
+    0x94b0, 0x8b78, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x89ef, 0x003f, 0x98e5, 0x9360, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x948c,
+    0x98c4, 0x003f, 0x003f, 0x003f, 0x94ba, 0x003f, 0x97e0, 0x003f,
+    0x904c, 0xed51, 0x8e66, 0x003f, 0x8e97, 0x89be, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x92cf, 0x003f, 0x003f, 0x9241, 0x98c8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x88ca, 0x92e1, 0x8f5a,
+    0x8db2, 0x9743, 0x003f, 0x91cc, 0x003f, 0x89bd, 0xed52, 0x98c7,
+    0x003f, 0x975d, 0x98c3, 0x98c5, 0x8dec, 0x98c6, 0x9b43, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x98ce, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x98d1,
+    0x98cf, 0x003f, 0x003f, 0x89c0, 0x003f, 0x95b9, 0x98c9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x98cd, 0x8cf1, 0x003f, 0x003f, 0x8e67,
+    0x003f, 0x003f, 0x003f, 0x8aa4, 0x003f, 0x003f, 0x98d2, 0x003f,
+    0x98ca, 0x003f, 0xed54, 0x97e1, 0x003f, 0x8e98, 0x003f, 0x98cb,
+    0x003f, 0x98d0, 0xed53, 0x003f, 0xed56, 0x003f, 0x98d3, 0x003f,
+    0x98cc, 0x003f, 0xed55, 0x8b9f, 0x003f, 0x88cb, 0x003f, 0x003f,
+    0x8ba0, 0x89bf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9b44, 0x003f, 0x9699, 0x958e, 0x8cf2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x904e, 0x97b5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x95d6,
+    0x003f, 0x003f, 0x8c57, 0x91a3, 0x89e2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xed45, 0x8f72, 0x003f, 0x003f, 0xed57, 0x98d7, 0x003f,
+    0x98dc, 0x98da, 0x003f, 0x003f, 0x98d5, 0x003f, 0x003f, 0x91ad,
+    0x98d8, 0x003f, 0x98db, 0x98d9, 0x003f, 0x95db, 0x003f, 0x98d6,
+    0x003f, 0x904d, 0x003f, 0x9693, 0x98dd, 0x98de, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8f43, 0x98eb,
+    0x003f, 0x003f, 0x003f, 0x946f, 0x003f, 0x9555, 0x98e6, 0x003f,
+    0x95ee, 0x003f, 0x89b4, 0x003f, 0x003f, 0x003f, 0x98ea, 0xed5a,
+    /* 0x5000 .. 0x50ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x98e4, 0x98ed, 0x003f,
+    0x003f, 0x9171, 0x003f, 0x8cc2, 0x003f, 0x947b, 0x003f, 0xe0c5,
+    0x003f, 0x98ec, 0x937c, 0x003f, 0x98e1, 0x003f, 0x8cf4, 0x003f,
+    0x003f, 0x8cf3, 0x98df, 0x003f, 0x003f, 0x003f, 0xed5b, 0x8ed8,
+    0x003f, 0x98e7, 0xed59, 0x95ed, 0x926c, 0x98e3, 0x8c91, 0x003f,
+    0x98e0, 0x98e8, 0x98e2, 0x97cf, 0x98e9, 0x9860, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8be4, 0x003f,
+    0x003f, 0x8c90, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xed58, 0x003f, 0xed5e, 0x98ee, 0x003f, 0x003f, 0xed5c, 0x98ef,
+    0x98f3, 0x88cc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x95ce,
+    0x98f2, 0x003f, 0x003f, 0x003f, 0x003f, 0x98f1, 0x98f5, 0x003f,
+    0x003f, 0x003f, 0x98f4, 0x003f, 0x92e2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8c92, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x98f6, 0x003f, 0x003f, 0x003f,
+    0xed5d, 0x003f, 0x8ec3, 0x003f, 0x91a4, 0x92e3, 0x8bf4, 0x003f,
+    0x98f7, 0x003f, 0x003f, 0x003f, 0x003f, 0x8b55, 0x003f, 0x003f,
+    0x98f8, 0x003f, 0x003f, 0x003f, 0x003f, 0x98fa, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9654, 0x003f, 0x003f,
+    0x003f, 0x8c86, 0x003f, 0x003f, 0xed5f, 0x003f, 0x003f, 0x003f,
+    0x8e50, 0x94f5, 0x98f9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8dc3, 0x9762, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x98fc, 0x9942, 0x98fb, 0x8dc2, 0x003f, 0x8f9d,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8c58, 0x003f,
+    0x003f, 0x003f, 0x9943, 0x003f, 0x003f, 0x8bcd, 0x003f, 0x003f,
+    0x003f, 0x9940, 0x9941, 0x003f, 0x003f, 0x93ad, 0x003f, 0x919c,
+    0x003f, 0x8ba1, 0x003f, 0x003f, 0x003f, 0x966c, 0x9944, 0x003f,
+    0xed61, 0x003f, 0x97bb, 0x003f, 0x003f, 0x003f, 0x9945, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9948, 0x003f, 0x9946, 0x003f, 0x916d,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9947, 0x9949, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xed60, 0x994b, 0x003f, 0x003f,
+    0x003f, 0x994a, 0x003f, 0x95c6, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x5100 .. 0x51ff */
+    0x8b56, 0x994d, 0x994e, 0x003f, 0x89ad, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x994c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x8ef2, 0x003f, 0x9951, 0x9950, 0x994f, 0x003f,
+    0x98d4, 0x003f, 0x9952, 0x003f, 0x003f, 0x003f, 0x003f, 0x8f9e,
+    0x003f, 0x9953, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9744, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x96d7, 0x003f, 0x003f, 0x003f, 0x003f, 0x9955,
+    0x003f, 0x003f, 0x9954, 0x9957, 0x9956, 0x003f, 0x003f, 0x9958,
+    0x9959, 0x88f2, 0x003f, 0x8cb3, 0x8c5a, 0x8f5b, 0x929b, 0x8ba2,
+    0x90e6, 0x8cf5, 0xed62, 0x8d8e, 0x995b, 0x96c6, 0x9365, 0x003f,
+    0x8e99, 0x003f, 0x995a, 0x003f, 0x995c, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x937d, 0x003f, 0x8a95, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x995d, 0x003f, 0xed63, 0x93fc, 0x003f, 0x003f,
+    0x9153, 0x995f, 0x9960, 0x94aa, 0x8cf6, 0x985a, 0x9961, 0x003f,
+    0x003f, 0x8ba4, 0x003f, 0x003f, 0x003f, 0x95ba, 0x91b4, 0x8bef,
+    0x9354, 0x003f, 0x003f, 0x003f, 0x8c93, 0x003f, 0x003f, 0x003f,
+    0x9962, 0x003f, 0x9963, 0x003f, 0x003f, 0x93e0, 0x897e, 0x003f,
+    0x003f, 0x9966, 0x8dfb, 0x003f, 0x9965, 0x8dc4, 0x003f, 0x9967,
+    0xe3ec, 0x9968, 0x9660, 0x9969, 0x003f, 0x996a, 0x996b, 0x8fe7,
+    0x003f, 0x8eca, 0x003f, 0x003f, 0x003f, 0xed64, 0x003f, 0x003f,
+    0x8aa5, 0x003f, 0x996e, 0x003f, 0x996c, 0x96bb, 0x996d, 0x003f,
+    0x9579, 0x996f, 0x9970, 0x9971, 0x937e, 0x003f, 0x003f, 0x003f,
+    0x9975, 0x9973, 0x9974, 0x9972, 0x8de1, 0x9976, 0x96e8, 0x97e2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9977, 0xed65, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x90a6, 0x9978, 0x8f79, 0x003f,
+    0x003f, 0x9979, 0x003f, 0x929c, 0x97bd, 0x9380, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x99c3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x997a, 0xeaa3, 0x8bc3, 0x003f, 0x003f,
+    0x997b, 0x967d, 0x003f, 0x003f, 0x003f, 0x003f, 0x8f88, 0x91fa,
+    0x003f, 0x997d, 0x93e2, 0x003f, 0xed66, 0x997e, 0x003f, 0x003f,
+    0x9980, 0x8a4d, 0x003f, 0x003f, 0x003f, 0x9981, 0x8ba5, 0x003f,
+    0x93ca, 0x899a, 0x8f6f, 0x003f, 0x003f, 0x949f, 0x9982, 0x003f,
+    /* 0x5200 .. 0x52ff */
+    0x9381, 0x003f, 0x003f, 0x906e, 0x9983, 0x003f, 0x95aa, 0x90d8,
+    0x8aa0, 0x003f, 0x8aa7, 0x9984, 0x003f, 0x003f, 0x9986, 0x003f,
+    0x003f, 0x8c59, 0x003f, 0x003f, 0x9985, 0xed67, 0x003f, 0x97f1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8f89, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x94bb, 0x95ca, 0x003f, 0x9987,
+    0x003f, 0x9798, 0x9988, 0x003f, 0x003f, 0x003f, 0x9989, 0x003f,
+    0x939e, 0x003f, 0x003f, 0x998a, 0x003f, 0x003f, 0x90a7, 0x8dfc,
+    0x8c94, 0x998b, 0x8e68, 0x8d8f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x92e4, 0x998d, 0x003f, 0x003f, 0x91a5,
+    0x003f, 0x003f, 0x8ded, 0x998e, 0x998f, 0x914f, 0x003f, 0x998c,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9991, 0x003f, 0x9655, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x8d84, 0x003f, 0x003f, 0x9990, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x8c95, 0x8ddc, 0x948d, 0x003f, 0x003f,
+    0x003f, 0x9994, 0x9992, 0x003f, 0x003f, 0x003f, 0x003f, 0x959b,
+    0x8fe8, 0x999b, 0x8a84, 0x9995, 0x9993, 0x916e, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9997, 0x003f, 0x9996,
+    0x003f, 0x003f, 0x003f, 0x8a63, 0x003f, 0x003f, 0x003f, 0x8c80,
+    0x999c, 0x97ab, 0x003f, 0x003f, 0x003f, 0x9998, 0x003f, 0x003f,
+    0x003f, 0x999d, 0x999a, 0x003f, 0x9999, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x97cd, 0xed68, 0x003f, 0x003f, 0x8cf7,
+    0x89c1, 0x003f, 0x003f, 0x97f2, 0x003f, 0x003f, 0xed69, 0x003f,
+    0x003f, 0x8f95, 0x9377, 0x8d85, 0x99a0, 0x99a1, 0x003f, 0xee5b,
+    0x003f, 0x97e3, 0x003f, 0x003f, 0x984a, 0x99a3, 0x003f, 0x003f,
+    0x003f, 0x8cf8, 0x003f, 0x003f, 0x99a2, 0x003f, 0x8a4e, 0x003f,
+    0xed6a, 0x99a4, 0x003f, 0x9675, 0x003f, 0x92ba, 0x003f, 0x9745,
+    0x003f, 0x95d7, 0x003f, 0x003f, 0x003f, 0x99a5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe8d3, 0x003f, 0x003f, 0x93ae, 0x003f, 0x99a6,
+    0x8aa8, 0x96b1, 0x003f, 0xed6b, 0x003f, 0x8f9f, 0x99a7, 0x95e5,
+    0x99ab, 0x003f, 0x90a8, 0x99a8, 0x8bce, 0x003f, 0x99a9, 0x8aa9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x8c4d, 0x99ac, 0x003f, 0x99ad, 0x003f, 0x003f,
+    0x99ae, 0x99af, 0x8ed9, 0x003f, 0x003f, 0x003f, 0x8cf9, 0x96dc,
+    /* 0x5300 .. 0x53ff */
+    0xed6c, 0x96e6, 0x93f5, 0x003f, 0x003f, 0x95ef, 0x99b0, 0xed6d,
+    0x99b1, 0x003f, 0x003f, 0x003f, 0x003f, 0x99b3, 0x003f, 0x99b5,
+    0x99b4, 0x003f, 0x003f, 0x003f, 0x003f, 0x99b6, 0x89bb, 0x966b,
+    0x003f, 0x8dfa, 0x99b7, 0x003f, 0x003f, 0x9178, 0x003f, 0x003f,
+    0x8fa0, 0x8ba7, 0x003f, 0x99b8, 0xed6e, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x94d9, 0x003f, 0x003f, 0x003f, 0x003f, 0x99b9,
+    0x003f, 0x99ba, 0x003f, 0x99bb, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x99bc, 0x9543, 0x8be6, 0x88e3, 0x003f, 0x003f, 0x003f, 0x93bd,
+    0x99bd, 0x8f5c, 0x003f, 0x90e7, 0x003f, 0x99bf, 0x99be, 0x8fa1,
+    0x8cdf, 0x99c1, 0x94bc, 0x003f, 0x003f, 0x99c2, 0x003f, 0x003f,
+    0x003f, 0x94da, 0x91b2, 0x91ec, 0x8ba6, 0x003f, 0x003f, 0x93ec,
+    0x9250, 0x003f, 0x948e, 0x003f, 0x966d, 0x003f, 0x99c4, 0x003f,
+    0x90e8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8c54, 0x003f,
+    0x003f, 0x99c5, 0x003f, 0x003f, 0x003f, 0x003f, 0x99c6, 0x894b,
+    0x88f3, 0x8aeb, 0xed6f, 0x91a6, 0x8b70, 0x9791, 0x003f, 0x99c9,
+    0x89b5, 0x003f, 0x003f, 0x99c8, 0x003f, 0x003f, 0x003f, 0x8ba8,
+    0x003f, 0x003f, 0x99ca, 0x003f, 0x96ef, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xed70, 0x003f, 0x003f, 0x99cb, 0x003f,
+    0x97d0, 0x003f, 0x8cfa, 0x003f, 0x003f, 0x003f, 0x003f, 0x8cb4,
+    0x99cc, 0x003f, 0x003f, 0x003f, 0x003f, 0x99ce, 0x99cd, 0x003f,
+    0x907e, 0x8958, 0x003f, 0x003f, 0x003f, 0x897d, 0x99cf, 0x003f,
+    0x99d0, 0x003f, 0xed71, 0x8cb5, 0x003f, 0x003f, 0x99d1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x8b8e, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x8e51, 0x99d2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9694, 0x8db3, 0x8b79, 0x9746, 0x916f, 0x94bd, 0x8efb, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8f66, 0x003f, 0x8ee6, 0x8ef3,
+    0x003f, 0x8f96, 0x003f, 0x94be, 0x003f, 0xed72, 0x003f, 0x99d5,
+    0x003f, 0x8962, 0x9170, 0x8cfb, 0x8cc3, 0x8be5, 0x003f, 0x003f,
+    0x99d9, 0x9240, 0x91fc, 0x8ba9, 0x8fa2, 0x99da, 0x99d8, 0x89c2,
+    0x91e4, 0x8eb6, 0x8e6a, 0x8945, 0x003f, 0x003f, 0x8a90, 0x8d86,
+    0x8e69, 0x003f, 0x99db, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x5400 .. 0x54ff */
+    0x003f, 0x99dc, 0x003f, 0x8b68, 0x8a65, 0x003f, 0x003f, 0x003f,
+    0x8d87, 0x8b67, 0x92dd, 0x8944, 0x93af, 0x96bc, 0x8d40, 0x9799,
+    0x9366, 0x8cfc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x8c4e, 0x003f, 0x99e5, 0x003f, 0x8be1,
+    0x9669, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x94db, 0x003f,
+    0x003f, 0x99e4, 0x003f, 0x8adc, 0x99df, 0x99e0, 0x99e2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x99e3, 0x003f,
+    0x8b7a, 0x9081, 0x003f, 0x95ab, 0x99e1, 0x99dd, 0x8ce1, 0x003f,
+    0x99de, 0x003f, 0x9843, 0x003f, 0x003f, 0x003f, 0x95f0, 0x003f,
+    0x92e6, 0x8ce0, 0x8d90, 0x003f, 0x003f, 0x003f, 0x99e6, 0x003f,
+    0x003f, 0x93db, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x99ea,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8efc, 0x003f, 0x8ef4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x99ed, 0x99eb, 0x003f, 0x96a1, 0x003f, 0x99e8, 0x99f1, 0x99ec,
+    0x003f, 0x003f, 0x003f, 0x99ef, 0x8cc4, 0x96bd, 0x003f, 0x003f,
+    0x99f0, 0x003f, 0x003f, 0x003f, 0x99f2, 0x003f, 0x99f4, 0x003f,
+    0x003f, 0x003f, 0xed75, 0x8dee, 0x9861, 0x003f, 0x99e9, 0x99e7,
+    0x99f3, 0x003f, 0x99ee, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xed74, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x99f6, 0x003f, 0x9a42, 0x99f8, 0x003f, 0x003f,
+    0x99fc, 0xed76, 0x003f, 0x9a40, 0x99f9, 0x003f, 0x003f, 0x9a5d,
+    0x003f, 0x003f, 0x8de7, 0x8a50, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x99f7, 0x003f, 0x003f, 0x003f, 0x9a44, 0x88f4, 0x9a43, 0x003f,
+    0x88a3, 0x9569, 0x9a41, 0x003f, 0x99fa, 0x003f, 0x003f, 0x99f5,
+    0x99fb, 0x8dc6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9a45, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x88f5, 0x9a4e, 0x003f, 0x003f, 0x9a46, 0x9a47, 0x003f,
+    0x8fa3, 0x9689, 0x003f, 0x003f, 0x003f, 0x9a4c, 0x9a4b, 0x003f,
+    0x003f, 0x003f, 0x934e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9a4d, 0x003f, 0x003f, 0x9a4a, 0x003f, 0xed77,
+    /* 0x5500 .. 0x55ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8953, 0x003f, 0x8db4, 0x904f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9a48,
+    0x9382, 0x003f, 0x003f, 0x003f, 0x9a49, 0x003f, 0x88a0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9a53, 0x9742,
+    0x003f, 0x8fa5, 0x003f, 0x9a59, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9a58, 0x9a4f, 0x003f, 0x003f, 0x003f, 0x003f, 0x91c1, 0x003f,
+    0x9a50, 0x003f, 0x003f, 0x003f, 0x91ed, 0x9a55, 0x8fa4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9a52, 0x003f, 0x003f, 0x96e2,
+    0x003f, 0x003f, 0x003f, 0x8c5b, 0x003f, 0x003f, 0x9a56, 0x9a57,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9a54, 0x9a5a, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9a51, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9a60, 0x9a65, 0x003f, 0x9a61, 0x003f,
+    0x9a5c, 0x003f, 0x003f, 0x9a66, 0x9150, 0x003f, 0xed78, 0x9a68,
+    0x003f, 0x8d41, 0x9a5e, 0x929d, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9a62, 0x9a5b, 0x8aab, 0x003f, 0x8aec, 0x8a85, 0x9a63, 0x9a5f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8c96,
+    0x9a69, 0x9a67, 0x9172, 0x8b69, 0x8baa, 0x003f, 0x9a64, 0x003f,
+    0x8bf2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8963, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9a6d, 0x9a6b, 0x003f, 0x9aa5,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9a70, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9a6a, 0x003f, 0x9a6e, 0x003f, 0x003f, 0x9a6c,
+    0x003f, 0x003f, 0x003f, 0x8e6b, 0x9a6f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9a72,
+    0x003f, 0x9a77, 0x003f, 0x003f, 0x003f, 0x9a75, 0x9a74, 0x003f,
+    /* 0x5600 .. 0x56ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9251, 0x003f,
+    0x003f, 0x89c3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9a71, 0x003f, 0x9a73, 0x8fa6,
+    0x8952, 0x003f, 0x003f, 0x9a76, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x89dc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9a82,
+    0x003f, 0x8ffa, 0x9a7d, 0x003f, 0x9a7b, 0x003f, 0x9a7c, 0x003f,
+    0x9a7e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x895c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9158, 0x003f, 0x9a78, 0x003f,
+    0x9a79, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x8a9a, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9a81, 0x003f, 0x003f, 0x003f,
+    0x8aed, 0x003f, 0x9a84, 0x9a80, 0x9a83, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x95ac, 0x003f, 0x003f, 0x003f,
+    0x93d3, 0x003f, 0x94b6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9a86, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9a85, 0x8a64,
+    0x003f, 0x003f, 0x9a87, 0x003f, 0x003f, 0x003f, 0x003f, 0x9a8a,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9a89, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9a88, 0x003f, 0x9458, 0x003f, 0x003f, 0x9a8b, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9a8c, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9a8e, 0x003f, 0x9a8d, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9a90, 0x003f, 0x003f, 0x003f,
+    0x9a93, 0x9a91, 0x9a8f, 0x9a92, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9a94, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9a95, 0x003f,
+    0x003f, 0x9a96, 0x003f, 0x9a97, 0x003f, 0x003f, 0x003f, 0x9a98,
+    0x9964, 0x003f, 0x8efa, 0x8e6c, 0x003f, 0x003f, 0x89f1, 0x003f,
+    0x88f6, 0x003f, 0x003f, 0x9263, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9a99, 0x003f,
+    0x8da2, 0x003f, 0x88cd, 0x907d, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9a9a, 0x8cc5, 0x003f, 0x003f, 0x8d91, 0x003f, 0x9a9c,
+    /* 0x5700 .. 0x57ff */
+    0x9a9b, 0x003f, 0x003f, 0x95de, 0x9a9d, 0x003f, 0x003f, 0x003f,
+    0x9a9f, 0x9a9e, 0x003f, 0x9aa0, 0x003f, 0x9aa1, 0x003f, 0x8c97,
+    0x003f, 0x003f, 0x8980, 0x9aa2, 0x003f, 0x003f, 0x9aa4, 0x003f,
+    0x9aa3, 0x003f, 0x003f, 0x003f, 0x9aa6, 0x003f, 0x003f, 0x9379,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9aa7, 0x88b3,
+    0x8ddd, 0x003f, 0x003f, 0x003f, 0x003f, 0x8c5c, 0x003f, 0x003f,
+    0x926e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9aa8,
+    0x9aa9, 0x003f, 0x003f, 0x9aab, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9aac, 0x003f, 0x8de2, 0x003f, 0x003f, 0x003f, 0x003f, 0x8bcf,
+    0x003f, 0x003f, 0x9656, 0x003f, 0x003f, 0x003f, 0x9aaa, 0x9aad,
+    0x8dbf, 0x8d42, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xed79, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9ab1, 0x003f, 0x003f, 0x8da3, 0xed7a, 0x9252, 0x003f,
+    0x003f, 0x9aae, 0x92d8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9ab2,
+    0x003f, 0x003f, 0x9082, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9ab0, 0x9ab3, 0x003f, 0x8c5e, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9ab4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9ab5, 0x003f, 0x8d43, 0x8a5f, 0x9ab7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9ab8, 0x003f, 0xed7b, 0x003f, 0x003f, 0x003f,
+    0x9ab9, 0x003f, 0x003f, 0x9ab6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9aaf, 0x003f, 0x003f, 0x9aba, 0x003f, 0x003f, 0x9abb, 0xed7d,
+    0xed7c, 0x003f, 0x003f, 0x9684, 0x003f, 0x003f, 0x8fe9, 0x003f,
+    0x003f, 0x003f, 0x9abd, 0x9abe, 0x9abc, 0x003f, 0x9ac0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9457, 0x003f, 0x003f, 0x88e6,
+    0x9575, 0x003f, 0x003f, 0x9ac1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8ffb, 0x003f, 0x003f, 0x8eb7,
+    0x003f, 0x947c, 0x8aee, 0x003f, 0x8de9, 0x003f, 0x003f, 0x003f,
+    /* 0x5800 .. 0x58ff */
+    0x9678, 0x003f, 0x93b0, 0x003f, 0x003f, 0x8c98, 0x91cd, 0x003f,
+    0x003f, 0x003f, 0x9abf, 0x9ac2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x91c2, 0x003f, 0x003f,
+    0x003f, 0x9ac3, 0x003f, 0x003f, 0x003f, 0x9ac4, 0x003f, 0x003f,
+    0x003f, 0x9ac6, 0x003f, 0x003f, 0x92e7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x8aac, 0x003f, 0x003f, 0x003f, 0x003f, 0xea9f,
+    0x8981, 0x95f1, 0x003f, 0x003f, 0x8fea, 0x9367, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x8de4, 0x003f, 0x003f, 0x9acc, 0x003f, 0x003f,
+    0x95bb, 0x97db, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x89f2, 0x9ac8, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9159, 0x9acb, 0x003f, 0x9383, 0x003f, 0x003f, 0x9368,
+    0x9384, 0x94b7, 0x92cb, 0x003f, 0x003f, 0x003f, 0x8dc7, 0x003f,
+    0x003f, 0x003f, 0x9ac7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8996, 0x003f, 0x9355, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9ac9, 0x003f, 0x9ac5, 0x003f, 0x003f, 0x906f, 0x003f, 0x003f,
+    0x003f, 0x9acd, 0x003f, 0x003f, 0x003f, 0x003f, 0x8f6d, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x8bab, 0x003f, 0x9ace, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x95e6, 0x003f, 0x003f, 0x003f, 0x919d,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x92c4, 0x003f, 0xed81, 0x9ad0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x966e, 0x003f, 0x003f, 0x9ad1, 0x003f, 0x003f, 0x9ad6, 0x003f,
+    0x003f, 0x003f, 0xed82, 0x95ad, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9ad5, 0x9acf, 0x9ad2, 0x9ad4, 0x003f, 0x003f, 0x8da4, 0x003f,
+    0x003f, 0x95c7, 0x003f, 0x003f, 0x003f, 0x9ad7, 0x003f, 0x9264,
+    0x003f, 0x003f, 0x89f3, 0x003f, 0x8feb, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9ad9, 0x003f, 0x9ad8, 0x003f, 0x8d88, 0x003f, 0x9ada,
+    0x9adc, 0x9adb, 0x003f, 0x003f, 0x9ade, 0x003f, 0x9ad3, 0x9ae0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9adf, 0x9add, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x8e6d, 0x9070, 0x003f, 0x9173, 0x9ae1,
+    0x90ba, 0x88eb, 0x9484, 0x003f, 0x003f, 0x003f, 0x003f, 0x92d9,
+    0x003f, 0x9ae3, 0x9ae2, 0x9ae4, 0x9ae5, 0x9ae6, 0x003f, 0x003f,
+    /* 0x5900 .. 0x59ff */
+    0x003f, 0x003f, 0x9ae7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x95cf, 0x9ae8, 0xed83, 0x003f, 0x003f, 0x003f, 0x89c4,
+    0x9ae9, 0x003f, 0x003f, 0x003f, 0x003f, 0x975b, 0x8a4f, 0x003f,
+    0x99c7, 0x8f67, 0x91bd, 0x9aea, 0x96e9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x96b2, 0x003f, 0x003f, 0x9aec, 0x003f, 0x91e5,
+    0x003f, 0x9356, 0x91be, 0x9576, 0x9aed, 0x9aee, 0x899b, 0x003f,
+    0x003f, 0x8eb8, 0x9aef, 0x003f, 0x003f, 0x003f, 0x003f, 0x88ce,
+    0x9af0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9af1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8982, 0x003f, 0x003f, 0x8aef,
+    0x93de, 0x95f2, 0x003f, 0x003f, 0x003f, 0x003f, 0x9af5, 0x9174,
+    0x9af4, 0x8c5f, 0x003f, 0xed84, 0x967a, 0x9af3, 0x003f, 0x9385,
+    0x9af7, 0x003f, 0x9af6, 0xed85, 0x003f, 0xed86, 0x003f, 0x003f,
+    0x9af9, 0x003f, 0x9af8, 0xed87, 0x003f, 0x899c, 0x003f, 0x9afa,
+    0x8fa7, 0x9afc, 0x9244, 0x003f, 0x9afb, 0x003f, 0x95b1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x8f97, 0x937a, 0x003f, 0x003f, 0x003f,
+    0x9b40, 0x003f, 0x003f, 0x003f, 0x003f, 0x8d44, 0x003f, 0x003f,
+    0x003f, 0x9b41, 0x9440, 0x94dc, 0x96cf, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9444, 0x003f, 0x003f, 0x9b4a, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x8b57, 0x003f, 0x003f, 0x9764, 0x003f,
+    0x003f, 0x96ad, 0x003f, 0x9baa, 0x003f, 0x9b42, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9b45, 0xed88, 0x91c3, 0x003f, 0x003f,
+    0x9657, 0x003f, 0x003f, 0x003f, 0x9369, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9b46, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9685, 0xed89, 0x8dc8, 0x003f, 0x003f, 0x8fa8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9b47, 0x003f,
+    0x003f, 0x8e6f, 0x003f, 0x8e6e, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x88b7, 0x8cc6, 0x003f, 0x90a9, 0x88cf, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9b4b, 0x9b4c, 0x003f, 0x9b49, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8957, 0x8aad, 0x003f,
+    0x9b48, 0x003f, 0x96c3, 0x9550, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x88a6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x88f7, 0x003f, 0x003f, 0x003f, 0x8e70,
+    /* 0x5a00 .. 0x5aff */
+    0x003f, 0x88d0, 0x003f, 0x88a1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9b51, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9b4f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x96ba, 0x003f, 0x9b52, 0x003f, 0x9b50, 0x003f, 0x003f, 0x9b4e,
+    0x9050, 0x003f, 0x003f, 0x003f, 0x003f, 0x9b4d, 0x003f, 0x003f,
+    0x003f, 0x95d8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8ce2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9b56, 0x9b57, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8fa9, 0x003f, 0x003f, 0x003f,
+    0x9b53, 0x984b, 0x003f, 0x003f, 0x003f, 0x003f, 0x946b, 0x003f,
+    0x003f, 0x9b55, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x8da5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9b58, 0x003f, 0x003f, 0x003f, 0x9577, 0x003f,
+    0x003f, 0x003f, 0x9b59, 0x003f, 0x9b54, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x96b9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x947d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9b5a, 0x9551, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9b5b, 0x9b5f, 0x9b5c, 0x003f,
+    0x003f, 0x89c5, 0x9b5e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8eb9, 0x003f, 0x9b5d, 0x8c99, 0x003f, 0x003f, 0x003f,
+    0x9b6b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9b64, 0x9b61,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9284, 0x003f, 0x9b60, 0x003f, 0x003f, 0x9b62, 0x003f,
+    0x003f, 0x9b63, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9b65, 0x9b66, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x5b00 .. 0x5bff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8af0, 0x003f, 0x9b68, 0x9b67, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9b69, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x8fec, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9b6c, 0x003f, 0x92da, 0x003f, 0x003f, 0x003f,
+    0x8964, 0x003f, 0x9b6a, 0x003f, 0x003f, 0x003f, 0x9b6d, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9b6e, 0x003f,
+    0x9b71, 0x003f, 0x003f, 0x9b6f, 0x003f, 0x9b70, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8e71, 0x9b72, 0x003f, 0x003f, 0x8d45, 0x9b73, 0xed8a, 0x8e9a,
+    0x91b6, 0x003f, 0x9b74, 0x9b75, 0x8e79, 0x8d46, 0x003f, 0x96d0,
+    0x003f, 0x003f, 0x003f, 0x8b47, 0x8cc7, 0x9b76, 0x8a77, 0x003f,
+    0x003f, 0x9b77, 0x003f, 0x91b7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9b78, 0x9ba1, 0x003f, 0x9b79, 0x003f, 0x9b7a, 0x003f, 0x003f,
+    0x9b7b, 0x003f, 0x9b7d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9b7e, 0x003f, 0x003f, 0x9b80, 0x003f, 0x91ee, 0x003f, 0x8946,
+    0x8ee7, 0x88c0, 0x003f, 0x9176, 0x8aae, 0x8eb3, 0x003f, 0x8d47,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9386, 0x003f, 0x8f40,
+    0x8aaf, 0x9288, 0x92e8, 0x88b6, 0x8b58, 0x95f3, 0x003f, 0x8ec0,
+    0x003f, 0x003f, 0x8b71, 0x90e9, 0x8eba, 0x9747, 0x9b81, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8b7b, 0x003f,
+    0x8dc9, 0x003f, 0x003f, 0x8a51, 0x8983, 0x8faa, 0x89c6, 0x003f,
+    0x9b82, 0x9765, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8f68,
+    0xed8b, 0x003f, 0x8ee2, 0x9b83, 0x8af1, 0x93d0, 0x96a7, 0x9b84,
+    0x003f, 0x9b85, 0x003f, 0x003f, 0x9578, 0x003f, 0x003f, 0x003f,
+    0x9b87, 0x003f, 0x8aa6, 0x8bf5, 0x9b86, 0x003f, 0x003f, 0x003f,
+    0xed8d, 0x003f, 0x003f, 0x8ab0, 0x003f, 0x9051, 0x9b8b, 0x8e40,
+    0x003f, 0x89c7, 0x9b8a, 0x003f, 0x9b88, 0x9b8c, 0x9b89, 0x944a,
+    0x9ecb, 0x9052, 0x003f, 0x9b8d, 0xed8e, 0x003f, 0x97be, 0x003f,
+    0x9b8e, 0x003f, 0x003f, 0x9b90, 0x003f, 0x929e, 0x9b8f, 0x003f,
+    0x90a1, 0x003f, 0x8e9b, 0x003f, 0x003f, 0x003f, 0x91ce, 0x8ef5,
+    /* 0x5c00 .. 0x5cff */
+    0x003f, 0x9595, 0x90ea, 0x003f, 0x8ecb, 0x9b91, 0x8fab, 0x9b92,
+    0x9b93, 0x88d1, 0x91b8, 0x9071, 0x003f, 0x9b94, 0x93b1, 0x8fac,
+    0x003f, 0x8fad, 0x003f, 0x9b95, 0x003f, 0x003f, 0x90eb, 0x003f,
+    0x003f, 0x003f, 0x8fae, 0x003f, 0x003f, 0x003f, 0xed8f, 0x003f,
+    0x9b96, 0x003f, 0x9b97, 0x003f, 0x96de, 0x003f, 0x003f, 0x003f,
+    0x9b98, 0x003f, 0x003f, 0x003f, 0x003f, 0x8bc4, 0x003f, 0x003f,
+    0x003f, 0x8f41, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9b99, 0x9b9a, 0x8eda, 0x904b, 0x93f2, 0x9073, 0x94f6, 0x9441,
+    0x8bc7, 0x9b9b, 0x003f, 0x003f, 0x003f, 0x8b8f, 0x9b9c, 0x003f,
+    0x8bfc, 0x003f, 0x93cd, 0x89ae, 0x003f, 0x8e72, 0x9b9d, 0x9ba0,
+    0x9b9f, 0x8bfb, 0x003f, 0x9b9e, 0x003f, 0x9357, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x91ae, 0x003f,
+    0x936a, 0x8ec6, 0x003f, 0x003f, 0x9177, 0x979a, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9ba2, 0x003f, 0x9ba3, 0x93d4,
+    0x003f, 0x8e52, 0x003f, 0x003f, 0x003f, 0x003f, 0x9ba5, 0x003f,
+    0x003f, 0x9ba6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9ba7, 0x003f, 0x003f, 0x003f,
+    0x8af2, 0x9ba8, 0x003f, 0x003f, 0x9ba9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x89aa, 0x003f, 0x003f, 0x003f, 0x003f, 0xed90, 0x003f,
+    0x915a, 0x8ae2, 0x003f, 0x9bab, 0x96a6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x91d0, 0x003f, 0x8a78, 0x003f, 0x003f, 0x9bad, 0x9baf,
+    0x8add, 0x003f, 0xed91, 0x9bac, 0x9bae, 0x003f, 0x9bb1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9bb0, 0x003f, 0x9bb2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9bb3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x93bb, 0x8bac, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x89e3, 0x9bb4, 0x9bb9, 0x003f, 0x003f, 0x9bb7, 0x003f, 0x95f5,
+    0x95f4, 0x003f, 0x003f, 0x003f, 0x003f, 0xed92, 0x9387, 0x003f,
+    0x003f, 0x003f, 0x9bb6, 0x8f73, 0x003f, 0x9bb5, 0x003f, 0x003f,
+    /* 0x5d00 .. 0x5dff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9092,
+    0x003f, 0x003f, 0x003f, 0x9bba, 0x003f, 0x003f, 0x8de8, 0x003f,
+    0x003f, 0x9bc0, 0x003f, 0x003f, 0x9bc1, 0x9bbb, 0x8a52, 0x9bbc,
+    0x9bc5, 0x9bc4, 0x9bc3, 0x9bbf, 0x003f, 0x003f, 0x003f, 0x9bbe,
+    0x003f, 0x003f, 0x9bc2, 0x003f, 0x003f, 0x003f, 0x003f, 0xed93,
+    0x003f, 0x95f6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xed96, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9bc9, 0x9bc6, 0x003f, 0x9bc8, 0x003f,
+    0x9792, 0x003f, 0x9bc7, 0xed94, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9bbd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9093, 0x003f, 0x003f, 0x9bca, 0xed97, 0x003f, 0x8db5,
+    0x003f, 0x003f, 0x003f, 0x9bcb, 0x003f, 0x003f, 0x9bcc, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9bcf, 0x003f, 0x9bce, 0x003f, 0x003f, 0x9bcd,
+    0x003f, 0x003f, 0x003f, 0x9388, 0x9bb8, 0x003f, 0x003f, 0x003f,
+    0x9bd5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9bd1, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9bd0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9bd2, 0x003f, 0x9bd3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9bd6,
+    0xed98, 0xed99, 0x97e4, 0x003f, 0x9bd7, 0x9bd4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9bd8, 0x003f, 0x003f, 0x8ade, 0x9bd9, 0x003f, 0x003f,
+    0xed9a, 0x003f, 0x9bdb, 0x9bda, 0x003f, 0x003f, 0x9bdc, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9bdd, 0x003f, 0x90ec, 0x8f42, 0x003f,
+    0x003f, 0x8f84, 0x003f, 0x9183, 0x003f, 0x8d48, 0x8db6, 0x8d49,
+    0x8b90, 0x003f, 0x003f, 0x9bde, 0x003f, 0x003f, 0x8db7, 0x003f,
+    0x003f, 0x8cc8, 0x9bdf, 0x96a4, 0x9462, 0x9be0, 0x003f, 0x8d4a,
+    0x003f, 0x003f, 0x003f, 0x8aaa, 0x003f, 0x9246, 0x8bd0, 0x003f,
+    /* 0x5e00 .. 0x5eff */
+    0x003f, 0x003f, 0x8e73, 0x957a, 0x003f, 0x003f, 0x94bf, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9be1, 0x8af3, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9be4, 0x003f, 0x003f, 0x003f, 0x003f, 0x929f, 0x003f,
+    0x003f, 0x9be3, 0x9be2, 0x9be5, 0x003f, 0x92e9, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9083, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x8e74, 0x003f, 0x90c8, 0x003f, 0x91d1,
+    0x8b41, 0x003f, 0x003f, 0x92a0, 0x003f, 0x003f, 0x9be6, 0x9be7,
+    0x8fed, 0x003f, 0x003f, 0x003f, 0x003f, 0x9658, 0x003f, 0x003f,
+    0x9bea, 0x003f, 0x003f, 0x9be9, 0x9be8, 0x959d, 0x003f, 0x9bf1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9679, 0x003f, 0x9beb, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9bed, 0x968b, 0x003f, 0x9bec,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9bee,
+    0x003f, 0x94a6, 0x9bef, 0x95bc, 0x9bf0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x8ab1, 0x95bd, 0x944e, 0x9bf2, 0x9bf3, 0x003f,
+    0x8d4b, 0x8ab2, 0x9bf4, 0x8cb6, 0x9763, 0x9748, 0x8af4, 0x9bf6,
+    0x003f, 0x92a1, 0x003f, 0x8d4c, 0x8faf, 0x003f, 0x003f, 0x94dd,
+    0x003f, 0x003f, 0x8fb0, 0x003f, 0x003f, 0x003f, 0x003f, 0x8f98,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x92ea, 0x95f7, 0x9358,
+    0x003f, 0x003f, 0x8d4d, 0x003f, 0x957b, 0x003f, 0x003f, 0x003f,
+    0x9bf7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9378, 0x8dc0,
+    0x003f, 0x003f, 0x003f, 0x8cc9, 0x003f, 0x92eb, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x88c1, 0x8f8e, 0x8d4e,
+    0x9766, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9bf8, 0x9bf9, 0x9470, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9bfa, 0x97f5, 0x984c, 0x003f, 0x003f, 0x003f, 0x003f, 0x9bfc,
+    0x9bfb, 0x003f, 0x003f, 0x8a66, 0x003f, 0x003f, 0x9c40, 0x003f,
+    0x003f, 0x003f, 0x9c43, 0x9c44, 0x003f, 0x9c42, 0x003f, 0x955f,
+    0x8fb1, 0x9c46, 0x9c45, 0x9c41, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9c47, 0x9c48, 0x003f, 0x003f, 0x9c49, 0x003f, 0x003f, 0x003f,
+    0x9c4c, 0x9c4a, 0x003f, 0x9c4b, 0x9c4d, 0x003f, 0x8984, 0x92ec,
+    0x9c4e, 0x003f, 0x8c9a, 0x89f4, 0x9455, 0x003f, 0x9c4f, 0x93f9,
+    /* 0x5f00 .. 0x5fff */
+    0x003f, 0x95d9, 0x003f, 0x9c50, 0x984d, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9c51, 0x95be, 0x9c54, 0x989f, 0x98af, 0x003f, 0x8eae,
+    0x93f3, 0x9c55, 0x003f, 0x8b7c, 0x92a2, 0x88f8, 0x9c56, 0x95a4,
+    0x8d4f, 0x003f, 0x003f, 0x926f, 0x003f, 0x003f, 0x003f, 0x92ed,
+    0x003f, 0xed9b, 0x003f, 0x003f, 0x003f, 0x96ed, 0x8cb7, 0x8cca,
+    0x003f, 0x9c57, 0x003f, 0x003f, 0x003f, 0x9c58, 0x003f, 0x9c5e,
+    0x003f, 0x8ee3, 0x003f, 0x003f, 0xed9c, 0x92a3, 0x003f, 0x8bad,
+    0x9c59, 0x003f, 0x003f, 0x003f, 0x954a, 0x003f, 0x9265, 0x003f,
+    0x003f, 0x9c5a, 0x003f, 0x003f, 0x003f, 0xed4b, 0x003f, 0x003f,
+    0x9c5b, 0x003f, 0x8bae, 0x003f, 0x9c5c, 0x003f, 0x9c5d, 0x003f,
+    0x003f, 0x9c5f, 0x003f, 0x9396, 0x003f, 0x003f, 0x9c60, 0x9c61,
+    0x003f, 0x9c62, 0x003f, 0x003f, 0x9c53, 0x9c52, 0x003f, 0x003f,
+    0x003f, 0x9c63, 0x8c60, 0x003f, 0x003f, 0x003f, 0x9546, 0xed9d,
+    0x003f, 0x8dca, 0x9556, 0x92a4, 0x956a, 0x9c64, 0x003f, 0x003f,
+    0x8fb2, 0x8965, 0x003f, 0x9c65, 0x003f, 0x003f, 0x003f, 0x9c66,
+    0x003f, 0x96f0, 0x003f, 0x003f, 0x94de, 0x003f, 0x003f, 0x9c69,
+    0x899d, 0x90aa, 0x9c68, 0x9c67, 0x8c61, 0x91d2, 0x003f, 0x9c6d,
+    0x9c6b, 0x003f, 0x9c6a, 0x97a5, 0x8ce3, 0x003f, 0x003f, 0x003f,
+    0x8f99, 0x9c6c, 0x936b, 0x8f5d, 0x003f, 0x003f, 0x003f, 0x93be,
+    0x9c70, 0x9c6f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9c6e, 0x003f,
+    0x9c71, 0x8ce4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9c72, 0x959c, 0x8f7a, 0x003f, 0x003f, 0x9c73, 0x94f7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x93bf, 0x92a5, 0x003f, 0x003f, 0xed9e,
+    0x003f, 0x934f, 0x003f, 0x003f, 0x9c74, 0x8b4a, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9053, 0x003f, 0x954b, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8af5, 0x9445, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9c75, 0x8e75,
+    0x9659, 0x965a, 0x003f, 0x003f, 0x899e, 0x9c7a, 0xed9f, 0x003f,
+    0x9289, 0x003f, 0x003f, 0x003f, 0x9c77, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x89f5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9cab, 0x9c79, 0x003f, 0x003f, 0x003f, 0x944f, 0x003f, 0x003f,
+    0x9c78, 0x003f, 0x003f, 0x9c76, 0x003f, 0x8d9a, 0x003f, 0x9c7c,
+    /* 0x6000 .. 0x60ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9c83, 0x9c89,
+    0x9c81, 0x003f, 0x937b, 0x003f, 0x003f, 0x9c86, 0x957c, 0x003f,
+    0x003f, 0x9c80, 0x003f, 0x9c85, 0x97e5, 0x8e76, 0x003f, 0x003f,
+    0x91d3, 0x9c7d, 0x003f, 0x003f, 0x003f, 0x8b7d, 0x9c88, 0x90ab,
+    0x8985, 0x9c82, 0x89f6, 0x9c87, 0x003f, 0x003f, 0x003f, 0x8baf,
+    0x003f, 0x9c84, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9c8a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9c8c, 0x9c96, 0x9c94, 0x003f, 0x003f, 0x9c91, 0x003f,
+    0x003f, 0x003f, 0x9c90, 0x97f6, 0x003f, 0x9c92, 0x003f, 0x003f,
+    0x8bb0, 0x003f, 0x8d50, 0x003f, 0x003f, 0x8f9a, 0x003f, 0x003f,
+    0x003f, 0x9c99, 0x9c8b, 0x003f, 0x003f, 0xeda0, 0x003f, 0x9c8f,
+    0x9c7e, 0x003f, 0x89f8, 0x9c93, 0x9c95, 0x9270, 0x003f, 0x003f,
+    0x8da6, 0x89b6, 0x9c8d, 0x9c98, 0x9c97, 0x8bb1, 0x003f, 0x91a7,
+    0x8a86, 0x003f, 0x003f, 0x003f, 0x003f, 0x8c62, 0x003f, 0x9c8e,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9c9a, 0x003f, 0x9c9d, 0x9c9f, 0xeda1, 0x003f, 0x003f,
+    0x003f, 0x8ebb, 0xeda2, 0x9ca5, 0x92ee, 0x9c9b, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9ca3, 0x003f, 0x89f7, 0x003f, 0x9ca1, 0x9ca2,
+    0x003f, 0x003f, 0x9c9e, 0x9ca0, 0x003f, 0x003f, 0x003f, 0x8ce5,
+    0x9749, 0x003f, 0x003f, 0x8ab3, 0x003f, 0x003f, 0x8978, 0x9ca4,
+    0x003f, 0x9459, 0x88ab, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x94df, 0x9c7b, 0x9caa, 0x9cae, 0x96e3, 0x003f,
+    0x9ca7, 0x003f, 0x003f, 0x003f, 0x9389, 0x9cac, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8fee, 0x9cad, 0x93d5,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9866, 0x003f, 0x9ca9, 0x003f, 0xeda4, 0x003f, 0x003f,
+    0x9caf, 0x003f, 0x8d9b, 0x003f, 0x90c9, 0x003f, 0xeda3, 0x88d2,
+    0x9ca8, 0x9ca6, 0x003f, 0x9179, 0x003f, 0x003f, 0x003f, 0x9c9c,
+    0x8e53, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x91c4, 0x9cbb, 0xeda6, 0x917a, 0x9cb6, 0x003f, 0x9cb3, 0x9cb4,
+    0x003f, 0x8ee4, 0x9cb7, 0x9cba, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6100 .. 0x61ff */
+    0x9cb5, 0x8f44, 0x003f, 0x9cb8, 0x003f, 0x003f, 0x9cb2, 0x003f,
+    0x96fa, 0x96f9, 0x003f, 0x003f, 0x003f, 0x9cbc, 0x9cbd, 0x88d3,
+    0x003f, 0xeda7, 0x003f, 0x003f, 0x003f, 0x9cb1, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x8bf0, 0x88a4, 0x003f, 0x003f, 0x003f, 0x8ab4,
+    0xeda5, 0x9cb9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9cc1,
+    0x9cc0, 0x003f, 0x003f, 0x003f, 0x9cc5, 0x003f, 0x003f, 0x003f,
+    0xeda9, 0x003f, 0x003f, 0x003f, 0x9cc6, 0x003f, 0x003f, 0xeda8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9cc4, 0x9cc7, 0x9cbf, 0x9cc3,
+    0x003f, 0x003f, 0x9cc8, 0x003f, 0x9cc9, 0x003f, 0x003f, 0x9cbe,
+    0x8e9c, 0x003f, 0x9cc2, 0x91d4, 0x8d51, 0x9cb0, 0x9054, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9cd6, 0x003f, 0x95e7, 0x003f, 0x003f,
+    0x9ccc, 0x9ccd, 0x9cce, 0x003f, 0x003f, 0x9cd5, 0x003f, 0x9cd4,
+    0x003f, 0x003f, 0x969d, 0x8ab5, 0x003f, 0x9cd2, 0x003f, 0x8c64,
+    0x8a53, 0x003f, 0x003f, 0x9ccf, 0x003f, 0x003f, 0x97b6, 0x9cd1,
+    0x88d4, 0x9cd3, 0x003f, 0x9cca, 0x9cd0, 0x9cd7, 0x8c63, 0x9ccb,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x977c, 0x003f,
+    0x003f, 0x003f, 0x974a, 0x003f, 0x003f, 0x003f, 0x003f, 0x9cda,
+    0x003f, 0x003f, 0x9cde, 0x003f, 0x003f, 0x003f, 0x919e, 0x003f,
+    0x97f7, 0x9cdf, 0x003f, 0x003f, 0x9cdc, 0x003f, 0x9cd9, 0x003f,
+    0xedaa, 0x9cd8, 0x9cdd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x95ae, 0x003f, 0x003f, 0x93b2,
+    0x003f, 0x8c65, 0x003f, 0x9ce0, 0x9cdb, 0x003f, 0x9ce1, 0x003f,
+    0x003f, 0x003f, 0x8c9b, 0x003f, 0x003f, 0x003f, 0x89af, 0x003f,
+    0x003f, 0x003f, 0x9ce9, 0x003f, 0x003f, 0x003f, 0x8ab6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9ce7, 0x003f, 0x003f, 0x9ce8, 0x8da7,
+    0x9ce6, 0x9ce4, 0x9ce3, 0x9cea, 0x9ce2, 0x9cec, 0x003f, 0x003f,
+    0x89f9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9cee, 0x003f, 0x003f, 0x9ced, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x92a6, 0x003f, 0x9cf1, 0x003f, 0x9cef, 0x9ce5,
+    0x8c9c, 0x003f, 0x9cf0, 0x003f, 0x9cf4, 0x9cf3, 0x9cf5, 0x9cf2,
+    /* 0x6200 .. 0x62ff */
+    0x9cf6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9cf7, 0x9cf8, 0x95e8, 0x003f, 0x9cfa, 0x9cf9, 0x8f5e, 0x003f,
+    0x90ac, 0x89e4, 0x89fa, 0xedab, 0x9cfb, 0x003f, 0x88bd, 0x003f,
+    0x003f, 0x003f, 0x90ca, 0x9cfc, 0x003f, 0xe6c1, 0x9d40, 0x8c81,
+    0x003f, 0x9d41, 0x003f, 0x003f, 0x003f, 0x003f, 0x90ed, 0x003f,
+    0x003f, 0x003f, 0x9d42, 0x003f, 0x003f, 0x003f, 0x9d43, 0x8b59,
+    0x9d44, 0x003f, 0x9d45, 0x9d46, 0x91d5, 0x003f, 0x003f, 0x003f,
+    0x8ccb, 0x003f, 0x003f, 0x96df, 0x003f, 0x003f, 0x003f, 0x965b,
+    0x8f8a, 0x9d47, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x90ee,
+    0xe7bb, 0x94e0, 0x003f, 0x8ee8, 0x003f, 0x8dcb, 0x9d48, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x91c5, 0x003f, 0x95a5, 0x003f, 0x003f,
+    0x91ef, 0x003f, 0x003f, 0x9d4b, 0x003f, 0x003f, 0x9d49, 0x003f,
+    0x9d4c, 0x003f, 0x003f, 0x9d4a, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9d4d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x95af, 0x003f,
+    0x003f, 0x88b5, 0x003f, 0x003f, 0x003f, 0x003f, 0x957d, 0x003f,
+    0x003f, 0x94e1, 0x003f, 0x003f, 0x9d4e, 0x003f, 0x9d51, 0x8fb3,
+    0x8b5a, 0x003f, 0x9d4f, 0x9d56, 0x8fb4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9d50, 0x9463, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x977d, 0x9d52, 0x9d53, 0x9d57, 0x938a, 0x9d54, 0x8d52,
+    0x90dc, 0x003f, 0x003f, 0x9d65, 0x94b2, 0x003f, 0x91f0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xedac, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x94e2, 0x9dab, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x95f8, 0x003f, 0x003f, 0x003f, 0x92ef, 0x003f, 0x003f,
+    0x003f, 0x9695, 0x003f, 0x9d5a, 0x899f, 0x928a, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9d63, 0x003f, 0x003f, 0x9253, 0x9d5d, 0x9d64,
+    0x9d5f, 0x9d66, 0x9d62, 0x003f, 0x9d61, 0x948f, 0x003f, 0x9d5b,
+    0x89fb, 0x9d59, 0x8b91, 0x91f1, 0x9d55, 0x003f, 0x003f, 0x9d58,
+    0x8d53, 0x90d9, 0x003f, 0x8fb5, 0x9d60, 0x9471, 0x003f, 0x003f,
+    0x8b92, 0x8a67, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8a87, 0x9040, 0x9d68, 0x9d6d,
+    0x003f, 0x9d69, 0x003f, 0x8c9d, 0x003f, 0x9d6e, 0x8e41, 0x8d89,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8f45, 0x9d5c,
+    /* 0x6300 .. 0x63ff */
+    0x003f, 0x8e9d, 0x9d6b, 0x003f, 0x003f, 0x003f, 0x003f, 0x8e77,
+    0x9d6c, 0x88c2, 0x003f, 0x003f, 0x9d67, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x92a7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8b93, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8bb2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9d6a,
+    0x88a5, 0x003f, 0x003f, 0x8dc1, 0x003f, 0x003f, 0x003f, 0x9055,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x92f0, 0x003f, 0x003f, 0x94d2, 0x9d70, 0x917d,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x91a8, 0x003f, 0x003f, 0x8e4a, 0x9d71, 0x003f, 0x9d73,
+    0x9d6f, 0x003f, 0x003f, 0x003f, 0x003f, 0x95df, 0x003f, 0x92bb,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x917b, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x95f9,
+    0x8ecc, 0x9d80, 0x003f, 0x9d7e, 0x003f, 0x003f, 0x9098, 0x003f,
+    0x003f, 0x003f, 0x8c9e, 0x003f, 0x003f, 0x003f, 0x9d78, 0x8fb7,
+    0x003f, 0x003f, 0x93e6, 0x9450, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9d76, 0x003f, 0x003f, 0x917c, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8ef6, 0x9d7b, 0x003f, 0x003f, 0x8fb6, 0x003f, 0x9d75, 0x9d7a,
+    0x003f, 0x003f, 0x9472, 0x003f, 0x003f, 0x003f, 0x9d74, 0x003f,
+    0x8c40, 0x003f, 0x003f, 0x8a7c, 0x003f, 0x003f, 0x003f, 0x9d7c,
+    0x97a9, 0x8dcc, 0x9254, 0x9d79, 0x003f, 0x90da, 0x003f, 0x8d54,
+    0x9084, 0x8986, 0x915b, 0x9d77, 0x8b64, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x8c66, 0x003f, 0x92cd, 0x9d7d, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x917e, 0x003f, 0x003f, 0x9d81, 0x003f,
+    0x9d83, 0x003f, 0x003f, 0x91b5, 0x9d89, 0x003f, 0x9d84, 0x003f,
+    0x003f, 0x9d86, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9560,
+    0x92f1, 0x003f, 0x9d87, 0x003f, 0x003f, 0x003f, 0x974b, 0x003f,
+    0x003f, 0x003f, 0x9767, 0x8ab7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x88ac, 0x003f, 0x9d85, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9d82, 0x003f, 0x003f, 0x003f, 0x003f, 0x8af6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8987, 0xedad, 0x9d88, 0x003f,
+    0x003f, 0x003f, 0x9768, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6400 .. 0x64ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9d8c, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x91b9, 0x003f, 0x9d93,
+    0x003f, 0x003f, 0x003f, 0x9d8d, 0x003f, 0x003f, 0x9d8a, 0x9d91,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9d72, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9d8e, 0x003f,
+    0x9d92, 0x003f, 0x003f, 0x003f, 0x94c0, 0x938b, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9d8b, 0x003f, 0x9d8f, 0x003f,
+    0x003f, 0x003f, 0x8c67, 0x003f, 0x003f, 0x003f, 0x8def, 0x003f,
+    0x003f, 0x003f, 0x90db, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9d97, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9345, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xedae, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9d94,
+    0x003f, 0x9680, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9d95,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9d96, 0x003f,
+    0x96cc, 0x003f, 0x90a0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x8c82, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9d9d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x8e54, 0x9d9a, 0x003f, 0x9d99, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9451, 0x003f, 0x003f, 0xedaf, 0x93b3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9350, 0x9d9b, 0x003f, 0x003f,
+    0x003f, 0x9d9c, 0x003f, 0x958f, 0x003f, 0x9464, 0x8e42, 0x003f,
+    0x90ef, 0x003f, 0x966f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8a68, 0x003f, 0x9da3, 0x9d9e, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9769, 0x9da5, 0x003f, 0x003f, 0x9da1, 0x003f, 0x9da2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9180, 0xedb0, 0x003f,
+    0x003f, 0x003f, 0x9da0, 0x003f, 0x9d5e, 0x003f, 0x003f, 0x003f,
+    0x9da4, 0x003f, 0x9d9f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9da9, 0x9daa, 0x9346, 0x9dac, 0x003f, 0x003f, 0x8e43, 0x9da7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8b5b, 0x003f, 0x003f, 0x9dad,
+    0x003f, 0x9da6, 0x9db1, 0x003f, 0x9db0, 0x003f, 0x9daf, 0x003f,
+    0x003f, 0x003f, 0x9db2, 0x003f, 0x003f, 0x9db4, 0x8fef, 0x003f,
+    /* 0x6500 .. 0x65ff */
+    0x9db3, 0x003f, 0x003f, 0x003f, 0x003f, 0x9db7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9db5, 0x003f, 0x003f, 0x003f, 0x9db6, 0x9d90, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9db9, 0x9db8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9d98, 0x9dba, 0x9dae, 0x003f, 0x003f, 0x8e78,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9dbb, 0x9dbc, 0x9dbe, 0x9dbd,
+    0x9dbf, 0x89fc, 0x003f, 0x8d55, 0x003f, 0x003f, 0x95fa, 0x90ad,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8ccc, 0x003f, 0x003f,
+    0x9dc1, 0x003f, 0x003f, 0x003f, 0x003f, 0x9dc4, 0xedb1, 0x9571,
+    0x003f, 0x8b7e, 0x003f, 0x003f, 0x003f, 0x9dc3, 0x9dc2, 0x9473,
+    0x9dc5, 0x8bb3, 0x003f, 0x003f, 0x003f, 0x9dc7, 0x9dc6, 0x003f,
+    0x003f, 0x003f, 0x8ab8, 0x8e55, 0x003f, 0x003f, 0x93d6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8c68, 0x003f, 0x003f, 0x003f,
+    0x9094, 0x003f, 0x9dc8, 0x003f, 0x90ae, 0x9347, 0x003f, 0x957e,
+    0x9dc9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9dca, 0x9dcb, 0x003f, 0x003f, 0x003f, 0x95b6,
+    0x9b7c, 0x90c4, 0x003f, 0x003f, 0x956b, 0x003f, 0x8dd6, 0x003f,
+    0x94e3, 0x94c1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x936c,
+    0x003f, 0x97bf, 0x003f, 0x9dcd, 0x8ece, 0x003f, 0x003f, 0x9dce,
+    0x003f, 0x88b4, 0x003f, 0x003f, 0x8bd2, 0x90cb, 0x003f, 0x9580,
+    0x003f, 0x003f, 0x003f, 0x9dcf, 0x8e61, 0x9266, 0x003f, 0x8e7a,
+    0x9056, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9dd0,
+    0x003f, 0x95fb, 0x003f, 0x003f, 0x8997, 0x8e7b, 0x003f, 0x003f,
+    0x003f, 0x9dd3, 0x003f, 0x9dd1, 0x9dd4, 0x97b7, 0x9dd2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x90f9, 0x9dd5, 0x003f, 0x003f, 0x91b0,
+    0x003f, 0x003f, 0x9dd6, 0x003f, 0x003f, 0x003f, 0x003f, 0x8af8,
+    0x003f, 0x9dd8, 0x003f, 0x9dd7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9dd9, 0x9dda, 0x8af9, 0x003f, 0x003f, 0x93fa, 0x9255, 0x8b8c,
+    0x8e7c, 0x9181, 0x003f, 0x003f, 0x8f7b, 0x88ae, 0x003f, 0x003f,
+    0x003f, 0x9ddb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x89a0, 0x9ddf, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6600 .. 0x66ff */
+    0xedb2, 0x003f, 0x8d56, 0x9dde, 0x003f, 0x003f, 0x8da9, 0x8fb8,
+    0x003f, 0xedb5, 0x9ddd, 0x003f, 0x8fb9, 0x003f, 0x96be, 0x8da8,
+    0x003f, 0x003f, 0x003f, 0x88d5, 0x90cc, 0xedb3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9de4, 0x003f, 0xedb7, 0x90af,
+    0x8966, 0x003f, 0x003f, 0x003f, 0xedb8, 0x8f74, 0x003f, 0x9686,
+    0x8df0, 0x003f, 0x003f, 0x003f, 0x003f, 0x8fba, 0xedb6, 0x90a5,
+    0x003f, 0xed47, 0x003f, 0x003f, 0x9de3, 0x9de1, 0x9de2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xedb4, 0x928b, 0x003f, 0x003f, 0x9e45,
+    0x003f, 0x9de8, 0x8e9e, 0x8d57, 0x9de6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9de7, 0x003f, 0x9057, 0x003f, 0x003f, 0x003f, 0x9de5,
+    0x003f, 0x003f, 0x8e4e, 0x003f, 0x003f, 0x003f, 0x003f, 0xedba,
+    0x003f, 0xedbb, 0x003f, 0x003f, 0x003f, 0x9dea, 0x9de9, 0x9dee,
+    0x003f, 0x003f, 0x9def, 0x003f, 0x9deb, 0xedb9, 0x8a41, 0x9dec,
+    0x9ded, 0x94d3, 0x003f, 0x003f, 0x003f, 0x003f, 0x9581, 0x8c69,
+    0x9df0, 0x003f, 0x003f, 0xedbd, 0x90b0, 0x003f, 0x8fbb, 0x003f,
+    0x003f, 0x003f, 0x9271, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8bc5, 0x003f, 0x9df1, 0x9df5, 0x003f, 0x003f, 0x89c9,
+    0x9df2, 0x9df4, 0x003f, 0x003f, 0x003f, 0x003f, 0x9df3, 0x003f,
+    0x003f, 0x8f8b, 0x003f, 0x003f, 0x003f, 0x003f, 0x9267, 0x88c3,
+    0x9df6, 0xedbe, 0x003f, 0x003f, 0x003f, 0x9df7, 0x003f, 0x003f,
+    0xedbf, 0x003f, 0x92a8, 0x003f, 0x003f, 0x003f, 0x97ef, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x8e62, 0x003f, 0x003f, 0x95e9, 0x003f,
+    0x003f, 0x003f, 0xedc0, 0x003f, 0x965c, 0x003f, 0x003f, 0x003f,
+    0x9e41, 0x9df9, 0x003f, 0x003f, 0x9dfc, 0x003f, 0x9dfb, 0xedc1,
+    0x003f, 0x9df8, 0x003f, 0x003f, 0x9e40, 0x003f, 0x003f, 0x93dc,
+    0x003f, 0x9dfa, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9e42, 0x003f,
+    0x003f, 0x8f8c, 0x9e43, 0x003f, 0x976a, 0x9498, 0x003f, 0x003f,
+    0x9e44, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9e46, 0x003f,
+    0x003f, 0x9e47, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9e48, 0x003f, 0x8bc8, 0x8967, 0x8d58, 0x9e49, 0x003f, 0x9e4a,
+    0x8f91, 0x9182, 0xedc2, 0xed4a, 0x99d6, 0x915d, 0x915c, 0x91d6,
+    /* 0x6700 .. 0x67ff */
+    0x8dc5, 0x003f, 0x003f, 0x98f0, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8c8e, 0x974c, 0x003f, 0x95fc, 0x003f, 0x959e, 0xedc3, 0x9e4b,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8df1, 0x92bd, 0x9e4c, 0x984e,
+    0x003f, 0x003f, 0x003f, 0x965d, 0x003f, 0x92a9, 0x9e4d, 0x8afa,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9e4e, 0x9e4f,
+    0x96d8, 0x003f, 0x96a2, 0x9696, 0x967b, 0x8e44, 0x9e51, 0x003f,
+    0x003f, 0x8ee9, 0x003f, 0x003f, 0x9670, 0x003f, 0x9e53, 0x9e56,
+    0x9e55, 0x003f, 0x8af7, 0x003f, 0x003f, 0x8b80, 0x003f, 0x9e52,
+    0x003f, 0x9e54, 0x003f, 0x003f, 0x003f, 0x003f, 0x9e57, 0x003f,
+    0x003f, 0x9099, 0x003f, 0x003f, 0x003f, 0x003f, 0x979b, 0x88c7,
+    0x8dde, 0x91ba, 0x003f, 0x8edb, 0x003f, 0x003f, 0x8ff1, 0x003f,
+    0x003f, 0x9e5a, 0x003f, 0x003f, 0x936d, 0x003f, 0x9e58, 0x91a9,
+    0x9e59, 0x8ff0, 0x96db, 0x9e5b, 0x9e5c, 0x9788, 0xedc5, 0x003f,
+    0x003f, 0x003f, 0x9e61, 0x003f, 0x003f, 0x8d59, 0x003f, 0x9474,
+    0x9e5e, 0x938c, 0x9ddc, 0x9de0, 0x003f, 0x8b6e, 0x003f, 0x9466,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9e60, 0x003f, 0x8fbc, 0x94c2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9e66, 0x003f, 0x94f8,
+    0x003f, 0x9e5d, 0x003f, 0x9e63, 0x9e62, 0x003f, 0x003f, 0x003f,
+    0x90cd, 0x003f, 0x003f, 0x003f, 0x003f, 0x968d, 0x003f, 0x97d1,
+    0x003f, 0x003f, 0x9687, 0x003f, 0x89ca, 0x8e7d, 0x003f, 0x003f,
+    0x9867, 0x9e65, 0x9095, 0x003f, 0x003f, 0x003f, 0x9e64, 0x003f,
+    0x003f, 0x9e5f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8ccd,
+    0x003f, 0x003f, 0x003f, 0x9e6b, 0x9e69, 0x003f, 0x89cb, 0x9e67,
+    0x9e6d, 0x9e73, 0x003f, 0xedc6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xedc8, 0x91c6, 0x003f, 0x003f, 0x95bf, 0x003f, 0x9e75, 0x003f,
+    0x003f, 0x003f, 0x9541, 0x003f, 0x003f, 0x003f, 0x9e74, 0x9490,
+    0x965e, 0x8ab9, 0x003f, 0x90f5, 0x8f5f, 0x003f, 0x003f, 0x003f,
+    0x92d1, 0x003f, 0x974d, 0x003f, 0x003f, 0x9e70, 0x9e6f, 0x003f,
+    0x003f, 0x003f, 0x9e71, 0x003f, 0x9e6e, 0x003f, 0x003f, 0x9e76,
+    0x003f, 0x9e6c, 0x003f, 0x003f, 0x9e6a, 0x003f, 0x9e72, 0x9e68,
+    0x003f, 0x928c, 0x003f, 0x96f6, 0x8ec4, 0x8df2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x8db8, 0x003f, 0x003f, 0x968f, 0x8a60,
+    /* 0x6800 .. 0x68ff */
+    0x003f, 0xedc9, 0x92cc, 0x93c8, 0x8968, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x90f0, 0x003f, 0x003f, 0x90b2, 0x8c49,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9e78, 0x003f,
+    0x003f, 0x8d5a, 0x8a9c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9e7a, 0x8a94, 0x9e81, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9e7d, 0x003f, 0x90f1, 0x003f, 0x003f, 0x003f,
+    0x8a6a, 0x8daa, 0x003f, 0x003f, 0x8a69, 0x8dcd, 0x003f, 0x003f,
+    0x9e7b, 0x8c85, 0x8c6a, 0x938d, 0xedca, 0x003f, 0x9e79, 0x003f,
+    0x88c4, 0x003f, 0x003f, 0x003f, 0x003f, 0x9e7c, 0x9e7e, 0x003f,
+    0x8bcb, 0x8c4b, 0xedc7, 0x8aba, 0x8b6a, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9e82, 0x003f, 0x003f, 0x8df7, 0x9691, 0x003f, 0x8e56,
+    0x003f, 0x003f, 0x003f, 0x9e83, 0x003f, 0x003f, 0x003f, 0x954f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9e8f, 0x003f, 0x89b1, 0x9e84,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9e95, 0x9e85,
+    0x003f, 0x97c0, 0x003f, 0x9e8c, 0x003f, 0x947e, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9e94, 0x003f, 0x9e87,
+    0x003f, 0x003f, 0x003f, 0x88b2, 0x9e89, 0x003f, 0x003f, 0x8d5b,
+    0x003f, 0x003f, 0x003f, 0x9e8b, 0x003f, 0x9e8a, 0x003f, 0x9e86,
+    0x9e91, 0x003f, 0x8fbd, 0x003f, 0x003f, 0x003f, 0x9aeb, 0x8ce6,
+    0x979c, 0x003f, 0x003f, 0x003f, 0x003f, 0x9e88, 0x003f, 0x92f2,
+    0x8a42, 0x8dab, 0x003f, 0x9e80, 0x003f, 0x9e90, 0x8a81, 0x003f,
+    0x003f, 0x9e8e, 0x9e92, 0x003f, 0x938e, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8afc, 0x003f, 0x9eb0, 0x003f,
+    0xed48, 0x96c7, 0x9e97, 0x8afb, 0x003f, 0x9e9e, 0x003f, 0xedcb,
+    0x003f, 0x003f, 0x965f, 0x003f, 0x9e9f, 0x9ea1, 0x003f, 0x9ea5,
+    0x9e99, 0x003f, 0x9249, 0x003f, 0x003f, 0x003f, 0x003f, 0x938f,
+    0x9ea9, 0x9e9c, 0x003f, 0x9ea6, 0x003f, 0x003f, 0x003f, 0x9ea0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9058, 0x9eaa,
+    0x003f, 0x003f, 0x90b1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9ea8, 0x8abb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6900 .. 0x69ff */
+    0x986f, 0x9e96, 0x003f, 0x003f, 0x9ea4, 0x88d6, 0x003f, 0x003f,
+    0x9e98, 0x003f, 0x003f, 0x96b8, 0x9e9d, 0x9041, 0x92c5, 0x9e93,
+    0x003f, 0x003f, 0x9ea3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x909a, 0x9ead, 0x8a91, 0x8c9f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9eaf, 0x9e9a, 0x9eae, 0x003f, 0x9ea7, 0x9e9b, 0x003f,
+    0x9eab, 0x003f, 0x9eac, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9ebd, 0x003f, 0x003f, 0x003f, 0x93cc, 0x003f, 0x9ea2, 0x003f,
+    0x003f, 0x9eb9, 0x003f, 0x003f, 0x003f, 0x9ebb, 0x003f, 0x92d6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x976b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9596, 0x9eb6, 0x91c8, 0x003f, 0x003f,
+    0x003f, 0x9ebc, 0x915e, 0x003f, 0x9eb3, 0x9ec0, 0x9ebf, 0x003f,
+    0x93ed, 0x9ebe, 0x93e8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xedcd, 0x003f, 0x9ec2, 0x9eb5, 0x003f, 0x8bc6, 0x9eb8, 0x8f7c,
+    0x003f, 0x003f, 0x003f, 0x9480, 0x9eba, 0x8bc9, 0x003f, 0x9eb2,
+    0x9eb4, 0x9eb1, 0x003f, 0x003f, 0x984f, 0x8a79, 0x9eb7, 0x003f,
+    0x003f, 0x9ec1, 0x8a54, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x8de5, 0x003f, 0x003f, 0x003f, 0x897c, 0x003f,
+    0x003f, 0x9ed2, 0x003f, 0x003f, 0x9850, 0x9ed5, 0x003f, 0x003f,
+    0xedcf, 0x003f, 0x003f, 0x9059, 0x9ed4, 0x003f, 0x003f, 0x003f,
+    0x9ed3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9ed0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9ec4, 0x003f,
+    0x003f, 0x9ee1, 0x9ec3, 0x003f, 0x9ed6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9ece, 0x003f, 0x003f, 0x9ec9, 0x9ec6,
+    0x003f, 0x9ec7, 0x003f, 0x9ecf, 0x003f, 0x003f, 0x003f, 0xeaa0,
+    0x003f, 0x003f, 0x9ecc, 0x8d5c, 0x92c6, 0x9184, 0x9eca, 0x003f,
+    0x9ec5, 0x003f, 0x003f, 0x9ec8, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x976c, 0x968a, 0x003f, 0x003f, 0x003f, 0x9ecd, 0x9ed7, 0x003f,
+    0x003f, 0x003f, 0xedd0, 0x003f, 0x003f, 0x003f, 0x003f, 0x9edf,
+    0x9ed8, 0x003f, 0x003f, 0x9ee5, 0x003f, 0x9ee3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9ede, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9edd, 0x003f, 0x92ce, 0x003f, 0x9185, 0x003f, 0x9edb,
+    /* 0x6a00 .. 0x6aff */
+    0x003f, 0x003f, 0x9ed9, 0x003f, 0x003f, 0x9ee0, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9ee6, 0x94f3, 0x9eec, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9ee7, 0x9eea, 0x9ee4, 0x003f, 0x003f, 0x9294,
+    0x003f, 0x9557, 0x003f, 0x9eda, 0x003f, 0x003f, 0x9ee2, 0x8fbe,
+    0x003f, 0x96cd, 0x9ef6, 0x9ee9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8ca0, 0x89a1, 0x8a7e, 0x003f, 0x003f, 0x9ed1, 0x003f,
+    0xedd1, 0x003f, 0x003f, 0x003f, 0x003f, 0x8fbf, 0x9eee, 0x003f,
+    0x9ef5, 0x8ef7, 0x8a92, 0x003f, 0x003f, 0x924d, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9eeb, 0x003f, 0xedd3, 0x9ef0,
+    0x9ef4, 0x003f, 0x003f, 0x8bb4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8b6b, 0x9ef2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8b40,
+    0x003f, 0x93c9, 0x9ef1, 0x003f, 0x003f, 0x003f, 0x9ef3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xedd2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9eed, 0xedd4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9eef, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xedd5, 0x8a80,
+    0x9268, 0x003f, 0x003f, 0x003f, 0x9efa, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9ef8, 0x8ce7, 0x003f,
+    0x9ef7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9f40,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9e77, 0x003f, 0x003f, 0x003f,
+    0x9ef9, 0x003f, 0x9efb, 0x9efc, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9f4b, 0x003f, 0x9f47, 0x003f, 0x9e8d, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9f46, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9f45, 0x003f, 0x003f, 0x9f42, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9ee8, 0x9f44, 0x9f43, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9f49, 0x003f, 0x9845, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9f4c, 0x8bf9, 0x003f, 0x003f, 0x9f48, 0x9f4a,
+    0x003f, 0x003f, 0xedd6, 0x003f, 0xedd7, 0x003f, 0x003f, 0x003f,
+    0x94a5, 0x003f, 0x9f4d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9f51, 0x9f4e, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6b00 .. 0x6bff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9793, 0x9f4f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9edc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9f52, 0x003f, 0x003f, 0x003f, 0x9f53, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8954, 0x003f, 0x9f55,
+    0x8c87, 0x8e9f, 0x003f, 0x8bd3, 0x003f, 0x003f, 0x003f, 0x89a2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x977e, 0x003f, 0x003f, 0x003f, 0x003f, 0x9f57,
+    0x9f56, 0x9f59, 0x8b5c, 0x003f, 0x003f, 0x8bd4, 0x8abc, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9f5c, 0x003f, 0x003f, 0x003f, 0x9f5b,
+    0x003f, 0x9f5d, 0x003f, 0x003f, 0x89cc, 0x003f, 0x9256, 0x003f,
+    0x9f5e, 0x003f, 0x003f, 0x8abd, 0x9f60, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9f5f, 0x003f, 0x9f61, 0x003f, 0x003f, 0x003f, 0x9f62,
+    0x003f, 0x9f63, 0x8e7e, 0x90b3, 0x8d9f, 0x003f, 0x9590, 0x003f,
+    0x003f, 0x95e0, 0x9863, 0x003f, 0x003f, 0x003f, 0x003f, 0x8e95,
+    0x003f, 0x003f, 0x003f, 0x8dce, 0x97f0, 0x003f, 0x003f, 0x003f,
+    0x9f64, 0x9f65, 0x003f, 0x8e80, 0x003f, 0x003f, 0x003f, 0x9f66,
+    0x9f67, 0x003f, 0x003f, 0x9f69, 0x9f68, 0x003f, 0x9677, 0x003f,
+    0x003f, 0x8f7d, 0x8eea, 0x8e63, 0x003f, 0x9f6a, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9f6c, 0x9042, 0x003f,
+    0x9f6b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9f6d, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9f6e, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9f6f, 0x9f70, 0x003f, 0x003f, 0x003f, 0x9f71,
+    0x003f, 0x9f73, 0x9f72, 0x9f74, 0x89a3, 0x9269, 0x003f, 0x9f75,
+    0x003f, 0x003f, 0x8e45, 0x8a6b, 0x9f76, 0x003f, 0x003f, 0x9361,
+    0x9aca, 0x003f, 0x003f, 0x003f, 0x003f, 0x8b42, 0x9f77, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9f78, 0x003f, 0x95ea, 0x9688, 0x003f,
+    0x003f, 0x003f, 0x93c5, 0x9f79, 0x94e4, 0x003f, 0xedd8, 0x003f,
+    0x94f9, 0x003f, 0x003f, 0x96d1, 0x003f, 0x003f, 0x003f, 0x9f7a,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9f7c, 0x9f7b, 0x003f, 0x003f, 0x9f7e,
+    0x003f, 0x003f, 0x003f, 0x9f7d, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6c00 .. 0x6cff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9f81, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8e81,
+    0x003f, 0x96af, 0x003f, 0x9f82, 0x9f83, 0x003f, 0x003f, 0x8b43,
+    0x003f, 0x003f, 0x003f, 0x9f84, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9f86, 0x9f85, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9085, 0x003f, 0x003f, 0x9558,
+    0x8969, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x94c3, 0xedd9,
+    0x92f3, 0x8f60, 0x8b81, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x94c4, 0x003f,
+    0x8eac, 0x003f, 0x003f, 0x003f, 0x003f, 0x9f88, 0x003f, 0x8abe,
+    0x003f, 0x003f, 0x8998, 0x003f, 0xedda, 0x93f0, 0x9f87, 0x8d5d,
+    0x9272, 0x003f, 0x9f89, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9f91, 0x003f, 0x9f8a, 0x003f, 0x003f, 0x003f, 0x003f, 0xeddc,
+    0x91bf, 0x003f, 0x8b82, 0x9f92, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x8c88, 0x003f, 0x003f, 0x8b44, 0x9f90, 0x003f,
+    0x003f, 0x9f8e, 0x9f8b, 0x9780, 0x003f, 0x003f, 0xeddb, 0x003f,
+    0x92be, 0x003f, 0x003f, 0x003f, 0x93d7, 0x9f8c, 0x003f, 0x003f,
+    0x9f94, 0x003f, 0x9f93, 0x8c42, 0x003f, 0x003f, 0x89ab, 0x003f,
+    0x003f, 0x8db9, 0x9f8d, 0x9f8f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9676, 0x91f2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9697, 0x003f, 0x003f, 0x9f9c, 0x003f,
+    0x003f, 0x9f9d, 0x003f, 0x89cd, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x95a6, 0x96fb, 0x9f9f, 0x8ea1, 0x8fc0, 0x9f98, 0x9f9e, 0x8988,
+    0x003f, 0x8bb5, 0x003f, 0x003f, 0x9f95, 0x9f9a, 0x003f, 0x003f,
+    0x003f, 0x90f2, 0x9491, 0x003f, 0x94e5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9f97, 0x003f, 0x9640, 0x003f, 0x9f99,
+    0x003f, 0x9fa2, 0xeddd, 0x9fa0, 0x003f, 0x9f9b, 0x003f, 0x003f,
+    0x003f, 0x9641, 0x9467, 0x8b83, 0x003f, 0x9344, 0x003f, 0x003f,
+    0x928d, 0x003f, 0x9fa3, 0x003f, 0x003f, 0x003f, 0x003f, 0x9fa1,
+    0x91d7, 0x9f96, 0x003f, 0x896a, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6d00 .. 0x6dff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0xedde, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x976d, 0x9fae, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9fad, 0x003f, 0x003f, 0x003f, 0x003f, 0x90f4,
+    0x003f, 0x9faa, 0x003f, 0x978c, 0x003f, 0x003f, 0x93b4, 0x9fa4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x92c3, 0x003f, 0x003f,
+    0x003f, 0x896b, 0x8d5e, 0x9fa7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x8f46, 0x9fac, 0x003f, 0x9fab, 0x9fa6, 0x003f,
+    0x9fa9, 0x003f, 0x003f, 0x8a88, 0x003f, 0x9fa8, 0x9468, 0x003f,
+    0x003f, 0x97ac, 0x003f, 0x003f, 0x8ff2, 0x90f3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9fb4, 0x9fb2, 0x003f, 0x956c, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9faf, 0x9fb1, 0x003f, 0x8959, 0x003f,
+    0x003f, 0x8d5f, 0x9851, 0x003f, 0x8a5c, 0x003f, 0x9582, 0xede0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9781, 0x003f, 0x003f, 0x8a43,
+    0x905a, 0x9fb3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9fb8, 0x003f, 0xeddf,
+    0x8fc1, 0x003f, 0x003f, 0x003f, 0x974f, 0x003f, 0x9fb5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9fb0, 0x003f, 0x9fb6, 0xede1, 0x003f,
+    0x003f, 0x97dc, 0x003f, 0x9393, 0x93c0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xede2, 0x003f, 0x003f, 0x8a55,
+    0x003f, 0x003f, 0x8974, 0x003f, 0x003f, 0x9fbc, 0x003f, 0x003f,
+    0x9fbf, 0x003f, 0x003f, 0x003f, 0x97c1, 0x003f, 0x003f, 0x003f,
+    0x9784, 0x003f, 0x003f, 0x003f, 0x003f, 0x9fc6, 0x9fc0, 0x9fbd,
+    0x003f, 0x003f, 0x003f, 0x97d2, 0x9fc3, 0x003f, 0x003f, 0xede3,
+    0x003f, 0x8f69, 0x9fc5, 0x003f, 0x003f, 0x9fca, 0x003f, 0x003f,
+    0x9391, 0x9fc8, 0x003f, 0x003f, 0x003f, 0x003f, 0x9fc2, 0x003f,
+    0x003f, 0x9257, 0x003f, 0x003f, 0x9fc9, 0x003f, 0x9fbe, 0x003f,
+    0x9fc4, 0x003f, 0x9fcb, 0x88fa, 0x9fc1, 0x003f, 0x9fcc, 0x003f,
+    0x003f, 0x905b, 0xede5, 0x8f7e, 0x003f, 0x95a3, 0x003f, 0x8dac,
+    0xede4, 0x9fb9, 0x9fc7, 0x9359, 0xede6, 0x003f, 0x003f, 0x003f,
+    /* 0x6e00 .. 0x6eff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x90b4, 0x003f, 0x8a89,
+    0x8dcf, 0x8fc2, 0x9fbb, 0x8f61, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x8c6b, 0x003f, 0x9fba, 0x003f, 0x003f,
+    0x003f, 0x9fd0, 0x8f8d, 0x8cb8, 0x003f, 0x9fdf, 0x003f, 0x9fd9,
+    0x8b94, 0x936e, 0x003f, 0x9fd4, 0x9fdd, 0x88ad, 0x8951, 0xede9,
+    0x003f, 0x89b7, 0x003f, 0x9fd6, 0x91aa, 0x9fcd, 0x9fcf, 0x8d60,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9fe0, 0xede7, 0x9fdb, 0x003f, 0xedea, 0x003f, 0x9fd3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9fda, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x96a9, 0x003f, 0x003f, 0x9fd8, 0x9fdc, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8cce, 0x003f,
+    0x8fc3, 0x003f, 0x003f, 0x9258, 0xede8, 0x003f, 0x003f, 0x9fd2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x974e,
+    0x003f, 0x003f, 0x003f, 0x9fd5, 0x003f, 0x003f, 0x9fce, 0x9392,
+    0x003f, 0x003f, 0x9fd1, 0x003f, 0x003f, 0x003f, 0x9fd7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9870, 0x8ebc,
+    0x969e, 0x003f, 0x9fe1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x94ac, 0x003f, 0x003f, 0x9fed,
+    0x8cb9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8f80, 0x003f,
+    0x9fe3, 0x003f, 0x003f, 0x003f, 0x97ad, 0x8d61, 0x003f, 0x9ff0,
+    0x003f, 0x003f, 0x88ec, 0x003f, 0x003f, 0x9fee, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9fe2, 0x003f, 0x003f, 0x003f, 0x003f, 0x9fe8,
+    0x003f, 0x003f, 0x9fea, 0x003f, 0x003f, 0x003f, 0x976e, 0x9fe5,
+    0x003f, 0x003f, 0x934d, 0x003f, 0x003f, 0x9fe7, 0x003f, 0xedeb,
+    0x003f, 0x003f, 0x9fef, 0x003f, 0x9fe9, 0x96c5, 0x003f, 0x003f,
+    0x003f, 0x9fe4, 0x003f, 0x8ea0, 0x9ffc, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8a8a, 0x003f, 0x9fe6, 0x9feb, 0x9fec, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x91ea, 0x91d8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9ff4, 0x003f, 0x003f, 0x9ffa,
+    0x003f, 0x003f, 0x9ff8, 0x003f, 0x9348, 0x003f, 0x003f, 0xe042,
+    0x9ff5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9ff6, 0x9fde,
+    /* 0x6f00 .. 0x6fff */
+    0x003f, 0x8b99, 0x9559, 0x003f, 0x003f, 0x003f, 0x8ebd, 0x003f,
+    0x003f, 0x8d97, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9852,
+    0x003f, 0x9ff2, 0x003f, 0xe041, 0x8989, 0x9186, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9499, 0x003f, 0x8abf, 0x97f8, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x969f, 0x92d0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9ff9, 0x9ffb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9151, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe040, 0x9ff7,
+    0x003f, 0x9ff1, 0x003f, 0x003f, 0x003f, 0x8ac1, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8c89, 0x003f, 0x003f, 0x003f,
+    0xe04e, 0x003f, 0x003f, 0xe049, 0x90f6, 0x003f, 0x003f, 0x8a83,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8f81, 0x003f, 0xe052, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe04b, 0x92aa, 0xe048,
+    0x92d7, 0x003f, 0x003f, 0x003f, 0xe06b, 0x003f, 0x003f, 0x003f,
+    0xe045, 0x003f, 0xe044, 0x003f, 0xe04d, 0x003f, 0x003f, 0x003f,
+    0xe047, 0xe046, 0xe04c, 0x003f, 0x909f, 0x003f, 0xe043, 0x003f,
+    0xedec, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe04f, 0x003f,
+    0x003f, 0xe050, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8ac0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe055, 0x003f, 0xe054, 0xe056, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe059, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9362, 0x003f, 0xe053, 0x003f, 0xeded, 0x003f, 0x003f,
+    0x003f, 0xe057, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8c83, 0x91f7, 0xe051, 0x945a, 0x003f, 0x003f, 0xe058, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe05d, 0xe05b, 0x003f, 0x003f,
+    0xe05e, 0x003f, 0x003f, 0xe061, 0x003f, 0x003f, 0x003f, 0xe05a,
+    0x8d8a, 0x9447, 0x003f, 0x003f, 0x9fb7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9794, 0xe05c, 0x003f, 0xe060, 0x91f3,
+    0x003f, 0xe05f, 0x003f, 0xe04a, 0x003f, 0xedee, 0xe889, 0x003f,
+    0x003f, 0x003f, 0xe064, 0x003f, 0x003f, 0x003f, 0xe068, 0x003f,
+    /* 0x7000 .. 0x70ff */
+    0x003f, 0xe066, 0x003f, 0x003f, 0x003f, 0xedef, 0x003f, 0xedf0,
+    0x003f, 0xe062, 0x003f, 0xe063, 0x003f, 0x003f, 0x003f, 0xe067,
+    0x003f, 0xe065, 0x003f, 0x003f, 0x003f, 0x956d, 0x003f, 0x003f,
+    0xe06d, 0x003f, 0xe06a, 0xe069, 0x003f, 0xe06c, 0x93d2, 0xe06e,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9295, 0x91eb,
+    0xedf1, 0x003f, 0x003f, 0x003f, 0x90a3, 0x003f, 0x003f, 0x003f,
+    0xe06f, 0x003f, 0xe071, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe070, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9ff3, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe072, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x93e5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe073, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x89ce, 0x003f, 0x003f, 0x003f, 0x9394,
+    0x8a44, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8b84, 0x003f, 0x003f, 0x003f, 0x8edc, 0x8dd0, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xedf2, 0x003f, 0x003f,
+    0x003f, 0x9846, 0x9086, 0x003f, 0x003f, 0x003f, 0x898a, 0x003f,
+    0x003f, 0x003f, 0xe075, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe074, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xedf3, 0xe078, 0x9259, 0xe07b, 0xe076,
+    0x003f, 0x003f, 0x003f, 0xe07a, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe079, 0x935f, 0x88d7, 0xed46, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x97f3, 0x003f, 0x003f, 0xe07d, 0x003f, 0x003f, 0x003f, 0x8947,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe080, 0x003f, 0x003f, 0x003f, 0xe07e, 0x003f, 0xe07c,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe077, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9642, 0x003f, 0x003f, 0x003f, 0xe082, 0x003f, 0x003f,
+    /* 0x7100 .. 0x71ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0xedf5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe081, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xedf4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x898b, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe084, 0x95b0, 0x003f, 0xe083, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x96b3, 0x003f, 0x003f, 0x003f, 0x003f, 0x8fc5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9152, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8fc4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xedf7, 0xedf8,
+    0x003f, 0x97f9, 0x003f, 0x003f, 0xe08a, 0x003f, 0x90f7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe086, 0xe08b, 0x003f,
+    0x003f, 0x898c, 0x003f, 0x003f, 0xedf6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe089, 0x003f, 0x9481, 0xe085, 0xe088, 0x8fc6,
+    0x003f, 0x94cf, 0x003f, 0x003f, 0xe08c, 0x003f, 0x8ecf, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x90f8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe08f, 0x003f, 0x003f, 0x003f,
+    0xe087, 0x003f, 0x8c46, 0x003f, 0x003f, 0x003f, 0x003f, 0xe08d,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x976f, 0xe090, 0x003f, 0x003f,
+    0x003f, 0xeaa4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8f6e,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe091, 0x003f, 0x003f, 0x003f, 0xe092, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x944d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe094, 0x003f, 0x003f, 0x003f, 0x003f, 0xe095, 0x003f,
+    0x003f, 0xedfa, 0x003f, 0x9452, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9395, 0xe097, 0x003f, 0x003f, 0x003f, 0x003f, 0xe099, 0x003f,
+    0x97d3, 0x003f, 0xe096, 0x003f, 0xe098, 0x898d, 0x003f, 0xe093,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9a7a,
+    0xe09a, 0x003f, 0x003f, 0x003f, 0x003f, 0x9187, 0x8e57, 0xe09c,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe09b, 0x9043, 0x99d7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe09d, 0x003f, 0x003f,
+    0x003f, 0xe09f, 0x003f, 0xe08e, 0xe09e, 0x003f, 0xedfb, 0xe0a0,
+    /* 0x7200 .. 0x72ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x949a, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0a1, 0x003f, 0x003f,
+    0xe0a2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe0a3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe0a4, 0x003f, 0x92dc, 0x003f, 0xe0a6, 0xe0a5, 0x003f, 0x003f,
+    0xe0a7, 0x003f, 0xe0a8, 0x003f, 0x003f, 0x8edd, 0x9583, 0x003f,
+    0x003f, 0x003f, 0x96ea, 0xe0a9, 0xe0aa, 0x9175, 0x8ea2, 0xe0ab,
+    0xe0ac, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0ad, 0x95d0,
+    0x94c5, 0x003f, 0x003f, 0xe0ae, 0x9476, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x92ab, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe0af, 0x89e5, 0x003f, 0x8b8d, 0x003f, 0x96c4, 0x003f, 0x96b4,
+    0x003f, 0x89b2, 0x9853, 0x003f, 0x003f, 0x003f, 0x003f, 0x9671,
+    0x003f, 0x95a8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x90b5, 0x003f, 0xe0b0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x93c1, 0x003f, 0x003f, 0x003f, 0x8ca1, 0xe0b1, 0x003f,
+    0x8dd2, 0xe0b3, 0xe0b2, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0b4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe0b5, 0x003f, 0x003f, 0x003f, 0xe0b6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8b5d, 0x003f, 0xe0b7, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0b8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8ca2, 0x003f, 0x003f, 0x94c6,
+    0x003f, 0xedfc, 0xe0ba, 0x003f, 0x003f, 0x003f, 0x8ff3, 0x003f,
+    0x003f, 0xe0b9, 0x003f, 0x003f, 0x003f, 0x003f, 0xee40, 0x003f,
+    0x003f, 0x003f, 0x8bb6, 0xe0bb, 0xe0bd, 0x003f, 0xe0bc, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0be, 0x003f,
+    0x8ccf, 0x003f, 0xe0bf, 0x003f, 0x003f, 0x003f, 0x003f, 0x8be7,
+    0x003f, 0x915f, 0x003f, 0x8d9d, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe0c1, 0xe0c2, 0xe0c0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8eeb, 0x003f, 0x003f, 0x93c6, 0x8bb7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0c4,
+    0x924b, 0xe0c3, 0x003f, 0x003f, 0x9854, 0x9482, 0x003f, 0x003f,
+    /* 0x7300 .. 0x73ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe0c7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0c9, 0xe0c6,
+    0x003f, 0x003f, 0x003f, 0x96d2, 0xe0c8, 0xe0ca, 0x003f, 0x97c2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xee41, 0xe0ce, 0x003f, 0x003f,
+    0x003f, 0xe0cd, 0x9296, 0x944c, 0x003f, 0x003f, 0x8ca3, 0xe0cc,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe0cb, 0x003f, 0x9750, 0x9751,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0cf, 0x898e,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8d96, 0x8e82, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0d0, 0xe0d1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0d3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x8f62, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe0d5, 0x003f, 0xe0d4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe0d6, 0x003f, 0x8a6c, 0x003f, 0x003f, 0xe0d8, 0x003f, 0xee43,
+    0xe0d7, 0x003f, 0xe0da, 0xe0d9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8cba, 0x003f, 0x003f, 0x97a6,
+    0x003f, 0x8bca, 0x003f, 0x89a4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8be8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8adf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x97e6, 0xe0dc, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe0de, 0x003f, 0xee44, 0x003f, 0x003f,
+    0xe0df, 0x003f, 0x89cf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe0db, 0xee45, 0x8e58, 0x003f, 0x003f, 0x92bf, 0xe0dd, 0x003f,
+    0x003f, 0x003f, 0xee48, 0x003f, 0x003f, 0x003f, 0xee46, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0e2, 0x003f,
+    0x8eec, 0x003f, 0x003f, 0xee47, 0x003f, 0xe0e0, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x8c5d, 0x003f, 0x003f, 0x94c7, 0xe0e1, 0x003f,
+    0x003f, 0xe0fc, 0x003f, 0x003f, 0x003f, 0xee4a, 0x003f, 0x003f,
+    0xe0e7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8cbb, 0x003f,
+    /* 0x7400 .. 0x74ff */
+    0x003f, 0x003f, 0x003f, 0x8b85, 0x003f, 0xe0e4, 0x979d, 0xee49,
+    0x003f, 0x97ae, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x91f4, 0x003f, 0x003f, 0xe0e6, 0xee4b, 0x003f,
+    0x003f, 0xee4d, 0xee4c, 0x003f, 0x003f, 0x003f, 0xee4e, 0x003f,
+    0x003f, 0x003f, 0xe0e8, 0x97d4, 0x8bd5, 0x94fa, 0x9469, 0x003f,
+    0x003f, 0x003f, 0xe0e9, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0eb,
+    0x003f, 0xe0ee, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0ea, 0x003f, 0x003f,
+    0x003f, 0xe0ed, 0x8ce8, 0x896c, 0xe0ef, 0x003f, 0x9090, 0xe0ec,
+    0x97da, 0x003f, 0xee4f, 0xe0f2, 0xeaa2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe0f0, 0xe0f3, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0e5,
+    0xe0f1, 0x003f, 0x003f, 0x8dba, 0x003f, 0x003f, 0xe0f4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0f5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x979e, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xee50, 0x003f, 0xe0f6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0f7, 0xee51,
+    0x003f, 0x003f, 0xe0e3, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0f8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8ac2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8ea3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe0f9, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0fa,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe0fb, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x895a, 0x003f, 0x003f, 0x003f,
+    0xe140, 0x003f, 0x955a, 0xe141, 0x003f, 0x003f, 0x8aa2, 0xe142,
+    0x003f, 0xe143, 0x003f, 0x003f, 0x003f, 0x003f, 0xe144, 0x003f,
+    0xe146, 0xe147, 0xe145, 0x003f, 0x003f, 0x003f, 0x9572, 0xe149,
+    0xe148, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x7500 .. 0x75ff */
+    0x003f, 0xee52, 0x003f, 0xe14b, 0xe14a, 0xe14c, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe14d, 0xe14f, 0xe14e, 0x003f,
+    0x003f, 0x8d99, 0x003f, 0xe151, 0x003f, 0xe150, 0x003f, 0x003f,
+    0x8ac3, 0x003f, 0x9072, 0x003f, 0x935b, 0x003f, 0xe152, 0x90b6,
+    0x003f, 0x003f, 0x003f, 0x8e59, 0x003f, 0x8999, 0xe153, 0x003f,
+    0x9770, 0x003f, 0x003f, 0x95e1, 0xe154, 0x003f, 0x003f, 0xed8c,
+    0x9363, 0x9752, 0x8d62, 0x905c, 0x003f, 0x003f, 0x003f, 0x926a,
+    0x99b2, 0x003f, 0x92ac, 0x89e6, 0xe155, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe156, 0x003f, 0xe15b, 0x003f,
+    0x003f, 0xe159, 0xe158, 0x9dc0, 0x8a45, 0xe157, 0x003f, 0x88d8,
+    0x003f, 0x94a8, 0x003f, 0x003f, 0x94c8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x97af, 0xe15c, 0xe15a, 0x927b, 0x90a4, 0x003f, 0x003f,
+    0x94a9, 0x003f, 0x954c, 0x003f, 0xe15e, 0x97aa, 0x8c6c, 0xe15f,
+    0x003f, 0xe15d, 0x94d4, 0xe160, 0x003f, 0xe161, 0x003f, 0xee53,
+    0x88d9, 0x003f, 0x003f, 0x8ff4, 0xe166, 0x003f, 0xe163, 0x93eb,
+    0xe162, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8b45,
+    0x003f, 0x003f, 0xe169, 0x003f, 0x003f, 0x003f, 0xe164, 0xe165,
+    0x003f, 0xe168, 0xe167, 0x9544, 0x003f, 0x003f, 0x9161, 0x9160,
+    0x003f, 0x8b5e, 0x003f, 0x003f, 0xe16a, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe16b, 0x003f, 0x003f, 0xe16c, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe16e, 0x003f, 0xe16d, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x8975, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe176, 0x94e6, 0xe170, 0x003f, 0xe172, 0x003f, 0x003f,
+    0xe174, 0x905d, 0x003f, 0x003f, 0xe175, 0xe173, 0x8ebe, 0x003f,
+    0x003f, 0x003f, 0xe16f, 0xe171, 0x003f, 0x9561, 0x003f, 0x8fc7,
+    0x003f, 0x003f, 0xe178, 0x003f, 0x003f, 0xe177, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe179, 0x003f, 0x8ea4, 0x8dad, 0x003f, 0x003f,
+    0x9397, 0xe17a, 0x003f, 0x92c9, 0x003f, 0x003f, 0xe17c, 0x003f,
+    0x003f, 0x003f, 0x979f, 0xe17b, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9189, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe182, 0x003f, 0xe184, 0xe185, 0x9273, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe183, 0x003f, 0xe180, 0x003f, 0xe17d, 0xe17e,
+    /* 0x7600 .. 0x76ff */
+    0x003f, 0xe181, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe188, 0x003f, 0xe186, 0x003f, 0xe187, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe189,
+    0xe18b, 0xe18c, 0xe18d, 0x003f, 0xe18e, 0x003f, 0x003f, 0xe18a,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe190, 0x003f, 0x003f, 0x003f, 0xe18f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe191, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x97c3, 0x003f, 0x003f, 0x003f, 0xe194, 0xe192,
+    0xe193, 0x003f, 0x003f, 0x003f, 0x8ae0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x96fc, 0x003f, 0x003f, 0x003f, 0x95c8, 0x003f,
+    0xe196, 0x003f, 0x003f, 0x003f, 0xe195, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe197, 0xe198, 0x003f, 0x003f, 0x003f, 0x003f, 0xe19c,
+    0xe199, 0xe19a, 0xe19b, 0x003f, 0xe19d, 0x003f, 0x003f, 0x003f,
+    0xe19e, 0x003f, 0xe19f, 0x003f, 0x003f, 0x003f, 0xe1a0, 0x003f,
+    0xe1a1, 0x003f, 0x94ad, 0x936f, 0xe1a2, 0x9492, 0x9553, 0x003f,
+    0xe1a3, 0x003f, 0xee54, 0xe1a4, 0x9349, 0x003f, 0x8a46, 0x8d63,
+    0xe1a5, 0x003f, 0x003f, 0xe1a6, 0x003f, 0x003f, 0xe1a7, 0x003f,
+    0x8e48, 0x003f, 0x003f, 0xe1a9, 0x003f, 0x003f, 0xe1a8, 0x003f,
+    0x003f, 0xe1aa, 0xe1ab, 0xee57, 0xee55, 0x003f, 0xee56, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xee58, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x94e7, 0x003f,
+    0xe1ac, 0x003f, 0x003f, 0x003f, 0xe1ad, 0x003f, 0x003f, 0xea89,
+    0xe1ae, 0xe1af, 0xe1b0, 0x003f, 0x003f, 0x003f, 0x003f, 0x8e4d,
+    0x003f, 0x003f, 0xe1b1, 0x9475, 0x003f, 0x003f, 0x967e, 0x003f,
+    0x896d, 0x003f, 0x8976, 0x003f, 0x003f, 0xe1b2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe1b4, 0x003f, 0x003f, 0x003f, 0xe1b3, 0x9390,
+    0x003f, 0x003f, 0x003f, 0x90b7, 0x9f58, 0x003f, 0xe1b5, 0x96bf,
+    0x003f, 0xe1b6, 0x003f, 0x8ac4, 0x94d5, 0xe1b7, 0x003f, 0xe1b8,
+    0x003f, 0x003f, 0xe1b9, 0x003f, 0x003f, 0x003f, 0x96da, 0x003f,
+    0x003f, 0x003f, 0x96d3, 0x003f, 0x92bc, 0x003f, 0x003f, 0x003f,
+    0x918a, 0x003f, 0x003f, 0xe1bb, 0x003f, 0x003f, 0x8f82, 0x003f,
+    /* 0x7700 .. 0x77ff */
+    0x003f, 0x8fc8, 0x003f, 0x003f, 0xe1be, 0x003f, 0x003f, 0xe1bd,
+    0xe1bc, 0x94fb, 0x003f, 0x8ac5, 0x8ca7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe1c4, 0x003f, 0x003f, 0xe1c1, 0x905e,
+    0x96b0, 0x003f, 0x003f, 0x003f, 0xe1c0, 0xe1c2, 0xe1c3, 0x003f,
+    0x003f, 0xe1bf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1c5,
+    0xe1c6, 0x003f, 0x92ad, 0x003f, 0x8ae1, 0x003f, 0x003f, 0x003f,
+    0x9285, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xee5a, 0xe1c7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe1c8, 0xe1cb, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9087, 0x003f, 0x93c2, 0x003f, 0xe1cc, 0x9672, 0x003f,
+    0xe1c9, 0x003f, 0x003f, 0xe1ca, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe1cf, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1ce, 0xe1cd,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe1d1, 0x003f, 0x003f, 0xe1d0, 0x003f,
+    0x003f, 0xe1d2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1d4, 0x003f,
+    0xe1d3, 0x003f, 0x003f, 0x003f, 0x003f, 0x95cb, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8f75, 0x97c4, 0x003f, 0x003f,
+    0xe1d5, 0x003f, 0x003f, 0x93b5, 0x003f, 0x003f, 0xe1d6, 0x003f,
+    0x003f, 0xe1d7, 0x003f, 0xe1db, 0xe1d9, 0xe1da, 0x003f, 0xe1d8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1dc,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1dd, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1de,
+    0x003f, 0x003f, 0xe1df, 0x96b5, 0xe1e0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x96ee, 0xe1e1, 0x003f, 0x926d, 0x003f, 0x948a,
+    0x003f, 0x8be9, 0x003f, 0x003f, 0x003f, 0x925a, 0xe1e2, 0x8bb8,
+    0x003f, 0x003f, 0x003f, 0x90ce, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe1e3, 0x003f, 0x003f, 0x003f,
+    /* 0x7800 .. 0x78ff */
+    0x003f, 0x003f, 0x8dbb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe1e4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe1e5, 0x003f, 0x8ca4, 0x8dd3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe1e7, 0xee5c, 0x003f, 0x003f, 0x003f, 0x9375, 0x8dd4, 0x8b6d,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9643, 0x003f, 0x946a, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9376, 0x003f, 0x003f, 0x003f, 0x003f, 0x8d7b,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1e9, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xee5d, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8fc9, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xee5e, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x97b0, 0x8d64, 0x003f, 0x003f, 0x8ca5,
+    0x003f, 0x003f, 0x94a1, 0x003f, 0xe1eb, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xee5f, 0x003f, 0xe1ed, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8ce9, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1ec, 0x92f4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe1ef, 0x8a56, 0xe1ea, 0x003f,
+    0x003f, 0x94e8, 0x003f, 0x894f, 0x003f, 0x8dea, 0x003f, 0x9871,
+    0x003f, 0x003f, 0xe1ee, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe1f0, 0x003f, 0x003f, 0x003f, 0x95c9,
+    0x003f, 0x90d7, 0xe1f2, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1f3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1f1, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x8a6d, 0x003f, 0xe1f9, 0x003f, 0xe1f8, 0x003f,
+    0x003f, 0x8ea5, 0x003f, 0x003f, 0x003f, 0xe1fa, 0xe1f5, 0x003f,
+    0x003f, 0x003f, 0xe1fb, 0xe1f6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x94d6, 0xe1f4, 0x003f, 0x003f, 0xe1f7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe241, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe240,
+    0x9681, 0x003f, 0x003f, 0x003f, 0xe1fc, 0x003f, 0x003f, 0x88e9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe243, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe242, 0x003f, 0x003f,
+    /* 0x7900 .. 0x79ff */
+    0x003f, 0x8fca, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe244,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9162, 0x003f,
+    0x003f, 0xe246, 0xe245, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe247, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1e6, 0x003f,
+    0x003f, 0x003f, 0xe1e8, 0xe249, 0xe248, 0x003f, 0x003f, 0x003f,
+    0xee60, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x8ea6, 0x003f, 0x97e7, 0x003f, 0x8ed0, 0x003f,
+    0xe24a, 0x8c56, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8b5f,
+    0x8b46, 0x8e83, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9753, 0x003f, 0x003f, 0xe250, 0x003f, 0xe24f, 0x9163, 0xe24c,
+    0x003f, 0x003f, 0xe24e, 0x003f, 0x003f, 0x8f6a, 0x905f, 0xe24d,
+    0xe24b, 0x003f, 0x9449, 0x003f, 0x003f, 0x8fcb, 0x003f, 0x003f,
+    0x955b, 0x003f, 0x003f, 0x003f, 0x003f, 0x8dd5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9398,
+    0x003f, 0x003f, 0xe251, 0x003f, 0x003f, 0x003f, 0x003f, 0xe252,
+    0xe268, 0x8bd6, 0x003f, 0x003f, 0x985c, 0x9154, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe253, 0x003f, 0x003f, 0x89d0, 0x92f5, 0x959f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xee64, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xee66, 0x003f, 0xe254, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8b9a, 0xe255,
+    0x003f, 0x003f, 0xe257, 0x003f, 0x003f, 0x003f, 0xe258, 0x003f,
+    0x9448, 0x003f, 0x003f, 0xe259, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe25a, 0xe25b, 0x003f, 0x003f, 0x8bd7, 0x89d1, 0x93c3,
+    0x8f47, 0x8e84, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe25c, 0x003f, 0x8f48, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x89c8, 0x9562, 0x003f, 0x003f, 0xe25d, 0x003f, 0x003f,
+    0x94e9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9164,
+    0x003f, 0xe260, 0x003f, 0xe261, 0x9489, 0x003f, 0x9060, 0xe25e,
+    0x003f, 0x9281, 0x003f, 0x003f, 0xe25f, 0x003f, 0x003f, 0x003f,
+    0x8fcc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x88da, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x7a00 .. 0x7aff */
+    0x8b48, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe262, 0x003f, 0x003f, 0x92f6, 0x003f, 0xe263, 0x90c5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x96ab, 0x003f, 0x003f, 0x9542,
+    0xe264, 0xe265, 0x9274, 0x003f, 0x97c5, 0x003f, 0x003f, 0xe267,
+    0xe266, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8eed, 0x003f,
+    0x003f, 0xe269, 0x88ee, 0x003f, 0x003f, 0x003f, 0x003f, 0xe26c,
+    0x003f, 0x003f, 0x003f, 0xe26a, 0x89d2, 0x8c6d, 0xe26b, 0x8d65,
+    0x8d92, 0x003f, 0x95e4, 0xe26d, 0x003f, 0x003f, 0x9673, 0x003f,
+    0x003f, 0xe26f, 0x003f, 0x003f, 0x003f, 0x90cf, 0x896e, 0x89b8,
+    0x88aa, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe26e,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe270, 0xe271, 0x8ff5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe272, 0x003f, 0x8a6e, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe274, 0x003f, 0x003f, 0x003f, 0x8c8a, 0x003f, 0x8b86, 0x003f,
+    0x003f, 0xe275, 0x8bf3, 0x003f, 0x003f, 0xe276, 0x003f, 0x90fa,
+    0x003f, 0x93cb, 0x003f, 0x90de, 0x8df3, 0x003f, 0x003f, 0x003f,
+    0xe277, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9282, 0x918b, 0x003f, 0xe279, 0xe27b, 0xe278,
+    0xe27a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8c41,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe27c, 0x8c45, 0x003f, 0x003f, 0x003f, 0x8b87, 0x9771,
+    0xe27e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe280, 0x003f,
+    0x003f, 0x003f, 0x894d, 0x003f, 0x003f, 0x003f, 0x003f, 0xe283,
+    0x003f, 0x003f, 0x003f, 0x8a96, 0xe282, 0xe281, 0x003f, 0xe285,
+    0xe27d, 0x003f, 0xe286, 0x97a7, 0x003f, 0xe287, 0x003f, 0xe288,
+    0x003f, 0xee67, 0x9af2, 0xe28a, 0x003f, 0xe289, 0x003f, 0x003f,
+    0x003f, 0xe28b, 0xe28c, 0x003f, 0x97b3, 0xe28d, 0x003f, 0xe8ed,
+    0x8fcd, 0xe28e, 0xe28f, 0x8f76, 0x003f, 0x93b6, 0xe290, 0xee68,
+    0x003f, 0x003f, 0x9247, 0xee6a, 0x003f, 0xe291, 0x003f, 0x925b,
+    0xe292, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8ba3, 0x003f,
+    0x995e, 0x927c, 0x8eb1, 0x003f, 0x003f, 0x003f, 0x003f, 0x8ac6,
+    /* 0x7b00 .. 0x7bff */
+    0x003f, 0x003f, 0xe293, 0x003f, 0xe2a0, 0x003f, 0xe296, 0x003f,
+    0x8b88, 0x003f, 0xe295, 0xe2a2, 0x003f, 0x003f, 0x003f, 0xe294,
+    0x003f, 0x8fce, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe298, 0xe299, 0x003f, 0x934a, 0x003f, 0x003f, 0xe29a, 0x003f,
+    0x8a7d, 0x003f, 0x003f, 0x003f, 0x003f, 0x9079, 0x9584, 0x003f,
+    0xe29c, 0x003f, 0x003f, 0x003f, 0x91e6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe297, 0x003f, 0xe29b, 0xe29d, 0x003f,
+    0x003f, 0x8df9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2a4, 0x954d, 0x003f,
+    0x94a4, 0x9399, 0x003f, 0x8bd8, 0xe2a3, 0xe2a1, 0x003f, 0x94b3,
+    0xe29e, 0x927d, 0x939b, 0x003f, 0x939a, 0x003f, 0x8df4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2b6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2a6, 0x003f, 0xe2a8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe2ab, 0x003f, 0xe2ac, 0x003f,
+    0xe2a9, 0xe2aa, 0x003f, 0x003f, 0xe2a7, 0xe2a5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe29f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x95cd, 0x89d3,
+    0x003f, 0x003f, 0x003f, 0xe2b3, 0x003f, 0xe2b0, 0x003f, 0xe2b5,
+    0x003f, 0x003f, 0xe2b4, 0x003f, 0x9493, 0x96a5, 0x003f, 0x8e5a,
+    0xe2ae, 0xe2b7, 0xe2b2, 0x003f, 0xe2b1, 0xe2ad, 0xee6b, 0xe2af,
+    0x003f, 0x8ac7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x925c, 0x003f, 0x003f, 0x90fb, 0x003f, 0x003f,
+    0x003f, 0x94a0, 0x003f, 0x003f, 0xe2bc, 0x003f, 0x003f, 0x003f,
+    0x94a2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x90df, 0xe2b9, 0x003f, 0x003f, 0x94cd, 0x003f, 0xe2bd, 0x95d1,
+    0x003f, 0x927a, 0x003f, 0xe2b8, 0xe2ba, 0x003f, 0x003f, 0xe2bb,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2be, 0x003f, 0x003f,
+    0x8ec2, 0x003f, 0x003f, 0x003f, 0x93c4, 0xe2c3, 0xe2c2, 0x003f,
+    0x003f, 0xe2bf, 0x003f, 0x003f, 0x003f, 0x9855, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe2c8, 0x003f, 0x003f, 0xe2cc, 0xe2c9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x7c00 .. 0x7cff */
+    0xe2c5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2c6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2cb, 0x003f, 0x003f,
+    0x003f, 0xe2c0, 0x99d3, 0xe2c7, 0xe2c1, 0x003f, 0x003f, 0xe2ca,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2d0,
+    0x003f, 0x8ac8, 0x003f, 0xe2cd, 0x003f, 0x003f, 0x003f, 0xe2ce,
+    0x003f, 0x003f, 0xe2cf, 0xe2d2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2d1,
+    0x94f4, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2d3, 0x97fa, 0x95eb,
+    0xe2d8, 0x003f, 0x003f, 0xe2d5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe2d4, 0x90d0, 0x003f, 0xe2d7,
+    0xe2d9, 0x003f, 0x003f, 0x003f, 0xe2d6, 0x003f, 0xe2dd, 0x003f,
+    0xe2da, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2db,
+    0xe2c4, 0x003f, 0x003f, 0x003f, 0xe2dc, 0xe2de, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe2df, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x95c4, 0x003f, 0xe2e0, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x96e0, 0x003f,
+    0x003f, 0x8bcc, 0x8c48, 0xe2e1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x95b2, 0x003f, 0x9088, 0x003f, 0x96ae, 0x003f, 0x003f,
+    0xe2e2, 0x003f, 0x97b1, 0x003f, 0x003f, 0x9494, 0x003f, 0x9165,
+    0x9453, 0x003f, 0x003f, 0x8f6c, 0x003f, 0x003f, 0x003f, 0x88be,
+    0x003f, 0xe2e7, 0xe2e5, 0x003f, 0xe2e3, 0x8a9f, 0x003f, 0x8fcf,
+    0xe2e8, 0x003f, 0x003f, 0xe2e6, 0x003f, 0xe2e4, 0xe2ec, 0x003f,
+    0x003f, 0xe2eb, 0xe2ea, 0xe2e9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe2ed, 0x003f, 0x003f, 0x003f, 0xe2ee, 0x90b8, 0x003f,
+    0xe2ef, 0x003f, 0xe2f1, 0x003f, 0x003f, 0xe2f0, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x8cd0, 0x003f, 0x003f, 0x003f, 0x9157, 0x003f,
+    0x003f, 0x003f, 0xe2f3, 0x003f, 0x003f, 0x003f, 0x939c, 0x003f,
+    0xe2f2, 0x003f, 0x003f, 0x003f, 0xe2f4, 0x003f, 0x95b3, 0x918c,
+    0x8d66, 0x003f, 0xe2f5, 0x003f, 0x003f, 0x003f, 0x003f, 0x97c6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2f7,
+    0x003f, 0x003f, 0xe2f8, 0x003f, 0xe2f9, 0x003f, 0xe2fa, 0x003f,
+    0x8e85, 0x003f, 0xe2fb, 0x8c6e, 0x003f, 0x003f, 0x8b8a, 0x003f,
+    /* 0x7d00 .. 0x7dff */
+    0x8b49, 0x003f, 0xe340, 0x003f, 0x96f1, 0x8d67, 0xe2fc, 0x003f,
+    0x003f, 0x003f, 0xe343, 0x96e4, 0x003f, 0x945b, 0x003f, 0x003f,
+    0x9552, 0x003f, 0x003f, 0x003f, 0x8f83, 0xe342, 0x003f, 0x8ed1,
+    0x8d68, 0x8e86, 0x8b89, 0x95b4, 0xe341, 0x003f, 0x003f, 0x003f,
+    0x9166, 0x9661, 0x8df5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x8e87, 0x92db, 0x003f, 0xe346, 0x97dd,
+    0x8dd7, 0x003f, 0xe347, 0x9061, 0x003f, 0xe349, 0x003f, 0x003f,
+    0x003f, 0x8fd0, 0x8dae, 0x003f, 0x003f, 0x003f, 0x003f, 0xe348,
+    0x003f, 0x003f, 0x8f49, 0x8cbc, 0x9167, 0xe344, 0xe34a, 0x003f,
+    0xee6d, 0x003f, 0x003f, 0xe345, 0x8c6f, 0x003f, 0xe34d, 0xe351,
+    0x8c8b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe34c, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe355, 0xee6e, 0x003f, 0x8d69, 0x003f,
+    0x003f, 0x978d, 0x88ba, 0xe352, 0x003f, 0x003f, 0x8b8b, 0x003f,
+    0xe34f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe350, 0x003f,
+    0x003f, 0x939d, 0xe34e, 0xe34b, 0x003f, 0x8a47, 0x90e2, 0x003f,
+    0x003f, 0x8ca6, 0x003f, 0x003f, 0x003f, 0xe357, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe354, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe356,
+    0x003f, 0x003f, 0x003f, 0xe353, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8c70, 0x91b1, 0xe358, 0x918e, 0x003f, 0x003f, 0xe365,
+    0xee70, 0x003f, 0xe361, 0xe35b, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe35f, 0x8ef8, 0x88db, 0xe35a, 0xe362,
+    0xe366, 0x8d6a, 0x96d4, 0x003f, 0x92d4, 0xe35c, 0x003f, 0xee6f,
+    0xe364, 0x003f, 0xe359, 0x925d, 0x003f, 0xe35e, 0x88bb, 0x96c8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe35d,
+    0x003f, 0x003f, 0x8bd9, 0x94ea, 0x003f, 0x003f, 0x003f, 0x918d,
+    0x003f, 0x97ce, 0x8f8f, 0x003f, 0x003f, 0xe38e, 0xee71, 0x003f,
+    0xe367, 0x003f, 0x90fc, 0x003f, 0xe363, 0xe368, 0xe36a, 0x003f,
+    0x92f7, 0xe36d, 0x003f, 0x003f, 0xe369, 0x003f, 0x003f, 0x003f,
+    0x95d2, 0x8ac9, 0x003f, 0x003f, 0x96c9, 0x003f, 0x003f, 0x88dc,
+    0x003f, 0x003f, 0xe36c, 0x003f, 0x97fb, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe36b, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x7e00 .. 0x7eff */
+    0x003f, 0x898f, 0x003f, 0x003f, 0x93ea, 0xe36e, 0x003f, 0x003f,
+    0x003f, 0xe375, 0xe36f, 0xe376, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe372, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x949b, 0x003f, 0x003f, 0x8ec8, 0xe374,
+    0x003f, 0xe371, 0xe377, 0xe370, 0x003f, 0x003f, 0x8f63, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9644, 0x003f, 0x003f, 0x8f6b, 0x003f,
+    0x003f, 0xe373, 0xe380, 0x003f, 0x003f, 0xe37b, 0x003f, 0xe37e,
+    0x003f, 0xe37c, 0xe381, 0xe37a, 0x003f, 0xe360, 0x90d1, 0x003f,
+    0x003f, 0x94c9, 0x003f, 0xe37d, 0x003f, 0x003f, 0xe378, 0x003f,
+    0x003f, 0x003f, 0x9140, 0x8c71, 0x003f, 0x8f4a, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xee72, 0x003f, 0x9044, 0x9155, 0xe384, 0x003f,
+    0x003f, 0xe386, 0xe387, 0x003f, 0x003f, 0xe383, 0xe385, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe379, 0xe382,
+    0x003f, 0xe38a, 0xe389, 0x003f, 0x003f, 0x969a, 0x003f, 0x003f,
+    0x8c4a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe388, 0x003f, 0xe38c, 0xe38b, 0xe38f, 0x003f, 0xe391,
+    0x003f, 0x003f, 0x8e5b, 0xe38d, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe392, 0xe393, 0xed40, 0x003f, 0xe394, 0x003f, 0xe39a, 0x935a,
+    0xe396, 0x003f, 0xe395, 0xe397, 0xe398, 0x003f, 0xe399, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe39b, 0xe39c, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x7f00 .. 0x7fff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8aca, 0x003f,
+    0xe39d, 0x003f, 0xe39e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe39f, 0x003f, 0xee73,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe3a0, 0xe3a1, 0xe3a2, 0x003f,
+    0xe3a3, 0xe3a4, 0x003f, 0x003f, 0xe3a6, 0xe3a5, 0x003f, 0x003f,
+    0xe3a7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3a8,
+    0xe3a9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3ac,
+    0xe3aa, 0xe3ab, 0x8ddf, 0x8c72, 0x003f, 0x003f, 0x9275, 0x003f,
+    0x94b1, 0x003f, 0x8f90, 0x003f, 0x003f, 0x946c, 0x003f, 0x94eb,
+    0xe3ad, 0x9ceb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe3ae, 0xe3b0, 0x003f, 0x9785, 0xe3af, 0xe3b2,
+    0xe3b1, 0x003f, 0x9772, 0x003f, 0xe3b3, 0x003f, 0x94fc, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe3b4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe3b7, 0x003f, 0x003f, 0xe3b6, 0xe3b5, 0x003f,
+    0x003f, 0xee74, 0x003f, 0xe3b8, 0x8c51, 0x003f, 0x003f, 0x003f,
+    0x9141, 0x8b60, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3bc, 0xe3b9,
+    0x003f, 0x003f, 0xe3ba, 0x003f, 0x003f, 0x003f, 0xe3bd, 0x003f,
+    0xe3be, 0xe3bb, 0x003f, 0x003f, 0x003f, 0x8948, 0x003f, 0x003f,
+    0x003f, 0x89a5, 0x003f, 0x003f, 0x003f, 0xe3c0, 0xe3c1, 0x003f,
+    0x003f, 0x003f, 0xe3c2, 0x003f, 0x9782, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x8f4b, 0x003f, 0xe3c4, 0xe3c3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9089, 0xe3c5, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3c6, 0x003f,
+    0x003f, 0xe3c7, 0x003f, 0x8ae3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8acb, 0x003f, 0x003f, 0xe3c8, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe3c9, 0x003f, 0x967c, 0x9783, 0x003f, 0x003f, 0x003f,
+    /* 0x8000 .. 0x80ff */
+    0x9773, 0x9856, 0x003f, 0x8d6c, 0xe3cc, 0x8ed2, 0xe3cb, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe3cd, 0x8ea7, 0x003f, 0x003f, 0x003f,
+    0x91cf, 0x003f, 0xe3ce, 0x003f, 0x003f, 0x8d6b, 0x003f, 0x96d5,
+    0xe3cf, 0xe3d0, 0x003f, 0x003f, 0xe3d1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe3d2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe3d3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x8ea8, 0x003f, 0x003f, 0x96eb, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe3d5, 0x003f, 0x925e, 0x003f, 0xe3d4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3d7, 0x003f,
+    0x003f, 0x003f, 0xe3d6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe3d8, 0x003f, 0x003f, 0x003f, 0x90b9, 0x003f,
+    0xe3d9, 0x003f, 0xe3da, 0x003f, 0x003f, 0x003f, 0x95b7, 0xe3db,
+    0x003f, 0x918f, 0xe3dc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe3dd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x97fc,
+    0xe3e0, 0x003f, 0xe3df, 0xe3de, 0x92ae, 0x003f, 0xe3e1, 0x9045,
+    0x003f, 0xe3e2, 0x003f, 0x003f, 0x003f, 0xe3e3, 0x9857, 0xe3e4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe3e5, 0xe3e7, 0xe3e6, 0x94a3,
+    0x003f, 0x93f7, 0x003f, 0x985d, 0x94a7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe3e9, 0x003f, 0x003f, 0x8fd1, 0x003f,
+    0x9549, 0x003f, 0xe3ea, 0xe3e8, 0x003f, 0x8acc, 0x003f, 0x003f,
+    0x003f, 0x8cd2, 0x8e88, 0x003f, 0x003f, 0x94ec, 0x003f, 0x003f,
+    0x003f, 0x8ca8, 0x9662, 0x003f, 0xe3ed, 0xe3eb, 0x003f, 0x8d6d,
+    0x003f, 0x8d6e, 0x88e7, 0x003f, 0x8de6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9478, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x88dd, 0xe3f2, 0x003f, 0x925f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9477, 0x003f, 0x91d9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3f4, 0x003f,
+    0x003f, 0xe3f0, 0xe3f3, 0xe3ee, 0x003f, 0xe3f1, 0x9645, 0x003f,
+    0x003f, 0x8cd3, 0x003f, 0x003f, 0x88fb, 0xe3ef, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3f6,
+    0x003f, 0xe3f7, 0x003f, 0x003f, 0x93b7, 0x003f, 0x003f, 0x003f,
+    0x8bb9, 0x003f, 0x003f, 0x003f, 0xe445, 0x945c, 0x003f, 0x003f,
+    /* 0x8100 .. 0x81ff */
+    0x003f, 0x003f, 0x8e89, 0x003f, 0x003f, 0x8bba, 0x90c6, 0x9865,
+    0x96ac, 0xe3f5, 0x90d2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x8b72, 0xe3f8, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe3fa, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe3f9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3fb,
+    0x003f, 0x9245, 0x003f, 0x945d, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x92af, 0x003f, 0x003f, 0x003f, 0x003f, 0xe442, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe441, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe3fc, 0x003f, 0x003f, 0x9074, 0x003f,
+    0x9585, 0xe444, 0x003f, 0xe443, 0x8d6f, 0x9872, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe454,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe448, 0xe449, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x8eee, 0x003f, 0x003f, 0xe447, 0x003f,
+    0x8d98, 0xe446, 0x003f, 0x003f, 0xe44a, 0x003f, 0x003f, 0x003f,
+    0x92b0, 0x95a0, 0x9142, 0x003f, 0x003f, 0x003f, 0x003f, 0x91da,
+    0xe44e, 0x003f, 0xe44f, 0xe44b, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe44c, 0x003f, 0xe44d, 0x003f, 0x003f, 0x003f, 0x003f, 0x8d70,
+    0x003f, 0x003f, 0x003f, 0xe455, 0x003f, 0xe451, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9586, 0x003f, 0x968c, 0x9547, 0x003f, 0x003f,
+    0xe450, 0x003f, 0x003f, 0xe453, 0xe452, 0x003f, 0x003f, 0x003f,
+    0x9663, 0xe456, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe457, 0x003f, 0x003f, 0x9156, 0x003f, 0xe458, 0x003f, 0x003f,
+    0xe45a, 0x003f, 0xe45e, 0x003f, 0x003f, 0xe45b, 0xe459, 0x945e,
+    0xe45c, 0x003f, 0xe45d, 0x003f, 0x003f, 0x003f, 0x89b0, 0x003f,
+    0xe464, 0xe45f, 0x003f, 0x003f, 0x003f, 0xe460, 0x003f, 0x003f,
+    0x003f, 0xe461, 0x003f, 0x919f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe463, 0xe462, 0xe465, 0x003f, 0x003f, 0x003f, 0x003f, 0xe466,
+    0xe467, 0x003f, 0x003f, 0x9062, 0x003f, 0x89e7, 0x003f, 0xe468,
+    0x97d5, 0x003f, 0x8ea9, 0x003f, 0x003f, 0x8f4c, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x8e8a, 0x9276, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe469, 0xe46a, 0x8950, 0x003f, 0xe46b, 0x003f,
+    /* 0x8200 .. 0x82ff */
+    0x003f, 0xe46c, 0xe46d, 0x003f, 0x003f, 0xe46e, 0x003f, 0xe46f,
+    0x8bbb, 0x9da8, 0xe470, 0x003f, 0x90e3, 0xe471, 0x8ec9, 0x003f,
+    0xe472, 0x003f, 0x98ae, 0x003f, 0x003f, 0x003f, 0xe473, 0x95dc,
+    0x8ada, 0x003f, 0x003f, 0x9143, 0x8f77, 0x003f, 0x9591, 0x8f4d,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe474, 0x8d71, 0xe475, 0x94ca, 0x003f, 0xe484, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe477, 0x003f, 0x91c7, 0x9495, 0x8cbd,
+    0xe476, 0x9144, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe478, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x92f8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe47a, 0xe479, 0xe47c, 0x003f, 0x003f, 0xe47b, 0x003f, 0xe47d,
+    0x003f, 0x003f, 0xe480, 0x003f, 0xe47e, 0x003f, 0x8acd, 0x003f,
+    0xe481, 0x003f, 0xe482, 0xe483, 0x003f, 0x003f, 0x8daf, 0x97c7,
+    0x003f, 0xe485, 0x9046, 0x003f, 0x003f, 0x003f, 0x8990, 0xe486,
+    0xe487, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe488, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x88f0, 0x003f, 0xe489, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe48a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9587, 0x003f, 0x003f, 0x003f, 0x8ec5, 0x003f, 0xe48c,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8a48, 0x88b0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe48b, 0xe48e, 0x946d, 0x003f, 0x9063,
+    0x003f, 0x89d4, 0x003f, 0x9646, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8c7c, 0x8bda, 0x003f, 0xe48d, 0x003f, 0x89e8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8aa1, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8991, 0xe492, 0x97e8, 0x91db, 0x003f, 0x003f, 0x9563,
+    0x003f, 0xe49e, 0x003f, 0x89d5, 0xe49c, 0x003f, 0xe49a, 0xe491,
+    0x003f, 0xe48f, 0x003f, 0xe490, 0x003f, 0x8ee1, 0x8bea, 0x9297,
+    0x003f, 0x003f, 0x003f, 0x93cf, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8970, 0x003f, 0xe494, 0xe493, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe499, 0xe495, 0xe498, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x8300 .. 0x83ff */
+    0x003f, 0xee76, 0x96ce, 0xe497, 0x89d6, 0x8a9d, 0xe49b, 0x003f,
+    0x003f, 0xe49d, 0x003f, 0x003f, 0x003f, 0x003f, 0x8c73, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4a1, 0xe4aa,
+    0xe4ab, 0x003f, 0x003f, 0x003f, 0x88a9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe4b2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x88ef, 0x003f, 0x003f, 0xe4a9, 0x003f, 0x003f, 0x003f, 0xe4a8,
+    0x003f, 0xe4a3, 0xe4a2, 0x003f, 0xe4a0, 0xe49f, 0x9283, 0x003f,
+    0x91f9, 0xe4a5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe4a4, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4a7, 0x003f, 0x003f,
+    0x003f, 0x9190, 0x8c74, 0x003f, 0x003f, 0x003f, 0x003f, 0x8960,
+    0xe4a6, 0x003f, 0x8d72, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9191, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xee77, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe4b8, 0x003f, 0xe4b9, 0x003f, 0x89d7,
+    0x003f, 0x003f, 0x003f, 0x89ac, 0xe4b6, 0x003f, 0x003f, 0xee78,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4ac, 0x003f, 0xe4b4,
+    0x003f, 0xe4bb, 0xe4b5, 0x003f, 0x003f, 0x003f, 0xe4b3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe496, 0x003f, 0x003f, 0xe4b1, 0x003f,
+    0x003f, 0x003f, 0xe4ad, 0x003f, 0x003f, 0x003f, 0x8ace, 0xe4af,
+    0xe4ba, 0x003f, 0xe4b0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe4bc, 0x003f, 0xe4ae, 0x949c, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9789, 0x003f, 0x003f, 0x003f, 0xe4b7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4cd, 0x003f, 0x003f,
+    0x003f, 0xe4c5, 0x003f, 0x003f, 0x003f, 0x909b, 0x003f, 0xee79,
+    0x003f, 0x003f, 0x8b65, 0x003f, 0x8bdb, 0x003f, 0xe4c0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x89d9, 0x003f, 0x003f, 0x8fd2, 0x003f,
+    0xe4c3, 0x003f, 0x003f, 0x003f, 0x8dd8, 0x003f, 0x003f, 0x9370,
+    0xe4c8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x95ec, 0x003f, 0xe4bf, 0x003f, 0x003f, 0x003f, 0x89d8,
+    0x8cd4, 0x9548, 0xe4c9, 0x003f, 0xe4bd, 0x003f, 0xee7a, 0xe4c6,
+    0x003f, 0x003f, 0x003f, 0xe4d0, 0x003f, 0xe4c1, 0x003f, 0x003f,
+    /* 0x8400 .. 0x84ff */
+    0x003f, 0x003f, 0x003f, 0xe4c2, 0x93b8, 0x003f, 0x003f, 0xe4c7,
+    0x003f, 0x003f, 0x003f, 0xe4c4, 0x9647, 0xe4ca, 0x88de, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe4be, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe4cc, 0x003f, 0xe4cb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x948b, 0xe4d2, 0x003f, 0xe4dd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8a9e, 0x003f, 0x003f, 0x003f, 0xe4e0, 0x003f, 0x003f,
+    0xe4ce, 0x003f, 0x003f, 0x003f, 0xe4d3, 0x978e, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4dc, 0x003f,
+    0xee7b, 0x9774, 0x003f, 0x003f, 0x003f, 0x003f, 0x97a8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9298,
+    0x003f, 0x003f, 0x003f, 0x8a8b, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9592, 0xe4e2, 0x939f, 0x003f, 0x003f, 0x88af, 0x003f,
+    0x003f, 0xe4db, 0x003f, 0xe4d7, 0x9192, 0xe4d1, 0xe4d9, 0xe4de,
+    0x003f, 0x944b, 0x003f, 0x003f, 0x003f, 0x88a8, 0x003f, 0xe4d6,
+    0x003f, 0xe4df, 0x9598, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe4da, 0x003f, 0xe4d5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x8fd3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8f4e, 0x003f, 0x003f, 0x003f, 0x8eaa, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x96d6, 0x003f, 0x003f, 0x9566, 0x003f, 0x003f, 0xe4e5,
+    0x003f, 0xe4ee, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4d8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x8a97, 0x003f, 0xee7c, 0x003f, 0x003f, 0x003f,
+    0x8ff6, 0xe4e3, 0x003f, 0xe4e8, 0x9193, 0x003f, 0x003f, 0xe4e4,
+    0x003f, 0xe4eb, 0x003f, 0x003f, 0x927e, 0x003f, 0xe4ec, 0x003f,
+    0x003f, 0x9775, 0xe4e1, 0x8a57, 0x003f, 0xe4e7, 0x003f, 0x003f,
+    0xe4ea, 0x96aa, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4ed, 0x003f,
+    0x003f, 0xe4e6, 0xe4e9, 0x003f, 0xed44, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x9648, 0x003f, 0x9840, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe4f1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe4f8, 0x003f, 0x003f, 0xe4f0,
+    /* 0x8500 .. 0x85ff */
+    0x8ec1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4cf, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x95cc, 0x003f, 0x96a0, 0xe4f7, 0xe4f6, 0x003f, 0xe4f2,
+    0xe4f3, 0x003f, 0x8955, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4f5,
+    0x003f, 0xe4ef, 0x003f, 0x003f, 0x003f, 0x003f, 0x92d3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe4f4, 0x88fc, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x91a0, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x95c1, 0x003f, 0x003f,
+    0xe4f9, 0xe540, 0x003f, 0x94d7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe4fc, 0x8fd4, 0x8ec7, 0xe542, 0x003f, 0x003f, 0x8bbc, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xee7d, 0x003f, 0xe543, 0x003f, 0x9599,
+    0xe4fb, 0xee7e, 0xe4d4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe4fa, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x986e, 0x93a0, 0x9593, 0xee80, 0x003f, 0xe54a, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe550,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe551, 0x003f,
+    0xe544, 0x003f, 0x003f, 0x003f, 0x9496, 0x003f, 0x003f, 0xe54e,
+    0xe546, 0x003f, 0xe548, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe552, 0xe547, 0x003f, 0x003f, 0xe54b, 0x003f, 0x003f, 0x8992,
+    0x003f, 0x93e3, 0x003f, 0xe54c, 0xe54f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe545, 0x003f, 0x9145, 0x003f,
+    0xe549, 0x8e46, 0x9064, 0x8c4f, 0x96f2, 0x003f, 0x96f7, 0x8f92,
+    0xee82, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe556, 0xe554, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x986d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe553, 0x003f, 0x003f, 0x003f, 0x9795, 0x003f, 0xe555,
+    0xe557, 0x003f, 0x003f, 0x003f, 0x003f, 0xe558, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe55b, 0xe559, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x93a1, 0xe55a, 0x003f, 0x003f,
+    0x003f, 0x94cb, 0xe54d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8f93,
+    0x003f, 0xe55c, 0xe561, 0x9194, 0x003f, 0x003f, 0xe560, 0x003f,
+    /* 0x8600 .. 0x86ff */
+    0x003f, 0x003f, 0xe541, 0x003f, 0x003f, 0x003f, 0xe562, 0x9168,
+    0x003f, 0x003f, 0xe55d, 0xe55f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe55e, 0x003f, 0x003f, 0x9f50, 0x9f41,
+    0x003f, 0x003f, 0xe564, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe563, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9796, 0x003f, 0xe1ba,
+    0xe565, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe566,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe567, 0x8cd5, 0x003f,
+    0x8b73, 0x003f, 0x003f, 0x003f, 0xe569, 0x997c, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x8b95, 0x003f, 0x97b8, 0x003f, 0x8bf1, 0xe56a,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe56b,
+    0x003f, 0x003f, 0x003f, 0x928e, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe56c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x93f8, 0x003f, 0x88b8, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x89e1, 0xe571, 0xe572, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe56d, 0x003f, 0x8e5c, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe56e, 0x9461, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe56f, 0xe570, 0xe57a, 0x003f, 0x003f, 0x003f, 0xe574,
+    0xe577, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe573, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe575, 0x003f, 0xe576, 0x8ed6,
+    0x003f, 0xe578, 0x003f, 0x9260, 0x003f, 0x8c75, 0x8a61, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe57b, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8a5e, 0x003f, 0xe581, 0x003f, 0x003f, 0xe57c, 0xe580,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x94b8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe57d, 0x003f, 0x003f, 0xe57e, 0x9567, 0x94d8, 0xe582,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x91fb, 0xe58c, 0x003f, 0xe588, 0x003f, 0x003f, 0x89e9, 0x003f,
+    /* 0x8700 .. 0x87ff */
+    0xe586, 0x003f, 0x9649, 0xe587, 0x003f, 0x003f, 0xe584, 0x003f,
+    0xe585, 0xe58a, 0xe58d, 0x003f, 0x003f, 0xe58b, 0x003f, 0x003f,
+    0x003f, 0xe589, 0xe583, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9277, 0x003f, 0xe594, 0x003f, 0x96a8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe592, 0x003f, 0x003f,
+    0x003f, 0xe593, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe58e, 0x003f, 0x003f, 0xe590,
+    0x003f, 0x003f, 0x003f, 0xe591, 0x003f, 0x003f, 0x003f, 0xe58f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x90e4, 0x003f, 0x9858, 0xe598, 0x003f, 0xe599, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe59f, 0x003f, 0x9049, 0x003f, 0xe59b,
+    0x003f, 0xe59e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe596,
+    0xe595, 0x003f, 0x003f, 0xe5a0, 0x003f, 0x003f, 0x89da, 0x003f,
+    0xe59c, 0x003f, 0xe5a1, 0x003f, 0x003f, 0x003f, 0xe59d, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe59a, 0x003f, 0x92b1, 0x003f,
+    0xe597, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9488,
+    0x003f, 0x003f, 0xe5a5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x975a, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5a4,
+    0x003f, 0x003f, 0xe5a3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe5ac, 0x003f, 0x003f, 0x003f, 0xe5a6,
+    0x003f, 0x003f, 0x003f, 0xe5ae, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9786, 0xe5b1, 0x003f, 0xe5a8, 0x003f, 0x003f,
+    0xe5a9, 0x003f, 0x003f, 0x003f, 0xe5ad, 0x003f, 0xe5b0, 0xe5af,
+    0x003f, 0x003f, 0x003f, 0xe5a7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe5aa, 0x003f, 0xe5bb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe5b4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5b2,
+    0x003f, 0x003f, 0xe5b3, 0x003f, 0x003f, 0x003f, 0xe5b8, 0xe5b9,
+    0x003f, 0x8a49, 0x003f, 0x8b61, 0x003f, 0x003f, 0xe5b7, 0x003f,
+    /* 0x8800 .. 0x88ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5a2, 0x003f, 0xee85,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5b6, 0xe5ba, 0xe5b5,
+    0x003f, 0xe5bc, 0x003f, 0x003f, 0x003f, 0xe5be, 0xe5bd, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe5c0, 0xe5bf, 0xe579, 0x003f, 0x003f, 0x003f, 0xe5c4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe5c1, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5c2, 0x003f,
+    0x003f, 0xe5c3, 0x003f, 0xe5c5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8c8c, 0x003f, 0xe5c7, 0x003f, 0xe5c6, 0x003f, 0x8f4f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8d73, 0x9fa5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe5c8, 0x8f70, 0x003f, 0x003f, 0x003f, 0x8a58,
+    0x003f, 0xe5c9, 0x003f, 0x8971, 0x003f, 0x8fd5, 0xe5ca, 0x003f,
+    0x003f, 0x8d74, 0xe5cb, 0x88df, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x955c, 0x003f, 0x003f, 0xe5cc, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x908a, 0x003f, 0xe5d3, 0x003f, 0x003f, 0xe5d0, 0x003f, 0x928f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5d1, 0xe5ce, 0x8bdc,
+    0x003f, 0xe5cd, 0xe5d4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8c55, 0x003f, 0x003f, 0x91dc, 0x003f, 0xe5da, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe5d6, 0x003f, 0x003f, 0x003f, 0x91b3, 0xe5d5,
+    0x003f, 0xe5d8, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5cf, 0x003f,
+    0x003f, 0x003f, 0xe5d9, 0x003f, 0xe5db, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x94ed, 0x003f, 0x003f, 0xe5d7, 0x003f,
+    0xe5dc, 0xe5de, 0x003f, 0x003f, 0x8cd1, 0xe5d2, 0x003f, 0x88bf,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5dd,
+    0x003f, 0x8dd9, 0x97f4, 0xe5df, 0xe5e0, 0x9195, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x97a0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe5e1, 0x9754, 0x003f, 0x003f,
+    0xe5e2, 0xe5e3, 0x003f, 0x003f, 0x95e2, 0xe5e4, 0x003f, 0x8dbe,
+    0x003f, 0x97a1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe5e9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe5ea, 0x8fd6, 0xe5e8, 0xee86, 0x003f, 0x003f,
+    0x9787, 0xe5e5, 0x003f, 0x003f, 0xe5e7, 0x90bb, 0x909e, 0x003f,
+    /* 0x8900 .. 0x89ff */
+    0x003f, 0x003f, 0xe5e6, 0x003f, 0xe5eb, 0x003f, 0x003f, 0x95a1,
+    0x003f, 0x003f, 0xe5ed, 0x003f, 0xe5ec, 0x003f, 0x003f, 0x003f,
+    0x8a8c, 0x003f, 0x964a, 0xe5ee, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xed41, 0xe5fa, 0xe5f0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5f1, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe5f2, 0xe5f3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5f7, 0x003f,
+    0xe5f8, 0x003f, 0x003f, 0xe5f6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe5f4, 0x003f, 0xe5ef, 0xe5f5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe5f9, 0xe8b5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x89a6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5fc, 0x8bdd,
+    0xe5fb, 0x003f, 0x003f, 0x003f, 0xe641, 0x003f, 0xe640, 0x003f,
+    0x003f, 0x003f, 0xe643, 0x003f, 0x003f, 0xe642, 0x003f, 0xe644,
+    0x003f, 0x003f, 0x8f50, 0x003f, 0xe645, 0x003f, 0x003f, 0xe646,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe647, 0x90bc,
+    0x003f, 0x9776, 0x003f, 0xe648, 0x003f, 0x003f, 0x95a2, 0x9465,
+    0xe649, 0x003f, 0xe64a, 0x8ca9, 0x003f, 0x003f, 0x003f, 0x8b4b,
+    0x003f, 0x003f, 0x003f, 0xe64b, 0x003f, 0x003f, 0x8e8b, 0x9460,
+    0xe64c, 0x003f, 0x8a6f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe64d, 0x003f, 0x003f, 0x003f, 0x003f, 0xe64f, 0x9797,
+    0x003f, 0xe64e, 0x9065, 0x003f, 0xe650, 0x003f, 0x003f, 0xe651,
+    0x003f, 0x003f, 0xe652, 0x8acf, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe653, 0x003f, 0x003f, 0xe654, 0x003f, 0xe655,
+    0xe656, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x8a70, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe657, 0x003f, 0xe658, 0xe659, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x89f0, 0x003f, 0x003f, 0x9047, 0xe65a,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe65b, 0x003f, 0x003f, 0x003f,
+    0xe65c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x8a00 .. 0x8aff */
+    0x8cbe, 0x003f, 0x92f9, 0xe65d, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8c76, 0x003f, 0x9075, 0x003f, 0xe660, 0x003f, 0x93a2, 0x003f,
+    0xe65f, 0x003f, 0xee87, 0x8c50, 0x003f, 0x003f, 0xe65e, 0x91f5,
+    0x8b4c, 0x003f, 0x003f, 0xe661, 0x003f, 0xe662, 0x003f, 0x8fd7,
+    0x003f, 0x003f, 0x003f, 0x8c8d, 0x003f, 0xe663, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x964b, 0x003f, 0x003f, 0x90dd, 0x003f, 0x003f,
+    0x003f, 0x8b96, 0x003f, 0x96f3, 0x9169, 0x003f, 0xe664, 0xee88,
+    0x003f, 0x003f, 0x9066, 0x9290, 0x8fd8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe665, 0x003f, 0x003f, 0x003f, 0x003f, 0xe668, 0x003f,
+    0xe669, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8dbc, 0x91c0, 0xe667, 0x003f, 0x8fd9, 0x955d, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe666, 0x003f, 0x003f, 0x8e8c, 0x003f,
+    0x8972, 0x003f, 0xe66d, 0x8c77, 0x003f, 0x003f, 0x8e8e, 0x003f,
+    0x003f, 0x8e8d, 0x003f, 0x986c, 0xe66c, 0xe66b, 0x9146, 0x003f,
+    0x8b6c, 0x9862, 0x8a59, 0x8fda, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xee89, 0x003f, 0x003f, 0xe66a, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe66f, 0x003f, 0xe670, 0xe66e, 0x003f, 0x8cd6,
+    0x003f, 0x975f, 0x003f, 0x003f, 0x8e8f, 0x9446, 0x003f, 0x003f,
+    0x003f, 0xe673, 0x003f, 0x90be, 0x003f, 0x9261, 0x003f, 0x003f,
+    0x9755, 0x003f, 0xe676, 0x003f, 0x003f, 0x003f, 0x8cea, 0x003f,
+    0x90bd, 0xe672, 0x003f, 0xe677, 0x8ceb, 0xe674, 0xe675, 0xee8a,
+    0xe671, 0x003f, 0x003f, 0x003f, 0x90e0, 0x93c7, 0x003f, 0x003f,
+    0x924e, 0x003f, 0x89db, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x94ee, 0x003f, 0x003f, 0x8b62, 0x003f, 0xee8b, 0x92b2,
+    0x003f, 0x003f, 0xe67a, 0x003f, 0xe678, 0x003f, 0x003f, 0x926b,
+    0x003f, 0x003f, 0x003f, 0x90bf, 0x8ad0, 0xe679, 0x003f, 0x907a,
+    0x003f, 0x003f, 0x97c8, 0x003f, 0x003f, 0x003f, 0x985f, 0x003f,
+    0x003f, 0x003f, 0xe67b, 0xe687, 0x92b3, 0x003f, 0xe686, 0xee8c,
+    0xe683, 0xe68b, 0xe684, 0x003f, 0xe680, 0x003f, 0x92fa, 0xe67e,
+    0x003f, 0x003f, 0x003f, 0xe67c, 0x003f, 0x9740, 0x8e90, 0x003f,
+    0x003f, 0xe681, 0x003f, 0xe67d, 0x003f, 0x003f, 0xee8e, 0xe685,
+    0x8f94, 0x003f, 0x8cbf, 0x003f, 0x003f, 0x003f, 0x91f8, 0x003f,
+    /* 0x8b00 .. 0x8bff */
+    0x9664, 0x8979, 0x88e0, 0x003f, 0x93a3, 0x003f, 0x003f, 0xe689,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe688, 0x003f, 0x93e4, 0x003f,
+    0xe68d, 0x003f, 0x003f, 0x003f, 0xe682, 0x003f, 0xe68c, 0xe68e,
+    0x003f, 0x8caa, 0xe68a, 0x8d75, 0x003f, 0x8ed3, 0x003f, 0x003f,
+    0xe68f, 0x9777, 0x003f, 0x003f, 0x003f, 0x003f, 0xe692, 0x003f,
+    0xe695, 0x003f, 0x003f, 0xe693, 0x9554, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe690, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8bde, 0x003f, 0x003f, 0x003f, 0x003f, 0xe694, 0x003f,
+    0x003f, 0xe696, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe69a, 0x003f, 0x003f, 0xe697, 0x003f, 0xe699, 0xe698,
+    0x003f, 0x003f, 0x003f, 0xee8f, 0x003f, 0x003f, 0xe69b, 0x003f,
+    0x8eaf, 0x003f, 0xe69d, 0xe69c, 0x9588, 0x003f, 0x003f, 0xe69f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8c78, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe69e, 0xe6a0, 0x003f, 0x003f, 0xe6a1,
+    0x8b63, 0xe3bf, 0x8ff7, 0x003f, 0xe6a2, 0x003f, 0x003f, 0x8cec,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6a3, 0x003f, 0xee90,
+    0xe6a4, 0x003f, 0x003f, 0x8e5d, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9dcc, 0x003f, 0xe6a5, 0x003f, 0xe6a6, 0x003f,
+    0x8f51, 0x003f, 0xe6a7, 0xe6a8, 0x003f, 0x003f, 0xe6a9, 0x003f,
+    0x003f, 0xe6aa, 0xe6ab, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x8c00 .. 0x8cff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x924a,
+    0x003f, 0x003f, 0xe6ac, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6ae,
+    0x003f, 0xe6ad, 0x003f, 0x003f, 0x003f, 0x003f, 0x93a4, 0x003f,
+    0xe6af, 0x003f, 0x964c, 0x003f, 0xe6b0, 0x003f, 0xe6b1, 0x003f,
+    0xe6b2, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6b3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x93d8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8fdb, 0xe6b4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x8d8b, 0x98ac, 0xe6b5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe6b6, 0x955e, 0xe6b7, 0x003f, 0xe6bf, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe6b8, 0x003f, 0x003f, 0xe6ba, 0x003f, 0x003f,
+    0x003f, 0xe6b9, 0xe6bb, 0x003f, 0x9665, 0xe6bc, 0xe6bd, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe6be, 0x003f, 0x003f, 0x003f,
+    0xe6c0, 0x003f, 0x003f, 0x003f, 0x003f, 0x8a4c, 0x92e5, 0x003f,
+    0x9589, 0x8de0, 0x8d76, 0x003f, 0x003f, 0x003f, 0x003f, 0x956e,
+    0x89dd, 0x94cc, 0xe6c3, 0x8ad1, 0x90d3, 0xe6c2, 0xe6c7, 0x9299,
+    0x96e1, 0x003f, 0xe6c5, 0xe6c6, 0x8b4d, 0x003f, 0xe6c8, 0x9483,
+    0x91dd, 0x003f, 0x003f, 0x94ef, 0x935c, 0xe6c4, 0x003f, 0x9666,
+    0x89ea, 0xe6ca, 0x9847, 0x92c0, 0x9864, 0x003f, 0x003f, 0x8e91,
+    0xe6c9, 0x003f, 0x91af, 0x003f, 0x003f, 0xe6da, 0x9147, 0x003f,
+    0x003f, 0x93f6, 0x003f, 0x956f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe6cd, 0x8e5e, 0x8e92, 0x003f, 0x8fdc, 0x003f,
+    0x9485, 0x003f, 0x8cab, 0xe6cc, 0xe6cb, 0x003f, 0x958a, 0x003f,
+    0x003f, 0x003f, 0x8ebf, 0x003f, 0x003f, 0x9371, 0x003f, 0x003f,
+    0xee91, 0x003f, 0x003f, 0x003f, 0xee92, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe6cf, 0xe6d0, 0x8d77, 0xe6ce, 0x003f, 0x003f,
+    /* 0x8d00 .. 0x8dff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe6d1, 0xe6d2, 0x003f, 0xe6d4,
+    0x91a1, 0x003f, 0xe6d3, 0x8ae4, 0x003f, 0xe6d6, 0x003f, 0xe6d5,
+    0xe6d7, 0x003f, 0xee93, 0xe6d9, 0xe6db, 0x003f, 0xe6dc, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x90d4, 0x003f, 0x8ecd, 0xe6dd,
+    0x003f, 0x003f, 0x003f, 0x8a71, 0x003f, 0xe6de, 0x003f, 0x003f,
+    0x9196, 0xe6df, 0x003f, 0xe6e0, 0x958b, 0x003f, 0xee94, 0x8b4e,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe6e1, 0x003f, 0x003f, 0x003f, 0x92b4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x897a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe6e2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x8eef, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9096, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x91ab, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe6e5, 0x003f, 0x003f, 0x003f, 0xe6e4, 0x003f,
+    0x003f, 0x003f, 0xe6e3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe6eb, 0xe6e9, 0x003f, 0x003f, 0xe6e6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6e8, 0x003f,
+    0x003f, 0x003f, 0xe6e7, 0xe6ea, 0x003f, 0x8b97, 0x003f, 0xe6ee,
+    0x003f, 0x90d5, 0x003f, 0xe6ef, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8cd7, 0x003f, 0xe6ec, 0xe6ed, 0x003f, 0x003f, 0x003f, 0x9848,
+    0x003f, 0x003f, 0x003f, 0x92b5, 0x003f, 0x9148, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe6f0, 0x003f, 0x003f, 0xe6f3,
+    /* 0x8e00 .. 0x8eff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe6f1, 0xe6f2, 0x9778, 0x003f, 0x003f, 0x003f, 0x003f, 0x93a5,
+    0xe6f6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6f4, 0xe6f5, 0xe6f7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe748, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe6fa, 0x003f, 0x003f, 0x003f, 0xe6fb, 0xe6f9, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe6f8, 0x003f, 0x92fb, 0x003f, 0x003f, 0xe740,
+    0xe744, 0xe741, 0xe6fc, 0x003f, 0xe742, 0x003f, 0x003f, 0x003f,
+    0xe743, 0x003f, 0x003f, 0x003f, 0x003f, 0xe74a, 0x003f, 0x003f,
+    0x003f, 0xe745, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x90d6,
+    0xe747, 0x003f, 0x003f, 0xe749, 0xe746, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe74c, 0x003f, 0x8f52, 0x003f, 0xe74b, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe74d, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe74e, 0x003f, 0x003f, 0xe751, 0xe750, 0x003f, 0xe74f,
+    0x003f, 0x003f, 0xe753, 0xe752, 0x003f, 0x96f4, 0x003f, 0x003f,
+    0x003f, 0xe755, 0x003f, 0xe754, 0xe756, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe757, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe759, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe758, 0x9067, 0xe75a, 0x003f, 0x003f, 0x8beb,
+    0xe75b, 0xe75d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe75e, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe75f, 0xe75c, 0x003f,
+    0xe760, 0x003f, 0x8ed4, 0xe761, 0x8b4f, 0x8c52, 0x003f, 0xee96,
+    0x003f, 0x003f, 0x8cac, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe762, 0x003f, 0x003f, 0x003f, 0x93ee,
+    0x003f, 0x003f, 0x935d, 0xe763, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe766, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8eb2, 0x003f, 0x003f, 0xe765, 0xe764, 0x8c79, 0xe767, 0x003f,
+    /* 0x8f00 .. 0x8fff */
+    0x003f, 0x003f, 0x003f, 0x8a72, 0x003f, 0xe769, 0x003f, 0x003f,
+    0x003f, 0x8dda, 0xe768, 0x003f, 0xe771, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe76b, 0xe76d, 0x95e3, 0xe76a, 0x003f, 0x003f,
+    0x003f, 0xe76c, 0x003f, 0xe770, 0xe76e, 0x8b50, 0x003f, 0xe76f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe772, 0x003f,
+    0x003f, 0x9479, 0x97d6, 0x003f, 0x003f, 0x003f, 0x003f, 0x8f53,
+    0x003f, 0x003f, 0x003f, 0xe773, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9741, 0xe775, 0x003f, 0xe774, 0x003f, 0x003f, 0xe778, 0x9760,
+    0x003f, 0x003f, 0xe777, 0x003f, 0x8a8d, 0xe776, 0xe77b, 0x003f,
+    0x003f, 0xe77a, 0x003f, 0x003f, 0xe779, 0x9351, 0xe77c, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe77d,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe77e, 0x003f, 0x003f, 0x8d8c,
+    0x003f, 0x8c44, 0xe780, 0xe781, 0xe782, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9068, 0xe783, 0x003f, 0x8eab, 0xe784,
+    0x003f, 0x003f, 0x003f, 0xe785, 0x003f, 0x003f, 0x003f, 0x999f,
+    0x999e, 0x003f, 0x003f, 0x003f, 0x003f, 0xe786, 0xe390, 0xe787,
+    0x9243, 0x904a, 0x945f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe788,
+    0x003f, 0x003f, 0x95d3, 0x92d2, 0x8d9e, 0x003f, 0x003f, 0x9248,
+    0x003f, 0x003f, 0x8949, 0x003f, 0x9698, 0x9076, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8c7d, 0x003f,
+    0x003f, 0x8bdf, 0x003f, 0x003f, 0x95d4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe789, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe78b, 0x003f, 0x003f, 0xe78a, 0x89de, 0x003f,
+    0x003f, 0x93f4, 0xe78c, 0x9497, 0x003f, 0x9352, 0x003f, 0xe78d,
+    0x8f71, 0x003f, 0x003f, 0x003f, 0xe78f, 0x003f, 0x003f, 0x96c0,
+    0xe79e, 0xe791, 0xe792, 0x003f, 0x003f, 0x92c7, 0x003f, 0x003f,
+    /* 0x9000 .. 0x90ff */
+    0x91de, 0x9197, 0x003f, 0x93a6, 0x003f, 0xe790, 0x8b74, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe799, 0x003f, 0xe796, 0xe7a3, 0x93a7,
+    0x9280, 0xe793, 0x003f, 0x92fc, 0x9372, 0xe794, 0xe798, 0x9080,
+    0x003f, 0x9487, 0x92ca, 0x003f, 0x003f, 0x90c0, 0xe797, 0x91ac,
+    0x91a2, 0xe795, 0x88a7, 0x9841, 0x003f, 0x003f, 0x003f, 0xe79a,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x91df, 0x003f,
+    0x003f, 0x8f54, 0x9069, 0x003f, 0x003f, 0xe79c, 0xe79b, 0x003f,
+    0x88ed, 0xe79d, 0x003f, 0x003f, 0x954e, 0x003f, 0xe7a5, 0x003f,
+    0x003f, 0x93d9, 0x908b, 0x003f, 0x003f, 0x9278, 0x003f, 0x8bf6,
+    0x003f, 0xe7a4, 0x9756, 0x895e, 0x003f, 0x95d5, 0x89df, 0xe79f,
+    0xe7a0, 0xe7a1, 0xe7a2, 0x93b9, 0x9242, 0x88e1, 0xe7a6, 0x003f,
+    0xe7a7, 0xeaa1, 0x003f, 0x003f, 0x91bb, 0x003f, 0xe7a8, 0x003f,
+    0x8993, 0x916b, 0x003f, 0x8cad, 0x003f, 0x9779, 0x003f, 0xee99,
+    0xe7a9, 0x934b, 0x003f, 0x003f, 0x003f, 0x9198, 0x8ed5, 0xe7aa,
+    0x003f, 0x003f, 0xe7ad, 0x003f, 0x003f, 0x8f85, 0xe7ab, 0x914a,
+    0x9149, 0x003f, 0x88e2, 0x003f, 0x97c9, 0xe7af, 0x003f, 0x94f0,
+    0xe7b1, 0xe7b0, 0xe7ae, 0xe284, 0x8ad2, 0x003f, 0x003f, 0xe78e,
+    0x003f, 0xe7b3, 0xe7b2, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7b4,
+    0x003f, 0x9757, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x93df, 0x003f, 0x003f, 0x964d, 0x003f,
+    0xe7b5, 0x003f, 0x8ed7, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7b6,
+    0x003f, 0xe7b7, 0x003f, 0x003f, 0x003f, 0xe7b8, 0x003f, 0x003f,
+    0x9340, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x88e8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x8d78, 0x003f, 0x003f, 0x003f, 0x9859, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe7bc, 0x003f, 0x003f, 0xee9a, 0x003f,
+    0x003f, 0x8c53, 0xe7b9, 0x003f, 0xe7ba, 0x003f, 0x003f, 0x003f,
+    0x9594, 0x003f, 0x003f, 0x003f, 0x003f, 0x8a73, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9758, 0x003f, 0x8bbd,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9373, 0x003f, 0x003f,
+    /* 0x9100 .. 0x91ff */
+    0x003f, 0x003f, 0xe7bd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe7be, 0x003f, 0x003f, 0xee9c, 0x003f, 0x003f,
+    0x003f, 0xe7bf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xee9d,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9341, 0x003f, 0x003f,
+    0xe7c1, 0x003f, 0xe7c0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x93d1, 0xe7c2, 0x8f55, 0x8ede, 0x947a, 0x9291, 0x003f,
+    0x003f, 0x003f, 0x8ef0, 0x003f, 0x908c, 0x003f, 0xe7c3, 0x003f,
+    0xe7c4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x907c, 0xe7c5, 0x003f, 0xe7c6, 0x003f, 0x003f,
+    0x003f, 0xe7c7, 0x978f, 0x003f, 0x8f56, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe7c9, 0xe7c8, 0x003f, 0x8d79, 0x003f, 0x8d93,
+    0x8e5f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe7cc, 0x003f, 0x003f, 0x003f, 0x003f, 0x8f86,
+    0x003f, 0xe7cb, 0x003f, 0xe7ca, 0x003f, 0x91e7, 0x003f, 0x003f,
+    0x8ced, 0x003f, 0x90c1, 0x003f, 0x003f, 0x003f, 0x003f, 0x94ae,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8f58, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe7cd, 0x003f, 0x8fdd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe7d0, 0xe7ce, 0x003f, 0x003f, 0x003f, 0xe7cf,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe7d2, 0xe7d1, 0x003f, 0x003f,
+    0x8ff8, 0x003f, 0xe7d3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe7d4, 0xe7d5, 0x003f, 0x003f, 0x003f, 0x003f, 0x94ce, 0x8dd1,
+    0x8edf, 0xe7d6, 0x003f, 0xe7d7, 0x97a2, 0x8f64, 0x96ec, 0x97ca,
+    0xe7d8, 0x8be0, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7d9, 0xee9f,
+    0x9342, 0x003f, 0xee9e, 0xe7dc, 0x8a98, 0x906a, 0xeea0, 0xe7da,
+    0x003f, 0xe7db, 0x003f, 0x92de, 0xeea3, 0xeea4, 0x9674, 0x8bfa,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeea1, 0xeea2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7de, 0xe7df, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe7dd, 0x003f, 0x003f, 0xe7e1,
+    /* 0x9200 .. 0x92ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeea5, 0x003f,
+    0x003f, 0x003f, 0xeea7, 0x003f, 0x003f, 0x93dd, 0x8a62, 0x003f,
+    0xeea6, 0xe7e5, 0x003f, 0x003f, 0xe7e2, 0xe7e4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7e0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe86e, 0x003f, 0x003f, 0xe7e3, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x97e9, 0x003f, 0x003f, 0x8cd8,
+    0x003f, 0xeeae, 0xeea8, 0x003f, 0xeeaa, 0x003f, 0x003f, 0xe7ed,
+    0xeea9, 0x003f, 0x003f, 0x003f, 0x9353, 0xe7e8, 0x003f, 0x003f,
+    0xe7eb, 0xe7e9, 0x003f, 0xe7ee, 0x003f, 0x003f, 0xeeab, 0x003f,
+    0xe7ef, 0xeead, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7e7,
+    0x003f, 0xeeac, 0xe7f4, 0x8994, 0x003f, 0x003f, 0xe7e6, 0x003f,
+    0x003f, 0x003f, 0x94ab, 0x003f, 0xe7ea, 0x003f, 0x8fde, 0xeeaf,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8d7a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeeb1,
+    0xeeb2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9667, 0x003f,
+    0x8be2, 0x003f, 0x003f, 0x8f65, 0x003f, 0x93ba, 0x003f, 0x003f,
+    0xed43, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x914c, 0x003f, 0xe7f2, 0x003f, 0xe7ec, 0xe7f1, 0x003f,
+    0x96c1, 0x003f, 0x92b6, 0xe7f3, 0xe7f0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeeb0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x914b, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7f7,
+    0x003f, 0xe7f6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7f5,
+    0xeeb6, 0x003f, 0x964e, 0xeeba, 0x003f, 0xeeb8, 0x003f, 0xeeb4,
+    0x003f, 0xeeb5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xeeb9, 0x003f, 0x003f, 0x003f, 0x8f9b, 0x003f, 0x003f, 0xeeb3,
+    0x003f, 0xe7f8, 0x95dd, 0x003f, 0x003f, 0x8973, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9565, 0x9292, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8b98, 0xed49, 0xe7fa, 0xeebd, 0x8d7c, 0x003f, 0x003f, 0xeec0,
+    /* 0x9300 .. 0x93ff */
+    0x003f, 0x003f, 0xeec2, 0x003f, 0x003f, 0x003f, 0x8e4b, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7f9,
+    0x908d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x908e, 0xe840, 0xe842, 0x003f, 0x003f, 0xeec1, 0xeebf, 0x003f,
+    0x8ff9, 0xeebc, 0xe841, 0xe843, 0x003f, 0xeebb, 0x8bd1, 0x003f,
+    0x9564, 0x003f, 0x003f, 0x8ee0, 0x9842, 0x003f, 0xe7fc, 0x8df6,
+    0x003f, 0x003f, 0x985e, 0x003f, 0x003f, 0xe845, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe844, 0xe846, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe7fb, 0x003f, 0x003f, 0x003f,
+    0xed42, 0x003f, 0x003f, 0x93e7, 0x003f, 0x9374, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x92d5, 0x003f, 0xe84b, 0xeec4,
+    0x003f, 0x003f, 0x003f, 0x9262, 0xe847, 0x003f, 0x003f, 0x003f,
+    0xe848, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8c4c, 0x003f, 0xe84a, 0x003f,
+    0xeec3, 0x003f, 0x003f, 0x003f, 0x003f, 0x8cae, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe849, 0x003f, 0x8fdf, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8a99, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe84f, 0x003f, 0x8dbd, 0x9199,
+    0x003f, 0x003f, 0x92c8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xeec5, 0x003f, 0x003f, 0x8a5a,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe84d, 0xe84e, 0x92c1, 0x003f,
+    0xe84c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe850, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe856, 0x003f, 0x003f, 0xeec6, 0x003f,
+    0xe859, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe858, 0x934c, 0x003f, 0x003f, 0x003f, 0x003f, 0xe851, 0xe852,
+    0xe855, 0x003f, 0x003f, 0x003f, 0x003f, 0xe857, 0xeec7, 0x003f,
+    0x003f, 0x8bbe, 0x003f, 0x003f, 0xe85a, 0xe854, 0x003f, 0x003f,
+    0xe853, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xeec8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9400 .. 0x94ff */
+    0x003f, 0x003f, 0x003f, 0xe85e, 0x003f, 0x003f, 0x003f, 0xe85f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe860, 0x003f, 0x003f, 0xe85d, 0xe85c, 0x003f, 0x003f, 0x003f,
+    0x8fe0, 0x93a8, 0xe85b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe864, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe862, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeec9, 0x003f, 0x003f, 0x003f, 0xe863, 0xe861, 0x003f,
+    0x91f6, 0x003f, 0xe865, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe866, 0x003f, 0x003f, 0xe868, 0xeeca, 0x003f, 0x003f,
+    0xeecb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8ad3, 0xe867, 0x96f8, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe873, 0xe869, 0x003f, 0x003f, 0xe86c, 0x003f,
+    0xe86a, 0x003f, 0xe86b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe86d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe86f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe870, 0x003f, 0xe871,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe874, 0xe872, 0xe875, 0xe877,
+    0x003f, 0xe876, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9500 .. 0x95ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x92b7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x96e5, 0x003f, 0xe878, 0x914d, 0x003f, 0x003f, 0x003f, 0xe879,
+    0x003f, 0x95c2, 0xe87a, 0x8a4a, 0x003f, 0x003f, 0x003f, 0x895b,
+    0x003f, 0x8ad5, 0xeecc, 0x8ad4, 0xe87b, 0x003f, 0xe87c, 0x003f,
+    0xe87d, 0xe87e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe880, 0x003f, 0x8ad6, 0x8a74, 0x8d7d, 0x94b4, 0x003f, 0xe882,
+    0xe881, 0x003f, 0x003f, 0x003f, 0x003f, 0xe883, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x897b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe886, 0x003f, 0xe885, 0xe884, 0x003f, 0xe887, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe88a, 0x003f, 0x003f, 0x003f, 0x88c5,
+    0x003f, 0x003f, 0xe888, 0x003f, 0xe88c, 0xe88b, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe88e, 0xe88d, 0xe88f, 0x003f,
+    0x93ac, 0x003f, 0x003f, 0x003f, 0xe890, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe891, 0xe893, 0x003f, 0x003f, 0xe892, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9600 .. 0x96ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x958c, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe894, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe895, 0x003f, 0x8de3, 0x003f, 0x003f, 0x003f, 0xe896, 0xe897,
+    0x003f, 0x003f, 0x9668, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x916a, 0x003f, 0x003f, 0x003f, 0x88a2,
+    0x91c9, 0x003f, 0xe898, 0x003f, 0x958d, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe89b, 0xe899, 0x8d7e, 0x003f, 0xe89a,
+    0x8cc0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x95c3, 0xe89d, 0xe89f, 0xe89e, 0xe8a0,
+    0x003f, 0x003f, 0x8940, 0x9077, 0x8f9c, 0x8ad7, 0xe8a1, 0x003f,
+    0x003f, 0x003f, 0x9486, 0x003f, 0xe8a3, 0x003f, 0x003f, 0x003f,
+    0x8941, 0x003f, 0xe8a2, 0x92c2, 0x003f, 0x97cb, 0x93a9, 0xe89c,
+    0x97a4, 0x003f, 0x8caf, 0x003f, 0x003f, 0x977a, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8bf7, 0x97b2, 0x003f,
+    0x8c47, 0x003f, 0x91e0, 0xe440, 0x003f, 0xe8a4, 0x8a4b, 0x908f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8a75, 0xe8a6, 0x003f, 0xe8a7,
+    0xe8a5, 0x8c84, 0x003f, 0x8ddb, 0x8fe1, 0xeecf, 0x003f, 0x003f,
+    0x8942, 0x003f, 0x003f, 0x97d7, 0x003f, 0x003f, 0x003f, 0xe8a9,
+    0xe7ac, 0x003f, 0xe8a8, 0x003f, 0x003f, 0x003f, 0x003f, 0xeed0,
+    0xe8ac, 0xe8aa, 0xe8ab, 0x003f, 0xe8ad, 0x003f, 0xe8ae, 0x97ea,
+    0xe8af, 0xe8b0, 0x003f, 0x90c7, 0x94b9, 0x003f, 0x003f, 0x003f,
+    0x909d, 0x8ae5, 0x003f, 0x003f, 0x9759, 0x89eb, 0x8f57, 0x8cd9,
+    0x003f, 0xe8b3, 0x003f, 0xe8b2, 0x8e93, 0xe8b4, 0xe8b1, 0x003f,
+    0x003f, 0x8e47, 0x003f, 0x003f, 0x003f, 0xe8b8, 0xe5ab, 0x003f,
+    0x003f, 0x99d4, 0x003f, 0x9097, 0xe8b6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x97a3, 0x93ef, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x894a, 0x003f, 0x90e1, 0x8eb4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x95b5, 0x003f, 0x895f, 0x003f, 0x003f, 0x003f, 0x97eb, 0x978b,
+    0x003f, 0xe8b9, 0x003f, 0x9364, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9700 .. 0x97ff */
+    0x8ef9, 0x003f, 0x003f, 0x003f, 0xe8ba, 0x003f, 0xe8bb, 0x906b,
+    0xe8bc, 0x003f, 0x97ec, 0x003f, 0x003f, 0xe8b7, 0xe8be, 0xe8c0,
+    0x003f, 0xe8bf, 0x003f, 0xe8bd, 0x003f, 0x003f, 0xe8c1, 0x003f,
+    0x003f, 0xe8c2, 0x003f, 0x003f, 0x919a, 0x003f, 0x89e0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe8c3, 0x003f, 0x003f, 0x96b6,
+    0x003f, 0x003f, 0xe8c4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe8c5, 0x003f, 0x9849, 0xeed1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9e50, 0xe8c6, 0x003f, 0xeed2, 0x003f, 0xe8c7, 0xe8c8, 0x003f,
+    0x003f, 0x003f, 0xe8cc, 0xeed3, 0xe8c9, 0x003f, 0xe8ca, 0x003f,
+    0xe8cb, 0xe8cd, 0x003f, 0x003f, 0x003f, 0xeed4, 0x003f, 0xeed5,
+    0x003f, 0xeed6, 0x90c2, 0x003f, 0x003f, 0xeed7, 0x96f5, 0x003f,
+    0x003f, 0x90c3, 0x003f, 0x003f, 0xe8ce, 0x003f, 0x94f1, 0x003f,
+    0xe8cf, 0xea72, 0x96ca, 0x003f, 0xe8d0, 0x003f, 0xe8d1, 0x003f,
+    0xe8d2, 0x8a76, 0x003f, 0xe8d4, 0x003f, 0x9078, 0x003f, 0x003f,
+    0x003f, 0xe8d5, 0x003f, 0x003f, 0x8c43, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe8d6, 0xe8da, 0x003f, 0xe8d8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe8d9, 0x003f, 0x003f, 0x8a93, 0xe8d7, 0xe8db, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe8dc, 0x003f, 0x88c6, 0x003f, 0xe8dd,
+    0xe8de, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8fe2, 0x003f, 0x003f, 0x003f, 0xe8df, 0x003f, 0x003f, 0x003f,
+    0x8b66, 0x003f, 0x003f, 0xe8e2, 0x003f, 0x003f, 0xe8e1, 0x003f,
+    0xe8e0, 0x003f, 0x003f, 0xe691, 0x003f, 0x95da, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe8e3, 0xe8e4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe8e5, 0x003f, 0x003f, 0xe8e6, 0x003f,
+    0xe8e7, 0x003f, 0x003f, 0xe8e8, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x8ad8, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe8e9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8ea, 0x9442, 0x003f,
+    0x003f, 0x003f, 0xe8ec, 0x89b9, 0x003f, 0xe8ef, 0xe8ee, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x8943, 0x003f, 0x003f, 0x003f, 0x8bbf,
+    /* 0x9800 .. 0x98ff */
+    0x003f, 0x95c5, 0x92b8, 0x8da0, 0x003f, 0x8d80, 0x8f87, 0x003f,
+    0x907b, 0x003f, 0x003f, 0x003f, 0xe8f1, 0x003f, 0x003f, 0xe8f0,
+    0x9761, 0x8ae6, 0x94d0, 0x93da, 0x003f, 0x003f, 0x003f, 0x909c,
+    0x97cc, 0x003f, 0x8c7a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe8f4, 0x003f, 0x003f, 0xe8f3, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x966a, 0x93aa, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x896f, 0x003f, 0x003f, 0xe8f5,
+    0xe8f2, 0x003f, 0x003f, 0x9570, 0x978a, 0xe8f6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8f7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe8f9, 0x91e8, 0x8a7a, 0x8a7b, 0xe8f8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8ae7, 0x8cb0, 0x003f, 0xeed8,
+    0x8ae8, 0x003f, 0x003f, 0x935e, 0x003f, 0x003f, 0x97de, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeed9, 0x003f, 0x8cda,
+    0x003f, 0x003f, 0x003f, 0xe8fa, 0x003f, 0x003f, 0x003f, 0xe8fb,
+    0xe8fc, 0xe940, 0x003f, 0xe942, 0xe941, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9597, 0x003f, 0xe943, 0x003f, 0x003f, 0x003f, 0x003f, 0xe944,
+    0x003f, 0xe945, 0x003f, 0x003f, 0x003f, 0x003f, 0xe946, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe948, 0xe947, 0x003f, 0xe949, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x94f2, 0xe3ca, 0x003f, 0x003f, 0x9048,
+    0x003f, 0x003f, 0x8b51, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe94a, 0x003f, 0xe94b, 0x003f, 0x99aa, 0x9f5a, 0x94d1,
+    0x003f, 0x003f, 0x88f9, 0x003f, 0x88b9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x8e94, 0x964f, 0x8ffc, 0x003f,
+    /* 0x9900 .. 0x99ff */
+    0x003f, 0x003f, 0x003f, 0xe94c, 0x003f, 0x96dd, 0x003f, 0x003f,
+    0x003f, 0xe94d, 0x977b, 0x003f, 0x8961, 0x003f, 0x003f, 0x003f,
+    0x8e60, 0x003f, 0xe94e, 0x89ec, 0xe94f, 0x003f, 0x003f, 0x003f,
+    0xe950, 0x003f, 0x003f, 0x003f, 0x003f, 0xe952, 0xe953, 0x003f,
+    0xe955, 0xe951, 0x003f, 0x003f, 0xe954, 0x003f, 0x003f, 0xeedc,
+    0x8ad9, 0x003f, 0x003f, 0x003f, 0xe956, 0x003f, 0xe957, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe958, 0xe959, 0x003f,
+    0x003f, 0x003f, 0xe95a, 0x003f, 0x003f, 0xe95c, 0x003f, 0x003f,
+    0x003f, 0xe95b, 0x003f, 0xe95e, 0xe961, 0x003f, 0x003f, 0x003f,
+    0xe95d, 0xe95f, 0xe960, 0x003f, 0x003f, 0xe962, 0x003f, 0x8bc0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8ef1, 0xe963,
+    0xe964, 0x8d81, 0x003f, 0x003f, 0x003f, 0x003f, 0xeede, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe965, 0x003f, 0x003f,
+    0x8a5d, 0x003f, 0x003f, 0x003f, 0x946e, 0xe966, 0xe967, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9279, 0x93e9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe968, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x949d, 0x003f, 0x003f, 0x91ca, 0x8977, 0x8bec, 0x003f,
+    0x8bed, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9293, 0xe96d, 0x8bee, 0x003f, 0x003f, 0x89ed, 0x003f, 0x003f,
+    0xe96c, 0x003f, 0x003f, 0xe96a, 0x003f, 0xe96b, 0x003f, 0xe969,
+    0x003f, 0x003f, 0xe977, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe96e, 0xe96f, 0x003f,
+    0x003f, 0xe970, 0xe971, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe973, 0x003f, 0x003f, 0xe972, 0x003f, 0x003f, 0x003f, 0x8f78,
+    /* 0x9a00 .. 0x9aff */
+    0x003f, 0xe974, 0x003f, 0x003f, 0x003f, 0xe976, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8b52, 0xe975,
+    0x003f, 0x003f, 0x919b, 0x8cb1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe978, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x91cb, 0x003f, 0x003f, 0xe979, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x93ab, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe97a,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe980, 0x003f,
+    0xe97d, 0x003f, 0xe97c, 0xe97e, 0x003f, 0xe97b, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe982, 0xeedf, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe981, 0x003f, 0xe984,
+    0x003f, 0x003f, 0x8bc1, 0xe983, 0x003f, 0x003f, 0x003f, 0xe985,
+    0x003f, 0x003f, 0xe986, 0x003f, 0xe988, 0xe987, 0x003f, 0x003f,
+    0x003f, 0xe989, 0xe98b, 0xe98a, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8d9c, 0x003f, 0x003f, 0x003f, 0x003f, 0xe98c, 0x003f, 0x003f,
+    0xe98d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8a5b, 0x003f, 0x003f, 0x003f, 0xe98e, 0x003f, 0x003f, 0x003f,
+    0xe98f, 0x003f, 0x003f, 0x003f, 0x9091, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe990,
+    0x003f, 0xe991, 0x003f, 0xe992, 0xe993, 0x003f, 0x003f, 0x003f,
+    0x8d82, 0xeee0, 0x003f, 0x003f, 0xeee1, 0x003f, 0xe994, 0xe995,
+    0x003f, 0x003f, 0xe996, 0xe997, 0x003f, 0x003f, 0xe998, 0x003f,
+    0x003f, 0x003f, 0x94af, 0xe99a, 0x003f, 0x9545, 0xe99b, 0xe999,
+    0x003f, 0xe99d, 0x003f, 0x003f, 0xe99c, 0x003f, 0x003f, 0xe99e,
+    0x003f, 0x003f, 0x003f, 0xe99f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9b00 .. 0x9bff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9a0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe9a1, 0x003f, 0xe9a2, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9a3,
+    0x003f, 0x003f, 0xe9a4, 0xe9a5, 0x003f, 0xe9a6, 0x003f, 0xe9a7,
+    0xe9a8, 0xe9a9, 0xe9aa, 0x003f, 0x003f, 0x003f, 0xe9ab, 0xe9ac,
+    0x003f, 0x9f54, 0xe9ad, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe2f6, 0x8b53, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8a40, 0x8db0, 0xe9af, 0xe9ae, 0x96a3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9b1, 0xe9b2, 0xe9b0,
+    0x003f, 0xe9b3, 0x003f, 0x003f, 0x9682, 0x003f, 0x003f, 0x003f,
+    0xe9b4, 0x003f, 0x8b9b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9844,
+    0x003f, 0x003f, 0xeee3, 0x003f, 0xe9b5, 0xeee2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe9b7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x88bc, 0xeee4,
+    0x003f, 0xe9b8, 0x95a9, 0xe9b6, 0x003f, 0x003f, 0xe9b9, 0xe9ba,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9bb,
+    0xe9bc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe9bd, 0x003f, 0x968e, 0x8e4c, 0x003f, 0x8df8, 0x914e, 0x003f,
+    0x003f, 0xeee5, 0x003f, 0x003f, 0xe9be, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe9c1, 0x003f, 0xeee6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe9bf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9c2, 0x003f,
+    0x003f, 0x8cef, 0xe9c0, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9c3,
+    0x003f, 0xe9c4, 0xe9c5, 0x003f, 0xe9c9, 0x003f, 0x8e49, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x91e2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe9ca, 0xe9c7, 0xe9c6, 0xe9c8, 0x003f, 0x003f, 0x003f,
+    0x8c7e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe9ce, 0xe9cd, 0xe9cc, 0x003f, 0x003f, 0x88b1, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9c00 .. 0x9cff */
+    0xeee7, 0x003f, 0x003f, 0x003f, 0xe9d8, 0x003f, 0xe9d4, 0x003f,
+    0xe9d5, 0xe9d1, 0xe9d7, 0x003f, 0xe9d3, 0x8a82, 0x003f, 0x003f,
+    0x986b, 0x003f, 0xe9d6, 0xe9d2, 0xe9d0, 0xe9cf, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe9da, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe9dd, 0x003f, 0x003f, 0xe9dc, 0xe9db, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9568, 0xe9d9, 0x88f1,
+    0xe9de, 0x003f, 0xe9e0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8a8f, 0xe9cb, 0x8956, 0x003f, 0x003f, 0xe9e2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9e1, 0xe9df,
+    0x924c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x9690, 0x003f, 0x003f, 0x003f, 0x003f, 0x97d8,
+    0x003f, 0x003f, 0xe9e3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe9e4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9e5,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9e6, 0x003f,
+    0xe9e7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x92b9, 0x003f, 0xe9e8,
+    0x003f, 0x94b5, 0x003f, 0xe9ed, 0xe9e9, 0x003f, 0x003f, 0x003f,
+    0xe9ea, 0x003f, 0x003f, 0x9650, 0x96c2, 0x003f, 0x93ce, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9d00 .. 0x9dff */
+    0x003f, 0x003f, 0x003f, 0xe9ee, 0x003f, 0x003f, 0xe9ef, 0x93bc,
+    0xe9ec, 0xe9eb, 0x003f, 0x003f, 0x003f, 0x003f, 0x89a8, 0x003f,
+    0x003f, 0x003f, 0xe9f7, 0x003f, 0x003f, 0xe9f6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x8995, 0x003f, 0x003f, 0x003f, 0xe9f4,
+    0x003f, 0x003f, 0x003f, 0xe9f3, 0x003f, 0x003f, 0xe9f1, 0x003f,
+    0x8a9b, 0x003f, 0xe9f0, 0x8eb0, 0x89a7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x8d83, 0x003f, 0x003f, 0xe9fa, 0xe9f9,
+    0x003f, 0xe9f8, 0x003f, 0x003f, 0xe9f5, 0x003f, 0xe9fb, 0x003f,
+    0xe9fc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xea44, 0xea43, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xea45, 0x003f, 0x003f, 0x894c, 0xea40, 0xea41, 0x003f,
+    0x8d94, 0x96b7, 0x003f, 0x003f, 0xea42, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xeee9, 0x9651, 0x003f, 0x003f, 0xea4a,
+    0xeee8, 0x003f, 0xea46, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xea4b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xea48,
+    0x003f, 0xea47, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x8c7b,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xea4c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xea4d, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xea4e, 0x003f, 0xea49, 0x003f, 0x003f, 0x003f, 0xe9f2,
+    0x003f, 0x003f, 0xea4f, 0x003f, 0x92df, 0x003f, 0x003f, 0x003f,
+    0xea53, 0x003f, 0xea54, 0xea52, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xea51, 0xea57, 0x003f, 0xea50, 0x003f, 0xea55, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xea56,
+    0x003f, 0x003f, 0x003f, 0xea59, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xea58, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xea5b, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xea5c, 0x003f, 0xea5d,
+    0x003f, 0x003f, 0x9868, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xea5a, 0x91e9, 0x8deb, 0x003f, 0x003f, 0xea5e, 0x003f, 0x003f,
+    /* 0x9e00 .. 0x9eff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeeeb, 0xea5f, 0xea60, 0x003f, 0x003f, 0xea61, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xea62, 0x003f, 0x003f,
+    0x8cb2, 0xea63, 0x003f, 0x003f, 0x003f, 0xea64, 0x003f, 0x8ead,
+    0x003f, 0xea65, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xea66, 0x003f, 0x003f, 0xea67, 0xea68, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xea6b, 0xea69, 0x985b, 0x003f, 0xea6a, 0x003f, 0x97ed,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xea6c, 0x003f, 0x97d9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xea6d, 0x949e, 0x003f,
+    0x003f, 0xea6e, 0xea70, 0x003f, 0x003f, 0xea71, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xea6f, 0x8d8d, 0x96cb, 0x9683, 0x9bf5, 0x003f, 0x9f80, 0x969b,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x89a9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xea73, 0x8b6f, 0xea74, 0xea75,
+    0xea76, 0xeeec, 0x8d95, 0x003f, 0xea77, 0x003f, 0x003f, 0x003f,
+    0xe0d2, 0x96d9, 0x003f, 0x91e1, 0xea78, 0xea7a, 0xea79, 0x003f,
+    0xea7b, 0x003f, 0x003f, 0x003f, 0x003f, 0xea7c, 0x003f, 0x003f,
+    0xea7d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xea7e,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xea80, 0x003f, 0xea81, 0xea82,
+    0x003f, 0xea83, 0x003f, 0xea84, 0xea85, 0xea86, 0x003f, 0x003f,
+    /* 0x9f00 .. 0x9fff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xea87,
+    0xea88, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x9343, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x8cdb, 0x003f, 0xea8a, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x916c, 0xea8b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xea8c, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x9540, 0x003f, 0x003f, 0xea8d, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xea8e, 0xe256, 0x003f, 0x003f, 0xe6d8, 0xe8eb,
+    0x003f, 0x003f, 0xea8f, 0x003f, 0xea90, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xea92,
+    0xea93, 0xea94, 0x97ee, 0xea91, 0x003f, 0x003f, 0xea95, 0xea96,
+    0x003f, 0x003f, 0xea98, 0x003f, 0xea97, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xea9a, 0x003f, 0x003f, 0x003f, 0xea9b, 0xea99,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x97b4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xea9c, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xea9d, 0xe273, 0x003f, 0x003f,
+    0xea9e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0xf900 .. 0xf9ff */
+    0xe6af, 0x8d58, 0x8ed4, 0xe6c9, 0x8a8a, 0x8bf8, 0x8be5, 0xea9d,
+    0xea9d, 0x8c5f, 0x8be0, 0x9a68, 0x93de, 0x9cef, 0xe19a, 0x9785,
+    0xe566, 0x9786, 0x9787, 0xe7b4, 0x9ed9, 0x978c, 0xe080, 0xe0e2,
+    0x978e, 0x978f, 0xe970, 0x98aa, 0x9791, 0x9793, 0xe0a3, 0x9796,
+    0xea61, 0x9792, 0x9794, 0x9795, 0xe641, 0x9d66, 0xe463, 0x003f,
+    0x984c, 0xedc4, 0x9851, 0x9854, 0x9859, 0x98d2, 0x97e2, 0x99a7,
+    0x003f, 0x9845, 0xe0a2, 0xe1b8, 0x9856, 0xe562, 0x97b8, 0x9848,
+    0x9849, 0x9844, 0x8deb, 0xe1ef, 0xe252, 0xee70, 0x003f, 0x003f,
+    0x8ead, 0x985f, 0x9ae0, 0x984d, 0xe2c4, 0x9857, 0x9853, 0xe1fb,
+    0x9847, 0x978b, 0x9adc, 0x003f, 0x9eea, 0x003f, 0x9852, 0x97dd,
+    0xe37e, 0xe89b, 0xe8d3, 0x985d, 0xeaa3, 0x97bd, 0x97c5, 0x88bb,
+    0x9548, 0x97cb, 0xe6a4, 0x9d5b, 0x9ed9, 0x91f8, 0x924f, 0x944a,
+    0x937b, 0x97a6, 0x88d9, 0x966b, 0x003f, 0x95d6, 0x959c, 0x9573,
+    0x94e5, 0x9dc9, 0x8df5, 0x99d2, 0x8dc7, 0x8fc8, 0x9774, 0x003f,
+    0x8e45, 0x9243, 0x92be, 0x8f45, 0x8ee1, 0x97a9, 0x97aa, 0x97ba,
+    0x995f, 0x9979, 0x97c0, 0x97c6, 0x97c7, 0x97c8, 0x97ca, 0x99ad,
+    0x9843, 0x8f97, 0x9c49, 0x97b7, 0xe068, 0xe1e8, 0xe883, 0xe98b,
+    0x97ed, 0xea74, 0x97cd, 0x003f, 0x003f, 0xe780, 0x944e, 0x97f7,
+    0x9cf6, 0x9451, 0x97f8, 0x97f9, 0xee50, 0x003f, 0x97fb, 0x97fc,
+    0xe772, 0x9840, 0x9841, 0x003f, 0x97f1, 0x97f2, 0x88f4, 0x97f3,
+    0x97f4, 0x003f, 0x97f5, 0x944f, 0x9450, 0x003f, 0x97fa, 0xe0d8,
+    0x97df, 0x9a9a, 0x944a, 0x97e4, 0x97e5, 0x97e6, 0xe0f0, 0xe3b7,
+    0xe3d7, 0x97e9, 0x97eb, 0xe8cb, 0x97cc, 0x97e1, 0xe258, 0xe7d2,
+    0xe8af, 0x9ca6, 0x97b9, 0x97bb, 0x97be, 0x9441, 0x97bf, 0x9ed9,
+    0xe099, 0x97c3, 0xe4f8, 0x97c9, 0x97b4, 0x9df2, 0xe896, 0x97ab,
+    0x003f, 0x96f6, 0x97ac, 0x97ad, 0x97ae, 0x97af, 0x97b0, 0x9552,
+    0x97de, 0x985a, 0x9d43, 0x97a4, 0x97cf, 0x9bc4, 0x9fcb, 0x97d6,
+    0x97a5, 0x9cc9, 0x8c49, 0x97a6, 0xeecd, 0x9798, 0x9799, 0x979a,
+    0x88d5, 0x979b, 0x979c, 0x9344, 0x979d, 0x979f, 0x9ceb, 0x97a0,
+    0x97a1, 0x97a2, 0x97a3, 0x93bd, 0x934d, 0x99e5, 0x97d3, 0x003f,
+    0xe561, 0x97d7, 0x97d8, 0x97d9, 0x97d1, 0x97d2, 0x97d5, 0x97a7,
+    0x8a7d, 0x97b1, 0x003f, 0xe074, 0x8eaf, 0x8f59, 0x9283, 0x8e68,
+    /* 0xfa00 .. 0xfaff */
+    0x90d8, 0x9378, 0x91f1, 0x939c, 0x91ee, 0x93b4, 0x965c, 0xe774,
+    0x8d73, 0x8d7e, 0x8ca9, 0x8a66, 0x9959, 0x003f, 0xed73, 0xed7e,
+    0xed80, 0xed95, 0xedbc, 0xedcc, 0xedce, 0xedf9, 0xee42, 0xee59,
+    0xee61, 0xee62, 0xee63, 0xee65, 0xee69, 0xee6c, 0xee75, 0xee81,
+    0xee83, 0xee84, 0xee8d, 0xee95, 0xee97, 0xee98, 0xee9b, 0xeeb7,
+    0xeebe, 0xeece, 0xeeda, 0xeedb, 0xeedd, 0xeeea, 0x003f, 0x003f,
+    0x958e, 0x916d, 0x96c6, 0x95d7, 0x8bce, 0x94da, 0x8a85, 0x9251,
+    0x8aed, 0x95bb, 0x966e, 0x9177, 0x9ba3, 0x89f7, 0x8a53, 0x919e,
+    0x92a6, 0x9571, 0x8af9, 0x8f8b, 0x947e, 0x8a43, 0x8f8d, 0x8abf,
+    0x8ecf, 0x003f, 0x91f4, 0x94e8, 0x8ed0, 0x8e83, 0x8b46, 0x9753,
+    0x9163, 0x8f6a, 0x89d0, 0x92f5, 0x8d92, 0x93cb, 0x90df, 0x97fb,
+    0xe375, 0x94c9, 0x8f90, 0x8ed2, 0x8f4c, 0x003f, 0x003f, 0x9298,
+    0x8a8c, 0x8e8b, 0x8979, 0x8bde, 0x956f, 0x91a1, 0x003f, 0x88ed,
+    0x93ef, 0x8bbf, 0x9570, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x95c0, 0x9976, 0x9153, 0x003f, 0x8f5b, 0x9962, 0x9745, 0x8ed9,
+    0x8a85, 0x003f, 0x9a5b, 0x003f, 0x92cb, 0x95ad, 0x8982, 0x967a,
+    0x9b58, 0x003f, 0x003f, 0x003f, 0x8dca, 0x9c73, 0x9caf, 0x9054,
+    0x96fa, 0x919e, 0x003f, 0x92a6, 0x91d5, 0x9d89, 0x9d72, 0x003f,
+    0x9dc2, 0x90b0, 0x984e, 0x965d, 0x8ff1, 0x9f65, 0x8e45, 0x97ac,
+    0x003f, 0x8ea0, 0x8abf, 0x93d2, 0x8ecf, 0x003f, 0x8edd, 0x94c6,
+    0x9296, 0x003f, 0x003f, 0x89e6, 0x003f, 0xe189, 0x8976, 0x90b7,
+    0x92bc, 0x003f, 0x9285, 0x003f, 0x003f, 0x90df, 0x003f, 0xe355,
+    0x97fb, 0x003f, 0x8ed2, 0x8d72, 0x89d8, 0x003f, 0xe5f4, 0x95a2,
+    0x8e8b, 0x92b2, 0x8f94, 0x90bf, 0x8979, 0x91f8, 0x9740, 0x8bde,
+    0x9dcc, 0x91a1, 0x9741, 0xe7ad, 0x003f, 0x003f, 0x003f, 0x93ef,
+    0x96f5, 0x003f, 0x8bbf, 0x003f, 0x9570, 0x003f, 0xea9d, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0xfb00 .. 0xfbff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x002b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0xfe00 .. 0xfeff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x815c, 0x815c, 0x815c, 0x815c, 0x005f, 0x005f, 0x005f,
+    0x002c, 0x8141, 0x002e, 0x003f, 0x003b, 0x003a, 0x003f, 0x0021,
+    0x815c, 0x0028, 0x0029, 0x007b, 0x007d, 0x816b, 0x816c, 0x0023,
+    0x0026, 0x002a, 0x002b, 0x002d, 0x003c, 0x003e, 0x003d, 0x003f,
+    0x005c, 0x0024, 0x0025, 0x0040, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0xff00 .. 0xffff */
+    0x003f, 0x8149, 0xeefc, 0x8194, 0x8190, 0x8193, 0x8195, 0xeefb,
+    0x8169, 0x816a, 0x8196, 0x817b, 0x8143, 0x817c, 0x8144, 0x815e,
+    0x824f, 0x8250, 0x8251, 0x8252, 0x8253, 0x8254, 0x8255, 0x8256,
+    0x8257, 0x8258, 0x8146, 0x8147, 0x8183, 0x8181, 0x8184, 0x8148,
+    0x8197, 0x8260, 0x8261, 0x8262, 0x8263, 0x8264, 0x8265, 0x8266,
+    0x8267, 0x8268, 0x8269, 0x826a, 0x826b, 0x826c, 0x826d, 0x826e,
+    0x826f, 0x8270, 0x8271, 0x8272, 0x8273, 0x8274, 0x8275, 0x8276,
+    0x8277, 0x8278, 0x8279, 0x816d, 0x815f, 0x816e, 0x814f, 0x8151,
+    0x814d, 0x8281, 0x8282, 0x8283, 0x8284, 0x8285, 0x8286, 0x8287,
+    0x8288, 0x8289, 0x828a, 0x828b, 0x828c, 0x828d, 0x828e, 0x828f,
+    0x8290, 0x8291, 0x8292, 0x8293, 0x8294, 0x8295, 0x8296, 0x8297,
+    0x8298, 0x8299, 0x829a, 0x816f, 0x8162, 0x8170, 0x8160, 0x003f,
+    0x003f, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+    0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+    0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+    0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+    0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+    0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+    0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8191, 0x8192, 0x81ca, 0x8150, 0xeefa, 0x818f, 0x003f, 0x003f,
+    0x84a0, 0x81a9, 0x81aa, 0x81a8, 0x81ab, 0x81a1, 0x819b, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* defaults */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x0400, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x0500, 0x0600, 0x0700,
+    0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x0d00, 0x0e00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x0f00, 0x1000,
+    0x1100, 0x1200, 0x1300, 0x1400, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x1500, 0x1600,
+    0x1700, 0x1800, 0x1900, 0x1a00, 0x1b00, 0x1c00, 0x1d00, 0x1e00,
+    0x1f00, 0x2000, 0x2100, 0x2200, 0x2300, 0x2400, 0x2500, 0x2600,
+    0x2700, 0x2800, 0x2900, 0x2a00, 0x2b00, 0x2c00, 0x2d00, 0x2e00,
+    0x2f00, 0x3000, 0x3100, 0x3200, 0x3300, 0x3400, 0x3500, 0x3600,
+    0x3700, 0x3800, 0x3900, 0x3a00, 0x3b00, 0x3c00, 0x3d00, 0x3e00,
+    0x3f00, 0x4000, 0x4100, 0x4200, 0x4300, 0x4400, 0x4500, 0x4600,
+    0x4700, 0x4800, 0x4900, 0x4a00, 0x4b00, 0x4c00, 0x4d00, 0x4e00,
+    0x4f00, 0x5000, 0x5100, 0x5200, 0x5300, 0x5400, 0x5500, 0x5600,
+    0x5700, 0x5800, 0x5900, 0x5a00, 0x5b00, 0x5c00, 0x5d00, 0x5e00,
+    0x5f00, 0x6000, 0x6100, 0x6200, 0x6300, 0x6400, 0x6500, 0x6600,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6700, 0x6800, 0x6900, 0x6c00, 0x6c00, 0x6a00, 0x6b00
+};
+
+const struct dbcs_table cptable_932 =
+{
+    { 932, 2, 0x003f, 0x003f, "ANSI/OEM Japanese Shift-JIS" },
+    cp2uni,
+    cp2uni_leadbytes,
+    uni2cp_low,
+    uni2cp_high,
+    { 0x81, 0x9f, 0xe0, 0xfc, 0x00, 0x00 }
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_936.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_936.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_936.c	(revision 16410)
@@ -0,0 +1,7882 @@
+/* code page 936 (ANSI/OEM Simplified Chinese GBK) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[32512] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x20ac, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x003f,
+    /* lead byte 81 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x4e02, 0x4e04, 0x4e05, 0x4e06, 0x4e0f, 0x4e12, 0x4e17, 0x4e1f,
+    0x4e20, 0x4e21, 0x4e23, 0x4e26, 0x4e29, 0x4e2e, 0x4e2f, 0x4e31,
+    0x4e33, 0x4e35, 0x4e37, 0x4e3c, 0x4e40, 0x4e41, 0x4e42, 0x4e44,
+    0x4e46, 0x4e4a, 0x4e51, 0x4e55, 0x4e57, 0x4e5a, 0x4e5b, 0x4e62,
+    0x4e63, 0x4e64, 0x4e65, 0x4e67, 0x4e68, 0x4e6a, 0x4e6b, 0x4e6c,
+    0x4e6d, 0x4e6e, 0x4e6f, 0x4e72, 0x4e74, 0x4e75, 0x4e76, 0x4e77,
+    0x4e78, 0x4e79, 0x4e7a, 0x4e7b, 0x4e7c, 0x4e7d, 0x4e7f, 0x4e80,
+    0x4e81, 0x4e82, 0x4e83, 0x4e84, 0x4e85, 0x4e87, 0x4e8a, 0x003f,
+    0x4e90, 0x4e96, 0x4e97, 0x4e99, 0x4e9c, 0x4e9d, 0x4e9e, 0x4ea3,
+    0x4eaa, 0x4eaf, 0x4eb0, 0x4eb1, 0x4eb4, 0x4eb6, 0x4eb7, 0x4eb8,
+    0x4eb9, 0x4ebc, 0x4ebd, 0x4ebe, 0x4ec8, 0x4ecc, 0x4ecf, 0x4ed0,
+    0x4ed2, 0x4eda, 0x4edb, 0x4edc, 0x4ee0, 0x4ee2, 0x4ee6, 0x4ee7,
+    0x4ee9, 0x4eed, 0x4eee, 0x4eef, 0x4ef1, 0x4ef4, 0x4ef8, 0x4ef9,
+    0x4efa, 0x4efc, 0x4efe, 0x4f00, 0x4f02, 0x4f03, 0x4f04, 0x4f05,
+    0x4f06, 0x4f07, 0x4f08, 0x4f0b, 0x4f0c, 0x4f12, 0x4f13, 0x4f14,
+    0x4f15, 0x4f16, 0x4f1c, 0x4f1d, 0x4f21, 0x4f23, 0x4f28, 0x4f29,
+    0x4f2c, 0x4f2d, 0x4f2e, 0x4f31, 0x4f33, 0x4f35, 0x4f37, 0x4f39,
+    0x4f3b, 0x4f3e, 0x4f3f, 0x4f40, 0x4f41, 0x4f42, 0x4f44, 0x4f45,
+    0x4f47, 0x4f48, 0x4f49, 0x4f4a, 0x4f4b, 0x4f4c, 0x4f52, 0x4f54,
+    0x4f56, 0x4f61, 0x4f62, 0x4f66, 0x4f68, 0x4f6a, 0x4f6b, 0x4f6d,
+    0x4f6e, 0x4f71, 0x4f72, 0x4f75, 0x4f77, 0x4f78, 0x4f79, 0x4f7a,
+    0x4f7d, 0x4f80, 0x4f81, 0x4f82, 0x4f85, 0x4f86, 0x4f87, 0x4f8a,
+    0x4f8c, 0x4f8e, 0x4f90, 0x4f92, 0x4f93, 0x4f95, 0x4f96, 0x4f98,
+    0x4f99, 0x4f9a, 0x4f9c, 0x4f9e, 0x4f9f, 0x4fa1, 0x4fa2, 0x003f,
+    /* lead byte 82 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x4fa4, 0x4fab, 0x4fad, 0x4fb0, 0x4fb1, 0x4fb2, 0x4fb3, 0x4fb4,
+    0x4fb6, 0x4fb7, 0x4fb8, 0x4fb9, 0x4fba, 0x4fbb, 0x4fbc, 0x4fbd,
+    0x4fbe, 0x4fc0, 0x4fc1, 0x4fc2, 0x4fc6, 0x4fc7, 0x4fc8, 0x4fc9,
+    0x4fcb, 0x4fcc, 0x4fcd, 0x4fd2, 0x4fd3, 0x4fd4, 0x4fd5, 0x4fd6,
+    0x4fd9, 0x4fdb, 0x4fe0, 0x4fe2, 0x4fe4, 0x4fe5, 0x4fe7, 0x4feb,
+    0x4fec, 0x4ff0, 0x4ff2, 0x4ff4, 0x4ff5, 0x4ff6, 0x4ff7, 0x4ff9,
+    0x4ffb, 0x4ffc, 0x4ffd, 0x4fff, 0x5000, 0x5001, 0x5002, 0x5003,
+    0x5004, 0x5005, 0x5006, 0x5007, 0x5008, 0x5009, 0x500a, 0x003f,
+    0x500b, 0x500e, 0x5010, 0x5011, 0x5013, 0x5015, 0x5016, 0x5017,
+    0x501b, 0x501d, 0x501e, 0x5020, 0x5022, 0x5023, 0x5024, 0x5027,
+    0x502b, 0x502f, 0x5030, 0x5031, 0x5032, 0x5033, 0x5034, 0x5035,
+    0x5036, 0x5037, 0x5038, 0x5039, 0x503b, 0x503d, 0x503f, 0x5040,
+    0x5041, 0x5042, 0x5044, 0x5045, 0x5046, 0x5049, 0x504a, 0x504b,
+    0x504d, 0x5050, 0x5051, 0x5052, 0x5053, 0x5054, 0x5056, 0x5057,
+    0x5058, 0x5059, 0x505b, 0x505d, 0x505e, 0x505f, 0x5060, 0x5061,
+    0x5062, 0x5063, 0x5064, 0x5066, 0x5067, 0x5068, 0x5069, 0x506a,
+    0x506b, 0x506d, 0x506e, 0x506f, 0x5070, 0x5071, 0x5072, 0x5073,
+    0x5074, 0x5075, 0x5078, 0x5079, 0x507a, 0x507c, 0x507d, 0x5081,
+    0x5082, 0x5083, 0x5084, 0x5086, 0x5087, 0x5089, 0x508a, 0x508b,
+    0x508c, 0x508e, 0x508f, 0x5090, 0x5091, 0x5092, 0x5093, 0x5094,
+    0x5095, 0x5096, 0x5097, 0x5098, 0x5099, 0x509a, 0x509b, 0x509c,
+    0x509d, 0x509e, 0x509f, 0x50a0, 0x50a1, 0x50a2, 0x50a4, 0x50a6,
+    0x50aa, 0x50ab, 0x50ad, 0x50ae, 0x50af, 0x50b0, 0x50b1, 0x50b3,
+    0x50b4, 0x50b5, 0x50b6, 0x50b7, 0x50b8, 0x50b9, 0x50bc, 0x003f,
+    /* lead byte 83 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x50bd, 0x50be, 0x50bf, 0x50c0, 0x50c1, 0x50c2, 0x50c3, 0x50c4,
+    0x50c5, 0x50c6, 0x50c7, 0x50c8, 0x50c9, 0x50ca, 0x50cb, 0x50cc,
+    0x50cd, 0x50ce, 0x50d0, 0x50d1, 0x50d2, 0x50d3, 0x50d4, 0x50d5,
+    0x50d7, 0x50d8, 0x50d9, 0x50db, 0x50dc, 0x50dd, 0x50de, 0x50df,
+    0x50e0, 0x50e1, 0x50e2, 0x50e3, 0x50e4, 0x50e5, 0x50e8, 0x50e9,
+    0x50ea, 0x50eb, 0x50ef, 0x50f0, 0x50f1, 0x50f2, 0x50f4, 0x50f6,
+    0x50f7, 0x50f8, 0x50f9, 0x50fa, 0x50fc, 0x50fd, 0x50fe, 0x50ff,
+    0x5100, 0x5101, 0x5102, 0x5103, 0x5104, 0x5105, 0x5108, 0x003f,
+    0x5109, 0x510a, 0x510c, 0x510d, 0x510e, 0x510f, 0x5110, 0x5111,
+    0x5113, 0x5114, 0x5115, 0x5116, 0x5117, 0x5118, 0x5119, 0x511a,
+    0x511b, 0x511c, 0x511d, 0x511e, 0x511f, 0x5120, 0x5122, 0x5123,
+    0x5124, 0x5125, 0x5126, 0x5127, 0x5128, 0x5129, 0x512a, 0x512b,
+    0x512c, 0x512d, 0x512e, 0x512f, 0x5130, 0x5131, 0x5132, 0x5133,
+    0x5134, 0x5135, 0x5136, 0x5137, 0x5138, 0x5139, 0x513a, 0x513b,
+    0x513c, 0x513d, 0x513e, 0x5142, 0x5147, 0x514a, 0x514c, 0x514e,
+    0x514f, 0x5150, 0x5152, 0x5153, 0x5157, 0x5158, 0x5159, 0x515b,
+    0x515d, 0x515e, 0x515f, 0x5160, 0x5161, 0x5163, 0x5164, 0x5166,
+    0x5167, 0x5169, 0x516a, 0x516f, 0x5172, 0x517a, 0x517e, 0x517f,
+    0x5183, 0x5184, 0x5186, 0x5187, 0x518a, 0x518b, 0x518e, 0x518f,
+    0x5190, 0x5191, 0x5193, 0x5194, 0x5198, 0x519a, 0x519d, 0x519e,
+    0x519f, 0x51a1, 0x51a3, 0x51a6, 0x51a7, 0x51a8, 0x51a9, 0x51aa,
+    0x51ad, 0x51ae, 0x51b4, 0x51b8, 0x51b9, 0x51ba, 0x51be, 0x51bf,
+    0x51c1, 0x51c2, 0x51c3, 0x51c5, 0x51c8, 0x51ca, 0x51cd, 0x51ce,
+    0x51d0, 0x51d2, 0x51d3, 0x51d4, 0x51d5, 0x51d6, 0x51d7, 0x003f,
+    /* lead byte 84 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x51d8, 0x51d9, 0x51da, 0x51dc, 0x51de, 0x51df, 0x51e2, 0x51e3,
+    0x51e5, 0x51e6, 0x51e7, 0x51e8, 0x51e9, 0x51ea, 0x51ec, 0x51ee,
+    0x51f1, 0x51f2, 0x51f4, 0x51f7, 0x51fe, 0x5204, 0x5205, 0x5209,
+    0x520b, 0x520c, 0x520f, 0x5210, 0x5213, 0x5214, 0x5215, 0x521c,
+    0x521e, 0x521f, 0x5221, 0x5222, 0x5223, 0x5225, 0x5226, 0x5227,
+    0x522a, 0x522c, 0x522f, 0x5231, 0x5232, 0x5234, 0x5235, 0x523c,
+    0x523e, 0x5244, 0x5245, 0x5246, 0x5247, 0x5248, 0x5249, 0x524b,
+    0x524e, 0x524f, 0x5252, 0x5253, 0x5255, 0x5257, 0x5258, 0x003f,
+    0x5259, 0x525a, 0x525b, 0x525d, 0x525f, 0x5260, 0x5262, 0x5263,
+    0x5264, 0x5266, 0x5268, 0x526b, 0x526c, 0x526d, 0x526e, 0x5270,
+    0x5271, 0x5273, 0x5274, 0x5275, 0x5276, 0x5277, 0x5278, 0x5279,
+    0x527a, 0x527b, 0x527c, 0x527e, 0x5280, 0x5283, 0x5284, 0x5285,
+    0x5286, 0x5287, 0x5289, 0x528a, 0x528b, 0x528c, 0x528d, 0x528e,
+    0x528f, 0x5291, 0x5292, 0x5294, 0x5295, 0x5296, 0x5297, 0x5298,
+    0x5299, 0x529a, 0x529c, 0x52a4, 0x52a5, 0x52a6, 0x52a7, 0x52ae,
+    0x52af, 0x52b0, 0x52b4, 0x52b5, 0x52b6, 0x52b7, 0x52b8, 0x52b9,
+    0x52ba, 0x52bb, 0x52bc, 0x52bd, 0x52c0, 0x52c1, 0x52c2, 0x52c4,
+    0x52c5, 0x52c6, 0x52c8, 0x52ca, 0x52cc, 0x52cd, 0x52ce, 0x52cf,
+    0x52d1, 0x52d3, 0x52d4, 0x52d5, 0x52d7, 0x52d9, 0x52da, 0x52db,
+    0x52dc, 0x52dd, 0x52de, 0x52e0, 0x52e1, 0x52e2, 0x52e3, 0x52e5,
+    0x52e6, 0x52e7, 0x52e8, 0x52e9, 0x52ea, 0x52eb, 0x52ec, 0x52ed,
+    0x52ee, 0x52ef, 0x52f1, 0x52f2, 0x52f3, 0x52f4, 0x52f5, 0x52f6,
+    0x52f7, 0x52f8, 0x52fb, 0x52fc, 0x52fd, 0x5301, 0x5302, 0x5303,
+    0x5304, 0x5307, 0x5309, 0x530a, 0x530b, 0x530c, 0x530e, 0x003f,
+    /* lead byte 85 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x5311, 0x5312, 0x5313, 0x5314, 0x5318, 0x531b, 0x531c, 0x531e,
+    0x531f, 0x5322, 0x5324, 0x5325, 0x5327, 0x5328, 0x5329, 0x532b,
+    0x532c, 0x532d, 0x532f, 0x5330, 0x5331, 0x5332, 0x5333, 0x5334,
+    0x5335, 0x5336, 0x5337, 0x5338, 0x533c, 0x533d, 0x5340, 0x5342,
+    0x5344, 0x5346, 0x534b, 0x534c, 0x534d, 0x5350, 0x5354, 0x5358,
+    0x5359, 0x535b, 0x535d, 0x5365, 0x5368, 0x536a, 0x536c, 0x536d,
+    0x5372, 0x5376, 0x5379, 0x537b, 0x537c, 0x537d, 0x537e, 0x5380,
+    0x5381, 0x5383, 0x5387, 0x5388, 0x538a, 0x538e, 0x538f, 0x003f,
+    0x5390, 0x5391, 0x5392, 0x5393, 0x5394, 0x5396, 0x5397, 0x5399,
+    0x539b, 0x539c, 0x539e, 0x53a0, 0x53a1, 0x53a4, 0x53a7, 0x53aa,
+    0x53ab, 0x53ac, 0x53ad, 0x53af, 0x53b0, 0x53b1, 0x53b2, 0x53b3,
+    0x53b4, 0x53b5, 0x53b7, 0x53b8, 0x53b9, 0x53ba, 0x53bc, 0x53bd,
+    0x53be, 0x53c0, 0x53c3, 0x53c4, 0x53c5, 0x53c6, 0x53c7, 0x53ce,
+    0x53cf, 0x53d0, 0x53d2, 0x53d3, 0x53d5, 0x53da, 0x53dc, 0x53dd,
+    0x53de, 0x53e1, 0x53e2, 0x53e7, 0x53f4, 0x53fa, 0x53fe, 0x53ff,
+    0x5400, 0x5402, 0x5405, 0x5407, 0x540b, 0x5414, 0x5418, 0x5419,
+    0x541a, 0x541c, 0x5422, 0x5424, 0x5425, 0x542a, 0x5430, 0x5433,
+    0x5436, 0x5437, 0x543a, 0x543d, 0x543f, 0x5441, 0x5442, 0x5444,
+    0x5445, 0x5447, 0x5449, 0x544c, 0x544d, 0x544e, 0x544f, 0x5451,
+    0x545a, 0x545d, 0x545e, 0x545f, 0x5460, 0x5461, 0x5463, 0x5465,
+    0x5467, 0x5469, 0x546a, 0x546b, 0x546c, 0x546d, 0x546e, 0x546f,
+    0x5470, 0x5474, 0x5479, 0x547a, 0x547e, 0x547f, 0x5481, 0x5483,
+    0x5485, 0x5487, 0x5488, 0x5489, 0x548a, 0x548d, 0x5491, 0x5493,
+    0x5497, 0x5498, 0x549c, 0x549e, 0x549f, 0x54a0, 0x54a1, 0x003f,
+    /* lead byte 86 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x54a2, 0x54a5, 0x54ae, 0x54b0, 0x54b2, 0x54b5, 0x54b6, 0x54b7,
+    0x54b9, 0x54ba, 0x54bc, 0x54be, 0x54c3, 0x54c5, 0x54ca, 0x54cb,
+    0x54d6, 0x54d8, 0x54db, 0x54e0, 0x54e1, 0x54e2, 0x54e3, 0x54e4,
+    0x54eb, 0x54ec, 0x54ef, 0x54f0, 0x54f1, 0x54f4, 0x54f5, 0x54f6,
+    0x54f7, 0x54f8, 0x54f9, 0x54fb, 0x54fe, 0x5500, 0x5502, 0x5503,
+    0x5504, 0x5505, 0x5508, 0x550a, 0x550b, 0x550c, 0x550d, 0x550e,
+    0x5512, 0x5513, 0x5515, 0x5516, 0x5517, 0x5518, 0x5519, 0x551a,
+    0x551c, 0x551d, 0x551e, 0x551f, 0x5521, 0x5525, 0x5526, 0x003f,
+    0x5528, 0x5529, 0x552b, 0x552d, 0x5532, 0x5534, 0x5535, 0x5536,
+    0x5538, 0x5539, 0x553a, 0x553b, 0x553d, 0x5540, 0x5542, 0x5545,
+    0x5547, 0x5548, 0x554b, 0x554c, 0x554d, 0x554e, 0x554f, 0x5551,
+    0x5552, 0x5553, 0x5554, 0x5557, 0x5558, 0x5559, 0x555a, 0x555b,
+    0x555d, 0x555e, 0x555f, 0x5560, 0x5562, 0x5563, 0x5568, 0x5569,
+    0x556b, 0x556f, 0x5570, 0x5571, 0x5572, 0x5573, 0x5574, 0x5579,
+    0x557a, 0x557d, 0x557f, 0x5585, 0x5586, 0x558c, 0x558d, 0x558e,
+    0x5590, 0x5592, 0x5593, 0x5595, 0x5596, 0x5597, 0x559a, 0x559b,
+    0x559e, 0x55a0, 0x55a1, 0x55a2, 0x55a3, 0x55a4, 0x55a5, 0x55a6,
+    0x55a8, 0x55a9, 0x55aa, 0x55ab, 0x55ac, 0x55ad, 0x55ae, 0x55af,
+    0x55b0, 0x55b2, 0x55b4, 0x55b6, 0x55b8, 0x55ba, 0x55bc, 0x55bf,
+    0x55c0, 0x55c1, 0x55c2, 0x55c3, 0x55c6, 0x55c7, 0x55c8, 0x55ca,
+    0x55cb, 0x55ce, 0x55cf, 0x55d0, 0x55d5, 0x55d7, 0x55d8, 0x55d9,
+    0x55da, 0x55db, 0x55de, 0x55e0, 0x55e2, 0x55e7, 0x55e9, 0x55ed,
+    0x55ee, 0x55f0, 0x55f1, 0x55f4, 0x55f6, 0x55f8, 0x55f9, 0x55fa,
+    0x55fb, 0x55fc, 0x55ff, 0x5602, 0x5603, 0x5604, 0x5605, 0x003f,
+    /* lead byte 87 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x5606, 0x5607, 0x560a, 0x560b, 0x560d, 0x5610, 0x5611, 0x5612,
+    0x5613, 0x5614, 0x5615, 0x5616, 0x5617, 0x5619, 0x561a, 0x561c,
+    0x561d, 0x5620, 0x5621, 0x5622, 0x5625, 0x5626, 0x5628, 0x5629,
+    0x562a, 0x562b, 0x562e, 0x562f, 0x5630, 0x5633, 0x5635, 0x5637,
+    0x5638, 0x563a, 0x563c, 0x563d, 0x563e, 0x5640, 0x5641, 0x5642,
+    0x5643, 0x5644, 0x5645, 0x5646, 0x5647, 0x5648, 0x5649, 0x564a,
+    0x564b, 0x564f, 0x5650, 0x5651, 0x5652, 0x5653, 0x5655, 0x5656,
+    0x565a, 0x565b, 0x565d, 0x565e, 0x565f, 0x5660, 0x5661, 0x003f,
+    0x5663, 0x5665, 0x5666, 0x5667, 0x566d, 0x566e, 0x566f, 0x5670,
+    0x5672, 0x5673, 0x5674, 0x5675, 0x5677, 0x5678, 0x5679, 0x567a,
+    0x567d, 0x567e, 0x567f, 0x5680, 0x5681, 0x5682, 0x5683, 0x5684,
+    0x5687, 0x5688, 0x5689, 0x568a, 0x568b, 0x568c, 0x568d, 0x5690,
+    0x5691, 0x5692, 0x5694, 0x5695, 0x5696, 0x5697, 0x5698, 0x5699,
+    0x569a, 0x569b, 0x569c, 0x569d, 0x569e, 0x569f, 0x56a0, 0x56a1,
+    0x56a2, 0x56a4, 0x56a5, 0x56a6, 0x56a7, 0x56a8, 0x56a9, 0x56aa,
+    0x56ab, 0x56ac, 0x56ad, 0x56ae, 0x56b0, 0x56b1, 0x56b2, 0x56b3,
+    0x56b4, 0x56b5, 0x56b6, 0x56b8, 0x56b9, 0x56ba, 0x56bb, 0x56bd,
+    0x56be, 0x56bf, 0x56c0, 0x56c1, 0x56c2, 0x56c3, 0x56c4, 0x56c5,
+    0x56c6, 0x56c7, 0x56c8, 0x56c9, 0x56cb, 0x56cc, 0x56cd, 0x56ce,
+    0x56cf, 0x56d0, 0x56d1, 0x56d2, 0x56d3, 0x56d5, 0x56d6, 0x56d8,
+    0x56d9, 0x56dc, 0x56e3, 0x56e5, 0x56e6, 0x56e7, 0x56e8, 0x56e9,
+    0x56ea, 0x56ec, 0x56ee, 0x56ef, 0x56f2, 0x56f3, 0x56f6, 0x56f7,
+    0x56f8, 0x56fb, 0x56fc, 0x5700, 0x5701, 0x5702, 0x5705, 0x5707,
+    0x570b, 0x570c, 0x570d, 0x570e, 0x570f, 0x5710, 0x5711, 0x003f,
+    /* lead byte 88 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x5712, 0x5713, 0x5714, 0x5715, 0x5716, 0x5717, 0x5718, 0x5719,
+    0x571a, 0x571b, 0x571d, 0x571e, 0x5720, 0x5721, 0x5722, 0x5724,
+    0x5725, 0x5726, 0x5727, 0x572b, 0x5731, 0x5732, 0x5734, 0x5735,
+    0x5736, 0x5737, 0x5738, 0x573c, 0x573d, 0x573f, 0x5741, 0x5743,
+    0x5744, 0x5745, 0x5746, 0x5748, 0x5749, 0x574b, 0x5752, 0x5753,
+    0x5754, 0x5755, 0x5756, 0x5758, 0x5759, 0x5762, 0x5763, 0x5765,
+    0x5767, 0x576c, 0x576e, 0x5770, 0x5771, 0x5772, 0x5774, 0x5775,
+    0x5778, 0x5779, 0x577a, 0x577d, 0x577e, 0x577f, 0x5780, 0x003f,
+    0x5781, 0x5787, 0x5788, 0x5789, 0x578a, 0x578d, 0x578e, 0x578f,
+    0x5790, 0x5791, 0x5794, 0x5795, 0x5796, 0x5797, 0x5798, 0x5799,
+    0x579a, 0x579c, 0x579d, 0x579e, 0x579f, 0x57a5, 0x57a8, 0x57aa,
+    0x57ac, 0x57af, 0x57b0, 0x57b1, 0x57b3, 0x57b5, 0x57b6, 0x57b7,
+    0x57b9, 0x57ba, 0x57bb, 0x57bc, 0x57bd, 0x57be, 0x57bf, 0x57c0,
+    0x57c1, 0x57c4, 0x57c5, 0x57c6, 0x57c7, 0x57c8, 0x57c9, 0x57ca,
+    0x57cc, 0x57cd, 0x57d0, 0x57d1, 0x57d3, 0x57d6, 0x57d7, 0x57db,
+    0x57dc, 0x57de, 0x57e1, 0x57e2, 0x57e3, 0x57e5, 0x57e6, 0x57e7,
+    0x57e8, 0x57e9, 0x57ea, 0x57eb, 0x57ec, 0x57ee, 0x57f0, 0x57f1,
+    0x57f2, 0x57f3, 0x57f5, 0x57f6, 0x57f7, 0x57fb, 0x57fc, 0x57fe,
+    0x57ff, 0x5801, 0x5803, 0x5804, 0x5805, 0x5808, 0x5809, 0x580a,
+    0x580c, 0x580e, 0x580f, 0x5810, 0x5812, 0x5813, 0x5814, 0x5816,
+    0x5817, 0x5818, 0x581a, 0x581b, 0x581c, 0x581d, 0x581f, 0x5822,
+    0x5823, 0x5825, 0x5826, 0x5827, 0x5828, 0x5829, 0x582b, 0x582c,
+    0x582d, 0x582e, 0x582f, 0x5831, 0x5832, 0x5833, 0x5834, 0x5836,
+    0x5837, 0x5838, 0x5839, 0x583a, 0x583b, 0x583c, 0x583d, 0x003f,
+    /* lead byte 89 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x583e, 0x583f, 0x5840, 0x5841, 0x5842, 0x5843, 0x5845, 0x5846,
+    0x5847, 0x5848, 0x5849, 0x584a, 0x584b, 0x584e, 0x584f, 0x5850,
+    0x5852, 0x5853, 0x5855, 0x5856, 0x5857, 0x5859, 0x585a, 0x585b,
+    0x585c, 0x585d, 0x585f, 0x5860, 0x5861, 0x5862, 0x5863, 0x5864,
+    0x5866, 0x5867, 0x5868, 0x5869, 0x586a, 0x586d, 0x586e, 0x586f,
+    0x5870, 0x5871, 0x5872, 0x5873, 0x5874, 0x5875, 0x5876, 0x5877,
+    0x5878, 0x5879, 0x587a, 0x587b, 0x587c, 0x587d, 0x587f, 0x5882,
+    0x5884, 0x5886, 0x5887, 0x5888, 0x588a, 0x588b, 0x588c, 0x003f,
+    0x588d, 0x588e, 0x588f, 0x5890, 0x5891, 0x5894, 0x5895, 0x5896,
+    0x5897, 0x5898, 0x589b, 0x589c, 0x589d, 0x58a0, 0x58a1, 0x58a2,
+    0x58a3, 0x58a4, 0x58a5, 0x58a6, 0x58a7, 0x58aa, 0x58ab, 0x58ac,
+    0x58ad, 0x58ae, 0x58af, 0x58b0, 0x58b1, 0x58b2, 0x58b3, 0x58b4,
+    0x58b5, 0x58b6, 0x58b7, 0x58b8, 0x58b9, 0x58ba, 0x58bb, 0x58bd,
+    0x58be, 0x58bf, 0x58c0, 0x58c2, 0x58c3, 0x58c4, 0x58c6, 0x58c7,
+    0x58c8, 0x58c9, 0x58ca, 0x58cb, 0x58cc, 0x58cd, 0x58ce, 0x58cf,
+    0x58d0, 0x58d2, 0x58d3, 0x58d4, 0x58d6, 0x58d7, 0x58d8, 0x58d9,
+    0x58da, 0x58db, 0x58dc, 0x58dd, 0x58de, 0x58df, 0x58e0, 0x58e1,
+    0x58e2, 0x58e3, 0x58e5, 0x58e6, 0x58e7, 0x58e8, 0x58e9, 0x58ea,
+    0x58ed, 0x58ef, 0x58f1, 0x58f2, 0x58f4, 0x58f5, 0x58f7, 0x58f8,
+    0x58fa, 0x58fb, 0x58fc, 0x58fd, 0x58fe, 0x58ff, 0x5900, 0x5901,
+    0x5903, 0x5905, 0x5906, 0x5908, 0x5909, 0x590a, 0x590b, 0x590c,
+    0x590e, 0x5910, 0x5911, 0x5912, 0x5913, 0x5917, 0x5918, 0x591b,
+    0x591d, 0x591e, 0x5920, 0x5921, 0x5922, 0x5923, 0x5926, 0x5928,
+    0x592c, 0x5930, 0x5932, 0x5933, 0x5935, 0x5936, 0x593b, 0x003f,
+    /* lead byte 8a */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x593d, 0x593e, 0x593f, 0x5940, 0x5943, 0x5945, 0x5946, 0x594a,
+    0x594c, 0x594d, 0x5950, 0x5952, 0x5953, 0x5959, 0x595b, 0x595c,
+    0x595d, 0x595e, 0x595f, 0x5961, 0x5963, 0x5964, 0x5966, 0x5967,
+    0x5968, 0x5969, 0x596a, 0x596b, 0x596c, 0x596d, 0x596e, 0x596f,
+    0x5970, 0x5971, 0x5972, 0x5975, 0x5977, 0x597a, 0x597b, 0x597c,
+    0x597e, 0x597f, 0x5980, 0x5985, 0x5989, 0x598b, 0x598c, 0x598e,
+    0x598f, 0x5990, 0x5991, 0x5994, 0x5995, 0x5998, 0x599a, 0x599b,
+    0x599c, 0x599d, 0x599f, 0x59a0, 0x59a1, 0x59a2, 0x59a6, 0x003f,
+    0x59a7, 0x59ac, 0x59ad, 0x59b0, 0x59b1, 0x59b3, 0x59b4, 0x59b5,
+    0x59b6, 0x59b7, 0x59b8, 0x59ba, 0x59bc, 0x59bd, 0x59bf, 0x59c0,
+    0x59c1, 0x59c2, 0x59c3, 0x59c4, 0x59c5, 0x59c7, 0x59c8, 0x59c9,
+    0x59cc, 0x59cd, 0x59ce, 0x59cf, 0x59d5, 0x59d6, 0x59d9, 0x59db,
+    0x59de, 0x59df, 0x59e0, 0x59e1, 0x59e2, 0x59e4, 0x59e6, 0x59e7,
+    0x59e9, 0x59ea, 0x59eb, 0x59ed, 0x59ee, 0x59ef, 0x59f0, 0x59f1,
+    0x59f2, 0x59f3, 0x59f4, 0x59f5, 0x59f6, 0x59f7, 0x59f8, 0x59fa,
+    0x59fc, 0x59fd, 0x59fe, 0x5a00, 0x5a02, 0x5a0a, 0x5a0b, 0x5a0d,
+    0x5a0e, 0x5a0f, 0x5a10, 0x5a12, 0x5a14, 0x5a15, 0x5a16, 0x5a17,
+    0x5a19, 0x5a1a, 0x5a1b, 0x5a1d, 0x5a1e, 0x5a21, 0x5a22, 0x5a24,
+    0x5a26, 0x5a27, 0x5a28, 0x5a2a, 0x5a2b, 0x5a2c, 0x5a2d, 0x5a2e,
+    0x5a2f, 0x5a30, 0x5a33, 0x5a35, 0x5a37, 0x5a38, 0x5a39, 0x5a3a,
+    0x5a3b, 0x5a3d, 0x5a3e, 0x5a3f, 0x5a41, 0x5a42, 0x5a43, 0x5a44,
+    0x5a45, 0x5a47, 0x5a48, 0x5a4b, 0x5a4c, 0x5a4d, 0x5a4e, 0x5a4f,
+    0x5a50, 0x5a51, 0x5a52, 0x5a53, 0x5a54, 0x5a56, 0x5a57, 0x5a58,
+    0x5a59, 0x5a5b, 0x5a5c, 0x5a5d, 0x5a5e, 0x5a5f, 0x5a60, 0x003f,
+    /* lead byte 8b */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x5a61, 0x5a63, 0x5a64, 0x5a65, 0x5a66, 0x5a68, 0x5a69, 0x5a6b,
+    0x5a6c, 0x5a6d, 0x5a6e, 0x5a6f, 0x5a70, 0x5a71, 0x5a72, 0x5a73,
+    0x5a78, 0x5a79, 0x5a7b, 0x5a7c, 0x5a7d, 0x5a7e, 0x5a80, 0x5a81,
+    0x5a82, 0x5a83, 0x5a84, 0x5a85, 0x5a86, 0x5a87, 0x5a88, 0x5a89,
+    0x5a8a, 0x5a8b, 0x5a8c, 0x5a8d, 0x5a8e, 0x5a8f, 0x5a90, 0x5a91,
+    0x5a93, 0x5a94, 0x5a95, 0x5a96, 0x5a97, 0x5a98, 0x5a99, 0x5a9c,
+    0x5a9d, 0x5a9e, 0x5a9f, 0x5aa0, 0x5aa1, 0x5aa2, 0x5aa3, 0x5aa4,
+    0x5aa5, 0x5aa6, 0x5aa7, 0x5aa8, 0x5aa9, 0x5aab, 0x5aac, 0x003f,
+    0x5aad, 0x5aae, 0x5aaf, 0x5ab0, 0x5ab1, 0x5ab4, 0x5ab6, 0x5ab7,
+    0x5ab9, 0x5aba, 0x5abb, 0x5abc, 0x5abd, 0x5abf, 0x5ac0, 0x5ac3,
+    0x5ac4, 0x5ac5, 0x5ac6, 0x5ac7, 0x5ac8, 0x5aca, 0x5acb, 0x5acd,
+    0x5ace, 0x5acf, 0x5ad0, 0x5ad1, 0x5ad3, 0x5ad5, 0x5ad7, 0x5ad9,
+    0x5ada, 0x5adb, 0x5add, 0x5ade, 0x5adf, 0x5ae2, 0x5ae4, 0x5ae5,
+    0x5ae7, 0x5ae8, 0x5aea, 0x5aec, 0x5aed, 0x5aee, 0x5aef, 0x5af0,
+    0x5af2, 0x5af3, 0x5af4, 0x5af5, 0x5af6, 0x5af7, 0x5af8, 0x5af9,
+    0x5afa, 0x5afb, 0x5afc, 0x5afd, 0x5afe, 0x5aff, 0x5b00, 0x5b01,
+    0x5b02, 0x5b03, 0x5b04, 0x5b05, 0x5b06, 0x5b07, 0x5b08, 0x5b0a,
+    0x5b0b, 0x5b0c, 0x5b0d, 0x5b0e, 0x5b0f, 0x5b10, 0x5b11, 0x5b12,
+    0x5b13, 0x5b14, 0x5b15, 0x5b18, 0x5b19, 0x5b1a, 0x5b1b, 0x5b1c,
+    0x5b1d, 0x5b1e, 0x5b1f, 0x5b20, 0x5b21, 0x5b22, 0x5b23, 0x5b24,
+    0x5b25, 0x5b26, 0x5b27, 0x5b28, 0x5b29, 0x5b2a, 0x5b2b, 0x5b2c,
+    0x5b2d, 0x5b2e, 0x5b2f, 0x5b30, 0x5b31, 0x5b33, 0x5b35, 0x5b36,
+    0x5b38, 0x5b39, 0x5b3a, 0x5b3b, 0x5b3c, 0x5b3d, 0x5b3e, 0x5b3f,
+    0x5b41, 0x5b42, 0x5b43, 0x5b44, 0x5b45, 0x5b46, 0x5b47, 0x003f,
+    /* lead byte 8c */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x5b48, 0x5b49, 0x5b4a, 0x5b4b, 0x5b4c, 0x5b4d, 0x5b4e, 0x5b4f,
+    0x5b52, 0x5b56, 0x5b5e, 0x5b60, 0x5b61, 0x5b67, 0x5b68, 0x5b6b,
+    0x5b6d, 0x5b6e, 0x5b6f, 0x5b72, 0x5b74, 0x5b76, 0x5b77, 0x5b78,
+    0x5b79, 0x5b7b, 0x5b7c, 0x5b7e, 0x5b7f, 0x5b82, 0x5b86, 0x5b8a,
+    0x5b8d, 0x5b8e, 0x5b90, 0x5b91, 0x5b92, 0x5b94, 0x5b96, 0x5b9f,
+    0x5ba7, 0x5ba8, 0x5ba9, 0x5bac, 0x5bad, 0x5bae, 0x5baf, 0x5bb1,
+    0x5bb2, 0x5bb7, 0x5bba, 0x5bbb, 0x5bbc, 0x5bc0, 0x5bc1, 0x5bc3,
+    0x5bc8, 0x5bc9, 0x5bca, 0x5bcb, 0x5bcd, 0x5bce, 0x5bcf, 0x003f,
+    0x5bd1, 0x5bd4, 0x5bd5, 0x5bd6, 0x5bd7, 0x5bd8, 0x5bd9, 0x5bda,
+    0x5bdb, 0x5bdc, 0x5be0, 0x5be2, 0x5be3, 0x5be6, 0x5be7, 0x5be9,
+    0x5bea, 0x5beb, 0x5bec, 0x5bed, 0x5bef, 0x5bf1, 0x5bf2, 0x5bf3,
+    0x5bf4, 0x5bf5, 0x5bf6, 0x5bf7, 0x5bfd, 0x5bfe, 0x5c00, 0x5c02,
+    0x5c03, 0x5c05, 0x5c07, 0x5c08, 0x5c0b, 0x5c0c, 0x5c0d, 0x5c0e,
+    0x5c10, 0x5c12, 0x5c13, 0x5c17, 0x5c19, 0x5c1b, 0x5c1e, 0x5c1f,
+    0x5c20, 0x5c21, 0x5c23, 0x5c26, 0x5c28, 0x5c29, 0x5c2a, 0x5c2b,
+    0x5c2d, 0x5c2e, 0x5c2f, 0x5c30, 0x5c32, 0x5c33, 0x5c35, 0x5c36,
+    0x5c37, 0x5c43, 0x5c44, 0x5c46, 0x5c47, 0x5c4c, 0x5c4d, 0x5c52,
+    0x5c53, 0x5c54, 0x5c56, 0x5c57, 0x5c58, 0x5c5a, 0x5c5b, 0x5c5c,
+    0x5c5d, 0x5c5f, 0x5c62, 0x5c64, 0x5c67, 0x5c68, 0x5c69, 0x5c6a,
+    0x5c6b, 0x5c6c, 0x5c6d, 0x5c70, 0x5c72, 0x5c73, 0x5c74, 0x5c75,
+    0x5c76, 0x5c77, 0x5c78, 0x5c7b, 0x5c7c, 0x5c7d, 0x5c7e, 0x5c80,
+    0x5c83, 0x5c84, 0x5c85, 0x5c86, 0x5c87, 0x5c89, 0x5c8a, 0x5c8b,
+    0x5c8e, 0x5c8f, 0x5c92, 0x5c93, 0x5c95, 0x5c9d, 0x5c9e, 0x5c9f,
+    0x5ca0, 0x5ca1, 0x5ca4, 0x5ca5, 0x5ca6, 0x5ca7, 0x5ca8, 0x003f,
+    /* lead byte 8d */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x5caa, 0x5cae, 0x5caf, 0x5cb0, 0x5cb2, 0x5cb4, 0x5cb6, 0x5cb9,
+    0x5cba, 0x5cbb, 0x5cbc, 0x5cbe, 0x5cc0, 0x5cc2, 0x5cc3, 0x5cc5,
+    0x5cc6, 0x5cc7, 0x5cc8, 0x5cc9, 0x5cca, 0x5ccc, 0x5ccd, 0x5cce,
+    0x5ccf, 0x5cd0, 0x5cd1, 0x5cd3, 0x5cd4, 0x5cd5, 0x5cd6, 0x5cd7,
+    0x5cd8, 0x5cda, 0x5cdb, 0x5cdc, 0x5cdd, 0x5cde, 0x5cdf, 0x5ce0,
+    0x5ce2, 0x5ce3, 0x5ce7, 0x5ce9, 0x5ceb, 0x5cec, 0x5cee, 0x5cef,
+    0x5cf1, 0x5cf2, 0x5cf3, 0x5cf4, 0x5cf5, 0x5cf6, 0x5cf7, 0x5cf8,
+    0x5cf9, 0x5cfa, 0x5cfc, 0x5cfd, 0x5cfe, 0x5cff, 0x5d00, 0x003f,
+    0x5d01, 0x5d04, 0x5d05, 0x5d08, 0x5d09, 0x5d0a, 0x5d0b, 0x5d0c,
+    0x5d0d, 0x5d0f, 0x5d10, 0x5d11, 0x5d12, 0x5d13, 0x5d15, 0x5d17,
+    0x5d18, 0x5d19, 0x5d1a, 0x5d1c, 0x5d1d, 0x5d1f, 0x5d20, 0x5d21,
+    0x5d22, 0x5d23, 0x5d25, 0x5d28, 0x5d2a, 0x5d2b, 0x5d2c, 0x5d2f,
+    0x5d30, 0x5d31, 0x5d32, 0x5d33, 0x5d35, 0x5d36, 0x5d37, 0x5d38,
+    0x5d39, 0x5d3a, 0x5d3b, 0x5d3c, 0x5d3f, 0x5d40, 0x5d41, 0x5d42,
+    0x5d43, 0x5d44, 0x5d45, 0x5d46, 0x5d48, 0x5d49, 0x5d4d, 0x5d4e,
+    0x5d4f, 0x5d50, 0x5d51, 0x5d52, 0x5d53, 0x5d54, 0x5d55, 0x5d56,
+    0x5d57, 0x5d59, 0x5d5a, 0x5d5c, 0x5d5e, 0x5d5f, 0x5d60, 0x5d61,
+    0x5d62, 0x5d63, 0x5d64, 0x5d65, 0x5d66, 0x5d67, 0x5d68, 0x5d6a,
+    0x5d6d, 0x5d6e, 0x5d70, 0x5d71, 0x5d72, 0x5d73, 0x5d75, 0x5d76,
+    0x5d77, 0x5d78, 0x5d79, 0x5d7a, 0x5d7b, 0x5d7c, 0x5d7d, 0x5d7e,
+    0x5d7f, 0x5d80, 0x5d81, 0x5d83, 0x5d84, 0x5d85, 0x5d86, 0x5d87,
+    0x5d88, 0x5d89, 0x5d8a, 0x5d8b, 0x5d8c, 0x5d8d, 0x5d8e, 0x5d8f,
+    0x5d90, 0x5d91, 0x5d92, 0x5d93, 0x5d94, 0x5d95, 0x5d96, 0x5d97,
+    0x5d98, 0x5d9a, 0x5d9b, 0x5d9c, 0x5d9e, 0x5d9f, 0x5da0, 0x003f,
+    /* lead byte 8e */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x5da1, 0x5da2, 0x5da3, 0x5da4, 0x5da5, 0x5da6, 0x5da7, 0x5da8,
+    0x5da9, 0x5daa, 0x5dab, 0x5dac, 0x5dad, 0x5dae, 0x5daf, 0x5db0,
+    0x5db1, 0x5db2, 0x5db3, 0x5db4, 0x5db5, 0x5db6, 0x5db8, 0x5db9,
+    0x5dba, 0x5dbb, 0x5dbc, 0x5dbd, 0x5dbe, 0x5dbf, 0x5dc0, 0x5dc1,
+    0x5dc2, 0x5dc3, 0x5dc4, 0x5dc6, 0x5dc7, 0x5dc8, 0x5dc9, 0x5dca,
+    0x5dcb, 0x5dcc, 0x5dce, 0x5dcf, 0x5dd0, 0x5dd1, 0x5dd2, 0x5dd3,
+    0x5dd4, 0x5dd5, 0x5dd6, 0x5dd7, 0x5dd8, 0x5dd9, 0x5dda, 0x5ddc,
+    0x5ddf, 0x5de0, 0x5de3, 0x5de4, 0x5dea, 0x5dec, 0x5ded, 0x003f,
+    0x5df0, 0x5df5, 0x5df6, 0x5df8, 0x5df9, 0x5dfa, 0x5dfb, 0x5dfc,
+    0x5dff, 0x5e00, 0x5e04, 0x5e07, 0x5e09, 0x5e0a, 0x5e0b, 0x5e0d,
+    0x5e0e, 0x5e12, 0x5e13, 0x5e17, 0x5e1e, 0x5e1f, 0x5e20, 0x5e21,
+    0x5e22, 0x5e23, 0x5e24, 0x5e25, 0x5e28, 0x5e29, 0x5e2a, 0x5e2b,
+    0x5e2c, 0x5e2f, 0x5e30, 0x5e32, 0x5e33, 0x5e34, 0x5e35, 0x5e36,
+    0x5e39, 0x5e3a, 0x5e3e, 0x5e3f, 0x5e40, 0x5e41, 0x5e43, 0x5e46,
+    0x5e47, 0x5e48, 0x5e49, 0x5e4a, 0x5e4b, 0x5e4d, 0x5e4e, 0x5e4f,
+    0x5e50, 0x5e51, 0x5e52, 0x5e53, 0x5e56, 0x5e57, 0x5e58, 0x5e59,
+    0x5e5a, 0x5e5c, 0x5e5d, 0x5e5f, 0x5e60, 0x5e63, 0x5e64, 0x5e65,
+    0x5e66, 0x5e67, 0x5e68, 0x5e69, 0x5e6a, 0x5e6b, 0x5e6c, 0x5e6d,
+    0x5e6e, 0x5e6f, 0x5e70, 0x5e71, 0x5e75, 0x5e77, 0x5e79, 0x5e7e,
+    0x5e81, 0x5e82, 0x5e83, 0x5e85, 0x5e88, 0x5e89, 0x5e8c, 0x5e8d,
+    0x5e8e, 0x5e92, 0x5e98, 0x5e9b, 0x5e9d, 0x5ea1, 0x5ea2, 0x5ea3,
+    0x5ea4, 0x5ea8, 0x5ea9, 0x5eaa, 0x5eab, 0x5eac, 0x5eae, 0x5eaf,
+    0x5eb0, 0x5eb1, 0x5eb2, 0x5eb4, 0x5eba, 0x5ebb, 0x5ebc, 0x5ebd,
+    0x5ebf, 0x5ec0, 0x5ec1, 0x5ec2, 0x5ec3, 0x5ec4, 0x5ec5, 0x003f,
+    /* lead byte 8f */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x5ec6, 0x5ec7, 0x5ec8, 0x5ecb, 0x5ecc, 0x5ecd, 0x5ece, 0x5ecf,
+    0x5ed0, 0x5ed4, 0x5ed5, 0x5ed7, 0x5ed8, 0x5ed9, 0x5eda, 0x5edc,
+    0x5edd, 0x5ede, 0x5edf, 0x5ee0, 0x5ee1, 0x5ee2, 0x5ee3, 0x5ee4,
+    0x5ee5, 0x5ee6, 0x5ee7, 0x5ee9, 0x5eeb, 0x5eec, 0x5eed, 0x5eee,
+    0x5eef, 0x5ef0, 0x5ef1, 0x5ef2, 0x5ef3, 0x5ef5, 0x5ef8, 0x5ef9,
+    0x5efb, 0x5efc, 0x5efd, 0x5f05, 0x5f06, 0x5f07, 0x5f09, 0x5f0c,
+    0x5f0d, 0x5f0e, 0x5f10, 0x5f12, 0x5f14, 0x5f16, 0x5f19, 0x5f1a,
+    0x5f1c, 0x5f1d, 0x5f1e, 0x5f21, 0x5f22, 0x5f23, 0x5f24, 0x003f,
+    0x5f28, 0x5f2b, 0x5f2c, 0x5f2e, 0x5f30, 0x5f32, 0x5f33, 0x5f34,
+    0x5f35, 0x5f36, 0x5f37, 0x5f38, 0x5f3b, 0x5f3d, 0x5f3e, 0x5f3f,
+    0x5f41, 0x5f42, 0x5f43, 0x5f44, 0x5f45, 0x5f46, 0x5f47, 0x5f48,
+    0x5f49, 0x5f4a, 0x5f4b, 0x5f4c, 0x5f4d, 0x5f4e, 0x5f4f, 0x5f51,
+    0x5f54, 0x5f59, 0x5f5a, 0x5f5b, 0x5f5c, 0x5f5e, 0x5f5f, 0x5f60,
+    0x5f63, 0x5f65, 0x5f67, 0x5f68, 0x5f6b, 0x5f6e, 0x5f6f, 0x5f72,
+    0x5f74, 0x5f75, 0x5f76, 0x5f78, 0x5f7a, 0x5f7d, 0x5f7e, 0x5f7f,
+    0x5f83, 0x5f86, 0x5f8d, 0x5f8e, 0x5f8f, 0x5f91, 0x5f93, 0x5f94,
+    0x5f96, 0x5f9a, 0x5f9b, 0x5f9d, 0x5f9e, 0x5f9f, 0x5fa0, 0x5fa2,
+    0x5fa3, 0x5fa4, 0x5fa5, 0x5fa6, 0x5fa7, 0x5fa9, 0x5fab, 0x5fac,
+    0x5faf, 0x5fb0, 0x5fb1, 0x5fb2, 0x5fb3, 0x5fb4, 0x5fb6, 0x5fb8,
+    0x5fb9, 0x5fba, 0x5fbb, 0x5fbe, 0x5fbf, 0x5fc0, 0x5fc1, 0x5fc2,
+    0x5fc7, 0x5fc8, 0x5fca, 0x5fcb, 0x5fce, 0x5fd3, 0x5fd4, 0x5fd5,
+    0x5fda, 0x5fdb, 0x5fdc, 0x5fde, 0x5fdf, 0x5fe2, 0x5fe3, 0x5fe5,
+    0x5fe6, 0x5fe8, 0x5fe9, 0x5fec, 0x5fef, 0x5ff0, 0x5ff2, 0x5ff3,
+    0x5ff4, 0x5ff6, 0x5ff7, 0x5ff9, 0x5ffa, 0x5ffc, 0x6007, 0x003f,
+    /* lead byte 90 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6008, 0x6009, 0x600b, 0x600c, 0x6010, 0x6011, 0x6013, 0x6017,
+    0x6018, 0x601a, 0x601e, 0x601f, 0x6022, 0x6023, 0x6024, 0x602c,
+    0x602d, 0x602e, 0x6030, 0x6031, 0x6032, 0x6033, 0x6034, 0x6036,
+    0x6037, 0x6038, 0x6039, 0x603a, 0x603d, 0x603e, 0x6040, 0x6044,
+    0x6045, 0x6046, 0x6047, 0x6048, 0x6049, 0x604a, 0x604c, 0x604e,
+    0x604f, 0x6051, 0x6053, 0x6054, 0x6056, 0x6057, 0x6058, 0x605b,
+    0x605c, 0x605e, 0x605f, 0x6060, 0x6061, 0x6065, 0x6066, 0x606e,
+    0x6071, 0x6072, 0x6074, 0x6075, 0x6077, 0x607e, 0x6080, 0x003f,
+    0x6081, 0x6082, 0x6085, 0x6086, 0x6087, 0x6088, 0x608a, 0x608b,
+    0x608e, 0x608f, 0x6090, 0x6091, 0x6093, 0x6095, 0x6097, 0x6098,
+    0x6099, 0x609c, 0x609e, 0x60a1, 0x60a2, 0x60a4, 0x60a5, 0x60a7,
+    0x60a9, 0x60aa, 0x60ae, 0x60b0, 0x60b3, 0x60b5, 0x60b6, 0x60b7,
+    0x60b9, 0x60ba, 0x60bd, 0x60be, 0x60bf, 0x60c0, 0x60c1, 0x60c2,
+    0x60c3, 0x60c4, 0x60c7, 0x60c8, 0x60c9, 0x60cc, 0x60cd, 0x60ce,
+    0x60cf, 0x60d0, 0x60d2, 0x60d3, 0x60d4, 0x60d6, 0x60d7, 0x60d9,
+    0x60db, 0x60de, 0x60e1, 0x60e2, 0x60e3, 0x60e4, 0x60e5, 0x60ea,
+    0x60f1, 0x60f2, 0x60f5, 0x60f7, 0x60f8, 0x60fb, 0x60fc, 0x60fd,
+    0x60fe, 0x60ff, 0x6102, 0x6103, 0x6104, 0x6105, 0x6107, 0x610a,
+    0x610b, 0x610c, 0x6110, 0x6111, 0x6112, 0x6113, 0x6114, 0x6116,
+    0x6117, 0x6118, 0x6119, 0x611b, 0x611c, 0x611d, 0x611e, 0x6121,
+    0x6122, 0x6125, 0x6128, 0x6129, 0x612a, 0x612c, 0x612d, 0x612e,
+    0x612f, 0x6130, 0x6131, 0x6132, 0x6133, 0x6134, 0x6135, 0x6136,
+    0x6137, 0x6138, 0x6139, 0x613a, 0x613b, 0x613c, 0x613d, 0x613e,
+    0x6140, 0x6141, 0x6142, 0x6143, 0x6144, 0x6145, 0x6146, 0x003f,
+    /* lead byte 91 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6147, 0x6149, 0x614b, 0x614d, 0x614f, 0x6150, 0x6152, 0x6153,
+    0x6154, 0x6156, 0x6157, 0x6158, 0x6159, 0x615a, 0x615b, 0x615c,
+    0x615e, 0x615f, 0x6160, 0x6161, 0x6163, 0x6164, 0x6165, 0x6166,
+    0x6169, 0x616a, 0x616b, 0x616c, 0x616d, 0x616e, 0x616f, 0x6171,
+    0x6172, 0x6173, 0x6174, 0x6176, 0x6178, 0x6179, 0x617a, 0x617b,
+    0x617c, 0x617d, 0x617e, 0x617f, 0x6180, 0x6181, 0x6182, 0x6183,
+    0x6184, 0x6185, 0x6186, 0x6187, 0x6188, 0x6189, 0x618a, 0x618c,
+    0x618d, 0x618f, 0x6190, 0x6191, 0x6192, 0x6193, 0x6195, 0x003f,
+    0x6196, 0x6197, 0x6198, 0x6199, 0x619a, 0x619b, 0x619c, 0x619e,
+    0x619f, 0x61a0, 0x61a1, 0x61a2, 0x61a3, 0x61a4, 0x61a5, 0x61a6,
+    0x61aa, 0x61ab, 0x61ad, 0x61ae, 0x61af, 0x61b0, 0x61b1, 0x61b2,
+    0x61b3, 0x61b4, 0x61b5, 0x61b6, 0x61b8, 0x61b9, 0x61ba, 0x61bb,
+    0x61bc, 0x61bd, 0x61bf, 0x61c0, 0x61c1, 0x61c3, 0x61c4, 0x61c5,
+    0x61c6, 0x61c7, 0x61c9, 0x61cc, 0x61cd, 0x61ce, 0x61cf, 0x61d0,
+    0x61d3, 0x61d5, 0x61d6, 0x61d7, 0x61d8, 0x61d9, 0x61da, 0x61db,
+    0x61dc, 0x61dd, 0x61de, 0x61df, 0x61e0, 0x61e1, 0x61e2, 0x61e3,
+    0x61e4, 0x61e5, 0x61e7, 0x61e8, 0x61e9, 0x61ea, 0x61eb, 0x61ec,
+    0x61ed, 0x61ee, 0x61ef, 0x61f0, 0x61f1, 0x61f2, 0x61f3, 0x61f4,
+    0x61f6, 0x61f7, 0x61f8, 0x61f9, 0x61fa, 0x61fb, 0x61fc, 0x61fd,
+    0x61fe, 0x6200, 0x6201, 0x6202, 0x6203, 0x6204, 0x6205, 0x6207,
+    0x6209, 0x6213, 0x6214, 0x6219, 0x621c, 0x621d, 0x621e, 0x6220,
+    0x6223, 0x6226, 0x6227, 0x6228, 0x6229, 0x622b, 0x622d, 0x622f,
+    0x6230, 0x6231, 0x6232, 0x6235, 0x6236, 0x6238, 0x6239, 0x623a,
+    0x623b, 0x623c, 0x6242, 0x6244, 0x6245, 0x6246, 0x624a, 0x003f,
+    /* lead byte 92 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x624f, 0x6250, 0x6255, 0x6256, 0x6257, 0x6259, 0x625a, 0x625c,
+    0x625d, 0x625e, 0x625f, 0x6260, 0x6261, 0x6262, 0x6264, 0x6265,
+    0x6268, 0x6271, 0x6272, 0x6274, 0x6275, 0x6277, 0x6278, 0x627a,
+    0x627b, 0x627d, 0x6281, 0x6282, 0x6283, 0x6285, 0x6286, 0x6287,
+    0x6288, 0x628b, 0x628c, 0x628d, 0x628e, 0x628f, 0x6290, 0x6294,
+    0x6299, 0x629c, 0x629d, 0x629e, 0x62a3, 0x62a6, 0x62a7, 0x62a9,
+    0x62aa, 0x62ad, 0x62ae, 0x62af, 0x62b0, 0x62b2, 0x62b3, 0x62b4,
+    0x62b6, 0x62b7, 0x62b8, 0x62ba, 0x62be, 0x62c0, 0x62c1, 0x003f,
+    0x62c3, 0x62cb, 0x62cf, 0x62d1, 0x62d5, 0x62dd, 0x62de, 0x62e0,
+    0x62e1, 0x62e4, 0x62ea, 0x62eb, 0x62f0, 0x62f2, 0x62f5, 0x62f8,
+    0x62f9, 0x62fa, 0x62fb, 0x6300, 0x6303, 0x6304, 0x6305, 0x6306,
+    0x630a, 0x630b, 0x630c, 0x630d, 0x630f, 0x6310, 0x6312, 0x6313,
+    0x6314, 0x6315, 0x6317, 0x6318, 0x6319, 0x631c, 0x6326, 0x6327,
+    0x6329, 0x632c, 0x632d, 0x632e, 0x6330, 0x6331, 0x6333, 0x6334,
+    0x6335, 0x6336, 0x6337, 0x6338, 0x633b, 0x633c, 0x633e, 0x633f,
+    0x6340, 0x6341, 0x6344, 0x6347, 0x6348, 0x634a, 0x6351, 0x6352,
+    0x6353, 0x6354, 0x6356, 0x6357, 0x6358, 0x6359, 0x635a, 0x635b,
+    0x635c, 0x635d, 0x6360, 0x6364, 0x6365, 0x6366, 0x6368, 0x636a,
+    0x636b, 0x636c, 0x636f, 0x6370, 0x6372, 0x6373, 0x6374, 0x6375,
+    0x6378, 0x6379, 0x637c, 0x637d, 0x637e, 0x637f, 0x6381, 0x6383,
+    0x6384, 0x6385, 0x6386, 0x638b, 0x638d, 0x6391, 0x6393, 0x6394,
+    0x6395, 0x6397, 0x6399, 0x639a, 0x639b, 0x639c, 0x639d, 0x639e,
+    0x639f, 0x63a1, 0x63a4, 0x63a6, 0x63ab, 0x63af, 0x63b1, 0x63b2,
+    0x63b5, 0x63b6, 0x63b9, 0x63bb, 0x63bd, 0x63bf, 0x63c0, 0x003f,
+    /* lead byte 93 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x63c1, 0x63c2, 0x63c3, 0x63c5, 0x63c7, 0x63c8, 0x63ca, 0x63cb,
+    0x63cc, 0x63d1, 0x63d3, 0x63d4, 0x63d5, 0x63d7, 0x63d8, 0x63d9,
+    0x63da, 0x63db, 0x63dc, 0x63dd, 0x63df, 0x63e2, 0x63e4, 0x63e5,
+    0x63e6, 0x63e7, 0x63e8, 0x63eb, 0x63ec, 0x63ee, 0x63ef, 0x63f0,
+    0x63f1, 0x63f3, 0x63f5, 0x63f7, 0x63f9, 0x63fa, 0x63fb, 0x63fc,
+    0x63fe, 0x6403, 0x6404, 0x6406, 0x6407, 0x6408, 0x6409, 0x640a,
+    0x640d, 0x640e, 0x6411, 0x6412, 0x6415, 0x6416, 0x6417, 0x6418,
+    0x6419, 0x641a, 0x641d, 0x641f, 0x6422, 0x6423, 0x6424, 0x003f,
+    0x6425, 0x6427, 0x6428, 0x6429, 0x642b, 0x642e, 0x642f, 0x6430,
+    0x6431, 0x6432, 0x6433, 0x6435, 0x6436, 0x6437, 0x6438, 0x6439,
+    0x643b, 0x643c, 0x643e, 0x6440, 0x6442, 0x6443, 0x6449, 0x644b,
+    0x644c, 0x644d, 0x644e, 0x644f, 0x6450, 0x6451, 0x6453, 0x6455,
+    0x6456, 0x6457, 0x6459, 0x645a, 0x645b, 0x645c, 0x645d, 0x645f,
+    0x6460, 0x6461, 0x6462, 0x6463, 0x6464, 0x6465, 0x6466, 0x6468,
+    0x646a, 0x646b, 0x646c, 0x646e, 0x646f, 0x6470, 0x6471, 0x6472,
+    0x6473, 0x6474, 0x6475, 0x6476, 0x6477, 0x647b, 0x647c, 0x647d,
+    0x647e, 0x647f, 0x6480, 0x6481, 0x6483, 0x6486, 0x6488, 0x6489,
+    0x648a, 0x648b, 0x648c, 0x648d, 0x648e, 0x648f, 0x6490, 0x6493,
+    0x6494, 0x6497, 0x6498, 0x649a, 0x649b, 0x649c, 0x649d, 0x649f,
+    0x64a0, 0x64a1, 0x64a2, 0x64a3, 0x64a5, 0x64a6, 0x64a7, 0x64a8,
+    0x64aa, 0x64ab, 0x64af, 0x64b1, 0x64b2, 0x64b3, 0x64b4, 0x64b6,
+    0x64b9, 0x64bb, 0x64bd, 0x64be, 0x64bf, 0x64c1, 0x64c3, 0x64c4,
+    0x64c6, 0x64c7, 0x64c8, 0x64c9, 0x64ca, 0x64cb, 0x64cc, 0x64cf,
+    0x64d1, 0x64d3, 0x64d4, 0x64d5, 0x64d6, 0x64d9, 0x64da, 0x003f,
+    /* lead byte 94 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x64db, 0x64dc, 0x64dd, 0x64df, 0x64e0, 0x64e1, 0x64e3, 0x64e5,
+    0x64e7, 0x64e8, 0x64e9, 0x64ea, 0x64eb, 0x64ec, 0x64ed, 0x64ee,
+    0x64ef, 0x64f0, 0x64f1, 0x64f2, 0x64f3, 0x64f4, 0x64f5, 0x64f6,
+    0x64f7, 0x64f8, 0x64f9, 0x64fa, 0x64fb, 0x64fc, 0x64fd, 0x64fe,
+    0x64ff, 0x6501, 0x6502, 0x6503, 0x6504, 0x6505, 0x6506, 0x6507,
+    0x6508, 0x650a, 0x650b, 0x650c, 0x650d, 0x650e, 0x650f, 0x6510,
+    0x6511, 0x6513, 0x6514, 0x6515, 0x6516, 0x6517, 0x6519, 0x651a,
+    0x651b, 0x651c, 0x651d, 0x651e, 0x651f, 0x6520, 0x6521, 0x003f,
+    0x6522, 0x6523, 0x6524, 0x6526, 0x6527, 0x6528, 0x6529, 0x652a,
+    0x652c, 0x652d, 0x6530, 0x6531, 0x6532, 0x6533, 0x6537, 0x653a,
+    0x653c, 0x653d, 0x6540, 0x6541, 0x6542, 0x6543, 0x6544, 0x6546,
+    0x6547, 0x654a, 0x654b, 0x654d, 0x654e, 0x6550, 0x6552, 0x6553,
+    0x6554, 0x6557, 0x6558, 0x655a, 0x655c, 0x655f, 0x6560, 0x6561,
+    0x6564, 0x6565, 0x6567, 0x6568, 0x6569, 0x656a, 0x656d, 0x656e,
+    0x656f, 0x6571, 0x6573, 0x6575, 0x6576, 0x6578, 0x6579, 0x657a,
+    0x657b, 0x657c, 0x657d, 0x657e, 0x657f, 0x6580, 0x6581, 0x6582,
+    0x6583, 0x6584, 0x6585, 0x6586, 0x6588, 0x6589, 0x658a, 0x658d,
+    0x658e, 0x658f, 0x6592, 0x6594, 0x6595, 0x6596, 0x6598, 0x659a,
+    0x659d, 0x659e, 0x65a0, 0x65a2, 0x65a3, 0x65a6, 0x65a8, 0x65aa,
+    0x65ac, 0x65ae, 0x65b1, 0x65b2, 0x65b3, 0x65b4, 0x65b5, 0x65b6,
+    0x65b7, 0x65b8, 0x65ba, 0x65bb, 0x65be, 0x65bf, 0x65c0, 0x65c2,
+    0x65c7, 0x65c8, 0x65c9, 0x65ca, 0x65cd, 0x65d0, 0x65d1, 0x65d3,
+    0x65d4, 0x65d5, 0x65d8, 0x65d9, 0x65da, 0x65db, 0x65dc, 0x65dd,
+    0x65de, 0x65df, 0x65e1, 0x65e3, 0x65e4, 0x65ea, 0x65eb, 0x003f,
+    /* lead byte 95 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x65f2, 0x65f3, 0x65f4, 0x65f5, 0x65f8, 0x65f9, 0x65fb, 0x65fc,
+    0x65fd, 0x65fe, 0x65ff, 0x6601, 0x6604, 0x6605, 0x6607, 0x6608,
+    0x6609, 0x660b, 0x660d, 0x6610, 0x6611, 0x6612, 0x6616, 0x6617,
+    0x6618, 0x661a, 0x661b, 0x661c, 0x661e, 0x6621, 0x6622, 0x6623,
+    0x6624, 0x6626, 0x6629, 0x662a, 0x662b, 0x662c, 0x662e, 0x6630,
+    0x6632, 0x6633, 0x6637, 0x6638, 0x6639, 0x663a, 0x663b, 0x663d,
+    0x663f, 0x6640, 0x6642, 0x6644, 0x6645, 0x6646, 0x6647, 0x6648,
+    0x6649, 0x664a, 0x664d, 0x664e, 0x6650, 0x6651, 0x6658, 0x003f,
+    0x6659, 0x665b, 0x665c, 0x665d, 0x665e, 0x6660, 0x6662, 0x6663,
+    0x6665, 0x6667, 0x6669, 0x666a, 0x666b, 0x666c, 0x666d, 0x6671,
+    0x6672, 0x6673, 0x6675, 0x6678, 0x6679, 0x667b, 0x667c, 0x667d,
+    0x667f, 0x6680, 0x6681, 0x6683, 0x6685, 0x6686, 0x6688, 0x6689,
+    0x668a, 0x668b, 0x668d, 0x668e, 0x668f, 0x6690, 0x6692, 0x6693,
+    0x6694, 0x6695, 0x6698, 0x6699, 0x669a, 0x669b, 0x669c, 0x669e,
+    0x669f, 0x66a0, 0x66a1, 0x66a2, 0x66a3, 0x66a4, 0x66a5, 0x66a6,
+    0x66a9, 0x66aa, 0x66ab, 0x66ac, 0x66ad, 0x66af, 0x66b0, 0x66b1,
+    0x66b2, 0x66b3, 0x66b5, 0x66b6, 0x66b7, 0x66b8, 0x66ba, 0x66bb,
+    0x66bc, 0x66bd, 0x66bf, 0x66c0, 0x66c1, 0x66c2, 0x66c3, 0x66c4,
+    0x66c5, 0x66c6, 0x66c7, 0x66c8, 0x66c9, 0x66ca, 0x66cb, 0x66cc,
+    0x66cd, 0x66ce, 0x66cf, 0x66d0, 0x66d1, 0x66d2, 0x66d3, 0x66d4,
+    0x66d5, 0x66d6, 0x66d7, 0x66d8, 0x66da, 0x66de, 0x66df, 0x66e0,
+    0x66e1, 0x66e2, 0x66e3, 0x66e4, 0x66e5, 0x66e7, 0x66e8, 0x66ea,
+    0x66eb, 0x66ec, 0x66ed, 0x66ee, 0x66ef, 0x66f1, 0x66f5, 0x66f6,
+    0x66f8, 0x66fa, 0x66fb, 0x66fd, 0x6701, 0x6702, 0x6703, 0x003f,
+    /* lead byte 96 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6704, 0x6705, 0x6706, 0x6707, 0x670c, 0x670e, 0x670f, 0x6711,
+    0x6712, 0x6713, 0x6716, 0x6718, 0x6719, 0x671a, 0x671c, 0x671e,
+    0x6720, 0x6721, 0x6722, 0x6723, 0x6724, 0x6725, 0x6727, 0x6729,
+    0x672e, 0x6730, 0x6732, 0x6733, 0x6736, 0x6737, 0x6738, 0x6739,
+    0x673b, 0x673c, 0x673e, 0x673f, 0x6741, 0x6744, 0x6745, 0x6747,
+    0x674a, 0x674b, 0x674d, 0x6752, 0x6754, 0x6755, 0x6757, 0x6758,
+    0x6759, 0x675a, 0x675b, 0x675d, 0x6762, 0x6763, 0x6764, 0x6766,
+    0x6767, 0x676b, 0x676c, 0x676e, 0x6771, 0x6774, 0x6776, 0x003f,
+    0x6778, 0x6779, 0x677a, 0x677b, 0x677d, 0x6780, 0x6782, 0x6783,
+    0x6785, 0x6786, 0x6788, 0x678a, 0x678c, 0x678d, 0x678e, 0x678f,
+    0x6791, 0x6792, 0x6793, 0x6794, 0x6796, 0x6799, 0x679b, 0x679f,
+    0x67a0, 0x67a1, 0x67a4, 0x67a6, 0x67a9, 0x67ac, 0x67ae, 0x67b1,
+    0x67b2, 0x67b4, 0x67b9, 0x67ba, 0x67bb, 0x67bc, 0x67bd, 0x67be,
+    0x67bf, 0x67c0, 0x67c2, 0x67c5, 0x67c6, 0x67c7, 0x67c8, 0x67c9,
+    0x67ca, 0x67cb, 0x67cc, 0x67cd, 0x67ce, 0x67d5, 0x67d6, 0x67d7,
+    0x67db, 0x67df, 0x67e1, 0x67e3, 0x67e4, 0x67e6, 0x67e7, 0x67e8,
+    0x67ea, 0x67eb, 0x67ed, 0x67ee, 0x67f2, 0x67f5, 0x67f6, 0x67f7,
+    0x67f8, 0x67f9, 0x67fa, 0x67fb, 0x67fc, 0x67fe, 0x6801, 0x6802,
+    0x6803, 0x6804, 0x6806, 0x680d, 0x6810, 0x6812, 0x6814, 0x6815,
+    0x6818, 0x6819, 0x681a, 0x681b, 0x681c, 0x681e, 0x681f, 0x6820,
+    0x6822, 0x6823, 0x6824, 0x6825, 0x6826, 0x6827, 0x6828, 0x682b,
+    0x682c, 0x682d, 0x682e, 0x682f, 0x6830, 0x6831, 0x6834, 0x6835,
+    0x6836, 0x683a, 0x683b, 0x683f, 0x6847, 0x684b, 0x684d, 0x684f,
+    0x6852, 0x6856, 0x6857, 0x6858, 0x6859, 0x685a, 0x685b, 0x003f,
+    /* lead byte 97 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x685c, 0x685d, 0x685e, 0x685f, 0x686a, 0x686c, 0x686d, 0x686e,
+    0x686f, 0x6870, 0x6871, 0x6872, 0x6873, 0x6875, 0x6878, 0x6879,
+    0x687a, 0x687b, 0x687c, 0x687d, 0x687e, 0x687f, 0x6880, 0x6882,
+    0x6884, 0x6887, 0x6888, 0x6889, 0x688a, 0x688b, 0x688c, 0x688d,
+    0x688e, 0x6890, 0x6891, 0x6892, 0x6894, 0x6895, 0x6896, 0x6898,
+    0x6899, 0x689a, 0x689b, 0x689c, 0x689d, 0x689e, 0x689f, 0x68a0,
+    0x68a1, 0x68a3, 0x68a4, 0x68a5, 0x68a9, 0x68aa, 0x68ab, 0x68ac,
+    0x68ae, 0x68b1, 0x68b2, 0x68b4, 0x68b6, 0x68b7, 0x68b8, 0x003f,
+    0x68b9, 0x68ba, 0x68bb, 0x68bc, 0x68bd, 0x68be, 0x68bf, 0x68c1,
+    0x68c3, 0x68c4, 0x68c5, 0x68c6, 0x68c7, 0x68c8, 0x68ca, 0x68cc,
+    0x68ce, 0x68cf, 0x68d0, 0x68d1, 0x68d3, 0x68d4, 0x68d6, 0x68d7,
+    0x68d9, 0x68db, 0x68dc, 0x68dd, 0x68de, 0x68df, 0x68e1, 0x68e2,
+    0x68e4, 0x68e5, 0x68e6, 0x68e7, 0x68e8, 0x68e9, 0x68ea, 0x68eb,
+    0x68ec, 0x68ed, 0x68ef, 0x68f2, 0x68f3, 0x68f4, 0x68f6, 0x68f7,
+    0x68f8, 0x68fb, 0x68fd, 0x68fe, 0x68ff, 0x6900, 0x6902, 0x6903,
+    0x6904, 0x6906, 0x6907, 0x6908, 0x6909, 0x690a, 0x690c, 0x690f,
+    0x6911, 0x6913, 0x6914, 0x6915, 0x6916, 0x6917, 0x6918, 0x6919,
+    0x691a, 0x691b, 0x691c, 0x691d, 0x691e, 0x6921, 0x6922, 0x6923,
+    0x6925, 0x6926, 0x6927, 0x6928, 0x6929, 0x692a, 0x692b, 0x692c,
+    0x692e, 0x692f, 0x6931, 0x6932, 0x6933, 0x6935, 0x6936, 0x6937,
+    0x6938, 0x693a, 0x693b, 0x693c, 0x693e, 0x6940, 0x6941, 0x6943,
+    0x6944, 0x6945, 0x6946, 0x6947, 0x6948, 0x6949, 0x694a, 0x694b,
+    0x694c, 0x694d, 0x694e, 0x694f, 0x6950, 0x6951, 0x6952, 0x6953,
+    0x6955, 0x6956, 0x6958, 0x6959, 0x695b, 0x695c, 0x695f, 0x003f,
+    /* lead byte 98 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6961, 0x6962, 0x6964, 0x6965, 0x6967, 0x6968, 0x6969, 0x696a,
+    0x696c, 0x696d, 0x696f, 0x6970, 0x6972, 0x6973, 0x6974, 0x6975,
+    0x6976, 0x697a, 0x697b, 0x697d, 0x697e, 0x697f, 0x6981, 0x6983,
+    0x6985, 0x698a, 0x698b, 0x698c, 0x698e, 0x698f, 0x6990, 0x6991,
+    0x6992, 0x6993, 0x6996, 0x6997, 0x6999, 0x699a, 0x699d, 0x699e,
+    0x699f, 0x69a0, 0x69a1, 0x69a2, 0x69a3, 0x69a4, 0x69a5, 0x69a6,
+    0x69a9, 0x69aa, 0x69ac, 0x69ae, 0x69af, 0x69b0, 0x69b2, 0x69b3,
+    0x69b5, 0x69b6, 0x69b8, 0x69b9, 0x69ba, 0x69bc, 0x69bd, 0x003f,
+    0x69be, 0x69bf, 0x69c0, 0x69c2, 0x69c3, 0x69c4, 0x69c5, 0x69c6,
+    0x69c7, 0x69c8, 0x69c9, 0x69cb, 0x69cd, 0x69cf, 0x69d1, 0x69d2,
+    0x69d3, 0x69d5, 0x69d6, 0x69d7, 0x69d8, 0x69d9, 0x69da, 0x69dc,
+    0x69dd, 0x69de, 0x69e1, 0x69e2, 0x69e3, 0x69e4, 0x69e5, 0x69e6,
+    0x69e7, 0x69e8, 0x69e9, 0x69ea, 0x69eb, 0x69ec, 0x69ee, 0x69ef,
+    0x69f0, 0x69f1, 0x69f3, 0x69f4, 0x69f5, 0x69f6, 0x69f7, 0x69f8,
+    0x69f9, 0x69fa, 0x69fb, 0x69fc, 0x69fe, 0x6a00, 0x6a01, 0x6a02,
+    0x6a03, 0x6a04, 0x6a05, 0x6a06, 0x6a07, 0x6a08, 0x6a09, 0x6a0b,
+    0x6a0c, 0x6a0d, 0x6a0e, 0x6a0f, 0x6a10, 0x6a11, 0x6a12, 0x6a13,
+    0x6a14, 0x6a15, 0x6a16, 0x6a19, 0x6a1a, 0x6a1b, 0x6a1c, 0x6a1d,
+    0x6a1e, 0x6a20, 0x6a22, 0x6a23, 0x6a24, 0x6a25, 0x6a26, 0x6a27,
+    0x6a29, 0x6a2b, 0x6a2c, 0x6a2d, 0x6a2e, 0x6a30, 0x6a32, 0x6a33,
+    0x6a34, 0x6a36, 0x6a37, 0x6a38, 0x6a39, 0x6a3a, 0x6a3b, 0x6a3c,
+    0x6a3f, 0x6a40, 0x6a41, 0x6a42, 0x6a43, 0x6a45, 0x6a46, 0x6a48,
+    0x6a49, 0x6a4a, 0x6a4b, 0x6a4c, 0x6a4d, 0x6a4e, 0x6a4f, 0x6a51,
+    0x6a52, 0x6a53, 0x6a54, 0x6a55, 0x6a56, 0x6a57, 0x6a5a, 0x003f,
+    /* lead byte 99 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6a5c, 0x6a5d, 0x6a5e, 0x6a5f, 0x6a60, 0x6a62, 0x6a63, 0x6a64,
+    0x6a66, 0x6a67, 0x6a68, 0x6a69, 0x6a6a, 0x6a6b, 0x6a6c, 0x6a6d,
+    0x6a6e, 0x6a6f, 0x6a70, 0x6a72, 0x6a73, 0x6a74, 0x6a75, 0x6a76,
+    0x6a77, 0x6a78, 0x6a7a, 0x6a7b, 0x6a7d, 0x6a7e, 0x6a7f, 0x6a81,
+    0x6a82, 0x6a83, 0x6a85, 0x6a86, 0x6a87, 0x6a88, 0x6a89, 0x6a8a,
+    0x6a8b, 0x6a8c, 0x6a8d, 0x6a8f, 0x6a92, 0x6a93, 0x6a94, 0x6a95,
+    0x6a96, 0x6a98, 0x6a99, 0x6a9a, 0x6a9b, 0x6a9c, 0x6a9d, 0x6a9e,
+    0x6a9f, 0x6aa1, 0x6aa2, 0x6aa3, 0x6aa4, 0x6aa5, 0x6aa6, 0x003f,
+    0x6aa7, 0x6aa8, 0x6aaa, 0x6aad, 0x6aae, 0x6aaf, 0x6ab0, 0x6ab1,
+    0x6ab2, 0x6ab3, 0x6ab4, 0x6ab5, 0x6ab6, 0x6ab7, 0x6ab8, 0x6ab9,
+    0x6aba, 0x6abb, 0x6abc, 0x6abd, 0x6abe, 0x6abf, 0x6ac0, 0x6ac1,
+    0x6ac2, 0x6ac3, 0x6ac4, 0x6ac5, 0x6ac6, 0x6ac7, 0x6ac8, 0x6ac9,
+    0x6aca, 0x6acb, 0x6acc, 0x6acd, 0x6ace, 0x6acf, 0x6ad0, 0x6ad1,
+    0x6ad2, 0x6ad3, 0x6ad4, 0x6ad5, 0x6ad6, 0x6ad7, 0x6ad8, 0x6ad9,
+    0x6ada, 0x6adb, 0x6adc, 0x6add, 0x6ade, 0x6adf, 0x6ae0, 0x6ae1,
+    0x6ae2, 0x6ae3, 0x6ae4, 0x6ae5, 0x6ae6, 0x6ae7, 0x6ae8, 0x6ae9,
+    0x6aea, 0x6aeb, 0x6aec, 0x6aed, 0x6aee, 0x6aef, 0x6af0, 0x6af1,
+    0x6af2, 0x6af3, 0x6af4, 0x6af5, 0x6af6, 0x6af7, 0x6af8, 0x6af9,
+    0x6afa, 0x6afb, 0x6afc, 0x6afd, 0x6afe, 0x6aff, 0x6b00, 0x6b01,
+    0x6b02, 0x6b03, 0x6b04, 0x6b05, 0x6b06, 0x6b07, 0x6b08, 0x6b09,
+    0x6b0a, 0x6b0b, 0x6b0c, 0x6b0d, 0x6b0e, 0x6b0f, 0x6b10, 0x6b11,
+    0x6b12, 0x6b13, 0x6b14, 0x6b15, 0x6b16, 0x6b17, 0x6b18, 0x6b19,
+    0x6b1a, 0x6b1b, 0x6b1c, 0x6b1d, 0x6b1e, 0x6b1f, 0x6b25, 0x6b26,
+    0x6b28, 0x6b29, 0x6b2a, 0x6b2b, 0x6b2c, 0x6b2d, 0x6b2e, 0x003f,
+    /* lead byte 9a */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6b2f, 0x6b30, 0x6b31, 0x6b33, 0x6b34, 0x6b35, 0x6b36, 0x6b38,
+    0x6b3b, 0x6b3c, 0x6b3d, 0x6b3f, 0x6b40, 0x6b41, 0x6b42, 0x6b44,
+    0x6b45, 0x6b48, 0x6b4a, 0x6b4b, 0x6b4d, 0x6b4e, 0x6b4f, 0x6b50,
+    0x6b51, 0x6b52, 0x6b53, 0x6b54, 0x6b55, 0x6b56, 0x6b57, 0x6b58,
+    0x6b5a, 0x6b5b, 0x6b5c, 0x6b5d, 0x6b5e, 0x6b5f, 0x6b60, 0x6b61,
+    0x6b68, 0x6b69, 0x6b6b, 0x6b6c, 0x6b6d, 0x6b6e, 0x6b6f, 0x6b70,
+    0x6b71, 0x6b72, 0x6b73, 0x6b74, 0x6b75, 0x6b76, 0x6b77, 0x6b78,
+    0x6b7a, 0x6b7d, 0x6b7e, 0x6b7f, 0x6b80, 0x6b85, 0x6b88, 0x003f,
+    0x6b8c, 0x6b8e, 0x6b8f, 0x6b90, 0x6b91, 0x6b94, 0x6b95, 0x6b97,
+    0x6b98, 0x6b99, 0x6b9c, 0x6b9d, 0x6b9e, 0x6b9f, 0x6ba0, 0x6ba2,
+    0x6ba3, 0x6ba4, 0x6ba5, 0x6ba6, 0x6ba7, 0x6ba8, 0x6ba9, 0x6bab,
+    0x6bac, 0x6bad, 0x6bae, 0x6baf, 0x6bb0, 0x6bb1, 0x6bb2, 0x6bb6,
+    0x6bb8, 0x6bb9, 0x6bba, 0x6bbb, 0x6bbc, 0x6bbd, 0x6bbe, 0x6bc0,
+    0x6bc3, 0x6bc4, 0x6bc6, 0x6bc7, 0x6bc8, 0x6bc9, 0x6bca, 0x6bcc,
+    0x6bce, 0x6bd0, 0x6bd1, 0x6bd8, 0x6bda, 0x6bdc, 0x6bdd, 0x6bde,
+    0x6bdf, 0x6be0, 0x6be2, 0x6be3, 0x6be4, 0x6be5, 0x6be6, 0x6be7,
+    0x6be8, 0x6be9, 0x6bec, 0x6bed, 0x6bee, 0x6bf0, 0x6bf1, 0x6bf2,
+    0x6bf4, 0x6bf6, 0x6bf7, 0x6bf8, 0x6bfa, 0x6bfb, 0x6bfc, 0x6bfe,
+    0x6bff, 0x6c00, 0x6c01, 0x6c02, 0x6c03, 0x6c04, 0x6c08, 0x6c09,
+    0x6c0a, 0x6c0b, 0x6c0c, 0x6c0e, 0x6c12, 0x6c17, 0x6c1c, 0x6c1d,
+    0x6c1e, 0x6c20, 0x6c23, 0x6c25, 0x6c2b, 0x6c2c, 0x6c2d, 0x6c31,
+    0x6c33, 0x6c36, 0x6c37, 0x6c39, 0x6c3a, 0x6c3b, 0x6c3c, 0x6c3e,
+    0x6c3f, 0x6c43, 0x6c44, 0x6c45, 0x6c48, 0x6c4b, 0x6c4c, 0x6c4d,
+    0x6c4e, 0x6c4f, 0x6c51, 0x6c52, 0x6c53, 0x6c56, 0x6c58, 0x003f,
+    /* lead byte 9b */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6c59, 0x6c5a, 0x6c62, 0x6c63, 0x6c65, 0x6c66, 0x6c67, 0x6c6b,
+    0x6c6c, 0x6c6d, 0x6c6e, 0x6c6f, 0x6c71, 0x6c73, 0x6c75, 0x6c77,
+    0x6c78, 0x6c7a, 0x6c7b, 0x6c7c, 0x6c7f, 0x6c80, 0x6c84, 0x6c87,
+    0x6c8a, 0x6c8b, 0x6c8d, 0x6c8e, 0x6c91, 0x6c92, 0x6c95, 0x6c96,
+    0x6c97, 0x6c98, 0x6c9a, 0x6c9c, 0x6c9d, 0x6c9e, 0x6ca0, 0x6ca2,
+    0x6ca8, 0x6cac, 0x6caf, 0x6cb0, 0x6cb4, 0x6cb5, 0x6cb6, 0x6cb7,
+    0x6cba, 0x6cc0, 0x6cc1, 0x6cc2, 0x6cc3, 0x6cc6, 0x6cc7, 0x6cc8,
+    0x6ccb, 0x6ccd, 0x6cce, 0x6ccf, 0x6cd1, 0x6cd2, 0x6cd8, 0x003f,
+    0x6cd9, 0x6cda, 0x6cdc, 0x6cdd, 0x6cdf, 0x6ce4, 0x6ce6, 0x6ce7,
+    0x6ce9, 0x6cec, 0x6ced, 0x6cf2, 0x6cf4, 0x6cf9, 0x6cff, 0x6d00,
+    0x6d02, 0x6d03, 0x6d05, 0x6d06, 0x6d08, 0x6d09, 0x6d0a, 0x6d0d,
+    0x6d0f, 0x6d10, 0x6d11, 0x6d13, 0x6d14, 0x6d15, 0x6d16, 0x6d18,
+    0x6d1c, 0x6d1d, 0x6d1f, 0x6d20, 0x6d21, 0x6d22, 0x6d23, 0x6d24,
+    0x6d26, 0x6d28, 0x6d29, 0x6d2c, 0x6d2d, 0x6d2f, 0x6d30, 0x6d34,
+    0x6d36, 0x6d37, 0x6d38, 0x6d3a, 0x6d3f, 0x6d40, 0x6d42, 0x6d44,
+    0x6d49, 0x6d4c, 0x6d50, 0x6d55, 0x6d56, 0x6d57, 0x6d58, 0x6d5b,
+    0x6d5d, 0x6d5f, 0x6d61, 0x6d62, 0x6d64, 0x6d65, 0x6d67, 0x6d68,
+    0x6d6b, 0x6d6c, 0x6d6d, 0x6d70, 0x6d71, 0x6d72, 0x6d73, 0x6d75,
+    0x6d76, 0x6d79, 0x6d7a, 0x6d7b, 0x6d7d, 0x6d7e, 0x6d7f, 0x6d80,
+    0x6d81, 0x6d83, 0x6d84, 0x6d86, 0x6d87, 0x6d8a, 0x6d8b, 0x6d8d,
+    0x6d8f, 0x6d90, 0x6d92, 0x6d96, 0x6d97, 0x6d98, 0x6d99, 0x6d9a,
+    0x6d9c, 0x6da2, 0x6da5, 0x6dac, 0x6dad, 0x6db0, 0x6db1, 0x6db3,
+    0x6db4, 0x6db6, 0x6db7, 0x6db9, 0x6dba, 0x6dbb, 0x6dbc, 0x6dbd,
+    0x6dbe, 0x6dc1, 0x6dc2, 0x6dc3, 0x6dc8, 0x6dc9, 0x6dca, 0x003f,
+    /* lead byte 9c */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6dcd, 0x6dce, 0x6dcf, 0x6dd0, 0x6dd2, 0x6dd3, 0x6dd4, 0x6dd5,
+    0x6dd7, 0x6dda, 0x6ddb, 0x6ddc, 0x6ddf, 0x6de2, 0x6de3, 0x6de5,
+    0x6de7, 0x6de8, 0x6de9, 0x6dea, 0x6ded, 0x6def, 0x6df0, 0x6df2,
+    0x6df4, 0x6df5, 0x6df6, 0x6df8, 0x6dfa, 0x6dfd, 0x6dfe, 0x6dff,
+    0x6e00, 0x6e01, 0x6e02, 0x6e03, 0x6e04, 0x6e06, 0x6e07, 0x6e08,
+    0x6e09, 0x6e0b, 0x6e0f, 0x6e12, 0x6e13, 0x6e15, 0x6e18, 0x6e19,
+    0x6e1b, 0x6e1c, 0x6e1e, 0x6e1f, 0x6e22, 0x6e26, 0x6e27, 0x6e28,
+    0x6e2a, 0x6e2c, 0x6e2e, 0x6e30, 0x6e31, 0x6e33, 0x6e35, 0x003f,
+    0x6e36, 0x6e37, 0x6e39, 0x6e3b, 0x6e3c, 0x6e3d, 0x6e3e, 0x6e3f,
+    0x6e40, 0x6e41, 0x6e42, 0x6e45, 0x6e46, 0x6e47, 0x6e48, 0x6e49,
+    0x6e4a, 0x6e4b, 0x6e4c, 0x6e4f, 0x6e50, 0x6e51, 0x6e52, 0x6e55,
+    0x6e57, 0x6e59, 0x6e5a, 0x6e5c, 0x6e5d, 0x6e5e, 0x6e60, 0x6e61,
+    0x6e62, 0x6e63, 0x6e64, 0x6e65, 0x6e66, 0x6e67, 0x6e68, 0x6e69,
+    0x6e6a, 0x6e6c, 0x6e6d, 0x6e6f, 0x6e70, 0x6e71, 0x6e72, 0x6e73,
+    0x6e74, 0x6e75, 0x6e76, 0x6e77, 0x6e78, 0x6e79, 0x6e7a, 0x6e7b,
+    0x6e7c, 0x6e7d, 0x6e80, 0x6e81, 0x6e82, 0x6e84, 0x6e87, 0x6e88,
+    0x6e8a, 0x6e8b, 0x6e8c, 0x6e8d, 0x6e8e, 0x6e91, 0x6e92, 0x6e93,
+    0x6e94, 0x6e95, 0x6e96, 0x6e97, 0x6e99, 0x6e9a, 0x6e9b, 0x6e9d,
+    0x6e9e, 0x6ea0, 0x6ea1, 0x6ea3, 0x6ea4, 0x6ea6, 0x6ea8, 0x6ea9,
+    0x6eab, 0x6eac, 0x6ead, 0x6eae, 0x6eb0, 0x6eb3, 0x6eb5, 0x6eb8,
+    0x6eb9, 0x6ebc, 0x6ebe, 0x6ebf, 0x6ec0, 0x6ec3, 0x6ec4, 0x6ec5,
+    0x6ec6, 0x6ec8, 0x6ec9, 0x6eca, 0x6ecc, 0x6ecd, 0x6ece, 0x6ed0,
+    0x6ed2, 0x6ed6, 0x6ed8, 0x6ed9, 0x6edb, 0x6edc, 0x6edd, 0x6ee3,
+    0x6ee7, 0x6eea, 0x6eeb, 0x6eec, 0x6eed, 0x6eee, 0x6eef, 0x003f,
+    /* lead byte 9d */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6ef0, 0x6ef1, 0x6ef2, 0x6ef3, 0x6ef5, 0x6ef6, 0x6ef7, 0x6ef8,
+    0x6efa, 0x6efb, 0x6efc, 0x6efd, 0x6efe, 0x6eff, 0x6f00, 0x6f01,
+    0x6f03, 0x6f04, 0x6f05, 0x6f07, 0x6f08, 0x6f0a, 0x6f0b, 0x6f0c,
+    0x6f0d, 0x6f0e, 0x6f10, 0x6f11, 0x6f12, 0x6f16, 0x6f17, 0x6f18,
+    0x6f19, 0x6f1a, 0x6f1b, 0x6f1c, 0x6f1d, 0x6f1e, 0x6f1f, 0x6f21,
+    0x6f22, 0x6f23, 0x6f25, 0x6f26, 0x6f27, 0x6f28, 0x6f2c, 0x6f2e,
+    0x6f30, 0x6f32, 0x6f34, 0x6f35, 0x6f37, 0x6f38, 0x6f39, 0x6f3a,
+    0x6f3b, 0x6f3c, 0x6f3d, 0x6f3f, 0x6f40, 0x6f41, 0x6f42, 0x003f,
+    0x6f43, 0x6f44, 0x6f45, 0x6f48, 0x6f49, 0x6f4a, 0x6f4c, 0x6f4e,
+    0x6f4f, 0x6f50, 0x6f51, 0x6f52, 0x6f53, 0x6f54, 0x6f55, 0x6f56,
+    0x6f57, 0x6f59, 0x6f5a, 0x6f5b, 0x6f5d, 0x6f5f, 0x6f60, 0x6f61,
+    0x6f63, 0x6f64, 0x6f65, 0x6f67, 0x6f68, 0x6f69, 0x6f6a, 0x6f6b,
+    0x6f6c, 0x6f6f, 0x6f70, 0x6f71, 0x6f73, 0x6f75, 0x6f76, 0x6f77,
+    0x6f79, 0x6f7b, 0x6f7d, 0x6f7e, 0x6f7f, 0x6f80, 0x6f81, 0x6f82,
+    0x6f83, 0x6f85, 0x6f86, 0x6f87, 0x6f8a, 0x6f8b, 0x6f8f, 0x6f90,
+    0x6f91, 0x6f92, 0x6f93, 0x6f94, 0x6f95, 0x6f96, 0x6f97, 0x6f98,
+    0x6f99, 0x6f9a, 0x6f9b, 0x6f9d, 0x6f9e, 0x6f9f, 0x6fa0, 0x6fa2,
+    0x6fa3, 0x6fa4, 0x6fa5, 0x6fa6, 0x6fa8, 0x6fa9, 0x6faa, 0x6fab,
+    0x6fac, 0x6fad, 0x6fae, 0x6faf, 0x6fb0, 0x6fb1, 0x6fb2, 0x6fb4,
+    0x6fb5, 0x6fb7, 0x6fb8, 0x6fba, 0x6fbb, 0x6fbc, 0x6fbd, 0x6fbe,
+    0x6fbf, 0x6fc1, 0x6fc3, 0x6fc4, 0x6fc5, 0x6fc6, 0x6fc7, 0x6fc8,
+    0x6fca, 0x6fcb, 0x6fcc, 0x6fcd, 0x6fce, 0x6fcf, 0x6fd0, 0x6fd3,
+    0x6fd4, 0x6fd5, 0x6fd6, 0x6fd7, 0x6fd8, 0x6fd9, 0x6fda, 0x6fdb,
+    0x6fdc, 0x6fdd, 0x6fdf, 0x6fe2, 0x6fe3, 0x6fe4, 0x6fe5, 0x003f,
+    /* lead byte 9e */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6fe6, 0x6fe7, 0x6fe8, 0x6fe9, 0x6fea, 0x6feb, 0x6fec, 0x6fed,
+    0x6ff0, 0x6ff1, 0x6ff2, 0x6ff3, 0x6ff4, 0x6ff5, 0x6ff6, 0x6ff7,
+    0x6ff8, 0x6ff9, 0x6ffa, 0x6ffb, 0x6ffc, 0x6ffd, 0x6ffe, 0x6fff,
+    0x7000, 0x7001, 0x7002, 0x7003, 0x7004, 0x7005, 0x7006, 0x7007,
+    0x7008, 0x7009, 0x700a, 0x700b, 0x700c, 0x700d, 0x700e, 0x700f,
+    0x7010, 0x7012, 0x7013, 0x7014, 0x7015, 0x7016, 0x7017, 0x7018,
+    0x7019, 0x701c, 0x701d, 0x701e, 0x701f, 0x7020, 0x7021, 0x7022,
+    0x7024, 0x7025, 0x7026, 0x7027, 0x7028, 0x7029, 0x702a, 0x003f,
+    0x702b, 0x702c, 0x702d, 0x702e, 0x702f, 0x7030, 0x7031, 0x7032,
+    0x7033, 0x7034, 0x7036, 0x7037, 0x7038, 0x703a, 0x703b, 0x703c,
+    0x703d, 0x703e, 0x703f, 0x7040, 0x7041, 0x7042, 0x7043, 0x7044,
+    0x7045, 0x7046, 0x7047, 0x7048, 0x7049, 0x704a, 0x704b, 0x704d,
+    0x704e, 0x7050, 0x7051, 0x7052, 0x7053, 0x7054, 0x7055, 0x7056,
+    0x7057, 0x7058, 0x7059, 0x705a, 0x705b, 0x705c, 0x705d, 0x705f,
+    0x7060, 0x7061, 0x7062, 0x7063, 0x7064, 0x7065, 0x7066, 0x7067,
+    0x7068, 0x7069, 0x706a, 0x706e, 0x7071, 0x7072, 0x7073, 0x7074,
+    0x7077, 0x7079, 0x707a, 0x707b, 0x707d, 0x7081, 0x7082, 0x7083,
+    0x7084, 0x7086, 0x7087, 0x7088, 0x708b, 0x708c, 0x708d, 0x708f,
+    0x7090, 0x7091, 0x7093, 0x7097, 0x7098, 0x709a, 0x709b, 0x709e,
+    0x709f, 0x70a0, 0x70a1, 0x70a2, 0x70a3, 0x70a4, 0x70a5, 0x70a6,
+    0x70a7, 0x70a8, 0x70a9, 0x70aa, 0x70b0, 0x70b2, 0x70b4, 0x70b5,
+    0x70b6, 0x70ba, 0x70be, 0x70bf, 0x70c4, 0x70c5, 0x70c6, 0x70c7,
+    0x70c9, 0x70cb, 0x70cc, 0x70cd, 0x70ce, 0x70cf, 0x70d0, 0x70d1,
+    0x70d2, 0x70d3, 0x70d4, 0x70d5, 0x70d6, 0x70d7, 0x70da, 0x003f,
+    /* lead byte 9f */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x70dc, 0x70dd, 0x70de, 0x70e0, 0x70e1, 0x70e2, 0x70e3, 0x70e5,
+    0x70ea, 0x70ee, 0x70f0, 0x70f1, 0x70f2, 0x70f3, 0x70f4, 0x70f5,
+    0x70f6, 0x70f8, 0x70fa, 0x70fb, 0x70fc, 0x70fe, 0x70ff, 0x7100,
+    0x7101, 0x7102, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x7108,
+    0x710b, 0x710c, 0x710d, 0x710e, 0x710f, 0x7111, 0x7112, 0x7114,
+    0x7117, 0x711b, 0x711c, 0x711d, 0x711e, 0x711f, 0x7120, 0x7121,
+    0x7122, 0x7123, 0x7124, 0x7125, 0x7127, 0x7128, 0x7129, 0x712a,
+    0x712b, 0x712c, 0x712d, 0x712e, 0x7132, 0x7133, 0x7134, 0x003f,
+    0x7135, 0x7137, 0x7138, 0x7139, 0x713a, 0x713b, 0x713c, 0x713d,
+    0x713e, 0x713f, 0x7140, 0x7141, 0x7142, 0x7143, 0x7144, 0x7146,
+    0x7147, 0x7148, 0x7149, 0x714b, 0x714d, 0x714f, 0x7150, 0x7151,
+    0x7152, 0x7153, 0x7154, 0x7155, 0x7156, 0x7157, 0x7158, 0x7159,
+    0x715a, 0x715b, 0x715d, 0x715f, 0x7160, 0x7161, 0x7162, 0x7163,
+    0x7165, 0x7169, 0x716a, 0x716b, 0x716c, 0x716d, 0x716f, 0x7170,
+    0x7171, 0x7174, 0x7175, 0x7176, 0x7177, 0x7179, 0x717b, 0x717c,
+    0x717e, 0x717f, 0x7180, 0x7181, 0x7182, 0x7183, 0x7185, 0x7186,
+    0x7187, 0x7188, 0x7189, 0x718b, 0x718c, 0x718d, 0x718e, 0x7190,
+    0x7191, 0x7192, 0x7193, 0x7195, 0x7196, 0x7197, 0x719a, 0x719b,
+    0x719c, 0x719d, 0x719e, 0x71a1, 0x71a2, 0x71a3, 0x71a4, 0x71a5,
+    0x71a6, 0x71a7, 0x71a9, 0x71aa, 0x71ab, 0x71ad, 0x71ae, 0x71af,
+    0x71b0, 0x71b1, 0x71b2, 0x71b4, 0x71b6, 0x71b7, 0x71b8, 0x71ba,
+    0x71bb, 0x71bc, 0x71bd, 0x71be, 0x71bf, 0x71c0, 0x71c1, 0x71c2,
+    0x71c4, 0x71c5, 0x71c6, 0x71c7, 0x71c8, 0x71c9, 0x71ca, 0x71cb,
+    0x71cc, 0x71cd, 0x71cf, 0x71d0, 0x71d1, 0x71d2, 0x71d3, 0x003f,
+    /* lead byte a0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x71d6, 0x71d7, 0x71d8, 0x71d9, 0x71da, 0x71db, 0x71dc, 0x71dd,
+    0x71de, 0x71df, 0x71e1, 0x71e2, 0x71e3, 0x71e4, 0x71e6, 0x71e8,
+    0x71e9, 0x71ea, 0x71eb, 0x71ec, 0x71ed, 0x71ef, 0x71f0, 0x71f1,
+    0x71f2, 0x71f3, 0x71f4, 0x71f5, 0x71f6, 0x71f7, 0x71f8, 0x71fa,
+    0x71fb, 0x71fc, 0x71fd, 0x71fe, 0x71ff, 0x7200, 0x7201, 0x7202,
+    0x7203, 0x7204, 0x7205, 0x7207, 0x7208, 0x7209, 0x720a, 0x720b,
+    0x720c, 0x720d, 0x720e, 0x720f, 0x7210, 0x7211, 0x7212, 0x7213,
+    0x7214, 0x7215, 0x7216, 0x7217, 0x7218, 0x7219, 0x721a, 0x003f,
+    0x721b, 0x721c, 0x721e, 0x721f, 0x7220, 0x7221, 0x7222, 0x7223,
+    0x7224, 0x7225, 0x7226, 0x7227, 0x7229, 0x722b, 0x722d, 0x722e,
+    0x722f, 0x7232, 0x7233, 0x7234, 0x723a, 0x723c, 0x723e, 0x7240,
+    0x7241, 0x7242, 0x7243, 0x7244, 0x7245, 0x7246, 0x7249, 0x724a,
+    0x724b, 0x724e, 0x724f, 0x7250, 0x7251, 0x7253, 0x7254, 0x7255,
+    0x7257, 0x7258, 0x725a, 0x725c, 0x725e, 0x7260, 0x7263, 0x7264,
+    0x7265, 0x7268, 0x726a, 0x726b, 0x726c, 0x726d, 0x7270, 0x7271,
+    0x7273, 0x7274, 0x7276, 0x7277, 0x7278, 0x727b, 0x727c, 0x727d,
+    0x7282, 0x7283, 0x7285, 0x7286, 0x7287, 0x7288, 0x7289, 0x728c,
+    0x728e, 0x7290, 0x7291, 0x7293, 0x7294, 0x7295, 0x7296, 0x7297,
+    0x7298, 0x7299, 0x729a, 0x729b, 0x729c, 0x729d, 0x729e, 0x72a0,
+    0x72a1, 0x72a2, 0x72a3, 0x72a4, 0x72a5, 0x72a6, 0x72a7, 0x72a8,
+    0x72a9, 0x72aa, 0x72ab, 0x72ae, 0x72b1, 0x72b2, 0x72b3, 0x72b5,
+    0x72ba, 0x72bb, 0x72bc, 0x72bd, 0x72be, 0x72bf, 0x72c0, 0x72c5,
+    0x72c6, 0x72c7, 0x72c9, 0x72ca, 0x72cb, 0x72cc, 0x72cf, 0x72d1,
+    0x72d3, 0x72d4, 0x72d5, 0x72d6, 0x72d8, 0x72da, 0x72db, 0x003f,
+    /* lead byte a1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3000, 0x3001, 0x3002, 0x00b7, 0x02c9, 0x02c7, 0x00a8,
+    0x3003, 0x3005, 0x2014, 0xff5e, 0x2016, 0x2026, 0x2018, 0x2019,
+    0x201c, 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b,
+    0x300c, 0x300d, 0x300e, 0x300f, 0x3016, 0x3017, 0x3010, 0x3011,
+    0x00b1, 0x00d7, 0x00f7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220f,
+    0x222a, 0x2229, 0x2208, 0x2237, 0x221a, 0x22a5, 0x2225, 0x2220,
+    0x2312, 0x2299, 0x222b, 0x222e, 0x2261, 0x224c, 0x2248, 0x223d,
+    0x221d, 0x2260, 0x226e, 0x226f, 0x2264, 0x2265, 0x221e, 0x2235,
+    0x2234, 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xff04,
+    0x00a4, 0xffe0, 0xffe1, 0x2030, 0x00a7, 0x2116, 0x2606, 0x2605,
+    0x25cb, 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25b3,
+    0x25b2, 0x203b, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0x003f,
+    /* lead byte a2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176,
+    0x2177, 0x2178, 0x2179, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x2488, 0x2489, 0x248a, 0x248b, 0x248c, 0x248d, 0x248e,
+    0x248f, 0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496,
+    0x2497, 0x2498, 0x2499, 0x249a, 0x249b, 0x2474, 0x2475, 0x2476,
+    0x2477, 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d, 0x247e,
+    0x247f, 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486,
+    0x2487, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466,
+    0x2467, 0x2468, 0x2469, 0x003f, 0x003f, 0x3220, 0x3221, 0x3222,
+    0x3223, 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0x003f,
+    0x003f, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166,
+    0x2167, 0x2168, 0x2169, 0x216a, 0x216b, 0x003f, 0x003f, 0x003f,
+    /* lead byte a3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xff01, 0xff02, 0xff03, 0xffe5, 0xff05, 0xff06, 0xff07,
+    0xff08, 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f,
+    0xff10, 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17,
+    0xff18, 0xff19, 0xff1a, 0xff1b, 0xff1c, 0xff1d, 0xff1e, 0xff1f,
+    0xff20, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27,
+    0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f,
+    0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37,
+    0xff38, 0xff39, 0xff3a, 0xff3b, 0xff3c, 0xff3d, 0xff3e, 0xff3f,
+    0xff40, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47,
+    0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f,
+    0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57,
+    0xff58, 0xff59, 0xff5a, 0xff5b, 0xff5c, 0xff5d, 0xffe3, 0x003f,
+    /* lead byte a4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047,
+    0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f,
+    0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057,
+    0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f,
+    0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067,
+    0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f,
+    0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077,
+    0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f,
+    0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087,
+    0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f,
+    0x3090, 0x3091, 0x3092, 0x3093, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte a5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7,
+    0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af,
+    0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7,
+    0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf,
+    0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7,
+    0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf,
+    0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7,
+    0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df,
+    0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7,
+    0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef,
+    0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte a6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
+    0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f,
+    0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8,
+    0x03a9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
+    0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
+    0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8,
+    0x03c9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xfe35, 0xfe36, 0xfe39, 0xfe3a, 0xfe3f, 0xfe40, 0xfe3d, 0xfe3e,
+    0xfe41, 0xfe42, 0xfe43, 0xfe44, 0x003f, 0x003f, 0xfe3b, 0xfe3c,
+    0xfe37, 0xfe38, 0xfe31, 0x003f, 0xfe33, 0xfe34, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte a7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401,
+    0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d,
+    0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425,
+    0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d,
+    0x042e, 0x042f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451,
+    0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d,
+    0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445,
+    0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d,
+    0x044e, 0x044f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte a8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x02ca, 0x02cb, 0x02d9, 0x2013, 0x2015, 0x2025, 0x2035, 0x2105,
+    0x2109, 0x2196, 0x2197, 0x2198, 0x2199, 0x2215, 0x221f, 0x2223,
+    0x2252, 0x2266, 0x2267, 0x22bf, 0x2550, 0x2551, 0x2552, 0x2553,
+    0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, 0x255a, 0x255b,
+    0x255c, 0x255d, 0x255e, 0x255f, 0x2560, 0x2561, 0x2562, 0x2563,
+    0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b,
+    0x256c, 0x256d, 0x256e, 0x256f, 0x2570, 0x2571, 0x2572, 0x2573,
+    0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587, 0x003f,
+    0x2588, 0x2589, 0x258a, 0x258b, 0x258c, 0x258d, 0x258e, 0x258f,
+    0x2593, 0x2594, 0x2595, 0x25bc, 0x25bd, 0x25e2, 0x25e3, 0x25e4,
+    0x25e5, 0x2609, 0x2295, 0x3012, 0x301d, 0x301e, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0101, 0x00e1, 0x01ce, 0x00e0, 0x0113, 0x00e9, 0x011b,
+    0x00e8, 0x012b, 0x00ed, 0x01d0, 0x00ec, 0x014d, 0x00f3, 0x01d2,
+    0x00f2, 0x016b, 0x00fa, 0x01d4, 0x00f9, 0x01d6, 0x01d8, 0x01da,
+    0x01dc, 0x00fc, 0x00ea, 0x0251, 0x003f, 0x0144, 0x0148, 0x003f,
+    0x0261, 0x003f, 0x003f, 0x003f, 0x003f, 0x3105, 0x3106, 0x3107,
+    0x3108, 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f,
+    0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117,
+    0x3118, 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f,
+    0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127,
+    0x3128, 0x3129, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte a9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028,
+    0x3029, 0x32a3, 0x338e, 0x338f, 0x339c, 0x339d, 0x339e, 0x33a1,
+    0x33c4, 0x33ce, 0x33d1, 0x33d2, 0x33d5, 0xfe30, 0xffe2, 0xffe4,
+    0x003f, 0x2121, 0x3231, 0x003f, 0x2010, 0x003f, 0x003f, 0x003f,
+    0x30fc, 0x309b, 0x309c, 0x30fd, 0x30fe, 0x3006, 0x309d, 0x309e,
+    0xfe49, 0xfe4a, 0xfe4b, 0xfe4c, 0xfe4d, 0xfe4e, 0xfe4f, 0xfe50,
+    0xfe51, 0xfe52, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xfe59, 0xfe5a,
+    0xfe5b, 0xfe5c, 0xfe5d, 0xfe5e, 0xfe5f, 0xfe60, 0xfe61, 0x003f,
+    0xfe62, 0xfe63, 0xfe64, 0xfe65, 0xfe66, 0xfe68, 0xfe69, 0xfe6a,
+    0xfe6b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x3007, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x2500, 0x2501, 0x2502, 0x2503,
+    0x2504, 0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250a, 0x250b,
+    0x250c, 0x250d, 0x250e, 0x250f, 0x2510, 0x2511, 0x2512, 0x2513,
+    0x2514, 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251a, 0x251b,
+    0x251c, 0x251d, 0x251e, 0x251f, 0x2520, 0x2521, 0x2522, 0x2523,
+    0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252a, 0x252b,
+    0x252c, 0x252d, 0x252e, 0x252f, 0x2530, 0x2531, 0x2532, 0x2533,
+    0x2534, 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253a, 0x253b,
+    0x253c, 0x253d, 0x253e, 0x253f, 0x2540, 0x2541, 0x2542, 0x2543,
+    0x2544, 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x254b,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte aa */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x72dc, 0x72dd, 0x72df, 0x72e2, 0x72e3, 0x72e4, 0x72e5, 0x72e6,
+    0x72e7, 0x72ea, 0x72eb, 0x72f5, 0x72f6, 0x72f9, 0x72fd, 0x72fe,
+    0x72ff, 0x7300, 0x7302, 0x7304, 0x7305, 0x7306, 0x7307, 0x7308,
+    0x7309, 0x730b, 0x730c, 0x730d, 0x730f, 0x7310, 0x7311, 0x7312,
+    0x7314, 0x7318, 0x7319, 0x731a, 0x731f, 0x7320, 0x7323, 0x7324,
+    0x7326, 0x7327, 0x7328, 0x732d, 0x732f, 0x7330, 0x7332, 0x7333,
+    0x7335, 0x7336, 0x733a, 0x733b, 0x733c, 0x733d, 0x7340, 0x7341,
+    0x7342, 0x7343, 0x7344, 0x7345, 0x7346, 0x7347, 0x7348, 0x003f,
+    0x7349, 0x734a, 0x734b, 0x734c, 0x734e, 0x734f, 0x7351, 0x7353,
+    0x7354, 0x7355, 0x7356, 0x7358, 0x7359, 0x735a, 0x735b, 0x735c,
+    0x735d, 0x735e, 0x735f, 0x7361, 0x7362, 0x7363, 0x7364, 0x7365,
+    0x7366, 0x7367, 0x7368, 0x7369, 0x736a, 0x736b, 0x736e, 0x7370,
+    0x7371, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte ab */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7372, 0x7373, 0x7374, 0x7375, 0x7376, 0x7377, 0x7378, 0x7379,
+    0x737a, 0x737b, 0x737c, 0x737d, 0x737f, 0x7380, 0x7381, 0x7382,
+    0x7383, 0x7385, 0x7386, 0x7388, 0x738a, 0x738c, 0x738d, 0x738f,
+    0x7390, 0x7392, 0x7393, 0x7394, 0x7395, 0x7397, 0x7398, 0x7399,
+    0x739a, 0x739c, 0x739d, 0x739e, 0x73a0, 0x73a1, 0x73a3, 0x73a4,
+    0x73a5, 0x73a6, 0x73a7, 0x73a8, 0x73aa, 0x73ac, 0x73ad, 0x73b1,
+    0x73b4, 0x73b5, 0x73b6, 0x73b8, 0x73b9, 0x73bc, 0x73bd, 0x73be,
+    0x73bf, 0x73c1, 0x73c3, 0x73c4, 0x73c5, 0x73c6, 0x73c7, 0x003f,
+    0x73cb, 0x73cc, 0x73ce, 0x73d2, 0x73d3, 0x73d4, 0x73d5, 0x73d6,
+    0x73d7, 0x73d8, 0x73da, 0x73db, 0x73dc, 0x73dd, 0x73df, 0x73e1,
+    0x73e2, 0x73e3, 0x73e4, 0x73e6, 0x73e8, 0x73ea, 0x73eb, 0x73ec,
+    0x73ee, 0x73ef, 0x73f0, 0x73f1, 0x73f3, 0x73f4, 0x73f5, 0x73f6,
+    0x73f7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte ac */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x73f8, 0x73f9, 0x73fa, 0x73fb, 0x73fc, 0x73fd, 0x73fe, 0x73ff,
+    0x7400, 0x7401, 0x7402, 0x7404, 0x7407, 0x7408, 0x740b, 0x740c,
+    0x740d, 0x740e, 0x7411, 0x7412, 0x7413, 0x7414, 0x7415, 0x7416,
+    0x7417, 0x7418, 0x7419, 0x741c, 0x741d, 0x741e, 0x741f, 0x7420,
+    0x7421, 0x7423, 0x7424, 0x7427, 0x7429, 0x742b, 0x742d, 0x742f,
+    0x7431, 0x7432, 0x7437, 0x7438, 0x7439, 0x743a, 0x743b, 0x743d,
+    0x743e, 0x743f, 0x7440, 0x7442, 0x7443, 0x7444, 0x7445, 0x7446,
+    0x7447, 0x7448, 0x7449, 0x744a, 0x744b, 0x744c, 0x744d, 0x003f,
+    0x744e, 0x744f, 0x7450, 0x7451, 0x7452, 0x7453, 0x7454, 0x7456,
+    0x7458, 0x745d, 0x7460, 0x7461, 0x7462, 0x7463, 0x7464, 0x7465,
+    0x7466, 0x7467, 0x7468, 0x7469, 0x746a, 0x746b, 0x746c, 0x746e,
+    0x746f, 0x7471, 0x7472, 0x7473, 0x7474, 0x7475, 0x7478, 0x7479,
+    0x747a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte ad */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x747b, 0x747c, 0x747d, 0x747f, 0x7482, 0x7484, 0x7485, 0x7486,
+    0x7488, 0x7489, 0x748a, 0x748c, 0x748d, 0x748f, 0x7491, 0x7492,
+    0x7493, 0x7494, 0x7495, 0x7496, 0x7497, 0x7498, 0x7499, 0x749a,
+    0x749b, 0x749d, 0x749f, 0x74a0, 0x74a1, 0x74a2, 0x74a3, 0x74a4,
+    0x74a5, 0x74a6, 0x74aa, 0x74ab, 0x74ac, 0x74ad, 0x74ae, 0x74af,
+    0x74b0, 0x74b1, 0x74b2, 0x74b3, 0x74b4, 0x74b5, 0x74b6, 0x74b7,
+    0x74b8, 0x74b9, 0x74bb, 0x74bc, 0x74bd, 0x74be, 0x74bf, 0x74c0,
+    0x74c1, 0x74c2, 0x74c3, 0x74c4, 0x74c5, 0x74c6, 0x74c7, 0x003f,
+    0x74c8, 0x74c9, 0x74ca, 0x74cb, 0x74cc, 0x74cd, 0x74ce, 0x74cf,
+    0x74d0, 0x74d1, 0x74d3, 0x74d4, 0x74d5, 0x74d6, 0x74d7, 0x74d8,
+    0x74d9, 0x74da, 0x74db, 0x74dd, 0x74df, 0x74e1, 0x74e5, 0x74e7,
+    0x74e8, 0x74e9, 0x74ea, 0x74eb, 0x74ec, 0x74ed, 0x74f0, 0x74f1,
+    0x74f2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte ae */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x74f3, 0x74f5, 0x74f8, 0x74f9, 0x74fa, 0x74fb, 0x74fc, 0x74fd,
+    0x74fe, 0x7500, 0x7501, 0x7502, 0x7503, 0x7505, 0x7506, 0x7507,
+    0x7508, 0x7509, 0x750a, 0x750b, 0x750c, 0x750e, 0x7510, 0x7512,
+    0x7514, 0x7515, 0x7516, 0x7517, 0x751b, 0x751d, 0x751e, 0x7520,
+    0x7521, 0x7522, 0x7523, 0x7524, 0x7526, 0x7527, 0x752a, 0x752e,
+    0x7534, 0x7536, 0x7539, 0x753c, 0x753d, 0x753f, 0x7541, 0x7542,
+    0x7543, 0x7544, 0x7546, 0x7547, 0x7549, 0x754a, 0x754d, 0x7550,
+    0x7551, 0x7552, 0x7553, 0x7555, 0x7556, 0x7557, 0x7558, 0x003f,
+    0x755d, 0x755e, 0x755f, 0x7560, 0x7561, 0x7562, 0x7563, 0x7564,
+    0x7567, 0x7568, 0x7569, 0x756b, 0x756c, 0x756d, 0x756e, 0x756f,
+    0x7570, 0x7571, 0x7573, 0x7575, 0x7576, 0x7577, 0x757a, 0x757b,
+    0x757c, 0x757d, 0x757e, 0x7580, 0x7581, 0x7582, 0x7584, 0x7585,
+    0x7587, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte af */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7588, 0x7589, 0x758a, 0x758c, 0x758d, 0x758e, 0x7590, 0x7593,
+    0x7595, 0x7598, 0x759b, 0x759c, 0x759e, 0x75a2, 0x75a6, 0x75a7,
+    0x75a8, 0x75a9, 0x75aa, 0x75ad, 0x75b6, 0x75b7, 0x75ba, 0x75bb,
+    0x75bf, 0x75c0, 0x75c1, 0x75c6, 0x75cb, 0x75cc, 0x75ce, 0x75cf,
+    0x75d0, 0x75d1, 0x75d3, 0x75d7, 0x75d9, 0x75da, 0x75dc, 0x75dd,
+    0x75df, 0x75e0, 0x75e1, 0x75e5, 0x75e9, 0x75ec, 0x75ed, 0x75ee,
+    0x75ef, 0x75f2, 0x75f3, 0x75f5, 0x75f6, 0x75f7, 0x75f8, 0x75fa,
+    0x75fb, 0x75fd, 0x75fe, 0x7602, 0x7604, 0x7606, 0x7607, 0x003f,
+    0x7608, 0x7609, 0x760b, 0x760d, 0x760e, 0x760f, 0x7611, 0x7612,
+    0x7613, 0x7614, 0x7616, 0x761a, 0x761c, 0x761d, 0x761e, 0x7621,
+    0x7623, 0x7627, 0x7628, 0x762c, 0x762e, 0x762f, 0x7631, 0x7632,
+    0x7636, 0x7637, 0x7639, 0x763a, 0x763b, 0x763d, 0x7641, 0x7642,
+    0x7644, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte b0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7645, 0x7646, 0x7647, 0x7648, 0x7649, 0x764a, 0x764b, 0x764e,
+    0x764f, 0x7650, 0x7651, 0x7652, 0x7653, 0x7655, 0x7657, 0x7658,
+    0x7659, 0x765a, 0x765b, 0x765d, 0x765f, 0x7660, 0x7661, 0x7662,
+    0x7664, 0x7665, 0x7666, 0x7667, 0x7668, 0x7669, 0x766a, 0x766c,
+    0x766d, 0x766e, 0x7670, 0x7671, 0x7672, 0x7673, 0x7674, 0x7675,
+    0x7676, 0x7677, 0x7679, 0x767a, 0x767c, 0x767f, 0x7680, 0x7681,
+    0x7683, 0x7685, 0x7689, 0x768a, 0x768c, 0x768d, 0x768f, 0x7690,
+    0x7692, 0x7694, 0x7695, 0x7697, 0x7698, 0x769a, 0x769b, 0x003f,
+    0x769c, 0x769d, 0x769e, 0x769f, 0x76a0, 0x76a1, 0x76a2, 0x76a3,
+    0x76a5, 0x76a6, 0x76a7, 0x76a8, 0x76a9, 0x76aa, 0x76ab, 0x76ac,
+    0x76ad, 0x76af, 0x76b0, 0x76b3, 0x76b5, 0x76b6, 0x76b7, 0x76b8,
+    0x76b9, 0x76ba, 0x76bb, 0x76bc, 0x76bd, 0x76be, 0x76c0, 0x76c1,
+    0x76c3, 0x554a, 0x963f, 0x57c3, 0x6328, 0x54ce, 0x5509, 0x54c0,
+    0x7691, 0x764c, 0x853c, 0x77ee, 0x827e, 0x788d, 0x7231, 0x9698,
+    0x978d, 0x6c28, 0x5b89, 0x4ffa, 0x6309, 0x6697, 0x5cb8, 0x80fa,
+    0x6848, 0x80ae, 0x6602, 0x76ce, 0x51f9, 0x6556, 0x71ac, 0x7ff1,
+    0x8884, 0x50b2, 0x5965, 0x61ca, 0x6fb3, 0x82ad, 0x634c, 0x6252,
+    0x53ed, 0x5427, 0x7b06, 0x516b, 0x75a4, 0x5df4, 0x62d4, 0x8dcb,
+    0x9776, 0x628a, 0x8019, 0x575d, 0x9738, 0x7f62, 0x7238, 0x767d,
+    0x67cf, 0x767e, 0x6446, 0x4f70, 0x8d25, 0x62dc, 0x7a17, 0x6591,
+    0x73ed, 0x642c, 0x6273, 0x822c, 0x9881, 0x677f, 0x7248, 0x626e,
+    0x62cc, 0x4f34, 0x74e3, 0x534a, 0x529e, 0x7eca, 0x90a6, 0x5e2e,
+    0x6886, 0x699c, 0x8180, 0x7ed1, 0x68d2, 0x78c5, 0x868c, 0x9551,
+    0x508d, 0x8c24, 0x82de, 0x80de, 0x5305, 0x8912, 0x5265, 0x003f,
+    /* lead byte b1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x76c4, 0x76c7, 0x76c9, 0x76cb, 0x76cc, 0x76d3, 0x76d5, 0x76d9,
+    0x76da, 0x76dc, 0x76dd, 0x76de, 0x76e0, 0x76e1, 0x76e2, 0x76e3,
+    0x76e4, 0x76e6, 0x76e7, 0x76e8, 0x76e9, 0x76ea, 0x76eb, 0x76ec,
+    0x76ed, 0x76f0, 0x76f3, 0x76f5, 0x76f6, 0x76f7, 0x76fa, 0x76fb,
+    0x76fd, 0x76ff, 0x7700, 0x7702, 0x7703, 0x7705, 0x7706, 0x770a,
+    0x770c, 0x770e, 0x770f, 0x7710, 0x7711, 0x7712, 0x7713, 0x7714,
+    0x7715, 0x7716, 0x7717, 0x7718, 0x771b, 0x771c, 0x771d, 0x771e,
+    0x7721, 0x7723, 0x7724, 0x7725, 0x7727, 0x772a, 0x772b, 0x003f,
+    0x772c, 0x772e, 0x7730, 0x7731, 0x7732, 0x7733, 0x7734, 0x7739,
+    0x773b, 0x773d, 0x773e, 0x773f, 0x7742, 0x7744, 0x7745, 0x7746,
+    0x7748, 0x7749, 0x774a, 0x774b, 0x774c, 0x774d, 0x774e, 0x774f,
+    0x7752, 0x7753, 0x7754, 0x7755, 0x7756, 0x7757, 0x7758, 0x7759,
+    0x775c, 0x8584, 0x96f9, 0x4fdd, 0x5821, 0x9971, 0x5b9d, 0x62b1,
+    0x62a5, 0x66b4, 0x8c79, 0x9c8d, 0x7206, 0x676f, 0x7891, 0x60b2,
+    0x5351, 0x5317, 0x8f88, 0x80cc, 0x8d1d, 0x94a1, 0x500d, 0x72c8,
+    0x5907, 0x60eb, 0x7119, 0x88ab, 0x5954, 0x82ef, 0x672c, 0x7b28,
+    0x5d29, 0x7ef7, 0x752d, 0x6cf5, 0x8e66, 0x8ff8, 0x903c, 0x9f3b,
+    0x6bd4, 0x9119, 0x7b14, 0x5f7c, 0x78a7, 0x84d6, 0x853d, 0x6bd5,
+    0x6bd9, 0x6bd6, 0x5e01, 0x5e87, 0x75f9, 0x95ed, 0x655d, 0x5f0a,
+    0x5fc5, 0x8f9f, 0x58c1, 0x81c2, 0x907f, 0x965b, 0x97ad, 0x8fb9,
+    0x7f16, 0x8d2c, 0x6241, 0x4fbf, 0x53d8, 0x535e, 0x8fa8, 0x8fa9,
+    0x8fab, 0x904d, 0x6807, 0x5f6a, 0x8198, 0x8868, 0x9cd6, 0x618b,
+    0x522b, 0x762a, 0x5f6c, 0x658c, 0x6fd2, 0x6ee8, 0x5bbe, 0x6448,
+    0x5175, 0x51b0, 0x67c4, 0x4e19, 0x79c9, 0x997c, 0x70b3, 0x003f,
+    /* lead byte b2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x775d, 0x775e, 0x775f, 0x7760, 0x7764, 0x7767, 0x7769, 0x776a,
+    0x776d, 0x776e, 0x776f, 0x7770, 0x7771, 0x7772, 0x7773, 0x7774,
+    0x7775, 0x7776, 0x7777, 0x7778, 0x777a, 0x777b, 0x777c, 0x7781,
+    0x7782, 0x7783, 0x7786, 0x7787, 0x7788, 0x7789, 0x778a, 0x778b,
+    0x778f, 0x7790, 0x7793, 0x7794, 0x7795, 0x7796, 0x7797, 0x7798,
+    0x7799, 0x779a, 0x779b, 0x779c, 0x779d, 0x779e, 0x77a1, 0x77a3,
+    0x77a4, 0x77a6, 0x77a8, 0x77ab, 0x77ad, 0x77ae, 0x77af, 0x77b1,
+    0x77b2, 0x77b4, 0x77b6, 0x77b7, 0x77b8, 0x77b9, 0x77ba, 0x003f,
+    0x77bc, 0x77be, 0x77c0, 0x77c1, 0x77c2, 0x77c3, 0x77c4, 0x77c5,
+    0x77c6, 0x77c7, 0x77c8, 0x77c9, 0x77ca, 0x77cb, 0x77cc, 0x77ce,
+    0x77cf, 0x77d0, 0x77d1, 0x77d2, 0x77d3, 0x77d4, 0x77d5, 0x77d6,
+    0x77d8, 0x77d9, 0x77da, 0x77dd, 0x77de, 0x77df, 0x77e0, 0x77e1,
+    0x77e4, 0x75c5, 0x5e76, 0x73bb, 0x83e0, 0x64ad, 0x62e8, 0x94b5,
+    0x6ce2, 0x535a, 0x52c3, 0x640f, 0x94c2, 0x7b94, 0x4f2f, 0x5e1b,
+    0x8236, 0x8116, 0x818a, 0x6e24, 0x6cca, 0x9a73, 0x6355, 0x535c,
+    0x54fa, 0x8865, 0x57e0, 0x4e0d, 0x5e03, 0x6b65, 0x7c3f, 0x90e8,
+    0x6016, 0x64e6, 0x731c, 0x88c1, 0x6750, 0x624d, 0x8d22, 0x776c,
+    0x8e29, 0x91c7, 0x5f69, 0x83dc, 0x8521, 0x9910, 0x53c2, 0x8695,
+    0x6b8b, 0x60ed, 0x60e8, 0x707f, 0x82cd, 0x8231, 0x4ed3, 0x6ca7,
+    0x85cf, 0x64cd, 0x7cd9, 0x69fd, 0x66f9, 0x8349, 0x5395, 0x7b56,
+    0x4fa7, 0x518c, 0x6d4b, 0x5c42, 0x8e6d, 0x63d2, 0x53c9, 0x832c,
+    0x8336, 0x67e5, 0x78b4, 0x643d, 0x5bdf, 0x5c94, 0x5dee, 0x8be7,
+    0x62c6, 0x67f4, 0x8c7a, 0x6400, 0x63ba, 0x8749, 0x998b, 0x8c17,
+    0x7f20, 0x94f2, 0x4ea7, 0x9610, 0x98a4, 0x660c, 0x7316, 0x003f,
+    /* lead byte b3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x77e6, 0x77e8, 0x77ea, 0x77ef, 0x77f0, 0x77f1, 0x77f2, 0x77f4,
+    0x77f5, 0x77f7, 0x77f9, 0x77fa, 0x77fb, 0x77fc, 0x7803, 0x7804,
+    0x7805, 0x7806, 0x7807, 0x7808, 0x780a, 0x780b, 0x780e, 0x780f,
+    0x7810, 0x7813, 0x7815, 0x7819, 0x781b, 0x781e, 0x7820, 0x7821,
+    0x7822, 0x7824, 0x7828, 0x782a, 0x782b, 0x782e, 0x782f, 0x7831,
+    0x7832, 0x7833, 0x7835, 0x7836, 0x783d, 0x783f, 0x7841, 0x7842,
+    0x7843, 0x7844, 0x7846, 0x7848, 0x7849, 0x784a, 0x784b, 0x784d,
+    0x784f, 0x7851, 0x7853, 0x7854, 0x7858, 0x7859, 0x785a, 0x003f,
+    0x785b, 0x785c, 0x785e, 0x785f, 0x7860, 0x7861, 0x7862, 0x7863,
+    0x7864, 0x7865, 0x7866, 0x7867, 0x7868, 0x7869, 0x786f, 0x7870,
+    0x7871, 0x7872, 0x7873, 0x7874, 0x7875, 0x7876, 0x7878, 0x7879,
+    0x787a, 0x787b, 0x787d, 0x787e, 0x787f, 0x7880, 0x7881, 0x7882,
+    0x7883, 0x573a, 0x5c1d, 0x5e38, 0x957f, 0x507f, 0x80a0, 0x5382,
+    0x655e, 0x7545, 0x5531, 0x5021, 0x8d85, 0x6284, 0x949e, 0x671d,
+    0x5632, 0x6f6e, 0x5de2, 0x5435, 0x7092, 0x8f66, 0x626f, 0x64a4,
+    0x63a3, 0x5f7b, 0x6f88, 0x90f4, 0x81e3, 0x8fb0, 0x5c18, 0x6668,
+    0x5ff1, 0x6c89, 0x9648, 0x8d81, 0x886c, 0x6491, 0x79f0, 0x57ce,
+    0x6a59, 0x6210, 0x5448, 0x4e58, 0x7a0b, 0x60e9, 0x6f84, 0x8bda,
+    0x627f, 0x901e, 0x9a8b, 0x79e4, 0x5403, 0x75f4, 0x6301, 0x5319,
+    0x6c60, 0x8fdf, 0x5f1b, 0x9a70, 0x803b, 0x9f7f, 0x4f88, 0x5c3a,
+    0x8d64, 0x7fc5, 0x65a5, 0x70bd, 0x5145, 0x51b2, 0x866b, 0x5d07,
+    0x5ba0, 0x62bd, 0x916c, 0x7574, 0x8e0c, 0x7a20, 0x6101, 0x7b79,
+    0x4ec7, 0x7ef8, 0x7785, 0x4e11, 0x81ed, 0x521d, 0x51fa, 0x6a71,
+    0x53a8, 0x8e87, 0x9504, 0x96cf, 0x6ec1, 0x9664, 0x695a, 0x003f,
+    /* lead byte b4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7884, 0x7885, 0x7886, 0x7888, 0x788a, 0x788b, 0x788f, 0x7890,
+    0x7892, 0x7894, 0x7895, 0x7896, 0x7899, 0x789d, 0x789e, 0x78a0,
+    0x78a2, 0x78a4, 0x78a6, 0x78a8, 0x78a9, 0x78aa, 0x78ab, 0x78ac,
+    0x78ad, 0x78ae, 0x78af, 0x78b5, 0x78b6, 0x78b7, 0x78b8, 0x78ba,
+    0x78bb, 0x78bc, 0x78bd, 0x78bf, 0x78c0, 0x78c2, 0x78c3, 0x78c4,
+    0x78c6, 0x78c7, 0x78c8, 0x78cc, 0x78cd, 0x78ce, 0x78cf, 0x78d1,
+    0x78d2, 0x78d3, 0x78d6, 0x78d7, 0x78d8, 0x78da, 0x78db, 0x78dc,
+    0x78dd, 0x78de, 0x78df, 0x78e0, 0x78e1, 0x78e2, 0x78e3, 0x003f,
+    0x78e4, 0x78e5, 0x78e6, 0x78e7, 0x78e9, 0x78ea, 0x78eb, 0x78ed,
+    0x78ee, 0x78ef, 0x78f0, 0x78f1, 0x78f3, 0x78f5, 0x78f6, 0x78f8,
+    0x78f9, 0x78fb, 0x78fc, 0x78fd, 0x78fe, 0x78ff, 0x7900, 0x7902,
+    0x7903, 0x7904, 0x7906, 0x7907, 0x7908, 0x7909, 0x790a, 0x790b,
+    0x790c, 0x7840, 0x50a8, 0x77d7, 0x6410, 0x89e6, 0x5904, 0x63e3,
+    0x5ddd, 0x7a7f, 0x693d, 0x4f20, 0x8239, 0x5598, 0x4e32, 0x75ae,
+    0x7a97, 0x5e62, 0x5e8a, 0x95ef, 0x521b, 0x5439, 0x708a, 0x6376,
+    0x9524, 0x5782, 0x6625, 0x693f, 0x9187, 0x5507, 0x6df3, 0x7eaf,
+    0x8822, 0x6233, 0x7ef0, 0x75b5, 0x8328, 0x78c1, 0x96cc, 0x8f9e,
+    0x6148, 0x74f7, 0x8bcd, 0x6b64, 0x523a, 0x8d50, 0x6b21, 0x806a,
+    0x8471, 0x56f1, 0x5306, 0x4ece, 0x4e1b, 0x51d1, 0x7c97, 0x918b,
+    0x7c07, 0x4fc3, 0x8e7f, 0x7be1, 0x7a9c, 0x6467, 0x5d14, 0x50ac,
+    0x8106, 0x7601, 0x7cb9, 0x6dec, 0x7fe0, 0x6751, 0x5b58, 0x5bf8,
+    0x78cb, 0x64ae, 0x6413, 0x63aa, 0x632b, 0x9519, 0x642d, 0x8fbe,
+    0x7b54, 0x7629, 0x6253, 0x5927, 0x5446, 0x6b79, 0x50a3, 0x6234,
+    0x5e26, 0x6b86, 0x4ee3, 0x8d37, 0x888b, 0x5f85, 0x902e, 0x003f,
+    /* lead byte b5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x790d, 0x790e, 0x790f, 0x7910, 0x7911, 0x7912, 0x7914, 0x7915,
+    0x7916, 0x7917, 0x7918, 0x7919, 0x791a, 0x791b, 0x791c, 0x791d,
+    0x791f, 0x7920, 0x7921, 0x7922, 0x7923, 0x7925, 0x7926, 0x7927,
+    0x7928, 0x7929, 0x792a, 0x792b, 0x792c, 0x792d, 0x792e, 0x792f,
+    0x7930, 0x7931, 0x7932, 0x7933, 0x7935, 0x7936, 0x7937, 0x7938,
+    0x7939, 0x793d, 0x793f, 0x7942, 0x7943, 0x7944, 0x7945, 0x7947,
+    0x794a, 0x794b, 0x794c, 0x794d, 0x794e, 0x794f, 0x7950, 0x7951,
+    0x7952, 0x7954, 0x7955, 0x7958, 0x7959, 0x7961, 0x7963, 0x003f,
+    0x7964, 0x7966, 0x7969, 0x796a, 0x796b, 0x796c, 0x796e, 0x7970,
+    0x7971, 0x7972, 0x7973, 0x7974, 0x7975, 0x7976, 0x7979, 0x797b,
+    0x797c, 0x797d, 0x797e, 0x797f, 0x7982, 0x7983, 0x7986, 0x7987,
+    0x7988, 0x7989, 0x798b, 0x798c, 0x798d, 0x798e, 0x7990, 0x7991,
+    0x7992, 0x6020, 0x803d, 0x62c5, 0x4e39, 0x5355, 0x90f8, 0x63b8,
+    0x80c6, 0x65e6, 0x6c2e, 0x4f46, 0x60ee, 0x6de1, 0x8bde, 0x5f39,
+    0x86cb, 0x5f53, 0x6321, 0x515a, 0x8361, 0x6863, 0x5200, 0x6363,
+    0x8e48, 0x5012, 0x5c9b, 0x7977, 0x5bfc, 0x5230, 0x7a3b, 0x60bc,
+    0x9053, 0x76d7, 0x5fb7, 0x5f97, 0x7684, 0x8e6c, 0x706f, 0x767b,
+    0x7b49, 0x77aa, 0x51f3, 0x9093, 0x5824, 0x4f4e, 0x6ef4, 0x8fea,
+    0x654c, 0x7b1b, 0x72c4, 0x6da4, 0x7fdf, 0x5ae1, 0x62b5, 0x5e95,
+    0x5730, 0x8482, 0x7b2c, 0x5e1d, 0x5f1f, 0x9012, 0x7f14, 0x98a0,
+    0x6382, 0x6ec7, 0x7898, 0x70b9, 0x5178, 0x975b, 0x57ab, 0x7535,
+    0x4f43, 0x7538, 0x5e97, 0x60e6, 0x5960, 0x6dc0, 0x6bbf, 0x7889,
+    0x53fc, 0x96d5, 0x51cb, 0x5201, 0x6389, 0x540a, 0x9493, 0x8c03,
+    0x8dcc, 0x7239, 0x789f, 0x8776, 0x8fed, 0x8c0d, 0x53e0, 0x003f,
+    /* lead byte b6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7993, 0x7994, 0x7995, 0x7996, 0x7997, 0x7998, 0x7999, 0x799b,
+    0x799c, 0x799d, 0x799e, 0x799f, 0x79a0, 0x79a1, 0x79a2, 0x79a3,
+    0x79a4, 0x79a5, 0x79a6, 0x79a8, 0x79a9, 0x79aa, 0x79ab, 0x79ac,
+    0x79ad, 0x79ae, 0x79af, 0x79b0, 0x79b1, 0x79b2, 0x79b4, 0x79b5,
+    0x79b6, 0x79b7, 0x79b8, 0x79bc, 0x79bf, 0x79c2, 0x79c4, 0x79c5,
+    0x79c7, 0x79c8, 0x79ca, 0x79cc, 0x79ce, 0x79cf, 0x79d0, 0x79d3,
+    0x79d4, 0x79d6, 0x79d7, 0x79d9, 0x79da, 0x79db, 0x79dc, 0x79dd,
+    0x79de, 0x79e0, 0x79e1, 0x79e2, 0x79e5, 0x79e8, 0x79ea, 0x003f,
+    0x79ec, 0x79ee, 0x79f1, 0x79f2, 0x79f3, 0x79f4, 0x79f5, 0x79f6,
+    0x79f7, 0x79f9, 0x79fa, 0x79fc, 0x79fe, 0x79ff, 0x7a01, 0x7a04,
+    0x7a05, 0x7a07, 0x7a08, 0x7a09, 0x7a0a, 0x7a0c, 0x7a0f, 0x7a10,
+    0x7a11, 0x7a12, 0x7a13, 0x7a15, 0x7a16, 0x7a18, 0x7a19, 0x7a1b,
+    0x7a1c, 0x4e01, 0x76ef, 0x53ee, 0x9489, 0x9876, 0x9f0e, 0x952d,
+    0x5b9a, 0x8ba2, 0x4e22, 0x4e1c, 0x51ac, 0x8463, 0x61c2, 0x52a8,
+    0x680b, 0x4f97, 0x606b, 0x51bb, 0x6d1e, 0x515c, 0x6296, 0x6597,
+    0x9661, 0x8c46, 0x9017, 0x75d8, 0x90fd, 0x7763, 0x6bd2, 0x728a,
+    0x72ec, 0x8bfb, 0x5835, 0x7779, 0x8d4c, 0x675c, 0x9540, 0x809a,
+    0x5ea6, 0x6e21, 0x5992, 0x7aef, 0x77ed, 0x953b, 0x6bb5, 0x65ad,
+    0x7f0e, 0x5806, 0x5151, 0x961f, 0x5bf9, 0x58a9, 0x5428, 0x8e72,
+    0x6566, 0x987f, 0x56e4, 0x949d, 0x76fe, 0x9041, 0x6387, 0x54c6,
+    0x591a, 0x593a, 0x579b, 0x8eb2, 0x6735, 0x8dfa, 0x8235, 0x5241,
+    0x60f0, 0x5815, 0x86fe, 0x5ce8, 0x9e45, 0x4fc4, 0x989d, 0x8bb9,
+    0x5a25, 0x6076, 0x5384, 0x627c, 0x904f, 0x9102, 0x997f, 0x6069,
+    0x800c, 0x513f, 0x8033, 0x5c14, 0x9975, 0x6d31, 0x4e8c, 0x003f,
+    /* lead byte b7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7a1d, 0x7a1f, 0x7a21, 0x7a22, 0x7a24, 0x7a25, 0x7a26, 0x7a27,
+    0x7a28, 0x7a29, 0x7a2a, 0x7a2b, 0x7a2c, 0x7a2d, 0x7a2e, 0x7a2f,
+    0x7a30, 0x7a31, 0x7a32, 0x7a34, 0x7a35, 0x7a36, 0x7a38, 0x7a3a,
+    0x7a3e, 0x7a40, 0x7a41, 0x7a42, 0x7a43, 0x7a44, 0x7a45, 0x7a47,
+    0x7a48, 0x7a49, 0x7a4a, 0x7a4b, 0x7a4c, 0x7a4d, 0x7a4e, 0x7a4f,
+    0x7a50, 0x7a52, 0x7a53, 0x7a54, 0x7a55, 0x7a56, 0x7a58, 0x7a59,
+    0x7a5a, 0x7a5b, 0x7a5c, 0x7a5d, 0x7a5e, 0x7a5f, 0x7a60, 0x7a61,
+    0x7a62, 0x7a63, 0x7a64, 0x7a65, 0x7a66, 0x7a67, 0x7a68, 0x003f,
+    0x7a69, 0x7a6a, 0x7a6b, 0x7a6c, 0x7a6d, 0x7a6e, 0x7a6f, 0x7a71,
+    0x7a72, 0x7a73, 0x7a75, 0x7a7b, 0x7a7c, 0x7a7d, 0x7a7e, 0x7a82,
+    0x7a85, 0x7a87, 0x7a89, 0x7a8a, 0x7a8b, 0x7a8c, 0x7a8e, 0x7a8f,
+    0x7a90, 0x7a93, 0x7a94, 0x7a99, 0x7a9a, 0x7a9b, 0x7a9e, 0x7aa1,
+    0x7aa2, 0x8d30, 0x53d1, 0x7f5a, 0x7b4f, 0x4f10, 0x4e4f, 0x9600,
+    0x6cd5, 0x73d0, 0x85e9, 0x5e06, 0x756a, 0x7ffb, 0x6a0a, 0x77fe,
+    0x9492, 0x7e41, 0x51e1, 0x70e6, 0x53cd, 0x8fd4, 0x8303, 0x8d29,
+    0x72af, 0x996d, 0x6cdb, 0x574a, 0x82b3, 0x65b9, 0x80aa, 0x623f,
+    0x9632, 0x59a8, 0x4eff, 0x8bbf, 0x7eba, 0x653e, 0x83f2, 0x975e,
+    0x5561, 0x98de, 0x80a5, 0x532a, 0x8bfd, 0x5420, 0x80ba, 0x5e9f,
+    0x6cb8, 0x8d39, 0x82ac, 0x915a, 0x5429, 0x6c1b, 0x5206, 0x7eb7,
+    0x575f, 0x711a, 0x6c7e, 0x7c89, 0x594b, 0x4efd, 0x5fff, 0x6124,
+    0x7caa, 0x4e30, 0x5c01, 0x67ab, 0x8702, 0x5cf0, 0x950b, 0x98ce,
+    0x75af, 0x70fd, 0x9022, 0x51af, 0x7f1d, 0x8bbd, 0x5949, 0x51e4,
+    0x4f5b, 0x5426, 0x592b, 0x6577, 0x80a4, 0x5b75, 0x6276, 0x62c2,
+    0x8f90, 0x5e45, 0x6c1f, 0x7b26, 0x4f0f, 0x4fd8, 0x670d, 0x003f,
+    /* lead byte b8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7aa3, 0x7aa4, 0x7aa7, 0x7aa9, 0x7aaa, 0x7aab, 0x7aae, 0x7aaf,
+    0x7ab0, 0x7ab1, 0x7ab2, 0x7ab4, 0x7ab5, 0x7ab6, 0x7ab7, 0x7ab8,
+    0x7ab9, 0x7aba, 0x7abb, 0x7abc, 0x7abd, 0x7abe, 0x7ac0, 0x7ac1,
+    0x7ac2, 0x7ac3, 0x7ac4, 0x7ac5, 0x7ac6, 0x7ac7, 0x7ac8, 0x7ac9,
+    0x7aca, 0x7acc, 0x7acd, 0x7ace, 0x7acf, 0x7ad0, 0x7ad1, 0x7ad2,
+    0x7ad3, 0x7ad4, 0x7ad5, 0x7ad7, 0x7ad8, 0x7ada, 0x7adb, 0x7adc,
+    0x7add, 0x7ae1, 0x7ae2, 0x7ae4, 0x7ae7, 0x7ae8, 0x7ae9, 0x7aea,
+    0x7aeb, 0x7aec, 0x7aee, 0x7af0, 0x7af1, 0x7af2, 0x7af3, 0x003f,
+    0x7af4, 0x7af5, 0x7af6, 0x7af7, 0x7af8, 0x7afb, 0x7afc, 0x7afe,
+    0x7b00, 0x7b01, 0x7b02, 0x7b05, 0x7b07, 0x7b09, 0x7b0c, 0x7b0d,
+    0x7b0e, 0x7b10, 0x7b12, 0x7b13, 0x7b16, 0x7b17, 0x7b18, 0x7b1a,
+    0x7b1c, 0x7b1d, 0x7b1f, 0x7b21, 0x7b22, 0x7b23, 0x7b27, 0x7b29,
+    0x7b2d, 0x6d6e, 0x6daa, 0x798f, 0x88b1, 0x5f17, 0x752b, 0x629a,
+    0x8f85, 0x4fef, 0x91dc, 0x65a7, 0x812f, 0x8151, 0x5e9c, 0x8150,
+    0x8d74, 0x526f, 0x8986, 0x8d4b, 0x590d, 0x5085, 0x4ed8, 0x961c,
+    0x7236, 0x8179, 0x8d1f, 0x5bcc, 0x8ba3, 0x9644, 0x5987, 0x7f1a,
+    0x5490, 0x5676, 0x560e, 0x8be5, 0x6539, 0x6982, 0x9499, 0x76d6,
+    0x6e89, 0x5e72, 0x7518, 0x6746, 0x67d1, 0x7aff, 0x809d, 0x8d76,
+    0x611f, 0x79c6, 0x6562, 0x8d63, 0x5188, 0x521a, 0x94a2, 0x7f38,
+    0x809b, 0x7eb2, 0x5c97, 0x6e2f, 0x6760, 0x7bd9, 0x768b, 0x9ad8,
+    0x818f, 0x7f94, 0x7cd5, 0x641e, 0x9550, 0x7a3f, 0x544a, 0x54e5,
+    0x6b4c, 0x6401, 0x6208, 0x9e3d, 0x80f3, 0x7599, 0x5272, 0x9769,
+    0x845b, 0x683c, 0x86e4, 0x9601, 0x9694, 0x94ec, 0x4e2a, 0x5404,
+    0x7ed9, 0x6839, 0x8ddf, 0x8015, 0x66f4, 0x5e9a, 0x7fb9, 0x003f,
+    /* lead byte b9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7b2f, 0x7b30, 0x7b32, 0x7b34, 0x7b35, 0x7b36, 0x7b37, 0x7b39,
+    0x7b3b, 0x7b3d, 0x7b3f, 0x7b40, 0x7b41, 0x7b42, 0x7b43, 0x7b44,
+    0x7b46, 0x7b48, 0x7b4a, 0x7b4d, 0x7b4e, 0x7b53, 0x7b55, 0x7b57,
+    0x7b59, 0x7b5c, 0x7b5e, 0x7b5f, 0x7b61, 0x7b63, 0x7b64, 0x7b65,
+    0x7b66, 0x7b67, 0x7b68, 0x7b69, 0x7b6a, 0x7b6b, 0x7b6c, 0x7b6d,
+    0x7b6f, 0x7b70, 0x7b73, 0x7b74, 0x7b76, 0x7b78, 0x7b7a, 0x7b7c,
+    0x7b7d, 0x7b7f, 0x7b81, 0x7b82, 0x7b83, 0x7b84, 0x7b86, 0x7b87,
+    0x7b88, 0x7b89, 0x7b8a, 0x7b8b, 0x7b8c, 0x7b8e, 0x7b8f, 0x003f,
+    0x7b91, 0x7b92, 0x7b93, 0x7b96, 0x7b98, 0x7b99, 0x7b9a, 0x7b9b,
+    0x7b9e, 0x7b9f, 0x7ba0, 0x7ba3, 0x7ba4, 0x7ba5, 0x7bae, 0x7baf,
+    0x7bb0, 0x7bb2, 0x7bb3, 0x7bb5, 0x7bb6, 0x7bb7, 0x7bb9, 0x7bba,
+    0x7bbb, 0x7bbc, 0x7bbd, 0x7bbe, 0x7bbf, 0x7bc0, 0x7bc2, 0x7bc3,
+    0x7bc4, 0x57c2, 0x803f, 0x6897, 0x5de5, 0x653b, 0x529f, 0x606d,
+    0x9f9a, 0x4f9b, 0x8eac, 0x516c, 0x5bab, 0x5f13, 0x5de9, 0x6c5e,
+    0x62f1, 0x8d21, 0x5171, 0x94a9, 0x52fe, 0x6c9f, 0x82df, 0x72d7,
+    0x57a2, 0x6784, 0x8d2d, 0x591f, 0x8f9c, 0x83c7, 0x5495, 0x7b8d,
+    0x4f30, 0x6cbd, 0x5b64, 0x59d1, 0x9f13, 0x53e4, 0x86ca, 0x9aa8,
+    0x8c37, 0x80a1, 0x6545, 0x987e, 0x56fa, 0x96c7, 0x522e, 0x74dc,
+    0x5250, 0x5be1, 0x6302, 0x8902, 0x4e56, 0x62d0, 0x602a, 0x68fa,
+    0x5173, 0x5b98, 0x51a0, 0x89c2, 0x7ba1, 0x9986, 0x7f50, 0x60ef,
+    0x704c, 0x8d2f, 0x5149, 0x5e7f, 0x901b, 0x7470, 0x89c4, 0x572d,
+    0x7845, 0x5f52, 0x9f9f, 0x95fa, 0x8f68, 0x9b3c, 0x8be1, 0x7678,
+    0x6842, 0x67dc, 0x8dea, 0x8d35, 0x523d, 0x8f8a, 0x6eda, 0x68cd,
+    0x9505, 0x90ed, 0x56fd, 0x679c, 0x88f9, 0x8fc7, 0x54c8, 0x003f,
+    /* lead byte ba */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7bc5, 0x7bc8, 0x7bc9, 0x7bca, 0x7bcb, 0x7bcd, 0x7bce, 0x7bcf,
+    0x7bd0, 0x7bd2, 0x7bd4, 0x7bd5, 0x7bd6, 0x7bd7, 0x7bd8, 0x7bdb,
+    0x7bdc, 0x7bde, 0x7bdf, 0x7be0, 0x7be2, 0x7be3, 0x7be4, 0x7be7,
+    0x7be8, 0x7be9, 0x7beb, 0x7bec, 0x7bed, 0x7bef, 0x7bf0, 0x7bf2,
+    0x7bf3, 0x7bf4, 0x7bf5, 0x7bf6, 0x7bf8, 0x7bf9, 0x7bfa, 0x7bfb,
+    0x7bfd, 0x7bff, 0x7c00, 0x7c01, 0x7c02, 0x7c03, 0x7c04, 0x7c05,
+    0x7c06, 0x7c08, 0x7c09, 0x7c0a, 0x7c0d, 0x7c0e, 0x7c10, 0x7c11,
+    0x7c12, 0x7c13, 0x7c14, 0x7c15, 0x7c17, 0x7c18, 0x7c19, 0x003f,
+    0x7c1a, 0x7c1b, 0x7c1c, 0x7c1d, 0x7c1e, 0x7c20, 0x7c21, 0x7c22,
+    0x7c23, 0x7c24, 0x7c25, 0x7c28, 0x7c29, 0x7c2b, 0x7c2c, 0x7c2d,
+    0x7c2e, 0x7c2f, 0x7c30, 0x7c31, 0x7c32, 0x7c33, 0x7c34, 0x7c35,
+    0x7c36, 0x7c37, 0x7c39, 0x7c3a, 0x7c3b, 0x7c3c, 0x7c3d, 0x7c3e,
+    0x7c42, 0x9ab8, 0x5b69, 0x6d77, 0x6c26, 0x4ea5, 0x5bb3, 0x9a87,
+    0x9163, 0x61a8, 0x90af, 0x97e9, 0x542b, 0x6db5, 0x5bd2, 0x51fd,
+    0x558a, 0x7f55, 0x7ff0, 0x64bc, 0x634d, 0x65f1, 0x61be, 0x608d,
+    0x710a, 0x6c57, 0x6c49, 0x592f, 0x676d, 0x822a, 0x58d5, 0x568e,
+    0x8c6a, 0x6beb, 0x90dd, 0x597d, 0x8017, 0x53f7, 0x6d69, 0x5475,
+    0x559d, 0x8377, 0x83cf, 0x6838, 0x79be, 0x548c, 0x4f55, 0x5408,
+    0x76d2, 0x8c89, 0x9602, 0x6cb3, 0x6db8, 0x8d6b, 0x8910, 0x9e64,
+    0x8d3a, 0x563f, 0x9ed1, 0x75d5, 0x5f88, 0x72e0, 0x6068, 0x54fc,
+    0x4ea8, 0x6a2a, 0x8861, 0x6052, 0x8f70, 0x54c4, 0x70d8, 0x8679,
+    0x9e3f, 0x6d2a, 0x5b8f, 0x5f18, 0x7ea2, 0x5589, 0x4faf, 0x7334,
+    0x543c, 0x539a, 0x5019, 0x540e, 0x547c, 0x4e4e, 0x5ffd, 0x745a,
+    0x58f6, 0x846b, 0x80e1, 0x8774, 0x72d0, 0x7cca, 0x6e56, 0x003f,
+    /* lead byte bb */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7c43, 0x7c44, 0x7c45, 0x7c46, 0x7c47, 0x7c48, 0x7c49, 0x7c4a,
+    0x7c4b, 0x7c4c, 0x7c4e, 0x7c4f, 0x7c50, 0x7c51, 0x7c52, 0x7c53,
+    0x7c54, 0x7c55, 0x7c56, 0x7c57, 0x7c58, 0x7c59, 0x7c5a, 0x7c5b,
+    0x7c5c, 0x7c5d, 0x7c5e, 0x7c5f, 0x7c60, 0x7c61, 0x7c62, 0x7c63,
+    0x7c64, 0x7c65, 0x7c66, 0x7c67, 0x7c68, 0x7c69, 0x7c6a, 0x7c6b,
+    0x7c6c, 0x7c6d, 0x7c6e, 0x7c6f, 0x7c70, 0x7c71, 0x7c72, 0x7c75,
+    0x7c76, 0x7c77, 0x7c78, 0x7c79, 0x7c7a, 0x7c7e, 0x7c7f, 0x7c80,
+    0x7c81, 0x7c82, 0x7c83, 0x7c84, 0x7c85, 0x7c86, 0x7c87, 0x003f,
+    0x7c88, 0x7c8a, 0x7c8b, 0x7c8c, 0x7c8d, 0x7c8e, 0x7c8f, 0x7c90,
+    0x7c93, 0x7c94, 0x7c96, 0x7c99, 0x7c9a, 0x7c9b, 0x7ca0, 0x7ca1,
+    0x7ca3, 0x7ca6, 0x7ca7, 0x7ca8, 0x7ca9, 0x7cab, 0x7cac, 0x7cad,
+    0x7caf, 0x7cb0, 0x7cb4, 0x7cb5, 0x7cb6, 0x7cb7, 0x7cb8, 0x7cba,
+    0x7cbb, 0x5f27, 0x864e, 0x552c, 0x62a4, 0x4e92, 0x6caa, 0x6237,
+    0x82b1, 0x54d7, 0x534e, 0x733e, 0x6ed1, 0x753b, 0x5212, 0x5316,
+    0x8bdd, 0x69d0, 0x5f8a, 0x6000, 0x6dee, 0x574f, 0x6b22, 0x73af,
+    0x6853, 0x8fd8, 0x7f13, 0x6362, 0x60a3, 0x5524, 0x75ea, 0x8c62,
+    0x7115, 0x6da3, 0x5ba6, 0x5e7b, 0x8352, 0x614c, 0x9ec4, 0x78fa,
+    0x8757, 0x7c27, 0x7687, 0x51f0, 0x60f6, 0x714c, 0x6643, 0x5e4c,
+    0x604d, 0x8c0e, 0x7070, 0x6325, 0x8f89, 0x5fbd, 0x6062, 0x86d4,
+    0x56de, 0x6bc1, 0x6094, 0x6167, 0x5349, 0x60e0, 0x6666, 0x8d3f,
+    0x79fd, 0x4f1a, 0x70e9, 0x6c47, 0x8bb3, 0x8bf2, 0x7ed8, 0x8364,
+    0x660f, 0x5a5a, 0x9b42, 0x6d51, 0x6df7, 0x8c41, 0x6d3b, 0x4f19,
+    0x706b, 0x83b7, 0x6216, 0x60d1, 0x970d, 0x8d27, 0x7978, 0x51fb,
+    0x573e, 0x57fa, 0x673a, 0x7578, 0x7a3d, 0x79ef, 0x7b95, 0x003f,
+    /* lead byte bc */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7cbf, 0x7cc0, 0x7cc2, 0x7cc3, 0x7cc4, 0x7cc6, 0x7cc9, 0x7ccb,
+    0x7cce, 0x7ccf, 0x7cd0, 0x7cd1, 0x7cd2, 0x7cd3, 0x7cd4, 0x7cd8,
+    0x7cda, 0x7cdb, 0x7cdd, 0x7cde, 0x7ce1, 0x7ce2, 0x7ce3, 0x7ce4,
+    0x7ce5, 0x7ce6, 0x7ce7, 0x7ce9, 0x7cea, 0x7ceb, 0x7cec, 0x7ced,
+    0x7cee, 0x7cf0, 0x7cf1, 0x7cf2, 0x7cf3, 0x7cf4, 0x7cf5, 0x7cf6,
+    0x7cf7, 0x7cf9, 0x7cfa, 0x7cfc, 0x7cfd, 0x7cfe, 0x7cff, 0x7d00,
+    0x7d01, 0x7d02, 0x7d03, 0x7d04, 0x7d05, 0x7d06, 0x7d07, 0x7d08,
+    0x7d09, 0x7d0b, 0x7d0c, 0x7d0d, 0x7d0e, 0x7d0f, 0x7d10, 0x003f,
+    0x7d11, 0x7d12, 0x7d13, 0x7d14, 0x7d15, 0x7d16, 0x7d17, 0x7d18,
+    0x7d19, 0x7d1a, 0x7d1b, 0x7d1c, 0x7d1d, 0x7d1e, 0x7d1f, 0x7d21,
+    0x7d23, 0x7d24, 0x7d25, 0x7d26, 0x7d28, 0x7d29, 0x7d2a, 0x7d2c,
+    0x7d2d, 0x7d2e, 0x7d30, 0x7d31, 0x7d32, 0x7d33, 0x7d34, 0x7d35,
+    0x7d36, 0x808c, 0x9965, 0x8ff9, 0x6fc0, 0x8ba5, 0x9e21, 0x59ec,
+    0x7ee9, 0x7f09, 0x5409, 0x6781, 0x68d8, 0x8f91, 0x7c4d, 0x96c6,
+    0x53ca, 0x6025, 0x75be, 0x6c72, 0x5373, 0x5ac9, 0x7ea7, 0x6324,
+    0x51e0, 0x810a, 0x5df1, 0x84df, 0x6280, 0x5180, 0x5b63, 0x4f0e,
+    0x796d, 0x5242, 0x60b8, 0x6d4e, 0x5bc4, 0x5bc2, 0x8ba1, 0x8bb0,
+    0x65e2, 0x5fcc, 0x9645, 0x5993, 0x7ee7, 0x7eaa, 0x5609, 0x67b7,
+    0x5939, 0x4f73, 0x5bb6, 0x52a0, 0x835a, 0x988a, 0x8d3e, 0x7532,
+    0x94be, 0x5047, 0x7a3c, 0x4ef7, 0x67b6, 0x9a7e, 0x5ac1, 0x6b7c,
+    0x76d1, 0x575a, 0x5c16, 0x7b3a, 0x95f4, 0x714e, 0x517c, 0x80a9,
+    0x8270, 0x5978, 0x7f04, 0x8327, 0x68c0, 0x67ec, 0x78b1, 0x7877,
+    0x62e3, 0x6361, 0x7b80, 0x4fed, 0x526a, 0x51cf, 0x8350, 0x69db,
+    0x9274, 0x8df5, 0x8d31, 0x89c1, 0x952e, 0x7bad, 0x4ef6, 0x003f,
+    /* lead byte bd */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7d37, 0x7d38, 0x7d39, 0x7d3a, 0x7d3b, 0x7d3c, 0x7d3d, 0x7d3e,
+    0x7d3f, 0x7d40, 0x7d41, 0x7d42, 0x7d43, 0x7d44, 0x7d45, 0x7d46,
+    0x7d47, 0x7d48, 0x7d49, 0x7d4a, 0x7d4b, 0x7d4c, 0x7d4d, 0x7d4e,
+    0x7d4f, 0x7d50, 0x7d51, 0x7d52, 0x7d53, 0x7d54, 0x7d55, 0x7d56,
+    0x7d57, 0x7d58, 0x7d59, 0x7d5a, 0x7d5b, 0x7d5c, 0x7d5d, 0x7d5e,
+    0x7d5f, 0x7d60, 0x7d61, 0x7d62, 0x7d63, 0x7d64, 0x7d65, 0x7d66,
+    0x7d67, 0x7d68, 0x7d69, 0x7d6a, 0x7d6b, 0x7d6c, 0x7d6d, 0x7d6f,
+    0x7d70, 0x7d71, 0x7d72, 0x7d73, 0x7d74, 0x7d75, 0x7d76, 0x003f,
+    0x7d78, 0x7d79, 0x7d7a, 0x7d7b, 0x7d7c, 0x7d7d, 0x7d7e, 0x7d7f,
+    0x7d80, 0x7d81, 0x7d82, 0x7d83, 0x7d84, 0x7d85, 0x7d86, 0x7d87,
+    0x7d88, 0x7d89, 0x7d8a, 0x7d8b, 0x7d8c, 0x7d8d, 0x7d8e, 0x7d8f,
+    0x7d90, 0x7d91, 0x7d92, 0x7d93, 0x7d94, 0x7d95, 0x7d96, 0x7d97,
+    0x7d98, 0x5065, 0x8230, 0x5251, 0x996f, 0x6e10, 0x6e85, 0x6da7,
+    0x5efa, 0x50f5, 0x59dc, 0x5c06, 0x6d46, 0x6c5f, 0x7586, 0x848b,
+    0x6868, 0x5956, 0x8bb2, 0x5320, 0x9171, 0x964d, 0x8549, 0x6912,
+    0x7901, 0x7126, 0x80f6, 0x4ea4, 0x90ca, 0x6d47, 0x9a84, 0x5a07,
+    0x56bc, 0x6405, 0x94f0, 0x77eb, 0x4fa5, 0x811a, 0x72e1, 0x89d2,
+    0x997a, 0x7f34, 0x7ede, 0x527f, 0x6559, 0x9175, 0x8f7f, 0x8f83,
+    0x53eb, 0x7a96, 0x63ed, 0x63a5, 0x7686, 0x79f8, 0x8857, 0x9636,
+    0x622a, 0x52ab, 0x8282, 0x6854, 0x6770, 0x6377, 0x776b, 0x7aed,
+    0x6d01, 0x7ed3, 0x89e3, 0x59d0, 0x6212, 0x85c9, 0x82a5, 0x754c,
+    0x501f, 0x4ecb, 0x75a5, 0x8beb, 0x5c4a, 0x5dfe, 0x7b4b, 0x65a4,
+    0x91d1, 0x4eca, 0x6d25, 0x895f, 0x7d27, 0x9526, 0x4ec5, 0x8c28,
+    0x8fdb, 0x9773, 0x664b, 0x7981, 0x8fd1, 0x70ec, 0x6d78, 0x003f,
+    /* lead byte be */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7d99, 0x7d9a, 0x7d9b, 0x7d9c, 0x7d9d, 0x7d9e, 0x7d9f, 0x7da0,
+    0x7da1, 0x7da2, 0x7da3, 0x7da4, 0x7da5, 0x7da7, 0x7da8, 0x7da9,
+    0x7daa, 0x7dab, 0x7dac, 0x7dad, 0x7daf, 0x7db0, 0x7db1, 0x7db2,
+    0x7db3, 0x7db4, 0x7db5, 0x7db6, 0x7db7, 0x7db8, 0x7db9, 0x7dba,
+    0x7dbb, 0x7dbc, 0x7dbd, 0x7dbe, 0x7dbf, 0x7dc0, 0x7dc1, 0x7dc2,
+    0x7dc3, 0x7dc4, 0x7dc5, 0x7dc6, 0x7dc7, 0x7dc8, 0x7dc9, 0x7dca,
+    0x7dcb, 0x7dcc, 0x7dcd, 0x7dce, 0x7dcf, 0x7dd0, 0x7dd1, 0x7dd2,
+    0x7dd3, 0x7dd4, 0x7dd5, 0x7dd6, 0x7dd7, 0x7dd8, 0x7dd9, 0x003f,
+    0x7dda, 0x7ddb, 0x7ddc, 0x7ddd, 0x7dde, 0x7ddf, 0x7de0, 0x7de1,
+    0x7de2, 0x7de3, 0x7de4, 0x7de5, 0x7de6, 0x7de7, 0x7de8, 0x7de9,
+    0x7dea, 0x7deb, 0x7dec, 0x7ded, 0x7dee, 0x7def, 0x7df0, 0x7df1,
+    0x7df2, 0x7df3, 0x7df4, 0x7df5, 0x7df6, 0x7df7, 0x7df8, 0x7df9,
+    0x7dfa, 0x5c3d, 0x52b2, 0x8346, 0x5162, 0x830e, 0x775b, 0x6676,
+    0x9cb8, 0x4eac, 0x60ca, 0x7cbe, 0x7cb3, 0x7ecf, 0x4e95, 0x8b66,
+    0x666f, 0x9888, 0x9759, 0x5883, 0x656c, 0x955c, 0x5f84, 0x75c9,
+    0x9756, 0x7adf, 0x7ade, 0x51c0, 0x70af, 0x7a98, 0x63ea, 0x7a76,
+    0x7ea0, 0x7396, 0x97ed, 0x4e45, 0x7078, 0x4e5d, 0x9152, 0x53a9,
+    0x6551, 0x65e7, 0x81fc, 0x8205, 0x548e, 0x5c31, 0x759a, 0x97a0,
+    0x62d8, 0x72d9, 0x75bd, 0x5c45, 0x9a79, 0x83ca, 0x5c40, 0x5480,
+    0x77e9, 0x4e3e, 0x6cae, 0x805a, 0x62d2, 0x636e, 0x5de8, 0x5177,
+    0x8ddd, 0x8e1e, 0x952f, 0x4ff1, 0x53e5, 0x60e7, 0x70ac, 0x5267,
+    0x6350, 0x9e43, 0x5a1f, 0x5026, 0x7737, 0x5377, 0x7ee2, 0x6485,
+    0x652b, 0x6289, 0x6398, 0x5014, 0x7235, 0x89c9, 0x51b3, 0x8bc0,
+    0x7edd, 0x5747, 0x83cc, 0x94a7, 0x519b, 0x541b, 0x5cfb, 0x003f,
+    /* lead byte bf */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7dfb, 0x7dfc, 0x7dfd, 0x7dfe, 0x7dff, 0x7e00, 0x7e01, 0x7e02,
+    0x7e03, 0x7e04, 0x7e05, 0x7e06, 0x7e07, 0x7e08, 0x7e09, 0x7e0a,
+    0x7e0b, 0x7e0c, 0x7e0d, 0x7e0e, 0x7e0f, 0x7e10, 0x7e11, 0x7e12,
+    0x7e13, 0x7e14, 0x7e15, 0x7e16, 0x7e17, 0x7e18, 0x7e19, 0x7e1a,
+    0x7e1b, 0x7e1c, 0x7e1d, 0x7e1e, 0x7e1f, 0x7e20, 0x7e21, 0x7e22,
+    0x7e23, 0x7e24, 0x7e25, 0x7e26, 0x7e27, 0x7e28, 0x7e29, 0x7e2a,
+    0x7e2b, 0x7e2c, 0x7e2d, 0x7e2e, 0x7e2f, 0x7e30, 0x7e31, 0x7e32,
+    0x7e33, 0x7e34, 0x7e35, 0x7e36, 0x7e37, 0x7e38, 0x7e39, 0x003f,
+    0x7e3a, 0x7e3c, 0x7e3d, 0x7e3e, 0x7e3f, 0x7e40, 0x7e42, 0x7e43,
+    0x7e44, 0x7e45, 0x7e46, 0x7e48, 0x7e49, 0x7e4a, 0x7e4b, 0x7e4c,
+    0x7e4d, 0x7e4e, 0x7e4f, 0x7e50, 0x7e51, 0x7e52, 0x7e53, 0x7e54,
+    0x7e55, 0x7e56, 0x7e57, 0x7e58, 0x7e59, 0x7e5a, 0x7e5b, 0x7e5c,
+    0x7e5d, 0x4fca, 0x7ae3, 0x6d5a, 0x90e1, 0x9a8f, 0x5580, 0x5496,
+    0x5361, 0x54af, 0x5f00, 0x63e9, 0x6977, 0x51ef, 0x6168, 0x520a,
+    0x582a, 0x52d8, 0x574e, 0x780d, 0x770b, 0x5eb7, 0x6177, 0x7ce0,
+    0x625b, 0x6297, 0x4ea2, 0x7095, 0x8003, 0x62f7, 0x70e4, 0x9760,
+    0x5777, 0x82db, 0x67ef, 0x68f5, 0x78d5, 0x9897, 0x79d1, 0x58f3,
+    0x54b3, 0x53ef, 0x6e34, 0x514b, 0x523b, 0x5ba2, 0x8bfe, 0x80af,
+    0x5543, 0x57a6, 0x6073, 0x5751, 0x542d, 0x7a7a, 0x6050, 0x5b54,
+    0x63a7, 0x62a0, 0x53e3, 0x6263, 0x5bc7, 0x67af, 0x54ed, 0x7a9f,
+    0x82e6, 0x9177, 0x5e93, 0x88e4, 0x5938, 0x57ae, 0x630e, 0x8de8,
+    0x80ef, 0x5757, 0x7b77, 0x4fa9, 0x5feb, 0x5bbd, 0x6b3e, 0x5321,
+    0x7b50, 0x72c2, 0x6846, 0x77ff, 0x7736, 0x65f7, 0x51b5, 0x4e8f,
+    0x76d4, 0x5cbf, 0x7aa5, 0x8475, 0x594e, 0x9b41, 0x5080, 0x003f,
+    /* lead byte c0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7e5e, 0x7e5f, 0x7e60, 0x7e61, 0x7e62, 0x7e63, 0x7e64, 0x7e65,
+    0x7e66, 0x7e67, 0x7e68, 0x7e69, 0x7e6a, 0x7e6b, 0x7e6c, 0x7e6d,
+    0x7e6e, 0x7e6f, 0x7e70, 0x7e71, 0x7e72, 0x7e73, 0x7e74, 0x7e75,
+    0x7e76, 0x7e77, 0x7e78, 0x7e79, 0x7e7a, 0x7e7b, 0x7e7c, 0x7e7d,
+    0x7e7e, 0x7e7f, 0x7e80, 0x7e81, 0x7e83, 0x7e84, 0x7e85, 0x7e86,
+    0x7e87, 0x7e88, 0x7e89, 0x7e8a, 0x7e8b, 0x7e8c, 0x7e8d, 0x7e8e,
+    0x7e8f, 0x7e90, 0x7e91, 0x7e92, 0x7e93, 0x7e94, 0x7e95, 0x7e96,
+    0x7e97, 0x7e98, 0x7e99, 0x7e9a, 0x7e9c, 0x7e9d, 0x7e9e, 0x003f,
+    0x7eae, 0x7eb4, 0x7ebb, 0x7ebc, 0x7ed6, 0x7ee4, 0x7eec, 0x7ef9,
+    0x7f0a, 0x7f10, 0x7f1e, 0x7f37, 0x7f39, 0x7f3b, 0x7f3c, 0x7f3d,
+    0x7f3e, 0x7f3f, 0x7f40, 0x7f41, 0x7f43, 0x7f46, 0x7f47, 0x7f48,
+    0x7f49, 0x7f4a, 0x7f4b, 0x7f4c, 0x7f4d, 0x7f4e, 0x7f4f, 0x7f52,
+    0x7f53, 0x9988, 0x6127, 0x6e83, 0x5764, 0x6606, 0x6346, 0x56f0,
+    0x62ec, 0x6269, 0x5ed3, 0x9614, 0x5783, 0x62c9, 0x5587, 0x8721,
+    0x814a, 0x8fa3, 0x5566, 0x83b1, 0x6765, 0x8d56, 0x84dd, 0x5a6a,
+    0x680f, 0x62e6, 0x7bee, 0x9611, 0x5170, 0x6f9c, 0x8c30, 0x63fd,
+    0x89c8, 0x61d2, 0x7f06, 0x70c2, 0x6ee5, 0x7405, 0x6994, 0x72fc,
+    0x5eca, 0x90ce, 0x6717, 0x6d6a, 0x635e, 0x52b3, 0x7262, 0x8001,
+    0x4f6c, 0x59e5, 0x916a, 0x70d9, 0x6d9d, 0x52d2, 0x4e50, 0x96f7,
+    0x956d, 0x857e, 0x78ca, 0x7d2f, 0x5121, 0x5792, 0x64c2, 0x808b,
+    0x7c7b, 0x6cea, 0x68f1, 0x695e, 0x51b7, 0x5398, 0x68a8, 0x7281,
+    0x9ece, 0x7bf1, 0x72f8, 0x79bb, 0x6f13, 0x7406, 0x674e, 0x91cc,
+    0x9ca4, 0x793c, 0x8389, 0x8354, 0x540f, 0x6817, 0x4e3d, 0x5389,
+    0x52b1, 0x783e, 0x5386, 0x5229, 0x5088, 0x4f8b, 0x4fd0, 0x003f,
+    /* lead byte c1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7f56, 0x7f59, 0x7f5b, 0x7f5c, 0x7f5d, 0x7f5e, 0x7f60, 0x7f63,
+    0x7f64, 0x7f65, 0x7f66, 0x7f67, 0x7f6b, 0x7f6c, 0x7f6d, 0x7f6f,
+    0x7f70, 0x7f73, 0x7f75, 0x7f76, 0x7f77, 0x7f78, 0x7f7a, 0x7f7b,
+    0x7f7c, 0x7f7d, 0x7f7f, 0x7f80, 0x7f82, 0x7f83, 0x7f84, 0x7f85,
+    0x7f86, 0x7f87, 0x7f88, 0x7f89, 0x7f8b, 0x7f8d, 0x7f8f, 0x7f90,
+    0x7f91, 0x7f92, 0x7f93, 0x7f95, 0x7f96, 0x7f97, 0x7f98, 0x7f99,
+    0x7f9b, 0x7f9c, 0x7fa0, 0x7fa2, 0x7fa3, 0x7fa5, 0x7fa6, 0x7fa8,
+    0x7fa9, 0x7faa, 0x7fab, 0x7fac, 0x7fad, 0x7fae, 0x7fb1, 0x003f,
+    0x7fb3, 0x7fb4, 0x7fb5, 0x7fb6, 0x7fb7, 0x7fba, 0x7fbb, 0x7fbe,
+    0x7fc0, 0x7fc2, 0x7fc3, 0x7fc4, 0x7fc6, 0x7fc7, 0x7fc8, 0x7fc9,
+    0x7fcb, 0x7fcd, 0x7fcf, 0x7fd0, 0x7fd1, 0x7fd2, 0x7fd3, 0x7fd6,
+    0x7fd7, 0x7fd9, 0x7fda, 0x7fdb, 0x7fdc, 0x7fdd, 0x7fde, 0x7fe2,
+    0x7fe3, 0x75e2, 0x7acb, 0x7c92, 0x6ca5, 0x96b6, 0x529b, 0x7483,
+    0x54e9, 0x4fe9, 0x8054, 0x83b2, 0x8fde, 0x9570, 0x5ec9, 0x601c,
+    0x6d9f, 0x5e18, 0x655b, 0x8138, 0x94fe, 0x604b, 0x70bc, 0x7ec3,
+    0x7cae, 0x51c9, 0x6881, 0x7cb1, 0x826f, 0x4e24, 0x8f86, 0x91cf,
+    0x667e, 0x4eae, 0x8c05, 0x64a9, 0x804a, 0x50da, 0x7597, 0x71ce,
+    0x5be5, 0x8fbd, 0x6f66, 0x4e86, 0x6482, 0x9563, 0x5ed6, 0x6599,
+    0x5217, 0x88c2, 0x70c8, 0x52a3, 0x730e, 0x7433, 0x6797, 0x78f7,
+    0x9716, 0x4e34, 0x90bb, 0x9cde, 0x6dcb, 0x51db, 0x8d41, 0x541d,
+    0x62ce, 0x73b2, 0x83f1, 0x96f6, 0x9f84, 0x94c3, 0x4f36, 0x7f9a,
+    0x51cc, 0x7075, 0x9675, 0x5cad, 0x9886, 0x53e6, 0x4ee4, 0x6e9c,
+    0x7409, 0x69b4, 0x786b, 0x998f, 0x7559, 0x5218, 0x7624, 0x6d41,
+    0x67f3, 0x516d, 0x9f99, 0x804b, 0x5499, 0x7b3c, 0x7abf, 0x003f,
+    /* lead byte c2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7fe4, 0x7fe7, 0x7fe8, 0x7fea, 0x7feb, 0x7fec, 0x7fed, 0x7fef,
+    0x7ff2, 0x7ff4, 0x7ff5, 0x7ff6, 0x7ff7, 0x7ff8, 0x7ff9, 0x7ffa,
+    0x7ffd, 0x7ffe, 0x7fff, 0x8002, 0x8007, 0x8008, 0x8009, 0x800a,
+    0x800e, 0x800f, 0x8011, 0x8013, 0x801a, 0x801b, 0x801d, 0x801e,
+    0x801f, 0x8021, 0x8023, 0x8024, 0x802b, 0x802c, 0x802d, 0x802e,
+    0x802f, 0x8030, 0x8032, 0x8034, 0x8039, 0x803a, 0x803c, 0x803e,
+    0x8040, 0x8041, 0x8044, 0x8045, 0x8047, 0x8048, 0x8049, 0x804e,
+    0x804f, 0x8050, 0x8051, 0x8053, 0x8055, 0x8056, 0x8057, 0x003f,
+    0x8059, 0x805b, 0x805c, 0x805d, 0x805e, 0x805f, 0x8060, 0x8061,
+    0x8062, 0x8063, 0x8064, 0x8065, 0x8066, 0x8067, 0x8068, 0x806b,
+    0x806c, 0x806d, 0x806e, 0x806f, 0x8070, 0x8072, 0x8073, 0x8074,
+    0x8075, 0x8076, 0x8077, 0x8078, 0x8079, 0x807a, 0x807b, 0x807c,
+    0x807d, 0x9686, 0x5784, 0x62e2, 0x9647, 0x697c, 0x5a04, 0x6402,
+    0x7bd3, 0x6f0f, 0x964b, 0x82a6, 0x5362, 0x9885, 0x5e90, 0x7089,
+    0x63b3, 0x5364, 0x864f, 0x9c81, 0x9e93, 0x788c, 0x9732, 0x8def,
+    0x8d42, 0x9e7f, 0x6f5e, 0x7984, 0x5f55, 0x9646, 0x622e, 0x9a74,
+    0x5415, 0x94dd, 0x4fa3, 0x65c5, 0x5c65, 0x5c61, 0x7f15, 0x8651,
+    0x6c2f, 0x5f8b, 0x7387, 0x6ee4, 0x7eff, 0x5ce6, 0x631b, 0x5b6a,
+    0x6ee6, 0x5375, 0x4e71, 0x63a0, 0x7565, 0x62a1, 0x8f6e, 0x4f26,
+    0x4ed1, 0x6ca6, 0x7eb6, 0x8bba, 0x841d, 0x87ba, 0x7f57, 0x903b,
+    0x9523, 0x7ba9, 0x9aa1, 0x88f8, 0x843d, 0x6d1b, 0x9a86, 0x7edc,
+    0x5988, 0x9ebb, 0x739b, 0x7801, 0x8682, 0x9a6c, 0x9a82, 0x561b,
+    0x5417, 0x57cb, 0x4e70, 0x9ea6, 0x5356, 0x8fc8, 0x8109, 0x7792,
+    0x9992, 0x86ee, 0x6ee1, 0x8513, 0x66fc, 0x6162, 0x6f2b, 0x003f,
+    /* lead byte c3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x807e, 0x8081, 0x8082, 0x8085, 0x8088, 0x808a, 0x808d, 0x808e,
+    0x808f, 0x8090, 0x8091, 0x8092, 0x8094, 0x8095, 0x8097, 0x8099,
+    0x809e, 0x80a3, 0x80a6, 0x80a7, 0x80a8, 0x80ac, 0x80b0, 0x80b3,
+    0x80b5, 0x80b6, 0x80b8, 0x80b9, 0x80bb, 0x80c5, 0x80c7, 0x80c8,
+    0x80c9, 0x80ca, 0x80cb, 0x80cf, 0x80d0, 0x80d1, 0x80d2, 0x80d3,
+    0x80d4, 0x80d5, 0x80d8, 0x80df, 0x80e0, 0x80e2, 0x80e3, 0x80e6,
+    0x80ee, 0x80f5, 0x80f7, 0x80f9, 0x80fb, 0x80fe, 0x80ff, 0x8100,
+    0x8101, 0x8103, 0x8104, 0x8105, 0x8107, 0x8108, 0x810b, 0x003f,
+    0x810c, 0x8115, 0x8117, 0x8119, 0x811b, 0x811c, 0x811d, 0x811f,
+    0x8120, 0x8121, 0x8122, 0x8123, 0x8124, 0x8125, 0x8126, 0x8127,
+    0x8128, 0x8129, 0x812a, 0x812b, 0x812d, 0x812e, 0x8130, 0x8133,
+    0x8134, 0x8135, 0x8137, 0x8139, 0x813a, 0x813b, 0x813c, 0x813d,
+    0x813f, 0x8c29, 0x8292, 0x832b, 0x76f2, 0x6c13, 0x5fd9, 0x83bd,
+    0x732b, 0x8305, 0x951a, 0x6bdb, 0x77db, 0x94c6, 0x536f, 0x8302,
+    0x5192, 0x5e3d, 0x8c8c, 0x8d38, 0x4e48, 0x73ab, 0x679a, 0x6885,
+    0x9176, 0x9709, 0x7164, 0x6ca1, 0x7709, 0x5a92, 0x9541, 0x6bcf,
+    0x7f8e, 0x6627, 0x5bd0, 0x59b9, 0x5a9a, 0x95e8, 0x95f7, 0x4eec,
+    0x840c, 0x8499, 0x6aac, 0x76df, 0x9530, 0x731b, 0x68a6, 0x5b5f,
+    0x772f, 0x919a, 0x9761, 0x7cdc, 0x8ff7, 0x8c1c, 0x5f25, 0x7c73,
+    0x79d8, 0x89c5, 0x6ccc, 0x871c, 0x5bc6, 0x5e42, 0x68c9, 0x7720,
+    0x7ef5, 0x5195, 0x514d, 0x52c9, 0x5a29, 0x7f05, 0x9762, 0x82d7,
+    0x63cf, 0x7784, 0x85d0, 0x79d2, 0x6e3a, 0x5e99, 0x5999, 0x8511,
+    0x706d, 0x6c11, 0x62bf, 0x76bf, 0x654f, 0x60af, 0x95fd, 0x660e,
+    0x879f, 0x9e23, 0x94ed, 0x540d, 0x547d, 0x8c2c, 0x6478, 0x003f,
+    /* lead byte c4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8140, 0x8141, 0x8142, 0x8143, 0x8144, 0x8145, 0x8147, 0x8149,
+    0x814d, 0x814e, 0x814f, 0x8152, 0x8156, 0x8157, 0x8158, 0x815b,
+    0x815c, 0x815d, 0x815e, 0x815f, 0x8161, 0x8162, 0x8163, 0x8164,
+    0x8166, 0x8168, 0x816a, 0x816b, 0x816c, 0x816f, 0x8172, 0x8173,
+    0x8175, 0x8176, 0x8177, 0x8178, 0x8181, 0x8183, 0x8184, 0x8185,
+    0x8186, 0x8187, 0x8189, 0x818b, 0x818c, 0x818d, 0x818e, 0x8190,
+    0x8192, 0x8193, 0x8194, 0x8195, 0x8196, 0x8197, 0x8199, 0x819a,
+    0x819e, 0x819f, 0x81a0, 0x81a1, 0x81a2, 0x81a4, 0x81a5, 0x003f,
+    0x81a7, 0x81a9, 0x81ab, 0x81ac, 0x81ad, 0x81ae, 0x81af, 0x81b0,
+    0x81b1, 0x81b2, 0x81b4, 0x81b5, 0x81b6, 0x81b7, 0x81b8, 0x81b9,
+    0x81bc, 0x81bd, 0x81be, 0x81bf, 0x81c4, 0x81c5, 0x81c7, 0x81c8,
+    0x81c9, 0x81cb, 0x81cd, 0x81ce, 0x81cf, 0x81d0, 0x81d1, 0x81d2,
+    0x81d3, 0x6479, 0x8611, 0x6a21, 0x819c, 0x78e8, 0x6469, 0x9b54,
+    0x62b9, 0x672b, 0x83ab, 0x58a8, 0x9ed8, 0x6cab, 0x6f20, 0x5bde,
+    0x964c, 0x8c0b, 0x725f, 0x67d0, 0x62c7, 0x7261, 0x4ea9, 0x59c6,
+    0x6bcd, 0x5893, 0x66ae, 0x5e55, 0x52df, 0x6155, 0x6728, 0x76ee,
+    0x7766, 0x7267, 0x7a46, 0x62ff, 0x54ea, 0x5450, 0x94a0, 0x90a3,
+    0x5a1c, 0x7eb3, 0x6c16, 0x4e43, 0x5976, 0x8010, 0x5948, 0x5357,
+    0x7537, 0x96be, 0x56ca, 0x6320, 0x8111, 0x607c, 0x95f9, 0x6dd6,
+    0x5462, 0x9981, 0x5185, 0x5ae9, 0x80fd, 0x59ae, 0x9713, 0x502a,
+    0x6ce5, 0x5c3c, 0x62df, 0x4f60, 0x533f, 0x817b, 0x9006, 0x6eba,
+    0x852b, 0x62c8, 0x5e74, 0x78be, 0x64b5, 0x637b, 0x5ff5, 0x5a18,
+    0x917f, 0x9e1f, 0x5c3f, 0x634f, 0x8042, 0x5b7d, 0x556e, 0x954a,
+    0x954d, 0x6d85, 0x60a8, 0x67e0, 0x72de, 0x51dd, 0x5b81, 0x003f,
+    /* lead byte c5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x81d4, 0x81d5, 0x81d6, 0x81d7, 0x81d8, 0x81d9, 0x81da, 0x81db,
+    0x81dc, 0x81dd, 0x81de, 0x81df, 0x81e0, 0x81e1, 0x81e2, 0x81e4,
+    0x81e5, 0x81e6, 0x81e8, 0x81e9, 0x81eb, 0x81ee, 0x81ef, 0x81f0,
+    0x81f1, 0x81f2, 0x81f5, 0x81f6, 0x81f7, 0x81f8, 0x81f9, 0x81fa,
+    0x81fd, 0x81ff, 0x8203, 0x8207, 0x8208, 0x8209, 0x820a, 0x820b,
+    0x820e, 0x820f, 0x8211, 0x8213, 0x8215, 0x8216, 0x8217, 0x8218,
+    0x8219, 0x821a, 0x821d, 0x8220, 0x8224, 0x8225, 0x8226, 0x8227,
+    0x8229, 0x822e, 0x8232, 0x823a, 0x823c, 0x823d, 0x823f, 0x003f,
+    0x8240, 0x8241, 0x8242, 0x8243, 0x8245, 0x8246, 0x8248, 0x824a,
+    0x824c, 0x824d, 0x824e, 0x8250, 0x8251, 0x8252, 0x8253, 0x8254,
+    0x8255, 0x8256, 0x8257, 0x8259, 0x825b, 0x825c, 0x825d, 0x825e,
+    0x8260, 0x8261, 0x8262, 0x8263, 0x8264, 0x8265, 0x8266, 0x8267,
+    0x8269, 0x62e7, 0x6cde, 0x725b, 0x626d, 0x94ae, 0x7ebd, 0x8113,
+    0x6d53, 0x519c, 0x5f04, 0x5974, 0x52aa, 0x6012, 0x5973, 0x6696,
+    0x8650, 0x759f, 0x632a, 0x61e6, 0x7cef, 0x8bfa, 0x54e6, 0x6b27,
+    0x9e25, 0x6bb4, 0x85d5, 0x5455, 0x5076, 0x6ca4, 0x556a, 0x8db4,
+    0x722c, 0x5e15, 0x6015, 0x7436, 0x62cd, 0x6392, 0x724c, 0x5f98,
+    0x6e43, 0x6d3e, 0x6500, 0x6f58, 0x76d8, 0x78d0, 0x76fc, 0x7554,
+    0x5224, 0x53db, 0x4e53, 0x5e9e, 0x65c1, 0x802a, 0x80d6, 0x629b,
+    0x5486, 0x5228, 0x70ae, 0x888d, 0x8dd1, 0x6ce1, 0x5478, 0x80da,
+    0x57f9, 0x88f4, 0x8d54, 0x966a, 0x914d, 0x4f69, 0x6c9b, 0x55b7,
+    0x76c6, 0x7830, 0x62a8, 0x70f9, 0x6f8e, 0x5f6d, 0x84ec, 0x68da,
+    0x787c, 0x7bf7, 0x81a8, 0x670b, 0x9e4f, 0x6367, 0x78b0, 0x576f,
+    0x7812, 0x9739, 0x6279, 0x62ab, 0x5288, 0x7435, 0x6bd7, 0x003f,
+    /* lead byte c6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x826a, 0x826b, 0x826c, 0x826d, 0x8271, 0x8275, 0x8276, 0x8277,
+    0x8278, 0x827b, 0x827c, 0x8280, 0x8281, 0x8283, 0x8285, 0x8286,
+    0x8287, 0x8289, 0x828c, 0x8290, 0x8293, 0x8294, 0x8295, 0x8296,
+    0x829a, 0x829b, 0x829e, 0x82a0, 0x82a2, 0x82a3, 0x82a7, 0x82b2,
+    0x82b5, 0x82b6, 0x82ba, 0x82bb, 0x82bc, 0x82bf, 0x82c0, 0x82c2,
+    0x82c3, 0x82c5, 0x82c6, 0x82c9, 0x82d0, 0x82d6, 0x82d9, 0x82da,
+    0x82dd, 0x82e2, 0x82e7, 0x82e8, 0x82e9, 0x82ea, 0x82ec, 0x82ed,
+    0x82ee, 0x82f0, 0x82f2, 0x82f3, 0x82f5, 0x82f6, 0x82f8, 0x003f,
+    0x82fa, 0x82fc, 0x82fd, 0x82fe, 0x82ff, 0x8300, 0x830a, 0x830b,
+    0x830d, 0x8310, 0x8312, 0x8313, 0x8316, 0x8318, 0x8319, 0x831d,
+    0x831e, 0x831f, 0x8320, 0x8321, 0x8322, 0x8323, 0x8324, 0x8325,
+    0x8326, 0x8329, 0x832a, 0x832e, 0x8330, 0x8332, 0x8337, 0x833b,
+    0x833d, 0x5564, 0x813e, 0x75b2, 0x76ae, 0x5339, 0x75de, 0x50fb,
+    0x5c41, 0x8b6c, 0x7bc7, 0x504f, 0x7247, 0x9a97, 0x98d8, 0x6f02,
+    0x74e2, 0x7968, 0x6487, 0x77a5, 0x62fc, 0x9891, 0x8d2b, 0x54c1,
+    0x8058, 0x4e52, 0x576a, 0x82f9, 0x840d, 0x5e73, 0x51ed, 0x74f6,
+    0x8bc4, 0x5c4f, 0x5761, 0x6cfc, 0x9887, 0x5a46, 0x7834, 0x9b44,
+    0x8feb, 0x7c95, 0x5256, 0x6251, 0x94fa, 0x4ec6, 0x8386, 0x8461,
+    0x83e9, 0x84b2, 0x57d4, 0x6734, 0x5703, 0x666e, 0x6d66, 0x8c31,
+    0x66dd, 0x7011, 0x671f, 0x6b3a, 0x6816, 0x621a, 0x59bb, 0x4e03,
+    0x51c4, 0x6f06, 0x67d2, 0x6c8f, 0x5176, 0x68cb, 0x5947, 0x6b67,
+    0x7566, 0x5d0e, 0x8110, 0x9f50, 0x65d7, 0x7948, 0x7941, 0x9a91,
+    0x8d77, 0x5c82, 0x4e5e, 0x4f01, 0x542f, 0x5951, 0x780c, 0x5668,
+    0x6c14, 0x8fc4, 0x5f03, 0x6c7d, 0x6ce3, 0x8bab, 0x6390, 0x003f,
+    /* lead byte c7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x833e, 0x833f, 0x8341, 0x8342, 0x8344, 0x8345, 0x8348, 0x834a,
+    0x834b, 0x834c, 0x834d, 0x834e, 0x8353, 0x8355, 0x8356, 0x8357,
+    0x8358, 0x8359, 0x835d, 0x8362, 0x8370, 0x8371, 0x8372, 0x8373,
+    0x8374, 0x8375, 0x8376, 0x8379, 0x837a, 0x837e, 0x837f, 0x8380,
+    0x8381, 0x8382, 0x8383, 0x8384, 0x8387, 0x8388, 0x838a, 0x838b,
+    0x838c, 0x838d, 0x838f, 0x8390, 0x8391, 0x8394, 0x8395, 0x8396,
+    0x8397, 0x8399, 0x839a, 0x839d, 0x839f, 0x83a1, 0x83a2, 0x83a3,
+    0x83a4, 0x83a5, 0x83a6, 0x83a7, 0x83ac, 0x83ad, 0x83ae, 0x003f,
+    0x83af, 0x83b5, 0x83bb, 0x83be, 0x83bf, 0x83c2, 0x83c3, 0x83c4,
+    0x83c6, 0x83c8, 0x83c9, 0x83cb, 0x83cd, 0x83ce, 0x83d0, 0x83d1,
+    0x83d2, 0x83d3, 0x83d5, 0x83d7, 0x83d9, 0x83da, 0x83db, 0x83de,
+    0x83e2, 0x83e3, 0x83e4, 0x83e6, 0x83e7, 0x83e8, 0x83eb, 0x83ec,
+    0x83ed, 0x6070, 0x6d3d, 0x7275, 0x6266, 0x948e, 0x94c5, 0x5343,
+    0x8fc1, 0x7b7e, 0x4edf, 0x8c26, 0x4e7e, 0x9ed4, 0x94b1, 0x94b3,
+    0x524d, 0x6f5c, 0x9063, 0x6d45, 0x8c34, 0x5811, 0x5d4c, 0x6b20,
+    0x6b49, 0x67aa, 0x545b, 0x8154, 0x7f8c, 0x5899, 0x8537, 0x5f3a,
+    0x62a2, 0x6a47, 0x9539, 0x6572, 0x6084, 0x6865, 0x77a7, 0x4e54,
+    0x4fa8, 0x5de7, 0x9798, 0x64ac, 0x7fd8, 0x5ced, 0x4fcf, 0x7a8d,
+    0x5207, 0x8304, 0x4e14, 0x602f, 0x7a83, 0x94a6, 0x4fb5, 0x4eb2,
+    0x79e6, 0x7434, 0x52e4, 0x82b9, 0x64d2, 0x79bd, 0x5bdd, 0x6c81,
+    0x9752, 0x8f7b, 0x6c22, 0x503e, 0x537f, 0x6e05, 0x64ce, 0x6674,
+    0x6c30, 0x60c5, 0x9877, 0x8bf7, 0x5e86, 0x743c, 0x7a77, 0x79cb,
+    0x4e18, 0x90b1, 0x7403, 0x6c42, 0x56da, 0x914b, 0x6cc5, 0x8d8b,
+    0x533a, 0x86c6, 0x66f2, 0x8eaf, 0x5c48, 0x9a71, 0x6e20, 0x003f,
+    /* lead byte c8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x83ee, 0x83ef, 0x83f3, 0x83f4, 0x83f5, 0x83f6, 0x83f7, 0x83fa,
+    0x83fb, 0x83fc, 0x83fe, 0x83ff, 0x8400, 0x8402, 0x8405, 0x8407,
+    0x8408, 0x8409, 0x840a, 0x8410, 0x8412, 0x8413, 0x8414, 0x8415,
+    0x8416, 0x8417, 0x8419, 0x841a, 0x841b, 0x841e, 0x841f, 0x8420,
+    0x8421, 0x8422, 0x8423, 0x8429, 0x842a, 0x842b, 0x842c, 0x842d,
+    0x842e, 0x842f, 0x8430, 0x8432, 0x8433, 0x8434, 0x8435, 0x8436,
+    0x8437, 0x8439, 0x843a, 0x843b, 0x843e, 0x843f, 0x8440, 0x8441,
+    0x8442, 0x8443, 0x8444, 0x8445, 0x8447, 0x8448, 0x8449, 0x003f,
+    0x844a, 0x844b, 0x844c, 0x844d, 0x844e, 0x844f, 0x8450, 0x8452,
+    0x8453, 0x8454, 0x8455, 0x8456, 0x8458, 0x845d, 0x845e, 0x845f,
+    0x8460, 0x8462, 0x8464, 0x8465, 0x8466, 0x8467, 0x8468, 0x846a,
+    0x846e, 0x846f, 0x8470, 0x8472, 0x8474, 0x8477, 0x8479, 0x847b,
+    0x847c, 0x53d6, 0x5a36, 0x9f8b, 0x8da3, 0x53bb, 0x5708, 0x98a7,
+    0x6743, 0x919b, 0x6cc9, 0x5168, 0x75ca, 0x62f3, 0x72ac, 0x5238,
+    0x529d, 0x7f3a, 0x7094, 0x7638, 0x5374, 0x9e4a, 0x69b7, 0x786e,
+    0x96c0, 0x88d9, 0x7fa4, 0x7136, 0x71c3, 0x5189, 0x67d3, 0x74e4,
+    0x58e4, 0x6518, 0x56b7, 0x8ba9, 0x9976, 0x6270, 0x7ed5, 0x60f9,
+    0x70ed, 0x58ec, 0x4ec1, 0x4eba, 0x5fcd, 0x97e7, 0x4efb, 0x8ba4,
+    0x5203, 0x598a, 0x7eab, 0x6254, 0x4ecd, 0x65e5, 0x620e, 0x8338,
+    0x84c9, 0x8363, 0x878d, 0x7194, 0x6eb6, 0x5bb9, 0x7ed2, 0x5197,
+    0x63c9, 0x67d4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5b7a, 0x5982,
+    0x8fb1, 0x4e73, 0x6c5d, 0x5165, 0x8925, 0x8f6f, 0x962e, 0x854a,
+    0x745e, 0x9510, 0x95f0, 0x6da6, 0x82e5, 0x5f31, 0x6492, 0x6d12,
+    0x8428, 0x816e, 0x9cc3, 0x585e, 0x8d5b, 0x4e09, 0x53c1, 0x003f,
+    /* lead byte c9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x847d, 0x847e, 0x847f, 0x8480, 0x8481, 0x8483, 0x8484, 0x8485,
+    0x8486, 0x848a, 0x848d, 0x848f, 0x8490, 0x8491, 0x8492, 0x8493,
+    0x8494, 0x8495, 0x8496, 0x8498, 0x849a, 0x849b, 0x849d, 0x849e,
+    0x849f, 0x84a0, 0x84a2, 0x84a3, 0x84a4, 0x84a5, 0x84a6, 0x84a7,
+    0x84a8, 0x84a9, 0x84aa, 0x84ab, 0x84ac, 0x84ad, 0x84ae, 0x84b0,
+    0x84b1, 0x84b3, 0x84b5, 0x84b6, 0x84b7, 0x84bb, 0x84bc, 0x84be,
+    0x84c0, 0x84c2, 0x84c3, 0x84c5, 0x84c6, 0x84c7, 0x84c8, 0x84cb,
+    0x84cc, 0x84ce, 0x84cf, 0x84d2, 0x84d4, 0x84d5, 0x84d7, 0x003f,
+    0x84d8, 0x84d9, 0x84da, 0x84db, 0x84dc, 0x84de, 0x84e1, 0x84e2,
+    0x84e4, 0x84e7, 0x84e8, 0x84e9, 0x84ea, 0x84eb, 0x84ed, 0x84ee,
+    0x84ef, 0x84f1, 0x84f2, 0x84f3, 0x84f4, 0x84f5, 0x84f6, 0x84f7,
+    0x84f8, 0x84f9, 0x84fa, 0x84fb, 0x84fd, 0x84fe, 0x8500, 0x8501,
+    0x8502, 0x4f1e, 0x6563, 0x6851, 0x55d3, 0x4e27, 0x6414, 0x9a9a,
+    0x626b, 0x5ac2, 0x745f, 0x8272, 0x6da9, 0x68ee, 0x50e7, 0x838e,
+    0x7802, 0x6740, 0x5239, 0x6c99, 0x7eb1, 0x50bb, 0x5565, 0x715e,
+    0x7b5b, 0x6652, 0x73ca, 0x82eb, 0x6749, 0x5c71, 0x5220, 0x717d,
+    0x886b, 0x95ea, 0x9655, 0x64c5, 0x8d61, 0x81b3, 0x5584, 0x6c55,
+    0x6247, 0x7f2e, 0x5892, 0x4f24, 0x5546, 0x8d4f, 0x664c, 0x4e0a,
+    0x5c1a, 0x88f3, 0x68a2, 0x634e, 0x7a0d, 0x70e7, 0x828d, 0x52fa,
+    0x97f6, 0x5c11, 0x54e8, 0x90b5, 0x7ecd, 0x5962, 0x8d4a, 0x86c7,
+    0x820c, 0x820d, 0x8d66, 0x6444, 0x5c04, 0x6151, 0x6d89, 0x793e,
+    0x8bbe, 0x7837, 0x7533, 0x547b, 0x4f38, 0x8eab, 0x6df1, 0x5a20,
+    0x7ec5, 0x795e, 0x6c88, 0x5ba1, 0x5a76, 0x751a, 0x80be, 0x614e,
+    0x6e17, 0x58f0, 0x751f, 0x7525, 0x7272, 0x5347, 0x7ef3, 0x003f,
+    /* lead byte ca */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8503, 0x8504, 0x8505, 0x8506, 0x8507, 0x8508, 0x8509, 0x850a,
+    0x850b, 0x850d, 0x850e, 0x850f, 0x8510, 0x8512, 0x8514, 0x8515,
+    0x8516, 0x8518, 0x8519, 0x851b, 0x851c, 0x851d, 0x851e, 0x8520,
+    0x8522, 0x8523, 0x8524, 0x8525, 0x8526, 0x8527, 0x8528, 0x8529,
+    0x852a, 0x852d, 0x852e, 0x852f, 0x8530, 0x8531, 0x8532, 0x8533,
+    0x8534, 0x8535, 0x8536, 0x853e, 0x853f, 0x8540, 0x8541, 0x8542,
+    0x8544, 0x8545, 0x8546, 0x8547, 0x854b, 0x854c, 0x854d, 0x854e,
+    0x854f, 0x8550, 0x8551, 0x8552, 0x8553, 0x8554, 0x8555, 0x003f,
+    0x8557, 0x8558, 0x855a, 0x855b, 0x855c, 0x855d, 0x855f, 0x8560,
+    0x8561, 0x8562, 0x8563, 0x8565, 0x8566, 0x8567, 0x8569, 0x856a,
+    0x856b, 0x856c, 0x856d, 0x856e, 0x856f, 0x8570, 0x8571, 0x8573,
+    0x8575, 0x8576, 0x8577, 0x8578, 0x857c, 0x857d, 0x857f, 0x8580,
+    0x8581, 0x7701, 0x76db, 0x5269, 0x80dc, 0x5723, 0x5e08, 0x5931,
+    0x72ee, 0x65bd, 0x6e7f, 0x8bd7, 0x5c38, 0x8671, 0x5341, 0x77f3,
+    0x62fe, 0x65f6, 0x4ec0, 0x98df, 0x8680, 0x5b9e, 0x8bc6, 0x53f2,
+    0x77e2, 0x4f7f, 0x5c4e, 0x9a76, 0x59cb, 0x5f0f, 0x793a, 0x58eb,
+    0x4e16, 0x67ff, 0x4e8b, 0x62ed, 0x8a93, 0x901d, 0x52bf, 0x662f,
+    0x55dc, 0x566c, 0x9002, 0x4ed5, 0x4f8d, 0x91ca, 0x9970, 0x6c0f,
+    0x5e02, 0x6043, 0x5ba4, 0x89c6, 0x8bd5, 0x6536, 0x624b, 0x9996,
+    0x5b88, 0x5bff, 0x6388, 0x552e, 0x53d7, 0x7626, 0x517d, 0x852c,
+    0x67a2, 0x68b3, 0x6b8a, 0x6292, 0x8f93, 0x53d4, 0x8212, 0x6dd1,
+    0x758f, 0x4e66, 0x8d4e, 0x5b70, 0x719f, 0x85af, 0x6691, 0x66d9,
+    0x7f72, 0x8700, 0x9ecd, 0x9f20, 0x5c5e, 0x672f, 0x8ff0, 0x6811,
+    0x675f, 0x620d, 0x7ad6, 0x5885, 0x5eb6, 0x6570, 0x6f31, 0x003f,
+    /* lead byte cb */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8582, 0x8583, 0x8586, 0x8588, 0x8589, 0x858a, 0x858b, 0x858c,
+    0x858d, 0x858e, 0x8590, 0x8591, 0x8592, 0x8593, 0x8594, 0x8595,
+    0x8596, 0x8597, 0x8598, 0x8599, 0x859a, 0x859d, 0x859e, 0x859f,
+    0x85a0, 0x85a1, 0x85a2, 0x85a3, 0x85a5, 0x85a6, 0x85a7, 0x85a9,
+    0x85ab, 0x85ac, 0x85ad, 0x85b1, 0x85b2, 0x85b3, 0x85b4, 0x85b5,
+    0x85b6, 0x85b8, 0x85ba, 0x85bb, 0x85bc, 0x85bd, 0x85be, 0x85bf,
+    0x85c0, 0x85c2, 0x85c3, 0x85c4, 0x85c5, 0x85c6, 0x85c7, 0x85c8,
+    0x85ca, 0x85cb, 0x85cc, 0x85cd, 0x85ce, 0x85d1, 0x85d2, 0x003f,
+    0x85d4, 0x85d6, 0x85d7, 0x85d8, 0x85d9, 0x85da, 0x85db, 0x85dd,
+    0x85de, 0x85df, 0x85e0, 0x85e1, 0x85e2, 0x85e3, 0x85e5, 0x85e6,
+    0x85e7, 0x85e8, 0x85ea, 0x85eb, 0x85ec, 0x85ed, 0x85ee, 0x85ef,
+    0x85f0, 0x85f1, 0x85f2, 0x85f3, 0x85f4, 0x85f5, 0x85f6, 0x85f7,
+    0x85f8, 0x6055, 0x5237, 0x800d, 0x6454, 0x8870, 0x7529, 0x5e05,
+    0x6813, 0x62f4, 0x971c, 0x53cc, 0x723d, 0x8c01, 0x6c34, 0x7761,
+    0x7a0e, 0x542e, 0x77ac, 0x987a, 0x821c, 0x8bf4, 0x7855, 0x6714,
+    0x70c1, 0x65af, 0x6495, 0x5636, 0x601d, 0x79c1, 0x53f8, 0x4e1d,
+    0x6b7b, 0x8086, 0x5bfa, 0x55e3, 0x56db, 0x4f3a, 0x4f3c, 0x9972,
+    0x5df3, 0x677e, 0x8038, 0x6002, 0x9882, 0x9001, 0x5b8b, 0x8bbc,
+    0x8bf5, 0x641c, 0x8258, 0x64de, 0x55fd, 0x82cf, 0x9165, 0x4fd7,
+    0x7d20, 0x901f, 0x7c9f, 0x50f3, 0x5851, 0x6eaf, 0x5bbf, 0x8bc9,
+    0x8083, 0x9178, 0x849c, 0x7b97, 0x867d, 0x968b, 0x968f, 0x7ee5,
+    0x9ad3, 0x788e, 0x5c81, 0x7a57, 0x9042, 0x96a7, 0x795f, 0x5b59,
+    0x635f, 0x7b0b, 0x84d1, 0x68ad, 0x5506, 0x7f29, 0x7410, 0x7d22,
+    0x9501, 0x6240, 0x584c, 0x4ed6, 0x5b83, 0x5979, 0x5854, 0x003f,
+    /* lead byte cc */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x85f9, 0x85fa, 0x85fc, 0x85fd, 0x85fe, 0x8600, 0x8601, 0x8602,
+    0x8603, 0x8604, 0x8606, 0x8607, 0x8608, 0x8609, 0x860a, 0x860b,
+    0x860c, 0x860d, 0x860e, 0x860f, 0x8610, 0x8612, 0x8613, 0x8614,
+    0x8615, 0x8617, 0x8618, 0x8619, 0x861a, 0x861b, 0x861c, 0x861d,
+    0x861e, 0x861f, 0x8620, 0x8621, 0x8622, 0x8623, 0x8624, 0x8625,
+    0x8626, 0x8628, 0x862a, 0x862b, 0x862c, 0x862d, 0x862e, 0x862f,
+    0x8630, 0x8631, 0x8632, 0x8633, 0x8634, 0x8635, 0x8636, 0x8637,
+    0x8639, 0x863a, 0x863b, 0x863d, 0x863e, 0x863f, 0x8640, 0x003f,
+    0x8641, 0x8642, 0x8643, 0x8644, 0x8645, 0x8646, 0x8647, 0x8648,
+    0x8649, 0x864a, 0x864b, 0x864c, 0x8652, 0x8653, 0x8655, 0x8656,
+    0x8657, 0x8658, 0x8659, 0x865b, 0x865c, 0x865d, 0x865f, 0x8660,
+    0x8661, 0x8663, 0x8664, 0x8665, 0x8666, 0x8667, 0x8668, 0x8669,
+    0x866a, 0x736d, 0x631e, 0x8e4b, 0x8e0f, 0x80ce, 0x82d4, 0x62ac,
+    0x53f0, 0x6cf0, 0x915e, 0x592a, 0x6001, 0x6c70, 0x574d, 0x644a,
+    0x8d2a, 0x762b, 0x6ee9, 0x575b, 0x6a80, 0x75f0, 0x6f6d, 0x8c2d,
+    0x8c08, 0x5766, 0x6bef, 0x8892, 0x78b3, 0x63a2, 0x53f9, 0x70ad,
+    0x6c64, 0x5858, 0x642a, 0x5802, 0x68e0, 0x819b, 0x5510, 0x7cd6,
+    0x5018, 0x8eba, 0x6dcc, 0x8d9f, 0x70eb, 0x638f, 0x6d9b, 0x6ed4,
+    0x7ee6, 0x8404, 0x6843, 0x9003, 0x6dd8, 0x9676, 0x8ba8, 0x5957,
+    0x7279, 0x85e4, 0x817e, 0x75bc, 0x8a8a, 0x68af, 0x5254, 0x8e22,
+    0x9511, 0x63d0, 0x9898, 0x8e44, 0x557c, 0x4f53, 0x66ff, 0x568f,
+    0x60d5, 0x6d95, 0x5243, 0x5c49, 0x5929, 0x6dfb, 0x586b, 0x7530,
+    0x751c, 0x606c, 0x8214, 0x8146, 0x6311, 0x6761, 0x8fe2, 0x773a,
+    0x8df3, 0x8d34, 0x94c1, 0x5e16, 0x5385, 0x542c, 0x70c3, 0x003f,
+    /* lead byte cd */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x866d, 0x866f, 0x8670, 0x8672, 0x8673, 0x8674, 0x8675, 0x8676,
+    0x8677, 0x8678, 0x8683, 0x8684, 0x8685, 0x8686, 0x8687, 0x8688,
+    0x8689, 0x868e, 0x868f, 0x8690, 0x8691, 0x8692, 0x8694, 0x8696,
+    0x8697, 0x8698, 0x8699, 0x869a, 0x869b, 0x869e, 0x869f, 0x86a0,
+    0x86a1, 0x86a2, 0x86a5, 0x86a6, 0x86ab, 0x86ad, 0x86ae, 0x86b2,
+    0x86b3, 0x86b7, 0x86b8, 0x86b9, 0x86bb, 0x86bc, 0x86bd, 0x86be,
+    0x86bf, 0x86c1, 0x86c2, 0x86c3, 0x86c5, 0x86c8, 0x86cc, 0x86cd,
+    0x86d2, 0x86d3, 0x86d5, 0x86d6, 0x86d7, 0x86da, 0x86dc, 0x003f,
+    0x86dd, 0x86e0, 0x86e1, 0x86e2, 0x86e3, 0x86e5, 0x86e6, 0x86e7,
+    0x86e8, 0x86ea, 0x86eb, 0x86ec, 0x86ef, 0x86f5, 0x86f6, 0x86f7,
+    0x86fa, 0x86fb, 0x86fc, 0x86fd, 0x86ff, 0x8701, 0x8704, 0x8705,
+    0x8706, 0x870b, 0x870c, 0x870e, 0x870f, 0x8710, 0x8711, 0x8714,
+    0x8716, 0x6c40, 0x5ef7, 0x505c, 0x4ead, 0x5ead, 0x633a, 0x8247,
+    0x901a, 0x6850, 0x916e, 0x77b3, 0x540c, 0x94dc, 0x5f64, 0x7ae5,
+    0x6876, 0x6345, 0x7b52, 0x7edf, 0x75db, 0x5077, 0x6295, 0x5934,
+    0x900f, 0x51f8, 0x79c3, 0x7a81, 0x56fe, 0x5f92, 0x9014, 0x6d82,
+    0x5c60, 0x571f, 0x5410, 0x5154, 0x6e4d, 0x56e2, 0x63a8, 0x9893,
+    0x817f, 0x8715, 0x892a, 0x9000, 0x541e, 0x5c6f, 0x81c0, 0x62d6,
+    0x6258, 0x8131, 0x9e35, 0x9640, 0x9a6e, 0x9a7c, 0x692d, 0x59a5,
+    0x62d3, 0x553e, 0x6316, 0x54c7, 0x86d9, 0x6d3c, 0x5a03, 0x74e6,
+    0x889c, 0x6b6a, 0x5916, 0x8c4c, 0x5f2f, 0x6e7e, 0x73a9, 0x987d,
+    0x4e38, 0x70f7, 0x5b8c, 0x7897, 0x633d, 0x665a, 0x7696, 0x60cb,
+    0x5b9b, 0x5a49, 0x4e07, 0x8155, 0x6c6a, 0x738b, 0x4ea1, 0x6789,
+    0x7f51, 0x5f80, 0x65fa, 0x671b, 0x5fd8, 0x5984, 0x5a01, 0x003f,
+    /* lead byte ce */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8719, 0x871b, 0x871d, 0x871f, 0x8720, 0x8724, 0x8726, 0x8727,
+    0x8728, 0x872a, 0x872b, 0x872c, 0x872d, 0x872f, 0x8730, 0x8732,
+    0x8733, 0x8735, 0x8736, 0x8738, 0x8739, 0x873a, 0x873c, 0x873d,
+    0x8740, 0x8741, 0x8742, 0x8743, 0x8744, 0x8745, 0x8746, 0x874a,
+    0x874b, 0x874d, 0x874f, 0x8750, 0x8751, 0x8752, 0x8754, 0x8755,
+    0x8756, 0x8758, 0x875a, 0x875b, 0x875c, 0x875d, 0x875e, 0x875f,
+    0x8761, 0x8762, 0x8766, 0x8767, 0x8768, 0x8769, 0x876a, 0x876b,
+    0x876c, 0x876d, 0x876f, 0x8771, 0x8772, 0x8773, 0x8775, 0x003f,
+    0x8777, 0x8778, 0x8779, 0x877a, 0x877f, 0x8780, 0x8781, 0x8784,
+    0x8786, 0x8787, 0x8789, 0x878a, 0x878c, 0x878e, 0x878f, 0x8790,
+    0x8791, 0x8792, 0x8794, 0x8795, 0x8796, 0x8798, 0x8799, 0x879a,
+    0x879b, 0x879c, 0x879d, 0x879e, 0x87a0, 0x87a1, 0x87a2, 0x87a3,
+    0x87a4, 0x5dcd, 0x5fae, 0x5371, 0x97e6, 0x8fdd, 0x6845, 0x56f4,
+    0x552f, 0x60df, 0x4e3a, 0x6f4d, 0x7ef4, 0x82c7, 0x840e, 0x59d4,
+    0x4f1f, 0x4f2a, 0x5c3e, 0x7eac, 0x672a, 0x851a, 0x5473, 0x754f,
+    0x80c3, 0x5582, 0x9b4f, 0x4f4d, 0x6e2d, 0x8c13, 0x5c09, 0x6170,
+    0x536b, 0x761f, 0x6e29, 0x868a, 0x6587, 0x95fb, 0x7eb9, 0x543b,
+    0x7a33, 0x7d0a, 0x95ee, 0x55e1, 0x7fc1, 0x74ee, 0x631d, 0x8717,
+    0x6da1, 0x7a9d, 0x6211, 0x65a1, 0x5367, 0x63e1, 0x6c83, 0x5deb,
+    0x545c, 0x94a8, 0x4e4c, 0x6c61, 0x8bec, 0x5c4b, 0x65e0, 0x829c,
+    0x68a7, 0x543e, 0x5434, 0x6bcb, 0x6b66, 0x4e94, 0x6342, 0x5348,
+    0x821e, 0x4f0d, 0x4fae, 0x575e, 0x620a, 0x96fe, 0x6664, 0x7269,
+    0x52ff, 0x52a1, 0x609f, 0x8bef, 0x6614, 0x7199, 0x6790, 0x897f,
+    0x7852, 0x77fd, 0x6670, 0x563b, 0x5438, 0x9521, 0x727a, 0x003f,
+    /* lead byte cf */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x87a5, 0x87a6, 0x87a7, 0x87a9, 0x87aa, 0x87ae, 0x87b0, 0x87b1,
+    0x87b2, 0x87b4, 0x87b6, 0x87b7, 0x87b8, 0x87b9, 0x87bb, 0x87bc,
+    0x87be, 0x87bf, 0x87c1, 0x87c2, 0x87c3, 0x87c4, 0x87c5, 0x87c7,
+    0x87c8, 0x87c9, 0x87cc, 0x87cd, 0x87ce, 0x87cf, 0x87d0, 0x87d4,
+    0x87d5, 0x87d6, 0x87d7, 0x87d8, 0x87d9, 0x87da, 0x87dc, 0x87dd,
+    0x87de, 0x87df, 0x87e1, 0x87e2, 0x87e3, 0x87e4, 0x87e6, 0x87e7,
+    0x87e8, 0x87e9, 0x87eb, 0x87ec, 0x87ed, 0x87ef, 0x87f0, 0x87f1,
+    0x87f2, 0x87f3, 0x87f4, 0x87f5, 0x87f6, 0x87f7, 0x87f8, 0x003f,
+    0x87fa, 0x87fb, 0x87fc, 0x87fd, 0x87ff, 0x8800, 0x8801, 0x8802,
+    0x8804, 0x8805, 0x8806, 0x8807, 0x8808, 0x8809, 0x880b, 0x880c,
+    0x880d, 0x880e, 0x880f, 0x8810, 0x8811, 0x8812, 0x8814, 0x8817,
+    0x8818, 0x8819, 0x881a, 0x881c, 0x881d, 0x881e, 0x881f, 0x8820,
+    0x8823, 0x7a00, 0x606f, 0x5e0c, 0x6089, 0x819d, 0x5915, 0x60dc,
+    0x7184, 0x70ef, 0x6eaa, 0x6c50, 0x7280, 0x6a84, 0x88ad, 0x5e2d,
+    0x4e60, 0x5ab3, 0x559c, 0x94e3, 0x6d17, 0x7cfb, 0x9699, 0x620f,
+    0x7ec6, 0x778e, 0x867e, 0x5323, 0x971e, 0x8f96, 0x6687, 0x5ce1,
+    0x4fa0, 0x72ed, 0x4e0b, 0x53a6, 0x590f, 0x5413, 0x6380, 0x9528,
+    0x5148, 0x4ed9, 0x9c9c, 0x7ea4, 0x54b8, 0x8d24, 0x8854, 0x8237,
+    0x95f2, 0x6d8e, 0x5f26, 0x5acc, 0x663e, 0x9669, 0x73b0, 0x732e,
+    0x53bf, 0x817a, 0x9985, 0x7fa1, 0x5baa, 0x9677, 0x9650, 0x7ebf,
+    0x76f8, 0x53a2, 0x9576, 0x9999, 0x7bb1, 0x8944, 0x6e58, 0x4e61,
+    0x7fd4, 0x7965, 0x8be6, 0x60f3, 0x54cd, 0x4eab, 0x9879, 0x5df7,
+    0x6a61, 0x50cf, 0x5411, 0x8c61, 0x8427, 0x785d, 0x9704, 0x524a,
+    0x54ee, 0x56a3, 0x9500, 0x6d88, 0x5bb5, 0x6dc6, 0x6653, 0x003f,
+    /* lead byte d0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8824, 0x8825, 0x8826, 0x8827, 0x8828, 0x8829, 0x882a, 0x882b,
+    0x882c, 0x882d, 0x882e, 0x882f, 0x8830, 0x8831, 0x8833, 0x8834,
+    0x8835, 0x8836, 0x8837, 0x8838, 0x883a, 0x883b, 0x883d, 0x883e,
+    0x883f, 0x8841, 0x8842, 0x8843, 0x8846, 0x8847, 0x8848, 0x8849,
+    0x884a, 0x884b, 0x884e, 0x884f, 0x8850, 0x8851, 0x8852, 0x8853,
+    0x8855, 0x8856, 0x8858, 0x885a, 0x885b, 0x885c, 0x885d, 0x885e,
+    0x885f, 0x8860, 0x8866, 0x8867, 0x886a, 0x886d, 0x886f, 0x8871,
+    0x8873, 0x8874, 0x8875, 0x8876, 0x8878, 0x8879, 0x887a, 0x003f,
+    0x887b, 0x887c, 0x8880, 0x8883, 0x8886, 0x8887, 0x8889, 0x888a,
+    0x888c, 0x888e, 0x888f, 0x8890, 0x8891, 0x8893, 0x8894, 0x8895,
+    0x8897, 0x8898, 0x8899, 0x889a, 0x889b, 0x889d, 0x889e, 0x889f,
+    0x88a0, 0x88a1, 0x88a3, 0x88a5, 0x88a6, 0x88a7, 0x88a8, 0x88a9,
+    0x88aa, 0x5c0f, 0x5b5d, 0x6821, 0x8096, 0x5578, 0x7b11, 0x6548,
+    0x6954, 0x4e9b, 0x6b47, 0x874e, 0x978b, 0x534f, 0x631f, 0x643a,
+    0x90aa, 0x659c, 0x80c1, 0x8c10, 0x5199, 0x68b0, 0x5378, 0x87f9,
+    0x61c8, 0x6cc4, 0x6cfb, 0x8c22, 0x5c51, 0x85aa, 0x82af, 0x950c,
+    0x6b23, 0x8f9b, 0x65b0, 0x5ffb, 0x5fc3, 0x4fe1, 0x8845, 0x661f,
+    0x8165, 0x7329, 0x60fa, 0x5174, 0x5211, 0x578b, 0x5f62, 0x90a2,
+    0x884c, 0x9192, 0x5e78, 0x674f, 0x6027, 0x59d3, 0x5144, 0x51f6,
+    0x80f8, 0x5308, 0x6c79, 0x96c4, 0x718a, 0x4f11, 0x4fee, 0x7f9e,
+    0x673d, 0x55c5, 0x9508, 0x79c0, 0x8896, 0x7ee3, 0x589f, 0x620c,
+    0x9700, 0x865a, 0x5618, 0x987b, 0x5f90, 0x8bb8, 0x84c4, 0x9157,
+    0x53d9, 0x65ed, 0x5e8f, 0x755c, 0x6064, 0x7d6e, 0x5a7f, 0x7eea,
+    0x7eed, 0x8f69, 0x55a7, 0x5ba3, 0x60ac, 0x65cb, 0x7384, 0x003f,
+    /* lead byte d1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x88ac, 0x88ae, 0x88af, 0x88b0, 0x88b2, 0x88b3, 0x88b4, 0x88b5,
+    0x88b6, 0x88b8, 0x88b9, 0x88ba, 0x88bb, 0x88bd, 0x88be, 0x88bf,
+    0x88c0, 0x88c3, 0x88c4, 0x88c7, 0x88c8, 0x88ca, 0x88cb, 0x88cc,
+    0x88cd, 0x88cf, 0x88d0, 0x88d1, 0x88d3, 0x88d6, 0x88d7, 0x88da,
+    0x88db, 0x88dc, 0x88dd, 0x88de, 0x88e0, 0x88e1, 0x88e6, 0x88e7,
+    0x88e9, 0x88ea, 0x88eb, 0x88ec, 0x88ed, 0x88ee, 0x88ef, 0x88f2,
+    0x88f5, 0x88f6, 0x88f7, 0x88fa, 0x88fb, 0x88fd, 0x88ff, 0x8900,
+    0x8901, 0x8903, 0x8904, 0x8905, 0x8906, 0x8907, 0x8908, 0x003f,
+    0x8909, 0x890b, 0x890c, 0x890d, 0x890e, 0x890f, 0x8911, 0x8914,
+    0x8915, 0x8916, 0x8917, 0x8918, 0x891c, 0x891d, 0x891e, 0x891f,
+    0x8920, 0x8922, 0x8923, 0x8924, 0x8926, 0x8927, 0x8928, 0x8929,
+    0x892c, 0x892d, 0x892e, 0x892f, 0x8931, 0x8932, 0x8933, 0x8935,
+    0x8937, 0x9009, 0x7663, 0x7729, 0x7eda, 0x9774, 0x859b, 0x5b66,
+    0x7a74, 0x96ea, 0x8840, 0x52cb, 0x718f, 0x5faa, 0x65ec, 0x8be2,
+    0x5bfb, 0x9a6f, 0x5de1, 0x6b89, 0x6c5b, 0x8bad, 0x8baf, 0x900a,
+    0x8fc5, 0x538b, 0x62bc, 0x9e26, 0x9e2d, 0x5440, 0x4e2b, 0x82bd,
+    0x7259, 0x869c, 0x5d16, 0x8859, 0x6daf, 0x96c5, 0x54d1, 0x4e9a,
+    0x8bb6, 0x7109, 0x54bd, 0x9609, 0x70df, 0x6df9, 0x76d0, 0x4e25,
+    0x7814, 0x8712, 0x5ca9, 0x5ef6, 0x8a00, 0x989c, 0x960e, 0x708e,
+    0x6cbf, 0x5944, 0x63a9, 0x773c, 0x884d, 0x6f14, 0x8273, 0x5830,
+    0x71d5, 0x538c, 0x781a, 0x96c1, 0x5501, 0x5f66, 0x7130, 0x5bb4,
+    0x8c1a, 0x9a8c, 0x6b83, 0x592e, 0x9e2f, 0x79e7, 0x6768, 0x626c,
+    0x4f6f, 0x75a1, 0x7f8a, 0x6d0b, 0x9633, 0x6c27, 0x4ef0, 0x75d2,
+    0x517b, 0x6837, 0x6f3e, 0x9080, 0x8170, 0x5996, 0x7476, 0x003f,
+    /* lead byte d2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8938, 0x8939, 0x893a, 0x893b, 0x893c, 0x893d, 0x893e, 0x893f,
+    0x8940, 0x8942, 0x8943, 0x8945, 0x8946, 0x8947, 0x8948, 0x8949,
+    0x894a, 0x894b, 0x894c, 0x894d, 0x894e, 0x894f, 0x8950, 0x8951,
+    0x8952, 0x8953, 0x8954, 0x8955, 0x8956, 0x8957, 0x8958, 0x8959,
+    0x895a, 0x895b, 0x895c, 0x895d, 0x8960, 0x8961, 0x8962, 0x8963,
+    0x8964, 0x8965, 0x8967, 0x8968, 0x8969, 0x896a, 0x896b, 0x896c,
+    0x896d, 0x896e, 0x896f, 0x8970, 0x8971, 0x8972, 0x8973, 0x8974,
+    0x8975, 0x8976, 0x8977, 0x8978, 0x8979, 0x897a, 0x897c, 0x003f,
+    0x897d, 0x897e, 0x8980, 0x8982, 0x8984, 0x8985, 0x8987, 0x8988,
+    0x8989, 0x898a, 0x898b, 0x898c, 0x898d, 0x898e, 0x898f, 0x8990,
+    0x8991, 0x8992, 0x8993, 0x8994, 0x8995, 0x8996, 0x8997, 0x8998,
+    0x8999, 0x899a, 0x899b, 0x899c, 0x899d, 0x899e, 0x899f, 0x89a0,
+    0x89a1, 0x6447, 0x5c27, 0x9065, 0x7a91, 0x8c23, 0x59da, 0x54ac,
+    0x8200, 0x836f, 0x8981, 0x8000, 0x6930, 0x564e, 0x8036, 0x7237,
+    0x91ce, 0x51b6, 0x4e5f, 0x9875, 0x6396, 0x4e1a, 0x53f6, 0x66f3,
+    0x814b, 0x591c, 0x6db2, 0x4e00, 0x58f9, 0x533b, 0x63d6, 0x94f1,
+    0x4f9d, 0x4f0a, 0x8863, 0x9890, 0x5937, 0x9057, 0x79fb, 0x4eea,
+    0x80f0, 0x7591, 0x6c82, 0x5b9c, 0x59e8, 0x5f5d, 0x6905, 0x8681,
+    0x501a, 0x5df2, 0x4e59, 0x77e3, 0x4ee5, 0x827a, 0x6291, 0x6613,
+    0x9091, 0x5c79, 0x4ebf, 0x5f79, 0x81c6, 0x9038, 0x8084, 0x75ab,
+    0x4ea6, 0x88d4, 0x610f, 0x6bc5, 0x5fc6, 0x4e49, 0x76ca, 0x6ea2,
+    0x8be3, 0x8bae, 0x8c0a, 0x8bd1, 0x5f02, 0x7ffc, 0x7fcc, 0x7ece,
+    0x8335, 0x836b, 0x56e0, 0x6bb7, 0x97f3, 0x9634, 0x59fb, 0x541f,
+    0x94f6, 0x6deb, 0x5bc5, 0x996e, 0x5c39, 0x5f15, 0x9690, 0x003f,
+    /* lead byte d3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x89a2, 0x89a3, 0x89a4, 0x89a5, 0x89a6, 0x89a7, 0x89a8, 0x89a9,
+    0x89aa, 0x89ab, 0x89ac, 0x89ad, 0x89ae, 0x89af, 0x89b0, 0x89b1,
+    0x89b2, 0x89b3, 0x89b4, 0x89b5, 0x89b6, 0x89b7, 0x89b8, 0x89b9,
+    0x89ba, 0x89bb, 0x89bc, 0x89bd, 0x89be, 0x89bf, 0x89c0, 0x89c3,
+    0x89cd, 0x89d3, 0x89d4, 0x89d5, 0x89d7, 0x89d8, 0x89d9, 0x89db,
+    0x89dd, 0x89df, 0x89e0, 0x89e1, 0x89e2, 0x89e4, 0x89e7, 0x89e8,
+    0x89e9, 0x89ea, 0x89ec, 0x89ed, 0x89ee, 0x89f0, 0x89f1, 0x89f2,
+    0x89f4, 0x89f5, 0x89f6, 0x89f7, 0x89f8, 0x89f9, 0x89fa, 0x003f,
+    0x89fb, 0x89fc, 0x89fd, 0x89fe, 0x89ff, 0x8a01, 0x8a02, 0x8a03,
+    0x8a04, 0x8a05, 0x8a06, 0x8a08, 0x8a09, 0x8a0a, 0x8a0b, 0x8a0c,
+    0x8a0d, 0x8a0e, 0x8a0f, 0x8a10, 0x8a11, 0x8a12, 0x8a13, 0x8a14,
+    0x8a15, 0x8a16, 0x8a17, 0x8a18, 0x8a19, 0x8a1a, 0x8a1b, 0x8a1c,
+    0x8a1d, 0x5370, 0x82f1, 0x6a31, 0x5a74, 0x9e70, 0x5e94, 0x7f28,
+    0x83b9, 0x8424, 0x8425, 0x8367, 0x8747, 0x8fce, 0x8d62, 0x76c8,
+    0x5f71, 0x9896, 0x786c, 0x6620, 0x54df, 0x62e5, 0x4f63, 0x81c3,
+    0x75c8, 0x5eb8, 0x96cd, 0x8e0a, 0x86f9, 0x548f, 0x6cf3, 0x6d8c,
+    0x6c38, 0x607f, 0x52c7, 0x7528, 0x5e7d, 0x4f18, 0x60a0, 0x5fe7,
+    0x5c24, 0x7531, 0x90ae, 0x94c0, 0x72b9, 0x6cb9, 0x6e38, 0x9149,
+    0x6709, 0x53cb, 0x53f3, 0x4f51, 0x91c9, 0x8bf1, 0x53c8, 0x5e7c,
+    0x8fc2, 0x6de4, 0x4e8e, 0x76c2, 0x6986, 0x865e, 0x611a, 0x8206,
+    0x4f59, 0x4fde, 0x903e, 0x9c7c, 0x6109, 0x6e1d, 0x6e14, 0x9685,
+    0x4e88, 0x5a31, 0x96e8, 0x4e0e, 0x5c7f, 0x79b9, 0x5b87, 0x8bed,
+    0x7fbd, 0x7389, 0x57df, 0x828b, 0x90c1, 0x5401, 0x9047, 0x55bb,
+    0x5cea, 0x5fa1, 0x6108, 0x6b32, 0x72f1, 0x80b2, 0x8a89, 0x003f,
+    /* lead byte d4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8a1e, 0x8a1f, 0x8a20, 0x8a21, 0x8a22, 0x8a23, 0x8a24, 0x8a25,
+    0x8a26, 0x8a27, 0x8a28, 0x8a29, 0x8a2a, 0x8a2b, 0x8a2c, 0x8a2d,
+    0x8a2e, 0x8a2f, 0x8a30, 0x8a31, 0x8a32, 0x8a33, 0x8a34, 0x8a35,
+    0x8a36, 0x8a37, 0x8a38, 0x8a39, 0x8a3a, 0x8a3b, 0x8a3c, 0x8a3d,
+    0x8a3f, 0x8a40, 0x8a41, 0x8a42, 0x8a43, 0x8a44, 0x8a45, 0x8a46,
+    0x8a47, 0x8a49, 0x8a4a, 0x8a4b, 0x8a4c, 0x8a4d, 0x8a4e, 0x8a4f,
+    0x8a50, 0x8a51, 0x8a52, 0x8a53, 0x8a54, 0x8a55, 0x8a56, 0x8a57,
+    0x8a58, 0x8a59, 0x8a5a, 0x8a5b, 0x8a5c, 0x8a5d, 0x8a5e, 0x003f,
+    0x8a5f, 0x8a60, 0x8a61, 0x8a62, 0x8a63, 0x8a64, 0x8a65, 0x8a66,
+    0x8a67, 0x8a68, 0x8a69, 0x8a6a, 0x8a6b, 0x8a6c, 0x8a6d, 0x8a6e,
+    0x8a6f, 0x8a70, 0x8a71, 0x8a72, 0x8a73, 0x8a74, 0x8a75, 0x8a76,
+    0x8a77, 0x8a78, 0x8a7a, 0x8a7b, 0x8a7c, 0x8a7d, 0x8a7e, 0x8a7f,
+    0x8a80, 0x6d74, 0x5bd3, 0x88d5, 0x9884, 0x8c6b, 0x9a6d, 0x9e33,
+    0x6e0a, 0x51a4, 0x5143, 0x57a3, 0x8881, 0x539f, 0x63f4, 0x8f95,
+    0x56ed, 0x5458, 0x5706, 0x733f, 0x6e90, 0x7f18, 0x8fdc, 0x82d1,
+    0x613f, 0x6028, 0x9662, 0x66f0, 0x7ea6, 0x8d8a, 0x8dc3, 0x94a5,
+    0x5cb3, 0x7ca4, 0x6708, 0x60a6, 0x9605, 0x8018, 0x4e91, 0x90e7,
+    0x5300, 0x9668, 0x5141, 0x8fd0, 0x8574, 0x915d, 0x6655, 0x97f5,
+    0x5b55, 0x531d, 0x7838, 0x6742, 0x683d, 0x54c9, 0x707e, 0x5bb0,
+    0x8f7d, 0x518d, 0x5728, 0x54b1, 0x6512, 0x6682, 0x8d5e, 0x8d43,
+    0x810f, 0x846c, 0x906d, 0x7cdf, 0x51ff, 0x85fb, 0x67a3, 0x65e9,
+    0x6fa1, 0x86a4, 0x8e81, 0x566a, 0x9020, 0x7682, 0x7076, 0x71e5,
+    0x8d23, 0x62e9, 0x5219, 0x6cfd, 0x8d3c, 0x600e, 0x589e, 0x618e,
+    0x66fe, 0x8d60, 0x624e, 0x55b3, 0x6e23, 0x672d, 0x8f67, 0x003f,
+    /* lead byte d5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8a81, 0x8a82, 0x8a83, 0x8a84, 0x8a85, 0x8a86, 0x8a87, 0x8a88,
+    0x8a8b, 0x8a8c, 0x8a8d, 0x8a8e, 0x8a8f, 0x8a90, 0x8a91, 0x8a92,
+    0x8a94, 0x8a95, 0x8a96, 0x8a97, 0x8a98, 0x8a99, 0x8a9a, 0x8a9b,
+    0x8a9c, 0x8a9d, 0x8a9e, 0x8a9f, 0x8aa0, 0x8aa1, 0x8aa2, 0x8aa3,
+    0x8aa4, 0x8aa5, 0x8aa6, 0x8aa7, 0x8aa8, 0x8aa9, 0x8aaa, 0x8aab,
+    0x8aac, 0x8aad, 0x8aae, 0x8aaf, 0x8ab0, 0x8ab1, 0x8ab2, 0x8ab3,
+    0x8ab4, 0x8ab5, 0x8ab6, 0x8ab7, 0x8ab8, 0x8ab9, 0x8aba, 0x8abb,
+    0x8abc, 0x8abd, 0x8abe, 0x8abf, 0x8ac0, 0x8ac1, 0x8ac2, 0x003f,
+    0x8ac3, 0x8ac4, 0x8ac5, 0x8ac6, 0x8ac7, 0x8ac8, 0x8ac9, 0x8aca,
+    0x8acb, 0x8acc, 0x8acd, 0x8ace, 0x8acf, 0x8ad0, 0x8ad1, 0x8ad2,
+    0x8ad3, 0x8ad4, 0x8ad5, 0x8ad6, 0x8ad7, 0x8ad8, 0x8ad9, 0x8ada,
+    0x8adb, 0x8adc, 0x8add, 0x8ade, 0x8adf, 0x8ae0, 0x8ae1, 0x8ae2,
+    0x8ae3, 0x94e1, 0x95f8, 0x7728, 0x6805, 0x69a8, 0x548b, 0x4e4d,
+    0x70b8, 0x8bc8, 0x6458, 0x658b, 0x5b85, 0x7a84, 0x503a, 0x5be8,
+    0x77bb, 0x6be1, 0x8a79, 0x7c98, 0x6cbe, 0x76cf, 0x65a9, 0x8f97,
+    0x5d2d, 0x5c55, 0x8638, 0x6808, 0x5360, 0x6218, 0x7ad9, 0x6e5b,
+    0x7efd, 0x6a1f, 0x7ae0, 0x5f70, 0x6f33, 0x5f20, 0x638c, 0x6da8,
+    0x6756, 0x4e08, 0x5e10, 0x8d26, 0x4ed7, 0x80c0, 0x7634, 0x969c,
+    0x62db, 0x662d, 0x627e, 0x6cbc, 0x8d75, 0x7167, 0x7f69, 0x5146,
+    0x8087, 0x53ec, 0x906e, 0x6298, 0x54f2, 0x86f0, 0x8f99, 0x8005,
+    0x9517, 0x8517, 0x8fd9, 0x6d59, 0x73cd, 0x659f, 0x771f, 0x7504,
+    0x7827, 0x81fb, 0x8d1e, 0x9488, 0x4fa6, 0x6795, 0x75b9, 0x8bca,
+    0x9707, 0x632f, 0x9547, 0x9635, 0x84b8, 0x6323, 0x7741, 0x5f81,
+    0x72f0, 0x4e89, 0x6014, 0x6574, 0x62ef, 0x6b63, 0x653f, 0x003f,
+    /* lead byte d6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8ae4, 0x8ae5, 0x8ae6, 0x8ae7, 0x8ae8, 0x8ae9, 0x8aea, 0x8aeb,
+    0x8aec, 0x8aed, 0x8aee, 0x8aef, 0x8af0, 0x8af1, 0x8af2, 0x8af3,
+    0x8af4, 0x8af5, 0x8af6, 0x8af7, 0x8af8, 0x8af9, 0x8afa, 0x8afb,
+    0x8afc, 0x8afd, 0x8afe, 0x8aff, 0x8b00, 0x8b01, 0x8b02, 0x8b03,
+    0x8b04, 0x8b05, 0x8b06, 0x8b08, 0x8b09, 0x8b0a, 0x8b0b, 0x8b0c,
+    0x8b0d, 0x8b0e, 0x8b0f, 0x8b10, 0x8b11, 0x8b12, 0x8b13, 0x8b14,
+    0x8b15, 0x8b16, 0x8b17, 0x8b18, 0x8b19, 0x8b1a, 0x8b1b, 0x8b1c,
+    0x8b1d, 0x8b1e, 0x8b1f, 0x8b20, 0x8b21, 0x8b22, 0x8b23, 0x003f,
+    0x8b24, 0x8b25, 0x8b27, 0x8b28, 0x8b29, 0x8b2a, 0x8b2b, 0x8b2c,
+    0x8b2d, 0x8b2e, 0x8b2f, 0x8b30, 0x8b31, 0x8b32, 0x8b33, 0x8b34,
+    0x8b35, 0x8b36, 0x8b37, 0x8b38, 0x8b39, 0x8b3a, 0x8b3b, 0x8b3c,
+    0x8b3d, 0x8b3e, 0x8b3f, 0x8b40, 0x8b41, 0x8b42, 0x8b43, 0x8b44,
+    0x8b45, 0x5e27, 0x75c7, 0x90d1, 0x8bc1, 0x829d, 0x679d, 0x652f,
+    0x5431, 0x8718, 0x77e5, 0x80a2, 0x8102, 0x6c41, 0x4e4b, 0x7ec7,
+    0x804c, 0x76f4, 0x690d, 0x6b96, 0x6267, 0x503c, 0x4f84, 0x5740,
+    0x6307, 0x6b62, 0x8dbe, 0x53ea, 0x65e8, 0x7eb8, 0x5fd7, 0x631a,
+    0x63b7, 0x81f3, 0x81f4, 0x7f6e, 0x5e1c, 0x5cd9, 0x5236, 0x667a,
+    0x79e9, 0x7a1a, 0x8d28, 0x7099, 0x75d4, 0x6ede, 0x6cbb, 0x7a92,
+    0x4e2d, 0x76c5, 0x5fe0, 0x949f, 0x8877, 0x7ec8, 0x79cd, 0x80bf,
+    0x91cd, 0x4ef2, 0x4f17, 0x821f, 0x5468, 0x5dde, 0x6d32, 0x8bcc,
+    0x7ca5, 0x8f74, 0x8098, 0x5e1a, 0x5492, 0x76b1, 0x5b99, 0x663c,
+    0x9aa4, 0x73e0, 0x682a, 0x86db, 0x6731, 0x732a, 0x8bf8, 0x8bdb,
+    0x9010, 0x7af9, 0x70db, 0x716e, 0x62c4, 0x77a9, 0x5631, 0x4e3b,
+    0x8457, 0x67f1, 0x52a9, 0x86c0, 0x8d2e, 0x94f8, 0x7b51, 0x003f,
+    /* lead byte d7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8b46, 0x8b47, 0x8b48, 0x8b49, 0x8b4a, 0x8b4b, 0x8b4c, 0x8b4d,
+    0x8b4e, 0x8b4f, 0x8b50, 0x8b51, 0x8b52, 0x8b53, 0x8b54, 0x8b55,
+    0x8b56, 0x8b57, 0x8b58, 0x8b59, 0x8b5a, 0x8b5b, 0x8b5c, 0x8b5d,
+    0x8b5e, 0x8b5f, 0x8b60, 0x8b61, 0x8b62, 0x8b63, 0x8b64, 0x8b65,
+    0x8b67, 0x8b68, 0x8b69, 0x8b6a, 0x8b6b, 0x8b6d, 0x8b6e, 0x8b6f,
+    0x8b70, 0x8b71, 0x8b72, 0x8b73, 0x8b74, 0x8b75, 0x8b76, 0x8b77,
+    0x8b78, 0x8b79, 0x8b7a, 0x8b7b, 0x8b7c, 0x8b7d, 0x8b7e, 0x8b7f,
+    0x8b80, 0x8b81, 0x8b82, 0x8b83, 0x8b84, 0x8b85, 0x8b86, 0x003f,
+    0x8b87, 0x8b88, 0x8b89, 0x8b8a, 0x8b8b, 0x8b8c, 0x8b8d, 0x8b8e,
+    0x8b8f, 0x8b90, 0x8b91, 0x8b92, 0x8b93, 0x8b94, 0x8b95, 0x8b96,
+    0x8b97, 0x8b98, 0x8b99, 0x8b9a, 0x8b9b, 0x8b9c, 0x8b9d, 0x8b9e,
+    0x8b9f, 0x8bac, 0x8bb1, 0x8bbb, 0x8bc7, 0x8bd0, 0x8bea, 0x8c09,
+    0x8c1e, 0x4f4f, 0x6ce8, 0x795d, 0x9a7b, 0x6293, 0x722a, 0x62fd,
+    0x4e13, 0x7816, 0x8f6c, 0x64b0, 0x8d5a, 0x7bc6, 0x6869, 0x5e84,
+    0x88c5, 0x5986, 0x649e, 0x58ee, 0x72b6, 0x690e, 0x9525, 0x8ffd,
+    0x8d58, 0x5760, 0x7f00, 0x8c06, 0x51c6, 0x6349, 0x62d9, 0x5353,
+    0x684c, 0x7422, 0x8301, 0x914c, 0x5544, 0x7740, 0x707c, 0x6d4a,
+    0x5179, 0x54a8, 0x8d44, 0x59ff, 0x6ecb, 0x6dc4, 0x5b5c, 0x7d2b,
+    0x4ed4, 0x7c7d, 0x6ed3, 0x5b50, 0x81ea, 0x6e0d, 0x5b57, 0x9b03,
+    0x68d5, 0x8e2a, 0x5b97, 0x7efc, 0x603b, 0x7eb5, 0x90b9, 0x8d70,
+    0x594f, 0x63cd, 0x79df, 0x8db3, 0x5352, 0x65cf, 0x7956, 0x8bc5,
+    0x963b, 0x7ec4, 0x94bb, 0x7e82, 0x5634, 0x9189, 0x6700, 0x7f6a,
+    0x5c0a, 0x9075, 0x6628, 0x5de6, 0x4f50, 0x67de, 0x505a, 0x4f5c,
+    0x5750, 0x5ea7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte d8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8c38, 0x8c39, 0x8c3a, 0x8c3b, 0x8c3c, 0x8c3d, 0x8c3e, 0x8c3f,
+    0x8c40, 0x8c42, 0x8c43, 0x8c44, 0x8c45, 0x8c48, 0x8c4a, 0x8c4b,
+    0x8c4d, 0x8c4e, 0x8c4f, 0x8c50, 0x8c51, 0x8c52, 0x8c53, 0x8c54,
+    0x8c56, 0x8c57, 0x8c58, 0x8c59, 0x8c5b, 0x8c5c, 0x8c5d, 0x8c5e,
+    0x8c5f, 0x8c60, 0x8c63, 0x8c64, 0x8c65, 0x8c66, 0x8c67, 0x8c68,
+    0x8c69, 0x8c6c, 0x8c6d, 0x8c6e, 0x8c6f, 0x8c70, 0x8c71, 0x8c72,
+    0x8c74, 0x8c75, 0x8c76, 0x8c77, 0x8c7b, 0x8c7c, 0x8c7d, 0x8c7e,
+    0x8c7f, 0x8c80, 0x8c81, 0x8c83, 0x8c84, 0x8c86, 0x8c87, 0x003f,
+    0x8c88, 0x8c8b, 0x8c8d, 0x8c8e, 0x8c8f, 0x8c90, 0x8c91, 0x8c92,
+    0x8c93, 0x8c95, 0x8c96, 0x8c97, 0x8c99, 0x8c9a, 0x8c9b, 0x8c9c,
+    0x8c9d, 0x8c9e, 0x8c9f, 0x8ca0, 0x8ca1, 0x8ca2, 0x8ca3, 0x8ca4,
+    0x8ca5, 0x8ca6, 0x8ca7, 0x8ca8, 0x8ca9, 0x8caa, 0x8cab, 0x8cac,
+    0x8cad, 0x4e8d, 0x4e0c, 0x5140, 0x4e10, 0x5eff, 0x5345, 0x4e15,
+    0x4e98, 0x4e1e, 0x9b32, 0x5b6c, 0x5669, 0x4e28, 0x79ba, 0x4e3f,
+    0x5315, 0x4e47, 0x592d, 0x723b, 0x536e, 0x6c10, 0x56df, 0x80e4,
+    0x9997, 0x6bd3, 0x777e, 0x9f17, 0x4e36, 0x4e9f, 0x9f10, 0x4e5c,
+    0x4e69, 0x4e93, 0x8288, 0x5b5b, 0x556c, 0x560f, 0x4ec4, 0x538d,
+    0x539d, 0x53a3, 0x53a5, 0x53ae, 0x9765, 0x8d5d, 0x531a, 0x53f5,
+    0x5326, 0x532e, 0x533e, 0x8d5c, 0x5366, 0x5363, 0x5202, 0x5208,
+    0x520e, 0x522d, 0x5233, 0x523f, 0x5240, 0x524c, 0x525e, 0x5261,
+    0x525c, 0x84af, 0x527d, 0x5282, 0x5281, 0x5290, 0x5293, 0x5182,
+    0x7f54, 0x4ebb, 0x4ec3, 0x4ec9, 0x4ec2, 0x4ee8, 0x4ee1, 0x4eeb,
+    0x4ede, 0x4f1b, 0x4ef3, 0x4f22, 0x4f64, 0x4ef5, 0x4f25, 0x4f27,
+    0x4f09, 0x4f2b, 0x4f5e, 0x4f67, 0x6538, 0x4f5a, 0x4f5d, 0x003f,
+    /* lead byte d9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8cae, 0x8caf, 0x8cb0, 0x8cb1, 0x8cb2, 0x8cb3, 0x8cb4, 0x8cb5,
+    0x8cb6, 0x8cb7, 0x8cb8, 0x8cb9, 0x8cba, 0x8cbb, 0x8cbc, 0x8cbd,
+    0x8cbe, 0x8cbf, 0x8cc0, 0x8cc1, 0x8cc2, 0x8cc3, 0x8cc4, 0x8cc5,
+    0x8cc6, 0x8cc7, 0x8cc8, 0x8cc9, 0x8cca, 0x8ccb, 0x8ccc, 0x8ccd,
+    0x8cce, 0x8ccf, 0x8cd0, 0x8cd1, 0x8cd2, 0x8cd3, 0x8cd4, 0x8cd5,
+    0x8cd6, 0x8cd7, 0x8cd8, 0x8cd9, 0x8cda, 0x8cdb, 0x8cdc, 0x8cdd,
+    0x8cde, 0x8cdf, 0x8ce0, 0x8ce1, 0x8ce2, 0x8ce3, 0x8ce4, 0x8ce5,
+    0x8ce6, 0x8ce7, 0x8ce8, 0x8ce9, 0x8cea, 0x8ceb, 0x8cec, 0x003f,
+    0x8ced, 0x8cee, 0x8cef, 0x8cf0, 0x8cf1, 0x8cf2, 0x8cf3, 0x8cf4,
+    0x8cf5, 0x8cf6, 0x8cf7, 0x8cf8, 0x8cf9, 0x8cfa, 0x8cfb, 0x8cfc,
+    0x8cfd, 0x8cfe, 0x8cff, 0x8d00, 0x8d01, 0x8d02, 0x8d03, 0x8d04,
+    0x8d05, 0x8d06, 0x8d07, 0x8d08, 0x8d09, 0x8d0a, 0x8d0b, 0x8d0c,
+    0x8d0d, 0x4f5f, 0x4f57, 0x4f32, 0x4f3d, 0x4f76, 0x4f74, 0x4f91,
+    0x4f89, 0x4f83, 0x4f8f, 0x4f7e, 0x4f7b, 0x4faa, 0x4f7c, 0x4fac,
+    0x4f94, 0x4fe6, 0x4fe8, 0x4fea, 0x4fc5, 0x4fda, 0x4fe3, 0x4fdc,
+    0x4fd1, 0x4fdf, 0x4ff8, 0x5029, 0x504c, 0x4ff3, 0x502c, 0x500f,
+    0x502e, 0x502d, 0x4ffe, 0x501c, 0x500c, 0x5025, 0x5028, 0x507e,
+    0x5043, 0x5055, 0x5048, 0x504e, 0x506c, 0x507b, 0x50a5, 0x50a7,
+    0x50a9, 0x50ba, 0x50d6, 0x5106, 0x50ed, 0x50ec, 0x50e6, 0x50ee,
+    0x5107, 0x510b, 0x4edd, 0x6c3d, 0x4f58, 0x4f65, 0x4fce, 0x9fa0,
+    0x6c46, 0x7c74, 0x516e, 0x5dfd, 0x9ec9, 0x9998, 0x5181, 0x5914,
+    0x52f9, 0x530d, 0x8a07, 0x5310, 0x51eb, 0x5919, 0x5155, 0x4ea0,
+    0x5156, 0x4eb3, 0x886e, 0x88a4, 0x4eb5, 0x8114, 0x88d2, 0x7980,
+    0x5b34, 0x8803, 0x7fb8, 0x51ab, 0x51b1, 0x51bd, 0x51bc, 0x003f,
+    /* lead byte da */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8d0e, 0x8d0f, 0x8d10, 0x8d11, 0x8d12, 0x8d13, 0x8d14, 0x8d15,
+    0x8d16, 0x8d17, 0x8d18, 0x8d19, 0x8d1a, 0x8d1b, 0x8d1c, 0x8d20,
+    0x8d51, 0x8d52, 0x8d57, 0x8d5f, 0x8d65, 0x8d68, 0x8d69, 0x8d6a,
+    0x8d6c, 0x8d6e, 0x8d6f, 0x8d71, 0x8d72, 0x8d78, 0x8d79, 0x8d7a,
+    0x8d7b, 0x8d7c, 0x8d7d, 0x8d7e, 0x8d7f, 0x8d80, 0x8d82, 0x8d83,
+    0x8d86, 0x8d87, 0x8d88, 0x8d89, 0x8d8c, 0x8d8d, 0x8d8e, 0x8d8f,
+    0x8d90, 0x8d92, 0x8d93, 0x8d95, 0x8d96, 0x8d97, 0x8d98, 0x8d99,
+    0x8d9a, 0x8d9b, 0x8d9c, 0x8d9d, 0x8d9e, 0x8da0, 0x8da1, 0x003f,
+    0x8da2, 0x8da4, 0x8da5, 0x8da6, 0x8da7, 0x8da8, 0x8da9, 0x8daa,
+    0x8dab, 0x8dac, 0x8dad, 0x8dae, 0x8daf, 0x8db0, 0x8db2, 0x8db6,
+    0x8db7, 0x8db9, 0x8dbb, 0x8dbd, 0x8dc0, 0x8dc1, 0x8dc2, 0x8dc5,
+    0x8dc7, 0x8dc8, 0x8dc9, 0x8dca, 0x8dcd, 0x8dd0, 0x8dd2, 0x8dd3,
+    0x8dd4, 0x51c7, 0x5196, 0x51a2, 0x51a5, 0x8ba0, 0x8ba6, 0x8ba7,
+    0x8baa, 0x8bb4, 0x8bb5, 0x8bb7, 0x8bc2, 0x8bc3, 0x8bcb, 0x8bcf,
+    0x8bce, 0x8bd2, 0x8bd3, 0x8bd4, 0x8bd6, 0x8bd8, 0x8bd9, 0x8bdc,
+    0x8bdf, 0x8be0, 0x8be4, 0x8be8, 0x8be9, 0x8bee, 0x8bf0, 0x8bf3,
+    0x8bf6, 0x8bf9, 0x8bfc, 0x8bff, 0x8c00, 0x8c02, 0x8c04, 0x8c07,
+    0x8c0c, 0x8c0f, 0x8c11, 0x8c12, 0x8c14, 0x8c15, 0x8c16, 0x8c19,
+    0x8c1b, 0x8c18, 0x8c1d, 0x8c1f, 0x8c20, 0x8c21, 0x8c25, 0x8c27,
+    0x8c2a, 0x8c2b, 0x8c2e, 0x8c2f, 0x8c32, 0x8c33, 0x8c35, 0x8c36,
+    0x5369, 0x537a, 0x961d, 0x9622, 0x9621, 0x9631, 0x962a, 0x963d,
+    0x963c, 0x9642, 0x9649, 0x9654, 0x965f, 0x9667, 0x966c, 0x9672,
+    0x9674, 0x9688, 0x968d, 0x9697, 0x96b0, 0x9097, 0x909b, 0x909d,
+    0x9099, 0x90ac, 0x90a1, 0x90b4, 0x90b3, 0x90b6, 0x90ba, 0x003f,
+    /* lead byte db */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8dd5, 0x8dd8, 0x8dd9, 0x8ddc, 0x8de0, 0x8de1, 0x8de2, 0x8de5,
+    0x8de6, 0x8de7, 0x8de9, 0x8ded, 0x8dee, 0x8df0, 0x8df1, 0x8df2,
+    0x8df4, 0x8df6, 0x8dfc, 0x8dfe, 0x8dff, 0x8e00, 0x8e01, 0x8e02,
+    0x8e03, 0x8e04, 0x8e06, 0x8e07, 0x8e08, 0x8e0b, 0x8e0d, 0x8e0e,
+    0x8e10, 0x8e11, 0x8e12, 0x8e13, 0x8e15, 0x8e16, 0x8e17, 0x8e18,
+    0x8e19, 0x8e1a, 0x8e1b, 0x8e1c, 0x8e20, 0x8e21, 0x8e24, 0x8e25,
+    0x8e26, 0x8e27, 0x8e28, 0x8e2b, 0x8e2d, 0x8e30, 0x8e32, 0x8e33,
+    0x8e34, 0x8e36, 0x8e37, 0x8e38, 0x8e3b, 0x8e3c, 0x8e3e, 0x003f,
+    0x8e3f, 0x8e43, 0x8e45, 0x8e46, 0x8e4c, 0x8e4d, 0x8e4e, 0x8e4f,
+    0x8e50, 0x8e53, 0x8e54, 0x8e55, 0x8e56, 0x8e57, 0x8e58, 0x8e5a,
+    0x8e5b, 0x8e5c, 0x8e5d, 0x8e5e, 0x8e5f, 0x8e60, 0x8e61, 0x8e62,
+    0x8e63, 0x8e64, 0x8e65, 0x8e67, 0x8e68, 0x8e6a, 0x8e6b, 0x8e6e,
+    0x8e71, 0x90b8, 0x90b0, 0x90cf, 0x90c5, 0x90be, 0x90d0, 0x90c4,
+    0x90c7, 0x90d3, 0x90e6, 0x90e2, 0x90dc, 0x90d7, 0x90db, 0x90eb,
+    0x90ef, 0x90fe, 0x9104, 0x9122, 0x911e, 0x9123, 0x9131, 0x912f,
+    0x9139, 0x9143, 0x9146, 0x520d, 0x5942, 0x52a2, 0x52ac, 0x52ad,
+    0x52be, 0x54ff, 0x52d0, 0x52d6, 0x52f0, 0x53df, 0x71ee, 0x77cd,
+    0x5ef4, 0x51f5, 0x51fc, 0x9b2f, 0x53b6, 0x5f01, 0x755a, 0x5def,
+    0x574c, 0x57a9, 0x57a1, 0x587e, 0x58bc, 0x58c5, 0x58d1, 0x5729,
+    0x572c, 0x572a, 0x5733, 0x5739, 0x572e, 0x572f, 0x575c, 0x573b,
+    0x5742, 0x5769, 0x5785, 0x576b, 0x5786, 0x577c, 0x577b, 0x5768,
+    0x576d, 0x5776, 0x5773, 0x57ad, 0x57a4, 0x578c, 0x57b2, 0x57cf,
+    0x57a7, 0x57b4, 0x5793, 0x57a0, 0x57d5, 0x57d8, 0x57da, 0x57d9,
+    0x57d2, 0x57b8, 0x57f4, 0x57ef, 0x57f8, 0x57e4, 0x57dd, 0x003f,
+    /* lead byte dc */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8e73, 0x8e75, 0x8e77, 0x8e78, 0x8e79, 0x8e7a, 0x8e7b, 0x8e7d,
+    0x8e7e, 0x8e80, 0x8e82, 0x8e83, 0x8e84, 0x8e86, 0x8e88, 0x8e89,
+    0x8e8a, 0x8e8b, 0x8e8c, 0x8e8d, 0x8e8e, 0x8e91, 0x8e92, 0x8e93,
+    0x8e95, 0x8e96, 0x8e97, 0x8e98, 0x8e99, 0x8e9a, 0x8e9b, 0x8e9d,
+    0x8e9f, 0x8ea0, 0x8ea1, 0x8ea2, 0x8ea3, 0x8ea4, 0x8ea5, 0x8ea6,
+    0x8ea7, 0x8ea8, 0x8ea9, 0x8eaa, 0x8ead, 0x8eae, 0x8eb0, 0x8eb1,
+    0x8eb3, 0x8eb4, 0x8eb5, 0x8eb6, 0x8eb7, 0x8eb8, 0x8eb9, 0x8ebb,
+    0x8ebc, 0x8ebd, 0x8ebe, 0x8ebf, 0x8ec0, 0x8ec1, 0x8ec2, 0x003f,
+    0x8ec3, 0x8ec4, 0x8ec5, 0x8ec6, 0x8ec7, 0x8ec8, 0x8ec9, 0x8eca,
+    0x8ecb, 0x8ecc, 0x8ecd, 0x8ecf, 0x8ed0, 0x8ed1, 0x8ed2, 0x8ed3,
+    0x8ed4, 0x8ed5, 0x8ed6, 0x8ed7, 0x8ed8, 0x8ed9, 0x8eda, 0x8edb,
+    0x8edc, 0x8edd, 0x8ede, 0x8edf, 0x8ee0, 0x8ee1, 0x8ee2, 0x8ee3,
+    0x8ee4, 0x580b, 0x580d, 0x57fd, 0x57ed, 0x5800, 0x581e, 0x5819,
+    0x5844, 0x5820, 0x5865, 0x586c, 0x5881, 0x5889, 0x589a, 0x5880,
+    0x99a8, 0x9f19, 0x61ff, 0x8279, 0x827d, 0x827f, 0x828f, 0x828a,
+    0x82a8, 0x8284, 0x828e, 0x8291, 0x8297, 0x8299, 0x82ab, 0x82b8,
+    0x82be, 0x82b0, 0x82c8, 0x82ca, 0x82e3, 0x8298, 0x82b7, 0x82ae,
+    0x82cb, 0x82cc, 0x82c1, 0x82a9, 0x82b4, 0x82a1, 0x82aa, 0x829f,
+    0x82c4, 0x82ce, 0x82a4, 0x82e1, 0x8309, 0x82f7, 0x82e4, 0x830f,
+    0x8307, 0x82dc, 0x82f4, 0x82d2, 0x82d8, 0x830c, 0x82fb, 0x82d3,
+    0x8311, 0x831a, 0x8306, 0x8314, 0x8315, 0x82e0, 0x82d5, 0x831c,
+    0x8351, 0x835b, 0x835c, 0x8308, 0x8392, 0x833c, 0x8334, 0x8331,
+    0x839b, 0x835e, 0x832f, 0x834f, 0x8347, 0x8343, 0x835f, 0x8340,
+    0x8317, 0x8360, 0x832d, 0x833a, 0x8333, 0x8366, 0x8365, 0x003f,
+    /* lead byte dd */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8ee5, 0x8ee6, 0x8ee7, 0x8ee8, 0x8ee9, 0x8eea, 0x8eeb, 0x8eec,
+    0x8eed, 0x8eee, 0x8eef, 0x8ef0, 0x8ef1, 0x8ef2, 0x8ef3, 0x8ef4,
+    0x8ef5, 0x8ef6, 0x8ef7, 0x8ef8, 0x8ef9, 0x8efa, 0x8efb, 0x8efc,
+    0x8efd, 0x8efe, 0x8eff, 0x8f00, 0x8f01, 0x8f02, 0x8f03, 0x8f04,
+    0x8f05, 0x8f06, 0x8f07, 0x8f08, 0x8f09, 0x8f0a, 0x8f0b, 0x8f0c,
+    0x8f0d, 0x8f0e, 0x8f0f, 0x8f10, 0x8f11, 0x8f12, 0x8f13, 0x8f14,
+    0x8f15, 0x8f16, 0x8f17, 0x8f18, 0x8f19, 0x8f1a, 0x8f1b, 0x8f1c,
+    0x8f1d, 0x8f1e, 0x8f1f, 0x8f20, 0x8f21, 0x8f22, 0x8f23, 0x003f,
+    0x8f24, 0x8f25, 0x8f26, 0x8f27, 0x8f28, 0x8f29, 0x8f2a, 0x8f2b,
+    0x8f2c, 0x8f2d, 0x8f2e, 0x8f2f, 0x8f30, 0x8f31, 0x8f32, 0x8f33,
+    0x8f34, 0x8f35, 0x8f36, 0x8f37, 0x8f38, 0x8f39, 0x8f3a, 0x8f3b,
+    0x8f3c, 0x8f3d, 0x8f3e, 0x8f3f, 0x8f40, 0x8f41, 0x8f42, 0x8f43,
+    0x8f44, 0x8368, 0x831b, 0x8369, 0x836c, 0x836a, 0x836d, 0x836e,
+    0x83b0, 0x8378, 0x83b3, 0x83b4, 0x83a0, 0x83aa, 0x8393, 0x839c,
+    0x8385, 0x837c, 0x83b6, 0x83a9, 0x837d, 0x83b8, 0x837b, 0x8398,
+    0x839e, 0x83a8, 0x83ba, 0x83bc, 0x83c1, 0x8401, 0x83e5, 0x83d8,
+    0x5807, 0x8418, 0x840b, 0x83dd, 0x83fd, 0x83d6, 0x841c, 0x8438,
+    0x8411, 0x8406, 0x83d4, 0x83df, 0x840f, 0x8403, 0x83f8, 0x83f9,
+    0x83ea, 0x83c5, 0x83c0, 0x8426, 0x83f0, 0x83e1, 0x845c, 0x8451,
+    0x845a, 0x8459, 0x8473, 0x8487, 0x8488, 0x847a, 0x8489, 0x8478,
+    0x843c, 0x8446, 0x8469, 0x8476, 0x848c, 0x848e, 0x8431, 0x846d,
+    0x84c1, 0x84cd, 0x84d0, 0x84e6, 0x84bd, 0x84d3, 0x84ca, 0x84bf,
+    0x84ba, 0x84e0, 0x84a1, 0x84b9, 0x84b4, 0x8497, 0x84e5, 0x84e3,
+    0x850c, 0x750d, 0x8538, 0x84f0, 0x8539, 0x851f, 0x853a, 0x003f,
+    /* lead byte de */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8f45, 0x8f46, 0x8f47, 0x8f48, 0x8f49, 0x8f4a, 0x8f4b, 0x8f4c,
+    0x8f4d, 0x8f4e, 0x8f4f, 0x8f50, 0x8f51, 0x8f52, 0x8f53, 0x8f54,
+    0x8f55, 0x8f56, 0x8f57, 0x8f58, 0x8f59, 0x8f5a, 0x8f5b, 0x8f5c,
+    0x8f5d, 0x8f5e, 0x8f5f, 0x8f60, 0x8f61, 0x8f62, 0x8f63, 0x8f64,
+    0x8f65, 0x8f6a, 0x8f80, 0x8f8c, 0x8f92, 0x8f9d, 0x8fa0, 0x8fa1,
+    0x8fa2, 0x8fa4, 0x8fa5, 0x8fa6, 0x8fa7, 0x8faa, 0x8fac, 0x8fad,
+    0x8fae, 0x8faf, 0x8fb2, 0x8fb3, 0x8fb4, 0x8fb5, 0x8fb7, 0x8fb8,
+    0x8fba, 0x8fbb, 0x8fbc, 0x8fbf, 0x8fc0, 0x8fc3, 0x8fc6, 0x003f,
+    0x8fc9, 0x8fca, 0x8fcb, 0x8fcc, 0x8fcd, 0x8fcf, 0x8fd2, 0x8fd6,
+    0x8fd7, 0x8fda, 0x8fe0, 0x8fe1, 0x8fe3, 0x8fe7, 0x8fec, 0x8fef,
+    0x8ff1, 0x8ff2, 0x8ff4, 0x8ff5, 0x8ff6, 0x8ffa, 0x8ffb, 0x8ffc,
+    0x8ffe, 0x8fff, 0x9007, 0x9008, 0x900c, 0x900e, 0x9013, 0x9015,
+    0x9018, 0x8556, 0x853b, 0x84ff, 0x84fc, 0x8559, 0x8548, 0x8568,
+    0x8564, 0x855e, 0x857a, 0x77a2, 0x8543, 0x8572, 0x857b, 0x85a4,
+    0x85a8, 0x8587, 0x858f, 0x8579, 0x85ae, 0x859c, 0x8585, 0x85b9,
+    0x85b7, 0x85b0, 0x85d3, 0x85c1, 0x85dc, 0x85ff, 0x8627, 0x8605,
+    0x8629, 0x8616, 0x863c, 0x5efe, 0x5f08, 0x593c, 0x5941, 0x8037,
+    0x5955, 0x595a, 0x5958, 0x530f, 0x5c22, 0x5c25, 0x5c2c, 0x5c34,
+    0x624c, 0x626a, 0x629f, 0x62bb, 0x62ca, 0x62da, 0x62d7, 0x62ee,
+    0x6322, 0x62f6, 0x6339, 0x634b, 0x6343, 0x63ad, 0x63f6, 0x6371,
+    0x637a, 0x638e, 0x63b4, 0x636d, 0x63ac, 0x638a, 0x6369, 0x63ae,
+    0x63bc, 0x63f2, 0x63f8, 0x63e0, 0x63ff, 0x63c4, 0x63de, 0x63ce,
+    0x6452, 0x63c6, 0x63be, 0x6445, 0x6441, 0x640b, 0x641b, 0x6420,
+    0x640c, 0x6426, 0x6421, 0x645e, 0x6484, 0x646d, 0x6496, 0x003f,
+    /* lead byte df */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9019, 0x901c, 0x9023, 0x9024, 0x9025, 0x9027, 0x9028, 0x9029,
+    0x902a, 0x902b, 0x902c, 0x9030, 0x9031, 0x9032, 0x9033, 0x9034,
+    0x9037, 0x9039, 0x903a, 0x903d, 0x903f, 0x9040, 0x9043, 0x9045,
+    0x9046, 0x9048, 0x9049, 0x904a, 0x904b, 0x904c, 0x904e, 0x9054,
+    0x9055, 0x9056, 0x9059, 0x905a, 0x905c, 0x905d, 0x905e, 0x905f,
+    0x9060, 0x9061, 0x9064, 0x9066, 0x9067, 0x9069, 0x906a, 0x906b,
+    0x906c, 0x906f, 0x9070, 0x9071, 0x9072, 0x9073, 0x9076, 0x9077,
+    0x9078, 0x9079, 0x907a, 0x907b, 0x907c, 0x907e, 0x9081, 0x003f,
+    0x9084, 0x9085, 0x9086, 0x9087, 0x9089, 0x908a, 0x908c, 0x908d,
+    0x908e, 0x908f, 0x9090, 0x9092, 0x9094, 0x9096, 0x9098, 0x909a,
+    0x909c, 0x909e, 0x909f, 0x90a0, 0x90a4, 0x90a5, 0x90a7, 0x90a8,
+    0x90a9, 0x90ab, 0x90ad, 0x90b2, 0x90b7, 0x90bc, 0x90bd, 0x90bf,
+    0x90c0, 0x647a, 0x64b7, 0x64b8, 0x6499, 0x64ba, 0x64c0, 0x64d0,
+    0x64d7, 0x64e4, 0x64e2, 0x6509, 0x6525, 0x652e, 0x5f0b, 0x5fd2,
+    0x7519, 0x5f11, 0x535f, 0x53f1, 0x53fd, 0x53e9, 0x53e8, 0x53fb,
+    0x5412, 0x5416, 0x5406, 0x544b, 0x5452, 0x5453, 0x5454, 0x5456,
+    0x5443, 0x5421, 0x5457, 0x5459, 0x5423, 0x5432, 0x5482, 0x5494,
+    0x5477, 0x5471, 0x5464, 0x549a, 0x549b, 0x5484, 0x5476, 0x5466,
+    0x549d, 0x54d0, 0x54ad, 0x54c2, 0x54b4, 0x54d2, 0x54a7, 0x54a6,
+    0x54d3, 0x54d4, 0x5472, 0x54a3, 0x54d5, 0x54bb, 0x54bf, 0x54cc,
+    0x54d9, 0x54da, 0x54dc, 0x54a9, 0x54aa, 0x54a4, 0x54dd, 0x54cf,
+    0x54de, 0x551b, 0x54e7, 0x5520, 0x54fd, 0x5514, 0x54f3, 0x5522,
+    0x5523, 0x550f, 0x5511, 0x5527, 0x552a, 0x5567, 0x558f, 0x55b5,
+    0x5549, 0x556d, 0x5541, 0x5555, 0x553f, 0x5550, 0x553c, 0x003f,
+    /* lead byte e0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x90c2, 0x90c3, 0x90c6, 0x90c8, 0x90c9, 0x90cb, 0x90cc, 0x90cd,
+    0x90d2, 0x90d4, 0x90d5, 0x90d6, 0x90d8, 0x90d9, 0x90da, 0x90de,
+    0x90df, 0x90e0, 0x90e3, 0x90e4, 0x90e5, 0x90e9, 0x90ea, 0x90ec,
+    0x90ee, 0x90f0, 0x90f1, 0x90f2, 0x90f3, 0x90f5, 0x90f6, 0x90f7,
+    0x90f9, 0x90fa, 0x90fb, 0x90fc, 0x90ff, 0x9100, 0x9101, 0x9103,
+    0x9105, 0x9106, 0x9107, 0x9108, 0x9109, 0x910a, 0x910b, 0x910c,
+    0x910d, 0x910e, 0x910f, 0x9110, 0x9111, 0x9112, 0x9113, 0x9114,
+    0x9115, 0x9116, 0x9117, 0x9118, 0x911a, 0x911b, 0x911c, 0x003f,
+    0x911d, 0x911f, 0x9120, 0x9121, 0x9124, 0x9125, 0x9126, 0x9127,
+    0x9128, 0x9129, 0x912a, 0x912b, 0x912c, 0x912d, 0x912e, 0x9130,
+    0x9132, 0x9133, 0x9134, 0x9135, 0x9136, 0x9137, 0x9138, 0x913a,
+    0x913b, 0x913c, 0x913d, 0x913e, 0x913f, 0x9140, 0x9141, 0x9142,
+    0x9144, 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, 0x5530,
+    0x555c, 0x558b, 0x55d2, 0x5583, 0x55b1, 0x55b9, 0x5588, 0x5581,
+    0x559f, 0x557e, 0x55d6, 0x5591, 0x557b, 0x55df, 0x55bd, 0x55be,
+    0x5594, 0x5599, 0x55ea, 0x55f7, 0x55c9, 0x561f, 0x55d1, 0x55eb,
+    0x55ec, 0x55d4, 0x55e6, 0x55dd, 0x55c4, 0x55ef, 0x55e5, 0x55f2,
+    0x55f3, 0x55cc, 0x55cd, 0x55e8, 0x55f5, 0x55e4, 0x8f94, 0x561e,
+    0x5608, 0x560c, 0x5601, 0x5624, 0x5623, 0x55fe, 0x5600, 0x5627,
+    0x562d, 0x5658, 0x5639, 0x5657, 0x562c, 0x564d, 0x5662, 0x5659,
+    0x565c, 0x564c, 0x5654, 0x5686, 0x5664, 0x5671, 0x566b, 0x567b,
+    0x567c, 0x5685, 0x5693, 0x56af, 0x56d4, 0x56d7, 0x56dd, 0x56e1,
+    0x56f5, 0x56eb, 0x56f9, 0x56ff, 0x5704, 0x570a, 0x5709, 0x571c,
+    0x5e0f, 0x5e19, 0x5e14, 0x5e11, 0x5e31, 0x5e3b, 0x5e3c, 0x003f,
+    /* lead byte e1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9145, 0x9147, 0x9148, 0x9151, 0x9153, 0x9154, 0x9155, 0x9156,
+    0x9158, 0x9159, 0x915b, 0x915c, 0x915f, 0x9160, 0x9166, 0x9167,
+    0x9168, 0x916b, 0x916d, 0x9173, 0x917a, 0x917b, 0x917c, 0x9180,
+    0x9181, 0x9182, 0x9183, 0x9184, 0x9186, 0x9188, 0x918a, 0x918e,
+    0x918f, 0x9193, 0x9194, 0x9195, 0x9196, 0x9197, 0x9198, 0x9199,
+    0x919c, 0x919d, 0x919e, 0x919f, 0x91a0, 0x91a1, 0x91a4, 0x91a5,
+    0x91a6, 0x91a7, 0x91a8, 0x91a9, 0x91ab, 0x91ac, 0x91b0, 0x91b1,
+    0x91b2, 0x91b3, 0x91b6, 0x91b7, 0x91b8, 0x91b9, 0x91bb, 0x003f,
+    0x91bc, 0x91bd, 0x91be, 0x91bf, 0x91c0, 0x91c1, 0x91c2, 0x91c3,
+    0x91c4, 0x91c5, 0x91c6, 0x91c8, 0x91cb, 0x91d0, 0x91d2, 0x91d3,
+    0x91d4, 0x91d5, 0x91d6, 0x91d7, 0x91d8, 0x91d9, 0x91da, 0x91db,
+    0x91dd, 0x91de, 0x91df, 0x91e0, 0x91e1, 0x91e2, 0x91e3, 0x91e4,
+    0x91e5, 0x5e37, 0x5e44, 0x5e54, 0x5e5b, 0x5e5e, 0x5e61, 0x5c8c,
+    0x5c7a, 0x5c8d, 0x5c90, 0x5c96, 0x5c88, 0x5c98, 0x5c99, 0x5c91,
+    0x5c9a, 0x5c9c, 0x5cb5, 0x5ca2, 0x5cbd, 0x5cac, 0x5cab, 0x5cb1,
+    0x5ca3, 0x5cc1, 0x5cb7, 0x5cc4, 0x5cd2, 0x5ce4, 0x5ccb, 0x5ce5,
+    0x5d02, 0x5d03, 0x5d27, 0x5d26, 0x5d2e, 0x5d24, 0x5d1e, 0x5d06,
+    0x5d1b, 0x5d58, 0x5d3e, 0x5d34, 0x5d3d, 0x5d6c, 0x5d5b, 0x5d6f,
+    0x5d5d, 0x5d6b, 0x5d4b, 0x5d4a, 0x5d69, 0x5d74, 0x5d82, 0x5d99,
+    0x5d9d, 0x8c73, 0x5db7, 0x5dc5, 0x5f73, 0x5f77, 0x5f82, 0x5f87,
+    0x5f89, 0x5f8c, 0x5f95, 0x5f99, 0x5f9c, 0x5fa8, 0x5fad, 0x5fb5,
+    0x5fbc, 0x8862, 0x5f61, 0x72ad, 0x72b0, 0x72b4, 0x72b7, 0x72b8,
+    0x72c3, 0x72c1, 0x72ce, 0x72cd, 0x72d2, 0x72e8, 0x72ef, 0x72e9,
+    0x72f2, 0x72f4, 0x72f7, 0x7301, 0x72f3, 0x7303, 0x72fa, 0x003f,
+    /* lead byte e2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x91e6, 0x91e7, 0x91e8, 0x91e9, 0x91ea, 0x91eb, 0x91ec, 0x91ed,
+    0x91ee, 0x91ef, 0x91f0, 0x91f1, 0x91f2, 0x91f3, 0x91f4, 0x91f5,
+    0x91f6, 0x91f7, 0x91f8, 0x91f9, 0x91fa, 0x91fb, 0x91fc, 0x91fd,
+    0x91fe, 0x91ff, 0x9200, 0x9201, 0x9202, 0x9203, 0x9204, 0x9205,
+    0x9206, 0x9207, 0x9208, 0x9209, 0x920a, 0x920b, 0x920c, 0x920d,
+    0x920e, 0x920f, 0x9210, 0x9211, 0x9212, 0x9213, 0x9214, 0x9215,
+    0x9216, 0x9217, 0x9218, 0x9219, 0x921a, 0x921b, 0x921c, 0x921d,
+    0x921e, 0x921f, 0x9220, 0x9221, 0x9222, 0x9223, 0x9224, 0x003f,
+    0x9225, 0x9226, 0x9227, 0x9228, 0x9229, 0x922a, 0x922b, 0x922c,
+    0x922d, 0x922e, 0x922f, 0x9230, 0x9231, 0x9232, 0x9233, 0x9234,
+    0x9235, 0x9236, 0x9237, 0x9238, 0x9239, 0x923a, 0x923b, 0x923c,
+    0x923d, 0x923e, 0x923f, 0x9240, 0x9241, 0x9242, 0x9243, 0x9244,
+    0x9245, 0x72fb, 0x7317, 0x7313, 0x7321, 0x730a, 0x731e, 0x731d,
+    0x7315, 0x7322, 0x7339, 0x7325, 0x732c, 0x7338, 0x7331, 0x7350,
+    0x734d, 0x7357, 0x7360, 0x736c, 0x736f, 0x737e, 0x821b, 0x5925,
+    0x98e7, 0x5924, 0x5902, 0x9963, 0x9967, 0x9968, 0x9969, 0x996a,
+    0x996b, 0x996c, 0x9974, 0x9977, 0x997d, 0x9980, 0x9984, 0x9987,
+    0x998a, 0x998d, 0x9990, 0x9991, 0x9993, 0x9994, 0x9995, 0x5e80,
+    0x5e91, 0x5e8b, 0x5e96, 0x5ea5, 0x5ea0, 0x5eb9, 0x5eb5, 0x5ebe,
+    0x5eb3, 0x8d53, 0x5ed2, 0x5ed1, 0x5edb, 0x5ee8, 0x5eea, 0x81ba,
+    0x5fc4, 0x5fc9, 0x5fd6, 0x5fcf, 0x6003, 0x5fee, 0x6004, 0x5fe1,
+    0x5fe4, 0x5ffe, 0x6005, 0x6006, 0x5fea, 0x5fed, 0x5ff8, 0x6019,
+    0x6035, 0x6026, 0x601b, 0x600f, 0x600d, 0x6029, 0x602b, 0x600a,
+    0x603f, 0x6021, 0x6078, 0x6079, 0x607b, 0x607a, 0x6042, 0x003f,
+    /* lead byte e3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9246, 0x9247, 0x9248, 0x9249, 0x924a, 0x924b, 0x924c, 0x924d,
+    0x924e, 0x924f, 0x9250, 0x9251, 0x9252, 0x9253, 0x9254, 0x9255,
+    0x9256, 0x9257, 0x9258, 0x9259, 0x925a, 0x925b, 0x925c, 0x925d,
+    0x925e, 0x925f, 0x9260, 0x9261, 0x9262, 0x9263, 0x9264, 0x9265,
+    0x9266, 0x9267, 0x9268, 0x9269, 0x926a, 0x926b, 0x926c, 0x926d,
+    0x926e, 0x926f, 0x9270, 0x9271, 0x9272, 0x9273, 0x9275, 0x9276,
+    0x9277, 0x9278, 0x9279, 0x927a, 0x927b, 0x927c, 0x927d, 0x927e,
+    0x927f, 0x9280, 0x9281, 0x9282, 0x9283, 0x9284, 0x9285, 0x003f,
+    0x9286, 0x9287, 0x9288, 0x9289, 0x928a, 0x928b, 0x928c, 0x928d,
+    0x928f, 0x9290, 0x9291, 0x9292, 0x9293, 0x9294, 0x9295, 0x9296,
+    0x9297, 0x9298, 0x9299, 0x929a, 0x929b, 0x929c, 0x929d, 0x929e,
+    0x929f, 0x92a0, 0x92a1, 0x92a2, 0x92a3, 0x92a4, 0x92a5, 0x92a6,
+    0x92a7, 0x606a, 0x607d, 0x6096, 0x609a, 0x60ad, 0x609d, 0x6083,
+    0x6092, 0x608c, 0x609b, 0x60ec, 0x60bb, 0x60b1, 0x60dd, 0x60d8,
+    0x60c6, 0x60da, 0x60b4, 0x6120, 0x6126, 0x6115, 0x6123, 0x60f4,
+    0x6100, 0x610e, 0x612b, 0x614a, 0x6175, 0x61ac, 0x6194, 0x61a7,
+    0x61b7, 0x61d4, 0x61f5, 0x5fdd, 0x96b3, 0x95e9, 0x95eb, 0x95f1,
+    0x95f3, 0x95f5, 0x95f6, 0x95fc, 0x95fe, 0x9603, 0x9604, 0x9606,
+    0x9608, 0x960a, 0x960b, 0x960c, 0x960d, 0x960f, 0x9612, 0x9615,
+    0x9616, 0x9617, 0x9619, 0x961a, 0x4e2c, 0x723f, 0x6215, 0x6c35,
+    0x6c54, 0x6c5c, 0x6c4a, 0x6ca3, 0x6c85, 0x6c90, 0x6c94, 0x6c8c,
+    0x6c68, 0x6c69, 0x6c74, 0x6c76, 0x6c86, 0x6ca9, 0x6cd0, 0x6cd4,
+    0x6cad, 0x6cf7, 0x6cf8, 0x6cf1, 0x6cd7, 0x6cb2, 0x6ce0, 0x6cd6,
+    0x6cfa, 0x6ceb, 0x6cee, 0x6cb1, 0x6cd3, 0x6cef, 0x6cfe, 0x003f,
+    /* lead byte e4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x92a8, 0x92a9, 0x92aa, 0x92ab, 0x92ac, 0x92ad, 0x92af, 0x92b0,
+    0x92b1, 0x92b2, 0x92b3, 0x92b4, 0x92b5, 0x92b6, 0x92b7, 0x92b8,
+    0x92b9, 0x92ba, 0x92bb, 0x92bc, 0x92bd, 0x92be, 0x92bf, 0x92c0,
+    0x92c1, 0x92c2, 0x92c3, 0x92c4, 0x92c5, 0x92c6, 0x92c7, 0x92c9,
+    0x92ca, 0x92cb, 0x92cc, 0x92cd, 0x92ce, 0x92cf, 0x92d0, 0x92d1,
+    0x92d2, 0x92d3, 0x92d4, 0x92d5, 0x92d6, 0x92d7, 0x92d8, 0x92d9,
+    0x92da, 0x92db, 0x92dc, 0x92dd, 0x92de, 0x92df, 0x92e0, 0x92e1,
+    0x92e2, 0x92e3, 0x92e4, 0x92e5, 0x92e6, 0x92e7, 0x92e8, 0x003f,
+    0x92e9, 0x92ea, 0x92eb, 0x92ec, 0x92ed, 0x92ee, 0x92ef, 0x92f0,
+    0x92f1, 0x92f2, 0x92f3, 0x92f4, 0x92f5, 0x92f6, 0x92f7, 0x92f8,
+    0x92f9, 0x92fa, 0x92fb, 0x92fc, 0x92fd, 0x92fe, 0x92ff, 0x9300,
+    0x9301, 0x9302, 0x9303, 0x9304, 0x9305, 0x9306, 0x9307, 0x9308,
+    0x9309, 0x6d39, 0x6d27, 0x6d0c, 0x6d43, 0x6d48, 0x6d07, 0x6d04,
+    0x6d19, 0x6d0e, 0x6d2b, 0x6d4d, 0x6d2e, 0x6d35, 0x6d1a, 0x6d4f,
+    0x6d52, 0x6d54, 0x6d33, 0x6d91, 0x6d6f, 0x6d9e, 0x6da0, 0x6d5e,
+    0x6d93, 0x6d94, 0x6d5c, 0x6d60, 0x6d7c, 0x6d63, 0x6e1a, 0x6dc7,
+    0x6dc5, 0x6dde, 0x6e0e, 0x6dbf, 0x6de0, 0x6e11, 0x6de6, 0x6ddd,
+    0x6dd9, 0x6e16, 0x6dab, 0x6e0c, 0x6dae, 0x6e2b, 0x6e6e, 0x6e4e,
+    0x6e6b, 0x6eb2, 0x6e5f, 0x6e86, 0x6e53, 0x6e54, 0x6e32, 0x6e25,
+    0x6e44, 0x6edf, 0x6eb1, 0x6e98, 0x6ee0, 0x6f2d, 0x6ee2, 0x6ea5,
+    0x6ea7, 0x6ebd, 0x6ebb, 0x6eb7, 0x6ed7, 0x6eb4, 0x6ecf, 0x6e8f,
+    0x6ec2, 0x6e9f, 0x6f62, 0x6f46, 0x6f47, 0x6f24, 0x6f15, 0x6ef9,
+    0x6f2f, 0x6f36, 0x6f4b, 0x6f74, 0x6f2a, 0x6f09, 0x6f29, 0x6f89,
+    0x6f8d, 0x6f8c, 0x6f78, 0x6f72, 0x6f7c, 0x6f7a, 0x6fd1, 0x003f,
+    /* lead byte e5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x930a, 0x930b, 0x930c, 0x930d, 0x930e, 0x930f, 0x9310, 0x9311,
+    0x9312, 0x9313, 0x9314, 0x9315, 0x9316, 0x9317, 0x9318, 0x9319,
+    0x931a, 0x931b, 0x931c, 0x931d, 0x931e, 0x931f, 0x9320, 0x9321,
+    0x9322, 0x9323, 0x9324, 0x9325, 0x9326, 0x9327, 0x9328, 0x9329,
+    0x932a, 0x932b, 0x932c, 0x932d, 0x932e, 0x932f, 0x9330, 0x9331,
+    0x9332, 0x9333, 0x9334, 0x9335, 0x9336, 0x9337, 0x9338, 0x9339,
+    0x933a, 0x933b, 0x933c, 0x933d, 0x933f, 0x9340, 0x9341, 0x9342,
+    0x9343, 0x9344, 0x9345, 0x9346, 0x9347, 0x9348, 0x9349, 0x003f,
+    0x934a, 0x934b, 0x934c, 0x934d, 0x934e, 0x934f, 0x9350, 0x9351,
+    0x9352, 0x9353, 0x9354, 0x9355, 0x9356, 0x9357, 0x9358, 0x9359,
+    0x935a, 0x935b, 0x935c, 0x935d, 0x935e, 0x935f, 0x9360, 0x9361,
+    0x9362, 0x9363, 0x9364, 0x9365, 0x9366, 0x9367, 0x9368, 0x9369,
+    0x936b, 0x6fc9, 0x6fa7, 0x6fb9, 0x6fb6, 0x6fc2, 0x6fe1, 0x6fee,
+    0x6fde, 0x6fe0, 0x6fef, 0x701a, 0x7023, 0x701b, 0x7039, 0x7035,
+    0x704f, 0x705e, 0x5b80, 0x5b84, 0x5b95, 0x5b93, 0x5ba5, 0x5bb8,
+    0x752f, 0x9a9e, 0x6434, 0x5be4, 0x5bee, 0x8930, 0x5bf0, 0x8e47,
+    0x8b07, 0x8fb6, 0x8fd3, 0x8fd5, 0x8fe5, 0x8fee, 0x8fe4, 0x8fe9,
+    0x8fe6, 0x8ff3, 0x8fe8, 0x9005, 0x9004, 0x900b, 0x9026, 0x9011,
+    0x900d, 0x9016, 0x9021, 0x9035, 0x9036, 0x902d, 0x902f, 0x9044,
+    0x9051, 0x9052, 0x9050, 0x9068, 0x9058, 0x9062, 0x905b, 0x66b9,
+    0x9074, 0x907d, 0x9082, 0x9088, 0x9083, 0x908b, 0x5f50, 0x5f57,
+    0x5f56, 0x5f58, 0x5c3b, 0x54ab, 0x5c50, 0x5c59, 0x5b71, 0x5c63,
+    0x5c66, 0x7fbc, 0x5f2a, 0x5f29, 0x5f2d, 0x8274, 0x5f3c, 0x9b3b,
+    0x5c6e, 0x5981, 0x5983, 0x598d, 0x59a9, 0x59aa, 0x59a3, 0x003f,
+    /* lead byte e6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x936c, 0x936d, 0x936e, 0x936f, 0x9370, 0x9371, 0x9372, 0x9373,
+    0x9374, 0x9375, 0x9376, 0x9377, 0x9378, 0x9379, 0x937a, 0x937b,
+    0x937c, 0x937d, 0x937e, 0x937f, 0x9380, 0x9381, 0x9382, 0x9383,
+    0x9384, 0x9385, 0x9386, 0x9387, 0x9388, 0x9389, 0x938a, 0x938b,
+    0x938c, 0x938d, 0x938e, 0x9390, 0x9391, 0x9392, 0x9393, 0x9394,
+    0x9395, 0x9396, 0x9397, 0x9398, 0x9399, 0x939a, 0x939b, 0x939c,
+    0x939d, 0x939e, 0x939f, 0x93a0, 0x93a1, 0x93a2, 0x93a3, 0x93a4,
+    0x93a5, 0x93a6, 0x93a7, 0x93a8, 0x93a9, 0x93aa, 0x93ab, 0x003f,
+    0x93ac, 0x93ad, 0x93ae, 0x93af, 0x93b0, 0x93b1, 0x93b2, 0x93b3,
+    0x93b4, 0x93b5, 0x93b6, 0x93b7, 0x93b8, 0x93b9, 0x93ba, 0x93bb,
+    0x93bc, 0x93bd, 0x93be, 0x93bf, 0x93c0, 0x93c1, 0x93c2, 0x93c3,
+    0x93c4, 0x93c5, 0x93c6, 0x93c7, 0x93c8, 0x93c9, 0x93cb, 0x93cc,
+    0x93cd, 0x5997, 0x59ca, 0x59ab, 0x599e, 0x59a4, 0x59d2, 0x59b2,
+    0x59af, 0x59d7, 0x59be, 0x5a05, 0x5a06, 0x59dd, 0x5a08, 0x59e3,
+    0x59d8, 0x59f9, 0x5a0c, 0x5a09, 0x5a32, 0x5a34, 0x5a11, 0x5a23,
+    0x5a13, 0x5a40, 0x5a67, 0x5a4a, 0x5a55, 0x5a3c, 0x5a62, 0x5a75,
+    0x80ec, 0x5aaa, 0x5a9b, 0x5a77, 0x5a7a, 0x5abe, 0x5aeb, 0x5ab2,
+    0x5ad2, 0x5ad4, 0x5ab8, 0x5ae0, 0x5ae3, 0x5af1, 0x5ad6, 0x5ae6,
+    0x5ad8, 0x5adc, 0x5b09, 0x5b17, 0x5b16, 0x5b32, 0x5b37, 0x5b40,
+    0x5c15, 0x5c1c, 0x5b5a, 0x5b65, 0x5b73, 0x5b51, 0x5b53, 0x5b62,
+    0x9a75, 0x9a77, 0x9a78, 0x9a7a, 0x9a7f, 0x9a7d, 0x9a80, 0x9a81,
+    0x9a85, 0x9a88, 0x9a8a, 0x9a90, 0x9a92, 0x9a93, 0x9a96, 0x9a98,
+    0x9a9b, 0x9a9c, 0x9a9d, 0x9a9f, 0x9aa0, 0x9aa2, 0x9aa3, 0x9aa5,
+    0x9aa7, 0x7e9f, 0x7ea1, 0x7ea3, 0x7ea5, 0x7ea8, 0x7ea9, 0x003f,
+    /* lead byte e7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x93ce, 0x93cf, 0x93d0, 0x93d1, 0x93d2, 0x93d3, 0x93d4, 0x93d5,
+    0x93d7, 0x93d8, 0x93d9, 0x93da, 0x93db, 0x93dc, 0x93dd, 0x93de,
+    0x93df, 0x93e0, 0x93e1, 0x93e2, 0x93e3, 0x93e4, 0x93e5, 0x93e6,
+    0x93e7, 0x93e8, 0x93e9, 0x93ea, 0x93eb, 0x93ec, 0x93ed, 0x93ee,
+    0x93ef, 0x93f0, 0x93f1, 0x93f2, 0x93f3, 0x93f4, 0x93f5, 0x93f6,
+    0x93f7, 0x93f8, 0x93f9, 0x93fa, 0x93fb, 0x93fc, 0x93fd, 0x93fe,
+    0x93ff, 0x9400, 0x9401, 0x9402, 0x9403, 0x9404, 0x9405, 0x9406,
+    0x9407, 0x9408, 0x9409, 0x940a, 0x940b, 0x940c, 0x940d, 0x003f,
+    0x940e, 0x940f, 0x9410, 0x9411, 0x9412, 0x9413, 0x9414, 0x9415,
+    0x9416, 0x9417, 0x9418, 0x9419, 0x941a, 0x941b, 0x941c, 0x941d,
+    0x941e, 0x941f, 0x9420, 0x9421, 0x9422, 0x9423, 0x9424, 0x9425,
+    0x9426, 0x9427, 0x9428, 0x9429, 0x942a, 0x942b, 0x942c, 0x942d,
+    0x942e, 0x7ead, 0x7eb0, 0x7ebe, 0x7ec0, 0x7ec1, 0x7ec2, 0x7ec9,
+    0x7ecb, 0x7ecc, 0x7ed0, 0x7ed4, 0x7ed7, 0x7edb, 0x7ee0, 0x7ee1,
+    0x7ee8, 0x7eeb, 0x7eee, 0x7eef, 0x7ef1, 0x7ef2, 0x7f0d, 0x7ef6,
+    0x7efa, 0x7efb, 0x7efe, 0x7f01, 0x7f02, 0x7f03, 0x7f07, 0x7f08,
+    0x7f0b, 0x7f0c, 0x7f0f, 0x7f11, 0x7f12, 0x7f17, 0x7f19, 0x7f1c,
+    0x7f1b, 0x7f1f, 0x7f21, 0x7f22, 0x7f23, 0x7f24, 0x7f25, 0x7f26,
+    0x7f27, 0x7f2a, 0x7f2b, 0x7f2c, 0x7f2d, 0x7f2f, 0x7f30, 0x7f31,
+    0x7f32, 0x7f33, 0x7f35, 0x5e7a, 0x757f, 0x5ddb, 0x753e, 0x9095,
+    0x738e, 0x7391, 0x73ae, 0x73a2, 0x739f, 0x73cf, 0x73c2, 0x73d1,
+    0x73b7, 0x73b3, 0x73c0, 0x73c9, 0x73c8, 0x73e5, 0x73d9, 0x987c,
+    0x740a, 0x73e9, 0x73e7, 0x73de, 0x73ba, 0x73f2, 0x740f, 0x742a,
+    0x745b, 0x7426, 0x7425, 0x7428, 0x7430, 0x742e, 0x742c, 0x003f,
+    /* lead byte e8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x942f, 0x9430, 0x9431, 0x9432, 0x9433, 0x9434, 0x9435, 0x9436,
+    0x9437, 0x9438, 0x9439, 0x943a, 0x943b, 0x943c, 0x943d, 0x943f,
+    0x9440, 0x9441, 0x9442, 0x9443, 0x9444, 0x9445, 0x9446, 0x9447,
+    0x9448, 0x9449, 0x944a, 0x944b, 0x944c, 0x944d, 0x944e, 0x944f,
+    0x9450, 0x9451, 0x9452, 0x9453, 0x9454, 0x9455, 0x9456, 0x9457,
+    0x9458, 0x9459, 0x945a, 0x945b, 0x945c, 0x945d, 0x945e, 0x945f,
+    0x9460, 0x9461, 0x9462, 0x9463, 0x9464, 0x9465, 0x9466, 0x9467,
+    0x9468, 0x9469, 0x946a, 0x946c, 0x946d, 0x946e, 0x946f, 0x003f,
+    0x9470, 0x9471, 0x9472, 0x9473, 0x9474, 0x9475, 0x9476, 0x9477,
+    0x9478, 0x9479, 0x947a, 0x947b, 0x947c, 0x947d, 0x947e, 0x947f,
+    0x9480, 0x9481, 0x9482, 0x9483, 0x9484, 0x9491, 0x9496, 0x9498,
+    0x94c7, 0x94cf, 0x94d3, 0x94d4, 0x94da, 0x94e6, 0x94fb, 0x951c,
+    0x9520, 0x741b, 0x741a, 0x7441, 0x745c, 0x7457, 0x7455, 0x7459,
+    0x7477, 0x746d, 0x747e, 0x749c, 0x748e, 0x7480, 0x7481, 0x7487,
+    0x748b, 0x749e, 0x74a8, 0x74a9, 0x7490, 0x74a7, 0x74d2, 0x74ba,
+    0x97ea, 0x97eb, 0x97ec, 0x674c, 0x6753, 0x675e, 0x6748, 0x6769,
+    0x67a5, 0x6787, 0x676a, 0x6773, 0x6798, 0x67a7, 0x6775, 0x67a8,
+    0x679e, 0x67ad, 0x678b, 0x6777, 0x677c, 0x67f0, 0x6809, 0x67d8,
+    0x680a, 0x67e9, 0x67b0, 0x680c, 0x67d9, 0x67b5, 0x67da, 0x67b3,
+    0x67dd, 0x6800, 0x67c3, 0x67b8, 0x67e2, 0x680e, 0x67c1, 0x67fd,
+    0x6832, 0x6833, 0x6860, 0x6861, 0x684e, 0x6862, 0x6844, 0x6864,
+    0x6883, 0x681d, 0x6855, 0x6866, 0x6841, 0x6867, 0x6840, 0x683e,
+    0x684a, 0x6849, 0x6829, 0x68b5, 0x688f, 0x6874, 0x6877, 0x6893,
+    0x686b, 0x68c2, 0x696e, 0x68fc, 0x691f, 0x6920, 0x68f9, 0x003f,
+    /* lead byte e9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9527, 0x9533, 0x953d, 0x9543, 0x9548, 0x954b, 0x9555, 0x955a,
+    0x9560, 0x956e, 0x9574, 0x9575, 0x9577, 0x9578, 0x9579, 0x957a,
+    0x957b, 0x957c, 0x957d, 0x957e, 0x9580, 0x9581, 0x9582, 0x9583,
+    0x9584, 0x9585, 0x9586, 0x9587, 0x9588, 0x9589, 0x958a, 0x958b,
+    0x958c, 0x958d, 0x958e, 0x958f, 0x9590, 0x9591, 0x9592, 0x9593,
+    0x9594, 0x9595, 0x9596, 0x9597, 0x9598, 0x9599, 0x959a, 0x959b,
+    0x959c, 0x959d, 0x959e, 0x959f, 0x95a0, 0x95a1, 0x95a2, 0x95a3,
+    0x95a4, 0x95a5, 0x95a6, 0x95a7, 0x95a8, 0x95a9, 0x95aa, 0x003f,
+    0x95ab, 0x95ac, 0x95ad, 0x95ae, 0x95af, 0x95b0, 0x95b1, 0x95b2,
+    0x95b3, 0x95b4, 0x95b5, 0x95b6, 0x95b7, 0x95b8, 0x95b9, 0x95ba,
+    0x95bb, 0x95bc, 0x95bd, 0x95be, 0x95bf, 0x95c0, 0x95c1, 0x95c2,
+    0x95c3, 0x95c4, 0x95c5, 0x95c6, 0x95c7, 0x95c8, 0x95c9, 0x95ca,
+    0x95cb, 0x6924, 0x68f0, 0x690b, 0x6901, 0x6957, 0x68e3, 0x6910,
+    0x6971, 0x6939, 0x6960, 0x6942, 0x695d, 0x6984, 0x696b, 0x6980,
+    0x6998, 0x6978, 0x6934, 0x69cc, 0x6987, 0x6988, 0x69ce, 0x6989,
+    0x6966, 0x6963, 0x6979, 0x699b, 0x69a7, 0x69bb, 0x69ab, 0x69ad,
+    0x69d4, 0x69b1, 0x69c1, 0x69ca, 0x69df, 0x6995, 0x69e0, 0x698d,
+    0x69ff, 0x6a2f, 0x69ed, 0x6a17, 0x6a18, 0x6a65, 0x69f2, 0x6a44,
+    0x6a3e, 0x6aa0, 0x6a50, 0x6a5b, 0x6a35, 0x6a8e, 0x6a79, 0x6a3d,
+    0x6a28, 0x6a58, 0x6a7c, 0x6a91, 0x6a90, 0x6aa9, 0x6a97, 0x6aab,
+    0x7337, 0x7352, 0x6b81, 0x6b82, 0x6b87, 0x6b84, 0x6b92, 0x6b93,
+    0x6b8d, 0x6b9a, 0x6b9b, 0x6ba1, 0x6baa, 0x8f6b, 0x8f6d, 0x8f71,
+    0x8f72, 0x8f73, 0x8f75, 0x8f76, 0x8f78, 0x8f77, 0x8f79, 0x8f7a,
+    0x8f7c, 0x8f7e, 0x8f81, 0x8f82, 0x8f84, 0x8f87, 0x8f8b, 0x003f,
+    /* lead byte ea */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x95cc, 0x95cd, 0x95ce, 0x95cf, 0x95d0, 0x95d1, 0x95d2, 0x95d3,
+    0x95d4, 0x95d5, 0x95d6, 0x95d7, 0x95d8, 0x95d9, 0x95da, 0x95db,
+    0x95dc, 0x95dd, 0x95de, 0x95df, 0x95e0, 0x95e1, 0x95e2, 0x95e3,
+    0x95e4, 0x95e5, 0x95e6, 0x95e7, 0x95ec, 0x95ff, 0x9607, 0x9613,
+    0x9618, 0x961b, 0x961e, 0x9620, 0x9623, 0x9624, 0x9625, 0x9626,
+    0x9627, 0x9628, 0x9629, 0x962b, 0x962c, 0x962d, 0x962f, 0x9630,
+    0x9637, 0x9638, 0x9639, 0x963a, 0x963e, 0x9641, 0x9643, 0x964a,
+    0x964e, 0x964f, 0x9651, 0x9652, 0x9653, 0x9656, 0x9657, 0x003f,
+    0x9658, 0x9659, 0x965a, 0x965c, 0x965d, 0x965e, 0x9660, 0x9663,
+    0x9665, 0x9666, 0x966b, 0x966d, 0x966e, 0x966f, 0x9670, 0x9671,
+    0x9673, 0x9678, 0x9679, 0x967a, 0x967b, 0x967c, 0x967d, 0x967e,
+    0x967f, 0x9680, 0x9681, 0x9682, 0x9683, 0x9684, 0x9687, 0x9689,
+    0x968a, 0x8f8d, 0x8f8e, 0x8f8f, 0x8f98, 0x8f9a, 0x8ece, 0x620b,
+    0x6217, 0x621b, 0x621f, 0x6222, 0x6221, 0x6225, 0x6224, 0x622c,
+    0x81e7, 0x74ef, 0x74f4, 0x74ff, 0x750f, 0x7511, 0x7513, 0x6534,
+    0x65ee, 0x65ef, 0x65f0, 0x660a, 0x6619, 0x6772, 0x6603, 0x6615,
+    0x6600, 0x7085, 0x66f7, 0x661d, 0x6634, 0x6631, 0x6636, 0x6635,
+    0x8006, 0x665f, 0x6654, 0x6641, 0x664f, 0x6656, 0x6661, 0x6657,
+    0x6677, 0x6684, 0x668c, 0x66a7, 0x669d, 0x66be, 0x66db, 0x66dc,
+    0x66e6, 0x66e9, 0x8d32, 0x8d33, 0x8d36, 0x8d3b, 0x8d3d, 0x8d40,
+    0x8d45, 0x8d46, 0x8d48, 0x8d49, 0x8d47, 0x8d4d, 0x8d55, 0x8d59,
+    0x89c7, 0x89ca, 0x89cb, 0x89cc, 0x89ce, 0x89cf, 0x89d0, 0x89d1,
+    0x726e, 0x729f, 0x725d, 0x7266, 0x726f, 0x727e, 0x727f, 0x7284,
+    0x728b, 0x728d, 0x728f, 0x7292, 0x6308, 0x6332, 0x63b0, 0x003f,
+    /* lead byte eb */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x968c, 0x968e, 0x9691, 0x9692, 0x9693, 0x9695, 0x9696, 0x969a,
+    0x969b, 0x969d, 0x969e, 0x969f, 0x96a0, 0x96a1, 0x96a2, 0x96a3,
+    0x96a4, 0x96a5, 0x96a6, 0x96a8, 0x96a9, 0x96aa, 0x96ab, 0x96ac,
+    0x96ad, 0x96ae, 0x96af, 0x96b1, 0x96b2, 0x96b4, 0x96b5, 0x96b7,
+    0x96b8, 0x96ba, 0x96bb, 0x96bf, 0x96c2, 0x96c3, 0x96c8, 0x96ca,
+    0x96cb, 0x96d0, 0x96d1, 0x96d3, 0x96d4, 0x96d6, 0x96d7, 0x96d8,
+    0x96d9, 0x96da, 0x96db, 0x96dc, 0x96dd, 0x96de, 0x96df, 0x96e1,
+    0x96e2, 0x96e3, 0x96e4, 0x96e5, 0x96e6, 0x96e7, 0x96eb, 0x003f,
+    0x96ec, 0x96ed, 0x96ee, 0x96f0, 0x96f1, 0x96f2, 0x96f4, 0x96f5,
+    0x96f8, 0x96fa, 0x96fb, 0x96fc, 0x96fd, 0x96ff, 0x9702, 0x9703,
+    0x9705, 0x970a, 0x970b, 0x970c, 0x9710, 0x9711, 0x9712, 0x9714,
+    0x9715, 0x9717, 0x9718, 0x9719, 0x971a, 0x971b, 0x971d, 0x971f,
+    0x9720, 0x643f, 0x64d8, 0x8004, 0x6bea, 0x6bf3, 0x6bfd, 0x6bf5,
+    0x6bf9, 0x6c05, 0x6c07, 0x6c06, 0x6c0d, 0x6c15, 0x6c18, 0x6c19,
+    0x6c1a, 0x6c21, 0x6c29, 0x6c24, 0x6c2a, 0x6c32, 0x6535, 0x6555,
+    0x656b, 0x724d, 0x7252, 0x7256, 0x7230, 0x8662, 0x5216, 0x809f,
+    0x809c, 0x8093, 0x80bc, 0x670a, 0x80bd, 0x80b1, 0x80ab, 0x80ad,
+    0x80b4, 0x80b7, 0x80e7, 0x80e8, 0x80e9, 0x80ea, 0x80db, 0x80c2,
+    0x80c4, 0x80d9, 0x80cd, 0x80d7, 0x6710, 0x80dd, 0x80eb, 0x80f1,
+    0x80f4, 0x80ed, 0x810d, 0x810e, 0x80f2, 0x80fc, 0x6715, 0x8112,
+    0x8c5a, 0x8136, 0x811e, 0x812c, 0x8118, 0x8132, 0x8148, 0x814c,
+    0x8153, 0x8174, 0x8159, 0x815a, 0x8171, 0x8160, 0x8169, 0x817c,
+    0x817d, 0x816d, 0x8167, 0x584d, 0x5ab5, 0x8188, 0x8182, 0x8191,
+    0x6ed5, 0x81a3, 0x81aa, 0x81cc, 0x6726, 0x81ca, 0x81bb, 0x003f,
+    /* lead byte ec */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9721, 0x9722, 0x9723, 0x9724, 0x9725, 0x9726, 0x9727, 0x9728,
+    0x9729, 0x972b, 0x972c, 0x972e, 0x972f, 0x9731, 0x9733, 0x9734,
+    0x9735, 0x9736, 0x9737, 0x973a, 0x973b, 0x973c, 0x973d, 0x973f,
+    0x9740, 0x9741, 0x9742, 0x9743, 0x9744, 0x9745, 0x9746, 0x9747,
+    0x9748, 0x9749, 0x974a, 0x974b, 0x974c, 0x974d, 0x974e, 0x974f,
+    0x9750, 0x9751, 0x9754, 0x9755, 0x9757, 0x9758, 0x975a, 0x975c,
+    0x975d, 0x975f, 0x9763, 0x9764, 0x9766, 0x9767, 0x9768, 0x976a,
+    0x976b, 0x976c, 0x976d, 0x976e, 0x976f, 0x9770, 0x9771, 0x003f,
+    0x9772, 0x9775, 0x9777, 0x9778, 0x9779, 0x977a, 0x977b, 0x977d,
+    0x977e, 0x977f, 0x9780, 0x9781, 0x9782, 0x9783, 0x9784, 0x9786,
+    0x9787, 0x9788, 0x9789, 0x978a, 0x978c, 0x978e, 0x978f, 0x9790,
+    0x9793, 0x9795, 0x9796, 0x9797, 0x9799, 0x979a, 0x979b, 0x979c,
+    0x979d, 0x81c1, 0x81a6, 0x6b24, 0x6b37, 0x6b39, 0x6b43, 0x6b46,
+    0x6b59, 0x98d1, 0x98d2, 0x98d3, 0x98d5, 0x98d9, 0x98da, 0x6bb3,
+    0x5f40, 0x6bc2, 0x89f3, 0x6590, 0x9f51, 0x6593, 0x65bc, 0x65c6,
+    0x65c4, 0x65c3, 0x65cc, 0x65ce, 0x65d2, 0x65d6, 0x7080, 0x709c,
+    0x7096, 0x709d, 0x70bb, 0x70c0, 0x70b7, 0x70ab, 0x70b1, 0x70e8,
+    0x70ca, 0x7110, 0x7113, 0x7116, 0x712f, 0x7131, 0x7173, 0x715c,
+    0x7168, 0x7145, 0x7172, 0x714a, 0x7178, 0x717a, 0x7198, 0x71b3,
+    0x71b5, 0x71a8, 0x71a0, 0x71e0, 0x71d4, 0x71e7, 0x71f9, 0x721d,
+    0x7228, 0x706c, 0x7118, 0x7166, 0x71b9, 0x623e, 0x623d, 0x6243,
+    0x6248, 0x6249, 0x793b, 0x7940, 0x7946, 0x7949, 0x795b, 0x795c,
+    0x7953, 0x795a, 0x7962, 0x7957, 0x7960, 0x796f, 0x7967, 0x797a,
+    0x7985, 0x798a, 0x799a, 0x79a7, 0x79b3, 0x5fd1, 0x5fd0, 0x003f,
+    /* lead byte ed */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x979e, 0x979f, 0x97a1, 0x97a2, 0x97a4, 0x97a5, 0x97a6, 0x97a7,
+    0x97a8, 0x97a9, 0x97aa, 0x97ac, 0x97ae, 0x97b0, 0x97b1, 0x97b3,
+    0x97b5, 0x97b6, 0x97b7, 0x97b8, 0x97b9, 0x97ba, 0x97bb, 0x97bc,
+    0x97bd, 0x97be, 0x97bf, 0x97c0, 0x97c1, 0x97c2, 0x97c3, 0x97c4,
+    0x97c5, 0x97c6, 0x97c7, 0x97c8, 0x97c9, 0x97ca, 0x97cb, 0x97cc,
+    0x97cd, 0x97ce, 0x97cf, 0x97d0, 0x97d1, 0x97d2, 0x97d3, 0x97d4,
+    0x97d5, 0x97d6, 0x97d7, 0x97d8, 0x97d9, 0x97da, 0x97db, 0x97dc,
+    0x97dd, 0x97de, 0x97df, 0x97e0, 0x97e1, 0x97e2, 0x97e3, 0x003f,
+    0x97e4, 0x97e5, 0x97e8, 0x97ee, 0x97ef, 0x97f0, 0x97f1, 0x97f2,
+    0x97f4, 0x97f7, 0x97f8, 0x97f9, 0x97fa, 0x97fb, 0x97fc, 0x97fd,
+    0x97fe, 0x97ff, 0x9800, 0x9801, 0x9802, 0x9803, 0x9804, 0x9805,
+    0x9806, 0x9807, 0x9808, 0x9809, 0x980a, 0x980b, 0x980c, 0x980d,
+    0x980e, 0x603c, 0x605d, 0x605a, 0x6067, 0x6041, 0x6059, 0x6063,
+    0x60ab, 0x6106, 0x610d, 0x615d, 0x61a9, 0x619d, 0x61cb, 0x61d1,
+    0x6206, 0x8080, 0x807f, 0x6c93, 0x6cf6, 0x6dfc, 0x77f6, 0x77f8,
+    0x7800, 0x7809, 0x7817, 0x7818, 0x7811, 0x65ab, 0x782d, 0x781c,
+    0x781d, 0x7839, 0x783a, 0x783b, 0x781f, 0x783c, 0x7825, 0x782c,
+    0x7823, 0x7829, 0x784e, 0x786d, 0x7856, 0x7857, 0x7826, 0x7850,
+    0x7847, 0x784c, 0x786a, 0x789b, 0x7893, 0x789a, 0x7887, 0x789c,
+    0x78a1, 0x78a3, 0x78b2, 0x78b9, 0x78a5, 0x78d4, 0x78d9, 0x78c9,
+    0x78ec, 0x78f2, 0x7905, 0x78f4, 0x7913, 0x7924, 0x791e, 0x7934,
+    0x9f9b, 0x9ef9, 0x9efb, 0x9efc, 0x76f1, 0x7704, 0x770d, 0x76f9,
+    0x7707, 0x7708, 0x771a, 0x7722, 0x7719, 0x772d, 0x7726, 0x7735,
+    0x7738, 0x7750, 0x7751, 0x7747, 0x7743, 0x775a, 0x7768, 0x003f,
+    /* lead byte ee */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x980f, 0x9810, 0x9811, 0x9812, 0x9813, 0x9814, 0x9815, 0x9816,
+    0x9817, 0x9818, 0x9819, 0x981a, 0x981b, 0x981c, 0x981d, 0x981e,
+    0x981f, 0x9820, 0x9821, 0x9822, 0x9823, 0x9824, 0x9825, 0x9826,
+    0x9827, 0x9828, 0x9829, 0x982a, 0x982b, 0x982c, 0x982d, 0x982e,
+    0x982f, 0x9830, 0x9831, 0x9832, 0x9833, 0x9834, 0x9835, 0x9836,
+    0x9837, 0x9838, 0x9839, 0x983a, 0x983b, 0x983c, 0x983d, 0x983e,
+    0x983f, 0x9840, 0x9841, 0x9842, 0x9843, 0x9844, 0x9845, 0x9846,
+    0x9847, 0x9848, 0x9849, 0x984a, 0x984b, 0x984c, 0x984d, 0x003f,
+    0x984e, 0x984f, 0x9850, 0x9851, 0x9852, 0x9853, 0x9854, 0x9855,
+    0x9856, 0x9857, 0x9858, 0x9859, 0x985a, 0x985b, 0x985c, 0x985d,
+    0x985e, 0x985f, 0x9860, 0x9861, 0x9862, 0x9863, 0x9864, 0x9865,
+    0x9866, 0x9867, 0x9868, 0x9869, 0x986a, 0x986b, 0x986c, 0x986d,
+    0x986e, 0x7762, 0x7765, 0x777f, 0x778d, 0x777d, 0x7780, 0x778c,
+    0x7791, 0x779f, 0x77a0, 0x77b0, 0x77b5, 0x77bd, 0x753a, 0x7540,
+    0x754e, 0x754b, 0x7548, 0x755b, 0x7572, 0x7579, 0x7583, 0x7f58,
+    0x7f61, 0x7f5f, 0x8a48, 0x7f68, 0x7f74, 0x7f71, 0x7f79, 0x7f81,
+    0x7f7e, 0x76cd, 0x76e5, 0x8832, 0x9485, 0x9486, 0x9487, 0x948b,
+    0x948a, 0x948c, 0x948d, 0x948f, 0x9490, 0x9494, 0x9497, 0x9495,
+    0x949a, 0x949b, 0x949c, 0x94a3, 0x94a4, 0x94ab, 0x94aa, 0x94ad,
+    0x94ac, 0x94af, 0x94b0, 0x94b2, 0x94b4, 0x94b6, 0x94b7, 0x94b8,
+    0x94b9, 0x94ba, 0x94bc, 0x94bd, 0x94bf, 0x94c4, 0x94c8, 0x94c9,
+    0x94ca, 0x94cb, 0x94cc, 0x94cd, 0x94ce, 0x94d0, 0x94d1, 0x94d2,
+    0x94d5, 0x94d6, 0x94d7, 0x94d9, 0x94d8, 0x94db, 0x94de, 0x94df,
+    0x94e0, 0x94e2, 0x94e4, 0x94e5, 0x94e7, 0x94e8, 0x94ea, 0x003f,
+    /* lead byte ef */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x986f, 0x9870, 0x9871, 0x9872, 0x9873, 0x9874, 0x988b, 0x988e,
+    0x9892, 0x9895, 0x9899, 0x98a3, 0x98a8, 0x98a9, 0x98aa, 0x98ab,
+    0x98ac, 0x98ad, 0x98ae, 0x98af, 0x98b0, 0x98b1, 0x98b2, 0x98b3,
+    0x98b4, 0x98b5, 0x98b6, 0x98b7, 0x98b8, 0x98b9, 0x98ba, 0x98bb,
+    0x98bc, 0x98bd, 0x98be, 0x98bf, 0x98c0, 0x98c1, 0x98c2, 0x98c3,
+    0x98c4, 0x98c5, 0x98c6, 0x98c7, 0x98c8, 0x98c9, 0x98ca, 0x98cb,
+    0x98cc, 0x98cd, 0x98cf, 0x98d0, 0x98d4, 0x98d6, 0x98d7, 0x98db,
+    0x98dc, 0x98dd, 0x98e0, 0x98e1, 0x98e2, 0x98e3, 0x98e4, 0x003f,
+    0x98e5, 0x98e6, 0x98e9, 0x98ea, 0x98eb, 0x98ec, 0x98ed, 0x98ee,
+    0x98ef, 0x98f0, 0x98f1, 0x98f2, 0x98f3, 0x98f4, 0x98f5, 0x98f6,
+    0x98f7, 0x98f8, 0x98f9, 0x98fa, 0x98fb, 0x98fc, 0x98fd, 0x98fe,
+    0x98ff, 0x9900, 0x9901, 0x9902, 0x9903, 0x9904, 0x9905, 0x9906,
+    0x9907, 0x94e9, 0x94eb, 0x94ee, 0x94ef, 0x94f3, 0x94f4, 0x94f5,
+    0x94f7, 0x94f9, 0x94fc, 0x94fd, 0x94ff, 0x9503, 0x9502, 0x9506,
+    0x9507, 0x9509, 0x950a, 0x950d, 0x950e, 0x950f, 0x9512, 0x9513,
+    0x9514, 0x9515, 0x9516, 0x9518, 0x951b, 0x951d, 0x951e, 0x951f,
+    0x9522, 0x952a, 0x952b, 0x9529, 0x952c, 0x9531, 0x9532, 0x9534,
+    0x9536, 0x9537, 0x9538, 0x953c, 0x953e, 0x953f, 0x9542, 0x9535,
+    0x9544, 0x9545, 0x9546, 0x9549, 0x954c, 0x954e, 0x954f, 0x9552,
+    0x9553, 0x9554, 0x9556, 0x9557, 0x9558, 0x9559, 0x955b, 0x955e,
+    0x955f, 0x955d, 0x9561, 0x9562, 0x9564, 0x9565, 0x9566, 0x9567,
+    0x9568, 0x9569, 0x956a, 0x956b, 0x956c, 0x956f, 0x9571, 0x9572,
+    0x9573, 0x953a, 0x77e7, 0x77ec, 0x96c9, 0x79d5, 0x79ed, 0x79e3,
+    0x79eb, 0x7a06, 0x5d47, 0x7a03, 0x7a02, 0x7a1e, 0x7a14, 0x003f,
+    /* lead byte f0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9908, 0x9909, 0x990a, 0x990b, 0x990c, 0x990e, 0x990f, 0x9911,
+    0x9912, 0x9913, 0x9914, 0x9915, 0x9916, 0x9917, 0x9918, 0x9919,
+    0x991a, 0x991b, 0x991c, 0x991d, 0x991e, 0x991f, 0x9920, 0x9921,
+    0x9922, 0x9923, 0x9924, 0x9925, 0x9926, 0x9927, 0x9928, 0x9929,
+    0x992a, 0x992b, 0x992c, 0x992d, 0x992f, 0x9930, 0x9931, 0x9932,
+    0x9933, 0x9934, 0x9935, 0x9936, 0x9937, 0x9938, 0x9939, 0x993a,
+    0x993b, 0x993c, 0x993d, 0x993e, 0x993f, 0x9940, 0x9941, 0x9942,
+    0x9943, 0x9944, 0x9945, 0x9946, 0x9947, 0x9948, 0x9949, 0x003f,
+    0x994a, 0x994b, 0x994c, 0x994d, 0x994e, 0x994f, 0x9950, 0x9951,
+    0x9952, 0x9953, 0x9956, 0x9957, 0x9958, 0x9959, 0x995a, 0x995b,
+    0x995c, 0x995d, 0x995e, 0x995f, 0x9960, 0x9961, 0x9962, 0x9964,
+    0x9966, 0x9973, 0x9978, 0x9979, 0x997b, 0x997e, 0x9982, 0x9983,
+    0x9989, 0x7a39, 0x7a37, 0x7a51, 0x9ecf, 0x99a5, 0x7a70, 0x7688,
+    0x768e, 0x7693, 0x7699, 0x76a4, 0x74de, 0x74e0, 0x752c, 0x9e20,
+    0x9e22, 0x9e28, 0x9e29, 0x9e2a, 0x9e2b, 0x9e2c, 0x9e32, 0x9e31,
+    0x9e36, 0x9e38, 0x9e37, 0x9e39, 0x9e3a, 0x9e3e, 0x9e41, 0x9e42,
+    0x9e44, 0x9e46, 0x9e47, 0x9e48, 0x9e49, 0x9e4b, 0x9e4c, 0x9e4e,
+    0x9e51, 0x9e55, 0x9e57, 0x9e5a, 0x9e5b, 0x9e5c, 0x9e5e, 0x9e63,
+    0x9e66, 0x9e67, 0x9e68, 0x9e69, 0x9e6a, 0x9e6b, 0x9e6c, 0x9e71,
+    0x9e6d, 0x9e73, 0x7592, 0x7594, 0x7596, 0x75a0, 0x759d, 0x75ac,
+    0x75a3, 0x75b3, 0x75b4, 0x75b8, 0x75c4, 0x75b1, 0x75b0, 0x75c3,
+    0x75c2, 0x75d6, 0x75cd, 0x75e3, 0x75e8, 0x75e6, 0x75e4, 0x75eb,
+    0x75e7, 0x7603, 0x75f1, 0x75fc, 0x75ff, 0x7610, 0x7600, 0x7605,
+    0x760c, 0x7617, 0x760a, 0x7625, 0x7618, 0x7615, 0x7619, 0x003f,
+    /* lead byte f1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x998c, 0x998e, 0x999a, 0x999b, 0x999c, 0x999d, 0x999e, 0x999f,
+    0x99a0, 0x99a1, 0x99a2, 0x99a3, 0x99a4, 0x99a6, 0x99a7, 0x99a9,
+    0x99aa, 0x99ab, 0x99ac, 0x99ad, 0x99ae, 0x99af, 0x99b0, 0x99b1,
+    0x99b2, 0x99b3, 0x99b4, 0x99b5, 0x99b6, 0x99b7, 0x99b8, 0x99b9,
+    0x99ba, 0x99bb, 0x99bc, 0x99bd, 0x99be, 0x99bf, 0x99c0, 0x99c1,
+    0x99c2, 0x99c3, 0x99c4, 0x99c5, 0x99c6, 0x99c7, 0x99c8, 0x99c9,
+    0x99ca, 0x99cb, 0x99cc, 0x99cd, 0x99ce, 0x99cf, 0x99d0, 0x99d1,
+    0x99d2, 0x99d3, 0x99d4, 0x99d5, 0x99d6, 0x99d7, 0x99d8, 0x003f,
+    0x99d9, 0x99da, 0x99db, 0x99dc, 0x99dd, 0x99de, 0x99df, 0x99e0,
+    0x99e1, 0x99e2, 0x99e3, 0x99e4, 0x99e5, 0x99e6, 0x99e7, 0x99e8,
+    0x99e9, 0x99ea, 0x99eb, 0x99ec, 0x99ed, 0x99ee, 0x99ef, 0x99f0,
+    0x99f1, 0x99f2, 0x99f3, 0x99f4, 0x99f5, 0x99f6, 0x99f7, 0x99f8,
+    0x99f9, 0x761b, 0x763c, 0x7622, 0x7620, 0x7640, 0x762d, 0x7630,
+    0x763f, 0x7635, 0x7643, 0x763e, 0x7633, 0x764d, 0x765e, 0x7654,
+    0x765c, 0x7656, 0x766b, 0x766f, 0x7fca, 0x7ae6, 0x7a78, 0x7a79,
+    0x7a80, 0x7a86, 0x7a88, 0x7a95, 0x7aa6, 0x7aa0, 0x7aac, 0x7aa8,
+    0x7aad, 0x7ab3, 0x8864, 0x8869, 0x8872, 0x887d, 0x887f, 0x8882,
+    0x88a2, 0x88c6, 0x88b7, 0x88bc, 0x88c9, 0x88e2, 0x88ce, 0x88e3,
+    0x88e5, 0x88f1, 0x891a, 0x88fc, 0x88e8, 0x88fe, 0x88f0, 0x8921,
+    0x8919, 0x8913, 0x891b, 0x890a, 0x8934, 0x892b, 0x8936, 0x8941,
+    0x8966, 0x897b, 0x758b, 0x80e5, 0x76b2, 0x76b4, 0x77dc, 0x8012,
+    0x8014, 0x8016, 0x801c, 0x8020, 0x8022, 0x8025, 0x8026, 0x8027,
+    0x8029, 0x8028, 0x8031, 0x800b, 0x8035, 0x8043, 0x8046, 0x804d,
+    0x8052, 0x8069, 0x8071, 0x8983, 0x9878, 0x9880, 0x9883, 0x003f,
+    /* lead byte f2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x99fa, 0x99fb, 0x99fc, 0x99fd, 0x99fe, 0x99ff, 0x9a00, 0x9a01,
+    0x9a02, 0x9a03, 0x9a04, 0x9a05, 0x9a06, 0x9a07, 0x9a08, 0x9a09,
+    0x9a0a, 0x9a0b, 0x9a0c, 0x9a0d, 0x9a0e, 0x9a0f, 0x9a10, 0x9a11,
+    0x9a12, 0x9a13, 0x9a14, 0x9a15, 0x9a16, 0x9a17, 0x9a18, 0x9a19,
+    0x9a1a, 0x9a1b, 0x9a1c, 0x9a1d, 0x9a1e, 0x9a1f, 0x9a20, 0x9a21,
+    0x9a22, 0x9a23, 0x9a24, 0x9a25, 0x9a26, 0x9a27, 0x9a28, 0x9a29,
+    0x9a2a, 0x9a2b, 0x9a2c, 0x9a2d, 0x9a2e, 0x9a2f, 0x9a30, 0x9a31,
+    0x9a32, 0x9a33, 0x9a34, 0x9a35, 0x9a36, 0x9a37, 0x9a38, 0x003f,
+    0x9a39, 0x9a3a, 0x9a3b, 0x9a3c, 0x9a3d, 0x9a3e, 0x9a3f, 0x9a40,
+    0x9a41, 0x9a42, 0x9a43, 0x9a44, 0x9a45, 0x9a46, 0x9a47, 0x9a48,
+    0x9a49, 0x9a4a, 0x9a4b, 0x9a4c, 0x9a4d, 0x9a4e, 0x9a4f, 0x9a50,
+    0x9a51, 0x9a52, 0x9a53, 0x9a54, 0x9a55, 0x9a56, 0x9a57, 0x9a58,
+    0x9a59, 0x9889, 0x988c, 0x988d, 0x988f, 0x9894, 0x989a, 0x989b,
+    0x989e, 0x989f, 0x98a1, 0x98a2, 0x98a5, 0x98a6, 0x864d, 0x8654,
+    0x866c, 0x866e, 0x867f, 0x867a, 0x867c, 0x867b, 0x86a8, 0x868d,
+    0x868b, 0x86ac, 0x869d, 0x86a7, 0x86a3, 0x86aa, 0x8693, 0x86a9,
+    0x86b6, 0x86c4, 0x86b5, 0x86ce, 0x86b0, 0x86ba, 0x86b1, 0x86af,
+    0x86c9, 0x86cf, 0x86b4, 0x86e9, 0x86f1, 0x86f2, 0x86ed, 0x86f3,
+    0x86d0, 0x8713, 0x86de, 0x86f4, 0x86df, 0x86d8, 0x86d1, 0x8703,
+    0x8707, 0x86f8, 0x8708, 0x870a, 0x870d, 0x8709, 0x8723, 0x873b,
+    0x871e, 0x8725, 0x872e, 0x871a, 0x873e, 0x8748, 0x8734, 0x8731,
+    0x8729, 0x8737, 0x873f, 0x8782, 0x8722, 0x877d, 0x877e, 0x877b,
+    0x8760, 0x8770, 0x874c, 0x876e, 0x878b, 0x8753, 0x8763, 0x877c,
+    0x8764, 0x8759, 0x8765, 0x8793, 0x87af, 0x87a8, 0x87d2, 0x003f,
+    /* lead byte f3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9a5a, 0x9a5b, 0x9a5c, 0x9a5d, 0x9a5e, 0x9a5f, 0x9a60, 0x9a61,
+    0x9a62, 0x9a63, 0x9a64, 0x9a65, 0x9a66, 0x9a67, 0x9a68, 0x9a69,
+    0x9a6a, 0x9a6b, 0x9a72, 0x9a83, 0x9a89, 0x9a8d, 0x9a8e, 0x9a94,
+    0x9a95, 0x9a99, 0x9aa6, 0x9aa9, 0x9aaa, 0x9aab, 0x9aac, 0x9aad,
+    0x9aae, 0x9aaf, 0x9ab2, 0x9ab3, 0x9ab4, 0x9ab5, 0x9ab9, 0x9abb,
+    0x9abd, 0x9abe, 0x9abf, 0x9ac3, 0x9ac4, 0x9ac6, 0x9ac7, 0x9ac8,
+    0x9ac9, 0x9aca, 0x9acd, 0x9ace, 0x9acf, 0x9ad0, 0x9ad2, 0x9ad4,
+    0x9ad5, 0x9ad6, 0x9ad7, 0x9ad9, 0x9ada, 0x9adb, 0x9adc, 0x003f,
+    0x9add, 0x9ade, 0x9ae0, 0x9ae2, 0x9ae3, 0x9ae4, 0x9ae5, 0x9ae7,
+    0x9ae8, 0x9ae9, 0x9aea, 0x9aec, 0x9aee, 0x9af0, 0x9af1, 0x9af2,
+    0x9af3, 0x9af4, 0x9af5, 0x9af6, 0x9af7, 0x9af8, 0x9afa, 0x9afc,
+    0x9afd, 0x9afe, 0x9aff, 0x9b00, 0x9b01, 0x9b02, 0x9b04, 0x9b05,
+    0x9b06, 0x87c6, 0x8788, 0x8785, 0x87ad, 0x8797, 0x8783, 0x87ab,
+    0x87e5, 0x87ac, 0x87b5, 0x87b3, 0x87cb, 0x87d3, 0x87bd, 0x87d1,
+    0x87c0, 0x87ca, 0x87db, 0x87ea, 0x87e0, 0x87ee, 0x8816, 0x8813,
+    0x87fe, 0x880a, 0x881b, 0x8821, 0x8839, 0x883c, 0x7f36, 0x7f42,
+    0x7f44, 0x7f45, 0x8210, 0x7afa, 0x7afd, 0x7b08, 0x7b03, 0x7b04,
+    0x7b15, 0x7b0a, 0x7b2b, 0x7b0f, 0x7b47, 0x7b38, 0x7b2a, 0x7b19,
+    0x7b2e, 0x7b31, 0x7b20, 0x7b25, 0x7b24, 0x7b33, 0x7b3e, 0x7b1e,
+    0x7b58, 0x7b5a, 0x7b45, 0x7b75, 0x7b4c, 0x7b5d, 0x7b60, 0x7b6e,
+    0x7b7b, 0x7b62, 0x7b72, 0x7b71, 0x7b90, 0x7ba6, 0x7ba7, 0x7bb8,
+    0x7bac, 0x7b9d, 0x7ba8, 0x7b85, 0x7baa, 0x7b9c, 0x7ba2, 0x7bab,
+    0x7bb4, 0x7bd1, 0x7bc1, 0x7bcc, 0x7bdd, 0x7bda, 0x7be5, 0x7be6,
+    0x7bea, 0x7c0c, 0x7bfe, 0x7bfc, 0x7c0f, 0x7c16, 0x7c0b, 0x003f,
+    /* lead byte f4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9b07, 0x9b09, 0x9b0a, 0x9b0b, 0x9b0c, 0x9b0d, 0x9b0e, 0x9b10,
+    0x9b11, 0x9b12, 0x9b14, 0x9b15, 0x9b16, 0x9b17, 0x9b18, 0x9b19,
+    0x9b1a, 0x9b1b, 0x9b1c, 0x9b1d, 0x9b1e, 0x9b20, 0x9b21, 0x9b22,
+    0x9b24, 0x9b25, 0x9b26, 0x9b27, 0x9b28, 0x9b29, 0x9b2a, 0x9b2b,
+    0x9b2c, 0x9b2d, 0x9b2e, 0x9b30, 0x9b31, 0x9b33, 0x9b34, 0x9b35,
+    0x9b36, 0x9b37, 0x9b38, 0x9b39, 0x9b3a, 0x9b3d, 0x9b3e, 0x9b3f,
+    0x9b40, 0x9b46, 0x9b4a, 0x9b4b, 0x9b4c, 0x9b4e, 0x9b50, 0x9b52,
+    0x9b53, 0x9b55, 0x9b56, 0x9b57, 0x9b58, 0x9b59, 0x9b5a, 0x003f,
+    0x9b5b, 0x9b5c, 0x9b5d, 0x9b5e, 0x9b5f, 0x9b60, 0x9b61, 0x9b62,
+    0x9b63, 0x9b64, 0x9b65, 0x9b66, 0x9b67, 0x9b68, 0x9b69, 0x9b6a,
+    0x9b6b, 0x9b6c, 0x9b6d, 0x9b6e, 0x9b6f, 0x9b70, 0x9b71, 0x9b72,
+    0x9b73, 0x9b74, 0x9b75, 0x9b76, 0x9b77, 0x9b78, 0x9b79, 0x9b7a,
+    0x9b7b, 0x7c1f, 0x7c2a, 0x7c26, 0x7c38, 0x7c41, 0x7c40, 0x81fe,
+    0x8201, 0x8202, 0x8204, 0x81ec, 0x8844, 0x8221, 0x8222, 0x8223,
+    0x822d, 0x822f, 0x8228, 0x822b, 0x8238, 0x823b, 0x8233, 0x8234,
+    0x823e, 0x8244, 0x8249, 0x824b, 0x824f, 0x825a, 0x825f, 0x8268,
+    0x887e, 0x8885, 0x8888, 0x88d8, 0x88df, 0x895e, 0x7f9d, 0x7f9f,
+    0x7fa7, 0x7faf, 0x7fb0, 0x7fb2, 0x7c7c, 0x6549, 0x7c91, 0x7c9d,
+    0x7c9c, 0x7c9e, 0x7ca2, 0x7cb2, 0x7cbc, 0x7cbd, 0x7cc1, 0x7cc7,
+    0x7ccc, 0x7ccd, 0x7cc8, 0x7cc5, 0x7cd7, 0x7ce8, 0x826e, 0x66a8,
+    0x7fbf, 0x7fce, 0x7fd5, 0x7fe5, 0x7fe1, 0x7fe6, 0x7fe9, 0x7fee,
+    0x7ff3, 0x7cf8, 0x7d77, 0x7da6, 0x7dae, 0x7e47, 0x7e9b, 0x9eb8,
+    0x9eb4, 0x8d73, 0x8d84, 0x8d94, 0x8d91, 0x8db1, 0x8d67, 0x8d6d,
+    0x8c47, 0x8c49, 0x914a, 0x9150, 0x914e, 0x914f, 0x9164, 0x003f,
+    /* lead byte f5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9b7c, 0x9b7d, 0x9b7e, 0x9b7f, 0x9b80, 0x9b81, 0x9b82, 0x9b83,
+    0x9b84, 0x9b85, 0x9b86, 0x9b87, 0x9b88, 0x9b89, 0x9b8a, 0x9b8b,
+    0x9b8c, 0x9b8d, 0x9b8e, 0x9b8f, 0x9b90, 0x9b91, 0x9b92, 0x9b93,
+    0x9b94, 0x9b95, 0x9b96, 0x9b97, 0x9b98, 0x9b99, 0x9b9a, 0x9b9b,
+    0x9b9c, 0x9b9d, 0x9b9e, 0x9b9f, 0x9ba0, 0x9ba1, 0x9ba2, 0x9ba3,
+    0x9ba4, 0x9ba5, 0x9ba6, 0x9ba7, 0x9ba8, 0x9ba9, 0x9baa, 0x9bab,
+    0x9bac, 0x9bad, 0x9bae, 0x9baf, 0x9bb0, 0x9bb1, 0x9bb2, 0x9bb3,
+    0x9bb4, 0x9bb5, 0x9bb6, 0x9bb7, 0x9bb8, 0x9bb9, 0x9bba, 0x003f,
+    0x9bbb, 0x9bbc, 0x9bbd, 0x9bbe, 0x9bbf, 0x9bc0, 0x9bc1, 0x9bc2,
+    0x9bc3, 0x9bc4, 0x9bc5, 0x9bc6, 0x9bc7, 0x9bc8, 0x9bc9, 0x9bca,
+    0x9bcb, 0x9bcc, 0x9bcd, 0x9bce, 0x9bcf, 0x9bd0, 0x9bd1, 0x9bd2,
+    0x9bd3, 0x9bd4, 0x9bd5, 0x9bd6, 0x9bd7, 0x9bd8, 0x9bd9, 0x9bda,
+    0x9bdb, 0x9162, 0x9161, 0x9170, 0x9169, 0x916f, 0x917d, 0x917e,
+    0x9172, 0x9174, 0x9179, 0x918c, 0x9185, 0x9190, 0x918d, 0x9191,
+    0x91a2, 0x91a3, 0x91aa, 0x91ad, 0x91ae, 0x91af, 0x91b5, 0x91b4,
+    0x91ba, 0x8c55, 0x9e7e, 0x8db8, 0x8deb, 0x8e05, 0x8e59, 0x8e69,
+    0x8db5, 0x8dbf, 0x8dbc, 0x8dba, 0x8dc4, 0x8dd6, 0x8dd7, 0x8dda,
+    0x8dde, 0x8dce, 0x8dcf, 0x8ddb, 0x8dc6, 0x8dec, 0x8df7, 0x8df8,
+    0x8de3, 0x8df9, 0x8dfb, 0x8de4, 0x8e09, 0x8dfd, 0x8e14, 0x8e1d,
+    0x8e1f, 0x8e2c, 0x8e2e, 0x8e23, 0x8e2f, 0x8e3a, 0x8e40, 0x8e39,
+    0x8e35, 0x8e3d, 0x8e31, 0x8e49, 0x8e41, 0x8e42, 0x8e51, 0x8e52,
+    0x8e4a, 0x8e70, 0x8e76, 0x8e7c, 0x8e6f, 0x8e74, 0x8e85, 0x8e8f,
+    0x8e94, 0x8e90, 0x8e9c, 0x8e9e, 0x8c78, 0x8c82, 0x8c8a, 0x8c85,
+    0x8c98, 0x8c94, 0x659b, 0x89d6, 0x89de, 0x89da, 0x89dc, 0x003f,
+    /* lead byte f6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9bdc, 0x9bdd, 0x9bde, 0x9bdf, 0x9be0, 0x9be1, 0x9be2, 0x9be3,
+    0x9be4, 0x9be5, 0x9be6, 0x9be7, 0x9be8, 0x9be9, 0x9bea, 0x9beb,
+    0x9bec, 0x9bed, 0x9bee, 0x9bef, 0x9bf0, 0x9bf1, 0x9bf2, 0x9bf3,
+    0x9bf4, 0x9bf5, 0x9bf6, 0x9bf7, 0x9bf8, 0x9bf9, 0x9bfa, 0x9bfb,
+    0x9bfc, 0x9bfd, 0x9bfe, 0x9bff, 0x9c00, 0x9c01, 0x9c02, 0x9c03,
+    0x9c04, 0x9c05, 0x9c06, 0x9c07, 0x9c08, 0x9c09, 0x9c0a, 0x9c0b,
+    0x9c0c, 0x9c0d, 0x9c0e, 0x9c0f, 0x9c10, 0x9c11, 0x9c12, 0x9c13,
+    0x9c14, 0x9c15, 0x9c16, 0x9c17, 0x9c18, 0x9c19, 0x9c1a, 0x003f,
+    0x9c1b, 0x9c1c, 0x9c1d, 0x9c1e, 0x9c1f, 0x9c20, 0x9c21, 0x9c22,
+    0x9c23, 0x9c24, 0x9c25, 0x9c26, 0x9c27, 0x9c28, 0x9c29, 0x9c2a,
+    0x9c2b, 0x9c2c, 0x9c2d, 0x9c2e, 0x9c2f, 0x9c30, 0x9c31, 0x9c32,
+    0x9c33, 0x9c34, 0x9c35, 0x9c36, 0x9c37, 0x9c38, 0x9c39, 0x9c3a,
+    0x9c3b, 0x89e5, 0x89eb, 0x89ef, 0x8a3e, 0x8b26, 0x9753, 0x96e9,
+    0x96f3, 0x96ef, 0x9706, 0x9701, 0x9708, 0x970f, 0x970e, 0x972a,
+    0x972d, 0x9730, 0x973e, 0x9f80, 0x9f83, 0x9f85, 0x9f86, 0x9f87,
+    0x9f88, 0x9f89, 0x9f8a, 0x9f8c, 0x9efe, 0x9f0b, 0x9f0d, 0x96b9,
+    0x96bc, 0x96bd, 0x96ce, 0x96d2, 0x77bf, 0x96e0, 0x928e, 0x92ae,
+    0x92c8, 0x933e, 0x936a, 0x93ca, 0x938f, 0x943e, 0x946b, 0x9c7f,
+    0x9c82, 0x9c85, 0x9c86, 0x9c87, 0x9c88, 0x7a23, 0x9c8b, 0x9c8e,
+    0x9c90, 0x9c91, 0x9c92, 0x9c94, 0x9c95, 0x9c9a, 0x9c9b, 0x9c9e,
+    0x9c9f, 0x9ca0, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca5, 0x9ca6, 0x9ca7,
+    0x9ca8, 0x9ca9, 0x9cab, 0x9cad, 0x9cae, 0x9cb0, 0x9cb1, 0x9cb2,
+    0x9cb3, 0x9cb4, 0x9cb5, 0x9cb6, 0x9cb7, 0x9cba, 0x9cbb, 0x9cbc,
+    0x9cbd, 0x9cc4, 0x9cc5, 0x9cc6, 0x9cc7, 0x9cca, 0x9ccb, 0x003f,
+    /* lead byte f7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9c3c, 0x9c3d, 0x9c3e, 0x9c3f, 0x9c40, 0x9c41, 0x9c42, 0x9c43,
+    0x9c44, 0x9c45, 0x9c46, 0x9c47, 0x9c48, 0x9c49, 0x9c4a, 0x9c4b,
+    0x9c4c, 0x9c4d, 0x9c4e, 0x9c4f, 0x9c50, 0x9c51, 0x9c52, 0x9c53,
+    0x9c54, 0x9c55, 0x9c56, 0x9c57, 0x9c58, 0x9c59, 0x9c5a, 0x9c5b,
+    0x9c5c, 0x9c5d, 0x9c5e, 0x9c5f, 0x9c60, 0x9c61, 0x9c62, 0x9c63,
+    0x9c64, 0x9c65, 0x9c66, 0x9c67, 0x9c68, 0x9c69, 0x9c6a, 0x9c6b,
+    0x9c6c, 0x9c6d, 0x9c6e, 0x9c6f, 0x9c70, 0x9c71, 0x9c72, 0x9c73,
+    0x9c74, 0x9c75, 0x9c76, 0x9c77, 0x9c78, 0x9c79, 0x9c7a, 0x003f,
+    0x9c7b, 0x9c7d, 0x9c7e, 0x9c80, 0x9c83, 0x9c84, 0x9c89, 0x9c8a,
+    0x9c8c, 0x9c8f, 0x9c93, 0x9c96, 0x9c97, 0x9c98, 0x9c99, 0x9c9d,
+    0x9caa, 0x9cac, 0x9caf, 0x9cb9, 0x9cbe, 0x9cbf, 0x9cc0, 0x9cc1,
+    0x9cc2, 0x9cc8, 0x9cc9, 0x9cd1, 0x9cd2, 0x9cda, 0x9cdb, 0x9ce0,
+    0x9ce1, 0x9ccc, 0x9ccd, 0x9cce, 0x9ccf, 0x9cd0, 0x9cd3, 0x9cd4,
+    0x9cd5, 0x9cd7, 0x9cd8, 0x9cd9, 0x9cdc, 0x9cdd, 0x9cdf, 0x9ce2,
+    0x977c, 0x9785, 0x9791, 0x9792, 0x9794, 0x97af, 0x97ab, 0x97a3,
+    0x97b2, 0x97b4, 0x9ab1, 0x9ab0, 0x9ab7, 0x9e58, 0x9ab6, 0x9aba,
+    0x9abc, 0x9ac1, 0x9ac0, 0x9ac5, 0x9ac2, 0x9acb, 0x9acc, 0x9ad1,
+    0x9b45, 0x9b43, 0x9b47, 0x9b49, 0x9b48, 0x9b4d, 0x9b51, 0x98e8,
+    0x990d, 0x992e, 0x9955, 0x9954, 0x9adf, 0x9ae1, 0x9ae6, 0x9aef,
+    0x9aeb, 0x9afb, 0x9aed, 0x9af9, 0x9b08, 0x9b0f, 0x9b13, 0x9b1f,
+    0x9b23, 0x9ebd, 0x9ebe, 0x7e3b, 0x9e82, 0x9e87, 0x9e88, 0x9e8b,
+    0x9e92, 0x93d6, 0x9e9d, 0x9e9f, 0x9edb, 0x9edc, 0x9edd, 0x9ee0,
+    0x9edf, 0x9ee2, 0x9ee9, 0x9ee7, 0x9ee5, 0x9eea, 0x9eef, 0x9f22,
+    0x9f2c, 0x9f2f, 0x9f39, 0x9f37, 0x9f3d, 0x9f3e, 0x9f44, 0x003f,
+    /* lead byte f8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9ce3, 0x9ce4, 0x9ce5, 0x9ce6, 0x9ce7, 0x9ce8, 0x9ce9, 0x9cea,
+    0x9ceb, 0x9cec, 0x9ced, 0x9cee, 0x9cef, 0x9cf0, 0x9cf1, 0x9cf2,
+    0x9cf3, 0x9cf4, 0x9cf5, 0x9cf6, 0x9cf7, 0x9cf8, 0x9cf9, 0x9cfa,
+    0x9cfb, 0x9cfc, 0x9cfd, 0x9cfe, 0x9cff, 0x9d00, 0x9d01, 0x9d02,
+    0x9d03, 0x9d04, 0x9d05, 0x9d06, 0x9d07, 0x9d08, 0x9d09, 0x9d0a,
+    0x9d0b, 0x9d0c, 0x9d0d, 0x9d0e, 0x9d0f, 0x9d10, 0x9d11, 0x9d12,
+    0x9d13, 0x9d14, 0x9d15, 0x9d16, 0x9d17, 0x9d18, 0x9d19, 0x9d1a,
+    0x9d1b, 0x9d1c, 0x9d1d, 0x9d1e, 0x9d1f, 0x9d20, 0x9d21, 0x003f,
+    0x9d22, 0x9d23, 0x9d24, 0x9d25, 0x9d26, 0x9d27, 0x9d28, 0x9d29,
+    0x9d2a, 0x9d2b, 0x9d2c, 0x9d2d, 0x9d2e, 0x9d2f, 0x9d30, 0x9d31,
+    0x9d32, 0x9d33, 0x9d34, 0x9d35, 0x9d36, 0x9d37, 0x9d38, 0x9d39,
+    0x9d3a, 0x9d3b, 0x9d3c, 0x9d3d, 0x9d3e, 0x9d3f, 0x9d40, 0x9d41,
+    0x9d42, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte f9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9d43, 0x9d44, 0x9d45, 0x9d46, 0x9d47, 0x9d48, 0x9d49, 0x9d4a,
+    0x9d4b, 0x9d4c, 0x9d4d, 0x9d4e, 0x9d4f, 0x9d50, 0x9d51, 0x9d52,
+    0x9d53, 0x9d54, 0x9d55, 0x9d56, 0x9d57, 0x9d58, 0x9d59, 0x9d5a,
+    0x9d5b, 0x9d5c, 0x9d5d, 0x9d5e, 0x9d5f, 0x9d60, 0x9d61, 0x9d62,
+    0x9d63, 0x9d64, 0x9d65, 0x9d66, 0x9d67, 0x9d68, 0x9d69, 0x9d6a,
+    0x9d6b, 0x9d6c, 0x9d6d, 0x9d6e, 0x9d6f, 0x9d70, 0x9d71, 0x9d72,
+    0x9d73, 0x9d74, 0x9d75, 0x9d76, 0x9d77, 0x9d78, 0x9d79, 0x9d7a,
+    0x9d7b, 0x9d7c, 0x9d7d, 0x9d7e, 0x9d7f, 0x9d80, 0x9d81, 0x003f,
+    0x9d82, 0x9d83, 0x9d84, 0x9d85, 0x9d86, 0x9d87, 0x9d88, 0x9d89,
+    0x9d8a, 0x9d8b, 0x9d8c, 0x9d8d, 0x9d8e, 0x9d8f, 0x9d90, 0x9d91,
+    0x9d92, 0x9d93, 0x9d94, 0x9d95, 0x9d96, 0x9d97, 0x9d98, 0x9d99,
+    0x9d9a, 0x9d9b, 0x9d9c, 0x9d9d, 0x9d9e, 0x9d9f, 0x9da0, 0x9da1,
+    0x9da2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte fa */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9da3, 0x9da4, 0x9da5, 0x9da6, 0x9da7, 0x9da8, 0x9da9, 0x9daa,
+    0x9dab, 0x9dac, 0x9dad, 0x9dae, 0x9daf, 0x9db0, 0x9db1, 0x9db2,
+    0x9db3, 0x9db4, 0x9db5, 0x9db6, 0x9db7, 0x9db8, 0x9db9, 0x9dba,
+    0x9dbb, 0x9dbc, 0x9dbd, 0x9dbe, 0x9dbf, 0x9dc0, 0x9dc1, 0x9dc2,
+    0x9dc3, 0x9dc4, 0x9dc5, 0x9dc6, 0x9dc7, 0x9dc8, 0x9dc9, 0x9dca,
+    0x9dcb, 0x9dcc, 0x9dcd, 0x9dce, 0x9dcf, 0x9dd0, 0x9dd1, 0x9dd2,
+    0x9dd3, 0x9dd4, 0x9dd5, 0x9dd6, 0x9dd7, 0x9dd8, 0x9dd9, 0x9dda,
+    0x9ddb, 0x9ddc, 0x9ddd, 0x9dde, 0x9ddf, 0x9de0, 0x9de1, 0x003f,
+    0x9de2, 0x9de3, 0x9de4, 0x9de5, 0x9de6, 0x9de7, 0x9de8, 0x9de9,
+    0x9dea, 0x9deb, 0x9dec, 0x9ded, 0x9dee, 0x9def, 0x9df0, 0x9df1,
+    0x9df2, 0x9df3, 0x9df4, 0x9df5, 0x9df6, 0x9df7, 0x9df8, 0x9df9,
+    0x9dfa, 0x9dfb, 0x9dfc, 0x9dfd, 0x9dfe, 0x9dff, 0x9e00, 0x9e01,
+    0x9e02, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte fb */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9e03, 0x9e04, 0x9e05, 0x9e06, 0x9e07, 0x9e08, 0x9e09, 0x9e0a,
+    0x9e0b, 0x9e0c, 0x9e0d, 0x9e0e, 0x9e0f, 0x9e10, 0x9e11, 0x9e12,
+    0x9e13, 0x9e14, 0x9e15, 0x9e16, 0x9e17, 0x9e18, 0x9e19, 0x9e1a,
+    0x9e1b, 0x9e1c, 0x9e1d, 0x9e1e, 0x9e24, 0x9e27, 0x9e2e, 0x9e30,
+    0x9e34, 0x9e3b, 0x9e3c, 0x9e40, 0x9e4d, 0x9e50, 0x9e52, 0x9e53,
+    0x9e54, 0x9e56, 0x9e59, 0x9e5d, 0x9e5f, 0x9e60, 0x9e61, 0x9e62,
+    0x9e65, 0x9e6e, 0x9e6f, 0x9e72, 0x9e74, 0x9e75, 0x9e76, 0x9e77,
+    0x9e78, 0x9e79, 0x9e7a, 0x9e7b, 0x9e7c, 0x9e7d, 0x9e80, 0x003f,
+    0x9e81, 0x9e83, 0x9e84, 0x9e85, 0x9e86, 0x9e89, 0x9e8a, 0x9e8c,
+    0x9e8d, 0x9e8e, 0x9e8f, 0x9e90, 0x9e91, 0x9e94, 0x9e95, 0x9e96,
+    0x9e97, 0x9e98, 0x9e99, 0x9e9a, 0x9e9b, 0x9e9c, 0x9e9e, 0x9ea0,
+    0x9ea1, 0x9ea2, 0x9ea3, 0x9ea4, 0x9ea5, 0x9ea7, 0x9ea8, 0x9ea9,
+    0x9eaa, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte fc */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9eab, 0x9eac, 0x9ead, 0x9eae, 0x9eaf, 0x9eb0, 0x9eb1, 0x9eb2,
+    0x9eb3, 0x9eb5, 0x9eb6, 0x9eb7, 0x9eb9, 0x9eba, 0x9ebc, 0x9ebf,
+    0x9ec0, 0x9ec1, 0x9ec2, 0x9ec3, 0x9ec5, 0x9ec6, 0x9ec7, 0x9ec8,
+    0x9eca, 0x9ecb, 0x9ecc, 0x9ed0, 0x9ed2, 0x9ed3, 0x9ed5, 0x9ed6,
+    0x9ed7, 0x9ed9, 0x9eda, 0x9ede, 0x9ee1, 0x9ee3, 0x9ee4, 0x9ee6,
+    0x9ee8, 0x9eeb, 0x9eec, 0x9eed, 0x9eee, 0x9ef0, 0x9ef1, 0x9ef2,
+    0x9ef3, 0x9ef4, 0x9ef5, 0x9ef6, 0x9ef7, 0x9ef8, 0x9efa, 0x9efd,
+    0x9eff, 0x9f00, 0x9f01, 0x9f02, 0x9f03, 0x9f04, 0x9f05, 0x003f,
+    0x9f06, 0x9f07, 0x9f08, 0x9f09, 0x9f0a, 0x9f0c, 0x9f0f, 0x9f11,
+    0x9f12, 0x9f14, 0x9f15, 0x9f16, 0x9f18, 0x9f1a, 0x9f1b, 0x9f1c,
+    0x9f1d, 0x9f1e, 0x9f1f, 0x9f21, 0x9f23, 0x9f24, 0x9f25, 0x9f26,
+    0x9f27, 0x9f28, 0x9f29, 0x9f2a, 0x9f2b, 0x9f2d, 0x9f2e, 0x9f30,
+    0x9f31, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte fd */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9f32, 0x9f33, 0x9f34, 0x9f35, 0x9f36, 0x9f38, 0x9f3a, 0x9f3c,
+    0x9f3f, 0x9f40, 0x9f41, 0x9f42, 0x9f43, 0x9f45, 0x9f46, 0x9f47,
+    0x9f48, 0x9f49, 0x9f4a, 0x9f4b, 0x9f4c, 0x9f4d, 0x9f4e, 0x9f4f,
+    0x9f52, 0x9f53, 0x9f54, 0x9f55, 0x9f56, 0x9f57, 0x9f58, 0x9f59,
+    0x9f5a, 0x9f5b, 0x9f5c, 0x9f5d, 0x9f5e, 0x9f5f, 0x9f60, 0x9f61,
+    0x9f62, 0x9f63, 0x9f64, 0x9f65, 0x9f66, 0x9f67, 0x9f68, 0x9f69,
+    0x9f6a, 0x9f6b, 0x9f6c, 0x9f6d, 0x9f6e, 0x9f6f, 0x9f70, 0x9f71,
+    0x9f72, 0x9f73, 0x9f74, 0x9f75, 0x9f76, 0x9f77, 0x9f78, 0x003f,
+    0x9f79, 0x9f7a, 0x9f7b, 0x9f7c, 0x9f7d, 0x9f7e, 0x9f81, 0x9f82,
+    0x9f8d, 0x9f8e, 0x9f8f, 0x9f90, 0x9f91, 0x9f92, 0x9f93, 0x9f94,
+    0x9f95, 0x9f96, 0x9f97, 0x9f98, 0x9f9c, 0x9f9d, 0x9f9e, 0x9fa1,
+    0x9fa2, 0x9fa3, 0x9fa4, 0x9fa5, 0xf92c, 0xf979, 0xf995, 0xf9e7,
+    0xf9f1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte fe */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xfa0c, 0xfa0d, 0xfa0e, 0xfa0f, 0xfa11, 0xfa13, 0xfa14, 0xfa18,
+    0xfa1f, 0xfa20, 0xfa21, 0xfa23, 0xfa24, 0xfa27, 0xfa28, 0xfa29,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f
+};
+
+static const unsigned char cp2uni_leadbytes[256] =
+{
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00
+};
+
+static const unsigned short uni2cp_low[27904] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0020, 0x0021, 0x0063, 0x004c, 0xa1e8, 0x0059, 0x007c, 0xa1ec,
+    0xa1a7, 0x0063, 0x0061, 0xa1b6, 0x003f, 0x002d, 0x0072, 0xa1a5,
+    0xa1e3, 0xa1c0, 0x0032, 0x0033, 0xa840, 0xa6cc, 0x003f, 0xa1a4,
+    0x002c, 0x0031, 0x006f, 0xa1b7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0043,
+    0x0045, 0x0045, 0x0045, 0x0045, 0x0049, 0x0049, 0x0049, 0x0049,
+    0x0044, 0x004e, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0xa1c1,
+    0x004f, 0x0055, 0x0055, 0x0055, 0x0055, 0x0059, 0x003f, 0xa6c2,
+    0xa8a4, 0xa8a2, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0063,
+    0xa8a8, 0xa8a6, 0xa8ba, 0x0065, 0xa8ac, 0xa8aa, 0x0069, 0x0069,
+    0x0064, 0x006e, 0xa8b0, 0xa8ae, 0x006f, 0x006f, 0x006f, 0xa1c2,
+    0x006f, 0xa8b4, 0xa8b2, 0x0075, 0xa8b9, 0x0079, 0x003f, 0x0079,
+    /* 0x0100 .. 0x01ff */
+    0x0041, 0xa8a1, 0x0041, 0x0061, 0x0041, 0x0061, 0x0043, 0x0063,
+    0x0043, 0x0063, 0x0043, 0x0063, 0x0043, 0x0063, 0x0044, 0x0064,
+    0x0044, 0x0064, 0x0045, 0xa8a5, 0x0045, 0x0065, 0x0045, 0x0065,
+    0x0045, 0x0065, 0x0045, 0xa8a7, 0x0047, 0x0067, 0x0047, 0x0067,
+    0x0047, 0x0067, 0x0047, 0x0067, 0x0048, 0x0068, 0x0048, 0x0068,
+    0x0049, 0x0069, 0x0049, 0xa8a9, 0x0049, 0x0069, 0x0049, 0x0069,
+    0x0049, 0x0069, 0x003f, 0x003f, 0x004a, 0x006a, 0x004b, 0x006b,
+    0x003f, 0x004c, 0x006c, 0x004c, 0x006c, 0x004c, 0x006c, 0x003f,
+    0x003f, 0x004c, 0x006c, 0x004e, 0xa8bd, 0x004e, 0x006e, 0x004e,
+    0xa8be, 0x003f, 0x003f, 0x003f, 0x004f, 0xa8ad, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x004f, 0x006f, 0x0052, 0x0072, 0x0052, 0x0072,
+    0x0052, 0x0072, 0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073,
+    0x0053, 0x0073, 0x0054, 0x0074, 0x0054, 0x0074, 0x0054, 0x0074,
+    0x0055, 0x0075, 0x0055, 0xa8b1, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0055, 0x0075, 0x0055, 0x0075, 0x0057, 0x0077, 0x0059, 0x0079,
+    0x0059, 0x005a, 0x007a, 0x005a, 0x007a, 0x005a, 0x007a, 0x0073,
+    0x0062, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0044, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0045, 0x0046, 0x0066, 0x003f, 0x003f, 0x003f, 0x003f, 0x0049,
+    0x003f, 0x003f, 0x006c, 0x003f, 0x003f, 0x003f, 0x003f, 0x004f,
+    0x004f, 0x006f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x0074, 0x003f, 0x003f, 0x0054, 0x0055,
+    0x0075, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x007a, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa9a6, 0x003f, 0x003f, 0x0021, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0041, 0xa8a3, 0x0049,
+    0xa8ab, 0x004f, 0xa8af, 0x0055, 0xa8b3, 0x0055, 0xa8b5, 0x0055,
+    0xa8b6, 0x0055, 0xa8b7, 0x0055, 0xa8b8, 0x003f, 0x0041, 0x0061,
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0047, 0x0067, 0x0047, 0x0067,
+    0x004b, 0x006b, 0x004f, 0x006f, 0x004f, 0x006f, 0x003f, 0x003f,
+    0x006a, 0x003f, 0x003f, 0x003f, 0x0047, 0x0067, 0x003f, 0x003f,
+    0x004e, 0x006e, 0x0041, 0x0061, 0x0041, 0x0061, 0x004f, 0x006f,
+    /* 0x0200 .. 0x02ff */
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0045, 0x0065, 0x0045, 0x0065,
+    0x0049, 0x0069, 0x0049, 0x0069, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x0052, 0x0072, 0x0052, 0x0072, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0053, 0x0073, 0x0054, 0x0074, 0x003f, 0x003f, 0x0048, 0x0068,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0041, 0x0061,
+    0x0045, 0x0065, 0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x0059, 0x0079, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xa8bb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xa8c0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0068, 0x003f, 0x006a, 0x0072, 0x003f, 0x003f, 0x003f, 0x0077,
+    0x0079, 0xa840, 0xa1e5, 0xa1ae, 0xa1af, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x005e, 0x003f, 0x005e, 0xa1a6,
+    0x0027, 0xa1a5, 0xa840, 0xa841, 0x003f, 0x005f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xa842, 0xa1e3, 0x003f, 0x007e, 0xa1e5, 0x003f, 0x003f,
+    0x003f, 0x006c, 0x0073, 0x0078, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x0300 .. 0x03ff */
+    0xa841, 0xa840, 0x005e, 0x007e, 0xa1a5, 0xa1a5, 0x003f, 0xa842,
+    0xa1a7, 0x003f, 0xa1e3, 0xa1e5, 0xa1a6, 0x003f, 0x0022, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x002c,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x005f, 0x005f, 0x005f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa841, 0xa840, 0x003f, 0x003f, 0xa1a7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa840, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003b, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa840, 0xa1a7, 0xa6a1, 0xa1a4,
+    0xa6a5, 0xa6a7, 0xa6a9, 0x003f, 0xa6af, 0x003f, 0xa6b4, 0xa6b8,
+    0xa6c9, 0xa6a1, 0xa6a2, 0xa6a3, 0xa6a4, 0xa6a5, 0xa6a6, 0xa6a7,
+    0xa6a8, 0xa6a9, 0xa6aa, 0xa6ab, 0xa6ac, 0xa6ad, 0xa6ae, 0xa6af,
+    0xa6b0, 0xa6b1, 0x003f, 0xa6b2, 0xa6b3, 0xa6b4, 0xa6b5, 0xa6b6,
+    0xa6b7, 0xa6b8, 0xa6a9, 0xa6b4, 0xa6c1, 0xa6c5, 0xa6c7, 0xa6c9,
+    0xa6d4, 0xa6c1, 0xa6c2, 0xa6c3, 0xa6c4, 0xa6c5, 0xa6c6, 0xa6c7,
+    0xa6c8, 0xa6c9, 0xa6ca, 0xa6cb, 0xa6cc, 0xa6cd, 0xa6ce, 0xa6cf,
+    0xa6d0, 0xa6d1, 0x003f, 0xa6d2, 0xa6d3, 0xa6d4, 0xa6d5, 0xa6d6,
+    0xa6d7, 0xa6d8, 0xa6c9, 0xa6d4, 0xa6cf, 0xa6d4, 0xa6d8, 0x003f,
+    0xa6c2, 0xa6c8, 0xa6b4, 0xa6b4, 0xa6b4, 0xa6d5, 0xa6d0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa6ca, 0xa6d1, 0x003f, 0x003f, 0xa6a8, 0xa6c5, 0x003f, 0x003f,
+    0x003f, 0xa6b2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x0400 .. 0x04ff */
+    0xa7a6, 0xa7a7, 0x003f, 0xa7a4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa7ac, 0xa7aa, 0xa7b5, 0x003f,
+    0xa7a1, 0xa7a2, 0xa7a3, 0xa7a4, 0xa7a5, 0xa7a6, 0xa7a8, 0xa7a9,
+    0xa7aa, 0xa7ab, 0xa7ac, 0xa7ad, 0xa7ae, 0xa7af, 0xa7b0, 0xa7b1,
+    0xa7b2, 0xa7b3, 0xa7b4, 0xa7b5, 0xa7b6, 0xa7b7, 0xa7b8, 0xa7b9,
+    0xa7ba, 0xa7bb, 0xa7bc, 0xa7bd, 0xa7be, 0xa7bf, 0xa7c0, 0xa7c1,
+    0xa7d1, 0xa7d2, 0xa7d3, 0xa7d4, 0xa7d5, 0xa7d6, 0xa7d8, 0xa7d9,
+    0xa7da, 0xa7db, 0xa7dc, 0xa7dd, 0xa7de, 0xa7df, 0xa7e0, 0xa7e1,
+    0xa7e2, 0xa7e3, 0xa7e4, 0xa7e5, 0xa7e6, 0xa7e7, 0xa7e8, 0xa7e9,
+    0xa7ea, 0xa7eb, 0xa7ec, 0xa7ed, 0xa7ee, 0xa7ef, 0xa7f0, 0xa7f1,
+    0xa7d6, 0xa7d7, 0x003f, 0xa7d4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa7dc, 0xa7da, 0xa7e5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xa7a8, 0xa7d8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa7a1, 0xa7d1, 0xa7a1, 0xa7d1, 0x003f, 0x003f, 0xa7a6, 0xa7d6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa7a8, 0xa7d8, 0xa7a9, 0xa7d9,
+    0x003f, 0x003f, 0xa7aa, 0xa7da, 0xa7aa, 0xa7da, 0xa7b0, 0xa7e0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa7bf, 0xa7ef, 0xa7b5, 0xa7e5,
+    0xa7b5, 0xa7e5, 0xa7b5, 0xa7e5, 0xa7b9, 0xa7e9, 0x003f, 0x003f,
+    0xa7bd, 0xa7ed, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x1d00 .. 0x1dff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x0041, 0x0041, 0x0042, 0x003f,
+    0x0044, 0x0045, 0x003f, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b,
+    0x004c, 0x004d, 0x004e, 0x003f, 0x004f, 0x003f, 0x0050, 0x0052,
+    0x0054, 0x0055, 0x0057, 0x0061, 0x003f, 0xa8bb, 0x003f, 0x0062,
+    0x0064, 0x0065, 0x003f, 0x003f, 0x003f, 0x0067, 0x003f, 0x006b,
+    0x006d, 0x003f, 0x006f, 0x003f, 0x003f, 0x003f, 0x0070, 0x0074,
+    0x0075, 0x003f, 0x003f, 0x0076, 0x003f, 0xa6c2, 0xa6c3, 0xa6c4,
+    0xa6d5, 0xa6d6, 0x0069, 0x0072, 0x0075, 0x0076, 0xa6c2, 0xa6c3,
+    0xa6d1, 0xa6d5, 0xa6d6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa7df, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x0063, 0x003f, 0x0064, 0x003f,
+    0x0066, 0x003f, 0xa8c0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0074, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x007a, 0x003f, 0x003f, 0x003f, 0xa6c8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x1e00 .. 0x1eff */
+    0x0041, 0x0061, 0x0042, 0x0062, 0x0042, 0x0062, 0x0042, 0x0062,
+    0x0043, 0x0063, 0x0044, 0x0064, 0x0044, 0x0064, 0x0044, 0x0064,
+    0x0044, 0x0064, 0x0044, 0x0064, 0x0045, 0xa8a5, 0x0045, 0xa8a5,
+    0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, 0x0046, 0x0066,
+    0x0047, 0x0067, 0x0048, 0x0068, 0x0048, 0x0068, 0x0048, 0x0068,
+    0x0048, 0x0068, 0x0048, 0x0068, 0x0049, 0x0069, 0x0049, 0x0069,
+    0x004b, 0x006b, 0x004b, 0x006b, 0x004b, 0x006b, 0x004c, 0x006c,
+    0x004c, 0x006c, 0x004c, 0x006c, 0x004c, 0x006c, 0x004d, 0x006d,
+    0x004d, 0x006d, 0x004d, 0x006d, 0x004e, 0x006e, 0x004e, 0x006e,
+    0x004e, 0x006e, 0x004e, 0x006e, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0xa8ad, 0x004f, 0xa8ad, 0x0050, 0x0070, 0x0050, 0x0070,
+    0x0052, 0x0072, 0x0052, 0x0072, 0x0052, 0x0072, 0x0052, 0x0072,
+    0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073,
+    0x0053, 0x0073, 0x0054, 0x0074, 0x0054, 0x0074, 0x0054, 0x0074,
+    0x0054, 0x0074, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0055, 0x0075, 0x0055, 0xa8b1, 0x0056, 0x0076, 0x0056, 0x0076,
+    0x0057, 0x0077, 0x0057, 0x0077, 0x0057, 0x0077, 0x0057, 0x0077,
+    0x0057, 0x0077, 0x0058, 0x0078, 0x0058, 0x0078, 0x0059, 0x0079,
+    0x005a, 0x007a, 0x005a, 0x007a, 0x005a, 0x007a, 0x0068, 0x0074,
+    0x0077, 0x0079, 0x003f, 0x0073, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061,
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061,
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061,
+    0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0xa8ba,
+    0x0045, 0xa8ba, 0x0045, 0xa8ba, 0x0045, 0xa8ba, 0x0045, 0x0065,
+    0x0049, 0x0069, 0x0049, 0x0069, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x004f, 0x006f, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0055, 0x0075, 0x0059, 0x0079, 0x0059, 0x0079, 0x0059, 0x0079,
+    0x0059, 0x0079, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x1f00 .. 0x1fff */
+    0xa6c1, 0xa6c1, 0xa6c1, 0xa6c1, 0xa6c1, 0xa6c1, 0xa6c1, 0xa6c1,
+    0xa6a1, 0xa6a1, 0xa6a1, 0xa6a1, 0xa6a1, 0xa6a1, 0xa6a1, 0xa6a1,
+    0xa6c5, 0xa6c5, 0xa6c5, 0xa6c5, 0xa6c5, 0xa6c5, 0x003f, 0x003f,
+    0xa6a5, 0xa6a5, 0xa6a5, 0xa6a5, 0xa6a5, 0xa6a5, 0x003f, 0x003f,
+    0xa6c7, 0xa6c7, 0xa6c7, 0xa6c7, 0xa6c7, 0xa6c7, 0xa6c7, 0xa6c7,
+    0xa6a7, 0xa6a7, 0xa6a7, 0xa6a7, 0xa6a7, 0xa6a7, 0xa6a7, 0xa6a7,
+    0xa6c9, 0xa6c9, 0xa6c9, 0xa6c9, 0xa6c9, 0xa6c9, 0xa6c9, 0xa6c9,
+    0xa6a9, 0xa6a9, 0xa6a9, 0xa6a9, 0xa6a9, 0xa6a9, 0xa6a9, 0xa6a9,
+    0xa6cf, 0xa6cf, 0xa6cf, 0xa6cf, 0xa6cf, 0xa6cf, 0x003f, 0x003f,
+    0xa6af, 0xa6af, 0xa6af, 0xa6af, 0xa6af, 0xa6af, 0x003f, 0x003f,
+    0xa6d4, 0xa6d4, 0xa6d4, 0xa6d4, 0xa6d4, 0xa6d4, 0xa6d4, 0xa6d4,
+    0x003f, 0xa6b4, 0x003f, 0xa6b4, 0x003f, 0xa6b4, 0x003f, 0xa6b4,
+    0xa6d8, 0xa6d8, 0xa6d8, 0xa6d8, 0xa6d8, 0xa6d8, 0xa6d8, 0xa6d8,
+    0xa6b8, 0xa6b8, 0xa6b8, 0xa6b8, 0xa6b8, 0xa6b8, 0xa6b8, 0xa6b8,
+    0xa6c1, 0xa6c1, 0xa6c5, 0xa6c5, 0xa6c7, 0xa6c7, 0xa6c9, 0xa6c9,
+    0xa6cf, 0xa6cf, 0xa6d4, 0xa6d4, 0xa6d8, 0xa6d8, 0x003f, 0x003f,
+    0xa6c1, 0xa6c1, 0xa6c1, 0xa6c1, 0xa6c1, 0xa6c1, 0xa6c1, 0xa6c1,
+    0xa6a1, 0xa6a1, 0xa6a1, 0xa6a1, 0xa6a1, 0xa6a1, 0xa6a1, 0xa6a1,
+    0xa6c7, 0xa6c7, 0xa6c7, 0xa6c7, 0xa6c7, 0xa6c7, 0xa6c7, 0xa6c7,
+    0xa6a7, 0xa6a7, 0xa6a7, 0xa6a7, 0xa6a7, 0xa6a7, 0xa6a7, 0xa6a7,
+    0xa6d8, 0xa6d8, 0xa6d8, 0xa6d8, 0xa6d8, 0xa6d8, 0xa6d8, 0xa6d8,
+    0xa6b8, 0xa6b8, 0xa6b8, 0xa6b8, 0xa6b8, 0xa6b8, 0xa6b8, 0xa6b8,
+    0xa6c1, 0xa6c1, 0xa6c1, 0xa6c1, 0xa6c1, 0x003f, 0xa6c1, 0xa6c1,
+    0xa6a1, 0xa6a1, 0xa6a1, 0xa6a1, 0xa6a1, 0x003f, 0xa6c9, 0x003f,
+    0x003f, 0xa1a7, 0xa6c7, 0xa6c7, 0xa6c7, 0x003f, 0xa6c7, 0xa6c7,
+    0xa6a5, 0xa6a5, 0xa6a7, 0xa6a7, 0xa6a7, 0x003f, 0x003f, 0x003f,
+    0xa6c9, 0xa6c9, 0xa6c9, 0xa6c9, 0x003f, 0x003f, 0xa6c9, 0xa6c9,
+    0xa6a9, 0xa6a9, 0xa6a9, 0xa6a9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa6d4, 0xa6d4, 0xa6d4, 0xa6d4, 0xa6d1, 0xa6d1, 0xa6d4, 0xa6d4,
+    0xa6b4, 0xa6b4, 0xa6b4, 0xa6b4, 0xa6b1, 0xa1a7, 0xa1a7, 0x0060,
+    0x003f, 0x003f, 0xa6d8, 0xa6d8, 0xa6d8, 0x003f, 0xa6d8, 0xa6d8,
+    0xa6af, 0xa6af, 0xa6b8, 0xa6b8, 0xa6b8, 0xa840, 0x003f, 0x003f,
+    /* 0x2000 .. 0x20ff */
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+    0x0020, 0x0020, 0x0020, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa95c, 0xa95c, 0x003f, 0xa843, 0xa1aa, 0xa844, 0xa1ac, 0x005f,
+    0xa1ae, 0xa1af, 0x002c, 0xa1ae, 0xa1b0, 0xa1b1, 0x002c, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x002e, 0xa845, 0xa1ad, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0020,
+    0xa1eb, 0x003f, 0xa1e4, 0xa1e5, 0x003f, 0xa846, 0x003f, 0x003f,
+    0x003f, 0xa1b4, 0xa1b5, 0xa1f9, 0x0021, 0x003f, 0xa1a5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa84d, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0020,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa1e3, 0x0069, 0x003f, 0x003f, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x002b, 0xa95c, 0x003d, 0x0028, 0x0029, 0x006e,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x002b, 0xa95c, 0x003d, 0x0028, 0x0029, 0x003f,
+    0x0061, 0x0065, 0x006f, 0x0078, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0063, 0x003f, 0x003f, 0x004c, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x0080, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2100 .. 0x21ff */
+    0x003f, 0x003f, 0x0043, 0xa1e6, 0x003f, 0xa847, 0x003f, 0x0045,
+    0x003f, 0xa848, 0x0067, 0x0048, 0x0048, 0x0048, 0x0068, 0x0068,
+    0x0049, 0x0049, 0x004c, 0x006c, 0x003f, 0x004e, 0xa1ed, 0x003f,
+    0x0050, 0x0050, 0x0051, 0x0052, 0x0052, 0x0052, 0x003f, 0x003f,
+    0x003f, 0xa959, 0x003f, 0x003f, 0x005a, 0x003f, 0xa6b8, 0x003f,
+    0x005a, 0x003f, 0x004b, 0x0041, 0x0042, 0x0043, 0x0065, 0x0065,
+    0x0045, 0x0046, 0x003f, 0x004d, 0x006f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0069, 0x003f, 0x003f, 0xa6d0, 0xa6c3, 0xa6a3, 0xa6b0,
+    0xa1c6, 0x003f, 0x003f, 0x003f, 0x003f, 0x0044, 0x0064, 0x0065,
+    0x0069, 0x006a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa2f1, 0xa2f2, 0xa2f3, 0xa2f4, 0xa2f5, 0xa2f6, 0xa2f7, 0xa2f8,
+    0xa2f9, 0xa2fa, 0xa2fb, 0xa2fc, 0x004c, 0x0043, 0x0044, 0x004d,
+    0xa2a1, 0xa2a2, 0xa2a3, 0xa2a4, 0xa2a5, 0xa2a6, 0xa2a7, 0xa2a8,
+    0xa2a9, 0xa2aa, 0x003f, 0x003f, 0x006c, 0x0063, 0x0064, 0x006d,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa1fb, 0xa1fc, 0xa1fa, 0xa1fd, 0x002d, 0x007c, 0xa849, 0xa84a,
+    0xa84b, 0xa84c, 0xa1fb, 0xa1fa, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x002d, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2200 .. 0x22ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x004f, 0x003f, 0x003f,
+    0xa1ca, 0xa1ca, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa1c7,
+    0x003f, 0xa1c6, 0xa95c, 0xa1c0, 0x003f, 0xa84d, 0x005c, 0x002a,
+    0xa1e3, 0x003f, 0xa1cc, 0x003f, 0x003f, 0xa1d8, 0xa1de, 0xa84e,
+    0xa1cf, 0x003f, 0x003f, 0xa84f, 0xa84f, 0xa1ce, 0xa1ce, 0xa1c4,
+    0xa1c5, 0xa1c9, 0xa1c8, 0xa1d2, 0x003f, 0x003f, 0xa1d3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa1e0, 0xa1df, 0xa1c3, 0xa1cb,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x007e, 0xa1d7, 0x003f, 0x003f,
+    0x003f, 0x007e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa1d6, 0xa1d6, 0x003f, 0x003f, 0xa1d5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xa850, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa1d9, 0xa1d4, 0xa1d4, 0xa1d4, 0xa1dc, 0xa1dd, 0xa851, 0xa852,
+    0x003f, 0x003f, 0xa1b6, 0xa1b7, 0x003f, 0x003f, 0xa1da, 0xa1db,
+    0xa1dc, 0xa1dd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa892, 0x003f, 0x003f,
+    0x003f, 0xa1d1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa1cd, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa853,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa1a4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2300 .. 0x23ff */
+    0x003f, 0x003f, 0x003f, 0x005e, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xa1d0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xa1b4, 0xa1b5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2400 .. 0x24ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa2d9, 0xa2da, 0xa2db, 0xa2dc, 0xa2dd, 0xa2de, 0xa2df, 0xa2e0,
+    0xa2e1, 0xa2e2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa2c5, 0xa2c6, 0xa2c7, 0xa2c8,
+    0xa2c9, 0xa2ca, 0xa2cb, 0xa2cc, 0xa2cd, 0xa2ce, 0xa2cf, 0xa2d0,
+    0xa2d1, 0xa2d2, 0xa2d3, 0xa2d4, 0xa2d5, 0xa2d6, 0xa2d7, 0xa2d8,
+    0xa2b1, 0xa2b2, 0xa2b3, 0xa2b4, 0xa2b5, 0xa2b6, 0xa2b7, 0xa2b8,
+    0xa2b9, 0xa2ba, 0xa2bb, 0xa2bc, 0xa2bd, 0xa2be, 0xa2bf, 0xa2c0,
+    0xa2c1, 0xa2c2, 0xa2c3, 0xa2c4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0041, 0x0042,
+    0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a,
+    0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052,
+    0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a,
+    0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068,
+    0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+    0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+    0x0079, 0x007a, 0x0030, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2500 .. 0x25ff */
+    0xa9a4, 0xa9a5, 0xa9a6, 0xa9a7, 0xa9a8, 0xa9a9, 0xa9aa, 0xa9ab,
+    0xa9ac, 0xa9ad, 0xa9ae, 0xa9af, 0xa9b0, 0xa9b1, 0xa9b2, 0xa9b3,
+    0xa9b4, 0xa9b5, 0xa9b6, 0xa9b7, 0xa9b8, 0xa9b9, 0xa9ba, 0xa9bb,
+    0xa9bc, 0xa9bd, 0xa9be, 0xa9bf, 0xa9c0, 0xa9c1, 0xa9c2, 0xa9c3,
+    0xa9c4, 0xa9c5, 0xa9c6, 0xa9c7, 0xa9c8, 0xa9c9, 0xa9ca, 0xa9cb,
+    0xa9cc, 0xa9cd, 0xa9ce, 0xa9cf, 0xa9d0, 0xa9d1, 0xa9d2, 0xa9d3,
+    0xa9d4, 0xa9d5, 0xa9d6, 0xa9d7, 0xa9d8, 0xa9d9, 0xa9da, 0xa9db,
+    0xa9dc, 0xa9dd, 0xa9de, 0xa9df, 0xa9e0, 0xa9e1, 0xa9e2, 0xa9e3,
+    0xa9e4, 0xa9e5, 0xa9e6, 0xa9e7, 0xa9e8, 0xa9e9, 0xa9ea, 0xa9eb,
+    0xa9ec, 0xa9ed, 0xa9ee, 0xa9ef, 0x002d, 0x002d, 0x007c, 0x007c,
+    0xa854, 0xa855, 0xa856, 0xa857, 0xa858, 0xa859, 0xa85a, 0xa85b,
+    0xa85c, 0xa85d, 0xa85e, 0xa85f, 0xa860, 0xa861, 0xa862, 0xa863,
+    0xa864, 0xa865, 0xa866, 0xa867, 0xa868, 0xa869, 0xa86a, 0xa86b,
+    0xa86c, 0xa86d, 0xa86e, 0xa86f, 0xa870, 0xa871, 0xa872, 0xa873,
+    0xa874, 0xa875, 0xa876, 0xa877, 0x002d, 0x007c, 0x002d, 0x007c,
+    0x002d, 0x007c, 0x002d, 0x007c, 0x002d, 0x007c, 0x002d, 0x007c,
+    0x003f, 0xa878, 0xa879, 0xa87a, 0xa87b, 0xa87c, 0xa87d, 0xa87e,
+    0xa880, 0xa881, 0xa882, 0xa883, 0xa884, 0xa885, 0xa886, 0xa887,
+    0x003f, 0x003f, 0x003f, 0xa888, 0xa889, 0xa88a, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa1f6, 0xa1f5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xa1f8, 0xa1f7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa88b, 0xa88c, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa1f4, 0xa1f3,
+    0x003f, 0x003f, 0x003f, 0xa1f0, 0x003f, 0x003f, 0xa1f2, 0xa1f1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xa88d, 0xa88e, 0xa88f, 0xa890, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa1f0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2600 .. 0x26ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa1ef, 0xa1ee, 0x003f,
+    0x003f, 0xa891, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa1e2, 0x003f, 0xa1e1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2e00 .. 0x2eff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc4b8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb9ea, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2f00 .. 0x2fff */
+    0xd2bb, 0xd8ad, 0xd8bc, 0xd8af, 0xd2d2, 0x817c, 0xb6fe, 0xd9ef,
+    0xc8cb, 0xb6f9, 0xc8eb, 0xb0cb, 0xd8e7, 0xdaa2, 0xd9fb, 0xbcb8,
+    0xdbc9, 0xb5b6, 0xc1a6, 0xd9e8, 0xd8b0, 0xd8ce, 0x855b, 0xcaae,
+    0xb2b7, 0xdae0, 0xb3a7, 0xdbcc, 0xd3d6, 0xbfda, 0xe0ed, 0xcdc1,
+    0xcabf, 0xe2ba, 0x89e5, 0xcfa6, 0xb4f3, 0xc5ae, 0xd7d3, 0xe5b2,
+    0xb4e7, 0xd0a1, 0xdecc, 0xcaac, 0xe5f8, 0xc9bd, 0xe7dd, 0xb9a4,
+    0xbcba, 0xbded, 0xb8c9, 0xe7db, 0xb9e3, 0xdbc8, 0xdec3, 0xdfae,
+    0xb9ad, 0xe5e6, 0xe1ea, 0xe1dc, 0xd0c4, 0xb8ea, 0x91f4, 0xcad6,
+    0xd6a7, 0xeab7, 0xcec4, 0xb6b7, 0xbdef, 0xb7bd, 0xcede, 0xc8d5,
+    0xd4bb, 0xd4c2, 0xc4be, 0xc7b7, 0xd6b9, 0xb4f5, 0xecaf, 0xcee3,
+    0xb1c8, 0xc3ab, 0xcacf, 0xc6f8, 0xcbae, 0xbbf0, 0xd7a6, 0xb8b8,
+    0xd8b3, 0xe3dd, 0xc6ac, 0xd1c0, 0xc5a3, 0xc8ae, 0xd0fe, 0xd3f1,
+    0xb9cf, 0xcddf, 0xb8ca, 0xc9fa, 0xd3c3, 0xccef, 0xf1e2, 0xf0da,
+    0xb068, 0xb0d7, 0xc6a4, 0xc3f3, 0xc4bf, 0xc3ac, 0xcab8, 0xcaaf,
+    0xcabe, 0xb662, 0xbacc, 0xd1a8, 0xc1a2, 0xd6f1, 0xc3d7, 0xf4e9,
+    0xf3be, 0xcdf8, 0xd1f2, 0xd3f0, 0xc0cf, 0xb6f8, 0xf1e7, 0xb6fa,
+    0xedb2, 0xc8e2, 0xb3bc, 0xd7d4, 0xd6c1, 0xbeca, 0xc9e0, 0xe2b6,
+    0xd6db, 0xf4de, 0xc9ab, 0xc648, 0xf2ae, 0xb3e6, 0xd1aa, 0xd0d0,
+    0xd2c2, 0xd281, 0xd28a, 0xbdc7, 0xd1d4, 0xb9c8, 0xb6b9, 0xf5b9,
+    0xf5f4, 0xd890, 0xb3e0, 0xd7df, 0xd7e3, 0xc9ed, 0xdc87, 0xd0c1,
+    0xb3bd, 0xde75, 0xd2d8, 0xd3cf, 0xe18a, 0xc0ef, 0xbdf0, 0xe94c,
+    0xe954, 0xb8b7, 0xc1a5, 0xf6bf, 0xd3ea, 0xec69, 0xb7c7, 0xc3e6,
+    0xb8ef, 0xed66, 0xbec2, 0xd2f4, 0xed93, 0xef4c, 0xef77, 0xcab3,
+    0xcad7, 0xcfe3, 0xf152, 0xb9c7, 0xb8df, 0xf7d4, 0xf459, 0xdbcb,
+    0xd8aa, 0xb9ed, 0xf47e, 0xf842, 0xfb75, 0xc2b9, 0xfb9c, 0xc2e9,
+    0xfc53, 0xcaf2, 0xbada, 0xede9, 0xfc77, 0xb6a6, 0xb9c4, 0xcaf3,
+    0xb1c7, 0xfd52, 0xfd58, 0xfd88, 0xfd94, 0xd9df, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x3000 .. 0x30ff */
+    0xa1a1, 0xa1a2, 0xa1a3, 0xa1a8, 0x003f, 0xa1a9, 0xa965, 0xa996,
+    0xa1b4, 0xa1b5, 0xa1b6, 0xa1b7, 0xa1b8, 0xa1b9, 0xa1ba, 0xa1bb,
+    0xa1be, 0xa1bf, 0xa893, 0xa1fe, 0xa1b2, 0xa1b3, 0xa1bc, 0xa1bd,
+    0x003f, 0x003f, 0x005b, 0x005d, 0x003f, 0xa894, 0xa895, 0x002c,
+    0x003f, 0xa940, 0xa941, 0xa942, 0xa943, 0xa944, 0xa945, 0xa946,
+    0xa947, 0xa948, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa893, 0x003f,
+    0xcaae, 0x8560, 0xd8a6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xa4a1, 0xa4a2, 0xa4a3, 0xa4a4, 0xa4a5, 0xa4a6, 0xa4a7,
+    0xa4a8, 0xa4a9, 0xa4aa, 0xa4ab, 0xa4ac, 0xa4ad, 0xa4ae, 0xa4af,
+    0xa4b0, 0xa4b1, 0xa4b2, 0xa4b3, 0xa4b4, 0xa4b5, 0xa4b6, 0xa4b7,
+    0xa4b8, 0xa4b9, 0xa4ba, 0xa4bb, 0xa4bc, 0xa4bd, 0xa4be, 0xa4bf,
+    0xa4c0, 0xa4c1, 0xa4c2, 0xa4c3, 0xa4c4, 0xa4c5, 0xa4c6, 0xa4c7,
+    0xa4c8, 0xa4c9, 0xa4ca, 0xa4cb, 0xa4cc, 0xa4cd, 0xa4ce, 0xa4cf,
+    0xa4d0, 0xa4d1, 0xa4d2, 0xa4d3, 0xa4d4, 0xa4d5, 0xa4d6, 0xa4d7,
+    0xa4d8, 0xa4d9, 0xa4da, 0xa4db, 0xa4dc, 0xa4dd, 0xa4de, 0xa4df,
+    0xa4e0, 0xa4e1, 0xa4e2, 0xa4e3, 0xa4e4, 0xa4e5, 0xa4e6, 0xa4e7,
+    0xa4e8, 0xa4e9, 0xa4ea, 0xa4eb, 0xa4ec, 0xa4ed, 0xa4ee, 0xa4ef,
+    0xa4f0, 0xa4f1, 0xa4f2, 0xa4f3, 0xa4a6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xa961, 0xa962, 0xa966, 0xa967, 0x003f,
+    0x003f, 0xa5a1, 0xa5a2, 0xa5a3, 0xa5a4, 0xa5a5, 0xa5a6, 0xa5a7,
+    0xa5a8, 0xa5a9, 0xa5aa, 0xa5ab, 0xa5ac, 0xa5ad, 0xa5ae, 0xa5af,
+    0xa5b0, 0xa5b1, 0xa5b2, 0xa5b3, 0xa5b4, 0xa5b5, 0xa5b6, 0xa5b7,
+    0xa5b8, 0xa5b9, 0xa5ba, 0xa5bb, 0xa5bc, 0xa5bd, 0xa5be, 0xa5bf,
+    0xa5c0, 0xa5c1, 0xa5c2, 0xa5c3, 0xa5c4, 0xa5c5, 0xa5c6, 0xa5c7,
+    0xa5c8, 0xa5c9, 0xa5ca, 0xa5cb, 0xa5cc, 0xa5cd, 0xa5ce, 0xa5cf,
+    0xa5d0, 0xa5d1, 0xa5d2, 0xa5d3, 0xa5d4, 0xa5d5, 0xa5d6, 0xa5d7,
+    0xa5d8, 0xa5d9, 0xa5da, 0xa5db, 0xa5dc, 0xa5dd, 0xa5de, 0xa5df,
+    0xa5e0, 0xa5e1, 0xa5e2, 0xa5e3, 0xa5e4, 0xa5e5, 0xa5e6, 0xa5e7,
+    0xa5e8, 0xa5e9, 0xa5ea, 0xa5eb, 0xa5ec, 0xa5ed, 0xa5ee, 0xa5ef,
+    0xa5f0, 0xa5f1, 0xa5f2, 0xa5f3, 0xa5f4, 0xa5f5, 0xa5f6, 0xa5ef,
+    0xa5f0, 0xa5f1, 0xa5f2, 0x003f, 0xa960, 0xa963, 0xa964, 0x003f,
+    /* 0x3100 .. 0x31ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa8c5, 0xa8c6, 0xa8c7,
+    0xa8c8, 0xa8c9, 0xa8ca, 0xa8cb, 0xa8cc, 0xa8cd, 0xa8ce, 0xa8cf,
+    0xa8d0, 0xa8d1, 0xa8d2, 0xa8d3, 0xa8d4, 0xa8d5, 0xa8d6, 0xa8d7,
+    0xa8d8, 0xa8d9, 0xa8da, 0xa8db, 0xa8dc, 0xa8dd, 0xa8de, 0xa8df,
+    0xa8e0, 0xa8e1, 0xa8e2, 0xa8e3, 0xa8e4, 0xa8e5, 0xa8e6, 0xa8e7,
+    0xa8e8, 0xa8e9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd2bb, 0xb6fe, 0xc8fd, 0xcbc4, 0xc9cf, 0xd6d0,
+    0xcfc2, 0xbcd7, 0xd2d2, 0xb1fb, 0xb6a1, 0xccec, 0xb5d8, 0xc8cb,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x3200 .. 0x32ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa2e5, 0xa2e6, 0xa2e7, 0xa2e8, 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec,
+    0xa2ed, 0xa2ee, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xa95a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd2bb, 0xb6fe, 0xc8fd, 0xcbc4, 0xcee5, 0xc1f9, 0xc6df, 0xb0cb,
+    0xbec5, 0xcaae, 0xd4c2, 0xbbf0, 0xcbae, 0xc4be, 0xbdf0, 0xcdc1,
+    0xc8d5, 0xd6ea, 0xd3d0, 0xc9e7, 0xc3fb, 0xccd8, 0xd894, 0xd7a3,
+    0x84ba, 0xc3d8, 0xc4d0, 0xc5ae, 0xdf6d, 0x839e, 0xd3a1, 0xd7a2,
+    0xed97, 0xd0dd, 0xd0b4, 0xa949, 0xc9cf, 0xd6d0, 0xcfc2, 0xd7f3,
+    0xd3d2, 0xd2bd, 0xd7da, 0xd1a7, 0xb14f, 0xc6f3, 0xd959, 0x8566,
+    0xd2b9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa5a2, 0xa5a4, 0xa5a6, 0xa5a8, 0xa5aa, 0xa5ab, 0xa5ad, 0xa5af,
+    0xa5b1, 0xa5b3, 0xa5b5, 0xa5b7, 0xa5b9, 0xa5bb, 0xa5bd, 0xa5bf,
+    0xa5c1, 0xa5c4, 0xa5c6, 0xa5c8, 0xa5ca, 0xa5cb, 0xa5cc, 0xa5cd,
+    0xa5ce, 0xa5cf, 0xa5d2, 0xa5d5, 0xa5d8, 0xa5db, 0xa5de, 0xa5df,
+    0xa5e0, 0xa5e1, 0xa5e2, 0xa5e4, 0xa5e6, 0xa5e8, 0xa5e9, 0xa5ea,
+    0xa5eb, 0xa5ec, 0xa5ed, 0xa5ef, 0xa5f0, 0xa5f1, 0xa5f2, 0x003f,
+    /* 0x3300 .. 0x33ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa94a, 0xa94b,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa94c, 0xa94d, 0xa94e, 0x003f,
+    0x003f, 0xa94f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa950, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa951, 0x003f,
+    0x003f, 0xa952, 0xa953, 0x003f, 0x003f, 0xa954, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x4e00 .. 0x4eff */
+    0xd2bb, 0xb6a1, 0x8140, 0xc6df, 0x8141, 0x8142, 0x8143, 0xcdf2,
+    0xd5c9, 0xc8fd, 0xc9cf, 0xcfc2, 0xd8a2, 0xb2bb, 0xd3eb, 0x8144,
+    0xd8a4, 0xb3f3, 0x8145, 0xd7a8, 0xc7d2, 0xd8a7, 0xcac0, 0x8146,
+    0xc7f0, 0xb1fb, 0xd2b5, 0xb4d4, 0xb6ab, 0xcbbf, 0xd8a9, 0x8147,
+    0x8148, 0x8149, 0xb6aa, 0x814a, 0xc1bd, 0xd1cf, 0x814b, 0xc9a5,
+    0xd8ad, 0x814c, 0xb8f6, 0xd1be, 0xe3dc, 0xd6d0, 0x814d, 0x814e,
+    0xb7e1, 0x814f, 0xb4ae, 0x8150, 0xc1d9, 0x8151, 0xd8bc, 0x8152,
+    0xcde8, 0xb5a4, 0xceaa, 0xd6f7, 0x8153, 0xc0f6, 0xbed9, 0xd8af,
+    0x8154, 0x8155, 0x8156, 0xc4cb, 0x8157, 0xbec3, 0x8158, 0xd8b1,
+    0xc3b4, 0xd2e5, 0x8159, 0xd6ae, 0xceda, 0xd5a7, 0xbaf5, 0xb7a6,
+    0xc0d6, 0x815a, 0xc6b9, 0xc5d2, 0xc7c7, 0x815b, 0xb9d4, 0x815c,
+    0xb3cb, 0xd2d2, 0x815d, 0x815e, 0xd8bf, 0xbec5, 0xc6f2, 0xd2b2,
+    0xcfb0, 0xcfe7, 0x815f, 0x8160, 0x8161, 0x8162, 0xcae9, 0x8163,
+    0x8164, 0xd8c0, 0x8165, 0x8166, 0x8167, 0x8168, 0x8169, 0x816a,
+    0xc2f2, 0xc2d2, 0x816b, 0xc8e9, 0x816c, 0x816d, 0x816e, 0x816f,
+    0x8170, 0x8171, 0x8172, 0x8173, 0x8174, 0x8175, 0xc7ac, 0x8176,
+    0x8177, 0x8178, 0x8179, 0x817a, 0x817b, 0x817c, 0xc1cb, 0x817d,
+    0xd3e8, 0xd5f9, 0x817e, 0xcac2, 0xb6fe, 0xd8a1, 0xd3da, 0xbff7,
+    0x8180, 0xd4c6, 0xbba5, 0xd8c1, 0xcee5, 0xbeae, 0x8181, 0x8182,
+    0xd8a8, 0x8183, 0xd1c7, 0xd0a9, 0x8184, 0x8185, 0x8186, 0xd8bd,
+    0xd9ef, 0xcdf6, 0xbfba, 0x8187, 0xbdbb, 0xbaa5, 0xd2e0, 0xb2fa,
+    0xbae0, 0xc4b6, 0x8188, 0xcfed, 0xbea9, 0xcda4, 0xc1c1, 0x8189,
+    0x818a, 0x818b, 0xc7d7, 0xd9f1, 0x818c, 0xd9f4, 0x818d, 0x818e,
+    0x818f, 0x8190, 0xc8cb, 0xd8e9, 0x8191, 0x8192, 0x8193, 0xd2da,
+    0xcab2, 0xc8ca, 0xd8ec, 0xd8ea, 0xd8c6, 0xbdf6, 0xc6cd, 0xb3f0,
+    0x8194, 0xd8eb, 0xbdf1, 0xbde9, 0x8195, 0xc8d4, 0xb4d3, 0x8196,
+    0x8197, 0xc2d8, 0x8198, 0xb2d6, 0xd7d0, 0xcacb, 0xcbfb, 0xd5cc,
+    0xb8b6, 0xcfc9, 0x8199, 0x819a, 0x819b, 0xd9da, 0xd8f0, 0xc7aa,
+    0x819c, 0xd8ee, 0x819d, 0xb4fa, 0xc1ee, 0xd2d4, 0x819e, 0x819f,
+    0xd8ed, 0x81a0, 0xd2c7, 0xd8ef, 0xc3c7, 0x81a1, 0x81a2, 0x81a3,
+    0xd1f6, 0x81a4, 0xd6d9, 0xd8f2, 0x81a5, 0xd8f5, 0xbcfe, 0xbcdb,
+    0x81a6, 0x81a7, 0x81a8, 0xc8ce, 0x81a9, 0xb7dd, 0x81aa, 0xb7c2,
+    /* 0x4f00 .. 0x4fff */
+    0x81ab, 0xc6f3, 0x81ac, 0x81ad, 0x81ae, 0x81af, 0x81b0, 0x81b1,
+    0x81b2, 0xd8f8, 0xd2c1, 0x81b3, 0x81b4, 0xcee9, 0xbcbf, 0xb7fc,
+    0xb7a5, 0xd0dd, 0x81b5, 0x81b6, 0x81b7, 0x81b8, 0x81b9, 0xd6da,
+    0xd3c5, 0xbbef, 0xbbe1, 0xd8f1, 0x81ba, 0x81bb, 0xc9a1, 0xceb0,
+    0xb4ab, 0x81bc, 0xd8f3, 0x81bd, 0xc9cb, 0xd8f6, 0xc2d7, 0xd8f7,
+    0x81be, 0x81bf, 0xceb1, 0xd8f9, 0x81c0, 0x81c1, 0x81c2, 0xb2ae,
+    0xb9c0, 0x81c3, 0xd9a3, 0x81c4, 0xb0e9, 0x81c5, 0xc1e6, 0x81c6,
+    0xc9ec, 0x81c7, 0xcbc5, 0x81c8, 0xcbc6, 0xd9a4, 0x81c9, 0x81ca,
+    0x81cb, 0x81cc, 0x81cd, 0xb5e8, 0x81ce, 0x81cf, 0xb5ab, 0x81d0,
+    0x81d1, 0x81d2, 0x81d3, 0x81d4, 0x81d5, 0xcebb, 0xb5cd, 0xd7a1,
+    0xd7f4, 0xd3d3, 0x81d6, 0xcce5, 0x81d7, 0xbace, 0x81d8, 0xd9a2,
+    0xd9dc, 0xd3e0, 0xd8fd, 0xb7f0, 0xd7f7, 0xd8fe, 0xd8fa, 0xd9a1,
+    0xc4e3, 0x81d9, 0x81da, 0xd3b6, 0xd8f4, 0xd9dd, 0x81db, 0xd8fb,
+    0x81dc, 0xc5e5, 0x81dd, 0x81de, 0xc0d0, 0x81df, 0x81e0, 0xd1f0,
+    0xb0db, 0x81e1, 0x81e2, 0xbcd1, 0xd9a6, 0x81e3, 0xd9a5, 0x81e4,
+    0x81e5, 0x81e6, 0x81e7, 0xd9ac, 0xd9ae, 0x81e8, 0xd9ab, 0xcab9,
+    0x81e9, 0x81ea, 0x81eb, 0xd9a9, 0xd6b6, 0x81ec, 0x81ed, 0x81ee,
+    0xb3de, 0xd9a8, 0x81ef, 0xc0fd, 0x81f0, 0xcacc, 0x81f1, 0xd9aa,
+    0x81f2, 0xd9a7, 0x81f3, 0x81f4, 0xd9b0, 0x81f5, 0x81f6, 0xb6b1,
+    0x81f7, 0x81f8, 0x81f9, 0xb9a9, 0x81fa, 0xd2c0, 0x81fb, 0x81fc,
+    0xcfc0, 0x81fd, 0x81fe, 0xc2c2, 0x8240, 0xbdc4, 0xd5ec, 0xb2e0,
+    0xc7c8, 0xbfeb, 0xd9ad, 0x8241, 0xd9af, 0x8242, 0xceea, 0xbaee,
+    0x8243, 0x8244, 0x8245, 0x8246, 0x8247, 0xc7d6, 0x8248, 0x8249,
+    0x824a, 0x824b, 0x824c, 0x824d, 0x824e, 0x824f, 0x8250, 0xb1e3,
+    0x8251, 0x8252, 0x8253, 0xb4d9, 0xb6ed, 0xd9b4, 0x8254, 0x8255,
+    0x8256, 0x8257, 0xbfa1, 0x8258, 0x8259, 0x825a, 0xd9de, 0xc7ce,
+    0xc0fe, 0xd9b8, 0x825b, 0x825c, 0x825d, 0x825e, 0x825f, 0xcbd7,
+    0xb7fd, 0x8260, 0xd9b5, 0x8261, 0xd9b7, 0xb1a3, 0xd3e1, 0xd9b9,
+    0x8262, 0xd0c5, 0x8263, 0xd9b6, 0x8264, 0x8265, 0xd9b1, 0x8266,
+    0xd9b2, 0xc1a9, 0xd9b3, 0x8267, 0x8268, 0xbcf3, 0xd0de, 0xb8a9,
+    0x8269, 0xbee3, 0x826a, 0xd9bd, 0x826b, 0x826c, 0x826d, 0x826e,
+    0xd9ba, 0x826f, 0xb0b3, 0x8270, 0x8271, 0x8272, 0xd9c2, 0x8273,
+    /* 0x5000 .. 0x50ff */
+    0x8274, 0x8275, 0x8276, 0x8277, 0x8278, 0x8279, 0x827a, 0x827b,
+    0x827c, 0x827d, 0x827e, 0x8280, 0xd9c4, 0xb1b6, 0x8281, 0xd9bf,
+    0x8282, 0x8283, 0xb5b9, 0x8284, 0xbef3, 0x8285, 0x8286, 0x8287,
+    0xccc8, 0xbaf2, 0xd2d0, 0x8288, 0xd9c3, 0x8289, 0x828a, 0xbde8,
+    0x828b, 0xb3ab, 0x828c, 0x828d, 0x828e, 0xd9c5, 0xbeeb, 0x828f,
+    0xd9c6, 0xd9bb, 0xc4df, 0x8290, 0xd9be, 0xd9c1, 0xd9c0, 0x8291,
+    0x8292, 0x8293, 0x8294, 0x8295, 0x8296, 0x8297, 0x8298, 0x8299,
+    0x829a, 0x829b, 0xd5ae, 0x829c, 0xd6b5, 0x829d, 0xc7e3, 0x829e,
+    0x829f, 0x82a0, 0x82a1, 0xd9c8, 0x82a2, 0x82a3, 0x82a4, 0xbcd9,
+    0xd9ca, 0x82a5, 0x82a6, 0x82a7, 0xd9bc, 0x82a8, 0xd9cb, 0xc6ab,
+    0x82a9, 0x82aa, 0x82ab, 0x82ac, 0x82ad, 0xd9c9, 0x82ae, 0x82af,
+    0x82b0, 0x82b1, 0xd7f6, 0x82b2, 0xcda3, 0x82b3, 0x82b4, 0x82b5,
+    0x82b6, 0x82b7, 0x82b8, 0x82b9, 0x82ba, 0xbda1, 0x82bb, 0x82bc,
+    0x82bd, 0x82be, 0x82bf, 0x82c0, 0xd9cc, 0x82c1, 0x82c2, 0x82c3,
+    0x82c4, 0x82c5, 0x82c6, 0x82c7, 0x82c8, 0x82c9, 0xc5bc, 0xcdb5,
+    0x82ca, 0x82cb, 0x82cc, 0xd9cd, 0x82cd, 0x82ce, 0xd9c7, 0xb3a5,
+    0xbffe, 0x82cf, 0x82d0, 0x82d1, 0x82d2, 0xb8b5, 0x82d3, 0x82d4,
+    0xc0fc, 0x82d5, 0x82d6, 0x82d7, 0x82d8, 0xb0f8, 0x82d9, 0x82da,
+    0x82db, 0x82dc, 0x82dd, 0x82de, 0x82df, 0x82e0, 0x82e1, 0x82e2,
+    0x82e3, 0x82e4, 0x82e5, 0x82e6, 0x82e7, 0x82e8, 0x82e9, 0x82ea,
+    0x82eb, 0x82ec, 0x82ed, 0xb4f6, 0x82ee, 0xd9ce, 0x82ef, 0xd9cf,
+    0xb4a2, 0xd9d0, 0x82f0, 0x82f1, 0xb4df, 0x82f2, 0x82f3, 0x82f4,
+    0x82f5, 0x82f6, 0xb0c1, 0x82f7, 0x82f8, 0x82f9, 0x82fa, 0x82fb,
+    0x82fc, 0x82fd, 0xd9d1, 0xc9b5, 0x82fe, 0x8340, 0x8341, 0x8342,
+    0x8343, 0x8344, 0x8345, 0x8346, 0x8347, 0x8348, 0x8349, 0x834a,
+    0x834b, 0x834c, 0x834d, 0x834e, 0x834f, 0x8350, 0x8351, 0xcff1,
+    0x8352, 0x8353, 0x8354, 0x8355, 0x8356, 0x8357, 0xd9d2, 0x8358,
+    0x8359, 0x835a, 0xc1c5, 0x835b, 0x835c, 0x835d, 0x835e, 0x835f,
+    0x8360, 0x8361, 0x8362, 0x8363, 0x8364, 0x8365, 0xd9d6, 0xc9ae,
+    0x8366, 0x8367, 0x8368, 0x8369, 0xd9d5, 0xd9d4, 0xd9d7, 0x836a,
+    0x836b, 0x836c, 0x836d, 0xcbdb, 0x836e, 0xbda9, 0x836f, 0x8370,
+    0x8371, 0x8372, 0x8373, 0xc6a7, 0x8374, 0x8375, 0x8376, 0x8377,
+    /* 0x5100 .. 0x51ff */
+    0x8378, 0x8379, 0x837a, 0x837b, 0x837c, 0x837d, 0xd9d3, 0xd9d8,
+    0x837e, 0x8380, 0x8381, 0xd9d9, 0x8382, 0x8383, 0x8384, 0x8385,
+    0x8386, 0x8387, 0xc8e5, 0x8388, 0x8389, 0x838a, 0x838b, 0x838c,
+    0x838d, 0x838e, 0x838f, 0x8390, 0x8391, 0x8392, 0x8393, 0x8394,
+    0x8395, 0xc0dc, 0x8396, 0x8397, 0x8398, 0x8399, 0x839a, 0x839b,
+    0x839c, 0x839d, 0x839e, 0x839f, 0x83a0, 0x83a1, 0x83a2, 0x83a3,
+    0x83a4, 0x83a5, 0x83a6, 0x83a7, 0x83a8, 0x83a9, 0x83aa, 0x83ab,
+    0x83ac, 0x83ad, 0x83ae, 0x83af, 0x83b0, 0x83b1, 0x83b2, 0xb6f9,
+    0xd8a3, 0xd4ca, 0x83b3, 0xd4aa, 0xd0d6, 0xb3e4, 0xd5d7, 0x83b4,
+    0xcfc8, 0xb9e2, 0x83b5, 0xbfcb, 0x83b6, 0xc3e2, 0x83b7, 0x83b8,
+    0x83b9, 0xb6d2, 0x83ba, 0x83bb, 0xcdc3, 0xd9ee, 0xd9f0, 0x83bc,
+    0x83bd, 0x83be, 0xb5b3, 0x83bf, 0xb6b5, 0x83c0, 0x83c1, 0x83c2,
+    0x83c3, 0x83c4, 0xbea4, 0x83c5, 0x83c6, 0xc8eb, 0x83c7, 0x83c8,
+    0xc8ab, 0x83c9, 0x83ca, 0xb0cb, 0xb9ab, 0xc1f9, 0xd9e2, 0x83cb,
+    0xc0bc, 0xb9b2, 0x83cc, 0xb9d8, 0xd0cb, 0xb1f8, 0xc6e4, 0xbedf,
+    0xb5e4, 0xd7c8, 0x83cd, 0xd1f8, 0xbce6, 0xcade, 0x83ce, 0x83cf,
+    0xbcbd, 0xd9e6, 0xd8e7, 0x83d0, 0x83d1, 0xc4da, 0x83d2, 0x83d3,
+    0xb8d4, 0xc8bd, 0x83d4, 0x83d5, 0xb2e1, 0xd4d9, 0x83d6, 0x83d7,
+    0x83d8, 0x83d9, 0xc3b0, 0x83da, 0x83db, 0xc3e1, 0xdaa2, 0xc8df,
+    0x83dc, 0xd0b4, 0x83dd, 0xbefc, 0xc5a9, 0x83de, 0x83df, 0x83e0,
+    0xb9da, 0x83e1, 0xdaa3, 0x83e2, 0xd4a9, 0xdaa4, 0x83e3, 0x83e4,
+    0x83e5, 0x83e6, 0x83e7, 0xd9fb, 0xb6ac, 0x83e8, 0x83e9, 0xb7eb,
+    0xb1f9, 0xd9fc, 0xb3e5, 0xbef6, 0x83ea, 0xbff6, 0xd2b1, 0xc0e4,
+    0x83eb, 0x83ec, 0x83ed, 0xb6b3, 0xd9fe, 0xd9fd, 0x83ee, 0x83ef,
+    0xbebb, 0x83f0, 0x83f1, 0x83f2, 0xc6e0, 0x83f3, 0xd7bc, 0xdaa1,
+    0x83f4, 0xc1b9, 0x83f5, 0xb5f2, 0xc1e8, 0x83f6, 0x83f7, 0xbcf5,
+    0x83f8, 0xb4d5, 0x83f9, 0x83fa, 0x83fb, 0x83fc, 0x83fd, 0x83fe,
+    0x8440, 0x8441, 0x8442, 0xc1dd, 0x8443, 0xc4fd, 0x8444, 0x8445,
+    0xbcb8, 0xb7b2, 0x8446, 0x8447, 0xb7ef, 0x8448, 0x8449, 0x844a,
+    0x844b, 0x844c, 0x844d, 0xd9ec, 0x844e, 0xc6be, 0x844f, 0xbfad,
+    0xbbcb, 0x8450, 0x8451, 0xb5ca, 0x8452, 0xdbc9, 0xd0d7, 0x8453,
+    0xcdb9, 0xb0bc, 0xb3f6, 0xbbf7, 0xdbca, 0xbaaf, 0x8454, 0xd4e4,
+    /* 0x5200 .. 0x52ff */
+    0xb5b6, 0xb5f3, 0xd8d6, 0xc8d0, 0x8455, 0x8456, 0xb7d6, 0xc7d0,
+    0xd8d7, 0x8457, 0xbfaf, 0x8458, 0x8459, 0xdbbb, 0xd8d8, 0x845a,
+    0x845b, 0xd0cc, 0xbbae, 0x845c, 0x845d, 0x845e, 0xebbe, 0xc1d0,
+    0xc1f5, 0xd4f2, 0xb8d5, 0xb4b4, 0x845f, 0xb3f5, 0x8460, 0x8461,
+    0xc9be, 0x8462, 0x8463, 0x8464, 0xc5d0, 0x8465, 0x8466, 0x8467,
+    0xc5d9, 0xc0fb, 0x8468, 0xb1f0, 0x8469, 0xd8d9, 0xb9ce, 0x846a,
+    0xb5bd, 0x846b, 0x846c, 0xd8da, 0x846d, 0x846e, 0xd6c6, 0xcba2,
+    0xc8af, 0xc9b2, 0xb4cc, 0xbfcc, 0x846f, 0xb9f4, 0x8470, 0xd8db,
+    0xd8dc, 0xb6e7, 0xbcc1, 0xccea, 0x8471, 0x8472, 0x8473, 0x8474,
+    0x8475, 0x8476, 0xcff7, 0x8477, 0xd8dd, 0xc7b0, 0x8478, 0x8479,
+    0xb9d0, 0xbda3, 0x847a, 0x847b, 0xccde, 0x847c, 0xc6ca, 0x847d,
+    0x847e, 0x8480, 0x8481, 0x8482, 0xd8e0, 0x8483, 0xd8de, 0x8484,
+    0x8485, 0xd8df, 0x8486, 0x8487, 0x8488, 0xb0fe, 0x8489, 0xbee7,
+    0x848a, 0xcaa3, 0xbcf4, 0x848b, 0x848c, 0x848d, 0x848e, 0xb8b1,
+    0x848f, 0x8490, 0xb8ee, 0x8491, 0x8492, 0x8493, 0x8494, 0x8495,
+    0x8496, 0x8497, 0x8498, 0x8499, 0x849a, 0xd8e2, 0x849b, 0xbdcb,
+    0x849c, 0xd8e4, 0xd8e3, 0x849d, 0x849e, 0x849f, 0x84a0, 0x84a1,
+    0xc5fc, 0x84a2, 0x84a3, 0x84a4, 0x84a5, 0x84a6, 0x84a7, 0x84a8,
+    0xd8e5, 0x84a9, 0x84aa, 0xd8e6, 0x84ab, 0x84ac, 0x84ad, 0x84ae,
+    0x84af, 0x84b0, 0x84b1, 0xc1a6, 0x84b2, 0xc8b0, 0xb0ec, 0xb9a6,
+    0xbcd3, 0xcef1, 0xdbbd, 0xc1d3, 0x84b3, 0x84b4, 0x84b5, 0x84b6,
+    0xb6af, 0xd6fa, 0xc5ac, 0xbdd9, 0xdbbe, 0xdbbf, 0x84b7, 0x84b8,
+    0x84b9, 0xc0f8, 0xbea2, 0xc0cd, 0x84ba, 0x84bb, 0x84bc, 0x84bd,
+    0x84be, 0x84bf, 0x84c0, 0x84c1, 0x84c2, 0x84c3, 0xdbc0, 0xcac6,
+    0x84c4, 0x84c5, 0x84c6, 0xb2aa, 0x84c7, 0x84c8, 0x84c9, 0xd3c2,
+    0x84ca, 0xc3e3, 0x84cb, 0xd1ab, 0x84cc, 0x84cd, 0x84ce, 0x84cf,
+    0xdbc2, 0x84d0, 0xc0d5, 0x84d1, 0x84d2, 0x84d3, 0xdbc3, 0x84d4,
+    0xbfb1, 0x84d5, 0x84d6, 0x84d7, 0x84d8, 0x84d9, 0x84da, 0xc4bc,
+    0x84db, 0x84dc, 0x84dd, 0x84de, 0xc7da, 0x84df, 0x84e0, 0x84e1,
+    0x84e2, 0x84e3, 0x84e4, 0x84e5, 0x84e6, 0x84e7, 0x84e8, 0x84e9,
+    0xdbc4, 0x84ea, 0x84eb, 0x84ec, 0x84ed, 0x84ee, 0x84ef, 0x84f0,
+    0x84f1, 0xd9e8, 0xc9d7, 0x84f2, 0x84f3, 0x84f4, 0xb9b4, 0xcef0,
+    /* 0x5300 .. 0x53ff */
+    0xd4c8, 0x84f5, 0x84f6, 0x84f7, 0x84f8, 0xb0fc, 0xb4d2, 0x84f9,
+    0xd0d9, 0x84fa, 0x84fb, 0x84fc, 0x84fd, 0xd9e9, 0x84fe, 0xdecb,
+    0xd9eb, 0x8540, 0x8541, 0x8542, 0x8543, 0xd8b0, 0xbbaf, 0xb1b1,
+    0x8544, 0xb3d7, 0xd8ce, 0x8545, 0x8546, 0xd4d1, 0x8547, 0x8548,
+    0xbdb3, 0xbfef, 0x8549, 0xcfbb, 0x854a, 0x854b, 0xd8d0, 0x854c,
+    0x854d, 0x854e, 0xb7cb, 0x854f, 0x8550, 0x8551, 0xd8d1, 0x8552,
+    0x8553, 0x8554, 0x8555, 0x8556, 0x8557, 0x8558, 0x8559, 0x855a,
+    0x855b, 0xc6a5, 0xc7f8, 0xd2bd, 0x855c, 0x855d, 0xd8d2, 0xc4e4,
+    0x855e, 0xcaae, 0x855f, 0xc7a7, 0x8560, 0xd8a6, 0x8561, 0xc9fd,
+    0xcee7, 0xbbdc, 0xb0eb, 0x8562, 0x8563, 0x8564, 0xbbaa, 0xd0ad,
+    0x8565, 0xb1b0, 0xd7e4, 0xd7bf, 0x8566, 0xb5a5, 0xc2f4, 0xc4cf,
+    0x8567, 0x8568, 0xb2a9, 0x8569, 0xb2b7, 0x856a, 0xb1e5, 0xdfb2,
+    0xd5bc, 0xbfa8, 0xc2ac, 0xd8d5, 0xc2b1, 0x856b, 0xd8d4, 0xced4,
+    0x856c, 0xdae0, 0x856d, 0xcec0, 0x856e, 0x856f, 0xd8b4, 0xc3ae,
+    0xd3a1, 0xcea3, 0x8570, 0xbcb4, 0xc8b4, 0xc2d1, 0x8571, 0xbeed,
+    0xd0b6, 0x8572, 0xdae1, 0x8573, 0x8574, 0x8575, 0x8576, 0xc7e4,
+    0x8577, 0x8578, 0xb3a7, 0x8579, 0xb6f2, 0xccfc, 0xc0fa, 0x857a,
+    0x857b, 0xc0f7, 0x857c, 0xd1b9, 0xd1e1, 0xd8c7, 0x857d, 0x857e,
+    0x8580, 0x8581, 0x8582, 0x8583, 0x8584, 0xb2de, 0x8585, 0x8586,
+    0xc0e5, 0x8587, 0xbaf1, 0x8588, 0x8589, 0xd8c8, 0x858a, 0xd4ad,
+    0x858b, 0x858c, 0xcfe1, 0xd8c9, 0x858d, 0xd8ca, 0xcfc3, 0x858e,
+    0xb3f8, 0xbec7, 0x858f, 0x8590, 0x8591, 0x8592, 0xd8cb, 0x8593,
+    0x8594, 0x8595, 0x8596, 0x8597, 0x8598, 0x8599, 0xdbcc, 0x859a,
+    0x859b, 0x859c, 0x859d, 0xc8a5, 0x859e, 0x859f, 0x85a0, 0xcfd8,
+    0x85a1, 0xc8fe, 0xb2ce, 0x85a2, 0x85a3, 0x85a4, 0x85a5, 0x85a6,
+    0xd3d6, 0xb2e6, 0xbcb0, 0xd3d1, 0xcbab, 0xb7b4, 0x85a7, 0x85a8,
+    0x85a9, 0xb7a2, 0x85aa, 0x85ab, 0xcae5, 0x85ac, 0xc8a1, 0xcadc,
+    0xb1e4, 0xd0f0, 0x85ad, 0xc5d1, 0x85ae, 0x85af, 0x85b0, 0xdbc5,
+    0xb5fe, 0x85b1, 0x85b2, 0xbfda, 0xb9c5, 0xbee4, 0xc1ed, 0x85b3,
+    0xdfb6, 0xdfb5, 0xd6bb, 0xbdd0, 0xd5d9, 0xb0c8, 0xb6a3, 0xbfc9,
+    0xcca8, 0xdfb3, 0xcab7, 0xd3d2, 0x85b4, 0xd8cf, 0xd2b6, 0xbac5,
+    0xcbbe, 0xccbe, 0x85b5, 0xdfb7, 0xb5f0, 0xdfb4, 0x85b6, 0x85b7,
+    /* 0x5400 .. 0x54ff */
+    0x85b8, 0xd3f5, 0x85b9, 0xb3d4, 0xb8f7, 0x85ba, 0xdfba, 0x85bb,
+    0xbacf, 0xbcaa, 0xb5f5, 0x85bc, 0xcdac, 0xc3fb, 0xbaf3, 0xc0f4,
+    0xcdc2, 0xcff2, 0xdfb8, 0xcfc5, 0x85bd, 0xc2c0, 0xdfb9, 0xc2f0,
+    0x85be, 0x85bf, 0x85c0, 0xbefd, 0x85c1, 0xc1df, 0xcdcc, 0xd2f7,
+    0xb7cd, 0xdfc1, 0x85c2, 0xdfc4, 0x85c3, 0x85c4, 0xb7f1, 0xb0c9,
+    0xb6d6, 0xb7d4, 0x85c5, 0xbaac, 0xccfd, 0xbfd4, 0xcbb1, 0xc6f4,
+    0x85c6, 0xd6a8, 0xdfc5, 0x85c7, 0xcee2, 0xb3b3, 0x85c8, 0x85c9,
+    0xcefc, 0xb4b5, 0x85ca, 0xcec7, 0xbaf0, 0x85cb, 0xcee1, 0x85cc,
+    0xd1bd, 0x85cd, 0x85ce, 0xdfc0, 0x85cf, 0x85d0, 0xb4f4, 0x85d1,
+    0xb3ca, 0x85d2, 0xb8e6, 0xdfbb, 0x85d3, 0x85d4, 0x85d5, 0x85d6,
+    0xc4c5, 0x85d7, 0xdfbc, 0xdfbd, 0xdfbe, 0xc5bb, 0xdfbf, 0xdfc2,
+    0xd4b1, 0xdfc3, 0x85d8, 0xc7ba, 0xced8, 0x85d9, 0x85da, 0x85db,
+    0x85dc, 0x85dd, 0xc4d8, 0x85de, 0xdfca, 0x85df, 0xdfcf, 0x85e0,
+    0xd6dc, 0x85e1, 0x85e2, 0x85e3, 0x85e4, 0x85e5, 0x85e6, 0x85e7,
+    0x85e8, 0xdfc9, 0xdfda, 0xceb6, 0x85e9, 0xbac7, 0xdfce, 0xdfc8,
+    0xc5de, 0x85ea, 0x85eb, 0xc9eb, 0xbaf4, 0xc3fc, 0x85ec, 0x85ed,
+    0xbed7, 0x85ee, 0xdfc6, 0x85ef, 0xdfcd, 0x85f0, 0xc5d8, 0x85f1,
+    0x85f2, 0x85f3, 0x85f4, 0xd5a6, 0xbacd, 0x85f5, 0xbecc, 0xd3bd,
+    0xb8c0, 0x85f6, 0xd6e4, 0x85f7, 0xdfc7, 0xb9be, 0xbfa7, 0x85f8,
+    0x85f9, 0xc1fc, 0xdfcb, 0xdfcc, 0x85fa, 0xdfd0, 0x85fb, 0x85fc,
+    0x85fd, 0x85fe, 0x8640, 0xdfdb, 0xdfe5, 0x8641, 0xdfd7, 0xdfd6,
+    0xd7c9, 0xdfe3, 0xdfe4, 0xe5eb, 0xd2a7, 0xdfd2, 0x8642, 0xbfa9,
+    0x8643, 0xd4db, 0x8644, 0xbfc8, 0xdfd4, 0x8645, 0x8646, 0x8647,
+    0xcfcc, 0x8648, 0x8649, 0xdfdd, 0x864a, 0xd1ca, 0x864b, 0xdfde,
+    0xb0a7, 0xc6b7, 0xdfd3, 0x864c, 0xbae5, 0x864d, 0xb6df, 0xcddb,
+    0xb9fe, 0xd4d5, 0x864e, 0x864f, 0xdfdf, 0xcfec, 0xb0a5, 0xdfe7,
+    0xdfd1, 0xd1c6, 0xdfd5, 0xdfd8, 0xdfd9, 0xdfdc, 0x8650, 0xbba9,
+    0x8651, 0xdfe0, 0xdfe1, 0x8652, 0xdfe2, 0xdfe6, 0xdfe8, 0xd3b4,
+    0x8653, 0x8654, 0x8655, 0x8656, 0x8657, 0xb8e7, 0xc5b6, 0xdfea,
+    0xc9da, 0xc1a8, 0xc4c4, 0x8658, 0x8659, 0xbfde, 0xcff8, 0x865a,
+    0x865b, 0x865c, 0xd5dc, 0xdfee, 0x865d, 0x865e, 0x865f, 0x8660,
+    0x8661, 0x8662, 0xb2b8, 0x8663, 0xbadf, 0xdfec, 0x8664, 0xdbc1,
+    /* 0x5500 .. 0x55ff */
+    0x8665, 0xd1e4, 0x8666, 0x8667, 0x8668, 0x8669, 0xcbf4, 0xb4bd,
+    0x866a, 0xb0a6, 0x866b, 0x866c, 0x866d, 0x866e, 0x866f, 0xdff1,
+    0xccc6, 0xdff2, 0x8670, 0x8671, 0xdfed, 0x8672, 0x8673, 0x8674,
+    0x8675, 0x8676, 0x8677, 0xdfe9, 0x8678, 0x8679, 0x867a, 0x867b,
+    0xdfeb, 0x867c, 0xdfef, 0xdff0, 0xbbbd, 0x867d, 0x867e, 0xdff3,
+    0x8680, 0x8681, 0xdff4, 0x8682, 0xbba3, 0x8683, 0xcadb, 0xcea8,
+    0xe0a7, 0xb3aa, 0x8684, 0xe0a6, 0x8685, 0x8686, 0x8687, 0xe0a1,
+    0x8688, 0x8689, 0x868a, 0x868b, 0xdffe, 0x868c, 0xcdd9, 0xdffc,
+    0x868d, 0xdffa, 0x868e, 0xbfd0, 0xd7c4, 0x868f, 0xc9cc, 0x8690,
+    0x8691, 0xdff8, 0xb0a1, 0x8692, 0x8693, 0x8694, 0x8695, 0x8696,
+    0xdffd, 0x8697, 0x8698, 0x8699, 0x869a, 0xdffb, 0xe0a2, 0x869b,
+    0x869c, 0x869d, 0x869e, 0x869f, 0xe0a8, 0x86a0, 0x86a1, 0x86a2,
+    0x86a3, 0xb7c8, 0x86a4, 0x86a5, 0xc6a1, 0xc9b6, 0xc0b2, 0xdff5,
+    0x86a6, 0x86a7, 0xc5be, 0x86a8, 0xd8c4, 0xdff9, 0xc4f6, 0x86a9,
+    0x86aa, 0x86ab, 0x86ac, 0x86ad, 0x86ae, 0xe0a3, 0xe0a4, 0xe0a5,
+    0xd0a5, 0x86af, 0x86b0, 0xe0b4, 0xcce4, 0x86b1, 0xe0b1, 0x86b2,
+    0xbfa6, 0xe0af, 0xceb9, 0xe0ab, 0xc9c6, 0x86b3, 0x86b4, 0xc0ae,
+    0xe0ae, 0xbaed, 0xbab0, 0xe0a9, 0x86b5, 0x86b6, 0x86b7, 0xdff6,
+    0x86b8, 0xe0b3, 0x86b9, 0x86ba, 0xe0b8, 0x86bb, 0x86bc, 0x86bd,
+    0xb4ad, 0xe0b9, 0x86be, 0x86bf, 0xcfb2, 0xbac8, 0x86c0, 0xe0b0,
+    0x86c1, 0x86c2, 0x86c3, 0x86c4, 0x86c5, 0x86c6, 0x86c7, 0xd0fa,
+    0x86c8, 0x86c9, 0x86ca, 0x86cb, 0x86cc, 0x86cd, 0x86ce, 0x86cf,
+    0x86d0, 0xe0ac, 0x86d1, 0xd4fb, 0x86d2, 0xdff7, 0x86d3, 0xc5e7,
+    0x86d4, 0xe0ad, 0x86d5, 0xd3f7, 0x86d6, 0xe0b6, 0xe0b7, 0x86d7,
+    0x86d8, 0x86d9, 0x86da, 0x86db, 0xe0c4, 0xd0e1, 0x86dc, 0x86dd,
+    0x86de, 0xe0bc, 0x86df, 0x86e0, 0xe0c9, 0xe0ca, 0x86e1, 0x86e2,
+    0x86e3, 0xe0be, 0xe0aa, 0xc9a4, 0xe0c1, 0x86e4, 0xe0b2, 0x86e5,
+    0x86e6, 0x86e7, 0x86e8, 0x86e9, 0xcac8, 0xe0c3, 0x86ea, 0xe0b5,
+    0x86eb, 0xcecb, 0x86ec, 0xcbc3, 0xe0cd, 0xe0c6, 0xe0c2, 0x86ed,
+    0xe0cb, 0x86ee, 0xe0ba, 0xe0bf, 0xe0c0, 0x86ef, 0x86f0, 0xe0c5,
+    0x86f1, 0x86f2, 0xe0c7, 0xe0c8, 0x86f3, 0xe0cc, 0x86f4, 0xe0bb,
+    0x86f5, 0x86f6, 0x86f7, 0x86f8, 0x86f9, 0xcbd4, 0xe0d5, 0x86fa,
+    /* 0x5600 .. 0x56ff */
+    0xe0d6, 0xe0d2, 0x86fb, 0x86fc, 0x86fd, 0x86fe, 0x8740, 0x8741,
+    0xe0d0, 0xbcce, 0x8742, 0x8743, 0xe0d1, 0x8744, 0xb8c2, 0xd8c5,
+    0x8745, 0x8746, 0x8747, 0x8748, 0x8749, 0x874a, 0x874b, 0x874c,
+    0xd0ea, 0x874d, 0x874e, 0xc2ef, 0x874f, 0x8750, 0xe0cf, 0xe0bd,
+    0x8751, 0x8752, 0x8753, 0xe0d4, 0xe0d3, 0x8754, 0x8755, 0xe0d7,
+    0x8756, 0x8757, 0x8758, 0x8759, 0xe0dc, 0xe0d8, 0x875a, 0x875b,
+    0x875c, 0xd6f6, 0xb3b0, 0x875d, 0xd7ec, 0x875e, 0xcbbb, 0x875f,
+    0x8760, 0xe0da, 0x8761, 0xcefb, 0x8762, 0x8763, 0x8764, 0xbad9,
+    0x8765, 0x8766, 0x8767, 0x8768, 0x8769, 0x876a, 0x876b, 0x876c,
+    0x876d, 0x876e, 0x876f, 0x8770, 0xe0e1, 0xe0dd, 0xd2ad, 0x8771,
+    0x8772, 0x8773, 0x8774, 0x8775, 0xe0e2, 0x8776, 0x8777, 0xe0db,
+    0xe0d9, 0xe0df, 0x8778, 0x8779, 0xe0e0, 0x877a, 0x877b, 0x877c,
+    0x877d, 0x877e, 0xe0de, 0x8780, 0xe0e4, 0x8781, 0x8782, 0x8783,
+    0xc6f7, 0xd8ac, 0xd4eb, 0xe0e6, 0xcac9, 0x8784, 0x8785, 0x8786,
+    0x8787, 0xe0e5, 0x8788, 0x8789, 0x878a, 0x878b, 0xb8c1, 0x878c,
+    0x878d, 0x878e, 0x878f, 0xe0e7, 0xe0e8, 0x8790, 0x8791, 0x8792,
+    0x8793, 0x8794, 0x8795, 0x8796, 0x8797, 0xe0e9, 0xe0e3, 0x8798,
+    0x8799, 0x879a, 0x879b, 0x879c, 0x879d, 0x879e, 0xbabf, 0xcce7,
+    0x879f, 0x87a0, 0x87a1, 0xe0ea, 0x87a2, 0x87a3, 0x87a4, 0x87a5,
+    0x87a6, 0x87a7, 0x87a8, 0x87a9, 0x87aa, 0x87ab, 0x87ac, 0x87ad,
+    0x87ae, 0x87af, 0x87b0, 0xcff9, 0x87b1, 0x87b2, 0x87b3, 0x87b4,
+    0x87b5, 0x87b6, 0x87b7, 0x87b8, 0x87b9, 0x87ba, 0x87bb, 0xe0eb,
+    0x87bc, 0x87bd, 0x87be, 0x87bf, 0x87c0, 0x87c1, 0x87c2, 0xc8c2,
+    0x87c3, 0x87c4, 0x87c5, 0x87c6, 0xbdc0, 0x87c7, 0x87c8, 0x87c9,
+    0x87ca, 0x87cb, 0x87cc, 0x87cd, 0x87ce, 0x87cf, 0x87d0, 0x87d1,
+    0x87d2, 0x87d3, 0xc4d2, 0x87d4, 0x87d5, 0x87d6, 0x87d7, 0x87d8,
+    0x87d9, 0x87da, 0x87db, 0x87dc, 0xe0ec, 0x87dd, 0x87de, 0xe0ed,
+    0x87df, 0x87e0, 0xc7f4, 0xcbc4, 0x87e1, 0xe0ee, 0xbbd8, 0xd8b6,
+    0xd2f2, 0xe0ef, 0xcdc5, 0x87e2, 0xb6da, 0x87e3, 0x87e4, 0x87e5,
+    0x87e6, 0x87e7, 0x87e8, 0xe0f1, 0x87e9, 0xd4b0, 0x87ea, 0x87eb,
+    0xc0a7, 0xb4d1, 0x87ec, 0x87ed, 0xcea7, 0xe0f0, 0x87ee, 0x87ef,
+    0x87f0, 0xe0f2, 0xb9cc, 0x87f1, 0x87f2, 0xb9fa, 0xcdbc, 0xe0f3,
+    /* 0x5700 .. 0x57ff */
+    0x87f3, 0x87f4, 0x87f5, 0xc6d4, 0xe0f4, 0x87f6, 0xd4b2, 0x87f7,
+    0xc8a6, 0xe0f6, 0xe0f5, 0x87f8, 0x87f9, 0x87fa, 0x87fb, 0x87fc,
+    0x87fd, 0x87fe, 0x8840, 0x8841, 0x8842, 0x8843, 0x8844, 0x8845,
+    0x8846, 0x8847, 0x8848, 0x8849, 0xe0f7, 0x884a, 0x884b, 0xcdc1,
+    0x884c, 0x884d, 0x884e, 0xcaa5, 0x884f, 0x8850, 0x8851, 0x8852,
+    0xd4da, 0xdbd7, 0xdbd9, 0x8853, 0xdbd8, 0xb9e7, 0xdbdc, 0xdbdd,
+    0xb5d8, 0x8854, 0x8855, 0xdbda, 0x8856, 0x8857, 0x8858, 0x8859,
+    0x885a, 0xdbdb, 0xb3a1, 0xdbdf, 0x885b, 0x885c, 0xbbf8, 0x885d,
+    0xd6b7, 0x885e, 0xdbe0, 0x885f, 0x8860, 0x8861, 0x8862, 0xbef9,
+    0x8863, 0x8864, 0xb7bb, 0x8865, 0xdbd0, 0xccae, 0xbfb2, 0xbbb5,
+    0xd7f8, 0xbfd3, 0x8866, 0x8867, 0x8868, 0x8869, 0x886a, 0xbfe9,
+    0x886b, 0x886c, 0xbce1, 0xccb3, 0xdbde, 0xb0d3, 0xceeb, 0xb7d8,
+    0xd7b9, 0xc6c2, 0x886d, 0x886e, 0xc0a4, 0x886f, 0xccb9, 0x8870,
+    0xdbe7, 0xdbe1, 0xc6ba, 0xdbe3, 0x8871, 0xdbe8, 0x8872, 0xc5f7,
+    0x8873, 0x8874, 0x8875, 0xdbea, 0x8876, 0x8877, 0xdbe9, 0xbfc0,
+    0x8878, 0x8879, 0x887a, 0xdbe6, 0xdbe5, 0x887b, 0x887c, 0x887d,
+    0x887e, 0x8880, 0xb4b9, 0xc0ac, 0xc2a2, 0xdbe2, 0xdbe4, 0x8881,
+    0x8882, 0x8883, 0x8884, 0xd0cd, 0xdbed, 0x8885, 0x8886, 0x8887,
+    0x8888, 0x8889, 0xc0dd, 0xdbf2, 0x888a, 0x888b, 0x888c, 0x888d,
+    0x888e, 0x888f, 0x8890, 0xb6e2, 0x8891, 0x8892, 0x8893, 0x8894,
+    0xdbf3, 0xdbd2, 0xb9b8, 0xd4ab, 0xdbec, 0x8895, 0xbfd1, 0xdbf0,
+    0x8896, 0xdbd1, 0x8897, 0xb5e6, 0x8898, 0xdbeb, 0xbfe5, 0x8899,
+    0x889a, 0x889b, 0xdbee, 0x889c, 0xdbf1, 0x889d, 0x889e, 0x889f,
+    0xdbf9, 0x88a0, 0x88a1, 0x88a2, 0x88a3, 0x88a4, 0x88a5, 0x88a6,
+    0x88a7, 0x88a8, 0xb9a1, 0xb0a3, 0x88a9, 0x88aa, 0x88ab, 0x88ac,
+    0x88ad, 0x88ae, 0x88af, 0xc2f1, 0x88b0, 0x88b1, 0xb3c7, 0xdbef,
+    0x88b2, 0x88b3, 0xdbf8, 0x88b4, 0xc6d2, 0xdbf4, 0x88b5, 0x88b6,
+    0xdbf5, 0xdbf7, 0xdbf6, 0x88b7, 0x88b8, 0xdbfe, 0x88b9, 0xd3f2,
+    0xb2ba, 0x88ba, 0x88bb, 0x88bc, 0xdbfd, 0x88bd, 0x88be, 0x88bf,
+    0x88c0, 0x88c1, 0x88c2, 0x88c3, 0x88c4, 0xdca4, 0x88c5, 0xdbfb,
+    0x88c6, 0x88c7, 0x88c8, 0x88c9, 0xdbfa, 0x88ca, 0x88cb, 0x88cc,
+    0xdbfc, 0xc5e0, 0xbbf9, 0x88cd, 0x88ce, 0xdca3, 0x88cf, 0x88d0,
+    /* 0x5800 .. 0x58ff */
+    0xdca5, 0x88d1, 0xccc3, 0x88d2, 0x88d3, 0x88d4, 0xb6d1, 0xddc0,
+    0x88d5, 0x88d6, 0x88d7, 0xdca1, 0x88d8, 0xdca2, 0x88d9, 0x88da,
+    0x88db, 0xc7b5, 0x88dc, 0x88dd, 0x88de, 0xb6e9, 0x88df, 0x88e0,
+    0x88e1, 0xdca7, 0x88e2, 0x88e3, 0x88e4, 0x88e5, 0xdca6, 0x88e6,
+    0xdca9, 0xb1a4, 0x88e7, 0x88e8, 0xb5cc, 0x88e9, 0x88ea, 0x88eb,
+    0x88ec, 0x88ed, 0xbfb0, 0x88ee, 0x88ef, 0x88f0, 0x88f1, 0x88f2,
+    0xd1df, 0x88f3, 0x88f4, 0x88f5, 0x88f6, 0xb6c2, 0x88f7, 0x88f8,
+    0x88f9, 0x88fa, 0x88fb, 0x88fc, 0x88fd, 0x88fe, 0x8940, 0x8941,
+    0x8942, 0x8943, 0x8944, 0x8945, 0xdca8, 0x8946, 0x8947, 0x8948,
+    0x8949, 0x894a, 0x894b, 0x894c, 0xcbfa, 0xebf3, 0x894d, 0x894e,
+    0x894f, 0xcbdc, 0x8950, 0x8951, 0xcbfe, 0x8952, 0x8953, 0x8954,
+    0xccc1, 0x8955, 0x8956, 0x8957, 0x8958, 0x8959, 0xc8fb, 0x895a,
+    0x895b, 0x895c, 0x895d, 0x895e, 0x895f, 0xdcaa, 0x8960, 0x8961,
+    0x8962, 0x8963, 0x8964, 0xccee, 0xdcab, 0x8965, 0x8966, 0x8967,
+    0x8968, 0x8969, 0x896a, 0x896b, 0x896c, 0x896d, 0x896e, 0x896f,
+    0x8970, 0x8971, 0x8972, 0x8973, 0x8974, 0x8975, 0xdbd3, 0x8976,
+    0xdcaf, 0xdcac, 0x8977, 0xbeb3, 0x8978, 0xcafb, 0x8979, 0x897a,
+    0x897b, 0xdcad, 0x897c, 0x897d, 0x897e, 0x8980, 0x8981, 0x8982,
+    0x8983, 0x8984, 0xc9ca, 0xc4b9, 0x8985, 0x8986, 0x8987, 0x8988,
+    0x8989, 0xc7bd, 0xdcae, 0x898a, 0x898b, 0x898c, 0xd4f6, 0xd0e6,
+    0x898d, 0x898e, 0x898f, 0x8990, 0x8991, 0x8992, 0x8993, 0x8994,
+    0xc4ab, 0xb6d5, 0x8995, 0x8996, 0x8997, 0x8998, 0x8999, 0x899a,
+    0x899b, 0x899c, 0x899d, 0x899e, 0x899f, 0x89a0, 0x89a1, 0x89a2,
+    0x89a3, 0x89a4, 0x89a5, 0x89a6, 0xdbd4, 0x89a7, 0x89a8, 0x89a9,
+    0x89aa, 0xb1da, 0x89ab, 0x89ac, 0x89ad, 0xdbd5, 0x89ae, 0x89af,
+    0x89b0, 0x89b1, 0x89b2, 0x89b3, 0x89b4, 0x89b5, 0x89b6, 0x89b7,
+    0x89b8, 0xdbd6, 0x89b9, 0x89ba, 0x89bb, 0xbabe, 0x89bc, 0x89bd,
+    0x89be, 0x89bf, 0x89c0, 0x89c1, 0x89c2, 0x89c3, 0x89c4, 0x89c5,
+    0x89c6, 0x89c7, 0x89c8, 0x89c9, 0xc8c0, 0x89ca, 0x89cb, 0x89cc,
+    0x89cd, 0x89ce, 0x89cf, 0xcabf, 0xc8c9, 0x89d0, 0xd7b3, 0x89d1,
+    0xc9f9, 0x89d2, 0x89d3, 0xbfc7, 0x89d4, 0x89d5, 0xbaf8, 0x89d6,
+    0x89d7, 0xd2bc, 0x89d8, 0x89d9, 0x89da, 0x89db, 0x89dc, 0x89dd,
+    /* 0x5900 .. 0x59ff */
+    0x89de, 0x89df, 0xe2ba, 0x89e0, 0xb4a6, 0x89e1, 0x89e2, 0xb1b8,
+    0x89e3, 0x89e4, 0x89e5, 0x89e6, 0x89e7, 0xb8b4, 0x89e8, 0xcfc4,
+    0x89e9, 0x89ea, 0x89eb, 0x89ec, 0xd9e7, 0xcfa6, 0xcde2, 0x89ed,
+    0x89ee, 0xd9ed, 0xb6e0, 0x89ef, 0xd2b9, 0x89f0, 0x89f1, 0xb9bb,
+    0x89f2, 0x89f3, 0x89f4, 0x89f5, 0xe2b9, 0xe2b7, 0x89f6, 0xb4f3,
+    0x89f7, 0xccec, 0xccab, 0xb7f2, 0x89f8, 0xd8b2, 0xd1eb, 0xbabb,
+    0x89f9, 0xcaa7, 0x89fa, 0x89fb, 0xcdb7, 0x89fc, 0x89fd, 0xd2c4,
+    0xbfe4, 0xbcd0, 0xb6e1, 0x89fe, 0xdec5, 0x8a40, 0x8a41, 0x8a42,
+    0x8a43, 0xdec6, 0xdbbc, 0x8a44, 0xd1d9, 0x8a45, 0x8a46, 0xc6e6,
+    0xc4ce, 0xb7ee, 0x8a47, 0xb7dc, 0x8a48, 0x8a49, 0xbffc, 0xd7e0,
+    0x8a4a, 0xc6f5, 0x8a4b, 0x8a4c, 0xb1bc, 0xdec8, 0xbdb1, 0xccd7,
+    0xdeca, 0x8a4d, 0xdec9, 0x8a4e, 0x8a4f, 0x8a50, 0x8a51, 0x8a52,
+    0xb5ec, 0x8a53, 0xc9dd, 0x8a54, 0x8a55, 0xb0c2, 0x8a56, 0x8a57,
+    0x8a58, 0x8a59, 0x8a5a, 0x8a5b, 0x8a5c, 0x8a5d, 0x8a5e, 0x8a5f,
+    0x8a60, 0x8a61, 0x8a62, 0xc5ae, 0xc5ab, 0x8a63, 0xc4cc, 0x8a64,
+    0xbce9, 0xcbfd, 0x8a65, 0x8a66, 0x8a67, 0xbac3, 0x8a68, 0x8a69,
+    0x8a6a, 0xe5f9, 0xc8e7, 0xe5fa, 0xcdfd, 0x8a6b, 0xd7b1, 0xb8be,
+    0xc2e8, 0x8a6c, 0xc8d1, 0x8a6d, 0x8a6e, 0xe5fb, 0x8a6f, 0x8a70,
+    0x8a71, 0x8a72, 0xb6ca, 0xbccb, 0x8a73, 0x8a74, 0xd1fd, 0xe6a1,
+    0x8a75, 0xc3ee, 0x8a76, 0x8a77, 0x8a78, 0x8a79, 0xe6a4, 0x8a7a,
+    0x8a7b, 0x8a7c, 0x8a7d, 0xe5fe, 0xe6a5, 0xcdd7, 0x8a7e, 0x8a80,
+    0xb7c1, 0xe5fc, 0xe5fd, 0xe6a3, 0x8a81, 0x8a82, 0xc4dd, 0xe6a8,
+    0x8a83, 0x8a84, 0xe6a7, 0x8a85, 0x8a86, 0x8a87, 0x8a88, 0x8a89,
+    0x8a8a, 0xc3c3, 0x8a8b, 0xc6de, 0x8a8c, 0x8a8d, 0xe6aa, 0x8a8e,
+    0x8a8f, 0x8a90, 0x8a91, 0x8a92, 0x8a93, 0x8a94, 0xc4b7, 0x8a95,
+    0x8a96, 0x8a97, 0xe6a2, 0xcabc, 0x8a98, 0x8a99, 0x8a9a, 0x8a9b,
+    0xbde3, 0xb9c3, 0xe6a6, 0xd0d5, 0xceaf, 0x8a9c, 0x8a9d, 0xe6a9,
+    0xe6b0, 0x8a9e, 0xd2a6, 0x8a9f, 0xbdaa, 0xe6ad, 0x8aa0, 0x8aa1,
+    0x8aa2, 0x8aa3, 0x8aa4, 0xe6af, 0x8aa5, 0xc0d1, 0x8aa6, 0x8aa7,
+    0xd2cc, 0x8aa8, 0x8aa9, 0x8aaa, 0xbca7, 0x8aab, 0x8aac, 0x8aad,
+    0x8aae, 0x8aaf, 0x8ab0, 0x8ab1, 0x8ab2, 0x8ab3, 0x8ab4, 0x8ab5,
+    0x8ab6, 0xe6b1, 0x8ab7, 0xd2f6, 0x8ab8, 0x8ab9, 0x8aba, 0xd7cb,
+    /* 0x5a00 .. 0x5aff */
+    0x8abb, 0xcdfe, 0x8abc, 0xcdde, 0xc2a6, 0xe6ab, 0xe6ac, 0xbdbf,
+    0xe6ae, 0xe6b3, 0x8abd, 0x8abe, 0xe6b2, 0x8abf, 0x8ac0, 0x8ac1,
+    0x8ac2, 0xe6b6, 0x8ac3, 0xe6b8, 0x8ac4, 0x8ac5, 0x8ac6, 0x8ac7,
+    0xc4ef, 0x8ac8, 0x8ac9, 0x8aca, 0xc4c8, 0x8acb, 0x8acc, 0xbeea,
+    0xc9ef, 0x8acd, 0x8ace, 0xe6b7, 0x8acf, 0xb6f0, 0x8ad0, 0x8ad1,
+    0x8ad2, 0xc3e4, 0x8ad3, 0x8ad4, 0x8ad5, 0x8ad6, 0x8ad7, 0x8ad8,
+    0x8ad9, 0xd3e9, 0xe6b4, 0x8ada, 0xe6b5, 0x8adb, 0xc8a2, 0x8adc,
+    0x8add, 0x8ade, 0x8adf, 0x8ae0, 0xe6bd, 0x8ae1, 0x8ae2, 0x8ae3,
+    0xe6b9, 0x8ae4, 0x8ae5, 0x8ae6, 0x8ae7, 0x8ae8, 0xc6c5, 0x8ae9,
+    0x8aea, 0xcdf1, 0xe6bb, 0x8aeb, 0x8aec, 0x8aed, 0x8aee, 0x8aef,
+    0x8af0, 0x8af1, 0x8af2, 0x8af3, 0x8af4, 0xe6bc, 0x8af5, 0x8af6,
+    0x8af7, 0x8af8, 0xbbe9, 0x8af9, 0x8afa, 0x8afb, 0x8afc, 0x8afd,
+    0x8afe, 0x8b40, 0xe6be, 0x8b41, 0x8b42, 0x8b43, 0x8b44, 0xe6ba,
+    0x8b45, 0x8b46, 0xc0b7, 0x8b47, 0x8b48, 0x8b49, 0x8b4a, 0x8b4b,
+    0x8b4c, 0x8b4d, 0x8b4e, 0x8b4f, 0xd3a4, 0xe6bf, 0xc9f4, 0xe6c3,
+    0x8b50, 0x8b51, 0xe6c4, 0x8b52, 0x8b53, 0x8b54, 0x8b55, 0xd0f6,
+    0x8b56, 0x8b57, 0x8b58, 0x8b59, 0x8b5a, 0x8b5b, 0x8b5c, 0x8b5d,
+    0x8b5e, 0x8b5f, 0x8b60, 0x8b61, 0x8b62, 0x8b63, 0x8b64, 0x8b65,
+    0x8b66, 0x8b67, 0xc3bd, 0x8b68, 0x8b69, 0x8b6a, 0x8b6b, 0x8b6c,
+    0x8b6d, 0x8b6e, 0xc3c4, 0xe6c2, 0x8b6f, 0x8b70, 0x8b71, 0x8b72,
+    0x8b73, 0x8b74, 0x8b75, 0x8b76, 0x8b77, 0x8b78, 0x8b79, 0x8b7a,
+    0x8b7b, 0x8b7c, 0xe6c1, 0x8b7d, 0x8b7e, 0x8b80, 0x8b81, 0x8b82,
+    0x8b83, 0x8b84, 0xe6c7, 0xcfb1, 0x8b85, 0xebf4, 0x8b86, 0x8b87,
+    0xe6ca, 0x8b88, 0x8b89, 0x8b8a, 0x8b8b, 0x8b8c, 0xe6c5, 0x8b8d,
+    0x8b8e, 0xbcde, 0xc9a9, 0x8b8f, 0x8b90, 0x8b91, 0x8b92, 0x8b93,
+    0x8b94, 0xbcb5, 0x8b95, 0x8b96, 0xcfd3, 0x8b97, 0x8b98, 0x8b99,
+    0x8b9a, 0x8b9b, 0xe6c8, 0x8b9c, 0xe6c9, 0x8b9d, 0xe6ce, 0x8b9e,
+    0xe6d0, 0x8b9f, 0x8ba0, 0x8ba1, 0xe6d1, 0x8ba2, 0x8ba3, 0x8ba4,
+    0xe6cb, 0xb5d5, 0x8ba5, 0xe6cc, 0x8ba6, 0x8ba7, 0xe6cf, 0x8ba8,
+    0x8ba9, 0xc4db, 0x8baa, 0xe6c6, 0x8bab, 0x8bac, 0x8bad, 0x8bae,
+    0x8baf, 0xe6cd, 0x8bb0, 0x8bb1, 0x8bb2, 0x8bb3, 0x8bb4, 0x8bb5,
+    0x8bb6, 0x8bb7, 0x8bb8, 0x8bb9, 0x8bba, 0x8bbb, 0x8bbc, 0x8bbd,
+    /* 0x5b00 .. 0x5bff */
+    0x8bbe, 0x8bbf, 0x8bc0, 0x8bc1, 0x8bc2, 0x8bc3, 0x8bc4, 0x8bc5,
+    0x8bc6, 0xe6d2, 0x8bc7, 0x8bc8, 0x8bc9, 0x8bca, 0x8bcb, 0x8bcc,
+    0x8bcd, 0x8bce, 0x8bcf, 0x8bd0, 0x8bd1, 0x8bd2, 0xe6d4, 0xe6d3,
+    0x8bd3, 0x8bd4, 0x8bd5, 0x8bd6, 0x8bd7, 0x8bd8, 0x8bd9, 0x8bda,
+    0x8bdb, 0x8bdc, 0x8bdd, 0x8bde, 0x8bdf, 0x8be0, 0x8be1, 0x8be2,
+    0x8be3, 0x8be4, 0x8be5, 0x8be6, 0x8be7, 0x8be8, 0x8be9, 0x8bea,
+    0x8beb, 0x8bec, 0xe6d5, 0x8bed, 0xd9f8, 0x8bee, 0x8bef, 0xe6d6,
+    0x8bf0, 0x8bf1, 0x8bf2, 0x8bf3, 0x8bf4, 0x8bf5, 0x8bf6, 0x8bf7,
+    0xe6d7, 0x8bf8, 0x8bf9, 0x8bfa, 0x8bfb, 0x8bfc, 0x8bfd, 0x8bfe,
+    0x8c40, 0x8c41, 0x8c42, 0x8c43, 0x8c44, 0x8c45, 0x8c46, 0x8c47,
+    0xd7d3, 0xe6dd, 0x8c48, 0xe6de, 0xbfd7, 0xd4d0, 0x8c49, 0xd7d6,
+    0xb4e6, 0xcbef, 0xe6da, 0xd8c3, 0xd7ce, 0xd0a2, 0x8c4a, 0xc3cf,
+    0x8c4b, 0x8c4c, 0xe6df, 0xbcbe, 0xb9c2, 0xe6db, 0xd1a7, 0x8c4d,
+    0x8c4e, 0xbaa2, 0xc2cf, 0x8c4f, 0xd8ab, 0x8c50, 0x8c51, 0x8c52,
+    0xcaeb, 0xe5ee, 0x8c53, 0xe6dc, 0x8c54, 0xb7f5, 0x8c55, 0x8c56,
+    0x8c57, 0x8c58, 0xc8e6, 0x8c59, 0x8c5a, 0xc4f5, 0x8c5b, 0x8c5c,
+    0xe5b2, 0xc4fe, 0x8c5d, 0xcbfc, 0xe5b3, 0xd5ac, 0x8c5e, 0xd3ee,
+    0xcad8, 0xb0b2, 0x8c5f, 0xcbce, 0xcdea, 0x8c60, 0x8c61, 0xbaea,
+    0x8c62, 0x8c63, 0x8c64, 0xe5b5, 0x8c65, 0xe5b4, 0x8c66, 0xd7da,
+    0xb9d9, 0xd6e6, 0xb6a8, 0xcdf0, 0xd2cb, 0xb1a6, 0xcab5, 0x8c67,
+    0xb3e8, 0xc9f3, 0xbfcd, 0xd0fb, 0xcad2, 0xe5b6, 0xbbc2, 0x8c68,
+    0x8c69, 0x8c6a, 0xcfdc, 0xb9ac, 0x8c6b, 0x8c6c, 0x8c6d, 0x8c6e,
+    0xd4d7, 0x8c6f, 0x8c70, 0xbaa6, 0xd1e7, 0xcffc, 0xbcd2, 0x8c71,
+    0xe5b7, 0xc8dd, 0x8c72, 0x8c73, 0x8c74, 0xbfed, 0xb1f6, 0xcbde,
+    0x8c75, 0x8c76, 0xbcc5, 0x8c77, 0xbcc4, 0xd2fa, 0xc3dc, 0xbfdc,
+    0x8c78, 0x8c79, 0x8c7a, 0x8c7b, 0xb8bb, 0x8c7c, 0x8c7d, 0x8c7e,
+    0xc3c2, 0x8c80, 0xbaae, 0xd4a2, 0x8c81, 0x8c82, 0x8c83, 0x8c84,
+    0x8c85, 0x8c86, 0x8c87, 0x8c88, 0x8c89, 0xc7de, 0xc4af, 0xb2ec,
+    0x8c8a, 0xb9d1, 0x8c8b, 0x8c8c, 0xe5bb, 0xc1c8, 0x8c8d, 0x8c8e,
+    0xd5af, 0x8c8f, 0x8c90, 0x8c91, 0x8c92, 0x8c93, 0xe5bc, 0x8c94,
+    0xe5be, 0x8c95, 0x8c96, 0x8c97, 0x8c98, 0x8c99, 0x8c9a, 0x8c9b,
+    0xb4e7, 0xb6d4, 0xcbc2, 0xd1b0, 0xb5bc, 0x8c9c, 0x8c9d, 0xcad9,
+    /* 0x5c00 .. 0x5cff */
+    0x8c9e, 0xb7e2, 0x8c9f, 0x8ca0, 0xc9e4, 0x8ca1, 0xbdab, 0x8ca2,
+    0x8ca3, 0xcebe, 0xd7f0, 0x8ca4, 0x8ca5, 0x8ca6, 0x8ca7, 0xd0a1,
+    0x8ca8, 0xc9d9, 0x8ca9, 0x8caa, 0xb6fb, 0xe6d8, 0xbce2, 0x8cab,
+    0xb3be, 0x8cac, 0xc9d0, 0x8cad, 0xe6d9, 0xb3a2, 0x8cae, 0x8caf,
+    0x8cb0, 0x8cb1, 0xdecc, 0x8cb2, 0xd3c8, 0xdecd, 0x8cb3, 0xd2a2,
+    0x8cb4, 0x8cb5, 0x8cb6, 0x8cb7, 0xdece, 0x8cb8, 0x8cb9, 0x8cba,
+    0x8cbb, 0xbecd, 0x8cbc, 0x8cbd, 0xdecf, 0x8cbe, 0x8cbf, 0x8cc0,
+    0xcaac, 0xd2fc, 0xb3df, 0xe5ea, 0xc4e1, 0xbea1, 0xceb2, 0xc4f2,
+    0xbed6, 0xc6a8, 0xb2e3, 0x8cc1, 0x8cc2, 0xbed3, 0x8cc3, 0x8cc4,
+    0xc7fc, 0xcceb, 0xbdec, 0xcedd, 0x8cc5, 0x8cc6, 0xcaba, 0xc6c1,
+    0xe5ec, 0xd0bc, 0x8cc7, 0x8cc8, 0x8cc9, 0xd5b9, 0x8cca, 0x8ccb,
+    0x8ccc, 0xe5ed, 0x8ccd, 0x8cce, 0x8ccf, 0x8cd0, 0xcaf4, 0x8cd1,
+    0xcdc0, 0xc2c5, 0x8cd2, 0xe5ef, 0x8cd3, 0xc2c4, 0xe5f0, 0x8cd4,
+    0x8cd5, 0x8cd6, 0x8cd7, 0x8cd8, 0x8cd9, 0x8cda, 0xe5f8, 0xcdcd,
+    0x8cdb, 0xc9bd, 0x8cdc, 0x8cdd, 0x8cde, 0x8cdf, 0x8ce0, 0x8ce1,
+    0x8ce2, 0xd2d9, 0xe1a8, 0x8ce3, 0x8ce4, 0x8ce5, 0x8ce6, 0xd3ec,
+    0x8ce7, 0xcbea, 0xc6f1, 0x8ce8, 0x8ce9, 0x8cea, 0x8ceb, 0x8cec,
+    0xe1ac, 0x8ced, 0x8cee, 0x8cef, 0xe1a7, 0xe1a9, 0x8cf0, 0x8cf1,
+    0xe1aa, 0xe1af, 0x8cf2, 0x8cf3, 0xb2ed, 0x8cf4, 0xe1ab, 0xb8da,
+    0xe1ad, 0xe1ae, 0xe1b0, 0xb5ba, 0xe1b1, 0x8cf5, 0x8cf6, 0x8cf7,
+    0x8cf8, 0x8cf9, 0xe1b3, 0xe1b8, 0x8cfa, 0x8cfb, 0x8cfc, 0x8cfd,
+    0x8cfe, 0xd1d2, 0x8d40, 0xe1b6, 0xe1b5, 0xc1eb, 0x8d41, 0x8d42,
+    0x8d43, 0xe1b7, 0x8d44, 0xd4c0, 0x8d45, 0xe1b2, 0x8d46, 0xe1ba,
+    0xb0b6, 0x8d47, 0x8d48, 0x8d49, 0x8d4a, 0xe1b4, 0x8d4b, 0xbff9,
+    0x8d4c, 0xe1b9, 0x8d4d, 0x8d4e, 0xe1bb, 0x8d4f, 0x8d50, 0x8d51,
+    0x8d52, 0x8d53, 0x8d54, 0xe1be, 0x8d55, 0x8d56, 0x8d57, 0x8d58,
+    0x8d59, 0x8d5a, 0xe1bc, 0x8d5b, 0x8d5c, 0x8d5d, 0x8d5e, 0x8d5f,
+    0x8d60, 0xd6c5, 0x8d61, 0x8d62, 0x8d63, 0x8d64, 0x8d65, 0x8d66,
+    0x8d67, 0xcfbf, 0x8d68, 0x8d69, 0xe1bd, 0xe1bf, 0xc2cd, 0x8d6a,
+    0xb6eb, 0x8d6b, 0xd3f8, 0x8d6c, 0x8d6d, 0xc7cd, 0x8d6e, 0x8d6f,
+    0xb7e5, 0x8d70, 0x8d71, 0x8d72, 0x8d73, 0x8d74, 0x8d75, 0x8d76,
+    0x8d77, 0x8d78, 0x8d79, 0xbefe, 0x8d7a, 0x8d7b, 0x8d7c, 0x8d7d,
+    /* 0x5d00 .. 0x5dff */
+    0x8d7e, 0x8d80, 0xe1c0, 0xe1c1, 0x8d81, 0x8d82, 0xe1c7, 0xb3e7,
+    0x8d83, 0x8d84, 0x8d85, 0x8d86, 0x8d87, 0x8d88, 0xc6e9, 0x8d89,
+    0x8d8a, 0x8d8b, 0x8d8c, 0x8d8d, 0xb4de, 0x8d8e, 0xd1c2, 0x8d8f,
+    0x8d90, 0x8d91, 0x8d92, 0xe1c8, 0x8d93, 0x8d94, 0xe1c6, 0x8d95,
+    0x8d96, 0x8d97, 0x8d98, 0x8d99, 0xe1c5, 0x8d9a, 0xe1c3, 0xe1c2,
+    0x8d9b, 0xb1c0, 0x8d9c, 0x8d9d, 0x8d9e, 0xd5b8, 0xe1c4, 0x8d9f,
+    0x8da0, 0x8da1, 0x8da2, 0x8da3, 0xe1cb, 0x8da4, 0x8da5, 0x8da6,
+    0x8da7, 0x8da8, 0x8da9, 0x8daa, 0x8dab, 0xe1cc, 0xe1ca, 0x8dac,
+    0x8dad, 0x8dae, 0x8daf, 0x8db0, 0x8db1, 0x8db2, 0x8db3, 0xeffa,
+    0x8db4, 0x8db5, 0xe1d3, 0xe1d2, 0xc7b6, 0x8db6, 0x8db7, 0x8db8,
+    0x8db9, 0x8dba, 0x8dbb, 0x8dbc, 0x8dbd, 0x8dbe, 0x8dbf, 0x8dc0,
+    0xe1c9, 0x8dc1, 0x8dc2, 0xe1ce, 0x8dc3, 0xe1d0, 0x8dc4, 0x8dc5,
+    0x8dc6, 0x8dc7, 0x8dc8, 0x8dc9, 0x8dca, 0x8dcb, 0x8dcc, 0x8dcd,
+    0x8dce, 0xe1d4, 0x8dcf, 0xe1d1, 0xe1cd, 0x8dd0, 0x8dd1, 0xe1cf,
+    0x8dd2, 0x8dd3, 0x8dd4, 0x8dd5, 0xe1d5, 0x8dd6, 0x8dd7, 0x8dd8,
+    0x8dd9, 0x8dda, 0x8ddb, 0x8ddc, 0x8ddd, 0x8dde, 0x8ddf, 0x8de0,
+    0x8de1, 0x8de2, 0xe1d6, 0x8de3, 0x8de4, 0x8de5, 0x8de6, 0x8de7,
+    0x8de8, 0x8de9, 0x8dea, 0x8deb, 0x8dec, 0x8ded, 0x8dee, 0x8def,
+    0x8df0, 0x8df1, 0x8df2, 0x8df3, 0x8df4, 0x8df5, 0x8df6, 0x8df7,
+    0x8df8, 0xe1d7, 0x8df9, 0x8dfa, 0x8dfb, 0xe1d8, 0x8dfc, 0x8dfd,
+    0x8dfe, 0x8e40, 0x8e41, 0x8e42, 0x8e43, 0x8e44, 0x8e45, 0x8e46,
+    0x8e47, 0x8e48, 0x8e49, 0x8e4a, 0x8e4b, 0x8e4c, 0x8e4d, 0x8e4e,
+    0x8e4f, 0x8e50, 0x8e51, 0x8e52, 0x8e53, 0x8e54, 0x8e55, 0xe1da,
+    0x8e56, 0x8e57, 0x8e58, 0x8e59, 0x8e5a, 0x8e5b, 0x8e5c, 0x8e5d,
+    0x8e5e, 0x8e5f, 0x8e60, 0x8e61, 0x8e62, 0xe1db, 0x8e63, 0x8e64,
+    0x8e65, 0x8e66, 0x8e67, 0x8e68, 0x8e69, 0xcea1, 0x8e6a, 0x8e6b,
+    0x8e6c, 0x8e6d, 0x8e6e, 0x8e6f, 0x8e70, 0x8e71, 0x8e72, 0x8e73,
+    0x8e74, 0x8e75, 0x8e76, 0xe7dd, 0x8e77, 0xb4a8, 0xd6dd, 0x8e78,
+    0x8e79, 0xd1b2, 0xb3b2, 0x8e7a, 0x8e7b, 0xb9a4, 0xd7f3, 0xc7c9,
+    0xbede, 0xb9ae, 0x8e7c, 0xced7, 0x8e7d, 0x8e7e, 0xb2ee, 0xdbcf,
+    0x8e80, 0xbcba, 0xd2d1, 0xcbc8, 0xb0cd, 0x8e81, 0x8e82, 0xcfef,
+    0x8e83, 0x8e84, 0x8e85, 0x8e86, 0x8e87, 0xd9e3, 0xbded, 0x8e88,
+    /* 0x5e00 .. 0x5eff */
+    0x8e89, 0xb1d2, 0xcad0, 0xb2bc, 0x8e8a, 0xcba7, 0xb7ab, 0x8e8b,
+    0xcaa6, 0x8e8c, 0x8e8d, 0x8e8e, 0xcfa3, 0x8e8f, 0x8e90, 0xe0f8,
+    0xd5ca, 0xe0fb, 0x8e91, 0x8e92, 0xe0fa, 0xc5c1, 0xccfb, 0x8e93,
+    0xc1b1, 0xe0f9, 0xd6e3, 0xb2af, 0xd6c4, 0xb5db, 0x8e94, 0x8e95,
+    0x8e96, 0x8e97, 0x8e98, 0x8e99, 0x8e9a, 0x8e9b, 0xb4f8, 0xd6a1,
+    0x8e9c, 0x8e9d, 0x8e9e, 0x8e9f, 0x8ea0, 0xcfaf, 0xb0ef, 0x8ea1,
+    0x8ea2, 0xe0fc, 0x8ea3, 0x8ea4, 0x8ea5, 0x8ea6, 0x8ea7, 0xe1a1,
+    0xb3a3, 0x8ea8, 0x8ea9, 0xe0fd, 0xe0fe, 0xc3b1, 0x8eaa, 0x8eab,
+    0x8eac, 0x8ead, 0xc3dd, 0x8eae, 0xe1a2, 0xb7f9, 0x8eaf, 0x8eb0,
+    0x8eb1, 0x8eb2, 0x8eb3, 0x8eb4, 0xbbcf, 0x8eb5, 0x8eb6, 0x8eb7,
+    0x8eb8, 0x8eb9, 0x8eba, 0x8ebb, 0xe1a3, 0xc4bb, 0x8ebc, 0x8ebd,
+    0x8ebe, 0x8ebf, 0x8ec0, 0xe1a4, 0x8ec1, 0x8ec2, 0xe1a5, 0x8ec3,
+    0x8ec4, 0xe1a6, 0xb4b1, 0x8ec5, 0x8ec6, 0x8ec7, 0x8ec8, 0x8ec9,
+    0x8eca, 0x8ecb, 0x8ecc, 0x8ecd, 0x8ece, 0x8ecf, 0x8ed0, 0x8ed1,
+    0x8ed2, 0x8ed3, 0xb8c9, 0xc6bd, 0xc4ea, 0x8ed4, 0xb2a2, 0x8ed5,
+    0xd0d2, 0x8ed6, 0xe7db, 0xbbc3, 0xd3d7, 0xd3c4, 0x8ed7, 0xb9e3,
+    0xe2cf, 0x8ed8, 0x8ed9, 0x8eda, 0xd7af, 0x8edb, 0xc7ec, 0xb1d3,
+    0x8edc, 0x8edd, 0xb4b2, 0xe2d1, 0x8ede, 0x8edf, 0x8ee0, 0xd0f2,
+    0xc2ae, 0xe2d0, 0x8ee1, 0xbfe2, 0xd3a6, 0xb5d7, 0xe2d2, 0xb5ea,
+    0x8ee2, 0xc3ed, 0xb8fd, 0x8ee3, 0xb8ae, 0x8ee4, 0xc5d3, 0xb7cf,
+    0xe2d4, 0x8ee5, 0x8ee6, 0x8ee7, 0x8ee8, 0xe2d3, 0xb6c8, 0xd7f9,
+    0x8ee9, 0x8eea, 0x8eeb, 0x8eec, 0x8eed, 0xcda5, 0x8eee, 0x8eef,
+    0x8ef0, 0x8ef1, 0x8ef2, 0xe2d8, 0x8ef3, 0xe2d6, 0xcafc, 0xbfb5,
+    0xd3b9, 0xe2d5, 0x8ef4, 0x8ef5, 0x8ef6, 0x8ef7, 0xe2d7, 0x8ef8,
+    0x8ef9, 0x8efa, 0x8efb, 0x8efc, 0x8efd, 0x8efe, 0x8f40, 0x8f41,
+    0x8f42, 0xc1ae, 0xc0c8, 0x8f43, 0x8f44, 0x8f45, 0x8f46, 0x8f47,
+    0x8f48, 0xe2db, 0xe2da, 0xc0aa, 0x8f49, 0x8f4a, 0xc1ce, 0x8f4b,
+    0x8f4c, 0x8f4d, 0x8f4e, 0xe2dc, 0x8f4f, 0x8f50, 0x8f51, 0x8f52,
+    0x8f53, 0x8f54, 0x8f55, 0x8f56, 0x8f57, 0x8f58, 0x8f59, 0x8f5a,
+    0xe2dd, 0x8f5b, 0xe2de, 0x8f5c, 0x8f5d, 0x8f5e, 0x8f5f, 0x8f60,
+    0x8f61, 0x8f62, 0x8f63, 0x8f64, 0xdbc8, 0x8f65, 0xd1d3, 0xcda2,
+    0x8f66, 0x8f67, 0xbda8, 0x8f68, 0x8f69, 0x8f6a, 0xdec3, 0xd8a5,
+    /* 0x5f00 .. 0x5fff */
+    0xbfaa, 0xdbcd, 0xd2ec, 0xc6fa, 0xc5aa, 0x8f6b, 0x8f6c, 0x8f6d,
+    0xdec4, 0x8f6e, 0xb1d7, 0xdfae, 0x8f6f, 0x8f70, 0x8f71, 0xcabd,
+    0x8f72, 0xdfb1, 0x8f73, 0xb9ad, 0x8f74, 0xd2fd, 0x8f75, 0xb8a5,
+    0xbaeb, 0x8f76, 0x8f77, 0xb3da, 0x8f78, 0x8f79, 0x8f7a, 0xb5dc,
+    0xd5c5, 0x8f7b, 0x8f7c, 0x8f7d, 0x8f7e, 0xc3d6, 0xcfd2, 0xbba1,
+    0x8f80, 0xe5f3, 0xe5f2, 0x8f81, 0x8f82, 0xe5f4, 0x8f83, 0xcde4,
+    0x8f84, 0xc8f5, 0x8f85, 0x8f86, 0x8f87, 0x8f88, 0x8f89, 0x8f8a,
+    0x8f8b, 0xb5af, 0xc7bf, 0x8f8c, 0xe5f6, 0x8f8d, 0x8f8e, 0x8f8f,
+    0xecb0, 0x8f90, 0x8f91, 0x8f92, 0x8f93, 0x8f94, 0x8f95, 0x8f96,
+    0x8f97, 0x8f98, 0x8f99, 0x8f9a, 0x8f9b, 0x8f9c, 0x8f9d, 0x8f9e,
+    0xe5e6, 0x8f9f, 0xb9e9, 0xb5b1, 0x8fa0, 0xc2bc, 0xe5e8, 0xe5e7,
+    0xe5e9, 0x8fa1, 0x8fa2, 0x8fa3, 0x8fa4, 0xd2cd, 0x8fa5, 0x8fa6,
+    0x8fa7, 0xe1ea, 0xd0ce, 0x8fa8, 0xcdae, 0x8fa9, 0xd1e5, 0x8faa,
+    0x8fab, 0xb2ca, 0xb1eb, 0x8fac, 0xb1f2, 0xc5ed, 0x8fad, 0x8fae,
+    0xd5c3, 0xd3b0, 0x8faf, 0xe1dc, 0x8fb0, 0x8fb1, 0x8fb2, 0xe1dd,
+    0x8fb3, 0xd2db, 0x8fb4, 0xb3b9, 0xb1cb, 0x8fb5, 0x8fb6, 0x8fb7,
+    0xcdf9, 0xd5f7, 0xe1de, 0x8fb8, 0xbeb6, 0xb4fd, 0x8fb9, 0xe1df,
+    0xbadc, 0xe1e0, 0xbbb2, 0xc2c9, 0xe1e1, 0x8fba, 0x8fbb, 0x8fbc,
+    0xd0ec, 0x8fbd, 0xcdbd, 0x8fbe, 0x8fbf, 0xe1e2, 0x8fc0, 0xb5c3,
+    0xc5c7, 0xe1e3, 0x8fc1, 0x8fc2, 0xe1e4, 0x8fc3, 0x8fc4, 0x8fc5,
+    0x8fc6, 0xd3f9, 0x8fc7, 0x8fc8, 0x8fc9, 0x8fca, 0x8fcb, 0x8fcc,
+    0xe1e5, 0x8fcd, 0xd1ad, 0x8fce, 0x8fcf, 0xe1e6, 0xcea2, 0x8fd0,
+    0x8fd1, 0x8fd2, 0x8fd3, 0x8fd4, 0x8fd5, 0xe1e7, 0x8fd6, 0xb5c2,
+    0x8fd7, 0x8fd8, 0x8fd9, 0x8fda, 0xe1e8, 0xbbd5, 0x8fdb, 0x8fdc,
+    0x8fdd, 0x8fde, 0x8fdf, 0xd0c4, 0xe2e0, 0xb1d8, 0xd2e4, 0x8fe0,
+    0x8fe1, 0xe2e1, 0x8fe2, 0x8fe3, 0xbcc9, 0xc8cc, 0x8fe4, 0xe2e3,
+    0xecfe, 0xecfd, 0xdfaf, 0x8fe5, 0x8fe6, 0x8fe7, 0xe2e2, 0xd6be,
+    0xcdfc, 0xc3a6, 0x8fe8, 0x8fe9, 0x8fea, 0xe3c3, 0x8feb, 0x8fec,
+    0xd6d2, 0xe2e7, 0x8fed, 0x8fee, 0xe2e8, 0x8fef, 0x8ff0, 0xd3c7,
+    0x8ff1, 0x8ff2, 0xe2ec, 0xbfec, 0x8ff3, 0xe2ed, 0xe2e5, 0x8ff4,
+    0x8ff5, 0xb3c0, 0x8ff6, 0x8ff7, 0x8ff8, 0xc4ee, 0x8ff9, 0x8ffa,
+    0xe2ee, 0x8ffb, 0x8ffc, 0xd0c3, 0x8ffd, 0xbaf6, 0xe2e9, 0xb7de,
+    /* 0x6000 .. 0x60ff */
+    0xbbb3, 0xccac, 0xcbcb, 0xe2e4, 0xe2e6, 0xe2ea, 0xe2eb, 0x8ffe,
+    0x9040, 0x9041, 0xe2f7, 0x9042, 0x9043, 0xe2f4, 0xd4f5, 0xe2f3,
+    0x9044, 0x9045, 0xc5ad, 0x9046, 0xd5fa, 0xc5c2, 0xb2c0, 0x9047,
+    0x9048, 0xe2ef, 0x9049, 0xe2f2, 0xc1af, 0xcbbc, 0x904a, 0x904b,
+    0xb5a1, 0xe2f9, 0x904c, 0x904d, 0x904e, 0xbcb1, 0xe2f1, 0xd0d4,
+    0xd4b9, 0xe2f5, 0xb9d6, 0xe2f6, 0x904f, 0x9050, 0x9051, 0xc7d3,
+    0x9052, 0x9053, 0x9054, 0x9055, 0x9056, 0xe2f0, 0x9057, 0x9058,
+    0x9059, 0x905a, 0x905b, 0xd7dc, 0xeda1, 0x905c, 0x905d, 0xe2f8,
+    0x905e, 0xeda5, 0xe2fe, 0xcad1, 0x905f, 0x9060, 0x9061, 0x9062,
+    0x9063, 0x9064, 0x9065, 0xc1b5, 0x9066, 0xbbd0, 0x9067, 0x9068,
+    0xbfd6, 0x9069, 0xbae3, 0x906a, 0x906b, 0xcba1, 0x906c, 0x906d,
+    0x906e, 0xeda6, 0xeda3, 0x906f, 0x9070, 0xeda2, 0x9071, 0x9072,
+    0x9073, 0x9074, 0xbbd6, 0xeda7, 0xd0f4, 0x9075, 0x9076, 0xeda4,
+    0xbade, 0xb6f7, 0xe3a1, 0xb6b2, 0xccf1, 0xb9a7, 0x9077, 0xcfa2,
+    0xc7a1, 0x9078, 0x9079, 0xbfd2, 0x907a, 0x907b, 0xb6f1, 0x907c,
+    0xe2fa, 0xe2fb, 0xe2fd, 0xe2fc, 0xc4d5, 0xe3a2, 0x907d, 0xd3c1,
+    0x907e, 0x9080, 0x9081, 0xe3a7, 0xc7c4, 0x9082, 0x9083, 0x9084,
+    0x9085, 0xcfa4, 0x9086, 0x9087, 0xe3a9, 0xbab7, 0x9088, 0x9089,
+    0x908a, 0x908b, 0xe3a8, 0x908c, 0xbbda, 0x908d, 0xe3a3, 0x908e,
+    0x908f, 0x9090, 0xe3a4, 0xe3aa, 0x9091, 0xe3a6, 0x9092, 0xcef2,
+    0xd3c6, 0x9093, 0x9094, 0xbbbc, 0x9095, 0x9096, 0xd4c3, 0x9097,
+    0xc4fa, 0x9098, 0x9099, 0xeda8, 0xd0fc, 0xe3a5, 0x909a, 0xc3f5,
+    0x909b, 0xe3ad, 0xb1af, 0x909c, 0xe3b2, 0x909d, 0x909e, 0x909f,
+    0xbcc2, 0x90a0, 0x90a1, 0xe3ac, 0xb5bf, 0x90a2, 0x90a3, 0x90a4,
+    0x90a5, 0x90a6, 0x90a7, 0x90a8, 0x90a9, 0xc7e9, 0xe3b0, 0x90aa,
+    0x90ab, 0x90ac, 0xbeaa, 0xcdef, 0x90ad, 0x90ae, 0x90af, 0x90b0,
+    0x90b1, 0xbbf3, 0x90b2, 0x90b3, 0x90b4, 0xcce8, 0x90b5, 0x90b6,
+    0xe3af, 0x90b7, 0xe3b1, 0x90b8, 0xcfa7, 0xe3ae, 0x90b9, 0xcea9,
+    0xbbdd, 0x90ba, 0x90bb, 0x90bc, 0x90bd, 0x90be, 0xb5eb, 0xbee5,
+    0xb2d2, 0xb3cd, 0x90bf, 0xb1b9, 0xe3ab, 0xb2d1, 0xb5ac, 0xb9df,
+    0xb6e8, 0x90c0, 0x90c1, 0xcfeb, 0xe3b7, 0x90c2, 0xbbcc, 0x90c3,
+    0x90c4, 0xc8c7, 0xd0ca, 0x90c5, 0x90c6, 0x90c7, 0x90c8, 0x90c9,
+    /* 0x6100 .. 0x61ff */
+    0xe3b8, 0xb3ee, 0x90ca, 0x90cb, 0x90cc, 0x90cd, 0xeda9, 0x90ce,
+    0xd3fa, 0xd3e4, 0x90cf, 0x90d0, 0x90d1, 0xedaa, 0xe3b9, 0xd2e2,
+    0x90d2, 0x90d3, 0x90d4, 0x90d5, 0x90d6, 0xe3b5, 0x90d7, 0x90d8,
+    0x90d9, 0x90da, 0xd3de, 0x90db, 0x90dc, 0x90dd, 0x90de, 0xb8d0,
+    0xe3b3, 0x90df, 0x90e0, 0xe3b6, 0xb7df, 0x90e1, 0xe3b4, 0xc0a2,
+    0x90e2, 0x90e3, 0x90e4, 0xe3ba, 0x90e5, 0x90e6, 0x90e7, 0x90e8,
+    0x90e9, 0x90ea, 0x90eb, 0x90ec, 0x90ed, 0x90ee, 0x90ef, 0x90f0,
+    0x90f1, 0x90f2, 0x90f3, 0x90f4, 0x90f5, 0x90f6, 0x90f7, 0xd4b8,
+    0x90f8, 0x90f9, 0x90fa, 0x90fb, 0x90fc, 0x90fd, 0x90fe, 0x9140,
+    0xb4c8, 0x9141, 0xe3bb, 0x9142, 0xbbc5, 0x9143, 0xc9f7, 0x9144,
+    0x9145, 0xc9e5, 0x9146, 0x9147, 0x9148, 0xc4bd, 0x9149, 0x914a,
+    0x914b, 0x914c, 0x914d, 0x914e, 0x914f, 0xedab, 0x9150, 0x9151,
+    0x9152, 0x9153, 0xc2fd, 0x9154, 0x9155, 0x9156, 0x9157, 0xbbdb,
+    0xbfae, 0x9158, 0x9159, 0x915a, 0x915b, 0x915c, 0x915d, 0x915e,
+    0xcebf, 0x915f, 0x9160, 0x9161, 0x9162, 0xe3bc, 0x9163, 0xbfb6,
+    0x9164, 0x9165, 0x9166, 0x9167, 0x9168, 0x9169, 0x916a, 0x916b,
+    0x916c, 0x916d, 0x916e, 0x916f, 0x9170, 0x9171, 0x9172, 0x9173,
+    0x9174, 0x9175, 0x9176, 0xb1ef, 0x9177, 0x9178, 0xd4f7, 0x9179,
+    0x917a, 0x917b, 0x917c, 0x917d, 0xe3be, 0x917e, 0x9180, 0x9181,
+    0x9182, 0x9183, 0x9184, 0x9185, 0x9186, 0xedad, 0x9187, 0x9188,
+    0x9189, 0x918a, 0x918b, 0x918c, 0x918d, 0x918e, 0x918f, 0xe3bf,
+    0xbaa9, 0xedac, 0x9190, 0x9191, 0xe3bd, 0x9192, 0x9193, 0x9194,
+    0x9195, 0x9196, 0x9197, 0x9198, 0x9199, 0x919a, 0x919b, 0xe3c0,
+    0x919c, 0x919d, 0x919e, 0x919f, 0x91a0, 0x91a1, 0xbab6, 0x91a2,
+    0x91a3, 0x91a4, 0xb6ae, 0x91a5, 0x91a6, 0x91a7, 0x91a8, 0x91a9,
+    0xd0b8, 0x91aa, 0xb0c3, 0xedae, 0x91ab, 0x91ac, 0x91ad, 0x91ae,
+    0x91af, 0xedaf, 0xc0c1, 0x91b0, 0xe3c1, 0x91b1, 0x91b2, 0x91b3,
+    0x91b4, 0x91b5, 0x91b6, 0x91b7, 0x91b8, 0x91b9, 0x91ba, 0x91bb,
+    0x91bc, 0x91bd, 0x91be, 0x91bf, 0x91c0, 0x91c1, 0xc5b3, 0x91c2,
+    0x91c3, 0x91c4, 0x91c5, 0x91c6, 0x91c7, 0x91c8, 0x91c9, 0x91ca,
+    0x91cb, 0x91cc, 0x91cd, 0x91ce, 0x91cf, 0xe3c2, 0x91d0, 0x91d1,
+    0x91d2, 0x91d3, 0x91d4, 0x91d5, 0x91d6, 0x91d7, 0x91d8, 0xdcb2,
+    /* 0x6200 .. 0x62ff */
+    0x91d9, 0x91da, 0x91db, 0x91dc, 0x91dd, 0x91de, 0xedb0, 0x91df,
+    0xb8ea, 0x91e0, 0xceec, 0xeaa7, 0xd0e7, 0xcaf9, 0xc8d6, 0xcfb7,
+    0xb3c9, 0xced2, 0xbde4, 0x91e1, 0x91e2, 0xe3de, 0xbbf2, 0xeaa8,
+    0xd5bd, 0x91e3, 0xc6dd, 0xeaa9, 0x91e4, 0x91e5, 0x91e6, 0xeaaa,
+    0x91e7, 0xeaac, 0xeaab, 0x91e8, 0xeaae, 0xeaad, 0x91e9, 0x91ea,
+    0x91eb, 0x91ec, 0xbdd8, 0x91ed, 0xeaaf, 0x91ee, 0xc2be, 0x91ef,
+    0x91f0, 0x91f1, 0x91f2, 0xb4c1, 0xb4f7, 0x91f3, 0x91f4, 0xbba7,
+    0x91f5, 0x91f6, 0x91f7, 0x91f8, 0x91f9, 0xece6, 0xece5, 0xb7bf,
+    0xcbf9, 0xb1e2, 0x91fa, 0xece7, 0x91fb, 0x91fc, 0x91fd, 0xc9c8,
+    0xece8, 0xece9, 0x91fe, 0xcad6, 0xded0, 0xb2c5, 0xd4fa, 0x9240,
+    0x9241, 0xc6cb, 0xb0c7, 0xb4f2, 0xc8d3, 0x9242, 0x9243, 0x9244,
+    0xcdd0, 0x9245, 0x9246, 0xbfb8, 0x9247, 0x9248, 0x9249, 0x924a,
+    0x924b, 0x924c, 0x924d, 0xbfdb, 0x924e, 0x924f, 0xc7a4, 0xd6b4,
+    0x9250, 0xc0a9, 0xded1, 0xc9a8, 0xd1ef, 0xc5a4, 0xb0e7, 0xb3b6,
+    0xc8c5, 0x9251, 0x9252, 0xb0e2, 0x9253, 0x9254, 0xb7f6, 0x9255,
+    0x9256, 0xc5fa, 0x9257, 0x9258, 0xb6f3, 0x9259, 0xd5d2, 0xb3d0,
+    0xbcbc, 0x925a, 0x925b, 0x925c, 0xb3ad, 0x925d, 0x925e, 0x925f,
+    0x9260, 0xbef1, 0xb0d1, 0x9261, 0x9262, 0x9263, 0x9264, 0x9265,
+    0x9266, 0xd2d6, 0xcae3, 0xd7a5, 0x9267, 0xcdb6, 0xb6b6, 0xbfb9,
+    0xd5db, 0x9268, 0xb8a7, 0xc5d7, 0x9269, 0x926a, 0x926b, 0xded2,
+    0xbfd9, 0xc2d5, 0xc7c0, 0x926c, 0xbba4, 0xb1a8, 0x926d, 0x926e,
+    0xc5ea, 0x926f, 0x9270, 0xc5fb, 0xcca7, 0x9271, 0x9272, 0x9273,
+    0x9274, 0xb1a7, 0x9275, 0x9276, 0x9277, 0xb5d6, 0x9278, 0x9279,
+    0x927a, 0xc4a8, 0x927b, 0xded3, 0xd1ba, 0xb3e9, 0x927c, 0xc3f2,
+    0x927d, 0x927e, 0xb7f7, 0x9280, 0xd6f4, 0xb5a3, 0xb2f0, 0xc4b4,
+    0xc4e9, 0xc0ad, 0xded4, 0x9281, 0xb0e8, 0xc5c4, 0xc1e0, 0x9282,
+    0xb9d5, 0x9283, 0xbedc, 0xcdd8, 0xb0ce, 0x9284, 0xcdcf, 0xded6,
+    0xbed0, 0xd7be, 0xded5, 0xd5d0, 0xb0dd, 0x9285, 0x9286, 0xc4e2,
+    0x9287, 0x9288, 0xc2a3, 0xbcf0, 0x9289, 0xd3b5, 0xc0b9, 0xc5a1,
+    0xb2a6, 0xd4f1, 0x928a, 0x928b, 0xc0a8, 0xcac3, 0xded7, 0xd5fc,
+    0x928c, 0xb9b0, 0x928d, 0xc8ad, 0xcba9, 0x928e, 0xded9, 0xbfbd,
+    0x928f, 0x9290, 0x9291, 0x9292, 0xc6b4, 0xd7a7, 0xcab0, 0xc4c3,
+    /* 0x6300 .. 0x63ff */
+    0x9293, 0xb3d6, 0xb9d2, 0x9294, 0x9295, 0x9296, 0x9297, 0xd6b8,
+    0xeafc, 0xb0b4, 0x9298, 0x9299, 0x929a, 0x929b, 0xbfe6, 0x929c,
+    0x929d, 0xccf4, 0x929e, 0x929f, 0x92a0, 0x92a1, 0xcdda, 0x92a2,
+    0x92a3, 0x92a4, 0xd6bf, 0xc2ce, 0x92a5, 0xcece, 0xcca2, 0xd0ae,
+    0xc4d3, 0xb5b2, 0xded8, 0xd5f5, 0xbcb7, 0xbbd3, 0x92a6, 0x92a7,
+    0xb0a4, 0x92a8, 0xc5b2, 0xb4ec, 0x92a9, 0x92aa, 0x92ab, 0xd5f1,
+    0x92ac, 0x92ad, 0xeafd, 0x92ae, 0x92af, 0x92b0, 0x92b1, 0x92b2,
+    0x92b3, 0xdeda, 0xcda6, 0x92b4, 0x92b5, 0xcdec, 0x92b6, 0x92b7,
+    0x92b8, 0x92b9, 0xcee6, 0xdedc, 0x92ba, 0xcdb1, 0xc0a6, 0x92bb,
+    0x92bc, 0xd7bd, 0x92bd, 0xdedb, 0xb0c6, 0xbab4, 0xc9d3, 0xc4f3,
+    0xbee8, 0x92be, 0x92bf, 0x92c0, 0x92c1, 0xb2b6, 0x92c2, 0x92c3,
+    0x92c4, 0x92c5, 0x92c6, 0x92c7, 0x92c8, 0x92c9, 0xc0cc, 0xcbf0,
+    0x92ca, 0xbcf1, 0xbbbb, 0xb5b7, 0x92cb, 0x92cc, 0x92cd, 0xc5f5,
+    0x92ce, 0xdee6, 0x92cf, 0x92d0, 0x92d1, 0xdee3, 0xbedd, 0x92d2,
+    0x92d3, 0xdedf, 0x92d4, 0x92d5, 0x92d6, 0x92d7, 0xb4b7, 0xbddd,
+    0x92d8, 0x92d9, 0xdee0, 0xc4ed, 0x92da, 0x92db, 0x92dc, 0x92dd,
+    0xcfc6, 0x92de, 0xb5e0, 0x92df, 0x92e0, 0x92e1, 0x92e2, 0xb6de,
+    0xcada, 0xb5f4, 0xdee5, 0x92e3, 0xd5c6, 0x92e4, 0xdee1, 0xcccd,
+    0xc6fe, 0x92e5, 0xc5c5, 0x92e6, 0x92e7, 0x92e8, 0xd2b4, 0x92e9,
+    0xbef2, 0x92ea, 0x92eb, 0x92ec, 0x92ed, 0x92ee, 0x92ef, 0x92f0,
+    0xc2d3, 0x92f1, 0xccbd, 0xb3b8, 0x92f2, 0xbdd3, 0x92f3, 0xbfd8,
+    0xcdc6, 0xd1da, 0xb4eb, 0x92f4, 0xdee4, 0xdedd, 0xdee7, 0x92f5,
+    0xeafe, 0x92f6, 0x92f7, 0xc2b0, 0xdee2, 0x92f8, 0x92f9, 0xd6c0,
+    0xb5a7, 0x92fa, 0xb2f4, 0x92fb, 0xdee8, 0x92fc, 0xdef2, 0x92fd,
+    0x92fe, 0x9340, 0x9341, 0x9342, 0xdeed, 0x9343, 0xdef1, 0x9344,
+    0x9345, 0xc8e0, 0x9346, 0x9347, 0x9348, 0xd7e1, 0xdeef, 0xc3e8,
+    0xcce1, 0x9349, 0xb2e5, 0x934a, 0x934b, 0x934c, 0xd2be, 0x934d,
+    0x934e, 0x934f, 0x9350, 0x9351, 0x9352, 0x9353, 0xdeee, 0x9354,
+    0xdeeb, 0xced5, 0x9355, 0xb4a7, 0x9356, 0x9357, 0x9358, 0x9359,
+    0x935a, 0xbfab, 0xbebe, 0x935b, 0x935c, 0xbdd2, 0x935d, 0x935e,
+    0x935f, 0x9360, 0xdee9, 0x9361, 0xd4ae, 0x9362, 0xdede, 0x9363,
+    0xdeea, 0x9364, 0x9365, 0x9366, 0x9367, 0xc0bf, 0x9368, 0xdeec,
+    /* 0x6400 .. 0x64ff */
+    0xb2f3, 0xb8e9, 0xc2a7, 0x9369, 0x936a, 0xbdc1, 0x936b, 0x936c,
+    0x936d, 0x936e, 0x936f, 0xdef5, 0xdef8, 0x9370, 0x9371, 0xb2ab,
+    0xb4a4, 0x9372, 0x9373, 0xb4ea, 0xc9a6, 0x9374, 0x9375, 0x9376,
+    0x9377, 0x9378, 0x9379, 0xdef6, 0xcbd1, 0x937a, 0xb8e3, 0x937b,
+    0xdef7, 0xdefa, 0x937c, 0x937d, 0x937e, 0x9380, 0xdef9, 0x9381,
+    0x9382, 0x9383, 0xccc2, 0x9384, 0xb0e1, 0xb4ee, 0x9385, 0x9386,
+    0x9387, 0x9388, 0x9389, 0x938a, 0xe5ba, 0x938b, 0x938c, 0x938d,
+    0x938e, 0x938f, 0xd0af, 0x9390, 0x9391, 0xb2eb, 0x9392, 0xeba1,
+    0x9393, 0xdef4, 0x9394, 0x9395, 0xc9e3, 0xdef3, 0xb0da, 0xd2a1,
+    0xb1f7, 0x9396, 0xccaf, 0x9397, 0x9398, 0x9399, 0x939a, 0x939b,
+    0x939c, 0x939d, 0xdef0, 0x939e, 0xcba4, 0x939f, 0x93a0, 0x93a1,
+    0xd5aa, 0x93a2, 0x93a3, 0x93a4, 0x93a5, 0x93a6, 0xdefb, 0x93a7,
+    0x93a8, 0x93a9, 0x93aa, 0x93ab, 0x93ac, 0x93ad, 0x93ae, 0xb4dd,
+    0x93af, 0xc4a6, 0x93b0, 0x93b1, 0x93b2, 0xdefd, 0x93b3, 0x93b4,
+    0x93b5, 0x93b6, 0x93b7, 0x93b8, 0x93b9, 0x93ba, 0x93bb, 0x93bc,
+    0xc3fe, 0xc4a1, 0xdfa1, 0x93bd, 0x93be, 0x93bf, 0x93c0, 0x93c1,
+    0x93c2, 0x93c3, 0xc1cc, 0x93c4, 0xdefc, 0xbeef, 0x93c5, 0xc6b2,
+    0x93c6, 0x93c7, 0x93c8, 0x93c9, 0x93ca, 0x93cb, 0x93cc, 0x93cd,
+    0x93ce, 0xb3c5, 0xc8f6, 0x93cf, 0x93d0, 0xcbba, 0xdefe, 0x93d1,
+    0x93d2, 0xdfa4, 0x93d3, 0x93d4, 0x93d5, 0x93d6, 0xd7b2, 0x93d7,
+    0x93d8, 0x93d9, 0x93da, 0x93db, 0xb3b7, 0x93dc, 0x93dd, 0x93de,
+    0x93df, 0xc1c3, 0x93e0, 0x93e1, 0xc7cb, 0xb2a5, 0xb4e9, 0x93e2,
+    0xd7ab, 0x93e3, 0x93e4, 0x93e5, 0x93e6, 0xc4ec, 0x93e7, 0xdfa2,
+    0xdfa3, 0x93e8, 0xdfa5, 0x93e9, 0xbab3, 0x93ea, 0x93eb, 0x93ec,
+    0xdfa6, 0x93ed, 0xc0de, 0x93ee, 0x93ef, 0xc9c3, 0x93f0, 0x93f1,
+    0x93f2, 0x93f3, 0x93f4, 0x93f5, 0x93f6, 0xb2d9, 0xc7e6, 0x93f7,
+    0xdfa7, 0x93f8, 0xc7dc, 0x93f9, 0x93fa, 0x93fb, 0x93fc, 0xdfa8,
+    0xeba2, 0x93fd, 0x93fe, 0x9440, 0x9441, 0x9442, 0xcbd3, 0x9443,
+    0x9444, 0x9445, 0xdfaa, 0x9446, 0xdfa9, 0x9447, 0xb2c1, 0x9448,
+    0x9449, 0x944a, 0x944b, 0x944c, 0x944d, 0x944e, 0x944f, 0x9450,
+    0x9451, 0x9452, 0x9453, 0x9454, 0x9455, 0x9456, 0x9457, 0x9458,
+    0x9459, 0x945a, 0x945b, 0x945c, 0x945d, 0x945e, 0x945f, 0x9460,
+    /* 0x6500 .. 0x65ff */
+    0xc5ca, 0x9461, 0x9462, 0x9463, 0x9464, 0x9465, 0x9466, 0x9467,
+    0x9468, 0xdfab, 0x9469, 0x946a, 0x946b, 0x946c, 0x946d, 0x946e,
+    0x946f, 0x9470, 0xd4dc, 0x9471, 0x9472, 0x9473, 0x9474, 0x9475,
+    0xc8c1, 0x9476, 0x9477, 0x9478, 0x9479, 0x947a, 0x947b, 0x947c,
+    0x947d, 0x947e, 0x9480, 0x9481, 0x9482, 0xdfac, 0x9483, 0x9484,
+    0x9485, 0x9486, 0x9487, 0xbef0, 0x9488, 0x9489, 0xdfad, 0xd6a7,
+    0x948a, 0x948b, 0x948c, 0x948d, 0xeab7, 0xebb6, 0xcad5, 0x948e,
+    0xd8fc, 0xb8c4, 0x948f, 0xb9a5, 0x9490, 0x9491, 0xb7c5, 0xd5fe,
+    0x9492, 0x9493, 0x9494, 0x9495, 0x9496, 0xb9ca, 0x9497, 0x9498,
+    0xd0a7, 0xf4cd, 0x9499, 0x949a, 0xb5d0, 0x949b, 0x949c, 0xc3f4,
+    0x949d, 0xbec8, 0x949e, 0x949f, 0x94a0, 0xebb7, 0xb0bd, 0x94a1,
+    0x94a2, 0xbdcc, 0x94a3, 0xc1b2, 0x94a4, 0xb1d6, 0xb3a8, 0x94a5,
+    0x94a6, 0x94a7, 0xb8d2, 0xc9a2, 0x94a8, 0x94a9, 0xb6d8, 0x94aa,
+    0x94ab, 0x94ac, 0x94ad, 0xebb8, 0xbeb4, 0x94ae, 0x94af, 0x94b0,
+    0xcafd, 0x94b1, 0xc7c3, 0x94b2, 0xd5fb, 0x94b3, 0x94b4, 0xb7f3,
+    0x94b5, 0x94b6, 0x94b7, 0x94b8, 0x94b9, 0x94ba, 0x94bb, 0x94bc,
+    0x94bd, 0x94be, 0x94bf, 0x94c0, 0x94c1, 0x94c2, 0x94c3, 0xcec4,
+    0x94c4, 0x94c5, 0x94c6, 0xd5ab, 0xb1f3, 0x94c7, 0x94c8, 0x94c9,
+    0xecb3, 0xb0df, 0x94ca, 0xecb5, 0x94cb, 0x94cc, 0x94cd, 0xb6b7,
+    0x94ce, 0xc1cf, 0x94cf, 0xf5fa, 0xd0b1, 0x94d0, 0x94d1, 0xd5e5,
+    0x94d2, 0xced3, 0x94d3, 0x94d4, 0xbdef, 0xb3e2, 0x94d5, 0xb8ab,
+    0x94d6, 0xd5b6, 0x94d7, 0xedbd, 0x94d8, 0xb6cf, 0x94d9, 0xcbb9,
+    0xd0c2, 0x94da, 0x94db, 0x94dc, 0x94dd, 0x94de, 0x94df, 0x94e0,
+    0x94e1, 0xb7bd, 0x94e2, 0x94e3, 0xecb6, 0xcaa9, 0x94e4, 0x94e5,
+    0x94e6, 0xc5d4, 0x94e7, 0xecb9, 0xecb8, 0xc2c3, 0xecb7, 0x94e8,
+    0x94e9, 0x94ea, 0x94eb, 0xd0fd, 0xecba, 0x94ec, 0xecbb, 0xd7e5,
+    0x94ed, 0x94ee, 0xecbc, 0x94ef, 0x94f0, 0x94f1, 0xecbd, 0xc6ec,
+    0x94f2, 0x94f3, 0x94f4, 0x94f5, 0x94f6, 0x94f7, 0x94f8, 0x94f9,
+    0xcede, 0x94fa, 0xbcc8, 0x94fb, 0x94fc, 0xc8d5, 0xb5a9, 0xbec9,
+    0xd6bc, 0xd4e7, 0x94fd, 0x94fe, 0xd1ae, 0xd0f1, 0xeab8, 0xeab9,
+    0xeaba, 0xbab5, 0x9540, 0x9541, 0x9542, 0x9543, 0xcab1, 0xbff5,
+    0x9544, 0x9545, 0xcdfa, 0x9546, 0x9547, 0x9548, 0x9549, 0x954a,
+    /* 0x6600 .. 0x66ff */
+    0xeac0, 0x954b, 0xb0ba, 0xeabe, 0x954c, 0x954d, 0xc0a5, 0x954e,
+    0x954f, 0x9550, 0xeabb, 0x9551, 0xb2fd, 0x9552, 0xc3f7, 0xbbe8,
+    0x9553, 0x9554, 0x9555, 0xd2d7, 0xcef4, 0xeabf, 0x9556, 0x9557,
+    0x9558, 0xeabc, 0x9559, 0x955a, 0x955b, 0xeac3, 0x955c, 0xd0c7,
+    0xd3b3, 0x955d, 0x955e, 0x955f, 0x9560, 0xb4ba, 0x9561, 0xc3c1,
+    0xd7f2, 0x9562, 0x9563, 0x9564, 0x9565, 0xd5d1, 0x9566, 0xcac7,
+    0x9567, 0xeac5, 0x9568, 0x9569, 0xeac4, 0xeac7, 0xeac6, 0x956a,
+    0x956b, 0x956c, 0x956d, 0x956e, 0xd6e7, 0x956f, 0xcfd4, 0x9570,
+    0x9571, 0xeacb, 0x9572, 0xbbce, 0x9573, 0x9574, 0x9575, 0x9576,
+    0x9577, 0x9578, 0x9579, 0xbdfa, 0xc9ce, 0x957a, 0x957b, 0xeacc,
+    0x957c, 0x957d, 0xc9b9, 0xcffe, 0xeaca, 0xd4ce, 0xeacd, 0xeacf,
+    0x957e, 0x9580, 0xcded, 0x9581, 0x9582, 0x9583, 0x9584, 0xeac9,
+    0x9585, 0xeace, 0x9586, 0x9587, 0xceee, 0x9588, 0xbbde, 0x9589,
+    0xb3bf, 0x958a, 0x958b, 0x958c, 0x958d, 0x958e, 0xc6d5, 0xbeb0,
+    0xcefa, 0x958f, 0x9590, 0x9591, 0xc7e7, 0x9592, 0xbea7, 0xead0,
+    0x9593, 0x9594, 0xd6c7, 0x9595, 0x9596, 0x9597, 0xc1c0, 0x9598,
+    0x9599, 0x959a, 0xd4dd, 0x959b, 0xead1, 0x959c, 0x959d, 0xcfbe,
+    0x959e, 0x959f, 0x95a0, 0x95a1, 0xead2, 0x95a2, 0x95a3, 0x95a4,
+    0x95a5, 0xcaee, 0x95a6, 0x95a7, 0x95a8, 0x95a9, 0xc5af, 0xb0b5,
+    0x95aa, 0x95ab, 0x95ac, 0x95ad, 0x95ae, 0xead4, 0x95af, 0x95b0,
+    0x95b1, 0x95b2, 0x95b3, 0x95b4, 0x95b5, 0x95b6, 0x95b7, 0xead3,
+    0xf4df, 0x95b8, 0x95b9, 0x95ba, 0x95bb, 0x95bc, 0xc4ba, 0x95bd,
+    0x95be, 0x95bf, 0x95c0, 0x95c1, 0xb1a9, 0x95c2, 0x95c3, 0x95c4,
+    0x95c5, 0xe5df, 0x95c6, 0x95c7, 0x95c8, 0x95c9, 0xead5, 0x95ca,
+    0x95cb, 0x95cc, 0x95cd, 0x95ce, 0x95cf, 0x95d0, 0x95d1, 0x95d2,
+    0x95d3, 0x95d4, 0x95d5, 0x95d6, 0x95d7, 0x95d8, 0x95d9, 0x95da,
+    0x95db, 0x95dc, 0x95dd, 0x95de, 0x95df, 0x95e0, 0x95e1, 0x95e2,
+    0x95e3, 0xcaef, 0x95e4, 0xead6, 0xead7, 0xc6d8, 0x95e5, 0x95e6,
+    0x95e7, 0x95e8, 0x95e9, 0x95ea, 0x95eb, 0x95ec, 0xead8, 0x95ed,
+    0x95ee, 0xead9, 0x95ef, 0x95f0, 0x95f1, 0x95f2, 0x95f3, 0x95f4,
+    0xd4bb, 0x95f5, 0xc7fa, 0xd2b7, 0xb8fc, 0x95f6, 0x95f7, 0xeac2,
+    0x95f8, 0xb2dc, 0x95f9, 0x95fa, 0xc2fc, 0x95fb, 0xd4f8, 0xcce6,
+    /* 0x6700 .. 0x67ff */
+    0xd7ee, 0x95fc, 0x95fd, 0x95fe, 0x9640, 0x9641, 0x9642, 0x9643,
+    0xd4c2, 0xd3d0, 0xebc3, 0xc5f3, 0x9644, 0xb7fe, 0x9645, 0x9646,
+    0xebd4, 0x9647, 0x9648, 0x9649, 0xcbb7, 0xebde, 0x964a, 0xc0ca,
+    0x964b, 0x964c, 0x964d, 0xcdfb, 0x964e, 0xb3af, 0x964f, 0xc6da,
+    0x9650, 0x9651, 0x9652, 0x9653, 0x9654, 0x9655, 0xebfc, 0x9656,
+    0xc4be, 0x9657, 0xceb4, 0xc4a9, 0xb1be, 0xd4fd, 0x9658, 0xcaf5,
+    0x9659, 0xd6ec, 0x965a, 0x965b, 0xc6d3, 0xb6e4, 0x965c, 0x965d,
+    0x965e, 0x965f, 0xbbfa, 0x9660, 0x9661, 0xd0e0, 0x9662, 0x9663,
+    0xc9b1, 0x9664, 0xd4d3, 0xc8a8, 0x9665, 0x9666, 0xb8cb, 0x9667,
+    0xe8be, 0xc9bc, 0x9668, 0x9669, 0xe8bb, 0x966a, 0xc0ee, 0xd0d3,
+    0xb2c4, 0xb4e5, 0x966b, 0xe8bc, 0x966c, 0x966d, 0xd5c8, 0x966e,
+    0x966f, 0x9670, 0x9671, 0x9672, 0xb6c5, 0x9673, 0xe8bd, 0xcaf8,
+    0xb8dc, 0xccf5, 0x9674, 0x9675, 0x9676, 0xc0b4, 0x9677, 0x9678,
+    0xd1ee, 0xe8bf, 0xe8c2, 0x9679, 0x967a, 0xbabc, 0x967b, 0xb1ad,
+    0xbddc, 0x967c, 0xeabd, 0xe8c3, 0x967d, 0xe8c6, 0x967e, 0xe8cb,
+    0x9680, 0x9681, 0x9682, 0x9683, 0xe8cc, 0x9684, 0xcbc9, 0xb0e5,
+    0x9685, 0xbcab, 0x9686, 0x9687, 0xb9b9, 0x9688, 0x9689, 0xe8c1,
+    0x968a, 0xcdf7, 0x968b, 0xe8ca, 0x968c, 0x968d, 0x968e, 0x968f,
+    0xcef6, 0x9690, 0x9691, 0x9692, 0x9693, 0xd5ed, 0x9694, 0xc1d6,
+    0xe8c4, 0x9695, 0xc3b6, 0x9696, 0xb9fb, 0xd6a6, 0xe8c8, 0x9697,
+    0x9698, 0x9699, 0xcae0, 0xd4e6, 0x969a, 0xe8c0, 0x969b, 0xe8c5,
+    0xe8c7, 0x969c, 0xc7b9, 0xb7e3, 0x969d, 0xe8c9, 0x969e, 0xbfdd,
+    0xe8d2, 0x969f, 0x96a0, 0xe8d7, 0x96a1, 0xe8d5, 0xbcdc, 0xbccf,
+    0xe8db, 0x96a2, 0x96a3, 0x96a4, 0x96a5, 0x96a6, 0x96a7, 0x96a8,
+    0x96a9, 0xe8de, 0x96aa, 0xe8da, 0xb1fa, 0x96ab, 0x96ac, 0x96ad,
+    0x96ae, 0x96af, 0x96b0, 0x96b1, 0x96b2, 0x96b3, 0x96b4, 0xb0d8,
+    0xc4b3, 0xb8cc, 0xc6e2, 0xc8be, 0xc8e1, 0x96b5, 0x96b6, 0x96b7,
+    0xe8cf, 0xe8d4, 0xe8d6, 0x96b8, 0xb9f1, 0xe8d8, 0xd7f5, 0x96b9,
+    0xc4fb, 0x96ba, 0xe8dc, 0x96bb, 0x96bc, 0xb2e9, 0x96bd, 0x96be,
+    0x96bf, 0xe8d1, 0x96c0, 0x96c1, 0xbced, 0x96c2, 0x96c3, 0xbfc2,
+    0xe8cd, 0xd6f9, 0x96c4, 0xc1f8, 0xb2f1, 0x96c5, 0x96c6, 0x96c7,
+    0x96c8, 0x96c9, 0x96ca, 0x96cb, 0x96cc, 0xe8df, 0x96cd, 0xcac1,
+    /* 0x6800 .. 0x68ff */
+    0xe8d9, 0x96ce, 0x96cf, 0x96d0, 0x96d1, 0xd5a4, 0x96d2, 0xb1ea,
+    0xd5bb, 0xe8ce, 0xe8d0, 0xb6b0, 0xe8d3, 0x96d3, 0xe8dd, 0xc0b8,
+    0x96d4, 0xcaf7, 0x96d5, 0xcba8, 0x96d6, 0x96d7, 0xc6dc, 0xc0f5,
+    0x96d8, 0x96d9, 0x96da, 0x96db, 0x96dc, 0xe8e9, 0x96dd, 0x96de,
+    0x96df, 0xd0a3, 0x96e0, 0x96e1, 0x96e2, 0x96e3, 0x96e4, 0x96e5,
+    0x96e6, 0xe8f2, 0xd6ea, 0x96e7, 0x96e8, 0x96e9, 0x96ea, 0x96eb,
+    0x96ec, 0x96ed, 0xe8e0, 0xe8e1, 0x96ee, 0x96ef, 0x96f0, 0xd1f9,
+    0xbacb, 0xb8f9, 0x96f1, 0x96f2, 0xb8f1, 0xd4d4, 0xe8ef, 0x96f3,
+    0xe8ee, 0xe8ec, 0xb9f0, 0xccd2, 0xe8e6, 0xcea6, 0xbff2, 0x96f4,
+    0xb0b8, 0xe8f1, 0xe8f0, 0x96f5, 0xd7c0, 0x96f6, 0xe8e4, 0x96f7,
+    0xcda9, 0xc9a3, 0x96f8, 0xbbb8, 0xbddb, 0xe8ea, 0x96f9, 0x96fa,
+    0x96fb, 0x96fc, 0x96fd, 0x96fe, 0x9740, 0x9741, 0x9742, 0x9743,
+    0xe8e2, 0xe8e3, 0xe8e5, 0xb5b5, 0xe8e7, 0xc7c5, 0xe8eb, 0xe8ed,
+    0xbdb0, 0xd7ae, 0x9744, 0xe8f8, 0x9745, 0x9746, 0x9747, 0x9748,
+    0x9749, 0x974a, 0x974b, 0x974c, 0xe8f5, 0x974d, 0xcdb0, 0xe8f6,
+    0x974e, 0x974f, 0x9750, 0x9751, 0x9752, 0x9753, 0x9754, 0x9755,
+    0x9756, 0xc1ba, 0x9757, 0xe8e8, 0x9758, 0xc3b7, 0xb0f0, 0x9759,
+    0x975a, 0x975b, 0x975c, 0x975d, 0x975e, 0x975f, 0x9760, 0xe8f4,
+    0x9761, 0x9762, 0x9763, 0xe8f7, 0x9764, 0x9765, 0x9766, 0xb9a3,
+    0x9767, 0x9768, 0x9769, 0x976a, 0x976b, 0x976c, 0x976d, 0x976e,
+    0x976f, 0x9770, 0xc9d2, 0x9771, 0x9772, 0x9773, 0xc3ce, 0xcee0,
+    0xc0e6, 0x9774, 0x9775, 0x9776, 0x9777, 0xcbf3, 0x9778, 0xccdd,
+    0xd0b5, 0x9779, 0x977a, 0xcae1, 0x977b, 0xe8f3, 0x977c, 0x977d,
+    0x977e, 0x9780, 0x9781, 0x9782, 0x9783, 0x9784, 0x9785, 0x9786,
+    0xbcec, 0x9787, 0xe8f9, 0x9788, 0x9789, 0x978a, 0x978b, 0x978c,
+    0x978d, 0xc3de, 0x978e, 0xc6e5, 0x978f, 0xb9f7, 0x9790, 0x9791,
+    0x9792, 0x9793, 0xb0f4, 0x9794, 0x9795, 0xd7d8, 0x9796, 0x9797,
+    0xbcac, 0x9798, 0xc5ef, 0x9799, 0x979a, 0x979b, 0x979c, 0x979d,
+    0xccc4, 0x979e, 0x979f, 0xe9a6, 0x97a0, 0x97a1, 0x97a2, 0x97a3,
+    0x97a4, 0x97a5, 0x97a6, 0x97a7, 0x97a8, 0x97a9, 0xc9ad, 0x97aa,
+    0xe9a2, 0xc0e2, 0x97ab, 0x97ac, 0x97ad, 0xbfc3, 0x97ae, 0x97af,
+    0x97b0, 0xe8fe, 0xb9d7, 0x97b1, 0xe8fb, 0x97b2, 0x97b3, 0x97b4,
+    /* 0x6900 .. 0x69ff */
+    0x97b5, 0xe9a4, 0x97b6, 0x97b7, 0x97b8, 0xd2ce, 0x97b9, 0x97ba,
+    0x97bb, 0x97bc, 0x97bd, 0xe9a3, 0x97be, 0xd6b2, 0xd7b5, 0x97bf,
+    0xe9a7, 0x97c0, 0xbdb7, 0x97c1, 0x97c2, 0x97c3, 0x97c4, 0x97c5,
+    0x97c6, 0x97c7, 0x97c8, 0x97c9, 0x97ca, 0x97cb, 0x97cc, 0xe8fc,
+    0xe8fd, 0x97cd, 0x97ce, 0x97cf, 0xe9a1, 0x97d0, 0x97d1, 0x97d2,
+    0x97d3, 0x97d4, 0x97d5, 0x97d6, 0x97d7, 0xcdd6, 0x97d8, 0x97d9,
+    0xd2ac, 0x97da, 0x97db, 0x97dc, 0xe9b2, 0x97dd, 0x97de, 0x97df,
+    0x97e0, 0xe9a9, 0x97e1, 0x97e2, 0x97e3, 0xb4aa, 0x97e4, 0xb4bb,
+    0x97e5, 0x97e6, 0xe9ab, 0x97e7, 0x97e8, 0x97e9, 0x97ea, 0x97eb,
+    0x97ec, 0x97ed, 0x97ee, 0x97ef, 0x97f0, 0x97f1, 0x97f2, 0x97f3,
+    0x97f4, 0x97f5, 0x97f6, 0x97f7, 0xd0a8, 0x97f8, 0x97f9, 0xe9a5,
+    0x97fa, 0x97fb, 0xb3fe, 0x97fc, 0x97fd, 0xe9ac, 0xc0e3, 0x97fe,
+    0xe9aa, 0x9840, 0x9841, 0xe9b9, 0x9842, 0x9843, 0xe9b8, 0x9844,
+    0x9845, 0x9846, 0x9847, 0xe9ae, 0x9848, 0x9849, 0xe8fa, 0x984a,
+    0x984b, 0xe9a8, 0x984c, 0x984d, 0x984e, 0x984f, 0x9850, 0xbfac,
+    0xe9b1, 0xe9ba, 0x9851, 0x9852, 0xc2a5, 0x9853, 0x9854, 0x9855,
+    0xe9af, 0x9856, 0xb8c5, 0x9857, 0xe9ad, 0x9858, 0xd3dc, 0xe9b4,
+    0xe9b5, 0xe9b7, 0x9859, 0x985a, 0x985b, 0xe9c7, 0x985c, 0x985d,
+    0x985e, 0x985f, 0x9860, 0x9861, 0xc0c6, 0xe9c5, 0x9862, 0x9863,
+    0xe9b0, 0x9864, 0x9865, 0xe9bb, 0xb0f1, 0x9866, 0x9867, 0x9868,
+    0x9869, 0x986a, 0x986b, 0x986c, 0x986d, 0x986e, 0x986f, 0xe9bc,
+    0xd5a5, 0x9870, 0x9871, 0xe9be, 0x9872, 0xe9bf, 0x9873, 0x9874,
+    0x9875, 0xe9c1, 0x9876, 0x9877, 0xc1f1, 0x9878, 0x9879, 0xc8b6,
+    0x987a, 0x987b, 0x987c, 0xe9bd, 0x987d, 0x987e, 0x9880, 0x9881,
+    0x9882, 0xe9c2, 0x9883, 0x9884, 0x9885, 0x9886, 0x9887, 0x9888,
+    0x9889, 0x988a, 0xe9c3, 0x988b, 0xe9b3, 0x988c, 0xe9b6, 0x988d,
+    0xbbb1, 0x988e, 0x988f, 0x9890, 0xe9c0, 0x9891, 0x9892, 0x9893,
+    0x9894, 0x9895, 0x9896, 0xbcf7, 0x9897, 0x9898, 0x9899, 0xe9c4,
+    0xe9c6, 0x989a, 0x989b, 0x989c, 0x989d, 0x989e, 0x989f, 0x98a0,
+    0x98a1, 0x98a2, 0x98a3, 0x98a4, 0x98a5, 0xe9ca, 0x98a6, 0x98a7,
+    0x98a8, 0x98a9, 0xe9ce, 0x98aa, 0x98ab, 0x98ac, 0x98ad, 0x98ae,
+    0x98af, 0x98b0, 0x98b1, 0x98b2, 0x98b3, 0xb2db, 0x98b4, 0xe9c8,
+    /* 0x6a00 .. 0x6aff */
+    0x98b5, 0x98b6, 0x98b7, 0x98b8, 0x98b9, 0x98ba, 0x98bb, 0x98bc,
+    0x98bd, 0x98be, 0xb7ae, 0x98bf, 0x98c0, 0x98c1, 0x98c2, 0x98c3,
+    0x98c4, 0x98c5, 0x98c6, 0x98c7, 0x98c8, 0x98c9, 0x98ca, 0xe9cb,
+    0xe9cc, 0x98cb, 0x98cc, 0x98cd, 0x98ce, 0x98cf, 0x98d0, 0xd5c1,
+    0x98d1, 0xc4a3, 0x98d2, 0x98d3, 0x98d4, 0x98d5, 0x98d6, 0x98d7,
+    0xe9d8, 0x98d8, 0xbae1, 0x98d9, 0x98da, 0x98db, 0x98dc, 0xe9c9,
+    0x98dd, 0xd3a3, 0x98de, 0x98df, 0x98e0, 0xe9d4, 0x98e1, 0x98e2,
+    0x98e3, 0x98e4, 0x98e5, 0x98e6, 0x98e7, 0xe9d7, 0xe9d0, 0x98e8,
+    0x98e9, 0x98ea, 0x98eb, 0x98ec, 0xe9cf, 0x98ed, 0x98ee, 0xc7c1,
+    0x98ef, 0x98f0, 0x98f1, 0x98f2, 0x98f3, 0x98f4, 0x98f5, 0x98f6,
+    0xe9d2, 0x98f7, 0x98f8, 0x98f9, 0x98fa, 0x98fb, 0x98fc, 0x98fd,
+    0xe9d9, 0xb3c8, 0x98fe, 0xe9d3, 0x9940, 0x9941, 0x9942, 0x9943,
+    0x9944, 0xcff0, 0x9945, 0x9946, 0x9947, 0xe9cd, 0x9948, 0x9949,
+    0x994a, 0x994b, 0x994c, 0x994d, 0x994e, 0x994f, 0x9950, 0x9951,
+    0x9952, 0xb3f7, 0x9953, 0x9954, 0x9955, 0x9956, 0x9957, 0x9958,
+    0x9959, 0xe9d6, 0x995a, 0x995b, 0xe9da, 0x995c, 0x995d, 0x995e,
+    0xccb4, 0x995f, 0x9960, 0x9961, 0xcfad, 0x9962, 0x9963, 0x9964,
+    0x9965, 0x9966, 0x9967, 0x9968, 0x9969, 0x996a, 0xe9d5, 0x996b,
+    0xe9dc, 0xe9db, 0x996c, 0x996d, 0x996e, 0x996f, 0x9970, 0xe9de,
+    0x9971, 0x9972, 0x9973, 0x9974, 0x9975, 0x9976, 0x9977, 0x9978,
+    0xe9d1, 0x9979, 0x997a, 0x997b, 0x997c, 0x997d, 0x997e, 0x9980,
+    0x9981, 0xe9dd, 0x9982, 0xe9df, 0xc3ca, 0x9983, 0x9984, 0x9985,
+    0x9986, 0x9987, 0x9988, 0x9989, 0x998a, 0x998b, 0x998c, 0x998d,
+    0x998e, 0x998f, 0x9990, 0x9991, 0x9992, 0x9993, 0x9994, 0x9995,
+    0x9996, 0x9997, 0x9998, 0x9999, 0x999a, 0x999b, 0x999c, 0x999d,
+    0x999e, 0x999f, 0x99a0, 0x99a1, 0x99a2, 0x99a3, 0x99a4, 0x99a5,
+    0x99a6, 0x99a7, 0x99a8, 0x99a9, 0x99aa, 0x99ab, 0x99ac, 0x99ad,
+    0x99ae, 0x99af, 0x99b0, 0x99b1, 0x99b2, 0x99b3, 0x99b4, 0x99b5,
+    0x99b6, 0x99b7, 0x99b8, 0x99b9, 0x99ba, 0x99bb, 0x99bc, 0x99bd,
+    0x99be, 0x99bf, 0x99c0, 0x99c1, 0x99c2, 0x99c3, 0x99c4, 0x99c5,
+    0x99c6, 0x99c7, 0x99c8, 0x99c9, 0x99ca, 0x99cb, 0x99cc, 0x99cd,
+    0x99ce, 0x99cf, 0x99d0, 0x99d1, 0x99d2, 0x99d3, 0x99d4, 0x99d5,
+    /* 0x6b00 .. 0x6bff */
+    0x99d6, 0x99d7, 0x99d8, 0x99d9, 0x99da, 0x99db, 0x99dc, 0x99dd,
+    0x99de, 0x99df, 0x99e0, 0x99e1, 0x99e2, 0x99e3, 0x99e4, 0x99e5,
+    0x99e6, 0x99e7, 0x99e8, 0x99e9, 0x99ea, 0x99eb, 0x99ec, 0x99ed,
+    0x99ee, 0x99ef, 0x99f0, 0x99f1, 0x99f2, 0x99f3, 0x99f4, 0x99f5,
+    0xc7b7, 0xb4ce, 0xbbb6, 0xd0c0, 0xeca3, 0x99f6, 0x99f7, 0xc5b7,
+    0x99f8, 0x99f9, 0x99fa, 0x99fb, 0x99fc, 0x99fd, 0x99fe, 0x9a40,
+    0x9a41, 0x9a42, 0xd3fb, 0x9a43, 0x9a44, 0x9a45, 0x9a46, 0xeca4,
+    0x9a47, 0xeca5, 0xc6db, 0x9a48, 0x9a49, 0x9a4a, 0xbfee, 0x9a4b,
+    0x9a4c, 0x9a4d, 0x9a4e, 0xeca6, 0x9a4f, 0x9a50, 0xeca7, 0xd0aa,
+    0x9a51, 0xc7b8, 0x9a52, 0x9a53, 0xb8e8, 0x9a54, 0x9a55, 0x9a56,
+    0x9a57, 0x9a58, 0x9a59, 0x9a5a, 0x9a5b, 0x9a5c, 0x9a5d, 0x9a5e,
+    0x9a5f, 0xeca8, 0x9a60, 0x9a61, 0x9a62, 0x9a63, 0x9a64, 0x9a65,
+    0x9a66, 0x9a67, 0xd6b9, 0xd5fd, 0xb4cb, 0xb2bd, 0xcee4, 0xc6e7,
+    0x9a68, 0x9a69, 0xcde1, 0x9a6a, 0x9a6b, 0x9a6c, 0x9a6d, 0x9a6e,
+    0x9a6f, 0x9a70, 0x9a71, 0x9a72, 0x9a73, 0x9a74, 0x9a75, 0x9a76,
+    0x9a77, 0xb4f5, 0x9a78, 0xcbc0, 0xbcdf, 0x9a79, 0x9a7a, 0x9a7b,
+    0x9a7c, 0xe9e2, 0xe9e3, 0xd1ea, 0xe9e5, 0x9a7d, 0xb4f9, 0xe9e4,
+    0x9a7e, 0xd1b3, 0xcae2, 0xb2d0, 0x9a80, 0xe9e8, 0x9a81, 0x9a82,
+    0x9a83, 0x9a84, 0xe9e6, 0xe9e7, 0x9a85, 0x9a86, 0xd6b3, 0x9a87,
+    0x9a88, 0x9a89, 0xe9e9, 0xe9ea, 0x9a8a, 0x9a8b, 0x9a8c, 0x9a8d,
+    0x9a8e, 0xe9eb, 0x9a8f, 0x9a90, 0x9a91, 0x9a92, 0x9a93, 0x9a94,
+    0x9a95, 0x9a96, 0xe9ec, 0x9a97, 0x9a98, 0x9a99, 0x9a9a, 0x9a9b,
+    0x9a9c, 0x9a9d, 0x9a9e, 0xecaf, 0xc5b9, 0xb6ce, 0x9a9f, 0xd2f3,
+    0x9aa0, 0x9aa1, 0x9aa2, 0x9aa3, 0x9aa4, 0x9aa5, 0x9aa6, 0xb5ee,
+    0x9aa7, 0xbbd9, 0xecb1, 0x9aa8, 0x9aa9, 0xd2e3, 0x9aaa, 0x9aab,
+    0x9aac, 0x9aad, 0x9aae, 0xcee3, 0x9aaf, 0xc4b8, 0x9ab0, 0xc3bf,
+    0x9ab1, 0x9ab2, 0xb6be, 0xd8b9, 0xb1c8, 0xb1cf, 0xb1d1, 0xc5fe,
+    0x9ab3, 0xb1d0, 0x9ab4, 0xc3ab, 0x9ab5, 0x9ab6, 0x9ab7, 0x9ab8,
+    0x9ab9, 0xd5b1, 0x9aba, 0x9abb, 0x9abc, 0x9abd, 0x9abe, 0x9abf,
+    0x9ac0, 0x9ac1, 0xeba4, 0xbac1, 0x9ac2, 0x9ac3, 0x9ac4, 0xccba,
+    0x9ac5, 0x9ac6, 0x9ac7, 0xeba5, 0x9ac8, 0xeba7, 0x9ac9, 0x9aca,
+    0x9acb, 0xeba8, 0x9acc, 0x9acd, 0x9ace, 0xeba6, 0x9acf, 0x9ad0,
+    /* 0x6c00 .. 0x6cff */
+    0x9ad1, 0x9ad2, 0x9ad3, 0x9ad4, 0x9ad5, 0xeba9, 0xebab, 0xebaa,
+    0x9ad6, 0x9ad7, 0x9ad8, 0x9ad9, 0x9ada, 0xebac, 0x9adb, 0xcacf,
+    0xd8b5, 0xc3f1, 0x9adc, 0xc3a5, 0xc6f8, 0xebad, 0xc4ca, 0x9add,
+    0xebae, 0xebaf, 0xebb0, 0xb7d5, 0x9ade, 0x9adf, 0x9ae0, 0xb7fa,
+    0x9ae1, 0xebb1, 0xc7e2, 0x9ae2, 0xebb3, 0x9ae3, 0xbaa4, 0xd1f5,
+    0xb0b1, 0xebb2, 0xebb4, 0x9ae4, 0x9ae5, 0x9ae6, 0xb5aa, 0xc2c8,
+    0xc7e8, 0x9ae7, 0xebb5, 0x9ae8, 0xcbae, 0xe3df, 0x9ae9, 0x9aea,
+    0xd3c0, 0x9aeb, 0x9aec, 0x9aed, 0x9aee, 0xd9db, 0x9aef, 0x9af0,
+    0xcda1, 0xd6ad, 0xc7f3, 0x9af1, 0x9af2, 0x9af3, 0xd9e0, 0xbbe3,
+    0x9af4, 0xbaba, 0xe3e2, 0x9af5, 0x9af6, 0x9af7, 0x9af8, 0x9af9,
+    0xcfab, 0x9afa, 0x9afb, 0x9afc, 0xe3e0, 0xc9c7, 0x9afd, 0xbab9,
+    0x9afe, 0x9b40, 0x9b41, 0xd1b4, 0xe3e1, 0xc8ea, 0xb9af, 0xbdad,
+    0xb3d8, 0xcedb, 0x9b42, 0x9b43, 0xccc0, 0x9b44, 0x9b45, 0x9b46,
+    0xe3e8, 0xe3e9, 0xcdf4, 0x9b47, 0x9b48, 0x9b49, 0x9b4a, 0x9b4b,
+    0xccad, 0x9b4c, 0xbcb3, 0x9b4d, 0xe3ea, 0x9b4e, 0xe3eb, 0x9b4f,
+    0x9b50, 0xd0da, 0x9b51, 0x9b52, 0x9b53, 0xc6fb, 0xb7da, 0x9b54,
+    0x9b55, 0xc7df, 0xd2ca, 0xced6, 0x9b56, 0xe3e4, 0xe3ec, 0x9b57,
+    0xc9f2, 0xb3c1, 0x9b58, 0x9b59, 0xe3e7, 0x9b5a, 0x9b5b, 0xc6e3,
+    0xe3e5, 0x9b5c, 0x9b5d, 0xedb3, 0xe3e6, 0x9b5e, 0x9b5f, 0x9b60,
+    0x9b61, 0xc9b3, 0x9b62, 0xc5e6, 0x9b63, 0x9b64, 0x9b65, 0xb9b5,
+    0x9b66, 0xc3bb, 0x9b67, 0xe3e3, 0xc5bd, 0xc1a4, 0xc2d9, 0xb2d7,
+    0x9b68, 0xe3ed, 0xbba6, 0xc4ad, 0x9b69, 0xe3f0, 0xbeda, 0x9b6a,
+    0x9b6b, 0xe3fb, 0xe3f5, 0xbad3, 0x9b6c, 0x9b6d, 0x9b6e, 0x9b6f,
+    0xb7d0, 0xd3cd, 0x9b70, 0xd6ce, 0xd5d3, 0xb9c1, 0xd5b4, 0xd1d8,
+    0x9b71, 0x9b72, 0x9b73, 0x9b74, 0xd0b9, 0xc7f6, 0x9b75, 0x9b76,
+    0x9b77, 0xc8aa, 0xb2b4, 0x9b78, 0xc3da, 0x9b79, 0x9b7a, 0x9b7b,
+    0xe3ee, 0x9b7c, 0x9b7d, 0xe3fc, 0xe3ef, 0xb7a8, 0xe3f7, 0xe3f4,
+    0x9b7e, 0x9b80, 0x9b81, 0xb7ba, 0x9b82, 0x9b83, 0xc5a2, 0x9b84,
+    0xe3f6, 0xc5dd, 0xb2a8, 0xc6fc, 0x9b85, 0xc4e0, 0x9b86, 0x9b87,
+    0xd7a2, 0x9b88, 0xc0e1, 0xe3f9, 0x9b89, 0x9b8a, 0xe3fa, 0xe3fd,
+    0xcca9, 0xe3f3, 0x9b8b, 0xd3be, 0x9b8c, 0xb1c3, 0xedb4, 0xe3f1,
+    0xe3f2, 0x9b8d, 0xe3f8, 0xd0ba, 0xc6c3, 0xd4f3, 0xe3fe, 0x9b8e,
+    /* 0x6d00 .. 0x6dff */
+    0x9b8f, 0xbde0, 0x9b90, 0x9b91, 0xe4a7, 0x9b92, 0x9b93, 0xe4a6,
+    0x9b94, 0x9b95, 0x9b96, 0xd1f3, 0xe4a3, 0x9b97, 0xe4a9, 0x9b98,
+    0x9b99, 0x9b9a, 0xc8f7, 0x9b9b, 0x9b9c, 0x9b9d, 0x9b9e, 0xcfb4,
+    0x9b9f, 0xe4a8, 0xe4ae, 0xc2e5, 0x9ba0, 0x9ba1, 0xb6b4, 0x9ba2,
+    0x9ba3, 0x9ba4, 0x9ba5, 0x9ba6, 0x9ba7, 0xbdf2, 0x9ba8, 0xe4a2,
+    0x9ba9, 0x9baa, 0xbae9, 0xe4aa, 0x9bab, 0x9bac, 0xe4ac, 0x9bad,
+    0x9bae, 0xb6fd, 0xd6de, 0xe4b2, 0x9baf, 0xe4ad, 0x9bb0, 0x9bb1,
+    0x9bb2, 0xe4a1, 0x9bb3, 0xbbee, 0xcddd, 0xc7a2, 0xc5c9, 0x9bb4,
+    0x9bb5, 0xc1f7, 0x9bb6, 0xe4a4, 0x9bb7, 0xc7b3, 0xbdac, 0xbdbd,
+    0xe4a5, 0x9bb8, 0xd7c7, 0xb2e2, 0x9bb9, 0xe4ab, 0xbcc3, 0xe4af,
+    0x9bba, 0xbbeb, 0xe4b0, 0xc5a8, 0xe4b1, 0x9bbb, 0x9bbc, 0x9bbd,
+    0x9bbe, 0xd5e3, 0xbfa3, 0x9bbf, 0xe4ba, 0x9bc0, 0xe4b7, 0x9bc1,
+    0xe4bb, 0x9bc2, 0x9bc3, 0xe4bd, 0x9bc4, 0x9bc5, 0xc6d6, 0x9bc6,
+    0x9bc7, 0xbac6, 0xc0cb, 0x9bc8, 0x9bc9, 0x9bca, 0xb8a1, 0xe4b4,
+    0x9bcb, 0x9bcc, 0x9bcd, 0x9bce, 0xd4a1, 0x9bcf, 0x9bd0, 0xbaa3,
+    0xbdfe, 0x9bd1, 0x9bd2, 0x9bd3, 0xe4bc, 0x9bd4, 0x9bd5, 0x9bd6,
+    0x9bd7, 0x9bd8, 0xcdbf, 0x9bd9, 0x9bda, 0xc4f9, 0x9bdb, 0x9bdc,
+    0xcffb, 0xc9e6, 0x9bdd, 0x9bde, 0xd3bf, 0x9bdf, 0xcfd1, 0x9be0,
+    0x9be1, 0xe4b3, 0x9be2, 0xe4b8, 0xe4b9, 0xcce9, 0x9be3, 0x9be4,
+    0x9be5, 0x9be6, 0x9be7, 0xccce, 0x9be8, 0xc0d4, 0xe4b5, 0xc1b0,
+    0xe4b6, 0xced0, 0x9be9, 0xbbc1, 0xb5d3, 0x9bea, 0xc8f3, 0xbda7,
+    0xd5c7, 0xc9ac, 0xb8a2, 0xe4ca, 0x9beb, 0x9bec, 0xe4cc, 0xd1c4,
+    0x9bed, 0x9bee, 0xd2ba, 0x9bef, 0x9bf0, 0xbaad, 0x9bf1, 0x9bf2,
+    0xbad4, 0x9bf3, 0x9bf4, 0x9bf5, 0x9bf6, 0x9bf7, 0x9bf8, 0xe4c3,
+    0xb5ed, 0x9bf9, 0x9bfa, 0x9bfb, 0xd7cd, 0xe4c0, 0xcffd, 0xe4bf,
+    0x9bfc, 0x9bfd, 0x9bfe, 0xc1dc, 0xccca, 0x9c40, 0x9c41, 0x9c42,
+    0x9c43, 0xcae7, 0x9c44, 0x9c45, 0x9c46, 0x9c47, 0xc4d7, 0x9c48,
+    0xccd4, 0xe4c8, 0x9c49, 0x9c4a, 0x9c4b, 0xe4c7, 0xe4c1, 0x9c4c,
+    0xe4c4, 0xb5ad, 0x9c4d, 0x9c4e, 0xd3d9, 0x9c4f, 0xe4c6, 0x9c50,
+    0x9c51, 0x9c52, 0x9c53, 0xd2f9, 0xb4e3, 0x9c54, 0xbbb4, 0x9c55,
+    0x9c56, 0xc9ee, 0x9c57, 0xb4be, 0x9c58, 0x9c59, 0x9c5a, 0xbbec,
+    0x9c5b, 0xd1cd, 0x9c5c, 0xcced, 0xedb5, 0x9c5d, 0x9c5e, 0x9c5f,
+    /* 0x6e00 .. 0x6eff */
+    0x9c60, 0x9c61, 0x9c62, 0x9c63, 0x9c64, 0xc7e5, 0x9c65, 0x9c66,
+    0x9c67, 0x9c68, 0xd4a8, 0x9c69, 0xe4cb, 0xd7d5, 0xe4c2, 0x9c6a,
+    0xbda5, 0xe4c5, 0x9c6b, 0x9c6c, 0xd3e6, 0x9c6d, 0xe4c9, 0xc9f8,
+    0x9c6e, 0x9c6f, 0xe4be, 0x9c70, 0x9c71, 0xd3e5, 0x9c72, 0x9c73,
+    0xc7fe, 0xb6c9, 0x9c74, 0xd4fc, 0xb2b3, 0xe4d7, 0x9c75, 0x9c76,
+    0x9c77, 0xcec2, 0x9c78, 0xe4cd, 0x9c79, 0xcebc, 0x9c7a, 0xb8db,
+    0x9c7b, 0x9c7c, 0xe4d6, 0x9c7d, 0xbfca, 0x9c7e, 0x9c80, 0x9c81,
+    0xd3ce, 0x9c82, 0xc3ec, 0x9c83, 0x9c84, 0x9c85, 0x9c86, 0x9c87,
+    0x9c88, 0x9c89, 0x9c8a, 0xc5c8, 0xe4d8, 0x9c8b, 0x9c8c, 0x9c8d,
+    0x9c8e, 0x9c8f, 0x9c90, 0x9c91, 0x9c92, 0xcdc4, 0xe4cf, 0x9c93,
+    0x9c94, 0x9c95, 0x9c96, 0xe4d4, 0xe4d5, 0x9c97, 0xbafe, 0x9c98,
+    0xcfe6, 0x9c99, 0x9c9a, 0xd5bf, 0x9c9b, 0x9c9c, 0x9c9d, 0xe4d2,
+    0x9c9e, 0x9c9f, 0x9ca0, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca4, 0x9ca5,
+    0x9ca6, 0x9ca7, 0x9ca8, 0xe4d0, 0x9ca9, 0x9caa, 0xe4ce, 0x9cab,
+    0x9cac, 0x9cad, 0x9cae, 0x9caf, 0x9cb0, 0x9cb1, 0x9cb2, 0x9cb3,
+    0x9cb4, 0x9cb5, 0x9cb6, 0x9cb7, 0x9cb8, 0x9cb9, 0xcde5, 0xcaaa,
+    0x9cba, 0x9cbb, 0x9cbc, 0xc0a3, 0x9cbd, 0xbda6, 0xe4d3, 0x9cbe,
+    0x9cbf, 0xb8c8, 0x9cc0, 0x9cc1, 0x9cc2, 0x9cc3, 0x9cc4, 0xe4e7,
+    0xd4b4, 0x9cc5, 0x9cc6, 0x9cc7, 0x9cc8, 0x9cc9, 0x9cca, 0x9ccb,
+    0xe4db, 0x9ccc, 0x9ccd, 0x9cce, 0xc1ef, 0x9ccf, 0x9cd0, 0xe4e9,
+    0x9cd1, 0x9cd2, 0xd2e7, 0x9cd3, 0x9cd4, 0xe4df, 0x9cd5, 0xe4e0,
+    0x9cd6, 0x9cd7, 0xcfaa, 0x9cd8, 0x9cd9, 0x9cda, 0x9cdb, 0xcbdd,
+    0x9cdc, 0xe4da, 0xe4d1, 0x9cdd, 0xe4e5, 0x9cde, 0xc8dc, 0xe4e3,
+    0x9cdf, 0x9ce0, 0xc4e7, 0xe4e2, 0x9ce1, 0xe4e1, 0x9ce2, 0x9ce3,
+    0x9ce4, 0xb3fc, 0xe4e8, 0x9ce5, 0x9ce6, 0x9ce7, 0x9ce8, 0xb5e1,
+    0x9ce9, 0x9cea, 0x9ceb, 0xd7cc, 0x9cec, 0x9ced, 0x9cee, 0xe4e6,
+    0x9cef, 0xbbac, 0x9cf0, 0xd7d2, 0xcccf, 0xebf8, 0x9cf1, 0xe4e4,
+    0x9cf2, 0x9cf3, 0xb9f6, 0x9cf4, 0x9cf5, 0x9cf6, 0xd6cd, 0xe4d9,
+    0xe4dc, 0xc2fa, 0xe4de, 0x9cf7, 0xc2cb, 0xc0c4, 0xc2d0, 0x9cf8,
+    0xb1f5, 0xccb2, 0x9cf9, 0x9cfa, 0x9cfb, 0x9cfc, 0x9cfd, 0x9cfe,
+    0x9d40, 0x9d41, 0x9d42, 0x9d43, 0xb5ce, 0x9d44, 0x9d45, 0x9d46,
+    0x9d47, 0xe4ef, 0x9d48, 0x9d49, 0x9d4a, 0x9d4b, 0x9d4c, 0x9d4d,
+    /* 0x6f00 .. 0x6fff */
+    0x9d4e, 0x9d4f, 0xc6af, 0x9d50, 0x9d51, 0x9d52, 0xc6e1, 0x9d53,
+    0x9d54, 0xe4f5, 0x9d55, 0x9d56, 0x9d57, 0x9d58, 0x9d59, 0xc2a9,
+    0x9d5a, 0x9d5b, 0x9d5c, 0xc0ec, 0xd1dd, 0xe4ee, 0x9d5d, 0x9d5e,
+    0x9d5f, 0x9d60, 0x9d61, 0x9d62, 0x9d63, 0x9d64, 0x9d65, 0x9d66,
+    0xc4ae, 0x9d67, 0x9d68, 0x9d69, 0xe4ed, 0x9d6a, 0x9d6b, 0x9d6c,
+    0x9d6d, 0xe4f6, 0xe4f4, 0xc2fe, 0x9d6e, 0xe4dd, 0x9d6f, 0xe4f0,
+    0x9d70, 0xcafe, 0x9d71, 0xd5c4, 0x9d72, 0x9d73, 0xe4f1, 0x9d74,
+    0x9d75, 0x9d76, 0x9d77, 0x9d78, 0x9d79, 0x9d7a, 0xd1fa, 0x9d7b,
+    0x9d7c, 0x9d7d, 0x9d7e, 0x9d80, 0x9d81, 0x9d82, 0xe4eb, 0xe4ec,
+    0x9d83, 0x9d84, 0x9d85, 0xe4f2, 0x9d86, 0xceab, 0x9d87, 0x9d88,
+    0x9d89, 0x9d8a, 0x9d8b, 0x9d8c, 0x9d8d, 0x9d8e, 0x9d8f, 0x9d90,
+    0xc5cb, 0x9d91, 0x9d92, 0x9d93, 0xc7b1, 0x9d94, 0xc2ba, 0x9d95,
+    0x9d96, 0x9d97, 0xe4ea, 0x9d98, 0x9d99, 0x9d9a, 0xc1ca, 0x9d9b,
+    0x9d9c, 0x9d9d, 0x9d9e, 0x9d9f, 0x9da0, 0xccb6, 0xb3b1, 0x9da1,
+    0x9da2, 0x9da3, 0xe4fb, 0x9da4, 0xe4f3, 0x9da5, 0x9da6, 0x9da7,
+    0xe4fa, 0x9da8, 0xe4fd, 0x9da9, 0xe4fc, 0x9daa, 0x9dab, 0x9dac,
+    0x9dad, 0x9dae, 0x9daf, 0x9db0, 0xb3ce, 0x9db1, 0x9db2, 0x9db3,
+    0xb3ba, 0xe4f7, 0x9db4, 0x9db5, 0xe4f9, 0xe4f8, 0xc5ec, 0x9db6,
+    0x9db7, 0x9db8, 0x9db9, 0x9dba, 0x9dbb, 0x9dbc, 0x9dbd, 0x9dbe,
+    0x9dbf, 0x9dc0, 0x9dc1, 0x9dc2, 0xc0bd, 0x9dc3, 0x9dc4, 0x9dc5,
+    0x9dc6, 0xd4e8, 0x9dc7, 0x9dc8, 0x9dc9, 0x9dca, 0x9dcb, 0xe5a2,
+    0x9dcc, 0x9dcd, 0x9dce, 0x9dcf, 0x9dd0, 0x9dd1, 0x9dd2, 0x9dd3,
+    0x9dd4, 0x9dd5, 0x9dd6, 0xb0c4, 0x9dd7, 0x9dd8, 0xe5a4, 0x9dd9,
+    0x9dda, 0xe5a3, 0x9ddb, 0x9ddc, 0x9ddd, 0x9dde, 0x9ddf, 0x9de0,
+    0xbca4, 0x9de1, 0xe5a5, 0x9de2, 0x9de3, 0x9de4, 0x9de5, 0x9de6,
+    0x9de7, 0xe5a1, 0x9de8, 0x9de9, 0x9dea, 0x9deb, 0x9dec, 0x9ded,
+    0x9dee, 0xe4fe, 0xb1f4, 0x9def, 0x9df0, 0x9df1, 0x9df2, 0x9df3,
+    0x9df4, 0x9df5, 0x9df6, 0x9df7, 0x9df8, 0x9df9, 0xe5a8, 0x9dfa,
+    0xe5a9, 0xe5a6, 0x9dfb, 0x9dfc, 0x9dfd, 0x9dfe, 0x9e40, 0x9e41,
+    0x9e42, 0x9e43, 0x9e44, 0x9e45, 0x9e46, 0x9e47, 0xe5a7, 0xe5aa,
+    0x9e48, 0x9e49, 0x9e4a, 0x9e4b, 0x9e4c, 0x9e4d, 0x9e4e, 0x9e4f,
+    0x9e50, 0x9e51, 0x9e52, 0x9e53, 0x9e54, 0x9e55, 0x9e56, 0x9e57,
+    /* 0x7000 .. 0x70ff */
+    0x9e58, 0x9e59, 0x9e5a, 0x9e5b, 0x9e5c, 0x9e5d, 0x9e5e, 0x9e5f,
+    0x9e60, 0x9e61, 0x9e62, 0x9e63, 0x9e64, 0x9e65, 0x9e66, 0x9e67,
+    0x9e68, 0xc6d9, 0x9e69, 0x9e6a, 0x9e6b, 0x9e6c, 0x9e6d, 0x9e6e,
+    0x9e6f, 0x9e70, 0xe5ab, 0xe5ad, 0x9e71, 0x9e72, 0x9e73, 0x9e74,
+    0x9e75, 0x9e76, 0x9e77, 0xe5ac, 0x9e78, 0x9e79, 0x9e7a, 0x9e7b,
+    0x9e7c, 0x9e7d, 0x9e7e, 0x9e80, 0x9e81, 0x9e82, 0x9e83, 0x9e84,
+    0x9e85, 0x9e86, 0x9e87, 0x9e88, 0x9e89, 0xe5af, 0x9e8a, 0x9e8b,
+    0x9e8c, 0xe5ae, 0x9e8d, 0x9e8e, 0x9e8f, 0x9e90, 0x9e91, 0x9e92,
+    0x9e93, 0x9e94, 0x9e95, 0x9e96, 0x9e97, 0x9e98, 0x9e99, 0x9e9a,
+    0x9e9b, 0x9e9c, 0x9e9d, 0x9e9e, 0xb9e0, 0x9e9f, 0x9ea0, 0xe5b0,
+    0x9ea1, 0x9ea2, 0x9ea3, 0x9ea4, 0x9ea5, 0x9ea6, 0x9ea7, 0x9ea8,
+    0x9ea9, 0x9eaa, 0x9eab, 0x9eac, 0x9ead, 0x9eae, 0xe5b1, 0x9eaf,
+    0x9eb0, 0x9eb1, 0x9eb2, 0x9eb3, 0x9eb4, 0x9eb5, 0x9eb6, 0x9eb7,
+    0x9eb8, 0x9eb9, 0x9eba, 0xbbf0, 0xece1, 0xc3f0, 0x9ebb, 0xb5c6,
+    0xbbd2, 0x9ebc, 0x9ebd, 0x9ebe, 0x9ebf, 0xc1e9, 0xd4ee, 0x9ec0,
+    0xbec4, 0x9ec1, 0x9ec2, 0x9ec3, 0xd7c6, 0x9ec4, 0xd4d6, 0xb2d3,
+    0xecbe, 0x9ec5, 0x9ec6, 0x9ec7, 0x9ec8, 0xeac1, 0x9ec9, 0x9eca,
+    0x9ecb, 0xc2af, 0xb4b6, 0x9ecc, 0x9ecd, 0x9ece, 0xd1d7, 0x9ecf,
+    0x9ed0, 0x9ed1, 0xb3b4, 0x9ed2, 0xc8b2, 0xbfbb, 0xecc0, 0x9ed3,
+    0x9ed4, 0xd6cb, 0x9ed5, 0x9ed6, 0xecbf, 0xecc1, 0x9ed7, 0x9ed8,
+    0x9ed9, 0x9eda, 0x9edb, 0x9edc, 0x9edd, 0x9ede, 0x9edf, 0x9ee0,
+    0x9ee1, 0x9ee2, 0x9ee3, 0xecc5, 0xbee6, 0xccbf, 0xc5da, 0xbebc,
+    0x9ee4, 0xecc6, 0x9ee5, 0xb1fe, 0x9ee6, 0x9ee7, 0x9ee8, 0xecc4,
+    0xd5a8, 0xb5e3, 0x9ee9, 0xecc2, 0xc1b6, 0xb3e3, 0x9eea, 0x9eeb,
+    0xecc3, 0xcbb8, 0xc0c3, 0xccfe, 0x9eec, 0x9eed, 0x9eee, 0x9eef,
+    0xc1d2, 0x9ef0, 0xecc8, 0x9ef1, 0x9ef2, 0x9ef3, 0x9ef4, 0x9ef5,
+    0x9ef6, 0x9ef7, 0x9ef8, 0x9ef9, 0x9efa, 0x9efb, 0x9efc, 0x9efd,
+    0xbae6, 0xc0d3, 0x9efe, 0xd6f2, 0x9f40, 0x9f41, 0x9f42, 0xd1cc,
+    0x9f43, 0x9f44, 0x9f45, 0x9f46, 0xbfbe, 0x9f47, 0xb7b3, 0xc9d5,
+    0xecc7, 0xbbe2, 0x9f48, 0xcccc, 0xbdfd, 0xc8c8, 0x9f49, 0xcfa9,
+    0x9f4a, 0x9f4b, 0x9f4c, 0x9f4d, 0x9f4e, 0x9f4f, 0x9f50, 0xcde9,
+    0x9f51, 0xc5eb, 0x9f52, 0x9f53, 0x9f54, 0xb7e9, 0x9f55, 0x9f56,
+    /* 0x7100 .. 0x71ff */
+    0x9f57, 0x9f58, 0x9f59, 0x9f5a, 0x9f5b, 0x9f5c, 0x9f5d, 0x9f5e,
+    0x9f5f, 0xd1c9, 0xbab8, 0x9f60, 0x9f61, 0x9f62, 0x9f63, 0x9f64,
+    0xecc9, 0x9f65, 0x9f66, 0xecca, 0x9f67, 0xbbc0, 0xeccb, 0x9f68,
+    0xece2, 0xb1ba, 0xb7d9, 0x9f69, 0x9f6a, 0x9f6b, 0x9f6c, 0x9f6d,
+    0x9f6e, 0x9f6f, 0x9f70, 0x9f71, 0x9f72, 0x9f73, 0xbdb9, 0x9f74,
+    0x9f75, 0x9f76, 0x9f77, 0x9f78, 0x9f79, 0x9f7a, 0x9f7b, 0xeccc,
+    0xd1e6, 0xeccd, 0x9f7c, 0x9f7d, 0x9f7e, 0x9f80, 0xc8bb, 0x9f81,
+    0x9f82, 0x9f83, 0x9f84, 0x9f85, 0x9f86, 0x9f87, 0x9f88, 0x9f89,
+    0x9f8a, 0x9f8b, 0x9f8c, 0x9f8d, 0x9f8e, 0xecd1, 0x9f8f, 0x9f90,
+    0x9f91, 0x9f92, 0xecd3, 0x9f93, 0xbbcd, 0x9f94, 0xbce5, 0x9f95,
+    0x9f96, 0x9f97, 0x9f98, 0x9f99, 0x9f9a, 0x9f9b, 0x9f9c, 0x9f9d,
+    0x9f9e, 0x9f9f, 0x9fa0, 0x9fa1, 0xeccf, 0x9fa2, 0xc9b7, 0x9fa3,
+    0x9fa4, 0x9fa5, 0x9fa6, 0x9fa7, 0xc3ba, 0x9fa8, 0xece3, 0xd5d5,
+    0xecd0, 0x9fa9, 0x9faa, 0x9fab, 0x9fac, 0x9fad, 0xd6f3, 0x9fae,
+    0x9faf, 0x9fb0, 0xecd2, 0xecce, 0x9fb1, 0x9fb2, 0x9fb3, 0x9fb4,
+    0xecd4, 0x9fb5, 0xecd5, 0x9fb6, 0x9fb7, 0xc9bf, 0x9fb8, 0x9fb9,
+    0x9fba, 0x9fbb, 0x9fbc, 0x9fbd, 0xcfa8, 0x9fbe, 0x9fbf, 0x9fc0,
+    0x9fc1, 0x9fc2, 0xd0dc, 0x9fc3, 0x9fc4, 0x9fc5, 0x9fc6, 0xd1ac,
+    0x9fc7, 0x9fc8, 0x9fc9, 0x9fca, 0xc8db, 0x9fcb, 0x9fcc, 0x9fcd,
+    0xecd6, 0xcef5, 0x9fce, 0x9fcf, 0x9fd0, 0x9fd1, 0x9fd2, 0xcaec,
+    0xecda, 0x9fd3, 0x9fd4, 0x9fd5, 0x9fd6, 0x9fd7, 0x9fd8, 0x9fd9,
+    0xecd9, 0x9fda, 0x9fdb, 0x9fdc, 0xb0be, 0x9fdd, 0x9fde, 0x9fdf,
+    0x9fe0, 0x9fe1, 0x9fe2, 0xecd7, 0x9fe3, 0xecd8, 0x9fe4, 0x9fe5,
+    0x9fe6, 0xece4, 0x9fe7, 0x9fe8, 0x9fe9, 0x9fea, 0x9feb, 0x9fec,
+    0x9fed, 0x9fee, 0x9fef, 0xc8bc, 0x9ff0, 0x9ff1, 0x9ff2, 0x9ff3,
+    0x9ff4, 0x9ff5, 0x9ff6, 0x9ff7, 0x9ff8, 0x9ff9, 0xc1c7, 0x9ffa,
+    0x9ffb, 0x9ffc, 0x9ffd, 0x9ffe, 0xecdc, 0xd1e0, 0xa040, 0xa041,
+    0xa042, 0xa043, 0xa044, 0xa045, 0xa046, 0xa047, 0xa048, 0xa049,
+    0xecdb, 0xa04a, 0xa04b, 0xa04c, 0xa04d, 0xd4ef, 0xa04e, 0xecdd,
+    0xa04f, 0xa050, 0xa051, 0xa052, 0xa053, 0xa054, 0xdbc6, 0xa055,
+    0xa056, 0xa057, 0xa058, 0xa059, 0xa05a, 0xa05b, 0xa05c, 0xa05d,
+    0xa05e, 0xecde, 0xa05f, 0xa060, 0xa061, 0xa062, 0xa063, 0xa064,
+    /* 0x7200 .. 0x72ff */
+    0xa065, 0xa066, 0xa067, 0xa068, 0xa069, 0xa06a, 0xb1ac, 0xa06b,
+    0xa06c, 0xa06d, 0xa06e, 0xa06f, 0xa070, 0xa071, 0xa072, 0xa073,
+    0xa074, 0xa075, 0xa076, 0xa077, 0xa078, 0xa079, 0xa07a, 0xa07b,
+    0xa07c, 0xa07d, 0xa07e, 0xa080, 0xa081, 0xecdf, 0xa082, 0xa083,
+    0xa084, 0xa085, 0xa086, 0xa087, 0xa088, 0xa089, 0xa08a, 0xa08b,
+    0xece0, 0xa08c, 0xd7a6, 0xa08d, 0xc5c0, 0xa08e, 0xa08f, 0xa090,
+    0xebbc, 0xb0ae, 0xa091, 0xa092, 0xa093, 0xbef4, 0xb8b8, 0xd2af,
+    0xb0d6, 0xb5f9, 0xa094, 0xd8b3, 0xa095, 0xcbac, 0xa096, 0xe3dd,
+    0xa097, 0xa098, 0xa099, 0xa09a, 0xa09b, 0xa09c, 0xa09d, 0xc6ac,
+    0xb0e6, 0xa09e, 0xa09f, 0xa0a0, 0xc5c6, 0xebb9, 0xa0a1, 0xa0a2,
+    0xa0a3, 0xa0a4, 0xebba, 0xa0a5, 0xa0a6, 0xa0a7, 0xebbb, 0xa0a8,
+    0xa0a9, 0xd1c0, 0xa0aa, 0xc5a3, 0xa0ab, 0xeaf2, 0xa0ac, 0xc4b2,
+    0xa0ad, 0xc4b5, 0xc0ce, 0xa0ae, 0xa0af, 0xa0b0, 0xeaf3, 0xc4c1,
+    0xa0b1, 0xceef, 0xa0b2, 0xa0b3, 0xa0b4, 0xa0b5, 0xeaf0, 0xeaf4,
+    0xa0b6, 0xa0b7, 0xc9fc, 0xa0b8, 0xa0b9, 0xc7a3, 0xa0ba, 0xa0bb,
+    0xa0bc, 0xccd8, 0xcefe, 0xa0bd, 0xa0be, 0xa0bf, 0xeaf5, 0xeaf6,
+    0xcfac, 0xc0e7, 0xa0c0, 0xa0c1, 0xeaf7, 0xa0c2, 0xa0c3, 0xa0c4,
+    0xa0c5, 0xa0c6, 0xb6bf, 0xeaf8, 0xa0c7, 0xeaf9, 0xa0c8, 0xeafa,
+    0xa0c9, 0xa0ca, 0xeafb, 0xa0cb, 0xa0cc, 0xa0cd, 0xa0ce, 0xa0cf,
+    0xa0d0, 0xa0d1, 0xa0d2, 0xa0d3, 0xa0d4, 0xa0d5, 0xa0d6, 0xeaf1,
+    0xa0d7, 0xa0d8, 0xa0d9, 0xa0da, 0xa0db, 0xa0dc, 0xa0dd, 0xa0de,
+    0xa0df, 0xa0e0, 0xa0e1, 0xa0e2, 0xc8ae, 0xe1eb, 0xa0e3, 0xb7b8,
+    0xe1ec, 0xa0e4, 0xa0e5, 0xa0e6, 0xe1ed, 0xa0e7, 0xd7b4, 0xe1ee,
+    0xe1ef, 0xd3cc, 0xa0e8, 0xa0e9, 0xa0ea, 0xa0eb, 0xa0ec, 0xa0ed,
+    0xa0ee, 0xe1f1, 0xbff1, 0xe1f0, 0xb5d2, 0xa0ef, 0xa0f0, 0xa0f1,
+    0xb1b7, 0xa0f2, 0xa0f3, 0xa0f4, 0xa0f5, 0xe1f3, 0xe1f2, 0xa0f6,
+    0xbafc, 0xa0f7, 0xe1f4, 0xa0f8, 0xa0f9, 0xa0fa, 0xa0fb, 0xb9b7,
+    0xa0fc, 0xbed1, 0xa0fd, 0xa0fe, 0xaa40, 0xaa41, 0xc4fc, 0xaa42,
+    0xbadd, 0xbdc6, 0xaa43, 0xaa44, 0xaa45, 0xaa46, 0xaa47, 0xaa48,
+    0xe1f5, 0xe1f7, 0xaa49, 0xaa4a, 0xb6c0, 0xcfc1, 0xcaa8, 0xe1f6,
+    0xd5f8, 0xd3fc, 0xe1f8, 0xe1fc, 0xe1f9, 0xaa4b, 0xaa4c, 0xe1fa,
+    0xc0ea, 0xaa4d, 0xe1fe, 0xe2a1, 0xc0c7, 0xaa4e, 0xaa4f, 0xaa50,
+    /* 0x7300 .. 0x73ff */
+    0xaa51, 0xe1fb, 0xaa52, 0xe1fd, 0xaa53, 0xaa54, 0xaa55, 0xaa56,
+    0xaa57, 0xaa58, 0xe2a5, 0xaa59, 0xaa5a, 0xaa5b, 0xc1d4, 0xaa5c,
+    0xaa5d, 0xaa5e, 0xaa5f, 0xe2a3, 0xaa60, 0xe2a8, 0xb2fe, 0xe2a2,
+    0xaa61, 0xaa62, 0xaa63, 0xc3cd, 0xb2c2, 0xe2a7, 0xe2a6, 0xaa64,
+    0xaa65, 0xe2a4, 0xe2a9, 0xaa66, 0xaa67, 0xe2ab, 0xaa68, 0xaa69,
+    0xaa6a, 0xd0c9, 0xd6ed, 0xc3a8, 0xe2ac, 0xaa6b, 0xcfd7, 0xaa6c,
+    0xaa6d, 0xe2ae, 0xaa6e, 0xaa6f, 0xbaef, 0xaa70, 0xaa71, 0xe9e0,
+    0xe2ad, 0xe2aa, 0xaa72, 0xaa73, 0xaa74, 0xaa75, 0xbbab, 0xd4b3,
+    0xaa76, 0xaa77, 0xaa78, 0xaa79, 0xaa7a, 0xaa7b, 0xaa7c, 0xaa7d,
+    0xaa7e, 0xaa80, 0xaa81, 0xaa82, 0xaa83, 0xe2b0, 0xaa84, 0xaa85,
+    0xe2af, 0xaa86, 0xe9e1, 0xaa87, 0xaa88, 0xaa89, 0xaa8a, 0xe2b1,
+    0xaa8b, 0xaa8c, 0xaa8d, 0xaa8e, 0xaa8f, 0xaa90, 0xaa91, 0xaa92,
+    0xe2b2, 0xaa93, 0xaa94, 0xaa95, 0xaa96, 0xaa97, 0xaa98, 0xaa99,
+    0xaa9a, 0xaa9b, 0xaa9c, 0xaa9d, 0xe2b3, 0xcca1, 0xaa9e, 0xe2b4,
+    0xaa9f, 0xaaa0, 0xab40, 0xab41, 0xab42, 0xab43, 0xab44, 0xab45,
+    0xab46, 0xab47, 0xab48, 0xab49, 0xab4a, 0xab4b, 0xe2b5, 0xab4c,
+    0xab4d, 0xab4e, 0xab4f, 0xab50, 0xd0fe, 0xab51, 0xab52, 0xc2ca,
+    0xab53, 0xd3f1, 0xab54, 0xcdf5, 0xab55, 0xab56, 0xe7e0, 0xab57,
+    0xab58, 0xe7e1, 0xab59, 0xab5a, 0xab5b, 0xab5c, 0xbec1, 0xab5d,
+    0xab5e, 0xab5f, 0xab60, 0xc2ea, 0xab61, 0xab62, 0xab63, 0xe7e4,
+    0xab64, 0xab65, 0xe7e3, 0xab66, 0xab67, 0xab68, 0xab69, 0xab6a,
+    0xab6b, 0xcde6, 0xab6c, 0xc3b5, 0xab6d, 0xab6e, 0xe7e2, 0xbbb7,
+    0xcfd6, 0xab6f, 0xc1e1, 0xe7e9, 0xab70, 0xab71, 0xab72, 0xe7e8,
+    0xab73, 0xab74, 0xe7f4, 0xb2a3, 0xab75, 0xab76, 0xab77, 0xab78,
+    0xe7ea, 0xab79, 0xe7e6, 0xab7a, 0xab7b, 0xab7c, 0xab7d, 0xab7e,
+    0xe7ec, 0xe7eb, 0xc9ba, 0xab80, 0xab81, 0xd5e4, 0xab82, 0xe7e5,
+    0xb7a9, 0xe7e7, 0xab83, 0xab84, 0xab85, 0xab86, 0xab87, 0xab88,
+    0xab89, 0xe7ee, 0xab8a, 0xab8b, 0xab8c, 0xab8d, 0xe7f3, 0xab8e,
+    0xd6e9, 0xab8f, 0xab90, 0xab91, 0xab92, 0xe7ed, 0xab93, 0xe7f2,
+    0xab94, 0xe7f1, 0xab95, 0xab96, 0xab97, 0xb0e0, 0xab98, 0xab99,
+    0xab9a, 0xab9b, 0xe7f5, 0xab9c, 0xab9d, 0xab9e, 0xab9f, 0xaba0,
+    0xac40, 0xac41, 0xac42, 0xac43, 0xac44, 0xac45, 0xac46, 0xac47,
+    /* 0x7400 .. 0x74ff */
+    0xac48, 0xac49, 0xac4a, 0xc7f2, 0xac4b, 0xc0c5, 0xc0ed, 0xac4c,
+    0xac4d, 0xc1f0, 0xe7f0, 0xac4e, 0xac4f, 0xac50, 0xac51, 0xe7f6,
+    0xcbf6, 0xac52, 0xac53, 0xac54, 0xac55, 0xac56, 0xac57, 0xac58,
+    0xac59, 0xac5a, 0xe8a2, 0xe8a1, 0xac5b, 0xac5c, 0xac5d, 0xac5e,
+    0xac5f, 0xac60, 0xd7c1, 0xac61, 0xac62, 0xe7fa, 0xe7f9, 0xac63,
+    0xe7fb, 0xac64, 0xe7f7, 0xac65, 0xe7fe, 0xac66, 0xe7fd, 0xac67,
+    0xe7fc, 0xac68, 0xac69, 0xc1d5, 0xc7d9, 0xc5fd, 0xc5c3, 0xac6a,
+    0xac6b, 0xac6c, 0xac6d, 0xac6e, 0xc7ed, 0xac6f, 0xac70, 0xac71,
+    0xac72, 0xe8a3, 0xac73, 0xac74, 0xac75, 0xac76, 0xac77, 0xac78,
+    0xac79, 0xac7a, 0xac7b, 0xac7c, 0xac7d, 0xac7e, 0xac80, 0xac81,
+    0xac82, 0xac83, 0xac84, 0xac85, 0xac86, 0xe8a6, 0xac87, 0xe8a5,
+    0xac88, 0xe8a7, 0xbaf7, 0xe7f8, 0xe8a4, 0xac89, 0xc8f0, 0xc9aa,
+    0xac8a, 0xac8b, 0xac8c, 0xac8d, 0xac8e, 0xac8f, 0xac90, 0xac91,
+    0xac92, 0xac93, 0xac94, 0xac95, 0xac96, 0xe8a9, 0xac97, 0xac98,
+    0xb9e5, 0xac99, 0xac9a, 0xac9b, 0xac9c, 0xac9d, 0xd1fe, 0xe8a8,
+    0xac9e, 0xac9f, 0xaca0, 0xad40, 0xad41, 0xad42, 0xe8aa, 0xad43,
+    0xe8ad, 0xe8ae, 0xad44, 0xc1a7, 0xad45, 0xad46, 0xad47, 0xe8af,
+    0xad48, 0xad49, 0xad4a, 0xe8b0, 0xad4b, 0xad4c, 0xe8ac, 0xad4d,
+    0xe8b4, 0xad4e, 0xad4f, 0xad50, 0xad51, 0xad52, 0xad53, 0xad54,
+    0xad55, 0xad56, 0xad57, 0xad58, 0xe8ab, 0xad59, 0xe8b1, 0xad5a,
+    0xad5b, 0xad5c, 0xad5d, 0xad5e, 0xad5f, 0xad60, 0xad61, 0xe8b5,
+    0xe8b2, 0xe8b3, 0xad62, 0xad63, 0xad64, 0xad65, 0xad66, 0xad67,
+    0xad68, 0xad69, 0xad6a, 0xad6b, 0xad6c, 0xad6d, 0xad6e, 0xad6f,
+    0xad70, 0xad71, 0xe8b7, 0xad72, 0xad73, 0xad74, 0xad75, 0xad76,
+    0xad77, 0xad78, 0xad79, 0xad7a, 0xad7b, 0xad7c, 0xad7d, 0xad7e,
+    0xad80, 0xad81, 0xad82, 0xad83, 0xad84, 0xad85, 0xad86, 0xad87,
+    0xad88, 0xad89, 0xe8b6, 0xad8a, 0xad8b, 0xad8c, 0xad8d, 0xad8e,
+    0xad8f, 0xad90, 0xad91, 0xad92, 0xb9cf, 0xad93, 0xf0ac, 0xad94,
+    0xf0ad, 0xad95, 0xc6b0, 0xb0ea, 0xc8bf, 0xad96, 0xcddf, 0xad97,
+    0xad98, 0xad99, 0xad9a, 0xad9b, 0xad9c, 0xad9d, 0xcecd, 0xeab1,
+    0xad9e, 0xad9f, 0xada0, 0xae40, 0xeab2, 0xae41, 0xc6bf, 0xb4c9,
+    0xae42, 0xae43, 0xae44, 0xae45, 0xae46, 0xae47, 0xae48, 0xeab3,
+    /* 0x7500 .. 0x75ff */
+    0xae49, 0xae4a, 0xae4b, 0xae4c, 0xd5e7, 0xae4d, 0xae4e, 0xae4f,
+    0xae50, 0xae51, 0xae52, 0xae53, 0xae54, 0xddf9, 0xae55, 0xeab4,
+    0xae56, 0xeab5, 0xae57, 0xeab6, 0xae58, 0xae59, 0xae5a, 0xae5b,
+    0xb8ca, 0xdfb0, 0xc9f5, 0xae5c, 0xccf0, 0xae5d, 0xae5e, 0xc9fa,
+    0xae5f, 0xae60, 0xae61, 0xae62, 0xae63, 0xc9fb, 0xae64, 0xae65,
+    0xd3c3, 0xcba6, 0xae66, 0xb8a6, 0xf0ae, 0xb1c2, 0xae67, 0xe5b8,
+    0xccef, 0xd3c9, 0xbcd7, 0xc9ea, 0xae68, 0xb5e7, 0xae69, 0xc4d0,
+    0xb5e9, 0xae6a, 0xeeae, 0xbbad, 0xae6b, 0xae6c, 0xe7de, 0xae6d,
+    0xeeaf, 0xae6e, 0xae6f, 0xae70, 0xae71, 0xb3a9, 0xae72, 0xae73,
+    0xeeb2, 0xae74, 0xae75, 0xeeb1, 0xbde7, 0xae76, 0xeeb0, 0xceb7,
+    0xae77, 0xae78, 0xae79, 0xae7a, 0xc5cf, 0xae7b, 0xae7c, 0xae7d,
+    0xae7e, 0xc1f4, 0xdbce, 0xeeb3, 0xd0f3, 0xae80, 0xae81, 0xae82,
+    0xae83, 0xae84, 0xae85, 0xae86, 0xae87, 0xc2d4, 0xc6e8, 0xae88,
+    0xae89, 0xae8a, 0xb7ac, 0xae8b, 0xae8c, 0xae8d, 0xae8e, 0xae8f,
+    0xae90, 0xae91, 0xeeb4, 0xae92, 0xb3eb, 0xae93, 0xae94, 0xae95,
+    0xbbfb, 0xeeb5, 0xae96, 0xae97, 0xae98, 0xae99, 0xae9a, 0xe7dc,
+    0xae9b, 0xae9c, 0xae9d, 0xeeb6, 0xae9e, 0xae9f, 0xbdae, 0xaea0,
+    0xaf40, 0xaf41, 0xaf42, 0xf1e2, 0xaf43, 0xaf44, 0xaf45, 0xcae8,
+    0xaf46, 0xd2c9, 0xf0da, 0xaf47, 0xf0db, 0xaf48, 0xf0dc, 0xc1c6,
+    0xaf49, 0xb8ed, 0xbece, 0xaf4a, 0xaf4b, 0xf0de, 0xaf4c, 0xc5b1,
+    0xf0dd, 0xd1f1, 0xaf4d, 0xf0e0, 0xb0cc, 0xbdea, 0xaf4e, 0xaf4f,
+    0xaf50, 0xaf51, 0xaf52, 0xd2df, 0xf0df, 0xaf53, 0xb4af, 0xb7e8,
+    0xf0e6, 0xf0e5, 0xc6a3, 0xf0e1, 0xf0e2, 0xb4c3, 0xaf54, 0xaf55,
+    0xf0e3, 0xd5ee, 0xaf56, 0xaf57, 0xccdb, 0xbed2, 0xbcb2, 0xaf58,
+    0xaf59, 0xaf5a, 0xf0e8, 0xf0e7, 0xf0e4, 0xb2a1, 0xaf5b, 0xd6a2,
+    0xd3b8, 0xbeb7, 0xc8ac, 0xaf5c, 0xaf5d, 0xf0ea, 0xaf5e, 0xaf5f,
+    0xaf60, 0xaf61, 0xd1f7, 0xaf62, 0xd6cc, 0xbadb, 0xf0e9, 0xaf63,
+    0xb6bb, 0xaf64, 0xaf65, 0xcdb4, 0xaf66, 0xaf67, 0xc6a6, 0xaf68,
+    0xaf69, 0xaf6a, 0xc1a1, 0xf0eb, 0xf0ee, 0xaf6b, 0xf0ed, 0xf0f0,
+    0xf0ec, 0xaf6c, 0xbbbe, 0xf0ef, 0xaf6d, 0xaf6e, 0xaf6f, 0xaf70,
+    0xccb5, 0xf0f2, 0xaf71, 0xaf72, 0xb3d5, 0xaf73, 0xaf74, 0xaf75,
+    0xaf76, 0xb1d4, 0xaf77, 0xaf78, 0xf0f3, 0xaf79, 0xaf7a, 0xf0f4,
+    /* 0x7600 .. 0x76ff */
+    0xf0f6, 0xb4e1, 0xaf7b, 0xf0f1, 0xaf7c, 0xf0f7, 0xaf7d, 0xaf7e,
+    0xaf80, 0xaf81, 0xf0fa, 0xaf82, 0xf0f8, 0xaf83, 0xaf84, 0xaf85,
+    0xf0f5, 0xaf86, 0xaf87, 0xaf88, 0xaf89, 0xf0fd, 0xaf8a, 0xf0f9,
+    0xf0fc, 0xf0fe, 0xaf8b, 0xf1a1, 0xaf8c, 0xaf8d, 0xaf8e, 0xcec1,
+    0xf1a4, 0xaf8f, 0xf1a3, 0xaf90, 0xc1f6, 0xf0fb, 0xcadd, 0xaf91,
+    0xaf92, 0xb4f1, 0xb1f1, 0xccb1, 0xaf93, 0xf1a6, 0xaf94, 0xaf95,
+    0xf1a7, 0xaf96, 0xaf97, 0xf1ac, 0xd5ce, 0xf1a9, 0xaf98, 0xaf99,
+    0xc8b3, 0xaf9a, 0xaf9b, 0xaf9c, 0xf1a2, 0xaf9d, 0xf1ab, 0xf1a8,
+    0xf1a5, 0xaf9e, 0xaf9f, 0xf1aa, 0xafa0, 0xb040, 0xb041, 0xb042,
+    0xb043, 0xb044, 0xb045, 0xb046, 0xb0a9, 0xf1ad, 0xb047, 0xb048,
+    0xb049, 0xb04a, 0xb04b, 0xb04c, 0xf1af, 0xb04d, 0xf1b1, 0xb04e,
+    0xb04f, 0xb050, 0xb051, 0xb052, 0xf1b0, 0xb053, 0xf1ae, 0xb054,
+    0xb055, 0xb056, 0xb057, 0xd1a2, 0xb058, 0xb059, 0xb05a, 0xb05b,
+    0xb05c, 0xb05d, 0xb05e, 0xf1b2, 0xb05f, 0xb060, 0xb061, 0xf1b3,
+    0xb062, 0xb063, 0xb064, 0xb065, 0xb066, 0xb067, 0xb068, 0xb069,
+    0xb9ef, 0xb06a, 0xb06b, 0xb5c7, 0xb06c, 0xb0d7, 0xb0d9, 0xb06d,
+    0xb06e, 0xb06f, 0xd4ed, 0xb070, 0xb5c4, 0xb071, 0xbdd4, 0xbbca,
+    0xf0a7, 0xb072, 0xb073, 0xb8de, 0xb074, 0xb075, 0xf0a8, 0xb076,
+    0xb077, 0xb0a8, 0xb078, 0xf0a9, 0xb079, 0xb07a, 0xcdee, 0xb07b,
+    0xb07c, 0xf0aa, 0xb07d, 0xb07e, 0xb080, 0xb081, 0xb082, 0xb083,
+    0xb084, 0xb085, 0xb086, 0xb087, 0xf0ab, 0xb088, 0xb089, 0xb08a,
+    0xb08b, 0xb08c, 0xb08d, 0xb08e, 0xb08f, 0xb090, 0xc6a4, 0xb091,
+    0xb092, 0xd6e5, 0xf1e4, 0xb093, 0xf1e5, 0xb094, 0xb095, 0xb096,
+    0xb097, 0xb098, 0xb099, 0xb09a, 0xb09b, 0xb09c, 0xb09d, 0xc3f3,
+    0xb09e, 0xb09f, 0xd3db, 0xb0a0, 0xb140, 0xd6d1, 0xc5e8, 0xb141,
+    0xd3af, 0xb142, 0xd2e6, 0xb143, 0xb144, 0xeec1, 0xb0bb, 0xd5b5,
+    0xd1ce, 0xbce0, 0xbad0, 0xb145, 0xbff8, 0xb146, 0xb8c7, 0xb5c1,
+    0xc5cc, 0xb147, 0xb148, 0xcaa2, 0xb149, 0xb14a, 0xb14b, 0xc3cb,
+    0xb14c, 0xb14d, 0xb14e, 0xb14f, 0xb150, 0xeec2, 0xb151, 0xb152,
+    0xb153, 0xb154, 0xb155, 0xb156, 0xb157, 0xb158, 0xc4bf, 0xb6a2,
+    0xb159, 0xedec, 0xc3a4, 0xb15a, 0xd6b1, 0xb15b, 0xb15c, 0xb15d,
+    0xcfe0, 0xedef, 0xb15e, 0xb15f, 0xc5ce, 0xb160, 0xb6dc, 0xb161,
+    /* 0x7700 .. 0x77ff */
+    0xb162, 0xcaa1, 0xb163, 0xb164, 0xeded, 0xb165, 0xb166, 0xedf0,
+    0xedf1, 0xc3bc, 0xb167, 0xbfb4, 0xb168, 0xedee, 0xb169, 0xb16a,
+    0xb16b, 0xb16c, 0xb16d, 0xb16e, 0xb16f, 0xb170, 0xb171, 0xb172,
+    0xb173, 0xedf4, 0xedf2, 0xb174, 0xb175, 0xb176, 0xb177, 0xd5e6,
+    0xc3df, 0xb178, 0xedf3, 0xb179, 0xb17a, 0xb17b, 0xedf6, 0xb17c,
+    0xd5a3, 0xd1a3, 0xb17d, 0xb17e, 0xb180, 0xedf5, 0xb181, 0xc3d0,
+    0xb182, 0xb183, 0xb184, 0xb185, 0xb186, 0xedf7, 0xbff4, 0xbeec,
+    0xedf8, 0xb187, 0xccf7, 0xb188, 0xd1db, 0xb189, 0xb18a, 0xb18b,
+    0xd7c5, 0xd5f6, 0xb18c, 0xedfc, 0xb18d, 0xb18e, 0xb18f, 0xedfb,
+    0xb190, 0xb191, 0xb192, 0xb193, 0xb194, 0xb195, 0xb196, 0xb197,
+    0xedf9, 0xedfa, 0xb198, 0xb199, 0xb19a, 0xb19b, 0xb19c, 0xb19d,
+    0xb19e, 0xb19f, 0xedfd, 0xbea6, 0xb1a0, 0xb240, 0xb241, 0xb242,
+    0xb243, 0xcbaf, 0xeea1, 0xb6bd, 0xb244, 0xeea2, 0xc4c0, 0xb245,
+    0xedfe, 0xb246, 0xb247, 0xbdde, 0xb2c7, 0xb248, 0xb249, 0xb24a,
+    0xb24b, 0xb24c, 0xb24d, 0xb24e, 0xb24f, 0xb250, 0xb251, 0xb252,
+    0xb253, 0xb6c3, 0xb254, 0xb255, 0xb256, 0xeea5, 0xd8ba, 0xeea3,
+    0xeea6, 0xb257, 0xb258, 0xb259, 0xc3e9, 0xb3f2, 0xb25a, 0xb25b,
+    0xb25c, 0xb25d, 0xb25e, 0xb25f, 0xeea7, 0xeea4, 0xcfb9, 0xb260,
+    0xb261, 0xeea8, 0xc2f7, 0xb262, 0xb263, 0xb264, 0xb265, 0xb266,
+    0xb267, 0xb268, 0xb269, 0xb26a, 0xb26b, 0xb26c, 0xb26d, 0xeea9,
+    0xeeaa, 0xb26e, 0xdeab, 0xb26f, 0xb270, 0xc6b3, 0xb271, 0xc7c6,
+    0xb272, 0xd6f5, 0xb5c9, 0xb273, 0xcbb2, 0xb274, 0xb275, 0xb276,
+    0xeeab, 0xb277, 0xb278, 0xcdab, 0xb279, 0xeeac, 0xb27a, 0xb27b,
+    0xb27c, 0xb27d, 0xb27e, 0xd5b0, 0xb280, 0xeead, 0xb281, 0xf6c4,
+    0xb282, 0xb283, 0xb284, 0xb285, 0xb286, 0xb287, 0xb288, 0xb289,
+    0xb28a, 0xb28b, 0xb28c, 0xb28d, 0xb28e, 0xdbc7, 0xb28f, 0xb290,
+    0xb291, 0xb292, 0xb293, 0xb294, 0xb295, 0xb296, 0xb297, 0xb4a3,
+    0xb298, 0xb299, 0xb29a, 0xc3ac, 0xf1e6, 0xb29b, 0xb29c, 0xb29d,
+    0xb29e, 0xb29f, 0xcab8, 0xd2d3, 0xb2a0, 0xd6aa, 0xb340, 0xeff2,
+    0xb341, 0xbed8, 0xb342, 0xbdc3, 0xeff3, 0xb6cc, 0xb0ab, 0xb343,
+    0xb344, 0xb345, 0xb346, 0xcaaf, 0xb347, 0xb348, 0xedb6, 0xb349,
+    0xedb7, 0xb34a, 0xb34b, 0xb34c, 0xb34d, 0xcef9, 0xb7af, 0xbff3,
+    /* 0x7800 .. 0x78ff */
+    0xedb8, 0xc2eb, 0xc9b0, 0xb34e, 0xb34f, 0xb350, 0xb351, 0xb352,
+    0xb353, 0xedb9, 0xb354, 0xb355, 0xc6f6, 0xbfb3, 0xb356, 0xb357,
+    0xb358, 0xedbc, 0xc5f8, 0xb359, 0xd1d0, 0xb35a, 0xd7a9, 0xedba,
+    0xedbb, 0xb35b, 0xd1e2, 0xb35c, 0xedbf, 0xedc0, 0xb35d, 0xedc4,
+    0xb35e, 0xb35f, 0xb360, 0xedc8, 0xb361, 0xedc6, 0xedce, 0xd5e8,
+    0xb362, 0xedc9, 0xb363, 0xb364, 0xedc7, 0xedbe, 0xb365, 0xb366,
+    0xc5e9, 0xb367, 0xb368, 0xb369, 0xc6c6, 0xb36a, 0xb36b, 0xc9e9,
+    0xd4d2, 0xedc1, 0xedc2, 0xedc3, 0xedc5, 0xb36c, 0xc0f9, 0xb36d,
+    0xb4a1, 0xb36e, 0xb36f, 0xb370, 0xb371, 0xb9e8, 0xb372, 0xedd0,
+    0xb373, 0xb374, 0xb375, 0xb376, 0xedd1, 0xb377, 0xedca, 0xb378,
+    0xedcf, 0xb379, 0xcef8, 0xb37a, 0xb37b, 0xcbb6, 0xedcc, 0xedcd,
+    0xb37c, 0xb37d, 0xb37e, 0xb380, 0xb381, 0xcff5, 0xb382, 0xb383,
+    0xb384, 0xb385, 0xb386, 0xb387, 0xb388, 0xb389, 0xb38a, 0xb38b,
+    0xb38c, 0xb38d, 0xedd2, 0xc1f2, 0xd3b2, 0xedcb, 0xc8b7, 0xb38e,
+    0xb38f, 0xb390, 0xb391, 0xb392, 0xb393, 0xb394, 0xb395, 0xbcef,
+    0xb396, 0xb397, 0xb398, 0xb399, 0xc5f0, 0xb39a, 0xb39b, 0xb39c,
+    0xb39d, 0xb39e, 0xb39f, 0xb3a0, 0xb440, 0xb441, 0xb442, 0xedd6,
+    0xb443, 0xb5ef, 0xb444, 0xb445, 0xc2b5, 0xb0ad, 0xcbe9, 0xb446,
+    0xb447, 0xb1ae, 0xb448, 0xedd4, 0xb449, 0xb44a, 0xb44b, 0xcdeb,
+    0xb5e2, 0xb44c, 0xedd5, 0xedd3, 0xedd7, 0xb44d, 0xb44e, 0xb5fa,
+    0xb44f, 0xedd8, 0xb450, 0xedd9, 0xb451, 0xeddc, 0xb452, 0xb1cc,
+    0xb453, 0xb454, 0xb455, 0xb456, 0xb457, 0xb458, 0xb459, 0xb45a,
+    0xc5f6, 0xbcee, 0xedda, 0xccbc, 0xb2ea, 0xb45b, 0xb45c, 0xb45d,
+    0xb45e, 0xeddb, 0xb45f, 0xb460, 0xb461, 0xb462, 0xc4eb, 0xb463,
+    0xb464, 0xb4c5, 0xb465, 0xb466, 0xb467, 0xb0f5, 0xb468, 0xb469,
+    0xb46a, 0xeddf, 0xc0da, 0xb4e8, 0xb46b, 0xb46c, 0xb46d, 0xb46e,
+    0xc5cd, 0xb46f, 0xb470, 0xb471, 0xeddd, 0xbfc4, 0xb472, 0xb473,
+    0xb474, 0xedde, 0xb475, 0xb476, 0xb477, 0xb478, 0xb479, 0xb47a,
+    0xb47b, 0xb47c, 0xb47d, 0xb47e, 0xb480, 0xb481, 0xb482, 0xb483,
+    0xc4a5, 0xb484, 0xb485, 0xb486, 0xede0, 0xb487, 0xb488, 0xb489,
+    0xb48a, 0xb48b, 0xede1, 0xb48c, 0xede3, 0xb48d, 0xb48e, 0xc1d7,
+    0xb48f, 0xb490, 0xbbc7, 0xb491, 0xb492, 0xb493, 0xb494, 0xb495,
+    /* 0x7900 .. 0x79ff */
+    0xb496, 0xbdb8, 0xb497, 0xb498, 0xb499, 0xede2, 0xb49a, 0xb49b,
+    0xb49c, 0xb49d, 0xb49e, 0xb49f, 0xb4a0, 0xb540, 0xb541, 0xb542,
+    0xb543, 0xb544, 0xb545, 0xede4, 0xb546, 0xb547, 0xb548, 0xb549,
+    0xb54a, 0xb54b, 0xb54c, 0xb54d, 0xb54e, 0xb54f, 0xede6, 0xb550,
+    0xb551, 0xb552, 0xb553, 0xb554, 0xede5, 0xb555, 0xb556, 0xb557,
+    0xb558, 0xb559, 0xb55a, 0xb55b, 0xb55c, 0xb55d, 0xb55e, 0xb55f,
+    0xb560, 0xb561, 0xb562, 0xb563, 0xede7, 0xb564, 0xb565, 0xb566,
+    0xb567, 0xb568, 0xcabe, 0xecea, 0xc0f1, 0xb569, 0xc9e7, 0xb56a,
+    0xeceb, 0xc6ee, 0xb56b, 0xb56c, 0xb56d, 0xb56e, 0xecec, 0xb56f,
+    0xc6ed, 0xeced, 0xb570, 0xb571, 0xb572, 0xb573, 0xb574, 0xb575,
+    0xb576, 0xb577, 0xb578, 0xecf0, 0xb579, 0xb57a, 0xd7e6, 0xecf3,
+    0xb57b, 0xb57c, 0xecf1, 0xecee, 0xecef, 0xd7a3, 0xc9f1, 0xcbee,
+    0xecf4, 0xb57d, 0xecf2, 0xb57e, 0xb580, 0xcfe9, 0xb581, 0xecf6,
+    0xc6b1, 0xb582, 0xb583, 0xb584, 0xb585, 0xbcc0, 0xb586, 0xecf5,
+    0xb587, 0xb588, 0xb589, 0xb58a, 0xb58b, 0xb58c, 0xb58d, 0xb5bb,
+    0xbbf6, 0xb58e, 0xecf7, 0xb58f, 0xb590, 0xb591, 0xb592, 0xb593,
+    0xd9f7, 0xbdfb, 0xb594, 0xb595, 0xc2bb, 0xecf8, 0xb596, 0xb597,
+    0xb598, 0xb599, 0xecf9, 0xb59a, 0xb59b, 0xb59c, 0xb59d, 0xb8a3,
+    0xb59e, 0xb59f, 0xb5a0, 0xb640, 0xb641, 0xb642, 0xb643, 0xb644,
+    0xb645, 0xb646, 0xecfa, 0xb647, 0xb648, 0xb649, 0xb64a, 0xb64b,
+    0xb64c, 0xb64d, 0xb64e, 0xb64f, 0xb650, 0xb651, 0xb652, 0xecfb,
+    0xb653, 0xb654, 0xb655, 0xb656, 0xb657, 0xb658, 0xb659, 0xb65a,
+    0xb65b, 0xb65c, 0xb65d, 0xecfc, 0xb65e, 0xb65f, 0xb660, 0xb661,
+    0xb662, 0xd3ed, 0xd8ae, 0xc0eb, 0xb663, 0xc7dd, 0xbacc, 0xb664,
+    0xd0e3, 0xcbbd, 0xb665, 0xcdba, 0xb666, 0xb667, 0xb8d1, 0xb668,
+    0xb669, 0xb1fc, 0xb66a, 0xc7ef, 0xb66b, 0xd6d6, 0xb66c, 0xb66d,
+    0xb66e, 0xbfc6, 0xc3eb, 0xb66f, 0xb670, 0xeff5, 0xb671, 0xb672,
+    0xc3d8, 0xb673, 0xb674, 0xb675, 0xb676, 0xb677, 0xb678, 0xd7e2,
+    0xb679, 0xb67a, 0xb67b, 0xeff7, 0xb3d3, 0xb67c, 0xc7d8, 0xd1ed,
+    0xb67d, 0xd6c8, 0xb67e, 0xeff8, 0xb680, 0xeff6, 0xb681, 0xbbfd,
+    0xb3c6, 0xb682, 0xb683, 0xb684, 0xb685, 0xb686, 0xb687, 0xb688,
+    0xbdd5, 0xb689, 0xb68a, 0xd2c6, 0xb68b, 0xbbe0, 0xb68c, 0xb68d,
+    /* 0x7a00 .. 0x7aff */
+    0xcfa1, 0xb68e, 0xeffc, 0xeffb, 0xb68f, 0xb690, 0xeff9, 0xb691,
+    0xb692, 0xb693, 0xb694, 0xb3cc, 0xb695, 0xc9d4, 0xcbb0, 0xb696,
+    0xb697, 0xb698, 0xb699, 0xb69a, 0xeffe, 0xb69b, 0xb69c, 0xb0de,
+    0xb69d, 0xb69e, 0xd6c9, 0xb69f, 0xb6a0, 0xb740, 0xeffd, 0xb741,
+    0xb3ed, 0xb742, 0xb743, 0xf6d5, 0xb744, 0xb745, 0xb746, 0xb747,
+    0xb748, 0xb749, 0xb74a, 0xb74b, 0xb74c, 0xb74d, 0xb74e, 0xb74f,
+    0xb750, 0xb751, 0xb752, 0xcec8, 0xb753, 0xb754, 0xb755, 0xf0a2,
+    0xb756, 0xf0a1, 0xb757, 0xb5be, 0xbcda, 0xbbfc, 0xb758, 0xb8e5,
+    0xb759, 0xb75a, 0xb75b, 0xb75c, 0xb75d, 0xb75e, 0xc4c2, 0xb75f,
+    0xb760, 0xb761, 0xb762, 0xb763, 0xb764, 0xb765, 0xb766, 0xb767,
+    0xb768, 0xf0a3, 0xb769, 0xb76a, 0xb76b, 0xb76c, 0xb76d, 0xcbeb,
+    0xb76e, 0xb76f, 0xb770, 0xb771, 0xb772, 0xb773, 0xb774, 0xb775,
+    0xb776, 0xb777, 0xb778, 0xb779, 0xb77a, 0xb77b, 0xb77c, 0xb77d,
+    0xb77e, 0xb780, 0xb781, 0xb782, 0xb783, 0xb784, 0xb785, 0xb786,
+    0xf0a6, 0xb787, 0xb788, 0xb789, 0xd1a8, 0xb78a, 0xbebf, 0xc7ee,
+    0xf1b6, 0xf1b7, 0xbfd5, 0xb78b, 0xb78c, 0xb78d, 0xb78e, 0xb4a9,
+    0xf1b8, 0xcdbb, 0xb78f, 0xc7d4, 0xd5ad, 0xb790, 0xf1b9, 0xb791,
+    0xf1ba, 0xb792, 0xb793, 0xb794, 0xb795, 0xc7cf, 0xb796, 0xb797,
+    0xb798, 0xd2a4, 0xd6cf, 0xb799, 0xb79a, 0xf1bb, 0xbdd1, 0xb4b0,
+    0xbebd, 0xb79b, 0xb79c, 0xb79d, 0xb4dc, 0xced1, 0xb79e, 0xbfdf,
+    0xf1bd, 0xb79f, 0xb7a0, 0xb840, 0xb841, 0xbffa, 0xf1bc, 0xb842,
+    0xf1bf, 0xb843, 0xb844, 0xb845, 0xf1be, 0xf1c0, 0xb846, 0xb847,
+    0xb848, 0xb849, 0xb84a, 0xf1c1, 0xb84b, 0xb84c, 0xb84d, 0xb84e,
+    0xb84f, 0xb850, 0xb851, 0xb852, 0xb853, 0xb854, 0xb855, 0xc1fe,
+    0xb856, 0xb857, 0xb858, 0xb859, 0xb85a, 0xb85b, 0xb85c, 0xb85d,
+    0xb85e, 0xb85f, 0xb860, 0xc1a2, 0xb861, 0xb862, 0xb863, 0xb864,
+    0xb865, 0xb866, 0xb867, 0xb868, 0xb869, 0xb86a, 0xcafa, 0xb86b,
+    0xb86c, 0xd5be, 0xb86d, 0xb86e, 0xb86f, 0xb870, 0xbeba, 0xbeb9,
+    0xd5c2, 0xb871, 0xb872, 0xbfa2, 0xb873, 0xcdaf, 0xf1b5, 0xb874,
+    0xb875, 0xb876, 0xb877, 0xb878, 0xb879, 0xbddf, 0xb87a, 0xb6cb,
+    0xb87b, 0xb87c, 0xb87d, 0xb87e, 0xb880, 0xb881, 0xb882, 0xb883,
+    0xb884, 0xd6f1, 0xf3c3, 0xb885, 0xb886, 0xf3c4, 0xb887, 0xb8cd,
+    /* 0x7b00 .. 0x7bff */
+    0xb888, 0xb889, 0xb88a, 0xf3c6, 0xf3c7, 0xb88b, 0xb0ca, 0xb88c,
+    0xf3c5, 0xb88d, 0xf3c9, 0xcbf1, 0xb88e, 0xb88f, 0xb890, 0xf3cb,
+    0xb891, 0xd0a6, 0xb892, 0xb893, 0xb1ca, 0xf3c8, 0xb894, 0xb895,
+    0xb896, 0xf3cf, 0xb897, 0xb5d1, 0xb898, 0xb899, 0xf3d7, 0xb89a,
+    0xf3d2, 0xb89b, 0xb89c, 0xb89d, 0xf3d4, 0xf3d3, 0xb7fb, 0xb89e,
+    0xb1bf, 0xb89f, 0xf3ce, 0xf3ca, 0xb5da, 0xb8a0, 0xf3d0, 0xb940,
+    0xb941, 0xf3d1, 0xb942, 0xf3d5, 0xb943, 0xb944, 0xb945, 0xb946,
+    0xf3cd, 0xb947, 0xbce3, 0xb948, 0xc1fd, 0xb949, 0xf3d6, 0xb94a,
+    0xb94b, 0xb94c, 0xb94d, 0xb94e, 0xb94f, 0xf3da, 0xb950, 0xf3cc,
+    0xb951, 0xb5c8, 0xb952, 0xbdee, 0xf3dc, 0xb953, 0xb954, 0xb7a4,
+    0xbff0, 0xd6fe, 0xcdb2, 0xb955, 0xb4f0, 0xb956, 0xb2df, 0xb957,
+    0xf3d8, 0xb958, 0xf3d9, 0xc9b8, 0xb959, 0xf3dd, 0xb95a, 0xb95b,
+    0xf3de, 0xb95c, 0xf3e1, 0xb95d, 0xb95e, 0xb95f, 0xb960, 0xb961,
+    0xb962, 0xb963, 0xb964, 0xb965, 0xb966, 0xb967, 0xf3df, 0xb968,
+    0xb969, 0xf3e3, 0xf3e2, 0xb96a, 0xb96b, 0xf3db, 0xb96c, 0xbfea,
+    0xb96d, 0xb3ef, 0xb96e, 0xf3e0, 0xb96f, 0xb970, 0xc7a9, 0xb971,
+    0xbcf2, 0xb972, 0xb973, 0xb974, 0xb975, 0xf3eb, 0xb976, 0xb977,
+    0xb978, 0xb979, 0xb97a, 0xb97b, 0xb97c, 0xb9bf, 0xb97d, 0xb97e,
+    0xf3e4, 0xb980, 0xb981, 0xb982, 0xb2ad, 0xbbfe, 0xb983, 0xcbe3,
+    0xb984, 0xb985, 0xb986, 0xb987, 0xf3ed, 0xf3e9, 0xb988, 0xb989,
+    0xb98a, 0xb9dc, 0xf3ee, 0xb98b, 0xb98c, 0xb98d, 0xf3e5, 0xf3e6,
+    0xf3ea, 0xc2e1, 0xf3ec, 0xf3ef, 0xf3e8, 0xbcfd, 0xb98e, 0xb98f,
+    0xb990, 0xcfe4, 0xb991, 0xb992, 0xf3f0, 0xb993, 0xb994, 0xb995,
+    0xf3e7, 0xb996, 0xb997, 0xb998, 0xb999, 0xb99a, 0xb99b, 0xb99c,
+    0xb99d, 0xf3f2, 0xb99e, 0xb99f, 0xb9a0, 0xba40, 0xd7ad, 0xc6aa,
+    0xba41, 0xba42, 0xba43, 0xba44, 0xf3f3, 0xba45, 0xba46, 0xba47,
+    0xba48, 0xf3f1, 0xba49, 0xc2a8, 0xba4a, 0xba4b, 0xba4c, 0xba4d,
+    0xba4e, 0xb8dd, 0xf3f5, 0xba4f, 0xba50, 0xf3f4, 0xba51, 0xba52,
+    0xba53, 0xb4db, 0xba54, 0xba55, 0xba56, 0xf3f6, 0xf3f7, 0xba57,
+    0xba58, 0xba59, 0xf3f8, 0xba5a, 0xba5b, 0xba5c, 0xc0ba, 0xba5d,
+    0xba5e, 0xc0e9, 0xba5f, 0xba60, 0xba61, 0xba62, 0xba63, 0xc5f1,
+    0xba64, 0xba65, 0xba66, 0xba67, 0xf3fb, 0xba68, 0xf3fa, 0xba69,
+    /* 0x7c00 .. 0x7cff */
+    0xba6a, 0xba6b, 0xba6c, 0xba6d, 0xba6e, 0xba6f, 0xba70, 0xb4d8,
+    0xba71, 0xba72, 0xba73, 0xf3fe, 0xf3f9, 0xba74, 0xba75, 0xf3fc,
+    0xba76, 0xba77, 0xba78, 0xba79, 0xba7a, 0xba7b, 0xf3fd, 0xba7c,
+    0xba7d, 0xba7e, 0xba80, 0xba81, 0xba82, 0xba83, 0xba84, 0xf4a1,
+    0xba85, 0xba86, 0xba87, 0xba88, 0xba89, 0xba8a, 0xf4a3, 0xbbc9,
+    0xba8b, 0xba8c, 0xf4a2, 0xba8d, 0xba8e, 0xba8f, 0xba90, 0xba91,
+    0xba92, 0xba93, 0xba94, 0xba95, 0xba96, 0xba97, 0xba98, 0xba99,
+    0xf4a4, 0xba9a, 0xba9b, 0xba9c, 0xba9d, 0xba9e, 0xba9f, 0xb2be,
+    0xf4a6, 0xf4a5, 0xbaa0, 0xbb40, 0xbb41, 0xbb42, 0xbb43, 0xbb44,
+    0xbb45, 0xbb46, 0xbb47, 0xbb48, 0xbb49, 0xbcae, 0xbb4a, 0xbb4b,
+    0xbb4c, 0xbb4d, 0xbb4e, 0xbb4f, 0xbb50, 0xbb51, 0xbb52, 0xbb53,
+    0xbb54, 0xbb55, 0xbb56, 0xbb57, 0xbb58, 0xbb59, 0xbb5a, 0xbb5b,
+    0xbb5c, 0xbb5d, 0xbb5e, 0xbb5f, 0xbb60, 0xbb61, 0xbb62, 0xbb63,
+    0xbb64, 0xbb65, 0xbb66, 0xbb67, 0xbb68, 0xbb69, 0xbb6a, 0xbb6b,
+    0xbb6c, 0xbb6d, 0xbb6e, 0xc3d7, 0xd9e1, 0xbb6f, 0xbb70, 0xbb71,
+    0xbb72, 0xbb73, 0xbb74, 0xc0e0, 0xf4cc, 0xd7d1, 0xbb75, 0xbb76,
+    0xbb77, 0xbb78, 0xbb79, 0xbb7a, 0xbb7b, 0xbb7c, 0xbb7d, 0xbb7e,
+    0xbb80, 0xb7db, 0xbb81, 0xbb82, 0xbb83, 0xbb84, 0xbb85, 0xbb86,
+    0xbb87, 0xf4ce, 0xc1a3, 0xbb88, 0xbb89, 0xc6c9, 0xbb8a, 0xb4d6,
+    0xd5b3, 0xbb8b, 0xbb8c, 0xbb8d, 0xf4d0, 0xf4cf, 0xf4d1, 0xcbda,
+    0xbb8e, 0xbb8f, 0xf4d2, 0xbb90, 0xd4c1, 0xd6e0, 0xbb91, 0xbb92,
+    0xbb93, 0xbb94, 0xb7e0, 0xbb95, 0xbb96, 0xbb97, 0xc1b8, 0xbb98,
+    0xbb99, 0xc1bb, 0xf4d3, 0xbeac, 0xbb9a, 0xbb9b, 0xbb9c, 0xbb9d,
+    0xbb9e, 0xb4e2, 0xbb9f, 0xbba0, 0xf4d4, 0xf4d5, 0xbeab, 0xbc40,
+    0xbc41, 0xf4d6, 0xbc42, 0xbc43, 0xbc44, 0xf4db, 0xbc45, 0xf4d7,
+    0xf4da, 0xbc46, 0xbafd, 0xbc47, 0xf4d8, 0xf4d9, 0xbc48, 0xbc49,
+    0xbc4a, 0xbc4b, 0xbc4c, 0xbc4d, 0xbc4e, 0xb8e2, 0xccc7, 0xf4dc,
+    0xbc4f, 0xb2da, 0xbc50, 0xbc51, 0xc3d3, 0xbc52, 0xbc53, 0xd4e3,
+    0xbfb7, 0xbc54, 0xbc55, 0xbc56, 0xbc57, 0xbc58, 0xbc59, 0xbc5a,
+    0xf4dd, 0xbc5b, 0xbc5c, 0xbc5d, 0xbc5e, 0xbc5f, 0xbc60, 0xc5b4,
+    0xbc61, 0xbc62, 0xbc63, 0xbc64, 0xbc65, 0xbc66, 0xbc67, 0xbc68,
+    0xf4e9, 0xbc69, 0xbc6a, 0xcfb5, 0xbc6b, 0xbc6c, 0xbc6d, 0xbc6e,
+    /* 0x7d00 .. 0x7dff */
+    0xbc6f, 0xbc70, 0xbc71, 0xbc72, 0xbc73, 0xbc74, 0xbc75, 0xbc76,
+    0xbc77, 0xbc78, 0xcec9, 0xbc79, 0xbc7a, 0xbc7b, 0xbc7c, 0xbc7d,
+    0xbc7e, 0xbc80, 0xbc81, 0xbc82, 0xbc83, 0xbc84, 0xbc85, 0xbc86,
+    0xbc87, 0xbc88, 0xbc89, 0xbc8a, 0xbc8b, 0xbc8c, 0xbc8d, 0xbc8e,
+    0xcbd8, 0xbc8f, 0xcbf7, 0xbc90, 0xbc91, 0xbc92, 0xbc93, 0xbdf4,
+    0xbc94, 0xbc95, 0xbc96, 0xd7cf, 0xbc97, 0xbc98, 0xbc99, 0xc0db,
+    0xbc9a, 0xbc9b, 0xbc9c, 0xbc9d, 0xbc9e, 0xbc9f, 0xbca0, 0xbd40,
+    0xbd41, 0xbd42, 0xbd43, 0xbd44, 0xbd45, 0xbd46, 0xbd47, 0xbd48,
+    0xbd49, 0xbd4a, 0xbd4b, 0xbd4c, 0xbd4d, 0xbd4e, 0xbd4f, 0xbd50,
+    0xbd51, 0xbd52, 0xbd53, 0xbd54, 0xbd55, 0xbd56, 0xbd57, 0xbd58,
+    0xbd59, 0xbd5a, 0xbd5b, 0xbd5c, 0xbd5d, 0xbd5e, 0xbd5f, 0xbd60,
+    0xbd61, 0xbd62, 0xbd63, 0xbd64, 0xbd65, 0xbd66, 0xbd67, 0xbd68,
+    0xbd69, 0xbd6a, 0xbd6b, 0xbd6c, 0xbd6d, 0xbd6e, 0xbd6f, 0xbd70,
+    0xbd71, 0xbd72, 0xbd73, 0xbd74, 0xbd75, 0xbd76, 0xd0f5, 0xbd77,
+    0xbd78, 0xbd79, 0xbd7a, 0xbd7b, 0xbd7c, 0xbd7d, 0xbd7e, 0xf4ea,
+    0xbd80, 0xbd81, 0xbd82, 0xbd83, 0xbd84, 0xbd85, 0xbd86, 0xbd87,
+    0xbd88, 0xbd89, 0xbd8a, 0xbd8b, 0xbd8c, 0xbd8d, 0xbd8e, 0xbd8f,
+    0xbd90, 0xbd91, 0xbd92, 0xbd93, 0xbd94, 0xbd95, 0xbd96, 0xbd97,
+    0xbd98, 0xbd99, 0xbd9a, 0xbd9b, 0xbd9c, 0xbd9d, 0xbd9e, 0xbd9f,
+    0xbda0, 0xbe40, 0xbe41, 0xbe42, 0xbe43, 0xbe44, 0xbe45, 0xbe46,
+    0xbe47, 0xbe48, 0xbe49, 0xbe4a, 0xbe4b, 0xbe4c, 0xf4eb, 0xbe4d,
+    0xbe4e, 0xbe4f, 0xbe50, 0xbe51, 0xbe52, 0xbe53, 0xf4ec, 0xbe54,
+    0xbe55, 0xbe56, 0xbe57, 0xbe58, 0xbe59, 0xbe5a, 0xbe5b, 0xbe5c,
+    0xbe5d, 0xbe5e, 0xbe5f, 0xbe60, 0xbe61, 0xbe62, 0xbe63, 0xbe64,
+    0xbe65, 0xbe66, 0xbe67, 0xbe68, 0xbe69, 0xbe6a, 0xbe6b, 0xbe6c,
+    0xbe6d, 0xbe6e, 0xbe6f, 0xbe70, 0xbe71, 0xbe72, 0xbe73, 0xbe74,
+    0xbe75, 0xbe76, 0xbe77, 0xbe78, 0xbe79, 0xbe7a, 0xbe7b, 0xbe7c,
+    0xbe7d, 0xbe7e, 0xbe80, 0xbe81, 0xbe82, 0xbe83, 0xbe84, 0xbe85,
+    0xbe86, 0xbe87, 0xbe88, 0xbe89, 0xbe8a, 0xbe8b, 0xbe8c, 0xbe8d,
+    0xbe8e, 0xbe8f, 0xbe90, 0xbe91, 0xbe92, 0xbe93, 0xbe94, 0xbe95,
+    0xbe96, 0xbe97, 0xbe98, 0xbe99, 0xbe9a, 0xbe9b, 0xbe9c, 0xbe9d,
+    0xbe9e, 0xbe9f, 0xbea0, 0xbf40, 0xbf41, 0xbf42, 0xbf43, 0xbf44,
+    /* 0x7e00 .. 0x7eff */
+    0xbf45, 0xbf46, 0xbf47, 0xbf48, 0xbf49, 0xbf4a, 0xbf4b, 0xbf4c,
+    0xbf4d, 0xbf4e, 0xbf4f, 0xbf50, 0xbf51, 0xbf52, 0xbf53, 0xbf54,
+    0xbf55, 0xbf56, 0xbf57, 0xbf58, 0xbf59, 0xbf5a, 0xbf5b, 0xbf5c,
+    0xbf5d, 0xbf5e, 0xbf5f, 0xbf60, 0xbf61, 0xbf62, 0xbf63, 0xbf64,
+    0xbf65, 0xbf66, 0xbf67, 0xbf68, 0xbf69, 0xbf6a, 0xbf6b, 0xbf6c,
+    0xbf6d, 0xbf6e, 0xbf6f, 0xbf70, 0xbf71, 0xbf72, 0xbf73, 0xbf74,
+    0xbf75, 0xbf76, 0xbf77, 0xbf78, 0xbf79, 0xbf7a, 0xbf7b, 0xbf7c,
+    0xbf7d, 0xbf7e, 0xbf80, 0xf7e3, 0xbf81, 0xbf82, 0xbf83, 0xbf84,
+    0xbf85, 0xb7b1, 0xbf86, 0xbf87, 0xbf88, 0xbf89, 0xbf8a, 0xf4ed,
+    0xbf8b, 0xbf8c, 0xbf8d, 0xbf8e, 0xbf8f, 0xbf90, 0xbf91, 0xbf92,
+    0xbf93, 0xbf94, 0xbf95, 0xbf96, 0xbf97, 0xbf98, 0xbf99, 0xbf9a,
+    0xbf9b, 0xbf9c, 0xbf9d, 0xbf9e, 0xbf9f, 0xbfa0, 0xc040, 0xc041,
+    0xc042, 0xc043, 0xc044, 0xc045, 0xc046, 0xc047, 0xc048, 0xc049,
+    0xc04a, 0xc04b, 0xc04c, 0xc04d, 0xc04e, 0xc04f, 0xc050, 0xc051,
+    0xc052, 0xc053, 0xc054, 0xc055, 0xc056, 0xc057, 0xc058, 0xc059,
+    0xc05a, 0xc05b, 0xc05c, 0xc05d, 0xc05e, 0xc05f, 0xc060, 0xc061,
+    0xc062, 0xc063, 0xd7eb, 0xc064, 0xc065, 0xc066, 0xc067, 0xc068,
+    0xc069, 0xc06a, 0xc06b, 0xc06c, 0xc06d, 0xc06e, 0xc06f, 0xc070,
+    0xc071, 0xc072, 0xc073, 0xc074, 0xc075, 0xc076, 0xc077, 0xc078,
+    0xc079, 0xc07a, 0xc07b, 0xf4ee, 0xc07c, 0xc07d, 0xc07e, 0xe6f9,
+    0xbec0, 0xe6fa, 0xbaec, 0xe6fb, 0xcfcb, 0xe6fc, 0xd4bc, 0xbcb6,
+    0xe6fd, 0xe6fe, 0xbccd, 0xc8d2, 0xceb3, 0xe7a1, 0xc080, 0xb4bf,
+    0xe7a2, 0xc9b4, 0xb8d9, 0xc4c9, 0xc081, 0xd7dd, 0xc2da, 0xb7d7,
+    0xd6bd, 0xcec6, 0xb7c4, 0xc082, 0xc083, 0xc5a6, 0xe7a3, 0xcfdf,
+    0xe7a4, 0xe7a5, 0xe7a6, 0xc1b7, 0xd7e9, 0xc9f0, 0xcfb8, 0xd6af,
+    0xd6d5, 0xe7a7, 0xb0ed, 0xe7a8, 0xe7a9, 0xc9dc, 0xd2ef, 0xbead,
+    0xe7aa, 0xb0f3, 0xc8de, 0xbde1, 0xe7ab, 0xc8c6, 0xc084, 0xe7ac,
+    0xbbe6, 0xb8f8, 0xd1a4, 0xe7ad, 0xc2e7, 0xbef8, 0xbdca, 0xcdb3,
+    0xe7ae, 0xe7af, 0xbeee, 0xd0e5, 0xc085, 0xcbe7, 0xccd0, 0xbccc,
+    0xe7b0, 0xbca8, 0xd0f7, 0xe7b1, 0xc086, 0xd0f8, 0xe7b2, 0xe7b3,
+    0xb4c2, 0xe7b4, 0xe7b5, 0xc9fe, 0xceac, 0xc3e0, 0xe7b7, 0xb1c1,
+    0xb3f1, 0xc087, 0xe7b8, 0xe7b9, 0xd7db, 0xd5c0, 0xe7ba, 0xc2cc,
+    /* 0x7f00 .. 0x7fff */
+    0xd7ba, 0xe7bb, 0xe7bc, 0xe7bd, 0xbcea, 0xc3e5, 0xc0c2, 0xe7be,
+    0xe7bf, 0xbca9, 0xc088, 0xe7c0, 0xe7c1, 0xe7b6, 0xb6d0, 0xe7c2,
+    0xc089, 0xe7c3, 0xe7c4, 0xbbba, 0xb5de, 0xc2c6, 0xb1e0, 0xe7c5,
+    0xd4b5, 0xe7c6, 0xb8bf, 0xe7c8, 0xe7c7, 0xb7ec, 0xc08a, 0xe7c9,
+    0xb2f8, 0xe7ca, 0xe7cb, 0xe7cc, 0xe7cd, 0xe7ce, 0xe7cf, 0xe7d0,
+    0xd3a7, 0xcbf5, 0xe7d1, 0xe7d2, 0xe7d3, 0xe7d4, 0xc9c9, 0xe7d5,
+    0xe7d6, 0xe7d7, 0xe7d8, 0xe7d9, 0xbdc9, 0xe7da, 0xf3be, 0xc08b,
+    0xb8d7, 0xc08c, 0xc8b1, 0xc08d, 0xc08e, 0xc08f, 0xc090, 0xc091,
+    0xc092, 0xc093, 0xf3bf, 0xc094, 0xf3c0, 0xf3c1, 0xc095, 0xc096,
+    0xc097, 0xc098, 0xc099, 0xc09a, 0xc09b, 0xc09c, 0xc09d, 0xc09e,
+    0xb9de, 0xcdf8, 0xc09f, 0xc0a0, 0xd8e8, 0xbab1, 0xc140, 0xc2de,
+    0xeeb7, 0xc141, 0xb7a3, 0xc142, 0xc143, 0xc144, 0xc145, 0xeeb9,
+    0xc146, 0xeeb8, 0xb0d5, 0xc147, 0xc148, 0xc149, 0xc14a, 0xc14b,
+    0xeebb, 0xd5d6, 0xd7ef, 0xc14c, 0xc14d, 0xc14e, 0xd6c3, 0xc14f,
+    0xc150, 0xeebd, 0xcaf0, 0xc151, 0xeebc, 0xc152, 0xc153, 0xc154,
+    0xc155, 0xeebe, 0xc156, 0xc157, 0xc158, 0xc159, 0xeec0, 0xc15a,
+    0xc15b, 0xeebf, 0xc15c, 0xc15d, 0xc15e, 0xc15f, 0xc160, 0xc161,
+    0xc162, 0xc163, 0xd1f2, 0xc164, 0xc7bc, 0xc165, 0xc3c0, 0xc166,
+    0xc167, 0xc168, 0xc169, 0xc16a, 0xb8e1, 0xc16b, 0xc16c, 0xc16d,
+    0xc16e, 0xc16f, 0xc1e7, 0xc170, 0xc171, 0xf4c6, 0xd0df, 0xf4c7,
+    0xc172, 0xcfdb, 0xc173, 0xc174, 0xc8ba, 0xc175, 0xc176, 0xf4c8,
+    0xc177, 0xc178, 0xc179, 0xc17a, 0xc17b, 0xc17c, 0xc17d, 0xf4c9,
+    0xf4ca, 0xc17e, 0xf4cb, 0xc180, 0xc181, 0xc182, 0xc183, 0xc184,
+    0xd9fa, 0xb8fe, 0xc185, 0xc186, 0xe5f1, 0xd3f0, 0xc187, 0xf4e0,
+    0xc188, 0xcecc, 0xc189, 0xc18a, 0xc18b, 0xb3e1, 0xc18c, 0xc18d,
+    0xc18e, 0xc18f, 0xf1b4, 0xc190, 0xd2ee, 0xc191, 0xf4e1, 0xc192,
+    0xc193, 0xc194, 0xc195, 0xc196, 0xcfe8, 0xf4e2, 0xc197, 0xc198,
+    0xc7cc, 0xc199, 0xc19a, 0xc19b, 0xc19c, 0xc19d, 0xc19e, 0xb5d4,
+    0xb4e4, 0xf4e4, 0xc19f, 0xc1a0, 0xc240, 0xf4e3, 0xf4e5, 0xc241,
+    0xc242, 0xf4e6, 0xc243, 0xc244, 0xc245, 0xc246, 0xf4e7, 0xc247,
+    0xbab2, 0xb0bf, 0xc248, 0xf4e8, 0xc249, 0xc24a, 0xc24b, 0xc24c,
+    0xc24d, 0xc24e, 0xc24f, 0xb7ad, 0xd2ed, 0xc250, 0xc251, 0xc252,
+    /* 0x8000 .. 0x80ff */
+    0xd2ab, 0xc0cf, 0xc253, 0xbfbc, 0xeba3, 0xd5df, 0xeac8, 0xc254,
+    0xc255, 0xc256, 0xc257, 0xf1f3, 0xb6f8, 0xcba3, 0xc258, 0xc259,
+    0xc4cd, 0xc25a, 0xf1e7, 0xc25b, 0xf1e8, 0xb8fb, 0xf1e9, 0xbac4,
+    0xd4c5, 0xb0d2, 0xc25c, 0xc25d, 0xf1ea, 0xc25e, 0xc25f, 0xc260,
+    0xf1eb, 0xc261, 0xf1ec, 0xc262, 0xc263, 0xf1ed, 0xf1ee, 0xf1ef,
+    0xf1f1, 0xf1f0, 0xc5d5, 0xc264, 0xc265, 0xc266, 0xc267, 0xc268,
+    0xc269, 0xf1f2, 0xc26a, 0xb6fa, 0xc26b, 0xf1f4, 0xd2ae, 0xdec7,
+    0xcbca, 0xc26c, 0xc26d, 0xb3dc, 0xc26e, 0xb5a2, 0xc26f, 0xb9a2,
+    0xc270, 0xc271, 0xc4f4, 0xf1f5, 0xc272, 0xc273, 0xf1f6, 0xc274,
+    0xc275, 0xc276, 0xc1c4, 0xc1fb, 0xd6b0, 0xf1f7, 0xc277, 0xc278,
+    0xc279, 0xc27a, 0xf1f8, 0xc27b, 0xc1aa, 0xc27c, 0xc27d, 0xc27e,
+    0xc6b8, 0xc280, 0xbedb, 0xc281, 0xc282, 0xc283, 0xc284, 0xc285,
+    0xc286, 0xc287, 0xc288, 0xc289, 0xc28a, 0xc28b, 0xc28c, 0xc28d,
+    0xc28e, 0xf1f9, 0xb4cf, 0xc28f, 0xc290, 0xc291, 0xc292, 0xc293,
+    0xc294, 0xf1fa, 0xc295, 0xc296, 0xc297, 0xc298, 0xc299, 0xc29a,
+    0xc29b, 0xc29c, 0xc29d, 0xc29e, 0xc29f, 0xc2a0, 0xc340, 0xedb2,
+    0xedb1, 0xc341, 0xc342, 0xcbe0, 0xd2de, 0xc343, 0xcbc1, 0xd5d8,
+    0xc344, 0xc8e2, 0xc345, 0xc0df, 0xbca1, 0xc346, 0xc347, 0xc348,
+    0xc349, 0xc34a, 0xc34b, 0xebc1, 0xc34c, 0xc34d, 0xd0a4, 0xc34e,
+    0xd6e2, 0xc34f, 0xb6c7, 0xb8d8, 0xebc0, 0xb8ce, 0xc350, 0xebbf,
+    0xb3a6, 0xb9c9, 0xd6ab, 0xc351, 0xb7f4, 0xb7ca, 0xc352, 0xc353,
+    0xc354, 0xbce7, 0xb7be, 0xebc6, 0xc355, 0xebc7, 0xb0b9, 0xbfcf,
+    0xc356, 0xebc5, 0xd3fd, 0xc357, 0xebc8, 0xc358, 0xc359, 0xebc9,
+    0xc35a, 0xc35b, 0xb7ce, 0xc35c, 0xebc2, 0xebc4, 0xc9f6, 0xd6d7,
+    0xd5cd, 0xd0b2, 0xebcf, 0xceb8, 0xebd0, 0xc35d, 0xb5a8, 0xc35e,
+    0xc35f, 0xc360, 0xc361, 0xc362, 0xb1b3, 0xebd2, 0xcca5, 0xc363,
+    0xc364, 0xc365, 0xc366, 0xc367, 0xc368, 0xc369, 0xc5d6, 0xebd3,
+    0xc36a, 0xebd1, 0xc5df, 0xebce, 0xcaa4, 0xebd5, 0xb0fb, 0xc36b,
+    0xc36c, 0xbafa, 0xc36d, 0xc36e, 0xd8b7, 0xf1e3, 0xc36f, 0xebca,
+    0xebcb, 0xebcc, 0xebcd, 0xebd6, 0xe6c0, 0xebd9, 0xc370, 0xbfe8,
+    0xd2c8, 0xebd7, 0xebdc, 0xb8ec, 0xebd8, 0xc371, 0xbdba, 0xc372,
+    0xd0d8, 0xc373, 0xb0b7, 0xc374, 0xebdd, 0xc4dc, 0xc375, 0xc376,
+    /* 0x8100 .. 0x81ff */
+    0xc377, 0xc378, 0xd6ac, 0xc379, 0xc37a, 0xc37b, 0xb4e0, 0xc37c,
+    0xc37d, 0xc2f6, 0xbcb9, 0xc37e, 0xc380, 0xebda, 0xebdb, 0xd4e0,
+    0xc6ea, 0xc4d4, 0xebdf, 0xc5a7, 0xd9f5, 0xc381, 0xb2b1, 0xc382,
+    0xebe4, 0xc383, 0xbdc5, 0xc384, 0xc385, 0xc386, 0xebe2, 0xc387,
+    0xc388, 0xc389, 0xc38a, 0xc38b, 0xc38c, 0xc38d, 0xc38e, 0xc38f,
+    0xc390, 0xc391, 0xc392, 0xc393, 0xebe3, 0xc394, 0xc395, 0xb8ac,
+    0xc396, 0xcdd1, 0xebe5, 0xc397, 0xc398, 0xc399, 0xebe1, 0xc39a,
+    0xc1b3, 0xc39b, 0xc39c, 0xc39d, 0xc39e, 0xc39f, 0xc6a2, 0xc3a0,
+    0xc440, 0xc441, 0xc442, 0xc443, 0xc444, 0xc445, 0xccf3, 0xc446,
+    0xebe6, 0xc447, 0xc0b0, 0xd2b8, 0xebe7, 0xc448, 0xc449, 0xc44a,
+    0xb8af, 0xb8ad, 0xc44b, 0xebe8, 0xc7bb, 0xcdf3, 0xc44c, 0xc44d,
+    0xc44e, 0xebea, 0xebeb, 0xc44f, 0xc450, 0xc451, 0xc452, 0xc453,
+    0xebed, 0xc454, 0xc455, 0xc456, 0xc457, 0xd0c8, 0xc458, 0xebf2,
+    0xc459, 0xebee, 0xc45a, 0xc45b, 0xc45c, 0xebf1, 0xc8f9, 0xc45d,
+    0xd1fc, 0xebec, 0xc45e, 0xc45f, 0xebe9, 0xc460, 0xc461, 0xc462,
+    0xc463, 0xb8b9, 0xcfd9, 0xc4e5, 0xebef, 0xebf0, 0xccda, 0xcdc8,
+    0xb0f2, 0xc464, 0xebf6, 0xc465, 0xc466, 0xc467, 0xc468, 0xc469,
+    0xebf5, 0xc46a, 0xb2b2, 0xc46b, 0xc46c, 0xc46d, 0xc46e, 0xb8e0,
+    0xc46f, 0xebf7, 0xc470, 0xc471, 0xc472, 0xc473, 0xc474, 0xc475,
+    0xb1ec, 0xc476, 0xc477, 0xccc5, 0xc4a4, 0xcfa5, 0xc478, 0xc479,
+    0xc47a, 0xc47b, 0xc47c, 0xebf9, 0xc47d, 0xc47e, 0xeca2, 0xc480,
+    0xc5f2, 0xc481, 0xebfa, 0xc482, 0xc483, 0xc484, 0xc485, 0xc486,
+    0xc487, 0xc488, 0xc489, 0xc9c5, 0xc48a, 0xc48b, 0xc48c, 0xc48d,
+    0xc48e, 0xc48f, 0xe2df, 0xebfe, 0xc490, 0xc491, 0xc492, 0xc493,
+    0xcdce, 0xeca1, 0xb1db, 0xd3b7, 0xc494, 0xc495, 0xd2dc, 0xc496,
+    0xc497, 0xc498, 0xebfd, 0xc499, 0xebfb, 0xc49a, 0xc49b, 0xc49c,
+    0xc49d, 0xc49e, 0xc49f, 0xc4a0, 0xc540, 0xc541, 0xc542, 0xc543,
+    0xc544, 0xc545, 0xc546, 0xc547, 0xc548, 0xc549, 0xc54a, 0xc54b,
+    0xc54c, 0xc54d, 0xc54e, 0xb3bc, 0xc54f, 0xc550, 0xc551, 0xeab0,
+    0xc552, 0xc553, 0xd7d4, 0xc554, 0xf4ab, 0xb3f4, 0xc555, 0xc556,
+    0xc557, 0xc558, 0xc559, 0xd6c1, 0xd6c2, 0xc55a, 0xc55b, 0xc55c,
+    0xc55d, 0xc55e, 0xc55f, 0xd5e9, 0xbeca, 0xc560, 0xf4a7, 0xc561,
+    /* 0x8200 .. 0x82ff */
+    0xd2a8, 0xf4a8, 0xf4a9, 0xc562, 0xf4aa, 0xbecb, 0xd3df, 0xc563,
+    0xc564, 0xc565, 0xc566, 0xc567, 0xc9e0, 0xc9e1, 0xc568, 0xc569,
+    0xf3c2, 0xc56a, 0xcae6, 0xc56b, 0xccf2, 0xc56c, 0xc56d, 0xc56e,
+    0xc56f, 0xc570, 0xc571, 0xe2b6, 0xcbb4, 0xc572, 0xcee8, 0xd6db,
+    0xc573, 0xf4ad, 0xf4ae, 0xf4af, 0xc574, 0xc575, 0xc576, 0xc577,
+    0xf4b2, 0xc578, 0xbabd, 0xf4b3, 0xb0e3, 0xf4b0, 0xc579, 0xf4b1,
+    0xbda2, 0xb2d5, 0xc57a, 0xf4b6, 0xf4b7, 0xb6e6, 0xb2b0, 0xcfcf,
+    0xf4b4, 0xb4ac, 0xc57b, 0xf4b5, 0xc57c, 0xc57d, 0xf4b8, 0xc57e,
+    0xc580, 0xc581, 0xc582, 0xc583, 0xf4b9, 0xc584, 0xc585, 0xcda7,
+    0xc586, 0xf4ba, 0xc587, 0xf4bb, 0xc588, 0xc589, 0xc58a, 0xf4bc,
+    0xc58b, 0xc58c, 0xc58d, 0xc58e, 0xc58f, 0xc590, 0xc591, 0xc592,
+    0xcbd2, 0xc593, 0xf4bd, 0xc594, 0xc595, 0xc596, 0xc597, 0xf4be,
+    0xc598, 0xc599, 0xc59a, 0xc59b, 0xc59c, 0xc59d, 0xc59e, 0xc59f,
+    0xf4bf, 0xc5a0, 0xc640, 0xc641, 0xc642, 0xc643, 0xf4de, 0xc1bc,
+    0xbce8, 0xc644, 0xc9ab, 0xd1de, 0xe5f5, 0xc645, 0xc646, 0xc647,
+    0xc648, 0xdcb3, 0xd2d5, 0xc649, 0xc64a, 0xdcb4, 0xb0ac, 0xdcb5,
+    0xc64b, 0xc64c, 0xbdda, 0xc64d, 0xdcb9, 0xc64e, 0xc64f, 0xc650,
+    0xd8c2, 0xc651, 0xdcb7, 0xd3f3, 0xc652, 0xc9d6, 0xdcba, 0xdcb6,
+    0xc653, 0xdcbb, 0xc3a2, 0xc654, 0xc655, 0xc656, 0xc657, 0xdcbc,
+    0xdcc5, 0xdcbd, 0xc658, 0xc659, 0xcedf, 0xd6a5, 0xc65a, 0xdccf,
+    0xc65b, 0xdccd, 0xc65c, 0xc65d, 0xdcd2, 0xbde6, 0xc2ab, 0xc65e,
+    0xdcb8, 0xdccb, 0xdcce, 0xdcbe, 0xb7d2, 0xb0c5, 0xdcc7, 0xd0be,
+    0xdcc1, 0xbba8, 0xc65f, 0xb7bc, 0xdccc, 0xc660, 0xc661, 0xdcc6,
+    0xdcbf, 0xc7db, 0xc662, 0xc663, 0xc664, 0xd1bf, 0xdcc0, 0xc665,
+    0xc666, 0xdcca, 0xc667, 0xc668, 0xdcd0, 0xc669, 0xc66a, 0xcead,
+    0xdcc2, 0xc66b, 0xdcc3, 0xdcc8, 0xdcc9, 0xb2d4, 0xdcd1, 0xcbd5,
+    0xc66c, 0xd4b7, 0xdcdb, 0xdcdf, 0xcca6, 0xdce6, 0xc66d, 0xc3e7,
+    0xdcdc, 0xc66e, 0xc66f, 0xbfc1, 0xdcd9, 0xc670, 0xb0fa, 0xb9b6,
+    0xdce5, 0xdcd3, 0xc671, 0xdcc4, 0xdcd6, 0xc8f4, 0xbfe0, 0xc672,
+    0xc673, 0xc674, 0xc675, 0xc9bb, 0xc676, 0xc677, 0xc678, 0xb1bd,
+    0xc679, 0xd3a2, 0xc67a, 0xc67b, 0xdcda, 0xc67c, 0xc67d, 0xdcd5,
+    0xc67e, 0xc6bb, 0xc680, 0xdcde, 0xc681, 0xc682, 0xc683, 0xc684,
+    /* 0x8300 .. 0x83ff */
+    0xc685, 0xd7c2, 0xc3af, 0xb7b6, 0xc7d1, 0xc3a9, 0xdce2, 0xdcd8,
+    0xdceb, 0xdcd4, 0xc686, 0xc687, 0xdcdd, 0xc688, 0xbea5, 0xdcd7,
+    0xc689, 0xdce0, 0xc68a, 0xc68b, 0xdce3, 0xdce4, 0xc68c, 0xdcf8,
+    0xc68d, 0xc68e, 0xdce1, 0xdda2, 0xdce7, 0xc68f, 0xc690, 0xc691,
+    0xc692, 0xc693, 0xc694, 0xc695, 0xc696, 0xc697, 0xc698, 0xbceb,
+    0xb4c4, 0xc699, 0xc69a, 0xc3a3, 0xb2e7, 0xdcfa, 0xc69b, 0xdcf2,
+    0xc69c, 0xdcef, 0xc69d, 0xdcfc, 0xdcee, 0xd2f0, 0xb2e8, 0xc69e,
+    0xc8d7, 0xc8e3, 0xdcfb, 0xc69f, 0xdced, 0xc6a0, 0xc740, 0xc741,
+    0xdcf7, 0xc742, 0xc743, 0xdcf5, 0xc744, 0xc745, 0xbea3, 0xdcf4,
+    0xc746, 0xb2dd, 0xc747, 0xc748, 0xc749, 0xc74a, 0xc74b, 0xdcf3,
+    0xbcf6, 0xdce8, 0xbbc4, 0xc74c, 0xc0f3, 0xc74d, 0xc74e, 0xc74f,
+    0xc750, 0xc751, 0xbcd4, 0xdce9, 0xdcea, 0xc752, 0xdcf1, 0xdcf6,
+    0xdcf9, 0xb5b4, 0xc753, 0xc8d9, 0xbbe7, 0xdcfe, 0xdcfd, 0xd3ab,
+    0xdda1, 0xdda3, 0xdda5, 0xd2f1, 0xdda4, 0xdda6, 0xdda7, 0xd2a9,
+    0xc754, 0xc755, 0xc756, 0xc757, 0xc758, 0xc759, 0xc75a, 0xbac9,
+    0xdda9, 0xc75b, 0xc75c, 0xddb6, 0xddb1, 0xddb4, 0xc75d, 0xc75e,
+    0xc75f, 0xc760, 0xc761, 0xc762, 0xc763, 0xddb0, 0xc6ce, 0xc764,
+    0xc765, 0xc0f2, 0xc766, 0xc767, 0xc768, 0xc769, 0xc9af, 0xc76a,
+    0xc76b, 0xc76c, 0xdcec, 0xddae, 0xc76d, 0xc76e, 0xc76f, 0xc770,
+    0xddb7, 0xc771, 0xc772, 0xdcf0, 0xddaf, 0xc773, 0xddb8, 0xc774,
+    0xddac, 0xc775, 0xc776, 0xc777, 0xc778, 0xc779, 0xc77a, 0xc77b,
+    0xddb9, 0xddb3, 0xddad, 0xc4aa, 0xc77c, 0xc77d, 0xc77e, 0xc780,
+    0xdda8, 0xc0b3, 0xc1ab, 0xddaa, 0xddab, 0xc781, 0xddb2, 0xbbf1,
+    0xddb5, 0xd3a8, 0xddba, 0xc782, 0xddbb, 0xc3a7, 0xc783, 0xc784,
+    0xddd2, 0xddbc, 0xc785, 0xc786, 0xc787, 0xddd1, 0xc788, 0xb9bd,
+    0xc789, 0xc78a, 0xbed5, 0xc78b, 0xbefa, 0xc78c, 0xc78d, 0xbaca,
+    0xc78e, 0xc78f, 0xc790, 0xc791, 0xddca, 0xc792, 0xddc5, 0xc793,
+    0xddbf, 0xc794, 0xc795, 0xc796, 0xb2cb, 0xddc3, 0xc797, 0xddcb,
+    0xb2a4, 0xddd5, 0xc798, 0xc799, 0xc79a, 0xddbe, 0xc79b, 0xc79c,
+    0xc79d, 0xc6d0, 0xddd0, 0xc79e, 0xc79f, 0xc7a0, 0xc840, 0xc841,
+    0xddd4, 0xc1e2, 0xb7c6, 0xc842, 0xc843, 0xc844, 0xc845, 0xc846,
+    0xddce, 0xddcf, 0xc847, 0xc848, 0xc849, 0xddc4, 0xc84a, 0xc84b,
+    /* 0x8400 .. 0x84ff */
+    0xc84c, 0xddbd, 0xc84d, 0xddcd, 0xccd1, 0xc84e, 0xddc9, 0xc84f,
+    0xc850, 0xc851, 0xc852, 0xddc2, 0xc3c8, 0xc6bc, 0xceae, 0xddcc,
+    0xc853, 0xddc8, 0xc854, 0xc855, 0xc856, 0xc857, 0xc858, 0xc859,
+    0xddc1, 0xc85a, 0xc85b, 0xc85c, 0xddc6, 0xc2dc, 0xc85d, 0xc85e,
+    0xc85f, 0xc860, 0xc861, 0xc862, 0xd3a9, 0xd3aa, 0xddd3, 0xcff4,
+    0xc8f8, 0xc863, 0xc864, 0xc865, 0xc866, 0xc867, 0xc868, 0xc869,
+    0xc86a, 0xdde6, 0xc86b, 0xc86c, 0xc86d, 0xc86e, 0xc86f, 0xc870,
+    0xddc7, 0xc871, 0xc872, 0xc873, 0xdde0, 0xc2e4, 0xc874, 0xc875,
+    0xc876, 0xc877, 0xc878, 0xc879, 0xc87a, 0xc87b, 0xdde1, 0xc87c,
+    0xc87d, 0xc87e, 0xc880, 0xc881, 0xc882, 0xc883, 0xc884, 0xc885,
+    0xc886, 0xddd7, 0xc887, 0xc888, 0xc889, 0xc88a, 0xc88b, 0xd6f8,
+    0xc88c, 0xddd9, 0xddd8, 0xb8f0, 0xddd6, 0xc88d, 0xc88e, 0xc88f,
+    0xc890, 0xc6cf, 0xc891, 0xb6ad, 0xc892, 0xc893, 0xc894, 0xc895,
+    0xc896, 0xdde2, 0xc897, 0xbaf9, 0xd4e1, 0xdde7, 0xc898, 0xc899,
+    0xc89a, 0xb4d0, 0xc89b, 0xddda, 0xc89c, 0xbffb, 0xdde3, 0xc89d,
+    0xdddf, 0xc89e, 0xdddd, 0xc89f, 0xc8a0, 0xc940, 0xc941, 0xc942,
+    0xc943, 0xc944, 0xb5d9, 0xc945, 0xc946, 0xc947, 0xc948, 0xdddb,
+    0xdddc, 0xddde, 0xc949, 0xbdaf, 0xdde4, 0xc94a, 0xdde5, 0xc94b,
+    0xc94c, 0xc94d, 0xc94e, 0xc94f, 0xc950, 0xc951, 0xc952, 0xddf5,
+    0xc953, 0xc3c9, 0xc954, 0xc955, 0xcbe2, 0xc956, 0xc957, 0xc958,
+    0xc959, 0xddf2, 0xc95a, 0xc95b, 0xc95c, 0xc95d, 0xc95e, 0xc95f,
+    0xc960, 0xc961, 0xc962, 0xc963, 0xc964, 0xc965, 0xc966, 0xd8e1,
+    0xc967, 0xc968, 0xc6d1, 0xc969, 0xddf4, 0xc96a, 0xc96b, 0xc96c,
+    0xd5f4, 0xddf3, 0xddf0, 0xc96d, 0xc96e, 0xddec, 0xc96f, 0xddef,
+    0xc970, 0xdde8, 0xc971, 0xc972, 0xd0ee, 0xc973, 0xc974, 0xc975,
+    0xc976, 0xc8d8, 0xddee, 0xc977, 0xc978, 0xdde9, 0xc979, 0xc97a,
+    0xddea, 0xcbf2, 0xc97b, 0xdded, 0xc97c, 0xc97d, 0xb1cd, 0xc97e,
+    0xc980, 0xc981, 0xc982, 0xc983, 0xc984, 0xc0b6, 0xc985, 0xbcbb,
+    0xddf1, 0xc986, 0xc987, 0xddf7, 0xc988, 0xddf6, 0xddeb, 0xc989,
+    0xc98a, 0xc98b, 0xc98c, 0xc98d, 0xc5ee, 0xc98e, 0xc98f, 0xc990,
+    0xddfb, 0xc991, 0xc992, 0xc993, 0xc994, 0xc995, 0xc996, 0xc997,
+    0xc998, 0xc999, 0xc99a, 0xc99b, 0xdea4, 0xc99c, 0xc99d, 0xdea3,
+    /* 0x8500 .. 0x85ff */
+    0xc99e, 0xc99f, 0xc9a0, 0xca40, 0xca41, 0xca42, 0xca43, 0xca44,
+    0xca45, 0xca46, 0xca47, 0xca48, 0xddf8, 0xca49, 0xca4a, 0xca4b,
+    0xca4c, 0xc3ef, 0xca4d, 0xc2fb, 0xca4e, 0xca4f, 0xca50, 0xd5e1,
+    0xca51, 0xca52, 0xceb5, 0xca53, 0xca54, 0xca55, 0xca56, 0xddfd,
+    0xca57, 0xb2cc, 0xca58, 0xca59, 0xca5a, 0xca5b, 0xca5c, 0xca5d,
+    0xca5e, 0xca5f, 0xca60, 0xc4e8, 0xcadf, 0xca61, 0xca62, 0xca63,
+    0xca64, 0xca65, 0xca66, 0xca67, 0xca68, 0xca69, 0xca6a, 0xc7be,
+    0xddfa, 0xddfc, 0xddfe, 0xdea2, 0xb0aa, 0xb1ce, 0xca6b, 0xca6c,
+    0xca6d, 0xca6e, 0xca6f, 0xdeac, 0xca70, 0xca71, 0xca72, 0xca73,
+    0xdea6, 0xbdb6, 0xc8ef, 0xca74, 0xca75, 0xca76, 0xca77, 0xca78,
+    0xca79, 0xca7a, 0xca7b, 0xca7c, 0xca7d, 0xca7e, 0xdea1, 0xca80,
+    0xca81, 0xdea5, 0xca82, 0xca83, 0xca84, 0xca85, 0xdea9, 0xca86,
+    0xca87, 0xca88, 0xca89, 0xca8a, 0xdea8, 0xca8b, 0xca8c, 0xca8d,
+    0xdea7, 0xca8e, 0xca8f, 0xca90, 0xca91, 0xca92, 0xca93, 0xca94,
+    0xca95, 0xca96, 0xdead, 0xca97, 0xd4cc, 0xca98, 0xca99, 0xca9a,
+    0xca9b, 0xdeb3, 0xdeaa, 0xdeae, 0xca9c, 0xca9d, 0xc0d9, 0xca9e,
+    0xca9f, 0xcaa0, 0xcb40, 0xcb41, 0xb1a1, 0xdeb6, 0xcb42, 0xdeb1,
+    0xcb43, 0xcb44, 0xcb45, 0xcb46, 0xcb47, 0xcb48, 0xcb49, 0xdeb2,
+    0xcb4a, 0xcb4b, 0xcb4c, 0xcb4d, 0xcb4e, 0xcb4f, 0xcb50, 0xcb51,
+    0xcb52, 0xcb53, 0xcb54, 0xd1a6, 0xdeb5, 0xcb55, 0xcb56, 0xcb57,
+    0xcb58, 0xcb59, 0xcb5a, 0xcb5b, 0xdeaf, 0xcb5c, 0xcb5d, 0xcb5e,
+    0xdeb0, 0xcb5f, 0xd0bd, 0xcb60, 0xcb61, 0xcb62, 0xdeb4, 0xcaed,
+    0xdeb9, 0xcb63, 0xcb64, 0xcb65, 0xcb66, 0xcb67, 0xcb68, 0xdeb8,
+    0xcb69, 0xdeb7, 0xcb6a, 0xcb6b, 0xcb6c, 0xcb6d, 0xcb6e, 0xcb6f,
+    0xcb70, 0xdebb, 0xcb71, 0xcb72, 0xcb73, 0xcb74, 0xcb75, 0xcb76,
+    0xcb77, 0xbde5, 0xcb78, 0xcb79, 0xcb7a, 0xcb7b, 0xcb7c, 0xb2d8,
+    0xc3ea, 0xcb7d, 0xcb7e, 0xdeba, 0xcb80, 0xc5ba, 0xcb81, 0xcb82,
+    0xcb83, 0xcb84, 0xcb85, 0xcb86, 0xdebc, 0xcb87, 0xcb88, 0xcb89,
+    0xcb8a, 0xcb8b, 0xcb8c, 0xcb8d, 0xccd9, 0xcb8e, 0xcb8f, 0xcb90,
+    0xcb91, 0xb7aa, 0xcb92, 0xcb93, 0xcb94, 0xcb95, 0xcb96, 0xcb97,
+    0xcb98, 0xcb99, 0xcb9a, 0xcb9b, 0xcb9c, 0xcb9d, 0xcb9e, 0xcb9f,
+    0xcba0, 0xcc40, 0xcc41, 0xd4e5, 0xcc42, 0xcc43, 0xcc44, 0xdebd,
+    /* 0x8600 .. 0x86ff */
+    0xcc45, 0xcc46, 0xcc47, 0xcc48, 0xcc49, 0xdebf, 0xcc4a, 0xcc4b,
+    0xcc4c, 0xcc4d, 0xcc4e, 0xcc4f, 0xcc50, 0xcc51, 0xcc52, 0xcc53,
+    0xcc54, 0xc4a2, 0xcc55, 0xcc56, 0xcc57, 0xcc58, 0xdec1, 0xcc59,
+    0xcc5a, 0xcc5b, 0xcc5c, 0xcc5d, 0xcc5e, 0xcc5f, 0xcc60, 0xcc61,
+    0xcc62, 0xcc63, 0xcc64, 0xcc65, 0xcc66, 0xcc67, 0xcc68, 0xdebe,
+    0xcc69, 0xdec0, 0xcc6a, 0xcc6b, 0xcc6c, 0xcc6d, 0xcc6e, 0xcc6f,
+    0xcc70, 0xcc71, 0xcc72, 0xcc73, 0xcc74, 0xcc75, 0xcc76, 0xcc77,
+    0xd5ba, 0xcc78, 0xcc79, 0xcc7a, 0xdec2, 0xcc7b, 0xcc7c, 0xcc7d,
+    0xcc7e, 0xcc80, 0xcc81, 0xcc82, 0xcc83, 0xcc84, 0xcc85, 0xcc86,
+    0xcc87, 0xcc88, 0xcc89, 0xcc8a, 0xcc8b, 0xf2ae, 0xbba2, 0xc2b2,
+    0xc5b0, 0xc2c7, 0xcc8c, 0xcc8d, 0xf2af, 0xcc8e, 0xcc8f, 0xcc90,
+    0xcc91, 0xcc92, 0xd0e9, 0xcc93, 0xcc94, 0xcc95, 0xd3dd, 0xcc96,
+    0xcc97, 0xcc98, 0xebbd, 0xcc99, 0xcc9a, 0xcc9b, 0xcc9c, 0xcc9d,
+    0xcc9e, 0xcc9f, 0xcca0, 0xb3e6, 0xf2b0, 0xcd40, 0xf2b1, 0xcd41,
+    0xcd42, 0xcaad, 0xcd43, 0xcd44, 0xcd45, 0xcd46, 0xcd47, 0xcd48,
+    0xcd49, 0xbae7, 0xf2b3, 0xf2b5, 0xf2b4, 0xcbe4, 0xcfba, 0xf2b2,
+    0xcab4, 0xd2cf, 0xc2ec, 0xcd4a, 0xcd4b, 0xcd4c, 0xcd4d, 0xcd4e,
+    0xcd4f, 0xcd50, 0xcec3, 0xf2b8, 0xb0f6, 0xf2b7, 0xcd51, 0xcd52,
+    0xcd53, 0xcd54, 0xcd55, 0xf2be, 0xcd56, 0xb2cf, 0xcd57, 0xcd58,
+    0xcd59, 0xcd5a, 0xcd5b, 0xcd5c, 0xd1c1, 0xf2ba, 0xcd5d, 0xcd5e,
+    0xcd5f, 0xcd60, 0xcd61, 0xf2bc, 0xd4e9, 0xcd62, 0xcd63, 0xf2bb,
+    0xf2b6, 0xf2bf, 0xf2bd, 0xcd64, 0xf2b9, 0xcd65, 0xcd66, 0xf2c7,
+    0xf2c4, 0xf2c6, 0xcd67, 0xcd68, 0xf2ca, 0xf2c2, 0xf2c0, 0xcd69,
+    0xcd6a, 0xcd6b, 0xf2c5, 0xcd6c, 0xcd6d, 0xcd6e, 0xcd6f, 0xcd70,
+    0xd6fb, 0xcd71, 0xcd72, 0xcd73, 0xf2c1, 0xcd74, 0xc7f9, 0xc9df,
+    0xcd75, 0xf2c8, 0xb9c6, 0xb5b0, 0xcd76, 0xcd77, 0xf2c3, 0xf2c9,
+    0xf2d0, 0xf2d6, 0xcd78, 0xcd79, 0xbbd7, 0xcd7a, 0xcd7b, 0xcd7c,
+    0xf2d5, 0xcddc, 0xcd7d, 0xd6eb, 0xcd7e, 0xcd80, 0xf2d2, 0xf2d4,
+    0xcd81, 0xcd82, 0xcd83, 0xcd84, 0xb8f2, 0xcd85, 0xcd86, 0xcd87,
+    0xcd88, 0xf2cb, 0xcd89, 0xcd8a, 0xcd8b, 0xf2ce, 0xc2f9, 0xcd8c,
+    0xd5dd, 0xf2cc, 0xf2cd, 0xf2cf, 0xf2d3, 0xcd8d, 0xcd8e, 0xcd8f,
+    0xf2d9, 0xd3bc, 0xcd90, 0xcd91, 0xcd92, 0xcd93, 0xb6ea, 0xcd94,
+    /* 0x8700 .. 0x87ff */
+    0xcaf1, 0xcd95, 0xb7e4, 0xf2d7, 0xcd96, 0xcd97, 0xcd98, 0xf2d8,
+    0xf2da, 0xf2dd, 0xf2db, 0xcd99, 0xcd9a, 0xf2dc, 0xcd9b, 0xcd9c,
+    0xcd9d, 0xcd9e, 0xd1d1, 0xf2d1, 0xcd9f, 0xcdc9, 0xcda0, 0xcecf,
+    0xd6a9, 0xce40, 0xf2e3, 0xce41, 0xc3db, 0xce42, 0xf2e0, 0xce43,
+    0xce44, 0xc0af, 0xf2ec, 0xf2de, 0xce45, 0xf2e1, 0xce46, 0xce47,
+    0xce48, 0xf2e8, 0xce49, 0xce4a, 0xce4b, 0xce4c, 0xf2e2, 0xce4d,
+    0xce4e, 0xf2e7, 0xce4f, 0xce50, 0xf2e6, 0xce51, 0xce52, 0xf2e9,
+    0xce53, 0xce54, 0xce55, 0xf2df, 0xce56, 0xce57, 0xf2e4, 0xf2ea,
+    0xce58, 0xce59, 0xce5a, 0xce5b, 0xce5c, 0xce5d, 0xce5e, 0xd3ac,
+    0xf2e5, 0xb2f5, 0xce5f, 0xce60, 0xf2f2, 0xce61, 0xd0ab, 0xce62,
+    0xce63, 0xce64, 0xce65, 0xf2f5, 0xce66, 0xce67, 0xce68, 0xbbc8,
+    0xce69, 0xf2f9, 0xce6a, 0xce6b, 0xce6c, 0xce6d, 0xce6e, 0xce6f,
+    0xf2f0, 0xce70, 0xce71, 0xf2f6, 0xf2f8, 0xf2fa, 0xce72, 0xce73,
+    0xce74, 0xce75, 0xce76, 0xce77, 0xce78, 0xce79, 0xf2f3, 0xce7a,
+    0xf2f1, 0xce7b, 0xce7c, 0xce7d, 0xbafb, 0xce7e, 0xb5fb, 0xce80,
+    0xce81, 0xce82, 0xce83, 0xf2ef, 0xf2f7, 0xf2ed, 0xf2ee, 0xce84,
+    0xce85, 0xce86, 0xf2eb, 0xf3a6, 0xce87, 0xf3a3, 0xce88, 0xce89,
+    0xf3a2, 0xce8a, 0xce8b, 0xf2f4, 0xce8c, 0xc8da, 0xce8d, 0xce8e,
+    0xce8f, 0xce90, 0xce91, 0xf2fb, 0xce92, 0xce93, 0xce94, 0xf3a5,
+    0xce95, 0xce96, 0xce97, 0xce98, 0xce99, 0xce9a, 0xce9b, 0xc3f8,
+    0xce9c, 0xce9d, 0xce9e, 0xce9f, 0xcea0, 0xcf40, 0xcf41, 0xcf42,
+    0xf2fd, 0xcf43, 0xcf44, 0xf3a7, 0xf3a9, 0xf3a4, 0xcf45, 0xf2fc,
+    0xcf46, 0xcf47, 0xcf48, 0xf3ab, 0xcf49, 0xf3aa, 0xcf4a, 0xcf4b,
+    0xcf4c, 0xcf4d, 0xc2dd, 0xcf4e, 0xcf4f, 0xf3ae, 0xcf50, 0xcf51,
+    0xf3b0, 0xcf52, 0xcf53, 0xcf54, 0xcf55, 0xcf56, 0xf3a1, 0xcf57,
+    0xcf58, 0xcf59, 0xf3b1, 0xf3ac, 0xcf5a, 0xcf5b, 0xcf5c, 0xcf5d,
+    0xcf5e, 0xf3af, 0xf2fe, 0xf3ad, 0xcf5f, 0xcf60, 0xcf61, 0xcf62,
+    0xcf63, 0xcf64, 0xcf65, 0xf3b2, 0xcf66, 0xcf67, 0xcf68, 0xcf69,
+    0xf3b4, 0xcf6a, 0xcf6b, 0xcf6c, 0xcf6d, 0xf3a8, 0xcf6e, 0xcf6f,
+    0xcf70, 0xcf71, 0xf3b3, 0xcf72, 0xcf73, 0xcf74, 0xf3b5, 0xcf75,
+    0xcf76, 0xcf77, 0xcf78, 0xcf79, 0xcf7a, 0xcf7b, 0xcf7c, 0xcf7d,
+    0xcf7e, 0xd0b7, 0xcf80, 0xcf81, 0xcf82, 0xcf83, 0xf3b8, 0xcf84,
+    /* 0x8800 .. 0x88ff */
+    0xcf85, 0xcf86, 0xcf87, 0xd9f9, 0xcf88, 0xcf89, 0xcf8a, 0xcf8b,
+    0xcf8c, 0xcf8d, 0xf3b9, 0xcf8e, 0xcf8f, 0xcf90, 0xcf91, 0xcf92,
+    0xcf93, 0xcf94, 0xcf95, 0xf3b7, 0xcf96, 0xc8e4, 0xf3b6, 0xcf97,
+    0xcf98, 0xcf99, 0xcf9a, 0xf3ba, 0xcf9b, 0xcf9c, 0xcf9d, 0xcf9e,
+    0xcf9f, 0xf3bb, 0xb4c0, 0xcfa0, 0xd040, 0xd041, 0xd042, 0xd043,
+    0xd044, 0xd045, 0xd046, 0xd047, 0xd048, 0xd049, 0xd04a, 0xd04b,
+    0xd04c, 0xd04d, 0xeec3, 0xd04e, 0xd04f, 0xd050, 0xd051, 0xd052,
+    0xd053, 0xf3bc, 0xd054, 0xd055, 0xf3bd, 0xd056, 0xd057, 0xd058,
+    0xd1aa, 0xd059, 0xd05a, 0xd05b, 0xf4ac, 0xd0c6, 0xd05c, 0xd05d,
+    0xd05e, 0xd05f, 0xd060, 0xd061, 0xd0d0, 0xd1dc, 0xd062, 0xd063,
+    0xd064, 0xd065, 0xd066, 0xd067, 0xcfce, 0xd068, 0xd069, 0xbdd6,
+    0xd06a, 0xd1c3, 0xd06b, 0xd06c, 0xd06d, 0xd06e, 0xd06f, 0xd070,
+    0xd071, 0xbae2, 0xe1e9, 0xd2c2, 0xf1c2, 0xb2b9, 0xd072, 0xd073,
+    0xb1ed, 0xf1c3, 0xd074, 0xc9c0, 0xb3c4, 0xd075, 0xd9f2, 0xd076,
+    0xcba5, 0xd077, 0xf1c4, 0xd078, 0xd079, 0xd07a, 0xd07b, 0xd6d4,
+    0xd07c, 0xd07d, 0xd07e, 0xd080, 0xd081, 0xf1c5, 0xf4c0, 0xf1c6,
+    0xd082, 0xd4ac, 0xf1c7, 0xd083, 0xb0c0, 0xf4c1, 0xd084, 0xd085,
+    0xf4c2, 0xd086, 0xd087, 0xb4fc, 0xd088, 0xc5db, 0xd089, 0xd08a,
+    0xd08b, 0xd08c, 0xccbb, 0xd08d, 0xd08e, 0xd08f, 0xd0e4, 0xd090,
+    0xd091, 0xd092, 0xd093, 0xd094, 0xcde0, 0xd095, 0xd096, 0xd097,
+    0xd098, 0xd099, 0xf1c8, 0xd09a, 0xd9f3, 0xd09b, 0xd09c, 0xd09d,
+    0xd09e, 0xd09f, 0xd0a0, 0xb1bb, 0xd140, 0xcfae, 0xd141, 0xd142,
+    0xd143, 0xb8a4, 0xd144, 0xd145, 0xd146, 0xd147, 0xd148, 0xf1ca,
+    0xd149, 0xd14a, 0xd14b, 0xd14c, 0xf1cb, 0xd14d, 0xd14e, 0xd14f,
+    0xd150, 0xb2c3, 0xc1d1, 0xd151, 0xd152, 0xd7b0, 0xf1c9, 0xd153,
+    0xd154, 0xf1cc, 0xd155, 0xd156, 0xd157, 0xd158, 0xf1ce, 0xd159,
+    0xd15a, 0xd15b, 0xd9f6, 0xd15c, 0xd2e1, 0xd4a3, 0xd15d, 0xd15e,
+    0xf4c3, 0xc8b9, 0xd15f, 0xd160, 0xd161, 0xd162, 0xd163, 0xf4c4,
+    0xd164, 0xd165, 0xf1cd, 0xf1cf, 0xbfe3, 0xf1d0, 0xd166, 0xd167,
+    0xf1d4, 0xd168, 0xd169, 0xd16a, 0xd16b, 0xd16c, 0xd16d, 0xd16e,
+    0xf1d6, 0xf1d1, 0xd16f, 0xc9d1, 0xc5e1, 0xd170, 0xd171, 0xd172,
+    0xc2e3, 0xb9fc, 0xd173, 0xd174, 0xf1d3, 0xd175, 0xf1d5, 0xd176,
+    /* 0x8900 .. 0x89ff */
+    0xd177, 0xd178, 0xb9d3, 0xd179, 0xd17a, 0xd17b, 0xd17c, 0xd17d,
+    0xd17e, 0xd180, 0xf1db, 0xd181, 0xd182, 0xd183, 0xd184, 0xd185,
+    0xbad6, 0xd186, 0xb0fd, 0xf1d9, 0xd187, 0xd188, 0xd189, 0xd18a,
+    0xd18b, 0xf1d8, 0xf1d2, 0xf1da, 0xd18c, 0xd18d, 0xd18e, 0xd18f,
+    0xd190, 0xf1d7, 0xd191, 0xd192, 0xd193, 0xc8ec, 0xd194, 0xd195,
+    0xd196, 0xd197, 0xcdca, 0xf1dd, 0xd198, 0xd199, 0xd19a, 0xd19b,
+    0xe5bd, 0xd19c, 0xd19d, 0xd19e, 0xf1dc, 0xd19f, 0xf1de, 0xd1a0,
+    0xd240, 0xd241, 0xd242, 0xd243, 0xd244, 0xd245, 0xd246, 0xd247,
+    0xd248, 0xf1df, 0xd249, 0xd24a, 0xcfe5, 0xd24b, 0xd24c, 0xd24d,
+    0xd24e, 0xd24f, 0xd250, 0xd251, 0xd252, 0xd253, 0xd254, 0xd255,
+    0xd256, 0xd257, 0xd258, 0xd259, 0xd25a, 0xd25b, 0xd25c, 0xd25d,
+    0xd25e, 0xd25f, 0xd260, 0xd261, 0xd262, 0xd263, 0xf4c5, 0xbdf3,
+    0xd264, 0xd265, 0xd266, 0xd267, 0xd268, 0xd269, 0xf1e0, 0xd26a,
+    0xd26b, 0xd26c, 0xd26d, 0xd26e, 0xd26f, 0xd270, 0xd271, 0xd272,
+    0xd273, 0xd274, 0xd275, 0xd276, 0xd277, 0xd278, 0xd279, 0xd27a,
+    0xd27b, 0xd27c, 0xd27d, 0xf1e1, 0xd27e, 0xd280, 0xd281, 0xcef7,
+    0xd282, 0xd2aa, 0xd283, 0xf1fb, 0xd284, 0xd285, 0xb8b2, 0xd286,
+    0xd287, 0xd288, 0xd289, 0xd28a, 0xd28b, 0xd28c, 0xd28d, 0xd28e,
+    0xd28f, 0xd290, 0xd291, 0xd292, 0xd293, 0xd294, 0xd295, 0xd296,
+    0xd297, 0xd298, 0xd299, 0xd29a, 0xd29b, 0xd29c, 0xd29d, 0xd29e,
+    0xd29f, 0xd2a0, 0xd340, 0xd341, 0xd342, 0xd343, 0xd344, 0xd345,
+    0xd346, 0xd347, 0xd348, 0xd349, 0xd34a, 0xd34b, 0xd34c, 0xd34d,
+    0xd34e, 0xd34f, 0xd350, 0xd351, 0xd352, 0xd353, 0xd354, 0xd355,
+    0xd356, 0xd357, 0xd358, 0xd359, 0xd35a, 0xd35b, 0xd35c, 0xd35d,
+    0xd35e, 0xbcfb, 0xb9db, 0xd35f, 0xb9e6, 0xc3d9, 0xcad3, 0xeae8,
+    0xc0c0, 0xbef5, 0xeae9, 0xeaea, 0xeaeb, 0xd360, 0xeaec, 0xeaed,
+    0xeaee, 0xeaef, 0xbdc7, 0xd361, 0xd362, 0xd363, 0xf5fb, 0xd364,
+    0xd365, 0xd366, 0xf5fd, 0xd367, 0xf5fe, 0xd368, 0xf5fc, 0xd369,
+    0xd36a, 0xd36b, 0xd36c, 0xbde2, 0xd36d, 0xf6a1, 0xb4a5, 0xd36e,
+    0xd36f, 0xd370, 0xd371, 0xf6a2, 0xd372, 0xd373, 0xd374, 0xf6a3,
+    0xd375, 0xd376, 0xd377, 0xecb2, 0xd378, 0xd379, 0xd37a, 0xd37b,
+    0xd37c, 0xd37d, 0xd37e, 0xd380, 0xd381, 0xd382, 0xd383, 0xd384,
+    /* 0x8a00 .. 0x8aff */
+    0xd1d4, 0xd385, 0xd386, 0xd387, 0xd388, 0xd389, 0xd38a, 0xd9ea,
+    0xd38b, 0xd38c, 0xd38d, 0xd38e, 0xd38f, 0xd390, 0xd391, 0xd392,
+    0xd393, 0xd394, 0xd395, 0xd396, 0xd397, 0xd398, 0xd399, 0xd39a,
+    0xd39b, 0xd39c, 0xd39d, 0xd39e, 0xd39f, 0xd3a0, 0xd440, 0xd441,
+    0xd442, 0xd443, 0xd444, 0xd445, 0xd446, 0xd447, 0xd448, 0xd449,
+    0xd44a, 0xd44b, 0xd44c, 0xd44d, 0xd44e, 0xd44f, 0xd450, 0xd451,
+    0xd452, 0xd453, 0xd454, 0xd455, 0xd456, 0xd457, 0xd458, 0xd459,
+    0xd45a, 0xd45b, 0xd45c, 0xd45d, 0xd45e, 0xd45f, 0xf6a4, 0xd460,
+    0xd461, 0xd462, 0xd463, 0xd464, 0xd465, 0xd466, 0xd467, 0xd468,
+    0xeeba, 0xd469, 0xd46a, 0xd46b, 0xd46c, 0xd46d, 0xd46e, 0xd46f,
+    0xd470, 0xd471, 0xd472, 0xd473, 0xd474, 0xd475, 0xd476, 0xd477,
+    0xd478, 0xd479, 0xd47a, 0xd47b, 0xd47c, 0xd47d, 0xd47e, 0xd480,
+    0xd481, 0xd482, 0xd483, 0xd484, 0xd485, 0xd486, 0xd487, 0xd488,
+    0xd489, 0xd48a, 0xd48b, 0xd48c, 0xd48d, 0xd48e, 0xd48f, 0xd490,
+    0xd491, 0xd492, 0xd493, 0xd494, 0xd495, 0xd496, 0xd497, 0xd498,
+    0xd499, 0xd5b2, 0xd49a, 0xd49b, 0xd49c, 0xd49d, 0xd49e, 0xd49f,
+    0xd4a0, 0xd540, 0xd541, 0xd542, 0xd543, 0xd544, 0xd545, 0xd546,
+    0xd547, 0xd3fe, 0xccdc, 0xd548, 0xd549, 0xd54a, 0xd54b, 0xd54c,
+    0xd54d, 0xd54e, 0xd54f, 0xcac4, 0xd550, 0xd551, 0xd552, 0xd553,
+    0xd554, 0xd555, 0xd556, 0xd557, 0xd558, 0xd559, 0xd55a, 0xd55b,
+    0xd55c, 0xd55d, 0xd55e, 0xd55f, 0xd560, 0xd561, 0xd562, 0xd563,
+    0xd564, 0xd565, 0xd566, 0xd567, 0xd568, 0xd569, 0xd56a, 0xd56b,
+    0xd56c, 0xd56d, 0xd56e, 0xd56f, 0xd570, 0xd571, 0xd572, 0xd573,
+    0xd574, 0xd575, 0xd576, 0xd577, 0xd578, 0xd579, 0xd57a, 0xd57b,
+    0xd57c, 0xd57d, 0xd57e, 0xd580, 0xd581, 0xd582, 0xd583, 0xd584,
+    0xd585, 0xd586, 0xd587, 0xd588, 0xd589, 0xd58a, 0xd58b, 0xd58c,
+    0xd58d, 0xd58e, 0xd58f, 0xd590, 0xd591, 0xd592, 0xd593, 0xd594,
+    0xd595, 0xd596, 0xd597, 0xd598, 0xd599, 0xd59a, 0xd59b, 0xd59c,
+    0xd59d, 0xd59e, 0xd59f, 0xd5a0, 0xd640, 0xd641, 0xd642, 0xd643,
+    0xd644, 0xd645, 0xd646, 0xd647, 0xd648, 0xd649, 0xd64a, 0xd64b,
+    0xd64c, 0xd64d, 0xd64e, 0xd64f, 0xd650, 0xd651, 0xd652, 0xd653,
+    0xd654, 0xd655, 0xd656, 0xd657, 0xd658, 0xd659, 0xd65a, 0xd65b,
+    /* 0x8b00 .. 0x8bff */
+    0xd65c, 0xd65d, 0xd65e, 0xd65f, 0xd660, 0xd661, 0xd662, 0xe5c0,
+    0xd663, 0xd664, 0xd665, 0xd666, 0xd667, 0xd668, 0xd669, 0xd66a,
+    0xd66b, 0xd66c, 0xd66d, 0xd66e, 0xd66f, 0xd670, 0xd671, 0xd672,
+    0xd673, 0xd674, 0xd675, 0xd676, 0xd677, 0xd678, 0xd679, 0xd67a,
+    0xd67b, 0xd67c, 0xd67d, 0xd67e, 0xd680, 0xd681, 0xf6a5, 0xd682,
+    0xd683, 0xd684, 0xd685, 0xd686, 0xd687, 0xd688, 0xd689, 0xd68a,
+    0xd68b, 0xd68c, 0xd68d, 0xd68e, 0xd68f, 0xd690, 0xd691, 0xd692,
+    0xd693, 0xd694, 0xd695, 0xd696, 0xd697, 0xd698, 0xd699, 0xd69a,
+    0xd69b, 0xd69c, 0xd69d, 0xd69e, 0xd69f, 0xd6a0, 0xd740, 0xd741,
+    0xd742, 0xd743, 0xd744, 0xd745, 0xd746, 0xd747, 0xd748, 0xd749,
+    0xd74a, 0xd74b, 0xd74c, 0xd74d, 0xd74e, 0xd74f, 0xd750, 0xd751,
+    0xd752, 0xd753, 0xd754, 0xd755, 0xd756, 0xd757, 0xd758, 0xd759,
+    0xd75a, 0xd75b, 0xd75c, 0xd75d, 0xd75e, 0xd75f, 0xbeaf, 0xd760,
+    0xd761, 0xd762, 0xd763, 0xd764, 0xc6a9, 0xd765, 0xd766, 0xd767,
+    0xd768, 0xd769, 0xd76a, 0xd76b, 0xd76c, 0xd76d, 0xd76e, 0xd76f,
+    0xd770, 0xd771, 0xd772, 0xd773, 0xd774, 0xd775, 0xd776, 0xd777,
+    0xd778, 0xd779, 0xd77a, 0xd77b, 0xd77c, 0xd77d, 0xd77e, 0xd780,
+    0xd781, 0xd782, 0xd783, 0xd784, 0xd785, 0xd786, 0xd787, 0xd788,
+    0xd789, 0xd78a, 0xd78b, 0xd78c, 0xd78d, 0xd78e, 0xd78f, 0xd790,
+    0xd791, 0xd792, 0xd793, 0xd794, 0xd795, 0xd796, 0xd797, 0xd798,
+    0xdaa5, 0xbcc6, 0xb6a9, 0xb8bc, 0xc8cf, 0xbca5, 0xdaa6, 0xdaa7,
+    0xccd6, 0xc8c3, 0xdaa8, 0xc6fd, 0xd799, 0xd1b5, 0xd2e9, 0xd1b6,
+    0xbcc7, 0xd79a, 0xbdb2, 0xbbe4, 0xdaa9, 0xdaaa, 0xd1c8, 0xdaab,
+    0xd0ed, 0xb6ef, 0xc2db, 0xd79b, 0xcbcf, 0xb7ed, 0xc9e8, 0xb7c3,
+    0xbef7, 0xd6a4, 0xdaac, 0xdaad, 0xc6c0, 0xd7e7, 0xcab6, 0xd79c,
+    0xd5a9, 0xcbdf, 0xd5ef, 0xdaae, 0xd6df, 0xb4ca, 0xdab0, 0xdaaf,
+    0xd79d, 0xd2eb, 0xdab1, 0xdab2, 0xdab3, 0xcad4, 0xdab4, 0xcaab,
+    0xdab5, 0xdab6, 0xb3cf, 0xd6ef, 0xdab7, 0xbbb0, 0xb5ae, 0xdab8,
+    0xdab9, 0xb9ee, 0xd1af, 0xd2e8, 0xdaba, 0xb8c3, 0xcfea, 0xb2ef,
+    0xdabb, 0xdabc, 0xd79e, 0xbdeb, 0xcedc, 0xd3ef, 0xdabd, 0xcef3,
+    0xdabe, 0xd3d5, 0xbbe5, 0xdabf, 0xcbb5, 0xcbd0, 0xdac0, 0xc7eb,
+    0xd6ee, 0xdac1, 0xc5b5, 0xb6c1, 0xdac2, 0xb7cc, 0xbfce, 0xdac3,
+    /* 0x8c00 .. 0x8cff */
+    0xdac4, 0xcbad, 0xdac5, 0xb5f7, 0xdac6, 0xc1c2, 0xd7bb, 0xdac7,
+    0xccb8, 0xd79f, 0xd2ea, 0xc4b1, 0xdac8, 0xb5fd, 0xbbd1, 0xdac9,
+    0xd0b3, 0xdaca, 0xdacb, 0xcebd, 0xdacc, 0xdacd, 0xdace, 0xb2f7,
+    0xdad1, 0xdacf, 0xd1e8, 0xdad0, 0xc3d5, 0xdad2, 0xd7a0, 0xdad3,
+    0xdad4, 0xdad5, 0xd0bb, 0xd2a5, 0xb0f9, 0xdad6, 0xc7ab, 0xdad7,
+    0xbdf7, 0xc3a1, 0xdad8, 0xdad9, 0xc3fd, 0xccb7, 0xdada, 0xdadb,
+    0xc0be, 0xc6d7, 0xdadc, 0xdadd, 0xc7b4, 0xdade, 0xdadf, 0xb9c8,
+    0xd840, 0xd841, 0xd842, 0xd843, 0xd844, 0xd845, 0xd846, 0xd847,
+    0xd848, 0xbbed, 0xd849, 0xd84a, 0xd84b, 0xd84c, 0xb6b9, 0xf4f8,
+    0xd84d, 0xf4f9, 0xd84e, 0xd84f, 0xcde3, 0xd850, 0xd851, 0xd852,
+    0xd853, 0xd854, 0xd855, 0xd856, 0xd857, 0xf5b9, 0xd858, 0xd859,
+    0xd85a, 0xd85b, 0xebe0, 0xd85c, 0xd85d, 0xd85e, 0xd85f, 0xd860,
+    0xd861, 0xcff3, 0xbbbf, 0xd862, 0xd863, 0xd864, 0xd865, 0xd866,
+    0xd867, 0xd868, 0xbac0, 0xd4a5, 0xd869, 0xd86a, 0xd86b, 0xd86c,
+    0xd86d, 0xd86e, 0xd86f, 0xe1d9, 0xd870, 0xd871, 0xd872, 0xd873,
+    0xf5f4, 0xb1aa, 0xb2f2, 0xd874, 0xd875, 0xd876, 0xd877, 0xd878,
+    0xd879, 0xd87a, 0xf5f5, 0xd87b, 0xd87c, 0xf5f7, 0xd87d, 0xd87e,
+    0xd880, 0xbad1, 0xf5f6, 0xd881, 0xc3b2, 0xd882, 0xd883, 0xd884,
+    0xd885, 0xd886, 0xd887, 0xd888, 0xf5f9, 0xd889, 0xd88a, 0xd88b,
+    0xf5f8, 0xd88c, 0xd88d, 0xd88e, 0xd88f, 0xd890, 0xd891, 0xd892,
+    0xd893, 0xd894, 0xd895, 0xd896, 0xd897, 0xd898, 0xd899, 0xd89a,
+    0xd89b, 0xd89c, 0xd89d, 0xd89e, 0xd89f, 0xd8a0, 0xd940, 0xd941,
+    0xd942, 0xd943, 0xd944, 0xd945, 0xd946, 0xd947, 0xd948, 0xd949,
+    0xd94a, 0xd94b, 0xd94c, 0xd94d, 0xd94e, 0xd94f, 0xd950, 0xd951,
+    0xd952, 0xd953, 0xd954, 0xd955, 0xd956, 0xd957, 0xd958, 0xd959,
+    0xd95a, 0xd95b, 0xd95c, 0xd95d, 0xd95e, 0xd95f, 0xd960, 0xd961,
+    0xd962, 0xd963, 0xd964, 0xd965, 0xd966, 0xd967, 0xd968, 0xd969,
+    0xd96a, 0xd96b, 0xd96c, 0xd96d, 0xd96e, 0xd96f, 0xd970, 0xd971,
+    0xd972, 0xd973, 0xd974, 0xd975, 0xd976, 0xd977, 0xd978, 0xd979,
+    0xd97a, 0xd97b, 0xd97c, 0xd97d, 0xd97e, 0xd980, 0xd981, 0xd982,
+    0xd983, 0xd984, 0xd985, 0xd986, 0xd987, 0xd988, 0xd989, 0xd98a,
+    0xd98b, 0xd98c, 0xd98d, 0xd98e, 0xd98f, 0xd990, 0xd991, 0xd992,
+    /* 0x8d00 .. 0x8dff */
+    0xd993, 0xd994, 0xd995, 0xd996, 0xd997, 0xd998, 0xd999, 0xd99a,
+    0xd99b, 0xd99c, 0xd99d, 0xd99e, 0xd99f, 0xd9a0, 0xda40, 0xda41,
+    0xda42, 0xda43, 0xda44, 0xda45, 0xda46, 0xda47, 0xda48, 0xda49,
+    0xda4a, 0xda4b, 0xda4c, 0xda4d, 0xda4e, 0xb1b4, 0xd5ea, 0xb8ba,
+    0xda4f, 0xb9b1, 0xb2c6, 0xd4f0, 0xcfcd, 0xb0dc, 0xd5cb, 0xbbf5,
+    0xd6ca, 0xb7b7, 0xccb0, 0xc6b6, 0xb1e1, 0xb9ba, 0xd6fc, 0xb9e1,
+    0xb7a1, 0xbcfa, 0xeada, 0xeadb, 0xccf9, 0xb9f3, 0xeadc, 0xb4fb,
+    0xc3b3, 0xb7d1, 0xbad8, 0xeadd, 0xd4f4, 0xeade, 0xbcd6, 0xbbdf,
+    0xeadf, 0xc1de, 0xc2b8, 0xd4df, 0xd7ca, 0xeae0, 0xeae1, 0xeae4,
+    0xeae2, 0xeae3, 0xc9de, 0xb8b3, 0xb6c4, 0xeae5, 0xcaea, 0xc9cd,
+    0xb4cd, 0xda50, 0xda51, 0xe2d9, 0xc5e2, 0xeae6, 0xc0b5, 0xda52,
+    0xd7b8, 0xeae7, 0xd7ac, 0xc8fc, 0xd8d3, 0xd8cd, 0xd4de, 0xda53,
+    0xd4f9, 0xc9c4, 0xd3ae, 0xb8d3, 0xb3e0, 0xda54, 0xc9e2, 0xf4f6,
+    0xda55, 0xda56, 0xda57, 0xbad5, 0xda58, 0xf4f7, 0xda59, 0xda5a,
+    0xd7df, 0xda5b, 0xda5c, 0xf4f1, 0xb8b0, 0xd5d4, 0xb8cf, 0xc6f0,
+    0xda5d, 0xda5e, 0xda5f, 0xda60, 0xda61, 0xda62, 0xda63, 0xda64,
+    0xda65, 0xb3c3, 0xda66, 0xda67, 0xf4f2, 0xb3ac, 0xda68, 0xda69,
+    0xda6a, 0xda6b, 0xd4bd, 0xc7f7, 0xda6c, 0xda6d, 0xda6e, 0xda6f,
+    0xda70, 0xf4f4, 0xda71, 0xda72, 0xf4f3, 0xda73, 0xda74, 0xda75,
+    0xda76, 0xda77, 0xda78, 0xda79, 0xda7a, 0xda7b, 0xda7c, 0xcccb,
+    0xda7d, 0xda7e, 0xda80, 0xc8a4, 0xda81, 0xda82, 0xda83, 0xda84,
+    0xda85, 0xda86, 0xda87, 0xda88, 0xda89, 0xda8a, 0xda8b, 0xda8c,
+    0xda8d, 0xf4f5, 0xda8e, 0xd7e3, 0xc5bf, 0xf5c0, 0xda8f, 0xda90,
+    0xf5bb, 0xda91, 0xf5c3, 0xda92, 0xf5c2, 0xda93, 0xd6ba, 0xf5c1,
+    0xda94, 0xda95, 0xda96, 0xd4be, 0xf5c4, 0xda97, 0xf5cc, 0xda98,
+    0xda99, 0xda9a, 0xda9b, 0xb0cf, 0xb5f8, 0xda9c, 0xf5c9, 0xf5ca,
+    0xda9d, 0xc5dc, 0xda9e, 0xda9f, 0xdaa0, 0xdb40, 0xf5c5, 0xf5c6,
+    0xdb41, 0xdb42, 0xf5c7, 0xf5cb, 0xdb43, 0xbee0, 0xf5c8, 0xb8fa,
+    0xdb44, 0xdb45, 0xdb46, 0xf5d0, 0xf5d3, 0xdb47, 0xdb48, 0xdb49,
+    0xbfe7, 0xdb4a, 0xb9f2, 0xf5bc, 0xf5cd, 0xdb4b, 0xdb4c, 0xc2b7,
+    0xdb4d, 0xdb4e, 0xdb4f, 0xccf8, 0xdb50, 0xbcf9, 0xdb51, 0xf5ce,
+    0xf5cf, 0xf5d1, 0xb6e5, 0xf5d2, 0xdb52, 0xf5d5, 0xdb53, 0xdb54,
+    /* 0x8e00 .. 0x8eff */
+    0xdb55, 0xdb56, 0xdb57, 0xdb58, 0xdb59, 0xf5bd, 0xdb5a, 0xdb5b,
+    0xdb5c, 0xf5d4, 0xd3bb, 0xdb5d, 0xb3ec, 0xdb5e, 0xdb5f, 0xcca4,
+    0xdb60, 0xdb61, 0xdb62, 0xdb63, 0xf5d6, 0xdb64, 0xdb65, 0xdb66,
+    0xdb67, 0xdb68, 0xdb69, 0xdb6a, 0xdb6b, 0xf5d7, 0xbee1, 0xf5d8,
+    0xdb6c, 0xdb6d, 0xccdf, 0xf5db, 0xdb6e, 0xdb6f, 0xdb70, 0xdb71,
+    0xdb72, 0xb2c8, 0xd7d9, 0xdb73, 0xf5d9, 0xdb74, 0xf5da, 0xf5dc,
+    0xdb75, 0xf5e2, 0xdb76, 0xdb77, 0xdb78, 0xf5e0, 0xdb79, 0xdb7a,
+    0xdb7b, 0xf5df, 0xf5dd, 0xdb7c, 0xdb7d, 0xf5e1, 0xdb7e, 0xdb80,
+    0xf5de, 0xf5e4, 0xf5e5, 0xdb81, 0xcce3, 0xdb82, 0xdb83, 0xe5bf,
+    0xb5b8, 0xf5e3, 0xf5e8, 0xcca3, 0xdb84, 0xdb85, 0xdb86, 0xdb87,
+    0xdb88, 0xf5e6, 0xf5e7, 0xdb89, 0xdb8a, 0xdb8b, 0xdb8c, 0xdb8d,
+    0xdb8e, 0xf5be, 0xdb8f, 0xdb90, 0xdb91, 0xdb92, 0xdb93, 0xdb94,
+    0xdb95, 0xdb96, 0xdb97, 0xdb98, 0xdb99, 0xdb9a, 0xb1c4, 0xdb9b,
+    0xdb9c, 0xf5bf, 0xdb9d, 0xdb9e, 0xb5c5, 0xb2e4, 0xdb9f, 0xf5ec,
+    0xf5e9, 0xdba0, 0xb6d7, 0xdc40, 0xf5ed, 0xdc41, 0xf5ea, 0xdc42,
+    0xdc43, 0xdc44, 0xdc45, 0xdc46, 0xf5eb, 0xdc47, 0xdc48, 0xb4da,
+    0xdc49, 0xd4ea, 0xdc4a, 0xdc4b, 0xdc4c, 0xf5ee, 0xdc4d, 0xb3f9,
+    0xdc4e, 0xdc4f, 0xdc50, 0xdc51, 0xdc52, 0xdc53, 0xdc54, 0xf5ef,
+    0xf5f1, 0xdc55, 0xdc56, 0xdc57, 0xf5f0, 0xdc58, 0xdc59, 0xdc5a,
+    0xdc5b, 0xdc5c, 0xdc5d, 0xdc5e, 0xf5f2, 0xdc5f, 0xf5f3, 0xdc60,
+    0xdc61, 0xdc62, 0xdc63, 0xdc64, 0xdc65, 0xdc66, 0xdc67, 0xdc68,
+    0xdc69, 0xdc6a, 0xdc6b, 0xc9ed, 0xb9aa, 0xdc6c, 0xdc6d, 0xc7fb,
+    0xdc6e, 0xdc6f, 0xb6e3, 0xdc70, 0xdc71, 0xdc72, 0xdc73, 0xdc74,
+    0xdc75, 0xdc76, 0xccc9, 0xdc77, 0xdc78, 0xdc79, 0xdc7a, 0xdc7b,
+    0xdc7c, 0xdc7d, 0xdc7e, 0xdc80, 0xdc81, 0xdc82, 0xdc83, 0xdc84,
+    0xdc85, 0xdc86, 0xdc87, 0xdc88, 0xdc89, 0xdc8a, 0xeaa6, 0xdc8b,
+    0xdc8c, 0xdc8d, 0xdc8e, 0xdc8f, 0xdc90, 0xdc91, 0xdc92, 0xdc93,
+    0xdc94, 0xdc95, 0xdc96, 0xdc97, 0xdc98, 0xdc99, 0xdc9a, 0xdc9b,
+    0xdc9c, 0xdc9d, 0xdc9e, 0xdc9f, 0xdca0, 0xdd40, 0xdd41, 0xdd42,
+    0xdd43, 0xdd44, 0xdd45, 0xdd46, 0xdd47, 0xdd48, 0xdd49, 0xdd4a,
+    0xdd4b, 0xdd4c, 0xdd4d, 0xdd4e, 0xdd4f, 0xdd50, 0xdd51, 0xdd52,
+    0xdd53, 0xdd54, 0xdd55, 0xdd56, 0xdd57, 0xdd58, 0xdd59, 0xdd5a,
+    /* 0x8f00 .. 0x8fff */
+    0xdd5b, 0xdd5c, 0xdd5d, 0xdd5e, 0xdd5f, 0xdd60, 0xdd61, 0xdd62,
+    0xdd63, 0xdd64, 0xdd65, 0xdd66, 0xdd67, 0xdd68, 0xdd69, 0xdd6a,
+    0xdd6b, 0xdd6c, 0xdd6d, 0xdd6e, 0xdd6f, 0xdd70, 0xdd71, 0xdd72,
+    0xdd73, 0xdd74, 0xdd75, 0xdd76, 0xdd77, 0xdd78, 0xdd79, 0xdd7a,
+    0xdd7b, 0xdd7c, 0xdd7d, 0xdd7e, 0xdd80, 0xdd81, 0xdd82, 0xdd83,
+    0xdd84, 0xdd85, 0xdd86, 0xdd87, 0xdd88, 0xdd89, 0xdd8a, 0xdd8b,
+    0xdd8c, 0xdd8d, 0xdd8e, 0xdd8f, 0xdd90, 0xdd91, 0xdd92, 0xdd93,
+    0xdd94, 0xdd95, 0xdd96, 0xdd97, 0xdd98, 0xdd99, 0xdd9a, 0xdd9b,
+    0xdd9c, 0xdd9d, 0xdd9e, 0xdd9f, 0xdda0, 0xde40, 0xde41, 0xde42,
+    0xde43, 0xde44, 0xde45, 0xde46, 0xde47, 0xde48, 0xde49, 0xde4a,
+    0xde4b, 0xde4c, 0xde4d, 0xde4e, 0xde4f, 0xde50, 0xde51, 0xde52,
+    0xde53, 0xde54, 0xde55, 0xde56, 0xde57, 0xde58, 0xde59, 0xde5a,
+    0xde5b, 0xde5c, 0xde5d, 0xde5e, 0xde5f, 0xde60, 0xb3b5, 0xd4fe,
+    0xb9ec, 0xd0f9, 0xde61, 0xe9ed, 0xd7aa, 0xe9ee, 0xc2d6, 0xc8ed,
+    0xbae4, 0xe9ef, 0xe9f0, 0xe9f1, 0xd6e1, 0xe9f2, 0xe9f3, 0xe9f5,
+    0xe9f4, 0xe9f6, 0xe9f7, 0xc7e1, 0xe9f8, 0xd4d8, 0xe9f9, 0xbdce,
+    0xde62, 0xe9fa, 0xe9fb, 0xbdcf, 0xe9fc, 0xb8a8, 0xc1be, 0xe9fd,
+    0xb1b2, 0xbbd4, 0xb9f5, 0xe9fe, 0xde63, 0xeaa1, 0xeaa2, 0xeaa3,
+    0xb7f8, 0xbcad, 0xde64, 0xcae4, 0xe0ce, 0xd4af, 0xcfbd, 0xd5b7,
+    0xeaa4, 0xd5de, 0xeaa5, 0xd0c1, 0xb9bc, 0xde65, 0xb4c7, 0xb1d9,
+    0xde66, 0xde67, 0xde68, 0xc0b1, 0xde69, 0xde6a, 0xde6b, 0xde6c,
+    0xb1e6, 0xb1e7, 0xde6d, 0xb1e8, 0xde6e, 0xde6f, 0xde70, 0xde71,
+    0xb3bd, 0xc8e8, 0xde72, 0xde73, 0xde74, 0xde75, 0xe5c1, 0xde76,
+    0xde77, 0xb1df, 0xde78, 0xde79, 0xde7a, 0xc1c9, 0xb4ef, 0xde7b,
+    0xde7c, 0xc7a8, 0xd3d8, 0xde7d, 0xc6f9, 0xd1b8, 0xde7e, 0xb9fd,
+    0xc2f5, 0xde80, 0xde81, 0xde82, 0xde83, 0xde84, 0xd3ad, 0xde85,
+    0xd4cb, 0xbdfc, 0xde86, 0xe5c2, 0xb7b5, 0xe5c3, 0xde87, 0xde88,
+    0xbbb9, 0xd5e2, 0xde89, 0xbdf8, 0xd4b6, 0xcea5, 0xc1ac, 0xb3d9,
+    0xde8a, 0xde8b, 0xccf6, 0xde8c, 0xe5c6, 0xe5c4, 0xe5c8, 0xde8d,
+    0xe5ca, 0xe5c7, 0xb5cf, 0xc6c8, 0xde8e, 0xb5fc, 0xe5c5, 0xde8f,
+    0xcaf6, 0xde90, 0xde91, 0xe5c9, 0xde92, 0xde93, 0xde94, 0xc3d4,
+    0xb1c5, 0xbca3, 0xde95, 0xde96, 0xde97, 0xd7b7, 0xde98, 0xde99,
+    /* 0x9000 .. 0x90ff */
+    0xcdcb, 0xcbcd, 0xcaca, 0xccd3, 0xe5cc, 0xe5cb, 0xc4e6, 0xde9a,
+    0xde9b, 0xd1a1, 0xd1b7, 0xe5cd, 0xde9c, 0xe5d0, 0xde9d, 0xcdb8,
+    0xd6f0, 0xe5cf, 0xb5dd, 0xde9e, 0xcdbe, 0xde9f, 0xe5d1, 0xb6ba,
+    0xdea0, 0xdf40, 0xcda8, 0xb9e4, 0xdf41, 0xcac5, 0xb3d1, 0xcbd9,
+    0xd4ec, 0xe5d2, 0xb7ea, 0xdf42, 0xdf43, 0xdf44, 0xe5ce, 0xdf45,
+    0xdf46, 0xdf47, 0xdf48, 0xdf49, 0xdf4a, 0xe5d5, 0xb4fe, 0xe5d6,
+    0xdf4b, 0xdf4c, 0xdf4d, 0xdf4e, 0xdf4f, 0xe5d3, 0xe5d4, 0xdf50,
+    0xd2dd, 0xdf51, 0xdf52, 0xc2df, 0xb1c6, 0xdf53, 0xd3e2, 0xdf54,
+    0xdf55, 0xb6dd, 0xcbec, 0xdf56, 0xe5d7, 0xdf57, 0xdf58, 0xd3f6,
+    0xdf59, 0xdf5a, 0xdf5b, 0xdf5c, 0xdf5d, 0xb1e9, 0xdf5e, 0xb6f4,
+    0xe5da, 0xe5d8, 0xe5d9, 0xb5c0, 0xdf5f, 0xdf60, 0xdf61, 0xd2c5,
+    0xe5dc, 0xdf62, 0xdf63, 0xe5de, 0xdf64, 0xdf65, 0xdf66, 0xdf67,
+    0xdf68, 0xdf69, 0xe5dd, 0xc7b2, 0xdf6a, 0xd2a3, 0xdf6b, 0xdf6c,
+    0xe5db, 0xdf6d, 0xdf6e, 0xdf6f, 0xdf70, 0xd4e2, 0xd5da, 0xdf71,
+    0xdf72, 0xdf73, 0xdf74, 0xdf75, 0xe5e0, 0xd7f1, 0xdf76, 0xdf77,
+    0xdf78, 0xdf79, 0xdf7a, 0xdf7b, 0xdf7c, 0xe5e1, 0xdf7d, 0xb1dc,
+    0xd1fb, 0xdf7e, 0xe5e2, 0xe5e4, 0xdf80, 0xdf81, 0xdf82, 0xdf83,
+    0xe5e3, 0xdf84, 0xdf85, 0xe5e5, 0xdf86, 0xdf87, 0xdf88, 0xdf89,
+    0xdf8a, 0xd2d8, 0xdf8b, 0xb5cb, 0xdf8c, 0xe7df, 0xdf8d, 0xdaf5,
+    0xdf8e, 0xdaf8, 0xdf8f, 0xdaf6, 0xdf90, 0xdaf7, 0xdf91, 0xdf92,
+    0xdf93, 0xdafa, 0xd0cf, 0xc4c7, 0xdf94, 0xdf95, 0xb0ee, 0xdf96,
+    0xdf97, 0xdf98, 0xd0b0, 0xdf99, 0xdaf9, 0xdf9a, 0xd3ca, 0xbaaa,
+    0xdba2, 0xc7f1, 0xdf9b, 0xdafc, 0xdafb, 0xc9db, 0xdafd, 0xdf9c,
+    0xdba1, 0xd7de, 0xdafe, 0xc1da, 0xdf9d, 0xdf9e, 0xdba5, 0xdf9f,
+    0xdfa0, 0xd3f4, 0xe040, 0xe041, 0xdba7, 0xdba4, 0xe042, 0xdba8,
+    0xe043, 0xe044, 0xbdbc, 0xe045, 0xe046, 0xe047, 0xc0c9, 0xdba3,
+    0xdba6, 0xd6a3, 0xe048, 0xdba9, 0xe049, 0xe04a, 0xe04b, 0xdbad,
+    0xe04c, 0xe04d, 0xe04e, 0xdbae, 0xdbac, 0xbac2, 0xe04f, 0xe050,
+    0xe051, 0xbfa4, 0xdbab, 0xe052, 0xe053, 0xe054, 0xdbaa, 0xd4c7,
+    0xb2bf, 0xe055, 0xe056, 0xdbaf, 0xe057, 0xb9f9, 0xe058, 0xdbb0,
+    0xe059, 0xe05a, 0xe05b, 0xe05c, 0xb3bb, 0xe05d, 0xe05e, 0xe05f,
+    0xb5a6, 0xe060, 0xe061, 0xe062, 0xe063, 0xb6bc, 0xdbb1, 0xe064,
+    /* 0x9100 .. 0x91ff */
+    0xe065, 0xe066, 0xb6f5, 0xe067, 0xdbb2, 0xe068, 0xe069, 0xe06a,
+    0xe06b, 0xe06c, 0xe06d, 0xe06e, 0xe06f, 0xe070, 0xe071, 0xe072,
+    0xe073, 0xe074, 0xe075, 0xe076, 0xe077, 0xe078, 0xe079, 0xe07a,
+    0xe07b, 0xb1c9, 0xe07c, 0xe07d, 0xe07e, 0xe080, 0xdbb4, 0xe081,
+    0xe082, 0xe083, 0xdbb3, 0xdbb5, 0xe084, 0xe085, 0xe086, 0xe087,
+    0xe088, 0xe089, 0xe08a, 0xe08b, 0xe08c, 0xe08d, 0xe08e, 0xdbb7,
+    0xe08f, 0xdbb6, 0xe090, 0xe091, 0xe092, 0xe093, 0xe094, 0xe095,
+    0xe096, 0xdbb8, 0xe097, 0xe098, 0xe099, 0xe09a, 0xe09b, 0xe09c,
+    0xe09d, 0xe09e, 0xe09f, 0xdbb9, 0xe0a0, 0xe140, 0xdbba, 0xe141,
+    0xe142, 0xd3cf, 0xf4fa, 0xc7f5, 0xd7c3, 0xc5e4, 0xf4fc, 0xf4fd,
+    0xf4fb, 0xe143, 0xbec6, 0xe144, 0xe145, 0xe146, 0xe147, 0xd0ef,
+    0xe148, 0xe149, 0xb7d3, 0xe14a, 0xe14b, 0xd4cd, 0xccaa, 0xe14c,
+    0xe14d, 0xf5a2, 0xf5a1, 0xbaa8, 0xf4fe, 0xcbd6, 0xe14e, 0xe14f,
+    0xe150, 0xf5a4, 0xc0d2, 0xe151, 0xb3ea, 0xe152, 0xcdaa, 0xf5a5,
+    0xf5a3, 0xbdb4, 0xf5a8, 0xe153, 0xf5a9, 0xbdcd, 0xc3b8, 0xbfe1,
+    0xcbe1, 0xf5aa, 0xe154, 0xe155, 0xe156, 0xf5a6, 0xf5a7, 0xc4f0,
+    0xe157, 0xe158, 0xe159, 0xe15a, 0xe15b, 0xf5ac, 0xe15c, 0xb4bc,
+    0xe15d, 0xd7ed, 0xe15e, 0xb4d7, 0xf5ab, 0xf5ae, 0xe15f, 0xe160,
+    0xf5ad, 0xf5af, 0xd0d1, 0xe161, 0xe162, 0xe163, 0xe164, 0xe165,
+    0xe166, 0xe167, 0xc3d1, 0xc8a9, 0xe168, 0xe169, 0xe16a, 0xe16b,
+    0xe16c, 0xe16d, 0xf5b0, 0xf5b1, 0xe16e, 0xe16f, 0xe170, 0xe171,
+    0xe172, 0xe173, 0xf5b2, 0xe174, 0xe175, 0xf5b3, 0xf5b4, 0xf5b5,
+    0xe176, 0xe177, 0xe178, 0xe179, 0xf5b7, 0xf5b6, 0xe17a, 0xe17b,
+    0xe17c, 0xe17d, 0xf5b8, 0xe17e, 0xe180, 0xe181, 0xe182, 0xe183,
+    0xe184, 0xe185, 0xe186, 0xe187, 0xe188, 0xe189, 0xe18a, 0xb2c9,
+    0xe18b, 0xd3d4, 0xcacd, 0xe18c, 0xc0ef, 0xd6d8, 0xd2b0, 0xc1bf,
+    0xe18d, 0xbdf0, 0xe18e, 0xe18f, 0xe190, 0xe191, 0xe192, 0xe193,
+    0xe194, 0xe195, 0xe196, 0xe197, 0xb8aa, 0xe198, 0xe199, 0xe19a,
+    0xe19b, 0xe19c, 0xe19d, 0xe19e, 0xe19f, 0xe1a0, 0xe240, 0xe241,
+    0xe242, 0xe243, 0xe244, 0xe245, 0xe246, 0xe247, 0xe248, 0xe249,
+    0xe24a, 0xe24b, 0xe24c, 0xe24d, 0xe24e, 0xe24f, 0xe250, 0xe251,
+    0xe252, 0xe253, 0xe254, 0xe255, 0xe256, 0xe257, 0xe258, 0xe259,
+    /* 0x9200 .. 0x92ff */
+    0xe25a, 0xe25b, 0xe25c, 0xe25d, 0xe25e, 0xe25f, 0xe260, 0xe261,
+    0xe262, 0xe263, 0xe264, 0xe265, 0xe266, 0xe267, 0xe268, 0xe269,
+    0xe26a, 0xe26b, 0xe26c, 0xe26d, 0xe26e, 0xe26f, 0xe270, 0xe271,
+    0xe272, 0xe273, 0xe274, 0xe275, 0xe276, 0xe277, 0xe278, 0xe279,
+    0xe27a, 0xe27b, 0xe27c, 0xe27d, 0xe27e, 0xe280, 0xe281, 0xe282,
+    0xe283, 0xe284, 0xe285, 0xe286, 0xe287, 0xe288, 0xe289, 0xe28a,
+    0xe28b, 0xe28c, 0xe28d, 0xe28e, 0xe28f, 0xe290, 0xe291, 0xe292,
+    0xe293, 0xe294, 0xe295, 0xe296, 0xe297, 0xe298, 0xe299, 0xe29a,
+    0xe29b, 0xe29c, 0xe29d, 0xe29e, 0xe29f, 0xe2a0, 0xe340, 0xe341,
+    0xe342, 0xe343, 0xe344, 0xe345, 0xe346, 0xe347, 0xe348, 0xe349,
+    0xe34a, 0xe34b, 0xe34c, 0xe34d, 0xe34e, 0xe34f, 0xe350, 0xe351,
+    0xe352, 0xe353, 0xe354, 0xe355, 0xe356, 0xe357, 0xe358, 0xe359,
+    0xe35a, 0xe35b, 0xe35c, 0xe35d, 0xe35e, 0xe35f, 0xe360, 0xe361,
+    0xe362, 0xe363, 0xe364, 0xe365, 0xe366, 0xe367, 0xe368, 0xe369,
+    0xe36a, 0xe36b, 0xe36c, 0xe36d, 0xbcf8, 0xe36e, 0xe36f, 0xe370,
+    0xe371, 0xe372, 0xe373, 0xe374, 0xe375, 0xe376, 0xe377, 0xe378,
+    0xe379, 0xe37a, 0xe37b, 0xe37c, 0xe37d, 0xe37e, 0xe380, 0xe381,
+    0xe382, 0xe383, 0xe384, 0xe385, 0xe386, 0xe387, 0xf6c6, 0xe388,
+    0xe389, 0xe38a, 0xe38b, 0xe38c, 0xe38d, 0xe38e, 0xe38f, 0xe390,
+    0xe391, 0xe392, 0xe393, 0xe394, 0xe395, 0xe396, 0xe397, 0xe398,
+    0xe399, 0xe39a, 0xe39b, 0xe39c, 0xe39d, 0xe39e, 0xe39f, 0xe3a0,
+    0xe440, 0xe441, 0xe442, 0xe443, 0xe444, 0xe445, 0xf6c7, 0xe446,
+    0xe447, 0xe448, 0xe449, 0xe44a, 0xe44b, 0xe44c, 0xe44d, 0xe44e,
+    0xe44f, 0xe450, 0xe451, 0xe452, 0xe453, 0xe454, 0xe455, 0xe456,
+    0xe457, 0xe458, 0xe459, 0xe45a, 0xe45b, 0xe45c, 0xe45d, 0xe45e,
+    0xf6c8, 0xe45f, 0xe460, 0xe461, 0xe462, 0xe463, 0xe464, 0xe465,
+    0xe466, 0xe467, 0xe468, 0xe469, 0xe46a, 0xe46b, 0xe46c, 0xe46d,
+    0xe46e, 0xe46f, 0xe470, 0xe471, 0xe472, 0xe473, 0xe474, 0xe475,
+    0xe476, 0xe477, 0xe478, 0xe479, 0xe47a, 0xe47b, 0xe47c, 0xe47d,
+    0xe47e, 0xe480, 0xe481, 0xe482, 0xe483, 0xe484, 0xe485, 0xe486,
+    0xe487, 0xe488, 0xe489, 0xe48a, 0xe48b, 0xe48c, 0xe48d, 0xe48e,
+    0xe48f, 0xe490, 0xe491, 0xe492, 0xe493, 0xe494, 0xe495, 0xe496,
+    /* 0x9300 .. 0x93ff */
+    0xe497, 0xe498, 0xe499, 0xe49a, 0xe49b, 0xe49c, 0xe49d, 0xe49e,
+    0xe49f, 0xe4a0, 0xe540, 0xe541, 0xe542, 0xe543, 0xe544, 0xe545,
+    0xe546, 0xe547, 0xe548, 0xe549, 0xe54a, 0xe54b, 0xe54c, 0xe54d,
+    0xe54e, 0xe54f, 0xe550, 0xe551, 0xe552, 0xe553, 0xe554, 0xe555,
+    0xe556, 0xe557, 0xe558, 0xe559, 0xe55a, 0xe55b, 0xe55c, 0xe55d,
+    0xe55e, 0xe55f, 0xe560, 0xe561, 0xe562, 0xe563, 0xe564, 0xe565,
+    0xe566, 0xe567, 0xe568, 0xe569, 0xe56a, 0xe56b, 0xe56c, 0xe56d,
+    0xe56e, 0xe56f, 0xe570, 0xe571, 0xe572, 0xe573, 0xf6c9, 0xe574,
+    0xe575, 0xe576, 0xe577, 0xe578, 0xe579, 0xe57a, 0xe57b, 0xe57c,
+    0xe57d, 0xe57e, 0xe580, 0xe581, 0xe582, 0xe583, 0xe584, 0xe585,
+    0xe586, 0xe587, 0xe588, 0xe589, 0xe58a, 0xe58b, 0xe58c, 0xe58d,
+    0xe58e, 0xe58f, 0xe590, 0xe591, 0xe592, 0xe593, 0xe594, 0xe595,
+    0xe596, 0xe597, 0xe598, 0xe599, 0xe59a, 0xe59b, 0xe59c, 0xe59d,
+    0xe59e, 0xe59f, 0xf6ca, 0xe5a0, 0xe640, 0xe641, 0xe642, 0xe643,
+    0xe644, 0xe645, 0xe646, 0xe647, 0xe648, 0xe649, 0xe64a, 0xe64b,
+    0xe64c, 0xe64d, 0xe64e, 0xe64f, 0xe650, 0xe651, 0xe652, 0xe653,
+    0xe654, 0xe655, 0xe656, 0xe657, 0xe658, 0xe659, 0xe65a, 0xe65b,
+    0xe65c, 0xe65d, 0xe65e, 0xe65f, 0xe660, 0xe661, 0xe662, 0xf6cc,
+    0xe663, 0xe664, 0xe665, 0xe666, 0xe667, 0xe668, 0xe669, 0xe66a,
+    0xe66b, 0xe66c, 0xe66d, 0xe66e, 0xe66f, 0xe670, 0xe671, 0xe672,
+    0xe673, 0xe674, 0xe675, 0xe676, 0xe677, 0xe678, 0xe679, 0xe67a,
+    0xe67b, 0xe67c, 0xe67d, 0xe67e, 0xe680, 0xe681, 0xe682, 0xe683,
+    0xe684, 0xe685, 0xe686, 0xe687, 0xe688, 0xe689, 0xe68a, 0xe68b,
+    0xe68c, 0xe68d, 0xe68e, 0xe68f, 0xe690, 0xe691, 0xe692, 0xe693,
+    0xe694, 0xe695, 0xe696, 0xe697, 0xe698, 0xe699, 0xe69a, 0xe69b,
+    0xe69c, 0xe69d, 0xf6cb, 0xe69e, 0xe69f, 0xe6a0, 0xe740, 0xe741,
+    0xe742, 0xe743, 0xe744, 0xe745, 0xe746, 0xe747, 0xf7e9, 0xe748,
+    0xe749, 0xe74a, 0xe74b, 0xe74c, 0xe74d, 0xe74e, 0xe74f, 0xe750,
+    0xe751, 0xe752, 0xe753, 0xe754, 0xe755, 0xe756, 0xe757, 0xe758,
+    0xe759, 0xe75a, 0xe75b, 0xe75c, 0xe75d, 0xe75e, 0xe75f, 0xe760,
+    0xe761, 0xe762, 0xe763, 0xe764, 0xe765, 0xe766, 0xe767, 0xe768,
+    0xe769, 0xe76a, 0xe76b, 0xe76c, 0xe76d, 0xe76e, 0xe76f, 0xe770,
+    /* 0x9400 .. 0x94ff */
+    0xe771, 0xe772, 0xe773, 0xe774, 0xe775, 0xe776, 0xe777, 0xe778,
+    0xe779, 0xe77a, 0xe77b, 0xe77c, 0xe77d, 0xe77e, 0xe780, 0xe781,
+    0xe782, 0xe783, 0xe784, 0xe785, 0xe786, 0xe787, 0xe788, 0xe789,
+    0xe78a, 0xe78b, 0xe78c, 0xe78d, 0xe78e, 0xe78f, 0xe790, 0xe791,
+    0xe792, 0xe793, 0xe794, 0xe795, 0xe796, 0xe797, 0xe798, 0xe799,
+    0xe79a, 0xe79b, 0xe79c, 0xe79d, 0xe79e, 0xe79f, 0xe7a0, 0xe840,
+    0xe841, 0xe842, 0xe843, 0xe844, 0xe845, 0xe846, 0xe847, 0xe848,
+    0xe849, 0xe84a, 0xe84b, 0xe84c, 0xe84d, 0xe84e, 0xf6cd, 0xe84f,
+    0xe850, 0xe851, 0xe852, 0xe853, 0xe854, 0xe855, 0xe856, 0xe857,
+    0xe858, 0xe859, 0xe85a, 0xe85b, 0xe85c, 0xe85d, 0xe85e, 0xe85f,
+    0xe860, 0xe861, 0xe862, 0xe863, 0xe864, 0xe865, 0xe866, 0xe867,
+    0xe868, 0xe869, 0xe86a, 0xe86b, 0xe86c, 0xe86d, 0xe86e, 0xe86f,
+    0xe870, 0xe871, 0xe872, 0xe873, 0xe874, 0xe875, 0xe876, 0xe877,
+    0xe878, 0xe879, 0xe87a, 0xf6ce, 0xe87b, 0xe87c, 0xe87d, 0xe87e,
+    0xe880, 0xe881, 0xe882, 0xe883, 0xe884, 0xe885, 0xe886, 0xe887,
+    0xe888, 0xe889, 0xe88a, 0xe88b, 0xe88c, 0xe88d, 0xe88e, 0xe88f,
+    0xe890, 0xe891, 0xe892, 0xe893, 0xe894, 0xeec4, 0xeec5, 0xeec6,
+    0xd5eb, 0xb6a4, 0xeec8, 0xeec7, 0xeec9, 0xeeca, 0xc7a5, 0xeecb,
+    0xeecc, 0xe895, 0xb7b0, 0xb5f6, 0xeecd, 0xeecf, 0xe896, 0xeece,
+    0xe897, 0xb8c6, 0xeed0, 0xeed1, 0xeed2, 0xb6db, 0xb3ae, 0xd6d3,
+    0xc4c6, 0xb1b5, 0xb8d6, 0xeed3, 0xeed4, 0xd4bf, 0xc7d5, 0xbefb,
+    0xced9, 0xb9b3, 0xeed6, 0xeed5, 0xeed8, 0xeed7, 0xc5a5, 0xeed9,
+    0xeeda, 0xc7ae, 0xeedb, 0xc7af, 0xeedc, 0xb2a7, 0xeedd, 0xeede,
+    0xeedf, 0xeee0, 0xeee1, 0xd7ea, 0xeee2, 0xeee3, 0xbcd8, 0xeee4,
+    0xd3cb, 0xccfa, 0xb2ac, 0xc1e5, 0xeee5, 0xc7a6, 0xc3ad, 0xe898,
+    0xeee6, 0xeee7, 0xeee8, 0xeee9, 0xeeea, 0xeeeb, 0xeeec, 0xe899,
+    0xeeed, 0xeeee, 0xeeef, 0xe89a, 0xe89b, 0xeef0, 0xeef1, 0xeef2,
+    0xeef4, 0xeef3, 0xe89c, 0xeef5, 0xcdad, 0xc2c1, 0xeef6, 0xeef7,
+    0xeef8, 0xd5a1, 0xeef9, 0xcfb3, 0xeefa, 0xeefb, 0xe89d, 0xeefc,
+    0xeefd, 0xefa1, 0xeefe, 0xefa2, 0xb8f5, 0xc3fa, 0xefa3, 0xefa4,
+    0xbdc2, 0xd2bf, 0xb2f9, 0xefa5, 0xefa6, 0xefa7, 0xd2f8, 0xefa8,
+    0xd6fd, 0xefa9, 0xc6cc, 0xe89e, 0xefaa, 0xefab, 0xc1b4, 0xefac,
+    /* 0x9500 .. 0x95ff */
+    0xcffa, 0xcbf8, 0xefae, 0xefad, 0xb3fa, 0xb9f8, 0xefaf, 0xefb0,
+    0xd0e2, 0xefb1, 0xefb2, 0xb7e6, 0xd0bf, 0xefb3, 0xefb4, 0xefb5,
+    0xc8f1, 0xcce0, 0xefb6, 0xefb7, 0xefb8, 0xefb9, 0xefba, 0xd5e0,
+    0xefbb, 0xb4ed, 0xc3aa, 0xefbc, 0xe89f, 0xefbd, 0xefbe, 0xefbf,
+    0xe8a0, 0xcefd, 0xefc0, 0xc2e0, 0xb4b8, 0xd7b6, 0xbdf5, 0xe940,
+    0xcfc7, 0xefc3, 0xefc1, 0xefc2, 0xefc4, 0xb6a7, 0xbcfc, 0xbee2,
+    0xc3cc, 0xefc5, 0xefc6, 0xe941, 0xefc7, 0xefcf, 0xefc8, 0xefc9,
+    0xefca, 0xc7c2, 0xeff1, 0xb6cd, 0xefcb, 0xe942, 0xefcc, 0xefcd,
+    0xb6c6, 0xc3be, 0xefce, 0xe943, 0xefd0, 0xefd1, 0xefd2, 0xd5f2,
+    0xe944, 0xefd3, 0xc4f7, 0xe945, 0xefd4, 0xc4f8, 0xefd5, 0xefd6,
+    0xb8e4, 0xb0f7, 0xefd7, 0xefd8, 0xefd9, 0xe946, 0xefda, 0xefdb,
+    0xefdc, 0xefdd, 0xe947, 0xefde, 0xbeb5, 0xefe1, 0xefdf, 0xefe0,
+    0xe948, 0xefe2, 0xefe3, 0xc1cd, 0xefe4, 0xefe5, 0xefe6, 0xefe7,
+    0xefe8, 0xefe9, 0xefea, 0xefeb, 0xefec, 0xc0d8, 0xe949, 0xefed,
+    0xc1ad, 0xefee, 0xefef, 0xeff0, 0xe94a, 0xe94b, 0xcfe2, 0xe94c,
+    0xe94d, 0xe94e, 0xe94f, 0xe950, 0xe951, 0xe952, 0xe953, 0xb3a4,
+    0xe954, 0xe955, 0xe956, 0xe957, 0xe958, 0xe959, 0xe95a, 0xe95b,
+    0xe95c, 0xe95d, 0xe95e, 0xe95f, 0xe960, 0xe961, 0xe962, 0xe963,
+    0xe964, 0xe965, 0xe966, 0xe967, 0xe968, 0xe969, 0xe96a, 0xe96b,
+    0xe96c, 0xe96d, 0xe96e, 0xe96f, 0xe970, 0xe971, 0xe972, 0xe973,
+    0xe974, 0xe975, 0xe976, 0xe977, 0xe978, 0xe979, 0xe97a, 0xe97b,
+    0xe97c, 0xe97d, 0xe97e, 0xe980, 0xe981, 0xe982, 0xe983, 0xe984,
+    0xe985, 0xe986, 0xe987, 0xe988, 0xe989, 0xe98a, 0xe98b, 0xe98c,
+    0xe98d, 0xe98e, 0xe98f, 0xe990, 0xe991, 0xe992, 0xe993, 0xe994,
+    0xe995, 0xe996, 0xe997, 0xe998, 0xe999, 0xe99a, 0xe99b, 0xe99c,
+    0xe99d, 0xe99e, 0xe99f, 0xe9a0, 0xea40, 0xea41, 0xea42, 0xea43,
+    0xea44, 0xea45, 0xea46, 0xea47, 0xea48, 0xea49, 0xea4a, 0xea4b,
+    0xea4c, 0xea4d, 0xea4e, 0xea4f, 0xea50, 0xea51, 0xea52, 0xea53,
+    0xea54, 0xea55, 0xea56, 0xea57, 0xea58, 0xea59, 0xea5a, 0xea5b,
+    0xc3c5, 0xe3c5, 0xc9c1, 0xe3c6, 0xea5c, 0xb1d5, 0xceca, 0xb4b3,
+    0xc8f2, 0xe3c7, 0xcfd0, 0xe3c8, 0xbce4, 0xe3c9, 0xe3ca, 0xc3c6,
+    0xd5a2, 0xc4d6, 0xb9eb, 0xcec5, 0xe3cb, 0xc3f6, 0xe3cc, 0xea5d,
+    /* 0x9600 .. 0x96ff */
+    0xb7a7, 0xb8f3, 0xbad2, 0xe3cd, 0xe3ce, 0xd4c4, 0xe3cf, 0xea5e,
+    0xe3d0, 0xd1cb, 0xe3d1, 0xe3d2, 0xe3d3, 0xe3d4, 0xd1d6, 0xe3d5,
+    0xb2fb, 0xc0bb, 0xe3d6, 0xea5f, 0xc0ab, 0xe3d7, 0xe3d8, 0xe3d9,
+    0xea60, 0xe3da, 0xe3db, 0xea61, 0xb8b7, 0xdae2, 0xea62, 0xb6d3,
+    0xea63, 0xdae4, 0xdae3, 0xea64, 0xea65, 0xea66, 0xea67, 0xea68,
+    0xea69, 0xea6a, 0xdae6, 0xea6b, 0xea6c, 0xea6d, 0xc8ee, 0xea6e,
+    0xea6f, 0xdae5, 0xb7c0, 0xd1f4, 0xd2f5, 0xd5f3, 0xbdd7, 0xea70,
+    0xea71, 0xea72, 0xea73, 0xd7e8, 0xdae8, 0xdae7, 0xea74, 0xb0a2,
+    0xcdd3, 0xea75, 0xdae9, 0xea76, 0xb8bd, 0xbcca, 0xc2bd, 0xc2a4,
+    0xb3c2, 0xdaea, 0xea77, 0xc2aa, 0xc4b0, 0xbdb5, 0xea78, 0xea79,
+    0xcfde, 0xea7a, 0xea7b, 0xea7c, 0xdaeb, 0xc9c2, 0xea7d, 0xea7e,
+    0xea80, 0xea81, 0xea82, 0xb1dd, 0xea83, 0xea84, 0xea85, 0xdaec,
+    0xea86, 0xb6b8, 0xd4ba, 0xea87, 0xb3fd, 0xea88, 0xea89, 0xdaed,
+    0xd4c9, 0xcfd5, 0xc5e3, 0xea8a, 0xdaee, 0xea8b, 0xea8c, 0xea8d,
+    0xea8e, 0xea8f, 0xdaef, 0xea90, 0xdaf0, 0xc1ea, 0xccd5, 0xcfdd,
+    0xea91, 0xea92, 0xea93, 0xea94, 0xea95, 0xea96, 0xea97, 0xea98,
+    0xea99, 0xea9a, 0xea9b, 0xea9c, 0xea9d, 0xd3e7, 0xc2a1, 0xea9e,
+    0xdaf1, 0xea9f, 0xeaa0, 0xcbe5, 0xeb40, 0xdaf2, 0xeb41, 0xcbe6,
+    0xd2fe, 0xeb42, 0xeb43, 0xeb44, 0xb8f4, 0xeb45, 0xeb46, 0xdaf3,
+    0xb0af, 0xcfb6, 0xeb47, 0xeb48, 0xd5cf, 0xeb49, 0xeb4a, 0xeb4b,
+    0xeb4c, 0xeb4d, 0xeb4e, 0xeb4f, 0xeb50, 0xeb51, 0xeb52, 0xcbed,
+    0xeb53, 0xeb54, 0xeb55, 0xeb56, 0xeb57, 0xeb58, 0xeb59, 0xeb5a,
+    0xdaf4, 0xeb5b, 0xeb5c, 0xe3c4, 0xeb5d, 0xeb5e, 0xc1a5, 0xeb5f,
+    0xeb60, 0xf6bf, 0xeb61, 0xeb62, 0xf6c0, 0xf6c1, 0xc4d1, 0xeb63,
+    0xc8b8, 0xd1e3, 0xeb64, 0xeb65, 0xd0db, 0xd1c5, 0xbcaf, 0xb9cd,
+    0xeb66, 0xeff4, 0xeb67, 0xeb68, 0xb4c6, 0xd3ba, 0xf6c2, 0xb3fb,
+    0xeb69, 0xeb6a, 0xf6c3, 0xeb6b, 0xeb6c, 0xb5f1, 0xeb6d, 0xeb6e,
+    0xeb6f, 0xeb70, 0xeb71, 0xeb72, 0xeb73, 0xeb74, 0xeb75, 0xeb76,
+    0xf6c5, 0xeb77, 0xeb78, 0xeb79, 0xeb7a, 0xeb7b, 0xeb7c, 0xeb7d,
+    0xd3ea, 0xf6a7, 0xd1a9, 0xeb7e, 0xeb80, 0xeb81, 0xeb82, 0xf6a9,
+    0xeb83, 0xeb84, 0xeb85, 0xf6a8, 0xeb86, 0xeb87, 0xc1e3, 0xc0d7,
+    0xeb88, 0xb1a2, 0xeb89, 0xeb8a, 0xeb8b, 0xeb8c, 0xceed, 0xeb8d,
+    /* 0x9700 .. 0x97ff */
+    0xd0e8, 0xf6ab, 0xeb8e, 0xeb8f, 0xcff6, 0xeb90, 0xf6aa, 0xd5f0,
+    0xf6ac, 0xc3b9, 0xeb91, 0xeb92, 0xeb93, 0xbbf4, 0xf6ae, 0xf6ad,
+    0xeb94, 0xeb95, 0xeb96, 0xc4de, 0xeb97, 0xeb98, 0xc1d8, 0xeb99,
+    0xeb9a, 0xeb9b, 0xeb9c, 0xeb9d, 0xcbaa, 0xeb9e, 0xcfbc, 0xeb9f,
+    0xeba0, 0xec40, 0xec41, 0xec42, 0xec43, 0xec44, 0xec45, 0xec46,
+    0xec47, 0xec48, 0xf6af, 0xec49, 0xec4a, 0xf6b0, 0xec4b, 0xec4c,
+    0xf6b1, 0xec4d, 0xc2b6, 0xec4e, 0xec4f, 0xec50, 0xec51, 0xec52,
+    0xb0d4, 0xc5f9, 0xec53, 0xec54, 0xec55, 0xec56, 0xf6b2, 0xec57,
+    0xec58, 0xec59, 0xec5a, 0xec5b, 0xec5c, 0xec5d, 0xec5e, 0xec5f,
+    0xec60, 0xec61, 0xec62, 0xec63, 0xec64, 0xec65, 0xec66, 0xec67,
+    0xec68, 0xec69, 0xc7e0, 0xf6a6, 0xec6a, 0xec6b, 0xbeb8, 0xec6c,
+    0xec6d, 0xbeb2, 0xec6e, 0xb5e5, 0xec6f, 0xec70, 0xb7c7, 0xec71,
+    0xbfbf, 0xc3d2, 0xc3e6, 0xec72, 0xec73, 0xd8cc, 0xec74, 0xec75,
+    0xec76, 0xb8ef, 0xec77, 0xec78, 0xec79, 0xec7a, 0xec7b, 0xec7c,
+    0xec7d, 0xec7e, 0xec80, 0xbdf9, 0xd1a5, 0xec81, 0xb0d0, 0xec82,
+    0xec83, 0xec84, 0xec85, 0xec86, 0xf7b0, 0xec87, 0xec88, 0xec89,
+    0xec8a, 0xec8b, 0xec8c, 0xec8d, 0xec8e, 0xf7b1, 0xec8f, 0xec90,
+    0xec91, 0xec92, 0xec93, 0xd0ac, 0xec94, 0xb0b0, 0xec95, 0xec96,
+    0xec97, 0xf7b2, 0xf7b3, 0xec98, 0xf7b4, 0xec99, 0xec9a, 0xec9b,
+    0xc7ca, 0xec9c, 0xec9d, 0xec9e, 0xec9f, 0xeca0, 0xed40, 0xed41,
+    0xbecf, 0xed42, 0xed43, 0xf7b7, 0xed44, 0xed45, 0xed46, 0xed47,
+    0xed48, 0xed49, 0xed4a, 0xf7b6, 0xed4b, 0xb1de, 0xed4c, 0xf7b5,
+    0xed4d, 0xed4e, 0xf7b8, 0xed4f, 0xf7b9, 0xed50, 0xed51, 0xed52,
+    0xed53, 0xed54, 0xed55, 0xed56, 0xed57, 0xed58, 0xed59, 0xed5a,
+    0xed5b, 0xed5c, 0xed5d, 0xed5e, 0xed5f, 0xed60, 0xed61, 0xed62,
+    0xed63, 0xed64, 0xed65, 0xed66, 0xed67, 0xed68, 0xed69, 0xed6a,
+    0xed6b, 0xed6c, 0xed6d, 0xed6e, 0xed6f, 0xed70, 0xed71, 0xed72,
+    0xed73, 0xed74, 0xed75, 0xed76, 0xed77, 0xed78, 0xed79, 0xed7a,
+    0xed7b, 0xed7c, 0xed7d, 0xed7e, 0xed80, 0xed81, 0xcea4, 0xc8cd,
+    0xed82, 0xbaab, 0xe8b8, 0xe8b9, 0xe8ba, 0xbec2, 0xed83, 0xed84,
+    0xed85, 0xed86, 0xed87, 0xd2f4, 0xed88, 0xd4cf, 0xc9d8, 0xed89,
+    0xed8a, 0xed8b, 0xed8c, 0xed8d, 0xed8e, 0xed8f, 0xed90, 0xed91,
+    /* 0x9800 .. 0x98ff */
+    0xed92, 0xed93, 0xed94, 0xed95, 0xed96, 0xed97, 0xed98, 0xed99,
+    0xed9a, 0xed9b, 0xed9c, 0xed9d, 0xed9e, 0xed9f, 0xeda0, 0xee40,
+    0xee41, 0xee42, 0xee43, 0xee44, 0xee45, 0xee46, 0xee47, 0xee48,
+    0xee49, 0xee4a, 0xee4b, 0xee4c, 0xee4d, 0xee4e, 0xee4f, 0xee50,
+    0xee51, 0xee52, 0xee53, 0xee54, 0xee55, 0xee56, 0xee57, 0xee58,
+    0xee59, 0xee5a, 0xee5b, 0xee5c, 0xee5d, 0xee5e, 0xee5f, 0xee60,
+    0xee61, 0xee62, 0xee63, 0xee64, 0xee65, 0xee66, 0xee67, 0xee68,
+    0xee69, 0xee6a, 0xee6b, 0xee6c, 0xee6d, 0xee6e, 0xee6f, 0xee70,
+    0xee71, 0xee72, 0xee73, 0xee74, 0xee75, 0xee76, 0xee77, 0xee78,
+    0xee79, 0xee7a, 0xee7b, 0xee7c, 0xee7d, 0xee7e, 0xee80, 0xee81,
+    0xee82, 0xee83, 0xee84, 0xee85, 0xee86, 0xee87, 0xee88, 0xee89,
+    0xee8a, 0xee8b, 0xee8c, 0xee8d, 0xee8e, 0xee8f, 0xee90, 0xee91,
+    0xee92, 0xee93, 0xee94, 0xee95, 0xee96, 0xee97, 0xee98, 0xee99,
+    0xee9a, 0xee9b, 0xee9c, 0xee9d, 0xee9e, 0xee9f, 0xeea0, 0xef40,
+    0xef41, 0xef42, 0xef43, 0xef44, 0xef45, 0xd2b3, 0xb6a5, 0xc7ea,
+    0xf1fc, 0xcfee, 0xcbb3, 0xd0eb, 0xe7ef, 0xcde7, 0xb9cb, 0xb6d9,
+    0xf1fd, 0xb0e4, 0xcbcc, 0xf1fe, 0xd4a4, 0xc2ad, 0xc1ec, 0xc6c4,
+    0xbeb1, 0xf2a1, 0xbcd5, 0xef46, 0xf2a2, 0xf2a3, 0xef47, 0xf2a4,
+    0xd2c3, 0xc6b5, 0xef48, 0xcdc7, 0xf2a5, 0xef49, 0xd3b1, 0xbfc5,
+    0xcce2, 0xef4a, 0xf2a6, 0xf2a7, 0xd1d5, 0xb6ee, 0xf2a8, 0xf2a9,
+    0xb5df, 0xf2aa, 0xf2ab, 0xef4b, 0xb2fc, 0xf2ac, 0xf2ad, 0xc8a7,
+    0xef4c, 0xef4d, 0xef4e, 0xef4f, 0xef50, 0xef51, 0xef52, 0xef53,
+    0xef54, 0xef55, 0xef56, 0xef57, 0xef58, 0xef59, 0xef5a, 0xef5b,
+    0xef5c, 0xef5d, 0xef5e, 0xef5f, 0xef60, 0xef61, 0xef62, 0xef63,
+    0xef64, 0xef65, 0xef66, 0xef67, 0xef68, 0xef69, 0xef6a, 0xef6b,
+    0xef6c, 0xef6d, 0xef6e, 0xef6f, 0xef70, 0xef71, 0xb7e7, 0xef72,
+    0xef73, 0xeca9, 0xecaa, 0xecab, 0xef74, 0xecac, 0xef75, 0xef76,
+    0xc6ae, 0xecad, 0xecae, 0xef77, 0xef78, 0xef79, 0xb7c9, 0xcab3,
+    0xef7a, 0xef7b, 0xef7c, 0xef7d, 0xef7e, 0xef80, 0xef81, 0xe2b8,
+    0xf7cf, 0xef82, 0xef83, 0xef84, 0xef85, 0xef86, 0xef87, 0xef88,
+    0xef89, 0xef8a, 0xef8b, 0xef8c, 0xef8d, 0xef8e, 0xef8f, 0xef90,
+    0xef91, 0xef92, 0xef93, 0xef94, 0xef95, 0xef96, 0xef97, 0xef98,
+    /* 0x9900 .. 0x99ff */
+    0xef99, 0xef9a, 0xef9b, 0xef9c, 0xef9d, 0xef9e, 0xef9f, 0xefa0,
+    0xf040, 0xf041, 0xf042, 0xf043, 0xf044, 0xf7d0, 0xf045, 0xf046,
+    0xb2cd, 0xf047, 0xf048, 0xf049, 0xf04a, 0xf04b, 0xf04c, 0xf04d,
+    0xf04e, 0xf04f, 0xf050, 0xf051, 0xf052, 0xf053, 0xf054, 0xf055,
+    0xf056, 0xf057, 0xf058, 0xf059, 0xf05a, 0xf05b, 0xf05c, 0xf05d,
+    0xf05e, 0xf05f, 0xf060, 0xf061, 0xf062, 0xf063, 0xf7d1, 0xf064,
+    0xf065, 0xf066, 0xf067, 0xf068, 0xf069, 0xf06a, 0xf06b, 0xf06c,
+    0xf06d, 0xf06e, 0xf06f, 0xf070, 0xf071, 0xf072, 0xf073, 0xf074,
+    0xf075, 0xf076, 0xf077, 0xf078, 0xf079, 0xf07a, 0xf07b, 0xf07c,
+    0xf07d, 0xf07e, 0xf080, 0xf081, 0xf082, 0xf083, 0xf084, 0xf085,
+    0xf086, 0xf087, 0xf088, 0xf089, 0xf7d3, 0xf7d2, 0xf08a, 0xf08b,
+    0xf08c, 0xf08d, 0xf08e, 0xf08f, 0xf090, 0xf091, 0xf092, 0xf093,
+    0xf094, 0xf095, 0xf096, 0xe2bb, 0xf097, 0xbca2, 0xf098, 0xe2bc,
+    0xe2bd, 0xe2be, 0xe2bf, 0xe2c0, 0xe2c1, 0xb7b9, 0xd2fb, 0xbda4,
+    0xcace, 0xb1a5, 0xcbc7, 0xf099, 0xe2c2, 0xb6fc, 0xc8c4, 0xe2c3,
+    0xf09a, 0xf09b, 0xbdc8, 0xf09c, 0xb1fd, 0xe2c4, 0xf09d, 0xb6f6,
+    0xe2c5, 0xc4d9, 0xf09e, 0xf09f, 0xe2c6, 0xcfda, 0xb9dd, 0xe2c7,
+    0xc0a1, 0xf0a0, 0xe2c8, 0xb2f6, 0xf140, 0xe2c9, 0xf141, 0xc1f3,
+    0xe2ca, 0xe2cb, 0xc2f8, 0xe2cc, 0xe2cd, 0xe2ce, 0xcad7, 0xd8b8,
+    0xd9e5, 0xcfe3, 0xf142, 0xf143, 0xf144, 0xf145, 0xf146, 0xf147,
+    0xf148, 0xf149, 0xf14a, 0xf14b, 0xf14c, 0xf0a5, 0xf14d, 0xf14e,
+    0xdcb0, 0xf14f, 0xf150, 0xf151, 0xf152, 0xf153, 0xf154, 0xf155,
+    0xf156, 0xf157, 0xf158, 0xf159, 0xf15a, 0xf15b, 0xf15c, 0xf15d,
+    0xf15e, 0xf15f, 0xf160, 0xf161, 0xf162, 0xf163, 0xf164, 0xf165,
+    0xf166, 0xf167, 0xf168, 0xf169, 0xf16a, 0xf16b, 0xf16c, 0xf16d,
+    0xf16e, 0xf16f, 0xf170, 0xf171, 0xf172, 0xf173, 0xf174, 0xf175,
+    0xf176, 0xf177, 0xf178, 0xf179, 0xf17a, 0xf17b, 0xf17c, 0xf17d,
+    0xf17e, 0xf180, 0xf181, 0xf182, 0xf183, 0xf184, 0xf185, 0xf186,
+    0xf187, 0xf188, 0xf189, 0xf18a, 0xf18b, 0xf18c, 0xf18d, 0xf18e,
+    0xf18f, 0xf190, 0xf191, 0xf192, 0xf193, 0xf194, 0xf195, 0xf196,
+    0xf197, 0xf198, 0xf199, 0xf19a, 0xf19b, 0xf19c, 0xf19d, 0xf19e,
+    0xf19f, 0xf1a0, 0xf240, 0xf241, 0xf242, 0xf243, 0xf244, 0xf245,
+    /* 0x9a00 .. 0x9aff */
+    0xf246, 0xf247, 0xf248, 0xf249, 0xf24a, 0xf24b, 0xf24c, 0xf24d,
+    0xf24e, 0xf24f, 0xf250, 0xf251, 0xf252, 0xf253, 0xf254, 0xf255,
+    0xf256, 0xf257, 0xf258, 0xf259, 0xf25a, 0xf25b, 0xf25c, 0xf25d,
+    0xf25e, 0xf25f, 0xf260, 0xf261, 0xf262, 0xf263, 0xf264, 0xf265,
+    0xf266, 0xf267, 0xf268, 0xf269, 0xf26a, 0xf26b, 0xf26c, 0xf26d,
+    0xf26e, 0xf26f, 0xf270, 0xf271, 0xf272, 0xf273, 0xf274, 0xf275,
+    0xf276, 0xf277, 0xf278, 0xf279, 0xf27a, 0xf27b, 0xf27c, 0xf27d,
+    0xf27e, 0xf280, 0xf281, 0xf282, 0xf283, 0xf284, 0xf285, 0xf286,
+    0xf287, 0xf288, 0xf289, 0xf28a, 0xf28b, 0xf28c, 0xf28d, 0xf28e,
+    0xf28f, 0xf290, 0xf291, 0xf292, 0xf293, 0xf294, 0xf295, 0xf296,
+    0xf297, 0xf298, 0xf299, 0xf29a, 0xf29b, 0xf29c, 0xf29d, 0xf29e,
+    0xf29f, 0xf2a0, 0xf340, 0xf341, 0xf342, 0xf343, 0xf344, 0xf345,
+    0xf346, 0xf347, 0xf348, 0xf349, 0xf34a, 0xf34b, 0xf34c, 0xf34d,
+    0xf34e, 0xf34f, 0xf350, 0xf351, 0xc2ed, 0xd4a6, 0xcdd4, 0xd1b1,
+    0xb3db, 0xc7fd, 0xf352, 0xb2b5, 0xc2bf, 0xe6e0, 0xcabb, 0xe6e1,
+    0xe6e2, 0xbed4, 0xe6e3, 0xd7a4, 0xcdd5, 0xe6e5, 0xbcdd, 0xe6e4,
+    0xe6e6, 0xe6e7, 0xc2ee, 0xf353, 0xbdbe, 0xe6e8, 0xc2e6, 0xbaa7,
+    0xe6e9, 0xf354, 0xe6ea, 0xb3d2, 0xd1e9, 0xf355, 0xf356, 0xbfa5,
+    0xe6eb, 0xc6ef, 0xe6ec, 0xe6ed, 0xf357, 0xf358, 0xe6ee, 0xc6ad,
+    0xe6ef, 0xf359, 0xc9a7, 0xe6f0, 0xe6f1, 0xe6f2, 0xe5b9, 0xe6f3,
+    0xe6f4, 0xc2e2, 0xe6f5, 0xe6f6, 0xd6e8, 0xe6f7, 0xf35a, 0xe6f8,
+    0xb9c7, 0xf35b, 0xf35c, 0xf35d, 0xf35e, 0xf35f, 0xf360, 0xf361,
+    0xf7bb, 0xf7ba, 0xf362, 0xf363, 0xf364, 0xf365, 0xf7be, 0xf7bc,
+    0xbaa1, 0xf366, 0xf7bf, 0xf367, 0xf7c0, 0xf368, 0xf369, 0xf36a,
+    0xf7c2, 0xf7c1, 0xf7c4, 0xf36b, 0xf36c, 0xf7c3, 0xf36d, 0xf36e,
+    0xf36f, 0xf370, 0xf371, 0xf7c5, 0xf7c6, 0xf372, 0xf373, 0xf374,
+    0xf375, 0xf7c7, 0xf376, 0xcbe8, 0xf377, 0xf378, 0xf379, 0xf37a,
+    0xb8df, 0xf37b, 0xf37c, 0xf37d, 0xf37e, 0xf380, 0xf381, 0xf7d4,
+    0xf382, 0xf7d5, 0xf383, 0xf384, 0xf385, 0xf386, 0xf7d6, 0xf387,
+    0xf388, 0xf389, 0xf38a, 0xf7d8, 0xf38b, 0xf7da, 0xf38c, 0xf7d7,
+    0xf38d, 0xf38e, 0xf38f, 0xf390, 0xf391, 0xf392, 0xf393, 0xf394,
+    0xf395, 0xf7db, 0xf396, 0xf7d9, 0xf397, 0xf398, 0xf399, 0xf39a,
+    /* 0x9b00 .. 0x9bff */
+    0xf39b, 0xf39c, 0xf39d, 0xd7d7, 0xf39e, 0xf39f, 0xf3a0, 0xf440,
+    0xf7dc, 0xf441, 0xf442, 0xf443, 0xf444, 0xf445, 0xf446, 0xf7dd,
+    0xf447, 0xf448, 0xf449, 0xf7de, 0xf44a, 0xf44b, 0xf44c, 0xf44d,
+    0xf44e, 0xf44f, 0xf450, 0xf451, 0xf452, 0xf453, 0xf454, 0xf7df,
+    0xf455, 0xf456, 0xf457, 0xf7e0, 0xf458, 0xf459, 0xf45a, 0xf45b,
+    0xf45c, 0xf45d, 0xf45e, 0xf45f, 0xf460, 0xf461, 0xf462, 0xdbcb,
+    0xf463, 0xf464, 0xd8aa, 0xf465, 0xf466, 0xf467, 0xf468, 0xf469,
+    0xf46a, 0xf46b, 0xf46c, 0xe5f7, 0xb9ed, 0xf46d, 0xf46e, 0xf46f,
+    0xf470, 0xbffd, 0xbbea, 0xf7c9, 0xc6c7, 0xf7c8, 0xf471, 0xf7ca,
+    0xf7cc, 0xf7cb, 0xf472, 0xf473, 0xf474, 0xf7cd, 0xf475, 0xceba,
+    0xf476, 0xf7ce, 0xf477, 0xf478, 0xc4a7, 0xf479, 0xf47a, 0xf47b,
+    0xf47c, 0xf47d, 0xf47e, 0xf480, 0xf481, 0xf482, 0xf483, 0xf484,
+    0xf485, 0xf486, 0xf487, 0xf488, 0xf489, 0xf48a, 0xf48b, 0xf48c,
+    0xf48d, 0xf48e, 0xf48f, 0xf490, 0xf491, 0xf492, 0xf493, 0xf494,
+    0xf495, 0xf496, 0xf497, 0xf498, 0xf499, 0xf49a, 0xf49b, 0xf49c,
+    0xf49d, 0xf49e, 0xf49f, 0xf4a0, 0xf540, 0xf541, 0xf542, 0xf543,
+    0xf544, 0xf545, 0xf546, 0xf547, 0xf548, 0xf549, 0xf54a, 0xf54b,
+    0xf54c, 0xf54d, 0xf54e, 0xf54f, 0xf550, 0xf551, 0xf552, 0xf553,
+    0xf554, 0xf555, 0xf556, 0xf557, 0xf558, 0xf559, 0xf55a, 0xf55b,
+    0xf55c, 0xf55d, 0xf55e, 0xf55f, 0xf560, 0xf561, 0xf562, 0xf563,
+    0xf564, 0xf565, 0xf566, 0xf567, 0xf568, 0xf569, 0xf56a, 0xf56b,
+    0xf56c, 0xf56d, 0xf56e, 0xf56f, 0xf570, 0xf571, 0xf572, 0xf573,
+    0xf574, 0xf575, 0xf576, 0xf577, 0xf578, 0xf579, 0xf57a, 0xf57b,
+    0xf57c, 0xf57d, 0xf57e, 0xf580, 0xf581, 0xf582, 0xf583, 0xf584,
+    0xf585, 0xf586, 0xf587, 0xf588, 0xf589, 0xf58a, 0xf58b, 0xf58c,
+    0xf58d, 0xf58e, 0xf58f, 0xf590, 0xf591, 0xf592, 0xf593, 0xf594,
+    0xf595, 0xf596, 0xf597, 0xf598, 0xf599, 0xf59a, 0xf59b, 0xf59c,
+    0xf59d, 0xf59e, 0xf59f, 0xf5a0, 0xf640, 0xf641, 0xf642, 0xf643,
+    0xf644, 0xf645, 0xf646, 0xf647, 0xf648, 0xf649, 0xf64a, 0xf64b,
+    0xf64c, 0xf64d, 0xf64e, 0xf64f, 0xf650, 0xf651, 0xf652, 0xf653,
+    0xf654, 0xf655, 0xf656, 0xf657, 0xf658, 0xf659, 0xf65a, 0xf65b,
+    0xf65c, 0xf65d, 0xf65e, 0xf65f, 0xf660, 0xf661, 0xf662, 0xf663,
+    /* 0x9c00 .. 0x9cff */
+    0xf664, 0xf665, 0xf666, 0xf667, 0xf668, 0xf669, 0xf66a, 0xf66b,
+    0xf66c, 0xf66d, 0xf66e, 0xf66f, 0xf670, 0xf671, 0xf672, 0xf673,
+    0xf674, 0xf675, 0xf676, 0xf677, 0xf678, 0xf679, 0xf67a, 0xf67b,
+    0xf67c, 0xf67d, 0xf67e, 0xf680, 0xf681, 0xf682, 0xf683, 0xf684,
+    0xf685, 0xf686, 0xf687, 0xf688, 0xf689, 0xf68a, 0xf68b, 0xf68c,
+    0xf68d, 0xf68e, 0xf68f, 0xf690, 0xf691, 0xf692, 0xf693, 0xf694,
+    0xf695, 0xf696, 0xf697, 0xf698, 0xf699, 0xf69a, 0xf69b, 0xf69c,
+    0xf69d, 0xf69e, 0xf69f, 0xf6a0, 0xf740, 0xf741, 0xf742, 0xf743,
+    0xf744, 0xf745, 0xf746, 0xf747, 0xf748, 0xf749, 0xf74a, 0xf74b,
+    0xf74c, 0xf74d, 0xf74e, 0xf74f, 0xf750, 0xf751, 0xf752, 0xf753,
+    0xf754, 0xf755, 0xf756, 0xf757, 0xf758, 0xf759, 0xf75a, 0xf75b,
+    0xf75c, 0xf75d, 0xf75e, 0xf75f, 0xf760, 0xf761, 0xf762, 0xf763,
+    0xf764, 0xf765, 0xf766, 0xf767, 0xf768, 0xf769, 0xf76a, 0xf76b,
+    0xf76c, 0xf76d, 0xf76e, 0xf76f, 0xf770, 0xf771, 0xf772, 0xf773,
+    0xf774, 0xf775, 0xf776, 0xf777, 0xf778, 0xf779, 0xf77a, 0xf77b,
+    0xf77c, 0xf77d, 0xf77e, 0xf780, 0xd3e3, 0xf781, 0xf782, 0xf6cf,
+    0xf783, 0xc2b3, 0xf6d0, 0xf784, 0xf785, 0xf6d1, 0xf6d2, 0xf6d3,
+    0xf6d4, 0xf786, 0xf787, 0xf6d6, 0xf788, 0xb1ab, 0xf6d7, 0xf789,
+    0xf6d8, 0xf6d9, 0xf6da, 0xf78a, 0xf6db, 0xf6dc, 0xf78b, 0xf78c,
+    0xf78d, 0xf78e, 0xf6dd, 0xf6de, 0xcfca, 0xf78f, 0xf6df, 0xf6e0,
+    0xf6e1, 0xf6e2, 0xf6e3, 0xf6e4, 0xc0f0, 0xf6e5, 0xf6e6, 0xf6e7,
+    0xf6e8, 0xf6e9, 0xf790, 0xf6ea, 0xf791, 0xf6eb, 0xf6ec, 0xf792,
+    0xf6ed, 0xf6ee, 0xf6ef, 0xf6f0, 0xf6f1, 0xf6f2, 0xf6f3, 0xf6f4,
+    0xbea8, 0xf793, 0xf6f5, 0xf6f6, 0xf6f7, 0xf6f8, 0xf794, 0xf795,
+    0xf796, 0xf797, 0xf798, 0xc8fa, 0xf6f9, 0xf6fa, 0xf6fb, 0xf6fc,
+    0xf799, 0xf79a, 0xf6fd, 0xf6fe, 0xf7a1, 0xf7a2, 0xf7a3, 0xf7a4,
+    0xf7a5, 0xf79b, 0xf79c, 0xf7a6, 0xf7a7, 0xf7a8, 0xb1ee, 0xf7a9,
+    0xf7aa, 0xf7ab, 0xf79d, 0xf79e, 0xf7ac, 0xf7ad, 0xc1db, 0xf7ae,
+    0xf79f, 0xf7a0, 0xf7af, 0xf840, 0xf841, 0xf842, 0xf843, 0xf844,
+    0xf845, 0xf846, 0xf847, 0xf848, 0xf849, 0xf84a, 0xf84b, 0xf84c,
+    0xf84d, 0xf84e, 0xf84f, 0xf850, 0xf851, 0xf852, 0xf853, 0xf854,
+    0xf855, 0xf856, 0xf857, 0xf858, 0xf859, 0xf85a, 0xf85b, 0xf85c,
+    /* 0x9d00 .. 0x9dff */
+    0xf85d, 0xf85e, 0xf85f, 0xf860, 0xf861, 0xf862, 0xf863, 0xf864,
+    0xf865, 0xf866, 0xf867, 0xf868, 0xf869, 0xf86a, 0xf86b, 0xf86c,
+    0xf86d, 0xf86e, 0xf86f, 0xf870, 0xf871, 0xf872, 0xf873, 0xf874,
+    0xf875, 0xf876, 0xf877, 0xf878, 0xf879, 0xf87a, 0xf87b, 0xf87c,
+    0xf87d, 0xf87e, 0xf880, 0xf881, 0xf882, 0xf883, 0xf884, 0xf885,
+    0xf886, 0xf887, 0xf888, 0xf889, 0xf88a, 0xf88b, 0xf88c, 0xf88d,
+    0xf88e, 0xf88f, 0xf890, 0xf891, 0xf892, 0xf893, 0xf894, 0xf895,
+    0xf896, 0xf897, 0xf898, 0xf899, 0xf89a, 0xf89b, 0xf89c, 0xf89d,
+    0xf89e, 0xf89f, 0xf8a0, 0xf940, 0xf941, 0xf942, 0xf943, 0xf944,
+    0xf945, 0xf946, 0xf947, 0xf948, 0xf949, 0xf94a, 0xf94b, 0xf94c,
+    0xf94d, 0xf94e, 0xf94f, 0xf950, 0xf951, 0xf952, 0xf953, 0xf954,
+    0xf955, 0xf956, 0xf957, 0xf958, 0xf959, 0xf95a, 0xf95b, 0xf95c,
+    0xf95d, 0xf95e, 0xf95f, 0xf960, 0xf961, 0xf962, 0xf963, 0xf964,
+    0xf965, 0xf966, 0xf967, 0xf968, 0xf969, 0xf96a, 0xf96b, 0xf96c,
+    0xf96d, 0xf96e, 0xf96f, 0xf970, 0xf971, 0xf972, 0xf973, 0xf974,
+    0xf975, 0xf976, 0xf977, 0xf978, 0xf979, 0xf97a, 0xf97b, 0xf97c,
+    0xf97d, 0xf97e, 0xf980, 0xf981, 0xf982, 0xf983, 0xf984, 0xf985,
+    0xf986, 0xf987, 0xf988, 0xf989, 0xf98a, 0xf98b, 0xf98c, 0xf98d,
+    0xf98e, 0xf98f, 0xf990, 0xf991, 0xf992, 0xf993, 0xf994, 0xf995,
+    0xf996, 0xf997, 0xf998, 0xf999, 0xf99a, 0xf99b, 0xf99c, 0xf99d,
+    0xf99e, 0xf99f, 0xf9a0, 0xfa40, 0xfa41, 0xfa42, 0xfa43, 0xfa44,
+    0xfa45, 0xfa46, 0xfa47, 0xfa48, 0xfa49, 0xfa4a, 0xfa4b, 0xfa4c,
+    0xfa4d, 0xfa4e, 0xfa4f, 0xfa50, 0xfa51, 0xfa52, 0xfa53, 0xfa54,
+    0xfa55, 0xfa56, 0xfa57, 0xfa58, 0xfa59, 0xfa5a, 0xfa5b, 0xfa5c,
+    0xfa5d, 0xfa5e, 0xfa5f, 0xfa60, 0xfa61, 0xfa62, 0xfa63, 0xfa64,
+    0xfa65, 0xfa66, 0xfa67, 0xfa68, 0xfa69, 0xfa6a, 0xfa6b, 0xfa6c,
+    0xfa6d, 0xfa6e, 0xfa6f, 0xfa70, 0xfa71, 0xfa72, 0xfa73, 0xfa74,
+    0xfa75, 0xfa76, 0xfa77, 0xfa78, 0xfa79, 0xfa7a, 0xfa7b, 0xfa7c,
+    0xfa7d, 0xfa7e, 0xfa80, 0xfa81, 0xfa82, 0xfa83, 0xfa84, 0xfa85,
+    0xfa86, 0xfa87, 0xfa88, 0xfa89, 0xfa8a, 0xfa8b, 0xfa8c, 0xfa8d,
+    0xfa8e, 0xfa8f, 0xfa90, 0xfa91, 0xfa92, 0xfa93, 0xfa94, 0xfa95,
+    0xfa96, 0xfa97, 0xfa98, 0xfa99, 0xfa9a, 0xfa9b, 0xfa9c, 0xfa9d,
+    /* 0x9e00 .. 0x9eff */
+    0xfa9e, 0xfa9f, 0xfaa0, 0xfb40, 0xfb41, 0xfb42, 0xfb43, 0xfb44,
+    0xfb45, 0xfb46, 0xfb47, 0xfb48, 0xfb49, 0xfb4a, 0xfb4b, 0xfb4c,
+    0xfb4d, 0xfb4e, 0xfb4f, 0xfb50, 0xfb51, 0xfb52, 0xfb53, 0xfb54,
+    0xfb55, 0xfb56, 0xfb57, 0xfb58, 0xfb59, 0xfb5a, 0xfb5b, 0xc4f1,
+    0xf0af, 0xbca6, 0xf0b0, 0xc3f9, 0xfb5c, 0xc5b8, 0xd1bb, 0xfb5d,
+    0xf0b1, 0xf0b2, 0xf0b3, 0xf0b4, 0xf0b5, 0xd1bc, 0xfb5e, 0xd1ec,
+    0xfb5f, 0xf0b7, 0xf0b6, 0xd4a7, 0xfb60, 0xcdd2, 0xf0b8, 0xf0ba,
+    0xf0b9, 0xf0bb, 0xf0bc, 0xfb61, 0xfb62, 0xb8eb, 0xf0bd, 0xbae8,
+    0xfb63, 0xf0be, 0xf0bf, 0xbee9, 0xf0c0, 0xb6ec, 0xf0c1, 0xf0c2,
+    0xf0c3, 0xf0c4, 0xc8b5, 0xf0c5, 0xf0c6, 0xfb64, 0xf0c7, 0xc5f4,
+    0xfb65, 0xf0c8, 0xfb66, 0xfb67, 0xfb68, 0xf0c9, 0xfb69, 0xf0ca,
+    0xf7bd, 0xfb6a, 0xf0cb, 0xf0cc, 0xf0cd, 0xfb6b, 0xf0ce, 0xfb6c,
+    0xfb6d, 0xfb6e, 0xfb6f, 0xf0cf, 0xbad7, 0xfb70, 0xf0d0, 0xf0d1,
+    0xf0d2, 0xf0d3, 0xf0d4, 0xf0d5, 0xf0d6, 0xf0d8, 0xfb71, 0xfb72,
+    0xd3a5, 0xf0d7, 0xfb73, 0xf0d9, 0xfb74, 0xfb75, 0xfb76, 0xfb77,
+    0xfb78, 0xfb79, 0xfb7a, 0xfb7b, 0xfb7c, 0xfb7d, 0xf5ba, 0xc2b9,
+    0xfb7e, 0xfb80, 0xf7e4, 0xfb81, 0xfb82, 0xfb83, 0xfb84, 0xf7e5,
+    0xf7e6, 0xfb85, 0xfb86, 0xf7e7, 0xfb87, 0xfb88, 0xfb89, 0xfb8a,
+    0xfb8b, 0xfb8c, 0xf7e8, 0xc2b4, 0xfb8d, 0xfb8e, 0xfb8f, 0xfb90,
+    0xfb91, 0xfb92, 0xfb93, 0xfb94, 0xfb95, 0xf7ea, 0xfb96, 0xf7eb,
+    0xfb97, 0xfb98, 0xfb99, 0xfb9a, 0xfb9b, 0xfb9c, 0xc2f3, 0xfb9d,
+    0xfb9e, 0xfb9f, 0xfba0, 0xfc40, 0xfc41, 0xfc42, 0xfc43, 0xfc44,
+    0xfc45, 0xfc46, 0xfc47, 0xfc48, 0xf4f0, 0xfc49, 0xfc4a, 0xfc4b,
+    0xf4ef, 0xfc4c, 0xfc4d, 0xc2e9, 0xfc4e, 0xf7e1, 0xf7e2, 0xfc4f,
+    0xfc50, 0xfc51, 0xfc52, 0xfc53, 0xbbc6, 0xfc54, 0xfc55, 0xfc56,
+    0xfc57, 0xd9e4, 0xfc58, 0xfc59, 0xfc5a, 0xcaf2, 0xc0e8, 0xf0a4,
+    0xfc5b, 0xbada, 0xfc5c, 0xfc5d, 0xc7ad, 0xfc5e, 0xfc5f, 0xfc60,
+    0xc4ac, 0xfc61, 0xfc62, 0xf7ec, 0xf7ed, 0xf7ee, 0xfc63, 0xf7f0,
+    0xf7ef, 0xfc64, 0xf7f1, 0xfc65, 0xfc66, 0xf7f4, 0xfc67, 0xf7f3,
+    0xfc68, 0xf7f2, 0xf7f5, 0xfc69, 0xfc6a, 0xfc6b, 0xfc6c, 0xf7f6,
+    0xfc6d, 0xfc6e, 0xfc6f, 0xfc70, 0xfc71, 0xfc72, 0xfc73, 0xfc74,
+    0xfc75, 0xede9, 0xfc76, 0xedea, 0xedeb, 0xfc77, 0xf6bc, 0xfc78,
+    /* 0x9f00 .. 0x9fff */
+    0xfc79, 0xfc7a, 0xfc7b, 0xfc7c, 0xfc7d, 0xfc7e, 0xfc80, 0xfc81,
+    0xfc82, 0xfc83, 0xfc84, 0xf6bd, 0xfc85, 0xf6be, 0xb6a6, 0xfc86,
+    0xd8be, 0xfc87, 0xfc88, 0xb9c4, 0xfc89, 0xfc8a, 0xfc8b, 0xd8bb,
+    0xfc8c, 0xdcb1, 0xfc8d, 0xfc8e, 0xfc8f, 0xfc90, 0xfc91, 0xfc92,
+    0xcaf3, 0xfc93, 0xf7f7, 0xfc94, 0xfc95, 0xfc96, 0xfc97, 0xfc98,
+    0xfc99, 0xfc9a, 0xfc9b, 0xfc9c, 0xf7f8, 0xfc9d, 0xfc9e, 0xf7f9,
+    0xfc9f, 0xfca0, 0xfd40, 0xfd41, 0xfd42, 0xfd43, 0xfd44, 0xf7fb,
+    0xfd45, 0xf7fa, 0xfd46, 0xb1c7, 0xfd47, 0xf7fc, 0xf7fd, 0xfd48,
+    0xfd49, 0xfd4a, 0xfd4b, 0xfd4c, 0xf7fe, 0xfd4d, 0xfd4e, 0xfd4f,
+    0xfd50, 0xfd51, 0xfd52, 0xfd53, 0xfd54, 0xfd55, 0xfd56, 0xfd57,
+    0xc6eb, 0xecb4, 0xfd58, 0xfd59, 0xfd5a, 0xfd5b, 0xfd5c, 0xfd5d,
+    0xfd5e, 0xfd5f, 0xfd60, 0xfd61, 0xfd62, 0xfd63, 0xfd64, 0xfd65,
+    0xfd66, 0xfd67, 0xfd68, 0xfd69, 0xfd6a, 0xfd6b, 0xfd6c, 0xfd6d,
+    0xfd6e, 0xfd6f, 0xfd70, 0xfd71, 0xfd72, 0xfd73, 0xfd74, 0xfd75,
+    0xfd76, 0xfd77, 0xfd78, 0xfd79, 0xfd7a, 0xfd7b, 0xfd7c, 0xfd7d,
+    0xfd7e, 0xfd80, 0xfd81, 0xfd82, 0xfd83, 0xfd84, 0xfd85, 0xb3dd,
+    0xf6b3, 0xfd86, 0xfd87, 0xf6b4, 0xc1e4, 0xf6b5, 0xf6b6, 0xf6b7,
+    0xf6b8, 0xf6b9, 0xf6ba, 0xc8a3, 0xf6bb, 0xfd88, 0xfd89, 0xfd8a,
+    0xfd8b, 0xfd8c, 0xfd8d, 0xfd8e, 0xfd8f, 0xfd90, 0xfd91, 0xfd92,
+    0xfd93, 0xc1fa, 0xb9a8, 0xede8, 0xfd94, 0xfd95, 0xfd96, 0xb9ea,
+    0xd9df, 0xfd97, 0xfd98, 0xfd99, 0xfd9a, 0xfd9b, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0xf900 .. 0xf9ff */
+    0xd84d, 0xb8fc, 0xdc87, 0xd95a, 0xbbac, 0xb4ae, 0xbee4, 0xfd94,
+    0xfd94, 0xc6f5, 0xbdf0, 0xc0ae, 0xc4ce, 0x91d0, 0xb05d, 0xc15f,
+    0xcc7d, 0xc2dd, 0xc2e3, 0xdf89, 0x98b7, 0xc2e5, 0xc0d3, 0xe7f3,
+    0xc2e4, 0xc0d2, 0xf198, 0x8179, 0xc2d1, 0x99da, 0xa080, 0xcc6d,
+    0xfb5b, 0x8db9, 0x9e45, 0xcb7b, 0xd268, 0xc0ad, 0xc544, 0xcf9e,
+    0xc0c8, 0xc0ca, 0xc0cb, 0xc0c7, 0xfd9c, 0x81ed, 0xc0e4, 0x84da,
+    0x93ef, 0x99a9, 0xa074, 0xb152, 0xc0cf, 0xcc4a, 0xcc94, 0xc2b7,
+    0xc2b6, 0xf494, 0xfa98, 0xc2b5, 0xb593, 0xbe47, 0xc78a, 0xe49b,
+    0xc2b9, 0xd593, 0x89c5, 0xc5aa, 0xbb5c, 0xc340, 0xc0ce, 0xc0da,
+    0xd954, 0xc0d7, 0x89be, 0x8cd2, 0x98c7, 0x9c49, 0xc2a9, 0xc0db,
+    0xbf7c, 0xc2aa, 0xc0d5, 0xc0df, 0x8443, 0xc1e8, 0xb6a0, 0xbe63,
+    0xc1e2, 0xc1ea, 0xd778, 0x9282, 0x98b7, 0xd65a, 0xb5a4, 0x8c8e,
+    0xc5ad, 0xc2ca, 0xae90, 0xb1b1, 0xb491, 0xb1e3, 0x8fcd, 0xb2bb,
+    0xc3da, 0x94b5, 0xcbf7, 0x85a2, 0xc8fb, 0xcaa1, 0xc87e, 0xd566,
+    0x9aa2, 0xb3bd, 0xc9f2, 0xcab0, 0xc8f4, 0xc2d3, 0xc2d4, 0xc1c1,
+    0x83c9, 0xfd9d, 0xc1ba, 0xbc5a, 0xc1bc, 0xd58f, 0xc1bf, 0x84ee,
+    0x85ce, 0xc5ae, 0x8f5d, 0xc2c3, 0x9e56, 0xb55a, 0xe982, 0xf350,
+    0xfb90, 0xc0e8, 0xc1a6, 0x95d1, 0x9a76, 0xde5d, 0xc4ea, 0x917a,
+    0x91d9, 0x93d3, 0x9d69, 0x9f92, 0xad49, 0xfd9e, 0xbe9a, 0xc293,
+    0xdd82, 0xc98f, 0xdf42, 0xe580, 0xc1d0, 0xc1d3, 0xd1ca, 0xc1d2,
+    0xc1d1, 0xd566, 0xc1ae, 0xc4ee, 0xc4ed, 0x9a9a, 0xba9f, 0xab43,
+    0xc1ee, 0xe0f2, 0x8c8e, 0x8e58, 0xc1af, 0xc1e1, 0xac93, 0xc1e7,
+    0xf1f6, 0xe28f, 0xc1e3, 0xec60, 0xee49, 0xc0fd, 0xb659, 0xf5b7,
+    0xeb60, 0x90ba, 0xc1cb, 0xc1c5, 0xe5bc, 0xc4f2, 0xc1cf, 0x98b7,
+    0xc1c7, 0xaf9f, 0xdea4, 0xdf7c, 0xfd88, 0x959e, 0xc8ee, 0x84a2,
+    0x9683, 0xc1f8, 0xc1f7, 0xc1ef, 0xc1f0, 0xc1f4, 0xc1f2, 0xbc7e,
+    0xee90, 0xc1f9, 0xc2be, 0xea91, 0x8290, 0x8d91, 0x9c53, 0xdd86,
+    0xc2c9, 0x90fc, 0xc0f5, 0xc2ca, 0xc2a1, 0xc0fb, 0xc0f4, 0xc2c4,
+    0xd2d7, 0xc0ee, 0xc0e6, 0xc4e0, 0xc0ed, 0xc1a1, 0xeebe, 0xfd9f,
+    0xd165, 0xc0ef, 0xeb78, 0xc4e4, 0xc4e7, 0xc1df, 0x9ffb, 0xad55,
+    0xcc41, 0xfda0, 0xf75b, 0xf7eb, 0xc1d6, 0xc1dc, 0xc552, 0xc1a2,
+    0xf3d2, 0xc1a3, 0xa0ee, 0xd6cb, 0xd752, 0xcab2, 0xb2e8, 0xb4cc,
+    /* 0xfa00 .. 0xfaff */
+    0xc7d0, 0xb6c8, 0xcdd8, 0xccc7, 0xd5ac, 0xb6b4, 0xb1a9, 0xdd97,
+    0xd0d0, 0xbdb5, 0xd28a, 0xc0aa, 0xfe40, 0xfe41, 0xfe42, 0xfe43,
+    0x8956, 0xfe44, 0xc7e7, 0xfe45, 0xfe46, 0x8444, 0xd6ed, 0xd2e6,
+    0xfe47, 0xc9f1, 0xcfe9, 0xb8a3, 0xbeb8, 0xbeab, 0xd3f0, 0xfe48,
+    0xfe49, 0xfe4a, 0xd654, 0xfe4b, 0xfe4c, 0xd2dd, 0xb6bc, 0xfe4d,
+    0xfe4e, 0xfe4f, 0xef88, 0xef95, 0xf05e, 0xfa51, 0x003f, 0x003f,
+    0xceea, 0xc9ae, 0xc3e2, 0xc3e3, 0xc7da, 0xb1b0, 0xbac8, 0x8740,
+    0xc6f7, 0x8942, 0xc4ab, 0x8cd3, 0xe5f8, 0xbbda, 0xbfae, 0xd4f7,
+    0x91cd, 0xc3f4, 0xbcc8, 0xcaee, 0xc3b7, 0xbaa3, 0xe4be, 0x9d68,
+    0xd6f3, 0xa08d, 0xd7c1, 0xb1ae, 0xc9e7, 0xeced, 0xc6ed, 0xb576,
+    0xd7e6, 0xd7a3, 0xb59c, 0xb59d, 0xb759, 0xcdbb, 0xb99d, 0xbe9a,
+    0xbf4e, 0xb7b1, 0xcaf0, 0xd5df, 0xb3f4, 0xdcb3, 0xdcb3, 0xd6f8,
+    0xbad6, 0xd295, 0xd65d, 0xd694, 0xd965, 0xd99b, 0xe5c1, 0xd2dd,
+    0xeb79, 0xed91, 0xee6c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x814b, 0xbff6, 0xc8ab, 0x81e9, 0xb3e4, 0xbcbd, 0xd3c2, 0xc9d7,
+    0xbac8, 0xdffb, 0xe0b9, 0x86ec, 0x8956, 0x899e, 0xd1d9, 0xb1bc,
+    0xe6be, 0x8be3, 0xe2da, 0x8f4d, 0xb2ca, 0xe1e6, 0xe3af, 0xc9f7,
+    0xd3fa, 0xd4f7, 0x9152, 0x91cd, 0xb4f7, 0xdeed, 0xcbd1, 0xdef0,
+    0xb0bd, 0xc7e7, 0xc0ca, 0xcdfb, 0xd5c8, 0xb4f5, 0x9aa2, 0xc1f7,
+    0x9cf4, 0xd7cc, 0x9d68, 0x9e73, 0xd6f3, 0xc7c6, 0xbef4, 0xb7b8,
+    0xd6ed, 0xac99, 0xae4e, 0xbbad, 0xaf8d, 0xcec1, 0xd2e6, 0xcaa2,
+    0xd6b1, 0xb192, 0xd7c5, 0xb46b, 0xb849, 0xb99d, 0xc0e0, 0xbd64,
+    0xbe9a, 0xc090, 0xd5df, 0xbbc4, 0xc841, 0xce82, 0xf1df, 0xb8b2,
+    0xd295, 0xd57b, 0xd654, 0xd588, 0xd65d, 0xd65a, 0xd649, 0xd694,
+    0xd783, 0xd99b, 0xdd94, 0xdf74, 0xe167, 0xe36f, 0xea95, 0xeb79,
+    0xbeb8, 0xed76, 0xed91, 0xed9d, 0xee6c, 0xf449, 0xfd94, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xfd4c, 0xfd89, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0xfb00 .. 0xfbff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x002b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0xfe00 .. 0xfeff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa955, 0xa6f2, 0x003f, 0xa6f4, 0xa6f5, 0xa6e0, 0xa6e1, 0xa6f0,
+    0xa6f1, 0xa6e2, 0xa6e3, 0xa6ee, 0xa6ef, 0xa6e6, 0xa6e7, 0xa6e4,
+    0xa6e5, 0xa6e8, 0xa6e9, 0xa6ea, 0xa6eb, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xa968, 0xa969, 0xa96a, 0xa96b, 0xa96c, 0xa96d, 0xa96e,
+    0xa96f, 0xa970, 0xa971, 0x003f, 0xa972, 0xa973, 0xa974, 0xa975,
+    0xa1aa, 0xa976, 0xa977, 0xa978, 0xa979, 0xa97a, 0xa97b, 0xa97c,
+    0xa97d, 0xa97e, 0xa980, 0xa981, 0xa982, 0xa983, 0xa984, 0x003f,
+    0xa985, 0xa986, 0xa987, 0xa988, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0xff00 .. 0xffff */
+    0x003f, 0xa3a1, 0xa3a2, 0xa3a3, 0xa1e7, 0xa3a5, 0xa3a6, 0xa3a7,
+    0xa3a8, 0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac, 0xa3ad, 0xa3ae, 0xa3af,
+    0xa3b0, 0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4, 0xa3b5, 0xa3b6, 0xa3b7,
+    0xa3b8, 0xa3b9, 0xa3ba, 0xa3bb, 0xa3bc, 0xa3bd, 0xa3be, 0xa3bf,
+    0xa3c0, 0xa3c1, 0xa3c2, 0xa3c3, 0xa3c4, 0xa3c5, 0xa3c6, 0xa3c7,
+    0xa3c8, 0xa3c9, 0xa3ca, 0xa3cb, 0xa3cc, 0xa3cd, 0xa3ce, 0xa3cf,
+    0xa3d0, 0xa3d1, 0xa3d2, 0xa3d3, 0xa3d4, 0xa3d5, 0xa3d6, 0xa3d7,
+    0xa3d8, 0xa3d9, 0xa3da, 0xa3db, 0xa3dc, 0xa3dd, 0xa3de, 0xa3df,
+    0xa3e0, 0xa3e1, 0xa3e2, 0xa3e3, 0xa3e4, 0xa3e5, 0xa3e6, 0xa3e7,
+    0xa3e8, 0xa3e9, 0xa3ea, 0xa3eb, 0xa3ec, 0xa3ed, 0xa3ee, 0xa3ef,
+    0xa3f0, 0xa3f1, 0xa3f2, 0xa3f3, 0xa3f4, 0xa3f5, 0xa3f6, 0xa3f7,
+    0xa3f8, 0xa3f9, 0xa3fa, 0xa3fb, 0xa3fc, 0xa3fd, 0xa1ab, 0x003f,
+    0x003f, 0xa1a3, 0xa1b8, 0xa1b9, 0xa1a2, 0x003f, 0xa5f2, 0xa5a1,
+    0xa5a3, 0xa5a5, 0xa5a7, 0xa5a9, 0xa5e3, 0xa5e5, 0xa5e7, 0xa5c3,
+    0xa960, 0xa5a2, 0xa5a4, 0xa5a6, 0xa5a8, 0xa5aa, 0xa5ab, 0xa5ad,
+    0xa5af, 0xa5b1, 0xa5b3, 0xa5b5, 0xa5b7, 0xa5b9, 0xa5bb, 0xa5bd,
+    0xa5bf, 0xa5c1, 0xa5c4, 0xa5c6, 0xa5c8, 0xa5ca, 0xa5cb, 0xa5cc,
+    0xa5cd, 0xa5ce, 0xa5cf, 0xa5d2, 0xa5d5, 0xa5d8, 0xa5db, 0xa5de,
+    0xa5df, 0xa5e0, 0xa5e1, 0xa5e2, 0xa5e4, 0xa5e6, 0xa5e8, 0xa5e9,
+    0xa5ea, 0xa5eb, 0xa5ec, 0xa5ed, 0xa5ef, 0xa5f3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa1e9, 0xa1ea, 0xa956, 0xa3fe, 0xa957, 0xa3a4, 0x003f, 0x003f,
+    0xa9a6, 0xa1fb, 0xa1fc, 0xa1fa, 0xa1fd, 0xa1f6, 0xa1f0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* defaults */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x0400, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x0500, 0x0600, 0x0700,
+    0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x0d00, 0x0e00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x0f00, 0x1000,
+    0x1100, 0x1200, 0x1300, 0x1400, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x1500, 0x1600,
+    0x1700, 0x1800, 0x1900, 0x1a00, 0x1b00, 0x1c00, 0x1d00, 0x1e00,
+    0x1f00, 0x2000, 0x2100, 0x2200, 0x2300, 0x2400, 0x2500, 0x2600,
+    0x2700, 0x2800, 0x2900, 0x2a00, 0x2b00, 0x2c00, 0x2d00, 0x2e00,
+    0x2f00, 0x3000, 0x3100, 0x3200, 0x3300, 0x3400, 0x3500, 0x3600,
+    0x3700, 0x3800, 0x3900, 0x3a00, 0x3b00, 0x3c00, 0x3d00, 0x3e00,
+    0x3f00, 0x4000, 0x4100, 0x4200, 0x4300, 0x4400, 0x4500, 0x4600,
+    0x4700, 0x4800, 0x4900, 0x4a00, 0x4b00, 0x4c00, 0x4d00, 0x4e00,
+    0x4f00, 0x5000, 0x5100, 0x5200, 0x5300, 0x5400, 0x5500, 0x5600,
+    0x5700, 0x5800, 0x5900, 0x5a00, 0x5b00, 0x5c00, 0x5d00, 0x5e00,
+    0x5f00, 0x6000, 0x6100, 0x6200, 0x6300, 0x6400, 0x6500, 0x6600,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00, 0x6c00,
+    0x6c00, 0x6700, 0x6800, 0x6900, 0x6c00, 0x6c00, 0x6a00, 0x6b00
+};
+
+const struct dbcs_table cptable_936 =
+{
+    { 936, 2, 0x003f, 0x003f, "ANSI/OEM Simplified Chinese GBK" },
+    cp2uni,
+    cp2uni_leadbytes,
+    uni2cp_low,
+    uni2cp_high,
+    { 0x81, 0xfe, 0x00, 0x00 }
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_949.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_949.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_949.c	(revision 16410)
@@ -0,0 +1,9301 @@
+/* code page 949 (ANSI/OEM Korean Unified Hangul) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[32256] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0080, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x003f,
+    /* unused lead bytes */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte 81 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xac02, 0xac03, 0xac05, 0xac06, 0xac0b, 0xac0c, 0xac0d,
+    0xac0e, 0xac0f, 0xac18, 0xac1e, 0xac1f, 0xac21, 0xac22, 0xac23,
+    0xac25, 0xac26, 0xac27, 0xac28, 0xac29, 0xac2a, 0xac2b, 0xac2e,
+    0xac32, 0xac33, 0xac34, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xac35, 0xac36, 0xac37, 0xac3a, 0xac3b, 0xac3d, 0xac3e,
+    0xac3f, 0xac41, 0xac42, 0xac43, 0xac44, 0xac45, 0xac46, 0xac47,
+    0xac48, 0xac49, 0xac4a, 0xac4c, 0xac4e, 0xac4f, 0xac50, 0xac51,
+    0xac52, 0xac53, 0xac55, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xac56, 0xac57, 0xac59, 0xac5a, 0xac5b, 0xac5d, 0xac5e,
+    0xac5f, 0xac60, 0xac61, 0xac62, 0xac63, 0xac64, 0xac65, 0xac66,
+    0xac67, 0xac68, 0xac69, 0xac6a, 0xac6b, 0xac6c, 0xac6d, 0xac6e,
+    0xac6f, 0xac72, 0xac73, 0xac75, 0xac76, 0xac79, 0xac7b, 0xac7c,
+    0xac7d, 0xac7e, 0xac7f, 0xac82, 0xac87, 0xac88, 0xac8d, 0xac8e,
+    0xac8f, 0xac91, 0xac92, 0xac93, 0xac95, 0xac96, 0xac97, 0xac98,
+    0xac99, 0xac9a, 0xac9b, 0xac9e, 0xaca2, 0xaca3, 0xaca4, 0xaca5,
+    0xaca6, 0xaca7, 0xacab, 0xacad, 0xacae, 0xacb1, 0xacb2, 0xacb3,
+    0xacb4, 0xacb5, 0xacb6, 0xacb7, 0xacba, 0xacbe, 0xacbf, 0xacc0,
+    0xacc2, 0xacc3, 0xacc5, 0xacc6, 0xacc7, 0xacc9, 0xacca, 0xaccb,
+    0xaccd, 0xacce, 0xaccf, 0xacd0, 0xacd1, 0xacd2, 0xacd3, 0xacd4,
+    0xacd6, 0xacd8, 0xacd9, 0xacda, 0xacdb, 0xacdc, 0xacdd, 0xacde,
+    0xacdf, 0xace2, 0xace3, 0xace5, 0xace6, 0xace9, 0xaceb, 0xaced,
+    0xacee, 0xacf2, 0xacf4, 0xacf7, 0xacf8, 0xacf9, 0xacfa, 0xacfb,
+    0xacfe, 0xacff, 0xad01, 0xad02, 0xad03, 0xad05, 0xad07, 0xad08,
+    0xad09, 0xad0a, 0xad0b, 0xad0e, 0xad10, 0xad12, 0xad13, 0x003f,
+    /* lead byte 82 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xad14, 0xad15, 0xad16, 0xad17, 0xad19, 0xad1a, 0xad1b,
+    0xad1d, 0xad1e, 0xad1f, 0xad21, 0xad22, 0xad23, 0xad24, 0xad25,
+    0xad26, 0xad27, 0xad28, 0xad2a, 0xad2b, 0xad2e, 0xad2f, 0xad30,
+    0xad31, 0xad32, 0xad33, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xad36, 0xad37, 0xad39, 0xad3a, 0xad3b, 0xad3d, 0xad3e,
+    0xad3f, 0xad40, 0xad41, 0xad42, 0xad43, 0xad46, 0xad48, 0xad4a,
+    0xad4b, 0xad4c, 0xad4d, 0xad4e, 0xad4f, 0xad51, 0xad52, 0xad53,
+    0xad55, 0xad56, 0xad57, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xad59, 0xad5a, 0xad5b, 0xad5c, 0xad5d, 0xad5e, 0xad5f,
+    0xad60, 0xad62, 0xad64, 0xad65, 0xad66, 0xad67, 0xad68, 0xad69,
+    0xad6a, 0xad6b, 0xad6e, 0xad6f, 0xad71, 0xad72, 0xad77, 0xad78,
+    0xad79, 0xad7a, 0xad7e, 0xad80, 0xad83, 0xad84, 0xad85, 0xad86,
+    0xad87, 0xad8a, 0xad8b, 0xad8d, 0xad8e, 0xad8f, 0xad91, 0xad92,
+    0xad93, 0xad94, 0xad95, 0xad96, 0xad97, 0xad98, 0xad99, 0xad9a,
+    0xad9b, 0xad9e, 0xad9f, 0xada0, 0xada1, 0xada2, 0xada3, 0xada5,
+    0xada6, 0xada7, 0xada8, 0xada9, 0xadaa, 0xadab, 0xadac, 0xadad,
+    0xadae, 0xadaf, 0xadb0, 0xadb1, 0xadb2, 0xadb3, 0xadb4, 0xadb5,
+    0xadb6, 0xadb8, 0xadb9, 0xadba, 0xadbb, 0xadbc, 0xadbd, 0xadbe,
+    0xadbf, 0xadc2, 0xadc3, 0xadc5, 0xadc6, 0xadc7, 0xadc9, 0xadca,
+    0xadcb, 0xadcc, 0xadcd, 0xadce, 0xadcf, 0xadd2, 0xadd4, 0xadd5,
+    0xadd6, 0xadd7, 0xadd8, 0xadd9, 0xadda, 0xaddb, 0xaddd, 0xadde,
+    0xaddf, 0xade1, 0xade2, 0xade3, 0xade5, 0xade6, 0xade7, 0xade8,
+    0xade9, 0xadea, 0xadeb, 0xadec, 0xaded, 0xadee, 0xadef, 0xadf0,
+    0xadf1, 0xadf2, 0xadf3, 0xadf4, 0xadf5, 0xadf6, 0xadf7, 0x003f,
+    /* lead byte 83 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xadfa, 0xadfb, 0xadfd, 0xadfe, 0xae02, 0xae03, 0xae04,
+    0xae05, 0xae06, 0xae07, 0xae0a, 0xae0c, 0xae0e, 0xae0f, 0xae10,
+    0xae11, 0xae12, 0xae13, 0xae15, 0xae16, 0xae17, 0xae18, 0xae19,
+    0xae1a, 0xae1b, 0xae1c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xae1d, 0xae1e, 0xae1f, 0xae20, 0xae21, 0xae22, 0xae23,
+    0xae24, 0xae25, 0xae26, 0xae27, 0xae28, 0xae29, 0xae2a, 0xae2b,
+    0xae2c, 0xae2d, 0xae2e, 0xae2f, 0xae32, 0xae33, 0xae35, 0xae36,
+    0xae39, 0xae3b, 0xae3c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xae3d, 0xae3e, 0xae3f, 0xae42, 0xae44, 0xae47, 0xae48,
+    0xae49, 0xae4b, 0xae4f, 0xae51, 0xae52, 0xae53, 0xae55, 0xae57,
+    0xae58, 0xae59, 0xae5a, 0xae5b, 0xae5e, 0xae62, 0xae63, 0xae64,
+    0xae66, 0xae67, 0xae6a, 0xae6b, 0xae6d, 0xae6e, 0xae6f, 0xae71,
+    0xae72, 0xae73, 0xae74, 0xae75, 0xae76, 0xae77, 0xae7a, 0xae7e,
+    0xae7f, 0xae80, 0xae81, 0xae82, 0xae83, 0xae86, 0xae87, 0xae88,
+    0xae89, 0xae8a, 0xae8b, 0xae8d, 0xae8e, 0xae8f, 0xae90, 0xae91,
+    0xae92, 0xae93, 0xae94, 0xae95, 0xae96, 0xae97, 0xae98, 0xae99,
+    0xae9a, 0xae9b, 0xae9c, 0xae9d, 0xae9e, 0xae9f, 0xaea0, 0xaea1,
+    0xaea2, 0xaea3, 0xaea4, 0xaea5, 0xaea6, 0xaea7, 0xaea8, 0xaea9,
+    0xaeaa, 0xaeab, 0xaeac, 0xaead, 0xaeae, 0xaeaf, 0xaeb0, 0xaeb1,
+    0xaeb2, 0xaeb3, 0xaeb4, 0xaeb5, 0xaeb6, 0xaeb7, 0xaeb8, 0xaeb9,
+    0xaeba, 0xaebb, 0xaebf, 0xaec1, 0xaec2, 0xaec3, 0xaec5, 0xaec6,
+    0xaec7, 0xaec8, 0xaec9, 0xaeca, 0xaecb, 0xaece, 0xaed2, 0xaed3,
+    0xaed4, 0xaed5, 0xaed6, 0xaed7, 0xaeda, 0xaedb, 0xaedd, 0xaede,
+    0xaedf, 0xaee0, 0xaee1, 0xaee2, 0xaee3, 0xaee4, 0xaee5, 0x003f,
+    /* lead byte 84 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xaee6, 0xaee7, 0xaee9, 0xaeea, 0xaeec, 0xaeee, 0xaeef,
+    0xaef0, 0xaef1, 0xaef2, 0xaef3, 0xaef5, 0xaef6, 0xaef7, 0xaef9,
+    0xaefa, 0xaefb, 0xaefd, 0xaefe, 0xaeff, 0xaf00, 0xaf01, 0xaf02,
+    0xaf03, 0xaf04, 0xaf05, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xaf06, 0xaf09, 0xaf0a, 0xaf0b, 0xaf0c, 0xaf0e, 0xaf0f,
+    0xaf11, 0xaf12, 0xaf13, 0xaf14, 0xaf15, 0xaf16, 0xaf17, 0xaf18,
+    0xaf19, 0xaf1a, 0xaf1b, 0xaf1c, 0xaf1d, 0xaf1e, 0xaf1f, 0xaf20,
+    0xaf21, 0xaf22, 0xaf23, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xaf24, 0xaf25, 0xaf26, 0xaf27, 0xaf28, 0xaf29, 0xaf2a,
+    0xaf2b, 0xaf2e, 0xaf2f, 0xaf31, 0xaf33, 0xaf35, 0xaf36, 0xaf37,
+    0xaf38, 0xaf39, 0xaf3a, 0xaf3b, 0xaf3e, 0xaf40, 0xaf44, 0xaf45,
+    0xaf46, 0xaf47, 0xaf4a, 0xaf4b, 0xaf4c, 0xaf4d, 0xaf4e, 0xaf4f,
+    0xaf51, 0xaf52, 0xaf53, 0xaf54, 0xaf55, 0xaf56, 0xaf57, 0xaf58,
+    0xaf59, 0xaf5a, 0xaf5b, 0xaf5e, 0xaf5f, 0xaf60, 0xaf61, 0xaf62,
+    0xaf63, 0xaf66, 0xaf67, 0xaf68, 0xaf69, 0xaf6a, 0xaf6b, 0xaf6c,
+    0xaf6d, 0xaf6e, 0xaf6f, 0xaf70, 0xaf71, 0xaf72, 0xaf73, 0xaf74,
+    0xaf75, 0xaf76, 0xaf77, 0xaf78, 0xaf7a, 0xaf7b, 0xaf7c, 0xaf7d,
+    0xaf7e, 0xaf7f, 0xaf81, 0xaf82, 0xaf83, 0xaf85, 0xaf86, 0xaf87,
+    0xaf89, 0xaf8a, 0xaf8b, 0xaf8c, 0xaf8d, 0xaf8e, 0xaf8f, 0xaf92,
+    0xaf93, 0xaf94, 0xaf96, 0xaf97, 0xaf98, 0xaf99, 0xaf9a, 0xaf9b,
+    0xaf9d, 0xaf9e, 0xaf9f, 0xafa0, 0xafa1, 0xafa2, 0xafa3, 0xafa4,
+    0xafa5, 0xafa6, 0xafa7, 0xafa8, 0xafa9, 0xafaa, 0xafab, 0xafac,
+    0xafad, 0xafae, 0xafaf, 0xafb0, 0xafb1, 0xafb2, 0xafb3, 0xafb4,
+    0xafb5, 0xafb6, 0xafb7, 0xafba, 0xafbb, 0xafbd, 0xafbe, 0x003f,
+    /* lead byte 85 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xafbf, 0xafc1, 0xafc2, 0xafc3, 0xafc4, 0xafc5, 0xafc6,
+    0xafca, 0xafcc, 0xafcf, 0xafd0, 0xafd1, 0xafd2, 0xafd3, 0xafd5,
+    0xafd6, 0xafd7, 0xafd8, 0xafd9, 0xafda, 0xafdb, 0xafdd, 0xafde,
+    0xafdf, 0xafe0, 0xafe1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xafe2, 0xafe3, 0xafe4, 0xafe5, 0xafe6, 0xafe7, 0xafea,
+    0xafeb, 0xafec, 0xafed, 0xafee, 0xafef, 0xaff2, 0xaff3, 0xaff5,
+    0xaff6, 0xaff7, 0xaff9, 0xaffa, 0xaffb, 0xaffc, 0xaffd, 0xaffe,
+    0xafff, 0xb002, 0xb003, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb005, 0xb006, 0xb007, 0xb008, 0xb009, 0xb00a, 0xb00b,
+    0xb00d, 0xb00e, 0xb00f, 0xb011, 0xb012, 0xb013, 0xb015, 0xb016,
+    0xb017, 0xb018, 0xb019, 0xb01a, 0xb01b, 0xb01e, 0xb01f, 0xb020,
+    0xb021, 0xb022, 0xb023, 0xb024, 0xb025, 0xb026, 0xb027, 0xb029,
+    0xb02a, 0xb02b, 0xb02c, 0xb02d, 0xb02e, 0xb02f, 0xb030, 0xb031,
+    0xb032, 0xb033, 0xb034, 0xb035, 0xb036, 0xb037, 0xb038, 0xb039,
+    0xb03a, 0xb03b, 0xb03c, 0xb03d, 0xb03e, 0xb03f, 0xb040, 0xb041,
+    0xb042, 0xb043, 0xb046, 0xb047, 0xb049, 0xb04b, 0xb04d, 0xb04f,
+    0xb050, 0xb051, 0xb052, 0xb056, 0xb058, 0xb05a, 0xb05b, 0xb05c,
+    0xb05e, 0xb05f, 0xb060, 0xb061, 0xb062, 0xb063, 0xb064, 0xb065,
+    0xb066, 0xb067, 0xb068, 0xb069, 0xb06a, 0xb06b, 0xb06c, 0xb06d,
+    0xb06e, 0xb06f, 0xb070, 0xb071, 0xb072, 0xb073, 0xb074, 0xb075,
+    0xb076, 0xb077, 0xb078, 0xb079, 0xb07a, 0xb07b, 0xb07e, 0xb07f,
+    0xb081, 0xb082, 0xb083, 0xb085, 0xb086, 0xb087, 0xb088, 0xb089,
+    0xb08a, 0xb08b, 0xb08e, 0xb090, 0xb092, 0xb093, 0xb094, 0xb095,
+    0xb096, 0xb097, 0xb09b, 0xb09d, 0xb09e, 0xb0a3, 0xb0a4, 0x003f,
+    /* lead byte 86 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb0a5, 0xb0a6, 0xb0a7, 0xb0aa, 0xb0b0, 0xb0b2, 0xb0b6,
+    0xb0b7, 0xb0b9, 0xb0ba, 0xb0bb, 0xb0bd, 0xb0be, 0xb0bf, 0xb0c0,
+    0xb0c1, 0xb0c2, 0xb0c3, 0xb0c6, 0xb0ca, 0xb0cb, 0xb0cc, 0xb0cd,
+    0xb0ce, 0xb0cf, 0xb0d2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb0d3, 0xb0d5, 0xb0d6, 0xb0d7, 0xb0d9, 0xb0da, 0xb0db,
+    0xb0dc, 0xb0dd, 0xb0de, 0xb0df, 0xb0e1, 0xb0e2, 0xb0e3, 0xb0e4,
+    0xb0e6, 0xb0e7, 0xb0e8, 0xb0e9, 0xb0ea, 0xb0eb, 0xb0ec, 0xb0ed,
+    0xb0ee, 0xb0ef, 0xb0f0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb0f1, 0xb0f2, 0xb0f3, 0xb0f4, 0xb0f5, 0xb0f6, 0xb0f7,
+    0xb0f8, 0xb0f9, 0xb0fa, 0xb0fb, 0xb0fc, 0xb0fd, 0xb0fe, 0xb0ff,
+    0xb100, 0xb101, 0xb102, 0xb103, 0xb104, 0xb105, 0xb106, 0xb107,
+    0xb10a, 0xb10d, 0xb10e, 0xb10f, 0xb111, 0xb114, 0xb115, 0xb116,
+    0xb117, 0xb11a, 0xb11e, 0xb11f, 0xb120, 0xb121, 0xb122, 0xb126,
+    0xb127, 0xb129, 0xb12a, 0xb12b, 0xb12d, 0xb12e, 0xb12f, 0xb130,
+    0xb131, 0xb132, 0xb133, 0xb136, 0xb13a, 0xb13b, 0xb13c, 0xb13d,
+    0xb13e, 0xb13f, 0xb142, 0xb143, 0xb145, 0xb146, 0xb147, 0xb149,
+    0xb14a, 0xb14b, 0xb14c, 0xb14d, 0xb14e, 0xb14f, 0xb152, 0xb153,
+    0xb156, 0xb157, 0xb159, 0xb15a, 0xb15b, 0xb15d, 0xb15e, 0xb15f,
+    0xb161, 0xb162, 0xb163, 0xb164, 0xb165, 0xb166, 0xb167, 0xb168,
+    0xb169, 0xb16a, 0xb16b, 0xb16c, 0xb16d, 0xb16e, 0xb16f, 0xb170,
+    0xb171, 0xb172, 0xb173, 0xb174, 0xb175, 0xb176, 0xb177, 0xb17a,
+    0xb17b, 0xb17d, 0xb17e, 0xb17f, 0xb181, 0xb183, 0xb184, 0xb185,
+    0xb186, 0xb187, 0xb18a, 0xb18c, 0xb18e, 0xb18f, 0xb190, 0xb191,
+    0xb195, 0xb196, 0xb197, 0xb199, 0xb19a, 0xb19b, 0xb19d, 0x003f,
+    /* lead byte 87 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb19e, 0xb19f, 0xb1a0, 0xb1a1, 0xb1a2, 0xb1a3, 0xb1a4,
+    0xb1a5, 0xb1a6, 0xb1a7, 0xb1a9, 0xb1aa, 0xb1ab, 0xb1ac, 0xb1ad,
+    0xb1ae, 0xb1af, 0xb1b0, 0xb1b1, 0xb1b2, 0xb1b3, 0xb1b4, 0xb1b5,
+    0xb1b6, 0xb1b7, 0xb1b8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb1b9, 0xb1ba, 0xb1bb, 0xb1bc, 0xb1bd, 0xb1be, 0xb1bf,
+    0xb1c0, 0xb1c1, 0xb1c2, 0xb1c3, 0xb1c4, 0xb1c5, 0xb1c6, 0xb1c7,
+    0xb1c8, 0xb1c9, 0xb1ca, 0xb1cb, 0xb1cd, 0xb1ce, 0xb1cf, 0xb1d1,
+    0xb1d2, 0xb1d3, 0xb1d5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb1d6, 0xb1d7, 0xb1d8, 0xb1d9, 0xb1da, 0xb1db, 0xb1de,
+    0xb1e0, 0xb1e1, 0xb1e2, 0xb1e3, 0xb1e4, 0xb1e5, 0xb1e6, 0xb1e7,
+    0xb1ea, 0xb1eb, 0xb1ed, 0xb1ee, 0xb1ef, 0xb1f1, 0xb1f2, 0xb1f3,
+    0xb1f4, 0xb1f5, 0xb1f6, 0xb1f7, 0xb1f8, 0xb1fa, 0xb1fc, 0xb1fe,
+    0xb1ff, 0xb200, 0xb201, 0xb202, 0xb203, 0xb206, 0xb207, 0xb209,
+    0xb20a, 0xb20d, 0xb20e, 0xb20f, 0xb210, 0xb211, 0xb212, 0xb213,
+    0xb216, 0xb218, 0xb21a, 0xb21b, 0xb21c, 0xb21d, 0xb21e, 0xb21f,
+    0xb221, 0xb222, 0xb223, 0xb224, 0xb225, 0xb226, 0xb227, 0xb228,
+    0xb229, 0xb22a, 0xb22b, 0xb22c, 0xb22d, 0xb22e, 0xb22f, 0xb230,
+    0xb231, 0xb232, 0xb233, 0xb235, 0xb236, 0xb237, 0xb238, 0xb239,
+    0xb23a, 0xb23b, 0xb23d, 0xb23e, 0xb23f, 0xb240, 0xb241, 0xb242,
+    0xb243, 0xb244, 0xb245, 0xb246, 0xb247, 0xb248, 0xb249, 0xb24a,
+    0xb24b, 0xb24c, 0xb24d, 0xb24e, 0xb24f, 0xb250, 0xb251, 0xb252,
+    0xb253, 0xb254, 0xb255, 0xb256, 0xb257, 0xb259, 0xb25a, 0xb25b,
+    0xb25d, 0xb25e, 0xb25f, 0xb261, 0xb262, 0xb263, 0xb264, 0xb265,
+    0xb266, 0xb267, 0xb26a, 0xb26b, 0xb26c, 0xb26d, 0xb26e, 0x003f,
+    /* lead byte 88 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb26f, 0xb270, 0xb271, 0xb272, 0xb273, 0xb276, 0xb277,
+    0xb278, 0xb279, 0xb27a, 0xb27b, 0xb27d, 0xb27e, 0xb27f, 0xb280,
+    0xb281, 0xb282, 0xb283, 0xb286, 0xb287, 0xb288, 0xb28a, 0xb28b,
+    0xb28c, 0xb28d, 0xb28e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb28f, 0xb292, 0xb293, 0xb295, 0xb296, 0xb297, 0xb29b,
+    0xb29c, 0xb29d, 0xb29e, 0xb29f, 0xb2a2, 0xb2a4, 0xb2a7, 0xb2a8,
+    0xb2a9, 0xb2ab, 0xb2ad, 0xb2ae, 0xb2af, 0xb2b1, 0xb2b2, 0xb2b3,
+    0xb2b5, 0xb2b6, 0xb2b7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb2b8, 0xb2b9, 0xb2ba, 0xb2bb, 0xb2bc, 0xb2bd, 0xb2be,
+    0xb2bf, 0xb2c0, 0xb2c1, 0xb2c2, 0xb2c3, 0xb2c4, 0xb2c5, 0xb2c6,
+    0xb2c7, 0xb2ca, 0xb2cb, 0xb2cd, 0xb2ce, 0xb2cf, 0xb2d1, 0xb2d3,
+    0xb2d4, 0xb2d5, 0xb2d6, 0xb2d7, 0xb2da, 0xb2dc, 0xb2de, 0xb2df,
+    0xb2e0, 0xb2e1, 0xb2e3, 0xb2e7, 0xb2e9, 0xb2ea, 0xb2f0, 0xb2f1,
+    0xb2f2, 0xb2f6, 0xb2fc, 0xb2fd, 0xb2fe, 0xb302, 0xb303, 0xb305,
+    0xb306, 0xb307, 0xb309, 0xb30a, 0xb30b, 0xb30c, 0xb30d, 0xb30e,
+    0xb30f, 0xb312, 0xb316, 0xb317, 0xb318, 0xb319, 0xb31a, 0xb31b,
+    0xb31d, 0xb31e, 0xb31f, 0xb320, 0xb321, 0xb322, 0xb323, 0xb324,
+    0xb325, 0xb326, 0xb327, 0xb328, 0xb329, 0xb32a, 0xb32b, 0xb32c,
+    0xb32d, 0xb32e, 0xb32f, 0xb330, 0xb331, 0xb332, 0xb333, 0xb334,
+    0xb335, 0xb336, 0xb337, 0xb338, 0xb339, 0xb33a, 0xb33b, 0xb33c,
+    0xb33d, 0xb33e, 0xb33f, 0xb340, 0xb341, 0xb342, 0xb343, 0xb344,
+    0xb345, 0xb346, 0xb347, 0xb348, 0xb349, 0xb34a, 0xb34b, 0xb34c,
+    0xb34d, 0xb34e, 0xb34f, 0xb350, 0xb351, 0xb352, 0xb353, 0xb357,
+    0xb359, 0xb35a, 0xb35d, 0xb360, 0xb361, 0xb362, 0xb363, 0x003f,
+    /* lead byte 89 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb366, 0xb368, 0xb36a, 0xb36c, 0xb36d, 0xb36f, 0xb372,
+    0xb373, 0xb375, 0xb376, 0xb377, 0xb379, 0xb37a, 0xb37b, 0xb37c,
+    0xb37d, 0xb37e, 0xb37f, 0xb382, 0xb386, 0xb387, 0xb388, 0xb389,
+    0xb38a, 0xb38b, 0xb38d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb38e, 0xb38f, 0xb391, 0xb392, 0xb393, 0xb395, 0xb396,
+    0xb397, 0xb398, 0xb399, 0xb39a, 0xb39b, 0xb39c, 0xb39d, 0xb39e,
+    0xb39f, 0xb3a2, 0xb3a3, 0xb3a4, 0xb3a5, 0xb3a6, 0xb3a7, 0xb3a9,
+    0xb3aa, 0xb3ab, 0xb3ad, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb3ae, 0xb3af, 0xb3b0, 0xb3b1, 0xb3b2, 0xb3b3, 0xb3b4,
+    0xb3b5, 0xb3b6, 0xb3b7, 0xb3b8, 0xb3b9, 0xb3ba, 0xb3bb, 0xb3bc,
+    0xb3bd, 0xb3be, 0xb3bf, 0xb3c0, 0xb3c1, 0xb3c2, 0xb3c3, 0xb3c6,
+    0xb3c7, 0xb3c9, 0xb3ca, 0xb3cd, 0xb3cf, 0xb3d1, 0xb3d2, 0xb3d3,
+    0xb3d6, 0xb3d8, 0xb3da, 0xb3dc, 0xb3de, 0xb3df, 0xb3e1, 0xb3e2,
+    0xb3e3, 0xb3e5, 0xb3e6, 0xb3e7, 0xb3e9, 0xb3ea, 0xb3eb, 0xb3ec,
+    0xb3ed, 0xb3ee, 0xb3ef, 0xb3f0, 0xb3f1, 0xb3f2, 0xb3f3, 0xb3f4,
+    0xb3f5, 0xb3f6, 0xb3f7, 0xb3f8, 0xb3f9, 0xb3fa, 0xb3fb, 0xb3fd,
+    0xb3fe, 0xb3ff, 0xb400, 0xb401, 0xb402, 0xb403, 0xb404, 0xb405,
+    0xb406, 0xb407, 0xb408, 0xb409, 0xb40a, 0xb40b, 0xb40c, 0xb40d,
+    0xb40e, 0xb40f, 0xb411, 0xb412, 0xb413, 0xb414, 0xb415, 0xb416,
+    0xb417, 0xb419, 0xb41a, 0xb41b, 0xb41d, 0xb41e, 0xb41f, 0xb421,
+    0xb422, 0xb423, 0xb424, 0xb425, 0xb426, 0xb427, 0xb42a, 0xb42c,
+    0xb42d, 0xb42e, 0xb42f, 0xb430, 0xb431, 0xb432, 0xb433, 0xb435,
+    0xb436, 0xb437, 0xb438, 0xb439, 0xb43a, 0xb43b, 0xb43c, 0xb43d,
+    0xb43e, 0xb43f, 0xb440, 0xb441, 0xb442, 0xb443, 0xb444, 0x003f,
+    /* lead byte 8a */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb445, 0xb446, 0xb447, 0xb448, 0xb449, 0xb44a, 0xb44b,
+    0xb44c, 0xb44d, 0xb44e, 0xb44f, 0xb452, 0xb453, 0xb455, 0xb456,
+    0xb457, 0xb459, 0xb45a, 0xb45b, 0xb45c, 0xb45d, 0xb45e, 0xb45f,
+    0xb462, 0xb464, 0xb466, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb467, 0xb468, 0xb469, 0xb46a, 0xb46b, 0xb46d, 0xb46e,
+    0xb46f, 0xb470, 0xb471, 0xb472, 0xb473, 0xb474, 0xb475, 0xb476,
+    0xb477, 0xb478, 0xb479, 0xb47a, 0xb47b, 0xb47c, 0xb47d, 0xb47e,
+    0xb47f, 0xb481, 0xb482, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb483, 0xb484, 0xb485, 0xb486, 0xb487, 0xb489, 0xb48a,
+    0xb48b, 0xb48c, 0xb48d, 0xb48e, 0xb48f, 0xb490, 0xb491, 0xb492,
+    0xb493, 0xb494, 0xb495, 0xb496, 0xb497, 0xb498, 0xb499, 0xb49a,
+    0xb49b, 0xb49c, 0xb49e, 0xb49f, 0xb4a0, 0xb4a1, 0xb4a2, 0xb4a3,
+    0xb4a5, 0xb4a6, 0xb4a7, 0xb4a9, 0xb4aa, 0xb4ab, 0xb4ad, 0xb4ae,
+    0xb4af, 0xb4b0, 0xb4b1, 0xb4b2, 0xb4b3, 0xb4b4, 0xb4b6, 0xb4b8,
+    0xb4ba, 0xb4bb, 0xb4bc, 0xb4bd, 0xb4be, 0xb4bf, 0xb4c1, 0xb4c2,
+    0xb4c3, 0xb4c5, 0xb4c6, 0xb4c7, 0xb4c9, 0xb4ca, 0xb4cb, 0xb4cc,
+    0xb4cd, 0xb4ce, 0xb4cf, 0xb4d1, 0xb4d2, 0xb4d3, 0xb4d4, 0xb4d6,
+    0xb4d7, 0xb4d8, 0xb4d9, 0xb4da, 0xb4db, 0xb4de, 0xb4df, 0xb4e1,
+    0xb4e2, 0xb4e5, 0xb4e7, 0xb4e8, 0xb4e9, 0xb4ea, 0xb4eb, 0xb4ee,
+    0xb4f0, 0xb4f2, 0xb4f3, 0xb4f4, 0xb4f5, 0xb4f6, 0xb4f7, 0xb4f9,
+    0xb4fa, 0xb4fb, 0xb4fc, 0xb4fd, 0xb4fe, 0xb4ff, 0xb500, 0xb501,
+    0xb502, 0xb503, 0xb504, 0xb505, 0xb506, 0xb507, 0xb508, 0xb509,
+    0xb50a, 0xb50b, 0xb50c, 0xb50d, 0xb50e, 0xb50f, 0xb510, 0xb511,
+    0xb512, 0xb513, 0xb516, 0xb517, 0xb519, 0xb51a, 0xb51d, 0x003f,
+    /* lead byte 8b */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb51e, 0xb51f, 0xb520, 0xb521, 0xb522, 0xb523, 0xb526,
+    0xb52b, 0xb52c, 0xb52d, 0xb52e, 0xb52f, 0xb532, 0xb533, 0xb535,
+    0xb536, 0xb537, 0xb539, 0xb53a, 0xb53b, 0xb53c, 0xb53d, 0xb53e,
+    0xb53f, 0xb542, 0xb546, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb547, 0xb548, 0xb549, 0xb54a, 0xb54e, 0xb54f, 0xb551,
+    0xb552, 0xb553, 0xb555, 0xb556, 0xb557, 0xb558, 0xb559, 0xb55a,
+    0xb55b, 0xb55e, 0xb562, 0xb563, 0xb564, 0xb565, 0xb566, 0xb567,
+    0xb568, 0xb569, 0xb56a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb56b, 0xb56c, 0xb56d, 0xb56e, 0xb56f, 0xb570, 0xb571,
+    0xb572, 0xb573, 0xb574, 0xb575, 0xb576, 0xb577, 0xb578, 0xb579,
+    0xb57a, 0xb57b, 0xb57c, 0xb57d, 0xb57e, 0xb57f, 0xb580, 0xb581,
+    0xb582, 0xb583, 0xb584, 0xb585, 0xb586, 0xb587, 0xb588, 0xb589,
+    0xb58a, 0xb58b, 0xb58c, 0xb58d, 0xb58e, 0xb58f, 0xb590, 0xb591,
+    0xb592, 0xb593, 0xb594, 0xb595, 0xb596, 0xb597, 0xb598, 0xb599,
+    0xb59a, 0xb59b, 0xb59c, 0xb59d, 0xb59e, 0xb59f, 0xb5a2, 0xb5a3,
+    0xb5a5, 0xb5a6, 0xb5a7, 0xb5a9, 0xb5ac, 0xb5ad, 0xb5ae, 0xb5af,
+    0xb5b2, 0xb5b6, 0xb5b7, 0xb5b8, 0xb5b9, 0xb5ba, 0xb5be, 0xb5bf,
+    0xb5c1, 0xb5c2, 0xb5c3, 0xb5c5, 0xb5c6, 0xb5c7, 0xb5c8, 0xb5c9,
+    0xb5ca, 0xb5cb, 0xb5ce, 0xb5d2, 0xb5d3, 0xb5d4, 0xb5d5, 0xb5d6,
+    0xb5d7, 0xb5d9, 0xb5da, 0xb5db, 0xb5dc, 0xb5dd, 0xb5de, 0xb5df,
+    0xb5e0, 0xb5e1, 0xb5e2, 0xb5e3, 0xb5e4, 0xb5e5, 0xb5e6, 0xb5e7,
+    0xb5e8, 0xb5e9, 0xb5ea, 0xb5eb, 0xb5ed, 0xb5ee, 0xb5ef, 0xb5f0,
+    0xb5f1, 0xb5f2, 0xb5f3, 0xb5f4, 0xb5f5, 0xb5f6, 0xb5f7, 0xb5f8,
+    0xb5f9, 0xb5fa, 0xb5fb, 0xb5fc, 0xb5fd, 0xb5fe, 0xb5ff, 0x003f,
+    /* lead byte 8c */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb600, 0xb601, 0xb602, 0xb603, 0xb604, 0xb605, 0xb606,
+    0xb607, 0xb608, 0xb609, 0xb60a, 0xb60b, 0xb60c, 0xb60d, 0xb60e,
+    0xb60f, 0xb612, 0xb613, 0xb615, 0xb616, 0xb617, 0xb619, 0xb61a,
+    0xb61b, 0xb61c, 0xb61d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb61e, 0xb61f, 0xb620, 0xb621, 0xb622, 0xb623, 0xb624,
+    0xb626, 0xb627, 0xb628, 0xb629, 0xb62a, 0xb62b, 0xb62d, 0xb62e,
+    0xb62f, 0xb630, 0xb631, 0xb632, 0xb633, 0xb635, 0xb636, 0xb637,
+    0xb638, 0xb639, 0xb63a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb63b, 0xb63c, 0xb63d, 0xb63e, 0xb63f, 0xb640, 0xb641,
+    0xb642, 0xb643, 0xb644, 0xb645, 0xb646, 0xb647, 0xb649, 0xb64a,
+    0xb64b, 0xb64c, 0xb64d, 0xb64e, 0xb64f, 0xb650, 0xb651, 0xb652,
+    0xb653, 0xb654, 0xb655, 0xb656, 0xb657, 0xb658, 0xb659, 0xb65a,
+    0xb65b, 0xb65c, 0xb65d, 0xb65e, 0xb65f, 0xb660, 0xb661, 0xb662,
+    0xb663, 0xb665, 0xb666, 0xb667, 0xb669, 0xb66a, 0xb66b, 0xb66c,
+    0xb66d, 0xb66e, 0xb66f, 0xb670, 0xb671, 0xb672, 0xb673, 0xb674,
+    0xb675, 0xb676, 0xb677, 0xb678, 0xb679, 0xb67a, 0xb67b, 0xb67c,
+    0xb67d, 0xb67e, 0xb67f, 0xb680, 0xb681, 0xb682, 0xb683, 0xb684,
+    0xb685, 0xb686, 0xb687, 0xb688, 0xb689, 0xb68a, 0xb68b, 0xb68c,
+    0xb68d, 0xb68e, 0xb68f, 0xb690, 0xb691, 0xb692, 0xb693, 0xb694,
+    0xb695, 0xb696, 0xb697, 0xb698, 0xb699, 0xb69a, 0xb69b, 0xb69e,
+    0xb69f, 0xb6a1, 0xb6a2, 0xb6a3, 0xb6a5, 0xb6a6, 0xb6a7, 0xb6a8,
+    0xb6a9, 0xb6aa, 0xb6ad, 0xb6ae, 0xb6af, 0xb6b0, 0xb6b2, 0xb6b3,
+    0xb6b4, 0xb6b5, 0xb6b6, 0xb6b7, 0xb6b8, 0xb6b9, 0xb6ba, 0xb6bb,
+    0xb6bc, 0xb6bd, 0xb6be, 0xb6bf, 0xb6c0, 0xb6c1, 0xb6c2, 0x003f,
+    /* lead byte 8d */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb6c3, 0xb6c4, 0xb6c5, 0xb6c6, 0xb6c7, 0xb6c8, 0xb6c9,
+    0xb6ca, 0xb6cb, 0xb6cc, 0xb6cd, 0xb6ce, 0xb6cf, 0xb6d0, 0xb6d1,
+    0xb6d2, 0xb6d3, 0xb6d5, 0xb6d6, 0xb6d7, 0xb6d8, 0xb6d9, 0xb6da,
+    0xb6db, 0xb6dc, 0xb6dd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb6de, 0xb6df, 0xb6e0, 0xb6e1, 0xb6e2, 0xb6e3, 0xb6e4,
+    0xb6e5, 0xb6e6, 0xb6e7, 0xb6e8, 0xb6e9, 0xb6ea, 0xb6eb, 0xb6ec,
+    0xb6ed, 0xb6ee, 0xb6ef, 0xb6f1, 0xb6f2, 0xb6f3, 0xb6f5, 0xb6f6,
+    0xb6f7, 0xb6f9, 0xb6fa, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb6fb, 0xb6fc, 0xb6fd, 0xb6fe, 0xb6ff, 0xb702, 0xb703,
+    0xb704, 0xb706, 0xb707, 0xb708, 0xb709, 0xb70a, 0xb70b, 0xb70c,
+    0xb70d, 0xb70e, 0xb70f, 0xb710, 0xb711, 0xb712, 0xb713, 0xb714,
+    0xb715, 0xb716, 0xb717, 0xb718, 0xb719, 0xb71a, 0xb71b, 0xb71c,
+    0xb71d, 0xb71e, 0xb71f, 0xb720, 0xb721, 0xb722, 0xb723, 0xb724,
+    0xb725, 0xb726, 0xb727, 0xb72a, 0xb72b, 0xb72d, 0xb72e, 0xb731,
+    0xb732, 0xb733, 0xb734, 0xb735, 0xb736, 0xb737, 0xb73a, 0xb73c,
+    0xb73d, 0xb73e, 0xb73f, 0xb740, 0xb741, 0xb742, 0xb743, 0xb745,
+    0xb746, 0xb747, 0xb749, 0xb74a, 0xb74b, 0xb74d, 0xb74e, 0xb74f,
+    0xb750, 0xb751, 0xb752, 0xb753, 0xb756, 0xb757, 0xb758, 0xb759,
+    0xb75a, 0xb75b, 0xb75c, 0xb75d, 0xb75e, 0xb75f, 0xb761, 0xb762,
+    0xb763, 0xb765, 0xb766, 0xb767, 0xb769, 0xb76a, 0xb76b, 0xb76c,
+    0xb76d, 0xb76e, 0xb76f, 0xb772, 0xb774, 0xb776, 0xb777, 0xb778,
+    0xb779, 0xb77a, 0xb77b, 0xb77e, 0xb77f, 0xb781, 0xb782, 0xb783,
+    0xb785, 0xb786, 0xb787, 0xb788, 0xb789, 0xb78a, 0xb78b, 0xb78e,
+    0xb793, 0xb794, 0xb795, 0xb79a, 0xb79b, 0xb79d, 0xb79e, 0x003f,
+    /* lead byte 8e */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb79f, 0xb7a1, 0xb7a2, 0xb7a3, 0xb7a4, 0xb7a5, 0xb7a6,
+    0xb7a7, 0xb7aa, 0xb7ae, 0xb7af, 0xb7b0, 0xb7b1, 0xb7b2, 0xb7b3,
+    0xb7b6, 0xb7b7, 0xb7b9, 0xb7ba, 0xb7bb, 0xb7bc, 0xb7bd, 0xb7be,
+    0xb7bf, 0xb7c0, 0xb7c1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb7c2, 0xb7c3, 0xb7c4, 0xb7c5, 0xb7c6, 0xb7c8, 0xb7ca,
+    0xb7cb, 0xb7cc, 0xb7cd, 0xb7ce, 0xb7cf, 0xb7d0, 0xb7d1, 0xb7d2,
+    0xb7d3, 0xb7d4, 0xb7d5, 0xb7d6, 0xb7d7, 0xb7d8, 0xb7d9, 0xb7da,
+    0xb7db, 0xb7dc, 0xb7dd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb7de, 0xb7df, 0xb7e0, 0xb7e1, 0xb7e2, 0xb7e3, 0xb7e4,
+    0xb7e5, 0xb7e6, 0xb7e7, 0xb7e8, 0xb7e9, 0xb7ea, 0xb7eb, 0xb7ee,
+    0xb7ef, 0xb7f1, 0xb7f2, 0xb7f3, 0xb7f5, 0xb7f6, 0xb7f7, 0xb7f8,
+    0xb7f9, 0xb7fa, 0xb7fb, 0xb7fe, 0xb802, 0xb803, 0xb804, 0xb805,
+    0xb806, 0xb80a, 0xb80b, 0xb80d, 0xb80e, 0xb80f, 0xb811, 0xb812,
+    0xb813, 0xb814, 0xb815, 0xb816, 0xb817, 0xb81a, 0xb81c, 0xb81e,
+    0xb81f, 0xb820, 0xb821, 0xb822, 0xb823, 0xb826, 0xb827, 0xb829,
+    0xb82a, 0xb82b, 0xb82d, 0xb82e, 0xb82f, 0xb830, 0xb831, 0xb832,
+    0xb833, 0xb836, 0xb83a, 0xb83b, 0xb83c, 0xb83d, 0xb83e, 0xb83f,
+    0xb841, 0xb842, 0xb843, 0xb845, 0xb846, 0xb847, 0xb848, 0xb849,
+    0xb84a, 0xb84b, 0xb84c, 0xb84d, 0xb84e, 0xb84f, 0xb850, 0xb852,
+    0xb854, 0xb855, 0xb856, 0xb857, 0xb858, 0xb859, 0xb85a, 0xb85b,
+    0xb85e, 0xb85f, 0xb861, 0xb862, 0xb863, 0xb865, 0xb866, 0xb867,
+    0xb868, 0xb869, 0xb86a, 0xb86b, 0xb86e, 0xb870, 0xb872, 0xb873,
+    0xb874, 0xb875, 0xb876, 0xb877, 0xb879, 0xb87a, 0xb87b, 0xb87d,
+    0xb87e, 0xb87f, 0xb880, 0xb881, 0xb882, 0xb883, 0xb884, 0x003f,
+    /* lead byte 8f */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb885, 0xb886, 0xb887, 0xb888, 0xb889, 0xb88a, 0xb88b,
+    0xb88c, 0xb88e, 0xb88f, 0xb890, 0xb891, 0xb892, 0xb893, 0xb894,
+    0xb895, 0xb896, 0xb897, 0xb898, 0xb899, 0xb89a, 0xb89b, 0xb89c,
+    0xb89d, 0xb89e, 0xb89f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb8a0, 0xb8a1, 0xb8a2, 0xb8a3, 0xb8a4, 0xb8a5, 0xb8a6,
+    0xb8a7, 0xb8a9, 0xb8aa, 0xb8ab, 0xb8ac, 0xb8ad, 0xb8ae, 0xb8af,
+    0xb8b1, 0xb8b2, 0xb8b3, 0xb8b5, 0xb8b6, 0xb8b7, 0xb8b9, 0xb8ba,
+    0xb8bb, 0xb8bc, 0xb8bd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb8be, 0xb8bf, 0xb8c2, 0xb8c4, 0xb8c6, 0xb8c7, 0xb8c8,
+    0xb8c9, 0xb8ca, 0xb8cb, 0xb8cd, 0xb8ce, 0xb8cf, 0xb8d1, 0xb8d2,
+    0xb8d3, 0xb8d5, 0xb8d6, 0xb8d7, 0xb8d8, 0xb8d9, 0xb8da, 0xb8db,
+    0xb8dc, 0xb8de, 0xb8e0, 0xb8e2, 0xb8e3, 0xb8e4, 0xb8e5, 0xb8e6,
+    0xb8e7, 0xb8ea, 0xb8eb, 0xb8ed, 0xb8ee, 0xb8ef, 0xb8f1, 0xb8f2,
+    0xb8f3, 0xb8f4, 0xb8f5, 0xb8f6, 0xb8f7, 0xb8fa, 0xb8fc, 0xb8fe,
+    0xb8ff, 0xb900, 0xb901, 0xb902, 0xb903, 0xb905, 0xb906, 0xb907,
+    0xb908, 0xb909, 0xb90a, 0xb90b, 0xb90c, 0xb90d, 0xb90e, 0xb90f,
+    0xb910, 0xb911, 0xb912, 0xb913, 0xb914, 0xb915, 0xb916, 0xb917,
+    0xb919, 0xb91a, 0xb91b, 0xb91c, 0xb91d, 0xb91e, 0xb91f, 0xb921,
+    0xb922, 0xb923, 0xb924, 0xb925, 0xb926, 0xb927, 0xb928, 0xb929,
+    0xb92a, 0xb92b, 0xb92c, 0xb92d, 0xb92e, 0xb92f, 0xb930, 0xb931,
+    0xb932, 0xb933, 0xb934, 0xb935, 0xb936, 0xb937, 0xb938, 0xb939,
+    0xb93a, 0xb93b, 0xb93e, 0xb93f, 0xb941, 0xb942, 0xb943, 0xb945,
+    0xb946, 0xb947, 0xb948, 0xb949, 0xb94a, 0xb94b, 0xb94d, 0xb94e,
+    0xb950, 0xb952, 0xb953, 0xb954, 0xb955, 0xb956, 0xb957, 0x003f,
+    /* lead byte 90 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb95a, 0xb95b, 0xb95d, 0xb95e, 0xb95f, 0xb961, 0xb962,
+    0xb963, 0xb964, 0xb965, 0xb966, 0xb967, 0xb96a, 0xb96c, 0xb96e,
+    0xb96f, 0xb970, 0xb971, 0xb972, 0xb973, 0xb976, 0xb977, 0xb979,
+    0xb97a, 0xb97b, 0xb97d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb97e, 0xb97f, 0xb980, 0xb981, 0xb982, 0xb983, 0xb986,
+    0xb988, 0xb98b, 0xb98c, 0xb98f, 0xb990, 0xb991, 0xb992, 0xb993,
+    0xb994, 0xb995, 0xb996, 0xb997, 0xb998, 0xb999, 0xb99a, 0xb99b,
+    0xb99c, 0xb99d, 0xb99e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb99f, 0xb9a0, 0xb9a1, 0xb9a2, 0xb9a3, 0xb9a4, 0xb9a5,
+    0xb9a6, 0xb9a7, 0xb9a8, 0xb9a9, 0xb9aa, 0xb9ab, 0xb9ae, 0xb9af,
+    0xb9b1, 0xb9b2, 0xb9b3, 0xb9b5, 0xb9b6, 0xb9b7, 0xb9b8, 0xb9b9,
+    0xb9ba, 0xb9bb, 0xb9be, 0xb9c0, 0xb9c2, 0xb9c3, 0xb9c4, 0xb9c5,
+    0xb9c6, 0xb9c7, 0xb9ca, 0xb9cb, 0xb9cd, 0xb9d3, 0xb9d4, 0xb9d5,
+    0xb9d6, 0xb9d7, 0xb9da, 0xb9dc, 0xb9df, 0xb9e0, 0xb9e2, 0xb9e6,
+    0xb9e7, 0xb9e9, 0xb9ea, 0xb9eb, 0xb9ed, 0xb9ee, 0xb9ef, 0xb9f0,
+    0xb9f1, 0xb9f2, 0xb9f3, 0xb9f6, 0xb9fb, 0xb9fc, 0xb9fd, 0xb9fe,
+    0xb9ff, 0xba02, 0xba03, 0xba04, 0xba05, 0xba06, 0xba07, 0xba09,
+    0xba0a, 0xba0b, 0xba0c, 0xba0d, 0xba0e, 0xba0f, 0xba10, 0xba11,
+    0xba12, 0xba13, 0xba14, 0xba16, 0xba17, 0xba18, 0xba19, 0xba1a,
+    0xba1b, 0xba1c, 0xba1d, 0xba1e, 0xba1f, 0xba20, 0xba21, 0xba22,
+    0xba23, 0xba24, 0xba25, 0xba26, 0xba27, 0xba28, 0xba29, 0xba2a,
+    0xba2b, 0xba2c, 0xba2d, 0xba2e, 0xba2f, 0xba30, 0xba31, 0xba32,
+    0xba33, 0xba34, 0xba35, 0xba36, 0xba37, 0xba3a, 0xba3b, 0xba3d,
+    0xba3e, 0xba3f, 0xba41, 0xba43, 0xba44, 0xba45, 0xba46, 0x003f,
+    /* lead byte 91 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xba47, 0xba4a, 0xba4c, 0xba4f, 0xba50, 0xba51, 0xba52,
+    0xba56, 0xba57, 0xba59, 0xba5a, 0xba5b, 0xba5d, 0xba5e, 0xba5f,
+    0xba60, 0xba61, 0xba62, 0xba63, 0xba66, 0xba6a, 0xba6b, 0xba6c,
+    0xba6d, 0xba6e, 0xba6f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xba72, 0xba73, 0xba75, 0xba76, 0xba77, 0xba79, 0xba7a,
+    0xba7b, 0xba7c, 0xba7d, 0xba7e, 0xba7f, 0xba80, 0xba81, 0xba82,
+    0xba86, 0xba88, 0xba89, 0xba8a, 0xba8b, 0xba8d, 0xba8e, 0xba8f,
+    0xba90, 0xba91, 0xba92, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xba93, 0xba94, 0xba95, 0xba96, 0xba97, 0xba98, 0xba99,
+    0xba9a, 0xba9b, 0xba9c, 0xba9d, 0xba9e, 0xba9f, 0xbaa0, 0xbaa1,
+    0xbaa2, 0xbaa3, 0xbaa4, 0xbaa5, 0xbaa6, 0xbaa7, 0xbaaa, 0xbaad,
+    0xbaae, 0xbaaf, 0xbab1, 0xbab3, 0xbab4, 0xbab5, 0xbab6, 0xbab7,
+    0xbaba, 0xbabc, 0xbabe, 0xbabf, 0xbac0, 0xbac1, 0xbac2, 0xbac3,
+    0xbac5, 0xbac6, 0xbac7, 0xbac9, 0xbaca, 0xbacb, 0xbacc, 0xbacd,
+    0xbace, 0xbacf, 0xbad0, 0xbad1, 0xbad2, 0xbad3, 0xbad4, 0xbad5,
+    0xbad6, 0xbad7, 0xbada, 0xbadb, 0xbadc, 0xbadd, 0xbade, 0xbadf,
+    0xbae0, 0xbae1, 0xbae2, 0xbae3, 0xbae4, 0xbae5, 0xbae6, 0xbae7,
+    0xbae8, 0xbae9, 0xbaea, 0xbaeb, 0xbaec, 0xbaed, 0xbaee, 0xbaef,
+    0xbaf0, 0xbaf1, 0xbaf2, 0xbaf3, 0xbaf4, 0xbaf5, 0xbaf6, 0xbaf7,
+    0xbaf8, 0xbaf9, 0xbafa, 0xbafb, 0xbafd, 0xbafe, 0xbaff, 0xbb01,
+    0xbb02, 0xbb03, 0xbb05, 0xbb06, 0xbb07, 0xbb08, 0xbb09, 0xbb0a,
+    0xbb0b, 0xbb0c, 0xbb0e, 0xbb10, 0xbb12, 0xbb13, 0xbb14, 0xbb15,
+    0xbb16, 0xbb17, 0xbb19, 0xbb1a, 0xbb1b, 0xbb1d, 0xbb1e, 0xbb1f,
+    0xbb21, 0xbb22, 0xbb23, 0xbb24, 0xbb25, 0xbb26, 0xbb27, 0x003f,
+    /* lead byte 92 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbb28, 0xbb2a, 0xbb2c, 0xbb2d, 0xbb2e, 0xbb2f, 0xbb30,
+    0xbb31, 0xbb32, 0xbb33, 0xbb37, 0xbb39, 0xbb3a, 0xbb3f, 0xbb40,
+    0xbb41, 0xbb42, 0xbb43, 0xbb46, 0xbb48, 0xbb4a, 0xbb4b, 0xbb4c,
+    0xbb4e, 0xbb51, 0xbb52, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbb53, 0xbb55, 0xbb56, 0xbb57, 0xbb59, 0xbb5a, 0xbb5b,
+    0xbb5c, 0xbb5d, 0xbb5e, 0xbb5f, 0xbb60, 0xbb62, 0xbb64, 0xbb65,
+    0xbb66, 0xbb67, 0xbb68, 0xbb69, 0xbb6a, 0xbb6b, 0xbb6d, 0xbb6e,
+    0xbb6f, 0xbb70, 0xbb71, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbb72, 0xbb73, 0xbb74, 0xbb75, 0xbb76, 0xbb77, 0xbb78,
+    0xbb79, 0xbb7a, 0xbb7b, 0xbb7c, 0xbb7d, 0xbb7e, 0xbb7f, 0xbb80,
+    0xbb81, 0xbb82, 0xbb83, 0xbb84, 0xbb85, 0xbb86, 0xbb87, 0xbb89,
+    0xbb8a, 0xbb8b, 0xbb8d, 0xbb8e, 0xbb8f, 0xbb91, 0xbb92, 0xbb93,
+    0xbb94, 0xbb95, 0xbb96, 0xbb97, 0xbb98, 0xbb99, 0xbb9a, 0xbb9b,
+    0xbb9c, 0xbb9d, 0xbb9e, 0xbb9f, 0xbba0, 0xbba1, 0xbba2, 0xbba3,
+    0xbba5, 0xbba6, 0xbba7, 0xbba9, 0xbbaa, 0xbbab, 0xbbad, 0xbbae,
+    0xbbaf, 0xbbb0, 0xbbb1, 0xbbb2, 0xbbb3, 0xbbb5, 0xbbb6, 0xbbb8,
+    0xbbb9, 0xbbba, 0xbbbb, 0xbbbc, 0xbbbd, 0xbbbe, 0xbbbf, 0xbbc1,
+    0xbbc2, 0xbbc3, 0xbbc5, 0xbbc6, 0xbbc7, 0xbbc9, 0xbbca, 0xbbcb,
+    0xbbcc, 0xbbcd, 0xbbce, 0xbbcf, 0xbbd1, 0xbbd2, 0xbbd4, 0xbbd5,
+    0xbbd6, 0xbbd7, 0xbbd8, 0xbbd9, 0xbbda, 0xbbdb, 0xbbdc, 0xbbdd,
+    0xbbde, 0xbbdf, 0xbbe0, 0xbbe1, 0xbbe2, 0xbbe3, 0xbbe4, 0xbbe5,
+    0xbbe6, 0xbbe7, 0xbbe8, 0xbbe9, 0xbbea, 0xbbeb, 0xbbec, 0xbbed,
+    0xbbee, 0xbbef, 0xbbf0, 0xbbf1, 0xbbf2, 0xbbf3, 0xbbf4, 0xbbf5,
+    0xbbf6, 0xbbf7, 0xbbfa, 0xbbfb, 0xbbfd, 0xbbfe, 0xbc01, 0x003f,
+    /* lead byte 93 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbc03, 0xbc04, 0xbc05, 0xbc06, 0xbc07, 0xbc0a, 0xbc0e,
+    0xbc10, 0xbc12, 0xbc13, 0xbc19, 0xbc1a, 0xbc20, 0xbc21, 0xbc22,
+    0xbc23, 0xbc26, 0xbc28, 0xbc2a, 0xbc2b, 0xbc2c, 0xbc2e, 0xbc2f,
+    0xbc32, 0xbc33, 0xbc35, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbc36, 0xbc37, 0xbc39, 0xbc3a, 0xbc3b, 0xbc3c, 0xbc3d,
+    0xbc3e, 0xbc3f, 0xbc42, 0xbc46, 0xbc47, 0xbc48, 0xbc4a, 0xbc4b,
+    0xbc4e, 0xbc4f, 0xbc51, 0xbc52, 0xbc53, 0xbc54, 0xbc55, 0xbc56,
+    0xbc57, 0xbc58, 0xbc59, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbc5a, 0xbc5b, 0xbc5c, 0xbc5e, 0xbc5f, 0xbc60, 0xbc61,
+    0xbc62, 0xbc63, 0xbc64, 0xbc65, 0xbc66, 0xbc67, 0xbc68, 0xbc69,
+    0xbc6a, 0xbc6b, 0xbc6c, 0xbc6d, 0xbc6e, 0xbc6f, 0xbc70, 0xbc71,
+    0xbc72, 0xbc73, 0xbc74, 0xbc75, 0xbc76, 0xbc77, 0xbc78, 0xbc79,
+    0xbc7a, 0xbc7b, 0xbc7c, 0xbc7d, 0xbc7e, 0xbc7f, 0xbc80, 0xbc81,
+    0xbc82, 0xbc83, 0xbc86, 0xbc87, 0xbc89, 0xbc8a, 0xbc8d, 0xbc8f,
+    0xbc90, 0xbc91, 0xbc92, 0xbc93, 0xbc96, 0xbc98, 0xbc9b, 0xbc9c,
+    0xbc9d, 0xbc9e, 0xbc9f, 0xbca2, 0xbca3, 0xbca5, 0xbca6, 0xbca9,
+    0xbcaa, 0xbcab, 0xbcac, 0xbcad, 0xbcae, 0xbcaf, 0xbcb2, 0xbcb6,
+    0xbcb7, 0xbcb8, 0xbcb9, 0xbcba, 0xbcbb, 0xbcbe, 0xbcbf, 0xbcc1,
+    0xbcc2, 0xbcc3, 0xbcc5, 0xbcc6, 0xbcc7, 0xbcc8, 0xbcc9, 0xbcca,
+    0xbccb, 0xbccc, 0xbcce, 0xbcd2, 0xbcd3, 0xbcd4, 0xbcd6, 0xbcd7,
+    0xbcd9, 0xbcda, 0xbcdb, 0xbcdd, 0xbcde, 0xbcdf, 0xbce0, 0xbce1,
+    0xbce2, 0xbce3, 0xbce4, 0xbce5, 0xbce6, 0xbce7, 0xbce8, 0xbce9,
+    0xbcea, 0xbceb, 0xbcec, 0xbced, 0xbcee, 0xbcef, 0xbcf0, 0xbcf1,
+    0xbcf2, 0xbcf3, 0xbcf7, 0xbcf9, 0xbcfa, 0xbcfb, 0xbcfd, 0x003f,
+    /* lead byte 94 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbcfe, 0xbcff, 0xbd00, 0xbd01, 0xbd02, 0xbd03, 0xbd06,
+    0xbd08, 0xbd0a, 0xbd0b, 0xbd0c, 0xbd0d, 0xbd0e, 0xbd0f, 0xbd11,
+    0xbd12, 0xbd13, 0xbd15, 0xbd16, 0xbd17, 0xbd18, 0xbd19, 0xbd1a,
+    0xbd1b, 0xbd1c, 0xbd1d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbd1e, 0xbd1f, 0xbd20, 0xbd21, 0xbd22, 0xbd23, 0xbd25,
+    0xbd26, 0xbd27, 0xbd28, 0xbd29, 0xbd2a, 0xbd2b, 0xbd2d, 0xbd2e,
+    0xbd2f, 0xbd30, 0xbd31, 0xbd32, 0xbd33, 0xbd34, 0xbd35, 0xbd36,
+    0xbd37, 0xbd38, 0xbd39, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbd3a, 0xbd3b, 0xbd3c, 0xbd3d, 0xbd3e, 0xbd3f, 0xbd41,
+    0xbd42, 0xbd43, 0xbd44, 0xbd45, 0xbd46, 0xbd47, 0xbd4a, 0xbd4b,
+    0xbd4d, 0xbd4e, 0xbd4f, 0xbd51, 0xbd52, 0xbd53, 0xbd54, 0xbd55,
+    0xbd56, 0xbd57, 0xbd5a, 0xbd5b, 0xbd5c, 0xbd5d, 0xbd5e, 0xbd5f,
+    0xbd60, 0xbd61, 0xbd62, 0xbd63, 0xbd65, 0xbd66, 0xbd67, 0xbd69,
+    0xbd6a, 0xbd6b, 0xbd6c, 0xbd6d, 0xbd6e, 0xbd6f, 0xbd70, 0xbd71,
+    0xbd72, 0xbd73, 0xbd74, 0xbd75, 0xbd76, 0xbd77, 0xbd78, 0xbd79,
+    0xbd7a, 0xbd7b, 0xbd7c, 0xbd7d, 0xbd7e, 0xbd7f, 0xbd82, 0xbd83,
+    0xbd85, 0xbd86, 0xbd8b, 0xbd8c, 0xbd8d, 0xbd8e, 0xbd8f, 0xbd92,
+    0xbd94, 0xbd96, 0xbd97, 0xbd98, 0xbd9b, 0xbd9d, 0xbd9e, 0xbd9f,
+    0xbda0, 0xbda1, 0xbda2, 0xbda3, 0xbda5, 0xbda6, 0xbda7, 0xbda8,
+    0xbda9, 0xbdaa, 0xbdab, 0xbdac, 0xbdad, 0xbdae, 0xbdaf, 0xbdb1,
+    0xbdb2, 0xbdb3, 0xbdb4, 0xbdb5, 0xbdb6, 0xbdb7, 0xbdb9, 0xbdba,
+    0xbdbb, 0xbdbc, 0xbdbd, 0xbdbe, 0xbdbf, 0xbdc0, 0xbdc1, 0xbdc2,
+    0xbdc3, 0xbdc4, 0xbdc5, 0xbdc6, 0xbdc7, 0xbdc8, 0xbdc9, 0xbdca,
+    0xbdcb, 0xbdcc, 0xbdcd, 0xbdce, 0xbdcf, 0xbdd0, 0xbdd1, 0x003f,
+    /* lead byte 95 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbdd2, 0xbdd3, 0xbdd6, 0xbdd7, 0xbdd9, 0xbdda, 0xbddb,
+    0xbddd, 0xbdde, 0xbddf, 0xbde0, 0xbde1, 0xbde2, 0xbde3, 0xbde4,
+    0xbde5, 0xbde6, 0xbde7, 0xbde8, 0xbdea, 0xbdeb, 0xbdec, 0xbded,
+    0xbdee, 0xbdef, 0xbdf1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbdf2, 0xbdf3, 0xbdf5, 0xbdf6, 0xbdf7, 0xbdf9, 0xbdfa,
+    0xbdfb, 0xbdfc, 0xbdfd, 0xbdfe, 0xbdff, 0xbe01, 0xbe02, 0xbe04,
+    0xbe06, 0xbe07, 0xbe08, 0xbe09, 0xbe0a, 0xbe0b, 0xbe0e, 0xbe0f,
+    0xbe11, 0xbe12, 0xbe13, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbe15, 0xbe16, 0xbe17, 0xbe18, 0xbe19, 0xbe1a, 0xbe1b,
+    0xbe1e, 0xbe20, 0xbe21, 0xbe22, 0xbe23, 0xbe24, 0xbe25, 0xbe26,
+    0xbe27, 0xbe28, 0xbe29, 0xbe2a, 0xbe2b, 0xbe2c, 0xbe2d, 0xbe2e,
+    0xbe2f, 0xbe30, 0xbe31, 0xbe32, 0xbe33, 0xbe34, 0xbe35, 0xbe36,
+    0xbe37, 0xbe38, 0xbe39, 0xbe3a, 0xbe3b, 0xbe3c, 0xbe3d, 0xbe3e,
+    0xbe3f, 0xbe40, 0xbe41, 0xbe42, 0xbe43, 0xbe46, 0xbe47, 0xbe49,
+    0xbe4a, 0xbe4b, 0xbe4d, 0xbe4f, 0xbe50, 0xbe51, 0xbe52, 0xbe53,
+    0xbe56, 0xbe58, 0xbe5c, 0xbe5d, 0xbe5e, 0xbe5f, 0xbe62, 0xbe63,
+    0xbe65, 0xbe66, 0xbe67, 0xbe69, 0xbe6b, 0xbe6c, 0xbe6d, 0xbe6e,
+    0xbe6f, 0xbe72, 0xbe76, 0xbe77, 0xbe78, 0xbe79, 0xbe7a, 0xbe7e,
+    0xbe7f, 0xbe81, 0xbe82, 0xbe83, 0xbe85, 0xbe86, 0xbe87, 0xbe88,
+    0xbe89, 0xbe8a, 0xbe8b, 0xbe8e, 0xbe92, 0xbe93, 0xbe94, 0xbe95,
+    0xbe96, 0xbe97, 0xbe9a, 0xbe9b, 0xbe9c, 0xbe9d, 0xbe9e, 0xbe9f,
+    0xbea0, 0xbea1, 0xbea2, 0xbea3, 0xbea4, 0xbea5, 0xbea6, 0xbea7,
+    0xbea9, 0xbeaa, 0xbeab, 0xbeac, 0xbead, 0xbeae, 0xbeaf, 0xbeb0,
+    0xbeb1, 0xbeb2, 0xbeb3, 0xbeb4, 0xbeb5, 0xbeb6, 0xbeb7, 0x003f,
+    /* lead byte 96 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbeb8, 0xbeb9, 0xbeba, 0xbebb, 0xbebc, 0xbebd, 0xbebe,
+    0xbebf, 0xbec0, 0xbec1, 0xbec2, 0xbec3, 0xbec4, 0xbec5, 0xbec6,
+    0xbec7, 0xbec8, 0xbec9, 0xbeca, 0xbecb, 0xbecc, 0xbecd, 0xbece,
+    0xbecf, 0xbed2, 0xbed3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbed5, 0xbed6, 0xbed9, 0xbeda, 0xbedb, 0xbedc, 0xbedd,
+    0xbede, 0xbedf, 0xbee1, 0xbee2, 0xbee6, 0xbee7, 0xbee8, 0xbee9,
+    0xbeea, 0xbeeb, 0xbeed, 0xbeee, 0xbeef, 0xbef0, 0xbef1, 0xbef2,
+    0xbef3, 0xbef4, 0xbef5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbef6, 0xbef7, 0xbef8, 0xbef9, 0xbefa, 0xbefb, 0xbefc,
+    0xbefd, 0xbefe, 0xbeff, 0xbf00, 0xbf02, 0xbf03, 0xbf04, 0xbf05,
+    0xbf06, 0xbf07, 0xbf0a, 0xbf0b, 0xbf0c, 0xbf0d, 0xbf0e, 0xbf0f,
+    0xbf10, 0xbf11, 0xbf12, 0xbf13, 0xbf14, 0xbf15, 0xbf16, 0xbf17,
+    0xbf1a, 0xbf1e, 0xbf1f, 0xbf20, 0xbf21, 0xbf22, 0xbf23, 0xbf24,
+    0xbf25, 0xbf26, 0xbf27, 0xbf28, 0xbf29, 0xbf2a, 0xbf2b, 0xbf2c,
+    0xbf2d, 0xbf2e, 0xbf2f, 0xbf30, 0xbf31, 0xbf32, 0xbf33, 0xbf34,
+    0xbf35, 0xbf36, 0xbf37, 0xbf38, 0xbf39, 0xbf3a, 0xbf3b, 0xbf3c,
+    0xbf3d, 0xbf3e, 0xbf3f, 0xbf42, 0xbf43, 0xbf45, 0xbf46, 0xbf47,
+    0xbf49, 0xbf4a, 0xbf4b, 0xbf4c, 0xbf4d, 0xbf4e, 0xbf4f, 0xbf52,
+    0xbf53, 0xbf54, 0xbf56, 0xbf57, 0xbf58, 0xbf59, 0xbf5a, 0xbf5b,
+    0xbf5c, 0xbf5d, 0xbf5e, 0xbf5f, 0xbf60, 0xbf61, 0xbf62, 0xbf63,
+    0xbf64, 0xbf65, 0xbf66, 0xbf67, 0xbf68, 0xbf69, 0xbf6a, 0xbf6b,
+    0xbf6c, 0xbf6d, 0xbf6e, 0xbf6f, 0xbf70, 0xbf71, 0xbf72, 0xbf73,
+    0xbf74, 0xbf75, 0xbf76, 0xbf77, 0xbf78, 0xbf79, 0xbf7a, 0xbf7b,
+    0xbf7c, 0xbf7d, 0xbf7e, 0xbf7f, 0xbf80, 0xbf81, 0xbf82, 0x003f,
+    /* lead byte 97 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbf83, 0xbf84, 0xbf85, 0xbf86, 0xbf87, 0xbf88, 0xbf89,
+    0xbf8a, 0xbf8b, 0xbf8c, 0xbf8d, 0xbf8e, 0xbf8f, 0xbf90, 0xbf91,
+    0xbf92, 0xbf93, 0xbf95, 0xbf96, 0xbf97, 0xbf98, 0xbf99, 0xbf9a,
+    0xbf9b, 0xbf9c, 0xbf9d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbf9e, 0xbf9f, 0xbfa0, 0xbfa1, 0xbfa2, 0xbfa3, 0xbfa4,
+    0xbfa5, 0xbfa6, 0xbfa7, 0xbfa8, 0xbfa9, 0xbfaa, 0xbfab, 0xbfac,
+    0xbfad, 0xbfae, 0xbfaf, 0xbfb1, 0xbfb2, 0xbfb3, 0xbfb4, 0xbfb5,
+    0xbfb6, 0xbfb7, 0xbfb8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xbfb9, 0xbfba, 0xbfbb, 0xbfbc, 0xbfbd, 0xbfbe, 0xbfbf,
+    0xbfc0, 0xbfc1, 0xbfc2, 0xbfc3, 0xbfc4, 0xbfc6, 0xbfc7, 0xbfc8,
+    0xbfc9, 0xbfca, 0xbfcb, 0xbfce, 0xbfcf, 0xbfd1, 0xbfd2, 0xbfd3,
+    0xbfd5, 0xbfd6, 0xbfd7, 0xbfd8, 0xbfd9, 0xbfda, 0xbfdb, 0xbfdd,
+    0xbfde, 0xbfe0, 0xbfe2, 0xbfe3, 0xbfe4, 0xbfe5, 0xbfe6, 0xbfe7,
+    0xbfe8, 0xbfe9, 0xbfea, 0xbfeb, 0xbfec, 0xbfed, 0xbfee, 0xbfef,
+    0xbff0, 0xbff1, 0xbff2, 0xbff3, 0xbff4, 0xbff5, 0xbff6, 0xbff7,
+    0xbff8, 0xbff9, 0xbffa, 0xbffb, 0xbffc, 0xbffd, 0xbffe, 0xbfff,
+    0xc000, 0xc001, 0xc002, 0xc003, 0xc004, 0xc005, 0xc006, 0xc007,
+    0xc008, 0xc009, 0xc00a, 0xc00b, 0xc00c, 0xc00d, 0xc00e, 0xc00f,
+    0xc010, 0xc011, 0xc012, 0xc013, 0xc014, 0xc015, 0xc016, 0xc017,
+    0xc018, 0xc019, 0xc01a, 0xc01b, 0xc01c, 0xc01d, 0xc01e, 0xc01f,
+    0xc020, 0xc021, 0xc022, 0xc023, 0xc024, 0xc025, 0xc026, 0xc027,
+    0xc028, 0xc029, 0xc02a, 0xc02b, 0xc02c, 0xc02d, 0xc02e, 0xc02f,
+    0xc030, 0xc031, 0xc032, 0xc033, 0xc034, 0xc035, 0xc036, 0xc037,
+    0xc038, 0xc039, 0xc03a, 0xc03b, 0xc03d, 0xc03e, 0xc03f, 0x003f,
+    /* lead byte 98 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc040, 0xc041, 0xc042, 0xc043, 0xc044, 0xc045, 0xc046,
+    0xc047, 0xc048, 0xc049, 0xc04a, 0xc04b, 0xc04c, 0xc04d, 0xc04e,
+    0xc04f, 0xc050, 0xc052, 0xc053, 0xc054, 0xc055, 0xc056, 0xc057,
+    0xc059, 0xc05a, 0xc05b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc05d, 0xc05e, 0xc05f, 0xc061, 0xc062, 0xc063, 0xc064,
+    0xc065, 0xc066, 0xc067, 0xc06a, 0xc06b, 0xc06c, 0xc06d, 0xc06e,
+    0xc06f, 0xc070, 0xc071, 0xc072, 0xc073, 0xc074, 0xc075, 0xc076,
+    0xc077, 0xc078, 0xc079, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc07a, 0xc07b, 0xc07c, 0xc07d, 0xc07e, 0xc07f, 0xc080,
+    0xc081, 0xc082, 0xc083, 0xc084, 0xc085, 0xc086, 0xc087, 0xc088,
+    0xc089, 0xc08a, 0xc08b, 0xc08c, 0xc08d, 0xc08e, 0xc08f, 0xc092,
+    0xc093, 0xc095, 0xc096, 0xc097, 0xc099, 0xc09a, 0xc09b, 0xc09c,
+    0xc09d, 0xc09e, 0xc09f, 0xc0a2, 0xc0a4, 0xc0a6, 0xc0a7, 0xc0a8,
+    0xc0a9, 0xc0aa, 0xc0ab, 0xc0ae, 0xc0b1, 0xc0b2, 0xc0b7, 0xc0b8,
+    0xc0b9, 0xc0ba, 0xc0bb, 0xc0be, 0xc0c2, 0xc0c3, 0xc0c4, 0xc0c6,
+    0xc0c7, 0xc0ca, 0xc0cb, 0xc0cd, 0xc0ce, 0xc0cf, 0xc0d1, 0xc0d2,
+    0xc0d3, 0xc0d4, 0xc0d5, 0xc0d6, 0xc0d7, 0xc0da, 0xc0de, 0xc0df,
+    0xc0e0, 0xc0e1, 0xc0e2, 0xc0e3, 0xc0e6, 0xc0e7, 0xc0e9, 0xc0ea,
+    0xc0eb, 0xc0ed, 0xc0ee, 0xc0ef, 0xc0f0, 0xc0f1, 0xc0f2, 0xc0f3,
+    0xc0f6, 0xc0f8, 0xc0fa, 0xc0fb, 0xc0fc, 0xc0fd, 0xc0fe, 0xc0ff,
+    0xc101, 0xc102, 0xc103, 0xc105, 0xc106, 0xc107, 0xc109, 0xc10a,
+    0xc10b, 0xc10c, 0xc10d, 0xc10e, 0xc10f, 0xc111, 0xc112, 0xc113,
+    0xc114, 0xc116, 0xc117, 0xc118, 0xc119, 0xc11a, 0xc11b, 0xc121,
+    0xc122, 0xc125, 0xc128, 0xc129, 0xc12a, 0xc12b, 0xc12e, 0x003f,
+    /* lead byte 99 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc132, 0xc133, 0xc134, 0xc135, 0xc137, 0xc13a, 0xc13b,
+    0xc13d, 0xc13e, 0xc13f, 0xc141, 0xc142, 0xc143, 0xc144, 0xc145,
+    0xc146, 0xc147, 0xc14a, 0xc14e, 0xc14f, 0xc150, 0xc151, 0xc152,
+    0xc153, 0xc156, 0xc157, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc159, 0xc15a, 0xc15b, 0xc15d, 0xc15e, 0xc15f, 0xc160,
+    0xc161, 0xc162, 0xc163, 0xc166, 0xc16a, 0xc16b, 0xc16c, 0xc16d,
+    0xc16e, 0xc16f, 0xc171, 0xc172, 0xc173, 0xc175, 0xc176, 0xc177,
+    0xc179, 0xc17a, 0xc17b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc17c, 0xc17d, 0xc17e, 0xc17f, 0xc180, 0xc181, 0xc182,
+    0xc183, 0xc184, 0xc186, 0xc187, 0xc188, 0xc189, 0xc18a, 0xc18b,
+    0xc18f, 0xc191, 0xc192, 0xc193, 0xc195, 0xc197, 0xc198, 0xc199,
+    0xc19a, 0xc19b, 0xc19e, 0xc1a0, 0xc1a2, 0xc1a3, 0xc1a4, 0xc1a6,
+    0xc1a7, 0xc1aa, 0xc1ab, 0xc1ad, 0xc1ae, 0xc1af, 0xc1b1, 0xc1b2,
+    0xc1b3, 0xc1b4, 0xc1b5, 0xc1b6, 0xc1b7, 0xc1b8, 0xc1b9, 0xc1ba,
+    0xc1bb, 0xc1bc, 0xc1be, 0xc1bf, 0xc1c0, 0xc1c1, 0xc1c2, 0xc1c3,
+    0xc1c5, 0xc1c6, 0xc1c7, 0xc1c9, 0xc1ca, 0xc1cb, 0xc1cd, 0xc1ce,
+    0xc1cf, 0xc1d0, 0xc1d1, 0xc1d2, 0xc1d3, 0xc1d5, 0xc1d6, 0xc1d9,
+    0xc1da, 0xc1db, 0xc1dc, 0xc1dd, 0xc1de, 0xc1df, 0xc1e1, 0xc1e2,
+    0xc1e3, 0xc1e5, 0xc1e6, 0xc1e7, 0xc1e9, 0xc1ea, 0xc1eb, 0xc1ec,
+    0xc1ed, 0xc1ee, 0xc1ef, 0xc1f2, 0xc1f4, 0xc1f5, 0xc1f6, 0xc1f7,
+    0xc1f8, 0xc1f9, 0xc1fa, 0xc1fb, 0xc1fe, 0xc1ff, 0xc201, 0xc202,
+    0xc203, 0xc205, 0xc206, 0xc207, 0xc208, 0xc209, 0xc20a, 0xc20b,
+    0xc20e, 0xc210, 0xc212, 0xc213, 0xc214, 0xc215, 0xc216, 0xc217,
+    0xc21a, 0xc21b, 0xc21d, 0xc21e, 0xc221, 0xc222, 0xc223, 0x003f,
+    /* lead byte 9a */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc224, 0xc225, 0xc226, 0xc227, 0xc22a, 0xc22c, 0xc22e,
+    0xc230, 0xc233, 0xc235, 0xc236, 0xc237, 0xc238, 0xc239, 0xc23a,
+    0xc23b, 0xc23c, 0xc23d, 0xc23e, 0xc23f, 0xc240, 0xc241, 0xc242,
+    0xc243, 0xc244, 0xc245, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc246, 0xc247, 0xc249, 0xc24a, 0xc24b, 0xc24c, 0xc24d,
+    0xc24e, 0xc24f, 0xc252, 0xc253, 0xc255, 0xc256, 0xc257, 0xc259,
+    0xc25a, 0xc25b, 0xc25c, 0xc25d, 0xc25e, 0xc25f, 0xc261, 0xc262,
+    0xc263, 0xc264, 0xc266, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc267, 0xc268, 0xc269, 0xc26a, 0xc26b, 0xc26e, 0xc26f,
+    0xc271, 0xc272, 0xc273, 0xc275, 0xc276, 0xc277, 0xc278, 0xc279,
+    0xc27a, 0xc27b, 0xc27e, 0xc280, 0xc282, 0xc283, 0xc284, 0xc285,
+    0xc286, 0xc287, 0xc28a, 0xc28b, 0xc28c, 0xc28d, 0xc28e, 0xc28f,
+    0xc291, 0xc292, 0xc293, 0xc294, 0xc295, 0xc296, 0xc297, 0xc299,
+    0xc29a, 0xc29c, 0xc29e, 0xc29f, 0xc2a0, 0xc2a1, 0xc2a2, 0xc2a3,
+    0xc2a6, 0xc2a7, 0xc2a9, 0xc2aa, 0xc2ab, 0xc2ae, 0xc2af, 0xc2b0,
+    0xc2b1, 0xc2b2, 0xc2b3, 0xc2b6, 0xc2b8, 0xc2ba, 0xc2bb, 0xc2bc,
+    0xc2bd, 0xc2be, 0xc2bf, 0xc2c0, 0xc2c1, 0xc2c2, 0xc2c3, 0xc2c4,
+    0xc2c5, 0xc2c6, 0xc2c7, 0xc2c8, 0xc2c9, 0xc2ca, 0xc2cb, 0xc2cc,
+    0xc2cd, 0xc2ce, 0xc2cf, 0xc2d0, 0xc2d1, 0xc2d2, 0xc2d3, 0xc2d4,
+    0xc2d5, 0xc2d6, 0xc2d7, 0xc2d8, 0xc2d9, 0xc2da, 0xc2db, 0xc2de,
+    0xc2df, 0xc2e1, 0xc2e2, 0xc2e5, 0xc2e6, 0xc2e7, 0xc2e8, 0xc2e9,
+    0xc2ea, 0xc2ee, 0xc2f0, 0xc2f2, 0xc2f3, 0xc2f4, 0xc2f5, 0xc2f7,
+    0xc2fa, 0xc2fd, 0xc2fe, 0xc2ff, 0xc301, 0xc302, 0xc303, 0xc304,
+    0xc305, 0xc306, 0xc307, 0xc30a, 0xc30b, 0xc30e, 0xc30f, 0x003f,
+    /* lead byte 9b */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc310, 0xc311, 0xc312, 0xc316, 0xc317, 0xc319, 0xc31a,
+    0xc31b, 0xc31d, 0xc31e, 0xc31f, 0xc320, 0xc321, 0xc322, 0xc323,
+    0xc326, 0xc327, 0xc32a, 0xc32b, 0xc32c, 0xc32d, 0xc32e, 0xc32f,
+    0xc330, 0xc331, 0xc332, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc333, 0xc334, 0xc335, 0xc336, 0xc337, 0xc338, 0xc339,
+    0xc33a, 0xc33b, 0xc33c, 0xc33d, 0xc33e, 0xc33f, 0xc340, 0xc341,
+    0xc342, 0xc343, 0xc344, 0xc346, 0xc347, 0xc348, 0xc349, 0xc34a,
+    0xc34b, 0xc34c, 0xc34d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc34e, 0xc34f, 0xc350, 0xc351, 0xc352, 0xc353, 0xc354,
+    0xc355, 0xc356, 0xc357, 0xc358, 0xc359, 0xc35a, 0xc35b, 0xc35c,
+    0xc35d, 0xc35e, 0xc35f, 0xc360, 0xc361, 0xc362, 0xc363, 0xc364,
+    0xc365, 0xc366, 0xc367, 0xc36a, 0xc36b, 0xc36d, 0xc36e, 0xc36f,
+    0xc371, 0xc373, 0xc374, 0xc375, 0xc376, 0xc377, 0xc37a, 0xc37b,
+    0xc37e, 0xc37f, 0xc380, 0xc381, 0xc382, 0xc383, 0xc385, 0xc386,
+    0xc387, 0xc389, 0xc38a, 0xc38b, 0xc38d, 0xc38e, 0xc38f, 0xc390,
+    0xc391, 0xc392, 0xc393, 0xc394, 0xc395, 0xc396, 0xc397, 0xc398,
+    0xc399, 0xc39a, 0xc39b, 0xc39c, 0xc39d, 0xc39e, 0xc39f, 0xc3a0,
+    0xc3a1, 0xc3a2, 0xc3a3, 0xc3a4, 0xc3a5, 0xc3a6, 0xc3a7, 0xc3a8,
+    0xc3a9, 0xc3aa, 0xc3ab, 0xc3ac, 0xc3ad, 0xc3ae, 0xc3af, 0xc3b0,
+    0xc3b1, 0xc3b2, 0xc3b3, 0xc3b4, 0xc3b5, 0xc3b6, 0xc3b7, 0xc3b8,
+    0xc3b9, 0xc3ba, 0xc3bb, 0xc3bc, 0xc3bd, 0xc3be, 0xc3bf, 0xc3c1,
+    0xc3c2, 0xc3c3, 0xc3c4, 0xc3c5, 0xc3c6, 0xc3c7, 0xc3c8, 0xc3c9,
+    0xc3ca, 0xc3cb, 0xc3cc, 0xc3cd, 0xc3ce, 0xc3cf, 0xc3d0, 0xc3d1,
+    0xc3d2, 0xc3d3, 0xc3d4, 0xc3d5, 0xc3d6, 0xc3d7, 0xc3da, 0x003f,
+    /* lead byte 9c */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc3db, 0xc3dd, 0xc3de, 0xc3e1, 0xc3e3, 0xc3e4, 0xc3e5,
+    0xc3e6, 0xc3e7, 0xc3ea, 0xc3eb, 0xc3ec, 0xc3ee, 0xc3ef, 0xc3f0,
+    0xc3f1, 0xc3f2, 0xc3f3, 0xc3f6, 0xc3f7, 0xc3f9, 0xc3fa, 0xc3fb,
+    0xc3fc, 0xc3fd, 0xc3fe, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc3ff, 0xc400, 0xc401, 0xc402, 0xc403, 0xc404, 0xc405,
+    0xc406, 0xc407, 0xc409, 0xc40a, 0xc40b, 0xc40c, 0xc40d, 0xc40e,
+    0xc40f, 0xc411, 0xc412, 0xc413, 0xc414, 0xc415, 0xc416, 0xc417,
+    0xc418, 0xc419, 0xc41a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc41b, 0xc41c, 0xc41d, 0xc41e, 0xc41f, 0xc420, 0xc421,
+    0xc422, 0xc423, 0xc425, 0xc426, 0xc427, 0xc428, 0xc429, 0xc42a,
+    0xc42b, 0xc42d, 0xc42e, 0xc42f, 0xc431, 0xc432, 0xc433, 0xc435,
+    0xc436, 0xc437, 0xc438, 0xc439, 0xc43a, 0xc43b, 0xc43e, 0xc43f,
+    0xc440, 0xc441, 0xc442, 0xc443, 0xc444, 0xc445, 0xc446, 0xc447,
+    0xc449, 0xc44a, 0xc44b, 0xc44c, 0xc44d, 0xc44e, 0xc44f, 0xc450,
+    0xc451, 0xc452, 0xc453, 0xc454, 0xc455, 0xc456, 0xc457, 0xc458,
+    0xc459, 0xc45a, 0xc45b, 0xc45c, 0xc45d, 0xc45e, 0xc45f, 0xc460,
+    0xc461, 0xc462, 0xc463, 0xc466, 0xc467, 0xc469, 0xc46a, 0xc46b,
+    0xc46d, 0xc46e, 0xc46f, 0xc470, 0xc471, 0xc472, 0xc473, 0xc476,
+    0xc477, 0xc478, 0xc47a, 0xc47b, 0xc47c, 0xc47d, 0xc47e, 0xc47f,
+    0xc481, 0xc482, 0xc483, 0xc484, 0xc485, 0xc486, 0xc487, 0xc488,
+    0xc489, 0xc48a, 0xc48b, 0xc48c, 0xc48d, 0xc48e, 0xc48f, 0xc490,
+    0xc491, 0xc492, 0xc493, 0xc495, 0xc496, 0xc497, 0xc498, 0xc499,
+    0xc49a, 0xc49b, 0xc49d, 0xc49e, 0xc49f, 0xc4a0, 0xc4a1, 0xc4a2,
+    0xc4a3, 0xc4a4, 0xc4a5, 0xc4a6, 0xc4a7, 0xc4a8, 0xc4a9, 0x003f,
+    /* lead byte 9d */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc4aa, 0xc4ab, 0xc4ac, 0xc4ad, 0xc4ae, 0xc4af, 0xc4b0,
+    0xc4b1, 0xc4b2, 0xc4b3, 0xc4b4, 0xc4b5, 0xc4b6, 0xc4b7, 0xc4b9,
+    0xc4ba, 0xc4bb, 0xc4bd, 0xc4be, 0xc4bf, 0xc4c0, 0xc4c1, 0xc4c2,
+    0xc4c3, 0xc4c4, 0xc4c5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc4c6, 0xc4c7, 0xc4c8, 0xc4c9, 0xc4ca, 0xc4cb, 0xc4cc,
+    0xc4cd, 0xc4ce, 0xc4cf, 0xc4d0, 0xc4d1, 0xc4d2, 0xc4d3, 0xc4d4,
+    0xc4d5, 0xc4d6, 0xc4d7, 0xc4d8, 0xc4d9, 0xc4da, 0xc4db, 0xc4dc,
+    0xc4dd, 0xc4de, 0xc4df, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc4e0, 0xc4e1, 0xc4e2, 0xc4e3, 0xc4e4, 0xc4e5, 0xc4e6,
+    0xc4e7, 0xc4e8, 0xc4ea, 0xc4eb, 0xc4ec, 0xc4ed, 0xc4ee, 0xc4ef,
+    0xc4f2, 0xc4f3, 0xc4f5, 0xc4f6, 0xc4f7, 0xc4f9, 0xc4fb, 0xc4fc,
+    0xc4fd, 0xc4fe, 0xc502, 0xc503, 0xc504, 0xc505, 0xc506, 0xc507,
+    0xc508, 0xc509, 0xc50a, 0xc50b, 0xc50d, 0xc50e, 0xc50f, 0xc511,
+    0xc512, 0xc513, 0xc515, 0xc516, 0xc517, 0xc518, 0xc519, 0xc51a,
+    0xc51b, 0xc51d, 0xc51e, 0xc51f, 0xc520, 0xc521, 0xc522, 0xc523,
+    0xc524, 0xc525, 0xc526, 0xc527, 0xc52a, 0xc52b, 0xc52d, 0xc52e,
+    0xc52f, 0xc531, 0xc532, 0xc533, 0xc534, 0xc535, 0xc536, 0xc537,
+    0xc53a, 0xc53c, 0xc53e, 0xc53f, 0xc540, 0xc541, 0xc542, 0xc543,
+    0xc546, 0xc547, 0xc54b, 0xc54f, 0xc550, 0xc551, 0xc552, 0xc556,
+    0xc55a, 0xc55b, 0xc55c, 0xc55f, 0xc562, 0xc563, 0xc565, 0xc566,
+    0xc567, 0xc569, 0xc56a, 0xc56b, 0xc56c, 0xc56d, 0xc56e, 0xc56f,
+    0xc572, 0xc576, 0xc577, 0xc578, 0xc579, 0xc57a, 0xc57b, 0xc57e,
+    0xc57f, 0xc581, 0xc582, 0xc583, 0xc585, 0xc586, 0xc588, 0xc589,
+    0xc58a, 0xc58b, 0xc58e, 0xc590, 0xc592, 0xc593, 0xc594, 0x003f,
+    /* lead byte 9e */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc596, 0xc599, 0xc59a, 0xc59b, 0xc59d, 0xc59e, 0xc59f,
+    0xc5a1, 0xc5a2, 0xc5a3, 0xc5a4, 0xc5a5, 0xc5a6, 0xc5a7, 0xc5a8,
+    0xc5aa, 0xc5ab, 0xc5ac, 0xc5ad, 0xc5ae, 0xc5af, 0xc5b0, 0xc5b1,
+    0xc5b2, 0xc5b3, 0xc5b6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc5b7, 0xc5ba, 0xc5bf, 0xc5c0, 0xc5c1, 0xc5c2, 0xc5c3,
+    0xc5cb, 0xc5cd, 0xc5cf, 0xc5d2, 0xc5d3, 0xc5d5, 0xc5d6, 0xc5d7,
+    0xc5d9, 0xc5da, 0xc5db, 0xc5dc, 0xc5dd, 0xc5de, 0xc5df, 0xc5e2,
+    0xc5e4, 0xc5e6, 0xc5e7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc5e8, 0xc5e9, 0xc5ea, 0xc5eb, 0xc5ef, 0xc5f1, 0xc5f2,
+    0xc5f3, 0xc5f5, 0xc5f8, 0xc5f9, 0xc5fa, 0xc5fb, 0xc602, 0xc603,
+    0xc604, 0xc609, 0xc60a, 0xc60b, 0xc60d, 0xc60e, 0xc60f, 0xc611,
+    0xc612, 0xc613, 0xc614, 0xc615, 0xc616, 0xc617, 0xc61a, 0xc61d,
+    0xc61e, 0xc61f, 0xc620, 0xc621, 0xc622, 0xc623, 0xc626, 0xc627,
+    0xc629, 0xc62a, 0xc62b, 0xc62f, 0xc631, 0xc632, 0xc636, 0xc638,
+    0xc63a, 0xc63c, 0xc63d, 0xc63e, 0xc63f, 0xc642, 0xc643, 0xc645,
+    0xc646, 0xc647, 0xc649, 0xc64a, 0xc64b, 0xc64c, 0xc64d, 0xc64e,
+    0xc64f, 0xc652, 0xc656, 0xc657, 0xc658, 0xc659, 0xc65a, 0xc65b,
+    0xc65e, 0xc65f, 0xc661, 0xc662, 0xc663, 0xc664, 0xc665, 0xc666,
+    0xc667, 0xc668, 0xc669, 0xc66a, 0xc66b, 0xc66d, 0xc66e, 0xc670,
+    0xc672, 0xc673, 0xc674, 0xc675, 0xc676, 0xc677, 0xc67a, 0xc67b,
+    0xc67d, 0xc67e, 0xc67f, 0xc681, 0xc682, 0xc683, 0xc684, 0xc685,
+    0xc686, 0xc687, 0xc68a, 0xc68c, 0xc68e, 0xc68f, 0xc690, 0xc691,
+    0xc692, 0xc693, 0xc696, 0xc697, 0xc699, 0xc69a, 0xc69b, 0xc69d,
+    0xc69e, 0xc69f, 0xc6a0, 0xc6a1, 0xc6a2, 0xc6a3, 0xc6a6, 0x003f,
+    /* lead byte 9f */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc6a8, 0xc6aa, 0xc6ab, 0xc6ac, 0xc6ad, 0xc6ae, 0xc6af,
+    0xc6b2, 0xc6b3, 0xc6b5, 0xc6b6, 0xc6b7, 0xc6bb, 0xc6bc, 0xc6bd,
+    0xc6be, 0xc6bf, 0xc6c2, 0xc6c4, 0xc6c6, 0xc6c7, 0xc6c8, 0xc6c9,
+    0xc6ca, 0xc6cb, 0xc6ce, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc6cf, 0xc6d1, 0xc6d2, 0xc6d3, 0xc6d5, 0xc6d6, 0xc6d7,
+    0xc6d8, 0xc6d9, 0xc6da, 0xc6db, 0xc6de, 0xc6df, 0xc6e2, 0xc6e3,
+    0xc6e4, 0xc6e5, 0xc6e6, 0xc6e7, 0xc6ea, 0xc6eb, 0xc6ed, 0xc6ee,
+    0xc6ef, 0xc6f1, 0xc6f2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc6f3, 0xc6f4, 0xc6f5, 0xc6f6, 0xc6f7, 0xc6fa, 0xc6fb,
+    0xc6fc, 0xc6fe, 0xc6ff, 0xc700, 0xc701, 0xc702, 0xc703, 0xc706,
+    0xc707, 0xc709, 0xc70a, 0xc70b, 0xc70d, 0xc70e, 0xc70f, 0xc710,
+    0xc711, 0xc712, 0xc713, 0xc716, 0xc718, 0xc71a, 0xc71b, 0xc71c,
+    0xc71d, 0xc71e, 0xc71f, 0xc722, 0xc723, 0xc725, 0xc726, 0xc727,
+    0xc729, 0xc72a, 0xc72b, 0xc72c, 0xc72d, 0xc72e, 0xc72f, 0xc732,
+    0xc734, 0xc736, 0xc738, 0xc739, 0xc73a, 0xc73b, 0xc73e, 0xc73f,
+    0xc741, 0xc742, 0xc743, 0xc745, 0xc746, 0xc747, 0xc748, 0xc749,
+    0xc74b, 0xc74e, 0xc750, 0xc759, 0xc75a, 0xc75b, 0xc75d, 0xc75e,
+    0xc75f, 0xc761, 0xc762, 0xc763, 0xc764, 0xc765, 0xc766, 0xc767,
+    0xc769, 0xc76a, 0xc76c, 0xc76d, 0xc76e, 0xc76f, 0xc770, 0xc771,
+    0xc772, 0xc773, 0xc776, 0xc777, 0xc779, 0xc77a, 0xc77b, 0xc77f,
+    0xc780, 0xc781, 0xc782, 0xc786, 0xc78b, 0xc78c, 0xc78d, 0xc78f,
+    0xc792, 0xc793, 0xc795, 0xc799, 0xc79b, 0xc79c, 0xc79d, 0xc79e,
+    0xc79f, 0xc7a2, 0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xc7ae,
+    0xc7af, 0xc7b1, 0xc7b2, 0xc7b3, 0xc7b5, 0xc7b6, 0xc7b7, 0x003f,
+    /* lead byte a0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc7b8, 0xc7b9, 0xc7ba, 0xc7bb, 0xc7be, 0xc7c2, 0xc7c3,
+    0xc7c4, 0xc7c5, 0xc7c6, 0xc7c7, 0xc7ca, 0xc7cb, 0xc7cd, 0xc7cf,
+    0xc7d1, 0xc7d2, 0xc7d3, 0xc7d4, 0xc7d5, 0xc7d6, 0xc7d7, 0xc7d9,
+    0xc7da, 0xc7db, 0xc7dc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc7de, 0xc7df, 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3, 0xc7e5,
+    0xc7e6, 0xc7e7, 0xc7e9, 0xc7ea, 0xc7eb, 0xc7ed, 0xc7ee, 0xc7ef,
+    0xc7f0, 0xc7f1, 0xc7f2, 0xc7f3, 0xc7f4, 0xc7f5, 0xc7f6, 0xc7f7,
+    0xc7f8, 0xc7f9, 0xc7fa, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc7fb, 0xc7fc, 0xc7fd, 0xc7fe, 0xc7ff, 0xc802, 0xc803,
+    0xc805, 0xc806, 0xc807, 0xc809, 0xc80b, 0xc80c, 0xc80d, 0xc80e,
+    0xc80f, 0xc812, 0xc814, 0xc817, 0xc818, 0xc819, 0xc81a, 0xc81b,
+    0xc81e, 0xc81f, 0xc821, 0xc822, 0xc823, 0xc825, 0xc826, 0xc827,
+    0xc828, 0xc829, 0xc82a, 0xc82b, 0xc82e, 0xc830, 0xc832, 0xc833,
+    0xc834, 0xc835, 0xc836, 0xc837, 0xc839, 0xc83a, 0xc83b, 0xc83d,
+    0xc83e, 0xc83f, 0xc841, 0xc842, 0xc843, 0xc844, 0xc845, 0xc846,
+    0xc847, 0xc84a, 0xc84b, 0xc84e, 0xc84f, 0xc850, 0xc851, 0xc852,
+    0xc853, 0xc855, 0xc856, 0xc857, 0xc858, 0xc859, 0xc85a, 0xc85b,
+    0xc85c, 0xc85d, 0xc85e, 0xc85f, 0xc860, 0xc861, 0xc862, 0xc863,
+    0xc864, 0xc865, 0xc866, 0xc867, 0xc868, 0xc869, 0xc86a, 0xc86b,
+    0xc86c, 0xc86d, 0xc86e, 0xc86f, 0xc872, 0xc873, 0xc875, 0xc876,
+    0xc877, 0xc879, 0xc87b, 0xc87c, 0xc87d, 0xc87e, 0xc87f, 0xc882,
+    0xc884, 0xc888, 0xc889, 0xc88a, 0xc88e, 0xc88f, 0xc890, 0xc891,
+    0xc892, 0xc893, 0xc895, 0xc896, 0xc897, 0xc898, 0xc899, 0xc89a,
+    0xc89b, 0xc89c, 0xc89e, 0xc8a0, 0xc8a2, 0xc8a3, 0xc8a4, 0x003f,
+    /* lead byte a1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc8a5, 0xc8a6, 0xc8a7, 0xc8a9, 0xc8aa, 0xc8ab, 0xc8ac,
+    0xc8ad, 0xc8ae, 0xc8af, 0xc8b0, 0xc8b1, 0xc8b2, 0xc8b3, 0xc8b4,
+    0xc8b5, 0xc8b6, 0xc8b7, 0xc8b8, 0xc8b9, 0xc8ba, 0xc8bb, 0xc8be,
+    0xc8bf, 0xc8c0, 0xc8c1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc8c2, 0xc8c3, 0xc8c5, 0xc8c6, 0xc8c7, 0xc8c9, 0xc8ca,
+    0xc8cb, 0xc8cd, 0xc8ce, 0xc8cf, 0xc8d0, 0xc8d1, 0xc8d2, 0xc8d3,
+    0xc8d6, 0xc8d8, 0xc8da, 0xc8db, 0xc8dc, 0xc8dd, 0xc8de, 0xc8df,
+    0xc8e2, 0xc8e3, 0xc8e5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc8e6, 0xc8e7, 0xc8e8, 0xc8e9, 0xc8ea, 0xc8eb, 0xc8ec,
+    0xc8ed, 0xc8ee, 0xc8ef, 0xc8f0, 0xc8f1, 0xc8f2, 0xc8f3, 0xc8f4,
+    0xc8f6, 0xc8f7, 0xc8f8, 0xc8f9, 0xc8fa, 0xc8fb, 0xc8fe, 0xc8ff,
+    0xc901, 0xc902, 0xc903, 0xc907, 0xc908, 0xc909, 0xc90a, 0xc90b,
+    0xc90e, 0x3000, 0x3001, 0x3002, 0x00b7, 0x2025, 0x2026, 0x00a8,
+    0x3003, 0x00ad, 0x2015, 0x2225, 0xff3c, 0x223c, 0x2018, 0x2019,
+    0x201c, 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b,
+    0x300c, 0x300d, 0x300e, 0x300f, 0x3010, 0x3011, 0x00b1, 0x00d7,
+    0x00f7, 0x2260, 0x2264, 0x2265, 0x221e, 0x2234, 0x00b0, 0x2032,
+    0x2033, 0x2103, 0x212b, 0xffe0, 0xffe1, 0xffe5, 0x2642, 0x2640,
+    0x2220, 0x22a5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252, 0x00a7,
+    0x203b, 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7, 0x25c6,
+    0x25a1, 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc, 0x2192, 0x2190,
+    0x2191, 0x2193, 0x2194, 0x3013, 0x226a, 0x226b, 0x221a, 0x223d,
+    0x221d, 0x2235, 0x222b, 0x222c, 0x2208, 0x220b, 0x2286, 0x2287,
+    0x2282, 0x2283, 0x222a, 0x2229, 0x2227, 0x2228, 0xffe2, 0x003f,
+    /* lead byte a2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc910, 0xc912, 0xc913, 0xc914, 0xc915, 0xc916, 0xc917,
+    0xc919, 0xc91a, 0xc91b, 0xc91c, 0xc91d, 0xc91e, 0xc91f, 0xc920,
+    0xc921, 0xc922, 0xc923, 0xc924, 0xc925, 0xc926, 0xc927, 0xc928,
+    0xc929, 0xc92a, 0xc92b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc92d, 0xc92e, 0xc92f, 0xc930, 0xc931, 0xc932, 0xc933,
+    0xc935, 0xc936, 0xc937, 0xc938, 0xc939, 0xc93a, 0xc93b, 0xc93c,
+    0xc93d, 0xc93e, 0xc93f, 0xc940, 0xc941, 0xc942, 0xc943, 0xc944,
+    0xc945, 0xc946, 0xc947, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc948, 0xc949, 0xc94a, 0xc94b, 0xc94c, 0xc94d, 0xc94e,
+    0xc94f, 0xc952, 0xc953, 0xc955, 0xc956, 0xc957, 0xc959, 0xc95a,
+    0xc95b, 0xc95c, 0xc95d, 0xc95e, 0xc95f, 0xc962, 0xc964, 0xc965,
+    0xc966, 0xc967, 0xc968, 0xc969, 0xc96a, 0xc96b, 0xc96d, 0xc96e,
+    0xc96f, 0x21d2, 0x21d4, 0x2200, 0x2203, 0x00b4, 0xff5e, 0x02c7,
+    0x02d8, 0x02dd, 0x02da, 0x02d9, 0x00b8, 0x02db, 0x00a1, 0x00bf,
+    0x02d0, 0x222e, 0x2211, 0x220f, 0x00a4, 0x2109, 0x2030, 0x25c1,
+    0x25c0, 0x25b7, 0x25b6, 0x2664, 0x2660, 0x2661, 0x2665, 0x2667,
+    0x2663, 0x2299, 0x25c8, 0x25a3, 0x25d0, 0x25d1, 0x2592, 0x25a4,
+    0x25a5, 0x25a8, 0x25a7, 0x25a6, 0x25a9, 0x2668, 0x260f, 0x260e,
+    0x261c, 0x261e, 0x00b6, 0x2020, 0x2021, 0x2195, 0x2197, 0x2199,
+    0x2196, 0x2198, 0x266d, 0x2669, 0x266a, 0x266c, 0x327f, 0x321c,
+    0x2116, 0x33c7, 0x2122, 0x33c2, 0x33d8, 0x2121, 0x20ac, 0x00ae,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte a3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc971, 0xc972, 0xc973, 0xc975, 0xc976, 0xc977, 0xc978,
+    0xc979, 0xc97a, 0xc97b, 0xc97d, 0xc97e, 0xc97f, 0xc980, 0xc981,
+    0xc982, 0xc983, 0xc984, 0xc985, 0xc986, 0xc987, 0xc98a, 0xc98b,
+    0xc98d, 0xc98e, 0xc98f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc991, 0xc992, 0xc993, 0xc994, 0xc995, 0xc996, 0xc997,
+    0xc99a, 0xc99c, 0xc99e, 0xc99f, 0xc9a0, 0xc9a1, 0xc9a2, 0xc9a3,
+    0xc9a4, 0xc9a5, 0xc9a6, 0xc9a7, 0xc9a8, 0xc9a9, 0xc9aa, 0xc9ab,
+    0xc9ac, 0xc9ad, 0xc9ae, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc9af, 0xc9b0, 0xc9b1, 0xc9b2, 0xc9b3, 0xc9b4, 0xc9b5,
+    0xc9b6, 0xc9b7, 0xc9b8, 0xc9b9, 0xc9ba, 0xc9bb, 0xc9bc, 0xc9bd,
+    0xc9be, 0xc9bf, 0xc9c2, 0xc9c3, 0xc9c5, 0xc9c6, 0xc9c9, 0xc9cb,
+    0xc9cc, 0xc9cd, 0xc9ce, 0xc9cf, 0xc9d2, 0xc9d4, 0xc9d7, 0xc9d8,
+    0xc9db, 0xff01, 0xff02, 0xff03, 0xff04, 0xff05, 0xff06, 0xff07,
+    0xff08, 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f,
+    0xff10, 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17,
+    0xff18, 0xff19, 0xff1a, 0xff1b, 0xff1c, 0xff1d, 0xff1e, 0xff1f,
+    0xff20, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27,
+    0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f,
+    0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37,
+    0xff38, 0xff39, 0xff3a, 0xff3b, 0xffe6, 0xff3d, 0xff3e, 0xff3f,
+    0xff40, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47,
+    0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f,
+    0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57,
+    0xff58, 0xff59, 0xff5a, 0xff5b, 0xff5c, 0xff5d, 0xffe3, 0x003f,
+    /* lead byte a4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc9de, 0xc9df, 0xc9e1, 0xc9e3, 0xc9e5, 0xc9e6, 0xc9e8,
+    0xc9e9, 0xc9ea, 0xc9eb, 0xc9ee, 0xc9f2, 0xc9f3, 0xc9f4, 0xc9f5,
+    0xc9f6, 0xc9f7, 0xc9fa, 0xc9fb, 0xc9fd, 0xc9fe, 0xc9ff, 0xca01,
+    0xca02, 0xca03, 0xca04, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xca05, 0xca06, 0xca07, 0xca0a, 0xca0e, 0xca0f, 0xca10,
+    0xca11, 0xca12, 0xca13, 0xca15, 0xca16, 0xca17, 0xca19, 0xca1a,
+    0xca1b, 0xca1c, 0xca1d, 0xca1e, 0xca1f, 0xca20, 0xca21, 0xca22,
+    0xca23, 0xca24, 0xca25, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xca26, 0xca27, 0xca28, 0xca2a, 0xca2b, 0xca2c, 0xca2d,
+    0xca2e, 0xca2f, 0xca30, 0xca31, 0xca32, 0xca33, 0xca34, 0xca35,
+    0xca36, 0xca37, 0xca38, 0xca39, 0xca3a, 0xca3b, 0xca3c, 0xca3d,
+    0xca3e, 0xca3f, 0xca40, 0xca41, 0xca42, 0xca43, 0xca44, 0xca45,
+    0xca46, 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, 0x3137,
+    0x3138, 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f,
+    0x3140, 0x3141, 0x3142, 0x3143, 0x3144, 0x3145, 0x3146, 0x3147,
+    0x3148, 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e, 0x314f,
+    0x3150, 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, 0x3157,
+    0x3158, 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e, 0x315f,
+    0x3160, 0x3161, 0x3162, 0x3163, 0x3164, 0x3165, 0x3166, 0x3167,
+    0x3168, 0x3169, 0x316a, 0x316b, 0x316c, 0x316d, 0x316e, 0x316f,
+    0x3170, 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3176, 0x3177,
+    0x3178, 0x3179, 0x317a, 0x317b, 0x317c, 0x317d, 0x317e, 0x317f,
+    0x3180, 0x3181, 0x3182, 0x3183, 0x3184, 0x3185, 0x3186, 0x3187,
+    0x3188, 0x3189, 0x318a, 0x318b, 0x318c, 0x318d, 0x318e, 0x003f,
+    /* lead byte a5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xca47, 0xca48, 0xca49, 0xca4a, 0xca4b, 0xca4e, 0xca4f,
+    0xca51, 0xca52, 0xca53, 0xca55, 0xca56, 0xca57, 0xca58, 0xca59,
+    0xca5a, 0xca5b, 0xca5e, 0xca62, 0xca63, 0xca64, 0xca65, 0xca66,
+    0xca67, 0xca69, 0xca6a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xca6b, 0xca6c, 0xca6d, 0xca6e, 0xca6f, 0xca70, 0xca71,
+    0xca72, 0xca73, 0xca74, 0xca75, 0xca76, 0xca77, 0xca78, 0xca79,
+    0xca7a, 0xca7b, 0xca7c, 0xca7e, 0xca7f, 0xca80, 0xca81, 0xca82,
+    0xca83, 0xca85, 0xca86, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xca87, 0xca88, 0xca89, 0xca8a, 0xca8b, 0xca8c, 0xca8d,
+    0xca8e, 0xca8f, 0xca90, 0xca91, 0xca92, 0xca93, 0xca94, 0xca95,
+    0xca96, 0xca97, 0xca99, 0xca9a, 0xca9b, 0xca9c, 0xca9d, 0xca9e,
+    0xca9f, 0xcaa0, 0xcaa1, 0xcaa2, 0xcaa3, 0xcaa4, 0xcaa5, 0xcaa6,
+    0xcaa7, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176,
+    0x2177, 0x2178, 0x2179, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167,
+    0x2168, 0x2169, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
+    0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f,
+    0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8,
+    0x03a9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
+    0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
+    0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8,
+    0x03c9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte a6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcaa8, 0xcaa9, 0xcaaa, 0xcaab, 0xcaac, 0xcaad, 0xcaae,
+    0xcaaf, 0xcab0, 0xcab1, 0xcab2, 0xcab3, 0xcab4, 0xcab5, 0xcab6,
+    0xcab7, 0xcab8, 0xcab9, 0xcaba, 0xcabb, 0xcabe, 0xcabf, 0xcac1,
+    0xcac2, 0xcac3, 0xcac5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcac6, 0xcac7, 0xcac8, 0xcac9, 0xcaca, 0xcacb, 0xcace,
+    0xcad0, 0xcad2, 0xcad4, 0xcad5, 0xcad6, 0xcad7, 0xcada, 0xcadb,
+    0xcadc, 0xcadd, 0xcade, 0xcadf, 0xcae1, 0xcae2, 0xcae3, 0xcae4,
+    0xcae5, 0xcae6, 0xcae7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcae8, 0xcae9, 0xcaea, 0xcaeb, 0xcaed, 0xcaee, 0xcaef,
+    0xcaf0, 0xcaf1, 0xcaf2, 0xcaf3, 0xcaf5, 0xcaf6, 0xcaf7, 0xcaf8,
+    0xcaf9, 0xcafa, 0xcafb, 0xcafc, 0xcafd, 0xcafe, 0xcaff, 0xcb00,
+    0xcb01, 0xcb02, 0xcb03, 0xcb04, 0xcb05, 0xcb06, 0xcb07, 0xcb09,
+    0xcb0a, 0x2500, 0x2502, 0x250c, 0x2510, 0x2518, 0x2514, 0x251c,
+    0x252c, 0x2524, 0x2534, 0x253c, 0x2501, 0x2503, 0x250f, 0x2513,
+    0x251b, 0x2517, 0x2523, 0x2533, 0x252b, 0x253b, 0x254b, 0x2520,
+    0x252f, 0x2528, 0x2537, 0x253f, 0x251d, 0x2530, 0x2525, 0x2538,
+    0x2542, 0x2512, 0x2511, 0x251a, 0x2519, 0x2516, 0x2515, 0x250e,
+    0x250d, 0x251e, 0x251f, 0x2521, 0x2522, 0x2526, 0x2527, 0x2529,
+    0x252a, 0x252d, 0x252e, 0x2531, 0x2532, 0x2535, 0x2536, 0x2539,
+    0x253a, 0x253d, 0x253e, 0x2540, 0x2541, 0x2543, 0x2544, 0x2545,
+    0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte a7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcb0b, 0xcb0c, 0xcb0d, 0xcb0e, 0xcb0f, 0xcb11, 0xcb12,
+    0xcb13, 0xcb15, 0xcb16, 0xcb17, 0xcb19, 0xcb1a, 0xcb1b, 0xcb1c,
+    0xcb1d, 0xcb1e, 0xcb1f, 0xcb22, 0xcb23, 0xcb24, 0xcb25, 0xcb26,
+    0xcb27, 0xcb28, 0xcb29, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcb2a, 0xcb2b, 0xcb2c, 0xcb2d, 0xcb2e, 0xcb2f, 0xcb30,
+    0xcb31, 0xcb32, 0xcb33, 0xcb34, 0xcb35, 0xcb36, 0xcb37, 0xcb38,
+    0xcb39, 0xcb3a, 0xcb3b, 0xcb3c, 0xcb3d, 0xcb3e, 0xcb3f, 0xcb40,
+    0xcb42, 0xcb43, 0xcb44, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcb45, 0xcb46, 0xcb47, 0xcb4a, 0xcb4b, 0xcb4d, 0xcb4e,
+    0xcb4f, 0xcb51, 0xcb52, 0xcb53, 0xcb54, 0xcb55, 0xcb56, 0xcb57,
+    0xcb5a, 0xcb5b, 0xcb5c, 0xcb5e, 0xcb5f, 0xcb60, 0xcb61, 0xcb62,
+    0xcb63, 0xcb65, 0xcb66, 0xcb67, 0xcb68, 0xcb69, 0xcb6a, 0xcb6b,
+    0xcb6c, 0x3395, 0x3396, 0x3397, 0x2113, 0x3398, 0x33c4, 0x33a3,
+    0x33a4, 0x33a5, 0x33a6, 0x3399, 0x339a, 0x339b, 0x339c, 0x339d,
+    0x339e, 0x339f, 0x33a0, 0x33a1, 0x33a2, 0x33ca, 0x338d, 0x338e,
+    0x338f, 0x33cf, 0x3388, 0x3389, 0x33c8, 0x33a7, 0x33a8, 0x33b0,
+    0x33b1, 0x33b2, 0x33b3, 0x33b4, 0x33b5, 0x33b6, 0x33b7, 0x33b8,
+    0x33b9, 0x3380, 0x3381, 0x3382, 0x3383, 0x3384, 0x33ba, 0x33bb,
+    0x33bc, 0x33bd, 0x33be, 0x33bf, 0x3390, 0x3391, 0x3392, 0x3393,
+    0x3394, 0x2126, 0x33c0, 0x33c1, 0x338a, 0x338b, 0x338c, 0x33d6,
+    0x33c5, 0x33ad, 0x33ae, 0x33af, 0x33db, 0x33a9, 0x33aa, 0x33ab,
+    0x33ac, 0x33dd, 0x33d0, 0x33d3, 0x33c3, 0x33c9, 0x33dc, 0x33c6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte a8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcb6d, 0xcb6e, 0xcb6f, 0xcb70, 0xcb71, 0xcb72, 0xcb73,
+    0xcb74, 0xcb75, 0xcb76, 0xcb77, 0xcb7a, 0xcb7b, 0xcb7c, 0xcb7d,
+    0xcb7e, 0xcb7f, 0xcb80, 0xcb81, 0xcb82, 0xcb83, 0xcb84, 0xcb85,
+    0xcb86, 0xcb87, 0xcb88, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcb89, 0xcb8a, 0xcb8b, 0xcb8c, 0xcb8d, 0xcb8e, 0xcb8f,
+    0xcb90, 0xcb91, 0xcb92, 0xcb93, 0xcb94, 0xcb95, 0xcb96, 0xcb97,
+    0xcb98, 0xcb99, 0xcb9a, 0xcb9b, 0xcb9d, 0xcb9e, 0xcb9f, 0xcba0,
+    0xcba1, 0xcba2, 0xcba3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcba4, 0xcba5, 0xcba6, 0xcba7, 0xcba8, 0xcba9, 0xcbaa,
+    0xcbab, 0xcbac, 0xcbad, 0xcbae, 0xcbaf, 0xcbb0, 0xcbb1, 0xcbb2,
+    0xcbb3, 0xcbb4, 0xcbb5, 0xcbb6, 0xcbb7, 0xcbb9, 0xcbba, 0xcbbb,
+    0xcbbc, 0xcbbd, 0xcbbe, 0xcbbf, 0xcbc0, 0xcbc1, 0xcbc2, 0xcbc3,
+    0xcbc4, 0x00c6, 0x00d0, 0x00aa, 0x0126, 0x003f, 0x0132, 0x003f,
+    0x013f, 0x0141, 0x00d8, 0x0152, 0x00ba, 0x00de, 0x0166, 0x014a,
+    0x003f, 0x3260, 0x3261, 0x3262, 0x3263, 0x3264, 0x3265, 0x3266,
+    0x3267, 0x3268, 0x3269, 0x326a, 0x326b, 0x326c, 0x326d, 0x326e,
+    0x326f, 0x3270, 0x3271, 0x3272, 0x3273, 0x3274, 0x3275, 0x3276,
+    0x3277, 0x3278, 0x3279, 0x327a, 0x327b, 0x24d0, 0x24d1, 0x24d2,
+    0x24d3, 0x24d4, 0x24d5, 0x24d6, 0x24d7, 0x24d8, 0x24d9, 0x24da,
+    0x24db, 0x24dc, 0x24dd, 0x24de, 0x24df, 0x24e0, 0x24e1, 0x24e2,
+    0x24e3, 0x24e4, 0x24e5, 0x24e6, 0x24e7, 0x24e8, 0x24e9, 0x2460,
+    0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468,
+    0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x00bd, 0x2153,
+    0x2154, 0x00bc, 0x00be, 0x215b, 0x215c, 0x215d, 0x215e, 0x003f,
+    /* lead byte a9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcbc5, 0xcbc6, 0xcbc7, 0xcbc8, 0xcbc9, 0xcbca, 0xcbcb,
+    0xcbcc, 0xcbcd, 0xcbce, 0xcbcf, 0xcbd0, 0xcbd1, 0xcbd2, 0xcbd3,
+    0xcbd5, 0xcbd6, 0xcbd7, 0xcbd8, 0xcbd9, 0xcbda, 0xcbdb, 0xcbdc,
+    0xcbdd, 0xcbde, 0xcbdf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcbe0, 0xcbe1, 0xcbe2, 0xcbe3, 0xcbe5, 0xcbe6, 0xcbe8,
+    0xcbea, 0xcbeb, 0xcbec, 0xcbed, 0xcbee, 0xcbef, 0xcbf0, 0xcbf1,
+    0xcbf2, 0xcbf3, 0xcbf4, 0xcbf5, 0xcbf6, 0xcbf7, 0xcbf8, 0xcbf9,
+    0xcbfa, 0xcbfb, 0xcbfc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcbfd, 0xcbfe, 0xcbff, 0xcc00, 0xcc01, 0xcc02, 0xcc03,
+    0xcc04, 0xcc05, 0xcc06, 0xcc07, 0xcc08, 0xcc09, 0xcc0a, 0xcc0b,
+    0xcc0e, 0xcc0f, 0xcc11, 0xcc12, 0xcc13, 0xcc15, 0xcc16, 0xcc17,
+    0xcc18, 0xcc19, 0xcc1a, 0xcc1b, 0xcc1e, 0xcc1f, 0xcc20, 0xcc23,
+    0xcc24, 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0138,
+    0x0140, 0x0142, 0x00f8, 0x0153, 0x00df, 0x00fe, 0x0167, 0x014b,
+    0x0149, 0x3200, 0x3201, 0x3202, 0x3203, 0x3204, 0x3205, 0x3206,
+    0x3207, 0x3208, 0x3209, 0x320a, 0x320b, 0x320c, 0x320d, 0x320e,
+    0x320f, 0x3210, 0x3211, 0x3212, 0x3213, 0x3214, 0x3215, 0x3216,
+    0x3217, 0x3218, 0x3219, 0x321a, 0x321b, 0x249c, 0x249d, 0x249e,
+    0x249f, 0x24a0, 0x24a1, 0x24a2, 0x24a3, 0x24a4, 0x24a5, 0x24a6,
+    0x24a7, 0x24a8, 0x24a9, 0x24aa, 0x24ab, 0x24ac, 0x24ad, 0x24ae,
+    0x24af, 0x24b0, 0x24b1, 0x24b2, 0x24b3, 0x24b4, 0x24b5, 0x2474,
+    0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a, 0x247b, 0x247c,
+    0x247d, 0x247e, 0x247f, 0x2480, 0x2481, 0x2482, 0x00b9, 0x00b2,
+    0x00b3, 0x2074, 0x207f, 0x2081, 0x2082, 0x2083, 0x2084, 0x003f,
+    /* lead byte aa */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcc25, 0xcc26, 0xcc2a, 0xcc2b, 0xcc2d, 0xcc2f, 0xcc31,
+    0xcc32, 0xcc33, 0xcc34, 0xcc35, 0xcc36, 0xcc37, 0xcc3a, 0xcc3f,
+    0xcc40, 0xcc41, 0xcc42, 0xcc43, 0xcc46, 0xcc47, 0xcc49, 0xcc4a,
+    0xcc4b, 0xcc4d, 0xcc4e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcc4f, 0xcc50, 0xcc51, 0xcc52, 0xcc53, 0xcc56, 0xcc5a,
+    0xcc5b, 0xcc5c, 0xcc5d, 0xcc5e, 0xcc5f, 0xcc61, 0xcc62, 0xcc63,
+    0xcc65, 0xcc67, 0xcc69, 0xcc6a, 0xcc6b, 0xcc6c, 0xcc6d, 0xcc6e,
+    0xcc6f, 0xcc71, 0xcc72, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcc73, 0xcc74, 0xcc76, 0xcc77, 0xcc78, 0xcc79, 0xcc7a,
+    0xcc7b, 0xcc7c, 0xcc7d, 0xcc7e, 0xcc7f, 0xcc80, 0xcc81, 0xcc82,
+    0xcc83, 0xcc84, 0xcc85, 0xcc86, 0xcc87, 0xcc88, 0xcc89, 0xcc8a,
+    0xcc8b, 0xcc8c, 0xcc8d, 0xcc8e, 0xcc8f, 0xcc90, 0xcc91, 0xcc92,
+    0xcc93, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047,
+    0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f,
+    0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057,
+    0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f,
+    0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067,
+    0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f,
+    0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077,
+    0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f,
+    0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087,
+    0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f,
+    0x3090, 0x3091, 0x3092, 0x3093, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte ab */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcc94, 0xcc95, 0xcc96, 0xcc97, 0xcc9a, 0xcc9b, 0xcc9d,
+    0xcc9e, 0xcc9f, 0xcca1, 0xcca2, 0xcca3, 0xcca4, 0xcca5, 0xcca6,
+    0xcca7, 0xccaa, 0xccae, 0xccaf, 0xccb0, 0xccb1, 0xccb2, 0xccb3,
+    0xccb6, 0xccb7, 0xccb9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xccba, 0xccbb, 0xccbd, 0xccbe, 0xccbf, 0xccc0, 0xccc1,
+    0xccc2, 0xccc3, 0xccc6, 0xccc8, 0xccca, 0xcccb, 0xcccc, 0xcccd,
+    0xccce, 0xcccf, 0xccd1, 0xccd2, 0xccd3, 0xccd5, 0xccd6, 0xccd7,
+    0xccd8, 0xccd9, 0xccda, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xccdb, 0xccdc, 0xccdd, 0xccde, 0xccdf, 0xcce0, 0xcce1,
+    0xcce2, 0xcce3, 0xcce5, 0xcce6, 0xcce7, 0xcce8, 0xcce9, 0xccea,
+    0xcceb, 0xcced, 0xccee, 0xccef, 0xccf1, 0xccf2, 0xccf3, 0xccf4,
+    0xccf5, 0xccf6, 0xccf7, 0xccf8, 0xccf9, 0xccfa, 0xccfb, 0xccfc,
+    0xccfd, 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7,
+    0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af,
+    0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7,
+    0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf,
+    0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7,
+    0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf,
+    0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7,
+    0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df,
+    0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7,
+    0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef,
+    0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte ac */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xccfe, 0xccff, 0xcd00, 0xcd02, 0xcd03, 0xcd04, 0xcd05,
+    0xcd06, 0xcd07, 0xcd0a, 0xcd0b, 0xcd0d, 0xcd0e, 0xcd0f, 0xcd11,
+    0xcd12, 0xcd13, 0xcd14, 0xcd15, 0xcd16, 0xcd17, 0xcd1a, 0xcd1c,
+    0xcd1e, 0xcd1f, 0xcd20, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcd21, 0xcd22, 0xcd23, 0xcd25, 0xcd26, 0xcd27, 0xcd29,
+    0xcd2a, 0xcd2b, 0xcd2d, 0xcd2e, 0xcd2f, 0xcd30, 0xcd31, 0xcd32,
+    0xcd33, 0xcd34, 0xcd35, 0xcd36, 0xcd37, 0xcd38, 0xcd3a, 0xcd3b,
+    0xcd3c, 0xcd3d, 0xcd3e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcd3f, 0xcd40, 0xcd41, 0xcd42, 0xcd43, 0xcd44, 0xcd45,
+    0xcd46, 0xcd47, 0xcd48, 0xcd49, 0xcd4a, 0xcd4b, 0xcd4c, 0xcd4d,
+    0xcd4e, 0xcd4f, 0xcd50, 0xcd51, 0xcd52, 0xcd53, 0xcd54, 0xcd55,
+    0xcd56, 0xcd57, 0xcd58, 0xcd59, 0xcd5a, 0xcd5b, 0xcd5d, 0xcd5e,
+    0xcd5f, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401,
+    0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d,
+    0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425,
+    0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d,
+    0x042e, 0x042f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451,
+    0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d,
+    0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445,
+    0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d,
+    0x044e, 0x044f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte ad */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcd61, 0xcd62, 0xcd63, 0xcd65, 0xcd66, 0xcd67, 0xcd68,
+    0xcd69, 0xcd6a, 0xcd6b, 0xcd6e, 0xcd70, 0xcd72, 0xcd73, 0xcd74,
+    0xcd75, 0xcd76, 0xcd77, 0xcd79, 0xcd7a, 0xcd7b, 0xcd7c, 0xcd7d,
+    0xcd7e, 0xcd7f, 0xcd80, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcd81, 0xcd82, 0xcd83, 0xcd84, 0xcd85, 0xcd86, 0xcd87,
+    0xcd89, 0xcd8a, 0xcd8b, 0xcd8c, 0xcd8d, 0xcd8e, 0xcd8f, 0xcd90,
+    0xcd91, 0xcd92, 0xcd93, 0xcd96, 0xcd97, 0xcd99, 0xcd9a, 0xcd9b,
+    0xcd9d, 0xcd9e, 0xcd9f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcda0, 0xcda1, 0xcda2, 0xcda3, 0xcda6, 0xcda8, 0xcdaa,
+    0xcdab, 0xcdac, 0xcdad, 0xcdae, 0xcdaf, 0xcdb1, 0xcdb2, 0xcdb3,
+    0xcdb4, 0xcdb5, 0xcdb6, 0xcdb7, 0xcdb8, 0xcdb9, 0xcdba, 0xcdbb,
+    0xcdbc, 0xcdbd, 0xcdbe, 0xcdbf, 0xcdc0, 0xcdc1, 0xcdc2, 0xcdc3,
+    0xcdc5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte ae */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcdc6, 0xcdc7, 0xcdc8, 0xcdc9, 0xcdca, 0xcdcb, 0xcdcd,
+    0xcdce, 0xcdcf, 0xcdd1, 0xcdd2, 0xcdd3, 0xcdd4, 0xcdd5, 0xcdd6,
+    0xcdd7, 0xcdd8, 0xcdd9, 0xcdda, 0xcddb, 0xcddc, 0xcddd, 0xcdde,
+    0xcddf, 0xcde0, 0xcde1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcde2, 0xcde3, 0xcde4, 0xcde5, 0xcde6, 0xcde7, 0xcde9,
+    0xcdea, 0xcdeb, 0xcded, 0xcdee, 0xcdef, 0xcdf1, 0xcdf2, 0xcdf3,
+    0xcdf4, 0xcdf5, 0xcdf6, 0xcdf7, 0xcdfa, 0xcdfc, 0xcdfe, 0xcdff,
+    0xce00, 0xce01, 0xce02, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xce03, 0xce05, 0xce06, 0xce07, 0xce09, 0xce0a, 0xce0b,
+    0xce0d, 0xce0e, 0xce0f, 0xce10, 0xce11, 0xce12, 0xce13, 0xce15,
+    0xce16, 0xce17, 0xce18, 0xce1a, 0xce1b, 0xce1c, 0xce1d, 0xce1e,
+    0xce1f, 0xce22, 0xce23, 0xce25, 0xce26, 0xce27, 0xce29, 0xce2a,
+    0xce2b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte af */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xce2c, 0xce2d, 0xce2e, 0xce2f, 0xce32, 0xce34, 0xce36,
+    0xce37, 0xce38, 0xce39, 0xce3a, 0xce3b, 0xce3c, 0xce3d, 0xce3e,
+    0xce3f, 0xce40, 0xce41, 0xce42, 0xce43, 0xce44, 0xce45, 0xce46,
+    0xce47, 0xce48, 0xce49, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xce4a, 0xce4b, 0xce4c, 0xce4d, 0xce4e, 0xce4f, 0xce50,
+    0xce51, 0xce52, 0xce53, 0xce54, 0xce55, 0xce56, 0xce57, 0xce5a,
+    0xce5b, 0xce5d, 0xce5e, 0xce62, 0xce63, 0xce64, 0xce65, 0xce66,
+    0xce67, 0xce6a, 0xce6c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xce6e, 0xce6f, 0xce70, 0xce71, 0xce72, 0xce73, 0xce76,
+    0xce77, 0xce79, 0xce7a, 0xce7b, 0xce7d, 0xce7e, 0xce7f, 0xce80,
+    0xce81, 0xce82, 0xce83, 0xce86, 0xce88, 0xce8a, 0xce8b, 0xce8c,
+    0xce8d, 0xce8e, 0xce8f, 0xce92, 0xce93, 0xce95, 0xce96, 0xce97,
+    0xce99, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte b0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xce9a, 0xce9b, 0xce9c, 0xce9d, 0xce9e, 0xce9f, 0xcea2,
+    0xcea6, 0xcea7, 0xcea8, 0xcea9, 0xceaa, 0xceab, 0xceae, 0xceaf,
+    0xceb0, 0xceb1, 0xceb2, 0xceb3, 0xceb4, 0xceb5, 0xceb6, 0xceb7,
+    0xceb8, 0xceb9, 0xceba, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcebb, 0xcebc, 0xcebd, 0xcebe, 0xcebf, 0xcec0, 0xcec2,
+    0xcec3, 0xcec4, 0xcec5, 0xcec6, 0xcec7, 0xcec8, 0xcec9, 0xceca,
+    0xcecb, 0xcecc, 0xcecd, 0xcece, 0xcecf, 0xced0, 0xced1, 0xced2,
+    0xced3, 0xced4, 0xced5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xced6, 0xced7, 0xced8, 0xced9, 0xceda, 0xcedb, 0xcedc,
+    0xcedd, 0xcede, 0xcedf, 0xcee0, 0xcee1, 0xcee2, 0xcee3, 0xcee6,
+    0xcee7, 0xcee9, 0xceea, 0xceed, 0xceee, 0xceef, 0xcef0, 0xcef1,
+    0xcef2, 0xcef3, 0xcef6, 0xcefa, 0xcefb, 0xcefc, 0xcefd, 0xcefe,
+    0xceff, 0xac00, 0xac01, 0xac04, 0xac07, 0xac08, 0xac09, 0xac0a,
+    0xac10, 0xac11, 0xac12, 0xac13, 0xac14, 0xac15, 0xac16, 0xac17,
+    0xac19, 0xac1a, 0xac1b, 0xac1c, 0xac1d, 0xac20, 0xac24, 0xac2c,
+    0xac2d, 0xac2f, 0xac30, 0xac31, 0xac38, 0xac39, 0xac3c, 0xac40,
+    0xac4b, 0xac4d, 0xac54, 0xac58, 0xac5c, 0xac70, 0xac71, 0xac74,
+    0xac77, 0xac78, 0xac7a, 0xac80, 0xac81, 0xac83, 0xac84, 0xac85,
+    0xac86, 0xac89, 0xac8a, 0xac8b, 0xac8c, 0xac90, 0xac94, 0xac9c,
+    0xac9d, 0xac9f, 0xaca0, 0xaca1, 0xaca8, 0xaca9, 0xacaa, 0xacac,
+    0xacaf, 0xacb0, 0xacb8, 0xacb9, 0xacbb, 0xacbc, 0xacbd, 0xacc1,
+    0xacc4, 0xacc8, 0xaccc, 0xacd5, 0xacd7, 0xace0, 0xace1, 0xace4,
+    0xace7, 0xace8, 0xacea, 0xacec, 0xacef, 0xacf0, 0xacf1, 0xacf3,
+    0xacf5, 0xacf6, 0xacfc, 0xacfd, 0xad00, 0xad04, 0xad06, 0x003f,
+    /* lead byte b1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcf02, 0xcf03, 0xcf05, 0xcf06, 0xcf07, 0xcf09, 0xcf0a,
+    0xcf0b, 0xcf0c, 0xcf0d, 0xcf0e, 0xcf0f, 0xcf12, 0xcf14, 0xcf16,
+    0xcf17, 0xcf18, 0xcf19, 0xcf1a, 0xcf1b, 0xcf1d, 0xcf1e, 0xcf1f,
+    0xcf21, 0xcf22, 0xcf23, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcf25, 0xcf26, 0xcf27, 0xcf28, 0xcf29, 0xcf2a, 0xcf2b,
+    0xcf2e, 0xcf32, 0xcf33, 0xcf34, 0xcf35, 0xcf36, 0xcf37, 0xcf39,
+    0xcf3a, 0xcf3b, 0xcf3c, 0xcf3d, 0xcf3e, 0xcf3f, 0xcf40, 0xcf41,
+    0xcf42, 0xcf43, 0xcf44, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcf45, 0xcf46, 0xcf47, 0xcf48, 0xcf49, 0xcf4a, 0xcf4b,
+    0xcf4c, 0xcf4d, 0xcf4e, 0xcf4f, 0xcf50, 0xcf51, 0xcf52, 0xcf53,
+    0xcf56, 0xcf57, 0xcf59, 0xcf5a, 0xcf5b, 0xcf5d, 0xcf5e, 0xcf5f,
+    0xcf60, 0xcf61, 0xcf62, 0xcf63, 0xcf66, 0xcf68, 0xcf6a, 0xcf6b,
+    0xcf6c, 0xad0c, 0xad0d, 0xad0f, 0xad11, 0xad18, 0xad1c, 0xad20,
+    0xad29, 0xad2c, 0xad2d, 0xad34, 0xad35, 0xad38, 0xad3c, 0xad44,
+    0xad45, 0xad47, 0xad49, 0xad50, 0xad54, 0xad58, 0xad61, 0xad63,
+    0xad6c, 0xad6d, 0xad70, 0xad73, 0xad74, 0xad75, 0xad76, 0xad7b,
+    0xad7c, 0xad7d, 0xad7f, 0xad81, 0xad82, 0xad88, 0xad89, 0xad8c,
+    0xad90, 0xad9c, 0xad9d, 0xada4, 0xadb7, 0xadc0, 0xadc1, 0xadc4,
+    0xadc8, 0xadd0, 0xadd1, 0xadd3, 0xaddc, 0xade0, 0xade4, 0xadf8,
+    0xadf9, 0xadfc, 0xadff, 0xae00, 0xae01, 0xae08, 0xae09, 0xae0b,
+    0xae0d, 0xae14, 0xae30, 0xae31, 0xae34, 0xae37, 0xae38, 0xae3a,
+    0xae40, 0xae41, 0xae43, 0xae45, 0xae46, 0xae4a, 0xae4c, 0xae4d,
+    0xae4e, 0xae50, 0xae54, 0xae56, 0xae5c, 0xae5d, 0xae5f, 0xae60,
+    0xae61, 0xae65, 0xae68, 0xae69, 0xae6c, 0xae70, 0xae78, 0x003f,
+    /* lead byte b2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcf6d, 0xcf6e, 0xcf6f, 0xcf72, 0xcf73, 0xcf75, 0xcf76,
+    0xcf77, 0xcf79, 0xcf7a, 0xcf7b, 0xcf7c, 0xcf7d, 0xcf7e, 0xcf7f,
+    0xcf81, 0xcf82, 0xcf83, 0xcf84, 0xcf86, 0xcf87, 0xcf88, 0xcf89,
+    0xcf8a, 0xcf8b, 0xcf8d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcf8e, 0xcf8f, 0xcf90, 0xcf91, 0xcf92, 0xcf93, 0xcf94,
+    0xcf95, 0xcf96, 0xcf97, 0xcf98, 0xcf99, 0xcf9a, 0xcf9b, 0xcf9c,
+    0xcf9d, 0xcf9e, 0xcf9f, 0xcfa0, 0xcfa2, 0xcfa3, 0xcfa4, 0xcfa5,
+    0xcfa6, 0xcfa7, 0xcfa9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcfaa, 0xcfab, 0xcfac, 0xcfad, 0xcfae, 0xcfaf, 0xcfb1,
+    0xcfb2, 0xcfb3, 0xcfb4, 0xcfb5, 0xcfb6, 0xcfb7, 0xcfb8, 0xcfb9,
+    0xcfba, 0xcfbb, 0xcfbc, 0xcfbd, 0xcfbe, 0xcfbf, 0xcfc0, 0xcfc1,
+    0xcfc2, 0xcfc3, 0xcfc5, 0xcfc6, 0xcfc7, 0xcfc8, 0xcfc9, 0xcfca,
+    0xcfcb, 0xae79, 0xae7b, 0xae7c, 0xae7d, 0xae84, 0xae85, 0xae8c,
+    0xaebc, 0xaebd, 0xaebe, 0xaec0, 0xaec4, 0xaecc, 0xaecd, 0xaecf,
+    0xaed0, 0xaed1, 0xaed8, 0xaed9, 0xaedc, 0xaee8, 0xaeeb, 0xaeed,
+    0xaef4, 0xaef8, 0xaefc, 0xaf07, 0xaf08, 0xaf0d, 0xaf10, 0xaf2c,
+    0xaf2d, 0xaf30, 0xaf32, 0xaf34, 0xaf3c, 0xaf3d, 0xaf3f, 0xaf41,
+    0xaf42, 0xaf43, 0xaf48, 0xaf49, 0xaf50, 0xaf5c, 0xaf5d, 0xaf64,
+    0xaf65, 0xaf79, 0xaf80, 0xaf84, 0xaf88, 0xaf90, 0xaf91, 0xaf95,
+    0xaf9c, 0xafb8, 0xafb9, 0xafbc, 0xafc0, 0xafc7, 0xafc8, 0xafc9,
+    0xafcb, 0xafcd, 0xafce, 0xafd4, 0xafdc, 0xafe8, 0xafe9, 0xaff0,
+    0xaff1, 0xaff4, 0xaff8, 0xb000, 0xb001, 0xb004, 0xb00c, 0xb010,
+    0xb014, 0xb01c, 0xb01d, 0xb028, 0xb044, 0xb045, 0xb048, 0xb04a,
+    0xb04c, 0xb04e, 0xb053, 0xb054, 0xb055, 0xb057, 0xb059, 0x003f,
+    /* lead byte b3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcfcc, 0xcfcd, 0xcfce, 0xcfcf, 0xcfd0, 0xcfd1, 0xcfd2,
+    0xcfd3, 0xcfd4, 0xcfd5, 0xcfd6, 0xcfd7, 0xcfd8, 0xcfd9, 0xcfda,
+    0xcfdb, 0xcfdc, 0xcfdd, 0xcfde, 0xcfdf, 0xcfe2, 0xcfe3, 0xcfe5,
+    0xcfe6, 0xcfe7, 0xcfe9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcfea, 0xcfeb, 0xcfec, 0xcfed, 0xcfee, 0xcfef, 0xcff2,
+    0xcff4, 0xcff6, 0xcff7, 0xcff8, 0xcff9, 0xcffa, 0xcffb, 0xcffd,
+    0xcffe, 0xcfff, 0xd001, 0xd002, 0xd003, 0xd005, 0xd006, 0xd007,
+    0xd008, 0xd009, 0xd00a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd00b, 0xd00c, 0xd00d, 0xd00e, 0xd00f, 0xd010, 0xd012,
+    0xd013, 0xd014, 0xd015, 0xd016, 0xd017, 0xd019, 0xd01a, 0xd01b,
+    0xd01c, 0xd01d, 0xd01e, 0xd01f, 0xd020, 0xd021, 0xd022, 0xd023,
+    0xd024, 0xd025, 0xd026, 0xd027, 0xd028, 0xd029, 0xd02a, 0xd02b,
+    0xd02c, 0xb05d, 0xb07c, 0xb07d, 0xb080, 0xb084, 0xb08c, 0xb08d,
+    0xb08f, 0xb091, 0xb098, 0xb099, 0xb09a, 0xb09c, 0xb09f, 0xb0a0,
+    0xb0a1, 0xb0a2, 0xb0a8, 0xb0a9, 0xb0ab, 0xb0ac, 0xb0ad, 0xb0ae,
+    0xb0af, 0xb0b1, 0xb0b3, 0xb0b4, 0xb0b5, 0xb0b8, 0xb0bc, 0xb0c4,
+    0xb0c5, 0xb0c7, 0xb0c8, 0xb0c9, 0xb0d0, 0xb0d1, 0xb0d4, 0xb0d8,
+    0xb0e0, 0xb0e5, 0xb108, 0xb109, 0xb10b, 0xb10c, 0xb110, 0xb112,
+    0xb113, 0xb118, 0xb119, 0xb11b, 0xb11c, 0xb11d, 0xb123, 0xb124,
+    0xb125, 0xb128, 0xb12c, 0xb134, 0xb135, 0xb137, 0xb138, 0xb139,
+    0xb140, 0xb141, 0xb144, 0xb148, 0xb150, 0xb151, 0xb154, 0xb155,
+    0xb158, 0xb15c, 0xb160, 0xb178, 0xb179, 0xb17c, 0xb180, 0xb182,
+    0xb188, 0xb189, 0xb18b, 0xb18d, 0xb192, 0xb193, 0xb194, 0xb198,
+    0xb19c, 0xb1a8, 0xb1cc, 0xb1d0, 0xb1d4, 0xb1dc, 0xb1dd, 0x003f,
+    /* lead byte b4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd02e, 0xd02f, 0xd030, 0xd031, 0xd032, 0xd033, 0xd036,
+    0xd037, 0xd039, 0xd03a, 0xd03b, 0xd03d, 0xd03e, 0xd03f, 0xd040,
+    0xd041, 0xd042, 0xd043, 0xd046, 0xd048, 0xd04a, 0xd04b, 0xd04c,
+    0xd04d, 0xd04e, 0xd04f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd051, 0xd052, 0xd053, 0xd055, 0xd056, 0xd057, 0xd059,
+    0xd05a, 0xd05b, 0xd05c, 0xd05d, 0xd05e, 0xd05f, 0xd061, 0xd062,
+    0xd063, 0xd064, 0xd065, 0xd066, 0xd067, 0xd068, 0xd069, 0xd06a,
+    0xd06b, 0xd06e, 0xd06f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd071, 0xd072, 0xd073, 0xd075, 0xd076, 0xd077, 0xd078,
+    0xd079, 0xd07a, 0xd07b, 0xd07e, 0xd07f, 0xd080, 0xd082, 0xd083,
+    0xd084, 0xd085, 0xd086, 0xd087, 0xd088, 0xd089, 0xd08a, 0xd08b,
+    0xd08c, 0xd08d, 0xd08e, 0xd08f, 0xd090, 0xd091, 0xd092, 0xd093,
+    0xd094, 0xb1df, 0xb1e8, 0xb1e9, 0xb1ec, 0xb1f0, 0xb1f9, 0xb1fb,
+    0xb1fd, 0xb204, 0xb205, 0xb208, 0xb20b, 0xb20c, 0xb214, 0xb215,
+    0xb217, 0xb219, 0xb220, 0xb234, 0xb23c, 0xb258, 0xb25c, 0xb260,
+    0xb268, 0xb269, 0xb274, 0xb275, 0xb27c, 0xb284, 0xb285, 0xb289,
+    0xb290, 0xb291, 0xb294, 0xb298, 0xb299, 0xb29a, 0xb2a0, 0xb2a1,
+    0xb2a3, 0xb2a5, 0xb2a6, 0xb2aa, 0xb2ac, 0xb2b0, 0xb2b4, 0xb2c8,
+    0xb2c9, 0xb2cc, 0xb2d0, 0xb2d2, 0xb2d8, 0xb2d9, 0xb2db, 0xb2dd,
+    0xb2e2, 0xb2e4, 0xb2e5, 0xb2e6, 0xb2e8, 0xb2eb, 0xb2ec, 0xb2ed,
+    0xb2ee, 0xb2ef, 0xb2f3, 0xb2f4, 0xb2f5, 0xb2f7, 0xb2f8, 0xb2f9,
+    0xb2fa, 0xb2fb, 0xb2ff, 0xb300, 0xb301, 0xb304, 0xb308, 0xb310,
+    0xb311, 0xb313, 0xb314, 0xb315, 0xb31c, 0xb354, 0xb355, 0xb356,
+    0xb358, 0xb35b, 0xb35c, 0xb35e, 0xb35f, 0xb364, 0xb365, 0x003f,
+    /* lead byte b5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd095, 0xd096, 0xd097, 0xd098, 0xd099, 0xd09a, 0xd09b,
+    0xd09c, 0xd09d, 0xd09e, 0xd09f, 0xd0a0, 0xd0a1, 0xd0a2, 0xd0a3,
+    0xd0a6, 0xd0a7, 0xd0a9, 0xd0aa, 0xd0ab, 0xd0ad, 0xd0ae, 0xd0af,
+    0xd0b0, 0xd0b1, 0xd0b2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd0b3, 0xd0b6, 0xd0b8, 0xd0ba, 0xd0bb, 0xd0bc, 0xd0bd,
+    0xd0be, 0xd0bf, 0xd0c2, 0xd0c3, 0xd0c5, 0xd0c6, 0xd0c7, 0xd0ca,
+    0xd0cb, 0xd0cc, 0xd0cd, 0xd0ce, 0xd0cf, 0xd0d2, 0xd0d6, 0xd0d7,
+    0xd0d8, 0xd0d9, 0xd0da, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd0db, 0xd0de, 0xd0df, 0xd0e1, 0xd0e2, 0xd0e3, 0xd0e5,
+    0xd0e6, 0xd0e7, 0xd0e8, 0xd0e9, 0xd0ea, 0xd0eb, 0xd0ee, 0xd0f2,
+    0xd0f3, 0xd0f4, 0xd0f5, 0xd0f6, 0xd0f7, 0xd0f9, 0xd0fa, 0xd0fb,
+    0xd0fc, 0xd0fd, 0xd0fe, 0xd0ff, 0xd100, 0xd101, 0xd102, 0xd103,
+    0xd104, 0xb367, 0xb369, 0xb36b, 0xb36e, 0xb370, 0xb371, 0xb374,
+    0xb378, 0xb380, 0xb381, 0xb383, 0xb384, 0xb385, 0xb38c, 0xb390,
+    0xb394, 0xb3a0, 0xb3a1, 0xb3a8, 0xb3ac, 0xb3c4, 0xb3c5, 0xb3c8,
+    0xb3cb, 0xb3cc, 0xb3ce, 0xb3d0, 0xb3d4, 0xb3d5, 0xb3d7, 0xb3d9,
+    0xb3db, 0xb3dd, 0xb3e0, 0xb3e4, 0xb3e8, 0xb3fc, 0xb410, 0xb418,
+    0xb41c, 0xb420, 0xb428, 0xb429, 0xb42b, 0xb434, 0xb450, 0xb451,
+    0xb454, 0xb458, 0xb460, 0xb461, 0xb463, 0xb465, 0xb46c, 0xb480,
+    0xb488, 0xb49d, 0xb4a4, 0xb4a8, 0xb4ac, 0xb4b5, 0xb4b7, 0xb4b9,
+    0xb4c0, 0xb4c4, 0xb4c8, 0xb4d0, 0xb4d5, 0xb4dc, 0xb4dd, 0xb4e0,
+    0xb4e3, 0xb4e4, 0xb4e6, 0xb4ec, 0xb4ed, 0xb4ef, 0xb4f1, 0xb4f8,
+    0xb514, 0xb515, 0xb518, 0xb51b, 0xb51c, 0xb524, 0xb525, 0xb527,
+    0xb528, 0xb529, 0xb52a, 0xb530, 0xb531, 0xb534, 0xb538, 0x003f,
+    /* lead byte b6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd105, 0xd106, 0xd107, 0xd108, 0xd109, 0xd10a, 0xd10b,
+    0xd10c, 0xd10e, 0xd10f, 0xd110, 0xd111, 0xd112, 0xd113, 0xd114,
+    0xd115, 0xd116, 0xd117, 0xd118, 0xd119, 0xd11a, 0xd11b, 0xd11c,
+    0xd11d, 0xd11e, 0xd11f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd120, 0xd121, 0xd122, 0xd123, 0xd124, 0xd125, 0xd126,
+    0xd127, 0xd128, 0xd129, 0xd12a, 0xd12b, 0xd12c, 0xd12d, 0xd12e,
+    0xd12f, 0xd132, 0xd133, 0xd135, 0xd136, 0xd137, 0xd139, 0xd13b,
+    0xd13c, 0xd13d, 0xd13e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd13f, 0xd142, 0xd146, 0xd147, 0xd148, 0xd149, 0xd14a,
+    0xd14b, 0xd14e, 0xd14f, 0xd151, 0xd152, 0xd153, 0xd155, 0xd156,
+    0xd157, 0xd158, 0xd159, 0xd15a, 0xd15b, 0xd15e, 0xd160, 0xd162,
+    0xd163, 0xd164, 0xd165, 0xd166, 0xd167, 0xd169, 0xd16a, 0xd16b,
+    0xd16d, 0xb540, 0xb541, 0xb543, 0xb544, 0xb545, 0xb54b, 0xb54c,
+    0xb54d, 0xb550, 0xb554, 0xb55c, 0xb55d, 0xb55f, 0xb560, 0xb561,
+    0xb5a0, 0xb5a1, 0xb5a4, 0xb5a8, 0xb5aa, 0xb5ab, 0xb5b0, 0xb5b1,
+    0xb5b3, 0xb5b4, 0xb5b5, 0xb5bb, 0xb5bc, 0xb5bd, 0xb5c0, 0xb5c4,
+    0xb5cc, 0xb5cd, 0xb5cf, 0xb5d0, 0xb5d1, 0xb5d8, 0xb5ec, 0xb610,
+    0xb611, 0xb614, 0xb618, 0xb625, 0xb62c, 0xb634, 0xb648, 0xb664,
+    0xb668, 0xb69c, 0xb69d, 0xb6a0, 0xb6a4, 0xb6ab, 0xb6ac, 0xb6b1,
+    0xb6d4, 0xb6f0, 0xb6f4, 0xb6f8, 0xb700, 0xb701, 0xb705, 0xb728,
+    0xb729, 0xb72c, 0xb72f, 0xb730, 0xb738, 0xb739, 0xb73b, 0xb744,
+    0xb748, 0xb74c, 0xb754, 0xb755, 0xb760, 0xb764, 0xb768, 0xb770,
+    0xb771, 0xb773, 0xb775, 0xb77c, 0xb77d, 0xb780, 0xb784, 0xb78c,
+    0xb78d, 0xb78f, 0xb790, 0xb791, 0xb792, 0xb796, 0xb797, 0x003f,
+    /* lead byte b7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd16e, 0xd16f, 0xd170, 0xd171, 0xd172, 0xd173, 0xd174,
+    0xd175, 0xd176, 0xd177, 0xd178, 0xd179, 0xd17a, 0xd17b, 0xd17d,
+    0xd17e, 0xd17f, 0xd180, 0xd181, 0xd182, 0xd183, 0xd185, 0xd186,
+    0xd187, 0xd189, 0xd18a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd18b, 0xd18c, 0xd18d, 0xd18e, 0xd18f, 0xd190, 0xd191,
+    0xd192, 0xd193, 0xd194, 0xd195, 0xd196, 0xd197, 0xd198, 0xd199,
+    0xd19a, 0xd19b, 0xd19c, 0xd19d, 0xd19e, 0xd19f, 0xd1a2, 0xd1a3,
+    0xd1a5, 0xd1a6, 0xd1a7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd1a9, 0xd1aa, 0xd1ab, 0xd1ac, 0xd1ad, 0xd1ae, 0xd1af,
+    0xd1b2, 0xd1b4, 0xd1b6, 0xd1b7, 0xd1b8, 0xd1b9, 0xd1bb, 0xd1bd,
+    0xd1be, 0xd1bf, 0xd1c1, 0xd1c2, 0xd1c3, 0xd1c4, 0xd1c5, 0xd1c6,
+    0xd1c7, 0xd1c8, 0xd1c9, 0xd1ca, 0xd1cb, 0xd1cc, 0xd1cd, 0xd1ce,
+    0xd1cf, 0xb798, 0xb799, 0xb79c, 0xb7a0, 0xb7a8, 0xb7a9, 0xb7ab,
+    0xb7ac, 0xb7ad, 0xb7b4, 0xb7b5, 0xb7b8, 0xb7c7, 0xb7c9, 0xb7ec,
+    0xb7ed, 0xb7f0, 0xb7f4, 0xb7fc, 0xb7fd, 0xb7ff, 0xb800, 0xb801,
+    0xb807, 0xb808, 0xb809, 0xb80c, 0xb810, 0xb818, 0xb819, 0xb81b,
+    0xb81d, 0xb824, 0xb825, 0xb828, 0xb82c, 0xb834, 0xb835, 0xb837,
+    0xb838, 0xb839, 0xb840, 0xb844, 0xb851, 0xb853, 0xb85c, 0xb85d,
+    0xb860, 0xb864, 0xb86c, 0xb86d, 0xb86f, 0xb871, 0xb878, 0xb87c,
+    0xb88d, 0xb8a8, 0xb8b0, 0xb8b4, 0xb8b8, 0xb8c0, 0xb8c1, 0xb8c3,
+    0xb8c5, 0xb8cc, 0xb8d0, 0xb8d4, 0xb8dd, 0xb8df, 0xb8e1, 0xb8e8,
+    0xb8e9, 0xb8ec, 0xb8f0, 0xb8f8, 0xb8f9, 0xb8fb, 0xb8fd, 0xb904,
+    0xb918, 0xb920, 0xb93c, 0xb93d, 0xb940, 0xb944, 0xb94c, 0xb94f,
+    0xb951, 0xb958, 0xb959, 0xb95c, 0xb960, 0xb968, 0xb969, 0x003f,
+    /* lead byte b8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd1d0, 0xd1d1, 0xd1d2, 0xd1d3, 0xd1d4, 0xd1d5, 0xd1d6,
+    0xd1d7, 0xd1d9, 0xd1da, 0xd1db, 0xd1dc, 0xd1dd, 0xd1de, 0xd1df,
+    0xd1e0, 0xd1e1, 0xd1e2, 0xd1e3, 0xd1e4, 0xd1e5, 0xd1e6, 0xd1e7,
+    0xd1e8, 0xd1e9, 0xd1ea, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd1eb, 0xd1ec, 0xd1ed, 0xd1ee, 0xd1ef, 0xd1f0, 0xd1f1,
+    0xd1f2, 0xd1f3, 0xd1f5, 0xd1f6, 0xd1f7, 0xd1f9, 0xd1fa, 0xd1fb,
+    0xd1fc, 0xd1fd, 0xd1fe, 0xd1ff, 0xd200, 0xd201, 0xd202, 0xd203,
+    0xd204, 0xd205, 0xd206, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd208, 0xd20a, 0xd20b, 0xd20c, 0xd20d, 0xd20e, 0xd20f,
+    0xd211, 0xd212, 0xd213, 0xd214, 0xd215, 0xd216, 0xd217, 0xd218,
+    0xd219, 0xd21a, 0xd21b, 0xd21c, 0xd21d, 0xd21e, 0xd21f, 0xd220,
+    0xd221, 0xd222, 0xd223, 0xd224, 0xd225, 0xd226, 0xd227, 0xd228,
+    0xd229, 0xb96b, 0xb96d, 0xb974, 0xb975, 0xb978, 0xb97c, 0xb984,
+    0xb985, 0xb987, 0xb989, 0xb98a, 0xb98d, 0xb98e, 0xb9ac, 0xb9ad,
+    0xb9b0, 0xb9b4, 0xb9bc, 0xb9bd, 0xb9bf, 0xb9c1, 0xb9c8, 0xb9c9,
+    0xb9cc, 0xb9ce, 0xb9cf, 0xb9d0, 0xb9d1, 0xb9d2, 0xb9d8, 0xb9d9,
+    0xb9db, 0xb9dd, 0xb9de, 0xb9e1, 0xb9e3, 0xb9e4, 0xb9e5, 0xb9e8,
+    0xb9ec, 0xb9f4, 0xb9f5, 0xb9f7, 0xb9f8, 0xb9f9, 0xb9fa, 0xba00,
+    0xba01, 0xba08, 0xba15, 0xba38, 0xba39, 0xba3c, 0xba40, 0xba42,
+    0xba48, 0xba49, 0xba4b, 0xba4d, 0xba4e, 0xba53, 0xba54, 0xba55,
+    0xba58, 0xba5c, 0xba64, 0xba65, 0xba67, 0xba68, 0xba69, 0xba70,
+    0xba71, 0xba74, 0xba78, 0xba83, 0xba84, 0xba85, 0xba87, 0xba8c,
+    0xbaa8, 0xbaa9, 0xbaab, 0xbaac, 0xbab0, 0xbab2, 0xbab8, 0xbab9,
+    0xbabb, 0xbabd, 0xbac4, 0xbac8, 0xbad8, 0xbad9, 0xbafc, 0x003f,
+    /* lead byte b9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd22a, 0xd22b, 0xd22e, 0xd22f, 0xd231, 0xd232, 0xd233,
+    0xd235, 0xd236, 0xd237, 0xd238, 0xd239, 0xd23a, 0xd23b, 0xd23e,
+    0xd240, 0xd242, 0xd243, 0xd244, 0xd245, 0xd246, 0xd247, 0xd249,
+    0xd24a, 0xd24b, 0xd24c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd24d, 0xd24e, 0xd24f, 0xd250, 0xd251, 0xd252, 0xd253,
+    0xd254, 0xd255, 0xd256, 0xd257, 0xd258, 0xd259, 0xd25a, 0xd25b,
+    0xd25d, 0xd25e, 0xd25f, 0xd260, 0xd261, 0xd262, 0xd263, 0xd265,
+    0xd266, 0xd267, 0xd268, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd269, 0xd26a, 0xd26b, 0xd26c, 0xd26d, 0xd26e, 0xd26f,
+    0xd270, 0xd271, 0xd272, 0xd273, 0xd274, 0xd275, 0xd276, 0xd277,
+    0xd278, 0xd279, 0xd27a, 0xd27b, 0xd27c, 0xd27d, 0xd27e, 0xd27f,
+    0xd282, 0xd283, 0xd285, 0xd286, 0xd287, 0xd289, 0xd28a, 0xd28b,
+    0xd28c, 0xbb00, 0xbb04, 0xbb0d, 0xbb0f, 0xbb11, 0xbb18, 0xbb1c,
+    0xbb20, 0xbb29, 0xbb2b, 0xbb34, 0xbb35, 0xbb36, 0xbb38, 0xbb3b,
+    0xbb3c, 0xbb3d, 0xbb3e, 0xbb44, 0xbb45, 0xbb47, 0xbb49, 0xbb4d,
+    0xbb4f, 0xbb50, 0xbb54, 0xbb58, 0xbb61, 0xbb63, 0xbb6c, 0xbb88,
+    0xbb8c, 0xbb90, 0xbba4, 0xbba8, 0xbbac, 0xbbb4, 0xbbb7, 0xbbc0,
+    0xbbc4, 0xbbc8, 0xbbd0, 0xbbd3, 0xbbf8, 0xbbf9, 0xbbfc, 0xbbff,
+    0xbc00, 0xbc02, 0xbc08, 0xbc09, 0xbc0b, 0xbc0c, 0xbc0d, 0xbc0f,
+    0xbc11, 0xbc14, 0xbc15, 0xbc16, 0xbc17, 0xbc18, 0xbc1b, 0xbc1c,
+    0xbc1d, 0xbc1e, 0xbc1f, 0xbc24, 0xbc25, 0xbc27, 0xbc29, 0xbc2d,
+    0xbc30, 0xbc31, 0xbc34, 0xbc38, 0xbc40, 0xbc41, 0xbc43, 0xbc44,
+    0xbc45, 0xbc49, 0xbc4c, 0xbc4d, 0xbc50, 0xbc5d, 0xbc84, 0xbc85,
+    0xbc88, 0xbc8b, 0xbc8c, 0xbc8e, 0xbc94, 0xbc95, 0xbc97, 0x003f,
+    /* lead byte ba */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd28d, 0xd28e, 0xd28f, 0xd292, 0xd293, 0xd294, 0xd296,
+    0xd297, 0xd298, 0xd299, 0xd29a, 0xd29b, 0xd29d, 0xd29e, 0xd29f,
+    0xd2a1, 0xd2a2, 0xd2a3, 0xd2a5, 0xd2a6, 0xd2a7, 0xd2a8, 0xd2a9,
+    0xd2aa, 0xd2ab, 0xd2ad, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd2ae, 0xd2af, 0xd2b0, 0xd2b2, 0xd2b3, 0xd2b4, 0xd2b5,
+    0xd2b6, 0xd2b7, 0xd2ba, 0xd2bb, 0xd2bd, 0xd2be, 0xd2c1, 0xd2c3,
+    0xd2c4, 0xd2c5, 0xd2c6, 0xd2c7, 0xd2ca, 0xd2cc, 0xd2cd, 0xd2ce,
+    0xd2cf, 0xd2d0, 0xd2d1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd2d2, 0xd2d3, 0xd2d5, 0xd2d6, 0xd2d7, 0xd2d9, 0xd2da,
+    0xd2db, 0xd2dd, 0xd2de, 0xd2df, 0xd2e0, 0xd2e1, 0xd2e2, 0xd2e3,
+    0xd2e6, 0xd2e7, 0xd2e8, 0xd2e9, 0xd2ea, 0xd2eb, 0xd2ec, 0xd2ed,
+    0xd2ee, 0xd2ef, 0xd2f2, 0xd2f3, 0xd2f5, 0xd2f6, 0xd2f7, 0xd2f9,
+    0xd2fa, 0xbc99, 0xbc9a, 0xbca0, 0xbca1, 0xbca4, 0xbca7, 0xbca8,
+    0xbcb0, 0xbcb1, 0xbcb3, 0xbcb4, 0xbcb5, 0xbcbc, 0xbcbd, 0xbcc0,
+    0xbcc4, 0xbccd, 0xbccf, 0xbcd0, 0xbcd1, 0xbcd5, 0xbcd8, 0xbcdc,
+    0xbcf4, 0xbcf5, 0xbcf6, 0xbcf8, 0xbcfc, 0xbd04, 0xbd05, 0xbd07,
+    0xbd09, 0xbd10, 0xbd14, 0xbd24, 0xbd2c, 0xbd40, 0xbd48, 0xbd49,
+    0xbd4c, 0xbd50, 0xbd58, 0xbd59, 0xbd64, 0xbd68, 0xbd80, 0xbd81,
+    0xbd84, 0xbd87, 0xbd88, 0xbd89, 0xbd8a, 0xbd90, 0xbd91, 0xbd93,
+    0xbd95, 0xbd99, 0xbd9a, 0xbd9c, 0xbda4, 0xbdb0, 0xbdb8, 0xbdd4,
+    0xbdd5, 0xbdd8, 0xbddc, 0xbde9, 0xbdf0, 0xbdf4, 0xbdf8, 0xbe00,
+    0xbe03, 0xbe05, 0xbe0c, 0xbe0d, 0xbe10, 0xbe14, 0xbe1c, 0xbe1d,
+    0xbe1f, 0xbe44, 0xbe45, 0xbe48, 0xbe4c, 0xbe4e, 0xbe54, 0xbe55,
+    0xbe57, 0xbe59, 0xbe5a, 0xbe5b, 0xbe60, 0xbe61, 0xbe64, 0x003f,
+    /* lead byte bb */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd2fb, 0xd2fc, 0xd2fd, 0xd2fe, 0xd2ff, 0xd302, 0xd304,
+    0xd306, 0xd307, 0xd308, 0xd309, 0xd30a, 0xd30b, 0xd30f, 0xd311,
+    0xd312, 0xd313, 0xd315, 0xd317, 0xd318, 0xd319, 0xd31a, 0xd31b,
+    0xd31e, 0xd322, 0xd323, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd324, 0xd326, 0xd327, 0xd32a, 0xd32b, 0xd32d, 0xd32e,
+    0xd32f, 0xd331, 0xd332, 0xd333, 0xd334, 0xd335, 0xd336, 0xd337,
+    0xd33a, 0xd33e, 0xd33f, 0xd340, 0xd341, 0xd342, 0xd343, 0xd346,
+    0xd347, 0xd348, 0xd349, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd34a, 0xd34b, 0xd34c, 0xd34d, 0xd34e, 0xd34f, 0xd350,
+    0xd351, 0xd352, 0xd353, 0xd354, 0xd355, 0xd356, 0xd357, 0xd358,
+    0xd359, 0xd35a, 0xd35b, 0xd35c, 0xd35d, 0xd35e, 0xd35f, 0xd360,
+    0xd361, 0xd362, 0xd363, 0xd364, 0xd365, 0xd366, 0xd367, 0xd368,
+    0xd369, 0xbe68, 0xbe6a, 0xbe70, 0xbe71, 0xbe73, 0xbe74, 0xbe75,
+    0xbe7b, 0xbe7c, 0xbe7d, 0xbe80, 0xbe84, 0xbe8c, 0xbe8d, 0xbe8f,
+    0xbe90, 0xbe91, 0xbe98, 0xbe99, 0xbea8, 0xbed0, 0xbed1, 0xbed4,
+    0xbed7, 0xbed8, 0xbee0, 0xbee3, 0xbee4, 0xbee5, 0xbeec, 0xbf01,
+    0xbf08, 0xbf09, 0xbf18, 0xbf19, 0xbf1b, 0xbf1c, 0xbf1d, 0xbf40,
+    0xbf41, 0xbf44, 0xbf48, 0xbf50, 0xbf51, 0xbf55, 0xbf94, 0xbfb0,
+    0xbfc5, 0xbfcc, 0xbfcd, 0xbfd0, 0xbfd4, 0xbfdc, 0xbfdf, 0xbfe1,
+    0xc03c, 0xc051, 0xc058, 0xc05c, 0xc060, 0xc068, 0xc069, 0xc090,
+    0xc091, 0xc094, 0xc098, 0xc0a0, 0xc0a1, 0xc0a3, 0xc0a5, 0xc0ac,
+    0xc0ad, 0xc0af, 0xc0b0, 0xc0b3, 0xc0b4, 0xc0b5, 0xc0b6, 0xc0bc,
+    0xc0bd, 0xc0bf, 0xc0c0, 0xc0c1, 0xc0c5, 0xc0c8, 0xc0c9, 0xc0cc,
+    0xc0d0, 0xc0d8, 0xc0d9, 0xc0db, 0xc0dc, 0xc0dd, 0xc0e4, 0x003f,
+    /* lead byte bc */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd36a, 0xd36b, 0xd36c, 0xd36d, 0xd36e, 0xd36f, 0xd370,
+    0xd371, 0xd372, 0xd373, 0xd374, 0xd375, 0xd376, 0xd377, 0xd378,
+    0xd379, 0xd37a, 0xd37b, 0xd37e, 0xd37f, 0xd381, 0xd382, 0xd383,
+    0xd385, 0xd386, 0xd387, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd388, 0xd389, 0xd38a, 0xd38b, 0xd38e, 0xd392, 0xd393,
+    0xd394, 0xd395, 0xd396, 0xd397, 0xd39a, 0xd39b, 0xd39d, 0xd39e,
+    0xd39f, 0xd3a1, 0xd3a2, 0xd3a3, 0xd3a4, 0xd3a5, 0xd3a6, 0xd3a7,
+    0xd3aa, 0xd3ac, 0xd3ae, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd3af, 0xd3b0, 0xd3b1, 0xd3b2, 0xd3b3, 0xd3b5, 0xd3b6,
+    0xd3b7, 0xd3b9, 0xd3ba, 0xd3bb, 0xd3bd, 0xd3be, 0xd3bf, 0xd3c0,
+    0xd3c1, 0xd3c2, 0xd3c3, 0xd3c6, 0xd3c7, 0xd3ca, 0xd3cb, 0xd3cc,
+    0xd3cd, 0xd3ce, 0xd3cf, 0xd3d1, 0xd3d2, 0xd3d3, 0xd3d4, 0xd3d5,
+    0xd3d6, 0xc0e5, 0xc0e8, 0xc0ec, 0xc0f4, 0xc0f5, 0xc0f7, 0xc0f9,
+    0xc100, 0xc104, 0xc108, 0xc110, 0xc115, 0xc11c, 0xc11d, 0xc11e,
+    0xc11f, 0xc120, 0xc123, 0xc124, 0xc126, 0xc127, 0xc12c, 0xc12d,
+    0xc12f, 0xc130, 0xc131, 0xc136, 0xc138, 0xc139, 0xc13c, 0xc140,
+    0xc148, 0xc149, 0xc14b, 0xc14c, 0xc14d, 0xc154, 0xc155, 0xc158,
+    0xc15c, 0xc164, 0xc165, 0xc167, 0xc168, 0xc169, 0xc170, 0xc174,
+    0xc178, 0xc185, 0xc18c, 0xc18d, 0xc18e, 0xc190, 0xc194, 0xc196,
+    0xc19c, 0xc19d, 0xc19f, 0xc1a1, 0xc1a5, 0xc1a8, 0xc1a9, 0xc1ac,
+    0xc1b0, 0xc1bd, 0xc1c4, 0xc1c8, 0xc1cc, 0xc1d4, 0xc1d7, 0xc1d8,
+    0xc1e0, 0xc1e4, 0xc1e8, 0xc1f0, 0xc1f1, 0xc1f3, 0xc1fc, 0xc1fd,
+    0xc200, 0xc204, 0xc20c, 0xc20d, 0xc20f, 0xc211, 0xc218, 0xc219,
+    0xc21c, 0xc21f, 0xc220, 0xc228, 0xc229, 0xc22b, 0xc22d, 0x003f,
+    /* lead byte bd */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd3d7, 0xd3d9, 0xd3da, 0xd3db, 0xd3dc, 0xd3dd, 0xd3de,
+    0xd3df, 0xd3e0, 0xd3e2, 0xd3e4, 0xd3e5, 0xd3e6, 0xd3e7, 0xd3e8,
+    0xd3e9, 0xd3ea, 0xd3eb, 0xd3ee, 0xd3ef, 0xd3f1, 0xd3f2, 0xd3f3,
+    0xd3f5, 0xd3f6, 0xd3f7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd3f8, 0xd3f9, 0xd3fa, 0xd3fb, 0xd3fe, 0xd400, 0xd402,
+    0xd403, 0xd404, 0xd405, 0xd406, 0xd407, 0xd409, 0xd40a, 0xd40b,
+    0xd40c, 0xd40d, 0xd40e, 0xd40f, 0xd410, 0xd411, 0xd412, 0xd413,
+    0xd414, 0xd415, 0xd416, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd417, 0xd418, 0xd419, 0xd41a, 0xd41b, 0xd41c, 0xd41e,
+    0xd41f, 0xd420, 0xd421, 0xd422, 0xd423, 0xd424, 0xd425, 0xd426,
+    0xd427, 0xd428, 0xd429, 0xd42a, 0xd42b, 0xd42c, 0xd42d, 0xd42e,
+    0xd42f, 0xd430, 0xd431, 0xd432, 0xd433, 0xd434, 0xd435, 0xd436,
+    0xd437, 0xc22f, 0xc231, 0xc232, 0xc234, 0xc248, 0xc250, 0xc251,
+    0xc254, 0xc258, 0xc260, 0xc265, 0xc26c, 0xc26d, 0xc270, 0xc274,
+    0xc27c, 0xc27d, 0xc27f, 0xc281, 0xc288, 0xc289, 0xc290, 0xc298,
+    0xc29b, 0xc29d, 0xc2a4, 0xc2a5, 0xc2a8, 0xc2ac, 0xc2ad, 0xc2b4,
+    0xc2b5, 0xc2b7, 0xc2b9, 0xc2dc, 0xc2dd, 0xc2e0, 0xc2e3, 0xc2e4,
+    0xc2eb, 0xc2ec, 0xc2ed, 0xc2ef, 0xc2f1, 0xc2f6, 0xc2f8, 0xc2f9,
+    0xc2fb, 0xc2fc, 0xc300, 0xc308, 0xc309, 0xc30c, 0xc30d, 0xc313,
+    0xc314, 0xc315, 0xc318, 0xc31c, 0xc324, 0xc325, 0xc328, 0xc329,
+    0xc345, 0xc368, 0xc369, 0xc36c, 0xc370, 0xc372, 0xc378, 0xc379,
+    0xc37c, 0xc37d, 0xc384, 0xc388, 0xc38c, 0xc3c0, 0xc3d8, 0xc3d9,
+    0xc3dc, 0xc3df, 0xc3e0, 0xc3e2, 0xc3e8, 0xc3e9, 0xc3ed, 0xc3f4,
+    0xc3f5, 0xc3f8, 0xc408, 0xc410, 0xc424, 0xc42c, 0xc430, 0x003f,
+    /* lead byte be */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd438, 0xd439, 0xd43a, 0xd43b, 0xd43c, 0xd43d, 0xd43e,
+    0xd43f, 0xd441, 0xd442, 0xd443, 0xd445, 0xd446, 0xd447, 0xd448,
+    0xd449, 0xd44a, 0xd44b, 0xd44c, 0xd44d, 0xd44e, 0xd44f, 0xd450,
+    0xd451, 0xd452, 0xd453, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd454, 0xd455, 0xd456, 0xd457, 0xd458, 0xd459, 0xd45a,
+    0xd45b, 0xd45d, 0xd45e, 0xd45f, 0xd461, 0xd462, 0xd463, 0xd465,
+    0xd466, 0xd467, 0xd468, 0xd469, 0xd46a, 0xd46b, 0xd46c, 0xd46e,
+    0xd470, 0xd471, 0xd472, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd473, 0xd474, 0xd475, 0xd476, 0xd477, 0xd47a, 0xd47b,
+    0xd47d, 0xd47e, 0xd481, 0xd483, 0xd484, 0xd485, 0xd486, 0xd487,
+    0xd48a, 0xd48c, 0xd48e, 0xd48f, 0xd490, 0xd491, 0xd492, 0xd493,
+    0xd495, 0xd496, 0xd497, 0xd498, 0xd499, 0xd49a, 0xd49b, 0xd49c,
+    0xd49d, 0xc434, 0xc43c, 0xc43d, 0xc448, 0xc464, 0xc465, 0xc468,
+    0xc46c, 0xc474, 0xc475, 0xc479, 0xc480, 0xc494, 0xc49c, 0xc4b8,
+    0xc4bc, 0xc4e9, 0xc4f0, 0xc4f1, 0xc4f4, 0xc4f8, 0xc4fa, 0xc4ff,
+    0xc500, 0xc501, 0xc50c, 0xc510, 0xc514, 0xc51c, 0xc528, 0xc529,
+    0xc52c, 0xc530, 0xc538, 0xc539, 0xc53b, 0xc53d, 0xc544, 0xc545,
+    0xc548, 0xc549, 0xc54a, 0xc54c, 0xc54d, 0xc54e, 0xc553, 0xc554,
+    0xc555, 0xc557, 0xc558, 0xc559, 0xc55d, 0xc55e, 0xc560, 0xc561,
+    0xc564, 0xc568, 0xc570, 0xc571, 0xc573, 0xc574, 0xc575, 0xc57c,
+    0xc57d, 0xc580, 0xc584, 0xc587, 0xc58c, 0xc58d, 0xc58f, 0xc591,
+    0xc595, 0xc597, 0xc598, 0xc59c, 0xc5a0, 0xc5a9, 0xc5b4, 0xc5b5,
+    0xc5b8, 0xc5b9, 0xc5bb, 0xc5bc, 0xc5bd, 0xc5be, 0xc5c4, 0xc5c5,
+    0xc5c6, 0xc5c7, 0xc5c8, 0xc5c9, 0xc5ca, 0xc5cc, 0xc5ce, 0x003f,
+    /* lead byte bf */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd49e, 0xd49f, 0xd4a0, 0xd4a1, 0xd4a2, 0xd4a3, 0xd4a4,
+    0xd4a5, 0xd4a6, 0xd4a7, 0xd4a8, 0xd4aa, 0xd4ab, 0xd4ac, 0xd4ad,
+    0xd4ae, 0xd4af, 0xd4b0, 0xd4b1, 0xd4b2, 0xd4b3, 0xd4b4, 0xd4b5,
+    0xd4b6, 0xd4b7, 0xd4b8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd4b9, 0xd4ba, 0xd4bb, 0xd4bc, 0xd4bd, 0xd4be, 0xd4bf,
+    0xd4c0, 0xd4c1, 0xd4c2, 0xd4c3, 0xd4c4, 0xd4c5, 0xd4c6, 0xd4c7,
+    0xd4c8, 0xd4c9, 0xd4ca, 0xd4cb, 0xd4cd, 0xd4ce, 0xd4cf, 0xd4d1,
+    0xd4d2, 0xd4d3, 0xd4d5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd4d6, 0xd4d7, 0xd4d8, 0xd4d9, 0xd4da, 0xd4db, 0xd4dd,
+    0xd4de, 0xd4e0, 0xd4e1, 0xd4e2, 0xd4e3, 0xd4e4, 0xd4e5, 0xd4e6,
+    0xd4e7, 0xd4e9, 0xd4ea, 0xd4eb, 0xd4ed, 0xd4ee, 0xd4ef, 0xd4f1,
+    0xd4f2, 0xd4f3, 0xd4f4, 0xd4f5, 0xd4f6, 0xd4f7, 0xd4f9, 0xd4fa,
+    0xd4fc, 0xc5d0, 0xc5d1, 0xc5d4, 0xc5d8, 0xc5e0, 0xc5e1, 0xc5e3,
+    0xc5e5, 0xc5ec, 0xc5ed, 0xc5ee, 0xc5f0, 0xc5f4, 0xc5f6, 0xc5f7,
+    0xc5fc, 0xc5fd, 0xc5fe, 0xc5ff, 0xc600, 0xc601, 0xc605, 0xc606,
+    0xc607, 0xc608, 0xc60c, 0xc610, 0xc618, 0xc619, 0xc61b, 0xc61c,
+    0xc624, 0xc625, 0xc628, 0xc62c, 0xc62d, 0xc62e, 0xc630, 0xc633,
+    0xc634, 0xc635, 0xc637, 0xc639, 0xc63b, 0xc640, 0xc641, 0xc644,
+    0xc648, 0xc650, 0xc651, 0xc653, 0xc654, 0xc655, 0xc65c, 0xc65d,
+    0xc660, 0xc66c, 0xc66f, 0xc671, 0xc678, 0xc679, 0xc67c, 0xc680,
+    0xc688, 0xc689, 0xc68b, 0xc68d, 0xc694, 0xc695, 0xc698, 0xc69c,
+    0xc6a4, 0xc6a5, 0xc6a7, 0xc6a9, 0xc6b0, 0xc6b1, 0xc6b4, 0xc6b8,
+    0xc6b9, 0xc6ba, 0xc6c0, 0xc6c1, 0xc6c3, 0xc6c5, 0xc6cc, 0xc6cd,
+    0xc6d0, 0xc6d4, 0xc6dc, 0xc6dd, 0xc6e0, 0xc6e1, 0xc6e8, 0x003f,
+    /* lead byte c0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd4fe, 0xd4ff, 0xd500, 0xd501, 0xd502, 0xd503, 0xd505,
+    0xd506, 0xd507, 0xd509, 0xd50a, 0xd50b, 0xd50d, 0xd50e, 0xd50f,
+    0xd510, 0xd511, 0xd512, 0xd513, 0xd516, 0xd518, 0xd519, 0xd51a,
+    0xd51b, 0xd51c, 0xd51d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd51e, 0xd51f, 0xd520, 0xd521, 0xd522, 0xd523, 0xd524,
+    0xd525, 0xd526, 0xd527, 0xd528, 0xd529, 0xd52a, 0xd52b, 0xd52c,
+    0xd52d, 0xd52e, 0xd52f, 0xd530, 0xd531, 0xd532, 0xd533, 0xd534,
+    0xd535, 0xd536, 0xd537, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd538, 0xd539, 0xd53a, 0xd53b, 0xd53e, 0xd53f, 0xd541,
+    0xd542, 0xd543, 0xd545, 0xd546, 0xd547, 0xd548, 0xd549, 0xd54a,
+    0xd54b, 0xd54e, 0xd550, 0xd552, 0xd553, 0xd554, 0xd555, 0xd556,
+    0xd557, 0xd55a, 0xd55b, 0xd55d, 0xd55e, 0xd55f, 0xd561, 0xd562,
+    0xd563, 0xc6e9, 0xc6ec, 0xc6f0, 0xc6f8, 0xc6f9, 0xc6fd, 0xc704,
+    0xc705, 0xc708, 0xc70c, 0xc714, 0xc715, 0xc717, 0xc719, 0xc720,
+    0xc721, 0xc724, 0xc728, 0xc730, 0xc731, 0xc733, 0xc735, 0xc737,
+    0xc73c, 0xc73d, 0xc740, 0xc744, 0xc74a, 0xc74c, 0xc74d, 0xc74f,
+    0xc751, 0xc752, 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, 0xc758,
+    0xc75c, 0xc760, 0xc768, 0xc76b, 0xc774, 0xc775, 0xc778, 0xc77c,
+    0xc77d, 0xc77e, 0xc783, 0xc784, 0xc785, 0xc787, 0xc788, 0xc789,
+    0xc78a, 0xc78e, 0xc790, 0xc791, 0xc794, 0xc796, 0xc797, 0xc798,
+    0xc79a, 0xc7a0, 0xc7a1, 0xc7a3, 0xc7a4, 0xc7a5, 0xc7a6, 0xc7ac,
+    0xc7ad, 0xc7b0, 0xc7b4, 0xc7bc, 0xc7bd, 0xc7bf, 0xc7c0, 0xc7c1,
+    0xc7c8, 0xc7c9, 0xc7cc, 0xc7ce, 0xc7d0, 0xc7d8, 0xc7dd, 0xc7e4,
+    0xc7e8, 0xc7ec, 0xc800, 0xc801, 0xc804, 0xc808, 0xc80a, 0x003f,
+    /* lead byte c1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd564, 0xd566, 0xd567, 0xd56a, 0xd56c, 0xd56e, 0xd56f,
+    0xd570, 0xd571, 0xd572, 0xd573, 0xd576, 0xd577, 0xd579, 0xd57a,
+    0xd57b, 0xd57d, 0xd57e, 0xd57f, 0xd580, 0xd581, 0xd582, 0xd583,
+    0xd586, 0xd58a, 0xd58b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd58c, 0xd58d, 0xd58e, 0xd58f, 0xd591, 0xd592, 0xd593,
+    0xd594, 0xd595, 0xd596, 0xd597, 0xd598, 0xd599, 0xd59a, 0xd59b,
+    0xd59c, 0xd59d, 0xd59e, 0xd59f, 0xd5a0, 0xd5a1, 0xd5a2, 0xd5a3,
+    0xd5a4, 0xd5a6, 0xd5a7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd5a8, 0xd5a9, 0xd5aa, 0xd5ab, 0xd5ac, 0xd5ad, 0xd5ae,
+    0xd5af, 0xd5b0, 0xd5b1, 0xd5b2, 0xd5b3, 0xd5b4, 0xd5b5, 0xd5b6,
+    0xd5b7, 0xd5b8, 0xd5b9, 0xd5ba, 0xd5bb, 0xd5bc, 0xd5bd, 0xd5be,
+    0xd5bf, 0xd5c0, 0xd5c1, 0xd5c2, 0xd5c3, 0xd5c4, 0xd5c5, 0xd5c6,
+    0xd5c7, 0xc810, 0xc811, 0xc813, 0xc815, 0xc816, 0xc81c, 0xc81d,
+    0xc820, 0xc824, 0xc82c, 0xc82d, 0xc82f, 0xc831, 0xc838, 0xc83c,
+    0xc840, 0xc848, 0xc849, 0xc84c, 0xc84d, 0xc854, 0xc870, 0xc871,
+    0xc874, 0xc878, 0xc87a, 0xc880, 0xc881, 0xc883, 0xc885, 0xc886,
+    0xc887, 0xc88b, 0xc88c, 0xc88d, 0xc894, 0xc89d, 0xc89f, 0xc8a1,
+    0xc8a8, 0xc8bc, 0xc8bd, 0xc8c4, 0xc8c8, 0xc8cc, 0xc8d4, 0xc8d5,
+    0xc8d7, 0xc8d9, 0xc8e0, 0xc8e1, 0xc8e4, 0xc8f5, 0xc8fc, 0xc8fd,
+    0xc900, 0xc904, 0xc905, 0xc906, 0xc90c, 0xc90d, 0xc90f, 0xc911,
+    0xc918, 0xc92c, 0xc934, 0xc950, 0xc951, 0xc954, 0xc958, 0xc960,
+    0xc961, 0xc963, 0xc96c, 0xc970, 0xc974, 0xc97c, 0xc988, 0xc989,
+    0xc98c, 0xc990, 0xc998, 0xc999, 0xc99b, 0xc99d, 0xc9c0, 0xc9c1,
+    0xc9c4, 0xc9c7, 0xc9c8, 0xc9ca, 0xc9d0, 0xc9d1, 0xc9d3, 0x003f,
+    /* lead byte c2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd5ca, 0xd5cb, 0xd5cd, 0xd5ce, 0xd5cf, 0xd5d1, 0xd5d3,
+    0xd5d4, 0xd5d5, 0xd5d6, 0xd5d7, 0xd5da, 0xd5dc, 0xd5de, 0xd5df,
+    0xd5e0, 0xd5e1, 0xd5e2, 0xd5e3, 0xd5e6, 0xd5e7, 0xd5e9, 0xd5ea,
+    0xd5eb, 0xd5ed, 0xd5ee, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd5ef, 0xd5f0, 0xd5f1, 0xd5f2, 0xd5f3, 0xd5f6, 0xd5f8,
+    0xd5fa, 0xd5fb, 0xd5fc, 0xd5fd, 0xd5fe, 0xd5ff, 0xd602, 0xd603,
+    0xd605, 0xd606, 0xd607, 0xd609, 0xd60a, 0xd60b, 0xd60c, 0xd60d,
+    0xd60e, 0xd60f, 0xd612, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd616, 0xd617, 0xd618, 0xd619, 0xd61a, 0xd61b, 0xd61d,
+    0xd61e, 0xd61f, 0xd621, 0xd622, 0xd623, 0xd625, 0xd626, 0xd627,
+    0xd628, 0xd629, 0xd62a, 0xd62b, 0xd62c, 0xd62e, 0xd62f, 0xd630,
+    0xd631, 0xd632, 0xd633, 0xd634, 0xd635, 0xd636, 0xd637, 0xd63a,
+    0xd63b, 0xc9d5, 0xc9d6, 0xc9d9, 0xc9da, 0xc9dc, 0xc9dd, 0xc9e0,
+    0xc9e2, 0xc9e4, 0xc9e7, 0xc9ec, 0xc9ed, 0xc9ef, 0xc9f0, 0xc9f1,
+    0xc9f8, 0xc9f9, 0xc9fc, 0xca00, 0xca08, 0xca09, 0xca0b, 0xca0c,
+    0xca0d, 0xca14, 0xca18, 0xca29, 0xca4c, 0xca4d, 0xca50, 0xca54,
+    0xca5c, 0xca5d, 0xca5f, 0xca60, 0xca61, 0xca68, 0xca7d, 0xca84,
+    0xca98, 0xcabc, 0xcabd, 0xcac0, 0xcac4, 0xcacc, 0xcacd, 0xcacf,
+    0xcad1, 0xcad3, 0xcad8, 0xcad9, 0xcae0, 0xcaec, 0xcaf4, 0xcb08,
+    0xcb10, 0xcb14, 0xcb18, 0xcb20, 0xcb21, 0xcb41, 0xcb48, 0xcb49,
+    0xcb4c, 0xcb50, 0xcb58, 0xcb59, 0xcb5d, 0xcb64, 0xcb78, 0xcb79,
+    0xcb9c, 0xcbb8, 0xcbd4, 0xcbe4, 0xcbe7, 0xcbe9, 0xcc0c, 0xcc0d,
+    0xcc10, 0xcc14, 0xcc1c, 0xcc1d, 0xcc21, 0xcc22, 0xcc27, 0xcc28,
+    0xcc29, 0xcc2c, 0xcc2e, 0xcc30, 0xcc38, 0xcc39, 0xcc3b, 0x003f,
+    /* lead byte c3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd63d, 0xd63e, 0xd63f, 0xd641, 0xd642, 0xd643, 0xd644,
+    0xd646, 0xd647, 0xd64a, 0xd64c, 0xd64e, 0xd64f, 0xd650, 0xd652,
+    0xd653, 0xd656, 0xd657, 0xd659, 0xd65a, 0xd65b, 0xd65d, 0xd65e,
+    0xd65f, 0xd660, 0xd661, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd662, 0xd663, 0xd664, 0xd665, 0xd666, 0xd668, 0xd66a,
+    0xd66b, 0xd66c, 0xd66d, 0xd66e, 0xd66f, 0xd672, 0xd673, 0xd675,
+    0xd676, 0xd677, 0xd678, 0xd679, 0xd67a, 0xd67b, 0xd67c, 0xd67d,
+    0xd67e, 0xd67f, 0xd680, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd681, 0xd682, 0xd684, 0xd686, 0xd687, 0xd688, 0xd689,
+    0xd68a, 0xd68b, 0xd68e, 0xd68f, 0xd691, 0xd692, 0xd693, 0xd695,
+    0xd696, 0xd697, 0xd698, 0xd699, 0xd69a, 0xd69b, 0xd69c, 0xd69e,
+    0xd6a0, 0xd6a2, 0xd6a3, 0xd6a4, 0xd6a5, 0xd6a6, 0xd6a7, 0xd6a9,
+    0xd6aa, 0xcc3c, 0xcc3d, 0xcc3e, 0xcc44, 0xcc45, 0xcc48, 0xcc4c,
+    0xcc54, 0xcc55, 0xcc57, 0xcc58, 0xcc59, 0xcc60, 0xcc64, 0xcc66,
+    0xcc68, 0xcc70, 0xcc75, 0xcc98, 0xcc99, 0xcc9c, 0xcca0, 0xcca8,
+    0xcca9, 0xccab, 0xccac, 0xccad, 0xccb4, 0xccb5, 0xccb8, 0xccbc,
+    0xccc4, 0xccc5, 0xccc7, 0xccc9, 0xccd0, 0xccd4, 0xcce4, 0xccec,
+    0xccf0, 0xcd01, 0xcd08, 0xcd09, 0xcd0c, 0xcd10, 0xcd18, 0xcd19,
+    0xcd1b, 0xcd1d, 0xcd24, 0xcd28, 0xcd2c, 0xcd39, 0xcd5c, 0xcd60,
+    0xcd64, 0xcd6c, 0xcd6d, 0xcd6f, 0xcd71, 0xcd78, 0xcd88, 0xcd94,
+    0xcd95, 0xcd98, 0xcd9c, 0xcda4, 0xcda5, 0xcda7, 0xcda9, 0xcdb0,
+    0xcdc4, 0xcdcc, 0xcdd0, 0xcde8, 0xcdec, 0xcdf0, 0xcdf8, 0xcdf9,
+    0xcdfb, 0xcdfd, 0xce04, 0xce08, 0xce0c, 0xce14, 0xce19, 0xce20,
+    0xce21, 0xce24, 0xce28, 0xce30, 0xce31, 0xce33, 0xce35, 0x003f,
+    /* lead byte c4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd6ab, 0xd6ad, 0xd6ae, 0xd6af, 0xd6b1, 0xd6b2, 0xd6b3,
+    0xd6b4, 0xd6b5, 0xd6b6, 0xd6b7, 0xd6b8, 0xd6ba, 0xd6bc, 0xd6bd,
+    0xd6be, 0xd6bf, 0xd6c0, 0xd6c1, 0xd6c2, 0xd6c3, 0xd6c6, 0xd6c7,
+    0xd6c9, 0xd6ca, 0xd6cb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd6cd, 0xd6ce, 0xd6cf, 0xd6d0, 0xd6d2, 0xd6d3, 0xd6d5,
+    0xd6d6, 0xd6d8, 0xd6da, 0xd6db, 0xd6dc, 0xd6dd, 0xd6de, 0xd6df,
+    0xd6e1, 0xd6e2, 0xd6e3, 0xd6e5, 0xd6e6, 0xd6e7, 0xd6e9, 0xd6ea,
+    0xd6eb, 0xd6ec, 0xd6ed, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd6ee, 0xd6ef, 0xd6f1, 0xd6f2, 0xd6f3, 0xd6f4, 0xd6f6,
+    0xd6f7, 0xd6f8, 0xd6f9, 0xd6fa, 0xd6fb, 0xd6fe, 0xd6ff, 0xd701,
+    0xd702, 0xd703, 0xd705, 0xd706, 0xd707, 0xd708, 0xd709, 0xd70a,
+    0xd70b, 0xd70c, 0xd70d, 0xd70e, 0xd70f, 0xd710, 0xd712, 0xd713,
+    0xd714, 0xce58, 0xce59, 0xce5c, 0xce5f, 0xce60, 0xce61, 0xce68,
+    0xce69, 0xce6b, 0xce6d, 0xce74, 0xce75, 0xce78, 0xce7c, 0xce84,
+    0xce85, 0xce87, 0xce89, 0xce90, 0xce91, 0xce94, 0xce98, 0xcea0,
+    0xcea1, 0xcea3, 0xcea4, 0xcea5, 0xceac, 0xcead, 0xcec1, 0xcee4,
+    0xcee5, 0xcee8, 0xceeb, 0xceec, 0xcef4, 0xcef5, 0xcef7, 0xcef8,
+    0xcef9, 0xcf00, 0xcf01, 0xcf04, 0xcf08, 0xcf10, 0xcf11, 0xcf13,
+    0xcf15, 0xcf1c, 0xcf20, 0xcf24, 0xcf2c, 0xcf2d, 0xcf2f, 0xcf30,
+    0xcf31, 0xcf38, 0xcf54, 0xcf55, 0xcf58, 0xcf5c, 0xcf64, 0xcf65,
+    0xcf67, 0xcf69, 0xcf70, 0xcf71, 0xcf74, 0xcf78, 0xcf80, 0xcf85,
+    0xcf8c, 0xcfa1, 0xcfa8, 0xcfb0, 0xcfc4, 0xcfe0, 0xcfe1, 0xcfe4,
+    0xcfe8, 0xcff0, 0xcff1, 0xcff3, 0xcff5, 0xcffc, 0xd000, 0xd004,
+    0xd011, 0xd018, 0xd02d, 0xd034, 0xd035, 0xd038, 0xd03c, 0x003f,
+    /* lead byte c5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd715, 0xd716, 0xd717, 0xd71a, 0xd71b, 0xd71d, 0xd71e,
+    0xd71f, 0xd721, 0xd722, 0xd723, 0xd724, 0xd725, 0xd726, 0xd727,
+    0xd72a, 0xd72c, 0xd72e, 0xd72f, 0xd730, 0xd731, 0xd732, 0xd733,
+    0xd736, 0xd737, 0xd739, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd73a, 0xd73b, 0xd73d, 0xd73e, 0xd73f, 0xd740, 0xd741,
+    0xd742, 0xd743, 0xd745, 0xd746, 0xd748, 0xd74a, 0xd74b, 0xd74c,
+    0xd74d, 0xd74e, 0xd74f, 0xd752, 0xd753, 0xd755, 0xd75a, 0xd75b,
+    0xd75c, 0xd75d, 0xd75e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd75f, 0xd762, 0xd764, 0xd766, 0xd767, 0xd768, 0xd76a,
+    0xd76b, 0xd76d, 0xd76e, 0xd76f, 0xd771, 0xd772, 0xd773, 0xd775,
+    0xd776, 0xd777, 0xd778, 0xd779, 0xd77a, 0xd77b, 0xd77e, 0xd77f,
+    0xd780, 0xd782, 0xd783, 0xd784, 0xd785, 0xd786, 0xd787, 0xd78a,
+    0xd78b, 0xd044, 0xd045, 0xd047, 0xd049, 0xd050, 0xd054, 0xd058,
+    0xd060, 0xd06c, 0xd06d, 0xd070, 0xd074, 0xd07c, 0xd07d, 0xd081,
+    0xd0a4, 0xd0a5, 0xd0a8, 0xd0ac, 0xd0b4, 0xd0b5, 0xd0b7, 0xd0b9,
+    0xd0c0, 0xd0c1, 0xd0c4, 0xd0c8, 0xd0c9, 0xd0d0, 0xd0d1, 0xd0d3,
+    0xd0d4, 0xd0d5, 0xd0dc, 0xd0dd, 0xd0e0, 0xd0e4, 0xd0ec, 0xd0ed,
+    0xd0ef, 0xd0f0, 0xd0f1, 0xd0f8, 0xd10d, 0xd130, 0xd131, 0xd134,
+    0xd138, 0xd13a, 0xd140, 0xd141, 0xd143, 0xd144, 0xd145, 0xd14c,
+    0xd14d, 0xd150, 0xd154, 0xd15c, 0xd15d, 0xd15f, 0xd161, 0xd168,
+    0xd16c, 0xd17c, 0xd184, 0xd188, 0xd1a0, 0xd1a1, 0xd1a4, 0xd1a8,
+    0xd1b0, 0xd1b1, 0xd1b3, 0xd1b5, 0xd1ba, 0xd1bc, 0xd1c0, 0xd1d8,
+    0xd1f4, 0xd1f8, 0xd207, 0xd209, 0xd210, 0xd22c, 0xd22d, 0xd230,
+    0xd234, 0xd23c, 0xd23d, 0xd23f, 0xd241, 0xd248, 0xd25c, 0x003f,
+    /* lead byte c6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd78d, 0xd78e, 0xd78f, 0xd791, 0xd792, 0xd793, 0xd794,
+    0xd795, 0xd796, 0xd797, 0xd79a, 0xd79c, 0xd79e, 0xd79f, 0xd7a0,
+    0xd7a1, 0xd7a2, 0xd7a3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd264, 0xd280, 0xd281, 0xd284, 0xd288, 0xd290, 0xd291,
+    0xd295, 0xd29c, 0xd2a0, 0xd2a4, 0xd2ac, 0xd2b1, 0xd2b8, 0xd2b9,
+    0xd2bc, 0xd2bf, 0xd2c0, 0xd2c2, 0xd2c8, 0xd2c9, 0xd2cb, 0xd2d4,
+    0xd2d8, 0xd2dc, 0xd2e4, 0xd2e5, 0xd2f0, 0xd2f1, 0xd2f4, 0xd2f8,
+    0xd300, 0xd301, 0xd303, 0xd305, 0xd30c, 0xd30d, 0xd30e, 0xd310,
+    0xd314, 0xd316, 0xd31c, 0xd31d, 0xd31f, 0xd320, 0xd321, 0xd325,
+    0xd328, 0xd329, 0xd32c, 0xd330, 0xd338, 0xd339, 0xd33b, 0xd33c,
+    0xd33d, 0xd344, 0xd345, 0xd37c, 0xd37d, 0xd380, 0xd384, 0xd38c,
+    0xd38d, 0xd38f, 0xd390, 0xd391, 0xd398, 0xd399, 0xd39c, 0xd3a0,
+    0xd3a8, 0xd3a9, 0xd3ab, 0xd3ad, 0xd3b4, 0xd3b8, 0xd3bc, 0xd3c4,
+    0xd3c5, 0xd3c8, 0xd3c9, 0xd3d0, 0xd3d8, 0xd3e1, 0xd3e3, 0xd3ec,
+    0xd3ed, 0xd3f0, 0xd3f4, 0xd3fc, 0xd3fd, 0xd3ff, 0xd401, 0x003f,
+    /* lead byte c7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd408, 0xd41d, 0xd440, 0xd444, 0xd45c, 0xd460, 0xd464,
+    0xd46d, 0xd46f, 0xd478, 0xd479, 0xd47c, 0xd47f, 0xd480, 0xd482,
+    0xd488, 0xd489, 0xd48b, 0xd48d, 0xd494, 0xd4a9, 0xd4cc, 0xd4d0,
+    0xd4d4, 0xd4dc, 0xd4df, 0xd4e8, 0xd4ec, 0xd4f0, 0xd4f8, 0xd4fb,
+    0xd4fd, 0xd504, 0xd508, 0xd50c, 0xd514, 0xd515, 0xd517, 0xd53c,
+    0xd53d, 0xd540, 0xd544, 0xd54c, 0xd54d, 0xd54f, 0xd551, 0xd558,
+    0xd559, 0xd55c, 0xd560, 0xd565, 0xd568, 0xd569, 0xd56b, 0xd56d,
+    0xd574, 0xd575, 0xd578, 0xd57c, 0xd584, 0xd585, 0xd587, 0xd588,
+    0xd589, 0xd590, 0xd5a5, 0xd5c8, 0xd5c9, 0xd5cc, 0xd5d0, 0xd5d2,
+    0xd5d8, 0xd5d9, 0xd5db, 0xd5dd, 0xd5e4, 0xd5e5, 0xd5e8, 0xd5ec,
+    0xd5f4, 0xd5f5, 0xd5f7, 0xd5f9, 0xd600, 0xd601, 0xd604, 0xd608,
+    0xd610, 0xd611, 0xd613, 0xd614, 0xd615, 0xd61c, 0xd620, 0x003f,
+    /* lead byte c8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd624, 0xd62d, 0xd638, 0xd639, 0xd63c, 0xd640, 0xd645,
+    0xd648, 0xd649, 0xd64b, 0xd64d, 0xd651, 0xd654, 0xd655, 0xd658,
+    0xd65c, 0xd667, 0xd669, 0xd670, 0xd671, 0xd674, 0xd683, 0xd685,
+    0xd68c, 0xd68d, 0xd690, 0xd694, 0xd69d, 0xd69f, 0xd6a1, 0xd6a8,
+    0xd6ac, 0xd6b0, 0xd6b9, 0xd6bb, 0xd6c4, 0xd6c5, 0xd6c8, 0xd6cc,
+    0xd6d1, 0xd6d4, 0xd6d7, 0xd6d9, 0xd6e0, 0xd6e4, 0xd6e8, 0xd6f0,
+    0xd6f5, 0xd6fc, 0xd6fd, 0xd700, 0xd704, 0xd711, 0xd718, 0xd719,
+    0xd71c, 0xd720, 0xd728, 0xd729, 0xd72b, 0xd72d, 0xd734, 0xd735,
+    0xd738, 0xd73c, 0xd744, 0xd747, 0xd749, 0xd750, 0xd751, 0xd754,
+    0xd756, 0xd757, 0xd758, 0xd759, 0xd760, 0xd761, 0xd763, 0xd765,
+    0xd769, 0xd76c, 0xd770, 0xd774, 0xd77c, 0xd77d, 0xd781, 0xd788,
+    0xd789, 0xd78c, 0xd790, 0xd798, 0xd799, 0xd79b, 0xd79d, 0x003f,
+    /* lead byte ca */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x4f3d, 0x4f73, 0x5047, 0x50f9, 0x52a0, 0x53ef, 0x5475,
+    0x54e5, 0x5609, 0x5ac1, 0x5bb6, 0x6687, 0x67b6, 0x67b7, 0x67ef,
+    0x6b4c, 0x73c2, 0x75c2, 0x7a3c, 0x82db, 0x8304, 0x8857, 0x8888,
+    0x8a36, 0x8cc8, 0x8dcf, 0x8efb, 0x8fe6, 0x99d5, 0x523b, 0x5374,
+    0x5404, 0x606a, 0x6164, 0x6bbc, 0x73cf, 0x811a, 0x89ba, 0x89d2,
+    0x95a3, 0x4f83, 0x520a, 0x58be, 0x5978, 0x59e6, 0x5e72, 0x5e79,
+    0x61c7, 0x63c0, 0x6746, 0x67ec, 0x687f, 0x6f97, 0x764e, 0x770b,
+    0x78f5, 0x7a08, 0x7aff, 0x7c21, 0x809d, 0x826e, 0x8271, 0x8aeb,
+    0x9593, 0x4e6b, 0x559d, 0x66f7, 0x6e34, 0x78a3, 0x7aed, 0x845b,
+    0x8910, 0x874e, 0x97a8, 0x52d8, 0x574e, 0x582a, 0x5d4c, 0x611f,
+    0x61be, 0x6221, 0x6562, 0x67d1, 0x6a44, 0x6e1b, 0x7518, 0x75b3,
+    0x76e3, 0x77b0, 0x7d3a, 0x90af, 0x9451, 0x9452, 0x9f95, 0x003f,
+    /* lead byte cb */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x5323, 0x5cac, 0x7532, 0x80db, 0x9240, 0x9598, 0x525b,
+    0x5808, 0x59dc, 0x5ca1, 0x5d17, 0x5eb7, 0x5f3a, 0x5f4a, 0x6177,
+    0x6c5f, 0x757a, 0x7586, 0x7ce0, 0x7d73, 0x7db1, 0x7f8c, 0x8154,
+    0x8221, 0x8591, 0x8941, 0x8b1b, 0x92fc, 0x964d, 0x9c47, 0x4ecb,
+    0x4ef7, 0x500b, 0x51f1, 0x584f, 0x6137, 0x613e, 0x6168, 0x6539,
+    0x69ea, 0x6f11, 0x75a5, 0x7686, 0x76d6, 0x7b87, 0x82a5, 0x84cb,
+    0xf900, 0x93a7, 0x958b, 0x5580, 0x5ba2, 0x5751, 0xf901, 0x7cb3,
+    0x7fb9, 0x91b5, 0x5028, 0x53bb, 0x5c45, 0x5de8, 0x62d2, 0x636e,
+    0x64da, 0x64e7, 0x6e20, 0x70ac, 0x795b, 0x8ddd, 0x8e1e, 0xf902,
+    0x907d, 0x9245, 0x92f8, 0x4e7e, 0x4ef6, 0x5065, 0x5dfe, 0x5efa,
+    0x6106, 0x6957, 0x8171, 0x8654, 0x8e47, 0x9375, 0x9a2b, 0x4e5e,
+    0x5091, 0x6770, 0x6840, 0x5109, 0x528d, 0x5292, 0x6aa2, 0x003f,
+    /* lead byte cc */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x77bc, 0x9210, 0x9ed4, 0x52ab, 0x602f, 0x8ff2, 0x5048,
+    0x61a9, 0x63ed, 0x64ca, 0x683c, 0x6a84, 0x6fc0, 0x8188, 0x89a1,
+    0x9694, 0x5805, 0x727d, 0x72ac, 0x7504, 0x7d79, 0x7e6d, 0x80a9,
+    0x898b, 0x8b74, 0x9063, 0x9d51, 0x6289, 0x6c7a, 0x6f54, 0x7d50,
+    0x7f3a, 0x8a23, 0x517c, 0x614a, 0x7b9d, 0x8b19, 0x9257, 0x938c,
+    0x4eac, 0x4fd3, 0x501e, 0x50be, 0x5106, 0x52c1, 0x52cd, 0x537f,
+    0x5770, 0x5883, 0x5e9a, 0x5f91, 0x6176, 0x61ac, 0x64ce, 0x656c,
+    0x666f, 0x66bb, 0x66f4, 0x6897, 0x6d87, 0x7085, 0x70f1, 0x749f,
+    0x74a5, 0x74ca, 0x75d9, 0x786c, 0x78ec, 0x7adf, 0x7af6, 0x7d45,
+    0x7d93, 0x8015, 0x803f, 0x811b, 0x8396, 0x8b66, 0x8f15, 0x9015,
+    0x93e1, 0x9803, 0x9838, 0x9a5a, 0x9be8, 0x4fc2, 0x5553, 0x583a,
+    0x5951, 0x5b63, 0x5c46, 0x60b8, 0x6212, 0x6842, 0x68b0, 0x003f,
+    /* lead byte cd */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x68e8, 0x6eaa, 0x754c, 0x7678, 0x78ce, 0x7a3d, 0x7cfb,
+    0x7e6b, 0x7e7c, 0x8a08, 0x8aa1, 0x8c3f, 0x968e, 0x9dc4, 0x53e4,
+    0x53e9, 0x544a, 0x5471, 0x56fa, 0x59d1, 0x5b64, 0x5c3b, 0x5eab,
+    0x62f7, 0x6537, 0x6545, 0x6572, 0x66a0, 0x67af, 0x69c1, 0x6cbd,
+    0x75fc, 0x7690, 0x777e, 0x7a3f, 0x7f94, 0x8003, 0x80a1, 0x818f,
+    0x82e6, 0x82fd, 0x83f0, 0x85c1, 0x8831, 0x88b4, 0x8aa5, 0xf903,
+    0x8f9c, 0x932e, 0x96c7, 0x9867, 0x9ad8, 0x9f13, 0x54ed, 0x659b,
+    0x66f2, 0x688f, 0x7a40, 0x8c37, 0x9d60, 0x56f0, 0x5764, 0x5d11,
+    0x6606, 0x68b1, 0x68cd, 0x6efe, 0x7428, 0x889e, 0x9be4, 0x6c68,
+    0xf904, 0x9aa8, 0x4f9b, 0x516c, 0x5171, 0x529f, 0x5b54, 0x5de5,
+    0x6050, 0x606d, 0x62f1, 0x63a7, 0x653b, 0x73d9, 0x7a7a, 0x86a3,
+    0x8ca2, 0x978f, 0x4e32, 0x5be1, 0x6208, 0x679c, 0x74dc, 0x003f,
+    /* lead byte ce */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x79d1, 0x83d3, 0x8a87, 0x8ab2, 0x8de8, 0x904e, 0x934b,
+    0x9846, 0x5ed3, 0x69e8, 0x85ff, 0x90ed, 0xf905, 0x51a0, 0x5b98,
+    0x5bec, 0x6163, 0x68fa, 0x6b3e, 0x704c, 0x742f, 0x74d8, 0x7ba1,
+    0x7f50, 0x83c5, 0x89c0, 0x8cab, 0x95dc, 0x9928, 0x522e, 0x605d,
+    0x62ec, 0x9002, 0x4f8a, 0x5149, 0x5321, 0x58d9, 0x5ee3, 0x66e0,
+    0x6d38, 0x709a, 0x72c2, 0x73d6, 0x7b50, 0x80f1, 0x945b, 0x5366,
+    0x639b, 0x7f6b, 0x4e56, 0x5080, 0x584a, 0x58de, 0x602a, 0x6127,
+    0x62d0, 0x69d0, 0x9b41, 0x5b8f, 0x7d18, 0x80b1, 0x8f5f, 0x4ea4,
+    0x50d1, 0x54ac, 0x55ac, 0x5b0c, 0x5da0, 0x5de7, 0x652a, 0x654e,
+    0x6821, 0x6a4b, 0x72e1, 0x768e, 0x77ef, 0x7d5e, 0x7ff9, 0x81a0,
+    0x854e, 0x86df, 0x8f03, 0x8f4e, 0x90ca, 0x9903, 0x9a55, 0x9bab,
+    0x4e18, 0x4e45, 0x4e5d, 0x4ec7, 0x4ff1, 0x5177, 0x52fe, 0x003f,
+    /* lead byte cf */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x5340, 0x53e3, 0x53e5, 0x548e, 0x5614, 0x5775, 0x57a2,
+    0x5bc7, 0x5d87, 0x5ed0, 0x61fc, 0x62d8, 0x6551, 0x67b8, 0x67e9,
+    0x69cb, 0x6b50, 0x6bc6, 0x6bec, 0x6c42, 0x6e9d, 0x7078, 0x72d7,
+    0x7396, 0x7403, 0x77bf, 0x77e9, 0x7a76, 0x7d7f, 0x8009, 0x81fc,
+    0x8205, 0x820a, 0x82df, 0x8862, 0x8b33, 0x8cfc, 0x8ec0, 0x9011,
+    0x90b1, 0x9264, 0x92b6, 0x99d2, 0x9a45, 0x9ce9, 0x9dd7, 0x9f9c,
+    0x570b, 0x5c40, 0x83ca, 0x97a0, 0x97ab, 0x9eb4, 0x541b, 0x7a98,
+    0x7fa4, 0x88d9, 0x8ecd, 0x90e1, 0x5800, 0x5c48, 0x6398, 0x7a9f,
+    0x5bae, 0x5f13, 0x7a79, 0x7aae, 0x828e, 0x8eac, 0x5026, 0x5238,
+    0x52f8, 0x5377, 0x5708, 0x62f3, 0x6372, 0x6b0a, 0x6dc3, 0x7737,
+    0x53a5, 0x7357, 0x8568, 0x8e76, 0x95d5, 0x673a, 0x6ac3, 0x6f70,
+    0x8a6d, 0x8ecc, 0x994b, 0xf906, 0x6677, 0x6b78, 0x8cb4, 0x003f,
+    /* lead byte d0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9b3c, 0xf907, 0x53eb, 0x572d, 0x594e, 0x63c6, 0x69fb,
+    0x73ea, 0x7845, 0x7aba, 0x7ac5, 0x7cfe, 0x8475, 0x898f, 0x8d73,
+    0x9035, 0x95a8, 0x52fb, 0x5747, 0x7547, 0x7b60, 0x83cc, 0x921e,
+    0xf908, 0x6a58, 0x514b, 0x524b, 0x5287, 0x621f, 0x68d8, 0x6975,
+    0x9699, 0x50c5, 0x52a4, 0x52e4, 0x61c3, 0x65a4, 0x6839, 0x69ff,
+    0x747e, 0x7b4b, 0x82b9, 0x83eb, 0x89b2, 0x8b39, 0x8fd1, 0x9949,
+    0xf909, 0x4eca, 0x5997, 0x64d2, 0x6611, 0x6a8e, 0x7434, 0x7981,
+    0x79bd, 0x82a9, 0x887e, 0x887f, 0x895f, 0xf90a, 0x9326, 0x4f0b,
+    0x53ca, 0x6025, 0x6271, 0x6c72, 0x7d1a, 0x7d66, 0x4e98, 0x5162,
+    0x77dc, 0x80af, 0x4f01, 0x4f0e, 0x5176, 0x5180, 0x55dc, 0x5668,
+    0x573b, 0x57fa, 0x57fc, 0x5914, 0x5947, 0x5993, 0x5bc4, 0x5c90,
+    0x5d0e, 0x5df1, 0x5e7e, 0x5fcc, 0x6280, 0x65d7, 0x65e3, 0x003f,
+    /* lead byte d1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x671e, 0x671f, 0x675e, 0x68cb, 0x68c4, 0x6a5f, 0x6b3a,
+    0x6c23, 0x6c7d, 0x6c82, 0x6dc7, 0x7398, 0x7426, 0x742a, 0x7482,
+    0x74a3, 0x7578, 0x757f, 0x7881, 0x78ef, 0x7941, 0x7947, 0x7948,
+    0x797a, 0x7b95, 0x7d00, 0x7dba, 0x7f88, 0x8006, 0x802d, 0x808c,
+    0x8a18, 0x8b4f, 0x8c48, 0x8d77, 0x9321, 0x9324, 0x98e2, 0x9951,
+    0x9a0e, 0x9a0f, 0x9a65, 0x9e92, 0x7dca, 0x4f76, 0x5409, 0x62ee,
+    0x6854, 0x91d1, 0x55ab, 0x513a, 0xf90b, 0xf90c, 0x5a1c, 0x61e6,
+    0xf90d, 0x62cf, 0x62ff, 0xf90e, 0xf90f, 0xf910, 0xf911, 0xf912,
+    0xf913, 0x90a3, 0xf914, 0xf915, 0xf916, 0xf917, 0xf918, 0x8afe,
+    0xf919, 0xf91a, 0xf91b, 0xf91c, 0x6696, 0xf91d, 0x7156, 0xf91e,
+    0xf91f, 0x96e3, 0xf920, 0x634f, 0x637a, 0x5357, 0xf921, 0x678f,
+    0x6960, 0x6e73, 0xf922, 0x7537, 0xf923, 0xf924, 0xf925, 0x003f,
+    /* lead byte d2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7d0d, 0xf926, 0xf927, 0x8872, 0x56ca, 0x5a18, 0xf928,
+    0xf929, 0xf92a, 0xf92b, 0xf92c, 0x4e43, 0xf92d, 0x5167, 0x5948,
+    0x67f0, 0x8010, 0xf92e, 0x5973, 0x5e74, 0x649a, 0x79ca, 0x5ff5,
+    0x606c, 0x62c8, 0x637b, 0x5be7, 0x5bd7, 0x52aa, 0xf92f, 0x5974,
+    0x5f29, 0x6012, 0xf930, 0xf931, 0xf932, 0x7459, 0xf933, 0xf934,
+    0xf935, 0xf936, 0xf937, 0xf938, 0x99d1, 0xf939, 0xf93a, 0xf93b,
+    0xf93c, 0xf93d, 0xf93e, 0xf93f, 0xf940, 0xf941, 0xf942, 0xf943,
+    0x6fc3, 0xf944, 0xf945, 0x81bf, 0x8fb2, 0x60f1, 0xf946, 0xf947,
+    0x8166, 0xf948, 0xf949, 0x5c3f, 0xf94a, 0xf94b, 0xf94c, 0xf94d,
+    0xf94e, 0xf94f, 0xf950, 0xf951, 0x5ae9, 0x8a25, 0x677b, 0x7d10,
+    0xf952, 0xf953, 0xf954, 0xf955, 0xf956, 0xf957, 0x80fd, 0xf958,
+    0xf959, 0x5c3c, 0x6ce5, 0x533f, 0x6eba, 0x591a, 0x8336, 0x003f,
+    /* lead byte d3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x4e39, 0x4eb6, 0x4f46, 0x55ae, 0x5718, 0x58c7, 0x5f56,
+    0x65b7, 0x65e6, 0x6a80, 0x6bb5, 0x6e4d, 0x77ed, 0x7aef, 0x7c1e,
+    0x7dde, 0x86cb, 0x8892, 0x9132, 0x935b, 0x64bb, 0x6fbe, 0x737a,
+    0x75b8, 0x9054, 0x5556, 0x574d, 0x61ba, 0x64d4, 0x66c7, 0x6de1,
+    0x6e5b, 0x6f6d, 0x6fb9, 0x75f0, 0x8043, 0x81bd, 0x8541, 0x8983,
+    0x8ac7, 0x8b5a, 0x931f, 0x6c93, 0x7553, 0x7b54, 0x8e0f, 0x905d,
+    0x5510, 0x5802, 0x5858, 0x5e62, 0x6207, 0x649e, 0x68e0, 0x7576,
+    0x7cd6, 0x87b3, 0x9ee8, 0x4ee3, 0x5788, 0x576e, 0x5927, 0x5c0d,
+    0x5cb1, 0x5e36, 0x5f85, 0x6234, 0x64e1, 0x73b3, 0x81fa, 0x888b,
+    0x8cb8, 0x968a, 0x9edb, 0x5b85, 0x5fb7, 0x60b3, 0x5012, 0x5200,
+    0x5230, 0x5716, 0x5835, 0x5857, 0x5c0e, 0x5c60, 0x5cf6, 0x5d8b,
+    0x5ea6, 0x5f92, 0x60bc, 0x6311, 0x6389, 0x6417, 0x6843, 0x003f,
+    /* lead byte d4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x68f9, 0x6ac2, 0x6dd8, 0x6e21, 0x6ed4, 0x6fe4, 0x71fe,
+    0x76dc, 0x7779, 0x79b1, 0x7a3b, 0x8404, 0x89a9, 0x8ced, 0x8df3,
+    0x8e48, 0x9003, 0x9014, 0x9053, 0x90fd, 0x934d, 0x9676, 0x97dc,
+    0x6bd2, 0x7006, 0x7258, 0x72a2, 0x7368, 0x7763, 0x79bf, 0x7be4,
+    0x7e9b, 0x8b80, 0x58a9, 0x60c7, 0x6566, 0x65fd, 0x66be, 0x6c8c,
+    0x711e, 0x71c9, 0x8c5a, 0x9813, 0x4e6d, 0x7a81, 0x4edd, 0x51ac,
+    0x51cd, 0x52d5, 0x540c, 0x61a7, 0x6771, 0x6850, 0x68df, 0x6d1e,
+    0x6f7c, 0x75bc, 0x77b3, 0x7ae5, 0x80f4, 0x8463, 0x9285, 0x515c,
+    0x6597, 0x675c, 0x6793, 0x75d8, 0x7ac7, 0x8373, 0xf95a, 0x8c46,
+    0x9017, 0x982d, 0x5c6f, 0x81c0, 0x829a, 0x9041, 0x906f, 0x920d,
+    0x5f97, 0x5d9d, 0x6a59, 0x71c8, 0x767b, 0x7b49, 0x85e4, 0x8b04,
+    0x9127, 0x9a30, 0x5587, 0x61f6, 0xf95b, 0x7669, 0x7f85, 0x003f,
+    /* lead byte d5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x863f, 0x87ba, 0x88f8, 0x908f, 0xf95c, 0x6d1b, 0x70d9,
+    0x73de, 0x7d61, 0x843d, 0xf95d, 0x916a, 0x99f1, 0xf95e, 0x4e82,
+    0x5375, 0x6b04, 0x6b12, 0x703e, 0x721b, 0x862d, 0x9e1e, 0x524c,
+    0x8fa3, 0x5d50, 0x64e5, 0x652c, 0x6b16, 0x6feb, 0x7c43, 0x7e9c,
+    0x85cd, 0x8964, 0x89bd, 0x62c9, 0x81d8, 0x881f, 0x5eca, 0x6717,
+    0x6d6a, 0x72fc, 0x7405, 0x746f, 0x8782, 0x90de, 0x4f86, 0x5d0d,
+    0x5fa0, 0x840a, 0x51b7, 0x63a0, 0x7565, 0x4eae, 0x5006, 0x5169,
+    0x51c9, 0x6881, 0x6a11, 0x7cae, 0x7cb1, 0x7ce7, 0x826f, 0x8ad2,
+    0x8f1b, 0x91cf, 0x4fb6, 0x5137, 0x52f5, 0x5442, 0x5eec, 0x616e,
+    0x623e, 0x65c5, 0x6ada, 0x6ffe, 0x792a, 0x85dc, 0x8823, 0x95ad,
+    0x9a62, 0x9a6a, 0x9e97, 0x9ece, 0x529b, 0x66c6, 0x6b77, 0x701d,
+    0x792b, 0x8f62, 0x9742, 0x6190, 0x6200, 0x6523, 0x6f23, 0x003f,
+    /* lead byte d6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7149, 0x7489, 0x7df4, 0x806f, 0x84ee, 0x8f26, 0x9023,
+    0x934a, 0x51bd, 0x5217, 0x52a3, 0x6d0c, 0x70c8, 0x88c2, 0x5ec9,
+    0x6582, 0x6bae, 0x6fc2, 0x7c3e, 0x7375, 0x4ee4, 0x4f36, 0x56f9,
+    0xf95f, 0x5cba, 0x5dba, 0x601c, 0x73b2, 0x7b2d, 0x7f9a, 0x7fce,
+    0x8046, 0x901e, 0x9234, 0x96f6, 0x9748, 0x9818, 0x9f61, 0x4f8b,
+    0x6fa7, 0x79ae, 0x91b4, 0x96b7, 0x52de, 0xf960, 0x6488, 0x64c4,
+    0x6ad3, 0x6f5e, 0x7018, 0x7210, 0x76e7, 0x8001, 0x8606, 0x865c,
+    0x8def, 0x8f05, 0x9732, 0x9b6f, 0x9dfa, 0x9e75, 0x788c, 0x797f,
+    0x7da0, 0x83c9, 0x9304, 0x9e7f, 0x9e93, 0x8ad6, 0x58df, 0x5f04,
+    0x6727, 0x7027, 0x74cf, 0x7c60, 0x807e, 0x5121, 0x7028, 0x7262,
+    0x78ca, 0x8cc2, 0x8cda, 0x8cf4, 0x96f7, 0x4e86, 0x50da, 0x5bee,
+    0x5ed6, 0x6599, 0x71ce, 0x7642, 0x77ad, 0x804a, 0x84fc, 0x003f,
+    /* lead byte d7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x907c, 0x9b27, 0x9f8d, 0x58d8, 0x5a41, 0x5c62, 0x6a13,
+    0x6dda, 0x6f0f, 0x763b, 0x7d2f, 0x7e37, 0x851e, 0x8938, 0x93e4,
+    0x964b, 0x5289, 0x65d2, 0x67f3, 0x69b4, 0x6d41, 0x6e9c, 0x700f,
+    0x7409, 0x7460, 0x7559, 0x7624, 0x786b, 0x8b2c, 0x985e, 0x516d,
+    0x622e, 0x9678, 0x4f96, 0x502b, 0x5d19, 0x6dea, 0x7db8, 0x8f2a,
+    0x5f8b, 0x6144, 0x6817, 0xf961, 0x9686, 0x52d2, 0x808b, 0x51dc,
+    0x51cc, 0x695e, 0x7a1c, 0x7dbe, 0x83f1, 0x9675, 0x4fda, 0x5229,
+    0x5398, 0x540f, 0x550e, 0x5c65, 0x60a7, 0x674e, 0x68a8, 0x6d6c,
+    0x7281, 0x72f8, 0x7406, 0x7483, 0xf962, 0x75e2, 0x7c6c, 0x7f79,
+    0x7fb8, 0x8389, 0x88cf, 0x88e1, 0x91cc, 0x91d0, 0x96e2, 0x9bc9,
+    0x541d, 0x6f7e, 0x71d0, 0x7498, 0x85fa, 0x8eaa, 0x96a3, 0x9c57,
+    0x9e9f, 0x6797, 0x6dcb, 0x7433, 0x81e8, 0x9716, 0x782c, 0x003f,
+    /* lead byte d8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7acb, 0x7b20, 0x7c92, 0x6469, 0x746a, 0x75f2, 0x78bc,
+    0x78e8, 0x99ac, 0x9b54, 0x9ebb, 0x5bde, 0x5e55, 0x6f20, 0x819c,
+    0x83ab, 0x9088, 0x4e07, 0x534d, 0x5a29, 0x5dd2, 0x5f4e, 0x6162,
+    0x633d, 0x6669, 0x66fc, 0x6eff, 0x6f2b, 0x7063, 0x779e, 0x842c,
+    0x8513, 0x883b, 0x8f13, 0x9945, 0x9c3b, 0x551c, 0x62b9, 0x672b,
+    0x6cab, 0x8309, 0x896a, 0x977a, 0x4ea1, 0x5984, 0x5fd8, 0x5fd9,
+    0x671b, 0x7db2, 0x7f54, 0x8292, 0x832b, 0x83bd, 0x8f1e, 0x9099,
+    0x57cb, 0x59b9, 0x5a92, 0x5bd0, 0x6627, 0x679a, 0x6885, 0x6bcf,
+    0x7164, 0x7f75, 0x8cb7, 0x8ce3, 0x9081, 0x9b45, 0x8108, 0x8c8a,
+    0x964c, 0x9a40, 0x9ea5, 0x5b5f, 0x6c13, 0x731b, 0x76f2, 0x76df,
+    0x840c, 0x51aa, 0x8993, 0x514d, 0x5195, 0x52c9, 0x68c9, 0x6c94,
+    0x7704, 0x7720, 0x7dbf, 0x7dec, 0x9762, 0x9eb5, 0x6ec5, 0x003f,
+    /* lead byte d9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8511, 0x51a5, 0x540d, 0x547d, 0x660e, 0x669d, 0x6927,
+    0x6e9f, 0x76bf, 0x7791, 0x8317, 0x84c2, 0x879f, 0x9169, 0x9298,
+    0x9cf4, 0x8882, 0x4fae, 0x5192, 0x52df, 0x59c6, 0x5e3d, 0x6155,
+    0x6478, 0x6479, 0x66ae, 0x67d0, 0x6a21, 0x6bcd, 0x6bdb, 0x725f,
+    0x7261, 0x7441, 0x7738, 0x77db, 0x8017, 0x82bc, 0x8305, 0x8b00,
+    0x8b28, 0x8c8c, 0x6728, 0x6c90, 0x7267, 0x76ee, 0x7766, 0x7a46,
+    0x9da9, 0x6b7f, 0x6c92, 0x5922, 0x6726, 0x8499, 0x536f, 0x5893,
+    0x5999, 0x5edf, 0x63cf, 0x6634, 0x6773, 0x6e3a, 0x732b, 0x7ad7,
+    0x82d7, 0x9328, 0x52d9, 0x5deb, 0x61ae, 0x61cb, 0x620a, 0x62c7,
+    0x64ab, 0x65e0, 0x6959, 0x6b66, 0x6bcb, 0x7121, 0x73f7, 0x755d,
+    0x7e46, 0x821e, 0x8302, 0x856a, 0x8aa3, 0x8cbf, 0x9727, 0x9d61,
+    0x58a8, 0x9ed8, 0x5011, 0x520e, 0x543b, 0x554f, 0x6587, 0x003f,
+    /* lead byte da */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6c76, 0x7d0a, 0x7d0b, 0x805e, 0x868a, 0x9580, 0x96ef,
+    0x52ff, 0x6c95, 0x7269, 0x5473, 0x5a9a, 0x5c3e, 0x5d4b, 0x5f4c,
+    0x5fae, 0x672a, 0x68b6, 0x6963, 0x6e3c, 0x6e44, 0x7709, 0x7c73,
+    0x7f8e, 0x8587, 0x8b0e, 0x8ff7, 0x9761, 0x9ef4, 0x5cb7, 0x60b6,
+    0x610d, 0x61ab, 0x654f, 0x65fb, 0x65fc, 0x6c11, 0x6cef, 0x739f,
+    0x73c9, 0x7de1, 0x9594, 0x5bc6, 0x871c, 0x8b10, 0x525d, 0x535a,
+    0x62cd, 0x640f, 0x64b2, 0x6734, 0x6a38, 0x6cca, 0x73c0, 0x749e,
+    0x7b94, 0x7c95, 0x7e1b, 0x818a, 0x8236, 0x8584, 0x8feb, 0x96f9,
+    0x99c1, 0x4f34, 0x534a, 0x53cd, 0x53db, 0x62cc, 0x642c, 0x6500,
+    0x6591, 0x69c3, 0x6cee, 0x6f58, 0x73ed, 0x7554, 0x7622, 0x76e4,
+    0x76fc, 0x78d0, 0x78fb, 0x792c, 0x7d46, 0x822c, 0x87e0, 0x8fd4,
+    0x9812, 0x98ef, 0x52c3, 0x62d4, 0x64a5, 0x6e24, 0x6f51, 0x003f,
+    /* lead byte db */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x767c, 0x8dcb, 0x91b1, 0x9262, 0x9aee, 0x9b43, 0x5023,
+    0x508d, 0x574a, 0x59a8, 0x5c28, 0x5e47, 0x5f77, 0x623f, 0x653e,
+    0x65b9, 0x65c1, 0x6609, 0x678b, 0x699c, 0x6ec2, 0x78c5, 0x7d21,
+    0x80aa, 0x8180, 0x822b, 0x82b3, 0x84a1, 0x868c, 0x8a2a, 0x8b17,
+    0x90a6, 0x9632, 0x9f90, 0x500d, 0x4ff3, 0xf963, 0x57f9, 0x5f98,
+    0x62dc, 0x6392, 0x676f, 0x6e43, 0x7119, 0x76c3, 0x80cc, 0x80da,
+    0x88f4, 0x88f5, 0x8919, 0x8ce0, 0x8f29, 0x914d, 0x966a, 0x4f2f,
+    0x4f70, 0x5e1b, 0x67cf, 0x6822, 0x767d, 0x767e, 0x9b44, 0x5e61,
+    0x6a0a, 0x7169, 0x71d4, 0x756a, 0xf964, 0x7e41, 0x8543, 0x85e9,
+    0x98dc, 0x4f10, 0x7b4f, 0x7f70, 0x95a5, 0x51e1, 0x5e06, 0x68b5,
+    0x6c3e, 0x6c4e, 0x6cdb, 0x72af, 0x7bc4, 0x8303, 0x6cd5, 0x743a,
+    0x50fb, 0x5288, 0x58c1, 0x64d8, 0x6a97, 0x74a7, 0x7656, 0x003f,
+    /* lead byte dc */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x78a7, 0x8617, 0x95e2, 0x9739, 0xf965, 0x535e, 0x5f01,
+    0x8b8a, 0x8fa8, 0x8faf, 0x908a, 0x5225, 0x77a5, 0x9c49, 0x9f08,
+    0x4e19, 0x5002, 0x5175, 0x5c5b, 0x5e77, 0x661e, 0x663a, 0x67c4,
+    0x68c5, 0x70b3, 0x7501, 0x75c5, 0x79c9, 0x7add, 0x8f27, 0x9920,
+    0x9a08, 0x4fdd, 0x5821, 0x5831, 0x5bf6, 0x666e, 0x6b65, 0x6d11,
+    0x6e7a, 0x6f7d, 0x73e4, 0x752b, 0x83e9, 0x88dc, 0x8913, 0x8b5c,
+    0x8f14, 0x4f0f, 0x50d5, 0x5310, 0x535c, 0x5b93, 0x5fa9, 0x670d,
+    0x798f, 0x8179, 0x832f, 0x8514, 0x8907, 0x8986, 0x8f39, 0x8f3b,
+    0x99a5, 0x9c12, 0x672c, 0x4e76, 0x4ff8, 0x5949, 0x5c01, 0x5cef,
+    0x5cf0, 0x6367, 0x68d2, 0x70fd, 0x71a2, 0x742b, 0x7e2b, 0x84ec,
+    0x8702, 0x9022, 0x92d2, 0x9cf3, 0x4e0d, 0x4ed8, 0x4fef, 0x5085,
+    0x5256, 0x526f, 0x5426, 0x5490, 0x57e0, 0x592b, 0x5a66, 0x003f,
+    /* lead byte dd */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x5b5a, 0x5b75, 0x5bcc, 0x5e9c, 0xf966, 0x6276, 0x6577,
+    0x65a7, 0x6d6e, 0x6ea5, 0x7236, 0x7b26, 0x7c3f, 0x7f36, 0x8150,
+    0x8151, 0x819a, 0x8240, 0x8299, 0x83a9, 0x8a03, 0x8ca0, 0x8ce6,
+    0x8cfb, 0x8d74, 0x8dba, 0x90e8, 0x91dc, 0x961c, 0x9644, 0x99d9,
+    0x9ce7, 0x5317, 0x5206, 0x5429, 0x5674, 0x58b3, 0x5954, 0x596e,
+    0x5fff, 0x61a4, 0x626e, 0x6610, 0x6c7e, 0x711a, 0x76c6, 0x7c89,
+    0x7cde, 0x7d1b, 0x82ac, 0x8cc1, 0x96f0, 0xf967, 0x4f5b, 0x5f17,
+    0x5f7f, 0x62c2, 0x5d29, 0x670b, 0x68da, 0x787c, 0x7e43, 0x9d6c,
+    0x4e15, 0x5099, 0x5315, 0x532a, 0x5351, 0x5983, 0x5a62, 0x5e87,
+    0x60b2, 0x618a, 0x6249, 0x6279, 0x6590, 0x6787, 0x69a7, 0x6bd4,
+    0x6bd6, 0x6bd7, 0x6bd8, 0x6cb8, 0xf968, 0x7435, 0x75fa, 0x7812,
+    0x7891, 0x79d5, 0x79d8, 0x7c83, 0x7dcb, 0x7fe1, 0x80a5, 0x003f,
+    /* lead byte de */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x813e, 0x81c2, 0x83f2, 0x871a, 0x88e8, 0x8ab9, 0x8b6c,
+    0x8cbb, 0x9119, 0x975e, 0x98db, 0x9f3b, 0x56ac, 0x5b2a, 0x5f6c,
+    0x658c, 0x6ab3, 0x6baf, 0x6d5c, 0x6ff1, 0x7015, 0x725d, 0x73ad,
+    0x8ca7, 0x8cd3, 0x983b, 0x6191, 0x6c37, 0x8058, 0x9a01, 0x4e4d,
+    0x4e8b, 0x4e9b, 0x4ed5, 0x4f3a, 0x4f3c, 0x4f7f, 0x4fdf, 0x50ff,
+    0x53f2, 0x53f8, 0x5506, 0x55e3, 0x56db, 0x58eb, 0x5962, 0x5a11,
+    0x5beb, 0x5bfa, 0x5c04, 0x5df3, 0x5e2b, 0x5f99, 0x601d, 0x6368,
+    0x659c, 0x65af, 0x67f6, 0x67fb, 0x68ad, 0x6b7b, 0x6c99, 0x6cd7,
+    0x6e23, 0x7009, 0x7345, 0x7802, 0x793e, 0x7940, 0x7960, 0x79c1,
+    0x7be9, 0x7d17, 0x7d72, 0x8086, 0x820d, 0x838e, 0x84d1, 0x86c7,
+    0x88df, 0x8a50, 0x8a5e, 0x8b1d, 0x8cdc, 0x8d66, 0x8fad, 0x90aa,
+    0x98fc, 0x99df, 0x9e9d, 0x524a, 0xf969, 0x6714, 0xf96a, 0x003f,
+    /* lead byte df */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x5098, 0x522a, 0x5c71, 0x6563, 0x6c55, 0x73ca, 0x7523,
+    0x759d, 0x7b97, 0x849c, 0x9178, 0x9730, 0x4e77, 0x6492, 0x6bba,
+    0x715e, 0x85a9, 0x4e09, 0xf96b, 0x6749, 0x68ee, 0x6e17, 0x829f,
+    0x8518, 0x886b, 0x63f7, 0x6f81, 0x9212, 0x98af, 0x4e0a, 0x50b7,
+    0x50cf, 0x511f, 0x5546, 0x55aa, 0x5617, 0x5b40, 0x5c19, 0x5ce0,
+    0x5e38, 0x5e8a, 0x5ea0, 0x5ec2, 0x60f3, 0x6851, 0x6a61, 0x6e58,
+    0x723d, 0x7240, 0x72c0, 0x76f8, 0x7965, 0x7bb1, 0x7fd4, 0x88f3,
+    0x89f4, 0x8a73, 0x8c61, 0x8cde, 0x971c, 0x585e, 0x74bd, 0x8cfd,
+    0x55c7, 0xf96c, 0x7a61, 0x7d22, 0x8272, 0x7272, 0x751f, 0x7525,
+    0xf96d, 0x7b19, 0x5885, 0x58fb, 0x5dbc, 0x5e8f, 0x5eb6, 0x5f90,
+    0x6055, 0x6292, 0x637f, 0x654d, 0x6691, 0x66d9, 0x66f8, 0x6816,
+    0x68f2, 0x7280, 0x745e, 0x7b6e, 0x7d6e, 0x7dd6, 0x7f72, 0x003f,
+    /* lead byte e0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x80e5, 0x8212, 0x85af, 0x897f, 0x8a93, 0x901d, 0x92e4,
+    0x9ecd, 0x9f20, 0x5915, 0x596d, 0x5e2d, 0x60dc, 0x6614, 0x6673,
+    0x6790, 0x6c50, 0x6dc5, 0x6f5f, 0x77f3, 0x78a9, 0x84c6, 0x91cb,
+    0x932b, 0x4ed9, 0x50ca, 0x5148, 0x5584, 0x5b0b, 0x5ba3, 0x6247,
+    0x657e, 0x65cb, 0x6e32, 0x717d, 0x7401, 0x7444, 0x7487, 0x74bf,
+    0x766c, 0x79aa, 0x7dda, 0x7e55, 0x7fa8, 0x817a, 0x81b3, 0x8239,
+    0x861a, 0x87ec, 0x8a75, 0x8de3, 0x9078, 0x9291, 0x9425, 0x994d,
+    0x9bae, 0x5368, 0x5c51, 0x6954, 0x6cc4, 0x6d29, 0x6e2b, 0x820c,
+    0x859b, 0x893b, 0x8a2d, 0x8aaa, 0x96ea, 0x9f67, 0x5261, 0x66b9,
+    0x6bb2, 0x7e96, 0x87fe, 0x8d0d, 0x9583, 0x965d, 0x651d, 0x6d89,
+    0x71ee, 0xf96e, 0x57ce, 0x59d3, 0x5bac, 0x6027, 0x60fa, 0x6210,
+    0x661f, 0x665f, 0x7329, 0x73f9, 0x76db, 0x7701, 0x7b6c, 0x003f,
+    /* lead byte e1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8056, 0x8072, 0x8165, 0x8aa0, 0x9192, 0x4e16, 0x52e2,
+    0x6b72, 0x6d17, 0x7a05, 0x7b39, 0x7d30, 0xf96f, 0x8cb0, 0x53ec,
+    0x562f, 0x5851, 0x5bb5, 0x5c0f, 0x5c11, 0x5de2, 0x6240, 0x6383,
+    0x6414, 0x662d, 0x68b3, 0x6cbc, 0x6d88, 0x6eaf, 0x701f, 0x70a4,
+    0x71d2, 0x7526, 0x758f, 0x758e, 0x7619, 0x7b11, 0x7be0, 0x7c2b,
+    0x7d20, 0x7d39, 0x852c, 0x856d, 0x8607, 0x8a34, 0x900d, 0x9061,
+    0x90b5, 0x92b7, 0x97f6, 0x9a37, 0x4fd7, 0x5c6c, 0x675f, 0x6d91,
+    0x7c9f, 0x7e8c, 0x8b16, 0x8d16, 0x901f, 0x5b6b, 0x5dfd, 0x640d,
+    0x84c0, 0x905c, 0x98e1, 0x7387, 0x5b8b, 0x609a, 0x677e, 0x6dde,
+    0x8a1f, 0x8aa6, 0x9001, 0x980c, 0x5237, 0xf970, 0x7051, 0x788e,
+    0x9396, 0x8870, 0x91d7, 0x4fee, 0x53d7, 0x55fd, 0x56da, 0x5782,
+    0x58fd, 0x5ac2, 0x5b88, 0x5cab, 0x5cc0, 0x5e25, 0x6101, 0x003f,
+    /* lead byte e2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x620d, 0x624b, 0x6388, 0x641c, 0x6536, 0x6578, 0x6a39,
+    0x6b8a, 0x6c34, 0x6d19, 0x6f31, 0x71e7, 0x72e9, 0x7378, 0x7407,
+    0x74b2, 0x7626, 0x7761, 0x79c0, 0x7a57, 0x7aea, 0x7cb9, 0x7d8f,
+    0x7dac, 0x7e61, 0x7f9e, 0x8129, 0x8331, 0x8490, 0x84da, 0x85ea,
+    0x8896, 0x8ab0, 0x8b90, 0x8f38, 0x9042, 0x9083, 0x916c, 0x9296,
+    0x92b9, 0x968b, 0x96a7, 0x96a8, 0x96d6, 0x9700, 0x9808, 0x9996,
+    0x9ad3, 0x9b1a, 0x53d4, 0x587e, 0x5919, 0x5b70, 0x5bbf, 0x6dd1,
+    0x6f5a, 0x719f, 0x7421, 0x74b9, 0x8085, 0x83fd, 0x5de1, 0x5f87,
+    0x5faa, 0x6042, 0x65ec, 0x6812, 0x696f, 0x6a53, 0x6b89, 0x6d35,
+    0x6df3, 0x73e3, 0x76fe, 0x77ac, 0x7b4d, 0x7d14, 0x8123, 0x821c,
+    0x8340, 0x84f4, 0x8563, 0x8a62, 0x8ac4, 0x9187, 0x931e, 0x9806,
+    0x99b4, 0x620c, 0x8853, 0x8ff0, 0x9265, 0x5d07, 0x5d27, 0x003f,
+    /* lead byte e3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x5d69, 0x745f, 0x819d, 0x8768, 0x6fd5, 0x62fe, 0x7fd2,
+    0x8936, 0x8972, 0x4e1e, 0x4e58, 0x50e7, 0x52dd, 0x5347, 0x627f,
+    0x6607, 0x7e69, 0x8805, 0x965e, 0x4f8d, 0x5319, 0x5636, 0x59cb,
+    0x5aa4, 0x5c38, 0x5c4e, 0x5c4d, 0x5e02, 0x5f11, 0x6043, 0x65bd,
+    0x662f, 0x6642, 0x67be, 0x67f4, 0x731c, 0x77e2, 0x793a, 0x7fc5,
+    0x8494, 0x84cd, 0x8996, 0x8a66, 0x8a69, 0x8ae1, 0x8c55, 0x8c7a,
+    0x57f4, 0x5bd4, 0x5f0f, 0x606f, 0x62ed, 0x690d, 0x6b96, 0x6e5c,
+    0x7184, 0x7bd2, 0x8755, 0x8b58, 0x8efe, 0x98df, 0x98fe, 0x4f38,
+    0x4f81, 0x4fe1, 0x547b, 0x5a20, 0x5bb8, 0x613c, 0x65b0, 0x6668,
+    0x71fc, 0x7533, 0x795e, 0x7d33, 0x814e, 0x81e3, 0x8398, 0x85aa,
+    0x85ce, 0x8703, 0x8a0a, 0x8eab, 0x8f9b, 0xf971, 0x8fc5, 0x5931,
+    0x5ba4, 0x5be6, 0x6089, 0x5be9, 0x5c0b, 0x5fc3, 0x6c81, 0x003f,
+    /* lead byte e4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf972, 0x6df1, 0x700b, 0x751a, 0x82af, 0x8af6, 0x4ec0,
+    0x5341, 0xf973, 0x96d9, 0x6c0f, 0x4e9e, 0x4fc4, 0x5152, 0x555e,
+    0x5a25, 0x5ce8, 0x6211, 0x7259, 0x82bd, 0x83aa, 0x86fe, 0x8859,
+    0x8a1d, 0x963f, 0x96c5, 0x9913, 0x9d09, 0x9d5d, 0x580a, 0x5cb3,
+    0x5dbd, 0x5e44, 0x60e1, 0x6115, 0x63e1, 0x6a02, 0x6e25, 0x9102,
+    0x9354, 0x984e, 0x9c10, 0x9f77, 0x5b89, 0x5cb8, 0x6309, 0x664f,
+    0x6848, 0x773c, 0x96c1, 0x978d, 0x9854, 0x9b9f, 0x65a1, 0x8b01,
+    0x8ecb, 0x95bc, 0x5535, 0x5ca9, 0x5dd6, 0x5eb5, 0x6697, 0x764c,
+    0x83f4, 0x95c7, 0x58d3, 0x62bc, 0x72ce, 0x9d28, 0x4ef0, 0x592e,
+    0x600f, 0x663b, 0x6b83, 0x79e7, 0x9d26, 0x5393, 0x54c0, 0x57c3,
+    0x5d16, 0x611b, 0x66d6, 0x6daf, 0x788d, 0x827e, 0x9698, 0x9744,
+    0x5384, 0x627c, 0x6396, 0x6db2, 0x7e0a, 0x814b, 0x984d, 0x003f,
+    /* lead byte e5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6afb, 0x7f4c, 0x9daf, 0x9e1a, 0x4e5f, 0x503b, 0x51b6,
+    0x591c, 0x60f9, 0x63f6, 0x6930, 0x723a, 0x8036, 0xf974, 0x91ce,
+    0x5f31, 0xf975, 0xf976, 0x7d04, 0x82e5, 0x846f, 0x84bb, 0x85e5,
+    0x8e8d, 0xf977, 0x4f6f, 0xf978, 0xf979, 0x58e4, 0x5b43, 0x6059,
+    0x63da, 0x6518, 0x656d, 0x6698, 0xf97a, 0x694a, 0x6a23, 0x6d0b,
+    0x7001, 0x716c, 0x75d2, 0x760d, 0x79b3, 0x7a70, 0xf97b, 0x7f8a,
+    0xf97c, 0x8944, 0xf97d, 0x8b93, 0x91c0, 0x967d, 0xf97e, 0x990a,
+    0x5704, 0x5fa1, 0x65bc, 0x6f01, 0x7600, 0x79a6, 0x8a9e, 0x99ad,
+    0x9b5a, 0x9f6c, 0x5104, 0x61b6, 0x6291, 0x6a8d, 0x81c6, 0x5043,
+    0x5830, 0x5f66, 0x7109, 0x8a00, 0x8afa, 0x5b7c, 0x8616, 0x4ffa,
+    0x513c, 0x56b4, 0x5944, 0x63a9, 0x6df9, 0x5daa, 0x696d, 0x5186,
+    0x4e88, 0x4f59, 0xf97f, 0xf980, 0xf981, 0x5982, 0xf982, 0x003f,
+    /* lead byte e6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf983, 0x6b5f, 0x6c5d, 0xf984, 0x74b5, 0x7916, 0xf985,
+    0x8207, 0x8245, 0x8339, 0x8f3f, 0x8f5d, 0xf986, 0x9918, 0xf987,
+    0xf988, 0xf989, 0x4ea6, 0xf98a, 0x57df, 0x5f79, 0x6613, 0xf98b,
+    0xf98c, 0x75ab, 0x7e79, 0x8b6f, 0xf98d, 0x9006, 0x9a5b, 0x56a5,
+    0x5827, 0x59f8, 0x5a1f, 0x5bb4, 0xf98e, 0x5ef6, 0xf98f, 0xf990,
+    0x6350, 0x633b, 0xf991, 0x693d, 0x6c87, 0x6cbf, 0x6d8e, 0x6d93,
+    0x6df5, 0x6f14, 0xf992, 0x70df, 0x7136, 0x7159, 0xf993, 0x71c3,
+    0x71d5, 0xf994, 0x784f, 0x786f, 0xf995, 0x7b75, 0x7de3, 0xf996,
+    0x7e2f, 0xf997, 0x884d, 0x8edf, 0xf998, 0xf999, 0xf99a, 0x925b,
+    0xf99b, 0x9cf6, 0xf99c, 0xf99d, 0xf99e, 0x6085, 0x6d85, 0xf99f,
+    0x71b1, 0xf9a0, 0xf9a1, 0x95b1, 0x53ad, 0xf9a2, 0xf9a3, 0xf9a4,
+    0x67d3, 0xf9a5, 0x708e, 0x7130, 0x7430, 0x8276, 0x82d2, 0x003f,
+    /* lead byte e7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf9a6, 0x95bb, 0x9ae5, 0x9e7d, 0x66c4, 0xf9a7, 0x71c1,
+    0x8449, 0xf9a8, 0xf9a9, 0x584b, 0xf9aa, 0xf9ab, 0x5db8, 0x5f71,
+    0xf9ac, 0x6620, 0x668e, 0x6979, 0x69ae, 0x6c38, 0x6cf3, 0x6e36,
+    0x6f41, 0x6fda, 0x701b, 0x702f, 0x7150, 0x71df, 0x7370, 0xf9ad,
+    0x745b, 0xf9ae, 0x74d4, 0x76c8, 0x7a4e, 0x7e93, 0xf9af, 0xf9b0,
+    0x82f1, 0x8a60, 0x8fce, 0xf9b1, 0x9348, 0xf9b2, 0x9719, 0xf9b3,
+    0xf9b4, 0x4e42, 0x502a, 0xf9b5, 0x5208, 0x53e1, 0x66f3, 0x6c6d,
+    0x6fca, 0x730a, 0x777f, 0x7a62, 0x82ae, 0x85dd, 0x8602, 0xf9b6,
+    0x88d4, 0x8a63, 0x8b7d, 0x8c6b, 0xf9b7, 0x92b3, 0xf9b8, 0x9713,
+    0x9810, 0x4e94, 0x4f0d, 0x4fc9, 0x50b2, 0x5348, 0x543e, 0x5433,
+    0x55da, 0x5862, 0x58ba, 0x5967, 0x5a1b, 0x5be4, 0x609f, 0xf9b9,
+    0x61ca, 0x6556, 0x65ff, 0x6664, 0x68a7, 0x6c5a, 0x6fb3, 0x003f,
+    /* lead byte e8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x70cf, 0x71ac, 0x7352, 0x7b7d, 0x8708, 0x8aa4, 0x9c32,
+    0x9f07, 0x5c4b, 0x6c83, 0x7344, 0x7389, 0x923a, 0x6eab, 0x7465,
+    0x761f, 0x7a69, 0x7e15, 0x860a, 0x5140, 0x58c5, 0x64c1, 0x74ee,
+    0x7515, 0x7670, 0x7fc1, 0x9095, 0x96cd, 0x9954, 0x6e26, 0x74e6,
+    0x7aa9, 0x7aaa, 0x81e5, 0x86d9, 0x8778, 0x8a1b, 0x5a49, 0x5b8c,
+    0x5b9b, 0x68a1, 0x6900, 0x6d63, 0x73a9, 0x7413, 0x742c, 0x7897,
+    0x7de9, 0x7feb, 0x8118, 0x8155, 0x839e, 0x8c4c, 0x962e, 0x9811,
+    0x66f0, 0x5f80, 0x65fa, 0x6789, 0x6c6a, 0x738b, 0x502d, 0x5a03,
+    0x6b6a, 0x77ee, 0x5916, 0x5d6c, 0x5dcd, 0x7325, 0x754f, 0xf9ba,
+    0xf9bb, 0x50e5, 0x51f9, 0x582f, 0x592d, 0x5996, 0x59da, 0x5be5,
+    0xf9bc, 0xf9bd, 0x5da2, 0x62d7, 0x6416, 0x6493, 0x64fe, 0xf9be,
+    0x66dc, 0xf9bf, 0x6a48, 0xf9c0, 0x71ff, 0x7464, 0xf9c1, 0x003f,
+    /* lead byte e9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7a88, 0x7aaf, 0x7e47, 0x7e5e, 0x8000, 0x8170, 0xf9c2,
+    0x87ef, 0x8981, 0x8b20, 0x9059, 0xf9c3, 0x9080, 0x9952, 0x617e,
+    0x6b32, 0x6d74, 0x7e1f, 0x8925, 0x8fb1, 0x4fd1, 0x50ad, 0x5197,
+    0x52c7, 0x57c7, 0x5889, 0x5bb9, 0x5eb8, 0x6142, 0x6995, 0x6d8c,
+    0x6e67, 0x6eb6, 0x7194, 0x7462, 0x7528, 0x752c, 0x8073, 0x8338,
+    0x84c9, 0x8e0a, 0x9394, 0x93de, 0xf9c4, 0x4e8e, 0x4f51, 0x5076,
+    0x512a, 0x53c8, 0x53cb, 0x53f3, 0x5b87, 0x5bd3, 0x5c24, 0x611a,
+    0x6182, 0x65f4, 0x725b, 0x7397, 0x7440, 0x76c2, 0x7950, 0x7991,
+    0x79b9, 0x7d06, 0x7fbd, 0x828b, 0x85d5, 0x865e, 0x8fc2, 0x9047,
+    0x90f5, 0x91ea, 0x9685, 0x96e8, 0x96e9, 0x52d6, 0x5f67, 0x65ed,
+    0x6631, 0x682f, 0x715c, 0x7a36, 0x90c1, 0x980a, 0x4e91, 0xf9c5,
+    0x6a52, 0x6b9e, 0x6f90, 0x7189, 0x8018, 0x82b8, 0x8553, 0x003f,
+    /* lead byte ea */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x904b, 0x9695, 0x96f2, 0x97fb, 0x851a, 0x9b31, 0x4e90,
+    0x718a, 0x96c4, 0x5143, 0x539f, 0x54e1, 0x5713, 0x5712, 0x57a3,
+    0x5a9b, 0x5ac4, 0x5bc3, 0x6028, 0x613f, 0x63f4, 0x6c85, 0x6d39,
+    0x6e72, 0x6e90, 0x7230, 0x733f, 0x7457, 0x82d1, 0x8881, 0x8f45,
+    0x9060, 0xf9c6, 0x9662, 0x9858, 0x9d1b, 0x6708, 0x8d8a, 0x925e,
+    0x4f4d, 0x5049, 0x50de, 0x5371, 0x570d, 0x59d4, 0x5a01, 0x5c09,
+    0x6170, 0x6690, 0x6e2d, 0x7232, 0x744b, 0x7def, 0x80c3, 0x840e,
+    0x8466, 0x853f, 0x875f, 0x885b, 0x8918, 0x8b02, 0x9055, 0x97cb,
+    0x9b4f, 0x4e73, 0x4f91, 0x5112, 0x516a, 0xf9c7, 0x552f, 0x55a9,
+    0x5b7a, 0x5ba5, 0x5e7c, 0x5e7d, 0x5ebe, 0x60a0, 0x60df, 0x6108,
+    0x6109, 0x63c4, 0x6538, 0x6709, 0xf9c8, 0x67d4, 0x67da, 0xf9c9,
+    0x6961, 0x6962, 0x6cb9, 0x6d27, 0xf9ca, 0x6e38, 0xf9cb, 0x003f,
+    /* lead byte eb */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6fe1, 0x7336, 0x7337, 0xf9cc, 0x745c, 0x7531, 0xf9cd,
+    0x7652, 0xf9ce, 0xf9cf, 0x7dad, 0x81fe, 0x8438, 0x88d5, 0x8a98,
+    0x8adb, 0x8aed, 0x8e30, 0x8e42, 0x904a, 0x903e, 0x907a, 0x9149,
+    0x91c9, 0x936e, 0xf9d0, 0xf9d1, 0x5809, 0xf9d2, 0x6bd3, 0x8089,
+    0x80b2, 0xf9d3, 0xf9d4, 0x5141, 0x596b, 0x5c39, 0xf9d5, 0xf9d6,
+    0x6f64, 0x73a7, 0x80e4, 0x8d07, 0xf9d7, 0x9217, 0x958f, 0xf9d8,
+    0xf9d9, 0xf9da, 0xf9db, 0x807f, 0x620e, 0x701c, 0x7d68, 0x878d,
+    0xf9dc, 0x57a0, 0x6069, 0x6147, 0x6bb7, 0x8abe, 0x9280, 0x96b1,
+    0x4e59, 0x541f, 0x6deb, 0x852d, 0x9670, 0x97f3, 0x98ee, 0x63d6,
+    0x6ce3, 0x9091, 0x51dd, 0x61c9, 0x81ba, 0x9df9, 0x4f9d, 0x501a,
+    0x5100, 0x5b9c, 0x610f, 0x61ff, 0x64ec, 0x6905, 0x6bc5, 0x7591,
+    0x77e3, 0x7fa9, 0x8264, 0x858f, 0x87fb, 0x8863, 0x8abc, 0x003f,
+    /* lead byte ec */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8b70, 0x91ab, 0x4e8c, 0x4ee5, 0x4f0a, 0xf9dd, 0xf9de,
+    0x5937, 0x59e8, 0xf9df, 0x5df2, 0x5f1b, 0x5f5b, 0x6021, 0xf9e0,
+    0xf9e1, 0xf9e2, 0xf9e3, 0x723e, 0x73e5, 0xf9e4, 0x7570, 0x75cd,
+    0xf9e5, 0x79fb, 0xf9e6, 0x800c, 0x8033, 0x8084, 0x82e1, 0x8351,
+    0xf9e7, 0xf9e8, 0x8cbd, 0x8cb3, 0x9087, 0xf9e9, 0xf9ea, 0x98f4,
+    0x990c, 0xf9eb, 0xf9ec, 0x7037, 0x76ca, 0x7fca, 0x7fcc, 0x7ffc,
+    0x8b1a, 0x4eba, 0x4ec1, 0x5203, 0x5370, 0xf9ed, 0x54bd, 0x56e0,
+    0x59fb, 0x5bc5, 0x5f15, 0x5fcd, 0x6e6e, 0xf9ee, 0xf9ef, 0x7d6a,
+    0x8335, 0xf9f0, 0x8693, 0x8a8d, 0xf9f1, 0x976d, 0x9777, 0xf9f2,
+    0xf9f3, 0x4e00, 0x4f5a, 0x4f7e, 0x58f9, 0x65e5, 0x6ea2, 0x9038,
+    0x93b0, 0x99b9, 0x4efb, 0x58ec, 0x598a, 0x59d9, 0x6041, 0xf9f4,
+    0xf9f5, 0x7a14, 0xf9f6, 0x834f, 0x8cc3, 0x5165, 0x5344, 0x003f,
+    /* lead byte ed */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf9f7, 0xf9f8, 0xf9f9, 0x4ecd, 0x5269, 0x5b55, 0x82bf,
+    0x4ed4, 0x523a, 0x54a8, 0x59c9, 0x59ff, 0x5b50, 0x5b57, 0x5b5c,
+    0x6063, 0x6148, 0x6ecb, 0x7099, 0x716e, 0x7386, 0x74f7, 0x75b5,
+    0x78c1, 0x7d2b, 0x8005, 0x81ea, 0x8328, 0x8517, 0x85c9, 0x8aee,
+    0x8cc7, 0x96cc, 0x4f5c, 0x52fa, 0x56bc, 0x65ab, 0x6628, 0x707c,
+    0x70b8, 0x7235, 0x7dbd, 0x828d, 0x914c, 0x96c0, 0x9d72, 0x5b71,
+    0x68e7, 0x6b98, 0x6f7a, 0x76de, 0x5c91, 0x66ab, 0x6f5b, 0x7bb4,
+    0x7c2a, 0x8836, 0x96dc, 0x4e08, 0x4ed7, 0x5320, 0x5834, 0x58bb,
+    0x58ef, 0x596c, 0x5c07, 0x5e33, 0x5e84, 0x5f35, 0x638c, 0x66b2,
+    0x6756, 0x6a1f, 0x6aa3, 0x6b0c, 0x6f3f, 0x7246, 0xf9fa, 0x7350,
+    0x748b, 0x7ae0, 0x7ca7, 0x8178, 0x81df, 0x81e7, 0x838a, 0x846c,
+    0x8523, 0x8594, 0x85cf, 0x88dd, 0x8d13, 0x91ac, 0x9577, 0x003f,
+    /* lead byte ee */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x969c, 0x518d, 0x54c9, 0x5728, 0x5bb0, 0x624d, 0x6750,
+    0x683d, 0x6893, 0x6e3d, 0x6ed3, 0x707d, 0x7e21, 0x88c1, 0x8ca1,
+    0x8f09, 0x9f4b, 0x9f4e, 0x722d, 0x7b8f, 0x8acd, 0x931a, 0x4f47,
+    0x4f4e, 0x5132, 0x5480, 0x59d0, 0x5e95, 0x62b5, 0x6775, 0x696e,
+    0x6a17, 0x6cae, 0x6e1a, 0x72d9, 0x732a, 0x75bd, 0x7bb8, 0x7d35,
+    0x82e7, 0x83f9, 0x8457, 0x85f7, 0x8a5b, 0x8caf, 0x8e87, 0x9019,
+    0x90b8, 0x96ce, 0x9f5f, 0x52e3, 0x540a, 0x5ae1, 0x5bc2, 0x6458,
+    0x6575, 0x6ef4, 0x72c4, 0xf9fb, 0x7684, 0x7a4d, 0x7b1b, 0x7c4d,
+    0x7e3e, 0x7fdf, 0x837b, 0x8b2b, 0x8cca, 0x8d64, 0x8de1, 0x8e5f,
+    0x8fea, 0x8ff9, 0x9069, 0x93d1, 0x4f43, 0x4f7a, 0x50b3, 0x5168,
+    0x5178, 0x524d, 0x526a, 0x5861, 0x587c, 0x5960, 0x5c08, 0x5c55,
+    0x5edb, 0x609b, 0x6230, 0x6813, 0x6bbf, 0x6c08, 0x6fb1, 0x003f,
+    /* lead byte ef */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x714e, 0x7420, 0x7530, 0x7538, 0x7551, 0x7672, 0x7b4c,
+    0x7b8b, 0x7bad, 0x7bc6, 0x7e8f, 0x8a6e, 0x8f3e, 0x8f49, 0x923f,
+    0x9293, 0x9322, 0x942b, 0x96fb, 0x985a, 0x986b, 0x991e, 0x5207,
+    0x622a, 0x6298, 0x6d59, 0x7664, 0x7aca, 0x7bc0, 0x7d76, 0x5360,
+    0x5cbe, 0x5e97, 0x6f38, 0x70b9, 0x7c98, 0x9711, 0x9b8e, 0x9ede,
+    0x63a5, 0x647a, 0x8776, 0x4e01, 0x4e95, 0x4ead, 0x505c, 0x5075,
+    0x5448, 0x59c3, 0x5b9a, 0x5e40, 0x5ead, 0x5ef7, 0x5f81, 0x60c5,
+    0x633a, 0x653f, 0x6574, 0x65cc, 0x6676, 0x6678, 0x67fe, 0x6968,
+    0x6a89, 0x6b63, 0x6c40, 0x6dc0, 0x6de8, 0x6e1f, 0x6e5e, 0x701e,
+    0x70a1, 0x738e, 0x73fd, 0x753a, 0x775b, 0x7887, 0x798e, 0x7a0b,
+    0x7a7d, 0x7cbe, 0x7d8e, 0x8247, 0x8a02, 0x8aea, 0x8c9e, 0x912d,
+    0x914a, 0x91d8, 0x9266, 0x92cc, 0x9320, 0x9706, 0x9756, 0x003f,
+    /* lead byte f0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x975c, 0x9802, 0x9f0e, 0x5236, 0x5291, 0x557c, 0x5824,
+    0x5e1d, 0x5f1f, 0x608c, 0x63d0, 0x68af, 0x6fdf, 0x796d, 0x7b2c,
+    0x81cd, 0x85ba, 0x88fd, 0x8af8, 0x8e44, 0x918d, 0x9664, 0x969b,
+    0x973d, 0x984c, 0x9f4a, 0x4fce, 0x5146, 0x51cb, 0x52a9, 0x5632,
+    0x5f14, 0x5f6b, 0x63aa, 0x64cd, 0x65e9, 0x6641, 0x66fa, 0x66f9,
+    0x671d, 0x689d, 0x68d7, 0x69fd, 0x6f15, 0x6f6e, 0x7167, 0x71e5,
+    0x722a, 0x74aa, 0x773a, 0x7956, 0x795a, 0x79df, 0x7a20, 0x7a95,
+    0x7c97, 0x7cdf, 0x7d44, 0x7e70, 0x8087, 0x85fb, 0x86a4, 0x8a54,
+    0x8abf, 0x8d99, 0x8e81, 0x9020, 0x906d, 0x91e3, 0x963b, 0x96d5,
+    0x9ce5, 0x65cf, 0x7c07, 0x8db3, 0x93c3, 0x5b58, 0x5c0a, 0x5352,
+    0x62d9, 0x731d, 0x5027, 0x5b97, 0x5f9e, 0x60b0, 0x616b, 0x68d5,
+    0x6dd9, 0x742e, 0x7a2e, 0x7d42, 0x7d9c, 0x7e31, 0x816b, 0x003f,
+    /* lead byte f1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8e2a, 0x8e35, 0x937e, 0x9418, 0x4f50, 0x5750, 0x5de6,
+    0x5ea7, 0x632b, 0x7f6a, 0x4e3b, 0x4f4f, 0x4f8f, 0x505a, 0x59dd,
+    0x80c4, 0x546a, 0x5468, 0x55fe, 0x594f, 0x5b99, 0x5dde, 0x5eda,
+    0x665d, 0x6731, 0x67f1, 0x682a, 0x6ce8, 0x6d32, 0x6e4a, 0x6f8d,
+    0x70b7, 0x73e0, 0x7587, 0x7c4c, 0x7d02, 0x7d2c, 0x7da2, 0x821f,
+    0x86db, 0x8a3b, 0x8a85, 0x8d70, 0x8e8a, 0x8f33, 0x9031, 0x914e,
+    0x9152, 0x9444, 0x99d0, 0x7af9, 0x7ca5, 0x4fca, 0x5101, 0x51c6,
+    0x57c8, 0x5bef, 0x5cfb, 0x6659, 0x6a3d, 0x6d5a, 0x6e96, 0x6fec,
+    0x710c, 0x756f, 0x7ae3, 0x8822, 0x9021, 0x9075, 0x96cb, 0x99ff,
+    0x8301, 0x4e2d, 0x4ef2, 0x8846, 0x91cd, 0x537d, 0x6adb, 0x696b,
+    0x6c41, 0x847a, 0x589e, 0x618e, 0x66fe, 0x62ef, 0x70dd, 0x7511,
+    0x75c7, 0x7e52, 0x84b8, 0x8b49, 0x8d08, 0x4e4b, 0x53ea, 0x003f,
+    /* lead byte f2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x54ab, 0x5730, 0x5740, 0x5fd7, 0x6301, 0x6307, 0x646f,
+    0x652f, 0x65e8, 0x667a, 0x679d, 0x67b3, 0x6b62, 0x6c60, 0x6c9a,
+    0x6f2c, 0x77e5, 0x7825, 0x7949, 0x7957, 0x7d19, 0x80a2, 0x8102,
+    0x81f3, 0x829d, 0x82b7, 0x8718, 0x8a8c, 0xf9fc, 0x8d04, 0x8dbe,
+    0x9072, 0x76f4, 0x7a19, 0x7a37, 0x7e54, 0x8077, 0x5507, 0x55d4,
+    0x5875, 0x632f, 0x6422, 0x6649, 0x664b, 0x686d, 0x699b, 0x6b84,
+    0x6d25, 0x6eb1, 0x73cd, 0x7468, 0x74a1, 0x755b, 0x75b9, 0x76e1,
+    0x771e, 0x778b, 0x79e6, 0x7e09, 0x7e1d, 0x81fb, 0x852f, 0x8897,
+    0x8a3a, 0x8cd1, 0x8eeb, 0x8fb0, 0x9032, 0x93ad, 0x9663, 0x9673,
+    0x9707, 0x4f84, 0x53f1, 0x59ea, 0x5ac9, 0x5e19, 0x684e, 0x74c6,
+    0x75be, 0x79e9, 0x7a92, 0x81a3, 0x86ed, 0x8cea, 0x8dcc, 0x8fed,
+    0x659f, 0x6715, 0xf9fd, 0x57f7, 0x6f57, 0x7ddd, 0x8f2f, 0x003f,
+    /* lead byte f3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x93f6, 0x96c6, 0x5fb5, 0x61f2, 0x6f84, 0x4e14, 0x4f98,
+    0x501f, 0x53c9, 0x55df, 0x5d6f, 0x5dee, 0x6b21, 0x6b64, 0x78cb,
+    0x7b9a, 0xf9fe, 0x8e49, 0x8eca, 0x906e, 0x6349, 0x643e, 0x7740,
+    0x7a84, 0x932f, 0x947f, 0x9f6a, 0x64b0, 0x6faf, 0x71e6, 0x74a8,
+    0x74da, 0x7ac4, 0x7c12, 0x7e82, 0x7cb2, 0x7e98, 0x8b9a, 0x8d0a,
+    0x947d, 0x9910, 0x994c, 0x5239, 0x5bdf, 0x64e6, 0x672d, 0x7d2e,
+    0x50ed, 0x53c3, 0x5879, 0x6158, 0x6159, 0x61fa, 0x65ac, 0x7ad9,
+    0x8b92, 0x8b96, 0x5009, 0x5021, 0x5275, 0x5531, 0x5a3c, 0x5ee0,
+    0x5f70, 0x6134, 0x655e, 0x660c, 0x6636, 0x66a2, 0x69cd, 0x6ec4,
+    0x6f32, 0x7316, 0x7621, 0x7a93, 0x8139, 0x8259, 0x83d6, 0x84bc,
+    0x50b5, 0x57f0, 0x5bc0, 0x5be8, 0x5f69, 0x63a1, 0x7826, 0x7db5,
+    0x83dc, 0x8521, 0x91c7, 0x91f5, 0x518a, 0x67f5, 0x7b56, 0x003f,
+    /* lead byte f4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8cac, 0x51c4, 0x59bb, 0x60bd, 0x8655, 0x501c, 0xf9ff,
+    0x5254, 0x5c3a, 0x617d, 0x621a, 0x62d3, 0x64f2, 0x65a5, 0x6ecc,
+    0x7620, 0x810a, 0x8e60, 0x965f, 0x96bb, 0x4edf, 0x5343, 0x5598,
+    0x5929, 0x5ddd, 0x64c5, 0x6cc9, 0x6dfa, 0x7394, 0x7a7f, 0x821b,
+    0x85a6, 0x8ce4, 0x8e10, 0x9077, 0x91e7, 0x95e1, 0x9621, 0x97c6,
+    0x51f8, 0x54f2, 0x5586, 0x5fb9, 0x64a4, 0x6f88, 0x7db4, 0x8f1f,
+    0x8f4d, 0x9435, 0x50c9, 0x5c16, 0x6cbe, 0x6dfb, 0x751b, 0x77bb,
+    0x7c3d, 0x7c64, 0x8a79, 0x8ac2, 0x581e, 0x59be, 0x5e16, 0x6377,
+    0x7252, 0x758a, 0x776b, 0x8adc, 0x8cbc, 0x8f12, 0x5ef3, 0x6674,
+    0x6df8, 0x807d, 0x83c1, 0x8acb, 0x9751, 0x9bd6, 0xfa00, 0x5243,
+    0x66ff, 0x6d95, 0x6eef, 0x7de0, 0x8ae6, 0x902e, 0x905e, 0x9ad4,
+    0x521d, 0x527f, 0x54e8, 0x6194, 0x6284, 0x62db, 0x68a2, 0x003f,
+    /* lead byte f5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6912, 0x695a, 0x6a35, 0x7092, 0x7126, 0x785d, 0x7901,
+    0x790e, 0x79d2, 0x7a0d, 0x8096, 0x8278, 0x82d5, 0x8349, 0x8549,
+    0x8c82, 0x8d85, 0x9162, 0x918b, 0x91ae, 0x4fc3, 0x56d1, 0x71ed,
+    0x77d7, 0x8700, 0x89f8, 0x5bf8, 0x5fd6, 0x6751, 0x90a8, 0x53e2,
+    0x585a, 0x5bf5, 0x60a4, 0x6181, 0x6460, 0x7e3d, 0x8070, 0x8525,
+    0x9283, 0x64ae, 0x50ac, 0x5d14, 0x6700, 0x589c, 0x62bd, 0x63a8,
+    0x690e, 0x6978, 0x6a1e, 0x6e6b, 0x76ba, 0x79cb, 0x82bb, 0x8429,
+    0x8acf, 0x8da8, 0x8ffd, 0x9112, 0x914b, 0x919c, 0x9310, 0x9318,
+    0x939a, 0x96db, 0x9a36, 0x9c0d, 0x4e11, 0x755c, 0x795d, 0x7afa,
+    0x7b51, 0x7bc9, 0x7e2e, 0x84c4, 0x8e59, 0x8e74, 0x8ef8, 0x9010,
+    0x6625, 0x693f, 0x7443, 0x51fa, 0x672e, 0x9edc, 0x5145, 0x5fe0,
+    0x6c96, 0x87f2, 0x885d, 0x8877, 0x60b4, 0x81b5, 0x8403, 0x003f,
+    /* lead byte f6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8d05, 0x53d6, 0x5439, 0x5634, 0x5a36, 0x5c31, 0x708a,
+    0x7fe0, 0x805a, 0x8106, 0x81ed, 0x8da3, 0x9189, 0x9a5f, 0x9df2,
+    0x5074, 0x4ec4, 0x53a0, 0x60fb, 0x6e2c, 0x5c64, 0x4f88, 0x5024,
+    0x55e4, 0x5cd9, 0x5e5f, 0x6065, 0x6894, 0x6cbb, 0x6dc4, 0x71be,
+    0x75d4, 0x75f4, 0x7661, 0x7a1a, 0x7a49, 0x7dc7, 0x7dfb, 0x7f6e,
+    0x81f4, 0x86a9, 0x8f1c, 0x96c9, 0x99b3, 0x9f52, 0x5247, 0x52c5,
+    0x98ed, 0x89aa, 0x4e03, 0x67d2, 0x6f06, 0x4fb5, 0x5be2, 0x6795,
+    0x6c88, 0x6d78, 0x741b, 0x7827, 0x91dd, 0x937c, 0x87c4, 0x79e4,
+    0x7a31, 0x5feb, 0x4ed6, 0x54a4, 0x553e, 0x58ae, 0x59a5, 0x60f0,
+    0x6253, 0x62d6, 0x6736, 0x6955, 0x8235, 0x9640, 0x99b1, 0x99dd,
+    0x502c, 0x5353, 0x5544, 0x577c, 0xfa01, 0x6258, 0xfa02, 0x64e2,
+    0x666b, 0x67dd, 0x6fc1, 0x6fef, 0x7422, 0x7438, 0x8a17, 0x003f,
+    /* lead byte f7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9438, 0x5451, 0x5606, 0x5766, 0x5f48, 0x619a, 0x6b4e,
+    0x7058, 0x70ad, 0x7dbb, 0x8a95, 0x596a, 0x812b, 0x63a2, 0x7708,
+    0x803d, 0x8caa, 0x5854, 0x642d, 0x69bb, 0x5b95, 0x5e11, 0x6e6f,
+    0xfa03, 0x8569, 0x514c, 0x53f0, 0x592a, 0x6020, 0x614b, 0x6b86,
+    0x6c70, 0x6cf0, 0x7b1e, 0x80ce, 0x82d4, 0x8dc6, 0x90b0, 0x98b1,
+    0xfa04, 0x64c7, 0x6fa4, 0x6491, 0x6504, 0x514e, 0x5410, 0x571f,
+    0x8a0e, 0x615f, 0x6876, 0xfa05, 0x75db, 0x7b52, 0x7d71, 0x901a,
+    0x5806, 0x69cc, 0x817f, 0x892a, 0x9000, 0x9839, 0x5078, 0x5957,
+    0x59ac, 0x6295, 0x900f, 0x9b2a, 0x615d, 0x7279, 0x95d6, 0x5761,
+    0x5a46, 0x5df4, 0x628a, 0x64ad, 0x64fa, 0x6777, 0x6ce2, 0x6d3e,
+    0x722c, 0x7436, 0x7834, 0x7f77, 0x82ad, 0x8ddb, 0x9817, 0x5224,
+    0x5742, 0x677f, 0x7248, 0x74e3, 0x8ca9, 0x8fa6, 0x9211, 0x003f,
+    /* lead byte f8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x962a, 0x516b, 0x53ed, 0x634c, 0x4f69, 0x5504, 0x6096,
+    0x6557, 0x6c9b, 0x6d7f, 0x724c, 0x72fd, 0x7a17, 0x8987, 0x8c9d,
+    0x5f6d, 0x6f8e, 0x70f9, 0x81a8, 0x610e, 0x4fbf, 0x504f, 0x6241,
+    0x7247, 0x7bc7, 0x7de8, 0x7fe9, 0x904d, 0x97ad, 0x9a19, 0x8cb6,
+    0x576a, 0x5e73, 0x67b0, 0x840d, 0x8a55, 0x5420, 0x5b16, 0x5e63,
+    0x5ee2, 0x5f0a, 0x6583, 0x80ba, 0x853d, 0x9589, 0x965b, 0x4f48,
+    0x5305, 0x530d, 0x530f, 0x5486, 0x54fa, 0x5703, 0x5e03, 0x6016,
+    0x629b, 0x62b1, 0x6355, 0xfa06, 0x6ce1, 0x6d66, 0x75b1, 0x7832,
+    0x80de, 0x812f, 0x82de, 0x8461, 0x84b2, 0x888d, 0x8912, 0x900b,
+    0x92ea, 0x98fd, 0x9b91, 0x5e45, 0x66b4, 0x66dd, 0x7011, 0x7206,
+    0xfa07, 0x4ff5, 0x527d, 0x5f6a, 0x6153, 0x6753, 0x6a19, 0x6f02,
+    0x74e2, 0x7968, 0x8868, 0x8c79, 0x98c7, 0x98c4, 0x9a43, 0x003f,
+    /* lead byte f9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x54c1, 0x7a1f, 0x6953, 0x8af7, 0x8c4a, 0x98a8, 0x99ae,
+    0x5f7c, 0x62ab, 0x75b2, 0x76ae, 0x88ab, 0x907f, 0x9642, 0x5339,
+    0x5f3c, 0x5fc5, 0x6ccc, 0x73cc, 0x7562, 0x758b, 0x7b46, 0x82fe,
+    0x999d, 0x4e4f, 0x903c, 0x4e0b, 0x4f55, 0x53a6, 0x590f, 0x5ec8,
+    0x6630, 0x6cb3, 0x7455, 0x8377, 0x8766, 0x8cc0, 0x9050, 0x971e,
+    0x9c15, 0x58d1, 0x5b78, 0x8650, 0x8b14, 0x9db4, 0x5bd2, 0x6068,
+    0x608d, 0x65f1, 0x6c57, 0x6f22, 0x6fa3, 0x701a, 0x7f55, 0x7ff0,
+    0x9591, 0x9592, 0x9650, 0x97d3, 0x5272, 0x8f44, 0x51fd, 0x542b,
+    0x54b8, 0x5563, 0x558a, 0x6abb, 0x6db5, 0x7dd8, 0x8266, 0x929c,
+    0x9677, 0x9e79, 0x5408, 0x54c8, 0x76d2, 0x86e4, 0x95a4, 0x95d4,
+    0x965c, 0x4ea2, 0x4f09, 0x59ee, 0x5ae6, 0x5df7, 0x6052, 0x6297,
+    0x676d, 0x6841, 0x6c86, 0x6e2f, 0x7f38, 0x809b, 0x822a, 0x003f,
+    /* lead byte fa */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xfa08, 0xfa09, 0x9805, 0x4ea5, 0x5055, 0x54b3, 0x5793,
+    0x595a, 0x5b69, 0x5bb3, 0x61c8, 0x6977, 0x6d77, 0x7023, 0x87f9,
+    0x89e3, 0x8a72, 0x8ae7, 0x9082, 0x99ed, 0x9ab8, 0x52be, 0x6838,
+    0x5016, 0x5e78, 0x674f, 0x8347, 0x884c, 0x4eab, 0x5411, 0x56ae,
+    0x73e6, 0x9115, 0x97ff, 0x9909, 0x9957, 0x9999, 0x5653, 0x589f,
+    0x865b, 0x8a31, 0x61b2, 0x6af6, 0x737b, 0x8ed2, 0x6b47, 0x96aa,
+    0x9a57, 0x5955, 0x7200, 0x8d6b, 0x9769, 0x4fd4, 0x5cf4, 0x5f26,
+    0x61f8, 0x665b, 0x6ceb, 0x70ab, 0x7384, 0x73b9, 0x73fe, 0x7729,
+    0x774d, 0x7d43, 0x7d62, 0x7e23, 0x8237, 0x8852, 0xfa0a, 0x8ce2,
+    0x9249, 0x986f, 0x5b51, 0x7a74, 0x8840, 0x9801, 0x5acc, 0x4fe0,
+    0x5354, 0x593e, 0x5cfd, 0x633e, 0x6d79, 0x72f9, 0x8105, 0x8107,
+    0x83a2, 0x92cf, 0x9830, 0x4ea8, 0x5144, 0x5211, 0x578b, 0x003f,
+    /* lead byte fb */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x5f62, 0x6cc2, 0x6ece, 0x7005, 0x7050, 0x70af, 0x7192,
+    0x73e9, 0x7469, 0x834a, 0x87a2, 0x8861, 0x9008, 0x90a2, 0x93a3,
+    0x99a8, 0x516e, 0x5f57, 0x60e0, 0x6167, 0x66b3, 0x8559, 0x8e4a,
+    0x91af, 0x978b, 0x4e4e, 0x4e92, 0x547c, 0x58d5, 0x58fa, 0x597d,
+    0x5cb5, 0x5f27, 0x6236, 0x6248, 0x660a, 0x6667, 0x6beb, 0x6d69,
+    0x6dcf, 0x6e56, 0x6ef8, 0x6f94, 0x6fe0, 0x6fe9, 0x705d, 0x72d0,
+    0x7425, 0x745a, 0x74e0, 0x7693, 0x795c, 0x7cca, 0x7e1e, 0x80e1,
+    0x82a6, 0x846b, 0x84bf, 0x864e, 0x865f, 0x8774, 0x8b77, 0x8c6a,
+    0x93ac, 0x9800, 0x9865, 0x60d1, 0x6216, 0x9177, 0x5a5a, 0x660f,
+    0x6df7, 0x6e3e, 0x743f, 0x9b42, 0x5ffd, 0x60da, 0x7b0f, 0x54c4,
+    0x5f18, 0x6c5e, 0x6cd3, 0x6d2a, 0x70d8, 0x7d05, 0x8679, 0x8a0c,
+    0x9d3b, 0x5316, 0x548c, 0x5b05, 0x6a3a, 0x706b, 0x7575, 0x003f,
+    /* lead byte fc */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x798d, 0x79be, 0x82b1, 0x83ef, 0x8a71, 0x8b41, 0x8ca8,
+    0x9774, 0xfa0b, 0x64f4, 0x652b, 0x78ba, 0x78bb, 0x7a6b, 0x4e38,
+    0x559a, 0x5950, 0x5ba6, 0x5e7b, 0x60a3, 0x63db, 0x6b61, 0x6665,
+    0x6853, 0x6e19, 0x7165, 0x74b0, 0x7d08, 0x9084, 0x9a69, 0x9c25,
+    0x6d3b, 0x6ed1, 0x733e, 0x8c41, 0x95ca, 0x51f0, 0x5e4c, 0x5fa8,
+    0x604d, 0x60f6, 0x6130, 0x614c, 0x6643, 0x6644, 0x69a5, 0x6cc1,
+    0x6e5f, 0x6ec9, 0x6f62, 0x714c, 0x749c, 0x7687, 0x7bc1, 0x7c27,
+    0x8352, 0x8757, 0x9051, 0x968d, 0x9ec3, 0x532f, 0x56de, 0x5efb,
+    0x5f8a, 0x6062, 0x6094, 0x61f7, 0x6666, 0x6703, 0x6a9c, 0x6dee,
+    0x6fae, 0x7070, 0x736a, 0x7e6a, 0x81be, 0x8334, 0x86d4, 0x8aa8,
+    0x8cc4, 0x5283, 0x7372, 0x5b96, 0x6a6b, 0x9404, 0x54ee, 0x5686,
+    0x5b5d, 0x6548, 0x6585, 0x66c9, 0x689f, 0x6d8d, 0x6dc6, 0x003f,
+    /* lead byte fd */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x723b, 0x80b4, 0x9175, 0x9a4d, 0x4faf, 0x5019, 0x539a,
+    0x540e, 0x543c, 0x5589, 0x55c5, 0x5e3f, 0x5f8c, 0x673d, 0x7166,
+    0x73dd, 0x9005, 0x52db, 0x52f3, 0x5864, 0x58ce, 0x7104, 0x718f,
+    0x71fb, 0x85b0, 0x8a13, 0x6688, 0x85a8, 0x55a7, 0x6684, 0x714a,
+    0x8431, 0x5349, 0x5599, 0x6bc1, 0x5f59, 0x5fbd, 0x63ee, 0x6689,
+    0x7147, 0x8af1, 0x8f1d, 0x9ebe, 0x4f11, 0x643a, 0x70cb, 0x7566,
+    0x8667, 0x6064, 0x8b4e, 0x9df8, 0x5147, 0x51f6, 0x5308, 0x6d36,
+    0x80f8, 0x9ed1, 0x6615, 0x6b23, 0x7098, 0x75d5, 0x5403, 0x5c79,
+    0x7d07, 0x8a16, 0x6b20, 0x6b3d, 0x6b46, 0x5438, 0x6070, 0x6d3d,
+    0x7fd5, 0x8208, 0x50d6, 0x51de, 0x559c, 0x566b, 0x56cd, 0x59ec,
+    0x5b09, 0x5e0c, 0x6199, 0x6198, 0x6231, 0x665e, 0x66e6, 0x7199,
+    0x71b9, 0x71ba, 0x72a7, 0x79a7, 0x7a00, 0x7fb2, 0x8a70, 0x003f
+};
+
+static const unsigned char cp2uni_leadbytes[256] =
+{
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
+    0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
+    0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
+    0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20,
+    0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
+    0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+    0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40,
+    0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
+    0x49, 0x01, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x01, 0x00
+};
+
+static const unsigned short uni2cp_low[39168] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0080, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0020, 0xa2ae, 0x0063, 0x004c, 0xa2b4, 0x0059, 0x007c, 0xa1d7,
+    0xa1a7, 0x0063, 0xa8a3, 0xa1b6, 0x003f, 0xa1a9, 0xa2e7, 0xa1aa,
+    0xa1c6, 0xa1be, 0xa9f7, 0xa9f8, 0xa2a5, 0xa5ec, 0xa2d2, 0xa1a4,
+    0xa2ac, 0xa9f6, 0xa8ac, 0xa1b7, 0xa8f9, 0xa8f6, 0xa8fa, 0xa2af,
+    0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0xa8a1, 0x0043,
+    0x0045, 0x0045, 0x0045, 0x0045, 0x0049, 0x0049, 0x0049, 0x0049,
+    0xa8a2, 0x004e, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0xa1bf,
+    0xa8aa, 0x0055, 0x0055, 0x0055, 0x0055, 0x0059, 0xa8ad, 0xa9ac,
+    0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0xa9a1, 0x0063,
+    0x0065, 0x0065, 0x0065, 0x0065, 0x0069, 0x0069, 0x0069, 0x0069,
+    0xa9a3, 0x006e, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0xa1c0,
+    0xa9aa, 0x0075, 0x0075, 0x0075, 0x0075, 0x0079, 0xa9ad, 0x0079,
+    /* 0x0100 .. 0x01ff */
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0043, 0x0063,
+    0x0043, 0x0063, 0x0043, 0x0063, 0x0043, 0x0063, 0x0044, 0x0064,
+    0xa8a2, 0xa9a2, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065,
+    0x0045, 0x0065, 0x0045, 0x0065, 0x0047, 0x0067, 0x0047, 0x0067,
+    0x0047, 0x0067, 0x0047, 0x0067, 0x0048, 0x0068, 0xa8a4, 0xa9a4,
+    0x0049, 0x0069, 0x0049, 0x0069, 0x0049, 0x0069, 0x0049, 0x0069,
+    0x0049, 0xa9a5, 0xa8a6, 0xa9a6, 0x004a, 0x006a, 0x004b, 0x006b,
+    0xa9a7, 0x004c, 0x006c, 0x004c, 0x006c, 0x004c, 0x006c, 0xa8a8,
+    0xa9a8, 0xa8a9, 0xa9a9, 0x004e, 0x006e, 0x004e, 0x006e, 0x004e,
+    0x006e, 0xa9b0, 0xa8af, 0xa9af, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0xa8ab, 0xa9ab, 0x0052, 0x0072, 0x0052, 0x0072,
+    0x0052, 0x0072, 0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073,
+    0x0053, 0x0073, 0x0054, 0x0074, 0x0054, 0x0074, 0xa8ae, 0xa9ae,
+    0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0055, 0x0075, 0x0055, 0x0075, 0x0057, 0x0077, 0x0059, 0x0079,
+    0x0059, 0x005a, 0x007a, 0x005a, 0x007a, 0x005a, 0x007a, 0x0073,
+    0x0062, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xa8a2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0045, 0x0046, 0x0066, 0x003f, 0x003f, 0x003f, 0x003f, 0x0049,
+    0x003f, 0x003f, 0x006c, 0x003f, 0x003f, 0x003f, 0x003f, 0x004f,
+    0x004f, 0x006f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x0074, 0x003f, 0x003f, 0x0054, 0x0055,
+    0x0075, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x007a, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa6a2, 0x003f, 0x003f, 0x0021, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0041, 0x0061, 0x0049,
+    0x0069, 0x004f, 0x006f, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055,
+    0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x003f, 0x0041, 0x0061,
+    0x0041, 0x0061, 0xa8a1, 0xa9a1, 0x0047, 0x0067, 0x0047, 0x0067,
+    0x004b, 0x006b, 0x004f, 0x006f, 0x004f, 0x006f, 0x003f, 0x003f,
+    0x006a, 0x003f, 0x003f, 0x003f, 0x0047, 0x0067, 0x003f, 0x003f,
+    0x004e, 0x006e, 0x0041, 0x0061, 0xa8a1, 0xa9a1, 0xa8aa, 0xa9aa,
+    /* 0x0200 .. 0x02ff */
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0045, 0x0065, 0x0045, 0x0065,
+    0x0049, 0x0069, 0x0049, 0x0069, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x0052, 0x0072, 0x0052, 0x0072, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0053, 0x0073, 0x0054, 0x0074, 0x003f, 0x003f, 0x0048, 0x0068,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0041, 0x0061,
+    0x0045, 0x0065, 0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x0059, 0x0079, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0067, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0068, 0x003f, 0x006a, 0x0072, 0x003f, 0x003f, 0x003f, 0x0077,
+    0x0079, 0xa2a5, 0xa2a9, 0xa1ae, 0xa1af, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x005e, 0x003f, 0x005e, 0xa2a7,
+    0x0027, 0xa1aa, 0xa2a5, 0x0060, 0x003f, 0x005f, 0x003f, 0x003f,
+    0xa2b0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa2a8, 0xa2ab, 0xa2aa, 0xa2ad, 0x007e, 0xa2a9, 0x003f, 0x003f,
+    0x003f, 0x006c, 0x0073, 0x0078, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x0300 .. 0x03ff */
+    0x0060, 0xa2a5, 0x005e, 0x007e, 0xa1aa, 0xa1aa, 0xa2a8, 0xa2ab,
+    0xa1a7, 0x003f, 0xa2aa, 0xa2a9, 0xa2a7, 0x003f, 0x0022, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa2ac,
+    0xa2ad, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x005f, 0x005f, 0x005f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0060, 0xa2a5, 0x003f, 0x003f, 0xa1a7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa2a5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003b, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa2a5, 0xa1a7, 0xa5c1, 0xa1a4,
+    0xa5c5, 0xa5c7, 0xa5c9, 0x003f, 0xa5cf, 0x003f, 0xa5d4, 0xa5d8,
+    0xa5e9, 0xa5c1, 0xa5c2, 0xa5c3, 0xa5c4, 0xa5c5, 0xa5c6, 0xa5c7,
+    0xa5c8, 0xa5c9, 0xa5ca, 0xa5cb, 0xa5cc, 0xa5cd, 0xa5ce, 0xa5cf,
+    0xa5d0, 0xa5d1, 0x003f, 0xa5d2, 0xa5d3, 0xa5d4, 0xa5d5, 0xa5d6,
+    0xa5d7, 0xa5d8, 0xa5c9, 0xa5d4, 0xa5e1, 0xa5e5, 0xa5e7, 0xa5e9,
+    0xa5f4, 0xa5e1, 0xa5e2, 0xa5e3, 0xa5e4, 0xa5e5, 0xa5e6, 0xa5e7,
+    0xa5e8, 0xa5e9, 0xa5ea, 0xa5eb, 0xa5ec, 0xa5ed, 0xa5ee, 0xa5ef,
+    0xa5f0, 0xa5f1, 0x003f, 0xa5f2, 0xa5f3, 0xa5f4, 0xa5f5, 0xa5f6,
+    0xa5f7, 0xa5f8, 0xa5e9, 0xa5f4, 0xa5ef, 0xa5f4, 0xa5f8, 0x003f,
+    0xa5e2, 0xa5e8, 0xa5d4, 0xa5d4, 0xa5d4, 0xa5f5, 0xa5f0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa5ea, 0xa5f1, 0x003f, 0x003f, 0xa5c8, 0xa5e5, 0x003f, 0x003f,
+    0x003f, 0xa5d2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x0400 .. 0x04ff */
+    0xaca6, 0xaca7, 0x003f, 0xaca4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xacac, 0xacaa, 0xacb5, 0x003f,
+    0xaca1, 0xaca2, 0xaca3, 0xaca4, 0xaca5, 0xaca6, 0xaca8, 0xaca9,
+    0xacaa, 0xacab, 0xacac, 0xacad, 0xacae, 0xacaf, 0xacb0, 0xacb1,
+    0xacb2, 0xacb3, 0xacb4, 0xacb5, 0xacb6, 0xacb7, 0xacb8, 0xacb9,
+    0xacba, 0xacbb, 0xacbc, 0xacbd, 0xacbe, 0xacbf, 0xacc0, 0xacc1,
+    0xacd1, 0xacd2, 0xacd3, 0xacd4, 0xacd5, 0xacd6, 0xacd8, 0xacd9,
+    0xacda, 0xacdb, 0xacdc, 0xacdd, 0xacde, 0xacdf, 0xace0, 0xace1,
+    0xace2, 0xace3, 0xace4, 0xace5, 0xace6, 0xace7, 0xace8, 0xace9,
+    0xacea, 0xaceb, 0xacec, 0xaced, 0xacee, 0xacef, 0xacf0, 0xacf1,
+    0xacd6, 0xacd7, 0x003f, 0xacd4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xacdc, 0xacda, 0xace5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xaca8, 0xacd8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xaca1, 0xacd1, 0xaca1, 0xacd1, 0x003f, 0x003f, 0xaca6, 0xacd6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xaca8, 0xacd8, 0xaca9, 0xacd9,
+    0x003f, 0x003f, 0xacaa, 0xacda, 0xacaa, 0xacda, 0xacb0, 0xace0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xacbf, 0xacef, 0xacb5, 0xace5,
+    0xacb5, 0xace5, 0xacb5, 0xace5, 0xacb9, 0xace9, 0x003f, 0x003f,
+    0xacbd, 0xaced, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x1d00 .. 0x1dff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x0041, 0xa8a1, 0x0042, 0x003f,
+    0x0044, 0x0045, 0x003f, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b,
+    0x004c, 0x004d, 0x004e, 0x003f, 0x004f, 0x003f, 0x0050, 0x0052,
+    0x0054, 0x0055, 0x0057, 0x0061, 0x003f, 0x003f, 0x003f, 0x0062,
+    0x0064, 0x0065, 0x003f, 0x003f, 0x003f, 0x0067, 0x003f, 0x006b,
+    0x006d, 0xa9af, 0x006f, 0x003f, 0x003f, 0x003f, 0x0070, 0x0074,
+    0x0075, 0x003f, 0x003f, 0x0076, 0x003f, 0xa5e2, 0xa5e3, 0xa5e4,
+    0xa5f5, 0xa5f6, 0x0069, 0x0072, 0x0075, 0x0076, 0xa5e2, 0xa5e3,
+    0xa5f1, 0xa5f5, 0xa5f6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xacdf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x0063, 0x003f, 0xa9a3, 0x003f,
+    0x0066, 0x003f, 0x0067, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0074, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x007a, 0x003f, 0x003f, 0x003f, 0xa5e8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x1e00 .. 0x1eff */
+    0x0041, 0x0061, 0x0042, 0x0062, 0x0042, 0x0062, 0x0042, 0x0062,
+    0x0043, 0x0063, 0x0044, 0x0064, 0x0044, 0x0064, 0x0044, 0x0064,
+    0x0044, 0x0064, 0x0044, 0x0064, 0x0045, 0x0065, 0x0045, 0x0065,
+    0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, 0x0046, 0x0066,
+    0x0047, 0x0067, 0x0048, 0x0068, 0x0048, 0x0068, 0x0048, 0x0068,
+    0x0048, 0x0068, 0x0048, 0x0068, 0x0049, 0x0069, 0x0049, 0x0069,
+    0x004b, 0x006b, 0x004b, 0x006b, 0x004b, 0x006b, 0x004c, 0x006c,
+    0x004c, 0x006c, 0x004c, 0x006c, 0x004c, 0x006c, 0x004d, 0x006d,
+    0x004d, 0x006d, 0x004d, 0x006d, 0x004e, 0x006e, 0x004e, 0x006e,
+    0x004e, 0x006e, 0x004e, 0x006e, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x004f, 0x006f, 0x0050, 0x0070, 0x0050, 0x0070,
+    0x0052, 0x0072, 0x0052, 0x0072, 0x0052, 0x0072, 0x0052, 0x0072,
+    0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073,
+    0x0053, 0x0073, 0x0054, 0x0074, 0x0054, 0x0074, 0x0054, 0x0074,
+    0x0054, 0x0074, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0055, 0x0075, 0x0055, 0x0075, 0x0056, 0x0076, 0x0056, 0x0076,
+    0x0057, 0x0077, 0x0057, 0x0077, 0x0057, 0x0077, 0x0057, 0x0077,
+    0x0057, 0x0077, 0x0058, 0x0078, 0x0058, 0x0078, 0x0059, 0x0079,
+    0x005a, 0x007a, 0x005a, 0x007a, 0x005a, 0x007a, 0x0068, 0x0074,
+    0x0077, 0x0079, 0x003f, 0x0073, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061,
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061,
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061,
+    0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065,
+    0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065,
+    0x0049, 0x0069, 0x0049, 0x0069, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x004f, 0x006f, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0055, 0x0075, 0x0059, 0x0079, 0x0059, 0x0079, 0x0059, 0x0079,
+    0x0059, 0x0079, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x1f00 .. 0x1fff */
+    0xa5e1, 0xa5e1, 0xa5e1, 0xa5e1, 0xa5e1, 0xa5e1, 0xa5e1, 0xa5e1,
+    0xa5c1, 0xa5c1, 0xa5c1, 0xa5c1, 0xa5c1, 0xa5c1, 0xa5c1, 0xa5c1,
+    0xa5e5, 0xa5e5, 0xa5e5, 0xa5e5, 0xa5e5, 0xa5e5, 0x003f, 0x003f,
+    0xa5c5, 0xa5c5, 0xa5c5, 0xa5c5, 0xa5c5, 0xa5c5, 0x003f, 0x003f,
+    0xa5e7, 0xa5e7, 0xa5e7, 0xa5e7, 0xa5e7, 0xa5e7, 0xa5e7, 0xa5e7,
+    0xa5c7, 0xa5c7, 0xa5c7, 0xa5c7, 0xa5c7, 0xa5c7, 0xa5c7, 0xa5c7,
+    0xa5e9, 0xa5e9, 0xa5e9, 0xa5e9, 0xa5e9, 0xa5e9, 0xa5e9, 0xa5e9,
+    0xa5c9, 0xa5c9, 0xa5c9, 0xa5c9, 0xa5c9, 0xa5c9, 0xa5c9, 0xa5c9,
+    0xa5ef, 0xa5ef, 0xa5ef, 0xa5ef, 0xa5ef, 0xa5ef, 0x003f, 0x003f,
+    0xa5cf, 0xa5cf, 0xa5cf, 0xa5cf, 0xa5cf, 0xa5cf, 0x003f, 0x003f,
+    0xa5f4, 0xa5f4, 0xa5f4, 0xa5f4, 0xa5f4, 0xa5f4, 0xa5f4, 0xa5f4,
+    0x003f, 0xa5d4, 0x003f, 0xa5d4, 0x003f, 0xa5d4, 0x003f, 0xa5d4,
+    0xa5f8, 0xa5f8, 0xa5f8, 0xa5f8, 0xa5f8, 0xa5f8, 0xa5f8, 0xa5f8,
+    0xa5d8, 0xa5d8, 0xa5d8, 0xa5d8, 0xa5d8, 0xa5d8, 0xa5d8, 0xa5d8,
+    0xa5e1, 0xa5e1, 0xa5e5, 0xa5e5, 0xa5e7, 0xa5e7, 0xa5e9, 0xa5e9,
+    0xa5ef, 0xa5ef, 0xa5f4, 0xa5f4, 0xa5f8, 0xa5f8, 0x003f, 0x003f,
+    0xa5e1, 0xa5e1, 0xa5e1, 0xa5e1, 0xa5e1, 0xa5e1, 0xa5e1, 0xa5e1,
+    0xa5c1, 0xa5c1, 0xa5c1, 0xa5c1, 0xa5c1, 0xa5c1, 0xa5c1, 0xa5c1,
+    0xa5e7, 0xa5e7, 0xa5e7, 0xa5e7, 0xa5e7, 0xa5e7, 0xa5e7, 0xa5e7,
+    0xa5c7, 0xa5c7, 0xa5c7, 0xa5c7, 0xa5c7, 0xa5c7, 0xa5c7, 0xa5c7,
+    0xa5f8, 0xa5f8, 0xa5f8, 0xa5f8, 0xa5f8, 0xa5f8, 0xa5f8, 0xa5f8,
+    0xa5d8, 0xa5d8, 0xa5d8, 0xa5d8, 0xa5d8, 0xa5d8, 0xa5d8, 0xa5d8,
+    0xa5e1, 0xa5e1, 0xa5e1, 0xa5e1, 0xa5e1, 0x003f, 0xa5e1, 0xa5e1,
+    0xa5c1, 0xa5c1, 0xa5c1, 0xa5c1, 0xa5c1, 0x003f, 0xa5e9, 0x003f,
+    0x003f, 0xa1a7, 0xa5e7, 0xa5e7, 0xa5e7, 0x003f, 0xa5e7, 0xa5e7,
+    0xa5c5, 0xa5c5, 0xa5c7, 0xa5c7, 0xa5c7, 0x003f, 0x003f, 0x003f,
+    0xa5e9, 0xa5e9, 0xa5e9, 0xa5e9, 0x003f, 0x003f, 0xa5e9, 0xa5e9,
+    0xa5c9, 0xa5c9, 0xa5c9, 0xa5c9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa5f4, 0xa5f4, 0xa5f4, 0xa5f4, 0xa5f1, 0xa5f1, 0xa5f4, 0xa5f4,
+    0xa5d4, 0xa5d4, 0xa5d4, 0xa5d4, 0xa5d1, 0xa1a7, 0xa1a7, 0x0060,
+    0x003f, 0x003f, 0xa5f8, 0xa5f8, 0xa5f8, 0x003f, 0xa5f8, 0xa5f8,
+    0xa5cf, 0xa5cf, 0xa5d8, 0xa5d8, 0xa5d8, 0xa2a5, 0x003f, 0x003f,
+    /* 0x2000 .. 0x20ff */
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+    0x0020, 0x0020, 0x0020, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x002d, 0x002d, 0x003f, 0xa1aa, 0xa1aa, 0xa1aa, 0x003f, 0x005f,
+    0xa1ae, 0xa1af, 0x002c, 0xa1ae, 0xa1b0, 0xa1b1, 0x002c, 0x003f,
+    0xa2d3, 0xa2d4, 0x003f, 0x003f, 0x002e, 0xa1a5, 0xa1a6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0020,
+    0xa2b6, 0x003f, 0xa1c7, 0xa1c8, 0x003f, 0xa1ae, 0x003f, 0x003f,
+    0x003f, 0xa1b4, 0xa1b5, 0xa1d8, 0x0021, 0x003f, 0xa1aa, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x002f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0020,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa2aa, 0x0069, 0x003f, 0x003f, 0xa9f9, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x002b, 0x002d, 0x003d, 0x0028, 0x0029, 0xa9fa,
+    0x0030, 0xa9fb, 0xa9fc, 0xa9fd, 0xa9fe, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x002b, 0x002d, 0x003d, 0x0028, 0x0029, 0x003f,
+    0x0061, 0x0065, 0x006f, 0x0078, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0063, 0x003f, 0x003f, 0x004c, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa2e6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2100 .. 0x21ff */
+    0x003f, 0x003f, 0x0043, 0xa1c9, 0x003f, 0x003f, 0x003f, 0x0045,
+    0x003f, 0xa2b5, 0x0067, 0x0048, 0x0048, 0x0048, 0x0068, 0xa9a4,
+    0x0049, 0x0049, 0x004c, 0xa7a4, 0x003f, 0x004e, 0xa2e0, 0x003f,
+    0x0050, 0x0050, 0x0051, 0x0052, 0x0052, 0x0052, 0x003f, 0x003f,
+    0x003f, 0xa2e5, 0xa2e2, 0x003f, 0x005a, 0x003f, 0xa7d9, 0x003f,
+    0x005a, 0x003f, 0x004b, 0xa1ca, 0x0042, 0x0043, 0x0065, 0x0065,
+    0x0045, 0x0046, 0x003f, 0x004d, 0x006f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0069, 0x003f, 0x003f, 0xa5f0, 0xa5e3, 0xa5c3, 0xa5d0,
+    0xa2b2, 0x003f, 0x003f, 0x003f, 0x003f, 0x0044, 0x0064, 0x0065,
+    0x0069, 0x006a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xa8f7, 0xa8f8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xa8fb, 0xa8fc, 0xa8fd, 0xa8fe, 0x003f,
+    0xa5b0, 0xa5b1, 0xa5b2, 0xa5b3, 0xa5b4, 0xa5b5, 0xa5b6, 0xa5b7,
+    0xa5b8, 0xa5b9, 0x003f, 0x003f, 0x004c, 0x0043, 0x0044, 0x004d,
+    0xa5a1, 0xa5a2, 0xa5a3, 0xa5a4, 0xa5a5, 0xa5a6, 0xa5a7, 0xa5a8,
+    0xa5a9, 0xa5aa, 0x003f, 0x003f, 0x006c, 0x0063, 0x0064, 0x006d,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa1e7, 0xa1e8, 0xa1e6, 0xa1e9, 0xa1ea, 0xa2d5, 0xa2d8, 0xa2d6,
+    0xa2d9, 0xa2d7, 0xa1e7, 0xa1e6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa1ea, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa2a2, 0xa2a1,
+    0x003f, 0x003f, 0xa2a1, 0x003f, 0xa2a2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2200 .. 0x22ff */
+    0xa2a3, 0x003f, 0xa1d3, 0xa2a4, 0xa2a4, 0xa8aa, 0x003f, 0xa1d4,
+    0xa1f4, 0xa1f4, 0x003f, 0xa1f5, 0xa1f5, 0x003f, 0x003f, 0xa2b3,
+    0x003f, 0xa2b2, 0x002d, 0xa1be, 0x003f, 0x002f, 0x005c, 0x002a,
+    0xa2aa, 0x003f, 0xa1ee, 0x003f, 0x003f, 0xa1f0, 0xa1c4, 0x004c,
+    0xa1d0, 0x003f, 0x003f, 0x007c, 0x007c, 0xa1ab, 0xa1ab, 0xa1fc,
+    0xa1fd, 0xa1fb, 0xa1fa, 0xa1f2, 0xa1f3, 0x003f, 0xa2b1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa1c5, 0xa1f1, 0x003a, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa1ad, 0xa1ef, 0x003f, 0x003f,
+    0x003f, 0xa1ad, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x007e, 0x007e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xa1d6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa1c1, 0xa1d5, 0xa1d5, 0xa1d5, 0xa1c2, 0xa1c3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xa1ec, 0xa1ed, 0x003f, 0x003f, 0x003c, 0x003e,
+    0xa1c2, 0xa1c3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xa1f8, 0xa1f9, 0xa1f8, 0xa1f9, 0xa1f6, 0xa1f7,
+    0xa1f6, 0xa1f7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xa2c1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa1d1, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa1a4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2300 .. 0x23ff */
+    0x003f, 0x003f, 0x003f, 0x005e, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xa1d2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xa1b4, 0xa1b5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2400 .. 0x24ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa8e7, 0xa8e8, 0xa8e9, 0xa8ea, 0xa8eb, 0xa8ec, 0xa8ed, 0xa8ee,
+    0xa8ef, 0xa8f0, 0xa8f1, 0xa8f2, 0xa8f3, 0xa8f4, 0xa8f5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa9e7, 0xa9e8, 0xa9e9, 0xa9ea,
+    0xa9eb, 0xa9ec, 0xa9ed, 0xa9ee, 0xa9ef, 0xa9f0, 0xa9f1, 0xa9f2,
+    0xa9f3, 0xa9f4, 0xa9f5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa9cd, 0xa9ce, 0xa9cf, 0xa9d0,
+    0xa9d1, 0xa9d2, 0xa9d3, 0xa9d4, 0xa9d5, 0xa9d6, 0xa9d7, 0xa9d8,
+    0xa9d9, 0xa9da, 0xa9db, 0xa9dc, 0xa9dd, 0xa9de, 0xa9df, 0xa9e0,
+    0xa9e1, 0xa9e2, 0xa9e3, 0xa9e4, 0xa9e5, 0xa9e6, 0x0041, 0x0042,
+    0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a,
+    0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052,
+    0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a,
+    0xa8cd, 0xa8ce, 0xa8cf, 0xa8d0, 0xa8d1, 0xa8d2, 0xa8d3, 0xa8d4,
+    0xa8d5, 0xa8d6, 0xa8d7, 0xa8d8, 0xa8d9, 0xa8da, 0xa8db, 0xa8dc,
+    0xa8dd, 0xa8de, 0xa8df, 0xa8e0, 0xa8e1, 0xa8e2, 0xa8e3, 0xa8e4,
+    0xa8e5, 0xa8e6, 0x0030, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2500 .. 0x25ff */
+    0xa6a1, 0xa6ac, 0xa6a2, 0xa6ad, 0x002d, 0x002d, 0x007c, 0x007c,
+    0x002d, 0x002d, 0x007c, 0x007c, 0xa6a3, 0xa6c8, 0xa6c7, 0xa6ae,
+    0xa6a4, 0xa6c2, 0xa6c1, 0xa6af, 0xa6a6, 0xa6c6, 0xa6c5, 0xa6b1,
+    0xa6a5, 0xa6c4, 0xa6c3, 0xa6b0, 0xa6a7, 0xa6bc, 0xa6c9, 0xa6ca,
+    0xa6b7, 0xa6cb, 0xa6cc, 0xa6b2, 0xa6a9, 0xa6be, 0xa6cd, 0xa6ce,
+    0xa6b9, 0xa6cf, 0xa6d0, 0xa6b4, 0xa6a8, 0xa6d1, 0xa6d2, 0xa6b8,
+    0xa6bd, 0xa6d3, 0xa6d4, 0xa6b3, 0xa6aa, 0xa6d5, 0xa6d6, 0xa6ba,
+    0xa6bf, 0xa6d7, 0xa6d8, 0xa6b5, 0xa6ab, 0xa6d9, 0xa6da, 0xa6bb,
+    0xa6db, 0xa6dc, 0xa6c0, 0xa6dd, 0xa6de, 0xa6df, 0xa6e0, 0xa6e1,
+    0xa6e2, 0xa6e3, 0xa6e4, 0xa6b6, 0x002d, 0x002d, 0x007c, 0x007c,
+    0x003d, 0x007c, 0x002b, 0x002b, 0x002b, 0x003f, 0x003f, 0x003f,
+    0x004c, 0x004c, 0x004c, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b,
+    0x002b, 0x002b, 0x002b, 0x002b, 0x0054, 0x0054, 0x0054, 0x002b,
+    0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x002f, 0x005c, 0x0058, 0x002d, 0x007c, 0x002d, 0x007c,
+    0x002d, 0x007c, 0x002d, 0x007c, 0x002d, 0x007c, 0x002d, 0x007c,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xa2c6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa1e1, 0xa1e0, 0x003f, 0xa2c3, 0xa2c7, 0xa2c8, 0xa2cb, 0xa2ca,
+    0xa2c9, 0xa2cc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xa1e3, 0xa1e2, 0x003f, 0x003f, 0xa2ba, 0xa2b9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa1e5, 0xa1e4, 0x003f, 0x003f,
+    0xa2b8, 0xa2b7, 0x003f, 0x003f, 0x003f, 0x003f, 0xa1df, 0xa1de,
+    0xa2c2, 0x003f, 0x003f, 0xa1db, 0x003f, 0x003f, 0xa1dd, 0xa1dc,
+    0xa2c4, 0xa2c5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa1db,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2600 .. 0x26ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa1da, 0xa1d9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa2cf, 0xa2ce,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa2d0, 0x003f, 0xa2d1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa1cf, 0x003f, 0xa1ce, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa2bc, 0xa2bd, 0x003f, 0xa2c0, 0xa2bb, 0xa2be, 0x003f, 0xa2bf,
+    0xa2cd, 0xa2db, 0xa2dc, 0x003f, 0xa2dd, 0xa2da, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2e00 .. 0x2eff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9bd,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2f00 .. 0x2fff */
+    0xece9, 0x003f, 0x003f, 0x003f, 0xebe0, 0x003f, 0xeca3, 0x003f,
+    0xecd1, 0x003f, 0xecfd, 0xf8a2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd3ef, 0xd5f4, 0x003f, 0xdde2, 0x003f, 0x003f, 0xe4a8,
+    0xdcd4, 0x003f, 0x003f, 0x003f, 0xe9d1, 0xcfa2, 0x003f, 0xf7cf,
+    0xdecd, 0x003f, 0x003f, 0xe0aa, 0xd3de, 0xd2b3, 0xedad, 0x003f,
+    0xf5bb, 0xe1b3, 0x003f, 0xe3b9, 0x003f, 0xdfa3, 0x003f, 0xcdef,
+    0xd0f9, 0xcbee, 0xcace, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcfe1, 0x003f, 0x003f, 0x003f, 0xe3fd, 0xcdfc, 0xfbc2, 0xe2a2,
+    0xf2a8, 0x003f, 0xd9fe, 0xd4e0, 0xd0c5, 0xdbb0, 0xd9e9, 0xeced,
+    0xe8d8, 0xeac5, 0xd9ca, 0xfde2, 0xf2ad, 0x003f, 0x003f, 0xd9ec,
+    0xddef, 0xd9be, 0xe4ab, 0x003f, 0xe2a9, 0xfbfd, 0xf0d0, 0xddab,
+    0xfda1, 0x003f, 0xf8b8, 0xe4b3, 0xe9da, 0xccb3, 0xfadc, 0xe8ac,
+    0xcdfe, 0xe8bf, 0xcaf6, 0xdfe6, 0xe9c4, 0xefa3, 0xf9b5, 0x003f,
+    0x003f, 0xdbdc, 0xf9ab, 0xd9a9, 0xd9cd, 0xd9c3, 0xe3c5, 0xe0b4,
+    0xe3c6, 0x003f, 0xfca2, 0xfaeb, 0xd8a1, 0xf1d3, 0xdab7, 0x003f,
+    0xddae, 0x003f, 0xe5cf, 0xe9e2, 0xd6d5, 0xecbb, 0x003f, 0xecbc,
+    0xebd3, 0xebbf, 0xe3ed, 0xedbb, 0xf2b8, 0xcfbf, 0xe0df, 0xf4bf,
+    0xf1c7, 0xcadd, 0xdfe4, 0xf5ac, 0x003f, 0x003f, 0xfaec, 0xfabc,
+    0xebfd, 0x003f, 0xccb8, 0xcac7, 0xe5eb, 0xcddb, 0xd4e7, 0xe3ce,
+    0x003f, 0xf8af, 0xeee5, 0xf1cb, 0xf0eb, 0xe3f3, 0xf3b3, 0xe3f4,
+    0xf2e3, 0x003f, 0xebe9, 0xebb7, 0x003f, 0xd7ec, 0xd1d1, 0xedfe,
+    0xdaa6, 0xddbd, 0x003f, 0x003f, 0xe9eb, 0xf4ec, 0xdeaa, 0xd8fc,
+    0xfad4, 0xeadf, 0x003f, 0xebe5, 0xfaed, 0xf9a6, 0xdeab, 0xe3dd,
+    0xe2cf, 0xfac5, 0xd8a9, 0xcde9, 0xcdd4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd0a1, 0xe5e0, 0xf0e8, 0xd6dd, 0xd6e3, 0xd8ea, 0xd8ab,
+    0xfcdc, 0xe0a8, 0xfdd9, 0x003f, 0x003f, 0xf0a3, 0xcdd5, 0xe0a9,
+    0xdeac, 0xf0ba, 0xf6cd, 0xd7a3, 0xcfcf, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x3000 .. 0x30ff */
+    0xa1a1, 0xa1a2, 0xa1a3, 0xa1a8, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa1b4, 0xa1b5, 0xa1b6, 0xa1b7, 0xa1b8, 0xa1b9, 0xa1ba, 0xa1bb,
+    0xa1bc, 0xa1bd, 0x003f, 0xa1eb, 0xa1b2, 0xa1b3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x005b, 0x005d, 0x003f, 0xa1b0, 0xa1b1, 0x002c,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe4a8, 0xecfe, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xaaa1, 0xaaa2, 0xaaa3, 0xaaa4, 0xaaa5, 0xaaa6, 0xaaa7,
+    0xaaa8, 0xaaa9, 0xaaaa, 0xaaab, 0xaaac, 0xaaad, 0xaaae, 0xaaaf,
+    0xaab0, 0xaab1, 0xaab2, 0xaab3, 0xaab4, 0xaab5, 0xaab6, 0xaab7,
+    0xaab8, 0xaab9, 0xaaba, 0xaabb, 0xaabc, 0xaabd, 0xaabe, 0xaabf,
+    0xaac0, 0xaac1, 0xaac2, 0xaac3, 0xaac4, 0xaac5, 0xaac6, 0xaac7,
+    0xaac8, 0xaac9, 0xaaca, 0xaacb, 0xaacc, 0xaacd, 0xaace, 0xaacf,
+    0xaad0, 0xaad1, 0xaad2, 0xaad3, 0xaad4, 0xaad5, 0xaad6, 0xaad7,
+    0xaad8, 0xaad9, 0xaada, 0xaadb, 0xaadc, 0xaadd, 0xaade, 0xaadf,
+    0xaae0, 0xaae1, 0xaae2, 0xaae3, 0xaae4, 0xaae5, 0xaae6, 0xaae7,
+    0xaae8, 0xaae9, 0xaaea, 0xaaeb, 0xaaec, 0xaaed, 0xaaee, 0xaaef,
+    0xaaf0, 0xaaf1, 0xaaf2, 0xaaf3, 0xaaa6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xaba1, 0xaba2, 0xaba3, 0xaba4, 0xaba5, 0xaba6, 0xaba7,
+    0xaba8, 0xaba9, 0xabaa, 0xabab, 0xabac, 0xabad, 0xabae, 0xabaf,
+    0xabb0, 0xabb1, 0xabb2, 0xabb3, 0xabb4, 0xabb5, 0xabb6, 0xabb7,
+    0xabb8, 0xabb9, 0xabba, 0xabbb, 0xabbc, 0xabbd, 0xabbe, 0xabbf,
+    0xabc0, 0xabc1, 0xabc2, 0xabc3, 0xabc4, 0xabc5, 0xabc6, 0xabc7,
+    0xabc8, 0xabc9, 0xabca, 0xabcb, 0xabcc, 0xabcd, 0xabce, 0xabcf,
+    0xabd0, 0xabd1, 0xabd2, 0xabd3, 0xabd4, 0xabd5, 0xabd6, 0xabd7,
+    0xabd8, 0xabd9, 0xabda, 0xabdb, 0xabdc, 0xabdd, 0xabde, 0xabdf,
+    0xabe0, 0xabe1, 0xabe2, 0xabe3, 0xabe4, 0xabe5, 0xabe6, 0xabe7,
+    0xabe8, 0xabe9, 0xabea, 0xabeb, 0xabec, 0xabed, 0xabee, 0xabef,
+    0xabf0, 0xabf1, 0xabf2, 0xabf3, 0xabf4, 0xabf5, 0xabf6, 0xabef,
+    0xabf0, 0xabf1, 0xabf2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x3100 .. 0x31ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xa4a1, 0xa4a2, 0xa4a3, 0xa4a4, 0xa4a5, 0xa4a6, 0xa4a7,
+    0xa4a8, 0xa4a9, 0xa4aa, 0xa4ab, 0xa4ac, 0xa4ad, 0xa4ae, 0xa4af,
+    0xa4b0, 0xa4b1, 0xa4b2, 0xa4b3, 0xa4b4, 0xa4b5, 0xa4b6, 0xa4b7,
+    0xa4b8, 0xa4b9, 0xa4ba, 0xa4bb, 0xa4bc, 0xa4bd, 0xa4be, 0xa4bf,
+    0xa4c0, 0xa4c1, 0xa4c2, 0xa4c3, 0xa4c4, 0xa4c5, 0xa4c6, 0xa4c7,
+    0xa4c8, 0xa4c9, 0xa4ca, 0xa4cb, 0xa4cc, 0xa4cd, 0xa4ce, 0xa4cf,
+    0xa4d0, 0xa4d1, 0xa4d2, 0xa4d3, 0xa4d4, 0xa4d5, 0xa4d6, 0xa4d7,
+    0xa4d8, 0xa4d9, 0xa4da, 0xa4db, 0xa4dc, 0xa4dd, 0xa4de, 0xa4df,
+    0xa4e0, 0xa4e1, 0xa4e2, 0xa4e3, 0xa4e4, 0xa4e5, 0xa4e6, 0xa4e7,
+    0xa4e8, 0xa4e9, 0xa4ea, 0xa4eb, 0xa4ec, 0xa4ed, 0xa4ee, 0xa4ef,
+    0xa4f0, 0xa4f1, 0xa4f2, 0xa4f3, 0xa4f4, 0xa4f5, 0xa4f6, 0xa4f7,
+    0xa4f8, 0xa4f9, 0xa4fa, 0xa4fb, 0xa4fc, 0xa4fd, 0xa4fe, 0x003f,
+    0x003f, 0x003f, 0xece9, 0xeca3, 0xdfb2, 0xdecc, 0xdfbe, 0xf1e9,
+    0xf9bb, 0xcba3, 0xebe0, 0xdcb0, 0xefcb, 0xf4b8, 0xf2a2, 0xecd1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x3200 .. 0x32ff */
+    0xa9b1, 0xa9b2, 0xa9b3, 0xa9b4, 0xa9b5, 0xa9b6, 0xa9b7, 0xa9b8,
+    0xa9b9, 0xa9ba, 0xa9bb, 0xa9bc, 0xa9bd, 0xa9be, 0xa9bf, 0xa9c0,
+    0xa9c1, 0xa9c2, 0xa9c3, 0xa9c4, 0xa9c5, 0xa9c6, 0xa9c7, 0xa9c8,
+    0xa9c9, 0xa9ca, 0xa9cb, 0xa9cc, 0xa2df, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa8b1, 0xa8b2, 0xa8b3, 0xa8b4, 0xa8b5, 0xa8b6, 0xa8b7, 0xa8b8,
+    0xa8b9, 0xa8ba, 0xa8bb, 0xa8bc, 0xa8bd, 0xa8be, 0xa8bf, 0xa8c0,
+    0xa8c1, 0xa8c2, 0xa8c3, 0xa8c4, 0xa8c5, 0xa8c6, 0xa8c7, 0xa8c8,
+    0xa8c9, 0xa8ca, 0xa8cb, 0xa8cc, 0x003f, 0x003f, 0x003f, 0xa2de,
+    0xece9, 0xeca3, 0xdfb2, 0xdecc, 0xe7e9, 0xd7bf, 0xf6d2, 0xf8a2,
+    0xcefa, 0xe4a8, 0xeac5, 0xfbfd, 0xe2a9, 0xd9ca, 0xd1d1, 0xf7cf,
+    0xeced, 0xf1bb, 0xeaf3, 0xdee4, 0xd9a3, 0xf7e5, 0xeeaf, 0xf5e6,
+    0x003f, 0xddfa, 0xd1fb, 0xd2b3, 0xeeea, 0xe9d0, 0xecd4, 0xf1bc,
+    0xfaa3, 0xfdcc, 0x003f, 0xefe1, 0xdfbe, 0xf1e9, 0xf9bb, 0xf1a7,
+    0xe9d3, 0x003f, 0xf0f3, 0x003f, 0xcaf8, 0xd0ea, 0xedc0, 0xfaf0,
+    0xe5a8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xaba2, 0xaba4, 0xaba6, 0xaba8, 0xabaa, 0xabab, 0xabad, 0xabaf,
+    0xabb1, 0xabb3, 0xabb5, 0xabb7, 0xabb9, 0xabbb, 0xabbd, 0xabbf,
+    0xabc1, 0xabc4, 0xabc6, 0xabc8, 0xabca, 0xabcb, 0xabcc, 0xabcd,
+    0xabce, 0xabcf, 0xabd2, 0xabd5, 0xabd8, 0xabdb, 0xabde, 0xabdf,
+    0xabe0, 0xabe1, 0xabe2, 0xabe4, 0xabe6, 0xabe8, 0xabe9, 0xabea,
+    0xabeb, 0xabec, 0xabed, 0xabef, 0xabf0, 0xabf1, 0xabf2, 0x003f,
+    /* 0x3300 .. 0x33ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa7c9, 0xa7ca, 0xa7cb, 0xa7cc, 0xa7cd, 0x003f, 0x003f, 0x003f,
+    0xa7ba, 0xa7bb, 0xa7dc, 0xa7dd, 0xa7de, 0xa7b6, 0xa7b7, 0xa7b8,
+    0xa7d4, 0xa7d5, 0xa7d6, 0xa7d7, 0xa7d8, 0xa7a1, 0xa7a2, 0xa7a3,
+    0xa7a5, 0xa7ab, 0xa7ac, 0xa7ad, 0xa7ae, 0xa7af, 0xa7b0, 0xa7b1,
+    0xa7b2, 0xa7b3, 0xa7b4, 0xa7a7, 0xa7a8, 0xa7a9, 0xa7aa, 0xa7bd,
+    0xa7be, 0xa7e5, 0xa7e6, 0xa7e7, 0xa7e8, 0xa7e1, 0xa7e2, 0xa7e3,
+    0xa7bf, 0xa7c0, 0xa7c1, 0xa7c2, 0xa7c3, 0xa7c4, 0xa7c5, 0xa7c6,
+    0xa7c7, 0xa7c8, 0xa7ce, 0xa7cf, 0xa7d0, 0xa7d1, 0xa7d2, 0xa7d3,
+    0xa7da, 0xa7db, 0xa2e3, 0xa7ec, 0xa7a6, 0xa7e0, 0xa7ef, 0xa2e1,
+    0xa7bc, 0xa7ed, 0xa7b5, 0x003f, 0x003f, 0x003f, 0x003f, 0xa7b9,
+    0xa7ea, 0x003f, 0x003f, 0xa7eb, 0x003f, 0x003f, 0xa7df, 0x003f,
+    0xa2e4, 0x003f, 0x003f, 0xa7e4, 0xa7ee, 0xa7e9, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x4e00 .. 0x4eff */
+    0xece9, 0xefcb, 0x003f, 0xf6d2, 0x003f, 0x003f, 0x003f, 0xd8b2,
+    0xeddb, 0xdfb2, 0xdfbe, 0xf9bb, 0x003f, 0xdcf4, 0x003f, 0x003f,
+    0x003f, 0xf5e4, 0x003f, 0x003f, 0xf3a6, 0xdde0, 0xe1a6, 0x003f,
+    0xcef8, 0xdcb0, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3aa, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1e9, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xcdfa, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xfcaf, 0xd3a1, 0x003f, 0xf1ab, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe7d1, 0xd2ac, 0x003f, 0xcef9, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf1fd, 0x003f, 0xdebf, 0xfbba, 0xf9b9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xced2, 0x003f,
+    0xe3ab, 0xebe0, 0x003f, 0x003f, 0x003f, 0xcefa, 0xcbf7, 0xe5a5,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xcae1, 0x003f, 0xd4cc, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xeae1, 0x003f, 0x003f, 0xdce3, 0xdfad,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcbeb, 0x003f,
+    0x003f, 0x003f, 0xd5af, 0x003f, 0x003f, 0x003f, 0xd6f5, 0x003f,
+    0xe5f8, 0x003f, 0x003f, 0xdec0, 0xeca3, 0x003f, 0xe9cd, 0x003f,
+    0xeaa7, 0xe9f6, 0xfbbb, 0x003f, 0xe7e9, 0xefcc, 0x003f, 0x003f,
+    0xd0e6, 0x003f, 0x003f, 0xdec1, 0x003f, 0x003f, 0xe4ac, 0x003f,
+    0x003f, 0xd8cc, 0xf9f1, 0x003f, 0xcedf, 0xfaa4, 0xe6b2, 0x003f,
+    0xfafb, 0x003f, 0x003f, 0xfabd, 0xccc8, 0xefcd, 0xd5d5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd3a2, 0x003f,
+    0x003f, 0x003f, 0xecd1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe4a7, 0xecd2, 0x003f, 0x003f, 0xf6b1, 0x003f, 0x003f, 0xcefb,
+    0x003f, 0x003f, 0xd0d1, 0xcbbf, 0x003f, 0xeda4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xeda8, 0xdec2, 0xf6e2, 0xeddc,
+    0xdcf5, 0xe0b9, 0x003f, 0x003f, 0x003f, 0xd4ce, 0x003f, 0xf4b5,
+    0x003f, 0x003f, 0x003f, 0xd3db, 0xd6b5, 0xeca4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe4e6, 0x003f, 0xf1ea, 0x003f, 0x003f, 0x003f, 0xcbec, 0xcbc0,
+    0x003f, 0x003f, 0x003f, 0xecf2, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x4f00 .. 0x4fff */
+    0x003f, 0xd0ea, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf9f2, 0xeca5, 0xd0df, 0x003f, 0xe7ea, 0xd0eb, 0xdcd1,
+    0xdbe9, 0xfdcc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdbd7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdae1, 0x003f, 0xd6b6, 0x003f,
+    0xe3df, 0x003f, 0xdec3, 0x003f, 0xdec4, 0xcaa1, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xeeec, 0x003f, 0x003f, 0xd3a3, 0xeeb7,
+    0xf8cf, 0x003f, 0x003f, 0x003f, 0x003f, 0xeac8, 0xeeb8, 0xf1ac,
+    0xf1a5, 0xe9ce, 0x003f, 0x003f, 0x003f, 0xf9bc, 0x003f, 0x003f,
+    0x003f, 0xe5f9, 0xecea, 0xddd6, 0xedc2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf8a5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5ba,
+    0xdbd8, 0x003f, 0x003f, 0xcaa2, 0x003f, 0x003f, 0xd1cd, 0x003f,
+    0x003f, 0x003f, 0xeeed, 0x003f, 0x003f, 0x003f, 0xeceb, 0xdec5,
+    0x003f, 0xe3e0, 0x003f, 0xcac9, 0xf2e9, 0x003f, 0xd5ce, 0x003f,
+    0xf6b6, 0x003f, 0xcec2, 0xd6c7, 0x003f, 0xe3b4, 0x003f, 0xf1ad,
+    0x003f, 0xeae2, 0x003f, 0x003f, 0x003f, 0x003f, 0xd7c2, 0x003f,
+    0xf3a7, 0x003f, 0x003f, 0xcdea, 0x003f, 0xebee, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9b2, 0xfda5,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf6d5, 0xd5e2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf8b5,
+    0x003f, 0x003f, 0xccf5, 0xf5b5, 0xe4ad, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe7eb, 0xf1d5, 0x003f, 0x003f, 0x003f, 0xf0bb, 0x003f,
+    0x003f, 0xe9b5, 0x003f, 0xccc9, 0xfad5, 0x003f, 0x003f, 0xe1d4,
+    0x003f, 0x003f, 0xd7d6, 0x003f, 0x003f, 0xdcc1, 0x003f, 0xdec6,
+    0xfaef, 0xe3e1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1f3, 0xdcf6,
+    0x003f, 0xcefc, 0x003f, 0xdbc4, 0x003f, 0xf8f1, 0x003f, 0x003f,
+    0xdce4, 0x003f, 0xe5ef, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x5000 .. 0x50ff */
+    0x003f, 0x003f, 0xdcb1, 0x003f, 0x003f, 0x003f, 0xd5d6, 0x003f,
+    0x003f, 0xf3da, 0x003f, 0xcbc1, 0x003f, 0xdbc3, 0x003f, 0x003f,
+    0x003f, 0xd9fa, 0xd3ee, 0x003f, 0x003f, 0x003f, 0xfab8, 0x003f,
+    0x003f, 0xfda6, 0xebef, 0x003f, 0xf4a6, 0x003f, 0xccca, 0xf3a8,
+    0x003f, 0xf3db, 0x003f, 0xdba7, 0xf6b7, 0x003f, 0xcfe6, 0xf0f2,
+    0xcbda, 0x003f, 0xe7d2, 0xd7c3, 0xf6f0, 0xe8de, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe5a6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe5e7, 0x003f, 0x003f, 0x003f, 0xcaa3,
+    0xcca7, 0xeac9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf8b6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfaa5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf1ae, 0x003f, 0xefce, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcbed, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf6b0, 0xefcf, 0xe9cf, 0x003f,
+    0xf7de, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xced3, 0x003f, 0x003f, 0x003f, 0x003f, 0xdcf7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdba8, 0x003f, 0x003f,
+    0x003f, 0xcbf8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdfa1, 0xdde1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf5ca, 0xe9b6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe7ec, 0xeeee, 0x003f, 0xf3f0, 0x003f, 0xdfbf,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcccb, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd0c1, 0x003f, 0x003f,
+    0x003f, 0xf4d2, 0xe0ba, 0x003f, 0x003f, 0x003f, 0x003f, 0xdfc0,
+    0x003f, 0xcee0, 0x003f, 0x003f, 0x003f, 0xdcd2, 0xfdea, 0x003f,
+    0x003f, 0x003f, 0xd6f6, 0x003f, 0x003f, 0x003f, 0xeaca, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8e9, 0x003f, 0xe3ac,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3d0, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcaa4, 0x003f, 0xdbf8, 0x003f, 0x003f, 0x003f, 0xdec7,
+    /* 0x5100 .. 0x51ff */
+    0xebf0, 0xf1d6, 0x003f, 0x003f, 0xe5e2, 0x003f, 0xcccc, 0x003f,
+    0x003f, 0xcbfb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeae3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdfc1,
+    0x003f, 0xd6ed, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe9d0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeeb9, 0x003f, 0x003f, 0x003f, 0x003f, 0xd5e3,
+    0x003f, 0x003f, 0xd1d3, 0x003f, 0xe5f0, 0x003f, 0x003f, 0x003f,
+    0xe8b4, 0xebc3, 0x003f, 0xeaaa, 0xfafc, 0xf5f6, 0xf0bc, 0xfdd4,
+    0xe0bb, 0xcec3, 0x003f, 0xd0ba, 0xf7ba, 0xd8f3, 0xf7cd, 0x003f,
+    0x003f, 0x003f, 0xe4ae, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd4df, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd0e7, 0x003f, 0x003f, 0xecfd, 0x003f, 0xd2ae,
+    0xeeef, 0xd5d7, 0xeae4, 0xf8a2, 0xcdeb, 0xd7bf, 0xfbb1, 0x003f,
+    0x003f, 0xcdec, 0x003f, 0x003f, 0x003f, 0xdcb2, 0xd0ec, 0xcefd,
+    0xeef0, 0x003f, 0x003f, 0x003f, 0xccc2, 0x003f, 0x003f, 0x003f,
+    0xd0ed, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5f7, 0x003f,
+    0x003f, 0x003f, 0xf3fc, 0x003f, 0x003f, 0xeea2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd9b3, 0x003f, 0x003f, 0xd8f4, 0x003f, 0xe9b7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xceae, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9a2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd8f1, 0x003f, 0xd4cf, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5a7, 0xd5d2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd6a9, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf4a2, 0x003f, 0xf1d7, 0x003f,
+    0x003f, 0xd5d8, 0x003f, 0xf0bd, 0xd7d0, 0xd4d0, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd7cf, 0xebea, 0xfdeb, 0x003f,
+    0x003f, 0xdbed, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xfcc5, 0xcbc2, 0x003f, 0x003f, 0x003f, 0x003f, 0xfdd5, 0x003f,
+    0xf4c8, 0xe8ea, 0xf5f3, 0x003f, 0x003f, 0xf9de, 0x003f, 0x003f,
+    /* 0x5200 .. 0x52ff */
+    0xd3ef, 0x003f, 0x003f, 0xecd3, 0x003f, 0x003f, 0xddc2, 0xefb7,
+    0xe7d4, 0x003f, 0xcaca, 0x003f, 0x003f, 0x003f, 0xd9fb, 0x003f,
+    0x003f, 0xfafd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd6aa,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf4f8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf7f7, 0xdcac, 0x003f, 0x003f,
+    0x003f, 0xd7d7, 0xdfa2, 0x003f, 0x003f, 0x003f, 0xcebe, 0x003f,
+    0xd3f0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf0a4, 0xe1ec,
+    0xcfe7, 0xf3cb, 0xeda9, 0xcabe, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf4ef, 0x003f, 0x003f, 0x003f, 0xf6ce,
+    0x003f, 0x003f, 0xdefb, 0xd0bb, 0xd5b7, 0xeef1, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf4a8, 0x003f, 0xdcf8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xcba7, 0x003f, 0xdace, 0x003f, 0x003f,
+    0x003f, 0xe0e6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeda5, 0xeef2, 0x003f, 0x003f, 0x003f, 0x003f, 0xdcf9,
+    0x003f, 0x003f, 0xf9dc, 0x003f, 0x003f, 0xf3dc, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf8f2, 0x003f, 0xf4f9,
+    0x003f, 0x003f, 0x003f, 0xfcf1, 0x003f, 0x003f, 0x003f, 0xd0bc,
+    0xdbf9, 0xd7b1, 0x003f, 0x003f, 0x003f, 0xcbfc, 0x003f, 0x003f,
+    0x003f, 0xf0a5, 0xcbfd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd5f4, 0x003f, 0x003f, 0x003f, 0xcded,
+    0xcaa5, 0x003f, 0x003f, 0xd6ab, 0xd0c2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf0be, 0xd2bd, 0xcca4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfab6, 0x003f,
+    0x003f, 0xcccd, 0x003f, 0xdafa, 0x003f, 0xf6cf, 0x003f, 0xe9b8,
+    0x003f, 0xd8f5, 0x003f, 0x003f, 0x003f, 0xccce, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd7cd, 0x003f, 0x003f, 0xd4d1, 0xe9ed, 0x003f,
+    0xcaeb, 0xd9e2, 0x003f, 0xfdb2, 0x003f, 0xe3ad, 0xd6cc, 0xd9b4,
+    0x003f, 0x003f, 0xe1a7, 0xeed3, 0xd0c3, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xfdb3, 0x003f, 0xd5e4, 0x003f, 0x003f,
+    0xcfe8, 0x003f, 0xedc3, 0xd0b2, 0x003f, 0x003f, 0xcefe, 0xdaa8,
+    /* 0x5300 .. 0x53ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf8d0, 0x003f, 0x003f,
+    0xfdd6, 0x003f, 0x003f, 0x003f, 0x003f, 0xf8d1, 0x003f, 0xf8d2,
+    0xdcd3, 0x003f, 0x003f, 0x003f, 0x003f, 0xdde2, 0xfbf9, 0xddc1,
+    0x003f, 0xe3b5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xeddd, 0xcec4, 0x003f, 0xcba1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdde3, 0x003f, 0x003f, 0x003f, 0x003f, 0xfcdd,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf9af, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd2fb,
+    0xcfa1, 0xe4a8, 0x003f, 0xf4b6, 0xecfe, 0x003f, 0x003f, 0xe3ae,
+    0xe7ed, 0xfdc1, 0xdae2, 0x003f, 0x003f, 0xd8b3, 0x003f, 0x003f,
+    0x003f, 0xdde4, 0xf0ef, 0xf6f1, 0xfaf0, 0x003f, 0x003f, 0xd1f5,
+    0x003f, 0x003f, 0xdacf, 0x003f, 0xdcd4, 0x003f, 0xdca6, 0x003f,
+    0xefbf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcecf, 0x003f,
+    0xe0d9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9d6,
+    0xecd4, 0xeacb, 0x003f, 0x003f, 0xcabf, 0xd5b0, 0x003f, 0xcfe9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1ed, 0x003f, 0xcccf,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe4f8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe4ed, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd7d8, 0x003f, 0xfda7, 0x003f, 0x003f, 0x003f, 0x003f, 0xeaab,
+    0xf6b2, 0x003f, 0x003f, 0x003f, 0x003f, 0xcff0, 0xf9bd, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6f4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xcbdb, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf3d1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe9d1, 0xf3a9, 0xd0e0, 0xe9d2, 0x003f, 0xdae3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe2d2, 0x003f, 0xf6a2, 0xe1f4,
+    0x003f, 0x003f, 0x003f, 0xdae4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe7d5, 0xf5bf, 0xcfa2, 0xcdaf, 0xcfa3, 0x003f, 0x003f,
+    0x003f, 0xcdb0, 0xf1fe, 0xd0a3, 0xe1af, 0xf8a3, 0x003f, 0xcaa6,
+    0xf7bb, 0xf2ea, 0xdec8, 0xe9d3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdec9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x5400 .. 0x54ff */
+    0x003f, 0x003f, 0x003f, 0xfdde, 0xcac0, 0x003f, 0x003f, 0x003f,
+    0xf9ea, 0xd1ce, 0xeed4, 0x003f, 0xd4d2, 0xd9a3, 0xfda8, 0xd7d9,
+    0xf7ce, 0xfabe, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xcfd6, 0x003f, 0xd7f0, 0x003f, 0xebe1,
+    0xf8c5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdcfa, 0x003f,
+    0x003f, 0xddc3, 0x003f, 0xf9df, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe7ef, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xfde5, 0xf6a3, 0x003f, 0xd9fc, 0xfda9, 0x003f, 0xe7ee, 0x003f,
+    0x003f, 0x003f, 0xd5e5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xefd0, 0x003f, 0xcdb1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf7a2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf1b2, 0x003f, 0xf1b1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcdb2, 0x003f, 0xdaab, 0x003f, 0xcaa7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe3e2, 0xfbbc, 0xd9a4, 0x003f, 0x003f,
+    0xeeba, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf8d3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xfbfa, 0x003f, 0xcfa4, 0x003f,
+    0xdcfb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf6e3, 0x003f, 0x003f, 0x003f,
+    0xedaa, 0x003f, 0x003f, 0xf2a1, 0xcee1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xfaa6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf9e0, 0x003f, 0x003f, 0x003f, 0x003f, 0xecd6, 0x003f, 0x003f,
+    0xe4ee, 0xf9a1, 0x003f, 0x003f, 0xfbef, 0x003f, 0x003f, 0x003f,
+    0xf9eb, 0xeea3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeaac, 0x003f, 0x003f, 0x003f, 0xcaa8, 0x003f, 0x003f,
+    0xf4fa, 0x003f, 0x003f, 0x003f, 0x003f, 0xcdd6, 0xfcf6, 0x003f,
+    0x003f, 0x003f, 0xf4c9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf8d4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x5500 .. 0x55ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf8a6, 0x003f, 0xdeca, 0xf2c6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd7da, 0x003f,
+    0xd3d0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd8c5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeae6,
+    0x003f, 0xf3dd, 0x003f, 0x003f, 0x003f, 0xe4da, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf6e4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf6f2, 0x003f, 0xdfc2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9fd,
+    0x003f, 0x003f, 0x003f, 0xccf6, 0x003f, 0x003f, 0xd3ba, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4af, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf9e1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf0a6, 0x003f, 0x003f, 0x003f,
+    0xcbd3, 0x003f, 0x003f, 0x003f, 0xe0bc, 0x003f, 0xf4ca, 0xd4fa,
+    0x003f, 0xfdaa, 0xf9e2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf4b7, 0xfdc2, 0xfcb0, 0x003f, 0xfdec, 0xcae2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfdbd,
+    0x003f, 0xeae7, 0xdfc3, 0xd1d2, 0xcee2, 0x003f, 0xd3a4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfdab, 0x003f, 0xdfe0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf2c7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe7f0, 0x003f, 0xd0ee, 0x003f, 0x003f, 0xf3aa,
+    0x003f, 0x003f, 0x003f, 0xdecb, 0xf6b8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1f5, 0xf1b3, 0x003f,
+    /* 0x5600 .. 0x56ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf7a3, 0x003f,
+    0x003f, 0xcaa9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xcfa5, 0x003f, 0x003f, 0xdfc4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1b0,
+    0x003f, 0x003f, 0xf0bf, 0x003f, 0xf6a4, 0x003f, 0xe3b6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xfac6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd0ef, 0x003f, 0x003f, 0xfded, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xddc4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfcf7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6bf, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdead, 0x003f, 0xfabf, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe5f1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xedc4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd2a5, 0x003f, 0x003f, 0xfdee, 0x003f, 0x003f,
+    0x003f, 0xf5b6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe1f6, 0xdecc, 0x003f, 0x003f, 0xfcde, 0x003f,
+    0xecd7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcddd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd6b7, 0xcdb3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x5700 .. 0x57ff */
+    0x003f, 0x003f, 0x003f, 0xf8d5, 0xe5d8, 0x003f, 0x003f, 0x003f,
+    0xcfea, 0x003f, 0x003f, 0xcfd0, 0x003f, 0xeacc, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeaae, 0xeaad, 0x003f, 0x003f, 0xd3f1, 0x003f,
+    0xd3a5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf7cf,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xeea4, 0x003f, 0x003f, 0x003f, 0x003f, 0xd0a4, 0x003f, 0x003f,
+    0xf2a2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd0f0, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf2a3, 0x003f, 0xf7f8, 0x003f, 0x003f, 0x003f, 0x003f, 0xd0b3,
+    0x003f, 0x003f, 0xdba9, 0x003f, 0x003f, 0xd3bb, 0xcaec, 0x003f,
+    0xf1a6, 0xcbd5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf7e7, 0x003f, 0x003f, 0xcdde, 0x003f, 0xf7a4, 0x003f,
+    0x003f, 0x003f, 0xf8c0, 0x003f, 0x003f, 0x003f, 0xd3dd, 0x003f,
+    0xccd0, 0x003f, 0x003f, 0x003f, 0x003f, 0xcfa6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf6f3, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe1f7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd3dc, 0x003f, 0x003f, 0xfafe, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xfaa7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xebd9, 0x003f, 0xcfa7, 0xeaaf, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe4ef, 0x003f, 0x003f, 0x003f, 0xe9b9,
+    0xf1d8, 0x003f, 0x003f, 0xd8d8, 0x003f, 0x003f, 0xe0f2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6b4,
+    0xdcfc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf3f1, 0x003f, 0x003f, 0x003f, 0xe3d0, 0x003f, 0x003f, 0xf2fb,
+    0x003f, 0xdbc6, 0xd0f1, 0x003f, 0xd0f2, 0x003f, 0x003f, 0x003f,
+    /* 0x5800 .. 0x58ff */
+    0xcfdc, 0x003f, 0xd3d1, 0x003f, 0x003f, 0xccb1, 0xf7d8, 0x003f,
+    0xcba8, 0xebbc, 0xe4be, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf4dc, 0x003f,
+    0x003f, 0xdcc2, 0x003f, 0x003f, 0xf0a7, 0x003f, 0x003f, 0xe6c0,
+    0x003f, 0x003f, 0xcaed, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8eb,
+    0xe5e8, 0xdcc3, 0x003f, 0x003f, 0xedde, 0xd3f2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xccf7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xced4, 0xe7ab, 0x003f, 0x003f, 0x003f, 0xcbc3,
+    0x003f, 0xe1b1, 0x003f, 0x003f, 0xf7b2, 0x003f, 0x003f, 0xd3f3,
+    0xd3d2, 0x003f, 0xf5c0, 0x003f, 0x003f, 0x003f, 0xdfdd, 0x003f,
+    0x003f, 0xeef3, 0xe7f1, 0x003f, 0xfdb4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2c8, 0x003f, 0x003f,
+    0x003f, 0xf3d2, 0x003f, 0x003f, 0xeef4, 0x003f, 0xe2d3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xccd1, 0x003f, 0xdfea, 0x003f, 0x003f,
+    0x003f, 0xe9ba, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd9d7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf5cd, 0x003f, 0xf1f2, 0xfac7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd9f8, 0xd4c2, 0x003f, 0x003f, 0x003f, 0x003f, 0xf6e5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xddc5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe7f2, 0xeddf, 0x003f, 0x003f, 0xcacb, 0x003f,
+    0x003f, 0xdbfa, 0x003f, 0x003f, 0x003f, 0xe8b5, 0x003f, 0xd3a6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfdb5, 0x003f,
+    0x003f, 0xf9c9, 0x003f, 0xe4e2, 0x003f, 0xfbbd, 0x003f, 0x003f,
+    0xd7a4, 0xcec5, 0x003f, 0x003f, 0x003f, 0x003f, 0xced5, 0xd6e6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe5bd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdecd, 0xecf3, 0x003f, 0x003f, 0xede0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xecec, 0xfbbe, 0xdfeb, 0x003f, 0xe1f8, 0x003f, 0x003f,
+    /* 0x5900 .. 0x59ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf9be,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd0f3, 0xe0aa, 0xe8e2, 0x003f,
+    0x003f, 0xe2d4, 0xd2fd, 0x003f, 0xe5a8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd9d3, 0x003f, 0x003f, 0x003f, 0x003f, 0xd3de,
+    0x003f, 0xf4b8, 0xf7bc, 0xdcfd, 0x003f, 0xe8ec, 0xe4e7, 0x003f,
+    0x003f, 0xe3f7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeca8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfaf1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe5f2, 0x003f, 0x003f, 0xd0f4,
+    0xd2af, 0xdce5, 0x003f, 0x003f, 0x003f, 0x003f, 0xd0a5, 0xf1b4,
+    0xfcb1, 0xccf8, 0x003f, 0x003f, 0xddc6, 0xfad1, 0x003f, 0xf7df,
+    0x003f, 0x003f, 0xfaa8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xeef5, 0x003f, 0xdece, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7f3,
+    0x003f, 0x003f, 0xf7ac, 0xebc4, 0xede1, 0xe0ab, 0xddc7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd2b3, 0xd2bf, 0x003f, 0x003f, 0x003f,
+    0xcacc, 0x003f, 0x003f, 0x003f, 0x003f, 0xfbbf, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe5fd, 0xdde5, 0xd8cd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xecf4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd0f5, 0x003f, 0x003f, 0xe8ed, 0xd0d2,
+    0x003f, 0xd9d8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf6e6, 0x003f, 0x003f,
+    0xdbaa, 0x003f, 0x003f, 0x003f, 0xf7e0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd8d9, 0x003f, 0xf4a3, 0x003f, 0x003f, 0xf4dd, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xefd1, 0x003f, 0x003f, 0xd9b5, 0x003f,
+    0x003f, 0xedab, 0x003f, 0xe3b7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xeebb, 0xcdb4, 0x003f, 0xe0f3, 0xeacd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xecf5, 0xe8ee, 0x003f, 0xcba9, 0xf1af, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcacd, 0x003f,
+    0xeca9, 0x003f, 0xf2eb, 0x003f, 0xfdef, 0x003f, 0xf9f3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe6c1, 0x003f, 0x003f, 0xecd8, 0x003f, 0x003f, 0x003f, 0xedac,
+    /* 0x5a00 .. 0x5aff */
+    0x003f, 0xeace, 0x003f, 0xe8df, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdecf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd2a6, 0x003f, 0x003f, 0xe7f4, 0xd1d6, 0x003f, 0x003f, 0xe6c2,
+    0xe3e3, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4b0, 0x003f, 0x003f,
+    0x003f, 0xd8b4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf6a5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf3de, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd7a5, 0x003f, 0x003f, 0x003f, 0x003f, 0xf7e8, 0x003f,
+    0x003f, 0xe8c6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xfbe6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdde6, 0x003f, 0x003f, 0x003f, 0xdcfe, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd8da, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdaac, 0xeab0, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe3b8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcaaa, 0xe1f9, 0x003f, 0xeab1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf2ec, 0x003f, 0x003f, 0xfaee, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeed5, 0x003f, 0x003f, 0x003f, 0x003f, 0xf9f4, 0x003f,
+    0x003f, 0xd2ec, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x5b00 .. 0x5bff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfbfb, 0x003f, 0x003f,
+    0x003f, 0xfdf0, 0x003f, 0xe0bd, 0xcee3, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf8c6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdeae, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdfc5, 0x003f, 0x003f, 0xe5be, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xedad, 0xfaea, 0x003f, 0x003f, 0xcdee, 0xeda6, 0x003f, 0xedae,
+    0xf0ed, 0x003f, 0xdda1, 0x003f, 0xedaf, 0xfcf8, 0x003f, 0xd8eb,
+    0x003f, 0x003f, 0x003f, 0xccf9, 0xcdb5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xfaa9, 0x003f, 0xe1dd, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe2d5, 0xedcf, 0x003f, 0x003f, 0x003f, 0xdda2, 0x003f, 0x003f,
+    0xf9ca, 0x003f, 0xeae8, 0x003f, 0xe5ed, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd3eb, 0x003f, 0xe9d4,
+    0xe1fa, 0xe4cc, 0x003f, 0xe1e4, 0xe8c7, 0x003f, 0x003f, 0xcedb,
+    0x003f, 0x003f, 0x003f, 0xdcd5, 0x003f, 0xf7b5, 0xfcf3, 0xf0f3,
+    0xceaf, 0xf1b5, 0xefd2, 0xe8c8, 0xebf1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xcbd4, 0xe0be, 0xe3f8, 0xeae9, 0xfcb2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe0f4, 0x003f, 0xcfe0, 0x003f,
+    0xeea5, 0x003f, 0x003f, 0xfaaa, 0xe6c3, 0xe1b2, 0xcaab, 0x003f,
+    0xe3e4, 0xe9bb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2d6,
+    0xf3f2, 0x003f, 0xeed6, 0xeab2, 0xd0f6, 0xecd9, 0xdacb, 0xcfa8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdda3, 0x003f, 0x003f, 0x003f,
+    0xd8db, 0x003f, 0xf9ce, 0xe9d5, 0xe3d1, 0x003f, 0x003f, 0xd2bc,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd8ac, 0xf3cc,
+    0x003f, 0xcdfb, 0xf6d6, 0x003f, 0xe7f5, 0xe8ef, 0xe3f9, 0xd2bb,
+    0xf3f3, 0xe3fb, 0x003f, 0xded0, 0xceb0, 0x003f, 0xd6f7, 0xf1d9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5c1, 0xdcc4, 0x003f,
+    0xf5bb, 0x003f, 0xded1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x5c00 .. 0x5cff */
+    0x003f, 0xdce6, 0x003f, 0x003f, 0xded2, 0x003f, 0x003f, 0xede2,
+    0xeef6, 0xeacf, 0xf0ee, 0xe3fc, 0x003f, 0xd3df, 0xd3f4, 0xe1b3,
+    0x003f, 0xe1b4, 0x003f, 0x003f, 0x003f, 0x003f, 0xf4d3, 0x003f,
+    0x003f, 0xdfc6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe9d6, 0x003f, 0x003f, 0x003f,
+    0xdbab, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf6a6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe3b9, 0xebc5, 0xf4a9, 0xcdb6, 0xd2f9, 0x003f, 0xdaad, 0xd2e3,
+    0xcfd1, 0x003f, 0x003f, 0x003f, 0x003f, 0xcbdc, 0xccfa, 0x003f,
+    0xcfdd, 0x003f, 0x003f, 0xe8a9, 0x003f, 0xe3bb, 0xe3ba, 0x003f,
+    0x003f, 0xe0da, 0x003f, 0x003f, 0x003f, 0xeef7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdcb3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd3f5, 0x003f, 0xd7a6, 0x003f, 0xf6b5, 0xd7db, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe1d5, 0x003f, 0x003f, 0xd4ea,
+    0x003f, 0xdfa3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xfddf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd0f7, 0xedd4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcbaa, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe4db, 0x003f, 0xe1fb, 0xcba2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd3e0, 0x003f, 0xe4bf, 0x003f, 0xfbc0, 0x003f, 0xdabe,
+    0xe4cd, 0x003f, 0xd6b9, 0x003f, 0x003f, 0x003f, 0xefc0, 0x003f,
+    0xe1fc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf6b9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdfc7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe4b1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdce7,
+    0xdce8, 0x003f, 0x003f, 0x003f, 0xfad6, 0x003f, 0xd3f6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf1da, 0x003f, 0xfaf2, 0x003f, 0x003f,
+    /* 0x5d00 .. 0x5dff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2fd,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd5cf, 0xd0f8, 0x003f,
+    0x003f, 0xcddf, 0x003f, 0x003f, 0xf5cb, 0x003f, 0xe4f0, 0xcbab,
+    0x003f, 0xd7c4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2fe,
+    0x003f, 0xddda, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdaae, 0xcaee, 0x003f, 0x003f, 0x003f,
+    0xd5b9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe3a1, 0x003f, 0x003f, 0xe8e3, 0x003f, 0x003f, 0xf3ab,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcfa9,
+    0x003f, 0x003f, 0x003f, 0xd3f7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd4f1, 0x003f, 0x003f,
+    0xcee4, 0x003f, 0xe8f2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe5f5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe7ae, 0x003f, 0xd6ba, 0x003f, 0xdfec, 0xe4c0, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8e4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd8b5, 0x003f, 0x003f, 0x003f, 0xe4dc, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf4b9, 0xf1b6, 0x003f,
+    0x003f, 0xe2de, 0xe1b5, 0x003f, 0x003f, 0xcdef, 0xf1a7, 0xcee5,
+    0xcbdd, 0x003f, 0x003f, 0xd9e3, 0x003f, 0x003f, 0xf3ac, 0x003f,
+    0x003f, 0xd0f9, 0xecab, 0xded3, 0xf7e9, 0x003f, 0x003f, 0xf9f5,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1de, 0xcbee, 0x003f,
+    /* 0x5e00 .. 0x5eff */
+    0x003f, 0x003f, 0xe3bc, 0xf8d6, 0x003f, 0x003f, 0xdbee, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xfdf1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf7b6, 0x003f, 0x003f, 0x003f, 0x003f, 0xf4de, 0x003f,
+    0x003f, 0xf2ed, 0x003f, 0xdbd9, 0x003f, 0xf0a8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1fd, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xded4, 0x003f, 0xe0ac, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xede3, 0x003f, 0x003f, 0xd3e1, 0x003f,
+    0xdfc8, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9b6, 0x003f, 0xfdac,
+    0xefd3, 0x003f, 0x003f, 0x003f, 0xe4c1, 0xf8eb, 0x003f, 0xdbac,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xfcc6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd8ad, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf6ba,
+    0x003f, 0xdbdf, 0xd3d3, 0xf8c7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xcace, 0xf8c1, 0xd2b4, 0x003f, 0x003f, 0xdcb4,
+    0xfab9, 0xcacf, 0x003f, 0xfcb3, 0xeaea, 0xeaeb, 0xd0fa, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xede4, 0x003f, 0x003f, 0xdde7,
+    0x003f, 0x003f, 0xdfc9, 0x003f, 0x003f, 0x003f, 0x003f, 0xdfed,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeebc, 0x003f, 0xefc1,
+    0x003f, 0x003f, 0xccd2, 0x003f, 0xdda4, 0x003f, 0x003f, 0x003f,
+    0xdfca, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd3f8, 0xf1a8,
+    0x003f, 0x003f, 0x003f, 0xcdb7, 0x003f, 0xefd4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4dd, 0xdfee, 0xcbac,
+    0xe9bc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeaec, 0x003f,
+    0x003f, 0x003f, 0xdfcb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf9bf, 0xd6af, 0xd5c6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcfaa, 0x003f, 0x003f, 0xcea9, 0x003f, 0x003f, 0xd6f8, 0x003f,
+    0x003f, 0x003f, 0xf1b7, 0xeef8, 0x003f, 0x003f, 0x003f, 0xd9d9,
+    0xf3df, 0x003f, 0xf8c8, 0xcec6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd5e6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf4e6, 0x003f, 0x003f, 0xe6c5, 0xefd5,
+    0x003f, 0x003f, 0xcbef, 0xfcdf, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x5f00 .. 0x5fff */
+    0x003f, 0xdca7, 0x003f, 0x003f, 0xd6e7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf8c9, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3d2,
+    0x003f, 0xe3bd, 0x003f, 0xcfe1, 0xf0c0, 0xecda, 0x003f, 0xddd7,
+    0xfbf0, 0x003f, 0x003f, 0xecac, 0x003f, 0x003f, 0x003f, 0xf0a9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfad7, 0xfbc1,
+    0x003f, 0xd2c0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe5b0, 0x003f, 0x003f, 0x003f, 0xede5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xcbad, 0x003f, 0xf9b0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf7a5, 0x003f, 0xcbae, 0x003f, 0xdaaf, 0x003f, 0xd8b6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd3a7, 0xfbb2,
+    0x003f, 0xfdc4, 0x003f, 0xecad, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xfba1, 0x003f, 0x003f, 0x003f, 0xe5e9, 0xe9ee,
+    0x003f, 0xf3f4, 0xf8f3, 0xf0c1, 0xdeaf, 0xf8b0, 0x003f, 0x003f,
+    0xf3e0, 0xe7af, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdbad,
+    0x003f, 0xe6b5, 0x003f, 0x003f, 0xf9a8, 0x003f, 0x003f, 0xddd8,
+    0xe8d9, 0xefd6, 0x003f, 0x003f, 0x003f, 0xd3e2, 0x003f, 0xe2df,
+    0x003f, 0x003f, 0xfce0, 0xd7c8, 0xfdad, 0x003f, 0x003f, 0x003f,
+    0xdfef, 0xccd3, 0xd3f9, 0x003f, 0x003f, 0x003f, 0x003f, 0xd4f0,
+    0xdbc7, 0xded5, 0x003f, 0x003f, 0x003f, 0x003f, 0xf0f4, 0x003f,
+    0xd5d0, 0xe5d9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xfcc7, 0xdcd6, 0xe2e0, 0x003f, 0x003f, 0x003f, 0xdab0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3a3, 0x003f, 0xd3ec,
+    0x003f, 0xf4cb, 0x003f, 0x003f, 0x003f, 0xfdc5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe3fd, 0x003f, 0xf9b1, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd0fb, 0xecdb, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5bc, 0xf2a4,
+    0xd8ce, 0xd8cf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf5f7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf6e1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd2b7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfbec, 0x003f, 0xddc8,
+    /* 0x6000 .. 0x60ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4e8,
+    0x003f, 0x003f, 0xd2c1, 0x003f, 0x003f, 0x003f, 0xf8d7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd6bb, 0xded6, 0x003f, 0x003f,
+    0xf7bd, 0xecae, 0x003f, 0x003f, 0x003f, 0xd0e1, 0x003f, 0xe0f5,
+    0xeab3, 0x003f, 0xced6, 0x003f, 0x003f, 0x003f, 0x003f, 0xcca5,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xecf6, 0xe2e1, 0xe3be, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfcc8, 0x003f, 0x003f,
+    0xcdf0, 0x003f, 0xf9f6, 0x003f, 0x003f, 0xdff0, 0x003f, 0x003f,
+    0x003f, 0xe5bf, 0x003f, 0x003f, 0x003f, 0xcebf, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xfce1, 0xedb0, 0xfdd1, 0xf6bb, 0x003f, 0x003f,
+    0xf9cf, 0xebda, 0xcac1, 0x003f, 0xd2b8, 0xcdf1, 0x003f, 0xe3d3,
+    0xfde6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6ed, 0x003f, 0x003f,
+    0x003f, 0xe3fa, 0x003f, 0x003f, 0xf0aa, 0xf9d0, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xfce2, 0x003f, 0xf8a7, 0x003f,
+    0x003f, 0x003f, 0xe1e5, 0xeef9, 0x003f, 0x003f, 0x003f, 0xe7f6,
+    0xeaed, 0x003f, 0x003f, 0xfcb4, 0xf5c2, 0x003f, 0x003f, 0xd7dc,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf0f5, 0x003f, 0xdde8, 0xd3ed, 0xf5fc, 0x003f, 0xdabf, 0x003f,
+    0xccfb, 0x003f, 0x003f, 0x003f, 0xd3fa, 0xf4a4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xefd7, 0x003f, 0xd4c3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xfbe3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xfbed, 0x003f, 0xe0ad, 0x003f, 0x003f, 0xeaee,
+    0xfbb3, 0xe4c2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf6e7, 0xd2dd, 0x003f, 0xdfcc, 0x003f, 0x003f, 0xfcc9, 0x003f,
+    0x003f, 0xe5a9, 0xe0f6, 0xf6b3, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6100 .. 0x61ff */
+    0x003f, 0xe1fe, 0x003f, 0x003f, 0x003f, 0x003f, 0xcbf0, 0x003f,
+    0xeaef, 0xeaf0, 0x003f, 0x003f, 0x003f, 0xdac0, 0xf8b4, 0xebf2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4c3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe9d7, 0xe4f1, 0x003f, 0x003f, 0x003f, 0xcaef,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xced7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xfcca, 0x003f, 0x003f, 0x003f, 0xf3e1, 0x003f, 0x003f, 0xcbc4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe3e5, 0x003f, 0xcbc5, 0xeab4,
+    0x003f, 0x003f, 0xe9bd, 0x003f, 0xd7c9, 0x003f, 0x003f, 0xebdb,
+    0xedb1, 0x003f, 0xccc3, 0xf7be, 0xfccb, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf8f4, 0x003f, 0xd9b7, 0x003f, 0x003f,
+    0xf3d3, 0xf3d4, 0x003f, 0x003f, 0x003f, 0xf7e4, 0x003f, 0xf7d1,
+    0x003f, 0x003f, 0xd8b7, 0xceb1, 0xcac2, 0x003f, 0x003f, 0xfbb4,
+    0xcbc6, 0x003f, 0x003f, 0xf0f6, 0x003f, 0x003f, 0xd5e7, 0x003f,
+    0xead0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xccd4, 0xcbaf,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf4aa, 0xe9af, 0x003f,
+    0x003f, 0xf5c3, 0xe9d8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdde9, 0x003f, 0x003f, 0x003f, 0xf1f3, 0x003f,
+    0xd5fb, 0xdebb, 0x003f, 0x003f, 0xf4fb, 0x003f, 0x003f, 0x003f,
+    0xfdf3, 0xfdf2, 0xf7a6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xddc9, 0x003f, 0x003f, 0xd4d3,
+    0x003f, 0xcca8, 0x003f, 0xdac1, 0xccd5, 0x003f, 0xd9e4, 0x003f,
+    0x003f, 0x003f, 0xfaca, 0x003f, 0x003f, 0x003f, 0xe5e3, 0x003f,
+    0x003f, 0x003f, 0xd3bc, 0x003f, 0x003f, 0x003f, 0xcaf0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd0c4, 0x003f, 0x003f, 0x003f, 0xcad0,
+    0xfaab, 0xebeb, 0xe7f8, 0xd9e5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd1d7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf3a4, 0x003f, 0x003f, 0x003f, 0xd4fb, 0xfce3,
+    0xfad8, 0x003f, 0xf3d5, 0x003f, 0xcfab, 0x003f, 0x003f, 0xebf3,
+    /* 0x6200 .. 0x62ff */
+    0xd5fc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd3d4,
+    0xcdfc, 0x003f, 0xd9e6, 0x003f, 0xe2f9, 0xe2a1, 0xebd4, 0x003f,
+    0xe0f7, 0xe4b2, 0xccfc, 0x003f, 0x003f, 0x003f, 0xfbe4, 0x003f,
+    0x003f, 0x003f, 0xf4ab, 0x003f, 0x003f, 0x003f, 0x003f, 0xd0bd,
+    0x003f, 0xcaf1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xefb8, 0x003f, 0x003f, 0x003f, 0xd7c0, 0x003f,
+    0xeefa, 0xfdf4, 0x003f, 0x003f, 0xd3e3, 0x003f, 0xfbc2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd5e8, 0xdbae,
+    0xe1b6, 0xf8b7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0bf,
+    0xfbc3, 0xddea, 0x003f, 0xe2a2, 0x003f, 0xeea6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf6e8, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf6f5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xddca, 0x003f,
+    0x003f, 0xd0e2, 0x003f, 0x003f, 0x003f, 0x003f, 0xdda6, 0x003f,
+    0x003f, 0xddeb, 0x003f, 0x003f, 0xe4f9, 0x003f, 0x003f, 0xe3af,
+    0xd0fc, 0x003f, 0x003f, 0x003f, 0xf4fc, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xccbc, 0xf7ea, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe5e4, 0xdff1, 0x003f, 0x003f, 0xf7e1, 0x003f, 0xf9f7,
+    0xefb9, 0x003f, 0x003f, 0xf8d8, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf9a9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf8d9, 0x003f, 0x003f, 0x003f, 0xeebd, 0x003f, 0x003f,
+    0x003f, 0xd8c6, 0x003f, 0x003f, 0xe4e3, 0xf5ce, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xddd9, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9e7,
+    0xd2b9, 0xd5c3, 0x003f, 0x003f, 0xdae5, 0xdad0, 0x003f, 0xd1d9,
+    0xced8, 0x003f, 0xcbde, 0xf4ac, 0xdafb, 0x003f, 0xf6e9, 0xe8f3,
+    0xcfac, 0xf0f0, 0x003f, 0xf4fd, 0xdbc8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xcec0, 0xe3d4, 0xd1cf, 0xf1f5,
+    0x003f, 0xcdf2, 0x003f, 0xcfeb, 0x003f, 0x003f, 0x003f, 0xcdb8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3a6, 0xd1da,
+    /* 0x6300 .. 0x63ff */
+    0x003f, 0xf2a5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2a6,
+    0x003f, 0xe4ce, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd3fb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf1a9, 0x003f, 0x003f, 0x003f, 0xf2c9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xefd8, 0xe6c9, 0x003f, 0xd8b8, 0xfaf3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf3b5, 0x003f, 0x003f, 0xf8a4, 0x003f, 0x003f, 0xd1f3,
+    0xe6c8, 0x003f, 0x003f, 0x003f, 0x003f, 0xf8da, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdce9,
+    0xded7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcbdf, 0x003f,
+    0x003f, 0x003f, 0xcfec, 0x003f, 0x003f, 0x003f, 0x003f, 0xf4df,
+    0x003f, 0x003f, 0xd1f4, 0xd2ba, 0x003f, 0x003f, 0x003f, 0xdff2,
+    0x003f, 0x003f, 0x003f, 0xe1b7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe2a3, 0xd3fc, 0x003f, 0x003f, 0xede6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdbc9, 0x003f, 0x003f, 0x003f, 0xe4fa, 0x003f,
+    0xcfde, 0x003f, 0x003f, 0xced0, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd5d3, 0xf3f5, 0xf7ae, 0x003f, 0x003f, 0xefc8, 0x003f, 0xcdf3,
+    0xf5cf, 0xe5f3, 0xf0c2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcad1, 0x003f, 0x003f, 0x003f, 0xeaf1, 0x003f, 0xd0a6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9da,
+    0xf0ab, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xebe7, 0x003f,
+    0x003f, 0x003f, 0xe5c0, 0xfcb5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe4c4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcca9, 0xfdc6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xeab5, 0x003f, 0xe5aa, 0xdfba,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6400 .. 0x64ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1df, 0x003f, 0xdad1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe1b8, 0x003f, 0xe8f4, 0xd3fd,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe2a4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf2ca, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdae6, 0xf7b3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xfdcd, 0x003f, 0x003f, 0x003f, 0xf3b6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xeed7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf5c4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd8a4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2a7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd9b8, 0xd9b9, 0xefc9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd6ce, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf7cb, 0xdfae, 0xe8f5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd2b5, 0x003f, 0x003f, 0x003f, 0xd3d5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf4cc, 0xdafc, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd9e8, 0x003f, 0xf7eb, 0xf5c9, 0x003f,
+    0xf3bc, 0x003f, 0xdad2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd3b5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe8b6, 0x003f, 0x003f, 0xd6cf, 0xf4ba, 0x003f, 0xf7c9,
+    0x003f, 0x003f, 0xccaa, 0x003f, 0x003f, 0xf0c3, 0xccd6, 0x003f,
+    0x003f, 0x003f, 0xd0d3, 0x003f, 0xd3bd, 0x003f, 0x003f, 0x003f,
+    0xdbfb, 0x003f, 0xcbe0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd3e4, 0xf6f7, 0x003f, 0x003f, 0xd5ba, 0xf3cd, 0xcbe1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xebf4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf4ad, 0x003f, 0xfcaa, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf7ec, 0x003f, 0x003f, 0x003f, 0xe8f6, 0x003f,
+    /* 0x6500 .. 0x65ff */
+    0xdae7, 0x003f, 0x003f, 0x003f, 0xf7cc, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe5c1, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0ee, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd5fd, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xcee6, 0xfcab, 0xd5bb, 0x003f, 0x003f, 0xf2a8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2a5, 0xcdb9,
+    0xeaf2, 0xcbc7, 0x003f, 0xcdf4, 0x003f, 0x003f, 0xdbaf, 0xefd9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcdba, 0x003f, 0x003f,
+    0xfcf9, 0x003f, 0x003f, 0x003f, 0x003f, 0xdff3, 0xcee7, 0xdac2,
+    0x003f, 0xcfad, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7f9, 0xf8a8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3e2, 0x003f,
+    0x003f, 0x003f, 0xcaf2, 0xdfa4, 0x003f, 0x003f, 0xd4c4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xccd7, 0xe5c2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xcdbb, 0x003f, 0xefda, 0xeed8, 0x003f, 0xdda7,
+    0xe2a6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0c0, 0x003f,
+    0x003f, 0x003f, 0xd6b0, 0xf8ca, 0x003f, 0xfcfa, 0x003f, 0xd9fe,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdeb0, 0x003f, 0x003f, 0x003f,
+    0xddec, 0xdae8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd4e0,
+    0x003f, 0xd6f9, 0x003f, 0xcdd7, 0xded8, 0x003f, 0x003f, 0xf2f8,
+    0x003f, 0xe4d6, 0x003f, 0x003f, 0xd0c5, 0xf4ae, 0x003f, 0xdda8,
+    0x003f, 0x003f, 0x003f, 0xedc5, 0xf3d6, 0x003f, 0x003f, 0xded9,
+    0xe3e6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd3a8,
+    0x003f, 0xdbb0, 0x003f, 0x003f, 0xe5da, 0xe3bf, 0x003f, 0x003f,
+    0x003f, 0xdbb1, 0x003f, 0x003f, 0x003f, 0xd5e9, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe0c1, 0xefdb, 0x003f, 0x003f, 0xf0e9,
+    0x003f, 0x003f, 0xd7b2, 0x003f, 0x003f, 0x003f, 0x003f, 0xd0fd,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd9e9, 0x003f, 0x003f, 0xd0fe, 0x003f, 0xeced, 0xd3a9, 0x003f,
+    0xf2a9, 0xf0c4, 0x003f, 0x003f, 0xe2e2, 0xe9ef, 0x003f, 0x003f,
+    0x003f, 0xf9d1, 0x003f, 0x003f, 0xe9d9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe8da, 0xdac3, 0xdac4, 0xd4c5, 0x003f, 0xe7fa,
+    /* 0x6600 .. 0x66ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcde0, 0xe3b0,
+    0x003f, 0xdbb2, 0xfbc4, 0x003f, 0xf3e3, 0x003f, 0xd9a5, 0xfbe7,
+    0xddcb, 0xd0d4, 0x003f, 0xe6b6, 0xe0ae, 0xfdda, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdcb5, 0xe0f8,
+    0xe7b1, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5f0, 0x003f, 0xd8dc,
+    0xedc6, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1b9, 0x003f, 0xe3c0,
+    0xf9c0, 0xe9f0, 0x003f, 0x003f, 0xd9db, 0x003f, 0xf3e4, 0x003f,
+    0x003f, 0x003f, 0xdcb6, 0xe4e9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf0c5, 0xe3c1, 0xfccc, 0xfccd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf2cb, 0x003f, 0xf2cc, 0x003f, 0x003f, 0x003f, 0xe4cf,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf1db, 0x003f, 0xfad9, 0x003f, 0xf1b8, 0xfdf5, 0xe0f9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe7fb, 0xfcb7, 0xfce4, 0xfbc5,
+    0xe3e7, 0xd8b9, 0x003f, 0xf6f8, 0x003f, 0x003f, 0xdcc5, 0xccd8,
+    0x003f, 0x003f, 0x003f, 0xe0af, 0xf4e7, 0x003f, 0xefdc, 0xcffc,
+    0xefdd, 0x003f, 0xf2aa, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xfdbe, 0x003f, 0x003f, 0xcaac,
+    0xfdbb, 0xfdc7, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7b2, 0x003f,
+    0xead1, 0xdff4, 0x003f, 0x003f, 0x003f, 0x003f, 0xd1ec, 0xe4de,
+    0xe5c3, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9a6, 0x003f, 0x003f,
+    0xcdbc, 0x003f, 0xf3e5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xedd5, 0x003f, 0x003f, 0xd9ba, 0x003f,
+    0x003f, 0x003f, 0xede7, 0xfbb5, 0xf8ec, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe0e7, 0x003f, 0xccd9, 0x003f, 0x003f, 0xd4c6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe7a5, 0x003f, 0xd5f5, 0xd3be,
+    0x003f, 0xfcfb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4f2, 0x003f,
+    0x003f, 0xdff5, 0x003f, 0x003f, 0xe8f8, 0xf8ed, 0x003f, 0x003f,
+    0xcec7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfdf6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe8d8, 0x003f, 0xcdd8, 0xe7d6, 0xccda, 0x003f, 0x003f, 0xcae3,
+    0xdff6, 0xf0c7, 0xf0c6, 0x003f, 0xd8ba, 0x003f, 0xf1f4, 0xf4f0,
+    /* 0x6700 .. 0x67ff */
+    0xf5cc, 0x003f, 0x003f, 0xfce5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xeac5, 0xeaf3, 0x003f, 0xdddb, 0x003f, 0xdcd7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdefd, 0xf2f9, 0x003f, 0xd5c7,
+    0x003f, 0x003f, 0x003f, 0xd8d0, 0x003f, 0xf0c8, 0xd1a1, 0xd1a2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9d4, 0xd6e8,
+    0xd9ca, 0x003f, 0xdab1, 0xd8c7, 0xdce2, 0xf3ce, 0xf5f4, 0x003f,
+    0x003f, 0xf1b9, 0x003f, 0x003f, 0xdad3, 0x003f, 0xf6ea, 0x003f,
+    0x003f, 0x003f, 0xcff5, 0x003f, 0x003f, 0xfdae, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcad2, 0x003f,
+    0x003f, 0xdfb4, 0x003f, 0x003f, 0x003f, 0x003f, 0xd7dd, 0xfaba,
+    0xeea7, 0xf5bd, 0x003f, 0xf8f5, 0x003f, 0x003f, 0xede8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd4e1, 0x003f, 0xd1a3, 0xe1d6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf9f8, 0x003f, 0xdbca,
+    0xcbf9, 0xd4d4, 0x003f, 0xd9dc, 0x003f, 0xeebe, 0x003f, 0xf7ed,
+    0x003f, 0x003f, 0x003f, 0xd2ee, 0x003f, 0x003f, 0xe1e6, 0xf7f9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdded,
+    0x003f, 0xe8db, 0x003f, 0xdbb3, 0x003f, 0x003f, 0x003f, 0xd1f7,
+    0xe0b0, 0x003f, 0x003f, 0xd4e2, 0x003f, 0xf6d7, 0x003f, 0xd7f9,
+    0x003f, 0x003f, 0xd8dd, 0x003f, 0xcdfd, 0xf2ab, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcdbd,
+    0xf8c2, 0x003f, 0x003f, 0xf2ac, 0x003f, 0x003f, 0xcaad, 0xcaae,
+    0xcfae, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3c2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdcb7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdbda,
+    0xd9bb, 0xcaf3, 0xf6d3, 0xe6f8, 0xeaf5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeaf6, 0x003f, 0x003f, 0xf6f9, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcfaf, 0x003f, 0x003f, 0xcad3, 0x003f, 0x003f, 0xcaaf,
+    0xd2b0, 0xf1ba, 0x003f, 0xd7b3, 0xe3c3, 0xf3fd, 0xdeda, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdedb, 0x003f, 0x003f, 0xefde, 0x003f,
+    /* 0x6800 .. 0x68ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe2e3, 0xeefb, 0x003f, 0x003f, 0xdff7, 0xd7ca,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcee8, 0xdbdb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf1bb, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9f1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xfab7, 0xd0c6, 0x003f, 0x003f, 0xccab, 0xeea8, 0x003f, 0x003f,
+    0xcbfa, 0xf9f9, 0xccfd, 0xd3fe, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe4d0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2ee, 0x003f,
+    0xd4d5, 0xdfcd, 0x003f, 0xfcb8, 0xd1d0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2cd, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf7d2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcad4,
+    0x003f, 0xd5d9, 0x003f, 0x003f, 0x003f, 0xd8de, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcdd9,
+    0x003f, 0x003f, 0x003f, 0xeea9, 0xf6bc, 0x003f, 0x003f, 0xccdb,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf0c9, 0x003f, 0xfcfc,
+    0x003f, 0xe8c9, 0xf4fe, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7fc,
+    0xd7de, 0x003f, 0x003f, 0x003f, 0x003f, 0xdedc, 0x003f, 0xf0ac,
+    0xccfe, 0xcde1, 0x003f, 0xe1ba, 0x003f, 0xdbef, 0xdab2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd1a5, 0xdcb8, 0x003f, 0x003f,
+    0x003f, 0xd8f6, 0x003f, 0xd1a4, 0x003f, 0xcde2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdcea, 0x003f, 0x003f, 0xf0f7, 0x003f, 0xf0ca,
+    0xd0be, 0x003f, 0xdddc, 0x003f, 0x003f, 0x003f, 0x003f, 0xd4d6,
+    0xd3d6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xedd0,
+    0xcda1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdfb5, 0x003f,
+    0x003f, 0x003f, 0xdff8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd4a1, 0xceb2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6900 .. 0x69ff */
+    0xe8ca, 0x003f, 0x003f, 0x003f, 0x003f, 0xebf5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3d5, 0xf5d0, 0x003f,
+    0x003f, 0x003f, 0xf5a1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9a7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe5ab, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6cb, 0x003f, 0xf5f1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe5c5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf9a3, 0xe0db, 0xf6eb, 0x003f, 0xcbf1,
+    0x003f, 0xd9ea, 0xf5a2, 0x003f, 0x003f, 0x003f, 0xd7d1, 0x003f,
+    0xd1f8, 0xeaf8, 0xeaf9, 0xdab3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xefdf, 0x003f, 0x003f, 0xf1ef, 0x003f, 0xe5f6, 0xeebf, 0xe2e4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd0bf, 0x003f, 0xfaac,
+    0xf5d1, 0xe7b3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9be, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf2ce, 0xdbb4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfcce, 0x003f, 0xddee,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7b4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd7b4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf7b4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcdbe, 0x003f, 0xdae9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xcfb0, 0xf7d9, 0xf3e6, 0x003f, 0x003f,
+    0xced9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xceaa, 0x003f, 0xcbc8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd0a7, 0x003f, 0xf0cb, 0x003f, 0xd0c7,
+    /* 0x6a00 .. 0x6aff */
+    0x003f, 0x003f, 0xe4c5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdbe0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd5da, 0x003f, 0xd7a7, 0x003f, 0x003f, 0x003f, 0xeec0,
+    0x003f, 0xf8f6, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5d2, 0xede9,
+    0x003f, 0xd9bc, 0x003f, 0xe5c6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5a3, 0x003f, 0x003f,
+    0xdad4, 0xe2a7, 0xfbfc, 0x003f, 0x003f, 0xf1dc, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xcaf4, 0x003f, 0x003f, 0x003f,
+    0xe8fa, 0x003f, 0x003f, 0xcee9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe9f8, 0xe2e5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd0b9, 0xd4f2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd1a6,
+    0x003f, 0xdfce, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xfcf4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd3aa, 0x003f, 0x003f, 0x003f, 0xccac, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xefe0, 0x003f, 0x003f, 0x003f, 0xe5e5, 0xd0d5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdbfc,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xfce6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xcbfe, 0xedea, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdeb1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf9e3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd4a2, 0xcff6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd6d0, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd5ea, 0xf1ee, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfacb, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe5a1, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6b00 .. 0x6bff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd5b1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xcfed, 0x003f, 0xedeb, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd5b2, 0x003f, 0x003f, 0x003f, 0xd5bc, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xfde2, 0xf3ad, 0x003f, 0xfddb, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe9b0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd1a7, 0x003f, 0x003f, 0xfde3, 0xceb3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfde4, 0xface,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xcab0, 0x003f, 0xf7a7, 0x003f,
+    0xcfb1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6a2,
+    0x003f, 0xfcb6, 0xf2ad, 0xefe1, 0xf3ae, 0xdcc6, 0xd9eb, 0x003f,
+    0x003f, 0x003f, 0xe8e0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe1a8, 0x003f, 0x003f, 0x003f, 0x003f, 0xd5f6,
+    0xcffd, 0x003f, 0x003f, 0xdedd, 0x003f, 0x003f, 0x003f, 0xd9d1,
+    0x003f, 0x003f, 0x003f, 0xe4ea, 0xf2cf, 0x003f, 0xf7bf, 0x003f,
+    0x003f, 0xe2e6, 0xe2a8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3d6, 0x003f,
+    0xedd1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9f9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd6b1, 0xdeb2,
+    0x003f, 0x003f, 0xe0e8, 0x003f, 0x003f, 0xd3ab, 0x003f, 0xebdc,
+    0x003f, 0x003f, 0xdfaf, 0x003f, 0xcac3, 0x003f, 0x003f, 0xeefc,
+    0x003f, 0xfdc3, 0x003f, 0x003f, 0x003f, 0xebf6, 0xcfb2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd9ec, 0x003f, 0xd9bd, 0x003f, 0xd8df,
+    0x003f, 0x003f, 0xd4b8, 0xebbe, 0xddef, 0x003f, 0xddf0, 0xddf1,
+    0xddf2, 0x003f, 0x003f, 0xd9be, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xfbc6, 0xcfb3, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6c00 .. 0x6cff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xeefd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4ab,
+    0x003f, 0xdac5, 0x003f, 0xd8ec, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd1a8, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe2a9, 0x003f, 0x003f, 0xdebc,
+    0xe7b5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdbf0, 0x003f,
+    0xefe2, 0xf1f0, 0xcfb4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdbf1, 0x003f,
+    0xe0b1, 0x003f, 0x003f, 0x003f, 0x003f, 0xdfa5, 0x003f, 0xf9d2,
+    0x003f, 0x003f, 0xe7fd, 0x003f, 0x003f, 0xe6a3, 0xfbf1, 0xcbb0,
+    0xf2ae, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcde7, 0x003f, 0xe8dc, 0x003f, 0x003f, 0xe7d7, 0x003f, 0x003f,
+    0xf7c0, 0x003f, 0xd0e3, 0x003f, 0x003f, 0x003f, 0xdaa1, 0x003f,
+    0x003f, 0x003f, 0xccbd, 0x003f, 0x003f, 0xd1a9, 0xddcc, 0x003f,
+    0x003f, 0xe3fe, 0xd1aa, 0xe8aa, 0x003f, 0xeab6, 0xf9fa, 0xe6cc,
+    0xf6d8, 0x003f, 0x003f, 0x003f, 0xd4c7, 0x003f, 0x003f, 0x003f,
+    0xd9cb, 0x003f, 0xd9d2, 0xd3cb, 0xd8f7, 0xdaa9, 0xf5f8, 0x003f,
+    0x003f, 0xdede, 0xf2af, 0xf8a9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd8c8, 0x003f, 0x003f, 0xeec1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf9c1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xddf3, 0xeafa, 0x003f, 0xf6bd, 0xe1bb, 0xcdbf, 0xf4d4, 0xe6cd,
+    0x003f, 0xfccf, 0xfba2, 0x003f, 0xe0dc, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf4bb, 0xdad5, 0x003f, 0xf9b2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xfbf2, 0x003f, 0xdbf6, 0x003f, 0xdedf,
+    0x003f, 0x003f, 0x003f, 0xdbf2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf8dc, 0xf7ee, 0xebe8, 0x003f, 0xd2fa, 0x003f, 0x003f,
+    0xf1bc, 0x003f, 0x003f, 0xfada, 0x003f, 0x003f, 0xdaea, 0xdac6,
+    0xf7c1, 0x003f, 0x003f, 0xe7b6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6d00 .. 0x6dff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe5c7, 0xd6ac, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdcc7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1a9,
+    0x003f, 0xe2aa, 0x003f, 0xd5a6, 0x003f, 0x003f, 0xd4d7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2d0, 0x003f, 0xeafb,
+    0x003f, 0xe0dd, 0xfbf3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf1bd, 0x003f, 0x003f, 0xe2e7, 0xfdd7, 0x003f,
+    0xcec8, 0xeab7, 0x003f, 0xfcc0, 0x003f, 0xfde7, 0xf7ef, 0x003f,
+    0x003f, 0xd7b5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xefba, 0xf1dd, 0x003f, 0xdeb3, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe8cb, 0x003f, 0x003f, 0xf8dd, 0x003f,
+    0x003f, 0xfbc7, 0xd5c8, 0x003f, 0xd7df, 0x003f, 0xdda9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe9b1, 0x003f, 0x003f, 0xfaad,
+    0xf6d9, 0xfaf4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf8aa,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6ee, 0x003f, 0xccdc,
+    0xe1bc, 0xe0ef, 0x003f, 0x003f, 0xe9bf, 0xfcfd, 0xe6ce, 0x003f,
+    0x003f, 0xe1d7, 0x003f, 0xe6cf, 0x003f, 0xf4f1, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4f3,
+    0x003f, 0x003f, 0xe4fb, 0x003f, 0x003f, 0xf9e4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xefe3, 0x003f, 0x003f, 0xcfee, 0xf6be, 0xe0b2, 0xfcfe, 0xd1ab,
+    0x003f, 0x003f, 0x003f, 0xd7fa, 0x003f, 0x003f, 0x003f, 0xfbc8,
+    0x003f, 0xe2d7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd4a3, 0xf0f8, 0xd7a8, 0x003f, 0x003f, 0x003f, 0xe1e7, 0x003f,
+    0x003f, 0xd3bf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xefe4, 0x003f, 0xd7c5, 0xebe2, 0x003f, 0x003f, 0xfce7, 0x003f,
+    0x003f, 0xe4a2, 0x003f, 0xe2e8, 0x003f, 0xe6d0, 0x003f, 0xfbe8,
+    0xf4e8, 0xe5f4, 0xf4bc, 0xf4d5, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6e00 .. 0x6eff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdfb6,
+    0x003f, 0xfcb9, 0xeec2, 0xcaf5, 0x003f, 0x003f, 0x003f, 0xefe5,
+    0xcbe2, 0xd4a4, 0x003f, 0xdee0, 0xdafd, 0xe4c6, 0xe8be, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe0de, 0xf6b4, 0xead2, 0x003f, 0xf9fb,
+    0x003f, 0x003f, 0xe0c2, 0x003f, 0xcae4, 0x003f, 0xe7b7, 0x003f,
+    0xeafd, 0x003f, 0xd9dd, 0x003f, 0xdab4, 0xeeaa, 0xfbe9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdbcb, 0xdab5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf1be, 0x003f, 0x003f, 0xd3ac, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfbc9, 0x003f,
+    0xdfcf, 0x003f, 0x003f, 0xd3c0, 0xe3d7, 0x003f, 0xefe6, 0xfcd0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9c0,
+    0x003f, 0x003f, 0x003f, 0xf5d3, 0x003f, 0x003f, 0xecdc, 0xf7b7,
+    0x003f, 0x003f, 0xeab8, 0xd1f9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdcc8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xeab9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1de, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd7b6, 0xcfb5, 0x003f, 0xd9a8,
+    0x003f, 0x003f, 0xecee, 0x003f, 0x003f, 0xddaa, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xcda2, 0xe8ae, 0x003f, 0x003f, 0x003f, 0xe1bd,
+    0x003f, 0xf2d1, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9c1, 0x003f,
+    0x003f, 0x003f, 0xd2fc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdbb5, 0x003f, 0xf3e7, 0xd8fe, 0x003f, 0x003f,
+    0x003f, 0xfcd1, 0x003f, 0xedb2, 0xf4af, 0x003f, 0xfba3, 0x003f,
+    0x003f, 0xfcc1, 0x003f, 0xeeab, 0xd4a5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf4f2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xeed9, 0x003f, 0x003f, 0x003f,
+    0xfbca, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcde3, 0xd8bb,
+    /* 0x6f00 .. 0x6fff */
+    0x003f, 0xe5db, 0xf8f7, 0x003f, 0x003f, 0x003f, 0xf6d4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd7a9,
+    0x003f, 0xcbc9, 0x003f, 0x003f, 0xe6d1, 0xf0cc, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd8ae, 0x003f, 0xf9d3, 0xd5fe, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd8bc, 0xf2b0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe2ab, 0xf3e8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xefc2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xedec,
+    0x003f, 0xe7b8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdafe, 0x003f, 0x003f, 0xccbe, 0x003f, 0x003f, 0xf2fc,
+    0xdaeb, 0x003f, 0xe2d8, 0xedd6, 0x003f, 0x003f, 0xd6d1, 0xe0b3,
+    0x003f, 0x003f, 0xfcd2, 0x003f, 0xebc8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd3c1, 0xf0cd, 0x003f,
+    0xcff7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xedd2, 0x003f, 0xd4d8, 0xdcc9, 0xd7f1, 0x003f,
+    0x003f, 0xdfbb, 0x003f, 0x003f, 0xf3a5, 0x003f, 0x003f, 0x003f,
+    0xf4cd, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1bf, 0xf8b1, 0x003f,
+    0xe9fa, 0x003f, 0x003f, 0x003f, 0xfbcb, 0x003f, 0x003f, 0xcad5,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf9d4, 0xf7ca, 0x003f, 0x003f, 0xd6c8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfce8, 0xf3bd,
+    0x003f, 0xeefe, 0x003f, 0xe7fe, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd3c2, 0x003f, 0x003f, 0x003f, 0x003f, 0xd3b6, 0x003f,
+    0xccad, 0xf6fa, 0xd6b2, 0xd2d8, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe7d8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3a5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe7b9, 0x003f, 0x003f, 0x003f, 0x003f, 0xf0ad,
+    0xfbcc, 0xeba1, 0x003f, 0x003f, 0xd4a6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xfbcd, 0x003f, 0xd5bd, 0xf1df, 0x003f, 0x003f, 0xf6fb,
+    0x003f, 0xdeb4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd5eb, 0x003f,
+    /* 0x7000 .. 0x70ff */
+    0x003f, 0xe5c8, 0x003f, 0x003f, 0x003f, 0xfba4, 0xd4b9, 0x003f,
+    0x003f, 0xdee1, 0x003f, 0xe4a3, 0x003f, 0x003f, 0x003f, 0xd7b7,
+    0x003f, 0xf8ee, 0x003f, 0x003f, 0x003f, 0xdeb5, 0x003f, 0x003f,
+    0xd6d2, 0x003f, 0xf9d5, 0xe7ba, 0xebd5, 0xd5f7, 0xefe7, 0xe1be,
+    0x003f, 0x003f, 0x003f, 0xfaae, 0x003f, 0x003f, 0x003f, 0xd6e9,
+    0xd6ee, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7bb,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeccb,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd5b3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xceb4, 0x003f, 0x003f, 0x003f,
+    0xfba5, 0xe1ee, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf7a8, 0x003f, 0x003f, 0x003f, 0x003f, 0xfbce, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd8bd, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xfbfd, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xfce9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcfb6, 0x003f, 0x003f, 0x003f, 0xedc7, 0xeeac, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xccdd, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf6a7, 0x003f, 0x003f, 0x003f, 0xe6fa, 0x003f,
+    0x003f, 0x003f, 0xf5a4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xfddc, 0xedb3, 0xcec9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xefe8, 0x003f, 0x003f, 0xe1bf, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xfadb, 0xcbe3, 0xf7a9, 0x003f, 0xfba6,
+    0x003f, 0x003f, 0x003f, 0xdcb9, 0x003f, 0x003f, 0x003f, 0xf1c0,
+    0xedc8, 0xefc3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd6ad, 0x003f, 0x003f, 0xfdce, 0x003f, 0x003f, 0x003f, 0xe8a1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xfbf4, 0xd5a7, 0x003f, 0x003f, 0x003f, 0xf1f6, 0x003f, 0xe6d3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xccde, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf8b2, 0x003f, 0x003f, 0x003f, 0xdceb, 0x003f, 0x003f,
+    /* 0x7100 .. 0x71ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0xfdb6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe5ea, 0x003f, 0x003f, 0xf1e0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdbcc, 0xddcd, 0x003f, 0x003f, 0x003f, 0xd4c8, 0x003f,
+    0x003f, 0xd9ed, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5a5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe6fb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6d4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfdc8,
+    0x003f, 0xd6a1, 0xfdbf, 0x003f, 0xfcd3, 0x003f, 0xefa1, 0x003f,
+    0xe7bc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd1ee, 0x003f,
+    0x003f, 0xe6d5, 0x003f, 0x003f, 0xe9f2, 0x003f, 0xdfb0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd8e0, 0xfcba, 0xfdaf, 0xf0ce,
+    0x003f, 0xdbe1, 0x003f, 0x003f, 0xe5c9, 0x003f, 0xedb4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0c3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe3d8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe9fb, 0xeaa8, 0x003f, 0x003f, 0x003f, 0x003f, 0xfdb7,
+    0x003f, 0x003f, 0xfba7, 0x003f, 0xe9c2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xfdf7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2d9,
+    0x003f, 0x003f, 0xdcec, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe8a2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe6f0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xfdf8, 0xfdf9, 0x003f, 0x003f, 0x003f, 0xf6bf, 0x003f,
+    0x003f, 0xe7a7, 0x003f, 0xe6d7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd4f3, 0xd4c9, 0x003f, 0x003f, 0x003f, 0x003f, 0xd6fa, 0x003f,
+    0xd7f2, 0x003f, 0xe1c0, 0x003f, 0xdbe2, 0xe6d8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7bd,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf0cf, 0xf3be, 0xe2ac,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5b7, 0xe0f0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xfdb8, 0xe3e8, 0x003f, 0xd4a7, 0xe8fc,
+    /* 0x7200 .. 0x72ff */
+    0xfad2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf8ef, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd6d3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd5b4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf0d0, 0x003f, 0xf7f0, 0xeeb3, 0x003f, 0x003f,
+    0xeaba, 0x003f, 0xead3, 0x003f, 0x003f, 0xedc9, 0xddab, 0x003f,
+    0x003f, 0x003f, 0xe5ac, 0xfda1, 0x003f, 0xdfd0, 0xecb3, 0x003f,
+    0xdfd1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeded, 0xf8b8,
+    0xf7fa, 0x003f, 0x003f, 0x003f, 0xf8ab, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf4e0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd4ba, 0xe4b3, 0x003f, 0xe9da, 0x003f, 0xdeb6, 0x003f, 0xd9bf,
+    0x003f, 0xd9c0, 0xd6ef, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9cc,
+    0x003f, 0xdaaa, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdfe5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf7e5, 0x003f, 0x003f, 0x003f, 0xccb2, 0x003f, 0x003f,
+    0xdff9, 0xd7e0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd4bb, 0x003f, 0x003f, 0x003f, 0x003f, 0xfdfa,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xccb3, 0x003f, 0x003f, 0xdbf3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdfd2, 0x003f, 0xceca, 0x003f, 0xeeda, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4e4, 0x003f,
+    0xfbcf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcfb7,
+    0x003f, 0xeec3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xceea, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe2ad, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd7e1, 0xfaf5, 0x003f, 0x003f, 0xd5c9, 0xf8ac, 0x003f, 0x003f,
+    /* 0x7300 .. 0x73ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe7d9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3e9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd8ed, 0xe3c4, 0xf0f1, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8e5, 0x003f, 0x003f,
+    0x003f, 0xe0fa, 0xeec4, 0xd9de, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeba2, 0xeba3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfcc2, 0xeabb,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe8ab, 0xdee2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xedef, 0x003f, 0xe8a3, 0x003f, 0x003f, 0x003f, 0x003f, 0xcff1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd4bc, 0x003f, 0xfcea, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe7be, 0x003f, 0xfcf2, 0x003f, 0x003f, 0xd6b4, 0x003f, 0x003f,
+    0xe2ae, 0x003f, 0xd3b7, 0xfacc, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xfadc, 0x003f, 0xedb5, 0xe1e3,
+    0x003f, 0xe8ac, 0x003f, 0xe8dd, 0x003f, 0x003f, 0xefe9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf4bd, 0x003f, 0xcfb8, 0xe9db,
+    0xd1ac, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdac7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xebc9,
+    0x003f, 0xe8cc, 0x003f, 0x003f, 0x003f, 0xdeb7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd6bc, 0xd3e5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xfadd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdad6, 0x003f, 0xcab1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdac8, 0xdfa6, 0x003f, 0xf9b3, 0xf2d2, 0x003f, 0xcac4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcecb, 0x003f,
+    0x003f, 0xcdf5, 0x003f, 0x003f, 0x003f, 0xfdb0, 0xd5a8, 0x003f,
+    0xf1c1, 0x003f, 0x003f, 0xe2e9, 0xdcca, 0xecb4, 0xfac0, 0x003f,
+    0x003f, 0xfba8, 0xd0a8, 0x003f, 0x003f, 0xdaec, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9ee,
+    0x003f, 0xe0fb, 0x003f, 0x003f, 0x003f, 0xefea, 0xfade, 0x003f,
+    /* 0x7400 .. 0x74ff */
+    0x003f, 0xe0c4, 0x003f, 0xcfb9, 0x003f, 0xd5ca, 0xd7e2, 0xe2af,
+    0x003f, 0xd7b8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe8cd, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf6da, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xefa2, 0xe2da, 0xf6fc, 0x003f, 0x003f, 0xfbd0, 0xd1ad, 0x003f,
+    0xcde4, 0x003f, 0xd1ae, 0xdced, 0xe8ce, 0x003f, 0xf0f9, 0xceb5,
+    0xe6fc, 0x003f, 0x003f, 0xd7fb, 0xd0d6, 0xddf5, 0xf7f1, 0x003f,
+    0xf6fd, 0x003f, 0xdbf7, 0x003f, 0x003f, 0x003f, 0x003f, 0xfbea,
+    0xe9dc, 0xd9c1, 0x003f, 0xf5f2, 0xe0c5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xead4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf9c2, 0x003f, 0xeabc,
+    0x003f, 0xd2c5, 0xfbd1, 0xe7c0, 0xeba5, 0x003f, 0xdffa, 0xe3a2,
+    0xd7b9, 0x003f, 0xe9c3, 0x003f, 0xe8fd, 0xe8af, 0x003f, 0x003f,
+    0xf2d3, 0xfba9, 0xd8a5, 0x003f, 0x003f, 0x003f, 0x003f, 0xd5cb,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd0c8, 0x003f,
+    0x003f, 0x003f, 0xd1af, 0xd7e3, 0x003f, 0x003f, 0x003f, 0xe0c6,
+    0x003f, 0xd6a2, 0x003f, 0xedf0, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd7f3, 0x003f, 0x003f, 0x003f, 0xfcd4, 0x003f, 0xdad7, 0xccdf,
+    0x003f, 0xf2d4, 0x003f, 0xd1b0, 0x003f, 0xcce0, 0x003f, 0xdbfd,
+    0xf3bf, 0x003f, 0xf0d1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xfcbb, 0x003f, 0xe2b0, 0x003f, 0x003f, 0xe6a5, 0x003f, 0x003f,
+    0x003f, 0xe2db, 0x003f, 0x003f, 0x003f, 0xdfde, 0x003f, 0xe0c7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2ef, 0x003f,
+    0x003f, 0x003f, 0xcce1, 0x003f, 0x003f, 0x003f, 0x003f, 0xd6ea,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe7c2, 0x003f, 0x003f, 0x003f,
+    0xceb6, 0x003f, 0xf3c0, 0x003f, 0xcdfe, 0x003f, 0x003f, 0x003f,
+    0xfbd2, 0x003f, 0xf8f8, 0xf7fb, 0x003f, 0x003f, 0xe8bf, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8b7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xedb6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x7500 .. 0x75ff */
+    0x003f, 0xdcba, 0x003f, 0x003f, 0xccb4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf1f7, 0x003f, 0x003f, 0x003f, 0xe8b8, 0x003f, 0x003f,
+    0xcaf6, 0x003f, 0xe4a4, 0xf4d6, 0x003f, 0x003f, 0x003f, 0xdfe6,
+    0x003f, 0x003f, 0x003f, 0xdfa7, 0x003f, 0xdfe7, 0xe1c1, 0x003f,
+    0xe9c4, 0x003f, 0x003f, 0xdccb, 0xe9c5, 0x003f, 0x003f, 0x003f,
+    0xefa3, 0xeba6, 0xcba3, 0xe3e9, 0x003f, 0x003f, 0x003f, 0xd1fb,
+    0xefa4, 0x003f, 0xefeb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd0b4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xcda3, 0x003f, 0x003f, 0xe8e6,
+    0x003f, 0xefa5, 0x003f, 0xd3cc, 0xdaed, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd7ba, 0x003f, 0xf2d5, 0xf5e5, 0xd9ef, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf9b4, 0x003f, 0x003f, 0xd5d4, 0xfdcf, 0x003f,
+    0x003f, 0x003f, 0xdbe3, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1e1,
+    0xecb6, 0x003f, 0x003f, 0x003f, 0x003f, 0xfbfe, 0xd3d7, 0x003f,
+    0xd1b1, 0x003f, 0xcbb1, 0x003f, 0x003f, 0x003f, 0x003f, 0xd1b2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcbb2, 0xf1c2,
+    0x003f, 0x003f, 0xf4e1, 0xf9b5, 0x003f, 0x003f, 0xe1c3, 0xe1c2,
+    0x003f, 0xebf7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdfa8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcbca, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe6b9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf8de, 0xf9aa, 0xcaf7, 0x003f, 0xedb7, 0x003f, 0x003f,
+    0xd3b8, 0xf2d6, 0x003f, 0x003f, 0xd4d9, 0xeec5, 0xf2f0, 0x003f,
+    0x003f, 0x003f, 0xcab2, 0x003f, 0x003f, 0xdcbb, 0x003f, 0xf1f8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xecb7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe5ca, 0x003f, 0xf6c0, 0xfddd, 0x003f, 0x003f,
+    0xd4e3, 0xcce2, 0x003f, 0xf7d4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd7e5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd3c3, 0x003f, 0xd8a6, 0x003f, 0xf6c1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xddf6, 0x003f, 0xcdc0, 0x003f, 0x003f, 0x003f,
+    /* 0x7600 .. 0x76ff */
+    0xe5dc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5cb, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe1c4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8b0,
+    0xf4b0, 0xf3ea, 0xdaee, 0x003f, 0xd7bb, 0x003f, 0xe2b1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd7aa, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd6fb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe4df, 0x003f, 0xcad6, 0x003f,
+    0x003f, 0x003f, 0xeba8, 0x003f, 0x003f, 0x003f, 0xdbfe, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf6c2, 0x003f, 0x003f, 0xefbb, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd4fd, 0x003f, 0x003f, 0xe0c8, 0x003f, 0x003f, 0x003f,
+    0xe8b9, 0x003f, 0xefa6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcda4, 0x003f, 0x003f, 0xd4f4, 0xdba1, 0xdbdc, 0xdbdd, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xeedc, 0x003f, 0xcbcb, 0xfcd5,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xceeb, 0x003f,
+    0xcdc1, 0x003f, 0x003f, 0xfbd3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf9ab, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf5d4, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9a9,
+    0x003f, 0x003f, 0xe9dd, 0xdbcd, 0x003f, 0x003f, 0xddce, 0x003f,
+    0xe7c3, 0x003f, 0xeccc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf9ec, 0x003f, 0x003f, 0x003f, 0xcbcc, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe0fc, 0xd4a8, 0x003f, 0xedd3, 0xd8ef,
+    0x003f, 0xf2d7, 0x003f, 0xcaf8, 0xdaef, 0x003f, 0x003f, 0xd6d4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9cd, 0x003f,
+    0x003f, 0x003f, 0xd8ee, 0x003f, 0xf2c1, 0x003f, 0x003f, 0x003f,
+    0xdfd3, 0x003f, 0x003f, 0x003f, 0xdaf0, 0x003f, 0xe2ea, 0x003f,
+    /* 0x7700 .. 0x77ff */
+    0x003f, 0xe0fd, 0x003f, 0x003f, 0xd8f8, 0x003f, 0x003f, 0x003f,
+    0xf7af, 0xdab6, 0x003f, 0xcad7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2d8, 0x003f,
+    0xd8f9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xfadf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcfef,
+    0xd9c2, 0x003f, 0xf0d2, 0x003f, 0xe4d1, 0x003f, 0x003f, 0x003f,
+    0xf3b7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfae0, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xefec, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe2b2, 0x003f, 0xd4bd, 0x003f, 0x003f, 0xd9ce, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf4e2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd4a9, 0x003f, 0x003f, 0x003f, 0x003f, 0xcdc2, 0xe7da,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf2d9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd9aa, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd8be, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdcad, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe2eb, 0xd6fc, 0x003f, 0x003f,
+    0xcaf9, 0x003f, 0x003f, 0xd4da, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf4d7, 0xcca1, 0x003f, 0x003f, 0xcfba,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5b8,
+    0x003f, 0x003f, 0x003f, 0xd9c3, 0xd0e8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe3c5, 0xebf8, 0x003f, 0xf2b1, 0x003f, 0x003f,
+    0x003f, 0xcfbb, 0x003f, 0x003f, 0x003f, 0xd3ad, 0xe8e1, 0xceec,
+    0x003f, 0x003f, 0x003f, 0xe0b4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x7800 .. 0x78ff */
+    0x003f, 0x003f, 0xdee3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xddf7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2b2, 0xf3f6, 0xf6db,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd7fe, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf8df, 0x003f, 0xf7f2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd0a9, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6da,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5a6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd7bc, 0xcce3, 0x003f, 0x003f, 0xe6db,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdddd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd1b3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xefed,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd6de, 0xe4f4, 0xe1ef, 0x003f,
+    0x003f, 0xddf8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8cf,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xcae5, 0x003f, 0x003f, 0x003f, 0xdca1,
+    0x003f, 0xe0b5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xfcac, 0xfcad, 0xd8a7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xedb8, 0x003f, 0x003f, 0x003f, 0xdbb6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd6f0, 0xf3af, 0x003f, 0x003f, 0xcda5, 0x003f,
+    0xdaf1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd8a8, 0x003f, 0x003f, 0x003f, 0xcce4, 0x003f, 0x003f, 0xd1b4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcad8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdaf2, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x7900 .. 0x79ff */
+    0x003f, 0xf5a7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5a8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6a6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd5ec, 0xd5f8, 0xdaf3, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe3c6, 0x003f, 0x003f, 0x003f, 0xdee4, 0x003f,
+    0xdee5, 0xd1b5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd1b6,
+    0xd1b7, 0xf2b3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe9de, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf0d3, 0xf2b4,
+    0x003f, 0x003f, 0xf0d4, 0xcbe4, 0xfbd4, 0xf5e6, 0xe3ea, 0x003f,
+    0xdee6, 0x003f, 0x003f, 0x003f, 0x003f, 0xdfd4, 0x003f, 0x003f,
+    0xf8f9, 0x003f, 0x003f, 0x003f, 0x003f, 0xf0ae, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd1b8, 0x003f, 0x003f, 0x003f, 0x003f, 0xd6df,
+    0x003f, 0xd0d7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfca1, 0xefee, 0xdcd8,
+    0x003f, 0xe9df, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5dd, 0xfdfb,
+    0x003f, 0x003f, 0xe0c9, 0x003f, 0x003f, 0x003f, 0xd6c9, 0x003f,
+    0x003f, 0xd4aa, 0x003f, 0xe5cc, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe9e0, 0x003f, 0x003f, 0x003f, 0xd0d8, 0xfca2, 0xd4be,
+    0xe2b3, 0xdee7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdcbc, 0xd2b6, 0xf5d5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcea1, 0xf5a9, 0x003f, 0x003f, 0xddf9, 0x003f, 0x003f,
+    0xddfa, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf0d5,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf6df, 0x003f, 0xf2da, 0xe4eb,
+    0x003f, 0xf2f1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xecb9, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x7a00 .. 0x7aff */
+    0xfdfc, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1aa, 0x003f, 0x003f,
+    0xcad9, 0x003f, 0x003f, 0xefef, 0x003f, 0xf5aa, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xecf9, 0x003f, 0x003f, 0xf8ad,
+    0x003f, 0xf2c2, 0xf6c3, 0x003f, 0xd7d2, 0x003f, 0x003f, 0xf9a2,
+    0xf0d6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf0fa, 0x003f,
+    0x003f, 0xf6e0, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9f3, 0xf2c3,
+    0x003f, 0x003f, 0x003f, 0xd4ab, 0xcab3, 0xcda6, 0x003f, 0xcdc3,
+    0xcdda, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9cf, 0x003f,
+    0x003f, 0xf6c4, 0x003f, 0x003f, 0x003f, 0xeedd, 0xe7c4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2b4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdfe2, 0xe7db, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe8b1, 0x003f, 0xfcae, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe5cd, 0x003f, 0x003f, 0x003f, 0xfaeb, 0x003f, 0xcfbc, 0x003f,
+    0x003f, 0xcfe2, 0xcdf6, 0x003f, 0x003f, 0xeff0, 0x003f, 0xf4be,
+    0x003f, 0xd4cd, 0x003f, 0x003f, 0xf3b8, 0x003f, 0x003f, 0x003f,
+    0xe9a1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf2f2, 0xf3eb, 0x003f, 0xf0d7, 0x003f, 0x003f,
+    0xcfd7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcfdf,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe8c0, 0xe8c1, 0x003f, 0x003f, 0x003f, 0xcfe3, 0xe9a2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd0aa, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf3c1, 0xd0ab, 0x003f, 0xd4e4,
+    0x003f, 0x003f, 0xefbc, 0xd8a1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9df,
+    0x003f, 0xf3d7, 0x003f, 0x003f, 0x003f, 0xdcbd, 0x003f, 0xcce5,
+    0xedf1, 0x003f, 0x003f, 0xf1e2, 0x003f, 0xd4db, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe2b5, 0x003f, 0x003f, 0xcae6, 0x003f, 0xd3ae,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcce6, 0x003f,
+    0x003f, 0xf1d3, 0xf5e7, 0x003f, 0x003f, 0x003f, 0x003f, 0xcada,
+    /* 0x7b00 .. 0x7bff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfbee,
+    0x003f, 0xe1c5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdfe9, 0x003f, 0xeede, 0x003f, 0x003f, 0xf7c2, 0x003f,
+    0xd8a2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xddac, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf0af, 0xd6bd, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe1ab, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf9b6, 0x003f,
+    0x003f, 0xd4f5, 0x003f, 0xd0c9, 0xefa7, 0xe2ec, 0x003f, 0xdbea,
+    0xcecc, 0xf5e8, 0xf7d5, 0x003f, 0xd3cd, 0x003f, 0xf3fe, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd0b5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe0fe, 0x003f, 0xdffb, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6dd, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8a4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcbcd,
+    0x003f, 0x003f, 0x003f, 0xefa8, 0x003f, 0x003f, 0x003f, 0xeeb4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdad8, 0xd1b9, 0x003f, 0xdfa9,
+    0x003f, 0x003f, 0xf3b0, 0x003f, 0x003f, 0xccc4, 0x003f, 0x003f,
+    0x003f, 0xceb7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xefa9, 0x003f, 0x003f,
+    0x003f, 0xdfd5, 0x003f, 0x003f, 0xedd7, 0x003f, 0x003f, 0x003f,
+    0xeec6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xefbd, 0xfcd6, 0x003f, 0x003f, 0xdbf4, 0x003f, 0xefaa, 0xf8b9,
+    0x003f, 0xf5e9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe3d9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe1c6, 0x003f, 0x003f, 0x003f, 0xd4bf, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdee8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x7c00 .. 0x7cff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf0ea,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf3c2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd3af, 0x003f,
+    0x003f, 0xcadb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfcd7,
+    0x003f, 0x003f, 0xedd8, 0xe1c7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf4d8, 0xd6b3, 0xddad,
+    0x003f, 0x003f, 0x003f, 0xd5be, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf1c3, 0xeedf, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd6eb, 0x003f, 0x003f, 0x003f, 0xf4d9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd7e6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdab7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xddfb, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xddcf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd8a3, 0x003f, 0x003f, 0xdad9, 0x003f, 0xf0d8,
+    0xefc4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1d8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1d4, 0x003f, 0xedf2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd5db, 0x003f,
+    0x003f, 0xd5dc, 0xf3c4, 0xcbd7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe2b6, 0x003f, 0x003f, 0x003f, 0x003f, 0xeff1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xfbd5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd3d8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xddd0, 0xf0d9,
+    0xcbb3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd5dd,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xcda7, 0x003f, 0x003f, 0xd0ac, 0x003f,
+    /* 0x7d00 .. 0x7dff */
+    0xd1ba, 0x003f, 0xf1c4, 0x003f, 0xe5b3, 0xfbf5, 0xe9e1, 0xfde0,
+    0xfcbc, 0x003f, 0xdaa2, 0xdaa3, 0x003f, 0xd2a1, 0x003f, 0x003f,
+    0xd2ef, 0x003f, 0x003f, 0x003f, 0xe2ed, 0x003f, 0x003f, 0xdee9,
+    0xcedc, 0xf2b5, 0xd0e4, 0xddd1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe1c8, 0xdbb7, 0xdfe3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xedb9, 0xf1c5, 0x003f, 0xf3cf, 0xd7ab,
+    0xe1ac, 0x003f, 0x003f, 0xe3eb, 0x003f, 0xeec7, 0x003f, 0x003f,
+    0x003f, 0xe1c9, 0xcafa, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf0fb, 0xfae1, 0xf0da, 0xcce7, 0xdaf4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xccbf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xceed, 0x003f,
+    0x003f, 0xd5a9, 0xfae2, 0x003f, 0x003f, 0x003f, 0xd0e5, 0x003f,
+    0xebd6, 0x003f, 0xecdf, 0x003f, 0x003f, 0x003f, 0xdffc, 0x003f,
+    0x003f, 0xf7d6, 0xdeea, 0xcbb4, 0x003f, 0x003f, 0xefbe, 0x003f,
+    0x003f, 0xccb5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcfbd,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeff2, 0xe2b7,
+    0x003f, 0x003f, 0x003f, 0xcce8, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf0fc, 0x003f, 0x003f, 0x003f,
+    0xd6e0, 0x003f, 0xf1c6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe2b8, 0xebab, 0x003f, 0x003f,
+    0x003f, 0xcbb5, 0xd8d1, 0x003f, 0xf4ce, 0xf3f7, 0x003f, 0x003f,
+    0xd7c6, 0x003f, 0xd1bb, 0xf7aa, 0x003f, 0xedca, 0xd7d3, 0xd8fa,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf6c5,
+    0x003f, 0x003f, 0xd1cc, 0xddfc, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdffd, 0x003f,
+    0xf9e5, 0x003f, 0xe0ca, 0x003f, 0x003f, 0xf2fd, 0xd3b0, 0x003f,
+    0xf4f3, 0xdac9, 0x003f, 0xe6de, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf8ba, 0xe8d0, 0x003f, 0x003f, 0xd8fb, 0x003f, 0x003f, 0xead5,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd6a3, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf6c6, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x7e00 .. 0x7eff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf2db, 0xe4fc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8b2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdada, 0x003f, 0xf2dc, 0xfbd6, 0xe9b2,
+    0x003f, 0xeead, 0x003f, 0xfae3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdcee, 0x003f, 0x003f, 0xf5ea, 0xe6e0,
+    0x003f, 0xf0fd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd7ac,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5c5, 0xeee0, 0x003f,
+    0x003f, 0xdbe5, 0x003f, 0xddde, 0x003f, 0x003f, 0xd9f0, 0xe9a3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf1f9, 0x003f, 0xf2c4, 0xe0cb, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9a4, 0x003f,
+    0x003f, 0xe2b9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe3b1, 0xfceb, 0xcda8, 0x003f, 0xccb6, 0x003f, 0x003f,
+    0xf0db, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe6ba, 0x003f, 0x003f, 0xcda9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf3c3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe1d9, 0x003f, 0x003f, 0xefab,
+    0x003f, 0x003f, 0x003f, 0xe7c5, 0x003f, 0x003f, 0xe0e9, 0x003f,
+    0xf3c5, 0x003f, 0x003f, 0xd4c0, 0xd5bf, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x7f00 .. 0x7fff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xddae, 0x003f,
+    0xf9fc, 0x003f, 0xccc0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe5a2, 0x003f, 0x003f, 0x003f,
+    0xceb8, 0x003f, 0x003f, 0x003f, 0xd8d2, 0xf9d6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf1aa, 0xced1, 0x003f, 0x003f, 0xf6c7, 0x003f,
+    0xdbeb, 0x003f, 0xdffe, 0x003f, 0x003f, 0xd8e1, 0x003f, 0xf7f3,
+    0x003f, 0xd7e7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd4fe, 0x003f, 0x003f,
+    0xd1bc, 0x003f, 0xe5cf, 0x003f, 0xcbb6, 0x003f, 0xdab8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xcdc4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd6be, 0x003f, 0x003f, 0x003f, 0xe2ba, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xcfd8, 0x003f, 0x003f, 0x003f,
+    0xe0cc, 0xebf9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xfdfd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd7e8, 0xcbd8, 0x003f, 0x003f, 0x003f, 0xe9e2, 0x003f, 0x003f,
+    0x003f, 0xe8ba, 0x003f, 0x003f, 0x003f, 0xe3c7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeccd, 0x003f, 0xecce, 0x003f, 0xd6bf, 0x003f,
+    0x003f, 0x003f, 0xe3a7, 0x003f, 0xdfd6, 0xfde8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeee1,
+    0xf6a8, 0xddfd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf8bb, 0x003f, 0xe8d1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf9d7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xceee, 0x003f, 0x003f, 0xeccf, 0x003f, 0x003f, 0x003f,
+    /* 0x8000 .. 0x80ff */
+    0xe9a5, 0xd6d5, 0x003f, 0xcdc5, 0x003f, 0xedba, 0xd1bd, 0x003f,
+    0x003f, 0xcfbe, 0x003f, 0x003f, 0xecbb, 0x003f, 0x003f, 0x003f,
+    0xd2b1, 0x003f, 0x003f, 0x003f, 0x003f, 0xcce9, 0x003f, 0xd9c4,
+    0xe9fc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd1be, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xecbc, 0x003f, 0x003f, 0xe5ad, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf7b0, 0x003f, 0xccea,
+    0x003f, 0x003f, 0x003f, 0xd3c4, 0x003f, 0x003f, 0xd6c0, 0x003f,
+    0x003f, 0x003f, 0xd6fd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1a1, 0x003f,
+    0xdebd, 0x003f, 0xf6a9, 0x003f, 0x003f, 0x003f, 0xdaa4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd6a4,
+    0xf5c6, 0x003f, 0xe1a2, 0xe9c6, 0x003f, 0x003f, 0x003f, 0xf2c5,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf4e9, 0xd6ec, 0xebd3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xecbd, 0xe2dc, 0xdeeb, 0xf0dc,
+    0x003f, 0xebbf, 0x003f, 0xd7ce, 0xd1bf, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5ab, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf9fd, 0x003f, 0xcadc, 0x003f, 0x003f,
+    0x003f, 0xcdc6, 0xf2b6, 0x003f, 0x003f, 0xddfe, 0x003f, 0x003f,
+    0x003f, 0xccb7, 0xdbb8, 0x003f, 0x003f, 0x003f, 0x003f, 0xd0e9,
+    0x003f, 0xcedd, 0xebc0, 0x003f, 0xfda2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf8cb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xead6, 0xf1b0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdbce, 0x003f, 0xf7c3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdbcf, 0xcba4, 0x003f, 0x003f, 0xf8e0, 0x003f,
+    0x003f, 0xfbd7, 0x003f, 0x003f, 0xebca, 0xe0a1, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcecd, 0x003f, 0x003f, 0xd4dc, 0x003f, 0x003f, 0x003f,
+    0xfdd8, 0x003f, 0x003f, 0x003f, 0x003f, 0xd2f6, 0x003f, 0x003f,
+    /* 0x8100 .. 0x81ff */
+    0x003f, 0x003f, 0xf2b7, 0x003f, 0x003f, 0xfaf6, 0xf6aa, 0xfaf7,
+    0xd8e6, 0x003f, 0xf4b1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe8d2, 0x003f, 0xcac5, 0xcceb, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe2ee, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe2bb, 0x003f, 0xf7ad, 0x003f, 0x003f, 0x003f, 0xf8e1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf3ec, 0x003f, 0x003f, 0x003f, 0x003f, 0xdea1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe4fd, 0x003f, 0x003f, 0xe3ec, 0x003f,
+    0xddaf, 0xddb0, 0x003f, 0x003f, 0xcbb7, 0xe8d3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1a3, 0xd2e0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf0fe, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe9a6, 0xcbf2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xedf3, 0xdcd9, 0xe0cd, 0x003f, 0x003f, 0x003f, 0x003f, 0xf7da,
+    0xdbb9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xccae, 0x003f, 0xdadb, 0x003f, 0x003f, 0x003f, 0x003f, 0xcdc7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xddb1, 0x003f, 0xd8af, 0xe3a3, 0x003f, 0x003f,
+    0xceef, 0x003f, 0x003f, 0xf2f3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf8b3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe0ce, 0x003f, 0xf5fd, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xebec, 0x003f, 0x003f, 0xd3c5, 0xfcec, 0xd2db,
+    0xd4eb, 0x003f, 0xdea2, 0x003f, 0x003f, 0x003f, 0xe5e6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf0b0, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd5c4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xedf4,
+    0x003f, 0x003f, 0x003f, 0xe3ed, 0x003f, 0xe8c2, 0x003f, 0xedf5,
+    0xd7fc, 0x003f, 0xedbb, 0x003f, 0x003f, 0xf6ab, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf2b8, 0xf6c8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd3e6, 0xf2dd, 0xcfbf, 0x003f, 0xebac, 0x003f,
+    /* 0x8200 .. 0x82ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcfc0, 0x003f, 0xe6a8,
+    0xfde9, 0x003f, 0xcfc1, 0x003f, 0xe0df, 0xdeec, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe0a2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf4bf, 0xe2ef, 0x003f, 0xd9f1, 0xf1c7,
+    0x003f, 0xcbb8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf9fe, 0xdbba, 0xdaf5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf6ec, 0xdadc, 0xfae4,
+    0x003f, 0xe0cf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xddb2, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6a9, 0x003f, 0xeff3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf3ed, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xebfa, 0x003f, 0xf9e6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcadd, 0xd5de,
+    0x003f, 0xcade, 0xdfe4, 0x003f, 0x003f, 0x003f, 0xe6fd, 0x003f,
+    0xf5ac, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4f5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe9e3, 0x003f, 0xedcb, 0xcfe4, 0x003f,
+    0x003f, 0x003f, 0xd8d3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xddb3, 0xd4ec, 0x003f, 0x003f, 0xf2b9, 0x003f, 0xdfb7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcbce, 0xfbd8, 0x003f,
+    0x003f, 0xd0d9, 0x003f, 0x003f, 0xddd2, 0xf7f4, 0xe7dc, 0xe4a5,
+    0x003f, 0xfca3, 0x003f, 0xdbbb, 0x003f, 0x003f, 0x003f, 0xf2ba,
+    0xe9fd, 0xd0ca, 0x003f, 0xf5d6, 0xd9c5, 0xe4b4, 0x003f, 0xeda7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeabd, 0xe6fe, 0x003f, 0xf7c4, 0xf5ad, 0x003f, 0xd9e0,
+    0x003f, 0x003f, 0x003f, 0xcab4, 0x003f, 0x003f, 0xf8e2, 0xcfc2,
+    0x003f, 0xecbe, 0x003f, 0x003f, 0x003f, 0xe5b4, 0xcdc8, 0xeec8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe7c8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcdc9, 0xf9b7, 0x003f,
+    /* 0x8300 .. 0x83ff */
+    0x003f, 0xf1e8, 0xd9f2, 0xdbf5, 0xcab5, 0xd9c6, 0x003f, 0x003f,
+    0x003f, 0xd8c9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9ab,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xedbc, 0x003f, 0x003f, 0xd8d4, 0x003f, 0x003f, 0x003f, 0xdcda,
+    0x003f, 0xe2bc, 0x003f, 0x003f, 0xfced, 0xece0, 0xd2fe, 0x003f,
+    0xe9c7, 0xe6aa, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe2f0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfabb,
+    0x003f, 0xf5ae, 0xfbaa, 0x003f, 0x003f, 0x003f, 0x003f, 0xecfb,
+    0x003f, 0xecbf, 0xfcd8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd4e5, 0x003f, 0x003f, 0x003f, 0xf9c3,
+    0x003f, 0x003f, 0x003f, 0xeee2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd7e9, 0xedf6, 0x003f, 0x003f, 0x003f, 0xdeed, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xccec, 0x003f,
+    0xe3ee, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8d4, 0x003f,
+    0x003f, 0x003f, 0xfaf8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xddb4, 0xe4b5, 0xd8b0, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd8d5, 0x003f, 0x003f,
+    0x003f, 0xf4ea, 0x003f, 0x003f, 0x003f, 0xceb9, 0x003f, 0x003f,
+    0x003f, 0xd6e1, 0xcfd2, 0x003f, 0xd0b6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xcea2, 0x003f, 0x003f, 0xf3ee, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf3f8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdccc, 0x003f, 0xd0cb, 0x003f, 0x003f, 0x003f, 0xfca4,
+    0xcdca, 0xd7d4, 0xdea3, 0x003f, 0xe4e0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeec9, 0x003f, 0x003f, 0x003f, 0xe2dd, 0x003f, 0x003f,
+    /* 0x8400 .. 0x84ff */
+    0x003f, 0x003f, 0x003f, 0xf5fe, 0xd4ac, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd5d1, 0x003f, 0xd8f0, 0xf8c3, 0xead7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf5d7, 0x003f, 0x003f, 0xd8bf, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xfdc0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xebad, 0x003f, 0x003f, 0x003f, 0x003f, 0xd5aa, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe7a8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeeca,
+    0x003f, 0x003f, 0x003f, 0xcae7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf8e3, 0x003f, 0xd4dd, 0x003f, 0x003f, 0xead8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xfbd9, 0xedf7, 0x003f, 0x003f, 0xe5b5,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd0ad, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf1f1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe2bd, 0x003f, 0x003f, 0x003f, 0xe3c8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd9d5, 0x003f, 0x003f, 0xdfaa, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdbbc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf8e4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf1fa, 0x003f, 0x003f, 0xe5b6, 0xf3ef, 0x003f, 0x003f, 0xfbda,
+    0xe1e0, 0x003f, 0xd9ac, 0x003f, 0xf5eb, 0x003f, 0xe0b6, 0x003f,
+    0x003f, 0xe9c8, 0x003f, 0xcbcf, 0x003f, 0xe3c9, 0x003f, 0x003f,
+    0x003f, 0xdeee, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe2be, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdcef, 0x003f, 0xd6a5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe2f1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd6fe, 0x003f, 0x003f, 0x003f,
+    /* 0x8500 .. 0x85ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd9a1, 0x003f, 0xd8c0, 0xdcdb, 0x003f, 0x003f, 0xedbd,
+    0xdfb8, 0x003f, 0xeaa5, 0x003f, 0x003f, 0x003f, 0xd7ad, 0x003f,
+    0x003f, 0xf3f9, 0x003f, 0xedf8, 0x003f, 0xf5c7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe1ca, 0xebe3, 0x003f, 0xf2de,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf8cc, 0x003f, 0xead9,
+    0x003f, 0xd3c6, 0x003f, 0xdbe6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf5af, 0x003f, 0x003f, 0x003f, 0x003f, 0xcef0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe9fe, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xfbb6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe2f2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcff2, 0xf7b9, 0xd9f3, 0x003f, 0x003f, 0xe1cb, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdadd, 0x003f, 0x003f, 0xdab9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xebfb,
+    0x003f, 0xcbb9, 0x003f, 0x003f, 0xedf9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe0e0, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf4c0, 0x003f,
+    0xfdbc, 0xdfb1, 0xe3ef, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0a3,
+    0xfdb9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf0b1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcdcb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xedbe, 0x003f, 0x003f, 0x003f, 0xd5c0, 0xe3f0, 0xedfa,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9e4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd5ed, 0xe7dd, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd4f6, 0xe5b7, 0x003f, 0x003f,
+    0x003f, 0xdbe7, 0xe2bf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeecb,
+    0x003f, 0x003f, 0xd7f4, 0xf0dd, 0x003f, 0x003f, 0x003f, 0xceab,
+    /* 0x8600 .. 0x86ff */
+    0x003f, 0x003f, 0xe7de, 0x003f, 0x003f, 0x003f, 0xd6d6, 0xe1cc,
+    0x003f, 0x003f, 0xe8b3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5ee, 0xdca2,
+    0x003f, 0x003f, 0xe0d0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd5b5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd5a1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfbdb, 0x003f,
+    0xf9cb, 0x003f, 0x003f, 0x003f, 0xcbf3, 0xf4a5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xfac8, 0xd6d7, 0x003f, 0xe9e5, 0xfbdc,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfdd0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xfbf6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdaa5, 0x003f, 0xdbbd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xece2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xcdf7, 0xf0de, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf6c9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdeef,
+    0x003f, 0x003f, 0x003f, 0xd3b1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xfcee, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe8c3, 0x003f, 0xf1c8, 0x003f, 0x003f, 0x003f, 0xcef1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf9ed, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2f4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4b6, 0x003f,
+    /* 0x8700 .. 0x87ff */
+    0xf5b9, 0x003f, 0xdcf0, 0xe3f1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe8a5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf2bb, 0x003f, 0xdea4, 0x003f, 0xdacc, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcae9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3da, 0x003f, 0xfcd9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeada,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf9c4, 0x003f,
+    0xe3a4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xfbdd, 0x003f, 0xefca, 0x003f,
+    0xe8c4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd5cc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xebd7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9ad,
+    0x003f, 0x003f, 0xfbab, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd3d9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd5a2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf6de, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdaf6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe0d1, 0x003f, 0x003f, 0xe9a8,
+    0x003f, 0x003f, 0xf5f9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xfaaf, 0x003f, 0xebfc, 0x003f, 0x003f, 0xe0ea, 0x003f,
+    /* 0x8800 .. 0x88ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3b2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd5c5,
+    0x003f, 0x003f, 0xf1e3, 0xd5ee, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcdcc, 0x003f, 0x003f, 0x003f, 0x003f, 0xedd9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd8c1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xfaec, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1eb, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xfabc, 0xe6e2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xfae5, 0xe2fa, 0x003f, 0x003f, 0x003f, 0xcab6,
+    0x003f, 0xe4b7, 0x003f, 0xeadb, 0x003f, 0xf5fa, 0x003f, 0x003f,
+    0x003f, 0xfbac, 0xcfc3, 0xebfd, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf8fa, 0x003f, 0x003f, 0xdfb9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe1f1, 0x003f, 0xd2a4, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5fb,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd0da, 0xd0db,
+    0x003f, 0xeabe, 0xd9b1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcab7, 0x003f, 0x003f, 0xd3e7, 0x003f, 0xf8e5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd3b2, 0x003f, 0x003f, 0x003f, 0xe2c0, 0xf2df,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcde5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf9ac, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xcdcd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeeae, 0xd6ae, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd7ea,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe7e0, 0xebae, 0x003f, 0x003f,
+    0x003f, 0xcfd9, 0x003f, 0x003f, 0xdccd, 0xedfb, 0x003f, 0xdef0,
+    0x003f, 0xd7eb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdea5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdfd7, 0xdbd0, 0xdbd1, 0x003f, 0x003f,
+    0xd5a3, 0x003f, 0x003f, 0x003f, 0x003f, 0xf0b2, 0x003f, 0x003f,
+    /* 0x8900 .. 0x89ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdcdc,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcae8, 0x003f, 0xf8e6, 0xdcce, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xeadc, 0xdbd2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9b3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf7db, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3a8, 0x003f,
+    0xd7ae, 0x003f, 0x003f, 0xe0e1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcbba, 0x003f, 0x003f, 0xe5d1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd0dc,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd5c1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd8ca, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe3a9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0a4,
+    0x003f, 0xe9a9, 0x003f, 0xd3c7, 0x003f, 0x003f, 0xdcdd, 0xf8ae,
+    0x003f, 0x003f, 0x003f, 0xccb8, 0x003f, 0x003f, 0x003f, 0xd0ae,
+    0x003f, 0x003f, 0x003f, 0xd8f2, 0x003f, 0x003f, 0xe3ca, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xccaf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd4ad, 0xf6d1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd0cc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xcac6, 0x003f, 0x003f, 0xd5c2, 0x003f, 0x003f,
+    0xceba, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xcac7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xfab0, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdfd8, 0x003f, 0x003f, 0x003f,
+    0xf5ba, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x8a00 .. 0x8aff */
+    0xe5eb, 0x003f, 0xeff4, 0xddb5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcdaa, 0x003f, 0xe3f2, 0x003f, 0xfbf7, 0x003f, 0xf7d0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xfdba, 0x003f, 0x003f, 0xfde1, 0xf6fe,
+    0xd1c0, 0x003f, 0x003f, 0xe8c5, 0x003f, 0xe4b8, 0x003f, 0xe1e8,
+    0x003f, 0x003f, 0x003f, 0xccc1, 0x003f, 0xd2ed, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdbbe, 0x003f, 0x003f, 0xe0e2, 0x003f, 0x003f,
+    0x003f, 0xfac9, 0x003f, 0x003f, 0xe1cd, 0x003f, 0xcab8, 0x003f,
+    0x003f, 0x003f, 0xf2e0, 0xf1c9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdef1, 0x003f, 0x003f, 0x003f, 0xf0df, 0xf8c4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xeecc, 0x003f, 0x003f, 0xdef2, 0x003f,
+    0xe7c9, 0x003f, 0xe2f3, 0xe7e1, 0x003f, 0x003f, 0xe3cb, 0x003f,
+    0x003f, 0xe3cc, 0x003f, 0x003f, 0x003f, 0xcff8, 0xefac, 0x003f,
+    0xfdfe, 0xfca5, 0xfab1, 0xdfd9, 0x003f, 0xe0d2, 0x003f, 0x003f,
+    0x003f, 0xf4da, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1ca, 0x003f, 0xcea3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf2bc, 0xece3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe0a5, 0x003f, 0xf7ab, 0x003f, 0x003f,
+    0xebaf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5de, 0x003f,
+    0xe1a4, 0xcdab, 0x003f, 0xd9f4, 0xe8a6, 0xcdce, 0xe1e9, 0x003f,
+    0xfcef, 0x003f, 0xe0e3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe2c1, 0x003f, 0xcea4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdea6, 0x003f, 0x003f, 0xebfe, 0x003f, 0xebdd, 0xf0e0,
+    0x003f, 0x003f, 0xf4db, 0x003f, 0xe2f4, 0x003f, 0x003f, 0xd3c8,
+    0x003f, 0x003f, 0x003f, 0xf4eb, 0x003f, 0xeeb5, 0x003f, 0xf5d8,
+    0x003f, 0x003f, 0xd5df, 0x003f, 0x003f, 0x003f, 0xd6e5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xebb0, 0xf4e3, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe3cd, 0x003f, 0x003f, 0x003f, 0x003f, 0xf4f4, 0xfab2,
+    0x003f, 0x003f, 0xeff5, 0xcadf, 0x003f, 0xebb1, 0xedbf, 0x003f,
+    0x003f, 0xfdc9, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4a6, 0xf9a4,
+    0xf0b3, 0x003f, 0xe5ec, 0x003f, 0x003f, 0x003f, 0xd1e7, 0x003f,
+    /* 0x8b00 .. 0x8bff */
+    0xd9c7, 0xe4d7, 0xeadd, 0x003f, 0xd4f7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdaba, 0x003f,
+    0xdacd, 0x003f, 0x003f, 0x003f, 0xf9cc, 0x003f, 0xe1da, 0xdbbf,
+    0x003f, 0xccc5, 0xecd0, 0xcbbb, 0x003f, 0xdef3, 0x003f, 0x003f,
+    0xe9aa, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd9c8, 0x003f, 0x003f, 0xeee3, 0xd7bd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xcfc4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd0cd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xfca6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf1fb, 0x003f, 0x003f, 0x003f, 0x003f, 0xfdd2, 0xd1c1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe3db, 0x003f, 0xd3c9, 0x003f, 0xdccf, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcced, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdea7, 0x003f, 0x003f, 0xe6bb,
+    0xeca1, 0x003f, 0x003f, 0x003f, 0xccb9, 0x003f, 0x003f, 0xfbde,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7e2, 0x003f, 0x003f,
+    0xd4c1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdca8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe2c2, 0x003f, 0xf3d8, 0xe5d3, 0x003f, 0x003f, 0xf3d9, 0x003f,
+    0x003f, 0x003f, 0xf3c6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x8c00 .. 0x8cff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcddb,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcdac,
+    0x003f, 0xfcc3, 0x003f, 0x003f, 0x003f, 0x003f, 0xd4e7, 0x003f,
+    0xd1c2, 0x003f, 0xf9a5, 0x003f, 0xe8d5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3ce, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd4ca, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdfda, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xfbdf, 0xe7e3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf8fb, 0xe3cf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf5b0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd8e7, 0x003f, 0xd9c9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf8af, 0xeff6, 0x003f,
+    0xddb6, 0xeeaf, 0xcdf8, 0x003f, 0x003f, 0x003f, 0x003f, 0xdeb8,
+    0xfca7, 0xf7fc, 0xf7b1, 0xcebb, 0xf4a1, 0x003f, 0x003f, 0xeecd,
+    0xe1ae, 0x003f, 0x003f, 0xecc3, 0xcffe, 0x003f, 0xf8bf, 0xd8e2,
+    0xd3e8, 0x003f, 0x003f, 0xdea8, 0xf4e4, 0xecc2, 0x003f, 0xd9f5,
+    0xf9c5, 0xddd3, 0xd6f1, 0xecfc, 0xfcf0, 0x003f, 0x003f, 0xedc0,
+    0xcab9, 0x003f, 0xeee4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf2e1, 0x003f, 0xdeb9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd6f2, 0x003f, 0xdef4, 0x003f, 0xdfdb, 0x003f,
+    0xdbd3, 0x003f, 0xfae7, 0xd8e3, 0xf4c1, 0x003f, 0xddb7, 0x003f,
+    0x003f, 0x003f, 0xf2f5, 0x003f, 0x003f, 0xd4ae, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd6f3, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xddb8, 0xcfc5, 0xdfdf, 0x003f, 0x003f,
+    /* 0x8d00 .. 0x8dff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf2be, 0xf6a1, 0x003f, 0xebcb,
+    0xf1fc, 0x003f, 0xf3c7, 0x003f, 0x003f, 0xe0eb, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xedfc, 0x003f, 0x003f, 0xe1db, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xeee5, 0x003f, 0xdef5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xfad3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf1cb, 0x003f, 0x003f, 0xd0af, 0xddb9, 0x003f, 0x003f, 0xd1c3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5b1, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeac6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf0e1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf6ac, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf5d9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf0eb, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xddba, 0x003f, 0x003f, 0x003f, 0xf2bf, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf7c5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdba2, 0xf2f6, 0x003f, 0x003f, 0xcaba,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf7f5, 0x003f, 0xcbe5, 0x003f, 0x003f,
+    0x003f, 0xeee6, 0x003f, 0xe0d3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcea5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd6d8,
+    0x003f, 0x003f, 0x003f, 0xd4af, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x8e00 .. 0x8eff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe9c9, 0x003f, 0x003f, 0x003f, 0x003f, 0xd3ce,
+    0xf4c2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcbe6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf1a1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xebb2, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1a2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xebb3, 0x003f, 0xf0b4, 0x003f, 0x003f, 0xcbf4,
+    0xd4b0, 0xf3b2, 0xfbb7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf5ec, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeee7,
+    0xf4b2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf5ed, 0x003f, 0xcff3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf0e2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeece,
+    0x003f, 0x003f, 0xf1cc, 0x003f, 0x003f, 0xe5b8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd7f5, 0xe3f3, 0xcfe5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcfc6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf3b3, 0xe4d8, 0xcff9, 0xcfda, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xfacd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6e3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf2e2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf5ee, 0x003f, 0x003f, 0xcabb, 0x003f, 0x003f, 0xe3dc, 0x003f,
+    /* 0x8f00 .. 0x8fff */
+    0x003f, 0x003f, 0x003f, 0xcef2, 0x003f, 0xd6d9, 0x003f, 0x003f,
+    0x003f, 0xeeb0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf4e5, 0xd8c2, 0xdcd0, 0xccee, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd5e0, 0xf6ca, 0xfdca, 0xd8d6, 0xf4cf,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd6a6, 0xdcbe,
+    0x003f, 0xdbd4, 0xd7c7, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2fe,
+    0x003f, 0x003f, 0x003f, 0xf1cd, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe2c3, 0xdcde, 0x003f, 0xdcdf, 0x003f, 0x003f, 0xefad, 0xe6ab,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf9dd, 0xeabf, 0x003f, 0x003f,
+    0x003f, 0xefae, 0x003f, 0x003f, 0x003f, 0xf4d0, 0xcef3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6ac, 0x003f, 0xcede,
+    0x003f, 0x003f, 0xd5f9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe3f4, 0xcdd0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd5b8, 0x003f, 0x003f, 0xf7fd, 0x003f,
+    0xdca9, 0x003f, 0x003f, 0x003f, 0x003f, 0xdef6, 0x003f, 0xdcaa,
+    0xf2e3, 0xe9b4, 0xd2dc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe9e6, 0x003f, 0x003f, 0xe3f6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7ca, 0x003f,
+    0x003f, 0xd0ce, 0x003f, 0x003f, 0xdaf7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcabc, 0x003f,
+    0x003f, 0x003f, 0xeee8, 0xdade, 0x003f, 0xf2f7, 0x003f, 0x003f,
+    0xe2fb, 0x003f, 0xcca6, 0x003f, 0x003f, 0x003f, 0x003f, 0xdabb,
+    0x003f, 0xeee9, 0x003f, 0x003f, 0x003f, 0xf5da, 0x003f, 0x003f,
+    /* 0x9000 .. 0x90ff */
+    0xf7dc, 0xe1ea, 0xcec1, 0xd4b1, 0x003f, 0xfdb1, 0xe6bd, 0x003f,
+    0xfbad, 0x003f, 0x003f, 0xf8e7, 0x003f, 0xe1ce, 0x003f, 0xf7e2,
+    0xf5ef, 0xcfc7, 0x003f, 0x003f, 0xd4b2, 0xccef, 0x003f, 0xd4e8,
+    0x003f, 0xeecf, 0xf7d7, 0x003f, 0x003f, 0xe0a6, 0xd6c1, 0xe1dc,
+    0xf0e3, 0xf1e4, 0xdcf1, 0xd6a7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf4f5, 0x003f,
+    0x003f, 0xf1ce, 0xf2e4, 0x003f, 0x003f, 0xd0b0, 0x003f, 0x003f,
+    0xecef, 0x003f, 0x003f, 0x003f, 0xf9ba, 0x003f, 0xebb5, 0x003f,
+    0x003f, 0xd4ed, 0xe2c4, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9e7,
+    0x003f, 0x003f, 0xebb4, 0xeaa1, 0x003f, 0xf8bc, 0xcea6, 0x003f,
+    0xf9c6, 0xfcda, 0x003f, 0xd4b3, 0xd3b9, 0xeade, 0x003f, 0x003f,
+    0x003f, 0xe9ab, 0x003f, 0x003f, 0xe1e1, 0xd3cf, 0xf4f6, 0x003f,
+    0xeac0, 0xe1cf, 0x003f, 0xccba, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeeea, 0x003f, 0x003f, 0x003f, 0xf0e4, 0xf3b4, 0xd4ee,
+    0x003f, 0x003f, 0xf2c0, 0x003f, 0x003f, 0xf1e5, 0x003f, 0xf4c3,
+    0xe0d4, 0x003f, 0xebb6, 0x003f, 0xd7a1, 0xcbe8, 0x003f, 0xf9ad,
+    0xe9ad, 0xd8e4, 0xfab3, 0xe2c5, 0xfcbd, 0x003f, 0x003f, 0xecc4,
+    0xd8b1, 0x003f, 0xdcab, 0x003f, 0x003f, 0x003f, 0x003f, 0xd5a4,
+    0x003f, 0xebe9, 0x003f, 0x003f, 0x003f, 0xe8bb, 0x003f, 0x003f,
+    0x003f, 0xd8d7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xfbae, 0xd1e1, 0x003f, 0x003f, 0xdbc0, 0x003f,
+    0xf5be, 0x003f, 0xdef7, 0x003f, 0x003f, 0x003f, 0x003f, 0xcafb,
+    0xf7c6, 0xcfc8, 0x003f, 0x003f, 0x003f, 0xe1d0, 0x003f, 0x003f,
+    0xeed0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe9f4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xcef4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd5cd, 0x003f,
+    0x003f, 0xcfdb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xddbb, 0x003f, 0x003f, 0x003f, 0x003f, 0xceac, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9e8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd4b4, 0x003f, 0x003f,
+    /* 0x9100 .. 0x91ff */
+    0x003f, 0x003f, 0xe4c7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf5db, 0x003f, 0x003f, 0xfac1, 0x003f, 0x003f,
+    0x003f, 0xdea9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd4f8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeff7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd3b3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xebb7, 0xeff8, 0xf5dc, 0xedcc, 0xdbd5, 0xf1cf, 0x003f,
+    0x003f, 0x003f, 0xf1d0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf5b2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd9ae, 0xd5ac, 0x003f, 0xe2c6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfda3, 0x003f, 0xfbe5,
+    0xdfab, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2f5,
+    0x003f, 0xf6ad, 0x003f, 0xf5b3, 0x003f, 0xf0b5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe1a5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf5dd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xeca2, 0xedfd, 0x003f, 0xf5b4, 0xfbb8,
+    0x003f, 0xdba3, 0x003f, 0x003f, 0xd6ca, 0xcbd9, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe5d4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3fa,
+    0x003f, 0xebb8, 0x003f, 0xe0b7, 0xd7ec, 0xf1ec, 0xe5af, 0xd5e1,
+    0xd7ed, 0xd1d1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1f2,
+    0xeff9, 0x003f, 0x003f, 0x003f, 0xddbc, 0xf6dc, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf0e5, 0x003f, 0x003f, 0x003f, 0xf4c4,
+    0x003f, 0x003f, 0xe9e9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3fb, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9200 .. 0x92ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd4ef, 0x003f, 0x003f,
+    0xcca2, 0xf7fe, 0xdfbc, 0x003f, 0x003f, 0x003f, 0x003f, 0xebcd,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd0b7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd6c2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe8ad, 0x003f, 0x003f, 0x003f, 0x003f, 0xefaf,
+    0xcba5, 0x003f, 0x003f, 0x003f, 0x003f, 0xcbe9, 0x003f, 0x003f,
+    0x003f, 0xfae8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xccc6,
+    0x003f, 0x003f, 0x003f, 0xe6e7, 0x003f, 0x003f, 0xeac7, 0x003f,
+    0x003f, 0x003f, 0xdba4, 0x003f, 0xcfc9, 0xe2fc, 0xeffa, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xebde, 0x003f, 0x003f, 0xf5c8, 0x003f, 0xd4de, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe0d5, 0x003f, 0xefb0, 0x003f, 0x003f, 0xe2c7, 0x003f,
+    0xd9af, 0x003f, 0x003f, 0x003f, 0xf9e7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe7e5, 0x003f, 0x003f, 0xcfca, 0xe1d1,
+    0x003f, 0xe2c8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xeffb, 0x003f, 0x003f, 0xfaf9,
+    0x003f, 0x003f, 0xdcf2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe0a7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf8e8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcbea, 0x003f, 0x003f, 0x003f, 0xcbbc, 0x003f, 0x003f, 0x003f,
+    /* 0x9300 .. 0x93ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd6e2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf5de, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf5df, 0x003f, 0xeeb6, 0x003f, 0x003f, 0x003f, 0xe2f6, 0xd3ca,
+    0xeffc, 0xd1c4, 0xefb1, 0x003f, 0xd1c5, 0x003f, 0xd0de, 0x003f,
+    0xd9e1, 0x003f, 0x003f, 0xe0b8, 0x003f, 0x003f, 0xcdd1, 0xf3b9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe7cc, 0x003f, 0xd6a8, 0xcea7, 0x003f, 0xd4b5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe4c8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd3b4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xebb9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcbf5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf6dd, 0x003f, 0xf1a3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xccc7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe9ca, 0x003f, 0xe1f0, 0x003f,
+    0x003f, 0x003f, 0xf5e0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xfbaf, 0x003f, 0x003f, 0x003f, 0xcbd1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xfbe0, 0xf2e5, 0x003f, 0x003f,
+    0xecf0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf0ec, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeeeb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9cb, 0x003f,
+    0x003f, 0xccf0, 0x003f, 0x003f, 0xd7af, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3a1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9400 .. 0x94ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0xfcf5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf1a4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0d6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xefb2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf4d1, 0x003f, 0x003f,
+    0xf7a1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf1d1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcafc, 0xcafd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xcece, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf3c8, 0x003f, 0xf3ba,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9500 .. 0x95ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xedfe,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdaa6, 0x003f, 0x003f, 0xe0ec, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf8cd, 0x003f, 0xcbd2, 0x003f, 0x003f, 0x003f, 0xebce,
+    0x003f, 0xf9d8, 0xf9d9, 0xcae0, 0xdaca, 0x003f, 0x003f, 0x003f,
+    0xcba6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xcac8, 0xf9ee, 0xdbec, 0x003f, 0x003f,
+    0xd0b1, 0x003f, 0x003f, 0x003f, 0x003f, 0xd5ef, 0x003f, 0x003f,
+    0x003f, 0xe6f3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe7a2, 0xe4d9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4e1,
+    0x003f, 0x003f, 0xfcc4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf9ef, 0xcff4, 0xf7e6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xcebc, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf4c5, 0xdca3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9600 .. 0x96ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xddbd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf4c6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf8a1, 0x003f, 0x003f, 0x003f, 0xe8d6, 0x003f,
+    0x003f, 0x003f, 0xdbc1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf0e6, 0x003f, 0x003f, 0x003f, 0xe4b9,
+    0xf6ed, 0x003f, 0xf9ae, 0x003f, 0xddbe, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd7b0, 0xd8e8, 0xcbbd, 0x003f, 0x003f,
+    0xf9da, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf8ce, 0xf9f0, 0xe0ed, 0xe3b3, 0xf4b3,
+    0x003f, 0x003f, 0xeac2, 0xf2e6, 0xf0b6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdbd6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xebe4, 0x003f, 0x003f, 0xf2e7, 0x003f, 0xd7d5, 0xd4b6, 0xf9e8,
+    0xd7c1, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5d5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9ea, 0xd7cc, 0x003f,
+    0x003f, 0x003f, 0xd3e9, 0xe2c9, 0x003f, 0xfcdb, 0xcdad, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xccb0, 0xeaa2, 0x003f, 0x003f,
+    0xe4f6, 0xd0c0, 0x003f, 0xf0b7, 0xeea1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd7f6, 0x003f, 0x003f, 0x003f, 0xe2ca,
+    0xe2cb, 0x003f, 0xfacf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xebdf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd6cb,
+    0x003f, 0x003f, 0x003f, 0xf4b4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xedcd, 0xe4d2, 0x003f, 0x003f, 0xeaa9, 0xe4ba, 0xf3a2, 0xcdd2,
+    0x003f, 0xf6cb, 0x003f, 0xf1e6, 0xedc1, 0xe8bc, 0xeed1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf0e7, 0xe2cc, 0x003f,
+    0x003f, 0xe4aa, 0x003f, 0xf5e1, 0xedda, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd7ee, 0xd1f1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe9eb, 0xe9ec, 0xe0e4, 0x003f, 0x003f, 0x003f, 0x003f, 0xdaa7,
+    0xddd4, 0x003f, 0xeaa3, 0x003f, 0x003f, 0x003f, 0xd6c3, 0xd6f4,
+    0x003f, 0xdadf, 0x003f, 0xefb3, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9700 .. 0x97ff */
+    0xe2cd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeffd, 0xf2e8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xefc5, 0x003f, 0xe7e7, 0x003f, 0x003f, 0xd7fd, 0x003f,
+    0x003f, 0xe7ce, 0x003f, 0x003f, 0xdfdc, 0x003f, 0xf9c7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9f6,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdfac, 0x003f, 0xd6da, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdca4, 0x003f, 0x003f, 0x003f, 0xf0b8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd5fa, 0x003f, 0xe4f7, 0x003f, 0x003f, 0x003f,
+    0xd6c4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf4ec, 0x003f, 0x003f, 0x003f, 0x003f, 0xeffe, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf0a1, 0x003f, 0xdeaa, 0x003f,
+    0x003f, 0xdabc, 0xd8fc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xfad4, 0x003f, 0x003f, 0x003f, 0xece5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xfca8, 0x003f, 0x003f, 0xece6,
+    0x003f, 0x003f, 0xd8cb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xfbb9, 0x003f, 0xe4d3, 0x003f, 0xcdf9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcfd3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcaea, 0x003f, 0x003f, 0xcfd4, 0x003f, 0xf8bd, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf4c7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xeadf, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf9db, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd4b7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xebe5, 0x003f, 0x003f, 0xe1d2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xeaa4, 0x003f, 0x003f, 0x003f, 0xfac2,
+    /* 0x9800 .. 0x98ff */
+    0xfbe1, 0xfaed, 0xf0a2, 0xccf1, 0x003f, 0xfaa3, 0xe2f7, 0x003f,
+    0xe2ce, 0x003f, 0xe9f5, 0x003f, 0xe1eb, 0x003f, 0x003f, 0x003f,
+    0xe7e8, 0xe8d7, 0xdaf8, 0xd4cb, 0x003f, 0x003f, 0x003f, 0xf7f6,
+    0xd6c5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd4e9, 0x003f, 0x003f,
+    0xfafa, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xccf2, 0xf7dd, 0x003f, 0xdeba, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcea8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf0b9, 0xe4fe, 0xe4c9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe4d4, 0x003f, 0x003f, 0x003f,
+    0xeac3, 0x003f, 0xefb4, 0x003f, 0x003f, 0x003f, 0xd7be, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfbe2, 0x003f, 0xcdd3,
+    0x003f, 0x003f, 0x003f, 0xefb5, 0x003f, 0x003f, 0x003f, 0xfae9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf9a6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdfbd,
+    0x003f, 0xf7c7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf8fd, 0x003f, 0x003f, 0xf8fc,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdeab, 0xdbe8, 0x003f, 0x003f, 0xe3dd,
+    0x003f, 0xe1e2, 0xd1c6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf6d0, 0xebe6, 0xdaf9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xecc7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdef8, 0xf8e9, 0xe3de, 0x003f,
+    /* 0x9900 .. 0x99ff */
+    0x003f, 0x003f, 0x003f, 0xcef5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xfac3, 0xe5d7, 0x003f, 0xecc8, 0x003f, 0x003f, 0x003f,
+    0xf3c9, 0x003f, 0x003f, 0xe4bb, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe6ae, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xefb6, 0x003f,
+    0xdcbf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcebd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd8c3, 0x003f, 0x003f,
+    0x003f, 0xd0cf, 0x003f, 0xcffa, 0xf3ca, 0xe0d7, 0x003f, 0x003f,
+    0x003f, 0xd1c7, 0xe9ae, 0x003f, 0xe8bd, 0x003f, 0x003f, 0xfac4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2cf, 0x003f,
+    0x003f, 0xfac5, 0x003f, 0x003f, 0x003f, 0xf9b8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdce0, 0x003f, 0x003f,
+    0xfbb0, 0x003f, 0x003f, 0x003f, 0xd8a9, 0xe5df, 0xf9a7, 0x003f,
+    0x003f, 0xf6ee, 0x003f, 0xf6cc, 0xe2f8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xecf1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdae0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf1d2, 0xd2cc, 0xcfcb, 0x003f, 0x003f, 0xcabd, 0x003f, 0x003f,
+    0x003f, 0xddbf, 0x003f, 0x003f, 0x003f, 0xf6ef, 0x003f, 0xdef9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfab4, 0x003f, 0x003f,
+    0x003f, 0xd5ad, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1e7,
+    /* 0x9a00 .. 0x9aff */
+    0x003f, 0xdebe, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdcc0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd1c8, 0xd1c9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf8be, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xcbf6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd4f9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5e2, 0xe1d3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd8e9, 0x003f, 0x003f, 0xf8fe, 0x003f, 0xcfcc, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfda4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcef6, 0x003f, 0xfad0,
+    0x003f, 0x003f, 0xccf3, 0xe6be, 0x003f, 0x003f, 0x003f, 0xf6ae,
+    0x003f, 0x003f, 0xd5f0, 0x003f, 0x003f, 0xd1ca, 0x003f, 0x003f,
+    0x003f, 0xfcbe, 0xd5f1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcde9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xfab5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe2d0, 0xf4f7, 0x003f, 0x003f, 0x003f,
+    0xcdd4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe7a3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdba5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9b00 .. 0x9bff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe2d1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd7a2,
+    0x003f, 0x003f, 0xf7e3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeaa6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd0a1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xceda, 0xfbeb, 0xdba6, 0xdbde, 0xd8e5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeae0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd8aa, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe5e0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd6db,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xefc6, 0x003f,
+    0x003f, 0xf8ea, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4d5,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xcef7, 0x003f, 0x003f, 0xe0d8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd7ef, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf4ed, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xcde6, 0x003f, 0x003f, 0x003f,
+    0xccf4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9c00 .. 0x9cff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf5e3, 0x003f, 0x003f,
+    0xe4ca, 0x003f, 0xdce1, 0x003f, 0x003f, 0xf9c8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xfcbf, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe8a7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd8c4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcbbe,
+    0x003f, 0xdcae, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd7f7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf0e8, 0x003f, 0xddc0,
+    0x003f, 0xcfcd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdcf3, 0xd9b0, 0x003f, 0xe6e9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9d00 .. 0x9dff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe4bc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xeac4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4ec, 0x003f,
+    0xe4e5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xfbf8, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xccbb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4bd, 0x003f, 0x003f,
+    0xcddc, 0xd9f7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdddf, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xedce, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd9d0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe5a3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf9cd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xcdae, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcfce,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf6af, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xfdd3, 0xebed, 0xd6dc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9e00 .. 0x9eff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe5a4, 0x003f, 0x003f, 0x003f, 0xd5b6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd6dd, 0x003f, 0x003f,
+    0x003f, 0xf9e9, 0x003f, 0x003f, 0x003f, 0xe7a4, 0x003f, 0xd6e3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd1cb, 0xd6e4, 0x003f, 0x003f, 0x003f, 0xd5f2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdefa, 0x003f, 0xd7f8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd8ea, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xcfd5, 0xd8fd, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd8ab, 0x003f, 0x003f, 0xfdcb, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xfcdc, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0a8, 0xd5f3, 0x003f,
+    0x003f, 0xfdd9, 0x003f, 0x003f, 0xcca3, 0x003f, 0x003f, 0x003f,
+    0xd9f9, 0x003f, 0x003f, 0xd3ea, 0xf5f5, 0x003f, 0xefc7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd3da, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdabd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9f00 .. 0x9fff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8a8,
+    0xdcaf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf0a3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xcdd5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe0a9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdeac, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf0ba, 0xeeb1, 0x003f, 0x003f, 0xeeb2, 0x003f,
+    0x003f, 0x003f, 0xf6cd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xeed2,
+    0x003f, 0xd6c6, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe0e5,
+    0x003f, 0x003f, 0xf3bb, 0x003f, 0xe5e1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4cb,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd7a3, 0x003f, 0x003f,
+    0xdbc2, 0x003f, 0x003f, 0x003f, 0x003f, 0xcafe, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xcfcf, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0xac00 .. 0xacff */
+    0xb0a1, 0xb0a2, 0x8141, 0x8142, 0xb0a3, 0x8143, 0x8144, 0xb0a4,
+    0xb0a5, 0xb0a6, 0xb0a7, 0x8145, 0x8146, 0x8147, 0x8148, 0x8149,
+    0xb0a8, 0xb0a9, 0xb0aa, 0xb0ab, 0xb0ac, 0xb0ad, 0xb0ae, 0xb0af,
+    0x814a, 0xb0b0, 0xb0b1, 0xb0b2, 0xb0b3, 0xb0b4, 0x814b, 0x814c,
+    0xb0b5, 0x814d, 0x814e, 0x814f, 0xb0b6, 0x8150, 0x8151, 0x8152,
+    0x8153, 0x8154, 0x8155, 0x8156, 0xb0b7, 0xb0b8, 0x8157, 0xb0b9,
+    0xb0ba, 0xb0bb, 0x8158, 0x8159, 0x815a, 0x8161, 0x8162, 0x8163,
+    0xb0bc, 0xb0bd, 0x8164, 0x8165, 0xb0be, 0x8166, 0x8167, 0x8168,
+    0xb0bf, 0x8169, 0x816a, 0x816b, 0x816c, 0x816d, 0x816e, 0x816f,
+    0x8170, 0x8171, 0x8172, 0xb0c0, 0x8173, 0xb0c1, 0x8174, 0x8175,
+    0x8176, 0x8177, 0x8178, 0x8179, 0xb0c2, 0x817a, 0x8181, 0x8182,
+    0xb0c3, 0x8183, 0x8184, 0x8185, 0xb0c4, 0x8186, 0x8187, 0x8188,
+    0x8189, 0x818a, 0x818b, 0x818c, 0x818d, 0x818e, 0x818f, 0x8190,
+    0x8191, 0x8192, 0x8193, 0x8194, 0x8195, 0x8196, 0x8197, 0x8198,
+    0xb0c5, 0xb0c6, 0x8199, 0x819a, 0xb0c7, 0x819b, 0x819c, 0xb0c8,
+    0xb0c9, 0x819d, 0xb0ca, 0x819e, 0x819f, 0x81a0, 0x81a1, 0x81a2,
+    0xb0cb, 0xb0cc, 0x81a3, 0xb0cd, 0xb0ce, 0xb0cf, 0xb0d0, 0x81a4,
+    0x81a5, 0xb0d1, 0xb0d2, 0xb0d3, 0xb0d4, 0x81a6, 0x81a7, 0x81a8,
+    0xb0d5, 0x81a9, 0x81aa, 0x81ab, 0xb0d6, 0x81ac, 0x81ad, 0x81ae,
+    0x81af, 0x81b0, 0x81b1, 0x81b2, 0xb0d7, 0xb0d8, 0x81b3, 0xb0d9,
+    0xb0da, 0xb0db, 0x81b4, 0x81b5, 0x81b6, 0x81b7, 0x81b8, 0x81b9,
+    0xb0dc, 0xb0dd, 0xb0de, 0x81ba, 0xb0df, 0x81bb, 0x81bc, 0xb0e0,
+    0xb0e1, 0x81bd, 0x81be, 0x81bf, 0x81c0, 0x81c1, 0x81c2, 0x81c3,
+    0xb0e2, 0xb0e3, 0x81c4, 0xb0e4, 0xb0e5, 0xb0e6, 0x81c5, 0x81c6,
+    0x81c7, 0xb0e7, 0x81c8, 0x81c9, 0xb0e8, 0x81ca, 0x81cb, 0x81cc,
+    0xb0e9, 0x81cd, 0x81ce, 0x81cf, 0xb0ea, 0x81d0, 0x81d1, 0x81d2,
+    0x81d3, 0x81d4, 0x81d5, 0x81d6, 0x81d7, 0xb0eb, 0x81d8, 0xb0ec,
+    0x81d9, 0x81da, 0x81db, 0x81dc, 0x81dd, 0x81de, 0x81df, 0x81e0,
+    0xb0ed, 0xb0ee, 0x81e1, 0x81e2, 0xb0ef, 0x81e3, 0x81e4, 0xb0f0,
+    0xb0f1, 0x81e5, 0xb0f2, 0x81e6, 0xb0f3, 0x81e7, 0x81e8, 0xb0f4,
+    0xb0f5, 0xb0f6, 0x81e9, 0xb0f7, 0x81ea, 0xb0f8, 0xb0f9, 0x81eb,
+    0x81ec, 0x81ed, 0x81ee, 0x81ef, 0xb0fa, 0xb0fb, 0x81f0, 0x81f1,
+    /* 0xad00 .. 0xadff */
+    0xb0fc, 0x81f2, 0x81f3, 0x81f4, 0xb0fd, 0x81f5, 0xb0fe, 0x81f6,
+    0x81f7, 0x81f8, 0x81f9, 0x81fa, 0xb1a1, 0xb1a2, 0x81fb, 0xb1a3,
+    0x81fc, 0xb1a4, 0x81fd, 0x81fe, 0x8241, 0x8242, 0x8243, 0x8244,
+    0xb1a5, 0x8245, 0x8246, 0x8247, 0xb1a6, 0x8248, 0x8249, 0x824a,
+    0xb1a7, 0x824b, 0x824c, 0x824d, 0x824e, 0x824f, 0x8250, 0x8251,
+    0x8252, 0xb1a8, 0x8253, 0x8254, 0xb1a9, 0xb1aa, 0x8255, 0x8256,
+    0x8257, 0x8258, 0x8259, 0x825a, 0xb1ab, 0xb1ac, 0x8261, 0x8262,
+    0xb1ad, 0x8263, 0x8264, 0x8265, 0xb1ae, 0x8266, 0x8267, 0x8268,
+    0x8269, 0x826a, 0x826b, 0x826c, 0xb1af, 0xb1b0, 0x826d, 0xb1b1,
+    0x826e, 0xb1b2, 0x826f, 0x8270, 0x8271, 0x8272, 0x8273, 0x8274,
+    0xb1b3, 0x8275, 0x8276, 0x8277, 0xb1b4, 0x8278, 0x8279, 0x827a,
+    0xb1b5, 0x8281, 0x8282, 0x8283, 0x8284, 0x8285, 0x8286, 0x8287,
+    0x8288, 0xb1b6, 0x8289, 0xb1b7, 0x828a, 0x828b, 0x828c, 0x828d,
+    0x828e, 0x828f, 0x8290, 0x8291, 0xb1b8, 0xb1b9, 0x8292, 0x8293,
+    0xb1ba, 0x8294, 0x8295, 0xb1bb, 0xb1bc, 0xb1bd, 0xb1be, 0x8296,
+    0x8297, 0x8298, 0x8299, 0xb1bf, 0xb1c0, 0xb1c1, 0x829a, 0xb1c2,
+    0x829b, 0xb1c3, 0xb1c4, 0x829c, 0x829d, 0x829e, 0x829f, 0x82a0,
+    0xb1c5, 0xb1c6, 0x82a1, 0x82a2, 0xb1c7, 0x82a3, 0x82a4, 0x82a5,
+    0xb1c8, 0x82a6, 0x82a7, 0x82a8, 0x82a9, 0x82aa, 0x82ab, 0x82ac,
+    0x82ad, 0x82ae, 0x82af, 0x82b0, 0xb1c9, 0xb1ca, 0x82b1, 0x82b2,
+    0x82b3, 0x82b4, 0x82b5, 0x82b6, 0xb1cb, 0x82b7, 0x82b8, 0x82b9,
+    0x82ba, 0x82bb, 0x82bc, 0x82bd, 0x82be, 0x82bf, 0x82c0, 0x82c1,
+    0x82c2, 0x82c3, 0x82c4, 0x82c5, 0x82c6, 0x82c7, 0x82c8, 0xb1cc,
+    0x82c9, 0x82ca, 0x82cb, 0x82cc, 0x82cd, 0x82ce, 0x82cf, 0x82d0,
+    0xb1cd, 0xb1ce, 0x82d1, 0x82d2, 0xb1cf, 0x82d3, 0x82d4, 0x82d5,
+    0xb1d0, 0x82d6, 0x82d7, 0x82d8, 0x82d9, 0x82da, 0x82db, 0x82dc,
+    0xb1d1, 0xb1d2, 0x82dd, 0xb1d3, 0x82de, 0x82df, 0x82e0, 0x82e1,
+    0x82e2, 0x82e3, 0x82e4, 0x82e5, 0xb1d4, 0x82e6, 0x82e7, 0x82e8,
+    0xb1d5, 0x82e9, 0x82ea, 0x82eb, 0xb1d6, 0x82ec, 0x82ed, 0x82ee,
+    0x82ef, 0x82f0, 0x82f1, 0x82f2, 0x82f3, 0x82f4, 0x82f5, 0x82f6,
+    0x82f7, 0x82f8, 0x82f9, 0x82fa, 0x82fb, 0x82fc, 0x82fd, 0x82fe,
+    0xb1d7, 0xb1d8, 0x8341, 0x8342, 0xb1d9, 0x8343, 0x8344, 0xb1da,
+    /* 0xae00 .. 0xaeff */
+    0xb1db, 0xb1dc, 0x8345, 0x8346, 0x8347, 0x8348, 0x8349, 0x834a,
+    0xb1dd, 0xb1de, 0x834b, 0xb1df, 0x834c, 0xb1e0, 0x834d, 0x834e,
+    0x834f, 0x8350, 0x8351, 0x8352, 0xb1e1, 0x8353, 0x8354, 0x8355,
+    0x8356, 0x8357, 0x8358, 0x8359, 0x835a, 0x8361, 0x8362, 0x8363,
+    0x8364, 0x8365, 0x8366, 0x8367, 0x8368, 0x8369, 0x836a, 0x836b,
+    0x836c, 0x836d, 0x836e, 0x836f, 0x8370, 0x8371, 0x8372, 0x8373,
+    0xb1e2, 0xb1e3, 0x8374, 0x8375, 0xb1e4, 0x8376, 0x8377, 0xb1e5,
+    0xb1e6, 0x8378, 0xb1e7, 0x8379, 0x837a, 0x8381, 0x8382, 0x8383,
+    0xb1e8, 0xb1e9, 0x8384, 0xb1ea, 0x8385, 0xb1eb, 0xb1ec, 0x8386,
+    0x8387, 0x8388, 0xb1ed, 0x8389, 0xb1ee, 0xb1ef, 0xb1f0, 0x838a,
+    0xb1f1, 0x838b, 0x838c, 0x838d, 0xb1f2, 0x838e, 0xb1f3, 0x838f,
+    0x8390, 0x8391, 0x8392, 0x8393, 0xb1f4, 0xb1f5, 0x8394, 0xb1f6,
+    0xb1f7, 0xb1f8, 0x8395, 0x8396, 0x8397, 0xb1f9, 0x8398, 0x8399,
+    0xb1fa, 0xb1fb, 0x839a, 0x839b, 0xb1fc, 0x839c, 0x839d, 0x839e,
+    0xb1fd, 0x839f, 0x83a0, 0x83a1, 0x83a2, 0x83a3, 0x83a4, 0x83a5,
+    0xb1fe, 0xb2a1, 0x83a6, 0xb2a2, 0xb2a3, 0xb2a4, 0x83a7, 0x83a8,
+    0x83a9, 0x83aa, 0x83ab, 0x83ac, 0xb2a5, 0xb2a6, 0x83ad, 0x83ae,
+    0x83af, 0x83b0, 0x83b1, 0x83b2, 0xb2a7, 0x83b3, 0x83b4, 0x83b5,
+    0x83b6, 0x83b7, 0x83b8, 0x83b9, 0x83ba, 0x83bb, 0x83bc, 0x83bd,
+    0x83be, 0x83bf, 0x83c0, 0x83c1, 0x83c2, 0x83c3, 0x83c4, 0x83c5,
+    0x83c6, 0x83c7, 0x83c8, 0x83c9, 0x83ca, 0x83cb, 0x83cc, 0x83cd,
+    0x83ce, 0x83cf, 0x83d0, 0x83d1, 0x83d2, 0x83d3, 0x83d4, 0x83d5,
+    0x83d6, 0x83d7, 0x83d8, 0x83d9, 0x83da, 0x83db, 0x83dc, 0x83dd,
+    0x83de, 0x83df, 0x83e0, 0x83e1, 0xb2a8, 0xb2a9, 0xb2aa, 0x83e2,
+    0xb2ab, 0x83e3, 0x83e4, 0x83e5, 0xb2ac, 0x83e6, 0x83e7, 0x83e8,
+    0x83e9, 0x83ea, 0x83eb, 0x83ec, 0xb2ad, 0xb2ae, 0x83ed, 0xb2af,
+    0xb2b0, 0xb2b1, 0x83ee, 0x83ef, 0x83f0, 0x83f1, 0x83f2, 0x83f3,
+    0xb2b2, 0xb2b3, 0x83f4, 0x83f5, 0xb2b4, 0x83f6, 0x83f7, 0x83f8,
+    0x83f9, 0x83fa, 0x83fb, 0x83fc, 0x83fd, 0x83fe, 0x8441, 0x8442,
+    0xb2b5, 0x8443, 0x8444, 0xb2b6, 0x8445, 0xb2b7, 0x8446, 0x8447,
+    0x8448, 0x8449, 0x844a, 0x844b, 0xb2b8, 0x844c, 0x844d, 0x844e,
+    0xb2b9, 0x844f, 0x8450, 0x8451, 0xb2ba, 0x8452, 0x8453, 0x8454,
+    /* 0xaf00 .. 0xafff */
+    0x8455, 0x8456, 0x8457, 0x8458, 0x8459, 0x845a, 0x8461, 0xb2bb,
+    0xb2bc, 0x8462, 0x8463, 0x8464, 0x8465, 0xb2bd, 0x8466, 0x8467,
+    0xb2be, 0x8468, 0x8469, 0x846a, 0x846b, 0x846c, 0x846d, 0x846e,
+    0x846f, 0x8470, 0x8471, 0x8472, 0x8473, 0x8474, 0x8475, 0x8476,
+    0x8477, 0x8478, 0x8479, 0x847a, 0x8481, 0x8482, 0x8483, 0x8484,
+    0x8485, 0x8486, 0x8487, 0x8488, 0xb2bf, 0xb2c0, 0x8489, 0x848a,
+    0xb2c1, 0x848b, 0xb2c2, 0x848c, 0xb2c3, 0x848d, 0x848e, 0x848f,
+    0x8490, 0x8491, 0x8492, 0x8493, 0xb2c4, 0xb2c5, 0x8494, 0xb2c6,
+    0x8495, 0xb2c7, 0xb2c8, 0xb2c9, 0x8496, 0x8497, 0x8498, 0x8499,
+    0xb2ca, 0xb2cb, 0x849a, 0x849b, 0x849c, 0x849d, 0x849e, 0x849f,
+    0xb2cc, 0x84a0, 0x84a1, 0x84a2, 0x84a3, 0x84a4, 0x84a5, 0x84a6,
+    0x84a7, 0x84a8, 0x84a9, 0x84aa, 0xb2cd, 0xb2ce, 0x84ab, 0x84ac,
+    0x84ad, 0x84ae, 0x84af, 0x84b0, 0xb2cf, 0xb2d0, 0x84b1, 0x84b2,
+    0x84b3, 0x84b4, 0x84b5, 0x84b6, 0x84b7, 0x84b8, 0x84b9, 0x84ba,
+    0x84bb, 0x84bc, 0x84bd, 0x84be, 0x84bf, 0x84c0, 0x84c1, 0x84c2,
+    0x84c3, 0xb2d1, 0x84c4, 0x84c5, 0x84c6, 0x84c7, 0x84c8, 0x84c9,
+    0xb2d2, 0x84ca, 0x84cb, 0x84cc, 0xb2d3, 0x84cd, 0x84ce, 0x84cf,
+    0xb2d4, 0x84d0, 0x84d1, 0x84d2, 0x84d3, 0x84d4, 0x84d5, 0x84d6,
+    0xb2d5, 0xb2d6, 0x84d7, 0x84d8, 0x84d9, 0xb2d7, 0x84da, 0x84db,
+    0x84dc, 0x84dd, 0x84de, 0x84df, 0xb2d8, 0x84e0, 0x84e1, 0x84e2,
+    0x84e3, 0x84e4, 0x84e5, 0x84e6, 0x84e7, 0x84e8, 0x84e9, 0x84ea,
+    0x84eb, 0x84ec, 0x84ed, 0x84ee, 0x84ef, 0x84f0, 0x84f1, 0x84f2,
+    0x84f3, 0x84f4, 0x84f5, 0x84f6, 0x84f7, 0x84f8, 0x84f9, 0x84fa,
+    0xb2d9, 0xb2da, 0x84fb, 0x84fc, 0xb2db, 0x84fd, 0x84fe, 0x8541,
+    0xb2dc, 0x8542, 0x8543, 0x8544, 0x8545, 0x8546, 0x8547, 0xb2dd,
+    0xb2de, 0xb2df, 0x8548, 0xb2e0, 0x8549, 0xb2e1, 0xb2e2, 0x854a,
+    0x854b, 0x854c, 0x854d, 0x854e, 0xb2e3, 0x854f, 0x8550, 0x8551,
+    0x8552, 0x8553, 0x8554, 0x8555, 0xb2e4, 0x8556, 0x8557, 0x8558,
+    0x8559, 0x855a, 0x8561, 0x8562, 0x8563, 0x8564, 0x8565, 0x8566,
+    0xb2e5, 0xb2e6, 0x8567, 0x8568, 0x8569, 0x856a, 0x856b, 0x856c,
+    0xb2e7, 0xb2e8, 0x856d, 0x856e, 0xb2e9, 0x856f, 0x8570, 0x8571,
+    0xb2ea, 0x8572, 0x8573, 0x8574, 0x8575, 0x8576, 0x8577, 0x8578,
+    /* 0xb000 .. 0xb0ff */
+    0xb2eb, 0xb2ec, 0x8579, 0x857a, 0xb2ed, 0x8581, 0x8582, 0x8583,
+    0x8584, 0x8585, 0x8586, 0x8587, 0xb2ee, 0x8588, 0x8589, 0x858a,
+    0xb2ef, 0x858b, 0x858c, 0x858d, 0xb2f0, 0x858e, 0x858f, 0x8590,
+    0x8591, 0x8592, 0x8593, 0x8594, 0xb2f1, 0xb2f2, 0x8595, 0x8596,
+    0x8597, 0x8598, 0x8599, 0x859a, 0x859b, 0x859c, 0x859d, 0x859e,
+    0xb2f3, 0x859f, 0x85a0, 0x85a1, 0x85a2, 0x85a3, 0x85a4, 0x85a5,
+    0x85a6, 0x85a7, 0x85a8, 0x85a9, 0x85aa, 0x85ab, 0x85ac, 0x85ad,
+    0x85ae, 0x85af, 0x85b0, 0x85b1, 0x85b2, 0x85b3, 0x85b4, 0x85b5,
+    0x85b6, 0x85b7, 0x85b8, 0x85b9, 0xb2f4, 0xb2f5, 0x85ba, 0x85bb,
+    0xb2f6, 0x85bc, 0xb2f7, 0x85bd, 0xb2f8, 0x85be, 0xb2f9, 0x85bf,
+    0x85c0, 0x85c1, 0x85c2, 0xb2fa, 0xb2fb, 0xb2fc, 0x85c3, 0xb2fd,
+    0x85c4, 0xb2fe, 0x85c5, 0x85c6, 0x85c7, 0xb3a1, 0x85c8, 0x85c9,
+    0x85ca, 0x85cb, 0x85cc, 0x85cd, 0x85ce, 0x85cf, 0x85d0, 0x85d1,
+    0x85d2, 0x85d3, 0x85d4, 0x85d5, 0x85d6, 0x85d7, 0x85d8, 0x85d9,
+    0x85da, 0x85db, 0x85dc, 0x85dd, 0x85de, 0x85df, 0x85e0, 0x85e1,
+    0x85e2, 0x85e3, 0x85e4, 0x85e5, 0xb3a2, 0xb3a3, 0x85e6, 0x85e7,
+    0xb3a4, 0x85e8, 0x85e9, 0x85ea, 0xb3a5, 0x85eb, 0x85ec, 0x85ed,
+    0x85ee, 0x85ef, 0x85f0, 0x85f1, 0xb3a6, 0xb3a7, 0x85f2, 0xb3a8,
+    0x85f3, 0xb3a9, 0x85f4, 0x85f5, 0x85f6, 0x85f7, 0x85f8, 0x85f9,
+    0xb3aa, 0xb3ab, 0xb3ac, 0x85fa, 0xb3ad, 0x85fb, 0x85fc, 0xb3ae,
+    0xb3af, 0xb3b0, 0xb3b1, 0x85fd, 0x85fe, 0x8641, 0x8642, 0x8643,
+    0xb3b2, 0xb3b3, 0x8644, 0xb3b4, 0xb3b5, 0xb3b6, 0xb3b7, 0xb3b8,
+    0x8645, 0xb3b9, 0x8646, 0xb3ba, 0xb3bb, 0xb3bc, 0x8647, 0x8648,
+    0xb3bd, 0x8649, 0x864a, 0x864b, 0xb3be, 0x864c, 0x864d, 0x864e,
+    0x864f, 0x8650, 0x8651, 0x8652, 0xb3bf, 0xb3c0, 0x8653, 0xb3c1,
+    0xb3c2, 0xb3c3, 0x8654, 0x8655, 0x8656, 0x8657, 0x8658, 0x8659,
+    0xb3c4, 0xb3c5, 0x865a, 0x8661, 0xb3c6, 0x8662, 0x8663, 0x8664,
+    0xb3c7, 0x8665, 0x8666, 0x8667, 0x8668, 0x8669, 0x866a, 0x866b,
+    0xb3c8, 0x866c, 0x866d, 0x866e, 0x866f, 0xb3c9, 0x8670, 0x8671,
+    0x8672, 0x8673, 0x8674, 0x8675, 0x8676, 0x8677, 0x8678, 0x8679,
+    0x867a, 0x8681, 0x8682, 0x8683, 0x8684, 0x8685, 0x8686, 0x8687,
+    0x8688, 0x8689, 0x868a, 0x868b, 0x868c, 0x868d, 0x868e, 0x868f,
+    /* 0xb100 .. 0xb1ff */
+    0x8690, 0x8691, 0x8692, 0x8693, 0x8694, 0x8695, 0x8696, 0x8697,
+    0xb3ca, 0xb3cb, 0x8698, 0xb3cc, 0xb3cd, 0x8699, 0x869a, 0x869b,
+    0xb3ce, 0x869c, 0xb3cf, 0xb3d0, 0x869d, 0x869e, 0x869f, 0x86a0,
+    0xb3d1, 0xb3d2, 0x86a1, 0xb3d3, 0xb3d4, 0xb3d5, 0x86a2, 0x86a3,
+    0x86a4, 0x86a5, 0x86a6, 0xb3d6, 0xb3d7, 0xb3d8, 0x86a7, 0x86a8,
+    0xb3d9, 0x86a9, 0x86aa, 0x86ab, 0xb3da, 0x86ac, 0x86ad, 0x86ae,
+    0x86af, 0x86b0, 0x86b1, 0x86b2, 0xb3db, 0xb3dc, 0x86b3, 0xb3dd,
+    0xb3de, 0xb3df, 0x86b4, 0x86b5, 0x86b6, 0x86b7, 0x86b8, 0x86b9,
+    0xb3e0, 0xb3e1, 0x86ba, 0x86bb, 0xb3e2, 0x86bc, 0x86bd, 0x86be,
+    0xb3e3, 0x86bf, 0x86c0, 0x86c1, 0x86c2, 0x86c3, 0x86c4, 0x86c5,
+    0xb3e4, 0xb3e5, 0x86c6, 0x86c7, 0xb3e6, 0xb3e7, 0x86c8, 0x86c9,
+    0xb3e8, 0x86ca, 0x86cb, 0x86cc, 0xb3e9, 0x86cd, 0x86ce, 0x86cf,
+    0xb3ea, 0x86d0, 0x86d1, 0x86d2, 0x86d3, 0x86d4, 0x86d5, 0x86d6,
+    0x86d7, 0x86d8, 0x86d9, 0x86da, 0x86db, 0x86dc, 0x86dd, 0x86de,
+    0x86df, 0x86e0, 0x86e1, 0x86e2, 0x86e3, 0x86e4, 0x86e5, 0x86e6,
+    0xb3eb, 0xb3ec, 0x86e7, 0x86e8, 0xb3ed, 0x86e9, 0x86ea, 0x86eb,
+    0xb3ee, 0x86ec, 0xb3ef, 0x86ed, 0x86ee, 0x86ef, 0x86f0, 0x86f1,
+    0xb3f0, 0xb3f1, 0x86f2, 0xb3f2, 0x86f3, 0xb3f3, 0x86f4, 0x86f5,
+    0x86f6, 0x86f7, 0xb3f4, 0xb3f5, 0xb3f6, 0x86f8, 0x86f9, 0x86fa,
+    0xb3f7, 0x86fb, 0x86fc, 0x86fd, 0xb3f8, 0x86fe, 0x8741, 0x8742,
+    0x8743, 0x8744, 0x8745, 0x8746, 0x8747, 0x8748, 0x8749, 0x874a,
+    0xb3f9, 0x874b, 0x874c, 0x874d, 0x874e, 0x874f, 0x8750, 0x8751,
+    0x8752, 0x8753, 0x8754, 0x8755, 0x8756, 0x8757, 0x8758, 0x8759,
+    0x875a, 0x8761, 0x8762, 0x8763, 0x8764, 0x8765, 0x8766, 0x8767,
+    0x8768, 0x8769, 0x876a, 0x876b, 0x876c, 0x876d, 0x876e, 0x876f,
+    0x8770, 0x8771, 0x8772, 0x8773, 0xb3fa, 0x8774, 0x8775, 0x8776,
+    0xb3fb, 0x8777, 0x8778, 0x8779, 0xb3fc, 0x877a, 0x8781, 0x8782,
+    0x8783, 0x8784, 0x8785, 0x8786, 0xb3fd, 0xb3fe, 0x8787, 0xb4a1,
+    0x8788, 0x8789, 0x878a, 0x878b, 0x878c, 0x878d, 0x878e, 0x878f,
+    0xb4a2, 0xb4a3, 0x8790, 0x8791, 0xb4a4, 0x8792, 0x8793, 0x8794,
+    0xb4a5, 0x8795, 0x8796, 0x8797, 0x8798, 0x8799, 0x879a, 0x879b,
+    0x879c, 0xb4a6, 0x879d, 0xb4a7, 0x879e, 0xb4a8, 0x879f, 0x87a0,
+    /* 0xb200 .. 0xb2ff */
+    0x87a1, 0x87a2, 0x87a3, 0x87a4, 0xb4a9, 0xb4aa, 0x87a5, 0x87a6,
+    0xb4ab, 0x87a7, 0x87a8, 0xb4ac, 0xb4ad, 0x87a9, 0x87aa, 0x87ab,
+    0x87ac, 0x87ad, 0x87ae, 0x87af, 0xb4ae, 0xb4af, 0x87b0, 0xb4b0,
+    0x87b1, 0xb4b1, 0x87b2, 0x87b3, 0x87b4, 0x87b5, 0x87b6, 0x87b7,
+    0xb4b2, 0x87b8, 0x87b9, 0x87ba, 0x87bb, 0x87bc, 0x87bd, 0x87be,
+    0x87bf, 0x87c0, 0x87c1, 0x87c2, 0x87c3, 0x87c4, 0x87c5, 0x87c6,
+    0x87c7, 0x87c8, 0x87c9, 0x87ca, 0xb4b3, 0x87cb, 0x87cc, 0x87cd,
+    0x87ce, 0x87cf, 0x87d0, 0x87d1, 0xb4b4, 0x87d2, 0x87d3, 0x87d4,
+    0x87d5, 0x87d6, 0x87d7, 0x87d8, 0x87d9, 0x87da, 0x87db, 0x87dc,
+    0x87dd, 0x87de, 0x87df, 0x87e0, 0x87e1, 0x87e2, 0x87e3, 0x87e4,
+    0x87e5, 0x87e6, 0x87e7, 0x87e8, 0x87e9, 0x87ea, 0x87eb, 0x87ec,
+    0xb4b5, 0x87ed, 0x87ee, 0x87ef, 0xb4b6, 0x87f0, 0x87f1, 0x87f2,
+    0xb4b7, 0x87f3, 0x87f4, 0x87f5, 0x87f6, 0x87f7, 0x87f8, 0x87f9,
+    0xb4b8, 0xb4b9, 0x87fa, 0x87fb, 0x87fc, 0x87fd, 0x87fe, 0x8841,
+    0x8842, 0x8843, 0x8844, 0x8845, 0xb4ba, 0xb4bb, 0x8846, 0x8847,
+    0x8848, 0x8849, 0x884a, 0x884b, 0xb4bc, 0x884c, 0x884d, 0x884e,
+    0x884f, 0x8850, 0x8851, 0x8852, 0xb4bd, 0xb4be, 0x8853, 0x8854,
+    0x8855, 0xb4bf, 0x8856, 0x8857, 0x8858, 0x8859, 0x885a, 0x8861,
+    0xb4c0, 0xb4c1, 0x8862, 0x8863, 0xb4c2, 0x8864, 0x8865, 0x8866,
+    0xb4c3, 0xb4c4, 0xb4c5, 0x8867, 0x8868, 0x8869, 0x886a, 0x886b,
+    0xb4c6, 0xb4c7, 0x886c, 0xb4c8, 0x886d, 0xb4c9, 0xb4ca, 0x886e,
+    0x886f, 0x8870, 0xb4cb, 0x8871, 0xb4cc, 0x8872, 0x8873, 0x8874,
+    0xb4cd, 0x8875, 0x8876, 0x8877, 0xb4ce, 0x8878, 0x8879, 0x887a,
+    0x8881, 0x8882, 0x8883, 0x8884, 0x8885, 0x8886, 0x8887, 0x8888,
+    0x8889, 0x888a, 0x888b, 0x888c, 0x888d, 0x888e, 0x888f, 0x8890,
+    0xb4cf, 0xb4d0, 0x8891, 0x8892, 0xb4d1, 0x8893, 0x8894, 0x8895,
+    0xb4d2, 0x8896, 0xb4d3, 0x8897, 0x8898, 0x8899, 0x889a, 0x889b,
+    0xb4d4, 0xb4d5, 0x889c, 0xb4d6, 0x889d, 0xb4d7, 0x889e, 0x889f,
+    0x88a0, 0x88a1, 0xb4d8, 0x88a2, 0xb4d9, 0xb4da, 0xb4db, 0x88a3,
+    0xb4dc, 0x88a4, 0x88a5, 0xb4dd, 0xb4de, 0xb4df, 0xb4e0, 0xb4e1,
+    0x88a6, 0x88a7, 0x88a8, 0xb4e2, 0xb4e3, 0xb4e4, 0x88a9, 0xb4e5,
+    0xb4e6, 0xb4e7, 0xb4e8, 0xb4e9, 0x88aa, 0x88ab, 0x88ac, 0xb4ea,
+    /* 0xb300 .. 0xb3ff */
+    0xb4eb, 0xb4ec, 0x88ad, 0x88ae, 0xb4ed, 0x88af, 0x88b0, 0x88b1,
+    0xb4ee, 0x88b2, 0x88b3, 0x88b4, 0x88b5, 0x88b6, 0x88b7, 0x88b8,
+    0xb4ef, 0xb4f0, 0x88b9, 0xb4f1, 0xb4f2, 0xb4f3, 0x88ba, 0x88bb,
+    0x88bc, 0x88bd, 0x88be, 0x88bf, 0xb4f4, 0x88c0, 0x88c1, 0x88c2,
+    0x88c3, 0x88c4, 0x88c5, 0x88c6, 0x88c7, 0x88c8, 0x88c9, 0x88ca,
+    0x88cb, 0x88cc, 0x88cd, 0x88ce, 0x88cf, 0x88d0, 0x88d1, 0x88d2,
+    0x88d3, 0x88d4, 0x88d5, 0x88d6, 0x88d7, 0x88d8, 0x88d9, 0x88da,
+    0x88db, 0x88dc, 0x88dd, 0x88de, 0x88df, 0x88e0, 0x88e1, 0x88e2,
+    0x88e3, 0x88e4, 0x88e5, 0x88e6, 0x88e7, 0x88e8, 0x88e9, 0x88ea,
+    0x88eb, 0x88ec, 0x88ed, 0x88ee, 0x88ef, 0x88f0, 0x88f1, 0x88f2,
+    0x88f3, 0x88f4, 0x88f5, 0x88f6, 0xb4f5, 0xb4f6, 0xb4f7, 0x88f7,
+    0xb4f8, 0x88f8, 0x88f9, 0xb4f9, 0xb4fa, 0x88fa, 0xb4fb, 0xb4fc,
+    0x88fb, 0x88fc, 0x88fd, 0x88fe, 0xb4fd, 0xb4fe, 0x8941, 0xb5a1,
+    0x8942, 0xb5a2, 0x8943, 0xb5a3, 0x8944, 0x8945, 0xb5a4, 0x8946,
+    0xb5a5, 0xb5a6, 0x8947, 0x8948, 0xb5a7, 0x8949, 0x894a, 0x894b,
+    0xb5a8, 0x894c, 0x894d, 0x894e, 0x894f, 0x8950, 0x8951, 0x8952,
+    0xb5a9, 0xb5aa, 0x8953, 0xb5ab, 0xb5ac, 0xb5ad, 0x8954, 0x8955,
+    0x8956, 0x8957, 0x8958, 0x8959, 0xb5ae, 0x895a, 0x8961, 0x8962,
+    0xb5af, 0x8963, 0x8964, 0x8965, 0xb5b0, 0x8966, 0x8967, 0x8968,
+    0x8969, 0x896a, 0x896b, 0x896c, 0x896d, 0x896e, 0x896f, 0x8970,
+    0xb5b1, 0xb5b2, 0x8971, 0x8972, 0x8973, 0x8974, 0x8975, 0x8976,
+    0xb5b3, 0x8977, 0x8978, 0x8979, 0xb5b4, 0x897a, 0x8981, 0x8982,
+    0x8983, 0x8984, 0x8985, 0x8986, 0x8987, 0x8988, 0x8989, 0x898a,
+    0x898b, 0x898c, 0x898d, 0x898e, 0x898f, 0x8990, 0x8991, 0x8992,
+    0x8993, 0x8994, 0x8995, 0x8996, 0xb5b5, 0xb5b6, 0x8997, 0x8998,
+    0xb5b7, 0x8999, 0x899a, 0xb5b8, 0xb5b9, 0x899b, 0xb5ba, 0x899c,
+    0xb5bb, 0x899d, 0x899e, 0x899f, 0xb5bc, 0xb5bd, 0x89a0, 0xb5be,
+    0x89a1, 0xb5bf, 0x89a2, 0xb5c0, 0x89a3, 0xb5c1, 0x89a4, 0x89a5,
+    0xb5c2, 0x89a6, 0x89a7, 0x89a8, 0xb5c3, 0x89a9, 0x89aa, 0x89ab,
+    0xb5c4, 0x89ac, 0x89ad, 0x89ae, 0x89af, 0x89b0, 0x89b1, 0x89b2,
+    0x89b3, 0x89b4, 0x89b5, 0x89b6, 0x89b7, 0x89b8, 0x89b9, 0x89ba,
+    0x89bb, 0x89bc, 0x89bd, 0x89be, 0xb5c5, 0x89bf, 0x89c0, 0x89c1,
+    /* 0xb400 .. 0xb4ff */
+    0x89c2, 0x89c3, 0x89c4, 0x89c5, 0x89c6, 0x89c7, 0x89c8, 0x89c9,
+    0x89ca, 0x89cb, 0x89cc, 0x89cd, 0x89ce, 0x89cf, 0x89d0, 0x89d1,
+    0xb5c6, 0x89d2, 0x89d3, 0x89d4, 0x89d5, 0x89d6, 0x89d7, 0x89d8,
+    0xb5c7, 0x89d9, 0x89da, 0x89db, 0xb5c8, 0x89dc, 0x89dd, 0x89de,
+    0xb5c9, 0x89df, 0x89e0, 0x89e1, 0x89e2, 0x89e3, 0x89e4, 0x89e5,
+    0xb5ca, 0xb5cb, 0x89e6, 0xb5cc, 0x89e7, 0x89e8, 0x89e9, 0x89ea,
+    0x89eb, 0x89ec, 0x89ed, 0x89ee, 0xb5cd, 0x89ef, 0x89f0, 0x89f1,
+    0x89f2, 0x89f3, 0x89f4, 0x89f5, 0x89f6, 0x89f7, 0x89f8, 0x89f9,
+    0x89fa, 0x89fb, 0x89fc, 0x89fd, 0x89fe, 0x8a41, 0x8a42, 0x8a43,
+    0x8a44, 0x8a45, 0x8a46, 0x8a47, 0x8a48, 0x8a49, 0x8a4a, 0x8a4b,
+    0xb5ce, 0xb5cf, 0x8a4c, 0x8a4d, 0xb5d0, 0x8a4e, 0x8a4f, 0x8a50,
+    0xb5d1, 0x8a51, 0x8a52, 0x8a53, 0x8a54, 0x8a55, 0x8a56, 0x8a57,
+    0xb5d2, 0xb5d3, 0x8a58, 0xb5d4, 0x8a59, 0xb5d5, 0x8a5a, 0x8a61,
+    0x8a62, 0x8a63, 0x8a64, 0x8a65, 0xb5d6, 0x8a66, 0x8a67, 0x8a68,
+    0x8a69, 0x8a6a, 0x8a6b, 0x8a6c, 0x8a6d, 0x8a6e, 0x8a6f, 0x8a70,
+    0x8a71, 0x8a72, 0x8a73, 0x8a74, 0x8a75, 0x8a76, 0x8a77, 0x8a78,
+    0xb5d7, 0x8a79, 0x8a7a, 0x8a81, 0x8a82, 0x8a83, 0x8a84, 0x8a85,
+    0xb5d8, 0x8a86, 0x8a87, 0x8a88, 0x8a89, 0x8a8a, 0x8a8b, 0x8a8c,
+    0x8a8d, 0x8a8e, 0x8a8f, 0x8a90, 0x8a91, 0x8a92, 0x8a93, 0x8a94,
+    0x8a95, 0x8a96, 0x8a97, 0x8a98, 0x8a99, 0xb5d9, 0x8a9a, 0x8a9b,
+    0x8a9c, 0x8a9d, 0x8a9e, 0x8a9f, 0xb5da, 0x8aa0, 0x8aa1, 0x8aa2,
+    0xb5db, 0x8aa3, 0x8aa4, 0x8aa5, 0xb5dc, 0x8aa6, 0x8aa7, 0x8aa8,
+    0x8aa9, 0x8aaa, 0x8aab, 0x8aac, 0x8aad, 0xb5dd, 0x8aae, 0xb5de,
+    0x8aaf, 0xb5df, 0x8ab0, 0x8ab1, 0x8ab2, 0x8ab3, 0x8ab4, 0x8ab5,
+    0xb5e0, 0x8ab6, 0x8ab7, 0x8ab8, 0xb5e1, 0x8ab9, 0x8aba, 0x8abb,
+    0xb5e2, 0x8abc, 0x8abd, 0x8abe, 0x8abf, 0x8ac0, 0x8ac1, 0x8ac2,
+    0xb5e3, 0x8ac3, 0x8ac4, 0x8ac5, 0x8ac6, 0xb5e4, 0x8ac7, 0x8ac8,
+    0x8ac9, 0x8aca, 0x8acb, 0x8acc, 0xb5e5, 0xb5e6, 0x8acd, 0x8ace,
+    0xb5e7, 0x8acf, 0x8ad0, 0xb5e8, 0xb5e9, 0x8ad1, 0xb5ea, 0x8ad2,
+    0x8ad3, 0x8ad4, 0x8ad5, 0x8ad6, 0xb5eb, 0xb5ec, 0x8ad7, 0xb5ed,
+    0x8ad8, 0xb5ee, 0x8ad9, 0x8ada, 0x8adb, 0x8adc, 0x8add, 0x8ade,
+    0xb5ef, 0x8adf, 0x8ae0, 0x8ae1, 0x8ae2, 0x8ae3, 0x8ae4, 0x8ae5,
+    /* 0xb500 .. 0xb5ff */
+    0x8ae6, 0x8ae7, 0x8ae8, 0x8ae9, 0x8aea, 0x8aeb, 0x8aec, 0x8aed,
+    0x8aee, 0x8aef, 0x8af0, 0x8af1, 0x8af2, 0x8af3, 0x8af4, 0x8af5,
+    0x8af6, 0x8af7, 0x8af8, 0x8af9, 0xb5f0, 0xb5f1, 0x8afa, 0x8afb,
+    0xb5f2, 0x8afc, 0x8afd, 0xb5f3, 0xb5f4, 0x8afe, 0x8b41, 0x8b42,
+    0x8b43, 0x8b44, 0x8b45, 0x8b46, 0xb5f5, 0xb5f6, 0x8b47, 0xb5f7,
+    0xb5f8, 0xb5f9, 0xb5fa, 0x8b48, 0x8b49, 0x8b4a, 0x8b4b, 0x8b4c,
+    0xb5fb, 0xb5fc, 0x8b4d, 0x8b4e, 0xb5fd, 0x8b4f, 0x8b50, 0x8b51,
+    0xb5fe, 0x8b52, 0x8b53, 0x8b54, 0x8b55, 0x8b56, 0x8b57, 0x8b58,
+    0xb6a1, 0xb6a2, 0x8b59, 0xb6a3, 0xb6a4, 0xb6a5, 0x8b5a, 0x8b61,
+    0x8b62, 0x8b63, 0x8b64, 0xb6a6, 0xb6a7, 0xb6a8, 0x8b65, 0x8b66,
+    0xb6a9, 0x8b67, 0x8b68, 0x8b69, 0xb6aa, 0x8b6a, 0x8b6b, 0x8b6c,
+    0x8b6d, 0x8b6e, 0x8b6f, 0x8b70, 0xb6ab, 0xb6ac, 0x8b71, 0xb6ad,
+    0xb6ae, 0xb6af, 0x8b72, 0x8b73, 0x8b74, 0x8b75, 0x8b76, 0x8b77,
+    0x8b78, 0x8b79, 0x8b7a, 0x8b81, 0x8b82, 0x8b83, 0x8b84, 0x8b85,
+    0x8b86, 0x8b87, 0x8b88, 0x8b89, 0x8b8a, 0x8b8b, 0x8b8c, 0x8b8d,
+    0x8b8e, 0x8b8f, 0x8b90, 0x8b91, 0x8b92, 0x8b93, 0x8b94, 0x8b95,
+    0x8b96, 0x8b97, 0x8b98, 0x8b99, 0x8b9a, 0x8b9b, 0x8b9c, 0x8b9d,
+    0x8b9e, 0x8b9f, 0x8ba0, 0x8ba1, 0x8ba2, 0x8ba3, 0x8ba4, 0x8ba5,
+    0x8ba6, 0x8ba7, 0x8ba8, 0x8ba9, 0x8baa, 0x8bab, 0x8bac, 0x8bad,
+    0x8bae, 0x8baf, 0x8bb0, 0x8bb1, 0x8bb2, 0x8bb3, 0x8bb4, 0x8bb5,
+    0xb6b0, 0xb6b1, 0x8bb6, 0x8bb7, 0xb6b2, 0x8bb8, 0x8bb9, 0x8bba,
+    0xb6b3, 0x8bbb, 0xb6b4, 0xb6b5, 0x8bbc, 0x8bbd, 0x8bbe, 0x8bbf,
+    0xb6b6, 0xb6b7, 0x8bc0, 0xb6b8, 0xb6b9, 0xb6ba, 0x8bc1, 0x8bc2,
+    0x8bc3, 0x8bc4, 0x8bc5, 0xb6bb, 0xb6bc, 0xb6bd, 0x8bc6, 0x8bc7,
+    0xb6be, 0x8bc8, 0x8bc9, 0x8bca, 0xb6bf, 0x8bcb, 0x8bcc, 0x8bcd,
+    0x8bce, 0x8bcf, 0x8bd0, 0x8bd1, 0xb6c0, 0xb6c1, 0x8bd2, 0xb6c2,
+    0xb6c3, 0xb6c4, 0x8bd3, 0x8bd4, 0x8bd5, 0x8bd6, 0x8bd7, 0x8bd8,
+    0xb6c5, 0x8bd9, 0x8bda, 0x8bdb, 0x8bdc, 0x8bdd, 0x8bde, 0x8bdf,
+    0x8be0, 0x8be1, 0x8be2, 0x8be3, 0x8be4, 0x8be5, 0x8be6, 0x8be7,
+    0x8be8, 0x8be9, 0x8bea, 0x8beb, 0xb6c6, 0x8bec, 0x8bed, 0x8bee,
+    0x8bef, 0x8bf0, 0x8bf1, 0x8bf2, 0x8bf3, 0x8bf4, 0x8bf5, 0x8bf6,
+    0x8bf7, 0x8bf8, 0x8bf9, 0x8bfa, 0x8bfb, 0x8bfc, 0x8bfd, 0x8bfe,
+    /* 0xb600 .. 0xb6ff */
+    0x8c41, 0x8c42, 0x8c43, 0x8c44, 0x8c45, 0x8c46, 0x8c47, 0x8c48,
+    0x8c49, 0x8c4a, 0x8c4b, 0x8c4c, 0x8c4d, 0x8c4e, 0x8c4f, 0x8c50,
+    0xb6c7, 0xb6c8, 0x8c51, 0x8c52, 0xb6c9, 0x8c53, 0x8c54, 0x8c55,
+    0xb6ca, 0x8c56, 0x8c57, 0x8c58, 0x8c59, 0x8c5a, 0x8c61, 0x8c62,
+    0x8c63, 0x8c64, 0x8c65, 0x8c66, 0x8c67, 0xb6cb, 0x8c68, 0x8c69,
+    0x8c6a, 0x8c6b, 0x8c6c, 0x8c6d, 0xb6cc, 0x8c6e, 0x8c6f, 0x8c70,
+    0x8c71, 0x8c72, 0x8c73, 0x8c74, 0xb6cd, 0x8c75, 0x8c76, 0x8c77,
+    0x8c78, 0x8c79, 0x8c7a, 0x8c81, 0x8c82, 0x8c83, 0x8c84, 0x8c85,
+    0x8c86, 0x8c87, 0x8c88, 0x8c89, 0x8c8a, 0x8c8b, 0x8c8c, 0x8c8d,
+    0xb6ce, 0x8c8e, 0x8c8f, 0x8c90, 0x8c91, 0x8c92, 0x8c93, 0x8c94,
+    0x8c95, 0x8c96, 0x8c97, 0x8c98, 0x8c99, 0x8c9a, 0x8c9b, 0x8c9c,
+    0x8c9d, 0x8c9e, 0x8c9f, 0x8ca0, 0x8ca1, 0x8ca2, 0x8ca3, 0x8ca4,
+    0x8ca5, 0x8ca6, 0x8ca7, 0x8ca8, 0xb6cf, 0x8ca9, 0x8caa, 0x8cab,
+    0xb6d0, 0x8cac, 0x8cad, 0x8cae, 0x8caf, 0x8cb0, 0x8cb1, 0x8cb2,
+    0x8cb3, 0x8cb4, 0x8cb5, 0x8cb6, 0x8cb7, 0x8cb8, 0x8cb9, 0x8cba,
+    0x8cbb, 0x8cbc, 0x8cbd, 0x8cbe, 0x8cbf, 0x8cc0, 0x8cc1, 0x8cc2,
+    0x8cc3, 0x8cc4, 0x8cc5, 0x8cc6, 0x8cc7, 0x8cc8, 0x8cc9, 0x8cca,
+    0x8ccb, 0x8ccc, 0x8ccd, 0x8cce, 0x8ccf, 0x8cd0, 0x8cd1, 0x8cd2,
+    0x8cd3, 0x8cd4, 0x8cd5, 0x8cd6, 0x8cd7, 0x8cd8, 0x8cd9, 0x8cda,
+    0x8cdb, 0x8cdc, 0x8cdd, 0x8cde, 0xb6d1, 0xb6d2, 0x8cdf, 0x8ce0,
+    0xb6d3, 0x8ce1, 0x8ce2, 0x8ce3, 0xb6d4, 0x8ce4, 0x8ce5, 0x8ce6,
+    0x8ce7, 0x8ce8, 0x8ce9, 0xb6d5, 0xb6d6, 0x8cea, 0x8ceb, 0x8cec,
+    0x8ced, 0xb6d7, 0x8cee, 0x8cef, 0x8cf0, 0x8cf1, 0x8cf2, 0x8cf3,
+    0x8cf4, 0x8cf5, 0x8cf6, 0x8cf7, 0x8cf8, 0x8cf9, 0x8cfa, 0x8cfb,
+    0x8cfc, 0x8cfd, 0x8cfe, 0x8d41, 0x8d42, 0x8d43, 0x8d44, 0x8d45,
+    0x8d46, 0x8d47, 0x8d48, 0x8d49, 0x8d4a, 0x8d4b, 0x8d4c, 0x8d4d,
+    0x8d4e, 0x8d4f, 0x8d50, 0x8d51, 0xb6d8, 0x8d52, 0x8d53, 0x8d54,
+    0x8d55, 0x8d56, 0x8d57, 0x8d58, 0x8d59, 0x8d5a, 0x8d61, 0x8d62,
+    0x8d63, 0x8d64, 0x8d65, 0x8d66, 0x8d67, 0x8d68, 0x8d69, 0x8d6a,
+    0x8d6b, 0x8d6c, 0x8d6d, 0x8d6e, 0x8d6f, 0x8d70, 0x8d71, 0x8d72,
+    0xb6d9, 0x8d73, 0x8d74, 0x8d75, 0xb6da, 0x8d76, 0x8d77, 0x8d78,
+    0xb6db, 0x8d79, 0x8d7a, 0x8d81, 0x8d82, 0x8d83, 0x8d84, 0x8d85,
+    /* 0xb700 .. 0xb7ff */
+    0xb6dc, 0xb6dd, 0x8d86, 0x8d87, 0x8d88, 0xb6de, 0x8d89, 0x8d8a,
+    0x8d8b, 0x8d8c, 0x8d8d, 0x8d8e, 0x8d8f, 0x8d90, 0x8d91, 0x8d92,
+    0x8d93, 0x8d94, 0x8d95, 0x8d96, 0x8d97, 0x8d98, 0x8d99, 0x8d9a,
+    0x8d9b, 0x8d9c, 0x8d9d, 0x8d9e, 0x8d9f, 0x8da0, 0x8da1, 0x8da2,
+    0x8da3, 0x8da4, 0x8da5, 0x8da6, 0x8da7, 0x8da8, 0x8da9, 0x8daa,
+    0xb6df, 0xb6e0, 0x8dab, 0x8dac, 0xb6e1, 0x8dad, 0x8dae, 0xb6e2,
+    0xb6e3, 0x8daf, 0x8db0, 0x8db1, 0x8db2, 0x8db3, 0x8db4, 0x8db5,
+    0xb6e4, 0xb6e5, 0x8db6, 0xb6e6, 0x8db7, 0x8db8, 0x8db9, 0x8dba,
+    0x8dbb, 0x8dbc, 0x8dbd, 0x8dbe, 0xb6e7, 0x8dbf, 0x8dc0, 0x8dc1,
+    0xb6e8, 0x8dc2, 0x8dc3, 0x8dc4, 0xb6e9, 0x8dc5, 0x8dc6, 0x8dc7,
+    0x8dc8, 0x8dc9, 0x8dca, 0x8dcb, 0xb6ea, 0xb6eb, 0x8dcc, 0x8dcd,
+    0x8dce, 0x8dcf, 0x8dd0, 0x8dd1, 0x8dd2, 0x8dd3, 0x8dd4, 0x8dd5,
+    0xb6ec, 0x8dd6, 0x8dd7, 0x8dd8, 0xb6ed, 0x8dd9, 0x8dda, 0x8ddb,
+    0xb6ee, 0x8ddc, 0x8ddd, 0x8dde, 0x8ddf, 0x8de0, 0x8de1, 0x8de2,
+    0xb6ef, 0xb6f0, 0x8de3, 0xb6f1, 0x8de4, 0xb6f2, 0x8de5, 0x8de6,
+    0x8de7, 0x8de8, 0x8de9, 0x8dea, 0xb6f3, 0xb6f4, 0x8deb, 0x8dec,
+    0xb6f5, 0x8ded, 0x8dee, 0x8def, 0xb6f6, 0x8df0, 0x8df1, 0x8df2,
+    0x8df3, 0x8df4, 0x8df5, 0x8df6, 0xb6f7, 0xb6f8, 0x8df7, 0xb6f9,
+    0xb6fa, 0xb6fb, 0xb6fc, 0x8df8, 0x8df9, 0x8dfa, 0xb6fd, 0xb6fe,
+    0xb7a1, 0xb7a2, 0x8dfb, 0x8dfc, 0xb7a3, 0x8dfd, 0x8dfe, 0x8e41,
+    0xb7a4, 0x8e42, 0x8e43, 0x8e44, 0x8e45, 0x8e46, 0x8e47, 0x8e48,
+    0xb7a5, 0xb7a6, 0x8e49, 0xb7a7, 0xb7a8, 0xb7a9, 0x8e4a, 0x8e4b,
+    0x8e4c, 0x8e4d, 0x8e4e, 0x8e4f, 0xb7aa, 0xb7ab, 0x8e50, 0x8e51,
+    0xb7ac, 0x8e52, 0x8e53, 0x8e54, 0x8e55, 0x8e56, 0x8e57, 0x8e58,
+    0x8e59, 0x8e5a, 0x8e61, 0x8e62, 0x8e63, 0x8e64, 0x8e65, 0xb7ad,
+    0x8e66, 0xb7ae, 0x8e67, 0x8e68, 0x8e69, 0x8e6a, 0x8e6b, 0x8e6c,
+    0x8e6d, 0x8e6e, 0x8e6f, 0x8e70, 0x8e71, 0x8e72, 0x8e73, 0x8e74,
+    0x8e75, 0x8e76, 0x8e77, 0x8e78, 0x8e79, 0x8e7a, 0x8e81, 0x8e82,
+    0x8e83, 0x8e84, 0x8e85, 0x8e86, 0x8e87, 0x8e88, 0x8e89, 0x8e8a,
+    0x8e8b, 0x8e8c, 0x8e8d, 0x8e8e, 0xb7af, 0xb7b0, 0x8e8f, 0x8e90,
+    0xb7b1, 0x8e91, 0x8e92, 0x8e93, 0xb7b2, 0x8e94, 0x8e95, 0x8e96,
+    0x8e97, 0x8e98, 0x8e99, 0x8e9a, 0xb7b3, 0xb7b4, 0x8e9b, 0xb7b5,
+    /* 0xb800 .. 0xb8ff */
+    0xb7b6, 0xb7b7, 0x8e9c, 0x8e9d, 0x8e9e, 0x8e9f, 0x8ea0, 0xb7b8,
+    0xb7b9, 0xb7ba, 0x8ea1, 0x8ea2, 0xb7bb, 0x8ea3, 0x8ea4, 0x8ea5,
+    0xb7bc, 0x8ea6, 0x8ea7, 0x8ea8, 0x8ea9, 0x8eaa, 0x8eab, 0x8eac,
+    0xb7bd, 0xb7be, 0x8ead, 0xb7bf, 0x8eae, 0xb7c0, 0x8eaf, 0x8eb0,
+    0x8eb1, 0x8eb2, 0x8eb3, 0x8eb4, 0xb7c1, 0xb7c2, 0x8eb5, 0x8eb6,
+    0xb7c3, 0x8eb7, 0x8eb8, 0x8eb9, 0xb7c4, 0x8eba, 0x8ebb, 0x8ebc,
+    0x8ebd, 0x8ebe, 0x8ebf, 0x8ec0, 0xb7c5, 0xb7c6, 0x8ec1, 0xb7c7,
+    0xb7c8, 0xb7c9, 0x8ec2, 0x8ec3, 0x8ec4, 0x8ec5, 0x8ec6, 0x8ec7,
+    0xb7ca, 0x8ec8, 0x8ec9, 0x8eca, 0xb7cb, 0x8ecb, 0x8ecc, 0x8ecd,
+    0x8ece, 0x8ecf, 0x8ed0, 0x8ed1, 0x8ed2, 0x8ed3, 0x8ed4, 0x8ed5,
+    0x8ed6, 0xb7cc, 0x8ed7, 0xb7cd, 0x8ed8, 0x8ed9, 0x8eda, 0x8edb,
+    0x8edc, 0x8edd, 0x8ede, 0x8edf, 0xb7ce, 0xb7cf, 0x8ee0, 0x8ee1,
+    0xb7d0, 0x8ee2, 0x8ee3, 0x8ee4, 0xb7d1, 0x8ee5, 0x8ee6, 0x8ee7,
+    0x8ee8, 0x8ee9, 0x8eea, 0x8eeb, 0xb7d2, 0xb7d3, 0x8eec, 0xb7d4,
+    0x8eed, 0xb7d5, 0x8eee, 0x8eef, 0x8ef0, 0x8ef1, 0x8ef2, 0x8ef3,
+    0xb7d6, 0x8ef4, 0x8ef5, 0x8ef6, 0xb7d7, 0x8ef7, 0x8ef8, 0x8ef9,
+    0x8efa, 0x8efb, 0x8efc, 0x8efd, 0x8efe, 0x8f41, 0x8f42, 0x8f43,
+    0x8f44, 0x8f45, 0x8f46, 0x8f47, 0x8f48, 0xb7d8, 0x8f49, 0x8f4a,
+    0x8f4b, 0x8f4c, 0x8f4d, 0x8f4e, 0x8f4f, 0x8f50, 0x8f51, 0x8f52,
+    0x8f53, 0x8f54, 0x8f55, 0x8f56, 0x8f57, 0x8f58, 0x8f59, 0x8f5a,
+    0x8f61, 0x8f62, 0x8f63, 0x8f64, 0x8f65, 0x8f66, 0x8f67, 0x8f68,
+    0xb7d9, 0x8f69, 0x8f6a, 0x8f6b, 0x8f6c, 0x8f6d, 0x8f6e, 0x8f6f,
+    0xb7da, 0x8f70, 0x8f71, 0x8f72, 0xb7db, 0x8f73, 0x8f74, 0x8f75,
+    0xb7dc, 0x8f76, 0x8f77, 0x8f78, 0x8f79, 0x8f7a, 0x8f81, 0x8f82,
+    0xb7dd, 0xb7de, 0x8f83, 0xb7df, 0x8f84, 0xb7e0, 0x8f85, 0x8f86,
+    0x8f87, 0x8f88, 0x8f89, 0x8f8a, 0xb7e1, 0x8f8b, 0x8f8c, 0x8f8d,
+    0xb7e2, 0x8f8e, 0x8f8f, 0x8f90, 0xb7e3, 0x8f91, 0x8f92, 0x8f93,
+    0x8f94, 0x8f95, 0x8f96, 0x8f97, 0x8f98, 0xb7e4, 0x8f99, 0xb7e5,
+    0x8f9a, 0xb7e6, 0x8f9b, 0x8f9c, 0x8f9d, 0x8f9e, 0x8f9f, 0x8fa0,
+    0xb7e7, 0xb7e8, 0x8fa1, 0x8fa2, 0xb7e9, 0x8fa3, 0x8fa4, 0x8fa5,
+    0xb7ea, 0x8fa6, 0x8fa7, 0x8fa8, 0x8fa9, 0x8faa, 0x8fab, 0x8fac,
+    0xb7eb, 0xb7ec, 0x8fad, 0xb7ed, 0x8fae, 0xb7ee, 0x8faf, 0x8fb0,
+    /* 0xb900 .. 0xb9ff */
+    0x8fb1, 0x8fb2, 0x8fb3, 0x8fb4, 0xb7ef, 0x8fb5, 0x8fb6, 0x8fb7,
+    0x8fb8, 0x8fb9, 0x8fba, 0x8fbb, 0x8fbc, 0x8fbd, 0x8fbe, 0x8fbf,
+    0x8fc0, 0x8fc1, 0x8fc2, 0x8fc3, 0x8fc4, 0x8fc5, 0x8fc6, 0x8fc7,
+    0xb7f0, 0x8fc8, 0x8fc9, 0x8fca, 0x8fcb, 0x8fcc, 0x8fcd, 0x8fce,
+    0xb7f1, 0x8fcf, 0x8fd0, 0x8fd1, 0x8fd2, 0x8fd3, 0x8fd4, 0x8fd5,
+    0x8fd6, 0x8fd7, 0x8fd8, 0x8fd9, 0x8fda, 0x8fdb, 0x8fdc, 0x8fdd,
+    0x8fde, 0x8fdf, 0x8fe0, 0x8fe1, 0x8fe2, 0x8fe3, 0x8fe4, 0x8fe5,
+    0x8fe6, 0x8fe7, 0x8fe8, 0x8fe9, 0xb7f2, 0xb7f3, 0x8fea, 0x8feb,
+    0xb7f4, 0x8fec, 0x8fed, 0x8fee, 0xb7f5, 0x8fef, 0x8ff0, 0x8ff1,
+    0x8ff2, 0x8ff3, 0x8ff4, 0x8ff5, 0xb7f6, 0x8ff6, 0x8ff7, 0xb7f7,
+    0x8ff8, 0xb7f8, 0x8ff9, 0x8ffa, 0x8ffb, 0x8ffc, 0x8ffd, 0x8ffe,
+    0xb7f9, 0xb7fa, 0x9041, 0x9042, 0xb7fb, 0x9043, 0x9044, 0x9045,
+    0xb7fc, 0x9046, 0x9047, 0x9048, 0x9049, 0x904a, 0x904b, 0x904c,
+    0xb7fd, 0xb7fe, 0x904d, 0xb8a1, 0x904e, 0xb8a2, 0x904f, 0x9050,
+    0x9051, 0x9052, 0x9053, 0x9054, 0xb8a3, 0xb8a4, 0x9055, 0x9056,
+    0xb8a5, 0x9057, 0x9058, 0x9059, 0xb8a6, 0x905a, 0x9061, 0x9062,
+    0x9063, 0x9064, 0x9065, 0x9066, 0xb8a7, 0xb8a8, 0x9067, 0xb8a9,
+    0x9068, 0xb8aa, 0xb8ab, 0x9069, 0x906a, 0xb8ac, 0xb8ad, 0x906b,
+    0x906c, 0x906d, 0x906e, 0x906f, 0x9070, 0x9071, 0x9072, 0x9073,
+    0x9074, 0x9075, 0x9076, 0x9077, 0x9078, 0x9079, 0x907a, 0x9081,
+    0x9082, 0x9083, 0x9084, 0x9085, 0x9086, 0x9087, 0x9088, 0x9089,
+    0x908a, 0x908b, 0x908c, 0x908d, 0xb8ae, 0xb8af, 0x908e, 0x908f,
+    0xb8b0, 0x9090, 0x9091, 0x9092, 0xb8b1, 0x9093, 0x9094, 0x9095,
+    0x9096, 0x9097, 0x9098, 0x9099, 0xb8b2, 0xb8b3, 0x909a, 0xb8b4,
+    0x909b, 0xb8b5, 0x909c, 0x909d, 0x909e, 0x909f, 0x90a0, 0x90a1,
+    0xb8b6, 0xb8b7, 0x90a2, 0x90a3, 0xb8b8, 0x90a4, 0xb8b9, 0xb8ba,
+    0xb8bb, 0xb8bc, 0xb8bd, 0x90a5, 0x90a6, 0x90a7, 0x90a8, 0x90a9,
+    0xb8be, 0xb8bf, 0x90aa, 0xb8c0, 0x90ab, 0xb8c1, 0xb8c2, 0x90ac,
+    0x90ad, 0xb8c3, 0x90ae, 0xb8c4, 0xb8c5, 0xb8c6, 0x90af, 0x90b0,
+    0xb8c7, 0x90b1, 0x90b2, 0x90b3, 0xb8c8, 0x90b4, 0x90b5, 0x90b6,
+    0x90b7, 0x90b8, 0x90b9, 0x90ba, 0xb8c9, 0xb8ca, 0x90bb, 0xb8cb,
+    0xb8cc, 0xb8cd, 0xb8ce, 0x90bc, 0x90bd, 0x90be, 0x90bf, 0x90c0,
+    /* 0xba00 .. 0xbaff */
+    0xb8cf, 0xb8d0, 0x90c1, 0x90c2, 0x90c3, 0x90c4, 0x90c5, 0x90c6,
+    0xb8d1, 0x90c7, 0x90c8, 0x90c9, 0x90ca, 0x90cb, 0x90cc, 0x90cd,
+    0x90ce, 0x90cf, 0x90d0, 0x90d1, 0x90d2, 0xb8d2, 0x90d3, 0x90d4,
+    0x90d5, 0x90d6, 0x90d7, 0x90d8, 0x90d9, 0x90da, 0x90db, 0x90dc,
+    0x90dd, 0x90de, 0x90df, 0x90e0, 0x90e1, 0x90e2, 0x90e3, 0x90e4,
+    0x90e5, 0x90e6, 0x90e7, 0x90e8, 0x90e9, 0x90ea, 0x90eb, 0x90ec,
+    0x90ed, 0x90ee, 0x90ef, 0x90f0, 0x90f1, 0x90f2, 0x90f3, 0x90f4,
+    0xb8d3, 0xb8d4, 0x90f5, 0x90f6, 0xb8d5, 0x90f7, 0x90f8, 0x90f9,
+    0xb8d6, 0x90fa, 0xb8d7, 0x90fb, 0x90fc, 0x90fd, 0x90fe, 0x9141,
+    0xb8d8, 0xb8d9, 0x9142, 0xb8da, 0x9143, 0xb8db, 0xb8dc, 0x9144,
+    0x9145, 0x9146, 0x9147, 0xb8dd, 0xb8de, 0xb8df, 0x9148, 0x9149,
+    0xb8e0, 0x914a, 0x914b, 0x914c, 0xb8e1, 0x914d, 0x914e, 0x914f,
+    0x9150, 0x9151, 0x9152, 0x9153, 0xb8e2, 0xb8e3, 0x9154, 0xb8e4,
+    0xb8e5, 0xb8e6, 0x9155, 0x9156, 0x9157, 0x9158, 0x9159, 0x915a,
+    0xb8e7, 0xb8e8, 0x9161, 0x9162, 0xb8e9, 0x9163, 0x9164, 0x9165,
+    0xb8ea, 0x9166, 0x9167, 0x9168, 0x9169, 0x916a, 0x916b, 0x916c,
+    0x916d, 0x916e, 0x916f, 0xb8eb, 0xb8ec, 0xb8ed, 0x9170, 0xb8ee,
+    0x9171, 0x9172, 0x9173, 0x9174, 0xb8ef, 0x9175, 0x9176, 0x9177,
+    0x9178, 0x9179, 0x917a, 0x9181, 0x9182, 0x9183, 0x9184, 0x9185,
+    0x9186, 0x9187, 0x9188, 0x9189, 0x918a, 0x918b, 0x918c, 0x918d,
+    0x918e, 0x918f, 0x9190, 0x9191, 0x9192, 0x9193, 0x9194, 0x9195,
+    0xb8f0, 0xb8f1, 0x9196, 0xb8f2, 0xb8f3, 0x9197, 0x9198, 0x9199,
+    0xb8f4, 0x919a, 0xb8f5, 0x919b, 0x919c, 0x919d, 0x919e, 0x919f,
+    0xb8f6, 0xb8f7, 0x91a0, 0xb8f8, 0x91a1, 0xb8f9, 0x91a2, 0x91a3,
+    0x91a4, 0x91a5, 0x91a6, 0x91a7, 0xb8fa, 0x91a8, 0x91a9, 0x91aa,
+    0xb8fb, 0x91ab, 0x91ac, 0x91ad, 0x91ae, 0x91af, 0x91b0, 0x91b1,
+    0x91b2, 0x91b3, 0x91b4, 0x91b5, 0x91b6, 0x91b7, 0x91b8, 0x91b9,
+    0xb8fc, 0xb8fd, 0x91ba, 0x91bb, 0x91bc, 0x91bd, 0x91be, 0x91bf,
+    0x91c0, 0x91c1, 0x91c2, 0x91c3, 0x91c4, 0x91c5, 0x91c6, 0x91c7,
+    0x91c8, 0x91c9, 0x91ca, 0x91cb, 0x91cc, 0x91cd, 0x91ce, 0x91cf,
+    0x91d0, 0x91d1, 0x91d2, 0x91d3, 0x91d4, 0x91d5, 0x91d6, 0x91d7,
+    0x91d8, 0x91d9, 0x91da, 0x91db, 0xb8fe, 0x91dc, 0x91dd, 0x91de,
+    /* 0xbb00 .. 0xbbff */
+    0xb9a1, 0x91df, 0x91e0, 0x91e1, 0xb9a2, 0x91e2, 0x91e3, 0x91e4,
+    0x91e5, 0x91e6, 0x91e7, 0x91e8, 0x91e9, 0xb9a3, 0x91ea, 0xb9a4,
+    0x91eb, 0xb9a5, 0x91ec, 0x91ed, 0x91ee, 0x91ef, 0x91f0, 0x91f1,
+    0xb9a6, 0x91f2, 0x91f3, 0x91f4, 0xb9a7, 0x91f5, 0x91f6, 0x91f7,
+    0xb9a8, 0x91f8, 0x91f9, 0x91fa, 0x91fb, 0x91fc, 0x91fd, 0x91fe,
+    0x9241, 0xb9a9, 0x9242, 0xb9aa, 0x9243, 0x9244, 0x9245, 0x9246,
+    0x9247, 0x9248, 0x9249, 0x924a, 0xb9ab, 0xb9ac, 0xb9ad, 0x924b,
+    0xb9ae, 0x924c, 0x924d, 0xb9af, 0xb9b0, 0xb9b1, 0xb9b2, 0x924e,
+    0x924f, 0x9250, 0x9251, 0x9252, 0xb9b3, 0xb9b4, 0x9253, 0xb9b5,
+    0x9254, 0xb9b6, 0x9255, 0x9256, 0x9257, 0xb9b7, 0x9258, 0xb9b8,
+    0xb9b9, 0x9259, 0x925a, 0x9261, 0xb9ba, 0x9262, 0x9263, 0x9264,
+    0xb9bb, 0x9265, 0x9266, 0x9267, 0x9268, 0x9269, 0x926a, 0x926b,
+    0x926c, 0xb9bc, 0x926d, 0xb9bd, 0x926e, 0x926f, 0x9270, 0x9271,
+    0x9272, 0x9273, 0x9274, 0x9275, 0xb9be, 0x9276, 0x9277, 0x9278,
+    0x9279, 0x927a, 0x9281, 0x9282, 0x9283, 0x9284, 0x9285, 0x9286,
+    0x9287, 0x9288, 0x9289, 0x928a, 0x928b, 0x928c, 0x928d, 0x928e,
+    0x928f, 0x9290, 0x9291, 0x9292, 0x9293, 0x9294, 0x9295, 0x9296,
+    0xb9bf, 0x9297, 0x9298, 0x9299, 0xb9c0, 0x929a, 0x929b, 0x929c,
+    0xb9c1, 0x929d, 0x929e, 0x929f, 0x92a0, 0x92a1, 0x92a2, 0x92a3,
+    0x92a4, 0x92a5, 0x92a6, 0x92a7, 0x92a8, 0x92a9, 0x92aa, 0x92ab,
+    0x92ac, 0x92ad, 0x92ae, 0x92af, 0xb9c2, 0x92b0, 0x92b1, 0x92b2,
+    0xb9c3, 0x92b3, 0x92b4, 0x92b5, 0xb9c4, 0x92b6, 0x92b7, 0x92b8,
+    0x92b9, 0x92ba, 0x92bb, 0x92bc, 0xb9c5, 0x92bd, 0x92be, 0xb9c6,
+    0x92bf, 0x92c0, 0x92c1, 0x92c2, 0x92c3, 0x92c4, 0x92c5, 0x92c6,
+    0xb9c7, 0x92c7, 0x92c8, 0x92c9, 0xb9c8, 0x92ca, 0x92cb, 0x92cc,
+    0xb9c9, 0x92cd, 0x92ce, 0x92cf, 0x92d0, 0x92d1, 0x92d2, 0x92d3,
+    0xb9ca, 0x92d4, 0x92d5, 0xb9cb, 0x92d6, 0x92d7, 0x92d8, 0x92d9,
+    0x92da, 0x92db, 0x92dc, 0x92dd, 0x92de, 0x92df, 0x92e0, 0x92e1,
+    0x92e2, 0x92e3, 0x92e4, 0x92e5, 0x92e6, 0x92e7, 0x92e8, 0x92e9,
+    0x92ea, 0x92eb, 0x92ec, 0x92ed, 0x92ee, 0x92ef, 0x92f0, 0x92f1,
+    0x92f2, 0x92f3, 0x92f4, 0x92f5, 0x92f6, 0x92f7, 0x92f8, 0x92f9,
+    0xb9cc, 0xb9cd, 0x92fa, 0x92fb, 0xb9ce, 0x92fc, 0x92fd, 0xb9cf,
+    /* 0xbc00 .. 0xbcff */
+    0xb9d0, 0x92fe, 0xb9d1, 0x9341, 0x9342, 0x9343, 0x9344, 0x9345,
+    0xb9d2, 0xb9d3, 0x9346, 0xb9d4, 0xb9d5, 0xb9d6, 0x9347, 0xb9d7,
+    0x9348, 0xb9d8, 0x9349, 0x934a, 0xb9d9, 0xb9da, 0xb9db, 0xb9dc,
+    0xb9dd, 0x934b, 0x934c, 0xb9de, 0xb9df, 0xb9e0, 0xb9e1, 0xb9e2,
+    0x934d, 0x934e, 0x934f, 0x9350, 0xb9e3, 0xb9e4, 0x9351, 0xb9e5,
+    0x9352, 0xb9e6, 0x9353, 0x9354, 0x9355, 0xb9e7, 0x9356, 0x9357,
+    0xb9e8, 0xb9e9, 0x9358, 0x9359, 0xb9ea, 0x935a, 0x9361, 0x9362,
+    0xb9eb, 0x9363, 0x9364, 0x9365, 0x9366, 0x9367, 0x9368, 0x9369,
+    0xb9ec, 0xb9ed, 0x936a, 0xb9ee, 0xb9ef, 0xb9f0, 0x936b, 0x936c,
+    0x936d, 0xb9f1, 0x936e, 0x936f, 0xb9f2, 0xb9f3, 0x9370, 0x9371,
+    0xb9f4, 0x9372, 0x9373, 0x9374, 0x9375, 0x9376, 0x9377, 0x9378,
+    0x9379, 0x937a, 0x9381, 0x9382, 0x9383, 0xb9f5, 0x9384, 0x9385,
+    0x9386, 0x9387, 0x9388, 0x9389, 0x938a, 0x938b, 0x938c, 0x938d,
+    0x938e, 0x938f, 0x9390, 0x9391, 0x9392, 0x9393, 0x9394, 0x9395,
+    0x9396, 0x9397, 0x9398, 0x9399, 0x939a, 0x939b, 0x939c, 0x939d,
+    0x939e, 0x939f, 0x93a0, 0x93a1, 0x93a2, 0x93a3, 0x93a4, 0x93a5,
+    0x93a6, 0x93a7, 0x93a8, 0x93a9, 0xb9f6, 0xb9f7, 0x93aa, 0x93ab,
+    0xb9f8, 0x93ac, 0x93ad, 0xb9f9, 0xb9fa, 0x93ae, 0xb9fb, 0x93af,
+    0x93b0, 0x93b1, 0x93b2, 0x93b3, 0xb9fc, 0xb9fd, 0x93b4, 0xb9fe,
+    0x93b5, 0xbaa1, 0xbaa2, 0x93b6, 0x93b7, 0x93b8, 0x93b9, 0x93ba,
+    0xbaa3, 0xbaa4, 0x93bb, 0x93bc, 0xbaa5, 0x93bd, 0x93be, 0xbaa6,
+    0xbaa7, 0x93bf, 0x93c0, 0x93c1, 0x93c2, 0x93c3, 0x93c4, 0x93c5,
+    0xbaa8, 0xbaa9, 0x93c6, 0xbaaa, 0xbaab, 0xbaac, 0x93c7, 0x93c8,
+    0x93c9, 0x93ca, 0x93cb, 0x93cc, 0xbaad, 0xbaae, 0x93cd, 0x93ce,
+    0xbaaf, 0x93cf, 0x93d0, 0x93d1, 0xbab0, 0x93d2, 0x93d3, 0x93d4,
+    0x93d5, 0x93d6, 0x93d7, 0x93d8, 0x93d9, 0xbab1, 0x93da, 0xbab2,
+    0xbab3, 0xbab4, 0x93db, 0x93dc, 0x93dd, 0xbab5, 0x93de, 0x93df,
+    0xbab6, 0x93e0, 0x93e1, 0x93e2, 0xbab7, 0x93e3, 0x93e4, 0x93e5,
+    0x93e6, 0x93e7, 0x93e8, 0x93e9, 0x93ea, 0x93eb, 0x93ec, 0x93ed,
+    0x93ee, 0x93ef, 0x93f0, 0x93f1, 0x93f2, 0x93f3, 0x93f4, 0x93f5,
+    0x93f6, 0x93f7, 0x93f8, 0x93f9, 0xbab8, 0xbab9, 0xbaba, 0x93fa,
+    0xbabb, 0x93fb, 0x93fc, 0x93fd, 0xbabc, 0x93fe, 0x9441, 0x9442,
+    /* 0xbd00 .. 0xbdff */
+    0x9443, 0x9444, 0x9445, 0x9446, 0xbabd, 0xbabe, 0x9447, 0xbabf,
+    0x9448, 0xbac0, 0x9449, 0x944a, 0x944b, 0x944c, 0x944d, 0x944e,
+    0xbac1, 0x944f, 0x9450, 0x9451, 0xbac2, 0x9452, 0x9453, 0x9454,
+    0x9455, 0x9456, 0x9457, 0x9458, 0x9459, 0x945a, 0x9461, 0x9462,
+    0x9463, 0x9464, 0x9465, 0x9466, 0xbac3, 0x9467, 0x9468, 0x9469,
+    0x946a, 0x946b, 0x946c, 0x946d, 0xbac4, 0x946e, 0x946f, 0x9470,
+    0x9471, 0x9472, 0x9473, 0x9474, 0x9475, 0x9476, 0x9477, 0x9478,
+    0x9479, 0x947a, 0x9481, 0x9482, 0x9483, 0x9484, 0x9485, 0x9486,
+    0xbac5, 0x9487, 0x9488, 0x9489, 0x948a, 0x948b, 0x948c, 0x948d,
+    0xbac6, 0xbac7, 0x948e, 0x948f, 0xbac8, 0x9490, 0x9491, 0x9492,
+    0xbac9, 0x9493, 0x9494, 0x9495, 0x9496, 0x9497, 0x9498, 0x9499,
+    0xbaca, 0xbacb, 0x949a, 0x949b, 0x949c, 0x949d, 0x949e, 0x949f,
+    0x94a0, 0x94a1, 0x94a2, 0x94a3, 0xbacc, 0x94a4, 0x94a5, 0x94a6,
+    0xbacd, 0x94a7, 0x94a8, 0x94a9, 0x94aa, 0x94ab, 0x94ac, 0x94ad,
+    0x94ae, 0x94af, 0x94b0, 0x94b1, 0x94b2, 0x94b3, 0x94b4, 0x94b5,
+    0x94b6, 0x94b7, 0x94b8, 0x94b9, 0x94ba, 0x94bb, 0x94bc, 0x94bd,
+    0xbace, 0xbacf, 0x94be, 0x94bf, 0xbad0, 0x94c0, 0x94c1, 0xbad1,
+    0xbad2, 0xbad3, 0xbad4, 0x94c2, 0x94c3, 0x94c4, 0x94c5, 0x94c6,
+    0xbad5, 0xbad6, 0x94c7, 0xbad7, 0x94c8, 0xbad8, 0x94c9, 0x94ca,
+    0x94cb, 0xbad9, 0xbada, 0x94cc, 0xbadb, 0x94cd, 0x94ce, 0x94cf,
+    0x94d0, 0x94d1, 0x94d2, 0x94d3, 0xbadc, 0x94d4, 0x94d5, 0x94d6,
+    0x94d7, 0x94d8, 0x94d9, 0x94da, 0x94db, 0x94dc, 0x94dd, 0x94de,
+    0xbadd, 0x94df, 0x94e0, 0x94e1, 0x94e2, 0x94e3, 0x94e4, 0x94e5,
+    0xbade, 0x94e6, 0x94e7, 0x94e8, 0x94e9, 0x94ea, 0x94eb, 0x94ec,
+    0x94ed, 0x94ee, 0x94ef, 0x94f0, 0x94f1, 0x94f2, 0x94f3, 0x94f4,
+    0x94f5, 0x94f6, 0x94f7, 0x94f8, 0x94f9, 0x94fa, 0x94fb, 0x94fc,
+    0x94fd, 0x94fe, 0x9541, 0x9542, 0xbadf, 0xbae0, 0x9543, 0x9544,
+    0xbae1, 0x9545, 0x9546, 0x9547, 0xbae2, 0x9548, 0x9549, 0x954a,
+    0x954b, 0x954c, 0x954d, 0x954e, 0x954f, 0x9550, 0x9551, 0x9552,
+    0x9553, 0xbae3, 0x9554, 0x9555, 0x9556, 0x9557, 0x9558, 0x9559,
+    0xbae4, 0x955a, 0x9561, 0x9562, 0xbae5, 0x9563, 0x9564, 0x9565,
+    0xbae6, 0x9566, 0x9567, 0x9568, 0x9569, 0x956a, 0x956b, 0x956c,
+    /* 0xbe00 .. 0xbeff */
+    0xbae7, 0x956d, 0x956e, 0xbae8, 0x956f, 0xbae9, 0x9570, 0x9571,
+    0x9572, 0x9573, 0x9574, 0x9575, 0xbaea, 0xbaeb, 0x9576, 0x9577,
+    0xbaec, 0x9578, 0x9579, 0x957a, 0xbaed, 0x9581, 0x9582, 0x9583,
+    0x9584, 0x9585, 0x9586, 0x9587, 0xbaee, 0xbaef, 0x9588, 0xbaf0,
+    0x9589, 0x958a, 0x958b, 0x958c, 0x958d, 0x958e, 0x958f, 0x9590,
+    0x9591, 0x9592, 0x9593, 0x9594, 0x9595, 0x9596, 0x9597, 0x9598,
+    0x9599, 0x959a, 0x959b, 0x959c, 0x959d, 0x959e, 0x959f, 0x95a0,
+    0x95a1, 0x95a2, 0x95a3, 0x95a4, 0x95a5, 0x95a6, 0x95a7, 0x95a8,
+    0x95a9, 0x95aa, 0x95ab, 0x95ac, 0xbaf1, 0xbaf2, 0x95ad, 0x95ae,
+    0xbaf3, 0x95af, 0x95b0, 0x95b1, 0xbaf4, 0x95b2, 0xbaf5, 0x95b3,
+    0x95b4, 0x95b5, 0x95b6, 0x95b7, 0xbaf6, 0xbaf7, 0x95b8, 0xbaf8,
+    0x95b9, 0xbaf9, 0xbafa, 0xbafb, 0x95ba, 0x95bb, 0x95bc, 0x95bd,
+    0xbafc, 0xbafd, 0x95be, 0x95bf, 0xbafe, 0x95c0, 0x95c1, 0x95c2,
+    0xbba1, 0x95c3, 0xbba2, 0x95c4, 0x95c5, 0x95c6, 0x95c7, 0x95c8,
+    0xbba3, 0xbba4, 0x95c9, 0xbba5, 0xbba6, 0xbba7, 0x95ca, 0x95cb,
+    0x95cc, 0x95cd, 0x95ce, 0xbba8, 0xbba9, 0xbbaa, 0x95cf, 0x95d0,
+    0xbbab, 0x95d1, 0x95d2, 0x95d3, 0xbbac, 0x95d4, 0x95d5, 0x95d6,
+    0x95d7, 0x95d8, 0x95d9, 0x95da, 0xbbad, 0xbbae, 0x95db, 0xbbaf,
+    0xbbb0, 0xbbb1, 0x95dc, 0x95dd, 0x95de, 0x95df, 0x95e0, 0x95e1,
+    0xbbb2, 0xbbb3, 0x95e2, 0x95e3, 0x95e4, 0x95e5, 0x95e6, 0x95e7,
+    0x95e8, 0x95e9, 0x95ea, 0x95eb, 0x95ec, 0x95ed, 0x95ee, 0x95ef,
+    0xbbb4, 0x95f0, 0x95f1, 0x95f2, 0x95f3, 0x95f4, 0x95f5, 0x95f6,
+    0x95f7, 0x95f8, 0x95f9, 0x95fa, 0x95fb, 0x95fc, 0x95fd, 0x95fe,
+    0x9641, 0x9642, 0x9643, 0x9644, 0x9645, 0x9646, 0x9647, 0x9648,
+    0x9649, 0x964a, 0x964b, 0x964c, 0x964d, 0x964e, 0x964f, 0x9650,
+    0x9651, 0x9652, 0x9653, 0x9654, 0x9655, 0x9656, 0x9657, 0x9658,
+    0xbbb5, 0xbbb6, 0x9659, 0x965a, 0xbbb7, 0x9661, 0x9662, 0xbbb8,
+    0xbbb9, 0x9663, 0x9664, 0x9665, 0x9666, 0x9667, 0x9668, 0x9669,
+    0xbbba, 0x966a, 0x966b, 0xbbbb, 0xbbbc, 0xbbbd, 0x966c, 0x966d,
+    0x966e, 0x966f, 0x9670, 0x9671, 0xbbbe, 0x9672, 0x9673, 0x9674,
+    0x9675, 0x9676, 0x9677, 0x9678, 0x9679, 0x967a, 0x9681, 0x9682,
+    0x9683, 0x9684, 0x9685, 0x9686, 0x9687, 0x9688, 0x9689, 0x968a,
+    /* 0xbf00 .. 0xbfff */
+    0x968b, 0xbbbf, 0x968c, 0x968d, 0x968e, 0x968f, 0x9690, 0x9691,
+    0xbbc0, 0xbbc1, 0x9692, 0x9693, 0x9694, 0x9695, 0x9696, 0x9697,
+    0x9698, 0x9699, 0x969a, 0x969b, 0x969c, 0x969d, 0x969e, 0x969f,
+    0xbbc2, 0xbbc3, 0x96a0, 0xbbc4, 0xbbc5, 0xbbc6, 0x96a1, 0x96a2,
+    0x96a3, 0x96a4, 0x96a5, 0x96a6, 0x96a7, 0x96a8, 0x96a9, 0x96aa,
+    0x96ab, 0x96ac, 0x96ad, 0x96ae, 0x96af, 0x96b0, 0x96b1, 0x96b2,
+    0x96b3, 0x96b4, 0x96b5, 0x96b6, 0x96b7, 0x96b8, 0x96b9, 0x96ba,
+    0x96bb, 0x96bc, 0x96bd, 0x96be, 0x96bf, 0x96c0, 0x96c1, 0x96c2,
+    0xbbc7, 0xbbc8, 0x96c3, 0x96c4, 0xbbc9, 0x96c5, 0x96c6, 0x96c7,
+    0xbbca, 0x96c8, 0x96c9, 0x96ca, 0x96cb, 0x96cc, 0x96cd, 0x96ce,
+    0xbbcb, 0xbbcc, 0x96cf, 0x96d0, 0x96d1, 0xbbcd, 0x96d2, 0x96d3,
+    0x96d4, 0x96d5, 0x96d6, 0x96d7, 0x96d8, 0x96d9, 0x96da, 0x96db,
+    0x96dc, 0x96dd, 0x96de, 0x96df, 0x96e0, 0x96e1, 0x96e2, 0x96e3,
+    0x96e4, 0x96e5, 0x96e6, 0x96e7, 0x96e8, 0x96e9, 0x96ea, 0x96eb,
+    0x96ec, 0x96ed, 0x96ee, 0x96ef, 0x96f0, 0x96f1, 0x96f2, 0x96f3,
+    0x96f4, 0x96f5, 0x96f6, 0x96f7, 0x96f8, 0x96f9, 0x96fa, 0x96fb,
+    0x96fc, 0x96fd, 0x96fe, 0x9741, 0x9742, 0x9743, 0x9744, 0x9745,
+    0x9746, 0x9747, 0x9748, 0x9749, 0x974a, 0x974b, 0x974c, 0x974d,
+    0x974e, 0x974f, 0x9750, 0x9751, 0xbbce, 0x9752, 0x9753, 0x9754,
+    0x9755, 0x9756, 0x9757, 0x9758, 0x9759, 0x975a, 0x9761, 0x9762,
+    0x9763, 0x9764, 0x9765, 0x9766, 0x9767, 0x9768, 0x9769, 0x976a,
+    0x976b, 0x976c, 0x976d, 0x976e, 0x976f, 0x9770, 0x9771, 0x9772,
+    0xbbcf, 0x9773, 0x9774, 0x9775, 0x9776, 0x9777, 0x9778, 0x9779,
+    0x977a, 0x9781, 0x9782, 0x9783, 0x9784, 0x9785, 0x9786, 0x9787,
+    0x9788, 0x9789, 0x978a, 0x978b, 0x978c, 0xbbd0, 0x978d, 0x978e,
+    0x978f, 0x9790, 0x9791, 0x9792, 0xbbd1, 0xbbd2, 0x9793, 0x9794,
+    0xbbd3, 0x9795, 0x9796, 0x9797, 0xbbd4, 0x9798, 0x9799, 0x979a,
+    0x979b, 0x979c, 0x979d, 0x979e, 0xbbd5, 0x979f, 0x97a0, 0xbbd6,
+    0x97a1, 0xbbd7, 0x97a2, 0x97a3, 0x97a4, 0x97a5, 0x97a6, 0x97a7,
+    0x97a8, 0x97a9, 0x97aa, 0x97ab, 0x97ac, 0x97ad, 0x97ae, 0x97af,
+    0x97b0, 0x97b1, 0x97b2, 0x97b3, 0x97b4, 0x97b5, 0x97b6, 0x97b7,
+    0x97b8, 0x97b9, 0x97ba, 0x97bb, 0x97bc, 0x97bd, 0x97be, 0x97bf,
+    /* 0xc000 .. 0xc0ff */
+    0x97c0, 0x97c1, 0x97c2, 0x97c3, 0x97c4, 0x97c5, 0x97c6, 0x97c7,
+    0x97c8, 0x97c9, 0x97ca, 0x97cb, 0x97cc, 0x97cd, 0x97ce, 0x97cf,
+    0x97d0, 0x97d1, 0x97d2, 0x97d3, 0x97d4, 0x97d5, 0x97d6, 0x97d7,
+    0x97d8, 0x97d9, 0x97da, 0x97db, 0x97dc, 0x97dd, 0x97de, 0x97df,
+    0x97e0, 0x97e1, 0x97e2, 0x97e3, 0x97e4, 0x97e5, 0x97e6, 0x97e7,
+    0x97e8, 0x97e9, 0x97ea, 0x97eb, 0x97ec, 0x97ed, 0x97ee, 0x97ef,
+    0x97f0, 0x97f1, 0x97f2, 0x97f3, 0x97f4, 0x97f5, 0x97f6, 0x97f7,
+    0x97f8, 0x97f9, 0x97fa, 0x97fb, 0xbbd8, 0x97fc, 0x97fd, 0x97fe,
+    0x9841, 0x9842, 0x9843, 0x9844, 0x9845, 0x9846, 0x9847, 0x9848,
+    0x9849, 0x984a, 0x984b, 0x984c, 0x984d, 0x984e, 0x984f, 0x9850,
+    0x9851, 0xbbd9, 0x9852, 0x9853, 0x9854, 0x9855, 0x9856, 0x9857,
+    0xbbda, 0x9858, 0x9859, 0x985a, 0xbbdb, 0x9861, 0x9862, 0x9863,
+    0xbbdc, 0x9864, 0x9865, 0x9866, 0x9867, 0x9868, 0x9869, 0x986a,
+    0xbbdd, 0xbbde, 0x986b, 0x986c, 0x986d, 0x986e, 0x986f, 0x9870,
+    0x9871, 0x9872, 0x9873, 0x9874, 0x9875, 0x9876, 0x9877, 0x9878,
+    0x9879, 0x987a, 0x9881, 0x9882, 0x9883, 0x9884, 0x9885, 0x9886,
+    0x9887, 0x9888, 0x9889, 0x988a, 0x988b, 0x988c, 0x988d, 0x988e,
+    0x988f, 0x9890, 0x9891, 0x9892, 0x9893, 0x9894, 0x9895, 0x9896,
+    0xbbdf, 0xbbe0, 0x9897, 0x9898, 0xbbe1, 0x9899, 0x989a, 0x989b,
+    0xbbe2, 0x989c, 0x989d, 0x989e, 0x989f, 0x98a0, 0x98a1, 0x98a2,
+    0xbbe3, 0xbbe4, 0x98a3, 0xbbe5, 0x98a4, 0xbbe6, 0x98a5, 0x98a6,
+    0x98a7, 0x98a8, 0x98a9, 0x98aa, 0xbbe7, 0xbbe8, 0x98ab, 0xbbe9,
+    0xbbea, 0x98ac, 0x98ad, 0xbbeb, 0xbbec, 0xbbed, 0xbbee, 0x98ae,
+    0x98af, 0x98b0, 0x98b1, 0x98b2, 0xbbef, 0xbbf0, 0x98b3, 0xbbf1,
+    0xbbf2, 0xbbf3, 0x98b4, 0x98b5, 0x98b6, 0xbbf4, 0x98b7, 0x98b8,
+    0xbbf5, 0xbbf6, 0x98b9, 0x98ba, 0xbbf7, 0x98bb, 0x98bc, 0x98bd,
+    0xbbf8, 0x98be, 0x98bf, 0x98c0, 0x98c1, 0x98c2, 0x98c3, 0x98c4,
+    0xbbf9, 0xbbfa, 0x98c5, 0xbbfb, 0xbbfc, 0xbbfd, 0x98c6, 0x98c7,
+    0x98c8, 0x98c9, 0x98ca, 0x98cb, 0xbbfe, 0xbca1, 0x98cc, 0x98cd,
+    0xbca2, 0x98ce, 0x98cf, 0x98d0, 0xbca3, 0x98d1, 0x98d2, 0x98d3,
+    0x98d4, 0x98d5, 0x98d6, 0x98d7, 0xbca4, 0xbca5, 0x98d8, 0xbca6,
+    0x98d9, 0xbca7, 0x98da, 0x98db, 0x98dc, 0x98dd, 0x98de, 0x98df,
+    /* 0xc100 .. 0xc1ff */
+    0xbca8, 0x98e0, 0x98e1, 0x98e2, 0xbca9, 0x98e3, 0x98e4, 0x98e5,
+    0xbcaa, 0x98e6, 0x98e7, 0x98e8, 0x98e9, 0x98ea, 0x98eb, 0x98ec,
+    0xbcab, 0x98ed, 0x98ee, 0x98ef, 0x98f0, 0xbcac, 0x98f1, 0x98f2,
+    0x98f3, 0x98f4, 0x98f5, 0x98f6, 0xbcad, 0xbcae, 0xbcaf, 0xbcb0,
+    0xbcb1, 0x98f7, 0x98f8, 0xbcb2, 0xbcb3, 0x98f9, 0xbcb4, 0xbcb5,
+    0x98fa, 0x98fb, 0x98fc, 0x98fd, 0xbcb6, 0xbcb7, 0x98fe, 0xbcb8,
+    0xbcb9, 0xbcba, 0x9941, 0x9942, 0x9943, 0x9944, 0xbcbb, 0x9945,
+    0xbcbc, 0xbcbd, 0x9946, 0x9947, 0xbcbe, 0x9948, 0x9949, 0x994a,
+    0xbcbf, 0x994b, 0x994c, 0x994d, 0x994e, 0x994f, 0x9950, 0x9951,
+    0xbcc0, 0xbcc1, 0x9952, 0xbcc2, 0xbcc3, 0xbcc4, 0x9953, 0x9954,
+    0x9955, 0x9956, 0x9957, 0x9958, 0xbcc5, 0xbcc6, 0x9959, 0x995a,
+    0xbcc7, 0x9961, 0x9962, 0x9963, 0xbcc8, 0x9964, 0x9965, 0x9966,
+    0x9967, 0x9968, 0x9969, 0x996a, 0xbcc9, 0xbcca, 0x996b, 0xbccb,
+    0xbccc, 0xbccd, 0x996c, 0x996d, 0x996e, 0x996f, 0x9970, 0x9971,
+    0xbcce, 0x9972, 0x9973, 0x9974, 0xbccf, 0x9975, 0x9976, 0x9977,
+    0xbcd0, 0x9978, 0x9979, 0x997a, 0x9981, 0x9982, 0x9983, 0x9984,
+    0x9985, 0x9986, 0x9987, 0x9988, 0x9989, 0xbcd1, 0x998a, 0x998b,
+    0x998c, 0x998d, 0x998e, 0x998f, 0xbcd2, 0xbcd3, 0xbcd4, 0x9990,
+    0xbcd5, 0x9991, 0x9992, 0x9993, 0xbcd6, 0x9994, 0xbcd7, 0x9995,
+    0x9996, 0x9997, 0x9998, 0x9999, 0xbcd8, 0xbcd9, 0x999a, 0xbcda,
+    0x999b, 0xbcdb, 0x999c, 0x999d, 0x999e, 0xbcdc, 0x999f, 0x99a0,
+    0xbcdd, 0xbcde, 0x99a1, 0x99a2, 0xbcdf, 0x99a3, 0x99a4, 0x99a5,
+    0xbce0, 0x99a6, 0x99a7, 0x99a8, 0x99a9, 0x99aa, 0x99ab, 0x99ac,
+    0x99ad, 0x99ae, 0x99af, 0x99b0, 0x99b1, 0xbce1, 0x99b2, 0x99b3,
+    0x99b4, 0x99b5, 0x99b6, 0x99b7, 0xbce2, 0x99b8, 0x99b9, 0x99ba,
+    0xbce3, 0x99bb, 0x99bc, 0x99bd, 0xbce4, 0x99be, 0x99bf, 0x99c0,
+    0x99c1, 0x99c2, 0x99c3, 0x99c4, 0xbce5, 0x99c5, 0x99c6, 0xbce6,
+    0xbce7, 0x99c7, 0x99c8, 0x99c9, 0x99ca, 0x99cb, 0x99cc, 0x99cd,
+    0xbce8, 0x99ce, 0x99cf, 0x99d0, 0xbce9, 0x99d1, 0x99d2, 0x99d3,
+    0xbcea, 0x99d4, 0x99d5, 0x99d6, 0x99d7, 0x99d8, 0x99d9, 0x99da,
+    0xbceb, 0xbcec, 0x99db, 0xbced, 0x99dc, 0x99dd, 0x99de, 0x99df,
+    0x99e0, 0x99e1, 0x99e2, 0x99e3, 0xbcee, 0xbcef, 0x99e4, 0x99e5,
+    /* 0xc200 .. 0xc2ff */
+    0xbcf0, 0x99e6, 0x99e7, 0x99e8, 0xbcf1, 0x99e9, 0x99ea, 0x99eb,
+    0x99ec, 0x99ed, 0x99ee, 0x99ef, 0xbcf2, 0xbcf3, 0x99f0, 0xbcf4,
+    0x99f1, 0xbcf5, 0x99f2, 0x99f3, 0x99f4, 0x99f5, 0x99f6, 0x99f7,
+    0xbcf6, 0xbcf7, 0x99f8, 0x99f9, 0xbcf8, 0x99fa, 0x99fb, 0xbcf9,
+    0xbcfa, 0x99fc, 0x99fd, 0x99fe, 0x9a41, 0x9a42, 0x9a43, 0x9a44,
+    0xbcfb, 0xbcfc, 0x9a45, 0xbcfd, 0x9a46, 0xbcfe, 0x9a47, 0xbda1,
+    0x9a48, 0xbda2, 0xbda3, 0x9a49, 0xbda4, 0x9a4a, 0x9a4b, 0x9a4c,
+    0x9a4d, 0x9a4e, 0x9a4f, 0x9a50, 0x9a51, 0x9a52, 0x9a53, 0x9a54,
+    0x9a55, 0x9a56, 0x9a57, 0x9a58, 0x9a59, 0x9a5a, 0x9a61, 0x9a62,
+    0xbda5, 0x9a63, 0x9a64, 0x9a65, 0x9a66, 0x9a67, 0x9a68, 0x9a69,
+    0xbda6, 0xbda7, 0x9a6a, 0x9a6b, 0xbda8, 0x9a6c, 0x9a6d, 0x9a6e,
+    0xbda9, 0x9a6f, 0x9a70, 0x9a71, 0x9a72, 0x9a73, 0x9a74, 0x9a75,
+    0xbdaa, 0x9a76, 0x9a77, 0x9a78, 0x9a79, 0xbdab, 0x9a7a, 0x9a81,
+    0x9a82, 0x9a83, 0x9a84, 0x9a85, 0xbdac, 0xbdad, 0x9a86, 0x9a87,
+    0xbdae, 0x9a88, 0x9a89, 0x9a8a, 0xbdaf, 0x9a8b, 0x9a8c, 0x9a8d,
+    0x9a8e, 0x9a8f, 0x9a90, 0x9a91, 0xbdb0, 0xbdb1, 0x9a92, 0xbdb2,
+    0x9a93, 0xbdb3, 0x9a94, 0x9a95, 0x9a96, 0x9a97, 0x9a98, 0x9a99,
+    0xbdb4, 0xbdb5, 0x9a9a, 0x9a9b, 0x9a9c, 0x9a9d, 0x9a9e, 0x9a9f,
+    0xbdb6, 0x9aa0, 0x9aa1, 0x9aa2, 0x9aa3, 0x9aa4, 0x9aa5, 0x9aa6,
+    0xbdb7, 0x9aa7, 0x9aa8, 0xbdb8, 0x9aa9, 0xbdb9, 0x9aaa, 0x9aab,
+    0x9aac, 0x9aad, 0x9aae, 0x9aaf, 0xbdba, 0xbdbb, 0x9ab0, 0x9ab1,
+    0xbdbc, 0x9ab2, 0x9ab3, 0x9ab4, 0xbdbd, 0xbdbe, 0x9ab5, 0x9ab6,
+    0x9ab7, 0x9ab8, 0x9ab9, 0x9aba, 0xbdbf, 0xbdc0, 0x9abb, 0xbdc1,
+    0x9abc, 0xbdc2, 0x9abd, 0x9abe, 0x9abf, 0x9ac0, 0x9ac1, 0x9ac2,
+    0x9ac3, 0x9ac4, 0x9ac5, 0x9ac6, 0x9ac7, 0x9ac8, 0x9ac9, 0x9aca,
+    0x9acb, 0x9acc, 0x9acd, 0x9ace, 0x9acf, 0x9ad0, 0x9ad1, 0x9ad2,
+    0x9ad3, 0x9ad4, 0x9ad5, 0x9ad6, 0x9ad7, 0x9ad8, 0x9ad9, 0x9ada,
+    0x9adb, 0x9adc, 0x9add, 0x9ade, 0xbdc3, 0xbdc4, 0x9adf, 0x9ae0,
+    0xbdc5, 0x9ae1, 0x9ae2, 0xbdc6, 0xbdc7, 0x9ae3, 0x9ae4, 0x9ae5,
+    0x9ae6, 0x9ae7, 0x9ae8, 0xbdc8, 0xbdc9, 0xbdca, 0x9ae9, 0xbdcb,
+    0x9aea, 0xbdcc, 0x9aeb, 0x9aec, 0x9aed, 0x9aee, 0xbdcd, 0x9aef,
+    0xbdce, 0xbdcf, 0x9af0, 0xbdd0, 0xbdd1, 0x9af1, 0x9af2, 0x9af3,
+    /* 0xc300 .. 0xc3ff */
+    0xbdd2, 0x9af4, 0x9af5, 0x9af6, 0x9af7, 0x9af8, 0x9af9, 0x9afa,
+    0xbdd3, 0xbdd4, 0x9afb, 0x9afc, 0xbdd5, 0xbdd6, 0x9afd, 0x9afe,
+    0x9b41, 0x9b42, 0x9b43, 0xbdd7, 0xbdd8, 0xbdd9, 0x9b44, 0x9b45,
+    0xbdda, 0x9b46, 0x9b47, 0x9b48, 0xbddb, 0x9b49, 0x9b4a, 0x9b4b,
+    0x9b4c, 0x9b4d, 0x9b4e, 0x9b4f, 0xbddc, 0xbddd, 0x9b50, 0x9b51,
+    0xbdde, 0xbddf, 0x9b52, 0x9b53, 0x9b54, 0x9b55, 0x9b56, 0x9b57,
+    0x9b58, 0x9b59, 0x9b5a, 0x9b61, 0x9b62, 0x9b63, 0x9b64, 0x9b65,
+    0x9b66, 0x9b67, 0x9b68, 0x9b69, 0x9b6a, 0x9b6b, 0x9b6c, 0x9b6d,
+    0x9b6e, 0x9b6f, 0x9b70, 0x9b71, 0x9b72, 0xbde0, 0x9b73, 0x9b74,
+    0x9b75, 0x9b76, 0x9b77, 0x9b78, 0x9b79, 0x9b7a, 0x9b81, 0x9b82,
+    0x9b83, 0x9b84, 0x9b85, 0x9b86, 0x9b87, 0x9b88, 0x9b89, 0x9b8a,
+    0x9b8b, 0x9b8c, 0x9b8d, 0x9b8e, 0x9b8f, 0x9b90, 0x9b91, 0x9b92,
+    0x9b93, 0x9b94, 0x9b95, 0x9b96, 0x9b97, 0x9b98, 0x9b99, 0x9b9a,
+    0xbde1, 0xbde2, 0x9b9b, 0x9b9c, 0xbde3, 0x9b9d, 0x9b9e, 0x9b9f,
+    0xbde4, 0x9ba0, 0xbde5, 0x9ba1, 0x9ba2, 0x9ba3, 0x9ba4, 0x9ba5,
+    0xbde6, 0xbde7, 0x9ba6, 0x9ba7, 0xbde8, 0xbde9, 0x9ba8, 0x9ba9,
+    0x9baa, 0x9bab, 0x9bac, 0x9bad, 0xbdea, 0x9bae, 0x9baf, 0x9bb0,
+    0xbdeb, 0x9bb1, 0x9bb2, 0x9bb3, 0xbdec, 0x9bb4, 0x9bb5, 0x9bb6,
+    0x9bb7, 0x9bb8, 0x9bb9, 0x9bba, 0x9bbb, 0x9bbc, 0x9bbd, 0x9bbe,
+    0x9bbf, 0x9bc0, 0x9bc1, 0x9bc2, 0x9bc3, 0x9bc4, 0x9bc5, 0x9bc6,
+    0x9bc7, 0x9bc8, 0x9bc9, 0x9bca, 0x9bcb, 0x9bcc, 0x9bcd, 0x9bce,
+    0x9bcf, 0x9bd0, 0x9bd1, 0x9bd2, 0x9bd3, 0x9bd4, 0x9bd5, 0x9bd6,
+    0x9bd7, 0x9bd8, 0x9bd9, 0x9bda, 0x9bdb, 0x9bdc, 0x9bdd, 0x9bde,
+    0x9bdf, 0x9be0, 0x9be1, 0x9be2, 0x9be3, 0x9be4, 0x9be5, 0x9be6,
+    0xbded, 0x9be7, 0x9be8, 0x9be9, 0x9bea, 0x9beb, 0x9bec, 0x9bed,
+    0x9bee, 0x9bef, 0x9bf0, 0x9bf1, 0x9bf2, 0x9bf3, 0x9bf4, 0x9bf5,
+    0x9bf6, 0x9bf7, 0x9bf8, 0x9bf9, 0x9bfa, 0x9bfb, 0x9bfc, 0x9bfd,
+    0xbdee, 0xbdef, 0x9bfe, 0x9c41, 0xbdf0, 0x9c42, 0x9c43, 0xbdf1,
+    0xbdf2, 0x9c44, 0xbdf3, 0x9c45, 0x9c46, 0x9c47, 0x9c48, 0x9c49,
+    0xbdf4, 0xbdf5, 0x9c4a, 0x9c4b, 0x9c4c, 0xbdf6, 0x9c4d, 0x9c4e,
+    0x9c4f, 0x9c50, 0x9c51, 0x9c52, 0xbdf7, 0xbdf8, 0x9c53, 0x9c54,
+    0xbdf9, 0x9c55, 0x9c56, 0x9c57, 0x9c58, 0x9c59, 0x9c5a, 0x9c61,
+    /* 0xc400 .. 0xc4ff */
+    0x9c62, 0x9c63, 0x9c64, 0x9c65, 0x9c66, 0x9c67, 0x9c68, 0x9c69,
+    0xbdfa, 0x9c6a, 0x9c6b, 0x9c6c, 0x9c6d, 0x9c6e, 0x9c6f, 0x9c70,
+    0xbdfb, 0x9c71, 0x9c72, 0x9c73, 0x9c74, 0x9c75, 0x9c76, 0x9c77,
+    0x9c78, 0x9c79, 0x9c7a, 0x9c81, 0x9c82, 0x9c83, 0x9c84, 0x9c85,
+    0x9c86, 0x9c87, 0x9c88, 0x9c89, 0xbdfc, 0x9c8a, 0x9c8b, 0x9c8c,
+    0x9c8d, 0x9c8e, 0x9c8f, 0x9c90, 0xbdfd, 0x9c91, 0x9c92, 0x9c93,
+    0xbdfe, 0x9c94, 0x9c95, 0x9c96, 0xbea1, 0x9c97, 0x9c98, 0x9c99,
+    0x9c9a, 0x9c9b, 0x9c9c, 0x9c9d, 0xbea2, 0xbea3, 0x9c9e, 0x9c9f,
+    0x9ca0, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca4, 0x9ca5, 0x9ca6, 0x9ca7,
+    0xbea4, 0x9ca8, 0x9ca9, 0x9caa, 0x9cab, 0x9cac, 0x9cad, 0x9cae,
+    0x9caf, 0x9cb0, 0x9cb1, 0x9cb2, 0x9cb3, 0x9cb4, 0x9cb5, 0x9cb6,
+    0x9cb7, 0x9cb8, 0x9cb9, 0x9cba, 0x9cbb, 0x9cbc, 0x9cbd, 0x9cbe,
+    0x9cbf, 0x9cc0, 0x9cc1, 0x9cc2, 0xbea5, 0xbea6, 0x9cc3, 0x9cc4,
+    0xbea7, 0x9cc5, 0x9cc6, 0x9cc7, 0xbea8, 0x9cc8, 0x9cc9, 0x9cca,
+    0x9ccb, 0x9ccc, 0x9ccd, 0x9cce, 0xbea9, 0xbeaa, 0x9ccf, 0x9cd0,
+    0x9cd1, 0xbeab, 0x9cd2, 0x9cd3, 0x9cd4, 0x9cd5, 0x9cd6, 0x9cd7,
+    0xbeac, 0x9cd8, 0x9cd9, 0x9cda, 0x9cdb, 0x9cdc, 0x9cdd, 0x9cde,
+    0x9cdf, 0x9ce0, 0x9ce1, 0x9ce2, 0x9ce3, 0x9ce4, 0x9ce5, 0x9ce6,
+    0x9ce7, 0x9ce8, 0x9ce9, 0x9cea, 0xbead, 0x9ceb, 0x9cec, 0x9ced,
+    0x9cee, 0x9cef, 0x9cf0, 0x9cf1, 0xbeae, 0x9cf2, 0x9cf3, 0x9cf4,
+    0x9cf5, 0x9cf6, 0x9cf7, 0x9cf8, 0x9cf9, 0x9cfa, 0x9cfb, 0x9cfc,
+    0x9cfd, 0x9cfe, 0x9d41, 0x9d42, 0x9d43, 0x9d44, 0x9d45, 0x9d46,
+    0x9d47, 0x9d48, 0x9d49, 0x9d4a, 0x9d4b, 0x9d4c, 0x9d4d, 0x9d4e,
+    0xbeaf, 0x9d4f, 0x9d50, 0x9d51, 0xbeb0, 0x9d52, 0x9d53, 0x9d54,
+    0x9d55, 0x9d56, 0x9d57, 0x9d58, 0x9d59, 0x9d5a, 0x9d61, 0x9d62,
+    0x9d63, 0x9d64, 0x9d65, 0x9d66, 0x9d67, 0x9d68, 0x9d69, 0x9d6a,
+    0x9d6b, 0x9d6c, 0x9d6d, 0x9d6e, 0x9d6f, 0x9d70, 0x9d71, 0x9d72,
+    0x9d73, 0x9d74, 0x9d75, 0x9d76, 0x9d77, 0x9d78, 0x9d79, 0x9d7a,
+    0x9d81, 0x9d82, 0x9d83, 0x9d84, 0x9d85, 0x9d86, 0x9d87, 0x9d88,
+    0x9d89, 0xbeb1, 0x9d8a, 0x9d8b, 0x9d8c, 0x9d8d, 0x9d8e, 0x9d8f,
+    0xbeb2, 0xbeb3, 0x9d90, 0x9d91, 0xbeb4, 0x9d92, 0x9d93, 0x9d94,
+    0xbeb5, 0x9d95, 0xbeb6, 0x9d96, 0x9d97, 0x9d98, 0x9d99, 0xbeb7,
+    /* 0xc500 .. 0xc5ff */
+    0xbeb8, 0xbeb9, 0x9d9a, 0x9d9b, 0x9d9c, 0x9d9d, 0x9d9e, 0x9d9f,
+    0x9da0, 0x9da1, 0x9da2, 0x9da3, 0xbeba, 0x9da4, 0x9da5, 0x9da6,
+    0xbebb, 0x9da7, 0x9da8, 0x9da9, 0xbebc, 0x9daa, 0x9dab, 0x9dac,
+    0x9dad, 0x9dae, 0x9daf, 0x9db0, 0xbebd, 0x9db1, 0x9db2, 0x9db3,
+    0x9db4, 0x9db5, 0x9db6, 0x9db7, 0x9db8, 0x9db9, 0x9dba, 0x9dbb,
+    0xbebe, 0xbebf, 0x9dbc, 0x9dbd, 0xbec0, 0x9dbe, 0x9dbf, 0x9dc0,
+    0xbec1, 0x9dc1, 0x9dc2, 0x9dc3, 0x9dc4, 0x9dc5, 0x9dc6, 0x9dc7,
+    0xbec2, 0xbec3, 0x9dc8, 0xbec4, 0x9dc9, 0xbec5, 0x9dca, 0x9dcb,
+    0x9dcc, 0x9dcd, 0x9dce, 0x9dcf, 0xbec6, 0xbec7, 0x9dd0, 0x9dd1,
+    0xbec8, 0xbec9, 0xbeca, 0x9dd2, 0xbecb, 0xbecc, 0xbecd, 0x9dd3,
+    0x9dd4, 0x9dd5, 0x9dd6, 0xbece, 0xbecf, 0xbed0, 0x9dd7, 0xbed1,
+    0xbed2, 0xbed3, 0x9dd8, 0x9dd9, 0x9dda, 0xbed4, 0xbed5, 0x9ddb,
+    0xbed6, 0xbed7, 0x9ddc, 0x9ddd, 0xbed8, 0x9dde, 0x9ddf, 0x9de0,
+    0xbed9, 0x9de1, 0x9de2, 0x9de3, 0x9de4, 0x9de5, 0x9de6, 0x9de7,
+    0xbeda, 0xbedb, 0x9de8, 0xbedc, 0xbedd, 0xbede, 0x9de9, 0x9dea,
+    0x9deb, 0x9dec, 0x9ded, 0x9dee, 0xbedf, 0xbee0, 0x9def, 0x9df0,
+    0xbee1, 0x9df1, 0x9df2, 0x9df3, 0xbee2, 0x9df4, 0x9df5, 0xbee3,
+    0x9df6, 0x9df7, 0x9df8, 0x9df9, 0xbee4, 0xbee5, 0x9dfa, 0xbee6,
+    0x9dfb, 0xbee7, 0x9dfc, 0x9dfd, 0x9dfe, 0xbee8, 0x9e41, 0xbee9,
+    0xbeea, 0x9e42, 0x9e43, 0x9e44, 0xbeeb, 0x9e45, 0x9e46, 0x9e47,
+    0xbeec, 0x9e48, 0x9e49, 0x9e4a, 0x9e4b, 0x9e4c, 0x9e4d, 0x9e4e,
+    0x9e4f, 0xbeed, 0x9e50, 0x9e51, 0x9e52, 0x9e53, 0x9e54, 0x9e55,
+    0x9e56, 0x9e57, 0x9e58, 0x9e59, 0xbeee, 0xbeef, 0x9e5a, 0x9e61,
+    0xbef0, 0xbef1, 0x9e62, 0xbef2, 0xbef3, 0xbef4, 0xbef5, 0x9e63,
+    0x9e64, 0x9e65, 0x9e66, 0x9e67, 0xbef6, 0xbef7, 0xbef8, 0xbef9,
+    0xbefa, 0xbefb, 0xbefc, 0x9e68, 0xbefd, 0x9e69, 0xbefe, 0x9e6a,
+    0xbfa1, 0xbfa2, 0x9e6b, 0x9e6c, 0xbfa3, 0x9e6d, 0x9e6e, 0x9e6f,
+    0xbfa4, 0x9e70, 0x9e71, 0x9e72, 0x9e73, 0x9e74, 0x9e75, 0x9e76,
+    0xbfa5, 0xbfa6, 0x9e77, 0xbfa7, 0x9e78, 0xbfa8, 0x9e79, 0x9e7a,
+    0x9e81, 0x9e82, 0x9e83, 0x9e84, 0xbfa9, 0xbfaa, 0xbfab, 0x9e85,
+    0xbfac, 0x9e86, 0x9e87, 0x9e88, 0xbfad, 0x9e89, 0xbfae, 0xbfaf,
+    0x9e8a, 0x9e8b, 0x9e8c, 0x9e8d, 0xbfb0, 0xbfb1, 0xbfb2, 0xbfb3,
+    /* 0xc600 .. 0xc6ff */
+    0xbfb4, 0xbfb5, 0x9e8e, 0x9e8f, 0x9e90, 0xbfb6, 0xbfb7, 0xbfb8,
+    0xbfb9, 0x9e91, 0x9e92, 0x9e93, 0xbfba, 0x9e94, 0x9e95, 0x9e96,
+    0xbfbb, 0x9e97, 0x9e98, 0x9e99, 0x9e9a, 0x9e9b, 0x9e9c, 0x9e9d,
+    0xbfbc, 0xbfbd, 0x9e9e, 0xbfbe, 0xbfbf, 0x9e9f, 0x9ea0, 0x9ea1,
+    0x9ea2, 0x9ea3, 0x9ea4, 0x9ea5, 0xbfc0, 0xbfc1, 0x9ea6, 0x9ea7,
+    0xbfc2, 0x9ea8, 0x9ea9, 0x9eaa, 0xbfc3, 0xbfc4, 0xbfc5, 0x9eab,
+    0xbfc6, 0x9eac, 0x9ead, 0xbfc7, 0xbfc8, 0xbfc9, 0x9eae, 0xbfca,
+    0x9eaf, 0xbfcb, 0x9eb0, 0xbfcc, 0x9eb1, 0x9eb2, 0x9eb3, 0x9eb4,
+    0xbfcd, 0xbfce, 0x9eb5, 0x9eb6, 0xbfcf, 0x9eb7, 0x9eb8, 0x9eb9,
+    0xbfd0, 0x9eba, 0x9ebb, 0x9ebc, 0x9ebd, 0x9ebe, 0x9ebf, 0x9ec0,
+    0xbfd1, 0xbfd2, 0x9ec1, 0xbfd3, 0xbfd4, 0xbfd5, 0x9ec2, 0x9ec3,
+    0x9ec4, 0x9ec5, 0x9ec6, 0x9ec7, 0xbfd6, 0xbfd7, 0x9ec8, 0x9ec9,
+    0xbfd8, 0x9eca, 0x9ecb, 0x9ecc, 0x9ecd, 0x9ece, 0x9ecf, 0x9ed0,
+    0x9ed1, 0x9ed2, 0x9ed3, 0x9ed4, 0xbfd9, 0x9ed5, 0x9ed6, 0xbfda,
+    0x9ed7, 0xbfdb, 0x9ed8, 0x9ed9, 0x9eda, 0x9edb, 0x9edc, 0x9edd,
+    0xbfdc, 0xbfdd, 0x9ede, 0x9edf, 0xbfde, 0x9ee0, 0x9ee1, 0x9ee2,
+    0xbfdf, 0x9ee3, 0x9ee4, 0x9ee5, 0x9ee6, 0x9ee7, 0x9ee8, 0x9ee9,
+    0xbfe0, 0xbfe1, 0x9eea, 0xbfe2, 0x9eeb, 0xbfe3, 0x9eec, 0x9eed,
+    0x9eee, 0x9eef, 0x9ef0, 0x9ef1, 0xbfe4, 0xbfe5, 0x9ef2, 0x9ef3,
+    0xbfe6, 0x9ef4, 0x9ef5, 0x9ef6, 0xbfe7, 0x9ef7, 0x9ef8, 0x9ef9,
+    0x9efa, 0x9efb, 0x9efc, 0x9efd, 0xbfe8, 0xbfe9, 0x9efe, 0xbfea,
+    0x9f41, 0xbfeb, 0x9f42, 0x9f43, 0x9f44, 0x9f45, 0x9f46, 0x9f47,
+    0xbfec, 0xbfed, 0x9f48, 0x9f49, 0xbfee, 0x9f4a, 0x9f4b, 0x9f4c,
+    0xbfef, 0xbff0, 0xbff1, 0x9f4d, 0x9f4e, 0x9f4f, 0x9f50, 0x9f51,
+    0xbff2, 0xbff3, 0x9f52, 0xbff4, 0x9f53, 0xbff5, 0x9f54, 0x9f55,
+    0x9f56, 0x9f57, 0x9f58, 0x9f59, 0xbff6, 0xbff7, 0x9f5a, 0x9f61,
+    0xbff8, 0x9f62, 0x9f63, 0x9f64, 0xbff9, 0x9f65, 0x9f66, 0x9f67,
+    0x9f68, 0x9f69, 0x9f6a, 0x9f6b, 0xbffa, 0xbffb, 0x9f6c, 0x9f6d,
+    0xbffc, 0xbffd, 0x9f6e, 0x9f6f, 0x9f70, 0x9f71, 0x9f72, 0x9f73,
+    0xbffe, 0xc0a1, 0x9f74, 0x9f75, 0xc0a2, 0x9f76, 0x9f77, 0x9f78,
+    0xc0a3, 0x9f79, 0x9f7a, 0x9f81, 0x9f82, 0x9f83, 0x9f84, 0x9f85,
+    0xc0a4, 0xc0a5, 0x9f86, 0x9f87, 0x9f88, 0xc0a6, 0x9f89, 0x9f8a,
+    /* 0xc700 .. 0xc7ff */
+    0x9f8b, 0x9f8c, 0x9f8d, 0x9f8e, 0xc0a7, 0xc0a8, 0x9f8f, 0x9f90,
+    0xc0a9, 0x9f91, 0x9f92, 0x9f93, 0xc0aa, 0x9f94, 0x9f95, 0x9f96,
+    0x9f97, 0x9f98, 0x9f99, 0x9f9a, 0xc0ab, 0xc0ac, 0x9f9b, 0xc0ad,
+    0x9f9c, 0xc0ae, 0x9f9d, 0x9f9e, 0x9f9f, 0x9fa0, 0x9fa1, 0x9fa2,
+    0xc0af, 0xc0b0, 0x9fa3, 0x9fa4, 0xc0b1, 0x9fa5, 0x9fa6, 0x9fa7,
+    0xc0b2, 0x9fa8, 0x9fa9, 0x9faa, 0x9fab, 0x9fac, 0x9fad, 0x9fae,
+    0xc0b3, 0xc0b4, 0x9faf, 0xc0b5, 0x9fb0, 0xc0b6, 0x9fb1, 0xc0b7,
+    0x9fb2, 0x9fb3, 0x9fb4, 0x9fb5, 0xc0b8, 0xc0b9, 0x9fb6, 0x9fb7,
+    0xc0ba, 0x9fb8, 0x9fb9, 0x9fba, 0xc0bb, 0x9fbb, 0x9fbc, 0x9fbd,
+    0x9fbe, 0x9fbf, 0xc0bc, 0x9fc0, 0xc0bd, 0xc0be, 0x9fc1, 0xc0bf,
+    0x9fc2, 0xc0c0, 0xc0c1, 0xc0c2, 0xc0c3, 0xc0c4, 0xc0c5, 0xc0c6,
+    0xc0c7, 0x9fc3, 0x9fc4, 0x9fc5, 0xc0c8, 0x9fc6, 0x9fc7, 0x9fc8,
+    0xc0c9, 0x9fc9, 0x9fca, 0x9fcb, 0x9fcc, 0x9fcd, 0x9fce, 0x9fcf,
+    0xc0ca, 0x9fd0, 0x9fd1, 0xc0cb, 0x9fd2, 0x9fd3, 0x9fd4, 0x9fd5,
+    0x9fd6, 0x9fd7, 0x9fd8, 0x9fd9, 0xc0cc, 0xc0cd, 0x9fda, 0x9fdb,
+    0xc0ce, 0x9fdc, 0x9fdd, 0x9fde, 0xc0cf, 0xc0d0, 0xc0d1, 0x9fdf,
+    0x9fe0, 0x9fe1, 0x9fe2, 0xc0d2, 0xc0d3, 0xc0d4, 0x9fe3, 0xc0d5,
+    0xc0d6, 0xc0d7, 0xc0d8, 0x9fe4, 0x9fe5, 0x9fe6, 0xc0d9, 0x9fe7,
+    0xc0da, 0xc0db, 0x9fe8, 0x9fe9, 0xc0dc, 0x9fea, 0xc0dd, 0xc0de,
+    0xc0df, 0x9feb, 0xc0e0, 0x9fec, 0x9fed, 0x9fee, 0x9fef, 0x9ff0,
+    0xc0e1, 0xc0e2, 0x9ff1, 0xc0e3, 0xc0e4, 0xc0e5, 0xc0e6, 0x9ff2,
+    0x9ff3, 0x9ff4, 0x9ff5, 0x9ff6, 0xc0e7, 0xc0e8, 0x9ff7, 0x9ff8,
+    0xc0e9, 0x9ff9, 0x9ffa, 0x9ffb, 0xc0ea, 0x9ffc, 0x9ffd, 0x9ffe,
+    0xa041, 0xa042, 0xa043, 0xa044, 0xc0eb, 0xc0ec, 0xa045, 0xc0ed,
+    0xc0ee, 0xc0ef, 0xa046, 0xa047, 0xa048, 0xa049, 0xa04a, 0xa04b,
+    0xc0f0, 0xc0f1, 0xa04c, 0xa04d, 0xc0f2, 0xa04e, 0xc0f3, 0xa04f,
+    0xc0f4, 0xa050, 0xa051, 0xa052, 0xa053, 0xa054, 0xa055, 0xa056,
+    0xc0f5, 0xa057, 0xa058, 0xa059, 0xa05a, 0xc0f6, 0xa061, 0xa062,
+    0xa063, 0xa064, 0xa065, 0xa066, 0xc0f7, 0xa067, 0xa068, 0xa069,
+    0xc0f8, 0xa06a, 0xa06b, 0xa06c, 0xc0f9, 0xa06d, 0xa06e, 0xa06f,
+    0xa070, 0xa071, 0xa072, 0xa073, 0xa074, 0xa075, 0xa076, 0xa077,
+    0xa078, 0xa079, 0xa07a, 0xa081, 0xa082, 0xa083, 0xa084, 0xa085,
+    /* 0xc800 .. 0xc8ff */
+    0xc0fa, 0xc0fb, 0xa086, 0xa087, 0xc0fc, 0xa088, 0xa089, 0xa08a,
+    0xc0fd, 0xa08b, 0xc0fe, 0xa08c, 0xa08d, 0xa08e, 0xa08f, 0xa090,
+    0xc1a1, 0xc1a2, 0xa091, 0xc1a3, 0xa092, 0xc1a4, 0xc1a5, 0xa093,
+    0xa094, 0xa095, 0xa096, 0xa097, 0xc1a6, 0xc1a7, 0xa098, 0xa099,
+    0xc1a8, 0xa09a, 0xa09b, 0xa09c, 0xc1a9, 0xa09d, 0xa09e, 0xa09f,
+    0xa0a0, 0xa0a1, 0xa0a2, 0xa0a3, 0xc1aa, 0xc1ab, 0xa0a4, 0xc1ac,
+    0xa0a5, 0xc1ad, 0xa0a6, 0xa0a7, 0xa0a8, 0xa0a9, 0xa0aa, 0xa0ab,
+    0xc1ae, 0xa0ac, 0xa0ad, 0xa0ae, 0xc1af, 0xa0af, 0xa0b0, 0xa0b1,
+    0xc1b0, 0xa0b2, 0xa0b3, 0xa0b4, 0xa0b5, 0xa0b6, 0xa0b7, 0xa0b8,
+    0xc1b1, 0xc1b2, 0xa0b9, 0xa0ba, 0xc1b3, 0xc1b4, 0xa0bb, 0xa0bc,
+    0xa0bd, 0xa0be, 0xa0bf, 0xa0c0, 0xc1b5, 0xa0c1, 0xa0c2, 0xa0c3,
+    0xa0c4, 0xa0c5, 0xa0c6, 0xa0c7, 0xa0c8, 0xa0c9, 0xa0ca, 0xa0cb,
+    0xa0cc, 0xa0cd, 0xa0ce, 0xa0cf, 0xa0d0, 0xa0d1, 0xa0d2, 0xa0d3,
+    0xa0d4, 0xa0d5, 0xa0d6, 0xa0d7, 0xa0d8, 0xa0d9, 0xa0da, 0xa0db,
+    0xc1b6, 0xc1b7, 0xa0dc, 0xa0dd, 0xc1b8, 0xa0de, 0xa0df, 0xa0e0,
+    0xc1b9, 0xa0e1, 0xc1ba, 0xa0e2, 0xa0e3, 0xa0e4, 0xa0e5, 0xa0e6,
+    0xc1bb, 0xc1bc, 0xa0e7, 0xc1bd, 0xa0e8, 0xc1be, 0xc1bf, 0xc1c0,
+    0xa0e9, 0xa0ea, 0xa0eb, 0xc1c1, 0xc1c2, 0xc1c3, 0xa0ec, 0xa0ed,
+    0xa0ee, 0xa0ef, 0xa0f0, 0xa0f1, 0xc1c4, 0xa0f2, 0xa0f3, 0xa0f4,
+    0xa0f5, 0xa0f6, 0xa0f7, 0xa0f8, 0xa0f9, 0xc1c5, 0xa0fa, 0xc1c6,
+    0xa0fb, 0xc1c7, 0xa0fc, 0xa0fd, 0xa0fe, 0xa141, 0xa142, 0xa143,
+    0xc1c8, 0xa144, 0xa145, 0xa146, 0xa147, 0xa148, 0xa149, 0xa14a,
+    0xa14b, 0xa14c, 0xa14d, 0xa14e, 0xa14f, 0xa150, 0xa151, 0xa152,
+    0xa153, 0xa154, 0xa155, 0xa156, 0xc1c9, 0xc1ca, 0xa157, 0xa158,
+    0xa159, 0xa15a, 0xa161, 0xa162, 0xc1cb, 0xa163, 0xa164, 0xa165,
+    0xc1cc, 0xa166, 0xa167, 0xa168, 0xc1cd, 0xa169, 0xa16a, 0xa16b,
+    0xa16c, 0xa16d, 0xa16e, 0xa16f, 0xc1ce, 0xc1cf, 0xa170, 0xc1d0,
+    0xa171, 0xc1d1, 0xa172, 0xa173, 0xa174, 0xa175, 0xa176, 0xa177,
+    0xc1d2, 0xc1d3, 0xa178, 0xa179, 0xc1d4, 0xa17a, 0xa181, 0xa182,
+    0xa183, 0xa184, 0xa185, 0xa186, 0xa187, 0xa188, 0xa189, 0xa18a,
+    0xa18b, 0xa18c, 0xa18d, 0xa18e, 0xa18f, 0xc1d5, 0xa190, 0xa191,
+    0xa192, 0xa193, 0xa194, 0xa195, 0xc1d6, 0xc1d7, 0xa196, 0xa197,
+    /* 0xc900 .. 0xc9ff */
+    0xc1d8, 0xa198, 0xa199, 0xa19a, 0xc1d9, 0xc1da, 0xc1db, 0xa19b,
+    0xa19c, 0xa19d, 0xa19e, 0xa19f, 0xc1dc, 0xc1dd, 0xa1a0, 0xc1de,
+    0xa241, 0xc1df, 0xa242, 0xa243, 0xa244, 0xa245, 0xa246, 0xa247,
+    0xc1e0, 0xa248, 0xa249, 0xa24a, 0xa24b, 0xa24c, 0xa24d, 0xa24e,
+    0xa24f, 0xa250, 0xa251, 0xa252, 0xa253, 0xa254, 0xa255, 0xa256,
+    0xa257, 0xa258, 0xa259, 0xa25a, 0xc1e1, 0xa261, 0xa262, 0xa263,
+    0xa264, 0xa265, 0xa266, 0xa267, 0xc1e2, 0xa268, 0xa269, 0xa26a,
+    0xa26b, 0xa26c, 0xa26d, 0xa26e, 0xa26f, 0xa270, 0xa271, 0xa272,
+    0xa273, 0xa274, 0xa275, 0xa276, 0xa277, 0xa278, 0xa279, 0xa27a,
+    0xa281, 0xa282, 0xa283, 0xa284, 0xa285, 0xa286, 0xa287, 0xa288,
+    0xc1e3, 0xc1e4, 0xa289, 0xa28a, 0xc1e5, 0xa28b, 0xa28c, 0xa28d,
+    0xc1e6, 0xa28e, 0xa28f, 0xa290, 0xa291, 0xa292, 0xa293, 0xa294,
+    0xc1e7, 0xc1e8, 0xa295, 0xc1e9, 0xa296, 0xa297, 0xa298, 0xa299,
+    0xa29a, 0xa29b, 0xa29c, 0xa29d, 0xc1ea, 0xa29e, 0xa29f, 0xa2a0,
+    0xc1eb, 0xa341, 0xa342, 0xa343, 0xc1ec, 0xa344, 0xa345, 0xa346,
+    0xa347, 0xa348, 0xa349, 0xa34a, 0xc1ed, 0xa34b, 0xa34c, 0xa34d,
+    0xa34e, 0xa34f, 0xa350, 0xa351, 0xa352, 0xa353, 0xa354, 0xa355,
+    0xc1ee, 0xc1ef, 0xa356, 0xa357, 0xc1f0, 0xa358, 0xa359, 0xa35a,
+    0xc1f1, 0xa361, 0xa362, 0xa363, 0xa364, 0xa365, 0xa366, 0xa367,
+    0xc1f2, 0xc1f3, 0xa368, 0xc1f4, 0xa369, 0xc1f5, 0xa36a, 0xa36b,
+    0xa36c, 0xa36d, 0xa36e, 0xa36f, 0xa370, 0xa371, 0xa372, 0xa373,
+    0xa374, 0xa375, 0xa376, 0xa377, 0xa378, 0xa379, 0xa37a, 0xa381,
+    0xa382, 0xa383, 0xa384, 0xa385, 0xa386, 0xa387, 0xa388, 0xa389,
+    0xa38a, 0xa38b, 0xa38c, 0xa38d, 0xa38e, 0xa38f, 0xa390, 0xa391,
+    0xc1f6, 0xc1f7, 0xa392, 0xa393, 0xc1f8, 0xa394, 0xa395, 0xc1f9,
+    0xc1fa, 0xa396, 0xc1fb, 0xa397, 0xa398, 0xa399, 0xa39a, 0xa39b,
+    0xc1fc, 0xc1fd, 0xa39c, 0xc1fe, 0xa39d, 0xc2a1, 0xc2a2, 0xa39e,
+    0xa39f, 0xc2a3, 0xc2a4, 0xa3a0, 0xc2a5, 0xc2a6, 0xa441, 0xa442,
+    0xc2a7, 0xa443, 0xc2a8, 0xa444, 0xc2a9, 0xa445, 0xa446, 0xc2aa,
+    0xa447, 0xa448, 0xa449, 0xa44a, 0xc2ab, 0xc2ac, 0xa44b, 0xc2ad,
+    0xc2ae, 0xc2af, 0xa44c, 0xa44d, 0xa44e, 0xa44f, 0xa450, 0xa451,
+    0xc2b0, 0xc2b1, 0xa452, 0xa453, 0xc2b2, 0xa454, 0xa455, 0xa456,
+    /* 0xca00 .. 0xcaff */
+    0xc2b3, 0xa457, 0xa458, 0xa459, 0xa45a, 0xa461, 0xa462, 0xa463,
+    0xc2b4, 0xc2b5, 0xa464, 0xc2b6, 0xc2b7, 0xc2b8, 0xa465, 0xa466,
+    0xa467, 0xa468, 0xa469, 0xa46a, 0xc2b9, 0xa46b, 0xa46c, 0xa46d,
+    0xc2ba, 0xa46e, 0xa46f, 0xa470, 0xa471, 0xa472, 0xa473, 0xa474,
+    0xa475, 0xa476, 0xa477, 0xa478, 0xa479, 0xa47a, 0xa481, 0xa482,
+    0xa483, 0xc2bb, 0xa484, 0xa485, 0xa486, 0xa487, 0xa488, 0xa489,
+    0xa48a, 0xa48b, 0xa48c, 0xa48d, 0xa48e, 0xa48f, 0xa490, 0xa491,
+    0xa492, 0xa493, 0xa494, 0xa495, 0xa496, 0xa497, 0xa498, 0xa499,
+    0xa49a, 0xa49b, 0xa49c, 0xa49d, 0xa49e, 0xa49f, 0xa4a0, 0xa541,
+    0xa542, 0xa543, 0xa544, 0xa545, 0xc2bc, 0xc2bd, 0xa546, 0xa547,
+    0xc2be, 0xa548, 0xa549, 0xa54a, 0xc2bf, 0xa54b, 0xa54c, 0xa54d,
+    0xa54e, 0xa54f, 0xa550, 0xa551, 0xc2c0, 0xc2c1, 0xa552, 0xc2c2,
+    0xc2c3, 0xc2c4, 0xa553, 0xa554, 0xa555, 0xa556, 0xa557, 0xa558,
+    0xc2c5, 0xa559, 0xa55a, 0xa561, 0xa562, 0xa563, 0xa564, 0xa565,
+    0xa566, 0xa567, 0xa568, 0xa569, 0xa56a, 0xa56b, 0xa56c, 0xa56d,
+    0xa56e, 0xa56f, 0xa570, 0xa571, 0xa572, 0xc2c6, 0xa573, 0xa574,
+    0xa575, 0xa576, 0xa577, 0xa578, 0xc2c7, 0xa579, 0xa57a, 0xa581,
+    0xa582, 0xa583, 0xa584, 0xa585, 0xa586, 0xa587, 0xa588, 0xa589,
+    0xa58a, 0xa58b, 0xa58c, 0xa58d, 0xa58e, 0xa58f, 0xa590, 0xa591,
+    0xc2c8, 0xa592, 0xa593, 0xa594, 0xa595, 0xa596, 0xa597, 0xa598,
+    0xa599, 0xa59a, 0xa59b, 0xa59c, 0xa59d, 0xa59e, 0xa59f, 0xa5a0,
+    0xa641, 0xa642, 0xa643, 0xa644, 0xa645, 0xa646, 0xa647, 0xa648,
+    0xa649, 0xa64a, 0xa64b, 0xa64c, 0xa64d, 0xa64e, 0xa64f, 0xa650,
+    0xa651, 0xa652, 0xa653, 0xa654, 0xc2c9, 0xc2ca, 0xa655, 0xa656,
+    0xc2cb, 0xa657, 0xa658, 0xa659, 0xc2cc, 0xa65a, 0xa661, 0xa662,
+    0xa663, 0xa664, 0xa665, 0xa666, 0xc2cd, 0xc2ce, 0xa667, 0xc2cf,
+    0xa668, 0xc2d0, 0xa669, 0xc2d1, 0xa66a, 0xa66b, 0xa66c, 0xa66d,
+    0xc2d2, 0xc2d3, 0xa66e, 0xa66f, 0xa670, 0xa671, 0xa672, 0xa673,
+    0xc2d4, 0xa674, 0xa675, 0xa676, 0xa677, 0xa678, 0xa679, 0xa67a,
+    0xa681, 0xa682, 0xa683, 0xa684, 0xc2d5, 0xa685, 0xa686, 0xa687,
+    0xa688, 0xa689, 0xa68a, 0xa68b, 0xc2d6, 0xa68c, 0xa68d, 0xa68e,
+    0xa68f, 0xa690, 0xa691, 0xa692, 0xa693, 0xa694, 0xa695, 0xa696,
+    /* 0xcb00 .. 0xcbff */
+    0xa697, 0xa698, 0xa699, 0xa69a, 0xa69b, 0xa69c, 0xa69d, 0xa69e,
+    0xc2d7, 0xa69f, 0xa6a0, 0xa741, 0xa742, 0xa743, 0xa744, 0xa745,
+    0xc2d8, 0xa746, 0xa747, 0xa748, 0xc2d9, 0xa749, 0xa74a, 0xa74b,
+    0xc2da, 0xa74c, 0xa74d, 0xa74e, 0xa74f, 0xa750, 0xa751, 0xa752,
+    0xc2db, 0xc2dc, 0xa753, 0xa754, 0xa755, 0xa756, 0xa757, 0xa758,
+    0xa759, 0xa75a, 0xa761, 0xa762, 0xa763, 0xa764, 0xa765, 0xa766,
+    0xa767, 0xa768, 0xa769, 0xa76a, 0xa76b, 0xa76c, 0xa76d, 0xa76e,
+    0xa76f, 0xa770, 0xa771, 0xa772, 0xa773, 0xa774, 0xa775, 0xa776,
+    0xa777, 0xc2dd, 0xa778, 0xa779, 0xa77a, 0xa781, 0xa782, 0xa783,
+    0xc2de, 0xc2df, 0xa784, 0xa785, 0xc2e0, 0xa786, 0xa787, 0xa788,
+    0xc2e1, 0xa789, 0xa78a, 0xa78b, 0xa78c, 0xa78d, 0xa78e, 0xa78f,
+    0xc2e2, 0xc2e3, 0xa790, 0xa791, 0xa792, 0xc2e4, 0xa793, 0xa794,
+    0xa795, 0xa796, 0xa797, 0xa798, 0xc2e5, 0xa799, 0xa79a, 0xa79b,
+    0xa79c, 0xa79d, 0xa79e, 0xa79f, 0xa7a0, 0xa841, 0xa842, 0xa843,
+    0xa844, 0xa845, 0xa846, 0xa847, 0xa848, 0xa849, 0xa84a, 0xa84b,
+    0xc2e6, 0xc2e7, 0xa84c, 0xa84d, 0xa84e, 0xa84f, 0xa850, 0xa851,
+    0xa852, 0xa853, 0xa854, 0xa855, 0xa856, 0xa857, 0xa858, 0xa859,
+    0xa85a, 0xa861, 0xa862, 0xa863, 0xa864, 0xa865, 0xa866, 0xa867,
+    0xa868, 0xa869, 0xa86a, 0xa86b, 0xa86c, 0xa86d, 0xa86e, 0xa86f,
+    0xa870, 0xa871, 0xa872, 0xa873, 0xc2e8, 0xa874, 0xa875, 0xa876,
+    0xa877, 0xa878, 0xa879, 0xa87a, 0xa881, 0xa882, 0xa883, 0xa884,
+    0xa885, 0xa886, 0xa887, 0xa888, 0xa889, 0xa88a, 0xa88b, 0xa88c,
+    0xa88d, 0xa88e, 0xa88f, 0xa890, 0xa891, 0xa892, 0xa893, 0xa894,
+    0xc2e9, 0xa895, 0xa896, 0xa897, 0xa898, 0xa899, 0xa89a, 0xa89b,
+    0xa89c, 0xa89d, 0xa89e, 0xa89f, 0xa8a0, 0xa941, 0xa942, 0xa943,
+    0xa944, 0xa945, 0xa946, 0xa947, 0xa948, 0xa949, 0xa94a, 0xa94b,
+    0xa94c, 0xa94d, 0xa94e, 0xa94f, 0xc2ea, 0xa950, 0xa951, 0xa952,
+    0xa953, 0xa954, 0xa955, 0xa956, 0xa957, 0xa958, 0xa959, 0xa95a,
+    0xa961, 0xa962, 0xa963, 0xa964, 0xc2eb, 0xa965, 0xa966, 0xc2ec,
+    0xa967, 0xc2ed, 0xa968, 0xa969, 0xa96a, 0xa96b, 0xa96c, 0xa96d,
+    0xa96e, 0xa96f, 0xa970, 0xa971, 0xa972, 0xa973, 0xa974, 0xa975,
+    0xa976, 0xa977, 0xa978, 0xa979, 0xa97a, 0xa981, 0xa982, 0xa983,
+    /* 0xcc00 .. 0xccff */
+    0xa984, 0xa985, 0xa986, 0xa987, 0xa988, 0xa989, 0xa98a, 0xa98b,
+    0xa98c, 0xa98d, 0xa98e, 0xa98f, 0xc2ee, 0xc2ef, 0xa990, 0xa991,
+    0xc2f0, 0xa992, 0xa993, 0xa994, 0xc2f1, 0xa995, 0xa996, 0xa997,
+    0xa998, 0xa999, 0xa99a, 0xa99b, 0xc2f2, 0xc2f3, 0xa99c, 0xa99d,
+    0xa99e, 0xc2f4, 0xc2f5, 0xa99f, 0xa9a0, 0xaa41, 0xaa42, 0xc2f6,
+    0xc2f7, 0xc2f8, 0xaa43, 0xaa44, 0xc2f9, 0xaa45, 0xc2fa, 0xaa46,
+    0xc2fb, 0xaa47, 0xaa48, 0xaa49, 0xaa4a, 0xaa4b, 0xaa4c, 0xaa4d,
+    0xc2fc, 0xc2fd, 0xaa4e, 0xc2fe, 0xc3a1, 0xc3a2, 0xc3a3, 0xaa4f,
+    0xaa50, 0xaa51, 0xaa52, 0xaa53, 0xc3a4, 0xc3a5, 0xaa54, 0xaa55,
+    0xc3a6, 0xaa56, 0xaa57, 0xaa58, 0xc3a7, 0xaa59, 0xaa5a, 0xaa61,
+    0xaa62, 0xaa63, 0xaa64, 0xaa65, 0xc3a8, 0xc3a9, 0xaa66, 0xc3aa,
+    0xc3ab, 0xc3ac, 0xaa67, 0xaa68, 0xaa69, 0xaa6a, 0xaa6b, 0xaa6c,
+    0xc3ad, 0xaa6d, 0xaa6e, 0xaa6f, 0xc3ae, 0xaa70, 0xc3af, 0xaa71,
+    0xc3b0, 0xaa72, 0xaa73, 0xaa74, 0xaa75, 0xaa76, 0xaa77, 0xaa78,
+    0xc3b1, 0xaa79, 0xaa7a, 0xaa81, 0xaa82, 0xc3b2, 0xaa83, 0xaa84,
+    0xaa85, 0xaa86, 0xaa87, 0xaa88, 0xaa89, 0xaa8a, 0xaa8b, 0xaa8c,
+    0xaa8d, 0xaa8e, 0xaa8f, 0xaa90, 0xaa91, 0xaa92, 0xaa93, 0xaa94,
+    0xaa95, 0xaa96, 0xaa97, 0xaa98, 0xaa99, 0xaa9a, 0xaa9b, 0xaa9c,
+    0xaa9d, 0xaa9e, 0xaa9f, 0xaaa0, 0xab41, 0xab42, 0xab43, 0xab44,
+    0xc3b3, 0xc3b4, 0xab45, 0xab46, 0xc3b5, 0xab47, 0xab48, 0xab49,
+    0xc3b6, 0xab4a, 0xab4b, 0xab4c, 0xab4d, 0xab4e, 0xab4f, 0xab50,
+    0xc3b7, 0xc3b8, 0xab51, 0xc3b9, 0xc3ba, 0xc3bb, 0xab52, 0xab53,
+    0xab54, 0xab55, 0xab56, 0xab57, 0xc3bc, 0xc3bd, 0xab58, 0xab59,
+    0xc3be, 0xab5a, 0xab61, 0xab62, 0xc3bf, 0xab63, 0xab64, 0xab65,
+    0xab66, 0xab67, 0xab68, 0xab69, 0xc3c0, 0xc3c1, 0xab6a, 0xc3c2,
+    0xab6b, 0xc3c3, 0xab6c, 0xab6d, 0xab6e, 0xab6f, 0xab70, 0xab71,
+    0xc3c4, 0xab72, 0xab73, 0xab74, 0xc3c5, 0xab75, 0xab76, 0xab77,
+    0xab78, 0xab79, 0xab7a, 0xab81, 0xab82, 0xab83, 0xab84, 0xab85,
+    0xab86, 0xab87, 0xab88, 0xab89, 0xc3c6, 0xab8a, 0xab8b, 0xab8c,
+    0xab8d, 0xab8e, 0xab8f, 0xab90, 0xc3c7, 0xab91, 0xab92, 0xab93,
+    0xc3c8, 0xab94, 0xab95, 0xab96, 0xab97, 0xab98, 0xab99, 0xab9a,
+    0xab9b, 0xab9c, 0xab9d, 0xab9e, 0xab9f, 0xaba0, 0xac41, 0xac42,
+    /* 0xcd00 .. 0xcdff */
+    0xac43, 0xc3c9, 0xac44, 0xac45, 0xac46, 0xac47, 0xac48, 0xac49,
+    0xc3ca, 0xc3cb, 0xac4a, 0xac4b, 0xc3cc, 0xac4c, 0xac4d, 0xac4e,
+    0xc3cd, 0xac4f, 0xac50, 0xac51, 0xac52, 0xac53, 0xac54, 0xac55,
+    0xc3ce, 0xc3cf, 0xac56, 0xc3d0, 0xac57, 0xc3d1, 0xac58, 0xac59,
+    0xac5a, 0xac61, 0xac62, 0xac63, 0xc3d2, 0xac64, 0xac65, 0xac66,
+    0xc3d3, 0xac67, 0xac68, 0xac69, 0xc3d4, 0xac6a, 0xac6b, 0xac6c,
+    0xac6d, 0xac6e, 0xac6f, 0xac70, 0xac71, 0xac72, 0xac73, 0xac74,
+    0xac75, 0xc3d5, 0xac76, 0xac77, 0xac78, 0xac79, 0xac7a, 0xac81,
+    0xac82, 0xac83, 0xac84, 0xac85, 0xac86, 0xac87, 0xac88, 0xac89,
+    0xac8a, 0xac8b, 0xac8c, 0xac8d, 0xac8e, 0xac8f, 0xac90, 0xac91,
+    0xac92, 0xac93, 0xac94, 0xac95, 0xac96, 0xac97, 0xac98, 0xac99,
+    0xac9a, 0xac9b, 0xac9c, 0xac9d, 0xc3d6, 0xac9e, 0xac9f, 0xaca0,
+    0xc3d7, 0xad41, 0xad42, 0xad43, 0xc3d8, 0xad44, 0xad45, 0xad46,
+    0xad47, 0xad48, 0xad49, 0xad4a, 0xc3d9, 0xc3da, 0xad4b, 0xc3db,
+    0xad4c, 0xc3dc, 0xad4d, 0xad4e, 0xad4f, 0xad50, 0xad51, 0xad52,
+    0xc3dd, 0xad53, 0xad54, 0xad55, 0xad56, 0xad57, 0xad58, 0xad59,
+    0xad5a, 0xad61, 0xad62, 0xad63, 0xad64, 0xad65, 0xad66, 0xad67,
+    0xc3de, 0xad68, 0xad69, 0xad6a, 0xad6b, 0xad6c, 0xad6d, 0xad6e,
+    0xad6f, 0xad70, 0xad71, 0xad72, 0xc3df, 0xc3e0, 0xad73, 0xad74,
+    0xc3e1, 0xad75, 0xad76, 0xad77, 0xc3e2, 0xad78, 0xad79, 0xad7a,
+    0xad81, 0xad82, 0xad83, 0xad84, 0xc3e3, 0xc3e4, 0xad85, 0xc3e5,
+    0xad86, 0xc3e6, 0xad87, 0xad88, 0xad89, 0xad8a, 0xad8b, 0xad8c,
+    0xc3e7, 0xad8d, 0xad8e, 0xad8f, 0xad90, 0xad91, 0xad92, 0xad93,
+    0xad94, 0xad95, 0xad96, 0xad97, 0xad98, 0xad99, 0xad9a, 0xad9b,
+    0xad9c, 0xad9d, 0xad9e, 0xad9f, 0xc3e8, 0xada0, 0xae41, 0xae42,
+    0xae43, 0xae44, 0xae45, 0xae46, 0xc3e9, 0xae47, 0xae48, 0xae49,
+    0xc3ea, 0xae4a, 0xae4b, 0xae4c, 0xae4d, 0xae4e, 0xae4f, 0xae50,
+    0xae51, 0xae52, 0xae53, 0xae54, 0xae55, 0xae56, 0xae57, 0xae58,
+    0xae59, 0xae5a, 0xae61, 0xae62, 0xae63, 0xae64, 0xae65, 0xae66,
+    0xc3eb, 0xae67, 0xae68, 0xae69, 0xc3ec, 0xae6a, 0xae6b, 0xae6c,
+    0xc3ed, 0xae6d, 0xae6e, 0xae6f, 0xae70, 0xae71, 0xae72, 0xae73,
+    0xc3ee, 0xc3ef, 0xae74, 0xc3f0, 0xae75, 0xc3f1, 0xae76, 0xae77,
+    /* 0xce00 .. 0xceff */
+    0xae78, 0xae79, 0xae7a, 0xae81, 0xc3f2, 0xae82, 0xae83, 0xae84,
+    0xc3f3, 0xae85, 0xae86, 0xae87, 0xc3f4, 0xae88, 0xae89, 0xae8a,
+    0xae8b, 0xae8c, 0xae8d, 0xae8e, 0xc3f5, 0xae8f, 0xae90, 0xae91,
+    0xae92, 0xc3f6, 0xae93, 0xae94, 0xae95, 0xae96, 0xae97, 0xae98,
+    0xc3f7, 0xc3f8, 0xae99, 0xae9a, 0xc3f9, 0xae9b, 0xae9c, 0xae9d,
+    0xc3fa, 0xae9e, 0xae9f, 0xaea0, 0xaf41, 0xaf42, 0xaf43, 0xaf44,
+    0xc3fb, 0xc3fc, 0xaf45, 0xc3fd, 0xaf46, 0xc3fe, 0xaf47, 0xaf48,
+    0xaf49, 0xaf4a, 0xaf4b, 0xaf4c, 0xaf4d, 0xaf4e, 0xaf4f, 0xaf50,
+    0xaf51, 0xaf52, 0xaf53, 0xaf54, 0xaf55, 0xaf56, 0xaf57, 0xaf58,
+    0xaf59, 0xaf5a, 0xaf61, 0xaf62, 0xaf63, 0xaf64, 0xaf65, 0xaf66,
+    0xaf67, 0xaf68, 0xaf69, 0xaf6a, 0xaf6b, 0xaf6c, 0xaf6d, 0xaf6e,
+    0xc4a1, 0xc4a2, 0xaf6f, 0xaf70, 0xc4a3, 0xaf71, 0xaf72, 0xc4a4,
+    0xc4a5, 0xc4a6, 0xaf73, 0xaf74, 0xaf75, 0xaf76, 0xaf77, 0xaf78,
+    0xc4a7, 0xc4a8, 0xaf79, 0xc4a9, 0xaf7a, 0xc4aa, 0xaf81, 0xaf82,
+    0xaf83, 0xaf84, 0xaf85, 0xaf86, 0xc4ab, 0xc4ac, 0xaf87, 0xaf88,
+    0xc4ad, 0xaf89, 0xaf8a, 0xaf8b, 0xc4ae, 0xaf8c, 0xaf8d, 0xaf8e,
+    0xaf8f, 0xaf90, 0xaf91, 0xaf92, 0xc4af, 0xc4b0, 0xaf93, 0xc4b1,
+    0xaf94, 0xc4b2, 0xaf95, 0xaf96, 0xaf97, 0xaf98, 0xaf99, 0xaf9a,
+    0xc4b3, 0xc4b4, 0xaf9b, 0xaf9c, 0xc4b5, 0xaf9d, 0xaf9e, 0xaf9f,
+    0xc4b6, 0xafa0, 0xb041, 0xb042, 0xb043, 0xb044, 0xb045, 0xb046,
+    0xc4b7, 0xc4b8, 0xb047, 0xc4b9, 0xc4ba, 0xc4bb, 0xb048, 0xb049,
+    0xb04a, 0xb04b, 0xb04c, 0xb04d, 0xc4bc, 0xc4bd, 0xb04e, 0xb04f,
+    0xb050, 0xb051, 0xb052, 0xb053, 0xb054, 0xb055, 0xb056, 0xb057,
+    0xb058, 0xb059, 0xb05a, 0xb061, 0xb062, 0xb063, 0xb064, 0xb065,
+    0xb066, 0xc4be, 0xb067, 0xb068, 0xb069, 0xb06a, 0xb06b, 0xb06c,
+    0xb06d, 0xb06e, 0xb06f, 0xb070, 0xb071, 0xb072, 0xb073, 0xb074,
+    0xb075, 0xb076, 0xb077, 0xb078, 0xb079, 0xb07a, 0xb081, 0xb082,
+    0xb083, 0xb084, 0xb085, 0xb086, 0xb087, 0xb088, 0xb089, 0xb08a,
+    0xb08b, 0xb08c, 0xb08d, 0xb08e, 0xc4bf, 0xc4c0, 0xb08f, 0xb090,
+    0xc4c1, 0xb091, 0xb092, 0xc4c2, 0xc4c3, 0xb093, 0xb094, 0xb095,
+    0xb096, 0xb097, 0xb098, 0xb099, 0xc4c4, 0xc4c5, 0xb09a, 0xc4c6,
+    0xc4c7, 0xc4c8, 0xb09b, 0xb09c, 0xb09d, 0xb09e, 0xb09f, 0xb0a0,
+    /* 0xcf00 .. 0xcfff */
+    0xc4c9, 0xc4ca, 0xb141, 0xb142, 0xc4cb, 0xb143, 0xb144, 0xb145,
+    0xc4cc, 0xb146, 0xb147, 0xb148, 0xb149, 0xb14a, 0xb14b, 0xb14c,
+    0xc4cd, 0xc4ce, 0xb14d, 0xc4cf, 0xb14e, 0xc4d0, 0xb14f, 0xb150,
+    0xb151, 0xb152, 0xb153, 0xb154, 0xc4d1, 0xb155, 0xb156, 0xb157,
+    0xc4d2, 0xb158, 0xb159, 0xb15a, 0xc4d3, 0xb161, 0xb162, 0xb163,
+    0xb164, 0xb165, 0xb166, 0xb167, 0xc4d4, 0xc4d5, 0xb168, 0xc4d6,
+    0xc4d7, 0xc4d8, 0xb169, 0xb16a, 0xb16b, 0xb16c, 0xb16d, 0xb16e,
+    0xc4d9, 0xb16f, 0xb170, 0xb171, 0xb172, 0xb173, 0xb174, 0xb175,
+    0xb176, 0xb177, 0xb178, 0xb179, 0xb17a, 0xb181, 0xb182, 0xb183,
+    0xb184, 0xb185, 0xb186, 0xb187, 0xb188, 0xb189, 0xb18a, 0xb18b,
+    0xb18c, 0xb18d, 0xb18e, 0xb18f, 0xc4da, 0xc4db, 0xb190, 0xb191,
+    0xc4dc, 0xb192, 0xb193, 0xb194, 0xc4dd, 0xb195, 0xb196, 0xb197,
+    0xb198, 0xb199, 0xb19a, 0xb19b, 0xc4de, 0xc4df, 0xb19c, 0xc4e0,
+    0xb19d, 0xc4e1, 0xb19e, 0xb19f, 0xb1a0, 0xb241, 0xb242, 0xb243,
+    0xc4e2, 0xc4e3, 0xb244, 0xb245, 0xc4e4, 0xb246, 0xb247, 0xb248,
+    0xc4e5, 0xb249, 0xb24a, 0xb24b, 0xb24c, 0xb24d, 0xb24e, 0xb24f,
+    0xc4e6, 0xb250, 0xb251, 0xb252, 0xb253, 0xc4e7, 0xb254, 0xb255,
+    0xb256, 0xb257, 0xb258, 0xb259, 0xc4e8, 0xb25a, 0xb261, 0xb262,
+    0xb263, 0xb264, 0xb265, 0xb266, 0xb267, 0xb268, 0xb269, 0xb26a,
+    0xb26b, 0xb26c, 0xb26d, 0xb26e, 0xb26f, 0xb270, 0xb271, 0xb272,
+    0xb273, 0xc4e9, 0xb274, 0xb275, 0xb276, 0xb277, 0xb278, 0xb279,
+    0xc4ea, 0xb27a, 0xb281, 0xb282, 0xb283, 0xb284, 0xb285, 0xb286,
+    0xc4eb, 0xb287, 0xb288, 0xb289, 0xb28a, 0xb28b, 0xb28c, 0xb28d,
+    0xb28e, 0xb28f, 0xb290, 0xb291, 0xb292, 0xb293, 0xb294, 0xb295,
+    0xb296, 0xb297, 0xb298, 0xb299, 0xc4ec, 0xb29a, 0xb29b, 0xb29c,
+    0xb29d, 0xb29e, 0xb29f, 0xb2a0, 0xb341, 0xb342, 0xb343, 0xb344,
+    0xb345, 0xb346, 0xb347, 0xb348, 0xb349, 0xb34a, 0xb34b, 0xb34c,
+    0xb34d, 0xb34e, 0xb34f, 0xb350, 0xb351, 0xb352, 0xb353, 0xb354,
+    0xc4ed, 0xc4ee, 0xb355, 0xb356, 0xc4ef, 0xb357, 0xb358, 0xb359,
+    0xc4f0, 0xb35a, 0xb361, 0xb362, 0xb363, 0xb364, 0xb365, 0xb366,
+    0xc4f1, 0xc4f2, 0xb367, 0xc4f3, 0xb368, 0xc4f4, 0xb369, 0xb36a,
+    0xb36b, 0xb36c, 0xb36d, 0xb36e, 0xc4f5, 0xb36f, 0xb370, 0xb371,
+    /* 0xd000 .. 0xd0ff */
+    0xc4f6, 0xb372, 0xb373, 0xb374, 0xc4f7, 0xb375, 0xb376, 0xb377,
+    0xb378, 0xb379, 0xb37a, 0xb381, 0xb382, 0xb383, 0xb384, 0xb385,
+    0xb386, 0xc4f8, 0xb387, 0xb388, 0xb389, 0xb38a, 0xb38b, 0xb38c,
+    0xc4f9, 0xb38d, 0xb38e, 0xb38f, 0xb390, 0xb391, 0xb392, 0xb393,
+    0xb394, 0xb395, 0xb396, 0xb397, 0xb398, 0xb399, 0xb39a, 0xb39b,
+    0xb39c, 0xb39d, 0xb39e, 0xb39f, 0xb3a0, 0xc4fa, 0xb441, 0xb442,
+    0xb443, 0xb444, 0xb445, 0xb446, 0xc4fb, 0xc4fc, 0xb447, 0xb448,
+    0xc4fd, 0xb449, 0xb44a, 0xb44b, 0xc4fe, 0xb44c, 0xb44d, 0xb44e,
+    0xb44f, 0xb450, 0xb451, 0xb452, 0xc5a1, 0xc5a2, 0xb453, 0xc5a3,
+    0xb454, 0xc5a4, 0xb455, 0xb456, 0xb457, 0xb458, 0xb459, 0xb45a,
+    0xc5a5, 0xb461, 0xb462, 0xb463, 0xc5a6, 0xb464, 0xb465, 0xb466,
+    0xc5a7, 0xb467, 0xb468, 0xb469, 0xb46a, 0xb46b, 0xb46c, 0xb46d,
+    0xc5a8, 0xb46e, 0xb46f, 0xb470, 0xb471, 0xb472, 0xb473, 0xb474,
+    0xb475, 0xb476, 0xb477, 0xb478, 0xc5a9, 0xc5aa, 0xb479, 0xb47a,
+    0xc5ab, 0xb481, 0xb482, 0xb483, 0xc5ac, 0xb484, 0xb485, 0xb486,
+    0xb487, 0xb488, 0xb489, 0xb48a, 0xc5ad, 0xc5ae, 0xb48b, 0xb48c,
+    0xb48d, 0xc5af, 0xb48e, 0xb48f, 0xb490, 0xb491, 0xb492, 0xb493,
+    0xb494, 0xb495, 0xb496, 0xb497, 0xb498, 0xb499, 0xb49a, 0xb49b,
+    0xb49c, 0xb49d, 0xb49e, 0xb49f, 0xb4a0, 0xb541, 0xb542, 0xb543,
+    0xb544, 0xb545, 0xb546, 0xb547, 0xb548, 0xb549, 0xb54a, 0xb54b,
+    0xb54c, 0xb54d, 0xb54e, 0xb54f, 0xc5b0, 0xc5b1, 0xb550, 0xb551,
+    0xc5b2, 0xb552, 0xb553, 0xb554, 0xc5b3, 0xb555, 0xb556, 0xb557,
+    0xb558, 0xb559, 0xb55a, 0xb561, 0xc5b4, 0xc5b5, 0xb562, 0xc5b6,
+    0xb563, 0xc5b7, 0xb564, 0xb565, 0xb566, 0xb567, 0xb568, 0xb569,
+    0xc5b8, 0xc5b9, 0xb56a, 0xb56b, 0xc5ba, 0xb56c, 0xb56d, 0xb56e,
+    0xc5bb, 0xc5bc, 0xb56f, 0xb570, 0xb571, 0xb572, 0xb573, 0xb574,
+    0xc5bd, 0xc5be, 0xb575, 0xc5bf, 0xc5c0, 0xc5c1, 0xb576, 0xb577,
+    0xb578, 0xb579, 0xb57a, 0xb581, 0xc5c2, 0xc5c3, 0xb582, 0xb583,
+    0xc5c4, 0xb584, 0xb585, 0xb586, 0xc5c5, 0xb587, 0xb588, 0xb589,
+    0xb58a, 0xb58b, 0xb58c, 0xb58d, 0xc5c6, 0xc5c7, 0xb58e, 0xc5c8,
+    0xc5c9, 0xc5ca, 0xb58f, 0xb590, 0xb591, 0xb592, 0xb593, 0xb594,
+    0xc5cb, 0xb595, 0xb596, 0xb597, 0xb598, 0xb599, 0xb59a, 0xb59b,
+    /* 0xd100 .. 0xd1ff */
+    0xb59c, 0xb59d, 0xb59e, 0xb59f, 0xb5a0, 0xb641, 0xb642, 0xb643,
+    0xb644, 0xb645, 0xb646, 0xb647, 0xb648, 0xc5cc, 0xb649, 0xb64a,
+    0xb64b, 0xb64c, 0xb64d, 0xb64e, 0xb64f, 0xb650, 0xb651, 0xb652,
+    0xb653, 0xb654, 0xb655, 0xb656, 0xb657, 0xb658, 0xb659, 0xb65a,
+    0xb661, 0xb662, 0xb663, 0xb664, 0xb665, 0xb666, 0xb667, 0xb668,
+    0xb669, 0xb66a, 0xb66b, 0xb66c, 0xb66d, 0xb66e, 0xb66f, 0xb670,
+    0xc5cd, 0xc5ce, 0xb671, 0xb672, 0xc5cf, 0xb673, 0xb674, 0xb675,
+    0xc5d0, 0xb676, 0xc5d1, 0xb677, 0xb678, 0xb679, 0xb67a, 0xb681,
+    0xc5d2, 0xc5d3, 0xb682, 0xc5d4, 0xc5d5, 0xc5d6, 0xb683, 0xb684,
+    0xb685, 0xb686, 0xb687, 0xb688, 0xc5d7, 0xc5d8, 0xb689, 0xb68a,
+    0xc5d9, 0xb68b, 0xb68c, 0xb68d, 0xc5da, 0xb68e, 0xb68f, 0xb690,
+    0xb691, 0xb692, 0xb693, 0xb694, 0xc5db, 0xc5dc, 0xb695, 0xc5dd,
+    0xb696, 0xc5de, 0xb697, 0xb698, 0xb699, 0xb69a, 0xb69b, 0xb69c,
+    0xc5df, 0xb69d, 0xb69e, 0xb69f, 0xc5e0, 0xb6a0, 0xb741, 0xb742,
+    0xb743, 0xb744, 0xb745, 0xb746, 0xb747, 0xb748, 0xb749, 0xb74a,
+    0xb74b, 0xb74c, 0xb74d, 0xb74e, 0xc5e1, 0xb74f, 0xb750, 0xb751,
+    0xb752, 0xb753, 0xb754, 0xb755, 0xc5e2, 0xb756, 0xb757, 0xb758,
+    0xc5e3, 0xb759, 0xb75a, 0xb761, 0xb762, 0xb763, 0xb764, 0xb765,
+    0xb766, 0xb767, 0xb768, 0xb769, 0xb76a, 0xb76b, 0xb76c, 0xb76d,
+    0xb76e, 0xb76f, 0xb770, 0xb771, 0xb772, 0xb773, 0xb774, 0xb775,
+    0xc5e4, 0xc5e5, 0xb776, 0xb777, 0xc5e6, 0xb778, 0xb779, 0xb77a,
+    0xc5e7, 0xb781, 0xb782, 0xb783, 0xb784, 0xb785, 0xb786, 0xb787,
+    0xc5e8, 0xc5e9, 0xb788, 0xc5ea, 0xb789, 0xc5eb, 0xb78a, 0xb78b,
+    0xb78c, 0xb78d, 0xc5ec, 0xb78e, 0xc5ed, 0xb78f, 0xb790, 0xb791,
+    0xc5ee, 0xb792, 0xb793, 0xb794, 0xb795, 0xb796, 0xb797, 0xb798,
+    0xb799, 0xb79a, 0xb79b, 0xb79c, 0xb79d, 0xb79e, 0xb79f, 0xb7a0,
+    0xb841, 0xb842, 0xb843, 0xb844, 0xb845, 0xb846, 0xb847, 0xb848,
+    0xc5ef, 0xb849, 0xb84a, 0xb84b, 0xb84c, 0xb84d, 0xb84e, 0xb84f,
+    0xb850, 0xb851, 0xb852, 0xb853, 0xb854, 0xb855, 0xb856, 0xb857,
+    0xb858, 0xb859, 0xb85a, 0xb861, 0xb862, 0xb863, 0xb864, 0xb865,
+    0xb866, 0xb867, 0xb868, 0xb869, 0xc5f0, 0xb86a, 0xb86b, 0xb86c,
+    0xc5f1, 0xb86d, 0xb86e, 0xb86f, 0xb870, 0xb871, 0xb872, 0xb873,
+    /* 0xd200 .. 0xd2ff */
+    0xb874, 0xb875, 0xb876, 0xb877, 0xb878, 0xb879, 0xb87a, 0xc5f2,
+    0xb881, 0xc5f3, 0xb882, 0xb883, 0xb884, 0xb885, 0xb886, 0xb887,
+    0xc5f4, 0xb888, 0xb889, 0xb88a, 0xb88b, 0xb88c, 0xb88d, 0xb88e,
+    0xb88f, 0xb890, 0xb891, 0xb892, 0xb893, 0xb894, 0xb895, 0xb896,
+    0xb897, 0xb898, 0xb899, 0xb89a, 0xb89b, 0xb89c, 0xb89d, 0xb89e,
+    0xb89f, 0xb8a0, 0xb941, 0xb942, 0xc5f5, 0xc5f6, 0xb943, 0xb944,
+    0xc5f7, 0xb945, 0xb946, 0xb947, 0xc5f8, 0xb948, 0xb949, 0xb94a,
+    0xb94b, 0xb94c, 0xb94d, 0xb94e, 0xc5f9, 0xc5fa, 0xb94f, 0xc5fb,
+    0xb950, 0xc5fc, 0xb951, 0xb952, 0xb953, 0xb954, 0xb955, 0xb956,
+    0xc5fd, 0xb957, 0xb958, 0xb959, 0xb95a, 0xb961, 0xb962, 0xb963,
+    0xb964, 0xb965, 0xb966, 0xb967, 0xb968, 0xb969, 0xb96a, 0xb96b,
+    0xb96c, 0xb96d, 0xb96e, 0xb96f, 0xc5fe, 0xb970, 0xb971, 0xb972,
+    0xb973, 0xb974, 0xb975, 0xb976, 0xc6a1, 0xb977, 0xb978, 0xb979,
+    0xb97a, 0xb981, 0xb982, 0xb983, 0xb984, 0xb985, 0xb986, 0xb987,
+    0xb988, 0xb989, 0xb98a, 0xb98b, 0xb98c, 0xb98d, 0xb98e, 0xb98f,
+    0xb990, 0xb991, 0xb992, 0xb993, 0xb994, 0xb995, 0xb996, 0xb997,
+    0xc6a2, 0xc6a3, 0xb998, 0xb999, 0xc6a4, 0xb99a, 0xb99b, 0xb99c,
+    0xc6a5, 0xb99d, 0xb99e, 0xb99f, 0xb9a0, 0xba41, 0xba42, 0xba43,
+    0xc6a6, 0xc6a7, 0xba44, 0xba45, 0xba46, 0xc6a8, 0xba47, 0xba48,
+    0xba49, 0xba4a, 0xba4b, 0xba4c, 0xc6a9, 0xba4d, 0xba4e, 0xba4f,
+    0xc6aa, 0xba50, 0xba51, 0xba52, 0xc6ab, 0xba53, 0xba54, 0xba55,
+    0xba56, 0xba57, 0xba58, 0xba59, 0xc6ac, 0xba5a, 0xba61, 0xba62,
+    0xba63, 0xc6ad, 0xba64, 0xba65, 0xba66, 0xba67, 0xba68, 0xba69,
+    0xc6ae, 0xc6af, 0xba6a, 0xba6b, 0xc6b0, 0xba6c, 0xba6d, 0xc6b1,
+    0xc6b2, 0xba6e, 0xc6b3, 0xba6f, 0xba70, 0xba71, 0xba72, 0xba73,
+    0xc6b4, 0xc6b5, 0xba74, 0xc6b6, 0xba75, 0xba76, 0xba77, 0xba78,
+    0xba79, 0xba7a, 0xba81, 0xba82, 0xc6b7, 0xba83, 0xba84, 0xba85,
+    0xc6b8, 0xba86, 0xba87, 0xba88, 0xc6b9, 0xba89, 0xba8a, 0xba8b,
+    0xba8c, 0xba8d, 0xba8e, 0xba8f, 0xc6ba, 0xc6bb, 0xba90, 0xba91,
+    0xba92, 0xba93, 0xba94, 0xba95, 0xba96, 0xba97, 0xba98, 0xba99,
+    0xc6bc, 0xc6bd, 0xba9a, 0xba9b, 0xc6be, 0xba9c, 0xba9d, 0xba9e,
+    0xc6bf, 0xba9f, 0xbaa0, 0xbb41, 0xbb42, 0xbb43, 0xbb44, 0xbb45,
+    /* 0xd300 .. 0xd3ff */
+    0xc6c0, 0xc6c1, 0xbb46, 0xc6c2, 0xbb47, 0xc6c3, 0xbb48, 0xbb49,
+    0xbb4a, 0xbb4b, 0xbb4c, 0xbb4d, 0xc6c4, 0xc6c5, 0xc6c6, 0xbb4e,
+    0xc6c7, 0xbb4f, 0xbb50, 0xbb51, 0xc6c8, 0xbb52, 0xc6c9, 0xbb53,
+    0xbb54, 0xbb55, 0xbb56, 0xbb57, 0xc6ca, 0xc6cb, 0xbb58, 0xc6cc,
+    0xc6cd, 0xc6ce, 0xbb59, 0xbb5a, 0xbb61, 0xc6cf, 0xbb62, 0xbb63,
+    0xc6d0, 0xc6d1, 0xbb64, 0xbb65, 0xc6d2, 0xbb66, 0xbb67, 0xbb68,
+    0xc6d3, 0xbb69, 0xbb6a, 0xbb6b, 0xbb6c, 0xbb6d, 0xbb6e, 0xbb6f,
+    0xc6d4, 0xc6d5, 0xbb70, 0xc6d6, 0xc6d7, 0xc6d8, 0xbb71, 0xbb72,
+    0xbb73, 0xbb74, 0xbb75, 0xbb76, 0xc6d9, 0xc6da, 0xbb77, 0xbb78,
+    0xbb79, 0xbb7a, 0xbb81, 0xbb82, 0xbb83, 0xbb84, 0xbb85, 0xbb86,
+    0xbb87, 0xbb88, 0xbb89, 0xbb8a, 0xbb8b, 0xbb8c, 0xbb8d, 0xbb8e,
+    0xbb8f, 0xbb90, 0xbb91, 0xbb92, 0xbb93, 0xbb94, 0xbb95, 0xbb96,
+    0xbb97, 0xbb98, 0xbb99, 0xbb9a, 0xbb9b, 0xbb9c, 0xbb9d, 0xbb9e,
+    0xbb9f, 0xbba0, 0xbc41, 0xbc42, 0xbc43, 0xbc44, 0xbc45, 0xbc46,
+    0xbc47, 0xbc48, 0xbc49, 0xbc4a, 0xbc4b, 0xbc4c, 0xbc4d, 0xbc4e,
+    0xbc4f, 0xbc50, 0xbc51, 0xbc52, 0xc6db, 0xc6dc, 0xbc53, 0xbc54,
+    0xc6dd, 0xbc55, 0xbc56, 0xbc57, 0xc6de, 0xbc58, 0xbc59, 0xbc5a,
+    0xbc61, 0xbc62, 0xbc63, 0xbc64, 0xc6df, 0xc6e0, 0xbc65, 0xc6e1,
+    0xc6e2, 0xc6e3, 0xbc66, 0xbc67, 0xbc68, 0xbc69, 0xbc6a, 0xbc6b,
+    0xc6e4, 0xc6e5, 0xbc6c, 0xbc6d, 0xc6e6, 0xbc6e, 0xbc6f, 0xbc70,
+    0xc6e7, 0xbc71, 0xbc72, 0xbc73, 0xbc74, 0xbc75, 0xbc76, 0xbc77,
+    0xc6e8, 0xc6e9, 0xbc78, 0xc6ea, 0xbc79, 0xc6eb, 0xbc7a, 0xbc81,
+    0xbc82, 0xbc83, 0xbc84, 0xbc85, 0xc6ec, 0xbc86, 0xbc87, 0xbc88,
+    0xc6ed, 0xbc89, 0xbc8a, 0xbc8b, 0xc6ee, 0xbc8c, 0xbc8d, 0xbc8e,
+    0xbc8f, 0xbc90, 0xbc91, 0xbc92, 0xc6ef, 0xc6f0, 0xbc93, 0xbc94,
+    0xc6f1, 0xc6f2, 0xbc95, 0xbc96, 0xbc97, 0xbc98, 0xbc99, 0xbc9a,
+    0xc6f3, 0xbc9b, 0xbc9c, 0xbc9d, 0xbc9e, 0xbc9f, 0xbca0, 0xbd41,
+    0xc6f4, 0xbd42, 0xbd43, 0xbd44, 0xbd45, 0xbd46, 0xbd47, 0xbd48,
+    0xbd49, 0xc6f5, 0xbd4a, 0xc6f6, 0xbd4b, 0xbd4c, 0xbd4d, 0xbd4e,
+    0xbd4f, 0xbd50, 0xbd51, 0xbd52, 0xc6f7, 0xc6f8, 0xbd53, 0xbd54,
+    0xc6f9, 0xbd55, 0xbd56, 0xbd57, 0xc6fa, 0xbd58, 0xbd59, 0xbd5a,
+    0xbd61, 0xbd62, 0xbd63, 0xbd64, 0xc6fb, 0xc6fc, 0xbd65, 0xc6fd,
+    /* 0xd400 .. 0xd4ff */
+    0xbd66, 0xc6fe, 0xbd67, 0xbd68, 0xbd69, 0xbd6a, 0xbd6b, 0xbd6c,
+    0xc7a1, 0xbd6d, 0xbd6e, 0xbd6f, 0xbd70, 0xbd71, 0xbd72, 0xbd73,
+    0xbd74, 0xbd75, 0xbd76, 0xbd77, 0xbd78, 0xbd79, 0xbd7a, 0xbd81,
+    0xbd82, 0xbd83, 0xbd84, 0xbd85, 0xbd86, 0xc7a2, 0xbd87, 0xbd88,
+    0xbd89, 0xbd8a, 0xbd8b, 0xbd8c, 0xbd8d, 0xbd8e, 0xbd8f, 0xbd90,
+    0xbd91, 0xbd92, 0xbd93, 0xbd94, 0xbd95, 0xbd96, 0xbd97, 0xbd98,
+    0xbd99, 0xbd9a, 0xbd9b, 0xbd9c, 0xbd9d, 0xbd9e, 0xbd9f, 0xbda0,
+    0xbe41, 0xbe42, 0xbe43, 0xbe44, 0xbe45, 0xbe46, 0xbe47, 0xbe48,
+    0xc7a3, 0xbe49, 0xbe4a, 0xbe4b, 0xc7a4, 0xbe4c, 0xbe4d, 0xbe4e,
+    0xbe4f, 0xbe50, 0xbe51, 0xbe52, 0xbe53, 0xbe54, 0xbe55, 0xbe56,
+    0xbe57, 0xbe58, 0xbe59, 0xbe5a, 0xbe61, 0xbe62, 0xbe63, 0xbe64,
+    0xbe65, 0xbe66, 0xbe67, 0xbe68, 0xc7a5, 0xbe69, 0xbe6a, 0xbe6b,
+    0xc7a6, 0xbe6c, 0xbe6d, 0xbe6e, 0xc7a7, 0xbe6f, 0xbe70, 0xbe71,
+    0xbe72, 0xbe73, 0xbe74, 0xbe75, 0xbe76, 0xc7a8, 0xbe77, 0xc7a9,
+    0xbe78, 0xbe79, 0xbe7a, 0xbe81, 0xbe82, 0xbe83, 0xbe84, 0xbe85,
+    0xc7aa, 0xc7ab, 0xbe86, 0xbe87, 0xc7ac, 0xbe88, 0xbe89, 0xc7ad,
+    0xc7ae, 0xbe8a, 0xc7af, 0xbe8b, 0xbe8c, 0xbe8d, 0xbe8e, 0xbe8f,
+    0xc7b0, 0xc7b1, 0xbe90, 0xc7b2, 0xbe91, 0xc7b3, 0xbe92, 0xbe93,
+    0xbe94, 0xbe95, 0xbe96, 0xbe97, 0xc7b4, 0xbe98, 0xbe99, 0xbe9a,
+    0xbe9b, 0xbe9c, 0xbe9d, 0xbe9e, 0xbe9f, 0xbea0, 0xbf41, 0xbf42,
+    0xbf43, 0xbf44, 0xbf45, 0xbf46, 0xbf47, 0xbf48, 0xbf49, 0xbf4a,
+    0xbf4b, 0xc7b5, 0xbf4c, 0xbf4d, 0xbf4e, 0xbf4f, 0xbf50, 0xbf51,
+    0xbf52, 0xbf53, 0xbf54, 0xbf55, 0xbf56, 0xbf57, 0xbf58, 0xbf59,
+    0xbf5a, 0xbf61, 0xbf62, 0xbf63, 0xbf64, 0xbf65, 0xbf66, 0xbf67,
+    0xbf68, 0xbf69, 0xbf6a, 0xbf6b, 0xbf6c, 0xbf6d, 0xbf6e, 0xbf6f,
+    0xbf70, 0xbf71, 0xbf72, 0xbf73, 0xc7b6, 0xbf74, 0xbf75, 0xbf76,
+    0xc7b7, 0xbf77, 0xbf78, 0xbf79, 0xc7b8, 0xbf7a, 0xbf81, 0xbf82,
+    0xbf83, 0xbf84, 0xbf85, 0xbf86, 0xc7b9, 0xbf87, 0xbf88, 0xc7ba,
+    0xbf89, 0xbf8a, 0xbf8b, 0xbf8c, 0xbf8d, 0xbf8e, 0xbf8f, 0xbf90,
+    0xc7bb, 0xbf91, 0xbf92, 0xbf93, 0xc7bc, 0xbf94, 0xbf95, 0xbf96,
+    0xc7bd, 0xbf97, 0xbf98, 0xbf99, 0xbf9a, 0xbf9b, 0xbf9c, 0xbf9d,
+    0xc7be, 0xbf9e, 0xbf9f, 0xc7bf, 0xbfa0, 0xc7c0, 0xc041, 0xc042,
+    /* 0xd500 .. 0xd5ff */
+    0xc043, 0xc044, 0xc045, 0xc046, 0xc7c1, 0xc047, 0xc048, 0xc049,
+    0xc7c2, 0xc04a, 0xc04b, 0xc04c, 0xc7c3, 0xc04d, 0xc04e, 0xc04f,
+    0xc050, 0xc051, 0xc052, 0xc053, 0xc7c4, 0xc7c5, 0xc054, 0xc7c6,
+    0xc055, 0xc056, 0xc057, 0xc058, 0xc059, 0xc05a, 0xc061, 0xc062,
+    0xc063, 0xc064, 0xc065, 0xc066, 0xc067, 0xc068, 0xc069, 0xc06a,
+    0xc06b, 0xc06c, 0xc06d, 0xc06e, 0xc06f, 0xc070, 0xc071, 0xc072,
+    0xc073, 0xc074, 0xc075, 0xc076, 0xc077, 0xc078, 0xc079, 0xc07a,
+    0xc081, 0xc082, 0xc083, 0xc084, 0xc7c7, 0xc7c8, 0xc085, 0xc086,
+    0xc7c9, 0xc087, 0xc088, 0xc089, 0xc7ca, 0xc08a, 0xc08b, 0xc08c,
+    0xc08d, 0xc08e, 0xc08f, 0xc090, 0xc7cb, 0xc7cc, 0xc091, 0xc7cd,
+    0xc092, 0xc7ce, 0xc093, 0xc094, 0xc095, 0xc096, 0xc097, 0xc098,
+    0xc7cf, 0xc7d0, 0xc099, 0xc09a, 0xc7d1, 0xc09b, 0xc09c, 0xc09d,
+    0xc7d2, 0xc09e, 0xc09f, 0xc0a0, 0xc141, 0xc7d3, 0xc142, 0xc143,
+    0xc7d4, 0xc7d5, 0xc144, 0xc7d6, 0xc145, 0xc7d7, 0xc146, 0xc147,
+    0xc148, 0xc149, 0xc14a, 0xc14b, 0xc7d8, 0xc7d9, 0xc14c, 0xc14d,
+    0xc7da, 0xc14e, 0xc14f, 0xc150, 0xc7db, 0xc151, 0xc152, 0xc153,
+    0xc154, 0xc155, 0xc156, 0xc157, 0xc7dc, 0xc7dd, 0xc158, 0xc7de,
+    0xc7df, 0xc7e0, 0xc159, 0xc15a, 0xc161, 0xc162, 0xc163, 0xc164,
+    0xc7e1, 0xc165, 0xc166, 0xc167, 0xc168, 0xc169, 0xc16a, 0xc16b,
+    0xc16c, 0xc16d, 0xc16e, 0xc16f, 0xc170, 0xc171, 0xc172, 0xc173,
+    0xc174, 0xc175, 0xc176, 0xc177, 0xc178, 0xc7e2, 0xc179, 0xc17a,
+    0xc181, 0xc182, 0xc183, 0xc184, 0xc185, 0xc186, 0xc187, 0xc188,
+    0xc189, 0xc18a, 0xc18b, 0xc18c, 0xc18d, 0xc18e, 0xc18f, 0xc190,
+    0xc191, 0xc192, 0xc193, 0xc194, 0xc195, 0xc196, 0xc197, 0xc198,
+    0xc199, 0xc19a, 0xc19b, 0xc19c, 0xc19d, 0xc19e, 0xc19f, 0xc1a0,
+    0xc7e3, 0xc7e4, 0xc241, 0xc242, 0xc7e5, 0xc243, 0xc244, 0xc245,
+    0xc7e6, 0xc246, 0xc7e7, 0xc247, 0xc248, 0xc249, 0xc24a, 0xc24b,
+    0xc7e8, 0xc7e9, 0xc24c, 0xc7ea, 0xc24d, 0xc7eb, 0xc24e, 0xc24f,
+    0xc250, 0xc251, 0xc252, 0xc253, 0xc7ec, 0xc7ed, 0xc254, 0xc255,
+    0xc7ee, 0xc256, 0xc257, 0xc258, 0xc7ef, 0xc259, 0xc25a, 0xc261,
+    0xc262, 0xc263, 0xc264, 0xc265, 0xc7f0, 0xc7f1, 0xc266, 0xc7f2,
+    0xc267, 0xc7f3, 0xc268, 0xc269, 0xc26a, 0xc26b, 0xc26c, 0xc26d,
+    /* 0xd600 .. 0xd6ff */
+    0xc7f4, 0xc7f5, 0xc26e, 0xc26f, 0xc7f6, 0xc270, 0xc271, 0xc272,
+    0xc7f7, 0xc273, 0xc274, 0xc275, 0xc276, 0xc277, 0xc278, 0xc279,
+    0xc7f8, 0xc7f9, 0xc27a, 0xc7fa, 0xc7fb, 0xc7fc, 0xc281, 0xc282,
+    0xc283, 0xc284, 0xc285, 0xc286, 0xc7fd, 0xc287, 0xc288, 0xc289,
+    0xc7fe, 0xc28a, 0xc28b, 0xc28c, 0xc8a1, 0xc28d, 0xc28e, 0xc28f,
+    0xc290, 0xc291, 0xc292, 0xc293, 0xc294, 0xc8a2, 0xc295, 0xc296,
+    0xc297, 0xc298, 0xc299, 0xc29a, 0xc29b, 0xc29c, 0xc29d, 0xc29e,
+    0xc8a3, 0xc8a4, 0xc29f, 0xc2a0, 0xc8a5, 0xc341, 0xc342, 0xc343,
+    0xc8a6, 0xc344, 0xc345, 0xc346, 0xc347, 0xc8a7, 0xc348, 0xc349,
+    0xc8a8, 0xc8a9, 0xc34a, 0xc8aa, 0xc34b, 0xc8ab, 0xc34c, 0xc34d,
+    0xc34e, 0xc8ac, 0xc34f, 0xc350, 0xc8ad, 0xc8ae, 0xc351, 0xc352,
+    0xc8af, 0xc353, 0xc354, 0xc355, 0xc8b0, 0xc356, 0xc357, 0xc358,
+    0xc359, 0xc35a, 0xc361, 0xc362, 0xc363, 0xc364, 0xc365, 0xc8b1,
+    0xc366, 0xc8b2, 0xc367, 0xc368, 0xc369, 0xc36a, 0xc36b, 0xc36c,
+    0xc8b3, 0xc8b4, 0xc36d, 0xc36e, 0xc8b5, 0xc36f, 0xc370, 0xc371,
+    0xc372, 0xc373, 0xc374, 0xc375, 0xc376, 0xc377, 0xc378, 0xc379,
+    0xc37a, 0xc381, 0xc382, 0xc8b6, 0xc383, 0xc8b7, 0xc384, 0xc385,
+    0xc386, 0xc387, 0xc388, 0xc389, 0xc8b8, 0xc8b9, 0xc38a, 0xc38b,
+    0xc8ba, 0xc38c, 0xc38d, 0xc38e, 0xc8bb, 0xc38f, 0xc390, 0xc391,
+    0xc392, 0xc393, 0xc394, 0xc395, 0xc396, 0xc8bc, 0xc397, 0xc8bd,
+    0xc398, 0xc8be, 0xc399, 0xc39a, 0xc39b, 0xc39c, 0xc39d, 0xc39e,
+    0xc8bf, 0xc39f, 0xc3a0, 0xc441, 0xc8c0, 0xc442, 0xc443, 0xc444,
+    0xc8c1, 0xc445, 0xc446, 0xc447, 0xc448, 0xc449, 0xc44a, 0xc44b,
+    0xc44c, 0xc8c2, 0xc44d, 0xc8c3, 0xc44e, 0xc44f, 0xc450, 0xc451,
+    0xc452, 0xc453, 0xc454, 0xc455, 0xc8c4, 0xc8c5, 0xc456, 0xc457,
+    0xc8c6, 0xc458, 0xc459, 0xc45a, 0xc8c7, 0xc461, 0xc462, 0xc463,
+    0xc464, 0xc8c8, 0xc465, 0xc466, 0xc8c9, 0xc467, 0xc468, 0xc8ca,
+    0xc469, 0xc8cb, 0xc46a, 0xc46b, 0xc46c, 0xc46d, 0xc46e, 0xc46f,
+    0xc8cc, 0xc470, 0xc471, 0xc472, 0xc8cd, 0xc473, 0xc474, 0xc475,
+    0xc8ce, 0xc476, 0xc477, 0xc478, 0xc479, 0xc47a, 0xc481, 0xc482,
+    0xc8cf, 0xc483, 0xc484, 0xc485, 0xc486, 0xc8d0, 0xc487, 0xc488,
+    0xc489, 0xc48a, 0xc48b, 0xc48c, 0xc8d1, 0xc8d2, 0xc48d, 0xc48e,
+    /* 0xd700 .. 0xd7ff */
+    0xc8d3, 0xc48f, 0xc490, 0xc491, 0xc8d4, 0xc492, 0xc493, 0xc494,
+    0xc495, 0xc496, 0xc497, 0xc498, 0xc499, 0xc49a, 0xc49b, 0xc49c,
+    0xc49d, 0xc8d5, 0xc49e, 0xc49f, 0xc4a0, 0xc541, 0xc542, 0xc543,
+    0xc8d6, 0xc8d7, 0xc544, 0xc545, 0xc8d8, 0xc546, 0xc547, 0xc548,
+    0xc8d9, 0xc549, 0xc54a, 0xc54b, 0xc54c, 0xc54d, 0xc54e, 0xc54f,
+    0xc8da, 0xc8db, 0xc550, 0xc8dc, 0xc551, 0xc8dd, 0xc552, 0xc553,
+    0xc554, 0xc555, 0xc556, 0xc557, 0xc8de, 0xc8df, 0xc558, 0xc559,
+    0xc8e0, 0xc55a, 0xc561, 0xc562, 0xc8e1, 0xc563, 0xc564, 0xc565,
+    0xc566, 0xc567, 0xc568, 0xc569, 0xc8e2, 0xc56a, 0xc56b, 0xc8e3,
+    0xc56c, 0xc8e4, 0xc56d, 0xc56e, 0xc56f, 0xc570, 0xc571, 0xc572,
+    0xc8e5, 0xc8e6, 0xc573, 0xc574, 0xc8e7, 0xc575, 0xc8e8, 0xc8e9,
+    0xc8ea, 0xc8eb, 0xc576, 0xc577, 0xc578, 0xc579, 0xc57a, 0xc581,
+    0xc8ec, 0xc8ed, 0xc582, 0xc8ee, 0xc583, 0xc8ef, 0xc584, 0xc585,
+    0xc586, 0xc8f0, 0xc587, 0xc588, 0xc8f1, 0xc589, 0xc58a, 0xc58b,
+    0xc8f2, 0xc58c, 0xc58d, 0xc58e, 0xc8f3, 0xc58f, 0xc590, 0xc591,
+    0xc592, 0xc593, 0xc594, 0xc595, 0xc8f4, 0xc8f5, 0xc596, 0xc597,
+    0xc598, 0xc8f6, 0xc599, 0xc59a, 0xc59b, 0xc59c, 0xc59d, 0xc59e,
+    0xc8f7, 0xc8f8, 0xc59f, 0xc5a0, 0xc8f9, 0xc641, 0xc642, 0xc643,
+    0xc8fa, 0xc644, 0xc645, 0xc646, 0xc647, 0xc648, 0xc649, 0xc64a,
+    0xc8fb, 0xc8fc, 0xc64b, 0xc8fd, 0xc64c, 0xc8fe, 0xc64d, 0xc64e,
+    0xc64f, 0xc650, 0xc651, 0xc652, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0xf900 .. 0xf9ff */
+    0xcbd0, 0xcbd6, 0xcbe7, 0xcdcf, 0xcde8, 0xcead, 0xcffb, 0xd0a2,
+    0xd0b8, 0xd0d0, 0xd0dd, 0xd1d4, 0xd1d5, 0xd1d8, 0xd1db, 0xd1dc,
+    0xd1dd, 0xd1de, 0xd1df, 0xd1e0, 0xd1e2, 0xd1e3, 0xd1e4, 0xd1e5,
+    0xd1e6, 0xd1e8, 0xd1e9, 0xd1ea, 0xd1eb, 0xd1ed, 0xd1ef, 0xd1f0,
+    0xd1f2, 0xd1f6, 0xd1fa, 0xd1fc, 0xd1fd, 0xd1fe, 0xd2a2, 0xd2a3,
+    0xd2a7, 0xd2a8, 0xd2a9, 0xd2aa, 0xd2ab, 0xd2ad, 0xd2b2, 0xd2be,
+    0xd2c2, 0xd2c3, 0xd2c4, 0xd2c6, 0xd2c7, 0xd2c8, 0xd2c9, 0xd2ca,
+    0xd2cb, 0xd2cd, 0xd2ce, 0xd2cf, 0xd2d0, 0xd2d1, 0xd2d2, 0xd2d3,
+    0xd2d4, 0xd2d5, 0xd2d6, 0xd2d7, 0xd2d9, 0xd2da, 0xd2de, 0xd2df,
+    0xd2e1, 0xd2e2, 0xd2e4, 0xd2e5, 0xd2e6, 0xd2e7, 0xd2e8, 0xd2e9,
+    0xd2ea, 0xd2eb, 0xd2f0, 0xd2f1, 0xd2f2, 0xd2f3, 0xd2f4, 0xd2f5,
+    0xd2f7, 0xd2f8, 0xd4e6, 0xd4fc, 0xd5a5, 0xd5ab, 0xd5ae, 0xd6b8,
+    0xd6cd, 0xd7cb, 0xd7e4, 0xdbc5, 0xdbe4, 0xdca5, 0xdda5, 0xddd5,
+    0xddf4, 0xdefc, 0xdefe, 0xdfb3, 0xdfe1, 0xdfe8, 0xe0f1, 0xe1ad,
+    0xe1ed, 0xe3f5, 0xe4a1, 0xe4a9, 0xe5ae, 0xe5b1, 0xe5b2, 0xe5b9,
+    0xe5bb, 0xe5bc, 0xe5c4, 0xe5ce, 0xe5d0, 0xe5d2, 0xe5d6, 0xe5fa,
+    0xe5fb, 0xe5fc, 0xe5fe, 0xe6a1, 0xe6a4, 0xe6a7, 0xe6ad, 0xe6af,
+    0xe6b0, 0xe6b1, 0xe6b3, 0xe6b7, 0xe6b8, 0xe6bc, 0xe6c4, 0xe6c6,
+    0xe6c7, 0xe6ca, 0xe6d2, 0xe6d6, 0xe6d9, 0xe6dc, 0xe6df, 0xe6e1,
+    0xe6e4, 0xe6e5, 0xe6e6, 0xe6e8, 0xe6ea, 0xe6eb, 0xe6ec, 0xe6ef,
+    0xe6f1, 0xe6f2, 0xe6f5, 0xe6f6, 0xe6f7, 0xe6f9, 0xe7a1, 0xe7a6,
+    0xe7a9, 0xe7aa, 0xe7ac, 0xe7ad, 0xe7b0, 0xe7bf, 0xe7c1, 0xe7c6,
+    0xe7c7, 0xe7cb, 0xe7cd, 0xe7cf, 0xe7d0, 0xe7d3, 0xe7df, 0xe7e4,
+    0xe7e6, 0xe7f7, 0xe8e7, 0xe8e8, 0xe8f0, 0xe8f1, 0xe8f7, 0xe8f9,
+    0xe8fb, 0xe8fe, 0xe9a7, 0xe9ac, 0xe9cc, 0xe9f7, 0xeac1, 0xeae5,
+    0xeaf4, 0xeaf7, 0xeafc, 0xeafe, 0xeba4, 0xeba7, 0xeba9, 0xebaa,
+    0xebba, 0xebbb, 0xebbd, 0xebc1, 0xebc2, 0xebc6, 0xebc7, 0xebcc,
+    0xebcf, 0xebd0, 0xebd1, 0xebd2, 0xebd8, 0xeca6, 0xeca7, 0xecaa,
+    0xecaf, 0xecb0, 0xecb1, 0xecb2, 0xecb5, 0xecb8, 0xecba, 0xecc0,
+    0xecc1, 0xecc5, 0xecc6, 0xecc9, 0xecca, 0xecd5, 0xecdd, 0xecde,
+    0xece1, 0xece4, 0xece7, 0xece8, 0xecf7, 0xecf8, 0xecfa, 0xeda1,
+    0xeda2, 0xeda3, 0xedee, 0xeedb, 0xf2bd, 0xf2fa, 0xf3b1, 0xf4a7,
+    /* 0xfa00 .. 0xfaff */
+    0xf4ee, 0xf6f4, 0xf6f6, 0xf7b8, 0xf7c8, 0xf7d3, 0xf8db, 0xf8f0,
+    0xfaa1, 0xfaa2, 0xfae6, 0xfca9, 0xe8b4, 0x003f, 0x003f, 0x003f,
+    0xf5c0, 0x003f, 0xf4e7, 0x003f, 0x003f, 0xfdeb, 0xeec4, 0xeccc,
+    0x003f, 0xe3ea, 0xdfd4, 0xdcd8, 0xeffe, 0xeff1, 0xe9e2, 0x003f,
+    0x003f, 0x003f, 0xf0b3, 0x003f, 0x003f, 0xecef, 0xd4b4, 0x003f,
+    0x003f, 0x003f, 0xdaf9, 0xdef8, 0xcebd, 0xf9cd, 0x003f, 0x003f,
+    0xd9b2, 0xe3ac, 0xd8f3, 0xd8f5, 0xd0c3, 0xdde4, 0xcae2, 0xf7a3,
+    0xd0ef, 0x003f, 0xd9f8, 0xf6b5, 0x003f, 0xfce2, 0xcbc6, 0xf1f3,
+    0xf3a4, 0xdac2, 0x003f, 0xdff4, 0xd8de, 0xfaad, 0xeec2, 0xf9d3,
+    0xedb4, 0x003f, 0xf6fc, 0xddf8, 0xdee4, 0xf2b3, 0xd1b7, 0xe9de,
+    0xf0d3, 0xf5e6, 0xfca1, 0xefee, 0xcdda, 0xd4cd, 0xefbd, 0xd6a3,
+    0xf2db, 0xdbe5, 0xdffe, 0xedba, 0xf6ab, 0x003f, 0x003f, 0xeeca,
+    0xcae8, 0xe3ca, 0xe4d7, 0xd0cd, 0xdeb9, 0xf1fc, 0x003f, 0xecef,
+    0xd1f1, 0xfac2, 0xdeba, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xeeef, 0x003f, 0xf5f6, 0xd0ed, 0xe9b8, 0xedc3,
+    0xcae2, 0x003f, 0xfdc2, 0x003f, 0xf5c0, 0xddc5, 0xe5f2, 0xddc6,
+    0xdde6, 0x003f, 0x003f, 0x003f, 0xf3f4, 0x003f, 0x003f, 0x003f,
+    0xeaef, 0xf1f3, 0x003f, 0xf3a4, 0xd3e3, 0xeaf1, 0xe2a4, 0x003f,
+    0xe7f9, 0xf4e7, 0xd5c7, 0xd8d0, 0xede8, 0x003f, 0xdfaf, 0xd7b5,
+    0x003f, 0xedb2, 0xf9d3, 0xefe7, 0xedb4, 0x003f, 0xedc9, 0xdbf3,
+    0xeec4, 0x003f, 0x003f, 0x003f, 0x003f, 0xe8b0, 0xeccc, 0xe0fc,
+    0xf2c1, 0x003f, 0xf3b7, 0x003f, 0x003f, 0xefbd, 0x003f, 0x003f,
+    0xd6a3, 0x003f, 0xedba, 0xfcd8, 0xfca4, 0x003f, 0xcbba, 0xdcdd,
+    0xe3ca, 0xf0e0, 0xf0b3, 0xf4eb, 0xe4d7, 0xd1e7, 0xebb1, 0xd0cd,
+    0xdca8, 0xf1fc, 0xe2c3, 0xf2c0, 0x003f, 0x003f, 0x003f, 0xd1f1,
+    0xeffe, 0x003f, 0xfac2, 0x003f, 0xdeba, 0x003f, 0xcfcf, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0xfb00 .. 0xfbff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x002b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0xfe00 .. 0xfeff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xa1aa, 0xa1aa, 0xa1aa, 0xa1aa, 0x005f, 0x005f, 0x005f,
+    0x002c, 0xa1a2, 0x002e, 0x003f, 0x003b, 0x003a, 0x003f, 0x0021,
+    0xa1aa, 0x0028, 0x0029, 0x007b, 0x007d, 0xa1b2, 0xa1b3, 0x0023,
+    0x0026, 0x002a, 0x002b, 0x002d, 0x003c, 0x003e, 0x003d, 0x003f,
+    0x005c, 0x0024, 0x0025, 0x0040, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0xff00 .. 0xffff */
+    0x003f, 0xa3a1, 0xa3a2, 0xa3a3, 0xa3a4, 0xa3a5, 0xa3a6, 0xa3a7,
+    0xa3a8, 0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac, 0xa3ad, 0xa3ae, 0xa3af,
+    0xa3b0, 0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4, 0xa3b5, 0xa3b6, 0xa3b7,
+    0xa3b8, 0xa3b9, 0xa3ba, 0xa3bb, 0xa3bc, 0xa3bd, 0xa3be, 0xa3bf,
+    0xa3c0, 0xa3c1, 0xa3c2, 0xa3c3, 0xa3c4, 0xa3c5, 0xa3c6, 0xa3c7,
+    0xa3c8, 0xa3c9, 0xa3ca, 0xa3cb, 0xa3cc, 0xa3cd, 0xa3ce, 0xa3cf,
+    0xa3d0, 0xa3d1, 0xa3d2, 0xa3d3, 0xa3d4, 0xa3d5, 0xa3d6, 0xa3d7,
+    0xa3d8, 0xa3d9, 0xa3da, 0xa3db, 0xa1ac, 0xa3dd, 0xa3de, 0xa3df,
+    0xa3e0, 0xa3e1, 0xa3e2, 0xa3e3, 0xa3e4, 0xa3e5, 0xa3e6, 0xa3e7,
+    0xa3e8, 0xa3e9, 0xa3ea, 0xa3eb, 0xa3ec, 0xa3ed, 0xa3ee, 0xa3ef,
+    0xa3f0, 0xa3f1, 0xa3f2, 0xa3f3, 0xa3f4, 0xa3f5, 0xa3f6, 0xa3f7,
+    0xa3f8, 0xa3f9, 0xa3fa, 0xa3fb, 0xa3fc, 0xa3fd, 0xa2a6, 0x003f,
+    0x003f, 0xa1a3, 0xa1b8, 0xa1b9, 0xa1a2, 0x003f, 0xabf2, 0xaba1,
+    0xaba3, 0xaba5, 0xaba7, 0xaba9, 0xabe3, 0xabe5, 0xabe7, 0xabc3,
+    0x003f, 0xaba2, 0xaba4, 0xaba6, 0xaba8, 0xabaa, 0xabab, 0xabad,
+    0xabaf, 0xabb1, 0xabb3, 0xabb5, 0xabb7, 0xabb9, 0xabbb, 0xabbd,
+    0xabbf, 0xabc1, 0xabc4, 0xabc6, 0xabc8, 0xabca, 0xabcb, 0xabcc,
+    0xabcd, 0xabce, 0xabcf, 0xabd2, 0xabd5, 0xabd8, 0xabdb, 0xabde,
+    0xabdf, 0xabe0, 0xabe1, 0xabe2, 0xabe4, 0xabe6, 0xabe8, 0xabe9,
+    0xabea, 0xabeb, 0xabec, 0xabed, 0xabef, 0xabf3, 0x003f, 0x003f,
+    0xa4d4, 0xa4a1, 0xa4a2, 0xa4a3, 0xa4a4, 0xa4a5, 0xa4a6, 0xa4a7,
+    0xa4a8, 0xa4a9, 0xa4aa, 0xa4ab, 0xa4ac, 0xa4ad, 0xa4ae, 0xa4af,
+    0xa4b0, 0xa4b1, 0xa4b2, 0xa4b3, 0xa4b4, 0xa4b5, 0xa4b6, 0xa4b7,
+    0xa4b8, 0xa4b9, 0xa4ba, 0xa4bb, 0xa4bc, 0xa4bd, 0xa4be, 0x003f,
+    0x003f, 0x003f, 0xa4bf, 0xa4c0, 0xa4c1, 0xa4c2, 0xa4c3, 0xa4c4,
+    0x003f, 0x003f, 0xa4c5, 0xa4c6, 0xa4c7, 0xa4c8, 0xa4c9, 0xa4ca,
+    0x003f, 0x003f, 0xa4cb, 0xa4cc, 0xa4cd, 0xa4ce, 0xa4cf, 0xa4d0,
+    0x003f, 0x003f, 0xa4d1, 0xa4d2, 0xa4d3, 0x003f, 0x003f, 0x003f,
+    0xa1cb, 0xa1cc, 0xa1fe, 0xa3fe, 0x007c, 0xa1cd, 0xa3dc, 0x003f,
+    0xa6a2, 0xa1e7, 0xa1e8, 0xa1e6, 0xa1e9, 0xa1e1, 0xa1db, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* defaults */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x0400, 0x9800, 0x9800, 0x9800,
+    0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800,
+    0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800,
+    0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x0500, 0x0600, 0x0700,
+    0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x0d00, 0x0e00, 0x9800,
+    0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x0f00, 0x1000,
+    0x1100, 0x1200, 0x1300, 0x1400, 0x9800, 0x9800, 0x9800, 0x9800,
+    0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800,
+    0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800,
+    0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x1500, 0x1600,
+    0x1700, 0x1800, 0x1900, 0x1a00, 0x1b00, 0x1c00, 0x1d00, 0x1e00,
+    0x1f00, 0x2000, 0x2100, 0x2200, 0x2300, 0x2400, 0x2500, 0x2600,
+    0x2700, 0x2800, 0x2900, 0x2a00, 0x2b00, 0x2c00, 0x2d00, 0x2e00,
+    0x2f00, 0x3000, 0x3100, 0x3200, 0x3300, 0x3400, 0x3500, 0x3600,
+    0x3700, 0x3800, 0x3900, 0x3a00, 0x3b00, 0x3c00, 0x3d00, 0x3e00,
+    0x3f00, 0x4000, 0x4100, 0x4200, 0x4300, 0x4400, 0x4500, 0x4600,
+    0x4700, 0x4800, 0x4900, 0x4a00, 0x4b00, 0x4c00, 0x4d00, 0x4e00,
+    0x4f00, 0x5000, 0x5100, 0x5200, 0x5300, 0x5400, 0x5500, 0x5600,
+    0x5700, 0x5800, 0x5900, 0x5a00, 0x5b00, 0x5c00, 0x5d00, 0x5e00,
+    0x5f00, 0x6000, 0x6100, 0x6200, 0x6300, 0x6400, 0x6500, 0x6600,
+    0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800,
+    0x9800, 0x9800, 0x9800, 0x9800, 0x6700, 0x6800, 0x6900, 0x6a00,
+    0x6b00, 0x6c00, 0x6d00, 0x6e00, 0x6f00, 0x7000, 0x7100, 0x7200,
+    0x7300, 0x7400, 0x7500, 0x7600, 0x7700, 0x7800, 0x7900, 0x7a00,
+    0x7b00, 0x7c00, 0x7d00, 0x7e00, 0x7f00, 0x8000, 0x8100, 0x8200,
+    0x8300, 0x8400, 0x8500, 0x8600, 0x8700, 0x8800, 0x8900, 0x8a00,
+    0x8b00, 0x8c00, 0x8d00, 0x8e00, 0x8f00, 0x9000, 0x9100, 0x9200,
+    0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800,
+    0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800,
+    0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800,
+    0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800, 0x9800,
+    0x9800, 0x9300, 0x9400, 0x9500, 0x9800, 0x9800, 0x9600, 0x9700
+};
+
+const struct dbcs_table cptable_949 =
+{
+    { 949, 2, 0x003f, 0x003f, "ANSI/OEM Korean Unified Hangul" },
+    cp2uni,
+    cp2uni_leadbytes,
+    uni2cp_low,
+    uni2cp_high,
+    { 0x81, 0xfe, 0x00, 0x00 }
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_950.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_950.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/c_950.c	(revision 16410)
@@ -0,0 +1,6595 @@
+/* code page 950 (ANSI/OEM Traditional Chinese Big5) */
+/* generated from ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT */
+/* DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+static const WCHAR cp2uni[22784] =
+{
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0080, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x003f,
+    /* unused lead bytes */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte a1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x3000, 0xff0c, 0x3001, 0x3002, 0xff0e, 0x2027, 0xff1b, 0xff1a,
+    0xff1f, 0xff01, 0xfe30, 0x2026, 0x2025, 0xfe50, 0xfe51, 0xfe52,
+    0x00b7, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xff5c, 0x2013, 0xfe31,
+    0x2014, 0xfe33, 0x2574, 0xfe34, 0xfe4f, 0xff08, 0xff09, 0xfe35,
+    0xfe36, 0xff5b, 0xff5d, 0xfe37, 0xfe38, 0x3014, 0x3015, 0xfe39,
+    0xfe3a, 0x3010, 0x3011, 0xfe3b, 0xfe3c, 0x300a, 0x300b, 0xfe3d,
+    0xfe3e, 0x3008, 0x3009, 0xfe3f, 0xfe40, 0x300c, 0x300d, 0xfe41,
+    0xfe42, 0x300e, 0x300f, 0xfe43, 0xfe44, 0xfe59, 0xfe5a, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xfe5b, 0xfe5c, 0xfe5d, 0xfe5e, 0x2018, 0x2019, 0x201c,
+    0x201d, 0x301d, 0x301e, 0x2035, 0x2032, 0xff03, 0xff06, 0xff0a,
+    0x203b, 0x00a7, 0x3003, 0x25cb, 0x25cf, 0x25b3, 0x25b2, 0x25ce,
+    0x2606, 0x2605, 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25bd, 0x25bc,
+    0x32a3, 0x2105, 0x00af, 0xffe3, 0xff3f, 0x02cd, 0xfe49, 0xfe4a,
+    0xfe4d, 0xfe4e, 0xfe4b, 0xfe4c, 0xfe5f, 0xfe60, 0xfe61, 0xff0b,
+    0xff0d, 0x00d7, 0x00f7, 0x00b1, 0x221a, 0xff1c, 0xff1e, 0xff1d,
+    0x2266, 0x2267, 0x2260, 0x221e, 0x2252, 0x2261, 0xfe62, 0xfe63,
+    0xfe64, 0xfe65, 0xfe66, 0xff5e, 0x2229, 0x222a, 0x22a5, 0x2220,
+    0x221f, 0x22bf, 0x33d2, 0x33d1, 0x222b, 0x222e, 0x2235, 0x2234,
+    0x2640, 0x2642, 0x2295, 0x2299, 0x2191, 0x2193, 0x2190, 0x2192,
+    0x2196, 0x2197, 0x2199, 0x2198, 0x2225, 0x2223, 0xff0f, 0x003f,
+    /* lead byte a2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xff3c, 0x2215, 0xfe68, 0xff04, 0xffe5, 0x3012, 0xffe0, 0xffe1,
+    0xff05, 0xff20, 0x2103, 0x2109, 0xfe69, 0xfe6a, 0xfe6b, 0x33d5,
+    0x339c, 0x339d, 0x339e, 0x33ce, 0x33a1, 0x338e, 0x338f, 0x33c4,
+    0x00b0, 0x5159, 0x515b, 0x515e, 0x515d, 0x5161, 0x5163, 0x55e7,
+    0x74e9, 0x7cce, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586,
+    0x2587, 0x2588, 0x258f, 0x258e, 0x258d, 0x258c, 0x258b, 0x258a,
+    0x2589, 0x253c, 0x2534, 0x252c, 0x2524, 0x251c, 0x2594, 0x2500,
+    0x2502, 0x2595, 0x250c, 0x2510, 0x2514, 0x2518, 0x256d, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x256e, 0x2570, 0x256f, 0x2550, 0x255e, 0x256a, 0x2561,
+    0x25e2, 0x25e3, 0x25e5, 0x25e4, 0x2571, 0x2572, 0x2573, 0xff10,
+    0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18,
+    0xff19, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166,
+    0x2167, 0x2168, 0x2169, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025,
+    0x3026, 0x3027, 0x3028, 0x3029, 0x5341, 0x5344, 0x5345, 0xff21,
+    0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28, 0xff29,
+    0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31,
+    0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39,
+    0xff3a, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47,
+    0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f,
+    0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0x003f,
+    /* lead byte a3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xff57, 0xff58, 0xff59, 0xff5a, 0x0391, 0x0392, 0x0393, 0x0394,
+    0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c,
+    0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5,
+    0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2, 0x03b3, 0x03b4,
+    0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc,
+    0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5,
+    0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x3105, 0x3106, 0x3107, 0x3108,
+    0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116,
+    0x3117, 0x3118, 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e,
+    0x311f, 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126,
+    0x3127, 0x3128, 0x3129, 0x02d9, 0x02c9, 0x02ca, 0x02c7, 0x02cb,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x20ac, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte a4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x4e00, 0x4e59, 0x4e01, 0x4e03, 0x4e43, 0x4e5d, 0x4e86, 0x4e8c,
+    0x4eba, 0x513f, 0x5165, 0x516b, 0x51e0, 0x5200, 0x5201, 0x529b,
+    0x5315, 0x5341, 0x535c, 0x53c8, 0x4e09, 0x4e0b, 0x4e08, 0x4e0a,
+    0x4e2b, 0x4e38, 0x51e1, 0x4e45, 0x4e48, 0x4e5f, 0x4e5e, 0x4e8e,
+    0x4ea1, 0x5140, 0x5203, 0x52fa, 0x5343, 0x53c9, 0x53e3, 0x571f,
+    0x58eb, 0x5915, 0x5927, 0x5973, 0x5b50, 0x5b51, 0x5b53, 0x5bf8,
+    0x5c0f, 0x5c22, 0x5c38, 0x5c71, 0x5ddd, 0x5de5, 0x5df1, 0x5df2,
+    0x5df3, 0x5dfe, 0x5e72, 0x5efe, 0x5f0b, 0x5f13, 0x624d, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x4e11, 0x4e10, 0x4e0d, 0x4e2d, 0x4e30, 0x4e39, 0x4e4b,
+    0x5c39, 0x4e88, 0x4e91, 0x4e95, 0x4e92, 0x4e94, 0x4ea2, 0x4ec1,
+    0x4ec0, 0x4ec3, 0x4ec6, 0x4ec7, 0x4ecd, 0x4eca, 0x4ecb, 0x4ec4,
+    0x5143, 0x5141, 0x5167, 0x516d, 0x516e, 0x516c, 0x5197, 0x51f6,
+    0x5206, 0x5207, 0x5208, 0x52fb, 0x52fe, 0x52ff, 0x5316, 0x5339,
+    0x5348, 0x5347, 0x5345, 0x535e, 0x5384, 0x53cb, 0x53ca, 0x53cd,
+    0x58ec, 0x5929, 0x592b, 0x592a, 0x592d, 0x5b54, 0x5c11, 0x5c24,
+    0x5c3a, 0x5c6f, 0x5df4, 0x5e7b, 0x5eff, 0x5f14, 0x5f15, 0x5fc3,
+    0x6208, 0x6236, 0x624b, 0x624e, 0x652f, 0x6587, 0x6597, 0x65a4,
+    0x65b9, 0x65e5, 0x66f0, 0x6708, 0x6728, 0x6b20, 0x6b62, 0x6b79,
+    0x6bcb, 0x6bd4, 0x6bdb, 0x6c0f, 0x6c34, 0x706b, 0x722a, 0x7236,
+    0x723b, 0x7247, 0x7259, 0x725b, 0x72ac, 0x738b, 0x4e19, 0x003f,
+    /* lead byte a5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x4e16, 0x4e15, 0x4e14, 0x4e18, 0x4e3b, 0x4e4d, 0x4e4f, 0x4e4e,
+    0x4ee5, 0x4ed8, 0x4ed4, 0x4ed5, 0x4ed6, 0x4ed7, 0x4ee3, 0x4ee4,
+    0x4ed9, 0x4ede, 0x5145, 0x5144, 0x5189, 0x518a, 0x51ac, 0x51f9,
+    0x51fa, 0x51f8, 0x520a, 0x52a0, 0x529f, 0x5305, 0x5306, 0x5317,
+    0x531d, 0x4edf, 0x534a, 0x5349, 0x5361, 0x5360, 0x536f, 0x536e,
+    0x53bb, 0x53ef, 0x53e4, 0x53f3, 0x53ec, 0x53ee, 0x53e9, 0x53e8,
+    0x53fc, 0x53f8, 0x53f5, 0x53eb, 0x53e6, 0x53ea, 0x53f2, 0x53f1,
+    0x53f0, 0x53e5, 0x53ed, 0x53fb, 0x56db, 0x56da, 0x5916, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x592e, 0x5931, 0x5974, 0x5976, 0x5b55, 0x5b83, 0x5c3c,
+    0x5de8, 0x5de7, 0x5de6, 0x5e02, 0x5e03, 0x5e73, 0x5e7c, 0x5f01,
+    0x5f18, 0x5f17, 0x5fc5, 0x620a, 0x6253, 0x6254, 0x6252, 0x6251,
+    0x65a5, 0x65e6, 0x672e, 0x672c, 0x672a, 0x672b, 0x672d, 0x6b63,
+    0x6bcd, 0x6c11, 0x6c10, 0x6c38, 0x6c41, 0x6c40, 0x6c3e, 0x72af,
+    0x7384, 0x7389, 0x74dc, 0x74e6, 0x7518, 0x751f, 0x7528, 0x7529,
+    0x7530, 0x7531, 0x7532, 0x7533, 0x758b, 0x767d, 0x76ae, 0x76bf,
+    0x76ee, 0x77db, 0x77e2, 0x77f3, 0x793a, 0x79be, 0x7a74, 0x7acb,
+    0x4e1e, 0x4e1f, 0x4e52, 0x4e53, 0x4e69, 0x4e99, 0x4ea4, 0x4ea6,
+    0x4ea5, 0x4eff, 0x4f09, 0x4f19, 0x4f0a, 0x4f15, 0x4f0d, 0x4f10,
+    0x4f11, 0x4f0f, 0x4ef2, 0x4ef6, 0x4efb, 0x4ef0, 0x4ef3, 0x4efd,
+    0x4f01, 0x4f0b, 0x5149, 0x5147, 0x5146, 0x5148, 0x5168, 0x003f,
+    /* lead byte a6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x5171, 0x518d, 0x51b0, 0x5217, 0x5211, 0x5212, 0x520e, 0x5216,
+    0x52a3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540f,
+    0x540c, 0x540a, 0x5410, 0x5401, 0x540b, 0x5404, 0x5411, 0x540d,
+    0x5408, 0x5403, 0x540e, 0x5406, 0x5412, 0x56e0, 0x56de, 0x56dd,
+    0x5733, 0x5730, 0x5728, 0x572d, 0x572c, 0x572f, 0x5729, 0x5919,
+    0x591a, 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597d, 0x5979,
+    0x5982, 0x5981, 0x5b57, 0x5b58, 0x5b87, 0x5b88, 0x5b85, 0x5b89,
+    0x5bfa, 0x5c16, 0x5c79, 0x5dde, 0x5e06, 0x5e76, 0x5e74, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x5f0f, 0x5f1b, 0x5fd9, 0x5fd6, 0x620e, 0x620c, 0x620d,
+    0x6210, 0x6263, 0x625b, 0x6258, 0x6536, 0x65e9, 0x65e8, 0x65ec,
+    0x65ed, 0x66f2, 0x66f3, 0x6709, 0x673d, 0x6734, 0x6731, 0x6735,
+    0x6b21, 0x6b64, 0x6b7b, 0x6c16, 0x6c5d, 0x6c57, 0x6c59, 0x6c5f,
+    0x6c60, 0x6c50, 0x6c55, 0x6c61, 0x6c5b, 0x6c4d, 0x6c4e, 0x7070,
+    0x725f, 0x725d, 0x767e, 0x7af9, 0x7c73, 0x7cf8, 0x7f36, 0x7f8a,
+    0x7fbd, 0x8001, 0x8003, 0x800c, 0x8012, 0x8033, 0x807f, 0x8089,
+    0x808b, 0x808c, 0x81e3, 0x81ea, 0x81f3, 0x81fc, 0x820c, 0x821b,
+    0x821f, 0x826e, 0x8272, 0x827e, 0x866b, 0x8840, 0x884c, 0x8863,
+    0x897f, 0x9621, 0x4e32, 0x4ea8, 0x4f4d, 0x4f4f, 0x4f47, 0x4f57,
+    0x4f5e, 0x4f34, 0x4f5b, 0x4f55, 0x4f30, 0x4f50, 0x4f51, 0x4f3d,
+    0x4f3a, 0x4f38, 0x4f43, 0x4f54, 0x4f3c, 0x4f46, 0x4f63, 0x003f,
+    /* lead byte a7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x4f5c, 0x4f60, 0x4f2f, 0x4f4e, 0x4f36, 0x4f59, 0x4f5d, 0x4f48,
+    0x4f5a, 0x514c, 0x514b, 0x514d, 0x5175, 0x51b6, 0x51b7, 0x5225,
+    0x5224, 0x5229, 0x522a, 0x5228, 0x52ab, 0x52a9, 0x52aa, 0x52ac,
+    0x5323, 0x5373, 0x5375, 0x541d, 0x542d, 0x541e, 0x543e, 0x5426,
+    0x544e, 0x5427, 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541b,
+    0x5429, 0x544a, 0x5439, 0x543b, 0x5438, 0x542e, 0x5435, 0x5436,
+    0x5420, 0x543c, 0x5440, 0x5431, 0x542b, 0x541f, 0x542c, 0x56ea,
+    0x56f0, 0x56e4, 0x56eb, 0x574a, 0x5751, 0x5740, 0x574d, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x5747, 0x574e, 0x573e, 0x5750, 0x574f, 0x573b, 0x58ef,
+    0x593e, 0x599d, 0x5992, 0x59a8, 0x599e, 0x59a3, 0x5999, 0x5996,
+    0x598d, 0x59a4, 0x5993, 0x598a, 0x59a5, 0x5b5d, 0x5b5c, 0x5b5a,
+    0x5b5b, 0x5b8c, 0x5b8b, 0x5b8f, 0x5c2c, 0x5c40, 0x5c41, 0x5c3f,
+    0x5c3e, 0x5c90, 0x5c91, 0x5c94, 0x5c8c, 0x5deb, 0x5e0c, 0x5e8f,
+    0x5e87, 0x5e8a, 0x5ef7, 0x5f04, 0x5f1f, 0x5f64, 0x5f62, 0x5f77,
+    0x5f79, 0x5fd8, 0x5fcc, 0x5fd7, 0x5fcd, 0x5ff1, 0x5feb, 0x5ff8,
+    0x5fea, 0x6212, 0x6211, 0x6284, 0x6297, 0x6296, 0x6280, 0x6276,
+    0x6289, 0x626d, 0x628a, 0x627c, 0x627e, 0x6279, 0x6273, 0x6292,
+    0x626f, 0x6298, 0x626e, 0x6295, 0x6293, 0x6291, 0x6286, 0x6539,
+    0x653b, 0x6538, 0x65f1, 0x66f4, 0x675f, 0x674e, 0x674f, 0x6750,
+    0x6751, 0x675c, 0x6756, 0x675e, 0x6749, 0x6746, 0x6760, 0x003f,
+    /* lead byte a8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6753, 0x6757, 0x6b65, 0x6bcf, 0x6c42, 0x6c5e, 0x6c99, 0x6c81,
+    0x6c88, 0x6c89, 0x6c85, 0x6c9b, 0x6c6a, 0x6c7a, 0x6c90, 0x6c70,
+    0x6c8c, 0x6c68, 0x6c96, 0x6c92, 0x6c7d, 0x6c83, 0x6c72, 0x6c7e,
+    0x6c74, 0x6c86, 0x6c76, 0x6c8d, 0x6c94, 0x6c98, 0x6c82, 0x7076,
+    0x707c, 0x707d, 0x7078, 0x7262, 0x7261, 0x7260, 0x72c4, 0x72c2,
+    0x7396, 0x752c, 0x752b, 0x7537, 0x7538, 0x7682, 0x76ef, 0x77e3,
+    0x79c1, 0x79c0, 0x79bf, 0x7a76, 0x7cfb, 0x7f55, 0x8096, 0x8093,
+    0x809d, 0x8098, 0x809b, 0x809a, 0x80b2, 0x826f, 0x8292, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x828b, 0x828d, 0x898b, 0x89d2, 0x8a00, 0x8c37, 0x8c46,
+    0x8c55, 0x8c9d, 0x8d64, 0x8d70, 0x8db3, 0x8eab, 0x8eca, 0x8f9b,
+    0x8fb0, 0x8fc2, 0x8fc6, 0x8fc5, 0x8fc4, 0x5de1, 0x9091, 0x90a2,
+    0x90aa, 0x90a6, 0x90a3, 0x9149, 0x91c6, 0x91cc, 0x9632, 0x962e,
+    0x9631, 0x962a, 0x962c, 0x4e26, 0x4e56, 0x4e73, 0x4e8b, 0x4e9b,
+    0x4e9e, 0x4eab, 0x4eac, 0x4f6f, 0x4f9d, 0x4f8d, 0x4f73, 0x4f7f,
+    0x4f6c, 0x4f9b, 0x4f8b, 0x4f86, 0x4f83, 0x4f70, 0x4f75, 0x4f88,
+    0x4f69, 0x4f7b, 0x4f96, 0x4f7e, 0x4f8f, 0x4f91, 0x4f7a, 0x5154,
+    0x5152, 0x5155, 0x5169, 0x5177, 0x5176, 0x5178, 0x51bd, 0x51fd,
+    0x523b, 0x5238, 0x5237, 0x523a, 0x5230, 0x522e, 0x5236, 0x5241,
+    0x52be, 0x52bb, 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, 0x5377,
+    0x5378, 0x5379, 0x53d6, 0x53d4, 0x53d7, 0x5473, 0x5475, 0x003f,
+    /* lead byte a9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x5496, 0x5478, 0x5495, 0x5480, 0x547b, 0x5477, 0x5484, 0x5492,
+    0x5486, 0x547c, 0x5490, 0x5471, 0x5476, 0x548c, 0x549a, 0x5462,
+    0x5468, 0x548b, 0x547d, 0x548e, 0x56fa, 0x5783, 0x5777, 0x576a,
+    0x5769, 0x5761, 0x5766, 0x5764, 0x577c, 0x591c, 0x5949, 0x5947,
+    0x5948, 0x5944, 0x5954, 0x59be, 0x59bb, 0x59d4, 0x59b9, 0x59ae,
+    0x59d1, 0x59c6, 0x59d0, 0x59cd, 0x59cb, 0x59d3, 0x59ca, 0x59af,
+    0x59b3, 0x59d2, 0x59c5, 0x5b5f, 0x5b64, 0x5b63, 0x5b97, 0x5b9a,
+    0x5b98, 0x5b9c, 0x5b99, 0x5b9b, 0x5c1a, 0x5c48, 0x5c45, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x5c46, 0x5cb7, 0x5ca1, 0x5cb8, 0x5ca9, 0x5cab, 0x5cb1,
+    0x5cb3, 0x5e18, 0x5e1a, 0x5e16, 0x5e15, 0x5e1b, 0x5e11, 0x5e78,
+    0x5e9a, 0x5e97, 0x5e9c, 0x5e95, 0x5e96, 0x5ef6, 0x5f26, 0x5f27,
+    0x5f29, 0x5f80, 0x5f81, 0x5f7f, 0x5f7c, 0x5fdd, 0x5fe0, 0x5ffd,
+    0x5ff5, 0x5fff, 0x600f, 0x6014, 0x602f, 0x6035, 0x6016, 0x602a,
+    0x6015, 0x6021, 0x6027, 0x6029, 0x602b, 0x601b, 0x6216, 0x6215,
+    0x623f, 0x623e, 0x6240, 0x627f, 0x62c9, 0x62cc, 0x62c4, 0x62bf,
+    0x62c2, 0x62b9, 0x62d2, 0x62db, 0x62ab, 0x62d3, 0x62d4, 0x62cb,
+    0x62c8, 0x62a8, 0x62bd, 0x62bc, 0x62d0, 0x62d9, 0x62c7, 0x62cd,
+    0x62b5, 0x62da, 0x62b1, 0x62d8, 0x62d6, 0x62d7, 0x62c6, 0x62ac,
+    0x62ce, 0x653e, 0x65a7, 0x65bc, 0x65fa, 0x6614, 0x6613, 0x660c,
+    0x6606, 0x6602, 0x660e, 0x6600, 0x660f, 0x6615, 0x660a, 0x003f,
+    /* lead byte aa */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6607, 0x670d, 0x670b, 0x676d, 0x678b, 0x6795, 0x6771, 0x679c,
+    0x6773, 0x6777, 0x6787, 0x679d, 0x6797, 0x676f, 0x6770, 0x677f,
+    0x6789, 0x677e, 0x6790, 0x6775, 0x679a, 0x6793, 0x677c, 0x676a,
+    0x6772, 0x6b23, 0x6b66, 0x6b67, 0x6b7f, 0x6c13, 0x6c1b, 0x6ce3,
+    0x6ce8, 0x6cf3, 0x6cb1, 0x6ccc, 0x6ce5, 0x6cb3, 0x6cbd, 0x6cbe,
+    0x6cbc, 0x6ce2, 0x6cab, 0x6cd5, 0x6cd3, 0x6cb8, 0x6cc4, 0x6cb9,
+    0x6cc1, 0x6cae, 0x6cd7, 0x6cc5, 0x6cf1, 0x6cbf, 0x6cbb, 0x6ce1,
+    0x6cdb, 0x6cca, 0x6cac, 0x6cef, 0x6cdc, 0x6cd6, 0x6ce0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7095, 0x708e, 0x7092, 0x708a, 0x7099, 0x722c, 0x722d,
+    0x7238, 0x7248, 0x7267, 0x7269, 0x72c0, 0x72ce, 0x72d9, 0x72d7,
+    0x72d0, 0x73a9, 0x73a8, 0x739f, 0x73ab, 0x73a5, 0x753d, 0x759d,
+    0x7599, 0x759a, 0x7684, 0x76c2, 0x76f2, 0x76f4, 0x77e5, 0x77fd,
+    0x793e, 0x7940, 0x7941, 0x79c9, 0x79c8, 0x7a7a, 0x7a79, 0x7afa,
+    0x7cfe, 0x7f54, 0x7f8c, 0x7f8b, 0x8005, 0x80ba, 0x80a5, 0x80a2,
+    0x80b1, 0x80a1, 0x80ab, 0x80a9, 0x80b4, 0x80aa, 0x80af, 0x81e5,
+    0x81fe, 0x820d, 0x82b3, 0x829d, 0x8299, 0x82ad, 0x82bd, 0x829f,
+    0x82b9, 0x82b1, 0x82ac, 0x82a5, 0x82af, 0x82b8, 0x82a3, 0x82b0,
+    0x82be, 0x82b7, 0x864e, 0x8671, 0x521d, 0x8868, 0x8ecb, 0x8fce,
+    0x8fd4, 0x8fd1, 0x90b5, 0x90b8, 0x90b1, 0x90b6, 0x91c7, 0x91d1,
+    0x9577, 0x9580, 0x961c, 0x9640, 0x963f, 0x963b, 0x9644, 0x003f,
+    /* lead byte ab */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9642, 0x96b9, 0x96e8, 0x9752, 0x975e, 0x4e9f, 0x4ead, 0x4eae,
+    0x4fe1, 0x4fb5, 0x4faf, 0x4fbf, 0x4fe0, 0x4fd1, 0x4fcf, 0x4fdd,
+    0x4fc3, 0x4fb6, 0x4fd8, 0x4fdf, 0x4fca, 0x4fd7, 0x4fae, 0x4fd0,
+    0x4fc4, 0x4fc2, 0x4fda, 0x4fce, 0x4fde, 0x4fb7, 0x5157, 0x5192,
+    0x5191, 0x51a0, 0x524e, 0x5243, 0x524a, 0x524d, 0x524c, 0x524b,
+    0x5247, 0x52c7, 0x52c9, 0x52c3, 0x52c1, 0x530d, 0x5357, 0x537b,
+    0x539a, 0x53db, 0x54ac, 0x54c0, 0x54a8, 0x54ce, 0x54c9, 0x54b8,
+    0x54a6, 0x54b3, 0x54c7, 0x54c2, 0x54bd, 0x54aa, 0x54c1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x54c4, 0x54c8, 0x54af, 0x54ab, 0x54b1, 0x54bb, 0x54a9,
+    0x54a7, 0x54bf, 0x56ff, 0x5782, 0x578b, 0x57a0, 0x57a3, 0x57a2,
+    0x57ce, 0x57ae, 0x5793, 0x5955, 0x5951, 0x594f, 0x594e, 0x5950,
+    0x59dc, 0x59d8, 0x59ff, 0x59e3, 0x59e8, 0x5a03, 0x59e5, 0x59ea,
+    0x59da, 0x59e6, 0x5a01, 0x59fb, 0x5b69, 0x5ba3, 0x5ba6, 0x5ba4,
+    0x5ba2, 0x5ba5, 0x5c01, 0x5c4e, 0x5c4f, 0x5c4d, 0x5c4b, 0x5cd9,
+    0x5cd2, 0x5df7, 0x5e1d, 0x5e25, 0x5e1f, 0x5e7d, 0x5ea0, 0x5ea6,
+    0x5efa, 0x5f08, 0x5f2d, 0x5f65, 0x5f88, 0x5f85, 0x5f8a, 0x5f8b,
+    0x5f87, 0x5f8c, 0x5f89, 0x6012, 0x601d, 0x6020, 0x6025, 0x600e,
+    0x6028, 0x604d, 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606c,
+    0x606b, 0x606a, 0x6064, 0x6241, 0x62dc, 0x6316, 0x6309, 0x62fc,
+    0x62ed, 0x6301, 0x62ee, 0x62fd, 0x6307, 0x62f1, 0x62f7, 0x003f,
+    /* lead byte ac */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x62ef, 0x62ec, 0x62fe, 0x62f4, 0x6311, 0x6302, 0x653f, 0x6545,
+    0x65ab, 0x65bd, 0x65e2, 0x6625, 0x662d, 0x6620, 0x6627, 0x662f,
+    0x661f, 0x6628, 0x6631, 0x6624, 0x66f7, 0x67ff, 0x67d3, 0x67f1,
+    0x67d4, 0x67d0, 0x67ec, 0x67b6, 0x67af, 0x67f5, 0x67e9, 0x67ef,
+    0x67c4, 0x67d1, 0x67b4, 0x67da, 0x67e5, 0x67b8, 0x67cf, 0x67de,
+    0x67f3, 0x67b0, 0x67d9, 0x67e2, 0x67dd, 0x67d2, 0x6b6a, 0x6b83,
+    0x6b86, 0x6bb5, 0x6bd2, 0x6bd7, 0x6c1f, 0x6cc9, 0x6d0b, 0x6d32,
+    0x6d2a, 0x6d41, 0x6d25, 0x6d0c, 0x6d31, 0x6d1e, 0x6d17, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6d3b, 0x6d3d, 0x6d3e, 0x6d36, 0x6d1b, 0x6cf5, 0x6d39,
+    0x6d27, 0x6d38, 0x6d29, 0x6d2e, 0x6d35, 0x6d0e, 0x6d2b, 0x70ab,
+    0x70ba, 0x70b3, 0x70ac, 0x70af, 0x70ad, 0x70b8, 0x70ae, 0x70a4,
+    0x7230, 0x7272, 0x726f, 0x7274, 0x72e9, 0x72e0, 0x72e1, 0x73b7,
+    0x73ca, 0x73bb, 0x73b2, 0x73cd, 0x73c0, 0x73b3, 0x751a, 0x752d,
+    0x754f, 0x754c, 0x754e, 0x754b, 0x75ab, 0x75a4, 0x75a5, 0x75a2,
+    0x75a3, 0x7678, 0x7686, 0x7687, 0x7688, 0x76c8, 0x76c6, 0x76c3,
+    0x76c5, 0x7701, 0x76f9, 0x76f8, 0x7709, 0x770b, 0x76fe, 0x76fc,
+    0x7707, 0x77dc, 0x7802, 0x7814, 0x780c, 0x780d, 0x7946, 0x7949,
+    0x7948, 0x7947, 0x79b9, 0x79ba, 0x79d1, 0x79d2, 0x79cb, 0x7a7f,
+    0x7a81, 0x7aff, 0x7afd, 0x7c7d, 0x7d02, 0x7d05, 0x7d00, 0x7d09,
+    0x7d07, 0x7d04, 0x7d06, 0x7f38, 0x7f8e, 0x7fbf, 0x8004, 0x003f,
+    /* lead byte ad */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8010, 0x800d, 0x8011, 0x8036, 0x80d6, 0x80e5, 0x80da, 0x80c3,
+    0x80c4, 0x80cc, 0x80e1, 0x80db, 0x80ce, 0x80de, 0x80e4, 0x80dd,
+    0x81f4, 0x8222, 0x82e7, 0x8303, 0x8305, 0x82e3, 0x82db, 0x82e6,
+    0x8304, 0x82e5, 0x8302, 0x8309, 0x82d2, 0x82d7, 0x82f1, 0x8301,
+    0x82dc, 0x82d4, 0x82d1, 0x82de, 0x82d3, 0x82df, 0x82ef, 0x8306,
+    0x8650, 0x8679, 0x867b, 0x867a, 0x884d, 0x886b, 0x8981, 0x89d4,
+    0x8a08, 0x8a02, 0x8a03, 0x8c9e, 0x8ca0, 0x8d74, 0x8d73, 0x8db4,
+    0x8ecd, 0x8ecc, 0x8ff0, 0x8fe6, 0x8fe2, 0x8fea, 0x8fe5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8fed, 0x8feb, 0x8fe4, 0x8fe8, 0x90ca, 0x90ce, 0x90c1,
+    0x90c3, 0x914b, 0x914a, 0x91cd, 0x9582, 0x9650, 0x964b, 0x964c,
+    0x964d, 0x9762, 0x9769, 0x97cb, 0x97ed, 0x97f3, 0x9801, 0x98a8,
+    0x98db, 0x98df, 0x9996, 0x9999, 0x4e58, 0x4eb3, 0x500c, 0x500d,
+    0x5023, 0x4fef, 0x5026, 0x5025, 0x4ff8, 0x5029, 0x5016, 0x5006,
+    0x503c, 0x501f, 0x501a, 0x5012, 0x5011, 0x4ffa, 0x5000, 0x5014,
+    0x5028, 0x4ff1, 0x5021, 0x500b, 0x5019, 0x5018, 0x4ff3, 0x4fee,
+    0x502d, 0x502a, 0x4ffe, 0x502b, 0x5009, 0x517c, 0x51a4, 0x51a5,
+    0x51a2, 0x51cd, 0x51cc, 0x51c6, 0x51cb, 0x5256, 0x525c, 0x5254,
+    0x525b, 0x525d, 0x532a, 0x537f, 0x539f, 0x539d, 0x53df, 0x54e8,
+    0x5510, 0x5501, 0x5537, 0x54fc, 0x54e5, 0x54f2, 0x5506, 0x54fa,
+    0x5514, 0x54e9, 0x54ed, 0x54e1, 0x5509, 0x54ee, 0x54ea, 0x003f,
+    /* lead byte ae */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x54e6, 0x5527, 0x5507, 0x54fd, 0x550f, 0x5703, 0x5704, 0x57c2,
+    0x57d4, 0x57cb, 0x57c3, 0x5809, 0x590f, 0x5957, 0x5958, 0x595a,
+    0x5a11, 0x5a18, 0x5a1c, 0x5a1f, 0x5a1b, 0x5a13, 0x59ec, 0x5a20,
+    0x5a23, 0x5a29, 0x5a25, 0x5a0c, 0x5a09, 0x5b6b, 0x5c58, 0x5bb0,
+    0x5bb3, 0x5bb6, 0x5bb4, 0x5bae, 0x5bb5, 0x5bb9, 0x5bb8, 0x5c04,
+    0x5c51, 0x5c55, 0x5c50, 0x5ced, 0x5cfd, 0x5cfb, 0x5cea, 0x5ce8,
+    0x5cf0, 0x5cf6, 0x5d01, 0x5cf4, 0x5dee, 0x5e2d, 0x5e2b, 0x5eab,
+    0x5ead, 0x5ea7, 0x5f31, 0x5f92, 0x5f91, 0x5f90, 0x6059, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6063, 0x6065, 0x6050, 0x6055, 0x606d, 0x6069, 0x606f,
+    0x6084, 0x609f, 0x609a, 0x608d, 0x6094, 0x608c, 0x6085, 0x6096,
+    0x6247, 0x62f3, 0x6308, 0x62ff, 0x634e, 0x633e, 0x632f, 0x6355,
+    0x6342, 0x6346, 0x634f, 0x6349, 0x633a, 0x6350, 0x633d, 0x632a,
+    0x632b, 0x6328, 0x634d, 0x634c, 0x6548, 0x6549, 0x6599, 0x65c1,
+    0x65c5, 0x6642, 0x6649, 0x664f, 0x6643, 0x6652, 0x664c, 0x6645,
+    0x6641, 0x66f8, 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848,
+    0x6846, 0x6853, 0x6839, 0x6842, 0x6854, 0x6829, 0x68b3, 0x6817,
+    0x684c, 0x6851, 0x683d, 0x67f4, 0x6850, 0x6840, 0x683c, 0x6843,
+    0x682a, 0x6845, 0x6813, 0x6818, 0x6841, 0x6b8a, 0x6b89, 0x6bb7,
+    0x6c23, 0x6c27, 0x6c28, 0x6c26, 0x6c24, 0x6cf0, 0x6d6a, 0x6d95,
+    0x6d88, 0x6d87, 0x6d66, 0x6d78, 0x6d77, 0x6d59, 0x6d93, 0x003f,
+    /* lead byte af */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6d6c, 0x6d89, 0x6d6e, 0x6d5a, 0x6d74, 0x6d69, 0x6d8c, 0x6d8a,
+    0x6d79, 0x6d85, 0x6d65, 0x6d94, 0x70ca, 0x70d8, 0x70e4, 0x70d9,
+    0x70c8, 0x70cf, 0x7239, 0x7279, 0x72fc, 0x72f9, 0x72fd, 0x72f8,
+    0x72f7, 0x7386, 0x73ed, 0x7409, 0x73ee, 0x73e0, 0x73ea, 0x73de,
+    0x7554, 0x755d, 0x755c, 0x755a, 0x7559, 0x75be, 0x75c5, 0x75c7,
+    0x75b2, 0x75b3, 0x75bd, 0x75bc, 0x75b9, 0x75c2, 0x75b8, 0x768b,
+    0x76b0, 0x76ca, 0x76cd, 0x76ce, 0x7729, 0x771f, 0x7720, 0x7728,
+    0x77e9, 0x7830, 0x7827, 0x7838, 0x781d, 0x7834, 0x7837, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7825, 0x782d, 0x7820, 0x781f, 0x7832, 0x7955, 0x7950,
+    0x7960, 0x795f, 0x7956, 0x795e, 0x795d, 0x7957, 0x795a, 0x79e4,
+    0x79e3, 0x79e7, 0x79df, 0x79e6, 0x79e9, 0x79d8, 0x7a84, 0x7a88,
+    0x7ad9, 0x7b06, 0x7b11, 0x7c89, 0x7d21, 0x7d17, 0x7d0b, 0x7d0a,
+    0x7d20, 0x7d22, 0x7d14, 0x7d10, 0x7d15, 0x7d1a, 0x7d1c, 0x7d0d,
+    0x7d19, 0x7d1b, 0x7f3a, 0x7f5f, 0x7f94, 0x7fc5, 0x7fc1, 0x8006,
+    0x8018, 0x8015, 0x8019, 0x8017, 0x803d, 0x803f, 0x80f1, 0x8102,
+    0x80f0, 0x8105, 0x80ed, 0x80f4, 0x8106, 0x80f8, 0x80f3, 0x8108,
+    0x80fd, 0x810a, 0x80fc, 0x80ef, 0x81ed, 0x81ec, 0x8200, 0x8210,
+    0x822a, 0x822b, 0x8228, 0x822c, 0x82bb, 0x832b, 0x8352, 0x8354,
+    0x834a, 0x8338, 0x8350, 0x8349, 0x8335, 0x8334, 0x834f, 0x8332,
+    0x8339, 0x8336, 0x8317, 0x8340, 0x8331, 0x8328, 0x8343, 0x003f,
+    /* lead byte b0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8654, 0x868a, 0x86aa, 0x8693, 0x86a4, 0x86a9, 0x868c, 0x86a3,
+    0x869c, 0x8870, 0x8877, 0x8881, 0x8882, 0x887d, 0x8879, 0x8a18,
+    0x8a10, 0x8a0e, 0x8a0c, 0x8a15, 0x8a0a, 0x8a17, 0x8a13, 0x8a16,
+    0x8a0f, 0x8a11, 0x8c48, 0x8c7a, 0x8c79, 0x8ca1, 0x8ca2, 0x8d77,
+    0x8eac, 0x8ed2, 0x8ed4, 0x8ecf, 0x8fb1, 0x9001, 0x9006, 0x8ff7,
+    0x9000, 0x8ffa, 0x8ff4, 0x9003, 0x8ffd, 0x9005, 0x8ff8, 0x9095,
+    0x90e1, 0x90dd, 0x90e2, 0x9152, 0x914d, 0x914c, 0x91d8, 0x91dd,
+    0x91d7, 0x91dc, 0x91d9, 0x9583, 0x9662, 0x9663, 0x9661, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x965b, 0x965d, 0x9664, 0x9658, 0x965e, 0x96bb, 0x98e2,
+    0x99ac, 0x9aa8, 0x9ad8, 0x9b25, 0x9b32, 0x9b3c, 0x4e7e, 0x507a,
+    0x507d, 0x505c, 0x5047, 0x5043, 0x504c, 0x505a, 0x5049, 0x5065,
+    0x5076, 0x504e, 0x5055, 0x5075, 0x5074, 0x5077, 0x504f, 0x500f,
+    0x506f, 0x506d, 0x515c, 0x5195, 0x51f0, 0x526a, 0x526f, 0x52d2,
+    0x52d9, 0x52d8, 0x52d5, 0x5310, 0x530f, 0x5319, 0x533f, 0x5340,
+    0x533e, 0x53c3, 0x66fc, 0x5546, 0x556a, 0x5566, 0x5544, 0x555e,
+    0x5561, 0x5543, 0x554a, 0x5531, 0x5556, 0x554f, 0x5555, 0x552f,
+    0x5564, 0x5538, 0x552e, 0x555c, 0x552c, 0x5563, 0x5533, 0x5541,
+    0x5557, 0x5708, 0x570b, 0x5709, 0x57df, 0x5805, 0x580a, 0x5806,
+    0x57e0, 0x57e4, 0x57fa, 0x5802, 0x5835, 0x57f7, 0x57f9, 0x5920,
+    0x5962, 0x5a36, 0x5a41, 0x5a49, 0x5a66, 0x5a6a, 0x5a40, 0x003f,
+    /* lead byte b1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x5a3c, 0x5a62, 0x5a5a, 0x5a46, 0x5a4a, 0x5b70, 0x5bc7, 0x5bc5,
+    0x5bc4, 0x5bc2, 0x5bbf, 0x5bc6, 0x5c09, 0x5c08, 0x5c07, 0x5c60,
+    0x5c5c, 0x5c5d, 0x5d07, 0x5d06, 0x5d0e, 0x5d1b, 0x5d16, 0x5d22,
+    0x5d11, 0x5d29, 0x5d14, 0x5d19, 0x5d24, 0x5d27, 0x5d17, 0x5de2,
+    0x5e38, 0x5e36, 0x5e33, 0x5e37, 0x5eb7, 0x5eb8, 0x5eb6, 0x5eb5,
+    0x5ebe, 0x5f35, 0x5f37, 0x5f57, 0x5f6c, 0x5f69, 0x5f6b, 0x5f97,
+    0x5f99, 0x5f9e, 0x5f98, 0x5fa1, 0x5fa0, 0x5f9c, 0x607f, 0x60a3,
+    0x6089, 0x60a0, 0x60a8, 0x60cb, 0x60b4, 0x60e6, 0x60bd, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x60c5, 0x60bb, 0x60b5, 0x60dc, 0x60bc, 0x60d8, 0x60d5,
+    0x60c6, 0x60df, 0x60b8, 0x60da, 0x60c7, 0x621a, 0x621b, 0x6248,
+    0x63a0, 0x63a7, 0x6372, 0x6396, 0x63a2, 0x63a5, 0x6377, 0x6367,
+    0x6398, 0x63aa, 0x6371, 0x63a9, 0x6389, 0x6383, 0x639b, 0x636b,
+    0x63a8, 0x6384, 0x6388, 0x6399, 0x63a1, 0x63ac, 0x6392, 0x638f,
+    0x6380, 0x637b, 0x6369, 0x6368, 0x637a, 0x655d, 0x6556, 0x6551,
+    0x6559, 0x6557, 0x555f, 0x654f, 0x6558, 0x6555, 0x6554, 0x659c,
+    0x659b, 0x65ac, 0x65cf, 0x65cb, 0x65cc, 0x65ce, 0x665d, 0x665a,
+    0x6664, 0x6668, 0x6666, 0x665e, 0x66f9, 0x52d7, 0x671b, 0x6881,
+    0x68af, 0x68a2, 0x6893, 0x68b5, 0x687f, 0x6876, 0x68b1, 0x68a7,
+    0x6897, 0x68b0, 0x6883, 0x68c4, 0x68ad, 0x6886, 0x6885, 0x6894,
+    0x689d, 0x68a8, 0x689f, 0x68a1, 0x6882, 0x6b32, 0x6bba, 0x003f,
+    /* lead byte b2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6beb, 0x6bec, 0x6c2b, 0x6d8e, 0x6dbc, 0x6df3, 0x6dd9, 0x6db2,
+    0x6de1, 0x6dcc, 0x6de4, 0x6dfb, 0x6dfa, 0x6e05, 0x6dc7, 0x6dcb,
+    0x6daf, 0x6dd1, 0x6dae, 0x6dde, 0x6df9, 0x6db8, 0x6df7, 0x6df5,
+    0x6dc5, 0x6dd2, 0x6e1a, 0x6db5, 0x6dda, 0x6deb, 0x6dd8, 0x6dea,
+    0x6df1, 0x6dee, 0x6de8, 0x6dc6, 0x6dc4, 0x6daa, 0x6dec, 0x6dbf,
+    0x6de6, 0x70f9, 0x7109, 0x710a, 0x70fd, 0x70ef, 0x723d, 0x727d,
+    0x7281, 0x731c, 0x731b, 0x7316, 0x7313, 0x7319, 0x7387, 0x7405,
+    0x740a, 0x7403, 0x7406, 0x73fe, 0x740d, 0x74e0, 0x74f6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x74f7, 0x751c, 0x7522, 0x7565, 0x7566, 0x7562, 0x7570,
+    0x758f, 0x75d4, 0x75d5, 0x75b5, 0x75ca, 0x75cd, 0x768e, 0x76d4,
+    0x76d2, 0x76db, 0x7737, 0x773e, 0x773c, 0x7736, 0x7738, 0x773a,
+    0x786b, 0x7843, 0x784e, 0x7965, 0x7968, 0x796d, 0x79fb, 0x7a92,
+    0x7a95, 0x7b20, 0x7b28, 0x7b1b, 0x7b2c, 0x7b26, 0x7b19, 0x7b1e,
+    0x7b2e, 0x7c92, 0x7c97, 0x7c95, 0x7d46, 0x7d43, 0x7d71, 0x7d2e,
+    0x7d39, 0x7d3c, 0x7d40, 0x7d30, 0x7d33, 0x7d44, 0x7d2f, 0x7d42,
+    0x7d32, 0x7d31, 0x7f3d, 0x7f9e, 0x7f9a, 0x7fcc, 0x7fce, 0x7fd2,
+    0x801c, 0x804a, 0x8046, 0x812f, 0x8116, 0x8123, 0x812b, 0x8129,
+    0x8130, 0x8124, 0x8202, 0x8235, 0x8237, 0x8236, 0x8239, 0x838e,
+    0x839e, 0x8398, 0x8378, 0x83a2, 0x8396, 0x83bd, 0x83ab, 0x8392,
+    0x838a, 0x8393, 0x8389, 0x83a0, 0x8377, 0x837b, 0x837c, 0x003f,
+    /* lead byte b3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8386, 0x83a7, 0x8655, 0x5f6a, 0x86c7, 0x86c0, 0x86b6, 0x86c4,
+    0x86b5, 0x86c6, 0x86cb, 0x86b1, 0x86af, 0x86c9, 0x8853, 0x889e,
+    0x8888, 0x88ab, 0x8892, 0x8896, 0x888d, 0x888b, 0x8993, 0x898f,
+    0x8a2a, 0x8a1d, 0x8a23, 0x8a25, 0x8a31, 0x8a2d, 0x8a1f, 0x8a1b,
+    0x8a22, 0x8c49, 0x8c5a, 0x8ca9, 0x8cac, 0x8cab, 0x8ca8, 0x8caa,
+    0x8ca7, 0x8d67, 0x8d66, 0x8dbe, 0x8dba, 0x8edb, 0x8edf, 0x9019,
+    0x900d, 0x901a, 0x9017, 0x9023, 0x901f, 0x901d, 0x9010, 0x9015,
+    0x901e, 0x9020, 0x900f, 0x9022, 0x9016, 0x901b, 0x9014, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x90e8, 0x90ed, 0x90fd, 0x9157, 0x91ce, 0x91f5, 0x91e6,
+    0x91e3, 0x91e7, 0x91ed, 0x91e9, 0x9589, 0x966a, 0x9675, 0x9673,
+    0x9678, 0x9670, 0x9674, 0x9676, 0x9677, 0x966c, 0x96c0, 0x96ea,
+    0x96e9, 0x7ae0, 0x7adf, 0x9802, 0x9803, 0x9b5a, 0x9ce5, 0x9e75,
+    0x9e7f, 0x9ea5, 0x9ebb, 0x50a2, 0x508d, 0x5085, 0x5099, 0x5091,
+    0x5080, 0x5096, 0x5098, 0x509a, 0x6700, 0x51f1, 0x5272, 0x5274,
+    0x5275, 0x5269, 0x52de, 0x52dd, 0x52db, 0x535a, 0x53a5, 0x557b,
+    0x5580, 0x55a7, 0x557c, 0x558a, 0x559d, 0x5598, 0x5582, 0x559c,
+    0x55aa, 0x5594, 0x5587, 0x558b, 0x5583, 0x55b3, 0x55ae, 0x559f,
+    0x553e, 0x55b2, 0x559a, 0x55bb, 0x55ac, 0x55b1, 0x557e, 0x5589,
+    0x55ab, 0x5599, 0x570d, 0x582f, 0x582a, 0x5834, 0x5824, 0x5830,
+    0x5831, 0x5821, 0x581d, 0x5820, 0x58f9, 0x58fa, 0x5960, 0x003f,
+    /* lead byte b4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x5a77, 0x5a9a, 0x5a7f, 0x5a92, 0x5a9b, 0x5aa7, 0x5b73, 0x5b71,
+    0x5bd2, 0x5bcc, 0x5bd3, 0x5bd0, 0x5c0a, 0x5c0b, 0x5c31, 0x5d4c,
+    0x5d50, 0x5d34, 0x5d47, 0x5dfd, 0x5e45, 0x5e3d, 0x5e40, 0x5e43,
+    0x5e7e, 0x5eca, 0x5ec1, 0x5ec2, 0x5ec4, 0x5f3c, 0x5f6d, 0x5fa9,
+    0x5faa, 0x5fa8, 0x60d1, 0x60e1, 0x60b2, 0x60b6, 0x60e0, 0x611c,
+    0x6123, 0x60fa, 0x6115, 0x60f0, 0x60fb, 0x60f4, 0x6168, 0x60f1,
+    0x610e, 0x60f6, 0x6109, 0x6100, 0x6112, 0x621f, 0x6249, 0x63a3,
+    0x638c, 0x63cf, 0x63c0, 0x63e9, 0x63c9, 0x63c6, 0x63cd, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x63d2, 0x63e3, 0x63d0, 0x63e1, 0x63d6, 0x63ed, 0x63ee,
+    0x6376, 0x63f4, 0x63ea, 0x63db, 0x6452, 0x63da, 0x63f9, 0x655e,
+    0x6566, 0x6562, 0x6563, 0x6591, 0x6590, 0x65af, 0x666e, 0x6670,
+    0x6674, 0x6676, 0x666f, 0x6691, 0x667a, 0x667e, 0x6677, 0x66fe,
+    0x66ff, 0x671f, 0x671d, 0x68fa, 0x68d5, 0x68e0, 0x68d8, 0x68d7,
+    0x6905, 0x68df, 0x68f5, 0x68ee, 0x68e7, 0x68f9, 0x68d2, 0x68f2,
+    0x68e3, 0x68cb, 0x68cd, 0x690d, 0x6912, 0x690e, 0x68c9, 0x68da,
+    0x696e, 0x68fb, 0x6b3e, 0x6b3a, 0x6b3d, 0x6b98, 0x6b96, 0x6bbc,
+    0x6bef, 0x6c2e, 0x6c2f, 0x6c2c, 0x6e2f, 0x6e38, 0x6e54, 0x6e21,
+    0x6e32, 0x6e67, 0x6e4a, 0x6e20, 0x6e25, 0x6e23, 0x6e1b, 0x6e5b,
+    0x6e58, 0x6e24, 0x6e56, 0x6e6e, 0x6e2d, 0x6e26, 0x6e6f, 0x6e34,
+    0x6e4d, 0x6e3a, 0x6e2c, 0x6e43, 0x6e1d, 0x6e3e, 0x6ecb, 0x003f,
+    /* lead byte b5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6e89, 0x6e19, 0x6e4e, 0x6e63, 0x6e44, 0x6e72, 0x6e69, 0x6e5f,
+    0x7119, 0x711a, 0x7126, 0x7130, 0x7121, 0x7136, 0x716e, 0x711c,
+    0x724c, 0x7284, 0x7280, 0x7336, 0x7325, 0x7334, 0x7329, 0x743a,
+    0x742a, 0x7433, 0x7422, 0x7425, 0x7435, 0x7436, 0x7434, 0x742f,
+    0x741b, 0x7426, 0x7428, 0x7525, 0x7526, 0x756b, 0x756a, 0x75e2,
+    0x75db, 0x75e3, 0x75d9, 0x75d8, 0x75de, 0x75e0, 0x767b, 0x767c,
+    0x7696, 0x7693, 0x76b4, 0x76dc, 0x774f, 0x77ed, 0x785d, 0x786c,
+    0x786f, 0x7a0d, 0x7a08, 0x7a0b, 0x7a05, 0x7a00, 0x7a98, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7a97, 0x7a96, 0x7ae5, 0x7ae3, 0x7b49, 0x7b56, 0x7b46,
+    0x7b50, 0x7b52, 0x7b54, 0x7b4d, 0x7b4b, 0x7b4f, 0x7b51, 0x7c9f,
+    0x7ca5, 0x7d5e, 0x7d50, 0x7d68, 0x7d55, 0x7d2b, 0x7d6e, 0x7d72,
+    0x7d61, 0x7d66, 0x7d62, 0x7d70, 0x7d73, 0x5584, 0x7fd4, 0x7fd5,
+    0x800b, 0x8052, 0x8085, 0x8155, 0x8154, 0x814b, 0x8151, 0x814e,
+    0x8139, 0x8146, 0x813e, 0x814c, 0x8153, 0x8174, 0x8212, 0x821c,
+    0x83e9, 0x8403, 0x83f8, 0x840d, 0x83e0, 0x83c5, 0x840b, 0x83c1,
+    0x83ef, 0x83f1, 0x83f4, 0x8457, 0x840a, 0x83f0, 0x840c, 0x83cc,
+    0x83fd, 0x83f2, 0x83ca, 0x8438, 0x840e, 0x8404, 0x83dc, 0x8407,
+    0x83d4, 0x83df, 0x865b, 0x86df, 0x86d9, 0x86ed, 0x86d4, 0x86db,
+    0x86e4, 0x86d0, 0x86de, 0x8857, 0x88c1, 0x88c2, 0x88b1, 0x8983,
+    0x8996, 0x8a3b, 0x8a60, 0x8a55, 0x8a5e, 0x8a3c, 0x8a41, 0x003f,
+    /* lead byte b6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8a54, 0x8a5b, 0x8a50, 0x8a46, 0x8a34, 0x8a3a, 0x8a36, 0x8a56,
+    0x8c61, 0x8c82, 0x8caf, 0x8cbc, 0x8cb3, 0x8cbd, 0x8cc1, 0x8cbb,
+    0x8cc0, 0x8cb4, 0x8cb7, 0x8cb6, 0x8cbf, 0x8cb8, 0x8d8a, 0x8d85,
+    0x8d81, 0x8dce, 0x8ddd, 0x8dcb, 0x8dda, 0x8dd1, 0x8dcc, 0x8ddb,
+    0x8dc6, 0x8efb, 0x8ef8, 0x8efc, 0x8f9c, 0x902e, 0x9035, 0x9031,
+    0x9038, 0x9032, 0x9036, 0x9102, 0x90f5, 0x9109, 0x90fe, 0x9163,
+    0x9165, 0x91cf, 0x9214, 0x9215, 0x9223, 0x9209, 0x921e, 0x920d,
+    0x9210, 0x9207, 0x9211, 0x9594, 0x958f, 0x958b, 0x9591, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9593, 0x9592, 0x958e, 0x968a, 0x968e, 0x968b, 0x967d,
+    0x9685, 0x9686, 0x968d, 0x9672, 0x9684, 0x96c1, 0x96c5, 0x96c4,
+    0x96c6, 0x96c7, 0x96ef, 0x96f2, 0x97cc, 0x9805, 0x9806, 0x9808,
+    0x98e7, 0x98ea, 0x98ef, 0x98e9, 0x98f2, 0x98ed, 0x99ae, 0x99ad,
+    0x9ec3, 0x9ecd, 0x9ed1, 0x4e82, 0x50ad, 0x50b5, 0x50b2, 0x50b3,
+    0x50c5, 0x50be, 0x50ac, 0x50b7, 0x50bb, 0x50af, 0x50c7, 0x527f,
+    0x5277, 0x527d, 0x52df, 0x52e6, 0x52e4, 0x52e2, 0x52e3, 0x532f,
+    0x55df, 0x55e8, 0x55d3, 0x55e6, 0x55ce, 0x55dc, 0x55c7, 0x55d1,
+    0x55e3, 0x55e4, 0x55ef, 0x55da, 0x55e1, 0x55c5, 0x55c6, 0x55e5,
+    0x55c9, 0x5712, 0x5713, 0x585e, 0x5851, 0x5858, 0x5857, 0x585a,
+    0x5854, 0x586b, 0x584c, 0x586d, 0x584a, 0x5862, 0x5852, 0x584b,
+    0x5967, 0x5ac1, 0x5ac9, 0x5acc, 0x5abe, 0x5abd, 0x5abc, 0x003f,
+    /* lead byte b7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x5ab3, 0x5ac2, 0x5ab2, 0x5d69, 0x5d6f, 0x5e4c, 0x5e79, 0x5ec9,
+    0x5ec8, 0x5f12, 0x5f59, 0x5fac, 0x5fae, 0x611a, 0x610f, 0x6148,
+    0x611f, 0x60f3, 0x611b, 0x60f9, 0x6101, 0x6108, 0x614e, 0x614c,
+    0x6144, 0x614d, 0x613e, 0x6134, 0x6127, 0x610d, 0x6106, 0x6137,
+    0x6221, 0x6222, 0x6413, 0x643e, 0x641e, 0x642a, 0x642d, 0x643d,
+    0x642c, 0x640f, 0x641c, 0x6414, 0x640d, 0x6436, 0x6416, 0x6417,
+    0x6406, 0x656c, 0x659f, 0x65b0, 0x6697, 0x6689, 0x6687, 0x6688,
+    0x6696, 0x6684, 0x6698, 0x668d, 0x6703, 0x6994, 0x696d, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x695a, 0x6977, 0x6960, 0x6954, 0x6975, 0x6930, 0x6982,
+    0x694a, 0x6968, 0x696b, 0x695e, 0x6953, 0x6979, 0x6986, 0x695d,
+    0x6963, 0x695b, 0x6b47, 0x6b72, 0x6bc0, 0x6bbf, 0x6bd3, 0x6bfd,
+    0x6ea2, 0x6eaf, 0x6ed3, 0x6eb6, 0x6ec2, 0x6e90, 0x6e9d, 0x6ec7,
+    0x6ec5, 0x6ea5, 0x6e98, 0x6ebc, 0x6eba, 0x6eab, 0x6ed1, 0x6e96,
+    0x6e9c, 0x6ec4, 0x6ed4, 0x6eaa, 0x6ea7, 0x6eb4, 0x714e, 0x7159,
+    0x7169, 0x7164, 0x7149, 0x7167, 0x715c, 0x716c, 0x7166, 0x714c,
+    0x7165, 0x715e, 0x7146, 0x7168, 0x7156, 0x723a, 0x7252, 0x7337,
+    0x7345, 0x733f, 0x733e, 0x746f, 0x745a, 0x7455, 0x745f, 0x745e,
+    0x7441, 0x743f, 0x7459, 0x745b, 0x745c, 0x7576, 0x7578, 0x7600,
+    0x75f0, 0x7601, 0x75f2, 0x75f1, 0x75fa, 0x75ff, 0x75f4, 0x75f3,
+    0x76de, 0x76df, 0x775b, 0x776b, 0x7766, 0x775e, 0x7763, 0x003f,
+    /* lead byte b8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7779, 0x776a, 0x776c, 0x775c, 0x7765, 0x7768, 0x7762, 0x77ee,
+    0x788e, 0x78b0, 0x7897, 0x7898, 0x788c, 0x7889, 0x787c, 0x7891,
+    0x7893, 0x787f, 0x797a, 0x797f, 0x7981, 0x842c, 0x79bd, 0x7a1c,
+    0x7a1a, 0x7a20, 0x7a14, 0x7a1f, 0x7a1e, 0x7a9f, 0x7aa0, 0x7b77,
+    0x7bc0, 0x7b60, 0x7b6e, 0x7b67, 0x7cb1, 0x7cb3, 0x7cb5, 0x7d93,
+    0x7d79, 0x7d91, 0x7d81, 0x7d8f, 0x7d5b, 0x7f6e, 0x7f69, 0x7f6a,
+    0x7f72, 0x7fa9, 0x7fa8, 0x7fa4, 0x8056, 0x8058, 0x8086, 0x8084,
+    0x8171, 0x8170, 0x8178, 0x8165, 0x816e, 0x8173, 0x816b, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8179, 0x817a, 0x8166, 0x8205, 0x8247, 0x8482, 0x8477,
+    0x843d, 0x8431, 0x8475, 0x8466, 0x846b, 0x8449, 0x846c, 0x845b,
+    0x843c, 0x8435, 0x8461, 0x8463, 0x8469, 0x846d, 0x8446, 0x865e,
+    0x865c, 0x865f, 0x86f9, 0x8713, 0x8708, 0x8707, 0x8700, 0x86fe,
+    0x86fb, 0x8702, 0x8703, 0x8706, 0x870a, 0x8859, 0x88df, 0x88d4,
+    0x88d9, 0x88dc, 0x88d8, 0x88dd, 0x88e1, 0x88ca, 0x88d5, 0x88d2,
+    0x899c, 0x89e3, 0x8a6b, 0x8a72, 0x8a73, 0x8a66, 0x8a69, 0x8a70,
+    0x8a87, 0x8a7c, 0x8a63, 0x8aa0, 0x8a71, 0x8a85, 0x8a6d, 0x8a62,
+    0x8a6e, 0x8a6c, 0x8a79, 0x8a7b, 0x8a3e, 0x8a68, 0x8c62, 0x8c8a,
+    0x8c89, 0x8cca, 0x8cc7, 0x8cc8, 0x8cc4, 0x8cb2, 0x8cc3, 0x8cc2,
+    0x8cc5, 0x8de1, 0x8ddf, 0x8de8, 0x8def, 0x8df3, 0x8dfa, 0x8dea,
+    0x8de4, 0x8de6, 0x8eb2, 0x8f03, 0x8f09, 0x8efe, 0x8f0a, 0x003f,
+    /* lead byte b9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8f9f, 0x8fb2, 0x904b, 0x904a, 0x9053, 0x9042, 0x9054, 0x903c,
+    0x9055, 0x9050, 0x9047, 0x904f, 0x904e, 0x904d, 0x9051, 0x903e,
+    0x9041, 0x9112, 0x9117, 0x916c, 0x916a, 0x9169, 0x91c9, 0x9237,
+    0x9257, 0x9238, 0x923d, 0x9240, 0x923e, 0x925b, 0x924b, 0x9264,
+    0x9251, 0x9234, 0x9249, 0x924d, 0x9245, 0x9239, 0x923f, 0x925a,
+    0x9598, 0x9698, 0x9694, 0x9695, 0x96cd, 0x96cb, 0x96c9, 0x96ca,
+    0x96f7, 0x96fb, 0x96f9, 0x96f6, 0x9756, 0x9774, 0x9776, 0x9810,
+    0x9811, 0x9813, 0x980a, 0x9812, 0x980c, 0x98fc, 0x98f4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x98fd, 0x98fe, 0x99b3, 0x99b1, 0x99b4, 0x9ae1, 0x9ce9,
+    0x9e82, 0x9f0e, 0x9f13, 0x9f20, 0x50e7, 0x50ee, 0x50e5, 0x50d6,
+    0x50ed, 0x50da, 0x50d5, 0x50cf, 0x50d1, 0x50f1, 0x50ce, 0x50e9,
+    0x5162, 0x51f3, 0x5283, 0x5282, 0x5331, 0x53ad, 0x55fe, 0x5600,
+    0x561b, 0x5617, 0x55fd, 0x5614, 0x5606, 0x5609, 0x560d, 0x560e,
+    0x55f7, 0x5616, 0x561f, 0x5608, 0x5610, 0x55f6, 0x5718, 0x5716,
+    0x5875, 0x587e, 0x5883, 0x5893, 0x588a, 0x5879, 0x5885, 0x587d,
+    0x58fd, 0x5925, 0x5922, 0x5924, 0x596a, 0x5969, 0x5ae1, 0x5ae6,
+    0x5ae9, 0x5ad7, 0x5ad6, 0x5ad8, 0x5ae3, 0x5b75, 0x5bde, 0x5be7,
+    0x5be1, 0x5be5, 0x5be6, 0x5be8, 0x5be2, 0x5be4, 0x5bdf, 0x5c0d,
+    0x5c62, 0x5d84, 0x5d87, 0x5e5b, 0x5e63, 0x5e55, 0x5e57, 0x5e54,
+    0x5ed3, 0x5ed6, 0x5f0a, 0x5f46, 0x5f70, 0x5fb9, 0x6147, 0x003f,
+    /* lead byte ba */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x613f, 0x614b, 0x6177, 0x6162, 0x6163, 0x615f, 0x615a, 0x6158,
+    0x6175, 0x622a, 0x6487, 0x6458, 0x6454, 0x64a4, 0x6478, 0x645f,
+    0x647a, 0x6451, 0x6467, 0x6434, 0x646d, 0x647b, 0x6572, 0x65a1,
+    0x65d7, 0x65d6, 0x66a2, 0x66a8, 0x669d, 0x699c, 0x69a8, 0x6995,
+    0x69c1, 0x69ae, 0x69d3, 0x69cb, 0x699b, 0x69b7, 0x69bb, 0x69ab,
+    0x69b4, 0x69d0, 0x69cd, 0x69ad, 0x69cc, 0x69a6, 0x69c3, 0x69a3,
+    0x6b49, 0x6b4c, 0x6c33, 0x6f33, 0x6f14, 0x6efe, 0x6f13, 0x6ef4,
+    0x6f29, 0x6f3e, 0x6f20, 0x6f2c, 0x6f0f, 0x6f02, 0x6f22, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6eff, 0x6eef, 0x6f06, 0x6f31, 0x6f38, 0x6f32, 0x6f23,
+    0x6f15, 0x6f2b, 0x6f2f, 0x6f88, 0x6f2a, 0x6eec, 0x6f01, 0x6ef2,
+    0x6ecc, 0x6ef7, 0x7194, 0x7199, 0x717d, 0x718a, 0x7184, 0x7192,
+    0x723e, 0x7292, 0x7296, 0x7344, 0x7350, 0x7464, 0x7463, 0x746a,
+    0x7470, 0x746d, 0x7504, 0x7591, 0x7627, 0x760d, 0x760b, 0x7609,
+    0x7613, 0x76e1, 0x76e3, 0x7784, 0x777d, 0x777f, 0x7761, 0x78c1,
+    0x789f, 0x78a7, 0x78b3, 0x78a9, 0x78a3, 0x798e, 0x798f, 0x798d,
+    0x7a2e, 0x7a31, 0x7aaa, 0x7aa9, 0x7aed, 0x7aef, 0x7ba1, 0x7b95,
+    0x7b8b, 0x7b75, 0x7b97, 0x7b9d, 0x7b94, 0x7b8f, 0x7bb8, 0x7b87,
+    0x7b84, 0x7cb9, 0x7cbd, 0x7cbe, 0x7dbb, 0x7db0, 0x7d9c, 0x7dbd,
+    0x7dbe, 0x7da0, 0x7dca, 0x7db4, 0x7db2, 0x7db1, 0x7dba, 0x7da2,
+    0x7dbf, 0x7db5, 0x7db8, 0x7dad, 0x7dd2, 0x7dc7, 0x7dac, 0x003f,
+    /* lead byte bb */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7f70, 0x7fe0, 0x7fe1, 0x7fdf, 0x805e, 0x805a, 0x8087, 0x8150,
+    0x8180, 0x818f, 0x8188, 0x818a, 0x817f, 0x8182, 0x81e7, 0x81fa,
+    0x8207, 0x8214, 0x821e, 0x824b, 0x84c9, 0x84bf, 0x84c6, 0x84c4,
+    0x8499, 0x849e, 0x84b2, 0x849c, 0x84cb, 0x84b8, 0x84c0, 0x84d3,
+    0x8490, 0x84bc, 0x84d1, 0x84ca, 0x873f, 0x871c, 0x873b, 0x8722,
+    0x8725, 0x8734, 0x8718, 0x8755, 0x8737, 0x8729, 0x88f3, 0x8902,
+    0x88f4, 0x88f9, 0x88f8, 0x88fd, 0x88e8, 0x891a, 0x88ef, 0x8aa6,
+    0x8a8c, 0x8a9e, 0x8aa3, 0x8a8d, 0x8aa1, 0x8a93, 0x8aa4, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8aaa, 0x8aa5, 0x8aa8, 0x8a98, 0x8a91, 0x8a9a, 0x8aa7,
+    0x8c6a, 0x8c8d, 0x8c8c, 0x8cd3, 0x8cd1, 0x8cd2, 0x8d6b, 0x8d99,
+    0x8d95, 0x8dfc, 0x8f14, 0x8f12, 0x8f15, 0x8f13, 0x8fa3, 0x9060,
+    0x9058, 0x905c, 0x9063, 0x9059, 0x905e, 0x9062, 0x905d, 0x905b,
+    0x9119, 0x9118, 0x911e, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278,
+    0x9280, 0x9285, 0x9298, 0x9296, 0x927b, 0x9293, 0x929c, 0x92a8,
+    0x927c, 0x9291, 0x95a1, 0x95a8, 0x95a9, 0x95a3, 0x95a5, 0x95a4,
+    0x9699, 0x969c, 0x969b, 0x96cc, 0x96d2, 0x9700, 0x977c, 0x9785,
+    0x97f6, 0x9817, 0x9818, 0x98af, 0x98b1, 0x9903, 0x9905, 0x990c,
+    0x9909, 0x99c1, 0x9aaf, 0x9ab0, 0x9ae6, 0x9b41, 0x9b42, 0x9cf4,
+    0x9cf6, 0x9cf3, 0x9ebc, 0x9f3b, 0x9f4a, 0x5104, 0x5100, 0x50fb,
+    0x50f5, 0x50f9, 0x5102, 0x5108, 0x5109, 0x5105, 0x51dc, 0x003f,
+    /* lead byte bc */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x5287, 0x5288, 0x5289, 0x528d, 0x528a, 0x52f0, 0x53b2, 0x562e,
+    0x563b, 0x5639, 0x5632, 0x563f, 0x5634, 0x5629, 0x5653, 0x564e,
+    0x5657, 0x5674, 0x5636, 0x562f, 0x5630, 0x5880, 0x589f, 0x589e,
+    0x58b3, 0x589c, 0x58ae, 0x58a9, 0x58a6, 0x596d, 0x5b09, 0x5afb,
+    0x5b0b, 0x5af5, 0x5b0c, 0x5b08, 0x5bee, 0x5bec, 0x5be9, 0x5beb,
+    0x5c64, 0x5c65, 0x5d9d, 0x5d94, 0x5e62, 0x5e5f, 0x5e61, 0x5ee2,
+    0x5eda, 0x5edf, 0x5edd, 0x5ee3, 0x5ee0, 0x5f48, 0x5f71, 0x5fb7,
+    0x5fb5, 0x6176, 0x6167, 0x616e, 0x615d, 0x6155, 0x6182, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x617c, 0x6170, 0x616b, 0x617e, 0x61a7, 0x6190, 0x61ab,
+    0x618e, 0x61ac, 0x619a, 0x61a4, 0x6194, 0x61ae, 0x622e, 0x6469,
+    0x646f, 0x6479, 0x649e, 0x64b2, 0x6488, 0x6490, 0x64b0, 0x64a5,
+    0x6493, 0x6495, 0x64a9, 0x6492, 0x64ae, 0x64ad, 0x64ab, 0x649a,
+    0x64ac, 0x6499, 0x64a2, 0x64b3, 0x6575, 0x6577, 0x6578, 0x66ae,
+    0x66ab, 0x66b4, 0x66b1, 0x6a23, 0x6a1f, 0x69e8, 0x6a01, 0x6a1e,
+    0x6a19, 0x69fd, 0x6a21, 0x6a13, 0x6a0a, 0x69f3, 0x6a02, 0x6a05,
+    0x69ed, 0x6a11, 0x6b50, 0x6b4e, 0x6ba4, 0x6bc5, 0x6bc6, 0x6f3f,
+    0x6f7c, 0x6f84, 0x6f51, 0x6f66, 0x6f54, 0x6f86, 0x6f6d, 0x6f5b,
+    0x6f78, 0x6f6e, 0x6f8e, 0x6f7a, 0x6f70, 0x6f64, 0x6f97, 0x6f58,
+    0x6ed5, 0x6f6f, 0x6f60, 0x6f5f, 0x719f, 0x71ac, 0x71b1, 0x71a8,
+    0x7256, 0x729b, 0x734e, 0x7357, 0x7469, 0x748b, 0x7483, 0x003f,
+    /* lead byte bd */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x747e, 0x7480, 0x757f, 0x7620, 0x7629, 0x761f, 0x7624, 0x7626,
+    0x7621, 0x7622, 0x769a, 0x76ba, 0x76e4, 0x778e, 0x7787, 0x778c,
+    0x7791, 0x778b, 0x78cb, 0x78c5, 0x78ba, 0x78ca, 0x78be, 0x78d5,
+    0x78bc, 0x78d0, 0x7a3f, 0x7a3c, 0x7a40, 0x7a3d, 0x7a37, 0x7a3b,
+    0x7aaf, 0x7aae, 0x7bad, 0x7bb1, 0x7bc4, 0x7bb4, 0x7bc6, 0x7bc7,
+    0x7bc1, 0x7ba0, 0x7bcc, 0x7cca, 0x7de0, 0x7df4, 0x7def, 0x7dfb,
+    0x7dd8, 0x7dec, 0x7ddd, 0x7de8, 0x7de3, 0x7dda, 0x7dde, 0x7de9,
+    0x7d9e, 0x7dd9, 0x7df2, 0x7df9, 0x7f75, 0x7f77, 0x7faf, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7fe9, 0x8026, 0x819b, 0x819c, 0x819d, 0x81a0, 0x819a,
+    0x8198, 0x8517, 0x853d, 0x851a, 0x84ee, 0x852c, 0x852d, 0x8513,
+    0x8511, 0x8523, 0x8521, 0x8514, 0x84ec, 0x8525, 0x84ff, 0x8506,
+    0x8782, 0x8774, 0x8776, 0x8760, 0x8766, 0x8778, 0x8768, 0x8759,
+    0x8757, 0x874c, 0x8753, 0x885b, 0x885d, 0x8910, 0x8907, 0x8912,
+    0x8913, 0x8915, 0x890a, 0x8abc, 0x8ad2, 0x8ac7, 0x8ac4, 0x8a95,
+    0x8acb, 0x8af8, 0x8ab2, 0x8ac9, 0x8ac2, 0x8abf, 0x8ab0, 0x8ad6,
+    0x8acd, 0x8ab6, 0x8ab9, 0x8adb, 0x8c4c, 0x8c4e, 0x8c6c, 0x8ce0,
+    0x8cde, 0x8ce6, 0x8ce4, 0x8cec, 0x8ced, 0x8ce2, 0x8ce3, 0x8cdc,
+    0x8cea, 0x8ce1, 0x8d6d, 0x8d9f, 0x8da3, 0x8e2b, 0x8e10, 0x8e1d,
+    0x8e22, 0x8e0f, 0x8e29, 0x8e1f, 0x8e21, 0x8e1e, 0x8eba, 0x8f1d,
+    0x8f1b, 0x8f1f, 0x8f29, 0x8f26, 0x8f2a, 0x8f1c, 0x8f1e, 0x003f,
+    /* lead byte be */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8f25, 0x9069, 0x906e, 0x9068, 0x906d, 0x9077, 0x9130, 0x912d,
+    0x9127, 0x9131, 0x9187, 0x9189, 0x918b, 0x9183, 0x92c5, 0x92bb,
+    0x92b7, 0x92ea, 0x92ac, 0x92e4, 0x92c1, 0x92b3, 0x92bc, 0x92d2,
+    0x92c7, 0x92f0, 0x92b2, 0x95ad, 0x95b1, 0x9704, 0x9706, 0x9707,
+    0x9709, 0x9760, 0x978d, 0x978b, 0x978f, 0x9821, 0x982b, 0x981c,
+    0x98b3, 0x990a, 0x9913, 0x9912, 0x9918, 0x99dd, 0x99d0, 0x99df,
+    0x99db, 0x99d1, 0x99d5, 0x99d2, 0x99d9, 0x9ab7, 0x9aee, 0x9aef,
+    0x9b27, 0x9b45, 0x9b44, 0x9b77, 0x9b6f, 0x9d06, 0x9d09, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9d03, 0x9ea9, 0x9ebe, 0x9ece, 0x58a8, 0x9f52, 0x5112,
+    0x5118, 0x5114, 0x5110, 0x5115, 0x5180, 0x51aa, 0x51dd, 0x5291,
+    0x5293, 0x52f3, 0x5659, 0x566b, 0x5679, 0x5669, 0x5664, 0x5678,
+    0x566a, 0x5668, 0x5665, 0x5671, 0x566f, 0x566c, 0x5662, 0x5676,
+    0x58c1, 0x58be, 0x58c7, 0x58c5, 0x596e, 0x5b1d, 0x5b34, 0x5b78,
+    0x5bf0, 0x5c0e, 0x5f4a, 0x61b2, 0x6191, 0x61a9, 0x618a, 0x61cd,
+    0x61b6, 0x61be, 0x61ca, 0x61c8, 0x6230, 0x64c5, 0x64c1, 0x64cb,
+    0x64bb, 0x64bc, 0x64da, 0x64c4, 0x64c7, 0x64c2, 0x64cd, 0x64bf,
+    0x64d2, 0x64d4, 0x64be, 0x6574, 0x66c6, 0x66c9, 0x66b9, 0x66c4,
+    0x66c7, 0x66b8, 0x6a3d, 0x6a38, 0x6a3a, 0x6a59, 0x6a6b, 0x6a58,
+    0x6a39, 0x6a44, 0x6a62, 0x6a61, 0x6a4b, 0x6a47, 0x6a35, 0x6a5f,
+    0x6a48, 0x6b59, 0x6b77, 0x6c05, 0x6fc2, 0x6fb1, 0x6fa1, 0x003f,
+    /* lead byte bf */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6fc3, 0x6fa4, 0x6fc1, 0x6fa7, 0x6fb3, 0x6fc0, 0x6fb9, 0x6fb6,
+    0x6fa6, 0x6fa0, 0x6fb4, 0x71be, 0x71c9, 0x71d0, 0x71d2, 0x71c8,
+    0x71d5, 0x71b9, 0x71ce, 0x71d9, 0x71dc, 0x71c3, 0x71c4, 0x7368,
+    0x749c, 0x74a3, 0x7498, 0x749f, 0x749e, 0x74e2, 0x750c, 0x750d,
+    0x7634, 0x7638, 0x763a, 0x76e7, 0x76e5, 0x77a0, 0x779e, 0x779f,
+    0x77a5, 0x78e8, 0x78da, 0x78ec, 0x78e7, 0x79a6, 0x7a4d, 0x7a4e,
+    0x7a46, 0x7a4c, 0x7a4b, 0x7aba, 0x7bd9, 0x7c11, 0x7bc9, 0x7be4,
+    0x7bdb, 0x7be1, 0x7be9, 0x7be6, 0x7cd5, 0x7cd6, 0x7e0a, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7e11, 0x7e08, 0x7e1b, 0x7e23, 0x7e1e, 0x7e1d, 0x7e09,
+    0x7e10, 0x7f79, 0x7fb2, 0x7ff0, 0x7ff1, 0x7fee, 0x8028, 0x81b3,
+    0x81a9, 0x81a8, 0x81fb, 0x8208, 0x8258, 0x8259, 0x854a, 0x8559,
+    0x8548, 0x8568, 0x8569, 0x8543, 0x8549, 0x856d, 0x856a, 0x855e,
+    0x8783, 0x879f, 0x879e, 0x87a2, 0x878d, 0x8861, 0x892a, 0x8932,
+    0x8925, 0x892b, 0x8921, 0x89aa, 0x89a6, 0x8ae6, 0x8afa, 0x8aeb,
+    0x8af1, 0x8b00, 0x8adc, 0x8ae7, 0x8aee, 0x8afe, 0x8b01, 0x8b02,
+    0x8af7, 0x8aed, 0x8af3, 0x8af6, 0x8afc, 0x8c6b, 0x8c6d, 0x8c93,
+    0x8cf4, 0x8e44, 0x8e31, 0x8e34, 0x8e42, 0x8e39, 0x8e35, 0x8f3b,
+    0x8f2f, 0x8f38, 0x8f33, 0x8fa8, 0x8fa6, 0x9075, 0x9074, 0x9078,
+    0x9072, 0x907c, 0x907a, 0x9134, 0x9192, 0x9320, 0x9336, 0x92f8,
+    0x9333, 0x932f, 0x9322, 0x92fc, 0x932b, 0x9304, 0x931a, 0x003f,
+    /* lead byte c0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9310, 0x9326, 0x9321, 0x9315, 0x932e, 0x9319, 0x95bb, 0x96a7,
+    0x96a8, 0x96aa, 0x96d5, 0x970e, 0x9711, 0x9716, 0x970d, 0x9713,
+    0x970f, 0x975b, 0x975c, 0x9766, 0x9798, 0x9830, 0x9838, 0x983b,
+    0x9837, 0x982d, 0x9839, 0x9824, 0x9910, 0x9928, 0x991e, 0x991b,
+    0x9921, 0x991a, 0x99ed, 0x99e2, 0x99f1, 0x9ab8, 0x9abc, 0x9afb,
+    0x9aed, 0x9b28, 0x9b91, 0x9d15, 0x9d23, 0x9d26, 0x9d28, 0x9d12,
+    0x9d1b, 0x9ed8, 0x9ed4, 0x9f8d, 0x9f9c, 0x512a, 0x511f, 0x5121,
+    0x5132, 0x52f5, 0x568e, 0x5680, 0x5690, 0x5685, 0x5687, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x568f, 0x58d5, 0x58d3, 0x58d1, 0x58ce, 0x5b30, 0x5b2a,
+    0x5b24, 0x5b7a, 0x5c37, 0x5c68, 0x5dbc, 0x5dba, 0x5dbd, 0x5db8,
+    0x5e6b, 0x5f4c, 0x5fbd, 0x61c9, 0x61c2, 0x61c7, 0x61e6, 0x61cb,
+    0x6232, 0x6234, 0x64ce, 0x64ca, 0x64d8, 0x64e0, 0x64f0, 0x64e6,
+    0x64ec, 0x64f1, 0x64e2, 0x64ed, 0x6582, 0x6583, 0x66d9, 0x66d6,
+    0x6a80, 0x6a94, 0x6a84, 0x6aa2, 0x6a9c, 0x6adb, 0x6aa3, 0x6a7e,
+    0x6a97, 0x6a90, 0x6aa0, 0x6b5c, 0x6bae, 0x6bda, 0x6c08, 0x6fd8,
+    0x6ff1, 0x6fdf, 0x6fe0, 0x6fdb, 0x6fe4, 0x6feb, 0x6fef, 0x6f80,
+    0x6fec, 0x6fe1, 0x6fe9, 0x6fd5, 0x6fee, 0x6ff0, 0x71e7, 0x71df,
+    0x71ee, 0x71e6, 0x71e5, 0x71ed, 0x71ec, 0x71f4, 0x71e0, 0x7235,
+    0x7246, 0x7370, 0x7372, 0x74a9, 0x74b0, 0x74a6, 0x74a8, 0x7646,
+    0x7642, 0x764c, 0x76ea, 0x77b3, 0x77aa, 0x77b0, 0x77ac, 0x003f,
+    /* lead byte c1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x77a7, 0x77ad, 0x77ef, 0x78f7, 0x78fa, 0x78f4, 0x78ef, 0x7901,
+    0x79a7, 0x79aa, 0x7a57, 0x7abf, 0x7c07, 0x7c0d, 0x7bfe, 0x7bf7,
+    0x7c0c, 0x7be0, 0x7ce0, 0x7cdc, 0x7cde, 0x7ce2, 0x7cdf, 0x7cd9,
+    0x7cdd, 0x7e2e, 0x7e3e, 0x7e46, 0x7e37, 0x7e32, 0x7e43, 0x7e2b,
+    0x7e3d, 0x7e31, 0x7e45, 0x7e41, 0x7e34, 0x7e39, 0x7e48, 0x7e35,
+    0x7e3f, 0x7e2f, 0x7f44, 0x7ff3, 0x7ffc, 0x8071, 0x8072, 0x8070,
+    0x806f, 0x8073, 0x81c6, 0x81c3, 0x81ba, 0x81c2, 0x81c0, 0x81bf,
+    0x81bd, 0x81c9, 0x81be, 0x81e8, 0x8209, 0x8271, 0x85aa, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8584, 0x857e, 0x859c, 0x8591, 0x8594, 0x85af, 0x859b,
+    0x8587, 0x85a8, 0x858a, 0x8667, 0x87c0, 0x87d1, 0x87b3, 0x87d2,
+    0x87c6, 0x87ab, 0x87bb, 0x87ba, 0x87c8, 0x87cb, 0x893b, 0x8936,
+    0x8944, 0x8938, 0x893d, 0x89ac, 0x8b0e, 0x8b17, 0x8b19, 0x8b1b,
+    0x8b0a, 0x8b20, 0x8b1d, 0x8b04, 0x8b10, 0x8c41, 0x8c3f, 0x8c73,
+    0x8cfa, 0x8cfd, 0x8cfc, 0x8cf8, 0x8cfb, 0x8da8, 0x8e49, 0x8e4b,
+    0x8e48, 0x8e4a, 0x8f44, 0x8f3e, 0x8f42, 0x8f45, 0x8f3f, 0x907f,
+    0x907d, 0x9084, 0x9081, 0x9082, 0x9080, 0x9139, 0x91a3, 0x919e,
+    0x919c, 0x934d, 0x9382, 0x9328, 0x9375, 0x934a, 0x9365, 0x934b,
+    0x9318, 0x937e, 0x936c, 0x935b, 0x9370, 0x935a, 0x9354, 0x95ca,
+    0x95cb, 0x95cc, 0x95c8, 0x95c6, 0x96b1, 0x96b8, 0x96d6, 0x971c,
+    0x971e, 0x97a0, 0x97d3, 0x9846, 0x98b6, 0x9935, 0x9a01, 0x003f,
+    /* lead byte c2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x99ff, 0x9bae, 0x9bab, 0x9baa, 0x9bad, 0x9d3b, 0x9d3f, 0x9e8b,
+    0x9ecf, 0x9ede, 0x9edc, 0x9edd, 0x9edb, 0x9f3e, 0x9f4b, 0x53e2,
+    0x5695, 0x56ae, 0x58d9, 0x58d8, 0x5b38, 0x5f5d, 0x61e3, 0x6233,
+    0x64f4, 0x64f2, 0x64fe, 0x6506, 0x64fa, 0x64fb, 0x64f7, 0x65b7,
+    0x66dc, 0x6726, 0x6ab3, 0x6aac, 0x6ac3, 0x6abb, 0x6ab8, 0x6ac2,
+    0x6aae, 0x6aaf, 0x6b5f, 0x6b78, 0x6baf, 0x7009, 0x700b, 0x6ffe,
+    0x7006, 0x6ffa, 0x7011, 0x700f, 0x71fb, 0x71fc, 0x71fe, 0x71f8,
+    0x7377, 0x7375, 0x74a7, 0x74bf, 0x7515, 0x7656, 0x7658, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7652, 0x77bd, 0x77bf, 0x77bb, 0x77bc, 0x790e, 0x79ae,
+    0x7a61, 0x7a62, 0x7a60, 0x7ac4, 0x7ac5, 0x7c2b, 0x7c27, 0x7c2a,
+    0x7c1e, 0x7c23, 0x7c21, 0x7ce7, 0x7e54, 0x7e55, 0x7e5e, 0x7e5a,
+    0x7e61, 0x7e52, 0x7e59, 0x7f48, 0x7ff9, 0x7ffb, 0x8077, 0x8076,
+    0x81cd, 0x81cf, 0x820a, 0x85cf, 0x85a9, 0x85cd, 0x85d0, 0x85c9,
+    0x85b0, 0x85ba, 0x85b9, 0x85a6, 0x87ef, 0x87ec, 0x87f2, 0x87e0,
+    0x8986, 0x89b2, 0x89f4, 0x8b28, 0x8b39, 0x8b2c, 0x8b2b, 0x8c50,
+    0x8d05, 0x8e59, 0x8e63, 0x8e66, 0x8e64, 0x8e5f, 0x8e55, 0x8ec0,
+    0x8f49, 0x8f4d, 0x9087, 0x9083, 0x9088, 0x91ab, 0x91ac, 0x91d0,
+    0x9394, 0x938a, 0x9396, 0x93a2, 0x93b3, 0x93ae, 0x93ac, 0x93b0,
+    0x9398, 0x939a, 0x9397, 0x95d4, 0x95d6, 0x95d0, 0x95d5, 0x96e2,
+    0x96dc, 0x96d9, 0x96db, 0x96de, 0x9724, 0x97a3, 0x97a6, 0x003f,
+    /* lead byte c3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x97ad, 0x97f9, 0x984d, 0x984f, 0x984c, 0x984e, 0x9853, 0x98ba,
+    0x993e, 0x993f, 0x993d, 0x992e, 0x99a5, 0x9a0e, 0x9ac1, 0x9b03,
+    0x9b06, 0x9b4f, 0x9b4e, 0x9b4d, 0x9bca, 0x9bc9, 0x9bfd, 0x9bc8,
+    0x9bc0, 0x9d51, 0x9d5d, 0x9d60, 0x9ee0, 0x9f15, 0x9f2c, 0x5133,
+    0x56a5, 0x58de, 0x58df, 0x58e2, 0x5bf5, 0x9f90, 0x5eec, 0x61f2,
+    0x61f7, 0x61f6, 0x61f5, 0x6500, 0x650f, 0x66e0, 0x66dd, 0x6ae5,
+    0x6add, 0x6ada, 0x6ad3, 0x701b, 0x701f, 0x7028, 0x701a, 0x701d,
+    0x7015, 0x7018, 0x7206, 0x720d, 0x7258, 0x72a2, 0x7378, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x737a, 0x74bd, 0x74ca, 0x74e3, 0x7587, 0x7586, 0x765f,
+    0x7661, 0x77c7, 0x7919, 0x79b1, 0x7a6b, 0x7a69, 0x7c3e, 0x7c3f,
+    0x7c38, 0x7c3d, 0x7c37, 0x7c40, 0x7e6b, 0x7e6d, 0x7e79, 0x7e69,
+    0x7e6a, 0x7f85, 0x7e73, 0x7fb6, 0x7fb9, 0x7fb8, 0x81d8, 0x85e9,
+    0x85dd, 0x85ea, 0x85d5, 0x85e4, 0x85e5, 0x85f7, 0x87fb, 0x8805,
+    0x880d, 0x87f9, 0x87fe, 0x8960, 0x895f, 0x8956, 0x895e, 0x8b41,
+    0x8b5c, 0x8b58, 0x8b49, 0x8b5a, 0x8b4e, 0x8b4f, 0x8b46, 0x8b59,
+    0x8d08, 0x8d0a, 0x8e7c, 0x8e72, 0x8e87, 0x8e76, 0x8e6c, 0x8e7a,
+    0x8e74, 0x8f54, 0x8f4e, 0x8fad, 0x908a, 0x908b, 0x91b1, 0x91ae,
+    0x93e1, 0x93d1, 0x93df, 0x93c3, 0x93c8, 0x93dc, 0x93dd, 0x93d6,
+    0x93e2, 0x93cd, 0x93d8, 0x93e4, 0x93d7, 0x93e8, 0x95dc, 0x96b4,
+    0x96e3, 0x972a, 0x9727, 0x9761, 0x97dc, 0x97fb, 0x985e, 0x003f,
+    /* lead byte c4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x9858, 0x985b, 0x98bc, 0x9945, 0x9949, 0x9a16, 0x9a19, 0x9b0d,
+    0x9be8, 0x9be7, 0x9bd6, 0x9bdb, 0x9d89, 0x9d61, 0x9d72, 0x9d6a,
+    0x9d6c, 0x9e92, 0x9e97, 0x9e93, 0x9eb4, 0x52f8, 0x56a8, 0x56b7,
+    0x56b6, 0x56b4, 0x56bc, 0x58e4, 0x5b40, 0x5b43, 0x5b7d, 0x5bf6,
+    0x5dc9, 0x61f8, 0x61fa, 0x6518, 0x6514, 0x6519, 0x66e6, 0x6727,
+    0x6aec, 0x703e, 0x7030, 0x7032, 0x7210, 0x737b, 0x74cf, 0x7662,
+    0x7665, 0x7926, 0x792a, 0x792c, 0x792b, 0x7ac7, 0x7af6, 0x7c4c,
+    0x7c43, 0x7c4d, 0x7cef, 0x7cf0, 0x8fae, 0x7e7d, 0x7e7c, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7e82, 0x7f4c, 0x8000, 0x81da, 0x8266, 0x85fb, 0x85f9,
+    0x8611, 0x85fa, 0x8606, 0x860b, 0x8607, 0x860a, 0x8814, 0x8815,
+    0x8964, 0x89ba, 0x89f8, 0x8b70, 0x8b6c, 0x8b66, 0x8b6f, 0x8b5f,
+    0x8b6b, 0x8d0f, 0x8d0d, 0x8e89, 0x8e81, 0x8e85, 0x8e82, 0x91b4,
+    0x91cb, 0x9418, 0x9403, 0x93fd, 0x95e1, 0x9730, 0x98c4, 0x9952,
+    0x9951, 0x99a8, 0x9a2b, 0x9a30, 0x9a37, 0x9a35, 0x9c13, 0x9c0d,
+    0x9e79, 0x9eb5, 0x9ee8, 0x9f2f, 0x9f5f, 0x9f63, 0x9f61, 0x5137,
+    0x5138, 0x56c1, 0x56c0, 0x56c2, 0x5914, 0x5c6c, 0x5dcd, 0x61fc,
+    0x61fe, 0x651d, 0x651c, 0x6595, 0x66e9, 0x6afb, 0x6b04, 0x6afa,
+    0x6bb2, 0x704c, 0x721b, 0x72a7, 0x74d6, 0x74d4, 0x7669, 0x77d3,
+    0x7c50, 0x7e8f, 0x7e8c, 0x7fbc, 0x8617, 0x862d, 0x861a, 0x8823,
+    0x8822, 0x8821, 0x881f, 0x896a, 0x896c, 0x89bd, 0x8b74, 0x003f,
+    /* lead byte c5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8b77, 0x8b7d, 0x8d13, 0x8e8a, 0x8e8d, 0x8e8b, 0x8f5f, 0x8faf,
+    0x91ba, 0x942e, 0x9433, 0x9435, 0x943a, 0x9438, 0x9432, 0x942b,
+    0x95e2, 0x9738, 0x9739, 0x9732, 0x97ff, 0x9867, 0x9865, 0x9957,
+    0x9a45, 0x9a43, 0x9a40, 0x9a3e, 0x9acf, 0x9b54, 0x9b51, 0x9c2d,
+    0x9c25, 0x9daf, 0x9db4, 0x9dc2, 0x9db8, 0x9e9d, 0x9eef, 0x9f19,
+    0x9f5c, 0x9f66, 0x9f67, 0x513c, 0x513b, 0x56c8, 0x56ca, 0x56c9,
+    0x5b7f, 0x5dd4, 0x5dd2, 0x5f4e, 0x61ff, 0x6524, 0x6b0a, 0x6b61,
+    0x7051, 0x7058, 0x7380, 0x74e4, 0x758a, 0x766e, 0x766c, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x79b3, 0x7c60, 0x7c5f, 0x807e, 0x807d, 0x81df, 0x8972,
+    0x896f, 0x89fc, 0x8b80, 0x8d16, 0x8d17, 0x8e91, 0x8e93, 0x8f61,
+    0x9148, 0x9444, 0x9451, 0x9452, 0x973d, 0x973e, 0x97c3, 0x97c1,
+    0x986b, 0x9955, 0x9a55, 0x9a4d, 0x9ad2, 0x9b1a, 0x9c49, 0x9c31,
+    0x9c3e, 0x9c3b, 0x9dd3, 0x9dd7, 0x9f34, 0x9f6c, 0x9f6a, 0x9f94,
+    0x56cc, 0x5dd6, 0x6200, 0x6523, 0x652b, 0x652a, 0x66ec, 0x6b10,
+    0x74da, 0x7aca, 0x7c64, 0x7c63, 0x7c65, 0x7e93, 0x7e96, 0x7e94,
+    0x81e2, 0x8638, 0x863f, 0x8831, 0x8b8a, 0x9090, 0x908f, 0x9463,
+    0x9460, 0x9464, 0x9768, 0x986f, 0x995c, 0x9a5a, 0x9a5b, 0x9a57,
+    0x9ad3, 0x9ad4, 0x9ad1, 0x9c54, 0x9c57, 0x9c56, 0x9de5, 0x9e9f,
+    0x9ef4, 0x56d1, 0x58e9, 0x652c, 0x705e, 0x7671, 0x7672, 0x77d7,
+    0x7f50, 0x7f88, 0x8836, 0x8839, 0x8862, 0x8b93, 0x8b92, 0x003f,
+    /* lead byte c6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8b96, 0x8277, 0x8d1b, 0x91c0, 0x946a, 0x9742, 0x9748, 0x9744,
+    0x97c6, 0x9870, 0x9a5f, 0x9b22, 0x9b58, 0x9c5f, 0x9df9, 0x9dfa,
+    0x9e7c, 0x9e7d, 0x9f07, 0x9f77, 0x9f72, 0x5ef3, 0x6b16, 0x7063,
+    0x7c6c, 0x7c6e, 0x883b, 0x89c0, 0x8ea1, 0x91c1, 0x9472, 0x9470,
+    0x9871, 0x995e, 0x9ad6, 0x9b23, 0x9ecc, 0x7064, 0x77da, 0x8b9a,
+    0x9477, 0x97c9, 0x9a62, 0x9a65, 0x7e9c, 0x8b9c, 0x8eaa, 0x91c5,
+    0x947d, 0x947e, 0x947c, 0x9c77, 0x9c78, 0x9ef7, 0x8c54, 0x947f,
+    0x9e1a, 0x7228, 0x9a6a, 0x9b31, 0x9e1b, 0x9e1e, 0x7c72, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* lead byte c9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x4e42, 0x4e5c, 0x51f5, 0x531a, 0x5382, 0x4e07, 0x4e0c, 0x4e47,
+    0x4e8d, 0x56d7, 0xfa0c, 0x5c6e, 0x5f73, 0x4e0f, 0x5187, 0x4e0e,
+    0x4e2e, 0x4e93, 0x4ec2, 0x4ec9, 0x4ec8, 0x5198, 0x52fc, 0x536c,
+    0x53b9, 0x5720, 0x5903, 0x592c, 0x5c10, 0x5dff, 0x65e1, 0x6bb3,
+    0x6bcc, 0x6c14, 0x723f, 0x4e31, 0x4e3c, 0x4ee8, 0x4edc, 0x4ee9,
+    0x4ee1, 0x4edd, 0x4eda, 0x520c, 0x531c, 0x534c, 0x5722, 0x5723,
+    0x5917, 0x592f, 0x5b81, 0x5b84, 0x5c12, 0x5c3b, 0x5c74, 0x5c73,
+    0x5e04, 0x5e80, 0x5e82, 0x5fc9, 0x6209, 0x6250, 0x6c15, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6c36, 0x6c43, 0x6c3f, 0x6c3b, 0x72ae, 0x72b0, 0x738a,
+    0x79b8, 0x808a, 0x961e, 0x4f0e, 0x4f18, 0x4f2c, 0x4ef5, 0x4f14,
+    0x4ef1, 0x4f00, 0x4ef7, 0x4f08, 0x4f1d, 0x4f02, 0x4f05, 0x4f22,
+    0x4f13, 0x4f04, 0x4ef4, 0x4f12, 0x51b1, 0x5213, 0x5209, 0x5210,
+    0x52a6, 0x5322, 0x531f, 0x534d, 0x538a, 0x5407, 0x56e1, 0x56df,
+    0x572e, 0x572a, 0x5734, 0x593c, 0x5980, 0x597c, 0x5985, 0x597b,
+    0x597e, 0x5977, 0x597f, 0x5b56, 0x5c15, 0x5c25, 0x5c7c, 0x5c7a,
+    0x5c7b, 0x5c7e, 0x5ddf, 0x5e75, 0x5e84, 0x5f02, 0x5f1a, 0x5f74,
+    0x5fd5, 0x5fd4, 0x5fcf, 0x625c, 0x625e, 0x6264, 0x6261, 0x6266,
+    0x6262, 0x6259, 0x6260, 0x625a, 0x6265, 0x65ef, 0x65ee, 0x673e,
+    0x6739, 0x6738, 0x673b, 0x673a, 0x673f, 0x673c, 0x6733, 0x6c18,
+    0x6c46, 0x6c52, 0x6c5c, 0x6c4f, 0x6c4a, 0x6c54, 0x6c4b, 0x003f,
+    /* lead byte ca */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6c4c, 0x7071, 0x725e, 0x72b4, 0x72b5, 0x738e, 0x752a, 0x767f,
+    0x7a75, 0x7f51, 0x8278, 0x827c, 0x8280, 0x827d, 0x827f, 0x864d,
+    0x897e, 0x9099, 0x9097, 0x9098, 0x909b, 0x9094, 0x9622, 0x9624,
+    0x9620, 0x9623, 0x4f56, 0x4f3b, 0x4f62, 0x4f49, 0x4f53, 0x4f64,
+    0x4f3e, 0x4f67, 0x4f52, 0x4f5f, 0x4f41, 0x4f58, 0x4f2d, 0x4f33,
+    0x4f3f, 0x4f61, 0x518f, 0x51b9, 0x521c, 0x521e, 0x5221, 0x52ad,
+    0x52ae, 0x5309, 0x5363, 0x5372, 0x538e, 0x538f, 0x5430, 0x5437,
+    0x542a, 0x5454, 0x5445, 0x5419, 0x541c, 0x5425, 0x5418, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x543d, 0x544f, 0x5441, 0x5428, 0x5424, 0x5447, 0x56ee,
+    0x56e7, 0x56e5, 0x5741, 0x5745, 0x574c, 0x5749, 0x574b, 0x5752,
+    0x5906, 0x5940, 0x59a6, 0x5998, 0x59a0, 0x5997, 0x598e, 0x59a2,
+    0x5990, 0x598f, 0x59a7, 0x59a1, 0x5b8e, 0x5b92, 0x5c28, 0x5c2a,
+    0x5c8d, 0x5c8f, 0x5c88, 0x5c8b, 0x5c89, 0x5c92, 0x5c8a, 0x5c86,
+    0x5c93, 0x5c95, 0x5de0, 0x5e0a, 0x5e0e, 0x5e8b, 0x5e89, 0x5e8c,
+    0x5e88, 0x5e8d, 0x5f05, 0x5f1d, 0x5f78, 0x5f76, 0x5fd2, 0x5fd1,
+    0x5fd0, 0x5fed, 0x5fe8, 0x5fee, 0x5ff3, 0x5fe1, 0x5fe4, 0x5fe3,
+    0x5ffa, 0x5fef, 0x5ff7, 0x5ffb, 0x6000, 0x5ff4, 0x623a, 0x6283,
+    0x628c, 0x628e, 0x628f, 0x6294, 0x6287, 0x6271, 0x627b, 0x627a,
+    0x6270, 0x6281, 0x6288, 0x6277, 0x627d, 0x6272, 0x6274, 0x6537,
+    0x65f0, 0x65f4, 0x65f3, 0x65f2, 0x65f5, 0x6745, 0x6747, 0x003f,
+    /* lead byte cb */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6759, 0x6755, 0x674c, 0x6748, 0x675d, 0x674d, 0x675a, 0x674b,
+    0x6bd0, 0x6c19, 0x6c1a, 0x6c78, 0x6c67, 0x6c6b, 0x6c84, 0x6c8b,
+    0x6c8f, 0x6c71, 0x6c6f, 0x6c69, 0x6c9a, 0x6c6d, 0x6c87, 0x6c95,
+    0x6c9c, 0x6c66, 0x6c73, 0x6c65, 0x6c7b, 0x6c8e, 0x7074, 0x707a,
+    0x7263, 0x72bf, 0x72bd, 0x72c3, 0x72c6, 0x72c1, 0x72ba, 0x72c5,
+    0x7395, 0x7397, 0x7393, 0x7394, 0x7392, 0x753a, 0x7539, 0x7594,
+    0x7595, 0x7681, 0x793d, 0x8034, 0x8095, 0x8099, 0x8090, 0x8092,
+    0x809c, 0x8290, 0x828f, 0x8285, 0x828e, 0x8291, 0x8293, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x828a, 0x8283, 0x8284, 0x8c78, 0x8fc9, 0x8fbf, 0x909f,
+    0x90a1, 0x90a5, 0x909e, 0x90a7, 0x90a0, 0x9630, 0x9628, 0x962f,
+    0x962d, 0x4e33, 0x4f98, 0x4f7c, 0x4f85, 0x4f7d, 0x4f80, 0x4f87,
+    0x4f76, 0x4f74, 0x4f89, 0x4f84, 0x4f77, 0x4f4c, 0x4f97, 0x4f6a,
+    0x4f9a, 0x4f79, 0x4f81, 0x4f78, 0x4f90, 0x4f9c, 0x4f94, 0x4f9e,
+    0x4f92, 0x4f82, 0x4f95, 0x4f6b, 0x4f6e, 0x519e, 0x51bc, 0x51be,
+    0x5235, 0x5232, 0x5233, 0x5246, 0x5231, 0x52bc, 0x530a, 0x530b,
+    0x533c, 0x5392, 0x5394, 0x5487, 0x547f, 0x5481, 0x5491, 0x5482,
+    0x5488, 0x546b, 0x547a, 0x547e, 0x5465, 0x546c, 0x5474, 0x5466,
+    0x548d, 0x546f, 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464,
+    0x56f7, 0x56f9, 0x576f, 0x5772, 0x576d, 0x576b, 0x5771, 0x5770,
+    0x5776, 0x5780, 0x5775, 0x577b, 0x5773, 0x5774, 0x5762, 0x003f,
+    /* lead byte cc */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x5768, 0x577d, 0x590c, 0x5945, 0x59b5, 0x59ba, 0x59cf, 0x59ce,
+    0x59b2, 0x59cc, 0x59c1, 0x59b6, 0x59bc, 0x59c3, 0x59d6, 0x59b1,
+    0x59bd, 0x59c0, 0x59c8, 0x59b4, 0x59c7, 0x5b62, 0x5b65, 0x5b93,
+    0x5b95, 0x5c44, 0x5c47, 0x5cae, 0x5ca4, 0x5ca0, 0x5cb5, 0x5caf,
+    0x5ca8, 0x5cac, 0x5c9f, 0x5ca3, 0x5cad, 0x5ca2, 0x5caa, 0x5ca7,
+    0x5c9d, 0x5ca5, 0x5cb6, 0x5cb0, 0x5ca6, 0x5e17, 0x5e14, 0x5e19,
+    0x5f28, 0x5f22, 0x5f23, 0x5f24, 0x5f54, 0x5f82, 0x5f7e, 0x5f7d,
+    0x5fde, 0x5fe5, 0x602d, 0x6026, 0x6019, 0x6032, 0x600b, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6034, 0x600a, 0x6017, 0x6033, 0x601a, 0x601e, 0x602c,
+    0x6022, 0x600d, 0x6010, 0x602e, 0x6013, 0x6011, 0x600c, 0x6009,
+    0x601c, 0x6214, 0x623d, 0x62ad, 0x62b4, 0x62d1, 0x62be, 0x62aa,
+    0x62b6, 0x62ca, 0x62ae, 0x62b3, 0x62af, 0x62bb, 0x62a9, 0x62b0,
+    0x62b8, 0x653d, 0x65a8, 0x65bb, 0x6609, 0x65fc, 0x6604, 0x6612,
+    0x6608, 0x65fb, 0x6603, 0x660b, 0x660d, 0x6605, 0x65fd, 0x6611,
+    0x6610, 0x66f6, 0x670a, 0x6785, 0x676c, 0x678e, 0x6792, 0x6776,
+    0x677b, 0x6798, 0x6786, 0x6784, 0x6774, 0x678d, 0x678c, 0x677a,
+    0x679f, 0x6791, 0x6799, 0x6783, 0x677d, 0x6781, 0x6778, 0x6779,
+    0x6794, 0x6b25, 0x6b80, 0x6b7e, 0x6bde, 0x6c1d, 0x6c93, 0x6cec,
+    0x6ceb, 0x6cee, 0x6cd9, 0x6cb6, 0x6cd4, 0x6cad, 0x6ce7, 0x6cb7,
+    0x6cd0, 0x6cc2, 0x6cba, 0x6cc3, 0x6cc6, 0x6ced, 0x6cf2, 0x003f,
+    /* lead byte cd */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6cd2, 0x6cdd, 0x6cb4, 0x6c8a, 0x6c9d, 0x6c80, 0x6cde, 0x6cc0,
+    0x6d30, 0x6ccd, 0x6cc7, 0x6cb0, 0x6cf9, 0x6ccf, 0x6ce9, 0x6cd1,
+    0x7094, 0x7098, 0x7085, 0x7093, 0x7086, 0x7084, 0x7091, 0x7096,
+    0x7082, 0x709a, 0x7083, 0x726a, 0x72d6, 0x72cb, 0x72d8, 0x72c9,
+    0x72dc, 0x72d2, 0x72d4, 0x72da, 0x72cc, 0x72d1, 0x73a4, 0x73a1,
+    0x73ad, 0x73a6, 0x73a2, 0x73a0, 0x73ac, 0x739d, 0x74dd, 0x74e8,
+    0x753f, 0x7540, 0x753e, 0x758c, 0x7598, 0x76af, 0x76f3, 0x76f1,
+    0x76f0, 0x76f5, 0x77f8, 0x77fc, 0x77f9, 0x77fb, 0x77fa, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x77f7, 0x7942, 0x793f, 0x79c5, 0x7a78, 0x7a7b, 0x7afb,
+    0x7c75, 0x7cfd, 0x8035, 0x808f, 0x80ae, 0x80a3, 0x80b8, 0x80b5,
+    0x80ad, 0x8220, 0x82a0, 0x82c0, 0x82ab, 0x829a, 0x8298, 0x829b,
+    0x82b5, 0x82a7, 0x82ae, 0x82bc, 0x829e, 0x82ba, 0x82b4, 0x82a8,
+    0x82a1, 0x82a9, 0x82c2, 0x82a4, 0x82c3, 0x82b6, 0x82a2, 0x8670,
+    0x866f, 0x866d, 0x866e, 0x8c56, 0x8fd2, 0x8fcb, 0x8fd3, 0x8fcd,
+    0x8fd6, 0x8fd5, 0x8fd7, 0x90b2, 0x90b4, 0x90af, 0x90b3, 0x90b0,
+    0x9639, 0x963d, 0x963c, 0x963a, 0x9643, 0x4fcd, 0x4fc5, 0x4fd3,
+    0x4fb2, 0x4fc9, 0x4fcb, 0x4fc1, 0x4fd4, 0x4fdc, 0x4fd9, 0x4fbb,
+    0x4fb3, 0x4fdb, 0x4fc7, 0x4fd6, 0x4fba, 0x4fc0, 0x4fb9, 0x4fec,
+    0x5244, 0x5249, 0x52c0, 0x52c2, 0x533d, 0x537c, 0x5397, 0x5396,
+    0x5399, 0x5398, 0x54ba, 0x54a1, 0x54ad, 0x54a5, 0x54cf, 0x003f,
+    /* lead byte ce */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x54c3, 0x830d, 0x54b7, 0x54ae, 0x54d6, 0x54b6, 0x54c5, 0x54c6,
+    0x54a0, 0x5470, 0x54bc, 0x54a2, 0x54be, 0x5472, 0x54de, 0x54b0,
+    0x57b5, 0x579e, 0x579f, 0x57a4, 0x578c, 0x5797, 0x579d, 0x579b,
+    0x5794, 0x5798, 0x578f, 0x5799, 0x57a5, 0x579a, 0x5795, 0x58f4,
+    0x590d, 0x5953, 0x59e1, 0x59de, 0x59ee, 0x5a00, 0x59f1, 0x59dd,
+    0x59fa, 0x59fd, 0x59fc, 0x59f6, 0x59e4, 0x59f2, 0x59f7, 0x59db,
+    0x59e9, 0x59f3, 0x59f5, 0x59e0, 0x59fe, 0x59f4, 0x59ed, 0x5ba8,
+    0x5c4c, 0x5cd0, 0x5cd8, 0x5ccc, 0x5cd7, 0x5ccb, 0x5cdb, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x5cde, 0x5cda, 0x5cc9, 0x5cc7, 0x5cca, 0x5cd6, 0x5cd3,
+    0x5cd4, 0x5ccf, 0x5cc8, 0x5cc6, 0x5cce, 0x5cdf, 0x5cf8, 0x5df9,
+    0x5e21, 0x5e22, 0x5e23, 0x5e20, 0x5e24, 0x5eb0, 0x5ea4, 0x5ea2,
+    0x5e9b, 0x5ea3, 0x5ea5, 0x5f07, 0x5f2e, 0x5f56, 0x5f86, 0x6037,
+    0x6039, 0x6054, 0x6072, 0x605e, 0x6045, 0x6053, 0x6047, 0x6049,
+    0x605b, 0x604c, 0x6040, 0x6042, 0x605f, 0x6024, 0x6044, 0x6058,
+    0x6066, 0x606e, 0x6242, 0x6243, 0x62cf, 0x630d, 0x630b, 0x62f5,
+    0x630e, 0x6303, 0x62eb, 0x62f9, 0x630f, 0x630c, 0x62f8, 0x62f6,
+    0x6300, 0x6313, 0x6314, 0x62fa, 0x6315, 0x62fb, 0x62f0, 0x6541,
+    0x6543, 0x65aa, 0x65bf, 0x6636, 0x6621, 0x6632, 0x6635, 0x661c,
+    0x6626, 0x6622, 0x6633, 0x662b, 0x663a, 0x661d, 0x6634, 0x6639,
+    0x662e, 0x670f, 0x6710, 0x67c1, 0x67f2, 0x67c8, 0x67ba, 0x003f,
+    /* lead byte cf */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x67dc, 0x67bb, 0x67f8, 0x67d8, 0x67c0, 0x67b7, 0x67c5, 0x67eb,
+    0x67e4, 0x67df, 0x67b5, 0x67cd, 0x67b3, 0x67f7, 0x67f6, 0x67ee,
+    0x67e3, 0x67c2, 0x67b9, 0x67ce, 0x67e7, 0x67f0, 0x67b2, 0x67fc,
+    0x67c6, 0x67ed, 0x67cc, 0x67ae, 0x67e6, 0x67db, 0x67fa, 0x67c9,
+    0x67ca, 0x67c3, 0x67ea, 0x67cb, 0x6b28, 0x6b82, 0x6b84, 0x6bb6,
+    0x6bd6, 0x6bd8, 0x6be0, 0x6c20, 0x6c21, 0x6d28, 0x6d34, 0x6d2d,
+    0x6d1f, 0x6d3c, 0x6d3f, 0x6d12, 0x6d0a, 0x6cda, 0x6d33, 0x6d04,
+    0x6d19, 0x6d3a, 0x6d1a, 0x6d11, 0x6d00, 0x6d1d, 0x6d42, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6d01, 0x6d18, 0x6d37, 0x6d03, 0x6d0f, 0x6d40, 0x6d07,
+    0x6d20, 0x6d2c, 0x6d08, 0x6d22, 0x6d09, 0x6d10, 0x70b7, 0x709f,
+    0x70be, 0x70b1, 0x70b0, 0x70a1, 0x70b4, 0x70b5, 0x70a9, 0x7241,
+    0x7249, 0x724a, 0x726c, 0x7270, 0x7273, 0x726e, 0x72ca, 0x72e4,
+    0x72e8, 0x72eb, 0x72df, 0x72ea, 0x72e6, 0x72e3, 0x7385, 0x73cc,
+    0x73c2, 0x73c8, 0x73c5, 0x73b9, 0x73b6, 0x73b5, 0x73b4, 0x73eb,
+    0x73bf, 0x73c7, 0x73be, 0x73c3, 0x73c6, 0x73b8, 0x73cb, 0x74ec,
+    0x74ee, 0x752e, 0x7547, 0x7548, 0x75a7, 0x75aa, 0x7679, 0x76c4,
+    0x7708, 0x7703, 0x7704, 0x7705, 0x770a, 0x76f7, 0x76fb, 0x76fa,
+    0x77e7, 0x77e8, 0x7806, 0x7811, 0x7812, 0x7805, 0x7810, 0x780f,
+    0x780e, 0x7809, 0x7803, 0x7813, 0x794a, 0x794c, 0x794b, 0x7945,
+    0x7944, 0x79d5, 0x79cd, 0x79cf, 0x79d6, 0x79ce, 0x7a80, 0x003f,
+    /* lead byte d0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7a7e, 0x7ad1, 0x7b00, 0x7b01, 0x7c7a, 0x7c78, 0x7c79, 0x7c7f,
+    0x7c80, 0x7c81, 0x7d03, 0x7d08, 0x7d01, 0x7f58, 0x7f91, 0x7f8d,
+    0x7fbe, 0x8007, 0x800e, 0x800f, 0x8014, 0x8037, 0x80d8, 0x80c7,
+    0x80e0, 0x80d1, 0x80c8, 0x80c2, 0x80d0, 0x80c5, 0x80e3, 0x80d9,
+    0x80dc, 0x80ca, 0x80d5, 0x80c9, 0x80cf, 0x80d7, 0x80e6, 0x80cd,
+    0x81ff, 0x8221, 0x8294, 0x82d9, 0x82fe, 0x82f9, 0x8307, 0x82e8,
+    0x8300, 0x82d5, 0x833a, 0x82eb, 0x82d6, 0x82f4, 0x82ec, 0x82e1,
+    0x82f2, 0x82f5, 0x830c, 0x82fb, 0x82f6, 0x82f0, 0x82ea, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x82e4, 0x82e0, 0x82fa, 0x82f3, 0x82ed, 0x8677, 0x8674,
+    0x867c, 0x8673, 0x8841, 0x884e, 0x8867, 0x886a, 0x8869, 0x89d3,
+    0x8a04, 0x8a07, 0x8d72, 0x8fe3, 0x8fe1, 0x8fee, 0x8fe0, 0x90f1,
+    0x90bd, 0x90bf, 0x90d5, 0x90c5, 0x90be, 0x90c7, 0x90cb, 0x90c8,
+    0x91d4, 0x91d3, 0x9654, 0x964f, 0x9651, 0x9653, 0x964a, 0x964e,
+    0x501e, 0x5005, 0x5007, 0x5013, 0x5022, 0x5030, 0x501b, 0x4ff5,
+    0x4ff4, 0x5033, 0x5037, 0x502c, 0x4ff6, 0x4ff7, 0x5017, 0x501c,
+    0x5020, 0x5027, 0x5035, 0x502f, 0x5031, 0x500e, 0x515a, 0x5194,
+    0x5193, 0x51ca, 0x51c4, 0x51c5, 0x51c8, 0x51ce, 0x5261, 0x525a,
+    0x5252, 0x525e, 0x525f, 0x5255, 0x5262, 0x52cd, 0x530e, 0x539e,
+    0x5526, 0x54e2, 0x5517, 0x5512, 0x54e7, 0x54f3, 0x54e4, 0x551a,
+    0x54ff, 0x5504, 0x5508, 0x54eb, 0x5511, 0x5505, 0x54f1, 0x003f,
+    /* lead byte d1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x550a, 0x54fb, 0x54f7, 0x54f8, 0x54e0, 0x550e, 0x5503, 0x550b,
+    0x5701, 0x5702, 0x57cc, 0x5832, 0x57d5, 0x57d2, 0x57ba, 0x57c6,
+    0x57bd, 0x57bc, 0x57b8, 0x57b6, 0x57bf, 0x57c7, 0x57d0, 0x57b9,
+    0x57c1, 0x590e, 0x594a, 0x5a19, 0x5a16, 0x5a2d, 0x5a2e, 0x5a15,
+    0x5a0f, 0x5a17, 0x5a0a, 0x5a1e, 0x5a33, 0x5b6c, 0x5ba7, 0x5bad,
+    0x5bac, 0x5c03, 0x5c56, 0x5c54, 0x5cec, 0x5cff, 0x5cee, 0x5cf1,
+    0x5cf7, 0x5d00, 0x5cf9, 0x5e29, 0x5e28, 0x5ea8, 0x5eae, 0x5eaa,
+    0x5eac, 0x5f33, 0x5f30, 0x5f67, 0x605d, 0x605a, 0x6067, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6041, 0x60a2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609d,
+    0x6083, 0x6095, 0x609b, 0x6097, 0x6087, 0x609c, 0x608e, 0x6219,
+    0x6246, 0x62f2, 0x6310, 0x6356, 0x632c, 0x6344, 0x6345, 0x6336,
+    0x6343, 0x63e4, 0x6339, 0x634b, 0x634a, 0x633c, 0x6329, 0x6341,
+    0x6334, 0x6358, 0x6354, 0x6359, 0x632d, 0x6347, 0x6333, 0x635a,
+    0x6351, 0x6338, 0x6357, 0x6340, 0x6348, 0x654a, 0x6546, 0x65c6,
+    0x65c3, 0x65c4, 0x65c2, 0x664a, 0x665f, 0x6647, 0x6651, 0x6712,
+    0x6713, 0x681f, 0x681a, 0x6849, 0x6832, 0x6833, 0x683b, 0x684b,
+    0x684f, 0x6816, 0x6831, 0x681c, 0x6835, 0x682b, 0x682d, 0x682f,
+    0x684e, 0x6844, 0x6834, 0x681d, 0x6812, 0x6814, 0x6826, 0x6828,
+    0x682e, 0x684d, 0x683a, 0x6825, 0x6820, 0x6b2c, 0x6b2f, 0x6b2d,
+    0x6b31, 0x6b34, 0x6b6d, 0x8082, 0x6b88, 0x6be6, 0x6be4, 0x003f,
+    /* lead byte d2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6be8, 0x6be3, 0x6be2, 0x6be7, 0x6c25, 0x6d7a, 0x6d63, 0x6d64,
+    0x6d76, 0x6d0d, 0x6d61, 0x6d92, 0x6d58, 0x6d62, 0x6d6d, 0x6d6f,
+    0x6d91, 0x6d8d, 0x6def, 0x6d7f, 0x6d86, 0x6d5e, 0x6d67, 0x6d60,
+    0x6d97, 0x6d70, 0x6d7c, 0x6d5f, 0x6d82, 0x6d98, 0x6d2f, 0x6d68,
+    0x6d8b, 0x6d7e, 0x6d80, 0x6d84, 0x6d16, 0x6d83, 0x6d7b, 0x6d7d,
+    0x6d75, 0x6d90, 0x70dc, 0x70d3, 0x70d1, 0x70dd, 0x70cb, 0x7f39,
+    0x70e2, 0x70d7, 0x70d2, 0x70de, 0x70e0, 0x70d4, 0x70cd, 0x70c5,
+    0x70c6, 0x70c7, 0x70da, 0x70ce, 0x70e1, 0x7242, 0x7278, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7277, 0x7276, 0x7300, 0x72fa, 0x72f4, 0x72fe, 0x72f6,
+    0x72f3, 0x72fb, 0x7301, 0x73d3, 0x73d9, 0x73e5, 0x73d6, 0x73bc,
+    0x73e7, 0x73e3, 0x73e9, 0x73dc, 0x73d2, 0x73db, 0x73d4, 0x73dd,
+    0x73da, 0x73d7, 0x73d8, 0x73e8, 0x74de, 0x74df, 0x74f4, 0x74f5,
+    0x7521, 0x755b, 0x755f, 0x75b0, 0x75c1, 0x75bb, 0x75c4, 0x75c0,
+    0x75bf, 0x75b6, 0x75ba, 0x768a, 0x76c9, 0x771d, 0x771b, 0x7710,
+    0x7713, 0x7712, 0x7723, 0x7711, 0x7715, 0x7719, 0x771a, 0x7722,
+    0x7727, 0x7823, 0x782c, 0x7822, 0x7835, 0x782f, 0x7828, 0x782e,
+    0x782b, 0x7821, 0x7829, 0x7833, 0x782a, 0x7831, 0x7954, 0x795b,
+    0x794f, 0x795c, 0x7953, 0x7952, 0x7951, 0x79eb, 0x79ec, 0x79e0,
+    0x79ee, 0x79ed, 0x79ea, 0x79dc, 0x79de, 0x79dd, 0x7a86, 0x7a89,
+    0x7a85, 0x7a8b, 0x7a8c, 0x7a8a, 0x7a87, 0x7ad8, 0x7b10, 0x003f,
+    /* lead byte d3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7b04, 0x7b13, 0x7b05, 0x7b0f, 0x7b08, 0x7b0a, 0x7b0e, 0x7b09,
+    0x7b12, 0x7c84, 0x7c91, 0x7c8a, 0x7c8c, 0x7c88, 0x7c8d, 0x7c85,
+    0x7d1e, 0x7d1d, 0x7d11, 0x7d0e, 0x7d18, 0x7d16, 0x7d13, 0x7d1f,
+    0x7d12, 0x7d0f, 0x7d0c, 0x7f5c, 0x7f61, 0x7f5e, 0x7f60, 0x7f5d,
+    0x7f5b, 0x7f96, 0x7f92, 0x7fc3, 0x7fc2, 0x7fc0, 0x8016, 0x803e,
+    0x8039, 0x80fa, 0x80f2, 0x80f9, 0x80f5, 0x8101, 0x80fb, 0x8100,
+    0x8201, 0x822f, 0x8225, 0x8333, 0x832d, 0x8344, 0x8319, 0x8351,
+    0x8325, 0x8356, 0x833f, 0x8341, 0x8326, 0x831c, 0x8322, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8342, 0x834e, 0x831b, 0x832a, 0x8308, 0x833c, 0x834d,
+    0x8316, 0x8324, 0x8320, 0x8337, 0x832f, 0x8329, 0x8347, 0x8345,
+    0x834c, 0x8353, 0x831e, 0x832c, 0x834b, 0x8327, 0x8348, 0x8653,
+    0x8652, 0x86a2, 0x86a8, 0x8696, 0x868d, 0x8691, 0x869e, 0x8687,
+    0x8697, 0x8686, 0x868b, 0x869a, 0x8685, 0x86a5, 0x8699, 0x86a1,
+    0x86a7, 0x8695, 0x8698, 0x868e, 0x869d, 0x8690, 0x8694, 0x8843,
+    0x8844, 0x886d, 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887f,
+    0x886f, 0x8883, 0x887e, 0x8874, 0x887c, 0x8a12, 0x8c47, 0x8c57,
+    0x8c7b, 0x8ca4, 0x8ca3, 0x8d76, 0x8d78, 0x8db5, 0x8db7, 0x8db6,
+    0x8ed1, 0x8ed3, 0x8ffe, 0x8ff5, 0x9002, 0x8fff, 0x8ffb, 0x9004,
+    0x8ffc, 0x8ff6, 0x90d6, 0x90e0, 0x90d9, 0x90da, 0x90e3, 0x90df,
+    0x90e5, 0x90d8, 0x90db, 0x90d7, 0x90dc, 0x90e4, 0x9150, 0x003f,
+    /* lead byte d4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x914e, 0x914f, 0x91d5, 0x91e2, 0x91da, 0x965c, 0x965f, 0x96bc,
+    0x98e3, 0x9adf, 0x9b2f, 0x4e7f, 0x5070, 0x506a, 0x5061, 0x505e,
+    0x5060, 0x5053, 0x504b, 0x505d, 0x5072, 0x5048, 0x504d, 0x5041,
+    0x505b, 0x504a, 0x5062, 0x5015, 0x5045, 0x505f, 0x5069, 0x506b,
+    0x5063, 0x5064, 0x5046, 0x5040, 0x506e, 0x5073, 0x5057, 0x5051,
+    0x51d0, 0x526b, 0x526d, 0x526c, 0x526e, 0x52d6, 0x52d3, 0x532d,
+    0x539c, 0x5575, 0x5576, 0x553c, 0x554d, 0x5550, 0x5534, 0x552a,
+    0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x550c, 0x5532, 0x5565, 0x554e, 0x5539, 0x5548, 0x552d,
+    0x553b, 0x5540, 0x554b, 0x570a, 0x5707, 0x57fb, 0x5814, 0x57e2,
+    0x57f6, 0x57dc, 0x57f4, 0x5800, 0x57ed, 0x57fd, 0x5808, 0x57f8,
+    0x580b, 0x57f3, 0x57cf, 0x5807, 0x57ee, 0x57e3, 0x57f2, 0x57e5,
+    0x57ec, 0x57e1, 0x580e, 0x57fc, 0x5810, 0x57e7, 0x5801, 0x580c,
+    0x57f1, 0x57e9, 0x57f0, 0x580d, 0x5804, 0x595c, 0x5a60, 0x5a58,
+    0x5a55, 0x5a67, 0x5a5e, 0x5a38, 0x5a35, 0x5a6d, 0x5a50, 0x5a5f,
+    0x5a65, 0x5a6c, 0x5a53, 0x5a64, 0x5a57, 0x5a43, 0x5a5d, 0x5a52,
+    0x5a44, 0x5a5b, 0x5a48, 0x5a8e, 0x5a3e, 0x5a4d, 0x5a39, 0x5a4c,
+    0x5a70, 0x5a69, 0x5a47, 0x5a51, 0x5a56, 0x5a42, 0x5a5c, 0x5b72,
+    0x5b6e, 0x5bc1, 0x5bc0, 0x5c59, 0x5d1e, 0x5d0b, 0x5d1d, 0x5d1a,
+    0x5d20, 0x5d0c, 0x5d28, 0x5d0d, 0x5d26, 0x5d25, 0x5d0f, 0x003f,
+    /* lead byte d5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x5d30, 0x5d12, 0x5d23, 0x5d1f, 0x5d2e, 0x5e3e, 0x5e34, 0x5eb1,
+    0x5eb4, 0x5eb9, 0x5eb2, 0x5eb3, 0x5f36, 0x5f38, 0x5f9b, 0x5f96,
+    0x5f9f, 0x608a, 0x6090, 0x6086, 0x60be, 0x60b0, 0x60ba, 0x60d3,
+    0x60d4, 0x60cf, 0x60e4, 0x60d9, 0x60dd, 0x60c8, 0x60b1, 0x60db,
+    0x60b7, 0x60ca, 0x60bf, 0x60c3, 0x60cd, 0x60c0, 0x6332, 0x6365,
+    0x638a, 0x6382, 0x637d, 0x63bd, 0x639e, 0x63ad, 0x639d, 0x6397,
+    0x63ab, 0x638e, 0x636f, 0x6387, 0x6390, 0x636e, 0x63af, 0x6375,
+    0x639c, 0x636d, 0x63ae, 0x637c, 0x63a4, 0x633b, 0x639f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6378, 0x6385, 0x6381, 0x6391, 0x638d, 0x6370, 0x6553,
+    0x65cd, 0x6665, 0x6661, 0x665b, 0x6659, 0x665c, 0x6662, 0x6718,
+    0x6879, 0x6887, 0x6890, 0x689c, 0x686d, 0x686e, 0x68ae, 0x68ab,
+    0x6956, 0x686f, 0x68a3, 0x68ac, 0x68a9, 0x6875, 0x6874, 0x68b2,
+    0x688f, 0x6877, 0x6892, 0x687c, 0x686b, 0x6872, 0x68aa, 0x6880,
+    0x6871, 0x687e, 0x689b, 0x6896, 0x688b, 0x68a0, 0x6889, 0x68a4,
+    0x6878, 0x687b, 0x6891, 0x688c, 0x688a, 0x687d, 0x6b36, 0x6b33,
+    0x6b37, 0x6b38, 0x6b91, 0x6b8f, 0x6b8d, 0x6b8e, 0x6b8c, 0x6c2a,
+    0x6dc0, 0x6dab, 0x6db4, 0x6db3, 0x6e74, 0x6dac, 0x6de9, 0x6de2,
+    0x6db7, 0x6df6, 0x6dd4, 0x6e00, 0x6dc8, 0x6de0, 0x6ddf, 0x6dd6,
+    0x6dbe, 0x6de5, 0x6ddc, 0x6ddd, 0x6ddb, 0x6df4, 0x6dca, 0x6dbd,
+    0x6ded, 0x6df0, 0x6dba, 0x6dd5, 0x6dc2, 0x6dcf, 0x6dc9, 0x003f,
+    /* lead byte d6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6dd0, 0x6df2, 0x6dd3, 0x6dfd, 0x6dd7, 0x6dcd, 0x6de3, 0x6dbb,
+    0x70fa, 0x710d, 0x70f7, 0x7117, 0x70f4, 0x710c, 0x70f0, 0x7104,
+    0x70f3, 0x7110, 0x70fc, 0x70ff, 0x7106, 0x7113, 0x7100, 0x70f8,
+    0x70f6, 0x710b, 0x7102, 0x710e, 0x727e, 0x727b, 0x727c, 0x727f,
+    0x731d, 0x7317, 0x7307, 0x7311, 0x7318, 0x730a, 0x7308, 0x72ff,
+    0x730f, 0x731e, 0x7388, 0x73f6, 0x73f8, 0x73f5, 0x7404, 0x7401,
+    0x73fd, 0x7407, 0x7400, 0x73fa, 0x73fc, 0x73ff, 0x740c, 0x740b,
+    0x73f4, 0x7408, 0x7564, 0x7563, 0x75ce, 0x75d2, 0x75cf, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x75cb, 0x75cc, 0x75d1, 0x75d0, 0x768f, 0x7689, 0x76d3,
+    0x7739, 0x772f, 0x772d, 0x7731, 0x7732, 0x7734, 0x7733, 0x773d,
+    0x7725, 0x773b, 0x7735, 0x7848, 0x7852, 0x7849, 0x784d, 0x784a,
+    0x784c, 0x7826, 0x7845, 0x7850, 0x7964, 0x7967, 0x7969, 0x796a,
+    0x7963, 0x796b, 0x7961, 0x79bb, 0x79fa, 0x79f8, 0x79f6, 0x79f7,
+    0x7a8f, 0x7a94, 0x7a90, 0x7b35, 0x7b47, 0x7b34, 0x7b25, 0x7b30,
+    0x7b22, 0x7b24, 0x7b33, 0x7b18, 0x7b2a, 0x7b1d, 0x7b31, 0x7b2b,
+    0x7b2d, 0x7b2f, 0x7b32, 0x7b38, 0x7b1a, 0x7b23, 0x7c94, 0x7c98,
+    0x7c96, 0x7ca3, 0x7d35, 0x7d3d, 0x7d38, 0x7d36, 0x7d3a, 0x7d45,
+    0x7d2c, 0x7d29, 0x7d41, 0x7d47, 0x7d3e, 0x7d3f, 0x7d4a, 0x7d3b,
+    0x7d28, 0x7f63, 0x7f95, 0x7f9c, 0x7f9d, 0x7f9b, 0x7fca, 0x7fcb,
+    0x7fcd, 0x7fd0, 0x7fd1, 0x7fc7, 0x7fcf, 0x7fc9, 0x801f, 0x003f,
+    /* lead byte d7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x801e, 0x801b, 0x8047, 0x8043, 0x8048, 0x8118, 0x8125, 0x8119,
+    0x811b, 0x812d, 0x811f, 0x812c, 0x811e, 0x8121, 0x8115, 0x8127,
+    0x811d, 0x8122, 0x8211, 0x8238, 0x8233, 0x823a, 0x8234, 0x8232,
+    0x8274, 0x8390, 0x83a3, 0x83a8, 0x838d, 0x837a, 0x8373, 0x83a4,
+    0x8374, 0x838f, 0x8381, 0x8395, 0x8399, 0x8375, 0x8394, 0x83a9,
+    0x837d, 0x8383, 0x838c, 0x839d, 0x839b, 0x83aa, 0x838b, 0x837e,
+    0x83a5, 0x83af, 0x8388, 0x8397, 0x83b0, 0x837f, 0x83a6, 0x8387,
+    0x83ae, 0x8376, 0x839a, 0x8659, 0x8656, 0x86bf, 0x86b7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x86c2, 0x86c1, 0x86c5, 0x86ba, 0x86b0, 0x86c8, 0x86b9,
+    0x86b3, 0x86b8, 0x86cc, 0x86b4, 0x86bb, 0x86bc, 0x86c3, 0x86bd,
+    0x86be, 0x8852, 0x8889, 0x8895, 0x88a8, 0x88a2, 0x88aa, 0x889a,
+    0x8891, 0x88a1, 0x889f, 0x8898, 0x88a7, 0x8899, 0x889b, 0x8897,
+    0x88a4, 0x88ac, 0x888c, 0x8893, 0x888e, 0x8982, 0x89d6, 0x89d9,
+    0x89d5, 0x8a30, 0x8a27, 0x8a2c, 0x8a1e, 0x8c39, 0x8c3b, 0x8c5c,
+    0x8c5d, 0x8c7d, 0x8ca5, 0x8d7d, 0x8d7b, 0x8d79, 0x8dbc, 0x8dc2,
+    0x8db9, 0x8dbf, 0x8dc1, 0x8ed8, 0x8ede, 0x8edd, 0x8edc, 0x8ed7,
+    0x8ee0, 0x8ee1, 0x9024, 0x900b, 0x9011, 0x901c, 0x900c, 0x9021,
+    0x90ef, 0x90ea, 0x90f0, 0x90f4, 0x90f2, 0x90f3, 0x90d4, 0x90eb,
+    0x90ec, 0x90e9, 0x9156, 0x9158, 0x915a, 0x9153, 0x9155, 0x91ec,
+    0x91f4, 0x91f1, 0x91f3, 0x91f8, 0x91e4, 0x91f9, 0x91ea, 0x003f,
+    /* lead byte d8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x91eb, 0x91f7, 0x91e8, 0x91ee, 0x957a, 0x9586, 0x9588, 0x967c,
+    0x966d, 0x966b, 0x9671, 0x966f, 0x96bf, 0x976a, 0x9804, 0x98e5,
+    0x9997, 0x509b, 0x5095, 0x5094, 0x509e, 0x508b, 0x50a3, 0x5083,
+    0x508c, 0x508e, 0x509d, 0x5068, 0x509c, 0x5092, 0x5082, 0x5087,
+    0x515f, 0x51d4, 0x5312, 0x5311, 0x53a4, 0x53a7, 0x5591, 0x55a8,
+    0x55a5, 0x55ad, 0x5577, 0x5645, 0x55a2, 0x5593, 0x5588, 0x558f,
+    0x55b5, 0x5581, 0x55a3, 0x5592, 0x55a4, 0x557d, 0x558c, 0x55a6,
+    0x557f, 0x5595, 0x55a1, 0x558e, 0x570c, 0x5829, 0x5837, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x5819, 0x581e, 0x5827, 0x5823, 0x5828, 0x57f5, 0x5848,
+    0x5825, 0x581c, 0x581b, 0x5833, 0x583f, 0x5836, 0x582e, 0x5839,
+    0x5838, 0x582d, 0x582c, 0x583b, 0x5961, 0x5aaf, 0x5a94, 0x5a9f,
+    0x5a7a, 0x5aa2, 0x5a9e, 0x5a78, 0x5aa6, 0x5a7c, 0x5aa5, 0x5aac,
+    0x5a95, 0x5aae, 0x5a37, 0x5a84, 0x5a8a, 0x5a97, 0x5a83, 0x5a8b,
+    0x5aa9, 0x5a7b, 0x5a7d, 0x5a8c, 0x5a9c, 0x5a8f, 0x5a93, 0x5a9d,
+    0x5bea, 0x5bcd, 0x5bcb, 0x5bd4, 0x5bd1, 0x5bca, 0x5bce, 0x5c0c,
+    0x5c30, 0x5d37, 0x5d43, 0x5d6b, 0x5d41, 0x5d4b, 0x5d3f, 0x5d35,
+    0x5d51, 0x5d4e, 0x5d55, 0x5d33, 0x5d3a, 0x5d52, 0x5d3d, 0x5d31,
+    0x5d59, 0x5d42, 0x5d39, 0x5d49, 0x5d38, 0x5d3c, 0x5d32, 0x5d36,
+    0x5d40, 0x5d45, 0x5e44, 0x5e41, 0x5f58, 0x5fa6, 0x5fa5, 0x5fab,
+    0x60c9, 0x60b9, 0x60cc, 0x60e2, 0x60ce, 0x60c4, 0x6114, 0x003f,
+    /* lead byte d9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x60f2, 0x610a, 0x6116, 0x6105, 0x60f5, 0x6113, 0x60f8, 0x60fc,
+    0x60fe, 0x60c1, 0x6103, 0x6118, 0x611d, 0x6110, 0x60ff, 0x6104,
+    0x610b, 0x624a, 0x6394, 0x63b1, 0x63b0, 0x63ce, 0x63e5, 0x63e8,
+    0x63ef, 0x63c3, 0x649d, 0x63f3, 0x63ca, 0x63e0, 0x63f6, 0x63d5,
+    0x63f2, 0x63f5, 0x6461, 0x63df, 0x63be, 0x63dd, 0x63dc, 0x63c4,
+    0x63d8, 0x63d3, 0x63c2, 0x63c7, 0x63cc, 0x63cb, 0x63c8, 0x63f0,
+    0x63d7, 0x63d9, 0x6532, 0x6567, 0x656a, 0x6564, 0x655c, 0x6568,
+    0x6565, 0x658c, 0x659d, 0x659e, 0x65ae, 0x65d0, 0x65d2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x667c, 0x666c, 0x667b, 0x6680, 0x6671, 0x6679, 0x666a,
+    0x6672, 0x6701, 0x690c, 0x68d3, 0x6904, 0x68dc, 0x692a, 0x68ec,
+    0x68ea, 0x68f1, 0x690f, 0x68d6, 0x68f7, 0x68eb, 0x68e4, 0x68f6,
+    0x6913, 0x6910, 0x68f3, 0x68e1, 0x6907, 0x68cc, 0x6908, 0x6970,
+    0x68b4, 0x6911, 0x68ef, 0x68c6, 0x6914, 0x68f8, 0x68d0, 0x68fd,
+    0x68fc, 0x68e8, 0x690b, 0x690a, 0x6917, 0x68ce, 0x68c8, 0x68dd,
+    0x68de, 0x68e6, 0x68f4, 0x68d1, 0x6906, 0x68d4, 0x68e9, 0x6915,
+    0x6925, 0x68c7, 0x6b39, 0x6b3b, 0x6b3f, 0x6b3c, 0x6b94, 0x6b97,
+    0x6b99, 0x6b95, 0x6bbd, 0x6bf0, 0x6bf2, 0x6bf3, 0x6c30, 0x6dfc,
+    0x6e46, 0x6e47, 0x6e1f, 0x6e49, 0x6e88, 0x6e3c, 0x6e3d, 0x6e45,
+    0x6e62, 0x6e2b, 0x6e3f, 0x6e41, 0x6e5d, 0x6e73, 0x6e1c, 0x6e33,
+    0x6e4b, 0x6e40, 0x6e51, 0x6e3b, 0x6e03, 0x6e2e, 0x6e5e, 0x003f,
+    /* lead byte da */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6e68, 0x6e5c, 0x6e61, 0x6e31, 0x6e28, 0x6e60, 0x6e71, 0x6e6b,
+    0x6e39, 0x6e22, 0x6e30, 0x6e53, 0x6e65, 0x6e27, 0x6e78, 0x6e64,
+    0x6e77, 0x6e55, 0x6e79, 0x6e52, 0x6e66, 0x6e35, 0x6e36, 0x6e5a,
+    0x7120, 0x711e, 0x712f, 0x70fb, 0x712e, 0x7131, 0x7123, 0x7125,
+    0x7122, 0x7132, 0x711f, 0x7128, 0x713a, 0x711b, 0x724b, 0x725a,
+    0x7288, 0x7289, 0x7286, 0x7285, 0x728b, 0x7312, 0x730b, 0x7330,
+    0x7322, 0x7331, 0x7333, 0x7327, 0x7332, 0x732d, 0x7326, 0x7323,
+    0x7335, 0x730c, 0x742e, 0x742c, 0x7430, 0x742b, 0x7416, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x741a, 0x7421, 0x742d, 0x7431, 0x7424, 0x7423, 0x741d,
+    0x7429, 0x7420, 0x7432, 0x74fb, 0x752f, 0x756f, 0x756c, 0x75e7,
+    0x75da, 0x75e1, 0x75e6, 0x75dd, 0x75df, 0x75e4, 0x75d7, 0x7695,
+    0x7692, 0x76da, 0x7746, 0x7747, 0x7744, 0x774d, 0x7745, 0x774a,
+    0x774e, 0x774b, 0x774c, 0x77de, 0x77ec, 0x7860, 0x7864, 0x7865,
+    0x785c, 0x786d, 0x7871, 0x786a, 0x786e, 0x7870, 0x7869, 0x7868,
+    0x785e, 0x7862, 0x7974, 0x7973, 0x7972, 0x7970, 0x7a02, 0x7a0a,
+    0x7a03, 0x7a0c, 0x7a04, 0x7a99, 0x7ae6, 0x7ae4, 0x7b4a, 0x7b3b,
+    0x7b44, 0x7b48, 0x7b4c, 0x7b4e, 0x7b40, 0x7b58, 0x7b45, 0x7ca2,
+    0x7c9e, 0x7ca8, 0x7ca1, 0x7d58, 0x7d6f, 0x7d63, 0x7d53, 0x7d56,
+    0x7d67, 0x7d6a, 0x7d4f, 0x7d6d, 0x7d5c, 0x7d6b, 0x7d52, 0x7d54,
+    0x7d69, 0x7d51, 0x7d5f, 0x7d4e, 0x7f3e, 0x7f3f, 0x7f65, 0x003f,
+    /* lead byte db */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7f66, 0x7fa2, 0x7fa0, 0x7fa1, 0x7fd7, 0x8051, 0x804f, 0x8050,
+    0x80fe, 0x80d4, 0x8143, 0x814a, 0x8152, 0x814f, 0x8147, 0x813d,
+    0x814d, 0x813a, 0x81e6, 0x81ee, 0x81f7, 0x81f8, 0x81f9, 0x8204,
+    0x823c, 0x823d, 0x823f, 0x8275, 0x833b, 0x83cf, 0x83f9, 0x8423,
+    0x83c0, 0x83e8, 0x8412, 0x83e7, 0x83e4, 0x83fc, 0x83f6, 0x8410,
+    0x83c6, 0x83c8, 0x83eb, 0x83e3, 0x83bf, 0x8401, 0x83dd, 0x83e5,
+    0x83d8, 0x83ff, 0x83e1, 0x83cb, 0x83ce, 0x83d6, 0x83f5, 0x83c9,
+    0x8409, 0x840f, 0x83de, 0x8411, 0x8406, 0x83c2, 0x83f3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x83d5, 0x83fa, 0x83c7, 0x83d1, 0x83ea, 0x8413, 0x83c3,
+    0x83ec, 0x83ee, 0x83c4, 0x83fb, 0x83d7, 0x83e2, 0x841b, 0x83db,
+    0x83fe, 0x86d8, 0x86e2, 0x86e6, 0x86d3, 0x86e3, 0x86da, 0x86ea,
+    0x86dd, 0x86eb, 0x86dc, 0x86ec, 0x86e9, 0x86d7, 0x86e8, 0x86d1,
+    0x8848, 0x8856, 0x8855, 0x88ba, 0x88d7, 0x88b9, 0x88b8, 0x88c0,
+    0x88be, 0x88b6, 0x88bc, 0x88b7, 0x88bd, 0x88b2, 0x8901, 0x88c9,
+    0x8995, 0x8998, 0x8997, 0x89dd, 0x89da, 0x89db, 0x8a4e, 0x8a4d,
+    0x8a39, 0x8a59, 0x8a40, 0x8a57, 0x8a58, 0x8a44, 0x8a45, 0x8a52,
+    0x8a48, 0x8a51, 0x8a4a, 0x8a4c, 0x8a4f, 0x8c5f, 0x8c81, 0x8c80,
+    0x8cba, 0x8cbe, 0x8cb0, 0x8cb9, 0x8cb5, 0x8d84, 0x8d80, 0x8d89,
+    0x8dd8, 0x8dd3, 0x8dcd, 0x8dc7, 0x8dd6, 0x8ddc, 0x8dcf, 0x8dd5,
+    0x8dd9, 0x8dc8, 0x8dd7, 0x8dc5, 0x8eef, 0x8ef7, 0x8efa, 0x003f,
+    /* lead byte dc */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8ef9, 0x8ee6, 0x8eee, 0x8ee5, 0x8ef5, 0x8ee7, 0x8ee8, 0x8ef6,
+    0x8eeb, 0x8ef1, 0x8eec, 0x8ef4, 0x8ee9, 0x902d, 0x9034, 0x902f,
+    0x9106, 0x912c, 0x9104, 0x90ff, 0x90fc, 0x9108, 0x90f9, 0x90fb,
+    0x9101, 0x9100, 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, 0x915f,
+    0x9162, 0x9160, 0x9201, 0x920a, 0x9225, 0x9203, 0x921a, 0x9226,
+    0x920f, 0x920c, 0x9200, 0x9212, 0x91ff, 0x91fd, 0x9206, 0x9204,
+    0x9227, 0x9202, 0x921c, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216,
+    0x957b, 0x958d, 0x958c, 0x9590, 0x9687, 0x967e, 0x9688, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9689, 0x9683, 0x9680, 0x96c2, 0x96c8, 0x96c3, 0x96f1,
+    0x96f0, 0x976c, 0x9770, 0x976e, 0x9807, 0x98a9, 0x98eb, 0x9ce6,
+    0x9ef9, 0x4e83, 0x4e84, 0x4eb6, 0x50bd, 0x50bf, 0x50c6, 0x50ae,
+    0x50c4, 0x50ca, 0x50b4, 0x50c8, 0x50c2, 0x50b0, 0x50c1, 0x50ba,
+    0x50b1, 0x50cb, 0x50c9, 0x50b6, 0x50b8, 0x51d7, 0x527a, 0x5278,
+    0x527b, 0x527c, 0x55c3, 0x55db, 0x55cc, 0x55d0, 0x55cb, 0x55ca,
+    0x55dd, 0x55c0, 0x55d4, 0x55c4, 0x55e9, 0x55bf, 0x55d2, 0x558d,
+    0x55cf, 0x55d5, 0x55e2, 0x55d6, 0x55c8, 0x55f2, 0x55cd, 0x55d9,
+    0x55c2, 0x5714, 0x5853, 0x5868, 0x5864, 0x584f, 0x584d, 0x5849,
+    0x586f, 0x5855, 0x584e, 0x585d, 0x5859, 0x5865, 0x585b, 0x583d,
+    0x5863, 0x5871, 0x58fc, 0x5ac7, 0x5ac4, 0x5acb, 0x5aba, 0x5ab8,
+    0x5ab1, 0x5ab5, 0x5ab0, 0x5abf, 0x5ac8, 0x5abb, 0x5ac6, 0x003f,
+    /* lead byte dd */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x5ab7, 0x5ac0, 0x5aca, 0x5ab4, 0x5ab6, 0x5acd, 0x5ab9, 0x5a90,
+    0x5bd6, 0x5bd8, 0x5bd9, 0x5c1f, 0x5c33, 0x5d71, 0x5d63, 0x5d4a,
+    0x5d65, 0x5d72, 0x5d6c, 0x5d5e, 0x5d68, 0x5d67, 0x5d62, 0x5df0,
+    0x5e4f, 0x5e4e, 0x5e4a, 0x5e4d, 0x5e4b, 0x5ec5, 0x5ecc, 0x5ec6,
+    0x5ecb, 0x5ec7, 0x5f40, 0x5faf, 0x5fad, 0x60f7, 0x6149, 0x614a,
+    0x612b, 0x6145, 0x6136, 0x6132, 0x612e, 0x6146, 0x612f, 0x614f,
+    0x6129, 0x6140, 0x6220, 0x9168, 0x6223, 0x6225, 0x6224, 0x63c5,
+    0x63f1, 0x63eb, 0x6410, 0x6412, 0x6409, 0x6420, 0x6424, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6433, 0x6443, 0x641f, 0x6415, 0x6418, 0x6439, 0x6437,
+    0x6422, 0x6423, 0x640c, 0x6426, 0x6430, 0x6428, 0x6441, 0x6435,
+    0x642f, 0x640a, 0x641a, 0x6440, 0x6425, 0x6427, 0x640b, 0x63e7,
+    0x641b, 0x642e, 0x6421, 0x640e, 0x656f, 0x6592, 0x65d3, 0x6686,
+    0x668c, 0x6695, 0x6690, 0x668b, 0x668a, 0x6699, 0x6694, 0x6678,
+    0x6720, 0x6966, 0x695f, 0x6938, 0x694e, 0x6962, 0x6971, 0x693f,
+    0x6945, 0x696a, 0x6939, 0x6942, 0x6957, 0x6959, 0x697a, 0x6948,
+    0x6949, 0x6935, 0x696c, 0x6933, 0x693d, 0x6965, 0x68f0, 0x6978,
+    0x6934, 0x6969, 0x6940, 0x696f, 0x6944, 0x6976, 0x6958, 0x6941,
+    0x6974, 0x694c, 0x693b, 0x694b, 0x6937, 0x695c, 0x694f, 0x6951,
+    0x6932, 0x6952, 0x692f, 0x697b, 0x693c, 0x6b46, 0x6b45, 0x6b43,
+    0x6b42, 0x6b48, 0x6b41, 0x6b9b, 0xfa0d, 0x6bfb, 0x6bfc, 0x003f,
+    /* lead byte de */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6bf9, 0x6bf7, 0x6bf8, 0x6e9b, 0x6ed6, 0x6ec8, 0x6e8f, 0x6ec0,
+    0x6e9f, 0x6e93, 0x6e94, 0x6ea0, 0x6eb1, 0x6eb9, 0x6ec6, 0x6ed2,
+    0x6ebd, 0x6ec1, 0x6e9e, 0x6ec9, 0x6eb7, 0x6eb0, 0x6ecd, 0x6ea6,
+    0x6ecf, 0x6eb2, 0x6ebe, 0x6ec3, 0x6edc, 0x6ed8, 0x6e99, 0x6e92,
+    0x6e8e, 0x6e8d, 0x6ea4, 0x6ea1, 0x6ebf, 0x6eb3, 0x6ed0, 0x6eca,
+    0x6e97, 0x6eae, 0x6ea3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160,
+    0x7141, 0x715d, 0x7162, 0x7172, 0x7178, 0x716a, 0x7161, 0x7142,
+    0x7158, 0x7143, 0x714b, 0x7170, 0x715f, 0x7150, 0x7153, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7144, 0x714d, 0x715a, 0x724f, 0x728d, 0x728c, 0x7291,
+    0x7290, 0x728e, 0x733c, 0x7342, 0x733b, 0x733a, 0x7340, 0x734a,
+    0x7349, 0x7444, 0x744a, 0x744b, 0x7452, 0x7451, 0x7457, 0x7440,
+    0x744f, 0x7450, 0x744e, 0x7442, 0x7446, 0x744d, 0x7454, 0x74e1,
+    0x74ff, 0x74fe, 0x74fd, 0x751d, 0x7579, 0x7577, 0x6983, 0x75ef,
+    0x760f, 0x7603, 0x75f7, 0x75fe, 0x75fc, 0x75f9, 0x75f8, 0x7610,
+    0x75fb, 0x75f6, 0x75ed, 0x75f5, 0x75fd, 0x7699, 0x76b5, 0x76dd,
+    0x7755, 0x775f, 0x7760, 0x7752, 0x7756, 0x775a, 0x7769, 0x7767,
+    0x7754, 0x7759, 0x776d, 0x77e0, 0x7887, 0x789a, 0x7894, 0x788f,
+    0x7884, 0x7895, 0x7885, 0x7886, 0x78a1, 0x7883, 0x7879, 0x7899,
+    0x7880, 0x7896, 0x787b, 0x797c, 0x7982, 0x797d, 0x7979, 0x7a11,
+    0x7a18, 0x7a19, 0x7a12, 0x7a17, 0x7a15, 0x7a22, 0x7a13, 0x003f,
+    /* lead byte df */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7a1b, 0x7a10, 0x7aa3, 0x7aa2, 0x7a9e, 0x7aeb, 0x7b66, 0x7b64,
+    0x7b6d, 0x7b74, 0x7b69, 0x7b72, 0x7b65, 0x7b73, 0x7b71, 0x7b70,
+    0x7b61, 0x7b78, 0x7b76, 0x7b63, 0x7cb2, 0x7cb4, 0x7caf, 0x7d88,
+    0x7d86, 0x7d80, 0x7d8d, 0x7d7f, 0x7d85, 0x7d7a, 0x7d8e, 0x7d7b,
+    0x7d83, 0x7d7c, 0x7d8c, 0x7d94, 0x7d84, 0x7d7d, 0x7d92, 0x7f6d,
+    0x7f6b, 0x7f67, 0x7f68, 0x7f6c, 0x7fa6, 0x7fa5, 0x7fa7, 0x7fdb,
+    0x7fdc, 0x8021, 0x8164, 0x8160, 0x8177, 0x815c, 0x8169, 0x815b,
+    0x8162, 0x8172, 0x6721, 0x815e, 0x8176, 0x8167, 0x816f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8144, 0x8161, 0x821d, 0x8249, 0x8244, 0x8240, 0x8242,
+    0x8245, 0x84f1, 0x843f, 0x8456, 0x8476, 0x8479, 0x848f, 0x848d,
+    0x8465, 0x8451, 0x8440, 0x8486, 0x8467, 0x8430, 0x844d, 0x847d,
+    0x845a, 0x8459, 0x8474, 0x8473, 0x845d, 0x8507, 0x845e, 0x8437,
+    0x843a, 0x8434, 0x847a, 0x8443, 0x8478, 0x8432, 0x8445, 0x8429,
+    0x83d9, 0x844b, 0x842f, 0x8442, 0x842d, 0x845f, 0x8470, 0x8439,
+    0x844e, 0x844c, 0x8452, 0x846f, 0x84c5, 0x848e, 0x843b, 0x8447,
+    0x8436, 0x8433, 0x8468, 0x847e, 0x8444, 0x842b, 0x8460, 0x8454,
+    0x846e, 0x8450, 0x870b, 0x8704, 0x86f7, 0x870c, 0x86fa, 0x86d6,
+    0x86f5, 0x874d, 0x86f8, 0x870e, 0x8709, 0x8701, 0x86f6, 0x870d,
+    0x8705, 0x88d6, 0x88cb, 0x88cd, 0x88ce, 0x88de, 0x88db, 0x88da,
+    0x88cc, 0x88d0, 0x8985, 0x899b, 0x89df, 0x89e5, 0x89e4, 0x003f,
+    /* lead byte e0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x89e1, 0x89e0, 0x89e2, 0x89dc, 0x89e6, 0x8a76, 0x8a86, 0x8a7f,
+    0x8a61, 0x8a3f, 0x8a77, 0x8a82, 0x8a84, 0x8a75, 0x8a83, 0x8a81,
+    0x8a74, 0x8a7a, 0x8c3c, 0x8c4b, 0x8c4a, 0x8c65, 0x8c64, 0x8c66,
+    0x8c86, 0x8c84, 0x8c85, 0x8ccc, 0x8d68, 0x8d69, 0x8d91, 0x8d8c,
+    0x8d8e, 0x8d8f, 0x8d8d, 0x8d93, 0x8d94, 0x8d90, 0x8d92, 0x8df0,
+    0x8de0, 0x8dec, 0x8df1, 0x8dee, 0x8dd0, 0x8de9, 0x8de3, 0x8de2,
+    0x8de7, 0x8df2, 0x8deb, 0x8df4, 0x8f06, 0x8eff, 0x8f01, 0x8f00,
+    0x8f05, 0x8f07, 0x8f08, 0x8f02, 0x8f0b, 0x9052, 0x903f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9044, 0x9049, 0x903d, 0x9110, 0x910d, 0x910f, 0x9111,
+    0x9116, 0x9114, 0x910b, 0x910e, 0x916e, 0x916f, 0x9248, 0x9252,
+    0x9230, 0x923a, 0x9266, 0x9233, 0x9265, 0x925e, 0x9283, 0x922e,
+    0x924a, 0x9246, 0x926d, 0x926c, 0x924f, 0x9260, 0x9267, 0x926f,
+    0x9236, 0x9261, 0x9270, 0x9231, 0x9254, 0x9263, 0x9250, 0x9272,
+    0x924e, 0x9253, 0x924c, 0x9256, 0x9232, 0x959f, 0x959c, 0x959e,
+    0x959b, 0x9692, 0x9693, 0x9691, 0x9697, 0x96ce, 0x96fa, 0x96fd,
+    0x96f8, 0x96f5, 0x9773, 0x9777, 0x9778, 0x9772, 0x980f, 0x980d,
+    0x980e, 0x98ac, 0x98f6, 0x98f9, 0x99af, 0x99b2, 0x99b0, 0x99b5,
+    0x9aad, 0x9aab, 0x9b5b, 0x9cea, 0x9ced, 0x9ce7, 0x9e80, 0x9efd,
+    0x50e6, 0x50d4, 0x50d7, 0x50e8, 0x50f3, 0x50db, 0x50ea, 0x50dd,
+    0x50e4, 0x50d3, 0x50ec, 0x50f0, 0x50ef, 0x50e3, 0x50e0, 0x003f,
+    /* lead byte e1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x51d8, 0x5280, 0x5281, 0x52e9, 0x52eb, 0x5330, 0x53ac, 0x5627,
+    0x5615, 0x560c, 0x5612, 0x55fc, 0x560f, 0x561c, 0x5601, 0x5613,
+    0x5602, 0x55fa, 0x561d, 0x5604, 0x55ff, 0x55f9, 0x5889, 0x587c,
+    0x5890, 0x5898, 0x5886, 0x5881, 0x587f, 0x5874, 0x588b, 0x587a,
+    0x5887, 0x5891, 0x588e, 0x5876, 0x5882, 0x5888, 0x587b, 0x5894,
+    0x588f, 0x58fe, 0x596b, 0x5adc, 0x5aee, 0x5ae5, 0x5ad5, 0x5aea,
+    0x5ada, 0x5aed, 0x5aeb, 0x5af3, 0x5ae2, 0x5ae0, 0x5adb, 0x5aec,
+    0x5ade, 0x5add, 0x5ad9, 0x5ae8, 0x5adf, 0x5b77, 0x5be0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x5be3, 0x5c63, 0x5d82, 0x5d80, 0x5d7d, 0x5d86, 0x5d7a,
+    0x5d81, 0x5d77, 0x5d8a, 0x5d89, 0x5d88, 0x5d7e, 0x5d7c, 0x5d8d,
+    0x5d79, 0x5d7f, 0x5e58, 0x5e59, 0x5e53, 0x5ed8, 0x5ed1, 0x5ed7,
+    0x5ece, 0x5edc, 0x5ed5, 0x5ed9, 0x5ed2, 0x5ed4, 0x5f44, 0x5f43,
+    0x5f6f, 0x5fb6, 0x612c, 0x6128, 0x6141, 0x615e, 0x6171, 0x6173,
+    0x6152, 0x6153, 0x6172, 0x616c, 0x6180, 0x6174, 0x6154, 0x617a,
+    0x615b, 0x6165, 0x613b, 0x616a, 0x6161, 0x6156, 0x6229, 0x6227,
+    0x622b, 0x642b, 0x644d, 0x645b, 0x645d, 0x6474, 0x6476, 0x6472,
+    0x6473, 0x647d, 0x6475, 0x6466, 0x64a6, 0x644e, 0x6482, 0x645e,
+    0x645c, 0x644b, 0x6453, 0x6460, 0x6450, 0x647f, 0x643f, 0x646c,
+    0x646b, 0x6459, 0x6465, 0x6477, 0x6573, 0x65a0, 0x66a1, 0x66a0,
+    0x669f, 0x6705, 0x6704, 0x6722, 0x69b1, 0x69b6, 0x69c9, 0x003f,
+    /* lead byte e2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x69a0, 0x69ce, 0x6996, 0x69b0, 0x69ac, 0x69bc, 0x6991, 0x6999,
+    0x698e, 0x69a7, 0x698d, 0x69a9, 0x69be, 0x69af, 0x69bf, 0x69c4,
+    0x69bd, 0x69a4, 0x69d4, 0x69b9, 0x69ca, 0x699a, 0x69cf, 0x69b3,
+    0x6993, 0x69aa, 0x69a1, 0x699e, 0x69d9, 0x6997, 0x6990, 0x69c2,
+    0x69b5, 0x69a5, 0x69c6, 0x6b4a, 0x6b4d, 0x6b4b, 0x6b9e, 0x6b9f,
+    0x6ba0, 0x6bc3, 0x6bc4, 0x6bfe, 0x6ece, 0x6ef5, 0x6ef1, 0x6f03,
+    0x6f25, 0x6ef8, 0x6f37, 0x6efb, 0x6f2e, 0x6f09, 0x6f4e, 0x6f19,
+    0x6f1a, 0x6f27, 0x6f18, 0x6f3b, 0x6f12, 0x6eed, 0x6f0a, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x6f36, 0x6f73, 0x6ef9, 0x6eee, 0x6f2d, 0x6f40, 0x6f30,
+    0x6f3c, 0x6f35, 0x6eeb, 0x6f07, 0x6f0e, 0x6f43, 0x6f05, 0x6efd,
+    0x6ef6, 0x6f39, 0x6f1c, 0x6efc, 0x6f3a, 0x6f1f, 0x6f0d, 0x6f1e,
+    0x6f08, 0x6f21, 0x7187, 0x7190, 0x7189, 0x7180, 0x7185, 0x7182,
+    0x718f, 0x717b, 0x7186, 0x7181, 0x7197, 0x7244, 0x7253, 0x7297,
+    0x7295, 0x7293, 0x7343, 0x734d, 0x7351, 0x734c, 0x7462, 0x7473,
+    0x7471, 0x7475, 0x7472, 0x7467, 0x746e, 0x7500, 0x7502, 0x7503,
+    0x757d, 0x7590, 0x7616, 0x7608, 0x760c, 0x7615, 0x7611, 0x760a,
+    0x7614, 0x76b8, 0x7781, 0x777c, 0x7785, 0x7782, 0x776e, 0x7780,
+    0x776f, 0x777e, 0x7783, 0x78b2, 0x78aa, 0x78b4, 0x78ad, 0x78a8,
+    0x787e, 0x78ab, 0x789e, 0x78a5, 0x78a0, 0x78ac, 0x78a2, 0x78a4,
+    0x7998, 0x798a, 0x798b, 0x7996, 0x7995, 0x7994, 0x7993, 0x003f,
+    /* lead byte e3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7997, 0x7988, 0x7992, 0x7990, 0x7a2b, 0x7a4a, 0x7a30, 0x7a2f,
+    0x7a28, 0x7a26, 0x7aa8, 0x7aab, 0x7aac, 0x7aee, 0x7b88, 0x7b9c,
+    0x7b8a, 0x7b91, 0x7b90, 0x7b96, 0x7b8d, 0x7b8c, 0x7b9b, 0x7b8e,
+    0x7b85, 0x7b98, 0x5284, 0x7b99, 0x7ba4, 0x7b82, 0x7cbb, 0x7cbf,
+    0x7cbc, 0x7cba, 0x7da7, 0x7db7, 0x7dc2, 0x7da3, 0x7daa, 0x7dc1,
+    0x7dc0, 0x7dc5, 0x7d9d, 0x7dce, 0x7dc4, 0x7dc6, 0x7dcb, 0x7dcc,
+    0x7daf, 0x7db9, 0x7d96, 0x7dbc, 0x7d9f, 0x7da6, 0x7dae, 0x7da9,
+    0x7da1, 0x7dc9, 0x7f73, 0x7fe2, 0x7fe3, 0x7fe5, 0x7fde, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8024, 0x805d, 0x805c, 0x8189, 0x8186, 0x8183, 0x8187,
+    0x818d, 0x818c, 0x818b, 0x8215, 0x8497, 0x84a4, 0x84a1, 0x849f,
+    0x84ba, 0x84ce, 0x84c2, 0x84ac, 0x84ae, 0x84ab, 0x84b9, 0x84b4,
+    0x84c1, 0x84cd, 0x84aa, 0x849a, 0x84b1, 0x84d0, 0x849d, 0x84a7,
+    0x84bb, 0x84a2, 0x8494, 0x84c7, 0x84cc, 0x849b, 0x84a9, 0x84af,
+    0x84a8, 0x84d6, 0x8498, 0x84b6, 0x84cf, 0x84a0, 0x84d7, 0x84d4,
+    0x84d2, 0x84db, 0x84b0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728,
+    0x876b, 0x8740, 0x872e, 0x871e, 0x8721, 0x8719, 0x871b, 0x8743,
+    0x872c, 0x8741, 0x873e, 0x8746, 0x8720, 0x8732, 0x872a, 0x872d,
+    0x873c, 0x8712, 0x873a, 0x8731, 0x8735, 0x8742, 0x8726, 0x8727,
+    0x8738, 0x8724, 0x871a, 0x8730, 0x8711, 0x88f7, 0x88e7, 0x88f1,
+    0x88f2, 0x88fa, 0x88fe, 0x88ee, 0x88fc, 0x88f6, 0x88fb, 0x003f,
+    /* lead byte e4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x88f0, 0x88ec, 0x88eb, 0x899d, 0x89a1, 0x899f, 0x899e, 0x89e9,
+    0x89eb, 0x89e8, 0x8aab, 0x8a99, 0x8a8b, 0x8a92, 0x8a8f, 0x8a96,
+    0x8c3d, 0x8c68, 0x8c69, 0x8cd5, 0x8ccf, 0x8cd7, 0x8d96, 0x8e09,
+    0x8e02, 0x8dff, 0x8e0d, 0x8dfd, 0x8e0a, 0x8e03, 0x8e07, 0x8e06,
+    0x8e05, 0x8dfe, 0x8e00, 0x8e04, 0x8f10, 0x8f11, 0x8f0e, 0x8f0d,
+    0x9123, 0x911c, 0x9120, 0x9122, 0x911f, 0x911d, 0x911a, 0x9124,
+    0x9121, 0x911b, 0x917a, 0x9172, 0x9179, 0x9173, 0x92a5, 0x92a4,
+    0x9276, 0x929b, 0x927a, 0x92a0, 0x9294, 0x92aa, 0x928d, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x92a6, 0x929a, 0x92ab, 0x9279, 0x9297, 0x927f, 0x92a3,
+    0x92ee, 0x928e, 0x9282, 0x9295, 0x92a2, 0x927d, 0x9288, 0x92a1,
+    0x928a, 0x9286, 0x928c, 0x9299, 0x92a7, 0x927e, 0x9287, 0x92a9,
+    0x929d, 0x928b, 0x922d, 0x969e, 0x96a1, 0x96ff, 0x9758, 0x977d,
+    0x977a, 0x977e, 0x9783, 0x9780, 0x9782, 0x977b, 0x9784, 0x9781,
+    0x977f, 0x97ce, 0x97cd, 0x9816, 0x98ad, 0x98ae, 0x9902, 0x9900,
+    0x9907, 0x999d, 0x999c, 0x99c3, 0x99b9, 0x99bb, 0x99ba, 0x99c2,
+    0x99bd, 0x99c7, 0x9ab1, 0x9ae3, 0x9ae7, 0x9b3e, 0x9b3f, 0x9b60,
+    0x9b61, 0x9b5f, 0x9cf1, 0x9cf2, 0x9cf5, 0x9ea7, 0x50ff, 0x5103,
+    0x5130, 0x50f8, 0x5106, 0x5107, 0x50f6, 0x50fe, 0x510b, 0x510c,
+    0x50fd, 0x510a, 0x528b, 0x528c, 0x52f1, 0x52ef, 0x5648, 0x5642,
+    0x564c, 0x5635, 0x5641, 0x564a, 0x5649, 0x5646, 0x5658, 0x003f,
+    /* lead byte e5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x565a, 0x5640, 0x5633, 0x563d, 0x562c, 0x563e, 0x5638, 0x562a,
+    0x563a, 0x571a, 0x58ab, 0x589d, 0x58b1, 0x58a0, 0x58a3, 0x58af,
+    0x58ac, 0x58a5, 0x58a1, 0x58ff, 0x5aff, 0x5af4, 0x5afd, 0x5af7,
+    0x5af6, 0x5b03, 0x5af8, 0x5b02, 0x5af9, 0x5b01, 0x5b07, 0x5b05,
+    0x5b0f, 0x5c67, 0x5d99, 0x5d97, 0x5d9f, 0x5d92, 0x5da2, 0x5d93,
+    0x5d95, 0x5da0, 0x5d9c, 0x5da1, 0x5d9a, 0x5d9e, 0x5e69, 0x5e5d,
+    0x5e60, 0x5e5c, 0x7df3, 0x5edb, 0x5ede, 0x5ee1, 0x5f49, 0x5fb2,
+    0x618b, 0x6183, 0x6179, 0x61b1, 0x61b0, 0x61a2, 0x6189, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x619b, 0x6193, 0x61af, 0x61ad, 0x619f, 0x6192, 0x61aa,
+    0x61a1, 0x618d, 0x6166, 0x61b3, 0x622d, 0x646e, 0x6470, 0x6496,
+    0x64a0, 0x6485, 0x6497, 0x649c, 0x648f, 0x648b, 0x648a, 0x648c,
+    0x64a3, 0x649f, 0x6468, 0x64b1, 0x6498, 0x6576, 0x657a, 0x6579,
+    0x657b, 0x65b2, 0x65b3, 0x66b5, 0x66b0, 0x66a9, 0x66b2, 0x66b7,
+    0x66aa, 0x66af, 0x6a00, 0x6a06, 0x6a17, 0x69e5, 0x69f8, 0x6a15,
+    0x69f1, 0x69e4, 0x6a20, 0x69ff, 0x69ec, 0x69e2, 0x6a1b, 0x6a1d,
+    0x69fe, 0x6a27, 0x69f2, 0x69ee, 0x6a14, 0x69f7, 0x69e7, 0x6a40,
+    0x6a08, 0x69e6, 0x69fb, 0x6a0d, 0x69fc, 0x69eb, 0x6a09, 0x6a04,
+    0x6a18, 0x6a25, 0x6a0f, 0x69f6, 0x6a26, 0x6a07, 0x69f4, 0x6a16,
+    0x6b51, 0x6ba5, 0x6ba3, 0x6ba2, 0x6ba6, 0x6c01, 0x6c00, 0x6bff,
+    0x6c02, 0x6f41, 0x6f26, 0x6f7e, 0x6f87, 0x6fc6, 0x6f92, 0x003f,
+    /* lead byte e6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6f8d, 0x6f89, 0x6f8c, 0x6f62, 0x6f4f, 0x6f85, 0x6f5a, 0x6f96,
+    0x6f76, 0x6f6c, 0x6f82, 0x6f55, 0x6f72, 0x6f52, 0x6f50, 0x6f57,
+    0x6f94, 0x6f93, 0x6f5d, 0x6f00, 0x6f61, 0x6f6b, 0x6f7d, 0x6f67,
+    0x6f90, 0x6f53, 0x6f8b, 0x6f69, 0x6f7f, 0x6f95, 0x6f63, 0x6f77,
+    0x6f6a, 0x6f7b, 0x71b2, 0x71af, 0x719b, 0x71b0, 0x71a0, 0x719a,
+    0x71a9, 0x71b5, 0x719d, 0x71a5, 0x719e, 0x71a4, 0x71a1, 0x71aa,
+    0x719c, 0x71a7, 0x71b3, 0x7298, 0x729a, 0x7358, 0x7352, 0x735e,
+    0x735f, 0x7360, 0x735d, 0x735b, 0x7361, 0x735a, 0x7359, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7362, 0x7487, 0x7489, 0x748a, 0x7486, 0x7481, 0x747d,
+    0x7485, 0x7488, 0x747c, 0x7479, 0x7508, 0x7507, 0x757e, 0x7625,
+    0x761e, 0x7619, 0x761d, 0x761c, 0x7623, 0x761a, 0x7628, 0x761b,
+    0x769c, 0x769d, 0x769e, 0x769b, 0x778d, 0x778f, 0x7789, 0x7788,
+    0x78cd, 0x78bb, 0x78cf, 0x78cc, 0x78d1, 0x78ce, 0x78d4, 0x78c8,
+    0x78c3, 0x78c4, 0x78c9, 0x799a, 0x79a1, 0x79a0, 0x799c, 0x79a2,
+    0x799b, 0x6b76, 0x7a39, 0x7ab2, 0x7ab4, 0x7ab3, 0x7bb7, 0x7bcb,
+    0x7bbe, 0x7bac, 0x7bce, 0x7baf, 0x7bb9, 0x7bca, 0x7bb5, 0x7cc5,
+    0x7cc8, 0x7ccc, 0x7ccb, 0x7df7, 0x7ddb, 0x7dea, 0x7de7, 0x7dd7,
+    0x7de1, 0x7e03, 0x7dfa, 0x7de6, 0x7df6, 0x7df1, 0x7df0, 0x7dee,
+    0x7ddf, 0x7f76, 0x7fac, 0x7fb0, 0x7fad, 0x7fed, 0x7feb, 0x7fea,
+    0x7fec, 0x7fe6, 0x7fe8, 0x8064, 0x8067, 0x81a3, 0x819f, 0x003f,
+    /* lead byte e7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x819e, 0x8195, 0x81a2, 0x8199, 0x8197, 0x8216, 0x824f, 0x8253,
+    0x8252, 0x8250, 0x824e, 0x8251, 0x8524, 0x853b, 0x850f, 0x8500,
+    0x8529, 0x850e, 0x8509, 0x850d, 0x851f, 0x850a, 0x8527, 0x851c,
+    0x84fb, 0x852b, 0x84fa, 0x8508, 0x850c, 0x84f4, 0x852a, 0x84f2,
+    0x8515, 0x84f7, 0x84eb, 0x84f3, 0x84fc, 0x8512, 0x84ea, 0x84e9,
+    0x8516, 0x84fe, 0x8528, 0x851d, 0x852e, 0x8502, 0x84fd, 0x851e,
+    0x84f6, 0x8531, 0x8526, 0x84e7, 0x84e8, 0x84f0, 0x84ef, 0x84f9,
+    0x8518, 0x8520, 0x8530, 0x850b, 0x8519, 0x852f, 0x8662, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8756, 0x8763, 0x8764, 0x8777, 0x87e1, 0x8773, 0x8758,
+    0x8754, 0x875b, 0x8752, 0x8761, 0x875a, 0x8751, 0x875e, 0x876d,
+    0x876a, 0x8750, 0x874e, 0x875f, 0x875d, 0x876f, 0x876c, 0x877a,
+    0x876e, 0x875c, 0x8765, 0x874f, 0x877b, 0x8775, 0x8762, 0x8767,
+    0x8769, 0x885a, 0x8905, 0x890c, 0x8914, 0x890b, 0x8917, 0x8918,
+    0x8919, 0x8906, 0x8916, 0x8911, 0x890e, 0x8909, 0x89a2, 0x89a4,
+    0x89a3, 0x89ed, 0x89f0, 0x89ec, 0x8acf, 0x8ac6, 0x8ab8, 0x8ad3,
+    0x8ad1, 0x8ad4, 0x8ad5, 0x8abb, 0x8ad7, 0x8abe, 0x8ac0, 0x8ac5,
+    0x8ad8, 0x8ac3, 0x8aba, 0x8abd, 0x8ad9, 0x8c3e, 0x8c4d, 0x8c8f,
+    0x8ce5, 0x8cdf, 0x8cd9, 0x8ce8, 0x8cda, 0x8cdd, 0x8ce7, 0x8da0,
+    0x8d9c, 0x8da1, 0x8d9b, 0x8e20, 0x8e23, 0x8e25, 0x8e24, 0x8e2e,
+    0x8e15, 0x8e1b, 0x8e16, 0x8e11, 0x8e19, 0x8e26, 0x8e27, 0x003f,
+    /* lead byte e8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8e14, 0x8e12, 0x8e18, 0x8e13, 0x8e1c, 0x8e17, 0x8e1a, 0x8f2c,
+    0x8f24, 0x8f18, 0x8f1a, 0x8f20, 0x8f23, 0x8f16, 0x8f17, 0x9073,
+    0x9070, 0x906f, 0x9067, 0x906b, 0x912f, 0x912b, 0x9129, 0x912a,
+    0x9132, 0x9126, 0x912e, 0x9185, 0x9186, 0x918a, 0x9181, 0x9182,
+    0x9184, 0x9180, 0x92d0, 0x92c3, 0x92c4, 0x92c0, 0x92d9, 0x92b6,
+    0x92cf, 0x92f1, 0x92df, 0x92d8, 0x92e9, 0x92d7, 0x92dd, 0x92cc,
+    0x92ef, 0x92c2, 0x92e8, 0x92ca, 0x92c8, 0x92ce, 0x92e6, 0x92cd,
+    0x92d5, 0x92c9, 0x92e0, 0x92de, 0x92e7, 0x92d1, 0x92d3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x92b5, 0x92e1, 0x92c6, 0x92b4, 0x957c, 0x95ac, 0x95ab,
+    0x95ae, 0x95b0, 0x96a4, 0x96a2, 0x96d3, 0x9705, 0x9708, 0x9702,
+    0x975a, 0x978a, 0x978e, 0x9788, 0x97d0, 0x97cf, 0x981e, 0x981d,
+    0x9826, 0x9829, 0x9828, 0x9820, 0x981b, 0x9827, 0x98b2, 0x9908,
+    0x98fa, 0x9911, 0x9914, 0x9916, 0x9917, 0x9915, 0x99dc, 0x99cd,
+    0x99cf, 0x99d3, 0x99d4, 0x99ce, 0x99c9, 0x99d6, 0x99d8, 0x99cb,
+    0x99d7, 0x99cc, 0x9ab3, 0x9aec, 0x9aeb, 0x9af3, 0x9af2, 0x9af1,
+    0x9b46, 0x9b43, 0x9b67, 0x9b74, 0x9b71, 0x9b66, 0x9b76, 0x9b75,
+    0x9b70, 0x9b68, 0x9b64, 0x9b6c, 0x9cfc, 0x9cfa, 0x9cfd, 0x9cff,
+    0x9cf7, 0x9d07, 0x9d00, 0x9cf9, 0x9cfb, 0x9d08, 0x9d05, 0x9d04,
+    0x9e83, 0x9ed3, 0x9f0f, 0x9f10, 0x511c, 0x5113, 0x5117, 0x511a,
+    0x5111, 0x51de, 0x5334, 0x53e1, 0x5670, 0x5660, 0x566e, 0x003f,
+    /* lead byte e9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x5673, 0x5666, 0x5663, 0x566d, 0x5672, 0x565e, 0x5677, 0x571c,
+    0x571b, 0x58c8, 0x58bd, 0x58c9, 0x58bf, 0x58ba, 0x58c2, 0x58bc,
+    0x58c6, 0x5b17, 0x5b19, 0x5b1b, 0x5b21, 0x5b14, 0x5b13, 0x5b10,
+    0x5b16, 0x5b28, 0x5b1a, 0x5b20, 0x5b1e, 0x5bef, 0x5dac, 0x5db1,
+    0x5da9, 0x5da7, 0x5db5, 0x5db0, 0x5dae, 0x5daa, 0x5da8, 0x5db2,
+    0x5dad, 0x5daf, 0x5db4, 0x5e67, 0x5e68, 0x5e66, 0x5e6f, 0x5ee9,
+    0x5ee7, 0x5ee6, 0x5ee8, 0x5ee5, 0x5f4b, 0x5fbc, 0x619d, 0x61a8,
+    0x6196, 0x61c5, 0x61b4, 0x61c6, 0x61c1, 0x61cc, 0x61ba, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x61bf, 0x61b8, 0x618c, 0x64d7, 0x64d6, 0x64d0, 0x64cf,
+    0x64c9, 0x64bd, 0x6489, 0x64c3, 0x64db, 0x64f3, 0x64d9, 0x6533,
+    0x657f, 0x657c, 0x65a2, 0x66c8, 0x66be, 0x66c0, 0x66ca, 0x66cb,
+    0x66cf, 0x66bd, 0x66bb, 0x66ba, 0x66cc, 0x6723, 0x6a34, 0x6a66,
+    0x6a49, 0x6a67, 0x6a32, 0x6a68, 0x6a3e, 0x6a5d, 0x6a6d, 0x6a76,
+    0x6a5b, 0x6a51, 0x6a28, 0x6a5a, 0x6a3b, 0x6a3f, 0x6a41, 0x6a6a,
+    0x6a64, 0x6a50, 0x6a4f, 0x6a54, 0x6a6f, 0x6a69, 0x6a60, 0x6a3c,
+    0x6a5e, 0x6a56, 0x6a55, 0x6a4d, 0x6a4e, 0x6a46, 0x6b55, 0x6b54,
+    0x6b56, 0x6ba7, 0x6baa, 0x6bab, 0x6bc8, 0x6bc7, 0x6c04, 0x6c03,
+    0x6c06, 0x6fad, 0x6fcb, 0x6fa3, 0x6fc7, 0x6fbc, 0x6fce, 0x6fc8,
+    0x6f5e, 0x6fc4, 0x6fbd, 0x6f9e, 0x6fca, 0x6fa8, 0x7004, 0x6fa5,
+    0x6fae, 0x6fba, 0x6fac, 0x6faa, 0x6fcf, 0x6fbf, 0x6fb8, 0x003f,
+    /* lead byte ea */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6fa2, 0x6fc9, 0x6fab, 0x6fcd, 0x6faf, 0x6fb2, 0x6fb0, 0x71c5,
+    0x71c2, 0x71bf, 0x71b8, 0x71d6, 0x71c0, 0x71c1, 0x71cb, 0x71d4,
+    0x71ca, 0x71c7, 0x71cf, 0x71bd, 0x71d8, 0x71bc, 0x71c6, 0x71da,
+    0x71db, 0x729d, 0x729e, 0x7369, 0x7366, 0x7367, 0x736c, 0x7365,
+    0x736b, 0x736a, 0x747f, 0x749a, 0x74a0, 0x7494, 0x7492, 0x7495,
+    0x74a1, 0x750b, 0x7580, 0x762f, 0x762d, 0x7631, 0x763d, 0x7633,
+    0x763c, 0x7635, 0x7632, 0x7630, 0x76bb, 0x76e6, 0x779a, 0x779d,
+    0x77a1, 0x779c, 0x779b, 0x77a2, 0x77a3, 0x7795, 0x7799, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7797, 0x78dd, 0x78e9, 0x78e5, 0x78ea, 0x78de, 0x78e3,
+    0x78db, 0x78e1, 0x78e2, 0x78ed, 0x78df, 0x78e0, 0x79a4, 0x7a44,
+    0x7a48, 0x7a47, 0x7ab6, 0x7ab8, 0x7ab5, 0x7ab1, 0x7ab7, 0x7bde,
+    0x7be3, 0x7be7, 0x7bdd, 0x7bd5, 0x7be5, 0x7bda, 0x7be8, 0x7bf9,
+    0x7bd4, 0x7bea, 0x7be2, 0x7bdc, 0x7beb, 0x7bd8, 0x7bdf, 0x7cd2,
+    0x7cd4, 0x7cd7, 0x7cd0, 0x7cd1, 0x7e12, 0x7e21, 0x7e17, 0x7e0c,
+    0x7e1f, 0x7e20, 0x7e13, 0x7e0e, 0x7e1c, 0x7e15, 0x7e1a, 0x7e22,
+    0x7e0b, 0x7e0f, 0x7e16, 0x7e0d, 0x7e14, 0x7e25, 0x7e24, 0x7f43,
+    0x7f7b, 0x7f7c, 0x7f7a, 0x7fb1, 0x7fef, 0x802a, 0x8029, 0x806c,
+    0x81b1, 0x81a6, 0x81ae, 0x81b9, 0x81b5, 0x81ab, 0x81b0, 0x81ac,
+    0x81b4, 0x81b2, 0x81b7, 0x81a7, 0x81f2, 0x8255, 0x8256, 0x8257,
+    0x8556, 0x8545, 0x856b, 0x854d, 0x8553, 0x8561, 0x8558, 0x003f,
+    /* lead byte eb */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, 0x8551, 0x8547,
+    0x8563, 0x853e, 0x855b, 0x8571, 0x854e, 0x856e, 0x8575, 0x8555,
+    0x8567, 0x8560, 0x858c, 0x8566, 0x855d, 0x8554, 0x8565, 0x856c,
+    0x8663, 0x8665, 0x8664, 0x879b, 0x878f, 0x8797, 0x8793, 0x8792,
+    0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787, 0x87a3, 0x8785,
+    0x8790, 0x8791, 0x879d, 0x8784, 0x8794, 0x879c, 0x879a, 0x8789,
+    0x891e, 0x8926, 0x8930, 0x892d, 0x892e, 0x8927, 0x8931, 0x8922,
+    0x8929, 0x8923, 0x892f, 0x892c, 0x891f, 0x89f1, 0x8ae0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8ae2, 0x8af2, 0x8af4, 0x8af5, 0x8add, 0x8b14, 0x8ae4,
+    0x8adf, 0x8af0, 0x8ac8, 0x8ade, 0x8ae1, 0x8ae8, 0x8aff, 0x8aef,
+    0x8afb, 0x8c91, 0x8c92, 0x8c90, 0x8cf5, 0x8cee, 0x8cf1, 0x8cf0,
+    0x8cf3, 0x8d6c, 0x8d6e, 0x8da5, 0x8da7, 0x8e33, 0x8e3e, 0x8e38,
+    0x8e40, 0x8e45, 0x8e36, 0x8e3c, 0x8e3d, 0x8e41, 0x8e30, 0x8e3f,
+    0x8ebd, 0x8f36, 0x8f2e, 0x8f35, 0x8f32, 0x8f39, 0x8f37, 0x8f34,
+    0x9076, 0x9079, 0x907b, 0x9086, 0x90fa, 0x9133, 0x9135, 0x9136,
+    0x9193, 0x9190, 0x9191, 0x918d, 0x918f, 0x9327, 0x931e, 0x9308,
+    0x931f, 0x9306, 0x930f, 0x937a, 0x9338, 0x933c, 0x931b, 0x9323,
+    0x9312, 0x9301, 0x9346, 0x932d, 0x930e, 0x930d, 0x92cb, 0x931d,
+    0x92fa, 0x9325, 0x9313, 0x92f9, 0x92f7, 0x9334, 0x9302, 0x9324,
+    0x92ff, 0x9329, 0x9339, 0x9335, 0x932a, 0x9314, 0x930c, 0x003f,
+    /* lead byte ec */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x930b, 0x92fe, 0x9309, 0x9300, 0x92fb, 0x9316, 0x95bc, 0x95cd,
+    0x95be, 0x95b9, 0x95ba, 0x95b6, 0x95bf, 0x95b5, 0x95bd, 0x96a9,
+    0x96d4, 0x970b, 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97f0,
+    0x97f8, 0x9835, 0x982f, 0x9832, 0x9924, 0x991f, 0x9927, 0x9929,
+    0x999e, 0x99ee, 0x99ec, 0x99e5, 0x99e4, 0x99f0, 0x99e3, 0x99ea,
+    0x99e9, 0x99e7, 0x9ab9, 0x9abf, 0x9ab4, 0x9abb, 0x9af6, 0x9afa,
+    0x9af9, 0x9af7, 0x9b33, 0x9b80, 0x9b85, 0x9b87, 0x9b7c, 0x9b7e,
+    0x9b7b, 0x9b82, 0x9b93, 0x9b92, 0x9b90, 0x9b7a, 0x9b95, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9b7d, 0x9b88, 0x9d25, 0x9d17, 0x9d20, 0x9d1e, 0x9d14,
+    0x9d29, 0x9d1d, 0x9d18, 0x9d22, 0x9d10, 0x9d19, 0x9d1f, 0x9e88,
+    0x9e86, 0x9e87, 0x9eae, 0x9ead, 0x9ed5, 0x9ed6, 0x9efa, 0x9f12,
+    0x9f3d, 0x5126, 0x5125, 0x5122, 0x5124, 0x5120, 0x5129, 0x52f4,
+    0x5693, 0x568c, 0x568d, 0x5686, 0x5684, 0x5683, 0x567e, 0x5682,
+    0x567f, 0x5681, 0x58d6, 0x58d4, 0x58cf, 0x58d2, 0x5b2d, 0x5b25,
+    0x5b32, 0x5b23, 0x5b2c, 0x5b27, 0x5b26, 0x5b2f, 0x5b2e, 0x5b7b,
+    0x5bf1, 0x5bf2, 0x5db7, 0x5e6c, 0x5e6a, 0x5fbe, 0x5fbb, 0x61c3,
+    0x61b5, 0x61bc, 0x61e7, 0x61e0, 0x61e5, 0x61e4, 0x61e8, 0x61de,
+    0x64ef, 0x64e9, 0x64e3, 0x64eb, 0x64e4, 0x64e8, 0x6581, 0x6580,
+    0x65b6, 0x65da, 0x66d2, 0x6a8d, 0x6a96, 0x6a81, 0x6aa5, 0x6a89,
+    0x6a9f, 0x6a9b, 0x6aa1, 0x6a9e, 0x6a87, 0x6a93, 0x6a8e, 0x003f,
+    /* lead byte ed */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x6a95, 0x6a83, 0x6aa8, 0x6aa4, 0x6a91, 0x6a7f, 0x6aa6, 0x6a9a,
+    0x6a85, 0x6a8c, 0x6a92, 0x6b5b, 0x6bad, 0x6c09, 0x6fcc, 0x6fa9,
+    0x6ff4, 0x6fd4, 0x6fe3, 0x6fdc, 0x6fed, 0x6fe7, 0x6fe6, 0x6fde,
+    0x6ff2, 0x6fdd, 0x6fe2, 0x6fe8, 0x71e1, 0x71f1, 0x71e8, 0x71f2,
+    0x71e4, 0x71f0, 0x71e2, 0x7373, 0x736e, 0x736f, 0x7497, 0x74b2,
+    0x74ab, 0x7490, 0x74aa, 0x74ad, 0x74b1, 0x74a5, 0x74af, 0x7510,
+    0x7511, 0x7512, 0x750f, 0x7584, 0x7643, 0x7648, 0x7649, 0x7647,
+    0x76a4, 0x76e9, 0x77b5, 0x77ab, 0x77b2, 0x77b7, 0x77b6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x77b4, 0x77b1, 0x77a8, 0x77f0, 0x78f3, 0x78fd, 0x7902,
+    0x78fb, 0x78fc, 0x78f2, 0x7905, 0x78f9, 0x78fe, 0x7904, 0x79ab,
+    0x79a8, 0x7a5c, 0x7a5b, 0x7a56, 0x7a58, 0x7a54, 0x7a5a, 0x7abe,
+    0x7ac0, 0x7ac1, 0x7c05, 0x7c0f, 0x7bf2, 0x7c00, 0x7bff, 0x7bfb,
+    0x7c0e, 0x7bf4, 0x7c0b, 0x7bf3, 0x7c02, 0x7c09, 0x7c03, 0x7c01,
+    0x7bf8, 0x7bfd, 0x7c06, 0x7bf0, 0x7bf1, 0x7c10, 0x7c0a, 0x7ce8,
+    0x7e2d, 0x7e3c, 0x7e42, 0x7e33, 0x9848, 0x7e38, 0x7e2a, 0x7e49,
+    0x7e40, 0x7e47, 0x7e29, 0x7e4c, 0x7e30, 0x7e3b, 0x7e36, 0x7e44,
+    0x7e3a, 0x7f45, 0x7f7f, 0x7f7e, 0x7f7d, 0x7ff4, 0x7ff2, 0x802c,
+    0x81bb, 0x81c4, 0x81cc, 0x81ca, 0x81c5, 0x81c7, 0x81bc, 0x81e9,
+    0x825b, 0x825a, 0x825c, 0x8583, 0x8580, 0x858f, 0x85a7, 0x8595,
+    0x85a0, 0x858b, 0x85a3, 0x857b, 0x85a4, 0x859a, 0x859e, 0x003f,
+    /* lead byte ee */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8577, 0x857c, 0x8589, 0x85a1, 0x857a, 0x8578, 0x8557, 0x858e,
+    0x8596, 0x8586, 0x858d, 0x8599, 0x859d, 0x8581, 0x85a2, 0x8582,
+    0x8588, 0x8585, 0x8579, 0x8576, 0x8598, 0x8590, 0x859f, 0x8668,
+    0x87be, 0x87aa, 0x87ad, 0x87c5, 0x87b0, 0x87ac, 0x87b9, 0x87b5,
+    0x87bc, 0x87ae, 0x87c9, 0x87c3, 0x87c2, 0x87cc, 0x87b7, 0x87af,
+    0x87c4, 0x87ca, 0x87b4, 0x87b6, 0x87bf, 0x87b8, 0x87bd, 0x87de,
+    0x87b2, 0x8935, 0x8933, 0x893c, 0x893e, 0x8941, 0x8952, 0x8937,
+    0x8942, 0x89ad, 0x89af, 0x89ae, 0x89f2, 0x89f3, 0x8b1e, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x8b18, 0x8b16, 0x8b11, 0x8b05, 0x8b0b, 0x8b22, 0x8b0f,
+    0x8b12, 0x8b15, 0x8b07, 0x8b0d, 0x8b08, 0x8b06, 0x8b1c, 0x8b13,
+    0x8b1a, 0x8c4f, 0x8c70, 0x8c72, 0x8c71, 0x8c6f, 0x8c95, 0x8c94,
+    0x8cf9, 0x8d6f, 0x8e4e, 0x8e4d, 0x8e53, 0x8e50, 0x8e4c, 0x8e47,
+    0x8f43, 0x8f40, 0x9085, 0x907e, 0x9138, 0x919a, 0x91a2, 0x919b,
+    0x9199, 0x919f, 0x91a1, 0x919d, 0x91a0, 0x93a1, 0x9383, 0x93af,
+    0x9364, 0x9356, 0x9347, 0x937c, 0x9358, 0x935c, 0x9376, 0x9349,
+    0x9350, 0x9351, 0x9360, 0x936d, 0x938f, 0x934c, 0x936a, 0x9379,
+    0x9357, 0x9355, 0x9352, 0x934f, 0x9371, 0x9377, 0x937b, 0x9361,
+    0x935e, 0x9363, 0x9367, 0x9380, 0x934e, 0x9359, 0x95c7, 0x95c0,
+    0x95c9, 0x95c3, 0x95c5, 0x95b7, 0x96ae, 0x96b0, 0x96ac, 0x9720,
+    0x971f, 0x9718, 0x971d, 0x9719, 0x979a, 0x97a1, 0x979c, 0x003f,
+    /* lead byte ef */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x979e, 0x979d, 0x97d5, 0x97d4, 0x97f1, 0x9841, 0x9844, 0x984a,
+    0x9849, 0x9845, 0x9843, 0x9925, 0x992b, 0x992c, 0x992a, 0x9933,
+    0x9932, 0x992f, 0x992d, 0x9931, 0x9930, 0x9998, 0x99a3, 0x99a1,
+    0x9a02, 0x99fa, 0x99f4, 0x99f7, 0x99f9, 0x99f8, 0x99f6, 0x99fb,
+    0x99fd, 0x99fe, 0x99fc, 0x9a03, 0x9abe, 0x9afe, 0x9afd, 0x9b01,
+    0x9afc, 0x9b48, 0x9b9a, 0x9ba8, 0x9b9e, 0x9b9b, 0x9ba6, 0x9ba1,
+    0x9ba5, 0x9ba4, 0x9b86, 0x9ba2, 0x9ba0, 0x9baf, 0x9d33, 0x9d41,
+    0x9d67, 0x9d36, 0x9d2e, 0x9d2f, 0x9d31, 0x9d38, 0x9d30, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9d45, 0x9d42, 0x9d43, 0x9d3e, 0x9d37, 0x9d40, 0x9d3d,
+    0x7ff5, 0x9d2d, 0x9e8a, 0x9e89, 0x9e8d, 0x9eb0, 0x9ec8, 0x9eda,
+    0x9efb, 0x9eff, 0x9f24, 0x9f23, 0x9f22, 0x9f54, 0x9fa0, 0x5131,
+    0x512d, 0x512e, 0x5698, 0x569c, 0x5697, 0x569a, 0x569d, 0x5699,
+    0x5970, 0x5b3c, 0x5c69, 0x5c6a, 0x5dc0, 0x5e6d, 0x5e6e, 0x61d8,
+    0x61df, 0x61ed, 0x61ee, 0x61f1, 0x61ea, 0x61f0, 0x61eb, 0x61d6,
+    0x61e9, 0x64ff, 0x6504, 0x64fd, 0x64f8, 0x6501, 0x6503, 0x64fc,
+    0x6594, 0x65db, 0x66da, 0x66db, 0x66d8, 0x6ac5, 0x6ab9, 0x6abd,
+    0x6ae1, 0x6ac6, 0x6aba, 0x6ab6, 0x6ab7, 0x6ac7, 0x6ab4, 0x6aad,
+    0x6b5e, 0x6bc9, 0x6c0b, 0x7007, 0x700c, 0x700d, 0x7001, 0x7005,
+    0x7014, 0x700e, 0x6fff, 0x7000, 0x6ffb, 0x7026, 0x6ffc, 0x6ff7,
+    0x700a, 0x7201, 0x71ff, 0x71f9, 0x7203, 0x71fd, 0x7376, 0x003f,
+    /* lead byte f0 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x74b8, 0x74c0, 0x74b5, 0x74c1, 0x74be, 0x74b6, 0x74bb, 0x74c2,
+    0x7514, 0x7513, 0x765c, 0x7664, 0x7659, 0x7650, 0x7653, 0x7657,
+    0x765a, 0x76a6, 0x76bd, 0x76ec, 0x77c2, 0x77ba, 0x78ff, 0x790c,
+    0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911, 0x79ad, 0x79ac,
+    0x7a5f, 0x7c1c, 0x7c29, 0x7c19, 0x7c20, 0x7c1f, 0x7c2d, 0x7c1d,
+    0x7c26, 0x7c28, 0x7c22, 0x7c25, 0x7c30, 0x7e5c, 0x7e50, 0x7e56,
+    0x7e63, 0x7e58, 0x7e62, 0x7e5f, 0x7e51, 0x7e60, 0x7e57, 0x7e53,
+    0x7fb5, 0x7fb3, 0x7ff7, 0x7ff8, 0x8075, 0x81d1, 0x81d2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x81d0, 0x825f, 0x825e, 0x85b4, 0x85c6, 0x85c0, 0x85c3,
+    0x85c2, 0x85b3, 0x85b5, 0x85bd, 0x85c7, 0x85c4, 0x85bf, 0x85cb,
+    0x85ce, 0x85c8, 0x85c5, 0x85b1, 0x85b6, 0x85d2, 0x8624, 0x85b8,
+    0x85b7, 0x85be, 0x8669, 0x87e7, 0x87e6, 0x87e2, 0x87db, 0x87eb,
+    0x87ea, 0x87e5, 0x87df, 0x87f3, 0x87e4, 0x87d4, 0x87dc, 0x87d3,
+    0x87ed, 0x87d8, 0x87e3, 0x87a4, 0x87d7, 0x87d9, 0x8801, 0x87f4,
+    0x87e8, 0x87dd, 0x8953, 0x894b, 0x894f, 0x894c, 0x8946, 0x8950,
+    0x8951, 0x8949, 0x8b2a, 0x8b27, 0x8b23, 0x8b33, 0x8b30, 0x8b35,
+    0x8b47, 0x8b2f, 0x8b3c, 0x8b3e, 0x8b31, 0x8b25, 0x8b37, 0x8b26,
+    0x8b36, 0x8b2e, 0x8b24, 0x8b3b, 0x8b3d, 0x8b3a, 0x8c42, 0x8c75,
+    0x8c99, 0x8c98, 0x8c97, 0x8cfe, 0x8d04, 0x8d02, 0x8d00, 0x8e5c,
+    0x8e62, 0x8e60, 0x8e57, 0x8e56, 0x8e5e, 0x8e65, 0x8e67, 0x003f,
+    /* lead byte f1 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8e5b, 0x8e5a, 0x8e61, 0x8e5d, 0x8e69, 0x8e54, 0x8f46, 0x8f47,
+    0x8f48, 0x8f4b, 0x9128, 0x913a, 0x913b, 0x913e, 0x91a8, 0x91a5,
+    0x91a7, 0x91af, 0x91aa, 0x93b5, 0x938c, 0x9392, 0x93b7, 0x939b,
+    0x939d, 0x9389, 0x93a7, 0x938e, 0x93aa, 0x939e, 0x93a6, 0x9395,
+    0x9388, 0x9399, 0x939f, 0x938d, 0x93b1, 0x9391, 0x93b2, 0x93a4,
+    0x93a8, 0x93b4, 0x93a3, 0x93a5, 0x95d2, 0x95d3, 0x95d1, 0x96b3,
+    0x96d7, 0x96da, 0x5dc2, 0x96df, 0x96d8, 0x96dd, 0x9723, 0x9722,
+    0x9725, 0x97ac, 0x97ae, 0x97a8, 0x97ab, 0x97a4, 0x97aa, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x97a2, 0x97a5, 0x97d7, 0x97d9, 0x97d6, 0x97d8, 0x97fa,
+    0x9850, 0x9851, 0x9852, 0x98b8, 0x9941, 0x993c, 0x993a, 0x9a0f,
+    0x9a0b, 0x9a09, 0x9a0d, 0x9a04, 0x9a11, 0x9a0a, 0x9a05, 0x9a07,
+    0x9a06, 0x9ac0, 0x9adc, 0x9b08, 0x9b04, 0x9b05, 0x9b29, 0x9b35,
+    0x9b4a, 0x9b4c, 0x9b4b, 0x9bc7, 0x9bc6, 0x9bc3, 0x9bbf, 0x9bc1,
+    0x9bb5, 0x9bb8, 0x9bd3, 0x9bb6, 0x9bc4, 0x9bb9, 0x9bbd, 0x9d5c,
+    0x9d53, 0x9d4f, 0x9d4a, 0x9d5b, 0x9d4b, 0x9d59, 0x9d56, 0x9d4c,
+    0x9d57, 0x9d52, 0x9d54, 0x9d5f, 0x9d58, 0x9d5a, 0x9e8e, 0x9e8c,
+    0x9edf, 0x9f01, 0x9f00, 0x9f16, 0x9f25, 0x9f2b, 0x9f2a, 0x9f29,
+    0x9f28, 0x9f4c, 0x9f55, 0x5134, 0x5135, 0x5296, 0x52f7, 0x53b4,
+    0x56ab, 0x56ad, 0x56a6, 0x56a7, 0x56aa, 0x56ac, 0x58da, 0x58dd,
+    0x58db, 0x5912, 0x5b3d, 0x5b3e, 0x5b3f, 0x5dc3, 0x5e70, 0x003f,
+    /* lead byte f2 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x5fbf, 0x61fb, 0x6507, 0x6510, 0x650d, 0x6509, 0x650c, 0x650e,
+    0x6584, 0x65de, 0x65dd, 0x66de, 0x6ae7, 0x6ae0, 0x6acc, 0x6ad1,
+    0x6ad9, 0x6acb, 0x6adf, 0x6adc, 0x6ad0, 0x6aeb, 0x6acf, 0x6acd,
+    0x6ade, 0x6b60, 0x6bb0, 0x6c0c, 0x7019, 0x7027, 0x7020, 0x7016,
+    0x702b, 0x7021, 0x7022, 0x7023, 0x7029, 0x7017, 0x7024, 0x701c,
+    0x702a, 0x720c, 0x720a, 0x7207, 0x7202, 0x7205, 0x72a5, 0x72a6,
+    0x72a4, 0x72a3, 0x72a1, 0x74cb, 0x74c5, 0x74b7, 0x74c3, 0x7516,
+    0x7660, 0x77c9, 0x77ca, 0x77c4, 0x77f1, 0x791d, 0x791b, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x7921, 0x791c, 0x7917, 0x791e, 0x79b0, 0x7a67, 0x7a68,
+    0x7c33, 0x7c3c, 0x7c39, 0x7c2c, 0x7c3b, 0x7cec, 0x7cea, 0x7e76,
+    0x7e75, 0x7e78, 0x7e70, 0x7e77, 0x7e6f, 0x7e7a, 0x7e72, 0x7e74,
+    0x7e68, 0x7f4b, 0x7f4a, 0x7f83, 0x7f86, 0x7fb7, 0x7ffd, 0x7ffe,
+    0x8078, 0x81d7, 0x81d5, 0x8264, 0x8261, 0x8263, 0x85eb, 0x85f1,
+    0x85ed, 0x85d9, 0x85e1, 0x85e8, 0x85da, 0x85d7, 0x85ec, 0x85f2,
+    0x85f8, 0x85d8, 0x85df, 0x85e3, 0x85dc, 0x85d1, 0x85f0, 0x85e6,
+    0x85ef, 0x85de, 0x85e2, 0x8800, 0x87fa, 0x8803, 0x87f6, 0x87f7,
+    0x8809, 0x880c, 0x880b, 0x8806, 0x87fc, 0x8808, 0x87ff, 0x880a,
+    0x8802, 0x8962, 0x895a, 0x895b, 0x8957, 0x8961, 0x895c, 0x8958,
+    0x895d, 0x8959, 0x8988, 0x89b7, 0x89b6, 0x89f6, 0x8b50, 0x8b48,
+    0x8b4a, 0x8b40, 0x8b53, 0x8b56, 0x8b54, 0x8b4b, 0x8b55, 0x003f,
+    /* lead byte f3 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8b51, 0x8b42, 0x8b52, 0x8b57, 0x8c43, 0x8c77, 0x8c76, 0x8c9a,
+    0x8d06, 0x8d07, 0x8d09, 0x8dac, 0x8daa, 0x8dad, 0x8dab, 0x8e6d,
+    0x8e78, 0x8e73, 0x8e6a, 0x8e6f, 0x8e7b, 0x8ec2, 0x8f52, 0x8f51,
+    0x8f4f, 0x8f50, 0x8f53, 0x8fb4, 0x9140, 0x913f, 0x91b0, 0x91ad,
+    0x93de, 0x93c7, 0x93cf, 0x93c2, 0x93da, 0x93d0, 0x93f9, 0x93ec,
+    0x93cc, 0x93d9, 0x93a9, 0x93e6, 0x93ca, 0x93d4, 0x93ee, 0x93e3,
+    0x93d5, 0x93c4, 0x93ce, 0x93c0, 0x93d2, 0x93e7, 0x957d, 0x95da,
+    0x95db, 0x96e1, 0x9729, 0x972b, 0x972c, 0x9728, 0x9726, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x97b3, 0x97b7, 0x97b6, 0x97dd, 0x97de, 0x97df, 0x985c,
+    0x9859, 0x985d, 0x9857, 0x98bf, 0x98bd, 0x98bb, 0x98be, 0x9948,
+    0x9947, 0x9943, 0x99a6, 0x99a7, 0x9a1a, 0x9a15, 0x9a25, 0x9a1d,
+    0x9a24, 0x9a1b, 0x9a22, 0x9a20, 0x9a27, 0x9a23, 0x9a1e, 0x9a1c,
+    0x9a14, 0x9ac2, 0x9b0b, 0x9b0a, 0x9b0e, 0x9b0c, 0x9b37, 0x9bea,
+    0x9beb, 0x9be0, 0x9bde, 0x9be4, 0x9be6, 0x9be2, 0x9bf0, 0x9bd4,
+    0x9bd7, 0x9bec, 0x9bdc, 0x9bd9, 0x9be5, 0x9bd5, 0x9be1, 0x9bda,
+    0x9d77, 0x9d81, 0x9d8a, 0x9d84, 0x9d88, 0x9d71, 0x9d80, 0x9d78,
+    0x9d86, 0x9d8b, 0x9d8c, 0x9d7d, 0x9d6b, 0x9d74, 0x9d75, 0x9d70,
+    0x9d69, 0x9d85, 0x9d73, 0x9d7b, 0x9d82, 0x9d6f, 0x9d79, 0x9d7f,
+    0x9d87, 0x9d68, 0x9e94, 0x9e91, 0x9ec0, 0x9efc, 0x9f2d, 0x9f40,
+    0x9f41, 0x9f4d, 0x9f56, 0x9f57, 0x9f58, 0x5337, 0x56b2, 0x003f,
+    /* lead byte f4 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x56b5, 0x56b3, 0x58e3, 0x5b45, 0x5dc6, 0x5dc7, 0x5eee, 0x5eef,
+    0x5fc0, 0x5fc1, 0x61f9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65df,
+    0x66e8, 0x66e3, 0x66e4, 0x6af3, 0x6af0, 0x6aea, 0x6ae8, 0x6af9,
+    0x6af1, 0x6aee, 0x6aef, 0x703c, 0x7035, 0x702f, 0x7037, 0x7034,
+    0x7031, 0x7042, 0x7038, 0x703f, 0x703a, 0x7039, 0x7040, 0x703b,
+    0x7033, 0x7041, 0x7213, 0x7214, 0x72a8, 0x737d, 0x737c, 0x74ba,
+    0x76ab, 0x76aa, 0x76be, 0x76ed, 0x77cc, 0x77ce, 0x77cf, 0x77cd,
+    0x77f2, 0x7925, 0x7923, 0x7927, 0x7928, 0x7924, 0x7929, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x79b2, 0x7a6e, 0x7a6c, 0x7a6d, 0x7af7, 0x7c49, 0x7c48,
+    0x7c4a, 0x7c47, 0x7c45, 0x7cee, 0x7e7b, 0x7e7e, 0x7e81, 0x7e80,
+    0x7fba, 0x7fff, 0x8079, 0x81db, 0x81d9, 0x820b, 0x8268, 0x8269,
+    0x8622, 0x85ff, 0x8601, 0x85fe, 0x861b, 0x8600, 0x85f6, 0x8604,
+    0x8609, 0x8605, 0x860c, 0x85fd, 0x8819, 0x8810, 0x8811, 0x8817,
+    0x8813, 0x8816, 0x8963, 0x8966, 0x89b9, 0x89f7, 0x8b60, 0x8b6a,
+    0x8b5d, 0x8b68, 0x8b63, 0x8b65, 0x8b67, 0x8b6d, 0x8dae, 0x8e86,
+    0x8e88, 0x8e84, 0x8f59, 0x8f56, 0x8f57, 0x8f55, 0x8f58, 0x8f5a,
+    0x908d, 0x9143, 0x9141, 0x91b7, 0x91b5, 0x91b2, 0x91b3, 0x940b,
+    0x9413, 0x93fb, 0x9420, 0x940f, 0x9414, 0x93fe, 0x9415, 0x9410,
+    0x9428, 0x9419, 0x940d, 0x93f5, 0x9400, 0x93f7, 0x9407, 0x940e,
+    0x9416, 0x9412, 0x93fa, 0x9409, 0x93f8, 0x940a, 0x93ff, 0x003f,
+    /* lead byte f5 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x93fc, 0x940c, 0x93f6, 0x9411, 0x9406, 0x95de, 0x95e0, 0x95df,
+    0x972e, 0x972f, 0x97b9, 0x97bb, 0x97fd, 0x97fe, 0x9860, 0x9862,
+    0x9863, 0x985f, 0x98c1, 0x98c2, 0x9950, 0x994e, 0x9959, 0x994c,
+    0x994b, 0x9953, 0x9a32, 0x9a34, 0x9a31, 0x9a2c, 0x9a2a, 0x9a36,
+    0x9a29, 0x9a2e, 0x9a38, 0x9a2d, 0x9ac7, 0x9aca, 0x9ac6, 0x9b10,
+    0x9b12, 0x9b11, 0x9c0b, 0x9c08, 0x9bf7, 0x9c05, 0x9c12, 0x9bf8,
+    0x9c40, 0x9c07, 0x9c0e, 0x9c06, 0x9c17, 0x9c14, 0x9c09, 0x9d9f,
+    0x9d99, 0x9da4, 0x9d9d, 0x9d92, 0x9d98, 0x9d90, 0x9d9b, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9da0, 0x9d94, 0x9d9c, 0x9daa, 0x9d97, 0x9da1, 0x9d9a,
+    0x9da2, 0x9da8, 0x9d9e, 0x9da3, 0x9dbf, 0x9da9, 0x9d96, 0x9da6,
+    0x9da7, 0x9e99, 0x9e9b, 0x9e9a, 0x9ee5, 0x9ee4, 0x9ee7, 0x9ee6,
+    0x9f30, 0x9f2e, 0x9f5b, 0x9f60, 0x9f5e, 0x9f5d, 0x9f59, 0x9f91,
+    0x513a, 0x5139, 0x5298, 0x5297, 0x56c3, 0x56bd, 0x56be, 0x5b48,
+    0x5b47, 0x5dcb, 0x5dcf, 0x5ef1, 0x61fd, 0x651b, 0x6b02, 0x6afc,
+    0x6b03, 0x6af8, 0x6b00, 0x7043, 0x7044, 0x704a, 0x7048, 0x7049,
+    0x7045, 0x7046, 0x721d, 0x721a, 0x7219, 0x737e, 0x7517, 0x766a,
+    0x77d0, 0x792d, 0x7931, 0x792f, 0x7c54, 0x7c53, 0x7cf2, 0x7e8a,
+    0x7e87, 0x7e88, 0x7e8b, 0x7e86, 0x7e8d, 0x7f4d, 0x7fbb, 0x8030,
+    0x81dd, 0x8618, 0x862a, 0x8626, 0x861f, 0x8623, 0x861c, 0x8619,
+    0x8627, 0x862e, 0x8621, 0x8620, 0x8629, 0x861e, 0x8625, 0x003f,
+    /* lead byte f6 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8829, 0x881d, 0x881b, 0x8820, 0x8824, 0x881c, 0x882b, 0x884a,
+    0x896d, 0x8969, 0x896e, 0x896b, 0x89fa, 0x8b79, 0x8b78, 0x8b45,
+    0x8b7a, 0x8b7b, 0x8d10, 0x8d14, 0x8daf, 0x8e8e, 0x8e8c, 0x8f5e,
+    0x8f5b, 0x8f5d, 0x9146, 0x9144, 0x9145, 0x91b9, 0x943f, 0x943b,
+    0x9436, 0x9429, 0x943d, 0x943c, 0x9430, 0x9439, 0x942a, 0x9437,
+    0x942c, 0x9440, 0x9431, 0x95e5, 0x95e4, 0x95e3, 0x9735, 0x973a,
+    0x97bf, 0x97e1, 0x9864, 0x98c9, 0x98c6, 0x98c0, 0x9958, 0x9956,
+    0x9a39, 0x9a3d, 0x9a46, 0x9a44, 0x9a42, 0x9a41, 0x9a3a, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9a3f, 0x9acd, 0x9b15, 0x9b17, 0x9b18, 0x9b16, 0x9b3a,
+    0x9b52, 0x9c2b, 0x9c1d, 0x9c1c, 0x9c2c, 0x9c23, 0x9c28, 0x9c29,
+    0x9c24, 0x9c21, 0x9db7, 0x9db6, 0x9dbc, 0x9dc1, 0x9dc7, 0x9dca,
+    0x9dcf, 0x9dbe, 0x9dc5, 0x9dc3, 0x9dbb, 0x9db5, 0x9dce, 0x9db9,
+    0x9dba, 0x9dac, 0x9dc8, 0x9db1, 0x9dad, 0x9dcc, 0x9db3, 0x9dcd,
+    0x9db2, 0x9e7a, 0x9e9c, 0x9eeb, 0x9eee, 0x9eed, 0x9f1b, 0x9f18,
+    0x9f1a, 0x9f31, 0x9f4e, 0x9f65, 0x9f64, 0x9f92, 0x4eb9, 0x56c6,
+    0x56c5, 0x56cb, 0x5971, 0x5b4b, 0x5b4c, 0x5dd5, 0x5dd1, 0x5ef2,
+    0x6521, 0x6520, 0x6526, 0x6522, 0x6b0b, 0x6b08, 0x6b09, 0x6c0d,
+    0x7055, 0x7056, 0x7057, 0x7052, 0x721e, 0x721f, 0x72a9, 0x737f,
+    0x74d8, 0x74d5, 0x74d9, 0x74d7, 0x766d, 0x76ad, 0x7935, 0x79b4,
+    0x7a70, 0x7a71, 0x7c57, 0x7c5c, 0x7c59, 0x7c5b, 0x7c5a, 0x003f,
+    /* lead byte f7 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7cf4, 0x7cf1, 0x7e91, 0x7f4f, 0x7f87, 0x81de, 0x826b, 0x8634,
+    0x8635, 0x8633, 0x862c, 0x8632, 0x8636, 0x882c, 0x8828, 0x8826,
+    0x882a, 0x8825, 0x8971, 0x89bf, 0x89be, 0x89fb, 0x8b7e, 0x8b84,
+    0x8b82, 0x8b86, 0x8b85, 0x8b7f, 0x8d15, 0x8e95, 0x8e94, 0x8e9a,
+    0x8e92, 0x8e90, 0x8e96, 0x8e97, 0x8f60, 0x8f62, 0x9147, 0x944c,
+    0x9450, 0x944a, 0x944b, 0x944f, 0x9447, 0x9445, 0x9448, 0x9449,
+    0x9446, 0x973f, 0x97e3, 0x986a, 0x9869, 0x98cb, 0x9954, 0x995b,
+    0x9a4e, 0x9a53, 0x9a54, 0x9a4c, 0x9a4f, 0x9a48, 0x9a4a, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9a49, 0x9a52, 0x9a50, 0x9ad0, 0x9b19, 0x9b2b, 0x9b3b,
+    0x9b56, 0x9b55, 0x9c46, 0x9c48, 0x9c3f, 0x9c44, 0x9c39, 0x9c33,
+    0x9c41, 0x9c3c, 0x9c37, 0x9c34, 0x9c32, 0x9c3d, 0x9c36, 0x9ddb,
+    0x9dd2, 0x9dde, 0x9dda, 0x9dcb, 0x9dd0, 0x9ddc, 0x9dd1, 0x9ddf,
+    0x9de9, 0x9dd9, 0x9dd8, 0x9dd6, 0x9df5, 0x9dd5, 0x9ddd, 0x9eb6,
+    0x9ef0, 0x9f35, 0x9f33, 0x9f32, 0x9f42, 0x9f6b, 0x9f95, 0x9fa2,
+    0x513d, 0x5299, 0x58e8, 0x58e7, 0x5972, 0x5b4d, 0x5dd8, 0x882f,
+    0x5f4f, 0x6201, 0x6203, 0x6204, 0x6529, 0x6525, 0x6596, 0x66eb,
+    0x6b11, 0x6b12, 0x6b0f, 0x6bca, 0x705b, 0x705a, 0x7222, 0x7382,
+    0x7381, 0x7383, 0x7670, 0x77d4, 0x7c67, 0x7c66, 0x7e95, 0x826c,
+    0x863a, 0x8640, 0x8639, 0x863c, 0x8631, 0x863b, 0x863e, 0x8830,
+    0x8832, 0x882e, 0x8833, 0x8976, 0x8974, 0x8973, 0x89fe, 0x003f,
+    /* lead byte f8 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x8b8c, 0x8b8e, 0x8b8b, 0x8b88, 0x8c45, 0x8d19, 0x8e98, 0x8f64,
+    0x8f63, 0x91bc, 0x9462, 0x9455, 0x945d, 0x9457, 0x945e, 0x97c4,
+    0x97c5, 0x9800, 0x9a56, 0x9a59, 0x9b1e, 0x9b1f, 0x9b20, 0x9c52,
+    0x9c58, 0x9c50, 0x9c4a, 0x9c4d, 0x9c4b, 0x9c55, 0x9c59, 0x9c4c,
+    0x9c4e, 0x9dfb, 0x9df7, 0x9def, 0x9de3, 0x9deb, 0x9df8, 0x9de4,
+    0x9df6, 0x9de1, 0x9dee, 0x9de6, 0x9df2, 0x9df0, 0x9de2, 0x9dec,
+    0x9df4, 0x9df3, 0x9de8, 0x9ded, 0x9ec2, 0x9ed0, 0x9ef2, 0x9ef3,
+    0x9f06, 0x9f1c, 0x9f38, 0x9f37, 0x9f36, 0x9f43, 0x9f4f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9f71, 0x9f70, 0x9f6e, 0x9f6f, 0x56d3, 0x56cd, 0x5b4e,
+    0x5c6d, 0x652d, 0x66ed, 0x66ee, 0x6b13, 0x705f, 0x7061, 0x705d,
+    0x7060, 0x7223, 0x74db, 0x74e5, 0x77d5, 0x7938, 0x79b7, 0x79b6,
+    0x7c6a, 0x7e97, 0x7f89, 0x826d, 0x8643, 0x8838, 0x8837, 0x8835,
+    0x884b, 0x8b94, 0x8b95, 0x8e9e, 0x8e9f, 0x8ea0, 0x8e9d, 0x91be,
+    0x91bd, 0x91c2, 0x946b, 0x9468, 0x9469, 0x96e5, 0x9746, 0x9743,
+    0x9747, 0x97c7, 0x97e5, 0x9a5e, 0x9ad5, 0x9b59, 0x9c63, 0x9c67,
+    0x9c66, 0x9c62, 0x9c5e, 0x9c60, 0x9e02, 0x9dfe, 0x9e07, 0x9e03,
+    0x9e06, 0x9e05, 0x9e00, 0x9e01, 0x9e09, 0x9dff, 0x9dfd, 0x9e04,
+    0x9ea0, 0x9f1e, 0x9f46, 0x9f74, 0x9f75, 0x9f76, 0x56d4, 0x652e,
+    0x65b8, 0x6b18, 0x6b19, 0x6b17, 0x6b1a, 0x7062, 0x7226, 0x72aa,
+    0x77d8, 0x77d9, 0x7939, 0x7c69, 0x7c6b, 0x7cf6, 0x7e9a, 0x003f,
+    /* lead byte f9 */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x7e98, 0x7e9b, 0x7e99, 0x81e0, 0x81e1, 0x8646, 0x8647, 0x8648,
+    0x8979, 0x897a, 0x897c, 0x897b, 0x89ff, 0x8b98, 0x8b99, 0x8ea5,
+    0x8ea4, 0x8ea3, 0x946e, 0x946d, 0x946f, 0x9471, 0x9473, 0x9749,
+    0x9872, 0x995f, 0x9c68, 0x9c6e, 0x9c6d, 0x9e0b, 0x9e0d, 0x9e10,
+    0x9e0f, 0x9e12, 0x9e11, 0x9ea1, 0x9ef5, 0x9f09, 0x9f47, 0x9f78,
+    0x9f7b, 0x9f7a, 0x9f79, 0x571e, 0x7066, 0x7c6f, 0x883c, 0x8db2,
+    0x8ea6, 0x91c3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9a60, 0x9c74,
+    0x9c73, 0x9c71, 0x9c75, 0x9e14, 0x9e13, 0x9ef6, 0x9f0a, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x9fa4, 0x7068, 0x7065, 0x7cf7, 0x866a, 0x883e, 0x883d,
+    0x883f, 0x8b9e, 0x8c9c, 0x8ea9, 0x8ec9, 0x974b, 0x9873, 0x9874,
+    0x98cc, 0x9961, 0x99ab, 0x9a64, 0x9a66, 0x9a67, 0x9b24, 0x9e15,
+    0x9e17, 0x9f48, 0x6207, 0x6b1e, 0x7227, 0x864c, 0x8ea8, 0x9482,
+    0x9480, 0x9481, 0x9a69, 0x9a68, 0x9b2e, 0x9e19, 0x7229, 0x864b,
+    0x8b9f, 0x9483, 0x9c79, 0x9eb7, 0x7675, 0x9a6b, 0x9c7a, 0x9e1d,
+    0x7069, 0x706a, 0x9ea4, 0x9f7e, 0x9f49, 0x9f98, 0x7881, 0x92b9,
+    0x88cf, 0x58bb, 0x6052, 0x7ca7, 0x5afa, 0x2554, 0x2566, 0x2557,
+    0x2560, 0x256c, 0x2563, 0x255a, 0x2569, 0x255d, 0x2552, 0x2564,
+    0x2555, 0x255e, 0x256a, 0x2561, 0x2558, 0x2567, 0x255b, 0x2553,
+    0x2565, 0x2556, 0x255f, 0x256b, 0x2562, 0x2559, 0x2568, 0x255c,
+    0x2551, 0x2550, 0x256d, 0x256e, 0x2570, 0x256f, 0x2593, 0x003f
+};
+
+static const unsigned char cp2uni_leadbytes[256] =
+{
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+    0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
+    0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
+    0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
+    0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20,
+    0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x01,
+    0x01, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e,
+    0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36,
+    0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e,
+    0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46,
+    0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e,
+    0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56,
+    0x57, 0x58, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00
+};
+
+static const unsigned short uni2cp_low[27648] =
+{
+    /* 0x0000 .. 0x00ff */
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+    0x0080, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0020, 0x0021, 0x0063, 0x004c, 0x003f, 0x0059, 0x007c, 0xa1b1,
+    0x0022, 0x0063, 0x0061, 0xa16d, 0x003f, 0x002d, 0x0072, 0xa1c2,
+    0xa258, 0xa1d3, 0x0032, 0x0033, 0xa3bd, 0xa367, 0x003f, 0xa150,
+    0x002c, 0x0031, 0x006f, 0xa16e, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0043,
+    0x0045, 0x0045, 0x0045, 0x0045, 0x0049, 0x0049, 0x0049, 0x0049,
+    0x0044, 0x004e, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0xa1d1,
+    0x004f, 0x0055, 0x0055, 0x0055, 0x0055, 0x0059, 0x003f, 0xa35d,
+    0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0063,
+    0x0065, 0x0065, 0x0065, 0x0065, 0x0069, 0x0069, 0x0069, 0x0069,
+    0x0064, 0x006e, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0xa1d2,
+    0x006f, 0x0075, 0x0075, 0x0075, 0x0075, 0x0079, 0x003f, 0x0079,
+    /* 0x0100 .. 0x01ff */
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0043, 0x0063,
+    0x0043, 0x0063, 0x0043, 0x0063, 0x0043, 0x0063, 0x0044, 0x0064,
+    0x0044, 0x0064, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065,
+    0x0045, 0x0065, 0x0045, 0x0065, 0x0047, 0x0067, 0x0047, 0x0067,
+    0x0047, 0x0067, 0x0047, 0x0067, 0x0048, 0x0068, 0x0048, 0x0068,
+    0x0049, 0x0069, 0x0049, 0x0069, 0x0049, 0x0069, 0x0049, 0x0069,
+    0x0049, 0x0069, 0x003f, 0x003f, 0x004a, 0x006a, 0x004b, 0x006b,
+    0x003f, 0x004c, 0x006c, 0x004c, 0x006c, 0x004c, 0x006c, 0x003f,
+    0x003f, 0x004c, 0x006c, 0x004e, 0x006e, 0x004e, 0x006e, 0x004e,
+    0x006e, 0x003f, 0x003f, 0x003f, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x004f, 0x006f, 0x0052, 0x0072, 0x0052, 0x0072,
+    0x0052, 0x0072, 0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073,
+    0x0053, 0x0073, 0x0054, 0x0074, 0x0054, 0x0074, 0x0054, 0x0074,
+    0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0055, 0x0075, 0x0055, 0x0075, 0x0057, 0x0077, 0x0059, 0x0079,
+    0x0059, 0x005a, 0x007a, 0x005a, 0x007a, 0x005a, 0x007a, 0x0073,
+    0x0062, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0044, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0045, 0x0046, 0x0066, 0x003f, 0x003f, 0x003f, 0x003f, 0x0049,
+    0x003f, 0x003f, 0x006c, 0x003f, 0x003f, 0x003f, 0x003f, 0x004f,
+    0x004f, 0x006f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x0074, 0x003f, 0x003f, 0x0054, 0x0055,
+    0x0075, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x007a, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa278, 0x003f, 0x003f, 0x0021, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0041, 0x0061, 0x0049,
+    0x0069, 0x004f, 0x006f, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055,
+    0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x003f, 0x0041, 0x0061,
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0047, 0x0067, 0x0047, 0x0067,
+    0x004b, 0x006b, 0x004f, 0x006f, 0x004f, 0x006f, 0x003f, 0x003f,
+    0x006a, 0x003f, 0x003f, 0x003f, 0x0047, 0x0067, 0x003f, 0x003f,
+    0x004e, 0x006e, 0x0041, 0x0061, 0x0041, 0x0061, 0x004f, 0x006f,
+    /* 0x0200 .. 0x02ff */
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0045, 0x0065, 0x0045, 0x0065,
+    0x0049, 0x0069, 0x0049, 0x0069, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x0052, 0x0072, 0x0052, 0x0072, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0053, 0x0073, 0x0054, 0x0074, 0x003f, 0x003f, 0x0048, 0x0068,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0041, 0x0061,
+    0x0045, 0x0065, 0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x0059, 0x0079, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0067, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0068, 0x003f, 0x006a, 0x0072, 0x003f, 0x003f, 0x003f, 0x0077,
+    0x0079, 0xa3bd, 0x0022, 0xa1a5, 0xa1a6, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x005e, 0x003f, 0x005e, 0xa3be,
+    0x0027, 0xa3bc, 0xa3bd, 0xa3bf, 0x003f, 0xa1c5, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xa3bb, 0xa258, 0x003f, 0x007e, 0x0022, 0x003f, 0x003f,
+    0x003f, 0x006c, 0x0073, 0x0078, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x0300 .. 0x03ff */
+    0xa3bf, 0xa3bd, 0x005e, 0x007e, 0xa1c2, 0xa1c2, 0x003f, 0xa3bb,
+    0x0022, 0x003f, 0xa258, 0x0022, 0xa3be, 0x003f, 0x0022, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x002c,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xa1c5, 0xa1c5, 0x005f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa3bf, 0xa3bd, 0x003f, 0x003f, 0x0022, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa3bd, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003b, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa3bd, 0x0022, 0xa344, 0xa150,
+    0xa348, 0xa34a, 0xa34c, 0x003f, 0xa352, 0x003f, 0xa357, 0xa35b,
+    0xa364, 0xa344, 0xa345, 0xa346, 0xa347, 0xa348, 0xa349, 0xa34a,
+    0xa34b, 0xa34c, 0xa34d, 0xa34e, 0xa34f, 0xa350, 0xa351, 0xa352,
+    0xa353, 0xa354, 0x003f, 0xa355, 0xa356, 0xa357, 0xa358, 0xa359,
+    0xa35a, 0xa35b, 0xa34c, 0xa357, 0xa35c, 0xa360, 0xa362, 0xa364,
+    0xa36f, 0xa35c, 0xa35d, 0xa35e, 0xa35f, 0xa360, 0xa361, 0xa362,
+    0xa363, 0xa364, 0xa365, 0xa366, 0xa367, 0xa368, 0xa369, 0xa36a,
+    0xa36b, 0xa36c, 0x003f, 0xa36d, 0xa36e, 0xa36f, 0xa370, 0xa371,
+    0xa372, 0xa373, 0xa364, 0xa36f, 0xa36a, 0xa36f, 0xa373, 0x003f,
+    0xa35d, 0xa363, 0xa357, 0xa357, 0xa357, 0xa370, 0xa36b, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa365, 0xa36c, 0x003f, 0x003f, 0xa34b, 0xa360, 0x003f, 0x003f,
+    0x003f, 0xa355, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x1d00 .. 0x1dff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x0041, 0x0041, 0x0042, 0x003f,
+    0x0044, 0x0045, 0x003f, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b,
+    0x004c, 0x004d, 0x004e, 0x003f, 0x004f, 0x003f, 0x0050, 0x0052,
+    0x0054, 0x0055, 0x0057, 0x0061, 0x003f, 0x003f, 0x003f, 0x0062,
+    0x0064, 0x0065, 0x003f, 0x003f, 0x003f, 0x0067, 0x003f, 0x006b,
+    0x006d, 0x003f, 0x006f, 0x003f, 0x003f, 0x003f, 0x0070, 0x0074,
+    0x0075, 0x003f, 0x003f, 0x0076, 0x003f, 0xa35d, 0xa35e, 0xa35f,
+    0xa370, 0xa371, 0x0069, 0x0072, 0x0075, 0x0076, 0xa35d, 0xa35e,
+    0xa36c, 0xa370, 0xa371, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x0063, 0x003f, 0x0064, 0x003f,
+    0x0066, 0x003f, 0x0067, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0074, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x007a, 0x003f, 0x003f, 0x003f, 0xa363,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x1e00 .. 0x1eff */
+    0x0041, 0x0061, 0x0042, 0x0062, 0x0042, 0x0062, 0x0042, 0x0062,
+    0x0043, 0x0063, 0x0044, 0x0064, 0x0044, 0x0064, 0x0044, 0x0064,
+    0x0044, 0x0064, 0x0044, 0x0064, 0x0045, 0x0065, 0x0045, 0x0065,
+    0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, 0x0046, 0x0066,
+    0x0047, 0x0067, 0x0048, 0x0068, 0x0048, 0x0068, 0x0048, 0x0068,
+    0x0048, 0x0068, 0x0048, 0x0068, 0x0049, 0x0069, 0x0049, 0x0069,
+    0x004b, 0x006b, 0x004b, 0x006b, 0x004b, 0x006b, 0x004c, 0x006c,
+    0x004c, 0x006c, 0x004c, 0x006c, 0x004c, 0x006c, 0x004d, 0x006d,
+    0x004d, 0x006d, 0x004d, 0x006d, 0x004e, 0x006e, 0x004e, 0x006e,
+    0x004e, 0x006e, 0x004e, 0x006e, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x004f, 0x006f, 0x0050, 0x0070, 0x0050, 0x0070,
+    0x0052, 0x0072, 0x0052, 0x0072, 0x0052, 0x0072, 0x0052, 0x0072,
+    0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073,
+    0x0053, 0x0073, 0x0054, 0x0074, 0x0054, 0x0074, 0x0054, 0x0074,
+    0x0054, 0x0074, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0055, 0x0075, 0x0055, 0x0075, 0x0056, 0x0076, 0x0056, 0x0076,
+    0x0057, 0x0077, 0x0057, 0x0077, 0x0057, 0x0077, 0x0057, 0x0077,
+    0x0057, 0x0077, 0x0058, 0x0078, 0x0058, 0x0078, 0x0059, 0x0079,
+    0x005a, 0x007a, 0x005a, 0x007a, 0x005a, 0x007a, 0x0068, 0x0074,
+    0x0077, 0x0079, 0x003f, 0x0073, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061,
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061,
+    0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061,
+    0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065,
+    0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065,
+    0x0049, 0x0069, 0x0049, 0x0069, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f, 0x004f, 0x006f,
+    0x004f, 0x006f, 0x004f, 0x006f, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075,
+    0x0055, 0x0075, 0x0059, 0x0079, 0x0059, 0x0079, 0x0059, 0x0079,
+    0x0059, 0x0079, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x1f00 .. 0x1fff */
+    0xa35c, 0xa35c, 0xa35c, 0xa35c, 0xa35c, 0xa35c, 0xa35c, 0xa35c,
+    0xa344, 0xa344, 0xa344, 0xa344, 0xa344, 0xa344, 0xa344, 0xa344,
+    0xa360, 0xa360, 0xa360, 0xa360, 0xa360, 0xa360, 0x003f, 0x003f,
+    0xa348, 0xa348, 0xa348, 0xa348, 0xa348, 0xa348, 0x003f, 0x003f,
+    0xa362, 0xa362, 0xa362, 0xa362, 0xa362, 0xa362, 0xa362, 0xa362,
+    0xa34a, 0xa34a, 0xa34a, 0xa34a, 0xa34a, 0xa34a, 0xa34a, 0xa34a,
+    0xa364, 0xa364, 0xa364, 0xa364, 0xa364, 0xa364, 0xa364, 0xa364,
+    0xa34c, 0xa34c, 0xa34c, 0xa34c, 0xa34c, 0xa34c, 0xa34c, 0xa34c,
+    0xa36a, 0xa36a, 0xa36a, 0xa36a, 0xa36a, 0xa36a, 0x003f, 0x003f,
+    0xa352, 0xa352, 0xa352, 0xa352, 0xa352, 0xa352, 0x003f, 0x003f,
+    0xa36f, 0xa36f, 0xa36f, 0xa36f, 0xa36f, 0xa36f, 0xa36f, 0xa36f,
+    0x003f, 0xa357, 0x003f, 0xa357, 0x003f, 0xa357, 0x003f, 0xa357,
+    0xa373, 0xa373, 0xa373, 0xa373, 0xa373, 0xa373, 0xa373, 0xa373,
+    0xa35b, 0xa35b, 0xa35b, 0xa35b, 0xa35b, 0xa35b, 0xa35b, 0xa35b,
+    0xa35c, 0xa35c, 0xa360, 0xa360, 0xa362, 0xa362, 0xa364, 0xa364,
+    0xa36a, 0xa36a, 0xa36f, 0xa36f, 0xa373, 0xa373, 0x003f, 0x003f,
+    0xa35c, 0xa35c, 0xa35c, 0xa35c, 0xa35c, 0xa35c, 0xa35c, 0xa35c,
+    0xa344, 0xa344, 0xa344, 0xa344, 0xa344, 0xa344, 0xa344, 0xa344,
+    0xa362, 0xa362, 0xa362, 0xa362, 0xa362, 0xa362, 0xa362, 0xa362,
+    0xa34a, 0xa34a, 0xa34a, 0xa34a, 0xa34a, 0xa34a, 0xa34a, 0xa34a,
+    0xa373, 0xa373, 0xa373, 0xa373, 0xa373, 0xa373, 0xa373, 0xa373,
+    0xa35b, 0xa35b, 0xa35b, 0xa35b, 0xa35b, 0xa35b, 0xa35b, 0xa35b,
+    0xa35c, 0xa35c, 0xa35c, 0xa35c, 0xa35c, 0x003f, 0xa35c, 0xa35c,
+    0xa344, 0xa344, 0xa344, 0xa344, 0xa344, 0x003f, 0xa364, 0x003f,
+    0x003f, 0x0022, 0xa362, 0xa362, 0xa362, 0x003f, 0xa362, 0xa362,
+    0xa348, 0xa348, 0xa34a, 0xa34a, 0xa34a, 0x003f, 0x003f, 0x003f,
+    0xa364, 0xa364, 0xa364, 0xa364, 0x003f, 0x003f, 0xa364, 0xa364,
+    0xa34c, 0xa34c, 0xa34c, 0xa34c, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa36f, 0xa36f, 0xa36f, 0xa36f, 0xa36c, 0xa36c, 0xa36f, 0xa36f,
+    0xa357, 0xa357, 0xa357, 0xa357, 0xa354, 0x0022, 0x0022, 0x0060,
+    0x003f, 0x003f, 0xa373, 0xa373, 0xa373, 0x003f, 0xa373, 0xa373,
+    0xa352, 0xa352, 0xa35b, 0xa35b, 0xa35b, 0xa3bd, 0x003f, 0x003f,
+    /* 0x2000 .. 0x20ff */
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+    0x0020, 0x0020, 0x0020, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x002d, 0x002d, 0x003f, 0xa156, 0xa158, 0xa156, 0x003f, 0x005f,
+    0xa1a5, 0xa1a6, 0x002c, 0xa1a5, 0xa1a7, 0xa1a8, 0x002c, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x002e, 0xa14c, 0xa14b, 0xa145,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0020,
+    0x003f, 0x003f, 0xa1ac, 0x0022, 0x003f, 0xa1ab, 0x003f, 0x003f,
+    0x003f, 0xa171, 0xa172, 0xa1b0, 0x0021, 0x003f, 0xa1c2, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa241, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0020,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa258, 0x0069, 0x003f, 0x003f, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x002b, 0x002d, 0x003d, 0x0028, 0x0029, 0x006e,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x002b, 0x002d, 0x003d, 0x0028, 0x0029, 0x003f,
+    0x0061, 0x0065, 0x006f, 0x0078, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0063, 0x003f, 0x003f, 0x004c, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa3e1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2100 .. 0x21ff */
+    0x003f, 0x003f, 0x0043, 0xa24a, 0x003f, 0xa1c1, 0x003f, 0x0045,
+    0x003f, 0xa24b, 0x0067, 0x0048, 0x0048, 0x0048, 0x0068, 0x0068,
+    0x0049, 0x0049, 0x004c, 0x006c, 0x003f, 0x004e, 0x003f, 0x003f,
+    0x0050, 0x0050, 0x0051, 0x0052, 0x0052, 0x0052, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x005a, 0x003f, 0xa35b, 0x003f,
+    0x005a, 0x003f, 0x004b, 0x0041, 0x0042, 0x0043, 0x0065, 0x0065,
+    0x0045, 0x0046, 0x003f, 0x004d, 0x006f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0069, 0x003f, 0x003f, 0xa36b, 0xa35e, 0xa346, 0xa353,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0044, 0x0064, 0x0065,
+    0x0069, 0x006a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa2b9, 0xa2ba, 0xa2bb, 0xa2bc, 0xa2bd, 0xa2be, 0xa2bf, 0xa2c0,
+    0xa2c1, 0xa2c2, 0x003f, 0x003f, 0x004c, 0x0043, 0x0044, 0x004d,
+    0x0069, 0x003f, 0x003f, 0x003f, 0x0076, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x0078, 0x003f, 0x003f, 0x006c, 0x0063, 0x0064, 0x006d,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa1f6, 0xa1f4, 0xa1f7, 0xa1f5, 0x002d, 0x007c, 0xa1f8, 0xa1f9,
+    0xa1fb, 0xa1fa, 0xa1f6, 0xa1f7, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x002d, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2200 .. 0x22ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x004f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x002d, 0xa1d3, 0x003f, 0xa241, 0x005c, 0x002a,
+    0xa258, 0x003f, 0xa1d4, 0x003f, 0x003f, 0x003f, 0xa1db, 0xa1e8,
+    0xa1e7, 0x003f, 0x003f, 0xa1fd, 0xa1fd, 0xa1fc, 0xa1fc, 0x003f,
+    0x003f, 0xa1e4, 0xa1e5, 0xa1ec, 0x003f, 0x003f, 0xa1ed, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa1ef, 0xa1ee, 0x003a, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x007e, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x007e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x007e, 0x007e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xa1dc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa1da, 0xa1dd, 0xa1dd, 0xa1dd, 0x003f, 0x003f, 0xa1d8, 0xa1d9,
+    0x003f, 0x003f, 0xa16d, 0xa16e, 0x003f, 0x003f, 0x003c, 0x003e,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa1f2, 0x003f, 0x003f,
+    0x003f, 0xa1f3, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa1e6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa1e9,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa150, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2300 .. 0x23ff */
+    0x003f, 0x003f, 0x003f, 0x005e, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xa171, 0xa172, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2400 .. 0x24ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038,
+    0x0039, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0041, 0x0042,
+    0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a,
+    0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052,
+    0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a,
+    0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068,
+    0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+    0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+    0x0079, 0x007a, 0x0030, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2500 .. 0x25ff */
+    0xa277, 0xa277, 0xa278, 0xa278, 0x002d, 0x002d, 0x007c, 0x007c,
+    0x002d, 0x002d, 0x007c, 0x007c, 0xa27a, 0xa27a, 0xa27a, 0xa27a,
+    0xa27b, 0xa27b, 0xa27b, 0xa27b, 0xa27c, 0xa27c, 0xa27c, 0xa27c,
+    0xa27d, 0xa27d, 0xa27d, 0xa27d, 0xa275, 0xa275, 0xa275, 0xa275,
+    0xa275, 0xa275, 0xa275, 0xa275, 0xa274, 0xa274, 0xa274, 0xa274,
+    0xa274, 0xa274, 0xa274, 0xa274, 0xa273, 0xa273, 0xa273, 0xa273,
+    0xa273, 0xa273, 0xa273, 0xa273, 0xa272, 0xa272, 0xa272, 0xa272,
+    0xa272, 0xa272, 0xa272, 0xa272, 0xa271, 0xa271, 0xa271, 0xa271,
+    0xa271, 0xa271, 0xa271, 0xa271, 0xa271, 0xa271, 0xa271, 0xa271,
+    0xa271, 0xa271, 0xa271, 0xa271, 0x002d, 0x002d, 0x007c, 0x007c,
+    0xa2a4, 0xf9f8, 0xf9e6, 0xf9ef, 0xf9dd, 0xf9e8, 0xf9f1, 0xf9df,
+    0xf9ec, 0xf9f5, 0xf9e3, 0xf9ee, 0xf9f7, 0xf9e5, 0xa2a5, 0xf9f2,
+    0xf9e0, 0xa2a7, 0xf9f4, 0xf9e2, 0xf9e7, 0xf9f0, 0xf9de, 0xf9ed,
+    0xf9f6, 0xf9e4, 0xa2a6, 0xf9f3, 0xf9e1, 0xa27e, 0xa2a1, 0xa2a3,
+    0xa2a2, 0xa2ac, 0xa2ad, 0xa2ae, 0xa15a, 0x007c, 0xa15a, 0x007c,
+    0xa15a, 0x007c, 0xa15a, 0x007c, 0xa15a, 0x007c, 0xa15a, 0x007c,
+    0x003f, 0xa262, 0xa263, 0xa264, 0xa265, 0xa266, 0xa267, 0xa268,
+    0xa269, 0xa270, 0xa26f, 0xa26e, 0xa26d, 0xa26c, 0xa26b, 0xa26a,
+    0x003f, 0x003f, 0x003f, 0xf9fe, 0xa276, 0xa279, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa1bd, 0xa1bc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xa1b6, 0xa1b5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa1bf, 0xa1be, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa1bb, 0xa1ba,
+    0x003f, 0x003f, 0x003f, 0xa1b3, 0x003f, 0x003f, 0xa1b7, 0xa1b4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xa2a8, 0xa2a9, 0xa2ab, 0xa2aa, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa1b3,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2600 .. 0x26ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa1b9, 0xa1b8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa1f0, 0x003f, 0xa1f1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2e00 .. 0x2eff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa5c0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x2f00 .. 0x2fff */
+    0xa440, 0x003f, 0x003f, 0x003f, 0xa441, 0x003f, 0xa447, 0x003f,
+    0xa448, 0xa449, 0xa44a, 0xa44b, 0x003f, 0x003f, 0x003f, 0xa44c,
+    0xc942, 0xa44d, 0xa44f, 0x003f, 0xa450, 0xc943, 0x003f, 0xa2cc,
+    0xa452, 0x003f, 0xc944, 0x003f, 0xa453, 0xa466, 0xc949, 0xa467,
+    0xa468, 0x003f, 0x003f, 0xa469, 0xa46a, 0xa46b, 0xa46c, 0x003f,
+    0xa46f, 0xa470, 0xa471, 0xa472, 0xc94b, 0xa473, 0x003f, 0xa475,
+    0xa476, 0xa479, 0xa47a, 0x003f, 0x003f, 0x003f, 0xa47b, 0xa47c,
+    0xa47d, 0x003f, 0x003f, 0xc94c, 0xa4df, 0xa4e0, 0xa4e1, 0xa4e2,
+    0xa4e4, 0x003f, 0xa4e5, 0xa4e6, 0xa4e7, 0xa4e8, 0x003f, 0xa4e9,
+    0xa4ea, 0xa4eb, 0xa4ec, 0xa4ed, 0xa4ee, 0xa4ef, 0xc95f, 0xa4f0,
+    0xa4f1, 0xa4f2, 0xa4f3, 0xc961, 0xa4f4, 0xa4f5, 0xa4f6, 0xa4f7,
+    0xa4f8, 0xc962, 0xa4f9, 0xa4fa, 0xa4fb, 0xa4fc, 0xa5c8, 0xa5c9,
+    0xa5ca, 0xa5cb, 0xa5cc, 0xa5cd, 0xa5ce, 0xa5d0, 0xa5d4, 0x003f,
+    0x003f, 0xa5d5, 0xa5d6, 0xa5d7, 0xa5d8, 0xa5d9, 0xa5da, 0xa5db,
+    0xa5dc, 0xc9a8, 0xa5dd, 0xa5de, 0xa5df, 0xa6cb, 0xa6cc, 0xa6cd,
+    0xa6ce, 0xca49, 0xa6cf, 0xa6d0, 0xa6d1, 0xa6d3, 0xa6d4, 0xa6d5,
+    0xa6d6, 0xa6d7, 0xa6da, 0xa6db, 0xa6dc, 0xa6dd, 0xa6de, 0xa6df,
+    0xa6e0, 0xa6e1, 0xa6e2, 0xca4a, 0xca4f, 0xa6e4, 0xa6e5, 0xa6e6,
+    0xa6e7, 0xca50, 0xa8a3, 0xa8a4, 0xa8a5, 0xa8a6, 0xa8a7, 0xa8a8,
+    0xcba4, 0xa8a9, 0xa8aa, 0xa8ab, 0xa8ac, 0xa8ad, 0xa8ae, 0xa8af,
+    0xa8b0, 0x003f, 0xa8b6, 0xa8bb, 0xa8bc, 0xa8bd, 0xaaf7, 0xaaf8,
+    0xaaf9, 0xaafa, 0x003f, 0xab41, 0xab42, 0x003f, 0xab44, 0xadb1,
+    0xadb2, 0xadb3, 0xadb4, 0xadb5, 0xadb6, 0xadb7, 0xadb8, 0xadb9,
+    0xadba, 0xadbb, 0xb0a8, 0xb0a9, 0xb0aa, 0xd449, 0xb0ab, 0xd44a,
+    0xb0ac, 0xb0ad, 0xb3bd, 0xb3be, 0xb3bf, 0xb3c0, 0xb3c1, 0xb3c2,
+    0xb6c0, 0xb6c1, 0xb6c2, 0xdcb0, 0xe0ef, 0xb9a9, 0xb9aa, 0xb9ab,
+    0xbbf3, 0xbbf4, 0xbea6, 0xc073, 0xc074, 0xefb6, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x3000 .. 0x30ff */
+    0xa140, 0xa142, 0xa143, 0xa1b2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa171, 0xa172, 0xa16d, 0xa16e, 0xa175, 0xa176, 0xa179, 0xa17a,
+    0xa169, 0xa16a, 0xa245, 0x003f, 0xa165, 0xa166, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x005b, 0x005d, 0x003f, 0xa1a9, 0xa1aa, 0x002c,
+    0x003f, 0xa2c3, 0xa2c4, 0xa2c5, 0xa2c6, 0xa2c7, 0xa2c8, 0xa2c9,
+    0xa2ca, 0xa2cb, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa245, 0x003f,
+    0xa2cc, 0xa2cd, 0xa2ce, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x3100 .. 0x31ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa374, 0xa375, 0xa376,
+    0xa377, 0xa378, 0xa379, 0xa37a, 0xa37b, 0xa37c, 0xa37d, 0xa37e,
+    0xa3a1, 0xa3a2, 0xa3a3, 0xa3a4, 0xa3a5, 0xa3a6, 0xa3a7, 0xa3a8,
+    0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac, 0xa3ad, 0xa3ae, 0xa3af, 0xa3b0,
+    0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4, 0xa3b5, 0xa3b6, 0xa3b7, 0xa3b8,
+    0xa3b9, 0xa3ba, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xa440, 0xa447, 0xa454, 0xa57c, 0xa457, 0xa4a4,
+    0xa455, 0xa5d2, 0xa441, 0xa4fe, 0xa442, 0xa4d1, 0xa661, 0xa448,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x3200 .. 0x32ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa440, 0xa447, 0xa454, 0xa57c, 0xa4ad, 0xa4bb, 0xa443, 0xa44b,
+    0xa445, 0xa2cc, 0xa4eb, 0xa4f5, 0xa4f4, 0xa4ec, 0xaaf7, 0xa467,
+    0xa4e9, 0xaee8, 0xa6b3, 0xaac0, 0xa657, 0xaf53, 0xb05d, 0xafac,
+    0x003f, 0xafb5, 0xa86b, 0xa46b, 0xbe41, 0xc075, 0xa64c, 0xaa60,
+    0xb6b5, 0xa5f0, 0x003f, 0xa1c0, 0xa457, 0xa4a4, 0xa455, 0xa5aa,
+    0xa56b, 0x003f, 0xa976, 0x003f, 0xbaca, 0xa5f8, 0xb8ea, 0xa8f3,
+    0xa95d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x3300 .. 0x33ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa255, 0xa256,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa250, 0xa251, 0xa252, 0x003f,
+    0x003f, 0xa254, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa257, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa253, 0x003f,
+    0x003f, 0xa1eb, 0xa1ea, 0x003f, 0x003f, 0xa24f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x4e00 .. 0x4eff */
+    0xa440, 0xa442, 0x003f, 0xa443, 0x003f, 0x003f, 0x003f, 0xc945,
+    0xa456, 0xa454, 0xa457, 0xa455, 0xc946, 0xa4a3, 0xc94f, 0xc94d,
+    0xa4a2, 0xa4a1, 0x003f, 0x003f, 0xa542, 0xa541, 0xa540, 0x003f,
+    0xa543, 0xa4fe, 0x003f, 0x003f, 0x003f, 0x003f, 0xa5e0, 0xa5e1,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa8c3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xa458, 0x003f, 0xa4a4, 0xc950, 0x003f,
+    0xa4a5, 0xc963, 0xa6ea, 0xcbb1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa459, 0xa4a6, 0x003f, 0xa544, 0xc964, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xc940, 0xa444, 0x003f, 0xa45b, 0x003f, 0xc947,
+    0xa45c, 0x003f, 0x003f, 0xa4a7, 0x003f, 0xa545, 0xa547, 0xa546,
+    0x003f, 0x003f, 0xa5e2, 0xa5e3, 0x003f, 0x003f, 0xa8c4, 0x003f,
+    0xadbc, 0xa441, 0x003f, 0x003f, 0xc941, 0xa445, 0xa45e, 0xa45d,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xa5e4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xa8c5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb0ae, 0xd44b,
+    0x003f, 0x003f, 0xb6c3, 0xdcb1, 0xdcb2, 0x003f, 0xa446, 0x003f,
+    0xa4a9, 0x003f, 0x003f, 0xa8c6, 0xa447, 0xc948, 0xa45f, 0x003f,
+    0x003f, 0xa4aa, 0xa4ac, 0xc951, 0xa4ad, 0xa4ab, 0x003f, 0x003f,
+    0x003f, 0xa5e5, 0x003f, 0xa8c7, 0x003f, 0x003f, 0xa8c8, 0xab45,
+    0x003f, 0xa460, 0xa4ae, 0x003f, 0xa5e6, 0xa5e8, 0xa5e7, 0x003f,
+    0xa6eb, 0x003f, 0x003f, 0xa8c9, 0xa8ca, 0xab46, 0xab47, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xadbd, 0x003f, 0x003f, 0xdcb3, 0x003f,
+    0x003f, 0xf6d6, 0xa448, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa4b0, 0xa4af, 0xc952, 0xa4b1, 0xa4b7, 0x003f, 0xa4b2, 0xa4b3,
+    0xc954, 0xc953, 0xa4b5, 0xa4b6, 0x003f, 0xa4b4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa54a, 0xa54b, 0xa54c, 0xa54d,
+    0xa549, 0xa550, 0xc96a, 0x003f, 0xc966, 0xc969, 0xa551, 0xa561,
+    0x003f, 0xc968, 0x003f, 0xa54e, 0xa54f, 0xa548, 0x003f, 0x003f,
+    0xc965, 0xc967, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa5f5, 0xc9b0, 0xa5f2, 0xa5f6, 0xc9ba, 0xc9ae, 0xa5f3, 0xc9b2,
+    0x003f, 0x003f, 0x003f, 0xa5f4, 0x003f, 0xa5f7, 0x003f, 0xa5e9,
+    /* 0x4f00 .. 0x4fff */
+    0xc9b1, 0xa5f8, 0xc9b5, 0x003f, 0xc9b9, 0xc9b6, 0x003f, 0x003f,
+    0xc9b3, 0xa5ea, 0xa5ec, 0xa5f9, 0x003f, 0xa5ee, 0xc9ab, 0xa5f1,
+    0xa5ef, 0xa5f0, 0xc9bb, 0xc9b8, 0xc9af, 0xa5ed, 0x003f, 0x003f,
+    0xc9ac, 0xa5eb, 0x003f, 0x003f, 0x003f, 0xc9b4, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xc9b7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xc9ad, 0xca66, 0x003f, 0xa742,
+    0xa6f4, 0x003f, 0x003f, 0xca67, 0xa6f1, 0x003f, 0xa744, 0x003f,
+    0xa6f9, 0x003f, 0xa6f8, 0xca5b, 0xa6fc, 0xa6f7, 0xca60, 0xca68,
+    0x003f, 0xca64, 0x003f, 0xa6fa, 0x003f, 0x003f, 0xa6fd, 0xa6ee,
+    0xa747, 0xca5d, 0x003f, 0x003f, 0xcbbd, 0xa6ec, 0xa743, 0xa6ed,
+    0xa6f5, 0xa6f6, 0xca62, 0xca5e, 0xa6fb, 0xa6f3, 0xca5a, 0xa6ef,
+    0xca65, 0xa745, 0xa748, 0xa6f2, 0xa740, 0xa746, 0xa6f0, 0xca63,
+    0xa741, 0xca69, 0xca5c, 0xa6fe, 0xca5f, 0x003f, 0x003f, 0xca61,
+    0x003f, 0xa8d8, 0xcbbf, 0xcbcb, 0xa8d0, 0x003f, 0xcbcc, 0xa8cb,
+    0xa8d5, 0x003f, 0x003f, 0xa8ce, 0xcbb9, 0xa8d6, 0xcbb8, 0xcbbc,
+    0xcbc3, 0xcbc1, 0xa8de, 0xa8d9, 0xcbb3, 0xcbb5, 0xa8db, 0xa8cf,
+    0xcbb6, 0xcbc2, 0xcbc9, 0xa8d4, 0xcbbb, 0xcbb4, 0xa8d3, 0xcbb7,
+    0xa8d7, 0xcbba, 0x003f, 0xa8d2, 0x003f, 0xa8cd, 0x003f, 0xa8dc,
+    0xcbc4, 0xa8dd, 0xcbc8, 0x003f, 0xcbc6, 0xcbca, 0xa8da, 0xcbbe,
+    0xcbb2, 0x003f, 0xcbc0, 0xa8d1, 0xcbc5, 0xa8cc, 0xcbc7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xab56, 0xab4a,
+    0x003f, 0x003f, 0xcde0, 0xcde8, 0x003f, 0xab49, 0xab51, 0xab5d,
+    0x003f, 0xcdee, 0xcdec, 0xcde7, 0x003f, 0x003f, 0x003f, 0xab4b,
+    0xcded, 0xcde3, 0xab59, 0xab50, 0xab58, 0xcdde, 0x003f, 0xcdea,
+    0x003f, 0xcde1, 0xab54, 0xcde2, 0x003f, 0xcddd, 0xab5b, 0xab4e,
+    0xab57, 0xab4d, 0x003f, 0xcddf, 0xcde4, 0x003f, 0xcdeb, 0xab55,
+    0xab52, 0xcde6, 0xab5a, 0xcde9, 0xcde5, 0xab4f, 0xab5c, 0xab53,
+    0xab4c, 0xab48, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xcdef, 0x003f, 0xadd7, 0xadc1,
+    0x003f, 0xadd1, 0x003f, 0xadd6, 0xd0d0, 0xd0cf, 0xd0d4, 0xd0d5,
+    0xadc4, 0x003f, 0xadcd, 0x003f, 0x003f, 0x003f, 0xadda, 0x003f,
+    /* 0x5000 .. 0x50ff */
+    0xadce, 0x003f, 0x003f, 0x003f, 0x003f, 0xd0c9, 0xadc7, 0xd0ca,
+    0x003f, 0xaddc, 0x003f, 0xadd3, 0xadbe, 0xadbf, 0xd0dd, 0xb0bf,
+    0x003f, 0xadcc, 0xadcb, 0xd0cb, 0xadcf, 0xd45b, 0xadc6, 0xd0d6,
+    0xadd5, 0xadd4, 0xadca, 0xd0ce, 0xd0d7, 0x003f, 0xd0c8, 0xadc9,
+    0xd0d8, 0xadd2, 0xd0cc, 0xadc0, 0x003f, 0xadc3, 0xadc2, 0xd0d9,
+    0xadd0, 0xadc5, 0xadd9, 0xaddb, 0xd0d3, 0xadd8, 0x003f, 0xd0db,
+    0xd0cd, 0xd0dc, 0x003f, 0xd0d1, 0x003f, 0xd0da, 0x003f, 0xd0d2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xadc8, 0x003f, 0x003f, 0x003f,
+    0xd463, 0xd457, 0x003f, 0xb0b3, 0x003f, 0xd45c, 0xd462, 0xb0b2,
+    0xd455, 0xb0b6, 0xd459, 0xd452, 0xb0b4, 0xd456, 0xb0b9, 0xb0be,
+    0x003f, 0xd467, 0x003f, 0xd451, 0x003f, 0xb0ba, 0x003f, 0xd466,
+    0x003f, 0x003f, 0xb0b5, 0xd458, 0xb0b1, 0xd453, 0xd44f, 0xd45d,
+    0xd450, 0xd44e, 0xd45a, 0xd460, 0xd461, 0xb0b7, 0x003f, 0x003f,
+    0xd85b, 0xd45e, 0xd44d, 0xd45f, 0x003f, 0xb0c1, 0xd464, 0xb0c0,
+    0xd44c, 0x003f, 0xd454, 0xd465, 0xb0bc, 0xb0bb, 0xb0b8, 0xb0bd,
+    0x003f, 0x003f, 0xb0af, 0x003f, 0x003f, 0xb0b0, 0x003f, 0x003f,
+    0xb3c8, 0x003f, 0xd85e, 0xd857, 0x003f, 0xb3c5, 0x003f, 0xd85f,
+    0x003f, 0x003f, 0x003f, 0xd855, 0xd858, 0xb3c4, 0xd859, 0x003f,
+    0x003f, 0xb3c7, 0xd85d, 0x003f, 0xd853, 0xd852, 0xb3c9, 0x003f,
+    0xb3ca, 0xb3c6, 0xb3cb, 0xd851, 0xd85c, 0xd85a, 0xd854, 0x003f,
+    0x003f, 0x003f, 0xb3c3, 0xd856, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xb6ca, 0xb6c4, 0xdcb7, 0xb6cd,
+    0xdcbd, 0xdcc0, 0xb6c6, 0xb6c7, 0xdcba, 0xb6c5, 0xdcc3, 0xb6cb,
+    0xdcc4, 0x003f, 0xdcbf, 0xb6cc, 0x003f, 0xdcb4, 0xb6c9, 0xdcb5,
+    0x003f, 0xdcbe, 0xdcbc, 0x003f, 0xdcb8, 0xb6c8, 0xdcb6, 0xb6ce,
+    0xdcbb, 0xdcc2, 0xdcb9, 0xdcc1, 0x003f, 0x003f, 0xb9b6, 0xb9b3,
+    0x003f, 0xb9b4, 0x003f, 0xe0f9, 0xe0f1, 0xb9b2, 0xb9af, 0xe0f2,
+    0x003f, 0x003f, 0xb9b1, 0xe0f5, 0x003f, 0xe0f7, 0x003f, 0x003f,
+    0xe0fe, 0x003f, 0x003f, 0xe0fd, 0xe0f8, 0xb9ae, 0xe0f0, 0xb9ac,
+    0xe0f3, 0xb9b7, 0xe0f6, 0x003f, 0xe0fa, 0xb9b0, 0xb9ad, 0xe0fc,
+    0xe0fb, 0xb9b5, 0x003f, 0xe0f4, 0x003f, 0xbbf8, 0xe4ec, 0x003f,
+    0xe4e9, 0xbbf9, 0x003f, 0xbbf7, 0x003f, 0xe4f0, 0xe4ed, 0xe4e6,
+    /* 0x5100 .. 0x51ff */
+    0xbbf6, 0x003f, 0xbbfa, 0xe4e7, 0xbbf5, 0xbbfd, 0xe4ea, 0xe4eb,
+    0xbbfb, 0xbbfc, 0xe4f1, 0xe4ee, 0xe4ef, 0x003f, 0x003f, 0x003f,
+    0xbeaa, 0xe8f8, 0xbea7, 0xe8f5, 0xbea9, 0xbeab, 0x003f, 0xe8f6,
+    0xbea8, 0x003f, 0xe8f7, 0x003f, 0xe8f4, 0x003f, 0x003f, 0xc076,
+    0xecbd, 0xc077, 0xecbb, 0x003f, 0xecbc, 0xecba, 0xecb9, 0x003f,
+    0x003f, 0xecbe, 0xc075, 0x003f, 0x003f, 0xefb8, 0xefb9, 0x003f,
+    0xe4e8, 0xefb7, 0xc078, 0xc35f, 0xf1eb, 0xf1ec, 0x003f, 0xc4d7,
+    0xc4d8, 0xf5c1, 0xf5c0, 0xc56c, 0xc56b, 0xf7d0, 0x003f, 0xa449,
+    0xa461, 0xa4b9, 0x003f, 0xa4b8, 0xa553, 0xa552, 0xa5fc, 0xa5fb,
+    0xa5fd, 0xa5fa, 0x003f, 0xa74a, 0xa749, 0xa74b, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xa8e0, 0x003f, 0xa8df, 0xa8e1, 0x003f, 0xab5e,
+    0x003f, 0xa259, 0xd0de, 0xa25a, 0xb0c2, 0xa25c, 0xa25b, 0xd860,
+    0x003f, 0xa25d, 0xb9b8, 0xa25e, 0x003f, 0xa44a, 0x003f, 0xa4ba,
+    0xa5fe, 0xa8e2, 0x003f, 0xa44b, 0xa4bd, 0xa4bb, 0xa4bc, 0x003f,
+    0x003f, 0xa640, 0x003f, 0x003f, 0x003f, 0xa74c, 0xa8e4, 0xa8e3,
+    0xa8e5, 0x003f, 0x003f, 0x003f, 0xaddd, 0x003f, 0x003f, 0x003f,
+    0xbeac, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc94e,
+    0x003f, 0xa554, 0xa555, 0x003f, 0x003f, 0xa641, 0x003f, 0xca6a,
+    0x003f, 0xab60, 0xab5f, 0xd0e0, 0xd0df, 0xb0c3, 0x003f, 0xa4be,
+    0xc955, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcbcd, 0x003f,
+    0xab61, 0x003f, 0xade0, 0x003f, 0xadde, 0xaddf, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xbead, 0x003f, 0xa556, 0x003f, 0x003f, 0x003f,
+    0xa642, 0xc9bc, 0x003f, 0x003f, 0x003f, 0x003f, 0xa74d, 0xa74e,
+    0x003f, 0xca6b, 0x003f, 0x003f, 0xcbce, 0xa8e6, 0xcbcf, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd0e2, 0xd0e3, 0xade3, 0x003f,
+    0xd0e4, 0x003f, 0xd0e1, 0xade4, 0xade2, 0xade1, 0xd0e5, 0x003f,
+    0xd468, 0x003f, 0x003f, 0x003f, 0xd861, 0x003f, 0x003f, 0xdcc5,
+    0xe140, 0x003f, 0x003f, 0x003f, 0xbbfe, 0xbeae, 0xe8f9, 0x003f,
+    0xa44c, 0xa45a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xb0c4, 0xb3cd, 0x003f, 0xb9b9, 0x003f, 0xc942, 0xa4bf, 0x003f,
+    0xa559, 0xa557, 0xa558, 0x003f, 0x003f, 0xa8e7, 0x003f, 0x003f,
+    /* 0x5200 .. 0x52ff */
+    0xa44d, 0xa44e, 0x003f, 0xa462, 0x003f, 0x003f, 0xa4c0, 0xa4c1,
+    0xa4c2, 0xc9be, 0xa55a, 0x003f, 0xc96b, 0x003f, 0xa646, 0x003f,
+    0xc9bf, 0xa644, 0xa645, 0xc9bd, 0x003f, 0x003f, 0xa647, 0xa643,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xca6c, 0xaaec, 0xca6d, 0x003f,
+    0x003f, 0xca6e, 0x003f, 0x003f, 0xa750, 0xa74f, 0x003f, 0x003f,
+    0xa753, 0xa751, 0xa752, 0x003f, 0x003f, 0x003f, 0xa8ed, 0x003f,
+    0xa8ec, 0xcbd4, 0xcbd1, 0xcbd2, 0x003f, 0xcbd0, 0xa8ee, 0xa8ea,
+    0xa8e9, 0x003f, 0xa8eb, 0xa8e8, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xa8ef, 0x003f, 0xab63, 0xcdf0, 0x003f, 0xcbd3, 0xab68,
+    0x003f, 0xcdf1, 0xab64, 0xab67, 0xab66, 0xab65, 0xab62, 0x003f,
+    0x003f, 0x003f, 0xd0e8, 0x003f, 0xade7, 0xd0eb, 0xade5, 0x003f,
+    0x003f, 0x003f, 0xd0e7, 0xade8, 0xade6, 0xade9, 0xd0e9, 0xd0ea,
+    0x003f, 0xd0e6, 0xd0ec, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb3d1, 0xb0c5, 0xd469, 0xd46b, 0xd46a, 0xd46c, 0xb0c6,
+    0x003f, 0x003f, 0xb3ce, 0x003f, 0xb3cf, 0xb3d0, 0x003f, 0xb6d0,
+    0xdcc7, 0x003f, 0xdcc6, 0xdcc8, 0xdcc9, 0xb6d1, 0x003f, 0xb6cf,
+    0xe141, 0xe142, 0xb9bb, 0xb9ba, 0xe35a, 0x003f, 0x003f, 0xbc40,
+    0xbc41, 0xbc42, 0xbc44, 0xe4f2, 0xe4f3, 0xbc43, 0x003f, 0x003f,
+    0x003f, 0xbeaf, 0x003f, 0xbeb0, 0x003f, 0x003f, 0xf1ed, 0xf5c3,
+    0xf5c2, 0xf7d1, 0x003f, 0xa44f, 0x003f, 0x003f, 0x003f, 0xa55c,
+    0xa55b, 0x003f, 0x003f, 0xa648, 0x003f, 0x003f, 0xc9c0, 0x003f,
+    0x003f, 0xa755, 0xa756, 0xa754, 0xa757, 0xca6f, 0xca70, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xa8f1, 0xcbd5, 0x003f, 0xa8f0, 0x003f,
+    0xcdf2, 0xab6c, 0xcdf3, 0xab6b, 0x003f, 0x003f, 0x003f, 0xab69,
+    0x003f, 0xab6a, 0x003f, 0x003f, 0x003f, 0xd0ed, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb0c7, 0xd46e, 0x003f, 0xb0ca, 0xd46d, 0xb1e5,
+    0xb0c9, 0xb0c8, 0x003f, 0xb3d4, 0x003f, 0xb3d3, 0xb3d2, 0xb6d2,
+    0x003f, 0x003f, 0xb6d5, 0xb6d6, 0xb6d4, 0x003f, 0xb6d3, 0x003f,
+    0x003f, 0xe143, 0x003f, 0xe144, 0x003f, 0x003f, 0x003f, 0xe4f5,
+    0xbc45, 0xe4f4, 0x003f, 0xbeb1, 0xecbf, 0xc079, 0x003f, 0xf1ee,
+    0xc455, 0x003f, 0xa463, 0xa4c3, 0xc956, 0x003f, 0xa4c4, 0xa4c5,
+    /* 0x5300 .. 0x53ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa55d, 0xa55e, 0x003f,
+    0xa649, 0xca71, 0xcbd6, 0xcbd7, 0x003f, 0xab6d, 0xd0ee, 0xb0cc,
+    0xb0cb, 0xd863, 0xd862, 0x003f, 0x003f, 0xa450, 0xa4c6, 0xa55f,
+    0x003f, 0xb0cd, 0xc943, 0x003f, 0xc96c, 0xa560, 0x003f, 0xc9c2,
+    0xa64b, 0xa64a, 0xc9c1, 0xa758, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xadea, 0x003f, 0x003f, 0xd46f, 0x003f, 0xb6d7,
+    0xe145, 0xb9bc, 0x003f, 0x003f, 0xe8fa, 0x003f, 0x003f, 0xf3fd,
+    0x003f, 0xa4c7, 0x003f, 0x003f, 0xcbd8, 0xcdf4, 0xb0d0, 0xb0ce,
+    0xb0cf, 0xa2cc, 0x003f, 0xa464, 0xa2cd, 0xa2ce, 0x003f, 0xa4c9,
+    0xa4c8, 0xa563, 0xa562, 0x003f, 0xc96d, 0xc9c3, 0x003f, 0x003f,
+    0x003f, 0xa8f5, 0xa8f2, 0xa8f4, 0xa8f3, 0x003f, 0x003f, 0xab6e,
+    0x003f, 0x003f, 0xb3d5, 0x003f, 0xa452, 0x003f, 0xa4cb, 0x003f,
+    0xa565, 0xa564, 0x003f, 0xca72, 0x003f, 0x003f, 0xa8f6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xc957, 0x003f, 0xa567, 0xa566,
+    0xa64c, 0xa64d, 0xca73, 0xa759, 0x003f, 0xa75a, 0x003f, 0xa8f7,
+    0xa8f8, 0xa8f9, 0x003f, 0xab6f, 0xcdf5, 0x003f, 0x003f, 0xadeb,
+    0x003f, 0x003f, 0xc944, 0x003f, 0xa4cc, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xc9c4, 0x003f, 0x003f, 0x003f, 0xca74, 0xca75,
+    0x003f, 0x003f, 0xcbd9, 0x003f, 0xcbda, 0x003f, 0xcdf7, 0xcdf6,
+    0xcdf9, 0xcdf8, 0xab70, 0x003f, 0xd470, 0xaded, 0xd0ef, 0xadec,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd864, 0xb3d6, 0x003f, 0xd865,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe146, 0xb9bd, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xbc46, 0x003f, 0xf1ef, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc958, 0x003f, 0xa568, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb0d1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa453, 0xa465, 0xa4ce, 0xa4cd, 0x003f, 0xa4cf, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa8fb, 0x003f, 0xa8fa, 0xa8fc,
+    0x003f, 0x003f, 0x003f, 0xab71, 0x003f, 0x003f, 0x003f, 0xadee,
+    0x003f, 0xe8fb, 0xc24f, 0xa466, 0xa56a, 0xa579, 0xa574, 0x003f,
+    0xa56f, 0xa56e, 0xa575, 0xa573, 0xa56c, 0xa57a, 0xa56d, 0xa569,
+    0xa578, 0xa577, 0xa576, 0xa56b, 0x003f, 0xa572, 0x003f, 0x003f,
+    0xa571, 0x003f, 0x003f, 0xa57b, 0xa570, 0x003f, 0x003f, 0x003f,
+    /* 0x5400 .. 0x54ff */
+    0x003f, 0xa653, 0x003f, 0xa659, 0xa655, 0x003f, 0xa65b, 0xc9c5,
+    0xa658, 0xa64e, 0xa651, 0xa654, 0xa650, 0xa657, 0xa65a, 0xa64f,
+    0xa652, 0xa656, 0xa65c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xca7e, 0xca7b, 0x003f, 0xa767, 0xca7c, 0xa75b, 0xa75d, 0xa775,
+    0xa770, 0x003f, 0x003f, 0x003f, 0xcaa5, 0xca7d, 0xa75f, 0xa761,
+    0xcaa4, 0xa768, 0xca78, 0xa774, 0xa776, 0xa75c, 0xa76d, 0x003f,
+    0xca76, 0xa773, 0x003f, 0xa764, 0x003f, 0xa76e, 0xa76f, 0xca77,
+    0xa76c, 0xa76a, 0x003f, 0xa76b, 0xa771, 0xcaa1, 0xa75e, 0x003f,
+    0xa772, 0xcaa3, 0xa766, 0xa763, 0x003f, 0xca7a, 0xa762, 0xcaa6,
+    0xa765, 0x003f, 0xa769, 0x003f, 0x003f, 0x003f, 0xa760, 0xcaa2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xca79, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcbeb, 0xcbea, 0xa94f, 0xcbed, 0xcbef, 0xcbe4, 0xcbe7, 0xcbee,
+    0xa950, 0x003f, 0x003f, 0xcbe1, 0xcbe5, 0x003f, 0x003f, 0xcbe9,
+    0xce49, 0xa94b, 0xce4d, 0xa8fd, 0xcbe6, 0xa8fe, 0xa94c, 0xa945,
+    0xa941, 0x003f, 0xcbe2, 0xa944, 0xa949, 0xa952, 0xcbe3, 0xcbdc,
+    0xa943, 0xcbdd, 0xcbdf, 0x003f, 0xa946, 0x003f, 0xa948, 0xcbdb,
+    0xcbe0, 0x003f, 0x003f, 0xa951, 0xa94d, 0xcbe8, 0xa953, 0x003f,
+    0xa94a, 0xcbde, 0xa947, 0x003f, 0x003f, 0xa942, 0xa940, 0x003f,
+    0xcbec, 0x003f, 0xa94e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xce48, 0xcdfb, 0xce4b, 0x003f, 0x003f, 0xcdfd, 0xab78, 0xaba8,
+    0xab74, 0xaba7, 0xab7d, 0xaba4, 0xab72, 0xcdfc, 0xce43, 0xaba3,
+    0xce4f, 0xaba5, 0x003f, 0xab79, 0x003f, 0x003f, 0xce45, 0xce42,
+    0xab77, 0x003f, 0xcdfa, 0xaba6, 0xce4a, 0xab7c, 0xce4c, 0xaba9,
+    0xab73, 0xab7e, 0xab7b, 0xce40, 0xaba1, 0xce46, 0xce47, 0xab7a,
+    0xaba2, 0xab76, 0x003f, 0x003f, 0x003f, 0x003f, 0xab75, 0xcdfe,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xce44, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xce4e, 0x003f,
+    0xd144, 0xadfb, 0xd0f1, 0x003f, 0xd0f6, 0xadf4, 0xae40, 0xd0f4,
+    0xadef, 0xadf9, 0xadfe, 0xd0fb, 0x003f, 0xadfa, 0xadfd, 0x003f,
+    0x003f, 0xd0fe, 0xadf5, 0xd0f5, 0x003f, 0x003f, 0x003f, 0xd142,
+    0xd143, 0x003f, 0xadf7, 0xd141, 0xadf3, 0xae43, 0x003f, 0xd0f8,
+    /* 0x5500 .. 0x55ff */
+    0x003f, 0xadf1, 0x003f, 0xd146, 0xd0f9, 0xd0fd, 0xadf6, 0xae42,
+    0xd0fa, 0xadfc, 0xd140, 0xd147, 0xd4a1, 0x003f, 0xd145, 0xae44,
+    0xadf0, 0xd0fc, 0xd0f3, 0x003f, 0xadf8, 0x003f, 0x003f, 0xd0f2,
+    0x003f, 0x003f, 0xd0f7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd0f0, 0xae41,
+    0x003f, 0x003f, 0xd477, 0x003f, 0xb0e4, 0xd4a7, 0xb0e2, 0xb0df,
+    0xd47c, 0xb0db, 0xd4a2, 0xb0e6, 0xd476, 0xd47b, 0xd47a, 0xadf2,
+    0xb0e1, 0xd4a5, 0x003f, 0xd4a8, 0xd473, 0x003f, 0xb3e8, 0x003f,
+    0xd4a9, 0xb0e7, 0x003f, 0xb0d9, 0xb0d6, 0xd47e, 0xb0d3, 0x003f,
+    0xd4a6, 0x003f, 0xb0da, 0xd4aa, 0x003f, 0xd474, 0xd4a4, 0xb0dd,
+    0xd475, 0xd478, 0xd47d, 0x003f, 0x003f, 0xb0de, 0xb0dc, 0xb0e8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xb0e3, 0x003f, 0xb0d7, 0xb1d2,
+    0x003f, 0xb0d8, 0xd479, 0xb0e5, 0xb0e0, 0xd4a3, 0xb0d5, 0x003f,
+    0x003f, 0x003f, 0xb0d4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd471, 0xd472, 0xd86a,
+    0x003f, 0x003f, 0x003f, 0xb3d7, 0xb3da, 0xd875, 0xb3ee, 0xd878,
+    0xb3d8, 0xd871, 0xb3de, 0xb3e4, 0xb5bd, 0x003f, 0x003f, 0xb3e2,
+    0xd86e, 0xb3ef, 0xb3db, 0xb3e3, 0xd876, 0xdcd7, 0xd87b, 0xd86f,
+    0x003f, 0xd866, 0xd873, 0xd86d, 0xb3e1, 0xd879, 0x003f, 0x003f,
+    0xb3dd, 0xb3f1, 0xb3ea, 0x003f, 0xb3df, 0xb3dc, 0x003f, 0xb3e7,
+    0x003f, 0xd87a, 0xd86c, 0xd872, 0xd874, 0xd868, 0xd877, 0xb3d9,
+    0xd867, 0x003f, 0xb3e0, 0xb3f0, 0xb3ec, 0xd869, 0xb3e6, 0x003f,
+    0x003f, 0xb3ed, 0xb3e9, 0xb3e5, 0x003f, 0xd870, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb3eb, 0x003f, 0x003f, 0x003f, 0xdcd5,
+    0xdcd1, 0x003f, 0xdce0, 0xdcca, 0xdcd3, 0xb6e5, 0xb6e6, 0xb6de,
+    0xdcdc, 0xb6e8, 0xdccf, 0xdcce, 0xdccc, 0xdcde, 0xb6dc, 0xdcd8,
+    0xdccd, 0xb6df, 0xdcd6, 0xb6da, 0xdcd2, 0xdcd9, 0xdcdb, 0x003f,
+    0x003f, 0xdcdf, 0xb6e3, 0xdccb, 0xb6dd, 0xdcd0, 0x003f, 0xb6d8,
+    0x003f, 0xb6e4, 0xdcda, 0xb6e0, 0xb6e1, 0xb6e7, 0xb6db, 0xa25f,
+    0xb6d9, 0xdcd4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb6e2,
+    0x003f, 0x003f, 0xdcdd, 0x003f, 0x003f, 0x003f, 0xb9cd, 0xb9c8,
+    0x003f, 0xe155, 0xe151, 0x003f, 0xe14b, 0xb9c2, 0xb9be, 0xe154,
+    /* 0x5600 .. 0x56ff */
+    0xb9bf, 0xe14e, 0xe150, 0x003f, 0xe153, 0x003f, 0xb9c4, 0x003f,
+    0xb9cb, 0xb9c5, 0x003f, 0x003f, 0xe149, 0xb9c6, 0xb9c7, 0xe14c,
+    0xb9cc, 0x003f, 0xe14a, 0xe14f, 0xb9c3, 0xe148, 0xb9c9, 0xb9c1,
+    0x003f, 0x003f, 0x003f, 0xb9c0, 0xe14d, 0xe152, 0x003f, 0xb9ca,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe147,
+    0x003f, 0xbc4d, 0xe547, 0x003f, 0xe544, 0x003f, 0xbc47, 0xbc53,
+    0xbc54, 0x003f, 0xbc4a, 0xe542, 0xbc4c, 0xe4f9, 0xbc52, 0x003f,
+    0xe546, 0xbc49, 0xe548, 0xbc48, 0x003f, 0xe543, 0xe545, 0xbc4b,
+    0xe541, 0xe4fa, 0xe4f7, 0x003f, 0x003f, 0xd86b, 0xe4fd, 0x003f,
+    0xe4f6, 0xe4fc, 0xe4fb, 0x003f, 0xe4f8, 0x003f, 0xbc4f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xbc4e, 0x003f, 0x003f, 0x003f, 0xbc50,
+    0xe4fe, 0xbeb2, 0xe540, 0x003f, 0x003f, 0x003f, 0xe945, 0x003f,
+    0xe8fd, 0x003f, 0xbebe, 0xe942, 0xbeb6, 0xbeba, 0xe941, 0x003f,
+    0xbeb9, 0xbeb5, 0xbeb8, 0xbeb3, 0xbebd, 0xe943, 0xe8fe, 0xbebc,
+    0xe8fc, 0xbebb, 0xe944, 0xe940, 0xbc51, 0x003f, 0xbebf, 0xe946,
+    0xbeb7, 0xbeb4, 0x003f, 0x003f, 0x003f, 0x003f, 0xecc6, 0xecc8,
+    0xc07b, 0xecc9, 0xecc7, 0xecc5, 0xecc4, 0xc07d, 0xecc3, 0xc07e,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xecc1, 0xecc2, 0xc07a, 0xc0a1,
+    0xc07c, 0x003f, 0x003f, 0xecc0, 0x003f, 0xc250, 0x003f, 0xefbc,
+    0xefba, 0xefbf, 0xefbd, 0x003f, 0xefbb, 0xefbe, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc360, 0xf1f2, 0xf1f3,
+    0xc456, 0x003f, 0xf1f4, 0xf1f0, 0xf1f5, 0xf1f1, 0xc251, 0x003f,
+    0x003f, 0x003f, 0xf3fe, 0xf441, 0xc459, 0xf440, 0xc458, 0xc457,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xc45a, 0xf5c5, 0xf5c6, 0x003f,
+    0xc4da, 0xc4d9, 0xc4db, 0xf5c4, 0x003f, 0xf6d8, 0xf6d7, 0x003f,
+    0xc56d, 0xc56f, 0xc56e, 0xf6d9, 0xc5c8, 0xf8a6, 0x003f, 0x003f,
+    0x003f, 0xc5f1, 0x003f, 0xf8a5, 0xf8ee, 0x003f, 0x003f, 0xc949,
+    0x003f, 0x003f, 0xa57d, 0xa57c, 0x003f, 0xa65f, 0xa65e, 0xc9c7,
+    0xa65d, 0xc9c6, 0x003f, 0x003f, 0xa779, 0xcaa9, 0x003f, 0xcaa8,
+    0x003f, 0x003f, 0xa777, 0xa77a, 0x003f, 0x003f, 0xcaa7, 0x003f,
+    0xa778, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcbf0,
+    0x003f, 0xcbf1, 0xa954, 0x003f, 0x003f, 0x003f, 0x003f, 0xabaa,
+    /* 0x5700 .. 0x57ff */
+    0x003f, 0xd148, 0xd149, 0xae45, 0xae46, 0x003f, 0x003f, 0xd4ac,
+    0xb0e9, 0xb0eb, 0xd4ab, 0xb0ea, 0xd87c, 0xb3f2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb6e9, 0xb6ea, 0xdce1, 0x003f, 0xb9cf, 0x003f,
+    0xb9ce, 0x003f, 0xe549, 0xe948, 0xe947, 0x003f, 0xf96b, 0xa467,
+    0xc959, 0x003f, 0xc96e, 0xc96f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa662, 0xa666, 0xc9c9, 0x003f, 0xa664, 0xa663, 0xc9c8, 0xa665,
+    0xa661, 0x003f, 0x003f, 0xa660, 0xc9ca, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xa7a6, 0x003f, 0x003f, 0xa7a3, 0x003f,
+    0xa77d, 0xcaaa, 0x003f, 0x003f, 0x003f, 0xcaab, 0x003f, 0xa7a1,
+    0x003f, 0xcaad, 0xa77b, 0xcaae, 0xcaac, 0xa77e, 0xa7a2, 0xa7a5,
+    0xa7a4, 0xa77c, 0xcaaf, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xa959, 0xcbfe, 0x003f, 0xa95b, 0x003f, 0xa95a, 0x003f,
+    0xcc40, 0xa958, 0xa957, 0xcbf5, 0x003f, 0xcbf4, 0x003f, 0xcbf2,
+    0xcbf7, 0xcbf6, 0xcbf3, 0xcbfc, 0xcbfd, 0xcbfa, 0xcbf8, 0xa956,
+    0x003f, 0x003f, 0x003f, 0xcbfb, 0xa95c, 0xcc41, 0x003f, 0x003f,
+    0xcbf9, 0x003f, 0xabab, 0xa955, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xabac, 0xce54, 0x003f, 0x003f, 0xce5a,
+    0x003f, 0x003f, 0x003f, 0xabb2, 0xce58, 0xce5e, 0x003f, 0xce55,
+    0xce59, 0xce5b, 0xce5d, 0xce57, 0x003f, 0xce56, 0xce51, 0xce52,
+    0xabad, 0x003f, 0xabaf, 0xabae, 0xce53, 0xce5c, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xabb1, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xce50, 0xd153, 0x003f,
+    0xd152, 0xd157, 0xd14e, 0x003f, 0xd151, 0xd150, 0x003f, 0xd154,
+    0x003f, 0xd158, 0xae47, 0xae4a, 0x003f, 0x003f, 0xd14f, 0xd155,
+    0x003f, 0x003f, 0x003f, 0xae49, 0xd14a, 0x003f, 0xabb0, 0xd4ba,
+    0xd156, 0x003f, 0xd14d, 0x003f, 0xae48, 0xd14c, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd4b1, 0x003f, 0x003f, 0xb0ec,
+    0xb0f0, 0xd4c1, 0xd4af, 0xd4bd, 0xb0f1, 0xd4bf, 0x003f, 0xd4c5,
+    0x003f, 0xd4c9, 0x003f, 0x003f, 0xd4c0, 0xd4b4, 0xd4bc, 0x003f,
+    0xd4ca, 0xd4c8, 0xd4be, 0xd4b9, 0xd4b2, 0xd8a6, 0xd4b0, 0xb0f5,
+    0xd4b7, 0xb0f6, 0xb0f2, 0xd4ad, 0xd4c3, 0xd4b5, 0x003f, 0x003f,
+    /* 0x5800 .. 0x58ff */
+    0xd4b3, 0xd4c6, 0xb0f3, 0x003f, 0xd4cc, 0xb0ed, 0xb0ef, 0xd4bb,
+    0xd4b6, 0xae4b, 0xb0ee, 0xd4b8, 0xd4c7, 0xd4cb, 0xd4c2, 0x003f,
+    0xd4c4, 0x003f, 0x003f, 0x003f, 0xd4ae, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd8a1, 0x003f, 0xd8aa, 0xd8a9, 0xb3fa, 0xd8a2, 0x003f,
+    0xb3fb, 0xb3f9, 0x003f, 0xd8a4, 0xb3f6, 0xd8a8, 0x003f, 0xd8a3,
+    0xd8a5, 0xd87d, 0xb3f4, 0x003f, 0xd8b2, 0xd8b1, 0xd8ae, 0xb3f3,
+    0xb3f7, 0xb3f8, 0xd14b, 0xd8ab, 0xb3f5, 0xb0f4, 0xd8ad, 0xd87e,
+    0xd8b0, 0xd8af, 0x003f, 0xd8b3, 0x003f, 0xdcef, 0x003f, 0xd8ac,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd8a7, 0xdce7, 0xb6f4, 0xb6f7, 0xb6f2, 0xdce6, 0xdcea, 0xdce5,
+    0x003f, 0xb6ec, 0xb6f6, 0xdce2, 0xb6f0, 0xdce9, 0x003f, 0xb6ee,
+    0xb6ed, 0xdcec, 0xb6ef, 0xdcee, 0x003f, 0xdceb, 0xb6eb, 0x003f,
+    0x003f, 0x003f, 0xb6f5, 0xdcf0, 0xdce4, 0xdced, 0x003f, 0x003f,
+    0xdce3, 0x003f, 0x003f, 0xb6f1, 0x003f, 0xb6f3, 0x003f, 0xdce8,
+    0x003f, 0xdcf1, 0x003f, 0x003f, 0xe15d, 0xb9d0, 0xe163, 0x003f,
+    0x003f, 0xb9d5, 0xe15f, 0xe166, 0xe157, 0xb9d7, 0xb9d1, 0xe15c,
+    0xbc55, 0xe15b, 0xe164, 0xb9d2, 0x003f, 0xb9d6, 0xe15a, 0xe160,
+    0xe165, 0xe156, 0xb9d4, 0xe15e, 0x003f, 0x003f, 0xe162, 0xe168,
+    0xe158, 0xe161, 0x003f, 0xb9d3, 0xe167, 0x003f, 0x003f, 0x003f,
+    0xe159, 0x003f, 0x003f, 0x003f, 0xbc59, 0xe54b, 0xbc57, 0xbc56,
+    0xe54d, 0xe552, 0x003f, 0xe54e, 0x003f, 0xe551, 0xbc5c, 0x003f,
+    0xbea5, 0xbc5b, 0x003f, 0xe54a, 0xe550, 0x003f, 0xbc5a, 0xe54f,
+    0x003f, 0xe54c, 0x003f, 0xbc58, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe94d, 0xf9d9, 0xe94f, 0xe94a, 0xbec1, 0xe94c,
+    0x003f, 0xbec0, 0xe94e, 0x003f, 0x003f, 0xbec3, 0xe950, 0xbec2,
+    0xe949, 0xe94b, 0x003f, 0x003f, 0x003f, 0x003f, 0xc0a5, 0xeccc,
+    0x003f, 0xc0a4, 0xeccd, 0xc0a3, 0xeccb, 0xc0a2, 0xecca, 0x003f,
+    0xc253, 0xc252, 0xf1f6, 0xf1f8, 0x003f, 0xf1f7, 0xc361, 0xc362,
+    0x003f, 0x003f, 0xc363, 0xf442, 0xc45b, 0x003f, 0x003f, 0xf7d3,
+    0xf7d2, 0xc5f2, 0x003f, 0xa468, 0xa4d0, 0x003f, 0x003f, 0xa7a7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xce5f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb3fc, 0xb3fd, 0x003f, 0xdcf2, 0xb9d8, 0xe169, 0xe553,
+    /* 0x5900 .. 0x59ff */
+    0x003f, 0x003f, 0x003f, 0xc95a, 0x003f, 0x003f, 0xcab0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xcc42, 0xce60, 0xd159, 0xae4c,
+    0x003f, 0x003f, 0xf1f9, 0x003f, 0xc4dc, 0xa469, 0xa57e, 0xc970,
+    0x003f, 0xa667, 0xa668, 0x003f, 0xa95d, 0x003f, 0x003f, 0x003f,
+    0xb0f7, 0x003f, 0xb9da, 0x003f, 0xb9db, 0xb9d9, 0x003f, 0xa46a,
+    0x003f, 0xa4d1, 0xa4d3, 0xa4d2, 0xc95b, 0xa4d4, 0xa5a1, 0xc971,
+    0x003f, 0xa5a2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa669,
+    0xa66a, 0x003f, 0x003f, 0x003f, 0xc9cb, 0x003f, 0xa7a8, 0x003f,
+    0xcab1, 0x003f, 0x003f, 0x003f, 0xa961, 0xcc43, 0x003f, 0xa95f,
+    0xa960, 0xa95e, 0xd15a, 0x003f, 0x003f, 0x003f, 0xabb6, 0xabb5,
+    0xabb7, 0xabb4, 0x003f, 0xce61, 0xa962, 0xabb3, 0x003f, 0xae4d,
+    0xae4e, 0x003f, 0xae4f, 0x003f, 0xd4cd, 0x003f, 0x003f, 0x003f,
+    0xb3fe, 0xd8b4, 0xb0f8, 0x003f, 0x003f, 0x003f, 0x003f, 0xb6f8,
+    0x003f, 0xb9dd, 0xb9dc, 0xe16a, 0x003f, 0xbc5d, 0xbec4, 0x003f,
+    0xefc0, 0xf6da, 0xf7d4, 0xa46b, 0xa5a3, 0x003f, 0xa5a4, 0xc9d1,
+    0xa66c, 0xa66f, 0x003f, 0xc9cf, 0xc9cd, 0xa66e, 0xc9d0, 0xc9d2,
+    0xc9cc, 0xa671, 0xa670, 0xa66d, 0xa66b, 0xc9ce, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xa7b3, 0x003f, 0x003f, 0xa7b0, 0xcab6, 0xcab9,
+    0xcab8, 0x003f, 0xa7aa, 0xa7b2, 0x003f, 0x003f, 0xa7af, 0xcab5,
+    0xcab3, 0xa7ae, 0x003f, 0x003f, 0x003f, 0xa7a9, 0xa7ac, 0x003f,
+    0xcab4, 0xcabb, 0xcab7, 0xa7ad, 0xa7b1, 0xa7b4, 0xcab2, 0xcaba,
+    0xa7ab, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa967, 0xa96f,
+    0x003f, 0xcc4f, 0xcc48, 0xa970, 0xcc53, 0xcc44, 0xcc4b, 0x003f,
+    0x003f, 0xa966, 0xcc45, 0xa964, 0xcc4c, 0xcc50, 0xa963, 0x003f,
+    0xcc51, 0xcc4a, 0x003f, 0xcc4d, 0x003f, 0xa972, 0xa969, 0xcc54,
+    0xcc52, 0x003f, 0xa96e, 0xa96c, 0xcc49, 0xa96b, 0xcc47, 0xcc46,
+    0xa96a, 0xa968, 0xa971, 0xa96d, 0xa965, 0x003f, 0xcc4e, 0x003f,
+    0xabb9, 0x003f, 0xabc0, 0xce6f, 0xabb8, 0xce67, 0xce63, 0x003f,
+    0xce73, 0xce62, 0x003f, 0xabbb, 0xce6c, 0xabbe, 0xabc1, 0x003f,
+    0xabbc, 0xce70, 0xabbf, 0x003f, 0xae56, 0xce76, 0xce64, 0x003f,
+    0x003f, 0xce66, 0xce6d, 0xce71, 0xce75, 0xce72, 0xce6b, 0xce6e,
+    0x003f, 0x003f, 0xce68, 0xabc3, 0xce6a, 0xce69, 0xce74, 0xabba,
+    /* 0x5a00 .. 0x5aff */
+    0xce65, 0xabc2, 0x003f, 0xabbd, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xae5c, 0xd162, 0x003f, 0xae5b, 0x003f, 0x003f, 0xd160,
+    0x003f, 0xae50, 0x003f, 0xae55, 0x003f, 0xd15f, 0xd15c, 0xd161,
+    0xae51, 0xd15b, 0x003f, 0xae54, 0xae52, 0x003f, 0xd163, 0xae53,
+    0xae57, 0x003f, 0x003f, 0xae58, 0x003f, 0xae5a, 0x003f, 0x003f,
+    0x003f, 0xae59, 0x003f, 0x003f, 0x003f, 0xd15d, 0xd15e, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd164, 0x003f, 0xd4d4, 0xb0f9, 0xd8c2,
+    0xd4d3, 0xd4e6, 0x003f, 0x003f, 0xb140, 0x003f, 0xd4e4, 0x003f,
+    0xb0fe, 0xb0fa, 0xd4ed, 0xd4dd, 0xd4e0, 0x003f, 0xb143, 0xd4ea,
+    0xd4e2, 0xb0fb, 0xb144, 0x003f, 0xd4e7, 0xd4e5, 0x003f, 0x003f,
+    0xd4d6, 0xd4eb, 0xd4df, 0xd4da, 0x003f, 0xd4d0, 0xd4ec, 0xd4dc,
+    0xd4cf, 0x003f, 0xb142, 0xd4e1, 0xd4ee, 0xd4de, 0xd4d2, 0xd4d7,
+    0xd4ce, 0x003f, 0xb141, 0x003f, 0xd4db, 0xd4d8, 0xb0fc, 0xd4d1,
+    0x003f, 0xd4e9, 0xb0fd, 0x003f, 0xd4d9, 0xd4d5, 0x003f, 0x003f,
+    0xd4e8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb440,
+    0xd8bb, 0x003f, 0xd8b8, 0xd8c9, 0xd8bd, 0xd8ca, 0x003f, 0xb442,
+    0x003f, 0x003f, 0x003f, 0xd8c6, 0xd8c3, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd8c4, 0xd8c7, 0xd8cb, 0x003f, 0xd4e3, 0xd8cd,
+    0xdd47, 0x003f, 0xb443, 0xd8ce, 0xd8b6, 0xd8c0, 0x003f, 0xd8c5,
+    0x003f, 0x003f, 0xb441, 0xb444, 0xd8cc, 0xd8cf, 0xd8ba, 0xd8b7,
+    0x003f, 0x003f, 0xd8b9, 0x003f, 0x003f, 0xd8be, 0xd8bc, 0xb445,
+    0x003f, 0xd8c8, 0x003f, 0x003f, 0xd8bf, 0x003f, 0xd8c1, 0xd8b5,
+    0xdcfa, 0xdcf8, 0xb742, 0xb740, 0xdd43, 0xdcf9, 0xdd44, 0xdd40,
+    0xdcf7, 0xdd46, 0xdcf6, 0xdcfd, 0xb6fe, 0xb6fd, 0xb6fc, 0xdcfb,
+    0xdd41, 0xb6f9, 0xb741, 0x003f, 0xdcf4, 0x003f, 0xdcfe, 0xdcf3,
+    0xdcfc, 0xb6fa, 0xdd42, 0xdcf5, 0xb6fb, 0xdd45, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe16e, 0xb9e2, 0xb9e1,
+    0xb9e3, 0xe17a, 0xe170, 0xe176, 0xe16b, 0xe179, 0xe178, 0xe17c,
+    0xe175, 0xb9de, 0xe174, 0xb9e4, 0x003f, 0xe16d, 0xb9df, 0x003f,
+    0xe17b, 0xb9e0, 0xe16f, 0xe172, 0xe177, 0xe171, 0xe16c, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe173, 0xe555, 0xbc61, 0xe558, 0xe557,
+    0xe55a, 0xe55c, 0xf9dc, 0xbc5f, 0x003f, 0xe556, 0x003f, 0xe554,
+    /* 0x5b00 .. 0x5bff */
+    0x003f, 0xe55d, 0xe55b, 0xe559, 0x003f, 0xe55f, 0x003f, 0xe55e,
+    0xbc63, 0xbc5e, 0x003f, 0xbc60, 0xbc62, 0x003f, 0x003f, 0xe560,
+    0xe957, 0x003f, 0x003f, 0xe956, 0xe955, 0x003f, 0xe958, 0xe951,
+    0x003f, 0xe952, 0xe95a, 0xe953, 0x003f, 0xbec5, 0xe95c, 0x003f,
+    0xe95b, 0xe954, 0x003f, 0xecd1, 0xc0a8, 0xeccf, 0xecd4, 0xecd3,
+    0xe959, 0x003f, 0xc0a7, 0x003f, 0xecd2, 0xecce, 0xecd6, 0xecd5,
+    0xc0a6, 0x003f, 0xecd0, 0x003f, 0xbec6, 0x003f, 0x003f, 0x003f,
+    0xc254, 0x003f, 0x003f, 0x003f, 0xefc1, 0xf1fa, 0xf1fb, 0xf1fc,
+    0xc45c, 0x003f, 0x003f, 0xc45d, 0x003f, 0xf443, 0x003f, 0xf5c8,
+    0xf5c7, 0x003f, 0x003f, 0xf6db, 0xf6dc, 0xf7d5, 0xf8a7, 0x003f,
+    0xa46c, 0xa46d, 0x003f, 0xa46e, 0xa4d5, 0xa5a5, 0xc9d3, 0xa672,
+    0xa673, 0x003f, 0xa7b7, 0xa7b8, 0xa7b6, 0xa7b5, 0x003f, 0xa973,
+    0x003f, 0x003f, 0xcc55, 0xa975, 0xa974, 0xcc56, 0x003f, 0x003f,
+    0x003f, 0xabc4, 0x003f, 0xae5d, 0xd165, 0x003f, 0xd4f0, 0x003f,
+    0xb145, 0xb447, 0xd4ef, 0xb446, 0x003f, 0xb9e5, 0x003f, 0xe17d,
+    0xbec7, 0x003f, 0xc0a9, 0xecd7, 0x003f, 0xc45e, 0x003f, 0xc570,
+    0x003f, 0xc972, 0x003f, 0xa5a6, 0xc973, 0xa676, 0x003f, 0xa674,
+    0xa675, 0xa677, 0x003f, 0xa7ba, 0xa7b9, 0x003f, 0xcabc, 0xa7bb,
+    0x003f, 0x003f, 0xcabd, 0xcc57, 0x003f, 0xcc58, 0x003f, 0xa976,
+    0xa978, 0xa97a, 0xa977, 0xa97b, 0xa979, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xabc8, 0xabc5, 0xabc7, 0xabc9, 0xabc6, 0xd166,
+    0xce77, 0x003f, 0x003f, 0x003f, 0xd168, 0xd167, 0xae63, 0x003f,
+    0xae5f, 0x003f, 0x003f, 0xae60, 0xae62, 0xae64, 0xae61, 0x003f,
+    0xae66, 0xae65, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb14a,
+    0xd4f2, 0xd4f1, 0xb149, 0x003f, 0xb148, 0xb147, 0xb14b, 0xb146,
+    0x003f, 0x003f, 0xd8d5, 0xd8d2, 0xb449, 0xd8d1, 0xd8d6, 0x003f,
+    0xb44b, 0xd8d4, 0xb448, 0xb44a, 0xd8d3, 0x003f, 0xdd48, 0x003f,
+    0xdd49, 0xdd4a, 0x003f, 0x003f, 0x003f, 0x003f, 0xb9e6, 0xb9ee,
+    0xe17e, 0xb9e8, 0xb9ec, 0xe1a1, 0xb9ed, 0xb9e9, 0xb9ea, 0xb9e7,
+    0xb9eb, 0xbc66, 0xd8d0, 0xbc67, 0xbc65, 0x003f, 0xbc64, 0xe95d,
+    0xbec8, 0xecd8, 0xecd9, 0x003f, 0x003f, 0xc364, 0xc45f, 0x003f,
+    0xa46f, 0x003f, 0xa678, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x5c00 .. 0x5cff */
+    0x003f, 0xabca, 0x003f, 0xd169, 0xae67, 0x003f, 0x003f, 0xb14e,
+    0xb14d, 0xb14c, 0xb44c, 0xb44d, 0xd8d7, 0xb9ef, 0xbec9, 0xa470,
+    0xc95c, 0xa4d6, 0xc974, 0x003f, 0x003f, 0xc9d4, 0xa679, 0x003f,
+    0x003f, 0x003f, 0xa97c, 0x003f, 0x003f, 0x003f, 0x003f, 0xdd4b,
+    0x003f, 0x003f, 0xa471, 0x003f, 0xa4d7, 0xc9d5, 0x003f, 0x003f,
+    0xcabe, 0x003f, 0xcabf, 0x003f, 0xa7bc, 0x003f, 0x003f, 0x003f,
+    0xd8d8, 0xb44e, 0x003f, 0xdd4c, 0x003f, 0x003f, 0x003f, 0xc0aa,
+    0xa472, 0xa4a8, 0xa4d8, 0xc975, 0xa5a7, 0x003f, 0xa7c0, 0xa7bf,
+    0xa7bd, 0xa7be, 0x003f, 0x003f, 0xcc59, 0xa97e, 0xa9a1, 0xcc5a,
+    0xa97d, 0x003f, 0x003f, 0xabce, 0xce78, 0xabcd, 0xabcb, 0xabcc,
+    0xae6a, 0xae68, 0x003f, 0x003f, 0xd16b, 0xae69, 0xd16a, 0x003f,
+    0xae5e, 0xd4f3, 0x003f, 0x003f, 0xb150, 0xb151, 0x003f, 0x003f,
+    0xb14f, 0x003f, 0xb9f0, 0xe1a2, 0xbc68, 0xbc69, 0x003f, 0xe561,
+    0xc0ab, 0xefc2, 0xefc3, 0x003f, 0xc4dd, 0xf8a8, 0xc94b, 0xa4d9,
+    0x003f, 0xa473, 0x003f, 0xc977, 0xc976, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xa67a, 0xc9d7, 0xc9d8, 0xc9d6, 0x003f, 0xc9d9, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcac7, 0x003f,
+    0xcac2, 0xcac4, 0xcac6, 0xcac3, 0xa7c4, 0xcac0, 0x003f, 0xcac1,
+    0xa7c1, 0xa7c2, 0xcac5, 0xcac8, 0xa7c3, 0xcac9, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcc68, 0x003f, 0xcc62,
+    0xcc5d, 0xa9a3, 0xcc65, 0xcc63, 0xcc5c, 0xcc69, 0xcc6c, 0xcc67,
+    0xcc60, 0xa9a5, 0xcc66, 0xa9a6, 0xcc61, 0xcc64, 0xcc5b, 0xcc5f,
+    0xcc6b, 0xa9a7, 0x003f, 0xa9a8, 0x003f, 0xcc5e, 0xcc6a, 0xa9a2,
+    0xa9a4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xceab, 0xcea4,
+    0xceaa, 0xcea3, 0xcea5, 0xce7d, 0xce7b, 0x003f, 0xceac, 0xcea9,
+    0xce79, 0x003f, 0xabd0, 0xcea7, 0xcea8, 0x003f, 0xcea6, 0xce7c,
+    0xce7a, 0xabcf, 0xcea2, 0xce7e, 0x003f, 0x003f, 0xcea1, 0xcead,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xae6f, 0x003f, 0xae6e, 0x003f, 0xd16c, 0xae6b, 0xd16e, 0x003f,
+    0xae70, 0xd16f, 0x003f, 0x003f, 0xae73, 0x003f, 0xae71, 0xd170,
+    0xceae, 0xd172, 0x003f, 0xae6d, 0x003f, 0xae6c, 0x003f, 0xd16d,
+    /* 0x5d00 .. 0x5dff */
+    0xd171, 0xae72, 0x003f, 0x003f, 0x003f, 0x003f, 0xb153, 0xb152,
+    0x003f, 0x003f, 0x003f, 0xd4f5, 0xd4f9, 0xd4fb, 0xb154, 0xd4fe,
+    0x003f, 0xb158, 0xd541, 0x003f, 0xb15a, 0x003f, 0xb156, 0xb15e,
+    0x003f, 0xb15b, 0xd4f7, 0xb155, 0x003f, 0xd4f6, 0xd4f4, 0xd543,
+    0xd4f8, 0x003f, 0xb157, 0xd542, 0xb15c, 0xd4fd, 0xd4fc, 0xb15d,
+    0xd4fa, 0xb159, 0x003f, 0x003f, 0x003f, 0x003f, 0xd544, 0x003f,
+    0xd540, 0xd8e7, 0xd8ee, 0xd8e3, 0xb451, 0xd8df, 0xd8ef, 0xd8d9,
+    0xd8ec, 0xd8ea, 0xd8e4, 0x003f, 0xd8ed, 0xd8e6, 0x003f, 0xd8de,
+    0xd8f0, 0xd8dc, 0xd8e9, 0xd8da, 0x003f, 0xd8f1, 0x003f, 0xb452,
+    0x003f, 0xd8eb, 0xdd4f, 0xd8dd, 0xb44f, 0x003f, 0xd8e1, 0x003f,
+    0xb450, 0xd8e0, 0xd8e5, 0x003f, 0x003f, 0xd8e2, 0x003f, 0x003f,
+    0x003f, 0xd8e8, 0x003f, 0x003f, 0x003f, 0x003f, 0xdd53, 0x003f,
+    0x003f, 0x003f, 0xdd56, 0xdd4e, 0x003f, 0xdd50, 0x003f, 0xdd55,
+    0xdd54, 0xb743, 0x003f, 0xd8db, 0xdd52, 0x003f, 0x003f, 0xb744,
+    0x003f, 0xdd4d, 0xdd51, 0x003f, 0x003f, 0x003f, 0x003f, 0xe1a9,
+    0x003f, 0xe1b0, 0xe1a7, 0x003f, 0xe1ae, 0xe1a5, 0xe1ad, 0xe1b1,
+    0xe1a4, 0xe1a8, 0xe1a3, 0x003f, 0xb9f1, 0x003f, 0xe1a6, 0xb9f2,
+    0xe1ac, 0xe1ab, 0xe1aa, 0x003f, 0x003f, 0xe1af, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe565, 0xe567, 0xbc6b, 0xe568, 0x003f, 0xe563,
+    0x003f, 0xe562, 0xe56c, 0x003f, 0xe56a, 0xbc6a, 0xe56d, 0xe564,
+    0xe569, 0xe56b, 0xe566, 0x003f, 0x003f, 0x003f, 0x003f, 0xe961,
+    0xe966, 0xe960, 0xe965, 0x003f, 0xe95e, 0xe968, 0xe964, 0xe969,
+    0xe963, 0xe95f, 0xe967, 0x003f, 0xe96a, 0xe962, 0x003f, 0xecda,
+    0xc0af, 0x003f, 0xc0ad, 0x003f, 0xc0ac, 0xc0ae, 0x003f, 0x003f,
+    0xefc4, 0x003f, 0xf172, 0xf1fd, 0x003f, 0x003f, 0xf444, 0xf445,
+    0x003f, 0xc460, 0x003f, 0xf5c9, 0x003f, 0xc4de, 0x003f, 0xf5ca,
+    0x003f, 0xf6de, 0xc572, 0x003f, 0xc571, 0xf6dd, 0xc5c9, 0x003f,
+    0xf7d6, 0x003f, 0x003f, 0x003f, 0x003f, 0xa474, 0xa67b, 0xc9da,
+    0xcaca, 0xa8b5, 0xb15f, 0x003f, 0x003f, 0xa475, 0xa5aa, 0xa5a9,
+    0xa5a8, 0x003f, 0x003f, 0xa7c5, 0x003f, 0x003f, 0xae74, 0x003f,
+    0xdd57, 0xa476, 0xa477, 0xa478, 0xa4da, 0x003f, 0x003f, 0xabd1,
+    0x003f, 0xceaf, 0x003f, 0x003f, 0x003f, 0xb453, 0xa479, 0xc95d,
+    /* 0x5e00 .. 0x5eff */
+    0x003f, 0x003f, 0xa5ab, 0xa5ac, 0xc978, 0x003f, 0xa67c, 0x003f,
+    0x003f, 0x003f, 0xcacb, 0x003f, 0xa7c6, 0x003f, 0xcacc, 0x003f,
+    0x003f, 0xa9ae, 0x003f, 0x003f, 0xcc6e, 0xa9ac, 0xa9ab, 0xcc6d,
+    0xa9a9, 0xcc6f, 0xa9aa, 0xa9ad, 0x003f, 0xabd2, 0x003f, 0xabd4,
+    0xceb3, 0xceb0, 0xceb1, 0xceb2, 0xceb4, 0xabd3, 0x003f, 0x003f,
+    0xd174, 0xd173, 0x003f, 0xae76, 0x003f, 0xae75, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb162, 0xd546, 0x003f, 0xb161, 0xb163,
+    0xb160, 0x003f, 0x003f, 0x003f, 0x003f, 0xb455, 0xd545, 0x003f,
+    0xb456, 0xd8f3, 0x003f, 0xb457, 0xd8f2, 0xb454, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdd5a, 0xdd5c, 0xb745, 0xdd5b, 0xdd59, 0xdd58,
+    0x003f, 0x003f, 0x003f, 0xe1b4, 0xb9f7, 0xb9f5, 0x003f, 0xb9f6,
+    0xe1b2, 0xe1b3, 0x003f, 0xb9f3, 0xe571, 0xe56f, 0x003f, 0xbc6d,
+    0xe570, 0xbc6e, 0xbc6c, 0xb9f4, 0x003f, 0x003f, 0xe96d, 0xe96b,
+    0xe96c, 0xe56e, 0xecdc, 0xc0b0, 0xecdb, 0xefc5, 0xefc6, 0xe96e,
+    0xf1fe, 0x003f, 0xa47a, 0xa5ad, 0xa67e, 0xc9db, 0xa67d, 0x003f,
+    0xa9af, 0xb746, 0x003f, 0xa4db, 0xa5ae, 0xabd5, 0xb458, 0x003f,
+    0xc979, 0x003f, 0xc97a, 0x003f, 0xc9dc, 0x003f, 0x003f, 0xa7c8,
+    0xcad0, 0xcace, 0xa7c9, 0xcacd, 0xcacf, 0xcad1, 0x003f, 0xa7c7,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa9b3, 0xa9b4, 0xa9b1,
+    0x003f, 0x003f, 0xa9b0, 0xceb8, 0xa9b2, 0x003f, 0x003f, 0x003f,
+    0xabd6, 0x003f, 0xceb7, 0xceb9, 0xceb6, 0xceba, 0xabd7, 0xae79,
+    0xd175, 0x003f, 0xd177, 0xae77, 0xd178, 0xae78, 0xd176, 0x003f,
+    0xceb5, 0xd547, 0xd54a, 0xd54b, 0xd548, 0xb167, 0xb166, 0xb164,
+    0xb165, 0xd549, 0x003f, 0x003f, 0x003f, 0x003f, 0xb168, 0x003f,
+    0x003f, 0xb45a, 0xb45b, 0x003f, 0xb45c, 0xdd5d, 0xdd5f, 0xdd61,
+    0xb748, 0xb747, 0xb459, 0xdd60, 0xdd5e, 0x003f, 0xe1b8, 0x003f,
+    0x003f, 0xe1b6, 0xe1bc, 0xb9f8, 0xe1bd, 0xe1ba, 0xb9f9, 0xe1b7,
+    0xe1b5, 0xe1bb, 0xbc70, 0xe573, 0xe1b9, 0xbc72, 0xe574, 0xbc71,
+    0xbc74, 0xe575, 0xbc6f, 0xbc73, 0x003f, 0xe973, 0xe971, 0xe970,
+    0xe972, 0xe96f, 0x003f, 0x003f, 0xc366, 0x003f, 0xf446, 0xf447,
+    0x003f, 0xf5cb, 0xf6df, 0xc655, 0x003f, 0x003f, 0xa9b5, 0xa7ca,
+    0x003f, 0x003f, 0xabd8, 0x003f, 0x003f, 0x003f, 0xa47b, 0xa4dc,
+    /* 0x5f00 .. 0x5fff */
+    0x003f, 0xa5af, 0xc9dd, 0x003f, 0xa7cb, 0xcad2, 0x003f, 0xcebb,
+    0xabd9, 0x003f, 0xb9fa, 0xa47c, 0x003f, 0x003f, 0x003f, 0xa6a1,
+    0x003f, 0x003f, 0xb749, 0xa47d, 0xa4dd, 0xa4de, 0x003f, 0xa5b1,
+    0xa5b0, 0x003f, 0xc9de, 0xa6a2, 0x003f, 0xcad3, 0x003f, 0xa7cc,
+    0x003f, 0x003f, 0xcc71, 0xcc72, 0xcc73, 0x003f, 0xa9b6, 0xa9b7,
+    0xcc70, 0xa9b8, 0x003f, 0x003f, 0x003f, 0xabda, 0xcebc, 0x003f,
+    0xd17a, 0xae7a, 0x003f, 0xd179, 0x003f, 0xb169, 0xd54c, 0xb16a,
+    0xd54d, 0x003f, 0x003f, 0x003f, 0xb45d, 0x003f, 0x003f, 0x003f,
+    0xdd62, 0x003f, 0x003f, 0xe1bf, 0xe1be, 0x003f, 0xb9fb, 0x003f,
+    0xbc75, 0xe576, 0xbeca, 0xe974, 0xc0b1, 0x003f, 0xc573, 0xf7d8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xcc74, 0x003f, 0xcebd, 0xb16b,
+    0xd8f4, 0xb74a, 0x003f, 0x003f, 0x003f, 0xc255, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xa7ce, 0x003f, 0xa7cd, 0xabdb, 0x003f, 0xd17b,
+    0x003f, 0xb16d, 0xb343, 0xb16e, 0xb16c, 0xb45e, 0x003f, 0xe1c0,
+    0xb9fc, 0xbc76, 0x003f, 0xc94c, 0xc9df, 0x003f, 0xcad5, 0xa7cf,
+    0xcad4, 0xa7d0, 0x003f, 0x003f, 0xa9bc, 0xcc77, 0xcc76, 0xa9bb,
+    0xa9b9, 0xa9ba, 0xcc75, 0x003f, 0x003f, 0xabdd, 0xcebe, 0xabe0,
+    0xabdc, 0xabe2, 0xabde, 0xabdf, 0xabe1, 0x003f, 0x003f, 0x003f,
+    0xae7d, 0xae7c, 0xae7b, 0x003f, 0x003f, 0x003f, 0xd54f, 0xb16f,
+    0xb172, 0xb170, 0x003f, 0xd54e, 0xb175, 0x003f, 0xb171, 0xd550,
+    0xb174, 0xb173, 0x003f, 0x003f, 0x003f, 0xd8f6, 0xd8f5, 0x003f,
+    0xb461, 0xb45f, 0xb460, 0xd8f7, 0xb74b, 0xdd64, 0xb74c, 0xdd63,
+    0x003f, 0x003f, 0xe577, 0x003f, 0x003f, 0xbc78, 0xe1c1, 0xbc77,
+    0x003f, 0xb9fd, 0x003f, 0xecde, 0xe975, 0xc0b2, 0xecdd, 0xf240,
+    0xf448, 0xf449, 0x003f, 0xa4df, 0x003f, 0xa5b2, 0x003f, 0x003f,
+    0x003f, 0xc97b, 0x003f, 0x003f, 0xa7d2, 0xa7d4, 0x003f, 0xc9e2,
+    0xcad8, 0xcad7, 0xcad6, 0x003f, 0xc9e1, 0xc9e0, 0xa6a4, 0xa7d3,
+    0xa7d1, 0xa6a3, 0x003f, 0x003f, 0x003f, 0xa9bd, 0xcc78, 0x003f,
+    0xa9be, 0xcadd, 0x003f, 0xcadf, 0xcade, 0xcc79, 0x003f, 0x003f,
+    0xcada, 0x003f, 0xa7d8, 0xa7d6, 0x003f, 0xcad9, 0xcadb, 0xcae1,
+    0x003f, 0xa7d5, 0x003f, 0xcadc, 0xcae5, 0xa9c0, 0x003f, 0xcae2,
+    0xa7d7, 0x003f, 0xcae0, 0xcae3, 0x003f, 0xa9bf, 0x003f, 0xa9c1,
+    /* 0x6000 .. 0x60ff */
+    0xcae4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xccaf, 0xcca2, 0xcc7e, 0xccae, 0xcca9, 0xabe7, 0xa9c2,
+    0xccaa, 0xccad, 0xabe3, 0xccac, 0xa9c3, 0xa9c8, 0xa9c6, 0xcca3,
+    0x003f, 0xcc7c, 0xcca5, 0xa9cd, 0xccb0, 0xabe4, 0xcca6, 0x003f,
+    0xabe5, 0xa9c9, 0xcca8, 0x003f, 0xcecd, 0xabe6, 0xcc7b, 0xa9ca,
+    0xabe8, 0xa9cb, 0xa9c7, 0xa9cc, 0xcca7, 0xcc7a, 0xccab, 0xa9c4,
+    0x003f, 0x003f, 0xcc7d, 0xcca4, 0xcca1, 0xa9c5, 0x003f, 0xcebf,
+    0x003f, 0xcec0, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xceca, 0xd1a1, 0xcecb, 0xabee, 0xcece, 0xcec4, 0xabed, 0xcec6,
+    0x003f, 0xcec7, 0x003f, 0x003f, 0xcec9, 0xabe9, 0x003f, 0x003f,
+    0xaea3, 0x003f, 0xf9da, 0xcec5, 0xcec1, 0xaea4, 0x003f, 0x003f,
+    0xcecf, 0xae7e, 0xd17d, 0xcec8, 0x003f, 0xd17c, 0xcec3, 0xcecc,
+    0x003f, 0x003f, 0xabec, 0xaea1, 0xabf2, 0xaea2, 0xced0, 0xd17e,
+    0xabeb, 0xaea6, 0xabf1, 0xabf0, 0xabef, 0xaea5, 0xced1, 0xaea7,
+    0xabea, 0x003f, 0xcec2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb176,
+    0xd1a4, 0xd1a6, 0x003f, 0xd1a8, 0xaea8, 0xaeae, 0xd553, 0xd1ac,
+    0xd1a3, 0xb178, 0xd551, 0x003f, 0xaead, 0xaeab, 0xd1ae, 0x003f,
+    0xd552, 0x003f, 0xd1a5, 0x003f, 0xaeac, 0xd1a9, 0xaeaf, 0xd1ab,
+    0x003f, 0x003f, 0xaeaa, 0xd1aa, 0xd1ad, 0xd1a7, 0x003f, 0xaea9,
+    0xb179, 0x003f, 0xd1a2, 0xb177, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xb17a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd555, 0xd55e, 0xb464, 0x003f, 0xb17c, 0xb1a3, 0xb465, 0xd560,
+    0xb1aa, 0xd8f9, 0xd556, 0xb1a2, 0xb1a5, 0xb17e, 0xd554, 0xd562,
+    0xd565, 0xd949, 0x003f, 0xd563, 0xd8fd, 0xb1a1, 0xb1a8, 0xb1ac,
+    0xd55d, 0xd8f8, 0xd561, 0xb17b, 0xd8fa, 0xd564, 0xd8fc, 0xd559,
+    0x003f, 0xb462, 0x003f, 0xd557, 0xd558, 0xb1a7, 0x003f, 0x003f,
+    0xb1a6, 0xd55b, 0xb1ab, 0xd55f, 0xb1a4, 0xd55c, 0x003f, 0xb1a9,
+    0xb466, 0xb463, 0xd8fb, 0x003f, 0xd55a, 0x003f, 0xb17d, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xb46b, 0xb46f, 0xd940, 0xb751, 0xb46d, 0xd944, 0xb471, 0xdd65,
+    0xd946, 0xb753, 0xb469, 0xb46c, 0xd947, 0x003f, 0xd948, 0xd94e,
+    /* 0x6100 .. 0x61ff */
+    0xb473, 0xb754, 0x003f, 0xd94a, 0xd94f, 0xd943, 0xb75e, 0x003f,
+    0xb755, 0xb472, 0xd941, 0xd950, 0x003f, 0xb75d, 0xb470, 0xb74e,
+    0xd94d, 0x003f, 0xb474, 0xd945, 0xd8fe, 0xb46a, 0xd942, 0x003f,
+    0xd94b, 0x003f, 0xb74d, 0xb752, 0xb467, 0xd94c, 0x003f, 0xb750,
+    0x003f, 0x003f, 0x003f, 0xb468, 0x003f, 0x003f, 0x003f, 0xb75c,
+    0xe1c3, 0xdd70, 0x003f, 0xdd68, 0xe1c2, 0x003f, 0xdd6c, 0xdd6e,
+    0x003f, 0x003f, 0xdd6b, 0x003f, 0xb75b, 0x003f, 0xdd6a, 0xb75f,
+    0x003f, 0x003f, 0x003f, 0xe1d2, 0x003f, 0x003f, 0xb75a, 0xba40,
+    0xdd71, 0xe1c4, 0x003f, 0x003f, 0xb758, 0xdd69, 0xdd6d, 0xb9fe,
+    0xb74f, 0xdd66, 0xdd67, 0xba41, 0xb757, 0xb759, 0xb756, 0xdd6f,
+    0x003f, 0x003f, 0xe1c8, 0xe1c9, 0xe1ce, 0xbc7d, 0xe1d5, 0x003f,
+    0xba47, 0x003f, 0xba46, 0xe1d0, 0x003f, 0xbc7c, 0xe1c5, 0xba45,
+    0x003f, 0xe1d4, 0xba43, 0xba44, 0x003f, 0xe1d1, 0xe5aa, 0xbc7a,
+    0xb46e, 0x003f, 0xe1d3, 0xbca3, 0xe1cb, 0x003f, 0xbc7b, 0x003f,
+    0xbca2, 0xe1c6, 0xe1ca, 0xe1c7, 0xe1cd, 0xba48, 0xbc79, 0xba42,
+    0x003f, 0xe57a, 0xe1cf, 0x003f, 0xbca1, 0x003f, 0xbca4, 0x003f,
+    0xe1cc, 0x003f, 0xbc7e, 0xe579, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe57e, 0xbece, 0xe578, 0xe9a3, 0xe5a9, 0xbca8, 0x003f,
+    0xbca6, 0xbecc, 0xe5a6, 0xe5a2, 0xbcac, 0x003f, 0xe978, 0x003f,
+    0x003f, 0x003f, 0xbcaa, 0xe5a1, 0x003f, 0xe976, 0x003f, 0xe5a5,
+    0x003f, 0xe5a8, 0xe57d, 0x003f, 0xbcab, 0x003f, 0x003f, 0xbca5,
+    0xe977, 0xbecd, 0xe5a7, 0xbca7, 0xbca9, 0xe5a4, 0xbcad, 0xe5a3,
+    0xe57c, 0xe57b, 0xbecb, 0xe5ab, 0xe97a, 0xece0, 0xbed0, 0x003f,
+    0xe9a2, 0x003f, 0xe97e, 0x003f, 0xece1, 0x003f, 0xbed1, 0xe9a1,
+    0x003f, 0xe97c, 0xc0b4, 0xecdf, 0x003f, 0xe979, 0xe97b, 0xc0b5,
+    0xbed3, 0xc0b3, 0xbed2, 0xc0b7, 0xe97d, 0xbecf, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xefcf, 0x003f,
+    0xefc7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xece7, 0xefc8,
+    0xece3, 0x003f, 0x003f, 0xc256, 0xece5, 0xece4, 0xc0b6, 0xece2,
+    0xece6, 0xefd0, 0xefcc, 0xefce, 0x003f, 0xefc9, 0xefca, 0x003f,
+    0xefcd, 0xefcb, 0xc367, 0x003f, 0x003f, 0xc36a, 0xc369, 0xc368,
+    0xc461, 0xf44a, 0xc462, 0xf241, 0xc4df, 0xf5cc, 0xc4e0, 0xc574,
+    /* 0x6200 .. 0x62ff */
+    0xc5ca, 0xf7d9, 0x003f, 0xf7da, 0xf7db, 0x003f, 0x003f, 0xf9ba,
+    0xa4e0, 0xc97c, 0xa5b3, 0x003f, 0xa6a6, 0xa6a7, 0xa6a5, 0x003f,
+    0xa6a8, 0xa7da, 0xa7d9, 0x003f, 0xccb1, 0xa9cf, 0xa9ce, 0x003f,
+    0x003f, 0xd1af, 0xb1ad, 0xb1ae, 0x003f, 0x003f, 0x003f, 0xb475,
+    0xdd72, 0xb760, 0xb761, 0xdd74, 0xdd76, 0xdd75, 0x003f, 0xe1d7,
+    0x003f, 0xe1d6, 0xba49, 0xe1d8, 0x003f, 0xe5ac, 0xbcae, 0x003f,
+    0xbed4, 0x003f, 0xc0b8, 0xc257, 0xc0b9, 0x003f, 0xa4e1, 0x003f,
+    0x003f, 0x003f, 0xcae6, 0x003f, 0x003f, 0xccb2, 0xa9d1, 0xa9d0,
+    0xa9d2, 0xabf3, 0xced2, 0xced3, 0x003f, 0x003f, 0xd1b0, 0xaeb0,
+    0xb1af, 0xb476, 0xd951, 0xa4e2, 0x003f, 0xa47e, 0xa4e3, 0x003f,
+    0xc97d, 0xa5b7, 0xa5b6, 0xa5b4, 0xa5b5, 0x003f, 0x003f, 0x003f,
+    0xa6ab, 0xc9e9, 0xc9eb, 0xa6aa, 0xc9e3, 0x003f, 0xc9e4, 0x003f,
+    0xc9ea, 0xc9e6, 0xc9e8, 0xa6a9, 0xc9e5, 0xc9ec, 0xc9e7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa7e1, 0xa7ea, 0xa7e8,
+    0xcaf0, 0xcaed, 0xcaf5, 0xa7e6, 0xcaf6, 0x003f, 0xa7df, 0xcaf3,
+    0x003f, 0xa7e5, 0xcaef, 0xcaee, 0xa7e3, 0xcaf4, 0xa7e4, 0xa9d3,
+    0xa7de, 0xcaf1, 0x003f, 0xcae7, 0xa7db, 0x003f, 0xa7ee, 0xcaec,
+    0xcaf2, 0xa7e0, 0xa7e2, 0x003f, 0xcae8, 0x003f, 0xcae9, 0xcaea,
+    0x003f, 0xa7ed, 0xa7e7, 0xa7ec, 0xcaeb, 0xa7eb, 0xa7dd, 0xa7dc,
+    0xa7e9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa9e1, 0xccbe, 0xccb7, 0xa9dc, 0xa9ef, 0xccb3, 0xccba, 0xccbc,
+    0xccbf, 0xa9ea, 0x003f, 0xccbb, 0xccb4, 0xa9e8, 0xccb8, 0x003f,
+    0xccc0, 0xa9d9, 0x003f, 0xccbd, 0xa9e3, 0xa9e2, 0xccb6, 0xa9d7,
+    0x003f, 0x003f, 0xa9d8, 0x003f, 0xa9d6, 0x003f, 0xa9ee, 0xa9e6,
+    0xa9e0, 0xa9d4, 0xccb9, 0xa9df, 0xa9d5, 0xa9e7, 0xa9f0, 0xced4,
+    0xa9e4, 0xccb5, 0xa9da, 0xa9dd, 0xa9de, 0x003f, 0xa9ec, 0xa9ed,
+    0xa9eb, 0xa9e5, 0xa9e9, 0xa9db, 0xabf4, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xceda, 0xac41, 0xabf8, 0xabfa, 0xac40,
+    0xcee6, 0xabfd, 0xd1b1, 0xaeb1, 0xac43, 0xced7, 0xcedf, 0xabfe,
+    0xcede, 0xcedb, 0xcee3, 0xcee5, 0xabf7, 0xabfb, 0xac42, 0xaeb3,
+    /* 0x6300 .. 0x63ff */
+    0xcee0, 0xabf9, 0xac45, 0xced9, 0x003f, 0x003f, 0x003f, 0xabfc,
+    0xaeb2, 0xabf6, 0x003f, 0xced6, 0xcedd, 0xced5, 0xced8, 0xcedc,
+    0xd1b2, 0xac44, 0x003f, 0xcee1, 0xcee2, 0xcee4, 0xabf5, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xaec1, 0xd1be, 0xaebf, 0xaec0, 0xd1b4, 0xd1c4, 0x003f, 0xaeb6,
+    0x003f, 0x003f, 0xd566, 0xd1c6, 0xd1c0, 0x003f, 0xd1b7, 0x003f,
+    0xd1c9, 0xd1ba, 0xaebc, 0xd57d, 0xd1bd, 0xaebe, 0xaeb5, 0x003f,
+    0xd1cb, 0xd1bf, 0xaeb8, 0xd1b8, 0xd1b5, 0xd1b6, 0xaeb9, 0xd1c5,
+    0xd1cc, 0xaebb, 0xd1bc, 0xd1bb, 0xaec3, 0xaec2, 0xaeb4, 0xaeba,
+    0xaebd, 0xd1c8, 0x003f, 0x003f, 0xd1c2, 0xaeb7, 0xd1b3, 0xd1ca,
+    0xd1c1, 0xd1c3, 0xd1c7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd567, 0x003f, 0xb1b7,
+    0xb1cb, 0xb1ca, 0x003f, 0xb1bf, 0x003f, 0xd579, 0xd575, 0xd572,
+    0xd5a6, 0xb1ba, 0xb1b2, 0x003f, 0x003f, 0xd577, 0xb4a8, 0xb1b6,
+    0xd5a1, 0x003f, 0xb1cc, 0xb1c9, 0xd57b, 0xd56a, 0x003f, 0x003f,
+    0xb1c8, 0xd5a3, 0xd569, 0xb1bd, 0xb1c1, 0xd5a2, 0x003f, 0xd573,
+    0xb1c2, 0xb1bc, 0xd568, 0x003f, 0xb478, 0xd5a5, 0xd571, 0xb1c7,
+    0xd574, 0xd5a4, 0xb1c6, 0x003f, 0xd952, 0x003f, 0xb1b3, 0xd56f,
+    0xb1b8, 0xb1c3, 0x003f, 0xb1be, 0xd578, 0xd56e, 0xd56c, 0xd57e,
+    0xb1b0, 0xb1c4, 0xb1b4, 0xb477, 0xd57c, 0xb1b5, 0x003f, 0xb1b1,
+    0xb1c0, 0xb1bb, 0xb1b9, 0xd570, 0xb1c5, 0xd56d, 0xd57a, 0xd576,
+    0xd954, 0xd953, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd56b, 0xd964, 0x003f,
+    0xb47a, 0x003f, 0xd96a, 0xd959, 0xd967, 0xdd77, 0xb47d, 0xd96b,
+    0xd96e, 0xb47c, 0xd95c, 0xd96d, 0xd96c, 0xb47e, 0xd955, 0xb479,
+    0xb4a3, 0x003f, 0xb4a1, 0xd969, 0x003f, 0xd95f, 0xb4a5, 0xd970,
+    0xd968, 0xd971, 0xb4ad, 0xb4ab, 0xd966, 0xd965, 0x003f, 0xd963,
+    0xd95d, 0xb4a4, 0x003f, 0xb4a2, 0xd1b9, 0xd956, 0x003f, 0xddb7,
+    0xd957, 0xb47b, 0xb4aa, 0xdd79, 0x003f, 0xb4a6, 0xb4a7, 0xd958,
+    0xd96f, 0xdd78, 0xd960, 0xd95b, 0xb4a9, 0xd961, 0xd95e, 0x003f,
+    0x003f, 0xb4ae, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6400 .. 0x64ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb770, 0x003f,
+    0x003f, 0xdd7c, 0xddb1, 0xddb6, 0xddaa, 0xb76c, 0xddbb, 0xb769,
+    0xdd7a, 0x003f, 0xdd7b, 0xb762, 0xb76b, 0xdda4, 0xb76e, 0xb76f,
+    0xdda5, 0x003f, 0xddb2, 0xddb8, 0xb76a, 0x003f, 0xb764, 0xdda3,
+    0xdd7d, 0xddba, 0xdda8, 0xdda9, 0xdd7e, 0xddb4, 0xddab, 0xddb5,
+    0xddad, 0x003f, 0xb765, 0xe1d9, 0xb768, 0xb766, 0xddb9, 0xddb0,
+    0xddac, 0x003f, 0x003f, 0xdda1, 0xba53, 0xddaf, 0xb76d, 0xdda7,
+    0x003f, 0xdda6, 0x003f, 0x003f, 0x003f, 0xb767, 0xb763, 0xe1ee,
+    0xddb3, 0xddae, 0x003f, 0xdda2, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe1e9, 0x003f, 0xe1da, 0xe1e5, 0x003f,
+    0xe1ec, 0xba51, 0xb4ac, 0xe1ea, 0xba4c, 0x003f, 0x003f, 0x003f,
+    0xba4b, 0xe1f1, 0x003f, 0xe1db, 0xe1e8, 0xe1dc, 0xe1e7, 0xba4f,
+    0xe1eb, 0xd962, 0x003f, 0x003f, 0x003f, 0xe1f2, 0xe1e3, 0xba52,
+    0xe5ba, 0xbcaf, 0x003f, 0xe1f0, 0xe1ef, 0xba54, 0xe5ad, 0xbcb0,
+    0xe5ae, 0x003f, 0xe1df, 0xe1e0, 0xe1dd, 0xe1e2, 0xe1de, 0xe1f3,
+    0xba4e, 0xbcb1, 0xba50, 0xba55, 0x003f, 0xe1e1, 0x003f, 0xe1ed,
+    0x003f, 0x003f, 0xe1e6, 0x003f, 0x003f, 0xe5b1, 0x003f, 0xba4a,
+    0xbcb4, 0xe9aa, 0xe5b6, 0xe5b5, 0xe5b7, 0x003f, 0x003f, 0xe5b4,
+    0xbcb5, 0x003f, 0xbcbb, 0xbcb8, 0x003f, 0xbcb9, 0xe5af, 0xe5b2,
+    0xe5bc, 0xbcc1, 0xbcbf, 0x003f, 0xe5b3, 0xd95a, 0xbcb2, 0xe5b9,
+    0xe5b0, 0x003f, 0xbcc2, 0xe5b8, 0xba4d, 0xbcb7, 0xe1e4, 0x003f,
+    0x003f, 0xbcba, 0x003f, 0xbcbe, 0xbcc0, 0xbcbd, 0xbcbc, 0x003f,
+    0xbcb6, 0xe5bb, 0xbcb3, 0xbcc3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xbed8, 0xbed9, 0xe9a9, 0xbee2, 0xbedf,
+    0x003f, 0xbed6, 0xbedd, 0xe9ab, 0xbedb, 0xbed5, 0x003f, 0xbedc,
+    0x003f, 0xe9a8, 0xc0bb, 0xbed7, 0x003f, 0xbede, 0xc0ba, 0xe9a7,
+    0xe9a6, 0x003f, 0xbee0, 0x003f, 0xbee1, 0x003f, 0xe9a5, 0xe9a4,
+    0xc0bc, 0xe9ae, 0xbeda, 0xe9ac, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xc0bd, 0x003f, 0xc0c2, 0xecea, 0xecec, 0x003f, 0xc0bf, 0x003f,
+    0xeced, 0xece9, 0x003f, 0xeceb, 0xc0c0, 0xc0c3, 0x003f, 0xece8,
+    0xc0be, 0xc0c1, 0xc259, 0xe9ad, 0xc258, 0x003f, 0x003f, 0xc25e,
+    0xefd4, 0x003f, 0xc25c, 0xc25d, 0xefd7, 0xefd3, 0xc25a, 0xefd1,
+    /* 0x6500 .. 0x65ff */
+    0xc36b, 0xefd5, 0x003f, 0xefd6, 0xefd2, 0x003f, 0xc25b, 0xf242,
+    0x003f, 0xf245, 0x003f, 0x003f, 0xf246, 0xf244, 0xf247, 0xc36c,
+    0xf243, 0x003f, 0x003f, 0xf44e, 0xc464, 0xf44d, 0xf44c, 0xf44b,
+    0xc463, 0xc465, 0x003f, 0xf5cd, 0xc4e2, 0xc4e1, 0x003f, 0x003f,
+    0xf6e1, 0xf6e0, 0xf6e3, 0xc5cb, 0xc575, 0xf7dd, 0xf6e2, 0x003f,
+    0x003f, 0xf7dc, 0xc5cd, 0xc5cc, 0xc5f3, 0xf8a9, 0xf8ef, 0xa4e4,
+    0x003f, 0x003f, 0xd972, 0xe9af, 0x003f, 0x003f, 0xa6ac, 0xcaf7,
+    0xa7f1, 0xa7ef, 0x003f, 0xa7f0, 0x003f, 0xccc1, 0xa9f1, 0xac46,
+    0x003f, 0xcee7, 0x003f, 0xcee8, 0x003f, 0xac47, 0xd1ce, 0x003f,
+    0xaec4, 0xaec5, 0xd1cd, 0x003f, 0x003f, 0x003f, 0x003f, 0xb1d3,
+    0x003f, 0xb1cf, 0x003f, 0xd5a7, 0xb1d6, 0xb1d5, 0xb1ce, 0xb1d1,
+    0xb1d4, 0xb1d0, 0x003f, 0x003f, 0xd976, 0xb1cd, 0xb4af, 0x003f,
+    0x003f, 0x003f, 0xb4b1, 0xb4b2, 0xd975, 0xd978, 0xb4b0, 0xd973,
+    0xd977, 0x003f, 0xd974, 0x003f, 0xb771, 0x003f, 0x003f, 0xddbc,
+    0x003f, 0x003f, 0xba56, 0xe1f4, 0xbee3, 0xbcc4, 0xe5bd, 0xbcc5,
+    0xbcc6, 0xe5bf, 0xe5be, 0xe5c0, 0xe9b1, 0x003f, 0x003f, 0xe9b0,
+    0xecef, 0xecee, 0xc0c4, 0xc0c5, 0xf248, 0x003f, 0x003f, 0xa4e5,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd979, 0x003f, 0x003f, 0x003f,
+    0xb4b4, 0xb4b3, 0xddbd, 0x003f, 0xefd8, 0xc4e3, 0xf7de, 0xa4e6,
+    0x003f, 0xaec6, 0x003f, 0xb1d8, 0xb1d7, 0xd97a, 0xd97b, 0xb772,
+    0xe1f5, 0xba57, 0xe9b2, 0x003f, 0xa4e7, 0xa5b8, 0x003f, 0xa9f2,
+    0xccc2, 0x003f, 0xcee9, 0xac48, 0xb1d9, 0x003f, 0xd97c, 0xb4b5,
+    0xb773, 0x003f, 0xe5c1, 0xe5c2, 0x003f, 0x003f, 0xecf0, 0xc25f,
+    0xf8f0, 0xa4e8, 0x003f, 0xccc3, 0xa9f3, 0xac49, 0x003f, 0xceea,
+    0x003f, 0xaec7, 0xd1d2, 0xd1d0, 0xd1d1, 0xaec8, 0xd1cf, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb1db, 0xb1dc, 0xd5a8, 0xb1dd, 0xb1da,
+    0xd97d, 0x003f, 0xd97e, 0xddbe, 0x003f, 0x003f, 0xba59, 0xba58,
+    0x003f, 0x003f, 0xecf1, 0xefd9, 0x003f, 0xf24a, 0xf249, 0xf44f,
+    0x003f, 0xc95e, 0xac4a, 0x003f, 0x003f, 0xa4e9, 0xa5b9, 0x003f,
+    0xa6ae, 0xa6ad, 0x003f, 0x003f, 0xa6af, 0xa6b0, 0xc9ee, 0xc9ed,
+    0xcaf8, 0xa7f2, 0xcafb, 0xcafa, 0xcaf9, 0xcafc, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xa9f4, 0xccc9, 0xccc5, 0xccce, 0x003f, 0x003f,
+    /* 0x6600 .. 0x66ff */
+    0xa9fb, 0x003f, 0xa9f9, 0xccca, 0xccc6, 0xcccd, 0xa9f8, 0xaa40,
+    0xccc8, 0xccc4, 0xa9fe, 0xcccb, 0xa9f7, 0xcccc, 0xa9fa, 0xa9fc,
+    0xccd0, 0xcccf, 0xccc7, 0xa9f6, 0xa9f5, 0xa9fd, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xceef, 0xcef5, 0x003f, 0xac50,
+    0xac4d, 0xceec, 0xcef1, 0x003f, 0xac53, 0xac4b, 0xcef0, 0xac4e,
+    0xac51, 0x003f, 0x003f, 0xcef3, 0x003f, 0xac4c, 0xcef8, 0xac4f,
+    0x003f, 0xac52, 0xceed, 0xcef2, 0xcef6, 0xceee, 0xceeb, 0x003f,
+    0x003f, 0xcef7, 0xcef4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xaed0, 0xaec9, 0xaecc, 0x003f, 0xaecf, 0x003f, 0xd1d5,
+    0x003f, 0xaeca, 0xd1d3, 0x003f, 0xaece, 0x003f, 0x003f, 0xaecb,
+    0x003f, 0xd1d6, 0xaecd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd5ac, 0xb1df, 0xd5ab, 0xd5ad, 0xb1de, 0xb1e3, 0xd1d4,
+    0x003f, 0xd5aa, 0xd5ae, 0x003f, 0xb1e0, 0xd5a9, 0xb1e2, 0x003f,
+    0xb1e1, 0x003f, 0xd9a7, 0x003f, 0xd9a2, 0x003f, 0xb4b6, 0xb4ba,
+    0xb4b7, 0xd9a5, 0xd9a8, 0x003f, 0xb4b8, 0x003f, 0xb4b9, 0xb4be,
+    0xddc7, 0xd9a6, 0xb4bc, 0xd9a3, 0xd9a1, 0x003f, 0xb4bd, 0x003f,
+    0xd9a4, 0x003f, 0x003f, 0x003f, 0xb779, 0x003f, 0xddbf, 0xb776,
+    0xb777, 0xb775, 0xddc4, 0xddc3, 0xddc0, 0xb77b, 0x003f, 0x003f,
+    0xddc2, 0xb4bb, 0x003f, 0x003f, 0xddc6, 0xddc1, 0xb778, 0xb774,
+    0xb77a, 0xddc5, 0x003f, 0x003f, 0x003f, 0xba5c, 0x003f, 0xe1f8,
+    0xe1f7, 0xe1f6, 0xba5a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xba5b, 0xe5c5, 0xe5c8, 0xbcc8, 0x003f, 0x003f, 0xbcc7, 0xe5c9,
+    0xe5c4, 0xbcca, 0xe5c6, 0x003f, 0xbcc9, 0xe5c3, 0x003f, 0xe5c7,
+    0xbee9, 0xbee6, 0xe9bb, 0xe9ba, 0x003f, 0xe9b9, 0xe9b4, 0x003f,
+    0xe9b5, 0x003f, 0x003f, 0x003f, 0xbee7, 0x003f, 0xbee4, 0xbee8,
+    0xe9b3, 0xbee5, 0xe9b6, 0xe9b7, 0xe9bc, 0x003f, 0x003f, 0xe9b8,
+    0x003f, 0x003f, 0xecf2, 0x003f, 0x003f, 0x003f, 0xc0c7, 0x003f,
+    0xefdc, 0xc0c6, 0xefda, 0xefdb, 0xc260, 0xc36e, 0xf24b, 0x003f,
+    0xc36d, 0x003f, 0x003f, 0xf451, 0xf452, 0x003f, 0xc466, 0x003f,
+    0xf450, 0xc4e4, 0x003f, 0xf7df, 0xc5ce, 0xf8aa, 0xf8ab, 0x003f,
+    0xa4ea, 0x003f, 0xa6b1, 0xa6b2, 0xa7f3, 0x003f, 0xccd1, 0xac54,
+    0xaed1, 0xb1e4, 0x003f, 0x003f, 0xb0d2, 0x003f, 0xb4bf, 0xb4c0,
+    /* 0x6700 .. 0x67ff */
+    0xb3cc, 0xd9a9, 0x003f, 0xb77c, 0xe1fa, 0xe1f9, 0x003f, 0x003f,
+    0xa4eb, 0xa6b3, 0xccd2, 0xaa42, 0x003f, 0xaa41, 0x003f, 0xcef9,
+    0xcefa, 0x003f, 0xd1d7, 0xd1d8, 0xaed2, 0xaed3, 0x003f, 0xaed4,
+    0xd5af, 0x003f, 0x003f, 0xb1e6, 0x003f, 0xb4c2, 0x003f, 0xb4c1,
+    0xddc8, 0xdf7a, 0xe1fb, 0xe9bd, 0x003f, 0x003f, 0xc261, 0xc467,
+    0xa4ec, 0x003f, 0xa5bc, 0xa5bd, 0xa5bb, 0xa5be, 0xa5ba, 0x003f,
+    0x003f, 0xa6b6, 0x003f, 0xc9f6, 0xa6b5, 0xa6b7, 0x003f, 0x003f,
+    0xc9f1, 0xc9f0, 0xc9f3, 0xc9f2, 0xc9f5, 0xa6b4, 0xc9ef, 0xc9f4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcafd, 0xa7fd, 0xcafe,
+    0xcb43, 0xa7fc, 0x003f, 0xcb47, 0xcb42, 0xcb45, 0xa7f5, 0xa7f6,
+    0xa7f7, 0xa7f8, 0x003f, 0xa840, 0x003f, 0xcb41, 0xa7fa, 0xa841,
+    0x003f, 0xcb40, 0xcb46, 0x003f, 0xa7f9, 0xcb44, 0xa7fb, 0xa7f4,
+    0xa7fe, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xaa57, 0x003f, 0xccd4, 0xaa43, 0x003f, 0xaa4d,
+    0xaa4e, 0xaa46, 0xaa58, 0xaa48, 0xccdc, 0xaa53, 0xccd7, 0xaa49,
+    0xcce6, 0xcce7, 0xccdf, 0xccd8, 0xaa56, 0xcce4, 0xaa51, 0xaa4f,
+    0x003f, 0xcce5, 0x003f, 0xcce3, 0xccdb, 0xccd3, 0xccda, 0xaa4a,
+    0x003f, 0xaa50, 0x003f, 0xaa44, 0xccde, 0xccdd, 0xccd5, 0x003f,
+    0xaa52, 0xcce1, 0xccd6, 0xaa55, 0xcce8, 0xaa45, 0x003f, 0xaa4c,
+    0xccd9, 0xcce2, 0xaa54, 0x003f, 0xaa47, 0xaa4b, 0x003f, 0xcce0,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcf5b, 0xac5c,
+    0xac69, 0x003f, 0xcf56, 0xcf4c, 0xac62, 0xcf4a, 0xac5b, 0xcf45,
+    0xac65, 0xcf52, 0xcefe, 0xcf41, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xcf44, 0xcefb, 0xcf51, 0xcf61, 0xac60, 0xcf46, 0xcf58, 0x003f,
+    0xcefd, 0xcf5f, 0xcf60, 0xcf63, 0xcf5a, 0xcf4b, 0xcf53, 0xac66,
+    0xac59, 0xac61, 0xac6d, 0xac56, 0xac58, 0x003f, 0x003f, 0x003f,
+    0xcf43, 0xac6a, 0xac63, 0xcf5d, 0xcf40, 0xac6c, 0xac67, 0xcf49,
+    0x003f, 0x003f, 0xac6b, 0xcf50, 0xcf48, 0xac64, 0xcf5c, 0xcf54,
+    0x003f, 0xac5e, 0xcf62, 0xcf47, 0xac5a, 0xcf59, 0xcf4f, 0xac5f,
+    0xcf55, 0xac57, 0xcefc, 0xac68, 0xaee3, 0xac5d, 0xcf4e, 0xcf4d,
+    0xcf42, 0x003f, 0xcf5e, 0x003f, 0xcf57, 0x003f, 0x003f, 0xac55,
+    /* 0x6800 .. 0x68ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd1ec, 0xaeea, 0xd1ed, 0x003f, 0xd1e1, 0xaedf,
+    0xaeeb, 0x003f, 0xd1da, 0x003f, 0xd1e3, 0xd1eb, 0x003f, 0xd1d9,
+    0xd1f4, 0xaed5, 0x003f, 0x003f, 0x003f, 0xd1f3, 0xd1ee, 0x003f,
+    0xd1ef, 0xaedd, 0xaee8, 0xd1e5, 0x003f, 0xd1e6, 0xd1f0, 0xd1e7,
+    0x003f, 0xd1e2, 0xd1dc, 0xd1dd, 0xd1ea, 0xd1e4, 0x003f, 0x003f,
+    0xaed6, 0xaeda, 0xd1f2, 0xd1de, 0xaee6, 0xaee2, 0x003f, 0x003f,
+    0xaee5, 0xaeec, 0xaedb, 0xaee7, 0xd1e9, 0xaee9, 0xaed8, 0x003f,
+    0xaed7, 0xd1db, 0x003f, 0xd1df, 0xaee0, 0xd1f1, 0xd1e8, 0xd1e0,
+    0xaee4, 0xaee1, 0x003f, 0xaed9, 0xaedc, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd5c4, 0x003f, 0xd5b4, 0xd5b5, 0xd5b9,
+    0x003f, 0xd5c8, 0xd5c5, 0x003f, 0xd5be, 0xd5bd, 0xb1ed, 0xd5c1,
+    0xd5d0, 0xd5b0, 0x003f, 0xd5d1, 0xd5c3, 0xd5d5, 0xd5c9, 0xb1ec,
+    0xd5c7, 0xb1e7, 0xb1fc, 0xb1f2, 0x003f, 0xb1f6, 0xb1f5, 0xd5b1,
+    0x003f, 0xd5ce, 0xd5d4, 0xd5cc, 0xd5d3, 0x003f, 0x003f, 0xd5c0,
+    0xd5b2, 0xd5d2, 0xd5c2, 0xb1ea, 0xb1f7, 0x003f, 0xd5cb, 0xb1f0,
+    0x003f, 0x003f, 0x003f, 0xd5ca, 0xd5b3, 0xb1f8, 0x003f, 0xb1fa,
+    0xd5cd, 0xb1fb, 0xb1e9, 0xd5ba, 0xd5cf, 0x003f, 0x003f, 0xb1ef,
+    0xb1f9, 0xd5bc, 0xd5c6, 0xd5b7, 0xd5bb, 0xb1f4, 0xd5b6, 0xb1e8,
+    0xb1f1, 0xb1ee, 0xd5bf, 0xaede, 0xd9c0, 0xb1eb, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xb1f3, 0x003f, 0xd9c3, 0xd9d9,
+    0xd9ce, 0xb4d6, 0x003f, 0xb4d1, 0xd9bd, 0xb4d2, 0xd9cd, 0x003f,
+    0xd9c6, 0xd9d3, 0xb4ce, 0xd9ab, 0xd9d5, 0xb4c4, 0xd9b3, 0xb4c7,
+    0xb4c6, 0x003f, 0xb4d7, 0x003f, 0xd9ad, 0xd9cf, 0xd9d0, 0xb4c9,
+    0xb4c5, 0xd9bb, 0x003f, 0xb4d0, 0xd9b6, 0x003f, 0xd9d1, 0xb4cc,
+    0xd9c9, 0xd9d6, 0xd9b0, 0xd9b5, 0xd9af, 0x003f, 0xb4cb, 0xd9c2,
+    0xddde, 0xd9b1, 0xb4cf, 0xd9ba, 0xd9d2, 0xb4ca, 0xd9b7, 0xd9b4,
+    0xd9c5, 0xb4cd, 0xb4c3, 0xb4d9, 0xd9c8, 0xd9c7, 0x003f, 0x003f,
+    /* 0x6900 .. 0x69ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd9ac, 0xb4c8, 0xd9d4, 0xd9bc,
+    0xd9be, 0x003f, 0xd9cb, 0xd9ca, 0xd9aa, 0xb4d3, 0xb4d5, 0xd9b2,
+    0xd9b9, 0xd9c1, 0xb4d4, 0xd9b8, 0xd9c4, 0xd9d7, 0x003f, 0xd9cc,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd9d8, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd9ae, 0x003f, 0x003f, 0x003f, 0x003f, 0xddf2,
+    0xb7a6, 0x003f, 0xddf0, 0xdddb, 0xdde0, 0xddd9, 0x003f, 0xddec,
+    0xddcb, 0xddd2, 0x003f, 0xddea, 0xddf4, 0xdddc, 0x003f, 0xddcf,
+    0xdde2, 0xdde7, 0xddd3, 0x003f, 0xdde4, 0xddd0, 0x003f, 0x003f,
+    0xddd7, 0xddd8, 0xb7a8, 0xddeb, 0xdde9, 0x003f, 0xddcc, 0xddee,
+    0x003f, 0xddef, 0xddf1, 0xb7ac, 0xb7a4, 0x003f, 0xd5b8, 0xddd4,
+    0xdde6, 0xddd5, 0xb7a1, 0xb7b1, 0xdded, 0xb7af, 0xb7ab, 0xddca,
+    0xb7a3, 0x003f, 0xddcd, 0xb7b0, 0x003f, 0xdddd, 0xddc9, 0x003f,
+    0xb7a9, 0xdde1, 0xddd1, 0xb7aa, 0xddda, 0xb77e, 0xb4d8, 0xdde3,
+    0xd9bf, 0xddce, 0x003f, 0x003f, 0xdde8, 0xb7a5, 0xdde5, 0xb7a2,
+    0xdddf, 0xb7ad, 0xddd6, 0xddf3, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb7a7, 0xdec6, 0x003f, 0x003f, 0xb7ae, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe24a, 0xe248, 0x003f,
+    0xe25e, 0xe246, 0x003f, 0xe258, 0xb77d, 0xba5f, 0xe242, 0xe25d,
+    0x003f, 0xe247, 0xe255, 0xba64, 0xba5d, 0x003f, 0xe25b, 0x003f,
+    0xe240, 0xe25a, 0x003f, 0xba6f, 0xe251, 0xe261, 0xba6d, 0xe249,
+    0xba5e, 0xe24b, 0xe259, 0xba67, 0xe244, 0xba6b, 0xba61, 0xe24d,
+    0xe243, 0xe1fc, 0x003f, 0xe257, 0xba68, 0xe260, 0xe1fd, 0xba65,
+    0x003f, 0xe253, 0x003f, 0xba66, 0xe245, 0xe250, 0xe24c, 0xe24e,
+    0x003f, 0xba60, 0xe25f, 0xba6e, 0xe24f, 0x003f, 0xe262, 0x003f,
+    0x003f, 0xe1fe, 0xe254, 0xba63, 0xba6c, 0xba6a, 0xe241, 0xe256,
+    0xba69, 0x003f, 0x003f, 0xba62, 0xe252, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xe25c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe5d5, 0x003f, 0xe5d1, 0xe5cd, 0xe5e1, 0xe5de,
+    0xbccd, 0x003f, 0x003f, 0xe5e5, 0xe5d4, 0xbcd8, 0xe5db, 0x003f,
+    0x003f, 0xe5d0, 0xe5da, 0xbcd5, 0xe5ee, 0x003f, 0xe5eb, 0xe5dd,
+    0xe5ce, 0x003f, 0x003f, 0xe5e2, 0xe5e4, 0xbcd1, 0xe5d8, 0xe5d3,
+    /* 0x6a00 .. 0x6aff */
+    0xe5ca, 0xbcce, 0xbcd6, 0x003f, 0xe5e7, 0xbcd7, 0xe5cb, 0xe5ed,
+    0xe5e0, 0xe5e6, 0xbcd4, 0x003f, 0x003f, 0xe5e3, 0x003f, 0xe5ea,
+    0x003f, 0xbcd9, 0x003f, 0xbcd3, 0xe5dc, 0xe5cf, 0xe5ef, 0xe5cc,
+    0xe5e8, 0xbcd0, 0x003f, 0xe5d6, 0x003f, 0xe5d7, 0xbccf, 0xbccc,
+    0xe5d2, 0xbcd2, 0x003f, 0xbccb, 0x003f, 0xe5e9, 0xe5ec, 0xe5d9,
+    0xe9ca, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe9c2, 0x003f, 0xe9be, 0xbef6, 0x003f, 0x003f,
+    0xbeeb, 0xbef0, 0xbeec, 0xe9cc, 0xe9d7, 0xbeea, 0xe9c4, 0xe9cd,
+    0xe5df, 0xe9ce, 0x003f, 0x003f, 0xbef1, 0x003f, 0xe9dd, 0xbef5,
+    0xbef8, 0xe9c0, 0x003f, 0xbef4, 0x003f, 0xe9db, 0xe9dc, 0xe9d2,
+    0xe9d1, 0xe9c9, 0x003f, 0x003f, 0xe9d3, 0xe9da, 0xe9d9, 0x003f,
+    0xbeef, 0xbeed, 0xe9cb, 0xe9c8, 0x003f, 0xe9c5, 0xe9d8, 0xbef7,
+    0xe9d6, 0xbef3, 0xbef2, 0x003f, 0xe9d0, 0x003f, 0xe9bf, 0xe9c1,
+    0xe9c3, 0xe9d5, 0xe9cf, 0xbeee, 0x003f, 0xe9c6, 0x003f, 0xe9d4,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9c7, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc0cf, 0xed45,
+    0xc0c8, 0xecf5, 0x003f, 0xed41, 0xc0ca, 0xed48, 0x003f, 0xecfc,
+    0x003f, 0xecf7, 0x003f, 0x003f, 0xed49, 0xecf3, 0xecfe, 0x003f,
+    0xc0d1, 0xed44, 0xed4a, 0xecfd, 0xc0c9, 0xed40, 0xecf4, 0xc0d0,
+    0x003f, 0x003f, 0xed47, 0xecf9, 0xc0cc, 0x003f, 0xecfb, 0xecf8,
+    0xc0d2, 0xecfa, 0xc0cb, 0xc0ce, 0xed43, 0xecf6, 0xed46, 0x003f,
+    0xed42, 0x003f, 0x003f, 0x003f, 0xc263, 0xefe7, 0xc268, 0xc269,
+    0x003f, 0x003f, 0x003f, 0xc262, 0xefe6, 0x003f, 0xefe3, 0xefe4,
+    0xc266, 0xefde, 0xefe2, 0xc265, 0x003f, 0xefdf, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xc267, 0xc264, 0x003f, 0xefdd, 0xefe1, 0xefe5,
+    0x003f, 0x003f, 0x003f, 0xf251, 0xf24e, 0xf257, 0x003f, 0xf256,
+    0xf254, 0xf24f, 0x003f, 0xc372, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf250, 0xc371, 0xc0cd, 0xf253, 0xc370, 0xf258, 0xf252,
+    0xf24d, 0xefe0, 0x003f, 0x003f, 0x003f, 0xc36f, 0x003f, 0xf24c,
+    0xf456, 0x003f, 0xf455, 0xf255, 0xc468, 0x003f, 0xf459, 0xf45a,
+    0xf454, 0xf458, 0x003f, 0xf453, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf5d1, 0xf457, 0xc4e7, 0xc4e5, 0xf5cf, 0x003f, 0x003f, 0x003f,
+    /* 0x6b00 .. 0x6bff */
+    0xf5d2, 0x003f, 0xf5ce, 0xf5d0, 0xc4e6, 0x003f, 0x003f, 0x003f,
+    0xf6e5, 0xf6e6, 0xc576, 0xf6e4, 0x003f, 0x003f, 0x003f, 0xf7e2,
+    0xc5cf, 0xf7e0, 0xf7e1, 0xf8ac, 0x003f, 0x003f, 0xc656, 0xf8f3,
+    0xf8f1, 0xf8f2, 0xf8f4, 0x003f, 0x003f, 0x003f, 0xf9bb, 0x003f,
+    0xa4ed, 0xa6b8, 0x003f, 0xaa59, 0x003f, 0xcce9, 0x003f, 0x003f,
+    0xcf64, 0x003f, 0x003f, 0x003f, 0xd1f5, 0xd1f7, 0x003f, 0xd1f6,
+    0x003f, 0xd1f8, 0xb1fd, 0xd5d7, 0xd1f9, 0x003f, 0xd5d6, 0xd5d8,
+    0xd5d9, 0xd9da, 0xb4db, 0xd9db, 0xd9dd, 0xb4dc, 0xb4da, 0xd9dc,
+    0x003f, 0xddfa, 0xddf8, 0xddf7, 0x003f, 0xddf6, 0xddf5, 0xb7b2,
+    0xddf9, 0xba70, 0xe263, 0xe265, 0xba71, 0xe264, 0xbcdb, 0x003f,
+    0xbcda, 0xe5f0, 0x003f, 0x003f, 0xe9df, 0xe9de, 0xe9e0, 0x003f,
+    0x003f, 0xbef9, 0x003f, 0xed4b, 0xc0d3, 0x003f, 0xefe8, 0xc26a,
+    0xf259, 0xc577, 0xa4ee, 0xa5bf, 0xa6b9, 0xa842, 0xaa5a, 0xaa5b,
+    0x003f, 0x003f, 0xac6e, 0x003f, 0x003f, 0xd1fa, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb7b3, 0x003f, 0x003f, 0x003f, 0xe6d1, 0xbefa,
+    0xc26b, 0xa4ef, 0x003f, 0xa6ba, 0x003f, 0x003f, 0xcceb, 0xaa5c,
+    0xccea, 0x003f, 0xcf65, 0xac6f, 0xcf66, 0x003f, 0xac70, 0x003f,
+    0xd1fc, 0xaeee, 0xaeed, 0x003f, 0xd5de, 0xd5dc, 0xd5dd, 0xd5db,
+    0x003f, 0xd5da, 0x003f, 0x003f, 0xd9de, 0xd9e1, 0xb4de, 0xd9df,
+    0xb4dd, 0xd9e0, 0x003f, 0xddfb, 0x003f, 0x003f, 0xe266, 0xe267,
+    0xe268, 0x003f, 0xe5f3, 0xe5f2, 0xbcdc, 0xe5f1, 0xe5f4, 0xe9e1,
+    0x003f, 0x003f, 0xe9e2, 0xe9e3, 0x003f, 0xed4c, 0xc0d4, 0xc26c,
+    0xf25a, 0x003f, 0xc4e8, 0xc95f, 0x003f, 0xac71, 0xcf67, 0xaeef,
+    0x003f, 0x003f, 0xb1fe, 0x003f, 0xb4df, 0xd9e2, 0x003f, 0xb7b5,
+    0xb7b4, 0x003f, 0x003f, 0xe269, 0xe26a, 0xbcdd, 0xbcde, 0xe9e5,
+    0xe9e4, 0xefe9, 0xf7e3, 0xa4f0, 0xc960, 0xa5c0, 0x003f, 0xa843,
+    0xcb48, 0x003f, 0xac72, 0xb7b6, 0xa4f1, 0x003f, 0xcf68, 0xac73,
+    0xcf69, 0x003f, 0xc0d5, 0xa4f2, 0x003f, 0x003f, 0xccec, 0x003f,
+    0xcf6a, 0x003f, 0xd242, 0xd241, 0xd1fe, 0x003f, 0xd1fd, 0xd243,
+    0xd240, 0x003f, 0x003f, 0xb240, 0xb241, 0x003f, 0x003f, 0xb4e0,
+    0xd9e3, 0x003f, 0xd9e4, 0xd9e5, 0x003f, 0x003f, 0x003f, 0xde41,
+    0xde42, 0xde40, 0x003f, 0xddfd, 0xddfe, 0xb7b7, 0xe26b, 0xe5f7,
+    /* 0x6c00 .. 0x6cff */
+    0xe5f6, 0xe5f5, 0xe5f8, 0xe9e7, 0xe9e6, 0xbefb, 0xe9e8, 0x003f,
+    0xc0d6, 0xed4d, 0x003f, 0xefea, 0xf25b, 0xf6e7, 0x003f, 0xa4f3,
+    0xa5c2, 0xa5c1, 0x003f, 0xaa5d, 0xc961, 0xc97e, 0xa6bb, 0x003f,
+    0xc9f7, 0xcb49, 0xcb4a, 0xaa5e, 0x003f, 0xcced, 0x003f, 0xac74,
+    0xcf6b, 0xcf6c, 0x003f, 0xaef0, 0xaef4, 0xd244, 0xaef3, 0xaef1,
+    0xaef2, 0x003f, 0xd5df, 0xb242, 0xb4e3, 0x003f, 0xb4e1, 0xb4e2,
+    0xd9e6, 0x003f, 0x003f, 0xba72, 0xa4f4, 0x003f, 0xc9a1, 0x003f,
+    0xa5c3, 0x003f, 0x003f, 0xc9a4, 0x003f, 0x003f, 0xa5c6, 0xc9a3,
+    0xa5c5, 0xa5c4, 0xa844, 0xc9a2, 0x003f, 0x003f, 0xc9f8, 0x003f,
+    0x003f, 0x003f, 0xc9fc, 0xc9fe, 0xca40, 0xa6c5, 0xa6c6, 0xc9fb,
+    0xa6c1, 0x003f, 0xc9f9, 0x003f, 0xc9fd, 0xa6c2, 0x003f, 0xa6bd,
+    0x003f, 0xa6be, 0x003f, 0xa6c4, 0xc9fa, 0xa6bc, 0xa845, 0xa6bf,
+    0xa6c0, 0xa6c3, 0x003f, 0x003f, 0x003f, 0xcb5b, 0xcb59, 0xcb4c,
+    0xa851, 0xcb53, 0xa84c, 0xcb4d, 0x003f, 0xcb55, 0x003f, 0xcb52,
+    0xa84f, 0xcb51, 0xa856, 0xcb5a, 0xa858, 0x003f, 0xa85a, 0x003f,
+    0xcb4b, 0x003f, 0xa84d, 0xcb5c, 0x003f, 0xa854, 0xa857, 0x003f,
+    0xcd45, 0xa847, 0xa85e, 0xa855, 0xcb4e, 0xa84a, 0xa859, 0xcb56,
+    0xa848, 0xa849, 0xcd43, 0xcb4f, 0xa850, 0xa85b, 0xcb5d, 0xcb50,
+    0xa84e, 0x003f, 0xa853, 0xccee, 0xa85c, 0xcb57, 0xa852, 0x003f,
+    0xa85d, 0xa846, 0xcb54, 0xa84b, 0xcb58, 0xcd44, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xaa6a, 0xaa7a, 0xccf5, 0xaa71, 0x003f,
+    0xcd4b, 0xaa62, 0x003f, 0xaa65, 0xcd42, 0x003f, 0xccf3, 0xccf7,
+    0xaa6d, 0xaa6f, 0xccfa, 0xaa76, 0xaa68, 0xaa66, 0xaa67, 0xaa75,
+    0xcd47, 0xaa70, 0xccf9, 0xccfb, 0xaa6e, 0xaa73, 0xccfc, 0xcd4a,
+    0x003f, 0xac75, 0xaa79, 0x003f, 0xaa63, 0xcd49, 0x003f, 0xcd4d,
+    0xccf8, 0xcd4f, 0xcd40, 0xaa6c, 0xccf4, 0xaa6b, 0xaa7d, 0xaa72,
+    0x003f, 0xccf2, 0xcf75, 0xaa78, 0xaa7c, 0xcd41, 0xcd46, 0x003f,
+    0xaa7e, 0xaa77, 0xaa69, 0xaa5f, 0x003f, 0xaa64, 0x003f, 0xccf6,
+    0xaa60, 0xcd4e, 0x003f, 0xccf0, 0xccef, 0xccfd, 0xccf1, 0xaa7b,
+    0xaef5, 0xaa74, 0xccfe, 0xaa61, 0x003f, 0xaca6, 0x003f, 0x003f,
+    0x003f, 0xcd4c, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x6d00 .. 0x6dff */
+    0xcf7c, 0xcfa1, 0x003f, 0xcfa4, 0xcf77, 0x003f, 0x003f, 0xcfa7,
+    0xcfaa, 0xcfac, 0xcf74, 0xac76, 0xac7b, 0xd249, 0xacad, 0xcfa5,
+    0xcfad, 0xcf7b, 0xcf73, 0x003f, 0x003f, 0x003f, 0xd264, 0xac7e,
+    0xcfa2, 0xcf78, 0xcf7a, 0xaca5, 0x003f, 0xcf7d, 0xac7d, 0xcf70,
+    0xcfa8, 0x003f, 0xcfab, 0x003f, 0x003f, 0xac7a, 0x003f, 0xaca8,
+    0xcf6d, 0xacaa, 0xac78, 0xacae, 0xcfa9, 0xcf6f, 0xacab, 0xd25e,
+    0xcd48, 0xac7c, 0xac77, 0xcf76, 0xcf6e, 0xacac, 0xaca4, 0xcfa3,
+    0xaca9, 0xaca7, 0xcf79, 0xaca1, 0xcf71, 0xaca2, 0xaca3, 0xcf72,
+    0xcfa6, 0xac79, 0xcf7e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd24c, 0xaefd, 0xaf43, 0x003f, 0x003f, 0x003f, 0xd255, 0xd25b,
+    0xd257, 0xd24a, 0xd24d, 0xd246, 0xd247, 0xaf4a, 0xaefa, 0xd256,
+    0xd25f, 0xaf45, 0xaef6, 0x003f, 0xaf40, 0xd24e, 0xaf42, 0xd24f,
+    0xd259, 0x003f, 0x003f, 0x003f, 0xaf44, 0xd268, 0xd248, 0xaefc,
+    0xaefb, 0xaf48, 0xd245, 0xd266, 0xd25a, 0xd267, 0xd261, 0xd253,
+    0xd262, 0x003f, 0xd25c, 0xd265, 0xd263, 0xaf49, 0xd254, 0xaef9,
+    0xaef8, 0xaf41, 0xaf47, 0xd260, 0xaf46, 0xd251, 0xb243, 0x003f,
+    0xd269, 0xd250, 0xd24b, 0xaefe, 0xaf4b, 0xaef7, 0x003f, 0xd258,
+    0xd25d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb265, 0xd5e1, 0xd5e5, 0x003f, 0xb252, 0xb250,
+    0x003f, 0x003f, 0xb247, 0xd5e3, 0xd5e2, 0xb25b, 0x003f, 0xd5e8,
+    0xb255, 0x003f, 0xd5fa, 0xd647, 0xb244, 0xd5f7, 0xd5f0, 0xb267,
+    0xd5e0, 0x003f, 0xd5fc, 0x003f, 0xb264, 0xb258, 0xb263, 0xb24e,
+    0xd5ec, 0xd5fe, 0xd5f6, 0xb24f, 0xb249, 0xd645, 0x003f, 0xd5fd,
+    0xd640, 0xb251, 0xb259, 0xd642, 0xd5ea, 0xd5fb, 0xd5ef, 0xd644,
+    0xb25e, 0xb246, 0xb25c, 0xd5f4, 0xd5f2, 0xd5f3, 0xb253, 0xd5ee,
+    0xd5ed, 0xb248, 0xd5e7, 0xd646, 0xb24a, 0xd5f1, 0xb268, 0x003f,
+    0xb262, 0xd5e6, 0xb25f, 0xb25d, 0xb266, 0xd5f8, 0xb261, 0xd252,
+    0xd5f9, 0xb260, 0xd641, 0xb245, 0xd5f5, 0xb257, 0xd5e9, 0xb256,
+    0x003f, 0xb254, 0xb24c, 0xb24b, 0xd9e7, 0xd643, 0x003f, 0x003f,
+    /* 0x6e00 .. 0x6eff */
+    0xd5eb, 0x003f, 0x003f, 0xd9fc, 0x003f, 0xb24d, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb541, 0xb25a, 0xb4ee, 0xd9f6, 0xb4fc, 0x003f, 0xd9ea,
+    0xb4eb, 0xb4e7, 0xda49, 0xb4ed, 0xb4f1, 0xb4ec, 0xb4f5, 0xda4d,
+    0xda44, 0x003f, 0x003f, 0xd9f1, 0xb4fa, 0xb4f4, 0xd9fd, 0xb4e4,
+    0xda4a, 0xda43, 0xb4e8, 0xd9f7, 0xb4f7, 0xda55, 0xda56, 0x003f,
+    0xb4e5, 0xda48, 0xb4f9, 0xd9fb, 0xd9ed, 0xd9ee, 0xb4fd, 0xd9f2,
+    0xd9f9, 0xd9f3, 0x003f, 0xb4fb, 0xb544, 0xd9ef, 0xd9e8, 0xd9e9,
+    0x003f, 0xd9eb, 0xb4ea, 0xd9f8, 0x003f, 0xb4f8, 0xb542, 0x003f,
+    0x003f, 0xd9fa, 0xda53, 0xda4b, 0xb4e6, 0xda51, 0xb4f2, 0x003f,
+    0xb4f0, 0x003f, 0xda57, 0xb4ef, 0xda41, 0xd9f4, 0xd9fe, 0xb547,
+    0xda45, 0xda42, 0xd9f0, 0xb543, 0xda4f, 0xda4c, 0xda54, 0xb4e9,
+    0xda40, 0xb546, 0x003f, 0xda47, 0x003f, 0x003f, 0xb4f3, 0xb4f6,
+    0x003f, 0xda46, 0xb545, 0xd9f5, 0xd5e4, 0x003f, 0x003f, 0xda50,
+    0xda4e, 0xda52, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd9ec, 0xb540, 0x003f, 0x003f, 0x003f, 0xde61, 0xde60, 0xde46,
+    0xb7bd, 0x003f, 0xde5f, 0xde49, 0xde4a, 0x003f, 0xb7c7, 0xde68,
+    0xb7c2, 0xde5e, 0x003f, 0xde43, 0xb7c8, 0xb7be, 0xde52, 0xde48,
+    0xde4b, 0xde63, 0xb7b8, 0xde6a, 0xde62, 0xb7c1, 0xde57, 0xb7cc,
+    0x003f, 0x003f, 0xb7cb, 0xb7c5, 0x003f, 0x003f, 0xde69, 0xb7b9,
+    0xde55, 0xde4c, 0xde59, 0xde65, 0xb7cd, 0x003f, 0xb7bb, 0xde54,
+    0x003f, 0xde4d, 0xb7c4, 0x003f, 0xb7c3, 0xde50, 0xde5a, 0xde64,
+    0xde47, 0xde51, 0xb7bc, 0xde5b, 0xb7c9, 0xb7c0, 0xde4e, 0xb7bf,
+    0xde45, 0xde53, 0xde67, 0xb4fe, 0xbab0, 0xde56, 0xe26c, 0xde58,
+    0xde66, 0xb7c6, 0xde4f, 0xb7ba, 0xb7ca, 0xbcf0, 0xde44, 0x003f,
+    0xde5d, 0x003f, 0x003f, 0x003f, 0xde5c, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe2aa, 0xbaad, 0xe27d, 0xe2a4, 0xbaa2,
+    0x003f, 0xe26e, 0xbaaf, 0x003f, 0xba77, 0xe26d, 0xe2b0, 0xbab1,
+    0xe271, 0xe2a3, 0x003f, 0xe273, 0xe2b3, 0xe2af, 0xba75, 0xbaa1,
+    /* 0x6f00 .. 0x6fff */
+    0xe653, 0xbaae, 0xba7d, 0xe26f, 0x003f, 0xe2ae, 0xbaa3, 0xe2ab,
+    0xe2b8, 0xe275, 0xe27e, 0x003f, 0x003f, 0xe2b6, 0xe2ac, 0xba7c,
+    0x003f, 0x003f, 0xe27c, 0xba76, 0xba74, 0xbaa8, 0x003f, 0x003f,
+    0xe27a, 0xe277, 0xe278, 0x003f, 0xe2b2, 0x003f, 0xe2b7, 0xe2b5,
+    0xba7a, 0xe2b9, 0xba7e, 0xbaa7, 0x003f, 0xe270, 0xe5fa, 0xe279,
+    0x003f, 0xba78, 0xbaac, 0xbaa9, 0xba7b, 0xe2a5, 0xe274, 0xbaaa,
+    0xe2a7, 0xbaa4, 0xbaa6, 0xba73, 0x003f, 0xe2a9, 0xe2a1, 0xe272,
+    0xbaa5, 0xe2b1, 0xe2b4, 0xe27b, 0xe2a8, 0x003f, 0xba79, 0xbcdf,
+    0xe2a6, 0xe5f9, 0x003f, 0xe2ad, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe276, 0xe644,
+    0xe64e, 0xbce2, 0xe64d, 0xe659, 0xbce4, 0xe64b, 0x003f, 0xe64f,
+    0xbcef, 0x003f, 0xe646, 0xbce7, 0x003f, 0xe652, 0xe9f0, 0xbcf3,
+    0xbcf2, 0xe654, 0xe643, 0xe65e, 0xbced, 0x003f, 0xbce3, 0xe657,
+    0x003f, 0xe65b, 0xe660, 0xe655, 0xe649, 0xbce6, 0xbce9, 0xbcf1,
+    0xbcec, 0x003f, 0xe64c, 0xe2a2, 0x003f, 0x003f, 0xe648, 0xe65f,
+    0xbce8, 0x003f, 0xbceb, 0xe661, 0xbce0, 0xe656, 0xe5fb, 0xe65c,
+    0xc0df, 0x003f, 0xe64a, 0x003f, 0xbce1, 0xe645, 0xbce5, 0xe5fc,
+    0xbaab, 0xe641, 0x003f, 0xe65a, 0xe642, 0xe640, 0xbcea, 0x003f,
+    0xe658, 0x003f, 0xe5fe, 0xe651, 0xe650, 0xe65d, 0xe647, 0xbcee,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe9f3, 0x003f,
+    0xbf49, 0xbefe, 0xea40, 0xe9eb, 0xbf41, 0xe9f7, 0xbf48, 0xbf43,
+    0xe9f5, 0xed4f, 0xe9fb, 0xea42, 0xe9fa, 0xe9e9, 0xe9f8, 0xea44,
+    0xea46, 0xbefd, 0xea45, 0xbf44, 0xbf4a, 0x003f, 0xbf47, 0x003f,
+    0xe9fe, 0xbf46, 0xe9f9, 0x003f, 0xe9ed, 0xe9f2, 0x003f, 0xe9fd,
+    0xbf45, 0xbf42, 0xbefc, 0xbf40, 0xe9f1, 0x003f, 0xe5fd, 0xe9ec,
+    0xe9ef, 0xea41, 0xe9f4, 0xe9ea, 0xed4e, 0xea43, 0xe9ee, 0xe9fc,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xed51, 0xc0e3, 0x003f, 0x003f,
+    0xc0d7, 0x003f, 0x003f, 0xc0db, 0xed53, 0xed59, 0xed57, 0xc0d9,
+    0xc0da, 0xc0e1, 0xed5a, 0xed52, 0xc0dc, 0x003f, 0xed56, 0xed55,
+    0xed5b, 0xc0e2, 0x003f, 0xc0dd, 0xc0e0, 0xed54, 0xc0e4, 0xc0de,
+    0xc0e5, 0xc0d8, 0xed58, 0x003f, 0xed50, 0x003f, 0x003f, 0xeff7,
+    0x003f, 0x003f, 0xc271, 0xeff4, 0xeff6, 0x003f, 0xc26f, 0xeff2,
+    /* 0x7000 .. 0x70ff */
+    0xeff3, 0xefee, 0x003f, 0x003f, 0xe9f6, 0xefef, 0xc270, 0xefeb,
+    0x003f, 0xc26d, 0xeff8, 0xc26e, 0xefec, 0xefed, 0xeff1, 0xc273,
+    0x003f, 0xc272, 0x003f, 0x003f, 0xeff0, 0xc378, 0xf25f, 0xf265,
+    0xc379, 0xf25c, 0xc376, 0xc373, 0xf267, 0xc377, 0x003f, 0xc374,
+    0xf25e, 0xf261, 0xf262, 0xf263, 0xf266, 0x003f, 0xeff5, 0xf25d,
+    0xc375, 0xf264, 0xf268, 0xf260, 0x003f, 0x003f, 0x003f, 0xf45d,
+    0xc46a, 0xf460, 0xc46b, 0xf468, 0xf45f, 0xf45c, 0x003f, 0xf45e,
+    0xf462, 0xf465, 0xf464, 0xf467, 0xf45b, 0x003f, 0xc469, 0xf463,
+    0xf466, 0xf469, 0xf461, 0xf5d3, 0xf5d4, 0xf5d8, 0xf5d9, 0x003f,
+    0xf5d6, 0xf5d7, 0xf5d5, 0x003f, 0xc4e9, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc578, 0xf6eb, 0x003f, 0x003f, 0xf6e8, 0xf6e9, 0xf6ea,
+    0xc579, 0x003f, 0xf7e5, 0xf7e4, 0x003f, 0xf8af, 0xc5f4, 0xf8ad,
+    0xf8b0, 0xf8ae, 0xf8f5, 0xc657, 0xc665, 0xf9a3, 0xf96c, 0x003f,
+    0xf9a2, 0xf9d0, 0xf9d1, 0xa4f5, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa6c7, 0xca41, 0x003f, 0x003f, 0xcb5e, 0x003f, 0xa85f, 0x003f,
+    0xa862, 0x003f, 0xcb5f, 0x003f, 0xa860, 0xa861, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xcd58, 0xcd5a, 0xcd55, 0xcd52, 0xcd54, 0x003f,
+    0x003f, 0x003f, 0xaaa4, 0x003f, 0x003f, 0x003f, 0xaaa2, 0x003f,
+    0x003f, 0xcd56, 0xaaa3, 0xcd53, 0xcd50, 0xaaa1, 0xcd57, 0x003f,
+    0xcd51, 0xaaa5, 0xcd59, 0x003f, 0x003f, 0x003f, 0x003f, 0xcfaf,
+    0x003f, 0xcfb3, 0x003f, 0x003f, 0xacb7, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcfb6, 0x003f, 0xacaf, 0xacb2, 0xacb4, 0xacb6, 0xacb3,
+    0xcfb2, 0xcfb1, 0x003f, 0xacb1, 0xcfb4, 0xcfb5, 0x003f, 0xcfae,
+    0xacb5, 0x003f, 0xacb0, 0x003f, 0x003f, 0x003f, 0xcfb0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd277, 0xd278, 0xd279,
+    0xaf50, 0x003f, 0xaf4c, 0xd26e, 0x003f, 0xd276, 0xd27b, 0xaf51,
+    0x003f, 0xd26c, 0xd272, 0xd26b, 0xd275, 0x003f, 0x003f, 0xd271,
+    0xaf4d, 0xaf4f, 0xd27a, 0x003f, 0xd26a, 0xd26d, 0xd273, 0x003f,
+    0xd274, 0xd27c, 0xd270, 0x003f, 0xaf4e, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb26d,
+    0xd64e, 0x003f, 0x003f, 0xd650, 0xd64c, 0x003f, 0xd658, 0xd64a,
+    0xd657, 0xb269, 0xd648, 0xda5b, 0xd652, 0xb26c, 0x003f, 0xd653,
+    /* 0x7100 .. 0x71ff */
+    0xd656, 0x003f, 0xd65a, 0x003f, 0xd64f, 0x003f, 0xd654, 0x003f,
+    0x003f, 0xb26a, 0xb26b, 0xd659, 0xd64d, 0xd649, 0xd65b, 0x003f,
+    0xd651, 0x003f, 0x003f, 0xd655, 0x003f, 0x003f, 0x003f, 0xd64b,
+    0x003f, 0xb548, 0xb549, 0xda65, 0xb54f, 0x003f, 0xda59, 0xda62,
+    0xda58, 0xb54c, 0xda60, 0xda5e, 0x003f, 0xda5f, 0xb54a, 0x003f,
+    0xda63, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xda5c, 0xda5a,
+    0xb54b, 0xda5d, 0xda61, 0x003f, 0x003f, 0x003f, 0xb54d, 0x003f,
+    0x003f, 0x003f, 0xda64, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xde70, 0xde77, 0xde79, 0xdea1, 0x003f, 0xb7da, 0xde6b,
+    0x003f, 0xb7d2, 0x003f, 0xde7a, 0xb7d7, 0xdea2, 0xb7ce, 0x003f,
+    0xde7d, 0x003f, 0xde6d, 0xde7e, 0xde6c, 0x003f, 0xb7dc, 0x003f,
+    0xde78, 0xb7cf, 0xdea3, 0x003f, 0xb7d4, 0xde71, 0xb7d9, 0xde7c,
+    0xde6f, 0xde76, 0xde72, 0xde6e, 0xb7d1, 0xb7d8, 0xb7d6, 0xb7d3,
+    0xb7db, 0xb7d0, 0xde75, 0x003f, 0xb7d5, 0x003f, 0xb54e, 0x003f,
+    0xde7b, 0x003f, 0xde73, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xde74, 0x003f, 0x003f, 0xe2c1, 0x003f, 0xbab4, 0x003f, 0x003f,
+    0xe2bd, 0xe2c3, 0xe2bf, 0x003f, 0xbab6, 0xe2be, 0xe2c2, 0xe2ba,
+    0x003f, 0xe2bc, 0xbab5, 0x003f, 0x003f, 0x003f, 0x003f, 0xe2c0,
+    0xe2bb, 0x003f, 0xbab7, 0x003f, 0xbab2, 0x003f, 0x003f, 0xe2c4,
+    0x003f, 0xbab3, 0xe667, 0xe664, 0xe670, 0xe66a, 0xe66c, 0xbcf4,
+    0xe666, 0xe66e, 0x003f, 0x003f, 0xe66d, 0xe66b, 0x003f, 0xe671,
+    0xbcf7, 0xe668, 0xe66f, 0x003f, 0xbcf5, 0x003f, 0x003f, 0xe663,
+    0xe665, 0xbcf6, 0xe662, 0xe672, 0x003f, 0xe669, 0x003f, 0x003f,
+    0xea4a, 0xbf51, 0x003f, 0x003f, 0xea55, 0xea53, 0xbf4b, 0xea49,
+    0xea4c, 0xea4d, 0xea48, 0xbf55, 0xbf56, 0xea47, 0xea56, 0xea51,
+    0xbf4f, 0xbf4c, 0xea50, 0xea4e, 0x003f, 0x003f, 0xbf52, 0xea52,
+    0xbf4d, 0x003f, 0xbf4e, 0x003f, 0xea4f, 0xbf50, 0xea4b, 0x003f,
+    0xea54, 0xbf53, 0xea57, 0xea58, 0xbf54, 0x003f, 0x003f, 0xc0e7,
+    0xc0ee, 0xed5c, 0xed62, 0x003f, 0xed60, 0xc0ea, 0xc0e9, 0xc0e6,
+    0xed5e, 0x003f, 0x003f, 0x003f, 0xc0ec, 0xc0eb, 0xc0e8, 0x003f,
+    0xed61, 0xed5d, 0xed5f, 0x003f, 0xc0ed, 0x003f, 0x003f, 0x003f,
+    0xc277, 0xeffb, 0x003f, 0xc274, 0xc275, 0xeffd, 0xc276, 0xeffa,
+    /* 0x7200 .. 0x72ff */
+    0x003f, 0xeff9, 0xf26c, 0xeffc, 0x003f, 0xf26d, 0xc37a, 0xf26b,
+    0x003f, 0x003f, 0xf26a, 0x003f, 0xf269, 0xc37b, 0x003f, 0x003f,
+    0xc46c, 0x003f, 0x003f, 0xf46a, 0xf46b, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf5dc, 0xf5db, 0xc4ea, 0x003f, 0xf5da, 0xf6ec, 0xf6ed,
+    0x003f, 0x003f, 0xf7e6, 0xf8b1, 0x003f, 0x003f, 0xf8f6, 0xf9bc,
+    0xc679, 0xf9c6, 0xa4f6, 0x003f, 0xaaa6, 0xaaa7, 0x003f, 0x003f,
+    0xacb8, 0x003f, 0x003f, 0x003f, 0x003f, 0xc0ef, 0xa4f7, 0x003f,
+    0xaaa8, 0xaf52, 0xb7dd, 0xa4f8, 0x003f, 0xb26e, 0xbab8, 0xc962,
+    0x003f, 0xcfb7, 0xd27d, 0x003f, 0xe2c5, 0x003f, 0xc0f0, 0xa4f9,
+    0xaaa9, 0xcfb8, 0xcfb9, 0xda66, 0xb550, 0x003f, 0x003f, 0xdea4,
+    0x003f, 0x003f, 0xb7de, 0xe2c6, 0x003f, 0x003f, 0xbcf8, 0x003f,
+    0xc37c, 0xa4fa, 0xda67, 0xa4fb, 0x003f, 0xa6c9, 0xca42, 0xa6c8,
+    0xa865, 0xa864, 0xa863, 0xcb60, 0x003f, 0x003f, 0x003f, 0xaaaa,
+    0x003f, 0xaaab, 0xcd5b, 0x003f, 0xcfba, 0x003f, 0xcfbd, 0xacba,
+    0xcfbb, 0x003f, 0xacb9, 0xcfbc, 0xacbb, 0x003f, 0xd2a2, 0xd2a1,
+    0xd27e, 0xaf53, 0x003f, 0xd65d, 0xd65e, 0xb26f, 0xd65c, 0xd65f,
+    0xb552, 0xb270, 0x003f, 0x003f, 0xb551, 0xda6b, 0xda6a, 0x003f,
+    0xda68, 0xda69, 0x003f, 0xda6c, 0xdea6, 0xdea5, 0xdea9, 0x003f,
+    0xdea8, 0xdea7, 0xbab9, 0xe2c9, 0x003f, 0xe2c8, 0xbaba, 0xe2c7,
+    0xe673, 0x003f, 0xe674, 0xbcf9, 0x003f, 0xea59, 0xea5a, 0x003f,
+    0x003f, 0xf272, 0xc37d, 0xf271, 0xf270, 0xf26e, 0xf26f, 0xc4eb,
+    0xf46c, 0xf6ee, 0xf8f7, 0x003f, 0xa4fc, 0x003f, 0xc9a5, 0xa5c7,
+    0xc9a6, 0x003f, 0x003f, 0x003f, 0xca43, 0xca44, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xcb66, 0x003f, 0x003f, 0xcb62, 0x003f, 0xcb61,
+    0xaaac, 0xcb65, 0xa867, 0xcb63, 0xa866, 0xcb67, 0xcb64, 0x003f,
+    0x003f, 0xcd5f, 0xcfbe, 0xcd5d, 0xcd64, 0x003f, 0xaaad, 0x003f,
+    0xaab0, 0xcd65, 0xcd61, 0x003f, 0xcd62, 0x003f, 0xcd5c, 0xaaaf,
+    0xcd5e, 0xaaae, 0xcd63, 0x003f, 0xcd60, 0x003f, 0x003f, 0xcfc2,
+    0xacbd, 0xacbe, 0x003f, 0xcfc5, 0xcfbf, 0x003f, 0xcfc4, 0x003f,
+    0xcfc0, 0xacbc, 0xcfc3, 0xcfc1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd2a8, 0xd2a5, 0x003f, 0xd2a7, 0xaf58,
+    0xaf57, 0xaf55, 0xd2a4, 0xd2a9, 0xaf54, 0xaf56, 0xd2a6, 0xd667,
+    /* 0x7300 .. 0x73ff */
+    0xd2a3, 0xd2aa, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd662,
+    0xd666, 0x003f, 0xd665, 0xda6e, 0xda79, 0x003f, 0x003f, 0xd668,
+    0x003f, 0xd663, 0xda6d, 0xb274, 0x003f, 0x003f, 0xb273, 0xd661,
+    0xd664, 0xb275, 0x003f, 0xb272, 0xb271, 0xd660, 0xd669, 0x003f,
+    0x003f, 0x003f, 0xda70, 0xda77, 0x003f, 0xb554, 0xda76, 0xda73,
+    0x003f, 0xb556, 0x003f, 0x003f, 0x003f, 0xda75, 0x003f, 0x003f,
+    0xda6f, 0xda71, 0xda74, 0xda72, 0xb555, 0xda78, 0xb553, 0xb7df,
+    0x003f, 0x003f, 0xdead, 0xdeac, 0xdeaa, 0x003f, 0xb7e2, 0xb7e1,
+    0xdeae, 0x003f, 0xdeab, 0xe2ca, 0xbabb, 0xb7e0, 0x003f, 0x003f,
+    0x003f, 0xdeb0, 0xdeaf, 0x003f, 0xe2cd, 0xe2cb, 0xbcfa, 0x003f,
+    0xbabc, 0xe2cc, 0xe676, 0x003f, 0x003f, 0x003f, 0x003f, 0xbcfb,
+    0xe675, 0xe67e, 0xe67d, 0xe67b, 0x003f, 0xe67a, 0xe677, 0xe678,
+    0xe679, 0xe67c, 0xe6a1, 0x003f, 0x003f, 0xea5f, 0xea5c, 0xea5d,
+    0xbf57, 0xea5b, 0xea61, 0xea60, 0xea5e, 0x003f, 0xed64, 0xed65,
+    0xc0f1, 0x003f, 0xc0f2, 0xed63, 0x003f, 0xc279, 0xeffe, 0xc278,
+    0xc37e, 0x003f, 0xc3a1, 0xc46d, 0xf46e, 0xf46d, 0xf5dd, 0xf6ef,
+    0xc57a, 0xf7e8, 0xf7e7, 0xf7e9, 0xa5c8, 0xcfc6, 0xaf59, 0xb276,
+    0xd66a, 0xa5c9, 0xc9a7, 0xa4fd, 0x003f, 0x003f, 0xca45, 0x003f,
+    0x003f, 0x003f, 0xcb6c, 0xcb6a, 0xcb6b, 0xcb68, 0xa868, 0xcb69,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcd6d, 0x003f, 0xaab3,
+    0xcd6b, 0xcd67, 0xcd6a, 0x003f, 0xcd66, 0xaab5, 0xcd69, 0x003f,
+    0xaab2, 0xaab1, 0x003f, 0xaab4, 0xcd6c, 0xcd68, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xacc2, 0xacc5, 0xcfce, 0xcfcd, 0xcfcc, 0xacbf,
+    0xcfd5, 0xcfcb, 0x003f, 0xacc1, 0xd2af, 0x003f, 0xcfd2, 0xcfd0,
+    0xacc4, 0x003f, 0xcfc8, 0xcfd3, 0x003f, 0xcfca, 0xcfd4, 0xcfd1,
+    0xcfc9, 0x003f, 0xacc0, 0xcfd6, 0xcfc7, 0xacc3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd2b4, 0xd2ab, 0xd2b6, 0x003f, 0xd2ae, 0xd2b9,
+    0xd2ba, 0xd2ac, 0xd2b8, 0xd2b5, 0xd2b3, 0xd2b7, 0xaf5f, 0x003f,
+    0xaf5d, 0x003f, 0x003f, 0xd2b1, 0x003f, 0xd2ad, 0x003f, 0xd2b0,
+    0xd2bb, 0xd2b2, 0xaf5e, 0xcfcf, 0x003f, 0xaf5a, 0xaf5c, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd678, 0xd66d, 0xd66b, 0x003f,
+    0xd66c, 0x003f, 0xd673, 0x003f, 0xd674, 0xd670, 0xb27b, 0xd675,
+    /* 0x7400 .. 0x74ff */
+    0xd672, 0xd66f, 0x003f, 0xb279, 0xd66e, 0xb277, 0xb27a, 0xd671,
+    0xd679, 0xaf5b, 0xb278, 0xd677, 0xd676, 0xb27c, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xda7e, 0x003f,
+    0x003f, 0x003f, 0xdaa1, 0xb560, 0x003f, 0xdaa7, 0x003f, 0x003f,
+    0xdaa9, 0xdaa2, 0xb55a, 0xdaa6, 0xdaa5, 0xb55b, 0xb561, 0x003f,
+    0xb562, 0xdaa8, 0xb558, 0xda7d, 0xda7b, 0xdaa3, 0xda7a, 0xb55f,
+    0xda7c, 0xdaa4, 0xdaaa, 0xb559, 0xb55e, 0xb55c, 0xb55d, 0x003f,
+    0x003f, 0x003f, 0xb557, 0x003f, 0x003f, 0x003f, 0x003f, 0xb7e9,
+    0xdeb7, 0xb7e8, 0xdebb, 0x003f, 0xdeb1, 0x003f, 0xdebc, 0x003f,
+    0x003f, 0x003f, 0xdeb2, 0xdeb3, 0x003f, 0xdebd, 0xdeba, 0xdeb8,
+    0xdeb9, 0xdeb5, 0xdeb4, 0x003f, 0xdebe, 0xb7e5, 0x003f, 0xdeb6,
+    0x003f, 0xb7ea, 0xb7e4, 0xb7eb, 0xb7ec, 0x003f, 0xb7e7, 0xb7e6,
+    0x003f, 0x003f, 0xe2ce, 0xbabe, 0xbabd, 0x003f, 0x003f, 0xe2d3,
+    0x003f, 0xbcfc, 0xbabf, 0x003f, 0x003f, 0xbac1, 0xe2d4, 0xb7e3,
+    0xbac0, 0xe2d0, 0xe2d2, 0xe2cf, 0x003f, 0xe2d1, 0x003f, 0x003f,
+    0x003f, 0xe6ab, 0x003f, 0x003f, 0xe6aa, 0xe6a7, 0xbd40, 0xea62,
+    0xbd41, 0xe6a6, 0x003f, 0xbcfe, 0x003f, 0xe6a8, 0xe6a5, 0xe6a2,
+    0xe6a9, 0xe6a3, 0xe6a4, 0xbcfd, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xed69, 0x003f, 0xea66, 0x003f, 0xea65, 0xea67, 0x003f, 0xed66,
+    0xbf5a, 0x003f, 0xea63, 0x003f, 0xbf58, 0x003f, 0xbf5c, 0xbf5b,
+    0xea64, 0xea68, 0x003f, 0xbf59, 0x003f, 0xed6d, 0xc0f5, 0xc27a,
+    0xc0f6, 0xc0f3, 0xed6a, 0xed68, 0x003f, 0xed6b, 0x003f, 0xed6e,
+    0xc0f4, 0xed6c, 0xed67, 0x003f, 0x003f, 0xf042, 0xf045, 0xf275,
+    0xf040, 0x003f, 0xf46f, 0xf046, 0x003f, 0xc3a2, 0xf044, 0xc27b,
+    0xf041, 0xf043, 0xf047, 0xf276, 0x003f, 0xf274, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xc3a3, 0xf273, 0x003f, 0x003f, 0x003f, 0xc46e,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xc4ed, 0xf6f1, 0xc4ec, 0xf6f3,
+    0xf6f0, 0xf6f2, 0xc5d0, 0xf8b2, 0xa5ca, 0xcd6e, 0xd2bc, 0xd2bd,
+    0xb27d, 0xdebf, 0xbf5d, 0xc3a4, 0xc57b, 0xf8b3, 0xa5cb, 0x003f,
+    0xcd6f, 0xa260, 0x003f, 0x003f, 0xcfd7, 0x003f, 0xcfd8, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd2be, 0xd2bf, 0xb27e, 0xb2a1,
+    0x003f, 0x003f, 0x003f, 0xdaab, 0x003f, 0xdec2, 0xdec1, 0xdec0,
+    /* 0x7500 .. 0x75ff */
+    0xe2d5, 0x003f, 0xe2d6, 0xe2d7, 0xbac2, 0x003f, 0x003f, 0xe6ad,
+    0xe6ac, 0x003f, 0x003f, 0xea69, 0xbf5e, 0xbf5f, 0x003f, 0xed72,
+    0xed6f, 0xed70, 0xed71, 0xf049, 0xf048, 0xc27c, 0xf277, 0xf5de,
+    0xa5cc, 0x003f, 0xacc6, 0x003f, 0xb2a2, 0xdec3, 0x003f, 0xa5cd,
+    0x003f, 0xd2c0, 0xb2a3, 0x003f, 0x003f, 0xb563, 0xb564, 0x003f,
+    0xa5ce, 0xa5cf, 0xca46, 0xa86a, 0xa869, 0xacc7, 0xcfd9, 0xdaac,
+    0xa5d0, 0xa5d1, 0xa5d2, 0xa5d3, 0x003f, 0x003f, 0x003f, 0xa86b,
+    0xa86c, 0xcb6e, 0xcb6d, 0x003f, 0x003f, 0xaab6, 0xcd72, 0xcd70,
+    0xcd71, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcfda,
+    0xcfdb, 0x003f, 0x003f, 0xaccb, 0xacc9, 0x003f, 0xacca, 0xacc8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xaf60, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xaf64, 0xaf63, 0xd2c1, 0xaf62, 0xaf61, 0x003f, 0xd2c2,
+    0x003f, 0x003f, 0xb2a6, 0xd67b, 0xd67a, 0xb2a4, 0xb2a5, 0x003f,
+    0x003f, 0x003f, 0xb566, 0xb565, 0xdaae, 0x003f, 0x003f, 0xdaad,
+    0xb2a7, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb7ed, 0xdec5,
+    0xb7ee, 0xdec4, 0x003f, 0x003f, 0x003f, 0xe2d8, 0xe6ae, 0xbd42,
+    0xea6a, 0x003f, 0x003f, 0x003f, 0xed73, 0x003f, 0xc3a6, 0xc3a5,
+    0x003f, 0x003f, 0xc57c, 0xa5d4, 0xcd73, 0x003f, 0x003f, 0xb2a8,
+    0xe2d9, 0xbac3, 0x003f, 0x003f, 0xcb6f, 0xcb70, 0x003f, 0x003f,
+    0xcd74, 0xaab8, 0xaab9, 0x003f, 0x003f, 0xaab7, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xaccf, 0xacd0, 0xaccd, 0xacce, 0x003f, 0xcfdc,
+    0x003f, 0x003f, 0xcfdd, 0xaccc, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd2c3, 0x003f, 0xaf68, 0xaf69, 0x003f, 0xb2ab, 0xd2c9, 0x003f,
+    0xaf6e, 0xaf6c, 0xd2ca, 0xd2c5, 0xaf6b, 0xaf6a, 0xaf65, 0xd2c8,
+    0xd2c7, 0xd2c4, 0xaf6d, 0x003f, 0xd2c6, 0xaf66, 0x003f, 0xaf67,
+    0x003f, 0x003f, 0xb2ac, 0xd6a1, 0xd6a2, 0xb2ad, 0xd67c, 0xd67e,
+    0xd6a4, 0xd6a3, 0xd67d, 0x003f, 0xb2a9, 0xb2aa, 0x003f, 0xdab6,
+    0xb56b, 0xb56a, 0xdab0, 0xb568, 0x003f, 0xdab3, 0xb56c, 0xdab4,
+    0xb56d, 0xdab1, 0xb567, 0xb569, 0xdab5, 0x003f, 0xdab2, 0xdaaf,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xded2, 0x003f, 0xdec7,
+    0xb7f0, 0xb7f3, 0xb7f2, 0xb7f7, 0xb7f6, 0xded3, 0xded1, 0xdeca,
+    0xdece, 0xdecd, 0xb7f4, 0xded0, 0xdecc, 0xded4, 0xdecb, 0xb7f5,
+    /* 0x7600 .. 0x76ff */
+    0xb7ef, 0xb7f1, 0x003f, 0xdec9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe2db, 0xbac7, 0xe2df, 0xbac6, 0xe2dc, 0xbac5, 0x003f, 0xdec8,
+    0xdecf, 0xe2de, 0x003f, 0xbac8, 0xe2e0, 0xe2dd, 0xe2da, 0x003f,
+    0x003f, 0xe6b1, 0xe6b5, 0xe6b7, 0xe6b3, 0xe6b2, 0xe6b0, 0xbd45,
+    0xbd43, 0xbd48, 0xbd49, 0xe6b4, 0xbd46, 0xe6af, 0xbd47, 0xbac4,
+    0xe6b6, 0xbd44, 0x003f, 0x003f, 0x003f, 0xea6c, 0x003f, 0xea6b,
+    0xea73, 0xea6d, 0xea72, 0xea6f, 0xbf60, 0xea71, 0x003f, 0x003f,
+    0xbf61, 0x003f, 0xbf62, 0x003f, 0xea70, 0xea6e, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xc0f8, 0xed74, 0x003f, 0x003f, 0xc0f7, 0xed77,
+    0xed75, 0xed76, 0x003f, 0x003f, 0xc0f9, 0x003f, 0x003f, 0x003f,
+    0xf04d, 0x003f, 0xc2a1, 0xf04e, 0x003f, 0x003f, 0xc27d, 0xf04f,
+    0xc27e, 0xf04c, 0xf050, 0x003f, 0xf04a, 0x003f, 0x003f, 0xc3a7,
+    0xf278, 0xc3a8, 0xc46f, 0x003f, 0xf04b, 0xc470, 0x003f, 0x003f,
+    0x003f, 0xc4ee, 0xf5df, 0x003f, 0xc57e, 0xf6f4, 0xc57d, 0x003f,
+    0xf7ea, 0xc5f5, 0xc5f6, 0x003f, 0x003f, 0xf9cc, 0x003f, 0x003f,
+    0xacd1, 0xcfde, 0x003f, 0xb56e, 0xb56f, 0xa5d5, 0xa6ca, 0xca47,
+    0x003f, 0xcb71, 0xa86d, 0x003f, 0xaaba, 0x003f, 0xacd2, 0xacd3,
+    0xacd4, 0xd6a6, 0xd2cb, 0xaf6f, 0x003f, 0x003f, 0xb2ae, 0xd6a5,
+    0x003f, 0x003f, 0xdab8, 0xb571, 0x003f, 0xdab7, 0xb570, 0x003f,
+    0x003f, 0xded5, 0xbd4a, 0xe6bb, 0xe6b8, 0xe6b9, 0xe6ba, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xed78, 0x003f, 0xf051, 0x003f,
+    0x003f, 0x003f, 0xf471, 0xf470, 0x003f, 0xf6f5, 0xa5d6, 0xcd75,
+    0xaf70, 0x003f, 0x003f, 0x003f, 0xb572, 0xded6, 0x003f, 0x003f,
+    0xe2e1, 0x003f, 0xbd4b, 0xea74, 0x003f, 0xf052, 0xf472, 0xa5d7,
+    0x003f, 0x003f, 0xaabb, 0xacd7, 0xcfdf, 0xacd8, 0xacd6, 0x003f,
+    0xacd5, 0xd2cc, 0xaf71, 0x003f, 0x003f, 0xaf72, 0xaf73, 0x003f,
+    0x003f, 0x003f, 0xb2b0, 0xd6a7, 0xb2af, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xdab9, 0xb2b1, 0xb573, 0xded7, 0xb7f8, 0xb7f9,
+    0x003f, 0xbac9, 0x003f, 0xbaca, 0xbd4c, 0xbf64, 0xea75, 0xbf63,
+    0x003f, 0xed79, 0xc0fa, 0x003f, 0xf053, 0xf473, 0xa5d8, 0xa86e,
+    0xcd78, 0xcd77, 0xaabc, 0xcd76, 0xaabd, 0xcd79, 0x003f, 0xcfe5,
+    0xacdb, 0xacda, 0xcfe7, 0xcfe6, 0xacdf, 0x003f, 0xacde, 0x003f,
+    /* 0x7700 .. 0x77ff */
+    0x003f, 0xacd9, 0x003f, 0xcfe1, 0xcfe2, 0xcfe3, 0x003f, 0xace0,
+    0xcfe0, 0xacdc, 0xcfe4, 0xacdd, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd2cf, 0xd2d3, 0xd2d1, 0xd2d0, 0x003f, 0xd2d4, 0x003f, 0x003f,
+    0x003f, 0xd2d5, 0xd2d6, 0xd2ce, 0x003f, 0xd2cd, 0x003f, 0xaf75,
+    0xaf76, 0x003f, 0xd2d7, 0xd2d2, 0x003f, 0xd6b0, 0x003f, 0xd2d8,
+    0xaf77, 0xaf74, 0x003f, 0x003f, 0x003f, 0xd6aa, 0x003f, 0xd6a9,
+    0x003f, 0xd6ab, 0xd6ac, 0xd6ae, 0xd6ad, 0xd6b2, 0xb2b5, 0xb2b2,
+    0xb2b6, 0xd6a8, 0xb2b7, 0xd6b1, 0xb2b4, 0xd6af, 0xb2b3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdabc, 0xdabe, 0xdaba, 0xdabb,
+    0x003f, 0x003f, 0xdabf, 0xdac1, 0xdac2, 0xdabd, 0xdac0, 0xb574,
+    0x003f, 0x003f, 0xdedb, 0x003f, 0xdee0, 0xded8, 0xdedc, 0x003f,
+    0x003f, 0xdee1, 0xdedd, 0xb7fa, 0xb843, 0x003f, 0xb7fd, 0xded9,
+    0xdeda, 0xbace, 0xb846, 0xb7fe, 0x003f, 0xb844, 0xb7fc, 0xdedf,
+    0xb845, 0xdede, 0xb841, 0xb7fb, 0xb842, 0xdee2, 0xe2e6, 0xe2e8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb840, 0x003f, 0x003f, 0xe2e3, 0xbacc, 0xe2e9, 0xbacd,
+    0xe2e7, 0xe2e2, 0xe2e5, 0xe2ea, 0xbacb, 0xe2e4, 0x003f, 0xbd4e,
+    0xe6bf, 0xe6be, 0x003f, 0xbd51, 0xbd4f, 0xe6bc, 0xbd4d, 0xe6bd,
+    0x003f, 0xbd50, 0x003f, 0x003f, 0x003f, 0xea7d, 0x003f, 0xeaa1,
+    0x003f, 0xea7e, 0xea76, 0xea7a, 0xea79, 0xea77, 0xbf66, 0xbf67,
+    0xbf65, 0xea78, 0xea7b, 0xea7c, 0x003f, 0xbf68, 0x003f, 0xc140,
+    0xeda3, 0x003f, 0xc0fc, 0xed7b, 0xc0fe, 0xc141, 0x003f, 0x003f,
+    0xc0fd, 0xeda2, 0xed7c, 0xc0fb, 0xeda1, 0xed7a, 0xed7e, 0xed7d,
+    0x003f, 0x003f, 0xf055, 0xc2a4, 0xc2a5, 0xc2a2, 0x003f, 0xc2a3,
+    0x003f, 0x003f, 0xf054, 0x003f, 0xf27b, 0x003f, 0x003f, 0xc3a9,
+    0x003f, 0xf279, 0xf27a, 0x003f, 0xf474, 0xf477, 0xf475, 0xf476,
+    0xf5e0, 0x003f, 0x003f, 0xc4ef, 0xf7eb, 0xf8b4, 0x003f, 0xc5f7,
+    0xf8f8, 0xf8f9, 0xc666, 0xa5d9, 0xace1, 0x003f, 0xdac3, 0x003f,
+    0xdee3, 0x003f, 0xa5da, 0xa86f, 0x003f, 0xaabe, 0x003f, 0xcfe8,
+    0xcfe9, 0xaf78, 0x003f, 0x003f, 0xdac4, 0xb575, 0xb847, 0xc142,
+    0xeda4, 0xf27c, 0xf478, 0xa5db, 0x003f, 0x003f, 0x003f, 0xcda1,
+    0xcd7a, 0xcd7c, 0xcd7e, 0xcd7d, 0xcd7b, 0xaabf, 0x003f, 0x003f,
+    /* 0x7800 .. 0x78ff */
+    0x003f, 0x003f, 0xace2, 0xcff2, 0x003f, 0xcfed, 0xcfea, 0x003f,
+    0x003f, 0xcff1, 0x003f, 0x003f, 0xace4, 0xace5, 0xcff0, 0xcfef,
+    0xcfee, 0xcfeb, 0xcfec, 0xcff3, 0xace3, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xaf7c, 0x003f, 0xafa4,
+    0xafa3, 0xd2e1, 0xd2db, 0xd2d9, 0x003f, 0xafa1, 0xd6b9, 0xaf7a,
+    0xd2de, 0xd2e2, 0xd2e4, 0xd2e0, 0xd2da, 0xafa2, 0xd2df, 0xd2dd,
+    0xaf79, 0xd2e5, 0xafa5, 0xd2e3, 0xaf7d, 0xd2dc, 0x003f, 0xaf7e,
+    0xaf7b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb2b9, 0x003f, 0xd6ba, 0x003f, 0x003f,
+    0xd6b3, 0xd6b5, 0xd6b7, 0x003f, 0xd6b8, 0xd6b6, 0xb2ba, 0x003f,
+    0xd6bb, 0x003f, 0xd6b4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xdac8, 0xb576, 0xdad0, 0x003f,
+    0xdac5, 0x003f, 0xdad1, 0x003f, 0xdac6, 0xdac7, 0x003f, 0x003f,
+    0xdacf, 0xdace, 0xdacb, 0xb2b8, 0xb577, 0xdac9, 0xdacc, 0xb578,
+    0xdacd, 0xdaca, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdeee, 0x003f, 0xdef2, 0xb84e, 0x003f, 0xe2f0, 0xb851,
+    0xdef0, 0xf9d6, 0x003f, 0xdeed, 0xdee8, 0xdeea, 0xdeeb, 0xdee4,
+    0x003f, 0xb84d, 0x003f, 0x003f, 0xb84c, 0x003f, 0xb848, 0xdee7,
+    0x003f, 0xb84f, 0x003f, 0xb850, 0xdee6, 0xdee9, 0xdef1, 0xb84a,
+    0xb84b, 0xdeef, 0xdee5, 0x003f, 0x003f, 0x003f, 0xe2f2, 0xbad0,
+    0xe2f4, 0xdeec, 0xe2f6, 0xbad4, 0xe2f7, 0xe2f3, 0x003f, 0xbad1,
+    0xe2ef, 0xbad3, 0xe2ec, 0xe2f1, 0xe2f5, 0xe2ee, 0x003f, 0x003f,
+    0xb849, 0x003f, 0xe2eb, 0xbad2, 0xe2ed, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xbd54, 0xe6c1, 0xbd58, 0x003f, 0xbd56, 0x003f,
+    0x003f, 0xbacf, 0x003f, 0xe6c8, 0xe6c9, 0xbd53, 0x003f, 0x003f,
+    0xe6c7, 0xe6ca, 0xbd55, 0xbd52, 0xe6c3, 0xe6c0, 0xe6c5, 0xe6c2,
+    0xbd59, 0xe6c4, 0x003f, 0x003f, 0xe6c6, 0xbd57, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xbf6a, 0xeaa8, 0x003f, 0xeaa2, 0xeaa6, 0xeaac,
+    0xeaad, 0xeaa9, 0xeaaa, 0xeaa7, 0x003f, 0xeaa4, 0x003f, 0xbf6c,
+    0xbf69, 0xeaa3, 0xeaa5, 0x003f, 0xbf6b, 0xeaab, 0x003f, 0xc146,
+    0x003f, 0x003f, 0xedaa, 0xeda5, 0xc145, 0x003f, 0x003f, 0xc143,
+    0x003f, 0xedac, 0xc144, 0xeda8, 0xeda9, 0xeda6, 0xedad, 0xf056,
+    /* 0x7900 .. 0x79ff */
+    0x003f, 0xc147, 0xeda7, 0x003f, 0xedae, 0xedab, 0x003f, 0x003f,
+    0x003f, 0xf05a, 0x003f, 0x003f, 0xf057, 0x003f, 0xc2a6, 0x003f,
+    0xf05b, 0xf05d, 0xf05c, 0xf058, 0xf059, 0x003f, 0x003f, 0xf2a3,
+    0x003f, 0xc3aa, 0x003f, 0xf27e, 0xf2a2, 0xf27d, 0xf2a4, 0x003f,
+    0x003f, 0xf2a1, 0x003f, 0xf47a, 0xf47d, 0xf479, 0xc471, 0xf47b,
+    0xf47c, 0xf47e, 0xc472, 0xc474, 0xc473, 0xf5e1, 0x003f, 0xf5e3,
+    0x003f, 0xf5e2, 0x003f, 0x003f, 0x003f, 0xf6f6, 0x003f, 0x003f,
+    0xf8b5, 0xf8fa, 0xa5dc, 0x003f, 0x003f, 0xcb72, 0xaac0, 0xcda3,
+    0xaac1, 0xaac2, 0xcda2, 0x003f, 0xcff8, 0xcff7, 0xace6, 0xace9,
+    0xace8, 0xace7, 0xcff4, 0xcff6, 0xcff5, 0x003f, 0x003f, 0xd2e8,
+    0xafa7, 0xd2ec, 0xd2eb, 0xd2ea, 0xd2e6, 0xafa6, 0xafaa, 0xafad,
+    0x003f, 0x003f, 0xafae, 0xd2e7, 0xd2e9, 0xafac, 0xafab, 0xafa9,
+    0xafa8, 0xd6c2, 0x003f, 0xd6c0, 0xd6bc, 0xb2bb, 0x003f, 0xd6bd,
+    0xb2bc, 0xd6be, 0xd6bf, 0xd6c1, 0x003f, 0xb2bd, 0x003f, 0x003f,
+    0xdad5, 0x003f, 0xdad4, 0xdad3, 0xdad2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdef6, 0xb852, 0x003f, 0xdef3, 0xdef5, 0x003f, 0xb853,
+    0x003f, 0xb854, 0xdef4, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe341, 0x003f, 0xe2f9, 0xe2fa, 0x003f, 0xbad7, 0xbad5, 0xbad6,
+    0xe343, 0x003f, 0xe342, 0xe2fe, 0xe2fd, 0xe2fc, 0xe2fb, 0xe340,
+    0xe2f8, 0x003f, 0xe6cb, 0xe6d0, 0xe6ce, 0x003f, 0x003f, 0x003f,
+    0xe6cd, 0xe6cc, 0xe6cf, 0x003f, 0xeaae, 0x003f, 0xbf6d, 0xc148,
+    0xedb0, 0x003f, 0xc149, 0xedaf, 0xf05f, 0xf05e, 0xc2a7, 0x003f,
+    0xf2a5, 0xc3ab, 0xf4a1, 0xc5a1, 0xf6f7, 0x003f, 0xf8b7, 0xf8b6,
+    0xc9a8, 0xacea, 0xaceb, 0xd6c3, 0x003f, 0xb856, 0xa5dd, 0xa872,
+    0xa871, 0xa870, 0x003f, 0x003f, 0x003f, 0xcda4, 0x003f, 0x003f,
+    0xaac4, 0xaac3, 0x003f, 0xacee, 0x003f, 0xcffa, 0xcffd, 0xcffb,
+    0x003f, 0xacec, 0xaced, 0x003f, 0x003f, 0xcff9, 0xcffc, 0x003f,
+    0xafb5, 0x003f, 0x003f, 0x003f, 0xd2f3, 0xd2f5, 0xd2f4, 0xafb2,
+    0xd2ef, 0x003f, 0x003f, 0xafb0, 0xafaf, 0x003f, 0xafb3, 0xafb1,
+    0x003f, 0xafb4, 0xd2f2, 0xd2ed, 0xd2ee, 0xd2f1, 0xd2f0, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd6c6, 0xd6c7,
+    0xd6c5, 0x003f, 0xd6c4, 0xb2be, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x7a00 .. 0x7aff */
+    0xb57d, 0x003f, 0xdad6, 0xdad8, 0xdada, 0xb57c, 0x003f, 0x003f,
+    0xb57a, 0x003f, 0xdad7, 0xb57b, 0xdad9, 0xb579, 0x003f, 0x003f,
+    0xdf41, 0xdef7, 0xdefa, 0xdefe, 0xb85a, 0xdefc, 0x003f, 0xdefb,
+    0xdef8, 0xdef9, 0xb858, 0xdf40, 0xb857, 0x003f, 0xb85c, 0xb85b,
+    0xb859, 0x003f, 0xdefd, 0x003f, 0x003f, 0x003f, 0xe349, 0x003f,
+    0xe348, 0x003f, 0x003f, 0xe344, 0x003f, 0x003f, 0xbad8, 0xe347,
+    0xe346, 0xbad9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xbd5e,
+    0x003f, 0xe6d2, 0x003f, 0xbd5f, 0xbd5b, 0xbd5d, 0x003f, 0xbd5a,
+    0xbd5c, 0x003f, 0x003f, 0x003f, 0xeaaf, 0x003f, 0xbf70, 0xeab1,
+    0xeab0, 0x003f, 0xe345, 0xbf72, 0xbf71, 0xbf6e, 0xbf6f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xedb5, 0x003f, 0xedb3, 0xc14a,
+    0xedb4, 0x003f, 0xedb6, 0xedb2, 0xedb1, 0x003f, 0x003f, 0xf060,
+    0xc2aa, 0xc2a8, 0xc2a9, 0x003f, 0x003f, 0x003f, 0x003f, 0xf2a6,
+    0xf2a7, 0xc3ad, 0x003f, 0xc3ac, 0xf4a3, 0xf4a4, 0xf4a2, 0x003f,
+    0xf6f8, 0xf6f9, 0x003f, 0x003f, 0xa5de, 0xca48, 0xa873, 0x003f,
+    0xcda5, 0xaac6, 0xaac5, 0xcda6, 0x003f, 0x003f, 0xd040, 0xacef,
+    0xcffe, 0xacf0, 0x003f, 0x003f, 0xafb6, 0xd2f8, 0xd2f6, 0xd2fc,
+    0xafb7, 0xd2f7, 0xd2fb, 0xd2f9, 0xd2fa, 0x003f, 0x003f, 0xd6c8,
+    0xd6ca, 0x003f, 0xb2bf, 0x003f, 0xd6c9, 0xb2c0, 0xb5a2, 0xb5a1,
+    0xb57e, 0xdadb, 0x003f, 0x003f, 0x003f, 0x003f, 0xdf44, 0xb85d,
+    0xb85e, 0x003f, 0xdf43, 0xdf42, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe34a, 0xbadb, 0xbada, 0xe34b, 0xe34c, 0x003f, 0xbd61, 0xbd60,
+    0x003f, 0xeab5, 0xe6d3, 0xe6d5, 0xe6d4, 0xeab4, 0xeab2, 0xeab6,
+    0xeab3, 0x003f, 0xbf73, 0x003f, 0x003f, 0x003f, 0xedb7, 0xc14b,
+    0xedb8, 0xedb9, 0x003f, 0x003f, 0xc2ab, 0xc2ac, 0x003f, 0xc475,
+    0x003f, 0x003f, 0xc5d1, 0xa5df, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xd041, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd2fd, 0xafb8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb3ba,
+    0xb3b9, 0x003f, 0x003f, 0xb5a4, 0xdadd, 0xb5a3, 0xdadc, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdf45, 0x003f, 0xbadc, 0xe34d, 0xbadd,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc476, 0xf4a5,
+    0x003f, 0xa6cb, 0xaac7, 0xcda7, 0x003f, 0xacf2, 0x003f, 0xacf1,
+    /* 0x7b00 .. 0x7bff */
+    0xd042, 0xd043, 0x003f, 0x003f, 0xd340, 0xd342, 0xafb9, 0x003f,
+    0xd344, 0xd347, 0xd345, 0x003f, 0x003f, 0x003f, 0xd346, 0xd343,
+    0xd2fe, 0xafba, 0xd348, 0xd341, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd6d3, 0xb2c6, 0xd6dc, 0xb2c3, 0x003f, 0xd6d5, 0xb2c7, 0x003f,
+    0xb2c1, 0x003f, 0xd6d0, 0xd6dd, 0xd6d1, 0xd6ce, 0xb2c5, 0x003f,
+    0xb2c2, 0x003f, 0xd6d4, 0xd6d7, 0xb2c4, 0xd6d8, 0xb2c8, 0xd6d9,
+    0xd6cf, 0xd6d6, 0xd6da, 0xd6d2, 0xd6cd, 0xd6cb, 0x003f, 0x003f,
+    0xd6db, 0x003f, 0x003f, 0xdadf, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xdae4, 0x003f, 0x003f, 0x003f, 0xdae0, 0xdae6, 0xb5a7, 0xd6cc,
+    0xdae1, 0xb5a5, 0xdade, 0xb5ac, 0xdae2, 0xb5ab, 0xdae3, 0xb5ad,
+    0xb5a8, 0xb5ae, 0xb5a9, 0x003f, 0xb5aa, 0x003f, 0xb5a6, 0x003f,
+    0xdae5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xb861, 0xdf50, 0x003f, 0xdf53, 0xdf47, 0xdf4c, 0xdf46, 0xb863,
+    0x003f, 0xdf4a, 0x003f, 0x003f, 0x003f, 0xdf48, 0xb862, 0x003f,
+    0xdf4f, 0xdf4e, 0xdf4b, 0xdf4d, 0xdf49, 0xbae1, 0xdf52, 0xb85f,
+    0xdf51, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xe35d, 0x003f, 0xbae8, 0xe358, 0x003f, 0xbae7,
+    0xe34e, 0x003f, 0xe350, 0xbae0, 0xe355, 0xe354, 0xe357, 0xbae5,
+    0xe352, 0xe351, 0x003f, 0x003f, 0xbae4, 0xbadf, 0xe353, 0xbae2,
+    0xe359, 0xe35b, 0x003f, 0xe356, 0xe34f, 0xbae3, 0x003f, 0x003f,
+    0xbd69, 0xbade, 0x003f, 0x003f, 0xe35c, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe6d9, 0xbd62, 0x003f, 0xe6db,
+    0x003f, 0xbd63, 0x003f, 0x003f, 0xbd65, 0xe6de, 0x003f, 0xe6d6,
+    0xbae6, 0xe6dc, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6d8, 0x003f,
+    0xb860, 0xbd68, 0x003f, 0x003f, 0xbd64, 0x003f, 0xbd66, 0xbd67,
+    0x003f, 0xbf76, 0xe6dd, 0xe6d7, 0xbd6a, 0x003f, 0xe6da, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xeac0, 0xeabb, 0x003f, 0x003f,
+    0xeac5, 0xbf74, 0xeabd, 0xbf78, 0xeac3, 0xeaba, 0xeab7, 0xeac6,
+    0xc151, 0xbf79, 0xeac2, 0xeab8, 0xbf77, 0xeabc, 0xbf7b, 0xeab9,
+    0xeabe, 0xbf7a, 0xeac1, 0xeac4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xedcb, 0xedcc, 0xedbc, 0xedc3, 0xedc1, 0x003f, 0x003f, 0xc14f,
+    0xedc8, 0xeabf, 0x003f, 0xedbf, 0x003f, 0xedc9, 0xc14e, 0xedbe,
+    /* 0x7c00 .. 0x7cff */
+    0xedbd, 0xedc7, 0xedc4, 0xedc6, 0x003f, 0xedba, 0xedca, 0xc14c,
+    0x003f, 0xedc5, 0xedce, 0xedc2, 0xc150, 0xc14d, 0xedc0, 0xedbb,
+    0xedcd, 0xbf75, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf063, 0x003f, 0x003f, 0xf061, 0xf067, 0xc2b0, 0xf065,
+    0xf064, 0xc2b2, 0xf06a, 0xc2b1, 0x003f, 0xf06b, 0xf068, 0xc2ae,
+    0xf069, 0xf062, 0xc2af, 0xc2ad, 0xf2ab, 0xf066, 0x003f, 0x003f,
+    0xf06c, 0x003f, 0x003f, 0xf2a8, 0x003f, 0x003f, 0x003f, 0xc3b2,
+    0xc3b0, 0xf2aa, 0x003f, 0xf2ac, 0xf2a9, 0xc3b1, 0xc3ae, 0xc3af,
+    0xc3b3, 0x003f, 0x003f, 0xc478, 0x003f, 0xf4aa, 0x003f, 0xf4a9,
+    0xf4a7, 0xf4a6, 0xf4a8, 0x003f, 0xc477, 0xc479, 0x003f, 0x003f,
+    0xc4f0, 0x003f, 0x003f, 0xf5e5, 0xf5e4, 0x003f, 0x003f, 0xf6fa,
+    0x003f, 0xf6fc, 0xf6fe, 0xf6fd, 0xf6fb, 0x003f, 0x003f, 0xc5a3,
+    0xc5a2, 0x003f, 0x003f, 0xc5d3, 0xc5d2, 0xc5d4, 0xf7ed, 0xf7ec,
+    0x003f, 0xf8fb, 0xf8b8, 0xf8fc, 0xc658, 0x003f, 0xc659, 0xf96d,
+    0x003f, 0x003f, 0xc67e, 0xa6cc, 0x003f, 0xcda8, 0x003f, 0x003f,
+    0xd045, 0xd046, 0xd044, 0x003f, 0x003f, 0xacf3, 0x003f, 0xd047,
+    0xd048, 0xd049, 0x003f, 0x003f, 0xd349, 0xd34f, 0x003f, 0x003f,
+    0xd34d, 0xafbb, 0xd34b, 0x003f, 0xd34c, 0xd34e, 0x003f, 0x003f,
+    0x003f, 0xd34a, 0xb2c9, 0x003f, 0xd6de, 0xb2cb, 0xd6e0, 0xb2ca,
+    0xd6df, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdae8, 0xb5af,
+    0x003f, 0xdaea, 0xdae7, 0xd6e1, 0x003f, 0xb5b0, 0x003f, 0xf9db,
+    0xdae9, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdf56,
+    0x003f, 0xb864, 0xdf54, 0xb865, 0xdf55, 0xb866, 0x003f, 0x003f,
+    0x003f, 0xbae9, 0xe361, 0xe35e, 0xe360, 0xbaea, 0xbaeb, 0xe35f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6df, 0x003f, 0x003f,
+    0xe6e0, 0x003f, 0xbd6b, 0xe6e2, 0xe6e1, 0x003f, 0xa261, 0x003f,
+    0xeaca, 0xeacb, 0xeac7, 0x003f, 0xeac8, 0xbf7c, 0xbf7d, 0xeac9,
+    0x003f, 0xc157, 0x003f, 0x003f, 0xc153, 0xc158, 0xc154, 0xc156,
+    0xc152, 0x003f, 0xc155, 0x003f, 0x003f, 0x003f, 0x003f, 0xc2b3,
+    0xedcf, 0x003f, 0xf2ae, 0x003f, 0xf2ad, 0x003f, 0xf4ab, 0xc47a,
+    0xc47b, 0xf741, 0xf5e6, 0x003f, 0xf740, 0x003f, 0xf8fd, 0xf9a4,
+    0xa6cd, 0x003f, 0x003f, 0xa874, 0x003f, 0xcda9, 0xaac8, 0x003f,
+    /* 0x7d00 .. 0x7dff */
+    0xacf6, 0xd04c, 0xacf4, 0xd04a, 0xacf9, 0xacf5, 0xacfa, 0xacf8,
+    0xd04b, 0xacf7, 0xafbf, 0xafbe, 0xd35a, 0xafc7, 0xd353, 0xd359,
+    0xafc3, 0xd352, 0xd358, 0xd356, 0xafc2, 0xafc4, 0xd355, 0xafbd,
+    0xd354, 0xafc8, 0xafc5, 0xafc9, 0xafc6, 0xd351, 0xd350, 0xd357,
+    0xafc0, 0xafbc, 0xafc1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd6f0, 0xd6e9, 0x003f, 0xb5b5, 0xd6e8, 0x003f, 0xb2cf, 0xb2d6,
+    0xb2d3, 0xb2d9, 0xb2d8, 0xb2d4, 0x003f, 0xd6e2, 0xd6e5, 0x003f,
+    0xd6e4, 0xb2d0, 0xd6e6, 0xd6ef, 0xb2d1, 0xd6e3, 0xd6ec, 0xd6ed,
+    0xb2d2, 0xd6ea, 0xb2d7, 0xb2cd, 0xb2d5, 0xd6e7, 0xb2cc, 0xd6eb,
+    0x003f, 0x003f, 0xd6ee, 0x003f, 0x003f, 0x003f, 0xdafb, 0xdaf2,
+    0xb5b2, 0xdaf9, 0xdaf6, 0xdaee, 0xdaf7, 0xb5b4, 0xdaef, 0x003f,
+    0xdaeb, 0x003f, 0x003f, 0xb86c, 0xdaf4, 0x003f, 0xb5b1, 0xdafa,
+    0x003f, 0xb5b8, 0xb5ba, 0xdaed, 0x003f, 0x003f, 0xb5b9, 0xdaf0,
+    0xb5b3, 0xdaf8, 0xdaf1, 0xdaf5, 0x003f, 0xdaf3, 0xb5b6, 0xdaec,
+    0xb5bb, 0xb2ce, 0xb5b7, 0xb5bc, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb868, 0xdf5d, 0xdf5f, 0xdf61, 0xdf65, 0x003f, 0xdf5b,
+    0xdf59, 0xb86a, 0x003f, 0xdf60, 0xdf64, 0xdf5c, 0xdf58, 0x003f,
+    0xdf57, 0x003f, 0x003f, 0x003f, 0xdf62, 0xdf5a, 0xdf5e, 0xb86b,
+    0x003f, 0xb869, 0xdf66, 0xb867, 0xdf63, 0x003f, 0xe372, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xbaee, 0xe36a, 0xbd78, 0xe374,
+    0xbaf1, 0xe378, 0xbaf7, 0xe365, 0x003f, 0x003f, 0xe375, 0xe362,
+    0x003f, 0xe377, 0xe366, 0x003f, 0xbafe, 0xbafb, 0xe376, 0xe370,
+    0xbaed, 0xbaf5, 0xbaf4, 0x003f, 0xbaf3, 0xbaf9, 0x003f, 0xe363,
+    0xbafa, 0xe371, 0xbaf6, 0xbaec, 0xe373, 0xbaef, 0xbaf0, 0xbaf8,
+    0xe368, 0xe367, 0xe364, 0x003f, 0xe36c, 0xe369, 0xe36d, 0xbafd,
+    0x003f, 0xe379, 0xbaf2, 0xe36e, 0xe36f, 0x003f, 0xe36b, 0x003f,
+    0x003f, 0x003f, 0xbafc, 0x003f, 0x003f, 0x003f, 0x003f, 0xe6e7,
+    0xbd70, 0xbd79, 0xbd75, 0xe6e4, 0x003f, 0xbd72, 0xbd76, 0xe6f0,
+    0xbd6c, 0xe6e8, 0x003f, 0xbd74, 0x003f, 0x003f, 0xe6eb, 0xe6e6,
+    0xbd73, 0xbd77, 0xe6e5, 0x003f, 0xbd71, 0x003f, 0xe6ef, 0xbd6e,
+    0xe6ee, 0xe6ed, 0xbd7a, 0xe572, 0xbd6d, 0x003f, 0xe6ec, 0xe6e3,
+    0x003f, 0xbd7b, 0xe6ea, 0xbd6f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x7e00 .. 0x7eff */
+    0x003f, 0x003f, 0x003f, 0xe6e9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xbfa2, 0xbfa7, 0xbf7e, 0xead8, 0xeacf, 0xeadb, 0xead3, 0xead9,
+    0xbfa8, 0xbfa1, 0xeacc, 0xead2, 0xeadc, 0xead5, 0xeada, 0xeace,
+    0x003f, 0x003f, 0xead6, 0xbfa3, 0xead4, 0xbfa6, 0xbfa5, 0xead0,
+    0xead1, 0xeacd, 0xead7, 0xbfa4, 0xeade, 0xeadd, 0x003f, 0x003f,
+    0x003f, 0xedda, 0xedd6, 0xc15f, 0x003f, 0xedd0, 0xc159, 0xc169,
+    0xeddc, 0xc161, 0xc15d, 0xedd3, 0xc164, 0xc167, 0xedde, 0xc15c,
+    0xedd5, 0xc165, 0xede0, 0xeddd, 0xedd1, 0xc160, 0xc15a, 0xc168,
+    0xedd8, 0xc163, 0xedd2, 0xc15e, 0xeddf, 0xc162, 0xc15b, 0xedd9,
+    0xc166, 0xedd7, 0x003f, 0x003f, 0xeddb, 0x003f, 0x003f, 0x003f,
+    0xf06e, 0xf074, 0xc2b9, 0xf077, 0xc2b4, 0xc2b5, 0xf06f, 0xf076,
+    0xf071, 0xc2ba, 0xc2b7, 0x003f, 0xf06d, 0x003f, 0xc2b6, 0xf073,
+    0xf075, 0xc2b8, 0xf072, 0xf070, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf2b8, 0xc3b7, 0xc3b8, 0xc3b4, 0x003f, 0xc3b5, 0x003f, 0xf2b4,
+    0xf2b2, 0x003f, 0xf2b6, 0xc3ba, 0xf2b7, 0xf2b0, 0xf2af, 0xf2b3,
+    0xf2b1, 0xc3b6, 0xf2b5, 0xf4ac, 0xc47e, 0xc47d, 0xf4ad, 0x003f,
+    0xf4af, 0xf4ae, 0xc4a1, 0x003f, 0x003f, 0x003f, 0xf5eb, 0xf5e8,
+    0xf5e9, 0x003f, 0xf5e7, 0xf5ea, 0xc4f2, 0xf5ec, 0x003f, 0xc4f1,
+    0x003f, 0xf742, 0x003f, 0xc5d5, 0xc5d7, 0xf7ee, 0xc5d6, 0xf8b9,
+    0xf940, 0xf942, 0xf8fe, 0xf941, 0xc66c, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x7f00 .. 0x7fff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa6ce, 0x003f,
+    0xacfb, 0xd26f, 0xafca, 0x003f, 0x003f, 0xb2da, 0xdafc, 0xdafd,
+    0x003f, 0x003f, 0x003f, 0xeadf, 0xc16a, 0xede1, 0x003f, 0x003f,
+    0xc2bb, 0x003f, 0xf2ba, 0xf2b9, 0xc4a2, 0xf5ed, 0x003f, 0xf743,
+    0xc5f8, 0xca49, 0x003f, 0x003f, 0xaac9, 0xa875, 0x003f, 0x003f,
+    0xd04d, 0x003f, 0x003f, 0xd360, 0xd35b, 0xd35f, 0xd35d, 0xafcb,
+    0xd35e, 0xd35c, 0x003f, 0xd6f1, 0x003f, 0xdafe, 0xdb40, 0xdf69,
+    0xdf6a, 0xb86e, 0xb86f, 0xdf68, 0xdf6b, 0xdf67, 0xb86d, 0x003f,
+    0xbb40, 0x003f, 0xb870, 0xe37a, 0x003f, 0xbd7c, 0xe6f1, 0xbd7d,
+    0x003f, 0xbfa9, 0xeae2, 0xeae0, 0xeae1, 0xede4, 0xede3, 0xede2,
+    0x003f, 0x003f, 0x003f, 0xf2bb, 0x003f, 0xc3b9, 0xf2bc, 0xf744,
+    0xc5f9, 0xf8ba, 0xa6cf, 0xaacb, 0xaaca, 0xd04f, 0xacfc, 0x003f,
+    0x003f, 0xd04e, 0xd362, 0x003f, 0xafcc, 0xd6f2, 0xd361, 0x003f,
+    0x003f, 0x003f, 0xb2dc, 0xd6f5, 0xd6f3, 0xd6f4, 0xb2db, 0x003f,
+    0xdb42, 0xdb43, 0xdb41, 0x003f, 0xb873, 0xdf6d, 0xdf6c, 0xdf6e,
+    0xb872, 0xb871, 0x003f, 0x003f, 0xe6f2, 0xe6f4, 0x003f, 0xbd7e,
+    0xe6f3, 0xeae3, 0xbfaa, 0xf079, 0x003f, 0xf078, 0xc3bb, 0xf2bd,
+    0xc3bd, 0xc3bc, 0xf4b0, 0xf5ee, 0xc4f3, 0xa6d0, 0xd050, 0xacfd,
+    0xd365, 0xafce, 0xd364, 0xd363, 0x003f, 0xafcd, 0x003f, 0xd6fb,
+    0x003f, 0xd6fd, 0xd6f6, 0xd6f7, 0xb2dd, 0xd6f8, 0xb2de, 0xd6fc,
+    0xd6f9, 0xd6fa, 0xb2df, 0x003f, 0xb5be, 0xb5bf, 0x003f, 0xdb44,
+    0x003f, 0x003f, 0x003f, 0xdf6f, 0xdf70, 0x003f, 0xe37e, 0xbb43,
+    0xbb41, 0xbb42, 0xe37b, 0xe37c, 0x003f, 0xe37d, 0xe6f9, 0x003f,
+    0xe6fa, 0xbda1, 0xe6f7, 0xe6f6, 0xe6f8, 0xe6f5, 0xbfad, 0xeae4,
+    0xbfab, 0xbfac, 0xede6, 0xc16b, 0xede5, 0xefa8, 0x003f, 0xf07a,
+    0xf07b, 0xc2bc, 0x003f, 0xc2bd, 0xc16c, 0xf2be, 0xf2bf, 0xf4b1,
+    /* 0x8000 .. 0x80ff */
+    0xc4a3, 0xa6d1, 0x003f, 0xa6d2, 0xacfe, 0xaacc, 0xafcf, 0xd051,
+    0x003f, 0x003f, 0x003f, 0xb5c0, 0xa6d3, 0xad41, 0xd052, 0xd053,
+    0xad40, 0xad42, 0xa6d4, 0x003f, 0xd054, 0xafd1, 0xd366, 0xafd3,
+    0xafd0, 0xafd2, 0x003f, 0xd741, 0xb2e0, 0x003f, 0xd740, 0xd6fe,
+    0x003f, 0xdf71, 0x003f, 0x003f, 0xe3a1, 0x003f, 0xbda2, 0x003f,
+    0xbfae, 0xeae6, 0xeae5, 0x003f, 0xede7, 0x003f, 0x003f, 0x003f,
+    0xf5ef, 0x003f, 0x003f, 0xa6d5, 0xcb73, 0xcdaa, 0xad43, 0xd055,
+    0x003f, 0xd368, 0x003f, 0x003f, 0x003f, 0xafd4, 0xd367, 0xafd5,
+    0x003f, 0x003f, 0x003f, 0xd743, 0x003f, 0x003f, 0xb2e2, 0xd742,
+    0xd744, 0x003f, 0xb2e1, 0x003f, 0x003f, 0x003f, 0x003f, 0xdb46,
+    0xdb47, 0xdb45, 0xb5c1, 0x003f, 0x003f, 0x003f, 0xb874, 0x003f,
+    0xb875, 0x003f, 0xbb45, 0x003f, 0xe3a3, 0xe3a2, 0xbb44, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe6fb, 0x003f, 0x003f, 0xe6fc,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xeae7, 0x003f, 0x003f, 0xc170,
+    0xc16f, 0xc16d, 0xc16e, 0xc171, 0x003f, 0xf07c, 0xc2bf, 0xc2be,
+    0xf2c0, 0xf4b2, 0x003f, 0x003f, 0x003f, 0xc5a5, 0xc5a4, 0xa6d6,
+    0x003f, 0x003f, 0xd1fb, 0x003f, 0xb877, 0xb5c2, 0xb876, 0xbb46,
+    0x003f, 0xa6d7, 0xc9a9, 0xa6d8, 0xa6d9, 0x003f, 0x003f, 0xcdab,
+    0xcb76, 0x003f, 0xcb77, 0xa877, 0x003f, 0xcb74, 0xa876, 0x003f,
+    0xa879, 0xcb75, 0xa87b, 0xa87a, 0xcb78, 0xa878, 0x003f, 0x003f,
+    0x003f, 0xaad1, 0xaacf, 0xcdad, 0x003f, 0xaace, 0x003f, 0x003f,
+    0x003f, 0xaad3, 0xaad5, 0xaad2, 0x003f, 0xcdb0, 0xcdac, 0xaad6,
+    0x003f, 0xaad0, 0xa87c, 0x003f, 0xaad4, 0xcdaf, 0x003f, 0x003f,
+    0xcdae, 0x003f, 0xaacd, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd05b, 0xad47, 0xad48, 0xd05d, 0x003f, 0xd057,
+    0xd05a, 0xd063, 0xd061, 0x003f, 0xad49, 0xd067, 0xad4c, 0xd064,
+    0xd05c, 0xd059, 0x003f, 0x003f, 0xdb49, 0xd062, 0xad44, 0xd065,
+    0xd056, 0xd05f, 0xad46, 0xad4b, 0xd060, 0xad4f, 0xad4d, 0x003f,
+    0xd058, 0xad4a, 0x003f, 0xd05e, 0xad4e, 0xad45, 0xd066, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xafda, 0x003f, 0xafe3,
+    0xafd8, 0xafd6, 0xd36a, 0xafde, 0xafdb, 0xd36c, 0x003f, 0x003f,
+    0xafdd, 0xd36b, 0xd369, 0xd36e, 0xafe2, 0xafe0, 0xdb48, 0x003f,
+    /* 0x8100 .. 0x81ff */
+    0xd36f, 0xd36d, 0xafd7, 0x003f, 0x003f, 0xafd9, 0xafdc, 0x003f,
+    0xafdf, 0x003f, 0xafe1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd74e, 0xb2e4, 0x003f,
+    0xd745, 0xd747, 0x003f, 0xd748, 0x003f, 0xd750, 0xd74c, 0xd74a,
+    0x003f, 0xd74d, 0xd751, 0xb2e5, 0xb2e9, 0xd746, 0x003f, 0xd74f,
+    0x003f, 0xb2e7, 0x003f, 0xb2e6, 0xd74b, 0xd749, 0x003f, 0xb2e3,
+    0xb2e8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb5c8, 0xdb51, 0x003f, 0x003f, 0xdb4f, 0xb5ca, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdb4a, 0xdfa1, 0x003f, 0xb5c9, 0xdb4e,
+    0x003f, 0x003f, 0xdb4b, 0xb5c5, 0xb5cb, 0xdb50, 0xb5c7, 0xdb4d,
+    0xbb47, 0xb5c6, 0xdb4c, 0xb5cc, 0xb5c4, 0xb5c3, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdf77, 0xdf75, 0x003f, 0xdf7b, 0x003f,
+    0xdf73, 0xdfa2, 0xdf78, 0x003f, 0xdf72, 0xb87b, 0xb8a3, 0xdf7d,
+    0x003f, 0xdf76, 0x003f, 0xb87e, 0x003f, 0x003f, 0xb87c, 0xdf7e,
+    0xb879, 0xb878, 0xdf79, 0xb87d, 0xb5cd, 0x003f, 0xdf7c, 0xdf74,
+    0xb87a, 0xb8a1, 0xb8a2, 0x003f, 0x003f, 0x003f, 0x003f, 0xbb4c,
+    0xbb48, 0x003f, 0xbb4d, 0xe3a6, 0x003f, 0x003f, 0xe3a5, 0xe3a7,
+    0xbb4a, 0xe3a4, 0xbb4b, 0xe3aa, 0xe3a9, 0xe3a8, 0x003f, 0xbb49,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe741, 0x003f, 0xe744,
+    0xbda8, 0xe743, 0xbda7, 0xbda3, 0xbda4, 0xbda5, 0xe740, 0xe6fe,
+    0xbda6, 0x003f, 0xe742, 0xe6fd, 0x003f, 0x003f, 0xeae9, 0xeaf3,
+    0xbfb1, 0xbfb0, 0x003f, 0xeaed, 0xeaef, 0x003f, 0xeaea, 0x003f,
+    0xeaee, 0xeae8, 0xeaf1, 0xbfaf, 0xeaf0, 0xeaec, 0x003f, 0xeaf2,
+    0x003f, 0xeaeb, 0xc174, 0xede8, 0xedee, 0xc178, 0xc17a, 0xc177,
+    0xc176, 0x003f, 0xc175, 0xc173, 0xede9, 0xedec, 0xc172, 0xeded,
+    0x003f, 0xc179, 0xedeb, 0x003f, 0xedea, 0xc2c0, 0x003f, 0xc2c1,
+    0xf0a1, 0xf07d, 0xf07e, 0x003f, 0x003f, 0xf2c2, 0x003f, 0xf2c1,
+    0xc3be, 0xf4b4, 0xc4a4, 0xf4b3, 0x003f, 0xf5f0, 0xf745, 0xc5a6,
+    0xf943, 0xf944, 0xc5d8, 0xa6da, 0x003f, 0xaad7, 0xdb52, 0xbb4e,
+    0xc17b, 0xedef, 0xa6db, 0x003f, 0xafe5, 0xafe4, 0xdb53, 0x003f,
+    0x003f, 0x003f, 0xeaf4, 0xa6dc, 0xad50, 0x003f, 0x003f, 0xdb54,
+    0xdb55, 0xdb56, 0xbb4f, 0xbfb2, 0xa6dd, 0x003f, 0xaad8, 0xd068,
+    /* 0x8200 .. 0x82ff */
+    0xafe6, 0xd370, 0xb2ea, 0x003f, 0xdb57, 0xb8a4, 0x003f, 0xbb50,
+    0xbfb3, 0xc17c, 0xc2c2, 0xf4b5, 0xa6de, 0xaad9, 0x003f, 0x003f,
+    0xafe7, 0xd752, 0xb5ce, 0x003f, 0xbb51, 0xe3ab, 0xe745, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xa6df, 0xb5cf, 0xdfa3, 0xbb52, 0xa6e0,
+    0xcdb1, 0xd069, 0xad51, 0x003f, 0x003f, 0xd372, 0x003f, 0x003f,
+    0xafea, 0x003f, 0xafe8, 0xafe9, 0xafeb, 0x003f, 0x003f, 0xd371,
+    0x003f, 0x003f, 0xd757, 0xd754, 0xd756, 0xb2eb, 0xb2ed, 0xb2ec,
+    0xd753, 0xb2ee, 0xd755, 0x003f, 0xdb58, 0xdb59, 0x003f, 0xdb5a,
+    0xdfa6, 0x003f, 0xdfa7, 0x003f, 0xdfa5, 0xdfa8, 0x003f, 0xb8a5,
+    0x003f, 0xdfa4, 0x003f, 0xbb53, 0x003f, 0x003f, 0xe74a, 0xe746,
+    0xe749, 0xe74b, 0xe748, 0xe747, 0x003f, 0xeaf5, 0xeaf6, 0xeaf7,
+    0xbfb4, 0xbfb5, 0xedf1, 0xedf0, 0xedf2, 0x003f, 0xf0a3, 0xf0a2,
+    0x003f, 0xf2c4, 0x003f, 0xf2c5, 0xf2c3, 0x003f, 0xc4a5, 0x003f,
+    0xf4b6, 0xf4b7, 0x003f, 0xf746, 0xf7ef, 0xf8bb, 0xa6e1, 0xa87d,
+    0x003f, 0xc17d, 0xa6e2, 0x003f, 0xd758, 0xdb5b, 0x003f, 0xc641,
+    0xca4a, 0x003f, 0x003f, 0x003f, 0xca4b, 0xca4d, 0xa6e3, 0xca4e,
+    0xca4c, 0x003f, 0x003f, 0xcba2, 0xcba3, 0xcb7b, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xcba1, 0xa8a1, 0x003f, 0xa8a2, 0xcb7c, 0xcb7a,
+    0xcb79, 0xcb7d, 0xa87e, 0xcb7e, 0xd06a, 0x003f, 0x003f, 0x003f,
+    0xcdb6, 0xaadc, 0xcdb5, 0xcdb7, 0x003f, 0xaadb, 0xcdbc, 0xaadf,
+    0xcdb2, 0xcdc0, 0xcdc6, 0xaae6, 0xcdc3, 0xaae3, 0x003f, 0xcdb9,
+    0xcdbf, 0xcdc1, 0x003f, 0xcdb4, 0xaae2, 0xaadd, 0xcdba, 0xaae4,
+    0xaae7, 0xaae1, 0x003f, 0xaada, 0xcdbe, 0xcdb8, 0xcdc5, 0xaae9,
+    0xaae5, 0xaae0, 0xcdbd, 0xafec, 0xcdbb, 0xaade, 0xaae8, 0x003f,
+    0xcdb3, 0x003f, 0xcdc2, 0xcdc4, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xad62, 0xad5c, 0xad64, 0xad61, 0xd071, 0xd074, 0xad5d,
+    0x003f, 0xd06b, 0x003f, 0xad56, 0xad60, 0x003f, 0xad63, 0xad65,
+    0xd0a2, 0xd077, 0x003f, 0xad55, 0xd0a1, 0xad59, 0xad57, 0xad52,
+    0xd06f, 0x003f, 0xd07e, 0xd073, 0xd076, 0xd0a5, 0x003f, 0xad66,
+    0xd07d, 0xad5e, 0xd078, 0xd0a4, 0xd075, 0xd079, 0xd07c, 0x003f,
+    0x003f, 0xd06d, 0xd0a3, 0xd07b, 0x003f, 0x003f, 0xd06c, 0x003f,
+    /* 0x8300 .. 0x83ff */
+    0xd070, 0xad5f, 0xad5a, 0xad53, 0xad58, 0xad54, 0xad67, 0xd06e,
+    0xd3a5, 0xad5b, 0x003f, 0x003f, 0xd07a, 0xce41, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd3a8, 0xaffa,
+    0x003f, 0xd376, 0x003f, 0xd3a3, 0xd37d, 0x003f, 0xd3b2, 0x003f,
+    0xd3aa, 0x003f, 0xd37e, 0x003f, 0xd3a9, 0xd378, 0xd37c, 0xd3b5,
+    0xaffd, 0xd3ad, 0xd3a4, 0xafed, 0xd3b3, 0xd374, 0x003f, 0xd3ac,
+    0x003f, 0xaffc, 0xaff7, 0xd373, 0xaff5, 0xaff4, 0xaff9, 0xd3ab,
+    0xaff1, 0xaff8, 0xd072, 0xdb5c, 0xd3a6, 0x003f, 0x003f, 0xd37a,
+    0xaffb, 0xd37b, 0xd3a1, 0xaffe, 0xd375, 0xd3af, 0x003f, 0xd3ae,
+    0xd3b6, 0xaff3, 0xaff0, 0xd3b4, 0xd3b0, 0xd3a7, 0xd3a2, 0xaff6,
+    0xaff2, 0xd377, 0xafee, 0xd3b1, 0xafef, 0x003f, 0xd379, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd75e, 0xd760, 0xd765, 0xd779, 0xb2fc,
+    0xb2f2, 0x003f, 0xd75d, 0xb2fd, 0xb2fe, 0xd768, 0xd76f, 0xd775,
+    0x003f, 0xd762, 0x003f, 0xd769, 0x003f, 0x003f, 0xb340, 0xd777,
+    0xd772, 0xb2fa, 0xb2f8, 0xd76e, 0xd76a, 0xd75c, 0xb2ef, 0xd761,
+    0xd759, 0x003f, 0xb2f7, 0xb2f9, 0xd766, 0xd763, 0xb2f4, 0xd773,
+    0xb2f1, 0xd764, 0xd77a, 0xd76c, 0x003f, 0xd76b, 0xb2f0, 0x003f,
+    0xb2fb, 0x003f, 0xb2f3, 0xd75a, 0xd75f, 0xd770, 0xd776, 0xb341,
+    0xd75b, 0xd767, 0xd76d, 0xb2f6, 0x003f, 0x003f, 0xd778, 0xd771,
+    0xd774, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb2f5, 0x003f, 0xdb6c,
+    0xdb60, 0xb5d7, 0xdb7d, 0xdba7, 0xdbaa, 0xb5d5, 0xdb68, 0xdba3,
+    0xdb69, 0xdb77, 0xb5e2, 0xdb73, 0xb5df, 0x003f, 0xdb74, 0xdb5d,
+    0x003f, 0xdba4, 0x003f, 0x003f, 0xb5e8, 0xdba1, 0xdb75, 0xdbac,
+    0xdb70, 0xdfc8, 0x003f, 0xdbaf, 0xb5e6, 0xdb6e, 0xdb7a, 0xb5e9,
+    0xb5d4, 0xdb72, 0xdbad, 0xdb6b, 0xdb64, 0xdb6f, 0x003f, 0xdb63,
+    0xdb61, 0xb5d0, 0xdba5, 0xdb6a, 0xdba8, 0x003f, 0xdba9, 0xb5d8,
+    0xb5dd, 0xb5d9, 0xb5e1, 0xdb7e, 0xb5da, 0xdb76, 0xdb66, 0x003f,
+    0xb5d2, 0xdb5e, 0xdba2, 0xdbab, 0xdb65, 0xb5e0, 0xdbb0, 0xdb71,
+    /* 0x8400 .. 0x84ff */
+    0x003f, 0xdb6d, 0x003f, 0xb5d1, 0xb5e5, 0x003f, 0xdb7c, 0xb5e7,
+    0x003f, 0xdb78, 0xb5dc, 0xb5d6, 0xb5de, 0xb5d3, 0xb5e4, 0xdb79,
+    0xdb67, 0xdb7b, 0xdb62, 0xdba6, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdbae, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xdb5f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdfc7, 0x003f, 0xdfdd, 0xb855, 0xdfcc, 0x003f, 0xdfca,
+    0xdfb5, 0xb8a9, 0xdfc5, 0xdfd9, 0xdfc1, 0xb8b1, 0xdfd8, 0xdfbf,
+    0xb5e3, 0xdfcf, 0xdfc0, 0xdfd6, 0xb8b0, 0xb8a8, 0x003f, 0xdfaa,
+    0xdfb2, 0x003f, 0xdfcb, 0xdfc3, 0xdfdc, 0xdfc6, 0xb8b6, 0xdfd7,
+    0x003f, 0xb8ad, 0x003f, 0xdfc9, 0xdfd1, 0xdfb6, 0xdfd0, 0x003f,
+    0xdfe1, 0xdfb1, 0xdfd2, 0x003f, 0xdfdf, 0x003f, 0xdfab, 0xb5db,
+    0x003f, 0xdfb9, 0xdfb8, 0xb8af, 0x003f, 0xdfbc, 0xdfbe, 0xdfcd,
+    0xdfde, 0xb8b2, 0x003f, 0xb8b3, 0x003f, 0xdfb0, 0xb8ab, 0xdfb4,
+    0xdfda, 0xb8b4, 0x003f, 0xb8ac, 0xb8ae, 0xb8b5, 0xdfe0, 0xdfd3,
+    0xdfce, 0x003f, 0x003f, 0xdfbb, 0xdfba, 0xb8aa, 0xdfac, 0xb8a7,
+    0xdfc4, 0xdfad, 0xdfc2, 0x003f, 0x003f, 0xdfb7, 0xdfdb, 0x003f,
+    0x003f, 0x003f, 0xb8a6, 0x003f, 0x003f, 0x003f, 0xdfb3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdfaf, 0xdfd5, 0xdfae,
+    0xbb60, 0xe3d3, 0x003f, 0x003f, 0xe3c2, 0x003f, 0x003f, 0xe3ac,
+    0xe3ca, 0xbb58, 0xe3bb, 0xe3c5, 0xbb5b, 0xe3be, 0xbb59, 0xe3af,
+    0xe3cd, 0xe3ae, 0xe3c1, 0x003f, 0xe3ad, 0x003f, 0x003f, 0xe3bf,
+    0xe3c8, 0xe3c6, 0xe3ba, 0xe3b5, 0xe3b3, 0x003f, 0xe3b4, 0xe3c7,
+    0xe3d2, 0xe3bc, 0xbb5a, 0x003f, 0xe3b7, 0x003f, 0xe3cb, 0x003f,
+    0xbb5d, 0xe3b6, 0xe3b0, 0xe3c0, 0xbb61, 0x003f, 0x003f, 0xbb55,
+    0xbb5e, 0xe3b8, 0xe3b2, 0x003f, 0xbb57, 0xdfd4, 0xbb56, 0xe3c3,
+    0x003f, 0xbb54, 0xbb63, 0xbb5c, 0xe3c4, 0xe3b9, 0xe3b1, 0xe3cc,
+    0xe3bd, 0xbb62, 0xe3d0, 0xbb5f, 0xe3cf, 0x003f, 0xe3c9, 0xe3ce,
+    0x003f, 0x003f, 0x003f, 0xe3d1, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe773,
+    0xe774, 0xe767, 0xe766, 0xe762, 0xbdb4, 0x003f, 0xbdac, 0xe776,
+    0xe775, 0xdfa9, 0xe75f, 0xe763, 0xe75d, 0x003f, 0xe770, 0xe761,
+    0x003f, 0xe777, 0xe75a, 0xe758, 0xe764, 0xe76e, 0xe769, 0xbdb6,
+    /* 0x8500 .. 0x85ff */
+    0xe74f, 0x003f, 0xe76d, 0x003f, 0x003f, 0x003f, 0xbdb7, 0xdfbd,
+    0xe75b, 0xe752, 0xe755, 0xe77b, 0xe75c, 0xe753, 0xe751, 0xe74e,
+    0x003f, 0xbdb0, 0xe765, 0xbdaf, 0xbdb3, 0xe760, 0xe768, 0xbda9,
+    0xe778, 0xe77c, 0xbdab, 0x003f, 0xe757, 0xe76b, 0xe76f, 0xe754,
+    0xe779, 0xbdb2, 0x003f, 0xbdb1, 0xe74c, 0xbdb5, 0xe772, 0xe756,
+    0xe76a, 0xe750, 0xe75e, 0xe759, 0xbdad, 0xbdae, 0xe76c, 0xe77d,
+    0xe77a, 0xe771, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xe74d, 0x003f, 0xbdaa, 0xeb49, 0x003f,
+    0xeb40, 0xeb43, 0x003f, 0xbfbb, 0xeb45, 0xeaf9, 0xeb41, 0xeb47,
+    0xbfb8, 0xbfbc, 0xbfb6, 0x003f, 0x003f, 0xeafb, 0xeb4c, 0x003f,
+    0x003f, 0xeb46, 0x003f, 0xeafc, 0xeb55, 0xeb4f, 0xeaf8, 0xee46,
+    0xeafe, 0xbfb7, 0x003f, 0xeb4a, 0x003f, 0xeb54, 0xbfbf, 0x003f,
+    0xeb51, 0xeafd, 0xeb44, 0xeb48, 0xeb42, 0xeb56, 0xeb53, 0xeb50,
+    0xbfb9, 0xbfba, 0xbfbe, 0xeafa, 0xeb57, 0xbfbd, 0xeb4d, 0x003f,
+    0x003f, 0xeb4b, 0x003f, 0x003f, 0x003f, 0xeb4e, 0xee53, 0xee40,
+    0xee45, 0xee52, 0xee44, 0xedfb, 0xee41, 0x003f, 0xc1a2, 0x003f,
+    0xedf4, 0xee4d, 0xee4f, 0xedf3, 0xc1a1, 0xee51, 0xee49, 0xc1a8,
+    0xee50, 0xee42, 0xc1aa, 0xedf9, 0xeb52, 0xee4a, 0xee47, 0xedf5,
+    0xee55, 0xc1a4, 0x003f, 0x003f, 0xc1a5, 0xedf7, 0xee48, 0x003f,
+    0xee54, 0xee4b, 0xedfd, 0xc1a7, 0xc1a3, 0xee4c, 0xedfe, 0xee56,
+    0xedf8, 0xee43, 0xee4e, 0xedfa, 0xedfc, 0x003f, 0xc2cb, 0xedf6,
+    0xc1a9, 0xc2c4, 0xc17e, 0x003f, 0x003f, 0x003f, 0x003f, 0xc1a6,
+    0xc2c8, 0xf0b3, 0x003f, 0xf0a9, 0xf0a4, 0xf0aa, 0xf0b4, 0xf0b8,
+    0xf0b7, 0xc2ca, 0xc2c9, 0x003f, 0x003f, 0xf0ab, 0xf0b9, 0xf0ae,
+    0xf0a6, 0x003f, 0xf0a8, 0xf0a7, 0xf0ad, 0xf0b2, 0xf0a5, 0xf0ac,
+    0xf0b1, 0xc2c7, 0x003f, 0xf0af, 0x003f, 0xc2c5, 0xf0b0, 0xc2c3,
+    0xc2c6, 0xf2d5, 0xf0b5, 0x003f, 0x003f, 0xc3c2, 0x003f, 0xf2cd,
+    0xf2d1, 0xf2c9, 0xf2cc, 0x003f, 0xf2d4, 0xc3c0, 0xf2d9, 0xf2d2,
+    0x003f, 0xf2ca, 0xf2da, 0xf2d3, 0xc3c3, 0xc3c4, 0xf2d7, 0x003f,
+    0xf2cb, 0xc3bf, 0xc3c1, 0xf2c6, 0xf2ce, 0xf2c8, 0x003f, 0xf2d8,
+    0xf2d6, 0xf2c7, 0xf2cf, 0x003f, 0x003f, 0x003f, 0xf4be, 0xc3c5,
+    0xf2d0, 0xc4a7, 0xc4a9, 0xc4a6, 0x003f, 0xf4c3, 0xf4bb, 0xf4b9,
+    /* 0x8600 .. 0x86ff */
+    0xf4bd, 0xf4ba, 0x003f, 0x003f, 0xf4bf, 0xf4c1, 0xc4aa, 0xc4ac,
+    0x003f, 0xf4c0, 0xc4ad, 0xc4ab, 0xf4c2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc4a8, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc4f4,
+    0xf5f1, 0xf5f7, 0xc4f6, 0xf4bc, 0xf5f6, 0x003f, 0xf5fd, 0xf5f4,
+    0xf5fb, 0xf5fa, 0xf4b8, 0xf5f5, 0xf0b6, 0xf5fe, 0xf5f3, 0xf5f8,
+    0x003f, 0xf5fc, 0xf5f2, 0x003f, 0xf74a, 0xc4f5, 0xf5f9, 0x003f,
+    0x003f, 0xf7f4, 0xf74b, 0xf749, 0xf747, 0xf748, 0xf74c, 0x003f,
+    0xc5d9, 0xf7f2, 0xf7f0, 0xf7f5, 0xf7f3, 0x003f, 0xf7f6, 0xc5da,
+    0xf7f1, 0x003f, 0x003f, 0xf8bc, 0x003f, 0x003f, 0xf945, 0xf946,
+    0xf947, 0x003f, 0x003f, 0xf9c7, 0xf9bd, 0xca4f, 0xaaea, 0x003f,
+    0xad68, 0x003f, 0xd3b8, 0xd3b7, 0xb040, 0xb342, 0xd77c, 0x003f,
+    0x003f, 0xd77b, 0x003f, 0xb5ea, 0xb8b8, 0x003f, 0xb8b7, 0xb8b9,
+    0x003f, 0xe3d4, 0xe77e, 0xeb58, 0xeb5a, 0xeb59, 0x003f, 0xc1ab,
+    0xee57, 0xf0ba, 0xf9a5, 0xa6e4, 0x003f, 0xcdc9, 0xcdca, 0xcdc8,
+    0xcdc7, 0xaaeb, 0x003f, 0xd0a9, 0xd0a7, 0x003f, 0x003f, 0xd0a6,
+    0x003f, 0xad69, 0xad6b, 0xad6a, 0xd0a8, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xd3c4, 0xd3c1, 0xd3bf,
+    0x003f, 0x003f, 0xb041, 0xd3c2, 0xb046, 0xd3bc, 0xd3cb, 0x003f,
+    0xd3cd, 0xd3bd, 0x003f, 0xb043, 0xd3ce, 0xd3c9, 0xd3bb, 0xd3c0,
+    0xd3ca, 0xd3c6, 0xd3c3, 0x003f, 0xb048, 0xd3cc, 0xd3be, 0x003f,
+    0x003f, 0xd3c7, 0xd3b9, 0xb047, 0xb044, 0xd3c5, 0x003f, 0xd3c8,
+    0xd3ba, 0xb045, 0xb042, 0x003f, 0x003f, 0x003f, 0x003f, 0xb34c,
+    0xd7a5, 0xb34b, 0x003f, 0xd7a8, 0xd7ab, 0xb348, 0xb346, 0xd77e,
+    0xd7a9, 0xd7a7, 0xd7a4, 0xd7ac, 0xd7ad, 0xd7af, 0xd7b0, 0xd77d,
+    0xb345, 0xd7a2, 0xd7a1, 0xd7ae, 0xb347, 0xd7a3, 0xb349, 0xb344,
+    0xd7a6, 0xb34d, 0x003f, 0xb34a, 0xd7aa, 0x003f, 0x003f, 0x003f,
+    0xb5f1, 0xdbbf, 0x003f, 0xdbb4, 0xb5ee, 0x003f, 0xdfe7, 0xdbbd,
+    0xdbb1, 0xb5ec, 0xdbb6, 0xb5ef, 0xdbba, 0xdbb8, 0xb5f2, 0xb5eb,
+    0x003f, 0x003f, 0xdbb2, 0xdbb5, 0xb5f0, 0x003f, 0xdbb3, 0x003f,
+    0xdbbe, 0xdbbc, 0xdbb7, 0xdbb9, 0xdbbb, 0xb5ed, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdfe8, 0xdfee, 0xdfe4,
+    0xdfea, 0xb8ba, 0xdfe6, 0xb8c0, 0x003f, 0x003f, 0xb8bf, 0x003f,
+    /* 0x8700 .. 0x87ff */
+    0xb8be, 0xdfed, 0xb8c1, 0xb8c2, 0xdfe3, 0xdff0, 0xb8c3, 0xb8bd,
+    0xb8bc, 0xdfec, 0xb8c4, 0xdfe2, 0xdfe5, 0xdfef, 0xdfeb, 0x003f,
+    0x003f, 0xe3f4, 0xe3e9, 0xb8bb, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xbb6a, 0xe3dd, 0xe3f2, 0xe3de, 0xbb65, 0x003f, 0xe3db, 0x003f,
+    0xe3e4, 0xe3dc, 0xbb67, 0xe3d6, 0xe3f1, 0xbb68, 0xe3ee, 0xe3ef,
+    0xe3d7, 0xbb6d, 0xe3e6, 0x003f, 0xe3e0, 0xe3e7, 0xe3da, 0x003f,
+    0xe3f3, 0xe3eb, 0xe3e5, 0xe3d5, 0xbb69, 0xe3ec, 0x003f, 0xbb6c,
+    0xe3f0, 0x003f, 0xe3ea, 0xbb66, 0xe3e8, 0x003f, 0xe3e2, 0xbb64,
+    0xe3d9, 0xe3e1, 0xe3ed, 0xe3df, 0x003f, 0x003f, 0xe3e3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xbdc1, 0xdfe9, 0xe7b2, 0xe7bb,
+    0xe7b1, 0xe7ad, 0xe7aa, 0xbdc2, 0xe7a8, 0xbb6b, 0xe7a1, 0xbdc0,
+    0xe7a7, 0xbdbf, 0xe7ac, 0xe7a9, 0xe7b9, 0xe7b4, 0xe7ae, 0xe7b3,
+    0xbdbb, 0xe7ab, 0xe7be, 0xe7a2, 0xe7a3, 0xe7ba, 0xbdbc, 0xe7bf,
+    0xbdbe, 0xe7c0, 0xe7b0, 0xe3d8, 0xe7b6, 0xe7af, 0xe7b8, 0xe7b5,
+    0x003f, 0x003f, 0x003f, 0xe7a6, 0xbdb9, 0xe7bd, 0xbdba, 0xe7a4,
+    0xbdbd, 0xeb64, 0xe7b7, 0xe7bc, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeb61, 0xbdb8, 0xbfc0, 0xeb6b, 0xeb67, 0x003f, 0xeb65,
+    0xeb60, 0xeb6f, 0x003f, 0x003f, 0x003f, 0xbfc4, 0x003f, 0xeb5c,
+    0xeb68, 0xeb69, 0xeb5f, 0xeb5e, 0xeb6c, 0x003f, 0xeb62, 0xeb5d,
+    0xeb63, 0x003f, 0xeb6e, 0xeb5b, 0xeb6d, 0xeb6a, 0xbfc2, 0xbfc1,
+    0x003f, 0x003f, 0xbfc3, 0xeb66, 0xf0cb, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xee59, 0xc1b1, 0xee5d, 0xee5a, 0xee61, 0xee67,
+    0xee5c, 0x003f, 0xee70, 0xc1ae, 0xee6a, 0xee5f, 0xee6b, 0xee66,
+    0xee6d, 0xee5e, 0xc1b3, 0xc1b2, 0xee60, 0xee6e, 0xee58, 0xee6c,
+    0xc1ac, 0x003f, 0xee64, 0xee63, 0xee68, 0xee5b, 0xc1b0, 0x003f,
+    0xc1b4, 0xee62, 0xee69, 0xc1b5, 0xee65, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc1ad, 0xc1af, 0xf0c7, 0xf0c5, 0x003f, 0x003f, 0xf0cc,
+    0xf0c9, 0xf0cd, 0x003f, 0xf0be, 0xf0c6, 0xf0d1, 0xee6f, 0xf0c2,
+    0xc2cf, 0xe7a5, 0xf0bd, 0xf0ca, 0xf0c4, 0xf0c1, 0xf0bc, 0xf0bb,
+    0xf0d0, 0x003f, 0xf0c0, 0xf0bf, 0xc2cd, 0xf0c8, 0x003f, 0xc2cc,
+    0x003f, 0x003f, 0xc2ce, 0xf0c3, 0xf0cf, 0x003f, 0xf2de, 0xf2df,
+    0x003f, 0xc3c9, 0xf2dc, 0xc3c6, 0xf2e4, 0x003f, 0xc3ca, 0xf2e6,
+    /* 0x8800 .. 0x88ff */
+    0xf2db, 0xf0ce, 0xf2e8, 0xf2dd, 0x003f, 0xc3c7, 0xf2e3, 0x003f,
+    0xf2e5, 0xf2e0, 0xf2e7, 0xf2e2, 0xf2e1, 0xc3c8, 0x003f, 0x003f,
+    0xf4c5, 0xf4c6, 0x003f, 0xf4c8, 0xc4ae, 0xc4af, 0xf4c9, 0xf4c7,
+    0x003f, 0xf4c4, 0x003f, 0xf642, 0xf645, 0xf641, 0x003f, 0xc4fa,
+    0xf643, 0xc4f9, 0xc4f8, 0xc4f7, 0xf644, 0xf751, 0xf74f, 0x003f,
+    0xf74e, 0xf640, 0xf750, 0xf646, 0xf74d, 0x003f, 0xf7f9, 0xf7d7,
+    0xf7f7, 0xc5db, 0xf7f8, 0xf7fa, 0x003f, 0xf8bf, 0xc5fa, 0xf8be,
+    0xf8bd, 0xc5fb, 0x003f, 0xc65a, 0xf96e, 0xf9a7, 0xf9a6, 0xf9a8,
+    0xa6e5, 0xd0aa, 0x003f, 0xd3cf, 0xd3d0, 0x003f, 0x003f, 0x003f,
+    0xdbc0, 0x003f, 0xf647, 0xf8c0, 0xa6e6, 0xad6c, 0xd0ab, 0x003f,
+    0x003f, 0x003f, 0xd7b1, 0xb34e, 0x003f, 0xdbc2, 0xdbc1, 0xb5f3,
+    0x003f, 0xb8c5, 0xe7c1, 0xbdc3, 0x003f, 0xbdc4, 0x003f, 0x003f,
+    0x003f, 0xbfc5, 0xc5fc, 0xa6e7, 0x003f, 0x003f, 0x003f, 0xd0ac,
+    0xaaed, 0xd0ae, 0xd0ad, 0xad6d, 0x003f, 0xd3d1, 0x003f, 0xd3d8,
+    0xb049, 0xd3d6, 0xd3d4, 0x003f, 0xd3db, 0xd3d2, 0xd3d3, 0xb04a,
+    0x003f, 0xb04e, 0x003f, 0x003f, 0xd3dc, 0xb04d, 0xd3da, 0xd3d7,
+    0xd3d5, 0xb04b, 0xb04c, 0xd3d9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xb350, 0xd7b2, 0x003f, 0xb355, 0xd7c2, 0xb354, 0xd7c4, 0x003f,
+    0x003f, 0xd7b8, 0xb352, 0xd7c3, 0x003f, 0xd7b3, 0xb353, 0xd7bf,
+    0xd7bb, 0xd7bd, 0xd7b7, 0xd7be, 0x003f, 0x003f, 0xb34f, 0xd7ba,
+    0x003f, 0xd7b9, 0xd7b5, 0x003f, 0xd7c0, 0x003f, 0x003f, 0xd7bc,
+    0xd7b4, 0x003f, 0xd7b6, 0xb351, 0xd7c1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xb5f6, 0xdbcd, 0x003f, 0x003f, 0x003f, 0xdbc9, 0xdbcb,
+    0xdbc6, 0xdbc5, 0xdbc3, 0x003f, 0xdbca, 0xdbcc, 0xdbc8, 0x003f,
+    0xdbc7, 0xb5f4, 0xb5f5, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xdbcf, 0xb8cd, 0xdff2, 0xdff8, 0xdff3, 0xdff4, 0xf9d8,
+    0xdff9, 0x003f, 0xb8cf, 0x003f, 0xb8c7, 0xb8ce, 0xdff1, 0xdbc4,
+    0xb8ca, 0xb8c8, 0xdff7, 0xdff6, 0xb8c9, 0xb8cb, 0xdff5, 0xb8c6,
+    0x003f, 0xb8cc, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe3f6,
+    0xbb74, 0x003f, 0x003f, 0xe442, 0xe441, 0x003f, 0xe3fb, 0xbb76,
+    0xe440, 0xe3f7, 0xe3f8, 0xbb6e, 0xbb70, 0x003f, 0xe3fd, 0xe3f5,
+    0xbb72, 0xbb71, 0xe3f9, 0xe3fe, 0xe3fc, 0xbb73, 0xe3fa, 0x003f,
+    /* 0x8900 .. 0x89ff */
+    0x003f, 0xdbce, 0xbb6f, 0x003f, 0x003f, 0xe7c2, 0xe7c9, 0xbdc6,
+    0x003f, 0xe7cd, 0xbdca, 0xe7c5, 0xe7c3, 0x003f, 0xe7cc, 0x003f,
+    0xbdc5, 0xe7cb, 0xbdc7, 0xbdc8, 0xe7c4, 0xbdc9, 0xe7ca, 0xe7c6,
+    0xe7c7, 0xe7c8, 0xbb75, 0x003f, 0x003f, 0x003f, 0xeb70, 0xeb7c,
+    0x003f, 0xbfca, 0xeb77, 0xeb79, 0x003f, 0xbfc8, 0xeb71, 0xeb75,
+    0x003f, 0xeb78, 0xbfc6, 0xbfc9, 0xeb7b, 0xeb73, 0xeb74, 0xeb7a,
+    0xeb72, 0xeb76, 0xbfc7, 0xee72, 0x003f, 0xee71, 0xc1b7, 0xee77,
+    0xc1b9, 0x003f, 0x003f, 0xc1b6, 0xee73, 0xc1ba, 0xee74, 0x003f,
+    0x003f, 0xee75, 0xee78, 0x003f, 0xc1b8, 0x003f, 0xf0d6, 0x003f,
+    0x003f, 0xf0d9, 0x003f, 0xf0d3, 0xf0d5, 0x003f, 0x003f, 0xf0d4,
+    0xf0d7, 0xf0d8, 0xee76, 0xf0d2, 0x003f, 0x003f, 0xc3cd, 0xf2ec,
+    0xf2ef, 0xf2f1, 0xf2ea, 0xf2eb, 0xf2ee, 0xf2f0, 0xc3ce, 0xc3cc,
+    0xc3cb, 0xf2ed, 0xf2e9, 0xf4ca, 0xc4b0, 0x003f, 0xf4cb, 0x003f,
+    0x003f, 0xf649, 0xc4fb, 0xf64b, 0xc4fc, 0xf648, 0xf64a, 0xc5a8,
+    0x003f, 0xf752, 0xc5a7, 0xf7fd, 0xf7fc, 0x003f, 0xf7fb, 0x003f,
+    0x003f, 0xf948, 0xf949, 0xf94b, 0xf94a, 0x003f, 0xca50, 0xa6e8,
+    0x003f, 0xad6e, 0xd7c5, 0xb5f7, 0x003f, 0xdffa, 0xc2d0, 0x003f,
+    0xf2f2, 0x003f, 0x003f, 0xa8a3, 0x003f, 0x003f, 0x003f, 0xb357,
+    0x003f, 0x003f, 0x003f, 0xb356, 0x003f, 0xdbd0, 0xb5f8, 0xdbd2,
+    0xdbd1, 0x003f, 0x003f, 0xdffb, 0xb8d0, 0xe443, 0xe446, 0xe445,
+    0x003f, 0xe444, 0xe7ce, 0xe7d0, 0xe7cf, 0x003f, 0xbfcc, 0x003f,
+    0x003f, 0x003f, 0xbfcb, 0x003f, 0xc1bb, 0xee79, 0xee7b, 0xee7a,
+    0x003f, 0x003f, 0xc2d1, 0x003f, 0x003f, 0x003f, 0xf2f4, 0xf2f3,
+    0x003f, 0xf4cc, 0xc4b1, 0x003f, 0x003f, 0xc4fd, 0xf754, 0xf753,
+    0xc65b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xa8a4, 0xd0af, 0xad6f, 0xd7c8, 0xd7c6, 0x003f,
+    0x003f, 0xd7c7, 0xdbd4, 0xdbd5, 0xe043, 0xdbd3, 0x003f, 0xdffc,
+    0xe041, 0xe040, 0xe042, 0xb8d1, 0xdffe, 0xdffd, 0xe044, 0x003f,
+    0xe449, 0xe447, 0x003f, 0xe448, 0xe7d3, 0xe7d1, 0x003f, 0x003f,
+    0xe7d2, 0xeb7d, 0xee7c, 0xee7d, 0xc2d2, 0x003f, 0xf2f5, 0xf4cd,
+    0xc4b2, 0x003f, 0xf64c, 0xf755, 0xc5a9, 0x003f, 0xf7fe, 0xf94c,
+    /* 0x8a00 .. 0x8aff */
+    0xa8a5, 0x003f, 0xad71, 0xad72, 0xd0b0, 0x003f, 0x003f, 0xd0b1,
+    0xad70, 0x003f, 0xb054, 0x003f, 0xb052, 0x003f, 0xb051, 0xb058,
+    0xb050, 0xb059, 0xd3dd, 0xb056, 0x003f, 0xb053, 0xb057, 0xb055,
+    0xb04f, 0x003f, 0x003f, 0xb35f, 0x003f, 0xb359, 0xd7cc, 0xb35e,
+    0x003f, 0x003f, 0xb360, 0xb35a, 0x003f, 0xb35b, 0x003f, 0xd7ca,
+    0x003f, 0x003f, 0xb358, 0x003f, 0xd7cb, 0xb35d, 0x003f, 0x003f,
+    0xd7c9, 0xb35c, 0x003f, 0x003f, 0xb644, 0x003f, 0xb646, 0x003f,
+    0x003f, 0xdbd8, 0xb645, 0xb5f9, 0xb5fd, 0x003f, 0xb8e4, 0xe049,
+    0xdbda, 0xb5fe, 0x003f, 0x003f, 0xdbdd, 0xdbde, 0xb643, 0x003f,
+    0xdbe0, 0x003f, 0xdbe2, 0x003f, 0xdbe3, 0xdbd7, 0xdbd6, 0xdbe4,
+    0xb642, 0xdbe1, 0xdbdf, 0x003f, 0xb640, 0xb5fb, 0xb647, 0xdbdb,
+    0xdbdc, 0xdbd9, 0x003f, 0xb641, 0x003f, 0x003f, 0xb5fc, 0x003f,
+    0xb5fa, 0xe048, 0xb8df, 0xb8da, 0x003f, 0x003f, 0xb8d5, 0x003f,
+    0xb8e5, 0xb8d6, 0x003f, 0xb8d2, 0xb8e1, 0xb8de, 0xb8e0, 0x003f,
+    0xb8d7, 0xb8dc, 0xb8d3, 0xb8d4, 0xe050, 0xe04d, 0xe045, 0xe04a,
+    0x003f, 0xb8e2, 0xe051, 0xb8e3, 0xb8d9, 0x003f, 0x003f, 0xe047,
+    0x003f, 0xe04f, 0xe04b, 0xe04e, 0xe04c, 0xb8dd, 0xe046, 0xb8d8,
+    0x003f, 0x003f, 0x003f, 0xe44c, 0xbb78, 0xbb7b, 0x003f, 0xe44e,
+    0x003f, 0xbba5, 0xe44d, 0xbb7d, 0x003f, 0xbdcf, 0xe44f, 0x003f,
+    0xbba4, 0xe44b, 0xbba6, 0x003f, 0x003f, 0x003f, 0xbb79, 0x003f,
+    0xb8db, 0xbb7c, 0x003f, 0xbb7a, 0xbb7e, 0xbba2, 0xbb77, 0xbba7,
+    0xbba3, 0x003f, 0xbba1, 0xe44a, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xbdd6, 0x003f, 0xbdd2, 0x003f, 0x003f, 0x003f, 0xbdd9, 0x003f,
+    0xe7d6, 0xbdda, 0xe7e2, 0xe7db, 0xbdcb, 0xe7e3, 0xe7dd, 0xbdd5,
+    0xe7de, 0x003f, 0xbdd4, 0xe7e1, 0xbdce, 0xe7df, 0xe7d5, 0xbdcd,
+    0xebaa, 0xbdd3, 0x003f, 0xbdd0, 0x003f, 0xbdd8, 0x003f, 0xe7d4,
+    0x003f, 0xe7d8, 0xbdcc, 0xe7d7, 0xe7d9, 0xe7da, 0xbdd7, 0xe7dc,
+    0xe7e0, 0xe7e4, 0x003f, 0xbddb, 0xbfd2, 0xeba5, 0xebab, 0xeba8,
+    0xeb7e, 0xebac, 0xeba1, 0x003f, 0xeba7, 0x003f, 0xbfcd, 0xbfd3,
+    0xebad, 0x003f, 0x003f, 0xbfcf, 0x003f, 0xbfd9, 0xbfd4, 0xebaf,
+    0xeba9, 0xbfd0, 0xeba2, 0xbfda, 0xeba3, 0xeba4, 0xbfdb, 0xbfd8,
+    0xbdd1, 0x003f, 0xbfce, 0xebb0, 0xbfdc, 0x003f, 0xbfd5, 0xebae,
+    /* 0x8b00 .. 0x8bff */
+    0xbfd1, 0xbfd6, 0xbfd7, 0x003f, 0xc1c3, 0xeea4, 0xeead, 0xeeaa,
+    0xeeac, 0x003f, 0xc1c0, 0xeea5, 0x003f, 0xeeab, 0xc1bc, 0xeea7,
+    0xc1c4, 0xeea3, 0xeea8, 0xeeaf, 0xeba6, 0xeea9, 0xeea2, 0xc1bd,
+    0xeea1, 0xc1be, 0xeeb0, 0xc1bf, 0xeeae, 0xc1c2, 0xee7e, 0x003f,
+    0xc1c1, 0x003f, 0xeea6, 0xf0dc, 0xf0ea, 0xf0e5, 0xf0e7, 0xf0db,
+    0xc2d3, 0x003f, 0xf0da, 0xc2d6, 0xc2d5, 0x003f, 0xf0e9, 0xf0e1,
+    0xf0de, 0xf0e4, 0x003f, 0xf0dd, 0x003f, 0xf0df, 0xf0e8, 0xf0e6,
+    0x003f, 0xc2d4, 0xf0ed, 0xf0eb, 0xf0e2, 0xf0ec, 0xf0e3, 0x003f,
+    0xf2f9, 0xc3cf, 0xf341, 0x003f, 0x003f, 0xf64f, 0xc3d6, 0xf0e0,
+    0xf2f7, 0xc3d2, 0xf2f8, 0xf2fd, 0x003f, 0x003f, 0xc3d4, 0xc3d5,
+    0xf2f6, 0xf340, 0xf342, 0xf2fa, 0xf2fc, 0xf2fe, 0xf2fb, 0xf343,
+    0xc3d1, 0xc3d7, 0xc3d3, 0x003f, 0xc3d0, 0xf4d0, 0x003f, 0xc4b7,
+    0xf4ce, 0x003f, 0x003f, 0xf4d2, 0x003f, 0xf4d3, 0xc4b5, 0xf4d4,
+    0xf4d1, 0x003f, 0xf4cf, 0xc4b8, 0xc4b4, 0xf4d5, 0x003f, 0xc4b6,
+    0xc4b3, 0x003f, 0x003f, 0x003f, 0xc4fe, 0x003f, 0x003f, 0xc540,
+    0xf64e, 0xf64d, 0xf650, 0xf651, 0x003f, 0xc541, 0xf756, 0xf75b,
+    0xc5aa, 0x003f, 0xf758, 0x003f, 0xf757, 0xf75a, 0xf759, 0x003f,
+    0xf843, 0x003f, 0xc5dc, 0xf842, 0xf840, 0x003f, 0xf841, 0x003f,
+    0x003f, 0x003f, 0xc5fe, 0xc5fd, 0xf8c1, 0xf8c2, 0xc640, 0x003f,
+    0xf94d, 0xf94e, 0xc667, 0x003f, 0xc66d, 0x003f, 0xf9a9, 0xf9c8,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x8c00 .. 0x8cff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xa8a6,
+    0x003f, 0xd7cd, 0x003f, 0xd7ce, 0xe052, 0xe450, 0xe7e5, 0xc1c6,
+    0x003f, 0xc1c5, 0xf0ee, 0xf344, 0x003f, 0xf844, 0xa8a7, 0xd3de,
+    0xb05a, 0xb361, 0xe054, 0xe053, 0xbddc, 0xe7e6, 0xbddd, 0xeeb1,
+    0xc2d7, 0x003f, 0x003f, 0x003f, 0xc676, 0xa8a8, 0xcdcb, 0xd3df,
+    0x003f, 0x003f, 0xb362, 0x003f, 0xd7cf, 0xd7d0, 0x003f, 0xdbe5,
+    0x003f, 0xb648, 0xb8e6, 0x003f, 0xe056, 0xe055, 0xe057, 0x003f,
+    0xe451, 0xe452, 0xbba8, 0xbfdd, 0xbdde, 0xbfde, 0x003f, 0xeeb5,
+    0xeeb2, 0xeeb4, 0xeeb3, 0xc1c7, 0x003f, 0xf0ef, 0xf346, 0xf345,
+    0xcba4, 0xb05c, 0xb05b, 0xd3e0, 0x003f, 0xd7d1, 0x003f, 0x003f,
+    0xdbe7, 0xdbe6, 0xb649, 0x003f, 0xe059, 0xe05a, 0xe058, 0x003f,
+    0x003f, 0xb8e8, 0xb8e7, 0x003f, 0xbbaa, 0xbba9, 0x003f, 0xe7e7,
+    0xebb3, 0xebb1, 0xebb2, 0xbfdf, 0xeeb7, 0xeeb6, 0x003f, 0xf0f2,
+    0xf0f1, 0xf0f0, 0xf347, 0x003f, 0xf9aa, 0xa8a9, 0xad73, 0x003f,
+    0xad74, 0xb05d, 0xb05e, 0xd3e2, 0xd3e1, 0xd7d2, 0x003f, 0xb368,
+    0xb366, 0xb363, 0xb367, 0xb365, 0xb364, 0x003f, 0x003f, 0xb64a,
+    0xdbea, 0x003f, 0xb8ed, 0xb64c, 0xb651, 0xdbec, 0xb653, 0xb652,
+    0xb655, 0xdbeb, 0xdbe8, 0xb64f, 0xb64b, 0xb64d, 0xdbe9, 0xb654,
+    0xb650, 0xb64e, 0xb8ef, 0xb8ee, 0xb8ec, 0xb8f0, 0x003f, 0xb8ea,
+    0xb8eb, 0x003f, 0xb8e9, 0x003f, 0xe05b, 0x003f, 0x003f, 0xe454,
+    0x003f, 0xbbac, 0xbbad, 0xbbab, 0x003f, 0xe453, 0x003f, 0xe455,
+    0x003f, 0xe7ea, 0xe7ec, 0x003f, 0xbde7, 0xe7ed, 0xbde0, 0xe7e9,
+    0xbddf, 0xbde9, 0xbde5, 0xbde6, 0xbde2, 0xe7e8, 0xbde1, 0xe7ee,
+    0xe7eb, 0x003f, 0xbde8, 0x003f, 0xbde3, 0xbde4, 0xebb5, 0x003f,
+    0xebb7, 0xebb6, 0x003f, 0xebb8, 0xbfe0, 0xebb4, 0x003f, 0x003f,
+    0xc1cb, 0xeeb8, 0xc1c8, 0xc1cc, 0xc1ca, 0xc1c9, 0xf0f3, 0x003f,
+    /* 0x8d00 .. 0x8dff */
+    0xf0f6, 0x003f, 0xf0f5, 0x003f, 0xf0f4, 0xc2d8, 0xf348, 0xf349,
+    0xc3d8, 0xf34a, 0xc3d9, 0x003f, 0x003f, 0xc4ba, 0x003f, 0xc4b9,
+    0xf652, 0x003f, 0x003f, 0xc542, 0xf653, 0xf75c, 0xc5ab, 0xc5ac,
+    0x003f, 0xf845, 0x003f, 0xc642, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xa8aa, 0x003f, 0xb36a, 0xb369,
+    0xe05c, 0xe05d, 0x003f, 0xbbae, 0xebb9, 0xbdea, 0xebba, 0xeeb9,
+    0xa8ab, 0x003f, 0xd0b2, 0xad76, 0xad75, 0x003f, 0xd3e3, 0xb05f,
+    0xd3e4, 0xd7d5, 0x003f, 0xd7d4, 0x003f, 0xd7d3, 0x003f, 0x003f,
+    0xdbee, 0xb658, 0x003f, 0x003f, 0xdbed, 0xb657, 0x003f, 0x003f,
+    0x003f, 0xdbef, 0xb656, 0x003f, 0xe05f, 0xe062, 0xe060, 0xe061,
+    0xe065, 0xe05e, 0xe066, 0xe063, 0xe064, 0xbbb0, 0xe456, 0x003f,
+    0x003f, 0xbbaf, 0x003f, 0xe7f2, 0xe7f0, 0x003f, 0x003f, 0xbdeb,
+    0xe7ef, 0xe7f1, 0x003f, 0xbdec, 0x003f, 0xebbb, 0x003f, 0xebbc,
+    0xc1cd, 0x003f, 0xf34c, 0xf34e, 0xf34b, 0xf34d, 0xf4d6, 0xf654,
+    0x003f, 0x003f, 0xf96f, 0xa8ac, 0xad77, 0xd3e5, 0xd3e7, 0xd3e6,
+    0x003f, 0xd7d8, 0xb36c, 0x003f, 0xd7d6, 0x003f, 0xb36b, 0xd7d9,
+    0x003f, 0xd7da, 0xd7d7, 0x003f, 0x003f, 0xdbfb, 0xb660, 0xdbf3,
+    0xdbf9, 0x003f, 0x003f, 0xb65b, 0xb65e, 0xdbf2, 0xb659, 0xdbf6,
+    0xe06c, 0xb65d, 0x003f, 0xdbf1, 0x003f, 0xdbf7, 0xdbf4, 0xdbfa,
+    0xdbf0, 0xdbf8, 0xb65c, 0xb65f, 0xdbf5, 0xb65a, 0x003f, 0xb8f2,
+    0xe068, 0xb8f1, 0xe06f, 0xe06e, 0xb8f8, 0x003f, 0xb8f9, 0xe070,
+    0xb8f3, 0xe06d, 0xb8f7, 0xe072, 0xe069, 0x003f, 0xe06b, 0xb8f4,
+    0xe067, 0xe06a, 0xe071, 0xb8f5, 0xe073, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb8f6, 0x003f, 0xbbb1, 0xe45b, 0xe461, 0xe459,
+    /* 0x8e00 .. 0x8eff */
+    0xe462, 0x003f, 0xe458, 0xe45d, 0xe463, 0xe460, 0xe45f, 0xe45e,
+    0x003f, 0xe457, 0xe45c, 0x003f, 0x003f, 0xe45a, 0x003f, 0xbdf1,
+    0xbdee, 0xe7fb, 0xe841, 0xe843, 0xe840, 0xe7f8, 0xe7fa, 0xe845,
+    0xe842, 0xe7fc, 0xe846, 0xe7f9, 0xe844, 0xbdef, 0xbdf5, 0xbdf3,
+    0xe7f3, 0xbdf4, 0xbdf0, 0xe7f4, 0xe7f6, 0xe7f5, 0xe7fd, 0xe7fe,
+    0x003f, 0xbdf2, 0x003f, 0xbded, 0x003f, 0x003f, 0xe7f7, 0x003f,
+    0xebc6, 0xbfe2, 0x003f, 0xebbd, 0xbfe3, 0xbfe6, 0xebc2, 0x003f,
+    0xebbf, 0xbfe5, 0x003f, 0x003f, 0xebc3, 0xebc4, 0xebbe, 0xebc7,
+    0xebc0, 0xebc5, 0xbfe4, 0x003f, 0xbfe1, 0xebc1, 0x003f, 0xeebf,
+    0xc1d0, 0xc1ce, 0xc1d1, 0xc1cf, 0xeebe, 0xeebb, 0xeeba, 0x003f,
+    0xeebd, 0x003f, 0x003f, 0xeebc, 0xf145, 0xc2de, 0xf0fb, 0xf0fa,
+    0x003f, 0xc2d9, 0xf141, 0xf140, 0xf0f7, 0xf143, 0xf0fc, 0xc2dd,
+    0xf0f9, 0xf142, 0xf0f8, 0xc2da, 0xc2dc, 0xf0fd, 0xc2db, 0xf0fe,
+    0x003f, 0xf144, 0xf352, 0x003f, 0xc3de, 0xf34f, 0x003f, 0xf353,
+    0x003f, 0x003f, 0xc3db, 0xf351, 0xc3e0, 0x003f, 0xc3dd, 0x003f,
+    0xf350, 0x003f, 0xc3df, 0xf354, 0xc3da, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xc4bc, 0xc4be, 0x003f, 0xf4d9, 0xc4bd, 0xf4d7, 0xc3dc,
+    0xf4d8, 0xc4bb, 0xc543, 0xc545, 0xf656, 0xc544, 0xf655, 0x003f,
+    0xf761, 0xc5ad, 0xf760, 0xc5ae, 0xf75e, 0xf75d, 0xf762, 0xf763,
+    0xf846, 0x003f, 0xf75f, 0x003f, 0x003f, 0xf8c6, 0xf8c3, 0xf8c4,
+    0xf8c5, 0xc65c, 0x003f, 0xf951, 0xf950, 0xf94f, 0xf970, 0x003f,
+    0xf9be, 0xf9ab, 0xc66e, 0xa8ad, 0xb060, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb8fa, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xbdf6, 0x003f, 0x003f, 0xebc8, 0x003f, 0x003f,
+    0xc2df, 0x003f, 0xf355, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xf9ac, 0xa8ae, 0xaaee, 0xad79, 0xad78, 0x003f, 0xb063,
+    0x003f, 0xd3e8, 0xb061, 0xd3e9, 0xb062, 0x003f, 0x003f, 0xd7df,
+    0xd7db, 0x003f, 0x003f, 0xb36d, 0xd7de, 0xd7dd, 0xd7dc, 0xb36e,
+    0xd7e0, 0xd7e1, 0x003f, 0x003f, 0x003f, 0xdc43, 0xdc41, 0xdc45,
+    0xdc46, 0xdc4c, 0x003f, 0xdc48, 0xdc4a, 0x003f, 0xdc42, 0xdbfc,
+    0x003f, 0xdc49, 0x003f, 0x003f, 0xdc4b, 0xdc44, 0xdc47, 0xdbfd,
+    0xb662, 0xdc40, 0xdbfe, 0xb661, 0xb663, 0x003f, 0xb8fd, 0xe075,
+    /* 0x8f00 .. 0x8fff */
+    0xe077, 0xe076, 0xe07b, 0xb8fb, 0x003f, 0xe078, 0xe074, 0xe079,
+    0xe07a, 0xb8fc, 0xb8fe, 0xe07c, 0x003f, 0xe467, 0xe466, 0x003f,
+    0xe464, 0xe465, 0xbbb3, 0xbbb5, 0xbbb2, 0xbbb4, 0xe84d, 0xe84e,
+    0xe849, 0x003f, 0xe84a, 0xbdf8, 0xbdfd, 0xbdf7, 0xbdfe, 0xbdf9,
+    0xe84b, 0x003f, 0x003f, 0xe84c, 0xe848, 0xbe40, 0xbdfb, 0x003f,
+    0x003f, 0xbdfa, 0xbdfc, 0x003f, 0xe847, 0x003f, 0xebca, 0xbfe8,
+    0x003f, 0x003f, 0xebcc, 0xbfea, 0xebcf, 0xebcb, 0xebc9, 0xebce,
+    0xbfe9, 0xebcd, 0x003f, 0xbfe7, 0x003f, 0x003f, 0xc1d3, 0xc1d6,
+    0xeec1, 0x003f, 0xc1d4, 0xeec0, 0xc1d2, 0xc1d5, 0xf146, 0xf147,
+    0xf148, 0xc2e0, 0x003f, 0xf149, 0x003f, 0xc2e1, 0xc3e2, 0xf358,
+    0xf359, 0xf357, 0xf356, 0xf35a, 0xc3e1, 0xf4dd, 0xf4db, 0xf4dc,
+    0xf4de, 0xf4da, 0xf4df, 0xf658, 0x003f, 0xf659, 0xf657, 0xc546,
+    0xf764, 0xc5af, 0xf765, 0xf848, 0xf847, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xa8af, 0xb664, 0x003f, 0x003f, 0xb940,
+    0x003f, 0x003f, 0x003f, 0xbbb6, 0x003f, 0x003f, 0xbfec, 0x003f,
+    0xbfeb, 0x003f, 0x003f, 0x003f, 0x003f, 0xc3e3, 0xc47c, 0xc547,
+    0xa8b0, 0xb064, 0xb941, 0x003f, 0xf35b, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xcba6,
+    0x003f, 0x003f, 0xa8b1, 0x003f, 0xa8b4, 0xa8b3, 0xa8b2, 0x003f,
+    0x003f, 0xcba5, 0x003f, 0xcdcd, 0x003f, 0xcdcf, 0xaaef, 0x003f,
+    0x003f, 0xaaf1, 0xcdcc, 0xcdce, 0xaaf0, 0xcdd1, 0xcdd0, 0xcdd2,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xd0b6, 0xd0b4, 0xad7c, 0xd0b3, 0xada3, 0xad7e, 0xad7b, 0x003f,
+    0xada4, 0x003f, 0xad7d, 0xada2, 0x003f, 0xada1, 0xd0b5, 0x003f,
+    0xad7a, 0x003f, 0x003f, 0x003f, 0xb06a, 0xd3eb, 0xd3f1, 0xb067,
+    0xb06e, 0x003f, 0xb069, 0xd3ee, 0xd3f0, 0xb06c, 0xd3ea, 0xd3ed,
+    /* 0x9000 .. 0x90ff */
+    0xb068, 0xb065, 0xd3ec, 0xb06b, 0xd3ef, 0xb06d, 0xb066, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xd7e3, 0xd7e6, 0xb370, 0x003f, 0xb37a,
+    0xb376, 0xd7e4, 0x003f, 0x003f, 0xb37e, 0xb377, 0xb37c, 0xb372,
+    0x003f, 0xb36f, 0xb371, 0xb37d, 0xd7e5, 0xb375, 0xb378, 0xb374,
+    0xb379, 0xd7e7, 0xb37b, 0xb373, 0xd7e2, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xdc4d, 0xb665, 0xdc4f,
+    0x003f, 0xb667, 0xb669, 0x003f, 0xdc4e, 0xb666, 0xb66a, 0x003f,
+    0xb668, 0x003f, 0x003f, 0x003f, 0xb947, 0xe0a3, 0xb94f, 0xe07e,
+    0x003f, 0xb950, 0xb945, 0x003f, 0xe0a1, 0x003f, 0x003f, 0xb94a,
+    0x003f, 0xe0a2, 0xb943, 0xb942, 0x003f, 0xb94d, 0xb94c, 0xb94b,
+    0xb949, 0xb94e, 0xe07d, 0xb944, 0xb946, 0xb948, 0x003f, 0x003f,
+    0xbbb8, 0xbbbb, 0x003f, 0xbbbf, 0xbbb9, 0xbbbe, 0xbbbc, 0x003f,
+    0xbbb7, 0x003f, 0xbbbd, 0xbbba, 0x003f, 0x003f, 0x003f, 0xe852,
+    0xbe43, 0xbe41, 0x003f, 0xe853, 0x003f, 0xbe44, 0xbe42, 0xe851,
+    0xe850, 0x003f, 0xbff0, 0xe84f, 0xbfee, 0xbfed, 0xebd0, 0xbe45,
+    0xbfef, 0xebd1, 0xbff2, 0xebd2, 0xbff1, 0xc1d8, 0xeec3, 0xc1d7,
+    0xc1dc, 0xc1da, 0xc1db, 0xc2e3, 0xc1d9, 0xeec2, 0xebd3, 0xc2e2,
+    0xc2e4, 0x003f, 0xc3e4, 0xc3e5, 0x003f, 0xf4e0, 0x003f, 0xc5de,
+    0xc5dd, 0xa8b6, 0x003f, 0x003f, 0xca55, 0xb06f, 0x003f, 0xca52,
+    0xca53, 0xca51, 0x003f, 0xca54, 0x003f, 0x003f, 0xcbaa, 0xcba7,
+    0xcbac, 0xcba8, 0xa8b7, 0xa8ba, 0x003f, 0xcba9, 0xa8b9, 0xcbab,
+    0x003f, 0x003f, 0xa8b8, 0x003f, 0x003f, 0x003f, 0x003f, 0xcdd5,
+    0xcdd7, 0xaaf4, 0xcdd3, 0xcdd6, 0xcdd4, 0xaaf2, 0xaaf5, 0x003f,
+    0xaaf3, 0x003f, 0x003f, 0x003f, 0x003f, 0xd0b8, 0xd0bc, 0xd0b9,
+    0x003f, 0xada7, 0x003f, 0xada8, 0x003f, 0xd0bb, 0x003f, 0xd0bd,
+    0xd0bf, 0x003f, 0xada5, 0xd0be, 0x003f, 0x003f, 0xada6, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xd7ee, 0xd0ba, 0xd3f2, 0xd3fb,
+    0xd3f9, 0xd3f4, 0xd3f5, 0xd3fa, 0xd3fc, 0xb071, 0x003f, 0xd3f7,
+    0xd3f3, 0xb070, 0xb072, 0xd3f6, 0xd3fd, 0xd3f8, 0x003f, 0x003f,
+    0xb3a1, 0xd7f1, 0xd7e9, 0xd7ef, 0xd7f0, 0xb3a2, 0x003f, 0xd7e8,
+    0xd7ea, 0xd0b7, 0xd7ec, 0xd7ed, 0xd7eb, 0xb66c, 0x003f, 0x003f,
+    0x003f, 0xdc56, 0xebd4, 0xdc57, 0xdc54, 0xb3a3, 0xb66e, 0xdc53,
+    /* 0x9100 .. 0x91ff */
+    0xdc59, 0xdc58, 0xb66b, 0xdc5c, 0xdc52, 0xdc5b, 0xdc50, 0xdc5a,
+    0xdc55, 0xb66d, 0x003f, 0xe0aa, 0x003f, 0xe0a5, 0xe0ab, 0xe0a6,
+    0xe0a4, 0xe0a7, 0xb951, 0x003f, 0xe0a9, 0x003f, 0xe0a8, 0xb952,
+    0xbbc1, 0xbbc0, 0xe46e, 0xe471, 0xe469, 0xe46d, 0xbbc2, 0xe46c,
+    0xe46a, 0xe470, 0xe46b, 0xe468, 0xe46f, 0x003f, 0xe859, 0xbe48,
+    0xf14a, 0xe856, 0xe857, 0xe855, 0xdc51, 0xbe47, 0xe85a, 0xe854,
+    0xbe46, 0xbe49, 0xe858, 0xebd5, 0xbff3, 0xebd6, 0xebd7, 0x003f,
+    0xeec4, 0xc1dd, 0xf14b, 0xf14c, 0x003f, 0x003f, 0xf14d, 0xf35d,
+    0xf35c, 0xf4e2, 0x003f, 0xf4e1, 0xf65b, 0xf65c, 0xf65a, 0xf766,
+    0xc5b0, 0xa8bb, 0xadaa, 0xada9, 0xb075, 0xb074, 0xd440, 0xd441,
+    0xd3fe, 0x003f, 0xb073, 0xd7f5, 0x003f, 0xd7f6, 0xd7f2, 0xb3a4,
+    0xd7f3, 0x003f, 0xd7f4, 0x003f, 0x003f, 0x003f, 0x003f, 0xdc5f,
+    0xdc61, 0xdc5d, 0xdc60, 0xb66f, 0xdc5e, 0xb670, 0x003f, 0x003f,
+    0xdd73, 0xb955, 0xb954, 0x003f, 0xb953, 0x003f, 0xe0ac, 0xe0ad,
+    0x003f, 0x003f, 0xe473, 0xe475, 0xbbc6, 0xbbc3, 0x003f, 0xbbc5,
+    0xbbc4, 0xe474, 0xe472, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xe861, 0xe85e, 0xe85f, 0xbe4d, 0xe860, 0xe85b, 0xe85c, 0xbe4a,
+    0x003f, 0xbe4b, 0xe85d, 0xbe4c, 0x003f, 0xebdb, 0x003f, 0xebdc,
+    0xebd9, 0xebda, 0xbff4, 0xebd8, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xeec8, 0xeec5, 0xeec7, 0xc1e0, 0xeecb, 0xc1df, 0xeec9,
+    0xeecc, 0xeeca, 0xeec6, 0xc1de, 0x003f, 0xf14f, 0x003f, 0xf150,
+    0xf14e, 0x003f, 0xf152, 0xc2e5, 0xc2e6, 0xf35f, 0xc3e7, 0xf151,
+    0xf35e, 0xc3e6, 0xf4e5, 0xf4e6, 0xc4bf, 0xf4e4, 0x003f, 0xf4e3,
+    0x003f, 0xf65d, 0xc548, 0x003f, 0xf849, 0xf8c8, 0xf8c7, 0x003f,
+    0xc643, 0xc65d, 0xf8c9, 0xf971, 0x003f, 0xc66f, 0xa8bc, 0xaaf6,
+    0x003f, 0xb956, 0x003f, 0xc4c0, 0xa8bd, 0xadab, 0xb3a5, 0xb671,
+    0xc2e7, 0xaaf7, 0x003f, 0xd0c1, 0xd0c0, 0xd442, 0x003f, 0xb078,
+    0xb076, 0xb07a, 0xd444, 0x003f, 0xb079, 0xb077, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd443, 0xb3a8, 0xd7fc, 0x003f, 0xb3a7, 0xb3a9,
+    0xd842, 0xb3ab, 0xd7fe, 0xd840, 0xd7f7, 0xb3aa, 0xd843, 0x003f,
+    0x003f, 0xd7f9, 0x003f, 0xd7fa, 0xd7f8, 0xb3a6, 0x003f, 0xd841,
+    0xd7fb, 0xd7fd, 0x003f, 0x003f, 0x003f, 0xdc6d, 0x003f, 0xdc6c,
+    /* 0x9200 .. 0x92ff */
+    0xdc6a, 0xdc62, 0xdc71, 0xdc65, 0xdc6f, 0xdc76, 0xdc6e, 0xb679,
+    0x003f, 0xb675, 0xdc63, 0x003f, 0xdc69, 0xb677, 0x003f, 0xdc68,
+    0xb678, 0xb67a, 0xdc6b, 0x003f, 0xb672, 0xb673, 0xdc77, 0xdc75,
+    0x003f, 0xdc74, 0xdc66, 0x003f, 0xdc72, 0x003f, 0xb676, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xb674, 0xdc73, 0xdc64, 0xdc67, 0xdc70,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xe4ba, 0xe0b7, 0x003f,
+    0xe0b0, 0xe0c3, 0xe0cc, 0xe0b3, 0xb961, 0x003f, 0xe0c0, 0xb957,
+    0xb959, 0xb965, 0xe0b1, 0x003f, 0x003f, 0xb95a, 0xb95c, 0xb966,
+    0xb95b, 0x003f, 0x003f, 0x003f, 0x003f, 0xb964, 0xe0b9, 0x003f,
+    0xe0ae, 0xb962, 0xe0b8, 0xb95e, 0xe0ca, 0xb963, 0xe0c8, 0xe0bc,
+    0xe0c6, 0xb960, 0xe0af, 0xe0c9, 0xe0c4, 0x003f, 0xe0cb, 0xb958,
+    0x003f, 0x003f, 0xb967, 0xb95d, 0x003f, 0x003f, 0xe0b5, 0x003f,
+    0xe0bd, 0xe0c1, 0x003f, 0xe0c5, 0xb95f, 0xe0b4, 0xe0b2, 0xe0be,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xe0bb, 0xe0ba, 0x003f, 0xe0bf,
+    0xe0c2, 0x003f, 0xe0c7, 0x003f, 0x003f, 0x003f, 0xe478, 0x003f,
+    0xbbc7, 0xe4a4, 0xe47a, 0xbbcc, 0xbbd0, 0xe4ad, 0xe4b5, 0xe4a6,
+    0xbbc8, 0x003f, 0xe4aa, 0xe0b6, 0x003f, 0xbbc9, 0xe4b1, 0xe4b6,
+    0xe4ae, 0x003f, 0xe4b0, 0xe4b9, 0xe4b2, 0xe47e, 0xe4a9, 0x003f,
+    0x003f, 0xbbd1, 0x003f, 0xbbcd, 0xe47c, 0xe4ab, 0xbbcb, 0xe4a5,
+    0xbbca, 0xe4b3, 0xe4a2, 0xe479, 0xbbce, 0xe4b8, 0x003f, 0x003f,
+    0xe47b, 0xe4af, 0xe4ac, 0xe4a7, 0xe477, 0xe476, 0xe4a1, 0xe4b4,
+    0xbbcf, 0xe4b7, 0xe47d, 0xe4a3, 0xbe52, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xbe5a, 0xbe55, 0xe8a4, 0xe8a1, 0xe867, 0xbe50,
+    0x003f, 0xf9d7, 0x003f, 0xbe4f, 0xbe56, 0x003f, 0x003f, 0x003f,
+    0xe865, 0xbe54, 0xe871, 0xe863, 0xe864, 0xbe4e, 0xe8a3, 0xbe58,
+    0xe874, 0xe879, 0xe873, 0xebee, 0xe86f, 0xe877, 0xe875, 0xe868,
+    0xe862, 0xe87d, 0xbe57, 0xe87e, 0x003f, 0xe878, 0x003f, 0xe86d,
+    0xe86b, 0xe866, 0x003f, 0x003f, 0x003f, 0xe86e, 0xe87b, 0xe86a,
+    0xe87a, 0xe8a2, 0x003f, 0x003f, 0xbe53, 0x003f, 0xe876, 0xe87c,
+    0xe872, 0xe86c, 0xbe51, 0x003f, 0x003f, 0x003f, 0xe4a8, 0xe870,
+    0xbe59, 0xe869, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xebf4,
+    0xbff7, 0xebf3, 0xebf0, 0xec44, 0xbffb, 0x003f, 0xec41, 0xebf8,
+    /* 0x9300 .. 0x93ff */
+    0xec43, 0xebe9, 0xebf6, 0x003f, 0xbffd, 0x003f, 0xebe1, 0x003f,
+    0xebdf, 0xec42, 0x003f, 0xec40, 0xebfe, 0xebed, 0xebec, 0xebe2,
+    0xc040, 0x003f, 0xebe8, 0xebf2, 0xebfd, 0xc043, 0xec45, 0x003f,
+    0xc1e8, 0xc045, 0xbffe, 0xebe6, 0x003f, 0xebef, 0xebde, 0xebe0,
+    0xbff5, 0xc042, 0xbffa, 0xebe7, 0xebf7, 0xebf1, 0xc041, 0xebdd,
+    0xc1e3, 0xebf9, 0xebfc, 0xbffc, 0x003f, 0xebeb, 0xc044, 0xbff9,
+    0x003f, 0x003f, 0x003f, 0xbff8, 0xebf5, 0xebfb, 0xbff6, 0x003f,
+    0xebe4, 0xebfa, 0x003f, 0x003f, 0xebe5, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xebea, 0xeed2,
+    0x003f, 0xeed7, 0xc1e5, 0xc1e7, 0xeedd, 0xc1e1, 0xeeec, 0xeee3,
+    0xeed8, 0xeed9, 0xeee2, 0x003f, 0xc1ee, 0xeee1, 0xeed1, 0xeee0,
+    0xeed4, 0xeeed, 0xc1ed, 0xc1eb, 0xeed5, 0x003f, 0xeee8, 0x003f,
+    0xeeda, 0xeee7, 0x003f, 0xeee9, 0xeed0, 0xc1e6, 0x003f, 0xeeea,
+    0x003f, 0x003f, 0xeede, 0x003f, 0xc1ea, 0xeedb, 0x003f, 0x003f,
+    0xc1ec, 0xeee4, 0x003f, 0x003f, 0x003f, 0xc1e4, 0xeed6, 0xeee5,
+    0x003f, 0xeedf, 0xebe3, 0xeee6, 0xeed3, 0x003f, 0xc1e9, 0x003f,
+    0xeeeb, 0x003f, 0xc1e2, 0xeece, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf160, 0xf159, 0xc2e9, 0x003f, 0xf154, 0xf163, 0xf15b, 0xeedc,
+    0x003f, 0xf165, 0xf155, 0x003f, 0xc2e8, 0xf15f, 0xc2ea, 0xc2f2,
+    0xc2f0, 0xf161, 0xc2f1, 0xf157, 0x003f, 0xf158, 0xf15d, 0xf162,
+    0x003f, 0xeecd, 0xc2eb, 0xf16a, 0xf167, 0xf16b, 0xf15e, 0xf15a,
+    0xf168, 0xf36a, 0xf15c, 0x003f, 0xc2ee, 0x003f, 0xc2ed, 0xeecf,
+    0xc2ef, 0xf164, 0xf166, 0xc2ec, 0xf169, 0xf153, 0x003f, 0xf156,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf373, 0x003f, 0xf363, 0xc3eb, 0xf371, 0x003f, 0x003f, 0xf361,
+    0xc3ec, 0x003f, 0xf36c, 0x003f, 0xf368, 0xc3f1, 0xf372, 0xf362,
+    0xf365, 0xc3e9, 0xf374, 0x003f, 0xf36d, 0xf370, 0xc3ef, 0xc3f4,
+    0xc3f2, 0xf369, 0xf364, 0x003f, 0xc3ed, 0xc3ee, 0xf360, 0xc3ea,
+    0x003f, 0xc3e8, 0xc3f0, 0xf36f, 0xc3f3, 0x003f, 0xf36b, 0xf375,
+    0xc3f5, 0x003f, 0x003f, 0x003f, 0xf367, 0x003f, 0xf36e, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf4f3, 0xf542, 0xf4f5,
+    0xf4fc, 0xf366, 0xf4fa, 0xf4e9, 0xf540, 0xc4c3, 0xf4ed, 0xf4fe,
+    /* 0x9400 .. 0x94ff */
+    0xf4f4, 0x003f, 0x003f, 0xc4c2, 0x003f, 0x003f, 0xf544, 0xf4f6,
+    0x003f, 0xf4fb, 0xf4fd, 0xf4e7, 0xf541, 0xf4f2, 0xf4f7, 0xf4eb,
+    0xf4ef, 0xf543, 0xf4f9, 0xf4e8, 0xf4ec, 0xf4ee, 0xf4f8, 0x003f,
+    0xc4c1, 0xf4f1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf4ea, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf4f0, 0xf661, 0xf666, 0xc54f, 0xf668, 0x003f, 0xc549, 0x003f,
+    0xf664, 0xf66a, 0xc54e, 0xc54a, 0x003f, 0xc54b, 0xf660, 0xf667,
+    0xc54d, 0xf665, 0xc54c, 0xf65f, 0xf663, 0xf662, 0x003f, 0xf65e,
+    0xf669, 0x003f, 0x003f, 0x003f, 0xc5b1, 0xf76d, 0xf770, 0xf76c,
+    0xf76e, 0xf76f, 0xf769, 0xf76a, 0xf767, 0x003f, 0x003f, 0xf76b,
+    0xf768, 0xc5b2, 0xc5b3, 0x003f, 0x003f, 0xf84b, 0x003f, 0xf84d,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf84c, 0xf84e, 0x003f,
+    0xc5e0, 0x003f, 0xf84a, 0xc5df, 0xc5e1, 0x003f, 0x003f, 0x003f,
+    0xf8cb, 0xf8cc, 0xc644, 0xf8ca, 0x003f, 0xf953, 0xf952, 0xf954,
+    0xc65f, 0xf955, 0xc65e, 0xf956, 0xf972, 0xf975, 0xf974, 0xc668,
+    0xf973, 0x003f, 0x003f, 0x003f, 0xc672, 0xc670, 0xc671, 0xc677,
+    0xf9c0, 0xf9c1, 0xf9bf, 0xf9c9, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9500 .. 0x95ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xaaf8,
+    0x003f, 0x003f, 0xd844, 0xdc78, 0xe8a5, 0xf376, 0x003f, 0x003f,
+    0xaaf9, 0x003f, 0xadac, 0xb07b, 0x003f, 0x003f, 0xd845, 0x003f,
+    0xd846, 0xb3ac, 0x003f, 0xb67d, 0xdc7a, 0xdc79, 0xb6a3, 0xb67c,
+    0xdc7b, 0xb67e, 0xb6a2, 0xb6a1, 0xb67b, 0x003f, 0x003f, 0x003f,
+    0xb968, 0x003f, 0x003f, 0xe0d0, 0xe0ce, 0x003f, 0xe0cf, 0xe0cd,
+    0x003f, 0xbbd2, 0x003f, 0xbbd5, 0xbbd7, 0xbbd6, 0x003f, 0x003f,
+    0xbbd3, 0xbbd4, 0x003f, 0xe8a7, 0xe8a6, 0xbe5b, 0xe8a8, 0x003f,
+    0xe8a9, 0xbe5c, 0x003f, 0x003f, 0x003f, 0xec4d, 0xec4b, 0xeef3,
+    0x003f, 0xec49, 0xec4a, 0xc046, 0xec46, 0xec4e, 0xec48, 0xec4c,
+    0xeeef, 0x003f, 0x003f, 0xeef1, 0x003f, 0xeef2, 0xc1f3, 0xeeee,
+    0xc1f2, 0xeef0, 0xc1ef, 0xc1f0, 0xc1f1, 0xec47, 0x003f, 0x003f,
+    0xc2f5, 0xf16e, 0xf16c, 0xf16d, 0xc2f3, 0xc2f6, 0xc2f4, 0x003f,
+    0x003f, 0x003f, 0xf377, 0xf378, 0xc3f6, 0x003f, 0xf545, 0xf547,
+    0xf546, 0xc4c4, 0xc550, 0xf66d, 0xf66c, 0xf66b, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0x9600 .. 0x96ff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xaafa, 0x003f, 0xc9aa, 0x003f,
+    0xca58, 0xa6e9, 0xca56, 0xca59, 0xca57, 0x003f, 0x003f, 0x003f,
+    0xcbae, 0x003f, 0xa8c1, 0x003f, 0xa8c2, 0xcbb0, 0xa8bf, 0xcbaf,
+    0xcbad, 0xa8c0, 0xa8be, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xcdd8, 0xcddb, 0xaafd, 0xcdda, 0xcdd9, 0x003f, 0xaafc,
+    0xaafb, 0x003f, 0xab40, 0xcddc, 0xaafe, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xd0c6, 0xadae, 0xadaf, 0xadb0, 0xd0c7, 0xd0c3,
+    0xadad, 0xd0c4, 0x003f, 0xd0c5, 0xd0c2, 0x003f, 0x003f, 0x003f,
+    0xb0a4, 0x003f, 0x003f, 0xb0a1, 0xd445, 0xb0a2, 0xb0a5, 0xd446,
+    0x003f, 0xb07e, 0xb07c, 0xb07d, 0xb0a3, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xb3ad, 0xd849, 0xb3b5, 0xd848, 0x003f, 0xd84b,
+    0xb3b1, 0xd84a, 0xb6ab, 0xb3af, 0xb3b2, 0xb3ae, 0xb3b3, 0xb3b4,
+    0xb3b0, 0x003f, 0x003f, 0x003f, 0xd847, 0xb6a7, 0xdc7d, 0x003f,
+    0xdca3, 0x003f, 0x003f, 0xdca2, 0xb6ac, 0xb6a8, 0xb6a9, 0xdc7c,
+    0xdc7e, 0xdca1, 0xb6a4, 0xb6a6, 0x003f, 0xb6aa, 0xb6a5, 0x003f,
+    0x003f, 0xe0d3, 0xe0d1, 0xe0d2, 0xb96a, 0xb96b, 0x003f, 0xe0d4,
+    0xb969, 0xbbd8, 0x003f, 0xbbda, 0xbbd9, 0x003f, 0xe4bb, 0x003f,
+    0x003f, 0xe4bc, 0xe8ab, 0x003f, 0xe8aa, 0x003f, 0x003f, 0xc047,
+    0xc048, 0xec4f, 0xc049, 0x003f, 0xeef6, 0x003f, 0xeef4, 0x003f,
+    0xeef5, 0xc1f4, 0x003f, 0xf16f, 0xc3f7, 0x003f, 0x003f, 0x003f,
+    0xc1f5, 0xab41, 0x003f, 0xb0a6, 0xd447, 0x003f, 0x003f, 0xd84c,
+    0xb3b6, 0xb6ad, 0xdca4, 0xdca6, 0xb6af, 0xb6ae, 0xb6b0, 0xb6b1,
+    0xdca5, 0xb96e, 0xb96f, 0xb96d, 0xbbdb, 0xb96c, 0xe0d5, 0x003f,
+    0x003f, 0x003f, 0xbbdc, 0xe8ac, 0xec50, 0xc04a, 0xc1f6, 0xf170,
+    0xf174, 0xc2f9, 0xf171, 0xc2fa, 0xc2f8, 0xf175, 0xc2fb, 0xf173,
+    0x003f, 0xf379, 0xc2f7, 0xc3f8, 0x003f, 0xf8cd, 0x003f, 0x003f,
+    0xab42, 0xb3b8, 0xb3b7, 0x003f, 0x003f, 0x003f, 0x003f, 0xb6b2,
+    0xdca8, 0xdca7, 0xb6b3, 0x003f, 0x003f, 0xe0d9, 0xb973, 0xb970,
+    0xe0d8, 0xb972, 0xe0d6, 0xb971, 0x003f, 0xe0d7, 0x003f, 0xe4bd,
+    /* 0x9700 .. 0x97ff */
+    0xbbdd, 0x003f, 0xe8af, 0x003f, 0xbe5d, 0xe8ad, 0xbe5e, 0xbe5f,
+    0xe8ae, 0xbe60, 0x003f, 0xec51, 0x003f, 0xc04e, 0xc04b, 0xc050,
+    0xec53, 0xc04c, 0xec52, 0xc04f, 0x003f, 0x003f, 0xc04d, 0x003f,
+    0xeef9, 0xeefb, 0x003f, 0x003f, 0xc1f7, 0xeefa, 0xc1f8, 0xeef8,
+    0xeef7, 0x003f, 0xf177, 0xf176, 0xc2fc, 0xf178, 0xf37e, 0xc3fa,
+    0xf37d, 0xf37a, 0xc3f9, 0xf37b, 0xf37c, 0x003f, 0xf548, 0xf549,
+    0xc4c5, 0x003f, 0xc553, 0x003f, 0x003f, 0xf66e, 0x003f, 0x003f,
+    0xc551, 0xc552, 0xf66f, 0x003f, 0x003f, 0xc5b4, 0xc5b5, 0xf771,
+    0x003f, 0x003f, 0xc645, 0xf8cf, 0xc647, 0x003f, 0xf8ce, 0xf8d0,
+    0xc646, 0xf957, 0x003f, 0xf9ad, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xab43, 0x003f, 0x003f, 0x003f, 0xb974, 0x003f,
+    0xe4be, 0x003f, 0xe8b0, 0xc051, 0xc052, 0x003f, 0xab44, 0x003f,
+    0xbe61, 0xc3fb, 0xadb1, 0x003f, 0x003f, 0x003f, 0xc053, 0x003f,
+    0xc5e2, 0xadb2, 0xd84d, 0x003f, 0xdca9, 0x003f, 0xdcab, 0x003f,
+    0xdcaa, 0x003f, 0xe0dd, 0xe0da, 0xb975, 0x003f, 0xb976, 0xe0db,
+    0xe0dc, 0x003f, 0xe4c0, 0xe4c5, 0xbbde, 0xe4bf, 0xe4c1, 0xe4c8,
+    0xe4c3, 0xe4c7, 0xe4c4, 0xe4c2, 0xe4c6, 0xbbdf, 0x003f, 0x003f,
+    0xe8b3, 0x003f, 0xe8b1, 0xbe63, 0x003f, 0xbe62, 0xe8b2, 0xbe64,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xec56, 0x003f, 0x003f, 0xec55,
+    0xc054, 0xec54, 0xeefc, 0x003f, 0xeefe, 0xef41, 0xef40, 0x003f,
+    0xc1f9, 0xeefd, 0xf1a1, 0xc2fd, 0xf17d, 0xf1a2, 0xc2fe, 0x003f,
+    0xf17b, 0x003f, 0xf17e, 0xf17c, 0xf179, 0xc340, 0xf17a, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf3a1, 0x003f, 0x003f, 0xf3a3, 0xf3a2,
+    0x003f, 0xf54a, 0x003f, 0xf54b, 0x003f, 0x003f, 0x003f, 0xf670,
+    0x003f, 0xc5b7, 0x003f, 0xc5b6, 0xf84f, 0xf850, 0xc648, 0xf8d1,
+    0x003f, 0xc669, 0x003f, 0xadb3, 0xb6b4, 0xe4ca, 0xe4c9, 0xe8b5,
+    0xe8b4, 0x003f, 0x003f, 0xc1fa, 0xef43, 0xef42, 0xf1a5, 0xf1a3,
+    0xf1a6, 0xf1a4, 0x003f, 0x003f, 0xc3fc, 0xf3a4, 0xf3a5, 0xf3a6,
+    0x003f, 0xf671, 0x003f, 0xf772, 0x003f, 0xf8d2, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xadb4, 0x003f, 0x003f,
+    0xec57, 0xef44, 0x003f, 0xadb5, 0x003f, 0x003f, 0xbbe0, 0x003f,
+    0xec58, 0xc341, 0xf1a7, 0xc3fd, 0x003f, 0xf54c, 0xf54d, 0xc554,
+    /* 0x9800 .. 0x98ff */
+    0xf851, 0xadb6, 0xb3bb, 0xb3bc, 0xd84e, 0xb6b5, 0xb6b6, 0xdcac,
+    0xb6b7, 0x003f, 0xb97a, 0x003f, 0xb97c, 0xe0df, 0xe0e0, 0xe0de,
+    0xb977, 0xb978, 0xb97b, 0xb979, 0x003f, 0x003f, 0xe4cb, 0xbbe1,
+    0xbbe2, 0x003f, 0x003f, 0xe8bc, 0xbe67, 0xe8b7, 0xe8b6, 0x003f,
+    0xe8bb, 0xbe65, 0x003f, 0x003f, 0xc05b, 0x003f, 0xe8b8, 0xe8bd,
+    0xe8ba, 0xe8b9, 0x003f, 0xbe66, 0x003f, 0xc059, 0x003f, 0xec5a,
+    0xc055, 0x003f, 0xec5b, 0x003f, 0x003f, 0xec59, 0x003f, 0xc058,
+    0xc056, 0xc05a, 0x003f, 0xc057, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xef45, 0x003f, 0xef4a, 0xef46, 0xef49, 0xc1fb, 0x003f,
+    0xedd4, 0xef48, 0xef47, 0x003f, 0xc344, 0xc342, 0xc345, 0xc343,
+    0xf1a8, 0xf1a9, 0xf1aa, 0xc346, 0x003f, 0x003f, 0x003f, 0xf3aa,
+    0xc440, 0xf3a8, 0x003f, 0xc441, 0xf3a7, 0xf3a9, 0xc3fe, 0xf551,
+    0xf54e, 0x003f, 0xf54f, 0xf550, 0xf672, 0xc556, 0x003f, 0xc555,
+    0x003f, 0xf774, 0xf773, 0xc5b8, 0x003f, 0x003f, 0x003f, 0xc5e3,
+    0xc649, 0xc660, 0xf958, 0xf9ae, 0xf9af, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xadb7, 0xdcad, 0x003f, 0x003f, 0xe0e1, 0xe4cc, 0xe4cd, 0xbbe3,
+    0x003f, 0xbbe4, 0xe8be, 0xbe68, 0x003f, 0x003f, 0xc1fc, 0x003f,
+    0xf1ab, 0x003f, 0xc347, 0xf3ad, 0xc442, 0xf3ac, 0xf3ae, 0xf3ab,
+    0xf675, 0xf552, 0xf553, 0x003f, 0xc4c6, 0x003f, 0xf674, 0x003f,
+    0x003f, 0xf673, 0x003f, 0xf775, 0xf9b0, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xadb8, 0x003f, 0x003f, 0x003f, 0xadb9,
+    0x003f, 0x003f, 0xb0a7, 0xd448, 0x003f, 0xd84f, 0x003f, 0xb6b8,
+    0x003f, 0xb6bb, 0xb6b9, 0xdcae, 0x003f, 0xb6bd, 0x003f, 0xb6ba,
+    0x003f, 0x003f, 0xb6bc, 0x003f, 0xb97e, 0x003f, 0xe0e2, 0x003f,
+    0x003f, 0xe0e3, 0xe8c0, 0x003f, 0xb97d, 0xb9a1, 0xb9a2, 0x003f,
+    /* 0x9900 .. 0x99ff */
+    0xe4cf, 0x003f, 0xe4ce, 0xbbe5, 0x003f, 0xbbe6, 0x003f, 0xe4d0,
+    0xe8bf, 0xbbe8, 0xbe69, 0x003f, 0xbbe7, 0x003f, 0x003f, 0x003f,
+    0xc05c, 0xe8c1, 0xbe6b, 0xbe6a, 0xe8c2, 0xe8c5, 0xe8c3, 0xe8c4,
+    0xbe6c, 0x003f, 0xc061, 0xc05f, 0x003f, 0x003f, 0xc05e, 0xec5d,
+    0x003f, 0xc060, 0x003f, 0x003f, 0xec5c, 0xef4b, 0x003f, 0xec5e,
+    0xc05d, 0xec5f, 0xef4e, 0xef4c, 0xef4d, 0xef52, 0xc34b, 0xef51,
+    0xef54, 0xef53, 0xef50, 0xef4f, 0x003f, 0xc1fd, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf1ae, 0x003f, 0xf1ad, 0xc34a, 0xc348, 0xc349,
+    0x003f, 0xf1ac, 0x003f, 0xf3b1, 0x003f, 0xc443, 0x003f, 0xf3b0,
+    0xf3af, 0xc444, 0x003f, 0xf558, 0xf557, 0x003f, 0xf555, 0x003f,
+    0xf554, 0xc4c8, 0xc4c7, 0xf559, 0xf776, 0xc5b9, 0xf677, 0xc557,
+    0xf676, 0xf556, 0x003f, 0xf777, 0xc5e4, 0x003f, 0xc661, 0xf959,
+    0x003f, 0xf9b1, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xadba, 0xd850,
+    0xef55, 0xadbb, 0x003f, 0x003f, 0xe4d2, 0xe4d1, 0xec60, 0x003f,
+    0x003f, 0xef57, 0x003f, 0xef56, 0x003f, 0xc34c, 0xf3b2, 0xf3b3,
+    0xc4c9, 0x003f, 0x003f, 0xf9b2, 0xb0a8, 0xb6bf, 0xb6be, 0xe0e4,
+    0xe0e6, 0xb9a4, 0xe0e5, 0xb9a3, 0xb9a5, 0xe0e7, 0x003f, 0x003f,
+    0x003f, 0xe4d4, 0xe4d6, 0xe4d5, 0x003f, 0xe4d8, 0x003f, 0x003f,
+    0x003f, 0xbbe9, 0xe4d7, 0xe4d3, 0x003f, 0x003f, 0x003f, 0xe4d9,
+    0x003f, 0xe8cc, 0x003f, 0xe8cf, 0xe8d1, 0xe8c7, 0xe8cb, 0xe8c8,
+    0xbe6e, 0xbe71, 0xbe73, 0xe8c9, 0xe8ca, 0xbe72, 0xe8cd, 0xe8d0,
+    0xe8ce, 0xbe74, 0x003f, 0xbe70, 0xe8c6, 0xbe6d, 0x003f, 0xbe6f,
+    0x003f, 0x003f, 0xc063, 0xec66, 0xec64, 0xec63, 0x003f, 0xec69,
+    0x003f, 0xec68, 0xec67, 0x003f, 0xec62, 0xc062, 0xec61, 0x003f,
+    0xec65, 0xc064, 0x003f, 0x003f, 0xef5a, 0x003f, 0xef5e, 0xef5b,
+    0xef5d, 0xef5c, 0xef59, 0xef5f, 0xef62, 0xef60, 0xef61, 0xc240,
+    /* 0x9a00 .. 0x9aff */
+    0x003f, 0xc1fe, 0xef58, 0xef63, 0xf1b3, 0xf1b6, 0xf1b8, 0xf1b7,
+    0x003f, 0xf1b1, 0xf1b5, 0xf1b0, 0x003f, 0xf1b2, 0xc34d, 0xf1af,
+    0x003f, 0xf1b4, 0x003f, 0x003f, 0xf3c0, 0xf3b5, 0xc445, 0x003f,
+    0x003f, 0xc446, 0xf3b4, 0xf3b9, 0xf3bf, 0xf3b7, 0xf3be, 0x003f,
+    0xf3bb, 0x003f, 0xf3ba, 0xf3bd, 0xf3b8, 0xf3b6, 0x003f, 0xf3bc,
+    0x003f, 0xf560, 0xf55e, 0xc4ca, 0xf55d, 0xf563, 0xf561, 0x003f,
+    0xc4cb, 0xf55c, 0xf55a, 0x003f, 0xf55b, 0xc4cd, 0xf55f, 0xc4cc,
+    0xf562, 0xf678, 0xf67e, 0x003f, 0x003f, 0xf679, 0xc55b, 0xf6a1,
+    0xc55a, 0xf67d, 0xf67c, 0xc559, 0xf67b, 0xc558, 0xf67a, 0x003f,
+    0xf77d, 0xf7a1, 0xf77e, 0x003f, 0xf77b, 0xc5bb, 0xf778, 0xf77c,
+    0xf7a3, 0x003f, 0xf7a2, 0xf779, 0xf77a, 0xc5ba, 0xf852, 0xc5e7,
+    0x003f, 0xf853, 0xc5e5, 0xc5e6, 0x003f, 0x003f, 0xf8d3, 0xc64a,
+    0xf976, 0x003f, 0xc66a, 0x003f, 0xf9b3, 0xc66b, 0xf9b4, 0xf9b5,
+    0xf9c3, 0xf9c2, 0xc67a, 0xf9cd, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xb0a9, 0x003f, 0x003f, 0xe0e9, 0x003f, 0xe0e8, 0x003f, 0xbbea,
+    0xbbeb, 0xe4da, 0x003f, 0xe8d2, 0xec6c, 0x003f, 0x003f, 0xbe75,
+    0xc065, 0xec6a, 0x003f, 0xec6d, 0xc066, 0x003f, 0xef64, 0xec6b,
+    0xf1b9, 0xc34e, 0xf3c1, 0x003f, 0x003f, 0x003f, 0xf566, 0xf564,
+    0x003f, 0x003f, 0xf565, 0x003f, 0x003f, 0xf6a2, 0x003f, 0xc55c,
+    0xf7a4, 0xc5ea, 0xc5bc, 0xc5e8, 0xc5e9, 0xf8d4, 0xc662, 0x003f,
+    0xb0aa, 0x003f, 0x003f, 0x003f, 0xf1ba, 0x003f, 0x003f, 0xd449,
+    0x003f, 0xb9a6, 0x003f, 0xe4db, 0x003f, 0x003f, 0xbbec, 0xe4dc,
+    0x003f, 0x003f, 0x003f, 0xe8d4, 0xe8d3, 0xc068, 0xbe76, 0xbe77,
+    0x003f, 0xe8d7, 0xe8d6, 0xe8d5, 0x003f, 0x003f, 0xec6e, 0xec71,
+    0x003f, 0xec70, 0xec6f, 0xc067, 0xef68, 0xef66, 0xef65, 0x003f,
+    /* 0x9b00 .. 0x9bff */
+    0x003f, 0xef67, 0x003f, 0xc34f, 0xf1bc, 0xf1bd, 0xc350, 0x003f,
+    0xf1bb, 0x003f, 0xf3c3, 0xf3c2, 0xf3c5, 0xc447, 0xf3c4, 0x003f,
+    0xf567, 0xf569, 0xf568, 0x003f, 0x003f, 0xf6a3, 0xf6a6, 0xf6a4,
+    0xf6a5, 0xf7a5, 0xc5bd, 0x003f, 0x003f, 0x003f, 0xf854, 0xf855,
+    0xf856, 0x003f, 0xc64b, 0xc663, 0xf9b6, 0xb0ab, 0x003f, 0xbe78,
+    0xc069, 0xf1be, 0x003f, 0xf7a6, 0x003f, 0x003f, 0xf9c4, 0xd44a,
+    0x003f, 0xc67b, 0xb0ac, 0xec72, 0x003f, 0xf1bf, 0x003f, 0xf3c6,
+    0x003f, 0x003f, 0xf6a7, 0xf7a7, 0xb0ad, 0x003f, 0xe4dd, 0xe4de,
+    0x003f, 0xbbed, 0xbbee, 0xe8d9, 0xbe7a, 0xbe79, 0xe8d8, 0x003f,
+    0xef69, 0x003f, 0xf1c0, 0xf1c2, 0xf1c1, 0xc353, 0xc352, 0xc351,
+    0x003f, 0xc55e, 0xf6a8, 0x003f, 0xc55d, 0xf7a9, 0xf7a8, 0x003f,
+    0xc64c, 0xf8d5, 0xb3bd, 0xe0ea, 0x003f, 0x003f, 0x003f, 0xe4e1,
+    0xe4df, 0xe4e0, 0x003f, 0x003f, 0xe8e2, 0x003f, 0xe8dd, 0xe8da,
+    0xe8e1, 0x003f, 0x003f, 0x003f, 0xe8e3, 0x003f, 0x003f, 0xbe7c,
+    0xe8e0, 0xe8dc, 0x003f, 0x003f, 0xe8db, 0xe8df, 0xe8de, 0xbe7b,
+    0x003f, 0x003f, 0xec7d, 0xec78, 0xec76, 0xeca1, 0xec77, 0x003f,
+    0xec73, 0x003f, 0xec79, 0x003f, 0x003f, 0xec74, 0xef72, 0xec75,
+    0xeca2, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xec7c, 0xc06a, 0xec7b, 0xec7a, 0x003f, 0xec7e, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xef6a, 0xef6d, 0x003f, 0x003f, 0xef6c, 0x003f,
+    0xef74, 0xef6f, 0xef73, 0x003f, 0xef71, 0xef70, 0xef6e, 0x003f,
+    0xef6b, 0x003f, 0xc243, 0xc242, 0x003f, 0xc244, 0xc241, 0xef75,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf1c8, 0xf1cb, 0x003f,
+    0xf1c9, 0xf1cd, 0x003f, 0x003f, 0x003f, 0xf1ce, 0x003f, 0xf1c6,
+    0xc358, 0xf1c7, 0x003f, 0xf1c5, 0xf1cc, 0x003f, 0xf1c4, 0xf1c3,
+    0xc357, 0xc355, 0xc354, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0xf1ca, 0xf3cf, 0xf3d5, 0xc44a, 0xf3d0,
+    0x003f, 0xf3d3, 0xf3d7, 0xc44b, 0xf3d2, 0x003f, 0xf3ca, 0x003f,
+    0xf3c9, 0xf3d6, 0xf3cd, 0x003f, 0xf3cb, 0xf3d4, 0xf3cc, 0xc449,
+    0xc448, 0x003f, 0xf3c7, 0xf3c8, 0xf3d1, 0x003f, 0x003f, 0x003f,
+    0xf3ce, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf56c,
+    0xf56f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc356, 0x003f, 0x003f,
+    /* 0x9c00 .. 0x9cff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xf56d, 0xf573, 0xf571,
+    0xf56b, 0xf576, 0x003f, 0xf56a, 0x003f, 0xc4cf, 0xf572, 0x003f,
+    0x003f, 0x003f, 0xf56e, 0xc4ce, 0xf575, 0x003f, 0x003f, 0xf574,
+    0x003f, 0x003f, 0x003f, 0x003f, 0xf6ab, 0xf6aa, 0x003f, 0x003f,
+    0x003f, 0xf6b1, 0x003f, 0xf6ad, 0xf6b0, 0xc560, 0x003f, 0x003f,
+    0xf6ae, 0xf6af, 0x003f, 0xf6a9, 0xf6ac, 0xc55f, 0x003f, 0x003f,
+    0x003f, 0xc5bf, 0xf7b4, 0xf7af, 0xf7b3, 0x003f, 0xf7b6, 0xf7b2,
+    0x003f, 0xf7ae, 0x003f, 0xc5c1, 0xf7b1, 0xf7b5, 0xc5c0, 0xf7ac,
+    0xf570, 0xf7b0, 0x003f, 0x003f, 0xf7ad, 0x003f, 0xf7aa, 0x003f,
+    0xf7ab, 0xc5be, 0xf85a, 0xf85c, 0xf85f, 0xf85b, 0xf860, 0x003f,
+    0xf859, 0x003f, 0xf857, 0x003f, 0xc5eb, 0xf85d, 0xc5ed, 0xc5ec,
+    0xf858, 0xf85e, 0x003f, 0x003f, 0x003f, 0x003f, 0xf8da, 0xc64d,
+    0xf8db, 0x003f, 0xf8d9, 0xf8d6, 0x003f, 0x003f, 0xf8d8, 0xf8d7,
+    0xf95a, 0x003f, 0x003f, 0x003f, 0x003f, 0xf95c, 0xf95b, 0x003f,
+    0x003f, 0xf979, 0x003f, 0xf978, 0xf977, 0xf97a, 0x003f, 0xc673,
+    0xc674, 0xf9ca, 0xf9ce, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb3be, 0xdcaf, 0xe0ed,
+    0x003f, 0xb9a7, 0xe0eb, 0x003f, 0x003f, 0xe0ec, 0x003f, 0x003f,
+    0x003f, 0xe4e2, 0xe4e3, 0xbbf1, 0xbbef, 0xe4e4, 0xbbf0, 0xe8e8,
+    0x003f, 0xe8eb, 0xe8e5, 0xe8ec, 0xe8e4, 0xe8e6, 0x003f, 0xe8e7,
+    /* 0x9d00 .. 0x9dff */
+    0xe8ea, 0x003f, 0x003f, 0xbea1, 0xe8ef, 0xe8ee, 0xbe7d, 0xe8e9,
+    0xe8ed, 0xbe7e, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xecac, 0x003f, 0xc06f, 0x003f, 0xeca7, 0xc06b, 0x003f, 0xeca4,
+    0xecaa, 0xecad, 0x003f, 0xc070, 0x003f, 0xeca9, 0xeca6, 0xecae,
+    0xeca5, 0x003f, 0xecab, 0xc06c, 0x003f, 0xeca3, 0xc06d, 0x003f,
+    0xc06e, 0xeca8, 0x003f, 0x003f, 0x003f, 0xefa9, 0xef7a, 0xef7b,
+    0xef7e, 0xef7c, 0x003f, 0xef76, 0x003f, 0x003f, 0xef79, 0xefa5,
+    0xef7d, 0x003f, 0x003f, 0xc245, 0x003f, 0xefa7, 0xefa4, 0xc246,
+    0xefa6, 0xef77, 0xefa2, 0xefa3, 0x003f, 0xefa1, 0x003f, 0x003f,
+    0x003f, 0x003f, 0xf1d2, 0xf1d4, 0xf1d7, 0x003f, 0x003f, 0xf1d1,
+    0x003f, 0xc359, 0xf1d9, 0xf1d0, 0xf1da, 0x003f, 0xf1d6, 0xf1d8,
+    0xf1dc, 0xf1d5, 0xf1dd, 0xf1d3, 0xf1cf, 0xc35a, 0x003f, 0xf1db,
+    0xc35b, 0xc44d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xef78,
+    0xf3f1, 0xf3e8, 0xc44f, 0xf3e4, 0xc450, 0x003f, 0x003f, 0xf3ed,
+    0xf3e7, 0xf3dd, 0xc44e, 0xf3ea, 0xf3e5, 0xf3e6, 0x003f, 0xf3d8,
+    0xf3df, 0xf3ee, 0x003f, 0xf3eb, 0x003f, 0xf3e3, 0x003f, 0xf3ef,
+    0xf3de, 0xf3d9, 0xf3ec, 0x003f, 0xf3db, 0xf3e9, 0xf3e0, 0xf3f0,
+    0xf3dc, 0xc44c, 0xf3da, 0xf3e1, 0xf3e2, 0x003f, 0x003f, 0x003f,
+    0xf57d, 0x003f, 0xf57b, 0x003f, 0xf5a2, 0x003f, 0xf5ae, 0xf5a5,
+    0xf57c, 0xf578, 0xf5a7, 0xf57e, 0xf5a3, 0xf57a, 0xf5aa, 0xf577,
+    0xf5a1, 0xf5a6, 0xf5a8, 0xf5ab, 0xf579, 0x003f, 0xf5af, 0xf5b0,
+    0xf5a9, 0xf5ad, 0xf5a4, 0x003f, 0xf6c1, 0xf6c4, 0x003f, 0xc561,
+    0x003f, 0xf6c3, 0xf6c8, 0xf6c6, 0xc562, 0xf6bd, 0xf6b3, 0xf6b2,
+    0xc564, 0xf6bf, 0xf6c0, 0xf6bc, 0xf6b4, 0x003f, 0xf6b9, 0xf5ac,
+    0x003f, 0xf6b5, 0xc563, 0xf6bb, 0x003f, 0xf6ba, 0x003f, 0xf6b6,
+    0xf6c2, 0x003f, 0xf6b7, 0xf7bb, 0xf6c5, 0xf6c7, 0xf6be, 0xf6b8,
+    0xf7bc, 0xf7be, 0xf7b8, 0xc5c2, 0x003f, 0xf7c5, 0xf7c3, 0xc5c3,
+    0xf7c2, 0xf7c1, 0xf7ba, 0xf7b7, 0xf7bd, 0xf7c6, 0xf7b9, 0xf7bf,
+    0x003f, 0xf869, 0xf86e, 0xf864, 0xf867, 0xc5ee, 0xf86b, 0x003f,
+    0xf872, 0xf7c0, 0x003f, 0xf865, 0xf86f, 0xf873, 0xf86a, 0xf863,
+    0xf86d, 0x003f, 0xf86c, 0xf871, 0xf870, 0xf7c4, 0xf868, 0xf862,
+    0xf866, 0xc64e, 0xc64f, 0xf861, 0x003f, 0xf8e6, 0xf8dd, 0xf8e5,
+    /* 0x9e00 .. 0x9eff */
+    0xf8e2, 0xf8e3, 0xf8dc, 0xf8df, 0xf8e7, 0xf8e1, 0xf8e0, 0xf8de,
+    0x003f, 0xf8e4, 0x003f, 0xf95d, 0x003f, 0xf95e, 0x003f, 0xf960,
+    0xf95f, 0xf962, 0xf961, 0xf97c, 0xf97b, 0xf9b7, 0x003f, 0xf9b8,
+    0x003f, 0xf9c5, 0xc678, 0xc67c, 0x003f, 0xf9cf, 0xc67d, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xb3bf, 0x003f, 0x003f,
+    0x003f, 0xc4d0, 0xf6c9, 0x003f, 0xc650, 0xc651, 0x003f, 0xb3c0,
+    0xe0ee, 0x003f, 0xb9a8, 0xe8f0, 0x003f, 0x003f, 0xecb0, 0xecb1,
+    0xecaf, 0xefab, 0xefaa, 0xc247, 0xf1df, 0xefac, 0xf1de, 0x003f,
+    0x003f, 0xf3f3, 0xc451, 0xc453, 0xf3f2, 0x003f, 0x003f, 0xc452,
+    0x003f, 0xf5b1, 0xf5b3, 0xf5b2, 0xf6ca, 0xc565, 0x003f, 0xc5ef,
+    0xf8e8, 0xf963, 0x003f, 0x003f, 0xf9d2, 0xb3c1, 0x003f, 0xe4e5,
+    0x003f, 0xbea2, 0x003f, 0x003f, 0x003f, 0xecb3, 0xecb2, 0x003f,
+    0xefad, 0x003f, 0x003f, 0x003f, 0xc454, 0xc4d1, 0xf7c7, 0xf9cb,
+    0x003f, 0x003f, 0x003f, 0xb3c2, 0xbbf2, 0x003f, 0xbea3, 0x003f,
+    0xf3f4, 0x003f, 0xf874, 0xb6c0, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xefae, 0x003f, 0x003f, 0x003f, 0xc664, 0xb6c1, 0xbea4, 0xc248,
+    0xf875, 0xb6c2, 0x003f, 0xe8f1, 0xc072, 0xecb4, 0xecb5, 0x003f,
+    0xc071, 0x003f, 0xefaf, 0xc24c, 0xc24a, 0xc24b, 0xc249, 0xf1e0,
+    0xc35c, 0x003f, 0x003f, 0x003f, 0xf5b5, 0xf5b4, 0xf5b7, 0xf5b6,
+    0xc4d2, 0x003f, 0x003f, 0xf6cb, 0x003f, 0xf6cd, 0xf6cc, 0xc566,
+    0xf7c8, 0x003f, 0xf876, 0xf877, 0xc5f0, 0xf964, 0xf97d, 0xc675,
+    0x003f, 0xdcb0, 0xecb6, 0xefb0, 0xf3f5, 0xe0ef, 0x003f, 0xefb1,
+    /* 0x9f00 .. 0x9fff */
+    0xf1e2, 0xf1e1, 0x003f, 0x003f, 0x003f, 0x003f, 0xf878, 0xc652,
+    0x003f, 0xf965, 0xf97e, 0x003f, 0x003f, 0x003f, 0xb9a9, 0xe8f2,
+    0xe8f3, 0x003f, 0xecb7, 0xb9aa, 0x003f, 0xc35d, 0xf1e3, 0x003f,
+    0xf6cf, 0xc567, 0xf6d0, 0xf6ce, 0xf879, 0x003f, 0xf8e9, 0x003f,
+    0xb9ab, 0x003f, 0xefb4, 0xefb3, 0xefb2, 0xf1e4, 0x003f, 0x003f,
+    0xf1e8, 0xf1e7, 0xf1e6, 0xf1e5, 0xc35e, 0xf3f6, 0xf5b9, 0xc4d3,
+    0xf5b8, 0xf6d1, 0xf7cb, 0xf7ca, 0xc5c4, 0xf7c9, 0xf87c, 0xf87b,
+    0xf87a, 0x003f, 0x003f, 0xbbf3, 0x003f, 0xecb8, 0xc24d, 0x003f,
+    0xf3f7, 0xf3f8, 0xf7cc, 0xf87d, 0x003f, 0x003f, 0xf8ea, 0xf966,
+    0xf9b9, 0xf9d4, 0xbbf4, 0xc24e, 0xf1e9, 0xf3f9, 0xf6d2, 0xf87e,
+    0x003f, 0x003f, 0xbea6, 0x003f, 0xefb5, 0xf1ea, 0xf3fa, 0xf3fb,
+    0xf3fc, 0xf5be, 0x003f, 0xf5ba, 0xc568, 0xf5bd, 0xf5bc, 0xc4d4,
+    0xf5bb, 0xc4d6, 0x003f, 0xc4d5, 0xf6d4, 0xf6d3, 0xc569, 0xc56a,
+    0x003f, 0x003f, 0xc5c6, 0xf7cd, 0xc5c5, 0x003f, 0xf8a3, 0xf8a4,
+    0xf8a2, 0xf8a1, 0xc654, 0x003f, 0xf8eb, 0xf8ec, 0xf8ed, 0xc653,
+    0xf967, 0xf96a, 0xf969, 0xf968, 0x003f, 0x003f, 0xf9d3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0xc073, 0x003f, 0x003f,
+    0xc365, 0xf5bf, 0xf6d5, 0x003f, 0xc5c7, 0xf7ce, 0x003f, 0x003f,
+    0xf9d5, 0x003f, 0x003f, 0x003f, 0xc074, 0x003f, 0x003f, 0x003f,
+    0xefb6, 0x003f, 0xf7cf, 0x003f, 0xf9a1, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0xf900 .. 0xf9ff */
+    0xb05a, 0xa7f3, 0xa8ae, 0xb8eb, 0xb7c6, 0xa6ea, 0xa579, 0xc074,
+    0xc074, 0xabb4, 0xaaf7, 0xb3e2, 0xa960, 0xc369, 0xc4ee, 0xc3b9,
+    0xc5da, 0xc1b3, 0xbb72, 0xc5de, 0xbcd6, 0xaca5, 0xaf4f, 0xaf5f,
+    0xb8a8, 0xb954, 0xc064, 0xb6c3, 0xa75a, 0xc4e6, 0xc4ea, 0xc4f5,
+    0xc67d, 0xb450, 0xc0dd, 0xc2c5, 0xc4b0, 0xa9d4, 0xc3be, 0xc4fa,
+    0xb459, 0xaed4, 0xaef6, 0xaf54, 0xada6, 0xa8d3, 0xa74e, 0xb3d2,
+    0xbedb, 0xc372, 0xc46c, 0xbf63, 0xa6d1, 0xc4aa, 0xb8b8, 0xb8f4,
+    0xc553, 0xbe7c, 0xc64f, 0xb84c, 0xb853, 0xbaf1, 0xdb77, 0xbffd,
+    0xb3c0, 0xbdd7, 0xc362, 0xa7cb, 0xc5a2, 0xc5a4, 0xa863, 0xbd55,
+    0xb8ef, 0xb970, 0xc253, 0xb9f0, 0xbcd3, 0xb25c, 0xba7c, 0xb2d6,
+    0xc15c, 0xadae, 0xb0c7, 0xa6d8, 0xbbfe, 0xade2, 0xb857, 0xbaf0,
+    0xb5d9, 0xb3ae, 0xc5aa, 0xced4, 0xbcd6, 0xbfd5, 0xa4a6, 0xb9e7,
+    0xabe3, 0xb276, 0xb2a7, 0xa55f, 0xeda8, 0xab4b, 0xb45f, 0xa4a3,
+    0xaa63, 0xbcc6, 0xafc1, 0xb0d1, 0xb6eb, 0xacd9, 0xb8ad, 0xbba1,
+    0xb1fe, 0xa8b0, 0xa848, 0xac42, 0xad59, 0xb1b0, 0xb2a4, 0xab47,
+    0xa8e2, 0x003f, 0xb1e7, 0xc2b3, 0xa87d, 0xbdcc, 0xb671, 0xc079,
+    0xa766, 0xa46b, 0xc366, 0xaec8, 0xc26f, 0xc472, 0xbe5b, 0xc67a,
+    0xc452, 0xbea4, 0xa44f, 0xbee4, 0xbefa, 0xf765, 0xa67e, 0xbca6,
+    0xc5ca, 0xbcbf, 0xbaa7, 0xb7d2, 0xe6a3, 0x003f, 0xbd6d, 0xc170,
+    0xbdfb, 0xbdac, 0xb373, 0xc1e5, 0xa643, 0xa648, 0xab7c, 0xaf50,
+    0xb5f5, 0xbba1, 0xb747, 0xa9c0, 0xb1c9, 0xc0d4, 0xc3ae, 0xc279,
+    0xa54f, 0xcbf1, 0xb9e7, 0xc0ad, 0xccb0, 0xacc2, 0xbcfc, 0xb2dc,
+    0xb2e2, 0xb961, 0xb973, 0xc646, 0xbbe2, 0xa8d2, 0xc2a7, 0xc4bf,
+    0xc1f5, 0xb463, 0xa446, 0xb9b1, 0xbc64, 0xa7bf, 0xaec6, 0xbcd6,
+    0xbf52, 0xc0f8, 0xe764, 0xbff1, 0xc073, 0xb777, 0xa8bf, 0xbc42,
+    0xccd8, 0xac68, 0xac79, 0xb7c8, 0xaf5b, 0xaf64, 0xb2b8, 0xafc3,
+    0xc3fe, 0xa4bb, 0xbcae, 0xb3b0, 0xaddb, 0xb15b, 0xb25f, 0xbdfc,
+    0xabdf, 0xb758, 0xaedf, 0xb276, 0xb6a9, 0xa751, 0xa64f, 0xbc69,
+    0xa9f6, 0xa7f5, 0xb1f9, 0xaa64, 0xb27a, 0xb567, 0xbfa9, 0xf9d8,
+    0xb8cc, 0xa8bd, 0xc2f7, 0xb0ce, 0xb7c4, 0xa75b, 0xbf4d, 0xbf5a,
+    0xc4a9, 0x003f, 0xc5ec, 0xc5ef, 0xaa4c, 0xb24f, 0xc17b, 0xa5df,
+    0xb2c1, 0xb2c9, 0xaaac, 0xaaa5, 0xc3d1, 0xa4b0, 0xaff9, 0xa8eb,
+    /* 0xfa00 .. 0xfaff */
+    0xa4c1, 0xabd7, 0xa9dd, 0xbf7d, 0xa676, 0xac7d, 0xbcc9, 0xbfe7,
+    0xa6e6, 0xadb0, 0xa8a3, 0xb9f8, 0xc94a, 0xddfc, 0x003f, 0x003f,
+    0xb6ef, 0x003f, 0xb4b8, 0x003f, 0x003f, 0xe8f9, 0x003f, 0xaf71,
+    0x003f, 0xafab, 0xb2bb, 0xbad6, 0xb974, 0xbaeb, 0xa6d0, 0x003f,
+    0x003f, 0x003f, 0xbdd1, 0x003f, 0x003f, 0xb668, 0xb3a3, 0x003f,
+    0x003f, 0x003f, 0xb6ba, 0xb97d, 0xc05d, 0xc562, 0x003f, 0x003f,
+    0xab56, 0xb9ac, 0xa74b, 0xab6a, 0xb6d4, 0xa8f5, 0xb3dc, 0xb9c4,
+    0xbeb9, 0x003f, 0xbea5, 0xbc68, 0xc94b, 0xaeac, 0xb46e, 0xbca8,
+    0xc367, 0xb1d3, 0xac4a, 0xb4bb, 0xb1f6, 0xaefc, 0xb25a, 0xba7e,
+    0xb54e, 0x003f, 0xb55a, 0xb84f, 0xaac0, 0xace7, 0xace8, 0xafa7,
+    0xafaa, 0xafac, 0xbad7, 0xbad5, 0xbd5c, 0xacf0, 0xb860, 0xbd6d,
+    0xbfa7, 0xc163, 0xb870, 0xaacc, 0xafe4, 0x003f, 0x003f, 0xb5db,
+    0xbdc5, 0xb5f8, 0xbfd6, 0xc2d4, 0xbbab, 0xc3d8, 0x003f, 0xb668,
+    0xc3f8, 0xc554, 0xc057, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa8c3, 0x003f, 0xa5fe, 0xcbb6, 0xa552, 0xbeac, 0xab69, 0xa463,
+    0xb3dc, 0xb0de, 0xb3f1, 0xdcda, 0xb6ef, 0xbc58, 0xa961, 0xa962,
+    0xb141, 0xe959, 0xe1bc, 0xe1bb, 0xb16d, 0xdd64, 0xb1a6, 0xb756,
+    0xb755, 0xbca8, 0x003f, 0xc367, 0xc0b9, 0xd967, 0xb76a, 0xb4ac,
+    0xb1ce, 0xb4b8, 0xaed4, 0xb1e6, 0xa7fa, 0xa4ef, 0xb1fe, 0xac79,
+    0x003f, 0xb4fe, 0xba7e, 0x003f, 0xb54e, 0xc140, 0xc0ef, 0xa5c7,
+    0x003f, 0xe2d0, 0x003f, 0x003f, 0xe6b2, 0xbd45, 0xaf71, 0xb2b1,
+    0xaabd, 0xdabf, 0x003f, 0xe6c3, 0xeab5, 0xb860, 0x003f, 0xb86c,
+    0xbd6d, 0xdafc, 0xaacc, 0xafee, 0xb5d8, 0xeb64, 0xee75, 0xc2d0,
+    0xb5f8, 0xbdd5, 0xbdd1, 0xbdd0, 0xbfd6, 0xbfd5, 0xbfd9, 0xc2d4,
+    0xc5dc, 0xc3d8, 0xbfe9, 0xbff0, 0xeec8, 0xe478, 0xd847, 0xc3f8,
+    0xb974, 0x003f, 0xc554, 0x003f, 0xc057, 0xf568, 0xc074, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xf87d, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0xfb00 .. 0xfbff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x002b, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0xfe00 .. 0xfeff */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa14a, 0xa157, 0x003f, 0xa159, 0xa15b, 0xa15f, 0xa160, 0xa163,
+    0xa164, 0xa167, 0xa168, 0xa16b, 0xa16c, 0xa16f, 0xa170, 0xa173,
+    0xa174, 0xa177, 0xa178, 0xa17b, 0xa17c, 0x003f, 0x003f, 0x003f,
+    0x003f, 0xa1c6, 0xa1c7, 0xa1ca, 0xa1cb, 0xa1c8, 0xa1c9, 0xa15c,
+    0xa14d, 0xa14e, 0xa14f, 0x003f, 0xa151, 0xa152, 0xa153, 0xa154,
+    0xa158, 0xa17d, 0xa17e, 0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4, 0xa1cc,
+    0xa1cd, 0xa1ce, 0xa1de, 0xa1df, 0xa1e0, 0xa1e1, 0xa1e2, 0x003f,
+    0xa242, 0xa24c, 0xa24d, 0xa24e, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* 0xff00 .. 0xffff */
+    0x003f, 0xa149, 0x0022, 0xa1ad, 0xa243, 0xa248, 0xa1ae, 0x0027,
+    0xa15d, 0xa15e, 0xa1af, 0xa1cf, 0xa141, 0xa1d0, 0xa144, 0xa1fe,
+    0xa2af, 0xa2b0, 0xa2b1, 0xa2b2, 0xa2b3, 0xa2b4, 0xa2b5, 0xa2b6,
+    0xa2b7, 0xa2b8, 0xa147, 0xa146, 0xa1d5, 0xa1d7, 0xa1d6, 0xa148,
+    0xa249, 0xa2cf, 0xa2d0, 0xa2d1, 0xa2d2, 0xa2d3, 0xa2d4, 0xa2d5,
+    0xa2d6, 0xa2d7, 0xa2d8, 0xa2d9, 0xa2da, 0xa2db, 0xa2dc, 0xa2dd,
+    0xa2de, 0xa2df, 0xa2e0, 0xa2e1, 0xa2e2, 0xa2e3, 0xa2e4, 0xa2e5,
+    0xa2e6, 0xa2e7, 0xa2e8, 0x005b, 0xa240, 0x005d, 0x005e, 0xa1c4,
+    0x0060, 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec, 0xa2ed, 0xa2ee, 0xa2ef,
+    0xa2f0, 0xa2f1, 0xa2f2, 0xa2f3, 0xa2f4, 0xa2f5, 0xa2f6, 0xa2f7,
+    0xa2f8, 0xa2f9, 0xa2fa, 0xa2fb, 0xa2fc, 0xa2fd, 0xa2fe, 0xa340,
+    0xa341, 0xa342, 0xa343, 0xa161, 0xa155, 0xa162, 0xa1e3, 0x003f,
+    0x003f, 0xa143, 0xa175, 0xa176, 0xa142, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0xa246, 0xa247, 0x003f, 0xa1c3, 0x007c, 0xa244, 0x003f, 0x003f,
+    0xa278, 0xa1f6, 0xa1f4, 0xa1f7, 0xa1f5, 0xa1bd, 0xa1b3, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    /* defaults */
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+    0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f
+};
+
+static const unsigned short uni2cp_high[256] =
+{
+    0x0000, 0x0100, 0x0200, 0x0300, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x0400, 0x0500, 0x0600,
+    0x0700, 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x0d00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x0e00, 0x0f00,
+    0x1000, 0x1100, 0x1200, 0x1300, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x1400, 0x1500,
+    0x1600, 0x1700, 0x1800, 0x1900, 0x1a00, 0x1b00, 0x1c00, 0x1d00,
+    0x1e00, 0x1f00, 0x2000, 0x2100, 0x2200, 0x2300, 0x2400, 0x2500,
+    0x2600, 0x2700, 0x2800, 0x2900, 0x2a00, 0x2b00, 0x2c00, 0x2d00,
+    0x2e00, 0x2f00, 0x3000, 0x3100, 0x3200, 0x3300, 0x3400, 0x3500,
+    0x3600, 0x3700, 0x3800, 0x3900, 0x3a00, 0x3b00, 0x3c00, 0x3d00,
+    0x3e00, 0x3f00, 0x4000, 0x4100, 0x4200, 0x4300, 0x4400, 0x4500,
+    0x4600, 0x4700, 0x4800, 0x4900, 0x4a00, 0x4b00, 0x4c00, 0x4d00,
+    0x4e00, 0x4f00, 0x5000, 0x5100, 0x5200, 0x5300, 0x5400, 0x5500,
+    0x5600, 0x5700, 0x5800, 0x5900, 0x5a00, 0x5b00, 0x5c00, 0x5d00,
+    0x5e00, 0x5f00, 0x6000, 0x6100, 0x6200, 0x6300, 0x6400, 0x6500,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00, 0x6b00,
+    0x6b00, 0x6600, 0x6700, 0x6800, 0x6b00, 0x6b00, 0x6900, 0x6a00
+};
+
+const struct dbcs_table cptable_950 =
+{
+    { 950, 2, 0x003f, 0x003f, "ANSI/OEM Traditional Chinese Big5" },
+    cp2uni,
+    cp2uni_leadbytes,
+    uni2cp_low,
+    uni2cp_high,
+    { 0x81, 0xfe, 0x00, 0x00 }
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/casemap.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/casemap.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/casemap.c	(revision 16410)
@@ -0,0 +1,1715 @@
+/* Unicode case mappings */
+/* Automatically generated; DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+const WCHAR wine_casemap_lower[3318] =
+{
+    /* index */
+    0x01bf, 0x02bf, 0x03bf, 0x0439, 0x0539, 0x0639, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0699, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0799, 0x0892,
+    0x0100, 0x098f, 0x0100, 0x0100, 0x0a13, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0b13, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0bf6,
+    /* defaults */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0041 .. 0x00ff */
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+    0x0020, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020,
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0000, 0x0020,
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0100 .. 0x01ff */
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0xff39, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001,
+    0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001,
+    0x0000, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0xff87, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0000,
+    0x0000, 0x00d2, 0x0001, 0x0000, 0x0001, 0x0000, 0x00ce, 0x0001,
+    0x0000, 0x00cd, 0x00cd, 0x0001, 0x0000, 0x0000, 0x004f, 0x00ca,
+    0x00cb, 0x0001, 0x0000, 0x00cd, 0x00cf, 0x0000, 0x00d3, 0x00d1,
+    0x0001, 0x0000, 0x0000, 0x0000, 0x00d3, 0x00d5, 0x0000, 0x00d6,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x00da, 0x0001,
+    0x0000, 0x00da, 0x0000, 0x0000, 0x0001, 0x0000, 0x00da, 0x0001,
+    0x0000, 0x00d9, 0x00d9, 0x0001, 0x0000, 0x0001, 0x0000, 0x00db,
+    0x0001, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0001, 0x0000, 0x0002,
+    0x0001, 0x0000, 0x0002, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001,
+    0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001,
+    0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0000, 0x0002, 0x0001, 0x0000, 0x0001, 0x0000, 0xff9f, 0xffc8,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    /* 0x0200 .. 0x02ff */
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0xff7e, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x2a2b, 0x0001, 0x0000, 0xff5d, 0x2a28, 0x0000,
+    0x0000, 0x0001, 0x0000, 0xff3d, 0x0045, 0x0047, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0386 .. 0x03ff */
+    0x0026, 0x0000, 0x0025, 0x0025, 0x0025, 0x0000, 0x0040, 0x0000,
+    0x003f, 0x003f, 0x0000, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0000, 0x0020, 0x0020, 0x0020,
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffc4, 0x0000,
+    0x0000, 0x0001, 0x0000, 0xfff9, 0x0001, 0x0000, 0x0000, 0xff7e,
+    0xff7e, 0xff7e,
+    /* 0x0400 .. 0x04ff */
+    0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050,
+    0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050,
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x000f, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001,
+    0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    /* 0x0500 .. 0x05ff */
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
+    0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
+    0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
+    0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
+    0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x10a0 .. 0x10ff */
+    0x1c60, 0x1c60, 0x1c60, 0x1c60, 0x1c60, 0x1c60, 0x1c60, 0x1c60,
+    0x1c60, 0x1c60, 0x1c60, 0x1c60, 0x1c60, 0x1c60, 0x1c60, 0x1c60,
+    0x1c60, 0x1c60, 0x1c60, 0x1c60, 0x1c60, 0x1c60, 0x1c60, 0x1c60,
+    0x1c60, 0x1c60, 0x1c60, 0x1c60, 0x1c60, 0x1c60, 0x1c60, 0x1c60,
+    0x1c60, 0x1c60, 0x1c60, 0x1c60, 0x1c60, 0x1c60, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x1e00 .. 0x1eff */
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x1f07 .. 0x1fff */
+    0x0000, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8,
+    0xfff8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8,
+    0xfff8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8,
+    0xfff8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0xfff8, 0x0000, 0xfff8, 0x0000, 0xfff8, 0x0000,
+    0xfff8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8,
+    0xfff8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8,
+    0xfff8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8,
+    0xfff8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8,
+    0xfff8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0xfff8, 0xfff8, 0xffb6, 0xffb6, 0xfff7, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0xffaa, 0xffaa, 0xffaa, 0xffaa, 0xfff7, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0xfff8, 0xfff8, 0xff9c, 0xff9c, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0xfff8, 0xfff8, 0xff90, 0xff90, 0xfff9, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0xff80, 0xff80, 0xff82, 0xff82, 0xfff7, 0x0000, 0x0000,
+    0x0000,
+    /* 0x2103 .. 0x21ff */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0xe2a3, 0x0000, 0x0000, 0x0000, 0xdf41,
+    0xdfba, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x001c,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x247c .. 0x24ff */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a,
+    0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a,
+    0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a,
+    0x001a, 0x001a, 0x001a, 0x001a, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x2c00 .. 0x2cff */
+    0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
+    0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
+    0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
+    0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
+    0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
+    0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0001, 0x0000, 0xd609, 0xf11a, 0xd619, 0x0000, 0x0000, 0x0001,
+    0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0xff1d .. 0xffff */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0020, 0x0020, 0x0020,
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000
+};
+const WCHAR wine_casemap_upper[3582] =
+{
+    /* index */
+    0x019f, 0x029f, 0x039f, 0x045a, 0x0556, 0x0656, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x06dd, 0x07dc, 0x08dc,
+    0x0100, 0x09d0, 0x0100, 0x0100, 0x0a55, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0b3f, 0x0c3f, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0cfe,
+    /* defaults */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0061 .. 0x00ff */
+    0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0,
+    0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0,
+    0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0,
+    0xffe0, 0xffe0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x02e7, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffe0,
+    0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0,
+    0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0,
+    0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0x0000, 0xffe0,
+    0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0x0079,
+    /* 0x0100 .. 0x01ff */
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xff18, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0xfed4,
+    0x00c3, 0x0000, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0x0000,
+    0xffff, 0x0000, 0x0000, 0x0000, 0xffff, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0xffff, 0x0000, 0x0000, 0x0061, 0x0000, 0x0000,
+    0x0000, 0xffff, 0x00a3, 0x0000, 0x0000, 0x0000, 0x0082, 0x0000,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0x0000,
+    0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 0x0000, 0x0000,
+    0xffff, 0x0000, 0x0000, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0x0000, 0xffff, 0x0000, 0x0000, 0x0000, 0xffff, 0x0000, 0x0038,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 0xfffe, 0x0000,
+    0xffff, 0xfffe, 0x0000, 0xffff, 0xfffe, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0xffb1, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0x0000, 0xffff, 0xfffe, 0x0000, 0xffff, 0x0000, 0x0000,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    /* 0x0200 .. 0x02ff */
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0x0000, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0x0000, 0x0000, 0xff2e, 0xff32, 0x0000, 0xff33, 0xff33,
+    0x0000, 0xff36, 0x0000, 0xff35, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xff33, 0x0000, 0x0000, 0xff31, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xff2f, 0xff2d, 0x0000, 0x29f7, 0x0000, 0x0000, 0x0000, 0xff2d,
+    0x0000, 0x0000, 0xff2b, 0x0000, 0x0000, 0xff2a, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x29e7, 0x0000, 0x0000,
+    0xff26, 0x0000, 0x0000, 0xff26, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xff26, 0xffbb, 0xff27, 0xff27, 0xffb9, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0xff25, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0345 .. 0x03ff */
+    0x0054, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0082, 0x0082,
+    0x0082, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffda,
+    0xffdb, 0xffdb, 0xffdb, 0x0000, 0xffe0, 0xffe0, 0xffe0, 0xffe0,
+    0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0,
+    0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe1, 0xffe0, 0xffe0,
+    0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffc0,
+    0xffc1, 0xffc1, 0x0000, 0xffc2, 0xffc7, 0x0000, 0x0000, 0x0000,
+    0xffd1, 0xffca, 0x0000, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0xffaa, 0xffb0, 0x0007, 0x0000, 0x0000,
+    0xffa0, 0x0000, 0x0000, 0xffff, 0x0000, 0x0000, 0xffff, 0x0000,
+    0x0000, 0x0000, 0x0000,
+    /* 0x0404 .. 0x04ff */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0xffe0, 0xffe0, 0xffe0, 0xffe0,
+    0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0,
+    0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0,
+    0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0,
+    0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffb0, 0xffb0, 0xffb0, 0xffb0,
+    0xffb0, 0xffb0, 0xffb0, 0xffb0, 0xffb0, 0xffb0, 0xffb0, 0xffb0,
+    0xffb0, 0xffb0, 0xffb0, 0xffb0, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0xfff1, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff,
+    /* 0x0500 .. 0x05ff */
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0,
+    0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0,
+    0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0,
+    0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0,
+    0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x1d79 .. 0x1dff */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0ee6, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x1e01 .. 0x1eff */
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0xffc5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x1f00 .. 0x1fff */
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0008, 0x0000, 0x0008, 0x0000, 0x0008, 0x0000, 0x0008,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x004a, 0x004a, 0x0056, 0x0056, 0x0056, 0x0056, 0x0064, 0x0064,
+    0x0080, 0x0080, 0x0070, 0x0070, 0x007e, 0x007e, 0x0000, 0x0000,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0008, 0x0008, 0x0000, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe3db, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0008, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0008, 0x0008, 0x0000, 0x0000, 0x0000, 0x0007, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x210c .. 0x21ff */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0xffe4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0xfff0, 0xfff0, 0xfff0, 0xfff0,
+    0xfff0, 0xfff0, 0xfff0, 0xfff0, 0xfff0, 0xfff0, 0xfff0, 0xfff0,
+    0xfff0, 0xfff0, 0xfff0, 0xfff0, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x247b .. 0x24ff */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffe6, 0xffe6, 0xffe6,
+    0xffe6, 0xffe6, 0xffe6, 0xffe6, 0xffe6, 0xffe6, 0xffe6, 0xffe6,
+    0xffe6, 0xffe6, 0xffe6, 0xffe6, 0xffe6, 0xffe6, 0xffe6, 0xffe6,
+    0xffe6, 0xffe6, 0xffe6, 0xffe6, 0xffe6, 0xffe6, 0xffe6, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x2c16 .. 0x2cff */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0,
+    0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0,
+    0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0,
+    0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0,
+    0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0,
+    0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0, 0xffd0,
+    0xffd0, 0x0000, 0x0000, 0xffff, 0x0000, 0x0000, 0x0000, 0xd5d5,
+    0xd5d8, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+    0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000,
+    /* 0x2d00 .. 0x2dff */
+    0xe3a0, 0xe3a0, 0xe3a0, 0xe3a0, 0xe3a0, 0xe3a0, 0xe3a0, 0xe3a0,
+    0xe3a0, 0xe3a0, 0xe3a0, 0xe3a0, 0xe3a0, 0xe3a0, 0xe3a0, 0xe3a0,
+    0xe3a0, 0xe3a0, 0xe3a0, 0xe3a0, 0xe3a0, 0xe3a0, 0xe3a0, 0xe3a0,
+    0xe3a0, 0xe3a0, 0xe3a0, 0xe3a0, 0xe3a0, 0xe3a0, 0xe3a0, 0xe3a0,
+    0xe3a0, 0xe3a0, 0xe3a0, 0xe3a0, 0xe3a0, 0xe3a0, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0xff41 .. 0xffff */
+    0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0,
+    0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0,
+    0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe0,
+    0xffe0, 0xffe0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+const WCHAR wine_digitmap[4619] =
+{
+    /* index */
+    0x01d0, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x028a, 0x0384,
+    0x0100, 0x044e, 0x053e, 0x062e, 0x071e, 0x080e, 0x08be, 0x099e,
+    0x0a5e, 0x0100, 0x0100, 0x0af5, 0x0100, 0x0100, 0x0100, 0x0b67,
+    0x0c57, 0x0d11, 0x0100, 0x0deb, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0e7b, 0x0100, 0x0100, 0x0100, 0x0f1b, 0x0100, 0x0100, 0x101b,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x110b,
+    /* defaults */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0030 .. 0x00ff */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0xff80, 0xff80, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0xff78, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0646 .. 0x06ff */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0xf9d0, 0xf9d0, 0xf9d0, 0xf9d0, 0xf9d0, 0xf9d0,
+    0xf9d0, 0xf9d0, 0xf9d0, 0xf9d0, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0xf940, 0xf940, 0xf940, 0xf940, 0xf940, 0xf940,
+    0xf940, 0xf940, 0xf940, 0xf940, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000,
+    /* 0x0706 .. 0x07ff */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0xf870, 0xf870, 0xf870, 0xf870, 0xf870, 0xf870,
+    0xf870, 0xf870, 0xf870, 0xf870, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000,
+    /* 0x0936 .. 0x09ff */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xf6ca, 0xf6ca, 0xf6ca, 0xf6ca, 0xf6ca, 0xf6ca, 0xf6ca, 0xf6ca,
+    0xf6ca, 0xf6ca, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xf64a, 0xf64a, 0xf64a, 0xf64a, 0xf64a, 0xf64a, 0xf64a, 0xf64a,
+    0xf64a, 0xf64a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000,
+    /* 0x0a10 .. 0x0aff */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf5ca, 0xf5ca,
+    0xf5ca, 0xf5ca, 0xf5ca, 0xf5ca, 0xf5ca, 0xf5ca, 0xf5ca, 0xf5ca,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf54a, 0xf54a,
+    0xf54a, 0xf54a, 0xf54a, 0xf54a, 0xf54a, 0xf54a, 0xf54a, 0xf54a,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0b10 .. 0x0bff */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf4ca, 0xf4ca,
+    0xf4ca, 0xf4ca, 0xf4ca, 0xf4ca, 0xf4ca, 0xf4ca, 0xf4ca, 0xf4ca,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf44a, 0xf44a,
+    0xf44a, 0xf44a, 0xf44a, 0xf44a, 0xf44a, 0xf44a, 0xf44a, 0xf44a,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0c10 .. 0x0cff */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf3ca, 0xf3ca,
+    0xf3ca, 0xf3ca, 0xf3ca, 0xf3ca, 0xf3ca, 0xf3ca, 0xf3ca, 0xf3ca,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf34a, 0xf34a,
+    0xf34a, 0xf34a, 0xf34a, 0xf34a, 0xf34a, 0xf34a, 0xf34a, 0xf34a,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0d10 .. 0x0dff */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf2ca, 0xf2ca,
+    0xf2ca, 0xf2ca, 0xf2ca, 0xf2ca, 0xf2ca, 0xf2ca, 0xf2ca, 0xf2ca,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0e50 .. 0x0eff */
+    0xf1e0, 0xf1e0, 0xf1e0, 0xf1e0, 0xf1e0, 0xf1e0, 0xf1e0, 0xf1e0,
+    0xf1e0, 0xf1e0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xf160, 0xf160, 0xf160, 0xf160, 0xf160, 0xf160, 0xf160, 0xf160,
+    0xf160, 0xf160, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0f20 .. 0x0fff */
+    0xf110, 0xf110, 0xf110, 0xf110, 0xf110, 0xf110, 0xf110, 0xf110,
+    0xf110, 0xf110, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x1040 .. 0x10ff */
+    0xeff0, 0xeff0, 0xeff0, 0xeff0, 0xeff0, 0xeff0, 0xeff0, 0xeff0,
+    0xeff0, 0xeff0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x1369 .. 0x13ff */
+    0xecc8, 0xecc8, 0xecc8, 0xecc8, 0xecc8, 0xecc8, 0xecc8, 0xecc8,
+    0xecc8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x178e .. 0x17ff */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0xe850, 0xe850, 0xe850, 0xe850, 0xe850, 0xe850,
+    0xe850, 0xe850, 0xe850, 0xe850, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000,
+    /* 0x1810 .. 0x18ff */
+    0xe820, 0xe820, 0xe820, 0xe820, 0xe820, 0xe820, 0xe820, 0xe820,
+    0xe820, 0xe820, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x1946 .. 0x19ff */
+    0xe6ea, 0xe6ea, 0xe6ea, 0xe6ea, 0xe6ea, 0xe6ea, 0xe6ea, 0xe6ea,
+    0xe6ea, 0xe6ea, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0xe660, 0xe660, 0xe660, 0xe660, 0xe660, 0xe660,
+    0xe660, 0xe660, 0xe660, 0xe660, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000,
+    /* 0x1b26 .. 0x1bff */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0xe4e0, 0xe4e0, 0xe4e0, 0xe4e0, 0xe4e0, 0xe4e0,
+    0xe4e0, 0xe4e0, 0xe4e0, 0xe4e0, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000,
+    /* 0x2070 .. 0x20ff */
+    0xdfc0, 0x0000, 0x0000, 0x0000, 0xdfc0, 0xdfc0, 0xdfc0, 0xdfc0,
+    0xdfc0, 0xdfc0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xdfb0, 0xdfb0, 0xdfb0, 0xdfb0, 0xdfb0, 0xdfb0, 0xdfb0, 0xdfb0,
+    0xdfb0, 0xdfb0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x2460 .. 0x24ff */
+    0xdbd1, 0xdbd1, 0xdbd1, 0xdbd1, 0xdbd1, 0xdbd1, 0xdbd1, 0xdbd1,
+    0xdbd1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0xdbbd, 0xdbbd, 0xdbbd, 0xdbbd,
+    0xdbbd, 0xdbbd, 0xdbbd, 0xdbbd, 0xdbbd, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xdba9, 0xdba9, 0xdba9, 0xdba9, 0xdba9, 0xdba9, 0xdba9, 0xdba9,
+    0xdba9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0xdb46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xdb3c, 0xdb3c, 0xdb3c,
+    0xdb3c, 0xdb3c, 0xdb3c, 0xdb3c, 0xdb3c, 0xdb3c, 0x0000, 0xdb31,
+    /* 0x2700 .. 0x27ff */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd8bb, 0xd8bb,
+    0xd8bb, 0xd8bb, 0xd8bb, 0xd8bb, 0xd8bb, 0xd8bb, 0xd8bb, 0x0000,
+    0xd8b1, 0xd8b1, 0xd8b1, 0xd8b1, 0xd8b1, 0xd8b1, 0xd8b1, 0xd8b1,
+    0xd8b1, 0x0000, 0xd8a7, 0xd8a7, 0xd8a7, 0xd8a7, 0xd8a7, 0xd8a7,
+    0xd8a7, 0xd8a7, 0xd8a7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0xff10 .. 0xffff */
+    0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120,
+    0x0120, 0x0120, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+const WCHAR wine_compatmap[1497] =
+{
+    /* index */
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0200, 0x0300, 0x0100, 0x0100, 0x0100, 0x03da, 0x04d9,
+    /* defaults */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0xf900 .. 0xf9ff */
+    0x9348, 0x6df3, 0x95c8, 0x93c5, 0x75cd, 0x552d, 0x5adf, 0xa695,
+    0xa694, 0x6048, 0x98c7, 0x5c7c, 0x603c, 0x68e9, 0x7d5b, 0x8676,
+    0x8d2f, 0x8ea9, 0x8fe6, 0x977c, 0x70ee, 0x7406, 0x77c3, 0x7ac7,
+    0x8b25, 0x9851, 0xa0d7, 0x5567, 0x5a59, 0x71e7, 0x78fd, 0x8d0e,
+    0xa4fe, 0x642f, 0x76c9, 0x8caa, 0x9040, 0x69a4, 0x88b2, 0x8ef8,
+    0x65a2, 0x6dee, 0x7440, 0x79d1, 0x97a2, 0x5659, 0x5889, 0x59af,
+    0x6b94, 0x71a2, 0x78de, 0x7db4, 0x86cd, 0x8cd1, 0x8d26, 0x94b8,
+    0x9dfa, 0xa236, 0xa4c0, 0x7f51, 0x8043, 0x8463, 0x8a8b, 0x99c5,
+    0xa53f, 0x9195, 0x5f9d, 0x65c1, 0x831c, 0x8739, 0x791c, 0x7f83,
+    0x937a, 0x9dae, 0x5f8e, 0x6317, 0x70c7, 0x748d, 0x75c1, 0x83e0,
+    0x84e7, 0x9cfa, 0x5980, 0x8738, 0x5888, 0x5877, 0x80c6, 0x8467,
+    0x8a99, 0x9d1c, 0x9226, 0x6974, 0x70a6, 0x91a1, 0x54db, 0x6288,
+    0x66b2, 0x7a26, 0x7c0e, 0x59b4, 0x7f97, 0x565a, 0x6643, 0x54a6,
+    0x7364, 0x6c0f, 0x83b8, 0x5a58, 0x5ef2, 0x7d94, 0x8adb, 0x913b,
+    0x724a, 0x963f, 0x7316, 0x698b, 0x8971, 0x6a2b, 0x7bef, 0x5537,
+    0x57f1, 0x5850, 0x6f07, 0x836c, 0x88f3, 0x9155, 0x9851, 0x5976,
+    0x5ac2, 0x5ff2, 0x656a, 0x6c42, 0x767a, 0x7fa5, 0x9c27, 0xa0e3,
+    0xa50f, 0xa545, 0x5911, 0x6d3b, 0x71eb, 0x95d5, 0x64e6, 0x6801,
+    0x6870, 0x6b09, 0x7591, 0x77b6, 0x7af5, 0x8035, 0x845e, 0x86d8,
+    0x958e, 0x8b55, 0x9689, 0x99af, 0x587b, 0x5906, 0x5b1f, 0x7729,
+    0x8f22, 0x9109, 0x6527, 0x6652, 0x69d7, 0x7209, 0x8298, 0x79ce,
+    0x553c, 0x5d50, 0x623d, 0x640f, 0x6670, 0x7a05, 0x7abb, 0x85eb,
+    0x8696, 0x9883, 0x9d44, 0x9d95, 0x9e64, 0x55d6, 0x7ff8, 0x97fd,
+    0x9d00, 0x6728, 0x54cc, 0x571f, 0x6232, 0x6282, 0x6bdb, 0x7043,
+    0x780e, 0x7c81, 0x8b3a, 0x96b9, 0xa5c9, 0x6cc3, 0x9c68, 0x58c2,
+    0x6db3, 0x6e2a, 0x7377, 0x74d1, 0x7a3d, 0x7b8c, 0x7e9d, 0x8341,
+    0x9e8e, 0x579c, 0x685c, 0x9ca5, 0x5657, 0x6344, 0x7414, 0x9553,
+    0x65b3, 0x676b, 0x6e3d, 0x79ac, 0x9caa, 0x584c, 0x5a31, 0x6286,
+    0x6c33, 0x6d6d, 0x6ec6, 0x7302, 0x7a22, 0x7bfd, 0x8593, 0x8ee8,
+    0x8ef9, 0x97e3, 0x9cf8, 0x5954, 0x74ce, 0x5a30, 0x77e2, 0x7aa9,
+    0x8c0a, 0x9cb2, 0xa265, 0xa4ac, 0x6da3, 0x73d6, 0x87f2, 0x80d4,
+    0x8128, 0x8299, 0x78c6, 0x769e, 0x915c, 0x54c3, 0x8938, 0x583b,
+    /* 0xfa00 .. 0xfaff */
+    0x5807, 0x64a5, 0x68d1, 0x82d3, 0x6181, 0x7319, 0x6cae, 0x9534,
+    0x8e44, 0x9c44, 0x8f81, 0x64c8, 0x5734, 0x5bb3, 0x0000, 0x0000,
+    0x5e4a, 0x0000, 0x6c62, 0x0000, 0x0000, 0x57c9, 0x7914, 0x7cb3,
+    0x7f24, 0x7f45, 0x7f4b, 0x7f74, 0x9d3a, 0x82a1, 0x859f, 0x0000,
+    0x8bf2, 0x0000, 0x90d6, 0x0000, 0x0000, 0x9613, 0x96d7, 0x0000,
+    0x0000, 0x0000, 0x9ec5, 0x9ed1, 0x9efc, 0xa387, 0x0000, 0x0000,
+    0x557e, 0x56b6, 0x571b, 0x5896, 0x58b0, 0x591c, 0x5b67, 0x5bcf,
+    0x5c30, 0x5e07, 0x5e6e, 0x6229, 0x6232, 0x6657, 0x672a, 0x674f,
+    0x67b2, 0x6b0e, 0x6ba0, 0x6c4e, 0x6e41, 0x7332, 0x73d4, 0x74db,
+    0x7726, 0x77e2, 0x79d8, 0x7e46, 0x7ef2, 0x7efc, 0x7efa, 0x7f01,
+    0x7f06, 0x7f0c, 0x7f3b, 0x7f3b, 0x7fec, 0x802c, 0x816a, 0x839d,
+    0x83b1, 0x83e8, 0x8518, 0x85aa, 0x8791, 0x881c, 0x881b, 0x89f8,
+    0x8eb0, 0x8f35, 0x909f, 0x90d6, 0x926f, 0x92a3, 0x9550, 0x95d1,
+    0x9c7b, 0x9d96, 0x9dd1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x53b6, 0x5744, 0x56f6, 0x550d, 0x56d1, 0x570b, 0x5851, 0x5883,
+    0x5b25, 0x5adc, 0x5b1f, 0x5b67, 0x5dde, 0x5e36, 0x5ec6, 0x5ed5,
+    0x5fe2, 0x60a7, 0x6450, 0x6456, 0x64e5, 0x6528, 0x6652, 0x66c7,
+    0x6680, 0x6705, 0x66d6, 0x6767, 0x67a8, 0x6937, 0x698e, 0x69c3,
+    0x6ac6, 0x6be3, 0x6c85, 0x6c88, 0x6cc2, 0x70e4, 0x7124, 0x72aa,
+    0x7443, 0x7432, 0x7488, 0x7583, 0x76d2, 0x7d0a, 0x7797, 0x7810,
+    0x788a, 0x79d0, 0x7a64, 0x7a98, 0x7b79, 0x7b7a, 0x7c24, 0x7c34,
+    0x7c4c, 0x7ca1, 0x7c96, 0x7e21, 0x8005, 0x8113, 0x81cd, 0x82ac,
+    0x8344, 0x848d, 0x8553, 0x889f, 0x893b, 0x8cc4, 0x8e8b, 0x8ecf,
+    0x8ede, 0x9006, 0x903e, 0x9010, 0x9045, 0x9041, 0x902f, 0x907a,
+    0x90ca, 0x9247, 0x9476, 0x95af, 0x96d5, 0x97b1, 0x9bb6, 0x9c1c,
+    0x9c8e, 0x9d12, 0x9d35, 0x9d40, 0x9d6f, 0xa045, 0xa4ce, 0x2d7b,
+    0x2d74, 0x3904, 0x40cb, 0x4545, 0x4565, 0x5774, 0x61fa, 0x83fc,
+    0xa46b, 0xa4b5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0xfe26 .. 0xfeff */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x21f5, 0x21e3, 0x21e1, 0x022c, 0x022b, 0x01f3,
+    0x01f3, 0x0244, 0x0245, 0x31db, 0x31db, 0x31d5, 0x31d5, 0x31cd,
+    0x31cd, 0x31c9, 0x31c9, 0x31cb, 0x31cb, 0x31cb, 0x31cb, 0x0000,
+    0x0000, 0x0214, 0x0215, 0x21f5, 0x21f4, 0x21f3, 0x21f2, 0x0212,
+    0x0211, 0x0210, 0x01dc, 0x31b0, 0x01dc, 0x0000, 0x01e7, 0x01e5,
+    0x01e9, 0x01ca, 0x21bc, 0x01cf, 0x01cf, 0x0220, 0x0221, 0x31b7,
+    0x31b7, 0x01c4, 0x01c6, 0x01c9, 0x01c9, 0x01ca, 0x01d8, 0x01d9,
+    0x01d7, 0x0000, 0x01f4, 0x01bb, 0x01bb, 0x01d5, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x07a1, 0x07a1, 0x07a0, 0x07a0, 0x079f, 0x079f,
+    0x079e, 0x079e, 0x079d, 0x079d, 0x079c, 0x079b, 0x079a, 0x079a,
+    0x0799, 0x0799, 0x0798, 0x0797, 0x0796, 0x0796, 0x0795, 0x0795,
+    0x0794, 0x0793, 0x0792, 0x0792, 0x0791, 0x0790, 0x078f, 0x078f,
+    0x078e, 0x078d, 0x078c, 0x078c, 0x078b, 0x078a, 0x0789, 0x0789,
+    0x0788, 0x0787, 0x0786, 0x0786, 0x0785, 0x0785, 0x0784, 0x0784,
+    0x0783, 0x0783, 0x0782, 0x0782, 0x0781, 0x0780, 0x077f, 0x077f,
+    0x077e, 0x077d, 0x077c, 0x077c, 0x077b, 0x077a, 0x0779, 0x0779,
+    0x0778, 0x0777, 0x0776, 0x0776, 0x0775, 0x0774, 0x0773, 0x0773,
+    0x0772, 0x0771, 0x0770, 0x0770, 0x076f, 0x076e, 0x076d, 0x076d,
+    0x076c, 0x076b, 0x076a, 0x0770, 0x076f, 0x076e, 0x076d, 0x076d,
+    0x076c, 0x076b, 0x076a, 0x076a, 0x0769, 0x0768, 0x0767, 0x0767,
+    0x0766, 0x0765, 0x0764, 0x0764, 0x0763, 0x0762, 0x0761, 0x0761,
+    0x0760, 0x075f, 0x075e, 0x075e, 0x075d, 0x075c, 0x075b, 0x075b,
+    0x075a, 0x075a, 0x0759, 0x0759, 0x0758, 0x0757, 0x0756, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000,
+    /* 0xff01 .. 0xffff */
+    0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120,
+    0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120,
+    0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120,
+    0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120,
+    0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120,
+    0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120,
+    0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120,
+    0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120,
+    0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120,
+    0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120,
+    0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120,
+    0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x2a26, 0x2a26,
+    0x30a1, 0x30aa, 0x30aa, 0x309d, 0x3196, 0x318c, 0x313a, 0x313b,
+    0x313c, 0x313d, 0x313e, 0x3177, 0x3178, 0x3179, 0x3154, 0x318c,
+    0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3135, 0x3136, 0x3137,
+    0x3138, 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f,
+    0x3140, 0x3142, 0x3143, 0x3144, 0x3145, 0x3145, 0x3145, 0x3145,
+    0x3145, 0x3145, 0x3147, 0x3149, 0x314b, 0x314d, 0x314f, 0x314f,
+    0x314f, 0x314f, 0x314f, 0x3150, 0x3151, 0x3152, 0x3152, 0x3152,
+    0x3152, 0x3152, 0x3152, 0x3153, 0x3156, 0x30fb, 0x30fb, 0x31c4,
+    0x3190, 0x3190, 0x3190, 0x3190, 0x3190, 0x3190, 0x3190, 0x3190,
+    0x3190, 0x3190, 0x3190, 0x3190, 0x3190, 0x3190, 0x3190, 0x3190,
+    0x3190, 0x3190, 0x3190, 0x3190, 0x3190, 0x3190, 0x3190, 0x3190,
+    0x3190, 0x3190, 0x3190, 0x3190, 0x3190, 0x3190, 0x0000, 0x0000,
+    0x0000, 0x318d, 0x318d, 0x318d, 0x318d, 0x318d, 0x318d, 0x0000,
+    0x0000, 0x318b, 0x318b, 0x318b, 0x318b, 0x318b, 0x318b, 0x0000,
+    0x0000, 0x3189, 0x3189, 0x3189, 0x3189, 0x3189, 0x3189, 0x0000,
+    0x0000, 0x3187, 0x3187, 0x3187, 0x0000, 0x0000, 0x0000, 0x00c2,
+    0x00c2, 0x00ca, 0x00cc, 0x00c2, 0x00c0, 0x20c3, 0x0000, 0x251a,
+    0x21a7, 0x21a7, 0x21a7, 0x21a7, 0x25b3, 0x25dd, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/collation.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/collation.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/collation.c	(revision 16410)
@@ -0,0 +1,1657 @@
+/* Unicode collation element table */
+/* generated from www.unicode.org/reports/tr10/allkeys.txt */
+/* DO NOT EDIT!! */
+
+const unsigned int collation_table[12800] =
+{
+    /* index */
+    0x00000200, 0x00000300, 0x00000400, 0x00000500, 0x00000600, 0x00000700, 0x00000800, 0x00000900,
+    0x00000100, 0x00000a00, 0x00000b00, 0x00000c00, 0x00000d00, 0x00000e00, 0x00000f00, 0x00001000,
+    0x00001100, 0x00001200, 0x00001300, 0x00001400, 0x00001500, 0x00001600, 0x00001700, 0x00001800,
+    0x00001900, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00001a00, 0x00001b00,
+    0x00001c00, 0x00001d00, 0x00001e00, 0x00001f00, 0x00002000, 0x00002100, 0x00002200, 0x00002300,
+    0x00002400, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00002500, 0x00002600,
+    0x00002700, 0x00002800, 0x00002900, 0x00002a00, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+    0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+    0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+    0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+    0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+    0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+    0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+    0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+    0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+    0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+    0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+    0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+    0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+    0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+    0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+    0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+    0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+    0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+    0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+    0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+    0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+    0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+    0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+    0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+    0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+    0x00000100, 0x00002b00, 0x00002c00, 0x00002d00, 0x00002e00, 0x00002f00, 0x00003000, 0x00003100,
+    /* defaults */
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x0000 .. 0x00ff */
+    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0x02010111, 0x02020111, 0x02030111, 0x02040111, 0x02050111, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    0x02090111, 0x024b0111, 0x02700111, 0x02a90111, 0x09e00111, 0x02aa0111, 0x02a70111, 0x02690111,
+    0x027a0111, 0x027b0111, 0x02a20111, 0x039f0111, 0x022d0111, 0x02210111, 0x02550111, 0x02a40111,
+    0x0a0b0111, 0x0a0c0111, 0x0a0d0111, 0x0a0e0111, 0x0a0f0111, 0x0a100111, 0x0a110111, 0x0a120111,
+    0x0a130111, 0x0a140111, 0x02370111, 0x02350111, 0x03a30111, 0x03a40111, 0x03a50111, 0x024e0111,
+    0x02a10111, 0x0a150151, 0x0a290141, 0x0a3d0151, 0x0a490151, 0x0a650151, 0x0a910151, 0x0a990151,
+    0x0ab90151, 0x0ad30161, 0x0ae70141, 0x0af70141, 0x0b030161, 0x0b2b0151, 0x0b330151, 0x0b4b0161,
+    0x0b670141, 0x0b730141, 0x0b7f0141, 0x0ba70151, 0x0bbf0151, 0x0bd70141, 0x0bef0151, 0x0bfb0141,
+    0x0c030151, 0x0c070141, 0x0c130141, 0x027c0111, 0x02a60111, 0x027d0111, 0x020f0111, 0x021b0111,
+    0x020c0111, 0x0a150111, 0x0a290111, 0x0a3d0111, 0x0a490111, 0x0a650111, 0x0a910111, 0x0a990111,
+    0x0ab90111, 0x0ad30111, 0x0ae70111, 0x0af70111, 0x0b030111, 0x0b2b0111, 0x0b330111, 0x0b4b0111,
+    0x0b670111, 0x0b730111, 0x0b7f0111, 0x0ba70111, 0x0bbf0111, 0x0bd70111, 0x0bef0111, 0x0bfb0111,
+    0x0c030111, 0x0c070111, 0x0c130111, 0x027e0111, 0x03a70111, 0x027f0111, 0x03aa0111, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x02060111, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    0x02090141, 0x024c0111, 0x09df0111, 0x09e10111, 0x09de0111, 0x09e20111, 0x03a80111, 0x029c0111,
+    0x02140111, 0x029f0111, 0x0a150181, 0x02780111, 0x03a60111, 0x02200111, 0x02a00111, 0x02100111,
+    0x030a0111, 0x03a00111, 0x0a0d0151, 0x0a0e0151, 0x020d0111, 0x0c9f0121, 0x029d0111, 0x025f0111,
+    0x02190111, 0x0a0c0151, 0x0b4b01a1, 0x02790111, 0x0a0c0171, 0x0a0c0171, 0x0a0e0171, 0x024f0111,
+    0x0a150151, 0x0a150151, 0x0a150151, 0x0a150151, 0x0a150151, 0x0a150151, 0x0a190121, 0x0a3d0151,
+    0x0a650151, 0x0a650151, 0x0a650151, 0x0a650151, 0x0ad30161, 0x0ad30161, 0x0ad30161, 0x0ad30161,
+    0x0a5d0121, 0x0b330151, 0x0b4b0161, 0x0b4b0161, 0x0b4b0161, 0x0b4b0161, 0x0b4b0161, 0x03a20111,
+    0x0b530121, 0x0bd70141, 0x0bd70141, 0x0bd70141, 0x0bd70141, 0x0c070141, 0x0c3b0121, 0x0ba70131,
+    0x0a150111, 0x0a150111, 0x0a150111, 0x0a150111, 0x0a150111, 0x0a150111, 0x0a190111, 0x0a3d0111,
+    0x0a650111, 0x0a650111, 0x0a650111, 0x0a650111, 0x0ad30111, 0x0ad30111, 0x0ad30111, 0x0ad30111,
+    0x0a5d0111, 0x0b330111, 0x0b4b0111, 0x0b4b0111, 0x0b4b0111, 0x0b4b0111, 0x0b4b0111, 0x03a10111,
+    0x0b530111, 0x0bd70111, 0x0bd70111, 0x0bd70111, 0x0bd70111, 0x0c070111, 0x0c3b0111, 0x0c070111,
+    /* 0x0100 .. 0x01ff */
+    0x0a150151, 0x0a150111, 0x0a150151, 0x0a150111, 0x0a150151, 0x0a150111, 0x0a3d0151, 0x0a3d0111,
+    0x0a3d0151, 0x0a3d0111, 0x0a3d0151, 0x0a3d0111, 0x0a3d0151, 0x0a3d0111, 0x0a490151, 0x0a490111,
+    0x0a4d0121, 0x0a4d0111, 0x0a650151, 0x0a650111, 0x0a650151, 0x0a650111, 0x0a650151, 0x0a650111,
+    0x0a650151, 0x0a650111, 0x0a650151, 0x0a650111, 0x0a990151, 0x0a990111, 0x0a990151, 0x0a990111,
+    0x0a990151, 0x0a990111, 0x0a990151, 0x0a990111, 0x0ab90151, 0x0ab90111, 0x0ac50131, 0x0ac50111,
+    0x0ad30161, 0x0ad30111, 0x0ad30161, 0x0ad30111, 0x0ad30161, 0x0ad30111, 0x0ad30161, 0x0ad30111,
+    0x0ad30161, 0x0ad70111, 0x0ad30181, 0x0ad30131, 0x0ae70141, 0x0ae70111, 0x0af70141, 0x0af70111,
+    0x0b7b0111, 0x0b030161, 0x0b030111, 0x0b030161, 0x0b030111, 0x0b030161, 0x0b030111, 0x0b030181,
+    0x0b030131, 0x0b0b0121, 0x0b0b0111, 0x0b330151, 0x0b330111, 0x0b330151, 0x0b330111, 0x0b330151,
+    0x0b330111, 0x0c580121, 0x0b470121, 0x0b470111, 0x0b4b0161, 0x0b4b0111, 0x0b4b0161, 0x0b4b0111,
+    0x0b4b0161, 0x0b4b0111, 0x0b4b0181, 0x0b4b0131, 0x0b7f0141, 0x0b7f0111, 0x0b7f0141, 0x0b7f0111,
+    0x0b7f0141, 0x0b7f0111, 0x0ba70151, 0x0ba70111, 0x0ba70151, 0x0ba70111, 0x0ba70151, 0x0ba70111,
+    0x0ba70151, 0x0ba70111, 0x0bbf0151, 0x0bbf0111, 0x0bbf0151, 0x0bbf0111, 0x0bc30121, 0x0bc30111,
+    0x0bd70141, 0x0bd70111, 0x0bd70141, 0x0bd70111, 0x0bd70141, 0x0bd70111, 0x0bd70141, 0x0bd70111,
+    0x0bd70141, 0x0bd70111, 0x0bd70141, 0x0bd70111, 0x0bfb0141, 0x0bfb0111, 0x0c070141, 0x0c070111,
+    0x0c070141, 0x0c130141, 0x0c130111, 0x0c130141, 0x0c130111, 0x0c130141, 0x0c130111, 0x0ba70131,
+    0x0a310111, 0x0a350121, 0x0a390121, 0x0a390111, 0x0c4f0121, 0x0c4f0111, 0x0b570121, 0x0a410121,
+    0x0a410111, 0x0a510121, 0x0a550121, 0x0a590121, 0x0a590111, 0x0a610111, 0x0a690121, 0x0a6d0121,
+    0x0a710121, 0x0a950121, 0x0a950111, 0x0aa50121, 0x0aad0121, 0x0ac10111, 0x0ae30121, 0x0adf0121,
+    0x0afb0121, 0x0afb0111, 0x0b0f0111, 0x0b230111, 0x0be30121, 0x0b3b0121, 0x0b3f0111, 0x0b5b0121,
+    0x0b4b0161, 0x0b4b0111, 0x0ab50121, 0x0ab50111, 0x0b6b0121, 0x0b6b0111, 0x0b830121, 0x0c470121,
+    0x0c470111, 0x0baf0121, 0x0bb30111, 0x0bc70111, 0x0bcb0121, 0x0bcb0111, 0x0bcf0121, 0x0bd70141,
+    0x0bd70111, 0x0beb0121, 0x0bf30121, 0x0c0f0121, 0x0c0f0111, 0x0c170121, 0x0c170111, 0x0c270121,
+    0x0c2b0121, 0x0c2b0111, 0x0c2f0111, 0x0c430111, 0x0c4b0121, 0x0c4b0111, 0x0c610111, 0x0c3f0111,
+    0x0c710111, 0x0c750111, 0x0c790111, 0x0c7d0111, 0x0a490171, 0x0a490171, 0x0a490131, 0x0b030181,
+    0x0b030181, 0x0b030131, 0x0b330171, 0x0b330171, 0x0b330131, 0x0a150151, 0x0a150111, 0x0ad30161,
+    0x0ad30111, 0x0b4b0161, 0x0b4b0111, 0x0bd70141, 0x0bd70111, 0x0bd70141, 0x0bd70111, 0x0bd70141,
+    0x0bd70111, 0x0bd70141, 0x0bd70111, 0x0bd70141, 0x0bd70111, 0x0a690111, 0x0a150151, 0x0a150111,
+    0x0a150151, 0x0a150111, 0x0a190121, 0x0a190111, 0x0aa10121, 0x0aa10111, 0x0a990151, 0x0a990111,
+    0x0af70141, 0x0af70111, 0x0b4b0161, 0x0b4b0111, 0x0b4b0161, 0x0b4b0111, 0x0c270121, 0x0c270111,
+    0x0ae70111, 0x0a490171, 0x0a490171, 0x0a490131, 0x0a990151, 0x0a990111, 0x0ac10121, 0x0c3f0121,
+    0x0b330151, 0x0b330111, 0x0a150151, 0x0a150111, 0x0a190121, 0x0a190111, 0x0b530121, 0x0b530111,
+    /* 0x0200 .. 0x02ff */
+    0x0a150151, 0x0a150111, 0x0a150151, 0x0a150111, 0x0a650151, 0x0a650111, 0x0a650151, 0x0a650111,
+    0x0ad30161, 0x0ad30111, 0x0ad30161, 0x0ad30111, 0x0b4b0161, 0x0b4b0111, 0x0b4b0161, 0x0b4b0111,
+    0x0b7f0141, 0x0b7f0111, 0x0b7f0141, 0x0b7f0111, 0x0bd70141, 0x0bd70111, 0x0bd70141, 0x0bd70111,
+    0x0ba70151, 0x0ba70111, 0x0bbf0151, 0x0bbf0111, 0x0c370121, 0x0c370111, 0x0ab90151, 0x0ab90111,
+    0xffffffff, 0xffffffff, 0x0b630121, 0x0b630111, 0x0c1b0121, 0x0c1b0111, 0x0a150151, 0x0a150111,
+    0x0a650151, 0x0a650111, 0x0b4b0161, 0x0b4b0111, 0x0b4b0161, 0x0b4b0111, 0x0b4b0161, 0x0b4b0111,
+    0x0b4b0161, 0x0b4b0111, 0x0c070141, 0x0c070111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x0a1d0111, 0x0a210111, 0x0a250111, 0x0a350111, 0x0b570111, 0x0a450111, 0x0a510111, 0x0a550111,
+    0x0a750111, 0x0a6d0111, 0x0a790111, 0x0a710111, 0x0a7d0111, 0x0a810111, 0x0a850111, 0x0aef0111,
+    0x0aa50111, 0x0ab10111, 0x0a9d0111, 0x0aad0111, 0x0a8d0111, 0x0bdf0111, 0x0ac90111, 0x0acd0111,
+    0x0adf0111, 0x0ae30111, 0x0adb0111, 0x0b130111, 0x0b170111, 0x0b1b0111, 0x0b1f0111, 0x0be30111,
+    0x0be70111, 0x0b2f0111, 0x0b3b0111, 0x0b430111, 0x0b370111, 0x0b5b0111, 0x0b4f0111, 0x0b5f0111,
+    0x0b6f0111, 0x0b870111, 0x0b8b0111, 0x0b8f0111, 0x0b930111, 0x0b970111, 0x0b9b0111, 0x0b9f0111,
+    0x0b830111, 0x0ba30111, 0x0bab0111, 0x0baf0111, 0x0af30111, 0x0bb70111, 0x0bbb0111, 0x0bd30111,
+    0x0bcf0111, 0x0bdb0111, 0x0beb0111, 0x0bf30111, 0x0bf70111, 0x0bff0111, 0x0b270111, 0x0c0b0111,
+    0x0c1f0111, 0x0c230111, 0x0c270111, 0x0c330111, 0x0c530111, 0x0c5b0111, 0x0c6d0111, 0x0c810111,
+    0x0c850111, 0x0a2d0111, 0x0a890111, 0x0aa90111, 0x0abd0111, 0x0aeb0111, 0x0aff0111, 0x0b070111,
+    0x0b770111, 0x0c650111, 0x0c690111, 0x0a490131, 0x0a490131, 0x0a490131, 0x0bbf0131, 0x0bbf0131,
+    0x0bbf0131, 0x0a910131, 0x0b030131, 0x0b030131, 0x0c890111, 0x0c8d0111, 0xffffffff, 0xffffffff,
+    0x0ab90191, 0x0ac90121, 0x0ae70171, 0x0b7f0191, 0x0b870121, 0x0b8f0121, 0x0ba30121, 0x0bfb0171,
+    0x0c070171, 0x02e90111, 0x02eb0111, 0x0ad10111, 0x0c580111, 0x0ad20111, 0x0c5a0111, 0x0c5f0111,
+    0x0c570111, 0x0c600111, 0x02ec0111, 0x02ed0111, 0x02ee0111, 0x02ef0111, 0x02f00111, 0x02f10111,
+    0x02f20111, 0x02f30111, 0x02f40111, 0x02f50111, 0x02f60111, 0x02f70111, 0x02f80111, 0x02f90111,
+    0x09d30111, 0x09d40111, 0x02fa0111, 0x02fb0111, 0x02fc0111, 0x02fd0111, 0x02fe0111, 0x02ff0111,
+    0x02120111, 0x02130111, 0x02150111, 0x021a0111, 0x020e0111, 0x02160111, 0x03000111, 0xffffffff,
+    0x0aad0131, 0x0b0301b1, 0x0ba70181, 0x0c030191, 0x0c5b0121, 0x03010111, 0x03020111, 0x03030111,
+    0x03040111, 0x03050111, 0x03060111, 0x03070111, 0x03080111, 0x03090111, 0x0c590111, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x0300 .. 0x03ff */
+    0x00000611, 0x00000511, 0x00000811, 0x00000e11, 0x00001311, 0x00001411, 0x00000711, 0x00000f11,
+    0x00000c11, 0x00001511, 0x00000a11, 0x00000d11, 0x00000911, 0x00001611, 0x00001711, 0x00001811,
+    0x00001911, 0x00001a11, 0x00001b11, 0x00000311, 0x00000411, 0x00001c11, 0x00001d11, 0x00001e11,
+    0x00001f11, 0x00002011, 0x00002111, 0x00002211, 0x00002311, 0x00002411, 0x00002511, 0x00002611,
+    0x00002711, 0x00002811, 0x00002911, 0x00002a11, 0x00002b11, 0x00002c11, 0x00002d11, 0x00001111,
+    0x00001211, 0x00002e11, 0x00002f11, 0x00003011, 0x00003111, 0x00003211, 0x00003311, 0x00003411,
+    0x00003511, 0x00003611, 0x00000211, 0x00003711, 0x00003811, 0x00003911, 0x00003a11, 0x00003b11,
+    0x00001011, 0x00003c11, 0x00003d11, 0x00003e11, 0x00003f11, 0x00004011, 0x00004111, 0x00004211,
+    0x00000611, 0x00000511, 0x00000b11, 0x00000311, 0x00000c11, 0x00004311, 0x00004411, 0x00004511,
+    0x00004611, 0x00004711, 0x00004811, 0x00004911, 0x00004a11, 0x00004b11, 0x00004c11, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x00004d11, 0x00004e11, 0x00004f11, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x02e90111, 0x02ea0111, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0x0c9b0111, 0xffffffff, 0xffffffff, 0xffffffff, 0x02350111, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x020d0111, 0x02140111, 0x0c910121, 0x025f0111,
+    0x0c950131, 0x0c990121, 0x0c9b0121, 0xffffffff, 0x0ca20121, 0xffffffff, 0x0ca80121, 0x0cac0121,
+    0x0c9b0111, 0x0c910121, 0x0c920131, 0x0c930121, 0x0c940121, 0x0c950131, 0x0c980121, 0x0c990121,
+    0x0c9a0131, 0x0c9b0121, 0x0c9d0131, 0x0c9e0121, 0x0c9f0131, 0x0ca00121, 0x0ca10121, 0x0ca20121,
+    0x0ca30131, 0x0ca50131, 0xffffffff, 0x0ca60131, 0x0ca70121, 0x0ca80121, 0x0ca90131, 0x0caa0121,
+    0x0cab0121, 0x0cac0121, 0x0c9b0121, 0x0ca80121, 0x0c910111, 0x0c950111, 0x0c990111, 0x0c9b0111,
+    0x0ca80111, 0x0c910111, 0x0c920111, 0x0c930111, 0x0c940111, 0x0c950111, 0x0c980111, 0x0c990111,
+    0x0c9a0111, 0x0c9b0111, 0x0c9d0111, 0x0c9e0111, 0x0c9f0111, 0x0ca00111, 0x0ca10111, 0x0ca20111,
+    0x0ca30111, 0x0ca50111, 0x0ca60141, 0x0ca60111, 0x0ca70111, 0x0ca80111, 0x0ca90111, 0x0caa0111,
+    0x0cab0111, 0x0cac0111, 0x0c9b0111, 0x0ca80111, 0x0ca20111, 0x0ca80111, 0x0cac0111, 0xffffffff,
+    0x0c920121, 0x0c9a0121, 0x0ca80131, 0x0ca80131, 0x0ca80131, 0x0ca90121, 0x0ca30121, 0x0c9d0121,
+    0xffffffff, 0xffffffff, 0x0c970121, 0x0c970111, 0x0c960121, 0x0c960111, 0x0ca40121, 0x0ca40111,
+    0x0cad0121, 0x0cad0111, 0x0cae0121, 0x0cae0111, 0x0caf0121, 0x0caf0111, 0x0cb00121, 0x0cb00111,
+    0x0cb10121, 0x0cb10111, 0x0cb20121, 0x0cb20111, 0x0cb30121, 0x0cb30111, 0x0cb40121, 0x0cb40111,
+    0x0c9d0121, 0x0ca50121, 0x0ca60121, 0x0c9c0111, 0x0c9a0141, 0x0c950121, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x0400 .. 0x04ff */
+    0x0cf10121, 0x0cf10121, 0x0ce50121, 0x0ce90121, 0x0cf90121, 0x0d110121, 0x0d210121, 0x0d250121,
+    0x0d2d0121, 0x0d4d0121, 0x0d650121, 0x0d9d0121, 0x0da10121, 0x0d190121, 0x0da90121, 0x0e050121,
+    0x0cb50121, 0x0ccd0121, 0x0cd10121, 0x0cd50131, 0x0ce10121, 0x0cf10121, 0x0cfd0121, 0x0d090121,
+    0x0d190121, 0x0d290121, 0x0d310121, 0x0d490121, 0x0d510121, 0x0d550121, 0x0d690121, 0x0d790121,
+    0x0d850121, 0x0d8d0121, 0x0d950121, 0x0da50121, 0x0dc10121, 0x0dc50121, 0x0de10121, 0x0de90121,
+    0x0e090121, 0x0e0d0121, 0x0e110121, 0x0e150121, 0x0e1d0121, 0x0e290121, 0x0e310121, 0x0e350121,
+    0x0cb50111, 0x0ccd0111, 0x0cd10111, 0x0cd50111, 0x0ce10111, 0x0cf10111, 0x0cfd0111, 0x0d090111,
+    0x0d190111, 0x0d290111, 0x0d310111, 0x0d490111, 0x0d510111, 0x0d550111, 0x0d690111, 0x0d790111,
+    0x0d850111, 0x0d8d0111, 0x0d950111, 0x0da50111, 0x0dc10111, 0x0dc50111, 0x0de10111, 0x0de90111,
+    0x0e090111, 0x0e0d0111, 0x0e110111, 0x0e150111, 0x0e1d0111, 0x0e290111, 0x0e310111, 0x0e350111,
+    0x0cf10111, 0x0cf10111, 0x0ce50111, 0x0ce90111, 0x0cf90111, 0x0d110111, 0x0d210111, 0x0d250111,
+    0x0d2d0111, 0x0d4d0111, 0x0d650111, 0x0d9d0111, 0x0da10111, 0x0d190111, 0x0da90111, 0x0e050111,
+    0x0dd10121, 0x0dd10111, 0x0e250121, 0x0e250111, 0x0e390121, 0x0e390111, 0x0e3d0121, 0x0e3d0111,
+    0x0e450121, 0x0e450111, 0x0e410121, 0x0e410111, 0x0e490121, 0x0e490111, 0x0e4d0121, 0x0e4d0111,
+    0x0e510121, 0x0e510111, 0x0e550121, 0x0e550111, 0x0e590121, 0x0e590111, 0x0e5d0121, 0x0e5d0111,
+    0x0dbd0121, 0x0dbd0111, 0x0ddd0121, 0x0ddd0111, 0x0dd90121, 0x0dd90111, 0x0dd50121, 0x0dd50111,
+    0x0d810121, 0x0d810111, 0x030b0111, 0x00005411, 0x00005511, 0x00005611, 0x00005711, 0xffffffff,
+    0x00000001, 0x00000001, 0xffffffff, 0xffffffff, 0x0e210121, 0x0e210111, 0x0d890121, 0x0d890111,
+    0x0cd50141, 0x0cd50121, 0x0cd90121, 0x0cd90111, 0x0cdd0121, 0x0cdd0111, 0x0d050121, 0x0d050111,
+    0x0ced0121, 0x0ced0111, 0x0d350121, 0x0d350111, 0x0d450121, 0x0d450111, 0x0d410121, 0x0d410111,
+    0x0d3d0121, 0x0d3d0111, 0x0d590121, 0x0d590111, 0x0d610121, 0x0d610111, 0x0d7d0121, 0x0d7d0111,
+    0x0e610121, 0x0e610111, 0x0d910121, 0x0d910111, 0x0d990121, 0x0d990111, 0x0db50121, 0x0db50111,
+    0x0db90121, 0x0db90111, 0x0dc90121, 0x0dc90111, 0x0de50121, 0x0de50111, 0x0df10121, 0x0df10111,
+    0x0df90121, 0x0df90111, 0x0dcd0121, 0x0dcd0111, 0x0dfd0121, 0x0dfd0111, 0x0e010121, 0x0e010111,
+    0x0e650111, 0x0cfd0121, 0x0cfd0111, 0x0d390121, 0x0d390111, 0xffffffff, 0xffffffff, 0x0d5d0121,
+    0x0d5d0111, 0xffffffff, 0xffffffff, 0x0df50121, 0x0df50111, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x0cb90121, 0x0cb90111, 0x0cbd0121, 0x0cbd0111, 0x0cc90121, 0x0cc90111, 0x0cf50121, 0x0cf50111,
+    0x0cc10121, 0x0cc10111, 0x0cc50121, 0x0cc50111, 0x0d010121, 0x0d010111, 0x0d0d0121, 0x0d0d0111,
+    0x0d150121, 0x0d150111, 0x0d190121, 0x0d190111, 0x0d1d0121, 0x0d1d0111, 0x0d6d0121, 0x0d6d0111,
+    0x0d710121, 0x0d710111, 0x0d750121, 0x0d750111, 0x0e2d0121, 0x0e2d0111, 0x0da50121, 0x0da50111,
+    0x0dad0121, 0x0dad0111, 0x0db10121, 0x0db10111, 0x0ded0121, 0x0ded0111, 0xffffffff, 0xffffffff,
+    0x0e190121, 0x0e190111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x0500 .. 0x05ff */
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0x0e900121, 0x0e910121, 0x0e920121, 0x0e930121, 0x0e940131, 0x0e950121, 0x0e960121,
+    0x0e970121, 0x0e980121, 0x0e990121, 0x0e9a0121, 0x0e9b0121, 0x0e9c0121, 0x0e9d0121, 0x0e9e0121,
+    0x0e9f0121, 0x0ea00121, 0x0ea10121, 0x0ea20121, 0x0ea30131, 0x0ea40121, 0x0ea50121, 0x0ea60121,
+    0x0ea70121, 0x0ea80121, 0x0ea90121, 0x0eaa0121, 0x0eab0121, 0x0eac0121, 0x0ead0131, 0x0eae0121,
+    0x0eaf0121, 0x0eb00121, 0x0eb10121, 0x0eb20121, 0x0eb30121, 0x0eb40121, 0x0eb50121, 0xffffffff,
+    0xffffffff, 0x0eb60111, 0x02bf0111, 0x02c00111, 0x024d0111, 0x022e0111, 0x02500111, 0x02c10111,
+    0xffffffff, 0x0e900111, 0x0e910111, 0x0e920111, 0x0e930111, 0x0e940111, 0x0e950111, 0x0e960111,
+    0x0e970111, 0x0e980111, 0x0e990111, 0x0e9a0111, 0x0e9b0111, 0x0e9c0111, 0x0e9d0111, 0x0e9e0111,
+    0x0e9f0111, 0x0ea00111, 0x0ea10111, 0x0ea20111, 0x0ea30111, 0x0ea40111, 0x0ea50111, 0x0ea60111,
+    0x0ea70111, 0x0ea80111, 0x0ea90111, 0x0eaa0111, 0x0eab0111, 0x0eac0111, 0x0ead0111, 0x0eae0111,
+    0x0eaf0111, 0x0eb00111, 0x0eb10111, 0x0eb20111, 0x0eb30111, 0x0eb40111, 0x0eb50111, 0x0e940121,
+    0xffffffff, 0x02380111, 0x02220111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001,
+    0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001,
+    0x00000001, 0x00000001, 0xffffffff, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001,
+    0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001,
+    0x00005811, 0x00005911, 0x00005a11, 0x00005b11, 0x00005c11, 0x00005d11, 0x00005e11, 0x00005f11,
+    0x00006011, 0x00006111, 0xffffffff, 0x00006211, 0x00006311, 0x00000001, 0x02c20111, 0x00006411,
+    0x02c30111, 0x00006511, 0x00006611, 0x02c40111, 0x00000001, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x0eb70111, 0x0eb80111, 0x0eb90111, 0x0eba0111, 0x0ebb0111, 0x0ebc0111, 0x0ebd0111, 0x0ebe0111,
+    0x0ebf0111, 0x0ec00111, 0x0ec10131, 0x0ec10111, 0x0ec20111, 0x0ec30131, 0x0ec30111, 0x0ec40121,
+    0x0ec40111, 0x0ec50111, 0x0ec60111, 0x0ec70121, 0x0ec70111, 0x0ec80121, 0x0ec80111, 0x0ec90111,
+    0x0eca0111, 0x0ecb0111, 0x0ecc0111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x0ebc0121, 0x0ebc0121, 0x0ec00121, 0x02c50111, 0x02c60111, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x0600 .. 0x06ff */
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x022f0111, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0x02360111, 0xffffffff, 0xffffffff, 0xffffffff, 0x02510111,
+    0xffffffff, 0x0ecd0111, 0x0ece0111, 0x0ecf0111, 0x0ed20111, 0x0ed30111, 0x0ed50111, 0x0ed60111,
+    0x0ed70111, 0x0edb0111, 0x0edc0111, 0x0edd0111, 0x0ee30111, 0x0ee90111, 0x0eea0111, 0x0eee0111,
+    0x0eef0111, 0x0ef90111, 0x0efa0111, 0x0f040111, 0x0f050111, 0x0f0a0111, 0x0f0b0111, 0x0f0f0111,
+    0x0f100111, 0x0f120111, 0x0f130111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x020b0111, 0x0f160111, 0x0f1d0111, 0x0f200111, 0x0f2d0111, 0x0f320111, 0x0f330111, 0x0f390111,
+    0x0f3e0111, 0x0f480111, 0x0f490111, 0x00006811, 0x00006911, 0x00006a11, 0x00006b11, 0x00006c11,
+    0x00006d11, 0x00006e11, 0x00006f11, 0x00007011, 0x00007111, 0x00007211, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x0a0b0111, 0x0a0c0111, 0x0a0d0111, 0x0a0e0111, 0x0a0f0111, 0x0a100111, 0x0a110111, 0x0a120111,
+    0x0a130111, 0x0a140111, 0x02ab0111, 0x02300111, 0x02310111, 0x02a30111, 0xffffffff, 0xffffffff,
+    0x00007311, 0x0ed10111, 0x0ed00111, 0x0ed40111, 0x0ecd0111, 0x0ed60121, 0x0f3e0121, 0x0f420121,
+    0x0f490121, 0x0ede0111, 0x0edf0111, 0x0ed80111, 0x0ee00111, 0x0ee10111, 0x0ed90111, 0x0ee20111,
+    0x0eda0111, 0x0eeb0111, 0x0eec0111, 0x0ee40111, 0x0ee50111, 0x0eed0111, 0x0ee60111, 0x0ee80111,
+    0x0ef00111, 0x0ef10111, 0x0ef20111, 0x0ef30111, 0x0ef40111, 0x0ef50111, 0x0ef60111, 0x0ef70111,
+    0x0ef80111, 0x0efb0111, 0x0efc0111, 0x0efd0111, 0x0efe0111, 0x0eff0111, 0x0f000111, 0x0f010111,
+    0x0f020111, 0x0f030111, 0x0f060111, 0x0f070111, 0x0f080111, 0x0f0c0111, 0x0f0d0111, 0x0f110111,
+    0x0f140111, 0x0f170111, 0x0f180111, 0x0f190111, 0x0f1a0111, 0x0f1b0111, 0x0f1c0111, 0x0f1e0111,
+    0x0f1f0111, 0x0f210111, 0x0f220111, 0x0f230111, 0x0f240111, 0x0f250111, 0x0f260111, 0x0f270111,
+    0x0f280111, 0x0f290111, 0x0f2a0111, 0x0f2b0111, 0x0f2c0111, 0x0f2e0111, 0x0f2f0111, 0x0f300111,
+    0x0f310111, 0x0f380111, 0x0f340111, 0x0f350111, 0x0f360111, 0x0f370111, 0x0f3a0111, 0x0ee70111,
+    0x0f3d0111, 0x0f3b0111, 0x0f3b0111, 0x0f3c0111, 0x0f3f0111, 0x0f400111, 0x0f410111, 0x0f420111,
+    0x0f430111, 0x0f440111, 0x0f450111, 0x0f460111, 0x0f4a0111, 0x0f4b0111, 0x0f4c0111, 0x0f470111,
+    0x0f4d0111, 0x0f4e0111, 0x0f4f0111, 0x0f4f0111, 0x02570111, 0x0f3d0111, 0x00007411, 0x00007511,
+    0x00007611, 0x00007711, 0x00007811, 0x00007911, 0x00007a11, 0x00000001, 0x00000001, 0x00000001,
+    0x00000001, 0x00007b11, 0x00007c11, 0x00007d11, 0x00007e11, 0x0f3e0121, 0x0f490121, 0x00007f11,
+    0x00008011, 0x030c0111, 0x00000001, 0x00000001, 0x00000001, 0x00008111, 0xffffffff, 0xffffffff,
+    0x0a0b0111, 0x0a0c0111, 0x0a0d0111, 0x0a0e0111, 0x0a0f0111, 0x0a100111, 0x0a110111, 0x0a120111,
+    0x0a130111, 0x0a140111, 0x0f090111, 0x0f0e0111, 0x0f150111, 0x0ecd0121, 0x0f320121, 0xffffffff,
+    /* 0x0700 .. 0x07ff */
+    0x02660111, 0x02580111, 0x02590111, 0x02390111, 0x023a0111, 0x023b0111, 0x023c0111, 0x023d0111,
+    0x023e0111, 0x02520111, 0x02c70111, 0x02c80111, 0x02c90111, 0x02ca0111, 0xffffffff, 0x00000000,
+    0x0f500111, 0x00008211, 0x0f510111, 0x0f520111, 0x0f520121, 0x0f530111, 0x0f540111, 0x0f550111,
+    0x0f560111, 0x0f570111, 0x0f580111, 0x0f590111, 0x0f590121, 0x0f5a0111, 0x0f5b0111, 0x0f5c0111,
+    0x0f5d0111, 0x0f5e0111, 0x0f5f0111, 0x0f600111, 0x0f600121, 0x0f610111, 0x0f620111, 0x0f620121,
+    0x0f630111, 0x0f640111, 0x0f650111, 0x0f660111, 0x0f670111, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x00008311, 0x00008411, 0x00008511, 0x00008611, 0x00008711, 0x00008811, 0x00008911, 0x00008a11,
+    0x00008b11, 0x00008c11, 0x00008d11, 0x00008e11, 0x00008f11, 0x00009011, 0x00009111, 0x00009211,
+    0x00009311, 0x00009411, 0x00009511, 0x00009611, 0x00009711, 0x00009811, 0x00009911, 0x00009a11,
+    0x00009b11, 0x00009c11, 0x00009d11, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x0f680111, 0x0f6b0111, 0x0f6c0111, 0x0f6d0111, 0x0f6f0111, 0x0f700111, 0x0f710111, 0x0f720111,
+    0x0f750111, 0x0f770111, 0x0f780111, 0x0f790111, 0x0f7b0111, 0x0f7f0111, 0x0f800111, 0x0f820111,
+    0x0f830111, 0x0f870111, 0x0f880111, 0x0f890111, 0x0f8a0111, 0x0f8b0111, 0x0f8c0111, 0x0f8d0111,
+    0x0f7c0111, 0x0f690111, 0x0f6a0111, 0x0f7a0111, 0x0f6e0111, 0x0f840111, 0x0f850111, 0x0f860111,
+    0x0f7d0111, 0x0f7e0111, 0x0f730111, 0x0f740111, 0x0f810111, 0x0f760111, 0x0f8e0111, 0x0f8f0111,
+    0x0f900111, 0x0f910111, 0x0f920111, 0x0f930111, 0x0f940111, 0x0f950111, 0x0f960111, 0x0f970111,
+    0x0f980111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x0900 .. 0x09ff */
+    0xffffffff, 0x00009f11, 0x0000a011, 0x0000a111, 0xffffffff, 0x10d70111, 0x10d80111, 0x10d90111,
+    0x10da0111, 0x10db0111, 0x10dc0111, 0x10dd0111, 0x10df0111, 0x10e10111, 0x10e20111, 0x10e30111,
+    0x10e40111, 0x10e50111, 0x10e60111, 0x10e70111, 0x10e80111, 0x10e90111, 0x10ea0111, 0x10eb0111,
+    0x10ec0111, 0x10ed0111, 0x10ee0111, 0x10ef0111, 0x10f00111, 0x10f10111, 0x10f20111, 0x10f30111,
+    0x10f40111, 0x10f50111, 0x10f60111, 0x10f70111, 0x10f80111, 0x10f90111, 0x10fa0111, 0x10fb0111,
+    0x10fc0111, 0x10fc0111, 0x10fd0111, 0x10fe0111, 0x10ff0111, 0x11000111, 0x11010111, 0x11020111,
+    0x11030111, 0x11030111, 0x11040111, 0x11050111, 0x11050111, 0x11060111, 0x11070111, 0x11080111,
+    0x11090111, 0x110a0111, 0xffffffff, 0xffffffff, 0x00009e11, 0x110b0111, 0x110c0111, 0x110d0111,
+    0x110e0111, 0x110f0111, 0x11100111, 0x11110111, 0x11120111, 0x11150111, 0x11160111, 0x11170111,
+    0x11180111, 0x11190111, 0x111a0111, 0x111b0111, 0x111c0111, 0x111d0111, 0xffffffff, 0xffffffff,
+    0x10d60111, 0x0000a211, 0x0000a311, 0x0000a411, 0x0000a511, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x10e90111, 0x10ea0111, 0x10eb0111, 0x10f00111, 0x10f50111, 0x10f60111, 0x10fe0111, 0x11020111,
+    0x10de0111, 0x10e00111, 0x11130111, 0x11140111, 0x02600111, 0x02610111, 0x0a0b0111, 0x0a0c0111,
+    0x0a0d0111, 0x0a0e0111, 0x0a0f0111, 0x0a100111, 0x0a110111, 0x0a120111, 0x0a130111, 0x0a140111,
+    0x02cd0111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0x0000a711, 0x0000a811, 0x0000a911, 0xffffffff, 0x111e0111, 0x111f0111, 0x11200111,
+    0x11210111, 0x11220111, 0x11230111, 0x11240111, 0x11260111, 0xffffffff, 0xffffffff, 0x11280111,
+    0x11290111, 0xffffffff, 0xffffffff, 0x112a0111, 0x112b0111, 0x112c0111, 0x112d0111, 0x112e0111,
+    0x112f0111, 0x11300111, 0x11310111, 0x11320111, 0x11330111, 0x11340111, 0x11350111, 0x11360111,
+    0x11370111, 0x11380111, 0x11390111, 0x113a0111, 0x113b0111, 0x113c0111, 0x113d0111, 0x113e0111,
+    0x113f0111, 0xffffffff, 0x11400111, 0x11410111, 0x11420111, 0x11430111, 0x11440111, 0x11450111,
+    0x11460111, 0xffffffff, 0x11480111, 0xffffffff, 0xffffffff, 0xffffffff, 0x114a0111, 0x114b0111,
+    0x114c0111, 0x114d0111, 0xffffffff, 0xffffffff, 0x0000a611, 0xffffffff, 0x114e0111, 0x114f0111,
+    0x11500111, 0x11510111, 0x11520111, 0x11530111, 0x11540111, 0xffffffff, 0xffffffff, 0x11570111,
+    0x11580111, 0xffffffff, 0xffffffff, 0x11590111, 0x115a0111, 0x115b0111, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x115c0111,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x11380111, 0x11390111, 0xffffffff, 0x11450111,
+    0x11250111, 0x11270111, 0x11550111, 0x11560111, 0xffffffff, 0xffffffff, 0x0a0b0111, 0x0a0c0111,
+    0x0a0d0111, 0x0a0e0111, 0x0a0f0111, 0x0a100111, 0x0a110111, 0x0a120111, 0x0a130111, 0x0a140111,
+    0x11470111, 0x11490111, 0x09e30111, 0x09e40111, 0x0a0c0111, 0x0a0d0111, 0x0a0e0111, 0x0a0f0111,
+    0x09c10111, 0x09c20111, 0x030d0111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x0a00 .. 0x0aff */
+    0xffffffff, 0xffffffff, 0x0000ab11, 0xffffffff, 0xffffffff, 0x11620111, 0x11630111, 0x11670111,
+    0x11680111, 0x115f0111, 0x11600111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x11690111,
+    0x11640111, 0xffffffff, 0xffffffff, 0x11610111, 0x11650111, 0x116c0111, 0x116d0111, 0x116e0111,
+    0x116f0111, 0x11700111, 0x11710111, 0x11720111, 0x11730111, 0x11740111, 0x11750111, 0x11760111,
+    0x11770111, 0x11780111, 0x11790111, 0x117a0111, 0x117b0111, 0x117c0111, 0x117d0111, 0x117e0111,
+    0x117f0111, 0xffffffff, 0x11800111, 0x11810111, 0x11820111, 0x11830111, 0x11840111, 0x11850111,
+    0x11860111, 0xffffffff, 0x11870111, 0x11870111, 0xffffffff, 0x11880111, 0x116a0111, 0xffffffff,
+    0x116a0111, 0x116b0111, 0xffffffff, 0xffffffff, 0x0000aa11, 0xffffffff, 0x118a0111, 0x118b0111,
+    0x118c0111, 0x118d0111, 0x118e0111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x118f0111,
+    0x11900111, 0xffffffff, 0xffffffff, 0x11910111, 0x11920111, 0x11930111, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0x116d0111, 0x116e0111, 0x11730111, 0x11890111, 0xffffffff, 0x11810111, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0a0b0111, 0x0a0c0111,
+    0x0a0d0111, 0x0a0e0111, 0x0a0f0111, 0x0a100111, 0x0a110111, 0x0a120111, 0x0a130111, 0x0a140111,
+    0x0000ac11, 0x0000ad11, 0x11660111, 0x115e0111, 0x115d0111, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0x0000af11, 0x0000b011, 0x0000b111, 0xffffffff, 0x11950111, 0x11960111, 0x11970111,
+    0x11980111, 0x11990111, 0x119a0111, 0x119b0111, 0xffffffff, 0x119d0111, 0xffffffff, 0x119e0111,
+    0x119f0111, 0x11a00111, 0xffffffff, 0x11a10111, 0x11a20111, 0x11a30111, 0x11a40111, 0x11a50111,
+    0x11a60111, 0x11a70111, 0x11a80111, 0x11a90111, 0x11aa0111, 0x11ab0111, 0x11ac0111, 0x11ad0111,
+    0x11ae0111, 0x11af0111, 0x11b00111, 0x11b10111, 0x11b20111, 0x11b30111, 0x11b40111, 0x11b50111,
+    0x11b60111, 0xffffffff, 0x11b70111, 0x11b80111, 0x11b90111, 0x11ba0111, 0x11bb0111, 0x11bc0111,
+    0x11bd0111, 0xffffffff, 0x11be0111, 0x11bf0111, 0xffffffff, 0x11c00111, 0x11c10111, 0x11c20111,
+    0x11c30111, 0x11c40111, 0xffffffff, 0xffffffff, 0x0000ae11, 0x11c50111, 0x11c60111, 0x11c70111,
+    0x11c80111, 0x11c90111, 0x11ca0111, 0x11cb0111, 0x11cc0111, 0x11cd0111, 0xffffffff, 0x11ce0111,
+    0x11cf0111, 0x11d00111, 0xffffffff, 0x11d10111, 0x11d20111, 0x11d30111, 0xffffffff, 0xffffffff,
+    0x11940111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x119c0111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0a0b0111, 0x0a0c0111,
+    0x0a0d0111, 0x0a0e0111, 0x0a0f0111, 0x0a100111, 0x0a110111, 0x0a120111, 0x0a130111, 0x0a140111,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x0b00 .. 0x0bff */
+    0xffffffff, 0x0000b311, 0x0000b411, 0x0000b511, 0xffffffff, 0x11d40111, 0x11d50111, 0x11d60111,
+    0x11d70111, 0x11d80111, 0x11d90111, 0x11da0111, 0x11dc0111, 0xffffffff, 0xffffffff, 0x11de0111,
+    0x11df0111, 0xffffffff, 0xffffffff, 0x11e00111, 0x11e10111, 0x11e20111, 0x11e30111, 0x11e40111,
+    0x11e50111, 0x11e60111, 0x11e70111, 0x11e80111, 0x11e90111, 0x11ea0111, 0x11eb0111, 0x11ec0111,
+    0x11ed0111, 0x11ee0111, 0x11ef0111, 0x11f00111, 0x11f10111, 0x11f20111, 0x11f30111, 0x11f40111,
+    0x11f50111, 0xffffffff, 0x11f60111, 0x11f70111, 0x11f80111, 0x11f90111, 0x11fa0111, 0x11fb0111,
+    0x11fd0111, 0xffffffff, 0x11fe0111, 0x11ff0111, 0xffffffff, 0xffffffff, 0x12000111, 0x12010111,
+    0x12020111, 0x12030111, 0xffffffff, 0xffffffff, 0x0000b211, 0x12040111, 0x12050111, 0x12060111,
+    0x12070111, 0x12080111, 0x12090111, 0x120a0111, 0xffffffff, 0xffffffff, 0xffffffff, 0x120b0111,
+    0x120c0111, 0xffffffff, 0xffffffff, 0x120d0111, 0x120e0111, 0x120f0111, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x12100111, 0x12110111,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x11ee0111, 0x11ef0111, 0xffffffff, 0x11fc0111,
+    0x11db0111, 0x11dd0111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0a0b0111, 0x0a0c0111,
+    0x0a0d0111, 0x0a0e0111, 0x0a0f0111, 0x0a100111, 0x0a110111, 0x0a120111, 0x0a130111, 0x0a140111,
+    0x030e0111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0x0000b611, 0x12120111, 0xffffffff, 0x12130111, 0x12140111, 0x12150111,
+    0x12160111, 0x12170111, 0x12180111, 0xffffffff, 0xffffffff, 0xffffffff, 0x12190111, 0x121a0111,
+    0x121b0111, 0xffffffff, 0x121c0111, 0x121d0111, 0x121e0111, 0x121f0111, 0xffffffff, 0xffffffff,
+    0xffffffff, 0x12200111, 0x12210111, 0xffffffff, 0x12220111, 0xffffffff, 0x12230111, 0x12240111,
+    0xffffffff, 0xffffffff, 0xffffffff, 0x12250111, 0x12260111, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x12270111, 0x12280111, 0x12290111, 0xffffffff, 0xffffffff, 0xffffffff, 0x122a0111, 0x122b0111,
+    0x122c0111, 0x122d0111, 0x122e0111, 0x122f0111, 0x12300111, 0x12310111, 0xffffffff, 0x12320111,
+    0x12330111, 0x12340111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x12350111, 0x12360111,
+    0x12370111, 0x12380111, 0x12390111, 0xffffffff, 0xffffffff, 0xffffffff, 0x123a0111, 0x123b0111,
+    0x123c0111, 0xffffffff, 0x123d0111, 0x123e0111, 0x123f0111, 0x12400111, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x12410111,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0a0c0111,
+    0x0a0d0111, 0x0a0e0111, 0x0a0f0111, 0x0a100111, 0x0a110111, 0x0a120111, 0x0a130111, 0x0a140111,
+    0x09c30111, 0x09c40111, 0x09c50111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x0c00 .. 0x0cff */
+    0xffffffff, 0x0000b711, 0x0000b811, 0x0000b911, 0xffffffff, 0x12420111, 0x12430111, 0x12440111,
+    0x12450111, 0x12460111, 0x12470111, 0x12480111, 0x124a0111, 0xffffffff, 0x124c0111, 0x124d0111,
+    0x124e0111, 0xffffffff, 0x124f0111, 0x12500111, 0x12510111, 0x12520111, 0x12530111, 0x12540111,
+    0x12550111, 0x12560111, 0x12570111, 0x12580111, 0x12590111, 0x125a0111, 0x125b0111, 0x125c0111,
+    0x125d0111, 0x125e0111, 0x125f0111, 0x12600111, 0x12610111, 0x12620111, 0x12630111, 0x12640111,
+    0x12650111, 0xffffffff, 0x12660111, 0x12670111, 0x12680111, 0x12690111, 0x126a0111, 0x126b0111,
+    0x126c0111, 0x126d0111, 0x126e0111, 0x126f0111, 0xffffffff, 0x12700111, 0x12710111, 0x12720111,
+    0x12730111, 0x12740111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x12750111, 0x12760111,
+    0x12770111, 0x12780111, 0x12790111, 0x127a0111, 0x127b0111, 0xffffffff, 0x127c0111, 0x127d0111,
+    0x127e0111, 0xffffffff, 0x127f0111, 0x12800111, 0x12810111, 0x12820111, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x12830111, 0x12840111, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x12490111, 0x124b0111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0a0b0111, 0x0a0c0111,
+    0x0a0d0111, 0x0a0e0111, 0x0a0f0111, 0x0a100111, 0x0a110111, 0x0a120111, 0x0a130111, 0x0a140111,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0x0000ba11, 0x0000bb11, 0xffffffff, 0x12850111, 0x12860111, 0x12870111,
+    0x12880111, 0x12890111, 0x128a0111, 0x128b0111, 0x128d0111, 0xffffffff, 0x128f0111, 0x12900111,
+    0x12910111, 0xffffffff, 0x12920111, 0x12930111, 0x12940111, 0x12950111, 0x12960111, 0x12970111,
+    0x12980111, 0x12990111, 0x129a0111, 0x129b0111, 0x129c0111, 0x129d0111, 0x129e0111, 0x129f0111,
+    0x12a00111, 0x12a10111, 0x12a20111, 0x12a30111, 0x12a40111, 0x12a50111, 0x12a60111, 0x12a70111,
+    0x12a80111, 0xffffffff, 0x12a90111, 0x12aa0111, 0x12ab0111, 0x12ac0111, 0x12ad0111, 0x12ae0111,
+    0x12af0111, 0x12b00111, 0x12b10111, 0x12b70111, 0xffffffff, 0x12b20111, 0x12b30111, 0x12b40111,
+    0x12b50111, 0x12b60111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x12b90111, 0x12ba0111,
+    0x12bb0111, 0x12bc0111, 0x12bd0111, 0x12be0111, 0x12bf0111, 0xffffffff, 0x12c00111, 0x12c10111,
+    0x12c20111, 0xffffffff, 0x12c30111, 0x12c40111, 0x12c50111, 0x12c60111, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x12c70111, 0x12c80111, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x12b80111, 0xffffffff,
+    0x128c0111, 0x128e0111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0a0b0111, 0x0a0c0111,
+    0x0a0d0111, 0x0a0e0111, 0x0a0f0111, 0x0a100111, 0x0a110111, 0x0a120111, 0x0a130111, 0x0a140111,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x0d00 .. 0x0dff */
+    0xffffffff, 0xffffffff, 0x0000bc11, 0x0000bd11, 0xffffffff, 0x12c90111, 0x12ca0111, 0x12cb0111,
+    0x12cc0111, 0x12cd0111, 0x12ce0111, 0x12cf0111, 0x12d10111, 0xffffffff, 0x12d30111, 0x12d40111,
+    0x12d50111, 0xffffffff, 0x12d60111, 0x12d70111, 0x12d80111, 0x12d90111, 0x12da0111, 0x12db0111,
+    0x12dc0111, 0x12dd0111, 0x12de0111, 0x12df0111, 0x12e00111, 0x12e10111, 0x12e20111, 0x12e30111,
+    0x12e40111, 0x12e50111, 0x12e60111, 0x12e70111, 0x12e80111, 0x12e90111, 0x12ea0111, 0x12eb0111,
+    0x12ec0111, 0xffffffff, 0x12ed0111, 0x12ee0111, 0x12ef0111, 0x12f00111, 0x12f10111, 0x12f20111,
+    0x12f30111, 0x12f40111, 0x12f50111, 0x12f60111, 0x12f70111, 0x12f80111, 0x12f90111, 0x12fa0111,
+    0x12fb0111, 0x12fc0111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x12fd0111, 0x12fe0111,
+    0x12ff0111, 0x13000111, 0x13010111, 0x13020111, 0xffffffff, 0xffffffff, 0x13030111, 0x13040111,
+    0x13050111, 0xffffffff, 0x13060111, 0x13070111, 0x13080111, 0x13090111, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x130a0111,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x12d00111, 0x12d20111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0a0b0111, 0x0a0c0111,
+    0x0a0d0111, 0x0a0e0111, 0x0a0f0111, 0x0a100111, 0x0a110111, 0x0a120111, 0x0a130111, 0x0a140111,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0x0000be11, 0x0000bf11, 0xffffffff, 0x130b0111, 0x130c0111, 0x130d0111,
+    0x130e0111, 0x130f0111, 0x13100111, 0x13110111, 0x13120111, 0x13130111, 0x13140111, 0x13150111,
+    0x13160111, 0x13170111, 0x13180111, 0x13190111, 0x131a0111, 0x131b0111, 0x131c0111, 0xffffffff,
+    0xffffffff, 0xffffffff, 0x131d0111, 0x131e0111, 0x131f0111, 0x13200111, 0x13210111, 0x13220111,
+    0x13230111, 0x13240111, 0x13250111, 0x13260111, 0x13270111, 0x13280111, 0x13290111, 0x132a0111,
+    0x132b0111, 0x132c0111, 0x132d0111, 0x132e0111, 0x132f0111, 0x13300111, 0x13310111, 0x13320111,
+    0x13330111, 0x13340111, 0xffffffff, 0x13350111, 0x13360111, 0x13370111, 0x13380111, 0x13390111,
+    0x133a0111, 0x133b0111, 0x133c0111, 0x133d0111, 0xffffffff, 0x133e0111, 0xffffffff, 0xffffffff,
+    0x133f0111, 0x13400111, 0x13410111, 0x13420111, 0x13430111, 0x13440111, 0x13450111, 0xffffffff,
+    0xffffffff, 0xffffffff, 0x13460111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x13470111,
+    0x13480111, 0x13490111, 0x134a0111, 0x134b0111, 0x134c0111, 0xffffffff, 0x134d0111, 0xffffffff,
+    0x134e0111, 0x134f0111, 0x13500111, 0x13510111, 0x13520111, 0x13530111, 0x13540111, 0x13550111,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0x13560111, 0x13570111, 0x02ce0111, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x0e00 .. 0x0eff */
+    0xffffffff, 0x13580111, 0x13590111, 0x135a0111, 0x135b0111, 0x135c0111, 0x135d0111, 0x135e0111,
+    0x135f0111, 0x13600111, 0x13610111, 0x13620111, 0x13630111, 0x13640111, 0x13650111, 0x13660111,
+    0x13670111, 0x13680111, 0x13690111, 0x136a0111, 0x136b0111, 0x136c0111, 0x136d0111, 0x136e0111,
+    0x136f0111, 0x13700111, 0x13710111, 0x13720111, 0x13730111, 0x13740111, 0x13750111, 0x13760111,
+    0x13770111, 0x13780111, 0x13790111, 0x137a0111, 0x137b0111, 0x137c0111, 0x137d0111, 0x137e0111,
+    0x137f0111, 0x13800111, 0x13810111, 0x13820111, 0x13830111, 0x13840111, 0x13850111, 0x13860111,
+    0x13870111, 0x13880111, 0x13890111, 0x138a0111, 0x138b0111, 0x138c0111, 0x138d0111, 0x138e0111,
+    0x138f0111, 0x13900111, 0x13910111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x09e50111,
+    0x13920111, 0x13930111, 0x13940111, 0x13950111, 0x13960111, 0x13970111, 0x09d50111, 0x0000c011,
+    0x0000c111, 0x0000c211, 0x0000c311, 0x0000c411, 0x13980111, 0x13990111, 0x00000001, 0x030f0111,
+    0x0a0b0111, 0x0a0c0111, 0x0a0d0111, 0x0a0e0111, 0x0a0f0111, 0x0a100111, 0x0a110111, 0x0a120111,
+    0x0a130111, 0x0a140111, 0x02cf0111, 0x02d00111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0x139a0111, 0x139b0111, 0xffffffff, 0x139c0111, 0xffffffff, 0xffffffff, 0x139d0111,
+    0x139e0111, 0xffffffff, 0x139f0111, 0xffffffff, 0xffffffff, 0x13a00111, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x13a10111, 0x13a20111, 0x13a30111, 0x13a40111,
+    0xffffffff, 0x13a50111, 0x13a60111, 0x13a70111, 0x13a80111, 0x13a90111, 0x13aa0111, 0x13ab0111,
+    0xffffffff, 0x13ac0111, 0x13ad0111, 0x13ae0111, 0xffffffff, 0x13af0111, 0xffffffff, 0x13b00111,
+    0xffffffff, 0xffffffff, 0x13b10111, 0x13b20111, 0xffffffff, 0x13b30111, 0x13b40111, 0x13b50111,
+    0x13b60111, 0x13b70111, 0x13b80111, 0x13b90111, 0x13ba0111, 0x13bb0111, 0x13bc0111, 0x13bd0111,
+    0x13be0111, 0x13bf0111, 0xffffffff, 0x13c00111, 0x13c10111, 0x13c20111, 0xffffffff, 0xffffffff,
+    0x13c30111, 0x13c40111, 0x13c50111, 0x13c60111, 0x13c70111, 0xffffffff, 0x09d60111, 0xffffffff,
+    0x0000c511, 0x0000c611, 0x0000c711, 0x0000c811, 0x13c80111, 0x13c90111, 0xffffffff, 0xffffffff,
+    0x0a0b0111, 0x0a0c0111, 0x0a0d0111, 0x0a0e0111, 0x0a0f0111, 0x0a100111, 0x0a110111, 0x0a120111,
+    0x0a130111, 0x0a140111, 0xffffffff, 0xffffffff, 0x13b20121, 0x13b20121, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x0f00 .. 0x0fff */
+    0x140e0121, 0x03100111, 0x03110111, 0x03120111, 0x02d10111, 0x02d20111, 0x02d30111, 0x02d40111,
+    0x02d50111, 0x02d60111, 0x02d70111, 0x02d80111, 0x02d80121, 0x02d90111, 0x02da0111, 0x02db0111,
+    0x02dc0111, 0x02dd0111, 0x02de0111, 0x03130111, 0x02460111, 0x03140111, 0x03150111, 0x03160111,
+    0x00000001, 0x00000001, 0x03170111, 0x03180111, 0x03190111, 0x031a0111, 0x031b0111, 0x031c0111,
+    0x0a0b0111, 0x0a0c0111, 0x0a0d0111, 0x0a0e0111, 0x0a0f0111, 0x0a100111, 0x0a110111, 0x0a120111,
+    0x0a130111, 0x0a140111, 0x0a0c0111, 0x0a0d0111, 0x0a0e0111, 0x0a0f0111, 0x0a100111, 0x0a110111,
+    0x0a120111, 0x0a130111, 0x0a140111, 0x0a0b0111, 0x031d0111, 0x00000001, 0x031e0111, 0x00000001,
+    0x031f0111, 0x0000c911, 0x02800111, 0x02810111, 0x02820111, 0x02830111, 0x03200111, 0x03210111,
+    0x13ca0111, 0x13cc0111, 0x13ce0111, 0x13ce0111, 0x13d00111, 0x13d20111, 0x13d40111, 0x13d60111,
+    0xffffffff, 0x13d80111, 0x13da0111, 0x13dc0111, 0x13de0111, 0x13de0111, 0x13e00111, 0x13e20111,
+    0x13e40111, 0x13e60111, 0x13e60111, 0x13e80111, 0x13ea0111, 0x13ec0111, 0x13ee0111, 0x13ee0111,
+    0x13f00111, 0x13f20111, 0x13f40111, 0x13f60111, 0x13f60111, 0x13f80111, 0x13fa0111, 0x13fc0111,
+    0x13fe0111, 0x14000111, 0x14020111, 0x14040111, 0x14060111, 0x14080111, 0x140a0111, 0x140c0111,
+    0x140e0111, 0x13ca0111, 0x14020121, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0x14140111, 0x14150111, 0x14160111, 0x14190111, 0x141a0111, 0x141b0111, 0x141c0111,
+    0x141d0111, 0x141e0111, 0x141f0111, 0x14200111, 0x14210111, 0x14220111, 0x0000ca11, 0x0000cb11,
+    0x14170111, 0x14180111, 0x00000001, 0x00000001, 0x14230111, 0x02df0111, 0x00000001, 0x00000001,
+    0x14100111, 0x14110111, 0x14120111, 0x14130111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x13cb0111, 0x13cd0111, 0x13cf0111, 0x13cf0111, 0x13d10111, 0x13d30111, 0x13d50111, 0x13d70111,
+    0xffffffff, 0x13d90111, 0x13db0111, 0x13dd0111, 0x13df0111, 0x13df0111, 0x13e10111, 0x13e30111,
+    0x13e50111, 0x13e70111, 0x13e70111, 0x13e90111, 0x13eb0111, 0x13ed0111, 0x13ef0111, 0x13ef0111,
+    0x13f10111, 0x13f30111, 0x13f50111, 0x13f70111, 0x13f70111, 0x13f90111, 0x13fb0111, 0x13fd0111,
+    0x13ff0111, 0x14010111, 0x14030111, 0x14050111, 0x14070111, 0x14090111, 0x140b0111, 0x140d0111,
+    0x140f0111, 0x13cb0111, 0x13f90121, 0x14010121, 0x14030121, 0xffffffff, 0x03220111, 0x03230111,
+    0x03240111, 0x03250111, 0x03260111, 0x03270111, 0x03280111, 0x03290111, 0x00000001, 0x032a0111,
+    0x032b0111, 0x032c0111, 0x032d0111, 0x032e0111, 0x032f0111, 0xffffffff, 0xffffffff, 0x03300111,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x1000 .. 0x10ff */
+    0x14240111, 0x14250111, 0x14260111, 0x14270111, 0x14280111, 0x14290111, 0x142a0111, 0x142b0111,
+    0x142c0111, 0x142d0111, 0x142e0111, 0x142f0111, 0x14300111, 0x14310111, 0x14320111, 0x14330111,
+    0x14340111, 0x14350111, 0x14360111, 0x14370111, 0x14380111, 0x14390111, 0x143a0111, 0x143b0111,
+    0x143c0111, 0x143d0111, 0x143e0111, 0x143f0111, 0x14400111, 0x14410111, 0x14440111, 0x14450111,
+    0x14460111, 0x14470111, 0xffffffff, 0x14480111, 0x14490111, 0x144a0111, 0x144b0111, 0x144c0111,
+    0xffffffff, 0x144d0111, 0x144e0111, 0xffffffff, 0x14530111, 0x14540111, 0x14550111, 0x14560111,
+    0x14570111, 0x14580111, 0x14590111, 0xffffffff, 0xffffffff, 0xffffffff, 0x0000cc11, 0x0000cd11,
+    0x0000ce11, 0x145e0111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x0a0b0111, 0x0a0c0111, 0x0a0d0111, 0x0a0e0111, 0x0a0f0111, 0x0a100111, 0x0a110111, 0x0a120111,
+    0x0a130111, 0x0a140111, 0x02620111, 0x02630111, 0x02e00111, 0x02e10111, 0x02e20111, 0x02e30111,
+    0x14420111, 0x14430111, 0x144f0111, 0x14500111, 0x14510111, 0x14520111, 0x145a0111, 0x145b0111,
+    0x145c0111, 0x145d0111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x0e690121, 0x0e6a0121, 0x0e6b0121, 0x0e6c0121, 0x0e6d0121, 0x0e6e0121, 0x0e6f0121, 0x0e710121,
+    0x0e720121, 0x0e730121, 0x0e740121, 0x0e750121, 0x0e760121, 0x0e780121, 0x0e790121, 0x0e7a0121,
+    0x0e7b0121, 0x0e7c0121, 0x0e7d0121, 0x0e7f0121, 0x0e800121, 0x0e810121, 0x0e820121, 0x0e830121,
+    0x0e840121, 0x0e850121, 0x0e860121, 0x0e870121, 0x0e880121, 0x0e890121, 0x0e8a0121, 0x0e8c0121,
+    0x0e8d0121, 0x0e700121, 0x0e770121, 0x0e7e0121, 0x0e8b0121, 0x0e8e0121, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x0e690111, 0x0e6a0111, 0x0e6b0111, 0x0e6c0111, 0x0e6d0111, 0x0e6e0111, 0x0e6f0111, 0x0e710111,
+    0x0e720111, 0x0e730111, 0x0e740111, 0x0e750111, 0x0e760111, 0x0e780111, 0x0e790111, 0x0e7a0111,
+    0x0e7b0111, 0x0e7c0111, 0x0e7d0111, 0x0e7f0111, 0x0e800111, 0x0e810111, 0x0e820111, 0x0e830111,
+    0x0e840111, 0x0e850111, 0x0e860111, 0x0e870111, 0x0e880111, 0x0e890111, 0x0e8a0111, 0x0e8c0111,
+    0x0e8d0111, 0x0e700111, 0x0e770111, 0x0e7e0111, 0x0e8b0111, 0x0e8e0111, 0x0e8f0111, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0x02670111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x1100 .. 0x11ff */
+    0x18310111, 0x18320111, 0x18330111, 0x18340111, 0x18350111, 0x18360111, 0x18370111, 0x18380111,
+    0x18390111, 0x183a0111, 0x183b0111, 0x183c0111, 0x183d0111, 0x183e0111, 0x183f0111, 0x18400111,
+    0x18410111, 0x18420111, 0x18430111, 0x18440111, 0x18450111, 0x18460111, 0x18470111, 0x18480111,
+    0x18490111, 0x184a0111, 0x184b0111, 0x184c0111, 0x184d0111, 0x184e0111, 0x184f0111, 0x18500111,
+    0x18510111, 0x18520111, 0x18530111, 0x18540111, 0x18550111, 0x18560111, 0x18570111, 0x18580111,
+    0x18590111, 0x185a0111, 0x185b0111, 0x185c0111, 0x185d0111, 0x185e0111, 0x185f0111, 0x18600111,
+    0x18610111, 0x18620111, 0x18630111, 0x18640111, 0x18650111, 0x18660111, 0x18670111, 0x18680111,
+    0x18690111, 0x186a0111, 0x186b0111, 0x186c0111, 0x186d0111, 0x186e0111, 0x186f0111, 0x18700111,
+    0x18710111, 0x18720111, 0x18730111, 0x18740111, 0x18750111, 0x18760111, 0x18770111, 0x18780111,
+    0x18790111, 0x187a0111, 0x187b0111, 0x187c0111, 0x187d0111, 0x187e0111, 0x187f0111, 0x18800111,
+    0x18810111, 0x18820111, 0x18830111, 0x18840111, 0x18850111, 0x18860111, 0x18870111, 0x18880111,
+    0x18890111, 0x188a0111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x188b0111,
+    0x188c0111, 0x188d0111, 0x188e0111, 0x188f0111, 0x18900111, 0x18910111, 0x18920111, 0x18930111,
+    0x18940111, 0x18950111, 0x18960111, 0x18970111, 0x18980111, 0x18990111, 0x189a0111, 0x189b0111,
+    0x189c0111, 0x189d0111, 0x189e0111, 0x189f0111, 0x18a00111, 0x18a10111, 0x18a20111, 0x18a30111,
+    0x18a40111, 0x18a50111, 0x18a60111, 0x18a70111, 0x18a80111, 0x18a90111, 0x18aa0111, 0x18ab0111,
+    0x18ac0111, 0x18ad0111, 0x18ae0111, 0x18af0111, 0x18b00111, 0x18b10111, 0x18b20111, 0x18b30111,
+    0x18b40111, 0x18b50111, 0x18b60111, 0x18b70111, 0x18b80111, 0x18b90111, 0x18ba0111, 0x18bb0111,
+    0x18bc0111, 0x18bd0111, 0x18be0111, 0x18bf0111, 0x18c00111, 0x18c10111, 0x18c20111, 0x18c30111,
+    0x18c40111, 0x18c50111, 0x18c60111, 0x18c70111, 0x18c80111, 0x18c90111, 0x18ca0111, 0x18cb0111,
+    0x18cc0111, 0x18cd0111, 0x18ce0111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x18cf0111, 0x18d00111, 0x18d10111, 0x18d20111, 0x18d30111, 0x18d40111, 0x18d50111, 0x18d60111,
+    0x18d70111, 0x18d80111, 0x18d90111, 0x18da0111, 0x18db0111, 0x18dc0111, 0x18dd0111, 0x18de0111,
+    0x18df0111, 0x18e00111, 0x18e10111, 0x18e20111, 0x18e30111, 0x18e40111, 0x18e50111, 0x18e60111,
+    0x18e70111, 0x18e80111, 0x18e90111, 0x18ea0111, 0x18eb0111, 0x18ec0111, 0x18ed0111, 0x18ee0111,
+    0x18ef0111, 0x18f00111, 0x18f10111, 0x18f20111, 0x18f30111, 0x18f40111, 0x18f50111, 0x18f60111,
+    0x18f70111, 0x18f80111, 0x18f90111, 0x18fa0111, 0x18fb0111, 0x18fc0111, 0x18fd0111, 0x18fe0111,
+    0x18ff0111, 0x19000111, 0x19010111, 0x19020111, 0x19030111, 0x19040111, 0x19050111, 0x19060111,
+    0x19070111, 0x19080111, 0x19090111, 0x190a0111, 0x190b0111, 0x190c0111, 0x190d0111, 0x190e0111,
+    0x190f0111, 0x19100111, 0x19110111, 0x19120111, 0x19130111, 0x19140111, 0x19150111, 0x19160111,
+    0x19170111, 0x19180111, 0x19190111, 0x191a0111, 0x191b0111, 0x191c0111, 0x191d0111, 0x191e0111,
+    0x191f0111, 0x19200111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x1200 .. 0x12ff */
+    0x0f990111, 0x0f9a0111, 0x0f9b0111, 0x0f9c0111, 0x0f9d0111, 0x0f9e0111, 0x0f9f0111, 0xffffffff,
+    0x0fa00111, 0x0fa10111, 0x0fa20111, 0x0fa30111, 0x0fa40111, 0x0fa50111, 0x0fa60111, 0x0fa70111,
+    0x0fa80111, 0x0fa90111, 0x0faa0111, 0x0fab0111, 0x0fac0111, 0x0fad0111, 0x0fae0111, 0x0faf0111,
+    0x0fb00111, 0x0fb10111, 0x0fb20111, 0x0fb30111, 0x0fb40111, 0x0fb50111, 0x0fb60111, 0x0fb70111,
+    0x0fb80111, 0x0fb90111, 0x0fba0111, 0x0fbb0111, 0x0fbc0111, 0x0fbd0111, 0x0fbe0111, 0x0fbf0111,
+    0x0fc00111, 0x0fc10111, 0x0fc20111, 0x0fc30111, 0x0fc40111, 0x0fc50111, 0x0fc60111, 0x0fc70111,
+    0x0fc80111, 0x0fc90111, 0x0fca0111, 0x0fcb0111, 0x0fcc0111, 0x0fcd0111, 0x0fce0111, 0x0fcf0111,
+    0x0fd00111, 0x0fd10111, 0x0fd20111, 0x0fd30111, 0x0fd40111, 0x0fd50111, 0x0fd60111, 0x0fd70111,
+    0x0fd80111, 0x0fd90111, 0x0fda0111, 0x0fdb0111, 0x0fdc0111, 0x0fdd0111, 0x0fde0111, 0xffffffff,
+    0x0fdf0111, 0xffffffff, 0x0fe00111, 0x0fe10111, 0x0fe20111, 0x0fe30111, 0xffffffff, 0xffffffff,
+    0x0fe40111, 0x0fe50111, 0x0fe60111, 0x0fe70111, 0x0fe80111, 0x0fe90111, 0x0fea0111, 0xffffffff,
+    0x0feb0111, 0xffffffff, 0x0fec0111, 0x0fed0111, 0x0fee0111, 0x0fef0111, 0xffffffff, 0xffffffff,
+    0x0ff00111, 0x0ff10111, 0x0ff20111, 0x0ff30111, 0x0ff40111, 0x0ff50111, 0x0ff60111, 0x0ff70111,
+    0x0ff80111, 0x0ff90111, 0x0ffa0111, 0x0ffb0111, 0x0ffc0111, 0x0ffd0111, 0x0ffe0111, 0x0fff0111,
+    0x10000111, 0x10010111, 0x10020111, 0x10030111, 0x10040111, 0x10050111, 0x10060111, 0x10070111,
+    0x10080111, 0x10090111, 0x100a0111, 0x100b0111, 0x100c0111, 0x100d0111, 0x100e0111, 0x100f0111,
+    0x10100111, 0x10110111, 0x10120111, 0x10130111, 0x10140111, 0x10150111, 0x10160111, 0xffffffff,
+    0x10170111, 0xffffffff, 0x10180111, 0x10190111, 0x101a0111, 0x101b0111, 0xffffffff, 0xffffffff,
+    0x101c0111, 0x101d0111, 0x101e0111, 0x101f0111, 0x10200111, 0x10210111, 0x10220111, 0x10230111,
+    0x10240111, 0x10250111, 0x10260111, 0x10270111, 0x10280111, 0x10290111, 0x102a0111, 0x102b0111,
+    0x102c0111, 0x102d0111, 0x102e0111, 0x102f0111, 0x10300111, 0x10310111, 0x10320111, 0x10330111,
+    0x10340111, 0x10350111, 0x10360111, 0x10370111, 0x10380111, 0x10390111, 0x103a0111, 0xffffffff,
+    0x103b0111, 0xffffffff, 0x103c0111, 0x103d0111, 0x103e0111, 0x103f0111, 0xffffffff, 0xffffffff,
+    0x10400111, 0x10410111, 0x10420111, 0x10430111, 0x10440111, 0x10450111, 0x10460111, 0xffffffff,
+    0x10470111, 0xffffffff, 0x10480111, 0x10490111, 0x104a0111, 0x104b0111, 0xffffffff, 0xffffffff,
+    0x104c0111, 0x104d0111, 0x104e0111, 0x104f0111, 0x10500111, 0x10510111, 0x10520111, 0xffffffff,
+    0x10530111, 0x10540111, 0x10550111, 0x10560111, 0x10570111, 0x10580111, 0x10590111, 0xffffffff,
+    0x105a0111, 0x105b0111, 0x105c0111, 0x105d0111, 0x105e0111, 0x105f0111, 0x10600111, 0x10610111,
+    0x10620111, 0x10630111, 0x10640111, 0x10650111, 0x10660111, 0x10670111, 0x10680111, 0x10690111,
+    0x106a0111, 0x106b0111, 0x106c0111, 0x106d0111, 0x106e0111, 0x106f0111, 0x10700111, 0xffffffff,
+    0x10710111, 0x10720111, 0x10730111, 0x10740111, 0x10750111, 0x10760111, 0x10770111, 0x10780111,
+    0x10790111, 0x107a0111, 0x107b0111, 0x107c0111, 0x107d0111, 0x107e0111, 0x107f0111, 0x10800111,
+    /* 0x1300 .. 0x13ff */
+    0x10810111, 0x10820111, 0x10830111, 0x10840111, 0x10850111, 0x10860111, 0x10870111, 0x10880111,
+    0x10890111, 0x108a0111, 0x108b0111, 0x108c0111, 0x108d0111, 0x108e0111, 0x108f0111, 0xffffffff,
+    0x10900111, 0xffffffff, 0x10910111, 0x10920111, 0x10930111, 0x10940111, 0xffffffff, 0xffffffff,
+    0x10950111, 0x10960111, 0x10970111, 0x10980111, 0x10990111, 0x109a0111, 0x109b0111, 0xffffffff,
+    0x109c0111, 0x109d0111, 0x109e0111, 0x109f0111, 0x10a00111, 0x10a10111, 0x10a20111, 0x10a30111,
+    0x10a40111, 0x10a50111, 0x10a60111, 0x10a70111, 0x10a80111, 0x10a90111, 0x10aa0111, 0x10ab0111,
+    0x10ac0111, 0x10ad0111, 0x10ae0111, 0x10af0111, 0x10b00111, 0x10b10111, 0x10b20111, 0x10b30111,
+    0x10b40111, 0x10b50111, 0x10b60111, 0x10b70111, 0x10b80111, 0x10b90111, 0x10ba0111, 0x10bb0111,
+    0x10bc0111, 0x10bd0111, 0x10be0111, 0x10bf0111, 0x10c00111, 0x10c10111, 0x10c20111, 0xffffffff,
+    0x10c30111, 0x10c40111, 0x10c50111, 0x10c60111, 0x10c70111, 0x10c80111, 0x10c90111, 0x10ca0111,
+    0x10cb0111, 0x10cc0111, 0x10cd0111, 0x10ce0111, 0x10cf0111, 0x10d00111, 0x10d10111, 0x10d20111,
+    0x10d30111, 0x10d40111, 0x10d50111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0x023f0111, 0x025a0111, 0x02400111, 0x02410111, 0x02420111, 0x02430111, 0x02530111,
+    0x02680111, 0x0a0c0111, 0x0a0d0111, 0x0a0e0111, 0x0a0f0111, 0x0a100111, 0x0a110111, 0x0a120111,
+    0x0a130111, 0x0a140111, 0x09c60111, 0x09c70111, 0x09c80111, 0x09c90111, 0x09ca0111, 0x09cb0111,
+    0x09cc0111, 0x09cd0111, 0x09ce0111, 0x09cf0111, 0x09d00111, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x15280111, 0x15290111, 0x152a0111, 0x152b0111, 0x152c0111, 0x152d0111, 0x152e0111, 0x152f0111,
+    0x15300111, 0x15310111, 0x15320111, 0x15330111, 0x15340111, 0x15350111, 0x15360111, 0x15370111,
+    0x15380111, 0x15390111, 0x153a0111, 0x153b0111, 0x153c0111, 0x153d0111, 0x153e0111, 0x153f0111,
+    0x15400111, 0x15410111, 0x15420111, 0x15430111, 0x15440111, 0x15450111, 0x15460111, 0x15470111,
+    0x15480111, 0x15490111, 0x154a0111, 0x154b0111, 0x154c0111, 0x154d0111, 0x154e0111, 0x154f0111,
+    0x15500111, 0x15510111, 0x15520111, 0x15530111, 0x15540111, 0x15550111, 0x15560111, 0x15570111,
+    0x15580111, 0x15590111, 0x155a0111, 0x155b0111, 0x155c0111, 0x155d0111, 0x155e0111, 0x155f0111,
+    0x15600111, 0x15610111, 0x15620111, 0x15630111, 0x15640111, 0x15650111, 0x15660111, 0x15670111,
+    0x15680111, 0x15690111, 0x156a0111, 0x156b0111, 0x156c0111, 0x156d0111, 0x156e0111, 0x156f0111,
+    0x15700111, 0x15710111, 0x15720111, 0x15730111, 0x15740111, 0x15750111, 0x15760111, 0x15770111,
+    0x15780111, 0x15790111, 0x157a0111, 0x157b0111, 0x157c0111, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x1400 .. 0x14ff */
+    0xffffffff, 0x157d0111, 0x157e0111, 0x157f0111, 0x15800111, 0x15810111, 0x15820111, 0x15830111,
+    0x15840111, 0x15850111, 0x15860111, 0x15870111, 0x15880111, 0x15890111, 0x158a0111, 0x158b0111,
+    0x158c0111, 0x158d0111, 0x158e0111, 0x158f0111, 0x15900111, 0x15910111, 0x15920111, 0x15930111,
+    0x15940111, 0x15950111, 0x15960111, 0x15970111, 0x15980111, 0x15990111, 0x159a0111, 0x159b0111,
+    0x159c0111, 0x159d0111, 0x159e0111, 0x159f0111, 0x15a00111, 0x15a10111, 0x15a20111, 0x15a30111,
+    0x15a40111, 0x15a50111, 0x15a60111, 0x15a70111, 0x15a80111, 0x15a90111, 0x15aa0111, 0x15ab0111,
+    0x15ac0111, 0x15ad0111, 0x15ae0111, 0x15af0111, 0x15b00111, 0x15b10111, 0x15b20111, 0x15b30111,
+    0x15b40111, 0x15b50111, 0x15b60111, 0x15b70111, 0x15b80111, 0x15b90111, 0x15ba0111, 0x15bb0111,
+    0x15bc0111, 0x15bd0111, 0x15be0111, 0x15bf0111, 0x15c00111, 0x15c10111, 0x15c20111, 0x15c30111,
+    0x15c40111, 0x15c50111, 0x15c60111, 0x15c70111, 0x15c80111, 0x15c90111, 0x15ca0111, 0x15cb0111,
+    0x15cc0111, 0x15cd0111, 0x15ce0111, 0x15cf0111, 0x15d00111, 0x15d10111, 0x15d20111, 0x15d30111,
+    0x15d40111, 0x15d50111, 0x15d60111, 0x15d70111, 0x15d80111, 0x15d90111, 0x15da0111, 0x15db0111,
+    0x15dc0111, 0x15dd0111, 0x15de0111, 0x15df0111, 0x15e00111, 0x15e10111, 0x15e20111, 0x15e30111,
+    0x15e40111, 0x15e50111, 0x15e60111, 0x15e70111, 0x15e80111, 0x15e90111, 0x15ea0111, 0x15eb0111,
+    0x15ec0111, 0x15ed0111, 0x15ee0111, 0x15ef0111, 0x15f00111, 0x15f10111, 0x15f20111, 0x15f30111,
+    0x15f40111, 0x15f50111, 0x15f60111, 0x15f70111, 0x15f80111, 0x15f90111, 0x15fa0111, 0x15fb0111,
+    0x15fc0111, 0x15fd0111, 0x15fe0111, 0x15ff0111, 0x16000111, 0x16010111, 0x16020111, 0x16030111,
+    0x16040111, 0x16050111, 0x16060111, 0x16070111, 0x16080111, 0x16090111, 0x160a0111, 0x160b0111,
+    0x160c0111, 0x160d0111, 0x160e0111, 0x160f0111, 0x16100111, 0x16110111, 0x16120111, 0x16130111,
+    0x16140111, 0x16150111, 0x16160111, 0x16170111, 0x16180111, 0x16190111, 0x161a0111, 0x161b0111,
+    0x161c0111, 0x161d0111, 0x161e0111, 0x161f0111, 0x16200111, 0x16210111, 0x16220111, 0x16230111,
+    0x16240111, 0x16250111, 0x16260111, 0x16270111, 0x16280111, 0x16290111, 0x162a0111, 0x162b0111,
+    0x162c0111, 0x162d0111, 0x162e0111, 0x162f0111, 0x16300111, 0x16310111, 0x16320111, 0x16330111,
+    0x16340111, 0x16350111, 0x16360111, 0x16370111, 0x16380111, 0x16390111, 0x163a0111, 0x163b0111,
+    0x163c0111, 0x163d0111, 0x163e0111, 0x163f0111, 0x16400111, 0x16410111, 0x16420111, 0x16430111,
+    0x16440111, 0x16450111, 0x16460111, 0x16470111, 0x16480111, 0x16490111, 0x164a0111, 0x164b0111,
+    0x164c0111, 0x164d0111, 0x164e0111, 0x164f0111, 0x16500111, 0x16510111, 0x16520111, 0x16530111,
+    0x16540111, 0x16550111, 0x16560111, 0x16570111, 0x16580111, 0x16590111, 0x165a0111, 0x165b0111,
+    0x165c0111, 0x165d0111, 0x165e0111, 0x165f0111, 0x16600111, 0x16610111, 0x16620111, 0x16630111,
+    0x16640111, 0x16650111, 0x16660111, 0x16670111, 0x16680111, 0x16690111, 0x166a0111, 0x166b0111,
+    0x166c0111, 0x166d0111, 0x166e0111, 0x166f0111, 0x16700111, 0x16710111, 0x16720111, 0x16730111,
+    0x16740111, 0x16750111, 0x16760111, 0x16770111, 0x16780111, 0x16790111, 0x167a0111, 0x167b0111,
+    /* 0x1500 .. 0x15ff */
+    0x167c0111, 0x167d0111, 0x167e0111, 0x167f0111, 0x16800111, 0x16810111, 0x16820111, 0x16830111,
+    0x16840111, 0x16850111, 0x16860111, 0x16870111, 0x16880111, 0x16890111, 0x168a0111, 0x168b0111,
+    0x168c0111, 0x168d0111, 0x168e0111, 0x168f0111, 0x16900111, 0x16910111, 0x16920111, 0x16930111,
+    0x16940111, 0x16950111, 0x16960111, 0x16970111, 0x16980111, 0x16990111, 0x169a0111, 0x169b0111,
+    0x169c0111, 0x169d0111, 0x169e0111, 0x169f0111, 0x16a00111, 0x16a10111, 0x16a20111, 0x16a30111,
+    0x16a40111, 0x16a50111, 0x16a60111, 0x16a70111, 0x16a80111, 0x16a90111, 0x16aa0111, 0x16ab0111,
+    0x16ac0111, 0x16ad0111, 0x16ae0111, 0x16af0111, 0x16b00111, 0x16b10111, 0x16b20111, 0x16b30111,
+    0x16b40111, 0x16b50111, 0x16b60111, 0x16b70111, 0x16b80111, 0x16b90111, 0x16ba0111, 0x16bb0111,
+    0x16bc0111, 0x16bd0111, 0x16be0111, 0x16bf0111, 0x16c00111, 0x16c10111, 0x16c20111, 0x16c30111,
+    0x16c40111, 0x16c50111, 0x16c60111, 0x16c70111, 0x16c80111, 0x16c90111, 0x16ca0111, 0x16cb0111,
+    0x16cc0111, 0x16cd0111, 0x16ce0111, 0x16cf0111, 0x16d00111, 0x16d10111, 0x16d20111, 0x16d30111,
+    0x16d40111, 0x16d50111, 0x16d60111, 0x16d70111, 0x16d80111, 0x16d90111, 0x16da0111, 0x16db0111,
+    0x16dc0111, 0x16dd0111, 0x16de0111, 0x16df0111, 0x16e00111, 0x16e10111, 0x16e20111, 0x16e30111,
+    0x16e40111, 0x16e50111, 0x16e60111, 0x16e70111, 0x16e80111, 0x16e90111, 0x16ea0111, 0x16eb0111,
+    0x16ec0111, 0x16ed0111, 0x16ee0111, 0x16ef0111, 0x16f00111, 0x16f10111, 0x16f20111, 0x16f30111,
+    0x16f40111, 0x16f50111, 0x16f60111, 0x16f70111, 0x172a0111, 0x16f80111, 0x16fa0111, 0x16fb0111,
+    0x16fc0111, 0x16fd0111, 0x16fe0111, 0x16ff0111, 0x17000111, 0x17010111, 0x17020111, 0x17030111,
+    0x17040111, 0x17050111, 0x17060111, 0x17070111, 0x17080111, 0x17090111, 0x170b0111, 0x170c0111,
+    0x170d0111, 0x170e0111, 0x170f0111, 0x17100111, 0x17110111, 0x17120111, 0x17190111, 0x171a0111,
+    0x171b0111, 0x171c0111, 0x171d0111, 0x171e0111, 0x171f0111, 0x17200111, 0x17210111, 0x17220111,
+    0x17230111, 0x17240111, 0x17250111, 0x17260111, 0x17270111, 0x17280111, 0x17290111, 0x172b0111,
+    0x172c0111, 0x172d0111, 0x172e0111, 0x172f0111, 0x17300111, 0x17310111, 0x17320111, 0x17330111,
+    0x17340111, 0x17350111, 0x17360111, 0x17370111, 0x17380111, 0x17390111, 0x173a0111, 0x173b0111,
+    0x173c0111, 0x173d0111, 0x173e0111, 0x173f0111, 0x17400111, 0x17410111, 0x17420111, 0x17430111,
+    0x17440111, 0x17450111, 0x17460111, 0x17470111, 0x17480111, 0x17490111, 0x174a0111, 0x174b0111,
+    0x174c0111, 0x174d0111, 0x174e0111, 0x174f0111, 0x17500111, 0x17510111, 0x17520111, 0x17530111,
+    0x17540111, 0x17550111, 0x17560111, 0x17570111, 0x17580111, 0x17590111, 0x175a0111, 0x175b0111,
+    0x175c0111, 0x175d0111, 0x175e0111, 0x175f0111, 0x17600111, 0x17610111, 0x17620111, 0x17630111,
+    0x17640111, 0x17650111, 0x17660111, 0x17670111, 0x17680111, 0x17690111, 0x176a0111, 0x176b0111,
+    0x176c0111, 0x176d0111, 0x176e0111, 0x176f0111, 0x17700111, 0x17710111, 0x17720111, 0x17730111,
+    0x17740111, 0x17750111, 0x17760111, 0x17770111, 0x17780111, 0x17790111, 0x177a0111, 0x177b0111,
+    0x177c0111, 0x177d0111, 0x177e0111, 0x177f0111, 0x17800111, 0x17810111, 0x17820111, 0x17830111,
+    /* 0x1600 .. 0x16ff */
+    0x17840111, 0x17850111, 0x17860111, 0x17870111, 0x17880111, 0x17890111, 0x178a0111, 0x178b0111,
+    0x178c0111, 0x178d0111, 0x178e0111, 0x178f0111, 0x17900111, 0x17910111, 0x17920111, 0x17930111,
+    0x17940111, 0x17950111, 0x17960111, 0x17970111, 0x17980111, 0x17990111, 0x179a0111, 0x179b0111,
+    0x179c0111, 0x179d0111, 0x179e0111, 0x179f0111, 0x17a00111, 0x17a10111, 0x17a20111, 0x17a30111,
+    0x17a40111, 0x17a50111, 0x17a60111, 0x17a70111, 0x17a80111, 0x17a90111, 0x17aa0111, 0x17ab0111,
+    0x17ac0111, 0x17ad0111, 0x17ae0111, 0x17af0111, 0x17b00111, 0x17b10111, 0x17b20111, 0x17b30111,
+    0x17b40111, 0x17b50111, 0x17b60111, 0x17b70111, 0x17b80111, 0x17b90111, 0x17ba0111, 0x17bb0111,
+    0x17bc0111, 0x17bd0111, 0x17be0111, 0x17bf0111, 0x17c00111, 0x17c10111, 0x17c20111, 0x17c30111,
+    0x17c40111, 0x17c50111, 0x17c60111, 0x17c70111, 0x17c80111, 0x17c90111, 0x17ca0111, 0x17cb0111,
+    0x17cc0111, 0x17cd0111, 0x17ce0111, 0x17cf0111, 0x17d00111, 0x17d10111, 0x17d20111, 0x17d30111,
+    0x17d40111, 0x17d50111, 0x17d60111, 0x17d70111, 0x17d80111, 0x17d90111, 0x17da0111, 0x17db0111,
+    0x17dc0111, 0x17dd0111, 0x17de0111, 0x17df0111, 0x17e00111, 0x17e10111, 0x17e20111, 0x17e30111,
+    0x17e40111, 0x17e50111, 0x17e60111, 0x17e70111, 0x17e80111, 0x17e90111, 0x17ea0111, 0x17eb0111,
+    0x17ec0111, 0x17ed0111, 0x17ee0111, 0x17ef0111, 0x17f00111, 0x03310111, 0x025d0111, 0x16f90111,
+    0x170a0111, 0x17130111, 0x17140111, 0x17150111, 0x17160111, 0x17170111, 0x17180111, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x020a0111, 0x17f10111, 0x17f20111, 0x17f30111, 0x17f40111, 0x17f50111, 0x17f60111, 0x17f70111,
+    0x17f80111, 0x17f90111, 0x17fa0111, 0x17fb0111, 0x17fc0111, 0x17fd0111, 0x17fe0111, 0x17ff0111,
+    0x18000111, 0x18010111, 0x18020111, 0x18030111, 0x18040111, 0x18050111, 0x18060111, 0x18070111,
+    0x18080111, 0x18090111, 0x180a0111, 0x02840111, 0x02850111, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x180b0111, 0x180b0121, 0x180c0111, 0x18280111, 0x180c0121, 0x180c0121, 0x180d0111, 0x180d0121,
+    0x180e0111, 0x180e0121, 0x18260111, 0x18270111, 0x180e0121, 0x180e0121, 0x180e0121, 0x180f0111,
+    0x18100111, 0x18110111, 0x18120111, 0x18120121, 0x18120121, 0x18120121, 0x18120121, 0x18130111,
+    0x182b0111, 0x18140111, 0x18150111, 0x18150121, 0x18150121, 0x18150121, 0x18160111, 0x18160121,
+    0x18160121, 0x18170111, 0x18170121, 0x18180111, 0x18180121, 0x18190111, 0x18190121, 0x181a0111,
+    0x181b0111, 0x181c0111, 0x181d0111, 0x181d0121, 0x181d0121, 0x181d0121, 0x181d0121, 0x181e0111,
+    0x181e0121, 0x181e0121, 0x181f0111, 0x181f0121, 0x181f0121, 0x181b0121, 0x18200111, 0x18210111,
+    0x18210121, 0x18210121, 0x18220111, 0x18220121, 0x18230111, 0x18230121, 0x18240111, 0x18250111,
+    0x18290111, 0x182d0111, 0x182e0111, 0x182a0111, 0x182c0111, 0x182f0111, 0x18300111, 0x18300121,
+    0x18300121, 0x18140121, 0x181d0121, 0x02480111, 0x02490111, 0x024a0111, 0x18190121, 0x18210121,
+    0x180d0121, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x1700 .. 0x17ff */
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x145f0111, 0x14600111, 0x14610111, 0x14620111, 0x14630111, 0x14640111, 0x14650111, 0x14660111,
+    0x14670111, 0x14680111, 0x14690111, 0x146a0111, 0x146b0111, 0x146c0111, 0x146d0111, 0x146e0111,
+    0x146f0111, 0x14700111, 0x14710111, 0x14720111, 0x14730111, 0x14740111, 0x14750111, 0x14760111,
+    0x14770111, 0x14780111, 0x14790111, 0x147a0111, 0x147b0111, 0x147c0111, 0x147d0111, 0x147e0111,
+    0x147f0111, 0x14800111, 0x14810111, 0x14820111, 0x14830111, 0x14840111, 0x14850111, 0x14860111,
+    0x14870111, 0x14880111, 0x14890111, 0x148a0111, 0x148b0111, 0x148c0111, 0x148d0111, 0x148e0111,
+    0x148f0111, 0x14900111, 0x14910111, 0x14920111, 0x14930111, 0x14940111, 0x14950111, 0x14960111,
+    0x14970111, 0x14980111, 0x14990111, 0x149a0111, 0x149b0111, 0x149c0111, 0x149d0111, 0x149e0111,
+    0x149f0111, 0x14a00111, 0x14a10111, 0x14a20111, 0x14a30111, 0x14a40111, 0x0000cf11, 0x0000d011,
+    0x0000d111, 0x0000d211, 0x0000d311, 0x0000d411, 0x0000d511, 0x0000d611, 0x0000d711, 0x0000d811,
+    0x0000d911, 0x0000da11, 0x14a50111, 0x0000db11, 0x02640111, 0x02650111, 0x02470111, 0x02e40111,
+    0x02e50111, 0x02e60111, 0x02e70111, 0x09e60111, 0x02e80111, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x0a0b0111, 0x0a0c0111, 0x0a0d0111, 0x0a0e0111, 0x0a0f0111, 0x0a100111, 0x0a110111, 0x0a120111,
+    0x0a130111, 0x0a140111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x1800 .. 0x18ff */
+    0x02cb0111, 0x02560111, 0x02320111, 0x025b0111, 0x02440111, 0x02450111, 0x02230111, 0x02240111,
+    0x02330111, 0x025c0111, 0x02cc0111, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff,
+    0x0a0b0111, 0x0a0c0111, 0x0a0d0111, 0x0a0e0111, 0x0a0f0111, 0x0a100111, 0x0a110111, 0x0a120111,
+    0x0a130111, 0x0a140111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x14ae0111, 0x14b00111, 0x14b30111, 0x14b90111, 0x14bb0111, 0x14be0111, 0x14c00111, 0x14c30111,
+    0x14c40111, 0x14c50111, 0x14ca0111, 0x14cc0111, 0x14cf0111, 0x14d10111, 0x14d60111, 0x14d80111,
+    0x14d90111, 0x14da0111, 0x14e10111, 0x14e40111, 0x14e70111, 0x14ec0111, 0x14f00111, 0x14f30111,
+    0x14f50111, 0x14f70111, 0x14fa0111, 0x14ff0111, 0x15000111, 0x15030111, 0x15070111, 0x150a0111,
+    0x150b0111, 0x150c0111, 0x150d0111, 0x14ad0111, 0x14b10111, 0x14b40111, 0x14ba0111, 0x14bc0111,
+    0x14bf0111, 0x14c10111, 0x14c60111, 0x14cb0111, 0x14cd0111, 0x14d00111, 0x14d20111, 0x14d70111,
+    0x14e20111, 0x14e50111, 0x14e80111, 0x14ed0111, 0x15010111, 0x14f10111, 0x14f60111, 0x14fb0111,
+    0x15050111, 0x15080111, 0x150e0111, 0x150f0111, 0x14ea0111, 0x14b20111, 0x14b50111, 0x14b80111,
+    0x14c20111, 0x14bd0111, 0x14c70111, 0x14fc0111, 0x14d30111, 0x14d50111, 0x14ce0111, 0x14db0111,
+    0x14e30111, 0x14e60111, 0x14ee0111, 0x14f80111, 0x15060111, 0x15090111, 0x15020111, 0x15040111,
+    0x15100111, 0x14e90111, 0x14f20111, 0x14b60111, 0x14fd0111, 0x14f40111, 0x14f90111, 0x14ef0111,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x14a60111, 0x14a70111, 0x14a80111, 0x14a90111, 0x14aa0111, 0x14ab0111, 0x14ac0111, 0x14af0111,
+    0x14b70111, 0x14fe0111, 0x14c80111, 0x14eb0111, 0x15110111, 0x15130111, 0x15140111, 0x15160111,
+    0x15170111, 0x151a0111, 0x151c0111, 0x151d0111, 0x151f0111, 0x15210111, 0x15230111, 0x15240111,
+    0x15180111, 0x15220111, 0x14d40111, 0x14c90111, 0x14dc0111, 0x14dd0111, 0x15120111, 0x15150111,
+    0x15190111, 0x151b0111, 0x14de0111, 0x15200111, 0x14df0111, 0x14e00111, 0x15250111, 0x15260111,
+    0x151e0111, 0x15270111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x1e00 .. 0x1eff */
+    0x0a150151, 0x0a150111, 0x0a290141, 0x0a290111, 0x0a290141, 0x0a290111, 0x0a290141, 0x0a290111,
+    0x0a3d0151, 0x0a3d0111, 0x0a490151, 0x0a490111, 0x0a490151, 0x0a490111, 0x0a490151, 0x0a490111,
+    0x0a490151, 0x0a490111, 0x0a490151, 0x0a490111, 0x0a650151, 0x0a650111, 0x0a650151, 0x0a650111,
+    0x0a650151, 0x0a650111, 0x0a650151, 0x0a650111, 0x0a650151, 0x0a650111, 0x0a910151, 0x0a910111,
+    0x0a990151, 0x0a990111, 0x0ab90151, 0x0ab90111, 0x0ab90151, 0x0ab90111, 0x0ab90151, 0x0ab90111,
+    0x0ab90151, 0x0ab90111, 0x0ab90151, 0x0ab90111, 0x0ad30161, 0x0ad30111, 0x0ad30161, 0x0ad30111,
+    0x0af70141, 0x0af70111, 0x0af70141, 0x0af70111, 0x0af70141, 0x0af70111, 0x0b030161, 0x0b030111,
+    0x0b030161, 0x0b030111, 0x0b030161, 0x0b030111, 0x0b030161, 0x0b030111, 0x0b2b0151, 0x0b2b0111,
+    0x0b2b0151, 0x0b2b0111, 0x0b2b0151, 0x0b2b0111, 0x0b330151, 0x0b330111, 0x0b330151, 0x0b330111,
+    0x0b330151, 0x0b330111, 0x0b330151, 0x0b330111, 0x0b4b0161, 0x0b4b0111, 0x0b4b0161, 0x0b4b0111,
+    0x0b4b0161, 0x0b4b0111, 0x0b4b0161, 0x0b4b0111, 0x0b670141, 0x0b670111, 0x0b670141, 0x0b670111,
+    0x0b7f0141, 0x0b7f0111, 0x0b7f0141, 0x0b7f0111, 0x0b7f0141, 0x0b7f0111, 0x0b7f0141, 0x0b7f0111,
+    0x0ba70151, 0x0ba70111, 0x0ba70151, 0x0ba70111, 0x0ba70151, 0x0ba70111, 0x0ba70151, 0x0ba70111,
+    0x0ba70151, 0x0ba70111, 0x0bbf0151, 0x0bbf0111, 0x0bbf0151, 0x0bbf0111, 0x0bbf0151, 0x0bbf0111,
+    0x0bbf0151, 0x0bbf0111, 0x0bd70141, 0x0bd70111, 0x0bd70141, 0x0bd70111, 0x0bd70141, 0x0bd70111,
+    0x0bd70141, 0x0bd70111, 0x0bd70141, 0x0bd70111, 0x0bef0151, 0x0bef0111, 0x0bef0151, 0x0bef0111,
+    0x0bfb0141, 0x0bfb0111, 0x0bfb0141, 0x0bfb0111, 0x0bfb0141, 0x0bfb0111, 0x0bfb0141, 0x0bfb0111,
+    0x0bfb0141, 0x0bfb0111, 0x0c030151, 0x0c030111, 0x0c030151, 0x0c030111, 0x0c070141, 0x0c070111,
+    0x0c130141, 0x0c130111, 0x0c130141, 0x0c130111, 0x0c130141, 0x0c130111, 0x0ab90111, 0x0bbf0111,
+    0x0bfb0111, 0x0c070111, 0x0a150131, 0x0ba70131, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x0a150151, 0x0a150111, 0x0a150151, 0x0a150111, 0x0a150151, 0x0a150111, 0x0a150151, 0x0a150111,
+    0x0a150151, 0x0a150111, 0x0a150151, 0x0a150111, 0x0a150151, 0x0a150111, 0x0a150151, 0x0a150111,
+    0x0a150151, 0x0a150111, 0x0a150151, 0x0a150111, 0x0a150151, 0x0a150111, 0x0a150151, 0x0a150111,
+    0x0a650151, 0x0a650111, 0x0a650151, 0x0a650111, 0x0a650151, 0x0a650111, 0x0a650151, 0x0a650111,
+    0x0a650151, 0x0a650111, 0x0a650151, 0x0a650111, 0x0a650151, 0x0a650111, 0x0a650151, 0x0a650111,
+    0x0ad30161, 0x0ad30111, 0x0ad30161, 0x0ad30111, 0x0b4b0161, 0x0b4b0111, 0x0b4b0161, 0x0b4b0111,
+    0x0b4b0161, 0x0b4b0111, 0x0b4b0161, 0x0b4b0111, 0x0b4b0161, 0x0b4b0111, 0x0b4b0161, 0x0b4b0111,
+    0x0b4b0161, 0x0b4b0111, 0x0b4b0161, 0x0b4b0111, 0x0b4b0161, 0x0b4b0111, 0x0b4b0161, 0x0b4b0111,
+    0x0b4b0161, 0x0b4b0111, 0x0b4b0161, 0x0b4b0111, 0x0bd70141, 0x0bd70111, 0x0bd70141, 0x0bd70111,
+    0x0bd70141, 0x0bd70111, 0x0bd70141, 0x0bd70111, 0x0bd70141, 0x0bd70111, 0x0bd70141, 0x0bd70111,
+    0x0bd70141, 0x0bd70111, 0x0c070141, 0x0c070111, 0x0c070141, 0x0c070111, 0x0c070141, 0x0c070111,
+    0x0c070141, 0x0c070111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x1f00 .. 0x1fff */
+    0x0c910111, 0x0c910111, 0x0c910111, 0x0c910111, 0x0c910111, 0x0c910111, 0x0c910111, 0x0c910111,
+    0x0c910121, 0x0c910121, 0x0c910121, 0x0c910121, 0x0c910121, 0x0c910121, 0x0c910121, 0x0c910121,
+    0x0c950111, 0x0c950111, 0x0c950111, 0x0c950111, 0x0c950111, 0x0c950111, 0xffffffff, 0xffffffff,
+    0x0c950131, 0x0c950131, 0x0c950131, 0x0c950131, 0x0c950131, 0x0c950131, 0xffffffff, 0xffffffff,
+    0x0c990111, 0x0c990111, 0x0c990111, 0x0c990111, 0x0c990111, 0x0c990111, 0x0c990111, 0x0c990111,
+    0x0c990121, 0x0c990121, 0x0c990121, 0x0c990121, 0x0c990121, 0x0c990121, 0x0c990121, 0x0c990121,
+    0x0c9b0111, 0x0c9b0111, 0x0c9b0111, 0x0c9b0111, 0x0c9b0111, 0x0c9b0111, 0x0c9b0111, 0x0c9b0111,
+    0x0c9b0121, 0x0c9b0121, 0x0c9b0121, 0x0c9b0121, 0x0c9b0121, 0x0c9b0121, 0x0c9b0121, 0x0c9b0121,
+    0x0ca20111, 0x0ca20111, 0x0ca20111, 0x0ca20111, 0x0ca20111, 0x0ca20111, 0xffffffff, 0xffffffff,
+    0x0ca20121, 0x0ca20121, 0x0ca20121, 0x0ca20121, 0x0ca20121, 0x0ca20121, 0xffffffff, 0xffffffff,
+    0x0ca80111, 0x0ca80111, 0x0ca80111, 0x0ca80111, 0x0ca80111, 0x0ca80111, 0x0ca80111, 0x0ca80111,
+    0xffffffff, 0x0ca80121, 0xffffffff, 0x0ca80121, 0xffffffff, 0x0ca80121, 0xffffffff, 0x0ca80121,
+    0x0cac0111, 0x0cac0111, 0x0cac0111, 0x0cac0111, 0x0cac0111, 0x0cac0111, 0x0cac0111, 0x0cac0111,
+    0x0cac0121, 0x0cac0121, 0x0cac0121, 0x0cac0121, 0x0cac0121, 0x0cac0121, 0x0cac0121, 0x0cac0121,
+    0x0c910111, 0x0c910111, 0x0c950111, 0x0c950111, 0x0c990111, 0x0c990111, 0x0c9b0111, 0x0c9b0111,
+    0x0ca20111, 0x0ca20111, 0x0ca80111, 0x0ca80111, 0x0cac0111, 0x0cac0111, 0xffffffff, 0xffffffff,
+    0x0c910111, 0x0c910111, 0x0c910111, 0x0c910111, 0x0c910111, 0x0c910111, 0x0c910111, 0x0c910111,
+    0x0c910121, 0x0c910121, 0x0c910121, 0x0c910121, 0x0c910121, 0x0c910121, 0x0c910121, 0x0c910121,
+    0x0c990111, 0x0c990111, 0x0c990111, 0x0c990111, 0x0c990111, 0x0c990111, 0x0c990111, 0x0c990111,
+    0x0c990121, 0x0c990121, 0x0c990121, 0x0c990121, 0x0c990121, 0x0c990121, 0x0c990121, 0x0c990121,
+    0x0cac0111, 0x0cac0111, 0x0cac0111, 0x0cac0111, 0x0cac0111, 0x0cac0111, 0x0cac0111, 0x0cac0111,
+    0x0cac0121, 0x0cac0121, 0x0cac0121, 0x0cac0121, 0x0cac0121, 0x0cac0121, 0x0cac0121, 0x0cac0121,
+    0x0c910111, 0x0c910111, 0x0c910111, 0x0c910111, 0x0c910111, 0xffffffff, 0x0c910111, 0x0c910111,
+    0x0c910121, 0x0c910121, 0x0c910121, 0x0c910121, 0x0c910121, 0x02170111, 0x0c9b0111, 0x02170111,
+    0x021d0111, 0x02140111, 0x0c990111, 0x0c990111, 0x0c990111, 0xffffffff, 0x0c990111, 0x0c990111,
+    0x0c950131, 0x0c950131, 0x0c990121, 0x0c990121, 0x0c990121, 0x02170111, 0x02170111, 0x02170111,
+    0x0c9b0111, 0x0c9b0111, 0x0c9b0111, 0x0c9b0111, 0xffffffff, 0xffffffff, 0x0c9b0111, 0x0c9b0111,
+    0x0c9b0121, 0x0c9b0121, 0x0c9b0121, 0x0c9b0121, 0xffffffff, 0x02180111, 0x02180111, 0x02180111,
+    0x0ca80111, 0x0ca80111, 0x0ca80111, 0x0ca80111, 0x0ca50111, 0x0ca50111, 0x0ca80111, 0x0ca80111,
+    0x0ca80121, 0x0ca80121, 0x0ca80121, 0x0ca80121, 0x0ca50131, 0x02140111, 0x02140111, 0x020c0111,
+    0xffffffff, 0xffffffff, 0x0cac0111, 0x0cac0111, 0x0cac0111, 0xffffffff, 0x0cac0111, 0x0cac0111,
+    0x0ca20121, 0x0ca20121, 0x0cac0121, 0x0cac0121, 0x0cac0121, 0x020d0111, 0x02180111, 0xffffffff,
+    /* 0x2000 .. 0x20ff */
+    0x02090131, 0x02090131, 0x02090131, 0x02090131, 0x02090131, 0x02090131, 0x02090131, 0x02090141,
+    0x02090131, 0x02090131, 0x02090131, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    0x02250111, 0x02250121, 0x02260111, 0x02270111, 0x02280111, 0x02290111, 0x03a90111, 0x021c0111,
+    0x026a0111, 0x026b0111, 0x026c0111, 0x026d0111, 0x02710111, 0x02720111, 0x02730111, 0x02740111,
+    0x02ae0111, 0x02af0111, 0x02b00111, 0x02b10111, 0x02550131, 0x02550131, 0x02550131, 0x02b20111,
+    0x02070111, 0x02080111, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x02090141,
+    0x02ac0111, 0x02ad0111, 0x02b60111, 0x02b60121, 0x02b60121, 0x02b70111, 0x02b70121, 0x02b70121,
+    0x02b90111, 0x026e0111, 0x026f0111, 0x02ba0111, 0x024b0131, 0x02540111, 0x02110111, 0x02bb0111,
+    0x02bc0111, 0x02bd0111, 0x02be0111, 0x02b30111, 0x02a50111, 0x02860111, 0x02870111, 0xffffffff,
+    0x024e0131, 0x024b0131, 0x02a80111, 0x029e0111, 0x02b40111, 0x02b50111, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    0x0a0b0151, 0xffffffff, 0xffffffff, 0xffffffff, 0x0a0f0151, 0x0a100151, 0x0a110151, 0x0a120151,
+    0x0a130151, 0x0a140151, 0x039f0151, 0x03ab0121, 0x03a40141, 0x027a0151, 0x027b0141, 0x0b3301a1,
+    0x0a0b0161, 0x0a0c0161, 0x0a0d0161, 0x0a0e0161, 0x0a0f0161, 0x0a100161, 0x0a110161, 0x0a120161,
+    0x0a130161, 0x0a140161, 0x039f0161, 0x03ab0131, 0x03a40151, 0x027a0161, 0x027b0151, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x09e70111, 0x09e80111, 0x09e90111, 0x09ea0111, 0x09eb0111, 0x09ec0111, 0x09ed0111, 0x09ee0111,
+    0x0b7f0161, 0x09ef0111, 0x09f00111, 0x09f10111, 0x09f20111, 0x09f30111, 0x09f40111, 0x09f50111,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x0000e411, 0x0000e511, 0x0000e611, 0x0000e711, 0x0000e811, 0x0000e911, 0x0000ea11, 0x0000eb11,
+    0x0000ec11, 0x0000ed11, 0x0000ee11, 0x0000ef11, 0x0000f011, 0x0000f111, 0x0000f211, 0x0000f311,
+    0x0000f411, 0x0000f511, 0x0000f611, 0x0000f711, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x2100 .. 0x21ff */
+    0x0a150131, 0x0a150131, 0x0a3d0181, 0x030a0121, 0x09f60111, 0x0a3d0131, 0x0a3d0131, 0x0a710131,
+    0x09f70111, 0x030a0121, 0x0a990131, 0x0ab90171, 0x0ab90171, 0x0ab90171, 0x0ab90131, 0x0ac50121,
+    0x0ad30191, 0x0ad30191, 0x0b030191, 0x0b030141, 0x09f80111, 0x0b330181, 0x0b330171, 0x09f90111,
+    0x09fa0111, 0x0b670161, 0x0b730161, 0x0b7f0171, 0x0b7f0171, 0x0b7f0171, 0x09fb0111, 0x09fc0111,
+    0x0ba70181, 0x0bbf0171, 0x0bbf0191, 0x09fd0111, 0x0c130161, 0x09fe0111, 0x0cac0121, 0x09ff0111,
+    0x0c130161, 0x0a000111, 0x0af70141, 0x0a150151, 0x0a290161, 0x0a3d0181, 0x0a010111, 0x0a650131,
+    0x0a650171, 0x0a910171, 0x0a020111, 0x0b2b0181, 0x0b4b0141, 0x0eb70121, 0x0eb80121, 0x0eb90121,
+    0x0eba0121, 0x0ad30141, 0x0a030111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0x0a0c0171, 0x0a0d0171, 0x0a0c0171, 0x0a0d0171, 0x0a0e0171,
+    0x0a0f0171, 0x0a0c0171, 0x0a100171, 0x0a0c0171, 0x0a0e0171, 0x0a100171, 0x0a120171, 0x0a0c0171,
+    0x0ad30181, 0x0ad30181, 0x0ad30181, 0x0ad30181, 0x0bef0171, 0x0bef0171, 0x0bef0171, 0x0bef0171,
+    0x0ad30181, 0x0c030171, 0x0c030171, 0x0c030171, 0x0b030181, 0x0a3d0171, 0x0a490171, 0x0b2b0171,
+    0x0ad30131, 0x0ad30131, 0x0ad30131, 0x0ad30131, 0x0bef0131, 0x0bef0131, 0x0bef0131, 0x0bef0131,
+    0x0ad30131, 0x0c030131, 0x0c030131, 0x0c030131, 0x0b030131, 0x0a3d0131, 0x0a490131, 0x0b2b0131,
+    0x0a040111, 0x0a050111, 0x0a060111, 0x0a070111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x03320111, 0x03340111, 0x03330111, 0x03350111, 0x03360111, 0x03370111, 0x03380111, 0x03390111,
+    0x033a0111, 0x033b0111, 0x03320111, 0x03330111, 0x033c0111, 0x033d0111, 0x033e0111, 0x033f0111,
+    0x03400111, 0x03410111, 0x03420111, 0x03430111, 0x03440111, 0x03450111, 0x03460111, 0x03470111,
+    0x03480111, 0x03490111, 0x034a0111, 0x034b0111, 0x034c0111, 0x034d0111, 0x03360111, 0x034e0111,
+    0x034f0111, 0x03500111, 0x03510111, 0x03520111, 0x03530111, 0x03540111, 0x03550111, 0x03560111,
+    0x03570111, 0x03580111, 0x03590111, 0x035a0111, 0x035b0111, 0x035c0111, 0x035d0111, 0x035e0111,
+    0x035f0111, 0x03600111, 0x03610111, 0x03620111, 0x03630111, 0x03640111, 0x03650111, 0x03660111,
+    0x03670111, 0x03680111, 0x03690111, 0x036a0111, 0x036b0111, 0x036c0111, 0x03700111, 0x036e0111,
+    0x036c0111, 0x036d0111, 0x036e0111, 0x036f0111, 0x03700111, 0x03710111, 0x03720111, 0x03730111,
+    0x03740111, 0x03750111, 0x03760111, 0x03770111, 0x03780111, 0x03790111, 0x037a0111, 0x037b0111,
+    0x037c0111, 0x037d0111, 0x037e0111, 0x037f0111, 0x03800111, 0x03810111, 0x03820111, 0x03830111,
+    0x03840111, 0x03850111, 0x03860111, 0x03870111, 0x03880111, 0x03890111, 0x038a0111, 0x038b0111,
+    0x038c0111, 0x038d0111, 0x038e0111, 0x038f0111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x2200 .. 0x22ff */
+    0x03900111, 0x03910111, 0x03920111, 0x03930111, 0x03930111, 0x03940111, 0x03950111, 0x03960111,
+    0x03970111, 0x03970111, 0x03980111, 0x03990111, 0x03990111, 0x039a0111, 0x039b0111, 0x039c0111,
+    0x039d0111, 0x039e0111, 0x03ab0111, 0x03ac0111, 0x03ad0111, 0x03ae0111, 0x03af0111, 0x03b00111,
+    0x03b10111, 0x03b20111, 0x03b30111, 0x03b40111, 0x03b50111, 0x03b60111, 0x03b70111, 0x03b80111,
+    0x03b90111, 0x03ba0111, 0x03bb0111, 0x03bc0111, 0x03bc0111, 0x03bd0111, 0x03bd0111, 0x03be0111,
+    0x03bf0111, 0x03c00111, 0x03c10111, 0x03c20111, 0x03c20121, 0x03c20121, 0x03c30111, 0x03c30121,
+    0x03c30121, 0x03c40111, 0x03c50111, 0x03c60111, 0x03c70111, 0x03c80111, 0x03c90111, 0x03ca0111,
+    0x03cb0111, 0x03cc0111, 0x03cd0111, 0x03ce0111, 0x03cf0111, 0x03d00111, 0x03d10111, 0x03d20111,
+    0x03d30111, 0x03cf0111, 0x03d40111, 0x03d50111, 0x03d50111, 0x03d60111, 0x03d70111, 0x03d60111,
+    0x03d80111, 0x03d80111, 0x03d90111, 0x03da0111, 0x03db0111, 0x03dc0111, 0x03dd0111, 0x03de0111,
+    0x03df0111, 0x03e00111, 0x03e10111, 0x03e20111, 0x03e30111, 0x03e40111, 0x03e50111, 0x03e60111,
+    0x03e70111, 0x03e80111, 0x03e90111, 0x03ea0111, 0x03eb0111, 0x03ec0111, 0x03ed0111, 0x03ee0111,
+    0x03a40111, 0x03ef0111, 0x03ef0111, 0x03f00111, 0x03f10111, 0x03f20111, 0x03f30111, 0x03f40111,
+    0x03f50111, 0x03f60111, 0x03f70111, 0x03f80111, 0x03f90111, 0x03dc0111, 0x03a30111, 0x03a50111,
+    0x03f10111, 0x03f20111, 0x03fa0111, 0x03fb0111, 0x03fa0111, 0x03fb0111, 0x03fc0111, 0x03fd0111,
+    0x03fc0111, 0x03fd0111, 0x03fe0111, 0x03ff0111, 0x04000111, 0x04010111, 0x04020111, 0x04030111,
+    0x03fe0111, 0x03ff0111, 0x04040111, 0x04050111, 0x04040111, 0x04050111, 0x04060111, 0x04070111,
+    0x04060111, 0x04070111, 0x04080111, 0x04090111, 0x040a0111, 0x040b0111, 0x040c0111, 0x040d0111,
+    0x040e0111, 0x040f0111, 0x04100111, 0x04110111, 0x04120111, 0x04130111, 0x04140111, 0x04150111,
+    0x04160111, 0x04170111, 0x04180111, 0x04190111, 0x041a0111, 0x041b0111, 0x041c0111, 0x041d0111,
+    0x041e0111, 0x041f0111, 0x04200111, 0x04210111, 0x04220111, 0x04230111, 0x04240111, 0x04250111,
+    0x04260111, 0x04270111, 0x04280111, 0x04290111, 0x04200111, 0x04260111, 0x04270111, 0x04290111,
+    0x042a0111, 0x042b0111, 0x042c0111, 0x042d0111, 0x042e0111, 0x042f0111, 0x04300111, 0x04310111,
+    0x04320111, 0x04330111, 0x04340111, 0x04350111, 0x04360111, 0x04370111, 0x04380111, 0x04390111,
+    0x043a0111, 0x043b0111, 0x043c0111, 0x043d0111, 0x043e0111, 0x043f0111, 0x04400111, 0x04410111,
+    0x04420111, 0x04430111, 0x04440111, 0x04450111, 0x04460111, 0x04470111, 0x04480111, 0x04490111,
+    0x044a0111, 0x044b0111, 0x044c0111, 0x044d0111, 0x044e0111, 0x044f0111, 0x04500111, 0x04510111,
+    0x04520111, 0x04530111, 0x04540111, 0x04550111, 0x04560111, 0x04570111, 0x04580111, 0x04590111,
+    0x04000111, 0x04010111, 0x040f0111, 0x04100111, 0x045a0111, 0x045b0111, 0x045c0111, 0x045d0111,
+    0x045e0111, 0x045f0111, 0x042c0111, 0x042d0111, 0x042e0111, 0x042f0111, 0x04600111, 0x04610111,
+    0x04620111, 0x04630111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x2300 .. 0x23ff */
+    0x04640111, 0x04650111, 0x04660111, 0x04670111, 0x04680111, 0x04690111, 0x046a0111, 0x046b0111,
+    0x046c0111, 0x046d0111, 0x046e0111, 0x046f0111, 0x04700111, 0x04710111, 0x04720111, 0x04730111,
+    0x04740111, 0x04750111, 0x04760111, 0x04770111, 0x04780111, 0x04790111, 0x047a0111, 0x047b0111,
+    0x047c0111, 0x047d0111, 0x047e0111, 0x047f0111, 0x04800111, 0x04810111, 0x04820111, 0x04830111,
+    0x04840111, 0x04850111, 0x04860111, 0x04870111, 0x04880111, 0x04890111, 0x048a0111, 0x048b0111,
+    0x048c0111, 0x02880111, 0x02890111, 0x048d0111, 0x048e0111, 0x048f0111, 0x04900111, 0x04910111,
+    0x04920111, 0x04930111, 0x04940111, 0x04950111, 0x04960111, 0x04970111, 0x04980111, 0x04990111,
+    0x049a0111, 0x049b0111, 0x049c0111, 0x049d0111, 0x049e0111, 0x049f0111, 0x04a00111, 0x04a10111,
+    0x04a20111, 0x04a30111, 0x04a40111, 0x04a50111, 0x04a60111, 0x04a70111, 0x04a80111, 0x04a90111,
+    0x04aa0111, 0x04ab0111, 0x04ac0111, 0x04ad0111, 0x04ae0111, 0x04af0111, 0x04b00111, 0x04b10111,
+    0x04b20111, 0x04b30111, 0x04b40111, 0x04b50111, 0x04b60111, 0x04b70111, 0x04b80111, 0x04b90111,
+    0x04ba0111, 0x04bb0111, 0x04bc0111, 0x04bd0111, 0x04be0111, 0x04bf0111, 0x04c00111, 0x04c10111,
+    0x04c20111, 0x04c30111, 0x04c40111, 0x04c50111, 0x04c60111, 0x04c70111, 0x04c80111, 0x04c90111,
+    0x04ca0111, 0x04cb0111, 0x04cc0111, 0x04cd0111, 0x04ce0111, 0x04cf0111, 0x04d00111, 0x04d10111,
+    0x04d20111, 0x04d30111, 0x04d40111, 0x04d50111, 0x04d60111, 0x04d70111, 0x04d80111, 0x04d90111,
+    0x04da0111, 0x04db0111, 0x04dc0111, 0x04dd0111, 0xffffffff, 0x04de0111, 0x04df0111, 0x04e00111,
+    0x04e10111, 0x04e20111, 0x04e30111, 0x04e40111, 0x04e50111, 0x04e60111, 0x04e70111, 0x04e80111,
+    0x04e90111, 0x04ea0111, 0x04eb0111, 0x04ec0111, 0x04ed0111, 0x04ee0111, 0x04ef0111, 0x04f00111,
+    0x04f10111, 0x04f20111, 0x04f30111, 0x04f40111, 0x04f50111, 0x04f60111, 0x04f70111, 0x04f80111,
+    0x04f90111, 0x04fa0111, 0x04fb0111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x2400 .. 0x24ff */
+    0x04fc0111, 0x04fd0111, 0x04fe0111, 0x04ff0111, 0x05000111, 0x05010111, 0x05020111, 0x05030111,
+    0x05040111, 0x05050111, 0x05060111, 0x05070111, 0x05080111, 0x05090111, 0x050a0111, 0x050b0111,
+    0x050c0111, 0x050d0111, 0x050e0111, 0x050f0111, 0x05100111, 0x05110111, 0x05120111, 0x05130111,
+    0x05140111, 0x05150111, 0x05160111, 0x05170111, 0x05180111, 0x05190111, 0x051a0111, 0x051b0111,
+    0x051c0111, 0x051d0111, 0x051e0111, 0x051f0111, 0x05200111, 0x05210111, 0x05220111, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x05230111, 0x05240111, 0x05250111, 0x05260111, 0x05270111, 0x05280111, 0x05290111, 0x052a0111,
+    0x052b0111, 0x052c0111, 0x052d0111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x0a0c0141, 0x0a0d0141, 0x0a0e0141, 0x0a0f0141, 0x0a100141, 0x0a110141, 0x0a120141, 0x0a130141,
+    0x0a140141, 0x0a0c0141, 0x0a0c0141, 0x0a0c0141, 0x0a0c0141, 0x0a0c0141, 0x0a0c0141, 0x0a0c0141,
+    0x0a0c0141, 0x0a0c0141, 0x0a0c0141, 0x0a0d0141, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131,
+    0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131,
+    0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131,
+    0x0a0c0131, 0x0a0d0131, 0x0a0e0131, 0x0a0f0131, 0x0a100131, 0x0a110131, 0x0a120131, 0x0a130131,
+    0x0a140131, 0x0a0c0131, 0x0a0c0131, 0x0a0c0131, 0x0a0c0131, 0x0a0c0131, 0x0a0c0131, 0x0a0c0131,
+    0x0a0c0131, 0x0a0c0131, 0x0a0c0131, 0x0a0d0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131,
+    0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131,
+    0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131,
+    0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x0a150171, 0x0a290171,
+    0x0a3d0191, 0x0a490181, 0x0a650181, 0x0a910181, 0x0a990171, 0x0ab90181, 0x0ad301a1, 0x0ae70161,
+    0x0af70161, 0x0b0301a1, 0x0b2b0191, 0x0b330191, 0x0b4b0191, 0x0b670171, 0x0b730171, 0x0b7f0181,
+    0x0ba70171, 0x0bbf0181, 0x0bd70161, 0x0bef0181, 0x0bfb0161, 0x0c030181, 0x0c070161, 0x0c130171,
+    0x0a150141, 0x0a290131, 0x0a3d0141, 0x0a490141, 0x0a650141, 0x0a910141, 0x0a990141, 0x0ab90141,
+    0x0ad30151, 0x0ae70131, 0x0af70131, 0x0b030151, 0x0b2b0141, 0x0b330141, 0x0b4b0151, 0x0b670131,
+    0x0b730131, 0x0b7f0131, 0x0ba70141, 0x0bbf0141, 0x0bd70131, 0x0bef0141, 0x0bfb0131, 0x0c030141,
+    0x0c070131, 0x0c130131, 0x0a0b0141, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x2500 .. 0x25ff */
+    0x052e0111, 0x052f0111, 0x05300111, 0x05310111, 0x05320111, 0x05330111, 0x05340111, 0x05350111,
+    0x05360111, 0x05370111, 0x05380111, 0x05390111, 0x053a0111, 0x053b0111, 0x053c0111, 0x053d0111,
+    0x053e0111, 0x053f0111, 0x05400111, 0x05410111, 0x05420111, 0x05430111, 0x05440111, 0x05450111,
+    0x05460111, 0x05470111, 0x05480111, 0x05490111, 0x054a0111, 0x054b0111, 0x054c0111, 0x054d0111,
+    0x054e0111, 0x054f0111, 0x05500111, 0x05510111, 0x05520111, 0x05530111, 0x05540111, 0x05550111,
+    0x05560111, 0x05570111, 0x05580111, 0x05590111, 0x055a0111, 0x055b0111, 0x055c0111, 0x055d0111,
+    0x055e0111, 0x055f0111, 0x05600111, 0x05610111, 0x05620111, 0x05630111, 0x05640111, 0x05650111,
+    0x05660111, 0x05670111, 0x05680111, 0x05690111, 0x056a0111, 0x056b0111, 0x056c0111, 0x056d0111,
+    0x056e0111, 0x056f0111, 0x05700111, 0x05710111, 0x05720111, 0x05730111, 0x05740111, 0x05750111,
+    0x05760111, 0x05770111, 0x05780111, 0x05790111, 0x057a0111, 0x057b0111, 0x057c0111, 0x057d0111,
+    0x057e0111, 0x057f0111, 0x05800111, 0x05810111, 0x05820111, 0x05830111, 0x05840111, 0x05850111,
+    0x05860111, 0x05870111, 0x05880111, 0x05890111, 0x058a0111, 0x058b0111, 0x058c0111, 0x058d0111,
+    0x058e0111, 0x058f0111, 0x05900111, 0x05910111, 0x05920111, 0x05930111, 0x05940111, 0x05950111,
+    0x05960111, 0x05970111, 0x05980111, 0x05990111, 0x059a0111, 0x059b0111, 0x059c0111, 0x059d0111,
+    0x059e0111, 0x059f0111, 0x05a00111, 0x05a10111, 0x05a20111, 0x05a30111, 0x05a40111, 0x05a50111,
+    0x05a60111, 0x05a70111, 0x05a80111, 0x05a90111, 0x05aa0111, 0x05ab0111, 0x05ac0111, 0x05ad0111,
+    0x05ae0111, 0x05af0111, 0x05b00111, 0x05b10111, 0x05b20111, 0x05b30111, 0x05b40111, 0x05b50111,
+    0x05b60111, 0x05b70111, 0x05b80111, 0x05b90111, 0x05ba0111, 0x05bb0111, 0x05bc0111, 0x05bd0111,
+    0x05be0111, 0x05bf0111, 0x05c00111, 0x05c10111, 0x05c20111, 0x05c30111, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x05c40111, 0x05c50111, 0x05c60111, 0x05c70111, 0x05c80111, 0x05c90111, 0x05ca0111, 0x05cb0111,
+    0x05cc0111, 0x05cd0111, 0x05ce0111, 0x05cf0111, 0x05d00111, 0x05d10111, 0x05d20111, 0x05d30111,
+    0x05d40111, 0x05d50111, 0x05d60111, 0x05d70111, 0x05d80111, 0x05d90111, 0x05da0111, 0x05db0111,
+    0x05dc0111, 0x05dd0111, 0x05de0111, 0x05df0111, 0x05e00111, 0x05e10111, 0x05e20111, 0x05e30111,
+    0x05e40111, 0x05e50111, 0x05e60111, 0x05e70111, 0x05e80111, 0x05e90111, 0x05ea0111, 0x05eb0111,
+    0x05ec0111, 0x05ed0111, 0x05ee0111, 0x05ef0111, 0x05f00111, 0x05f10111, 0x05f20111, 0x05f30111,
+    0x05f40111, 0x05f50111, 0x05f60111, 0x05f70111, 0x05f80111, 0x05f90111, 0x05fa0111, 0x05fb0111,
+    0x05fc0111, 0x05fd0111, 0x05fe0111, 0x05ff0111, 0x06000111, 0x06010111, 0x06020111, 0x06030111,
+    0x06040111, 0x06050111, 0x06060111, 0x06070111, 0x06080111, 0x06090111, 0x060a0111, 0x060b0111,
+    0x060c0111, 0x060d0111, 0x060e0111, 0x060f0111, 0x06100111, 0x06110111, 0x06120111, 0x06130111,
+    0x06140111, 0x06150111, 0x06160111, 0x06170111, 0x06180111, 0x06190111, 0x061a0111, 0x061b0111,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x2600 .. 0x26ff */
+    0x061c0111, 0x061d0111, 0x061e0111, 0x061f0111, 0x06200111, 0x06210111, 0x06220111, 0x06230111,
+    0x06240111, 0x06250111, 0x06260111, 0x06270111, 0x06280111, 0x06290111, 0x062a0111, 0x062b0111,
+    0x062c0111, 0x062d0111, 0x062e0111, 0x062f0111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0x06300111, 0x06310111, 0x06320111, 0x06330111, 0x06340111, 0x06350111, 0x06360111,
+    0x06370111, 0x06380111, 0x06390111, 0x063a0111, 0x063b0111, 0x063c0111, 0x063d0111, 0x063e0111,
+    0x063f0111, 0x06400111, 0x06410111, 0x06420111, 0x06430111, 0x06440111, 0x06450111, 0x06460111,
+    0x06470111, 0x06480111, 0x06490111, 0x064a0111, 0x064b0111, 0x064c0111, 0x064d0111, 0x064e0111,
+    0x064f0111, 0x06500111, 0x06510111, 0x06520111, 0x06530111, 0x06540111, 0x06550111, 0x06560111,
+    0x06570111, 0x06580111, 0x06590111, 0x065a0111, 0x065b0111, 0x065c0111, 0x065d0111, 0x065e0111,
+    0x065f0111, 0x06600111, 0x06610111, 0x06620111, 0x06630111, 0x06640111, 0x06650111, 0x06660111,
+    0x06670111, 0x06680111, 0x06690111, 0x066a0111, 0x066b0111, 0x066c0111, 0x066d0111, 0x066e0111,
+    0x066f0111, 0x06700111, 0x06710111, 0x06720111, 0x06730111, 0x06740111, 0x06750111, 0x06760111,
+    0x06770111, 0x06780111, 0x06790111, 0x067a0111, 0x067b0111, 0x067c0111, 0x067d0111, 0x067e0111,
+    0x067f0111, 0x06800111, 0x06810111, 0x06820111, 0x06830111, 0x0a080111, 0x0a090111, 0x0a0a0111,
+    0x06840111, 0x06850111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x2700 .. 0x27ff */
+    0xffffffff, 0x06860111, 0x06870111, 0x06880111, 0x06890111, 0xffffffff, 0x068a0111, 0x068b0111,
+    0x068c0111, 0x068d0111, 0xffffffff, 0xffffffff, 0x068e0111, 0x068f0111, 0x06900111, 0x06910111,
+    0x06920111, 0x06930111, 0x06940111, 0x06950111, 0x06960111, 0x06970111, 0x06980111, 0x06990111,
+    0x069a0111, 0x069b0111, 0x069c0111, 0x069d0111, 0x069e0111, 0x069f0111, 0x06a00111, 0x06a10111,
+    0x06a20111, 0x06a30111, 0x06a40111, 0x06a50111, 0x06a60111, 0x06a70111, 0x06a80111, 0x06a90111,
+    0xffffffff, 0x06aa0111, 0x06ab0111, 0x06ac0111, 0x06ad0111, 0x06ae0111, 0x06af0111, 0x06b00111,
+    0x06b10111, 0x06b20111, 0x06b30111, 0x06b40111, 0x06b50111, 0x06b60111, 0x06b70111, 0x06b80111,
+    0x06b90111, 0x06ba0111, 0x06bb0111, 0x06bc0111, 0x06bd0111, 0x06be0111, 0x06bf0111, 0x06c00111,
+    0x06c10111, 0x06c20111, 0x06c30111, 0x06c40111, 0x06c50111, 0x06c60111, 0x06c70111, 0x06c80111,
+    0x06c90111, 0x06ca0111, 0x06cb0111, 0x06cc0111, 0xffffffff, 0x06cd0111, 0xffffffff, 0x06ce0111,
+    0x06cf0111, 0x06d00111, 0x06d10111, 0xffffffff, 0xffffffff, 0xffffffff, 0x06d20111, 0xffffffff,
+    0x06d30111, 0x06d40111, 0x06d50111, 0x06d60111, 0x06d70111, 0x06d80111, 0x06d90111, 0xffffffff,
+    0xffffffff, 0x06da0111, 0x06db0111, 0x06dc0111, 0x06dd0111, 0x06de0111, 0x06df0111, 0x06e00111,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0a0c0141, 0x0a0d0141,
+    0x0a0e0141, 0x0a0f0141, 0x0a100141, 0x0a110141, 0x0a120141, 0x0a130141, 0x0a140141, 0x06e10111,
+    0x0a0c0141, 0x0a0d0141, 0x0a0e0141, 0x0a0f0141, 0x0a100141, 0x0a110141, 0x0a120141, 0x0a130141,
+    0x0a140141, 0x06e20111, 0x0a0c0141, 0x0a0d0141, 0x0a0e0141, 0x0a0f0141, 0x0a100141, 0x0a110141,
+    0x0a120141, 0x0a130141, 0x0a140141, 0x06e30111, 0x06e40111, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x06e50111, 0x06e60111, 0x06e70111, 0x06e80111, 0x06e90111, 0x06ea0111, 0x06eb0111, 0x06ec0111,
+    0x06ed0111, 0x06ee0111, 0x06ef0111, 0x06f00111, 0x06f10111, 0x06f20111, 0x06f30111, 0x06f40111,
+    0x06f50111, 0x06f60111, 0x06f70111, 0x06f80111, 0x06f90111, 0x06fa0111, 0x06fb0111, 0x06fc0111,
+    0xffffffff, 0x06fd0111, 0x06fe0111, 0x06ff0111, 0x07000111, 0x07010111, 0x07020111, 0x07030111,
+    0x07040111, 0x07050111, 0x07060111, 0x07070111, 0x07080111, 0x07090111, 0x070a0111, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x2800 .. 0x28ff */
+    0x070b0111, 0x070c0111, 0x070d0111, 0x070e0111, 0x070f0111, 0x07100111, 0x07110111, 0x07120111,
+    0x07130111, 0x07140111, 0x07150111, 0x07160111, 0x07170111, 0x07180111, 0x07190111, 0x071a0111,
+    0x071b0111, 0x071c0111, 0x071d0111, 0x071e0111, 0x071f0111, 0x07200111, 0x07210111, 0x07220111,
+    0x07230111, 0x07240111, 0x07250111, 0x07260111, 0x07270111, 0x07280111, 0x07290111, 0x072a0111,
+    0x072b0111, 0x072c0111, 0x072d0111, 0x072e0111, 0x072f0111, 0x07300111, 0x07310111, 0x07320111,
+    0x07330111, 0x07340111, 0x07350111, 0x07360111, 0x07370111, 0x07380111, 0x07390111, 0x073a0111,
+    0x073b0111, 0x073c0111, 0x073d0111, 0x073e0111, 0x073f0111, 0x07400111, 0x07410111, 0x07420111,
+    0x07430111, 0x07440111, 0x07450111, 0x07460111, 0x07470111, 0x07480111, 0x07490111, 0x074a0111,
+    0x074b0111, 0x074c0111, 0x074d0111, 0x074e0111, 0x074f0111, 0x07500111, 0x07510111, 0x07520111,
+    0x07530111, 0x07540111, 0x07550111, 0x07560111, 0x07570111, 0x07580111, 0x07590111, 0x075a0111,
+    0x075b0111, 0x075c0111, 0x075d0111, 0x075e0111, 0x075f0111, 0x07600111, 0x07610111, 0x07620111,
+    0x07630111, 0x07640111, 0x07650111, 0x07660111, 0x07670111, 0x07680111, 0x07690111, 0x076a0111,
+    0x076b0111, 0x076c0111, 0x076d0111, 0x076e0111, 0x076f0111, 0x07700111, 0x07710111, 0x07720111,
+    0x07730111, 0x07740111, 0x07750111, 0x07760111, 0x07770111, 0x07780111, 0x07790111, 0x077a0111,
+    0x077b0111, 0x077c0111, 0x077d0111, 0x077e0111, 0x077f0111, 0x07800111, 0x07810111, 0x07820111,
+    0x07830111, 0x07840111, 0x07850111, 0x07860111, 0x07870111, 0x07880111, 0x07890111, 0x078a0111,
+    0x078b0111, 0x078c0111, 0x078d0111, 0x078e0111, 0x078f0111, 0x07900111, 0x07910111, 0x07920111,
+    0x07930111, 0x07940111, 0x07950111, 0x07960111, 0x07970111, 0x07980111, 0x07990111, 0x079a0111,
+    0x079b0111, 0x079c0111, 0x079d0111, 0x079e0111, 0x079f0111, 0x07a00111, 0x07a10111, 0x07a20111,
+    0x07a30111, 0x07a40111, 0x07a50111, 0x07a60111, 0x07a70111, 0x07a80111, 0x07a90111, 0x07aa0111,
+    0x07ab0111, 0x07ac0111, 0x07ad0111, 0x07ae0111, 0x07af0111, 0x07b00111, 0x07b10111, 0x07b20111,
+    0x07b30111, 0x07b40111, 0x07b50111, 0x07b60111, 0x07b70111, 0x07b80111, 0x07b90111, 0x07ba0111,
+    0x07bb0111, 0x07bc0111, 0x07bd0111, 0x07be0111, 0x07bf0111, 0x07c00111, 0x07c10111, 0x07c20111,
+    0x07c30111, 0x07c40111, 0x07c50111, 0x07c60111, 0x07c70111, 0x07c80111, 0x07c90111, 0x07ca0111,
+    0x07cb0111, 0x07cc0111, 0x07cd0111, 0x07ce0111, 0x07cf0111, 0x07d00111, 0x07d10111, 0x07d20111,
+    0x07d30111, 0x07d40111, 0x07d50111, 0x07d60111, 0x07d70111, 0x07d80111, 0x07d90111, 0x07da0111,
+    0x07db0111, 0x07dc0111, 0x07dd0111, 0x07de0111, 0x07df0111, 0x07e00111, 0x07e10111, 0x07e20111,
+    0x07e30111, 0x07e40111, 0x07e50111, 0x07e60111, 0x07e70111, 0x07e80111, 0x07e90111, 0x07ea0111,
+    0x07eb0111, 0x07ec0111, 0x07ed0111, 0x07ee0111, 0x07ef0111, 0x07f00111, 0x07f10111, 0x07f20111,
+    0x07f30111, 0x07f40111, 0x07f50111, 0x07f60111, 0x07f70111, 0x07f80111, 0x07f90111, 0x07fa0111,
+    0x07fb0111, 0x07fc0111, 0x07fd0111, 0x07fe0111, 0x07ff0111, 0x08000111, 0x08010111, 0x08020111,
+    0x08030111, 0x08040111, 0x08050111, 0x08060111, 0x08070111, 0x08080111, 0x08090111, 0x080a0111,
+    /* 0x2e00 .. 0x2eff */
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xfb400121, 0xfb400121, 0xfb400111, 0xfb400111, 0xfb400121, 0xfb400111, 0xfb400121, 0xfb400121,
+    0xfb400121, 0xfb400111, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400111,
+    0xfb400111, 0xfb400121, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400121, 0xfb400111, 0xfb400121,
+    0xfb400111, 0xfb400111, 0xffffffff, 0xfb400111, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121,
+    0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400121, 0xfb400111, 0xfb400121,
+    0xfb400111, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400111, 0xfb400121, 0xfb400111,
+    0xfb400111, 0xfb400111, 0xfb400111, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121,
+    0xfb400111, 0xfb410111, 0xfb410111, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410111, 0xfb410121,
+    0xfb410121, 0xfb410111, 0xfb410111, 0xfb410111, 0xfb410111, 0xfb410111, 0xfb410111, 0xfb410121,
+    0xfb410111, 0xfb410111, 0xfb410121, 0xfb410111, 0xfb410111, 0xfb410121, 0xfb410121, 0xfb410121,
+    0xfb410111, 0xfb410111, 0xfb410111, 0xfb410111, 0xfb410111, 0xfb410121, 0xfb410111, 0xfb410121,
+    0xfb410111, 0xfb410111, 0xfb410111, 0xfb410111, 0xfb410111, 0xfb410111, 0xfb410121, 0xfb410111,
+    0xfb410111, 0xfb410121, 0xfb410111, 0xfb410121, 0xfb410121, 0xfb410111, 0xfb410111, 0xfb410121,
+    0xfb410111, 0xfb410111, 0xfb410111, 0xfb410121, 0xfb410111, 0xfb410121, 0xfb410111, 0xfb410121,
+    0xfb410111, 0xfb410121, 0xfb410121, 0xfb410121, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x2f00 .. 0x2fff */
+    0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121,
+    0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121,
+    0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121,
+    0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121,
+    0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121,
+    0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121,
+    0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121,
+    0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121,
+    0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121,
+    0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121,
+    0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121,
+    0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121,
+    0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121,
+    0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121,
+    0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121,
+    0xfb400121, 0xfb400121, 0xfb400121, 0xfb400121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121,
+    0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121,
+    0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121,
+    0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121,
+    0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121,
+    0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121,
+    0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121,
+    0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121,
+    0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121,
+    0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121,
+    0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121,
+    0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xfb410121, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x09a90111, 0x09aa0111, 0x09ab0111, 0x09ac0111, 0x09ad0111, 0x09ae0111, 0x09af0111, 0x09b00111,
+    0x09b10111, 0x09b20111, 0x09b30111, 0x09b40111, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x3000 .. 0x30ff */
+    0x02090121, 0x02340111, 0x025e0111, 0x02b80111, 0x09b50111, 0x09d70111, 0x192c0111, 0x0a0b0111,
+    0x02880111, 0x02890111, 0x028a0111, 0x028b0111, 0x028c0111, 0x028d0111, 0x028e0111, 0x028f0111,
+    0x02900111, 0x02910111, 0x09b60111, 0x09b70111, 0x02920111, 0x02930111, 0x02940111, 0x02950111,
+    0x02960111, 0x02970111, 0x02980111, 0x02990111, 0x022a0111, 0x02750111, 0x02760111, 0x02770111,
+    0x09b80111, 0x0a0c0111, 0x0a0d0111, 0x0a0e0111, 0x0a0f0111, 0x0a100111, 0x0a110111, 0x0a120111,
+    0x0a130111, 0x0a140111, 0x0000dc11, 0x0000dd11, 0x0000de11, 0x0000df11, 0x0000e011, 0x0000e111,
+    0x022b0111, 0x09d80111, 0x09d80111, 0x09d90111, 0x09d90111, 0x09da0111, 0x09b60121, 0x09b90111,
+    0xfb400121, 0xfb400121, 0xfb400121, 0xffffffff, 0xffffffff, 0xffffffff, 0x09ba0111, 0x09bb0111,
+    0xffffffff, 0x19210111, 0x19210121, 0x19220111, 0x19220121, 0x19230111, 0x19230121, 0x19240111,
+    0x19240121, 0x19250111, 0x19250121, 0x19260111, 0x19260111, 0x19270111, 0x19270111, 0x19280111,
+    0x19280111, 0x19290111, 0x19290111, 0x192a0111, 0x192a0111, 0x192b0111, 0x192b0111, 0x192c0121,
+    0x192c0121, 0x192d0111, 0x192d0111, 0x192e0111, 0x192e0111, 0x192f0111, 0x192f0111, 0x19300111,
+    0x19300111, 0x19310111, 0x19310111, 0x19320111, 0x19320121, 0x19320121, 0x19330111, 0x19330111,
+    0x19340111, 0x19340111, 0x19350111, 0x19360111, 0x19370111, 0x19380111, 0x19390111, 0x193a0111,
+    0x193a0111, 0x193a0111, 0x193b0111, 0x193b0111, 0x193b0111, 0x193c0111, 0x193c0111, 0x193c0111,
+    0x193d0111, 0x193d0111, 0x193d0111, 0x193e0111, 0x193e0111, 0x193e0111, 0x193f0111, 0x19400111,
+    0x19410111, 0x19420111, 0x19430111, 0x19440111, 0x19440121, 0x19450111, 0x19450121, 0x19460111,
+    0x19460121, 0x19470111, 0x19480111, 0x19490111, 0x194a0111, 0x194b0111, 0x194c0111, 0x194c0121,
+    0x194d0111, 0x194e0111, 0x194f0111, 0x19500111, 0x19230121, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0x0000e211, 0x0000e311, 0x021e0111, 0x021f0111, 0x09db0111, 0x09db0111, 0xffffffff,
+    0xffffffff, 0x19210131, 0x19210151, 0x19220131, 0x19220151, 0x19230131, 0x19230151, 0x19240131,
+    0x19240151, 0x19250131, 0x19250151, 0x19260131, 0x19260131, 0x19270121, 0x19270121, 0x19280121,
+    0x19280121, 0x19290131, 0x19290131, 0x192a0121, 0x192a0121, 0x192b0121, 0x192b0121, 0x192c0131,
+    0x192c0131, 0x192d0121, 0x192d0121, 0x192e0121, 0x192e0121, 0x192f0121, 0x192f0121, 0x19300121,
+    0x19300121, 0x19310121, 0x19310121, 0x19320131, 0x19320151, 0x19320151, 0x19330121, 0x19330121,
+    0x19340121, 0x19340121, 0x19350121, 0x19360121, 0x19370121, 0x19380121, 0x19390121, 0x193a0121,
+    0x193a0121, 0x193a0121, 0x193b0121, 0x193b0121, 0x193b0121, 0x193c0121, 0x193c0121, 0x193c0121,
+    0x193d0121, 0x193d0121, 0x193d0121, 0x193e0121, 0x193e0121, 0x193e0121, 0x193f0121, 0x19400121,
+    0x19410121, 0x19420121, 0x19430121, 0x19440131, 0x19440151, 0x19450131, 0x19450151, 0x19460131,
+    0x19460151, 0x19470121, 0x19480121, 0x19490121, 0x194a0121, 0x194b0121, 0x194c0131, 0x194c0141,
+    0x194d0121, 0x194e0121, 0x194f0121, 0x19500121, 0x19230151, 0x19260121, 0x19290121, 0x194c0141,
+    0x194d0121, 0x194e0121, 0x194f0121, 0x022c0111, 0x09dc0111, 0x09dd0111, 0x09dd0111, 0xffffffff,
+    /* 0x3100 .. 0x31ff */
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x19510111, 0x19520111, 0x19530111,
+    0x19540111, 0x19560111, 0x19570111, 0x19580111, 0x19590111, 0x195a0111, 0x195b0111, 0x195e0111,
+    0x195f0111, 0x19600111, 0x19610111, 0x19630111, 0x19640111, 0x19650111, 0x19660111, 0x19670111,
+    0x19680111, 0x19690111, 0x196a0111, 0x196b0111, 0x196d0111, 0x196e0111, 0x19700111, 0x19710111,
+    0x19720111, 0x19730111, 0x19740111, 0x19750111, 0x19760111, 0x19780111, 0x197c0111, 0x197d0111,
+    0x197e0111, 0x197f0111, 0x19550111, 0x195c0111, 0x19620111, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0x18310121, 0x18320121, 0x18d10121, 0x18330121, 0x18d30121, 0x18d40121, 0x18340121,
+    0x18350121, 0x18360121, 0x18d70121, 0x18d80121, 0x18d90121, 0x18da0121, 0x18db0121, 0x18dc0121,
+    0x184b0121, 0x18370121, 0x18380121, 0x18390121, 0x18520121, 0x183a0121, 0x183b0121, 0x183c0121,
+    0x183d0121, 0x183e0121, 0x183f0121, 0x18400121, 0x18410121, 0x18420121, 0x18430121, 0x188d0121,
+    0x188e0121, 0x188f0121, 0x18900121, 0x18910121, 0x18920121, 0x18930121, 0x18940121, 0x18950121,
+    0x18960121, 0x18970121, 0x18980121, 0x18990121, 0x189a0121, 0x189b0121, 0x189c0121, 0x189d0121,
+    0x189e0121, 0x189f0121, 0x18a00121, 0x18a10121, 0x188c0121, 0x18450121, 0x18460121, 0x18ee0121,
+    0x18ef0121, 0x18f30121, 0x18f50121, 0x18fa0121, 0x18fe0121, 0x19000121, 0x184d0121, 0x19040121,
+    0x19060121, 0x184e0121, 0x184f0121, 0x18510121, 0x18530121, 0x18540121, 0x18580121, 0x185a0121,
+    0x185c0121, 0x185d0121, 0x185e0121, 0x185f0121, 0x18600121, 0x18630121, 0x18670121, 0x18710121,
+    0x18780121, 0x187d0121, 0x19180121, 0x19190121, 0x18880121, 0x18890121, 0x188a0121, 0x18b00121,
+    0x18b10121, 0x18b40121, 0x18bd0121, 0x18be0121, 0x18c00121, 0x18ca0121, 0x18cd0121, 0xffffffff,
+    0x09bc0111, 0x09bd0111, 0xfb400141, 0xfb400141, 0xfb400141, 0xfb400141, 0xfb400141, 0xfb400141,
+    0xfb400141, 0xfb400141, 0xfb400141, 0xfb400141, 0xfb400141, 0xfb400141, 0xfb400141, 0xfb400141,
+    0x19510121, 0x19670121, 0x195f0121, 0x195a0121, 0x196f0111, 0x196f0121, 0x196c0111, 0x196b0121,
+    0x197e0121, 0x196a0121, 0x197d0121, 0x197e0121, 0x197b0111, 0x195d0111, 0x19700121, 0x19720121,
+    0x19790111, 0x197a0111, 0x19770111, 0x197d0131, 0x19520121, 0x19570121, 0x195b0121, 0x195e0121,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0x3200 .. 0x32ff */
+    0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131,
+    0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131,
+    0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131,
+    0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131,
+    0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131,
+    0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131,
+    0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131,
+    0x027a0131, 0x027a0131, 0x027a0131, 0x027a0131, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x18310131, 0x18330131, 0x18340131, 0x18360131, 0x18370131, 0x18380131, 0x183a0131, 0x183c0131,
+    0x183d0131, 0x183f0131, 0x18400131, 0x18410131, 0x18420131, 0x18430131, 0x18310131, 0x18330131,
+    0x18340131, 0x18360131, 0x18370131, 0x18380131, 0x183a0131, 0x183c0131, 0x183d0131, 0x183f0131,
+    0x18400131, 0x18410131, 0x18420131, 0x18430131, 0xffffffff, 0xffffffff, 0xffffffff, 0x09be0111,
+    0xfb400131, 0xfb400131, 0xfb400131, 0xfb400131, 0xfb400131, 0xfb400131, 0xfb400131, 0xfb400131,
+    0xfb400131, 0xfb400131, 0xfb400131, 0xfb400131, 0xfb400131, 0xfb400131, 0xfb410131, 0xfb400131,
+    0xfb400131, 0xfb400131, 0xfb400131, 0xfb400131, 0xfb400131, 0xfb400131, 0xfb410131, 0xfb400131,
+    0xfb400131, 0xfb400131, 0xfb400131, 0xfb400131, 0xfb410131, 0xfb400131, 0xfb400131, 0xfb400131,
+    0xfb410131, 0xfb400131, 0xfb400131, 0xfb400131, 0xfb400131, 0xfb400131, 0xfb400131, 0xfb400131,
+    0xfb400131, 0xfb400131, 0xfb400131, 0xfb400131, 0xfb400131, 0xfb400131, 0xfb410131, 0xfb400131,
+    0xfb400131, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x0a0c0131, 0x0a0d0131, 0x0a0e0131, 0x0a0f0131, 0x0a100131, 0x0a110131, 0x0a120131, 0x0a130131,
+    0x0a140131, 0x0a0c0131, 0x0a0c0131, 0x0a0c0131, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x19210171, 0x19220171, 0x19230171, 0x19240171, 0x19250171, 0x19260151, 0x19270141, 0x19280141,
+    0x19290151, 0x192a0141, 0x192b0141, 0x192c0151, 0x192d0141, 0x192e0141, 0x192f0141, 0x19300141,
+    0x19310141, 0x19320171, 0x19330141, 0x19340141, 0x19350141, 0x19360141, 0x19370141, 0x19380141,
+    0x19390141, 0x193a0141, 0x193b0141, 0x193c0141, 0x193d0141, 0x193e0141, 0x193f0141, 0x19400141,
+    0x19410141, 0x19420141, 0x19430141, 0x19440171, 0x19450171, 0x19460171, 0x19470141, 0x19480141,
+    0x19490141, 0x194a0141, 0x194b0141, 0x194c0161, 0x194d0131, 0x194e0131, 0x194f0141, 0xffffffff,
+    /* 0x3300 .. 0x33ff */
+    0x19210181, 0x19210181, 0x19210181, 0x19210181, 0x19220181, 0x19220181, 0x19230181, 0x19240181,
+    0x19240181, 0x19250181, 0x19250181, 0x19260161, 0x19260161, 0x19260161, 0x19260161, 0x19260161,
+    0x19270151, 0x19270151, 0x19270151, 0x19270151, 0x19270151, 0x19270151, 0x19270151, 0x19270151,
+    0x19280151, 0x19280151, 0x19280151, 0x19280151, 0x19290161, 0x192a0151, 0x192a0151, 0x192b0151,
+    0x192b0151, 0x192c0161, 0x192e0151, 0x192e0151, 0x19300151, 0x19330151, 0x19340151, 0x19340151,
+    0x19350151, 0x19390151, 0x193a0151, 0x193a0151, 0x193a0151, 0x193a0151, 0x193b0151, 0x193b0151,
+    0x193b0151, 0x193b0151, 0x193c0151, 0x193c0151, 0x193c0151, 0x193c0151, 0x193d0151, 0x193d0151,
+    0x193d0151, 0x193d0151, 0x193d0151, 0x193d0151, 0x193d0151, 0x193e0151, 0x193e0151, 0x193e0151,
+    0x193e0151, 0x193e0151, 0x193e0151, 0x193f0151, 0x193f0151, 0x193f0151, 0x193f0151, 0x193f0151,
+    0x19400151, 0x19400151, 0x19400151, 0x19420151, 0x19420151, 0x19420151, 0x19440181, 0x19440181,
+    0x19450181, 0x19480151, 0x19480151, 0x19490151, 0x19490151, 0x194a0151, 0x194a0151, 0x194c0171,
+    0x0a0b0131, 0x0a0c0131, 0x0a0d0131, 0x0a0e0131, 0x0a0f0131, 0x0a100131, 0x0a110131, 0x0a120131,
+    0x0a130131, 0x0a140131, 0x0a0c0131, 0x0a0c0131, 0x0a0c0131, 0x0a0c0131, 0x0a0c0131, 0x0a0c0131,
+    0x0a0c0131, 0x0a0c0131, 0x0a0c0131, 0x0a0c0131, 0x0a0d0131, 0x0a0d0131, 0x0a0d0131, 0x0a0d0131,
+    0x0a0d0131, 0x0ab901a1, 0x0a490191, 0x0a1501a1, 0x0a290181, 0x0b4b01b1, 0x0b670181, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xfb400151, 0xfb400151, 0xfb400151, 0xfb400151, 0xfb400151,
+    0x0b670181, 0x0b3301b1, 0x0c9f0141, 0x0b2b01a1, 0x0af70171, 0x0af70181, 0x0b2b01b1, 0x0a990181,
+    0x0a3d01a1, 0x0af70171, 0x0b670181, 0x0b3301b1, 0x0c9f0141, 0x0c9f0141, 0x0b2b01a1, 0x0af70171,
+    0x0ab901b1, 0x0af70171, 0x0b2b01b1, 0x0a990181, 0x0bbf01a1, 0x0c9f0141, 0x0b2b01a1, 0x0a490191,
+    0x0af70171, 0x0a910191, 0x0b3301b1, 0x0c9f0141, 0x0b2b01a1, 0x0a3d01a1, 0x0af70171, 0x0b2b01a1,
+    0x0a3d01a1, 0x0b2b01a1, 0x0af70171, 0x0b2b01a1, 0x0a3d01a1, 0x0b2b01a1, 0x0af70171, 0x0b2b01a1,
+    0x0b2b01a1, 0x0b670191, 0x0af70171, 0x0b2b01b1, 0x0a990181, 0x0b7f01a1, 0x0b7f01a1, 0x0b7f01a1,
+    0x0b670181, 0x0b3301b1, 0x0c9f0141, 0x0b2b01a1, 0x0b670181, 0x0b3301b1, 0x0c9f0141, 0x0b2b01a1,
+    0x0af70171, 0x0b2b01b1, 0x0b670181, 0x0b3301b1, 0x0c9f0141, 0x0b2b01a1, 0x0af70171, 0x0b2b01b1,
+    0x0af70171, 0x0b2b01b1, 0x0a150191, 0x0a290191, 0x0a3d01a1, 0x0a3d01a1, 0x0a3d01b1, 0x0a3d01b1,
+    0x0a490191, 0x0a990181, 0x0ab901a1, 0x0ab901b1, 0x0ad301b1, 0x0af70181, 0x0af70181, 0x0af70171,
+    0x0b0301c1, 0x0b0301c1, 0x0b0301c1, 0x0b0301c1, 0x0b2b01a1, 0x0b2b01a1, 0x0b2b01a1, 0x0b670191,
+    0x0b670181, 0x0b670191, 0x0b670191, 0x0ba70191, 0x0ba701a1, 0x0bfb0181, 0xffffffff, 0xffffffff,
+    0x0a0c0131, 0x0a0d0131, 0x0a0e0131, 0x0a0f0131, 0x0a100131, 0x0a110131, 0x0a120131, 0x0a130131,
+    0x0a140131, 0x0a0c0131, 0x0a0c0131, 0x0a0c0131, 0x0a0c0131, 0x0a0c0131, 0x0a0c0131, 0x0a0c0131,
+    0x0a0c0131, 0x0a0c0131, 0x0a0c0131, 0x0a0d0131, 0x0a0d0131, 0x0a0d0131, 0x0a0d0131, 0x0a0d0131,
+    0x0a0d0131, 0x0a0d0131, 0x0a0d0131, 0x0a0d0131, 0x0a0d0131, 0x0a0e0131, 0x0a0e0131, 0xffffffff,
+    /* 0xf900 .. 0xf9ff */
+    0xfb410111, 0xfb400111, 0xfb410111, 0xfb410111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb410111,
+    0xfb410111, 0xfb400111, 0xfb410111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111,
+    0xfb410111, 0xfb410111, 0xfb410111, 0xfb410111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111,
+    0xfb410111, 0xfb410111, 0xfb410111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb410111,
+    0xfb410111, 0xfb400111, 0xfb400111, 0xfb410111, 0xfb410111, 0xfb400111, 0xfb410111, 0xfb410111,
+    0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb410111, 0xfb400111, 0xfb400111, 0xfb400111,
+    0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb410111, 0xfb410111, 0xfb410111, 0xfb410111,
+    0xfb410111, 0xfb410111, 0xfb410111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb410111, 0xfb410111,
+    0xfb410111, 0xfb410111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb410111, 0xfb400111, 0xfb400111,
+    0xfb410111, 0xfb410111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111,
+    0xfb400111, 0xfb410111, 0xfb400111, 0xfb410111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111,
+    0xfb410111, 0xfb410111, 0xfb410111, 0xfb400111, 0xfb400111, 0xfb410111, 0xfb400111, 0xfb400111,
+    0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111,
+    0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb410111, 0xfb410111,
+    0xfb400111, 0xfb410111, 0xfb400111, 0xfb400111, 0xfb410111, 0xfb400111, 0xfb400111, 0xfb400111,
+    0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb410111, 0xfb410111, 0xfb410111, 0xfb400111,
+    0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb410111, 0xfb410111,
+    0xfb410111, 0xfb410111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb410111, 0xfb400111, 0xfb400111,
+    0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb410111,
+    0xfb410111, 0xfb410111, 0xfb410111, 0xfb410111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111,
+    0xfb410111, 0xfb410111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111,
+    0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111,
+    0xfb410111, 0xfb410111, 0xfb410111, 0xfb410111, 0xfb410111, 0xfb400111, 0xfb400111, 0xfb410111,
+    0xfb410111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111,
+    0xfb400111, 0xfb400111, 0xfb410111, 0xfb410111, 0xfb410111, 0xfb400111, 0xfb410111, 0xfb400111,
+    0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111,
+    0xfb410111, 0xfb400111, 0xfb400111, 0xfb410111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb410111,
+    0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb410111, 0xfb400111, 0xfb400111, 0xfb400111,
+    0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb410111,
+    0xfb410111, 0xfb410111, 0xfb410111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111,
+    0xfb410111, 0xfb410111, 0xfb410111, 0xfb410111, 0xfb400111, 0xfb400111, 0xfb410111, 0xfb400111,
+    0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb410111, 0xfb400111, 0xfb410111, 0xfb400111,
+    /* 0xfa00 .. 0xfaff */
+    0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb410111,
+    0xfb410111, 0xfb410111, 0xfb410111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb410111, 0xfb410111,
+    0xfb400111, 0xfb410111, 0xfb400111, 0xfb410111, 0xfb410111, 0xfb400111, 0xfb400111, 0xfb400111,
+    0xfb400111, 0xfb400111, 0xfb400111, 0xfb400111, 0xfb410111, 0xfb400111, 0xfb400111, 0xfb410111,
+    0xfb410111, 0xfb410111, 0xfb410111, 0xfb410111, 0xfb410111, 0xfb410111, 0xfb410111, 0xfb410111,
+    0xfb410111, 0xfb410111, 0xfb410111, 0xfb410111, 0xfb410111, 0xfb410111, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0xfb00 .. 0xfbff */
+    0x0a910131, 0x0a910131, 0x0a910131, 0x0a910131, 0x0a910131, 0x0ba70131, 0x0ba70131, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0x0ea30121, 0x0ea30121, 0x0ea30121, 0x0ead0121, 0x0ea30121,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0ec00111, 0x00006711, 0x0ec00121,
+    0x0ec60121, 0x0eb70131, 0x0eba0131, 0x0ebb0121, 0x0ec10121, 0x0ec20121, 0x0ec30121, 0x0eca0121,
+    0x0ecc0121, 0x039f0131, 0x0ecb0111, 0x0ecb0111, 0x0ecb0111, 0x0ecb0111, 0x0eb70111, 0x0eb70111,
+    0x0eb70111, 0x0eb80111, 0x0eb90111, 0x0eba0111, 0x0ebb0111, 0x0ebc0111, 0x0ebd0111, 0xffffffff,
+    0x0ebf0111, 0x0ec00111, 0x0ec10131, 0x0ec10111, 0x0ec20111, 0xffffffff, 0x0ec30111, 0xffffffff,
+    0x0ec40111, 0x0ec50111, 0xffffffff, 0x0ec70121, 0x0ec70111, 0xffffffff, 0x0ec80111, 0x0ec90111,
+    0x0eca0111, 0x0ecb0111, 0x0ecc0111, 0x0ebc0111, 0x0eb80111, 0x0ec10111, 0x0ec70111, 0x0eb70121,
+    0x0ed10131, 0x0ed10121, 0x0ed80151, 0x0ed80141, 0x0ed80121, 0x0ed80131, 0x0ed90151, 0x0ed90141,
+    0x0ed90121, 0x0ed90131, 0x0eda0151, 0x0eda0141, 0x0eda0121, 0x0eda0131, 0x0edf0151, 0x0edf0141,
+    0x0edf0121, 0x0edf0131, 0x0ee20151, 0x0ee20141, 0x0ee20121, 0x0ee20131, 0x0ede0151, 0x0ede0141,
+    0x0ede0121, 0x0ede0131, 0x0f1a0151, 0x0f1a0141, 0x0f1a0121, 0x0f1a0131, 0x0f1c0151, 0x0f1c0141,
+    0x0f1c0121, 0x0f1c0131, 0x0ee50151, 0x0ee50141, 0x0ee50121, 0x0ee50131, 0x0ee40151, 0x0ee40141,
+    0x0ee40121, 0x0ee40131, 0x0ee60151, 0x0ee60141, 0x0ee60121, 0x0ee60131, 0x0ee80151, 0x0ee80141,
+    0x0ee80121, 0x0ee80131, 0x0ef50131, 0x0ef50121, 0x0ef40131, 0x0ef40121, 0x0ef60131, 0x0ef60121,
+    0x0ef00131, 0x0ef00121, 0x0f020131, 0x0f020121, 0x0efb0131, 0x0efb0121, 0x0f210151, 0x0f210141,
+    0x0f210121, 0x0f210131, 0x0f270151, 0x0f270141, 0x0f270121, 0x0f270131, 0x0f2b0151, 0x0f2b0141,
+    0x0f2b0121, 0x0f2b0131, 0x0f290151, 0x0f290141, 0x0f290121, 0x0f290131, 0x0f340131, 0x0f340121,
+    0x0f350151, 0x0f350141, 0x0f350121, 0x0f350131, 0x0f3d0131, 0x0f3d0121, 0x0f3b0151, 0x0f3b0141,
+    0x0f3b0121, 0x0f3b0131, 0x0f3a0151, 0x0f3a0141, 0x0f3a0121, 0x0f3a0131, 0x0f4f0131, 0x0f4f0121,
+    0x0f4f0131, 0x0f4f0121, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0x0f250151, 0x0f250141, 0x0f250121, 0x0f250131, 0x0f420141,
+    0x0f420131, 0x0f410131, 0x0f410121, 0x0f430131, 0x0f430121, 0x0f420141, 0x0f460131, 0x0f460121,
+    0x0f400131, 0x0f400121, 0x0f440131, 0x0f440121, 0x0f4d0151, 0x0f4d0141, 0x0f4d0121, 0x0f4d0131,
+    0x0f480121, 0x0f480131, 0x0ed50151, 0x0ed50141, 0x0ed50151, 0x0ed50141, 0x0ed50151, 0x0ed50141,
+    0x0ed50151, 0x0ed50141, 0x0ed50151, 0x0ed50141, 0x0ed50151, 0x0ed50141, 0x0ed50151, 0x0ed50141,
+    0x0ed50121, 0x0ed50151, 0x0ed50141, 0x0ed50121, 0x0f4a0151, 0x0f4a0141, 0x0f4a0121, 0x0f4a0131,
+    /* 0xfc00 .. 0xfcff */
+    0x0ed50151, 0x0ed50151, 0x0ed50151, 0x0ed50151, 0x0ed50151, 0x0ed70151, 0x0ed70151, 0x0ed70151,
+    0x0ed70151, 0x0ed70151, 0x0ed70151, 0x0edc0151, 0x0edc0151, 0x0edc0151, 0x0edc0151, 0x0edc0151,
+    0x0edc0151, 0x0edd0151, 0x0edd0151, 0x0edd0151, 0x0edd0151, 0x0ee30151, 0x0ee30151, 0x0ee90151,
+    0x0ee90151, 0x0eea0151, 0x0eea0151, 0x0eea0151, 0x0f040151, 0x0f040151, 0x0f040151, 0x0f040151,
+    0x0f0a0151, 0x0f0a0151, 0x0f0b0151, 0x0f0b0151, 0x0f0b0151, 0x0f0b0151, 0x0f0f0151, 0x0f0f0151,
+    0x0f100151, 0x0f120151, 0x0f120151, 0x0f130151, 0x0f130151, 0x0f160151, 0x0f160151, 0x0f160151,
+    0x0f160151, 0x0f160151, 0x0f160151, 0x0f1d0151, 0x0f1d0151, 0x0f1d0151, 0x0f1d0151, 0x0f200151,
+    0x0f200151, 0x0f200151, 0x0f200151, 0x0f200151, 0x0f200151, 0x0f200151, 0x0f200151, 0x0f2d0151,
+    0x0f2d0151, 0x0f2d0151, 0x0f2d0151, 0x0f2d0151, 0x0f2d0151, 0x0f320161, 0x0f320161, 0x0f320161,
+    0x0f320161, 0x0f320161, 0x0f320161, 0x0f330151, 0x0f330151, 0x0f330151, 0x0f330151, 0x0f330151,
+    0x0f330151, 0x0f390151, 0x0f390151, 0x0f390151, 0x0f390151, 0x0f490161, 0x0f490161, 0x0f490161,
+    0x0f490161, 0x0f490161, 0x0f490161, 0x0eef0131, 0x0ef90131, 0x0f480151, 0x00006e31, 0x00006e31,
+    0x00006e31, 0x00006e31, 0x00006e31, 0x00006e31, 0x0ed50141, 0x0ed50141, 0x0ed50141, 0x0ed50141,
+    0x0ed50141, 0x0ed50141, 0x0ed70141, 0x0ed70141, 0x0ed70141, 0x0ed70141, 0x0ed70141, 0x0ed70141,
+    0x0edc0141, 0x0edc0141, 0x0edc0141, 0x0edc0141, 0x0edc0141, 0x0edc0141, 0x0edd0141, 0x0edd0141,
+    0x0edd0141, 0x0edd0141, 0x0edd0141, 0x0edd0141, 0x0f160141, 0x0f160141, 0x0f1d0141, 0x0f1d0141,
+    0x0f200141, 0x0f200141, 0x0f200141, 0x0f200141, 0x0f200141, 0x0f2d0141, 0x0f2d0141, 0x0f2d0141,
+    0x0f320151, 0x0f320151, 0x0f330141, 0x0f330141, 0x0f330141, 0x0f330141, 0x0f330141, 0x0f330141,
+    0x0f480141, 0x0f490151, 0x0f490151, 0x0f490151, 0x0f490151, 0x0f490151, 0x0f490151, 0x0ed50121,
+    0x0ed50121, 0x0ed50121, 0x0ed50121, 0x0ed50121, 0x0ed70121, 0x0ed70121, 0x0ed70121, 0x0ed70121,
+    0x0ed70121, 0x0edc0121, 0x0edc0121, 0x0edc0121, 0x0edc0121, 0x0edc0121, 0x0edd0121, 0x0ee30121,
+    0x0ee30121, 0x0ee90121, 0x0ee90121, 0x0eea0121, 0x0eea0121, 0x0f040121, 0x0f040121, 0x0f040121,
+    0x0f040121, 0x0f0a0121, 0x0f0a0121, 0x0f0a0121, 0x0f0b0121, 0x0f0b0121, 0x0f0b0121, 0x0f0b0121,
+    0x0f0f0121, 0x0f100121, 0x0f120121, 0x0f120121, 0x0f130121, 0x0f130121, 0x0f160121, 0x0f160121,
+    0x0f160121, 0x0f160121, 0x0f1d0121, 0x0f1d0121, 0x0f200121, 0x0f200121, 0x0f200121, 0x0f200121,
+    0x0f200121, 0x0f2d0121, 0x0f2d0121, 0x0f2d0121, 0x0f2d0121, 0x0f2d0121, 0x0f320131, 0x0f320131,
+    0x0f320131, 0x0f320131, 0x0f330121, 0x0f330121, 0x0f330121, 0x0f330121, 0x0f330121, 0x0f390121,
+    0x0f390121, 0x0f390121, 0x0f490131, 0x0f490131, 0x0f490131, 0x0f490131, 0x0f490131, 0x0ed50131,
+    0x0ed50131, 0x0ed70131, 0x0ed70131, 0x0edc0131, 0x0edc0131, 0x0edd0131, 0x0edd0131, 0x0f040131,
+    0x0f040131, 0x0f050131, 0x0f050131, 0x0f200131, 0x0f200131, 0x0f2d0131, 0x0f330131, 0x0f330131,
+    0x0f490141, 0x0f490141, 0x00006e21, 0x00006e21, 0x00006e21, 0x0f0f0151, 0x0f0f0151, 0x0f120151,
+    0x0f120151, 0x0f130151, 0x0f130151, 0x0f040151, 0x0f040151, 0x0f050151, 0x0f050151, 0x0ee90151,
+    /* 0xfd00 .. 0xfdff */
+    0x0ee90151, 0x0ee30151, 0x0ee30151, 0x0eea0151, 0x0eea0151, 0x0f0a0151, 0x0f0a0151, 0x0f0b0151,
+    0x0f0b0151, 0x0f050151, 0x0f050151, 0x0f050151, 0x0f050151, 0x0f050151, 0x0f040151, 0x0f0a0151,
+    0x0f0b0151, 0x0f0f0141, 0x0f0f0141, 0x0f120141, 0x0f120141, 0x0f130141, 0x0f130141, 0x0f040141,
+    0x0f040141, 0x0f050141, 0x0f050141, 0x0ee90141, 0x0ee90141, 0x0ee30141, 0x0ee30141, 0x0eea0141,
+    0x0eea0141, 0x0f0a0141, 0x0f0a0141, 0x0f0b0141, 0x0f0b0141, 0x0f050141, 0x0f050141, 0x0f050141,
+    0x0f050141, 0x0f050141, 0x0f040141, 0x0f0a0141, 0x0f0b0141, 0x0f050121, 0x0f050121, 0x0f050121,
+    0x0f050121, 0x0f040121, 0x0f050121, 0x0f0f0121, 0x0f040131, 0x0f040131, 0x0f040131, 0x0f050131,
+    0x0f050131, 0x0f050131, 0x0f0f0131, 0x0f100131, 0x0ed60131, 0x0ed60141, 0x029a0111, 0x029b0111,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x0edc0121, 0x0edc0141, 0x0edc0121, 0x0edc0121, 0x0edc0121, 0x0edc0121, 0x0edc0121, 0x0edc0121,
+    0x0ee30141, 0x0ee30121, 0x0ee90141, 0x0ee90141, 0x0f040121, 0x0f040121, 0x0f040141, 0x0f040141,
+    0x0f040121, 0x0f040121, 0x0f040141, 0x0f040121, 0x0f0a0141, 0x0f0a0121, 0x0f0a0141, 0x0f050141,
+    0x0f050121, 0x0f050141, 0x0f050141, 0x0f050121, 0x0f050141, 0x0f050121, 0x0f0b0141, 0x0f0b0141,
+    0x0f0b0121, 0x0f0f0141, 0x0f0f0121, 0x0f0f0121, 0x0f0f0141, 0x0f120141, 0x0f120141, 0x0f120121,
+    0x0f120141, 0x0f130141, 0x0f130141, 0x0f130141, 0x0f160141, 0x0f160121, 0x0f1d0141, 0x0f1d0141,
+    0x0f2d0141, 0x0f2d0141, 0x0f2d0141, 0x0f2d0121, 0x0f2d0141, 0x0f2d0141, 0x0f2d0121, 0x0f2d0141,
+    0x0f2d0121, 0x0f320131, 0x0f320131, 0x0f320151, 0x0f320131, 0x0f320131, 0x0f320131, 0x0f320131,
+    0xffffffff, 0xffffffff, 0x0f320131, 0x0f390121, 0x0f390121, 0x0f330121, 0x0f330141, 0x0f330141,
+    0x0f330121, 0x0f330141, 0x0f330141, 0x0f330141, 0x0f490151, 0x0f490131, 0x0ed70141, 0x0edc0141,
+    0x0edc0141, 0x0edc0141, 0x0edc0141, 0x0edc0141, 0x0edc0141, 0x0ee30141, 0x0ee30141, 0x0ee30141,
+    0x0f040141, 0x0f0a0141, 0x0f050141, 0x0f0b0141, 0x0f2d0141, 0x0f2d0141, 0x0f490151, 0x0f490151,
+    0x0f490151, 0x0f320151, 0x0f1d0141, 0x0f330141, 0x0f1d0121, 0x0f2d0121, 0x0f120141, 0x0f200141,
+    0x0f330121, 0x0f320151, 0x0f2d0121, 0x0f200141, 0x0f2d0141, 0x0f330141, 0x0ee30141, 0x0ee90141,
+    0x0f320151, 0x0f160141, 0x0ed70141, 0x0f200121, 0x0f120121, 0x0f0a0121, 0x0f040141, 0x0f330141,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x0f0a0151, 0x0f1d0151, 0x0ed60141, 0x0ed60141, 0x0f320161, 0x0f0a0151, 0x0ef90131, 0x0f120151,
+    0x0f3e0141, 0x0f0a0151, 0x0f0a0151, 0x0ee30151, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    /* 0xfe00 .. 0xfeff */
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x00005011, 0x00005111, 0x00005211, 0x00005311, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x02550151, 0x02280131, 0x02270121, 0x021b0141, 0x021b0141, 0x027a0171, 0x027b0161, 0x027e0141,
+    0x027f0141, 0x02920131, 0x02930131, 0x02900121, 0x02910121, 0x028a0121, 0x028b0121, 0x02880121,
+    0x02890121, 0x028c0131, 0x028d0131, 0x028e0121, 0x028f0121, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0x02110121, 0x02110121, 0x02110121, 0x02110121, 0x021b0131, 0x021b0131, 0x021b0131,
+    0x022d0131, 0x02340121, 0x02550141, 0xffffffff, 0x02350131, 0x02370131, 0x024e0141, 0x024b0141,
+    0x02280121, 0x027a0141, 0x027b0131, 0x027e0131, 0x027f0131, 0x02920121, 0x02930121, 0x02a90131,
+    0x02a70131, 0x02a20131, 0x039f0141, 0x02210131, 0x03a30131, 0x03a50131, 0x03a40131, 0xffffffff,
+    0x02a60131, 0x09e00131, 0x02aa0131, 0x02a10131, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x00006831, 0x00006821, 0x00006921, 0xffffffff, 0x00006a21, 0xffffffff, 0x00006b31, 0x00006b21,
+    0x00006c31, 0x00006c21, 0x00006d31, 0x00006d21, 0x00006e31, 0x00006e21, 0x00006f31, 0x00006f21,
+    0x0ecd0131, 0x0ece0131, 0x0ece0121, 0x0ecf0131, 0x0ecf0121, 0x0ed20131, 0x0ed20121, 0x0ed30131,
+    0x0ed30121, 0x0ed50151, 0x0ed50141, 0x0ed50121, 0x0ed50131, 0x0ed60141, 0x0ed60131, 0x0ed70151,
+    0x0ed70141, 0x0ed70121, 0x0ed70131, 0x0edb0131, 0x0edb0121, 0x0edc0151, 0x0edc0141, 0x0edc0121,
+    0x0edc0131, 0x0edd0151, 0x0edd0141, 0x0edd0121, 0x0edd0131, 0x0ee30151, 0x0ee30141, 0x0ee30121,
+    0x0ee30131, 0x0ee90151, 0x0ee90141, 0x0ee90121, 0x0ee90131, 0x0eea0151, 0x0eea0141, 0x0eea0121,
+    0x0eea0131, 0x0eee0131, 0x0eee0121, 0x0eef0131, 0x0eef0121, 0x0ef90131, 0x0ef90121, 0x0efa0131,
+    0x0efa0121, 0x0f040151, 0x0f040141, 0x0f040121, 0x0f040131, 0x0f050151, 0x0f050141, 0x0f050121,
+    0x0f050131, 0x0f0a0151, 0x0f0a0141, 0x0f0a0121, 0x0f0a0131, 0x0f0b0151, 0x0f0b0141, 0x0f0b0121,
+    0x0f0b0131, 0x0f0f0151, 0x0f0f0141, 0x0f0f0121, 0x0f0f0131, 0x0f100151, 0x0f100141, 0x0f100121,
+    0x0f100131, 0x0f120151, 0x0f120141, 0x0f120121, 0x0f120131, 0x0f130151, 0x0f130141, 0x0f130121,
+    0x0f130131, 0x0f160151, 0x0f160141, 0x0f160121, 0x0f160131, 0x0f1d0151, 0x0f1d0141, 0x0f1d0121,
+    0x0f1d0131, 0x0f200151, 0x0f200141, 0x0f200121, 0x0f200131, 0x0f2d0151, 0x0f2d0141, 0x0f2d0121,
+    0x0f2d0131, 0x0f320161, 0x0f320151, 0x0f320131, 0x0f320141, 0x0f330151, 0x0f330141, 0x0f330121,
+    0x0f330131, 0x0f390151, 0x0f390141, 0x0f390121, 0x0f390131, 0x0f3e0141, 0x0f3e0131, 0x0f480151,
+    0x0f480141, 0x0f490161, 0x0f490151, 0x0f490131, 0x0f490141, 0x0f2d0151, 0x0f2d0141, 0x0f2d0151,
+    0x0f2d0141, 0x0f2d0151, 0x0f2d0141, 0x0f2d0151, 0x0f2d0141, 0xffffffff, 0xffffffff, 0x00000000,
+    /* 0xff00 .. 0xffff */
+    0xffffffff, 0x024b0121, 0x02700121, 0x02a90121, 0x09e00121, 0x02aa0121, 0x02a70121, 0x02690121,
+    0x027a0121, 0x027b0121, 0x02a20121, 0x039f0121, 0x022d0121, 0x02210121, 0x02550121, 0x02a40121,
+    0x0a0b0121, 0x0a0c0121, 0x0a0d0121, 0x0a0e0121, 0x0a0f0121, 0x0a100121, 0x0a110121, 0x0a120121,
+    0x0a130121, 0x0a140121, 0x02370121, 0x02350121, 0x03a30121, 0x03a40121, 0x03a50121, 0x024e0121,
+    0x02a10121, 0x0a150161, 0x0a290151, 0x0a3d0161, 0x0a490161, 0x0a650161, 0x0a910161, 0x0a990161,
+    0x0ab90161, 0x0ad30171, 0x0ae70151, 0x0af70151, 0x0b030171, 0x0b2b0161, 0x0b330161, 0x0b4b0171,
+    0x0b670151, 0x0b730151, 0x0b7f0151, 0x0ba70161, 0x0bbf0161, 0x0bd70151, 0x0bef0161, 0x0bfb0151,
+    0x0c030161, 0x0c070151, 0x0c130151, 0x027c0121, 0x02a60121, 0x027d0121, 0x020f0121, 0x021b0121,
+    0x020c0121, 0x0a150121, 0x0a290121, 0x0a3d0121, 0x0a490121, 0x0a650121, 0x0a910121, 0x0a990121,
+    0x0ab90121, 0x0ad30121, 0x0ae70121, 0x0af70121, 0x0b030121, 0x0b2b0121, 0x0b330121, 0x0b4b0121,
+    0x0b670121, 0x0b730121, 0x0b7f0121, 0x0ba70121, 0x0bbf0121, 0x0bd70121, 0x0bef0121, 0x0bfb0121,
+    0x0c030121, 0x0c070121, 0x0c130121, 0x027e0121, 0x03a70121, 0x027f0121, 0x03aa0121, 0xffffffff,
+    0xffffffff, 0x025e0121, 0x028c0121, 0x028d0121, 0x02340131, 0x022c0121, 0x194f0131, 0x19210141,
+    0x19220141, 0x19230141, 0x19240141, 0x19250141, 0x19440141, 0x19450141, 0x19460141, 0x19320141,
+    0x09dc0121, 0x19210161, 0x19220161, 0x19230161, 0x19240161, 0x19250161, 0x19260141, 0x19270131,
+    0x19280131, 0x19290141, 0x192a0131, 0x192b0131, 0x192c0141, 0x192d0131, 0x192e0131, 0x192f0131,
+    0x19300131, 0x19310131, 0x19320161, 0x19330131, 0x19340131, 0x19350131, 0x19360131, 0x19370131,
+    0x19380131, 0x19390131, 0x193a0131, 0x193b0131, 0x193c0131, 0x193d0131, 0x193e0131, 0x193f0131,
+    0x19400131, 0x19410131, 0x19420131, 0x19430131, 0x19440161, 0x19450161, 0x19460161, 0x19470131,
+    0x19480131, 0x19490131, 0x194a0131, 0x194b0131, 0x194c0151, 0x19500131, 0x0000e221, 0x0000e321,
+    0x188c0131, 0x18310141, 0x18320131, 0x18d10131, 0x18330141, 0x18d30131, 0x18d40131, 0x18340141,
+    0x18350131, 0x18360141, 0x18d70131, 0x18d80131, 0x18d90131, 0x18da0131, 0x18db0131, 0x18dc0131,
+    0x184b0131, 0x18370141, 0x18380141, 0x18390131, 0x18520131, 0x183a0141, 0x183b0131, 0x183c0141,
+    0x183d0141, 0x183e0131, 0x183f0141, 0x18400141, 0x18410141, 0x18420141, 0x18430141, 0xffffffff,
+    0xffffffff, 0xffffffff, 0x188d0131, 0x188e0131, 0x188f0131, 0x18900131, 0x18910131, 0x18920131,
+    0xffffffff, 0xffffffff, 0x18930131, 0x18940131, 0x18950131, 0x18960131, 0x18970131, 0x18980131,
+    0xffffffff, 0xffffffff, 0x18990131, 0x189a0131, 0x189b0131, 0x189c0131, 0x189d0131, 0x189e0131,
+    0xffffffff, 0xffffffff, 0x189f0131, 0x18a00131, 0x18a10131, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x09df0121, 0x09e10121, 0x03a60121, 0x02100121, 0x03a80121, 0x09e20121, 0x09ef0121, 0xffffffff,
+    0x05300121, 0x03320121, 0x03340121, 0x03330121, 0x03350121, 0x05c40121, 0x05ef0121, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x09bf0111, 0x09c00111, 0xffffffff, 0xffffffff
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/compose.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/compose.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/compose.c	(revision 16410)
@@ -0,0 +1,1125 @@
+/* Unicode char composition */
+/* Automatically generated; DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+const WCHAR unicode_compose_table[0x85e] =
+{
+    /* second chars + offsets */
+    0x0300, 0x0047, 0x0301, 0x009b, 0x0302, 0x0111, 0x0303, 0x0131,
+    0x0304, 0x014d, 0x0306, 0x0179, 0x0307, 0x0199, 0x0308, 0x01c7,
+    0x0309, 0x01fd, 0x030a, 0x0215, 0x030b, 0x021b, 0x030c, 0x0221,
+    0x030f, 0x0246, 0x0311, 0x0254, 0x0313, 0x0260, 0x0314, 0x026e,
+    0x031b, 0x027e, 0x0323, 0x0282, 0x0324, 0x02ac, 0x0325, 0x02ae,
+    0x0326, 0x02b0, 0x0327, 0x02b4, 0x0328, 0x02ca, 0x032d, 0x02d4,
+    0x032e, 0x02e0, 0x0330, 0x02e2, 0x0331, 0x02e8, 0x0338, 0x02f9,
+    0x0342, 0x0326, 0x0345, 0x0343, 0x05b4, 0x0382, 0x05b7, 0x0383,
+    0x05b8, 0x0385, 0x05b9, 0x0386, 0x05bc, 0x0387, 0x05bf, 0x039d,
+    0x05c1, 0x03a0, 0x05c2, 0x03a2, 0x0653, 0x03a4, 0x0654, 0x03a5,
+    0x0655, 0x03ab, 0x093c, 0x03ac, 0x09bc, 0x03b7, 0x09be, 0x03ba,
+    0x09d7, 0x03bb, 0x0a3c, 0x03bc, 0x0b3c, 0x03c2, 0x0b3e, 0x03c4,
+    0x0b56, 0x03c5, 0x0b57, 0x03c6, 0x0bbe, 0x03c7, 0x0bd7, 0x03c9,
+    0x0c56, 0x03cb, 0x0cc2, 0x03cc, 0x0cd5, 0x03cd, 0x0cd6, 0x03d0,
+    0x0d3e, 0x03d1, 0x0d57, 0x03d3, 0x0dca, 0x03d4, 0x0dcf, 0x03d6,
+    0x0ddf, 0x03d7, 0x0f72, 0x03d8, 0x0f74, 0x03d9, 0x0f80, 0x03da,
+    0x0fb5, 0x03dd, 0x0fb7, 0x03df, 0x102e, 0x03e9, 0x1b35, 0x03ea,
+    0x3099, 0x03f5, 0x309a, 0x0425, 0x0000, 0x042f,
+    /* 0x0300 */
+    0x0041, 0x00c0, 0x0045, 0x00c8, 0x0049, 0x00cc, 0x004e, 0x01f8,
+    0x004f, 0x00d2, 0x0055, 0x00d9, 0x0057, 0x1e80, 0x0059, 0x1ef2,
+    0x0061, 0x00e0, 0x0065, 0x00e8, 0x0069, 0x00ec, 0x006e, 0x01f9,
+    0x006f, 0x00f2, 0x0075, 0x00f9, 0x0077, 0x1e81, 0x0079, 0x1ef3,
+    0x00a8, 0x1fed, 0x00c2, 0x1ea6, 0x00ca, 0x1ec0, 0x00d4, 0x1ed2,
+    0x00dc, 0x01db, 0x00e2, 0x1ea7, 0x00ea, 0x1ec1, 0x00f4, 0x1ed3,
+    0x00fc, 0x01dc, 0x0102, 0x1eb0, 0x0103, 0x1eb1, 0x0112, 0x1e14,
+    0x0113, 0x1e15, 0x014c, 0x1e50, 0x014d, 0x1e51, 0x01a0, 0x1edc,
+    0x01a1, 0x1edd, 0x01af, 0x1eea, 0x01b0, 0x1eeb, 0x0391, 0x1fba,
+    0x0395, 0x1fc8, 0x0397, 0x1fca, 0x0399, 0x1fda, 0x039f, 0x1ff8,
+    0x03a5, 0x1fea, 0x03a9, 0x1ffa, 0x03b1, 0x1f70, 0x03b5, 0x1f72,
+    0x03b7, 0x1f74, 0x03b9, 0x1f76, 0x03bf, 0x1f78, 0x03c5, 0x1f7a,
+    0x03c9, 0x1f7c, 0x03ca, 0x1fd2, 0x03cb, 0x1fe2, 0x0415, 0x0400,
+    0x0418, 0x040d, 0x0435, 0x0450, 0x0438, 0x045d, 0x1f00, 0x1f02,
+    0x1f01, 0x1f03, 0x1f08, 0x1f0a, 0x1f09, 0x1f0b, 0x1f10, 0x1f12,
+    0x1f11, 0x1f13, 0x1f18, 0x1f1a, 0x1f19, 0x1f1b, 0x1f20, 0x1f22,
+    0x1f21, 0x1f23, 0x1f28, 0x1f2a, 0x1f29, 0x1f2b, 0x1f30, 0x1f32,
+    0x1f31, 0x1f33, 0x1f38, 0x1f3a, 0x1f39, 0x1f3b, 0x1f40, 0x1f42,
+    0x1f41, 0x1f43, 0x1f48, 0x1f4a, 0x1f49, 0x1f4b, 0x1f50, 0x1f52,
+    0x1f51, 0x1f53, 0x1f59, 0x1f5b, 0x1f60, 0x1f62, 0x1f61, 0x1f63,
+    0x1f68, 0x1f6a, 0x1f69, 0x1f6b, 0x1fbf, 0x1fcd, 0x1ffe, 0x1fdd,
+    /* 0x0301 */
+    0x0041, 0x00c1, 0x0043, 0x0106, 0x0045, 0x00c9, 0x0047, 0x01f4,
+    0x0049, 0x00cd, 0x004b, 0x1e30, 0x004c, 0x0139, 0x004d, 0x1e3e,
+    0x004e, 0x0143, 0x004f, 0x00d3, 0x0050, 0x1e54, 0x0052, 0x0154,
+    0x0053, 0x015a, 0x0055, 0x00da, 0x0057, 0x1e82, 0x0059, 0x00dd,
+    0x005a, 0x0179, 0x0061, 0x00e1, 0x0063, 0x0107, 0x0065, 0x00e9,
+    0x0067, 0x01f5, 0x0069, 0x00ed, 0x006b, 0x1e31, 0x006c, 0x013a,
+    0x006d, 0x1e3f, 0x006e, 0x0144, 0x006f, 0x00f3, 0x0070, 0x1e55,
+    0x0072, 0x0155, 0x0073, 0x015b, 0x0075, 0x00fa, 0x0077, 0x1e83,
+    0x0079, 0x00fd, 0x007a, 0x017a, 0x00a8, 0x0385, 0x00c2, 0x1ea4,
+    0x00c5, 0x01fa, 0x00c6, 0x01fc, 0x00c7, 0x1e08, 0x00ca, 0x1ebe,
+    0x00cf, 0x1e2e, 0x00d4, 0x1ed0, 0x00d5, 0x1e4c, 0x00d8, 0x01fe,
+    0x00dc, 0x01d7, 0x00e2, 0x1ea5, 0x00e5, 0x01fb, 0x00e6, 0x01fd,
+    0x00e7, 0x1e09, 0x00ea, 0x1ebf, 0x00ef, 0x1e2f, 0x00f4, 0x1ed1,
+    0x00f5, 0x1e4d, 0x00f8, 0x01ff, 0x00fc, 0x01d8, 0x0102, 0x1eae,
+    0x0103, 0x1eaf, 0x0112, 0x1e16, 0x0113, 0x1e17, 0x014c, 0x1e52,
+    0x014d, 0x1e53, 0x0168, 0x1e78, 0x0169, 0x1e79, 0x01a0, 0x1eda,
+    0x01a1, 0x1edb, 0x01af, 0x1ee8, 0x01b0, 0x1ee9, 0x0308, 0x0344,
+    0x0391, 0x0386, 0x0395, 0x0388, 0x0397, 0x0389, 0x0399, 0x038a,
+    0x039f, 0x038c, 0x03a5, 0x038e, 0x03a9, 0x038f, 0x03b1, 0x03ac,
+    0x03b5, 0x03ad, 0x03b7, 0x03ae, 0x03b9, 0x03af, 0x03bf, 0x03cc,
+    0x03c5, 0x03cd, 0x03c9, 0x03ce, 0x03ca, 0x0390, 0x03cb, 0x03b0,
+    0x03d2, 0x03d3, 0x0413, 0x0403, 0x041a, 0x040c, 0x0433, 0x0453,
+    0x043a, 0x045c, 0x1f00, 0x1f04, 0x1f01, 0x1f05, 0x1f08, 0x1f0c,
+    0x1f09, 0x1f0d, 0x1f10, 0x1f14, 0x1f11, 0x1f15, 0x1f18, 0x1f1c,
+    0x1f19, 0x1f1d, 0x1f20, 0x1f24, 0x1f21, 0x1f25, 0x1f28, 0x1f2c,
+    0x1f29, 0x1f2d, 0x1f30, 0x1f34, 0x1f31, 0x1f35, 0x1f38, 0x1f3c,
+    0x1f39, 0x1f3d, 0x1f40, 0x1f44, 0x1f41, 0x1f45, 0x1f48, 0x1f4c,
+    0x1f49, 0x1f4d, 0x1f50, 0x1f54, 0x1f51, 0x1f55, 0x1f59, 0x1f5d,
+    0x1f60, 0x1f64, 0x1f61, 0x1f65, 0x1f68, 0x1f6c, 0x1f69, 0x1f6d,
+    0x1fbf, 0x1fce, 0x1ffe, 0x1fde,
+    /* 0x0302 */
+    0x0041, 0x00c2, 0x0043, 0x0108, 0x0045, 0x00ca, 0x0047, 0x011c,
+    0x0048, 0x0124, 0x0049, 0x00ce, 0x004a, 0x0134, 0x004f, 0x00d4,
+    0x0053, 0x015c, 0x0055, 0x00db, 0x0057, 0x0174, 0x0059, 0x0176,
+    0x005a, 0x1e90, 0x0061, 0x00e2, 0x0063, 0x0109, 0x0065, 0x00ea,
+    0x0067, 0x011d, 0x0068, 0x0125, 0x0069, 0x00ee, 0x006a, 0x0135,
+    0x006f, 0x00f4, 0x0073, 0x015d, 0x0075, 0x00fb, 0x0077, 0x0175,
+    0x0079, 0x0177, 0x007a, 0x1e91, 0x1ea0, 0x1eac, 0x1ea1, 0x1ead,
+    0x1eb8, 0x1ec6, 0x1eb9, 0x1ec7, 0x1ecc, 0x1ed8, 0x1ecd, 0x1ed9,
+    /* 0x0303 */
+    0x0041, 0x00c3, 0x0045, 0x1ebc, 0x0049, 0x0128, 0x004e, 0x00d1,
+    0x004f, 0x00d5, 0x0055, 0x0168, 0x0056, 0x1e7c, 0x0059, 0x1ef8,
+    0x0061, 0x00e3, 0x0065, 0x1ebd, 0x0069, 0x0129, 0x006e, 0x00f1,
+    0x006f, 0x00f5, 0x0075, 0x0169, 0x0076, 0x1e7d, 0x0079, 0x1ef9,
+    0x00c2, 0x1eaa, 0x00ca, 0x1ec4, 0x00d4, 0x1ed6, 0x00e2, 0x1eab,
+    0x00ea, 0x1ec5, 0x00f4, 0x1ed7, 0x0102, 0x1eb4, 0x0103, 0x1eb5,
+    0x01a0, 0x1ee0, 0x01a1, 0x1ee1, 0x01af, 0x1eee, 0x01b0, 0x1eef,
+    /* 0x0304 */
+    0x0041, 0x0100, 0x0045, 0x0112, 0x0047, 0x1e20, 0x0049, 0x012a,
+    0x004f, 0x014c, 0x0055, 0x016a, 0x0059, 0x0232, 0x0061, 0x0101,
+    0x0065, 0x0113, 0x0067, 0x1e21, 0x0069, 0x012b, 0x006f, 0x014d,
+    0x0075, 0x016b, 0x0079, 0x0233, 0x00c4, 0x01de, 0x00c6, 0x01e2,
+    0x00d5, 0x022c, 0x00d6, 0x022a, 0x00dc, 0x01d5, 0x00e4, 0x01df,
+    0x00e6, 0x01e3, 0x00f5, 0x022d, 0x00f6, 0x022b, 0x00fc, 0x01d6,
+    0x01ea, 0x01ec, 0x01eb, 0x01ed, 0x0226, 0x01e0, 0x0227, 0x01e1,
+    0x022e, 0x0230, 0x022f, 0x0231, 0x0391, 0x1fb9, 0x0399, 0x1fd9,
+    0x03a5, 0x1fe9, 0x03b1, 0x1fb1, 0x03b9, 0x1fd1, 0x03c5, 0x1fe1,
+    0x0418, 0x04e2, 0x0423, 0x04ee, 0x0438, 0x04e3, 0x0443, 0x04ef,
+    0x1e36, 0x1e38, 0x1e37, 0x1e39, 0x1e5a, 0x1e5c, 0x1e5b, 0x1e5d,
+    /* 0x0306 */
+    0x0041, 0x0102, 0x0045, 0x0114, 0x0047, 0x011e, 0x0049, 0x012c,
+    0x004f, 0x014e, 0x0055, 0x016c, 0x0061, 0x0103, 0x0065, 0x0115,
+    0x0067, 0x011f, 0x0069, 0x012d, 0x006f, 0x014f, 0x0075, 0x016d,
+    0x0228, 0x1e1c, 0x0229, 0x1e1d, 0x0391, 0x1fb8, 0x0399, 0x1fd8,
+    0x03a5, 0x1fe8, 0x03b1, 0x1fb0, 0x03b9, 0x1fd0, 0x03c5, 0x1fe0,
+    0x0410, 0x04d0, 0x0415, 0x04d6, 0x0416, 0x04c1, 0x0418, 0x0419,
+    0x0423, 0x040e, 0x0430, 0x04d1, 0x0435, 0x04d7, 0x0436, 0x04c2,
+    0x0438, 0x0439, 0x0443, 0x045e, 0x1ea0, 0x1eb6, 0x1ea1, 0x1eb7,
+    /* 0x0307 */
+    0x0041, 0x0226, 0x0042, 0x1e02, 0x0043, 0x010a, 0x0044, 0x1e0a,
+    0x0045, 0x0116, 0x0046, 0x1e1e, 0x0047, 0x0120, 0x0048, 0x1e22,
+    0x0049, 0x0130, 0x004d, 0x1e40, 0x004e, 0x1e44, 0x004f, 0x022e,
+    0x0050, 0x1e56, 0x0052, 0x1e58, 0x0053, 0x1e60, 0x0054, 0x1e6a,
+    0x0057, 0x1e86, 0x0058, 0x1e8a, 0x0059, 0x1e8e, 0x005a, 0x017b,
+    0x0061, 0x0227, 0x0062, 0x1e03, 0x0063, 0x010b, 0x0064, 0x1e0b,
+    0x0065, 0x0117, 0x0066, 0x1e1f, 0x0067, 0x0121, 0x0068, 0x1e23,
+    0x006d, 0x1e41, 0x006e, 0x1e45, 0x006f, 0x022f, 0x0070, 0x1e57,
+    0x0072, 0x1e59, 0x0073, 0x1e61, 0x0074, 0x1e6b, 0x0077, 0x1e87,
+    0x0078, 0x1e8b, 0x0079, 0x1e8f, 0x007a, 0x017c, 0x015a, 0x1e64,
+    0x015b, 0x1e65, 0x0160, 0x1e66, 0x0161, 0x1e67, 0x017f, 0x1e9b,
+    0x1e62, 0x1e68, 0x1e63, 0x1e69,
+    /* 0x0308 */
+    0x0041, 0x00c4, 0x0045, 0x00cb, 0x0048, 0x1e26, 0x0049, 0x00cf,
+    0x004f, 0x00d6, 0x0055, 0x00dc, 0x0057, 0x1e84, 0x0058, 0x1e8c,
+    0x0059, 0x0178, 0x0061, 0x00e4, 0x0065, 0x00eb, 0x0068, 0x1e27,
+    0x0069, 0x00ef, 0x006f, 0x00f6, 0x0074, 0x1e97, 0x0075, 0x00fc,
+    0x0077, 0x1e85, 0x0078, 0x1e8d, 0x0079, 0x00ff, 0x00d5, 0x1e4e,
+    0x00f5, 0x1e4f, 0x016a, 0x1e7a, 0x016b, 0x1e7b, 0x0399, 0x03aa,
+    0x03a5, 0x03ab, 0x03b9, 0x03ca, 0x03c5, 0x03cb, 0x03d2, 0x03d4,
+    0x0406, 0x0407, 0x0410, 0x04d2, 0x0415, 0x0401, 0x0416, 0x04dc,
+    0x0417, 0x04de, 0x0418, 0x04e4, 0x041e, 0x04e6, 0x0423, 0x04f0,
+    0x0427, 0x04f4, 0x042b, 0x04f8, 0x042d, 0x04ec, 0x0430, 0x04d3,
+    0x0435, 0x0451, 0x0436, 0x04dd, 0x0437, 0x04df, 0x0438, 0x04e5,
+    0x043e, 0x04e7, 0x0443, 0x04f1, 0x0447, 0x04f5, 0x044b, 0x04f9,
+    0x044d, 0x04ed, 0x0456, 0x0457, 0x04d8, 0x04da, 0x04d9, 0x04db,
+    0x04e8, 0x04ea, 0x04e9, 0x04eb,
+    /* 0x0309 */
+    0x0041, 0x1ea2, 0x0045, 0x1eba, 0x0049, 0x1ec8, 0x004f, 0x1ece,
+    0x0055, 0x1ee6, 0x0059, 0x1ef6, 0x0061, 0x1ea3, 0x0065, 0x1ebb,
+    0x0069, 0x1ec9, 0x006f, 0x1ecf, 0x0075, 0x1ee7, 0x0079, 0x1ef7,
+    0x00c2, 0x1ea8, 0x00ca, 0x1ec2, 0x00d4, 0x1ed4, 0x00e2, 0x1ea9,
+    0x00ea, 0x1ec3, 0x00f4, 0x1ed5, 0x0102, 0x1eb2, 0x0103, 0x1eb3,
+    0x01a0, 0x1ede, 0x01a1, 0x1edf, 0x01af, 0x1eec, 0x01b0, 0x1eed,
+    /* 0x030a */
+    0x0041, 0x00c5, 0x0055, 0x016e, 0x0061, 0x00e5, 0x0075, 0x016f,
+    0x0077, 0x1e98, 0x0079, 0x1e99,
+    /* 0x030b */
+    0x004f, 0x0150, 0x0055, 0x0170, 0x006f, 0x0151, 0x0075, 0x0171,
+    0x0423, 0x04f2, 0x0443, 0x04f3,
+    /* 0x030c */
+    0x0041, 0x01cd, 0x0043, 0x010c, 0x0044, 0x010e, 0x0045, 0x011a,
+    0x0047, 0x01e6, 0x0048, 0x021e, 0x0049, 0x01cf, 0x004b, 0x01e8,
+    0x004c, 0x013d, 0x004e, 0x0147, 0x004f, 0x01d1, 0x0052, 0x0158,
+    0x0053, 0x0160, 0x0054, 0x0164, 0x0055, 0x01d3, 0x005a, 0x017d,
+    0x0061, 0x01ce, 0x0063, 0x010d, 0x0064, 0x010f, 0x0065, 0x011b,
+    0x0067, 0x01e7, 0x0068, 0x021f, 0x0069, 0x01d0, 0x006a, 0x01f0,
+    0x006b, 0x01e9, 0x006c, 0x013e, 0x006e, 0x0148, 0x006f, 0x01d2,
+    0x0072, 0x0159, 0x0073, 0x0161, 0x0074, 0x0165, 0x0075, 0x01d4,
+    0x007a, 0x017e, 0x00dc, 0x01d9, 0x00fc, 0x01da, 0x01b7, 0x01ee,
+    0x0292, 0x01ef,
+    /* 0x030f */
+    0x0041, 0x0200, 0x0045, 0x0204, 0x0049, 0x0208, 0x004f, 0x020c,
+    0x0052, 0x0210, 0x0055, 0x0214, 0x0061, 0x0201, 0x0065, 0x0205,
+    0x0069, 0x0209, 0x006f, 0x020d, 0x0072, 0x0211, 0x0075, 0x0215,
+    0x0474, 0x0476, 0x0475, 0x0477,
+    /* 0x0311 */
+    0x0041, 0x0202, 0x0045, 0x0206, 0x0049, 0x020a, 0x004f, 0x020e,
+    0x0052, 0x0212, 0x0055, 0x0216, 0x0061, 0x0203, 0x0065, 0x0207,
+    0x0069, 0x020b, 0x006f, 0x020f, 0x0072, 0x0213, 0x0075, 0x0217,
+    /* 0x0313 */
+    0x0391, 0x1f08, 0x0395, 0x1f18, 0x0397, 0x1f28, 0x0399, 0x1f38,
+    0x039f, 0x1f48, 0x03a9, 0x1f68, 0x03b1, 0x1f00, 0x03b5, 0x1f10,
+    0x03b7, 0x1f20, 0x03b9, 0x1f30, 0x03bf, 0x1f40, 0x03c1, 0x1fe4,
+    0x03c5, 0x1f50, 0x03c9, 0x1f60,
+    /* 0x0314 */
+    0x0391, 0x1f09, 0x0395, 0x1f19, 0x0397, 0x1f29, 0x0399, 0x1f39,
+    0x039f, 0x1f49, 0x03a1, 0x1fec, 0x03a5, 0x1f59, 0x03a9, 0x1f69,
+    0x03b1, 0x1f01, 0x03b5, 0x1f11, 0x03b7, 0x1f21, 0x03b9, 0x1f31,
+    0x03bf, 0x1f41, 0x03c1, 0x1fe5, 0x03c5, 0x1f51, 0x03c9, 0x1f61,
+    /* 0x031b */
+    0x004f, 0x01a0, 0x0055, 0x01af, 0x006f, 0x01a1, 0x0075, 0x01b0,
+    /* 0x0323 */
+    0x0041, 0x1ea0, 0x0042, 0x1e04, 0x0044, 0x1e0c, 0x0045, 0x1eb8,
+    0x0048, 0x1e24, 0x0049, 0x1eca, 0x004b, 0x1e32, 0x004c, 0x1e36,
+    0x004d, 0x1e42, 0x004e, 0x1e46, 0x004f, 0x1ecc, 0x0052, 0x1e5a,
+    0x0053, 0x1e62, 0x0054, 0x1e6c, 0x0055, 0x1ee4, 0x0056, 0x1e7e,
+    0x0057, 0x1e88, 0x0059, 0x1ef4, 0x005a, 0x1e92, 0x0061, 0x1ea1,
+    0x0062, 0x1e05, 0x0064, 0x1e0d, 0x0065, 0x1eb9, 0x0068, 0x1e25,
+    0x0069, 0x1ecb, 0x006b, 0x1e33, 0x006c, 0x1e37, 0x006d, 0x1e43,
+    0x006e, 0x1e47, 0x006f, 0x1ecd, 0x0072, 0x1e5b, 0x0073, 0x1e63,
+    0x0074, 0x1e6d, 0x0075, 0x1ee5, 0x0076, 0x1e7f, 0x0077, 0x1e89,
+    0x0079, 0x1ef5, 0x007a, 0x1e93, 0x01a0, 0x1ee2, 0x01a1, 0x1ee3,
+    0x01af, 0x1ef0, 0x01b0, 0x1ef1,
+    /* 0x0324 */
+    0x0055, 0x1e72, 0x0075, 0x1e73,
+    /* 0x0325 */
+    0x0041, 0x1e00, 0x0061, 0x1e01,
+    /* 0x0326 */
+    0x0053, 0x0218, 0x0054, 0x021a, 0x0073, 0x0219, 0x0074, 0x021b,
+    /* 0x0327 */
+    0x0043, 0x00c7, 0x0044, 0x1e10, 0x0045, 0x0228, 0x0047, 0x0122,
+    0x0048, 0x1e28, 0x004b, 0x0136, 0x004c, 0x013b, 0x004e, 0x0145,
+    0x0052, 0x0156, 0x0053, 0x015e, 0x0054, 0x0162, 0x0063, 0x00e7,
+    0x0064, 0x1e11, 0x0065, 0x0229, 0x0067, 0x0123, 0x0068, 0x1e29,
+    0x006b, 0x0137, 0x006c, 0x013c, 0x006e, 0x0146, 0x0072, 0x0157,
+    0x0073, 0x015f, 0x0074, 0x0163,
+    /* 0x0328 */
+    0x0041, 0x0104, 0x0045, 0x0118, 0x0049, 0x012e, 0x004f, 0x01ea,
+    0x0055, 0x0172, 0x0061, 0x0105, 0x0065, 0x0119, 0x0069, 0x012f,
+    0x006f, 0x01eb, 0x0075, 0x0173,
+    /* 0x032d */
+    0x0044, 0x1e12, 0x0045, 0x1e18, 0x004c, 0x1e3c, 0x004e, 0x1e4a,
+    0x0054, 0x1e70, 0x0055, 0x1e76, 0x0064, 0x1e13, 0x0065, 0x1e19,
+    0x006c, 0x1e3d, 0x006e, 0x1e4b, 0x0074, 0x1e71, 0x0075, 0x1e77,
+    /* 0x032e */
+    0x0048, 0x1e2a, 0x0068, 0x1e2b,
+    /* 0x0330 */
+    0x0045, 0x1e1a, 0x0049, 0x1e2c, 0x0055, 0x1e74, 0x0065, 0x1e1b,
+    0x0069, 0x1e2d, 0x0075, 0x1e75,
+    /* 0x0331 */
+    0x0042, 0x1e06, 0x0044, 0x1e0e, 0x004b, 0x1e34, 0x004c, 0x1e3a,
+    0x004e, 0x1e48, 0x0052, 0x1e5e, 0x0054, 0x1e6e, 0x005a, 0x1e94,
+    0x0062, 0x1e07, 0x0064, 0x1e0f, 0x0068, 0x1e96, 0x006b, 0x1e35,
+    0x006c, 0x1e3b, 0x006e, 0x1e49, 0x0072, 0x1e5f, 0x0074, 0x1e6f,
+    0x007a, 0x1e95,
+    /* 0x0338 */
+    0x003c, 0x226e, 0x003d, 0x2260, 0x003e, 0x226f, 0x2190, 0x219a,
+    0x2192, 0x219b, 0x2194, 0x21ae, 0x21d0, 0x21cd, 0x21d2, 0x21cf,
+    0x21d4, 0x21ce, 0x2203, 0x2204, 0x2208, 0x2209, 0x220b, 0x220c,
+    0x2223, 0x2224, 0x2225, 0x2226, 0x223c, 0x2241, 0x2243, 0x2244,
+    0x2245, 0x2247, 0x2248, 0x2249, 0x224d, 0x226d, 0x2261, 0x2262,
+    0x2264, 0x2270, 0x2265, 0x2271, 0x2272, 0x2274, 0x2273, 0x2275,
+    0x2276, 0x2278, 0x2277, 0x2279, 0x227a, 0x2280, 0x227b, 0x2281,
+    0x227c, 0x22e0, 0x227d, 0x22e1, 0x2282, 0x2284, 0x2283, 0x2285,
+    0x2286, 0x2288, 0x2287, 0x2289, 0x2291, 0x22e2, 0x2292, 0x22e3,
+    0x22a2, 0x22ac, 0x22a8, 0x22ad, 0x22a9, 0x22ae, 0x22ab, 0x22af,
+    0x22b2, 0x22ea, 0x22b3, 0x22eb, 0x22b4, 0x22ec, 0x22b5, 0x22ed,
+    0x2add, 0x2adc,
+    /* 0x0342 */
+    0x00a8, 0x1fc1, 0x03b1, 0x1fb6, 0x03b7, 0x1fc6, 0x03b9, 0x1fd6,
+    0x03c5, 0x1fe6, 0x03c9, 0x1ff6, 0x03ca, 0x1fd7, 0x03cb, 0x1fe7,
+    0x1f00, 0x1f06, 0x1f01, 0x1f07, 0x1f08, 0x1f0e, 0x1f09, 0x1f0f,
+    0x1f20, 0x1f26, 0x1f21, 0x1f27, 0x1f28, 0x1f2e, 0x1f29, 0x1f2f,
+    0x1f30, 0x1f36, 0x1f31, 0x1f37, 0x1f38, 0x1f3e, 0x1f39, 0x1f3f,
+    0x1f50, 0x1f56, 0x1f51, 0x1f57, 0x1f59, 0x1f5f, 0x1f60, 0x1f66,
+    0x1f61, 0x1f67, 0x1f68, 0x1f6e, 0x1f69, 0x1f6f, 0x1fbf, 0x1fcf,
+    0x1ffe, 0x1fdf,
+    /* 0x0345 */
+    0x0391, 0x1fbc, 0x0397, 0x1fcc, 0x03a9, 0x1ffc, 0x03ac, 0x1fb4,
+    0x03ae, 0x1fc4, 0x03b1, 0x1fb3, 0x03b7, 0x1fc3, 0x03c9, 0x1ff3,
+    0x03ce, 0x1ff4, 0x1f00, 0x1f80, 0x1f01, 0x1f81, 0x1f02, 0x1f82,
+    0x1f03, 0x1f83, 0x1f04, 0x1f84, 0x1f05, 0x1f85, 0x1f06, 0x1f86,
+    0x1f07, 0x1f87, 0x1f08, 0x1f88, 0x1f09, 0x1f89, 0x1f0a, 0x1f8a,
+    0x1f0b, 0x1f8b, 0x1f0c, 0x1f8c, 0x1f0d, 0x1f8d, 0x1f0e, 0x1f8e,
+    0x1f0f, 0x1f8f, 0x1f20, 0x1f90, 0x1f21, 0x1f91, 0x1f22, 0x1f92,
+    0x1f23, 0x1f93, 0x1f24, 0x1f94, 0x1f25, 0x1f95, 0x1f26, 0x1f96,
+    0x1f27, 0x1f97, 0x1f28, 0x1f98, 0x1f29, 0x1f99, 0x1f2a, 0x1f9a,
+    0x1f2b, 0x1f9b, 0x1f2c, 0x1f9c, 0x1f2d, 0x1f9d, 0x1f2e, 0x1f9e,
+    0x1f2f, 0x1f9f, 0x1f60, 0x1fa0, 0x1f61, 0x1fa1, 0x1f62, 0x1fa2,
+    0x1f63, 0x1fa3, 0x1f64, 0x1fa4, 0x1f65, 0x1fa5, 0x1f66, 0x1fa6,
+    0x1f67, 0x1fa7, 0x1f68, 0x1fa8, 0x1f69, 0x1fa9, 0x1f6a, 0x1faa,
+    0x1f6b, 0x1fab, 0x1f6c, 0x1fac, 0x1f6d, 0x1fad, 0x1f6e, 0x1fae,
+    0x1f6f, 0x1faf, 0x1f70, 0x1fb2, 0x1f74, 0x1fc2, 0x1f7c, 0x1ff2,
+    0x1fb6, 0x1fb7, 0x1fc6, 0x1fc7, 0x1ff6, 0x1ff7,
+    /* 0x05b4 */
+    0x05d9, 0xfb1d,
+    /* 0x05b7 */
+    0x05d0, 0xfb2e, 0x05f2, 0xfb1f,
+    /* 0x05b8 */
+    0x05d0, 0xfb2f,
+    /* 0x05b9 */
+    0x05d5, 0xfb4b,
+    /* 0x05bc */
+    0x05d0, 0xfb30, 0x05d1, 0xfb31, 0x05d2, 0xfb32, 0x05d3, 0xfb33,
+    0x05d4, 0xfb34, 0x05d5, 0xfb35, 0x05d6, 0xfb36, 0x05d8, 0xfb38,
+    0x05d9, 0xfb39, 0x05da, 0xfb3a, 0x05db, 0xfb3b, 0x05dc, 0xfb3c,
+    0x05de, 0xfb3e, 0x05e0, 0xfb40, 0x05e1, 0xfb41, 0x05e3, 0xfb43,
+    0x05e4, 0xfb44, 0x05e6, 0xfb46, 0x05e7, 0xfb47, 0x05e8, 0xfb48,
+    0x05e9, 0xfb49, 0x05ea, 0xfb4a,
+    /* 0x05bf */
+    0x05d1, 0xfb4c, 0x05db, 0xfb4d, 0x05e4, 0xfb4e,
+    /* 0x05c1 */
+    0x05e9, 0xfb2a, 0xfb49, 0xfb2c,
+    /* 0x05c2 */
+    0x05e9, 0xfb2b, 0xfb49, 0xfb2d,
+    /* 0x0653 */
+    0x0627, 0x0622,
+    /* 0x0654 */
+    0x0627, 0x0623, 0x0648, 0x0624, 0x064a, 0x0626, 0x06c1, 0x06c2,
+    0x06d2, 0x06d3, 0x06d5, 0x06c0,
+    /* 0x0655 */
+    0x0627, 0x0625,
+    /* 0x093c */
+    0x0915, 0x0958, 0x0916, 0x0959, 0x0917, 0x095a, 0x091c, 0x095b,
+    0x0921, 0x095c, 0x0922, 0x095d, 0x0928, 0x0929, 0x092b, 0x095e,
+    0x092f, 0x095f, 0x0930, 0x0931, 0x0933, 0x0934,
+    /* 0x09bc */
+    0x09a1, 0x09dc, 0x09a2, 0x09dd, 0x09af, 0x09df,
+    /* 0x09be */
+    0x09c7, 0x09cb,
+    /* 0x09d7 */
+    0x09c7, 0x09cc,
+    /* 0x0a3c */
+    0x0a16, 0x0a59, 0x0a17, 0x0a5a, 0x0a1c, 0x0a5b, 0x0a2b, 0x0a5e,
+    0x0a32, 0x0a33, 0x0a38, 0x0a36,
+    /* 0x0b3c */
+    0x0b21, 0x0b5c, 0x0b22, 0x0b5d,
+    /* 0x0b3e */
+    0x0b47, 0x0b4b,
+    /* 0x0b56 */
+    0x0b47, 0x0b48,
+    /* 0x0b57 */
+    0x0b47, 0x0b4c,
+    /* 0x0bbe */
+    0x0bc6, 0x0bca, 0x0bc7, 0x0bcb,
+    /* 0x0bd7 */
+    0x0b92, 0x0b94, 0x0bc6, 0x0bcc,
+    /* 0x0c56 */
+    0x0c46, 0x0c48,
+    /* 0x0cc2 */
+    0x0cc6, 0x0cca,
+    /* 0x0cd5 */
+    0x0cbf, 0x0cc0, 0x0cc6, 0x0cc7, 0x0cca, 0x0ccb,
+    /* 0x0cd6 */
+    0x0cc6, 0x0cc8,
+    /* 0x0d3e */
+    0x0d46, 0x0d4a, 0x0d47, 0x0d4b,
+    /* 0x0d57 */
+    0x0d46, 0x0d4c,
+    /* 0x0dca */
+    0x0dd9, 0x0dda, 0x0ddc, 0x0ddd,
+    /* 0x0dcf */
+    0x0dd9, 0x0ddc,
+    /* 0x0ddf */
+    0x0dd9, 0x0dde,
+    /* 0x0f72 */
+    0x0f71, 0x0f73,
+    /* 0x0f74 */
+    0x0f71, 0x0f75,
+    /* 0x0f80 */
+    0x0f71, 0x0f81, 0x0fb2, 0x0f76, 0x0fb3, 0x0f78,
+    /* 0x0fb5 */
+    0x0f40, 0x0f69, 0x0f90, 0x0fb9,
+    /* 0x0fb7 */
+    0x0f42, 0x0f43, 0x0f4c, 0x0f4d, 0x0f51, 0x0f52, 0x0f56, 0x0f57,
+    0x0f5b, 0x0f5c, 0x0f92, 0x0f93, 0x0f9c, 0x0f9d, 0x0fa1, 0x0fa2,
+    0x0fa6, 0x0fa7, 0x0fab, 0x0fac,
+    /* 0x102e */
+    0x1025, 0x1026,
+    /* 0x1b35 */
+    0x1b05, 0x1b06, 0x1b07, 0x1b08, 0x1b09, 0x1b0a, 0x1b0b, 0x1b0c,
+    0x1b0d, 0x1b0e, 0x1b11, 0x1b12, 0x1b3a, 0x1b3b, 0x1b3c, 0x1b3d,
+    0x1b3e, 0x1b40, 0x1b3f, 0x1b41, 0x1b42, 0x1b43,
+    /* 0x3099 */
+    0x3046, 0x3094, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050,
+    0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058,
+    0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060,
+    0x3061, 0x3062, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069,
+    0x306f, 0x3070, 0x3072, 0x3073, 0x3075, 0x3076, 0x3078, 0x3079,
+    0x307b, 0x307c, 0x309d, 0x309e, 0x30a6, 0x30f4, 0x30ab, 0x30ac,
+    0x30ad, 0x30ae, 0x30af, 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4,
+    0x30b5, 0x30b6, 0x30b7, 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc,
+    0x30bd, 0x30be, 0x30bf, 0x30c0, 0x30c1, 0x30c2, 0x30c4, 0x30c5,
+    0x30c6, 0x30c7, 0x30c8, 0x30c9, 0x30cf, 0x30d0, 0x30d2, 0x30d3,
+    0x30d5, 0x30d6, 0x30d8, 0x30d9, 0x30db, 0x30dc, 0x30ef, 0x30f7,
+    0x30f0, 0x30f8, 0x30f1, 0x30f9, 0x30f2, 0x30fa, 0x30fd, 0x30fe,
+    /* 0x309a */
+    0x306f, 0x3071, 0x3072, 0x3074, 0x3075, 0x3077, 0x3078, 0x307a,
+    0x307b, 0x307d, 0x30cf, 0x30d1, 0x30d2, 0x30d4, 0x30d5, 0x30d7,
+    0x30d8, 0x30da, 0x30db, 0x30dd
+};
+
+const unsigned int unicode_compose_table_size = 70;
+
+const WCHAR unicode_decompose_table[4704] =
+{
+    /* index */
+    0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0100, 0x0160, 0x0100,
+    0x0100, 0x0170, 0x0180, 0x0190, 0x01a0, 0x01b0, 0x0100, 0x01c0,
+    0x01d0, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x01e0, 0x0100, 0x0100, 0x01f0, 0x0200,
+    0x0100, 0x0210, 0x0220, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0230, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0240, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+    0x0100, 0x0100, 0x0100, 0x0250, 0x0100, 0x0100, 0x0100, 0x0100,
+    /* null sub-index */
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260,
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260,
+    /* sub-index 00 */
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260,
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0280, 0x02a0, 0x02c0, 0x02e0,
+    /* sub-index 01 */
+    0x0300, 0x0320, 0x0340, 0x0360, 0x0380, 0x03a0, 0x03c0, 0x03e0,
+    0x0260, 0x0260, 0x0400, 0x0420, 0x0440, 0x0460, 0x0480, 0x04a0,
+    /* sub-index 02 */
+    0x04c0, 0x04e0, 0x0500, 0x0520, 0x0260, 0x0260, 0x0260, 0x0260,
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260,
+    /* sub-index 03 */
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0540, 0x0260, 0x0260, 0x0260,
+    0x0560, 0x0580, 0x05a0, 0x05c0, 0x05e0, 0x0600, 0x0260, 0x0260,
+    /* sub-index 04 */
+    0x0620, 0x0640, 0x0260, 0x0660, 0x0260, 0x0680, 0x0260, 0x06a0,
+    0x0260, 0x0260, 0x0260, 0x0260, 0x06c0, 0x06e0, 0x0700, 0x0720,
+    /* sub-index 06 */
+    0x0260, 0x0260, 0x0740, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260,
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0760, 0x0780, 0x0260, 0x0260,
+    /* sub-index 09 */
+    0x0260, 0x0260, 0x07a0, 0x07c0, 0x0260, 0x07e0, 0x0260, 0x0260,
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0800, 0x0820, 0x0260, 0x0260,
+    /* sub-index 0a */
+    0x0260, 0x0260, 0x0260, 0x0840, 0x0260, 0x0860, 0x0260, 0x0260,
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260,
+    /* sub-index 0b */
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0880, 0x08a0, 0x0260, 0x0260,
+    0x0260, 0x08c0, 0x0260, 0x0260, 0x08e0, 0x0260, 0x0260, 0x0260,
+    /* sub-index 0c */
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0900, 0x0260, 0x0260, 0x0260,
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0920, 0x0260, 0x0260, 0x0260,
+    /* sub-index 0d */
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0940, 0x0260, 0x0260, 0x0260,
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0960, 0x0260, 0x0260,
+    /* sub-index 0f */
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0980, 0x09a0, 0x09c0, 0x09e0,
+    0x0a00, 0x0a20, 0x0a40, 0x0a60, 0x0260, 0x0260, 0x0260, 0x0260,
+    /* sub-index 10 */
+    0x0260, 0x0260, 0x0a80, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260,
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260,
+    /* sub-index 1b */
+    0x0aa0, 0x0ac0, 0x0260, 0x0ae0, 0x0b00, 0x0260, 0x0260, 0x0260,
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260,
+    /* sub-index 1e */
+    0x0b20, 0x0b40, 0x0b60, 0x0b80, 0x0ba0, 0x0bc0, 0x0be0, 0x0c00,
+    0x0c20, 0x0c40, 0x0c60, 0x0c80, 0x0ca0, 0x0cc0, 0x0ce0, 0x0d00,
+    /* sub-index 1f */
+    0x0d20, 0x0d40, 0x0d60, 0x0d80, 0x0da0, 0x0dc0, 0x0de0, 0x0e00,
+    0x0e20, 0x0e40, 0x0e60, 0x0e80, 0x0ea0, 0x0ec0, 0x0ee0, 0x0f00,
+    /* sub-index 21 */
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260,
+    0x0260, 0x0f20, 0x0f40, 0x0260, 0x0f60, 0x0260, 0x0260, 0x0260,
+    /* sub-index 22 */
+    0x0f80, 0x0260, 0x0fa0, 0x0260, 0x0fc0, 0x0260, 0x0fe0, 0x1000,
+    0x1020, 0x0260, 0x1040, 0x0260, 0x0260, 0x0260, 0x1060, 0x0260,
+    /* sub-index 2a */
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260,
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x1080, 0x0260, 0x0260,
+    /* sub-index 30 */
+    0x0260, 0x0260, 0x0260, 0x0260, 0x10a0, 0x10c0, 0x10e0, 0x1100,
+    0x0260, 0x1120, 0x1140, 0x1160, 0x1180, 0x11a0, 0x0260, 0x11c0,
+    /* sub-index fb */
+    0x0260, 0x11e0, 0x1200, 0x1220, 0x1240, 0x0260, 0x0260, 0x0260,
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260,
+    /* null mapping */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x00c0 .. 0x00cf */
+    0x0041, 0x0300, 0x0041, 0x0301, 0x0041, 0x0302, 0x0041, 0x0303,
+    0x0041, 0x0308, 0x0041, 0x030a, 0x0000, 0x0000, 0x0043, 0x0327,
+    0x0045, 0x0300, 0x0045, 0x0301, 0x0045, 0x0302, 0x0045, 0x0308,
+    0x0049, 0x0300, 0x0049, 0x0301, 0x0049, 0x0302, 0x0049, 0x0308,
+    /* 0x00d0 .. 0x00df */
+    0x0000, 0x0000, 0x004e, 0x0303, 0x004f, 0x0300, 0x004f, 0x0301,
+    0x004f, 0x0302, 0x004f, 0x0303, 0x004f, 0x0308, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0055, 0x0300, 0x0055, 0x0301, 0x0055, 0x0302,
+    0x0055, 0x0308, 0x0059, 0x0301, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x00e0 .. 0x00ef */
+    0x0061, 0x0300, 0x0061, 0x0301, 0x0061, 0x0302, 0x0061, 0x0303,
+    0x0061, 0x0308, 0x0061, 0x030a, 0x0000, 0x0000, 0x0063, 0x0327,
+    0x0065, 0x0300, 0x0065, 0x0301, 0x0065, 0x0302, 0x0065, 0x0308,
+    0x0069, 0x0300, 0x0069, 0x0301, 0x0069, 0x0302, 0x0069, 0x0308,
+    /* 0x00f0 .. 0x00ff */
+    0x0000, 0x0000, 0x006e, 0x0303, 0x006f, 0x0300, 0x006f, 0x0301,
+    0x006f, 0x0302, 0x006f, 0x0303, 0x006f, 0x0308, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0075, 0x0300, 0x0075, 0x0301, 0x0075, 0x0302,
+    0x0075, 0x0308, 0x0079, 0x0301, 0x0000, 0x0000, 0x0079, 0x0308,
+    /* 0x0100 .. 0x010f */
+    0x0041, 0x0304, 0x0061, 0x0304, 0x0041, 0x0306, 0x0061, 0x0306,
+    0x0041, 0x0328, 0x0061, 0x0328, 0x0043, 0x0301, 0x0063, 0x0301,
+    0x0043, 0x0302, 0x0063, 0x0302, 0x0043, 0x0307, 0x0063, 0x0307,
+    0x0043, 0x030c, 0x0063, 0x030c, 0x0044, 0x030c, 0x0064, 0x030c,
+    /* 0x0110 .. 0x011f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0045, 0x0304, 0x0065, 0x0304,
+    0x0045, 0x0306, 0x0065, 0x0306, 0x0045, 0x0307, 0x0065, 0x0307,
+    0x0045, 0x0328, 0x0065, 0x0328, 0x0045, 0x030c, 0x0065, 0x030c,
+    0x0047, 0x0302, 0x0067, 0x0302, 0x0047, 0x0306, 0x0067, 0x0306,
+    /* 0x0120 .. 0x012f */
+    0x0047, 0x0307, 0x0067, 0x0307, 0x0047, 0x0327, 0x0067, 0x0327,
+    0x0048, 0x0302, 0x0068, 0x0302, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0049, 0x0303, 0x0069, 0x0303, 0x0049, 0x0304, 0x0069, 0x0304,
+    0x0049, 0x0306, 0x0069, 0x0306, 0x0049, 0x0328, 0x0069, 0x0328,
+    /* 0x0130 .. 0x013f */
+    0x0049, 0x0307, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x004a, 0x0302, 0x006a, 0x0302, 0x004b, 0x0327, 0x006b, 0x0327,
+    0x0000, 0x0000, 0x004c, 0x0301, 0x006c, 0x0301, 0x004c, 0x0327,
+    0x006c, 0x0327, 0x004c, 0x030c, 0x006c, 0x030c, 0x0000, 0x0000,
+    /* 0x0140 .. 0x014f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x004e, 0x0301,
+    0x006e, 0x0301, 0x004e, 0x0327, 0x006e, 0x0327, 0x004e, 0x030c,
+    0x006e, 0x030c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x004f, 0x0304, 0x006f, 0x0304, 0x004f, 0x0306, 0x006f, 0x0306,
+    /* 0x0150 .. 0x015f */
+    0x004f, 0x030b, 0x006f, 0x030b, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0052, 0x0301, 0x0072, 0x0301, 0x0052, 0x0327, 0x0072, 0x0327,
+    0x0052, 0x030c, 0x0072, 0x030c, 0x0053, 0x0301, 0x0073, 0x0301,
+    0x0053, 0x0302, 0x0073, 0x0302, 0x0053, 0x0327, 0x0073, 0x0327,
+    /* 0x0160 .. 0x016f */
+    0x0053, 0x030c, 0x0073, 0x030c, 0x0054, 0x0327, 0x0074, 0x0327,
+    0x0054, 0x030c, 0x0074, 0x030c, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0055, 0x0303, 0x0075, 0x0303, 0x0055, 0x0304, 0x0075, 0x0304,
+    0x0055, 0x0306, 0x0075, 0x0306, 0x0055, 0x030a, 0x0075, 0x030a,
+    /* 0x0170 .. 0x017f */
+    0x0055, 0x030b, 0x0075, 0x030b, 0x0055, 0x0328, 0x0075, 0x0328,
+    0x0057, 0x0302, 0x0077, 0x0302, 0x0059, 0x0302, 0x0079, 0x0302,
+    0x0059, 0x0308, 0x005a, 0x0301, 0x007a, 0x0301, 0x005a, 0x0307,
+    0x007a, 0x0307, 0x005a, 0x030c, 0x007a, 0x030c, 0x0000, 0x0000,
+    /* 0x01a0 .. 0x01af */
+    0x004f, 0x031b, 0x006f, 0x031b, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0055, 0x031b,
+    /* 0x01b0 .. 0x01bf */
+    0x0075, 0x031b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x01c0 .. 0x01cf */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0041, 0x030c, 0x0061, 0x030c, 0x0049, 0x030c,
+    /* 0x01d0 .. 0x01df */
+    0x0069, 0x030c, 0x004f, 0x030c, 0x006f, 0x030c, 0x0055, 0x030c,
+    0x0075, 0x030c, 0x00dc, 0x0304, 0x00fc, 0x0304, 0x00dc, 0x0301,
+    0x00fc, 0x0301, 0x00dc, 0x030c, 0x00fc, 0x030c, 0x00dc, 0x0300,
+    0x00fc, 0x0300, 0x0000, 0x0000, 0x00c4, 0x0304, 0x00e4, 0x0304,
+    /* 0x01e0 .. 0x01ef */
+    0x0226, 0x0304, 0x0227, 0x0304, 0x00c6, 0x0304, 0x00e6, 0x0304,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0047, 0x030c, 0x0067, 0x030c,
+    0x004b, 0x030c, 0x006b, 0x030c, 0x004f, 0x0328, 0x006f, 0x0328,
+    0x01ea, 0x0304, 0x01eb, 0x0304, 0x01b7, 0x030c, 0x0292, 0x030c,
+    /* 0x01f0 .. 0x01ff */
+    0x006a, 0x030c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0047, 0x0301, 0x0067, 0x0301, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x004e, 0x0300, 0x006e, 0x0300, 0x00c5, 0x0301, 0x00e5, 0x0301,
+    0x00c6, 0x0301, 0x00e6, 0x0301, 0x00d8, 0x0301, 0x00f8, 0x0301,
+    /* 0x0200 .. 0x020f */
+    0x0041, 0x030f, 0x0061, 0x030f, 0x0041, 0x0311, 0x0061, 0x0311,
+    0x0045, 0x030f, 0x0065, 0x030f, 0x0045, 0x0311, 0x0065, 0x0311,
+    0x0049, 0x030f, 0x0069, 0x030f, 0x0049, 0x0311, 0x0069, 0x0311,
+    0x004f, 0x030f, 0x006f, 0x030f, 0x004f, 0x0311, 0x006f, 0x0311,
+    /* 0x0210 .. 0x021f */
+    0x0052, 0x030f, 0x0072, 0x030f, 0x0052, 0x0311, 0x0072, 0x0311,
+    0x0055, 0x030f, 0x0075, 0x030f, 0x0055, 0x0311, 0x0075, 0x0311,
+    0x0053, 0x0326, 0x0073, 0x0326, 0x0054, 0x0326, 0x0074, 0x0326,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0048, 0x030c, 0x0068, 0x030c,
+    /* 0x0220 .. 0x022f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0041, 0x0307, 0x0061, 0x0307,
+    0x0045, 0x0327, 0x0065, 0x0327, 0x00d6, 0x0304, 0x00f6, 0x0304,
+    0x00d5, 0x0304, 0x00f5, 0x0304, 0x004f, 0x0307, 0x006f, 0x0307,
+    /* 0x0230 .. 0x023f */
+    0x022e, 0x0304, 0x022f, 0x0304, 0x0059, 0x0304, 0x0079, 0x0304,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0340 .. 0x034f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0308, 0x0301, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0380 .. 0x038f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x00a8, 0x0301, 0x0391, 0x0301, 0x0000, 0x0000,
+    0x0395, 0x0301, 0x0397, 0x0301, 0x0399, 0x0301, 0x0000, 0x0000,
+    0x039f, 0x0301, 0x0000, 0x0000, 0x03a5, 0x0301, 0x03a9, 0x0301,
+    /* 0x0390 .. 0x039f */
+    0x03ca, 0x0301, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x03a0 .. 0x03af */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0399, 0x0308, 0x03a5, 0x0308,
+    0x03b1, 0x0301, 0x03b5, 0x0301, 0x03b7, 0x0301, 0x03b9, 0x0301,
+    /* 0x03b0 .. 0x03bf */
+    0x03cb, 0x0301, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x03c0 .. 0x03cf */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x03b9, 0x0308, 0x03c5, 0x0308,
+    0x03bf, 0x0301, 0x03c5, 0x0301, 0x03c9, 0x0301, 0x0000, 0x0000,
+    /* 0x03d0 .. 0x03df */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03d2, 0x0301,
+    0x03d2, 0x0308, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0400 .. 0x040f */
+    0x0415, 0x0300, 0x0415, 0x0308, 0x0000, 0x0000, 0x0413, 0x0301,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0406, 0x0308,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x041a, 0x0301, 0x0418, 0x0300, 0x0423, 0x0306, 0x0000, 0x0000,
+    /* 0x0410 .. 0x041f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0418, 0x0306, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0430 .. 0x043f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0438, 0x0306, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0450 .. 0x045f */
+    0x0435, 0x0300, 0x0435, 0x0308, 0x0000, 0x0000, 0x0433, 0x0301,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0456, 0x0308,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x043a, 0x0301, 0x0438, 0x0300, 0x0443, 0x0306, 0x0000, 0x0000,
+    /* 0x0470 .. 0x047f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0474, 0x030f, 0x0475, 0x030f,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x04c0 .. 0x04cf */
+    0x0000, 0x0000, 0x0416, 0x0306, 0x0436, 0x0306, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x04d0 .. 0x04df */
+    0x0410, 0x0306, 0x0430, 0x0306, 0x0410, 0x0308, 0x0430, 0x0308,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0415, 0x0306, 0x0435, 0x0306,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x04d8, 0x0308, 0x04d9, 0x0308,
+    0x0416, 0x0308, 0x0436, 0x0308, 0x0417, 0x0308, 0x0437, 0x0308,
+    /* 0x04e0 .. 0x04ef */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0418, 0x0304, 0x0438, 0x0304,
+    0x0418, 0x0308, 0x0438, 0x0308, 0x041e, 0x0308, 0x043e, 0x0308,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x04e8, 0x0308, 0x04e9, 0x0308,
+    0x042d, 0x0308, 0x044d, 0x0308, 0x0423, 0x0304, 0x0443, 0x0304,
+    /* 0x04f0 .. 0x04ff */
+    0x0423, 0x0308, 0x0443, 0x0308, 0x0423, 0x030b, 0x0443, 0x030b,
+    0x0427, 0x0308, 0x0447, 0x0308, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x042b, 0x0308, 0x044b, 0x0308, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0620 .. 0x062f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0627, 0x0653, 0x0627, 0x0654,
+    0x0648, 0x0654, 0x0627, 0x0655, 0x064a, 0x0654, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x06c0 .. 0x06cf */
+    0x06d5, 0x0654, 0x0000, 0x0000, 0x06c1, 0x0654, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x06d0 .. 0x06df */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x06d2, 0x0654,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0920 .. 0x092f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0928, 0x093c, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0930 .. 0x093f */
+    0x0000, 0x0000, 0x0930, 0x093c, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0933, 0x093c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0950 .. 0x095f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0915, 0x093c, 0x0916, 0x093c, 0x0917, 0x093c, 0x091c, 0x093c,
+    0x0921, 0x093c, 0x0922, 0x093c, 0x092b, 0x093c, 0x092f, 0x093c,
+    /* 0x09c0 .. 0x09cf */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x09c7, 0x09be,
+    0x09c7, 0x09d7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x09d0 .. 0x09df */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x09a1, 0x09bc, 0x09a2, 0x09bc, 0x0000, 0x0000, 0x09af, 0x09bc,
+    /* 0x0a30 .. 0x0a3f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a32, 0x0a3c,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0a38, 0x0a3c, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0a50 .. 0x0a5f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0a16, 0x0a3c, 0x0a17, 0x0a3c, 0x0a1c, 0x0a3c,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0a2b, 0x0a3c, 0x0000, 0x0000,
+    /* 0x0b40 .. 0x0b4f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0b47, 0x0b56, 0x0000, 0x0000, 0x0000, 0x0000, 0x0b47, 0x0b3e,
+    0x0b47, 0x0b57, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0b50 .. 0x0b5f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0b21, 0x0b3c, 0x0b22, 0x0b3c, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0b90 .. 0x0b9f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0b92, 0x0bd7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0bc0 .. 0x0bcf */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0bc6, 0x0bbe, 0x0bc7, 0x0bbe,
+    0x0bc6, 0x0bd7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0c40 .. 0x0c4f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0c46, 0x0c56, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0cc0 .. 0x0ccf */
+    0x0cbf, 0x0cd5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0cc6, 0x0cd5,
+    0x0cc6, 0x0cd6, 0x0000, 0x0000, 0x0cc6, 0x0cc2, 0x0cca, 0x0cd5,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0d40 .. 0x0d4f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0d46, 0x0d3e, 0x0d47, 0x0d3e,
+    0x0d46, 0x0d57, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0dd0 .. 0x0ddf */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0dd9, 0x0dca, 0x0000, 0x0000,
+    0x0dd9, 0x0dcf, 0x0ddc, 0x0dca, 0x0dd9, 0x0ddf, 0x0000, 0x0000,
+    /* 0x0f40 .. 0x0f4f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f42, 0x0fb7,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0f4c, 0x0fb7, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0f50 .. 0x0f5f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0f51, 0x0fb7, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f56, 0x0fb7,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0f5b, 0x0fb7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0f60 .. 0x0f6f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0f40, 0x0fb5, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0f70 .. 0x0f7f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f71, 0x0f72,
+    0x0000, 0x0000, 0x0f71, 0x0f74, 0x0fb2, 0x0f80, 0x0000, 0x0000,
+    0x0fb3, 0x0f80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0f80 .. 0x0f8f */
+    0x0000, 0x0000, 0x0f71, 0x0f80, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0f90 .. 0x0f9f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f92, 0x0fb7,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0f9c, 0x0fb7, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0fa0 .. 0x0faf */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0fa1, 0x0fb7, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0fa6, 0x0fb7,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0fab, 0x0fb7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x0fb0 .. 0x0fbf */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0f90, 0x0fb5, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x1020 .. 0x102f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x1025, 0x102e, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x1b00 .. 0x1b0f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x1b05, 0x1b35, 0x0000, 0x0000,
+    0x1b07, 0x1b35, 0x0000, 0x0000, 0x1b09, 0x1b35, 0x0000, 0x0000,
+    0x1b0b, 0x1b35, 0x0000, 0x0000, 0x1b0d, 0x1b35, 0x0000, 0x0000,
+    /* 0x1b10 .. 0x1b1f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x1b11, 0x1b35, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x1b30 .. 0x1b3f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1b3a, 0x1b35,
+    0x0000, 0x0000, 0x1b3c, 0x1b35, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x1b40 .. 0x1b4f */
+    0x1b3e, 0x1b35, 0x1b3f, 0x1b35, 0x0000, 0x0000, 0x1b42, 0x1b35,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x1e00 .. 0x1e0f */
+    0x0041, 0x0325, 0x0061, 0x0325, 0x0042, 0x0307, 0x0062, 0x0307,
+    0x0042, 0x0323, 0x0062, 0x0323, 0x0042, 0x0331, 0x0062, 0x0331,
+    0x00c7, 0x0301, 0x00e7, 0x0301, 0x0044, 0x0307, 0x0064, 0x0307,
+    0x0044, 0x0323, 0x0064, 0x0323, 0x0044, 0x0331, 0x0064, 0x0331,
+    /* 0x1e10 .. 0x1e1f */
+    0x0044, 0x0327, 0x0064, 0x0327, 0x0044, 0x032d, 0x0064, 0x032d,
+    0x0112, 0x0300, 0x0113, 0x0300, 0x0112, 0x0301, 0x0113, 0x0301,
+    0x0045, 0x032d, 0x0065, 0x032d, 0x0045, 0x0330, 0x0065, 0x0330,
+    0x0228, 0x0306, 0x0229, 0x0306, 0x0046, 0x0307, 0x0066, 0x0307,
+    /* 0x1e20 .. 0x1e2f */
+    0x0047, 0x0304, 0x0067, 0x0304, 0x0048, 0x0307, 0x0068, 0x0307,
+    0x0048, 0x0323, 0x0068, 0x0323, 0x0048, 0x0308, 0x0068, 0x0308,
+    0x0048, 0x0327, 0x0068, 0x0327, 0x0048, 0x032e, 0x0068, 0x032e,
+    0x0049, 0x0330, 0x0069, 0x0330, 0x00cf, 0x0301, 0x00ef, 0x0301,
+    /* 0x1e30 .. 0x1e3f */
+    0x004b, 0x0301, 0x006b, 0x0301, 0x004b, 0x0323, 0x006b, 0x0323,
+    0x004b, 0x0331, 0x006b, 0x0331, 0x004c, 0x0323, 0x006c, 0x0323,
+    0x1e36, 0x0304, 0x1e37, 0x0304, 0x004c, 0x0331, 0x006c, 0x0331,
+    0x004c, 0x032d, 0x006c, 0x032d, 0x004d, 0x0301, 0x006d, 0x0301,
+    /* 0x1e40 .. 0x1e4f */
+    0x004d, 0x0307, 0x006d, 0x0307, 0x004d, 0x0323, 0x006d, 0x0323,
+    0x004e, 0x0307, 0x006e, 0x0307, 0x004e, 0x0323, 0x006e, 0x0323,
+    0x004e, 0x0331, 0x006e, 0x0331, 0x004e, 0x032d, 0x006e, 0x032d,
+    0x00d5, 0x0301, 0x00f5, 0x0301, 0x00d5, 0x0308, 0x00f5, 0x0308,
+    /* 0x1e50 .. 0x1e5f */
+    0x014c, 0x0300, 0x014d, 0x0300, 0x014c, 0x0301, 0x014d, 0x0301,
+    0x0050, 0x0301, 0x0070, 0x0301, 0x0050, 0x0307, 0x0070, 0x0307,
+    0x0052, 0x0307, 0x0072, 0x0307, 0x0052, 0x0323, 0x0072, 0x0323,
+    0x1e5a, 0x0304, 0x1e5b, 0x0304, 0x0052, 0x0331, 0x0072, 0x0331,
+    /* 0x1e60 .. 0x1e6f */
+    0x0053, 0x0307, 0x0073, 0x0307, 0x0053, 0x0323, 0x0073, 0x0323,
+    0x015a, 0x0307, 0x015b, 0x0307, 0x0160, 0x0307, 0x0161, 0x0307,
+    0x1e62, 0x0307, 0x1e63, 0x0307, 0x0054, 0x0307, 0x0074, 0x0307,
+    0x0054, 0x0323, 0x0074, 0x0323, 0x0054, 0x0331, 0x0074, 0x0331,
+    /* 0x1e70 .. 0x1e7f */
+    0x0054, 0x032d, 0x0074, 0x032d, 0x0055, 0x0324, 0x0075, 0x0324,
+    0x0055, 0x0330, 0x0075, 0x0330, 0x0055, 0x032d, 0x0075, 0x032d,
+    0x0168, 0x0301, 0x0169, 0x0301, 0x016a, 0x0308, 0x016b, 0x0308,
+    0x0056, 0x0303, 0x0076, 0x0303, 0x0056, 0x0323, 0x0076, 0x0323,
+    /* 0x1e80 .. 0x1e8f */
+    0x0057, 0x0300, 0x0077, 0x0300, 0x0057, 0x0301, 0x0077, 0x0301,
+    0x0057, 0x0308, 0x0077, 0x0308, 0x0057, 0x0307, 0x0077, 0x0307,
+    0x0057, 0x0323, 0x0077, 0x0323, 0x0058, 0x0307, 0x0078, 0x0307,
+    0x0058, 0x0308, 0x0078, 0x0308, 0x0059, 0x0307, 0x0079, 0x0307,
+    /* 0x1e90 .. 0x1e9f */
+    0x005a, 0x0302, 0x007a, 0x0302, 0x005a, 0x0323, 0x007a, 0x0323,
+    0x005a, 0x0331, 0x007a, 0x0331, 0x0068, 0x0331, 0x0074, 0x0308,
+    0x0077, 0x030a, 0x0079, 0x030a, 0x0000, 0x0000, 0x017f, 0x0307,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x1ea0 .. 0x1eaf */
+    0x0041, 0x0323, 0x0061, 0x0323, 0x0041, 0x0309, 0x0061, 0x0309,
+    0x00c2, 0x0301, 0x00e2, 0x0301, 0x00c2, 0x0300, 0x00e2, 0x0300,
+    0x00c2, 0x0309, 0x00e2, 0x0309, 0x00c2, 0x0303, 0x00e2, 0x0303,
+    0x1ea0, 0x0302, 0x1ea1, 0x0302, 0x0102, 0x0301, 0x0103, 0x0301,
+    /* 0x1eb0 .. 0x1ebf */
+    0x0102, 0x0300, 0x0103, 0x0300, 0x0102, 0x0309, 0x0103, 0x0309,
+    0x0102, 0x0303, 0x0103, 0x0303, 0x1ea0, 0x0306, 0x1ea1, 0x0306,
+    0x0045, 0x0323, 0x0065, 0x0323, 0x0045, 0x0309, 0x0065, 0x0309,
+    0x0045, 0x0303, 0x0065, 0x0303, 0x00ca, 0x0301, 0x00ea, 0x0301,
+    /* 0x1ec0 .. 0x1ecf */
+    0x00ca, 0x0300, 0x00ea, 0x0300, 0x00ca, 0x0309, 0x00ea, 0x0309,
+    0x00ca, 0x0303, 0x00ea, 0x0303, 0x1eb8, 0x0302, 0x1eb9, 0x0302,
+    0x0049, 0x0309, 0x0069, 0x0309, 0x0049, 0x0323, 0x0069, 0x0323,
+    0x004f, 0x0323, 0x006f, 0x0323, 0x004f, 0x0309, 0x006f, 0x0309,
+    /* 0x1ed0 .. 0x1edf */
+    0x00d4, 0x0301, 0x00f4, 0x0301, 0x00d4, 0x0300, 0x00f4, 0x0300,
+    0x00d4, 0x0309, 0x00f4, 0x0309, 0x00d4, 0x0303, 0x00f4, 0x0303,
+    0x1ecc, 0x0302, 0x1ecd, 0x0302, 0x01a0, 0x0301, 0x01a1, 0x0301,
+    0x01a0, 0x0300, 0x01a1, 0x0300, 0x01a0, 0x0309, 0x01a1, 0x0309,
+    /* 0x1ee0 .. 0x1eef */
+    0x01a0, 0x0303, 0x01a1, 0x0303, 0x01a0, 0x0323, 0x01a1, 0x0323,
+    0x0055, 0x0323, 0x0075, 0x0323, 0x0055, 0x0309, 0x0075, 0x0309,
+    0x01af, 0x0301, 0x01b0, 0x0301, 0x01af, 0x0300, 0x01b0, 0x0300,
+    0x01af, 0x0309, 0x01b0, 0x0309, 0x01af, 0x0303, 0x01b0, 0x0303,
+    /* 0x1ef0 .. 0x1eff */
+    0x01af, 0x0323, 0x01b0, 0x0323, 0x0059, 0x0300, 0x0079, 0x0300,
+    0x0059, 0x0323, 0x0079, 0x0323, 0x0059, 0x0309, 0x0079, 0x0309,
+    0x0059, 0x0303, 0x0079, 0x0303, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x1f00 .. 0x1f0f */
+    0x03b1, 0x0313, 0x03b1, 0x0314, 0x1f00, 0x0300, 0x1f01, 0x0300,
+    0x1f00, 0x0301, 0x1f01, 0x0301, 0x1f00, 0x0342, 0x1f01, 0x0342,
+    0x0391, 0x0313, 0x0391, 0x0314, 0x1f08, 0x0300, 0x1f09, 0x0300,
+    0x1f08, 0x0301, 0x1f09, 0x0301, 0x1f08, 0x0342, 0x1f09, 0x0342,
+    /* 0x1f10 .. 0x1f1f */
+    0x03b5, 0x0313, 0x03b5, 0x0314, 0x1f10, 0x0300, 0x1f11, 0x0300,
+    0x1f10, 0x0301, 0x1f11, 0x0301, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0395, 0x0313, 0x0395, 0x0314, 0x1f18, 0x0300, 0x1f19, 0x0300,
+    0x1f18, 0x0301, 0x1f19, 0x0301, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x1f20 .. 0x1f2f */
+    0x03b7, 0x0313, 0x03b7, 0x0314, 0x1f20, 0x0300, 0x1f21, 0x0300,
+    0x1f20, 0x0301, 0x1f21, 0x0301, 0x1f20, 0x0342, 0x1f21, 0x0342,
+    0x0397, 0x0313, 0x0397, 0x0314, 0x1f28, 0x0300, 0x1f29, 0x0300,
+    0x1f28, 0x0301, 0x1f29, 0x0301, 0x1f28, 0x0342, 0x1f29, 0x0342,
+    /* 0x1f30 .. 0x1f3f */
+    0x03b9, 0x0313, 0x03b9, 0x0314, 0x1f30, 0x0300, 0x1f31, 0x0300,
+    0x1f30, 0x0301, 0x1f31, 0x0301, 0x1f30, 0x0342, 0x1f31, 0x0342,
+    0x0399, 0x0313, 0x0399, 0x0314, 0x1f38, 0x0300, 0x1f39, 0x0300,
+    0x1f38, 0x0301, 0x1f39, 0x0301, 0x1f38, 0x0342, 0x1f39, 0x0342,
+    /* 0x1f40 .. 0x1f4f */
+    0x03bf, 0x0313, 0x03bf, 0x0314, 0x1f40, 0x0300, 0x1f41, 0x0300,
+    0x1f40, 0x0301, 0x1f41, 0x0301, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x039f, 0x0313, 0x039f, 0x0314, 0x1f48, 0x0300, 0x1f49, 0x0300,
+    0x1f48, 0x0301, 0x1f49, 0x0301, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x1f50 .. 0x1f5f */
+    0x03c5, 0x0313, 0x03c5, 0x0314, 0x1f50, 0x0300, 0x1f51, 0x0300,
+    0x1f50, 0x0301, 0x1f51, 0x0301, 0x1f50, 0x0342, 0x1f51, 0x0342,
+    0x0000, 0x0000, 0x03a5, 0x0314, 0x0000, 0x0000, 0x1f59, 0x0300,
+    0x0000, 0x0000, 0x1f59, 0x0301, 0x0000, 0x0000, 0x1f59, 0x0342,
+    /* 0x1f60 .. 0x1f6f */
+    0x03c9, 0x0313, 0x03c9, 0x0314, 0x1f60, 0x0300, 0x1f61, 0x0300,
+    0x1f60, 0x0301, 0x1f61, 0x0301, 0x1f60, 0x0342, 0x1f61, 0x0342,
+    0x03a9, 0x0313, 0x03a9, 0x0314, 0x1f68, 0x0300, 0x1f69, 0x0300,
+    0x1f68, 0x0301, 0x1f69, 0x0301, 0x1f68, 0x0342, 0x1f69, 0x0342,
+    /* 0x1f70 .. 0x1f7f */
+    0x03b1, 0x0300, 0x0000, 0x0000, 0x03b5, 0x0300, 0x0000, 0x0000,
+    0x03b7, 0x0300, 0x0000, 0x0000, 0x03b9, 0x0300, 0x0000, 0x0000,
+    0x03bf, 0x0300, 0x0000, 0x0000, 0x03c5, 0x0300, 0x0000, 0x0000,
+    0x03c9, 0x0300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x1f80 .. 0x1f8f */
+    0x1f00, 0x0345, 0x1f01, 0x0345, 0x1f02, 0x0345, 0x1f03, 0x0345,
+    0x1f04, 0x0345, 0x1f05, 0x0345, 0x1f06, 0x0345, 0x1f07, 0x0345,
+    0x1f08, 0x0345, 0x1f09, 0x0345, 0x1f0a, 0x0345, 0x1f0b, 0x0345,
+    0x1f0c, 0x0345, 0x1f0d, 0x0345, 0x1f0e, 0x0345, 0x1f0f, 0x0345,
+    /* 0x1f90 .. 0x1f9f */
+    0x1f20, 0x0345, 0x1f21, 0x0345, 0x1f22, 0x0345, 0x1f23, 0x0345,
+    0x1f24, 0x0345, 0x1f25, 0x0345, 0x1f26, 0x0345, 0x1f27, 0x0345,
+    0x1f28, 0x0345, 0x1f29, 0x0345, 0x1f2a, 0x0345, 0x1f2b, 0x0345,
+    0x1f2c, 0x0345, 0x1f2d, 0x0345, 0x1f2e, 0x0345, 0x1f2f, 0x0345,
+    /* 0x1fa0 .. 0x1faf */
+    0x1f60, 0x0345, 0x1f61, 0x0345, 0x1f62, 0x0345, 0x1f63, 0x0345,
+    0x1f64, 0x0345, 0x1f65, 0x0345, 0x1f66, 0x0345, 0x1f67, 0x0345,
+    0x1f68, 0x0345, 0x1f69, 0x0345, 0x1f6a, 0x0345, 0x1f6b, 0x0345,
+    0x1f6c, 0x0345, 0x1f6d, 0x0345, 0x1f6e, 0x0345, 0x1f6f, 0x0345,
+    /* 0x1fb0 .. 0x1fbf */
+    0x03b1, 0x0306, 0x03b1, 0x0304, 0x1f70, 0x0345, 0x03b1, 0x0345,
+    0x03ac, 0x0345, 0x0000, 0x0000, 0x03b1, 0x0342, 0x1fb6, 0x0345,
+    0x0391, 0x0306, 0x0391, 0x0304, 0x0391, 0x0300, 0x0000, 0x0000,
+    0x0391, 0x0345, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x1fc0 .. 0x1fcf */
+    0x0000, 0x0000, 0x00a8, 0x0342, 0x1f74, 0x0345, 0x03b7, 0x0345,
+    0x03ae, 0x0345, 0x0000, 0x0000, 0x03b7, 0x0342, 0x1fc6, 0x0345,
+    0x0395, 0x0300, 0x0000, 0x0000, 0x0397, 0x0300, 0x0000, 0x0000,
+    0x0397, 0x0345, 0x1fbf, 0x0300, 0x1fbf, 0x0301, 0x1fbf, 0x0342,
+    /* 0x1fd0 .. 0x1fdf */
+    0x03b9, 0x0306, 0x03b9, 0x0304, 0x03ca, 0x0300, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x03b9, 0x0342, 0x03ca, 0x0342,
+    0x0399, 0x0306, 0x0399, 0x0304, 0x0399, 0x0300, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x1ffe, 0x0300, 0x1ffe, 0x0301, 0x1ffe, 0x0342,
+    /* 0x1fe0 .. 0x1fef */
+    0x03c5, 0x0306, 0x03c5, 0x0304, 0x03cb, 0x0300, 0x0000, 0x0000,
+    0x03c1, 0x0313, 0x03c1, 0x0314, 0x03c5, 0x0342, 0x03cb, 0x0342,
+    0x03a5, 0x0306, 0x03a5, 0x0304, 0x03a5, 0x0300, 0x0000, 0x0000,
+    0x03a1, 0x0314, 0x00a8, 0x0300, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x1ff0 .. 0x1fff */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x1f7c, 0x0345, 0x03c9, 0x0345,
+    0x03ce, 0x0345, 0x0000, 0x0000, 0x03c9, 0x0342, 0x1ff6, 0x0345,
+    0x039f, 0x0300, 0x0000, 0x0000, 0x03a9, 0x0300, 0x0000, 0x0000,
+    0x03a9, 0x0345, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x2190 .. 0x219f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x2190, 0x0338, 0x2192, 0x0338,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x21a0 .. 0x21af */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x2194, 0x0338, 0x0000, 0x0000,
+    /* 0x21c0 .. 0x21cf */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x21d0, 0x0338, 0x21d4, 0x0338, 0x21d2, 0x0338,
+    /* 0x2200 .. 0x220f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x2203, 0x0338, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x2208, 0x0338, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x220b, 0x0338, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x2220 .. 0x222f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x2223, 0x0338, 0x0000, 0x0000, 0x2225, 0x0338, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x2240 .. 0x224f */
+    0x0000, 0x0000, 0x223c, 0x0338, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x2243, 0x0338, 0x0000, 0x0000, 0x0000, 0x0000, 0x2245, 0x0338,
+    0x0000, 0x0000, 0x2248, 0x0338, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x2260 .. 0x226f */
+    0x003d, 0x0338, 0x0000, 0x0000, 0x2261, 0x0338, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x224d, 0x0338, 0x003c, 0x0338, 0x003e, 0x0338,
+    /* 0x2270 .. 0x227f */
+    0x2264, 0x0338, 0x2265, 0x0338, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x2272, 0x0338, 0x2273, 0x0338, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x2276, 0x0338, 0x2277, 0x0338, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x2280 .. 0x228f */
+    0x227a, 0x0338, 0x227b, 0x0338, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x2282, 0x0338, 0x2283, 0x0338, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x2286, 0x0338, 0x2287, 0x0338, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x22a0 .. 0x22af */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x22a2, 0x0338, 0x22a8, 0x0338, 0x22a9, 0x0338, 0x22ab, 0x0338,
+    /* 0x22e0 .. 0x22ef */
+    0x227c, 0x0338, 0x227d, 0x0338, 0x2291, 0x0338, 0x2292, 0x0338,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x22b2, 0x0338, 0x22b3, 0x0338,
+    0x22b4, 0x0338, 0x22b5, 0x0338, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x2ad0 .. 0x2adf */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x2add, 0x0338, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x3040 .. 0x304f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x304b, 0x3099, 0x0000, 0x0000, 0x304d, 0x3099, 0x0000, 0x0000,
+    /* 0x3050 .. 0x305f */
+    0x304f, 0x3099, 0x0000, 0x0000, 0x3051, 0x3099, 0x0000, 0x0000,
+    0x3053, 0x3099, 0x0000, 0x0000, 0x3055, 0x3099, 0x0000, 0x0000,
+    0x3057, 0x3099, 0x0000, 0x0000, 0x3059, 0x3099, 0x0000, 0x0000,
+    0x305b, 0x3099, 0x0000, 0x0000, 0x305d, 0x3099, 0x0000, 0x0000,
+    /* 0x3060 .. 0x306f */
+    0x305f, 0x3099, 0x0000, 0x0000, 0x3061, 0x3099, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x3064, 0x3099, 0x0000, 0x0000, 0x3066, 0x3099,
+    0x0000, 0x0000, 0x3068, 0x3099, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x3070 .. 0x307f */
+    0x306f, 0x3099, 0x306f, 0x309a, 0x0000, 0x0000, 0x3072, 0x3099,
+    0x3072, 0x309a, 0x0000, 0x0000, 0x3075, 0x3099, 0x3075, 0x309a,
+    0x0000, 0x0000, 0x3078, 0x3099, 0x3078, 0x309a, 0x0000, 0x0000,
+    0x307b, 0x3099, 0x307b, 0x309a, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x3090 .. 0x309f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x3046, 0x3099, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x309d, 0x3099, 0x0000, 0x0000,
+    /* 0x30a0 .. 0x30af */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x30ab, 0x3099, 0x0000, 0x0000, 0x30ad, 0x3099, 0x0000, 0x0000,
+    /* 0x30b0 .. 0x30bf */
+    0x30af, 0x3099, 0x0000, 0x0000, 0x30b1, 0x3099, 0x0000, 0x0000,
+    0x30b3, 0x3099, 0x0000, 0x0000, 0x30b5, 0x3099, 0x0000, 0x0000,
+    0x30b7, 0x3099, 0x0000, 0x0000, 0x30b9, 0x3099, 0x0000, 0x0000,
+    0x30bb, 0x3099, 0x0000, 0x0000, 0x30bd, 0x3099, 0x0000, 0x0000,
+    /* 0x30c0 .. 0x30cf */
+    0x30bf, 0x3099, 0x0000, 0x0000, 0x30c1, 0x3099, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x30c4, 0x3099, 0x0000, 0x0000, 0x30c6, 0x3099,
+    0x0000, 0x0000, 0x30c8, 0x3099, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x30d0 .. 0x30df */
+    0x30cf, 0x3099, 0x30cf, 0x309a, 0x0000, 0x0000, 0x30d2, 0x3099,
+    0x30d2, 0x309a, 0x0000, 0x0000, 0x30d5, 0x3099, 0x30d5, 0x309a,
+    0x0000, 0x0000, 0x30d8, 0x3099, 0x30d8, 0x309a, 0x0000, 0x0000,
+    0x30db, 0x3099, 0x30db, 0x309a, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x30f0 .. 0x30ff */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x30a6, 0x3099, 0x0000, 0x0000, 0x0000, 0x0000, 0x30ef, 0x3099,
+    0x30f0, 0x3099, 0x30f1, 0x3099, 0x30f2, 0x3099, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x30fd, 0x3099, 0x0000, 0x0000,
+    /* 0xfb10 .. 0xfb1f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x05d9, 0x05b4, 0x0000, 0x0000, 0x05f2, 0x05b7,
+    /* 0xfb20 .. 0xfb2f */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x05e9, 0x05c1, 0x05e9, 0x05c2,
+    0xfb49, 0x05c1, 0xfb49, 0x05c2, 0x05d0, 0x05b7, 0x05d0, 0x05b8,
+    /* 0xfb30 .. 0xfb3f */
+    0x05d0, 0x05bc, 0x05d1, 0x05bc, 0x05d2, 0x05bc, 0x05d3, 0x05bc,
+    0x05d4, 0x05bc, 0x05d5, 0x05bc, 0x05d6, 0x05bc, 0x0000, 0x0000,
+    0x05d8, 0x05bc, 0x05d9, 0x05bc, 0x05da, 0x05bc, 0x05db, 0x05bc,
+    0x05dc, 0x05bc, 0x0000, 0x0000, 0x05de, 0x05bc, 0x0000, 0x0000,
+    /* 0xfb40 .. 0xfb4f */
+    0x05e0, 0x05bc, 0x05e1, 0x05bc, 0x0000, 0x0000, 0x05e3, 0x05bc,
+    0x05e4, 0x05bc, 0x0000, 0x0000, 0x05e6, 0x05bc, 0x05e7, 0x05bc,
+    0x05e8, 0x05bc, 0x05e9, 0x05bc, 0x05ea, 0x05bc, 0x05d5, 0x05b9,
+    0x05d1, 0x05bf, 0x05db, 0x05bf, 0x05e4, 0x05bf, 0x0000, 0x0000
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/config.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/config.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/config.c	(revision 16410)
@@ -0,0 +1,514 @@
+/*
+ * Configuration parameters shared between Wine server and clients
+ *
+ * Copyright 2002 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "wine/port.h"
+
+#include <stdio.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <sys/stat.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#ifdef HAVE_PWD_H
+#include <pwd.h>
+#endif
+#include "wine/library.h"
+
+static const char server_config_dir[] = "/.wine";        /* config dir relative to $HOME */
+static const char server_root_prefix[] = "/tmp/.wine-";  /* prefix for server root dir */
+static const char server_dir_prefix[] = "/server-";      /* prefix for server dir */
+
+static char *bindir;
+static char *dlldir;
+static char *datadir;
+static char *config_dir;
+static char *server_dir;
+static char *build_dir;
+static char *user_name;
+static char *argv0_name;
+
+#ifdef __GNUC__
+static void fatal_error( const char *err, ... )  __attribute__((noreturn,format(printf,1,2)));
+static void fatal_perror( const char *err, ... )  __attribute__((noreturn,format(printf,1,2)));
+#endif
+
+/* die on a fatal error */
+static void fatal_error( const char *err, ... )
+{
+    va_list args;
+
+    va_start( args, err );
+    fprintf( stderr, "wine: " );
+    vfprintf( stderr, err, args );
+    va_end( args );
+    exit(1);
+}
+
+/* die on a fatal error */
+static void fatal_perror( const char *err, ... )
+{
+    va_list args;
+
+    va_start( args, err );
+    fprintf( stderr, "wine: " );
+    vfprintf( stderr, err, args );
+    perror( " " );
+    va_end( args );
+    exit(1);
+}
+
+/* malloc wrapper */
+static void *xmalloc( size_t size )
+{
+    void *res;
+
+    if (!size) size = 1;
+    if (!(res = malloc( size ))) fatal_error( "virtual memory exhausted\n");
+    return res;
+}
+
+/* strdup wrapper */
+static char *xstrdup( const char *str )
+{
+    size_t len = strlen(str) + 1;
+    char *res = xmalloc( len );
+    memcpy( res, str, len );
+    return res;
+}
+
+/* remove all trailing slashes from a path name */
+static inline void remove_trailing_slashes( char *path )
+{
+    int len = strlen( path );
+    while (len > 1 && path[len-1] == '/') path[--len] = 0;
+}
+
+/* build a path from the specified dir and name */
+static char *build_path( const char *dir, const char *name )
+{
+    size_t len = strlen(dir);
+    char *ret = xmalloc( len + strlen(name) + 2 );
+
+    memcpy( ret, dir, len );
+    if (len && ret[len-1] != '/') ret[len++] = '/';
+    strcpy( ret + len, name );
+    return ret;
+}
+
+/* return the directory that contains the library at run-time */
+static char *get_runtime_libdir(void)
+{
+#ifdef HAVE_DLADDR
+    Dl_info info;
+    char *libdir;
+
+    if (dladdr( get_runtime_libdir, &info ) && info.dli_fname[0] == '/')
+    {
+        const char *p = strrchr( info.dli_fname, '/' );
+        unsigned int len = p - info.dli_fname;
+        if (!len) len++;  /* include initial slash */
+        libdir = xmalloc( len + 1 );
+        memcpy( libdir, info.dli_fname, len );
+        libdir[len] = 0;
+        return libdir;
+    }
+#endif /* HAVE_DLADDR */
+    return NULL;
+}
+
+/* initialize the server directory value */
+static void init_server_dir( dev_t dev, ino_t ino )
+{
+    char *p;
+#ifdef HAVE_GETUID
+    const unsigned int uid = getuid();
+#else
+    const unsigned int uid = 0;
+#endif
+
+    server_dir = xmalloc( sizeof(server_root_prefix) + 32 + sizeof(server_dir_prefix) +
+                          2*sizeof(dev) + 2*sizeof(ino) );
+    sprintf( server_dir, "%s%u%s", server_root_prefix, uid, server_dir_prefix );
+    p = server_dir + strlen(server_dir);
+
+    if (sizeof(dev) > sizeof(unsigned long) && dev > ~0UL)
+        p += sprintf( p, "%lx%08lx-", (unsigned long)((unsigned long long)dev >> 32), (unsigned long)dev );
+    else
+        p += sprintf( p, "%lx-", (unsigned long)dev );
+
+    if (sizeof(ino) > sizeof(unsigned long) && ino > ~0UL)
+        sprintf( p, "%lx%08lx", (unsigned long)((unsigned long long)ino >> 32), (unsigned long)ino );
+    else
+        sprintf( p, "%lx", (unsigned long)ino );
+}
+
+/* retrieve the default dll dir */
+const char *get_dlldir( const char **default_dlldir )
+{
+    *default_dlldir = DLLDIR;
+    return dlldir;
+}
+
+/* initialize all the paths values */
+static void init_paths(void)
+{
+    struct stat st;
+
+    const char *home = getenv( "HOME" );
+    const char *user = NULL;
+    const char *prefix = getenv( "WINEPREFIX" );
+
+#ifdef HAVE_GETPWUID
+    char uid_str[32];
+    struct passwd *pwd = getpwuid( getuid() );
+
+    if (pwd)
+    {
+        user = pwd->pw_name;
+        if (!home) home = pwd->pw_dir;
+    }
+    if (!user)
+    {
+        sprintf( uid_str, "%lu", (unsigned long)getuid() );
+        user = uid_str;
+    }
+#else  /* HAVE_GETPWUID */
+    if (!(user = getenv( "USER" )))
+        fatal_error( "cannot determine your user name, set the USER environment variable\n" );
+#endif  /* HAVE_GETPWUID */
+    user_name = xstrdup( user );
+
+    /* build config_dir */
+
+    if (prefix)
+    {
+        config_dir = xstrdup( prefix );
+        remove_trailing_slashes( config_dir );
+        if (config_dir[0] != '/')
+            fatal_error( "invalid directory %s in WINEPREFIX: not an absolute path\n", prefix );
+        if (stat( config_dir, &st ) == -1)
+        {
+            if (errno == ENOENT) return;  /* will be created later on */
+            fatal_perror( "cannot open %s as specified in WINEPREFIX", config_dir );
+        }
+    }
+    else
+    {
+        if (!home) fatal_error( "could not determine your home directory\n" );
+        if (home[0] != '/') fatal_error( "your home directory %s is not an absolute path\n", home );
+        config_dir = xmalloc( strlen(home) + sizeof(server_config_dir) );
+        strcpy( config_dir, home );
+        remove_trailing_slashes( config_dir );
+        strcat( config_dir, server_config_dir );
+        if (stat( config_dir, &st ) == -1)
+        {
+            if (errno == ENOENT) return;  /* will be created later on */
+            fatal_perror( "cannot open %s", config_dir );
+        }
+    }
+    if (!S_ISDIR(st.st_mode)) fatal_error( "%s is not a directory\n", config_dir );
+#ifdef HAVE_GETUID
+    if (st.st_uid != getuid()) fatal_error( "%s is not owned by you\n", config_dir );
+#endif
+
+    init_server_dir( st.st_dev, st.st_ino );
+}
+
+/* check if basedir is a valid build dir by checking for wineserver and ntdll */
+/* helper for running_from_build_dir */
+static inline int is_valid_build_dir( char *basedir, int baselen )
+{
+    struct stat st;
+
+    strcpy( basedir + baselen, "/server/wineserver" );
+    if (stat( basedir, &st ) == -1) return 0;  /* no wineserver found */
+    /* check for ntdll too to make sure */
+    strcpy( basedir + baselen, "/dlls/ntdll/ntdll.dll.so" );
+    if (stat( basedir, &st ) == -1) return 0;  /* no ntdll found */
+
+    basedir[baselen] = 0;
+    return 1;
+}
+
+/* check if we are running from the build directory */
+static char *running_from_build_dir( const char *basedir, const char *bindir )
+{
+    struct stat st;
+    const char *p;
+    char *path;
+    int res;
+
+    if (!(path = build_path( bindir, "wineserver" ))) return NULL;
+    res = stat( path, &st );
+    free( path );
+    if (res != -1) return NULL;  /* the real bindir is valid */
+
+    /* remove last component from basedir */
+    p = basedir + strlen(basedir) - 1;
+    while (p > basedir && *p == '/') p--;
+    while (p > basedir && *p != '/') p--;
+    if (p == basedir) return NULL;
+    path = xmalloc( p - basedir + sizeof("/dlls/ntdll/ntdll.dll.so") );
+    memcpy( path, basedir, p - basedir );
+
+    if (!is_valid_build_dir( path, p - basedir ))
+    {
+        /* remove another component */
+        while (p > basedir && *p == '/') p--;
+        while (p > basedir && *p != '/') p--;
+        if (p == basedir || !is_valid_build_dir( path, p - basedir ))
+        {
+            free( path );
+            return NULL;
+        }
+    }
+    return path;
+}
+
+/* initialize the argv0 path */
+void wine_init_argv0_path( const char *argv0 )
+{
+    size_t size, len;
+    const char *p, *basename;
+    char *cwd, *libdir;
+
+    if (!(p = strrchr( argv0, '/' )))
+        basename = argv0;
+    else
+        basename = p + 1;
+
+    argv0_name = xstrdup( basename );
+
+    if ((libdir = get_runtime_libdir()))
+    {
+        bindir = build_path( libdir, LIB_TO_BINDIR );
+        if ((build_dir = running_from_build_dir( libdir, bindir )))
+        {
+            free( libdir );
+            goto in_build_dir;
+        }
+        dlldir = build_path( libdir, LIB_TO_DLLDIR );
+        datadir = build_path( libdir, LIB_TO_DATADIR );
+        free( libdir );
+        return;
+    }
+
+    if (!p) return;  /* if argv0 doesn't contain a path, don't store anything */
+
+    len = p - argv0;
+    if (!len) len++;  /* include leading slash */
+
+    if (argv0[0] == '/')  /* absolute path */
+    {
+        bindir = xmalloc( len + 1 );
+        memcpy( bindir, argv0, len );
+        bindir[len] = 0;
+    }
+    else
+    {
+        /* relative path, make it absolute */
+        for (size = 256 + len; ; size *= 2)
+        {
+            if (!(cwd = malloc( size ))) return;
+            if (getcwd( cwd, size - len ))
+            {
+                bindir = cwd;
+                cwd += strlen(cwd);
+                *cwd++ = '/';
+                memcpy( cwd, argv0, len );
+                cwd[len] = 0;
+                break;
+            }
+            free( cwd );
+            if (errno != ERANGE) return;
+        }
+    }
+
+    if ((build_dir = running_from_build_dir( bindir, bindir ))) goto in_build_dir;
+
+    dlldir = build_path( bindir, BIN_TO_DLLDIR );
+    datadir = build_path( bindir, BIN_TO_DATADIR );
+    return;
+
+in_build_dir:
+    free( bindir );
+    free( argv0_name );
+    bindir = NULL;
+    argv0_name = build_path( "loader/", basename );
+}
+
+/* return the configuration directory ($WINEPREFIX or $HOME/.wine) */
+const char *wine_get_config_dir(void)
+{
+    if (!config_dir) init_paths();
+    return config_dir;
+}
+
+/* retrieve the wine data dir */
+const char *wine_get_data_dir(void)
+{
+    return datadir;
+}
+
+/* retrieve the wine build dir (if we are running from there) */
+const char *wine_get_build_dir(void)
+{
+    return build_dir;
+}
+
+/* return the full name of the server directory (the one containing the socket) */
+const char *wine_get_server_dir(void)
+{
+    if (!server_dir)
+    {
+        if (!config_dir) init_paths();
+        else
+        {
+            struct stat st;
+
+            if (stat( config_dir, &st ) == -1)
+            {
+                if (errno != ENOENT) fatal_error( "cannot stat %s\n", config_dir );
+                return NULL;  /* will have to try again once config_dir has been created */
+            }
+            init_server_dir( st.st_dev, st.st_ino );
+        }
+    }
+    return server_dir;
+}
+
+/* return the current user name */
+const char *wine_get_user_name(void)
+{
+    if (!user_name) init_paths();
+    return user_name;
+}
+
+/* return the standard version string */
+const char *wine_get_version(void)
+{
+    return PACKAGE_VERSION;
+}
+
+/* return the build id string */
+const char *wine_get_build_id(void)
+{
+    extern const char wine_build[];
+    return wine_build;
+}
+
+/* exec a binary using the preloader if requested; helper for wine_exec_wine_binary */
+static void preloader_exec( char **argv, int use_preloader )
+{
+#ifdef linux
+    if (use_preloader)
+    {
+        static const char preloader[] = "wine-preloader";
+        char *p, *full_name;
+        char **last_arg = argv, **new_argv;
+
+        if (!(p = strrchr( argv[0], '/' ))) p = argv[0];
+        else p++;
+
+        full_name = xmalloc( p - argv[0] + sizeof(preloader) );
+        memcpy( full_name, argv[0], p - argv[0] );
+        memcpy( full_name + (p - argv[0]), preloader, sizeof(preloader) );
+
+        /* make a copy of argv */
+        while (*last_arg) last_arg++;
+        new_argv = xmalloc( (last_arg - argv + 2) * sizeof(*argv) );
+        memcpy( new_argv + 1, argv, (last_arg - argv + 1) * sizeof(*argv) );
+        new_argv[0] = full_name;
+        execv( full_name, new_argv );
+        free( new_argv );
+        free( full_name );
+        return;
+    }
+#endif
+    execv( argv[0], argv );
+}
+
+/* exec a wine internal binary (either the wine loader or the wine server) */
+void wine_exec_wine_binary( const char *name, char **argv, const char *env_var )
+{
+    const char *path, *pos, *ptr;
+    int use_preloader = 0;
+
+    if (!name)  /* no name means default loader */
+    {
+        name = argv0_name;
+        use_preloader = 1;
+    }
+
+    if ((ptr = strrchr( name, '/' )))
+    {
+        /* if we are in build dir and name contains a path, try that */
+        if (build_dir)
+        {
+            argv[0] = build_path( build_dir, name );
+            preloader_exec( argv, use_preloader );
+            free( argv[0] );
+        }
+        name = ptr + 1;  /* get rid of path */
+    }
+
+    /* first, bin directory from the current libdir or argv0 */
+    if (bindir)
+    {
+        argv[0] = build_path( bindir, name );
+        preloader_exec( argv, use_preloader );
+        free( argv[0] );
+    }
+
+    /* then specified environment variable */
+    if (env_var)
+    {
+        argv[0] = (char *)env_var;
+        preloader_exec( argv, use_preloader );
+    }
+
+    /* now search in the Unix path */
+    if ((path = getenv( "PATH" )))
+    {
+        argv[0] = xmalloc( strlen(path) + strlen(name) + 2 );
+        pos = path;
+        for (;;)
+        {
+            while (*pos == ':') pos++;
+            if (!*pos) break;
+            if (!(ptr = strchr( pos, ':' ))) ptr = pos + strlen(pos);
+            memcpy( argv[0], pos, ptr - pos );
+            strcpy( argv[0] + (ptr - pos), "/" );
+            strcat( argv[0] + (ptr - pos), name );
+            preloader_exec( argv, use_preloader );
+            pos = ptr;
+        }
+        free( argv[0] );
+    }
+
+    /* and finally try BINDIR */
+    argv[0] = build_path( BINDIR, name );
+    preloader_exec( argv, use_preloader );
+    free( argv[0] );
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/cpmap.pl
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/cpmap.pl	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/cpmap.pl	(revision 16410)
@@ -0,0 +1,1310 @@
+#!/usr/bin/perl
+#
+# Generate code page .c files from ftp.unicode.org descriptions
+#
+# Copyright 2000 Alexandre Julliard
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+#
+
+# base directory for ftp.unicode.org files
+$BASEDIR = "ftp.unicode.org/Public/";
+$MAPPREFIX = $BASEDIR . "MAPPINGS/";
+
+# UnicodeData file
+$UNICODEDATA = $BASEDIR . "UNIDATA/UnicodeData.txt";
+
+# Sort keys file
+$SORTKEYS = "www.unicode.org/reports/tr10/allkeys.txt";
+
+# Defaults mapping
+$DEFAULTS = "./defaults";
+
+# Default char for undefined mappings
+$DEF_CHAR = ord '?';
+
+@allfiles =
+(
+    [ 37,    "VENDORS/MICSFT/EBCDIC/CP037.TXT",   0, "IBM EBCDIC US Canada" ],
+    [ 424,   "VENDORS/MISC/CP424.TXT",            0, "IBM EBCDIC Hebrew" ],
+    [ 437,   "VENDORS/MICSFT/PC/CP437.TXT",       1, "OEM United States" ],
+    [ 500,   "VENDORS/MICSFT/EBCDIC/CP500.TXT",   0, "IBM EBCDIC International" ],
+    [ 737,   "VENDORS/MICSFT/PC/CP737.TXT",       1, "OEM Greek 437G" ],
+    [ 775,   "VENDORS/MICSFT/PC/CP775.TXT",       1, "OEM Baltic" ],
+    [ 850,   "VENDORS/MICSFT/PC/CP850.TXT",       1, "OEM Multilingual Latin 1" ],
+    [ 852,   "VENDORS/MICSFT/PC/CP852.TXT",       1, "OEM Slovak Latin 2" ],
+    [ 855,   "VENDORS/MICSFT/PC/CP855.TXT",       1, "OEM Cyrillic" ],
+    [ 856,   "VENDORS/MISC/CP856.TXT",            0, "Hebrew PC" ],
+    [ 857,   "VENDORS/MICSFT/PC/CP857.TXT",       1, "OEM Turkish" ],
+    [ 860,   "VENDORS/MICSFT/PC/CP860.TXT",       1, "OEM Portuguese" ],
+    [ 861,   "VENDORS/MICSFT/PC/CP861.TXT",       1, "OEM Icelandic" ],
+    [ 862,   "VENDORS/MICSFT/PC/CP862.TXT",       1, "OEM Hebrew" ],
+    [ 863,   "VENDORS/MICSFT/PC/CP863.TXT",       1, "OEM Canadian French" ],
+    [ 864,   "VENDORS/MICSFT/PC/CP864.TXT",       0, "OEM Arabic" ],
+    [ 865,   "VENDORS/MICSFT/PC/CP865.TXT",       1, "OEM Nordic" ],
+    [ 866,   "VENDORS/MICSFT/PC/CP866.TXT",       1, "OEM Russian" ],
+    [ 869,   "VENDORS/MICSFT/PC/CP869.TXT",       1, "OEM Greek" ],
+    [ 874,   "VENDORS/MICSFT/PC/CP874.TXT",       1, "ANSI/OEM Thai" ],
+    [ 875,   "VENDORS/MICSFT/EBCDIC/CP875.TXT",   0, "IBM EBCDIC Greek" ],
+    [ 878,   "VENDORS/MISC/KOI8-R.TXT",           0, "Russian KOI8" ],
+    [ 932,   "VENDORS/MICSFT/WINDOWS/CP932.TXT",  0, "ANSI/OEM Japanese Shift-JIS" ],
+    [ 936,   "VENDORS/MICSFT/WINDOWS/CP936.TXT",  0, "ANSI/OEM Simplified Chinese GBK" ],
+    [ 949,   "VENDORS/MICSFT/WINDOWS/CP949.TXT",  0, "ANSI/OEM Korean Unified Hangul" ],
+    [ 950,   "VENDORS/MICSFT/WINDOWS/CP950.TXT",  0, "ANSI/OEM Traditional Chinese Big5" ],
+    [ 1006,  "VENDORS/MISC/CP1006.TXT",           0, "IBM Arabic" ],
+    [ 1026,  "VENDORS/MICSFT/EBCDIC/CP1026.TXT",  0, "IBM EBCDIC Latin 5 Turkish" ],
+    [ 1250,  "VENDORS/MICSFT/WINDOWS/CP1250.TXT", 0, "ANSI Eastern Europe" ],
+    [ 1251,  "VENDORS/MICSFT/WINDOWS/CP1251.TXT", 0, "ANSI Cyrillic" ],
+    [ 1252,  "VENDORS/MICSFT/WINDOWS/CP1252.TXT", 0, "ANSI Latin 1" ],
+    [ 1253,  "VENDORS/MICSFT/WINDOWS/CP1253.TXT", 0, "ANSI Greek" ],
+    [ 1254,  "VENDORS/MICSFT/WINDOWS/CP1254.TXT", 0, "ANSI Turkish" ],
+    [ 1255,  "VENDORS/MICSFT/WINDOWS/CP1255.TXT", 0, "ANSI Hebrew" ],
+    [ 1256,  "VENDORS/MICSFT/WINDOWS/CP1256.TXT", 0, "ANSI Arabic" ],
+    [ 1257,  "VENDORS/MICSFT/WINDOWS/CP1257.TXT", 0, "ANSI Baltic" ],
+    [ 1258,  "VENDORS/MICSFT/WINDOWS/CP1258.TXT", 0, "ANSI/OEM Viet Nam" ],
+    [ 1361,  "OBSOLETE/EASTASIA/KSC/JOHAB.TXT",   0, "Korean Johab" ],
+    [ 10000, "VENDORS/MICSFT/MAC/ROMAN.TXT",      0, "Mac Roman" ],
+    [ 10006, "VENDORS/MICSFT/MAC/GREEK.TXT",      0, "Mac Greek" ],
+    [ 10007, "VENDORS/MICSFT/MAC/CYRILLIC.TXT",   0, "Mac Cyrillic" ],
+    [ 10029, "VENDORS/MICSFT/MAC/LATIN2.TXT",     0, "Mac Latin 2" ],
+    [ 10079, "VENDORS/MICSFT/MAC/ICELAND.TXT",    0, "Mac Icelandic" ],
+    [ 10081, "VENDORS/MICSFT/MAC/TURKISH.TXT",    0, "Mac Turkish" ],
+    [ 20127, undef,                               0, "US-ASCII (7bit)" ],
+    [ 20866, "VENDORS/MISC/KOI8-R.TXT",           0, "Russian KOI8" ],
+    [ 20932, "OBSOLETE/EASTASIA/JIS/JIS0208.TXT", 0, "EUC-JP" ],
+    [ 21866, "VENDORS/MISC/KOI8-U.TXT",           0, "Ukrainian KOI8" ],
+    [ 28591, "ISO8859/8859-1.TXT",                0, "ISO 8859-1 Latin 1" ],
+    [ 28592, "ISO8859/8859-2.TXT",                0, "ISO 8859-2 Latin 2 (East European)" ],
+    [ 28593, "ISO8859/8859-3.TXT",                0, "ISO 8859-3 Latin 3 (South European)" ],
+    [ 28594, "ISO8859/8859-4.TXT",                0, "ISO 8859-4 Latin 4 (Baltic old)" ],
+    [ 28595, "ISO8859/8859-5.TXT",                0, "ISO 8859-5 Cyrillic" ],
+    [ 28596, "ISO8859/8859-6.TXT",                0, "ISO 8859-6 Arabic" ],
+    [ 28597, "ISO8859/8859-7.TXT",                0, "ISO 8859-7 Greek" ],
+    [ 28598, "ISO8859/8859-8.TXT",                0, "ISO 8859-8 Hebrew" ],
+    [ 28599, "ISO8859/8859-9.TXT",                0, "ISO 8859-9 Latin 5 (Turkish)" ],
+    [ 28600, "ISO8859/8859-10.TXT",               0, "ISO 8859-10 Latin 6 (Nordic)" ],
+    [ 28603, "ISO8859/8859-13.TXT",               0, "ISO 8859-13 Latin 7 (Baltic)" ],
+    [ 28604, "ISO8859/8859-14.TXT",               0, "ISO 8859-14 Latin 8 (Celtic)" ],
+    [ 28605, "ISO8859/8859-15.TXT",               0, "ISO 8859-15 Latin 9 (Euro)" ],
+    [ 28606, "ISO8859/8859-16.TXT",               0, "ISO 8859-16 Latin 10 (Balkan)" ]
+);
+
+
+%ctype =
+(
+    "upper"  => 0x0001,
+    "lower"  => 0x0002,
+    "digit"  => 0x0004,
+    "space"  => 0x0008,
+    "punct"  => 0x0010,
+    "cntrl"  => 0x0020,
+    "blank"  => 0x0040,
+    "xdigit" => 0x0080,
+    "alpha"  => 0x0100
+);
+
+%categories =
+(
+    "Lu" => $ctype{"alpha"}|$ctype{"upper"}, # Letter, Uppercase
+    "Ll" => $ctype{"alpha"}|$ctype{"lower"}, # Letter, Lowercase
+    "Lt" => $ctype{"alpha"},    # Letter, Titlecase
+    "Mn" => $ctype{"punct"},    # Mark, Non-Spacing
+    "Mc" => $ctype{"punct"},    # Mark, Spacing Combining
+    "Me" => $ctype{"punct"},    # Mark, Enclosing
+    "Nd" => $ctype{"digit"},    # Number, Decimal Digit
+    "Nl" => $ctype{"punct"},    # Number, Letter
+    "No" => $ctype{"punct"},    # Number, Other
+    "Zs" => $ctype{"space"},    # Separator, Space
+    "Zl" => $ctype{"space"},    # Separator, Line
+    "Zp" => $ctype{"space"},    # Separator, Paragraph
+    "Cc" => $ctype{"cntrl"},    # Other, Control
+    "Cf" => 0,                  # Other, Format
+    "Cs" => 0,                  # Other, Surrogate
+    "Co" => 0,                  # Other, Private Use
+    "Cn" => 0,                  # Other, Not Assigned
+    "Lm" => $ctype{"punct"},    # Letter, Modifier
+    "Lo" => $ctype{"alpha"},    # Letter, Other
+    "Pc" => $ctype{"punct"},    # Punctuation, Connector
+    "Pd" => $ctype{"punct"},    # Punctuation, Dash
+    "Ps" => $ctype{"punct"},    # Punctuation, Open
+    "Pe" => $ctype{"punct"},    # Punctuation, Close
+    "Pi" => $ctype{"punct"},    # Punctuation, Initial quote
+    "Pf" => $ctype{"punct"},    # Punctuation, Final quote
+    "Po" => $ctype{"punct"},    # Punctuation, Other
+    "Sm" => $ctype{"punct"},    # Symbol, Math
+    "Sc" => $ctype{"punct"},    # Symbol, Currency
+    "Sk" => $ctype{"punct"},    # Symbol, Modifier
+    "So" => $ctype{"punct"}     # Symbol, Other
+);
+
+# a few characters need additional categories that cannot be determined automatically
+%special_categories =
+(
+    "xdigit" => [ ord('0')..ord('9'),ord('A')..ord('F'),ord('a')..ord('f'),
+                  0xff10..0xff19, 0xff21..0xff26, 0xff41..0xff46 ],
+    "space"  => [ 0x09..0x0d, 0x85 ],
+    "blank"  => [ 0x09, 0x20, 0xa0, 0x3000, 0xfeff ],
+    "cntrl"  => [ 0x070f, 0x180b, 0x180c, 0x180d, 0x180e, 0x200c, 0x200d,
+                  0x200e, 0x200f, 0x202a, 0x202b, 0x202c, 0x202d, 0x202e,
+                  0x206a, 0x206b, 0x206c, 0x206d, 0x206e, 0x206f, 0xfeff,
+                  0xfff9, 0xfffa, 0xfffb ]
+);
+
+%directions =
+(
+    "L"   => 1,    # Left-to-Right
+    "LRE" => 11,   # Left-to-Right Embedding
+    "LRO" => 11,   # Left-to-Right Override
+    "R"   => 2,    # Right-to-Left
+    "AL"  => 2,    # Right-to-Left Arabic
+    "RLE" => 11,   # Right-to-Left Embedding
+    "RLO" => 11,   # Right-to-Left Override
+    "PDF" => 11,   # Pop Directional Format
+    "EN"  => 3,    # European Number
+    "ES"  => 4,    # European Number Separator
+    "ET"  => 5,    # European Number Terminator
+    "AN"  => 6,    # Arabic Number
+    "CS"  => 7,    # Common Number Separator
+    "NSM" => 0,    # Non-Spacing Mark
+    "BN"  => 0,    # Boundary Neutral
+    "B"   => 8,    # Paragraph Separator
+    "S"   => 9,    # Segment Separator
+    "WS"  => 10,   # Whitespace
+    "ON"  => 11    # Other Neutrals
+);
+
+
+################################################################
+# main routine
+
+READ_DEFAULTS();
+my @sortkeys = READ_SORTKEYS_FILE();
+DUMP_CASE_MAPPINGS();
+DUMP_SORTKEYS(@sortkeys);
+DUMP_COMPOSE_TABLES();
+DUMP_CTYPE_TABLES();
+
+foreach $file (@allfiles) { HANDLE_FILE( @$file ); }
+
+OUTPUT_CPTABLE();
+
+exit(0);
+
+
+################################################################
+# read in the defaults file
+sub READ_DEFAULTS
+{
+    @unicode_defaults = ();
+    @unicode_aliases = ();
+    @tolower_table = ();
+    @toupper_table = ();
+    @digitmap_table = ();
+    @compatmap_table = ();
+    @category_table = ();
+    @direction_table = ();
+    @decomp_table = ();
+    @compose_table = ();
+
+    # first setup a few default mappings
+
+    open DEFAULTS or die "Cannot open $DEFAULTS";
+    print "Loading $DEFAULTS\n";
+    while (<DEFAULTS>)
+    {
+        next if /^\#/;  # skip comments
+        next if /^$/;  # skip empty lines
+        if (/^(([0-9a-fA-F]+)(,[0-9a-fA-F]+)*)\s+([0-9a-fA-F]+|'.'|none)\s+(\#.*)?/)
+        {
+            my @src = map hex, split /,/,$1;
+            my $dst = $4;
+            my $comment = $5;
+            if ($#src > 0) { push @unicode_aliases, \@src; }
+            next if ($dst eq "none");
+            $dst = ($dst =~ /\'.\'/) ? ord substr($dst,1,1) : hex $dst;
+            foreach $src (@src)
+            {
+                die "Duplicate value" if defined($unicode_defaults[$src]);
+                $unicode_defaults[$src] = $dst;
+            }
+            next;
+        }
+        die "Unrecognized line $_\n";
+    }
+
+    # now build mappings from the decomposition field of the Unicode database
+
+    open UNICODEDATA or die "Cannot open $UNICODEDATA";
+    print "Loading $UNICODEDATA\n";
+    while (<UNICODEDATA>)
+    {
+	# Decode the fields ...
+	($code, $name, $cat, $comb, $bidi,
+	 $decomp, $dec, $dig, $num, $mirror,
+	 $oldname, $comment, $upper, $lower, $title) = split /;/;
+
+        my $src = hex $code;
+
+        die "unknown category $cat" unless defined $categories{$cat};
+        die "unknown directionality $bidi" unless defined $directions{$bidi};
+
+        $uniname[$src] = $name;
+        $category_table[$src] = $categories{$cat};
+        $direction_table[$src] = $directions{$bidi};
+
+        if ($lower ne "")
+        {
+            $tolower_table[$src] = hex $lower;
+            $category_table[$src] |= $ctype{"upper"}|$ctype{"alpha"};
+        }
+        if ($upper ne "")
+        {
+            $toupper_table[$src] = hex $upper;
+            $category_table[$src] |= $ctype{"lower"}|$ctype{"alpha"};
+        }
+        if ($dec ne "")
+        {
+            $category_table[$src] |= $ctype{"digit"};
+        }
+        if ($dig ne "")
+        {
+            $digitmap_table[$src] = ord $dig;
+        }
+
+        # copy the category and direction for everything between First/Last pairs
+        if ($name =~ /, First>/) { $start = $src; }
+        if ($name =~ /, Last>/)
+        {
+            while ($start < $src)
+            {
+                $category_table[$start] = $category_table[$src];
+                $direction_table[$start] = $direction_table[$src];
+                $start++;
+            }
+        }
+
+        next if $decomp eq "";  # no decomposition, skip it
+
+        if ($decomp =~ /^<([a-zA-Z]+)>\s+([0-9a-fA-F]+)$/)
+        {
+            # decomposition of the form "<foo> 1234" -> use char if type is known
+            if (($src >= 0xf900 && $src < 0xfb00) || ($src >= 0xfe30 && $src < 0xfffd))
+            {
+                # Single char decomposition in the compatibility range
+                $compatmap_table[$src] = hex $2;
+            }
+            next unless ($1 eq "font" ||
+                         $1 eq "noBreak" ||
+                         $1 eq "circle" ||
+                         $1 eq "super" ||
+                         $1 eq "sub" ||
+                         $1 eq "wide" ||
+                         $1 eq "narrow" ||
+                         $1 eq "compat" ||
+                         $1 eq "small");
+            $dst = hex $2;
+        }
+        elsif ($decomp =~ /^<compat>\s+0020\s+([0-9a-fA-F]+)/)
+        {
+            # decomposition "<compat> 0020 1234" -> combining accent
+            $dst = hex $1;
+        }
+        elsif ($decomp =~ /^([0-9a-fA-F]+)/)
+        {
+            # decomposition contains only char values without prefix -> use first char
+            $dst = hex $1;
+            $category_table[$src] |= $category_table[$dst];
+            # store decomposition if it contains two chars
+            if ($decomp =~ /^([0-9a-fA-F]+)\s+([0-9a-fA-F]+)$/)
+            {
+                $decomp_table[$src] = [ hex $1, hex $2 ];
+                push @compose_table, [ hex $1, hex $2, $src ];
+            }
+            elsif ($decomp =~ /^(<[a-z]+>\s)*([0-9a-fA-F]+)$/ &&
+                   (($src >= 0xf900 && $src < 0xfb00) || ($src >= 0xfe30 && $src < 0xfffd)))
+            {
+                # Single char decomposition in the compatibility range
+                $compatmap_table[$src] = hex $2;
+            }
+        }
+        else
+        {
+            next;
+        }
+
+        next if defined($unicode_defaults[$src]);  # may have been set in the defaults file
+
+        # check for loops
+        for ($i = $dst; ; $i = $unicode_defaults[$i])
+        {
+            die sprintf("loop detected for %04x -> %04x",$src,$dst) if $i == $src;
+            last unless defined($unicode_defaults[$i]);
+        }
+        $unicode_defaults[$src] = $dst;
+    }
+
+    # patch the category of some special characters
+
+    foreach $cat (keys %special_categories)
+    {
+        my $flag = $ctype{$cat};
+        foreach $i (@{$special_categories{$cat}}) { $category_table[$i] |= $flag; }
+    }
+}
+
+
+################################################################
+# parse the input file
+sub READ_FILE
+{
+    my $name = shift;
+    open INPUT,$name or die "Cannot open $name";
+
+    while (<INPUT>)
+    {
+        next if /^\#/;  # skip comments
+        next if /^$/;  # skip empty lines
+        next if /\x1a/;  # skip ^Z
+        next if (/^0x([0-9a-fA-F]+)\s+\#UNDEFINED/);  # undefined char
+
+        if (/^0x([0-9a-fA-F]+)\s+\#DBCS LEAD BYTE/)
+        {
+            $cp = hex $1;
+            push @lead_bytes,$cp;
+            $cp2uni[$cp] = 0;
+            next;
+        }
+        if (/^0x([0-9a-fA-F]+)\s+0x([0-9a-fA-F]+)\s+(\#.*)?/)
+        {
+            $cp = hex $1;
+            $uni = hex $2;
+            $cp2uni[$cp] = $uni unless defined($cp2uni[$cp]);
+            $uni2cp[$uni] = $cp unless defined($uni2cp[$uni]);
+            if ($cp > 0xff && !defined($cp2uni[$cp >> 8]))
+            {
+                push @lead_bytes,$cp >> 8;
+                $cp2uni[$cp >> 8] = 0;
+            }
+            next;
+        }
+        die "$name: Unrecognized line $_\n";
+    }
+}
+
+
+################################################################
+# fill input data for the 20127 (us-ascii) codepage
+sub fill_20127_codepage()
+{
+    for (my $i = 0; $i < 128; $i++) { $cp2uni[$i] = $uni2cp[$i] = $i; }
+    for (my $i = 128; $i < 256; $i++) { $cp2uni[$i] = $i & 0x7f; }
+}
+
+################################################################
+# get a mapping including glyph chars for MB_USEGLYPHCHARS
+
+sub get_glyphs_mapping(@)
+{
+    $_[0x01] = 0x263a;  # (WHITE SMILING FACE)
+    $_[0x02] = 0x263b;  # (BLACK SMILING FACE)
+    $_[0x03] = 0x2665;  # (BLACK HEART SUIT)
+    $_[0x04] = 0x2666;  # (BLACK DIAMOND SUIT)
+    $_[0x05] = 0x2663;  # (BLACK CLUB SUIT)
+    $_[0x06] = 0x2660;  # (BLACK SPADE SUIT)
+    $_[0x07] = 0x2022;  # (BULLET)
+    $_[0x08] = 0x25d8;  # (INVERSE BULLET)
+    $_[0x09] = 0x25cb;  # (WHITE CIRCLE)
+    $_[0x0a] = 0x25d9;  # (INVERSE WHITE CIRCLE)
+    $_[0x0b] = 0x2642;  # (MALE SIGN)
+    $_[0x0c] = 0x2640;  # (FEMALE SIGN)
+    $_[0x0d] = 0x266a;  # (EIGHTH NOTE)
+    $_[0x0e] = 0x266b;  # (BEAMED EIGHTH NOTES)
+    $_[0x0f] = 0x263c;  # (WHITE SUN WITH RAYS)
+    $_[0x10] = 0x25ba;  # (BLACK RIGHT-POINTING POINTER)
+    $_[0x11] = 0x25c4;  # (BLACK LEFT-POINTING POINTER)
+    $_[0x12] = 0x2195;  # (UP DOWN ARROW)
+    $_[0x13] = 0x203c;  # (DOUBLE EXCLAMATION MARK)
+    $_[0x14] = 0x00b6;  # (PILCROW SIGN)
+    $_[0x15] = 0x00a7;  # (SECTION SIGN)
+    $_[0x16] = 0x25ac;  # (BLACK RECTANGLE)
+    $_[0x17] = 0x21a8;  # (UP DOWN ARROW WITH BASE)
+    $_[0x18] = 0x2191;  # (UPWARDS ARROW)
+    $_[0x19] = 0x2193;  # (DOWNWARDS ARROW)
+    $_[0x1a] = 0x2192;  # (RIGHTWARDS ARROW)
+    $_[0x1b] = 0x2190;  # (LEFTWARDS ARROW)
+    $_[0x1c] = 0x221f;  # (RIGHT ANGLE)
+    $_[0x1d] = 0x2194;  # (LEFT RIGHT ARROW)
+    $_[0x1e] = 0x25b2;  # (BLACK UP-POINTING TRIANGLE)
+    $_[0x1f] = 0x25bc;  # (BLACK DOWN-POINTING TRIANGLE)
+    $_[0x7f] = 0x2302;  # (HOUSE)
+    return @_;
+}
+
+################################################################
+# build EUC-JP table from the JIS 0208 file
+# FIXME: for proper EUC-JP we should probably read JIS 0212 too
+# but this would require 3-byte DBCS characters
+sub READ_JIS0208_FILE
+{
+    my $name = shift;
+
+    # ASCII chars
+    for ($i = 0x00; $i <= 0x7f; $i++)
+    {
+        $cp2uni[$i] = $i;
+        $uni2cp[$i] = $i;
+    }
+
+    # JIS X 0201 right plane
+    for ($i = 0xa1; $i <= 0xdf; $i++)
+    {
+        $cp2uni[0x8e00 + $i] = 0xfec0 + $i;
+        $uni2cp[0xfec0 + $i] = 0x8e00 + $i;
+    }
+
+    # lead bytes
+    foreach $i (0x8e, 0x8f, 0xa1 .. 0xfe)
+    {
+        push @lead_bytes,$i;
+        $cp2uni[$i] = 0;
+    }
+
+    # undefined chars
+    foreach $i (0x80 .. 0x8d, 0x90 .. 0xa0, 0xff)
+    {
+        $cp2uni[$i] = $DEF_CHAR;
+    }
+
+    # Shift-JIS compatibility
+    $uni2cp[0x00a5] = 0x5c;
+    $uni2cp[0x203e] = 0x7e;
+
+    # Fix backslash conversion
+    $cp2uni[0xa1c0] = 0xff3c;
+    $uni2cp[0xff3c] = 0xa1c0;
+
+    open INPUT, "$name" or die "Cannot open $name";
+    while (<INPUT>)
+    {
+        next if /^\#/;  # skip comments
+        next if /^$/;  # skip empty lines
+        next if /\x1a/;  # skip ^Z
+        if (/^0x[0-9a-fA-F]+\s+0x([0-9a-fA-F]+)\s+0x([0-9a-fA-F]+)\s+(\#.*)?/)
+        {
+            $cp = 0x8080 + hex $1;
+            $uni = hex $2;
+            $cp2uni[$cp] = $uni unless defined($cp2uni[$cp]);
+            $uni2cp[$uni] = $cp unless defined($uni2cp[$uni]);
+            next;
+        }
+        die "$name: Unrecognized line $_\n";
+    }
+}
+
+
+################################################################
+# build the sort keys table
+sub READ_SORTKEYS_FILE
+{
+    my @sortkeys = ();
+    for (my $i = 0; $i < 65536; $i++) { $sortkeys[$i] = [ -1, 0, 0, 0, 0 ] };
+
+    open INPUT, "$SORTKEYS" or die "Cannot open $SORTKEYS";
+    print "Loading $SORTKEYS\n";
+    while (<INPUT>)
+    {
+        next if /^\#/;  # skip comments
+        next if /^$/;  # skip empty lines
+        next if /\x1a/;  # skip ^Z
+        next if /^\@version/;  # skip @version header
+        if (/^([0-9a-fA-F]+)\s+;\s+\[([*.])([0-9a-fA-F]{4})\.([0-9a-fA-F]{4})\.([0-9a-fA-F]{4})\.([0-9a-fA-F]+)\]/)
+        {
+            my ($uni,$variable) = (hex $1, $2);
+            next if $uni > 65535;
+            $sortkeys[$uni] = [ $uni, hex $3, hex $4, hex $5, hex $6 ];
+            next;
+        }
+        if (/^([0-9a-fA-F]+\s+)+;\s+\[[*.]([0-9a-fA-F]{4})\.([0-9a-fA-F]{4})\.([0-9a-fA-F]{4})\.([0-9a-fA-F]+)\]/)
+        {
+            # multiple character sequence, ignored for now
+            next;
+        }
+        die "$SORTKEYS: Unrecognized line $_\n";
+    }
+    close INPUT;
+
+    # compress the keys to 32 bit:
+    # key 1 to 16 bits, key 2 to 8 bits, key 3 to 4 bits, key 4 to 1 bit
+
+    @sortkeys = sort { ${$a}[1] <=> ${$b}[1] or 
+                       ${$a}[2] <=> ${$b}[2] or
+                       ${$a}[3] <=> ${$b}[3] or
+                       ${$a}[4] <=> ${$b}[4] or
+                       $a cmp $b; } @sortkeys;
+
+    my ($n2, $n3) = (1, 1);
+    my @keys = (-1, -1, -1, -1, -1 );
+    my @flatkeys = ();
+
+    for (my $i = 0; $i < 65536; $i++)
+    {
+        my @current = @{$sortkeys[$i]};
+        next if $current[0] == -1;
+        if ($current[1] == $keys[1])
+        {
+            if ($current[2] == $keys[2])
+            {
+                if ($current[3] == $keys[3])
+                {
+                    # nothing
+                }
+                else
+                {
+                    $keys[3] = $current[3];
+                    $n3++;
+                    die if ($n3 >= 16);
+                }
+            }
+            else
+            {
+                $keys[2] = $current[2];
+                $keys[3] = $current[3];
+                $n2++;
+                $n3 = 1;
+                die if ($n2 >= 256);
+            }
+        }
+        else
+        {
+            $keys[1] = $current[1];
+            $keys[2] = $current[2];
+            $keys[3] = $current[3];
+            $n2 = 1;
+            $n3 = 1;
+        }
+
+        if ($current[2]) { $current[2] = $n2; }
+        if ($current[3]) { $current[3] = $n3; }
+        if ($current[4]) { $current[4] = 1; }
+
+        $flatkeys[$current[0]] = ($current[1] << 16) | ($current[2] << 8) | ($current[3] << 4) | $current[4];
+    }
+    return @flatkeys;
+}
+
+
+################################################################
+# build the sort keys table
+sub DUMP_SORTKEYS
+{
+    my @keys = @_;
+
+    # count the number of 256-key ranges that contain something
+
+    my @offsets = ();
+    my $ranges = 2;
+    for (my $i = 0; $i < 256; $i++) { $offsets[$i] = 256; }
+    for (my $i = 0; $i < 65536; $i++)
+    {
+        next unless defined $keys[$i];
+        $offsets[$i >> 8] = $ranges * 256;
+        $ranges++;
+        $i |= 255;
+    }
+
+    # output the range offsets
+
+    open OUTPUT,">collation.c.new" or die "Cannot create collation.c";
+    printf "Building collation.c\n";
+    printf OUTPUT "/* Unicode collation element table */\n";
+    printf OUTPUT "/* generated from %s */\n", $SORTKEYS;
+    printf OUTPUT "/* DO NOT EDIT!! */\n\n";
+
+    printf OUTPUT "const unsigned int collation_table[%d] =\n{\n", $ranges*256;
+    printf OUTPUT "    /* index */\n";
+    printf OUTPUT "%s,\n", DUMP_ARRAY( "0x%08x", 0, @offsets );
+
+    # output the default values
+
+    printf OUTPUT "    /* defaults */\n";
+    printf OUTPUT "%s", DUMP_ARRAY( "0x%08x", 0, (0xffffffff) x 256 );
+
+    # output all the key ranges
+
+    for (my $i = 0; $i < 256; $i++)
+    {
+        next if $offsets[$i] == 256;
+        printf OUTPUT ",\n    /* 0x%02x00 .. 0x%02xff */\n", $i, $i;
+        printf OUTPUT "%s", DUMP_ARRAY( "0x%08x", 0xffffffff, @keys[($i<<8) .. ($i<<8)+255] );
+    }
+    printf OUTPUT "\n};\n";
+    close OUTPUT;
+    save_file("collation.c");
+}
+
+
+################################################################
+# add default mappings once the file had been read
+sub ADD_DEFAULT_MAPPINGS
+{
+    # Apply aliases
+
+    foreach $alias (@unicode_aliases)
+    {
+        my $target = undef;
+        foreach $src (@$alias)
+        {
+            if (defined($uni2cp[$src]))
+            {
+                $target = $uni2cp[$src];
+                last;
+            }
+        }
+        next unless defined($target);
+
+        # At least one char of the alias set is defined, set the others to the same value
+        foreach $src (@$alias)
+        {
+            $uni2cp[$src] = $target unless defined($uni2cp[$src]);
+        }
+    }
+
+    # For every src -> target mapping in the defaults table,
+    # make uni2cp[src] = uni2cp[target] if uni2cp[target] is defined
+
+    for ($src = 0; $src < 65536; $src++)
+    {
+        next if defined($uni2cp[$src]);  # source has a definition already
+        next unless defined($unicode_defaults[$src]);  # no default for this char
+        my $target = $unicode_defaults[$src];
+
+        # do a recursive mapping until we find a target char that is defined
+        while (!defined($uni2cp[$target]) &&
+               defined($unicode_defaults[$target])) { $target = $unicode_defaults[$target]; }
+
+        if (defined($uni2cp[$target])) { $uni2cp[$src] = $uni2cp[$target]; }
+    }
+
+    # Add an identity mapping for all undefined chars
+
+    for ($i = 0; $i < 256; $i++)
+    {
+        next if defined($cp2uni[$i]);
+        next if defined($uni2cp[$i]);
+        $cp2uni[$i] = $uni2cp[$i] = $i;
+    }
+}
+
+################################################################
+# dump an array of integers
+sub DUMP_ARRAY
+{
+    my ($format,$default,@array) = @_;
+    my $i, $ret = "    ";
+    for ($i = 0; $i < $#array; $i++)
+    {
+        $ret .= sprintf($format, defined $array[$i] ? $array[$i] : $default);
+        $ret .= (($i % 8) != 7) ? ", " : ",\n    ";
+    }
+    $ret .= sprintf($format, defined $array[$i] ? $array[$i] : $default);
+    return $ret;
+}
+
+################################################################
+# dump an SBCS mapping table
+sub DUMP_SBCS_TABLE
+{
+    my ($codepage, $has_glyphs, $name) = @_;
+    my $i;
+
+    # output the ascii->unicode table
+
+    if ($has_glyphs)
+    {
+        printf OUTPUT "static const WCHAR cp2uni[512] =\n";
+        printf OUTPUT "{\n%s", DUMP_ARRAY( "0x%04x", $DEF_CHAR, @cp2uni[0 .. 255] );
+        printf OUTPUT ",\n    /* glyphs */\n%s\n};\n\n",
+                      DUMP_ARRAY( "0x%04x", $DEF_CHAR, get_glyphs_mapping(@cp2uni[0 .. 255]) );
+    }
+    else
+    {
+        printf OUTPUT "static const WCHAR cp2uni[256] =\n";
+        printf OUTPUT "{\n%s\n};\n\n", DUMP_ARRAY( "0x%04x", $DEF_CHAR, @cp2uni[0 .. 255] );
+    }
+
+    # count the number of unicode->ascii subtables that contain something
+
+    my @filled = ();
+    my $subtables = 1;
+    for ($i = 0; $i < 65536; $i++)
+    {
+        next unless defined $uni2cp[$i];
+        $filled[$i >> 8] = 1;
+        $subtables++;
+        $i |= 255;
+    }
+
+    # output all the subtables into a single array
+
+    printf OUTPUT "static const unsigned char uni2cp_low[%d] =\n{\n", $subtables*256;
+    for ($i = 0; $i < 256; $i++)
+    {
+        next unless $filled[$i];
+        printf OUTPUT "    /* 0x%02x00 .. 0x%02xff */\n", $i, $i;
+        printf OUTPUT "%s,\n", DUMP_ARRAY( "0x%02x", $DEF_CHAR, @uni2cp[($i<<8) .. ($i<<8)+255] );
+    }
+    printf OUTPUT "    /* defaults */\n";
+    printf OUTPUT "%s\n};\n\n", DUMP_ARRAY( "0x%02x", 0, ($DEF_CHAR) x 256 );
+
+    # output a table of the offsets of the subtables in the previous array
+
+    my $pos = 0;
+    my @offsets = ();
+    for ($i = 0; $i < 256; $i++)
+    {
+        if ($filled[$i]) { push @offsets, $pos; $pos += 256; }
+        else { push @offsets, ($subtables-1) * 256; }
+    }
+    printf OUTPUT "static const unsigned short uni2cp_high[256] =\n";
+    printf OUTPUT "{\n%s\n};\n\n", DUMP_ARRAY( "0x%04x", 0, @offsets );
+
+    # output the code page descriptor
+
+    printf OUTPUT "const struct sbcs_table cptable_%03d =\n{\n", $codepage;
+    printf OUTPUT "    { %d, 1, 0x%04x, 0x%04x, \"%s\" },\n",
+                  $codepage, $DEF_CHAR, $DEF_CHAR, $name;
+    printf OUTPUT "    cp2uni,\n";
+    if ($has_glyphs) { printf OUTPUT "    cp2uni + 256,\n"; }
+    else { printf OUTPUT "    cp2uni,\n"; }
+    printf OUTPUT "    uni2cp_low,\n";
+    printf OUTPUT "    uni2cp_high\n};\n";
+}
+
+
+################################################################
+# dump a DBCS mapping table
+sub DUMP_DBCS_TABLE
+{
+    my ($codepage, $name) = @_;
+    my $i, $x, $y;
+
+    # build a list of lead bytes that are actually used
+
+    my @lblist = ();
+    LBLOOP: for ($y = 0; $y <= $#lead_bytes; $y++)
+    {
+        my $base = $lead_bytes[$y] << 8;
+        for ($x = 0; $x < 256; $x++)
+        {
+            if (defined $cp2uni[$base+$x])
+            {
+                push @lblist,$lead_bytes[$y];
+                next LBLOOP;
+            }
+        }
+    }
+    my $unused = ($#lead_bytes > $#lblist);
+
+    # output the ascii->unicode table for the single byte chars
+
+    printf OUTPUT "static const WCHAR cp2uni[%d] =\n", 256 * ($#lblist + 2 + $unused);
+    printf OUTPUT "{\n%s,\n", DUMP_ARRAY( "0x%04x", $DEF_CHAR, @cp2uni[0 .. 255] );
+
+    # output the default table for unused lead bytes
+
+    if ($unused)
+    {
+        printf OUTPUT "    /* unused lead bytes */\n";
+        printf OUTPUT "%s,\n", DUMP_ARRAY( "0x%04x", 0, ($DEF_CHAR) x 256 );
+    }
+
+    # output the ascii->unicode table for each DBCS lead byte
+
+    for ($y = 0; $y <= $#lblist; $y++)
+    {
+        my $base = $lblist[$y] << 8;
+        printf OUTPUT "    /* lead byte %02x */\n", $lblist[$y];
+        printf OUTPUT "%s", DUMP_ARRAY( "0x%04x", $DEF_CHAR, @cp2uni[$base .. $base+255] );
+        printf OUTPUT ($y < $#lblist) ? ",\n" : "\n};\n\n";
+    }
+
+    # output the lead byte subtables offsets
+
+    my @offsets = ();
+    for ($x = 0; $x < 256; $x++) { $offsets[$x] = 0; }
+    for ($x = 0; $x <= $#lblist; $x++) { $offsets[$lblist[$x]] = $x + 1; }
+    if ($unused)
+    {
+        # increment all lead bytes offset to take into account the unused table
+        for ($x = 0; $x <= $#lead_bytes; $x++) { $offsets[$lead_bytes[$x]]++; }
+    }
+    printf OUTPUT "static const unsigned char cp2uni_leadbytes[256] =\n";
+    printf OUTPUT "{\n%s\n};\n\n", DUMP_ARRAY( "0x%02x", 0, @offsets );
+
+    # count the number of unicode->ascii subtables that contain something
+
+    my @filled = ();
+    my $subtables = 1;
+    for ($i = 0; $i < 65536; $i++)
+    {
+        next unless defined $uni2cp[$i];
+        $filled[$i >> 8] = 1;
+        $subtables++;
+        $i |= 255;
+    }
+
+    # output all the subtables into a single array
+
+    printf OUTPUT "static const unsigned short uni2cp_low[%d] =\n{\n", $subtables*256;
+    for ($y = 0; $y < 256; $y++)
+    {
+        next unless $filled[$y];
+        printf OUTPUT "    /* 0x%02x00 .. 0x%02xff */\n", $y, $y;
+        printf OUTPUT "%s,\n", DUMP_ARRAY( "0x%04x", $DEF_CHAR, @uni2cp[($y<<8) .. ($y<<8)+255] );
+    }
+    printf OUTPUT "    /* defaults */\n";
+    printf OUTPUT "%s\n};\n\n", DUMP_ARRAY( "0x%04x", 0, ($DEF_CHAR) x 256 );
+
+    # output a table of the offsets of the subtables in the previous array
+
+    my $pos = 0;
+    my @offsets = ();
+    for ($y = 0; $y < 256; $y++)
+    {
+        if ($filled[$y]) { push @offsets, $pos; $pos += 256; }
+        else { push @offsets, ($subtables-1) * 256; }
+    }
+    printf OUTPUT "static const unsigned short uni2cp_high[256] =\n";
+    printf OUTPUT "{\n%s\n};\n\n", DUMP_ARRAY( "0x%04x", 0, @offsets );
+
+    # output the code page descriptor
+
+    printf OUTPUT "const struct dbcs_table cptable_%03d =\n{\n", $codepage;
+    printf OUTPUT "    { %d, 2, 0x%04x, 0x%04x, \"%s\" },\n",
+                  $codepage, $DEF_CHAR, $DEF_CHAR, $name;
+    printf OUTPUT "    cp2uni,\n";
+    printf OUTPUT "    cp2uni_leadbytes,\n";
+    printf OUTPUT "    uni2cp_low,\n";
+    printf OUTPUT "    uni2cp_high,\n";
+    DUMP_LB_RANGES();
+    printf OUTPUT "};\n";
+}
+
+
+################################################################
+# dump the list of defined lead byte ranges
+sub DUMP_LB_RANGES
+{
+    my @list = ();
+    my $i = 0;
+    foreach $i (@lead_bytes) { $list[$i] = 1; }
+    my $on = 0;
+    printf OUTPUT "    { ";
+    for ($i = 0; $i < 256; $i++)
+    {
+        if ($on)
+        {
+            if (!defined $list[$i]) { printf OUTPUT "0x%02x, ", $i-1; $on = 0; }
+        }
+        else
+        {
+            if ($list[$i]) { printf OUTPUT "0x%02x, ", $i; $on = 1; }
+        }
+    }
+    if ($on) { printf OUTPUT "0xff, "; }
+    printf OUTPUT "0x00, 0x00 }\n";
+}
+
+
+################################################################
+# dump the case mapping tables
+sub DUMP_CASE_MAPPINGS
+{
+    open OUTPUT,">casemap.c.new" or die "Cannot create casemap.c";
+    printf "Building casemap.c\n";
+    printf OUTPUT "/* Unicode case mappings */\n";
+    printf OUTPUT "/* Automatically generated; DO NOT EDIT!! */\n\n";
+    printf OUTPUT "#include \"wine/unicode.h\"\n\n";
+
+    DUMP_CASE_TABLE( "wine_casemap_lower", @tolower_table );
+    DUMP_CASE_TABLE( "wine_casemap_upper", @toupper_table );
+    DUMP_CASE_TABLE( "wine_digitmap",  @digitmap_table );
+    DUMP_CASE_TABLE( "wine_compatmap", @compatmap_table );
+    close OUTPUT;
+    save_file("casemap.c");
+}
+
+
+################################################################
+# dump a case mapping table
+sub DUMP_CASE_TABLE
+{
+    my ($name,@table) = @_;
+
+    # count the number of sub tables that contain something
+    # also compute the low and upper populated bounds
+
+    my @lowerbounds = ( 0, 0 );
+    my @upperbounds = ( 0, 255 );
+    my $index = 0;
+    my @filled = ();
+    for ($i = 0; $i < 65536; $i++)
+    {
+        next unless defined $table[$i];
+        if (!defined $filled[$i >> 8])
+        {
+          $lowerbounds[$index] = $i & 0xff;
+          $upperbounds[$index] = 0xff - $lowerbounds[$index];
+          $filled[$i >> 8] = $index * 256 + 512;
+          $index++;
+        }
+        else
+        {
+          $upperbounds[$index-1] = 0xff - ($i & 0xff);
+        }
+        $table[$i] = ($table[$i] - $i) & 0xffff;
+    }
+
+    # Collapse blocks upwards if possible
+    my $removed = 0;
+    $index = 0;
+    for ($i = 0; $i < 256; $i++)
+    {
+        next unless defined $filled[$i];
+        if ($upperbounds[$index - 1] > $lowerbounds[$index])
+        {
+           $removed = $removed + $lowerbounds[$index];
+        }
+        else
+        {
+           $removed = $removed + $upperbounds[$index - 1];
+           $lowerbounds[$index] = $upperbounds[$index - 1];
+        }
+        $filled[$i] = $filled[$i] - $removed;
+        $index++;
+    }
+
+    # dump the table
+
+    printf OUTPUT "const WCHAR %s[%d] =\n", $name, $index * 256 + 512 - $removed;
+    printf OUTPUT "{\n    /* index */\n";
+    printf OUTPUT "%s,\n", DUMP_ARRAY( "0x%04x", 256, @filled );
+    printf OUTPUT "    /* defaults */\n";
+    printf OUTPUT "%s", DUMP_ARRAY( "0x%04x", 0, (0) x 256 );
+    $index = 0;
+    for ($i = 0; $i < 256; $i++)
+    {
+        next unless $filled[$i];
+        printf OUTPUT ",\n    /* 0x%02x%02x .. 0x%02xff */\n", $i, $lowerbounds[$index], $i;
+        printf OUTPUT "%s", DUMP_ARRAY( "0x%04x", 0,
+                      @table[($i<<8) + $lowerbounds[$index] .. ($i<<8)+255] );
+        $index++;
+    }
+    printf OUTPUT "\n};\n";
+}
+
+
+################################################################
+# dump the ctype tables
+sub DUMP_CTYPE_TABLES
+{
+    open OUTPUT,">wctype.c.new" or die "Cannot create wctype.c";
+    printf "Building wctype.c\n";
+    printf OUTPUT "/* Unicode ctype tables */\n";
+    printf OUTPUT "/* Automatically generated; DO NOT EDIT!! */\n\n";
+    printf OUTPUT "#include \"wine/unicode.h\"\n\n";
+
+    my $i;
+    my @array = (0) x 256;
+
+    # add the direction in the high 4 bits of the category
+    for ($i = 0; $i < 65536; $i++)
+    {
+        $category_table[$i] |= $direction_table[$i] << 12;
+    }
+
+    # try to merge table rows
+    for ($row = 0; $row < 256; $row++)
+    {
+        my $rowtxt = sprintf "%04x" x 256, @category_table[($row<<8)..($row<<8)+255];
+        if (defined($sequences{$rowtxt}))
+        {
+            # reuse an existing row
+            $array[$row] = $sequences{$rowtxt};
+        }
+        else
+        {
+            # create a new row
+            $sequences{$rowtxt} = $array[$row] = $#array + 1;
+            push @array, @category_table[($row<<8)..($row<<8)+255];
+        }
+    }
+
+    printf OUTPUT "const unsigned short wine_wctype_table[%d] =\n{\n", $#array+1;
+    printf OUTPUT "    /* offsets */\n%s,\n", DUMP_ARRAY( "0x%04x", 0, @array[0..255] );
+    printf OUTPUT "    /* values */\n%s\n};\n", DUMP_ARRAY( "0x%04x", 0, @array[256..$#array] );
+
+    close OUTPUT;
+    save_file("wctype.c");
+}
+
+
+################################################################
+# dump the char composition tables
+sub DUMP_COMPOSE_TABLES
+{
+    open OUTPUT,">compose.c.new" or die "Cannot create compose.c";
+    printf "Building compose.c\n";
+    printf OUTPUT "/* Unicode char composition */\n";
+    printf OUTPUT "/* Automatically generated; DO NOT EDIT!! */\n\n";
+    printf OUTPUT "#include \"wine/unicode.h\"\n\n";
+
+    ######### composition table
+
+    my @filled = ();
+    foreach $i (@compose_table)
+    {
+        my @comp = @$i;
+        push @{$filled[$comp[1]]}, [ $comp[0], $comp[2] ];
+    }
+
+    # count how many different second chars we have
+
+    for ($i = $count = 0; $i < 65536; $i++)
+    {
+        next unless defined $filled[$i];
+        $count++;
+    }
+
+    # build the table of second chars and offsets
+
+    my $pos = $count + 1;
+    for ($i = 0; $i < 65536; $i++)
+    {
+        next unless defined $filled[$i];
+        push @table, $i, $pos;
+        $pos += @{$filled[$i]};
+    }
+    # terminator with last position
+    push @table, 0, $pos;
+    printf OUTPUT "const WCHAR unicode_compose_table[0x%x] =\n{\n", 2*$pos;
+    printf OUTPUT "    /* second chars + offsets */\n%s", DUMP_ARRAY( "0x%04x", 0, @table );
+
+    # build the table of first chars and mappings
+
+    for ($i = 0; $i < 65536; $i++)
+    {
+        next unless defined $filled[$i];
+        my @table = ();
+        my @list = sort { $a->[0] <=> $b->[0] } @{$filled[$i]};
+        for ($j = 0; $j <= $#list; $j++)
+        {
+            push @table, $list[$j][0], $list[$j][1];
+        }
+        printf OUTPUT ",\n    /* 0x%04x */\n%s", $i, DUMP_ARRAY( "0x%04x", 0, @table );
+    }
+    printf OUTPUT "\n};\n\nconst unsigned int unicode_compose_table_size = %d;\n\n", $count;
+
+    ######### decomposition table
+
+    # first determine all the 16-char subsets that contain something
+
+    my @filled = (0) x 4096;
+    my $pos = 16*2;  # for the null subset
+    for ($i = 0; $i < 65536; $i++)
+    {
+        next unless defined $decomp_table[$i];
+        $filled[$i >> 4] = $pos;
+        $pos += 16*2;
+        $i |= 15;
+    }
+    my $total = $pos;
+
+    # now count the 256-char subsets that contain something
+
+    my @filled_idx = (256) x 256;
+    $pos = 256 + 16;
+    for ($i = 0; $i < 4096; $i++)
+    {
+        next unless $filled[$i];
+        $filled_idx[$i >> 4] = $pos;
+        $pos += 16;
+        $i |= 15;
+    }
+    my $null_offset = $pos;  # null mapping
+    $total += $pos;
+
+    # add the index offsets to the subsets positions
+
+    for ($i = 0; $i < 4096; $i++)
+    {
+        next unless $filled[$i];
+        $filled[$i] += $null_offset;
+    }
+
+    # dump the main index
+
+    printf OUTPUT "const WCHAR unicode_decompose_table[%d] =\n", $total;
+    printf OUTPUT "{\n    /* index */\n";
+    printf OUTPUT "%s", DUMP_ARRAY( "0x%04x", 0, @filled_idx );
+    printf OUTPUT ",\n    /* null sub-index */\n%s", DUMP_ARRAY( "0x%04x", 0, ($null_offset) x 16 );
+
+    # dump the second-level indexes
+
+    for ($i = 0; $i < 256; $i++)
+    {
+        next unless ($filled_idx[$i] > 256);
+        my @table = @filled[($i<<4)..($i<<4)+15];
+        for ($j = 0; $j < 16; $j++) { $table[$j] ||= $null_offset; }
+        printf OUTPUT ",\n    /* sub-index %02x */\n", $i;
+        printf OUTPUT "%s", DUMP_ARRAY( "0x%04x", 0, @table );
+    }
+
+    # dump the 16-char subsets
+
+    printf OUTPUT ",\n    /* null mapping */\n";
+    printf OUTPUT "%s", DUMP_ARRAY( "0x%04x", 0, (0) x 32 );
+
+    for ($i = 0; $i < 4096; $i++)
+    {
+        next unless $filled[$i];
+        my @table = (0) x 32;
+        for ($j = 0; $j < 16; $j++)
+        {
+            if (defined $decomp_table[($i<<4) + $j])
+            {
+                $table[2 * $j] = ${$decomp_table[($i << 4) + $j]}[0];
+                $table[2 * $j + 1] = ${$decomp_table[($i << 4) + $j]}[1];
+            }
+        }
+        printf OUTPUT ",\n    /* 0x%03x0 .. 0x%03xf */\n", $i, $i;
+        printf OUTPUT "%s", DUMP_ARRAY( "0x%04x", 0, @table );
+    }
+
+    printf OUTPUT "\n};\n";
+    close OUTPUT;
+    save_file("compose.c");
+}
+
+
+################################################################
+# read an input file and generate the corresponding .c file
+sub HANDLE_FILE
+{
+    my ($codepage,$filename,$has_glyphs,$comment) = @_;
+
+    @cp2uni = ();
+    @lead_bytes = ();
+    @uni2cp = ();
+
+    # symbol codepage file is special
+    if ($codepage == 20932) { READ_JIS0208_FILE($MAPPREFIX . $filename); }
+    elsif ($codepage == 20127) { fill_20127_codepage(); }
+    else { READ_FILE($MAPPREFIX . $filename); }
+
+    # hack: 0x00a5 must map to backslash in Shift-JIS
+    if ($codepage == 932) { $uni2cp[0x00a5] = 0x5c; }
+
+    ADD_DEFAULT_MAPPINGS();
+
+    my $output = sprintf "c_%03d.c", $codepage;
+    open OUTPUT,">$output.new" or die "Cannot create $output";
+
+    printf "Building %s from %s (%s)\n", $output, $filename || "hardcoded data", $comment;
+
+    # dump all tables
+
+    printf OUTPUT "/* code page %03d (%s) */\n", $codepage, $comment;
+    if ($filename)
+    {
+        printf OUTPUT "/* generated from %s */\n", $MAPPREFIX . $filename;
+        printf OUTPUT "/* DO NOT EDIT!! */\n\n";
+    }
+    else
+    {
+        printf OUTPUT "/* Automatically generated; DO NOT EDIT!! */\n\n";
+    }
+    printf OUTPUT "#include \"wine/unicode.h\"\n\n";
+
+    if ($#lead_bytes == -1) { DUMP_SBCS_TABLE( $codepage, $has_glyphs, $comment ); }
+    else { DUMP_DBCS_TABLE( $codepage, $comment ); }
+    close OUTPUT;
+    save_file($output);
+}
+
+
+################################################################
+# save a file if modified
+sub save_file($)
+{
+    my $file = shift;
+    if (-f $file && !system "cmp $file $file.new >/dev/null")
+    {
+        unlink "$file.new";
+    }
+    else
+    {
+        rename "$file.new", "$file";
+    }
+}
+
+
+################################################################
+# output the list of codepage tables into the cptable.c file
+sub OUTPUT_CPTABLE
+{
+    @tables_decl = ();
+
+    foreach $file (@allfiles)
+    {
+        my ($codepage,$filename,$comment) = @$file;
+        push @tables_decl, sprintf("extern union cptable cptable_%03d;\n",$codepage);
+    }
+
+    push @tables_decl, sprintf("\nstatic const union cptable * const cptables[%d] =\n{\n",$#allfiles+1);
+    foreach $file (@allfiles)
+    {
+        my ($codepage,$filename,$comment) = @$file;
+        push @tables_decl, sprintf("    &cptable_%03d,\n", $codepage);
+    }
+    push @tables_decl, "};";
+    REPLACE_IN_FILE( "cptable.c", @tables_decl );
+}
+
+################################################################
+# replace the contents of a file between ### cpmap ### marks
+
+sub REPLACE_IN_FILE
+{
+    my $name = shift;
+    my @data = @_;
+    my @lines = ();
+    open(FILE,$name) or die "Can't open $name";
+    while (<FILE>)
+    {
+	push @lines, $_;
+	last if /\#\#\# cpmap begin \#\#\#/;
+    }
+    push @lines, @data;
+    while (<FILE>)
+    {
+	if (/\#\#\# cpmap end \#\#\#/) { push @lines, "\n", $_; last; }
+    }
+    push @lines, <FILE>;
+    open(FILE,">$name.new") or die "Can't modify $name";
+    print FILE @lines;
+    close(FILE);
+    save_file($name);
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/cptable.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/cptable.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/cptable.c	(revision 16410)
@@ -0,0 +1,183 @@
+/*
+ * Codepage tables
+ *
+ * Copyright 2000 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <stdlib.h>
+
+#include "wine/unicode.h"
+
+/* Everything below this line is generated automatically by cpmap.pl */
+/* ### cpmap begin ### */
+extern union cptable cptable_037;
+extern union cptable cptable_424;
+extern union cptable cptable_437;
+extern union cptable cptable_500;
+extern union cptable cptable_737;
+extern union cptable cptable_775;
+extern union cptable cptable_850;
+extern union cptable cptable_852;
+extern union cptable cptable_855;
+extern union cptable cptable_856;
+extern union cptable cptable_857;
+extern union cptable cptable_860;
+extern union cptable cptable_861;
+extern union cptable cptable_862;
+extern union cptable cptable_863;
+extern union cptable cptable_864;
+extern union cptable cptable_865;
+extern union cptable cptable_866;
+extern union cptable cptable_869;
+extern union cptable cptable_874;
+extern union cptable cptable_875;
+extern union cptable cptable_878;
+extern union cptable cptable_932;
+extern union cptable cptable_936;
+extern union cptable cptable_949;
+extern union cptable cptable_950;
+extern union cptable cptable_1006;
+extern union cptable cptable_1026;
+extern union cptable cptable_1250;
+extern union cptable cptable_1251;
+extern union cptable cptable_1252;
+extern union cptable cptable_1253;
+extern union cptable cptable_1254;
+extern union cptable cptable_1255;
+extern union cptable cptable_1256;
+extern union cptable cptable_1257;
+extern union cptable cptable_1258;
+extern union cptable cptable_1361;
+extern union cptable cptable_10000;
+extern union cptable cptable_10006;
+extern union cptable cptable_10007;
+extern union cptable cptable_10029;
+extern union cptable cptable_10079;
+extern union cptable cptable_10081;
+extern union cptable cptable_20127;
+extern union cptable cptable_20866;
+extern union cptable cptable_20932;
+extern union cptable cptable_21866;
+extern union cptable cptable_28591;
+extern union cptable cptable_28592;
+extern union cptable cptable_28593;
+extern union cptable cptable_28594;
+extern union cptable cptable_28595;
+extern union cptable cptable_28596;
+extern union cptable cptable_28597;
+extern union cptable cptable_28598;
+extern union cptable cptable_28599;
+extern union cptable cptable_28600;
+extern union cptable cptable_28603;
+extern union cptable cptable_28604;
+extern union cptable cptable_28605;
+extern union cptable cptable_28606;
+
+static const union cptable * const cptables[62] =
+{
+    &cptable_037,
+    &cptable_424,
+    &cptable_437,
+    &cptable_500,
+    &cptable_737,
+    &cptable_775,
+    &cptable_850,
+    &cptable_852,
+    &cptable_855,
+    &cptable_856,
+    &cptable_857,
+    &cptable_860,
+    &cptable_861,
+    &cptable_862,
+    &cptable_863,
+    &cptable_864,
+    &cptable_865,
+    &cptable_866,
+    &cptable_869,
+    &cptable_874,
+    &cptable_875,
+    &cptable_878,
+    &cptable_932,
+    &cptable_936,
+    &cptable_949,
+    &cptable_950,
+    &cptable_1006,
+    &cptable_1026,
+    &cptable_1250,
+    &cptable_1251,
+    &cptable_1252,
+    &cptable_1253,
+    &cptable_1254,
+    &cptable_1255,
+    &cptable_1256,
+    &cptable_1257,
+    &cptable_1258,
+    &cptable_1361,
+    &cptable_10000,
+    &cptable_10006,
+    &cptable_10007,
+    &cptable_10029,
+    &cptable_10079,
+    &cptable_10081,
+    &cptable_20127,
+    &cptable_20866,
+    &cptable_20932,
+    &cptable_21866,
+    &cptable_28591,
+    &cptable_28592,
+    &cptable_28593,
+    &cptable_28594,
+    &cptable_28595,
+    &cptable_28596,
+    &cptable_28597,
+    &cptable_28598,
+    &cptable_28599,
+    &cptable_28600,
+    &cptable_28603,
+    &cptable_28604,
+    &cptable_28605,
+    &cptable_28606,
+};
+/* ### cpmap end ### */
+/* Everything above this line is generated automatically by cpmap.pl */
+
+#define NB_CODEPAGES  (sizeof(cptables)/sizeof(cptables[0]))
+
+
+static int cmp_codepage( const void *codepage, const void *entry )
+{
+    return *(const unsigned int *)codepage - (*(const union cptable *const *)entry)->info.codepage;
+}
+
+
+/* get the table of a given code page */
+const union cptable *wine_cp_get_table( unsigned int codepage )
+{
+    const union cptable **res;
+
+    if (!(res = bsearch( &codepage, cptables, NB_CODEPAGES,
+                         sizeof(cptables[0]), cmp_codepage ))) return NULL;
+    return *res;
+}
+
+
+/* enum valid codepages */
+const union cptable *wine_cp_enum_table( unsigned int index )
+{
+    if (index >= NB_CODEPAGES) return NULL;
+    return cptables[index];
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/debug.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/debug.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/debug.c	(revision 16410)
@@ -0,0 +1,430 @@
+/*
+ * Management of the debugging channels
+ *
+ * Copyright 2000 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "wine/port.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include <string.h>
+#include <ctype.h>
+
+#include "wine/debug.h"
+#include "wine/library.h"
+
+static const char * const debug_classes[] = { "fixme", "err", "warn", "trace" };
+
+#define MAX_DEBUG_OPTIONS 256
+
+static unsigned char default_flags = (1 << __WINE_DBCL_ERR) | (1 << __WINE_DBCL_FIXME);
+static int nb_debug_options = -1;
+static struct __wine_debug_channel debug_options[MAX_DEBUG_OPTIONS];
+
+static struct __wine_debug_functions funcs;
+
+static void debug_init(void);
+
+static int cmp_name( const void *p1, const void *p2 )
+{
+    const char *name = p1;
+    const struct __wine_debug_channel *chan = p2;
+    return strcmp( name, chan->name );
+}
+
+/* get the flags to use for a given channel, possibly setting them too in case of lazy init */
+unsigned char __wine_dbg_get_channel_flags( struct __wine_debug_channel *channel )
+{
+    if (nb_debug_options == -1) debug_init();
+
+    if (nb_debug_options)
+    {
+        struct __wine_debug_channel *opt = bsearch( channel->name, debug_options, nb_debug_options,
+                                                    sizeof(debug_options[0]), cmp_name );
+        if (opt) return opt->flags;
+    }
+    /* no option for this channel */
+    if (channel->flags & (1 << __WINE_DBCL_INIT)) channel->flags = default_flags;
+    return default_flags;
+}
+
+/* set the flags to use for a given channel; return 0 if the channel is not available to set */
+int __wine_dbg_set_channel_flags( struct __wine_debug_channel *channel,
+                                  unsigned char set, unsigned char clear )
+{
+    if (nb_debug_options == -1) debug_init();
+
+    if (nb_debug_options)
+    {
+        struct __wine_debug_channel *opt = bsearch( channel->name, debug_options, nb_debug_options,
+                                                    sizeof(debug_options[0]), cmp_name );
+        if (opt)
+        {
+            opt->flags = (opt->flags & ~clear) | set;
+            return 1;
+        }
+    }
+    return 0;
+}
+
+/* add a new debug option at the end of the option list */
+static void add_option( const char *name, unsigned char set, unsigned char clear )
+{
+    int min = 0, max = nb_debug_options - 1, pos, res;
+
+    if (!name[0])  /* "all" option */
+    {
+        default_flags = (default_flags & ~clear) | set;
+        return;
+    }
+    if (strlen(name) >= sizeof(debug_options[0].name)) return;
+
+    while (min <= max)
+    {
+        pos = (min + max) / 2;
+        res = strcmp( name, debug_options[pos].name );
+        if (!res)
+        {
+            debug_options[pos].flags = (debug_options[pos].flags & ~clear) | set;
+            return;
+        }
+        if (res < 0) max = pos - 1;
+        else min = pos + 1;
+    }
+    if (nb_debug_options >= MAX_DEBUG_OPTIONS) return;
+
+    pos = min;
+    if (pos < nb_debug_options) memmove( &debug_options[pos + 1], &debug_options[pos],
+                                         (nb_debug_options - pos) * sizeof(debug_options[0]) );
+    strcpy( debug_options[pos].name, name );
+    debug_options[pos].flags = (default_flags & ~clear) | set;
+    nb_debug_options++;
+}
+
+/* parse a set of debugging option specifications and add them to the option list */
+static void parse_options( const char *str )
+{
+    char *opt, *next, *options;
+    unsigned int i;
+
+    if (!(options = strdup(str))) return;
+    for (opt = options; opt; opt = next)
+    {
+        const char *p;
+        unsigned char set = 0, clear = 0;
+
+        if ((next = strchr( opt, ',' ))) *next++ = 0;
+
+        p = opt + strcspn( opt, "+-" );
+        if (!p[0]) p = opt;  /* assume it's a debug channel name */
+
+        if (p > opt)
+        {
+            for (i = 0; i < sizeof(debug_classes)/sizeof(debug_classes[0]); i++)
+            {
+                int len = strlen(debug_classes[i]);
+                if (len != (p - opt)) continue;
+                if (!memcmp( opt, debug_classes[i], len ))  /* found it */
+                {
+                    if (*p == '+') set |= 1 << i;
+                    else clear |= 1 << i;
+                    break;
+                }
+            }
+            if (i == sizeof(debug_classes)/sizeof(debug_classes[0])) /* bad class name, skip it */
+                continue;
+        }
+        else
+        {
+            if (*p == '-') clear = ~0;
+            else set = ~0;
+        }
+        if (*p == '+' || *p == '-') p++;
+        if (!p[0]) continue;
+
+        if (!strcmp( p, "all" ))
+            default_flags = (default_flags & ~clear) | set;
+        else
+            add_option( p, set, clear );
+    }
+    free( options );
+}
+
+
+/* print the usage message */
+static void debug_usage(void)
+{
+    static const char usage[] =
+        "Syntax of the WINEDEBUG variable:\n"
+        "  WINEDEBUG=[class]+xxx,[class]-yyy,...\n\n"
+        "Example: WINEDEBUG=+all,warn-heap\n"
+        "    turns on all messages except warning heap messages\n"
+        "Available message classes: err, warn, fixme, trace\n";
+    write( 2, usage, sizeof(usage) - 1 );
+    exit(1);
+}
+
+
+/* initialize all options at startup */
+static void debug_init(void)
+{
+    char *wine_debug;
+
+    if (nb_debug_options != -1) return;  /* already initialized */
+    nb_debug_options = 0;
+    if ((wine_debug = getenv("WINEDEBUG")))
+    {
+        if (!strcmp( wine_debug, "help" )) debug_usage();
+        parse_options( wine_debug );
+    }
+}
+
+/* varargs wrapper for funcs.dbg_vprintf */
+int wine_dbg_printf( const char *format, ... )
+{
+    int ret;
+    va_list valist;
+
+    va_start(valist, format);
+    ret = funcs.dbg_vprintf( format, valist );
+    va_end(valist);
+    return ret;
+}
+
+/* printf with temp buffer allocation */
+const char *wine_dbg_sprintf( const char *format, ... )
+{
+    static const int max_size = 200;
+    char *ret;
+    int len;
+    va_list valist;
+
+    va_start(valist, format);
+    ret = funcs.get_temp_buffer( max_size );
+    len = vsnprintf( ret, max_size, format, valist );
+    if (len == -1 || len >= max_size) ret[max_size-1] = 0;
+    else funcs.release_temp_buffer( ret, len + 1 );
+    va_end(valist);
+    return ret;
+}
+
+
+/* varargs wrapper for funcs.dbg_vlog */
+int wine_dbg_log( enum __wine_debug_class cls, struct __wine_debug_channel *channel,
+                  const char *func, const char *format, ... )
+{
+    int ret;
+    va_list valist;
+
+    if (!(__wine_dbg_get_channel_flags( channel ) & (1 << cls))) return -1;
+
+    va_start(valist, format);
+    ret = funcs.dbg_vlog( cls, channel, func, format, valist );
+    va_end(valist);
+    return ret;
+}
+
+int interlocked_xchg_add( int *dest, int incr )
+{
+	return InterlockedExchangeAdd(dest, incr);
+}
+
+/* allocate some tmp string space */
+/* FIXME: this is not 100% thread-safe */
+static char *get_temp_buffer( size_t size )
+{
+    static char *list[32];
+    static int pos;
+    char *ret;
+    int idx;
+
+    idx = interlocked_xchg_add( &pos, 1 ) % (sizeof(list)/sizeof(list[0]));
+    if ((ret = realloc( list[idx], size ))) list[idx] = ret;
+    return ret;
+}
+
+
+/* release unused part of the buffer */
+static void release_temp_buffer( char *buffer, size_t size )
+{
+    /* don't bother doing anything */
+}
+
+
+/* default implementation of wine_dbgstr_an */
+static const char *default_dbgstr_an( const char *str, int n )
+{
+    static const char hex[16] = "0123456789abcdef";
+    char *dst, *res;
+    size_t size;
+
+    if (!((ULONG_PTR)str >> 16))
+    {
+        if (!str) return "(null)";
+        res = funcs.get_temp_buffer( 6 );
+        sprintf( res, "#%04x", LOWORD(str) );
+        return res;
+    }
+    if (n == -1) n = strlen(str);
+    if (n < 0) n = 0;
+    size = 10 + min( 300, n * 4 );
+    dst = res = funcs.get_temp_buffer( size );
+    *dst++ = '"';
+    while (n-- > 0 && dst <= res + size - 9)
+    {
+        unsigned char c = *str++;
+        switch (c)
+        {
+        case '\n': *dst++ = '\\'; *dst++ = 'n'; break;
+        case '\r': *dst++ = '\\'; *dst++ = 'r'; break;
+        case '\t': *dst++ = '\\'; *dst++ = 't'; break;
+        case '"':  *dst++ = '\\'; *dst++ = '"'; break;
+        case '\\': *dst++ = '\\'; *dst++ = '\\'; break;
+        default:
+            if (c >= ' ' && c <= 126)
+                *dst++ = c;
+            else
+            {
+                *dst++ = '\\';
+                *dst++ = 'x';
+                *dst++ = hex[(c >> 4) & 0x0f];
+                *dst++ = hex[c & 0x0f];
+            }
+        }
+    }
+    *dst++ = '"';
+    if (n > 0)
+    {
+        *dst++ = '.';
+        *dst++ = '.';
+        *dst++ = '.';
+    }
+    *dst++ = 0;
+    funcs.release_temp_buffer( res, dst - res );
+    return res;
+}
+
+
+/* default implementation of wine_dbgstr_wn */
+static const char *default_dbgstr_wn( const WCHAR *str, int n )
+{
+    char *dst, *res;
+    size_t size;
+
+    if (!((ULONG_PTR)str >> 16))
+    {
+        if (!str) return "(null)";
+        res = funcs.get_temp_buffer( 6 );
+        sprintf( res, "#%04x", LOWORD(str) );
+        return res;
+    }
+    if (n == -1)
+    {
+        const WCHAR *end = str;
+        while (*end) end++;
+        n = end - str;
+    }
+    if (n < 0) n = 0;
+    size = 12 + min( 300, n * 5 );
+    dst = res = funcs.get_temp_buffer( size );
+    *dst++ = 'L';
+    *dst++ = '"';
+    while (n-- > 0 && dst <= res + size - 10)
+    {
+        WCHAR c = *str++;
+        switch (c)
+        {
+        case '\n': *dst++ = '\\'; *dst++ = 'n'; break;
+        case '\r': *dst++ = '\\'; *dst++ = 'r'; break;
+        case '\t': *dst++ = '\\'; *dst++ = 't'; break;
+        case '"':  *dst++ = '\\'; *dst++ = '"'; break;
+        case '\\': *dst++ = '\\'; *dst++ = '\\'; break;
+        default:
+            if (c >= ' ' && c <= 126)
+                *dst++ = c;
+            else
+            {
+                *dst++ = '\\';
+                sprintf(dst,"%04x",c);
+                dst+=4;
+            }
+        }
+    }
+    *dst++ = '"';
+    if (n > 0)
+    {
+        *dst++ = '.';
+        *dst++ = '.';
+        *dst++ = '.';
+    }
+    *dst++ = 0;
+    funcs.release_temp_buffer( res, dst - res );
+    return res;
+}
+
+
+/* default implementation of wine_dbg_vprintf */
+static int default_dbg_vprintf( const char *format, va_list args )
+{
+    return vfprintf( stderr, format, args );
+}
+
+
+/* default implementation of wine_dbg_vlog */
+static int default_dbg_vlog( enum __wine_debug_class cls, struct __wine_debug_channel *channel,
+                             const char *func, const char *format, va_list args )
+{
+    int ret = 0;
+
+    if (cls < sizeof(debug_classes)/sizeof(debug_classes[0]))
+        ret += wine_dbg_printf( "%s:%s:%s ", debug_classes[cls], channel->name, func );
+    if (format)
+        ret += funcs.dbg_vprintf( format, args );
+    return ret;
+}
+
+/* wrappers to use the function pointers */
+
+const char *wine_dbgstr_an( const char * s, int n )
+{
+    return funcs.dbgstr_an(s, n);
+}
+
+const char *wine_dbgstr_wn( const WCHAR *s, int n )
+{
+    return funcs.dbgstr_wn(s, n);
+}
+
+void __wine_dbg_set_functions( const struct __wine_debug_functions *new_funcs,
+                               struct __wine_debug_functions *old_funcs, size_t size )
+{
+    if (old_funcs) memcpy( old_funcs, &funcs, min(sizeof(funcs),size) );
+    if (new_funcs) memcpy( &funcs, new_funcs, min(sizeof(funcs),size) );
+}
+
+static struct __wine_debug_functions funcs =
+{
+    get_temp_buffer,
+    release_temp_buffer,
+    default_dbgstr_an,
+    default_dbgstr_wn,
+    default_dbg_vprintf,
+    default_dbg_vlog
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/defaults
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/defaults	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/defaults	(revision 16410)
@@ -0,0 +1,202 @@
+# Default Unicode mappings
+#
+# Copyright 2000 Alexandre Julliard
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+#
+# NOTES:
+#
+# This file contains default mappings for Unicode chars that aren't
+# defined directly in the code page file. It is used by the cpmap.pl
+# tool to build codepage tables.
+#
+# The first column defines equivalence sets; if any character in the set
+# is defined in the codepage file, all others in the set will map to the
+# same value.
+#
+# The second column specifies the default char to map the whole set to,
+# if no characters in the set are defined by the codepage file.
+#
+# Characters that have an explicit decomposition in the UnicodeData.txt
+# file (for instance 00c0 LATIN CAPITAL LETTER A WITH GRAVE -> 0041 0300)
+# are handled automatically and do not have to be defined here. They can
+# still be defined if necessary to override the unicode decomposition.
+#
+
+# letters
+
+00a2,20a1      'c'  # CENT SIGN, COLON SIGN
+00a3,20a4      'L'  # POUND SIGN, LIRA SIGN
+00a5           'Y'  # YEN SIGN
+00a6           '|'  # BROKEN BAR
+00a9           'c'  # COPYRIGHT SIGN
+00ae           'r'  # REGISTERED SIGN
+00b5,03bc      'u'  # MICRO SIGN, GREEK SMALL LETTER MU
+00c6           'A'  # LATIN CAPITAL LETTER AE
+00d0,0110,0189 'D'  # LATIN CAPITAL LETTER D WITH STROKE/AFRICAN D/ETH
+00d7           'x'  # MULTIPLICATION SIGN
+00d8,2205      'O'  # LATIN CAPITAL LETTER O WITH STROKE, EMPTY SET
+00df,03b2      none # LATIN SMALL LETTER SHARP S, GREEK SMALL LETTER BETA
+00e6           'a'  # LATIN SMALL LETTER AE
+00f0           'd'  # LATIN SMALL LETTER ETH
+00f8           'o'  # LATIN SMALL LETTER O WITH STROKE
+0111           'd'  # LATIN SMALL LETTER D WITH STROKE
+0126           'H'  # LATIN CAPITAL LETTER H WITH STROKE
+0127           'h'  # LATIN SMALL LETTER H WITH STROKE
+0131           'i'  # LATIN SMALL LETTER DOTLESS I
+0141           'L'  # LATIN CAPITAL LETTER L WITH STROKE
+0142           'l'  # LATIN SMALL LETTER L WITH STROKE
+0152           'O'  # LATIN CAPITAL LIGATURE OE
+0153           'o'  # LATIN SMALL LIGATURE OE
+0166           'T'  # LATIN CAPITAL LETTER T WITH STROKE
+0167           't'  # LATIN SMALL LETTER T WITH STROKE
+0180           'b'  # LATIN SMALL LETTER B WITH STROKE
+0190           'E'  # LATIN CAPITAL LETTER OPEN E
+0191           'F'  # LATIN CAPITAL LETTER F WITH HOOK
+0192           'f'  # LATIN SMALL LETTER F WITH HOOK
+0197           'I'  # LATIN CAPITAL LETTER I WITH STROKE
+019a           'l'  # LATIN SMALL LETTER L WITH BAR
+019f           'O'  # LATIN CAPITAL LETTER O WITH MIDDLE TILDE
+01ab           't'  # LATIN SMALL LETTER T WITH PALATAL HOOK
+01ae           'T'  # LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
+01b6           'z'  # LATIN SMALL LETTER Z WITH STROKE
+0391 	       'A'  # GREEK CAPITAL LETTER ALPHA
+0392 	       'B'  # GREEK CAPITAL LETTER BETA
+0395 	       'E'  # GREEK CAPITAL LETTER EPSILON
+0396 	       'Z'  # GREEK CAPITAL LETTER ZETA
+0397 	       'H'  # GREEK CAPITAL LETTER ETA
+0399 	       'I'  # GREEK CAPITAL LETTER IOTA
+039a 	       'K'  # GREEK CAPITAL LETTER KAPPA
+039c 	       'M'  # GREEK CAPITAL LETTER MU
+039d 	       'N'  # GREEK CAPITAL LETTER NU
+039f 	       'O'  # GREEK CAPITAL LETTER OMICRON
+03a1 	       'P'  # GREEK CAPITAL LETTER RHO
+03a4 	       'T'  # GREEK CAPITAL LETTER TAU
+03a5 	       'Y'  # GREEK CAPITAL LETTER UPSILON
+03a7 	       'X'  # GREEK CAPITAL LETTER CHI
+01e4 	       'G'  # LATIN CAPITAL LETTER G WITH STROKE
+01e5 	       'g'  # LATIN SMALL LETTER G WITH STROKE
+0261 	       'g'  # LATIN SMALL LETTER SCRIPT G
+2118           'P'  # SCRIPT CAPITAL P
+212e           'e'  # ESTIMATED SYMBOL
+
+# accents
+
+00a8,0308                '"'  # DIAERESIS
+00af,02c9,0304           2014 # MACRON -> EM DASH
+00b4,02b9,02ca,0301,2032 '''  # ACUTE ACCENT, PRIME
+00b8,0327                ','  # CEDILLA
+02ba,02dd,030b,2033      '"'  # DOUBLE ACUTE ACCENT, DOUBLE PRIME
+02c4,2303                '^'  # UP ARROWHEAD
+02c6,0302                '^'  # CIRCUMFLEX ACCENT
+02c7,030c                'v'  # COMBINING CARON -> CARON
+02c8                     '''  # MODIFIER LETTER VERTICAL LINE
+02cb,0300                '`'  # GRAVE ACCENT
+02cd,0331,0332           '_'  # MODIFIER LETTER LOW MACRON, COMBINING MACRON BELOW, COMBINING LOW LINE
+02d8,0306                none # BREVE
+02d9,0307                none # DOT ABOVE
+02da,030a,2070,2218      00b0 # RING ABOVE, SUPERSCRIPT ZERO, RING OPERATOR -> DEGREE SIGN
+02db,0328                none # OGONEK
+02dc,0303                '~'  # SMALL TILDE
+0305,203e                00af # OVERLINE -> MACRON
+030e                     '"'  # COMBINING DOUBLE VERTICAL LINE ABOVE
+0333                     '_'  # COMBINING DOUBLE LOW LINE
+
+# mathematical symbols
+
+00b1,2213 none # PLUS-MINUS SIGN, MINUS-OR-PLUS SIGN
+2044,2215 '/'  # FRACTION/DIVISION SLASH
+2216      '\'  # SET MINUS
+2217      '*'  # ASTERISK OPERATOR
+221a      'V'  # SQUARE ROOT
+221f      'L'  # RIGHT ANGLE
+2223      '|'  # DIVIDES
+2229      'n'  # INTERSECTION
+2236      ':'  # RATIO
+2248      02DC # ALMOST EQUAL TO -> SMALL TILDE
+2261,2263 '='  # IDENTICAL TO, STRICTLY EQUIVALENT TO
+226a      00ab # MUCH LESS-THAN -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+226b      00bb # MUCH GREATER-THAN -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+22c5      00b7 # DOT OPERATOR -> MIDDLE DOT
+
+# misc symbols
+
+00a1                '!'  # INVERTED EXCLAMATION MARK
+00ab,300a           '<'  # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK, LEFT DOUBLE ANGLE BRACKET
+00ad           	    '-'  # SOFT HYPHEN
+00bb,300b           '>'  # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK, RIGHT DOUBLE ANGLE BRACKET
+01c0                2502 # LATIN LETTER DENTAL CLICK -> BOX DRAWINGS LIGHT VERTICAL
+01c3                '!'  # LATIN LETTER RETROFLEX CLICK
+02bb                2018 # MODIFIER LETTER TURNED COMMA -> LEFT SINGLE QUOTATION MARK
+02bc,2019           '''  # RIGHT SINGLE QUOTATION MARK
+2010,2011,2212 	    '-'  # HYPHEN, MINUS SIGN
+2013,2014,2015 	    '-'  # EN DASH, EM DASH, HORIZONTAL BAR, MINUS SIGN
+2018,201b,2035      '`'  # LEFT SINGLE QUOTATION MARK, SINGLE HIGH-REVERSED-9 QUOTATION MARK, REVERSED PRIME
+201a                ','  # SINGLE LOW-9 QUOTATION MARK
+201c,301d           '"'  # LEFT DOUBLE QUOTATION MARK, REVERSED DOUBLE PRIME QUOTATION MARK
+201d,301e           '"'  # RIGHT DOUBLE QUOTATION MARK, DOUBLE PRIME QUOTATION MARK
+201e,301f           ','  # LOW DOUBLE PRIME QUOTATION MARK, DOUBLE LOW-9 QUOTATION MARK
+2022,2219      	    none # BULLET, BULLET OPERATOR
+2039,3008      	    '<'  # SINGLE LEFT-POINTING ANGLE QUOTATION MARK, LEFT ANGLE BRACKET
+203a,3009      	    '>'  # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK, RIGHT ANGLE BRACKET
+203c                '!'  # DOUBLE EXCLAMATION MARK
+2190 		    2039 # LEFTWARDS ARROW -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+2191 		    02c6 # UPWARDS ARROW -> MODIFIER LETTER CIRCUMFLEX ACCENT
+2192 		    203a # RIGHTWARDS ARROW -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+2193 		    02c7 # DOWNWARDS ARROW -> CARON
+2194                '-'  # LEFT RIGHT ARROW
+2195                '|'  # UP DOWN ARROW
+223c           	    '~'  # TILDE
+301a                '['  # LEFT WHITE SQUARE BRACKET
+301b                ']'  # RIGHT WHITE SQUARE BRACKET
+fe49,fe4a,fe4b,fe4c 203e # DOUBLE WAVY OVERLINE -> OVERLINE
+fe4d,fe4e,fe4f      '_'  # DASHED/CENTRELINE/WAVY LOW LINE
+
+# box drawing chars
+
+2500,2501 	    '-'  # BOX DRAWINGS LIGHT/HEAVY HORIZONTAL
+2502,2503 	    '|'  # BOX DRAWINGS LIGHT/HEAVY VERTICAL
+2504,2505 	    '-'  # BOX DRAWINGS LIGHT/HEAVY TRIPLE DASH HORIZONTAL
+2506,2507 	    00a6 # BOX DRAWINGS LIGHT/HEAVY TRIPLE DASH VERTICAL -> BROKEN BAR
+2508,2509 	    '-'  # BOX DRAWINGS LIGHT/HEAVY QUADRUPLE DASH HORIZONTAL
+250a,250b 	    00a6 # BOX DRAWINGS LIGHT/HEAVY QUADRUPLE DASH VERTICAL -> BROKEN BAR
+250c,250d,250e,250f '+'  # BOX DRAWINGS LIGHT/HEAVY DOWN AND RIGHT
+2510,2511,2512,2513 00ac # BOX DRAWINGS LIGHT/HEAVY DOWN AND LEFT -> NOT SIGN
+2514,2515,2516,2517 'L'  # BOX DRAWINGS LIGHT/HEAVY UP AND RIGHT
+2518,2519,251a,251b '+'  # BOX DRAWINGS LIGHT/HEAVY UP AND LEFT
+251c,251d,251e,251f,2520,2521,2522,2523 '+'  # BOX DRAWINGS LIGHT/HEAVY VERTICAL AND RIGHT
+2524,2525,2526,2527,2528,2529,252a,252b '+'  # BOX DRAWINGS LIGHT/HEAVY VERTICAL AND LEFT
+252c,252d,252e,252f,2530,2531,2532,2533 'T'  # BOX DRAWINGS LIGHT/HEAVY DOWN AND HORIZONTAL
+2534,2535,2536,2537,2538,2539,253a,253b '+'  # BOX DRAWINGS LIGHT/HEAVY UP AND HORIZONTAL
+253c,253d,253e,253f,2540,2541,2542,2543,2544,2545,2546,2547,2548,2549,254a,254b '+'   # BOX DRAWINGS LIGHT/HEAVY VERTICAL AND HORIZONTAL
+254c,254d      	    '-'  # BOX DRAWINGS LIGHT/HEAVY DOUBLE DASH HORIZONTAL
+254e,254f      	    00a6 # BOX DRAWINGS LIGHT/HEAVY DOUBLE DASH VERTICAL -> BROKEN BAR
+2550           	    '='  # BOX DRAWINGS DOUBLE HORIZONTAL
+2551           	    '|'  # BOX DRAWINGS DOUBLE VERTICAL
+2552,2553,2554 	    '+'  # BOX DRAWINGS DOWN AND RIGHT
+2555,2556,2557 	    00ac # BOX DRAWINGS DOWN AND LEFT -> NOT SIGN
+2558,2559,255a 	    'L'  # BOX DRAWINGS UP AND RIGHT
+255b,255c,255d 	    '+'  # BOX DRAWINGS UP AND LEFT
+255e,255f,2560 	    '+'  # BOX DRAWINGS VERTICAL AND RIGHT
+2561,2562,2563 	    '+'  # BOX DRAWINGS VERTICAL AND LEFT
+2564,2565,2566 	    'T'  # BOX DRAWINGS DOWN AND HORIZONTAL
+2567,2568,2569 	    '+'  # BOX DRAWINGS UP AND HORIZONTAL
+256a,256b,256c 	    '+'  # BOX DRAWINGS VERTICAL AND HORIZONTAL
+2571           	    '/'  # BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
+2572           	    '\'  # BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
+2573           	    'X'  # BOX DRAWINGS LIGHT DIAGONAL CROSS
+2574,2576,2578,257a,257c,257e '-'  # BOX DRAWINGS LIGHT/HEAVY LEFT/RIGHT
+2575,2577,2579,257b,257d,257f '|'  # BOX DRAWINGS LIGHT/HEAVY UP/DOWN
+25cb,25ef           'O'  # WHITE/LARGE CIRCLE
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/fold.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/fold.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/fold.c	(revision 16410)
@@ -0,0 +1,198 @@
+/*
+ * String folding
+ *
+ * Copyright 2003 Jon Griffiths
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "wine/unicode.h"
+
+static inline WCHAR to_unicode_digit( WCHAR ch )
+{
+    extern const WCHAR wine_digitmap[];
+    return ch + wine_digitmap[wine_digitmap[ch >> 8] + (ch & 0xff)];
+}
+
+static inline WCHAR to_unicode_native( WCHAR ch )
+{
+    extern const WCHAR wine_compatmap[];
+    return ch + wine_compatmap[wine_compatmap[ch >> 8] + (ch & 0xff)];
+}
+
+static const WCHAR wine_ligatures[] =
+{
+    0x00c6, 0x00de, 0x00df, 0x00e6, 0x00fe, 0x0132, 0x0133, 0x0152,
+    0x0153, 0x01c4, 0x01c5, 0x01c6, 0x01c7, 0x01c8, 0x01c9, 0x01ca,
+    0x01cb, 0x01cc, 0x01e2, 0x01e3, 0x01f1, 0x01f2, 0x01f3, 0x01fc,
+    0x01fd, 0x05f0, 0x05f1, 0x05f2, 0xfb00, 0xfb01, 0xfb02, 0xfb03,
+    0xfb04, 0xfb05, 0xfb06
+};
+
+/* Unicode expanded ligatures */
+static const WCHAR wine_expanded_ligatures[][4] =
+{
+    { 'A','E','\0',1 },
+    { 'T','H','\0',1 },
+    { 's','s','\0',1 },
+    { 'a','e','\0',1 },
+    { 't','h','\0',1 },
+    { 'I','J','\0',1 },
+    { 'i','j','\0',1 },
+    { 'O','E','\0',1 },
+    { 'o','e','\0',1 },
+    { 'D',0x017d,'\0',1 },
+    { 'D',0x017e,'\0',1 },
+    { 'd',0x017e,'\0',1 },
+    { 'L','J','\0',1 },
+    { 'L','j','\0',1 },
+    { 'l','j','\0',1 },
+    { 'N','J','\0',1 },
+    { 'N','j','\0',1 },
+    { 'n','j','\0',1 },
+    { 0x0100,0x0112,'\0',1 },
+    { 0x0101,0x0113,'\0',1 },
+    { 'D','Z','\0',1 },
+    { 'D','z','\0',1 },
+    { 'd','z','\0',1 },
+    { 0x00c1,0x00c9,'\0',1 },
+    { 0x00e1,0x00e9,'\0',1 },
+    { 0x05d5,0x05d5,'\0',1 },
+    { 0x05d5,0x05d9,'\0',1 },
+    { 0x05d9,0x05d9,'\0',1 },
+    { 'f','f','\0',1 },
+    { 'f','i','\0',1 },
+    { 'f','l','\0',1 },
+    { 'f','f','i',2 },
+    { 'f','f','l',2 },
+    { 0x017f,'t','\0',1 },
+    { 's','t','\0',1 }
+};
+
+static inline int get_ligature_len( WCHAR wc )
+{
+    int low = 0, high = sizeof(wine_ligatures)/sizeof(WCHAR) -1;
+    while (low <= high)
+    {
+        int pos = (low + high) / 2;
+        if (wine_ligatures[pos] < wc)
+            low = pos + 1;
+        else if (wine_ligatures[pos] > wc)
+            high = pos - 1;
+        else
+            return wine_expanded_ligatures[pos][3];
+    }
+    return 0;
+}
+
+static inline const WCHAR* get_ligature( WCHAR wc )
+{
+    static const WCHAR empty_ligature[] = { '\0','\0','\0', 0 };
+    int low = 0, high = sizeof(wine_ligatures)/sizeof(WCHAR) -1;
+    while (low <= high)
+    {
+        int pos = (low + high) / 2;
+        if (wine_ligatures[pos] < wc)
+            low = pos + 1;
+        else if (wine_ligatures[pos] > wc)
+            high = pos - 1;
+        else
+            return wine_expanded_ligatures[pos];
+    }
+    return empty_ligature;
+}
+
+/* fold a unicode string */
+int wine_fold_string( int flags, const WCHAR *src, int srclen, WCHAR *dst, int dstlen )
+{
+    WCHAR *dstbase = dst;
+    const WCHAR *expand;
+    int i;
+
+    if (srclen == -1)
+        srclen = strlenW(src) + 1; /* Include terminating NUL in count */
+
+    if (!dstlen)
+    {
+        /* Calculate the required size for dst */
+        dstlen = srclen;
+
+        if (flags & MAP_EXPAND_LIGATURES)
+        {
+            while (srclen--)
+            {
+                dstlen += get_ligature_len(*src);
+                src++;
+            }
+        }
+        else if (flags & MAP_COMPOSITE)
+        {
+            /* FIXME */
+        }
+        else if (flags & MAP_PRECOMPOSED)
+        {
+            /* FIXME */
+        }
+        return dstlen;
+    }
+
+    if (srclen > dstlen)
+        return 0;
+
+    dstlen -= srclen;
+
+    /* Actually perform the mapping(s) specified */
+    for (i = 0; i < srclen; i++)
+    {
+        WCHAR ch = *src;
+
+        if (flags & MAP_EXPAND_LIGATURES)
+        {
+            expand = get_ligature(ch);
+            if (expand[0])
+            {
+                if (!dstlen--)
+                    return 0;
+                dst[0] = expand[0];
+                if (expand[2])
+                {
+                    if (!dstlen--)
+                        return 0;
+                    *++dst = expand[1];
+                    ch = expand[2];
+                }
+                else
+                    ch = expand[1];
+                dst++;
+            }
+        }
+        else if (flags & MAP_COMPOSITE)
+        {
+            /* FIXME */
+        }
+        else if (flags & MAP_PRECOMPOSED)
+        {
+            /* FIXME */
+        }
+        if (flags & MAP_FOLDDIGITS)
+            ch = to_unicode_digit(ch);
+        if (flags & MAP_FOLDCZONE)
+            ch = to_unicode_native(ch);
+
+        *dst++ = ch;
+        src++;
+    }
+    return dst - dstbase;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/ldt.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/ldt.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/ldt.c	(revision 16410)
@@ -0,0 +1,489 @@
+/*
+ * LDT manipulation functions
+ *
+ * Copyright 1993 Robert J. Amstadt
+ * Copyright 1995 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "wine/port.h"
+
+#include <assert.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+
+#include "windef.h"
+#include "winbase.h"
+#define WINE_EXPORT_LDT_COPY
+#include "wine/library.h"
+
+#ifdef __i386__
+
+#ifdef linux
+
+#ifdef HAVE_SYS_SYSCALL_H
+# include <sys/syscall.h>
+#endif
+
+struct modify_ldt_s
+{
+    unsigned int  entry_number;
+    unsigned long base_addr;
+    unsigned int  limit;
+    unsigned int  seg_32bit : 1;
+    unsigned int  contents : 2;
+    unsigned int  read_exec_only : 1;
+    unsigned int  limit_in_pages : 1;
+    unsigned int  seg_not_present : 1;
+    unsigned int  usable : 1;
+    unsigned int  garbage : 25;
+};
+
+static inline void fill_modify_ldt_struct( struct modify_ldt_s *ptr, const LDT_ENTRY *entry )
+{
+    ptr->base_addr       = (unsigned long)wine_ldt_get_base(entry);
+    ptr->limit           = entry->LimitLow | (entry->HighWord.Bits.LimitHi << 16);
+    ptr->seg_32bit       = entry->HighWord.Bits.Default_Big;
+    ptr->contents        = (entry->HighWord.Bits.Type >> 2) & 3;
+    ptr->read_exec_only  = !(entry->HighWord.Bits.Type & 2);
+    ptr->limit_in_pages  = entry->HighWord.Bits.Granularity;
+    ptr->seg_not_present = !entry->HighWord.Bits.Pres;
+    ptr->usable          = entry->HighWord.Bits.Sys;
+    ptr->garbage         = 0;
+}
+
+static inline int modify_ldt( int func, struct modify_ldt_s *ptr, unsigned long count )
+{
+    int res;
+    __asm__ __volatile__( "pushl %%ebx\n\t"
+                          "movl %2,%%ebx\n\t"
+                          "int $0x80\n\t"
+                          "popl %%ebx"
+                          : "=a" (res)
+                          : "0" (SYS_modify_ldt),
+                            "r" (func),
+                            "c" (ptr),
+                            "d" (count),
+                            "m" (*ptr) );
+    if (res >= 0) return res;
+    errno = -res;
+    return -1;
+}
+
+static inline int set_thread_area( struct modify_ldt_s *ptr )
+{
+    int res;
+    __asm__ __volatile__( "pushl %%ebx\n\t"
+                          "movl %3,%%ebx\n\t"
+                          "int $0x80\n\t"
+                          "popl %%ebx"
+                          : "=a" (res), "=m" (*ptr)
+                          : "0" (243) /* SYS_set_thread_area */, "q" (ptr), "m" (*ptr) );
+    if (res >= 0) return res;
+    errno = -res;
+    return -1;
+}
+
+#endif  /* linux */
+
+#if defined(__svr4__) || defined(_SCO_DS)
+#include <sys/sysi86.h>
+#ifndef __sun__
+#include <sys/seg.h>
+#endif
+#endif
+
+#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__OpenBSD__)
+#include <machine/segments.h>
+#include <machine/sysarch.h>
+#endif  /* __NetBSD__ || __FreeBSD__ || __OpenBSD__ */
+
+#ifdef __APPLE__
+#include <i386/user_ldt.h>
+#endif
+
+#endif  /* __i386__ */
+
+/* local copy of the LDT */
+#ifdef __APPLE__
+struct __wine_ldt_copy wine_ldt_copy = { { 0, 0, 0 } };
+#else
+struct __wine_ldt_copy wine_ldt_copy;
+#endif
+
+static const LDT_ENTRY null_entry;  /* all-zeros, used to clear LDT entries */
+
+#define LDT_FIRST_ENTRY 512
+#define LDT_SIZE 8192
+
+/* empty function for default locks */
+static void nop(void) { }
+
+static void (*lock_ldt)(void) = nop;
+static void (*unlock_ldt)(void) = nop;
+
+
+static inline int is_gdt_sel( unsigned short sel ) { return !(sel & 4); }
+
+/***********************************************************************
+ *           wine_ldt_init_locking
+ *
+ * Set the LDT locking/unlocking functions.
+ */
+void wine_ldt_init_locking( void (*lock_func)(void), void (*unlock_func)(void) )
+{
+    lock_ldt = lock_func;
+    unlock_ldt = unlock_func;
+}
+
+
+/***********************************************************************
+ *           wine_ldt_get_entry
+ *
+ * Retrieve an LDT entry. Return a null entry if selector is not allocated.
+ */
+void wine_ldt_get_entry( unsigned short sel, LDT_ENTRY *entry )
+{
+    int index = sel >> 3;
+
+    if (is_gdt_sel(sel))
+    {
+        *entry = null_entry;
+        return;
+    }
+    lock_ldt();
+    if (wine_ldt_copy.flags[index] & WINE_LDT_FLAGS_ALLOCATED)
+    {
+        wine_ldt_set_base(  entry, wine_ldt_copy.base[index] );
+        wine_ldt_set_limit( entry, wine_ldt_copy.limit[index] );
+        wine_ldt_set_flags( entry, wine_ldt_copy.flags[index] );
+    }
+    else *entry = null_entry;
+    unlock_ldt();
+}
+
+
+/***********************************************************************
+ *           internal_set_entry
+ *
+ * Set an LDT entry, without locking. For internal use only.
+ */
+static int internal_set_entry( unsigned short sel, const LDT_ENTRY *entry )
+{
+    int ret = 0, index = sel >> 3;
+
+    if (index < LDT_FIRST_ENTRY) return 0;  /* cannot modify reserved entries */
+
+#ifdef __i386__
+
+#ifdef linux
+    {
+        struct modify_ldt_s ldt_info;
+
+        ldt_info.entry_number = index;
+        fill_modify_ldt_struct( &ldt_info, entry );
+        if ((ret = modify_ldt(0x11, &ldt_info, sizeof(ldt_info))) < 0)
+            perror( "modify_ldt" );
+    }
+#elif defined(__NetBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__OpenBSD__)
+    {
+	LDT_ENTRY entry_copy = *entry;
+	/* The kernel will only let us set LDTs with user priority level */
+	if (entry_copy.HighWord.Bits.Pres
+	    && entry_copy.HighWord.Bits.Dpl != 3)
+		entry_copy.HighWord.Bits.Dpl = 3;
+        ret = i386_set_ldt(index, (union descriptor *)&entry_copy, 1);
+        if (ret < 0)
+        {
+            perror("i386_set_ldt");
+            fprintf( stderr, "Did you reconfigure the kernel with \"options USER_LDT\"?\n" );
+            exit(1);
+        }
+    }
+#elif defined(__svr4__) || defined(_SCO_DS)
+    {
+        struct ssd ldt_mod;
+        ldt_mod.sel  = sel;
+        ldt_mod.bo   = (unsigned long)wine_ldt_get_base(entry);
+        ldt_mod.ls   = entry->LimitLow | (entry->HighWord.Bits.LimitHi << 16);
+        ldt_mod.acc1 = entry->HighWord.Bytes.Flags1;
+        ldt_mod.acc2 = entry->HighWord.Bytes.Flags2 >> 4;
+        if ((ret = sysi86(SI86DSCR, &ldt_mod)) == -1) perror("sysi86");
+    }
+#elif defined(__APPLE__)
+    if ((ret = i386_set_ldt(index, (union ldt_entry *)entry, 1)) < 0)
+        perror("i386_set_ldt");
+#else
+    fprintf( stderr, "No LDT support on this platform\n" );
+    exit(1);
+#endif
+
+#endif  /* __i386__ */
+
+    if (ret >= 0)
+    {
+        wine_ldt_copy.base[index]  = wine_ldt_get_base(entry);
+        wine_ldt_copy.limit[index] = wine_ldt_get_limit(entry);
+        wine_ldt_copy.flags[index] = (entry->HighWord.Bits.Type |
+                                 (entry->HighWord.Bits.Default_Big ? WINE_LDT_FLAGS_32BIT : 0) |
+                                 (wine_ldt_copy.flags[index] & WINE_LDT_FLAGS_ALLOCATED));
+    }
+    return ret;
+}
+
+
+/***********************************************************************
+ *           wine_ldt_set_entry
+ *
+ * Set an LDT entry.
+ */
+int wine_ldt_set_entry( unsigned short sel, const LDT_ENTRY *entry )
+{
+    int ret;
+
+    lock_ldt();
+    ret = internal_set_entry( sel, entry );
+    unlock_ldt();
+    return ret;
+}
+
+
+/***********************************************************************
+ *           wine_ldt_is_system
+ *
+ * Check if the selector is a system selector (i.e. not managed by Wine).
+ */
+int wine_ldt_is_system( unsigned short sel )
+{
+    return is_gdt_sel(sel) || ((sel >> 3) < LDT_FIRST_ENTRY);
+}
+
+
+/***********************************************************************
+ *           wine_ldt_get_ptr
+ *
+ * Convert a segment:offset pair to a linear pointer.
+ * Note: we don't lock the LDT since this has to be fast.
+ */
+void *wine_ldt_get_ptr( unsigned short sel, unsigned long offset )
+{
+    int index;
+
+    if (is_gdt_sel(sel))  /* GDT selector */
+        return (void *)offset;
+    if ((index = (sel >> 3)) < LDT_FIRST_ENTRY)  /* system selector */
+        return (void *)offset;
+    if (!(wine_ldt_copy.flags[index] & WINE_LDT_FLAGS_32BIT)) offset &= 0xffff;
+    return (char *)wine_ldt_copy.base[index] + offset;
+}
+
+
+/***********************************************************************
+ *           wine_ldt_alloc_entries
+ *
+ * Allocate a number of consecutive ldt entries, without setting the LDT contents.
+ * Return a selector for the first entry.
+ */
+unsigned short wine_ldt_alloc_entries( int count )
+{
+    int i, index, size = 0;
+
+    if (count <= 0) return 0;
+    lock_ldt();
+    for (i = LDT_FIRST_ENTRY; i < LDT_SIZE; i++)
+    {
+        if (wine_ldt_copy.flags[i] & WINE_LDT_FLAGS_ALLOCATED) size = 0;
+        else if (++size >= count)  /* found a large enough block */
+        {
+            index = i - size + 1;
+
+            /* mark selectors as allocated */
+            for (i = 0; i < count; i++) wine_ldt_copy.flags[index + i] |= WINE_LDT_FLAGS_ALLOCATED;
+            unlock_ldt();
+            return (index << 3) | 7;
+        }
+    }
+    unlock_ldt();
+    return 0;
+}
+
+
+/***********************************************************************
+ *           wine_ldt_realloc_entries
+ *
+ * Reallocate a number of consecutive ldt entries, without changing the LDT contents.
+ * Return a selector for the first entry.
+ */
+unsigned short wine_ldt_realloc_entries( unsigned short sel, int oldcount, int newcount )
+{
+    int i;
+
+    if (oldcount < newcount)  /* we need to add selectors */
+    {
+        int index = sel >> 3;
+
+        lock_ldt();
+        /* check if the next selectors are free */
+        if (index + newcount > LDT_SIZE) i = oldcount;
+        else
+            for (i = oldcount; i < newcount; i++)
+                if (wine_ldt_copy.flags[index+i] & WINE_LDT_FLAGS_ALLOCATED) break;
+
+        if (i < newcount)  /* they are not free */
+        {
+            wine_ldt_free_entries( sel, oldcount );
+            sel = wine_ldt_alloc_entries( newcount );
+        }
+        else  /* mark the selectors as allocated */
+        {
+            for (i = oldcount; i < newcount; i++)
+                wine_ldt_copy.flags[index+i] |= WINE_LDT_FLAGS_ALLOCATED;
+        }
+        unlock_ldt();
+    }
+    else if (oldcount > newcount) /* we need to remove selectors */
+    {
+        wine_ldt_free_entries( sel + (newcount << 3), newcount - oldcount );
+    }
+    return sel;
+}
+
+
+/***********************************************************************
+ *           wine_ldt_free_entries
+ *
+ * Free a number of consecutive ldt entries and clear their contents.
+ */
+void wine_ldt_free_entries( unsigned short sel, int count )
+{
+    int index;
+
+    lock_ldt();
+    for (index = sel >> 3; count > 0; count--, index++)
+    {
+        internal_set_entry( sel, &null_entry );
+        wine_ldt_copy.flags[index] = 0;
+    }
+    unlock_ldt();
+}
+
+
+#if defined(__i386__) && !defined(__MINGW32__) && !defined(_MSC_VER)
+
+static int global_fs_sel = -1;  /* global selector for %fs shared among all threads */
+
+/***********************************************************************
+ *           wine_ldt_alloc_fs
+ *
+ * Allocate an LDT entry for a %fs selector, reusing a global
+ * GDT selector if possible. Return the selector value.
+ */
+unsigned short wine_ldt_alloc_fs(void)
+{
+    if (global_fs_sel == -1)
+    {
+#ifdef __linux__
+        struct modify_ldt_s ldt_info;
+        int ret;
+
+        /* the preloader may have allocated it already */
+        global_fs_sel = wine_get_fs();
+        if (global_fs_sel && is_gdt_sel(global_fs_sel)) return global_fs_sel;
+
+        ldt_info.entry_number = -1;
+        fill_modify_ldt_struct( &ldt_info, &null_entry );
+        if ((ret = set_thread_area( &ldt_info ) < 0))
+        {
+            global_fs_sel = 0;  /* don't try it again */
+            if (errno != ENOSYS) perror( "set_thread_area" );
+        }
+        else global_fs_sel = (ldt_info.entry_number << 3) | 3;
+#elif defined(__FreeBSD__)
+        global_fs_sel = GSEL( GUFS_SEL, SEL_UPL );
+#endif
+    }
+    if (global_fs_sel > 0) return global_fs_sel;
+    return wine_ldt_alloc_entries( 1 );
+}
+
+
+/***********************************************************************
+ *           wine_ldt_init_fs
+ *
+ * Initialize the entry for the %fs selector of the current thread, and
+ * set the thread %fs register.
+ *
+ * Note: this runs in the context of the new thread, so cannot acquire locks.
+ */
+void wine_ldt_init_fs( unsigned short sel, const LDT_ENTRY *entry )
+{
+    if ((sel & ~3) == (global_fs_sel & ~3))
+    {
+#ifdef __linux__
+        struct modify_ldt_s ldt_info;
+        int ret;
+
+        ldt_info.entry_number = sel >> 3;
+        fill_modify_ldt_struct( &ldt_info, entry );
+        if ((ret = set_thread_area( &ldt_info ) < 0)) perror( "set_thread_area" );
+#elif defined(__FreeBSD__)
+        i386_set_fsbase( wine_ldt_get_base( entry ));
+#endif
+    }
+    else  /* LDT selector */
+    {
+        internal_set_entry( sel, entry );
+    }
+    wine_set_fs( sel );
+}
+
+
+/***********************************************************************
+ *           wine_ldt_free_fs
+ *
+ * Free a %fs selector returned by wine_ldt_alloc_fs.
+ */
+void wine_ldt_free_fs( unsigned short sel )
+{
+    if (is_gdt_sel(sel)) return;  /* nothing to do */
+    if (!((wine_get_fs() ^ sel) & ~3))
+    {
+        /* FIXME: if freeing current %fs we cannot acquire locks */
+        wine_set_fs( 0 );
+        internal_set_entry( sel, &null_entry );
+        wine_ldt_copy.flags[sel >> 3] = 0;
+    }
+    else wine_ldt_free_entries( sel, 1 );
+}
+
+
+/***********************************************************************
+ *           selector access functions
+ */
+__ASM_GLOBAL_FUNC( wine_get_cs, "movw %cs,%ax\n\tret" )
+__ASM_GLOBAL_FUNC( wine_get_ds, "movw %ds,%ax\n\tret" )
+__ASM_GLOBAL_FUNC( wine_get_es, "movw %es,%ax\n\tret" )
+__ASM_GLOBAL_FUNC( wine_get_fs, "movw %fs,%ax\n\tret" )
+__ASM_GLOBAL_FUNC( wine_get_gs, "movw %gs,%ax\n\tret" )
+__ASM_GLOBAL_FUNC( wine_get_ss, "movw %ss,%ax\n\tret" )
+__ASM_GLOBAL_FUNC( wine_set_fs, "movl 4(%esp),%eax\n\tmovw %ax,%fs\n\tret" )
+__ASM_GLOBAL_FUNC( wine_set_gs, "movl 4(%esp),%eax\n\tmovw %ax,%gs\n\tret" )
+
+#endif /* __i386__ */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/loader.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/loader.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/loader.c	(revision 16410)
@@ -0,0 +1,809 @@
+/*
+ * Win32 builtin dlls support
+ *
+ * Copyright 2000 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "wine/port.h"
+
+#include <assert.h>
+#include <ctype.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#ifdef HAVE_SYS_MMAN_H
+#include <sys/mman.h>
+#endif
+#ifdef HAVE_SYS_RESOURCE_H
+# include <sys/resource.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#define NONAMELESSUNION
+#define NONAMELESSSTRUCT
+#include "windef.h"
+#include "winbase.h"
+#include "wine/library.h"
+
+#ifdef __APPLE__
+#include <crt_externs.h>
+#define environ (*_NSGetEnviron())
+#else
+extern char **environ;
+#endif
+
+/* argc/argv for the Windows application */
+int __wine_main_argc = 0;
+char **__wine_main_argv = NULL;
+WCHAR **__wine_main_wargv = NULL;
+char **__wine_main_environ = NULL;
+
+struct dll_path_context
+{
+    unsigned int index; /* current index in the dll path list */
+    char *buffer;       /* buffer used for storing path names */
+    char *name;         /* start of file name part in buffer (including leading slash) */
+    int   namelen;      /* length of file name without .so extension */
+    int   win16;        /* 16-bit dll search */
+};
+
+#define MAX_DLLS 100
+
+static struct
+{
+    const IMAGE_NT_HEADERS *nt;           /* NT header */
+    const char             *filename;     /* DLL file name */
+} builtin_dlls[MAX_DLLS];
+
+static int nb_dlls;
+
+static const IMAGE_NT_HEADERS *main_exe;
+
+static load_dll_callback_t load_dll_callback;
+
+static const char *build_dir;
+static const char *default_dlldir;
+static const char **dll_paths;
+static unsigned int nb_dll_paths;
+static int dll_path_maxlen;
+
+extern void mmap_init(void);
+extern const char *get_dlldir( const char **default_dlldir );
+
+/* build the dll load path from the WINEDLLPATH variable */
+static void build_dll_path(void)
+{
+    int len, count = 0;
+    char *p, *path = getenv( "WINEDLLPATH" );
+    const char *dlldir = get_dlldir( &default_dlldir );
+
+    if (path)
+    {
+        /* count how many path elements we need */
+        path = strdup(path);
+        p = path;
+        while (*p)
+        {
+            while (*p == ':') p++;
+            if (!*p) break;
+            count++;
+            while (*p && *p != ':') p++;
+        }
+    }
+
+    dll_paths = malloc( (count+2) * sizeof(*dll_paths) );
+    nb_dll_paths = 0;
+
+    if (dlldir)
+    {
+        dll_path_maxlen = strlen(dlldir);
+        dll_paths[nb_dll_paths++] = dlldir;
+    }
+    else if ((build_dir = wine_get_build_dir()))
+    {
+        dll_path_maxlen = strlen(build_dir) + sizeof("/programs");
+    }
+
+    if (count)
+    {
+        p = path;
+        while (*p)
+        {
+            while (*p == ':') *p++ = 0;
+            if (!*p) break;
+            dll_paths[nb_dll_paths] = p;
+            while (*p && *p != ':') p++;
+            if (p - dll_paths[nb_dll_paths] > dll_path_maxlen)
+                dll_path_maxlen = p - dll_paths[nb_dll_paths];
+            nb_dll_paths++;
+        }
+    }
+
+    /* append default dll dir (if not empty) to path */
+    if ((len = strlen(default_dlldir)) > 0)
+    {
+        if (len > dll_path_maxlen) dll_path_maxlen = len;
+        dll_paths[nb_dll_paths++] = default_dlldir;
+    }
+}
+
+/* check if a given file can be opened */
+static inline int file_exists( const char *name )
+{
+    int fd = open( name, O_RDONLY );
+    if (fd != -1) close( fd );
+    return (fd != -1);
+}
+
+static inline char *prepend( char *buffer, const char *str, size_t len )
+{
+    return memcpy( buffer - len, str, len );
+}
+
+/* get a filename from the next entry in the dll path */
+static char *next_dll_path( struct dll_path_context *context )
+{
+    unsigned int index = context->index++;
+    int namelen = context->namelen;
+    char *path = context->name;
+
+    switch(index)
+    {
+    case 0:  /* try programs dir for .exe files */
+        if (!context->win16 && namelen > 4 && !memcmp( context->name + namelen - 4, ".exe", 4 ))
+        {
+            path = prepend( path, context->name, namelen - 4 );
+            path = prepend( path, "/programs", sizeof("/programs") - 1 );
+            path = prepend( path, build_dir, strlen(build_dir) );
+            return path;
+        }
+        context->index++;
+        /* fall through */
+    case 1:  /* try dlls dir with subdir prefix */
+        if (namelen > 4 && !memcmp( context->name + namelen - 4, ".dll", 4 )) namelen -= 4;
+        if (!context->win16) path = prepend( path, context->name, namelen );
+        path = prepend( path, "/dlls", sizeof("/dlls") - 1 );
+        path = prepend( path, build_dir, strlen(build_dir) );
+        return path;
+    default:
+        index -= 2;
+        if (index < nb_dll_paths)
+            return prepend( context->name, dll_paths[index], strlen( dll_paths[index] ));
+        break;
+    }
+    return NULL;
+}
+
+
+/* get a filename from the first entry in the dll path */
+static char *first_dll_path( const char *name, int win16, struct dll_path_context *context )
+{
+    char *p;
+    int namelen = strlen( name );
+    const char *ext = win16 ? "16" : ".so";
+
+    context->buffer = malloc( dll_path_maxlen + 2 * namelen + strlen(ext) + 3 );
+    context->index = build_dir ? 0 : 2;  /* if no build dir skip all the build dir magic cases */
+    context->name = context->buffer + dll_path_maxlen + namelen + 1;
+    context->namelen = namelen + 1;
+    context->win16 = win16;
+
+    /* store the name at the end of the buffer, followed by extension */
+    p = context->name;
+    *p++ = '/';
+    memcpy( p, name, namelen );
+    strcpy( p + namelen, ext );
+    return next_dll_path( context );
+}
+
+
+/* free the dll path context created by first_dll_path */
+static inline void free_dll_path( struct dll_path_context *context )
+{
+    free( context->buffer );
+}
+
+
+/* open a library for a given dll, searching in the dll path
+ * 'name' must be the Windows dll name (e.g. "kernel32.dll") */
+static void *dlopen_dll( const char *name, char *error, int errorsize,
+                         int test_only, int *exists )
+{
+    struct dll_path_context context;
+    char *path;
+    void *ret = NULL;
+
+    *exists = 0;
+    for (path = first_dll_path( name, 0, &context ); path; path = next_dll_path( &context ))
+    {
+        if (!test_only && (ret = wine_dlopen( path, RTLD_NOW, error, errorsize ))) break;
+        if ((*exists = file_exists( path ))) break; /* exists but cannot be loaded, return the error */
+    }
+    free_dll_path( &context );
+    return ret;
+}
+
+
+/* adjust an array of pointers to make them into RVAs */
+static inline void fixup_rva_ptrs( void *array, BYTE *base, unsigned int count )
+{
+    void **src = (void **)array;
+    DWORD *dst = (DWORD *)array;
+    while (count--)
+    {
+        *dst++ = *src ? (BYTE *)*src - base : 0;
+        src++;
+    }
+}
+
+/* fixup an array of RVAs by adding the specified delta */
+static inline void fixup_rva_dwords( DWORD *ptr, int delta, unsigned int count )
+{
+    while (count--)
+    {
+        if (*ptr) *ptr += delta;
+        ptr++;
+    }
+}
+
+
+/* fixup RVAs in the import directory */
+static void fixup_imports( IMAGE_IMPORT_DESCRIPTOR *dir, BYTE *base, int delta )
+{
+    UINT_PTR *ptr;
+
+    while (dir->Name)
+    {
+        fixup_rva_dwords( &dir->u.OriginalFirstThunk, delta, 1 );
+        fixup_rva_dwords( &dir->Name, delta, 1 );
+        fixup_rva_dwords( &dir->FirstThunk, delta, 1 );
+        ptr = (UINT_PTR *)(base + (dir->u.OriginalFirstThunk ? dir->u.OriginalFirstThunk : dir->FirstThunk));
+        while (*ptr)
+        {
+            if (!(*ptr & IMAGE_ORDINAL_FLAG)) *ptr += delta;
+            ptr++;
+        }
+        dir++;
+    }
+}
+
+
+/* fixup RVAs in the export directory */
+static void fixup_exports( IMAGE_EXPORT_DIRECTORY *dir, BYTE *base, int delta )
+{
+    fixup_rva_dwords( &dir->Name, delta, 1 );
+    fixup_rva_dwords( &dir->AddressOfFunctions, delta, 1 );
+    fixup_rva_dwords( &dir->AddressOfNames, delta, 1 );
+    fixup_rva_dwords( &dir->AddressOfNameOrdinals, delta, 1 );
+    fixup_rva_dwords( (DWORD *)(base + dir->AddressOfNames), delta, dir->NumberOfNames );
+    fixup_rva_ptrs( (base + dir->AddressOfFunctions), base, dir->NumberOfFunctions );
+}
+
+
+/* fixup RVAs in the resource directory */
+static void fixup_resources( IMAGE_RESOURCE_DIRECTORY *dir, BYTE *root, int delta )
+{
+    IMAGE_RESOURCE_DIRECTORY_ENTRY *entry;
+    int i;
+
+    entry = (IMAGE_RESOURCE_DIRECTORY_ENTRY *)(dir + 1);
+    for (i = 0; i < dir->NumberOfNamedEntries + dir->NumberOfIdEntries; i++, entry++)
+    {
+        void *ptr = root + entry->u2.s3.OffsetToDirectory;
+        if (entry->u2.s3.DataIsDirectory) fixup_resources( ptr, root, delta );
+        else
+        {
+            IMAGE_RESOURCE_DATA_ENTRY *data = ptr;
+            fixup_rva_dwords( &data->OffsetToData, delta, 1 );
+        }
+    }
+}
+
+
+/* map a builtin dll in memory and fixup RVAs */
+static void *map_dll( const IMAGE_NT_HEADERS *nt_descr )
+{
+#ifdef HAVE_MMAP
+    IMAGE_DATA_DIRECTORY *dir;
+    IMAGE_DOS_HEADER *dos;
+    IMAGE_NT_HEADERS *nt;
+    IMAGE_SECTION_HEADER *sec;
+    BYTE *addr;
+    DWORD code_start, data_start, data_end;
+    const size_t page_size = getpagesize();
+    const size_t page_mask = page_size - 1;
+    int delta, nb_sections = 2;  /* code + data */
+    unsigned int i;
+
+    size_t size = (sizeof(IMAGE_DOS_HEADER)
+                   + sizeof(IMAGE_NT_HEADERS)
+                   + nb_sections * sizeof(IMAGE_SECTION_HEADER));
+
+    assert( size <= page_size );
+
+    /* module address must be aligned on 64K boundary */
+    addr = (BYTE *)((nt_descr->OptionalHeader.ImageBase + 0xffff) & ~0xffff);
+    if (wine_anon_mmap( addr, page_size, PROT_READ|PROT_WRITE, MAP_FIXED ) != addr) return NULL;
+
+    dos    = (IMAGE_DOS_HEADER *)addr;
+    nt     = (IMAGE_NT_HEADERS *)(dos + 1);
+    sec    = (IMAGE_SECTION_HEADER *)(nt + 1);
+
+    /* Build the DOS and NT headers */
+
+    dos->e_magic    = IMAGE_DOS_SIGNATURE;
+    dos->e_cblp     = 0x90;
+    dos->e_cp       = 3;
+    dos->e_cparhdr  = (sizeof(*dos)+0xf)/0x10;
+    dos->e_minalloc = 0;
+    dos->e_maxalloc = 0xffff;
+    dos->e_ss       = 0x0000;
+    dos->e_sp       = 0x00b8;
+    dos->e_lfarlc   = sizeof(*dos);
+    dos->e_lfanew   = sizeof(*dos);
+
+    *nt = *nt_descr;
+
+    delta      = (const BYTE *)nt_descr - addr;
+    code_start = page_size;
+    data_start = delta & ~page_mask;
+    data_end   = (nt->OptionalHeader.SizeOfImage + delta + page_mask) & ~page_mask;
+
+    fixup_rva_ptrs( &nt->OptionalHeader.AddressOfEntryPoint, addr, 1 );
+
+    nt->FileHeader.NumberOfSections                = nb_sections;
+    nt->OptionalHeader.BaseOfCode                  = code_start;
+#ifndef _WIN64
+    nt->OptionalHeader.BaseOfData                  = data_start;
+#endif
+    nt->OptionalHeader.SizeOfCode                  = data_start - code_start;
+    nt->OptionalHeader.SizeOfInitializedData       = data_end - data_start;
+    nt->OptionalHeader.SizeOfUninitializedData     = 0;
+    nt->OptionalHeader.SizeOfImage                 = data_end;
+    nt->OptionalHeader.ImageBase                   = (ULONG_PTR)addr;
+
+    /* Build the code section */
+
+    memcpy( sec->Name, ".text", sizeof(".text") );
+    sec->SizeOfRawData = data_start - code_start;
+    sec->Misc.VirtualSize = sec->SizeOfRawData;
+    sec->VirtualAddress   = code_start;
+    sec->PointerToRawData = code_start;
+    sec->Characteristics  = (IMAGE_SCN_CNT_CODE | IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_READ);
+    sec++;
+
+    /* Build the data section */
+
+    memcpy( sec->Name, ".data", sizeof(".data") );
+    sec->SizeOfRawData = data_end - data_start;
+    sec->Misc.VirtualSize = sec->SizeOfRawData;
+    sec->VirtualAddress   = data_start;
+    sec->PointerToRawData = data_start;
+    sec->Characteristics  = (IMAGE_SCN_CNT_INITIALIZED_DATA |
+                             IMAGE_SCN_MEM_WRITE | IMAGE_SCN_MEM_READ);
+    sec++;
+
+    for (i = 0; i < nt->OptionalHeader.NumberOfRvaAndSizes; i++)
+        fixup_rva_dwords( &nt->OptionalHeader.DataDirectory[i].VirtualAddress, delta, 1 );
+
+    /* Build the import directory */
+
+    dir = &nt->OptionalHeader.DataDirectory[IMAGE_FILE_IMPORT_DIRECTORY];
+    if (dir->Size)
+    {
+        IMAGE_IMPORT_DESCRIPTOR *imports = (void *)(addr + dir->VirtualAddress);
+        fixup_imports( imports, addr, delta );
+    }
+
+    /* Build the resource directory */
+
+    dir = &nt->OptionalHeader.DataDirectory[IMAGE_FILE_RESOURCE_DIRECTORY];
+    if (dir->Size)
+    {
+        void *ptr = (void *)(addr + dir->VirtualAddress);
+        fixup_resources( ptr, ptr, delta );
+    }
+
+    /* Build the export directory */
+
+    dir = &nt->OptionalHeader.DataDirectory[IMAGE_FILE_EXPORT_DIRECTORY];
+    if (dir->Size)
+    {
+        IMAGE_EXPORT_DIRECTORY *exports = (void *)(addr + dir->VirtualAddress);
+        fixup_exports( exports, addr, delta );
+    }
+    return addr;
+#else  /* HAVE_MMAP */
+    return NULL;
+#endif  /* HAVE_MMAP */
+}
+
+
+/***********************************************************************
+ *           __wine_dll_register
+ *
+ * Register a built-in DLL descriptor.
+ */
+void __wine_dll_register( const IMAGE_NT_HEADERS *header, const char *filename )
+{
+    if (load_dll_callback) load_dll_callback( map_dll(header), filename );
+    else
+    {
+        if (!(header->FileHeader.Characteristics & IMAGE_FILE_DLL))
+            main_exe = header;
+        else
+        {
+            assert( nb_dlls < MAX_DLLS );
+            builtin_dlls[nb_dlls].nt = header;
+            builtin_dlls[nb_dlls].filename = filename;
+            nb_dlls++;
+        }
+    }
+}
+
+
+/***********************************************************************
+ *           wine_dll_set_callback
+ *
+ * Set the callback function for dll loading, and call it
+ * for all dlls that were implicitly loaded already.
+ */
+void wine_dll_set_callback( load_dll_callback_t load )
+{
+    int i;
+    load_dll_callback = load;
+    for (i = 0; i < nb_dlls; i++)
+    {
+        const IMAGE_NT_HEADERS *nt = builtin_dlls[i].nt;
+        if (!nt) continue;
+        builtin_dlls[i].nt = NULL;
+        load_dll_callback( map_dll(nt), builtin_dlls[i].filename );
+    }
+    nb_dlls = 0;
+    if (main_exe) load_dll_callback( map_dll(main_exe), "" );
+}
+
+
+/***********************************************************************
+ *           wine_dll_load
+ *
+ * Load a builtin dll.
+ */
+void *wine_dll_load( const char *filename, char *error, int errorsize, int *file_exists )
+{
+    int i;
+
+    /* callback must have been set already */
+    assert( load_dll_callback );
+
+    /* check if we have it in the list */
+    /* this can happen when initializing pre-loaded dlls in wine_dll_set_callback */
+    for (i = 0; i < nb_dlls; i++)
+    {
+        if (!builtin_dlls[i].nt) continue;
+        if (!strcmp( builtin_dlls[i].filename, filename ))
+        {
+            const IMAGE_NT_HEADERS *nt = builtin_dlls[i].nt;
+            builtin_dlls[i].nt = NULL;
+            load_dll_callback( map_dll(nt), builtin_dlls[i].filename );
+            *file_exists = 1;
+            return (void *)1;
+        }
+    }
+    return dlopen_dll( filename, error, errorsize, 0, file_exists );
+}
+
+
+/***********************************************************************
+ *           wine_dll_unload
+ *
+ * Unload a builtin dll.
+ */
+void wine_dll_unload( void *handle )
+{
+    if (handle != (void *)1)
+	wine_dlclose( handle, NULL, 0 );
+}
+
+
+/***********************************************************************
+ *           wine_dll_load_main_exe
+ *
+ * Try to load the .so for the main exe.
+ */
+void *wine_dll_load_main_exe( const char *name, char *error, int errorsize,
+                              int test_only, int *file_exists )
+{
+    return dlopen_dll( name, error, errorsize, test_only, file_exists );
+}
+
+
+/***********************************************************************
+ *           wine_dll_enum_load_path
+ *
+ * Enumerate the dll load path.
+ */
+const char *wine_dll_enum_load_path( unsigned int index )
+{
+    if (index >= nb_dll_paths) return NULL;
+    return dll_paths[index];
+}
+
+
+/***********************************************************************
+ *           wine_dll_get_owner
+ *
+ * Retrieve the name of the 32-bit owner dll for a 16-bit dll.
+ * Return 0 if OK, -1 on error.
+ */
+int wine_dll_get_owner( const char *name, char *buffer, int size, int *exists )
+{
+    int ret = -1;
+    char *path;
+    struct dll_path_context context;
+
+    *exists = 0;
+
+    for (path = first_dll_path( name, 1, &context ); path; path = next_dll_path( &context ))
+    {
+        int fd = open( path, O_RDONLY );
+        if (fd != -1)
+        {
+            int res = read( fd, buffer, size - 1 );
+            while (res > 0 && (buffer[res-1] == '\n' || buffer[res-1] == '\r')) res--;
+            buffer[res] = 0;
+            close( fd );
+            *exists = 1;
+            ret = 0;
+            break;
+        }
+    }
+    free_dll_path( &context );
+    return ret;
+}
+
+
+/***********************************************************************
+ *           set_max_limit
+ *
+ * Set a user limit to the maximum allowed value.
+ */
+static void set_max_limit( int limit )
+{
+#ifdef HAVE_SETRLIMIT
+    struct rlimit rlimit;
+
+    if (!getrlimit( limit, &rlimit ))
+    {
+        rlimit.rlim_cur = rlimit.rlim_max;
+        if (setrlimit( limit, &rlimit ) != 0)
+        {
+#if defined(__APPLE__) && defined(RLIMIT_NOFILE) && defined(OPEN_MAX)
+            /* On Leopard, setrlimit(RLIMIT_NOFILE, ...) fails on attempts to set
+             * rlim_cur above OPEN_MAX (even if rlim_max > OPEN_MAX). */
+            if (limit == RLIMIT_NOFILE && rlimit.rlim_cur > OPEN_MAX)
+            {
+                rlimit.rlim_cur = OPEN_MAX;
+                setrlimit( limit, &rlimit );
+            }
+#endif
+        }
+    }
+#endif
+}
+
+
+/***********************************************************************
+ *           wine_init
+ *
+ * Main Wine initialisation.
+ */
+void wine_init( int argc, char *argv[], char *error, int error_size )
+{
+    struct dll_path_context context;
+    char *path;
+    void *ntdll = NULL;
+    void (*init_func)(void);
+
+    /* force a few limits that are set too low on some platforms */
+#ifdef RLIMIT_NOFILE
+    set_max_limit( RLIMIT_NOFILE );
+#endif
+#ifdef RLIMIT_AS
+    set_max_limit( RLIMIT_AS );
+#endif
+
+    wine_init_argv0_path( argv[0] );
+    build_dll_path();
+    __wine_main_argc = argc;
+    __wine_main_argv = argv;
+    __wine_main_environ = environ;
+    mmap_init();
+
+    for (path = first_dll_path( "ntdll.dll", 0, &context ); path; path = next_dll_path( &context ))
+    {
+        if ((ntdll = wine_dlopen( path, RTLD_NOW, error, error_size )))
+        {
+            /* if we didn't use the default dll dir, remove it from the search path */
+            if (default_dlldir[0] && context.index < nb_dll_paths + 2) nb_dll_paths--;
+            break;
+        }
+    }
+    free_dll_path( &context );
+
+    if (!ntdll) return;
+    if (!(init_func = wine_dlsym( ntdll, "__wine_process_init", error, error_size ))) return;
+    init_func();
+}
+
+
+/*
+ * These functions provide wrappers around dlopen() and associated
+ * functions.  They work around a bug in glibc 2.1.x where calling
+ * a dl*() function after a previous dl*() function has failed
+ * without a dlerror() call between the two will cause a crash.
+ * They all take a pointer to a buffer that
+ * will receive the error description (from dlerror()).  This
+ * parameter may be NULL if the error description is not required.
+ */
+
+#ifndef RTLD_FIRST
+#define RTLD_FIRST 0
+#endif
+
+/***********************************************************************
+ *		wine_dlopen
+ */
+void *wine_dlopen( const char *filename, int flag, char *error, size_t errorsize )
+{
+#ifdef HAVE_DLOPEN
+    void *ret;
+    const char *s;
+
+#ifdef __APPLE__
+    /* the Mac OS loader pretends to be able to load PE files, so avoid them here */
+    unsigned char magic[2];
+    int fd = open( filename, O_RDONLY );
+    if (fd != -1)
+    {
+        if (pread( fd, magic, 2, 0 ) == 2 && magic[0] == 'M' && magic[1] == 'Z')
+        {
+            static const char msg[] = "MZ format";
+            size_t len = min( errorsize, sizeof(msg) );
+            memcpy( error, msg, len );
+            error[len - 1] = 0;
+            close( fd );
+            return NULL;
+        }
+        close( fd );
+    }
+#endif
+    dlerror(); dlerror();
+#ifdef __sun
+    if (strchr( filename, ':' ))
+    {
+        char path[PATH_MAX];
+        /* Solaris' brain damaged dlopen() treats ':' as a path separator */
+        realpath( filename, path );
+        ret = dlopen( path, flag | RTLD_FIRST );
+    }
+    else
+#endif
+    ret = dlopen( filename, flag | RTLD_FIRST );
+    s = dlerror();
+    if (error && errorsize)
+    {
+        if (s)
+        {
+            size_t len = strlen(s);
+            if (len >= errorsize) len = errorsize - 1;
+            memcpy( error, s, len );
+            error[len] = 0;
+        }
+        else error[0] = 0;
+    }
+    dlerror();
+    return ret;
+#else
+    if (error)
+    {
+        static const char msg[] = "dlopen interface not detected by configure";
+        size_t len = min( errorsize, sizeof(msg) );
+        memcpy( error, msg, len );
+        error[len - 1] = 0;
+    }
+    return NULL;
+#endif
+}
+
+/***********************************************************************
+ *		wine_dlsym
+ */
+void *wine_dlsym( void *handle, const char *symbol, char *error, size_t errorsize )
+{
+#ifdef HAVE_DLOPEN
+    void *ret;
+    const char *s;
+    dlerror(); dlerror();
+    ret = dlsym( handle, symbol );
+    s = dlerror();
+    if (error && errorsize)
+    {
+        if (s)
+        {
+            size_t len = strlen(s);
+            if (len >= errorsize) len = errorsize - 1;
+            memcpy( error, s, len );
+            error[len] = 0;
+        }
+        else error[0] = 0;
+    }
+    dlerror();
+    return ret;
+#else
+    if (error)
+    {
+        static const char msg[] = "dlopen interface not detected by configure";
+        size_t len = min( errorsize, sizeof(msg) );
+        memcpy( error, msg, len );
+        error[len - 1] = 0;
+    }
+    return NULL;
+#endif
+}
+
+/***********************************************************************
+ *		wine_dlclose
+ */
+int wine_dlclose( void *handle, char *error, size_t errorsize )
+{
+#ifdef HAVE_DLOPEN
+    int ret;
+    const char *s;
+    dlerror(); dlerror();
+    ret = dlclose( handle );
+    s = dlerror();
+    if (error && errorsize)
+    {
+        if (s)
+        {
+            size_t len = strlen(s);
+            if (len >= errorsize) len = errorsize - 1;
+            memcpy( error, s, len );
+            error[len] = 0;
+        }
+        else error[0] = 0;
+    }
+    dlerror();
+    return ret;
+#else
+    if (error)
+    {
+        static const char msg[] = "dlopen interface not detected by configure";
+        size_t len = min( errorsize, sizeof(msg) );
+        memcpy( error, msg, len );
+        error[len - 1] = 0;
+    }
+    return 1;
+#endif
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/mbtowc.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/mbtowc.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/mbtowc.c	(revision 16410)
@@ -0,0 +1,300 @@
+/*
+ * MultiByteToWideChar implementation
+ *
+ * Copyright 2000 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <string.h>
+
+#include "wine/unicode.h"
+
+/* get the decomposition of a Unicode char */
+static int get_decomposition( WCHAR src, WCHAR *dst, unsigned int dstlen )
+{
+    extern const WCHAR unicode_decompose_table[];
+    const WCHAR *ptr = unicode_decompose_table;
+    int res;
+
+    *dst = src;
+    ptr = unicode_decompose_table + ptr[src >> 8];
+    ptr = unicode_decompose_table + ptr[(src >> 4) & 0x0f] + 2 * (src & 0x0f);
+    if (!*ptr) return 1;
+    if (dstlen <= 1) return 0;
+    /* apply the decomposition recursively to the first char */
+    if ((res = get_decomposition( *ptr, dst, dstlen-1 ))) dst[res++] = ptr[1];
+    return res;
+}
+
+/* check src string for invalid chars; return non-zero if invalid char found */
+static inline int check_invalid_chars_sbcs( const struct sbcs_table *table, int flags,
+                                            const unsigned char *src, unsigned int srclen )
+{
+    const WCHAR * const cp2uni = (flags & MB_USEGLYPHCHARS) ? table->cp2uni_glyphs : table->cp2uni;
+    while (srclen)
+    {
+        if (cp2uni[*src] == table->info.def_unicode_char && *src != table->info.def_char)
+            break;
+        src++;
+        srclen--;
+    }
+    return srclen;
+}
+
+/* mbstowcs for single-byte code page */
+/* all lengths are in characters, not bytes */
+static inline int mbstowcs_sbcs( const struct sbcs_table *table, int flags,
+                                 const unsigned char *src, unsigned int srclen,
+                                 WCHAR *dst, unsigned int dstlen )
+{
+    const WCHAR * const cp2uni = (flags & MB_USEGLYPHCHARS) ? table->cp2uni_glyphs : table->cp2uni;
+    int ret = srclen;
+
+    if (dstlen < srclen)
+    {
+        /* buffer too small: fill it up to dstlen and return error */
+        srclen = dstlen;
+        ret = -1;
+    }
+
+    for (;;)
+    {
+        switch(srclen)
+        {
+        default:
+        case 16: dst[15] = cp2uni[src[15]];
+        case 15: dst[14] = cp2uni[src[14]];
+        case 14: dst[13] = cp2uni[src[13]];
+        case 13: dst[12] = cp2uni[src[12]];
+        case 12: dst[11] = cp2uni[src[11]];
+        case 11: dst[10] = cp2uni[src[10]];
+        case 10: dst[9]  = cp2uni[src[9]];
+        case 9:  dst[8]  = cp2uni[src[8]];
+        case 8:  dst[7]  = cp2uni[src[7]];
+        case 7:  dst[6]  = cp2uni[src[6]];
+        case 6:  dst[5]  = cp2uni[src[5]];
+        case 5:  dst[4]  = cp2uni[src[4]];
+        case 4:  dst[3]  = cp2uni[src[3]];
+        case 3:  dst[2]  = cp2uni[src[2]];
+        case 2:  dst[1]  = cp2uni[src[1]];
+        case 1:  dst[0]  = cp2uni[src[0]];
+        case 0: break;
+        }
+        if (srclen < 16) return ret;
+        dst += 16;
+        src += 16;
+        srclen -= 16;
+    }
+}
+
+/* mbstowcs for single-byte code page with char decomposition */
+static int mbstowcs_sbcs_decompose( const struct sbcs_table *table, int flags,
+                                    const unsigned char *src, unsigned int srclen,
+                                    WCHAR *dst, unsigned int dstlen )
+{
+    const WCHAR * const cp2uni = (flags & MB_USEGLYPHCHARS) ? table->cp2uni_glyphs : table->cp2uni;
+    unsigned int len;
+
+    if (!dstlen)  /* compute length */
+    {
+        WCHAR dummy[4]; /* no decomposition is larger than 4 chars */
+        for (len = 0; srclen; srclen--, src++)
+            len += get_decomposition( cp2uni[*src], dummy, 4 );
+        return len;
+    }
+
+    for (len = dstlen; srclen && len; srclen--, src++)
+    {
+        int res = get_decomposition( cp2uni[*src], dst, len );
+        if (!res) break;
+        len -= res;
+        dst += res;
+    }
+    if (srclen) return -1;  /* overflow */
+    return dstlen - len;
+}
+
+/* query necessary dst length for src string */
+static inline int get_length_dbcs( const struct dbcs_table *table,
+                                   const unsigned char *src, unsigned int srclen )
+{
+    const unsigned char * const cp2uni_lb = table->cp2uni_leadbytes;
+    int len;
+
+    for (len = 0; srclen; srclen--, src++, len++)
+    {
+        if (cp2uni_lb[*src])
+        {
+            if (!--srclen) break;  /* partial char, ignore it */
+            src++;
+        }
+    }
+    return len;
+}
+
+/* check src string for invalid chars; return non-zero if invalid char found */
+static inline int check_invalid_chars_dbcs( const struct dbcs_table *table,
+                                            const unsigned char *src, unsigned int srclen )
+{
+    const WCHAR * const cp2uni = table->cp2uni;
+    const unsigned char * const cp2uni_lb = table->cp2uni_leadbytes;
+
+    while (srclen)
+    {
+        unsigned char off = cp2uni_lb[*src];
+        if (off)  /* multi-byte char */
+        {
+            if (srclen == 1) break;  /* partial char, error */
+            if (cp2uni[(off << 8) + src[1]] == table->info.def_unicode_char &&
+                ((src[0] << 8) | src[1]) != table->info.def_char) break;
+            src++;
+            srclen--;
+        }
+        else if (cp2uni[*src] == table->info.def_unicode_char &&
+                 *src != table->info.def_char) break;
+        src++;
+        srclen--;
+    }
+    return srclen;
+}
+
+/* mbstowcs for double-byte code page */
+/* all lengths are in characters, not bytes */
+static inline int mbstowcs_dbcs( const struct dbcs_table *table,
+                                 const unsigned char *src, unsigned int srclen,
+                                 WCHAR *dst, unsigned int dstlen )
+{
+    const WCHAR * const cp2uni = table->cp2uni;
+    const unsigned char * const cp2uni_lb = table->cp2uni_leadbytes;
+    unsigned int len;
+
+    if (!dstlen) return get_length_dbcs( table, src, srclen );
+
+    for (len = dstlen; srclen && len; len--, srclen--, src++, dst++)
+    {
+        unsigned char off = cp2uni_lb[*src];
+        if (off)
+        {
+            if (!--srclen) break;  /* partial char, ignore it */
+            src++;
+            *dst = cp2uni[(off << 8) + *src];
+        }
+        else *dst = cp2uni[*src];
+    }
+    if (srclen) return -1;  /* overflow */
+    return dstlen - len;
+}
+
+
+/* mbstowcs for double-byte code page with character decomposition */
+static int mbstowcs_dbcs_decompose( const struct dbcs_table *table,
+                                    const unsigned char *src, unsigned int srclen,
+                                    WCHAR *dst, unsigned int dstlen )
+{
+    const WCHAR * const cp2uni = table->cp2uni;
+    const unsigned char * const cp2uni_lb = table->cp2uni_leadbytes;
+    unsigned int len;
+    WCHAR ch;
+    int res;
+
+    if (!dstlen)  /* compute length */
+    {
+        WCHAR dummy[4]; /* no decomposition is larger than 4 chars */
+        for (len = 0; srclen; srclen--, src++)
+        {
+            unsigned char off = cp2uni_lb[*src];
+            if (off)
+            {
+                if (!--srclen) break;  /* partial char, ignore it */
+                src++;
+                ch = cp2uni[(off << 8) + *src];
+            }
+            else ch = cp2uni[*src];
+            len += get_decomposition( ch, dummy, 4 );
+        }
+        return len;
+    }
+
+    for (len = dstlen; srclen && len; srclen--, src++)
+    {
+        unsigned char off = cp2uni_lb[*src];
+        if (off)
+        {
+            if (!--srclen) break;  /* partial char, ignore it */
+            src++;
+            ch = cp2uni[(off << 8) + *src];
+        }
+        else ch = cp2uni[*src];
+        if (!(res = get_decomposition( ch, dst, len ))) break;
+        dst += res;
+        len -= res;
+    }
+    if (srclen) return -1;  /* overflow */
+    return dstlen - len;
+}
+
+
+/* return -1 on dst buffer overflow, -2 on invalid input char */
+int wine_cp_mbstowcs( const union cptable *table, int flags,
+                      const char *s, int srclen,
+                      WCHAR *dst, int dstlen )
+{
+    const unsigned char *src = (const unsigned char*) s;
+
+    if (table->info.char_size == 1)
+    {
+        if (flags & MB_ERR_INVALID_CHARS)
+        {
+            if (check_invalid_chars_sbcs( &table->sbcs, flags, src, srclen )) return -2;
+        }
+        if (!(flags & MB_COMPOSITE))
+        {
+            if (!dstlen) return srclen;
+            return mbstowcs_sbcs( &table->sbcs, flags, src, srclen, dst, dstlen );
+        }
+        return mbstowcs_sbcs_decompose( &table->sbcs, flags, src, srclen, dst, dstlen );
+    }
+    else /* mbcs */
+    {
+        if (flags & MB_ERR_INVALID_CHARS)
+        {
+            if (check_invalid_chars_dbcs( &table->dbcs, src, srclen )) return -2;
+        }
+        if (!(flags & MB_COMPOSITE))
+            return mbstowcs_dbcs( &table->dbcs, src, srclen, dst, dstlen );
+        else
+            return mbstowcs_dbcs_decompose( &table->dbcs, src, srclen, dst, dstlen );
+    }
+}
+
+/* CP_SYMBOL implementation */
+/* return -1 on dst buffer overflow */
+int wine_cpsymbol_mbstowcs( const char *src, int srclen, WCHAR *dst, int dstlen)
+{
+    int len, i;
+    if( dstlen == 0) return srclen;
+    len = dstlen > srclen ? srclen : dstlen;
+    for( i = 0; i < len; i++)
+    {
+        unsigned char c = src [ i ];
+        if( c < 0x20 )
+            dst[i] = c;
+        else
+            dst[i] = c + 0xf000;
+    }
+    if( srclen > len) return -1;
+    return len;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/mmap.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/mmap.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/mmap.c	(revision 16410)
@@ -0,0 +1,604 @@
+/*
+ * Wine memory mappings support
+ *
+ * Copyright 2000, 2004 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "wine/port.h"
+
+#include <assert.h>
+#include <ctype.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#ifdef HAVE_SYS_MMAN_H
+#include <sys/mman.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+
+#include "wine/library.h"
+#include "wine/list.h"
+
+struct reserved_area
+{
+    struct list entry;
+    void       *base;
+    size_t      size;
+};
+
+static struct list reserved_areas = LIST_INIT(reserved_areas);
+static const unsigned int granularity_mask = 0xffff;  /* reserved areas have 64k granularity */
+
+#ifdef HAVE_MMAP
+
+#ifndef MAP_NORESERVE
+#define MAP_NORESERVE 0
+#endif
+#ifndef MAP_PRIVATE
+#define MAP_PRIVATE 0
+#endif
+#ifndef MAP_ANON
+#define MAP_ANON 0
+#endif
+
+static inline int get_fdzero(void)
+{
+    static int fd = -1;
+
+    if (MAP_ANON == 0 && fd == -1)
+    {
+        if ((fd = open( "/dev/zero", O_RDONLY )) == -1)
+        {
+            perror( "/dev/zero: open" );
+            exit(1);
+        }
+    }
+    return fd;
+}
+
+#if (defined(__svr4__) || defined(__NetBSD__)) && !defined(MAP_TRYFIXED)
+/***********************************************************************
+ *             try_mmap_fixed
+ *
+ * The purpose of this routine is to emulate the behaviour of
+ * the Linux mmap() routine if a non-NULL address is passed,
+ * but the MAP_FIXED flag is not set.  Linux in this case tries
+ * to place the mapping at the specified address, *unless* the
+ * range is already in use.  Solaris, however, completely ignores
+ * the address argument in this case.
+ *
+ * As Wine code occasionally relies on the Linux behaviour, e.g. to
+ * be able to map non-relocatable PE executables to their proper
+ * start addresses, or to map the DOS memory to 0, this routine
+ * emulates the Linux behaviour by checking whether the desired
+ * address range is still available, and placing the mapping there
+ * using MAP_FIXED if so.
+ */
+static int try_mmap_fixed (void *addr, size_t len, int prot, int flags,
+                           int fildes, off_t off)
+{
+    char * volatile result = NULL;
+    int pagesize = getpagesize();
+    pid_t pid;
+
+    /* We only try to map to a fixed address if
+       addr is non-NULL and properly aligned,
+       and MAP_FIXED isn't already specified. */
+
+    if ( !addr )
+        return 0;
+    if ( (uintptr_t)addr & (pagesize-1) )
+        return 0;
+    if ( flags & MAP_FIXED )
+        return 0;
+
+    /* We use vfork() to freeze all threads of the
+       current process.  This allows us to check without
+       race condition whether the desired memory range is
+       already in use.  Note that because vfork() shares
+       the address spaces between parent and child, we
+       can actually perform the mapping in the child. */
+
+    if ( (pid = vfork()) == -1 )
+    {
+        perror("try_mmap_fixed: vfork");
+        exit(1);
+    }
+    if ( pid == 0 )
+    {
+        int i;
+        char vec;
+
+        /* We call mincore() for every page in the desired range.
+           If any of these calls succeeds, the page is already
+           mapped and we must fail. */
+        for ( i = 0; i < len; i += pagesize )
+            if ( mincore( (caddr_t)addr + i, pagesize, &vec ) != -1 )
+               _exit(1);
+
+        /* Perform the mapping with MAP_FIXED set.  This is safe
+           now, as none of the pages is currently in use. */
+        result = mmap( addr, len, prot, flags | MAP_FIXED, fildes, off );
+        if ( result == addr )
+            _exit(0);
+
+        if ( result != (void *) -1 ) /* This should never happen ... */
+            munmap( result, len );
+
+       _exit(1);
+    }
+
+    /* vfork() lets the parent continue only after the child
+       has exited.  Furthermore, Wine sets SIGCHLD to SIG_IGN,
+       so we don't need to wait for the child. */
+
+    return result == addr;
+}
+
+#elif defined(__APPLE__)
+
+#include <mach/mach_init.h>
+#include <mach/vm_map.h>
+
+/*
+ * On Darwin, we can use the Mach call vm_allocate to allocate
+ * anonymous memory at the specified address, and then use mmap with
+ * MAP_FIXED to replace the mapping.
+ */
+static int try_mmap_fixed (void *addr, size_t len, int prot, int flags,
+                           int fildes, off_t off)
+{
+    vm_address_t result = (vm_address_t)addr;
+
+    if (!vm_allocate(mach_task_self(),&result,len,0))
+    {
+        if (mmap( (void *)result, len, prot, flags | MAP_FIXED, fildes, off ) != MAP_FAILED)
+            return 1;
+        vm_deallocate(mach_task_self(),result,len);
+    }
+    return 0;
+}
+
+#endif  /* (__svr4__ || __NetBSD__) && !MAP_TRYFIXED */
+
+
+/***********************************************************************
+ *		wine_anon_mmap
+ *
+ * Portable wrapper for anonymous mmaps
+ */
+void *wine_anon_mmap( void *start, size_t size, int prot, int flags )
+{
+#ifdef MAP_SHARED
+    flags &= ~MAP_SHARED;
+#endif
+
+    /* Linux EINVAL's on us if we don't pass MAP_PRIVATE to an anon mmap */
+    flags |= MAP_PRIVATE | MAP_ANON;
+
+    if (!(flags & MAP_FIXED))
+    {
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+        /* Even FreeBSD 5.3 does not properly support NULL here. */
+        if( start == NULL ) start = (void *)0x110000;
+#endif
+
+#ifdef MAP_TRYFIXED
+        /* If available, this will attempt a fixed mapping in-kernel */
+        flags |= MAP_TRYFIXED;
+#elif defined(__svr4__) || defined(__NetBSD__) || defined(__APPLE__)
+        if ( try_mmap_fixed( start, size, prot, flags, get_fdzero(), 0 ) )
+            return start;
+#endif
+    }
+    return mmap( start, size, prot, flags, get_fdzero(), 0 );
+}
+
+
+/***********************************************************************
+ *		mmap_reserve
+ *
+ * mmap wrapper used for reservations, only maps the specified address
+ */
+static inline int mmap_reserve( void *addr, size_t size )
+{
+    void *ptr;
+    int flags = MAP_PRIVATE | MAP_ANON | MAP_NORESERVE;
+
+#ifdef MAP_TRYFIXED
+    flags |= MAP_TRYFIXED;
+#elif defined(__APPLE__)
+    return try_mmap_fixed( addr, size, PROT_NONE, flags, get_fdzero(), 0 );
+#endif
+    ptr = mmap( addr, size, PROT_NONE, flags, get_fdzero(), 0 );
+    if (ptr != addr && ptr != (void *)-1)  munmap( ptr, size );
+    return (ptr == addr);
+}
+
+
+/***********************************************************************
+ *           reserve_area
+ *
+ * Reserve as much memory as possible in the given area.
+ */
+#if defined(__i386__) && !defined(__FreeBSD__) && !defined(__FreeBSD_kernel__)  /* commented out until FreeBSD gets fixed */
+static void reserve_area( void *addr, void *end )
+{
+    size_t size = (char *)end - (char *)addr;
+
+#if (defined(__svr4__) || defined(__NetBSD__)) && !defined(MAP_TRYFIXED)
+    /* try_mmap_fixed is inefficient when using vfork, so we need a different algorithm here */
+    /* we assume no other thread is running at this point */
+    size_t i, pagesize = getpagesize();
+    char vec;
+
+    while (size)
+    {
+        for (i = 0; i < size; i += pagesize)
+            if (mincore( (caddr_t)addr + i, pagesize, &vec ) != -1) break;
+
+        i &= ~granularity_mask;
+        if (i && mmap( addr, i, PROT_NONE, MAP_FIXED | MAP_PRIVATE | MAP_ANON | MAP_NORESERVE,
+                       get_fdzero(), 0 ) != (void *)-1)
+            wine_mmap_add_reserved_area( addr, i );
+
+        i += granularity_mask + 1;
+        if ((char *)addr + i < (char *)addr) break;  /* overflow */
+        addr = (char *)addr + i;
+        if (addr >= end) break;
+        size = (char *)end - (char *)addr;
+    }
+#else
+    if (!size) return;
+
+    if (mmap_reserve( addr, size ))
+    {
+        wine_mmap_add_reserved_area( addr, size );
+        return;
+    }
+    if (size > granularity_mask + 1)
+    {
+        size_t new_size = (size / 2) & ~granularity_mask;
+        reserve_area( addr, (char *)addr + new_size );
+        reserve_area( (char *)addr + new_size, end );
+    }
+#endif
+}
+
+
+/***********************************************************************
+ *           reserve_malloc_space
+ *
+ * Solaris malloc is not smart enough to obtain space through mmap(), so try to make
+ * sure that there is some available sbrk() space before we reserve other things.
+ */
+static void reserve_malloc_space( size_t size )
+{
+#ifdef __sun
+    size_t i, count = size / 1024;
+    void **ptrs = malloc( count * sizeof(ptrs[0]) );
+
+    if (!ptrs) return;
+
+    for (i = 0; i < count; i++) if (!(ptrs[i] = malloc( 1024 ))) break;
+    if (i--)  /* free everything except the last one */
+        while (i) free( ptrs[--i] );
+    free( ptrs );
+#endif
+}
+
+#endif  /* __i386__ */
+
+
+/***********************************************************************
+ *           reserve_dos_area
+ *
+ * Reserve the DOS area (0x00000000-0x00110000).
+ */
+static void reserve_dos_area(void)
+{
+    const size_t page_size = getpagesize();
+    const size_t dos_area_size = 0x110000;
+    void *ptr;
+
+    /* first page has to be handled specially */
+    ptr = wine_anon_mmap( (void *)page_size, dos_area_size - page_size, PROT_NONE, MAP_NORESERVE );
+    if (ptr != (void *)page_size)
+    {
+        if (ptr != (void *)-1) munmap( ptr, dos_area_size - page_size );
+        return;
+    }
+    /* now add first page with MAP_FIXED */
+    wine_anon_mmap( NULL, page_size, PROT_NONE, MAP_NORESERVE|MAP_FIXED );
+    wine_mmap_add_reserved_area( NULL, dos_area_size );
+}
+
+
+/***********************************************************************
+ *           mmap_init
+ */
+void mmap_init(void)
+{
+    struct reserved_area *area;
+    struct list *ptr;
+#if defined(__i386__) && !defined(__FreeBSD__) && !defined(__FreeBSD_kernel__)  /* commented out until FreeBSD gets fixed */
+    char stack;
+    char * const stack_ptr = &stack;
+    char *user_space_limit = (char *)0x7ffe0000;
+
+    reserve_malloc_space( 8 * 1024 * 1024 );
+
+    /* check for a reserved area starting at the user space limit */
+    /* to avoid wasting time trying to allocate it again */
+    LIST_FOR_EACH( ptr, &reserved_areas )
+    {
+        area = LIST_ENTRY( ptr, struct reserved_area, entry );
+        if ((char *)area->base > user_space_limit) break;
+        if ((char *)area->base + area->size > user_space_limit)
+        {
+            user_space_limit = (char *)area->base + area->size;
+            break;
+        }
+    }
+
+    if (stack_ptr >= user_space_limit)
+    {
+        char *end = 0;
+        char *base = stack_ptr - ((unsigned int)stack_ptr & granularity_mask) - (granularity_mask + 1);
+        if (base > user_space_limit) reserve_area( user_space_limit, base );
+        base = stack_ptr - ((unsigned int)stack_ptr & granularity_mask) + (granularity_mask + 1);
+#ifdef linux
+        /* Linux heuristic: assume the stack is near the end of the address */
+        /* space, this avoids a lot of futile allocation attempts */
+        end = (char *)(((unsigned long)base + 0x0fffffff) & 0xf0000000);
+#endif
+        reserve_area( base, end );
+    }
+    else reserve_area( user_space_limit, 0 );
+#endif /* __i386__ */
+
+    /* reserve the DOS area if not already done */
+
+    ptr = list_head( &reserved_areas );
+    if (ptr)
+    {
+        area = LIST_ENTRY( ptr, struct reserved_area, entry );
+        if (!area->base) return;  /* already reserved */
+    }
+    reserve_dos_area();
+}
+
+#else /* HAVE_MMAP */
+
+void *wine_anon_mmap( void *start, size_t size, int prot, int flags )
+{
+    return (void *)-1;
+}
+
+static inline int munmap( void *ptr, size_t size )
+{
+    return 0;
+}
+
+void mmap_init(void)
+{
+}
+
+#endif
+
+/***********************************************************************
+ *           wine_mmap_add_reserved_area
+ *
+ * Add an address range to the list of reserved areas.
+ * Caller must have made sure the range is not used by anything else.
+ *
+ * Note: the reserved areas functions are not reentrant, caller is
+ * responsible for proper locking.
+ */
+void wine_mmap_add_reserved_area( void *addr, size_t size )
+{
+    struct reserved_area *area;
+    struct list *ptr;
+
+    if (!((char *)addr + size)) size--;  /* avoid wrap-around */
+
+    LIST_FOR_EACH( ptr, &reserved_areas )
+    {
+        area = LIST_ENTRY( ptr, struct reserved_area, entry );
+        if (area->base > addr)
+        {
+            /* try to merge with the next one */
+            if ((char *)addr + size == (char *)area->base)
+            {
+                area->base = addr;
+                area->size += size;
+                return;
+            }
+            break;
+        }
+        else if ((char *)area->base + area->size == (char *)addr)
+        {
+            /* merge with the previous one */
+            area->size += size;
+
+            /* try to merge with the next one too */
+            if ((ptr = list_next( &reserved_areas, ptr )))
+            {
+                struct reserved_area *next = LIST_ENTRY( ptr, struct reserved_area, entry );
+                if ((char *)addr + size == (char *)next->base)
+                {
+                    area->size += next->size;
+                    list_remove( &next->entry );
+                    free( next );
+                }
+            }
+            return;
+        }
+    }
+
+    if ((area = malloc( sizeof(*area) )))
+    {
+        area->base = addr;
+        area->size = size;
+        list_add_before( ptr, &area->entry );
+    }
+}
+
+
+/***********************************************************************
+ *           wine_mmap_remove_reserved_area
+ *
+ * Remove an address range from the list of reserved areas.
+ * If 'unmap' is non-zero the range is unmapped too.
+ *
+ * Note: the reserved areas functions are not reentrant, caller is
+ * responsible for proper locking.
+ */
+void wine_mmap_remove_reserved_area( void *addr, size_t size, int unmap )
+{
+    struct reserved_area *area;
+    struct list *ptr;
+
+    if (!((char *)addr + size)) size--;  /* avoid wrap-around */
+
+    ptr = list_head( &reserved_areas );
+    /* find the first area covering address */
+    while (ptr)
+    {
+        area = LIST_ENTRY( ptr, struct reserved_area, entry );
+        if ((char *)area->base >= (char *)addr + size) break;  /* outside the range */
+        if ((char *)area->base + area->size > (char *)addr)  /* overlaps range */
+        {
+            if (area->base >= addr)
+            {
+                if ((char *)area->base + area->size > (char *)addr + size)
+                {
+                    /* range overlaps beginning of area only -> shrink area */
+                    if (unmap) munmap( area->base, (char *)addr + size - (char *)area->base );
+                    area->size -= (char *)addr + size - (char *)area->base;
+                    area->base = (char *)addr + size;
+                    break;
+                }
+                else
+                {
+                    /* range contains the whole area -> remove area completely */
+                    ptr = list_next( &reserved_areas, ptr );
+                    if (unmap) munmap( area->base, area->size );
+                    list_remove( &area->entry );
+                    free( area );
+                    continue;
+                }
+            }
+            else
+            {
+                if ((char *)area->base + area->size > (char *)addr + size)
+                {
+                    /* range is in the middle of area -> split area in two */
+                    struct reserved_area *new_area = malloc( sizeof(*new_area) );
+                    if (new_area)
+                    {
+                        new_area->base = (char *)addr + size;
+                        new_area->size = (char *)area->base + area->size - (char *)new_area->base;
+                        list_add_after( ptr, &new_area->entry );
+                    }
+                    else size = (char *)area->base + area->size - (char *)addr;
+                    area->size = (char *)addr - (char *)area->base;
+                    if (unmap) munmap( addr, size );
+                    break;
+                }
+                else
+                {
+                    /* range overlaps end of area only -> shrink area */
+                    if (unmap) munmap( addr, (char *)area->base + area->size - (char *)addr );
+                    area->size = (char *)addr - (char *)area->base;
+                }
+            }
+        }
+        ptr = list_next( &reserved_areas, ptr );
+    }
+}
+
+
+/***********************************************************************
+ *           wine_mmap_is_in_reserved_area
+ *
+ * Check if the specified range is included in a reserved area.
+ * Returns 1 if range is fully included, 0 if range is not included
+ * at all, and -1 if it is only partially included.
+ *
+ * Note: the reserved areas functions are not reentrant, caller is
+ * responsible for proper locking.
+ */
+int wine_mmap_is_in_reserved_area( void *addr, size_t size )
+{
+    struct reserved_area *area;
+    struct list *ptr;
+
+    LIST_FOR_EACH( ptr, &reserved_areas )
+    {
+        area = LIST_ENTRY( ptr, struct reserved_area, entry );
+        if (area->base > addr) break;
+        if ((char *)area->base + area->size <= (char *)addr) continue;
+        /* area must contain block completely */
+        if ((char *)area->base + area->size < (char *)addr + size) return -1;
+        return 1;
+    }
+    return 0;
+}
+
+
+/***********************************************************************
+ *           wine_mmap_enum_reserved_areas
+ *
+ * Enumerate the list of reserved areas, sorted by addresses.
+ * If enum_func returns a non-zero value, enumeration is stopped and the value is returned.
+ *
+ * Note: the reserved areas functions are not reentrant, caller is
+ * responsible for proper locking.
+ */
+int wine_mmap_enum_reserved_areas( int (*enum_func)(void *base, size_t size, void *arg), void *arg,
+                                   int top_down )
+{
+    int ret = 0;
+    struct list *ptr;
+
+    if (top_down)
+    {
+        for (ptr = reserved_areas.prev; ptr != &reserved_areas; ptr = ptr->prev)
+        {
+            struct reserved_area *area = LIST_ENTRY( ptr, struct reserved_area, entry );
+            if ((ret = enum_func( area->base, area->size, arg ))) break;
+        }
+    }
+    else
+    {
+        for (ptr = reserved_areas.next; ptr != &reserved_areas; ptr = ptr->next)
+        {
+            struct reserved_area *area = LIST_ENTRY( ptr, struct reserved_area, entry );
+            if ((ret = enum_func( area->base, area->size, arg ))) break;
+        }
+    }
+    return ret;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/port.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/port.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/port.c	(revision 16410)
@@ -0,0 +1,204 @@
+/*
+ * Wine portability routines
+ *
+ * Copyright 2000 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "wine/port.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+
+#include "wine/library.h"
+#include "wine/pthread.h"
+
+static struct wine_pthread_functions pthread_functions;
+
+/***********************************************************************
+ *           wine_pthread_get_functions
+ */
+void wine_pthread_get_functions( struct wine_pthread_functions *functions, size_t size )
+{
+    memcpy( functions, &pthread_functions, min( size, sizeof(pthread_functions) ));
+}
+
+
+/***********************************************************************
+ *           wine_pthread_set_functions
+ */
+void wine_pthread_set_functions( const struct wine_pthread_functions *functions, size_t size )
+{
+    memcpy( &pthread_functions, functions, min( size, sizeof(pthread_functions) ));
+}
+
+
+/***********************************************************************
+ *           wine_switch_to_stack
+ *
+ * Switch to the specified stack and call the function.
+ */
+void DECLSPEC_NORETURN wine_switch_to_stack( void (*func)(void *), void *arg, void *stack );
+#if defined(__i386__) && defined(__GNUC__)
+__ASM_GLOBAL_FUNC( wine_switch_to_stack,
+                   "movl 4(%esp),%ecx\n\t"  /* func */
+                   "movl 8(%esp),%edx\n\t"  /* arg */
+                   "movl 12(%esp),%esp\n\t"  /* stack */
+                   "andl $~15,%esp\n\t"
+                   "subl $12,%esp\n\t"
+                   "pushl %edx\n\t"
+                   "xorl %ebp,%ebp\n\t"
+                   "call *%ecx\n\t"
+                   "int $3" /* we never return here */ )
+#elif defined(__i386__) && defined(_MSC_VER)
+__declspec(naked) void wine_switch_to_stack( void (*func)(void *), void *arg, void *stack )
+{
+  __asm mov ecx, 4[esp];
+  __asm mov edx, 8[esp];
+  __asm mov esp, 12[esp];
+  __asm push edx;
+  __asm xor ebp, ebp;
+  __asm call [ecx];
+  __asm int 3;
+}
+#elif defined(__sparc__) && defined(__GNUC__)
+__ASM_GLOBAL_FUNC( wine_switch_to_stack,
+                   "mov %o0, %l0\n\t" /* store first argument */
+                   "mov %o1, %l1\n\t" /* store second argument */
+                   "sub %o2, 96, %sp\n\t" /* store stack */
+                   "call %l0, 0\n\t" /* call func */
+                   "mov %l1, %o0\n\t" /* delay slot:  arg for func */
+                   "ta 0x01") /* breakpoint - we never get here */
+#elif defined(__powerpc__) && defined(__APPLE__)
+__ASM_GLOBAL_FUNC( wine_switch_to_stack,
+                   "mtctr r3\n\t" /* func -> ctr */
+                   "mr r3,r4\n\t" /* args -> function param 1 (r3) */
+                   "mr r1,r5\n\t" /* stack */
+                   "subi r1,r1,0x100\n\t" /* adjust stack pointer */
+                   "bctrl\n" /* call ctr */
+                   "1:\tb 1b") /* loop */
+#elif defined(__powerpc__) && defined(__GNUC__)
+__ASM_GLOBAL_FUNC( wine_switch_to_stack,
+                   "mtctr 3\n\t" /* func -> ctr */
+                   "mr 3,4\n\t" /* args -> function param 1 (r3) */
+                   "mr 1,5\n\t" /* stack */
+                   "subi 1, 1, 16\n\t" /* allocate space for the callee */
+                   "li 0, 0\n\t" /* load zero */
+                   "stw 0, 0(1)\n\t" /* create a bottom stack frame */
+                   "bctrl\n\t" /* call ctr */
+                   "1:\tb 1b") /* loop */
+#elif defined(__ALPHA__) && defined(__GNUC__)
+__ASM_GLOBAL_FUNC( wine_switch_to_stack,
+                   "mov $16,$0\n\t" /* func */
+                   "mov $17,$16\n\t" /* arg */
+                   "mov $18,$30\n\t" /* stack */
+                   "jsr $31,($0),0\n\t" /* call func */
+                   "L1:\tbr $31,L1") /* loop */
+#elif defined(__x86_64__) && defined(__GNUC__)
+__ASM_GLOBAL_FUNC( wine_switch_to_stack,
+                   "movq %rdi,%rax\n\t" /* func */
+                   "movq %rsi,%rdi\n\t" /* arg */
+                   "andq $~15,%rdx\n\t" /* stack */
+                   "movq %rdx,%rsp\n\t"
+                   "xorq %rbp,%rbp\n\t"
+                   "callq *%rax\n\t"    /* call func */
+                   "int $3")
+#else
+void DECLSPEC_NORETURN wine_switch_to_stack( void (*func)(void *), void *arg, void *stack )
+{
+    wine_call_on_stack( (int (*)(void *))func, arg, stack );
+    abort();
+}
+#endif
+
+
+/***********************************************************************
+ *           wine_call_on_stack
+ *
+ * Switch to the specified stack to call the function and return.
+ */
+int wine_call_on_stack( int (*func)(void *), void *arg, void *stack );
+#if defined(__i386__) && defined(__GNUC__)
+__ASM_GLOBAL_FUNC( wine_call_on_stack,
+                   "pushl %ebp\n\t"
+                   "pushl %esi\n\t"
+                   "movl 12(%esp),%ecx\n\t"  /* func */
+                   "movl 16(%esp),%edx\n\t"  /* arg */
+                   "movl 20(%esp),%esi\n\t"  /* stack */
+                   "andl $~15,%esi\n\t"
+                   "subl $12,%esi\n\t"
+                   "xchgl %esi,%esp\n\t"
+                   "pushl %edx\n\t"
+                   "xorl %ebp,%ebp\n\t"
+                   "call *%ecx\n\t"
+                   "movl %esi,%esp\n\t"
+                   "popl %esi\n\t"
+                   "popl %ebp\n\t"
+                   "ret" )
+#elif defined(__i386__) && defined(_MSC_VER)
+__declspec(naked) int wine_call_on_stack( int (*func)(void *), void *arg, void *stack )
+{
+  __asm push ebp;
+  __asm push esi;
+  __asm mov ecx, 12[esp];
+  __asm mov edx, 16[esp];
+  __asm mov esi, 20[esp];
+  __asm xchg esp, esi;
+  __asm push edx;
+  __asm xor ebp, ebp;
+  __asm call [ecx];
+  __asm mov esp, esi;
+  __asm pop esi;
+  __asm pop ebp
+  __asm ret;
+}
+#elif defined(__x86_64__) && defined(__GNUC__)
+__ASM_GLOBAL_FUNC( wine_call_on_stack,
+                   "pushq %rbp\n\t"
+                   "pushq %rbx\n\t"
+                   "movq %rsp,%rbx\n\t"
+                   "movq %rdi,%rax\n\t" /* func */
+                   "movq %rsi,%rdi\n\t" /* arg */
+                   "andq $~15,%rdx\n\t" /* stack */
+                   "movq %rdx,%rsp\n\t"
+                   "xorq %rbp,%rbp\n\t"
+                   "callq *%rax\n\t"    /* call func */
+                   "movq %rbx,%rsp\n\t"
+                   "popq %rbx\n\t"
+                   "popq %rbp\n\t"
+                   "ret")
+#elif defined(__powerpc__) && defined(__GNUC__)
+__ASM_GLOBAL_FUNC( wine_call_on_stack,
+                   "mflr 0\n\t"         /* get return address */
+                   "stw 0, 4(1)\n\t"    /* save return address */
+                   "subi 5, 5, 16\n\t" /* reserve space on new stack */
+                   "stw 1, 12(5)\n\t"   /* store old sp */
+                   "mtctr 3\n\t"        /* func -> ctr */
+                   "mr 3,4\n\t"         /* args -> function param 1 (r3) */
+                   "mr 1,5\n\t"         /* stack */
+                   "li 0, 0\n\t"        /* zero */
+                   "stw 0, 0(1)\n\t"    /* bottom of stack */
+                   "stwu 1, -16(1)\n\t" /* create a frame for this function */
+                   "bctrl\n\t"          /* call ctr */
+                   "lwz 1, 28(1)\n\t"   /* fetch old sp */
+                   "lwz 0, 4(1)\n\t"    /* fetch return address */
+                   "mtlr 0\n\t"         /* return address -> lr */
+                   "blr")               /* return */
+#else
+#error You must implement wine_switch_to_stack for your platform
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/sortkey.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/sortkey.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/sortkey.c	(revision 16410)
@@ -0,0 +1,350 @@
+/*
+ * Unicode sort key generation
+ *
+ * Copyright 2003 Dmitry Timoshkov
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#include "wine/unicode.h"
+
+extern int get_decomposition(WCHAR src, WCHAR *dst, unsigned int dstlen);
+extern const unsigned int collation_table[];
+
+/*
+ * flags - normalization NORM_* flags
+ *
+ * FIXME: 'variable' flag not handled
+ */
+int wine_get_sortkey(int flags, const WCHAR *src, int srclen, char *dst, int dstlen)
+{
+    WCHAR dummy[4]; /* no decomposition is larger than 4 chars */
+    int key_len[4];
+    char *key_ptr[4];
+    const WCHAR *src_save = src;
+    int srclen_save = srclen;
+
+    key_len[0] = key_len[1] = key_len[2] = key_len[3] = 0;
+    for (; srclen; srclen--, src++)
+    {
+        int decomposed_len = 1;/*get_decomposition(*src, dummy, 4);*/
+        dummy[0] = *src;
+        if (decomposed_len)
+        {
+            int i;
+            for (i = 0; i < decomposed_len; i++)
+            {
+                WCHAR wch = dummy[i];
+                unsigned int ce;
+
+                /* tests show that win2k just ignores NORM_IGNORENONSPACE,
+                 * and skips white space and punctuation characters for
+                 * NORM_IGNORESYMBOLS.
+                 */
+                if ((flags & NORM_IGNORESYMBOLS) && (get_char_typeW(wch) & (C1_PUNCT | C1_SPACE)))
+                    continue;
+
+                if (flags & NORM_IGNORECASE) wch = tolowerW(wch);
+
+                ce = collation_table[collation_table[wch >> 8] + (wch & 0xff)];
+                if (ce != (unsigned int)-1)
+                {
+                    if (ce >> 16) key_len[0] += 2;
+                    if ((ce >> 8) & 0xff) key_len[1]++;
+                    if ((ce >> 4) & 0x0f) key_len[2]++;
+                    if (ce & 1)
+                    {
+                        if (wch >> 8) key_len[3]++;
+                        key_len[3]++;
+                    }
+                }
+                else
+                {
+                    key_len[0] += 2;
+                    if (wch >> 8) key_len[0]++;
+                    if (wch & 0xff) key_len[0]++;
+		}
+            }
+        }
+    }
+
+    if (!dstlen) /* compute length */
+        /* 4 * '\1' + 1 * '\0' + key length */
+        return key_len[0] + key_len[1] + key_len[2] + key_len[3] + 4 + 1;
+
+    if (dstlen < key_len[0] + key_len[1] + key_len[2] + key_len[3] + 4 + 1)
+        return 0; /* overflow */
+
+    src = src_save;
+    srclen = srclen_save;
+
+    key_ptr[0] = dst;
+    key_ptr[1] = key_ptr[0] + key_len[0] + 1;
+    key_ptr[2] = key_ptr[1] + key_len[1] + 1;
+    key_ptr[3] = key_ptr[2] + key_len[2] + 1;
+
+    for (; srclen; srclen--, src++)
+    {
+        int decomposed_len = 1;/*get_decomposition(*src, dummy, 4);*/
+        dummy[0] = *src;
+        if (decomposed_len)
+        {
+            int i;
+            for (i = 0; i < decomposed_len; i++)
+            {
+                WCHAR wch = dummy[i];
+                unsigned int ce;
+
+                /* tests show that win2k just ignores NORM_IGNORENONSPACE,
+                 * and skips white space and punctuation characters for
+                 * NORM_IGNORESYMBOLS.
+                 */
+                if ((flags & NORM_IGNORESYMBOLS) && (get_char_typeW(wch) & (C1_PUNCT | C1_SPACE)))
+                    continue;
+
+                if (flags & NORM_IGNORECASE) wch = tolowerW(wch);
+
+                ce = collation_table[collation_table[wch >> 8] + (wch & 0xff)];
+                if (ce != (unsigned int)-1)
+                {
+                    WCHAR key;
+                    if ((key = ce >> 16))
+                    {
+                        *key_ptr[0]++ = key >> 8;
+                        *key_ptr[0]++ = key & 0xff;
+                    }
+                    /* make key 1 start from 2 */
+                    if ((key = (ce >> 8) & 0xff)) *key_ptr[1]++ = key + 1;
+                    /* make key 2 start from 2 */
+                    if ((key = (ce >> 4) & 0x0f)) *key_ptr[2]++ = key + 1;
+                    /* key 3 is always a character code */
+                    if (ce & 1)
+                    {
+                        if (wch >> 8) *key_ptr[3]++ = wch >> 8;
+                        if (wch & 0xff) *key_ptr[3]++ = wch & 0xff;
+                    }
+                }
+                else
+                {
+                    *key_ptr[0]++ = 0xff;
+                    *key_ptr[0]++ = 0xfe;
+                    if (wch >> 8) *key_ptr[0]++ = wch >> 8;
+                    if (wch & 0xff) *key_ptr[0]++ = wch & 0xff;
+                }
+            }
+        }
+    }
+
+    *key_ptr[0] = '\1';
+    *key_ptr[1] = '\1';
+    *key_ptr[2] = '\1';
+    *key_ptr[3]++ = '\1';
+    *key_ptr[3] = 0;
+
+    return key_ptr[3] - dst;
+}
+
+static inline int compare_unicode_weights(int flags, const WCHAR *str1, int len1,
+                                          const WCHAR *str2, int len2)
+{
+    unsigned int ce1, ce2;
+    int ret;
+
+    /* 32-bit collation element table format:
+     * unicode weight - high 16 bit, diacritic weight - high 8 bit of low 16 bit,
+     * case weight - high 4 bit of low 8 bit.
+     */
+    while (len1 > 0 && len2 > 0)
+    {
+        if (flags & NORM_IGNORESYMBOLS)
+        {
+            int skip = 0;
+            /* FIXME: not tested */
+            if (get_char_typeW(*str1) & (C1_PUNCT | C1_SPACE))
+            {
+                str1++;
+                len1--;
+                skip = 1;
+            }
+            if (get_char_typeW(*str2) & (C1_PUNCT | C1_SPACE))
+            {
+                str2++;
+                len2--;
+                skip = 1;
+            }
+            if (skip) continue;
+        }
+
+       /* hyphen and apostrophe are treated differently depending on
+        * whether SORT_STRINGSORT specified or not
+        */
+        if (!(flags & SORT_STRINGSORT))
+        {
+            if (*str1 == '-' || *str1 == '\'')
+            {
+                if (*str2 != '-' && *str2 != '\'')
+                {
+                    str1++;
+                    len1--;
+                    continue;
+                }
+            }
+            else if (*str2 == '-' || *str2 == '\'')
+            {
+                str2++;
+                len2--;
+                continue;
+            }
+        }
+
+        ce1 = collation_table[collation_table[*str1 >> 8] + (*str1 & 0xff)];
+        ce2 = collation_table[collation_table[*str2 >> 8] + (*str2 & 0xff)];
+
+        if (ce1 != (unsigned int)-1 && ce2 != (unsigned int)-1)
+            ret = (ce1 >> 16) - (ce2 >> 16);
+        else
+            ret = *str1 - *str2;
+
+        if (ret) return ret;
+
+        str1++;
+        str2++;
+        len1--;
+        len2--;
+    }
+    return len1 - len2;
+}
+
+static inline int compare_diacritic_weights(int flags, const WCHAR *str1, int len1,
+                                            const WCHAR *str2, int len2)
+{
+    unsigned int ce1, ce2;
+    int ret;
+
+    /* 32-bit collation element table format:
+     * unicode weight - high 16 bit, diacritic weight - high 8 bit of low 16 bit,
+     * case weight - high 4 bit of low 8 bit.
+     */
+    while (len1 > 0 && len2 > 0)
+    {
+        if (flags & NORM_IGNORESYMBOLS)
+        {
+            int skip = 0;
+            /* FIXME: not tested */
+            if (get_char_typeW(*str1) & (C1_PUNCT | C1_SPACE))
+            {
+                str1++;
+                len1--;
+                skip = 1;
+            }
+            if (get_char_typeW(*str2) & (C1_PUNCT | C1_SPACE))
+            {
+                str2++;
+                len2--;
+                skip = 1;
+            }
+            if (skip) continue;
+        }
+
+        ce1 = collation_table[collation_table[*str1 >> 8] + (*str1 & 0xff)];
+        ce2 = collation_table[collation_table[*str2 >> 8] + (*str2 & 0xff)];
+
+        if (ce1 != (unsigned int)-1 && ce2 != (unsigned int)-1)
+            ret = ((ce1 >> 8) & 0xff) - ((ce2 >> 8) & 0xff);
+        else
+            ret = *str1 - *str2;
+
+        if (ret) return ret;
+
+        str1++;
+        str2++;
+        len1--;
+        len2--;
+    }
+    return len1 - len2;
+}
+
+static inline int compare_case_weights(int flags, const WCHAR *str1, int len1,
+                                       const WCHAR *str2, int len2)
+{
+    unsigned int ce1, ce2;
+    int ret;
+
+    /* 32-bit collation element table format:
+     * unicode weight - high 16 bit, diacritic weight - high 8 bit of low 16 bit,
+     * case weight - high 4 bit of low 8 bit.
+     */
+    while (len1 > 0 && len2 > 0)
+    {
+        if (flags & NORM_IGNORESYMBOLS)
+        {
+            int skip = 0;
+            /* FIXME: not tested */
+            if (get_char_typeW(*str1) & (C1_PUNCT | C1_SPACE))
+            {
+                str1++;
+                len1--;
+                skip = 1;
+            }
+            if (get_char_typeW(*str2) & (C1_PUNCT | C1_SPACE))
+            {
+                str2++;
+                len2--;
+                skip = 1;
+            }
+            if (skip) continue;
+        }
+
+        ce1 = collation_table[collation_table[*str1 >> 8] + (*str1 & 0xff)];
+        ce2 = collation_table[collation_table[*str2 >> 8] + (*str2 & 0xff)];
+
+        if (ce1 != (unsigned int)-1 && ce2 != (unsigned int)-1)
+            ret = ((ce1 >> 4) & 0x0f) - ((ce2 >> 4) & 0x0f);
+        else
+            ret = *str1 - *str2;
+
+        if (ret) return ret;
+
+        str1++;
+        str2++;
+        len1--;
+        len2--;
+    }
+    return len1 - len2;
+}
+
+static inline int real_length(const WCHAR *str, int len)
+{
+    while (len && !str[len - 1]) len--;
+    return len;
+}
+
+int wine_compare_string(int flags, const WCHAR *str1, int len1,
+                        const WCHAR *str2, int len2)
+{
+    int ret;
+
+    len1 = real_length(str1, len1);
+    len2 = real_length(str2, len2);
+
+    ret = compare_unicode_weights(flags, str1, len1, str2, len2);
+    if (!ret)
+    {
+        if (!(flags & NORM_IGNORENONSPACE))
+            ret = compare_diacritic_weights(flags, str1, len1, str2, len2);
+        if (!ret && !(flags & NORM_IGNORECASE))
+            ret = compare_case_weights(flags, str1, len1, str2, len2);
+    }
+    return ret;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/string.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/string.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/string.c	(revision 16410)
@@ -0,0 +1,458 @@
+/*
+ * Unicode string manipulation functions
+ *
+ * Copyright 2000 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <limits.h>
+#include <stdio.h>
+
+#define WINE_UNICODE_INLINE  /* nothing */
+#include "wine/unicode.h"
+
+int strcmpiW( const WCHAR *str1, const WCHAR *str2 )
+{
+    for (;;)
+    {
+        int ret = tolowerW(*str1) - tolowerW(*str2);
+        if (ret || !*str1) return ret;
+        str1++;
+        str2++;
+    }
+}
+
+int strncmpiW( const WCHAR *str1, const WCHAR *str2, int n )
+{
+    int ret = 0;
+    for ( ; n > 0; n--, str1++, str2++)
+        if ((ret = tolowerW(*str1) - tolowerW(*str2)) || !*str1) break;
+    return ret;
+}
+
+int memicmpW( const WCHAR *str1, const WCHAR *str2, int n )
+{
+    int ret = 0;
+    for ( ; n > 0; n--, str1++, str2++)
+        if ((ret = tolowerW(*str1) - tolowerW(*str2))) break;
+    return ret;
+}
+
+WCHAR *strstrW( const WCHAR *str, const WCHAR *sub )
+{
+    while (*str)
+    {
+        const WCHAR *p1 = str, *p2 = sub;
+        while (*p1 && *p2 && *p1 == *p2) { p1++; p2++; }
+        if (!*p2) return (WCHAR *)str;
+        str++;
+    }
+    return NULL;
+}
+
+/* strtolW and strtoulW implementation based on the GNU C library code */
+/* Copyright (C) 1991,92,94,95,96,97,98,99,2000,2001 Free Software Foundation, Inc. */
+
+long int strtolW( const WCHAR *nptr, WCHAR **endptr, int base )
+{
+  int negative;
+  register unsigned long int cutoff;
+  register unsigned int cutlim;
+  register unsigned long int i;
+  register const WCHAR *s;
+  register WCHAR c;
+  const WCHAR *save, *end;
+  int overflow;
+
+  if (base < 0 || base == 1 || base > 36) return 0;
+
+  save = s = nptr;
+
+  /* Skip white space.  */
+  while (isspaceW (*s))
+    ++s;
+  if (!*s) goto noconv;
+
+  /* Check for a sign.  */
+  negative = 0;
+  if (*s == '-')
+    {
+      negative = 1;
+      ++s;
+    }
+  else if (*s == '+')
+    ++s;
+
+  /* Recognize number prefix and if BASE is zero, figure it out ourselves.  */
+  if (*s == '0')
+    {
+      if ((base == 0 || base == 16) && toupperW(s[1]) == 'X')
+	{
+	  s += 2;
+	  base = 16;
+	}
+      else if (base == 0)
+	base = 8;
+    }
+  else if (base == 0)
+    base = 10;
+
+  /* Save the pointer so we can check later if anything happened.  */
+  save = s;
+  end = NULL;
+
+  cutoff = ULONG_MAX / (unsigned long int) base;
+  cutlim = ULONG_MAX % (unsigned long int) base;
+
+  overflow = 0;
+  i = 0;
+  c = *s;
+  for (;c != '\0'; c = *++s)
+  {
+      if (s == end)
+          break;
+      if (c >= '0' && c <= '9')
+          c -= '0';
+      else if (isalphaW (c))
+          c = toupperW (c) - 'A' + 10;
+      else
+          break;
+      if ((int) c >= base)
+          break;
+      /* Check for overflow.  */
+      if (i > cutoff || (i == cutoff && c > cutlim))
+          overflow = 1;
+      else
+      {
+          i *= (unsigned long int) base;
+          i += c;
+      }
+  }
+
+  /* Check if anything actually happened.  */
+  if (s == save)
+    goto noconv;
+
+  /* Store in ENDPTR the address of one character
+     past the last character we converted.  */
+  if (endptr != NULL)
+    *endptr = (WCHAR *)s;
+
+  /* Check for a value that is within the range of
+     `unsigned LONG int', but outside the range of `LONG int'.  */
+  if (overflow == 0
+      && i > (negative
+	      ? -((unsigned long int) (LONG_MIN + 1)) + 1
+	      : (unsigned long int) LONG_MAX))
+    overflow = 1;
+
+  if (overflow)
+    {
+      return negative ? LONG_MIN : LONG_MAX;
+    }
+
+  /* Return the result of the appropriate sign.  */
+  return negative ? -i : i;
+
+noconv:
+  /* We must handle a special case here: the base is 0 or 16 and the
+     first two characters are '0' and 'x', but the rest are not
+     hexadecimal digits.  This is no error case.  We return 0 and
+     ENDPTR points to the `x`.  */
+  if (endptr != NULL)
+    {
+      if (save - nptr >= 2 && toupperW (save[-1]) == 'X'
+	  && save[-2] == '0')
+	*endptr = (WCHAR *)&save[-1];
+      else
+	/*  There was no number to convert.  */
+	*endptr = (WCHAR *)nptr;
+    }
+
+  return 0L;
+}
+
+
+unsigned long int strtoulW( const WCHAR *nptr, WCHAR **endptr, int base )
+{
+  int negative;
+  register unsigned long int cutoff;
+  register unsigned int cutlim;
+  register unsigned long int i;
+  register const WCHAR *s;
+  register WCHAR c;
+  const WCHAR *save, *end;
+  int overflow;
+
+  if (base < 0 || base == 1 || base > 36) return 0;
+
+  save = s = nptr;
+
+  /* Skip white space.  */
+  while (isspaceW (*s))
+    ++s;
+  if (!*s) goto noconv;
+
+  /* Check for a sign.  */
+  negative = 0;
+  if (*s == '-')
+    {
+      negative = 1;
+      ++s;
+    }
+  else if (*s == '+')
+    ++s;
+
+  /* Recognize number prefix and if BASE is zero, figure it out ourselves.  */
+  if (*s == '0')
+    {
+      if ((base == 0 || base == 16) && toupperW(s[1]) == 'X')
+	{
+	  s += 2;
+	  base = 16;
+	}
+      else if (base == 0)
+	base = 8;
+    }
+  else if (base == 0)
+    base = 10;
+
+  /* Save the pointer so we can check later if anything happened.  */
+  save = s;
+  end = NULL;
+
+  cutoff = ULONG_MAX / (unsigned long int) base;
+  cutlim = ULONG_MAX % (unsigned long int) base;
+
+  overflow = 0;
+  i = 0;
+  c = *s;
+  for (;c != '\0'; c = *++s)
+  {
+      if (s == end)
+          break;
+      if (c >= '0' && c <= '9')
+          c -= '0';
+      else if (isalphaW (c))
+          c = toupperW (c) - 'A' + 10;
+      else
+          break;
+      if ((int) c >= base)
+          break;
+      /* Check for overflow.  */
+      if (i > cutoff || (i == cutoff && c > cutlim))
+          overflow = 1;
+      else
+      {
+          i *= (unsigned long int) base;
+          i += c;
+      }
+  }
+
+  /* Check if anything actually happened.  */
+  if (s == save)
+    goto noconv;
+
+  /* Store in ENDPTR the address of one character
+     past the last character we converted.  */
+  if (endptr != NULL)
+    *endptr = (WCHAR *)s;
+
+  if (overflow)
+    {
+      return ULONG_MAX;
+    }
+
+  /* Return the result of the appropriate sign.  */
+  return negative ? -i : i;
+
+noconv:
+  /* We must handle a special case here: the base is 0 or 16 and the
+     first two characters are '0' and 'x', but the rest are not
+     hexadecimal digits.  This is no error case.  We return 0 and
+     ENDPTR points to the `x`.  */
+  if (endptr != NULL)
+    {
+      if (save - nptr >= 2 && toupperW (save[-1]) == 'X'
+	  && save[-2] == '0')
+	*endptr = (WCHAR *)&save[-1];
+      else
+	/*  There was no number to convert.  */
+	*endptr = (WCHAR *)nptr;
+    }
+
+  return 0L;
+}
+
+
+int vsnprintfW(WCHAR *str, size_t len, const WCHAR *format, va_list valist)
+{
+    unsigned int written = 0;
+    const WCHAR *iter = format;
+    char bufa[256], fmtbufa[64], *fmta;
+
+    while (*iter)
+    {
+        while (*iter && *iter != '%')
+        {
+            if (written++ >= len)
+                return -1;
+            *str++ = *iter++;
+        }
+        if (*iter == '%')
+        {
+            if (iter[1] == '%')
+            {
+                if (written++ >= len)
+                    return -1;
+                *str++ = '%'; /* "%%"->'%' */
+                iter += 2;
+                continue;
+            }
+
+            fmta = fmtbufa;
+            *fmta++ = *iter++;
+            while (*iter == '0' ||
+                   *iter == '+' ||
+                   *iter == '-' ||
+                   *iter == ' ' ||
+                   *iter == '*' ||
+                   *iter == '#')
+            {
+                if (*iter == '*')
+                {
+                    char *buffiter = bufa;
+                    int fieldlen = va_arg(valist, int);
+                    sprintf(buffiter, "%d", fieldlen);
+                    while (*buffiter)
+                        *fmta++ = *buffiter++;
+                }
+                else
+                    *fmta++ = *iter;
+                iter++;
+            }
+
+            while (isdigit(*iter))
+                *fmta++ = *iter++;
+
+            if (*iter == '.')
+            {
+                *fmta++ = *iter++;
+                if (*iter == '*')
+                {
+                    char *buffiter = bufa;
+                    int fieldlen = va_arg(valist, int);
+                    sprintf(buffiter, "%d", fieldlen);
+                    while (*buffiter)
+                        *fmta++ = *buffiter++;
+                }
+                else
+                    while (isdigit(*iter))
+                        *fmta++ = *iter++;
+            }
+            if (*iter == 'h' || *iter == 'l')
+                *fmta++ = *iter++;
+
+            switch (*iter)
+            {
+            case 's':
+            {
+                static const WCHAR none[] = { '(','n','u','l','l',')',0 };
+                const WCHAR *wstr = va_arg(valist, const WCHAR *);
+                const WCHAR *striter = wstr ? wstr : none;
+                while (*striter)
+                {
+                    if (written++ >= len)
+                        return -1;
+                    *str++ = *striter++;
+                }
+                iter++;
+                break;
+            }
+
+            case 'c':
+                if (written++ >= len)
+                    return -1;
+                *str++ = (WCHAR)va_arg(valist, int);
+                iter++;
+                break;
+
+            default:
+            {
+                /* For non wc types, use system sprintf and append to wide char output */
+                /* FIXME: for unrecognised types, should ignore % when printing */
+                char *bufaiter = bufa;
+                if (*iter == 'p')
+                    sprintf(bufaiter, "%08lX", va_arg(valist, long));
+                else
+                {
+                    *fmta++ = *iter;
+                    *fmta = '\0';
+                    if (*iter == 'a' || *iter == 'A' ||
+                        *iter == 'e' || *iter == 'E' ||
+                        *iter == 'f' || *iter == 'F' || 
+                        *iter == 'g' || *iter == 'G')
+                        sprintf(bufaiter, fmtbufa, va_arg(valist, double));
+                    else
+                    {
+                        /* FIXME: On 32 bit systems this doesn't handle int 64's.
+                         *        on 64 bit systems this doesn't work for 32 bit types
+			 */
+                        sprintf(bufaiter, fmtbufa, va_arg(valist, void *));
+                    }
+                }
+                while (*bufaiter)
+                {
+                    if (written++ >= len)
+                        return -1;
+                    *str++ = *bufaiter++;
+                }
+                iter++;
+                break;
+            }
+            }
+        }
+    }
+    if (written >= len)
+        return -1;
+    *str++ = 0;
+    return (int)written;
+}
+
+int vsprintfW( WCHAR *str, const WCHAR *format, va_list valist )
+{
+    return vsnprintfW( str, INT_MAX, format, valist );
+}
+
+int snprintfW( WCHAR *str, size_t len, const WCHAR *format, ...)
+{
+    int retval;
+    va_list valist;
+    va_start(valist, format);
+    retval = vsnprintfW(str, len, format, valist);
+    va_end(valist);
+    return retval;
+}
+
+int sprintfW( WCHAR *str, const WCHAR *format, ...)
+{
+    int retval;
+    va_list valist;
+    va_start(valist, format);
+    retval = vsnprintfW(str, INT_MAX, format, valist);
+    va_end(valist);
+    return retval;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/utf8.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/utf8.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/utf8.c	(revision 16410)
@@ -0,0 +1,338 @@
+/*
+ * UTF-8 support routines
+ *
+ * Copyright 2000 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <string.h>
+
+#include "wine/unicode.h"
+
+extern WCHAR compose( const WCHAR *str );
+
+/* number of following bytes in sequence based on first byte value (for bytes above 0x7f) */
+static const char utf8_length[128] =
+{
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x80-0x8f */
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x90-0x9f */
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xa0-0xaf */
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xb0-0xbf */
+    0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0xc0-0xcf */
+    1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0xd0-0xdf */
+    2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, /* 0xe0-0xef */
+    3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0  /* 0xf0-0xff */
+};
+
+/* first byte mask depending on UTF-8 sequence length */
+static const unsigned char utf8_mask[4] = { 0x7f, 0x1f, 0x0f, 0x07 };
+
+/* minimum Unicode value depending on UTF-8 sequence length */
+static const unsigned int utf8_minval[4] = { 0x0, 0x80, 0x800, 0x10000 };
+
+
+/* get the next char value taking surrogates into account */
+static inline unsigned int get_surrogate_value( const WCHAR *src, unsigned int srclen )
+{
+    if (src[0] >= 0xd800 && src[0] <= 0xdfff)  /* surrogate pair */
+    {
+        if (src[0] > 0xdbff || /* invalid high surrogate */
+            srclen <= 1 ||     /* missing low surrogate */
+            src[1] < 0xdc00 || src[1] > 0xdfff) /* invalid low surrogate */
+            return 0;
+        return 0x10000 + ((src[0] & 0x3ff) << 10) + (src[1] & 0x3ff);
+    }
+    return src[0];
+}
+
+/* query necessary dst length for src string */
+static inline int get_length_wcs_utf8( int flags, const WCHAR *src, unsigned int srclen )
+{
+    int len;
+    unsigned int val;
+
+    for (len = 0; srclen; srclen--, src++)
+    {
+        if (*src < 0x80)  /* 0x00-0x7f: 1 byte */
+        {
+            len++;
+            continue;
+        }
+        if (*src < 0x800)  /* 0x80-0x7ff: 2 bytes */
+        {
+            len += 2;
+            continue;
+        }
+        if (!(val = get_surrogate_value( src, srclen )))
+        {
+            if (flags & WC_ERR_INVALID_CHARS) return -2;
+            continue;
+        }
+        if (val < 0x10000)  /* 0x800-0xffff: 3 bytes */
+            len += 3;
+        else   /* 0x10000-0x10ffff: 4 bytes */
+        {
+            len += 4;
+            src++;
+            srclen--;
+        }
+    }
+    return len;
+}
+
+/* wide char to UTF-8 string conversion */
+/* return -1 on dst buffer overflow, -2 on invalid input char */
+int wine_utf8_wcstombs( int flags, const WCHAR *src, int srclen, char *dst, int dstlen )
+{
+    int len;
+
+    if (!dstlen) return get_length_wcs_utf8( flags, src, srclen );
+
+    for (len = dstlen; srclen; srclen--, src++)
+    {
+        WCHAR ch = *src;
+        unsigned int val;
+
+        if (ch < 0x80)  /* 0x00-0x7f: 1 byte */
+        {
+            if (!len--) return -1;  /* overflow */
+            *dst++ = ch;
+            continue;
+        }
+
+        if (ch < 0x800)  /* 0x80-0x7ff: 2 bytes */
+        {
+            if ((len -= 2) < 0) return -1;  /* overflow */
+            dst[1] = 0x80 | (ch & 0x3f);
+            ch >>= 6;
+            dst[0] = 0xc0 | ch;
+            dst += 2;
+            continue;
+        }
+
+        if (!(val = get_surrogate_value( src, srclen )))
+        {
+            if (flags & WC_ERR_INVALID_CHARS) return -2;
+            continue;
+        }
+
+        if (val < 0x10000)  /* 0x800-0xffff: 3 bytes */
+        {
+            if ((len -= 3) < 0) return -1;  /* overflow */
+            dst[2] = 0x80 | (val & 0x3f);
+            val >>= 6;
+            dst[1] = 0x80 | (val & 0x3f);
+            val >>= 6;
+            dst[0] = 0xe0 | val;
+            dst += 3;
+        }
+        else   /* 0x10000-0x10ffff: 4 bytes */
+        {
+            if ((len -= 4) < 0) return -1;  /* overflow */
+            dst[3] = 0x80 | (val & 0x3f);
+            val >>= 6;
+            dst[2] = 0x80 | (val & 0x3f);
+            val >>= 6;
+            dst[1] = 0x80 | (val & 0x3f);
+            val >>= 6;
+            dst[0] = 0xf0 | val;
+            dst += 4;
+            src++;
+            srclen--;
+        }
+    }
+    return dstlen - len;
+}
+
+/* helper for the various utf8 mbstowcs functions */
+static inline unsigned int decode_utf8_char( unsigned char ch, const char **str, const char *strend )
+{
+    unsigned int len = utf8_length[ch-0x80];
+    unsigned int res = ch & utf8_mask[len];
+    const char *end = *str + len;
+
+    if (end > strend) return ~0;
+    switch(len)
+    {
+    case 3:
+        if ((ch = end[-3] ^ 0x80) >= 0x40) break;
+        res = (res << 6) | ch;
+        (*str)++;
+    case 2:
+        if ((ch = end[-2] ^ 0x80) >= 0x40) break;
+        res = (res << 6) | ch;
+        (*str)++;
+    case 1:
+        if ((ch = end[-1] ^ 0x80) >= 0x40) break;
+        res = (res << 6) | ch;
+        (*str)++;
+        if (res < utf8_minval[len]) break;
+        return res;
+    }
+    return ~0;
+}
+
+/* query necessary dst length for src string with composition */
+static inline int get_length_mbs_utf8_compose( int flags, const char *src, int srclen )
+{
+    int ret = 0;
+    unsigned int res;
+    WCHAR composed[2];
+    const char *srcend = src + srclen;
+
+    composed[0] = 0;
+    while (src < srcend)
+    {
+        unsigned char ch = *src++;
+        if (ch < 0x80)  /* special fast case for 7-bit ASCII */
+        {
+            composed[0] = ch;
+            ret++;
+            continue;
+        }
+        if ((res = decode_utf8_char( ch, &src, srcend )) <= 0xffff)
+        {
+            if (composed[0])
+            {
+                composed[1] = res;
+                if ((composed[0] = compose( composed ))) continue;
+            }
+            composed[0] = res;
+            ret++;
+        }
+        else if (res <= 0x10ffff)
+        {
+            ret += 2;
+            composed[0] = 0;  /* no composition for surrogates */
+        }
+        else if (flags & MB_ERR_INVALID_CHARS) return -2;  /* bad char */
+        /* otherwise ignore it */
+    }
+    return ret;
+}
+
+/* UTF-8 to wide char string conversion with composition */
+/* return -1 on dst buffer overflow, -2 on invalid input char */
+static int utf8_mbstowcs_compose( int flags, const char *src, int srclen, WCHAR *dst, int dstlen )
+{
+    unsigned int res;
+    const char *srcend = src + srclen;
+    WCHAR composed[2];
+    WCHAR *dstend = dst + dstlen;
+
+    if (!dstlen) return get_length_mbs_utf8_compose( flags, src, srclen );
+
+    composed[0] = 0;
+    while (src < srcend)
+    {
+        unsigned char ch = *src++;
+        if (ch < 0x80)  /* special fast case for 7-bit ASCII */
+        {
+            if (dst >= dstend) return -1;  /* overflow */
+            *dst++ = composed[0] = ch;
+            continue;
+        }
+        if ((res = decode_utf8_char( ch, &src, srcend )) <= 0xffff)
+        {
+            if (composed[0])
+            {
+                composed[1] = res;
+                if ((composed[0] = compose( composed )))
+                {
+                    dst[-1] = composed[0];
+                    continue;
+                }
+            }
+            if (dst >= dstend) return -1;  /* overflow */
+            *dst++ = composed[0] = res;
+        }
+        else if (res <= 0x10ffff) /* we need surrogates */
+        {
+            if (dst >= dstend - 1) return -1;  /* overflow */
+            res -= 0x10000;
+            *dst++ = 0xd800 | (res >> 10);
+            *dst++ = 0xdc00 | (res & 0x3ff);
+            composed[0] = 0;  /* no composition for surrogates */
+        }
+        else if (flags & MB_ERR_INVALID_CHARS) return -2;  /* bad char */
+        /* otherwise ignore it */
+    }
+    return dstlen - (dstend - dst);
+}
+
+/* query necessary dst length for src string */
+static inline int get_length_mbs_utf8( int flags, const char *src, int srclen )
+{
+    int ret = 0;
+    unsigned int res;
+    const char *srcend = src + srclen;
+
+    while (src < srcend)
+    {
+        unsigned char ch = *src++;
+        if (ch < 0x80)  /* special fast case for 7-bit ASCII */
+        {
+            ret++;
+            continue;
+        }
+        if ((res = decode_utf8_char( ch, &src, srcend )) <= 0x10ffff)
+        {
+            if (res > 0xffff) ret++;
+            ret++;
+        }
+        else if (flags & MB_ERR_INVALID_CHARS) return -2;  /* bad char */
+        /* otherwise ignore it */
+    }
+    return ret;
+}
+
+/* UTF-8 to wide char string conversion */
+/* return -1 on dst buffer overflow, -2 on invalid input char */
+int wine_utf8_mbstowcs( int flags, const char *src, int srclen, WCHAR *dst, int dstlen )
+{
+    unsigned int res;
+    const char *srcend = src + srclen;
+    WCHAR *dstend = dst + dstlen;
+
+    if (flags & MB_COMPOSITE) return utf8_mbstowcs_compose( flags, src, srclen, dst, dstlen );
+
+    if (!dstlen) return get_length_mbs_utf8( flags, src, srclen );
+
+    while ((dst < dstend) && (src < srcend))
+    {
+        unsigned char ch = *src++;
+        if (ch < 0x80)  /* special fast case for 7-bit ASCII */
+        {
+            *dst++ = ch;
+            continue;
+        }
+        if ((res = decode_utf8_char( ch, &src, srcend )) <= 0xffff)
+        {
+            *dst++ = res;
+        }
+        else if (res <= 0x10ffff)  /* we need surrogates */
+        {
+            if (dst == dstend - 1) return -1;  /* overflow */
+            res -= 0x10000;
+            *dst++ = 0xd800 | (res >> 10);
+            *dst++ = 0xdc00 | (res & 0x3ff);
+        }
+        else if (flags & MB_ERR_INVALID_CHARS) return -2;  /* bad char */
+        /* otherwise ignore it */
+    }
+    if (src < srcend) return -1;  /* overflow */
+    return dstlen - (dstend - dst);
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/version.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/version.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/version.c	(revision 16410)
@@ -0,0 +1,1 @@
+const char wine_build[] = "wine-1.1.10";
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/wctomb.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/wctomb.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/wctomb.c	(revision 16410)
@@ -0,0 +1,488 @@
+/*
+ * WideCharToMultiByte implementation
+ *
+ * Copyright 2000 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <string.h>
+
+#include "wine/unicode.h"
+
+/* search for a character in the unicode_compose_table; helper for compose() */
+static inline int binary_search( WCHAR ch, int low, int high )
+{
+    extern const WCHAR unicode_compose_table[];
+    while (low <= high)
+    {
+        int pos = (low + high) / 2;
+        if (unicode_compose_table[2*pos] < ch)
+        {
+            low = pos + 1;
+            continue;
+        }
+        if (unicode_compose_table[2*pos] > ch)
+        {
+            high = pos - 1;
+            continue;
+        }
+        return pos;
+    }
+    return -1;
+}
+
+/* return the result of the composition of two Unicode chars, or 0 if none */
+WCHAR compose( const WCHAR *str )
+{
+    extern const WCHAR unicode_compose_table[];
+    extern const unsigned int unicode_compose_table_size;
+
+    int idx = 1, low = 0, high = unicode_compose_table_size - 1;
+    for (;;)
+    {
+        int pos = binary_search( str[idx], low, high );
+        if (pos == -1) return 0;
+        if (!idx--) return unicode_compose_table[2*pos+1];
+        low = unicode_compose_table[2*pos+1];
+        high = unicode_compose_table[2*pos+3] - 1;
+    }
+}
+
+
+/****************************************************************/
+/* sbcs support */
+
+/* check if 'ch' is an acceptable sbcs mapping for 'wch' */
+static inline int is_valid_sbcs_mapping( const struct sbcs_table *table, int flags,
+                                         WCHAR wch, unsigned char ch )
+{
+    if (flags & WC_NO_BEST_FIT_CHARS) return (table->cp2uni[ch] == wch);
+    if (ch != (unsigned char)table->info.def_char) return 1;
+    return (wch == table->info.def_unicode_char);
+}
+
+/* query necessary dst length for src string */
+static int get_length_sbcs( const struct sbcs_table *table, int flags,
+                            const WCHAR *src, unsigned int srclen, int *used )
+{
+    const unsigned char  * const uni2cp_low = table->uni2cp_low;
+    const unsigned short * const uni2cp_high = table->uni2cp_high;
+    int ret, tmp;
+    WCHAR composed;
+
+    if (!used) used = &tmp;  /* avoid checking on every char */
+    *used = 0;
+
+    for (ret = 0; srclen; ret++, src++, srclen--)
+    {
+        WCHAR wch = *src;
+        unsigned char ch;
+
+        if ((flags & WC_COMPOSITECHECK) && (srclen > 1) && (composed = compose(src)))
+        {
+            /* now check if we can use the composed char */
+            ch = uni2cp_low[uni2cp_high[composed >> 8] + (composed & 0xff)];
+            if (is_valid_sbcs_mapping( table, flags, composed, ch ))
+            {
+                /* we have a good mapping, use it */
+                src++;
+                srclen--;
+                continue;
+            }
+            /* no mapping for the composed char, check the other flags */
+            if (flags & WC_DEFAULTCHAR) /* use the default char instead */
+            {
+                *used = 1;
+                src++;  /* skip the non-spacing char */
+                srclen--;
+                continue;
+            }
+            if (flags & WC_DISCARDNS) /* skip the second char of the composition */
+            {
+                src++;
+                srclen--;
+            }
+            /* WC_SEPCHARS is the default */
+        }
+        if (!*used)
+        {
+            ch = uni2cp_low[uni2cp_high[wch >> 8] + (wch & 0xff)];
+            *used = !is_valid_sbcs_mapping( table, flags, wch, ch );
+        }
+    }
+    return ret;
+}
+
+/* wcstombs for single-byte code page */
+static inline int wcstombs_sbcs( const struct sbcs_table *table,
+                                 const WCHAR *src, unsigned int srclen,
+                                 char *dst, unsigned int dstlen )
+{
+    const unsigned char  * const uni2cp_low = table->uni2cp_low;
+    const unsigned short * const uni2cp_high = table->uni2cp_high;
+    int ret = srclen;
+
+    if (dstlen < srclen)
+    {
+        /* buffer too small: fill it up to dstlen and return error */
+        srclen = dstlen;
+        ret = -1;
+    }
+
+    while (srclen >= 16)
+    {
+        dst[0]  = uni2cp_low[uni2cp_high[src[0]  >> 8] + (src[0]  & 0xff)];
+        dst[1]  = uni2cp_low[uni2cp_high[src[1]  >> 8] + (src[1]  & 0xff)];
+        dst[2]  = uni2cp_low[uni2cp_high[src[2]  >> 8] + (src[2]  & 0xff)];
+        dst[3]  = uni2cp_low[uni2cp_high[src[3]  >> 8] + (src[3]  & 0xff)];
+        dst[4]  = uni2cp_low[uni2cp_high[src[4]  >> 8] + (src[4]  & 0xff)];
+        dst[5]  = uni2cp_low[uni2cp_high[src[5]  >> 8] + (src[5]  & 0xff)];
+        dst[6]  = uni2cp_low[uni2cp_high[src[6]  >> 8] + (src[6]  & 0xff)];
+        dst[7]  = uni2cp_low[uni2cp_high[src[7]  >> 8] + (src[7]  & 0xff)];
+        dst[8]  = uni2cp_low[uni2cp_high[src[8]  >> 8] + (src[8]  & 0xff)];
+        dst[9]  = uni2cp_low[uni2cp_high[src[9]  >> 8] + (src[9]  & 0xff)];
+        dst[10] = uni2cp_low[uni2cp_high[src[10] >> 8] + (src[10] & 0xff)];
+        dst[11] = uni2cp_low[uni2cp_high[src[11] >> 8] + (src[11] & 0xff)];
+        dst[12] = uni2cp_low[uni2cp_high[src[12] >> 8] + (src[12] & 0xff)];
+        dst[13] = uni2cp_low[uni2cp_high[src[13] >> 8] + (src[13] & 0xff)];
+        dst[14] = uni2cp_low[uni2cp_high[src[14] >> 8] + (src[14] & 0xff)];
+        dst[15] = uni2cp_low[uni2cp_high[src[15] >> 8] + (src[15] & 0xff)];
+        src += 16;
+        dst += 16;
+        srclen -= 16;
+    }
+
+    /* now handle remaining characters */
+    src += srclen;
+    dst += srclen;
+    switch(srclen)
+    {
+    case 15: dst[-15] = uni2cp_low[uni2cp_high[src[-15] >> 8] + (src[-15] & 0xff)];
+    case 14: dst[-14] = uni2cp_low[uni2cp_high[src[-14] >> 8] + (src[-14] & 0xff)];
+    case 13: dst[-13] = uni2cp_low[uni2cp_high[src[-13] >> 8] + (src[-13] & 0xff)];
+    case 12: dst[-12] = uni2cp_low[uni2cp_high[src[-12] >> 8] + (src[-12] & 0xff)];
+    case 11: dst[-11] = uni2cp_low[uni2cp_high[src[-11] >> 8] + (src[-11] & 0xff)];
+    case 10: dst[-10] = uni2cp_low[uni2cp_high[src[-10] >> 8] + (src[-10] & 0xff)];
+    case 9:  dst[-9]  = uni2cp_low[uni2cp_high[src[-9]  >> 8] + (src[-9]  & 0xff)];
+    case 8:  dst[-8]  = uni2cp_low[uni2cp_high[src[-8]  >> 8] + (src[-8]  & 0xff)];
+    case 7:  dst[-7]  = uni2cp_low[uni2cp_high[src[-7]  >> 8] + (src[-7]  & 0xff)];
+    case 6:  dst[-6]  = uni2cp_low[uni2cp_high[src[-6]  >> 8] + (src[-6]  & 0xff)];
+    case 5:  dst[-5]  = uni2cp_low[uni2cp_high[src[-5]  >> 8] + (src[-5]  & 0xff)];
+    case 4:  dst[-4]  = uni2cp_low[uni2cp_high[src[-4]  >> 8] + (src[-4]  & 0xff)];
+    case 3:  dst[-3]  = uni2cp_low[uni2cp_high[src[-3]  >> 8] + (src[-3]  & 0xff)];
+    case 2:  dst[-2]  = uni2cp_low[uni2cp_high[src[-2]  >> 8] + (src[-2]  & 0xff)];
+    case 1:  dst[-1]  = uni2cp_low[uni2cp_high[src[-1]  >> 8] + (src[-1]  & 0xff)];
+    case 0: break;
+    }
+    return ret;
+}
+
+/* slow version of wcstombs_sbcs that handles the various flags */
+static int wcstombs_sbcs_slow( const struct sbcs_table *table, int flags,
+                               const WCHAR *src, unsigned int srclen,
+                               char *dst, unsigned int dstlen,
+                               const char *defchar, int *used )
+{
+    const unsigned char  * const uni2cp_low = table->uni2cp_low;
+    const unsigned short * const uni2cp_high = table->uni2cp_high;
+    unsigned char def;
+    unsigned int len;
+    int tmp;
+    WCHAR composed;
+
+    if (!defchar)
+        def = table->info.def_char & 0xff;
+    else
+        def = *defchar;
+
+    if (!used) used = &tmp;  /* avoid checking on every char */
+    *used = 0;
+
+    for (len = dstlen; srclen && len; dst++, len--, src++, srclen--)
+    {
+        WCHAR wch = *src;
+
+        if ((flags & WC_COMPOSITECHECK) && (srclen > 1) && (composed = compose(src)))
+        {
+            /* now check if we can use the composed char */
+            *dst = uni2cp_low[uni2cp_high[composed >> 8] + (composed & 0xff)];
+            if (is_valid_sbcs_mapping( table, flags, composed, *dst ))
+            {
+                /* we have a good mapping, use it */
+                src++;
+                srclen--;
+                continue;
+            }
+            /* no mapping for the composed char, check the other flags */
+            if (flags & WC_DEFAULTCHAR) /* use the default char instead */
+            {
+                *dst = def;
+                *used = 1;
+                src++;  /* skip the non-spacing char */
+                srclen--;
+                continue;
+            }
+            if (flags & WC_DISCARDNS) /* skip the second char of the composition */
+            {
+                src++;
+                srclen--;
+            }
+            /* WC_SEPCHARS is the default */
+        }
+
+        *dst = uni2cp_low[uni2cp_high[wch >> 8] + (wch & 0xff)];
+        if (!is_valid_sbcs_mapping( table, flags, wch, *dst ))
+        {
+            *dst = def;
+            *used = 1;
+        }
+    }
+    if (srclen) return -1;  /* overflow */
+    return dstlen - len;
+}
+
+
+/****************************************************************/
+/* dbcs support */
+
+/* check if 'ch' is an acceptable dbcs mapping for 'wch' */
+static inline int is_valid_dbcs_mapping( const struct dbcs_table *table, int flags,
+                                         WCHAR wch, unsigned short ch )
+{
+    if (ch == table->info.def_char && wch != table->info.def_unicode_char) return 0;
+    if (flags & WC_NO_BEST_FIT_CHARS)
+    {
+        /* check if char maps back to the same Unicode value */
+        if (ch & 0xff00)
+        {
+            unsigned char off = table->cp2uni_leadbytes[ch >> 8];
+            return (table->cp2uni[(off << 8) + (ch & 0xff)] == wch);
+        }
+        return (table->cp2uni[ch & 0xff] == wch);
+    }
+    return 1;
+}
+
+/* query necessary dst length for src string */
+static int get_length_dbcs( const struct dbcs_table *table, int flags,
+                            const WCHAR *src, unsigned int srclen,
+                            const char *defchar, int *used )
+{
+    const unsigned short * const uni2cp_low = table->uni2cp_low;
+    const unsigned short * const uni2cp_high = table->uni2cp_high;
+    WCHAR defchar_value = table->info.def_char;
+    WCHAR composed;
+    int len, tmp;
+
+    if (!defchar && !used && !(flags & WC_COMPOSITECHECK))
+    {
+        for (len = 0; srclen; srclen--, src++, len++)
+        {
+            if (uni2cp_low[uni2cp_high[*src >> 8] + (*src & 0xff)] & 0xff00) len++;
+        }
+        return len;
+    }
+
+    if (defchar) defchar_value = defchar[1] ? ((defchar[0] << 8) | defchar[1]) : defchar[0];
+    if (!used) used = &tmp;  /* avoid checking on every char */
+    *used = 0;
+    for (len = 0; srclen; len++, srclen--, src++)
+    {
+        unsigned short res;
+        WCHAR wch = *src;
+
+        if ((flags & WC_COMPOSITECHECK) && (srclen > 1) && (composed = compose(src)))
+        {
+            /* now check if we can use the composed char */
+            res = uni2cp_low[uni2cp_high[composed >> 8] + (composed & 0xff)];
+
+            if (is_valid_dbcs_mapping( table, flags, composed, res ))
+            {
+                /* we have a good mapping for the composed char, use it */
+                if (res & 0xff00) len++;
+                src++;
+                srclen--;
+                continue;
+            }
+            /* no mapping for the composed char, check the other flags */
+            if (flags & WC_DEFAULTCHAR) /* use the default char instead */
+            {
+                if (defchar_value & 0xff00) len++;
+                *used = 1;
+                src++;  /* skip the non-spacing char */
+                srclen--;
+                continue;
+            }
+            if (flags & WC_DISCARDNS) /* skip the second char of the composition */
+            {
+                src++;
+                srclen--;
+            }
+            /* WC_SEPCHARS is the default */
+        }
+
+        res = uni2cp_low[uni2cp_high[wch >> 8] + (wch & 0xff)];
+        if (!is_valid_dbcs_mapping( table, flags, wch, res ))
+        {
+            res = defchar_value;
+            *used = 1;
+        }
+        if (res & 0xff00) len++;
+    }
+    return len;
+}
+
+/* wcstombs for double-byte code page */
+static inline int wcstombs_dbcs( const struct dbcs_table *table,
+                                 const WCHAR *src, unsigned int srclen,
+                                 char *dst, unsigned int dstlen )
+{
+    const unsigned short * const uni2cp_low = table->uni2cp_low;
+    const unsigned short * const uni2cp_high = table->uni2cp_high;
+    int len;
+
+    for (len = dstlen; srclen && len; len--, srclen--, src++)
+    {
+        unsigned short res = uni2cp_low[uni2cp_high[*src >> 8] + (*src & 0xff)];
+        if (res & 0xff00)
+        {
+            if (len == 1) break;  /* do not output a partial char */
+            len--;
+            *dst++ = res >> 8;
+        }
+        *dst++ = (char)res;
+    }
+    if (srclen) return -1;  /* overflow */
+    return dstlen - len;
+}
+
+/* slow version of wcstombs_dbcs that handles the various flags */
+static int wcstombs_dbcs_slow( const struct dbcs_table *table, int flags,
+                               const WCHAR *src, unsigned int srclen,
+                               char *dst, unsigned int dstlen,
+                               const char *defchar, int *used )
+{
+    const unsigned short * const uni2cp_low = table->uni2cp_low;
+    const unsigned short * const uni2cp_high = table->uni2cp_high;
+    WCHAR defchar_value = table->info.def_char;
+    WCHAR composed;
+    int len, tmp;
+
+    if (defchar) defchar_value = defchar[1] ? ((defchar[0] << 8) | defchar[1]) : defchar[0];
+    if (!used) used = &tmp;  /* avoid checking on every char */
+    *used = 0;
+
+    for (len = dstlen; srclen && len; len--, srclen--, src++)
+    {
+        unsigned short res;
+        WCHAR wch = *src;
+
+        if ((flags & WC_COMPOSITECHECK) && (srclen > 1) && (composed = compose(src)))
+        {
+            /* now check if we can use the composed char */
+            res = uni2cp_low[uni2cp_high[composed >> 8] + (composed & 0xff)];
+
+            if (is_valid_dbcs_mapping( table, flags, composed, res ))
+            {
+                /* we have a good mapping for the composed char, use it */
+                src++;
+                srclen--;
+                goto output_char;
+            }
+            /* no mapping for the composed char, check the other flags */
+            if (flags & WC_DEFAULTCHAR) /* use the default char instead */
+            {
+                res = defchar_value;
+                *used = 1;
+                src++;  /* skip the non-spacing char */
+                srclen--;
+                goto output_char;
+            }
+            if (flags & WC_DISCARDNS) /* skip the second char of the composition */
+            {
+                src++;
+                srclen--;
+            }
+            /* WC_SEPCHARS is the default */
+        }
+
+        res = uni2cp_low[uni2cp_high[wch >> 8] + (wch & 0xff)];
+        if (!is_valid_dbcs_mapping( table, flags, wch, res ))
+        {
+            res = defchar_value;
+            *used = 1;
+        }
+
+    output_char:
+        if (res & 0xff00)
+        {
+            if (len == 1) break;  /* do not output a partial char */
+            len--;
+            *dst++ = res >> 8;
+        }
+        *dst++ = (char)res;
+    }
+    if (srclen) return -1;  /* overflow */
+    return dstlen - len;
+}
+
+/* wide char to multi byte string conversion */
+/* return -1 on dst buffer overflow */
+int wine_cp_wcstombs( const union cptable *table, int flags,
+                      const WCHAR *src, int srclen,
+                      char *dst, int dstlen, const char *defchar, int *used )
+{
+    if (table->info.char_size == 1)
+    {
+        if (flags || defchar || used)
+        {
+            if (!dstlen) return get_length_sbcs( &table->sbcs, flags, src, srclen, used );
+            return wcstombs_sbcs_slow( &table->sbcs, flags, src, srclen,
+                                       dst, dstlen, defchar, used );
+        }
+        if (!dstlen) return srclen;
+        return wcstombs_sbcs( &table->sbcs, src, srclen, dst, dstlen );
+    }
+    else /* mbcs */
+    {
+        if (!dstlen) return get_length_dbcs( &table->dbcs, flags, src, srclen, defchar, used );
+        if (flags || defchar || used)
+            return wcstombs_dbcs_slow( &table->dbcs, flags, src, srclen,
+                                       dst, dstlen, defchar, used );
+        return wcstombs_dbcs( &table->dbcs, src, srclen, dst, dstlen );
+    }
+}
+
+/* CP_SYMBOL implementation */
+/* return -1 on dst buffer overflow, -2 on invalid character */
+int wine_cpsymbol_wcstombs( const WCHAR *src, int srclen, char *dst, int dstlen)
+{
+    int len, i;
+    if( dstlen == 0) return srclen;
+    len = dstlen > srclen ? srclen : dstlen;
+    for( i = 0; i < len; i++)
+    {
+        WCHAR w = src [ i ];
+        if( w < 0x20 )
+            dst[i] = w;
+        else if( w >= 0xf020 && w < 0xf100)
+            dst[i] = w - 0xf000;
+        else
+            return -2;
+    }
+    if( srclen > len) return -1;
+    return len;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/wctype.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/wctype.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/wctype.c	(revision 16410)
@@ -0,0 +1,2058 @@
+/* Unicode ctype tables */
+/* Automatically generated; DO NOT EDIT!! */
+
+#include "wine/unicode.h"
+
+const unsigned short wine_wctype_table[16384] =
+{
+    /* offsets */
+    0x0100, 0x0200, 0x0300, 0x0400, 0x0500, 0x0600, 0x0700, 0x0800,
+    0x0900, 0x0a00, 0x0b00, 0x0c00, 0x0d00, 0x0e00, 0x0f00, 0x1000,
+    0x1100, 0x1200, 0x1300, 0x1400, 0x1500, 0x1600, 0x1700, 0x1800,
+    0x1900, 0x1a00, 0x1b00, 0x1c00, 0x0900, 0x1d00, 0x1e00, 0x1f00,
+    0x2000, 0x2100, 0x2200, 0x2300, 0x2400, 0x2500, 0x2600, 0x2700,
+    0x2800, 0x2500, 0x2500, 0x2900, 0x2a00, 0x2b00, 0x2c00, 0x2d00,
+    0x2e00, 0x2f00, 0x3000, 0x3100, 0x1600, 0x1600, 0x1600, 0x1600,
+    0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600,
+    0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600,
+    0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x3200, 0x1600, 0x1600,
+    0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600,
+    0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600,
+    0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600,
+    0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600,
+    0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600,
+    0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600,
+    0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600,
+    0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600,
+    0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600,
+    0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x3300,
+    0x3400, 0x1600, 0x1600, 0x1600, 0x3500, 0x0900, 0x0900, 0x3600,
+    0x3700, 0x0900, 0x0900, 0x0900, 0x1600, 0x1600, 0x1600, 0x1600,
+    0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600,
+    0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600,
+    0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600,
+    0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600,
+    0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x1600, 0x3800,
+    0x3900, 0x3900, 0x3900, 0x3900, 0x3900, 0x3900, 0x3900, 0x3900,
+    0x3900, 0x3900, 0x3900, 0x3900, 0x3900, 0x3900, 0x3900, 0x3900,
+    0x3900, 0x3900, 0x3900, 0x3900, 0x3900, 0x3900, 0x3900, 0x3900,
+    0x3900, 0x3900, 0x3900, 0x3900, 0x3900, 0x3900, 0x3900, 0x3900,
+    0x3900, 0x1600, 0x3a00, 0x3b00, 0x3c00, 0x3d00, 0x3e00, 0x3f00,
+    /* values */
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+    0x0020, 0x9068, 0x8028, 0x9028, 0xa028, 0x8028, 0x0020, 0x0020,
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+    0x0020, 0x0020, 0x0020, 0x0020, 0x8020, 0x8020, 0x8020, 0x9020,
+    0xa048, 0xb010, 0xb010, 0x5010, 0x5010, 0x5010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0x4010, 0x7010, 0x4010, 0x7010, 0x7010,
+    0x3084, 0x3084, 0x3084, 0x3084, 0x3084, 0x3084, 0x3084, 0x3084,
+    0x3084, 0x3084, 0x7010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0x1181, 0x1181, 0x1181, 0x1181, 0x1181, 0x1181, 0x1101,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1101, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0x1182, 0x1182, 0x1182, 0x1182, 0x1182, 0x1182, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0xb010, 0xb010, 0xb010, 0xb010, 0x0020,
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x8028, 0x0020, 0x0020,
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+    0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+    0x7048, 0xb010, 0x5010, 0x5010, 0x5010, 0x5010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0x1102, 0xb010, 0xb010, 0x0000, 0xb010, 0xb010,
+    0x5010, 0x5010, 0x3010, 0x3010, 0xb010, 0x1102, 0xb010, 0xb010,
+    0xb010, 0x3010, 0x1102, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0xb010,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0xb010,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101,
+    0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101,
+    0x1102, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1102,
+    0x1102, 0x1101, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1101,
+    0x1102, 0x1101, 0x1101, 0x1101, 0x1102, 0x1102, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1102, 0x1101, 0x1101, 0x1102, 0x1101, 0x1101,
+    0x1101, 0x1102, 0x1102, 0x1102, 0x1101, 0x1101, 0x1102, 0x1101,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1101,
+    0x1102, 0x1101, 0x1102, 0x1102, 0x1101, 0x1102, 0x1101, 0x1101,
+    0x1102, 0x1101, 0x1101, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101,
+    0x1101, 0x1102, 0x1102, 0x1100, 0x1101, 0x1102, 0x1102, 0x1102,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1101, 0x1103, 0x1102, 0x1101,
+    0x1103, 0x1102, 0x1101, 0x1103, 0x1102, 0x1101, 0x1102, 0x1101,
+    0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101,
+    0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1102, 0x1101, 0x1103, 0x1102, 0x1101, 0x1102, 0x1101, 0x1101,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1101, 0x1101, 0x1102, 0x1101, 0x1101, 0x1102,
+    0x1102, 0x1101, 0x1102, 0x1101, 0x1101, 0x1101, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1100, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0xb010, 0xb010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0x1010, 0x1010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0x1010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0112, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0000, 0x0000, 0x0000, 0x0000, 0xb010, 0xb010, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x1010, 0x1102, 0x1102, 0x1102, 0xb010, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0xb010, 0xb010, 0x1101, 0xb010,
+    0x1101, 0x1101, 0x1101, 0x0000, 0x1101, 0x0000, 0x1101, 0x1101,
+    0x1102, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x0000, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x0000,
+    0x1102, 0x1102, 0x1101, 0x1101, 0x1101, 0x1102, 0x1102, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1101, 0x1102, 0xb010, 0x1101,
+    0x1102, 0x1101, 0x1101, 0x1102, 0x1102, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0000,
+    0x0010, 0x0010, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101,
+    0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x0000,
+    0x0000, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x0000, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x0000, 0x1010, 0xb010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x2010, 0x0010,
+    0x2010, 0x0010, 0x0010, 0x2010, 0x0010, 0x0010, 0x2010, 0x0010,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x2100, 0x2100, 0x2100, 0x2010, 0x2010, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x6000, 0x6000, 0x6000, 0x6000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x2010, 0x7010, 0x2010, 0xb010, 0xb010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x2010, 0x0000, 0x0000, 0x2010, 0x2010,
+    0x0000, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x2010, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0000,
+    0x6004, 0x6004, 0x6004, 0x6004, 0x6004, 0x6004, 0x6004, 0x6004,
+    0x6004, 0x6004, 0x5010, 0x6010, 0x6010, 0x2010, 0x2100, 0x2100,
+    0x0010, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2010, 0x2100, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x6000, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x2010, 0x2010, 0x0010,
+    0x0010, 0xb010, 0x0010, 0x0010, 0x0010, 0x0010, 0x2100, 0x2100,
+    0x3004, 0x3004, 0x3004, 0x3004, 0x3004, 0x3004, 0x3004, 0x3004,
+    0x3004, 0x3004, 0x2100, 0x2100, 0x2100, 0x2010, 0x2010, 0x2100,
+    0x2010, 0x2010, 0x2010, 0x2010, 0x2010, 0x2010, 0x2010, 0x2010,
+    0x2010, 0x2010, 0x2010, 0x2010, 0x2010, 0x2010, 0x0000, 0x0020,
+    0x2100, 0x0010, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0000, 0x0000, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x2100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x2004, 0x2004, 0x2004, 0x2004, 0x2004, 0x2004, 0x2004, 0x2004,
+    0x2004, 0x2004, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x2010, 0x2010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0x2010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0010, 0x0010, 0x1010, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x0000, 0x0000, 0x0010, 0x1100, 0x1010, 0x1010,
+    0x1010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x1010, 0x1010, 0x1010, 0x1010, 0x0010, 0x0000, 0x0000,
+    0x1100, 0x0010, 0x0010, 0x0010, 0x0010, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x0010, 0x0010, 0x1010, 0x1010, 0x1004, 0x1004,
+    0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004,
+    0x1010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0000, 0x0010, 0x1010, 0x1010, 0x0000, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x0000, 0x1100,
+    0x1100, 0x0000, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x0000, 0x1100, 0x0000, 0x0000, 0x0000, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x0000, 0x0000, 0x0010, 0x1100, 0x1010, 0x1010,
+    0x1010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0000, 0x0000, 0x1010,
+    0x1010, 0x0000, 0x0000, 0x1010, 0x1010, 0x0010, 0x1100, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1010,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x1100, 0x1100, 0x0000, 0x1100,
+    0x1100, 0x1100, 0x0010, 0x0010, 0x0000, 0x0000, 0x1004, 0x1004,
+    0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004,
+    0x1100, 0x1100, 0x5010, 0x5010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0010, 0x0010, 0x1010, 0x0000, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x1100,
+    0x1100, 0x0000, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x0000, 0x1100, 0x1100, 0x0000, 0x1100, 0x1100, 0x0000,
+    0x1100, 0x1100, 0x0000, 0x0000, 0x0010, 0x0000, 0x1010, 0x1010,
+    0x1010, 0x0010, 0x0010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010,
+    0x0010, 0x0000, 0x0000, 0x0010, 0x0010, 0x0010, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x1100, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1004, 0x1004,
+    0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004,
+    0x0010, 0x0010, 0x1100, 0x1100, 0x1100, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0010, 0x0010, 0x1010, 0x0000, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x1100,
+    0x1100, 0x1100, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x0000, 0x1100, 0x1100, 0x0000, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x0000, 0x0000, 0x0010, 0x1100, 0x1010, 0x1010,
+    0x1010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0000, 0x0010,
+    0x0010, 0x1010, 0x0000, 0x1010, 0x1010, 0x0010, 0x0000, 0x0000,
+    0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x0010, 0x0010, 0x0000, 0x0000, 0x1004, 0x1004,
+    0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004,
+    0x0000, 0x5010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0010, 0x1010, 0x1010, 0x0000, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x0000, 0x1100,
+    0x1100, 0x0000, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x0000, 0x1100, 0x1100, 0x0000, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x0000, 0x0000, 0x0010, 0x1100, 0x1010, 0x0010,
+    0x1010, 0x0010, 0x0010, 0x0010, 0x0000, 0x0000, 0x0000, 0x1010,
+    0x1010, 0x0000, 0x0000, 0x1010, 0x1010, 0x0010, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x1010,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x1100, 0x1100, 0x0000, 0x1100,
+    0x1100, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x1004, 0x1004,
+    0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004,
+    0x1010, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0010, 0x1100, 0x0000, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0000, 0x0000, 0x0000, 0x1100, 0x1100,
+    0x1100, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x0000,
+    0x0000, 0x1100, 0x1100, 0x0000, 0x1100, 0x0000, 0x1100, 0x1100,
+    0x0000, 0x0000, 0x0000, 0x1100, 0x1100, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x0000, 0x0000, 0x0000, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x1010, 0x1010,
+    0x0010, 0x1010, 0x1010, 0x0000, 0x0000, 0x0000, 0x1010, 0x1010,
+    0x1010, 0x0000, 0x1010, 0x1010, 0x1010, 0x0010, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1010,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1004, 0x1004,
+    0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004,
+    0x1010, 0x1010, 0x1010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0x5010, 0xb010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x1010, 0x1010, 0x1010, 0x0000, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x1100, 0x1100,
+    0x1100, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010,
+    0x0010, 0x1010, 0x1010, 0x1010, 0x1010, 0x0000, 0x0010, 0x0010,
+    0x0010, 0x0000, 0x0010, 0x0010, 0x0010, 0x0010, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x1004, 0x1004,
+    0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x1010, 0x1010, 0x0000, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x1100, 0x1100,
+    0x1100, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x0000, 0x0000, 0x0010, 0x1100, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x0000, 0x1010, 0x1010,
+    0x1010, 0x0000, 0x1010, 0x1010, 0x0010, 0x0010, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1010, 0x1010, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1100, 0x0000,
+    0x1100, 0x1100, 0x0010, 0x0010, 0x0000, 0x0000, 0x1004, 0x1004,
+    0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004,
+    0x0000, 0xb010, 0xb010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x1010, 0x1010, 0x0000, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x1100, 0x1100,
+    0x1100, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x1010, 0x1010,
+    0x1010, 0x0010, 0x0010, 0x0010, 0x0000, 0x0000, 0x1010, 0x1010,
+    0x1010, 0x0000, 0x1010, 0x1010, 0x1010, 0x0010, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1010,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x1004, 0x1004,
+    0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x1010, 0x1010, 0x0000, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000,
+    0x0000, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x1100, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000,
+    0x0000, 0x0000, 0x0010, 0x0000, 0x0000, 0x0000, 0x0000, 0x1010,
+    0x1010, 0x1010, 0x0010, 0x0010, 0x0010, 0x0000, 0x0010, 0x0000,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x1010, 0x1010, 0x1010, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x0010, 0x1100, 0x1100, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0000, 0x0000, 0x0000, 0x0000, 0x5010,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x1010,
+    0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004,
+    0x1004, 0x1004, 0x1010, 0x1010, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x1100, 0x1100, 0x0000, 0x1100, 0x0000, 0x0000, 0x1100,
+    0x1100, 0x0000, 0x1100, 0x0000, 0x0000, 0x1100, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0000, 0x1100, 0x1100, 0x1100, 0x0000, 0x1100, 0x0000, 0x1100,
+    0x0000, 0x0000, 0x1100, 0x1100, 0x0000, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x0010, 0x1100, 0x1100, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0000, 0x0010, 0x0010, 0x1100, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x1010, 0x0000,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0000, 0x0000,
+    0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004,
+    0x1004, 0x1004, 0x0000, 0x0000, 0x1100, 0x1100, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x0010, 0x0010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004,
+    0x1004, 0x1004, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x0010, 0x1010, 0x0010,
+    0x1010, 0x0010, 0xb010, 0xb010, 0xb010, 0xb010, 0x1010, 0x1010,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x1010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x1010, 0x0010, 0x0010,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0000, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0000, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x0010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x0000, 0x0000, 0x1010,
+    0x1010, 0x1010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0000, 0x1100, 0x1100, 0x0000, 0x1010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x1010, 0x0010, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010,
+    0x1010, 0x0010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004,
+    0x1004, 0x1004, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1010, 0x1010,
+    0x0010, 0x0010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1010, 0x1010, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000,
+    0x1100, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000,
+    0x1100, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1010, 0x1010, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xa008, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0xb010, 0xb010, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x0010, 0x0010, 0x0010, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x0010, 0x0010, 0x0010, 0x1010, 0x1010, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x0010, 0x0010, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x1100, 0x1100,
+    0x1100, 0x0000, 0x0010, 0x0010, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1000, 0x1000, 0x1010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x0010, 0x1010,
+    0x1010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x5010, 0x1100, 0x0010, 0x0000, 0x0000,
+    0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004,
+    0x1004, 0x1004, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0x0030, 0x0030, 0x0030, 0xa028, 0x0000,
+    0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004,
+    0x1004, 0x1004, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1010, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x0010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x0000, 0x0000,
+    0x0010, 0x0010, 0x0010, 0x1010, 0x1010, 0x1010, 0x1010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1010, 0x1010, 0x0010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x0010, 0x0010, 0x0010, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xb010, 0x0000, 0x0000, 0x0000, 0xb010, 0xb010, 0x1004, 0x1004,
+    0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1010, 0x1010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004,
+    0x1004, 0x1004, 0x0000, 0x0000, 0x0000, 0x0000, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0010,
+    0x0010, 0x1010, 0x1010, 0x1010, 0x0000, 0x0000, 0x1010, 0x1010,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x1010, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x0010, 0x1010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x1010, 0x0010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x0010, 0x1010, 0x1010, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004,
+    0x1004, 0x1004, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1010, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x0000, 0x0000,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x0000, 0x0000,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x0000, 0x0000,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x0000, 0x0000,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x0000, 0x1101, 0x0000, 0x1101, 0x0000, 0x1101, 0x0000, 0x1101,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x0000, 0x0000,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x0000, 0x1102, 0x1102,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0xb010, 0x1102, 0xb010,
+    0xb010, 0xb010, 0x1102, 0x1102, 0x1102, 0x0000, 0x1102, 0x1102,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0xb010, 0xb010, 0xb010,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x0000, 0x0000, 0x1102, 0x1102,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x0000, 0xb010, 0xb010, 0xb010,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0xb010, 0xb010, 0xb010,
+    0x0000, 0x0000, 0x1102, 0x1102, 0x1102, 0x0000, 0x1102, 0x1102,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0xb010, 0xb010, 0x0000,
+    0xa008, 0xa008, 0xa008, 0xa008, 0xa008, 0xa008, 0xa008, 0xa008,
+    0xa008, 0xa008, 0xa008, 0x0000, 0x0020, 0x0020, 0x1020, 0x2020,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xa008, 0x8008, 0xb020, 0xb020, 0xb020, 0xb020, 0xb020, 0x7008,
+    0x5010, 0x5010, 0x5010, 0x5010, 0x5010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0x7010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xa008,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+    0x3010, 0x1102, 0x0000, 0x0000, 0x3010, 0x3010, 0x3010, 0x3010,
+    0x3010, 0x3010, 0x4010, 0x4010, 0xb010, 0xb010, 0xb010, 0x1102,
+    0x3010, 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, 0x3010,
+    0x3010, 0x3010, 0x4010, 0x4010, 0xb010, 0xb010, 0xb010, 0x0000,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x5010, 0x5010, 0x5010, 0x5010, 0x5010, 0x5010, 0x5010, 0x5010,
+    0x5010, 0x5010, 0x5010, 0x5010, 0x5010, 0x5010, 0x5010, 0x5010,
+    0x5010, 0x5010, 0x5010, 0x5010, 0x5010, 0x5010, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xb010, 0xb010, 0x1101, 0xb010, 0xb010, 0xb010, 0xb010, 0x1101,
+    0xb010, 0xb010, 0x1102, 0x1101, 0x1101, 0x1101, 0x1102, 0x1102,
+    0x1101, 0x1101, 0x1101, 0x1102, 0xb010, 0x1101, 0xb010, 0xb010,
+    0xb010, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0x1101, 0xb010, 0x1101, 0xb010,
+    0x1101, 0xb010, 0x1101, 0x1101, 0x1101, 0x1101, 0x5010, 0x1102,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1102, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1102, 0xb010, 0xb010, 0x1102, 0x1102, 0x1101, 0x1101,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0x1101, 0x1102, 0x1102,
+    0x1102, 0x1102, 0xb010, 0xb010, 0xb010, 0xb010, 0x1102, 0x0000,
+    0x0000, 0x0000, 0x0000, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111,
+    0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111,
+    0x1112, 0x1112, 0x1112, 0x1112, 0x1112, 0x1112, 0x1112, 0x1112,
+    0x1112, 0x1112, 0x1112, 0x1112, 0x1112, 0x1112, 0x1112, 0x1112,
+    0x1010, 0x1010, 0x1010, 0x1101, 0x1102, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0x4010, 0x5010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0x1010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0x3010, 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, 0x3010,
+    0x3010, 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, 0x3010,
+    0x3010, 0x3010, 0x3010, 0x3010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1111, 0x1111,
+    0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111,
+    0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111,
+    0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111,
+    0x1112, 0x1112, 0x1112, 0x1112, 0x1112, 0x1112, 0x1112, 0x1112,
+    0x1112, 0x1112, 0x1112, 0x1112, 0x1112, 0x1112, 0x1112, 0x1112,
+    0x1112, 0x1112, 0x1112, 0x1112, 0x1112, 0x1112, 0x1112, 0x1112,
+    0x1112, 0x1112, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0x0000, 0x0000, 0x0000,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0x1010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0xb010, 0xb010, 0xb010, 0xb010, 0x0000, 0xb010, 0xb010,
+    0xb010, 0xb010, 0x0000, 0x0000, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0x0000, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0x0000, 0xb010, 0x0000, 0xb010,
+    0xb010, 0xb010, 0xb010, 0x0000, 0x0000, 0x0000, 0xb010, 0x0000,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0x0000,
+    0x0000, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0x0000, 0x0000, 0x0000,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0x0000, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0x0000,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xb010, 0xb010, 0xb010, 0xb010, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x0000,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x0000,
+    0x1101, 0x1102, 0x1101, 0x1101, 0x1101, 0x1102, 0x1102, 0x1101,
+    0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x1102, 0x1101, 0x1102, 0x1102,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102, 0x1101, 0x1102,
+    0x1101, 0x1102, 0x1101, 0x1102, 0x1102, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1010,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0x0000, 0x0000, 0x0000, 0x0000, 0xb010, 0xb010, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0x0000, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xa048, 0xb010, 0xb010, 0xb010, 0xb010, 0x1010, 0x1100, 0x1010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0xb010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0xb010, 0xb010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1100, 0xb010, 0xb010, 0xb010,
+    0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000,
+    0x0000, 0x0010, 0x0010, 0xb010, 0xb010, 0x1010, 0x1010, 0x1100,
+    0xb010, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0xb010, 0x1010, 0x1010, 0x1010, 0x1100,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0xb010, 0xb010, 0x0000,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0xb010, 0xb010, 0xb010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x0000,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0xb010, 0xb010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010,
+    0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0xb010,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1010, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x0000, 0x0000,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xb010, 0xb010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x0010, 0x1100, 0x1100, 0x1100, 0x0010, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0010, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1010, 0x1010, 0x0010, 0x0010, 0x1010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0xb010, 0xb010, 0xb010, 0xb010,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2100, 0x0010, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x4010, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x0000,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x0000, 0x2100, 0x0000,
+    0x2100, 0x2100, 0x0000, 0x2100, 0x2100, 0x0000, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0xb010, 0xb010,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x0000, 0x0000, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2010, 0xb010, 0x0000, 0x0000,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0010, 0x0010, 0x0010, 0x0010, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0x7010, 0xb010, 0x7010, 0x0000, 0xb010, 0x7010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0x5010,
+    0xb010, 0xb010, 0x4010, 0x4010, 0xb010, 0xb010, 0xb010, 0x0000,
+    0xb010, 0x5010, 0x5010, 0xb010, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x0000, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x2100,
+    0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x0000, 0x0000, 0x0060,
+    0x0000, 0xb010, 0xb010, 0x5010, 0x5010, 0x5010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0x4010, 0x7010, 0x4010, 0x7010, 0x7010,
+    0x3084, 0x3084, 0x3084, 0x3084, 0x3084, 0x3084, 0x3084, 0x3084,
+    0x3084, 0x3084, 0x7010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0x1181, 0x1181, 0x1181, 0x1181, 0x1181, 0x1181, 0x1101,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101, 0x1101,
+    0x1101, 0x1101, 0x1101, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0x1182, 0x1182, 0x1182, 0x1182, 0x1182, 0x1182, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102, 0x1102,
+    0x1102, 0x1102, 0x1102, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1010, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1010, 0x1010,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000,
+    0x0000, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0000, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0000, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100,
+    0x0000, 0x0000, 0x1100, 0x1100, 0x1100, 0x0000, 0x0000, 0x0000,
+    0x5010, 0x5010, 0xb010, 0xb010, 0xb010, 0x5010, 0x5010, 0x0000,
+    0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0xb020, 0xb020, 0xb020, 0xb010, 0xb010, 0x0000, 0x0000
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/wine.def
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/wine.def	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/wine.def	(revision 16410)
@@ -0,0 +1,108 @@
+LIBRARY libwine.dll
+
+EXPORTS
+    __wine_dbg_get_channel_flags
+    __wine_dbg_set_channel_flags
+    __wine_dbg_set_functions
+    __wine_dll_register
+    __wine_main_argc
+    __wine_main_argv
+    __wine_main_environ
+    __wine_main_wargv
+    atoiW
+    atolW
+    get_char_typeW
+    isalnumW
+    isalphaW
+    iscntrlW
+    isdigitW
+    isgraphW
+    islowerW
+    isprintW
+    ispunctW
+    isspaceW
+    isupperW
+    isxdigitW
+    memchrW
+    memicmpW
+    memrchrW
+    snprintfW
+    sprintfW
+    strcatW
+    strchrW
+    strcmpW
+    strcmpiW
+    strcpyW
+    strcspnW
+    strlenW
+    strlwrW
+    strncmpW
+    strncmpiW
+    strpbrkW
+    strrchrW
+    strspnW
+    strstrW
+    strtolW
+    strtoulW
+    struprW
+    tolowerW
+    toupperW
+    vsnprintfW
+    vsprintfW
+    wine_anon_mmap
+    wine_call_on_stack
+    wine_casemap_lower
+    wine_casemap_upper
+    wine_compare_string
+    wine_cp_enum_table
+    wine_cp_get_table
+    wine_cp_mbstowcs
+    wine_cp_wcstombs
+    wine_cpsymbol_mbstowcs
+    wine_cpsymbol_wcstombs
+    wine_dbg_log
+    wine_dbg_printf
+    wine_dbg_sprintf
+    wine_dbgstr_an
+    wine_dbgstr_wn
+    wine_dlclose
+    wine_dll_enum_load_path
+    wine_dll_get_owner
+    wine_dll_load
+    wine_dll_load_main_exe
+    wine_dll_set_callback
+    wine_dll_unload
+    wine_dlopen
+    wine_dlsym
+    wine_exec_wine_binary
+    wine_fold_string
+    wine_get_build_dir
+    wine_get_build_id
+    wine_get_config_dir
+    wine_get_data_dir
+    wine_get_server_dir
+    wine_get_sortkey
+    wine_get_user_name
+    wine_get_version
+    wine_init
+    wine_init_argv0_path
+    wine_is_dbcs_leadbyte
+    wine_ldt_alloc_entries
+    wine_ldt_copy
+    wine_ldt_free_entries
+    wine_ldt_get_entry
+    wine_ldt_get_ptr
+    wine_ldt_init_locking
+    wine_ldt_is_system
+    wine_ldt_realloc_entries
+    wine_ldt_set_entry
+    wine_mmap_add_reserved_area
+    wine_mmap_enum_reserved_areas
+    wine_mmap_is_in_reserved_area
+    wine_mmap_remove_reserved_area
+    wine_pthread_get_functions
+    wine_pthread_set_functions
+    wine_switch_to_stack
+    wine_utf8_mbstowcs
+    wine_utf8_wcstombs
+    wine_wctype_table
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/wine.map
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/wine.map	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/libWine/wine.map	(revision 16410)
@@ -0,0 +1,122 @@
+WINE_1.0
+{
+  global:
+    __wine_dbg_get_channel_flags;
+    __wine_dbg_set_channel_flags;
+    __wine_dbg_set_functions;
+    __wine_dll_register;
+    __wine_main_argc;
+    __wine_main_argv;
+    __wine_main_environ;
+    __wine_main_wargv;
+    atoiW;
+    atolW;
+    get_char_typeW;
+    isalnumW;
+    isalphaW;
+    iscntrlW;
+    isdigitW;
+    isgraphW;
+    islowerW;
+    isprintW;
+    ispunctW;
+    isspaceW;
+    isupperW;
+    isxdigitW;
+    memchrW;
+    memicmpW;
+    memrchrW;
+    snprintfW;
+    sprintfW;
+    strcatW;
+    strchrW;
+    strcmpW;
+    strcmpiW;
+    strcpyW;
+    strcspnW;
+    strlenW;
+    strlwrW;
+    strncmpW;
+    strncmpiW;
+    strpbrkW;
+    strrchrW;
+    strspnW;
+    strstrW;
+    strtolW;
+    strtoulW;
+    struprW;
+    tolowerW;
+    toupperW;
+    vsnprintfW;
+    vsprintfW;
+    wine_anon_mmap;
+    wine_call_on_stack;
+    wine_casemap_lower;
+    wine_casemap_upper;
+    wine_compare_string;
+    wine_cp_enum_table;
+    wine_cp_get_table;
+    wine_cp_mbstowcs;
+    wine_cp_wcstombs;
+    wine_cpsymbol_mbstowcs;
+    wine_cpsymbol_wcstombs;
+    wine_dbg_log;
+    wine_dbg_printf;
+    wine_dbg_sprintf;
+    wine_dbgstr_an;
+    wine_dbgstr_wn;
+    wine_dlclose;
+    wine_dll_enum_load_path;
+    wine_dll_get_owner;
+    wine_dll_load;
+    wine_dll_load_main_exe;
+    wine_dll_set_callback;
+    wine_dll_unload;
+    wine_dlopen;
+    wine_dlsym;
+    wine_exec_wine_binary;
+    wine_fold_string;
+    wine_get_build_dir;
+    wine_get_build_id;
+    wine_get_config_dir;
+    wine_get_cs;
+    wine_get_data_dir;
+    wine_get_ds;
+    wine_get_es;
+    wine_get_fs;
+    wine_get_gs;
+    wine_get_server_dir;
+    wine_get_sortkey;
+    wine_get_ss;
+    wine_get_user_name;
+    wine_get_version;
+    wine_init;
+    wine_init_argv0_path;
+    wine_is_dbcs_leadbyte;
+    wine_ldt_alloc_entries;
+    wine_ldt_alloc_fs;
+    wine_ldt_copy;
+    wine_ldt_free_entries;
+    wine_ldt_free_fs;
+    wine_ldt_get_entry;
+    wine_ldt_get_ptr;
+    wine_ldt_init_fs;
+    wine_ldt_init_locking;
+    wine_ldt_is_system;
+    wine_ldt_realloc_entries;
+    wine_ldt_set_entry;
+    wine_mmap_add_reserved_area;
+    wine_mmap_enum_reserved_areas;
+    wine_mmap_is_in_reserved_area;
+    wine_mmap_remove_reserved_area;
+    wine_pthread_get_functions;
+    wine_pthread_set_functions;
+    wine_set_fs;
+    wine_set_gs;
+    wine_switch_to_stack;
+    wine_utf8_mbstowcs;
+    wine_utf8_wcstombs;
+    wine_wctype_table;
+
+  local: *;
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/arb_program_shader.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/arb_program_shader.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/arb_program_shader.c	(revision 16410)
@@ -0,0 +1,3687 @@
+/*
+ * Pixel and vertex shaders implementation using ARB_vertex_program
+ * and ARB_fragment_program GL extensions.
+ *
+ * Copyright 2002-2003 Jason Edmeades
+ * Copyright 2002-2003 Raphael Junqueira
+ * Copyright 2004 Christian Costa
+ * Copyright 2005 Oliver Stieber
+ * Copyright 2006 Ivan Gyurdiev
+ * Copyright 2006 Jason Green
+ * Copyright 2006 Henri Verbeet
+ * Copyright 2007-2008 Stefan Dösinger for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+
+#include <math.h>
+#include <stdio.h>
+
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d_shader);
+WINE_DECLARE_DEBUG_CHANNEL(d3d_constants);
+WINE_DECLARE_DEBUG_CHANNEL(d3d_caps);
+WINE_DECLARE_DEBUG_CHANNEL(d3d);
+
+#define GLINFO_LOCATION      (*gl_info)
+
+/* Internally used shader constants. Applications can use constants 0 to GL_LIMITS(vshader_constantsF) - 1,
+ * so upload them above that
+ */
+#define ARB_SHADER_PRIVCONST_BASE GL_LIMITS(vshader_constantsF)
+#define ARB_SHADER_PRIVCONST_POS ARB_SHADER_PRIVCONST_BASE + 0
+
+/* ARB_program_shader private data */
+struct shader_arb_priv {
+    GLuint                  current_vprogram_id;
+    GLuint                  current_fprogram_id;
+    GLuint                  depth_blt_vprogram_id;
+    GLuint                  depth_blt_fprogram_id[tex_type_count];
+    BOOL                    use_arbfp_fixed_func;
+    struct hash_table_t     *fragment_shaders;
+};
+
+/********************************************************
+ * ARB_[vertex/fragment]_program helper functions follow
+ ********************************************************/
+
+/** 
+ * Loads floating point constants into the currently set ARB_vertex/fragment_program.
+ * When constant_list == NULL, it will load all the constants.
+ *  
+ * @target_type should be either GL_VERTEX_PROGRAM_ARB (for vertex shaders)
+ *  or GL_FRAGMENT_PROGRAM_ARB (for pixel shaders)
+ */
+static unsigned int shader_arb_load_constantsF(IWineD3DBaseShaderImpl* This, const WineD3D_GL_Info *gl_info,
+        GLuint target_type, unsigned int max_constants, const float *constants, char *dirty_consts)
+{
+    local_constant* lconst;
+    DWORD i, j;
+    unsigned int ret;
+
+    if (TRACE_ON(d3d_shader)) {
+        for(i = 0; i < max_constants; i++) {
+            if(!dirty_consts[i]) continue;
+            TRACE_(d3d_constants)("Loading constants %i: %f, %f, %f, %f\n", i,
+                        constants[i * 4 + 0], constants[i * 4 + 1],
+                        constants[i * 4 + 2], constants[i * 4 + 3]);
+        }
+    }
+    /* In 1.X pixel shaders constants are implicitly clamped in the range [-1;1] */
+    if(target_type == GL_FRAGMENT_PROGRAM_ARB &&
+       WINED3DSHADER_VERSION_MAJOR(This->baseShader.hex_version) == 1) {
+        float lcl_const[4];
+        for(i = 0; i < max_constants; i++) {
+            if(!dirty_consts[i]) continue;
+            dirty_consts[i] = 0;
+
+            j = 4 * i;
+            if(constants[j + 0] > 1.0) lcl_const[0] = 1.0;
+            else if(constants[j + 0] < -1.0) lcl_const[0] = -1.0;
+            else lcl_const[0] = constants[j + 0];
+
+            if(constants[j + 1] > 1.0) lcl_const[1] = 1.0;
+            else if(constants[j + 1] < -1.0) lcl_const[1] = -1.0;
+            else lcl_const[1] = constants[j + 1];
+
+            if(constants[j + 2] > 1.0) lcl_const[2] = 1.0;
+            else if(constants[j + 2] < -1.0) lcl_const[2] = -1.0;
+            else lcl_const[2] = constants[j + 2];
+
+            if(constants[j + 3] > 1.0) lcl_const[3] = 1.0;
+            else if(constants[j + 3] < -1.0) lcl_const[3] = -1.0;
+            else lcl_const[3] = constants[j + 3];
+
+            GL_EXTCALL(glProgramEnvParameter4fvARB(target_type, i, lcl_const));
+        }
+    } else {
+        if(GL_SUPPORT(EXT_GPU_PROGRAM_PARAMETERS)) {
+            /* TODO: Benchmark if we're better of with finding the dirty constants ourselves,
+             * or just reloading *all* constants at once
+             *
+            GL_EXTCALL(glProgramEnvParameters4fvEXT(target_type, 0, max_constants, constants));
+             */
+            for(i = 0; i < max_constants; i++) {
+                if(!dirty_consts[i]) continue;
+
+                /* Find the next block of dirty constants */
+                dirty_consts[i] = 0;
+                j = i;
+                for(i++; (i < max_constants) && dirty_consts[i]; i++) {
+                    dirty_consts[i] = 0;
+                }
+
+                GL_EXTCALL(glProgramEnvParameters4fvEXT(target_type, j, i - j, constants + (j * 4)));
+            }
+        } else {
+            for(i = 0; i < max_constants; i++) {
+                if(dirty_consts[i]) {
+                    dirty_consts[i] = 0;
+                    GL_EXTCALL(glProgramEnvParameter4fvARB(target_type, i, constants + (i * 4)));
+                }
+            }
+        }
+    }
+    checkGLcall("glProgramEnvParameter4fvARB()");
+
+    /* Load immediate constants */
+    if(This->baseShader.load_local_constsF) {
+        if (TRACE_ON(d3d_shader)) {
+            LIST_FOR_EACH_ENTRY(lconst, &This->baseShader.constantsF, local_constant, entry) {
+                GLfloat* values = (GLfloat*)lconst->value;
+                TRACE_(d3d_constants)("Loading local constants %i: %f, %f, %f, %f\n", lconst->idx,
+                        values[0], values[1], values[2], values[3]);
+            }
+        }
+        /* Immediate constants are clamped for 1.X shaders at loading times */
+        ret = 0;
+        LIST_FOR_EACH_ENTRY(lconst, &This->baseShader.constantsF, local_constant, entry) {
+            dirty_consts[lconst->idx] = 1; /* Dirtify so the non-immediate constant overwrites it next time */
+            ret = max(ret, lconst->idx + 1);
+            GL_EXTCALL(glProgramEnvParameter4fvARB(target_type, lconst->idx, (GLfloat*)lconst->value));
+        }
+        checkGLcall("glProgramEnvParameter4fvARB()");
+        return ret; /* The loaded immediate constants need reloading for the next shader */
+    } else {
+        return 0; /* No constants are dirty now */
+    }
+}
+
+/**
+ * Loads the app-supplied constants into the currently set ARB_[vertex/fragment]_programs.
+ * 
+ * We only support float constants in ARB at the moment, so don't 
+ * worry about the Integers or Booleans
+ */
+static void shader_arb_load_constants(
+    IWineD3DDevice* device,
+    char usePixelShader,
+    char useVertexShader) {
+   
+    IWineD3DDeviceImpl* deviceImpl = (IWineD3DDeviceImpl*) device; 
+    IWineD3DStateBlockImpl* stateBlock = deviceImpl->stateBlock;
+    const WineD3D_GL_Info *gl_info = &deviceImpl->adapter->gl_info;
+    unsigned char i;
+
+    if (useVertexShader) {
+        IWineD3DBaseShaderImpl* vshader = (IWineD3DBaseShaderImpl*) stateBlock->vertexShader;
+
+        /* Load DirectX 9 float constants for vertex shader */
+        deviceImpl->highest_dirty_vs_const = shader_arb_load_constantsF(
+                vshader, gl_info, GL_VERTEX_PROGRAM_ARB,
+                deviceImpl->highest_dirty_vs_const,
+                stateBlock->vertexShaderConstantF,
+                deviceImpl->activeContext->vshader_const_dirty);
+
+        /* Upload the position fixup */
+        GL_EXTCALL(glProgramEnvParameter4fvARB(GL_VERTEX_PROGRAM_ARB, ARB_SHADER_PRIVCONST_POS, deviceImpl->posFixup));
+    }
+
+    if (usePixelShader) {
+
+        IWineD3DBaseShaderImpl* pshader = (IWineD3DBaseShaderImpl*) stateBlock->pixelShader;
+        IWineD3DPixelShaderImpl *psi = (IWineD3DPixelShaderImpl *) pshader;
+
+        /* Load DirectX 9 float constants for pixel shader */
+        deviceImpl->highest_dirty_ps_const = shader_arb_load_constantsF(
+                pshader, gl_info, GL_FRAGMENT_PROGRAM_ARB,
+                deviceImpl->highest_dirty_ps_const,
+                stateBlock->pixelShaderConstantF,
+                deviceImpl->activeContext->pshader_const_dirty);
+
+        for(i = 0; i < psi->numbumpenvmatconsts; i++) {
+            /* The state manager takes care that this function is always called if the bump env matrix changes
+             */
+            const float *data = (const float *)&stateBlock->textureState[(int) psi->bumpenvmatconst[i].texunit][WINED3DTSS_BUMPENVMAT00];
+            GL_EXTCALL(glProgramEnvParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, psi->bumpenvmatconst[i].const_num, data));
+            deviceImpl->activeContext->pshader_const_dirty[psi->bumpenvmatconst[i].const_num] = 1;
+
+            if(psi->luminanceconst[i].const_num != -1) {
+                /* WINED3DTSS_BUMPENVLSCALE and WINED3DTSS_BUMPENVLOFFSET are next to each other.
+                 * point gl to the scale, and load 4 floats. x = scale, y = offset, z and w are junk, we
+                 * don't care about them. The pointers are valid for sure because the stateblock is bigger.
+                 * (they're WINED3DTSS_TEXTURETRANSFORMFLAGS and WINED3DTSS_ADDRESSW, so most likely 0 or NaN
+                 */
+                const float *scale = (const float *)&stateBlock->textureState[(int) psi->luminanceconst[i].texunit][WINED3DTSS_BUMPENVLSCALE];
+                GL_EXTCALL(glProgramEnvParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, psi->luminanceconst[i].const_num, scale));
+                deviceImpl->activeContext->pshader_const_dirty[psi->luminanceconst[i].const_num] = 1;
+            }
+        }
+    }
+}
+
+/* Generate the variable & register declarations for the ARB_vertex_program output target */
+static void shader_generate_arb_declarations(IWineD3DBaseShader *iface, const shader_reg_maps *reg_maps,
+        SHADER_BUFFER *buffer, const WineD3D_GL_Info *gl_info)
+{
+    IWineD3DBaseShaderImpl* This = (IWineD3DBaseShaderImpl*) iface;
+    IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *) This->baseShader.device;
+    DWORD i, cur;
+    char pshader = shader_is_pshader_version(This->baseShader.hex_version);
+    unsigned max_constantsF = min(This->baseShader.limits.constant_float, 
+            (pshader ? GL_LIMITS(pshader_constantsF) : GL_LIMITS(vshader_constantsF)));
+    UINT extra_constants_needed = 0;
+    const local_constant *lconst;
+
+    /* Temporary Output register */
+    shader_addline(buffer, "TEMP TMP_OUT;\n");
+
+    for(i = 0; i < This->baseShader.limits.temporary; i++) {
+        if (reg_maps->temporary[i])
+            shader_addline(buffer, "TEMP R%u;\n", i);
+    }
+
+    for (i = 0; i < This->baseShader.limits.address; i++) {
+        if (reg_maps->address[i])
+            shader_addline(buffer, "ADDRESS A%d;\n", i);
+    }
+
+    for(i = 0; i < This->baseShader.limits.texcoord; i++) {
+        if (reg_maps->texcoord[i])
+            shader_addline(buffer,"TEMP T%u;\n", i);
+    }
+
+    /* Texture coordinate registers must be pre-loaded */
+    for (i = 0; i < This->baseShader.limits.texcoord; i++) {
+        if (reg_maps->texcoord[i])
+            shader_addline(buffer, "MOV T%u, fragment.texcoord[%u];\n", i, i);
+    }
+
+    for(i = 0; i < (sizeof(reg_maps->bumpmat) / sizeof(reg_maps->bumpmat[0])); i++) {
+        IWineD3DPixelShaderImpl *ps = (IWineD3DPixelShaderImpl *) This;
+        if(!reg_maps->bumpmat[i]) continue;
+
+        cur = ps->numbumpenvmatconsts;
+        ps->bumpenvmatconst[cur].const_num = -1;
+        ps->bumpenvmatconst[cur].texunit = i;
+        ps->luminanceconst[cur].const_num = -1;
+        ps->luminanceconst[cur].texunit = i;
+
+        /* If the shader does not use all available constants, use the next free constant to load the bump mapping environment matrix from
+         * the stateblock into the shader. If no constant is available don't load, texbem will then just sample the texture without applying
+         * bump mapping.
+         */
+        if(max_constantsF + extra_constants_needed < GL_LIMITS(pshader_constantsF)) {
+            ps->bumpenvmatconst[cur].const_num = max_constantsF + extra_constants_needed;
+            shader_addline(buffer, "PARAM bumpenvmat%d = program.env[%d];\n",
+                           i, ps->bumpenvmatconst[cur].const_num);
+            extra_constants_needed++;
+
+            if(reg_maps->luminanceparams && max_constantsF + extra_constants_needed < GL_LIMITS(pshader_constantsF)) {
+                ((IWineD3DPixelShaderImpl *)This)->luminanceconst[cur].const_num = max_constantsF + extra_constants_needed;
+                shader_addline(buffer, "PARAM luminance%d = program.env[%d];\n",
+                               i, ps->luminanceconst[cur].const_num);
+                extra_constants_needed++;
+            } else if(reg_maps->luminanceparams) {
+                FIXME("No free constant to load the luminance parameters\n");
+            }
+        } else {
+            FIXME("No free constant found to load environemnt bump mapping matrix into the shader. texbem instruction will not apply bump mapping\n");
+        }
+
+        ps->numbumpenvmatconsts = cur + 1;
+    }
+
+    if(device->stateBlock->renderState[WINED3DRS_SRGBWRITEENABLE] && pshader) {
+        shader_addline(buffer, "PARAM srgb_mul_low = {%f, %f, %f, 1.0};\n",
+                        srgb_mul_low, srgb_mul_low, srgb_mul_low);
+        shader_addline(buffer, "PARAM srgb_comparison =  {%f, %f, %f, %f};\n",
+                        srgb_cmp, srgb_cmp, srgb_cmp, srgb_cmp);
+        shader_addline(buffer, "PARAM srgb_pow =  {%f, %f, %f, 1.0};\n",
+                       srgb_pow, srgb_pow, srgb_pow);
+        shader_addline(buffer, "PARAM srgb_mul_hi =  {%f, %f, %f, 1.0};\n",
+                       srgb_mul_high, srgb_mul_high, srgb_mul_high);
+        shader_addline(buffer, "PARAM srgb_sub_hi =  {%f, %f, %f, 0.0};\n",
+                       srgb_sub_high, srgb_sub_high, srgb_sub_high);
+    }
+
+    /* Load local constants using the program-local space,
+     * this avoids reloading them each time the shader is used
+     */
+    if(!This->baseShader.load_local_constsF) {
+        LIST_FOR_EACH_ENTRY(lconst, &This->baseShader.constantsF, local_constant, entry) {
+            shader_addline(buffer, "PARAM C%u = program.local[%u];\n", lconst->idx,
+                           lconst->idx);
+        }
+    }
+
+    /* we use the array-based constants array if the local constants are marked for loading,
+     * because then we use indirect addressing, or when the local constant list is empty,
+     * because then we don't know if we're using indirect addressing or not. If we're hardcoding
+     * local constants do not declare the loaded constants as an array because ARB compilers usually
+     * do not optimize unused constants away
+     */
+    if(This->baseShader.load_local_constsF || list_empty(&This->baseShader.constantsF)) {
+        /* Need to PARAM the environment parameters (constants) so we can use relative addressing */
+        shader_addline(buffer, "PARAM C[%d] = { program.env[0..%d] };\n",
+                    max_constantsF, max_constantsF - 1);
+    } else {
+        for(i = 0; i < max_constantsF; i++) {
+            if(!shader_constant_is_local(This, i)) {
+                shader_addline(buffer, "PARAM C%d = program.env[%d];\n",i, i);
+            }
+        }
+    }
+}
+
+static const char * const shift_tab[] = {
+    "dummy",     /*  0 (none) */
+    "coefmul.x", /*  1 (x2)   */
+    "coefmul.y", /*  2 (x4)   */
+    "coefmul.z", /*  3 (x8)   */
+    "coefmul.w", /*  4 (x16)  */
+    "dummy",     /*  5 (x32)  */
+    "dummy",     /*  6 (x64)  */
+    "dummy",     /*  7 (x128) */
+    "dummy",     /*  8 (d256) */
+    "dummy",     /*  9 (d128) */
+    "dummy",     /* 10 (d64)  */
+    "dummy",     /* 11 (d32)  */
+    "coefdiv.w", /* 12 (d16)  */
+    "coefdiv.z", /* 13 (d8)   */
+    "coefdiv.y", /* 14 (d4)   */
+    "coefdiv.x"  /* 15 (d2)   */
+};
+
+static void shader_arb_get_write_mask(const SHADER_OPCODE_ARG *arg, const DWORD param, char *write_mask)
+{
+    IWineD3DBaseShaderImpl *This = (IWineD3DBaseShaderImpl *) arg->shader;
+    char *ptr = write_mask;
+    char vshader = shader_is_vshader_version(This->baseShader.hex_version);
+
+    if(vshader && shader_get_regtype(param) == WINED3DSPR_ADDR) {
+        *ptr++ = '.';
+        *ptr++ = 'x';
+    } else if ((param & WINED3DSP_WRITEMASK_ALL) != WINED3DSP_WRITEMASK_ALL) {
+        *ptr++ = '.';
+        if (param & WINED3DSP_WRITEMASK_0) *ptr++ = 'x';
+        if (param & WINED3DSP_WRITEMASK_1) *ptr++ = 'y';
+        if (param & WINED3DSP_WRITEMASK_2) *ptr++ = 'z';
+        if (param & WINED3DSP_WRITEMASK_3) *ptr++ = 'w';
+    }
+
+    *ptr = '\0';
+}
+
+static void shader_arb_get_swizzle(const DWORD param, BOOL fixup, char *swizzle_str) {
+    /* For registers of type WINED3DDECLTYPE_D3DCOLOR, data is stored as "bgra",
+     * but addressed as "rgba". To fix this we need to swap the register's x
+     * and z components. */
+    const char *swizzle_chars = fixup ? "zyxw" : "xyzw";
+    char *ptr = swizzle_str;
+
+    /* swizzle bits fields: wwzzyyxx */
+    DWORD swizzle = (param & WINED3DSP_SWIZZLE_MASK) >> WINED3DSP_SWIZZLE_SHIFT;
+    DWORD swizzle_x = swizzle & 0x03;
+    DWORD swizzle_y = (swizzle >> 2) & 0x03;
+    DWORD swizzle_z = (swizzle >> 4) & 0x03;
+    DWORD swizzle_w = (swizzle >> 6) & 0x03;
+
+    /* If the swizzle is the default swizzle (ie, "xyzw"), we don't need to
+     * generate a swizzle string. Unless we need to our own swizzling. */
+    if ((WINED3DSP_NOSWIZZLE >> WINED3DSP_SWIZZLE_SHIFT) != swizzle || fixup) {
+        *ptr++ = '.';
+        if (swizzle_x == swizzle_y && swizzle_x == swizzle_z && swizzle_x == swizzle_w) {
+            *ptr++ = swizzle_chars[swizzle_x];
+        } else {
+            *ptr++ = swizzle_chars[swizzle_x];
+            *ptr++ = swizzle_chars[swizzle_y];
+            *ptr++ = swizzle_chars[swizzle_z];
+            *ptr++ = swizzle_chars[swizzle_w];
+        }
+    }
+
+    *ptr = '\0';
+}
+
+static void pshader_get_register_name(IWineD3DBaseShader* iface,
+    const DWORD param, char* regstr) {
+
+    DWORD reg = param & WINED3DSP_REGNUM_MASK;
+    DWORD regtype = shader_get_regtype(param);
+    IWineD3DBaseShaderImpl *This = (IWineD3DBaseShaderImpl *) iface;
+
+    switch (regtype) {
+    case WINED3DSPR_TEMP:
+        sprintf(regstr, "R%u", reg);
+    break;
+    case WINED3DSPR_INPUT:
+        if (reg==0) {
+            strcpy(regstr, "fragment.color.primary");
+        } else {
+            strcpy(regstr, "fragment.color.secondary");
+        }
+    break;
+    case WINED3DSPR_CONST:
+        if(This->baseShader.load_local_constsF || list_empty(&This->baseShader.constantsF)) {
+            sprintf(regstr, "C[%u]", reg);
+        } else {
+            sprintf(regstr, "C%u", reg);
+        }
+    break;
+    case WINED3DSPR_TEXTURE: /* case WINED3DSPR_ADDR: */
+        sprintf(regstr,"T%u", reg);
+    break;
+    case WINED3DSPR_COLOROUT:
+        if (reg == 0)
+            sprintf(regstr, "TMP_COLOR");
+        else {
+            /* TODO: See GL_ARB_draw_buffers */
+            FIXME("Unsupported write to render target %u\n", reg);
+            sprintf(regstr, "unsupported_register");
+        }
+    break;
+    case WINED3DSPR_DEPTHOUT:
+        sprintf(regstr, "result.depth");
+    break;
+    case WINED3DSPR_ATTROUT:
+        sprintf(regstr, "oD[%u]", reg);
+    break;
+    case WINED3DSPR_TEXCRDOUT:
+        sprintf(regstr, "oT[%u]", reg);
+    break;
+    default:
+        FIXME("Unhandled register name Type(%d)\n", regtype);
+        sprintf(regstr, "unrecognized_register");
+    break;
+    }
+}
+
+/* TODO: merge with pixel shader */
+static void vshader_program_add_param(const SHADER_OPCODE_ARG *arg, const DWORD param, BOOL is_input, char *hwLine)
+{
+  IWineD3DVertexShaderImpl* This = (IWineD3DVertexShaderImpl*) arg->shader;
+
+  /* oPos, oFog and oPts in D3D */
+  static const char * const hwrastout_reg_names[] = { "TMP_OUT", "result.fogcoord", "result.pointsize" };
+
+  DWORD reg = param & WINED3DSP_REGNUM_MASK;
+  DWORD regtype = shader_get_regtype(param);
+  char  tmpReg[255];
+  BOOL is_color = FALSE;
+
+  if ((param & WINED3DSP_SRCMOD_MASK) == WINED3DSPSM_NEG) {
+      strcat(hwLine, " -");
+  } else {
+      strcat(hwLine, " ");
+  }
+
+  switch (regtype) {
+  case WINED3DSPR_TEMP:
+    sprintf(tmpReg, "R%u", reg);
+    strcat(hwLine, tmpReg);
+    break;
+  case WINED3DSPR_INPUT:
+
+    if (vshader_input_is_color((IWineD3DVertexShader*) This, reg))
+        is_color = TRUE;
+
+    sprintf(tmpReg, "vertex.attrib[%u]", reg);
+    strcat(hwLine, tmpReg);
+    break;
+  case WINED3DSPR_CONST:
+      if(param & WINED3DSHADER_ADDRMODE_RELATIVE) {
+          if(reg >= This->rel_offset) {
+              sprintf(tmpReg, "C[A0.x + %u]", reg - This->rel_offset);
+          } else {
+              sprintf(tmpReg, "C[A0.x - %u]", -reg + This->rel_offset);
+          }
+      } else {
+          if(This->baseShader.load_local_constsF || list_empty(&This->baseShader.constantsF)) {
+              sprintf(tmpReg, "C[%u]", reg);
+          } else {
+              sprintf(tmpReg, "C%u", reg);
+          }
+      }
+    strcat(hwLine, tmpReg);
+    break;
+  case WINED3DSPR_ADDR: /*case D3DSPR_TEXTURE:*/
+    sprintf(tmpReg, "A%u", reg);
+    strcat(hwLine, tmpReg);
+    break;
+  case WINED3DSPR_RASTOUT:
+    sprintf(tmpReg, "%s", hwrastout_reg_names[reg]);
+    strcat(hwLine, tmpReg);
+    break;
+  case WINED3DSPR_ATTROUT:
+    if (reg==0) {
+       strcat(hwLine, "result.color.primary");
+    } else {
+       strcat(hwLine, "result.color.secondary");
+    }
+    break;
+  case WINED3DSPR_TEXCRDOUT:
+    sprintf(tmpReg, "result.texcoord[%u]", reg);
+    strcat(hwLine, tmpReg);
+    break;
+  default:
+    FIXME("Unknown reg type %d %d\n", regtype, reg);
+    strcat(hwLine, "unrecognized_register");
+    break;
+  }
+
+  if (!is_input) {
+    char write_mask[6];
+    shader_arb_get_write_mask(arg, param, write_mask);
+    strcat(hwLine, write_mask);
+  } else {
+    char swizzle[6];
+    shader_arb_get_swizzle(param, is_color, swizzle);
+    strcat(hwLine, swizzle);
+  }
+}
+
+static void shader_hw_sample(const SHADER_OPCODE_ARG *arg, DWORD sampler_idx, const char *dst_str,
+        const char *coord_reg, BOOL projected, BOOL bias)
+{
+    SHADER_BUFFER* buffer = arg->buffer;
+    DWORD sampler_type = arg->reg_maps->samplers[sampler_idx] & WINED3DSP_TEXTURETYPE_MASK;
+    const char *tex_type;
+
+    switch(sampler_type) {
+        case WINED3DSTT_1D:
+            tex_type = "1D";
+            break;
+
+        case WINED3DSTT_2D:
+        {
+            IWineD3DBaseShaderImpl *This = (IWineD3DBaseShaderImpl *) arg->shader;
+            IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *) This->baseShader.device;
+            if(device->stateBlock->textures[sampler_idx] &&
+               IWineD3DBaseTexture_GetTextureDimensions(device->stateBlock->textures[sampler_idx]) == GL_TEXTURE_RECTANGLE_ARB) {
+                tex_type = "RECT";
+            } else {
+                tex_type = "2D";
+            }
+            break;
+        }
+
+        case WINED3DSTT_VOLUME:
+            tex_type = "3D";
+            break;
+
+        case WINED3DSTT_CUBE:
+            tex_type = "CUBE";
+            break;
+
+        default:
+            ERR("Unexpected texture type %d\n", sampler_type);
+            tex_type = "";
+    }
+
+    if (bias) {
+        /* Shouldn't be possible, but let's check for it */
+        if(projected) FIXME("Biased and Projected texture sampling\n");
+        /* TXB takes the 4th component of the source vector automatically, as d3d. Nothing more to do */
+        shader_addline(buffer, "TXB %s, %s, texture[%u], %s;\n", dst_str, coord_reg, sampler_idx, tex_type);
+    } else if (projected) {
+        shader_addline(buffer, "TXP %s, %s, texture[%u], %s;\n", dst_str, coord_reg, sampler_idx, tex_type);
+    } else {
+        shader_addline(buffer, "TEX %s, %s, texture[%u], %s;\n", dst_str, coord_reg, sampler_idx, tex_type);
+    }
+}
+
+static const char *shader_arb_get_fixup_swizzle(enum fixup_channel_source channel_source)
+{
+    switch(channel_source)
+    {
+        case CHANNEL_SOURCE_ZERO: return "0";
+        case CHANNEL_SOURCE_ONE: return "1";
+        case CHANNEL_SOURCE_X: return "x";
+        case CHANNEL_SOURCE_Y: return "y";
+        case CHANNEL_SOURCE_Z: return "z";
+        case CHANNEL_SOURCE_W: return "w";
+        default:
+            FIXME("Unhandled channel source %#x\n", channel_source);
+            return "undefined";
+    }
+}
+
+static void gen_color_correction(SHADER_BUFFER *buffer, const char *reg, DWORD dst_mask,
+        const char *one, const char *two, struct color_fixup_desc fixup)
+{
+    DWORD mask;
+
+    if (is_yuv_fixup(fixup))
+    {
+        enum yuv_fixup yuv_fixup = get_yuv_fixup(fixup);
+        FIXME("YUV fixup (%#x) not supported\n", yuv_fixup);
+        return;
+    }
+
+    mask = 0;
+    if (fixup.x_source != CHANNEL_SOURCE_X) mask |= WINED3DSP_WRITEMASK_0;
+    if (fixup.y_source != CHANNEL_SOURCE_Y) mask |= WINED3DSP_WRITEMASK_1;
+    if (fixup.z_source != CHANNEL_SOURCE_Z) mask |= WINED3DSP_WRITEMASK_2;
+    if (fixup.w_source != CHANNEL_SOURCE_W) mask |= WINED3DSP_WRITEMASK_3;
+    mask &= dst_mask;
+
+    if (mask)
+    {
+        shader_addline(buffer, "SWZ %s, %s, %s, %s, %s, %s;\n", reg, reg,
+                shader_arb_get_fixup_swizzle(fixup.x_source), shader_arb_get_fixup_swizzle(fixup.y_source),
+                shader_arb_get_fixup_swizzle(fixup.z_source), shader_arb_get_fixup_swizzle(fixup.w_source));
+    }
+
+    mask = 0;
+    if (fixup.x_sign_fixup) mask |= WINED3DSP_WRITEMASK_0;
+    if (fixup.y_sign_fixup) mask |= WINED3DSP_WRITEMASK_1;
+    if (fixup.z_sign_fixup) mask |= WINED3DSP_WRITEMASK_2;
+    if (fixup.w_sign_fixup) mask |= WINED3DSP_WRITEMASK_3;
+    mask &= dst_mask;
+
+    if (mask)
+    {
+        char reg_mask[6];
+        char *ptr = reg_mask;
+
+        if (mask != WINED3DSP_WRITEMASK_ALL)
+        {
+            *ptr++ = '.';
+            if (mask & WINED3DSP_WRITEMASK_0) *ptr++ = 'x';
+            if (mask & WINED3DSP_WRITEMASK_1) *ptr++ = 'y';
+            if (mask & WINED3DSP_WRITEMASK_2) *ptr++ = 'z';
+            if (mask & WINED3DSP_WRITEMASK_3) *ptr++ = 'w';
+        }
+        *ptr = '\0';
+
+        shader_addline(buffer, "MAD %s%s, %s, %s, -%s;\n", reg, reg_mask, reg, two, one);
+    }
+}
+
+static void shader_arb_color_correction(const struct SHADER_OPCODE_ARG* arg, struct color_fixup_desc fixup)
+{
+    char reg[256];
+    pshader_get_register_name(arg->shader, arg->dst, reg);
+    gen_color_correction(arg->buffer, reg, arg->dst & WINED3DSP_WRITEMASK_ALL, "one", "coefmul.x", fixup);
+}
+
+static void pshader_gen_input_modifier_line (
+    IWineD3DBaseShader *iface,
+    SHADER_BUFFER* buffer,
+    const DWORD instr,
+    int tmpreg,
+    char *outregstr) {
+
+    /* Generate a line that does the input modifier computation and return the input register to use */
+    char regstr[256];
+    char swzstr[20];
+    int insert_line;
+
+    /* Assume a new line will be added */
+    insert_line = 1;
+
+    /* Get register name */
+    pshader_get_register_name(iface, instr, regstr);
+    shader_arb_get_swizzle(instr, FALSE, swzstr);
+
+    switch (instr & WINED3DSP_SRCMOD_MASK) {
+    case WINED3DSPSM_NONE:
+        sprintf(outregstr, "%s%s", regstr, swzstr);
+        insert_line = 0;
+        break;
+    case WINED3DSPSM_NEG:
+        sprintf(outregstr, "-%s%s", regstr, swzstr);
+        insert_line = 0;
+        break;
+    case WINED3DSPSM_BIAS:
+        shader_addline(buffer, "ADD T%c, %s, -coefdiv.x;\n", 'A' + tmpreg, regstr);
+        break;
+    case WINED3DSPSM_BIASNEG:
+        shader_addline(buffer, "ADD T%c, -%s, coefdiv.x;\n", 'A' + tmpreg, regstr);
+        break;
+    case WINED3DSPSM_SIGN:
+        shader_addline(buffer, "MAD T%c, %s, coefmul.x, -one.x;\n", 'A' + tmpreg, regstr);
+        break;
+    case WINED3DSPSM_SIGNNEG:
+        shader_addline(buffer, "MAD T%c, %s, -coefmul.x, one.x;\n", 'A' + tmpreg, regstr);
+        break;
+    case WINED3DSPSM_COMP:
+        shader_addline(buffer, "SUB T%c, one.x, %s;\n", 'A' + tmpreg, regstr);
+        break;
+    case WINED3DSPSM_X2:
+        shader_addline(buffer, "ADD T%c, %s, %s;\n", 'A' + tmpreg, regstr, regstr);
+        break;
+    case WINED3DSPSM_X2NEG:
+        shader_addline(buffer, "ADD T%c, -%s, -%s;\n", 'A' + tmpreg, regstr, regstr);
+        break;
+    case WINED3DSPSM_DZ:
+        shader_addline(buffer, "RCP T%c, %s.z;\n", 'A' + tmpreg, regstr);
+        shader_addline(buffer, "MUL T%c, %s, T%c;\n", 'A' + tmpreg, regstr, 'A' + tmpreg);
+        break;
+    case WINED3DSPSM_DW:
+        shader_addline(buffer, "RCP T%c, %s.w;\n", 'A' + tmpreg, regstr);
+        shader_addline(buffer, "MUL T%c, %s, T%c;\n", 'A' + tmpreg, regstr, 'A' + tmpreg);
+        break;
+    default:
+        sprintf(outregstr, "%s%s", regstr, swzstr);
+        insert_line = 0;
+    }
+
+    /* Return modified or original register, with swizzle */
+    if (insert_line)
+        sprintf(outregstr, "T%c%s", 'A' + tmpreg, swzstr);
+}
+
+static inline void pshader_gen_output_modifier_line(SHADER_BUFFER *buffer, int saturate, const char *write_mask,
+        int shift, const char *regstr)
+{
+    /* Generate a line that does the output modifier computation */
+    shader_addline(buffer, "MUL%s %s%s, %s, %s;\n", saturate ? "_SAT" : "",
+        regstr, write_mask, regstr, shift_tab[shift]);
+}
+
+static void pshader_hw_bem(const SHADER_OPCODE_ARG *arg)
+{
+    IWineD3DPixelShaderImpl* This = (IWineD3DPixelShaderImpl*) arg->shader;
+
+    SHADER_BUFFER* buffer = arg->buffer;
+    char dst_name[50];
+    char src_name[2][50];
+    char dst_wmask[20];
+    DWORD sampler_code = arg->dst & WINED3DSP_REGNUM_MASK;
+    BOOL has_bumpmat = FALSE;
+    int i;
+
+    for(i = 0; i < This->numbumpenvmatconsts; i++) {
+        if(This->bumpenvmatconst[i].const_num != -1 && This->bumpenvmatconst[i].texunit == sampler_code) {
+            has_bumpmat = TRUE;
+            break;
+        }
+    }
+
+    pshader_get_register_name(arg->shader, arg->dst, dst_name);
+    shader_arb_get_write_mask(arg, arg->dst, dst_wmask);
+    strcat(dst_name, dst_wmask);
+
+    pshader_gen_input_modifier_line(arg->shader, buffer, arg->src[0], 0, src_name[0]);
+    pshader_gen_input_modifier_line(arg->shader, buffer, arg->src[1], 1, src_name[1]);
+
+    if(has_bumpmat) {
+        /* Sampling the perturbation map in Tsrc was done already, including the signedness correction if needed */
+        shader_addline(buffer, "SWZ TMP2, bumpenvmat%d, x, z, 0, 0;\n", sampler_code);
+        shader_addline(buffer, "DP3 TMP.r, TMP2, %s;\n", src_name[1]);
+        shader_addline(buffer, "SWZ TMP2, bumpenvmat%d, y, w, 0, 0;\n", sampler_code);
+        shader_addline(buffer, "DP3 TMP.g, TMP2, %s;\n", src_name[1]);
+
+        shader_addline(buffer, "ADD %s, %s, TMP;\n", dst_name, src_name[0]);
+    } else {
+        shader_addline(buffer, "MOV %s, %s;\n", dst_name, src_name[0]);
+    }
+}
+
+static void pshader_hw_cnd(const SHADER_OPCODE_ARG *arg)
+{
+    IWineD3DBaseShaderImpl* shader = (IWineD3DBaseShaderImpl*) arg->shader;
+    SHADER_BUFFER* buffer = arg->buffer;
+    char dst_wmask[20];
+    char dst_name[50];
+    char src_name[3][50];
+    BOOL sat = (arg->dst & WINED3DSP_DSTMOD_MASK) & WINED3DSPDM_SATURATE;
+    DWORD shift = (arg->dst & WINED3DSP_DSTSHIFT_MASK) >> WINED3DSP_DSTSHIFT_SHIFT;
+
+    /* FIXME: support output modifiers */
+
+    /* Handle output register */
+    pshader_get_register_name(arg->shader, arg->dst, dst_name);
+    shader_arb_get_write_mask(arg, arg->dst, dst_wmask);
+
+    /* Generate input register names (with modifiers) */
+    pshader_gen_input_modifier_line(arg->shader, buffer, arg->src[0], 0, src_name[0]);
+    pshader_gen_input_modifier_line(arg->shader, buffer, arg->src[1], 1, src_name[1]);
+    pshader_gen_input_modifier_line(arg->shader, buffer, arg->src[2], 2, src_name[2]);
+
+    /* The coissue flag changes the semantic of the cnd instruction in <= 1.3 shaders */
+    if (shader->baseShader.hex_version <= WINED3DPS_VERSION(1, 3) &&
+        arg->opcode_token & WINED3DSI_COISSUE) {
+        shader_addline(buffer, "MOV%s %s%s, %s;\n", sat ? "_SAT" : "", dst_name, dst_wmask, src_name[1]);
+    } else {
+        shader_addline(buffer, "ADD TMP, -%s, coefdiv.x;\n", src_name[0]);
+        shader_addline(buffer, "CMP%s %s%s, TMP, %s, %s;\n",
+                                sat ? "_SAT" : "", dst_name, dst_wmask, src_name[1], src_name[2]);
+    }
+    if (shift != 0)
+        pshader_gen_output_modifier_line(buffer, FALSE, dst_wmask, shift, dst_name);
+}
+
+static void pshader_hw_cmp(const SHADER_OPCODE_ARG *arg)
+{
+    SHADER_BUFFER* buffer = arg->buffer;
+    char dst_wmask[20];
+    char dst_name[50];
+    char src_name[3][50];
+    DWORD shift = (arg->dst & WINED3DSP_DSTSHIFT_MASK) >> WINED3DSP_DSTSHIFT_SHIFT;
+    BOOL sat = (arg->dst & WINED3DSP_DSTMOD_MASK) & WINED3DSPDM_SATURATE;
+
+    /* FIXME: support output modifiers */
+
+    /* Handle output register */
+    pshader_get_register_name(arg->shader, arg->dst, dst_name);
+    shader_arb_get_write_mask(arg, arg->dst, dst_wmask);
+
+    /* Generate input register names (with modifiers) */
+    pshader_gen_input_modifier_line(arg->shader, buffer, arg->src[0], 0, src_name[0]);
+    pshader_gen_input_modifier_line(arg->shader, buffer, arg->src[1], 1, src_name[1]);
+    pshader_gen_input_modifier_line(arg->shader, buffer, arg->src[2], 2, src_name[2]);
+
+    shader_addline(buffer, "CMP%s %s%s, %s, %s, %s;\n", sat ? "_SAT" : "", dst_name, dst_wmask,
+                   src_name[0], src_name[2], src_name[1]);
+
+    if (shift != 0)
+        pshader_gen_output_modifier_line(buffer, FALSE, dst_wmask, shift, dst_name);
+}
+
+/** Process the WINED3DSIO_DP2ADD instruction in ARB.
+ * dst = dot2(src0, src1) + src2 */
+static void pshader_hw_dp2add(const SHADER_OPCODE_ARG *arg)
+{
+    SHADER_BUFFER* buffer = arg->buffer;
+    char dst_wmask[20];
+    char dst_name[50];
+    char src_name[3][50];
+    DWORD shift = (arg->dst & WINED3DSP_DSTSHIFT_MASK) >> WINED3DSP_DSTSHIFT_SHIFT;
+    BOOL sat = (arg->dst & WINED3DSP_DSTMOD_MASK) & WINED3DSPDM_SATURATE;
+
+    pshader_get_register_name(arg->shader, arg->dst, dst_name);
+    shader_arb_get_write_mask(arg, arg->dst, dst_wmask);
+
+    pshader_gen_input_modifier_line(arg->shader, buffer, arg->src[0], 0, src_name[0]);
+    pshader_gen_input_modifier_line(arg->shader, buffer, arg->src[1], 1, src_name[1]);
+    pshader_gen_input_modifier_line(arg->shader, buffer, arg->src[2], 2, src_name[2]);
+
+    /* Emulate a DP2 with a DP3 and 0.0 */
+    shader_addline(buffer, "MOV TMP, %s;\n", src_name[0]);
+    shader_addline(buffer, "MOV TMP.z, 0.0;\n");
+    shader_addline(buffer, "DP3 TMP2, TMP, %s;\n", src_name[1]);
+    shader_addline(buffer, "ADD%s %s%s, TMP2, %s;\n", sat ? "_SAT" : "", dst_name, dst_wmask, src_name[2]);
+
+    if (shift != 0)
+        pshader_gen_output_modifier_line(buffer, FALSE, dst_wmask, shift, dst_name);
+}
+
+/* Map the opcode 1-to-1 to the GL code */
+static void shader_hw_map2gl(const SHADER_OPCODE_ARG *arg)
+{
+    IWineD3DBaseShaderImpl *shader = (IWineD3DBaseShaderImpl*)arg->shader;
+    CONST SHADER_OPCODE* curOpcode = arg->opcode;
+    SHADER_BUFFER* buffer = arg->buffer;
+    DWORD dst = arg->dst;
+    const DWORD *src = arg->src;
+    char arguments[256];
+    unsigned int i;
+
+    if (shader_is_pshader_version(shader->baseShader.hex_version))
+    {
+        /* Output token related */
+        char output_rname[256];
+        char output_wmask[20];
+        char operands[4][100];
+        BOOL saturate = FALSE;
+        BOOL centroid = FALSE;
+        BOOL partialprecision = FALSE;
+        const char *modifier;
+        DWORD shift;
+
+        if (!curOpcode->num_params)
+        {
+            ERR("Opcode \"%s\" has no parameters\n", curOpcode->name);
+            return;
+        }
+
+        /* Process modifiers */
+        if (dst & WINED3DSP_DSTMOD_MASK)
+        {
+            DWORD mask = dst & WINED3DSP_DSTMOD_MASK;
+
+            saturate = mask & WINED3DSPDM_SATURATE;
+            centroid = mask & WINED3DSPDM_MSAMPCENTROID;
+            partialprecision = mask & WINED3DSPDM_PARTIALPRECISION;
+            mask &= ~(WINED3DSPDM_MSAMPCENTROID | WINED3DSPDM_PARTIALPRECISION | WINED3DSPDM_SATURATE);
+            if (mask)
+                FIXME("Unrecognized modifier(%#x)\n", mask >> WINED3DSP_DSTMOD_SHIFT);
+
+            if (centroid)
+                FIXME("Unhandled modifier(%#x)\n", mask >> WINED3DSP_DSTMOD_SHIFT);
+        }
+        shift = (dst & WINED3DSP_DSTSHIFT_MASK) >> WINED3DSP_DSTSHIFT_SHIFT;
+        modifier = (saturate && !shift) ? "_SAT" : "";
+
+        /* Generate input register names (with modifiers) */
+        for (i = 1; i < curOpcode->num_params; ++i)
+            pshader_gen_input_modifier_line(arg->shader, buffer, src[i-1], i-1, operands[i]);
+
+        /* Handle output register */
+        pshader_get_register_name(arg->shader, dst, output_rname);
+        strcpy(operands[0], output_rname);
+        shader_arb_get_write_mask(arg, dst, output_wmask);
+        strcat(operands[0], output_wmask);
+
+        arguments[0] = '\0';
+        strcat(arguments, operands[0]);
+        for (i = 1; i < curOpcode->num_params; i++)
+        {
+            strcat(arguments, ", ");
+            strcat(arguments, operands[i]);
+        }
+        shader_addline(buffer, "%s%s %s;\n", curOpcode->glname, modifier, arguments);
+
+        /* A shift requires another line. */
+        if (shift) pshader_gen_output_modifier_line(buffer, saturate, output_wmask, shift, output_rname);
+    } else {
+        /* Note that vshader_program_add_param() adds spaces. */
+
+        arguments[0] = '\0';
+        if (curOpcode->num_params > 0)
+        {
+            vshader_program_add_param(arg, dst, FALSE, arguments);
+            for (i = 1; i < curOpcode->num_params; ++i)
+            {
+                strcat(arguments, ",");
+                vshader_program_add_param(arg, src[i-1], TRUE, arguments);
+            }
+        }
+        shader_addline(buffer, "%s%s;\n", curOpcode->glname, arguments);
+    }
+}
+
+static void shader_hw_mov(const SHADER_OPCODE_ARG *arg)
+{
+    IWineD3DBaseShaderImpl *shader = (IWineD3DBaseShaderImpl*)arg->shader;
+
+    if ((WINED3DSHADER_VERSION_MAJOR(shader->baseShader.hex_version) == 1
+            && !shader_is_pshader_version(shader->baseShader.hex_version)
+            && shader_get_regtype(arg->dst) == WINED3DSPR_ADDR)
+            || arg->opcode->opcode == WINED3DSIO_MOVA)
+    {
+        SHADER_BUFFER *buffer = arg->buffer;
+        char src0_param[256];
+
+        if (arg->opcode->opcode == WINED3DSIO_MOVA)
+            FIXME("mova should round\n");
+
+        src0_param[0] = '\0';
+        if (((IWineD3DVertexShaderImpl *)shader)->rel_offset)
+        {
+            vshader_program_add_param(arg, arg->src[0], TRUE, src0_param);
+            shader_addline(buffer, "ADD TMP.x, %s, helper_const.z;\n", src0_param);
+            shader_addline(buffer, "ARL A0.x, TMP.x;\n");
+        }
+        else
+        {
+            /* Apple's ARB_vertex_program implementation does not accept an ARL source argument
+             * with more than one component. Thus replicate the first source argument over all
+             * 4 components. For example, .xyzw -> .x (or better: .xxxx), .zwxy -> .z, etc)
+             */
+            DWORD parm = arg->src[0] & ~(WINED3DVS_SWIZZLE_MASK);
+            if((arg->src[0] & WINED3DVS_X_W) == WINED3DVS_X_W)
+                parm |= WINED3DVS_X_W | WINED3DVS_Y_W | WINED3DVS_Z_W | WINED3DVS_W_W;
+            else if((arg->src[0] & WINED3DVS_X_Z) == WINED3DVS_X_Z)
+                parm |= WINED3DVS_X_Z | WINED3DVS_Y_Z | WINED3DVS_Z_Z | WINED3DVS_W_Z;
+            else if((arg->src[0] & WINED3DVS_X_Y) == WINED3DVS_X_Y)
+                parm |= WINED3DVS_X_Y | WINED3DVS_Y_Y | WINED3DVS_Z_Y | WINED3DVS_W_Y;
+            else if((arg->src[0] & WINED3DVS_X_X) == WINED3DVS_X_X)
+                parm |= WINED3DVS_X_X | WINED3DVS_Y_X | WINED3DVS_Z_X | WINED3DVS_W_X;
+            vshader_program_add_param(arg, parm, TRUE, src0_param);
+            shader_addline(buffer, "ARL A0.x, %s;\n", src0_param);
+        }
+    }
+    else
+    {
+        shader_hw_map2gl(arg);
+    }
+}
+
+static void pshader_hw_texkill(const SHADER_OPCODE_ARG *arg)
+{
+    IWineD3DPixelShaderImpl* This = (IWineD3DPixelShaderImpl*) arg->shader;
+    DWORD hex_version = This->baseShader.hex_version;
+    SHADER_BUFFER* buffer = arg->buffer;
+    char reg_dest[40];
+
+    /* No swizzles are allowed in d3d's texkill. PS 1.x ignores the 4th component as documented,
+     * but >= 2.0 honors it(undocumented, but tested by the d3d9 testsuit)
+     */
+    pshader_get_register_name(arg->shader, arg->dst, reg_dest);
+
+    if(hex_version >= WINED3DPS_VERSION(2,0)) {
+        /* The arb backend doesn't claim ps 2.0 support, but try to eat what the app feeds to us */
+        shader_addline(buffer, "KIL %s;\n", reg_dest);
+    } else {
+        /* ARB fp doesn't like swizzles on the parameter of the KIL instruction. To mask the 4th component,
+         * copy the register into our general purpose TMP variable, overwrite .w and pass TMP to KIL
+         */
+        shader_addline(buffer, "MOV TMP, %s;\n", reg_dest);
+        shader_addline(buffer, "MOV TMP.w, one.w;\n");
+        shader_addline(buffer, "KIL TMP;\n");
+    }
+}
+
+static void pshader_hw_tex(const SHADER_OPCODE_ARG *arg)
+{
+    IWineD3DPixelShaderImpl* This = (IWineD3DPixelShaderImpl*) arg->shader;
+    IWineD3DDeviceImpl* deviceImpl = (IWineD3DDeviceImpl*) This->baseShader.device;
+
+    DWORD dst = arg->dst;
+    const DWORD *src = arg->src;
+    SHADER_BUFFER* buffer = arg->buffer;
+    DWORD hex_version = This->baseShader.hex_version;
+    BOOL projected = FALSE, bias = FALSE;
+
+    char reg_dest[40];
+    char reg_coord[40];
+    DWORD reg_dest_code;
+    DWORD reg_sampler_code;
+
+    /* All versions have a destination register */
+    reg_dest_code = dst & WINED3DSP_REGNUM_MASK;
+    pshader_get_register_name(arg->shader, dst, reg_dest);
+
+    /* 1.0-1.3: Use destination register as coordinate source.
+       1.4+: Use provided coordinate source register. */
+   if (hex_version < WINED3DPS_VERSION(1,4))
+      strcpy(reg_coord, reg_dest);
+   else
+      pshader_gen_input_modifier_line(arg->shader, buffer, src[0], 0, reg_coord);
+
+  /* 1.0-1.4: Use destination register number as texture code.
+     2.0+: Use provided sampler number as texure code. */
+  if (hex_version < WINED3DPS_VERSION(2,0))
+     reg_sampler_code = reg_dest_code;
+  else
+     reg_sampler_code = src[1] & WINED3DSP_REGNUM_MASK;
+
+  /* projection flag:
+   * 1.1, 1.2, 1.3: Use WINED3DTSS_TEXTURETRANSFORMFLAGS
+   * 1.4: Use WINED3DSPSM_DZ or WINED3DSPSM_DW on src[0]
+   * 2.0+: Use WINED3DSI_TEXLD_PROJECT on the opcode
+   */
+  if(hex_version < WINED3DPS_VERSION(1,4)) {
+      DWORD flags = 0;
+      if(reg_sampler_code < MAX_TEXTURES) {
+        flags = deviceImpl->stateBlock->textureState[reg_sampler_code][WINED3DTSS_TEXTURETRANSFORMFLAGS];
+      }
+      if (flags & WINED3DTTFF_PROJECTED) {
+          projected = TRUE;
+      }
+  } else if(hex_version < WINED3DPS_VERSION(2,0)) {
+      DWORD src_mod = arg->src[0] & WINED3DSP_SRCMOD_MASK;
+      if (src_mod == WINED3DSPSM_DZ) {
+          projected = TRUE;
+      } else if(src_mod == WINED3DSPSM_DW) {
+          projected = TRUE;
+      }
+  } else {
+      if(arg->opcode_token & WINED3DSI_TEXLD_PROJECT) {
+          projected = TRUE;
+      }
+      if(arg->opcode_token & WINED3DSI_TEXLD_BIAS) {
+          bias = TRUE;
+      }
+  }
+  shader_hw_sample(arg, reg_sampler_code, reg_dest, reg_coord, projected, bias);
+}
+
+static void pshader_hw_texcoord(const SHADER_OPCODE_ARG *arg)
+{
+    IWineD3DPixelShaderImpl* This = (IWineD3DPixelShaderImpl*) arg->shader;
+    DWORD dst = arg->dst;
+    SHADER_BUFFER* buffer = arg->buffer;
+    DWORD hex_version = This->baseShader.hex_version;
+
+    char tmp[20];
+    shader_arb_get_write_mask(arg, dst, tmp);
+    if (hex_version != WINED3DPS_VERSION(1,4)) {
+        DWORD reg = dst & WINED3DSP_REGNUM_MASK;
+        shader_addline(buffer, "MOV_SAT T%u%s, fragment.texcoord[%u];\n", reg, tmp, reg);
+    } else {
+        DWORD reg1 = dst & WINED3DSP_REGNUM_MASK;
+        char reg_src[40];
+
+        pshader_gen_input_modifier_line(arg->shader, buffer, arg->src[0], 0, reg_src);
+        shader_addline(buffer, "MOV R%u%s, %s;\n", reg1, tmp, reg_src);
+   }
+}
+
+static void pshader_hw_texreg2ar(const SHADER_OPCODE_ARG *arg)
+{
+     SHADER_BUFFER* buffer = arg->buffer;
+     IWineD3DPixelShaderImpl* This = (IWineD3DPixelShaderImpl*) arg->shader;
+     IWineD3DDeviceImpl* deviceImpl = (IWineD3DDeviceImpl*) This->baseShader.device;
+     DWORD flags;
+
+     DWORD reg1 = arg->dst & WINED3DSP_REGNUM_MASK;
+     char dst_str[8];
+     char src_str[50];
+
+     sprintf(dst_str, "T%u", reg1);
+     pshader_gen_input_modifier_line(arg->shader, buffer, arg->src[0], 0, src_str);
+     shader_addline(buffer, "MOV TMP.r, %s.a;\n", src_str);
+     shader_addline(buffer, "MOV TMP.g, %s.r;\n", src_str);
+     flags = reg1 < MAX_TEXTURES ? deviceImpl->stateBlock->textureState[reg1][WINED3DTSS_TEXTURETRANSFORMFLAGS] : 0;
+     shader_hw_sample(arg, reg1, dst_str, "TMP", flags & WINED3DTTFF_PROJECTED, FALSE);
+}
+
+static void pshader_hw_texreg2gb(const SHADER_OPCODE_ARG *arg)
+{
+     SHADER_BUFFER* buffer = arg->buffer;
+
+     DWORD reg1 = arg->dst & WINED3DSP_REGNUM_MASK;
+     char dst_str[8];
+     char src_str[50];
+
+     sprintf(dst_str, "T%u", reg1);
+     pshader_gen_input_modifier_line(arg->shader, buffer, arg->src[0], 0, src_str);
+     shader_addline(buffer, "MOV TMP.r, %s.g;\n", src_str);
+     shader_addline(buffer, "MOV TMP.g, %s.b;\n", src_str);
+     shader_hw_sample(arg, reg1, dst_str, "TMP", FALSE, FALSE);
+}
+
+static void pshader_hw_texreg2rgb(const SHADER_OPCODE_ARG *arg)
+{
+    SHADER_BUFFER* buffer = arg->buffer;
+    DWORD reg1 = arg->dst & WINED3DSP_REGNUM_MASK;
+    char dst_str[8];
+    char src_str[50];
+
+    sprintf(dst_str, "T%u", reg1);
+    pshader_gen_input_modifier_line(arg->shader, buffer, arg->src[0], 0, src_str);
+    shader_hw_sample(arg, reg1, dst_str, src_str, FALSE, FALSE);
+}
+
+static void pshader_hw_texbem(const SHADER_OPCODE_ARG *arg)
+{
+    IWineD3DPixelShaderImpl* This = (IWineD3DPixelShaderImpl*) arg->shader;
+    BOOL has_bumpmat = FALSE;
+    BOOL has_luminance = FALSE;
+    int i;
+
+    DWORD dst = arg->dst;
+    DWORD src = arg->src[0] & WINED3DSP_REGNUM_MASK;
+    SHADER_BUFFER* buffer = arg->buffer;
+
+    char reg_coord[40];
+    DWORD reg_dest_code;
+
+    /* All versions have a destination register */
+    reg_dest_code = dst & WINED3DSP_REGNUM_MASK;
+    /* Can directly use the name because texbem is only valid for <= 1.3 shaders */
+    pshader_get_register_name(arg->shader, dst, reg_coord);
+
+    for(i = 0; i < This->numbumpenvmatconsts; i++) {
+        if(This->bumpenvmatconst[i].const_num != -1 && reg_dest_code == This->bumpenvmatconst[i].texunit) {
+            has_bumpmat = TRUE;
+            break;
+        }
+    }
+    for(i = 0; i < This->numbumpenvmatconsts; i++) {
+        if(This->luminanceconst[i].const_num != -1 && reg_dest_code == This->luminanceconst[i].texunit) {
+            has_luminance = TRUE;
+            break;
+        }
+    }
+
+    if(has_bumpmat) {
+        /* Sampling the perturbation map in Tsrc was done already, including the signedness correction if needed */
+
+        shader_addline(buffer, "SWZ TMP2, bumpenvmat%d, x, z, 0, 0;\n", reg_dest_code);
+        shader_addline(buffer, "DP3 TMP.r, TMP2, T%u;\n", src);
+        shader_addline(buffer, "SWZ TMP2, bumpenvmat%d, y, w, 0, 0;\n", reg_dest_code);
+        shader_addline(buffer, "DP3 TMP.g, TMP2, T%u;\n", src);
+
+        /* with projective textures, texbem only divides the static texture coord, not the displacement,
+         * so we can't let the GL handle this.
+         */
+        if (((IWineD3DDeviceImpl*) This->baseShader.device)->stateBlock->textureState[reg_dest_code][WINED3DTSS_TEXTURETRANSFORMFLAGS]
+              & WINED3DTTFF_PROJECTED) {
+            shader_addline(buffer, "RCP TMP2.a, %s.a;\n", reg_coord);
+            shader_addline(buffer, "MUL TMP2.rg, %s, TMP2.a;\n", reg_coord);
+            shader_addline(buffer, "ADD TMP.rg, TMP, TMP2;\n");
+        } else {
+            shader_addline(buffer, "ADD TMP.rg, TMP, %s;\n", reg_coord);
+        }
+
+        shader_hw_sample(arg, reg_dest_code, reg_coord, "TMP", FALSE, FALSE);
+
+        if(arg->opcode->opcode == WINED3DSIO_TEXBEML && has_luminance) {
+            shader_addline(buffer, "MAD TMP, T%u.z, luminance%d.x, luminance%d.y;\n",
+                           src, reg_dest_code, reg_dest_code);
+            shader_addline(buffer, "MUL %s, %s, TMP;\n", reg_coord, reg_coord);
+        }
+
+    } else {
+        DWORD tf;
+        if(reg_dest_code < MAX_TEXTURES) {
+            tf = ((IWineD3DDeviceImpl*) This->baseShader.device)->stateBlock->textureState[reg_dest_code][WINED3DTSS_TEXTURETRANSFORMFLAGS];
+        } else {
+            tf = 0;
+        }
+        /* Without a bump matrix loaded, just sample with the unmodified coordinates */
+        shader_hw_sample(arg, reg_dest_code, reg_coord, reg_coord, tf & WINED3DTTFF_PROJECTED, FALSE);
+    }
+}
+
+static void pshader_hw_texm3x2pad(const SHADER_OPCODE_ARG *arg)
+{
+    DWORD reg = arg->dst & WINED3DSP_REGNUM_MASK;
+    SHADER_BUFFER* buffer = arg->buffer;
+    char src0_name[50];
+
+    pshader_gen_input_modifier_line(arg->shader, buffer, arg->src[0], 0, src0_name);
+    shader_addline(buffer, "DP3 TMP.x, T%u, %s;\n", reg, src0_name);
+}
+
+static void pshader_hw_texm3x2tex(const SHADER_OPCODE_ARG *arg)
+{
+    IWineD3DPixelShaderImpl* This = (IWineD3DPixelShaderImpl*) arg->shader;
+    IWineD3DDeviceImpl* deviceImpl = (IWineD3DDeviceImpl*) This->baseShader.device;
+    DWORD flags;
+    DWORD reg = arg->dst & WINED3DSP_REGNUM_MASK;
+    SHADER_BUFFER* buffer = arg->buffer;
+    char dst_str[8];
+    char src0_name[50];
+
+    sprintf(dst_str, "T%u", reg);
+    pshader_gen_input_modifier_line(arg->shader, buffer, arg->src[0], 0, src0_name);
+    shader_addline(buffer, "DP3 TMP.y, T%u, %s;\n", reg, src0_name);
+    flags = reg < MAX_TEXTURES ? deviceImpl->stateBlock->textureState[reg][WINED3DTSS_TEXTURETRANSFORMFLAGS] : 0;
+    shader_hw_sample(arg, reg, dst_str, "TMP", flags & WINED3DTTFF_PROJECTED, FALSE);
+}
+
+static void pshader_hw_texm3x3pad(const SHADER_OPCODE_ARG *arg)
+{
+    IWineD3DPixelShaderImpl* This = (IWineD3DPixelShaderImpl*) arg->shader;
+    DWORD reg = arg->dst & WINED3DSP_REGNUM_MASK;
+    SHADER_BUFFER* buffer = arg->buffer;
+    SHADER_PARSE_STATE* current_state = &This->baseShader.parse_state;
+    char src0_name[50];
+
+    pshader_gen_input_modifier_line(arg->shader, buffer, arg->src[0], 0, src0_name);
+    shader_addline(buffer, "DP3 TMP.%c, T%u, %s;\n", 'x' + current_state->current_row, reg, src0_name);
+    current_state->texcoord_w[current_state->current_row++] = reg;
+}
+
+static void pshader_hw_texm3x3tex(const SHADER_OPCODE_ARG *arg)
+{
+    IWineD3DPixelShaderImpl* This = (IWineD3DPixelShaderImpl*) arg->shader;
+    IWineD3DDeviceImpl* deviceImpl = (IWineD3DDeviceImpl*) This->baseShader.device;
+    DWORD flags;
+    DWORD reg = arg->dst & WINED3DSP_REGNUM_MASK;
+    SHADER_BUFFER* buffer = arg->buffer;
+    SHADER_PARSE_STATE* current_state = &This->baseShader.parse_state;
+    char dst_str[8];
+    char src0_name[50];
+
+    pshader_gen_input_modifier_line(arg->shader, buffer, arg->src[0], 0, src0_name);
+    shader_addline(buffer, "DP3 TMP.z, T%u, %s;\n", reg, src0_name);
+
+    /* Sample the texture using the calculated coordinates */
+    sprintf(dst_str, "T%u", reg);
+    flags = reg < MAX_TEXTURES ? deviceImpl->stateBlock->textureState[reg][WINED3DTSS_TEXTURETRANSFORMFLAGS] : 0;
+    shader_hw_sample(arg, reg, dst_str, "TMP", flags & WINED3DTTFF_PROJECTED, FALSE);
+    current_state->current_row = 0;
+}
+
+static void pshader_hw_texm3x3vspec(const SHADER_OPCODE_ARG *arg)
+{
+    IWineD3DPixelShaderImpl* This = (IWineD3DPixelShaderImpl*) arg->shader;
+    IWineD3DDeviceImpl* deviceImpl = (IWineD3DDeviceImpl*) This->baseShader.device;
+    DWORD flags;
+    DWORD reg = arg->dst & WINED3DSP_REGNUM_MASK;
+    SHADER_BUFFER* buffer = arg->buffer;
+    SHADER_PARSE_STATE* current_state = &This->baseShader.parse_state;
+    char dst_str[8];
+    char src0_name[50];
+
+    pshader_gen_input_modifier_line(arg->shader, buffer, arg->src[0], 0, src0_name);
+    shader_addline(buffer, "DP3 TMP.z, T%u, %s;\n", reg, src0_name);
+
+    /* Construct the eye-ray vector from w coordinates */
+    shader_addline(buffer, "MOV TMP2.x, fragment.texcoord[%u].w;\n", current_state->texcoord_w[0]);
+    shader_addline(buffer, "MOV TMP2.y, fragment.texcoord[%u].w;\n", current_state->texcoord_w[1]);
+    shader_addline(buffer, "MOV TMP2.z, fragment.texcoord[%u].w;\n", reg);
+
+    /* Calculate reflection vector
+     */
+    shader_addline(buffer, "DP3 TMP.w, TMP, TMP2;\n");
+    /* The .w is ignored when sampling, so I can use TMP2.w to calculate dot(N, N) */
+    shader_addline(buffer, "DP3 TMP2.w, TMP, TMP;\n");
+    shader_addline(buffer, "RCP TMP2.w, TMP2.w;\n");
+    shader_addline(buffer, "MUL TMP.w, TMP.w, TMP2.w;\n");
+    shader_addline(buffer, "MUL TMP, TMP.w, TMP;\n");
+    shader_addline(buffer, "MAD TMP, coefmul.x, TMP, -TMP2;\n");
+
+    /* Sample the texture using the calculated coordinates */
+    sprintf(dst_str, "T%u", reg);
+    flags = reg < MAX_TEXTURES ? deviceImpl->stateBlock->textureState[reg][WINED3DTSS_TEXTURETRANSFORMFLAGS] : 0;
+    shader_hw_sample(arg, reg, dst_str, "TMP", flags & WINED3DTTFF_PROJECTED, FALSE);
+    current_state->current_row = 0;
+}
+
+static void pshader_hw_texm3x3spec(const SHADER_OPCODE_ARG *arg)
+{
+    IWineD3DPixelShaderImpl* This = (IWineD3DPixelShaderImpl*) arg->shader;
+    IWineD3DDeviceImpl* deviceImpl = (IWineD3DDeviceImpl*) This->baseShader.device;
+    DWORD flags;
+    DWORD reg = arg->dst & WINED3DSP_REGNUM_MASK;
+    DWORD reg3 = arg->src[1] & WINED3DSP_REGNUM_MASK;
+    SHADER_PARSE_STATE* current_state = &This->baseShader.parse_state;
+    SHADER_BUFFER* buffer = arg->buffer;
+    char dst_str[8];
+    char src0_name[50];
+
+    pshader_gen_input_modifier_line(arg->shader, buffer, arg->src[0], 0, src0_name);
+    shader_addline(buffer, "DP3 TMP.z, T%u, %s;\n", reg, src0_name);
+
+    /* Calculate reflection vector.
+     *
+     *               dot(N, E)
+     * TMP.xyz = 2 * --------- * N - E
+     *               dot(N, N)
+     *
+     * Which normalizes the normal vector
+     */
+    shader_addline(buffer, "DP3 TMP.w, TMP, C[%u];\n", reg3);
+    shader_addline(buffer, "DP3 TMP2.w, TMP, TMP;\n");
+    shader_addline(buffer, "RCP TMP2.w, TMP2.w;\n");
+    shader_addline(buffer, "MUL TMP.w, TMP.w, TMP2.w;\n");
+    shader_addline(buffer, "MUL TMP, TMP.w, TMP;\n");
+    shader_addline(buffer, "MAD TMP, coefmul.x, TMP, -C[%u];\n", reg3);
+
+    /* Sample the texture using the calculated coordinates */
+    sprintf(dst_str, "T%u", reg);
+    flags = reg < MAX_TEXTURES ? deviceImpl->stateBlock->textureState[reg][WINED3DTSS_TEXTURETRANSFORMFLAGS] : 0;
+    shader_hw_sample(arg, reg, dst_str, "TMP", flags & WINED3DTTFF_PROJECTED, FALSE);
+    current_state->current_row = 0;
+}
+
+static void pshader_hw_texdepth(const SHADER_OPCODE_ARG *arg)
+{
+    SHADER_BUFFER* buffer = arg->buffer;
+    char dst_name[50];
+
+    /* texdepth has an implicit destination, the fragment depth value. It's only parameter,
+     * which is essentially an input, is the destination register because it is the first
+     * parameter. According to the msdn, this must be register r5, but let's keep it more flexible
+     * here
+     */
+    pshader_get_register_name(arg->shader, arg->dst, dst_name);
+
+    /* According to the msdn, the source register(must be r5) is unusable after
+     * the texdepth instruction, so we're free to modify it
+     */
+    shader_addline(buffer, "MIN %s.g, %s.g, one.g;\n", dst_name, dst_name);
+
+    /* How to deal with the special case dst_name.g == 0? if r != 0, then
+     * the r * (1 / 0) will give infinity, which is clamped to 1.0, the correct
+     * result. But if r = 0.0, then 0 * inf = 0, which is incorrect.
+     */
+    shader_addline(buffer, "RCP %s.g, %s.g;\n", dst_name, dst_name);
+    shader_addline(buffer, "MUL TMP.x, %s.r, %s.g;\n", dst_name, dst_name);
+    shader_addline(buffer, "MIN TMP.x, TMP.x, one.r;\n");
+    shader_addline(buffer, "MAX result.depth, TMP.x, 0.0;\n");
+}
+
+/** Process the WINED3DSIO_TEXDP3TEX instruction in ARB:
+ * Take a 3-component dot product of the TexCoord[dstreg] and src,
+ * then perform a 1D texture lookup from stage dstregnum, place into dst. */
+static void pshader_hw_texdp3tex(const SHADER_OPCODE_ARG *arg)
+{
+    SHADER_BUFFER* buffer = arg->buffer;
+    DWORD sampler_idx = arg->dst & WINED3DSP_REGNUM_MASK;
+    char src0[50];
+    char dst_str[8];
+
+    pshader_gen_input_modifier_line(arg->shader, buffer, arg->src[0], 0, src0);
+    shader_addline(buffer, "MOV TMP, 0.0;\n");
+    shader_addline(buffer, "DP3 TMP.x, T%u, %s;\n", sampler_idx, src0);
+
+    sprintf(dst_str, "T%u", sampler_idx);
+    shader_hw_sample(arg, sampler_idx, dst_str, "TMP", FALSE /* Only one coord, can't be projected */, FALSE);
+}
+
+/** Process the WINED3DSIO_TEXDP3 instruction in ARB:
+ * Take a 3-component dot product of the TexCoord[dstreg] and src. */
+static void pshader_hw_texdp3(const SHADER_OPCODE_ARG *arg)
+{
+    char src0[50];
+    char dst_str[50];
+    char dst_mask[6];
+    DWORD dstreg = arg->dst & WINED3DSP_REGNUM_MASK;
+    SHADER_BUFFER* buffer = arg->buffer;
+
+    /* Handle output register */
+    pshader_get_register_name(arg->shader, arg->dst, dst_str);
+    shader_arb_get_write_mask(arg, arg->dst, dst_mask);
+
+    pshader_gen_input_modifier_line(arg->shader, buffer, arg->src[0], 0, src0);
+    shader_addline(buffer, "DP3 %s%s, T%u, %s;\n", dst_str, dst_mask, dstreg, src0);
+
+    /* TODO: Handle output modifiers */
+}
+
+/** Process the WINED3DSIO_TEXM3X3 instruction in ARB
+ * Perform the 3rd row of a 3x3 matrix multiply */
+static void pshader_hw_texm3x3(const SHADER_OPCODE_ARG *arg)
+{
+    SHADER_BUFFER* buffer = arg->buffer;
+    char dst_str[50];
+    char dst_mask[6];
+    char src0[50];
+    DWORD dst_reg = arg->dst & WINED3DSP_REGNUM_MASK;
+
+    pshader_get_register_name(arg->shader, arg->dst, dst_str);
+    shader_arb_get_write_mask(arg, arg->dst, dst_mask);
+
+    pshader_gen_input_modifier_line(arg->shader, buffer, arg->src[0], 0, src0);
+    shader_addline(buffer, "DP3 TMP.z, T%u, %s;\n", dst_reg, src0);
+    shader_addline(buffer, "MOV %s%s, TMP;\n", dst_str, dst_mask);
+
+    /* TODO: Handle output modifiers */
+}
+
+/** Process the WINED3DSIO_TEXM3X2DEPTH instruction in ARB:
+ * Last row of a 3x2 matrix multiply, use the result to calculate the depth:
+ * Calculate tmp0.y = TexCoord[dstreg] . src.xyz;  (tmp0.x has already been calculated)
+ * depth = (tmp0.y == 0.0) ? 1.0 : tmp0.x / tmp0.y
+ */
+static void pshader_hw_texm3x2depth(const SHADER_OPCODE_ARG *arg)
+{
+    SHADER_BUFFER* buffer = arg->buffer;
+    DWORD dst_reg = arg->dst & WINED3DSP_REGNUM_MASK;
+    char src0[50];
+
+    pshader_gen_input_modifier_line(arg->shader, buffer, arg->src[0], 0, src0);
+    shader_addline(buffer, "DP3 TMP.y, T%u, %s;\n", dst_reg, src0);
+
+    /* How to deal with the special case dst_name.g == 0? if r != 0, then
+     * the r * (1 / 0) will give infinity, which is clamped to 1.0, the correct
+     * result. But if r = 0.0, then 0 * inf = 0, which is incorrect.
+     */
+    shader_addline(buffer, "RCP TMP.y, TMP.y;\n");
+    shader_addline(buffer, "MUL TMP.x, TMP.x, TMP.y;\n");
+    shader_addline(buffer, "MIN TMP.x, TMP.x, one.r;\n");
+    shader_addline(buffer, "MAX result.depth, TMP.x, 0.0;\n");
+}
+
+/** Handles transforming all WINED3DSIO_M?x? opcodes for
+    Vertex/Pixel shaders to ARB_vertex_program codes */
+static void shader_hw_mnxn(const SHADER_OPCODE_ARG *arg)
+{
+    int i;
+    int nComponents = 0;
+    SHADER_OPCODE_ARG tmpArg;
+    IWineD3DBaseShaderImpl *shader = (IWineD3DBaseShaderImpl *)arg->shader;
+    const SHADER_OPCODE *opcode_table = shader->baseShader.shader_ins;
+    DWORD shader_version = shader->baseShader.hex_version;
+
+    memset(&tmpArg, 0, sizeof(SHADER_OPCODE_ARG));
+
+    /* Set constants for the temporary argument */
+    tmpArg.shader      = arg->shader;
+    tmpArg.buffer      = arg->buffer;
+    tmpArg.src[0]      = arg->src[0];
+    tmpArg.src_addr[0] = arg->src_addr[0];
+    tmpArg.src_addr[1] = arg->src_addr[1];
+    tmpArg.reg_maps = arg->reg_maps;
+
+    switch(arg->opcode->opcode) {
+    case WINED3DSIO_M4x4:
+        nComponents = 4;
+        tmpArg.opcode = shader_get_opcode(opcode_table, shader_version, WINED3DSIO_DP4);
+        break;
+    case WINED3DSIO_M4x3:
+        nComponents = 3;
+        tmpArg.opcode = shader_get_opcode(opcode_table, shader_version, WINED3DSIO_DP4);
+        break;
+    case WINED3DSIO_M3x4:
+        nComponents = 4;
+        tmpArg.opcode = shader_get_opcode(opcode_table, shader_version, WINED3DSIO_DP3);
+        break;
+    case WINED3DSIO_M3x3:
+        nComponents = 3;
+        tmpArg.opcode = shader_get_opcode(opcode_table, shader_version, WINED3DSIO_DP3);
+        break;
+    case WINED3DSIO_M3x2:
+        nComponents = 2;
+        tmpArg.opcode = shader_get_opcode(opcode_table, shader_version, WINED3DSIO_DP3);
+        break;
+    default:
+        break;
+    }
+
+    for (i = 0; i < nComponents; i++) {
+        tmpArg.dst = ((arg->dst) & ~WINED3DSP_WRITEMASK_ALL)|(WINED3DSP_WRITEMASK_0<<i);
+        tmpArg.src[1] = arg->src[1]+i;
+        shader_hw_map2gl(&tmpArg);
+    }
+}
+
+static void vshader_hw_rsq_rcp(const SHADER_OPCODE_ARG *arg)
+{
+    CONST SHADER_OPCODE* curOpcode = arg->opcode;
+    SHADER_BUFFER* buffer = arg->buffer;
+    DWORD dst = arg->dst;
+    DWORD src = arg->src[0];
+    DWORD swizzle = (src & WINED3DSP_SWIZZLE_MASK) >> WINED3DSP_SWIZZLE_SHIFT;
+
+    char tmpLine[256];
+
+    strcpy(tmpLine, curOpcode->glname); /* Opcode */
+    vshader_program_add_param(arg, dst, FALSE, tmpLine); /* Destination */
+    strcat(tmpLine, ",");
+    vshader_program_add_param(arg, src, TRUE, tmpLine);
+    if ((WINED3DSP_NOSWIZZLE >> WINED3DSP_SWIZZLE_SHIFT) == swizzle) {
+        /* Dx sdk says .x is used if no swizzle is given, but our test shows that
+         * .w is used
+         */
+        strcat(tmpLine, ".w");
+    }
+
+    shader_addline(buffer, "%s;\n", tmpLine);
+}
+
+static void shader_hw_nrm(const SHADER_OPCODE_ARG *arg)
+{
+    SHADER_BUFFER* buffer = arg->buffer;
+    char dst_name[50];
+    char src_name[50];
+    char dst_wmask[20];
+    DWORD shift = (arg->dst & WINED3DSP_DSTSHIFT_MASK) >> WINED3DSP_DSTSHIFT_SHIFT;
+    BOOL sat = (arg->dst & WINED3DSP_DSTMOD_MASK) & WINED3DSPDM_SATURATE;
+
+    pshader_get_register_name(arg->shader, arg->dst, dst_name);
+    shader_arb_get_write_mask(arg, arg->dst, dst_wmask);
+
+    pshader_gen_input_modifier_line(arg->shader, buffer, arg->src[0], 0, src_name);
+    shader_addline(buffer, "DP3 TMP, %s, %s;\n", src_name, src_name);
+    shader_addline(buffer, "RSQ TMP, TMP.x;\n");
+    /* dst.w = src[0].w * 1 / (src.x^2 + src.y^2 + src.z^2)^(1/2) according to msdn*/
+    shader_addline(buffer, "MUL%s %s%s, %s, TMP;\n", sat ? "_SAT" : "", dst_name, dst_wmask,
+                   src_name);
+
+    if (shift != 0)
+        pshader_gen_output_modifier_line(buffer, FALSE, dst_wmask, shift, dst_name);
+}
+
+static void shader_hw_sincos(const SHADER_OPCODE_ARG *arg)
+{
+    /* This instruction exists in ARB, but the d3d instruction takes two extra parameters which
+     * must contain fixed constants. So we need a separate function to filter those constants and
+     * can't use map2gl
+     */
+    SHADER_BUFFER* buffer = arg->buffer;
+    char dst_name[50];
+    char src_name[50];
+    char dst_wmask[20];
+    DWORD shift = (arg->dst & WINED3DSP_DSTSHIFT_MASK) >> WINED3DSP_DSTSHIFT_SHIFT;
+    BOOL sat = (arg->dst & WINED3DSP_DSTMOD_MASK) & WINED3DSPDM_SATURATE;
+
+    pshader_get_register_name(arg->shader, arg->dst, dst_name);
+    shader_arb_get_write_mask(arg, arg->dst, dst_wmask);
+
+    pshader_gen_input_modifier_line(arg->shader, buffer, arg->src[0], 0, src_name);
+    shader_addline(buffer, "SCS%s %s%s, %s;\n", sat ? "_SAT" : "", dst_name, dst_wmask,
+                   src_name);
+
+    if (shift != 0)
+        pshader_gen_output_modifier_line(buffer, FALSE, dst_wmask, shift, dst_name);
+
+}
+
+static GLuint create_arb_blt_vertex_program(const WineD3D_GL_Info *gl_info)
+{
+    GLuint program_id = 0;
+    const char *blt_vprogram =
+        "!!ARBvp1.0\n"
+        "PARAM c[1] = { { 1, 0.5 } };\n"
+        "MOV result.position, vertex.position;\n"
+        "MOV result.color, c[0].x;\n"
+        "MOV result.texcoord[0], vertex.texcoord[0];\n"
+        "END\n";
+
+    GL_EXTCALL(glGenProgramsARB(1, &program_id));
+    GL_EXTCALL(glBindProgramARB(GL_VERTEX_PROGRAM_ARB, program_id));
+    GL_EXTCALL(glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, strlen(blt_vprogram), blt_vprogram));
+
+    if (glGetError() == GL_INVALID_OPERATION) {
+        GLint pos;
+        glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &pos);
+        FIXME("Vertex program error at position %d: %s\n", pos,
+            debugstr_a((const char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)));
+    }
+
+    return program_id;
+}
+
+static GLuint create_arb_blt_fragment_program(const WineD3D_GL_Info *gl_info, enum tex_types tex_type)
+{
+    GLuint program_id = 0;
+    const char *blt_fprograms[tex_type_count] =
+    {
+        /* tex_1d */
+        NULL,
+        /* tex_2d */
+        "!!ARBfp1.0\n"
+        "TEMP R0;\n"
+        "TEX R0.x, fragment.texcoord[0], texture[0], 2D;\n"
+        "MOV result.depth.z, R0.x;\n"
+        "END\n",
+        /* tex_3d */
+        NULL,
+        /* tex_cube */
+        "!!ARBfp1.0\n"
+        "TEMP R0;\n"
+        "TEX R0.x, fragment.texcoord[0], texture[0], CUBE;\n"
+        "MOV result.depth.z, R0.x;\n"
+        "END\n",
+        /* tex_rect */
+        "!!ARBfp1.0\n"
+        "TEMP R0;\n"
+        "TEX R0.x, fragment.texcoord[0], texture[0], RECT;\n"
+        "MOV result.depth.z, R0.x;\n"
+        "END\n",
+    };
+
+    if (!blt_fprograms[tex_type])
+    {
+        FIXME("tex_type %#x not supported\n", tex_type);
+        tex_type = tex_2d;
+    }
+
+    GL_EXTCALL(glGenProgramsARB(1, &program_id));
+    GL_EXTCALL(glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, program_id));
+    GL_EXTCALL(glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, strlen(blt_fprograms[tex_type]), blt_fprograms[tex_type]));
+
+    if (glGetError() == GL_INVALID_OPERATION) {
+        GLint pos;
+        glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &pos);
+        FIXME("Fragment program error at position %d: %s\n", pos,
+            debugstr_a((const char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)));
+    }
+
+    return program_id;
+}
+
+static void shader_arb_select(IWineD3DDevice *iface, BOOL usePS, BOOL useVS) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    struct shader_arb_priv *priv = (struct shader_arb_priv *) This->shader_priv;
+    const WineD3D_GL_Info *gl_info = &This->adapter->gl_info;
+
+    if (useVS) {
+        TRACE("Using vertex shader\n");
+        IWineD3DVertexShaderImpl_CompileShader(This->stateBlock->vertexShader);
+
+        priv->current_vprogram_id = ((IWineD3DVertexShaderImpl *)This->stateBlock->vertexShader)->prgId;
+
+        /* Bind the vertex program */
+        GL_EXTCALL(glBindProgramARB(GL_VERTEX_PROGRAM_ARB, priv->current_vprogram_id));
+        checkGLcall("glBindProgramARB(GL_VERTEX_PROGRAM_ARB, vertexShader->prgId);");
+
+        /* Enable OpenGL vertex programs */
+        glEnable(GL_VERTEX_PROGRAM_ARB);
+        checkGLcall("glEnable(GL_VERTEX_PROGRAM_ARB);");
+        TRACE("(%p) : Bound vertex program %u and enabled GL_VERTEX_PROGRAM_ARB\n", This, priv->current_vprogram_id);
+    } else if(GL_SUPPORT(ARB_VERTEX_PROGRAM)) {
+        priv->current_vprogram_id = 0;
+        glDisable(GL_VERTEX_PROGRAM_ARB);
+        checkGLcall("glDisable(GL_VERTEX_PROGRAM_ARB)");
+    }
+
+    if (usePS) {
+        struct ps_compile_args compile_args;
+        TRACE("Using pixel shader\n");
+        find_ps_compile_args((IWineD3DPixelShaderImpl *) This->stateBlock->pixelShader, This->stateBlock, &compile_args);
+        priv->current_fprogram_id = find_gl_pshader((IWineD3DPixelShaderImpl *) This->stateBlock->pixelShader,
+                                                    &compile_args);
+
+        /* Bind the fragment program */
+        GL_EXTCALL(glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, priv->current_fprogram_id));
+        checkGLcall("glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, pixelShader->prgId);");
+
+        if(!priv->use_arbfp_fixed_func) {
+            /* Enable OpenGL fragment programs */
+            glEnable(GL_FRAGMENT_PROGRAM_ARB);
+            checkGLcall("glEnable(GL_FRAGMENT_PROGRAM_ARB);");
+        }
+        TRACE("(%p) : Bound fragment program %u and enabled GL_FRAGMENT_PROGRAM_ARB\n", This, priv->current_fprogram_id);
+    } else if(GL_SUPPORT(ARB_FRAGMENT_PROGRAM) && !priv->use_arbfp_fixed_func) {
+        /* Disable only if we're not using arbfp fixed function fragment processing. If this is used,
+         * keep GL_FRAGMENT_PROGRAM_ARB enabled, and the fixed function pipeline will bind the fixed function
+         * replacement shader
+         */
+        glDisable(GL_FRAGMENT_PROGRAM_ARB);
+        checkGLcall("glDisable(GL_FRAGMENT_PROGRAM_ARB)");
+        priv->current_fprogram_id = 0;
+    }
+}
+
+static void shader_arb_select_depth_blt(IWineD3DDevice *iface, enum tex_types tex_type) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    struct shader_arb_priv *priv = (struct shader_arb_priv *) This->shader_priv;
+    GLuint *blt_fprogram = &priv->depth_blt_fprogram_id[tex_type];
+    const WineD3D_GL_Info *gl_info = &This->adapter->gl_info;
+
+    if (!priv->depth_blt_vprogram_id) priv->depth_blt_vprogram_id = create_arb_blt_vertex_program(gl_info);
+    GL_EXTCALL(glBindProgramARB(GL_VERTEX_PROGRAM_ARB, priv->depth_blt_vprogram_id));
+    glEnable(GL_VERTEX_PROGRAM_ARB);
+
+    if (!*blt_fprogram) *blt_fprogram = create_arb_blt_fragment_program(gl_info, tex_type);
+    GL_EXTCALL(glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, *blt_fprogram));
+    glEnable(GL_FRAGMENT_PROGRAM_ARB);
+}
+
+static void shader_arb_deselect_depth_blt(IWineD3DDevice *iface) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    struct shader_arb_priv *priv = (struct shader_arb_priv *) This->shader_priv;
+    const WineD3D_GL_Info *gl_info = &This->adapter->gl_info;
+
+    if (priv->current_vprogram_id) {
+        GL_EXTCALL(glBindProgramARB(GL_VERTEX_PROGRAM_ARB, priv->current_vprogram_id));
+        checkGLcall("glBindProgramARB(GL_VERTEX_PROGRAM_ARB, vertexShader->prgId);");
+
+        glEnable(GL_VERTEX_PROGRAM_ARB);
+        checkGLcall("glEnable(GL_VERTEX_PROGRAM_ARB);");
+
+        TRACE("(%p) : Bound vertex program %u and enabled GL_VERTEX_PROGRAM_ARB\n", This, priv->current_vprogram_id);
+    } else {
+        glDisable(GL_VERTEX_PROGRAM_ARB);
+        checkGLcall("glDisable(GL_VERTEX_PROGRAM_ARB)");
+    }
+
+    if (priv->current_fprogram_id) {
+        GL_EXTCALL(glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, priv->current_fprogram_id));
+        checkGLcall("glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, pixelShader->prgId);");
+
+        glEnable(GL_FRAGMENT_PROGRAM_ARB);
+        checkGLcall("glEnable(GL_FRAGMENT_PROGRAM_ARB);");
+
+        TRACE("(%p) : Bound fragment program %u and enabled GL_FRAGMENT_PROGRAM_ARB\n", This, priv->current_fprogram_id);
+    } else {
+        glDisable(GL_FRAGMENT_PROGRAM_ARB);
+        checkGLcall("glDisable(GL_FRAGMENT_PROGRAM_ARB)");
+    }
+}
+
+static void shader_arb_cleanup(IWineD3DDevice *iface) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    const WineD3D_GL_Info *gl_info = &This->adapter->gl_info;
+    if (GL_SUPPORT(ARB_VERTEX_PROGRAM)) glDisable(GL_VERTEX_PROGRAM_ARB);
+    if (GL_SUPPORT(ARB_FRAGMENT_PROGRAM)) glDisable(GL_FRAGMENT_PROGRAM_ARB);
+}
+
+static void shader_arb_destroy(IWineD3DBaseShader *iface) {
+    IWineD3DBaseShaderImpl *baseShader = (IWineD3DBaseShaderImpl *) iface;
+    const WineD3D_GL_Info *gl_info = &((IWineD3DDeviceImpl *)baseShader->baseShader.device)->adapter->gl_info;
+    char pshader = shader_is_pshader_version(baseShader->baseShader.hex_version);
+
+    if(pshader) {
+        IWineD3DPixelShaderImpl *This = (IWineD3DPixelShaderImpl *) iface;
+        UINT i;
+
+        ENTER_GL();
+        for(i = 0; i < This->num_gl_shaders; i++) {
+            GL_EXTCALL(glDeleteProgramsARB(1, &This->gl_shaders[i].prgId));
+            checkGLcall("GL_EXTCALL(glDeleteProgramsARB(1, &This->gl_shaders[i].prgId))");
+        }
+        LEAVE_GL();
+        HeapFree(GetProcessHeap(), 0, This->gl_shaders);
+        This->gl_shaders = NULL;
+        This->num_gl_shaders = 0;
+    } else {
+        IWineD3DVertexShaderImpl *This = (IWineD3DVertexShaderImpl *) iface;
+
+        ENTER_GL();
+        GL_EXTCALL(glDeleteProgramsARB(1, &This->prgId));
+        checkGLcall("GL_EXTCALL(glDeleteProgramsARB(1, &This->prgId))");
+        ((IWineD3DVertexShaderImpl *) This)->prgId = 0;
+        LEAVE_GL();
+    }
+    baseShader->baseShader.is_compiled = FALSE;
+}
+
+static HRESULT shader_arb_alloc(IWineD3DDevice *iface) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    This->shader_priv = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(struct shader_arb_priv));
+    return WINED3D_OK;
+}
+
+static void shader_arb_free(IWineD3DDevice *iface) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    const WineD3D_GL_Info *gl_info = &This->adapter->gl_info;
+    struct shader_arb_priv *priv = (struct shader_arb_priv *) This->shader_priv;
+    int i;
+
+    if(priv->depth_blt_vprogram_id) {
+        GL_EXTCALL(glDeleteProgramsARB(1, &priv->depth_blt_vprogram_id));
+    }
+    for (i = 0; i < tex_type_count; ++i) {
+        if (priv->depth_blt_fprogram_id[i]) {
+            GL_EXTCALL(glDeleteProgramsARB(1, &priv->depth_blt_fprogram_id[i]));
+        }
+    }
+
+    HeapFree(GetProcessHeap(), 0, This->shader_priv);
+}
+
+static BOOL shader_arb_dirty_const(IWineD3DDevice *iface) {
+    return TRUE;
+}
+
+static void arbfp_add_sRGB_correction(SHADER_BUFFER *buffer, const char *fragcolor, const char *tmp1,
+                                      const char *tmp2, const char *tmp3, const char *tmp4) {
+    /* Perform sRGB write correction. See GLX_EXT_framebuffer_sRGB */
+
+    /* Calculate the > 0.0031308 case */
+    shader_addline(buffer, "POW %s.x, %s.x, srgb_pow.x;\n", tmp1, fragcolor);
+    shader_addline(buffer, "POW %s.y, %s.y, srgb_pow.y;\n", tmp1, fragcolor);
+    shader_addline(buffer, "POW %s.z, %s.z, srgb_pow.z;\n", tmp1, fragcolor);
+    shader_addline(buffer, "MUL %s, %s, srgb_mul_hi;\n", tmp1, tmp1);
+    shader_addline(buffer, "SUB %s, %s, srgb_sub_hi;\n", tmp1, tmp1);
+    /* Calculate the < case */
+    shader_addline(buffer, "MUL %s, srgb_mul_low, %s;\n", tmp2, fragcolor);
+    /* Get 1.0 / 0.0 masks for > 0.0031308 and < 0.0031308 */
+    shader_addline(buffer, "SLT %s, srgb_comparison, %s;\n", tmp3, fragcolor);
+    shader_addline(buffer, "SGE %s, srgb_comparison, %s;\n", tmp4, fragcolor);
+    /* Store the components > 0.0031308 in the destination */
+    shader_addline(buffer, "MUL %s, %s, %s;\n", fragcolor, tmp1, tmp3);
+    /* Add the components that are < 0.0031308 */
+    shader_addline(buffer, "MAD result.color.xyz, %s, %s, %s;\n", tmp2, tmp4, fragcolor);
+    /* [0.0;1.0] clamping. Not needed, this is done implicitly */
+}
+
+static GLuint shader_arb_generate_pshader(IWineD3DPixelShader *iface, SHADER_BUFFER *buffer) {
+    IWineD3DPixelShaderImpl *This = (IWineD3DPixelShaderImpl *)iface;
+    const shader_reg_maps* reg_maps = &This->baseShader.reg_maps;
+    CONST DWORD *function = This->baseShader.function;
+    const char *fragcolor;
+    const WineD3D_GL_Info *gl_info = &((IWineD3DDeviceImpl *)This->baseShader.device)->adapter->gl_info;
+    const local_constant *lconst;
+    GLuint retval;
+
+    /*  Create the hw ARB shader */
+    shader_addline(buffer, "!!ARBfp1.0\n");
+
+    shader_addline(buffer, "TEMP TMP;\n");     /* Used in matrix ops */
+    shader_addline(buffer, "TEMP TMP2;\n");    /* Used in matrix ops */
+    shader_addline(buffer, "TEMP TA;\n");      /* Used for modifiers */
+    shader_addline(buffer, "TEMP TB;\n");      /* Used for modifiers */
+    shader_addline(buffer, "TEMP TC;\n");      /* Used for modifiers */
+    shader_addline(buffer, "PARAM coefdiv = { 0.5, 0.25, 0.125, 0.0625 };\n");
+    shader_addline(buffer, "PARAM coefmul = { 2, 4, 8, 16 };\n");
+    shader_addline(buffer, "PARAM one = { 1.0, 1.0, 1.0, 1.0 };\n");
+
+    /* Base Declarations */
+    shader_generate_arb_declarations( (IWineD3DBaseShader*) This, reg_maps, buffer, &GLINFO_LOCATION);
+
+    /* We need two variables for fog blending */
+    shader_addline(buffer, "TEMP TMP_FOG;\n");
+    if (This->baseShader.hex_version >= WINED3DPS_VERSION(2,0)) {
+        shader_addline(buffer, "TEMP TMP_COLOR;\n");
+    }
+
+    /* Base Shader Body */
+    shader_generate_main( (IWineD3DBaseShader*) This, buffer, reg_maps, function);
+
+    /* calculate fog and blend it
+     * NOTE: state.fog.params.y and state.fog.params.z don't hold fog start s and end e but
+     * -1/(e-s) and e/(e-s) respectively.
+     */
+    shader_addline(buffer, "MAD_SAT TMP_FOG, fragment.fogcoord, state.fog.params.y, state.fog.params.z;\n");
+
+    if (This->baseShader.hex_version < WINED3DPS_VERSION(2,0)) {
+        fragcolor = "R0";
+    } else {
+        fragcolor = "TMP_COLOR";
+    }
+    if(((IWineD3DDeviceImpl *)This->baseShader.device)->stateBlock->renderState[WINED3DRS_SRGBWRITEENABLE]) {
+        arbfp_add_sRGB_correction(buffer, fragcolor, "TMP", "TMP2", "TA", "TB");
+    }
+    if (This->baseShader.hex_version < WINED3DPS_VERSION(3,0)) {
+        shader_addline(buffer, "LRP result.color.rgb, TMP_FOG.x, %s, state.fog.color;\n", fragcolor);
+        shader_addline(buffer, "MOV result.color.a, %s.a;\n", fragcolor);
+    }
+
+    shader_addline(buffer, "END\n");
+
+    /* TODO: change to resource.glObjectHandle or something like that */
+    GL_EXTCALL(glGenProgramsARB(1, &retval));
+
+    TRACE("Creating a hw pixel shader, prg=%d\n", retval);
+    GL_EXTCALL(glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, retval));
+
+    TRACE("Created hw pixel shader, prg=%d\n", retval);
+    /* Create the program and check for errors */
+    GL_EXTCALL(glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB,
+               buffer->bsize, buffer->buffer));
+
+    if (glGetError() == GL_INVALID_OPERATION) {
+        GLint errPos;
+        glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errPos);
+        FIXME("HW PixelShader Error at position %d: %s\n",
+              errPos, debugstr_a((const char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)));
+        retval = 0;
+    }
+
+    /* Load immediate constants */
+    if(!This->baseShader.load_local_constsF) {
+        LIST_FOR_EACH_ENTRY(lconst, &This->baseShader.constantsF, local_constant, entry) {
+            const float *value = (const float *)lconst->value;
+            GL_EXTCALL(glProgramLocalParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, lconst->idx, value));
+            checkGLcall("glProgramLocalParameter4fvARB");
+        }
+    }
+
+    return retval;
+}
+
+static void shader_arb_generate_vshader(IWineD3DVertexShader *iface, SHADER_BUFFER *buffer) {
+    IWineD3DVertexShaderImpl *This = (IWineD3DVertexShaderImpl *)iface;
+    const shader_reg_maps *reg_maps = &This->baseShader.reg_maps;
+    CONST DWORD *function = This->baseShader.function;
+    IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)This->baseShader.device;
+    const WineD3D_GL_Info *gl_info = &device->adapter->gl_info;
+    const local_constant *lconst;
+
+    /*  Create the hw ARB shader */
+    shader_addline(buffer, "!!ARBvp1.0\n");
+    shader_addline(buffer, "PARAM helper_const = { 2.0, -1.0, %d.0, 0.0 };\n", This->rel_offset);
+
+    /* Mesa supports only 95 constants */
+    if (GL_VEND(MESA) || GL_VEND(WINE))
+        This->baseShader.limits.constant_float =
+                min(95, This->baseShader.limits.constant_float);
+
+    shader_addline(buffer, "TEMP TMP;\n");
+
+    /* Base Declarations */
+    shader_generate_arb_declarations( (IWineD3DBaseShader*) This, reg_maps, buffer, &GLINFO_LOCATION);
+
+    /* We need a constant to fixup the final position */
+    shader_addline(buffer, "PARAM posFixup = program.env[%d];\n", ARB_SHADER_PRIVCONST_POS);
+
+    /* Initialize output parameters. GL_ARB_vertex_program does not require special initialization values
+     * for output parameters. D3D in theory does not do that either, but some applications depend on a
+     * proper initialization of the secondary color, and programs using the fixed function pipeline without
+     * a replacement shader depend on the texcoord.w being set properly.
+     *
+     * GL_NV_vertex_program defines that all output values are initialized to {0.0, 0.0, 0.0, 1.0}. This
+     * assertion is in effect even when using GL_ARB_vertex_program without any NV specific additions. So
+     * skip this if NV_vertex_program is supported. Otherwise, initialize the secondary color. For the tex-
+     * coords, we have a flag in the opengl caps. Many cards do not require the texcoord being set, and
+     * this can eat a number of instructions, so skip it unless this cap is set as well
+     */
+    if(!GL_SUPPORT(NV_VERTEX_PROGRAM)) {
+        shader_addline(buffer, "MOV result.color.secondary, -helper_const.wwwy;\n");
+
+        if((GLINFO_LOCATION).set_texcoord_w && !device->frag_pipe->ffp_proj_control) {
+            int i;
+            for(i = 0; i < min(8, MAX_REG_TEXCRD); i++) {
+                if(This->baseShader.reg_maps.texcoord_mask[i] != 0 &&
+                This->baseShader.reg_maps.texcoord_mask[i] != WINED3DSP_WRITEMASK_ALL) {
+                    shader_addline(buffer, "MOV result.texcoord[%u].w, -helper_const.y;\n", i);
+                }
+            }
+        }
+    }
+
+    /* Base Shader Body */
+    shader_generate_main( (IWineD3DBaseShader*) This, buffer, reg_maps, function);
+
+    /* If this shader doesn't use fog copy the z coord to the fog coord so that we can use table fog */
+    if (!reg_maps->fog)
+        shader_addline(buffer, "MOV result.fogcoord, TMP_OUT.z;\n");
+
+    /* Write the final position.
+     *
+     * OpenGL coordinates specify the center of the pixel while d3d coords specify
+     * the corner. The offsets are stored in z and w in posFixup. posFixup.y contains
+     * 1.0 or -1.0 to turn the rendering upside down for offscreen rendering. PosFixup.x
+     * contains 1.0 to allow a mad, but arb vs swizzles are too restricted for that.
+     */
+    shader_addline(buffer, "MUL TMP, posFixup, TMP_OUT.w;\n");
+    shader_addline(buffer, "ADD TMP_OUT.x, TMP_OUT.x, TMP.z;\n");
+    shader_addline(buffer, "MAD TMP_OUT.y, TMP_OUT.y, posFixup.y, TMP.w;\n");
+
+    /* Z coord [0;1]->[-1;1] mapping, see comment in transform_projection in state.c
+     * and the glsl equivalent
+     */
+    shader_addline(buffer, "MAD TMP_OUT.z, TMP_OUT.z, helper_const.x, -TMP_OUT.w;\n");
+
+    shader_addline(buffer, "MOV result.position, TMP_OUT;\n");
+
+    shader_addline(buffer, "END\n");
+
+    /* TODO: change to resource.glObjectHandle or something like that */
+    GL_EXTCALL(glGenProgramsARB(1, &This->prgId));
+
+    TRACE("Creating a hw vertex shader, prg=%d\n", This->prgId);
+    GL_EXTCALL(glBindProgramARB(GL_VERTEX_PROGRAM_ARB, This->prgId));
+
+    TRACE("Created hw vertex shader, prg=%d\n", This->prgId);
+    /* Create the program and check for errors */
+    GL_EXTCALL(glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB,
+               buffer->bsize, buffer->buffer));
+
+    if (glGetError() == GL_INVALID_OPERATION) {
+        GLint errPos;
+        glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errPos);
+        FIXME("HW VertexShader Error at position %d: %s\n",
+              errPos, debugstr_a((const char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)));
+        This->prgId = -1;
+    }
+
+    /* Load immediate constants */
+    if(!This->baseShader.load_local_constsF) {
+        LIST_FOR_EACH_ENTRY(lconst, &This->baseShader.constantsF, local_constant, entry) {
+            const float *value = (const float *)lconst->value;
+            GL_EXTCALL(glProgramLocalParameter4fvARB(GL_VERTEX_PROGRAM_ARB, lconst->idx, value));
+        }
+    }
+}
+
+static void shader_arb_get_caps(WINED3DDEVTYPE devtype, const WineD3D_GL_Info *gl_info, struct shader_caps *pCaps)
+{
+    /* We don't have an ARB fixed function pipeline yet, so let the none backend set its caps,
+     * then overwrite the shader specific ones
+     */
+    none_shader_backend.shader_get_caps(devtype, gl_info, pCaps);
+
+    if(GL_SUPPORT(ARB_VERTEX_PROGRAM)) {
+        pCaps->VertexShaderVersion = WINED3DVS_VERSION(1,1);
+        TRACE_(d3d_caps)("Hardware vertex shader version 1.1 enabled (ARB_PROGRAM)\n");
+        pCaps->MaxVertexShaderConst = GL_LIMITS(vshader_constantsF);
+    }
+
+    if(GL_SUPPORT(ARB_FRAGMENT_PROGRAM)) {
+        pCaps->PixelShaderVersion    = WINED3DPS_VERSION(1,4);
+        pCaps->PixelShader1xMaxValue = 8.0;
+        TRACE_(d3d_caps)("Hardware pixel shader version 1.4 enabled (ARB_PROGRAM)\n");
+    }
+}
+
+static BOOL shader_arb_color_fixup_supported(struct color_fixup_desc fixup)
+{
+    if (TRACE_ON(d3d_shader) && TRACE_ON(d3d))
+    {
+        TRACE("Checking support for color_fixup:\n");
+        dump_color_fixup_desc(fixup);
+    }
+
+    /* We support everything except YUV conversions. */
+    if (!is_yuv_fixup(fixup))
+    {
+        TRACE("[OK]\n");
+        return TRUE;
+    }
+
+    TRACE("[FAILED]\n");
+    return FALSE;
+}
+
+static const SHADER_HANDLER shader_arb_instruction_handler_table[WINED3DSIH_TABLE_SIZE] =
+{
+    /* WINED3DSIH_ABS           */ shader_hw_map2gl,
+    /* WINED3DSIH_ADD           */ shader_hw_map2gl,
+    /* WINED3DSIH_BEM           */ pshader_hw_bem,
+    /* WINED3DSIH_BREAK         */ NULL,
+    /* WINED3DSIH_BREAKC        */ NULL,
+    /* WINED3DSIH_BREAKP        */ NULL,
+    /* WINED3DSIH_CALL          */ NULL,
+    /* WINED3DSIH_CALLNZ        */ NULL,
+    /* WINED3DSIH_CMP           */ pshader_hw_cmp,
+    /* WINED3DSIH_CND           */ pshader_hw_cnd,
+    /* WINED3DSIH_CRS           */ shader_hw_map2gl,
+    /* WINED3DSIH_DCL           */ NULL,
+    /* WINED3DSIH_DEF           */ NULL,
+    /* WINED3DSIH_DEFB          */ NULL,
+    /* WINED3DSIH_DEFI          */ NULL,
+    /* WINED3DSIH_DP2ADD        */ pshader_hw_dp2add,
+    /* WINED3DSIH_DP3           */ shader_hw_map2gl,
+    /* WINED3DSIH_DP4           */ shader_hw_map2gl,
+    /* WINED3DSIH_DST           */ shader_hw_map2gl,
+    /* WINED3DSIH_DSX           */ NULL,
+    /* WINED3DSIH_DSY           */ NULL,
+    /* WINED3DSIH_ELSE          */ NULL,
+    /* WINED3DSIH_ENDIF         */ NULL,
+    /* WINED3DSIH_ENDLOOP       */ NULL,
+    /* WINED3DSIH_ENDREP        */ NULL,
+    /* WINED3DSIH_EXP           */ shader_hw_map2gl,
+    /* WINED3DSIH_EXPP          */ shader_hw_map2gl,
+    /* WINED3DSIH_FRC           */ shader_hw_map2gl,
+    /* WINED3DSIH_IF            */ NULL,
+    /* WINED3DSIH_IFC           */ NULL,
+    /* WINED3DSIH_LABEL         */ NULL,
+    /* WINED3DSIH_LIT           */ shader_hw_map2gl,
+    /* WINED3DSIH_LOG           */ shader_hw_map2gl,
+    /* WINED3DSIH_LOGP          */ shader_hw_map2gl,
+    /* WINED3DSIH_LOOP          */ NULL,
+    /* WINED3DSIH_LRP           */ shader_hw_map2gl,
+    /* WINED3DSIH_M3x2          */ shader_hw_mnxn,
+    /* WINED3DSIH_M3x3          */ shader_hw_mnxn,
+    /* WINED3DSIH_M3x4          */ shader_hw_mnxn,
+    /* WINED3DSIH_M4x3          */ shader_hw_mnxn,
+    /* WINED3DSIH_M4x4          */ shader_hw_mnxn,
+    /* WINED3DSIH_MAD           */ shader_hw_map2gl,
+    /* WINED3DSIH_MAX           */ shader_hw_map2gl,
+    /* WINED3DSIH_MIN           */ shader_hw_map2gl,
+    /* WINED3DSIH_MOV           */ shader_hw_mov,
+    /* WINED3DSIH_MOVA          */ shader_hw_mov,
+    /* WINED3DSIH_MUL           */ shader_hw_map2gl,
+    /* WINED3DSIH_NOP           */ shader_hw_map2gl,
+    /* WINED3DSIH_NRM           */ shader_hw_nrm,
+    /* WINED3DSIH_PHASE         */ NULL,
+    /* WINED3DSIH_POW           */ shader_hw_map2gl,
+    /* WINED3DSIH_RCP           */ vshader_hw_rsq_rcp,
+    /* WINED3DSIH_REP           */ NULL,
+    /* WINED3DSIH_RET           */ NULL,
+    /* WINED3DSIH_RSQ           */ vshader_hw_rsq_rcp,
+    /* WINED3DSIH_SETP          */ NULL,
+    /* WINED3DSIH_SGE           */ shader_hw_map2gl,
+    /* WINED3DSIH_SGN           */ NULL,
+    /* WINED3DSIH_SINCOS        */ shader_hw_sincos,
+    /* WINED3DSIH_SLT           */ shader_hw_map2gl,
+    /* WINED3DSIH_SUB           */ shader_hw_map2gl,
+    /* WINED3DSIH_TEX           */ pshader_hw_tex,
+    /* WINED3DSIH_TEXBEM        */ pshader_hw_texbem,
+    /* WINED3DSIH_TEXBEML       */ pshader_hw_texbem,
+    /* WINED3DSIH_TEXCOORD      */ pshader_hw_texcoord,
+    /* WINED3DSIH_TEXDEPTH      */ pshader_hw_texdepth,
+    /* WINED3DSIH_TEXDP3        */ pshader_hw_texdp3,
+    /* WINED3DSIH_TEXDP3TEX     */ pshader_hw_texdp3tex,
+    /* WINED3DSIH_TEXKILL       */ pshader_hw_texkill,
+    /* WINED3DSIH_TEXLDD        */ NULL,
+    /* WINED3DSIH_TEXLDL        */ NULL,
+    /* WINED3DSIH_TEXM3x2DEPTH  */ pshader_hw_texm3x2depth,
+    /* WINED3DSIH_TEXM3x2PAD    */ pshader_hw_texm3x2pad,
+    /* WINED3DSIH_TEXM3x2TEX    */ pshader_hw_texm3x2tex,
+    /* WINED3DSIH_TEXM3x3       */ pshader_hw_texm3x3,
+    /* WINED3DSIH_TEXM3x3DIFF   */ NULL,
+    /* WINED3DSIH_TEXM3x3PAD    */ pshader_hw_texm3x3pad,
+    /* WINED3DSIH_TEXM3x3SPEC   */ pshader_hw_texm3x3spec,
+    /* WINED3DSIH_TEXM3x3TEX    */ pshader_hw_texm3x3tex,
+    /* WINED3DSIH_TEXM3x3VSPEC  */ pshader_hw_texm3x3vspec,
+    /* WINED3DSIH_TEXREG2AR     */ pshader_hw_texreg2ar,
+    /* WINED3DSIH_TEXREG2GB     */ pshader_hw_texreg2gb,
+    /* WINED3DSIH_TEXREG2RGB    */ pshader_hw_texreg2rgb,
+};
+
+const shader_backend_t arb_program_shader_backend = {
+    shader_arb_instruction_handler_table,
+    shader_arb_select,
+    shader_arb_select_depth_blt,
+    shader_arb_deselect_depth_blt,
+    shader_arb_load_constants,
+    shader_arb_cleanup,
+    shader_arb_color_correction,
+    shader_arb_destroy,
+    shader_arb_alloc,
+    shader_arb_free,
+    shader_arb_dirty_const,
+    shader_arb_generate_pshader,
+    shader_arb_generate_vshader,
+    shader_arb_get_caps,
+    shader_arb_color_fixup_supported,
+};
+
+/* ARB_fragment_program fixed function pipeline replacement definitions */
+#define ARB_FFP_CONST_TFACTOR           0
+#define ARB_FFP_CONST_SPECULAR_ENABLE   ((ARB_FFP_CONST_TFACTOR) + 1)
+#define ARB_FFP_CONST_CONSTANT(i)       ((ARB_FFP_CONST_SPECULAR_ENABLE) + 1 + i)
+#define ARB_FFP_CONST_BUMPMAT(i)        ((ARB_FFP_CONST_CONSTANT(7)) + 1 + i)
+#define ARB_FFP_CONST_LUMINANCE(i)      ((ARB_FFP_CONST_BUMPMAT(7)) + 1 + i)
+
+struct arbfp_ffp_desc
+{
+    struct ffp_frag_desc parent;
+    GLuint shader;
+    unsigned int num_textures_used;
+};
+
+static void arbfp_enable(IWineD3DDevice *iface, BOOL enable) {
+    if(enable) {
+        glEnable(GL_FRAGMENT_PROGRAM_ARB);
+        checkGLcall("glEnable(GL_FRAGMENT_PROGRAM_ARB)");
+    } else {
+        glDisable(GL_FRAGMENT_PROGRAM_ARB);
+        checkGLcall("glDisable(GL_FRAGMENT_PROGRAM_ARB)");
+    }
+}
+
+static HRESULT arbfp_alloc(IWineD3DDevice *iface) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    struct shader_arb_priv *priv;
+    /* Share private data between the shader backend and the pipeline replacement, if both
+     * are the arb implementation. This is needed to figure out whether ARBfp should be disabled
+     * if no pixel shader is bound or not
+     */
+    if(This->shader_backend == &arb_program_shader_backend) {
+        This->fragment_priv = This->shader_priv;
+    } else {
+        This->fragment_priv = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(struct shader_arb_priv));
+        if(!This->fragment_priv) return E_OUTOFMEMORY;
+    }
+    priv = (struct shader_arb_priv *) This->fragment_priv;
+    priv->fragment_shaders = hash_table_create(ffp_frag_program_key_hash, ffp_frag_program_key_compare);
+    priv->use_arbfp_fixed_func = TRUE;
+    return WINED3D_OK;
+}
+
+static void arbfp_free_ffpshader(void *value, void *gli) {
+    const WineD3D_GL_Info *gl_info = gli;
+    struct arbfp_ffp_desc *entry_arb = value;
+
+    ENTER_GL();
+    GL_EXTCALL(glDeleteProgramsARB(1, &entry_arb->shader));
+    checkGLcall("glDeleteProgramsARB(1, &entry_arb->shader)");
+    HeapFree(GetProcessHeap(), 0, entry_arb);
+    LEAVE_GL();
+}
+
+static void arbfp_free(IWineD3DDevice *iface) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    struct shader_arb_priv *priv = (struct shader_arb_priv *) This->fragment_priv;
+
+    hash_table_destroy(priv->fragment_shaders, arbfp_free_ffpshader, &This->adapter->gl_info);
+    priv->use_arbfp_fixed_func = FALSE;
+
+    if(This->shader_backend != &arb_program_shader_backend) {
+        HeapFree(GetProcessHeap(), 0, This->fragment_priv);
+    }
+}
+
+static void arbfp_get_caps(WINED3DDEVTYPE devtype, const WineD3D_GL_Info *gl_info, struct fragment_caps *caps)
+{
+    caps->TextureOpCaps =  WINED3DTEXOPCAPS_DISABLE                     |
+                           WINED3DTEXOPCAPS_SELECTARG1                  |
+                           WINED3DTEXOPCAPS_SELECTARG2                  |
+                           WINED3DTEXOPCAPS_MODULATE4X                  |
+                           WINED3DTEXOPCAPS_MODULATE2X                  |
+                           WINED3DTEXOPCAPS_MODULATE                    |
+                           WINED3DTEXOPCAPS_ADDSIGNED2X                 |
+                           WINED3DTEXOPCAPS_ADDSIGNED                   |
+                           WINED3DTEXOPCAPS_ADD                         |
+                           WINED3DTEXOPCAPS_SUBTRACT                    |
+                           WINED3DTEXOPCAPS_ADDSMOOTH                   |
+                           WINED3DTEXOPCAPS_BLENDCURRENTALPHA           |
+                           WINED3DTEXOPCAPS_BLENDFACTORALPHA            |
+                           WINED3DTEXOPCAPS_BLENDTEXTUREALPHA           |
+                           WINED3DTEXOPCAPS_BLENDDIFFUSEALPHA           |
+                           WINED3DTEXOPCAPS_BLENDTEXTUREALPHAPM         |
+                           WINED3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR      |
+                           WINED3DTEXOPCAPS_MODULATECOLOR_ADDALPHA      |
+                           WINED3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA   |
+                           WINED3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR   |
+                           WINED3DTEXOPCAPS_DOTPRODUCT3                 |
+                           WINED3DTEXOPCAPS_MULTIPLYADD                 |
+                           WINED3DTEXOPCAPS_LERP                        |
+                           WINED3DTEXOPCAPS_BUMPENVMAP                  |
+                           WINED3DTEXOPCAPS_BUMPENVMAPLUMINANCE;
+
+    /* TODO: Implement WINED3DTEXOPCAPS_PREMODULATE */
+
+    caps->MaxTextureBlendStages   = 8;
+    caps->MaxSimultaneousTextures = min(GL_LIMITS(fragment_samplers), 8);
+
+    caps->PrimitiveMiscCaps |= WINED3DPMISCCAPS_TSSARGTEMP;
+}
+#undef GLINFO_LOCATION
+
+#define GLINFO_LOCATION stateblock->wineD3DDevice->adapter->gl_info
+static void state_texfactor_arbfp(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    float col[4];
+    IWineD3DDeviceImpl *device = stateblock->wineD3DDevice;
+
+    /* Don't load the parameter if we're using an arbfp pixel shader, otherwise we'll overwrite
+     * application provided constants
+     */
+    if(device->shader_backend == &arb_program_shader_backend) {
+        if(use_ps(device)) return;
+
+        device = stateblock->wineD3DDevice;
+        device->activeContext->pshader_const_dirty[ARB_FFP_CONST_TFACTOR] = 1;
+        device->highest_dirty_ps_const = max(device->highest_dirty_ps_const, ARB_FFP_CONST_TFACTOR + 1);
+    }
+
+    D3DCOLORTOGLFLOAT4(stateblock->renderState[WINED3DRS_TEXTUREFACTOR], col);
+    GL_EXTCALL(glProgramEnvParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, ARB_FFP_CONST_TFACTOR, col));
+    checkGLcall("glProgramEnvParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, ARB_FFP_CONST_TFACTOR, col)");
+
+}
+
+static void state_arb_specularenable(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    float col[4];
+    IWineD3DDeviceImpl *device = stateblock->wineD3DDevice;
+
+    /* Don't load the parameter if we're using an arbfp pixel shader, otherwise we'll overwrite
+     * application provided constants
+     */
+    if(device->shader_backend == &arb_program_shader_backend) {
+        if(use_ps(device)) return;
+
+        device = stateblock->wineD3DDevice;
+        device->activeContext->pshader_const_dirty[ARB_FFP_CONST_SPECULAR_ENABLE] = 1;
+        device->highest_dirty_ps_const = max(device->highest_dirty_ps_const, ARB_FFP_CONST_SPECULAR_ENABLE + 1);
+    }
+
+    if(stateblock->renderState[WINED3DRS_SPECULARENABLE]) {
+        /* The specular color has no alpha */
+        col[0] = 1.0; col[1] = 1.0;
+        col[2] = 1.0; col[3] = 0.0;
+    } else {
+        col[0] = 0.0; col[1] = 0.0;
+        col[2] = 0.0; col[3] = 0.0;
+    }
+    GL_EXTCALL(glProgramEnvParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, ARB_FFP_CONST_SPECULAR_ENABLE, col));
+    checkGLcall("glProgramEnvParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, ARB_FFP_CONST_SPECULAR_ENABLE, col)");
+}
+
+static void set_bumpmat_arbfp(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    DWORD stage = (state - STATE_TEXTURESTAGE(0, 0)) / WINED3D_HIGHEST_TEXTURE_STATE;
+    IWineD3DDeviceImpl *device = stateblock->wineD3DDevice;
+    float mat[2][2];
+
+    if(use_ps(device)) {
+        if(stage != 0 &&
+           ((IWineD3DPixelShaderImpl *) stateblock->pixelShader)->baseShader.reg_maps.bumpmat[stage]) {
+            /* The pixel shader has to know the bump env matrix. Do a constants update if it isn't scheduled
+             * anyway
+             */
+            if(!isStateDirty(context, STATE_PIXELSHADERCONSTANT)) {
+                device->StateTable[STATE_PIXELSHADERCONSTANT].apply(STATE_PIXELSHADERCONSTANT, stateblock, context);
+            }
+        }
+
+        if(device->shader_backend == &arb_program_shader_backend) {
+            /* Exit now, don't set the bumpmat below, otherwise we may overwrite pixel shader constants */
+            return;
+        }
+    } else if(device->shader_backend == &arb_program_shader_backend) {
+        device->activeContext->pshader_const_dirty[ARB_FFP_CONST_BUMPMAT(stage)] = 1;
+        device->highest_dirty_ps_const = max(device->highest_dirty_ps_const, ARB_FFP_CONST_BUMPMAT(stage) + 1);
+    }
+
+    mat[0][0] = *((float *) &stateblock->textureState[stage][WINED3DTSS_BUMPENVMAT00]);
+    mat[0][1] = *((float *) &stateblock->textureState[stage][WINED3DTSS_BUMPENVMAT01]);
+    mat[1][0] = *((float *) &stateblock->textureState[stage][WINED3DTSS_BUMPENVMAT10]);
+    mat[1][1] = *((float *) &stateblock->textureState[stage][WINED3DTSS_BUMPENVMAT11]);
+
+    GL_EXTCALL(glProgramEnvParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, ARB_FFP_CONST_BUMPMAT(stage), &mat[0][0]));
+    checkGLcall("glProgramEnvParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, ARB_FFP_CONST_BUMPMAT(stage), &mat[0][0])");
+}
+
+static void tex_bumpenvlum_arbfp(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    DWORD stage = (state - STATE_TEXTURESTAGE(0, 0)) / WINED3D_HIGHEST_TEXTURE_STATE;
+    IWineD3DDeviceImpl *device = stateblock->wineD3DDevice;
+    float param[4];
+
+    if(use_ps(device)) {
+        if(stage != 0 &&
+           ((IWineD3DPixelShaderImpl *) stateblock->pixelShader)->baseShader.reg_maps.luminanceparams[stage]) {
+            /* The pixel shader has to know the luminance offset. Do a constants update if it
+             * isn't scheduled anyway
+             */
+            if(!isStateDirty(context, STATE_PIXELSHADERCONSTANT)) {
+                device->StateTable[STATE_PIXELSHADERCONSTANT].apply(STATE_PIXELSHADERCONSTANT, stateblock, context);
+            }
+        }
+
+        if(device->shader_backend == &arb_program_shader_backend) {
+            /* Exit now, don't set the bumpmat below, otherwise we may overwrite pixel shader constants */
+            return;
+        }
+    } else if(device->shader_backend == &arb_program_shader_backend) {
+        device->activeContext->pshader_const_dirty[ARB_FFP_CONST_LUMINANCE(stage)] = 1;
+        device->highest_dirty_ps_const = max(device->highest_dirty_ps_const, ARB_FFP_CONST_LUMINANCE(stage) + 1);
+    }
+
+    param[0] = *((float *) &stateblock->textureState[stage][WINED3DTSS_BUMPENVLSCALE]);
+    param[1] = *((float *) &stateblock->textureState[stage][WINED3DTSS_BUMPENVLOFFSET]);
+    param[2] = 0.0;
+    param[3] = 0.0;
+
+    GL_EXTCALL(glProgramEnvParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, ARB_FFP_CONST_LUMINANCE(stage), param));
+    checkGLcall("glProgramEnvParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, ARB_FFP_CONST_LUMINANCE(stage), param)");
+}
+
+static const char *get_argreg(SHADER_BUFFER *buffer, DWORD argnum, unsigned int stage, DWORD arg) {
+    const char *ret;
+
+    if(arg == ARG_UNUSED) return "unused"; /* This is the marker for unused registers */
+
+    switch(arg & WINED3DTA_SELECTMASK) {
+        case WINED3DTA_DIFFUSE:
+            ret = "fragment.color.primary"; break;
+
+        case WINED3DTA_CURRENT:
+            if(stage == 0) ret = "fragment.color.primary";
+            else ret = "ret";
+            break;
+
+        case WINED3DTA_TEXTURE:
+            switch(stage) {
+                case 0: ret = "tex0"; break;
+                case 1: ret = "tex1"; break;
+                case 2: ret = "tex2"; break;
+                case 3: ret = "tex3"; break;
+                case 4: ret = "tex4"; break;
+                case 5: ret = "tex5"; break;
+                case 6: ret = "tex6"; break;
+                case 7: ret = "tex7"; break;
+                default: ret = "unknown texture";
+            }
+            break;
+
+        case WINED3DTA_TFACTOR:
+            ret = "tfactor"; break;
+
+        case WINED3DTA_SPECULAR:
+            ret = "fragment.color.secondary"; break;
+
+        case WINED3DTA_TEMP:
+            ret = "tempreg"; break;
+
+        case WINED3DTA_CONSTANT:
+            FIXME("Implement perstage constants\n");
+            switch(stage) {
+                case 0: ret = "const0"; break;
+                case 1: ret = "const1"; break;
+                case 2: ret = "const2"; break;
+                case 3: ret = "const3"; break;
+                case 4: ret = "const4"; break;
+                case 5: ret = "const5"; break;
+                case 6: ret = "const6"; break;
+                case 7: ret = "const7"; break;
+                default: ret = "unknown constant";
+            }
+            break;
+
+        default:
+            return "unknown";
+    }
+
+    if(arg & WINED3DTA_COMPLEMENT) {
+        shader_addline(buffer, "SUB arg%u, const.x, %s;\n", argnum, ret);
+        if(argnum == 0) ret = "arg0";
+        if(argnum == 1) ret = "arg1";
+        if(argnum == 2) ret = "arg2";
+    }
+    if(arg & WINED3DTA_ALPHAREPLICATE) {
+        shader_addline(buffer, "MOV arg%u, %s.a;\n", argnum, ret);
+        if(argnum == 0) ret = "arg0";
+        if(argnum == 1) ret = "arg1";
+        if(argnum == 2) ret = "arg2";
+    }
+    return ret;
+}
+
+static void gen_ffp_instr(SHADER_BUFFER *buffer, unsigned int stage, BOOL color, BOOL alpha,
+                          DWORD dst, DWORD op, DWORD dw_arg0, DWORD dw_arg1, DWORD dw_arg2) {
+    const char *dstmask, *dstreg, *arg0, *arg1, *arg2;
+    unsigned int mul = 1;
+    BOOL mul_final_dest = FALSE;
+
+    if(color && alpha) dstmask = "";
+    else if(color) dstmask = ".rgb";
+    else dstmask = ".a";
+
+    if(dst == tempreg) dstreg = "tempreg";
+    else dstreg = "ret";
+
+    arg0 = get_argreg(buffer, 0, stage, dw_arg0);
+    arg1 = get_argreg(buffer, 1, stage, dw_arg1);
+    arg2 = get_argreg(buffer, 2, stage, dw_arg2);
+
+    switch(op) {
+        case WINED3DTOP_DISABLE:
+            if(stage == 1) shader_addline(buffer, "MOV %s%s, fragment.color.primary;\n", dstreg, dstmask);
+            break;
+
+        case WINED3DTOP_SELECTARG2:
+            arg1 = arg2;
+        case WINED3DTOP_SELECTARG1:
+            shader_addline(buffer, "MOV %s%s, %s;\n", dstreg, dstmask, arg1);
+            break;
+
+        case WINED3DTOP_MODULATE4X:
+            mul = 2;
+        case WINED3DTOP_MODULATE2X:
+            mul *= 2;
+            if(strcmp(dstreg, "result.color") == 0) {
+                dstreg = "ret";
+                mul_final_dest = TRUE;
+            }
+        case WINED3DTOP_MODULATE:
+            shader_addline(buffer, "MUL %s%s, %s, %s;\n", dstreg, dstmask, arg1, arg2);
+            break;
+
+        case WINED3DTOP_ADDSIGNED2X:
+            mul = 2;
+            if(strcmp(dstreg, "result.color") == 0) {
+                dstreg = "ret";
+                mul_final_dest = TRUE;
+            }
+        case WINED3DTOP_ADDSIGNED:
+            shader_addline(buffer, "SUB arg2, %s, const.w;\n", arg2);
+            arg2 = "arg2";
+        case WINED3DTOP_ADD:
+            shader_addline(buffer, "ADD_SAT %s%s, %s, %s;\n", dstreg, dstmask, arg1, arg2);
+            break;
+
+        case WINED3DTOP_SUBTRACT:
+            shader_addline(buffer, "SUB_SAT %s%s, %s, %s;\n", dstreg, dstmask, arg1, arg2);
+            break;
+
+        case WINED3DTOP_ADDSMOOTH:
+            shader_addline(buffer, "SUB arg1, const.x, %s;\n", arg1);
+            shader_addline(buffer, "MAD_SAT %s%s, arg1, %s, %s;\n", dstreg, dstmask, arg2, arg1);
+            break;
+
+        case WINED3DTOP_BLENDCURRENTALPHA:
+            arg0 = get_argreg(buffer, 0, stage, WINED3DTA_CURRENT);
+            shader_addline(buffer, "LRP %s%s, %s.a, %s, %s;\n", dstreg, dstmask, arg0, arg1, arg2);
+            break;
+        case WINED3DTOP_BLENDFACTORALPHA:
+            arg0 = get_argreg(buffer, 0, stage, WINED3DTA_TFACTOR);
+            shader_addline(buffer, "LRP %s%s, %s.a, %s, %s;\n", dstreg, dstmask, arg0, arg1, arg2);
+            break;
+        case WINED3DTOP_BLENDTEXTUREALPHA:
+            arg0 = get_argreg(buffer, 0, stage, WINED3DTA_TEXTURE);
+            shader_addline(buffer, "LRP %s%s, %s.a, %s, %s;\n", dstreg, dstmask, arg0, arg1, arg2);
+            break;
+        case WINED3DTOP_BLENDDIFFUSEALPHA:
+            arg0 = get_argreg(buffer, 0, stage, WINED3DTA_DIFFUSE);
+            shader_addline(buffer, "LRP %s%s, %s.a, %s, %s;\n", dstreg, dstmask, arg0, arg1, arg2);
+            break;
+
+        case WINED3DTOP_BLENDTEXTUREALPHAPM:
+            arg0 = get_argreg(buffer, 0, stage, WINED3DTA_TEXTURE);
+            shader_addline(buffer, "SUB arg0.a, const.x, %s.a;\n", arg0);
+            shader_addline(buffer, "MAD_SAT %s%s, %s, arg0.a, %s;\n", dstreg, dstmask, arg2, arg1);
+            break;
+
+        /* D3DTOP_PREMODULATE ???? */
+
+        case WINED3DTOP_MODULATEINVALPHA_ADDCOLOR:
+            shader_addline(buffer, "SUB arg0.a, const.x, %s;\n", arg1);
+            shader_addline(buffer, "MAD_SAT %s%s, arg0.a, %s, %s;\n", dstreg, dstmask, arg2, arg1);
+            break;
+        case WINED3DTOP_MODULATEALPHA_ADDCOLOR:
+            shader_addline(buffer, "MAD_SAT %s%s, %s.a, %s, %s;\n", dstreg, dstmask, arg1, arg2, arg1);
+            break;
+        case WINED3DTOP_MODULATEINVCOLOR_ADDALPHA:
+            shader_addline(buffer, "SUB arg0, const.x, %s;\n", arg1);
+            shader_addline(buffer, "MAD_SAT %s%s, arg0, %s, %s.a;\n", dstreg, dstmask, arg2, arg1);
+            break;
+        case WINED3DTOP_MODULATECOLOR_ADDALPHA:
+            shader_addline(buffer, "MAD_SAT %s%s, %s, %s, %s.a;\n", dstreg, dstmask, arg1, arg2, arg1);
+            break;
+
+        case WINED3DTOP_DOTPRODUCT3:
+            mul = 4;
+            if(strcmp(dstreg, "result.color") == 0) {
+                dstreg = "ret";
+                mul_final_dest = TRUE;
+            }
+            shader_addline(buffer, "SUB arg1, %s, const.w;\n", arg1);
+            shader_addline(buffer, "SUB arg2, %s, const.w;\n", arg2);
+            shader_addline(buffer, "DP3_SAT %s%s, arg1, arg2;\n", dstreg, dstmask);
+            break;
+
+        case WINED3DTOP_MULTIPLYADD:
+            shader_addline(buffer, "MAD_SAT %s%s, %s, %s, %s;\n", dstreg, dstmask, arg1, arg2, arg0);
+            break;
+
+        case WINED3DTOP_LERP:
+            /* The msdn is not quite right here */
+            shader_addline(buffer, "LRP %s%s, %s, %s, %s;\n", dstreg, dstmask, arg0, arg1, arg2);
+            break;
+
+        case WINED3DTOP_BUMPENVMAP:
+        case WINED3DTOP_BUMPENVMAPLUMINANCE:
+            /* Those are handled in the first pass of the shader(generation pass 1 and 2) already */
+            break;
+
+        default:
+            FIXME("Unhandled texture op %08x\n", op);
+    }
+
+    if(mul == 2) {
+        shader_addline(buffer, "MUL_SAT %s%s, %s, const.y;\n", mul_final_dest ? "result.color" : dstreg, dstmask, dstreg);
+    } else if(mul == 4) {
+        shader_addline(buffer, "MUL_SAT %s%s, %s, const.z;\n", mul_final_dest ? "result.color" : dstreg, dstmask, dstreg);
+    }
+}
+
+/* The stateblock is passed for GLINFO_LOCATION */
+static GLuint gen_arbfp_ffp_shader(const struct ffp_frag_settings *settings, IWineD3DStateBlockImpl *stateblock)
+{
+    unsigned int stage;
+    SHADER_BUFFER buffer;
+    BOOL tex_read[MAX_TEXTURES] = {FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE};
+    BOOL bump_used[MAX_TEXTURES] = {FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE};
+    BOOL luminance_used[MAX_TEXTURES] = {FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE};
+    const char *textype;
+    const char *instr, *sat;
+    char colorcor_dst[8];
+    GLuint ret;
+    DWORD arg0, arg1, arg2;
+    BOOL tempreg_used = FALSE, tfactor_used = FALSE;
+    BOOL op_equal;
+    const char *final_combiner_src = "ret";
+
+    /* Find out which textures are read */
+    for(stage = 0; stage < MAX_TEXTURES; stage++) {
+        if(settings->op[stage].cop == WINED3DTOP_DISABLE) break;
+        arg0 = settings->op[stage].carg0 & WINED3DTA_SELECTMASK;
+        arg1 = settings->op[stage].carg1 & WINED3DTA_SELECTMASK;
+        arg2 = settings->op[stage].carg2 & WINED3DTA_SELECTMASK;
+        if(arg0 == WINED3DTA_TEXTURE) tex_read[stage] = TRUE;
+        if(arg1 == WINED3DTA_TEXTURE) tex_read[stage] = TRUE;
+        if(arg2 == WINED3DTA_TEXTURE) tex_read[stage] = TRUE;
+
+        if(settings->op[stage].cop == WINED3DTOP_BLENDTEXTUREALPHA) tex_read[stage] = TRUE;
+        if(settings->op[stage].cop == WINED3DTOP_BLENDTEXTUREALPHAPM) tex_read[stage] = TRUE;
+        if(settings->op[stage].cop == WINED3DTOP_BUMPENVMAP) {
+            bump_used[stage] = TRUE;
+            tex_read[stage] = TRUE;
+        }
+        if(settings->op[stage].cop == WINED3DTOP_BUMPENVMAPLUMINANCE) {
+            bump_used[stage] = TRUE;
+            tex_read[stage] = TRUE;
+            luminance_used[stage] = TRUE;
+        } else if(settings->op[stage].cop == WINED3DTOP_BLENDFACTORALPHA) {
+            tfactor_used = TRUE;
+        }
+
+        if(arg0 == WINED3DTA_TFACTOR || arg1 == WINED3DTA_TFACTOR || arg2 == WINED3DTA_TFACTOR) {
+            tfactor_used = TRUE;
+        }
+
+        if(settings->op[stage].dst == tempreg) tempreg_used = TRUE;
+        if(arg0 == WINED3DTA_TEMP || arg1 == WINED3DTA_TEMP || arg2 == WINED3DTA_TEMP) {
+            tempreg_used = TRUE;
+        }
+
+        if(settings->op[stage].aop == WINED3DTOP_DISABLE) continue;
+        arg0 = settings->op[stage].aarg0 & WINED3DTA_SELECTMASK;
+        arg1 = settings->op[stage].aarg1 & WINED3DTA_SELECTMASK;
+        arg2 = settings->op[stage].aarg2 & WINED3DTA_SELECTMASK;
+        if(arg0 == WINED3DTA_TEXTURE) tex_read[stage] = TRUE;
+        if(arg1 == WINED3DTA_TEXTURE) tex_read[stage] = TRUE;
+        if(arg2 == WINED3DTA_TEXTURE) tex_read[stage] = TRUE;
+
+        if(arg0 == WINED3DTA_TEMP || arg1 == WINED3DTA_TEMP || arg2 == WINED3DTA_TEMP) {
+            tempreg_used = TRUE;
+        }
+        if(arg0 == WINED3DTA_TFACTOR || arg1 == WINED3DTA_TFACTOR || arg2 == WINED3DTA_TFACTOR) {
+            tfactor_used = TRUE;
+        }
+    }
+
+    /* Shader header */
+    buffer.bsize = 0;
+    buffer.lineNo = 0;
+    buffer.newline = TRUE;
+    buffer.buffer = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, SHADER_PGMSIZE);
+
+    shader_addline(&buffer, "!!ARBfp1.0\n");
+
+    switch(settings->fog) {
+        case FOG_OFF:                                                         break;
+        case FOG_LINEAR: shader_addline(&buffer, "OPTION ARB_fog_linear;\n"); break;
+        case FOG_EXP:    shader_addline(&buffer, "OPTION ARB_fog_exp;\n");    break;
+        case FOG_EXP2:   shader_addline(&buffer, "OPTION ARB_fog_exp2;\n");   break;
+        default: FIXME("Unexpected fog setting %d\n", settings->fog);
+    }
+
+    shader_addline(&buffer, "PARAM const = {1, 2, 4, 0.5};\n");
+    shader_addline(&buffer, "TEMP TMP;\n");
+    shader_addline(&buffer, "TEMP ret;\n");
+    if(tempreg_used || settings->sRGB_write) shader_addline(&buffer, "TEMP tempreg;\n");
+    shader_addline(&buffer, "TEMP arg0;\n");
+    shader_addline(&buffer, "TEMP arg1;\n");
+    shader_addline(&buffer, "TEMP arg2;\n");
+    for(stage = 0; stage < MAX_TEXTURES; stage++) {
+        if(!tex_read[stage]) continue;
+        shader_addline(&buffer, "TEMP tex%u;\n", stage);
+        if(!bump_used[stage]) continue;
+        shader_addline(&buffer, "PARAM bumpmat%u = program.env[%u];\n", stage, ARB_FFP_CONST_BUMPMAT(stage));
+        if(!luminance_used[stage]) continue;
+        shader_addline(&buffer, "PARAM luminance%u = program.env[%u];\n", stage, ARB_FFP_CONST_LUMINANCE(stage));
+    }
+    if(tfactor_used) {
+        shader_addline(&buffer, "PARAM tfactor = program.env[%u];\n", ARB_FFP_CONST_TFACTOR);
+    }
+        shader_addline(&buffer, "PARAM specular_enable = program.env[%u];\n", ARB_FFP_CONST_SPECULAR_ENABLE);
+
+    if(settings->sRGB_write) {
+        shader_addline(&buffer, "PARAM srgb_mul_low = {%f, %f, %f, 1.0};\n",
+                       srgb_mul_low, srgb_mul_low, srgb_mul_low);
+        shader_addline(&buffer, "PARAM srgb_comparison =  {%f, %f, %f, %f};\n",
+                       srgb_cmp, srgb_cmp, srgb_cmp, srgb_cmp);
+        shader_addline(&buffer, "PARAM srgb_pow =  {%f, %f, %f, 1.0};\n",
+                       srgb_pow, srgb_pow, srgb_pow);
+        shader_addline(&buffer, "PARAM srgb_mul_hi =  {%f, %f, %f, 1.0};\n",
+                       srgb_mul_high, srgb_mul_high, srgb_mul_high);
+        shader_addline(&buffer, "PARAM srgb_sub_hi =  {%f, %f, %f, 0.0};\n",
+                       srgb_sub_high, srgb_sub_high, srgb_sub_high);
+    }
+
+    /* Generate texture sampling instructions) */
+    for(stage = 0; stage < MAX_TEXTURES && settings->op[stage].cop != WINED3DTOP_DISABLE; stage++) {
+        if(!tex_read[stage]) continue;
+
+        switch(settings->op[stage].tex_type) {
+            case tex_1d:                    textype = "1D";     break;
+            case tex_2d:                    textype = "2D";     break;
+            case tex_3d:                    textype = "3D";     break;
+            case tex_cube:                  textype = "CUBE";   break;
+            case tex_rect:                  textype = "RECT";   break;
+            default: textype = "unexpected_textype";   break;
+        }
+
+        if(settings->op[stage].cop == WINED3DTOP_BUMPENVMAP ||
+           settings->op[stage].cop == WINED3DTOP_BUMPENVMAPLUMINANCE) {
+            sat = "";
+        } else {
+            sat = "_SAT";
+        }
+
+        if(settings->op[stage].projected == proj_none) {
+            instr = "TEX";
+        } else if(settings->op[stage].projected == proj_count4 ||
+                  settings->op[stage].projected == proj_count3) {
+            instr = "TXP";
+        } else {
+            FIXME("Unexpected projection mode %d\n", settings->op[stage].projected);
+            instr = "TXP";
+        }
+
+        if(stage > 0 &&
+           (settings->op[stage - 1].cop == WINED3DTOP_BUMPENVMAP ||
+            settings->op[stage - 1].cop == WINED3DTOP_BUMPENVMAPLUMINANCE)) {
+            shader_addline(&buffer, "SWZ arg1, bumpmat%u, x, z, 0, 0;\n", stage - 1);
+            shader_addline(&buffer, "DP3 ret.r, arg1, tex%u;\n", stage - 1);
+            shader_addline(&buffer, "SWZ arg1, bumpmat%u, y, w, 0, 0;\n", stage - 1);
+            shader_addline(&buffer, "DP3 ret.g, arg1, tex%u;\n", stage - 1);
+
+            /* with projective textures, texbem only divides the static texture coord, not the displacement,
+             * so multiply the displacement with the dividing parameter before passing it to TXP
+             */
+            if (settings->op[stage].projected != proj_none) {
+                if(settings->op[stage].projected == proj_count4) {
+                    shader_addline(&buffer, "MOV ret.a, fragment.texcoord[%u].a;\n", stage);
+                    shader_addline(&buffer, "MUL ret.rgb, ret, fragment.texcoord[%u].a, fragment.texcoord[%u];\n", stage, stage);
+                } else {
+                    shader_addline(&buffer, "MOV ret.a, fragment.texcoord[%u].b;\n", stage);
+                    shader_addline(&buffer, "MAD ret.rgb, ret, fragment.texcoord[%u].b, fragment.texcoord[%u];\n", stage, stage);
+                }
+            } else {
+                shader_addline(&buffer, "ADD ret, ret, fragment.texcoord[%u];\n", stage);
+            }
+
+            shader_addline(&buffer, "%s%s tex%u, ret, texture[%u], %s;\n",
+                           instr, sat, stage, stage, textype);
+            if(settings->op[stage - 1].cop == WINED3DTOP_BUMPENVMAPLUMINANCE) {
+                shader_addline(&buffer, "MAD_SAT ret.r, tex%u.b, luminance%u.r, luminance%u.g;\n",
+                               stage - 1, stage - 1, stage - 1);
+                shader_addline(&buffer, "MUL tex%u, tex%u, ret.r;\n", stage, stage);
+            }
+        } else if(settings->op[stage].projected == proj_count3) {
+            shader_addline(&buffer, "MOV ret, fragment.texcoord[%u];\n", stage);
+            shader_addline(&buffer, "MOV ret.a, ret.b;\n");
+            shader_addline(&buffer, "%s%s tex%u, ret, texture[%u], %s;\n",
+                            instr, sat, stage, stage, textype);
+        } else {
+            shader_addline(&buffer, "%s%s tex%u, fragment.texcoord[%u], texture[%u], %s;\n",
+                            instr, sat, stage, stage, stage, textype);
+        }
+
+        sprintf(colorcor_dst, "tex%u", stage);
+        gen_color_correction(&buffer, colorcor_dst, WINED3DSP_WRITEMASK_ALL, "const.x", "const.y",
+                settings->op[stage].color_correction);
+    }
+
+    /* Generate the main shader */
+    for(stage = 0; stage < MAX_TEXTURES; stage++) {
+        if(settings->op[stage].cop == WINED3DTOP_DISABLE) {
+            if(stage == 0) {
+                final_combiner_src = "fragment.color.primary";
+            }
+            break;
+        }
+
+        if(settings->op[stage].cop == WINED3DTOP_SELECTARG1 &&
+           settings->op[stage].aop == WINED3DTOP_SELECTARG1) {
+            op_equal = settings->op[stage].carg1 == settings->op[stage].aarg1;
+        } else if(settings->op[stage].cop == WINED3DTOP_SELECTARG1 &&
+                  settings->op[stage].aop == WINED3DTOP_SELECTARG2) {
+            op_equal = settings->op[stage].carg1 == settings->op[stage].aarg2;
+        } else if(settings->op[stage].cop == WINED3DTOP_SELECTARG2 &&
+                  settings->op[stage].aop == WINED3DTOP_SELECTARG1) {
+            op_equal = settings->op[stage].carg2 == settings->op[stage].aarg1;
+        } else if(settings->op[stage].cop == WINED3DTOP_SELECTARG2 &&
+                  settings->op[stage].aop == WINED3DTOP_SELECTARG2) {
+            op_equal = settings->op[stage].carg2 == settings->op[stage].aarg2;
+        } else {
+            op_equal = settings->op[stage].aop   == settings->op[stage].cop &&
+                       settings->op[stage].carg0 == settings->op[stage].aarg0 &&
+                       settings->op[stage].carg1 == settings->op[stage].aarg1 &&
+                       settings->op[stage].carg2 == settings->op[stage].aarg2;
+        }
+
+        if(settings->op[stage].aop == WINED3DTOP_DISABLE) {
+            gen_ffp_instr(&buffer, stage, TRUE, FALSE, settings->op[stage].dst,
+                          settings->op[stage].cop, settings->op[stage].carg0,
+                          settings->op[stage].carg1, settings->op[stage].carg2);
+            if(stage == 0) {
+                shader_addline(&buffer, "MOV ret.a, fragment.color.primary.a;\n");
+            }
+        } else if(op_equal) {
+            gen_ffp_instr(&buffer, stage, TRUE, TRUE, settings->op[stage].dst,
+                          settings->op[stage].cop, settings->op[stage].carg0,
+                          settings->op[stage].carg1, settings->op[stage].carg2);
+        } else {
+            gen_ffp_instr(&buffer, stage, TRUE, FALSE, settings->op[stage].dst,
+                          settings->op[stage].cop, settings->op[stage].carg0,
+                          settings->op[stage].carg1, settings->op[stage].carg2);
+            gen_ffp_instr(&buffer, stage, FALSE, TRUE, settings->op[stage].dst,
+                          settings->op[stage].aop, settings->op[stage].aarg0,
+                          settings->op[stage].aarg1, settings->op[stage].aarg2);
+        }
+    }
+
+    if(settings->sRGB_write) {
+        shader_addline(&buffer, "MAD ret, fragment.color.secondary, specular_enable, %s;\n", final_combiner_src);
+        arbfp_add_sRGB_correction(&buffer, "ret", "arg0", "arg1", "arg2", "tempreg");
+        shader_addline(&buffer, "MOV result.color.a, ret.a;\n");
+    } else {
+        shader_addline(&buffer, "MAD result.color, fragment.color.secondary, specular_enable, %s;\n", final_combiner_src);
+    }
+
+    /* Footer */
+    shader_addline(&buffer, "END\n");
+
+    /* Generate the shader */
+    GL_EXTCALL(glGenProgramsARB(1, &ret));
+    GL_EXTCALL(glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, ret));
+    GL_EXTCALL(glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, strlen(buffer.buffer), buffer.buffer));
+
+    if (glGetError() == GL_INVALID_OPERATION) {
+        GLint pos;
+        glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &pos);
+        FIXME("Fragment program error at position %d: %s\n", pos,
+              debugstr_a((const char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)));
+    }
+    HeapFree(GetProcessHeap(), 0, buffer.buffer);
+    return ret;
+}
+
+static void fragment_prog_arbfp(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    IWineD3DDeviceImpl *device = stateblock->wineD3DDevice;
+    struct shader_arb_priv *priv = (struct shader_arb_priv *) device->fragment_priv;
+    BOOL use_pshader = use_ps(device);
+    BOOL use_vshader = use_vs(device);
+    struct ffp_frag_settings settings;
+    const struct arbfp_ffp_desc *desc;
+    unsigned int i;
+
+    if(isStateDirty(context, STATE_RENDER(WINED3DRS_FOGENABLE))) {
+        if(!use_pshader && device->shader_backend == &arb_program_shader_backend && context->last_was_pshader) {
+            /* Reload fixed function constants since they collide with the pixel shader constants */
+            for(i = 0; i < MAX_TEXTURES; i++) {
+                set_bumpmat_arbfp(STATE_TEXTURESTAGE(i, WINED3DTSS_BUMPENVMAT00), stateblock, context);
+            }
+            state_texfactor_arbfp(STATE_RENDER(WINED3DRS_TEXTUREFACTOR), stateblock, context);
+            state_arb_specularenable(STATE_RENDER(WINED3DRS_SPECULARENABLE), stateblock, context);
+        }
+        return;
+    }
+
+    if(!use_pshader) {
+        /* Find or create a shader implementing the fixed function pipeline settings, then activate it */
+        gen_ffp_frag_op(stateblock, &settings, FALSE);
+        desc = (const struct arbfp_ffp_desc *)find_ffp_frag_shader(priv->fragment_shaders, &settings);
+        if(!desc) {
+            struct arbfp_ffp_desc *new_desc = HeapAlloc(GetProcessHeap(), 0, sizeof(*new_desc));
+            if (!new_desc)
+            {
+                ERR("Out of memory\n");
+                return;
+            }
+            new_desc->num_textures_used = 0;
+            for(i = 0; i < GL_LIMITS(texture_stages); i++) {
+                if(settings.op[i].cop == WINED3DTOP_DISABLE) break;
+                new_desc->num_textures_used = i;
+            }
+
+            memcpy(&new_desc->parent.settings, &settings, sizeof(settings));
+            new_desc->shader = gen_arbfp_ffp_shader(&settings, stateblock);
+            add_ffp_frag_shader(priv->fragment_shaders, &new_desc->parent);
+            TRACE("Allocated fixed function replacement shader descriptor %p\n", new_desc);
+            desc = new_desc;
+        }
+
+        /* Now activate the replacement program. GL_FRAGMENT_PROGRAM_ARB is already active(however, note the
+         * comment above the shader_select call below). If e.g. GLSL is active, the shader_select call will
+         * deactivate it.
+         */
+        GL_EXTCALL(glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, desc->shader));
+        checkGLcall("glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, desc->shader)");
+        priv->current_fprogram_id = desc->shader;
+
+        if(device->shader_backend == &arb_program_shader_backend && context->last_was_pshader) {
+            /* Reload fixed function constants since they collide with the pixel shader constants */
+            for(i = 0; i < MAX_TEXTURES; i++) {
+                set_bumpmat_arbfp(STATE_TEXTURESTAGE(i, WINED3DTSS_BUMPENVMAT00), stateblock, context);
+            }
+            state_texfactor_arbfp(STATE_RENDER(WINED3DRS_TEXTUREFACTOR), stateblock, context);
+            state_arb_specularenable(STATE_RENDER(WINED3DRS_SPECULARENABLE), stateblock, context);
+        }
+    }
+
+    /* Finally, select the shader. If a pixel shader is used, it will be set and enabled by the shader backend.
+     * If this shader backend is arbfp(most likely), then it will simply overwrite the last fixed function replace-
+     * ment shader. If the shader backend is not ARB, it currently is important that the opengl implementation
+     * type overwrites GL_ARB_fragment_program. This is currently the case with GLSL. If we really want to use
+     * atifs or nvrc pixel shaders with arb fragment programs we'd have to disable GL_FRAGMENT_PROGRAM_ARB here
+     *
+     * Don't call shader_select if the vertex shader is dirty, because some shader backends(GLSL) need both shaders
+     * to be compiled before activating them(needs some cleanups in the shader backend interface)
+     */
+    if(!isStateDirty(context, device->StateTable[STATE_VSHADER].representative)) {
+        device->shader_backend->shader_select((IWineD3DDevice *)stateblock->wineD3DDevice, use_pshader, use_vshader);
+
+        if (!isStateDirty(context, STATE_VERTEXSHADERCONSTANT) && (use_vshader || use_pshader)) {
+            device->StateTable[STATE_VERTEXSHADERCONSTANT].apply(STATE_VERTEXSHADERCONSTANT, stateblock, context);
+        }
+    }
+    if(use_pshader) {
+        device->StateTable[STATE_PIXELSHADERCONSTANT].apply(STATE_PIXELSHADERCONSTANT, stateblock, context);
+    }
+}
+
+/* We can't link the fog states to the fragment state directly since the vertex pipeline links them
+ * to FOGENABLE. A different linking in different pipeline parts can't be expressed in the combined
+ * state table, so we need to handle that with a forwarding function. The other invisible side effect
+ * is that changing the fog start and fog end(which links to FOGENABLE in vertex) results in the
+ * fragment_prog_arbfp function being called because FOGENABLE is dirty, which calls this function here
+ */
+static void state_arbfp_fog(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(!isStateDirty(context, STATE_PIXELSHADER)) {
+        fragment_prog_arbfp(state, stateblock, context);
+    }
+}
+
+static void textransform(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(!isStateDirty(context, STATE_PIXELSHADER)) {
+        fragment_prog_arbfp(state, stateblock, context);
+    }
+}
+
+#undef GLINFO_LOCATION
+
+static const struct StateEntryTemplate arbfp_fragmentstate_template[] = {
+    {STATE_RENDER(WINED3DRS_TEXTUREFACTOR),               { STATE_RENDER(WINED3DRS_TEXTUREFACTOR),              state_texfactor_arbfp   }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),           { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_COLORARG1),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_COLORARG2),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_COLORARG0),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAOP),           { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAARG1),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAARG2),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAARG0),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_RESULTARG),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT00),      { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT01),      { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT10),      { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT11),      { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVLSCALE),     { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlum_arbfp    }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVLOFFSET),    { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlum_arbfp    }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_COLOROP),           { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_COLORARG1),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_COLORARG2),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_COLORARG0),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_ALPHAOP),           { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_ALPHAARG1),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_ALPHAARG2),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_ALPHAARG0),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_RESULTARG),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT00),      { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT01),      { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT10),      { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT11),      { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVLSCALE),     { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlum_arbfp    }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVLOFFSET),    { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlum_arbfp    }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_COLOROP),           { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_COLORARG1),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_COLORARG2),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_COLORARG0),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_ALPHAOP),           { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_ALPHAARG1),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_ALPHAARG2),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_ALPHAARG0),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_RESULTARG),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT00),      { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT01),      { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT10),      { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT11),      { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVLSCALE),     { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlum_arbfp    }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVLOFFSET),    { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlum_arbfp    }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_COLOROP),           { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_COLORARG1),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_COLORARG2),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_COLORARG0),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_ALPHAOP),           { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_ALPHAARG1),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_ALPHAARG2),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_ALPHAARG0),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_RESULTARG),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT00),      { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT01),      { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT10),      { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT11),      { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVLSCALE),     { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlum_arbfp    }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVLOFFSET),    { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlum_arbfp    }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_COLOROP),           { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_COLORARG1),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_COLORARG2),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_COLORARG0),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_ALPHAOP),           { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_ALPHAARG1),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_ALPHAARG2),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_ALPHAARG0),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_RESULTARG),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT00),      { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT01),      { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT10),      { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT11),      { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVLSCALE),     { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlum_arbfp    }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVLOFFSET),    { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlum_arbfp    }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_COLOROP),           { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_COLORARG1),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_COLORARG2),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_COLORARG0),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_ALPHAOP),           { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_ALPHAARG1),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_ALPHAARG2),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_ALPHAARG0),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_RESULTARG),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT00),      { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT01),      { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT10),      { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT11),      { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVLSCALE),     { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlum_arbfp    }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVLOFFSET),    { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlum_arbfp    }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_COLOROP),           { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_COLORARG1),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_COLORARG2),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_COLORARG0),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_ALPHAOP),           { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_ALPHAARG1),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_ALPHAARG2),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_ALPHAARG0),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_RESULTARG),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT00),      { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT01),      { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT10),      { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT11),      { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVLSCALE),     { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlum_arbfp    }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVLOFFSET),    { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlum_arbfp    }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_COLOROP),           { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_COLORARG1),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_COLORARG2),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_COLORARG0),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_ALPHAOP),           { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_ALPHAARG1),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_ALPHAARG2),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_ALPHAARG0),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_RESULTARG),         { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT00),      { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT01),      { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT10),      { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT11),      { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT00),     set_bumpmat_arbfp       }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVLSCALE),     { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlum_arbfp    }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVLOFFSET),    { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlum_arbfp    }, 0                               },
+    { STATE_SAMPLER(0),                                   { STATE_SAMPLER(0),                                   sampler_texdim          }, 0                               },
+    { STATE_SAMPLER(1),                                   { STATE_SAMPLER(1),                                   sampler_texdim          }, 0                               },
+    { STATE_SAMPLER(2),                                   { STATE_SAMPLER(2),                                   sampler_texdim          }, 0                               },
+    { STATE_SAMPLER(3),                                   { STATE_SAMPLER(3),                                   sampler_texdim          }, 0                               },
+    { STATE_SAMPLER(4),                                   { STATE_SAMPLER(4),                                   sampler_texdim          }, 0                               },
+    { STATE_SAMPLER(5),                                   { STATE_SAMPLER(5),                                   sampler_texdim          }, 0                               },
+    { STATE_SAMPLER(6),                                   { STATE_SAMPLER(6),                                   sampler_texdim          }, 0                               },
+    { STATE_SAMPLER(7),                                   { STATE_SAMPLER(7),                                   sampler_texdim          }, 0                               },
+    { STATE_PIXELSHADER,                                  { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    { STATE_RENDER(WINED3DRS_FOGENABLE),                  { STATE_RENDER(WINED3DRS_FOGENABLE),                  state_arbfp_fog         }, 0                               },
+    { STATE_RENDER(WINED3DRS_FOGTABLEMODE),               { STATE_RENDER(WINED3DRS_FOGENABLE),                  state_arbfp_fog         }, 0                               },
+    { STATE_RENDER(WINED3DRS_FOGVERTEXMODE),              { STATE_RENDER(WINED3DRS_FOGENABLE),                  state_arbfp_fog         }, 0                               },
+    { STATE_RENDER(WINED3DRS_SRGBWRITEENABLE),            { STATE_PIXELSHADER,                                  fragment_prog_arbfp     }, 0                               },
+    {STATE_TEXTURESTAGE(0,WINED3DTSS_TEXTURETRANSFORMFLAGS),{STATE_TEXTURESTAGE(0, WINED3DTSS_TEXTURETRANSFORMFLAGS), textransform      }, 0                               },
+    {STATE_TEXTURESTAGE(1,WINED3DTSS_TEXTURETRANSFORMFLAGS),{STATE_TEXTURESTAGE(1, WINED3DTSS_TEXTURETRANSFORMFLAGS), textransform      }, 0                               },
+    {STATE_TEXTURESTAGE(2,WINED3DTSS_TEXTURETRANSFORMFLAGS),{STATE_TEXTURESTAGE(2, WINED3DTSS_TEXTURETRANSFORMFLAGS), textransform      }, 0                               },
+    {STATE_TEXTURESTAGE(3,WINED3DTSS_TEXTURETRANSFORMFLAGS),{STATE_TEXTURESTAGE(3, WINED3DTSS_TEXTURETRANSFORMFLAGS), textransform      }, 0                               },
+    {STATE_TEXTURESTAGE(4,WINED3DTSS_TEXTURETRANSFORMFLAGS),{STATE_TEXTURESTAGE(4, WINED3DTSS_TEXTURETRANSFORMFLAGS), textransform      }, 0                               },
+    {STATE_TEXTURESTAGE(5,WINED3DTSS_TEXTURETRANSFORMFLAGS),{STATE_TEXTURESTAGE(5, WINED3DTSS_TEXTURETRANSFORMFLAGS), textransform      }, 0                               },
+    {STATE_TEXTURESTAGE(6,WINED3DTSS_TEXTURETRANSFORMFLAGS),{STATE_TEXTURESTAGE(6, WINED3DTSS_TEXTURETRANSFORMFLAGS), textransform      }, 0                               },
+    {STATE_TEXTURESTAGE(7,WINED3DTSS_TEXTURETRANSFORMFLAGS),{STATE_TEXTURESTAGE(7, WINED3DTSS_TEXTURETRANSFORMFLAGS), textransform      }, 0                               },
+    { STATE_RENDER(WINED3DRS_SPECULARENABLE),             { STATE_RENDER(WINED3DRS_SPECULARENABLE),             state_arb_specularenable}, 0                               },
+    {0 /* Terminate */,                                   { 0,                                                  0                       }, 0                               },
+};
+
+const struct fragment_pipeline arbfp_fragment_pipeline = {
+    arbfp_enable,
+    arbfp_get_caps,
+    arbfp_alloc,
+    arbfp_free,
+    shader_arb_color_fixup_supported,
+    arbfp_fragmentstate_template,
+    TRUE /* We can disable projected textures */
+};
+
+#define GLINFO_LOCATION device->adapter->gl_info
+
+struct arbfp_blit_priv {
+    GLenum yuy2_rect_shader, yuy2_2d_shader;
+    GLenum uyvy_rect_shader, uyvy_2d_shader;
+    GLenum yv12_rect_shader, yv12_2d_shader;
+};
+
+static HRESULT arbfp_blit_alloc(IWineD3DDevice *iface) {
+    IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *) iface;
+    device->blit_priv = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(struct arbfp_blit_priv));
+    if(!device->blit_priv) {
+        ERR("Out of memory\n");
+        return E_OUTOFMEMORY;
+    }
+    return WINED3D_OK;
+}
+static void arbfp_blit_free(IWineD3DDevice *iface) {
+    IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *) iface;
+    struct arbfp_blit_priv *priv = (struct arbfp_blit_priv *) device->blit_priv;
+
+    ENTER_GL();
+    GL_EXTCALL(glDeleteProgramsARB(1, &priv->yuy2_rect_shader));
+    GL_EXTCALL(glDeleteProgramsARB(1, &priv->yuy2_2d_shader));
+    GL_EXTCALL(glDeleteProgramsARB(1, &priv->uyvy_rect_shader));
+    GL_EXTCALL(glDeleteProgramsARB(1, &priv->uyvy_2d_shader));
+    GL_EXTCALL(glDeleteProgramsARB(1, &priv->yv12_rect_shader));
+    GL_EXTCALL(glDeleteProgramsARB(1, &priv->yv12_2d_shader));
+    checkGLcall("Delete yuv programs\n");
+    LEAVE_GL();
+}
+
+static BOOL gen_planar_yuv_read(SHADER_BUFFER *buffer, enum yuv_fixup yuv_fixup, GLenum textype, char *luminance)
+{
+    char chroma;
+    const char *tex, *texinstr;
+
+    if (yuv_fixup == YUV_FIXUP_UYVY) {
+        chroma = 'r';
+        *luminance = 'a';
+    } else {
+        chroma = 'a';
+        *luminance = 'r';
+    }
+    switch(textype) {
+        case GL_TEXTURE_2D:             tex = "2D";     texinstr = "TXP"; break;
+        case GL_TEXTURE_RECTANGLE_ARB:  tex = "RECT";   texinstr = "TEX"; break;
+        default:
+            /* This is more tricky than just replacing the texture type - we have to navigate
+             * properly in the texture to find the correct chroma values
+             */
+            FIXME("Implement yuv correction for non-2d, non-rect textures\n");
+            return FALSE;
+    }
+
+    /* First we have to read the chroma values. This means we need at least two pixels(no filtering),
+     * or 4 pixels(with filtering). To get the unmodified chromas, we have to rid ourselves of the
+     * filtering when we sample the texture.
+     *
+     * These are the rules for reading the chroma:
+     *
+     * Even pixel: Cr
+     * Even pixel: U
+     * Odd pixel: V
+     *
+     * So we have to get the sampling x position in non-normalized coordinates in integers
+     */
+    if(textype != GL_TEXTURE_RECTANGLE_ARB) {
+        shader_addline(buffer, "MUL texcrd.rg, fragment.texcoord[0], size.x;\n");
+        shader_addline(buffer, "MOV texcrd.a, size.x;\n");
+    } else {
+        shader_addline(buffer, "MOV texcrd, fragment.texcoord[0];\n");
+    }
+    /* We must not allow filtering between pixel x and x+1, this would mix U and V
+     * Vertical filtering is ok. However, bear in mind that the pixel center is at
+     * 0.5, so add 0.5.
+     */
+    shader_addline(buffer, "FLR texcrd.x, texcrd.x;\n");
+    shader_addline(buffer, "ADD texcrd.x, texcrd.x, coef.y;\n");
+
+    /* Divide the x coordinate by 0.5 and get the fraction. This gives 0.25 and 0.75 for the
+     * even and odd pixels respectively
+     */
+    shader_addline(buffer, "MUL texcrd2, texcrd, coef.y;\n");
+    shader_addline(buffer, "FRC texcrd2, texcrd2;\n");
+
+    /* Sample Pixel 1 */
+    shader_addline(buffer, "%s luminance, texcrd, texture[0], %s;\n", texinstr, tex);
+
+    /* Put the value into either of the chroma values */
+    shader_addline(buffer, "SGE temp.x, texcrd2.x, coef.y;\n");
+    shader_addline(buffer, "MUL chroma.r, luminance.%c, temp.x;\n", chroma);
+    shader_addline(buffer, "SLT temp.x, texcrd2.x, coef.y;\n");
+    shader_addline(buffer, "MUL chroma.g, luminance.%c, temp.x;\n", chroma);
+
+    /* Sample pixel 2. If we read an even pixel(SLT above returned 1), sample
+     * the pixel right to the current one. Otherwise, sample the left pixel.
+     * Bias and scale the SLT result to -1;1 and add it to the texcrd.x.
+     */
+    shader_addline(buffer, "MAD temp.x, temp.x, coef.z, -coef.x;\n");
+    shader_addline(buffer, "ADD texcrd.x, texcrd, temp.x;\n");
+    shader_addline(buffer, "%s luminance, texcrd, texture[0], %s;\n", texinstr, tex);
+
+    /* Put the value into the other chroma */
+    shader_addline(buffer, "SGE temp.x, texcrd2.x, coef.y;\n");
+    shader_addline(buffer, "MAD chroma.g, luminance.%c, temp.x, chroma.g;\n", chroma);
+    shader_addline(buffer, "SLT temp.x, texcrd2.x, coef.y;\n");
+    shader_addline(buffer, "MAD chroma.r, luminance.%c, temp.x, chroma.r;\n", chroma);
+
+    /* TODO: If filtering is enabled, sample a 2nd pair of pixels left or right of
+     * the current one and lerp the two U and V values
+     */
+
+    /* This gives the correctly filtered luminance value */
+    shader_addline(buffer, "TEX luminance, fragment.texcoord[0], texture[0], %s;\n", tex);
+
+    return TRUE;
+}
+
+static BOOL gen_yv12_read(SHADER_BUFFER *buffer, GLenum textype, char *luminance)
+{
+    const char *tex;
+
+    switch(textype) {
+        case GL_TEXTURE_2D:             tex = "2D";     break;
+        case GL_TEXTURE_RECTANGLE_ARB:  tex = "RECT";   break;
+        default:
+            FIXME("Implement yv12 correction for non-2d, non-rect textures\n");
+            return FALSE;
+    }
+
+    /* YV12 surfaces contain a WxH sized luminance plane, followed by a (W/2)x(H/2)
+     * V and a (W/2)x(H/2) U plane, each with 8 bit per pixel. So the effective
+     * bitdepth is 12 bits per pixel. Since the U and V planes have only half the
+     * pitch of the luminance plane, the packing into the gl texture is a bit
+     * unfortunate. If the whole texture is interpreted as luminance data it looks
+     * approximately like this:
+     *
+     *        +----------------------------------+----
+     *        |                                  |
+     *        |                                  |
+     *        |                                  |
+     *        |                                  |
+     *        |                                  |   2
+     *        |            LUMINANCE             |   -
+     *        |                                  |   3
+     *        |                                  |
+     *        |                                  |
+     *        |                                  |
+     *        |                                  |
+     *        +----------------+-----------------+----
+     *        |                |                 |
+     *        |  U even rows   |  U odd rows     |
+     *        |                |                 |   1
+     *        +----------------+------------------   -
+     *        |                |                 |   3
+     *        |  V even rows   |  V odd rows     |
+     *        |                |                 |
+     *        +----------------+-----------------+----
+     *        |                |                 |
+     *        |     0.5        |       0.5       |
+     *
+     * So it appears as if there are 4 chroma images, but in fact the odd rows
+     * in the chroma images are in the same row as the even ones. So its is
+     * kinda tricky to read
+     *
+     * When reading from rectangle textures, keep in mind that the input y coordinates
+     * go from 0 to d3d_height, whereas the opengl texture height is 1.5 * d3d_height
+     */
+    shader_addline(buffer, "PARAM yv12_coef = {%f, %f, %f, %f};\n",
+                   2.0 / 3.0, 1.0 / 6.0, (2.0 / 3.0) + (1.0 / 6.0), 1.0 / 3.0);
+
+    shader_addline(buffer, "MOV texcrd, fragment.texcoord[0];\n");
+    /* the chroma planes have only half the width */
+    shader_addline(buffer, "MUL texcrd.x, texcrd.x, coef.y;\n");
+
+    /* The first value is between 2/3 and 5/6th of the texture's height, so scale+bias
+     * the coordinate. Also read the right side of the image when reading odd lines
+     *
+     * Don't forget to clamp the y values in into the range, otherwise we'll get filtering
+     * bleeding
+     */
+    if(textype == GL_TEXTURE_2D) {
+
+        shader_addline(buffer, "RCP chroma.w, size.y;\n");
+
+        shader_addline(buffer, "MUL texcrd2.y, texcrd.y, size.y;\n");
+
+        shader_addline(buffer, "FLR texcrd2.y, texcrd2.y;\n");
+        shader_addline(buffer, "MAD texcrd.y, texcrd.y, yv12_coef.y, yv12_coef.x;\n");
+
+        /* Read odd lines from the right side(add size * 0.5 to the x coordinate */
+        shader_addline(buffer, "ADD texcrd2.x, texcrd2.y, yv12_coef.y;\n"); /* To avoid 0.5 == 0.5 comparisons */
+        shader_addline(buffer, "FRC texcrd2.x, texcrd2.x;\n");
+        shader_addline(buffer, "SGE texcrd2.x, texcrd2.x, coef.y;\n");
+        shader_addline(buffer, "MAD texcrd.x, texcrd2.x, coef.y, texcrd.x;\n");
+
+        /* clamp, keep the half pixel origin in mind */
+        shader_addline(buffer, "MAD temp.y, coef.y, chroma.w, yv12_coef.x;\n");
+        shader_addline(buffer, "MAX texcrd.y, temp.y, texcrd.y;\n");
+        shader_addline(buffer, "MAD temp.y, -coef.y, chroma.w, yv12_coef.z;\n");
+        shader_addline(buffer, "MIN texcrd.y, temp.y, texcrd.y;\n");
+    } else {
+        /* Read from [size - size+size/4] */
+        shader_addline(buffer, "FLR texcrd.y, texcrd.y;\n");
+        shader_addline(buffer, "MAD texcrd.y, texcrd.y, coef.w, size.y;\n");
+
+        /* Read odd lines from the right side(add size * 0.5 to the x coordinate */
+        shader_addline(buffer, "ADD texcrd2.x, texcrd.y, yv12_coef.y;\n"); /* To avoid 0.5 == 0.5 comparisons */
+        shader_addline(buffer, "FRC texcrd2.x, texcrd2.x;\n");
+        shader_addline(buffer, "SGE texcrd2.x, texcrd2.x, coef.y;\n");
+        shader_addline(buffer, "MUL texcrd2.x, texcrd2.x, size.x;\n");
+        shader_addline(buffer, "MAD texcrd.x, texcrd2.x, coef.y, texcrd.x;\n");
+
+        /* Make sure to read exactly from the pixel center */
+        shader_addline(buffer, "FLR texcrd.y, texcrd.y;\n");
+        shader_addline(buffer, "ADD texcrd.y, texcrd.y, coef.y;\n");
+
+        /* Clamp */
+        shader_addline(buffer, "MAD temp.y, size.y, coef.w, size.y;\n");
+        shader_addline(buffer, "ADD temp.y, temp.y, -coef.y;\n");
+        shader_addline(buffer, "MIN texcrd.y, temp.y, texcrd.y;\n");
+        shader_addline(buffer, "ADD temp.y, size.y, -coef.y;\n");
+        shader_addline(buffer, "MAX texcrd.y, temp.y, texcrd.y;\n");
+    }
+    /* Read the texture, put the result into the output register */
+    shader_addline(buffer, "TEX temp, texcrd, texture[0], %s;\n", tex);
+    shader_addline(buffer, "MOV chroma.r, temp.a;\n");
+
+    /* The other chroma value is 1/6th of the texture lower, from 5/6th to 6/6th
+     * No need to clamp because we're just reusing the already clamped value from above
+     */
+    if(textype == GL_TEXTURE_2D) {
+        shader_addline(buffer, "ADD texcrd.y, texcrd.y, yv12_coef.y;\n");
+    } else {
+        shader_addline(buffer, "MAD texcrd.y, size.y, coef.w, texcrd.y;\n");
+    }
+    shader_addline(buffer, "TEX temp, texcrd, texture[0], %s;\n", tex);
+    shader_addline(buffer, "MOV chroma.g, temp.a;\n");
+
+    /* Sample the luminance value. It is in the top 2/3rd of the texture, so scale the y coordinate.
+     * Clamp the y coordinate to prevent the chroma values from bleeding into the sampled luminance
+     * values due to filtering
+     */
+    shader_addline(buffer, "MOV texcrd, fragment.texcoord[0];\n");
+    if(textype == GL_TEXTURE_2D) {
+        /* Multiply the y coordinate by 2/3 and clamp it */
+        shader_addline(buffer, "MUL texcrd.y, texcrd.y, yv12_coef.x;\n");
+        shader_addline(buffer, "MAD temp.y, -coef.y, chroma.w, yv12_coef.x;\n");
+        shader_addline(buffer, "MIN texcrd.y, temp.y, texcrd.y;\n");
+        shader_addline(buffer, "TEX luminance, texcrd, texture[0], %s;\n", tex);
+    } else {
+        /* Reading from texture_rectangles is pretty streightforward, just use the unmodified
+         * texture coordinate. It is still a good idea to clamp it though, since the opengl texture
+         * is bigger
+         */
+        shader_addline(buffer, "ADD temp.x, size.y, -coef.y;\n");
+        shader_addline(buffer, "MIN texcrd.y, texcrd.y, size.x;\n");
+        shader_addline(buffer, "TEX luminance, texcrd, texture[0], %s;\n", tex);
+    }
+    *luminance = 'a';
+
+    return TRUE;
+}
+
+static GLuint gen_yuv_shader(IWineD3DDeviceImpl *device, enum yuv_fixup yuv_fixup, GLenum textype)
+{
+    GLenum shader;
+    SHADER_BUFFER buffer;
+    char luminance_component;
+    struct arbfp_blit_priv *priv = (struct arbfp_blit_priv *) device->blit_priv;
+
+    /* Shader header */
+    buffer.bsize = 0;
+    buffer.lineNo = 0;
+    buffer.newline = TRUE;
+    buffer.buffer = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, SHADER_PGMSIZE);
+
+    ENTER_GL();
+    GL_EXTCALL(glGenProgramsARB(1, &shader));
+    checkGLcall("GL_EXTCALL(glGenProgramsARB(1, &shader))");
+    GL_EXTCALL(glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, shader));
+    checkGLcall("glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, shader)");
+    LEAVE_GL();
+    if(!shader) {
+        HeapFree(GetProcessHeap(), 0, buffer.buffer);
+        return 0;
+    }
+
+    /* The YUY2 and UYVY formats contain two pixels packed into a 32 bit macropixel,
+     * giving effectively 16 bit per pixel. The color consists of a luminance(Y) and
+     * two chroma(U and V) values. Each macropixel has two luminance values, one for
+     * each single pixel it contains, and one U and one V value shared between both
+     * pixels.
+     *
+     * The data is loaded into an A8L8 texture. With YUY2, the luminance component
+     * contains the luminance and alpha the chroma. With UYVY it is vice versa. Thus
+     * take the format into account when generating the read swizzles
+     *
+     * Reading the Y value is streightforward - just sample the texture. The hardware
+     * takes care of filtering in the horizontal and vertical direction.
+     *
+     * Reading the U and V values is harder. We have to avoid filtering horizontally,
+     * because that would mix the U and V values of one pixel or two adjacent pixels.
+     * Thus floor the texture coordinate and add 0.5 to get an unfiltered read,
+     * regardless of the filtering setting. Vertical filtering works automatically
+     * though - the U and V values of two rows are mixed nicely.
+     *
+     * Appart of avoiding filtering issues, the code has to know which value it just
+     * read, and where it can find the other one. To determine this, it checks if
+     * it sampled an even or odd pixel, and shifts the 2nd read accordingly.
+     *
+     * Handling horizontal filtering of U and V values requires reading a 2nd pair
+     * of pixels, extracting U and V and mixing them. This is not implemented yet.
+     *
+     * An alternative implementation idea is to load the texture as A8R8G8B8 texture,
+     * with width / 2. This way one read gives all 3 values, finding U and V is easy
+     * in an unfiltered situation. Finding the luminance on the other hand requires
+     * finding out if it is an odd or even pixel. The real drawback of this approach
+     * is filtering. This would have to be emulated completely in the shader, reading
+     * up two 2 packed pixels in up to 2 rows and interpolating both horizontally and
+     * vertically. Beyond that it would require adjustments to the texture handling
+     * code to deal with the width scaling
+     */
+    shader_addline(&buffer, "!!ARBfp1.0\n");
+    shader_addline(&buffer, "TEMP luminance;\n");
+    shader_addline(&buffer, "TEMP temp;\n");
+    shader_addline(&buffer, "TEMP chroma;\n");
+    shader_addline(&buffer, "TEMP texcrd;\n");
+    shader_addline(&buffer, "TEMP texcrd2;\n");
+    shader_addline(&buffer, "PARAM coef = {1.0, 0.5, 2.0, 0.25};\n");
+    shader_addline(&buffer, "PARAM yuv_coef = {1.403, 0.344, 0.714, 1.770};\n");
+    shader_addline(&buffer, "PARAM size = program.local[0];\n");
+
+    switch (yuv_fixup)
+    {
+        case YUV_FIXUP_UYVY:
+        case YUV_FIXUP_YUY2:
+            if (!gen_planar_yuv_read(&buffer, yuv_fixup, textype, &luminance_component))
+            {
+                HeapFree(GetProcessHeap(), 0, buffer.buffer);
+                return 0;
+            }
+            break;
+
+        case YUV_FIXUP_YV12:
+            if (!gen_yv12_read(&buffer, textype, &luminance_component))
+            {
+                HeapFree(GetProcessHeap(), 0, buffer.buffer);
+                return 0;
+            }
+            break;
+
+        default:
+            FIXME("Unsupported YUV fixup %#x\n", yuv_fixup);
+            HeapFree(GetProcessHeap(), 0, buffer.buffer);
+            return 0;
+    }
+
+    /* Calculate the final result. Formula is taken from
+     * http://www.fourcc.org/fccyvrgb.php. Note that the chroma
+     * ranges from -0.5 to 0.5
+     */
+    shader_addline(&buffer, "SUB chroma.rg, chroma, coef.y;\n");
+
+    shader_addline(&buffer, "MAD result.color.r, chroma.r, yuv_coef.x, luminance.%c;\n", luminance_component);
+    shader_addline(&buffer, "MAD temp.r, -chroma.g, yuv_coef.y, luminance.%c;\n", luminance_component);
+    shader_addline(&buffer, "MAD result.color.g, -chroma.r, yuv_coef.z, temp.r;\n");
+    shader_addline(&buffer, "MAD result.color.b, chroma.g, yuv_coef.w, luminance.%c;\n", luminance_component);
+    shader_addline(&buffer, "END\n");
+
+    ENTER_GL();
+    GL_EXTCALL(glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, strlen(buffer.buffer), buffer.buffer));
+
+    if (glGetError() == GL_INVALID_OPERATION) {
+        GLint pos;
+        glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &pos);
+        FIXME("Fragment program error at position %d: %s\n", pos,
+              debugstr_a((const char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)));
+    }
+    HeapFree(GetProcessHeap(), 0, buffer.buffer);
+    LEAVE_GL();
+
+    switch (yuv_fixup)
+    {
+        case YUV_FIXUP_YUY2:
+            if (textype == GL_TEXTURE_RECTANGLE_ARB) priv->yuy2_rect_shader = shader;
+            else priv->yuy2_2d_shader = shader;
+            break;
+
+        case YUV_FIXUP_UYVY:
+            if (textype == GL_TEXTURE_RECTANGLE_ARB) priv->uyvy_rect_shader = shader;
+            else priv->uyvy_2d_shader = shader;
+            break;
+
+        case YUV_FIXUP_YV12:
+            if (textype == GL_TEXTURE_RECTANGLE_ARB) priv->yv12_rect_shader = shader;
+            else priv->yv12_2d_shader = shader;
+            break;
+    }
+
+    return shader;
+}
+
+static HRESULT arbfp_blit_set(IWineD3DDevice *iface, WINED3DFORMAT fmt, GLenum textype, UINT width, UINT height) {
+    GLenum shader;
+    IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *) iface;
+    float size[4] = {width, height, 1, 1};
+    struct arbfp_blit_priv *priv = (struct arbfp_blit_priv *) device->blit_priv;
+    const struct GlPixelFormatDesc *glDesc;
+    enum yuv_fixup yuv_fixup;
+
+    getFormatDescEntry(fmt, &GLINFO_LOCATION, &glDesc);
+
+    if (!is_yuv_fixup(glDesc->color_fixup))
+    {
+        TRACE("Fixup:\n");
+        dump_color_fixup_desc(glDesc->color_fixup);
+        /* Don't bother setting up a shader for unconverted formats */
+        ENTER_GL();
+        glEnable(textype);
+        checkGLcall("glEnable(textype)");
+        LEAVE_GL();
+        return WINED3D_OK;
+    }
+
+    yuv_fixup = get_yuv_fixup(glDesc->color_fixup);
+
+    switch(yuv_fixup)
+    {
+        case YUV_FIXUP_YUY2:
+            shader = textype == GL_TEXTURE_RECTANGLE_ARB ? priv->yuy2_rect_shader : priv->yuy2_2d_shader;
+            break;
+
+        case YUV_FIXUP_UYVY:
+            shader = textype == GL_TEXTURE_RECTANGLE_ARB ? priv->uyvy_rect_shader : priv->uyvy_2d_shader;
+            break;
+
+        case YUV_FIXUP_YV12:
+            shader = textype == GL_TEXTURE_RECTANGLE_ARB ? priv->yv12_rect_shader : priv->yv12_2d_shader;
+            break;
+
+        default:
+            FIXME("Unsupported YUV fixup %#x, not setting a shader\n", yuv_fixup);
+            ENTER_GL();
+            glEnable(textype);
+            checkGLcall("glEnable(textype)");
+            LEAVE_GL();
+            return E_NOTIMPL;
+    }
+
+    if (!shader) shader = gen_yuv_shader(device, yuv_fixup, textype);
+
+    ENTER_GL();
+    glEnable(GL_FRAGMENT_PROGRAM_ARB);
+    checkGLcall("glEnable(GL_FRAGMENT_PROGRAM_ARB)");
+    GL_EXTCALL(glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, shader));
+    checkGLcall("glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, shader)");
+    GL_EXTCALL(glProgramLocalParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, 0, size));
+    checkGLcall("glProgramLocalParameter4fvARB");
+    LEAVE_GL();
+
+    return WINED3D_OK;
+}
+
+static void arbfp_blit_unset(IWineD3DDevice *iface) {
+    IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *) iface;
+
+    ENTER_GL();
+    glDisable(GL_FRAGMENT_PROGRAM_ARB);
+    checkGLcall("glDisable(GL_FRAGMENT_PROGRAM_ARB)");
+    glDisable(GL_TEXTURE_2D);
+    checkGLcall("glDisable(GL_TEXTURE_2D)");
+    if(GL_SUPPORT(ARB_TEXTURE_CUBE_MAP)) {
+        glDisable(GL_TEXTURE_CUBE_MAP_ARB);
+        checkGLcall("glDisable(GL_TEXTURE_CUBE_MAP_ARB)");
+    }
+    if(GL_SUPPORT(ARB_TEXTURE_RECTANGLE)) {
+        glDisable(GL_TEXTURE_RECTANGLE_ARB);
+        checkGLcall("glDisable(GL_TEXTURE_RECTANGLE_ARB)");
+    }
+    LEAVE_GL();
+}
+
+static BOOL arbfp_blit_color_fixup_supported(struct color_fixup_desc fixup)
+{
+    enum yuv_fixup yuv_fixup;
+
+    if (TRACE_ON(d3d_shader) && TRACE_ON(d3d))
+    {
+        TRACE("Checking support for fixup:\n");
+        dump_color_fixup_desc(fixup);
+    }
+
+    if (is_identity_fixup(fixup))
+    {
+        TRACE("[OK]\n");
+        return TRUE;
+    }
+
+    /* We only support YUV conversions. */
+    if (!is_yuv_fixup(fixup))
+    {
+        TRACE("[FAILED]\n");
+        return FALSE;
+    }
+
+    yuv_fixup = get_yuv_fixup(fixup);
+    switch(yuv_fixup)
+    {
+        case YUV_FIXUP_YUY2:
+        case YUV_FIXUP_UYVY:
+        case YUV_FIXUP_YV12:
+            TRACE("[OK]\n");
+            return TRUE;
+
+        default:
+            FIXME("Unsupported YUV fixup %#x\n", yuv_fixup);
+            TRACE("[FAILED]\n");
+            return FALSE;
+    }
+}
+
+const struct blit_shader arbfp_blit = {
+    arbfp_blit_alloc,
+    arbfp_blit_free,
+    arbfp_blit_set,
+    arbfp_blit_unset,
+    arbfp_blit_color_fixup_supported,
+};
+
+#undef GLINFO_LOCATION
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/ati_fragment_shader.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/ati_fragment_shader.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/ati_fragment_shader.c	(revision 16410)
@@ -0,0 +1,1150 @@
+/*
+ * Fixed function pipeline replacement using GL_ATI_fragment_shader
+ *
+ * Copyright 2008 Stefan Dösinger(for CodeWeavers)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+
+#include <math.h>
+#include <stdio.h>
+
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d_shader);
+WINE_DECLARE_DEBUG_CHANNEL(d3d);
+
+/* Some private defines, Constant associations, etc.
+ * Env bump matrix and per stage constant should be independent,
+ * a stage that bump maps can't read the per state constant
+ */
+#define ATI_FFP_CONST_BUMPMAT(i) (GL_CON_0_ATI + i)
+#define ATI_FFP_CONST_CONSTANT0 GL_CON_0_ATI
+#define ATI_FFP_CONST_CONSTANT1 GL_CON_1_ATI
+#define ATI_FFP_CONST_CONSTANT2 GL_CON_2_ATI
+#define ATI_FFP_CONST_CONSTANT3 GL_CON_3_ATI
+#define ATI_FFP_CONST_CONSTANT4 GL_CON_4_ATI
+#define ATI_FFP_CONST_CONSTANT5 GL_CON_5_ATI
+#define ATI_FFP_CONST_TFACTOR   GL_CON_6_ATI
+
+/* GL_ATI_fragment_shader specific fixed function pipeline description. "Inherits" from the common one */
+struct atifs_ffp_desc
+{
+    struct ffp_frag_desc parent;
+    GLuint shader;
+    unsigned int num_textures_used;
+};
+
+struct atifs_private_data
+{
+    struct hash_table_t *fragment_shaders; /* A hashtable to track fragment pipeline replacement shaders */
+
+};
+
+static const char *debug_dstmod(GLuint mod) {
+    switch(mod) {
+        case GL_NONE:               return "GL_NONE";
+        case GL_2X_BIT_ATI:         return "GL_2X_BIT_ATI";
+        case GL_4X_BIT_ATI:         return "GL_4X_BIT_ATI";
+        case GL_8X_BIT_ATI:         return "GL_8X_BIT_ATI";
+        case GL_HALF_BIT_ATI:       return "GL_HALF_BIT_ATI";
+        case GL_QUARTER_BIT_ATI:    return "GL_QUARTER_BIT_ATI";
+        case GL_EIGHTH_BIT_ATI:     return "GL_EIGHTH_BIT_ATI";
+        case GL_SATURATE_BIT_ATI:   return "GL_SATURATE_BIT_ATI";
+        default:                    return "Unexpected modifier\n";
+    }
+}
+
+static const char *debug_argmod(GLuint mod) {
+    switch(mod) {
+        case GL_NONE:
+            return "GL_NONE";
+
+        case GL_2X_BIT_ATI:
+            return "GL_2X_BIT_ATI";
+        case GL_COMP_BIT_ATI:
+            return "GL_COMP_BIT_ATI";
+        case GL_NEGATE_BIT_ATI:
+            return "GL_NEGATE_BIT_ATI";
+        case GL_BIAS_BIT_ATI:
+            return "GL_BIAS_BIT_ATI";
+
+        case GL_2X_BIT_ATI | GL_COMP_BIT_ATI:
+            return "GL_2X_BIT_ATI | GL_COMP_BIT_ATI";
+        case GL_2X_BIT_ATI | GL_NEGATE_BIT_ATI:
+            return "GL_2X_BIT_ATI | GL_NEGATE_BIT_ATI";
+        case GL_2X_BIT_ATI | GL_BIAS_BIT_ATI:
+            return "GL_2X_BIT_ATI | GL_BIAS_BIT_ATI";
+        case GL_COMP_BIT_ATI | GL_NEGATE_BIT_ATI:
+            return "GL_COMP_BIT_ATI | GL_NEGATE_BIT_ATI";
+        case GL_COMP_BIT_ATI | GL_BIAS_BIT_ATI:
+            return "GL_COMP_BIT_ATI | GL_BIAS_BIT_ATI";
+        case GL_NEGATE_BIT_ATI | GL_BIAS_BIT_ATI:
+            return "GL_NEGATE_BIT_ATI | GL_BIAS_BIT_ATI";
+
+        case GL_COMP_BIT_ATI | GL_NEGATE_BIT_ATI | GL_BIAS_BIT_ATI:
+            return "GL_COMP_BIT_ATI | GL_NEGATE_BIT_ATI | GL_BIAS_BIT_ATI";
+        case GL_2X_BIT_ATI | GL_NEGATE_BIT_ATI | GL_BIAS_BIT_ATI:
+            return "GL_2X_BIT_ATI | GL_NEGATE_BIT_ATI | GL_BIAS_BIT_ATI";
+        case GL_2X_BIT_ATI | GL_COMP_BIT_ATI | GL_BIAS_BIT_ATI:
+            return "GL_2X_BIT_ATI | GL_COMP_BIT_ATI | GL_BIAS_BIT_ATI";
+        case GL_2X_BIT_ATI | GL_COMP_BIT_ATI | GL_NEGATE_BIT_ATI:
+            return "GL_2X_BIT_ATI | GL_COMP_BIT_ATI | GL_NEGATE_BIT_ATI";
+
+        case GL_2X_BIT_ATI | GL_COMP_BIT_ATI | GL_NEGATE_BIT_ATI | GL_BIAS_BIT_ATI:
+            return "GL_2X_BIT_ATI | GL_COMP_BIT_ATI | GL_NEGATE_BIT_ATI | GL_BIAS_BIT_ATI";
+
+        default:
+            return "Unexpected argmod combination\n";
+    }
+}
+static const char *debug_register(GLuint reg) {
+    switch(reg) {
+        case GL_REG_0_ATI:                  return "GL_REG_0_ATI";
+        case GL_REG_1_ATI:                  return "GL_REG_1_ATI";
+        case GL_REG_2_ATI:                  return "GL_REG_2_ATI";
+        case GL_REG_3_ATI:                  return "GL_REG_3_ATI";
+        case GL_REG_4_ATI:                  return "GL_REG_4_ATI";
+        case GL_REG_5_ATI:                  return "GL_REG_5_ATI";
+
+        case GL_CON_0_ATI:                  return "GL_CON_0_ATI";
+        case GL_CON_1_ATI:                  return "GL_CON_1_ATI";
+        case GL_CON_2_ATI:                  return "GL_CON_2_ATI";
+        case GL_CON_3_ATI:                  return "GL_CON_3_ATI";
+        case GL_CON_4_ATI:                  return "GL_CON_4_ATI";
+        case GL_CON_5_ATI:                  return "GL_CON_5_ATI";
+        case GL_CON_6_ATI:                  return "GL_CON_6_ATI";
+        case GL_CON_7_ATI:                  return "GL_CON_7_ATI";
+
+        case GL_ZERO:                       return "GL_ZERO";
+        case GL_ONE:                        return "GL_ONE";
+        case GL_PRIMARY_COLOR:              return "GL_PRIMARY_COLOR";
+        case GL_SECONDARY_INTERPOLATOR_ATI: return "GL_SECONDARY_INTERPOLATOR_ATI";
+
+        default:                            return "Unknown register\n";
+    }
+}
+
+static const char *debug_swizzle(GLuint swizzle) {
+    switch(swizzle) {
+        case GL_SWIZZLE_STR_ATI:        return "GL_SWIZZLE_STR_ATI";
+        case GL_SWIZZLE_STQ_ATI:        return "GL_SWIZZLE_STQ_ATI";
+        case GL_SWIZZLE_STR_DR_ATI:     return "GL_SWIZZLE_STR_DR_ATI";
+        case GL_SWIZZLE_STQ_DQ_ATI:     return "GL_SWIZZLE_STQ_DQ_ATI";
+        default:                        return "unknown swizzle";
+    }
+}
+
+static const char *debug_rep(GLuint rep) {
+    switch(rep) {
+        case GL_NONE:                   return "GL_NONE";
+        case GL_RED:                    return "GL_RED";
+        case GL_GREEN:                  return "GL_GREEN";
+        case GL_BLUE:                   return "GL_BLUE";
+        default:                        return "unknown argrep";
+    }
+}
+
+#define GLINFO_LOCATION (*gl_info)
+static GLuint register_for_arg(DWORD arg, const WineD3D_GL_Info *gl_info,
+        unsigned int stage, GLuint *mod, GLuint *rep, GLuint tmparg)
+{
+    GLenum ret;
+
+    if(mod) *mod = GL_NONE;
+    if(arg == ARG_UNUSED)
+    {
+        if (rep) *rep = GL_NONE;
+        return -1; /* This is the marker for unused registers */
+    }
+
+    switch(arg & WINED3DTA_SELECTMASK) {
+        case WINED3DTA_DIFFUSE:
+            ret = GL_PRIMARY_COLOR;
+            break;
+
+        case WINED3DTA_CURRENT:
+            /* Note that using GL_REG_0_ATI for the passed on register is safe because
+             * texture0 is read at stage0, so in the worst case it is read in the
+             * instruction writing to reg0. Afterwards texture0 is not used any longer.
+             * If we're reading from current
+             */
+            if(stage == 0) {
+                ret = GL_PRIMARY_COLOR;
+            } else {
+                ret = GL_REG_0_ATI;
+            }
+            break;
+
+        case WINED3DTA_TEXTURE:
+            ret = GL_REG_0_ATI + stage;
+            break;
+
+        case WINED3DTA_TFACTOR:
+            ret = ATI_FFP_CONST_TFACTOR;
+            break;
+
+        case WINED3DTA_SPECULAR:
+            ret = GL_SECONDARY_INTERPOLATOR_ATI;
+            break;
+
+        case WINED3DTA_TEMP:
+            ret = tmparg;
+            break;
+
+        case WINED3DTA_CONSTANT:
+            FIXME("Unhandled source argument WINED3DTA_TEMP\n");
+            ret = GL_CON_0_ATI;
+            break;
+
+        default:
+            FIXME("Unknown source argument %d\n", arg);
+            ret = GL_ZERO;
+    }
+
+    if(arg & WINED3DTA_COMPLEMENT) {
+        if(mod) *mod |= GL_COMP_BIT_ATI;
+    }
+    if(arg & WINED3DTA_ALPHAREPLICATE) {
+        if(rep) *rep = GL_ALPHA;
+    } else {
+        if(rep) *rep = GL_NONE;
+    }
+    return ret;
+}
+
+static GLuint find_tmpreg(const struct texture_stage_op op[MAX_TEXTURES])
+{
+    int lowest_read = -1;
+    int lowest_write = -1;
+    int i;
+    BOOL tex_used[MAX_TEXTURES];
+
+    memset(tex_used, 0, sizeof(tex_used));
+    for(i = 0; i < MAX_TEXTURES; i++) {
+        if(op[i].cop == WINED3DTOP_DISABLE) {
+            break;
+        }
+
+        if(lowest_read == -1 &&
+          (op[i].carg1 == WINED3DTA_TEMP || op[i].carg2 == WINED3DTA_TEMP || op[i].carg0 == WINED3DTA_TEMP ||
+           op[i].aarg1 == WINED3DTA_TEMP || op[i].aarg2 == WINED3DTA_TEMP || op[i].aarg0 == WINED3DTA_TEMP)) {
+            lowest_read = i;
+        }
+
+        if(lowest_write == -1 && op[i].dst == tempreg) {
+            lowest_write = i;
+        }
+
+        if(op[i].carg1 == WINED3DTA_TEXTURE || op[i].carg2 == WINED3DTA_TEXTURE || op[i].carg0 == WINED3DTA_TEXTURE ||
+           op[i].aarg1 == WINED3DTA_TEXTURE || op[i].aarg2 == WINED3DTA_TEXTURE || op[i].aarg0 == WINED3DTA_TEXTURE) {
+            tex_used[i] = TRUE;
+        }
+    }
+
+    /* Temp reg not read? We don't need it, return GL_NONE */
+    if(lowest_read == -1) return GL_NONE;
+
+    if(lowest_write >= lowest_read) {
+        FIXME("Temp register read before being written\n");
+    }
+
+    if(lowest_write == -1) {
+        /* This needs a test. Maybe we are supposed to return 0.0/0.0/0.0/0.0, or fail drawprim, or whatever */
+        FIXME("Temp register read without being written\n");
+        return GL_REG_1_ATI;
+    } else if(lowest_write >= 1) {
+        /* If we're writing to the temp reg at earliest in stage 1, we can use register 1 for the temp result.
+         * there may be texture data stored in reg 1, but we do not need it any longer since stage 1 already
+         * read it
+         */
+        return GL_REG_1_ATI;
+    } else {
+        /* Search for a free texture register. We have 6 registers available. GL_REG_0_ATI is already used
+         * for the regular result
+         */
+        for(i = 1; i < 6; i++) {
+            if(!tex_used[i]) {
+                return GL_REG_0_ATI + i;
+            }
+        }
+        /* What to do here? Report it in ValidateDevice? */
+        FIXME("Could not find a register for the temporary register\n");
+        return 0;
+    }
+}
+
+static GLuint gen_ati_shader(const struct texture_stage_op op[MAX_TEXTURES], const WineD3D_GL_Info *gl_info)
+{
+    GLuint ret = GL_EXTCALL(glGenFragmentShadersATI(1));
+    unsigned int stage;
+    GLuint arg0, arg1, arg2, extrarg;
+    GLuint dstmod, argmod0, argmod1, argmod2, argmodextra;
+    GLuint rep0, rep1, rep2;
+    GLuint swizzle;
+    GLuint tmparg = find_tmpreg(op);
+    GLuint dstreg;
+
+    if(!ret) {
+        ERR("Failed to generate a GL_ATI_fragment_shader shader id\n");
+        return 0;
+    }
+    GL_EXTCALL(glBindFragmentShaderATI(ret));
+    checkGLcall("GL_EXTCALL(glBindFragmentShaderATI(ret))");
+
+    TRACE("glBeginFragmentShaderATI()\n");
+    GL_EXTCALL(glBeginFragmentShaderATI());
+    checkGLcall("GL_EXTCALL(glBeginFragmentShaderATI())");
+
+    /* Pass 1: Generate sampling instructions for perturbation maps */
+      for(stage = 0; stage < GL_LIMITS(textures); stage++) {
+        if(op[stage].cop == WINED3DTOP_DISABLE) break;
+        if(op[stage].cop != WINED3DTOP_BUMPENVMAP &&
+           op[stage].cop != WINED3DTOP_BUMPENVMAPLUMINANCE) continue;
+
+        TRACE("glSampleMapATI(GL_REG_%d_ATI, GL_TEXTURE_%d_ARB, GL_SWIZZLE_STR_ATI)\n",
+              stage, stage);
+        GL_EXTCALL(glSampleMapATI(GL_REG_0_ATI + stage,
+                   GL_TEXTURE0_ARB + stage,
+                   GL_SWIZZLE_STR_ATI));
+        if(op[stage + 1].projected == proj_none) {
+            swizzle = GL_SWIZZLE_STR_ATI;
+        } else if(op[stage + 1].projected == proj_count4) {
+            swizzle = GL_SWIZZLE_STQ_DQ_ATI;
+        } else {
+            swizzle = GL_SWIZZLE_STR_DR_ATI;
+        }
+        TRACE("glPassTexCoordATI(GL_REG_%d_ATI, GL_TEXTURE_%d_ARB, %s)\n",
+              stage + 1, stage + 1, debug_swizzle(swizzle));
+        GL_EXTCALL(glPassTexCoordATI(GL_REG_0_ATI + stage + 1,
+                   GL_TEXTURE0_ARB + stage + 1,
+                   swizzle));
+
+        /* We need GL_REG_5_ATI as a temporary register to swizzle the bump matrix. So we run into
+         * issues if we're bump mapping on stage 4 or 5
+         */
+        if(stage >= 4) {
+            FIXME("Bump mapping in stage %d\n", stage);
+        }
+    }
+
+    /* Pass 2: Generate perturbation calculations */
+    for(stage = 0; stage < GL_LIMITS(textures); stage++) {
+        GLuint argmodextra_x, argmodextra_y;
+        struct color_fixup_desc fixup;
+
+        if(op[stage].cop == WINED3DTOP_DISABLE) break;
+        if(op[stage].cop != WINED3DTOP_BUMPENVMAP &&
+           op[stage].cop != WINED3DTOP_BUMPENVMAPLUMINANCE) continue;
+
+        if (fixup.x_source != CHANNEL_SOURCE_X || fixup.y_source != CHANNEL_SOURCE_Y)
+        {
+            FIXME("Swizzles not implemented\n");
+            argmodextra_x = GL_NONE;
+            argmodextra_y = GL_NONE;
+        }
+        else
+        {
+            /* Nice thing, we get the color correction for free :-) */
+            argmodextra_x = fixup.x_sign_fixup ? GL_2X_BIT_ATI | GL_BIAS_BIT_ATI : GL_NONE;
+            argmodextra_y = fixup.y_sign_fixup ? GL_2X_BIT_ATI | GL_BIAS_BIT_ATI : GL_NONE;
+        }
+
+        TRACE("glColorFragmentOp3ATI(GL_DOT2_ADD_ATI, GL_REG_%d_ATI, GL_RED_BIT_ATI, GL_NONE, GL_REG_%d_ATI, GL_NONE, %s, ATI_FFP_CONST_BUMPMAT(%d), GL_NONE, GL_NONE, GL_REG_%d_ATI, GL_RED, GL_NONE)\n",
+              stage + 1, stage, debug_argmod(argmodextra_x), stage, stage + 1);
+        GL_EXTCALL(glColorFragmentOp3ATI(GL_DOT2_ADD_ATI, GL_REG_0_ATI + stage + 1, GL_RED_BIT_ATI, GL_NONE,
+                                         GL_REG_0_ATI + stage, GL_NONE, argmodextra_x,
+                                         ATI_FFP_CONST_BUMPMAT(stage), GL_NONE, GL_2X_BIT_ATI | GL_BIAS_BIT_ATI,
+                                         GL_REG_0_ATI + stage + 1, GL_RED, GL_NONE));
+
+        /* FIXME: How can I make GL_DOT2_ADD_ATI read the factors from blue and alpha? It defaults to red and green,
+         * and it is fairly easy to make it read GL_BLUE or BL_ALPHA, but I can't get an R * B + G * A. So we're wasting
+         * one register and two instructions in this pass for a simple swizzling operation.
+         * For starters it might be good enough to merge the two movs into one, but even that isn't possible :-(
+         *
+         * NOTE: GL_BLUE | GL_ALPHA is not possible. It doesn't throw a compilation error, but an OR operation on the
+         * constants doesn't make sense, considering their values.
+         */
+        TRACE("glColorFragmentOp1ATI(GL_MOV_ATI, GL_REG_5_ATI, GL_RED_BIT_ATI, GL_NONE, ATI_FFP_CONST_BUMPMAT(%d), GL_BLUE, GL_NONE)\n", stage);
+        GL_EXTCALL(glColorFragmentOp1ATI(GL_MOV_ATI, GL_REG_5_ATI, GL_RED_BIT_ATI, GL_NONE,
+                                         ATI_FFP_CONST_BUMPMAT(stage), GL_BLUE, GL_NONE));
+        TRACE("glColorFragmentOp1ATI(GL_MOV_ATI, GL_REG_5_ATI, GL_GREEN_BIT_ATI, GL_NONE, ATI_FFP_CONST_BUMPMAT(%d), GL_ALPHA, GL_NONE)\n", stage);
+        GL_EXTCALL(glColorFragmentOp1ATI(GL_MOV_ATI, GL_REG_5_ATI, GL_GREEN_BIT_ATI, GL_NONE,
+                                        ATI_FFP_CONST_BUMPMAT(stage), GL_ALPHA, GL_NONE));
+        TRACE("glColorFragmentOp3ATI(GL_DOT2_ADD_ATI, GL_REG_%d_ATI, GL_GREEN_BIT_ATI, GL_NONE, GL_REG_%d_ATI, GL_NONE, %s, GL_REG_5_ATI, GL_NONE, GL_NONE, GL_REG_%d_ATI, GL_GREEN, GL_NONE)\n",
+              stage + 1, stage, debug_argmod(argmodextra_y), stage + 1);
+        GL_EXTCALL(glColorFragmentOp3ATI(GL_DOT2_ADD_ATI, GL_REG_0_ATI + stage + 1, GL_GREEN_BIT_ATI, GL_NONE,
+                                         GL_REG_0_ATI + stage, GL_NONE, argmodextra_y,
+                                         GL_REG_5_ATI, GL_NONE, GL_2X_BIT_ATI | GL_BIAS_BIT_ATI,
+                                         GL_REG_0_ATI + stage + 1, GL_GREEN, GL_NONE));
+    }
+
+    /* Pass 3: Generate sampling instructions for regular textures */
+    for(stage = 0; stage < GL_LIMITS(textures); stage++) {
+        if(op[stage].cop == WINED3DTOP_DISABLE) {
+            break;
+        }
+
+        if(op[stage].projected == proj_none) {
+            swizzle = GL_SWIZZLE_STR_ATI;
+        } else if(op[stage].projected == proj_count3) {
+            swizzle = GL_SWIZZLE_STR_DR_ATI;
+        } else {
+            swizzle = GL_SWIZZLE_STQ_DQ_ATI;
+        }
+
+        if((op[stage].carg0 & WINED3DTA_SELECTMASK) == WINED3DTA_TEXTURE ||
+           (op[stage].carg1 & WINED3DTA_SELECTMASK) == WINED3DTA_TEXTURE ||
+           (op[stage].carg2 & WINED3DTA_SELECTMASK) == WINED3DTA_TEXTURE ||
+           (op[stage].aarg0 & WINED3DTA_SELECTMASK) == WINED3DTA_TEXTURE ||
+           (op[stage].aarg1 & WINED3DTA_SELECTMASK) == WINED3DTA_TEXTURE ||
+           (op[stage].aarg2 & WINED3DTA_SELECTMASK) == WINED3DTA_TEXTURE ||
+            op[stage].cop == WINED3DTOP_BLENDTEXTUREALPHA) {
+
+            if(stage > 0 &&
+               (op[stage - 1].cop == WINED3DTOP_BUMPENVMAP ||
+                op[stage - 1].cop == WINED3DTOP_BUMPENVMAPLUMINANCE)) {
+                TRACE("glSampleMapATI(GL_REG_%d_ATI, GL_REG_%d_ATI, GL_SWIZZLE_STR_ATI)\n",
+                      stage, stage);
+                GL_EXTCALL(glSampleMapATI(GL_REG_0_ATI + stage,
+                           GL_REG_0_ATI + stage,
+                           GL_SWIZZLE_STR_ATI));
+            } else {
+                TRACE("glSampleMapATI(GL_REG_%d_ATI, GL_TEXTURE_%d_ARB, %s)\n",
+                    stage, stage, debug_swizzle(swizzle));
+                GL_EXTCALL(glSampleMapATI(GL_REG_0_ATI + stage,
+                                        GL_TEXTURE0_ARB + stage,
+                                        swizzle));
+            }
+        }
+    }
+
+    /* Pass 4: Generate the arithmetic instructions */
+    for(stage = 0; stage < MAX_TEXTURES; stage++) {
+        if(op[stage].cop == WINED3DTOP_DISABLE) {
+            if(stage == 0) {
+                /* Handle complete texture disabling gracefully */
+                TRACE("glColorFragmentOp1ATI(GL_MOV_ATI, GL_REG_0_ATI, GL_NONE, GL_NONE, GL_PRIMARY_COLOR, GL_NONE, GL_NONE)\n");
+                GL_EXTCALL(glColorFragmentOp1ATI(GL_MOV_ATI, GL_REG_0_ATI, GL_NONE, GL_NONE,
+                                                 GL_PRIMARY_COLOR, GL_NONE, GL_NONE));
+                TRACE("glAlphaFragmentOp1ATI(GL_MOV_ATI, GL_REG_0_ATI, GL_NONE, GL_PRIMARY_COLOR, GL_NONE, GL_NONE)\n");
+                GL_EXTCALL(glAlphaFragmentOp1ATI(GL_MOV_ATI, GL_REG_0_ATI, GL_NONE,
+                                                 GL_PRIMARY_COLOR, GL_NONE, GL_NONE));
+            }
+            break;
+        }
+
+        if(op[stage].dst == tempreg) {
+            /* If we're writing to D3DTA_TEMP, but never reading from it we don't have to write there in the first place.
+             * skip the entire stage, this saves some GPU time
+             */
+            if(tmparg == GL_NONE) continue;
+
+            dstreg = tmparg;
+        } else {
+            dstreg = GL_REG_0_ATI;
+        }
+
+        arg0 = register_for_arg(op[stage].carg0, gl_info, stage, &argmod0, &rep0, tmparg);
+        arg1 = register_for_arg(op[stage].carg1, gl_info, stage, &argmod1, &rep1, tmparg);
+        arg2 = register_for_arg(op[stage].carg2, gl_info, stage, &argmod2, &rep2, tmparg);
+        dstmod = GL_NONE;
+        argmodextra = GL_NONE;
+        extrarg = GL_NONE;
+
+        switch(op[stage].cop) {
+            case WINED3DTOP_SELECTARG2:
+                arg1 = arg2;
+                argmod1 = argmod2;
+                rep1 = rep2;
+            case WINED3DTOP_SELECTARG1:
+                TRACE("glColorFragmentOp1ATI(GL_MOV_ATI, %s, GL_NONE, GL_NONE, %s, %s, %s)\n",
+                      debug_register(dstreg), debug_register(arg1), debug_rep(rep1), debug_argmod(argmod1));
+                GL_EXTCALL(glColorFragmentOp1ATI(GL_MOV_ATI, dstreg, GL_NONE, GL_NONE,
+                                                 arg1, rep1, argmod1));
+                break;
+
+            case WINED3DTOP_MODULATE4X:
+                if(dstmod == GL_NONE) dstmod = GL_4X_BIT_ATI;
+            case WINED3DTOP_MODULATE2X:
+                if(dstmod == GL_NONE) dstmod = GL_2X_BIT_ATI;
+                dstmod |= GL_SATURATE_BIT_ATI;
+            case WINED3DTOP_MODULATE:
+                TRACE("glColorFragmentOp2ATI(GL_MUL_ATI, %s, GL_NONE, %s, %s, %s, %s, %s, %s, %s)\n",
+                      debug_register(dstreg), debug_dstmod(dstmod),
+                      debug_register(arg1), debug_rep(rep1), debug_argmod(argmod1),
+                      debug_register(arg2), debug_rep(rep2), debug_argmod(argmod2));
+                GL_EXTCALL(glColorFragmentOp2ATI(GL_MUL_ATI, dstreg, GL_NONE, dstmod,
+                                                 arg1, rep1, argmod1,
+                                                 arg2, rep2, argmod2));
+                break;
+
+            case WINED3DTOP_ADDSIGNED2X:
+                dstmod = GL_2X_BIT_ATI;
+            case WINED3DTOP_ADDSIGNED:
+                argmodextra = GL_BIAS_BIT_ATI;
+            case WINED3DTOP_ADD:
+                dstmod |= GL_SATURATE_BIT_ATI;
+                TRACE("glColorFragmentOp2ATI(GL_ADD_ATI, %s, GL_NONE, %s, %s, %s, %s, %s, %s, %s)\n",
+                      debug_register(dstreg), debug_dstmod(dstmod),
+                      debug_register(arg1), debug_rep(rep1), debug_argmod(argmod1),
+                      debug_register(arg2), debug_rep(rep2), debug_argmod(argmodextra | argmod2));
+                GL_EXTCALL(glColorFragmentOp2ATI(GL_ADD_ATI, GL_REG_0_ATI, GL_NONE, dstmod,
+                                                 arg1, rep1, argmod1,
+                                                 arg2, rep2, argmodextra | argmod2));
+                break;
+
+            case WINED3DTOP_SUBTRACT:
+                dstmod |= GL_SATURATE_BIT_ATI;
+                TRACE("glColorFragmentOp2ATI(GL_SUB_ATI, %s, GL_NONE, %s, %s, %s, %s, %s, %s, %s)\n",
+                      debug_register(dstreg), debug_dstmod(dstmod),
+                      debug_register(arg1), debug_rep(rep1), debug_argmod(argmod1),
+                      debug_register(arg2), debug_rep(rep2), debug_argmod(argmod2));
+                GL_EXTCALL(glColorFragmentOp2ATI(GL_SUB_ATI, dstreg, GL_NONE, dstmod,
+                                                 arg1, rep1, argmod1,
+                                                 arg2, rep2, argmod2));
+                break;
+
+            case WINED3DTOP_ADDSMOOTH:
+                argmodextra = argmod1 & GL_COMP_BIT_ATI ? argmod1 & ~GL_COMP_BIT_ATI : argmod1 | GL_COMP_BIT_ATI;
+                TRACE("glColorFragmentOp3ATI(GL_MAD_ATI, %s, GL_NONE, GL_SATURATE_BIT_ATI, %s, %s, %s, %s, %s, %s, %s, %s, %s)\n",
+                      debug_register(dstreg),
+                      debug_register(arg2), debug_rep(rep2), debug_argmod(argmod2),
+                      debug_register(arg1), debug_rep(rep1), debug_argmod(argmodextra),
+                      debug_register(arg1), debug_rep(rep1), debug_argmod(argmod1));
+                /* Dst = arg1 + * arg2(1 -arg 1)
+                 *     = arg2 * (1 - arg1) + arg1
+                 */
+                GL_EXTCALL(glColorFragmentOp3ATI(GL_MAD_ATI, dstreg, GL_NONE, GL_SATURATE_BIT_ATI,
+                                                 arg2, rep2, argmod2,
+                                                 arg1, rep1, argmodextra,
+                                                 arg1, rep1, argmod1));
+                break;
+
+            case WINED3DTOP_BLENDCURRENTALPHA:
+                if(extrarg == GL_NONE) extrarg = register_for_arg(WINED3DTA_CURRENT, gl_info, stage, NULL, NULL, -1);
+            case WINED3DTOP_BLENDFACTORALPHA:
+                if(extrarg == GL_NONE) extrarg = register_for_arg(WINED3DTA_TFACTOR, gl_info, stage, NULL, NULL, -1);
+            case WINED3DTOP_BLENDTEXTUREALPHA:
+                if(extrarg == GL_NONE) extrarg = register_for_arg(WINED3DTA_TEXTURE, gl_info, stage, NULL, NULL, -1);
+            case WINED3DTOP_BLENDDIFFUSEALPHA:
+                if(extrarg == GL_NONE) extrarg = register_for_arg(WINED3DTA_DIFFUSE, gl_info, stage, NULL, NULL, -1);
+                TRACE("glColorFragmentOp3ATI(GL_LERP_ATI, %s, GL_NONE, GL_NONE, %s, GL_ALPHA, GL_NONE, %s, %s, %s, %s, %s, %s)\n",
+                      debug_register(dstreg),
+                      debug_register(extrarg),
+                      debug_register(arg1), debug_rep(rep1), debug_argmod(argmod1),
+                      debug_register(arg2), debug_rep(rep2), debug_argmod(argmod2));
+                GL_EXTCALL(glColorFragmentOp3ATI(GL_LERP_ATI, dstreg, GL_NONE, GL_NONE,
+                                                 extrarg, GL_ALPHA, GL_NONE,
+                                                 arg1, rep1, argmod1,
+                                                 arg2, rep2, argmod2));
+                break;
+
+            case WINED3DTOP_BLENDTEXTUREALPHAPM:
+                arg0 = register_for_arg(WINED3DTA_TEXTURE, gl_info, stage, NULL, NULL, -1);
+                TRACE("glColorFragmentOp3ATI(GL_MAD_ATI, %s, GL_NONE, GL_NONE, %s, %s, %s, %s, GL_ALPHA, GL_COMP_BIT_ATI, %s, %s, %s)\n",
+                      debug_register(dstreg),
+                      debug_register(arg2), debug_rep(rep2), debug_argmod(argmod2),
+                      debug_register(arg0),
+                      debug_register(arg1), debug_rep(rep1), debug_argmod(argmod1));
+                GL_EXTCALL(glColorFragmentOp3ATI(GL_MAD_ATI, dstreg, GL_NONE, GL_NONE,
+                                                 arg2, rep2,  argmod2,
+                                                 arg0, GL_ALPHA, GL_COMP_BIT_ATI,
+                                                 arg1, rep1,  argmod1));
+                break;
+
+            /* D3DTOP_PREMODULATE ???? */
+
+            case WINED3DTOP_MODULATEINVALPHA_ADDCOLOR:
+                argmodextra = argmod1 & GL_COMP_BIT_ATI ? argmod1 & ~GL_COMP_BIT_ATI : argmod1 | GL_COMP_BIT_ATI;
+            case WINED3DTOP_MODULATEALPHA_ADDCOLOR:
+                if(!argmodextra) argmodextra = argmod1;
+                TRACE("glColorFragmentOp3ATI(GL_MAD_ATI, %s, GL_NONE, GL_SATURATE_BIT_ATI, %s, %s, %s, %s, GL_ALPHA, %s, %s, %s, %s)\n",
+                      debug_register(dstreg),
+                      debug_register(arg2), debug_rep(rep2), debug_argmod(argmod2),
+                      debug_register(arg1), debug_argmod(argmodextra), debug_register(arg1), debug_rep(rep1), debug_argmod(arg1));
+                GL_EXTCALL(glColorFragmentOp3ATI(GL_MAD_ATI, dstreg, GL_NONE, GL_SATURATE_BIT_ATI,
+                                                 arg2, rep2,  argmod2,
+                                                 arg1, GL_ALPHA, argmodextra,
+                                                 arg1, rep1,  argmod1));
+                break;
+
+            case WINED3DTOP_MODULATEINVCOLOR_ADDALPHA:
+                argmodextra = argmod1 & GL_COMP_BIT_ATI ? argmod1 & ~GL_COMP_BIT_ATI : argmod1 | GL_COMP_BIT_ATI;
+            case WINED3DTOP_MODULATECOLOR_ADDALPHA:
+                if(!argmodextra) argmodextra = argmod1;
+                TRACE("glColorFragmentOp3ATI(GL_MAD_ATI, %s, GL_NONE, GL_SATURATE_BIT_ATI, %s, %s, %s, %s, %s, %s, %s, GL_ALPHA, %s)\n",
+                      debug_register(dstreg),
+                      debug_register(arg2), debug_rep(rep2), debug_argmod(argmod2),
+                      debug_register(arg1), debug_rep(rep1), debug_argmod(argmodextra),
+                      debug_register(arg1), debug_argmod(argmod1));
+                GL_EXTCALL(glColorFragmentOp3ATI(GL_MAD_ATI, dstreg, GL_NONE, GL_SATURATE_BIT_ATI,
+                                                 arg2, rep2,  argmod2,
+                                                 arg1, rep1,  argmodextra,
+                                                 arg1, GL_ALPHA, argmod1));
+                break;
+
+            case WINED3DTOP_DOTPRODUCT3:
+                TRACE("glColorFragmentOp2ATI(GL_DOT3_ATI, %s, GL_NONE, GL_4X_BIT_ATI | GL_SATURATE_BIT_ATI, %s, %s, %s, %s, %s, %s)\n",
+                      debug_register(dstreg),
+                      debug_register(arg1), debug_rep(rep1), debug_argmod(argmod1 | GL_BIAS_BIT_ATI),
+                      debug_register(arg2), debug_rep(rep2), debug_argmod(argmod2 | GL_BIAS_BIT_ATI));
+                GL_EXTCALL(glColorFragmentOp2ATI(GL_DOT3_ATI, dstreg, GL_NONE, GL_4X_BIT_ATI | GL_SATURATE_BIT_ATI,
+                                                 arg1, rep1, argmod1 | GL_BIAS_BIT_ATI,
+                                                 arg2, rep2, argmod2 | GL_BIAS_BIT_ATI));
+                break;
+
+            case WINED3DTOP_MULTIPLYADD:
+                TRACE("glColorFragmentOp3ATI(GL_MAD_ATI, %s, GL_NONE, GL_SATURATE_BIT_ATI, %s, %s, %s, %s, %s, %s, %s, %s, %s)\n",
+                      debug_register(dstreg),
+                      debug_register(arg1), debug_rep(rep1), debug_argmod(argmod1),
+                      debug_register(arg2), debug_rep(rep2), debug_argmod(argmod2),
+                      debug_register(arg0), debug_rep(rep0), debug_argmod(argmod0));
+                GL_EXTCALL(glColorFragmentOp3ATI(GL_MAD_ATI, dstreg, GL_NONE, GL_SATURATE_BIT_ATI,
+                                                 arg1, rep1, argmod1,
+                                                 arg2, rep2, argmod2,
+                                                 arg0, rep0, argmod0));
+                break;
+
+            case WINED3DTOP_LERP:
+                TRACE("glColorFragmentOp3ATI(GL_LERP_ATI, %s, GL_NONE, GL_NONE, %s, %s, %s, %s, %s, %s, %s, %s, %s)\n",
+                      debug_register(dstreg),
+                      debug_register(arg1), debug_rep(rep1), debug_argmod(argmod1),
+                      debug_register(arg2), debug_rep(rep2), debug_argmod(argmod2),
+                      debug_register(arg0), debug_rep(rep0), debug_argmod(argmod0));
+                GL_EXTCALL(glColorFragmentOp3ATI(GL_LERP_ATI, dstreg, GL_NONE, GL_NONE,
+                                                 arg0, rep0, argmod0,
+                                                 arg1, rep1, argmod1,
+                                                 arg2, rep2, argmod2));
+                break;
+
+            case WINED3DTOP_BUMPENVMAP:
+            case WINED3DTOP_BUMPENVMAPLUMINANCE:
+                /* Those are handled in the first pass of the shader(generation pass 1 and 2) already */
+                break;
+
+            default: FIXME("Unhandled color operation %d on stage %d\n", op[stage].cop, stage);
+        }
+
+        arg0 = register_for_arg(op[stage].aarg0, gl_info, stage, &argmod0, NULL, tmparg);
+        arg1 = register_for_arg(op[stage].aarg1, gl_info, stage, &argmod1, NULL, tmparg);
+        arg2 = register_for_arg(op[stage].aarg2, gl_info, stage, &argmod2, NULL, tmparg);
+        dstmod = GL_NONE;
+        argmodextra = GL_NONE;
+        extrarg = GL_NONE;
+
+        switch(op[stage].aop) {
+            case WINED3DTOP_DISABLE:
+                /* Get the primary color to the output if on stage 0, otherwise leave register 0 untouched */
+                if(stage == 0) {
+                    TRACE("glAlphaFragmentOp1ATI(GL_MOV_ATI, GL_REG_0_ATI, GL_NONE, GL_PRIMARY_COLOR, GL_NONE, GL_NONE)\n");
+                    GL_EXTCALL(glAlphaFragmentOp1ATI(GL_MOV_ATI, GL_REG_0_ATI, GL_NONE,
+                               GL_PRIMARY_COLOR, GL_NONE, GL_NONE));
+                }
+                break;
+
+            case WINED3DTOP_SELECTARG2:
+                arg1 = arg2;
+                argmod1 = argmod2;
+            case WINED3DTOP_SELECTARG1:
+                TRACE("glAlphaFragmentOp1ATI(GL_MOV_ATI, %s,          GL_NONE, %s, GL_NONE, %s)\n",
+                      debug_register(dstreg),
+                      debug_register(arg1), debug_argmod(argmod1));
+                GL_EXTCALL(glAlphaFragmentOp1ATI(GL_MOV_ATI, dstreg, GL_NONE,
+                                                 arg1, GL_NONE, argmod1));
+                break;
+
+            case WINED3DTOP_MODULATE4X:
+                if(dstmod == GL_NONE) dstmod = GL_4X_BIT_ATI;
+            case WINED3DTOP_MODULATE2X:
+                if(dstmod == GL_NONE) dstmod = GL_2X_BIT_ATI;
+                dstmod |= GL_SATURATE_BIT_ATI;
+            case WINED3DTOP_MODULATE:
+                TRACE("glAlphaFragmentOp2ATI(GL_MUL_ATI, %s,          %s, %s, GL_NONE, %s, %s, GL_NONE, %s)\n",
+                      debug_register(dstreg), debug_dstmod(dstmod),
+                      debug_register(arg1), debug_argmod(argmod1),
+                      debug_register(arg2), debug_argmod(argmod2));
+                GL_EXTCALL(glAlphaFragmentOp2ATI(GL_MUL_ATI, dstreg, dstmod,
+                                                 arg1, GL_NONE, argmod1,
+                                                 arg2, GL_NONE, argmod2));
+                break;
+
+            case WINED3DTOP_ADDSIGNED2X:
+                dstmod = GL_2X_BIT_ATI;
+            case WINED3DTOP_ADDSIGNED:
+                argmodextra = GL_BIAS_BIT_ATI;
+            case WINED3DTOP_ADD:
+                dstmod |= GL_SATURATE_BIT_ATI;
+                TRACE("glAlphaFragmentOp2ATI(GL_ADD_ATI, %s,          %s, %s, GL_NONE, %s, %s, GL_NONE, %s)\n",
+                      debug_register(dstreg), debug_dstmod(dstmod),
+                      debug_register(arg1), debug_argmod(argmod1),
+                      debug_register(arg2), debug_argmod(argmodextra | argmod2));
+                GL_EXTCALL(glAlphaFragmentOp2ATI(GL_ADD_ATI, dstreg, dstmod,
+                                                 arg1, GL_NONE, argmod1,
+                                                 arg2, GL_NONE, argmodextra | argmod2));
+                break;
+
+            case WINED3DTOP_SUBTRACT:
+                dstmod |= GL_SATURATE_BIT_ATI;
+                TRACE("glAlphaFragmentOp2ATI(GL_SUB_ATI, %s, GL_NONE, %s, %s, GL_NONE, %s, %s, GL_NONE, %s)\n",
+                      debug_register(dstreg), debug_dstmod(dstmod),
+                      debug_register(arg1), debug_argmod(argmod1),
+                      debug_register(arg2), debug_argmod(argmod2));
+                GL_EXTCALL(glAlphaFragmentOp2ATI(GL_SUB_ATI, dstreg, dstmod,
+                                                 arg1, GL_NONE, argmod1,
+                                                 arg2, GL_NONE, argmod2));
+                break;
+
+            case WINED3DTOP_ADDSMOOTH:
+                argmodextra = argmod1 & GL_COMP_BIT_ATI ? argmod1 & ~GL_COMP_BIT_ATI : argmod1 | GL_COMP_BIT_ATI;
+                TRACE("glAlphaFragmentOp3ATI(GL_MAD_ATI, %s,          GL_SATURATE_BIT_ATI, %s, GL_NONE, %s, %s, GL_NONE, %s, %s, GL_NONE, %s)\n",
+                      debug_register(dstreg),
+                      debug_register(arg2), debug_argmod(argmod2),
+                      debug_register(arg1), debug_argmod(argmodextra),
+                      debug_register(arg1), debug_argmod(argmod1));
+                /* Dst = arg1 + * arg2(1 -arg 1)
+                 *     = arg2 * (1 - arg1) + arg1
+                 */
+                GL_EXTCALL(glAlphaFragmentOp3ATI(GL_MAD_ATI, dstreg, GL_SATURATE_BIT_ATI,
+                                                 arg2, GL_NONE, argmod2,
+                                                 arg1, GL_NONE, argmodextra,
+                                                 arg1, GL_NONE, argmod1));
+                break;
+
+            case WINED3DTOP_BLENDCURRENTALPHA:
+                if(extrarg == GL_NONE) extrarg = register_for_arg(WINED3DTA_CURRENT, gl_info, stage, NULL, NULL, -1);
+            case WINED3DTOP_BLENDFACTORALPHA:
+                if(extrarg == GL_NONE) extrarg = register_for_arg(WINED3DTA_TFACTOR, gl_info, stage, NULL, NULL, -1);
+            case WINED3DTOP_BLENDTEXTUREALPHA:
+                if(extrarg == GL_NONE) extrarg = register_for_arg(WINED3DTA_TEXTURE, gl_info, stage, NULL, NULL, -1);
+            case WINED3DTOP_BLENDDIFFUSEALPHA:
+                if(extrarg == GL_NONE) extrarg = register_for_arg(WINED3DTA_DIFFUSE, gl_info, stage, NULL, NULL, -1);
+                TRACE("glAlphaFragmentOp3ATI(GL_LERP_ATI, %s,          GL_NONE, %s, GL_ALPHA, GL_NONE, %s, GL_NONE, %s, %s, GL_NONE, %s)\n",
+                      debug_register(dstreg),
+                      debug_register(extrarg),
+                      debug_register(arg1), debug_argmod(argmod1),
+                      debug_register(arg2), debug_argmod(argmod2));
+                GL_EXTCALL(glAlphaFragmentOp3ATI(GL_LERP_ATI, dstreg, GL_NONE,
+                                                 extrarg, GL_ALPHA, GL_NONE,
+                                                 arg1, GL_NONE, argmod1,
+                                                 arg2, GL_NONE, argmod2));
+                break;
+
+            case WINED3DTOP_BLENDTEXTUREALPHAPM:
+                arg0 = register_for_arg(WINED3DTA_TEXTURE, gl_info, stage, NULL, NULL, -1);
+                TRACE("glAlphaFragmentOp3ATI(GL_MAD_ATI, %s,          GL_NONE, %s, GL_NONE, %s, %s, GL_ALPHA, GL_COMP_BIT_ATI, %s, GL_NONE, %s)\n",
+                      debug_register(dstreg),
+                      debug_register(arg2), debug_argmod(argmod2),
+                      debug_register(arg0),
+                      debug_register(arg1), debug_argmod(argmod1));
+                GL_EXTCALL(glAlphaFragmentOp3ATI(GL_MAD_ATI, dstreg, GL_NONE,
+                                                 arg2, GL_NONE,  argmod2,
+                                                 arg0, GL_ALPHA, GL_COMP_BIT_ATI,
+                                                 arg1, GL_NONE,  argmod1));
+                break;
+
+            /* D3DTOP_PREMODULATE ???? */
+
+            case WINED3DTOP_DOTPRODUCT3:
+                TRACE("glAlphaFragmentOp2ATI(GL_DOT3_ATI, %s,          GL_4X_BIT_ATI | GL_SATURATE_BIT_ATI, %s, GL_NONE, %s, %s, GL_NONE, %s)\n",
+                      debug_register(dstreg),
+                      debug_register(arg1), debug_argmod(argmod1 | GL_BIAS_BIT_ATI),
+                      debug_register(arg2), debug_argmod(argmod2 | GL_BIAS_BIT_ATI));
+                GL_EXTCALL(glAlphaFragmentOp2ATI(GL_DOT3_ATI, dstreg, GL_4X_BIT_ATI | GL_SATURATE_BIT_ATI,
+                                                 arg1, GL_NONE, argmod1 | GL_BIAS_BIT_ATI,
+                                                 arg2, GL_NONE, argmod2 | GL_BIAS_BIT_ATI));
+                break;
+
+            case WINED3DTOP_MULTIPLYADD:
+                TRACE("glAlphaFragmentOp3ATI(GL_MAD_ATI, %s,          GL_SATURATE_BIT_ATI, %s, GL_NONE, %s, %s, GL_NONE, %s, %s, GL_NONE, %s)\n",
+                      debug_register(dstreg),
+                      debug_register(arg1), debug_argmod(argmod1),
+                      debug_register(arg2), debug_argmod(argmod2),
+                      debug_register(arg0), debug_argmod(argmod0));
+                GL_EXTCALL(glAlphaFragmentOp3ATI(GL_MAD_ATI, dstreg,          GL_SATURATE_BIT_ATI,
+                           arg1, GL_NONE, argmod1,
+                           arg2, GL_NONE, argmod2,
+                           arg0, GL_NONE, argmod0));
+                break;
+
+            case WINED3DTOP_LERP:
+                TRACE("glAlphaFragmentOp3ATI(GL_LERP_ATI, %s,          GL_SATURATE_BIT_ATI, %s, GL_NONE, %s, %s, GL_NONE, %s, %s, GL_NONE, %s)\n",
+                      debug_register(dstreg),
+                      debug_register(arg1), debug_argmod(argmod1),
+                      debug_register(arg2), debug_argmod(argmod2),
+                      debug_register(arg0), debug_argmod(argmod0));
+                GL_EXTCALL(glAlphaFragmentOp3ATI(GL_LERP_ATI, dstreg, GL_SATURATE_BIT_ATI,
+                                                 arg1, GL_NONE, argmod1,
+                                                 arg2, GL_NONE, argmod2,
+                                                 arg0, GL_NONE, argmod0));
+                break;
+
+            case WINED3DTOP_MODULATEINVALPHA_ADDCOLOR:
+            case WINED3DTOP_MODULATEALPHA_ADDCOLOR:
+            case WINED3DTOP_MODULATECOLOR_ADDALPHA:
+            case WINED3DTOP_MODULATEINVCOLOR_ADDALPHA:
+            case WINED3DTOP_BUMPENVMAP:
+            case WINED3DTOP_BUMPENVMAPLUMINANCE:
+                ERR("Application uses an invalid alpha operation\n");
+                break;
+
+            default: FIXME("Unhandled alpha operation %d on stage %d\n", op[stage].aop, stage);
+        }
+    }
+
+    TRACE("glEndFragmentShaderATI()\n");
+    GL_EXTCALL(glEndFragmentShaderATI());
+    checkGLcall("GL_EXTCALL(glEndFragmentShaderATI())");
+    return ret;
+}
+#undef GLINFO_LOCATION
+
+#define GLINFO_LOCATION stateblock->wineD3DDevice->adapter->gl_info
+static void set_tex_op_atifs(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    IWineD3DDeviceImpl          *This = stateblock->wineD3DDevice;
+    const struct atifs_ffp_desc *desc;
+    struct ffp_frag_settings     settings;
+    struct atifs_private_data   *priv = (struct atifs_private_data *) This->fragment_priv;
+    DWORD mapped_stage;
+    unsigned int i;
+
+    gen_ffp_frag_op(stateblock, &settings, TRUE);
+    desc = (const struct atifs_ffp_desc *)find_ffp_frag_shader(priv->fragment_shaders, &settings);
+    if(!desc) {
+        struct atifs_ffp_desc *new_desc = HeapAlloc(GetProcessHeap(), 0, sizeof(*new_desc));
+        if (!new_desc)
+        {
+            ERR("Out of memory\n");
+            return;
+        }
+        new_desc->num_textures_used = 0;
+        for(i = 0; i < GL_LIMITS(texture_stages); i++) {
+            if(settings.op[i].cop == WINED3DTOP_DISABLE) break;
+            new_desc->num_textures_used = i;
+        }
+
+        memcpy(&new_desc->parent.settings, &settings, sizeof(settings));
+        new_desc->shader = gen_ati_shader(settings.op, &GLINFO_LOCATION);
+        add_ffp_frag_shader(priv->fragment_shaders, &new_desc->parent);
+        TRACE("Allocated fixed function replacement shader descriptor %p\n", new_desc);
+        desc = new_desc;
+    }
+
+    /* GL_ATI_fragment_shader depends on the GL_TEXTURE_xD enable settings. Update the texture stages
+     * used by this shader
+     */
+    for(i = 0; i < desc->num_textures_used; i++) {
+        mapped_stage = This->texUnitMap[i];
+        if(mapped_stage != -1) {
+            GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB + mapped_stage));
+            checkGLcall("glActiveTextureARB");
+            texture_activate_dimensions(i, stateblock, context);
+        }
+    }
+
+    GL_EXTCALL(glBindFragmentShaderATI(desc->shader));
+}
+
+static void state_texfactor_atifs(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    float col[4];
+    D3DCOLORTOGLFLOAT4(stateblock->renderState[WINED3DRS_TEXTUREFACTOR], col);
+
+    GL_EXTCALL(glSetFragmentShaderConstantATI(ATI_FFP_CONST_TFACTOR, col));
+    checkGLcall("glSetFragmentShaderConstantATI(ATI_FFP_CONST_TFACTOR, col)");
+}
+
+static void set_bumpmat(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    DWORD stage = (state - STATE_TEXTURESTAGE(0, 0)) / WINED3D_HIGHEST_TEXTURE_STATE;
+    float mat[2][2];
+
+    mat[0][0] = *((float *) &stateblock->textureState[stage][WINED3DTSS_BUMPENVMAT00]);
+    mat[1][0] = *((float *) &stateblock->textureState[stage][WINED3DTSS_BUMPENVMAT01]);
+    mat[0][1] = *((float *) &stateblock->textureState[stage][WINED3DTSS_BUMPENVMAT10]);
+    mat[1][1] = *((float *) &stateblock->textureState[stage][WINED3DTSS_BUMPENVMAT11]);
+    /* GL_ATI_fragment_shader allows only constants from 0.0 to 1.0, but the bumpmat
+     * constants can be in any range. While they should stay between [-1.0 and 1.0] because
+     * Shader Model 1.x pixel shaders are clamped to that range negative values are used occasionally,
+     * for example by our d3d9 test. So to get negative values scale -1;1 to 0;1 and undo that in the
+     * shader(it is free). This might potentially reduce precision. However, if the hardware does
+     * support proper floats it shouldn't, and if it doesn't we can't get anything better anyway
+     */
+    mat[0][0] = (mat[0][0] + 1.0) * 0.5;
+    mat[1][0] = (mat[1][0] + 1.0) * 0.5;
+    mat[0][1] = (mat[0][1] + 1.0) * 0.5;
+    mat[1][1] = (mat[1][1] + 1.0) * 0.5;
+    GL_EXTCALL(glSetFragmentShaderConstantATI(ATI_FFP_CONST_BUMPMAT(stage), (float *) mat));
+    checkGLcall("glSetFragmentShaderConstantATI(ATI_FFP_CONST_BUMPMAT(stage), mat)");
+}
+
+static void textransform(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(!isStateDirty(context, STATE_PIXELSHADER)) {
+        set_tex_op_atifs(state, stateblock, context);
+    }
+}
+
+#undef GLINFO_LOCATION
+
+static const struct StateEntryTemplate atifs_fragmentstate_template[] = {
+    {STATE_RENDER(WINED3DRS_TEXTUREFACTOR),               { STATE_RENDER(WINED3DRS_TEXTUREFACTOR),              state_texfactor_atifs   }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),           { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_COLORARG1),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_COLORARG2),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_COLORARG0),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAOP),           { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAARG1),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAARG2),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAARG0),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_RESULTARG),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT00),      { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT01),      { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT10),      { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT11),      { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_COLOROP),           { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_COLORARG1),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_COLORARG2),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_COLORARG0),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_ALPHAOP),           { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_ALPHAARG1),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_ALPHAARG2),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_ALPHAARG0),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_RESULTARG),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT00),      { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT01),      { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT10),      { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT11),      { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_COLOROP),           { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_COLORARG1),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_COLORARG2),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_COLORARG0),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_ALPHAOP),           { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_ALPHAARG1),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_ALPHAARG2),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_ALPHAARG0),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_RESULTARG),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT00),      { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT01),      { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT10),      { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT11),      { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_COLOROP),           { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_COLORARG1),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_COLORARG2),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_COLORARG0),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_ALPHAOP),           { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_ALPHAARG1),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_ALPHAARG2),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_ALPHAARG0),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_RESULTARG),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT00),      { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT01),      { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT10),      { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT11),      { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_COLOROP),           { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_COLORARG1),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_COLORARG2),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_COLORARG0),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_ALPHAOP),           { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_ALPHAARG1),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_ALPHAARG2),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_ALPHAARG0),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_RESULTARG),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT00),      { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT01),      { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT10),      { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT11),      { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_COLOROP),           { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_COLORARG1),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_COLORARG2),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_COLORARG0),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_ALPHAOP),           { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_ALPHAARG1),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_ALPHAARG2),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_ALPHAARG0),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_RESULTARG),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT00),      { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT01),      { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT10),      { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT11),      { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_COLOROP),           { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_COLORARG1),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_COLORARG2),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_COLORARG0),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_ALPHAOP),           { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_ALPHAARG1),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_ALPHAARG2),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_ALPHAARG0),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_RESULTARG),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT00),      { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT01),      { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT10),      { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT11),      { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_COLOROP),           { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_COLORARG1),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_COLORARG2),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_COLORARG0),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_ALPHAOP),           { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_ALPHAARG1),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_ALPHAARG2),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_ALPHAARG0),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_RESULTARG),         { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          set_tex_op_atifs        }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT00),      { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT01),      { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT10),      { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    {STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT11),      { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT00),     set_bumpmat             }, 0                               },
+    { STATE_SAMPLER(0),                                   { STATE_SAMPLER(0),                                   sampler_texdim          }, 0                               },
+    { STATE_SAMPLER(1),                                   { STATE_SAMPLER(1),                                   sampler_texdim          }, 0                               },
+    { STATE_SAMPLER(2),                                   { STATE_SAMPLER(2),                                   sampler_texdim          }, 0                               },
+    { STATE_SAMPLER(3),                                   { STATE_SAMPLER(3),                                   sampler_texdim          }, 0                               },
+    { STATE_SAMPLER(4),                                   { STATE_SAMPLER(4),                                   sampler_texdim          }, 0                               },
+    { STATE_SAMPLER(5),                                   { STATE_SAMPLER(5),                                   sampler_texdim          }, 0                               },
+    { STATE_SAMPLER(6),                                   { STATE_SAMPLER(6),                                   sampler_texdim          }, 0                               },
+    { STATE_SAMPLER(7),                                   { STATE_SAMPLER(7),                                   sampler_texdim          }, 0                               },
+    {STATE_TEXTURESTAGE(0,WINED3DTSS_TEXTURETRANSFORMFLAGS),{STATE_TEXTURESTAGE(0, WINED3DTSS_TEXTURETRANSFORMFLAGS), textransform      }, 0                               },
+    {STATE_TEXTURESTAGE(1,WINED3DTSS_TEXTURETRANSFORMFLAGS),{STATE_TEXTURESTAGE(1, WINED3DTSS_TEXTURETRANSFORMFLAGS), textransform      }, 0                               },
+    {STATE_TEXTURESTAGE(2,WINED3DTSS_TEXTURETRANSFORMFLAGS),{STATE_TEXTURESTAGE(2, WINED3DTSS_TEXTURETRANSFORMFLAGS), textransform      }, 0                               },
+    {STATE_TEXTURESTAGE(3,WINED3DTSS_TEXTURETRANSFORMFLAGS),{STATE_TEXTURESTAGE(3, WINED3DTSS_TEXTURETRANSFORMFLAGS), textransform      }, 0                               },
+    {STATE_TEXTURESTAGE(4,WINED3DTSS_TEXTURETRANSFORMFLAGS),{STATE_TEXTURESTAGE(4, WINED3DTSS_TEXTURETRANSFORMFLAGS), textransform      }, 0                               },
+    {STATE_TEXTURESTAGE(5,WINED3DTSS_TEXTURETRANSFORMFLAGS),{STATE_TEXTURESTAGE(5, WINED3DTSS_TEXTURETRANSFORMFLAGS), textransform      }, 0                               },
+    {STATE_TEXTURESTAGE(6,WINED3DTSS_TEXTURETRANSFORMFLAGS),{STATE_TEXTURESTAGE(6, WINED3DTSS_TEXTURETRANSFORMFLAGS), textransform      }, 0                               },
+    {STATE_TEXTURESTAGE(7,WINED3DTSS_TEXTURETRANSFORMFLAGS),{STATE_TEXTURESTAGE(7, WINED3DTSS_TEXTURETRANSFORMFLAGS), textransform      }, 0                               },
+    {0 /* Terminate */,                                   { 0,                                                  0                       }, 0                               },
+};
+
+static void atifs_enable(IWineD3DDevice *iface, BOOL enable) {
+    if(enable) {
+        glEnable(GL_FRAGMENT_SHADER_ATI);
+        checkGLcall("glEnable(GL_FRAGMENT_SHADER_ATI)");
+    } else {
+        glDisable(GL_FRAGMENT_SHADER_ATI);
+        checkGLcall("glDisable(GL_FRAGMENT_SHADER_ATI)");
+    }
+}
+
+static void atifs_get_caps(WINED3DDEVTYPE devtype, const WineD3D_GL_Info *gl_info, struct fragment_caps *caps)
+{
+    caps->TextureOpCaps =  WINED3DTEXOPCAPS_DISABLE                     |
+                           WINED3DTEXOPCAPS_SELECTARG1                  |
+                           WINED3DTEXOPCAPS_SELECTARG2                  |
+                           WINED3DTEXOPCAPS_MODULATE4X                  |
+                           WINED3DTEXOPCAPS_MODULATE2X                  |
+                           WINED3DTEXOPCAPS_MODULATE                    |
+                           WINED3DTEXOPCAPS_ADDSIGNED2X                 |
+                           WINED3DTEXOPCAPS_ADDSIGNED                   |
+                           WINED3DTEXOPCAPS_ADD                         |
+                           WINED3DTEXOPCAPS_SUBTRACT                    |
+                           WINED3DTEXOPCAPS_ADDSMOOTH                   |
+                           WINED3DTEXOPCAPS_BLENDCURRENTALPHA           |
+                           WINED3DTEXOPCAPS_BLENDFACTORALPHA            |
+                           WINED3DTEXOPCAPS_BLENDTEXTUREALPHA           |
+                           WINED3DTEXOPCAPS_BLENDDIFFUSEALPHA           |
+                           WINED3DTEXOPCAPS_BLENDTEXTUREALPHAPM         |
+                           WINED3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR      |
+                           WINED3DTEXOPCAPS_MODULATECOLOR_ADDALPHA      |
+                           WINED3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA   |
+                           WINED3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR   |
+                           WINED3DTEXOPCAPS_DOTPRODUCT3                 |
+                           WINED3DTEXOPCAPS_MULTIPLYADD                 |
+                           WINED3DTEXOPCAPS_LERP                        |
+                           WINED3DTEXOPCAPS_BUMPENVMAP;
+
+    /* TODO: Implement WINED3DTEXOPCAPS_BUMPENVMAPLUMINANCE
+    and WINED3DTEXOPCAPS_PREMODULATE */
+
+    /* GL_ATI_fragment_shader always supports 6 textures, which was the limit on r200 cards
+     * which this extension is exclusively focused on(later cards have GL_ARB_fragment_program).
+     * If the current card has more than 8 fixed function textures in OpenGL's regular fixed
+     * function pipeline then the ATI_fragment_shader backend imposes a stricter limit. This
+     * shouldn't be too hard since Nvidia cards have a limit of 4 textures with the default ffp
+     * pipeline, and almost all games are happy with that. We can however support up to 8
+     * texture stages because we have a 2nd pass limit of 8 instructions, and per stage we use
+     * only 1 instruction.
+     *
+     * The proper fix for this is not to use GL_ATI_fragment_shader on cards newer than the
+     * r200 series and use an ARB or GLSL shader instead
+     */
+    caps->MaxTextureBlendStages   = 8;
+    caps->MaxSimultaneousTextures = 6;
+
+    caps->PrimitiveMiscCaps |= WINED3DPMISCCAPS_TSSARGTEMP;
+}
+
+static HRESULT atifs_alloc(IWineD3DDevice *iface) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    struct atifs_private_data *priv;
+
+    This->fragment_priv = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(struct atifs_private_data));
+    if(!This->fragment_priv) {
+        ERR("Out of memory\n");
+        return E_OUTOFMEMORY;
+    }
+    priv = (struct atifs_private_data *) This->fragment_priv;
+    priv->fragment_shaders = hash_table_create(ffp_frag_program_key_hash, ffp_frag_program_key_compare);
+    return WINED3D_OK;
+}
+
+#define GLINFO_LOCATION This->adapter->gl_info
+static void atifs_free_ffpshader(void *value, void *device) {
+    IWineD3DDeviceImpl *This = device;
+    struct atifs_ffp_desc *entry_ati = value;
+
+    ENTER_GL();
+    GL_EXTCALL(glDeleteFragmentShaderATI(entry_ati->shader));
+    checkGLcall("glDeleteFragmentShaderATI(entry->shader)");
+    HeapFree(GetProcessHeap(), 0, entry_ati);
+    LEAVE_GL();
+}
+
+static void atifs_free(IWineD3DDevice *iface) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    struct atifs_private_data *priv = (struct atifs_private_data *) This->fragment_priv;
+
+    hash_table_destroy(priv->fragment_shaders, atifs_free_ffpshader, This);
+
+    HeapFree(GetProcessHeap(), 0, priv);
+    This->fragment_priv = NULL;
+}
+#undef GLINFO_LOCATION
+
+static BOOL atifs_color_fixup_supported(struct color_fixup_desc fixup)
+{
+    if (TRACE_ON(d3d_shader) && TRACE_ON(d3d))
+    {
+        TRACE("Checking support for fixup:\n");
+        dump_color_fixup_desc(fixup);
+    }
+
+    /* We only support sign fixup of the first two channels. */
+    if (fixup.x_source == CHANNEL_SOURCE_X && fixup.y_source == CHANNEL_SOURCE_Y
+            && fixup.z_source == CHANNEL_SOURCE_Z && fixup.w_source == CHANNEL_SOURCE_W
+            && !fixup.z_sign_fixup && !fixup.w_sign_fixup)
+    {
+        TRACE("[OK]\n");
+        return TRUE;
+    }
+
+    TRACE("[FAILED]\n");
+    return FALSE;
+}
+
+const struct fragment_pipeline atifs_fragment_pipeline = {
+    atifs_enable,
+    atifs_get_caps,
+    atifs_alloc,
+    atifs_free,
+    atifs_color_fixup_supported,
+    atifs_fragmentstate_template,
+    TRUE /* We can disable projected textures */
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/baseshader.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/baseshader.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/baseshader.c	(revision 16410)
@@ -0,0 +1,1243 @@
+/*
+ * shaders implementation
+ *
+ * Copyright 2002-2003 Jason Edmeades
+ * Copyright 2002-2003 Raphael Junqueira
+ * Copyright 2004 Christian Costa
+ * Copyright 2005 Oliver Stieber
+ * Copyright 2006 Ivan Gyurdiev
+ * Copyright 2007-2008 Stefan Dösinger for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include <string.h>
+#include <stdio.h>
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d_shader);
+WINE_DECLARE_DEBUG_CHANNEL(d3d);
+
+#define GLNAME_REQUIRE_GLSL  ((const char *)1)
+
+static void shader_dump_param(const DWORD param, const DWORD addr_token, int input, DWORD shader_version);
+
+static inline BOOL shader_is_version_token(DWORD token) {
+    return shader_is_pshader_version(token) ||
+           shader_is_vshader_version(token);
+}
+
+int shader_addline(
+    SHADER_BUFFER* buffer,  
+    const char *format, ...) {
+
+    char* base = buffer->buffer + buffer->bsize;
+    int rc;
+
+    va_list args;
+    va_start(args, format);
+    rc = _vsnprintf(base, SHADER_PGMSIZE - 1 - buffer->bsize, format, args);
+    va_end(args);
+
+    if (rc < 0 ||                                   /* C89 */ 
+        rc > SHADER_PGMSIZE - 1 - buffer->bsize) {  /* C99 */
+
+        ERR("The buffer allocated for the shader program string "
+            "is too small at %d bytes.\n", SHADER_PGMSIZE);
+        buffer->bsize = SHADER_PGMSIZE - 1;
+        return -1;
+    }
+
+    if (buffer->newline) {
+        TRACE("GL HW (%u, %u) : %s", buffer->lineNo + 1, buffer->bsize, base);
+        buffer->newline = FALSE;
+    } else {
+        TRACE("%s", base);
+    }
+
+    buffer->bsize += rc;
+    if (buffer->buffer[buffer->bsize-1] == '\n') {
+        buffer->lineNo++;
+        buffer->newline = TRUE;
+    }
+    return 0;
+}
+
+const SHADER_OPCODE *shader_get_opcode(const SHADER_OPCODE *opcode_table, DWORD shader_version, DWORD code)
+{
+    DWORD i = 0;
+
+    /** TODO: use dichotomic search */
+    while (opcode_table[i].name)
+    {
+        if ((code & WINED3DSI_OPCODE_MASK) == opcode_table[i].opcode
+                && shader_version >= opcode_table[i].min_version
+                && (!opcode_table[i].max_version || shader_version <= opcode_table[i].max_version))
+        {
+            return &opcode_table[i];
+        }
+        ++i;
+    }
+
+    FIXME("Unsupported opcode %#x(%d) masked %#x, shader version %#x\n",
+            code, code, code & WINED3DSI_OPCODE_MASK, shader_version);
+
+    return NULL;
+}
+
+/* Read a parameter opcode from the input stream,
+ * and possibly a relative addressing token.
+ * Return the number of tokens read */
+static int shader_get_param(IWineD3DBaseShader *iface, const DWORD *pToken, DWORD *param, DWORD *addr_token)
+{
+    /* PS >= 3.0 have relative addressing (with token)
+     * VS >= 2.0 have relative addressing (with token)
+     * VS >= 1.0 < 2.0 have relative addressing (without token)
+     * The version check below should work in general */
+
+    IWineD3DBaseShaderImpl* This = (IWineD3DBaseShaderImpl*) iface;
+    char rel_token = WINED3DSHADER_VERSION_MAJOR(This->baseShader.hex_version) >= 2 &&
+        ((*pToken & WINED3DSHADER_ADDRESSMODE_MASK) == WINED3DSHADER_ADDRMODE_RELATIVE);
+
+    *param = *pToken;
+    *addr_token = rel_token? *(pToken + 1): 0;
+    return rel_token? 2:1;
+}
+
+/* Return the number of parameters to skip for an opcode */
+static inline int shader_skip_opcode(
+    IWineD3DBaseShaderImpl* This,
+    const SHADER_OPCODE* curOpcode,
+    DWORD opcode_token) {
+
+   /* Shaders >= 2.0 may contain address tokens, but fortunately they
+    * have a useful length mask - use it here. Shaders 1.0 contain no such tokens */
+
+    return (WINED3DSHADER_VERSION_MAJOR(This->baseShader.hex_version) >= 2)?
+        ((opcode_token & WINED3DSI_INSTLENGTH_MASK) >> WINED3DSI_INSTLENGTH_SHIFT):
+        curOpcode->num_params;
+}
+
+/* Read the parameters of an unrecognized opcode from the input stream
+ * Return the number of tokens read. 
+ * 
+ * Note: This function assumes source or destination token format.
+ * It will not work with specially-formatted tokens like DEF or DCL, 
+ * but hopefully those would be recognized */
+static int shader_skip_unrecognized(IWineD3DBaseShader *iface, const DWORD *pToken)
+{
+    DWORD shader_version = ((IWineD3DBaseShaderImpl *)iface)->baseShader.hex_version;
+    int tokens_read = 0;
+    int i = 0;
+
+    /* TODO: Think of a good name for 0x80000000 and replace it with a constant */
+    while (*pToken & 0x80000000) {
+
+        DWORD param, addr_token;
+        tokens_read += shader_get_param(iface, pToken, &param, &addr_token);
+        pToken += tokens_read;
+
+        FIXME("Unrecognized opcode param: token=0x%08x "
+            "addr_token=0x%08x name=", param, addr_token);
+        shader_dump_param(param, addr_token, i, shader_version);
+        FIXME("\n");
+        ++i;
+    }
+    return tokens_read;
+}
+
+/* Convert floating point offset relative
+ * to a register file to an absolute offset for float constants */
+static unsigned int shader_get_float_offset(const DWORD reg)
+{
+     unsigned int regnum = reg & WINED3DSP_REGNUM_MASK;
+     int regtype = shader_get_regtype(reg);
+
+     switch (regtype) {
+        case WINED3DSPR_CONST: return regnum;
+        case WINED3DSPR_CONST2: return 2048 + regnum;
+        case WINED3DSPR_CONST3: return 4096 + regnum;
+        case WINED3DSPR_CONST4: return 6144 + regnum;
+        default:
+            FIXME("Unsupported register type: %d\n", regtype);
+            return regnum;
+     }
+}
+
+static void shader_delete_constant_list(struct list* clist) {
+
+    struct list *ptr;
+    struct local_constant* constant;
+
+    ptr = list_head(clist);
+    while (ptr) {
+        constant = LIST_ENTRY(ptr, struct local_constant, entry);
+        ptr = list_next(clist, ptr);
+        HeapFree(GetProcessHeap(), 0, constant);
+    }
+    list_init(clist);
+}
+
+/* Note that this does not count the loop register
+ * as an address register. */
+
+HRESULT shader_get_registers_used(
+    IWineD3DBaseShader *iface,
+    shader_reg_maps* reg_maps,
+    semantic* semantics_in,
+    semantic* semantics_out,
+    CONST DWORD* pToken,
+    IWineD3DStateBlockImpl *stateBlock) {
+
+    IWineD3DBaseShaderImpl* This = (IWineD3DBaseShaderImpl*) iface;
+    const SHADER_OPCODE *shader_ins = This->baseShader.shader_ins;
+    DWORD shader_version = This->baseShader.hex_version;
+    unsigned int cur_loop_depth = 0, max_loop_depth = 0;
+
+    /* There are some minor differences between pixel and vertex shaders */
+    char pshader = shader_is_pshader_version(This->baseShader.hex_version);
+
+    memset(reg_maps->bumpmat, 0, sizeof(reg_maps->bumpmat));
+    memset(reg_maps->luminanceparams, 0, sizeof(reg_maps->luminanceparams));
+
+    if (pToken == NULL)
+        return WINED3D_OK;
+
+    /* get_registers_used is called on every compile on some 1.x shaders, which can result
+     * in stacking up a collection of local constants. Delete the old constants if existing
+     */
+    shader_delete_constant_list(&This->baseShader.constantsF);
+    shader_delete_constant_list(&This->baseShader.constantsB);
+    shader_delete_constant_list(&This->baseShader.constantsI);
+
+    while (WINED3DVS_END() != *pToken) {
+        CONST SHADER_OPCODE* curOpcode;
+        DWORD opcode_token;
+
+        /* Skip version */
+        if (shader_is_version_token(*pToken)) {
+             ++pToken;
+             continue;
+
+        /* Skip comments */
+        } else if (shader_is_comment(*pToken)) {
+             DWORD comment_len = (*pToken & WINED3DSI_COMMENTSIZE_MASK) >> WINED3DSI_COMMENTSIZE_SHIFT;
+             ++pToken;
+             pToken += comment_len;
+             continue;
+        }
+
+        /* Fetch opcode */
+        opcode_token = *pToken++;
+        curOpcode = shader_get_opcode(shader_ins, shader_version, opcode_token);
+
+        /* Unhandled opcode, and its parameters */
+        if (NULL == curOpcode) {
+           while (*pToken & 0x80000000)
+               ++pToken;
+
+        /* Handle declarations */
+        } else if (WINED3DSIO_DCL == curOpcode->opcode) {
+
+            DWORD usage = *pToken++;
+            DWORD param = *pToken++;
+            DWORD regtype = shader_get_regtype(param);
+            unsigned int regnum = param & WINED3DSP_REGNUM_MASK;
+
+            /* Vshader: mark attributes used
+               Pshader: mark 3.0 input registers used, save token */
+            if (WINED3DSPR_INPUT == regtype) {
+
+                if (!pshader)
+                    reg_maps->attributes[regnum] = 1;
+                else
+                    reg_maps->packed_input[regnum] = 1;
+
+                semantics_in[regnum].usage = usage;
+                semantics_in[regnum].reg = param;
+
+            /* Vshader: mark 3.0 output registers used, save token */
+            } else if (WINED3DSPR_OUTPUT == regtype) {
+                reg_maps->packed_output[regnum] = 1;
+                semantics_out[regnum].usage = usage;
+                semantics_out[regnum].reg = param;
+                if (usage & (WINED3DDECLUSAGE_FOG << WINED3DSP_DCL_USAGE_SHIFT))
+                    reg_maps->fog = 1;
+
+            /* Save sampler usage token */
+            } else if (WINED3DSPR_SAMPLER == regtype)
+                reg_maps->samplers[regnum] = usage;
+
+        } else if (WINED3DSIO_DEF == curOpcode->opcode) {
+
+            local_constant* lconst = HeapAlloc(GetProcessHeap(), 0, sizeof(local_constant));
+            if (!lconst) return E_OUTOFMEMORY;
+            lconst->idx = *pToken & WINED3DSP_REGNUM_MASK;
+            memcpy(lconst->value, pToken + 1, 4 * sizeof(DWORD));
+
+            /* In pixel shader 1.X shaders, the constants are clamped between [-1;1] */
+            if(WINED3DSHADER_VERSION_MAJOR(This->baseShader.hex_version) == 1 && pshader) {
+                float *value = (float *) lconst->value;
+                if(value[0] < -1.0) value[0] = -1.0;
+                else if(value[0] >  1.0) value[0] =  1.0;
+                if(value[1] < -1.0) value[1] = -1.0;
+                else if(value[1] >  1.0) value[1] =  1.0;
+                if(value[2] < -1.0) value[2] = -1.0;
+                else if(value[2] >  1.0) value[2] =  1.0;
+                if(value[3] < -1.0) value[3] = -1.0;
+                else if(value[3] >  1.0) value[3] =  1.0;
+            }
+
+            list_add_head(&This->baseShader.constantsF, &lconst->entry);
+            pToken += curOpcode->num_params;
+
+        } else if (WINED3DSIO_DEFI == curOpcode->opcode) {
+
+            local_constant* lconst = HeapAlloc(GetProcessHeap(), 0, sizeof(local_constant));
+            if (!lconst) return E_OUTOFMEMORY;
+            lconst->idx = *pToken & WINED3DSP_REGNUM_MASK;
+            memcpy(lconst->value, pToken + 1, 4 * sizeof(DWORD));
+            list_add_head(&This->baseShader.constantsI, &lconst->entry);
+            pToken += curOpcode->num_params;
+
+        } else if (WINED3DSIO_DEFB == curOpcode->opcode) {
+
+            local_constant* lconst = HeapAlloc(GetProcessHeap(), 0, sizeof(local_constant));
+            if (!lconst) return E_OUTOFMEMORY;
+            lconst->idx = *pToken & WINED3DSP_REGNUM_MASK;
+            memcpy(lconst->value, pToken + 1, 1 * sizeof(DWORD));
+            list_add_head(&This->baseShader.constantsB, &lconst->entry);
+            pToken += curOpcode->num_params;
+
+        /* If there's a loop in the shader */
+        } else if (WINED3DSIO_LOOP == curOpcode->opcode ||
+                   WINED3DSIO_REP == curOpcode->opcode) {
+            cur_loop_depth++;
+            if(cur_loop_depth > max_loop_depth)
+                max_loop_depth = cur_loop_depth;
+            pToken += curOpcode->num_params;
+
+        } else if (WINED3DSIO_ENDLOOP == curOpcode->opcode ||
+                   WINED3DSIO_ENDREP == curOpcode->opcode) {
+            cur_loop_depth--;
+
+        /* For subroutine prototypes */
+        } else if (WINED3DSIO_LABEL == curOpcode->opcode) {
+
+            DWORD snum = *pToken & WINED3DSP_REGNUM_MASK; 
+            reg_maps->labels[snum] = 1;
+            pToken += curOpcode->num_params;
+
+        /* Set texture, address, temporary registers */
+        } else {
+            int i, limit;
+
+            /* Declare 1.X samplers implicitly, based on the destination reg. number */
+            if (WINED3DSHADER_VERSION_MAJOR(This->baseShader.hex_version) == 1 &&
+                pshader /* Filter different instructions with the same enum values in VS */ &&
+                (WINED3DSIO_TEX == curOpcode->opcode ||
+                 WINED3DSIO_TEXBEM == curOpcode->opcode ||
+                 WINED3DSIO_TEXBEML == curOpcode->opcode ||
+                 WINED3DSIO_TEXDP3TEX == curOpcode->opcode ||
+                 WINED3DSIO_TEXM3x2TEX == curOpcode->opcode ||
+                 WINED3DSIO_TEXM3x3SPEC == curOpcode->opcode ||
+                 WINED3DSIO_TEXM3x3TEX == curOpcode->opcode ||
+                 WINED3DSIO_TEXM3x3VSPEC == curOpcode->opcode ||
+                 WINED3DSIO_TEXREG2AR == curOpcode->opcode ||
+                 WINED3DSIO_TEXREG2GB == curOpcode->opcode ||
+                 WINED3DSIO_TEXREG2RGB == curOpcode->opcode)) {
+
+                /* Fake sampler usage, only set reserved bit and ttype */
+                DWORD sampler_code = *pToken & WINED3DSP_REGNUM_MASK;
+
+                if(!stateBlock->textures[sampler_code]) {
+                    ERR("No texture bound to sampler %d\n", sampler_code);
+                    reg_maps->samplers[sampler_code] = (0x1 << 31) | WINED3DSTT_2D;
+                } else {
+                    int texType = IWineD3DBaseTexture_GetTextureDimensions(stateBlock->textures[sampler_code]);
+                    switch(texType) {
+                        /* We have to select between texture rectangles and 2D textures later because 2.0 and
+                         * 3.0 shaders only have WINED3DSTT_2D as well
+                         */
+                        case GL_TEXTURE_RECTANGLE_ARB:
+                        case GL_TEXTURE_2D:
+                            reg_maps->samplers[sampler_code] = (0x1 << 31) | WINED3DSTT_2D;
+                            break;
+
+                        case GL_TEXTURE_3D:
+                            reg_maps->samplers[sampler_code] = (0x1 << 31) | WINED3DSTT_VOLUME;
+                            break;
+
+                        case GL_TEXTURE_CUBE_MAP_ARB:
+                            reg_maps->samplers[sampler_code] = (0x1 << 31) | WINED3DSTT_CUBE;
+                            break;
+
+                        default:
+                            ERR("Unexpected gl texture type found: %d\n", texType);
+                            reg_maps->samplers[sampler_code] = (0x1 << 31) | WINED3DSTT_2D;
+                    }
+                }
+
+                /* texbem is only valid with < 1.4 pixel shaders */
+                if(WINED3DSIO_TEXBEM  == curOpcode->opcode ||
+                    WINED3DSIO_TEXBEML == curOpcode->opcode) {
+                    reg_maps->bumpmat[sampler_code] = TRUE;
+                    if(WINED3DSIO_TEXBEML == curOpcode->opcode) {
+                        reg_maps->luminanceparams[sampler_code] = TRUE;
+                    }
+                }
+            }
+            if(WINED3DSIO_NRM  == curOpcode->opcode) {
+                reg_maps->usesnrm = 1;
+            } else if(WINED3DSIO_BEM == curOpcode->opcode && pshader) {
+                DWORD regnum = *pToken & WINED3DSP_REGNUM_MASK;
+                reg_maps->bumpmat[regnum] = TRUE;
+            } else if(WINED3DSIO_DSY  == curOpcode->opcode) {
+                reg_maps->usesdsy = 1;
+            }
+
+            /* This will loop over all the registers and try to
+             * make a bitmask of the ones we're interested in. 
+             *
+             * Relative addressing tokens are ignored, but that's 
+             * okay, since we'll catch any address registers when 
+             * they are initialized (required by spec) */
+
+            limit = (opcode_token & WINED3DSHADER_INSTRUCTION_PREDICATED)?
+                curOpcode->num_params + 1: curOpcode->num_params;
+
+            for (i = 0; i < limit; ++i) {
+
+                DWORD param, addr_token, reg, regtype;
+                pToken += shader_get_param(iface, pToken, &param, &addr_token);
+
+                regtype = shader_get_regtype(param);
+                reg = param & WINED3DSP_REGNUM_MASK;
+
+                if (WINED3DSPR_TEXTURE == regtype) { /* vs: WINED3DSPR_ADDR */
+
+                    if (pshader)
+                        reg_maps->texcoord[reg] = 1;
+                    else
+                        reg_maps->address[reg] = 1;
+                }
+
+                else if (WINED3DSPR_TEMP == regtype)
+                    reg_maps->temporary[reg] = 1;
+
+                else if (WINED3DSPR_INPUT == regtype) {
+                    if( !pshader)
+                        reg_maps->attributes[reg] = 1;
+                    else {
+                        if(param & WINED3DSHADER_ADDRMODE_RELATIVE) {
+                            /* If relative addressing is used, we must assume that all registers
+                             * are used. Even if it is a construct like v3[aL], we can't assume
+                             * that v0, v1 and v2 aren't read because aL can be negative
+                             */
+                            unsigned int i;
+                            for(i = 0; i < MAX_REG_INPUT; i++) {
+                                ((IWineD3DPixelShaderImpl *) This)->input_reg_used[i] = TRUE;
+                            }
+                        } else {
+                            ((IWineD3DPixelShaderImpl *) This)->input_reg_used[reg] = TRUE;
+                        }
+                    }
+                }
+
+                else if (WINED3DSPR_RASTOUT == regtype && reg == 1)
+                    reg_maps->fog = 1;
+
+                else if (WINED3DSPR_MISCTYPE == regtype && reg == 0 && pshader)
+                    reg_maps->vpos = 1;
+
+                else if(WINED3DSPR_CONST == regtype) {
+                    if(param & WINED3DSHADER_ADDRMODE_RELATIVE) {
+                        if(!pshader) {
+                            if(reg <= ((IWineD3DVertexShaderImpl *) This)->min_rel_offset) {
+                                ((IWineD3DVertexShaderImpl *) This)->min_rel_offset = reg;
+                            } else if(reg >= ((IWineD3DVertexShaderImpl *) This)->max_rel_offset) {
+                                ((IWineD3DVertexShaderImpl *) This)->max_rel_offset = reg;
+                            }
+                        }
+                        reg_maps->usesrelconstF = TRUE;
+                    }
+                }
+
+                /* WINED3DSPR_TEXCRDOUT is the same as WINED3DSPR_OUTPUT. _OUTPUT can be > MAX_REG_TEXCRD and is used
+                 * in >= 3.0 shaders. Filter 3.0 shaders to prevent overflows, and also filter pixel shaders because TECRDOUT
+                 * isn't used in them, but future register types might cause issues
+                 */
+                else if(WINED3DSPR_TEXCRDOUT == regtype && i == 0 /* Only look at writes */ &&
+                        !pshader && WINED3DSHADER_VERSION_MAJOR(This->baseShader.hex_version) < 3) {
+                    reg_maps->texcoord_mask[reg] |= shader_get_writemask(param);
+                }
+            }
+        }
+    }
+    reg_maps->loop_depth = max_loop_depth;
+
+    return WINED3D_OK;
+}
+
+static void shader_dump_decl_usage(DWORD decl, DWORD param, DWORD shader_version)
+{
+    DWORD regtype = shader_get_regtype(param);
+
+    TRACE("dcl");
+
+    if (regtype == WINED3DSPR_SAMPLER) {
+        DWORD ttype = decl & WINED3DSP_TEXTURETYPE_MASK;
+
+        switch (ttype) {
+            case WINED3DSTT_2D: TRACE("_2d"); break;
+            case WINED3DSTT_CUBE: TRACE("_cube"); break;
+            case WINED3DSTT_VOLUME: TRACE("_volume"); break;
+            default: TRACE("_unknown_ttype(0x%08x)", ttype);
+       }
+
+    } else { 
+
+        DWORD usage = decl & WINED3DSP_DCL_USAGE_MASK;
+        DWORD idx = (decl & WINED3DSP_DCL_USAGEINDEX_MASK) >> WINED3DSP_DCL_USAGEINDEX_SHIFT;
+
+        /* Pixel shaders 3.0 don't have usage semantics */
+        if (shader_is_pshader_version(shader_version) && shader_version < WINED3DPS_VERSION(3,0))
+            return;
+        else
+            TRACE("_");
+
+        switch(usage) {
+        case WINED3DDECLUSAGE_POSITION:
+            TRACE("position%d", idx);
+            break;
+        case WINED3DDECLUSAGE_BLENDINDICES:
+            TRACE("blend");
+            break;
+        case WINED3DDECLUSAGE_BLENDWEIGHT:
+            TRACE("weight");
+            break;
+        case WINED3DDECLUSAGE_NORMAL:
+            TRACE("normal%d", idx);
+            break;
+        case WINED3DDECLUSAGE_PSIZE:
+            TRACE("psize");
+            break;
+        case WINED3DDECLUSAGE_COLOR:
+            if(idx == 0)  {
+                TRACE("color");
+            } else {
+                TRACE("specular%d", (idx - 1));
+            }
+            break;
+        case WINED3DDECLUSAGE_TEXCOORD:
+            TRACE("texture%d", idx);
+            break;
+        case WINED3DDECLUSAGE_TANGENT:
+            TRACE("tangent");
+            break;
+        case WINED3DDECLUSAGE_BINORMAL:
+            TRACE("binormal");
+            break;
+        case WINED3DDECLUSAGE_TESSFACTOR:
+            TRACE("tessfactor");
+            break;
+        case WINED3DDECLUSAGE_POSITIONT:
+            TRACE("positionT%d", idx);
+            break;
+        case WINED3DDECLUSAGE_FOG:
+            TRACE("fog");
+            break;
+        case WINED3DDECLUSAGE_DEPTH:
+            TRACE("depth");
+            break;
+        case WINED3DDECLUSAGE_SAMPLE:
+            TRACE("sample");
+            break;
+        default:
+            FIXME("unknown_semantics(0x%08x)", usage);
+        }
+    }
+}
+
+static void shader_dump_arr_entry(const DWORD param, const DWORD addr_token,
+        unsigned int reg, int input, DWORD shader_version)
+{
+    char relative =
+        ((param & WINED3DSHADER_ADDRESSMODE_MASK) == WINED3DSHADER_ADDRMODE_RELATIVE);
+
+    if (relative) {
+        TRACE("[");
+        if (addr_token)
+            shader_dump_param(addr_token, 0, input, shader_version);
+        else
+            TRACE("a0.x");
+        TRACE(" + ");
+     }
+     TRACE("%u", reg);
+     if (relative)
+         TRACE("]");
+}
+
+static void shader_dump_param(const DWORD param, const DWORD addr_token, int input, DWORD shader_version)
+{
+    static const char * const rastout_reg_names[] = { "oPos", "oFog", "oPts" };
+    static const char * const misctype_reg_names[] = { "vPos", "vFace"};
+    char swizzle_reg_chars[4];
+
+    DWORD reg = param & WINED3DSP_REGNUM_MASK;
+    DWORD regtype = shader_get_regtype(param);
+    DWORD modifier = param & WINED3DSP_SRCMOD_MASK;
+
+    /* There are some minor differences between pixel and vertex shaders */
+    char pshader = shader_is_pshader_version(shader_version);
+
+    /* For one, we'd prefer color components to be shown for pshaders.
+     * FIXME: use the swizzle function for this */
+
+    swizzle_reg_chars[0] = pshader? 'r': 'x';
+    swizzle_reg_chars[1] = pshader? 'g': 'y';
+    swizzle_reg_chars[2] = pshader? 'b': 'z';
+    swizzle_reg_chars[3] = pshader? 'a': 'w';
+
+    if (input) {
+        if ( (modifier == WINED3DSPSM_NEG) ||
+             (modifier == WINED3DSPSM_BIASNEG) ||
+             (modifier == WINED3DSPSM_SIGNNEG) ||
+             (modifier == WINED3DSPSM_X2NEG) ||
+             (modifier == WINED3DSPSM_ABSNEG) )
+            TRACE("-");
+        else if (modifier == WINED3DSPSM_COMP)
+            TRACE("1-");
+        else if (modifier == WINED3DSPSM_NOT)
+            TRACE("!");
+
+        if (modifier == WINED3DSPSM_ABS || modifier == WINED3DSPSM_ABSNEG) 
+            TRACE("abs(");
+    }
+
+    switch (regtype) {
+        case WINED3DSPR_TEMP:
+            TRACE("r%u", reg);
+            break;
+        case WINED3DSPR_INPUT:
+            TRACE("v");
+            shader_dump_arr_entry(param, addr_token, reg, input, shader_version);
+            break;
+        case WINED3DSPR_CONST:
+        case WINED3DSPR_CONST2:
+        case WINED3DSPR_CONST3:
+        case WINED3DSPR_CONST4:
+            TRACE("c");
+            shader_dump_arr_entry(param, addr_token, shader_get_float_offset(param), input, shader_version);
+            break;
+        case WINED3DSPR_TEXTURE: /* vs: case D3DSPR_ADDR */
+            TRACE("%c%u", (pshader? 't':'a'), reg);
+            break;        
+        case WINED3DSPR_RASTOUT:
+            TRACE("%s", rastout_reg_names[reg]);
+            break;
+        case WINED3DSPR_COLOROUT:
+            TRACE("oC%u", reg);
+            break;
+        case WINED3DSPR_DEPTHOUT:
+            TRACE("oDepth");
+            break;
+        case WINED3DSPR_ATTROUT:
+            TRACE("oD%u", reg);
+            break;
+        case WINED3DSPR_TEXCRDOUT: 
+
+            /* Vertex shaders >= 3.0 use general purpose output registers
+             * (WINED3DSPR_OUTPUT), which can include an address token */
+
+            if (WINED3DSHADER_VERSION_MAJOR(shader_version) >= 3) {
+                TRACE("o");
+                shader_dump_arr_entry(param, addr_token, reg, input, shader_version);
+            }
+            else 
+               TRACE("oT%u", reg);
+            break;
+        case WINED3DSPR_CONSTINT:
+            TRACE("i");
+            shader_dump_arr_entry(param, addr_token, reg, input, shader_version);
+            break;
+        case WINED3DSPR_CONSTBOOL:
+            TRACE("b");
+            shader_dump_arr_entry(param, addr_token, reg, input, shader_version);
+            break;
+        case WINED3DSPR_LABEL:
+            TRACE("l%u", reg);
+            break;
+        case WINED3DSPR_LOOP:
+            TRACE("aL");
+            break;
+        case WINED3DSPR_SAMPLER:
+            TRACE("s%u", reg);
+            break;
+        case WINED3DSPR_MISCTYPE:
+            if (reg > 1) {
+                FIXME("Unhandled misctype register %d\n", reg);
+            } else {
+                TRACE("%s", misctype_reg_names[reg]);
+            }
+            break;
+        case WINED3DSPR_PREDICATE:
+            TRACE("p%u", reg);
+            break;
+        default:
+            TRACE("unhandled_rtype(%#x)", regtype);
+            break;
+   }
+
+   if (!input) {
+       /* operand output (for modifiers and shift, see dump_ins_modifiers) */
+
+       if ((param & WINED3DSP_WRITEMASK_ALL) != WINED3DSP_WRITEMASK_ALL) {
+           TRACE(".");
+           if (param & WINED3DSP_WRITEMASK_0) TRACE("%c", swizzle_reg_chars[0]);
+           if (param & WINED3DSP_WRITEMASK_1) TRACE("%c", swizzle_reg_chars[1]);
+           if (param & WINED3DSP_WRITEMASK_2) TRACE("%c", swizzle_reg_chars[2]);
+           if (param & WINED3DSP_WRITEMASK_3) TRACE("%c", swizzle_reg_chars[3]);
+       }
+
+   } else {
+        /** operand input */
+        DWORD swizzle = (param & WINED3DSP_SWIZZLE_MASK) >> WINED3DSP_SWIZZLE_SHIFT;
+        DWORD swizzle_r = swizzle & 0x03;
+        DWORD swizzle_g = (swizzle >> 2) & 0x03;
+        DWORD swizzle_b = (swizzle >> 4) & 0x03;
+        DWORD swizzle_a = (swizzle >> 6) & 0x03;
+
+        if (0 != modifier) {
+            switch (modifier) {
+                case WINED3DSPSM_NONE:    break;
+                case WINED3DSPSM_NEG:     break;
+                case WINED3DSPSM_NOT:     break;
+                case WINED3DSPSM_BIAS:    TRACE("_bias"); break;
+                case WINED3DSPSM_BIASNEG: TRACE("_bias"); break;
+                case WINED3DSPSM_SIGN:    TRACE("_bx2"); break;
+                case WINED3DSPSM_SIGNNEG: TRACE("_bx2"); break;
+                case WINED3DSPSM_COMP:    break;
+                case WINED3DSPSM_X2:      TRACE("_x2"); break;
+                case WINED3DSPSM_X2NEG:   TRACE("_x2"); break;
+                case WINED3DSPSM_DZ:      TRACE("_dz"); break;
+                case WINED3DSPSM_DW:      TRACE("_dw"); break;
+                case WINED3DSPSM_ABSNEG:  TRACE(")"); break;
+                case WINED3DSPSM_ABS:     TRACE(")"); break;
+                default:
+                    TRACE("_unknown_modifier(%#x)", modifier >> WINED3DSP_SRCMOD_SHIFT);
+            }
+        }
+
+        /**
+        * swizzle bits fields:
+        *  RRGGBBAA
+        */
+        if ((WINED3DVS_NOSWIZZLE >> WINED3DVS_SWIZZLE_SHIFT) != swizzle) {
+            if (swizzle_r == swizzle_g &&
+                swizzle_r == swizzle_b &&
+                swizzle_r == swizzle_a) {
+                    TRACE(".%c", swizzle_reg_chars[swizzle_r]);
+            } else {
+                TRACE(".%c%c%c%c",
+                swizzle_reg_chars[swizzle_r],
+                swizzle_reg_chars[swizzle_g],
+                swizzle_reg_chars[swizzle_b],
+                swizzle_reg_chars[swizzle_a]);
+            }
+        }
+    }
+}
+
+static void shader_color_correction(IWineD3DBaseShaderImpl *shader,
+        IWineD3DDeviceImpl *device, const struct SHADER_OPCODE_ARG *arg)
+{
+    DWORD hex_version = shader->baseShader.hex_version;
+    IWineD3DBaseTextureImpl *texture;
+    struct color_fixup_desc fixup;
+    BOOL recorded = FALSE;
+    DWORD sampler_idx;
+    UINT i;
+
+    switch(arg->opcode->opcode)
+    {
+        case WINED3DSIO_TEX:
+            if (hex_version < WINED3DPS_VERSION(2,0)) sampler_idx = arg->dst & WINED3DSP_REGNUM_MASK;
+            else sampler_idx = arg->src[1] & WINED3DSP_REGNUM_MASK;
+            break;
+
+        case WINED3DSIO_TEXLDL:
+            FIXME("Add color fixup for vertex texture WINED3DSIO_TEXLDL\n");
+            return;
+
+        case WINED3DSIO_TEXDP3TEX:
+        case WINED3DSIO_TEXM3x3TEX:
+        case WINED3DSIO_TEXM3x3SPEC:
+        case WINED3DSIO_TEXM3x3VSPEC:
+        case WINED3DSIO_TEXBEM:
+        case WINED3DSIO_TEXREG2AR:
+        case WINED3DSIO_TEXREG2GB:
+        case WINED3DSIO_TEXREG2RGB:
+            sampler_idx = arg->dst & WINED3DSP_REGNUM_MASK;
+            break;
+
+        default:
+            /* Not a texture sampling instruction, nothing to do */
+            return;
+    };
+
+    texture = (IWineD3DBaseTextureImpl *)device->stateBlock->textures[sampler_idx];
+    if (texture) fixup = texture->baseTexture.shader_color_fixup;
+    else fixup = COLOR_FIXUP_IDENTITY;
+
+    /* before doing anything, record the sampler with the format in the format conversion list,
+     * but check if it's not there already */
+    for (i = 0; i < shader->baseShader.num_sampled_samplers; ++i)
+    {
+        if (shader->baseShader.sampled_samplers[i] == sampler_idx)
+        {
+            recorded = TRUE;
+            break;
+        }
+    }
+
+    if (!recorded)
+    {
+        shader->baseShader.sampled_samplers[shader->baseShader.num_sampled_samplers] = sampler_idx;
+        ++shader->baseShader.num_sampled_samplers;
+    }
+
+    device->shader_backend->shader_color_correction(arg, fixup);
+}
+
+/** Shared code in order to generate the bulk of the shader string.
+    Use the shader_header_fct & shader_footer_fct to add strings
+    that are specific to pixel or vertex functions
+    NOTE: A description of how to parse tokens can be found on msdn */
+void shader_generate_main(IWineD3DBaseShader *iface, SHADER_BUFFER* buffer,
+        const shader_reg_maps* reg_maps, CONST DWORD* pFunction)
+{
+    IWineD3DBaseShaderImpl* This = (IWineD3DBaseShaderImpl*) iface;
+    IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *) This->baseShader.device; /* To access shader backend callbacks */
+    const SHADER_OPCODE *opcode_table = This->baseShader.shader_ins;
+    const SHADER_HANDLER *handler_table = device->shader_backend->shader_instruction_handler_table;
+    DWORD shader_version = This->baseShader.hex_version;
+    const DWORD *pToken = pFunction;
+    const SHADER_OPCODE *curOpcode = NULL;
+    SHADER_HANDLER hw_fct = NULL;
+    DWORD i;
+    SHADER_OPCODE_ARG hw_arg;
+
+    /* Initialize current parsing state */
+    hw_arg.shader = iface;
+    hw_arg.buffer = buffer;
+    hw_arg.reg_maps = reg_maps;
+    This->baseShader.parse_state.current_row = 0;
+
+    /* Second pass, process opcodes */
+    if (NULL != pToken) {
+        while (WINED3DPS_END() != *pToken) {
+
+            /* Skip version token */
+            if (shader_is_version_token(*pToken)) {
+                ++pToken;
+                continue;
+            }
+
+            /* Skip comment tokens */
+            if (shader_is_comment(*pToken)) {
+                DWORD comment_len = (*pToken & WINED3DSI_COMMENTSIZE_MASK) >> WINED3DSI_COMMENTSIZE_SHIFT;
+                ++pToken;
+                TRACE("#%s\n", (const char*)pToken);
+                pToken += comment_len;
+                continue;
+            }
+
+            /* Read opcode */
+            hw_arg.opcode_token = *pToken++;
+            curOpcode = shader_get_opcode(opcode_table, shader_version, hw_arg.opcode_token);
+
+            /* Select handler */
+            if (curOpcode == NULL)
+                hw_fct = NULL;
+            else
+                hw_fct = handler_table[curOpcode->handler_idx];
+
+            /* Unknown opcode and its parameters */
+            if (NULL == curOpcode) {
+                FIXME("Unrecognized opcode: token=0x%08x\n", hw_arg.opcode_token);
+                pToken += shader_skip_unrecognized(iface, pToken); 
+
+            /* Nothing to do */
+            } else if (WINED3DSIO_DCL == curOpcode->opcode ||
+                       WINED3DSIO_NOP == curOpcode->opcode ||
+                       WINED3DSIO_DEF == curOpcode->opcode ||
+                       WINED3DSIO_DEFI == curOpcode->opcode ||
+                       WINED3DSIO_DEFB == curOpcode->opcode ||
+                       WINED3DSIO_PHASE == curOpcode->opcode ||
+                       WINED3DSIO_RET == curOpcode->opcode) {
+
+                pToken += shader_skip_opcode(This, curOpcode, hw_arg.opcode_token);
+
+            /* If a generator function is set for current shader target, use it */
+            } else if (hw_fct != NULL) {
+
+                hw_arg.opcode = curOpcode;
+
+                /* Destination token */
+                if (curOpcode->dst_token) {
+
+                    DWORD param, addr_token = 0;
+                    pToken += shader_get_param(iface, pToken, &param, &addr_token);
+                    hw_arg.dst = param;
+                    hw_arg.dst_addr = addr_token;
+                }
+
+                /* Predication token */
+                if (hw_arg.opcode_token & WINED3DSHADER_INSTRUCTION_PREDICATED) 
+                    hw_arg.predicate = *pToken++;
+
+                /* Other source tokens */
+                for (i = 0; i < (curOpcode->num_params - curOpcode->dst_token); i++) {
+
+                    DWORD param, addr_token = 0; 
+                    pToken += shader_get_param(iface, pToken, &param, &addr_token);
+                    hw_arg.src[i] = param;
+                    hw_arg.src_addr[i] = addr_token;
+                }
+
+                /* Call appropriate function for output target */
+                hw_fct(&hw_arg);
+
+                /* Add color correction if needed */
+                shader_color_correction(This, device, &hw_arg);
+
+                /* Process instruction modifiers for GLSL apps ( _sat, etc. ) */
+                /* FIXME: This should be internal to the shader backend.
+                 * Also, right now this is the only reason "shader_mode" exists. */
+                if (This->baseShader.shader_mode == SHADER_GLSL)
+                    shader_glsl_add_instruction_modifiers(&hw_arg);
+
+            /* Unhandled opcode */
+            } else {
+
+                FIXME("Can't handle opcode %s in hwShader\n", curOpcode->name);
+                pToken += shader_skip_opcode(This, curOpcode, hw_arg.opcode_token);
+            }
+        }
+        /* TODO: What about result.depth? */
+
+    }
+}
+
+static void shader_dump_ins_modifiers(const DWORD output)
+{
+    DWORD shift = (output & WINED3DSP_DSTSHIFT_MASK) >> WINED3DSP_DSTSHIFT_SHIFT;
+    DWORD mmask = output & WINED3DSP_DSTMOD_MASK;
+
+    switch (shift) {
+        case 0: break;
+        case 13: TRACE("_d8"); break;
+        case 14: TRACE("_d4"); break;
+        case 15: TRACE("_d2"); break;
+        case 1: TRACE("_x2"); break;
+        case 2: TRACE("_x4"); break;
+        case 3: TRACE("_x8"); break;
+        default: TRACE("_unhandled_shift(%d)", shift); break;
+    }
+
+    if (mmask & WINED3DSPDM_SATURATE)         TRACE("_sat");
+    if (mmask & WINED3DSPDM_PARTIALPRECISION) TRACE("_pp");
+    if (mmask & WINED3DSPDM_MSAMPCENTROID)    TRACE("_centroid");
+
+    mmask &= ~(WINED3DSPDM_SATURATE | WINED3DSPDM_PARTIALPRECISION | WINED3DSPDM_MSAMPCENTROID);
+    if (mmask)
+        FIXME("_unrecognized_modifier(%#x)", mmask >> WINED3DSP_DSTMOD_SHIFT);
+}
+
+/* First pass: trace shader, initialize length and version */
+void shader_trace_init(
+    IWineD3DBaseShader *iface,
+    const DWORD* pFunction) {
+
+    IWineD3DBaseShaderImpl *This =(IWineD3DBaseShaderImpl *)iface;
+
+    const DWORD* pToken = pFunction;
+    const SHADER_OPCODE* curOpcode = NULL;
+    DWORD opcode_token;
+    unsigned int len = 0;
+    DWORD i;
+
+    TRACE("(%p) : Parsing program\n", This);
+
+    if (NULL != pToken) {
+        while (WINED3DVS_END() != *pToken) {
+            if (shader_is_version_token(*pToken)) { /** version */
+                This->baseShader.hex_version = *pToken;
+                TRACE("%s_%u_%u\n", shader_is_pshader_version(This->baseShader.hex_version)? "ps": "vs",
+                    WINED3DSHADER_VERSION_MAJOR(This->baseShader.hex_version),
+                    WINED3DSHADER_VERSION_MINOR(This->baseShader.hex_version));
+                ++pToken;
+                ++len;
+                continue;
+            }
+            if (shader_is_comment(*pToken)) { /** comment */
+                DWORD comment_len = (*pToken & WINED3DSI_COMMENTSIZE_MASK) >> WINED3DSI_COMMENTSIZE_SHIFT;
+                ++pToken;
+                TRACE("//%s\n", (const char*)pToken);
+                pToken += comment_len;
+                len += comment_len + 1;
+                continue;
+            }
+            opcode_token = *pToken++;
+            curOpcode = shader_get_opcode(This->baseShader.shader_ins, This->baseShader.hex_version, opcode_token);
+            len++;
+
+            if (NULL == curOpcode) {
+                int tokens_read;
+                FIXME("Unrecognized opcode: token=0x%08x\n", opcode_token);
+                tokens_read = shader_skip_unrecognized(iface, pToken);
+                pToken += tokens_read;
+                len += tokens_read;
+
+            } else {
+                if (curOpcode->opcode == WINED3DSIO_DCL) {
+
+                    DWORD usage = *pToken;
+                    DWORD param = *(pToken + 1);
+
+                    shader_dump_decl_usage(usage, param, This->baseShader.hex_version);
+                    shader_dump_ins_modifiers(param);
+                    TRACE(" ");
+                    shader_dump_param(param, 0, 0, This->baseShader.hex_version);
+                    pToken += 2;
+                    len += 2;
+
+                } else if (curOpcode->opcode == WINED3DSIO_DEF) {
+
+                        unsigned int offset = shader_get_float_offset(*pToken);
+
+                        TRACE("def c%u = %f, %f, %f, %f", offset,
+                            *(const float *)(pToken + 1),
+                            *(const float *)(pToken + 2),
+                            *(const float *)(pToken + 3),
+                            *(const float *)(pToken + 4));
+
+                        pToken += 5;
+                        len += 5;
+                } else if (curOpcode->opcode == WINED3DSIO_DEFI) {
+
+                        TRACE("defi i%u = %d, %d, %d, %d", *pToken & WINED3DSP_REGNUM_MASK,
+                            *(pToken + 1),
+                            *(pToken + 2),
+                            *(pToken + 3),
+                            *(pToken + 4));
+
+                        pToken += 5;
+                        len += 5;
+
+                } else if (curOpcode->opcode == WINED3DSIO_DEFB) {
+
+                        TRACE("defb b%u = %s", *pToken & WINED3DSP_REGNUM_MASK,
+                            *(pToken + 1)? "true": "false");
+
+                        pToken += 2;
+                        len += 2;
+
+                } else {
+
+                    DWORD param, addr_token;
+                    int tokens_read;
+
+                    /* Print out predication source token first - it follows
+                     * the destination token. */
+                    if (opcode_token & WINED3DSHADER_INSTRUCTION_PREDICATED) {
+                        TRACE("(");
+                        shader_dump_param(*(pToken + 2), 0, 1, This->baseShader.hex_version);
+                        TRACE(") ");
+                    }
+                    if (opcode_token & WINED3DSI_COISSUE) {
+                        /* PixWin marks instructions with the coissue flag with a '+' */
+                        TRACE("+");
+                    }
+
+                    TRACE("%s", curOpcode->name);
+
+                    if (curOpcode->opcode == WINED3DSIO_IFC ||
+                        curOpcode->opcode == WINED3DSIO_BREAKC) {
+
+                        DWORD op = (opcode_token & INST_CONTROLS_MASK) >> INST_CONTROLS_SHIFT;
+                        switch (op) {
+                            case COMPARISON_GT: TRACE("_gt"); break;
+                            case COMPARISON_EQ: TRACE("_eq"); break;
+                            case COMPARISON_GE: TRACE("_ge"); break;
+                            case COMPARISON_LT: TRACE("_lt"); break;
+                            case COMPARISON_NE: TRACE("_ne"); break;
+                            case COMPARISON_LE: TRACE("_le"); break;
+                            default:
+                                TRACE("_(%u)", op);
+                        }
+                    } else if (curOpcode->opcode == WINED3DSIO_TEX &&
+                               This->baseShader.hex_version >= WINED3DPS_VERSION(2,0)) {
+                        if(opcode_token & WINED3DSI_TEXLD_PROJECT) TRACE("p");
+                    }
+
+                    /* Destination token */
+                    if (curOpcode->dst_token) {
+
+                        /* Destination token */
+                        tokens_read = shader_get_param(iface, pToken, &param, &addr_token);
+                        pToken += tokens_read;
+                        len += tokens_read;
+
+                        shader_dump_ins_modifiers(param);
+                        TRACE(" ");
+                        shader_dump_param(param, addr_token, 0, This->baseShader.hex_version);
+                    }
+
+                    /* Predication token - already printed out, just skip it */
+                    if (opcode_token & WINED3DSHADER_INSTRUCTION_PREDICATED) {
+                        pToken++;
+                        len++;
+                    }
+
+                    /* Other source tokens */
+                    for (i = curOpcode->dst_token; i < curOpcode->num_params; ++i) {
+
+                        tokens_read = shader_get_param(iface, pToken, &param, &addr_token);
+                        pToken += tokens_read;
+                        len += tokens_read;
+
+                        TRACE((i == 0)? " " : ", ");
+                        shader_dump_param(param, addr_token, 1, This->baseShader.hex_version);
+                    }
+                }
+                TRACE("\n");
+            }
+        }
+        This->baseShader.functionLength = (len + 1) * sizeof(DWORD);
+    } else {
+        This->baseShader.functionLength = 1; /* no Function defined use fixed function vertex processing */
+    }
+}
+
+static const SHADER_HANDLER shader_none_instruction_handler_table[WINED3DSIH_TABLE_SIZE] = {0};
+static void shader_none_select(IWineD3DDevice *iface, BOOL usePS, BOOL useVS) {}
+static void shader_none_select_depth_blt(IWineD3DDevice *iface, enum tex_types tex_type) {}
+static void shader_none_deselect_depth_blt(IWineD3DDevice *iface) {}
+static void shader_none_load_constants(IWineD3DDevice *iface, char usePS, char useVS) {}
+static void shader_none_cleanup(IWineD3DDevice *iface) {}
+static void shader_none_color_correction(const struct SHADER_OPCODE_ARG *arg, struct color_fixup_desc fixup) {}
+static void shader_none_destroy(IWineD3DBaseShader *iface) {}
+static HRESULT shader_none_alloc(IWineD3DDevice *iface) {return WINED3D_OK;}
+static void shader_none_free(IWineD3DDevice *iface) {}
+static BOOL shader_none_dirty_const(IWineD3DDevice *iface) {return FALSE;}
+static GLuint shader_none_generate_pshader(IWineD3DPixelShader *iface, SHADER_BUFFER *buffer) {
+    FIXME("NONE shader backend asked to generate a pixel shader\n");
+    return 0;
+}
+static void shader_none_generate_vshader(IWineD3DVertexShader *iface, SHADER_BUFFER *buffer) {
+    FIXME("NONE shader backend asked to generate a vertex shader\n");
+}
+
+#define GLINFO_LOCATION      (*gl_info)
+static void shader_none_get_caps(WINED3DDEVTYPE devtype, const WineD3D_GL_Info *gl_info, struct shader_caps *pCaps)
+{
+    /* Set the shader caps to 0 for the none shader backend */
+    pCaps->VertexShaderVersion  = 0;
+    pCaps->PixelShaderVersion    = 0;
+    pCaps->PixelShader1xMaxValue = 0.0;
+}
+#undef GLINFO_LOCATION
+static BOOL shader_none_color_fixup_supported(struct color_fixup_desc fixup)
+{
+    if (TRACE_ON(d3d_shader) && TRACE_ON(d3d))
+    {
+        TRACE("Checking support for fixup:\n");
+        dump_color_fixup_desc(fixup);
+    }
+
+    /* Faked to make some apps happy. */
+    if (!is_yuv_fixup(fixup))
+    {
+        TRACE("[OK]\n");
+        return TRUE;
+    }
+
+    TRACE("[FAILED]\n");
+    return FALSE;
+}
+
+const shader_backend_t none_shader_backend = {
+    shader_none_instruction_handler_table,
+    shader_none_select,
+    shader_none_select_depth_blt,
+    shader_none_deselect_depth_blt,
+    shader_none_load_constants,
+    shader_none_cleanup,
+    shader_none_color_correction,
+    shader_none_destroy,
+    shader_none_alloc,
+    shader_none_free,
+    shader_none_dirty_const,
+    shader_none_generate_pshader,
+    shader_none_generate_vshader,
+    shader_none_get_caps,
+    shader_none_color_fixup_supported,
+};
+
+/* *******************************************
+   IWineD3DPixelShader IUnknown parts follow
+   ******************************************* */
+HRESULT  WINAPI IWineD3DBaseShaderImpl_QueryInterface(IWineD3DBaseShader *iface, REFIID riid, LPVOID *ppobj)
+{
+    IWineD3DBaseShaderImpl *This = (IWineD3DBaseShaderImpl *)iface;
+    TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj);
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IWineD3DBase)
+        || IsEqualGUID(riid, &IID_IWineD3DBaseShader)
+        || IsEqualGUID(riid, &IID_IWineD3DPixelShader)) {
+        IUnknown_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+ULONG  WINAPI IWineD3DBaseShaderImpl_AddRef(IWineD3DBaseShader *iface) {
+    IWineD3DPixelShaderImpl *This = (IWineD3DPixelShaderImpl *)iface;
+    TRACE("(%p) : AddRef increasing from %d\n", This, This->baseShader.ref);
+    return InterlockedIncrement(&This->baseShader.ref);
+}
+
+ULONG  WINAPI IWineD3DBaseShaderImpl_Release(IWineD3DBaseShader *iface) {
+    IWineD3DBaseShaderImpl *This = (IWineD3DBaseShaderImpl *)iface;
+    IWineD3DDeviceImpl *deviceImpl = (IWineD3DDeviceImpl *) This->baseShader.device;
+    ULONG ref;
+    TRACE("(%p) : Releasing from %d\n", This, This->baseShader.ref);
+    ref = InterlockedDecrement(&This->baseShader.ref);
+    if (ref == 0) {
+        deviceImpl->shader_backend->shader_destroy(iface);
+        HeapFree(GetProcessHeap(), 0, This->baseShader.function);
+        shader_delete_constant_list(&This->baseShader.constantsF);
+        shader_delete_constant_list(&This->baseShader.constantsB);
+        shader_delete_constant_list(&This->baseShader.constantsI);
+        list_remove(&This->baseShader.shader_list_entry);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+    return ref;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/basetexture.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/basetexture.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/basetexture.c	(revision 16410)
@@ -0,0 +1,393 @@
+/*
+ * IWineD3DBaseTexture Implementation
+ *
+ * Copyright 2002-2004 Jason Edmeades
+ * Copyright 2002-2004 Raphael Junqueira
+ * Copyright 2005 Oliver Stieber
+ * Copyright 2007-2008 Stefan Dösinger for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d_texture);
+#define GLINFO_LOCATION This->resource.wineD3DDevice->adapter->gl_info
+
+void basetexture_cleanup(IWineD3DBaseTexture *iface)
+{
+    IWineD3DBaseTextureImpl *This = (IWineD3DBaseTextureImpl *)iface;
+    IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
+
+    TRACE("(%p) : textureName(%d)\n", This, This->baseTexture.textureName);
+    if (This->baseTexture.textureName != 0) {
+        ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+        ENTER_GL();
+        TRACE("(%p) : Deleting texture %d\n", This, This->baseTexture.textureName);
+        glDeleteTextures(1, &This->baseTexture.textureName);
+        LEAVE_GL();
+    }
+
+    resource_cleanup((IWineD3DResource *)iface);
+}
+
+void basetexture_unload(IWineD3DBaseTexture *iface)
+{
+    IWineD3DTextureImpl *This = (IWineD3DTextureImpl *)iface;
+    IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
+
+    if(This->baseTexture.textureName) {
+        ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+        ENTER_GL();
+        glDeleteTextures(1, &This->baseTexture.textureName);
+        This->baseTexture.textureName = 0;
+        LEAVE_GL();
+    }
+    This->baseTexture.dirty = TRUE;
+}
+
+/* There is no OpenGL equivalent of setLOD, getLOD. All they do anyway is prioritize texture loading
+ * so just pretend that they work unless something really needs a failure. */
+DWORD basetexture_set_lod(IWineD3DBaseTexture *iface, DWORD LODNew)
+{
+    IWineD3DBaseTextureImpl *This = (IWineD3DBaseTextureImpl *)iface;
+
+    if (This->resource.pool != WINED3DPOOL_MANAGED) {
+        return  WINED3DERR_INVALIDCALL;
+    }
+
+    if(LODNew >= This->baseTexture.levels)
+        LODNew = This->baseTexture.levels - 1;
+     This->baseTexture.LOD = LODNew;
+
+    TRACE("(%p) : set bogus LOD to %d\n", This, This->baseTexture.LOD);
+
+    return This->baseTexture.LOD;
+}
+
+DWORD basetexture_get_lod(IWineD3DBaseTexture *iface)
+{
+    IWineD3DBaseTextureImpl *This = (IWineD3DBaseTextureImpl *)iface;
+
+    if (This->resource.pool != WINED3DPOOL_MANAGED) {
+        return  WINED3DERR_INVALIDCALL;
+    }
+
+    TRACE("(%p) : returning %d\n", This, This->baseTexture.LOD);
+
+    return This->baseTexture.LOD;
+}
+
+DWORD basetexture_get_level_count(IWineD3DBaseTexture *iface)
+{
+    IWineD3DBaseTextureImpl *This = (IWineD3DBaseTextureImpl *)iface;
+    TRACE("(%p) : returning %d\n", This, This->baseTexture.levels);
+    return This->baseTexture.levels;
+}
+
+HRESULT basetexture_set_autogen_filter_type(IWineD3DBaseTexture *iface, WINED3DTEXTUREFILTERTYPE FilterType)
+{
+  IWineD3DBaseTextureImpl *This = (IWineD3DBaseTextureImpl *)iface;
+  IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
+  UINT textureDimensions = IWineD3DBaseTexture_GetTextureDimensions(iface);
+
+  if (!(This->resource.usage & WINED3DUSAGE_AUTOGENMIPMAP)) {
+      TRACE("(%p) : returning invalid call\n", This);
+      return WINED3DERR_INVALIDCALL;
+  }
+  if(This->baseTexture.filterType != FilterType) {
+      /* What about multithreading? Do we want all the context overhead just to set this value?
+       * Or should we delay the applying until the texture is used for drawing? For now, apply
+       * immediately.
+       */
+      ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+      ENTER_GL();
+      glBindTexture(textureDimensions, This->baseTexture.textureName);
+      checkGLcall("glBindTexture");
+      switch(FilterType) {
+          case WINED3DTEXF_NONE:
+          case WINED3DTEXF_POINT:
+              glTexParameteri(textureDimensions, GL_GENERATE_MIPMAP_HINT_SGIS, GL_FASTEST);
+              checkGLcall("glTexParameteri(textureDimensions, GL_GENERATE_MIPMAP_HINT_SGIS, GL_FASTEST)");
+
+              break;
+          case WINED3DTEXF_LINEAR:
+              glTexParameteri(textureDimensions, GL_GENERATE_MIPMAP_HINT_SGIS, GL_NICEST);
+              checkGLcall("glTexParameteri(textureDimensions, GL_GENERATE_MIPMAP_HINT_SGIS, GL_NICEST)");
+
+              break;
+          default:
+              WARN("Unexpected filter type %d, setting to GL_NICEST\n", FilterType);
+              glTexParameteri(textureDimensions, GL_GENERATE_MIPMAP_HINT_SGIS, GL_NICEST);
+              checkGLcall("glTexParameteri(textureDimensions, GL_GENERATE_MIPMAP_HINT_SGIS, GL_NICEST)");
+      }
+      LEAVE_GL();
+  }
+  This->baseTexture.filterType = FilterType;
+  TRACE("(%p) :\n", This);
+  return WINED3D_OK;
+}
+
+WINED3DTEXTUREFILTERTYPE basetexture_get_autogen_filter_type(IWineD3DBaseTexture *iface)
+{
+  IWineD3DBaseTextureImpl *This = (IWineD3DBaseTextureImpl *)iface;
+  FIXME("(%p) : stub\n", This);
+  if (!(This->resource.usage & WINED3DUSAGE_AUTOGENMIPMAP)) {
+     return WINED3DTEXF_NONE;
+  }
+  return This->baseTexture.filterType;
+}
+
+void basetexture_generate_mipmaps(IWineD3DBaseTexture *iface)
+{
+  IWineD3DBaseTextureImpl *This = (IWineD3DBaseTextureImpl *)iface;
+  /* TODO: implement filters using GL_SGI_generate_mipmaps http://oss.sgi.com/projects/ogl-sample/registry/SGIS/generate_mipmap.txt */
+  FIXME("(%p) : stub\n", This);
+  return ;
+}
+
+BOOL basetexture_set_dirty(IWineD3DBaseTexture *iface, BOOL dirty)
+{
+    BOOL old;
+    IWineD3DBaseTextureImpl *This = (IWineD3DBaseTextureImpl *)iface;
+    old = This->baseTexture.dirty;
+    This->baseTexture.dirty = dirty;
+    return old;
+}
+
+BOOL basetexture_get_dirty(IWineD3DBaseTexture *iface)
+{
+    IWineD3DBaseTextureImpl *This = (IWineD3DBaseTextureImpl *)iface;
+    return This->baseTexture.dirty;
+}
+
+HRESULT basetexture_bind(IWineD3DBaseTexture *iface)
+{
+    IWineD3DBaseTextureImpl *This = (IWineD3DBaseTextureImpl *)iface;
+    HRESULT hr = WINED3D_OK;
+    UINT textureDimensions;
+    BOOL isNewTexture = FALSE;
+    TRACE("(%p) : About to bind texture\n", This);
+
+    textureDimensions = IWineD3DBaseTexture_GetTextureDimensions(iface);
+    ENTER_GL();
+    /* Generate a texture name if we don't already have one */
+    if (This->baseTexture.textureName == 0) {
+        glGenTextures(1, &This->baseTexture.textureName);
+        checkGLcall("glGenTextures");
+        TRACE("Generated texture %d\n", This->baseTexture.textureName);
+        if (This->resource.pool == WINED3DPOOL_DEFAULT) {
+            /* Tell opengl to try and keep this texture in video ram (well mostly) */
+            GLclampf tmp;
+            tmp = 0.9f;
+            glPrioritizeTextures(1, &This->baseTexture.textureName, &tmp);
+
+        }
+        /* Initialise the state of the texture object
+        to the openGL defaults, not the directx defaults */
+        This->baseTexture.states[WINED3DTEXSTA_ADDRESSU]      = WINED3DTADDRESS_WRAP;
+        This->baseTexture.states[WINED3DTEXSTA_ADDRESSV]      = WINED3DTADDRESS_WRAP;
+        This->baseTexture.states[WINED3DTEXSTA_ADDRESSW]      = WINED3DTADDRESS_WRAP;
+        This->baseTexture.states[WINED3DTEXSTA_BORDERCOLOR]   = 0;
+        This->baseTexture.states[WINED3DTEXSTA_MAGFILTER]     = WINED3DTEXF_LINEAR;
+        This->baseTexture.states[WINED3DTEXSTA_MINFILTER]     = WINED3DTEXF_POINT; /* GL_NEAREST_MIPMAP_LINEAR */
+        This->baseTexture.states[WINED3DTEXSTA_MIPFILTER]     = WINED3DTEXF_LINEAR; /* GL_NEAREST_MIPMAP_LINEAR */
+        This->baseTexture.states[WINED3DTEXSTA_MAXMIPLEVEL]   = 0;
+        This->baseTexture.states[WINED3DTEXSTA_MAXANISOTROPY] = 0;
+        This->baseTexture.states[WINED3DTEXSTA_SRGBTEXTURE]   = 0;
+        This->baseTexture.states[WINED3DTEXSTA_ELEMENTINDEX]  = 0;
+        This->baseTexture.states[WINED3DTEXSTA_DMAPOFFSET]    = 0;
+        This->baseTexture.states[WINED3DTEXSTA_TSSADDRESSW]   = WINED3DTADDRESS_WRAP;
+        IWineD3DBaseTexture_SetDirty(iface, TRUE);
+        isNewTexture = TRUE;
+
+        if(This->resource.usage & WINED3DUSAGE_AUTOGENMIPMAP) {
+            /* This means double binding the texture at creation, but keeps the code simpler all
+             * in all, and the run-time path free from additional checks
+             */
+            glBindTexture(textureDimensions, This->baseTexture.textureName);
+            checkGLcall("glBindTexture");
+            glTexParameteri(textureDimensions, GL_GENERATE_MIPMAP_SGIS, GL_TRUE);
+            checkGLcall("glTexParameteri(textureDimensions, GL_GENERATE_MIPMAP_SGIS, GL_TRUE)");
+        }
+    }
+
+    /* Bind the texture */
+    if (This->baseTexture.textureName != 0) {
+        glBindTexture(textureDimensions, This->baseTexture.textureName);
+        checkGLcall("glBindTexture");
+        if (isNewTexture) {
+            /* For a new texture we have to set the textures levels after binding the texture.
+             * In theory this is all we should ever have to do, but because ATI's drivers are broken, we
+             * also need to set the texture dimensions before the texture is set
+             * Beware that texture rectangles do not support mipmapping, but set the maxmiplevel if we're
+             * relying on the partial GL_ARB_texture_non_power_of_two emulation with texture rectangles
+             * (ie, do not care for cond_np2 here, just look for GL_TEXTURE_RECTANGLE_ARB)
+             */
+            if(textureDimensions != GL_TEXTURE_RECTANGLE_ARB) {
+                TRACE("Setting GL_TEXTURE_MAX_LEVEL to %d\n", This->baseTexture.levels - 1);
+                glTexParameteri(textureDimensions, GL_TEXTURE_MAX_LEVEL, This->baseTexture.levels - 1);
+                checkGLcall("glTexParameteri(textureDimensions, GL_TEXTURE_MAX_LEVEL, This->baseTexture.levels)");
+            }
+            if(textureDimensions==GL_TEXTURE_CUBE_MAP_ARB) {
+                /* Cubemaps are always set to clamp, regardless of the sampler state. */
+                glTexParameteri(textureDimensions, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+                glTexParameteri(textureDimensions, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+                glTexParameteri(textureDimensions, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
+            }
+        }
+		
+    } else { /* this only happened if we've run out of openGL textures */
+        WARN("This texture doesn't have an openGL texture assigned to it\n");
+        hr =  WINED3DERR_INVALIDCALL;
+    }
+
+    LEAVE_GL();
+    return hr;
+}
+
+static inline void apply_wrap(const GLint textureDimensions, const DWORD state, const GLint type,
+                              BOOL cond_np2) {
+    GLint wrapParm;
+
+    if (state < minLookup[WINELOOKUP_WARPPARAM] || state > maxLookup[WINELOOKUP_WARPPARAM]) {
+        FIXME("Unrecognized or unsupported WINED3DTADDRESS_U value %d\n", state);
+    } else {
+        if(textureDimensions==GL_TEXTURE_CUBE_MAP_ARB) {
+            /* Cubemaps are always set to clamp, regardless of the sampler state. */
+            wrapParm = GL_CLAMP_TO_EDGE;
+        } else if(cond_np2) {
+            if(state == WINED3DTADDRESS_WRAP) {
+                wrapParm = GL_CLAMP_TO_EDGE;
+            } else {
+                wrapParm = stateLookup[WINELOOKUP_WARPPARAM][state - minLookup[WINELOOKUP_WARPPARAM]];
+            }
+        } else {
+            wrapParm = stateLookup[WINELOOKUP_WARPPARAM][state - minLookup[WINELOOKUP_WARPPARAM]];
+        }
+        TRACE("Setting WRAP_S to %d for %x\n", wrapParm, textureDimensions);
+        glTexParameteri(textureDimensions, type, wrapParm);
+        checkGLcall("glTexParameteri(..., type, wrapParm)");
+    }
+}
+
+void basetexture_apply_state_changes(IWineD3DBaseTexture *iface,
+        const DWORD textureStates[WINED3D_HIGHEST_TEXTURE_STATE + 1],
+        const DWORD samplerStates[WINED3D_HIGHEST_SAMPLER_STATE + 1])
+{
+    IWineD3DBaseTextureImpl *This = (IWineD3DBaseTextureImpl *)iface;
+    DWORD state;
+    GLint textureDimensions = IWineD3DBaseTexture_GetTextureDimensions(iface);
+    BOOL cond_np2 = IWineD3DBaseTexture_IsCondNP2(iface);
+
+    /* ApplyStateChanges relies on the correct texture being bound and loaded. */
+
+    if(samplerStates[WINED3DSAMP_ADDRESSU]      != This->baseTexture.states[WINED3DTEXSTA_ADDRESSU]) {
+        state = samplerStates[WINED3DSAMP_ADDRESSU];
+        apply_wrap(textureDimensions, state, GL_TEXTURE_WRAP_S, cond_np2);
+        This->baseTexture.states[WINED3DTEXSTA_ADDRESSU] = state;
+    }
+
+    if(samplerStates[WINED3DSAMP_ADDRESSV]      != This->baseTexture.states[WINED3DTEXSTA_ADDRESSV]) {
+        state = samplerStates[WINED3DSAMP_ADDRESSV];
+        apply_wrap(textureDimensions, state, GL_TEXTURE_WRAP_T, cond_np2);
+        This->baseTexture.states[WINED3DTEXSTA_ADDRESSV] = state;
+    }
+
+    if(samplerStates[WINED3DSAMP_ADDRESSW]      != This->baseTexture.states[WINED3DTEXSTA_ADDRESSW]) {
+        state = samplerStates[WINED3DSAMP_ADDRESSW];
+        apply_wrap(textureDimensions, state, GL_TEXTURE_WRAP_R, cond_np2);
+        This->baseTexture.states[WINED3DTEXSTA_ADDRESSW] = state;
+    }
+
+    if(samplerStates[WINED3DSAMP_BORDERCOLOR]   != This->baseTexture.states[WINED3DTEXSTA_BORDERCOLOR]) {
+        float col[4];
+
+        state = samplerStates[WINED3DSAMP_BORDERCOLOR];
+        D3DCOLORTOGLFLOAT4(state, col);
+        TRACE("Setting border color for %u to %x\n", textureDimensions, state);
+        glTexParameterfv(textureDimensions, GL_TEXTURE_BORDER_COLOR, &col[0]);
+        checkGLcall("glTexParameteri(..., GL_TEXTURE_BORDER_COLOR, ...)");
+        This->baseTexture.states[WINED3DTEXSTA_BORDERCOLOR] = state;
+    }
+
+    if(samplerStates[WINED3DSAMP_MAGFILTER]     != This->baseTexture.states[WINED3DTEXSTA_MAGFILTER]) {
+        GLint glValue;
+        state = samplerStates[WINED3DSAMP_MAGFILTER];
+        if (state > WINED3DTEXF_ANISOTROPIC) {
+            FIXME("Unrecognized or unsupported MAGFILTER* value %d\n", state);
+        } else {
+            glValue = This->baseTexture.magLookup[state - WINED3DTEXF_NONE];
+            TRACE("ValueMAG=%d setting MAGFILTER to %x\n", state, glValue);
+            glTexParameteri(textureDimensions, GL_TEXTURE_MAG_FILTER, glValue);
+            /* We need to reset the Anisotropic filtering state when we change the mag filter to WINED3DTEXF_ANISOTROPIC (this seems a bit weird, check the documentation to see how it should be switched off. */
+            if (GL_SUPPORT(EXT_TEXTURE_FILTER_ANISOTROPIC) && WINED3DTEXF_ANISOTROPIC == state &&
+                !cond_np2) {
+                glTexParameteri(textureDimensions, GL_TEXTURE_MAX_ANISOTROPY_EXT, samplerStates[WINED3DSAMP_MAXANISOTROPY]);
+            }
+            This->baseTexture.states[WINED3DTEXSTA_MAGFILTER] = state;
+        }
+    }
+
+    if((samplerStates[WINED3DSAMP_MINFILTER]     != This->baseTexture.states[WINED3DTEXSTA_MINFILTER] ||
+        samplerStates[WINED3DSAMP_MIPFILTER]     != This->baseTexture.states[WINED3DTEXSTA_MIPFILTER] ||
+        samplerStates[WINED3DSAMP_MAXMIPLEVEL]   != This->baseTexture.states[WINED3DTEXSTA_MAXMIPLEVEL])) {
+        GLint glValue;
+
+        This->baseTexture.states[WINED3DTEXSTA_MIPFILTER] = samplerStates[WINED3DSAMP_MIPFILTER];
+        This->baseTexture.states[WINED3DTEXSTA_MINFILTER] = samplerStates[WINED3DSAMP_MINFILTER];
+        This->baseTexture.states[WINED3DTEXSTA_MAXMIPLEVEL] = samplerStates[WINED3DSAMP_MAXMIPLEVEL];
+
+        if (This->baseTexture.states[WINED3DTEXSTA_MINFILTER] > WINED3DTEXF_ANISOTROPIC ||
+            This->baseTexture.states[WINED3DTEXSTA_MIPFILTER] > WINED3DTEXF_LINEAR)
+        {
+
+            FIXME("Unrecognized or unsupported D3DSAMP_MINFILTER value %d D3DSAMP_MIPFILTER value %d\n",
+                  This->baseTexture.states[WINED3DTEXSTA_MINFILTER],
+                  This->baseTexture.states[WINED3DTEXSTA_MIPFILTER]);
+        }
+        glValue = This->baseTexture.minMipLookup
+                [min(max(samplerStates[WINED3DSAMP_MINFILTER],WINED3DTEXF_NONE), WINED3DTEXF_ANISOTROPIC)]
+                .mip[min(max(samplerStates[WINED3DSAMP_MIPFILTER],WINED3DTEXF_NONE), WINED3DTEXF_LINEAR)];
+
+        TRACE("ValueMIN=%d, ValueMIP=%d, setting MINFILTER to %x\n",
+              samplerStates[WINED3DSAMP_MINFILTER],
+              samplerStates[WINED3DSAMP_MIPFILTER], glValue);
+        glTexParameteri(textureDimensions, GL_TEXTURE_MIN_FILTER, glValue);
+        checkGLcall("glTexParameter GL_TEXTURE_MIN_FILTER, ...");
+
+        if(!cond_np2) {
+            if(This->baseTexture.states[WINED3DTEXSTA_MIPFILTER] == WINED3DTEXF_NONE) {
+                glValue = 0;
+            } else if(This->baseTexture.states[WINED3DTEXSTA_MAXMIPLEVEL] >= This->baseTexture.levels) {
+                glValue = This->baseTexture.levels - 1;
+            } else {
+                glValue = This->baseTexture.states[WINED3DTEXSTA_MAXMIPLEVEL];
+            }
+            glTexParameteri(textureDimensions, GL_TEXTURE_BASE_LEVEL, glValue);
+        }
+    }
+
+    if(samplerStates[WINED3DSAMP_MAXANISOTROPY] != This->baseTexture.states[WINED3DTEXSTA_MAXANISOTROPY]) {
+        if (GL_SUPPORT(EXT_TEXTURE_FILTER_ANISOTROPIC) && !cond_np2) {
+            glTexParameteri(textureDimensions, GL_TEXTURE_MAX_ANISOTROPY_EXT, samplerStates[WINED3DSAMP_MAXANISOTROPY]);
+            checkGLcall("glTexParameteri GL_TEXTURE_MAX_ANISOTROPY_EXT ...");
+        } else {
+            WARN("Unsupported in local OpenGL implementation: glTexParameteri GL_TEXTURE_MAX_ANISOTROPY_EXT\n");
+        }
+        This->baseTexture.states[WINED3DTEXSTA_MAXANISOTROPY] = samplerStates[WINED3DSAMP_MAXANISOTROPY];
+    }
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/clipper.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/clipper.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/clipper.c	(revision 16410)
@@ -0,0 +1,204 @@
+/* IWineD3DClipper implementation
+ *
+ * Copyright 2000 (c) Marcus Meissner
+ * Copyright 2000 (c) TransGaming Technologies Inc.
+ * Copyright 2006 (c) Stefan Dösinger
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include <stdio.h>
+#ifdef HAVE_FLOAT_H
+# include <float.h>
+#endif
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d);
+
+static HRESULT WINAPI IWineD3DClipperImpl_QueryInterface(IWineD3DClipper *iface, REFIID riid, void **Obj)
+{
+    IWineD3DClipperImpl *This = (IWineD3DClipperImpl *)iface;
+
+    TRACE("(%p)->(%p,%p)\n", This, riid, Obj);
+    if (IsEqualGUID(&IID_IUnknown, riid)
+        || IsEqualGUID(&IID_IWineD3DClipper, riid))
+    {
+        *Obj = iface;
+        IWineD3DClipper_AddRef(iface);
+        return S_OK;
+    }
+    else
+    {
+        return E_NOINTERFACE;
+    }
+}
+
+static ULONG WINAPI IWineD3DClipperImpl_AddRef(IWineD3DClipper *iface )
+{
+    IWineD3DClipperImpl *This = (IWineD3DClipperImpl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p)->() incrementing from %u.\n", This, ref - 1);
+
+    return ref;
+}
+
+static ULONG WINAPI IWineD3DClipperImpl_Release(IWineD3DClipper *iface)
+{
+    IWineD3DClipperImpl *This = (IWineD3DClipperImpl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p)->() decrementing from %u.\n", This, ref + 1);
+
+    if (ref == 0)
+    {
+        HeapFree(GetProcessHeap(), 0, This);
+        return 0;
+    }
+    else return ref;
+}
+
+static HRESULT WINAPI IWineD3DClipperImpl_GetParent(IWineD3DClipper *iface, IUnknown **Parent)
+{
+    IWineD3DClipperImpl *This = (IWineD3DClipperImpl *)iface;
+    TRACE("(%p)->(%p)\n", This, Parent);
+
+    *Parent = This->Parent;
+    IUnknown_AddRef(*Parent);
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DClipperImpl_SetHwnd(IWineD3DClipper *iface, DWORD Flags, HWND hWnd)
+{
+    IWineD3DClipperImpl *This = (IWineD3DClipperImpl *)iface;
+
+    TRACE("(%p)->(0x%08x,%p)\n", This, Flags, hWnd);
+    if( Flags )
+    {
+        FIXME("Flags = 0x%08x, not supported.\n",Flags);
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    This->hWnd = hWnd;
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DClipperImpl_GetClipList(IWineD3DClipper *iface, const RECT *Rect,
+        RGNDATA *ClipList, DWORD *Size)
+{
+    IWineD3DClipperImpl *This = (IWineD3DClipperImpl *)iface;
+    TRACE("(%p,%p,%p,%p)\n", This, Rect, ClipList, Size);
+
+    if (This->hWnd)
+    {
+        HDC hDC = GetDCEx(This->hWnd, NULL, DCX_WINDOW);
+        if (hDC)
+        {
+            HRGN hRgn = CreateRectRgn(0,0,0,0);
+            if (GetRandomRgn(hDC, hRgn, SYSRGN))
+            {
+                if (GetVersion() & 0x80000000)
+                {
+                    /* map region to screen coordinates */
+                    POINT org;
+                    GetDCOrgEx( hDC, &org );
+                    OffsetRgn( hRgn, org.x, org.y );
+                }
+                if (Rect)
+                {
+                    HRGN hRgnClip = CreateRectRgn(Rect->left, Rect->top,
+                        Rect->right, Rect->bottom);
+                    CombineRgn(hRgn, hRgn, hRgnClip, RGN_AND);
+                    DeleteObject(hRgnClip);
+                }
+                *Size = GetRegionData(hRgn, *Size, ClipList);
+            }
+            DeleteObject(hRgn);
+            ReleaseDC(This->hWnd, hDC);
+        }
+        return WINED3D_OK;
+    }
+    else
+    {
+        static int warned = 0;
+        if (warned++ < 10)
+            FIXME("(%p,%p,%p,%p),stub!\n",This,Rect,ClipList,Size);
+        if (Size) *Size=0;
+        return WINEDDERR_NOCLIPLIST;
+    }
+}
+
+static HRESULT WINAPI IWineD3DClipperImpl_SetClipList(IWineD3DClipper *iface, const RGNDATA *rgn, DWORD Flags)
+{
+    IWineD3DClipperImpl *This = (IWineD3DClipperImpl *)iface;
+    static int warned = 0;
+
+    if (warned++ < 10 || rgn == NULL)
+        FIXME("(%p,%p,%d),stub!\n",This,rgn,Flags);
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DClipperImpl_GetHwnd(IWineD3DClipper *iface, HWND *hwnd)
+{
+    IWineD3DClipperImpl *This = (IWineD3DClipperImpl *)iface;
+    TRACE("(%p)->(%p)\n", This, hwnd);
+
+    *hwnd = This->hWnd;
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DClipperImpl_IsClipListChanged(IWineD3DClipper *iface, BOOL *changed)
+{
+    IWineD3DClipperImpl *This = (IWineD3DClipperImpl *)iface;
+    FIXME("(%p)->(%p),stub!\n",This,changed);
+
+    /* XXX What is safest? */
+    *changed = FALSE;
+
+    return WINED3D_OK;
+}
+
+static const IWineD3DClipperVtbl IWineD3DClipper_Vtbl =
+{
+    IWineD3DClipperImpl_QueryInterface,
+    IWineD3DClipperImpl_AddRef,
+    IWineD3DClipperImpl_Release,
+    IWineD3DClipperImpl_GetParent,
+    IWineD3DClipperImpl_GetClipList,
+    IWineD3DClipperImpl_GetHwnd,
+    IWineD3DClipperImpl_IsClipListChanged,
+    IWineD3DClipperImpl_SetClipList,
+    IWineD3DClipperImpl_SetHwnd
+};
+
+IWineD3DClipper* WINAPI WineDirect3DCreateClipper(IUnknown *Parent)
+{
+    IWineD3DClipperImpl *obj;
+
+    TRACE("Creating clipper, parent %p\n", Parent);
+    obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*obj));
+    if(!obj)
+    {
+        ERR("Out of memory when trying to allocate a WineD3D Clipper\n");
+        return NULL;
+    }
+
+    obj->lpVtbl = &IWineD3DClipper_Vtbl;
+    obj->Parent = Parent;
+
+    IWineD3DClipper_AddRef((IWineD3DClipper *)obj);
+    return (IWineD3DClipper *) obj;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/config.log
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/config.log	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/config.log	(revision 16410)
@@ -0,0 +1,12232 @@
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by Wine configure 1.1.10, which was
+generated by GNU Autoconf 2.63.  Invocation command line was
+
+  $ ../../configure --without-glu --without-x --disable-tests
+
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = llp
+uname -m = i686
+uname -r = 1.5.24(0.156/4/2)
+uname -s = CYGWIN_NT-5.1
+uname -v = 2007-01-31 10:57
+
+/usr/bin/uname -p = unknown
+/bin/uname -X     = unknown
+
+/bin/arch              = i686
+/usr/bin/arch -k       = unknown
+/usr/convex/getsysinfo = unknown
+/usr/bin/hostinfo      = unknown
+/bin/machine           = unknown
+/usr/bin/oslevel       = unknown
+/bin/universe          = unknown
+
+PATH: /usr/local/bin
+PATH: /usr/bin
+PATH: /bin
+PATH: /usr/X11R6/bin
+PATH: /cygdrive/c/Sun/vbox/kBuild/bin/win.x86/
+PATH: $PATH
+PATH: /cygdrive/c/Sun/Python25
+PATH: /cygdrive/c/Sun/vbox/tools/win.x86/vcc/v7/bin
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+configure:2285: checking build system type
+configure:2303: result: i686-pc-cygwin
+configure:2325: checking host system type
+configure:2340: result: i686-pc-cygwin
+configure:2419: checking whether make sets $(MAKE)
+configure:2441: result: yes
+configure:2498: checking for gcc
+configure:2528: result: no
+configure:2591: checking for cc
+configure:2638: result: no
+configure:2694: checking for cl.exe
+configure:2710: found /cygdrive/c/Sun/vbox/tools/win.x86/vcc/v7/bin/cl.exe
+configure:2721: result: cl.exe
+configure:2757: checking for C compiler version
+configure:2765: cl.exe --version >&5
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '--version'
+cl : Command line error D2003 : missing source filename
+configure:2769: $? = 2
+configure:2776: cl.exe -v >&5
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-v'
+cl : Command line error D2003 : missing source filename
+configure:2780: $? = 2
+configure:2787: cl.exe -V >&5
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line error D2004 : '/V' requires an argument
+configure:2791: $? = 2
+configure:2814: checking for C compiler default output file name
+configure:2836: cl.exe    conftest.c  >&5
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+Microsoft (R) Incremental Linker Version 7.10.3077
+Copyright (C) Microsoft Corporation.  All rights reserved.
+
+/out:conftest.exe 
+conftest.obj 
+configure:2840: $? = 0
+configure:2878: result: conftest.exe
+configure:2897: checking whether the C compiler works
+configure:2907: ./conftest.exe
+configure:2911: $? = 0
+configure:2930: result: yes
+configure:2937: checking whether we are cross compiling
+configure:2939: result: no
+configure:2942: checking for suffix of executables
+configure:2949: cl.exe -o conftest.exe    conftest.c  >&5
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+Microsoft (R) Incremental Linker Version 7.10.3077
+Copyright (C) Microsoft Corporation.  All rights reserved.
+
+/out:conftest.exe 
+/out:conftest.exe 
+conftest.obj 
+configure:2953: $? = 0
+configure:2979: result: .exe
+configure:2985: checking for suffix of object files
+configure:3011: cl.exe -c   conftest.c >&5
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+configure:3015: $? = 0
+configure:3040: result: obj
+configure:3044: checking whether we are using the GNU C compiler
+configure:3073: cl.exe -c   conftest.c >&5
+conftest.c
+conftest.c(13) : error C2065: 'choke' : undeclared identifier
+conftest.c(13) : error C2146: syntax error : missing ';' before identifier 'me'
+conftest.c(13) : error C2144: syntax error : '<Unknown>' should be preceded by '<Unknown>'
+conftest.c(13) : error C2144: syntax error : '<Unknown>' should be preceded by '<Unknown>'
+conftest.c(13) : error C2143: syntax error : missing ';' before 'identifier'
+conftest.c(16) : error C2065: 'me' : undeclared identifier
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+configure:3080: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| /* end confdefs.h.  */
+| 
+| int
+| main ()
+| {
+| #ifndef __GNUC__
+|        choke me
+| #endif
+| 
+|   ;
+|   return 0;
+| }
+configure:3097: result: no
+configure:3106: checking whether cl.exe accepts -g
+configure:3136: cl.exe -c -g  conftest.c >&5
+conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:3143: $? = 0
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| /* end confdefs.h.  */
+| 
+| int
+| main ()
+| {
+| 
+|   ;
+|   return 0;
+| }
+configure:3175: cl.exe -c   conftest.c >&5
+conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+configure:3182: $? = 0
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| /* end confdefs.h.  */
+| 
+| int
+| main ()
+| {
+| 
+|   ;
+|   return 0;
+| }
+configure:3215: cl.exe -c -g  conftest.c >&5
+conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:3222: $? = 0
+configure:3244: result: yes
+configure:3261: checking for cl.exe option to accept ISO C89
+configure:3335: cl.exe  -c -g  conftest.c >&5
+conftest.c
+conftest.c(54) : warning C4113: 'char *(__cdecl *)()' differs in parameter lists from 'char *(__cdecl *)(char ** ,int)'
+conftest.c(54) : warning C4113: 'char *(__cdecl *)()' differs in parameter lists from 'char *(__cdecl *)(char ** ,int)'
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:3342: $? = 0
+configure:3365: result: none needed
+configure:3441: checking for g++
+configure:3471: result: no
+configure:3441: checking for c++
+configure:3471: result: no
+configure:3441: checking for gpp
+configure:3471: result: no
+configure:3441: checking for aCC
+configure:3471: result: no
+configure:3441: checking for CC
+configure:3471: result: no
+configure:3441: checking for cxx
+configure:3471: result: no
+configure:3441: checking for cc++
+configure:3471: result: no
+configure:3441: checking for cl.exe
+configure:3457: found /cygdrive/c/Sun/vbox/tools/win.x86/vcc/v7/bin/cl.exe
+configure:3468: result: cl.exe
+configure:3495: checking for C++ compiler version
+configure:3503: cl.exe --version >&5
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '--version'
+cl : Command line error D2003 : missing source filename
+configure:3507: $? = 2
+configure:3514: cl.exe -v >&5
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-v'
+cl : Command line error D2003 : missing source filename
+configure:3518: $? = 2
+configure:3525: cl.exe -V >&5
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line error D2004 : '/V' requires an argument
+configure:3529: $? = 2
+configure:3532: checking whether we are using the GNU C++ compiler
+configure:3561: cl.exe -c   conftest.cpp >&5
+conftest.cpp
+conftest.cpp(16) : error C2065: 'choke' : undeclared identifier
+conftest.cpp(16) : error C2146: syntax error : missing ';' before identifier 'me'
+conftest.cpp(16) : error C2065: 'me' : undeclared identifier
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+configure:3568: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| /* end confdefs.h.  */
+| 
+| int
+| main ()
+| {
+| #ifndef __GNUC__
+|        choke me
+| #endif
+| 
+|   ;
+|   return 0;
+| }
+configure:3585: result: no
+configure:3594: checking whether cl.exe accepts -g
+configure:3624: cl.exe -c -g  conftest.cpp >&5
+conftest.cpp
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:3631: $? = 0
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| /* end confdefs.h.  */
+| 
+| int
+| main ()
+| {
+| 
+|   ;
+|   return 0;
+| }
+configure:3663: cl.exe -c   conftest.cpp >&5
+conftest.cpp
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+configure:3670: $? = 0
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| /* end confdefs.h.  */
+| 
+| int
+| main ()
+| {
+| 
+|   ;
+|   return 0;
+| }
+configure:3703: cl.exe -c -g  conftest.cpp >&5
+conftest.cpp
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:3710: $? = 0
+configure:3732: result: yes
+configure:3798: checking for cpp
+configure:3828: result: no
+configure:3848: checking for the directory containing the Wine tools
+configure:3872: result: $(TOPOBJDIR)
+configure:3883: checking how to run the C preprocessor
+configure:3923: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+configure:3930: $? = 0
+configure:3961: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(8) : fatal error C1083: Cannot open include file: 'ac_nonexistent.h': No such file or directory
+configure:3968: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| /* end confdefs.h.  */
+| #include <ac_nonexistent.h>
+configure:4001: result: cl.exe -E
+configure:4030: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+configure:4037: $? = 0
+configure:4068: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(8) : fatal error C1083: Cannot open include file: 'ac_nonexistent.h': No such file or directory
+configure:4075: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| /* end confdefs.h.  */
+| #include <ac_nonexistent.h>
+configure:4115: checking for X
+configure:4344: result: disabled
+configure:5499: checking for flex
+configure:5515: found /usr/bin/flex
+configure:5526: result: flex
+configure:5549: checking for bison
+configure:5565: found /usr/bin/bison
+configure:5576: result: bison
+configure:5644: checking for gas
+configure:5674: result: no
+configure:5644: checking for as
+configure:5674: result: no
+configure:5744: checking for ld
+configure:5774: result: no
+configure:5744: checking for gld
+configure:5774: result: no
+configure:5844: checking for nm
+configure:5874: result: no
+configure:5844: checking for gnm
+configure:5874: result: no
+configure:5944: checking for ar
+configure:5974: result: no
+configure:5944: checking for gar
+configure:5974: result: no
+configure:6040: checking for ranlib
+configure:6070: result: no
+configure:6132: checking for strip
+configure:6162: result: no
+configure:6224: checking for windres
+configure:6254: result: no
+configure:6273: checking whether ln -s works
+configure:6277: result: yes
+configure:6284: checking whether ln works
+configure:6291: result: yes
+configure:6300: checking for grep that handles long lines and -e
+configure:6360: result: /usr/bin/grep
+configure:6365: checking for egrep
+configure:6429: result: /usr/bin/grep -E
+configure:6436: checking for ldconfig
+configure:6467: result: true
+configure:6489: checking for a BSD-compatible install
+configure:6557: result: /usr/bin/install -c
+configure:6577: checking for lclint
+configure:6607: result: no
+configure:6577: checking for lint
+configure:6607: result: no
+configure:6626: checking for fontforge
+configure:6656: result: no
+configure:6669: checking for pkg-config
+configure:6699: result: no
+configure:6712: checking for rsvg
+configure:6742: result: no
+configure:6755: checking for icotool
+configure:6785: result: no
+configure:6806: checking for prelink
+configure:6837: result: false
+configure:6850: checking for i386_set_ldt in -li386
+configure:6885: cl.exe -o conftest.exe -g   conftest.c -li386   >&5
+conftest.c
+Microsoft (R) Incremental Linker Version 7.10.3077
+Copyright (C) Microsoft Corporation.  All rights reserved.
+
+/out:conftest.exe 
+/out:conftest.exe 
+conftest.obj 
+conftest.obj : error LNK2019: unresolved external symbol _i386_set_ldt referenced in function _main
+conftest.exe : fatal error LNK1120: 1 unresolved externals
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+cl : Command line warning D4002 : ignoring unknown option '-li386'
+configure:6892: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| /* end confdefs.h.  */
+| 
+| /* Override any GCC internal prototype to avoid an error.
+|    Use char because int might match the return type of a GCC
+|    builtin and then its argument prototype would still apply.  */
+| #ifdef __cplusplus
+| extern "C"
+| #endif
+| char i386_set_ldt ();
+| int
+| main ()
+| {
+| return i386_set_ldt ();
+|   ;
+|   return 0;
+| }
+configure:6913: result: no
+configure:6925: checking for _oss_ioctl in -lossaudio
+configure:6960: cl.exe -o conftest.exe -g   conftest.c -lossaudio   >&5
+conftest.c
+Microsoft (R) Incremental Linker Version 7.10.3077
+Copyright (C) Microsoft Corporation.  All rights reserved.
+
+/out:conftest.exe 
+/out:conftest.exe 
+conftest.obj 
+conftest.obj : error LNK2019: unresolved external symbol __oss_ioctl referenced in function _main
+conftest.exe : fatal error LNK1120: 1 unresolved externals
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+cl : Command line warning D4002 : ignoring unknown option '-lossaudio'
+configure:6967: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| /* end confdefs.h.  */
+| 
+| /* Override any GCC internal prototype to avoid an error.
+|    Use char because int might match the return type of a GCC
+|    builtin and then its argument prototype would still apply.  */
+| #ifdef __cplusplus
+| extern "C"
+| #endif
+| char _oss_ioctl ();
+| int
+| main ()
+| {
+| return _oss_ioctl ();
+|   ;
+|   return 0;
+| }
+configure:6988: result: no
+configure:6999: checking for pthread_create in -lpthread
+configure:7034: cl.exe -o conftest.exe -g   conftest.c -lpthread   >&5
+conftest.c
+Microsoft (R) Incremental Linker Version 7.10.3077
+Copyright (C) Microsoft Corporation.  All rights reserved.
+
+/out:conftest.exe 
+/out:conftest.exe 
+conftest.obj 
+conftest.obj : error LNK2019: unresolved external symbol _pthread_create referenced in function _main
+conftest.exe : fatal error LNK1120: 1 unresolved externals
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+cl : Command line warning D4002 : ignoring unknown option '-lpthread'
+configure:7041: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| /* end confdefs.h.  */
+| 
+| /* Override any GCC internal prototype to avoid an error.
+|    Use char because int might match the return type of a GCC
+|    builtin and then its argument prototype would still apply.  */
+| #ifdef __cplusplus
+| extern "C"
+| #endif
+| char pthread_create ();
+| int
+| main ()
+| {
+| return pthread_create ();
+|   ;
+|   return 0;
+| }
+configure:7062: result: no
+configure:7076: checking for ANSI C header files
+configure:7106: cl.exe -c -g  conftest.c >&5
+conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7113: $? = 0
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+configure:7212: cl.exe -o conftest.exe -g   conftest.c  >&5
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+conftest.c
+Microsoft (R) Incremental Linker Version 7.10.3077
+Copyright (C) Microsoft Corporation.  All rights reserved.
+
+/out:conftest.exe 
+/out:conftest.exe 
+conftest.obj 
+configure:7216: $? = 0
+configure:7222: ./conftest.exe
+configure:7226: $? = 0
+configure:7244: result: yes
+configure:7268: checking for sys/types.h
+configure:7289: cl.exe -c -g  conftest.c >&5
+conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7296: $? = 0
+configure:7313: result: yes
+configure:7268: checking for sys/stat.h
+configure:7289: cl.exe -c -g  conftest.c >&5
+conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7296: $? = 0
+configure:7313: result: yes
+configure:7268: checking for stdlib.h
+configure:7289: cl.exe -c -g  conftest.c >&5
+conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7296: $? = 0
+configure:7313: result: yes
+configure:7268: checking for string.h
+configure:7289: cl.exe -c -g  conftest.c >&5
+conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7296: $? = 0
+configure:7313: result: yes
+configure:7268: checking for memory.h
+configure:7289: cl.exe -c -g  conftest.c >&5
+conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7296: $? = 0
+configure:7313: result: yes
+configure:7268: checking for strings.h
+configure:7289: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(49) : fatal error C1083: Cannot open include file: 'strings.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7296: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| 
+| #include <strings.h>
+configure:7313: result: no
+configure:7268: checking for inttypes.h
+configure:7289: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(49) : fatal error C1083: Cannot open include file: 'inttypes.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7296: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| 
+| #include <inttypes.h>
+configure:7313: result: no
+configure:7268: checking for stdint.h
+configure:7289: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(49) : fatal error C1083: Cannot open include file: 'stdint.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7296: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| 
+| #include <stdint.h>
+configure:7313: result: no
+configure:7268: checking for unistd.h
+configure:7289: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(49) : fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7296: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| 
+| #include <unistd.h>
+configure:7313: result: no
+configure:7567: checking AudioUnit/AudioUnit.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(48) : fatal error C1083: Cannot open include file: 'AudioUnit/AudioUnit.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <AudioUnit/AudioUnit.h>
+configure:7605: result: no
+configure:7609: checking AudioUnit/AudioUnit.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(15) : fatal error C1083: Cannot open include file: 'AudioUnit/AudioUnit.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <AudioUnit/AudioUnit.h>
+configure:7645: result: no
+configure:7678: checking for AudioUnit/AudioUnit.h
+configure:7687: result: no
+configure:7567: checking Carbon/Carbon.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(48) : fatal error C1083: Cannot open include file: 'Carbon/Carbon.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <Carbon/Carbon.h>
+configure:7605: result: no
+configure:7609: checking Carbon/Carbon.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(15) : fatal error C1083: Cannot open include file: 'Carbon/Carbon.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <Carbon/Carbon.h>
+configure:7645: result: no
+configure:7678: checking for Carbon/Carbon.h
+configure:7687: result: no
+configure:7567: checking CoreAudio/CoreAudio.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(48) : fatal error C1083: Cannot open include file: 'CoreAudio/CoreAudio.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <CoreAudio/CoreAudio.h>
+configure:7605: result: no
+configure:7609: checking CoreAudio/CoreAudio.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(15) : fatal error C1083: Cannot open include file: 'CoreAudio/CoreAudio.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <CoreAudio/CoreAudio.h>
+configure:7645: result: no
+configure:7678: checking for CoreAudio/CoreAudio.h
+configure:7687: result: no
+configure:7567: checking DiskArbitration/DiskArbitration.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(48) : fatal error C1083: Cannot open include file: 'DiskArbitration/DiskArbitration.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <DiskArbitration/DiskArbitration.h>
+configure:7605: result: no
+configure:7609: checking DiskArbitration/DiskArbitration.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(15) : fatal error C1083: Cannot open include file: 'DiskArbitration/DiskArbitration.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <DiskArbitration/DiskArbitration.h>
+configure:7645: result: no
+configure:7678: checking for DiskArbitration/DiskArbitration.h
+configure:7687: result: no
+configure:7567: checking IOKit/IOKitLib.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(48) : fatal error C1083: Cannot open include file: 'IOKit/IOKitLib.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <IOKit/IOKitLib.h>
+configure:7605: result: no
+configure:7609: checking IOKit/IOKitLib.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(15) : fatal error C1083: Cannot open include file: 'IOKit/IOKitLib.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <IOKit/IOKitLib.h>
+configure:7645: result: no
+configure:7678: checking for IOKit/IOKitLib.h
+configure:7687: result: no
+configure:7567: checking alias.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(48) : fatal error C1083: Cannot open include file: 'alias.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <alias.h>
+configure:7605: result: no
+configure:7609: checking alias.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(15) : fatal error C1083: Cannot open include file: 'alias.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <alias.h>
+configure:7645: result: no
+configure:7678: checking for alias.h
+configure:7687: result: no
+configure:7567: checking alsa/asoundlib.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(48) : fatal error C1083: Cannot open include file: 'alsa/asoundlib.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <alsa/asoundlib.h>
+configure:7605: result: no
+configure:7609: checking alsa/asoundlib.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(15) : fatal error C1083: Cannot open include file: 'alsa/asoundlib.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <alsa/asoundlib.h>
+configure:7645: result: no
+configure:7678: checking for alsa/asoundlib.h
+configure:7687: result: no
+configure:7567: checking arpa/inet.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(48) : fatal error C1083: Cannot open include file: 'arpa/inet.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <arpa/inet.h>
+configure:7605: result: no
+configure:7609: checking arpa/inet.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(15) : fatal error C1083: Cannot open include file: 'arpa/inet.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <arpa/inet.h>
+configure:7645: result: no
+configure:7678: checking for arpa/inet.h
+configure:7687: result: no
+configure:7567: checking arpa/nameser.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(48) : fatal error C1083: Cannot open include file: 'arpa/nameser.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <arpa/nameser.h>
+configure:7605: result: no
+configure:7609: checking arpa/nameser.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(15) : fatal error C1083: Cannot open include file: 'arpa/nameser.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <arpa/nameser.h>
+configure:7645: result: no
+configure:7678: checking for arpa/nameser.h
+configure:7687: result: no
+configure:7567: checking asm/types.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(48) : fatal error C1083: Cannot open include file: 'asm/types.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <asm/types.h>
+configure:7605: result: no
+configure:7609: checking asm/types.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(15) : fatal error C1083: Cannot open include file: 'asm/types.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <asm/types.h>
+configure:7645: result: no
+configure:7678: checking for asm/types.h
+configure:7687: result: no
+configure:7567: checking capi20.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(48) : fatal error C1083: Cannot open include file: 'capi20.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <capi20.h>
+configure:7605: result: no
+configure:7609: checking capi20.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(15) : fatal error C1083: Cannot open include file: 'capi20.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <capi20.h>
+configure:7645: result: no
+configure:7678: checking for capi20.h
+configure:7687: result: no
+configure:7567: checking curses.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(48) : fatal error C1083: Cannot open include file: 'curses.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <curses.h>
+configure:7605: result: no
+configure:7609: checking curses.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(15) : fatal error C1083: Cannot open include file: 'curses.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| /* end confdefs.h.  */
+| #include <curses.h>
+configure:7645: result: no
+configure:7678: checking for curses.h
+configure:7687: result: no
+configure:7567: checking direct.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 0
+configure:7605: result: yes
+configure:7609: checking direct.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+configure:7631: $? = 0
+configure:7645: result: yes
+configure:7678: checking for direct.h
+configure:7687: result: yes
+configure:7567: checking dirent.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(49) : fatal error C1083: Cannot open include file: 'dirent.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <dirent.h>
+configure:7605: result: no
+configure:7609: checking dirent.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(16) : fatal error C1083: Cannot open include file: 'dirent.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| /* end confdefs.h.  */
+| #include <dirent.h>
+configure:7645: result: no
+configure:7678: checking for dirent.h
+configure:7687: result: no
+configure:7567: checking dlfcn.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(49) : fatal error C1083: Cannot open include file: 'dlfcn.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <dlfcn.h>
+configure:7605: result: no
+configure:7609: checking dlfcn.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(16) : fatal error C1083: Cannot open include file: 'dlfcn.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| /* end confdefs.h.  */
+| #include <dlfcn.h>
+configure:7645: result: no
+configure:7678: checking for dlfcn.h
+configure:7687: result: no
+configure:7567: checking elf.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(49) : fatal error C1083: Cannot open include file: 'elf.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <elf.h>
+configure:7605: result: no
+configure:7609: checking elf.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(16) : fatal error C1083: Cannot open include file: 'elf.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| /* end confdefs.h.  */
+| #include <elf.h>
+configure:7645: result: no
+configure:7678: checking for elf.h
+configure:7687: result: no
+configure:7567: checking float.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 0
+configure:7605: result: yes
+configure:7609: checking float.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+configure:7631: $? = 0
+configure:7645: result: yes
+configure:7678: checking for float.h
+configure:7687: result: yes
+configure:7567: checking fontconfig/fontconfig.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(50) : fatal error C1083: Cannot open include file: 'fontconfig/fontconfig.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <fontconfig/fontconfig.h>
+configure:7605: result: no
+configure:7609: checking fontconfig/fontconfig.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(17) : fatal error C1083: Cannot open include file: 'fontconfig/fontconfig.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| /* end confdefs.h.  */
+| #include <fontconfig/fontconfig.h>
+configure:7645: result: no
+configure:7678: checking for fontconfig/fontconfig.h
+configure:7687: result: no
+configure:7567: checking getopt.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(50) : fatal error C1083: Cannot open include file: 'getopt.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <getopt.h>
+configure:7605: result: no
+configure:7609: checking getopt.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(17) : fatal error C1083: Cannot open include file: 'getopt.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| /* end confdefs.h.  */
+| #include <getopt.h>
+configure:7645: result: no
+configure:7678: checking for getopt.h
+configure:7687: result: no
+configure:7567: checking ieeefp.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(50) : fatal error C1083: Cannot open include file: 'ieeefp.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <ieeefp.h>
+configure:7605: result: no
+configure:7609: checking ieeefp.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(17) : fatal error C1083: Cannot open include file: 'ieeefp.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| /* end confdefs.h.  */
+| #include <ieeefp.h>
+configure:7645: result: no
+configure:7678: checking for ieeefp.h
+configure:7687: result: no
+configure:7567: checking io.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 0
+configure:7605: result: yes
+configure:7609: checking io.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+configure:7631: $? = 0
+configure:7645: result: yes
+configure:7678: checking for io.h
+configure:7687: result: yes
+configure:7567: checking jack/jack.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'jack/jack.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <jack/jack.h>
+configure:7605: result: no
+configure:7609: checking jack/jack.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'jack/jack.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <jack/jack.h>
+configure:7645: result: no
+configure:7678: checking for jack/jack.h
+configure:7687: result: no
+configure:7567: checking jpeglib.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'jpeglib.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <jpeglib.h>
+configure:7605: result: no
+configure:7609: checking jpeglib.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'jpeglib.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <jpeglib.h>
+configure:7645: result: no
+configure:7678: checking for jpeglib.h
+configure:7687: result: no
+configure:7567: checking lber.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'lber.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <lber.h>
+configure:7605: result: no
+configure:7609: checking lber.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'lber.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <lber.h>
+configure:7645: result: no
+configure:7678: checking for lber.h
+configure:7687: result: no
+configure:7567: checking lcms.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'lcms.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <lcms.h>
+configure:7605: result: no
+configure:7609: checking lcms.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'lcms.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <lcms.h>
+configure:7645: result: no
+configure:7678: checking for lcms.h
+configure:7687: result: no
+configure:7567: checking lcms/lcms.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'lcms/lcms.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <lcms/lcms.h>
+configure:7605: result: no
+configure:7609: checking lcms/lcms.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'lcms/lcms.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <lcms/lcms.h>
+configure:7645: result: no
+configure:7678: checking for lcms/lcms.h
+configure:7687: result: no
+configure:7567: checking ldap.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'ldap.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <ldap.h>
+configure:7605: result: no
+configure:7609: checking ldap.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'ldap.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <ldap.h>
+configure:7645: result: no
+configure:7678: checking for ldap.h
+configure:7687: result: no
+configure:7567: checking libaudioio.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'libaudioio.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <libaudioio.h>
+configure:7605: result: no
+configure:7609: checking libaudioio.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'libaudioio.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <libaudioio.h>
+configure:7645: result: no
+configure:7678: checking for libaudioio.h
+configure:7687: result: no
+configure:7567: checking link.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'link.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <link.h>
+configure:7605: result: no
+configure:7609: checking link.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'link.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <link.h>
+configure:7645: result: no
+configure:7678: checking for link.h
+configure:7687: result: no
+configure:7567: checking linux/cdrom.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'linux/cdrom.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <linux/cdrom.h>
+configure:7605: result: no
+configure:7609: checking linux/cdrom.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'linux/cdrom.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <linux/cdrom.h>
+configure:7645: result: no
+configure:7678: checking for linux/cdrom.h
+configure:7687: result: no
+configure:7567: checking linux/compiler.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'linux/compiler.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <linux/compiler.h>
+configure:7605: result: no
+configure:7609: checking linux/compiler.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'linux/compiler.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <linux/compiler.h>
+configure:7645: result: no
+configure:7678: checking for linux/compiler.h
+configure:7687: result: no
+configure:7567: checking linux/hdreg.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'linux/hdreg.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <linux/hdreg.h>
+configure:7605: result: no
+configure:7609: checking linux/hdreg.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'linux/hdreg.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <linux/hdreg.h>
+configure:7645: result: no
+configure:7678: checking for linux/hdreg.h
+configure:7687: result: no
+configure:7567: checking linux/input.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'linux/input.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <linux/input.h>
+configure:7605: result: no
+configure:7609: checking linux/input.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'linux/input.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <linux/input.h>
+configure:7645: result: no
+configure:7678: checking for linux/input.h
+configure:7687: result: no
+configure:7567: checking linux/ioctl.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'linux/ioctl.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <linux/ioctl.h>
+configure:7605: result: no
+configure:7609: checking linux/ioctl.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'linux/ioctl.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <linux/ioctl.h>
+configure:7645: result: no
+configure:7678: checking for linux/ioctl.h
+configure:7687: result: no
+configure:7567: checking linux/joystick.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'linux/joystick.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <linux/joystick.h>
+configure:7605: result: no
+configure:7609: checking linux/joystick.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'linux/joystick.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <linux/joystick.h>
+configure:7645: result: no
+configure:7678: checking for linux/joystick.h
+configure:7687: result: no
+configure:7567: checking linux/major.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'linux/major.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <linux/major.h>
+configure:7605: result: no
+configure:7609: checking linux/major.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'linux/major.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <linux/major.h>
+configure:7645: result: no
+configure:7678: checking for linux/major.h
+configure:7687: result: no
+configure:7567: checking linux/param.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'linux/param.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <linux/param.h>
+configure:7605: result: no
+configure:7609: checking linux/param.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'linux/param.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <linux/param.h>
+configure:7645: result: no
+configure:7678: checking for linux/param.h
+configure:7687: result: no
+configure:7567: checking linux/serial.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'linux/serial.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <linux/serial.h>
+configure:7605: result: no
+configure:7609: checking linux/serial.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'linux/serial.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <linux/serial.h>
+configure:7645: result: no
+configure:7678: checking for linux/serial.h
+configure:7687: result: no
+configure:7567: checking linux/ucdrom.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'linux/ucdrom.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <linux/ucdrom.h>
+configure:7605: result: no
+configure:7609: checking linux/ucdrom.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'linux/ucdrom.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <linux/ucdrom.h>
+configure:7645: result: no
+configure:7678: checking for linux/ucdrom.h
+configure:7687: result: no
+configure:7567: checking mach/mach.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'mach/mach.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <mach/mach.h>
+configure:7605: result: no
+configure:7609: checking mach/mach.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'mach/mach.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <mach/mach.h>
+configure:7645: result: no
+configure:7678: checking for mach/mach.h
+configure:7687: result: no
+configure:7567: checking mach/machine.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'mach/machine.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <mach/machine.h>
+configure:7605: result: no
+configure:7609: checking mach/machine.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'mach/machine.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <mach/machine.h>
+configure:7645: result: no
+configure:7678: checking for mach/machine.h
+configure:7687: result: no
+configure:7567: checking machine/cpu.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'machine/cpu.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <machine/cpu.h>
+configure:7605: result: no
+configure:7609: checking machine/cpu.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'machine/cpu.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <machine/cpu.h>
+configure:7645: result: no
+configure:7678: checking for machine/cpu.h
+configure:7687: result: no
+configure:7567: checking machine/limits.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'machine/limits.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <machine/limits.h>
+configure:7605: result: no
+configure:7609: checking machine/limits.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'machine/limits.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <machine/limits.h>
+configure:7645: result: no
+configure:7678: checking for machine/limits.h
+configure:7687: result: no
+configure:7567: checking machine/soundcard.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'machine/soundcard.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <machine/soundcard.h>
+configure:7605: result: no
+configure:7609: checking machine/soundcard.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'machine/soundcard.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <machine/soundcard.h>
+configure:7645: result: no
+configure:7678: checking for machine/soundcard.h
+configure:7687: result: no
+configure:7567: checking mntent.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'mntent.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <mntent.h>
+configure:7605: result: no
+configure:7609: checking mntent.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'mntent.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <mntent.h>
+configure:7645: result: no
+configure:7678: checking for mntent.h
+configure:7687: result: no
+configure:7567: checking ncurses.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'ncurses.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <ncurses.h>
+configure:7605: result: no
+configure:7609: checking ncurses.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'ncurses.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <ncurses.h>
+configure:7645: result: no
+configure:7678: checking for ncurses.h
+configure:7687: result: no
+configure:7567: checking netdb.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'netdb.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <netdb.h>
+configure:7605: result: no
+configure:7609: checking netdb.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'netdb.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <netdb.h>
+configure:7645: result: no
+configure:7678: checking for netdb.h
+configure:7687: result: no
+configure:7567: checking netinet/in.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'netinet/in.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <netinet/in.h>
+configure:7605: result: no
+configure:7609: checking netinet/in.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'netinet/in.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <netinet/in.h>
+configure:7645: result: no
+configure:7678: checking for netinet/in.h
+configure:7687: result: no
+configure:7567: checking netinet/in_systm.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'netinet/in_systm.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <netinet/in_systm.h>
+configure:7605: result: no
+configure:7609: checking netinet/in_systm.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'netinet/in_systm.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <netinet/in_systm.h>
+configure:7645: result: no
+configure:7678: checking for netinet/in_systm.h
+configure:7687: result: no
+configure:7567: checking netinet/tcp.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'netinet/tcp.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <netinet/tcp.h>
+configure:7605: result: no
+configure:7609: checking netinet/tcp.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'netinet/tcp.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <netinet/tcp.h>
+configure:7645: result: no
+configure:7678: checking for netinet/tcp.h
+configure:7687: result: no
+configure:7567: checking netinet/tcp_fsm.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'netinet/tcp_fsm.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <netinet/tcp_fsm.h>
+configure:7605: result: no
+configure:7609: checking netinet/tcp_fsm.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'netinet/tcp_fsm.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <netinet/tcp_fsm.h>
+configure:7645: result: no
+configure:7678: checking for netinet/tcp_fsm.h
+configure:7687: result: no
+configure:7567: checking openssl/err.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'openssl/err.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <openssl/err.h>
+configure:7605: result: no
+configure:7609: checking openssl/err.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'openssl/err.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <openssl/err.h>
+configure:7645: result: no
+configure:7678: checking for openssl/err.h
+configure:7687: result: no
+configure:7567: checking openssl/ssl.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'openssl/ssl.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <openssl/ssl.h>
+configure:7605: result: no
+configure:7609: checking openssl/ssl.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'openssl/ssl.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <openssl/ssl.h>
+configure:7645: result: no
+configure:7678: checking for openssl/ssl.h
+configure:7687: result: no
+configure:7567: checking png.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'png.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <png.h>
+configure:7605: result: no
+configure:7609: checking png.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'png.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <png.h>
+configure:7645: result: no
+configure:7678: checking for png.h
+configure:7687: result: no
+configure:7567: checking poll.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(51) : fatal error C1083: Cannot open include file: 'poll.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <poll.h>
+configure:7605: result: no
+configure:7609: checking poll.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(18) : fatal error C1083: Cannot open include file: 'poll.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| /* end confdefs.h.  */
+| #include <poll.h>
+configure:7645: result: no
+configure:7678: checking for poll.h
+configure:7687: result: no
+configure:7567: checking process.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 0
+configure:7605: result: yes
+configure:7609: checking process.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+configure:7631: $? = 0
+configure:7645: result: yes
+configure:7678: checking for process.h
+configure:7687: result: yes
+configure:7567: checking pthread.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'pthread.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <pthread.h>
+configure:7605: result: no
+configure:7609: checking pthread.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'pthread.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <pthread.h>
+configure:7645: result: no
+configure:7678: checking for pthread.h
+configure:7687: result: no
+configure:7567: checking pwd.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'pwd.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <pwd.h>
+configure:7605: result: no
+configure:7609: checking pwd.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'pwd.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <pwd.h>
+configure:7645: result: no
+configure:7678: checking for pwd.h
+configure:7687: result: no
+configure:7567: checking regex.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'regex.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <regex.h>
+configure:7605: result: no
+configure:7609: checking regex.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'regex.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <regex.h>
+configure:7645: result: no
+configure:7678: checking for regex.h
+configure:7687: result: no
+configure:7567: checking sched.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sched.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sched.h>
+configure:7605: result: no
+configure:7609: checking sched.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sched.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sched.h>
+configure:7645: result: no
+configure:7678: checking for sched.h
+configure:7687: result: no
+configure:7567: checking scsi/scsi.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'scsi/scsi.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <scsi/scsi.h>
+configure:7605: result: no
+configure:7609: checking scsi/scsi.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'scsi/scsi.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <scsi/scsi.h>
+configure:7645: result: no
+configure:7678: checking for scsi/scsi.h
+configure:7687: result: no
+configure:7567: checking scsi/scsi_ioctl.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'scsi/scsi_ioctl.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <scsi/scsi_ioctl.h>
+configure:7605: result: no
+configure:7609: checking scsi/scsi_ioctl.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'scsi/scsi_ioctl.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <scsi/scsi_ioctl.h>
+configure:7645: result: no
+configure:7678: checking for scsi/scsi_ioctl.h
+configure:7687: result: no
+configure:7567: checking scsi/sg.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'scsi/sg.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <scsi/sg.h>
+configure:7605: result: no
+configure:7609: checking scsi/sg.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'scsi/sg.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <scsi/sg.h>
+configure:7645: result: no
+configure:7678: checking for scsi/sg.h
+configure:7687: result: no
+configure:7567: checking soundcard.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'soundcard.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <soundcard.h>
+configure:7605: result: no
+configure:7609: checking soundcard.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'soundcard.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <soundcard.h>
+configure:7645: result: no
+configure:7678: checking for soundcard.h
+configure:7687: result: no
+configure:7556: checking for stdint.h
+configure:7563: result: no
+configure:7556: checking for strings.h
+configure:7563: result: no
+configure:7567: checking sys/asoundlib.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/asoundlib.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/asoundlib.h>
+configure:7605: result: no
+configure:7609: checking sys/asoundlib.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/asoundlib.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/asoundlib.h>
+configure:7645: result: no
+configure:7678: checking for sys/asoundlib.h
+configure:7687: result: no
+configure:7567: checking sys/cdio.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/cdio.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/cdio.h>
+configure:7605: result: no
+configure:7609: checking sys/cdio.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/cdio.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/cdio.h>
+configure:7645: result: no
+configure:7678: checking for sys/cdio.h
+configure:7687: result: no
+configure:7567: checking sys/elf32.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/elf32.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/elf32.h>
+configure:7605: result: no
+configure:7609: checking sys/elf32.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/elf32.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/elf32.h>
+configure:7645: result: no
+configure:7678: checking for sys/elf32.h
+configure:7687: result: no
+configure:7567: checking sys/epoll.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/epoll.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/epoll.h>
+configure:7605: result: no
+configure:7609: checking sys/epoll.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/epoll.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/epoll.h>
+configure:7645: result: no
+configure:7678: checking for sys/epoll.h
+configure:7687: result: no
+configure:7567: checking sys/errno.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/errno.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/errno.h>
+configure:7605: result: no
+configure:7609: checking sys/errno.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/errno.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/errno.h>
+configure:7645: result: no
+configure:7678: checking for sys/errno.h
+configure:7687: result: no
+configure:7567: checking sys/event.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/event.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/event.h>
+configure:7605: result: no
+configure:7609: checking sys/event.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/event.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/event.h>
+configure:7645: result: no
+configure:7678: checking for sys/event.h
+configure:7687: result: no
+configure:7567: checking sys/exec_elf.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/exec_elf.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/exec_elf.h>
+configure:7605: result: no
+configure:7609: checking sys/exec_elf.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/exec_elf.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/exec_elf.h>
+configure:7645: result: no
+configure:7678: checking for sys/exec_elf.h
+configure:7687: result: no
+configure:7567: checking sys/filio.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/filio.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/filio.h>
+configure:7605: result: no
+configure:7609: checking sys/filio.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/filio.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/filio.h>
+configure:7645: result: no
+configure:7678: checking for sys/filio.h
+configure:7687: result: no
+configure:7567: checking sys/ioctl.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/ioctl.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/ioctl.h>
+configure:7605: result: no
+configure:7609: checking sys/ioctl.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/ioctl.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/ioctl.h>
+configure:7645: result: no
+configure:7678: checking for sys/ioctl.h
+configure:7687: result: no
+configure:7567: checking sys/ipc.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/ipc.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/ipc.h>
+configure:7605: result: no
+configure:7609: checking sys/ipc.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/ipc.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/ipc.h>
+configure:7645: result: no
+configure:7678: checking for sys/ipc.h
+configure:7687: result: no
+configure:7567: checking sys/limits.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/limits.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/limits.h>
+configure:7605: result: no
+configure:7609: checking sys/limits.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/limits.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/limits.h>
+configure:7645: result: no
+configure:7678: checking for sys/limits.h
+configure:7687: result: no
+configure:7567: checking sys/link.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/link.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/link.h>
+configure:7605: result: no
+configure:7609: checking sys/link.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/link.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/link.h>
+configure:7645: result: no
+configure:7678: checking for sys/link.h
+configure:7687: result: no
+configure:7567: checking sys/lwp.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/lwp.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/lwp.h>
+configure:7605: result: no
+configure:7609: checking sys/lwp.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/lwp.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/lwp.h>
+configure:7645: result: no
+configure:7678: checking for sys/lwp.h
+configure:7687: result: no
+configure:7567: checking sys/mman.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/mman.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/mman.h>
+configure:7605: result: no
+configure:7609: checking sys/mman.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/mman.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/mman.h>
+configure:7645: result: no
+configure:7678: checking for sys/mman.h
+configure:7687: result: no
+configure:7567: checking sys/modem.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/modem.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/modem.h>
+configure:7605: result: no
+configure:7609: checking sys/modem.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/modem.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/modem.h>
+configure:7645: result: no
+configure:7678: checking for sys/modem.h
+configure:7687: result: no
+configure:7567: checking sys/msg.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/msg.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/msg.h>
+configure:7605: result: no
+configure:7609: checking sys/msg.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/msg.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/msg.h>
+configure:7645: result: no
+configure:7678: checking for sys/msg.h
+configure:7687: result: no
+configure:7567: checking sys/mtio.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/mtio.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/mtio.h>
+configure:7605: result: no
+configure:7609: checking sys/mtio.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/mtio.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/mtio.h>
+configure:7645: result: no
+configure:7678: checking for sys/mtio.h
+configure:7687: result: no
+configure:7567: checking sys/param.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/param.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/param.h>
+configure:7605: result: no
+configure:7609: checking sys/param.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/param.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/param.h>
+configure:7645: result: no
+configure:7678: checking for sys/param.h
+configure:7687: result: no
+configure:7567: checking sys/poll.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/poll.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/poll.h>
+configure:7605: result: no
+configure:7609: checking sys/poll.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/poll.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/poll.h>
+configure:7645: result: no
+configure:7678: checking for sys/poll.h
+configure:7687: result: no
+configure:7567: checking sys/prctl.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/prctl.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/prctl.h>
+configure:7605: result: no
+configure:7609: checking sys/prctl.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/prctl.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/prctl.h>
+configure:7645: result: no
+configure:7678: checking for sys/prctl.h
+configure:7687: result: no
+configure:7567: checking sys/ptrace.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/ptrace.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/ptrace.h>
+configure:7605: result: no
+configure:7609: checking sys/ptrace.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/ptrace.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/ptrace.h>
+configure:7645: result: no
+configure:7678: checking for sys/ptrace.h
+configure:7687: result: no
+configure:7567: checking sys/reg.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/reg.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/reg.h>
+configure:7605: result: no
+configure:7609: checking sys/reg.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/reg.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/reg.h>
+configure:7645: result: no
+configure:7678: checking for sys/reg.h
+configure:7687: result: no
+configure:7567: checking sys/resource.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/resource.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/resource.h>
+configure:7605: result: no
+configure:7609: checking sys/resource.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/resource.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/resource.h>
+configure:7645: result: no
+configure:7678: checking for sys/resource.h
+configure:7687: result: no
+configure:7567: checking sys/scsiio.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/scsiio.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/scsiio.h>
+configure:7605: result: no
+configure:7609: checking sys/scsiio.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/scsiio.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/scsiio.h>
+configure:7645: result: no
+configure:7678: checking for sys/scsiio.h
+configure:7687: result: no
+configure:7567: checking sys/shm.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/shm.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/shm.h>
+configure:7605: result: no
+configure:7609: checking sys/shm.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/shm.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/shm.h>
+configure:7645: result: no
+configure:7678: checking for sys/shm.h
+configure:7687: result: no
+configure:7567: checking sys/signal.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/signal.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/signal.h>
+configure:7605: result: no
+configure:7609: checking sys/signal.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/signal.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/signal.h>
+configure:7645: result: no
+configure:7678: checking for sys/signal.h
+configure:7687: result: no
+configure:7567: checking sys/socket.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/socket.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/socket.h>
+configure:7605: result: no
+configure:7609: checking sys/socket.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/socket.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/socket.h>
+configure:7645: result: no
+configure:7678: checking for sys/socket.h
+configure:7687: result: no
+configure:7567: checking sys/socketvar.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/socketvar.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/socketvar.h>
+configure:7605: result: no
+configure:7609: checking sys/socketvar.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/socketvar.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/socketvar.h>
+configure:7645: result: no
+configure:7678: checking for sys/socketvar.h
+configure:7687: result: no
+configure:7567: checking sys/sockio.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/sockio.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/sockio.h>
+configure:7605: result: no
+configure:7609: checking sys/sockio.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/sockio.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/sockio.h>
+configure:7645: result: no
+configure:7678: checking for sys/sockio.h
+configure:7687: result: no
+configure:7567: checking sys/soundcard.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/soundcard.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/soundcard.h>
+configure:7605: result: no
+configure:7609: checking sys/soundcard.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/soundcard.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/soundcard.h>
+configure:7645: result: no
+configure:7678: checking for sys/soundcard.h
+configure:7687: result: no
+configure:7567: checking sys/statvfs.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/statvfs.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/statvfs.h>
+configure:7605: result: no
+configure:7609: checking sys/statvfs.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/statvfs.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/statvfs.h>
+configure:7645: result: no
+configure:7678: checking for sys/statvfs.h
+configure:7687: result: no
+configure:7567: checking sys/strtio.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/strtio.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/strtio.h>
+configure:7605: result: no
+configure:7609: checking sys/strtio.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/strtio.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/strtio.h>
+configure:7645: result: no
+configure:7678: checking for sys/strtio.h
+configure:7687: result: no
+configure:7567: checking sys/syscall.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/syscall.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/syscall.h>
+configure:7605: result: no
+configure:7609: checking sys/syscall.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/syscall.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/syscall.h>
+configure:7645: result: no
+configure:7678: checking for sys/syscall.h
+configure:7687: result: no
+configure:7567: checking sys/sysctl.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/sysctl.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/sysctl.h>
+configure:7605: result: no
+configure:7609: checking sys/sysctl.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/sysctl.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/sysctl.h>
+configure:7645: result: no
+configure:7678: checking for sys/sysctl.h
+configure:7687: result: no
+configure:7567: checking sys/time.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/time.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/time.h>
+configure:7605: result: no
+configure:7609: checking sys/time.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/time.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/time.h>
+configure:7645: result: no
+configure:7678: checking for sys/time.h
+configure:7687: result: no
+configure:7567: checking sys/times.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/times.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/times.h>
+configure:7605: result: no
+configure:7609: checking sys/times.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/times.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/times.h>
+configure:7645: result: no
+configure:7678: checking for sys/times.h
+configure:7687: result: no
+configure:7567: checking sys/uio.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/uio.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/uio.h>
+configure:7605: result: no
+configure:7609: checking sys/uio.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/uio.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/uio.h>
+configure:7645: result: no
+configure:7678: checking for sys/uio.h
+configure:7687: result: no
+configure:7567: checking sys/un.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/un.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/un.h>
+configure:7605: result: no
+configure:7609: checking sys/un.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/un.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/un.h>
+configure:7645: result: no
+configure:7678: checking for sys/un.h
+configure:7687: result: no
+configure:7567: checking sys/vm86.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/vm86.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/vm86.h>
+configure:7605: result: no
+configure:7609: checking sys/vm86.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/vm86.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/vm86.h>
+configure:7645: result: no
+configure:7678: checking for sys/vm86.h
+configure:7687: result: no
+configure:7567: checking sys/wait.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'sys/wait.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <sys/wait.h>
+configure:7605: result: no
+configure:7609: checking sys/wait.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'sys/wait.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/wait.h>
+configure:7645: result: no
+configure:7678: checking for sys/wait.h
+configure:7687: result: no
+configure:7567: checking syscall.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'syscall.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <syscall.h>
+configure:7605: result: no
+configure:7609: checking syscall.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'syscall.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <syscall.h>
+configure:7645: result: no
+configure:7678: checking for syscall.h
+configure:7687: result: no
+configure:7567: checking termios.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'termios.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <termios.h>
+configure:7605: result: no
+configure:7609: checking termios.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'termios.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <termios.h>
+configure:7645: result: no
+configure:7678: checking for termios.h
+configure:7687: result: no
+configure:7556: checking for unistd.h
+configure:7563: result: no
+configure:7567: checking utime.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'utime.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <utime.h>
+configure:7605: result: no
+configure:7609: checking utime.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'utime.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <utime.h>
+configure:7645: result: no
+configure:7678: checking for utime.h
+configure:7687: result: no
+configure:7567: checking valgrind/memcheck.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'valgrind/memcheck.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <valgrind/memcheck.h>
+configure:7605: result: no
+configure:7609: checking valgrind/memcheck.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'valgrind/memcheck.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <valgrind/memcheck.h>
+configure:7645: result: no
+configure:7678: checking for valgrind/memcheck.h
+configure:7687: result: no
+configure:7567: checking valgrind/valgrind.h usability
+configure:7584: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(52) : fatal error C1083: Cannot open include file: 'valgrind/valgrind.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7591: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| #include <valgrind/valgrind.h>
+configure:7605: result: no
+configure:7609: checking valgrind/valgrind.h presence
+configure:7624: cl.exe -E  conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+conftest.c
+conftest.c(19) : fatal error C1083: Cannot open include file: 'valgrind/valgrind.h': No such file or directory
+configure:7631: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <valgrind/valgrind.h>
+configure:7645: result: no
+configure:7678: checking for valgrind/valgrind.h
+configure:7687: result: no
+configure:7702: checking whether stat file-mode macros are broken
+configure:7739: cl.exe -c -g  conftest.c >&5
+conftest.c
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7746: $? = 0
+configure:7761: result: no
+configure:7780: checking for sys/mount.h
+configure:7804: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(24) : fatal error C1083: Cannot open include file: 'sys/mount.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7811: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/types.h>
+|      #ifdef HAVE_SYS_PARAM_H
+|      # include <sys/param.h>
+|      #endif
+| 
+| #include <sys/mount.h>
+configure:7828: result: no
+configure:7780: checking for sys/statfs.h
+configure:7804: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(24) : fatal error C1083: Cannot open include file: 'sys/statfs.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7811: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/types.h>
+|      #ifdef HAVE_SYS_PARAM_H
+|      # include <sys/param.h>
+|      #endif
+| 
+| #include <sys/statfs.h>
+configure:7828: result: no
+configure:7780: checking for sys/user.h
+configure:7804: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(24) : fatal error C1083: Cannot open include file: 'sys/user.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7811: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/types.h>
+|      #ifdef HAVE_SYS_PARAM_H
+|      # include <sys/param.h>
+|      #endif
+| 
+| #include <sys/user.h>
+configure:7828: result: no
+configure:7780: checking for sys/vfs.h
+configure:7804: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(24) : fatal error C1083: Cannot open include file: 'sys/vfs.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7811: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/types.h>
+|      #ifdef HAVE_SYS_PARAM_H
+|      # include <sys/param.h>
+|      #endif
+| 
+| #include <sys/vfs.h>
+configure:7828: result: no
+configure:7870: checking for netinet/ip.h
+configure:7903: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(33) : fatal error C1083: Cannot open include file: 'netinet/ip.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7910: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/types.h>
+|      #ifdef HAVE_SYS_SOCKET_H
+|      # include <sys/socket.h>
+|      #endif
+|      #ifdef HAVE_SYS_SOCKETVAR_H
+|      # include <sys/socketvar.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IN_H
+|      # include <netinet/in.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IP_H
+|      # include <netinet/ip.h>
+|      #endif
+| 
+| #include <netinet/ip.h>
+configure:7927: result: no
+configure:7870: checking for net/if.h
+configure:7903: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(33) : fatal error C1083: Cannot open include file: 'net/if.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7910: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/types.h>
+|      #ifdef HAVE_SYS_SOCKET_H
+|      # include <sys/socket.h>
+|      #endif
+|      #ifdef HAVE_SYS_SOCKETVAR_H
+|      # include <sys/socketvar.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IN_H
+|      # include <netinet/in.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IP_H
+|      # include <netinet/ip.h>
+|      #endif
+| 
+| #include <net/if.h>
+configure:7927: result: no
+configure:7870: checking for net/if_arp.h
+configure:7903: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(33) : fatal error C1083: Cannot open include file: 'net/if_arp.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7910: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/types.h>
+|      #ifdef HAVE_SYS_SOCKET_H
+|      # include <sys/socket.h>
+|      #endif
+|      #ifdef HAVE_SYS_SOCKETVAR_H
+|      # include <sys/socketvar.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IN_H
+|      # include <netinet/in.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IP_H
+|      # include <netinet/ip.h>
+|      #endif
+| 
+| #include <net/if_arp.h>
+configure:7927: result: no
+configure:7870: checking for net/if_dl.h
+configure:7903: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(33) : fatal error C1083: Cannot open include file: 'net/if_dl.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7910: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/types.h>
+|      #ifdef HAVE_SYS_SOCKET_H
+|      # include <sys/socket.h>
+|      #endif
+|      #ifdef HAVE_SYS_SOCKETVAR_H
+|      # include <sys/socketvar.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IN_H
+|      # include <netinet/in.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IP_H
+|      # include <netinet/ip.h>
+|      #endif
+| 
+| #include <net/if_dl.h>
+configure:7927: result: no
+configure:7870: checking for net/if_types.h
+configure:7903: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(33) : fatal error C1083: Cannot open include file: 'net/if_types.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7910: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/types.h>
+|      #ifdef HAVE_SYS_SOCKET_H
+|      # include <sys/socket.h>
+|      #endif
+|      #ifdef HAVE_SYS_SOCKETVAR_H
+|      # include <sys/socketvar.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IN_H
+|      # include <netinet/in.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IP_H
+|      # include <netinet/ip.h>
+|      #endif
+| 
+| #include <net/if_types.h>
+configure:7927: result: no
+configure:7870: checking for net/route.h
+configure:7903: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(33) : fatal error C1083: Cannot open include file: 'net/route.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7910: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/types.h>
+|      #ifdef HAVE_SYS_SOCKET_H
+|      # include <sys/socket.h>
+|      #endif
+|      #ifdef HAVE_SYS_SOCKETVAR_H
+|      # include <sys/socketvar.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IN_H
+|      # include <netinet/in.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IP_H
+|      # include <netinet/ip.h>
+|      #endif
+| 
+| #include <net/route.h>
+configure:7927: result: no
+configure:7870: checking for netinet/if_ether.h
+configure:7903: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(33) : fatal error C1083: Cannot open include file: 'netinet/if_ether.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7910: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/types.h>
+|      #ifdef HAVE_SYS_SOCKET_H
+|      # include <sys/socket.h>
+|      #endif
+|      #ifdef HAVE_SYS_SOCKETVAR_H
+|      # include <sys/socketvar.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IN_H
+|      # include <netinet/in.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IP_H
+|      # include <netinet/ip.h>
+|      #endif
+| 
+| #include <netinet/if_ether.h>
+configure:7927: result: no
+configure:7870: checking for netinet/in_pcb.h
+configure:7903: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(33) : fatal error C1083: Cannot open include file: 'netinet/in_pcb.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7910: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/types.h>
+|      #ifdef HAVE_SYS_SOCKET_H
+|      # include <sys/socket.h>
+|      #endif
+|      #ifdef HAVE_SYS_SOCKETVAR_H
+|      # include <sys/socketvar.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IN_H
+|      # include <netinet/in.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IP_H
+|      # include <netinet/ip.h>
+|      #endif
+| 
+| #include <netinet/in_pcb.h>
+configure:7927: result: no
+configure:7870: checking for netinet/ip_icmp.h
+configure:7903: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(33) : fatal error C1083: Cannot open include file: 'netinet/ip_icmp.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7910: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/types.h>
+|      #ifdef HAVE_SYS_SOCKET_H
+|      # include <sys/socket.h>
+|      #endif
+|      #ifdef HAVE_SYS_SOCKETVAR_H
+|      # include <sys/socketvar.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IN_H
+|      # include <netinet/in.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IP_H
+|      # include <netinet/ip.h>
+|      #endif
+| 
+| #include <netinet/ip_icmp.h>
+configure:7927: result: no
+configure:7870: checking for netinet/ip_var.h
+configure:7903: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(33) : fatal error C1083: Cannot open include file: 'netinet/ip_var.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7910: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/types.h>
+|      #ifdef HAVE_SYS_SOCKET_H
+|      # include <sys/socket.h>
+|      #endif
+|      #ifdef HAVE_SYS_SOCKETVAR_H
+|      # include <sys/socketvar.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IN_H
+|      # include <netinet/in.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IP_H
+|      # include <netinet/ip.h>
+|      #endif
+| 
+| #include <netinet/ip_var.h>
+configure:7927: result: no
+configure:7870: checking for netinet/udp.h
+configure:7903: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(33) : fatal error C1083: Cannot open include file: 'netinet/udp.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7910: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/types.h>
+|      #ifdef HAVE_SYS_SOCKET_H
+|      # include <sys/socket.h>
+|      #endif
+|      #ifdef HAVE_SYS_SOCKETVAR_H
+|      # include <sys/socketvar.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IN_H
+|      # include <netinet/in.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IP_H
+|      # include <netinet/ip.h>
+|      #endif
+| 
+| #include <netinet/udp.h>
+configure:7927: result: no
+configure:7870: checking for netipx/ipx.h
+configure:7903: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(33) : fatal error C1083: Cannot open include file: 'netipx/ipx.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:7910: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/types.h>
+|      #ifdef HAVE_SYS_SOCKET_H
+|      # include <sys/socket.h>
+|      #endif
+|      #ifdef HAVE_SYS_SOCKETVAR_H
+|      # include <sys/socketvar.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IN_H
+|      # include <netinet/in.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IP_H
+|      # include <netinet/ip.h>
+|      #endif
+| 
+| #include <netipx/ipx.h>
+configure:7927: result: no
+configure:7948: checking for netinet/tcp_var.h
+configure:7996: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(48) : fatal error C1083: Cannot open include file: 'netinet/tcp_var.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:8003: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/types.h>
+|      #ifdef HAVE_ALIAS_H
+|      # include <alias.h>
+|      #endif
+|      #ifdef HAVE_SYS_SOCKET_H
+|      # include <sys/socket.h>
+|      #endif
+|      #ifdef HAVE_SYS_SOCKETVAR_H
+|      # include <sys/socketvar.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IN_H
+|      # include <netinet/in.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IP_H
+|      # include <netinet/ip.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IP_VAR_H
+|      # include <netinet/ip_var.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IP_ICMP_H
+|      # include <netinet/ip_icmp.h>
+|      #endif
+|      #ifdef HAVE_NETINET_UDP_H
+|      # include <netinet/udp.h>
+|      #endif
+|      #ifdef HAVE_NETINET_TCP_H
+|      # include <netinet/tcp.h>
+|      #endif
+| 
+| #include <netinet/tcp_var.h>
+configure:8020: result: no
+configure:7948: checking for netinet/udp_var.h
+configure:7996: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(48) : fatal error C1083: Cannot open include file: 'netinet/udp_var.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:8003: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/types.h>
+|      #ifdef HAVE_ALIAS_H
+|      # include <alias.h>
+|      #endif
+|      #ifdef HAVE_SYS_SOCKET_H
+|      # include <sys/socket.h>
+|      #endif
+|      #ifdef HAVE_SYS_SOCKETVAR_H
+|      # include <sys/socketvar.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IN_H
+|      # include <netinet/in.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IP_H
+|      # include <netinet/ip.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IP_VAR_H
+|      # include <netinet/ip_var.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IP_ICMP_H
+|      # include <netinet/ip_icmp.h>
+|      #endif
+|      #ifdef HAVE_NETINET_UDP_H
+|      # include <netinet/udp.h>
+|      #endif
+|      #ifdef HAVE_NETINET_TCP_H
+|      # include <netinet/tcp.h>
+|      #endif
+| 
+| #include <netinet/udp_var.h>
+configure:8020: result: no
+configure:7948: checking for netinet/icmp_var.h
+configure:7996: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(48) : fatal error C1083: Cannot open include file: 'netinet/icmp_var.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:8003: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/types.h>
+|      #ifdef HAVE_ALIAS_H
+|      # include <alias.h>
+|      #endif
+|      #ifdef HAVE_SYS_SOCKET_H
+|      # include <sys/socket.h>
+|      #endif
+|      #ifdef HAVE_SYS_SOCKETVAR_H
+|      # include <sys/socketvar.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IN_H
+|      # include <netinet/in.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IP_H
+|      # include <netinet/ip.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IP_VAR_H
+|      # include <netinet/ip_var.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IP_ICMP_H
+|      # include <netinet/ip_icmp.h>
+|      #endif
+|      #ifdef HAVE_NETINET_UDP_H
+|      # include <netinet/udp.h>
+|      #endif
+|      #ifdef HAVE_NETINET_TCP_H
+|      # include <netinet/tcp.h>
+|      #endif
+| 
+| #include <netinet/icmp_var.h>
+configure:8020: result: no
+configure:7948: checking for netinet/tcp_timer.h
+configure:7996: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(48) : fatal error C1083: Cannot open include file: 'netinet/tcp_timer.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:8003: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/types.h>
+|      #ifdef HAVE_ALIAS_H
+|      # include <alias.h>
+|      #endif
+|      #ifdef HAVE_SYS_SOCKET_H
+|      # include <sys/socket.h>
+|      #endif
+|      #ifdef HAVE_SYS_SOCKETVAR_H
+|      # include <sys/socketvar.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IN_H
+|      # include <netinet/in.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IP_H
+|      # include <netinet/ip.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IP_VAR_H
+|      # include <netinet/ip_var.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IP_ICMP_H
+|      # include <netinet/ip_icmp.h>
+|      #endif
+|      #ifdef HAVE_NETINET_UDP_H
+|      # include <netinet/udp.h>
+|      #endif
+|      #ifdef HAVE_NETINET_TCP_H
+|      # include <netinet/tcp.h>
+|      #endif
+| 
+| #include <netinet/tcp_timer.h>
+configure:8020: result: no
+configure:8038: checking for linux/ipx.h
+configure:8065: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(27) : fatal error C1083: Cannot open include file: 'linux/ipx.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:8072: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/types.h>
+|      #ifdef HAVE_ASM_TYPES_H
+|      # include <asm/types.h>
+|      #endif
+|      #ifdef HAVE_SYS_SOCKET_H
+|      # include <sys/socket.h>
+|      #endif
+| 
+| #include <linux/ipx.h>
+configure:8089: result: no
+configure:8107: checking for resolv.h
+configure:8137: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(30) : fatal error C1083: Cannot open include file: 'resolv.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:8144: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/types.h>
+|      #ifdef HAVE_SYS_SOCKET_H
+|      # include <sys/socket.h>
+|      #endif
+|      #ifdef HAVE_NETINET_IN_H
+|      # include <netinet/in.h>
+|      #endif
+|      #ifdef HAVE_ARPA_NAMESER_H
+|      # include <arpa/nameser.h>
+|      #endif
+| 
+| #include <resolv.h>
+configure:8161: result: no
+configure:8179: checking for ucontext.h
+configure:8200: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(21) : fatal error C1083: Cannot open include file: 'ucontext.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:8207: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <signal.h>
+| 
+| #include <ucontext.h>
+configure:8224: result: no
+configure:8242: checking for sys/thr.h
+configure:8266: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(24) : fatal error C1083: Cannot open include file: 'sys/thr.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:8273: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #include <sys/types.h>
+| #ifdef HAVE_UCONTEXT_H
+| #include <ucontext.h>
+| #endif
+| 
+| #include <sys/thr.h>
+configure:8290: result: no
+configure:8308: checking for pthread_np.h
+configure:8331: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(23) : fatal error C1083: Cannot open include file: 'pthread_np.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:8338: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #ifdef HAVE_PTHREAD_H
+| #include <pthread.h>
+| #endif
+| 
+| #include <pthread_np.h>
+configure:8355: result: no
+configure:8373: checking for linux/videodev.h
+configure:8400: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(27) : fatal error C1083: Cannot open include file: 'linux/videodev.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:8407: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #ifdef HAVE_SYS_TIME_H
+| #include <sys/time.h>
+| #endif
+| #include <sys/types.h>
+| #ifdef HAVE_ASM_TYPES_H
+| #include <asm/types.h>
+| #endif
+| 
+| #include <linux/videodev.h>
+configure:8424: result: no
+configure:8442: checking for linux/capi.h
+configure:8463: cl.exe -c -g  conftest.c >&5
+conftest.c
+conftest.c(21) : fatal error C1083: Cannot open include file: 'linux/capi.h': No such file or directory
+Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
+Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
+
+cl : Command line warning D4002 : ignoring unknown option '-g'
+configure:8470: $? = 2
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "Wine"
+| #define PACKAGE_TARNAME "wine"
+| #define PACKAGE_VERSION "1.1.10"
+| #define PACKAGE_STRING "Wine 1.1.10"
+| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+| #define X_DISPLAY_MISSING 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_DIRECT_H 1
+| #define HAVE_FLOAT_H 1
+| #define HAVE_IO_H 1
+| #define HAVE_PROCESS_H 1
+| /* end confdefs.h.  */
+| #define __user
+| 
+| #include <linux/capi.h>
+configure:8487: result: no
+configure:8520: checking for ldd
+configure:8552: result: true
+configure:8606: checking for dlltool
+configure:8636: result: no
+configure:8698: checking for dllwrap
+configure:8728: result: no
+configure:8790: checking for ar
+configure:8820: result: no
+configure:9711: error: could not find a way to build shared libraries.
+It is currently not possible to build Wine without shared library
+(.so) support to allow transparent switch between .so and .dll files.
+If you are using Linux, you will need a newer binutils.
+
+
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+
+ac_cv_build=i686-pc-cygwin
+ac_cv_c_compiler_gnu=no
+ac_cv_cxx_compiler_gnu=no
+ac_cv_env_CCC_set=
+ac_cv_env_CCC_value=
+ac_cv_env_CC_set=
+ac_cv_env_CC_value=
+ac_cv_env_CFLAGS_set=
+ac_cv_env_CFLAGS_value=
+ac_cv_env_CPPFLAGS_set=
+ac_cv_env_CPPFLAGS_value=
+ac_cv_env_CPP_set=
+ac_cv_env_CPP_value=
+ac_cv_env_CXXFLAGS_set=
+ac_cv_env_CXXFLAGS_value=
+ac_cv_env_CXX_set=
+ac_cv_env_CXX_value=
+ac_cv_env_LDFLAGS_set=
+ac_cv_env_LDFLAGS_value=
+ac_cv_env_LIBS_set=
+ac_cv_env_LIBS_value=
+ac_cv_env_XMKMF_set=
+ac_cv_env_XMKMF_value=
+ac_cv_env_build_alias_set=
+ac_cv_env_build_alias_value=
+ac_cv_env_host_alias_set=
+ac_cv_env_host_alias_value=
+ac_cv_env_target_alias_set=
+ac_cv_env_target_alias_value=
+ac_cv_exeext=.exe
+ac_cv_header_AudioUnit_AudioUnit_h=no
+ac_cv_header_Carbon_Carbon_h=no
+ac_cv_header_CoreAudio_CoreAudio_h=no
+ac_cv_header_DiskArbitration_DiskArbitration_h=no
+ac_cv_header_GL_glu_h=no
+ac_cv_header_IOKit_IOKitLib_h=no
+ac_cv_header_alias_h=no
+ac_cv_header_alsa_asoundlib_h=no
+ac_cv_header_arpa_inet_h=no
+ac_cv_header_arpa_nameser_h=no
+ac_cv_header_asm_types_h=no
+ac_cv_header_capi20_h=no
+ac_cv_header_curses_h=no
+ac_cv_header_direct_h=yes
+ac_cv_header_dirent_h=no
+ac_cv_header_dlfcn_h=no
+ac_cv_header_elf_h=no
+ac_cv_header_float_h=yes
+ac_cv_header_fontconfig_fontconfig_h=no
+ac_cv_header_getopt_h=no
+ac_cv_header_ieeefp_h=no
+ac_cv_header_inttypes_h=no
+ac_cv_header_io_h=yes
+ac_cv_header_jack_jack_h=no
+ac_cv_header_jpeglib_h=no
+ac_cv_header_lber_h=no
+ac_cv_header_lcms_h=no
+ac_cv_header_lcms_lcms_h=no
+ac_cv_header_ldap_h=no
+ac_cv_header_libaudioio_h=no
+ac_cv_header_link_h=no
+ac_cv_header_linux_capi_h=no
+ac_cv_header_linux_cdrom_h=no
+ac_cv_header_linux_compiler_h=no
+ac_cv_header_linux_hdreg_h=no
+ac_cv_header_linux_input_h=no
+ac_cv_header_linux_ioctl_h=no
+ac_cv_header_linux_ipx_h=no
+ac_cv_header_linux_joystick_h=no
+ac_cv_header_linux_major_h=no
+ac_cv_header_linux_param_h=no
+ac_cv_header_linux_serial_h=no
+ac_cv_header_linux_ucdrom_h=no
+ac_cv_header_linux_videodev_h=no
+ac_cv_header_mach_mach_h=no
+ac_cv_header_mach_machine_h=no
+ac_cv_header_machine_cpu_h=no
+ac_cv_header_machine_limits_h=no
+ac_cv_header_machine_soundcard_h=no
+ac_cv_header_memory_h=yes
+ac_cv_header_mntent_h=no
+ac_cv_header_ncurses_h=no
+ac_cv_header_net_if_arp_h=no
+ac_cv_header_net_if_dl_h=no
+ac_cv_header_net_if_h=no
+ac_cv_header_net_if_types_h=no
+ac_cv_header_net_route_h=no
+ac_cv_header_netdb_h=no
+ac_cv_header_netinet_icmp_var_h=no
+ac_cv_header_netinet_if_ether_h=no
+ac_cv_header_netinet_in_h=no
+ac_cv_header_netinet_in_pcb_h=no
+ac_cv_header_netinet_in_systm_h=no
+ac_cv_header_netinet_ip_h=no
+ac_cv_header_netinet_ip_icmp_h=no
+ac_cv_header_netinet_ip_var_h=no
+ac_cv_header_netinet_tcp_fsm_h=no
+ac_cv_header_netinet_tcp_h=no
+ac_cv_header_netinet_tcp_timer_h=no
+ac_cv_header_netinet_tcp_var_h=no
+ac_cv_header_netinet_udp_h=no
+ac_cv_header_netinet_udp_var_h=no
+ac_cv_header_netipx_ipx_h=no
+ac_cv_header_openssl_err_h=no
+ac_cv_header_openssl_ssl_h=no
+ac_cv_header_png_h=no
+ac_cv_header_poll_h=no
+ac_cv_header_process_h=yes
+ac_cv_header_pthread_h=no
+ac_cv_header_pthread_np_h=no
+ac_cv_header_pwd_h=no
+ac_cv_header_regex_h=no
+ac_cv_header_resolv_h=no
+ac_cv_header_sched_h=no
+ac_cv_header_scsi_scsi_h=no
+ac_cv_header_scsi_scsi_ioctl_h=no
+ac_cv_header_scsi_sg_h=no
+ac_cv_header_soundcard_h=no
+ac_cv_header_stat_broken=no
+ac_cv_header_stdc=yes
+ac_cv_header_stdint_h=no
+ac_cv_header_stdlib_h=yes
+ac_cv_header_string_h=yes
+ac_cv_header_strings_h=no
+ac_cv_header_sys_asoundlib_h=no
+ac_cv_header_sys_cdio_h=no
+ac_cv_header_sys_elf32_h=no
+ac_cv_header_sys_epoll_h=no
+ac_cv_header_sys_errno_h=no
+ac_cv_header_sys_event_h=no
+ac_cv_header_sys_exec_elf_h=no
+ac_cv_header_sys_filio_h=no
+ac_cv_header_sys_ioctl_h=no
+ac_cv_header_sys_ipc_h=no
+ac_cv_header_sys_limits_h=no
+ac_cv_header_sys_link_h=no
+ac_cv_header_sys_lwp_h=no
+ac_cv_header_sys_mman_h=no
+ac_cv_header_sys_modem_h=no
+ac_cv_header_sys_mount_h=no
+ac_cv_header_sys_msg_h=no
+ac_cv_header_sys_mtio_h=no
+ac_cv_header_sys_param_h=no
+ac_cv_header_sys_poll_h=no
+ac_cv_header_sys_prctl_h=no
+ac_cv_header_sys_ptrace_h=no
+ac_cv_header_sys_reg_h=no
+ac_cv_header_sys_resource_h=no
+ac_cv_header_sys_scsiio_h=no
+ac_cv_header_sys_shm_h=no
+ac_cv_header_sys_signal_h=no
+ac_cv_header_sys_socket_h=no
+ac_cv_header_sys_socketvar_h=no
+ac_cv_header_sys_sockio_h=no
+ac_cv_header_sys_soundcard_h=no
+ac_cv_header_sys_stat_h=yes
+ac_cv_header_sys_statfs_h=no
+ac_cv_header_sys_statvfs_h=no
+ac_cv_header_sys_strtio_h=no
+ac_cv_header_sys_syscall_h=no
+ac_cv_header_sys_sysctl_h=no
+ac_cv_header_sys_thr_h=no
+ac_cv_header_sys_time_h=no
+ac_cv_header_sys_times_h=no
+ac_cv_header_sys_types_h=yes
+ac_cv_header_sys_uio_h=no
+ac_cv_header_sys_un_h=no
+ac_cv_header_sys_user_h=no
+ac_cv_header_sys_vfs_h=no
+ac_cv_header_sys_vm86_h=no
+ac_cv_header_sys_wait_h=no
+ac_cv_header_syscall_h=no
+ac_cv_header_termios_h=no
+ac_cv_header_ucontext_h=no
+ac_cv_header_unistd_h=no
+ac_cv_header_utime_h=no
+ac_cv_header_valgrind_memcheck_h=no
+ac_cv_header_valgrind_valgrind_h=no
+ac_cv_host=i686-pc-cygwin
+ac_cv_lib_i386_i386_set_ldt=no
+ac_cv_lib_ossaudio__oss_ioctl=no
+ac_cv_lib_pthread_pthread_create=no
+ac_cv_objext=obj
+ac_cv_path_EGREP='/usr/bin/grep -E'
+ac_cv_path_GREP=/usr/bin/grep
+ac_cv_path_LDCONFIG=true
+ac_cv_path_LDD=true
+ac_cv_path_PRELINK=false
+ac_cv_path_install='/usr/bin/install -c'
+ac_cv_prog_BISON=bison
+ac_cv_prog_CPP='cl.exe -E'
+ac_cv_prog_FLEX=flex
+ac_cv_prog_ac_ct_CC=cl.exe
+ac_cv_prog_ac_ct_CXX=cl.exe
+ac_cv_prog_cc_c89=
+ac_cv_prog_cc_g=yes
+ac_cv_prog_cxx_g=yes
+ac_cv_prog_make_make_set=yes
+wine_cv_toolsdir='$(TOPOBJDIR)'
+
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+
+ALL_DLL_DIRS=''
+ALL_IMPLIB_DIRS=''
+ALL_MAKEFILES=''
+ALL_MAKEFILE_DEPENDS=''
+ALL_MAKERULES=''
+ALL_PROGRAM_BIN_INSTALL_DIRS=''
+ALL_PROGRAM_DIRS=''
+ALL_PROGRAM_INSTALL_DIRS=''
+ALL_TEST_DIRS=''
+ALL_TOP_DIRS=''
+ALL_WINETEST_DEPENDS=''
+ALSALIBS=''
+AR='ar'
+ARFLAGS='rc'
+AS='as'
+AUDIOIOLIBS=''
+BISON='bison'
+BUILTINFLAG=''
+CARBONLIB=''
+CC='cl.exe'
+CFLAGS='-g'
+COREAUDIO=''
+COREFOUNDATIONLIB=''
+CPP='cl.exe -E'
+CPPBIN='cpp'
+CPPFLAGS=''
+CROSSCC=''
+CROSSTEST=''
+CROSSWINDRES=''
+CRTLIBS=''
+CUPSINCL=''
+CXX='cl.exe'
+CXXFLAGS='-g'
+DEFS=''
+DEPENDENCIES=''
+DISKARBITRATIONLIB=''
+DLLEXT=''
+DLLFLAGS='-D_REENTRANT'
+DLLTOOL='false'
+DLLWRAP='false'
+ECHO_C=''
+ECHO_N='-n'
+ECHO_T=''
+EGREP='/usr/bin/grep -E'
+ESDCONFIG=''
+ESDINCL=''
+ESDLIBS=''
+EXEEXT='.exe'
+EXTRACFLAGS=''
+EXTRA_BINARIES=''
+FLEX='flex'
+FONTCONFIGINCL=''
+FONTFORGE='false'
+FREETYPEINCL=''
+FREETYPELIBS=''
+GNUTLSINCL=''
+GPHOTO2INCL=''
+GPHOTO2LIBS=''
+GREP='/usr/bin/grep'
+HALINCL=''
+ICOTOOL='false'
+IMPLIBEXT='a'
+INSTALL_DATA='${INSTALL} -m 644'
+INSTALL_PROGRAM='${INSTALL}'
+INSTALL_SCRIPT='${INSTALL}'
+IOKITLIB=''
+LCMSLIBS=''
+LD='ld'
+LDAPLIBS=''
+LDCONFIG='true'
+LDD='true'
+LDDLLFLAGS=''
+LDEXECFLAGS=''
+LDFLAGS=''
+LDPATH=''
+LDRPATH_INSTALL=''
+LDRPATH_LOCAL=''
+LDSHARED=''
+LIBDL=''
+LIBEXT='a'
+LIBOBJS=''
+LIBPOLL=''
+LIBPTHREAD=''
+LIBS=''
+LINT=''
+LINTFLAGS=''
+LN='ln'
+LN_S='ln -s'
+LTLIBOBJS=''
+MAINTAINER_MODE='#'
+MAIN_BINARY=''
+MINGWAR='false'
+NASLIBS=''
+NM='nm'
+OBJEXT='obj'
+OPENGL_LIBS=''
+PACKAGE_BUGREPORT='wine-devel@winehq.org'
+PACKAGE_NAME='Wine'
+PACKAGE_STRING='Wine 1.1.10'
+PACKAGE_TARNAME='wine'
+PACKAGE_VERSION='1.1.10'
+PATH_SEPARATOR=':'
+PKG_CONFIG='false'
+PRELINK='false'
+RANLIB=':'
+RESOLVLIBS=''
+RSVG='false'
+SANEINCL=''
+SECURITYLIB=''
+SET_MAKE=''
+SHELL='/bin/sh'
+SOCKETLIBS=''
+STRIP='strip'
+TOOLSDIR='$(TOPOBJDIR)'
+WIN16_FILES=''
+WIN16_INSTALL=''
+WINDRES='false'
+XLIB=''
+XMKMF=''
+XML2INCL=''
+XML2LIBS=''
+XSLTINCL=''
+X_CFLAGS=''
+X_EXTRA_LIBS=''
+X_LIBS=''
+X_PRE_LIBS=''
+ac_ct_AR=''
+ac_ct_AS=''
+ac_ct_CC='cl.exe'
+ac_ct_CXX='cl.exe'
+ac_ct_LD=''
+ac_ct_NM=''
+bindir='${exec_prefix}/bin'
+build='i686-pc-cygwin'
+build_alias=''
+build_cpu='i686'
+build_os='cygwin'
+build_vendor='pc'
+datadir='${datarootdir}'
+datarootdir='${prefix}/share'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+dvidir='${docdir}'
+exec_prefix='NONE'
+ft_devel=''
+gphoto2_devel=''
+gphoto2port_devel=''
+host='i686-pc-cygwin'
+host_alias=''
+host_cpu='i686'
+host_os='cygwin'
+host_vendor='pc'
+htmldir='${docdir}'
+includedir='${prefix}/include'
+infodir='${datarootdir}/info'
+libdir='${exec_prefix}/lib'
+libexecdir='${exec_prefix}/libexec'
+localedir='${datarootdir}/locale'
+localstatedir='${prefix}/var'
+mandir='${datarootdir}/man'
+oldincludedir='/usr/include'
+pdfdir='${docdir}'
+prefix='NONE'
+program_transform_name='s,x,x,'
+psdir='${docdir}'
+sane_devel=''
+sbindir='${exec_prefix}/sbin'
+sharedstatedir='${prefix}/com'
+sysconfdir='${prefix}/etc'
+target_alias=''
+
+## ------------------- ##
+## File substitutions. ##
+## ------------------- ##
+
+MAKE_DLL_RULES=''
+MAKE_IMPLIB_RULES=''
+MAKE_PROG_RULES=''
+MAKE_RULES=''
+MAKE_TEST_RULES=''
+
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+
+#define PACKAGE_NAME "Wine"
+#define PACKAGE_TARNAME "wine"
+#define PACKAGE_VERSION "1.1.10"
+#define PACKAGE_STRING "Wine 1.1.10"
+#define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+#define X_DISPLAY_MISSING 1
+#define STDC_HEADERS 1
+#define HAVE_SYS_TYPES_H 1
+#define HAVE_SYS_STAT_H 1
+#define HAVE_STDLIB_H 1
+#define HAVE_STRING_H 1
+#define HAVE_MEMORY_H 1
+#define HAVE_DIRECT_H 1
+#define HAVE_FLOAT_H 1
+#define HAVE_IO_H 1
+#define HAVE_PROCESS_H 1
+
+configure: exit 1
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/context.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/context.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/context.c	(revision 16410)
@@ -0,0 +1,1625 @@
+/*
+ * Context and render target management in wined3d
+ *
+ * Copyright 2007-2008 Stefan Dösinger for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include <stdio.h>
+#ifdef HAVE_FLOAT_H
+# include <float.h>
+#endif
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d);
+
+#define GLINFO_LOCATION This->adapter->gl_info
+
+/* The last used device.
+ *
+ * If the application creates multiple devices and switches between them, ActivateContext has to
+ * change the opengl context. This flag allows to keep track which device is active
+ */
+static IWineD3DDeviceImpl *last_device;
+
+/* FBO helper functions */
+
+void context_bind_fbo(IWineD3DDevice *iface, GLenum target, GLuint *fbo)
+{
+    const IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+
+    if (!*fbo)
+    {
+        GL_EXTCALL(glGenFramebuffersEXT(1, fbo));
+        checkGLcall("glGenFramebuffersEXT()");
+        TRACE("Created FBO %d\n", *fbo);
+    }
+
+    GL_EXTCALL(glBindFramebufferEXT(target, *fbo));
+    checkGLcall("glBindFramebuffer()");
+}
+
+static void context_destroy_fbo(IWineD3DDeviceImpl *This, const GLuint *fbo)
+{
+    int i = 0;
+
+    GL_EXTCALL(glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, *fbo));
+    checkGLcall("glBindFramebuffer()");
+    for (i = 0; i < GL_LIMITS(buffers); ++i)
+    {
+        GL_EXTCALL(glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT + i, GL_TEXTURE_2D, 0, 0));
+        checkGLcall("glFramebufferTexture2D()");
+    }
+    GL_EXTCALL(glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_TEXTURE_2D, 0, 0));
+    checkGLcall("glFramebufferTexture2D()");
+    GL_EXTCALL(glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0));
+    checkGLcall("glBindFramebuffer()");
+    GL_EXTCALL(glDeleteFramebuffersEXT(1, fbo));
+    checkGLcall("glDeleteFramebuffers()");
+}
+
+static void context_apply_attachment_filter_states(IWineD3DDevice *iface, IWineD3DSurface *surface, BOOL force_preload)
+{
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    const IWineD3DSurfaceImpl *surface_impl = (IWineD3DSurfaceImpl *)surface;
+    IWineD3DBaseTextureImpl *texture_impl;
+    BOOL update_minfilter = FALSE;
+    BOOL update_magfilter = FALSE;
+
+    /* Update base texture states array */
+    if (SUCCEEDED(IWineD3DSurface_GetContainer(surface, &IID_IWineD3DBaseTexture, (void **)&texture_impl)))
+    {
+        if (texture_impl->baseTexture.states[WINED3DTEXSTA_MINFILTER] != WINED3DTEXF_POINT
+            || texture_impl->baseTexture.states[WINED3DTEXSTA_MIPFILTER] != WINED3DTEXF_NONE)
+        {
+            texture_impl->baseTexture.states[WINED3DTEXSTA_MINFILTER] = WINED3DTEXF_POINT;
+            texture_impl->baseTexture.states[WINED3DTEXSTA_MIPFILTER] = WINED3DTEXF_NONE;
+            update_minfilter = TRUE;
+        }
+
+        if (texture_impl->baseTexture.states[WINED3DTEXSTA_MAGFILTER] != WINED3DTEXF_POINT)
+        {
+            texture_impl->baseTexture.states[WINED3DTEXSTA_MAGFILTER] = WINED3DTEXF_POINT;
+            update_magfilter = TRUE;
+        }
+
+        if (texture_impl->baseTexture.bindCount)
+        {
+            WARN("Render targets should not be bound to a sampler\n");
+            IWineD3DDeviceImpl_MarkStateDirty(This, STATE_SAMPLER(texture_impl->baseTexture.sampler));
+        }
+
+        IWineD3DBaseTexture_Release((IWineD3DBaseTexture *)texture_impl);
+    }
+
+    if (update_minfilter || update_magfilter || force_preload)
+    {
+        GLenum target, bind_target;
+        GLint old_binding;
+
+        target = surface_impl->glDescription.target;
+        if (target == GL_TEXTURE_2D)
+        {
+            bind_target = GL_TEXTURE_2D;
+            glGetIntegerv(GL_TEXTURE_BINDING_2D, &old_binding);
+        } else if (target == GL_TEXTURE_RECTANGLE_ARB) {
+            bind_target = GL_TEXTURE_RECTANGLE_ARB;
+            glGetIntegerv(GL_TEXTURE_BINDING_RECTANGLE_ARB, &old_binding);
+        } else {
+            bind_target = GL_TEXTURE_CUBE_MAP_ARB;
+            glGetIntegerv(GL_TEXTURE_BINDING_CUBE_MAP_ARB, &old_binding);
+        }
+
+        IWineD3DSurface_PreLoad(surface);
+
+        glBindTexture(bind_target, surface_impl->glDescription.textureName);
+        if (update_minfilter) glTexParameteri(bind_target, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+        if (update_magfilter) glTexParameteri(bind_target, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+        glBindTexture(bind_target, old_binding);
+    }
+
+    checkGLcall("apply_attachment_filter_states()");
+}
+
+/* TODO: Handle stencil attachments */
+void context_attach_depth_stencil_fbo(IWineD3DDeviceImpl *This, GLenum fbo_target, IWineD3DSurface *depth_stencil, BOOL use_render_buffer)
+{
+    IWineD3DSurfaceImpl *depth_stencil_impl = (IWineD3DSurfaceImpl *)depth_stencil;
+
+    TRACE("Attach depth stencil %p\n", depth_stencil);
+
+    if (depth_stencil)
+    {
+        if (use_render_buffer && depth_stencil_impl->current_renderbuffer)
+        {
+            GL_EXTCALL(glFramebufferRenderbufferEXT(fbo_target, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, depth_stencil_impl->current_renderbuffer->id));
+            checkGLcall("glFramebufferRenderbufferEXT()");
+        } else {
+            context_apply_attachment_filter_states((IWineD3DDevice *)This, depth_stencil, TRUE);
+
+            GL_EXTCALL(glFramebufferTexture2DEXT(fbo_target, GL_DEPTH_ATTACHMENT_EXT, depth_stencil_impl->glDescription.target,
+                        depth_stencil_impl->glDescription.textureName, depth_stencil_impl->glDescription.level));
+            checkGLcall("glFramebufferTexture2DEXT()");
+        }
+    } else {
+        GL_EXTCALL(glFramebufferTexture2DEXT(fbo_target, GL_DEPTH_ATTACHMENT_EXT, GL_TEXTURE_2D, 0, 0));
+        checkGLcall("glFramebufferTexture2DEXT()");
+    }
+}
+
+void context_attach_surface_fbo(IWineD3DDeviceImpl *This, GLenum fbo_target, DWORD idx, IWineD3DSurface *surface)
+{
+    const IWineD3DSurfaceImpl *surface_impl = (IWineD3DSurfaceImpl *)surface;
+
+    TRACE("Attach surface %p to %u\n", surface, idx);
+
+    if (surface)
+    {
+        context_apply_attachment_filter_states((IWineD3DDevice *)This, surface, TRUE);
+
+        GL_EXTCALL(glFramebufferTexture2DEXT(fbo_target, GL_COLOR_ATTACHMENT0_EXT + idx, surface_impl->glDescription.target,
+                surface_impl->glDescription.textureName, surface_impl->glDescription.level));
+        checkGLcall("glFramebufferTexture2DEXT()");
+    } else {
+        GL_EXTCALL(glFramebufferTexture2DEXT(fbo_target, GL_COLOR_ATTACHMENT0_EXT + idx, GL_TEXTURE_2D, 0, 0));
+        checkGLcall("glFramebufferTexture2DEXT()");
+    }
+}
+
+static void context_check_fbo_status(IWineD3DDevice *iface)
+{
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    GLenum status;
+
+    status = GL_EXTCALL(glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT));
+    if (status == GL_FRAMEBUFFER_COMPLETE_EXT)
+    {
+        TRACE("FBO complete\n");
+    } else {
+        IWineD3DSurfaceImpl *attachment;
+        unsigned int i;
+        FIXME("FBO status %s (%#x)\n", debug_fbostatus(status), status);
+
+        /* Dump the FBO attachments */
+        for (i = 0; i < GL_LIMITS(buffers); ++i)
+        {
+            attachment = (IWineD3DSurfaceImpl *)This->activeContext->current_fbo->render_targets[i];
+            if (attachment)
+            {
+                FIXME("\tColor attachment %d: (%p) %s %ux%u\n", i, attachment, debug_d3dformat(attachment->resource.format),
+                        attachment->pow2Width, attachment->pow2Height);
+            }
+        }
+        attachment = (IWineD3DSurfaceImpl *)This->activeContext->current_fbo->depth_stencil;
+        if (attachment)
+        {
+            FIXME("\tDepth attachment: (%p) %s %ux%u\n", attachment, debug_d3dformat(attachment->resource.format),
+                    attachment->pow2Width, attachment->pow2Height);
+        }
+    }
+}
+
+static struct fbo_entry *context_create_fbo_entry(IWineD3DDevice *iface)
+{
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    struct fbo_entry *entry;
+
+    entry = HeapAlloc(GetProcessHeap(), 0, sizeof(*entry));
+    entry->render_targets = HeapAlloc(GetProcessHeap(), 0, GL_LIMITS(buffers) * sizeof(*entry->render_targets));
+    memcpy(entry->render_targets, This->render_targets, GL_LIMITS(buffers) * sizeof(*entry->render_targets));
+    entry->depth_stencil = This->stencilBufferTarget;
+    entry->attached = FALSE;
+    entry->id = 0;
+
+    return entry;
+}
+
+static void context_destroy_fbo_entry(IWineD3DDeviceImpl *This, struct fbo_entry *entry)
+{
+    if (entry->id)
+    {
+        TRACE("Destroy FBO %d\n", entry->id);
+        context_destroy_fbo(This, &entry->id);
+    }
+    list_remove(&entry->entry);
+    HeapFree(GetProcessHeap(), 0, entry->render_targets);
+    HeapFree(GetProcessHeap(), 0, entry);
+}
+
+
+static struct fbo_entry *context_find_fbo_entry(IWineD3DDevice *iface, WineD3DContext *context)
+{
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    struct fbo_entry *entry;
+
+    LIST_FOR_EACH_ENTRY(entry, &context->fbo_list, struct fbo_entry, entry)
+    {
+        if (!memcmp(entry->render_targets, This->render_targets, GL_LIMITS(buffers) * sizeof(*entry->render_targets))
+                && entry->depth_stencil == This->stencilBufferTarget)
+        {
+            return entry;
+        }
+    }
+
+    entry = context_create_fbo_entry(iface);
+    list_add_head(&context->fbo_list, &entry->entry);
+    return entry;
+}
+
+static void context_apply_fbo_entry(IWineD3DDevice *iface, struct fbo_entry *entry)
+{
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    unsigned int i;
+
+    context_bind_fbo(iface, GL_FRAMEBUFFER_EXT, &entry->id);
+
+    if (!entry->attached)
+    {
+        /* Apply render targets */
+        for (i = 0; i < GL_LIMITS(buffers); ++i)
+        {
+            IWineD3DSurface *render_target = This->render_targets[i];
+            context_attach_surface_fbo(This, GL_FRAMEBUFFER_EXT, i, render_target);
+        }
+
+        /* Apply depth targets */
+        if (This->stencilBufferTarget) {
+            unsigned int w = ((IWineD3DSurfaceImpl *)This->render_targets[0])->pow2Width;
+            unsigned int h = ((IWineD3DSurfaceImpl *)This->render_targets[0])->pow2Height;
+
+            surface_set_compatible_renderbuffer(This->stencilBufferTarget, w, h);
+        }
+        context_attach_depth_stencil_fbo(This, GL_FRAMEBUFFER_EXT, This->stencilBufferTarget, TRUE);
+
+        entry->attached = TRUE;
+    } else {
+        for (i = 0; i < GL_LIMITS(buffers); ++i)
+        {
+            if (This->render_targets[i])
+                context_apply_attachment_filter_states(iface, This->render_targets[i], FALSE);
+        }
+        if (This->stencilBufferTarget)
+            context_apply_attachment_filter_states(iface, This->stencilBufferTarget, FALSE);
+    }
+
+    for (i = 0; i < GL_LIMITS(buffers); ++i)
+    {
+        if (This->render_targets[i])
+            This->draw_buffers[i] = GL_COLOR_ATTACHMENT0_EXT + i;
+        else
+            This->draw_buffers[i] = GL_NONE;
+    }
+}
+
+static void context_apply_fbo_state(IWineD3DDevice *iface)
+{
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    WineD3DContext *context = This->activeContext;
+
+    if (This->render_offscreen)
+    {
+        context->current_fbo = context_find_fbo_entry(iface, context);
+        context_apply_fbo_entry(iface, context->current_fbo);
+    } else {
+        context->current_fbo = NULL;
+        GL_EXTCALL(glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0));
+    }
+
+    context_check_fbo_status(iface);
+}
+
+void context_resource_released(IWineD3DDevice *iface, IWineD3DResource *resource, WINED3DRESOURCETYPE type)
+{
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    UINT i;
+
+    switch(type)
+    {
+        case WINED3DRTYPE_SURFACE:
+        {
+            for (i = 0; i < This->numContexts; ++i)
+            {
+                struct fbo_entry *entry, *entry2;
+
+                LIST_FOR_EACH_ENTRY_SAFE(entry, entry2, &This->contexts[i]->fbo_list, struct fbo_entry, entry)
+                {
+                    BOOL destroyed = FALSE;
+                    UINT j;
+
+                    for (j = 0; !destroyed && j < GL_LIMITS(buffers); ++j)
+                    {
+                        if (entry->render_targets[j] == (IWineD3DSurface *)resource)
+                        {
+                            context_destroy_fbo_entry(This, entry);
+                            destroyed = TRUE;
+                        }
+                    }
+
+                    if (!destroyed && entry->depth_stencil == (IWineD3DSurface *)resource)
+                        context_destroy_fbo_entry(This, entry);
+                }
+            }
+
+            break;
+        }
+
+        default:
+            break;
+    }
+}
+
+/*****************************************************************************
+ * Context_MarkStateDirty
+ *
+ * Marks a state in a context dirty. Only one context, opposed to
+ * IWineD3DDeviceImpl_MarkStateDirty, which marks the state dirty in all
+ * contexts
+ *
+ * Params:
+ *  context: Context to mark the state dirty in
+ *  state: State to mark dirty
+ *  StateTable: Pointer to the state table in use(for state grouping)
+ *
+ *****************************************************************************/
+static void Context_MarkStateDirty(WineD3DContext *context, DWORD state, const struct StateEntry *StateTable) {
+    DWORD rep = StateTable[state].representative;
+    DWORD idx;
+    BYTE shift;
+
+    if(!rep || isStateDirty(context, rep)) return;
+
+    context->dirtyArray[context->numDirtyEntries++] = rep;
+    idx = rep >> 5;
+    shift = rep & 0x1f;
+    context->isStateDirty[idx] |= (1 << shift);
+}
+
+/*****************************************************************************
+ * AddContextToArray
+ *
+ * Adds a context to the context array. Helper function for CreateContext
+ *
+ * This method is not called in performance-critical code paths, only when a
+ * new render target or swapchain is created. Thus performance is not an issue
+ * here.
+ *
+ * Params:
+ *  This: Device to add the context for
+ *  hdc: device context
+ *  glCtx: WGL context to add
+ *  pbuffer: optional pbuffer used with this context
+ *
+ *****************************************************************************/
+static WineD3DContext *AddContextToArray(IWineD3DDeviceImpl *This, HWND win_handle, HDC hdc, HGLRC glCtx, HPBUFFERARB pbuffer) {
+    WineD3DContext **oldArray = This->contexts;
+    DWORD state;
+
+    This->contexts = HeapAlloc(GetProcessHeap(), 0, sizeof(*This->contexts) * (This->numContexts + 1));
+    if(This->contexts == NULL) {
+        ERR("Unable to grow the context array\n");
+        This->contexts = oldArray;
+        return NULL;
+    }
+    if(oldArray) {
+        memcpy(This->contexts, oldArray, sizeof(*This->contexts) * This->numContexts);
+    }
+
+    This->contexts[This->numContexts] = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WineD3DContext));
+    if(This->contexts[This->numContexts] == NULL) {
+        ERR("Unable to allocate a new context\n");
+        HeapFree(GetProcessHeap(), 0, This->contexts);
+        This->contexts = oldArray;
+        return NULL;
+    }
+
+    This->contexts[This->numContexts]->hdc = hdc;
+    This->contexts[This->numContexts]->glCtx = glCtx;
+    This->contexts[This->numContexts]->pbuffer = pbuffer;
+    This->contexts[This->numContexts]->win_handle = win_handle;
+    HeapFree(GetProcessHeap(), 0, oldArray);
+
+    /* Mark all states dirty to force a proper initialization of the states on the first use of the context
+     */
+    for(state = 0; state <= STATE_HIGHEST; state++) {
+        Context_MarkStateDirty(This->contexts[This->numContexts], state, This->StateTable);
+    }
+
+    This->numContexts++;
+    TRACE("Created context %p\n", This->contexts[This->numContexts - 1]);
+    return This->contexts[This->numContexts - 1];
+}
+
+/* This function takes care of WineD3D pixel format selection. */
+static int WineD3D_ChoosePixelFormat(IWineD3DDeviceImpl *This, HDC hdc, WINED3DFORMAT ColorFormat, WINED3DFORMAT DepthStencilFormat, BOOL auxBuffers, int numSamples, BOOL pbuffer, BOOL findCompatible)
+{
+    int iPixelFormat=0;
+    unsigned int matchtry;
+    short redBits, greenBits, blueBits, alphaBits, colorBits;
+    short depthBits=0, stencilBits=0;
+
+    struct match_type {
+        BOOL require_aux;
+        BOOL exact_alpha;
+        BOOL exact_color;
+    } matches[] = {
+        /* First, try without alpha match buffers. MacOS supports aux buffers only
+         * on A8R8G8B8, and we prefer better offscreen rendering over an alpha match.
+         * Then try without aux buffers - this is the most common cause for not
+         * finding a pixel format. Also some drivers(the open source ones)
+         * only offer 32 bit ARB pixel formats. First try without an exact alpha
+         * match, then try without an exact alpha and color match.
+         */
+        { TRUE,  TRUE,  TRUE  },
+        { TRUE,  FALSE, TRUE  },
+        { FALSE, TRUE,  TRUE  },
+        { FALSE, FALSE, TRUE  },
+        { TRUE,  FALSE, FALSE },
+        { FALSE, FALSE, FALSE },
+    };
+
+    int i = 0;
+    int nCfgs = This->adapter->nCfgs;
+
+    TRACE("ColorFormat=%s, DepthStencilFormat=%s, auxBuffers=%d, numSamples=%d, pbuffer=%d, findCompatible=%d\n",
+          debug_d3dformat(ColorFormat), debug_d3dformat(DepthStencilFormat), auxBuffers, numSamples, pbuffer, findCompatible);
+
+    if(!getColorBits(ColorFormat, &redBits, &greenBits, &blueBits, &alphaBits, &colorBits)) {
+        ERR("Unable to get color bits for format %s (%#x)!\n", debug_d3dformat(ColorFormat), ColorFormat);
+        return 0;
+    }
+
+    /* In WGL both color, depth and stencil are features of a pixel format. In case of D3D they are separate.
+     * You are able to add a depth + stencil surface at a later stage when you need it.
+     * In order to support this properly in WineD3D we need the ability to recreate the opengl context and
+     * drawable when this is required. This is very tricky as we need to reapply ALL opengl states for the new
+     * context, need torecreate shaders, textures and other resources.
+     *
+     * The context manager already takes care of the state problem and for the other tasks code from Reset
+     * can be used. These changes are way to risky during the 1.0 code freeze which is taking place right now.
+     * Likely a lot of other new bugs will be exposed. For that reason request a depth stencil surface all the
+     * time. It can cause a slight performance hit but fixes a lot of regressions. A fixme reminds of that this
+     * issue needs to be fixed. */
+    if(DepthStencilFormat != WINED3DFMT_D24S8)
+        FIXME("Add OpenGL context recreation support to SetDepthStencilSurface\n");
+
+    DepthStencilFormat = WINED3DFMT_D24S8;
+
+    if(DepthStencilFormat) {
+        getDepthStencilBits(DepthStencilFormat, &depthBits, &stencilBits);
+    }
+
+    for(matchtry = 0; matchtry < (sizeof(matches) / sizeof(matches[0])) && !iPixelFormat; matchtry++) {
+        for(i=0; i<nCfgs; i++) {
+            BOOL exactDepthMatch = TRUE;
+            WineD3D_PixelFormat *cfg = &This->adapter->cfgs[i];
+
+            /* For now only accept RGBA formats. Perhaps some day we will
+             * allow floating point formats for pbuffers. */
+            if(cfg->iPixelType != WGL_TYPE_RGBA_ARB)
+                continue;
+
+            /* In window mode (!pbuffer) we need a window drawable format and double buffering. */
+            if(!pbuffer && !(cfg->windowDrawable && cfg->doubleBuffer))
+                continue;
+
+            /* We like to have aux buffers in backbuffer mode */
+            if(auxBuffers && !cfg->auxBuffers && matches[matchtry].require_aux)
+                continue;
+
+            /* In pbuffer-mode we need a pbuffer-capable format but we don't want double buffering */
+            if(pbuffer && (!cfg->pbufferDrawable || cfg->doubleBuffer))
+                continue;
+
+            if(matches[matchtry].exact_color) {
+                if(cfg->redSize != redBits)
+                    continue;
+                if(cfg->greenSize != greenBits)
+                    continue;
+                if(cfg->blueSize != blueBits)
+                    continue;
+            } else {
+                if(cfg->redSize < redBits)
+                    continue;
+                if(cfg->greenSize < greenBits)
+                    continue;
+                if(cfg->blueSize < blueBits)
+                    continue;
+            }
+            if(matches[matchtry].exact_alpha) {
+                if(cfg->alphaSize != alphaBits)
+                    continue;
+            } else {
+                if(cfg->alphaSize < alphaBits)
+                    continue;
+            }
+
+            /* We try to locate a format which matches our requirements exactly. In case of
+             * depth it is no problem to emulate 16-bit using e.g. 24-bit, so accept that. */
+            if(cfg->depthSize < depthBits)
+                continue;
+            else if(cfg->depthSize > depthBits)
+                exactDepthMatch = FALSE;
+
+            /* In all cases make sure the number of stencil bits matches our requirements
+             * even when we don't need stencil because it could affect performance EXCEPT
+             * on cards which don't offer depth formats without stencil like the i915 drivers
+             * on Linux. */
+            if(stencilBits != cfg->stencilSize && !(This->adapter->brokenStencil && stencilBits <= cfg->stencilSize))
+                continue;
+
+            /* Check multisampling support */
+            if(cfg->numSamples != numSamples)
+                continue;
+
+            /* When we have passed all the checks then we have found a format which matches our
+             * requirements. Note that we only check for a limit number of capabilities right now,
+             * so there can easily be a dozen of pixel formats which appear to be the 'same' but
+             * can still differ in things like multisampling, stereo, SRGB and other flags.
+             */
+
+            /* Exit the loop as we have found a format :) */
+            if(exactDepthMatch) {
+                iPixelFormat = cfg->iPixelFormat;
+                break;
+            } else if(!iPixelFormat) {
+                /* In the end we might end up with a format which doesn't exactly match our depth
+                 * requirements. Accept the first format we found because formats with higher iPixelFormat
+                 * values tend to have more extended capabilities (e.g. multisampling) which we don't need. */
+                iPixelFormat = cfg->iPixelFormat;
+            }
+        }
+    }
+
+    /* When findCompatible is set and no suitable format was found, let ChoosePixelFormat choose a pixel format in order not to crash. */
+    if(!iPixelFormat && !findCompatible) {
+        ERR("Can't find a suitable iPixelFormat\n");
+        return FALSE;
+    } else if(!iPixelFormat) {
+        PIXELFORMATDESCRIPTOR pfd;
+
+        TRACE("Falling back to ChoosePixelFormat as we weren't able to find an exactly matching pixel format\n");
+        /* PixelFormat selection */
+        ZeroMemory(&pfd, sizeof(pfd));
+        pfd.nSize      = sizeof(pfd);
+        pfd.nVersion   = 1;
+        pfd.dwFlags    = PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER | PFD_DRAW_TO_WINDOW;/*PFD_GENERIC_ACCELERATED*/
+        pfd.iPixelType = PFD_TYPE_RGBA;
+        pfd.cAlphaBits = alphaBits;
+        pfd.cColorBits = colorBits;
+        pfd.cDepthBits = depthBits;
+        pfd.cStencilBits = stencilBits;
+        pfd.iLayerType = PFD_MAIN_PLANE;
+
+        iPixelFormat = ChoosePixelFormat(hdc, &pfd);
+        if(!iPixelFormat) {
+            /* If this happens something is very wrong as ChoosePixelFormat barely fails */
+            ERR("Can't find a suitable iPixelFormat\n");
+            return FALSE;
+        }
+    }
+
+    TRACE("Found iPixelFormat=%d for ColorFormat=%s, DepthStencilFormat=%s\n", iPixelFormat, debug_d3dformat(ColorFormat), debug_d3dformat(DepthStencilFormat));
+    return iPixelFormat;
+}
+
+/*****************************************************************************
+ * CreateContext
+ *
+ * Creates a new context for a window, or a pbuffer context.
+ *
+ * * Params:
+ *  This: Device to activate the context for
+ *  target: Surface this context will render to
+ *  win_handle: handle to the window which we are drawing to
+ *  create_pbuffer: tells whether to create a pbuffer or not
+ *  pPresentParameters: contains the pixelformats to use for onscreen rendering
+ *
+ *****************************************************************************/
+WineD3DContext *CreateContext(IWineD3DDeviceImpl *This, IWineD3DSurfaceImpl *target, HWND win_handle, BOOL create_pbuffer, const WINED3DPRESENT_PARAMETERS *pPresentParms) {
+    HDC oldDrawable, hdc;
+    HPBUFFERARB pbuffer = NULL;
+    HGLRC ctx = NULL, oldCtx;
+    WineD3DContext *ret = NULL;
+    int s;
+
+    TRACE("(%p): Creating a %s context for render target %p\n", This, create_pbuffer ? "offscreen" : "onscreen", target);
+
+    if(create_pbuffer) {
+        HDC hdc_parent = GetDC(win_handle);
+        int iPixelFormat = 0;
+
+        IWineD3DSurface *StencilSurface = This->stencilBufferTarget;
+        WINED3DFORMAT StencilBufferFormat = (NULL != StencilSurface) ? ((IWineD3DSurfaceImpl *) StencilSurface)->resource.format : 0;
+
+        /* Try to find a pixel format with pbuffer support. */
+        iPixelFormat = WineD3D_ChoosePixelFormat(This, hdc_parent, target->resource.format, StencilBufferFormat, FALSE /* auxBuffers */, 0 /* numSamples */, TRUE /* PBUFFER */, FALSE /* findCompatible */);
+        if(!iPixelFormat) {
+            TRACE("Trying to locate a compatible pixel format because an exact match failed.\n");
+
+            /* For some reason we weren't able to find a format, try to find something instead of crashing.
+             * A reason for failure could have been wglChoosePixelFormatARB strictness. */
+            iPixelFormat = WineD3D_ChoosePixelFormat(This, hdc_parent, target->resource.format, StencilBufferFormat, FALSE /* auxBuffer */, 0 /* numSamples */, TRUE /* PBUFFER */, TRUE /* findCompatible */);
+        }
+
+        /* This shouldn't happen as ChoosePixelFormat always returns something */
+        if(!iPixelFormat) {
+            ERR("Unable to locate a pixel format for a pbuffer\n");
+            ReleaseDC(win_handle, hdc_parent);
+            goto out;
+        }
+
+        TRACE("Creating a pBuffer drawable for the new context\n");
+        pbuffer = GL_EXTCALL(wglCreatePbufferARB(hdc_parent, iPixelFormat, target->currentDesc.Width, target->currentDesc.Height, 0));
+        if(!pbuffer) {
+            ERR("Cannot create a pbuffer\n");
+            ReleaseDC(win_handle, hdc_parent);
+            goto out;
+        }
+
+        /* In WGL a pbuffer is 'wrapped' inside a HDC to 'fool' wglMakeCurrent */
+        hdc = GL_EXTCALL(wglGetPbufferDCARB(pbuffer));
+        if(!hdc) {
+            ERR("Cannot get a HDC for pbuffer (%p)\n", pbuffer);
+            GL_EXTCALL(wglDestroyPbufferARB(pbuffer));
+            ReleaseDC(win_handle, hdc_parent);
+            goto out;
+        }
+        ReleaseDC(win_handle, hdc_parent);
+    } else {
+        PIXELFORMATDESCRIPTOR pfd;
+        int iPixelFormat;
+        int res;
+        WINED3DFORMAT ColorFormat = target->resource.format;
+        WINED3DFORMAT DepthStencilFormat = 0;
+        BOOL auxBuffers = FALSE;
+        int numSamples = 0;
+
+        hdc = GetDC(win_handle);
+        if(hdc == NULL) {
+            ERR("Cannot retrieve a device context!\n");
+            goto out;
+        }
+
+        /* In case of ORM_BACKBUFFER, make sure to request an alpha component for X4R4G4B4/X8R8G8B8 as we might need it for the backbuffer. */
+        if(wined3d_settings.offscreen_rendering_mode == ORM_BACKBUFFER) {
+            auxBuffers = TRUE;
+
+            if(target->resource.format == WINED3DFMT_X4R4G4B4)
+                ColorFormat = WINED3DFMT_A4R4G4B4;
+            else if(target->resource.format == WINED3DFMT_X8R8G8B8)
+                ColorFormat = WINED3DFMT_A8R8G8B8;
+        }
+
+        /* DirectDraw supports 8bit paletted render targets and these are used by old games like Starcraft and C&C.
+         * Most modern hardware doesn't support 8bit natively so we perform some form of 8bit -> 32bit conversion.
+         * The conversion (ab)uses the alpha component for storing the palette index. For this reason we require
+         * a format with 8bit alpha, so request A8R8G8B8. */
+        if(ColorFormat == WINED3DFMT_P8)
+            ColorFormat = WINED3DFMT_A8R8G8B8;
+
+        /* Retrieve the depth stencil format from the present parameters.
+         * The choice of the proper format can give a nice performance boost
+         * in case of GPU limited programs. */
+        if(pPresentParms->EnableAutoDepthStencil) {
+            TRACE("pPresentParms->EnableAutoDepthStencil=enabled; using AutoDepthStencilFormat=%s\n", debug_d3dformat(pPresentParms->AutoDepthStencilFormat));
+            DepthStencilFormat = pPresentParms->AutoDepthStencilFormat;
+        }
+
+        /* D3D only allows multisampling when SwapEffect is set to WINED3DSWAPEFFECT_DISCARD */
+        if(pPresentParms->MultiSampleType && (pPresentParms->SwapEffect == WINED3DSWAPEFFECT_DISCARD)) {
+            if(!GL_SUPPORT(ARB_MULTISAMPLE))
+                ERR("The program is requesting multisampling without support!\n");
+            else {
+                ERR("Requesting MultiSampleType=%d\n", pPresentParms->MultiSampleType);
+                numSamples = pPresentParms->MultiSampleType;
+            }
+        }
+
+        /* Try to find a pixel format which matches our requirements */
+        iPixelFormat = WineD3D_ChoosePixelFormat(This, hdc, ColorFormat, DepthStencilFormat, auxBuffers, numSamples, FALSE /* PBUFFER */, FALSE /* findCompatible */);
+
+        /* Try to locate a compatible format if we weren't able to find anything */
+        if(!iPixelFormat) {
+            TRACE("Trying to locate a compatible pixel format because an exact match failed.\n");
+            iPixelFormat = WineD3D_ChoosePixelFormat(This, hdc, ColorFormat, DepthStencilFormat, auxBuffers, 0 /* numSamples */, FALSE /* PBUFFER */, TRUE /* findCompatible */ );
+        }
+
+        /* If we still don't have a pixel format, something is very wrong as ChoosePixelFormat barely fails */
+        if(!iPixelFormat) {
+            ERR("Can't find a suitable iPixelFormat\n");
+            return FALSE;
+        }
+
+        DescribePixelFormat(hdc, iPixelFormat, sizeof(pfd), &pfd);
+        res = SetPixelFormat(hdc, iPixelFormat, NULL);
+        if(!res) {
+            int oldPixelFormat = GetPixelFormat(hdc);
+
+            /* By default WGL doesn't allow pixel format adjustments but we need it here.
+             * For this reason there is a WINE-specific wglSetPixelFormat which allows you to
+             * set the pixel format multiple times. Only use it when it is really needed. */
+
+            if(oldPixelFormat == iPixelFormat) {
+                /* We don't have to do anything as the formats are the same :) */
+            } else if(oldPixelFormat && GL_SUPPORT(WGL_WINE_PIXEL_FORMAT_PASSTHROUGH)) {
+                res = GL_EXTCALL(wglSetPixelFormatWINE(hdc, iPixelFormat, NULL));
+
+                if(!res) {
+                    ERR("wglSetPixelFormatWINE failed on HDC=%p for iPixelFormat=%d\n", hdc, iPixelFormat);
+                    return FALSE;
+                }
+            } else if(oldPixelFormat) {
+                /* OpenGL doesn't allow pixel format adjustments. Print an error and continue using the old format.
+                 * There's a big chance that the old format works although with a performance hit and perhaps rendering errors. */
+                ERR("HDC=%p is already set to iPixelFormat=%d and OpenGL doesn't allow changes!\n", hdc, oldPixelFormat);
+            } else {
+                ERR("SetPixelFormat failed on HDC=%p for iPixelFormat=%d\n", hdc, iPixelFormat);
+                return FALSE;
+            }
+        }
+    }
+
+    ctx = pwglCreateContext(hdc);
+    if(This->numContexts) pwglShareLists(This->contexts[0]->glCtx, ctx);
+
+    if(!ctx) {
+        ERR("Failed to create a WGL context\n");
+        if(create_pbuffer) {
+            GL_EXTCALL(wglReleasePbufferDCARB(pbuffer, hdc));
+            GL_EXTCALL(wglDestroyPbufferARB(pbuffer));
+        }
+        goto out;
+    }
+    ret = AddContextToArray(This, win_handle, hdc, ctx, pbuffer);
+    if(!ret) {
+        ERR("Failed to add the newly created context to the context list\n");
+        pwglDeleteContext(ctx);
+        if(create_pbuffer) {
+            GL_EXTCALL(wglReleasePbufferDCARB(pbuffer, hdc));
+            GL_EXTCALL(wglDestroyPbufferARB(pbuffer));
+        }
+        goto out;
+    }
+    ret->surface = (IWineD3DSurface *) target;
+    ret->isPBuffer = create_pbuffer;
+    ret->tid = GetCurrentThreadId();
+    if(This->shader_backend->shader_dirtifyable_constants((IWineD3DDevice *) This)) {
+        /* Create the dirty constants array and initialize them to dirty */
+        ret->vshader_const_dirty = HeapAlloc(GetProcessHeap(), 0,
+                sizeof(*ret->vshader_const_dirty) * GL_LIMITS(vshader_constantsF));
+        ret->pshader_const_dirty = HeapAlloc(GetProcessHeap(), 0,
+                sizeof(*ret->pshader_const_dirty) * GL_LIMITS(pshader_constantsF));
+        memset(ret->vshader_const_dirty, 1,
+               sizeof(*ret->vshader_const_dirty) * GL_LIMITS(vshader_constantsF));
+        memset(ret->pshader_const_dirty, 1,
+                sizeof(*ret->pshader_const_dirty) * GL_LIMITS(pshader_constantsF));
+    }
+
+    TRACE("Successfully created new context %p\n", ret);
+
+    list_init(&ret->fbo_list);
+
+    /* Set up the context defaults */
+    oldCtx  = pwglGetCurrentContext();
+    oldDrawable = pwglGetCurrentDC();
+    if(oldCtx && oldDrawable) {
+        /* See comment in ActivateContext context switching */
+        This->frag_pipe->enable_extension((IWineD3DDevice *) This, FALSE);
+    }
+    if(pwglMakeCurrent(hdc, ctx) == FALSE) {
+        ERR("Cannot activate context to set up defaults\n");
+        goto out;
+    }
+
+    ENTER_GL();
+
+    glGetIntegerv(GL_AUX_BUFFERS, &ret->aux_buffers);
+
+    TRACE("Setting up the screen\n");
+    /* Clear the screen */
+    glClearColor(1.0, 0.0, 0.0, 0.0);
+    checkGLcall("glClearColor");
+    glClearIndex(0);
+    glClearDepth(1);
+    glClearStencil(0xffff);
+
+    checkGLcall("glClear");
+
+    glColor3f(1.0, 1.0, 1.0);
+    checkGLcall("glColor3f");
+
+    glEnable(GL_LIGHTING);
+    checkGLcall("glEnable");
+
+    glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE);
+    checkGLcall("glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE);");
+
+    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT);
+    checkGLcall("glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT);");
+
+    glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR);
+    checkGLcall("glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR);");
+
+    glPixelStorei(GL_PACK_ALIGNMENT, This->surface_alignment);
+    checkGLcall("glPixelStorei(GL_PACK_ALIGNMENT, This->surface_alignment);");
+    glPixelStorei(GL_UNPACK_ALIGNMENT, This->surface_alignment);
+    checkGLcall("glPixelStorei(GL_UNPACK_ALIGNMENT, This->surface_alignment);");
+
+    if(GL_SUPPORT(APPLE_CLIENT_STORAGE)) {
+        /* Most textures will use client storage if supported. Exceptions are non-native power of 2 textures
+         * and textures in DIB sections(due to the memory protection).
+         */
+        glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_TRUE);
+        checkGLcall("glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_TRUE)");
+    }
+    if(GL_SUPPORT(ARB_VERTEX_BLEND)) {
+        /* Direct3D always uses n-1 weights for n world matrices and uses 1 - sum for the last one
+         * this is equal to GL_WEIGHT_SUM_UNITY_ARB. Enabling it doesn't do anything unless
+         * GL_VERTEX_BLEND_ARB isn't enabled too
+         */
+        glEnable(GL_WEIGHT_SUM_UNITY_ARB);
+        checkGLcall("glEnable(GL_WEIGHT_SUM_UNITY_ARB)");
+    }
+    if(GL_SUPPORT(NV_TEXTURE_SHADER2)) {
+        /* Set up the previous texture input for all shader units. This applies to bump mapping, and in d3d
+         * the previous texture where to source the offset from is always unit - 1.
+         */
+        for(s = 1; s < GL_LIMITS(textures); s++) {
+            GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB + s));
+            glTexEnvi(GL_TEXTURE_SHADER_NV, GL_PREVIOUS_TEXTURE_INPUT_NV, GL_TEXTURE0_ARB + s - 1);
+            checkGLcall("glTexEnvi(GL_TEXTURE_SHADER_NV, GL_PREVIOUS_TEXTURE_INPUT_NV, ...\n");
+        }
+    }
+
+    if(GL_SUPPORT(ARB_POINT_SPRITE)) {
+        for(s = 0; s < GL_LIMITS(textures); s++) {
+            GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB + s));
+            glTexEnvi(GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE);
+            checkGLcall("glTexEnvi(GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE)\n");
+        }
+    }
+    LEAVE_GL();
+
+    /* Never keep GL_FRAGMENT_SHADER_ATI enabled on a context that we switch away from,
+     * but enable it for the first context we create, and reenable it on the old context
+     */
+    if(oldDrawable && oldCtx) {
+        pwglMakeCurrent(oldDrawable, oldCtx);
+    } else {
+        last_device = This;
+    }
+    This->frag_pipe->enable_extension((IWineD3DDevice *) This, TRUE);
+
+    return ret;
+
+out:
+    return NULL;
+}
+
+/*****************************************************************************
+ * RemoveContextFromArray
+ *
+ * Removes a context from the context manager. The opengl context is not
+ * destroyed or unset. context is not a valid pointer after that call.
+ *
+ * Similar to the former call this isn't a performance critical function. A
+ * helper function for DestroyContext.
+ *
+ * Params:
+ *  This: Device to activate the context for
+ *  context: Context to remove
+ *
+ *****************************************************************************/
+static void RemoveContextFromArray(IWineD3DDeviceImpl *This, WineD3DContext *context) {
+    UINT t, s;
+    WineD3DContext **oldArray = This->contexts;
+
+    TRACE("Removing ctx %p\n", context);
+
+    This->numContexts--;
+
+    if(This->numContexts) {
+        This->contexts = HeapAlloc(GetProcessHeap(), 0, sizeof(*This->contexts) * This->numContexts);
+        if(!This->contexts) {
+            ERR("Cannot allocate a new context array, PANIC!!!\n");
+        }
+        t = 0;
+        /* Note that we decreased numContexts a few lines up, so use '<=' instead of '<' */
+        for(s = 0; s <= This->numContexts; s++) {
+            if(oldArray[s] == context) continue;
+            This->contexts[t] = oldArray[s];
+            t++;
+        }
+    } else {
+        This->contexts = NULL;
+    }
+
+    HeapFree(GetProcessHeap(), 0, context);
+    HeapFree(GetProcessHeap(), 0, oldArray);
+}
+
+/*****************************************************************************
+ * DestroyContext
+ *
+ * Destroys a wineD3DContext
+ *
+ * Params:
+ *  This: Device to activate the context for
+ *  context: Context to destroy
+ *
+ *****************************************************************************/
+void DestroyContext(IWineD3DDeviceImpl *This, WineD3DContext *context) {
+    struct fbo_entry *entry, *entry2;
+
+    TRACE("Destroying ctx %p\n", context);
+
+    /* The correct GL context needs to be active to cleanup the GL resources below */
+    if(pwglGetCurrentContext() != context->glCtx){
+        pwglMakeCurrent(context->hdc, context->glCtx);
+        last_device = NULL;
+    }
+
+    ENTER_GL();
+
+    LIST_FOR_EACH_ENTRY_SAFE(entry, entry2, &context->fbo_list, struct fbo_entry, entry) {
+        context_destroy_fbo_entry(This, entry);
+    }
+    if (context->src_fbo) {
+        TRACE("Destroy src FBO %d\n", context->src_fbo);
+        context_destroy_fbo(This, &context->src_fbo);
+    }
+    if (context->dst_fbo) {
+        TRACE("Destroy dst FBO %d\n", context->dst_fbo);
+        context_destroy_fbo(This, &context->dst_fbo);
+    }
+
+    LEAVE_GL();
+
+    /* Cleanup the GL context */
+    pwglMakeCurrent(NULL, NULL);
+    if(context->isPBuffer) {
+        GL_EXTCALL(wglReleasePbufferDCARB(context->pbuffer, context->hdc));
+        GL_EXTCALL(wglDestroyPbufferARB(context->pbuffer));
+    } else ReleaseDC(context->win_handle, context->hdc);
+    pwglDeleteContext(context->glCtx);
+
+    HeapFree(GetProcessHeap(), 0, context->vshader_const_dirty);
+    HeapFree(GetProcessHeap(), 0, context->pshader_const_dirty);
+    RemoveContextFromArray(This, context);
+}
+
+static inline void set_blit_dimension(UINT width, UINT height) {
+    glMatrixMode(GL_PROJECTION);
+    checkGLcall("glMatrixMode(GL_PROJECTION)");
+    glLoadIdentity();
+    checkGLcall("glLoadIdentity()");
+    glOrtho(0, width, height, 0, 0.0, -1.0);
+    checkGLcall("glOrtho");
+    glViewport(0, 0, width, height);
+    checkGLcall("glViewport");
+}
+
+/*****************************************************************************
+ * SetupForBlit
+ *
+ * Sets up a context for DirectDraw blitting.
+ * All texture units are disabled, texture unit 0 is set as current unit
+ * fog, lighting, blending, alpha test, z test, scissor test, culling disabled
+ * color writing enabled for all channels
+ * register combiners disabled, shaders disabled
+ * world matrix is set to identity, texture matrix 0 too
+ * projection matrix is setup for drawing screen coordinates
+ *
+ * Params:
+ *  This: Device to activate the context for
+ *  context: Context to setup
+ *  width: render target width
+ *  height: render target height
+ *
+ *****************************************************************************/
+static inline void SetupForBlit(IWineD3DDeviceImpl *This, WineD3DContext *context, UINT width, UINT height) {
+    int i, sampler;
+    const struct StateEntry *StateTable = This->StateTable;
+
+    TRACE("Setting up context %p for blitting\n", context);
+    if(context->last_was_blit) {
+        if(context->blit_w != width || context->blit_h != height) {
+            set_blit_dimension(width, height);
+            context->blit_w = width; context->blit_h = height;
+            /* No need to dirtify here, the states are still dirtified because they weren't
+             * applied since the last SetupForBlit call. Otherwise last_was_blit would not
+             * be set
+             */
+        }
+        TRACE("Context is already set up for blitting, nothing to do\n");
+        return;
+    }
+    context->last_was_blit = TRUE;
+
+    /* TODO: Use a display list */
+
+    /* Disable shaders */
+    This->shader_backend->shader_cleanup((IWineD3DDevice *) This);
+    Context_MarkStateDirty(context, STATE_VSHADER, StateTable);
+    Context_MarkStateDirty(context, STATE_PIXELSHADER, StateTable);
+
+    /* Call ENTER_GL() once for all gl calls below. In theory we should not call
+     * helper functions in between gl calls. This function is full of Context_MarkStateDirty
+     * which can safely be called from here, we only lock once instead locking/unlocking
+     * after each GL call.
+     */
+    ENTER_GL();
+
+    /* Disable all textures. The caller can then bind a texture it wants to blit
+     * from
+     */
+    if (GL_SUPPORT(ARB_MULTITEXTURE)) {
+        /* The blitting code uses (for now) the fixed function pipeline, so make sure to reset all fixed
+         * function texture unit. No need to care for higher samplers
+         */
+        for(i = GL_LIMITS(textures) - 1; i > 0 ; i--) {
+            sampler = This->rev_tex_unit_map[i];
+            GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB + i));
+            checkGLcall("glActiveTextureARB");
+
+            if(GL_SUPPORT(ARB_TEXTURE_CUBE_MAP)) {
+                glDisable(GL_TEXTURE_CUBE_MAP_ARB);
+                checkGLcall("glDisable GL_TEXTURE_CUBE_MAP_ARB");
+            }
+            glDisable(GL_TEXTURE_3D);
+            checkGLcall("glDisable GL_TEXTURE_3D");
+            if(GL_SUPPORT(ARB_TEXTURE_RECTANGLE)) {
+                glDisable(GL_TEXTURE_RECTANGLE_ARB);
+                checkGLcall("glDisable GL_TEXTURE_RECTANGLE_ARB");
+            }
+            glDisable(GL_TEXTURE_2D);
+            checkGLcall("glDisable GL_TEXTURE_2D");
+
+            glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
+            checkGLcall("glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);");
+
+            if (sampler != -1) {
+                if (sampler < MAX_TEXTURES) {
+                    Context_MarkStateDirty(context, STATE_TEXTURESTAGE(sampler, WINED3DTSS_COLOROP), StateTable);
+                }
+                Context_MarkStateDirty(context, STATE_SAMPLER(sampler), StateTable);
+            }
+        }
+        GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB));
+        checkGLcall("glActiveTextureARB");
+    }
+
+    sampler = This->rev_tex_unit_map[0];
+
+    if(GL_SUPPORT(ARB_TEXTURE_CUBE_MAP)) {
+        glDisable(GL_TEXTURE_CUBE_MAP_ARB);
+        checkGLcall("glDisable GL_TEXTURE_CUBE_MAP_ARB");
+    }
+    glDisable(GL_TEXTURE_3D);
+    checkGLcall("glDisable GL_TEXTURE_3D");
+    if(GL_SUPPORT(ARB_TEXTURE_RECTANGLE)) {
+        glDisable(GL_TEXTURE_RECTANGLE_ARB);
+        checkGLcall("glDisable GL_TEXTURE_RECTANGLE_ARB");
+    }
+    glDisable(GL_TEXTURE_2D);
+    checkGLcall("glDisable GL_TEXTURE_2D");
+
+    glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
+
+    glMatrixMode(GL_TEXTURE);
+    checkGLcall("glMatrixMode(GL_TEXTURE)");
+    glLoadIdentity();
+    checkGLcall("glLoadIdentity()");
+
+    if (GL_SUPPORT(EXT_TEXTURE_LOD_BIAS)) {
+        glTexEnvf(GL_TEXTURE_FILTER_CONTROL_EXT,
+                  GL_TEXTURE_LOD_BIAS_EXT,
+                  0.0);
+        checkGLcall("glTexEnvi GL_TEXTURE_LOD_BIAS_EXT ...");
+    }
+
+    if (sampler != -1) {
+        if (sampler < MAX_TEXTURES) {
+            Context_MarkStateDirty(context, STATE_TRANSFORM(WINED3DTS_TEXTURE0 + sampler), StateTable);
+            Context_MarkStateDirty(context, STATE_TEXTURESTAGE(sampler, WINED3DTSS_COLOROP), StateTable);
+        }
+        Context_MarkStateDirty(context, STATE_SAMPLER(sampler), StateTable);
+    }
+
+    /* Other misc states */
+    glDisable(GL_ALPHA_TEST);
+    checkGLcall("glDisable(GL_ALPHA_TEST)");
+    Context_MarkStateDirty(context, STATE_RENDER(WINED3DRS_ALPHATESTENABLE), StateTable);
+    glDisable(GL_LIGHTING);
+    checkGLcall("glDisable GL_LIGHTING");
+    Context_MarkStateDirty(context, STATE_RENDER(WINED3DRS_LIGHTING), StateTable);
+    glDisable(GL_DEPTH_TEST);
+    checkGLcall("glDisable GL_DEPTH_TEST");
+    Context_MarkStateDirty(context, STATE_RENDER(WINED3DRS_ZENABLE), StateTable);
+    glDisable(GL_FOG);
+    checkGLcall("glDisable GL_FOG");
+    Context_MarkStateDirty(context, STATE_RENDER(WINED3DRS_FOGENABLE), StateTable);
+    glDisable(GL_BLEND);
+    checkGLcall("glDisable GL_BLEND");
+    Context_MarkStateDirty(context, STATE_RENDER(WINED3DRS_ALPHABLENDENABLE), StateTable);
+    glDisable(GL_CULL_FACE);
+    checkGLcall("glDisable GL_CULL_FACE");
+    Context_MarkStateDirty(context, STATE_RENDER(WINED3DRS_CULLMODE), StateTable);
+    glDisable(GL_STENCIL_TEST);
+    checkGLcall("glDisable GL_STENCIL_TEST");
+    Context_MarkStateDirty(context, STATE_RENDER(WINED3DRS_STENCILENABLE), StateTable);
+    glDisable(GL_SCISSOR_TEST);
+    checkGLcall("glDisable GL_SCISSOR_TEST");
+    Context_MarkStateDirty(context, STATE_RENDER(WINED3DRS_SCISSORTESTENABLE), StateTable);
+    if(GL_SUPPORT(ARB_POINT_SPRITE)) {
+        glDisable(GL_POINT_SPRITE_ARB);
+        checkGLcall("glDisable GL_POINT_SPRITE_ARB");
+        Context_MarkStateDirty(context, STATE_RENDER(WINED3DRS_POINTSPRITEENABLE), StateTable);
+    }
+    glColorMask(GL_TRUE, GL_TRUE,GL_TRUE,GL_TRUE);
+    checkGLcall("glColorMask");
+    Context_MarkStateDirty(context, STATE_RENDER(WINED3DRS_CLIPPING), StateTable);
+    if (GL_SUPPORT(EXT_SECONDARY_COLOR)) {
+        glDisable(GL_COLOR_SUM_EXT);
+        Context_MarkStateDirty(context, STATE_RENDER(WINED3DRS_SPECULARENABLE), StateTable);
+        checkGLcall("glDisable(GL_COLOR_SUM_EXT)");
+    }
+
+    /* Setup transforms */
+    glMatrixMode(GL_MODELVIEW);
+    checkGLcall("glMatrixMode(GL_MODELVIEW)");
+    glLoadIdentity();
+    checkGLcall("glLoadIdentity()");
+    Context_MarkStateDirty(context, STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(0)), StateTable);
+
+    context->last_was_rhw = TRUE;
+    Context_MarkStateDirty(context, STATE_VDECL, StateTable); /* because of last_was_rhw = TRUE */
+
+    glDisable(GL_CLIP_PLANE0); checkGLcall("glDisable(clip plane 0)");
+    glDisable(GL_CLIP_PLANE1); checkGLcall("glDisable(clip plane 1)");
+    glDisable(GL_CLIP_PLANE2); checkGLcall("glDisable(clip plane 2)");
+    glDisable(GL_CLIP_PLANE3); checkGLcall("glDisable(clip plane 3)");
+    glDisable(GL_CLIP_PLANE4); checkGLcall("glDisable(clip plane 4)");
+    glDisable(GL_CLIP_PLANE5); checkGLcall("glDisable(clip plane 5)");
+    Context_MarkStateDirty(context, STATE_RENDER(WINED3DRS_CLIPPING), StateTable);
+    LEAVE_GL();
+
+    set_blit_dimension(width, height);
+    context->blit_w = width; context->blit_h = height;
+    Context_MarkStateDirty(context, STATE_VIEWPORT, StateTable);
+    Context_MarkStateDirty(context, STATE_TRANSFORM(WINED3DTS_PROJECTION), StateTable);
+
+
+    This->frag_pipe->enable_extension((IWineD3DDevice *) This, FALSE);
+}
+
+/*****************************************************************************
+ * findThreadContextForSwapChain
+ *
+ * Searches a swapchain for all contexts and picks one for the thread tid.
+ * If none can be found the swapchain is requested to create a new context
+ *
+ *****************************************************************************/
+static WineD3DContext *findThreadContextForSwapChain(IWineD3DSwapChain *swapchain, DWORD tid) {
+    unsigned int i;
+
+    for(i = 0; i < ((IWineD3DSwapChainImpl *) swapchain)->num_contexts; i++) {
+        if(((IWineD3DSwapChainImpl *) swapchain)->context[i]->tid == tid) {
+            return ((IWineD3DSwapChainImpl *) swapchain)->context[i];
+        }
+
+    }
+
+    /* Create a new context for the thread */
+    return IWineD3DSwapChainImpl_CreateContextForThread(swapchain);
+}
+
+/*****************************************************************************
+ * FindContext
+ *
+ * Finds a context for the current render target and thread
+ *
+ * Parameters:
+ *  target: Render target to find the context for
+ *  tid: Thread to activate the context for
+ *
+ * Returns: The needed context
+ *
+ *****************************************************************************/
+static inline WineD3DContext *FindContext(IWineD3DDeviceImpl *This, IWineD3DSurface *target, DWORD tid) {
+    IWineD3DSwapChain *swapchain = NULL;
+    BOOL readTexture = wined3d_settings.offscreen_rendering_mode != ORM_FBO && This->render_offscreen;
+    WineD3DContext *context = This->activeContext;
+    BOOL oldRenderOffscreen = This->render_offscreen;
+    const WINED3DFORMAT oldFmt = ((IWineD3DSurfaceImpl *) This->lastActiveRenderTarget)->resource.format;
+    const WINED3DFORMAT newFmt = ((IWineD3DSurfaceImpl *) target)->resource.format;
+    const struct StateEntry *StateTable = This->StateTable;
+
+    /* To compensate the lack of format switching with some offscreen rendering methods and on onscreen buffers
+     * the alpha blend state changes with different render target formats
+     */
+    if(oldFmt != newFmt) {
+        const struct GlPixelFormatDesc *glDesc;
+        const StaticPixelFormatDesc *old = getFormatDescEntry(oldFmt, NULL, NULL);
+        const StaticPixelFormatDesc *new = getFormatDescEntry(newFmt, &GLINFO_LOCATION, &glDesc);
+
+        /* Disable blending when the alphaMask has changed and when a format doesn't support blending */
+        if((old->alphaMask && !new->alphaMask) || (!old->alphaMask && new->alphaMask) || !(glDesc->Flags & WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING)) {
+            Context_MarkStateDirty(context, STATE_RENDER(WINED3DRS_ALPHABLENDENABLE), StateTable);
+        }
+    }
+
+    if (SUCCEEDED(IWineD3DSurface_GetContainer(target, &IID_IWineD3DSwapChain, (void **)&swapchain))) {
+        TRACE("Rendering onscreen\n");
+
+        context = findThreadContextForSwapChain(swapchain, tid);
+
+        This->render_offscreen = FALSE;
+        /* The context != This->activeContext will catch a NOP context change. This can occur
+         * if we are switching back to swapchain rendering in case of FBO or Back Buffer offscreen
+         * rendering. No context change is needed in that case
+         */
+
+        if(wined3d_settings.offscreen_rendering_mode == ORM_PBUFFER) {
+            if(This->pbufferContext && tid == This->pbufferContext->tid) {
+                This->pbufferContext->tid = 0;
+            }
+        }
+        IWineD3DSwapChain_Release(swapchain);
+
+        if(oldRenderOffscreen) {
+            Context_MarkStateDirty(context, WINED3DTS_PROJECTION, StateTable);
+            Context_MarkStateDirty(context, STATE_VDECL, StateTable);
+            Context_MarkStateDirty(context, STATE_VIEWPORT, StateTable);
+            Context_MarkStateDirty(context, STATE_SCISSORRECT, StateTable);
+            Context_MarkStateDirty(context, STATE_FRONTFACE, StateTable);
+        }
+
+    } else {
+        TRACE("Rendering offscreen\n");
+        This->render_offscreen = TRUE;
+
+        switch(wined3d_settings.offscreen_rendering_mode) {
+            case ORM_FBO:
+                /* FBOs do not need a different context. Stay with whatever context is active at the moment */
+                if(This->activeContext && tid == This->lastThread) {
+                    context = This->activeContext;
+                } else {
+                    /* This may happen if the app jumps straight into offscreen rendering
+                     * Start using the context of the primary swapchain. tid == 0 is no problem
+                     * for findThreadContextForSwapChain.
+                     *
+                     * Can also happen on thread switches - in that case findThreadContextForSwapChain
+                     * is perfect to call.
+                     */
+                    context = findThreadContextForSwapChain(This->swapchains[0], tid);
+                }
+                break;
+
+            case ORM_PBUFFER:
+            {
+                IWineD3DSurfaceImpl *targetimpl = (IWineD3DSurfaceImpl *) target;
+                if(This->pbufferContext == NULL ||
+                   This->pbufferWidth < targetimpl->currentDesc.Width ||
+                   This->pbufferHeight < targetimpl->currentDesc.Height) {
+                    if(This->pbufferContext) {
+                        DestroyContext(This, This->pbufferContext);
+                    }
+
+                    /* The display is irrelevant here, the window is 0. But CreateContext needs a valid X connection.
+                     * Create the context on the same server as the primary swapchain. The primary swapchain is exists at this point.
+                     */
+                    This->pbufferContext = CreateContext(This, targetimpl,
+                            ((IWineD3DSwapChainImpl *) This->swapchains[0])->context[0]->win_handle,
+                            TRUE /* pbuffer */, &((IWineD3DSwapChainImpl *)This->swapchains[0])->presentParms);
+                    This->pbufferWidth = targetimpl->currentDesc.Width;
+                    This->pbufferHeight = targetimpl->currentDesc.Height;
+                   }
+
+                   if(This->pbufferContext) {
+                       if(This->pbufferContext->tid != 0 && This->pbufferContext->tid != tid) {
+                           FIXME("The PBuffr context is only supported for one thread for now!\n");
+                       }
+                       This->pbufferContext->tid = tid;
+                       context = This->pbufferContext;
+                       break;
+                   } else {
+                       ERR("Failed to create a buffer context and drawable, falling back to back buffer offscreen rendering\n");
+                       wined3d_settings.offscreen_rendering_mode = ORM_BACKBUFFER;
+                   }
+            }
+
+            case ORM_BACKBUFFER:
+                /* Stay with the currently active context for back buffer rendering */
+                if(This->activeContext && tid == This->lastThread) {
+                    context = This->activeContext;
+                } else {
+                    /* This may happen if the app jumps straight into offscreen rendering
+                     * Start using the context of the primary swapchain. tid == 0 is no problem
+                     * for findThreadContextForSwapChain.
+                     *
+                     * Can also happen on thread switches - in that case findThreadContextForSwapChain
+                     * is perfect to call.
+                     */
+                    context = findThreadContextForSwapChain(This->swapchains[0], tid);
+                }
+                break;
+        }
+
+        if(!oldRenderOffscreen) {
+            Context_MarkStateDirty(context, WINED3DTS_PROJECTION, StateTable);
+            Context_MarkStateDirty(context, STATE_VDECL, StateTable);
+            Context_MarkStateDirty(context, STATE_VIEWPORT, StateTable);
+            Context_MarkStateDirty(context, STATE_SCISSORRECT, StateTable);
+            Context_MarkStateDirty(context, STATE_FRONTFACE, StateTable);
+        }
+    }
+
+    /* When switching away from an offscreen render target, and we're not using FBOs,
+     * we have to read the drawable into the texture. This is done via PreLoad(and
+     * SFLAG_INDRAWABLE set on the surface). There are some things that need care though.
+     * PreLoad needs a GL context, and FindContext is called before the context is activated.
+     * It also has to be called with the old rendertarget active, otherwise a wrong drawable
+     * is read. This leads to these possible situations:
+     *
+     * 0) lastActiveRenderTarget == target && oldTid == newTid:
+     *    Nothing to do, we don't even reach this code in this case...
+     *
+     * 1) lastActiveRenderTarget != target && oldTid == newTid:
+     *    The currently active context is OK for readback. Call PreLoad, and it
+     *    performs the read
+     *
+     * 2) lastActiveRenderTarget == target && oldTid != newTid:
+     *    Nothing to do - the drawable is unchanged
+     *
+     * 3) lastActiveRenderTarget != target && oldTid != newTid:
+     *    This is tricky. We have to get a context with the old drawable from somewhere
+     *    before we can switch to the new context. In this case, PreLoad calls
+     *    ActivateContext(lastActiveRenderTarget) from the new(current) thread. This
+     *    is case (2) then. The old drawable is activated for the new thread, and the
+     *    readback can be done. The recursed ActivateContext does *not* call PreLoad again.
+     *    After that, the outer ActivateContext(which calls PreLoad) can activate the new
+     *    target for the new thread
+     */
+    if (readTexture && This->lastActiveRenderTarget != target) {
+        BOOL oldInDraw = This->isInDraw;
+
+        /* PreLoad requires a context to load the texture, thus it will call ActivateContext.
+         * Set the isInDraw to true to signal PreLoad that it has a context. Will be tricky
+         * when using offscreen rendering with multithreading
+         */
+        This->isInDraw = TRUE;
+
+        /* Do that before switching the context:
+         * Read the back buffer of the old drawable into the destination texture
+         */
+        IWineD3DSurface_PreLoad(This->lastActiveRenderTarget);
+
+        /* Assume that the drawable will be modified by some other things now */
+        IWineD3DSurface_ModifyLocation(This->lastActiveRenderTarget, SFLAG_INDRAWABLE, FALSE);
+
+        This->isInDraw = oldInDraw;
+    }
+
+    return context;
+}
+
+static void apply_draw_buffer(IWineD3DDeviceImpl *This, IWineD3DSurface *target, BOOL blit)
+{
+    IWineD3DSwapChain *swapchain;
+
+    if (SUCCEEDED(IWineD3DSurface_GetContainer(target, &IID_IWineD3DSwapChain, (void **)&swapchain)))
+    {
+        IWineD3DSwapChain_Release((IUnknown *)swapchain);
+        ENTER_GL();
+        glDrawBuffer(surface_get_gl_buffer(target, swapchain));
+        checkGLcall("glDrawBuffers()");
+        LEAVE_GL();
+    }
+    else
+    {
+        ENTER_GL();
+        if (wined3d_settings.offscreen_rendering_mode == ORM_FBO)
+        {
+            if (!blit)
+            {
+                if (GL_SUPPORT(ARB_DRAW_BUFFERS))
+                {
+                    GL_EXTCALL(glDrawBuffersARB(GL_LIMITS(buffers), This->draw_buffers));
+                    checkGLcall("glDrawBuffers()");
+                }
+                else
+                {
+                    glDrawBuffer(This->draw_buffers[0]);
+                    checkGLcall("glDrawBuffer()");
+                }
+            } else {
+                glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT);
+                checkGLcall("glDrawBuffer()");
+            }
+        }
+        else
+        {
+            glDrawBuffer(This->offscreenBuffer);
+            checkGLcall("glDrawBuffer()");
+        }
+        LEAVE_GL();
+    }
+}
+
+/*****************************************************************************
+ * ActivateContext
+ *
+ * Finds a rendering context and drawable matching the device and render
+ * target for the current thread, activates them and puts them into the
+ * requested state.
+ *
+ * Params:
+ *  This: Device to activate the context for
+ *  target: Requested render target
+ *  usage: Prepares the context for blitting, drawing or other actions
+ *
+ *****************************************************************************/
+void ActivateContext(IWineD3DDeviceImpl *This, IWineD3DSurface *target, ContextUsage usage) {
+    DWORD                         tid = GetCurrentThreadId();
+    DWORD                         i, dirtyState, idx;
+    BYTE                          shift;
+    WineD3DContext                *context;
+    const struct StateEntry       *StateTable = This->StateTable;
+
+    TRACE("(%p): Selecting context for render target %p, thread %d\n", This, target, tid);
+    if(This->lastActiveRenderTarget != target || tid != This->lastThread) {
+        context = FindContext(This, target, tid);
+        context->draw_buffer_dirty = TRUE;
+        This->lastActiveRenderTarget = target;
+        This->lastThread = tid;
+    } else {
+        /* Stick to the old context */
+        context = This->activeContext;
+    }
+
+    /* Activate the opengl context */
+    if(last_device != This || context != This->activeContext) {
+        BOOL ret;
+
+        /* Prevent an unneeded context switch as those are expensive */
+        if(context->glCtx && (context->glCtx == pwglGetCurrentContext())) {
+            TRACE("Already using gl context %p\n", context->glCtx);
+        }
+        else {
+            TRACE("Switching gl ctx to %p, hdc=%p ctx=%p\n", context, context->hdc, context->glCtx);
+
+            ret = pwglMakeCurrent(context->hdc, context->glCtx);
+            if(ret == FALSE) {
+                ERR("Failed to activate the new context\n");
+            } else if(!context->last_was_blit) {
+                This->frag_pipe->enable_extension((IWineD3DDevice *) This, TRUE);
+            } else {
+                This->frag_pipe->enable_extension((IWineD3DDevice *) This, FALSE);
+            }
+        }
+        if(This->activeContext->vshader_const_dirty) {
+            memset(This->activeContext->vshader_const_dirty, 1,
+                   sizeof(*This->activeContext->vshader_const_dirty) * GL_LIMITS(vshader_constantsF));
+        }
+        if(This->activeContext->pshader_const_dirty) {
+            memset(This->activeContext->pshader_const_dirty, 1,
+                   sizeof(*This->activeContext->pshader_const_dirty) * GL_LIMITS(pshader_constantsF));
+        }
+        This->activeContext = context;
+        last_device = This;
+    }
+
+    switch (usage) {
+        case CTXUSAGE_CLEAR:
+        case CTXUSAGE_DRAWPRIM:
+            if (wined3d_settings.offscreen_rendering_mode == ORM_FBO) {
+                context_apply_fbo_state((IWineD3DDevice *)This);
+            }
+            if (context->draw_buffer_dirty) {
+                apply_draw_buffer(This, target, FALSE);
+                context->draw_buffer_dirty = FALSE;
+            }
+            break;
+
+        case CTXUSAGE_BLIT:
+            if (wined3d_settings.offscreen_rendering_mode == ORM_FBO) {
+                if (This->render_offscreen) {
+                    FIXME("Activating for CTXUSAGE_BLIT for an offscreen target with ORM_FBO. This should be avoided.\n");
+                    context_bind_fbo((IWineD3DDevice *)This, GL_FRAMEBUFFER_EXT, &context->dst_fbo);
+                    context_attach_surface_fbo(This, GL_FRAMEBUFFER_EXT, 0, target);
+
+                    ENTER_GL();
+                    GL_EXTCALL(glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, 0));
+                    checkGLcall("glFramebufferRenderbufferEXT");
+                    LEAVE_GL();
+                } else {
+                    ENTER_GL();
+                    GL_EXTCALL(glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0));
+                    checkGLcall("glFramebufferRenderbufferEXT");
+                    LEAVE_GL();
+                }
+                context->draw_buffer_dirty = TRUE;
+            }
+            if (context->draw_buffer_dirty) {
+                apply_draw_buffer(This, target, TRUE);
+                if (wined3d_settings.offscreen_rendering_mode != ORM_FBO) {
+                    context->draw_buffer_dirty = FALSE;
+                }
+            }
+            break;
+
+        default:
+            break;
+    }
+
+    switch(usage) {
+        case CTXUSAGE_RESOURCELOAD:
+            /* This does not require any special states to be set up */
+            break;
+
+        case CTXUSAGE_CLEAR:
+            if(context->last_was_blit) {
+                This->frag_pipe->enable_extension((IWineD3DDevice *) This, TRUE);
+            }
+
+            /* Blending and clearing should be orthogonal, but tests on the nvidia driver show that disabling
+             * blending when clearing improves the clearing performance incredibly.
+             */
+            ENTER_GL();
+            glDisable(GL_BLEND);
+            LEAVE_GL();
+            Context_MarkStateDirty(context, STATE_RENDER(WINED3DRS_ALPHABLENDENABLE), StateTable);
+
+            ENTER_GL();
+            glEnable(GL_SCISSOR_TEST);
+            checkGLcall("glEnable GL_SCISSOR_TEST");
+            LEAVE_GL();
+            context->last_was_blit = FALSE;
+            Context_MarkStateDirty(context, STATE_RENDER(WINED3DRS_SCISSORTESTENABLE), StateTable);
+            Context_MarkStateDirty(context, STATE_SCISSORRECT, StateTable);
+            break;
+
+        case CTXUSAGE_DRAWPRIM:
+            /* This needs all dirty states applied */
+            if(context->last_was_blit) {
+                This->frag_pipe->enable_extension((IWineD3DDevice *) This, TRUE);
+            }
+
+            IWineD3DDeviceImpl_FindTexUnitMap(This);
+
+            for(i=0; i < context->numDirtyEntries; i++) {
+                dirtyState = context->dirtyArray[i];
+                idx = dirtyState >> 5;
+                shift = dirtyState & 0x1f;
+                context->isStateDirty[idx] &= ~(1 << shift);
+                StateTable[dirtyState].apply(dirtyState, This->stateBlock, context);
+            }
+            context->numDirtyEntries = 0; /* This makes the whole list clean */
+            context->last_was_blit = FALSE;
+            break;
+
+        case CTXUSAGE_BLIT:
+            SetupForBlit(This, context,
+                         ((IWineD3DSurfaceImpl *)target)->currentDesc.Width,
+                         ((IWineD3DSurfaceImpl *)target)->currentDesc.Height);
+            break;
+
+        default:
+            FIXME("Unexpected context usage requested\n");
+    }
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/cubetexture.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/cubetexture.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/cubetexture.c	(revision 16410)
@@ -0,0 +1,408 @@
+/*
+ * IWineD3DCubeTexture implementation
+ *
+ * Copyright 2002-2005 Jason Edmeades
+ * Copyright 2002-2005 Raphael Junqueira
+ * Copyright 2005 Oliver Stieber
+ * Copyright 2007-2008 Stefan Dösinger for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d_texture);
+#define GLINFO_LOCATION This->resource.wineD3DDevice->adapter->gl_info
+
+/* *******************************************
+   IWineD3DCubeTexture IUnknown parts follow
+   ******************************************* */
+static HRESULT WINAPI IWineD3DCubeTextureImpl_QueryInterface(IWineD3DCubeTexture *iface, REFIID riid, LPVOID *ppobj)
+{
+    IWineD3DCubeTextureImpl *This = (IWineD3DCubeTextureImpl *)iface;
+    TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj);
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IWineD3DBase)
+        || IsEqualGUID(riid, &IID_IWineD3DResource)
+        || IsEqualGUID(riid, &IID_IWineD3DBaseTexture)
+        || IsEqualGUID(riid, &IID_IWineD3DCubeTexture)) {
+        IUnknown_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IWineD3DCubeTextureImpl_AddRef(IWineD3DCubeTexture *iface) {
+    IWineD3DCubeTextureImpl *This = (IWineD3DCubeTextureImpl *)iface;
+    TRACE("(%p) : AddRef increasing from %d\n", This, This->resource.ref);
+    return InterlockedIncrement(&This->resource.ref);
+}
+
+static ULONG WINAPI IWineD3DCubeTextureImpl_Release(IWineD3DCubeTexture *iface) {
+    IWineD3DCubeTextureImpl *This = (IWineD3DCubeTextureImpl *)iface;
+    ULONG ref;
+    TRACE("(%p) : Releasing from %d\n", This, This->resource.ref);
+    ref = InterlockedDecrement(&This->resource.ref);
+    if (ref == 0) {
+        IWineD3DCubeTexture_Destroy(iface, D3DCB_DefaultDestroySurface);
+    }
+    return ref;
+}
+
+/* ****************************************************
+   IWineD3DCubeTexture IWineD3DResource parts follow
+   **************************************************** */
+static HRESULT WINAPI IWineD3DCubeTextureImpl_GetDevice(IWineD3DCubeTexture *iface, IWineD3DDevice** ppDevice) {
+    return resource_get_device((IWineD3DResource *)iface, ppDevice);
+}
+
+static HRESULT WINAPI IWineD3DCubeTextureImpl_SetPrivateData(IWineD3DCubeTexture *iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) {
+    return resource_set_private_data((IWineD3DResource *)iface, refguid, pData, SizeOfData, Flags);
+}
+
+static HRESULT WINAPI IWineD3DCubeTextureImpl_GetPrivateData(IWineD3DCubeTexture *iface, REFGUID refguid, void* pData, DWORD* pSizeOfData) {
+    return resource_get_private_data((IWineD3DResource *)iface, refguid, pData, pSizeOfData);
+}
+
+static HRESULT WINAPI IWineD3DCubeTextureImpl_FreePrivateData(IWineD3DCubeTexture *iface, REFGUID refguid) {
+    return resource_free_private_data((IWineD3DResource *)iface, refguid);
+}
+
+static DWORD WINAPI IWineD3DCubeTextureImpl_SetPriority(IWineD3DCubeTexture *iface, DWORD PriorityNew) {
+    return resource_set_priority((IWineD3DResource *)iface, PriorityNew);
+}
+
+static DWORD WINAPI IWineD3DCubeTextureImpl_GetPriority(IWineD3DCubeTexture *iface) {
+    return resource_get_priority((IWineD3DResource *)iface);
+}
+
+static void WINAPI IWineD3DCubeTextureImpl_PreLoad(IWineD3DCubeTexture *iface) {
+    /* Override the IWineD3DResource Preload method */
+    unsigned int i,j;
+    IWineD3DCubeTextureImpl *This = (IWineD3DCubeTextureImpl *)iface;
+    IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
+    BOOL srgb_mode = This->baseTexture.is_srgb;
+    BOOL srgb_was_toggled = FALSE;
+
+    TRACE("(%p) : About to load texture: dirtified(%d)\n", This, This->baseTexture.dirty);
+
+    /* We only have to activate a context for gl when we're not drawing. In most cases PreLoad will be called during draw
+     * and a context was activated at the beginning of drawPrimitive
+     */
+    if(!device->isInDraw) {
+        /* No danger of recursive calls, ActivateContext sets isInDraw to true when loading
+         * offscreen render targets into their texture
+         */
+        ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+    } else if (GL_SUPPORT(EXT_TEXTURE_SRGB) && This->baseTexture.bindCount > 0) {
+        srgb_mode = device->stateBlock->samplerState[This->baseTexture.sampler][WINED3DSAMP_SRGBTEXTURE];
+        srgb_was_toggled = (This->baseTexture.is_srgb != srgb_mode);
+        This->baseTexture.is_srgb = srgb_mode;
+    }
+
+    if (This->resource.format == WINED3DFMT_P8 || This->resource.format == WINED3DFMT_A8P8) {
+        for (i = 0; i < This->baseTexture.levels; i++) {
+            for (j = WINED3DCUBEMAP_FACE_POSITIVE_X; j <= WINED3DCUBEMAP_FACE_NEGATIVE_Z ; j++) {
+                if(palette9_changed((IWineD3DSurfaceImpl *)This->surfaces[j][i])) {
+                    TRACE("Reloading surface because the d3d8/9 palette was changed\n");
+                    /* TODO: This is not necessarily needed with hw palettized texture support */
+                    IWineD3DSurface_LoadLocation(This->surfaces[j][i], SFLAG_INSYSMEM, NULL);
+                    /* Make sure the texture is reloaded because of the palette change, this kills performance though :( */
+                    IWineD3DSurface_ModifyLocation(This->surfaces[j][i], SFLAG_INTEXTURE, FALSE);
+                }
+            }
+        }
+    }
+    /* If the texture is marked dirty or the srgb sampler setting has changed since the last load then reload the surfaces */
+    if (This->baseTexture.dirty) {
+        for (i = 0; i < This->baseTexture.levels; i++) {
+            for (j = WINED3DCUBEMAP_FACE_POSITIVE_X; j <= WINED3DCUBEMAP_FACE_NEGATIVE_Z ; j++) {
+                IWineD3DSurface_LoadTexture(This->surfaces[j][i], srgb_mode);
+            }
+        }
+    } else if (srgb_was_toggled) {
+        /* Loop is repeated in the else block with the extra AddDirtyRect line to avoid the alternative of
+         * checking srgb_was_toggled in every iteration, even when the texture is just dirty
+         */
+        if (This->baseTexture.srgb_mode_change_count < 20)
+            ++This->baseTexture.srgb_mode_change_count;
+        else
+            FIXME("Cubetexture (%p) has been reloaded at least 20 times due to WINED3DSAMP_SRGBTEXTURE changes on it\'s sampler\n", This);
+
+        for (i = 0; i < This->baseTexture.levels; i++) {
+            for (j = WINED3DCUBEMAP_FACE_POSITIVE_X; j <= WINED3DCUBEMAP_FACE_NEGATIVE_Z ; j++) {
+                IWineD3DSurface_AddDirtyRect(This->surfaces[j][i], NULL);
+                surface_force_reload(This->surfaces[j][i]);
+                IWineD3DSurface_LoadTexture(This->surfaces[j][i], srgb_mode);
+            }
+        }
+    } else {
+        TRACE("(%p) Texture not dirty, nothing to do\n" , iface);
+    }
+
+    /* No longer dirty */
+    This->baseTexture.dirty = FALSE;
+    return ;
+}
+
+static void WINAPI IWineD3DCubeTextureImpl_UnLoad(IWineD3DCubeTexture *iface) {
+    unsigned int i, j;
+    IWineD3DCubeTextureImpl *This = (IWineD3DCubeTextureImpl *)iface;
+    TRACE("(%p)\n", This);
+
+    /* Unload all the surfaces and reset the texture name. If UnLoad was called on the
+     * surface before, this one will be a NOP and vice versa. Unloading an unloaded
+     * surface is fine
+     */
+    for (i = 0; i < This->baseTexture.levels; i++) {
+        for (j = WINED3DCUBEMAP_FACE_POSITIVE_X; j <= WINED3DCUBEMAP_FACE_NEGATIVE_Z ; j++) {
+            IWineD3DSurface_UnLoad(This->surfaces[j][i]);
+            surface_set_texture_name(This->surfaces[j][i], 0);
+        }
+    }
+
+    basetexture_unload((IWineD3DBaseTexture *)iface);
+}
+
+static WINED3DRESOURCETYPE WINAPI IWineD3DCubeTextureImpl_GetType(IWineD3DCubeTexture *iface) {
+    return resource_get_type((IWineD3DResource *)iface);
+}
+
+static HRESULT WINAPI IWineD3DCubeTextureImpl_GetParent(IWineD3DCubeTexture *iface, IUnknown **pParent) {
+    return resource_get_parent((IWineD3DResource *)iface, pParent);
+}
+
+/* ******************************************************
+   IWineD3DCubeTexture IWineD3DBaseTexture parts follow
+   ****************************************************** */
+static DWORD WINAPI IWineD3DCubeTextureImpl_SetLOD(IWineD3DCubeTexture *iface, DWORD LODNew) {
+    return basetexture_set_lod((IWineD3DBaseTexture *)iface, LODNew);
+}
+
+static DWORD WINAPI IWineD3DCubeTextureImpl_GetLOD(IWineD3DCubeTexture *iface) {
+    return basetexture_get_lod((IWineD3DBaseTexture *)iface);
+}
+
+static DWORD WINAPI IWineD3DCubeTextureImpl_GetLevelCount(IWineD3DCubeTexture *iface) {
+    return basetexture_get_level_count((IWineD3DBaseTexture *)iface);
+}
+
+static HRESULT WINAPI IWineD3DCubeTextureImpl_SetAutoGenFilterType(IWineD3DCubeTexture *iface, WINED3DTEXTUREFILTERTYPE FilterType) {
+  return basetexture_set_autogen_filter_type((IWineD3DBaseTexture *)iface, FilterType);
+}
+
+static WINED3DTEXTUREFILTERTYPE WINAPI IWineD3DCubeTextureImpl_GetAutoGenFilterType(IWineD3DCubeTexture *iface) {
+  return basetexture_get_autogen_filter_type((IWineD3DBaseTexture *)iface);
+}
+
+static void WINAPI IWineD3DCubeTextureImpl_GenerateMipSubLevels(IWineD3DCubeTexture *iface) {
+    basetexture_generate_mipmaps((IWineD3DBaseTexture *)iface);
+}
+
+/* Internal function, No d3d mapping */
+static BOOL WINAPI IWineD3DCubeTextureImpl_SetDirty(IWineD3DCubeTexture *iface, BOOL dirty) {
+    return basetexture_set_dirty((IWineD3DBaseTexture *)iface, dirty);
+}
+
+/* Internal function, No d3d mapping */
+static BOOL WINAPI IWineD3DCubeTextureImpl_GetDirty(IWineD3DCubeTexture *iface) {
+    return basetexture_get_dirty((IWineD3DBaseTexture *)iface);
+}
+
+static HRESULT WINAPI IWineD3DCubeTextureImpl_BindTexture(IWineD3DCubeTexture *iface) {
+    IWineD3DCubeTextureImpl *This = (IWineD3DCubeTextureImpl *)iface;
+    BOOL set_gl_texture_desc = This->baseTexture.textureName == 0;
+    HRESULT hr;
+
+    TRACE("(%p) : relay to BaseTexture\n", This);
+
+    hr = basetexture_bind((IWineD3DBaseTexture *)iface);
+    if (set_gl_texture_desc && SUCCEEDED(hr)) {
+        UINT i, j;
+        for (i = 0; i < This->baseTexture.levels; ++i) {
+            for (j = WINED3DCUBEMAP_FACE_POSITIVE_X; j <= WINED3DCUBEMAP_FACE_NEGATIVE_Z; ++j) {
+                surface_set_texture_name(This->surfaces[j][i], This->baseTexture.textureName);
+            }
+        }
+    }
+
+    return hr;
+}
+
+static UINT WINAPI IWineD3DCubeTextureImpl_GetTextureDimensions(IWineD3DCubeTexture *iface){
+    IWineD3DCubeTextureImpl *This = (IWineD3DCubeTextureImpl *)iface;
+    TRACE("(%p)\n", This);
+
+    return GL_TEXTURE_CUBE_MAP_ARB;
+}
+
+static BOOL WINAPI IWineD3DCubeTextureImpl_IsCondNP2(IWineD3DCubeTexture *iface) {
+    IWineD3DCubeTextureImpl *This = (IWineD3DCubeTextureImpl *)iface;
+    TRACE("(%p)\n", This);
+
+    return FALSE;
+}
+
+static void WINAPI IWineD3DCubeTextureImpl_ApplyStateChanges(IWineD3DCubeTexture *iface, 
+                                                        const DWORD textureStates[WINED3D_HIGHEST_TEXTURE_STATE + 1], 
+                                                        const DWORD samplerStates[WINED3D_HIGHEST_SAMPLER_STATE + 1]) {
+    TRACE("(%p) : relay to BaseTexture\n", iface);
+    basetexture_apply_state_changes((IWineD3DBaseTexture *)iface, textureStates, samplerStates);
+}
+
+
+/* *******************************************
+   IWineD3DCubeTexture IWineD3DCubeTexture parts follow
+   ******************************************* */
+static void WINAPI IWineD3DCubeTextureImpl_Destroy(IWineD3DCubeTexture *iface, D3DCB_DESTROYSURFACEFN D3DCB_DestroySurface) {
+    IWineD3DCubeTextureImpl *This = (IWineD3DCubeTextureImpl *)iface;
+    unsigned int i,j;
+    TRACE("(%p) : Cleaning up\n",This);
+    for (i = 0; i < This->baseTexture.levels; i++) {
+        for (j = 0; j < 6; j++) {
+            if (This->surfaces[j][i] != NULL) {
+                IWineD3DSurface *surface = This->surfaces[j][i];
+                /* Clean out the texture name we gave to the surface so that the surface doesn't try and release it */
+                surface_set_texture_name(surface, 0);
+                surface_set_texture_target(surface, 0);
+                /* Cleanup the container */
+                IWineD3DSurface_SetContainer(This->surfaces[j][i], 0);
+                D3DCB_DestroySurface(This->surfaces[j][i]);
+            }
+        }
+    }
+    basetexture_cleanup((IWineD3DBaseTexture *)iface);
+    /* finally delete the object */
+    HeapFree(GetProcessHeap(), 0, This);
+}
+
+static HRESULT WINAPI IWineD3DCubeTextureImpl_GetLevelDesc(IWineD3DCubeTexture *iface, UINT Level, WINED3DSURFACE_DESC* pDesc) {
+    IWineD3DCubeTextureImpl *This = (IWineD3DCubeTextureImpl *)iface;
+
+    if (Level < This->baseTexture.levels) {
+        TRACE("(%p) level (%d)\n", This, Level);
+        return IWineD3DSurface_GetDesc(This->surfaces[0][Level], pDesc);
+    }
+    FIXME("(%p) level(%d) overflow Levels(%d)\n", This, Level, This->baseTexture.levels);
+    return WINED3DERR_INVALIDCALL;
+}
+
+static HRESULT WINAPI IWineD3DCubeTextureImpl_GetCubeMapSurface(IWineD3DCubeTexture *iface, WINED3DCUBEMAP_FACES FaceType, UINT Level, IWineD3DSurface** ppCubeMapSurface) {
+    IWineD3DCubeTextureImpl *This = (IWineD3DCubeTextureImpl *)iface;
+    HRESULT hr = WINED3DERR_INVALIDCALL;
+
+    if (Level < This->baseTexture.levels && FaceType <= WINED3DCUBEMAP_FACE_NEGATIVE_Z) {
+        *ppCubeMapSurface = This->surfaces[FaceType][Level];
+        IWineD3DSurface_AddRef(*ppCubeMapSurface);
+
+        hr = WINED3D_OK;
+    }
+    if (WINED3D_OK == hr) {
+        TRACE("(%p) -> faceType(%d) level(%d) returning surface@%p\n", This, FaceType, Level, This->surfaces[FaceType][Level]);
+    } else {
+        WARN("(%p) level(%d) overflow Levels(%d) Or FaceType(%d)\n", This, Level, This->baseTexture.levels, FaceType);
+    }
+
+    return hr;
+}
+
+static HRESULT WINAPI IWineD3DCubeTextureImpl_LockRect(IWineD3DCubeTexture *iface, WINED3DCUBEMAP_FACES FaceType, UINT Level, WINED3DLOCKED_RECT* pLockedRect, CONST RECT* pRect, DWORD Flags) {
+    HRESULT hr = WINED3DERR_INVALIDCALL;
+    IWineD3DCubeTextureImpl *This = (IWineD3DCubeTextureImpl *)iface;
+
+    if (Level < This->baseTexture.levels && FaceType <= WINED3DCUBEMAP_FACE_NEGATIVE_Z) {
+        hr = IWineD3DSurface_LockRect(This->surfaces[FaceType][Level], pLockedRect, pRect, Flags);
+    }
+
+    if (WINED3D_OK == hr) {
+        TRACE("(%p) -> faceType(%d) level(%d) returning memory@%p success(%u)\n", This, FaceType, Level, pLockedRect->pBits, hr);
+    } else {
+        WARN("(%p) level(%d) overflow Levels(%d)  Or FaceType(%d)\n", This, Level, This->baseTexture.levels, FaceType);
+    }
+
+    return hr;
+}
+
+static HRESULT WINAPI IWineD3DCubeTextureImpl_UnlockRect(IWineD3DCubeTexture *iface, WINED3DCUBEMAP_FACES FaceType, UINT Level) {
+    HRESULT hr = WINED3DERR_INVALIDCALL;
+    IWineD3DCubeTextureImpl *This = (IWineD3DCubeTextureImpl *)iface;
+
+    if (Level < This->baseTexture.levels && FaceType <= WINED3DCUBEMAP_FACE_NEGATIVE_Z) {
+        hr = IWineD3DSurface_UnlockRect(This->surfaces[FaceType][Level]);
+    }
+
+    if (WINED3D_OK == hr) {
+        TRACE("(%p) -> faceType(%d) level(%d) success(%u)\n", This, FaceType, Level, hr);
+    } else {
+        WARN("(%p) level(%d) overflow Levels(%d) Or FaceType(%d)\n", This, Level, This->baseTexture.levels, FaceType);
+    }
+    return hr;
+}
+
+static HRESULT  WINAPI IWineD3DCubeTextureImpl_AddDirtyRect(IWineD3DCubeTexture *iface, WINED3DCUBEMAP_FACES FaceType, CONST RECT* pDirtyRect) {
+    HRESULT hr = WINED3DERR_INVALIDCALL;
+    IWineD3DCubeTextureImpl *This = (IWineD3DCubeTextureImpl *)iface;
+    This->baseTexture.dirty = TRUE;
+    TRACE("(%p) : dirtyfication of faceType(%d) Level (0)\n", This, FaceType);
+    if (FaceType <= WINED3DCUBEMAP_FACE_NEGATIVE_Z) {
+        hr = IWineD3DSurface_AddDirtyRect(This->surfaces[FaceType][0], pDirtyRect);
+    } else {
+        WARN("(%p) overflow FaceType(%d)\n", This, FaceType);
+    }
+    return hr;
+}
+
+
+const IWineD3DCubeTextureVtbl IWineD3DCubeTexture_Vtbl =
+{
+    /* IUnknown */
+    IWineD3DCubeTextureImpl_QueryInterface,
+    IWineD3DCubeTextureImpl_AddRef,
+    IWineD3DCubeTextureImpl_Release,
+    /* IWineD3DResource */
+    IWineD3DCubeTextureImpl_GetParent,
+    IWineD3DCubeTextureImpl_GetDevice,
+    IWineD3DCubeTextureImpl_SetPrivateData,
+    IWineD3DCubeTextureImpl_GetPrivateData,
+    IWineD3DCubeTextureImpl_FreePrivateData,
+    IWineD3DCubeTextureImpl_SetPriority,
+    IWineD3DCubeTextureImpl_GetPriority,
+    IWineD3DCubeTextureImpl_PreLoad,
+    IWineD3DCubeTextureImpl_UnLoad,
+    IWineD3DCubeTextureImpl_GetType,
+    /* IWineD3DBaseTexture */
+    IWineD3DCubeTextureImpl_SetLOD,
+    IWineD3DCubeTextureImpl_GetLOD,
+    IWineD3DCubeTextureImpl_GetLevelCount,
+    IWineD3DCubeTextureImpl_SetAutoGenFilterType,
+    IWineD3DCubeTextureImpl_GetAutoGenFilterType,
+    IWineD3DCubeTextureImpl_GenerateMipSubLevels,
+    IWineD3DCubeTextureImpl_SetDirty,
+    IWineD3DCubeTextureImpl_GetDirty,
+    IWineD3DCubeTextureImpl_BindTexture,
+    IWineD3DCubeTextureImpl_GetTextureDimensions,
+    IWineD3DCubeTextureImpl_IsCondNP2,
+    IWineD3DCubeTextureImpl_ApplyStateChanges,
+    /* IWineD3DCubeTexture */
+    IWineD3DCubeTextureImpl_Destroy,
+    IWineD3DCubeTextureImpl_GetLevelDesc,
+    IWineD3DCubeTextureImpl_GetCubeMapSurface,
+    IWineD3DCubeTextureImpl_LockRect,
+    IWineD3DCubeTextureImpl_UnlockRect,
+    IWineD3DCubeTextureImpl_AddDirtyRect
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/device.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/device.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/device.c	(revision 16410)
@@ -0,0 +1,7970 @@
+/*
+ * IWineD3DDevice implementation
+ *
+ * Copyright 2002 Lionel Ulmer
+ * Copyright 2002-2005 Jason Edmeades
+ * Copyright 2003-2004 Raphael Junqueira
+ * Copyright 2004 Christian Costa
+ * Copyright 2005 Oliver Stieber
+ * Copyright 2006-2008 Stefan Dösinger for CodeWeavers
+ * Copyright 2006-2008 Henri Verbeet
+ * Copyright 2007 Andrew Riedi
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include <stdio.h>
+#ifdef HAVE_FLOAT_H
+# include <float.h>
+#endif
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d);
+#define GLINFO_LOCATION This->adapter->gl_info
+
+/* Define the default light parameters as specified by MSDN */
+const WINED3DLIGHT WINED3D_default_light = {
+
+    WINED3DLIGHT_DIRECTIONAL, /* Type */
+    { 1.0, 1.0, 1.0, 0.0 },   /* Diffuse r,g,b,a */
+    { 0.0, 0.0, 0.0, 0.0 },   /* Specular r,g,b,a */
+    { 0.0, 0.0, 0.0, 0.0 },   /* Ambient r,g,b,a, */
+    { 0.0, 0.0, 0.0 },        /* Position x,y,z */
+    { 0.0, 0.0, 1.0 },        /* Direction x,y,z */
+    0.0,                      /* Range */
+    0.0,                      /* Falloff */
+    0.0, 0.0, 0.0,            /* Attenuation 0,1,2 */
+    0.0,                      /* Theta */
+    0.0                       /* Phi */
+};
+
+/* static function declarations */
+static void IWineD3DDeviceImpl_AddResource(IWineD3DDevice *iface, IWineD3DResource *resource);
+
+/* helper macros */
+#define D3DMEMCHECK(object, ppResult) if(NULL == object) { *ppResult = NULL; WARN("Out of memory\n"); return WINED3DERR_OUTOFVIDEOMEMORY;}
+
+#define D3DCREATEOBJECTINSTANCE(object, type) { \
+    object=HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IWineD3D##type##Impl)); \
+    D3DMEMCHECK(object, pp##type); \
+    object->lpVtbl = &IWineD3D##type##_Vtbl;  \
+    object->wineD3DDevice = This; \
+    object->parent       = parent; \
+    object->ref          = 1; \
+    *pp##type = (IWineD3D##type *) object; \
+}
+
+#define D3DCREATESHADEROBJECTINSTANCE(object, type) { \
+    object=HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IWineD3D##type##Impl)); \
+    D3DMEMCHECK(object, pp##type); \
+    object->lpVtbl = &IWineD3D##type##_Vtbl;  \
+    object->parent          = parent; \
+    object->baseShader.ref  = 1; \
+    object->baseShader.device = (IWineD3DDevice*) This; \
+    list_init(&object->baseShader.linked_programs); \
+    *pp##type = (IWineD3D##type *) object; \
+}
+
+#define  D3DCREATERESOURCEOBJECTINSTANCE(object, type, d3dtype, _size){ \
+    object=HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IWineD3D##type##Impl)); \
+    D3DMEMCHECK(object, pp##type); \
+    object->lpVtbl = &IWineD3D##type##_Vtbl;  \
+    object->resource.wineD3DDevice   = This; \
+    object->resource.parent          = parent; \
+    object->resource.resourceType    = d3dtype; \
+    object->resource.ref             = 1; \
+    object->resource.pool            = Pool; \
+    object->resource.format          = Format; \
+    object->resource.usage           = Usage; \
+    object->resource.size            = _size; \
+    object->resource.priority        = 0; \
+    list_init(&object->resource.privateData); \
+    /* Check that we have enough video ram left */ \
+    if (Pool == WINED3DPOOL_DEFAULT) { \
+        if (IWineD3DDevice_GetAvailableTextureMem(iface) <= _size) { \
+            WARN("Out of 'bogus' video memory\n"); \
+            HeapFree(GetProcessHeap(), 0, object); \
+            *pp##type = NULL; \
+            return WINED3DERR_OUTOFVIDEOMEMORY; \
+        } \
+        WineD3DAdapterChangeGLRam(This, _size); \
+    } \
+    object->resource.heapMemory = (0 == _size ? NULL : HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, _size + RESOURCE_ALIGNMENT)); \
+    if (object->resource.heapMemory == NULL && _size != 0) { \
+        FIXME("Out of memory!\n"); \
+        HeapFree(GetProcessHeap(), 0, object); \
+        *pp##type = NULL; \
+        return WINED3DERR_OUTOFVIDEOMEMORY; \
+    } \
+    object->resource.allocatedMemory = (BYTE *)(((ULONG_PTR) object->resource.heapMemory + (RESOURCE_ALIGNMENT - 1)) & ~(RESOURCE_ALIGNMENT - 1)); \
+    *pp##type = (IWineD3D##type *) object; \
+    IWineD3DDeviceImpl_AddResource(iface, (IWineD3DResource *)object) ;\
+    TRACE("(%p) : Created resource %p\n", This, object); \
+}
+
+#define D3DINITIALIZEBASETEXTURE(_basetexture) { \
+    _basetexture.levels     = Levels; \
+    _basetexture.filterType = (Usage & WINED3DUSAGE_AUTOGENMIPMAP) ? WINED3DTEXF_LINEAR : WINED3DTEXF_NONE; \
+    _basetexture.LOD        = 0; \
+    _basetexture.dirty      = TRUE; \
+    _basetexture.is_srgb = FALSE; \
+    _basetexture.srgb_mode_change_count = 0; \
+}
+
+/**********************************************************
+ * Global variable / Constants follow
+ **********************************************************/
+const float identity[16] = {1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1};  /* When needed for comparisons */
+
+/**********************************************************
+ * IUnknown parts follows
+ **********************************************************/
+
+static HRESULT WINAPI IWineD3DDeviceImpl_QueryInterface(IWineD3DDevice *iface,REFIID riid,LPVOID *ppobj)
+{
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+
+    TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj);
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IWineD3DBase)
+        || IsEqualGUID(riid, &IID_IWineD3DDevice)) {
+        IUnknown_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IWineD3DDeviceImpl_AddRef(IWineD3DDevice *iface) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    ULONG refCount = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef increasing from %d\n", This, refCount - 1);
+    return refCount;
+}
+
+static ULONG WINAPI IWineD3DDeviceImpl_Release(IWineD3DDevice *iface) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    ULONG refCount = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : Releasing from %d\n", This, refCount + 1);
+
+    if (!refCount) {
+        /* TODO: Clean up all the surfaces and textures! */
+        /* NOTE: You must release the parent if the object was created via a callback
+        ** ***************************/
+
+        if (!list_empty(&This->resources)) {
+            FIXME("(%p) Device released with resources still bound, acceptable but unexpected\n", This);
+            dumpResources(&This->resources);
+        }
+
+        if(This->contexts) ERR("Context array not freed!\n");
+        if (This->hardwareCursor) DestroyCursor(This->hardwareCursor);
+        This->haveHardwareCursor = FALSE;
+
+        IWineD3D_Release(This->wineD3D);
+        This->wineD3D = NULL;
+        HeapFree(GetProcessHeap(), 0, This);
+        TRACE("Freed device  %p\n", This);
+        This = NULL;
+    }
+    return refCount;
+}
+
+/**********************************************************
+ * IWineD3DDevice implementation follows
+ **********************************************************/
+static HRESULT WINAPI IWineD3DDeviceImpl_GetParent(IWineD3DDevice *iface, IUnknown **pParent) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    *pParent = This->parent;
+    IUnknown_AddRef(This->parent);
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_CreateVertexBuffer(IWineD3DDevice *iface, UINT Size, DWORD Usage, 
+                             DWORD FVF, WINED3DPOOL Pool, IWineD3DVertexBuffer** ppVertexBuffer, HANDLE *sharedHandle,
+                             IUnknown *parent) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    IWineD3DVertexBufferImpl *object;
+    WINED3DFORMAT Format = WINED3DFMT_VERTEXDATA; /* Dummy format for now */
+    int dxVersion = ( (IWineD3DImpl *) This->wineD3D)->dxVersion;
+    BOOL conv;
+
+    if(Size == 0) {
+        WARN("Size 0 requested, returning WINED3DERR_INVALIDCALL\n");
+        *ppVertexBuffer = NULL;
+        return WINED3DERR_INVALIDCALL;
+    } else if(Pool == WINED3DPOOL_SCRATCH) {
+        /* The d3d9 testsuit shows that this is not allowed. It doesn't make much sense
+         * anyway, SCRATCH vertex buffers aren't usable anywhere
+         */
+        WARN("Vertex buffer in D3DPOOL_SCRATCH requested, returning WINED3DERR_INVALIDCALL\n");
+        *ppVertexBuffer = NULL;
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    D3DCREATERESOURCEOBJECTINSTANCE(object, VertexBuffer, WINED3DRTYPE_VERTEXBUFFER, Size)
+
+    TRACE("(%p) : Size=%d, Usage=0x%08x, FVF=%x, Pool=%d - Memory@%p, Iface@%p\n", This, Size, Usage, FVF, Pool, object->resource.allocatedMemory, object);
+    *ppVertexBuffer = (IWineD3DVertexBuffer *)object;
+
+    object->fvf = FVF;
+
+    /* Observations show that drawStridedSlow is faster on dynamic VBs than converting +
+     * drawStridedFast (half-life 2).
+     *
+     * Basically converting the vertices in the buffer is quite expensive, and observations
+     * show that drawStridedSlow is faster than converting + uploading + drawStridedFast.
+     * Therefore do not create a VBO for WINED3DUSAGE_DYNAMIC buffers.
+     *
+     * Direct3D7 has another problem: Its vertexbuffer api doesn't offer a way to specify
+     * the range of vertices being locked, so each lock will require the whole buffer to be transformed.
+     * Moreover geometry data in dx7 is quite simple, so drawStridedSlow isn't a big hit. A plus
+     * is that the vertex buffers fvf can be trusted in dx7. So only create non-converted vbos for
+     * dx7 apps.
+     * There is a IDirect3DVertexBuffer7::Optimize call after which the buffer can't be locked any
+     * more. In this call we can convert dx7 buffers too.
+     */
+    conv = ((FVF & WINED3DFVF_POSITION_MASK) == WINED3DFVF_XYZRHW ) || (FVF & (WINED3DFVF_DIFFUSE | WINED3DFVF_SPECULAR));
+    if(!GL_SUPPORT(ARB_VERTEX_BUFFER_OBJECT)) {
+        TRACE("Not creating a vbo because GL_ARB_vertex_buffer is not supported\n");
+    } else if(Pool == WINED3DPOOL_SYSTEMMEM) {
+        TRACE("Not creating a vbo because the vertex buffer is in system memory\n");
+    } else if(Usage & WINED3DUSAGE_DYNAMIC) {
+        TRACE("Not creating a vbo because the buffer has dynamic usage\n");
+    } else if(dxVersion <= 7 && conv) {
+        TRACE("Not creating a vbo because dxVersion is 7 and the fvf needs conversion\n");
+    } else {
+        object->Flags |= VBFLAG_CREATEVBO;
+    }
+    return WINED3D_OK;
+}
+
+static void CreateIndexBufferVBO(IWineD3DDeviceImpl *This, IWineD3DIndexBufferImpl *object) {
+    GLenum error, glUsage;
+    TRACE("Creating VBO for Index Buffer %p\n", object);
+
+    /* The following code will modify the ELEMENT_ARRAY_BUFFER binding, make sure it is
+     * restored on the next draw
+     */
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_INDEXBUFFER);
+
+    /* Make sure that a context is there. Needed in a multithreaded environment. Otherwise this call is a nop */
+    ActivateContext(This, This->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+    ENTER_GL();
+
+    while(glGetError());
+
+    GL_EXTCALL(glGenBuffersARB(1, &object->vbo));
+    error = glGetError();
+    if(error != GL_NO_ERROR || object->vbo == 0) {
+        ERR("Creating a vbo failed with error %s (%#x), continuing without vbo for this buffer\n", debug_glerror(error), error);
+        goto out;
+    }
+
+    GL_EXTCALL(glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, object->vbo));
+    error = glGetError();
+    if(error != GL_NO_ERROR) {
+        ERR("Failed to bind index buffer with error %s (%#x), continuing without vbo for this buffer\n", debug_glerror(error), error);
+        goto out;
+    }
+
+    /* Use static write only usage for now. Dynamic index buffers stay in sysmem, and due to the sysmem
+        * copy no readback will be needed
+        */
+    glUsage = GL_STATIC_DRAW_ARB;
+    GL_EXTCALL(glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, object->resource.size, NULL, glUsage));
+    error = glGetError();
+    if(error != GL_NO_ERROR) {
+        ERR("Failed to initialize the index buffer with error %s (%#x)\n", debug_glerror(error), error);
+        goto out;
+    }
+    LEAVE_GL();
+    TRACE("Successfully created vbo %d for index buffer %p\n", object->vbo, object);
+    return;
+
+out:
+    GL_EXTCALL(glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0));
+    GL_EXTCALL(glDeleteBuffersARB(1, &object->vbo));
+    LEAVE_GL();
+    object->vbo = 0;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_CreateIndexBuffer(IWineD3DDevice *iface, UINT Length, DWORD Usage, 
+                                                    WINED3DFORMAT Format, WINED3DPOOL Pool, IWineD3DIndexBuffer** ppIndexBuffer,
+                                                    HANDLE *sharedHandle, IUnknown *parent) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    IWineD3DIndexBufferImpl *object;
+    TRACE("(%p) Creating index buffer\n", This);
+
+    /* Allocate the storage for the device */
+    D3DCREATERESOURCEOBJECTINSTANCE(object,IndexBuffer,WINED3DRTYPE_INDEXBUFFER, Length)
+
+    if(Pool != WINED3DPOOL_SYSTEMMEM && !(Usage & WINED3DUSAGE_DYNAMIC) && GL_SUPPORT(ARB_VERTEX_BUFFER_OBJECT)) {
+        CreateIndexBufferVBO(This, object);
+    }
+
+    TRACE("(%p) : Len=%d, Use=%x, Format=(%u,%s), Pool=%d - Memory@%p, Iface@%p\n", This, Length, Usage, Format, 
+                           debug_d3dformat(Format), Pool, object, object->resource.allocatedMemory);
+    *ppIndexBuffer = (IWineD3DIndexBuffer *) object;
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_CreateStateBlock(IWineD3DDevice* iface, WINED3DSTATEBLOCKTYPE Type, IWineD3DStateBlock** ppStateBlock, IUnknown *parent) {
+
+    IWineD3DDeviceImpl     *This = (IWineD3DDeviceImpl *)iface;
+    IWineD3DStateBlockImpl *object;
+    int i, j;
+    HRESULT temp_result;
+
+    D3DCREATEOBJECTINSTANCE(object, StateBlock)
+    object->blockType     = Type;
+
+    for(i = 0; i < LIGHTMAP_SIZE; i++) {
+        list_init(&object->lightMap[i]);
+    }
+
+    /* Special case - Used during initialization to produce a placeholder stateblock
+          so other functions called can update a state block                         */
+    if (Type == WINED3DSBT_INIT) {
+        /* Don't bother increasing the reference count otherwise a device will never
+           be freed due to circular dependencies                                   */
+        return WINED3D_OK;
+    }
+    
+    temp_result = allocate_shader_constants(object);
+    if (WINED3D_OK != temp_result)
+        return temp_result;
+
+    /* Otherwise, might as well set the whole state block to the appropriate values  */
+    if (This->stateBlock != NULL)
+        stateblock_copy((IWineD3DStateBlock*) object, (IWineD3DStateBlock*) This->stateBlock);
+    else
+        memset(object->streamFreq, 1, sizeof(object->streamFreq));
+
+    /* Reset the ref and type after kludging it */
+    object->wineD3DDevice = This;
+    object->ref           = 1;
+    object->blockType     = Type;
+
+    TRACE("Updating changed flags appropriate for type %d\n", Type);
+
+    if (Type == WINED3DSBT_ALL) {
+
+        TRACE("ALL => Pretend everything has changed\n");
+        stateblock_savedstates_set((IWineD3DStateBlock*) object, &object->changed, TRUE);
+
+        /* Lights are not part of the changed / set structure */
+        for(j = 0; j < LIGHTMAP_SIZE; j++) {
+            struct list *e;
+            LIST_FOR_EACH(e, &object->lightMap[j]) {
+                PLIGHTINFOEL *light = LIST_ENTRY(e, PLIGHTINFOEL, entry);
+                light->changed = TRUE;
+                light->enabledChanged = TRUE;
+            }
+        }
+        for(j = 1; j <= WINEHIGHEST_RENDER_STATE; j++) {
+            object->contained_render_states[j - 1] = j;
+        }
+        object->num_contained_render_states = WINEHIGHEST_RENDER_STATE;
+        /* TODO: Filter unused transforms between TEXTURE8 and WORLD0? */
+        for(j = 1; j <= HIGHEST_TRANSFORMSTATE; j++) {
+            object->contained_transform_states[j - 1] = j;
+        }
+        object->num_contained_transform_states = HIGHEST_TRANSFORMSTATE;
+        for(j = 0; j < GL_LIMITS(vshader_constantsF); j++) {
+            object->contained_vs_consts_f[j] = j;
+        }
+        object->num_contained_vs_consts_f = GL_LIMITS(vshader_constantsF);
+        for(j = 0; j < MAX_CONST_I; j++) {
+            object->contained_vs_consts_i[j] = j;
+        }
+        object->num_contained_vs_consts_i = MAX_CONST_I;
+        for(j = 0; j < MAX_CONST_B; j++) {
+            object->contained_vs_consts_b[j] = j;
+        }
+        object->num_contained_vs_consts_b = MAX_CONST_B;
+        for(j = 0; j < GL_LIMITS(pshader_constantsF); j++) {
+            object->contained_ps_consts_f[j] = j;
+        }
+        object->num_contained_ps_consts_f = GL_LIMITS(pshader_constantsF);
+        for(j = 0; j < MAX_CONST_I; j++) {
+            object->contained_ps_consts_i[j] = j;
+        }
+        object->num_contained_ps_consts_i = MAX_CONST_I;
+        for(j = 0; j < MAX_CONST_B; j++) {
+            object->contained_ps_consts_b[j] = j;
+        }
+        object->num_contained_ps_consts_b = MAX_CONST_B;
+        for(i = 0; i < MAX_TEXTURES; i++) {
+            for(j = 1; j <= WINED3D_HIGHEST_TEXTURE_STATE; j++) {
+                object->contained_tss_states[object->num_contained_tss_states].stage = i;
+                object->contained_tss_states[object->num_contained_tss_states].state = j;
+                object->num_contained_tss_states++;
+            }
+        }
+        for(i = 0; i < MAX_COMBINED_SAMPLERS; i++) {
+            for(j = 1; j <= WINED3D_HIGHEST_SAMPLER_STATE; j++) {
+                object->contained_sampler_states[object->num_contained_sampler_states].stage = i;
+                object->contained_sampler_states[object->num_contained_sampler_states].state = j;
+                object->num_contained_sampler_states++;
+            }
+        }
+
+        for(i = 0; i < MAX_STREAMS; i++) {
+            if(object->streamSource[i]) {
+                IWineD3DVertexBuffer_AddRef(object->streamSource[i]);
+            }
+        }
+        if(object->pIndexData) {
+            IWineD3DIndexBuffer_AddRef(object->pIndexData);
+        }
+        if(object->vertexShader) {
+            IWineD3DVertexShader_AddRef(object->vertexShader);
+        }
+        if(object->pixelShader) {
+            IWineD3DPixelShader_AddRef(object->pixelShader);
+        }
+
+    } else if (Type == WINED3DSBT_PIXELSTATE) {
+
+        TRACE("PIXELSTATE => Pretend all pixel shates have changed\n");
+        stateblock_savedstates_set((IWineD3DStateBlock*) object, &object->changed, FALSE);
+
+        object->changed.pixelShader = TRUE;
+
+        /* Pixel Shader Constants */
+        for (i = 0; i < GL_LIMITS(pshader_constantsF); ++i) {
+            object->contained_ps_consts_f[i] = i;
+            object->changed.pixelShaderConstantsF[i] = TRUE;
+        }
+        object->num_contained_ps_consts_f = GL_LIMITS(pshader_constantsF);
+        for (i = 0; i < MAX_CONST_B; ++i) {
+            object->contained_ps_consts_b[i] = i;
+            object->changed.pixelShaderConstantsB |= (1 << i);
+        }
+        object->num_contained_ps_consts_b = MAX_CONST_B;
+        for (i = 0; i < MAX_CONST_I; ++i) {
+            object->contained_ps_consts_i[i] = i;
+            object->changed.pixelShaderConstantsI |= (1 << i);
+        }
+        object->num_contained_ps_consts_i = MAX_CONST_I;
+
+        for (i = 0; i < NUM_SAVEDPIXELSTATES_R; i++) {
+            object->changed.renderState[SavedPixelStates_R[i]] = TRUE;
+            object->contained_render_states[i] = SavedPixelStates_R[i];
+        }
+        object->num_contained_render_states = NUM_SAVEDPIXELSTATES_R;
+        for (j = 0; j < MAX_TEXTURES; j++) {
+            for (i = 0; i < NUM_SAVEDPIXELSTATES_T; i++) {
+                object->changed.textureState[j][SavedPixelStates_T[i]] = TRUE;
+                object->contained_tss_states[object->num_contained_tss_states].stage = j;
+                object->contained_tss_states[object->num_contained_tss_states].state = SavedPixelStates_T[i];
+                object->num_contained_tss_states++;
+            }
+        }
+        for (j = 0 ; j < MAX_COMBINED_SAMPLERS; j++) {
+            for (i =0; i < NUM_SAVEDPIXELSTATES_S;i++) {
+                object->changed.samplerState[j][SavedPixelStates_S[i]] = TRUE;
+                object->contained_sampler_states[object->num_contained_sampler_states].stage = j;
+                object->contained_sampler_states[object->num_contained_sampler_states].state = SavedPixelStates_S[i];
+                object->num_contained_sampler_states++;
+            }
+        }
+        if(object->pixelShader) {
+            IWineD3DPixelShader_AddRef(object->pixelShader);
+        }
+
+        /* Pixel state blocks do not contain vertex buffers. Set them to NULL to avoid wrong refcounting
+         * on them. This makes releasing the buffer easier
+         */
+        for(i = 0; i < MAX_STREAMS; i++) {
+            object->streamSource[i] = NULL;
+        }
+        object->pIndexData = NULL;
+        object->vertexShader = NULL;
+
+    } else if (Type == WINED3DSBT_VERTEXSTATE) {
+
+        TRACE("VERTEXSTATE => Pretend all vertex shates have changed\n");
+        stateblock_savedstates_set((IWineD3DStateBlock*) object, &object->changed, FALSE);
+
+        object->changed.vertexShader = TRUE;
+
+        /* Vertex Shader Constants */
+        for (i = 0; i < GL_LIMITS(vshader_constantsF); ++i) {
+            object->changed.vertexShaderConstantsF[i] = TRUE;
+            object->contained_vs_consts_f[i] = i;
+        }
+        object->num_contained_vs_consts_f = GL_LIMITS(vshader_constantsF);
+        for (i = 0; i < MAX_CONST_B; ++i) {
+            object->contained_vs_consts_b[i] = i;
+            object->changed.vertexShaderConstantsB |= (1 << i);
+        }
+        object->num_contained_vs_consts_b = MAX_CONST_B;
+        for (i = 0; i < MAX_CONST_I; ++i) {
+            object->contained_vs_consts_i[i] = i;
+            object->changed.vertexShaderConstantsI |= (1 << i);
+        }
+        object->num_contained_vs_consts_i = MAX_CONST_I;
+        for (i = 0; i < NUM_SAVEDVERTEXSTATES_R; i++) {
+            object->changed.renderState[SavedVertexStates_R[i]] = TRUE;
+            object->contained_render_states[i] = SavedVertexStates_R[i];
+        }
+        object->num_contained_render_states = NUM_SAVEDVERTEXSTATES_R;
+        for (j = 0; j < MAX_TEXTURES; j++) {
+            for (i = 0; i < NUM_SAVEDVERTEXSTATES_T; i++) {
+                object->changed.textureState[j][SavedVertexStates_T[i]] = TRUE;
+                object->contained_tss_states[object->num_contained_tss_states].stage = j;
+                object->contained_tss_states[object->num_contained_tss_states].state = SavedVertexStates_T[i];
+                object->num_contained_tss_states++;
+            }
+        }
+        for (j = 0 ; j < MAX_COMBINED_SAMPLERS; j++){
+            for (i =0; i < NUM_SAVEDVERTEXSTATES_S;i++) {
+                object->changed.samplerState[j][SavedVertexStates_S[i]] = TRUE;
+                object->contained_sampler_states[object->num_contained_sampler_states].stage = j;
+                object->contained_sampler_states[object->num_contained_sampler_states].state = SavedVertexStates_S[i];
+                object->num_contained_sampler_states++;
+            }
+        }
+
+        for(j = 0; j < LIGHTMAP_SIZE; j++) {
+            struct list *e;
+            LIST_FOR_EACH(e, &object->lightMap[j]) {
+                PLIGHTINFOEL *light = LIST_ENTRY(e, PLIGHTINFOEL, entry);
+                light->changed = TRUE;
+                light->enabledChanged = TRUE;
+            }
+        }
+
+        for(i = 0; i < MAX_STREAMS; i++) {
+            if(object->streamSource[i]) {
+                IWineD3DVertexBuffer_AddRef(object->streamSource[i]);
+            }
+        }
+        if(object->vertexShader) {
+            IWineD3DVertexShader_AddRef(object->vertexShader);
+        }
+        object->pIndexData = NULL;
+        object->pixelShader = NULL;
+    } else {
+        FIXME("Unrecognized state block type %d\n", Type);
+    }
+
+    TRACE("(%p) returning token (ptr to stateblock) of %p\n", This, object);
+    return WINED3D_OK;
+}
+
+/* ************************************
+MSDN:
+[in] Render targets are not lockable unless the application specifies TRUE for Lockable. Note that lockable render targets reduce performance on some graphics hardware.
+
+Discard
+ [in] Set this flag to TRUE to enable z-buffer discarding, and FALSE otherwise. 
+
+If this flag is set, the contents of the depth stencil buffer will be invalid after calling either IDirect3DDevice9::Present or IDirect3DDevice9::SetDepthStencilSurface with a different depth surface.
+
+******************************** */
+ 
+static HRESULT  WINAPI IWineD3DDeviceImpl_CreateSurface(IWineD3DDevice *iface, UINT Width, UINT Height, WINED3DFORMAT Format, BOOL Lockable, BOOL Discard, UINT Level, IWineD3DSurface **ppSurface,WINED3DRESOURCETYPE Type, DWORD Usage, WINED3DPOOL Pool, WINED3DMULTISAMPLE_TYPE MultiSample ,DWORD MultisampleQuality, HANDLE* pSharedHandle, WINED3DSURFTYPE Impl, IUnknown *parent) {
+    IWineD3DDeviceImpl  *This = (IWineD3DDeviceImpl *)iface;    
+    IWineD3DSurfaceImpl *object; /*NOTE: impl ref allowed since this is a create function */
+    unsigned int Size       = 1;
+    const struct GlPixelFormatDesc *glDesc;
+    const StaticPixelFormatDesc *tableEntry = getFormatDescEntry(Format, &GLINFO_LOCATION, &glDesc);
+    UINT mul_4w, mul_4h;
+    TRACE("(%p) Create surface\n",This);
+    
+    /** FIXME: Check ranges on the inputs are valid 
+     * MSDN
+     *   MultisampleQuality
+     *    [in] Quality level. The valid range is between zero and one less than the level
+     *    returned by pQualityLevels used by IDirect3D9::CheckDeviceMultiSampleType. 
+     *    Passing a larger value returns the error WINED3DERR_INVALIDCALL. The MultisampleQuality
+     *    values of paired render targets, depth stencil surfaces, and the MultiSample type
+     *    must all match.
+      *******************************/
+
+
+    /**
+    * TODO: Discard MSDN
+    * [in] Set this flag to TRUE to enable z-buffer discarding, and FALSE otherwise.
+    *
+    * If this flag is set, the contents of the depth stencil buffer will be
+    * invalid after calling either IDirect3DDevice9::Present or  * IDirect3DDevice9::SetDepthStencilSurface
+    * with a different depth surface.
+    *
+    *This flag has the same behavior as the constant, D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL, in D3DPRESENTFLAG.
+    ***************************/
+
+    if(MultisampleQuality > 0) {
+        FIXME("MultisampleQuality set to %d, substituting 0\n", MultisampleQuality);
+        MultisampleQuality=0;
+    }
+
+    /** FIXME: Check that the format is supported
+    *    by the device.
+      *******************************/
+
+    /** DXTn mipmaps use the same number of 'levels' down to eg. 8x1, but since
+     *  it is based around 4x4 pixel blocks it requires padding, so allocate enough
+     *  space!
+      *********************************/
+    mul_4w = (Width + 3) & ~3;
+    mul_4h = (Height + 3) & ~3;
+    if (WINED3DFMT_UNKNOWN == Format) {
+        Size = 0;
+    } else if (Format == WINED3DFMT_DXT1) {
+        /* DXT1 is half byte per pixel */
+        Size = (mul_4w * tableEntry->bpp * mul_4h) >> 1;
+
+    } else if (Format == WINED3DFMT_DXT2 || Format == WINED3DFMT_DXT3 ||
+               Format == WINED3DFMT_DXT4 || Format == WINED3DFMT_DXT5 ||
+               Format == WINED3DFMT_ATI2N) {
+        Size = (mul_4w * tableEntry->bpp * mul_4h);
+    } else {
+       /* The pitch is a multiple of 4 bytes */
+        Size = ((Width * tableEntry->bpp) + This->surface_alignment - 1) & ~(This->surface_alignment - 1);
+        Size *= Height;
+    }
+
+    if(glDesc->heightscale != 0.0) Size *= glDesc->heightscale;
+
+    /** Create and initialise the surface resource **/
+    D3DCREATERESOURCEOBJECTINSTANCE(object,Surface,WINED3DRTYPE_SURFACE, Size)
+    /* "Standalone" surface */
+    IWineD3DSurface_SetContainer((IWineD3DSurface *)object, NULL);
+
+    object->currentDesc.Width      = Width;
+    object->currentDesc.Height     = Height;
+    object->currentDesc.MultiSampleType    = MultiSample;
+    object->currentDesc.MultiSampleQuality = MultisampleQuality;
+    object->glDescription.level            = Level;
+    object->heightscale                    = glDesc->heightscale != 0.0 ? glDesc->heightscale : 1.0;
+    list_init(&object->overlays);
+
+    /* Flags */
+    object->Flags      = SFLAG_NORMCOORD; /* Default to normalized coords */
+    object->Flags     |= Discard ? SFLAG_DISCARD : 0;
+    object->Flags     |= (WINED3DFMT_D16_LOCKABLE == Format) ? SFLAG_LOCKABLE : 0;
+    object->Flags     |= Lockable ? SFLAG_LOCKABLE : 0;
+
+
+    if (WINED3DFMT_UNKNOWN != Format) {
+        object->bytesPerPixel = tableEntry->bpp;
+    } else {
+        object->bytesPerPixel = 0;
+    }
+
+    /** TODO: change this into a texture transform matrix so that it's processed in hardware **/
+
+    TRACE("Pool %d %d %d %d\n",Pool, WINED3DPOOL_DEFAULT, WINED3DPOOL_MANAGED, WINED3DPOOL_SYSTEMMEM);
+
+    /** Quick lockable sanity check TODO: remove this after surfaces, usage and lockability have been debugged properly
+    * this function is too deep to need to care about things like this.
+    * Levels need to be checked too, and possibly Type since they all affect what can be done.
+    * ****************************************/
+    switch(Pool) {
+    case WINED3DPOOL_SCRATCH:
+        if(!Lockable)
+            FIXME("Create surface called with a pool of SCRATCH and a Lockable of FALSE "
+                "which are mutually exclusive, setting lockable to TRUE\n");
+                Lockable = TRUE;
+    break;
+    case WINED3DPOOL_SYSTEMMEM:
+        if(!Lockable) FIXME("Create surface called with a pool of SYSTEMMEM and a Lockable of FALSE, "
+                                    "this is acceptable but unexpected (I can't know how the surface can be usable!)\n");
+    case WINED3DPOOL_MANAGED:
+        if(Usage == WINED3DUSAGE_DYNAMIC) FIXME("Create surface called with a pool of MANAGED and a "
+                                                "Usage of DYNAMIC which are mutually exclusive, not doing "
+                                                "anything just telling you.\n");
+    break;
+    case WINED3DPOOL_DEFAULT: /*TODO: Create offscreen plain can cause this check to fail..., find out if it should */
+        if(!(Usage & WINED3DUSAGE_DYNAMIC) && !(Usage & WINED3DUSAGE_RENDERTARGET)
+           && !(Usage && WINED3DUSAGE_DEPTHSTENCIL ) && Lockable)
+            WARN("Creating a surface with a POOL of DEFAULT with Lockable true, that doesn't specify DYNAMIC usage.\n");
+    break;
+    default:
+        FIXME("(%p) Unknown pool %d\n", This, Pool);
+    break;
+    };
+
+    if (Usage & WINED3DUSAGE_RENDERTARGET && Pool != WINED3DPOOL_DEFAULT) {
+        FIXME("Trying to create a render target that isn't in the default pool\n");
+    }
+
+    /* mark the texture as dirty so that it gets loaded first time around*/
+    IWineD3DSurface_AddDirtyRect(*ppSurface, NULL);
+    TRACE("(%p) : w(%d) h(%d) fmt(%d,%s) lockable(%d) surf@%p, surfmem@%p, %d bytes\n",
+           This, Width, Height, Format, debug_d3dformat(Format),
+           (WINED3DFMT_D16_LOCKABLE == Format), *ppSurface, object->resource.allocatedMemory, object->resource.size);
+
+    /* Look at the implementation and set the correct Vtable */
+    switch(Impl) {
+        case SURFACE_OPENGL:
+            /* Check if a 3D adapter is available when creating gl surfaces */
+            if(!This->adapter) {
+                ERR("OpenGL surfaces are not available without opengl\n");
+                HeapFree(GetProcessHeap(), 0, object->resource.allocatedMemory);
+                HeapFree(GetProcessHeap(), 0, object);
+                return WINED3DERR_NOTAVAILABLE;
+            }
+            break;
+
+        case SURFACE_GDI:
+            object->lpVtbl = &IWineGDISurface_Vtbl;
+            break;
+
+        default:
+            /* To be sure to catch this */
+            ERR("Unknown requested surface implementation %d!\n", Impl);
+            IWineD3DSurface_Release((IWineD3DSurface *) object);
+            return WINED3DERR_INVALIDCALL;
+    }
+
+    list_init(&object->renderbuffers);
+
+    /* Call the private setup routine */
+    return IWineD3DSurface_PrivateSetup( (IWineD3DSurface *) object );
+
+}
+
+static HRESULT  WINAPI IWineD3DDeviceImpl_CreateTexture(IWineD3DDevice *iface, UINT Width, UINT Height, UINT Levels,
+                                                 DWORD Usage, WINED3DFORMAT Format, WINED3DPOOL Pool,
+                                                 IWineD3DTexture** ppTexture, HANDLE* pSharedHandle, IUnknown *parent,
+                                                 D3DCB_CREATESURFACEFN D3DCB_CreateSurface) {
+
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    IWineD3DTextureImpl *object;
+    unsigned int i;
+    UINT tmpW;
+    UINT tmpH;
+    HRESULT hr;
+    unsigned int pow2Width;
+    unsigned int pow2Height;
+    const struct GlPixelFormatDesc *glDesc;
+    getFormatDescEntry(Format, &GLINFO_LOCATION, &glDesc);
+
+    TRACE("(%p) : Width %d, Height %d, Levels %d, Usage %#x\n", This, Width, Height, Levels, Usage);
+    TRACE("Format %#x (%s), Pool %#x, ppTexture %p, pSharedHandle %p, parent %p\n",
+            Format, debug_d3dformat(Format), Pool, ppTexture, pSharedHandle, parent);
+
+    /* TODO: It should only be possible to create textures for formats
+             that are reported as supported */
+    if (WINED3DFMT_UNKNOWN >= Format) {
+        WARN("(%p) : Texture cannot be created with a format of WINED3DFMT_UNKNOWN\n", This);
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    D3DCREATERESOURCEOBJECTINSTANCE(object, Texture, WINED3DRTYPE_TEXTURE, 0);
+    D3DINITIALIZEBASETEXTURE(object->baseTexture);    
+    object->width  = Width;
+    object->height = Height;
+
+    if(glDesc->Flags & WINED3DFMT_FLAG_FILTERING) {
+        object->baseTexture.minMipLookup = minMipLookup;
+        object->baseTexture.magLookup    = magLookup;
+    } else {
+        object->baseTexture.minMipLookup = minMipLookup_noFilter;
+        object->baseTexture.magLookup    = magLookup_noFilter;
+    }
+
+    /** Non-power2 support **/
+    if (GL_SUPPORT(ARB_TEXTURE_NON_POWER_OF_TWO)) {
+        pow2Width = Width;
+        pow2Height = Height;
+    } else {
+        /* Find the nearest pow2 match */
+        pow2Width = pow2Height = 1;
+        while (pow2Width < Width) pow2Width <<= 1;
+        while (pow2Height < Height) pow2Height <<= 1;
+
+        if(pow2Width != Width || pow2Height != Height) {
+            if(Levels > 1) {
+                WARN("Attempted to create a mipmapped np2 texture without unconditional np2 support\n");
+                HeapFree(GetProcessHeap(), 0, object);
+                *ppTexture = NULL;
+                return WINED3DERR_INVALIDCALL;
+            } else {
+                Levels = 1;
+            }
+        }
+    }
+
+    /** FIXME: add support for real non-power-two if it's provided by the video card **/
+    /* Precalculated scaling for 'faked' non power of two texture coords.
+       Second also don't use ARB_TEXTURE_RECTANGLE in case the surface format is P8 and EXT_PALETTED_TEXTURE
+       is used in combination with texture uploads (RTL_READTEX/RTL_TEXTEX). The reason is that EXT_PALETTED_TEXTURE
+       doesn't work in combination with ARB_TEXTURE_RECTANGLE.
+    */
+    if(GL_SUPPORT(WINE_NORMALIZED_TEXRECT) && (Width != pow2Width || Height != pow2Height)) {
+        object->baseTexture.pow2Matrix[0] =  1.0;
+        object->baseTexture.pow2Matrix[5] =  1.0;
+        object->baseTexture.pow2Matrix[10] = 1.0;
+        object->baseTexture.pow2Matrix[15] = 1.0;
+        object->target = GL_TEXTURE_2D;
+        object->cond_np2 = TRUE;
+        object->baseTexture.minMipLookup = minMipLookup_noFilter;
+    } else if(GL_SUPPORT(ARB_TEXTURE_RECTANGLE) &&
+       (Width != pow2Width || Height != pow2Height) &&
+       !((Format == WINED3DFMT_P8) && GL_SUPPORT(EXT_PALETTED_TEXTURE) && (wined3d_settings.rendertargetlock_mode == RTL_READTEX || wined3d_settings.rendertargetlock_mode == RTL_TEXTEX)))
+    {
+        object->baseTexture.pow2Matrix[0] =  (float)Width;
+        object->baseTexture.pow2Matrix[5] =  (float)Height;
+        object->baseTexture.pow2Matrix[10] = 1.0;
+        object->baseTexture.pow2Matrix[15] = 1.0;
+        object->target = GL_TEXTURE_RECTANGLE_ARB;
+        object->cond_np2 = TRUE;
+        object->baseTexture.minMipLookup = minMipLookup_noFilter;
+    } else {
+        object->baseTexture.pow2Matrix[0] =  (((float)Width)  / ((float)pow2Width));
+        object->baseTexture.pow2Matrix[5] =  (((float)Height) / ((float)pow2Height));
+        object->baseTexture.pow2Matrix[10] = 1.0;
+        object->baseTexture.pow2Matrix[15] = 1.0;
+        object->target = GL_TEXTURE_2D;
+        object->cond_np2 = FALSE;
+    }
+    TRACE(" xf(%f) yf(%f)\n", object->baseTexture.pow2Matrix[0], object->baseTexture.pow2Matrix[5]);
+
+    /* Calculate levels for mip mapping */
+    if (Usage & WINED3DUSAGE_AUTOGENMIPMAP) {
+        if(!GL_SUPPORT(SGIS_GENERATE_MIPMAP)) {
+            WARN("No mipmap generation support, returning D3DERR_INVALIDCALL\n");
+            return WINED3DERR_INVALIDCALL;
+        }
+        if(Levels > 1) {
+            WARN("D3DUSAGE_AUTOGENMIPMAP is set, and level count > 1, returning D3DERR_INVALIDCALL\n");
+            return WINED3DERR_INVALIDCALL;
+        }
+        object->baseTexture.levels = 1;
+    } else if (Levels == 0) {
+        TRACE("calculating levels %d\n", object->baseTexture.levels);
+        object->baseTexture.levels++;
+        tmpW = Width;
+        tmpH = Height;
+        while (tmpW > 1 || tmpH > 1) {
+            tmpW = max(1, tmpW >> 1);
+            tmpH = max(1, tmpH >> 1);
+            object->baseTexture.levels++;
+        }
+        TRACE("Calculated levels = %d\n", object->baseTexture.levels);
+    }
+
+    /* Generate all the surfaces */
+    tmpW = Width;
+    tmpH = Height;
+    for (i = 0; i < object->baseTexture.levels; i++)
+    {
+        /* use the callback to create the texture surface */
+        hr = D3DCB_CreateSurface(This->parent, parent, tmpW, tmpH, Format, Usage, Pool, i, WINED3DCUBEMAP_FACE_POSITIVE_X, &object->surfaces[i],NULL);
+        if (hr!= WINED3D_OK || ( (IWineD3DSurfaceImpl *) object->surfaces[i])->Flags & SFLAG_OVERSIZE) {
+            FIXME("Failed to create surface  %p\n", object);
+            /* clean up */
+            object->surfaces[i] = NULL;
+            IWineD3DTexture_Release((IWineD3DTexture *)object);
+
+            *ppTexture = NULL;
+            return hr;
+        }
+
+        IWineD3DSurface_SetContainer(object->surfaces[i], (IWineD3DBase *)object);
+        TRACE("Created surface level %d @ %p\n", i, object->surfaces[i]);
+        surface_set_texture_target(object->surfaces[i], object->target);
+        /* calculate the next mipmap level */
+        tmpW = max(1, tmpW >> 1);
+        tmpH = max(1, tmpH >> 1);
+    }
+    object->baseTexture.shader_color_fixup = glDesc->color_fixup;
+
+    TRACE("(%p) : Created  texture %p\n", This, object);
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_CreateVolumeTexture(IWineD3DDevice *iface,
+                                                      UINT Width, UINT Height, UINT Depth,
+                                                      UINT Levels, DWORD Usage,
+                                                      WINED3DFORMAT Format, WINED3DPOOL Pool,
+                                                      IWineD3DVolumeTexture **ppVolumeTexture,
+                                                      HANDLE *pSharedHandle, IUnknown *parent,
+                                                      D3DCB_CREATEVOLUMEFN D3DCB_CreateVolume) {
+
+    IWineD3DDeviceImpl        *This = (IWineD3DDeviceImpl *)iface;
+    IWineD3DVolumeTextureImpl *object;
+    unsigned int               i;
+    UINT                       tmpW;
+    UINT                       tmpH;
+    UINT                       tmpD;
+    const struct GlPixelFormatDesc *glDesc;
+
+    getFormatDescEntry(Format, &GLINFO_LOCATION, &glDesc);
+
+    /* TODO: It should only be possible to create textures for formats 
+             that are reported as supported */
+    if (WINED3DFMT_UNKNOWN >= Format) {
+        WARN("(%p) : Texture cannot be created with a format of WINED3DFMT_UNKNOWN\n", This);
+        return WINED3DERR_INVALIDCALL;
+    }
+    if(!GL_SUPPORT(EXT_TEXTURE3D)) {
+        WARN("(%p) : Texture cannot be created - no volume texture support\n", This);
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    D3DCREATERESOURCEOBJECTINSTANCE(object, VolumeTexture, WINED3DRTYPE_VOLUMETEXTURE, 0);
+    D3DINITIALIZEBASETEXTURE(object->baseTexture);
+
+    TRACE("(%p) : W(%d) H(%d) D(%d), Lvl(%d) Usage(%d), Fmt(%u,%s), Pool(%s)\n", This, Width, Height,
+          Depth, Levels, Usage, Format, debug_d3dformat(Format), debug_d3dpool(Pool));
+
+    /* Is NP2 support for volumes needed? */
+    object->baseTexture.pow2Matrix[ 0] = 1.0;
+    object->baseTexture.pow2Matrix[ 5] = 1.0;
+    object->baseTexture.pow2Matrix[10] = 1.0;
+    object->baseTexture.pow2Matrix[15] = 1.0;
+
+    if(glDesc->Flags & WINED3DFMT_FLAG_FILTERING) {
+        object->baseTexture.minMipLookup = minMipLookup;
+        object->baseTexture.magLookup    = magLookup;
+    } else {
+        object->baseTexture.minMipLookup = minMipLookup_noFilter;
+        object->baseTexture.magLookup    = magLookup_noFilter;
+    }
+
+    /* Calculate levels for mip mapping */
+    if (Usage & WINED3DUSAGE_AUTOGENMIPMAP) {
+        if(!GL_SUPPORT(SGIS_GENERATE_MIPMAP)) {
+            WARN("No mipmap generation support, returning D3DERR_INVALIDCALL\n");
+            return WINED3DERR_INVALIDCALL;
+        }
+        if(Levels > 1) {
+            WARN("D3DUSAGE_AUTOGENMIPMAP is set, and level count > 1, returning D3DERR_INVALIDCALL\n");
+            return WINED3DERR_INVALIDCALL;
+        }
+        object->baseTexture.levels = 1;
+    } else if (Levels == 0) {
+        object->baseTexture.levels++;
+        tmpW = Width;
+        tmpH = Height;
+        tmpD = Depth;
+        while (tmpW > 1 || tmpH > 1 || tmpD > 1) {
+            tmpW = max(1, tmpW >> 1);
+            tmpH = max(1, tmpH >> 1);
+            tmpD = max(1, tmpD >> 1);
+            object->baseTexture.levels++;
+        }
+        TRACE("Calculated levels = %d\n", object->baseTexture.levels);
+    }
+
+    /* Generate all the surfaces */
+    tmpW = Width;
+    tmpH = Height;
+    tmpD = Depth;
+
+    for (i = 0; i < object->baseTexture.levels; i++)
+    {
+        HRESULT hr;
+        /* Create the volume */
+        hr = D3DCB_CreateVolume(This->parent, parent, tmpW, tmpH, tmpD, Format, Pool, Usage,
+                                &object->volumes[i], pSharedHandle);
+
+        if(FAILED(hr)) {
+            ERR("Creating a volume for the volume texture failed(%08x)\n", hr);
+            IWineD3DVolumeTexture_Release((IWineD3DVolumeTexture *) object);
+            *ppVolumeTexture = NULL;
+            return hr;
+        }
+
+        /* Set its container to this object */
+        IWineD3DVolume_SetContainer(object->volumes[i], (IWineD3DBase *)object);
+
+        /* calculate the next mipmap level */
+        tmpW = max(1, tmpW >> 1);
+        tmpH = max(1, tmpH >> 1);
+        tmpD = max(1, tmpD >> 1);
+    }
+    object->baseTexture.shader_color_fixup = glDesc->color_fixup;
+
+    *ppVolumeTexture = (IWineD3DVolumeTexture *) object;
+    TRACE("(%p) : Created volume texture %p\n", This, object);
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_CreateVolume(IWineD3DDevice *iface,
+                                               UINT Width, UINT Height, UINT Depth,
+                                               DWORD Usage,
+                                               WINED3DFORMAT Format, WINED3DPOOL Pool,
+                                               IWineD3DVolume** ppVolume,
+                                               HANDLE* pSharedHandle, IUnknown *parent) {
+
+    IWineD3DDeviceImpl        *This = (IWineD3DDeviceImpl *)iface;
+    IWineD3DVolumeImpl        *object; /** NOTE: impl ref allowed since this is a create function **/
+    const StaticPixelFormatDesc *formatDesc  = getFormatDescEntry(Format, NULL, NULL);
+
+    if(!GL_SUPPORT(EXT_TEXTURE3D)) {
+        WARN("(%p) : Volume cannot be created - no volume texture support\n", This);
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    D3DCREATERESOURCEOBJECTINSTANCE(object, Volume, WINED3DRTYPE_VOLUME, ((Width * formatDesc->bpp) * Height * Depth))
+
+    TRACE("(%p) : W(%d) H(%d) D(%d), Usage(%d), Fmt(%u,%s), Pool(%s)\n", This, Width, Height,
+          Depth, Usage, Format, debug_d3dformat(Format), debug_d3dpool(Pool));
+
+    object->currentDesc.Width   = Width;
+    object->currentDesc.Height  = Height;
+    object->currentDesc.Depth   = Depth;
+    object->bytesPerPixel       = formatDesc->bpp;
+
+    /** Note: Volume textures cannot be dxtn, hence no need to check here **/
+    object->lockable            = TRUE;
+    object->locked              = FALSE;
+    memset(&object->lockedBox, 0, sizeof(WINED3DBOX));
+    object->dirty               = TRUE;
+
+    return IWineD3DVolume_AddDirtyBox((IWineD3DVolume *) object, NULL);
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_CreateCubeTexture(IWineD3DDevice *iface, UINT EdgeLength,
+                                                    UINT Levels, DWORD Usage,
+                                                    WINED3DFORMAT Format, WINED3DPOOL Pool,
+                                                    IWineD3DCubeTexture **ppCubeTexture,
+                                                    HANDLE *pSharedHandle, IUnknown *parent,
+                                                    D3DCB_CREATESURFACEFN D3DCB_CreateSurface) {
+
+    IWineD3DDeviceImpl      *This = (IWineD3DDeviceImpl *)iface;
+    IWineD3DCubeTextureImpl *object; /** NOTE: impl ref allowed since this is a create function **/
+    unsigned int             i, j;
+    UINT                     tmpW;
+    HRESULT                  hr;
+    unsigned int pow2EdgeLength;
+    const struct GlPixelFormatDesc *glDesc;
+    getFormatDescEntry(Format, &GLINFO_LOCATION, &glDesc);
+
+    /* TODO: It should only be possible to create textures for formats 
+             that are reported as supported */
+    if (WINED3DFMT_UNKNOWN >= Format) {
+        WARN("(%p) : Texture cannot be created with a format of WINED3DFMT_UNKNOWN\n", This);
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    if (!GL_SUPPORT(ARB_TEXTURE_CUBE_MAP) && Pool != WINED3DPOOL_SCRATCH) {
+        WARN("(%p) : Tried to create not supported cube texture\n", This);
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    D3DCREATERESOURCEOBJECTINSTANCE(object, CubeTexture, WINED3DRTYPE_CUBETEXTURE, 0);
+    D3DINITIALIZEBASETEXTURE(object->baseTexture);
+
+    TRACE("(%p) Create Cube Texture\n", This);
+
+    /* Find the nearest pow2 match */
+    pow2EdgeLength = 1;
+    while (pow2EdgeLength < EdgeLength) pow2EdgeLength <<= 1;
+
+    if (GL_SUPPORT(ARB_TEXTURE_NON_POWER_OF_TWO)) {
+        /* Precalculated scaling for 'faked' non power of two texture coords */
+        object->baseTexture.pow2Matrix[ 0] = 1.0;
+        object->baseTexture.pow2Matrix[ 5] = 1.0;
+        object->baseTexture.pow2Matrix[10] = 1.0;
+        object->baseTexture.pow2Matrix[15] = 1.0;
+    } else {
+        /* Precalculated scaling for 'faked' non power of two texture coords */
+        object->baseTexture.pow2Matrix[ 0] = ((float)EdgeLength) / ((float)pow2EdgeLength);
+        object->baseTexture.pow2Matrix[ 5] = ((float)EdgeLength) / ((float)pow2EdgeLength);
+        object->baseTexture.pow2Matrix[10] = ((float)EdgeLength) / ((float)pow2EdgeLength);
+        object->baseTexture.pow2Matrix[15] = 1.0;
+    }
+
+    if(glDesc->Flags & WINED3DFMT_FLAG_FILTERING) {
+        object->baseTexture.minMipLookup = minMipLookup;
+        object->baseTexture.magLookup    = magLookup;
+    } else {
+        object->baseTexture.minMipLookup = minMipLookup_noFilter;
+        object->baseTexture.magLookup    = magLookup_noFilter;
+    }
+
+    /* Calculate levels for mip mapping */
+    if (Usage & WINED3DUSAGE_AUTOGENMIPMAP) {
+        if(!GL_SUPPORT(SGIS_GENERATE_MIPMAP)) {
+            WARN("No mipmap generation support, returning D3DERR_INVALIDCALL\n");
+            HeapFree(GetProcessHeap(), 0, object);
+            *ppCubeTexture = NULL;
+
+            return WINED3DERR_INVALIDCALL;
+        }
+        if(Levels > 1) {
+            WARN("D3DUSAGE_AUTOGENMIPMAP is set, and level count > 1, returning D3DERR_INVALIDCALL\n");
+            HeapFree(GetProcessHeap(), 0, object);
+            *ppCubeTexture = NULL;
+
+            return WINED3DERR_INVALIDCALL;
+        }
+        object->baseTexture.levels = 1;
+    } else if (Levels == 0) {
+        object->baseTexture.levels++;
+        tmpW = EdgeLength;
+        while (tmpW > 1) {
+            tmpW = max(1, tmpW >> 1);
+            object->baseTexture.levels++;
+        }
+        TRACE("Calculated levels = %d\n", object->baseTexture.levels);
+    }
+
+    /* Generate all the surfaces */
+    tmpW = EdgeLength;
+    for (i = 0; i < object->baseTexture.levels; i++) {
+
+        /* Create the 6 faces */
+        for (j = 0; j < 6; j++) {
+            static const GLenum cube_targets[6] = {
+                GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB,
+                GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB,
+                GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB,
+                GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB,
+                GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB,
+                GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB
+            };
+
+            hr=D3DCB_CreateSurface(This->parent, parent, tmpW, tmpW, Format, Usage, Pool,
+                                   i /* Level */, j, &object->surfaces[j][i],pSharedHandle);
+
+            if(hr!= WINED3D_OK) {
+                /* clean up */
+                unsigned int k;
+                unsigned int l;
+                for (l = 0; l < j; l++) {
+                    IWineD3DSurface_Release(object->surfaces[l][i]);
+                }
+                for (k = 0; k < i; k++) {
+                    for (l = 0; l < 6; l++) {
+                        IWineD3DSurface_Release(object->surfaces[l][k]);
+                    }
+                }
+
+                FIXME("(%p) Failed to create surface\n",object);
+                HeapFree(GetProcessHeap(),0,object);
+                *ppCubeTexture = NULL;
+                return hr;
+            }
+            IWineD3DSurface_SetContainer(object->surfaces[j][i], (IWineD3DBase *)object);
+            TRACE("Created surface level %d @ %p,\n", i, object->surfaces[j][i]);
+            surface_set_texture_target(object->surfaces[j][i], cube_targets[j]);
+        }
+        tmpW = max(1, tmpW >> 1);
+    }
+    object->baseTexture.shader_color_fixup = glDesc->color_fixup;
+
+    TRACE("(%p) : Created Cube Texture %p\n", This, object);
+    *ppCubeTexture = (IWineD3DCubeTexture *) object;
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_CreateQuery(IWineD3DDevice *iface, WINED3DQUERYTYPE Type, IWineD3DQuery **ppQuery, IUnknown* parent) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    IWineD3DQueryImpl *object; /*NOTE: impl ref allowed since this is a create function */
+    HRESULT hr = WINED3DERR_NOTAVAILABLE;
+    const IWineD3DQueryVtbl *vtable;
+
+    /* Just a check to see if we support this type of query */
+    switch(Type) {
+    case WINED3DQUERYTYPE_OCCLUSION:
+        TRACE("(%p) occlusion query\n", This);
+        if (GL_SUPPORT(ARB_OCCLUSION_QUERY))
+            hr = WINED3D_OK;
+        else
+            WARN("Unsupported in local OpenGL implementation: ARB_OCCLUSION_QUERY/NV_OCCLUSION_QUERY\n");
+
+        vtable = &IWineD3DOcclusionQuery_Vtbl;
+        break;
+
+    case WINED3DQUERYTYPE_EVENT:
+        if(!(GL_SUPPORT(NV_FENCE) || GL_SUPPORT(APPLE_FENCE) )) {
+            /* Half-Life 2 needs this query. It does not render the main menu correctly otherwise
+             * Pretend to support it, faking this query does not do much harm except potentially lowering performance
+             */
+            FIXME("(%p) Event query: Unimplemented, but pretending to be supported\n", This);
+        }
+        vtable = &IWineD3DEventQuery_Vtbl;
+        hr = WINED3D_OK;
+        break;
+
+    case WINED3DQUERYTYPE_VCACHE:
+    case WINED3DQUERYTYPE_RESOURCEMANAGER:
+    case WINED3DQUERYTYPE_VERTEXSTATS:
+    case WINED3DQUERYTYPE_TIMESTAMP:
+    case WINED3DQUERYTYPE_TIMESTAMPDISJOINT:
+    case WINED3DQUERYTYPE_TIMESTAMPFREQ:
+    case WINED3DQUERYTYPE_PIPELINETIMINGS:
+    case WINED3DQUERYTYPE_INTERFACETIMINGS:
+    case WINED3DQUERYTYPE_VERTEXTIMINGS:
+    case WINED3DQUERYTYPE_PIXELTIMINGS:
+    case WINED3DQUERYTYPE_BANDWIDTHTIMINGS:
+    case WINED3DQUERYTYPE_CACHEUTILIZATION:
+    default:
+        /* Use the base Query vtable until we have a special one for each query */
+        vtable = &IWineD3DQuery_Vtbl;
+        FIXME("(%p) Unhandled query type %d\n", This, Type);
+    }
+    if(NULL == ppQuery || hr != WINED3D_OK) {
+        return hr;
+    }
+
+    D3DCREATEOBJECTINSTANCE(object, Query)
+    object->lpVtbl       = vtable;
+    object->type         = Type;
+    object->state        = QUERY_CREATED;
+    /* allocated the 'extended' data based on the type of query requested */
+    switch(Type){
+    case WINED3DQUERYTYPE_OCCLUSION:
+        object->extendedData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WineQueryOcclusionData));
+        ((WineQueryOcclusionData *)(object->extendedData))->ctx = This->activeContext;
+
+        if(GL_SUPPORT(ARB_OCCLUSION_QUERY)) {
+            TRACE("(%p) Allocating data for an occlusion query\n", This);
+
+            ActivateContext(This, This->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+            ENTER_GL();
+            GL_EXTCALL(glGenQueriesARB(1, &((WineQueryOcclusionData *)(object->extendedData))->queryId));
+            LEAVE_GL();
+            break;
+        }
+    case WINED3DQUERYTYPE_EVENT:
+        object->extendedData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WineQueryEventData));
+        ((WineQueryEventData *)(object->extendedData))->ctx = This->activeContext;
+
+        ActivateContext(This, This->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+        ENTER_GL();
+        if(GL_SUPPORT(APPLE_FENCE)) {
+            GL_EXTCALL(glGenFencesAPPLE(1, &((WineQueryEventData *)(object->extendedData))->fenceId));
+            checkGLcall("glGenFencesAPPLE");
+        } else if(GL_SUPPORT(NV_FENCE)) {
+            GL_EXTCALL(glGenFencesNV(1, &((WineQueryEventData *)(object->extendedData))->fenceId));
+            checkGLcall("glGenFencesNV");
+        }
+        LEAVE_GL();
+        break;
+
+    case WINED3DQUERYTYPE_VCACHE:
+    case WINED3DQUERYTYPE_RESOURCEMANAGER:
+    case WINED3DQUERYTYPE_VERTEXSTATS:
+    case WINED3DQUERYTYPE_TIMESTAMP:
+    case WINED3DQUERYTYPE_TIMESTAMPDISJOINT:
+    case WINED3DQUERYTYPE_TIMESTAMPFREQ:
+    case WINED3DQUERYTYPE_PIPELINETIMINGS:
+    case WINED3DQUERYTYPE_INTERFACETIMINGS:
+    case WINED3DQUERYTYPE_VERTEXTIMINGS:
+    case WINED3DQUERYTYPE_PIXELTIMINGS:
+    case WINED3DQUERYTYPE_BANDWIDTHTIMINGS:
+    case WINED3DQUERYTYPE_CACHEUTILIZATION:
+    default:
+        object->extendedData = 0;
+        FIXME("(%p) Unhandled query type %d\n",This , Type);
+    }
+    TRACE("(%p) : Created Query %p\n", This, object);
+    return WINED3D_OK;
+}
+
+/*****************************************************************************
+ * IWineD3DDeviceImpl_SetupFullscreenWindow
+ *
+ * Helper function that modifies a HWND's Style and ExStyle for proper
+ * fullscreen use.
+ *
+ * Params:
+ *  iface: Pointer to the IWineD3DDevice interface
+ *  window: Window to setup
+ *
+ *****************************************************************************/
+static LONG fullscreen_style(LONG orig_style) {
+    LONG style = orig_style;
+    style &= ~WS_CAPTION;
+    style &= ~WS_THICKFRAME;
+
+    /* Make sure the window is managed, otherwise we won't get keyboard input */
+    style |= WS_POPUP | WS_SYSMENU;
+
+    return style;
+}
+
+static LONG fullscreen_exStyle(LONG orig_exStyle) {
+    LONG exStyle = orig_exStyle;
+
+    /* Filter out window decorations */
+    exStyle &= ~WS_EX_WINDOWEDGE;
+    exStyle &= ~WS_EX_CLIENTEDGE;
+
+    return exStyle;
+}
+
+static void IWineD3DDeviceImpl_SetupFullscreenWindow(IWineD3DDevice *iface, HWND window, UINT w, UINT h) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+
+    LONG style, exStyle;
+    /* Don't do anything if an original style is stored.
+     * That shouldn't happen
+     */
+    TRACE("(%p): Setting up window %p for exclusive mode\n", This, window);
+    if (This->style || This->exStyle) {
+        ERR("(%p): Want to change the window parameters of HWND %p, but "
+            "another style is stored for restoration afterwards\n", This, window);
+    }
+
+    /* Get the parameters and save them */
+    style = GetWindowLongW(window, GWL_STYLE);
+    exStyle = GetWindowLongW(window, GWL_EXSTYLE);
+    This->style = style;
+    This->exStyle = exStyle;
+
+    style = fullscreen_style(style);
+    exStyle = fullscreen_exStyle(exStyle);
+
+    TRACE("Old style was %08x,%08x, setting to %08x,%08x\n",
+          This->style, This->exStyle, style, exStyle);
+
+    SetWindowLongW(window, GWL_STYLE, style);
+    SetWindowLongW(window, GWL_EXSTYLE, exStyle);
+
+    /* Inform the window about the update. */
+    SetWindowPos(window, HWND_TOP, 0, 0,
+                 w, h, SWP_FRAMECHANGED | SWP_SHOWWINDOW);
+}
+
+/*****************************************************************************
+ * IWineD3DDeviceImpl_RestoreWindow
+ *
+ * Helper function that restores a windows' properties when taking it out
+ * of fullscreen mode
+ *
+ * Params:
+ *  iface: Pointer to the IWineD3DDevice interface
+ *  window: Window to setup
+ *
+ *****************************************************************************/
+static void IWineD3DDeviceImpl_RestoreWindow(IWineD3DDevice *iface, HWND window) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    LONG style, exStyle;
+
+    /* This could be a DDSCL_NORMAL -> DDSCL_NORMAL
+     * switch, do nothing
+     */
+    if (!This->style && !This->exStyle) return;
+
+    TRACE("(%p): Restoring window settings of window %p to %08x, %08x\n",
+          This, window, This->style, This->exStyle);
+
+    style = GetWindowLongW(window, GWL_STYLE);
+    exStyle = GetWindowLongW(window, GWL_EXSTYLE);
+
+    /* Only restore the style if the application didn't modify it during the fullscreen phase.
+     * Some applications change it before calling Reset() when switching between windowed and
+     * fullscreen modes(HL2), some depend on the original style(Eve Online)
+     */
+    if(style == fullscreen_style(This->style) &&
+       exStyle == fullscreen_style(This->exStyle)) {
+        SetWindowLongW(window, GWL_STYLE, This->style);
+        SetWindowLongW(window, GWL_EXSTYLE, This->exStyle);
+    }
+
+    /* Delete the old values */
+    This->style = 0;
+    This->exStyle = 0;
+
+    /* Inform the window about the update */
+    SetWindowPos(window, 0 /* InsertAfter, ignored */,
+                 0, 0, 0, 0, /* Pos, Size, ignored */
+                 SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER);
+}
+
+/* example at http://www.fairyengine.com/articles/dxmultiviews.htm */
+static HRESULT WINAPI IWineD3DDeviceImpl_CreateSwapChain(IWineD3DDevice* iface,
+        WINED3DPRESENT_PARAMETERS* pPresentationParameters, IWineD3DSwapChain** ppSwapChain,
+        IUnknown* parent, D3DCB_CREATERENDERTARGETFN D3DCB_CreateRenderTarget,
+        D3DCB_CREATEDEPTHSTENCILSURFACEFN D3DCB_CreateDepthStencil, WINED3DSURFTYPE surface_type)
+{
+    IWineD3DDeviceImpl      *This = (IWineD3DDeviceImpl *)iface;
+
+    HDC                     hDc;
+    IWineD3DSwapChainImpl  *object; /** NOTE: impl ref allowed since this is a create function **/
+    HRESULT                 hr;
+    IUnknown               *bufferParent;
+    BOOL                    displaymode_set = FALSE;
+    WINED3DDISPLAYMODE      Mode;
+    const StaticPixelFormatDesc *formatDesc;
+
+    TRACE("(%p) : Created Additional Swap Chain\n", This);
+
+   /** FIXME: Test under windows to find out what the life cycle of a swap chain is,
+   * does a device hold a reference to a swap chain giving them a lifetime of the device
+   * or does the swap chain notify the device of its destruction.
+    *******************************/
+
+    /* Check the params */
+    if(pPresentationParameters->BackBufferCount > WINED3DPRESENT_BACK_BUFFER_MAX) {
+        ERR("App requested %d back buffers, this is not supported for now\n", pPresentationParameters->BackBufferCount);
+        return WINED3DERR_INVALIDCALL;
+    } else if (pPresentationParameters->BackBufferCount > 1) {
+        FIXME("The app requests more than one back buffer, this can't be supported properly. Please configure the application to use double buffering(=1 back buffer) if possible\n");
+    }
+
+    D3DCREATEOBJECTINSTANCE(object, SwapChain)
+    switch(surface_type) {
+        case SURFACE_GDI:
+            object->lpVtbl = &IWineGDISwapChain_Vtbl;
+            break;
+        case SURFACE_OPENGL:
+            object->lpVtbl = &IWineD3DSwapChain_Vtbl;
+            break;
+        case SURFACE_UNKNOWN:
+            FIXME("Caller tried to create a SURFACE_UNKNOWN swapchain\n");
+            return WINED3DERR_INVALIDCALL;
+    }
+
+    /*********************
+    * Lookup the window Handle and the relating X window handle
+    ********************/
+
+    /* Setup hwnd we are using, plus which display this equates to */
+    object->win_handle = pPresentationParameters->hDeviceWindow;
+    if (!object->win_handle) {
+        object->win_handle = This->createParms.hFocusWindow;
+    }
+    if(!pPresentationParameters->Windowed && object->win_handle) {
+        IWineD3DDeviceImpl_SetupFullscreenWindow(iface, object->win_handle,
+                                                 pPresentationParameters->BackBufferWidth,
+                                                 pPresentationParameters->BackBufferHeight);
+    }
+
+    hDc                = GetDC(object->win_handle);
+    TRACE("Using hDc %p\n", hDc);
+
+    if (NULL == hDc) {
+        WARN("Failed to get a HDc for Window %p\n", object->win_handle);
+        return WINED3DERR_NOTAVAILABLE;
+    }
+
+    /* Get info on the current display setup */
+    IWineD3D_GetAdapterDisplayMode(This->wineD3D, This->adapter->num, &Mode);
+    object->orig_width = Mode.Width;
+    object->orig_height = Mode.Height;
+    object->orig_fmt = Mode.Format;
+    formatDesc  = getFormatDescEntry(Mode.Format, NULL, NULL);
+
+    /** MSDN: If Windowed is TRUE and either of the BackBufferWidth/Height values is zero,
+     *  then the corresponding dimension of the client area of the hDeviceWindow
+     *  (or the focus window, if hDeviceWindow is NULL) is taken.
+      **********************/
+
+    if (pPresentationParameters->Windowed &&
+        ((pPresentationParameters->BackBufferWidth == 0) ||
+         (pPresentationParameters->BackBufferHeight == 0) ||
+         (pPresentationParameters->BackBufferFormat == WINED3DFMT_UNKNOWN))) {
+
+        RECT Rect;
+        GetClientRect(object->win_handle, &Rect);
+
+        if (pPresentationParameters->BackBufferWidth == 0) {
+           pPresentationParameters->BackBufferWidth = Rect.right;
+           TRACE("Updating width to %d\n", pPresentationParameters->BackBufferWidth);
+        }
+        if (pPresentationParameters->BackBufferHeight == 0) {
+           pPresentationParameters->BackBufferHeight = Rect.bottom;
+           TRACE("Updating height to %d\n", pPresentationParameters->BackBufferHeight);
+        }
+        if (pPresentationParameters->BackBufferFormat == WINED3DFMT_UNKNOWN) {
+           pPresentationParameters->BackBufferFormat = object->orig_fmt;
+           TRACE("Updating format to %s\n", debug_d3dformat(object->orig_fmt));
+        }
+    }
+
+    /* Put the correct figures in the presentation parameters */
+    TRACE("Copying across presentation parameters\n");
+    object->presentParms = *pPresentationParameters;
+
+    TRACE("calling rendertarget CB\n");
+    hr = D3DCB_CreateRenderTarget(This->parent,
+                             parent,
+                             object->presentParms.BackBufferWidth,
+                             object->presentParms.BackBufferHeight,
+                             object->presentParms.BackBufferFormat,
+                             object->presentParms.MultiSampleType,
+                             object->presentParms.MultiSampleQuality,
+                             TRUE /* Lockable */,
+                             &object->frontBuffer,
+                             NULL /* pShared (always null)*/);
+    if (SUCCEEDED(hr)) {
+        IWineD3DSurface_SetContainer(object->frontBuffer, (IWineD3DBase *)object);
+        if(surface_type == SURFACE_OPENGL) {
+            IWineD3DSurface_ModifyLocation(object->frontBuffer, SFLAG_INDRAWABLE, TRUE);
+        }
+    } else {
+        ERR("Failed to create the front buffer\n");
+        goto error;
+    }
+
+   /*********************
+   * Windowed / Fullscreen
+   *******************/
+
+   /**
+   * TODO: MSDN says that we are only allowed one fullscreen swapchain per device,
+   * so we should really check to see if there is a fullscreen swapchain already
+   * I think Windows and X have different ideas about fullscreen, does a single head count as full screen?
+    **************************************/
+
+   if (!pPresentationParameters->Windowed) {
+        WINED3DDISPLAYMODE mode;
+
+
+        /* Change the display settings */
+        mode.Width = pPresentationParameters->BackBufferWidth;
+        mode.Height = pPresentationParameters->BackBufferHeight;
+        mode.Format = pPresentationParameters->BackBufferFormat;
+        mode.RefreshRate = pPresentationParameters->FullScreen_RefreshRateInHz;
+
+        IWineD3DDevice_SetDisplayMode(iface, 0, &mode);
+        displaymode_set = TRUE;
+    }
+
+        /**
+     * Create an opengl context for the display visual
+     *  NOTE: the visual is chosen as the window is created and the glcontext cannot
+     *     use different properties after that point in time. FIXME: How to handle when requested format
+     *     doesn't match actual visual? Cannot choose one here - code removed as it ONLY works if the one
+     *     it chooses is identical to the one already being used!
+         **********************************/
+    /** FIXME: Handle stencil appropriately via EnableAutoDepthStencil / AutoDepthStencilFormat **/
+
+    object->context = HeapAlloc(GetProcessHeap(), 0, sizeof(object->context));
+    if(!object->context) {
+        ERR("Failed to create the context array\n");
+        hr = E_OUTOFMEMORY;
+        goto error;
+    }
+    object->num_contexts = 1;
+
+    if(surface_type == SURFACE_OPENGL) {
+        object->context[0] = CreateContext(This, (IWineD3DSurfaceImpl *) object->frontBuffer, object->win_handle, FALSE /* pbuffer */, pPresentationParameters);
+        if (!object->context[0]) {
+            ERR("Failed to create a new context\n");
+            hr = WINED3DERR_NOTAVAILABLE;
+            goto error;
+        } else {
+            TRACE("Context created (HWND=%p, glContext=%p)\n",
+                object->win_handle, object->context[0]->glCtx);
+        }
+    }
+
+   /*********************
+   * Create the back, front and stencil buffers
+   *******************/
+    if(object->presentParms.BackBufferCount > 0) {
+        UINT i;
+
+        object->backBuffer = HeapAlloc(GetProcessHeap(), 0, sizeof(IWineD3DSurface *) * object->presentParms.BackBufferCount);
+        if(!object->backBuffer) {
+            ERR("Out of memory\n");
+            hr = E_OUTOFMEMORY;
+            goto error;
+        }
+
+        for(i = 0; i < object->presentParms.BackBufferCount; i++) {
+            TRACE("calling rendertarget CB\n");
+            hr = D3DCB_CreateRenderTarget(This->parent,
+                                    parent,
+                                    object->presentParms.BackBufferWidth,
+                                    object->presentParms.BackBufferHeight,
+                                    object->presentParms.BackBufferFormat,
+                                    object->presentParms.MultiSampleType,
+                                    object->presentParms.MultiSampleQuality,
+                                    TRUE /* Lockable */,
+                                    &object->backBuffer[i],
+                                    NULL /* pShared (always null)*/);
+            if(SUCCEEDED(hr)) {
+                IWineD3DSurface_SetContainer(object->backBuffer[i], (IWineD3DBase *)object);
+            } else {
+                ERR("Cannot create new back buffer\n");
+                goto error;
+            }
+            if(surface_type == SURFACE_OPENGL) {
+                ENTER_GL();
+                glDrawBuffer(GL_BACK);
+                checkGLcall("glDrawBuffer(GL_BACK)");
+                LEAVE_GL();
+            }
+        }
+    } else {
+        object->backBuffer = NULL;
+
+        /* Single buffering - draw to front buffer */
+        if(surface_type == SURFACE_OPENGL) {
+            ENTER_GL();
+            glDrawBuffer(GL_FRONT);
+            checkGLcall("glDrawBuffer(GL_FRONT)");
+            LEAVE_GL();
+        }
+    }
+
+    /* Under directX swapchains share the depth stencil, so only create one depth-stencil */
+    if (pPresentationParameters->EnableAutoDepthStencil && surface_type == SURFACE_OPENGL) {
+        TRACE("Creating depth stencil buffer\n");
+        if (This->auto_depth_stencil_buffer == NULL ) {
+            hr = D3DCB_CreateDepthStencil(This->parent,
+                                    parent,
+                                    object->presentParms.BackBufferWidth,
+                                    object->presentParms.BackBufferHeight,
+                                    object->presentParms.AutoDepthStencilFormat,
+                                    object->presentParms.MultiSampleType,
+                                    object->presentParms.MultiSampleQuality,
+                                    FALSE /* FIXME: Discard */,
+                                    &This->auto_depth_stencil_buffer,
+                                    NULL /* pShared (always null)*/  );
+            if (SUCCEEDED(hr)) {
+                IWineD3DSurface_SetContainer(This->auto_depth_stencil_buffer, 0);
+            } else {
+                ERR("Failed to create the auto depth stencil\n");
+                goto error;
+            }
+        }
+    }
+
+    IWineD3DSwapChain_GetGammaRamp((IWineD3DSwapChain *) object, &object->orig_gamma);
+
+    TRACE("Created swapchain %p\n", object);
+    TRACE("FrontBuf @ %p, BackBuf @ %p, DepthStencil %d\n",object->frontBuffer, object->backBuffer ? object->backBuffer[0] : NULL, pPresentationParameters->EnableAutoDepthStencil);
+    return WINED3D_OK;
+
+error:
+    if (displaymode_set) {
+        DEVMODEW devmode;
+        RECT     clip_rc;
+
+        SetRect(&clip_rc, 0, 0, object->orig_width, object->orig_height);
+        ClipCursor(NULL);
+
+        /* Change the display settings */
+        memset(&devmode, 0, sizeof(devmode));
+        devmode.dmSize       = sizeof(devmode);
+        devmode.dmFields     = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
+        devmode.dmBitsPerPel = formatDesc->bpp * 8;
+        devmode.dmPelsWidth  = object->orig_width;
+        devmode.dmPelsHeight = object->orig_height;
+        ChangeDisplaySettingsExW(This->adapter->DeviceName, &devmode, NULL, CDS_FULLSCREEN, NULL);
+    }
+
+    if (object->backBuffer) {
+        UINT i;
+        for(i = 0; i < object->presentParms.BackBufferCount; i++) {
+            if(object->backBuffer[i]) {
+                IWineD3DSurface_GetParent(object->backBuffer[i], &bufferParent);
+                IUnknown_Release(bufferParent); /* once for the get parent */
+                if (IUnknown_Release(bufferParent) > 0) {
+                    FIXME("(%p) Something's still holding the back buffer\n",This);
+                }
+            }
+        }
+        HeapFree(GetProcessHeap(), 0, object->backBuffer);
+        object->backBuffer = NULL;
+    }
+    if(object->context && object->context[0])
+        DestroyContext(This, object->context[0]);
+    if(object->frontBuffer) {
+        IWineD3DSurface_GetParent(object->frontBuffer, &bufferParent);
+        IUnknown_Release(bufferParent); /* once for the get parent */
+        if (IUnknown_Release(bufferParent) > 0) {
+            FIXME("(%p) Something's still holding the front buffer\n",This);
+        }
+    }
+    HeapFree(GetProcessHeap(), 0, object);
+    return hr;
+}
+
+/** NOTE: These are ahead of the other getters and setters to save using a forward declaration **/
+static UINT     WINAPI  IWineD3DDeviceImpl_GetNumberOfSwapChains(IWineD3DDevice *iface) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    TRACE("(%p)\n", This);
+
+    return This->NumberOfSwapChains;
+}
+
+static HRESULT  WINAPI  IWineD3DDeviceImpl_GetSwapChain(IWineD3DDevice *iface, UINT iSwapChain, IWineD3DSwapChain **pSwapChain) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    TRACE("(%p) : swapchain %d\n", This, iSwapChain);
+
+    if(iSwapChain < This->NumberOfSwapChains) {
+        *pSwapChain = This->swapchains[iSwapChain];
+        IWineD3DSwapChain_AddRef(*pSwapChain);
+        TRACE("(%p) returning %p\n", This, *pSwapChain);
+        return WINED3D_OK;
+    } else {
+        TRACE("Swapchain out of range\n");
+        *pSwapChain = NULL;
+        return WINED3DERR_INVALIDCALL;
+    }
+}
+
+/*****
+ * Vertex Declaration
+ *****/
+static HRESULT WINAPI IWineD3DDeviceImpl_CreateVertexDeclaration(IWineD3DDevice* iface, IWineD3DVertexDeclaration** ppVertexDeclaration,
+        IUnknown *parent, const WINED3DVERTEXELEMENT *elements, UINT element_count) {
+    IWineD3DDeviceImpl            *This   = (IWineD3DDeviceImpl *)iface;
+    IWineD3DVertexDeclarationImpl *object = NULL;
+    HRESULT hr = WINED3D_OK;
+
+    TRACE("(%p) : directXVersion %u, elements %p, element_count %d, ppDecl=%p\n",
+            This, ((IWineD3DImpl *)This->wineD3D)->dxVersion, elements, element_count, ppVertexDeclaration);
+
+    D3DCREATEOBJECTINSTANCE(object, VertexDeclaration)
+
+    hr = IWineD3DVertexDeclaration_SetDeclaration((IWineD3DVertexDeclaration *)object, elements, element_count);
+    if(FAILED(hr)) {
+        IWineD3DVertexDeclaration_Release((IWineD3DVertexDeclaration *)object);
+        *ppVertexDeclaration = NULL;
+    }
+
+    return hr;
+}
+
+static unsigned int ConvertFvfToDeclaration(IWineD3DDeviceImpl *This, /* For the GL info, which has the type table */
+                                            DWORD fvf, WINED3DVERTEXELEMENT** ppVertexElements) {
+
+    unsigned int idx, idx2;
+    unsigned int offset;
+    BOOL has_pos = (fvf & WINED3DFVF_POSITION_MASK) != 0;
+    BOOL has_blend = (fvf & WINED3DFVF_XYZB5) > WINED3DFVF_XYZRHW;
+    BOOL has_blend_idx = has_blend &&
+       (((fvf & WINED3DFVF_XYZB5) == WINED3DFVF_XYZB5) ||
+        (fvf & WINED3DFVF_LASTBETA_D3DCOLOR) ||
+        (fvf & WINED3DFVF_LASTBETA_UBYTE4));
+    BOOL has_normal = (fvf & WINED3DFVF_NORMAL) != 0;
+    BOOL has_psize = (fvf & WINED3DFVF_PSIZE) != 0;
+    BOOL has_diffuse = (fvf & WINED3DFVF_DIFFUSE) != 0;
+    BOOL has_specular = (fvf & WINED3DFVF_SPECULAR) !=0;
+
+    DWORD num_textures = (fvf & WINED3DFVF_TEXCOUNT_MASK) >> WINED3DFVF_TEXCOUNT_SHIFT;
+    DWORD texcoords = (fvf & 0xFFFF0000) >> 16;
+
+    WINED3DVERTEXELEMENT end_element = WINED3DDECL_END();
+    WINED3DVERTEXELEMENT *elements = NULL;
+
+    unsigned int size;
+    DWORD num_blends = 1 + (((fvf & WINED3DFVF_XYZB5) - WINED3DFVF_XYZB1) >> 1);
+    if (has_blend_idx) num_blends--;
+
+    /* Compute declaration size */
+    size = has_pos + (has_blend && num_blends > 0) + has_blend_idx + has_normal +
+           has_psize + has_diffuse + has_specular + num_textures + 1;
+
+    /* convert the declaration */
+    elements = HeapAlloc(GetProcessHeap(), 0, size * sizeof(WINED3DVERTEXELEMENT));
+    if (!elements)
+        return 0;
+
+    elements[size-1] = end_element;
+    idx = 0;
+    if (has_pos) {
+        if (!has_blend && (fvf & WINED3DFVF_XYZRHW)) {
+            elements[idx].Type = WINED3DDECLTYPE_FLOAT4;
+            elements[idx].Usage = WINED3DDECLUSAGE_POSITIONT;
+        }
+        else {
+            elements[idx].Type = WINED3DDECLTYPE_FLOAT3;
+            elements[idx].Usage = WINED3DDECLUSAGE_POSITION;
+        }
+        elements[idx].UsageIndex = 0;
+        idx++;
+    }
+    if (has_blend && (num_blends > 0)) {
+        if (((fvf & WINED3DFVF_XYZB5) == WINED3DFVF_XYZB2) && (fvf & WINED3DFVF_LASTBETA_D3DCOLOR))
+            elements[idx].Type = WINED3DDECLTYPE_D3DCOLOR;
+        else {
+            switch(num_blends) {
+                case 1: elements[idx].Type = WINED3DDECLTYPE_FLOAT1; break;
+                case 2: elements[idx].Type = WINED3DDECLTYPE_FLOAT2; break;
+                case 3: elements[idx].Type = WINED3DDECLTYPE_FLOAT3; break;
+                case 4: elements[idx].Type = WINED3DDECLTYPE_FLOAT4; break;
+                default:
+                    ERR("Unexpected amount of blend values: %u\n", num_blends);
+            }
+        }
+        elements[idx].Usage = WINED3DDECLUSAGE_BLENDWEIGHT;
+        elements[idx].UsageIndex = 0;
+        idx++;
+    }
+    if (has_blend_idx) {
+        if (fvf & WINED3DFVF_LASTBETA_UBYTE4 ||
+            (((fvf & WINED3DFVF_XYZB5) == WINED3DFVF_XYZB2) && (fvf & WINED3DFVF_LASTBETA_D3DCOLOR)))
+            elements[idx].Type = WINED3DDECLTYPE_UBYTE4;
+        else if (fvf & WINED3DFVF_LASTBETA_D3DCOLOR)
+            elements[idx].Type = WINED3DDECLTYPE_D3DCOLOR;
+        else
+            elements[idx].Type = WINED3DDECLTYPE_FLOAT1;
+        elements[idx].Usage = WINED3DDECLUSAGE_BLENDINDICES;
+        elements[idx].UsageIndex = 0;
+        idx++;
+    }
+    if (has_normal) {
+        elements[idx].Type = WINED3DDECLTYPE_FLOAT3;
+        elements[idx].Usage = WINED3DDECLUSAGE_NORMAL;
+        elements[idx].UsageIndex = 0;
+        idx++;
+    }
+    if (has_psize) {
+        elements[idx].Type = WINED3DDECLTYPE_FLOAT1;
+        elements[idx].Usage = WINED3DDECLUSAGE_PSIZE;
+        elements[idx].UsageIndex = 0;
+        idx++;
+    }
+    if (has_diffuse) {
+        elements[idx].Type = WINED3DDECLTYPE_D3DCOLOR;
+        elements[idx].Usage = WINED3DDECLUSAGE_COLOR;
+        elements[idx].UsageIndex = 0;
+        idx++;
+    }
+    if (has_specular) {
+        elements[idx].Type = WINED3DDECLTYPE_D3DCOLOR;
+        elements[idx].Usage = WINED3DDECLUSAGE_COLOR;
+        elements[idx].UsageIndex = 1;
+        idx++;
+    }
+    for (idx2 = 0; idx2 < num_textures; idx2++) {
+        unsigned int numcoords = (texcoords >> (idx2*2)) & 0x03;
+        switch (numcoords) {
+            case WINED3DFVF_TEXTUREFORMAT1:
+                elements[idx].Type = WINED3DDECLTYPE_FLOAT1;
+                break;
+            case WINED3DFVF_TEXTUREFORMAT2:
+                elements[idx].Type = WINED3DDECLTYPE_FLOAT2;
+                break;
+            case WINED3DFVF_TEXTUREFORMAT3:
+                elements[idx].Type = WINED3DDECLTYPE_FLOAT3;
+                break;
+            case WINED3DFVF_TEXTUREFORMAT4:
+                elements[idx].Type = WINED3DDECLTYPE_FLOAT4;
+                break;
+        }
+        elements[idx].Usage = WINED3DDECLUSAGE_TEXCOORD;
+        elements[idx].UsageIndex = idx2;
+        idx++;
+    }
+
+    /* Now compute offsets, and initialize the rest of the fields */
+    for (idx = 0, offset = 0; idx < size-1; idx++) {
+        elements[idx].Stream = 0;
+        elements[idx].Method = WINED3DDECLMETHOD_DEFAULT;
+        elements[idx].Offset = offset;
+        offset += WINED3D_ATR_SIZE(elements[idx].Type) * WINED3D_ATR_TYPESIZE(elements[idx].Type);
+    }
+
+    *ppVertexElements = elements;
+    return size;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_CreateVertexDeclarationFromFVF(IWineD3DDevice* iface, IWineD3DVertexDeclaration** ppVertexDeclaration, IUnknown *Parent, DWORD Fvf) {
+    WINED3DVERTEXELEMENT* elements = NULL;
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    unsigned int size;
+    DWORD hr;
+
+    size = ConvertFvfToDeclaration(This, Fvf, &elements);
+    if (size == 0) return WINED3DERR_OUTOFVIDEOMEMORY;
+
+    hr = IWineD3DDevice_CreateVertexDeclaration(iface, ppVertexDeclaration, Parent, elements, size);
+    HeapFree(GetProcessHeap(), 0, elements);
+    if (hr != S_OK) return hr;
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_CreateVertexShader(IWineD3DDevice *iface, IWineD3DVertexDeclaration *vertex_declaration, CONST DWORD *pFunction, IWineD3DVertexShader **ppVertexShader, IUnknown *parent) {
+    IWineD3DDeviceImpl       *This = (IWineD3DDeviceImpl *)iface;
+    IWineD3DVertexShaderImpl *object;  /* NOTE: impl usage is ok, this is a create */
+    HRESULT hr = WINED3D_OK;
+    D3DCREATESHADEROBJECTINSTANCE(object, VertexShader)
+    object->baseShader.shader_ins = IWineD3DVertexShaderImpl_shader_ins;
+
+    TRACE("(%p) : Created Vertex shader %p\n", This, *ppVertexShader);
+
+    if (vertex_declaration) {
+        IWineD3DVertexShader_FakeSemantics(*ppVertexShader, vertex_declaration);
+    }
+
+    hr = IWineD3DVertexShader_SetFunction(*ppVertexShader, pFunction);
+
+    if (WINED3D_OK != hr) {
+        FIXME("(%p) : Failed to set the function, returning WINED3DERR_INVALIDCALL\n", iface);
+        IWineD3DVertexShader_Release(*ppVertexShader);
+        return WINED3DERR_INVALIDCALL;
+    }
+    list_add_head(&This->shaders, &object->baseShader.shader_list_entry);
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_CreatePixelShader(IWineD3DDevice *iface, CONST DWORD *pFunction, IWineD3DPixelShader **ppPixelShader, IUnknown *parent) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    IWineD3DPixelShaderImpl *object; /* NOTE: impl allowed, this is a create */
+    HRESULT hr = WINED3D_OK;
+
+    D3DCREATESHADEROBJECTINSTANCE(object, PixelShader)
+    object->baseShader.shader_ins = IWineD3DPixelShaderImpl_shader_ins;
+    hr = IWineD3DPixelShader_SetFunction(*ppPixelShader, pFunction);
+    if (WINED3D_OK == hr) {
+        TRACE("(%p) : Created Pixel shader %p\n", This, *ppPixelShader);
+        list_add_head(&This->shaders, &object->baseShader.shader_list_entry);
+    } else {
+        WARN("(%p) : Failed to create pixel shader\n", This);
+    }
+
+    return hr;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_CreatePalette(IWineD3DDevice *iface, DWORD Flags,
+        const PALETTEENTRY *PalEnt, IWineD3DPalette **Palette, IUnknown *Parent)
+{
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    IWineD3DPaletteImpl *object;
+    HRESULT hr;
+    TRACE("(%p)->(%x, %p, %p, %p)\n", This, Flags, PalEnt, Palette, Parent);
+
+    /* Create the new object */
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IWineD3DPaletteImpl));
+    if(!object) {
+        ERR("Out of memory when allocating memory for a IWineD3DPalette implementation\n");
+        return E_OUTOFMEMORY;
+    }
+
+    object->lpVtbl = &IWineD3DPalette_Vtbl;
+    object->ref = 1;
+    object->Flags = Flags;
+    object->parent = Parent;
+    object->wineD3DDevice = This;
+    object->palNumEntries = IWineD3DPaletteImpl_Size(Flags);
+	
+    object->hpal = CreatePalette((const LOGPALETTE*)&(object->palVersion));
+
+    if(!object->hpal) {
+        HeapFree( GetProcessHeap(), 0, object);
+        return E_OUTOFMEMORY;
+    }
+
+    hr = IWineD3DPalette_SetEntries((IWineD3DPalette *) object, 0, 0, IWineD3DPaletteImpl_Size(Flags), PalEnt);
+    if(FAILED(hr)) {
+        IWineD3DPalette_Release((IWineD3DPalette *) object);
+        return hr;
+    }
+
+    *Palette = (IWineD3DPalette *) object;
+
+    return WINED3D_OK;
+}
+
+static void IWineD3DDeviceImpl_LoadLogo(IWineD3DDeviceImpl *This, const char *filename) {
+    HBITMAP hbm;
+    BITMAP bm;
+    HRESULT hr;
+    HDC dcb = NULL, dcs = NULL;
+    WINEDDCOLORKEY colorkey;
+
+    hbm = (HBITMAP) LoadImageA(NULL, filename, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
+    if(hbm)
+    {
+        GetObjectA(hbm, sizeof(BITMAP), &bm);
+        dcb = CreateCompatibleDC(NULL);
+        if(!dcb) goto out;
+        SelectObject(dcb, hbm);
+    }
+    else
+    {
+        /* Create a 32x32 white surface to indicate that wined3d is used, but the specified image
+         * couldn't be loaded
+         */
+        memset(&bm, 0, sizeof(bm));
+        bm.bmWidth = 32;
+        bm.bmHeight = 32;
+    }
+
+    hr = IWineD3DDevice_CreateSurface((IWineD3DDevice *) This, bm.bmWidth, bm.bmHeight, WINED3DFMT_R5G6B5,
+                                      TRUE, FALSE, 0, &This->logo_surface, WINED3DRTYPE_SURFACE, 0,
+                                      WINED3DPOOL_DEFAULT, WINED3DMULTISAMPLE_NONE, 0, NULL, SURFACE_OPENGL, NULL);
+    if(FAILED(hr)) {
+        ERR("Wine logo requested, but failed to create surface\n");
+        goto out;
+    }
+
+    if(dcb) {
+        hr = IWineD3DSurface_GetDC(This->logo_surface, &dcs);
+        if(FAILED(hr)) goto out;
+        BitBlt(dcs, 0, 0, bm.bmWidth, bm.bmHeight, dcb, 0, 0, SRCCOPY);
+        IWineD3DSurface_ReleaseDC(This->logo_surface, dcs);
+
+        colorkey.dwColorSpaceLowValue = 0;
+        colorkey.dwColorSpaceHighValue = 0;
+        IWineD3DSurface_SetColorKey(This->logo_surface, WINEDDCKEY_SRCBLT, &colorkey);
+    } else {
+        /* Fill the surface with a white color to show that wined3d is there */
+        IWineD3DDevice_ColorFill((IWineD3DDevice *) This, This->logo_surface, NULL, 0xffffffff);
+    }
+
+    out:
+    if(dcb) {
+        DeleteDC(dcb);
+    }
+    if(hbm) {
+        DeleteObject(hbm);
+    }
+    return;
+}
+
+static void create_dummy_textures(IWineD3DDeviceImpl *This) {
+    unsigned int i;
+    /* Under DirectX you can have texture stage operations even if no texture is
+    bound, whereas opengl will only do texture operations when a valid texture is
+    bound. We emulate this by creating dummy textures and binding them to each
+    texture stage, but disable all stages by default. Hence if a stage is enabled
+    then the default texture will kick in until replaced by a SetTexture call     */
+    ENTER_GL();
+
+    if(GL_SUPPORT(APPLE_CLIENT_STORAGE)) {
+        /* The dummy texture does not have client storage backing */
+        glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_FALSE);
+        checkGLcall("glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_FALSE)");
+    }
+    for (i = 0; i < GL_LIMITS(textures); i++) {
+        GLubyte white = 255;
+
+        /* Make appropriate texture active */
+        if (GL_SUPPORT(ARB_MULTITEXTURE)) {
+            GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB + i));
+            checkGLcall("glActiveTextureARB");
+        } else if (i > 0) {
+            FIXME("Program using multiple concurrent textures which this opengl implementation doesn't support\n");
+        }
+
+        /* Generate an opengl texture name */
+        glGenTextures(1, &This->dummyTextureName[i]);
+        checkGLcall("glGenTextures");
+        TRACE("Dummy Texture %d given name %d\n", i, This->dummyTextureName[i]);
+
+        /* Generate a dummy 2d texture (not using 1d because they cause many
+        * DRI drivers fall back to sw) */
+        This->stateBlock->textureDimensions[i] = GL_TEXTURE_2D;
+        glBindTexture(GL_TEXTURE_2D, This->dummyTextureName[i]);
+        checkGLcall("glBindTexture");
+
+        glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, 1, 1, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, &white);
+        checkGLcall("glTexImage2D");
+    }
+    if(GL_SUPPORT(APPLE_CLIENT_STORAGE)) {
+        /* Reenable because if supported it is enabled by default */
+        glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_TRUE);
+        checkGLcall("glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_TRUE)");
+    }
+
+    LEAVE_GL();
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_Init3D(IWineD3DDevice *iface, WINED3DPRESENT_PARAMETERS* pPresentationParameters, D3DCB_CREATESWAPCHAIN D3DCB_CreateSwapChain) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    IWineD3DSwapChainImpl *swapchain = NULL;
+    HRESULT hr;
+    DWORD state;
+    unsigned int i;
+
+    TRACE("(%p)->(%p,%p)\n", This, pPresentationParameters, D3DCB_CreateSwapChain);
+    if(This->d3d_initialized) return WINED3DERR_INVALIDCALL;
+    if(!This->adapter->opengl) return WINED3DERR_INVALIDCALL;
+
+    /* TODO: Test if OpenGL is compiled in and loaded */
+
+    TRACE("(%p) : Creating stateblock\n", This);
+    /* Creating the startup stateBlock - Note Special Case: 0 => Don't fill in yet! */
+    hr = IWineD3DDevice_CreateStateBlock(iface,
+                                         WINED3DSBT_INIT,
+                                         (IWineD3DStateBlock **)&This->stateBlock,
+                                         NULL);
+    if (WINED3D_OK != hr) {   /* Note: No parent needed for initial internal stateblock */
+        WARN("Failed to create stateblock\n");
+        goto err_out;
+    }
+    TRACE("(%p) : Created stateblock (%p)\n", This, This->stateBlock);
+    This->updateStateBlock = This->stateBlock;
+    IWineD3DStateBlock_AddRef((IWineD3DStateBlock*)This->updateStateBlock);
+
+    hr = allocate_shader_constants(This->updateStateBlock);
+    if (WINED3D_OK != hr) {
+        goto err_out;
+    }
+
+    This->render_targets = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IWineD3DSurface *) * GL_LIMITS(buffers));
+    This->draw_buffers = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLenum) * GL_LIMITS(buffers));
+
+    This->NumberOfPalettes = 1;
+    This->palettes = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(PALETTEENTRY*));
+    if(!This->palettes || !This->render_targets || !This->draw_buffers) {
+        ERR("Out of memory!\n");
+        goto err_out;
+    }
+    This->palettes[0] = HeapAlloc(GetProcessHeap(), 0, sizeof(PALETTEENTRY) * 256);
+    if(!This->palettes[0]) {
+        ERR("Out of memory!\n");
+        goto err_out;
+    }
+    for (i = 0; i < 256; ++i) {
+        This->palettes[0][i].peRed   = 0xFF;
+        This->palettes[0][i].peGreen = 0xFF;
+        This->palettes[0][i].peBlue  = 0xFF;
+        This->palettes[0][i].peFlags = 0xFF;
+    }
+    This->currentPalette = 0;
+
+    /* Initialize the texture unit mapping to a 1:1 mapping */
+    for (state = 0; state < MAX_COMBINED_SAMPLERS; ++state) {
+        if (state < GL_LIMITS(fragment_samplers)) {
+            This->texUnitMap[state] = state;
+            This->rev_tex_unit_map[state] = state;
+        } else {
+            This->texUnitMap[state] = -1;
+            This->rev_tex_unit_map[state] = -1;
+        }
+    }
+
+    /* Setup the implicit swapchain */
+    TRACE("Creating implicit swapchain\n");
+    hr=D3DCB_CreateSwapChain(This->parent, pPresentationParameters, (IWineD3DSwapChain **)&swapchain);
+    if (FAILED(hr) || !swapchain) {
+        WARN("Failed to create implicit swapchain\n");
+        goto err_out;
+    }
+
+    This->NumberOfSwapChains = 1;
+    This->swapchains = HeapAlloc(GetProcessHeap(), 0, This->NumberOfSwapChains * sizeof(IWineD3DSwapChain *));
+    if(!This->swapchains) {
+        ERR("Out of memory!\n");
+        goto err_out;
+    }
+    This->swapchains[0] = (IWineD3DSwapChain *) swapchain;
+
+    if(swapchain->backBuffer && swapchain->backBuffer[0]) {
+        TRACE("Setting rendertarget to %p\n", swapchain->backBuffer);
+        This->render_targets[0] = swapchain->backBuffer[0];
+        This->lastActiveRenderTarget = swapchain->backBuffer[0];
+    }
+    else {
+        TRACE("Setting rendertarget to %p\n", swapchain->frontBuffer);
+        This->render_targets[0] = swapchain->frontBuffer;
+        This->lastActiveRenderTarget = swapchain->frontBuffer;
+    }
+    IWineD3DSurface_AddRef(This->render_targets[0]);
+    This->activeContext = swapchain->context[0];
+    This->lastThread = GetCurrentThreadId();
+
+    /* Depth Stencil support */
+    This->stencilBufferTarget = This->auto_depth_stencil_buffer;
+    if (NULL != This->stencilBufferTarget) {
+        IWineD3DSurface_AddRef(This->stencilBufferTarget);
+    }
+
+    hr = This->shader_backend->shader_alloc_private(iface);
+    if(FAILED(hr)) {
+        TRACE("Shader private data couldn't be allocated\n");
+        goto err_out;
+    }
+    hr = This->frag_pipe->alloc_private(iface);
+    if(FAILED(hr)) {
+        TRACE("Fragment pipeline private data couldn't be allocated\n");
+        goto err_out;
+    }
+    hr = This->blitter->alloc_private(iface);
+    if(FAILED(hr)) {
+        TRACE("Blitter private data couldn't be allocated\n");
+        goto err_out;
+    }
+
+    /* Set up some starting GL setup */
+
+    /* Setup all the devices defaults */
+    IWineD3DStateBlock_InitStartupStateBlock((IWineD3DStateBlock *)This->stateBlock);
+    create_dummy_textures(This);
+
+    ENTER_GL();
+
+    { /* Set a default viewport */
+        WINED3DVIEWPORT vp;
+        vp.X      = 0;
+        vp.Y      = 0;
+        vp.Width  = pPresentationParameters->BackBufferWidth;
+        vp.Height = pPresentationParameters->BackBufferHeight;
+        vp.MinZ   = 0.0f;
+        vp.MaxZ   = 1.0f;
+        IWineD3DDevice_SetViewport((IWineD3DDevice *)This, &vp);
+    }
+
+    /* Initialize the current view state */
+    This->view_ident = 1;
+    This->contexts[0]->last_was_rhw = 0;
+    glGetIntegerv(GL_MAX_LIGHTS, &This->maxConcurrentLights);
+    checkGLcall("glGetIntegerv(GL_MAX_LIGHTS, &This->maxConcurrentLights)");
+
+    switch(wined3d_settings.offscreen_rendering_mode) {
+        case ORM_FBO:
+        case ORM_PBUFFER:
+            This->offscreenBuffer = GL_BACK;
+            break;
+
+        case ORM_BACKBUFFER:
+        {
+            if(This->activeContext->aux_buffers > 0) {
+                TRACE("Using auxilliary buffer for offscreen rendering\n");
+                This->offscreenBuffer = GL_AUX0;
+            } else {
+                TRACE("Using back buffer for offscreen rendering\n");
+                This->offscreenBuffer = GL_BACK;
+            }
+        }
+    }
+
+    TRACE("(%p) All defaults now set up, leaving Init3D with %p\n", This, This);
+    LEAVE_GL();
+
+    /* Clear the screen */
+    IWineD3DDevice_Clear((IWineD3DDevice *) This, 0, NULL,
+                          WINED3DCLEAR_TARGET | pPresentationParameters->EnableAutoDepthStencil ? WINED3DCLEAR_ZBUFFER | WINED3DCLEAR_STENCIL : 0,
+                          0x00, 1.0, 0);
+
+    This->d3d_initialized = TRUE;
+
+    if(wined3d_settings.logo) {
+        IWineD3DDeviceImpl_LoadLogo(This, wined3d_settings.logo);
+    }
+    This->highest_dirty_ps_const = 0;
+    This->highest_dirty_vs_const = 0;
+    return WINED3D_OK;
+
+err_out:
+    HeapFree(GetProcessHeap(), 0, This->render_targets);
+    HeapFree(GetProcessHeap(), 0, This->draw_buffers);
+    HeapFree(GetProcessHeap(), 0, This->swapchains);
+    This->NumberOfSwapChains = 0;
+    if(This->palettes) {
+        HeapFree(GetProcessHeap(), 0, This->palettes[0]);
+        HeapFree(GetProcessHeap(), 0, This->palettes);
+    }
+    This->NumberOfPalettes = 0;
+    if(swapchain) {
+        IWineD3DSwapChain_Release( (IWineD3DSwapChain *) swapchain);
+    }
+    if(This->stateBlock) {
+        IWineD3DStateBlock_Release((IWineD3DStateBlock *) This->stateBlock);
+        This->stateBlock = NULL;
+    }
+    if (This->blit_priv) {
+        This->blitter->free_private(iface);
+    }
+    if (This->fragment_priv) {
+        This->frag_pipe->free_private(iface);
+    }
+    if (This->shader_priv) {
+        This->shader_backend->shader_free_private(iface);
+    }
+    return hr;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_InitGDI(IWineD3DDevice *iface, WINED3DPRESENT_PARAMETERS* pPresentationParameters, D3DCB_CREATESWAPCHAIN D3DCB_CreateSwapChain) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    IWineD3DSwapChainImpl *swapchain = NULL;
+    HRESULT hr;
+
+    /* Setup the implicit swapchain */
+    TRACE("Creating implicit swapchain\n");
+    hr=D3DCB_CreateSwapChain(This->parent, pPresentationParameters, (IWineD3DSwapChain **)&swapchain);
+    if (FAILED(hr) || !swapchain) {
+        WARN("Failed to create implicit swapchain\n");
+        goto err_out;
+    }
+
+    This->NumberOfSwapChains = 1;
+    This->swapchains = HeapAlloc(GetProcessHeap(), 0, This->NumberOfSwapChains * sizeof(IWineD3DSwapChain *));
+    if(!This->swapchains) {
+        ERR("Out of memory!\n");
+        goto err_out;
+    }
+    This->swapchains[0] = (IWineD3DSwapChain *) swapchain;
+    return WINED3D_OK;
+
+err_out:
+    IWineD3DSwapChain_Release((IWineD3DSwapChain *) swapchain);
+    return hr;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_Uninit3D(IWineD3DDevice *iface, D3DCB_DESTROYSURFACEFN D3DCB_DestroyDepthStencilSurface, D3DCB_DESTROYSWAPCHAINFN D3DCB_DestroySwapChain) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    int sampler;
+    UINT i;
+    TRACE("(%p)\n", This);
+
+    if(!This->d3d_initialized) return WINED3DERR_INVALIDCALL;
+
+    /* I don't think that the interface guarantees that the device is destroyed from the same thread
+     * it was created. Thus make sure a context is active for the glDelete* calls
+     */
+    ActivateContext(This, This->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+
+    if(This->logo_surface) IWineD3DSurface_Release(This->logo_surface);
+
+    TRACE("Deleting high order patches\n");
+    for(i = 0; i < PATCHMAP_SIZE; i++) {
+        struct list *e1, *e2;
+        struct WineD3DRectPatch *patch;
+        LIST_FOR_EACH_SAFE(e1, e2, &This->patches[i]) {
+            patch = LIST_ENTRY(e1, struct WineD3DRectPatch, entry);
+            IWineD3DDevice_DeletePatch(iface, patch->Handle);
+        }
+    }
+
+    /* Delete the palette conversion shader if it is around */
+    if(This->paletteConversionShader) {
+        ENTER_GL();
+        GL_EXTCALL(glDeleteProgramsARB(1, &This->paletteConversionShader));
+        LEAVE_GL();
+        This->paletteConversionShader = 0;
+    }
+
+    /* Delete the pbuffer context if there is any */
+    if(This->pbufferContext) DestroyContext(This, This->pbufferContext);
+
+    /* Delete the mouse cursor texture */
+    if(This->cursorTexture) {
+        ENTER_GL();
+        glDeleteTextures(1, &This->cursorTexture);
+        LEAVE_GL();
+        This->cursorTexture = 0;
+    }
+
+    for (sampler = 0; sampler < MAX_FRAGMENT_SAMPLERS; ++sampler) {
+        IWineD3DDevice_SetTexture(iface, sampler, NULL);
+    }
+    for (sampler = 0; sampler < MAX_VERTEX_SAMPLERS; ++sampler) {
+        IWineD3DDevice_SetTexture(iface, WINED3DVERTEXTEXTURESAMPLER0 + sampler, NULL);
+    }
+
+    /* Destroy the depth blt resources, they will be invalid after the reset. Also free shader
+     * private data, it might contain opengl pointers
+     */
+    if(This->depth_blt_texture) {
+        glDeleteTextures(1, &This->depth_blt_texture);
+        This->depth_blt_texture = 0;
+    }
+    if (This->depth_blt_rb) {
+        GL_EXTCALL(glDeleteRenderbuffersEXT(1, &This->depth_blt_rb));
+        This->depth_blt_rb = 0;
+        This->depth_blt_rb_w = 0;
+        This->depth_blt_rb_h = 0;
+    }
+
+    /* Release the update stateblock */
+    if(IWineD3DStateBlock_Release((IWineD3DStateBlock *)This->updateStateBlock) > 0){
+        if(This->updateStateBlock != This->stateBlock)
+            FIXME("(%p) Something's still holding the Update stateblock\n",This);
+    }
+    This->updateStateBlock = NULL;
+
+    { /* because were not doing proper internal refcounts releasing the primary state block
+        causes recursion with the extra checks in ResourceReleased, to avoid this we have
+        to set this->stateBlock = NULL; first */
+        IWineD3DStateBlock *stateBlock = (IWineD3DStateBlock *)This->stateBlock;
+        This->stateBlock = NULL;
+
+        /* Release the stateblock */
+        if(IWineD3DStateBlock_Release(stateBlock) > 0){
+            FIXME("(%p) Something's still holding the Update stateblock\n",This);
+        }
+    }
+
+    /* Destroy the shader backend. Note that this has to happen after all shaders are destroyed. */
+    This->blitter->free_private(iface);
+    This->frag_pipe->free_private(iface);
+    This->shader_backend->shader_free_private(iface);
+
+    /* Release the buffers (with sanity checks)*/
+    TRACE("Releasing the depth stencil buffer at %p\n", This->stencilBufferTarget);
+    if(This->stencilBufferTarget != NULL && (IWineD3DSurface_Release(This->stencilBufferTarget) >0)){
+        if(This->auto_depth_stencil_buffer != This->stencilBufferTarget)
+            FIXME("(%p) Something's still holding the stencilBufferTarget\n",This);
+    }
+    This->stencilBufferTarget = NULL;
+
+    TRACE("Releasing the render target at %p\n", This->render_targets[0]);
+    if(IWineD3DSurface_Release(This->render_targets[0]) >0){
+          /* This check is a bit silly, it should be in swapchain_release FIXME("(%p) Something's still holding the renderTarget\n",This); */
+    }
+    TRACE("Setting rendertarget to NULL\n");
+    This->render_targets[0] = NULL;
+
+    if (This->auto_depth_stencil_buffer) {
+        if(D3DCB_DestroyDepthStencilSurface(This->auto_depth_stencil_buffer) > 0) {
+            FIXME("(%p) Something's still holding the auto depth stencil buffer\n", This);
+        }
+        This->auto_depth_stencil_buffer = NULL;
+    }
+
+    for(i=0; i < This->NumberOfSwapChains; i++) {
+        TRACE("Releasing the implicit swapchain %d\n", i);
+        if (D3DCB_DestroySwapChain(This->swapchains[i])  > 0) {
+            FIXME("(%p) Something's still holding the implicit swapchain\n", This);
+        }
+    }
+
+    HeapFree(GetProcessHeap(), 0, This->swapchains);
+    This->swapchains = NULL;
+    This->NumberOfSwapChains = 0;
+
+    for (i = 0; i < This->NumberOfPalettes; i++) HeapFree(GetProcessHeap(), 0, This->palettes[i]);
+    HeapFree(GetProcessHeap(), 0, This->palettes);
+    This->palettes = NULL;
+    This->NumberOfPalettes = 0;
+
+    HeapFree(GetProcessHeap(), 0, This->render_targets);
+    HeapFree(GetProcessHeap(), 0, This->draw_buffers);
+    This->render_targets = NULL;
+    This->draw_buffers = NULL;
+
+    This->d3d_initialized = FALSE;
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_UninitGDI(IWineD3DDevice *iface, D3DCB_DESTROYSWAPCHAINFN D3DCB_DestroySwapChain) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    unsigned int i;
+
+    for(i=0; i < This->NumberOfSwapChains; i++) {
+        TRACE("Releasing the implicit swapchain %d\n", i);
+        if (D3DCB_DestroySwapChain(This->swapchains[i])  > 0) {
+            FIXME("(%p) Something's still holding the implicit swapchain\n", This);
+        }
+    }
+
+    HeapFree(GetProcessHeap(), 0, This->swapchains);
+    This->swapchains = NULL;
+    This->NumberOfSwapChains = 0;
+    return WINED3D_OK;
+}
+
+/* Enables thread safety in the wined3d device and its resources. Called by DirectDraw
+ * from SetCooperativeLevel if DDSCL_MULTITHREADED is specified, and by d3d8/9 from
+ * CreateDevice if D3DCREATE_MULTITHREADED is passed.
+ *
+ * There is no way to deactivate thread safety once it is enabled.
+ */
+static void WINAPI IWineD3DDeviceImpl_SetMultithreaded(IWineD3DDevice *iface) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+
+    /*For now just store the flag(needed in case of ddraw) */
+    This->createParms.BehaviorFlags |= WINED3DCREATE_MULTITHREADED;
+
+    return;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_SetDisplayMode(IWineD3DDevice *iface, UINT iSwapChain,
+        const WINED3DDISPLAYMODE* pMode) {
+    DEVMODEW devmode;
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    LONG ret;
+    const StaticPixelFormatDesc *formatDesc  = getFormatDescEntry(pMode->Format, NULL, NULL);
+    RECT clip_rc;
+
+    TRACE("(%p)->(%d,%p) Mode=%dx%dx@%d, %s\n", This, iSwapChain, pMode, pMode->Width, pMode->Height, pMode->RefreshRate, debug_d3dformat(pMode->Format));
+
+    /* Resize the screen even without a window:
+     * The app could have unset it with SetCooperativeLevel, but not called
+     * RestoreDisplayMode first. Then the release will call RestoreDisplayMode,
+     * but we don't have any hwnd
+     */
+
+    memset(&devmode, 0, sizeof(devmode));
+    devmode.dmSize = sizeof(devmode);
+    devmode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
+    devmode.dmBitsPerPel = formatDesc->bpp * 8;
+    devmode.dmPelsWidth  = pMode->Width;
+    devmode.dmPelsHeight = pMode->Height;
+
+    devmode.dmDisplayFrequency = pMode->RefreshRate;
+    if (pMode->RefreshRate != 0)  {
+        devmode.dmFields |= DM_DISPLAYFREQUENCY;
+    }
+
+    /* Only change the mode if necessary */
+    if( (This->ddraw_width == pMode->Width) &&
+        (This->ddraw_height == pMode->Height) &&
+        (This->ddraw_format == pMode->Format) &&
+        (pMode->RefreshRate == 0) ) {
+        return WINED3D_OK;
+    }
+
+    ret = ChangeDisplaySettingsExW(NULL, &devmode, NULL, CDS_FULLSCREEN, NULL);
+    if (ret != DISP_CHANGE_SUCCESSFUL) {
+        if(devmode.dmDisplayFrequency != 0) {
+            WARN("ChangeDisplaySettingsExW failed, trying without the refresh rate\n");
+            devmode.dmFields &= ~DM_DISPLAYFREQUENCY;
+            devmode.dmDisplayFrequency = 0;
+            ret = ChangeDisplaySettingsExW(NULL, &devmode, NULL, CDS_FULLSCREEN, NULL) != DISP_CHANGE_SUCCESSFUL;
+        }
+        if(ret != DISP_CHANGE_SUCCESSFUL) {
+            return WINED3DERR_NOTAVAILABLE;
+        }
+    }
+
+    /* Store the new values */
+    This->ddraw_width = pMode->Width;
+    This->ddraw_height = pMode->Height;
+    This->ddraw_format = pMode->Format;
+
+    /* And finally clip mouse to our screen */
+    SetRect(&clip_rc, 0, 0, pMode->Width, pMode->Height);
+    ClipCursor(&clip_rc);
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_GetDirect3D(IWineD3DDevice *iface, IWineD3D **ppD3D) {
+   IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+   *ppD3D= This->wineD3D;
+   TRACE("(%p) : wineD3D returning %p\n", This,  *ppD3D);
+   IWineD3D_AddRef(*ppD3D);
+   return WINED3D_OK;
+}
+
+static UINT WINAPI IWineD3DDeviceImpl_GetAvailableTextureMem(IWineD3DDevice *iface) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+
+    TRACE("(%p) : simulating %dMB, returning %dMB left\n",  This,
+         (This->adapter->TextureRam/(1024*1024)),
+         ((This->adapter->TextureRam - This->adapter->UsedTextureRam) / (1024*1024)));
+    /* return simulated texture memory left */
+    return (This->adapter->TextureRam - This->adapter->UsedTextureRam);
+}
+
+
+
+/*****
+ * Get / Set FVF
+ *****/
+static HRESULT WINAPI IWineD3DDeviceImpl_SetFVF(IWineD3DDevice *iface, DWORD fvf) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+
+    /* Update the current state block */
+    This->updateStateBlock->changed.fvf      = TRUE;
+
+    if(This->updateStateBlock->fvf == fvf) {
+        TRACE("Application is setting the old fvf over, nothing to do\n");
+        return WINED3D_OK;
+    }
+
+    This->updateStateBlock->fvf              = fvf;
+    TRACE("(%p) : FVF Shader FVF set to %x\n", This, fvf);
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_VDECL);
+    return WINED3D_OK;
+}
+
+
+static HRESULT WINAPI IWineD3DDeviceImpl_GetFVF(IWineD3DDevice *iface, DWORD *pfvf) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    TRACE("(%p) : GetFVF returning %x\n", This, This->stateBlock->fvf);
+    *pfvf = This->stateBlock->fvf;
+    return WINED3D_OK;
+}
+
+/*****
+ * Get / Set Stream Source
+ *****/
+static HRESULT WINAPI IWineD3DDeviceImpl_SetStreamSource(IWineD3DDevice *iface, UINT StreamNumber,IWineD3DVertexBuffer* pStreamData, UINT OffsetInBytes, UINT Stride) {
+        IWineD3DDeviceImpl       *This = (IWineD3DDeviceImpl *)iface;
+    IWineD3DVertexBuffer     *oldSrc;
+
+    if (StreamNumber >= MAX_STREAMS) {
+        WARN("Stream out of range %d\n", StreamNumber);
+        return WINED3DERR_INVALIDCALL;
+    } else if(OffsetInBytes & 0x3) {
+        WARN("OffsetInBytes is not 4 byte aligned: %d\n", OffsetInBytes);
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    oldSrc = This->updateStateBlock->streamSource[StreamNumber];
+    TRACE("(%p) : StreamNo: %u, OldStream (%p), NewStream (%p), OffsetInBytes %u, NewStride %u\n", This, StreamNumber, oldSrc, pStreamData, OffsetInBytes, Stride);
+
+    This->updateStateBlock->changed.streamSource[StreamNumber] = TRUE;
+
+    if(oldSrc == pStreamData &&
+       This->updateStateBlock->streamStride[StreamNumber] == Stride &&
+       This->updateStateBlock->streamOffset[StreamNumber] == OffsetInBytes) {
+       TRACE("Application is setting the old values over, nothing to do\n");
+       return WINED3D_OK;
+    }
+
+    This->updateStateBlock->streamSource[StreamNumber]         = pStreamData;
+    if (pStreamData) {
+        This->updateStateBlock->streamStride[StreamNumber]     = Stride;
+        This->updateStateBlock->streamOffset[StreamNumber]     = OffsetInBytes;
+    }
+
+    /* Handle recording of state blocks */
+    if (This->isRecordingState) {
+        TRACE("Recording... not performing anything\n");
+        if(pStreamData) IWineD3DVertexBuffer_AddRef(pStreamData);
+        if(oldSrc) IWineD3DVertexBuffer_Release(oldSrc);
+        return WINED3D_OK;
+    }
+
+    /* Need to do a getParent and pass the references up */
+    /* MSDN says ..... When an application no longer holds a reference to this interface, the interface will automatically be freed.
+    which suggests that we shouldn't be ref counting? and do need a _release on the stream source to reset the stream source
+    so for now, just count internally   */
+    if (pStreamData != NULL) {
+        IWineD3DVertexBufferImpl *vbImpl = (IWineD3DVertexBufferImpl *) pStreamData;
+        InterlockedIncrement(&vbImpl->bindCount);
+        IWineD3DVertexBuffer_AddRef(pStreamData);
+    }
+    if (oldSrc != NULL) {
+        InterlockedDecrement(&((IWineD3DVertexBufferImpl *) oldSrc)->bindCount);
+        IWineD3DVertexBuffer_Release(oldSrc);
+    }
+
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_STREAMSRC);
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_GetStreamSource(IWineD3DDevice *iface, UINT StreamNumber,IWineD3DVertexBuffer** pStream, UINT *pOffset, UINT* pStride) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+
+    TRACE("(%p) : StreamNo: %u, Stream (%p), Offset %u, Stride %u\n", This, StreamNumber,
+           This->stateBlock->streamSource[StreamNumber],
+           This->stateBlock->streamOffset[StreamNumber],
+           This->stateBlock->streamStride[StreamNumber]);
+
+    if (StreamNumber >= MAX_STREAMS) {
+        WARN("Stream out of range %d\n", StreamNumber);
+        return WINED3DERR_INVALIDCALL;
+    }
+    *pStream = This->stateBlock->streamSource[StreamNumber];
+    *pStride = This->stateBlock->streamStride[StreamNumber];
+    if (pOffset) {
+        *pOffset = This->stateBlock->streamOffset[StreamNumber];
+    }
+
+    if (*pStream != NULL) {
+        IWineD3DVertexBuffer_AddRef(*pStream); /* We have created a new reference to the VB */
+    }
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_SetStreamSourceFreq(IWineD3DDevice *iface,  UINT StreamNumber, UINT Divider) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    UINT oldFlags = This->updateStateBlock->streamFlags[StreamNumber];
+    UINT oldFreq = This->updateStateBlock->streamFreq[StreamNumber];
+
+    /* Verify input at least in d3d9 this is invalid*/
+    if( (Divider & WINED3DSTREAMSOURCE_INSTANCEDATA) && (Divider & WINED3DSTREAMSOURCE_INDEXEDDATA)){
+        WARN("INSTANCEDATA and INDEXEDDATA were set, returning D3DERR_INVALIDCALL\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+    if( (Divider & WINED3DSTREAMSOURCE_INSTANCEDATA) && StreamNumber == 0 ){
+        WARN("INSTANCEDATA used on stream 0, returning D3DERR_INVALIDCALL\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+    if( Divider == 0 ){
+        WARN("Divider is 0, returning D3DERR_INVALIDCALL\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    TRACE("(%p) StreamNumber(%d), Divider(%d)\n", This, StreamNumber, Divider);
+    This->updateStateBlock->streamFlags[StreamNumber] = Divider & (WINED3DSTREAMSOURCE_INSTANCEDATA  | WINED3DSTREAMSOURCE_INDEXEDDATA );
+
+    This->updateStateBlock->changed.streamFreq[StreamNumber]  = TRUE;
+    This->updateStateBlock->streamFreq[StreamNumber]          = Divider & 0x7FFFFF;
+
+    if(This->updateStateBlock->streamFreq[StreamNumber] != oldFreq ||
+       This->updateStateBlock->streamFlags[StreamNumber] != oldFlags) {
+        IWineD3DDeviceImpl_MarkStateDirty(This, STATE_STREAMSRC);
+    }
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_GetStreamSourceFreq(IWineD3DDevice *iface,  UINT StreamNumber, UINT* Divider) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+
+    TRACE("(%p) StreamNumber(%d), Divider(%p)\n", This, StreamNumber, Divider);
+    *Divider = This->updateStateBlock->streamFreq[StreamNumber] | This->updateStateBlock->streamFlags[StreamNumber];
+
+    TRACE("(%p) : returning %d\n", This, *Divider);
+
+    return WINED3D_OK;
+}
+
+/*****
+ * Get / Set & Multiply Transform
+ *****/
+static HRESULT  WINAPI  IWineD3DDeviceImpl_SetTransform(IWineD3DDevice *iface, WINED3DTRANSFORMSTATETYPE d3dts, CONST WINED3DMATRIX* lpmatrix) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+
+    /* Most of this routine, comments included copied from ddraw tree initially: */
+    TRACE("(%p) : Transform State=%s\n", This, debug_d3dtstype(d3dts));
+
+    /* Handle recording of state blocks */
+    if (This->isRecordingState) {
+        TRACE("Recording... not performing anything\n");
+        This->updateStateBlock->changed.transform[d3dts] = TRUE;
+        This->updateStateBlock->transforms[d3dts] = *lpmatrix;
+        return WINED3D_OK;
+    }
+
+    /*
+     * If the new matrix is the same as the current one,
+     * we cut off any further processing. this seems to be a reasonable
+     * optimization because as was noticed, some apps (warcraft3 for example)
+     * tend towards setting the same matrix repeatedly for some reason.
+     *
+     * From here on we assume that the new matrix is different, wherever it matters.
+     */
+    if (!memcmp(&This->stateBlock->transforms[d3dts].u.m[0][0], lpmatrix, sizeof(WINED3DMATRIX))) {
+        TRACE("The app is setting the same matrix over again\n");
+        return WINED3D_OK;
+    } else {
+        conv_mat(lpmatrix, &This->stateBlock->transforms[d3dts].u.m[0][0]);
+    }
+
+    /*
+       ScreenCoord = ProjectionMat * ViewMat * WorldMat * ObjectCoord
+       where ViewMat = Camera space, WorldMat = world space.
+
+       In OpenGL, camera and world space is combined into GL_MODELVIEW
+       matrix.  The Projection matrix stay projection matrix.
+     */
+
+    /* Capture the times we can just ignore the change for now */
+    if (d3dts == WINED3DTS_VIEW) { /* handle the VIEW matrix */
+        This->view_ident = !memcmp(lpmatrix, identity, 16 * sizeof(float));
+        /* Handled by the state manager */
+    }
+
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_TRANSFORM(d3dts));
+    return WINED3D_OK;
+
+}
+static HRESULT WINAPI IWineD3DDeviceImpl_GetTransform(IWineD3DDevice *iface, WINED3DTRANSFORMSTATETYPE State, WINED3DMATRIX* pMatrix) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    TRACE("(%p) : for Transform State %s\n", This, debug_d3dtstype(State));
+    *pMatrix = This->stateBlock->transforms[State];
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_MultiplyTransform(IWineD3DDevice *iface, WINED3DTRANSFORMSTATETYPE State, CONST WINED3DMATRIX* pMatrix) {
+    const WINED3DMATRIX *mat = NULL;
+    WINED3DMATRIX temp;
+
+    /* Note: Using 'updateStateBlock' rather than 'stateblock' in the code
+     * below means it will be recorded in a state block change, but it
+     * works regardless where it is recorded.
+     * If this is found to be wrong, change to StateBlock.
+     */
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    TRACE("(%p) : For state %s\n", This, debug_d3dtstype(State));
+
+    if (State < HIGHEST_TRANSFORMSTATE)
+    {
+        mat = &This->updateStateBlock->transforms[State];
+    } else {
+        FIXME("Unhandled transform state!!\n");
+    }
+
+    multiply_matrix(&temp, mat, pMatrix);
+
+    /* Apply change via set transform - will reapply to eg. lights this way */
+    return IWineD3DDeviceImpl_SetTransform(iface, State, &temp);
+}
+
+/*****
+ * Get / Set Light
+ *****/
+/* Note lights are real special cases. Although the device caps state only eg. 8 are supported,
+   you can reference any indexes you want as long as that number max are enabled at any
+   one point in time! Therefore since the indexes can be anything, we need a hashmap of them.
+   However, this causes stateblock problems. When capturing the state block, I duplicate the hashmap,
+   but when recording, just build a chain pretty much of commands to be replayed.                  */
+
+static HRESULT WINAPI IWineD3DDeviceImpl_SetLight(IWineD3DDevice *iface, DWORD Index, CONST WINED3DLIGHT* pLight) {
+    float rho;
+    PLIGHTINFOEL *object = NULL;
+    UINT Hi = LIGHTMAP_HASHFUNC(Index);
+    struct list *e;
+
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    TRACE("(%p) : Idx(%d), pLight(%p). Hash index is %d\n", This, Index, pLight, Hi);
+
+    /* Check the parameter range. Need for speed most wanted sets junk lights which confuse
+     * the gl driver.
+     */
+    if(!pLight) {
+        WARN("Light pointer = NULL, returning WINED3DERR_INVALIDCALL\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    switch(pLight->Type) {
+        case WINED3DLIGHT_POINT:
+        case WINED3DLIGHT_SPOT:
+        case WINED3DLIGHT_PARALLELPOINT:
+        case WINED3DLIGHT_GLSPOT:
+            /* Incorrect attenuation values can cause the gl driver to crash. Happens with Need for speed
+             * most wanted
+             */
+            if(pLight->Attenuation0 < 0.0 || pLight->Attenuation1 < 0.0 || pLight->Attenuation2 < 0.0) {
+                WARN("Attenuation is negative, returning WINED3DERR_INVALIDCALL\n");
+                return WINED3DERR_INVALIDCALL;
+            }
+            break;
+
+        case WINED3DLIGHT_DIRECTIONAL:
+            /* Ignores attenuation */
+            break;
+
+        default:
+        WARN("Light type out of range, returning WINED3DERR_INVALIDCALL\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    LIST_FOR_EACH(e, &This->updateStateBlock->lightMap[Hi]) {
+        object = LIST_ENTRY(e, PLIGHTINFOEL, entry);
+        if(object->OriginalIndex == Index) break;
+        object = NULL;
+    }
+
+    if(!object) {
+        TRACE("Adding new light\n");
+        object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object));
+        if(!object) {
+            ERR("Out of memory error when allocating a light\n");
+            return E_OUTOFMEMORY;
+        }
+        list_add_head(&This->updateStateBlock->lightMap[Hi], &object->entry);
+        object->glIndex = -1;
+        object->OriginalIndex = Index;
+        object->changed = TRUE;
+    }
+
+    /* Initialize the object */
+    TRACE("Light %d setting to type %d, Diffuse(%f,%f,%f,%f), Specular(%f,%f,%f,%f), Ambient(%f,%f,%f,%f)\n", Index, pLight->Type,
+          pLight->Diffuse.r, pLight->Diffuse.g, pLight->Diffuse.b, pLight->Diffuse.a,
+          pLight->Specular.r, pLight->Specular.g, pLight->Specular.b, pLight->Specular.a,
+          pLight->Ambient.r, pLight->Ambient.g, pLight->Ambient.b, pLight->Ambient.a);
+    TRACE("... Pos(%f,%f,%f), Dirn(%f,%f,%f)\n", pLight->Position.x, pLight->Position.y, pLight->Position.z,
+          pLight->Direction.x, pLight->Direction.y, pLight->Direction.z);
+    TRACE("... Range(%f), Falloff(%f), Theta(%f), Phi(%f)\n", pLight->Range, pLight->Falloff, pLight->Theta, pLight->Phi);
+
+    /* Save away the information */
+    object->OriginalParms = *pLight;
+
+    switch (pLight->Type) {
+    case WINED3DLIGHT_POINT:
+        /* Position */
+        object->lightPosn[0] = pLight->Position.x;
+        object->lightPosn[1] = pLight->Position.y;
+        object->lightPosn[2] = pLight->Position.z;
+        object->lightPosn[3] = 1.0f;
+        object->cutoff = 180.0f;
+        /* FIXME: Range */
+        break;
+
+    case WINED3DLIGHT_DIRECTIONAL:
+        /* Direction */
+        object->lightPosn[0] = -pLight->Direction.x;
+        object->lightPosn[1] = -pLight->Direction.y;
+        object->lightPosn[2] = -pLight->Direction.z;
+        object->lightPosn[3] = 0.0;
+        object->exponent     = 0.0f;
+        object->cutoff       = 180.0f;
+        break;
+
+    case WINED3DLIGHT_SPOT:
+        /* Position */
+        object->lightPosn[0] = pLight->Position.x;
+        object->lightPosn[1] = pLight->Position.y;
+        object->lightPosn[2] = pLight->Position.z;
+        object->lightPosn[3] = 1.0;
+
+        /* Direction */
+        object->lightDirn[0] = pLight->Direction.x;
+        object->lightDirn[1] = pLight->Direction.y;
+        object->lightDirn[2] = pLight->Direction.z;
+        object->lightDirn[3] = 1.0;
+
+        /*
+         * opengl-ish and d3d-ish spot lights use too different models for the
+         * light "intensity" as a function of the angle towards the main light direction,
+         * so we only can approximate very roughly.
+         * however spot lights are rather rarely used in games (if ever used at all).
+         * furthermore if still used, probably nobody pays attention to such details.
+         */
+        if (pLight->Falloff == 0) {
+            /* Falloff = 0 is easy, because d3d's and opengl's spot light equations have the
+             * falloff resp. exponent parameter as an exponent, so the spot light lighting
+             * will always be 1.0 for both of them, and we don't have to care for the
+             * rest of the rather complex calculation
+             */
+            object->exponent = 0;
+        } else {
+            rho = pLight->Theta + (pLight->Phi - pLight->Theta)/(2*pLight->Falloff);
+            if (rho < 0.0001) rho = 0.0001f;
+            object->exponent = -0.3/log(cos(rho/2));
+        }
+	if (object->exponent > 128.0) {
+		object->exponent = 128.0;
+	}
+        object->cutoff = pLight->Phi*90/M_PI;
+
+        /* FIXME: Range */
+        break;
+
+    default:
+        FIXME("Unrecognized light type %d\n", pLight->Type);
+    }
+
+    /* Update the live definitions if the light is currently assigned a glIndex */
+    if (object->glIndex != -1 && !This->isRecordingState) {
+        IWineD3DDeviceImpl_MarkStateDirty(This, STATE_ACTIVELIGHT(object->glIndex));
+    }
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_GetLight(IWineD3DDevice *iface, DWORD Index, WINED3DLIGHT* pLight) {
+    PLIGHTINFOEL *lightInfo = NULL;
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    DWORD Hi = LIGHTMAP_HASHFUNC(Index);
+    struct list *e;
+    TRACE("(%p) : Idx(%d), pLight(%p)\n", This, Index, pLight);
+
+    LIST_FOR_EACH(e, &This->stateBlock->lightMap[Hi]) {
+        lightInfo = LIST_ENTRY(e, PLIGHTINFOEL, entry);
+        if(lightInfo->OriginalIndex == Index) break;
+        lightInfo = NULL;
+    }
+
+    if (lightInfo == NULL) {
+        TRACE("Light information requested but light not defined\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    *pLight = lightInfo->OriginalParms;
+    return WINED3D_OK;
+}
+
+/*****
+ * Get / Set Light Enable
+ *   (Note for consistency, renamed d3dx function by adding the 'set' prefix)
+ *****/
+static HRESULT WINAPI IWineD3DDeviceImpl_SetLightEnable(IWineD3DDevice *iface, DWORD Index, BOOL Enable) {
+    PLIGHTINFOEL *lightInfo = NULL;
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    UINT Hi = LIGHTMAP_HASHFUNC(Index);
+    struct list *e;
+    TRACE("(%p) : Idx(%d), enable? %d\n", This, Index, Enable);
+
+    /* Tests show true = 128...not clear why */
+    Enable = Enable? 128: 0;
+
+    LIST_FOR_EACH(e, &This->updateStateBlock->lightMap[Hi]) {
+        lightInfo = LIST_ENTRY(e, PLIGHTINFOEL, entry);
+        if(lightInfo->OriginalIndex == Index) break;
+        lightInfo = NULL;
+    }
+    TRACE("Found light: %p\n", lightInfo);
+
+    /* Special case - enabling an undefined light creates one with a strict set of parms! */
+    if (lightInfo == NULL) {
+
+        TRACE("Light enabled requested but light not defined, so defining one!\n");
+        IWineD3DDeviceImpl_SetLight(iface, Index, &WINED3D_default_light);
+
+        /* Search for it again! Should be fairly quick as near head of list */
+        LIST_FOR_EACH(e, &This->updateStateBlock->lightMap[Hi]) {
+            lightInfo = LIST_ENTRY(e, PLIGHTINFOEL, entry);
+            if(lightInfo->OriginalIndex == Index) break;
+            lightInfo = NULL;
+        }
+        if (lightInfo == NULL) {
+            FIXME("Adding default lights has failed dismally\n");
+            return WINED3DERR_INVALIDCALL;
+        }
+    }
+
+    lightInfo->enabledChanged = TRUE;
+    if(!Enable) {
+        if(lightInfo->glIndex != -1) {
+            if(!This->isRecordingState) {
+                IWineD3DDeviceImpl_MarkStateDirty(This, STATE_ACTIVELIGHT(lightInfo->glIndex));
+            }
+
+            This->updateStateBlock->activeLights[lightInfo->glIndex] = NULL;
+            lightInfo->glIndex = -1;
+        } else {
+            TRACE("Light already disabled, nothing to do\n");
+        }
+        lightInfo->enabled = FALSE;
+    } else {
+        lightInfo->enabled = TRUE;
+        if (lightInfo->glIndex != -1) {
+            /* nop */
+            TRACE("Nothing to do as light was enabled\n");
+        } else {
+            int i;
+            /* Find a free gl light */
+            for(i = 0; i < This->maxConcurrentLights; i++) {
+                if(This->updateStateBlock->activeLights[i] == NULL) {
+                    This->updateStateBlock->activeLights[i] = lightInfo;
+                    lightInfo->glIndex = i;
+                    break;
+                }
+            }
+            if(lightInfo->glIndex == -1) {
+                /* Our tests show that Windows returns D3D_OK in this situation, even with
+                 * D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_PUREDEVICE devices. This
+                 * is consistent among ddraw, d3d8 and d3d9. GetLightEnable returns TRUE
+                 * as well for those lights.
+                 *
+                 * TODO: Test how this affects rendering
+                 */
+                FIXME("Too many concurrently active lights\n");
+                return WINED3D_OK;
+            }
+
+            /* i == lightInfo->glIndex */
+            if(!This->isRecordingState) {
+                IWineD3DDeviceImpl_MarkStateDirty(This, STATE_ACTIVELIGHT(i));
+            }
+        }
+    }
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_GetLightEnable(IWineD3DDevice *iface, DWORD Index,BOOL* pEnable) {
+
+    PLIGHTINFOEL *lightInfo = NULL;
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    struct list *e;
+    UINT Hi = LIGHTMAP_HASHFUNC(Index);
+    TRACE("(%p) : for idx(%d)\n", This, Index);
+
+    LIST_FOR_EACH(e, &This->stateBlock->lightMap[Hi]) {
+        lightInfo = LIST_ENTRY(e, PLIGHTINFOEL, entry);
+        if(lightInfo->OriginalIndex == Index) break;
+        lightInfo = NULL;
+    }
+
+    if (lightInfo == NULL) {
+        TRACE("Light enabled state requested but light not defined\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+    /* true is 128 according to SetLightEnable */
+    *pEnable = lightInfo->enabled ? 128 : 0;
+    return WINED3D_OK;
+}
+
+/*****
+ * Get / Set Clip Planes
+ *****/
+static HRESULT WINAPI IWineD3DDeviceImpl_SetClipPlane(IWineD3DDevice *iface, DWORD Index, CONST float *pPlane) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    TRACE("(%p) : for idx %d, %p\n", This, Index, pPlane);
+
+    /* Validate Index */
+    if (Index >= GL_LIMITS(clipplanes)) {
+        TRACE("Application has requested clipplane this device doesn't support\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    This->updateStateBlock->changed.clipplane[Index] = TRUE;
+
+    if(This->updateStateBlock->clipplane[Index][0] == pPlane[0] &&
+       This->updateStateBlock->clipplane[Index][1] == pPlane[1] &&
+       This->updateStateBlock->clipplane[Index][2] == pPlane[2] &&
+       This->updateStateBlock->clipplane[Index][3] == pPlane[3]) {
+        TRACE("Application is setting old values over, nothing to do\n");
+        return WINED3D_OK;
+    }
+
+    This->updateStateBlock->clipplane[Index][0] = pPlane[0];
+    This->updateStateBlock->clipplane[Index][1] = pPlane[1];
+    This->updateStateBlock->clipplane[Index][2] = pPlane[2];
+    This->updateStateBlock->clipplane[Index][3] = pPlane[3];
+
+    /* Handle recording of state blocks */
+    if (This->isRecordingState) {
+        TRACE("Recording... not performing anything\n");
+        return WINED3D_OK;
+    }
+
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_CLIPPLANE(Index));
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_GetClipPlane(IWineD3DDevice *iface, DWORD Index, float *pPlane) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    TRACE("(%p) : for idx %d\n", This, Index);
+
+    /* Validate Index */
+    if (Index >= GL_LIMITS(clipplanes)) {
+        TRACE("Application has requested clipplane this device doesn't support\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    pPlane[0] = This->stateBlock->clipplane[Index][0];
+    pPlane[1] = This->stateBlock->clipplane[Index][1];
+    pPlane[2] = This->stateBlock->clipplane[Index][2];
+    pPlane[3] = This->stateBlock->clipplane[Index][3];
+    return WINED3D_OK;
+}
+
+/*****
+ * Get / Set Clip Plane Status
+ *   WARNING: This code relies on the fact that D3DCLIPSTATUS8 == D3DCLIPSTATUS9
+ *****/
+static HRESULT  WINAPI  IWineD3DDeviceImpl_SetClipStatus(IWineD3DDevice *iface, CONST WINED3DCLIPSTATUS* pClipStatus) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    FIXME("(%p) : stub\n", This);
+    if (NULL == pClipStatus) {
+      return WINED3DERR_INVALIDCALL;
+    }
+    This->updateStateBlock->clip_status.ClipUnion = pClipStatus->ClipUnion;
+    This->updateStateBlock->clip_status.ClipIntersection = pClipStatus->ClipIntersection;
+    return WINED3D_OK;
+}
+
+static HRESULT  WINAPI  IWineD3DDeviceImpl_GetClipStatus(IWineD3DDevice *iface, WINED3DCLIPSTATUS* pClipStatus) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    FIXME("(%p) : stub\n", This);
+    if (NULL == pClipStatus) {
+      return WINED3DERR_INVALIDCALL;
+    }
+    pClipStatus->ClipUnion = This->updateStateBlock->clip_status.ClipUnion;
+    pClipStatus->ClipIntersection = This->updateStateBlock->clip_status.ClipIntersection;
+    return WINED3D_OK;
+}
+
+/*****
+ * Get / Set Material
+ *****/
+static HRESULT WINAPI IWineD3DDeviceImpl_SetMaterial(IWineD3DDevice *iface, CONST WINED3DMATERIAL* pMaterial) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+
+    This->updateStateBlock->changed.material = TRUE;
+    This->updateStateBlock->material = *pMaterial;
+
+    /* Handle recording of state blocks */
+    if (This->isRecordingState) {
+        TRACE("Recording... not performing anything\n");
+        return WINED3D_OK;
+    }
+
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_MATERIAL);
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_GetMaterial(IWineD3DDevice *iface, WINED3DMATERIAL* pMaterial) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    *pMaterial = This->updateStateBlock->material;
+    TRACE("(%p) : Diffuse (%f,%f,%f,%f)\n", This, pMaterial->Diffuse.r, pMaterial->Diffuse.g,
+        pMaterial->Diffuse.b, pMaterial->Diffuse.a);
+    TRACE("(%p) : Ambient (%f,%f,%f,%f)\n", This, pMaterial->Ambient.r, pMaterial->Ambient.g,
+        pMaterial->Ambient.b, pMaterial->Ambient.a);
+    TRACE("(%p) : Specular (%f,%f,%f,%f)\n", This, pMaterial->Specular.r, pMaterial->Specular.g,
+        pMaterial->Specular.b, pMaterial->Specular.a);
+    TRACE("(%p) : Emissive (%f,%f,%f,%f)\n", This, pMaterial->Emissive.r, pMaterial->Emissive.g,
+        pMaterial->Emissive.b, pMaterial->Emissive.a);
+    TRACE("(%p) : Power (%f)\n", This, pMaterial->Power);
+
+    return WINED3D_OK;
+}
+
+/*****
+ * Get / Set Indices
+ *****/
+static HRESULT WINAPI IWineD3DDeviceImpl_SetIndices(IWineD3DDevice *iface, IWineD3DIndexBuffer* pIndexData) {
+    IWineD3DDeviceImpl  *This = (IWineD3DDeviceImpl *)iface;
+    IWineD3DIndexBuffer *oldIdxs;
+
+    TRACE("(%p) : Setting to %p\n", This, pIndexData);
+    oldIdxs = This->updateStateBlock->pIndexData;
+
+    This->updateStateBlock->changed.indices = TRUE;
+    This->updateStateBlock->pIndexData = pIndexData;
+
+    /* Handle recording of state blocks */
+    if (This->isRecordingState) {
+        TRACE("Recording... not performing anything\n");
+        if(pIndexData) IWineD3DIndexBuffer_AddRef(pIndexData);
+        if(oldIdxs) IWineD3DIndexBuffer_Release(oldIdxs);
+        return WINED3D_OK;
+    }
+
+    if(oldIdxs != pIndexData) {
+        IWineD3DDeviceImpl_MarkStateDirty(This, STATE_INDEXBUFFER);
+        if(pIndexData) IWineD3DIndexBuffer_AddRef(pIndexData);
+        if(oldIdxs) IWineD3DIndexBuffer_Release(oldIdxs);
+    }
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_GetIndices(IWineD3DDevice *iface, IWineD3DIndexBuffer** ppIndexData) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+
+    *ppIndexData = This->stateBlock->pIndexData;
+
+    /* up ref count on ppindexdata */
+    if (*ppIndexData) {
+        IWineD3DIndexBuffer_AddRef(*ppIndexData);
+        TRACE("(%p) index data set to %p\n", This, ppIndexData);
+    }else{
+        TRACE("(%p) No index data set\n", This);
+    }
+    TRACE("Returning %p\n", *ppIndexData);
+
+    return WINED3D_OK;
+}
+
+/* Method to offer d3d9 a simple way to set the base vertex index without messing with the index buffer */
+static HRESULT WINAPI IWineD3DDeviceImpl_SetBaseVertexIndex(IWineD3DDevice *iface, INT BaseIndex) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    TRACE("(%p)->(%d)\n", This, BaseIndex);
+
+    if(This->updateStateBlock->baseVertexIndex == BaseIndex) {
+        TRACE("Application is setting the old value over, nothing to do\n");
+        return WINED3D_OK;
+    }
+
+    This->updateStateBlock->baseVertexIndex = BaseIndex;
+
+    if (This->isRecordingState) {
+        TRACE("Recording... not performing anything\n");
+        return WINED3D_OK;
+    }
+    /* The base vertex index affects the stream sources */
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_STREAMSRC);
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_GetBaseVertexIndex(IWineD3DDevice *iface, INT* base_index) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    TRACE("(%p) : base_index %p\n", This, base_index);
+
+    *base_index = This->stateBlock->baseVertexIndex;
+
+    TRACE("Returning %u\n", *base_index);
+
+    return WINED3D_OK;
+}
+
+/*****
+ * Get / Set Viewports
+ *****/
+static HRESULT WINAPI IWineD3DDeviceImpl_SetViewport(IWineD3DDevice *iface, CONST WINED3DVIEWPORT* pViewport) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+
+    TRACE("(%p)\n", This);
+    This->updateStateBlock->changed.viewport = TRUE;
+    This->updateStateBlock->viewport = *pViewport;
+
+    /* Handle recording of state blocks */
+    if (This->isRecordingState) {
+        TRACE("Recording... not performing anything\n");
+        return WINED3D_OK;
+    }
+
+    TRACE("(%p) : x=%d, y=%d, wid=%d, hei=%d, minz=%f, maxz=%f\n", This,
+          pViewport->X, pViewport->Y, pViewport->Width, pViewport->Height, pViewport->MinZ, pViewport->MaxZ);
+
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_VIEWPORT);
+    return WINED3D_OK;
+
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_GetViewport(IWineD3DDevice *iface, WINED3DVIEWPORT* pViewport) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    TRACE("(%p)\n", This);
+    *pViewport = This->stateBlock->viewport;
+    return WINED3D_OK;
+}
+
+/*****
+ * Get / Set Render States
+ * TODO: Verify against dx9 definitions
+ *****/
+static HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, WINED3DRENDERSTATETYPE State, DWORD Value) {
+
+    IWineD3DDeviceImpl  *This     = (IWineD3DDeviceImpl *)iface;
+    DWORD oldValue = This->stateBlock->renderState[State];
+
+    TRACE("(%p)->state = %s(%d), value = %d\n", This, debug_d3drenderstate(State), State, Value);
+
+    This->updateStateBlock->changed.renderState[State] = TRUE;
+    This->updateStateBlock->renderState[State] = Value;
+
+    /* Handle recording of state blocks */
+    if (This->isRecordingState) {
+        TRACE("Recording... not performing anything\n");
+        return WINED3D_OK;
+    }
+
+    /* Compared here and not before the assignment to allow proper stateblock recording */
+    if(Value == oldValue) {
+        TRACE("Application is setting the old value over, nothing to do\n");
+    } else {
+        IWineD3DDeviceImpl_MarkStateDirty(This, STATE_RENDER(State));
+    }
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_GetRenderState(IWineD3DDevice *iface, WINED3DRENDERSTATETYPE State, DWORD *pValue) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    TRACE("(%p) for State %d = %d\n", This, State, This->stateBlock->renderState[State]);
+    *pValue = This->stateBlock->renderState[State];
+    return WINED3D_OK;
+}
+
+/*****
+ * Get / Set Sampler States
+ * TODO: Verify against dx9 definitions
+ *****/
+
+static HRESULT WINAPI IWineD3DDeviceImpl_SetSamplerState(IWineD3DDevice *iface, DWORD Sampler, WINED3DSAMPLERSTATETYPE Type, DWORD Value) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    DWORD oldValue;
+
+    TRACE("(%p) : Sampler %#x, Type %s (%#x), Value %#x\n",
+            This, Sampler, debug_d3dsamplerstate(Type), Type, Value);
+
+    if (Sampler >= WINED3DVERTEXTEXTURESAMPLER0 && Sampler <= WINED3DVERTEXTEXTURESAMPLER3) {
+        Sampler -= (WINED3DVERTEXTEXTURESAMPLER0 - MAX_FRAGMENT_SAMPLERS);
+    }
+
+    if (Sampler >= sizeof(This->stateBlock->samplerState)/sizeof(This->stateBlock->samplerState[0])) {
+        ERR("Current Sampler overflows sampleState0 array (sampler %d)\n", Sampler);
+        return WINED3D_OK; /* Windows accepts overflowing this array ... we do not. */
+    }
+    /**
+    * SetSampler is designed to allow for more than the standard up to 8 textures
+    *  and Geforce has stopped supporting more than 6 standard textures in openGL.
+    * So I have to use ARB for Gforce. (maybe if the sampler > 4 then use ARB?)
+    *
+    * http://developer.nvidia.com/object/General_FAQ.html#t6
+    *
+    * There are two new settings for GForce
+    * the sampler one:
+    * GL_MAX_TEXTURE_IMAGE_UNITS_ARB
+    * and the texture one:
+    * GL_MAX_TEXTURE_COORDS_ARB.
+    * Ok GForce say it's ok to use glTexParameter/glGetTexParameter(...).
+     ******************/
+
+    oldValue = This->stateBlock->samplerState[Sampler][Type];
+    This->updateStateBlock->samplerState[Sampler][Type]         = Value;
+    This->updateStateBlock->changed.samplerState[Sampler][Type] = Value;
+
+    /* Handle recording of state blocks */
+    if (This->isRecordingState) {
+        TRACE("Recording... not performing anything\n");
+        return WINED3D_OK;
+    }
+
+    if(oldValue == Value) {
+        TRACE("Application is setting the old value over, nothing to do\n");
+        return WINED3D_OK;
+    }
+
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_SAMPLER(Sampler));
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_GetSamplerState(IWineD3DDevice *iface, DWORD Sampler, WINED3DSAMPLERSTATETYPE Type, DWORD* Value) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+
+    TRACE("(%p) : Sampler %#x, Type %s (%#x)\n",
+            This, Sampler, debug_d3dsamplerstate(Type), Type);
+
+    if (Sampler >= WINED3DVERTEXTEXTURESAMPLER0 && Sampler <= WINED3DVERTEXTEXTURESAMPLER3) {
+        Sampler -= (WINED3DVERTEXTEXTURESAMPLER0 - MAX_FRAGMENT_SAMPLERS);
+    }
+
+    if (Sampler >= sizeof(This->stateBlock->samplerState)/sizeof(This->stateBlock->samplerState[0])) {
+        ERR("Current Sampler overflows sampleState0 array (sampler %d)\n", Sampler);
+        return WINED3D_OK; /* Windows accepts overflowing this array ... we do not. */
+    }
+    *Value = This->stateBlock->samplerState[Sampler][Type];
+    TRACE("(%p) : Returning %#x\n", This, *Value);
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_SetScissorRect(IWineD3DDevice *iface, CONST RECT* pRect) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+
+    This->updateStateBlock->changed.scissorRect = TRUE;
+    if(EqualRect(&This->updateStateBlock->scissorRect, pRect)) {
+        TRACE("App is setting the old scissor rectangle over, nothing to do\n");
+        return WINED3D_OK;
+    }
+    CopyRect(&This->updateStateBlock->scissorRect, pRect);
+
+    if(This->isRecordingState) {
+        TRACE("Recording... not performing anything\n");
+        return WINED3D_OK;
+    }
+
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_SCISSORRECT);
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_GetScissorRect(IWineD3DDevice *iface, RECT* pRect) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+
+    *pRect = This->updateStateBlock->scissorRect;
+    TRACE("(%p)Returning a Scissor Rect of %d:%d-%d:%d\n", This, pRect->left, pRect->top, pRect->right, pRect->bottom);
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_SetVertexDeclaration(IWineD3DDevice* iface, IWineD3DVertexDeclaration* pDecl) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    IWineD3DVertexDeclaration *oldDecl = This->updateStateBlock->vertexDecl;
+
+    TRACE("(%p) : pDecl=%p\n", This, pDecl);
+
+    This->updateStateBlock->vertexDecl = pDecl;
+    This->updateStateBlock->changed.vertexDecl = TRUE;
+
+    if (This->isRecordingState) {
+        TRACE("Recording... not performing anything\n");
+        return WINED3D_OK;
+    } else if(pDecl == oldDecl) {
+        /* Checked after the assignment to allow proper stateblock recording */
+        TRACE("Application is setting the old declaration over, nothing to do\n");
+        return WINED3D_OK;
+    }
+
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_VDECL);
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_GetVertexDeclaration(IWineD3DDevice* iface, IWineD3DVertexDeclaration** ppDecl) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+
+    TRACE("(%p) : ppDecl=%p\n", This, ppDecl);
+
+    *ppDecl = This->stateBlock->vertexDecl;
+    if (NULL != *ppDecl) IWineD3DVertexDeclaration_AddRef(*ppDecl);
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_SetVertexShader(IWineD3DDevice *iface, IWineD3DVertexShader* pShader) {
+    IWineD3DDeviceImpl *This        = (IWineD3DDeviceImpl *)iface;
+    IWineD3DVertexShader* oldShader = This->updateStateBlock->vertexShader;
+
+    This->updateStateBlock->vertexShader         = pShader;
+    This->updateStateBlock->changed.vertexShader = TRUE;
+
+    if (This->isRecordingState) {
+        if(pShader) IWineD3DVertexShader_AddRef(pShader);
+        if(oldShader) IWineD3DVertexShader_Release(oldShader);
+        TRACE("Recording... not performing anything\n");
+        return WINED3D_OK;
+    } else if(oldShader == pShader) {
+        /* Checked here to allow proper stateblock recording */
+        TRACE("App is setting the old shader over, nothing to do\n");
+        return WINED3D_OK;
+    }
+
+    TRACE("(%p) : setting pShader(%p)\n", This, pShader);
+    if(pShader) IWineD3DVertexShader_AddRef(pShader);
+    if(oldShader) IWineD3DVertexShader_Release(oldShader);
+
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_VSHADER);
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_GetVertexShader(IWineD3DDevice *iface, IWineD3DVertexShader** ppShader) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+
+    if (NULL == ppShader) {
+        return WINED3DERR_INVALIDCALL;
+    }
+    *ppShader = This->stateBlock->vertexShader;
+    if( NULL != *ppShader)
+        IWineD3DVertexShader_AddRef(*ppShader);
+
+    TRACE("(%p) : returning %p\n", This, *ppShader);
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_SetVertexShaderConstantB(
+    IWineD3DDevice *iface,
+    UINT start,
+    CONST BOOL *srcData,
+    UINT count) {
+
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    int i, cnt = min(count, MAX_CONST_B - start);
+
+    TRACE("(iface %p, srcData %p, start %d, count %d)\n",
+            iface, srcData, start, count);
+
+    if (srcData == NULL || cnt < 0)
+        return WINED3DERR_INVALIDCALL;
+
+    memcpy(&This->updateStateBlock->vertexShaderConstantB[start], srcData, cnt * sizeof(BOOL));
+    for (i = 0; i < cnt; i++)
+        TRACE("Set BOOL constant %u to %s\n", start + i, srcData[i]? "true":"false");
+
+    for (i = start; i < cnt + start; ++i) {
+        This->updateStateBlock->changed.vertexShaderConstantsB |= (1 << i);
+    }
+
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_VERTEXSHADERCONSTANT);
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_GetVertexShaderConstantB(
+    IWineD3DDevice *iface,
+    UINT start,
+    BOOL *dstData,
+    UINT count) {
+
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    int cnt = min(count, MAX_CONST_B - start);
+
+    TRACE("(iface %p, dstData %p, start %d, count %d)\n",
+            iface, dstData, start, count);
+
+    if (dstData == NULL || cnt < 0)
+        return WINED3DERR_INVALIDCALL;
+
+    memcpy(dstData, &This->stateBlock->vertexShaderConstantB[start], cnt * sizeof(BOOL));
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_SetVertexShaderConstantI(
+    IWineD3DDevice *iface,
+    UINT start,
+    CONST int *srcData,
+    UINT count) {
+
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    int i, cnt = min(count, MAX_CONST_I - start);
+
+    TRACE("(iface %p, srcData %p, start %d, count %d)\n",
+            iface, srcData, start, count);
+
+    if (srcData == NULL || cnt < 0)
+        return WINED3DERR_INVALIDCALL;
+
+    memcpy(&This->updateStateBlock->vertexShaderConstantI[start * 4], srcData, cnt * sizeof(int) * 4);
+    for (i = 0; i < cnt; i++)
+        TRACE("Set INT constant %u to { %d, %d, %d, %d }\n", start + i,
+           srcData[i*4], srcData[i*4+1], srcData[i*4+2], srcData[i*4+3]);
+
+    for (i = start; i < cnt + start; ++i) {
+        This->updateStateBlock->changed.vertexShaderConstantsI |= (1 << i);
+    }
+
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_VERTEXSHADERCONSTANT);
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_GetVertexShaderConstantI(
+    IWineD3DDevice *iface,
+    UINT start,
+    int *dstData,
+    UINT count) {
+
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    int cnt = min(count, MAX_CONST_I - start);
+
+    TRACE("(iface %p, dstData %p, start %d, count %d)\n",
+            iface, dstData, start, count);
+
+    if (dstData == NULL || ((signed int) MAX_CONST_I - (signed int) start) <= (signed int) 0)
+        return WINED3DERR_INVALIDCALL;
+
+    memcpy(dstData, &This->stateBlock->vertexShaderConstantI[start * 4], cnt * sizeof(int) * 4);
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_SetVertexShaderConstantF(
+    IWineD3DDevice *iface,
+    UINT start,
+    CONST float *srcData,
+    UINT count) {
+
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    UINT i;
+
+    TRACE("(iface %p, srcData %p, start %d, count %d)\n",
+            iface, srcData, start, count);
+
+    /* Specifically test start > limit to catch MAX_UINT overflows when adding start + count */
+    if (srcData == NULL || start + count > GL_LIMITS(vshader_constantsF) || start > GL_LIMITS(vshader_constantsF))
+        return WINED3DERR_INVALIDCALL;
+
+    memcpy(&This->updateStateBlock->vertexShaderConstantF[start * 4], srcData, count * sizeof(float) * 4);
+    if(TRACE_ON(d3d)) {
+        for (i = 0; i < count; i++)
+            TRACE("Set FLOAT constant %u to { %f, %f, %f, %f }\n", start + i,
+                srcData[i*4], srcData[i*4+1], srcData[i*4+2], srcData[i*4+3]);
+    }
+
+    for (i = start; i < count + start; ++i) {
+        if (!This->updateStateBlock->changed.vertexShaderConstantsF[i]) {
+            constants_entry *ptr = LIST_ENTRY(list_head(&This->updateStateBlock->set_vconstantsF), constants_entry, entry);
+            if (!ptr || ptr->count >= sizeof(ptr->idx) / sizeof(*ptr->idx)) {
+                ptr = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(constants_entry));
+                list_add_head(&This->updateStateBlock->set_vconstantsF, &ptr->entry);
+            }
+            ptr->idx[ptr->count++] = i;
+            This->updateStateBlock->changed.vertexShaderConstantsF[i] = TRUE;
+        }
+    }
+
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_VERTEXSHADERCONSTANT);
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_SetVertexShaderConstantF_DirtyConst(
+IWineD3DDevice *iface,
+UINT start,
+CONST float *srcData,
+UINT count) {
+
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    UINT i;
+
+    TRACE("(iface %p, srcData %p, start %d, count %d)\n",
+            iface, srcData, start, count);
+
+    /* Specifically test start > limit to catch MAX_UINT overflows when adding start + count */
+    if (srcData == NULL || start + count > GL_LIMITS(vshader_constantsF) || start > GL_LIMITS(vshader_constantsF))
+        return WINED3DERR_INVALIDCALL;
+
+    memcpy(&This->updateStateBlock->vertexShaderConstantF[start * 4], srcData, count * sizeof(float) * 4);
+    if(TRACE_ON(d3d)) {
+        for (i = 0; i < count; i++)
+            TRACE("Set FLOAT constant %u to { %f, %f, %f, %f }\n", start + i,
+                    srcData[i*4], srcData[i*4+1], srcData[i*4+2], srcData[i*4+3]);
+    }
+
+    /* We don't want shader constant dirtification to be an O(contexts), so just dirtify the active
+     * context. On a context switch the old context will be fully dirtified
+     */
+    memset(This->activeContext->vshader_const_dirty + start, 1,
+           sizeof(*This->activeContext->vshader_const_dirty) * count);
+    This->highest_dirty_vs_const = max(This->highest_dirty_vs_const, start+count+1);
+
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_VERTEXSHADERCONSTANT);
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_GetVertexShaderConstantF(
+    IWineD3DDevice *iface,
+    UINT start,
+    float *dstData,
+    UINT count) {
+
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    int cnt = min(count, GL_LIMITS(vshader_constantsF) - start);
+
+    TRACE("(iface %p, dstData %p, start %d, count %d)\n",
+            iface, dstData, start, count);
+
+    if (dstData == NULL || cnt < 0)
+        return WINED3DERR_INVALIDCALL;
+
+    memcpy(dstData, &This->stateBlock->vertexShaderConstantF[start * 4], cnt * sizeof(float) * 4);
+    return WINED3D_OK;
+}
+
+static inline void markTextureStagesDirty(IWineD3DDeviceImpl *This, DWORD stage) {
+    DWORD i;
+    for(i = 0; i < WINED3D_HIGHEST_TEXTURE_STATE; i++) {
+        IWineD3DDeviceImpl_MarkStateDirty(This, STATE_TEXTURESTAGE(stage, i));
+    }
+}
+
+static void device_map_stage(IWineD3DDeviceImpl *This, int stage, int unit) {
+    int i = This->rev_tex_unit_map[unit];
+    int j = This->texUnitMap[stage];
+
+    This->texUnitMap[stage] = unit;
+    if (i != -1 && i != stage) {
+        This->texUnitMap[i] = -1;
+    }
+
+    This->rev_tex_unit_map[unit] = stage;
+    if (j != -1 && j != unit) {
+        This->rev_tex_unit_map[j] = -1;
+    }
+}
+
+static void device_update_fixed_function_usage_map(IWineD3DDeviceImpl *This) {
+    int i;
+
+    for (i = 0; i < MAX_TEXTURES; ++i) {
+        WINED3DTEXTUREOP color_op = This->stateBlock->textureState[i][WINED3DTSS_COLOROP];
+        WINED3DTEXTUREOP alpha_op = This->stateBlock->textureState[i][WINED3DTSS_ALPHAOP];
+        DWORD color_arg1 = This->stateBlock->textureState[i][WINED3DTSS_COLORARG1] & WINED3DTA_SELECTMASK;
+        DWORD color_arg2 = This->stateBlock->textureState[i][WINED3DTSS_COLORARG2] & WINED3DTA_SELECTMASK;
+        DWORD color_arg3 = This->stateBlock->textureState[i][WINED3DTSS_COLORARG0] & WINED3DTA_SELECTMASK;
+        DWORD alpha_arg1 = This->stateBlock->textureState[i][WINED3DTSS_ALPHAARG1] & WINED3DTA_SELECTMASK;
+        DWORD alpha_arg2 = This->stateBlock->textureState[i][WINED3DTSS_ALPHAARG2] & WINED3DTA_SELECTMASK;
+        DWORD alpha_arg3 = This->stateBlock->textureState[i][WINED3DTSS_ALPHAARG0] & WINED3DTA_SELECTMASK;
+
+        if (color_op == WINED3DTOP_DISABLE) {
+            /* Not used, and disable higher stages */
+            while (i < MAX_TEXTURES) {
+                This->fixed_function_usage_map[i] = FALSE;
+                ++i;
+            }
+            break;
+        }
+
+        if (((color_arg1 == WINED3DTA_TEXTURE) && color_op != WINED3DTOP_SELECTARG2)
+                || ((color_arg2 == WINED3DTA_TEXTURE) && color_op != WINED3DTOP_SELECTARG1)
+                || ((color_arg3 == WINED3DTA_TEXTURE) && (color_op == WINED3DTOP_MULTIPLYADD || color_op == WINED3DTOP_LERP))
+                || ((alpha_arg1 == WINED3DTA_TEXTURE) && alpha_op != WINED3DTOP_SELECTARG2)
+                || ((alpha_arg2 == WINED3DTA_TEXTURE) && alpha_op != WINED3DTOP_SELECTARG1)
+                || ((alpha_arg3 == WINED3DTA_TEXTURE) && (alpha_op == WINED3DTOP_MULTIPLYADD || alpha_op == WINED3DTOP_LERP))) {
+            This->fixed_function_usage_map[i] = TRUE;
+        } else {
+            This->fixed_function_usage_map[i] = FALSE;
+        }
+
+        if ((color_op == WINED3DTOP_BUMPENVMAP || color_op == WINED3DTOP_BUMPENVMAPLUMINANCE) && i < MAX_TEXTURES - 1) {
+            This->fixed_function_usage_map[i+1] = TRUE;
+        }
+    }
+}
+
+static void device_map_fixed_function_samplers(IWineD3DDeviceImpl *This) {
+    int i, tex;
+
+    device_update_fixed_function_usage_map(This);
+
+    if (This->max_ffp_textures == This->max_ffp_texture_stages ||
+        This->stateBlock->lowest_disabled_stage <= This->max_ffp_textures) {
+        for (i = 0; i < This->stateBlock->lowest_disabled_stage; ++i) {
+            if (!This->fixed_function_usage_map[i]) continue;
+
+            if (This->texUnitMap[i] != i) {
+                device_map_stage(This, i, i);
+                IWineD3DDeviceImpl_MarkStateDirty(This, STATE_SAMPLER(i));
+                markTextureStagesDirty(This, i);
+            }
+        }
+        return;
+    }
+
+    /* Now work out the mapping */
+    tex = 0;
+    for (i = 0; i < This->stateBlock->lowest_disabled_stage; ++i) {
+        if (!This->fixed_function_usage_map[i]) continue;
+
+        if (This->texUnitMap[i] != tex) {
+            device_map_stage(This, i, tex);
+            IWineD3DDeviceImpl_MarkStateDirty(This, STATE_SAMPLER(i));
+            markTextureStagesDirty(This, i);
+        }
+
+        ++tex;
+    }
+}
+
+static void device_map_psamplers(IWineD3DDeviceImpl *This) {
+    const DWORD *sampler_tokens =
+            ((IWineD3DPixelShaderImpl *)This->stateBlock->pixelShader)->baseShader.reg_maps.samplers;
+    int i;
+
+    for (i = 0; i < MAX_FRAGMENT_SAMPLERS; ++i) {
+        if (sampler_tokens[i] && This->texUnitMap[i] != i) {
+            device_map_stage(This, i, i);
+            IWineD3DDeviceImpl_MarkStateDirty(This, STATE_SAMPLER(i));
+            if (i < MAX_TEXTURES) {
+                markTextureStagesDirty(This, i);
+            }
+        }
+    }
+}
+
+static BOOL device_unit_free_for_vs(IWineD3DDeviceImpl *This, const DWORD *pshader_sampler_tokens,
+        const DWORD *vshader_sampler_tokens, int unit)
+{
+    int current_mapping = This->rev_tex_unit_map[unit];
+
+    if (current_mapping == -1) {
+        /* Not currently used */
+        return TRUE;
+    }
+
+    if (current_mapping < MAX_FRAGMENT_SAMPLERS) {
+        /* Used by a fragment sampler */
+
+        if (!pshader_sampler_tokens) {
+            /* No pixel shader, check fixed function */
+            return current_mapping >= MAX_TEXTURES || !This->fixed_function_usage_map[current_mapping];
+        }
+
+        /* Pixel shader, check the shader's sampler map */
+        return !pshader_sampler_tokens[current_mapping];
+    }
+
+    /* Used by a vertex sampler */
+    return !vshader_sampler_tokens[current_mapping];
+}
+
+static void device_map_vsamplers(IWineD3DDeviceImpl *This, BOOL ps) {
+    const DWORD *vshader_sampler_tokens =
+            ((IWineD3DVertexShaderImpl *)This->stateBlock->vertexShader)->baseShader.reg_maps.samplers;
+    const DWORD *pshader_sampler_tokens = NULL;
+    int start = GL_LIMITS(combined_samplers) - 1;
+    int i;
+
+    if (ps) {
+        IWineD3DPixelShaderImpl *pshader = (IWineD3DPixelShaderImpl *)This->stateBlock->pixelShader;
+
+        /* Make sure the shader's reg_maps are up to date. This is only relevant for 1.x pixelshaders. */
+        IWineD3DPixelShader_UpdateSamplers((IWineD3DPixelShader *)pshader);
+        pshader_sampler_tokens = pshader->baseShader.reg_maps.samplers;
+    }
+
+    for (i = 0; i < MAX_VERTEX_SAMPLERS; ++i) {
+        int vsampler_idx = i + MAX_FRAGMENT_SAMPLERS;
+        if (vshader_sampler_tokens[i]) {
+            if (This->texUnitMap[vsampler_idx] != -1) {
+                /* Already mapped somewhere */
+                continue;
+            }
+
+            while (start >= 0) {
+                if (device_unit_free_for_vs(This, pshader_sampler_tokens, vshader_sampler_tokens, start)) {
+                    device_map_stage(This, vsampler_idx, start);
+                    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_SAMPLER(vsampler_idx));
+
+                    --start;
+                    break;
+                }
+
+                --start;
+            }
+        }
+    }
+}
+
+void IWineD3DDeviceImpl_FindTexUnitMap(IWineD3DDeviceImpl *This) {
+    BOOL vs = use_vs(This);
+    BOOL ps = use_ps(This);
+    /*
+     * Rules are:
+     * -> Pixel shaders need a 1:1 map. In theory the shader input could be mapped too, but
+     * that would be really messy and require shader recompilation
+     * -> When the mapping of a stage is changed, sampler and ALL texture stage states have
+     * to be reset. Because of that try to work with a 1:1 mapping as much as possible
+     */
+    if (ps) {
+        device_map_psamplers(This);
+    } else {
+        device_map_fixed_function_samplers(This);
+    }
+
+    if (vs) {
+        device_map_vsamplers(This, ps);
+    }
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_SetPixelShader(IWineD3DDevice *iface, IWineD3DPixelShader *pShader) {
+    IWineD3DDeviceImpl *This        = (IWineD3DDeviceImpl *)iface;
+    IWineD3DPixelShader *oldShader  = This->updateStateBlock->pixelShader;
+    This->updateStateBlock->pixelShader         = pShader;
+    This->updateStateBlock->changed.pixelShader = TRUE;
+
+    /* Handle recording of state blocks */
+    if (This->isRecordingState) {
+        TRACE("Recording... not performing anything\n");
+    }
+
+    if (This->isRecordingState) {
+        TRACE("Recording... not performing anything\n");
+        if(pShader) IWineD3DPixelShader_AddRef(pShader);
+        if(oldShader) IWineD3DPixelShader_Release(oldShader);
+        return WINED3D_OK;
+    }
+
+    if(pShader == oldShader) {
+        TRACE("App is setting the old pixel shader over, nothing to do\n");
+        return WINED3D_OK;
+    }
+
+    if(pShader) IWineD3DPixelShader_AddRef(pShader);
+    if(oldShader) IWineD3DPixelShader_Release(oldShader);
+
+    TRACE("(%p) : setting pShader(%p)\n", This, pShader);
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_PIXELSHADER);
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_GetPixelShader(IWineD3DDevice *iface, IWineD3DPixelShader **ppShader) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+
+    if (NULL == ppShader) {
+        WARN("(%p) : PShader is NULL, returning INVALIDCALL\n", This);
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    *ppShader =  This->stateBlock->pixelShader;
+    if (NULL != *ppShader) {
+        IWineD3DPixelShader_AddRef(*ppShader);
+    }
+    TRACE("(%p) : returning %p\n", This, *ppShader);
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_SetPixelShaderConstantB(
+    IWineD3DDevice *iface,
+    UINT start,
+    CONST BOOL *srcData,
+    UINT count) {
+
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    int i, cnt = min(count, MAX_CONST_B - start);
+
+    TRACE("(iface %p, srcData %p, start %d, count %d)\n",
+            iface, srcData, start, count);
+
+    if (srcData == NULL || cnt < 0)
+        return WINED3DERR_INVALIDCALL;
+
+    memcpy(&This->updateStateBlock->pixelShaderConstantB[start], srcData, cnt * sizeof(BOOL));
+    for (i = 0; i < cnt; i++)
+        TRACE("Set BOOL constant %u to %s\n", start + i, srcData[i]? "true":"false");
+
+    for (i = start; i < cnt + start; ++i) {
+        This->updateStateBlock->changed.pixelShaderConstantsB |= (1 << i);
+    }
+
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_PIXELSHADERCONSTANT);
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_GetPixelShaderConstantB(
+    IWineD3DDevice *iface,
+    UINT start,
+    BOOL *dstData,
+    UINT count) {
+
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    int cnt = min(count, MAX_CONST_B - start);
+
+    TRACE("(iface %p, dstData %p, start %d, count %d)\n",
+            iface, dstData, start, count);
+
+    if (dstData == NULL || cnt < 0)
+        return WINED3DERR_INVALIDCALL;
+
+    memcpy(dstData, &This->stateBlock->pixelShaderConstantB[start], cnt * sizeof(BOOL));
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_SetPixelShaderConstantI(
+    IWineD3DDevice *iface,
+    UINT start,
+    CONST int *srcData,
+    UINT count) {
+
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    int i, cnt = min(count, MAX_CONST_I - start);
+
+    TRACE("(iface %p, srcData %p, start %d, count %d)\n",
+            iface, srcData, start, count);
+
+    if (srcData == NULL || cnt < 0)
+        return WINED3DERR_INVALIDCALL;
+
+    memcpy(&This->updateStateBlock->pixelShaderConstantI[start * 4], srcData, cnt * sizeof(int) * 4);
+    for (i = 0; i < cnt; i++)
+        TRACE("Set INT constant %u to { %d, %d, %d, %d }\n", start + i,
+           srcData[i*4], srcData[i*4+1], srcData[i*4+2], srcData[i*4+3]);
+
+    for (i = start; i < cnt + start; ++i) {
+        This->updateStateBlock->changed.pixelShaderConstantsI |= (1 << i);
+    }
+
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_PIXELSHADERCONSTANT);
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_GetPixelShaderConstantI(
+    IWineD3DDevice *iface,
+    UINT start,
+    int *dstData,
+    UINT count) {
+
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    int cnt = min(count, MAX_CONST_I - start);
+
+    TRACE("(iface %p, dstData %p, start %d, count %d)\n",
+            iface, dstData, start, count);
+
+    if (dstData == NULL || cnt < 0)
+        return WINED3DERR_INVALIDCALL;
+
+    memcpy(dstData, &This->stateBlock->pixelShaderConstantI[start * 4], cnt * sizeof(int) * 4);
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_SetPixelShaderConstantF(
+    IWineD3DDevice *iface,
+    UINT start,
+    CONST float *srcData,
+    UINT count) {
+
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    UINT i;
+
+    TRACE("(iface %p, srcData %p, start %d, count %d)\n",
+            iface, srcData, start, count);
+
+    /* Specifically test start > limit to catch MAX_UINT overflows when adding start + count */
+    if (srcData == NULL || start + count > GL_LIMITS(pshader_constantsF) || start > GL_LIMITS(pshader_constantsF))
+        return WINED3DERR_INVALIDCALL;
+
+    memcpy(&This->updateStateBlock->pixelShaderConstantF[start * 4], srcData, count * sizeof(float) * 4);
+    if(TRACE_ON(d3d)) {
+        for (i = 0; i < count; i++)
+            TRACE("Set FLOAT constant %u to { %f, %f, %f, %f }\n", start + i,
+                srcData[i*4], srcData[i*4+1], srcData[i*4+2], srcData[i*4+3]);
+    }
+
+    for (i = start; i < count + start; ++i) {
+        if (!This->updateStateBlock->changed.pixelShaderConstantsF[i]) {
+            constants_entry *ptr = LIST_ENTRY(list_head(&This->updateStateBlock->set_pconstantsF), constants_entry, entry);
+            if (!ptr || ptr->count >= sizeof(ptr->idx) / sizeof(*ptr->idx)) {
+                ptr = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(constants_entry));
+                list_add_head(&This->updateStateBlock->set_pconstantsF, &ptr->entry);
+            }
+            ptr->idx[ptr->count++] = i;
+            This->updateStateBlock->changed.pixelShaderConstantsF[i] = TRUE;
+        }
+    }
+
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_PIXELSHADERCONSTANT);
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_SetPixelShaderConstantF_DirtyConst(
+    IWineD3DDevice *iface,
+    UINT start,
+    CONST float *srcData,
+    UINT count) {
+
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    UINT i;
+
+    TRACE("(iface %p, srcData %p, start %d, count %d)\n",
+            iface, srcData, start, count);
+
+    /* Specifically test start > limit to catch MAX_UINT overflows when adding start + count */
+    if (srcData == NULL || start + count > GL_LIMITS(pshader_constantsF) || start > GL_LIMITS(pshader_constantsF))
+        return WINED3DERR_INVALIDCALL;
+
+    memcpy(&This->updateStateBlock->pixelShaderConstantF[start * 4], srcData, count * sizeof(float) * 4);
+    if(TRACE_ON(d3d)) {
+        for (i = 0; i < count; i++)
+            TRACE("Set FLOAT constant %u to { %f, %f, %f, %f }\n", start + i,
+                    srcData[i*4], srcData[i*4+1], srcData[i*4+2], srcData[i*4+3]);
+    }
+
+    /* We don't want shader constant dirtification to be an O(contexts), so just dirtify the active
+     * context. On a context switch the old context will be fully dirtified
+     */
+    memset(This->activeContext->pshader_const_dirty + start, 1,
+           sizeof(*This->activeContext->pshader_const_dirty) * count);
+    This->highest_dirty_ps_const = max(This->highest_dirty_ps_const, start+count+1);
+
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_PIXELSHADERCONSTANT);
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_GetPixelShaderConstantF(
+    IWineD3DDevice *iface,
+    UINT start,
+    float *dstData,
+    UINT count) {
+
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    int cnt = min(count, GL_LIMITS(pshader_constantsF) - start);
+
+    TRACE("(iface %p, dstData %p, start %d, count %d)\n",
+            iface, dstData, start, count);
+
+    if (dstData == NULL || cnt < 0)
+        return WINED3DERR_INVALIDCALL;
+
+    memcpy(dstData, &This->stateBlock->pixelShaderConstantF[start * 4], cnt * sizeof(float) * 4);
+    return WINED3D_OK;
+}
+
+#define copy_and_next(dest, src, size) memcpy(dest, src, size); dest += (size)
+static HRESULT process_vertices_strided(IWineD3DDeviceImpl *This, DWORD dwDestIndex, DWORD dwCount,
+        const WineDirect3DVertexStridedData *lpStrideData, IWineD3DVertexBufferImpl *dest, DWORD dwFlags)
+{
+    char *dest_ptr, *dest_conv = NULL, *dest_conv_addr = NULL;
+    unsigned int i;
+    DWORD DestFVF = dest->fvf;
+    WINED3DVIEWPORT vp;
+    WINED3DMATRIX mat, proj_mat, view_mat, world_mat;
+    BOOL doClip;
+    DWORD numTextures;
+
+    if (lpStrideData->u.s.normal.lpData) {
+        WARN(" lighting state not saved yet... Some strange stuff may happen !\n");
+    }
+
+    if (lpStrideData->u.s.position.lpData == NULL) {
+        ERR("Source has no position mask\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    /* We might access VBOs from this code, so hold the lock */
+    ENTER_GL();
+
+    if (dest->resource.allocatedMemory == NULL) {
+        /* This may happen if we do direct locking into a vbo. Unlikely,
+         * but theoretically possible(ddraw processvertices test)
+         */
+        dest->resource.allocatedMemory = HeapAlloc(GetProcessHeap(), 0, dest->resource.size);
+        if(!dest->resource.allocatedMemory) {
+            LEAVE_GL();
+            ERR("Out of memory\n");
+            return E_OUTOFMEMORY;
+        }
+        if(dest->vbo) {
+            const void *src;
+            GL_EXTCALL(glBindBufferARB(GL_ARRAY_BUFFER_ARB, dest->vbo));
+            checkGLcall("glBindBufferARB");
+            src = GL_EXTCALL(glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_READ_ONLY_ARB));
+            if(src) {
+                memcpy(dest->resource.allocatedMemory, src, dest->resource.size);
+            }
+            GL_EXTCALL(glUnmapBufferARB(GL_ARRAY_BUFFER_ARB));
+            checkGLcall("glUnmapBufferARB");
+        }
+    }
+
+    /* Get a pointer into the destination vbo(create one if none exists) and
+     * write correct opengl data into it. It's cheap and allows us to run drawStridedFast
+     */
+    if(!dest->vbo && GL_SUPPORT(ARB_VERTEX_BUFFER_OBJECT)) {
+        dest->Flags |= VBFLAG_CREATEVBO;
+        IWineD3DVertexBuffer_PreLoad((IWineD3DVertexBuffer *) dest);
+    }
+
+    if(dest->vbo) {
+        unsigned char extrabytes = 0;
+        /* If the destination vertex buffer has D3DFVF_XYZ position(non-rhw), native d3d writes RHW position, where the RHW
+         * gets written into the 4 bytes after the Z position. In the case of a dest buffer that only has D3DFVF_XYZ data,
+         * this may write 4 extra bytes beyond the area that should be written
+         */
+        if(DestFVF == WINED3DFVF_XYZ) extrabytes = 4;
+        dest_conv_addr = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwCount * get_flexible_vertex_size(DestFVF) + extrabytes);
+        if(!dest_conv_addr) {
+            ERR("Out of memory\n");
+            /* Continue without storing converted vertices */
+        }
+        dest_conv = dest_conv_addr;
+    }
+
+    /* Should I clip?
+     * a) WINED3DRS_CLIPPING is enabled
+     * b) WINED3DVOP_CLIP is passed
+     */
+    if(This->stateBlock->renderState[WINED3DRS_CLIPPING]) {
+        static BOOL warned = FALSE;
+        /*
+         * The clipping code is not quite correct. Some things need
+         * to be checked against IDirect3DDevice3 (!), d3d8 and d3d9,
+         * so disable clipping for now.
+         * (The graphics in Half-Life are broken, and my processvertices
+         *  test crashes with IDirect3DDevice3)
+        doClip = TRUE;
+         */
+        doClip = FALSE;
+        if(!warned) {
+           warned = TRUE;
+           FIXME("Clipping is broken and disabled for now\n");
+        }
+    } else doClip = FALSE;
+    dest_ptr = ((char *) dest->resource.allocatedMemory) + dwDestIndex * get_flexible_vertex_size(DestFVF);
+
+    IWineD3DDevice_GetTransform( (IWineD3DDevice *) This,
+                                 WINED3DTS_VIEW,
+                                 &view_mat);
+    IWineD3DDevice_GetTransform( (IWineD3DDevice *) This,
+                                 WINED3DTS_PROJECTION,
+                                 &proj_mat);
+    IWineD3DDevice_GetTransform( (IWineD3DDevice *) This,
+                                 WINED3DTS_WORLDMATRIX(0),
+                                 &world_mat);
+
+    TRACE("View mat:\n");
+    TRACE("%f %f %f %f\n", view_mat.u.s._11, view_mat.u.s._12, view_mat.u.s._13, view_mat.u.s._14);
+    TRACE("%f %f %f %f\n", view_mat.u.s._21, view_mat.u.s._22, view_mat.u.s._23, view_mat.u.s._24);
+    TRACE("%f %f %f %f\n", view_mat.u.s._31, view_mat.u.s._32, view_mat.u.s._33, view_mat.u.s._34);
+    TRACE("%f %f %f %f\n", view_mat.u.s._41, view_mat.u.s._42, view_mat.u.s._43, view_mat.u.s._44);
+
+    TRACE("Proj mat:\n");
+    TRACE("%f %f %f %f\n", proj_mat.u.s._11, proj_mat.u.s._12, proj_mat.u.s._13, proj_mat.u.s._14);
+    TRACE("%f %f %f %f\n", proj_mat.u.s._21, proj_mat.u.s._22, proj_mat.u.s._23, proj_mat.u.s._24);
+    TRACE("%f %f %f %f\n", proj_mat.u.s._31, proj_mat.u.s._32, proj_mat.u.s._33, proj_mat.u.s._34);
+    TRACE("%f %f %f %f\n", proj_mat.u.s._41, proj_mat.u.s._42, proj_mat.u.s._43, proj_mat.u.s._44);
+
+    TRACE("World mat:\n");
+    TRACE("%f %f %f %f\n", world_mat.u.s._11, world_mat.u.s._12, world_mat.u.s._13, world_mat.u.s._14);
+    TRACE("%f %f %f %f\n", world_mat.u.s._21, world_mat.u.s._22, world_mat.u.s._23, world_mat.u.s._24);
+    TRACE("%f %f %f %f\n", world_mat.u.s._31, world_mat.u.s._32, world_mat.u.s._33, world_mat.u.s._34);
+    TRACE("%f %f %f %f\n", world_mat.u.s._41, world_mat.u.s._42, world_mat.u.s._43, world_mat.u.s._44);
+
+    /* Get the viewport */
+    IWineD3DDevice_GetViewport( (IWineD3DDevice *) This, &vp);
+    TRACE("Viewport: X=%d, Y=%d, Width=%d, Height=%d, MinZ=%f, MaxZ=%f\n",
+          vp.X, vp.Y, vp.Width, vp.Height, vp.MinZ, vp.MaxZ);
+
+    multiply_matrix(&mat,&view_mat,&world_mat);
+    multiply_matrix(&mat,&proj_mat,&mat);
+
+    numTextures = (DestFVF & WINED3DFVF_TEXCOUNT_MASK) >> WINED3DFVF_TEXCOUNT_SHIFT;
+
+    for (i = 0; i < dwCount; i+= 1) {
+        unsigned int tex_index;
+
+        if ( ((DestFVF & WINED3DFVF_POSITION_MASK) == WINED3DFVF_XYZ ) ||
+             ((DestFVF & WINED3DFVF_POSITION_MASK) == WINED3DFVF_XYZRHW ) ) {
+            /* The position first */
+            const float *p =
+                    (const float *)(lpStrideData->u.s.position.lpData + i * lpStrideData->u.s.position.dwStride);
+            float x, y, z, rhw;
+            TRACE("In: ( %06.2f %06.2f %06.2f )\n", p[0], p[1], p[2]);
+
+            /* Multiplication with world, view and projection matrix */
+            x =   (p[0] * mat.u.s._11) + (p[1] * mat.u.s._21) + (p[2] * mat.u.s._31) + (1.0 * mat.u.s._41);
+            y =   (p[0] * mat.u.s._12) + (p[1] * mat.u.s._22) + (p[2] * mat.u.s._32) + (1.0 * mat.u.s._42);
+            z =   (p[0] * mat.u.s._13) + (p[1] * mat.u.s._23) + (p[2] * mat.u.s._33) + (1.0 * mat.u.s._43);
+            rhw = (p[0] * mat.u.s._14) + (p[1] * mat.u.s._24) + (p[2] * mat.u.s._34) + (1.0 * mat.u.s._44);
+
+            TRACE("x=%f y=%f z=%f rhw=%f\n", x, y, z, rhw);
+
+            /* WARNING: The following things are taken from d3d7 and were not yet checked
+             * against d3d8 or d3d9!
+             */
+
+            /* Clipping conditions: From msdn
+             *
+             * A vertex is clipped if it does not match the following requirements
+             * -rhw < x <= rhw
+             * -rhw < y <= rhw
+             *    0 < z <= rhw
+             *    0 < rhw ( Not in d3d7, but tested in d3d7)
+             *
+             * If clipping is on is determined by the D3DVOP_CLIP flag in D3D7, and
+             * by the D3DRS_CLIPPING in D3D9(according to the msdn, not checked)
+             *
+             */
+
+            if( !doClip ||
+                ( (-rhw -eps < x) && (-rhw -eps < y) && ( -eps < z) &&
+                  (x <= rhw + eps) && (y <= rhw + eps ) && (z <= rhw + eps) && 
+                  ( rhw > eps ) ) ) {
+
+                /* "Normal" viewport transformation (not clipped)
+                 * 1) The values are divided by rhw
+                 * 2) The y axis is negative, so multiply it with -1
+                 * 3) Screen coordinates go from -(Width/2) to +(Width/2) and
+                 *    -(Height/2) to +(Height/2). The z range is MinZ to MaxZ
+                 * 4) Multiply x with Width/2 and add Width/2
+                 * 5) The same for the height
+                 * 6) Add the viewpoint X and Y to the 2D coordinates and
+                 *    The minimum Z value to z
+                 * 7) rhw = 1 / rhw Reciprocal of Homogeneous W....
+                 *
+                 * Well, basically it's simply a linear transformation into viewport
+                 * coordinates
+                 */
+
+                x /= rhw;
+                y /= rhw;
+                z /= rhw;
+
+                y *= -1;
+
+                x *= vp.Width / 2;
+                y *= vp.Height / 2;
+                z *= vp.MaxZ - vp.MinZ;
+
+                x += vp.Width / 2 + vp.X;
+                y += vp.Height / 2 + vp.Y;
+                z += vp.MinZ;
+
+                rhw = 1 / rhw;
+            } else {
+                /* That vertex got clipped
+                 * Contrary to OpenGL it is not dropped completely, it just
+                 * undergoes a different calculation.
+                 */
+                TRACE("Vertex got clipped\n");
+                x += rhw;
+                y += rhw;
+
+                x  /= 2;
+                y  /= 2;
+
+                /* Msdn mentions that Direct3D9 keeps a list of clipped vertices
+                 * outside of the main vertex buffer memory. That needs some more
+                 * investigation...
+                 */
+            }
+
+            TRACE("Writing (%f %f %f) %f\n", x, y, z, rhw);
+
+
+            ( (float *) dest_ptr)[0] = x;
+            ( (float *) dest_ptr)[1] = y;
+            ( (float *) dest_ptr)[2] = z;
+            ( (float *) dest_ptr)[3] = rhw; /* SIC, see ddraw test! */
+
+            dest_ptr += 3 * sizeof(float);
+
+            if((DestFVF & WINED3DFVF_POSITION_MASK) == WINED3DFVF_XYZRHW) {
+                dest_ptr += sizeof(float);
+            }
+
+            if(dest_conv) {
+                float w = 1 / rhw;
+                ( (float *) dest_conv)[0] = x * w;
+                ( (float *) dest_conv)[1] = y * w;
+                ( (float *) dest_conv)[2] = z * w;
+                ( (float *) dest_conv)[3] = w;
+
+                dest_conv += 3 * sizeof(float);
+
+                if((DestFVF & WINED3DFVF_POSITION_MASK) == WINED3DFVF_XYZRHW) {
+                    dest_conv += sizeof(float);
+                }
+            }
+        }
+        if (DestFVF & WINED3DFVF_PSIZE) {
+            dest_ptr += sizeof(DWORD);
+            if(dest_conv) dest_conv += sizeof(DWORD);
+        }
+        if (DestFVF & WINED3DFVF_NORMAL) {
+            const float *normal =
+                    (const float *)(lpStrideData->u.s.normal.lpData + i * lpStrideData->u.s.normal.dwStride);
+            /* AFAIK this should go into the lighting information */
+            FIXME("Didn't expect the destination to have a normal\n");
+            copy_and_next(dest_ptr, normal, 3 * sizeof(float));
+            if(dest_conv) {
+                copy_and_next(dest_conv, normal, 3 * sizeof(float));
+            }
+        }
+
+        if (DestFVF & WINED3DFVF_DIFFUSE) {
+            const DWORD *color_d =
+                    (const DWORD *)(lpStrideData->u.s.diffuse.lpData + i * lpStrideData->u.s.diffuse.dwStride);
+            if(!color_d) {
+                static BOOL warned = FALSE;
+
+                if(!warned) {
+                    ERR("No diffuse color in source, but destination has one\n");
+                    warned = TRUE;
+                }
+
+                *( (DWORD *) dest_ptr) = 0xffffffff;
+                dest_ptr += sizeof(DWORD);
+
+                if(dest_conv) {
+                    *( (DWORD *) dest_conv) = 0xffffffff;
+                    dest_conv += sizeof(DWORD);
+                }
+            }
+            else {
+                copy_and_next(dest_ptr, color_d, sizeof(DWORD));
+                if(dest_conv) {
+                    *( (DWORD *) dest_conv)  = (*color_d & 0xff00ff00)      ; /* Alpha + green */
+                    *( (DWORD *) dest_conv) |= (*color_d & 0x00ff0000) >> 16; /* Red */
+                    *( (DWORD *) dest_conv) |= (*color_d & 0xff0000ff) << 16; /* Blue */
+                    dest_conv += sizeof(DWORD);
+                }
+            }
+        }
+
+        if (DestFVF & WINED3DFVF_SPECULAR) { 
+            /* What's the color value in the feedback buffer? */
+            const DWORD *color_s =
+                    (const DWORD *)(lpStrideData->u.s.specular.lpData + i * lpStrideData->u.s.specular.dwStride);
+            if(!color_s) {
+                static BOOL warned = FALSE;
+
+                if(!warned) {
+                    ERR("No specular color in source, but destination has one\n");
+                    warned = TRUE;
+                }
+
+                *( (DWORD *) dest_ptr) = 0xFF000000;
+                dest_ptr += sizeof(DWORD);
+
+                if(dest_conv) {
+                    *( (DWORD *) dest_conv) = 0xFF000000;
+                    dest_conv += sizeof(DWORD);
+                }
+            }
+            else {
+                copy_and_next(dest_ptr, color_s, sizeof(DWORD));
+                if(dest_conv) {
+                    *( (DWORD *) dest_conv)  = (*color_s & 0xff00ff00)      ; /* Alpha + green */
+                    *( (DWORD *) dest_conv) |= (*color_s & 0x00ff0000) >> 16; /* Red */
+                    *( (DWORD *) dest_conv) |= (*color_s & 0xff0000ff) << 16; /* Blue */
+                    dest_conv += sizeof(DWORD);
+                }
+            }
+        }
+
+        for (tex_index = 0; tex_index < numTextures; tex_index++) {
+            const float *tex_coord =
+                    (const float *)(lpStrideData->u.s.texCoords[tex_index].lpData +
+                            i * lpStrideData->u.s.texCoords[tex_index].dwStride);
+            if(!tex_coord) {
+                ERR("No source texture, but destination requests one\n");
+                dest_ptr+=GET_TEXCOORD_SIZE_FROM_FVF(DestFVF, tex_index) * sizeof(float);
+                if(dest_conv) dest_conv += GET_TEXCOORD_SIZE_FROM_FVF(DestFVF, tex_index) * sizeof(float);
+            }
+            else {
+                copy_and_next(dest_ptr, tex_coord, GET_TEXCOORD_SIZE_FROM_FVF(DestFVF, tex_index) * sizeof(float));
+                if(dest_conv) {
+                    copy_and_next(dest_conv, tex_coord, GET_TEXCOORD_SIZE_FROM_FVF(DestFVF, tex_index) * sizeof(float));
+                }
+            }
+        }
+    }
+
+    if(dest_conv) {
+        GL_EXTCALL(glBindBufferARB(GL_ARRAY_BUFFER_ARB, dest->vbo));
+        checkGLcall("glBindBufferARB(GL_ARRAY_BUFFER_ARB)");
+        GL_EXTCALL(glBufferSubDataARB(GL_ARRAY_BUFFER_ARB, dwDestIndex * get_flexible_vertex_size(DestFVF),
+                                      dwCount * get_flexible_vertex_size(DestFVF),
+                                      dest_conv_addr));
+        checkGLcall("glBufferSubDataARB(GL_ARRAY_BUFFER_ARB)");
+        HeapFree(GetProcessHeap(), 0, dest_conv_addr);
+    }
+
+    LEAVE_GL();
+
+    return WINED3D_OK;
+}
+#undef copy_and_next
+
+static HRESULT WINAPI IWineD3DDeviceImpl_ProcessVertices(IWineD3DDevice *iface, UINT SrcStartIndex, UINT DestIndex, UINT VertexCount, IWineD3DVertexBuffer* pDestBuffer, IWineD3DVertexDeclaration* pVertexDecl, DWORD Flags) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    WineDirect3DVertexStridedData strided;
+    BOOL vbo = FALSE, streamWasUP = This->stateBlock->streamIsUP;
+    TRACE("(%p)->(%d,%d,%d,%p,%p,%d\n", This, SrcStartIndex, DestIndex, VertexCount, pDestBuffer, pVertexDecl, Flags);
+
+    if(pVertexDecl) {
+        ERR("Output vertex declaration not implemented yet\n");
+    }
+
+    /* Need any context to write to the vbo. */
+    ActivateContext(This, This->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+
+    /* ProcessVertices reads from vertex buffers, which have to be assigned. DrawPrimitive and DrawPrimitiveUP
+     * control the streamIsUP flag, thus restore it afterwards.
+     */
+    This->stateBlock->streamIsUP = FALSE;
+    memset(&strided, 0, sizeof(strided));
+    primitiveDeclarationConvertToStridedData(iface, FALSE, &strided, &vbo);
+    This->stateBlock->streamIsUP = streamWasUP;
+
+    if(vbo || SrcStartIndex) {
+        unsigned int i;
+        /* ProcessVertices can't convert FROM a vbo, and vertex buffers used to source into ProcessVertices are
+         * unlikely to ever be used for drawing. Release vbos in those buffers and fix up the strided structure
+         *
+         * Also get the start index in, but only loop over all elements if there's something to add at all.
+         */
+#define FIXSRC(type) \
+        if(strided.u.s.type.VBO) { \
+            IWineD3DVertexBufferImpl *vb = (IWineD3DVertexBufferImpl *) This->stateBlock->streamSource[strided.u.s.type.streamNo]; \
+            strided.u.s.type.VBO = 0; \
+            strided.u.s.type.lpData = (BYTE *) ((unsigned long) strided.u.s.type.lpData + (unsigned long) vb->resource.allocatedMemory); \
+            ENTER_GL(); \
+            GL_EXTCALL(glDeleteBuffersARB(1, &vb->vbo)); \
+            vb->vbo = 0; \
+            LEAVE_GL(); \
+        } \
+        if(strided.u.s.type.lpData) { \
+            strided.u.s.type.lpData += strided.u.s.type.dwStride * SrcStartIndex; \
+        }
+        FIXSRC(position);
+        FIXSRC(blendWeights);
+        FIXSRC(blendMatrixIndices);
+        FIXSRC(normal);
+        FIXSRC(pSize);
+        FIXSRC(diffuse);
+        FIXSRC(specular);
+        for(i = 0; i < WINED3DDP_MAXTEXCOORD; i++) {
+            FIXSRC(texCoords[i]);
+        }
+        FIXSRC(position2);
+        FIXSRC(normal2);
+        FIXSRC(tangent);
+        FIXSRC(binormal);
+        FIXSRC(tessFactor);
+        FIXSRC(fog);
+        FIXSRC(depth);
+        FIXSRC(sample);
+#undef FIXSRC
+    }
+
+    return process_vertices_strided(This, DestIndex, VertexCount, &strided, (IWineD3DVertexBufferImpl *) pDestBuffer, Flags);
+}
+
+/*****
+ * Get / Set Texture Stage States
+ * TODO: Verify against dx9 definitions
+ *****/
+static HRESULT WINAPI IWineD3DDeviceImpl_SetTextureStageState(IWineD3DDevice *iface, DWORD Stage, WINED3DTEXTURESTAGESTATETYPE Type, DWORD Value) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    DWORD oldValue = This->updateStateBlock->textureState[Stage][Type];
+
+    TRACE("(%p) : Stage=%d, Type=%s(%d), Value=%d\n", This, Stage, debug_d3dtexturestate(Type), Type, Value);
+
+    if (Stage >= MAX_TEXTURES) {
+        WARN("Attempting to set stage %u which is higher than the max stage %u, ignoring\n", Stage, MAX_TEXTURES - 1);
+        return WINED3D_OK;
+    }
+
+    This->updateStateBlock->changed.textureState[Stage][Type] = TRUE;
+    This->updateStateBlock->textureState[Stage][Type]         = Value;
+
+    if (This->isRecordingState) {
+        TRACE("Recording... not performing anything\n");
+        return WINED3D_OK;
+    }
+
+    /* Checked after the assignments to allow proper stateblock recording */
+    if(oldValue == Value) {
+        TRACE("App is setting the old value over, nothing to do\n");
+        return WINED3D_OK;
+    }
+
+    if(Stage > This->stateBlock->lowest_disabled_stage &&
+       This->StateTable[STATE_TEXTURESTAGE(0, Type)].representative == STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP)) {
+        /* Colorop change above lowest disabled stage? That won't change anything in the gl setup
+         * Changes in other states are important on disabled stages too
+         */
+        return WINED3D_OK;
+    }
+
+    if(Type == WINED3DTSS_COLOROP) {
+        int i;
+
+        if(Value == WINED3DTOP_DISABLE && oldValue != WINED3DTOP_DISABLE) {
+            /* Previously enabled stage disabled now. Make sure to dirtify all enabled stages above Stage,
+             * they have to be disabled
+             *
+             * The current stage is dirtified below.
+             */
+            for(i = Stage + 1; i < This->stateBlock->lowest_disabled_stage; i++) {
+                TRACE("Additionally dirtifying stage %d\n", i);
+                IWineD3DDeviceImpl_MarkStateDirty(This, STATE_TEXTURESTAGE(i, WINED3DTSS_COLOROP));
+            }
+            This->stateBlock->lowest_disabled_stage = Stage;
+            TRACE("New lowest disabled: %d\n", Stage);
+        } else if(Value != WINED3DTOP_DISABLE && oldValue == WINED3DTOP_DISABLE) {
+            /* Previously disabled stage enabled. Stages above it may need enabling
+             * stage must be lowest_disabled_stage here, if it's bigger success is returned above,
+             * and stages below the lowest disabled stage can't be enabled(because they are enabled already).
+             *
+             * Again stage Stage doesn't need to be dirtified here, it is handled below.
+             */
+
+            for(i = Stage + 1; i < GL_LIMITS(texture_stages); i++) {
+                if(This->updateStateBlock->textureState[i][WINED3DTSS_COLOROP] == WINED3DTOP_DISABLE) {
+                    break;
+                }
+                TRACE("Additionally dirtifying stage %d due to enable\n", i);
+                IWineD3DDeviceImpl_MarkStateDirty(This, STATE_TEXTURESTAGE(i, WINED3DTSS_COLOROP));
+            }
+            This->stateBlock->lowest_disabled_stage = i;
+            TRACE("New lowest disabled: %d\n", i);
+        }
+    }
+
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_TEXTURESTAGE(Stage, Type));
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_GetTextureStageState(IWineD3DDevice *iface, DWORD Stage, WINED3DTEXTURESTAGESTATETYPE Type, DWORD* pValue) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    TRACE("(%p) : requesting Stage %d, Type %d getting %d\n", This, Stage, Type, This->updateStateBlock->textureState[Stage][Type]);
+    *pValue = This->updateStateBlock->textureState[Stage][Type];
+    return WINED3D_OK;
+}
+
+/*****
+ * Get / Set Texture
+ *****/
+static HRESULT WINAPI IWineD3DDeviceImpl_SetTexture(IWineD3DDevice *iface, DWORD Stage, IWineD3DBaseTexture* pTexture) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    IWineD3DBaseTexture *oldTexture;
+
+    TRACE("(%p) : Stage %#x, Texture %p\n", This, Stage, pTexture);
+
+    if (Stage >= WINED3DVERTEXTEXTURESAMPLER0 && Stage <= WINED3DVERTEXTEXTURESAMPLER3) {
+        Stage -= (WINED3DVERTEXTEXTURESAMPLER0 - MAX_FRAGMENT_SAMPLERS);
+    }
+
+    if (Stage >= sizeof(This->stateBlock->textures)/sizeof(This->stateBlock->textures[0])) {
+        ERR("Current stage overflows textures array (stage %d)\n", Stage);
+        return WINED3D_OK; /* Windows accepts overflowing this array ... we do not. */
+    }
+
+    oldTexture = This->updateStateBlock->textures[Stage];
+
+    if(pTexture != NULL) {
+        /* SetTexture isn't allowed on textures in WINED3DPOOL_SCRATCH; 
+         */
+        if(((IWineD3DTextureImpl*)pTexture)->resource.pool == WINED3DPOOL_SCRATCH) {
+            WARN("(%p) Attempt to set scratch texture rejected\n", pTexture);
+            return WINED3DERR_INVALIDCALL;
+        }
+        This->stateBlock->textureDimensions[Stage] = IWineD3DBaseTexture_GetTextureDimensions(pTexture);
+    }
+
+    TRACE("GL_LIMITS %d\n",GL_LIMITS(sampler_stages));
+    TRACE("(%p) : oldtexture(%p)\n", This,oldTexture);
+
+    This->updateStateBlock->changed.textures[Stage] = TRUE;
+    TRACE("(%p) : setting new texture to %p\n", This, pTexture);
+    This->updateStateBlock->textures[Stage]         = pTexture;
+
+    /* Handle recording of state blocks */
+    if (This->isRecordingState) {
+        TRACE("Recording... not performing anything\n");
+        return WINED3D_OK;
+    }
+
+    if(oldTexture == pTexture) {
+        TRACE("App is setting the same texture again, nothing to do\n");
+        return WINED3D_OK;
+    }
+
+    /** NOTE: MSDN says that setTexture increases the reference count,
+    * and that the application must set the texture back to null (or have a leaky application),
+    * This means we should pass the refcount up to the parent
+     *******************************/
+    if (NULL != This->updateStateBlock->textures[Stage]) {
+        IWineD3DBaseTextureImpl *new = (IWineD3DBaseTextureImpl *) This->updateStateBlock->textures[Stage];
+        ULONG bindCount = InterlockedIncrement(&new->baseTexture.bindCount);
+
+        IWineD3DBaseTexture_AddRef(This->updateStateBlock->textures[Stage]);
+        if(oldTexture == NULL && Stage < MAX_TEXTURES) {
+            /* The source arguments for color and alpha ops have different meanings when a NULL texture is bound,
+             * so the COLOROP and ALPHAOP have to be dirtified.
+             */
+            IWineD3DDeviceImpl_MarkStateDirty(This, STATE_TEXTURESTAGE(Stage, WINED3DTSS_COLOROP));
+            IWineD3DDeviceImpl_MarkStateDirty(This, STATE_TEXTURESTAGE(Stage, WINED3DTSS_ALPHAOP));
+        }
+        if(bindCount == 1) {
+            new->baseTexture.sampler = Stage;
+        }
+        /* More than one assignment? Doesn't matter, we only need one gl texture unit to use for uploading */
+
+    }
+
+    if (NULL != oldTexture) {
+        IWineD3DBaseTextureImpl *old = (IWineD3DBaseTextureImpl *) oldTexture;
+        LONG bindCount = InterlockedDecrement(&old->baseTexture.bindCount);
+
+        IWineD3DBaseTexture_Release(oldTexture);
+        if(pTexture == NULL && Stage < MAX_TEXTURES) {
+            IWineD3DDeviceImpl_MarkStateDirty(This, STATE_TEXTURESTAGE(Stage, WINED3DTSS_COLOROP));
+            IWineD3DDeviceImpl_MarkStateDirty(This, STATE_TEXTURESTAGE(Stage, WINED3DTSS_ALPHAOP));
+        }
+
+        if(bindCount && old->baseTexture.sampler == Stage) {
+            int i;
+            /* Have to do a search for the other sampler(s) where the texture is bound to
+             * Shouldn't happen as long as apps bind a texture only to one stage
+             */
+            TRACE("Searcing for other sampler / stage id where the texture is bound to\n");
+            for(i = 0; i < MAX_COMBINED_SAMPLERS; i++) {
+                if(This->updateStateBlock->textures[i] == oldTexture) {
+                    old->baseTexture.sampler = i;
+                    break;
+                }
+            }
+        }
+    }
+
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_SAMPLER(Stage));
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_GetTexture(IWineD3DDevice *iface, DWORD Stage, IWineD3DBaseTexture** ppTexture) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+
+    TRACE("(%p) : Stage %#x, ppTexture %p\n", This, Stage, ppTexture);
+
+    if (Stage >= WINED3DVERTEXTEXTURESAMPLER0 && Stage <= WINED3DVERTEXTEXTURESAMPLER3) {
+        Stage -= (WINED3DVERTEXTEXTURESAMPLER0 - MAX_FRAGMENT_SAMPLERS);
+    }
+
+    if (Stage >= sizeof(This->stateBlock->textures)/sizeof(This->stateBlock->textures[0])) {
+        ERR("Current stage overflows textures array (stage %d)\n", Stage);
+        return WINED3D_OK; /* Windows accepts overflowing this array ... we do not. */
+    }
+
+    *ppTexture=This->stateBlock->textures[Stage];
+    if (*ppTexture)
+        IWineD3DBaseTexture_AddRef(*ppTexture);
+
+    TRACE("(%p) : Returning %p\n", This, *ppTexture);
+
+    return WINED3D_OK;
+}
+
+/*****
+ * Get Back Buffer
+ *****/
+static HRESULT WINAPI IWineD3DDeviceImpl_GetBackBuffer(IWineD3DDevice *iface, UINT iSwapChain, UINT BackBuffer, WINED3DBACKBUFFER_TYPE Type,
+                                                IWineD3DSurface **ppBackBuffer) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    IWineD3DSwapChain *swapChain;
+    HRESULT hr;
+
+    TRACE("(%p) : BackBuf %d Type %d SwapChain %d returning %p\n", This, BackBuffer, Type, iSwapChain, *ppBackBuffer);
+
+    hr = IWineD3DDeviceImpl_GetSwapChain(iface,  iSwapChain, &swapChain);
+    if (hr == WINED3D_OK) {
+        hr = IWineD3DSwapChain_GetBackBuffer(swapChain, BackBuffer, Type, ppBackBuffer);
+            IWineD3DSwapChain_Release(swapChain);
+    } else {
+        *ppBackBuffer = NULL;
+    }
+    return hr;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_GetDeviceCaps(IWineD3DDevice *iface, WINED3DCAPS* pCaps) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    WARN("(%p) : stub, calling idirect3d for now\n", This);
+    return IWineD3D_GetDeviceCaps(This->wineD3D, This->adapterNo, This->devType, pCaps);
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_GetDisplayMode(IWineD3DDevice *iface, UINT iSwapChain, WINED3DDISPLAYMODE* pMode) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    IWineD3DSwapChain *swapChain;
+    HRESULT hr;
+
+    if(iSwapChain > 0) {
+        hr = IWineD3DDeviceImpl_GetSwapChain(iface, iSwapChain, &swapChain);
+        if (hr == WINED3D_OK) {
+            hr = IWineD3DSwapChain_GetDisplayMode(swapChain, pMode);
+            IWineD3DSwapChain_Release(swapChain);
+        } else {
+            FIXME("(%p) Error getting display mode\n", This);
+        }
+    } else {
+        /* Don't read the real display mode,
+           but return the stored mode instead. X11 can't change the color
+           depth, and some apps are pretty angry if they SetDisplayMode from
+           24 to 16 bpp and find out that GetDisplayMode still returns 24 bpp
+
+           Also don't relay to the swapchain because with ddraw it's possible
+           that there isn't a swapchain at all */
+        pMode->Width = This->ddraw_width;
+        pMode->Height = This->ddraw_height;
+        pMode->Format = This->ddraw_format;
+        pMode->RefreshRate = 0;
+        hr = WINED3D_OK;
+    }
+
+    return hr;
+}
+
+/*****
+ * Stateblock related functions
+ *****/
+
+static HRESULT WINAPI IWineD3DDeviceImpl_BeginStateBlock(IWineD3DDevice *iface) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    IWineD3DStateBlockImpl *object;
+    HRESULT temp_result;
+    int i;
+
+    TRACE("(%p)\n", This);
+    
+    if (This->isRecordingState) {
+        return WINED3DERR_INVALIDCALL;
+    }
+    
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IWineD3DStateBlockImpl));
+    if (NULL == object ) {
+        FIXME("(%p)Error allocating memory for stateblock\n", This);
+        return E_OUTOFMEMORY;
+    }
+    TRACE("(%p) created object %p\n", This, object);
+    object->wineD3DDevice= This;
+    /** FIXME: object->parent       = parent; **/
+    object->parent       = NULL;
+    object->blockType    = WINED3DSBT_RECORDED;
+    object->ref          = 1;
+    object->lpVtbl       = &IWineD3DStateBlock_Vtbl;
+
+    for(i = 0; i < LIGHTMAP_SIZE; i++) {
+        list_init(&object->lightMap[i]);
+    }
+
+    temp_result = allocate_shader_constants(object);
+    if (WINED3D_OK != temp_result)
+        return temp_result;
+
+    IWineD3DStateBlock_Release((IWineD3DStateBlock*)This->updateStateBlock);
+    This->updateStateBlock = object;
+    This->isRecordingState = TRUE;
+
+    TRACE("(%p) recording stateblock %p\n",This , object);
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_EndStateBlock(IWineD3DDevice *iface, IWineD3DStateBlock** ppStateBlock) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    unsigned int i, j;
+    IWineD3DStateBlockImpl *object = This->updateStateBlock;
+
+    if (!This->isRecordingState) {
+        FIXME("(%p) not recording! returning error\n", This);
+        *ppStateBlock = NULL;
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    for(i = 1; i <= WINEHIGHEST_RENDER_STATE; i++) {
+        if(object->changed.renderState[i]) {
+            object->contained_render_states[object->num_contained_render_states] = i;
+            object->num_contained_render_states++;
+        }
+    }
+    for(i = 1; i <= HIGHEST_TRANSFORMSTATE; i++) {
+        if(object->changed.transform[i]) {
+            object->contained_transform_states[object->num_contained_transform_states] = i;
+            object->num_contained_transform_states++;
+        }
+    }
+    for(i = 0; i < GL_LIMITS(vshader_constantsF); i++) {
+        if(object->changed.vertexShaderConstantsF[i]) {
+            object->contained_vs_consts_f[object->num_contained_vs_consts_f] = i;
+            object->num_contained_vs_consts_f++;
+        }
+    }
+    for(i = 0; i < MAX_CONST_I; i++) {
+        if (object->changed.vertexShaderConstantsI & (1 << i))
+        {
+            object->contained_vs_consts_i[object->num_contained_vs_consts_i] = i;
+            object->num_contained_vs_consts_i++;
+        }
+    }
+    for(i = 0; i < MAX_CONST_B; i++) {
+        if (object->changed.vertexShaderConstantsB & (1 << i))
+        {
+            object->contained_vs_consts_b[object->num_contained_vs_consts_b] = i;
+            object->num_contained_vs_consts_b++;
+        }
+    }
+    for(i = 0; i < MAX_CONST_I; i++) {
+        if (object->changed.pixelShaderConstantsI & (1 << i))
+        {
+            object->contained_ps_consts_i[object->num_contained_ps_consts_i] = i;
+            object->num_contained_ps_consts_i++;
+        }
+    }
+    for(i = 0; i < MAX_CONST_B; i++) {
+        if (object->changed.pixelShaderConstantsB & (1 << i))
+        {
+            object->contained_ps_consts_b[object->num_contained_ps_consts_b] = i;
+            object->num_contained_ps_consts_b++;
+        }
+    }
+    for(i = 0; i < MAX_TEXTURES; i++) {
+        for(j = 1; j <= WINED3D_HIGHEST_TEXTURE_STATE; j++) {
+            if(object->changed.textureState[i][j]) {
+                object->contained_tss_states[object->num_contained_tss_states].stage = i;
+                object->contained_tss_states[object->num_contained_tss_states].state = j;
+                object->num_contained_tss_states++;
+            }
+        }
+    }
+    for(i = 0; i < MAX_COMBINED_SAMPLERS; i++){
+        for (j = 1; j < WINED3D_HIGHEST_SAMPLER_STATE; j++) {
+            if(object->changed.samplerState[i][j]) {
+                object->contained_sampler_states[object->num_contained_sampler_states].stage = i;
+                object->contained_sampler_states[object->num_contained_sampler_states].state = j;
+                object->num_contained_sampler_states++;
+            }
+        }
+    }
+
+    *ppStateBlock = (IWineD3DStateBlock*) object;
+    This->isRecordingState = FALSE;
+    This->updateStateBlock = This->stateBlock;
+    IWineD3DStateBlock_AddRef((IWineD3DStateBlock*)This->updateStateBlock);
+    /* IWineD3DStateBlock_AddRef(*ppStateBlock); don't need to do this, since we should really just release UpdateStateBlock first */
+    TRACE("(%p) returning token (ptr to stateblock) of %p\n", This, *ppStateBlock);
+    return WINED3D_OK;
+}
+
+/*****
+ * Scene related functions
+ *****/
+static HRESULT WINAPI IWineD3DDeviceImpl_BeginScene(IWineD3DDevice *iface) {
+    /* At the moment we have no need for any functionality at the beginning
+       of a scene                                                          */
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    TRACE("(%p)\n", This);
+
+    if(This->inScene) {
+        TRACE("Already in Scene, returning WINED3DERR_INVALIDCALL\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+    This->inScene = TRUE;
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_EndScene(IWineD3DDevice *iface) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    TRACE("(%p)\n", This);
+
+    if(!This->inScene) {
+        TRACE("Not in scene, returning WINED3DERR_INVALIDCALL\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    ActivateContext(This, This->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+    /* We only have to do this if we need to read the, swapbuffers performs a flush for us */
+    glFlush();
+    /* No checkGLcall here to avoid locking the lock just for checking a call that hardly ever
+     * fails
+     */
+
+    This->inScene = FALSE;
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_Present(IWineD3DDevice *iface,
+                                          CONST RECT* pSourceRect, CONST RECT* pDestRect,
+                                          HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    IWineD3DSwapChain *swapChain = NULL;
+    int i;
+    int swapchains = IWineD3DDeviceImpl_GetNumberOfSwapChains(iface);
+
+    TRACE("(%p) Presenting the frame\n", This);
+
+    for(i = 0 ; i < swapchains ; i ++) {
+
+        IWineD3DDeviceImpl_GetSwapChain(iface, i, &swapChain);
+        TRACE("presentinng chain %d, %p\n", i, swapChain);
+        IWineD3DSwapChain_Present(swapChain, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion, 0);
+        IWineD3DSwapChain_Release(swapChain);
+    }
+
+    return WINED3D_OK;
+}
+
+/* Not called from the VTable (internal subroutine) */
+HRESULT IWineD3DDeviceImpl_ClearSurface(IWineD3DDeviceImpl *This,  IWineD3DSurfaceImpl *target, DWORD Count,
+                                        CONST WINED3DRECT* pRects, DWORD Flags, WINED3DCOLOR Color,
+                                        float Z, DWORD Stencil) {
+    GLbitfield     glMask = 0;
+    unsigned int   i;
+    WINED3DRECT curRect;
+    RECT vp_rect;
+    const WINED3DVIEWPORT *vp = &This->stateBlock->viewport;
+    UINT drawable_width, drawable_height;
+    IWineD3DSurfaceImpl *depth_stencil = (IWineD3DSurfaceImpl *) This->stencilBufferTarget;
+    IWineD3DSwapChainImpl *swapchain = NULL;
+
+    /* When we're clearing parts of the drawable, make sure that the target surface is well up to date in the
+     * drawable. After the clear we'll mark the drawable up to date, so we have to make sure that this is true
+     * for the cleared parts, and the untouched parts.
+     *
+     * If we're clearing the whole target there is no need to copy it into the drawable, it will be overwritten
+     * anyway. If we're not clearing the color buffer we don't have to copy either since we're not going to set
+     * the drawable up to date. We have to check all settings that limit the clear area though. Do not bother
+     * checking all this if the dest surface is in the drawable anyway.
+     */
+    if((Flags & WINED3DCLEAR_TARGET) && !(target->Flags & SFLAG_INDRAWABLE)) {
+        while(1) {
+            if(vp->X != 0 || vp->Y != 0 ||
+               vp->Width < target->currentDesc.Width || vp->Height < target->currentDesc.Height) {
+                IWineD3DSurface_LoadLocation((IWineD3DSurface *) target, SFLAG_INDRAWABLE, NULL);
+                break;
+            }
+            if(This->stateBlock->renderState[WINED3DRS_SCISSORTESTENABLE] && (
+               This->stateBlock->scissorRect.left > 0 || This->stateBlock->scissorRect.top > 0 ||
+               This->stateBlock->scissorRect.right < target->currentDesc.Width ||
+               This->stateBlock->scissorRect.bottom < target->currentDesc.Height)) {
+                IWineD3DSurface_LoadLocation((IWineD3DSurface *) target, SFLAG_INDRAWABLE, NULL);
+                break;
+            }
+            if(Count > 0 && pRects && (
+               pRects[0].x1 > 0 || pRects[0].y1 > 0 ||
+               pRects[0].x2 < target->currentDesc.Width ||
+               pRects[0].y2 < target->currentDesc.Height)) {
+                IWineD3DSurface_LoadLocation((IWineD3DSurface *) target, SFLAG_INDRAWABLE, NULL);
+                break;
+            }
+            break;
+        }
+    }
+
+    target->get_drawable_size(target, &drawable_width, &drawable_height);
+
+    ActivateContext(This, (IWineD3DSurface *) target, CTXUSAGE_CLEAR);
+    ENTER_GL();
+
+    /* Only set the values up once, as they are not changing */
+    if (Flags & WINED3DCLEAR_STENCIL) {
+        glClearStencil(Stencil);
+        checkGLcall("glClearStencil");
+        glMask = glMask | GL_STENCIL_BUFFER_BIT;
+        glStencilMask(0xFFFFFFFF);
+    }
+
+    if (Flags & WINED3DCLEAR_ZBUFFER) {
+        DWORD location = This->render_offscreen ? SFLAG_DS_OFFSCREEN : SFLAG_DS_ONSCREEN;
+        glDepthMask(GL_TRUE);
+        glClearDepth(Z);
+        checkGLcall("glClearDepth");
+        glMask = glMask | GL_DEPTH_BUFFER_BIT;
+        IWineD3DDeviceImpl_MarkStateDirty(This, STATE_RENDER(WINED3DRS_ZWRITEENABLE));
+
+        if (vp->X != 0 || vp->Y != 0 ||
+                vp->Width < depth_stencil->currentDesc.Width || vp->Height < depth_stencil->currentDesc.Height) {
+            surface_load_ds_location(This->stencilBufferTarget, location);
+        }
+        else if (This->stateBlock->renderState[WINED3DRS_SCISSORTESTENABLE] && (
+                This->stateBlock->scissorRect.left > 0 || This->stateBlock->scissorRect.top > 0 ||
+                This->stateBlock->scissorRect.right < depth_stencil->currentDesc.Width ||
+                This->stateBlock->scissorRect.bottom < depth_stencil->currentDesc.Height)) {
+            surface_load_ds_location(This->stencilBufferTarget, location);
+        }
+        else if (Count > 0 && pRects && (
+                pRects[0].x1 > 0 || pRects[0].y1 > 0 ||
+                pRects[0].x2 < depth_stencil->currentDesc.Width ||
+                pRects[0].y2 < depth_stencil->currentDesc.Height)) {
+            surface_load_ds_location(This->stencilBufferTarget, location);
+        }
+    }
+
+    if (Flags & WINED3DCLEAR_TARGET) {
+        TRACE("Clearing screen with glClear to color %x\n", Color);
+        glClearColor(D3DCOLOR_R(Color),
+                     D3DCOLOR_G(Color),
+                     D3DCOLOR_B(Color),
+                     D3DCOLOR_A(Color));
+        checkGLcall("glClearColor");
+
+        /* Clear ALL colors! */
+        glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+        glMask = glMask | GL_COLOR_BUFFER_BIT;
+    }
+
+    vp_rect.left = vp->X;
+    vp_rect.top = vp->Y;
+    vp_rect.right = vp->X + vp->Width;
+    vp_rect.bottom = vp->Y + vp->Height;
+    if (!(Count > 0 && pRects)) {
+        if(This->stateBlock->renderState[WINED3DRS_SCISSORTESTENABLE]) {
+            IntersectRect(&vp_rect, &vp_rect, &This->stateBlock->scissorRect);
+        }
+        if(This->render_offscreen) {
+            glScissor(vp_rect.left, vp_rect.top,
+                        vp_rect.right - vp_rect.left, vp_rect.bottom - vp_rect.top);
+        } else {
+            glScissor(vp_rect.left, drawable_height - vp_rect.bottom,
+                        vp_rect.right - vp_rect.left, vp_rect.bottom - vp_rect.top);
+        }
+        checkGLcall("glScissor");
+        glClear(glMask);
+        checkGLcall("glClear");
+    } else {
+        /* Now process each rect in turn */
+        for (i = 0; i < Count; i++) {
+            /* Note gl uses lower left, width/height */
+            IntersectRect((RECT *)&curRect, &vp_rect, (const RECT *)&pRects[i]);
+            if(This->stateBlock->renderState[WINED3DRS_SCISSORTESTENABLE]) {
+                IntersectRect((RECT *) &curRect, (RECT *) &curRect, &This->stateBlock->scissorRect);
+            }
+            TRACE("(%p) Rect=(%d,%d)->(%d,%d) glRect=(%d,%d), len=%d, hei=%d\n", This,
+                  pRects[i].x1, pRects[i].y1, pRects[i].x2, pRects[i].y2,
+                  curRect.x1, (target->currentDesc.Height - curRect.y2),
+                  curRect.x2 - curRect.x1, curRect.y2 - curRect.y1);
+
+            /* Tests show that rectangles where x1 > x2 or y1 > y2 are ignored silently.
+             * The rectangle is not cleared, no error is returned, but further rectanlges are
+             * still cleared if they are valid
+             */
+            if(curRect.x1 > curRect.x2 || curRect.y1 > curRect.y2) {
+                TRACE("Rectangle with negative dimensions, ignoring\n");
+                continue;
+            }
+
+            if(This->render_offscreen) {
+                glScissor(curRect.x1, curRect.y1,
+                          curRect.x2 - curRect.x1, curRect.y2 - curRect.y1);
+            } else {
+                glScissor(curRect.x1, drawable_height - curRect.y2,
+                          curRect.x2 - curRect.x1, curRect.y2 - curRect.y1);
+            }
+            checkGLcall("glScissor");
+
+            glClear(glMask);
+            checkGLcall("glClear");
+        }
+    }
+
+    /* Restore the old values (why..?) */
+    if (Flags & WINED3DCLEAR_STENCIL) {
+        glStencilMask(This->stateBlock->renderState[WINED3DRS_STENCILWRITEMASK]);
+    }
+    if (Flags & WINED3DCLEAR_TARGET) {
+        DWORD mask = This->stateBlock->renderState[WINED3DRS_COLORWRITEENABLE];
+        glColorMask(mask & WINED3DCOLORWRITEENABLE_RED ? GL_TRUE : GL_FALSE,
+                    mask & WINED3DCOLORWRITEENABLE_GREEN ? GL_TRUE : GL_FALSE,
+                    mask & WINED3DCOLORWRITEENABLE_BLUE  ? GL_TRUE : GL_FALSE,
+                    mask & WINED3DCOLORWRITEENABLE_ALPHA ? GL_TRUE : GL_FALSE);
+
+        /* Dirtify the target surface for now. If the surface is locked regularly, and an up to date sysmem copy exists,
+         * it is most likely more efficient to perform a clear on the sysmem copy too instead of downloading it
+         */
+        IWineD3DSurface_ModifyLocation(This->lastActiveRenderTarget, SFLAG_INDRAWABLE, TRUE);
+    }
+    if (Flags & WINED3DCLEAR_ZBUFFER) {
+        /* Note that WINED3DCLEAR_ZBUFFER implies a depth stencil exists on the device */
+        DWORD location = This->render_offscreen ? SFLAG_DS_OFFSCREEN : SFLAG_DS_ONSCREEN;
+        surface_modify_ds_location(This->stencilBufferTarget, location);
+    }
+
+    LEAVE_GL();
+
+    if (SUCCEEDED(IWineD3DSurface_GetContainer((IWineD3DSurface *)target, &IID_IWineD3DSwapChain, (void **)&swapchain))) {
+        if (target == (IWineD3DSurfaceImpl*) swapchain->frontBuffer) {
+            glFlush();
+        }
+        IWineD3DSwapChain_Release((IWineD3DSwapChain *) swapchain);
+    }
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_Clear(IWineD3DDevice *iface, DWORD Count, CONST WINED3DRECT* pRects,
+                                        DWORD Flags, WINED3DCOLOR Color, float Z, DWORD Stencil) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    IWineD3DSurfaceImpl *target = (IWineD3DSurfaceImpl *)This->render_targets[0];
+
+    TRACE("(%p) Count (%d), pRects (%p), Flags (%x), Color (0x%08x), Z (%f), Stencil (%d)\n", This,
+          Count, pRects, Flags, Color, Z, Stencil);
+
+    if(Flags & (WINED3DCLEAR_ZBUFFER | WINED3DCLEAR_STENCIL) && This->stencilBufferTarget == NULL) {
+        WARN("Clearing depth and/or stencil without a depth stencil buffer attached, returning WINED3DERR_INVALIDCALL\n");
+        /* TODO: What about depth stencil buffers without stencil bits? */
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    return IWineD3DDeviceImpl_ClearSurface(This, target, Count, pRects, Flags, Color, Z, Stencil);
+}
+
+/*****
+ * Drawing functions
+ *****/
+static HRESULT WINAPI IWineD3DDeviceImpl_DrawPrimitive(IWineD3DDevice *iface, WINED3DPRIMITIVETYPE PrimitiveType, UINT StartVertex,
+                                                UINT PrimitiveCount) {
+
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+
+    TRACE("(%p) : Type=(%d,%s), Start=%d, Count=%d\n", This, PrimitiveType,
+                               debug_d3dprimitivetype(PrimitiveType),
+                               StartVertex, PrimitiveCount);
+
+    if(!This->stateBlock->vertexDecl) {
+        WARN("(%p) : Called without a valid vertex declaration set\n", This);
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    /* The index buffer is not needed here, but restore it, otherwise it is hell to keep track of */
+    if(This->stateBlock->streamIsUP) {
+        IWineD3DDeviceImpl_MarkStateDirty(This, STATE_INDEXBUFFER);
+        This->stateBlock->streamIsUP = FALSE;
+    }
+
+    if(This->stateBlock->loadBaseVertexIndex != 0) {
+        This->stateBlock->loadBaseVertexIndex = 0;
+        IWineD3DDeviceImpl_MarkStateDirty(This, STATE_STREAMSRC);
+    }
+    /* Account for the loading offset due to index buffers. Instead of reloading all sources correct it with the startvertex parameter */
+    drawPrimitive(iface, PrimitiveType, PrimitiveCount, StartVertex, 0/* NumVertices */, -1 /* indxStart */,
+                  0 /* indxSize */, NULL /* indxData */, 0 /* minIndex */);
+    return WINED3D_OK;
+}
+
+/* TODO: baseVIndex needs to be provided from This->stateBlock->baseVertexIndex when called from d3d8 */
+static HRESULT  WINAPI  IWineD3DDeviceImpl_DrawIndexedPrimitive(IWineD3DDevice *iface,
+                                                           WINED3DPRIMITIVETYPE PrimitiveType,
+                                                           UINT minIndex, UINT NumVertices, UINT startIndex, UINT primCount) {
+
+    IWineD3DDeviceImpl  *This = (IWineD3DDeviceImpl *)iface;
+    UINT                 idxStride = 2;
+    IWineD3DIndexBuffer *pIB;
+    WINED3DINDEXBUFFER_DESC  IdxBufDsc;
+    GLuint vbo;
+
+    pIB = This->stateBlock->pIndexData;
+    if (!pIB) {
+        /* D3D9 returns D3DERR_INVALIDCALL when DrawIndexedPrimitive is called
+         * without an index buffer set. (The first time at least...)
+         * D3D8 simply dies, but I doubt it can do much harm to return
+         * D3DERR_INVALIDCALL there as well. */
+        ERR("(%p) : Called without a valid index buffer set, returning WINED3DERR_INVALIDCALL\n", This);
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    if(!This->stateBlock->vertexDecl) {
+        WARN("(%p) : Called without a valid vertex declaration set\n", This);
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    if(This->stateBlock->streamIsUP) {
+        IWineD3DDeviceImpl_MarkStateDirty(This, STATE_INDEXBUFFER);
+        This->stateBlock->streamIsUP = FALSE;
+    }
+    vbo = ((IWineD3DIndexBufferImpl *) pIB)->vbo;
+
+    TRACE("(%p) : Type=(%d,%s), min=%d, CountV=%d, startIdx=%d, countP=%d\n", This,
+          PrimitiveType, debug_d3dprimitivetype(PrimitiveType),
+          minIndex, NumVertices, startIndex, primCount);
+
+    IWineD3DIndexBuffer_GetDesc(pIB, &IdxBufDsc);
+    if (IdxBufDsc.Format == WINED3DFMT_INDEX16) {
+        idxStride = 2;
+    } else {
+        idxStride = 4;
+    }
+
+    if(This->stateBlock->loadBaseVertexIndex != This->stateBlock->baseVertexIndex) {
+        This->stateBlock->loadBaseVertexIndex = This->stateBlock->baseVertexIndex;
+        IWineD3DDeviceImpl_MarkStateDirty(This, STATE_STREAMSRC);
+    }
+
+    drawPrimitive(iface, PrimitiveType, primCount, 0, NumVertices, startIndex,
+                   idxStride, vbo ? NULL : ((IWineD3DIndexBufferImpl *) pIB)->resource.allocatedMemory, minIndex);
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_DrawPrimitiveUP(IWineD3DDevice *iface, WINED3DPRIMITIVETYPE PrimitiveType,
+                                                    UINT PrimitiveCount, CONST void* pVertexStreamZeroData,
+                                                    UINT VertexStreamZeroStride) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    IWineD3DVertexBuffer *vb;
+
+    TRACE("(%p) : Type=(%d,%s), pCount=%d, pVtxData=%p, Stride=%d\n", This, PrimitiveType,
+             debug_d3dprimitivetype(PrimitiveType),
+             PrimitiveCount, pVertexStreamZeroData, VertexStreamZeroStride);
+
+    if(!This->stateBlock->vertexDecl) {
+        WARN("(%p) : Called without a valid vertex declaration set\n", This);
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    /* Note in the following, it's not this type, but that's the purpose of streamIsUP */
+    vb = This->stateBlock->streamSource[0];
+    This->stateBlock->streamSource[0] = (IWineD3DVertexBuffer *)pVertexStreamZeroData;
+    if(vb) IWineD3DVertexBuffer_Release(vb);
+    This->stateBlock->streamOffset[0] = 0;
+    This->stateBlock->streamStride[0] = VertexStreamZeroStride;
+    This->stateBlock->streamIsUP = TRUE;
+    This->stateBlock->loadBaseVertexIndex = 0;
+
+    /* TODO: Only mark dirty if drawing from a different UP address */
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_STREAMSRC);
+
+    drawPrimitive(iface, PrimitiveType, PrimitiveCount, 0 /* start vertex */, 0  /* NumVertices */,
+                  0 /* indxStart*/, 0 /* indxSize*/, NULL /* indxData */, 0 /* indxMin */);
+
+    /* MSDN specifies stream zero settings must be set to NULL */
+    This->stateBlock->streamStride[0] = 0;
+    This->stateBlock->streamSource[0] = NULL;
+
+    /* stream zero settings set to null at end, as per the msdn. No need to mark dirty here, the app has to set
+     * the new stream sources or use UP drawing again
+     */
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_DrawIndexedPrimitiveUP(IWineD3DDevice *iface, WINED3DPRIMITIVETYPE PrimitiveType,
+                                                             UINT MinVertexIndex, UINT NumVertices,
+                                                             UINT PrimitiveCount, CONST void* pIndexData,
+                                                             WINED3DFORMAT IndexDataFormat,CONST void* pVertexStreamZeroData,
+                                                             UINT VertexStreamZeroStride) {
+    int                 idxStride;
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    IWineD3DVertexBuffer *vb;
+    IWineD3DIndexBuffer *ib;
+
+    TRACE("(%p) : Type=(%d,%s), MinVtxIdx=%d, NumVIdx=%d, PCount=%d, pidxdata=%p, IdxFmt=%d, pVtxdata=%p, stride=%d\n",
+             This, PrimitiveType, debug_d3dprimitivetype(PrimitiveType),
+             MinVertexIndex, NumVertices, PrimitiveCount, pIndexData,
+             IndexDataFormat, pVertexStreamZeroData, VertexStreamZeroStride);
+
+    if(!This->stateBlock->vertexDecl) {
+        WARN("(%p) : Called without a valid vertex declaration set\n", This);
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    if (IndexDataFormat == WINED3DFMT_INDEX16) {
+        idxStride = 2;
+    } else {
+        idxStride = 4;
+    }
+
+    /* Note in the following, it's not this type, but that's the purpose of streamIsUP */
+    vb = This->stateBlock->streamSource[0];
+    This->stateBlock->streamSource[0] = (IWineD3DVertexBuffer *)pVertexStreamZeroData;
+    if(vb) IWineD3DVertexBuffer_Release(vb);
+    This->stateBlock->streamIsUP = TRUE;
+    This->stateBlock->streamOffset[0] = 0;
+    This->stateBlock->streamStride[0] = VertexStreamZeroStride;
+
+    /* Set to 0 as per msdn. Do it now due to the stream source loading during drawPrimitive */
+    This->stateBlock->baseVertexIndex = 0;
+    This->stateBlock->loadBaseVertexIndex = 0;
+    /* Mark the state dirty until we have nicer tracking of the stream source pointers */
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_VDECL);
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_INDEXBUFFER);
+
+    drawPrimitive(iface, PrimitiveType, PrimitiveCount, 0 /* vertexStart */, NumVertices, 0 /* indxStart */, idxStride, pIndexData, MinVertexIndex);
+
+    /* MSDN specifies stream zero settings and index buffer must be set to NULL */
+    This->stateBlock->streamSource[0] = NULL;
+    This->stateBlock->streamStride[0] = 0;
+    ib = This->stateBlock->pIndexData;
+    if(ib) {
+        IWineD3DIndexBuffer_Release(ib);
+        This->stateBlock->pIndexData = NULL;
+    }
+    /* No need to mark the stream source state dirty here. Either the app calls UP drawing again, or it has to call
+     * SetStreamSource to specify a vertex buffer
+     */
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_DrawPrimitiveStrided(IWineD3DDevice *iface,
+        WINED3DPRIMITIVETYPE PrimitiveType, UINT PrimitiveCount,
+        const WineDirect3DVertexStridedData *DrawPrimStrideData)
+{
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+
+    /* Mark the state dirty until we have nicer tracking
+     * its fine to change baseVertexIndex because that call is only called by ddraw which does not need
+     * that value.
+     */
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_VDECL);
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_INDEXBUFFER);
+    This->stateBlock->baseVertexIndex = 0;
+    This->up_strided = DrawPrimStrideData;
+    drawPrimitive(iface, PrimitiveType, PrimitiveCount, 0, 0, 0, 0, NULL, 0);
+    This->up_strided = NULL;
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_DrawIndexedPrimitiveStrided(IWineD3DDevice *iface,
+        WINED3DPRIMITIVETYPE PrimitiveType, UINT PrimitiveCount,
+        const WineDirect3DVertexStridedData *DrawPrimStrideData, UINT NumVertices, const void *pIndexData,
+        WINED3DFORMAT IndexDataFormat)
+{
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    DWORD idxSize = (IndexDataFormat == WINED3DFMT_INDEX32 ? 4 : 2);
+
+    /* Mark the state dirty until we have nicer tracking
+     * its fine to change baseVertexIndex because that call is only called by ddraw which does not need
+     * that value.
+     */
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_VDECL);
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_INDEXBUFFER);
+    This->stateBlock->streamIsUP = TRUE;
+    This->stateBlock->baseVertexIndex = 0;
+    This->up_strided = DrawPrimStrideData;
+    drawPrimitive(iface, PrimitiveType, PrimitiveCount, 0 /* startvertexidx */, 0 /* numindices */, 0 /* startidx */, idxSize, pIndexData, 0 /* minindex */);
+    This->up_strided = NULL;
+    return WINED3D_OK;
+}
+
+static HRESULT IWineD3DDeviceImpl_UpdateVolume(IWineD3DDevice *iface, IWineD3DVolume *pSourceVolume, IWineD3DVolume *pDestinationVolume) {
+    /* This is a helper function for UpdateTexture, there is no public UpdateVolume method in d3d. Since it's
+     * not callable by the app directly no parameter validation checks are needed here.
+     */
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    WINED3DLOCKED_BOX src;
+    WINED3DLOCKED_BOX dst;
+    HRESULT hr;
+    TRACE("(%p)->(%p, %p)\n", This, pSourceVolume, pDestinationVolume);
+
+    /* TODO: Implement direct loading into the gl volume instead of using memcpy and
+     * dirtification to improve loading performance.
+     */
+    hr = IWineD3DVolume_LockBox(pSourceVolume, &src, NULL, WINED3DLOCK_READONLY);
+    if(FAILED(hr)) return hr;
+    hr = IWineD3DVolume_LockBox(pDestinationVolume, &dst, NULL, WINED3DLOCK_DISCARD);
+    if(FAILED(hr)) {
+    IWineD3DVolume_UnlockBox(pSourceVolume);
+            return hr;
+    }
+
+    memcpy(dst.pBits, src.pBits, ((IWineD3DVolumeImpl *) pDestinationVolume)->resource.size);
+
+    hr = IWineD3DVolume_UnlockBox(pDestinationVolume);
+    if(FAILED(hr)) {
+        IWineD3DVolume_UnlockBox(pSourceVolume);
+    } else {
+        hr = IWineD3DVolume_UnlockBox(pSourceVolume);
+    }
+    return hr;
+}
+
+/* Yet another way to update a texture, some apps use this to load default textures instead of using surface/texture lock/unlock */
+static HRESULT WINAPI IWineD3DDeviceImpl_UpdateTexture (IWineD3DDevice *iface, IWineD3DBaseTexture *pSourceTexture,  IWineD3DBaseTexture *pDestinationTexture){
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    HRESULT hr = WINED3D_OK;
+    WINED3DRESOURCETYPE sourceType;
+    WINED3DRESOURCETYPE destinationType;
+    int i ,levels;
+
+    /* TODO: think about moving the code into IWineD3DBaseTexture  */
+
+    TRACE("(%p) Source %p Destination %p\n", This, pSourceTexture, pDestinationTexture);
+
+    /* verify that the source and destination textures aren't NULL */
+    if (NULL == pSourceTexture || NULL == pDestinationTexture) {
+        WARN("(%p) : source (%p) and destination (%p) textures must not be NULL, returning WINED3DERR_INVALIDCALL\n",
+             This, pSourceTexture, pDestinationTexture);
+        hr = WINED3DERR_INVALIDCALL;
+    }
+
+    if (pSourceTexture == pDestinationTexture) {
+        WARN("(%p) : source (%p) and destination (%p) textures must be different, returning WINED3DERR_INVALIDCALL\n",
+             This, pSourceTexture, pDestinationTexture);
+        hr = WINED3DERR_INVALIDCALL;
+    }
+    /* Verify that the source and destination textures are the same type */
+    sourceType      = IWineD3DBaseTexture_GetType(pSourceTexture);
+    destinationType = IWineD3DBaseTexture_GetType(pDestinationTexture);
+
+    if (sourceType != destinationType) {
+        WARN("(%p) Sorce and destination types must match, returning WINED3DERR_INVALIDCALL\n",
+             This);
+        hr = WINED3DERR_INVALIDCALL;
+    }
+
+    /* check that both textures have the identical numbers of levels  */
+    if (IWineD3DBaseTexture_GetLevelCount(pDestinationTexture)  != IWineD3DBaseTexture_GetLevelCount(pSourceTexture)) {
+        WARN("(%p) : source (%p) and destination (%p) textures must have identical numbers of levels, returning WINED3DERR_INVALIDCALL\n", This, pSourceTexture, pDestinationTexture);
+        hr = WINED3DERR_INVALIDCALL;
+    }
+
+    if (WINED3D_OK == hr) {
+
+        /* Make sure that the destination texture is loaded */
+        IWineD3DBaseTexture_PreLoad(pDestinationTexture);
+
+        /* Update every surface level of the texture */
+        levels = IWineD3DBaseTexture_GetLevelCount(pDestinationTexture);
+
+        switch (sourceType) {
+        case WINED3DRTYPE_TEXTURE:
+            {
+                IWineD3DSurface *srcSurface;
+                IWineD3DSurface *destSurface;
+
+                for (i = 0 ; i < levels ; ++i) {
+                    IWineD3DTexture_GetSurfaceLevel((IWineD3DTexture *)pSourceTexture,      i, &srcSurface);
+                    IWineD3DTexture_GetSurfaceLevel((IWineD3DTexture *)pDestinationTexture, i, &destSurface);
+                    hr = IWineD3DDevice_UpdateSurface(iface, srcSurface, NULL, destSurface, NULL);
+                    IWineD3DSurface_Release(srcSurface);
+                    IWineD3DSurface_Release(destSurface);
+                    if (WINED3D_OK != hr) {
+                        WARN("(%p) : Call to update surface failed\n", This);
+                        return hr;
+                    }
+                }
+            }
+            break;
+        case WINED3DRTYPE_CUBETEXTURE:
+            {
+                IWineD3DSurface *srcSurface;
+                IWineD3DSurface *destSurface;
+                WINED3DCUBEMAP_FACES faceType;
+
+                for (i = 0 ; i < levels ; ++i) {
+                    /* Update each cube face */
+                    for (faceType = WINED3DCUBEMAP_FACE_POSITIVE_X; faceType <= WINED3DCUBEMAP_FACE_NEGATIVE_Z; ++faceType){
+                        hr = IWineD3DCubeTexture_GetCubeMapSurface((IWineD3DCubeTexture *)pSourceTexture,      faceType, i, &srcSurface);
+                        if (WINED3D_OK != hr) {
+                            FIXME("(%p) : Failed to get src cube surface facetype %d, level %d\n", This, faceType, i);
+                        } else {
+                            TRACE("Got srcSurface %p\n", srcSurface);
+                        }
+                        hr = IWineD3DCubeTexture_GetCubeMapSurface((IWineD3DCubeTexture *)pDestinationTexture, faceType, i, &destSurface);
+                        if (WINED3D_OK != hr) {
+                            FIXME("(%p) : Failed to get src cube surface facetype %d, level %d\n", This, faceType, i);
+                        } else {
+                            TRACE("Got desrSurface %p\n", destSurface);
+                        }
+                        hr = IWineD3DDevice_UpdateSurface(iface, srcSurface, NULL, destSurface, NULL);
+                        IWineD3DSurface_Release(srcSurface);
+                        IWineD3DSurface_Release(destSurface);
+                        if (WINED3D_OK != hr) {
+                            WARN("(%p) : Call to update surface failed\n", This);
+                            return hr;
+                        }
+                    }
+                }
+            }
+            break;
+
+        case WINED3DRTYPE_VOLUMETEXTURE:
+            {
+                IWineD3DVolume  *srcVolume  = NULL;
+                IWineD3DVolume  *destVolume = NULL;
+
+                for (i = 0 ; i < levels ; ++i) {
+                    IWineD3DVolumeTexture_GetVolumeLevel((IWineD3DVolumeTexture *)pSourceTexture,      i, &srcVolume);
+                    IWineD3DVolumeTexture_GetVolumeLevel((IWineD3DVolumeTexture *)pDestinationTexture, i, &destVolume);
+                    hr =  IWineD3DDeviceImpl_UpdateVolume(iface, srcVolume, destVolume);
+                    IWineD3DVolume_Release(srcVolume);
+                    IWineD3DVolume_Release(destVolume);
+                    if (WINED3D_OK != hr) {
+                        WARN("(%p) : Call to update volume failed\n", This);
+                        return hr;
+                    }
+                }
+            }
+            break;
+
+        default:
+            FIXME("(%p) : Unsupported source and destination type\n", This);
+            hr = WINED3DERR_INVALIDCALL;
+        }
+    }
+
+    return hr;
+}
+
+static HRESULT  WINAPI  IWineD3DDeviceImpl_GetFrontBufferData(IWineD3DDevice *iface,UINT iSwapChain, IWineD3DSurface *pDestSurface) {
+    IWineD3DSwapChain *swapChain;
+    HRESULT hr;
+    hr = IWineD3DDeviceImpl_GetSwapChain(iface, iSwapChain, &swapChain);
+    if(hr == WINED3D_OK) {
+        hr = IWineD3DSwapChain_GetFrontBufferData(swapChain, pDestSurface);
+                IWineD3DSwapChain_Release(swapChain);
+    }
+    return hr;
+}
+
+static HRESULT  WINAPI  IWineD3DDeviceImpl_ValidateDevice(IWineD3DDevice *iface, DWORD* pNumPasses) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    IWineD3DBaseTextureImpl *texture;
+    const struct GlPixelFormatDesc *gl_info;
+    DWORD i;
+
+    TRACE("(%p) : %p\n", This, pNumPasses);
+
+    for(i = 0; i < MAX_COMBINED_SAMPLERS; i++) {
+        if(This->stateBlock->samplerState[i][WINED3DSAMP_MINFILTER] == WINED3DTEXF_NONE) {
+            WARN("Sampler state %u has minfilter D3DTEXF_NONE, returning D3DERR_UNSUPPORTEDTEXTUREFILTER\n", i);
+            return WINED3DERR_UNSUPPORTEDTEXTUREFILTER;
+        }
+        if(This->stateBlock->samplerState[i][WINED3DSAMP_MAGFILTER] == WINED3DTEXF_NONE) {
+            WARN("Sampler state %u has magfilter D3DTEXF_NONE, returning D3DERR_UNSUPPORTEDTEXTUREFILTER\n", i);
+            return WINED3DERR_UNSUPPORTEDTEXTUREFILTER;
+        }
+
+        texture = (IWineD3DBaseTextureImpl *) This->stateBlock->textures[i];
+        if(!texture) continue;
+        getFormatDescEntry(texture->resource.format, &GLINFO_LOCATION, &gl_info);
+        if(gl_info->Flags & WINED3DFMT_FLAG_FILTERING) continue;
+
+        if(This->stateBlock->samplerState[i][WINED3DSAMP_MAGFILTER] != WINED3DTEXF_POINT) {
+            WARN("Non-filterable texture and mag filter enabled on samper %u, returning E_FAIL\n", i);
+            return E_FAIL;
+        }
+        if(This->stateBlock->samplerState[i][WINED3DSAMP_MINFILTER] != WINED3DTEXF_POINT) {
+            WARN("Non-filterable texture and min filter enabled on samper %u, returning E_FAIL\n", i);
+            return E_FAIL;
+        }
+        if(This->stateBlock->samplerState[i][WINED3DSAMP_MIPFILTER] != WINED3DTEXF_NONE &&
+           This->stateBlock->samplerState[i][WINED3DSAMP_MIPFILTER] != WINED3DTEXF_POINT /* sic! */) {
+            WARN("Non-filterable texture and mip filter enabled on samper %u, returning E_FAIL\n", i);
+            return E_FAIL;
+        }
+    }
+
+    /* return a sensible default */
+    *pNumPasses = 1;
+
+    TRACE("returning D3D_OK\n");
+    return WINED3D_OK;
+}
+
+static void dirtify_p8_texture_samplers(IWineD3DDeviceImpl *device)
+{
+    int i;
+
+    for (i = 0; i < MAX_COMBINED_SAMPLERS; i++) {
+            IWineD3DBaseTextureImpl *texture = (IWineD3DBaseTextureImpl*)device->stateBlock->textures[i];
+            if (texture && (texture->resource.format == WINED3DFMT_P8 || texture->resource.format == WINED3DFMT_A8P8)) {
+                IWineD3DDeviceImpl_MarkStateDirty(device, STATE_SAMPLER(i));
+            }
+        }
+}
+
+static HRESULT  WINAPI  IWineD3DDeviceImpl_SetPaletteEntries(IWineD3DDevice *iface, UINT PaletteNumber, CONST PALETTEENTRY* pEntries) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    int j;
+    UINT NewSize;
+    PALETTEENTRY **palettes;
+
+    TRACE("(%p) : PaletteNumber %u\n", This, PaletteNumber);
+
+    if (PaletteNumber >= MAX_PALETTES) {
+        ERR("(%p) : (%u) Out of range 0-%u, returning Invalid Call\n", This, PaletteNumber, MAX_PALETTES);
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    if (PaletteNumber >= This->NumberOfPalettes) {
+        NewSize = This->NumberOfPalettes;
+        do {
+           NewSize *= 2;
+        } while(PaletteNumber >= NewSize);
+        palettes = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, This->palettes, sizeof(PALETTEENTRY*) * NewSize);
+        if (!palettes) {
+            ERR("Out of memory!\n");
+            return E_OUTOFMEMORY;
+        }
+        This->palettes = palettes;
+        This->NumberOfPalettes = NewSize;
+    }
+
+    if (!This->palettes[PaletteNumber]) {
+        This->palettes[PaletteNumber] = HeapAlloc(GetProcessHeap(),  0, sizeof(PALETTEENTRY) * 256);
+        if (!This->palettes[PaletteNumber]) {
+            ERR("Out of memory!\n");
+            return E_OUTOFMEMORY;
+        }
+    }
+
+    for (j = 0; j < 256; ++j) {
+        This->palettes[PaletteNumber][j].peRed   = pEntries[j].peRed;
+        This->palettes[PaletteNumber][j].peGreen = pEntries[j].peGreen;
+        This->palettes[PaletteNumber][j].peBlue  = pEntries[j].peBlue;
+        This->palettes[PaletteNumber][j].peFlags = pEntries[j].peFlags;
+    }
+    if (PaletteNumber == This->currentPalette) dirtify_p8_texture_samplers(This);
+    TRACE("(%p) : returning\n", This);
+    return WINED3D_OK;
+}
+
+static HRESULT  WINAPI  IWineD3DDeviceImpl_GetPaletteEntries(IWineD3DDevice *iface, UINT PaletteNumber, PALETTEENTRY* pEntries) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    int j;
+    TRACE("(%p) : PaletteNumber %u\n", This, PaletteNumber);
+    if (PaletteNumber >= This->NumberOfPalettes || !This->palettes[PaletteNumber]) {
+        /* What happens in such situation isn't documented; Native seems to silently abort
+           on such conditions. Return Invalid Call. */
+        ERR("(%p) : (%u) Nonexistent palette. NumberOfPalettes %u\n", This, PaletteNumber, This->NumberOfPalettes);
+        return WINED3DERR_INVALIDCALL;
+    }
+    for (j = 0; j < 256; ++j) {
+        pEntries[j].peRed   = This->palettes[PaletteNumber][j].peRed;
+        pEntries[j].peGreen = This->palettes[PaletteNumber][j].peGreen;
+        pEntries[j].peBlue  = This->palettes[PaletteNumber][j].peBlue;
+        pEntries[j].peFlags = This->palettes[PaletteNumber][j].peFlags;
+    }
+    TRACE("(%p) : returning\n", This);
+    return WINED3D_OK;
+}
+
+static HRESULT  WINAPI  IWineD3DDeviceImpl_SetCurrentTexturePalette(IWineD3DDevice *iface, UINT PaletteNumber) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    TRACE("(%p) : PaletteNumber %u\n", This, PaletteNumber);
+    /* Native appears to silently abort on attempt to make an uninitialized palette current and render.
+       (tested with reference rasterizer). Return Invalid Call. */
+    if (PaletteNumber >= This->NumberOfPalettes || !This->palettes[PaletteNumber]) {
+        ERR("(%p) : (%u) Nonexistent palette. NumberOfPalettes %u\n", This, PaletteNumber, This->NumberOfPalettes);
+        return WINED3DERR_INVALIDCALL;
+    }
+    /*TODO: stateblocks */
+    if (This->currentPalette != PaletteNumber) {
+        This->currentPalette = PaletteNumber;
+        dirtify_p8_texture_samplers(This);
+    }
+    TRACE("(%p) : returning\n", This);
+    return WINED3D_OK;
+}
+
+static HRESULT  WINAPI  IWineD3DDeviceImpl_GetCurrentTexturePalette(IWineD3DDevice *iface, UINT* PaletteNumber) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    if (PaletteNumber == NULL) {
+        WARN("(%p) : returning Invalid Call\n", This);
+        return WINED3DERR_INVALIDCALL;
+    }
+    /*TODO: stateblocks */
+    *PaletteNumber = This->currentPalette;
+    TRACE("(%p) : returning  %u\n", This, *PaletteNumber);
+    return WINED3D_OK;
+}
+
+static HRESULT  WINAPI  IWineD3DDeviceImpl_SetSoftwareVertexProcessing(IWineD3DDevice *iface, BOOL bSoftware) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    static BOOL warned;
+    if (!warned)
+    {
+        FIXME("(%p) : stub\n", This);
+        warned = TRUE;
+    }
+
+    This->softwareVertexProcessing = bSoftware;
+    return WINED3D_OK;
+}
+
+
+static BOOL     WINAPI  IWineD3DDeviceImpl_GetSoftwareVertexProcessing(IWineD3DDevice *iface) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    static BOOL warned;
+    if (!warned)
+    {
+        FIXME("(%p) : stub\n", This);
+        warned = TRUE;
+    }
+    return This->softwareVertexProcessing;
+}
+
+
+static HRESULT  WINAPI  IWineD3DDeviceImpl_GetRasterStatus(IWineD3DDevice *iface, UINT iSwapChain, WINED3DRASTER_STATUS* pRasterStatus) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    IWineD3DSwapChain *swapChain;
+    HRESULT hr;
+
+    TRACE("(%p) :  SwapChain %d returning %p\n", This, iSwapChain, pRasterStatus);
+
+    hr = IWineD3DDeviceImpl_GetSwapChain(iface, iSwapChain, &swapChain);
+    if(hr == WINED3D_OK){
+        hr = IWineD3DSwapChain_GetRasterStatus(swapChain, pRasterStatus);
+        IWineD3DSwapChain_Release(swapChain);
+    }else{
+        FIXME("(%p) IWineD3DSwapChain_GetRasterStatus returned in error\n", This);
+    }
+    return hr;
+}
+
+
+static HRESULT  WINAPI  IWineD3DDeviceImpl_SetNPatchMode(IWineD3DDevice *iface, float nSegments) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    static BOOL warned;
+    if(nSegments != 0.0f) {
+        if (!warned)
+        {
+            FIXME("(%p) : stub nSegments(%f)\n", This, nSegments);
+            warned = TRUE;
+        }
+    }
+    return WINED3D_OK;
+}
+
+static float    WINAPI  IWineD3DDeviceImpl_GetNPatchMode(IWineD3DDevice *iface) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    static BOOL warned;
+    if (!warned)
+    {
+        FIXME("(%p) : stub returning(%f)\n", This, 0.0f);
+        warned = TRUE;
+    }
+    return 0.0f;
+}
+
+static HRESULT  WINAPI  IWineD3DDeviceImpl_UpdateSurface(IWineD3DDevice *iface, IWineD3DSurface *pSourceSurface, CONST RECT* pSourceRect, IWineD3DSurface *pDestinationSurface, CONST POINT* pDestPoint) {
+    IWineD3DDeviceImpl  *This         = (IWineD3DDeviceImpl *) iface;
+    /** TODO: remove casts to IWineD3DSurfaceImpl
+     *       NOTE: move code to surface to accomplish this
+      ****************************************/
+    IWineD3DSurfaceImpl *pSrcSurface  = (IWineD3DSurfaceImpl *)pSourceSurface;
+    int srcWidth, srcHeight;
+    unsigned int  srcSurfaceWidth, srcSurfaceHeight, destSurfaceWidth, destSurfaceHeight;
+    WINED3DFORMAT destFormat, srcFormat;
+    UINT          destSize;
+    int srcLeft, destLeft, destTop;
+    WINED3DPOOL       srcPool, destPool;
+    int offset    = 0;
+    int rowoffset = 0; /* how many bytes to add onto the end of a row to wraparound to the beginning of the next */
+    glDescriptor *glDescription = NULL;
+    GLenum dummy;
+    int sampler;
+    int bpp;
+    CONVERT_TYPES convert = NO_CONVERSION;
+
+    WINED3DSURFACE_DESC  winedesc;
+
+    TRACE("(%p) : Source (%p)  Rect (%p) Destination (%p) Point(%p)\n", This, pSourceSurface, pSourceRect, pDestinationSurface, pDestPoint);
+    memset(&winedesc, 0, sizeof(winedesc));
+    winedesc.Width  = &srcSurfaceWidth;
+    winedesc.Height = &srcSurfaceHeight;
+    winedesc.Pool   = &srcPool;
+    winedesc.Format = &srcFormat;
+
+    IWineD3DSurface_GetDesc(pSourceSurface, &winedesc);
+
+    winedesc.Width  = &destSurfaceWidth;
+    winedesc.Height = &destSurfaceHeight;
+    winedesc.Pool   = &destPool;
+    winedesc.Format = &destFormat;
+    winedesc.Size   = &destSize;
+
+    IWineD3DSurface_GetDesc(pDestinationSurface, &winedesc);
+
+    if(srcPool != WINED3DPOOL_SYSTEMMEM  || destPool != WINED3DPOOL_DEFAULT){
+        WARN("source %p must be SYSTEMMEM and dest %p must be DEFAULT, returning WINED3DERR_INVALIDCALL\n", pSourceSurface, pDestinationSurface);
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    /* This call loads the opengl surface directly, instead of copying the surface to the
+     * destination's sysmem copy. If surface conversion is needed, use BltFast instead to
+     * copy in sysmem and use regular surface loading.
+     */
+    d3dfmt_get_conv((IWineD3DSurfaceImpl *) pDestinationSurface, FALSE, TRUE,
+                    &dummy, &dummy, &dummy, &convert, &bpp, FALSE);
+    if(convert != NO_CONVERSION) {
+        return IWineD3DSurface_BltFast(pDestinationSurface,
+                                        pDestPoint  ? pDestPoint->x : 0,
+                                        pDestPoint  ? pDestPoint->y : 0,
+                                        pSourceSurface, pSourceRect, 0);
+    }
+
+    if (destFormat == WINED3DFMT_UNKNOWN) {
+        TRACE("(%p) : Converting destination surface from WINED3DFMT_UNKNOWN to the source format\n", This);
+        IWineD3DSurface_SetFormat(pDestinationSurface, srcFormat);
+
+        /* Get the update surface description */
+        IWineD3DSurface_GetDesc(pDestinationSurface, &winedesc);
+    }
+
+    ActivateContext(This, This->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+
+    if (GL_SUPPORT(ARB_MULTITEXTURE)) {
+        ENTER_GL();
+        GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB));
+        checkGLcall("glActiveTextureARB");
+        LEAVE_GL();
+    }
+
+    /* Make sure the surface is loaded and up to date */
+    IWineD3DSurface_PreLoad(pDestinationSurface);
+    IWineD3DSurface_BindTexture(pDestinationSurface);
+
+    IWineD3DSurface_GetGlDesc(pDestinationSurface, &glDescription);
+
+    /* this needs to be done in lines if the sourceRect != the sourceWidth */
+    srcWidth   = pSourceRect ? pSourceRect->right - pSourceRect->left   : srcSurfaceWidth;
+    srcHeight  = pSourceRect ? pSourceRect->bottom - pSourceRect->top   : srcSurfaceHeight;
+    srcLeft    = pSourceRect ? pSourceRect->left : 0;
+    destLeft   = pDestPoint  ? pDestPoint->x : 0;
+    destTop    = pDestPoint  ? pDestPoint->y : 0;
+
+
+    /* This function doesn't support compressed textures
+    the pitch is just bytesPerPixel * width */
+    if(srcWidth != srcSurfaceWidth  || srcLeft ){
+        rowoffset = srcSurfaceWidth * pSrcSurface->bytesPerPixel;
+        offset   += srcLeft * pSrcSurface->bytesPerPixel;
+        /* TODO: do we ever get 3bpp?, would a shift and an add be quicker than a mul (well maybe a cycle or two) */
+    }
+    /* TODO DXT formats */
+
+    if(pSourceRect != NULL && pSourceRect->top != 0){
+       offset +=  pSourceRect->top * srcSurfaceWidth * pSrcSurface->bytesPerPixel;
+    }
+    TRACE("(%p) glTexSubImage2D, level %d, left %d, top %d, width %d, height %d, fmt %#x, type %#x, memory %p+%#x\n",
+            This, glDescription->level, destLeft, destTop, srcWidth, srcHeight, glDescription->glFormat,
+            glDescription->glType, IWineD3DSurface_GetData(pSourceSurface), offset);
+
+    /* Sanity check */
+    if (IWineD3DSurface_GetData(pSourceSurface) == NULL) {
+
+        /* need to lock the surface to get the data */
+        FIXME("Surfaces has no allocated memory, but should be an in memory only surface\n");
+    }
+
+    ENTER_GL();
+
+    /* TODO: Cube and volume support */
+    if(rowoffset != 0){
+        /* not a whole row so we have to do it a line at a time */
+        int j;
+
+        /* hopefully using pointer addition will be quicker than using a point + j * rowoffset */
+        const unsigned char* data =((const unsigned char *)IWineD3DSurface_GetData(pSourceSurface)) + offset;
+
+        for(j = destTop ; j < (srcHeight + destTop) ; j++){
+
+                glTexSubImage2D(glDescription->target
+                    ,glDescription->level
+                    ,destLeft
+                    ,j
+                    ,srcWidth
+                    ,1
+                    ,glDescription->glFormat
+                    ,glDescription->glType
+                    ,data /* could be quicker using */
+                );
+            data += rowoffset;
+        }
+
+    } else { /* Full width, so just write out the whole texture */
+        const unsigned char* data = ((const unsigned char *)IWineD3DSurface_GetData(pSourceSurface)) + offset;
+
+        if (WINED3DFMT_DXT1 == destFormat ||
+            WINED3DFMT_DXT2 == destFormat ||
+            WINED3DFMT_DXT3 == destFormat ||
+            WINED3DFMT_DXT4 == destFormat ||
+            WINED3DFMT_DXT5 == destFormat) {
+            if (GL_SUPPORT(EXT_TEXTURE_COMPRESSION_S3TC)) {
+                if (destSurfaceHeight != srcHeight || destSurfaceWidth != srcWidth) {
+                    /* FIXME: The easy way to do this is to lock the destination, and copy the bits across */
+                    FIXME("Updating part of a compressed texture is not supported at the moment\n");
+                } if (destFormat != srcFormat) {
+                    FIXME("Updating mixed format compressed texture is not curretly support\n");
+                } else {
+                    GL_EXTCALL(glCompressedTexImage2DARB(glDescription->target, glDescription->level,
+                            glDescription->glFormatInternal, srcWidth, srcHeight, 0, destSize, data));
+                }
+            } else {
+                FIXME("Attempting to update a DXT compressed texture without hardware support\n");
+            }
+
+
+        } else {
+            glTexSubImage2D(glDescription->target, glDescription->level, destLeft, destTop,
+                    srcWidth, srcHeight, glDescription->glFormat, glDescription->glType, data);
+        }
+     }
+    checkGLcall("glTexSubImage2D");
+
+    LEAVE_GL();
+
+    IWineD3DSurface_ModifyLocation(pDestinationSurface, SFLAG_INTEXTURE, TRUE);
+    sampler = This->rev_tex_unit_map[0];
+    if (sampler != -1) {
+        IWineD3DDeviceImpl_MarkStateDirty(This, STATE_SAMPLER(sampler));
+    }
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_DrawRectPatch(IWineD3DDevice *iface, UINT Handle, CONST float* pNumSegs, CONST WINED3DRECTPATCH_INFO* pRectPatchInfo) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    struct WineD3DRectPatch *patch;
+    unsigned int i;
+    struct list *e;
+    BOOL found;
+    TRACE("(%p) Handle(%d) noSegs(%p) rectpatch(%p)\n", This, Handle, pNumSegs, pRectPatchInfo);
+
+    if(!(Handle || pRectPatchInfo)) {
+        /* TODO: Write a test for the return value, thus the FIXME */
+        FIXME("Both Handle and pRectPatchInfo are NULL\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    if(Handle) {
+        i = PATCHMAP_HASHFUNC(Handle);
+        found = FALSE;
+        LIST_FOR_EACH(e, &This->patches[i]) {
+            patch = LIST_ENTRY(e, struct WineD3DRectPatch, entry);
+            if(patch->Handle == Handle) {
+                found = TRUE;
+                break;
+            }
+        }
+
+        if(!found) {
+            TRACE("Patch does not exist. Creating a new one\n");
+            patch = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*patch));
+            patch->Handle = Handle;
+            list_add_head(&This->patches[i], &patch->entry);
+        } else {
+            TRACE("Found existing patch %p\n", patch);
+        }
+    } else {
+        /* Since opengl does not load tesselated vertex attributes into numbered vertex
+         * attributes we have to tesselate, read back, and draw. This needs a patch
+         * management structure instance. Create one.
+         *
+         * A possible improvement is to check if a vertex shader is used, and if not directly
+         * draw the patch.
+         */
+        FIXME("Drawing an uncached patch. This is slow\n");
+        patch = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*patch));
+    }
+
+    if(pNumSegs[0] != patch->numSegs[0] || pNumSegs[1] != patch->numSegs[1] ||
+       pNumSegs[2] != patch->numSegs[2] || pNumSegs[3] != patch->numSegs[3] ||
+       (pRectPatchInfo && memcmp(pRectPatchInfo, &patch->RectPatchInfo, sizeof(*pRectPatchInfo)) != 0) ) {
+        HRESULT hr;
+        TRACE("Tesselation density or patch info changed, retesselating\n");
+
+        if(pRectPatchInfo) {
+            patch->RectPatchInfo = *pRectPatchInfo;
+        }
+        patch->numSegs[0] = pNumSegs[0];
+        patch->numSegs[1] = pNumSegs[1];
+        patch->numSegs[2] = pNumSegs[2];
+        patch->numSegs[3] = pNumSegs[3];
+
+        hr = tesselate_rectpatch(This, patch);
+        if(FAILED(hr)) {
+            WARN("Patch tesselation failed\n");
+
+            /* Do not release the handle to store the params of the patch */
+            if(!Handle) {
+                HeapFree(GetProcessHeap(), 0, patch);
+            }
+            return hr;
+        }
+    }
+
+    This->currentPatch = patch;
+    IWineD3DDevice_DrawPrimitiveStrided(iface, WINED3DPT_TRIANGLELIST, patch->numSegs[0] * patch->numSegs[1] * 2, &patch->strided);
+    This->currentPatch = NULL;
+
+    /* Destroy uncached patches */
+    if(!Handle) {
+        HeapFree(GetProcessHeap(), 0, patch->mem);
+        HeapFree(GetProcessHeap(), 0, patch);
+    }
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_DrawTriPatch(IWineD3DDevice *iface, UINT Handle, CONST float* pNumSegs, CONST WINED3DTRIPATCH_INFO* pTriPatchInfo) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    TRACE("(%p) Handle(%d) noSegs(%p) tripatch(%p)\n", This, Handle, pNumSegs, pTriPatchInfo);
+    FIXME("(%p) : Stub\n", This);
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_DeletePatch(IWineD3DDevice *iface, UINT Handle) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    int i;
+    struct WineD3DRectPatch *patch;
+    struct list *e;
+    TRACE("(%p) Handle(%d)\n", This, Handle);
+
+    i = PATCHMAP_HASHFUNC(Handle);
+    LIST_FOR_EACH(e, &This->patches[i]) {
+        patch = LIST_ENTRY(e, struct WineD3DRectPatch, entry);
+        if(patch->Handle == Handle) {
+            TRACE("Deleting patch %p\n", patch);
+            list_remove(&patch->entry);
+            HeapFree(GetProcessHeap(), 0, patch->mem);
+            HeapFree(GetProcessHeap(), 0, patch);
+            return WINED3D_OK;
+        }
+    }
+
+    /* TODO: Write a test for the return value */
+    FIXME("Attempt to destroy nonexistent patch\n");
+    return WINED3DERR_INVALIDCALL;
+}
+
+static IWineD3DSwapChain *get_swapchain(IWineD3DSurface *target) {
+    HRESULT hr;
+    IWineD3DSwapChain *swapchain;
+
+    hr = IWineD3DSurface_GetContainer(target, &IID_IWineD3DSwapChain, (void **)&swapchain);
+    if (SUCCEEDED(hr)) {
+        IWineD3DSwapChain_Release((IUnknown *)swapchain);
+        return swapchain;
+    }
+
+    return NULL;
+}
+
+static void color_fill_fbo(IWineD3DDevice *iface, IWineD3DSurface *surface, CONST WINED3DRECT *rect, WINED3DCOLOR color) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    IWineD3DSwapChain *swapchain;
+
+    swapchain = get_swapchain(surface);
+    if (swapchain) {
+        GLenum buffer;
+
+        TRACE("Surface %p is onscreen\n", surface);
+
+        ActivateContext(This, surface, CTXUSAGE_RESOURCELOAD);
+        ENTER_GL();
+        GL_EXTCALL(glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0));
+        buffer = surface_get_gl_buffer(surface, swapchain);
+        glDrawBuffer(buffer);
+        checkGLcall("glDrawBuffer()");
+    } else {
+        TRACE("Surface %p is offscreen\n", surface);
+
+        ActivateContext(This, This->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+        ENTER_GL();
+        context_bind_fbo(iface, GL_FRAMEBUFFER_EXT, &This->activeContext->dst_fbo);
+        context_attach_surface_fbo(This, GL_FRAMEBUFFER_EXT, 0, surface);
+        GL_EXTCALL(glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, 0));
+        checkGLcall("glFramebufferRenderbufferEXT");
+    }
+
+    if (rect) {
+        glEnable(GL_SCISSOR_TEST);
+        if(!swapchain) {
+            glScissor(rect->x1, rect->y1, rect->x2 - rect->x1, rect->y2 - rect->y1);
+        } else {
+            glScissor(rect->x1, ((IWineD3DSurfaceImpl *)surface)->currentDesc.Height - rect->y2,
+                    rect->x2 - rect->x1, rect->y2 - rect->y1);
+        }
+        checkGLcall("glScissor");
+        IWineD3DDeviceImpl_MarkStateDirty(This, STATE_SCISSORRECT);
+    } else {
+        glDisable(GL_SCISSOR_TEST);
+    }
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_RENDER(WINED3DRS_SCISSORTESTENABLE));
+
+    glDisable(GL_BLEND);
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_RENDER(WINED3DRS_ALPHABLENDENABLE));
+
+    glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_RENDER(WINED3DRS_COLORWRITEENABLE));
+
+    glClearColor(D3DCOLOR_R(color), D3DCOLOR_G(color), D3DCOLOR_B(color), D3DCOLOR_A(color));
+    glClear(GL_COLOR_BUFFER_BIT);
+    checkGLcall("glClear");
+
+    if (This->activeContext->current_fbo) {
+        context_bind_fbo(iface, GL_FRAMEBUFFER_EXT, &This->activeContext->current_fbo->id);
+    } else {
+        GL_EXTCALL(glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0));
+        checkGLcall("glBindFramebuffer()");
+    }
+
+    if (swapchain && surface == ((IWineD3DSwapChainImpl *)swapchain)->frontBuffer
+            && ((IWineD3DSwapChainImpl *)swapchain)->backBuffer) {
+        glDrawBuffer(GL_BACK);
+        checkGLcall("glDrawBuffer()");
+    }
+
+    LEAVE_GL();
+}
+
+static inline DWORD argb_to_fmt(DWORD color, WINED3DFORMAT destfmt) {
+    unsigned int r, g, b, a;
+    DWORD ret;
+
+    if(destfmt == WINED3DFMT_A8R8G8B8 || destfmt == WINED3DFMT_X8R8G8B8 ||
+       destfmt == WINED3DFMT_R8G8B8)
+        return color;
+
+    TRACE("Converting color %08x to format %s\n", color, debug_d3dformat(destfmt));
+
+    a = (color & 0xff000000) >> 24;
+    r = (color & 0x00ff0000) >> 16;
+    g = (color & 0x0000ff00) >>  8;
+    b = (color & 0x000000ff) >>  0;
+
+    switch(destfmt)
+    {
+        case WINED3DFMT_R5G6B5:
+            if(r == 0xff && g == 0xff && b == 0xff) return 0xffff;
+            r = (r * 32) / 256;
+            g = (g * 64) / 256;
+            b = (b * 32) / 256;
+            ret  = r << 11;
+            ret |= g << 5;
+            ret |= b;
+            TRACE("Returning %08x\n", ret);
+            return ret;
+
+        case WINED3DFMT_X1R5G5B5:
+        case WINED3DFMT_A1R5G5B5:
+            a = (a *  2) / 256;
+            r = (r * 32) / 256;
+            g = (g * 32) / 256;
+            b = (b * 32) / 256;
+            ret  = a << 15;
+            ret |= r << 10;
+            ret |= g <<  5;
+            ret |= b <<  0;
+            TRACE("Returning %08x\n", ret);
+            return ret;
+
+        case WINED3DFMT_A8:
+            TRACE("Returning %08x\n", a);
+            return a;
+
+        case WINED3DFMT_X4R4G4B4:
+        case WINED3DFMT_A4R4G4B4:
+            a = (a * 16) / 256;
+            r = (r * 16) / 256;
+            g = (g * 16) / 256;
+            b = (b * 16) / 256;
+            ret  = a << 12;
+            ret |= r <<  8;
+            ret |= g <<  4;
+            ret |= b <<  0;
+            TRACE("Returning %08x\n", ret);
+            return ret;
+
+        case WINED3DFMT_R3G3B2:
+            r = (r * 8) / 256;
+            g = (g * 8) / 256;
+            b = (b * 4) / 256;
+            ret  = r <<  5;
+            ret |= g <<  2;
+            ret |= b <<  0;
+            TRACE("Returning %08x\n", ret);
+            return ret;
+
+        case WINED3DFMT_X8B8G8R8:
+        case WINED3DFMT_A8B8G8R8:
+            ret  = a << 24;
+            ret |= b << 16;
+            ret |= g <<  8;
+            ret |= r <<  0;
+            TRACE("Returning %08x\n", ret);
+            return ret;
+
+        case WINED3DFMT_A2R10G10B10:
+            a = (a *    4) / 256;
+            r = (r * 1024) / 256;
+            g = (g * 1024) / 256;
+            b = (b * 1024) / 256;
+            ret  = a << 30;
+            ret |= r << 20;
+            ret |= g << 10;
+            ret |= b <<  0;
+            TRACE("Returning %08x\n", ret);
+            return ret;
+
+        case WINED3DFMT_A2B10G10R10:
+            a = (a *    4) / 256;
+            r = (r * 1024) / 256;
+            g = (g * 1024) / 256;
+            b = (b * 1024) / 256;
+            ret  = a << 30;
+            ret |= b << 20;
+            ret |= g << 10;
+            ret |= r <<  0;
+            TRACE("Returning %08x\n", ret);
+            return ret;
+
+        default:
+            FIXME("Add a COLORFILL conversion for format %s\n", debug_d3dformat(destfmt));
+            return 0;
+    }
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_ColorFill(IWineD3DDevice *iface, IWineD3DSurface *pSurface, CONST WINED3DRECT* pRect, WINED3DCOLOR color) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    IWineD3DSurfaceImpl *surface = (IWineD3DSurfaceImpl *) pSurface;
+    WINEDDBLTFX BltFx;
+    TRACE("(%p) Colour fill Surface: %p rect: %p color: 0x%08x\n", This, pSurface, pRect, color);
+
+    if (surface->resource.pool != WINED3DPOOL_DEFAULT && surface->resource.pool != WINED3DPOOL_SYSTEMMEM) {
+        FIXME("call to colorfill with non WINED3DPOOL_DEFAULT or WINED3DPOOL_SYSTEMMEM surface\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    if (wined3d_settings.offscreen_rendering_mode == ORM_FBO) {
+        color_fill_fbo(iface, pSurface, pRect, color);
+        return WINED3D_OK;
+    } else {
+        /* Just forward this to the DirectDraw blitting engine */
+        memset(&BltFx, 0, sizeof(BltFx));
+        BltFx.dwSize = sizeof(BltFx);
+        BltFx.u5.dwFillColor = argb_to_fmt(color, surface->resource.format);
+        return IWineD3DSurface_Blt(pSurface, (const RECT *)pRect, NULL, NULL,
+                WINEDDBLT_COLORFILL, &BltFx, WINED3DTEXF_NONE);
+    }
+}
+
+/* rendertarget and depth stencil functions */
+static HRESULT  WINAPI  IWineD3DDeviceImpl_GetRenderTarget(IWineD3DDevice* iface,DWORD RenderTargetIndex, IWineD3DSurface **ppRenderTarget) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+
+    if (RenderTargetIndex >= GL_LIMITS(buffers)) {
+        ERR("(%p) : Only %d render targets are supported.\n", This, GL_LIMITS(buffers));
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    *ppRenderTarget = This->render_targets[RenderTargetIndex];
+    TRACE("(%p) : RenderTarget %d Index returning %p\n", This, RenderTargetIndex, *ppRenderTarget);
+    /* Note inc ref on returned surface */
+    if(*ppRenderTarget != NULL)
+        IWineD3DSurface_AddRef(*ppRenderTarget);
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_SetFrontBackBuffers(IWineD3DDevice *iface, IWineD3DSurface *Front, IWineD3DSurface *Back) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    IWineD3DSurfaceImpl *FrontImpl = (IWineD3DSurfaceImpl *) Front;
+    IWineD3DSurfaceImpl *BackImpl = (IWineD3DSurfaceImpl *) Back;
+    IWineD3DSwapChainImpl *Swapchain;
+    HRESULT hr;
+
+    TRACE("(%p)->(%p,%p)\n", This, FrontImpl, BackImpl);
+
+    hr = IWineD3DDevice_GetSwapChain(iface, 0, (IWineD3DSwapChain **) &Swapchain);
+    if(hr != WINED3D_OK) {
+        ERR("Can't get the swapchain\n");
+        return hr;
+    }
+
+    /* Make sure to release the swapchain */
+    IWineD3DSwapChain_Release((IWineD3DSwapChain *) Swapchain);
+
+    if(FrontImpl && !(FrontImpl->resource.usage & WINED3DUSAGE_RENDERTARGET) ) {
+        ERR("Trying to set a front buffer which doesn't have WINED3DUSAGE_RENDERTARGET usage\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+    else if(BackImpl && !(BackImpl->resource.usage & WINED3DUSAGE_RENDERTARGET)) {
+        ERR("Trying to set a back buffer which doesn't have WINED3DUSAGE_RENDERTARGET usage\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    if(Swapchain->frontBuffer != Front) {
+        TRACE("Changing the front buffer from %p to %p\n", Swapchain->frontBuffer, Front);
+
+        if(Swapchain->frontBuffer)
+            IWineD3DSurface_SetContainer(Swapchain->frontBuffer, NULL);
+        Swapchain->frontBuffer = Front;
+
+        if(Swapchain->frontBuffer) {
+            IWineD3DSurface_SetContainer(Swapchain->frontBuffer, (IWineD3DBase *) Swapchain);
+        }
+    }
+
+    if(Back && !Swapchain->backBuffer) {
+        /* We need memory for the back buffer array - only one back buffer this way */
+        Swapchain->backBuffer = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IWineD3DSurface *));
+        if(!Swapchain->backBuffer) {
+            ERR("Out of memory\n");
+            return E_OUTOFMEMORY;
+        }
+    }
+
+    if(Swapchain->backBuffer[0] != Back) {
+        TRACE("Changing the back buffer from %p to %p\n", Swapchain->backBuffer, Back);
+
+        /* What to do about the context here in the case of multithreading? Not sure.
+         * This function is called by IDirect3D7::CreateDevice so in theory its initialization code
+         */
+        ENTER_GL();
+        if(!Swapchain->backBuffer[0]) {
+            /* GL was told to draw to the front buffer at creation,
+             * undo that
+             */
+            glDrawBuffer(GL_BACK);
+            checkGLcall("glDrawBuffer(GL_BACK)");
+            /* Set the backbuffer count to 1 because other code uses it to fing the back buffers */
+            Swapchain->presentParms.BackBufferCount = 1;
+        } else if (!Back) {
+            /* That makes problems - disable for now */
+            /* glDrawBuffer(GL_FRONT); */
+            checkGLcall("glDrawBuffer(GL_FRONT)");
+            /* We have lost our back buffer, set this to 0 to avoid confusing other code */
+            Swapchain->presentParms.BackBufferCount = 0;
+        }
+        LEAVE_GL();
+
+        if(Swapchain->backBuffer[0])
+            IWineD3DSurface_SetContainer(Swapchain->backBuffer[0], NULL);
+        Swapchain->backBuffer[0] = Back;
+
+        if(Swapchain->backBuffer[0]) {
+            IWineD3DSurface_SetContainer(Swapchain->backBuffer[0], (IWineD3DBase *) Swapchain);
+        } else {
+            HeapFree(GetProcessHeap(), 0, Swapchain->backBuffer);
+            Swapchain->backBuffer = NULL;
+        }
+
+    }
+
+    return WINED3D_OK;
+}
+
+static HRESULT  WINAPI  IWineD3DDeviceImpl_GetDepthStencilSurface(IWineD3DDevice* iface, IWineD3DSurface **ppZStencilSurface) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    *ppZStencilSurface = This->stencilBufferTarget;
+    TRACE("(%p) : zStencilSurface  returning %p\n", This,  *ppZStencilSurface);
+
+    if(*ppZStencilSurface != NULL) {
+        /* Note inc ref on returned surface */
+        IWineD3DSurface_AddRef(*ppZStencilSurface);
+        return WINED3D_OK;
+    } else {
+        return WINED3DERR_NOTFOUND;
+    }
+}
+
+void stretch_rect_fbo(IWineD3DDevice *iface, IWineD3DSurface *src_surface, WINED3DRECT *src_rect,
+        IWineD3DSurface *dst_surface, WINED3DRECT *dst_rect, const WINED3DTEXTUREFILTERTYPE filter, BOOL flip)
+{
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    GLbitfield mask = GL_COLOR_BUFFER_BIT; /* TODO: Support blitting depth/stencil surfaces */
+    IWineD3DSwapChain *src_swapchain, *dst_swapchain;
+    GLenum gl_filter;
+    POINT offset = {0, 0};
+
+    TRACE("(%p) : src_surface %p, src_rect %p, dst_surface %p, dst_rect %p, filter %s (0x%08x), flip %u\n",
+            This, src_surface, src_rect, dst_surface, dst_rect, debug_d3dtexturefiltertype(filter), filter, flip);
+    TRACE("src_rect [%u, %u]->[%u, %u]\n", src_rect->x1, src_rect->y1, src_rect->x2, src_rect->y2);
+    TRACE("dst_rect [%u, %u]->[%u, %u]\n", dst_rect->x1, dst_rect->y1, dst_rect->x2, dst_rect->y2);
+
+    switch (filter) {
+        case WINED3DTEXF_LINEAR:
+            gl_filter = GL_LINEAR;
+            break;
+
+        default:
+            FIXME("Unsupported filter mode %s (0x%08x)\n", debug_d3dtexturefiltertype(filter), filter);
+        case WINED3DTEXF_NONE:
+        case WINED3DTEXF_POINT:
+            gl_filter = GL_NEAREST;
+            break;
+    }
+
+    /* Attach src surface to src fbo */
+    src_swapchain = get_swapchain(src_surface);
+    if (src_swapchain) {
+        GLenum buffer = surface_get_gl_buffer(src_surface, src_swapchain);
+
+        TRACE("Source surface %p is onscreen\n", src_surface);
+        ActivateContext(This, src_surface, CTXUSAGE_RESOURCELOAD);
+        /* Make sure the drawable is up to date. In the offscreen case
+         * attach_surface_fbo() implicitly takes care of this. */
+        IWineD3DSurface_LoadLocation(src_surface, SFLAG_INDRAWABLE, NULL);
+
+        if(buffer == GL_FRONT) {
+            RECT windowsize;
+            UINT h;
+            ClientToScreen(((IWineD3DSwapChainImpl *)src_swapchain)->win_handle, &offset);
+            GetClientRect(((IWineD3DSwapChainImpl *)src_swapchain)->win_handle, &windowsize);
+            h = windowsize.bottom - windowsize.top;
+            src_rect->x1 -= offset.x; src_rect->x2 -=offset.x;
+            src_rect->y1 =  offset.y + h - src_rect->y1;
+            src_rect->y2 =  offset.y + h - src_rect->y2;
+        } else {
+            src_rect->y1 = ((IWineD3DSurfaceImpl *)src_surface)->currentDesc.Height - src_rect->y1;
+            src_rect->y2 = ((IWineD3DSurfaceImpl *)src_surface)->currentDesc.Height - src_rect->y2;
+        }
+
+        ENTER_GL();
+        GL_EXTCALL(glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, 0));
+        glReadBuffer(buffer);
+        checkGLcall("glReadBuffer()");
+    } else {
+        TRACE("Source surface %p is offscreen\n", src_surface);
+        ENTER_GL();
+        context_bind_fbo(iface, GL_READ_FRAMEBUFFER_EXT, &This->activeContext->src_fbo);
+        context_attach_surface_fbo(This, GL_READ_FRAMEBUFFER_EXT, 0, src_surface);
+        glReadBuffer(GL_COLOR_ATTACHMENT0_EXT);
+        checkGLcall("glReadBuffer()");
+        GL_EXTCALL(glFramebufferRenderbufferEXT(GL_READ_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, 0));
+        checkGLcall("glFramebufferRenderbufferEXT");
+    }
+    LEAVE_GL();
+
+    /* Attach dst surface to dst fbo */
+    dst_swapchain = get_swapchain(dst_surface);
+    if (dst_swapchain) {
+        GLenum buffer = surface_get_gl_buffer(dst_surface, dst_swapchain);
+
+        TRACE("Destination surface %p is onscreen\n", dst_surface);
+        ActivateContext(This, dst_surface, CTXUSAGE_RESOURCELOAD);
+        /* Make sure the drawable is up to date. In the offscreen case
+         * attach_surface_fbo() implicitly takes care of this. */
+        IWineD3DSurface_LoadLocation(dst_surface, SFLAG_INDRAWABLE, NULL);
+
+        if(buffer == GL_FRONT) {
+            RECT windowsize;
+            UINT h;
+            ClientToScreen(((IWineD3DSwapChainImpl *)dst_swapchain)->win_handle, &offset);
+            GetClientRect(((IWineD3DSwapChainImpl *)dst_swapchain)->win_handle, &windowsize);
+            h = windowsize.bottom - windowsize.top;
+            dst_rect->x1 -= offset.x; dst_rect->x2 -=offset.x;
+            dst_rect->y1 =  offset.y + h - dst_rect->y1;
+            dst_rect->y2 =  offset.y + h - dst_rect->y2;
+        } else {
+            /* Screen coords = window coords, surface height = window height */
+            dst_rect->y1 = ((IWineD3DSurfaceImpl *)dst_surface)->currentDesc.Height - dst_rect->y1;
+            dst_rect->y2 = ((IWineD3DSurfaceImpl *)dst_surface)->currentDesc.Height - dst_rect->y2;
+        }
+
+        ENTER_GL();
+        GL_EXTCALL(glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, 0));
+        glDrawBuffer(buffer);
+        checkGLcall("glDrawBuffer()");
+    } else {
+        TRACE("Destination surface %p is offscreen\n", dst_surface);
+
+        /* No src or dst swapchain? Make sure some context is active(multithreading) */
+        if(!src_swapchain) {
+            ActivateContext(This, This->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+        }
+
+        ENTER_GL();
+        context_bind_fbo(iface, GL_DRAW_FRAMEBUFFER_EXT, &This->activeContext->dst_fbo);
+        context_attach_surface_fbo(This, GL_DRAW_FRAMEBUFFER_EXT, 0, dst_surface);
+        glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT);
+        checkGLcall("glDrawBuffer()");
+        GL_EXTCALL(glFramebufferRenderbufferEXT(GL_DRAW_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, 0));
+        checkGLcall("glFramebufferRenderbufferEXT");
+    }
+    glDisable(GL_SCISSOR_TEST);
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_RENDER(WINED3DRS_SCISSORTESTENABLE));
+
+    if (flip) {
+        GL_EXTCALL(glBlitFramebufferEXT(src_rect->x1, src_rect->y1, src_rect->x2, src_rect->y2,
+                dst_rect->x1, dst_rect->y2, dst_rect->x2, dst_rect->y1, mask, gl_filter));
+        checkGLcall("glBlitFramebuffer()");
+    } else {
+        GL_EXTCALL(glBlitFramebufferEXT(src_rect->x1, src_rect->y1, src_rect->x2, src_rect->y2,
+                dst_rect->x1, dst_rect->y1, dst_rect->x2, dst_rect->y2, mask, gl_filter));
+        checkGLcall("glBlitFramebuffer()");
+    }
+
+    IWineD3DSurface_ModifyLocation(dst_surface, SFLAG_INDRAWABLE, TRUE);
+
+    if (This->activeContext->current_fbo) {
+        context_bind_fbo(iface, GL_FRAMEBUFFER_EXT, &This->activeContext->current_fbo->id);
+    } else {
+        GL_EXTCALL(glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0));
+        checkGLcall("glBindFramebuffer()");
+    }
+
+    /* If we switched from GL_BACK to GL_FRONT above, we need to switch back here */
+    if (dst_swapchain && dst_surface == ((IWineD3DSwapChainImpl *)dst_swapchain)->frontBuffer
+            && ((IWineD3DSwapChainImpl *)dst_swapchain)->backBuffer) {
+        glDrawBuffer(GL_BACK);
+        checkGLcall("glDrawBuffer()");
+    }
+    LEAVE_GL();
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_SetRenderTarget(IWineD3DDevice *iface, DWORD RenderTargetIndex, IWineD3DSurface *pRenderTarget) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    WINED3DVIEWPORT viewport;
+
+    TRACE("(%p) : Setting rendertarget %d to %p\n", This, RenderTargetIndex, pRenderTarget);
+
+    if (RenderTargetIndex >= GL_LIMITS(buffers)) {
+        WARN("(%p) : Unsupported target %u set, returning WINED3DERR_INVALIDCALL(only %u supported)\n",
+             This, RenderTargetIndex, GL_LIMITS(buffers));
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    /* MSDN says that null disables the render target
+    but a device must always be associated with a render target
+    nope MSDN says that we return invalid call to a null rendertarget with an index of 0
+    */
+    if (RenderTargetIndex == 0 && pRenderTarget == NULL) {
+        FIXME("Trying to set render target 0 to NULL\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+    if (pRenderTarget && !(((IWineD3DSurfaceImpl *)pRenderTarget)->resource.usage & WINED3DUSAGE_RENDERTARGET)) {
+        FIXME("(%p)Trying to set the render target to a surface(%p) that wasn't created with a usage of WINED3DUSAGE_RENDERTARGET\n",This ,pRenderTarget);
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    /* If we are trying to set what we already have, don't bother */
+    if (pRenderTarget == This->render_targets[RenderTargetIndex]) {
+        TRACE("Trying to do a NOP SetRenderTarget operation\n");
+        return WINED3D_OK;
+    }
+    if(pRenderTarget) IWineD3DSurface_AddRef(pRenderTarget);
+    if(This->render_targets[RenderTargetIndex]) IWineD3DSurface_Release(This->render_targets[RenderTargetIndex]);
+    This->render_targets[RenderTargetIndex] = pRenderTarget;
+
+    /* Render target 0 is special */
+    if(RenderTargetIndex == 0) {
+        /* Finally, reset the viewport as the MSDN states. */
+        viewport.Height = ((IWineD3DSurfaceImpl *)This->render_targets[0])->currentDesc.Height;
+        viewport.Width  = ((IWineD3DSurfaceImpl *)This->render_targets[0])->currentDesc.Width;
+        viewport.X      = 0;
+        viewport.Y      = 0;
+        viewport.MaxZ   = 1.0f;
+        viewport.MinZ   = 0.0f;
+        IWineD3DDeviceImpl_SetViewport(iface, &viewport);
+        /* Make sure the viewport state is dirty, because the render_offscreen thing affects it.
+         * SetViewport may catch NOP viewport changes, which would occur when switching between equally sized targets
+         */
+        IWineD3DDeviceImpl_MarkStateDirty(This, STATE_VIEWPORT);
+    }
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_SetDepthStencilSurface(IWineD3DDevice *iface, IWineD3DSurface *pNewZStencil) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    HRESULT  hr = WINED3D_OK;
+    IWineD3DSurface *tmp;
+
+    TRACE("(%p) Swapping z-buffer. Old = %p, new = %p\n",This, This->stencilBufferTarget, pNewZStencil);
+
+    if (pNewZStencil == This->stencilBufferTarget) {
+        TRACE("Trying to do a NOP SetRenderTarget operation\n");
+    } else {
+        /** OpenGL doesn't support 'sharing' of the stencilBuffer so we may incur an extra memory overhead
+        * depending on the renter target implementation being used.
+        * A shared context implementation will share all buffers between all rendertargets (including swapchains),
+        * implementations that use separate pbuffers for different swapchains or rendertargets will have to duplicate the
+        * stencil buffer and incur an extra memory overhead
+         ******************************************************/
+
+        if (This->stencilBufferTarget) {
+            if (((IWineD3DSwapChainImpl *)This->swapchains[0])->presentParms.Flags & WINED3DPRESENTFLAG_DISCARD_DEPTHSTENCIL
+                    || ((IWineD3DSurfaceImpl *)This->stencilBufferTarget)->Flags & SFLAG_DISCARD) {
+                surface_modify_ds_location(This->stencilBufferTarget, SFLAG_DS_DISCARDED);
+            } else {
+                ActivateContext(This, This->render_targets[0], CTXUSAGE_RESOURCELOAD);
+                surface_load_ds_location(This->stencilBufferTarget, SFLAG_DS_OFFSCREEN);
+                surface_modify_ds_location(This->stencilBufferTarget, SFLAG_DS_OFFSCREEN);
+            }
+        }
+
+        tmp = This->stencilBufferTarget;
+        This->stencilBufferTarget = pNewZStencil;
+        /* should we be calling the parent or the wined3d surface? */
+        if (NULL != This->stencilBufferTarget) IWineD3DSurface_AddRef(This->stencilBufferTarget);
+        if (NULL != tmp) IWineD3DSurface_Release(tmp);
+        hr = WINED3D_OK;
+
+        if((!tmp && pNewZStencil) || (!pNewZStencil && tmp)) {
+            /* Swapping NULL / non NULL depth stencil affects the depth and tests */
+            IWineD3DDeviceImpl_MarkStateDirty(This, STATE_RENDER(WINED3DRS_ZENABLE));
+            IWineD3DDeviceImpl_MarkStateDirty(This, STATE_RENDER(WINED3DRS_STENCILENABLE));
+            IWineD3DDeviceImpl_MarkStateDirty(This, STATE_RENDER(WINED3DRS_STENCILWRITEMASK));
+        }
+    }
+
+    return hr;
+}
+
+static HRESULT  WINAPI  IWineD3DDeviceImpl_SetCursorProperties(IWineD3DDevice* iface, UINT XHotSpot,
+                                                        UINT YHotSpot, IWineD3DSurface *pCursorBitmap) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    /* TODO: the use of Impl is deprecated. */
+    IWineD3DSurfaceImpl * pSur = (IWineD3DSurfaceImpl *) pCursorBitmap;
+    WINED3DLOCKED_RECT lockedRect;
+
+    TRACE("(%p) : Spot Pos(%u,%u)\n", This, XHotSpot, YHotSpot);
+
+    /* some basic validation checks */
+    if(This->cursorTexture) {
+        ActivateContext(This, This->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+        ENTER_GL();
+        glDeleteTextures(1, &This->cursorTexture);
+        LEAVE_GL();
+        This->cursorTexture = 0;
+    }
+
+    if ( (pSur->currentDesc.Width == 32) && (pSur->currentDesc.Height == 32) )
+        This->haveHardwareCursor = TRUE;
+    else
+        This->haveHardwareCursor = FALSE;
+
+    if(pCursorBitmap) {
+        WINED3DLOCKED_RECT rect;
+
+        /* MSDN: Cursor must be A8R8G8B8 */
+        if (WINED3DFMT_A8R8G8B8 != pSur->resource.format) {
+            ERR("(%p) : surface(%p) has an invalid format\n", This, pCursorBitmap);
+            return WINED3DERR_INVALIDCALL;
+        }
+
+        /* MSDN: Cursor must be smaller than the display mode */
+        if(pSur->currentDesc.Width > This->ddraw_width ||
+           pSur->currentDesc.Height > This->ddraw_height) {
+            ERR("(%p) : Surface(%p) is %dx%d pixels, but screen res is %dx%d\n", This, pSur, pSur->currentDesc.Width, pSur->currentDesc.Height, This->ddraw_width, This->ddraw_height);
+            return WINED3DERR_INVALIDCALL;
+        }
+
+        if (!This->haveHardwareCursor) {
+            /* TODO: MSDN: Cursor sizes must be a power of 2 */
+
+            /* Do not store the surface's pointer because the application may
+             * release it after setting the cursor image. Windows doesn't
+             * addref the set surface, so we can't do this either without
+             * creating circular refcount dependencies. Copy out the gl texture
+             * instead.
+             */
+            This->cursorWidth = pSur->currentDesc.Width;
+            This->cursorHeight = pSur->currentDesc.Height;
+            if (SUCCEEDED(IWineD3DSurface_LockRect(pCursorBitmap, &rect, NULL, WINED3DLOCK_READONLY)))
+            {
+                const struct GlPixelFormatDesc *glDesc;
+                const StaticPixelFormatDesc *tableEntry = getFormatDescEntry(WINED3DFMT_A8R8G8B8, &GLINFO_LOCATION, &glDesc);
+                char *mem, *bits = (char *)rect.pBits;
+                GLint intfmt = glDesc->glInternal;
+                GLint format = glDesc->glFormat;
+                GLint type = glDesc->glType;
+                INT height = This->cursorHeight;
+                INT width = This->cursorWidth;
+                INT bpp = tableEntry->bpp;
+                INT i, sampler;
+
+                /* Reformat the texture memory (pitch and width can be
+                 * different) */
+                mem = HeapAlloc(GetProcessHeap(), 0, width * height * bpp);
+                for(i = 0; i < height; i++)
+                    memcpy(&mem[width * bpp * i], &bits[rect.Pitch * i], width * bpp);
+                IWineD3DSurface_UnlockRect(pCursorBitmap);
+                ENTER_GL();
+
+                if(GL_SUPPORT(APPLE_CLIENT_STORAGE)) {
+                    glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_FALSE);
+                    checkGLcall("glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_FALSE)");
+                }
+
+                /* Make sure that a proper texture unit is selected */
+                if (GL_SUPPORT(ARB_MULTITEXTURE)) {
+                    GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB));
+                    checkGLcall("glActiveTextureARB");
+                }
+                sampler = This->rev_tex_unit_map[0];
+                if (sampler != -1) {
+                    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_SAMPLER(sampler));
+                }
+                /* Create a new cursor texture */
+                glGenTextures(1, &This->cursorTexture);
+                checkGLcall("glGenTextures");
+                glBindTexture(GL_TEXTURE_2D, This->cursorTexture);
+                checkGLcall("glBindTexture");
+                /* Copy the bitmap memory into the cursor texture */
+                glTexImage2D(GL_TEXTURE_2D, 0, intfmt, width, height, 0, format, type, mem);
+                HeapFree(GetProcessHeap(), 0, mem);
+                checkGLcall("glTexImage2D");
+
+                if(GL_SUPPORT(APPLE_CLIENT_STORAGE)) {
+                    glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_TRUE);
+                    checkGLcall("glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_TRUE)");
+                }
+
+                LEAVE_GL();
+            }
+            else
+            {
+                FIXME("A cursor texture was not returned.\n");
+                This->cursorTexture = 0;
+            }
+        }
+        else
+        {
+            /* Draw a hardware cursor */
+            ICONINFO cursorInfo;
+            HCURSOR cursor;
+            /* Create and clear maskBits because it is not needed for
+             * 32-bit cursors.  32x32 bits split into 32-bit chunks == 32
+             * chunks. */
+            DWORD *maskBits = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
+                (pSur->currentDesc.Width * pSur->currentDesc.Height / 8));
+            IWineD3DSurface_LockRect(pCursorBitmap, &lockedRect, NULL,
+                                         WINED3DLOCK_NO_DIRTY_UPDATE |
+                                         WINED3DLOCK_READONLY
+            );
+            TRACE("width: %i height: %i\n", pSur->currentDesc.Width,
+                  pSur->currentDesc.Height);
+
+            cursorInfo.fIcon = FALSE;
+            cursorInfo.xHotspot = XHotSpot;
+            cursorInfo.yHotspot = YHotSpot;
+            cursorInfo.hbmMask = CreateBitmap(pSur->currentDesc.Width,
+                                              pSur->currentDesc.Height, 1,
+                                              1, &maskBits);
+            cursorInfo.hbmColor = CreateBitmap(pSur->currentDesc.Width,
+                                               pSur->currentDesc.Height, 1,
+                                               32, lockedRect.pBits);
+            IWineD3DSurface_UnlockRect(pCursorBitmap);
+            /* Create our cursor and clean up. */
+            cursor = CreateIconIndirect(&cursorInfo);
+            SetCursor(cursor);
+            if (cursorInfo.hbmMask) DeleteObject(cursorInfo.hbmMask);
+            if (cursorInfo.hbmColor) DeleteObject(cursorInfo.hbmColor);
+            if (This->hardwareCursor) DestroyCursor(This->hardwareCursor);
+            This->hardwareCursor = cursor;
+            HeapFree(GetProcessHeap(), 0, maskBits);
+        }
+    }
+
+    This->xHotSpot = XHotSpot;
+    This->yHotSpot = YHotSpot;
+    return WINED3D_OK;
+}
+
+static void     WINAPI  IWineD3DDeviceImpl_SetCursorPosition(IWineD3DDevice* iface, int XScreenSpace, int YScreenSpace, DWORD Flags) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    TRACE("(%p) : SetPos to (%u,%u)\n", This, XScreenSpace, YScreenSpace);
+
+    This->xScreenSpace = XScreenSpace;
+    This->yScreenSpace = YScreenSpace;
+
+    return;
+
+}
+
+static BOOL     WINAPI  IWineD3DDeviceImpl_ShowCursor(IWineD3DDevice* iface, BOOL bShow) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    BOOL oldVisible = This->bCursorVisible;
+    POINT pt;
+
+    TRACE("(%p) : visible(%d)\n", This, bShow);
+
+    /*
+     * When ShowCursor is first called it should make the cursor appear at the OS's last
+     * known cursor position.  Because of this, some applications just repetitively call
+     * ShowCursor in order to update the cursor's position.  This behavior is undocumented.
+     */
+    GetCursorPos(&pt);
+    This->xScreenSpace = pt.x;
+    This->yScreenSpace = pt.y;
+
+    if (This->haveHardwareCursor) {
+        This->bCursorVisible = bShow;
+        if (bShow)
+            SetCursor(This->hardwareCursor);
+        else
+            SetCursor(NULL);
+    }
+    else
+    {
+        if (This->cursorTexture)
+            This->bCursorVisible = bShow;
+    }
+
+    return oldVisible;
+}
+
+static HRESULT  WINAPI  IWineD3DDeviceImpl_TestCooperativeLevel(IWineD3DDevice* iface) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    IWineD3DResourceImpl *resource;
+    TRACE("(%p) : state (%u)\n", This, This->state);
+
+    /* TODO: Implement wrapping of the WndProc so that mimimize and maximize can be monitored and the states adjusted. */
+    switch (This->state) {
+    case WINED3D_OK:
+        return WINED3D_OK;
+    case WINED3DERR_DEVICELOST:
+        {
+            LIST_FOR_EACH_ENTRY(resource, &This->resources, IWineD3DResourceImpl, resource.resource_list_entry) {
+                if (resource->resource.pool == WINED3DPOOL_DEFAULT)
+                    return WINED3DERR_DEVICENOTRESET;
+            }
+            return WINED3DERR_DEVICELOST;
+        }
+    case WINED3DERR_DRIVERINTERNALERROR:
+        return WINED3DERR_DRIVERINTERNALERROR;
+    }
+
+    /* Unknown state */
+    return WINED3DERR_DRIVERINTERNALERROR;
+}
+
+
+static HRESULT  WINAPI  IWineD3DDeviceImpl_EvictManagedResources(IWineD3DDevice* iface) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    /** FIXME: Resource tracking needs to be done,
+    * The closes we can do to this is set the priorities of all managed textures low
+    * and then reset them.
+     ***********************************************************/
+    FIXME("(%p) : stub\n", This);
+    return WINED3D_OK;
+}
+
+static void updateSurfaceDesc(IWineD3DSurfaceImpl *surface, const WINED3DPRESENT_PARAMETERS* pPresentationParameters)
+{
+    IWineD3DDeviceImpl *This = surface->resource.wineD3DDevice; /* for GL_SUPPORT */
+
+    /* Reallocate proper memory for the front and back buffer and adjust their sizes */
+    if(surface->Flags & SFLAG_DIBSECTION) {
+        /* Release the DC */
+        SelectObject(surface->hDC, surface->dib.holdbitmap);
+        DeleteDC(surface->hDC);
+        /* Release the DIB section */
+        DeleteObject(surface->dib.DIBsection);
+        surface->dib.bitmap_data = NULL;
+        surface->resource.allocatedMemory = NULL;
+        surface->Flags &= ~SFLAG_DIBSECTION;
+    }
+    surface->currentDesc.Width = pPresentationParameters->BackBufferWidth;
+    surface->currentDesc.Height = pPresentationParameters->BackBufferHeight;
+    if (GL_SUPPORT(ARB_TEXTURE_NON_POWER_OF_TWO) || GL_SUPPORT(ARB_TEXTURE_RECTANGLE) ||
+        GL_SUPPORT(WINE_NORMALIZED_TEXRECT)) {
+        surface->pow2Width = pPresentationParameters->BackBufferWidth;
+        surface->pow2Height = pPresentationParameters->BackBufferHeight;
+    } else {
+        surface->pow2Width = surface->pow2Height = 1;
+        while (surface->pow2Width < pPresentationParameters->BackBufferWidth) surface->pow2Width <<= 1;
+        while (surface->pow2Height < pPresentationParameters->BackBufferHeight) surface->pow2Height <<= 1;
+    }
+    surface->glRect.left = 0;
+    surface->glRect.top = 0;
+    surface->glRect.right = surface->pow2Width;
+    surface->glRect.bottom = surface->pow2Height;
+
+    if(surface->glDescription.textureName) {
+        ActivateContext(This, This->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+        ENTER_GL();
+        glDeleteTextures(1, &surface->glDescription.textureName);
+        LEAVE_GL();
+        surface->glDescription.textureName = 0;
+        surface->Flags &= ~SFLAG_CLIENT;
+    }
+    if(surface->pow2Width != pPresentationParameters->BackBufferWidth ||
+       surface->pow2Height != pPresentationParameters->BackBufferHeight) {
+        surface->Flags |= SFLAG_NONPOW2;
+    } else  {
+        surface->Flags &= ~SFLAG_NONPOW2;
+    }
+    HeapFree(GetProcessHeap(), 0, surface->resource.heapMemory);
+    surface->resource.allocatedMemory = NULL;
+    surface->resource.heapMemory = NULL;
+    surface->resource.size = IWineD3DSurface_GetPitch((IWineD3DSurface *) surface) * surface->pow2Width;
+    /* INDRAWABLE is a sane place for implicit targets after the reset, INSYSMEM is more appropriate for depth stencils. */
+    if (surface->resource.usage & WINED3DUSAGE_DEPTHSTENCIL) {
+        IWineD3DSurface_ModifyLocation((IWineD3DSurface *) surface, SFLAG_INSYSMEM, TRUE);
+    } else {
+        IWineD3DSurface_ModifyLocation((IWineD3DSurface *) surface, SFLAG_INDRAWABLE, TRUE);
+    }
+}
+
+static HRESULT WINAPI reset_unload_resources(IWineD3DResource *resource, void *data) {
+    TRACE("Unloading resource %p\n", resource);
+    IWineD3DResource_UnLoad(resource);
+    IWineD3DResource_Release(resource);
+    return S_OK;
+}
+
+static BOOL is_display_mode_supported(IWineD3DDeviceImpl *This, const WINED3DPRESENT_PARAMETERS *pp)
+{
+    UINT i, count;
+    WINED3DDISPLAYMODE m;
+    HRESULT hr;
+
+    /* All Windowed modes are supported, as is leaving the current mode */
+    if(pp->Windowed) return TRUE;
+    if(!pp->BackBufferWidth) return TRUE;
+    if(!pp->BackBufferHeight) return TRUE;
+
+    count = IWineD3D_GetAdapterModeCount(This->wineD3D, This->adapter->num, WINED3DFMT_UNKNOWN);
+    for(i = 0; i < count; i++) {
+        memset(&m, 0, sizeof(m));
+        hr = IWineD3D_EnumAdapterModes(This->wineD3D, This->adapter->num, WINED3DFMT_UNKNOWN, i, &m);
+        if(FAILED(hr)) {
+            ERR("EnumAdapterModes failed\n");
+        }
+        if(m.Width == pp->BackBufferWidth && m.Height == pp->BackBufferHeight) {
+            /* Mode found, it is supported */
+            return TRUE;
+        }
+    }
+    /* Mode not found -> not supported */
+    return FALSE;
+}
+
+void delete_opengl_contexts(IWineD3DDevice *iface, IWineD3DSwapChain *swapchain_iface) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    IWineD3DSwapChainImpl *swapchain = (IWineD3DSwapChainImpl *) swapchain_iface;
+    UINT i;
+    IWineD3DBaseShaderImpl *shader;
+
+    IWineD3DDevice_EnumResources(iface, reset_unload_resources, NULL);
+    LIST_FOR_EACH_ENTRY(shader, &This->shaders, IWineD3DBaseShaderImpl, baseShader.shader_list_entry) {
+        This->shader_backend->shader_destroy((IWineD3DBaseShader *) shader);
+    }
+
+    ENTER_GL();
+    if(This->depth_blt_texture) {
+        glDeleteTextures(1, &This->depth_blt_texture);
+        This->depth_blt_texture = 0;
+    }
+    if (This->depth_blt_rb) {
+        GL_EXTCALL(glDeleteRenderbuffersEXT(1, &This->depth_blt_rb));
+        This->depth_blt_rb = 0;
+        This->depth_blt_rb_w = 0;
+        This->depth_blt_rb_h = 0;
+    }
+    LEAVE_GL();
+
+    This->blitter->free_private(iface);
+    This->frag_pipe->free_private(iface);
+    This->shader_backend->shader_free_private(iface);
+
+    ENTER_GL();
+    for (i = 0; i < GL_LIMITS(textures); i++) {
+        /* Textures are recreated below */
+        glDeleteTextures(1, &This->dummyTextureName[i]);
+        checkGLcall("glDeleteTextures(1, &This->dummyTextureName[i])");
+        This->dummyTextureName[i] = 0;
+    }
+    LEAVE_GL();
+
+    while(This->numContexts) {
+        DestroyContext(This, This->contexts[0]);
+    }
+    This->activeContext = NULL;
+    HeapFree(GetProcessHeap(), 0, swapchain->context);
+    swapchain->context = NULL;
+    swapchain->num_contexts = 0;
+}
+
+HRESULT create_primary_opengl_context(IWineD3DDevice *iface, IWineD3DSwapChain *swapchain_iface) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    IWineD3DSwapChainImpl *swapchain = (IWineD3DSwapChainImpl *) swapchain_iface;
+    HRESULT hr;
+    IWineD3DSurfaceImpl *target;
+
+    /* Recreate the primary swapchain's context */
+    swapchain->context = HeapAlloc(GetProcessHeap(), 0, sizeof(*swapchain->context));
+    if(swapchain->backBuffer) {
+        target = (IWineD3DSurfaceImpl *) swapchain->backBuffer[0];
+    } else {
+        target = (IWineD3DSurfaceImpl *) swapchain->frontBuffer;
+    }
+    swapchain->context[0] = CreateContext(This, target, swapchain->win_handle, FALSE,
+                                          &swapchain->presentParms);
+    swapchain->num_contexts = 1;
+    This->activeContext = swapchain->context[0];
+
+    create_dummy_textures(This);
+
+    hr = This->shader_backend->shader_alloc_private(iface);
+    if(FAILED(hr)) {
+        ERR("Failed to recreate shader private data\n");
+        goto err_out;
+    }
+    hr = This->frag_pipe->alloc_private(iface);
+    if(FAILED(hr)) {
+        TRACE("Fragment pipeline private data couldn't be allocated\n");
+        goto err_out;
+    }
+    hr = This->blitter->alloc_private(iface);
+    if(FAILED(hr)) {
+        TRACE("Blitter private data couldn't be allocated\n");
+        goto err_out;
+    }
+
+    return WINED3D_OK;
+
+err_out:
+    This->blitter->free_private(iface);
+    This->frag_pipe->free_private(iface);
+    This->shader_backend->shader_free_private(iface);
+    return hr;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_Reset(IWineD3DDevice* iface, WINED3DPRESENT_PARAMETERS* pPresentationParameters) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    IWineD3DSwapChainImpl *swapchain;
+    HRESULT hr;
+    BOOL DisplayModeChanged = FALSE;
+    WINED3DDISPLAYMODE mode;
+    TRACE("(%p)\n", This);
+
+    hr = IWineD3DDevice_GetSwapChain(iface, 0, (IWineD3DSwapChain **) &swapchain);
+    if(FAILED(hr)) {
+        ERR("Failed to get the first implicit swapchain\n");
+        return hr;
+    }
+
+    if(!is_display_mode_supported(This, pPresentationParameters)) {
+        WARN("Rejecting Reset() call because the requested display mode is not supported\n");
+        WARN("Requested mode: %d, %d\n", pPresentationParameters->BackBufferWidth,
+             pPresentationParameters->BackBufferHeight);
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    /* Is it necessary to recreate the gl context? Actually every setting can be changed
+     * on an existing gl context, so there's no real need for recreation.
+     *
+     * TODO: Figure out how Reset influences resources in D3DPOOL_DEFAULT, D3DPOOL_SYSTEMMEMORY and D3DPOOL_MANAGED
+     *
+     * TODO: Figure out what happens to explicit swapchains, or if we have more than one implicit swapchain
+     */
+    TRACE("New params:\n");
+    TRACE("BackBufferWidth = %d\n", pPresentationParameters->BackBufferWidth);
+    TRACE("BackBufferHeight = %d\n", pPresentationParameters->BackBufferHeight);
+    TRACE("BackBufferFormat = %s\n", debug_d3dformat(pPresentationParameters->BackBufferFormat));
+    TRACE("BackBufferCount = %d\n", pPresentationParameters->BackBufferCount);
+    TRACE("MultiSampleType = %d\n", pPresentationParameters->MultiSampleType);
+    TRACE("MultiSampleQuality = %d\n", pPresentationParameters->MultiSampleQuality);
+    TRACE("SwapEffect = %d\n", pPresentationParameters->SwapEffect);
+    TRACE("hDeviceWindow = %p\n", pPresentationParameters->hDeviceWindow);
+    TRACE("Windowed = %s\n", pPresentationParameters->Windowed ? "true" : "false");
+    TRACE("EnableAutoDepthStencil = %s\n", pPresentationParameters->EnableAutoDepthStencil ? "true" : "false");
+    TRACE("Flags = %08x\n", pPresentationParameters->Flags);
+    TRACE("FullScreen_RefreshRateInHz = %d\n", pPresentationParameters->FullScreen_RefreshRateInHz);
+    TRACE("PresentationInterval = %d\n", pPresentationParameters->PresentationInterval);
+
+    /* No special treatment of these parameters. Just store them */
+    swapchain->presentParms.SwapEffect = pPresentationParameters->SwapEffect;
+    swapchain->presentParms.Flags = pPresentationParameters->Flags;
+    swapchain->presentParms.PresentationInterval = pPresentationParameters->PresentationInterval;
+    swapchain->presentParms.FullScreen_RefreshRateInHz = pPresentationParameters->FullScreen_RefreshRateInHz;
+
+    /* What to do about these? */
+    if(pPresentationParameters->BackBufferCount != 0 &&
+        pPresentationParameters->BackBufferCount != swapchain->presentParms.BackBufferCount) {
+        ERR("Cannot change the back buffer count yet\n");
+    }
+    if(pPresentationParameters->BackBufferFormat != WINED3DFMT_UNKNOWN &&
+        pPresentationParameters->BackBufferFormat != swapchain->presentParms.BackBufferFormat) {
+        ERR("Cannot change the back buffer format yet\n");
+    }
+    if(pPresentationParameters->hDeviceWindow != NULL &&
+        pPresentationParameters->hDeviceWindow != swapchain->presentParms.hDeviceWindow) {
+        ERR("Cannot change the device window yet\n");
+    }
+    if (pPresentationParameters->EnableAutoDepthStencil && !This->auto_depth_stencil_buffer) {
+        WARN("Auto depth stencil enabled, but no auto depth stencil present, returning WINED3DERR_INVALIDCALL\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    /* Reset the depth stencil */
+    if (pPresentationParameters->EnableAutoDepthStencil)
+        IWineD3DDevice_SetDepthStencilSurface(iface, This->auto_depth_stencil_buffer);
+    else
+        IWineD3DDevice_SetDepthStencilSurface(iface, NULL);
+
+    delete_opengl_contexts(iface, (IWineD3DSwapChain *) swapchain);
+
+    if(pPresentationParameters->Windowed) {
+        mode.Width = swapchain->orig_width;
+        mode.Height = swapchain->orig_height;
+        mode.RefreshRate = 0;
+        mode.Format = swapchain->presentParms.BackBufferFormat;
+    } else {
+        mode.Width = pPresentationParameters->BackBufferWidth;
+        mode.Height = pPresentationParameters->BackBufferHeight;
+        mode.RefreshRate = pPresentationParameters->FullScreen_RefreshRateInHz;
+        mode.Format = swapchain->presentParms.BackBufferFormat;
+    }
+
+    /* Should Width == 800 && Height == 0 set 800x600? */
+    if(pPresentationParameters->BackBufferWidth != 0 && pPresentationParameters->BackBufferHeight != 0 &&
+       (pPresentationParameters->BackBufferWidth != swapchain->presentParms.BackBufferWidth ||
+        pPresentationParameters->BackBufferHeight != swapchain->presentParms.BackBufferHeight))
+    {
+        WINED3DVIEWPORT vp;
+        UINT i;
+
+        vp.X = 0;
+        vp.Y = 0;
+        vp.Width = pPresentationParameters->BackBufferWidth;
+        vp.Height = pPresentationParameters->BackBufferHeight;
+        vp.MinZ = 0;
+        vp.MaxZ = 1;
+
+        if(!pPresentationParameters->Windowed) {
+            DisplayModeChanged = TRUE;
+        }
+        swapchain->presentParms.BackBufferWidth = pPresentationParameters->BackBufferWidth;
+        swapchain->presentParms.BackBufferHeight = pPresentationParameters->BackBufferHeight;
+
+        updateSurfaceDesc((IWineD3DSurfaceImpl *)swapchain->frontBuffer, pPresentationParameters);
+        for(i = 0; i < swapchain->presentParms.BackBufferCount; i++) {
+            updateSurfaceDesc((IWineD3DSurfaceImpl *)swapchain->backBuffer[i], pPresentationParameters);
+        }
+        if(This->auto_depth_stencil_buffer) {
+            updateSurfaceDesc((IWineD3DSurfaceImpl *)This->auto_depth_stencil_buffer, pPresentationParameters);
+        }
+
+
+        /* Now set the new viewport */
+        IWineD3DDevice_SetViewport(iface, &vp);
+    }
+
+    if((pPresentationParameters->Windowed && !swapchain->presentParms.Windowed) ||
+       (swapchain->presentParms.Windowed && !pPresentationParameters->Windowed) ||
+        DisplayModeChanged) {
+
+        IWineD3DDevice_SetDisplayMode(iface, 0, &mode);
+
+        if(swapchain->win_handle && !pPresentationParameters->Windowed) {
+            if(swapchain->presentParms.Windowed) {
+                /* switch from windowed to fs */
+                IWineD3DDeviceImpl_SetupFullscreenWindow(iface, swapchain->win_handle,
+                                                         pPresentationParameters->BackBufferWidth,
+                                                         pPresentationParameters->BackBufferHeight);
+            } else {
+                /* Fullscreen -> fullscreen mode change */
+                MoveWindow(swapchain->win_handle, 0, 0,
+                           pPresentationParameters->BackBufferWidth, pPresentationParameters->BackBufferHeight,
+                           TRUE);
+            }
+        } else if(swapchain->win_handle && !swapchain->presentParms.Windowed) {
+            /* Fullscreen -> windowed switch */
+            IWineD3DDeviceImpl_RestoreWindow(iface, swapchain->win_handle);
+        }
+        swapchain->presentParms.Windowed = pPresentationParameters->Windowed;
+    } else if(!pPresentationParameters->Windowed) {
+        DWORD style = This->style, exStyle = This->exStyle;
+        /* If we're in fullscreen, and the mode wasn't changed, we have to get the window back into
+         * the right position. Some applications(Battlefield 2, Guild Wars) move it and then call
+         * Reset to clear up their mess. Guild Wars also loses the device during that.
+         */
+        This->style = 0;
+        This->exStyle = 0;
+        IWineD3DDeviceImpl_SetupFullscreenWindow(iface, swapchain->win_handle,
+                                                 pPresentationParameters->BackBufferWidth,
+                                                 pPresentationParameters->BackBufferHeight);
+        This->style = style;
+        This->exStyle = exStyle;
+    }
+
+    hr = IWineD3DStateBlock_InitStartupStateBlock((IWineD3DStateBlock *) This->stateBlock);
+    if(FAILED(hr)) {
+        ERR("Resetting the stateblock failed with error 0x%08x\n", hr);
+    }
+
+    hr = create_primary_opengl_context(iface, (IWineD3DSwapChain *) swapchain);
+    IWineD3DSwapChain_Release((IWineD3DSwapChain *) swapchain);
+
+    /* All done. There is no need to reload resources or shaders, this will happen automatically on the
+     * first use
+     */
+    return hr;
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_SetDialogBoxMode(IWineD3DDevice *iface, BOOL bEnableDialogs) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    /** FIXME: always true at the moment **/
+    if(!bEnableDialogs) {
+        FIXME("(%p) Dialogs cannot be disabled yet\n", This);
+    }
+    return WINED3D_OK;
+}
+
+
+static HRESULT  WINAPI  IWineD3DDeviceImpl_GetCreationParameters(IWineD3DDevice *iface, WINED3DDEVICE_CREATION_PARAMETERS *pParameters) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    TRACE("(%p) : pParameters %p\n", This, pParameters);
+
+    *pParameters = This->createParms;
+    return WINED3D_OK;
+}
+
+static void WINAPI IWineD3DDeviceImpl_SetGammaRamp(IWineD3DDevice * iface, UINT iSwapChain, DWORD Flags, CONST WINED3DGAMMARAMP* pRamp) {
+    IWineD3DSwapChain *swapchain;
+
+    TRACE("Relaying  to swapchain\n");
+
+    if (IWineD3DDeviceImpl_GetSwapChain(iface, iSwapChain, &swapchain) == WINED3D_OK) {
+        IWineD3DSwapChain_SetGammaRamp(swapchain, Flags, pRamp);
+        IWineD3DSwapChain_Release(swapchain);
+    }
+    return;
+}
+
+static void WINAPI IWineD3DDeviceImpl_GetGammaRamp(IWineD3DDevice *iface, UINT iSwapChain, WINED3DGAMMARAMP* pRamp) {
+    IWineD3DSwapChain *swapchain;
+
+    TRACE("Relaying  to swapchain\n");
+
+    if (IWineD3DDeviceImpl_GetSwapChain(iface, iSwapChain, &swapchain) == WINED3D_OK) {
+        IWineD3DSwapChain_GetGammaRamp(swapchain, pRamp);
+        IWineD3DSwapChain_Release(swapchain);
+    }
+    return;
+}
+
+
+/** ********************************************************
+*   Notification functions
+** ********************************************************/
+/** This function must be called in the release of a resource when ref == 0,
+* the contents of resource must still be correct,
+* any handles to other resource held by the caller must be closed
+* (e.g. a texture should release all held surfaces because telling the device that it's been released.)
+ *****************************************************/
+static void IWineD3DDeviceImpl_AddResource(IWineD3DDevice *iface, IWineD3DResource *resource){
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+
+    TRACE("(%p) : Adding Resource %p\n", This, resource);
+    list_add_head(&This->resources, &((IWineD3DResourceImpl *) resource)->resource.resource_list_entry);
+}
+
+static void IWineD3DDeviceImpl_RemoveResource(IWineD3DDevice *iface, IWineD3DResource *resource){
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+
+    TRACE("(%p) : Removing resource %p\n", This, resource);
+
+    list_remove(&((IWineD3DResourceImpl *) resource)->resource.resource_list_entry);
+}
+
+
+static void WINAPI IWineD3DDeviceImpl_ResourceReleased(IWineD3DDevice *iface, IWineD3DResource *resource){
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    WINED3DRESOURCETYPE type = IWineD3DResource_GetType(resource);
+    int counter;
+
+    TRACE("(%p) : resource %p\n", This, resource);
+
+    context_resource_released(iface, resource, type);
+
+    switch (type) {
+        /* TODO: check front and back buffers, rendertargets etc..  possibly swapchains? */
+        case WINED3DRTYPE_SURFACE: {
+            unsigned int i;
+
+            /* Cleanup any FBO attachments if d3d is enabled */
+            if(This->d3d_initialized) {
+                if((IWineD3DSurface *)resource == This->lastActiveRenderTarget) {
+                    IWineD3DSwapChainImpl *swapchain = This->swapchains ? (IWineD3DSwapChainImpl *) This->swapchains[0] : NULL;
+
+                    TRACE("Last active render target destroyed\n");
+                    /* Find a replacement surface for the currently active back buffer. The context manager does not do NULL
+                     * checks, so switch to a valid target as long as the currently set surface is still valid. Use the
+                     * surface of the implicit swpchain. If that is the same as the destroyed surface the device is destroyed
+                     * and the lastActiveRenderTarget member shouldn't matter
+                     */
+                    if(swapchain) {
+                        if(swapchain->backBuffer && swapchain->backBuffer[0] != (IWineD3DSurface *)resource) {
+                            TRACE("Activating primary back buffer\n");
+                            ActivateContext(This, swapchain->backBuffer[0], CTXUSAGE_RESOURCELOAD);
+                        } else if(!swapchain->backBuffer && swapchain->frontBuffer != (IWineD3DSurface *)resource) {
+                            /* Single buffering environment */
+                            TRACE("Activating primary front buffer\n");
+                            ActivateContext(This, swapchain->frontBuffer, CTXUSAGE_RESOURCELOAD);
+                        } else {
+                            TRACE("Device is being destroyed, setting lastActiveRenderTarget = 0xdeadbabe\n");
+                            /* Implicit render target destroyed, that means the device is being destroyed
+                             * whatever we set here, it shouldn't matter
+                             */
+                            This->lastActiveRenderTarget = (IWineD3DSurface *) 0xdeadbabe;
+                        }
+                    } else {
+                        /* May happen during ddraw uninitialization */
+                        TRACE("Render target set, but swapchain does not exist!\n");
+                        This->lastActiveRenderTarget = (IWineD3DSurface *) 0xdeadcafe;
+                    }
+                }
+
+                for (i = 0; i < GL_LIMITS(buffers); ++i) {
+                    if (This->render_targets[i] == (IWineD3DSurface *)resource) {
+                        This->render_targets[i] = NULL;
+                    }
+                }
+                if (This->stencilBufferTarget == (IWineD3DSurface *)resource) {
+                    This->stencilBufferTarget = NULL;
+                }
+            }
+
+            break;
+        }
+        case WINED3DRTYPE_TEXTURE:
+        case WINED3DRTYPE_CUBETEXTURE:
+        case WINED3DRTYPE_VOLUMETEXTURE:
+                for (counter = 0; counter < MAX_COMBINED_SAMPLERS; counter++) {
+                    if (This->stateBlock != NULL && This->stateBlock->textures[counter] == (IWineD3DBaseTexture *)resource) {
+                        WARN("Texture being released is still by a stateblock, Stage = %u Texture = %p\n", counter, resource);
+                        This->stateBlock->textures[counter] = NULL;
+                    }
+                    if (This->updateStateBlock != This->stateBlock ){
+                        if (This->updateStateBlock->textures[counter] == (IWineD3DBaseTexture *)resource) {
+                            WARN("Texture being released is still by a stateblock, Stage = %u Texture = %p\n", counter, resource);
+                            This->updateStateBlock->textures[counter] = NULL;
+                        }
+                    }
+                }
+        break;
+        case WINED3DRTYPE_VOLUME:
+        /* TODO: nothing really? */
+        break;
+        case WINED3DRTYPE_VERTEXBUFFER:
+        /* MSDN: When an application no longer holds a references to this interface, the interface will automatically be freed. */
+        {
+            int streamNumber;
+            TRACE("Cleaning up stream pointers\n");
+
+            for(streamNumber = 0; streamNumber < MAX_STREAMS; streamNumber ++){
+                /* FINDOUT: should a warn be generated if were recording and updateStateBlock->streamSource is lost?
+                FINDOUT: should changes.streamSource[StreamNumber] be set ?
+                */
+                if (This->updateStateBlock != NULL ) { /* ==NULL when device is being destroyed */
+                    if ((IWineD3DResource *)This->updateStateBlock->streamSource[streamNumber] == resource) {
+                        FIXME("Vertex buffer released while bound to a state block, stream %d\n", streamNumber);
+                        This->updateStateBlock->streamSource[streamNumber] = 0;
+                        /* Set changed flag? */
+                    }
+                }
+                if (This->stateBlock != NULL ) { /* only happens if there is an error in the application, or on reset/release (because we don't manage internal tracking properly) */
+                    if ((IWineD3DResource *)This->stateBlock->streamSource[streamNumber] == resource) {
+                        TRACE("Vertex buffer released while bound to a state block, stream %d\n", streamNumber);
+                        This->stateBlock->streamSource[streamNumber] = 0;
+                    }
+                }
+            }
+        }
+        break;
+        case WINED3DRTYPE_INDEXBUFFER:
+        /* MSDN: When an application no longer holds a references to this interface, the interface will automatically be freed.*/
+        if (This->updateStateBlock != NULL ) { /* ==NULL when device is being destroyed */
+            if (This->updateStateBlock->pIndexData == (IWineD3DIndexBuffer *)resource) {
+                This->updateStateBlock->pIndexData =  NULL;
+            }
+        }
+        if (This->stateBlock != NULL ) { /* ==NULL when device is being destroyed */
+            if (This->stateBlock->pIndexData == (IWineD3DIndexBuffer *)resource) {
+                This->stateBlock->pIndexData =  NULL;
+            }
+        }
+
+        break;
+        default:
+        FIXME("(%p) unknown resource type %p %u\n", This, resource, IWineD3DResource_GetType(resource));
+        break;
+    }
+
+
+    /* Remove the resource from the resourceStore */
+    IWineD3DDeviceImpl_RemoveResource(iface, resource);
+
+    TRACE("Resource released\n");
+
+}
+
+static HRESULT WINAPI IWineD3DDeviceImpl_EnumResources(IWineD3DDevice *iface, D3DCB_ENUMRESOURCES pCallback, void *pData) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    IWineD3DResourceImpl *resource, *cursor;
+    HRESULT ret;
+    TRACE("(%p)->(%p,%p)\n", This, pCallback, pData);
+
+    LIST_FOR_EACH_ENTRY_SAFE(resource, cursor, &This->resources, IWineD3DResourceImpl, resource.resource_list_entry) {
+        TRACE("enumerating resource %p\n", resource);
+        IWineD3DResource_AddRef((IWineD3DResource *) resource);
+        ret = pCallback((IWineD3DResource *) resource, pData);
+        if(ret == S_FALSE) {
+            TRACE("Canceling enumeration\n");
+            break;
+        }
+    }
+    return WINED3D_OK;
+}
+
+/**********************************************************
+ * IWineD3DDevice VTbl follows
+ **********************************************************/
+
+const IWineD3DDeviceVtbl IWineD3DDevice_Vtbl =
+{
+    /*** IUnknown methods ***/
+    IWineD3DDeviceImpl_QueryInterface,
+    IWineD3DDeviceImpl_AddRef,
+    IWineD3DDeviceImpl_Release,
+    /*** IWineD3DDevice methods ***/
+    IWineD3DDeviceImpl_GetParent,
+    /*** Creation methods**/
+    IWineD3DDeviceImpl_CreateVertexBuffer,
+    IWineD3DDeviceImpl_CreateIndexBuffer,
+    IWineD3DDeviceImpl_CreateStateBlock,
+    IWineD3DDeviceImpl_CreateSurface,
+    IWineD3DDeviceImpl_CreateTexture,
+    IWineD3DDeviceImpl_CreateVolumeTexture,
+    IWineD3DDeviceImpl_CreateVolume,
+    IWineD3DDeviceImpl_CreateCubeTexture,
+    IWineD3DDeviceImpl_CreateQuery,
+    IWineD3DDeviceImpl_CreateSwapChain,
+    IWineD3DDeviceImpl_CreateVertexDeclaration,
+    IWineD3DDeviceImpl_CreateVertexDeclarationFromFVF,
+    IWineD3DDeviceImpl_CreateVertexShader,
+    IWineD3DDeviceImpl_CreatePixelShader,
+    IWineD3DDeviceImpl_CreatePalette,
+    /*** Odd functions **/
+    IWineD3DDeviceImpl_Init3D,
+    IWineD3DDeviceImpl_InitGDI,
+    IWineD3DDeviceImpl_Uninit3D,
+    IWineD3DDeviceImpl_UninitGDI,
+    IWineD3DDeviceImpl_SetMultithreaded,
+    IWineD3DDeviceImpl_EvictManagedResources,
+    IWineD3DDeviceImpl_GetAvailableTextureMem,
+    IWineD3DDeviceImpl_GetBackBuffer,
+    IWineD3DDeviceImpl_GetCreationParameters,
+    IWineD3DDeviceImpl_GetDeviceCaps,
+    IWineD3DDeviceImpl_GetDirect3D,
+    IWineD3DDeviceImpl_GetDisplayMode,
+    IWineD3DDeviceImpl_SetDisplayMode,
+    IWineD3DDeviceImpl_GetNumberOfSwapChains,
+    IWineD3DDeviceImpl_GetRasterStatus,
+    IWineD3DDeviceImpl_GetSwapChain,
+    IWineD3DDeviceImpl_Reset,
+    IWineD3DDeviceImpl_SetDialogBoxMode,
+    IWineD3DDeviceImpl_SetCursorProperties,
+    IWineD3DDeviceImpl_SetCursorPosition,
+    IWineD3DDeviceImpl_ShowCursor,
+    IWineD3DDeviceImpl_TestCooperativeLevel,
+    /*** Getters and setters **/
+    IWineD3DDeviceImpl_SetClipPlane,
+    IWineD3DDeviceImpl_GetClipPlane,
+    IWineD3DDeviceImpl_SetClipStatus,
+    IWineD3DDeviceImpl_GetClipStatus,
+    IWineD3DDeviceImpl_SetCurrentTexturePalette,
+    IWineD3DDeviceImpl_GetCurrentTexturePalette,
+    IWineD3DDeviceImpl_SetDepthStencilSurface,
+    IWineD3DDeviceImpl_GetDepthStencilSurface,
+    IWineD3DDeviceImpl_SetFVF,
+    IWineD3DDeviceImpl_GetFVF,
+    IWineD3DDeviceImpl_SetGammaRamp,
+    IWineD3DDeviceImpl_GetGammaRamp,
+    IWineD3DDeviceImpl_SetIndices,
+    IWineD3DDeviceImpl_GetIndices,
+    IWineD3DDeviceImpl_SetBaseVertexIndex,
+    IWineD3DDeviceImpl_GetBaseVertexIndex,
+    IWineD3DDeviceImpl_SetLight,
+    IWineD3DDeviceImpl_GetLight,
+    IWineD3DDeviceImpl_SetLightEnable,
+    IWineD3DDeviceImpl_GetLightEnable,
+    IWineD3DDeviceImpl_SetMaterial,
+    IWineD3DDeviceImpl_GetMaterial,
+    IWineD3DDeviceImpl_SetNPatchMode,
+    IWineD3DDeviceImpl_GetNPatchMode,
+    IWineD3DDeviceImpl_SetPaletteEntries,
+    IWineD3DDeviceImpl_GetPaletteEntries,
+    IWineD3DDeviceImpl_SetPixelShader,
+    IWineD3DDeviceImpl_GetPixelShader,
+    IWineD3DDeviceImpl_SetPixelShaderConstantB,
+    IWineD3DDeviceImpl_GetPixelShaderConstantB,
+    IWineD3DDeviceImpl_SetPixelShaderConstantI,
+    IWineD3DDeviceImpl_GetPixelShaderConstantI,
+    IWineD3DDeviceImpl_SetPixelShaderConstantF,
+    IWineD3DDeviceImpl_GetPixelShaderConstantF,
+    IWineD3DDeviceImpl_SetRenderState,
+    IWineD3DDeviceImpl_GetRenderState,
+    IWineD3DDeviceImpl_SetRenderTarget,
+    IWineD3DDeviceImpl_GetRenderTarget,
+    IWineD3DDeviceImpl_SetFrontBackBuffers,
+    IWineD3DDeviceImpl_SetSamplerState,
+    IWineD3DDeviceImpl_GetSamplerState,
+    IWineD3DDeviceImpl_SetScissorRect,
+    IWineD3DDeviceImpl_GetScissorRect,
+    IWineD3DDeviceImpl_SetSoftwareVertexProcessing,
+    IWineD3DDeviceImpl_GetSoftwareVertexProcessing,
+    IWineD3DDeviceImpl_SetStreamSource,
+    IWineD3DDeviceImpl_GetStreamSource,
+    IWineD3DDeviceImpl_SetStreamSourceFreq,
+    IWineD3DDeviceImpl_GetStreamSourceFreq,
+    IWineD3DDeviceImpl_SetTexture,
+    IWineD3DDeviceImpl_GetTexture,
+    IWineD3DDeviceImpl_SetTextureStageState,
+    IWineD3DDeviceImpl_GetTextureStageState,
+    IWineD3DDeviceImpl_SetTransform,
+    IWineD3DDeviceImpl_GetTransform,
+    IWineD3DDeviceImpl_SetVertexDeclaration,
+    IWineD3DDeviceImpl_GetVertexDeclaration,
+    IWineD3DDeviceImpl_SetVertexShader,
+    IWineD3DDeviceImpl_GetVertexShader,
+    IWineD3DDeviceImpl_SetVertexShaderConstantB,
+    IWineD3DDeviceImpl_GetVertexShaderConstantB,
+    IWineD3DDeviceImpl_SetVertexShaderConstantI,
+    IWineD3DDeviceImpl_GetVertexShaderConstantI,
+    IWineD3DDeviceImpl_SetVertexShaderConstantF,
+    IWineD3DDeviceImpl_GetVertexShaderConstantF,
+    IWineD3DDeviceImpl_SetViewport,
+    IWineD3DDeviceImpl_GetViewport,
+    IWineD3DDeviceImpl_MultiplyTransform,
+    IWineD3DDeviceImpl_ValidateDevice,
+    IWineD3DDeviceImpl_ProcessVertices,
+    /*** State block ***/
+    IWineD3DDeviceImpl_BeginStateBlock,
+    IWineD3DDeviceImpl_EndStateBlock,
+    /*** Scene management ***/
+    IWineD3DDeviceImpl_BeginScene,
+    IWineD3DDeviceImpl_EndScene,
+    IWineD3DDeviceImpl_Present,
+    IWineD3DDeviceImpl_Clear,
+    /*** Drawing ***/
+    IWineD3DDeviceImpl_DrawPrimitive,
+    IWineD3DDeviceImpl_DrawIndexedPrimitive,
+    IWineD3DDeviceImpl_DrawPrimitiveUP,
+    IWineD3DDeviceImpl_DrawIndexedPrimitiveUP,
+    IWineD3DDeviceImpl_DrawPrimitiveStrided,
+    IWineD3DDeviceImpl_DrawIndexedPrimitiveStrided,
+    IWineD3DDeviceImpl_DrawRectPatch,
+    IWineD3DDeviceImpl_DrawTriPatch,
+    IWineD3DDeviceImpl_DeletePatch,
+    IWineD3DDeviceImpl_ColorFill,
+    IWineD3DDeviceImpl_UpdateTexture,
+    IWineD3DDeviceImpl_UpdateSurface,
+    IWineD3DDeviceImpl_GetFrontBufferData,
+    /*** object tracking ***/
+    IWineD3DDeviceImpl_ResourceReleased,
+    IWineD3DDeviceImpl_EnumResources
+};
+
+const IWineD3DDeviceVtbl IWineD3DDevice_DirtyConst_Vtbl =
+{
+    /*** IUnknown methods ***/
+    IWineD3DDeviceImpl_QueryInterface,
+    IWineD3DDeviceImpl_AddRef,
+    IWineD3DDeviceImpl_Release,
+    /*** IWineD3DDevice methods ***/
+    IWineD3DDeviceImpl_GetParent,
+    /*** Creation methods**/
+    IWineD3DDeviceImpl_CreateVertexBuffer,
+    IWineD3DDeviceImpl_CreateIndexBuffer,
+    IWineD3DDeviceImpl_CreateStateBlock,
+    IWineD3DDeviceImpl_CreateSurface,
+    IWineD3DDeviceImpl_CreateTexture,
+    IWineD3DDeviceImpl_CreateVolumeTexture,
+    IWineD3DDeviceImpl_CreateVolume,
+    IWineD3DDeviceImpl_CreateCubeTexture,
+    IWineD3DDeviceImpl_CreateQuery,
+    IWineD3DDeviceImpl_CreateSwapChain,
+    IWineD3DDeviceImpl_CreateVertexDeclaration,
+    IWineD3DDeviceImpl_CreateVertexDeclarationFromFVF,
+    IWineD3DDeviceImpl_CreateVertexShader,
+    IWineD3DDeviceImpl_CreatePixelShader,
+    IWineD3DDeviceImpl_CreatePalette,
+    /*** Odd functions **/
+    IWineD3DDeviceImpl_Init3D,
+    IWineD3DDeviceImpl_InitGDI,
+    IWineD3DDeviceImpl_Uninit3D,
+    IWineD3DDeviceImpl_UninitGDI,
+    IWineD3DDeviceImpl_SetMultithreaded,
+    IWineD3DDeviceImpl_EvictManagedResources,
+    IWineD3DDeviceImpl_GetAvailableTextureMem,
+    IWineD3DDeviceImpl_GetBackBuffer,
+    IWineD3DDeviceImpl_GetCreationParameters,
+    IWineD3DDeviceImpl_GetDeviceCaps,
+    IWineD3DDeviceImpl_GetDirect3D,
+    IWineD3DDeviceImpl_GetDisplayMode,
+    IWineD3DDeviceImpl_SetDisplayMode,
+    IWineD3DDeviceImpl_GetNumberOfSwapChains,
+    IWineD3DDeviceImpl_GetRasterStatus,
+    IWineD3DDeviceImpl_GetSwapChain,
+    IWineD3DDeviceImpl_Reset,
+    IWineD3DDeviceImpl_SetDialogBoxMode,
+    IWineD3DDeviceImpl_SetCursorProperties,
+    IWineD3DDeviceImpl_SetCursorPosition,
+    IWineD3DDeviceImpl_ShowCursor,
+    IWineD3DDeviceImpl_TestCooperativeLevel,
+    /*** Getters and setters **/
+    IWineD3DDeviceImpl_SetClipPlane,
+    IWineD3DDeviceImpl_GetClipPlane,
+    IWineD3DDeviceImpl_SetClipStatus,
+    IWineD3DDeviceImpl_GetClipStatus,
+    IWineD3DDeviceImpl_SetCurrentTexturePalette,
+    IWineD3DDeviceImpl_GetCurrentTexturePalette,
+    IWineD3DDeviceImpl_SetDepthStencilSurface,
+    IWineD3DDeviceImpl_GetDepthStencilSurface,
+    IWineD3DDeviceImpl_SetFVF,
+    IWineD3DDeviceImpl_GetFVF,
+    IWineD3DDeviceImpl_SetGammaRamp,
+    IWineD3DDeviceImpl_GetGammaRamp,
+    IWineD3DDeviceImpl_SetIndices,
+    IWineD3DDeviceImpl_GetIndices,
+    IWineD3DDeviceImpl_SetBaseVertexIndex,
+    IWineD3DDeviceImpl_GetBaseVertexIndex,
+    IWineD3DDeviceImpl_SetLight,
+    IWineD3DDeviceImpl_GetLight,
+    IWineD3DDeviceImpl_SetLightEnable,
+    IWineD3DDeviceImpl_GetLightEnable,
+    IWineD3DDeviceImpl_SetMaterial,
+    IWineD3DDeviceImpl_GetMaterial,
+    IWineD3DDeviceImpl_SetNPatchMode,
+    IWineD3DDeviceImpl_GetNPatchMode,
+    IWineD3DDeviceImpl_SetPaletteEntries,
+    IWineD3DDeviceImpl_GetPaletteEntries,
+    IWineD3DDeviceImpl_SetPixelShader,
+    IWineD3DDeviceImpl_GetPixelShader,
+    IWineD3DDeviceImpl_SetPixelShaderConstantB,
+    IWineD3DDeviceImpl_GetPixelShaderConstantB,
+    IWineD3DDeviceImpl_SetPixelShaderConstantI,
+    IWineD3DDeviceImpl_GetPixelShaderConstantI,
+    IWineD3DDeviceImpl_SetPixelShaderConstantF_DirtyConst,
+    IWineD3DDeviceImpl_GetPixelShaderConstantF,
+    IWineD3DDeviceImpl_SetRenderState,
+    IWineD3DDeviceImpl_GetRenderState,
+    IWineD3DDeviceImpl_SetRenderTarget,
+    IWineD3DDeviceImpl_GetRenderTarget,
+    IWineD3DDeviceImpl_SetFrontBackBuffers,
+    IWineD3DDeviceImpl_SetSamplerState,
+    IWineD3DDeviceImpl_GetSamplerState,
+    IWineD3DDeviceImpl_SetScissorRect,
+    IWineD3DDeviceImpl_GetScissorRect,
+    IWineD3DDeviceImpl_SetSoftwareVertexProcessing,
+    IWineD3DDeviceImpl_GetSoftwareVertexProcessing,
+    IWineD3DDeviceImpl_SetStreamSource,
+    IWineD3DDeviceImpl_GetStreamSource,
+    IWineD3DDeviceImpl_SetStreamSourceFreq,
+    IWineD3DDeviceImpl_GetStreamSourceFreq,
+    IWineD3DDeviceImpl_SetTexture,
+    IWineD3DDeviceImpl_GetTexture,
+    IWineD3DDeviceImpl_SetTextureStageState,
+    IWineD3DDeviceImpl_GetTextureStageState,
+    IWineD3DDeviceImpl_SetTransform,
+    IWineD3DDeviceImpl_GetTransform,
+    IWineD3DDeviceImpl_SetVertexDeclaration,
+    IWineD3DDeviceImpl_GetVertexDeclaration,
+    IWineD3DDeviceImpl_SetVertexShader,
+    IWineD3DDeviceImpl_GetVertexShader,
+    IWineD3DDeviceImpl_SetVertexShaderConstantB,
+    IWineD3DDeviceImpl_GetVertexShaderConstantB,
+    IWineD3DDeviceImpl_SetVertexShaderConstantI,
+    IWineD3DDeviceImpl_GetVertexShaderConstantI,
+    IWineD3DDeviceImpl_SetVertexShaderConstantF_DirtyConst,
+    IWineD3DDeviceImpl_GetVertexShaderConstantF,
+    IWineD3DDeviceImpl_SetViewport,
+    IWineD3DDeviceImpl_GetViewport,
+    IWineD3DDeviceImpl_MultiplyTransform,
+    IWineD3DDeviceImpl_ValidateDevice,
+    IWineD3DDeviceImpl_ProcessVertices,
+    /*** State block ***/
+    IWineD3DDeviceImpl_BeginStateBlock,
+    IWineD3DDeviceImpl_EndStateBlock,
+    /*** Scene management ***/
+    IWineD3DDeviceImpl_BeginScene,
+    IWineD3DDeviceImpl_EndScene,
+    IWineD3DDeviceImpl_Present,
+    IWineD3DDeviceImpl_Clear,
+    /*** Drawing ***/
+    IWineD3DDeviceImpl_DrawPrimitive,
+    IWineD3DDeviceImpl_DrawIndexedPrimitive,
+    IWineD3DDeviceImpl_DrawPrimitiveUP,
+    IWineD3DDeviceImpl_DrawIndexedPrimitiveUP,
+    IWineD3DDeviceImpl_DrawPrimitiveStrided,
+    IWineD3DDeviceImpl_DrawIndexedPrimitiveStrided,
+    IWineD3DDeviceImpl_DrawRectPatch,
+    IWineD3DDeviceImpl_DrawTriPatch,
+    IWineD3DDeviceImpl_DeletePatch,
+    IWineD3DDeviceImpl_ColorFill,
+    IWineD3DDeviceImpl_UpdateTexture,
+    IWineD3DDeviceImpl_UpdateSurface,
+    IWineD3DDeviceImpl_GetFrontBufferData,
+    /*** object tracking ***/
+    IWineD3DDeviceImpl_ResourceReleased,
+    IWineD3DDeviceImpl_EnumResources
+};
+
+const DWORD SavedPixelStates_R[NUM_SAVEDPIXELSTATES_R] = {
+    WINED3DRS_ALPHABLENDENABLE   ,
+    WINED3DRS_ALPHAFUNC          ,
+    WINED3DRS_ALPHAREF           ,
+    WINED3DRS_ALPHATESTENABLE    ,
+    WINED3DRS_BLENDOP            ,
+    WINED3DRS_COLORWRITEENABLE   ,
+    WINED3DRS_DESTBLEND          ,
+    WINED3DRS_DITHERENABLE       ,
+    WINED3DRS_FILLMODE           ,
+    WINED3DRS_FOGDENSITY         ,
+    WINED3DRS_FOGEND             ,
+    WINED3DRS_FOGSTART           ,
+    WINED3DRS_LASTPIXEL          ,
+    WINED3DRS_SHADEMODE          ,
+    WINED3DRS_SRCBLEND           ,
+    WINED3DRS_STENCILENABLE      ,
+    WINED3DRS_STENCILFAIL        ,
+    WINED3DRS_STENCILFUNC        ,
+    WINED3DRS_STENCILMASK        ,
+    WINED3DRS_STENCILPASS        ,
+    WINED3DRS_STENCILREF         ,
+    WINED3DRS_STENCILWRITEMASK   ,
+    WINED3DRS_STENCILZFAIL       ,
+    WINED3DRS_TEXTUREFACTOR      ,
+    WINED3DRS_WRAP0              ,
+    WINED3DRS_WRAP1              ,
+    WINED3DRS_WRAP2              ,
+    WINED3DRS_WRAP3              ,
+    WINED3DRS_WRAP4              ,
+    WINED3DRS_WRAP5              ,
+    WINED3DRS_WRAP6              ,
+    WINED3DRS_WRAP7              ,
+    WINED3DRS_ZENABLE            ,
+    WINED3DRS_ZFUNC              ,
+    WINED3DRS_ZWRITEENABLE
+};
+
+const DWORD SavedPixelStates_T[NUM_SAVEDPIXELSTATES_T] = {
+    WINED3DTSS_ADDRESSW              ,
+    WINED3DTSS_ALPHAARG0             ,
+    WINED3DTSS_ALPHAARG1             ,
+    WINED3DTSS_ALPHAARG2             ,
+    WINED3DTSS_ALPHAOP               ,
+    WINED3DTSS_BUMPENVLOFFSET        ,
+    WINED3DTSS_BUMPENVLSCALE         ,
+    WINED3DTSS_BUMPENVMAT00          ,
+    WINED3DTSS_BUMPENVMAT01          ,
+    WINED3DTSS_BUMPENVMAT10          ,
+    WINED3DTSS_BUMPENVMAT11          ,
+    WINED3DTSS_COLORARG0             ,
+    WINED3DTSS_COLORARG1             ,
+    WINED3DTSS_COLORARG2             ,
+    WINED3DTSS_COLOROP               ,
+    WINED3DTSS_RESULTARG             ,
+    WINED3DTSS_TEXCOORDINDEX         ,
+    WINED3DTSS_TEXTURETRANSFORMFLAGS
+};
+
+const DWORD SavedPixelStates_S[NUM_SAVEDPIXELSTATES_S] = {
+    WINED3DSAMP_ADDRESSU         ,
+    WINED3DSAMP_ADDRESSV         ,
+    WINED3DSAMP_ADDRESSW         ,
+    WINED3DSAMP_BORDERCOLOR      ,
+    WINED3DSAMP_MAGFILTER        ,
+    WINED3DSAMP_MINFILTER        ,
+    WINED3DSAMP_MIPFILTER        ,
+    WINED3DSAMP_MIPMAPLODBIAS    ,
+    WINED3DSAMP_MAXMIPLEVEL      ,
+    WINED3DSAMP_MAXANISOTROPY    ,
+    WINED3DSAMP_SRGBTEXTURE      ,
+    WINED3DSAMP_ELEMENTINDEX
+};
+
+const DWORD SavedVertexStates_R[NUM_SAVEDVERTEXSTATES_R] = {
+    WINED3DRS_AMBIENT                       ,
+    WINED3DRS_AMBIENTMATERIALSOURCE         ,
+    WINED3DRS_CLIPPING                      ,
+    WINED3DRS_CLIPPLANEENABLE               ,
+    WINED3DRS_COLORVERTEX                   ,
+    WINED3DRS_DIFFUSEMATERIALSOURCE         ,
+    WINED3DRS_EMISSIVEMATERIALSOURCE        ,
+    WINED3DRS_FOGDENSITY                    ,
+    WINED3DRS_FOGEND                        ,
+    WINED3DRS_FOGSTART                      ,
+    WINED3DRS_FOGTABLEMODE                  ,
+    WINED3DRS_FOGVERTEXMODE                 ,
+    WINED3DRS_INDEXEDVERTEXBLENDENABLE      ,
+    WINED3DRS_LIGHTING                      ,
+    WINED3DRS_LOCALVIEWER                   ,
+    WINED3DRS_MULTISAMPLEANTIALIAS          ,
+    WINED3DRS_MULTISAMPLEMASK               ,
+    WINED3DRS_NORMALIZENORMALS              ,
+    WINED3DRS_PATCHEDGESTYLE                ,
+    WINED3DRS_POINTSCALE_A                  ,
+    WINED3DRS_POINTSCALE_B                  ,
+    WINED3DRS_POINTSCALE_C                  ,
+    WINED3DRS_POINTSCALEENABLE              ,
+    WINED3DRS_POINTSIZE                     ,
+    WINED3DRS_POINTSIZE_MAX                 ,
+    WINED3DRS_POINTSIZE_MIN                 ,
+    WINED3DRS_POINTSPRITEENABLE             ,
+    WINED3DRS_RANGEFOGENABLE                ,
+    WINED3DRS_SPECULARMATERIALSOURCE        ,
+    WINED3DRS_TWEENFACTOR                   ,
+    WINED3DRS_VERTEXBLEND                   ,
+    WINED3DRS_CULLMODE                      ,
+    WINED3DRS_FOGCOLOR
+};
+
+const DWORD SavedVertexStates_T[NUM_SAVEDVERTEXSTATES_T] = {
+    WINED3DTSS_TEXCOORDINDEX         ,
+    WINED3DTSS_TEXTURETRANSFORMFLAGS
+};
+
+const DWORD SavedVertexStates_S[NUM_SAVEDVERTEXSTATES_S] = {
+    WINED3DSAMP_DMAPOFFSET
+};
+
+void IWineD3DDeviceImpl_MarkStateDirty(IWineD3DDeviceImpl *This, DWORD state) {
+    DWORD rep = This->StateTable[state].representative;
+    DWORD idx;
+    BYTE shift;
+    UINT i;
+    WineD3DContext *context;
+
+    if(!rep) return;
+    for(i = 0; i < This->numContexts; i++) {
+        context = This->contexts[i];
+        if(isStateDirty(context, rep)) continue;
+
+        context->dirtyArray[context->numDirtyEntries++] = rep;
+        idx = rep >> 5;
+        shift = rep & 0x1f;
+        context->isStateDirty[idx] |= (1 << shift);
+    }
+}
+
+void get_drawable_size_pbuffer(IWineD3DSurfaceImpl *This, UINT *width, UINT *height) {
+    IWineD3DDeviceImpl *dev = This->resource.wineD3DDevice;
+    /* The drawable size of a pbuffer render target is the current pbuffer size
+     */
+    *width = dev->pbufferWidth;
+    *height = dev->pbufferHeight;
+}
+
+void get_drawable_size_fbo(IWineD3DSurfaceImpl *This, UINT *width, UINT *height) {
+    /* The drawable size of a fbo target is the opengl texture size, which is the power of two size
+     */
+    *width = This->pow2Width;
+    *height = This->pow2Height;
+}
+
+void get_drawable_size_backbuffer(IWineD3DSurfaceImpl *This, UINT *width, UINT *height) {
+    IWineD3DDeviceImpl *dev = This->resource.wineD3DDevice;
+    /* The drawable size of a backbuffer / aux buffer offscreen target is the size of the
+     * current context's drawable, which is the size of the back buffer of the swapchain
+     * the active context belongs to. The back buffer of the swapchain is stored as the
+     * surface the context belongs to.
+     */
+    *width = ((IWineD3DSurfaceImpl *) dev->activeContext->surface)->currentDesc.Width;
+    *height = ((IWineD3DSurfaceImpl *) dev->activeContext->surface)->currentDesc.Height;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/directx.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/directx.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/directx.c	(revision 16410)
@@ -0,0 +1,4440 @@
+/*
+ * IWineD3D implementation
+ *
+ * Copyright 2002-2004 Jason Edmeades
+ * Copyright 2003-2004 Raphael Junqueira
+ * Copyright 2004 Christian Costa
+ * Copyright 2005 Oliver Stieber
+ * Copyright 2007-2008 Stefan Dösinger for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/* Compile time diagnostics: */
+
+#ifndef DEBUG_SINGLE_MODE
+/* Set to 1 to force only a single display mode to be exposed: */
+#define DEBUG_SINGLE_MODE 0
+#endif
+
+#include "config.h"
+#include <assert.h>
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d);
+WINE_DECLARE_DEBUG_CHANNEL(d3d_caps);
+
+/* The d3d device ID */
+static const GUID IID_D3DDEVICE_D3DUID = { 0xaeb2cdd4, 0x6e41, 0x43ea, { 0x94,0x1c,0x83,0x61,0xcc,0x76,0x07,0x81 } };
+
+/* Extension detection */
+static const struct {
+    const char *extension_string;
+    GL_SupportedExt extension;
+    DWORD version;
+} EXTENSION_MAP[] = {
+    /* APPLE */
+    {"GL_APPLE_client_storage",             APPLE_CLIENT_STORAGE,           0                           },
+    {"GL_APPLE_fence",                      APPLE_FENCE,                    0                           },
+    {"GL_APPLE_flush_render",               APPLE_FLUSH_RENDER,             0                           },
+    {"GL_APPLE_ycbcr_422",                  APPLE_YCBCR_422,                0                           },
+    {"GL_APPLE_float_pixels",               APPLE_FLOAT_PIXELS,             0                           },
+
+    /* ATI */
+    {"GL_ATI_separate_stencil",             ATI_SEPARATE_STENCIL,           0                           },
+    {"GL_ATI_texture_env_combine3",         ATI_TEXTURE_ENV_COMBINE3,       0                           },
+    {"GL_ATI_texture_mirror_once",          ATI_TEXTURE_MIRROR_ONCE,        0                           },
+    {"GL_ATI_fragment_shader",              ATI_FRAGMENT_SHADER,            0                           },
+    {"GL_ATI_texture_compression_3dc",      ATI_TEXTURE_COMPRESSION_3DC,    0                           },
+
+    /* ARB */
+    {"GL_ARB_color_buffer_float",           ARB_COLOR_BUFFER_FLOAT,         0                           },
+    {"GL_ARB_draw_buffers",                 ARB_DRAW_BUFFERS,               0                           },
+    {"GL_ARB_fragment_program",             ARB_FRAGMENT_PROGRAM,           0                           },
+    {"GL_ARB_fragment_shader",              ARB_FRAGMENT_SHADER,            0                           },
+    {"GL_ARB_half_float_pixel",             ARB_HALF_FLOAT_PIXEL,           0                           },
+    {"GL_ARB_imaging",                      ARB_IMAGING,                    0                           },
+    {"GL_ARB_multisample",                  ARB_MULTISAMPLE,                0                           }, /* needs GLX_ARB_MULTISAMPLE as well */
+    {"GL_ARB_multitexture",                 ARB_MULTITEXTURE,               0                           },
+    {"GL_ARB_occlusion_query",              ARB_OCCLUSION_QUERY,            0                           },
+    {"GL_ARB_pixel_buffer_object",          ARB_PIXEL_BUFFER_OBJECT,        0                           },
+    {"GL_ARB_point_parameters",             ARB_POINT_PARAMETERS,           0                           },
+    {"GL_ARB_point_sprite",                 ARB_POINT_SPRITE,               0                           },
+    {"GL_ARB_texture_border_clamp",         ARB_TEXTURE_BORDER_CLAMP,       0                           },
+    {"GL_ARB_texture_compression",          ARB_TEXTURE_COMPRESSION,        0                           },
+    {"GL_ARB_texture_cube_map",             ARB_TEXTURE_CUBE_MAP,           0                           },
+    {"GL_ARB_texture_env_add",              ARB_TEXTURE_ENV_ADD,            0                           },
+    {"GL_ARB_texture_env_combine",          ARB_TEXTURE_ENV_COMBINE,        0                           },
+    {"GL_ARB_texture_env_dot3",             ARB_TEXTURE_ENV_DOT3,           0                           },
+    {"GL_ARB_texture_float",                ARB_TEXTURE_FLOAT,              0                           },
+    {"GL_ARB_texture_mirrored_repeat",      ARB_TEXTURE_MIRRORED_REPEAT,    0                           },
+    {"GL_ARB_texture_non_power_of_two",     ARB_TEXTURE_NON_POWER_OF_TWO,   MAKEDWORD_VERSION(2, 0)     },
+    {"GL_ARB_texture_rectangle",            ARB_TEXTURE_RECTANGLE,          0                           },
+    {"GL_ARB_vertex_blend",                 ARB_VERTEX_BLEND,               0                           },
+    {"GL_ARB_vertex_buffer_object",         ARB_VERTEX_BUFFER_OBJECT,       0                           },
+    {"GL_ARB_vertex_program",               ARB_VERTEX_PROGRAM,             0                           },
+    {"GL_ARB_vertex_shader",                ARB_VERTEX_SHADER,              0                           },
+    {"GL_ARB_shader_objects",               ARB_SHADER_OBJECTS,             0                           },
+
+    /* EXT */
+    {"GL_EXT_blend_color",                  EXT_BLEND_COLOR,                0                           },
+    {"GL_EXT_blend_minmax",                 EXT_BLEND_MINMAX,               0                           },
+    {"GL_EXT_blend_equation_separate",      EXT_BLEND_EQUATION_SEPARATE,    0                           },
+    {"GL_EXT_blend_func_separate",          EXT_BLEND_FUNC_SEPARATE,        0                           },
+    {"GL_EXT_fog_coord",                    EXT_FOG_COORD,                  0                           },
+    {"GL_EXT_framebuffer_blit",             EXT_FRAMEBUFFER_BLIT,           0                           },
+    {"GL_EXT_framebuffer_multisample",      EXT_FRAMEBUFFER_MULTISAMPLE,    0                           },
+    {"GL_EXT_framebuffer_object",           EXT_FRAMEBUFFER_OBJECT,         0                           },
+    {"GL_EXT_paletted_texture",             EXT_PALETTED_TEXTURE,           0                           },
+    {"GL_EXT_point_parameters",             EXT_POINT_PARAMETERS,           0                           },
+    {"GL_EXT_secondary_color",              EXT_SECONDARY_COLOR,            0                           },
+    {"GL_EXT_stencil_two_side",             EXT_STENCIL_TWO_SIDE,           0                           },
+    {"GL_EXT_stencil_wrap",                 EXT_STENCIL_WRAP,               0                           },
+    {"GL_EXT_texture3D",                    EXT_TEXTURE3D,                  MAKEDWORD_VERSION(1, 2)     },
+    {"GL_EXT_texture_compression_s3tc",     EXT_TEXTURE_COMPRESSION_S3TC,   0                           },
+    {"GL_EXT_texture_compression_rgtc",     EXT_TEXTURE_COMPRESSION_RGTC,   0                           },
+    {"GL_EXT_texture_env_add",              EXT_TEXTURE_ENV_ADD,            0                           },
+    {"GL_EXT_texture_env_combine",          EXT_TEXTURE_ENV_COMBINE,        0                           },
+    {"GL_EXT_texture_env_dot3",             EXT_TEXTURE_ENV_DOT3,           0                           },
+    {"GL_EXT_texture_sRGB",                 EXT_TEXTURE_SRGB,               0                           },
+    {"GL_EXT_texture_filter_anisotropic",   EXT_TEXTURE_FILTER_ANISOTROPIC, 0                           },
+    {"GL_EXT_texture_lod",                  EXT_TEXTURE_LOD,                0                           },
+    {"GL_EXT_texture_lod_bias",             EXT_TEXTURE_LOD_BIAS,           0                           },
+    {"GL_EXT_vertex_shader",                EXT_VERTEX_SHADER,              0                           },
+    {"GL_EXT_gpu_program_parameters",       EXT_GPU_PROGRAM_PARAMETERS,     0                           },
+
+    /* NV */
+    {"GL_NV_half_float",                    NV_HALF_FLOAT,                  0                           },
+    {"GL_NV_fence",                         NV_FENCE,                       0                           },
+    {"GL_NV_fog_distance",                  NV_FOG_DISTANCE,                0                           },
+    {"GL_NV_fragment_program",              NV_FRAGMENT_PROGRAM,            0                           },
+    {"GL_NV_fragment_program2",             NV_FRAGMENT_PROGRAM2,           0                           },
+    {"GL_NV_register_combiners",            NV_REGISTER_COMBINERS,          0                           },
+    {"GL_NV_register_combiners2",           NV_REGISTER_COMBINERS2,         0                           },
+    {"GL_NV_texgen_reflection",             NV_TEXGEN_REFLECTION,           0                           },
+    {"GL_NV_texture_env_combine4",          NV_TEXTURE_ENV_COMBINE4,        0                           },
+    {"GL_NV_texture_shader",                NV_TEXTURE_SHADER,              0                           },
+    {"GL_NV_texture_shader2",               NV_TEXTURE_SHADER2,             0                           },
+    {"GL_NV_texture_shader3",               NV_TEXTURE_SHADER3,             0                           },
+    {"GL_NV_occlusion_query",               NV_OCCLUSION_QUERY,             0                           },
+    {"GL_NV_vertex_program",                NV_VERTEX_PROGRAM,              0                           },
+    {"GL_NV_vertex_program1_1",             NV_VERTEX_PROGRAM1_1,           0                           },
+    {"GL_NV_vertex_program2",               NV_VERTEX_PROGRAM2,             0                           },
+    {"GL_NV_vertex_program3",               NV_VERTEX_PROGRAM3,             0                           },
+    {"GL_NV_depth_clamp",                   NV_DEPTH_CLAMP,                 0                           },
+    {"GL_NV_light_max_exponent",            NV_LIGHT_MAX_EXPONENT,          0                           },
+
+    /* SGI */
+    {"GL_SGIS_generate_mipmap",             SGIS_GENERATE_MIPMAP,           0                           },
+};
+
+/**********************************************************
+ * Utility functions follow
+ **********************************************************/
+
+/* Adapters */
+static int numAdapters = 0;
+static struct WineD3DAdapter Adapters[1];
+
+static HRESULT WINAPI IWineD3DImpl_CheckDeviceFormat(IWineD3D *iface, UINT Adapter, WINED3DDEVTYPE DeviceType, WINED3DFORMAT AdapterFormat, DWORD Usage, WINED3DRESOURCETYPE RType, WINED3DFORMAT CheckFormat, WINED3DSURFTYPE SurfaceType);
+static const struct fragment_pipeline *select_fragment_implementation(UINT Adapter, WINED3DDEVTYPE DeviceType);
+static const shader_backend_t *select_shader_backend(UINT Adapter, WINED3DDEVTYPE DeviceType);
+static const struct blit_shader *select_blit_implementation(UINT Adapter, WINED3DDEVTYPE DeviceType);
+
+/* lookup tables */
+const int minLookup[MAX_LOOKUPS] =
+{
+    WINED3DTADDRESS_WRAP, /* WINELOOKUP_WARPPARAM */
+};
+
+const int maxLookup[MAX_LOOKUPS] =
+{
+    WINED3DTADDRESS_MIRRORONCE, /* WINELOOKUP_WARPPARAM */
+};
+
+DWORD *stateLookup[MAX_LOOKUPS];
+
+struct min_lookup minMipLookup[WINED3DTEXF_ANISOTROPIC + 1];
+const struct min_lookup minMipLookup_noFilter[WINED3DTEXF_ANISOTROPIC + 1] =
+{
+    {{GL_NEAREST, GL_NEAREST, GL_NEAREST}},
+    {{GL_NEAREST, GL_NEAREST, GL_NEAREST}},
+    {{GL_NEAREST, GL_NEAREST, GL_NEAREST}},
+    {{GL_NEAREST, GL_NEAREST, GL_NEAREST}},
+};
+
+GLenum magLookup[WINED3DTEXF_ANISOTROPIC + 1];
+const GLenum magLookup_noFilter[WINED3DTEXF_ANISOTROPIC + 1] =
+{
+    GL_NEAREST, GL_NEAREST, GL_NEAREST, GL_NEAREST
+};
+
+/* drawStridedSlow attributes */
+glAttribFunc position_funcs[WINED3DDECLTYPE_UNUSED];
+glAttribFunc diffuse_funcs[WINED3DDECLTYPE_UNUSED];
+glAttribFunc specular_funcs[WINED3DDECLTYPE_UNUSED];
+glAttribFunc normal_funcs[WINED3DDECLTYPE_UNUSED];
+glMultiTexCoordFunc multi_texcoord_funcs[WINED3DDECLTYPE_UNUSED];
+glAttribFunc texcoord_funcs[WINED3DDECLTYPE_UNUSED];
+
+/**
+ * Note: GL seems to trap if GetDeviceCaps is called before any HWND's created,
+ * i.e., there is no GL Context - Get a default rendering context to enable the
+ * function query some info from GL.
+ */
+
+static int             wined3d_fake_gl_context_ref = 0;
+static BOOL            wined3d_fake_gl_context_foreign;
+static BOOL            wined3d_fake_gl_context_available = FALSE;
+static HDC             wined3d_fake_gl_context_hdc = NULL;
+static HWND            wined3d_fake_gl_context_hwnd = NULL;
+
+static CRITICAL_SECTION wined3d_fake_gl_context_cs;
+static CRITICAL_SECTION_DEBUG wined3d_fake_gl_context_cs_debug =
+{
+    0, 0, &wined3d_fake_gl_context_cs,
+    { &wined3d_fake_gl_context_cs_debug.ProcessLocksList,
+      &wined3d_fake_gl_context_cs_debug.ProcessLocksList },
+    0, 0, { (DWORD_PTR)(__FILE__ ": wined3d_fake_gl_context_cs") }
+};
+static CRITICAL_SECTION wined3d_fake_gl_context_cs = { &wined3d_fake_gl_context_cs_debug, -1, 0, 0, 0, 0 };
+
+static void WineD3D_ReleaseFakeGLContext(void) {
+    HGLRC glCtx;
+
+    EnterCriticalSection(&wined3d_fake_gl_context_cs);
+
+    if(!wined3d_fake_gl_context_available) {
+        TRACE_(d3d_caps)("context not available\n");
+        LeaveCriticalSection(&wined3d_fake_gl_context_cs);
+        return;
+    }
+
+    glCtx = pwglGetCurrentContext();
+
+    TRACE_(d3d_caps)("decrementing ref from %i\n", wined3d_fake_gl_context_ref);
+    if (0 == (--wined3d_fake_gl_context_ref) ) {
+        if(!wined3d_fake_gl_context_foreign && glCtx) {
+            TRACE_(d3d_caps)("destroying fake GL context\n");
+            pwglMakeCurrent(NULL, NULL);
+            pwglDeleteContext(glCtx);
+        }
+        if(wined3d_fake_gl_context_hdc)
+            ReleaseDC(wined3d_fake_gl_context_hwnd, wined3d_fake_gl_context_hdc);
+        wined3d_fake_gl_context_hdc = NULL; /* Make sure we don't think that it is still around */
+        if(wined3d_fake_gl_context_hwnd)
+            DestroyWindow(wined3d_fake_gl_context_hwnd);
+        wined3d_fake_gl_context_hwnd = NULL;
+        wined3d_fake_gl_context_available = FALSE;
+    }
+    assert(wined3d_fake_gl_context_ref >= 0);
+
+    LeaveCriticalSection(&wined3d_fake_gl_context_cs);
+}
+
+static BOOL WineD3D_CreateFakeGLContext(void) {
+    HGLRC glCtx = NULL;
+
+    EnterCriticalSection(&wined3d_fake_gl_context_cs);
+
+    TRACE("getting context...\n");
+    if(wined3d_fake_gl_context_ref > 0) goto ret;
+    assert(0 == wined3d_fake_gl_context_ref);
+
+    wined3d_fake_gl_context_foreign = TRUE;
+
+    glCtx = pwglGetCurrentContext();
+    if (!glCtx) {
+        PIXELFORMATDESCRIPTOR pfd;
+        int iPixelFormat;
+
+        wined3d_fake_gl_context_foreign = FALSE;
+
+        /* We need a fake window as a hdc retrieved using GetDC(0) can't be used for much GL purposes */
+        wined3d_fake_gl_context_hwnd = CreateWindowA("WineD3D_OpenGL", "WineD3D fake window", WS_OVERLAPPEDWINDOW,        10, 10, 10, 10, NULL, NULL, NULL, NULL);
+        if(!wined3d_fake_gl_context_hwnd) {
+            ERR("HWND creation failed!\n");
+            goto fail;
+        }
+        wined3d_fake_gl_context_hdc = GetDC(wined3d_fake_gl_context_hwnd);
+        if(!wined3d_fake_gl_context_hdc) {
+            ERR("GetDC failed!\n");
+            goto fail;
+        }
+
+        /* PixelFormat selection */
+        ZeroMemory(&pfd, sizeof(pfd));
+        pfd.nSize      = sizeof(pfd);
+        pfd.nVersion   = 1;
+        pfd.dwFlags    = PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER | PFD_DRAW_TO_WINDOW;/*PFD_GENERIC_ACCELERATED*/
+        pfd.iPixelType = PFD_TYPE_RGBA;
+        pfd.cColorBits = 32;
+        pfd.iLayerType = PFD_MAIN_PLANE;
+
+        iPixelFormat = ChoosePixelFormat(wined3d_fake_gl_context_hdc, &pfd);
+        if(!iPixelFormat) {
+            /* If this happens something is very wrong as ChoosePixelFormat barely fails */
+            ERR("Can't find a suitable iPixelFormat\n");
+            goto fail;
+        }
+        DescribePixelFormat(wined3d_fake_gl_context_hdc, iPixelFormat, sizeof(pfd), &pfd);
+        SetPixelFormat(wined3d_fake_gl_context_hdc, iPixelFormat, &pfd);
+
+        /* Create a GL context */
+        glCtx = pwglCreateContext(wined3d_fake_gl_context_hdc);
+        if (!glCtx) {
+            WARN_(d3d_caps)("Error creating default context for capabilities initialization\n");
+            goto fail;
+        }
+
+        /* Make it the current GL context */
+        if (!pwglMakeCurrent(wined3d_fake_gl_context_hdc, glCtx)) {
+            WARN_(d3d_caps)("Error setting default context as current for capabilities initialization\n");
+            goto fail;
+        }
+    }
+
+  ret:
+    TRACE("incrementing ref from %i\n", wined3d_fake_gl_context_ref);
+    wined3d_fake_gl_context_ref++;
+    wined3d_fake_gl_context_available = TRUE;
+    LeaveCriticalSection(&wined3d_fake_gl_context_cs);
+    return TRUE;
+  fail:
+    if(wined3d_fake_gl_context_hdc)
+        ReleaseDC(wined3d_fake_gl_context_hwnd, wined3d_fake_gl_context_hdc);
+    wined3d_fake_gl_context_hdc = NULL;
+    if(wined3d_fake_gl_context_hwnd)
+        DestroyWindow(wined3d_fake_gl_context_hwnd);
+    wined3d_fake_gl_context_hwnd = NULL;
+    if(glCtx) pwglDeleteContext(glCtx);
+    LeaveCriticalSection(&wined3d_fake_gl_context_cs);
+    return FALSE;
+}
+
+/* Adjust the amount of used texture memory */
+long WineD3DAdapterChangeGLRam(IWineD3DDeviceImpl *D3DDevice, long glram){
+    UINT Adapter = D3DDevice->adapterNo;
+
+    Adapters[Adapter].UsedTextureRam += glram;
+    TRACE("Adjusted gl ram by %ld to %d\n", glram, Adapters[Adapter].UsedTextureRam);
+    return Adapters[Adapter].UsedTextureRam;
+}
+
+/**********************************************************
+ * IUnknown parts follows
+ **********************************************************/
+
+static HRESULT WINAPI IWineD3DImpl_QueryInterface(IWineD3D *iface,REFIID riid,LPVOID *ppobj)
+{
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+
+    TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj);
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IWineD3DBase)
+        || IsEqualGUID(riid, &IID_IWineD3DDevice)) {
+        IUnknown_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IWineD3DImpl_AddRef(IWineD3D *iface) {
+    IWineD3DImpl *This = (IWineD3DImpl *)iface;
+    ULONG refCount = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef increasing from %d\n", This, refCount - 1);
+    return refCount;
+}
+
+static ULONG WINAPI IWineD3DImpl_Release(IWineD3D *iface) {
+    IWineD3DImpl *This = (IWineD3DImpl *)iface;
+    ULONG ref;
+    TRACE("(%p) : Releasing from %d\n", This, This->ref);
+    ref = InterlockedDecrement(&This->ref);
+    if (ref == 0) {
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+
+    return ref;
+}
+
+/* Set the shader type for this device, depending on the given capabilities,
+ * the device type, and the user preferences in wined3d_settings */
+
+static void select_shader_mode(const WineD3D_GL_Info *gl_info, WINED3DDEVTYPE DeviceType, int *ps_selected, int *vs_selected)
+{
+    if (wined3d_settings.vs_mode == VS_NONE) {
+        *vs_selected = SHADER_NONE;
+    } else if (gl_info->supported[ARB_VERTEX_SHADER] && wined3d_settings.glslRequested) {
+        /* Geforce4 cards support GLSL but for vertex shaders only. Further its reported GLSL caps are
+         * wrong. This combined with the fact that glsl won't offer more features or performance, use ARB
+         * shaders only on this card. */
+        if(gl_info->vs_nv_version && gl_info->vs_nv_version < VS_VERSION_20)
+            *vs_selected = SHADER_ARB;
+        else
+            *vs_selected = SHADER_GLSL;
+    } else if (gl_info->supported[ARB_VERTEX_PROGRAM]) {
+        *vs_selected = SHADER_ARB;
+    } else {
+        *vs_selected = SHADER_NONE;
+    }
+
+    if (wined3d_settings.ps_mode == PS_NONE) {
+        *ps_selected = SHADER_NONE;
+    } else if (gl_info->supported[ARB_FRAGMENT_SHADER] && wined3d_settings.glslRequested) {
+        *ps_selected = SHADER_GLSL;
+    } else if (gl_info->supported[ARB_FRAGMENT_PROGRAM]) {
+        *ps_selected = SHADER_ARB;
+    } else if (gl_info->supported[ATI_FRAGMENT_SHADER]) {
+        *ps_selected = SHADER_ATI;
+    } else {
+        *ps_selected = SHADER_NONE;
+    }
+}
+
+/** Select the number of report maximum shader constants based on the selected shader modes */
+static void select_shader_max_constants(
+    int ps_selected_mode,
+    int vs_selected_mode,
+    WineD3D_GL_Info *gl_info) {
+
+    switch (vs_selected_mode) {
+        case SHADER_GLSL:
+            /* Subtract the other potential uniforms from the max available (bools, ints, and 1 row of projection matrix) */
+            gl_info->max_vshader_constantsF = gl_info->vs_glsl_constantsF - (MAX_CONST_B / 4) - MAX_CONST_I - 1;
+            break;
+        case SHADER_ARB:
+            /* We have to subtract any other PARAMs that we might use in our shader programs.
+             * ATI seems to count 2 implicit PARAMs when we use fog and NVIDIA counts 1,
+             * and we reference one row of the PROJECTION matrix which counts as 1 PARAM. */
+            gl_info->max_vshader_constantsF = gl_info->vs_arb_constantsF - 3;
+            break;
+        default:
+            gl_info->max_vshader_constantsF = 0;
+            break;
+    }
+
+    switch (ps_selected_mode) {
+        case SHADER_GLSL:
+            /* Subtract the other potential uniforms from the max available (bools & ints), and 2 states for fog.
+             * In theory the texbem instruction may need one more shader constant too. But lets assume
+             * that a sm <= 1.3 shader does not need all the uniforms provided by a glsl-capable card,
+             * and lets not take away a uniform needlessly from all other shaders.
+             */
+            gl_info->max_pshader_constantsF = gl_info->ps_glsl_constantsF - (MAX_CONST_B / 4) - MAX_CONST_I - 2;
+            break;
+        case SHADER_ARB:
+            /* The arb shader only loads the bump mapping environment matrix into the shader if it finds
+             * a free constant to do that, so only reduce the number of available constants by 2 for the fog states.
+             */
+            gl_info->max_pshader_constantsF = gl_info->ps_arb_constantsF - 2;
+            break;
+        default:
+            gl_info->max_pshader_constantsF = 0;
+            break;
+    }
+}
+
+/**********************************************************
+ * IWineD3D parts follows
+ **********************************************************/
+
+#define GLINFO_LOCATION (*gl_info)
+static inline BOOL test_arb_vs_offset_limit(const WineD3D_GL_Info *gl_info)
+{
+    GLuint prog;
+    BOOL ret = FALSE;
+    const char *testcode =
+        "!!ARBvp1.0\n"
+        "PARAM C[66] = { program.env[0..65] };\n"
+        "ADDRESS A0;"
+        "PARAM zero = {0.0, 0.0, 0.0, 0.0};\n"
+        "ARL A0.x, zero.x;\n"
+        "MOV result.position, C[A0.x + 65];\n"
+        "END\n";
+
+    while(glGetError());
+    GL_EXTCALL(glGenProgramsARB(1, &prog));
+    if(!prog) {
+        ERR("Failed to create an ARB offset limit test program\n");
+    }
+    GL_EXTCALL(glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prog));
+    GL_EXTCALL(glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB,
+                                  strlen(testcode), testcode));
+    if(glGetError() != 0) {
+        TRACE("OpenGL implementation does not allow indirect addressing offsets > 63\n");
+        TRACE("error: %s\n", debugstr_a((const char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)));
+        ret = TRUE;
+    } else TRACE("OpenGL implementation allows offsets > 63\n");
+
+    GL_EXTCALL(glBindProgramARB(GL_VERTEX_PROGRAM_ARB, 0));
+    GL_EXTCALL(glDeleteProgramsARB(1, &prog));
+    checkGLcall("ARB vp offset limit test cleanup\n");
+
+    return ret;
+}
+
+static DWORD ver_for_ext(GL_SupportedExt ext)
+{
+    unsigned int i;
+    for (i = 0; i < (sizeof(EXTENSION_MAP) / sizeof(*EXTENSION_MAP)); ++i) {
+        if(EXTENSION_MAP[i].extension == ext) {
+            return EXTENSION_MAP[i].version;
+        }
+    }
+    return 0;
+}
+
+static BOOL IWineD3DImpl_FillGLCaps(WineD3D_GL_Info *gl_info) {
+    const char *GL_Extensions    = NULL;
+    const char *WGL_Extensions   = NULL;
+    const char *gl_string        = NULL;
+    const char *gl_string_cursor = NULL;
+    GLint       gl_max;
+    GLfloat     gl_floatv[2];
+    int         major = 1, minor = 0;
+    BOOL        return_value = TRUE;
+    unsigned    i;
+    HDC         hdc;
+    unsigned int vidmem=0;
+
+    TRACE_(d3d_caps)("(%p)\n", gl_info);
+
+    ENTER_GL();
+
+    gl_string = (const char *) glGetString(GL_RENDERER);
+    if (NULL == gl_string)
+	gl_string = "None";
+    strcpy(gl_info->gl_renderer, gl_string);
+
+    gl_string = (const char *) glGetString(GL_VENDOR);
+    TRACE_(d3d_caps)("Filling vendor string %s\n", gl_string);
+    if (gl_string != NULL) {
+        /* Fill in the GL vendor */
+        if (strstr(gl_string, "NVIDIA")) {
+            gl_info->gl_vendor = VENDOR_NVIDIA;
+        } else if (strstr(gl_string, "ATI")) {
+            gl_info->gl_vendor = VENDOR_ATI;
+        } else if (strstr(gl_string, "Intel(R)") ||
+                   strstr(gl_info->gl_renderer, "Intel(R)") ||
+                   strstr(gl_string, "Intel Inc.")) {
+            gl_info->gl_vendor = VENDOR_INTEL;
+        } else if (strstr(gl_string, "Mesa")) {
+            gl_info->gl_vendor = VENDOR_MESA;
+        } else {
+            gl_info->gl_vendor = VENDOR_WINE;
+        }
+    } else {
+        gl_info->gl_vendor = VENDOR_WINE;
+    }
+
+
+    TRACE_(d3d_caps)("found GL_VENDOR (%s)->(0x%04x)\n", debugstr_a(gl_string), gl_info->gl_vendor);
+
+    /* Parse the GL_VERSION field into major and minor information */
+    gl_string = (const char *) glGetString(GL_VERSION);
+    if (gl_string != NULL) {
+
+        /* First, parse the generic opengl version. This is supposed not to be convoluted with
+         * driver specific information
+         */
+        gl_string_cursor = gl_string;
+        major = atoi(gl_string_cursor);
+        if(major <= 0) {
+            ERR("Invalid opengl major version: %d\n", major);
+        }
+        while (*gl_string_cursor <= '9' && *gl_string_cursor >= '0') {
+            ++gl_string_cursor;
+        }
+        if (*gl_string_cursor++ != '.') {
+            ERR_(d3d_caps)("Invalid opengl version string: %s\n", debugstr_a(gl_string));
+        }
+        minor = atoi(gl_string_cursor);
+        TRACE_(d3d_caps)("Found OpenGL version: %d.%d\n", major, minor);
+        gl_info->gl_version = MAKEDWORD_VERSION(major, minor);
+
+        /* Now parse the driver specific string which we'll report to the app */
+        switch (gl_info->gl_vendor) {
+        case VENDOR_NVIDIA:
+            gl_string_cursor = strstr(gl_string, "NVIDIA");
+            if (!gl_string_cursor) {
+                ERR_(d3d_caps)("Invalid nVidia version string: %s\n", debugstr_a(gl_string));
+                break;
+            }
+
+            gl_string_cursor = strstr(gl_string_cursor, " ");
+            if (!gl_string_cursor) {
+                ERR_(d3d_caps)("Invalid nVidia version string: %s\n", debugstr_a(gl_string));
+                break;
+            }
+
+            while (*gl_string_cursor == ' ') {
+                ++gl_string_cursor;
+            }
+
+            if (!*gl_string_cursor) {
+                ERR_(d3d_caps)("Invalid nVidia version string: %s\n", debugstr_a(gl_string));
+                break;
+            }
+
+            major = atoi(gl_string_cursor);
+            while (*gl_string_cursor <= '9' && *gl_string_cursor >= '0') {
+                ++gl_string_cursor;
+            }
+
+            if (*gl_string_cursor++ != '.') {
+                ERR_(d3d_caps)("Invalid nVidia version string: %s\n", debugstr_a(gl_string));
+                break;
+            }
+
+            minor = atoi(gl_string_cursor);
+            minor = major*100+minor;
+            major = 10;
+
+            break;
+
+        case VENDOR_ATI:
+            major = minor = 0;
+            gl_string_cursor = strchr(gl_string, '-');
+            if (gl_string_cursor) {
+                int error = 0;
+                gl_string_cursor++;
+
+                /* Check if version number is of the form x.y.z */
+                if (*gl_string_cursor > '9' && *gl_string_cursor < '0')
+                    error = 1;
+                if (!error && *(gl_string_cursor+2) > '9' && *(gl_string_cursor+2) < '0')
+                    error = 1;
+                if (!error && *(gl_string_cursor+4) > '9' && *(gl_string_cursor+4) < '0')
+                    error = 1;
+                if (!error && *(gl_string_cursor+1) != '.' && *(gl_string_cursor+3) != '.')
+                    error = 1;
+
+                /* Mark version number as malformed */
+                if (error)
+                    gl_string_cursor = 0;
+            }
+
+            if (!gl_string_cursor)
+                WARN_(d3d_caps)("malformed GL_VERSION (%s)\n", debugstr_a(gl_string));
+            else {
+                major = *gl_string_cursor - '0';
+                minor = (*(gl_string_cursor+2) - '0') * 256 + (*(gl_string_cursor+4) - '0');
+            }
+            break;
+
+        case VENDOR_INTEL:
+            /* Apple and Mesa version strings look differently, but both provide intel drivers */
+            if(strstr(gl_string, "APPLE")) {
+                /* [0-9]+.[0-9]+ APPLE-[0-9]+.[0.9]+.[0.9]+
+                 * We only need the first part, and use the APPLE as identification
+                 * "1.2 APPLE-1.4.56"
+                 */
+                gl_string_cursor = gl_string;
+                major = atoi(gl_string_cursor);
+                while (*gl_string_cursor <= '9' && *gl_string_cursor >= '0') {
+                    ++gl_string_cursor;
+                }
+
+                if (*gl_string_cursor++ != '.') {
+                    ERR_(d3d_caps)("Invalid MacOS-Intel version string: %s\n", debugstr_a(gl_string));
+                    break;
+                }
+
+                minor = atoi(gl_string_cursor);
+                break;
+            }
+
+        case VENDOR_MESA:
+            gl_string_cursor = strstr(gl_string, "Mesa");
+            gl_string_cursor = strstr(gl_string_cursor, " ");
+            while (*gl_string_cursor && ' ' == *gl_string_cursor) ++gl_string_cursor;
+            if (*gl_string_cursor) {
+                char tmp[16];
+                int cursor = 0;
+
+                while (*gl_string_cursor <= '9' && *gl_string_cursor >= '0') {
+                    tmp[cursor++] = *gl_string_cursor;
+                    ++gl_string_cursor;
+                }
+                tmp[cursor] = 0;
+                major = atoi(tmp);
+
+                if (*gl_string_cursor != '.') WARN_(d3d_caps)("malformed GL_VERSION (%s)\n", debugstr_a(gl_string));
+                ++gl_string_cursor;
+
+                cursor = 0;
+                while (*gl_string_cursor <= '9' && *gl_string_cursor >= '0') {
+                    tmp[cursor++] = *gl_string_cursor;
+                    ++gl_string_cursor;
+                }
+                tmp[cursor] = 0;
+                minor = atoi(tmp);
+            }
+            break;
+
+        default:
+            major = 0;
+            minor = 9;
+        }
+        gl_info->driver_version = MAKEDWORD_VERSION(major, minor);
+        TRACE_(d3d_caps)("found driver version (%s)->%i.%i->(0x%08x)\n", debugstr_a(gl_string), major, minor, gl_info->driver_version);
+        /* Current Windows drivers have versions like 6.14.... (some older have an earlier version) */
+        gl_info->driver_version_hipart = MAKEDWORD_VERSION(6, 14);
+    } else {
+        FIXME("OpenGL driver did not return version information\n");
+        gl_info->driver_version = MAKEDWORD_VERSION(0, 0);
+        gl_info->driver_version_hipart = MAKEDWORD_VERSION(6, 14);
+    }
+
+    TRACE_(d3d_caps)("found GL_RENDERER (%s)->(0x%04x)\n", debugstr_a(gl_info->gl_renderer), gl_info->gl_card);
+
+    /*
+     * Initialize openGL extension related variables
+     *  with Default values
+     */
+    memset(gl_info->supported, 0, sizeof(gl_info->supported));
+    gl_info->max_buffers        = 1;
+    gl_info->max_textures       = 1;
+    gl_info->max_texture_stages = 1;
+    gl_info->max_fragment_samplers = 1;
+    gl_info->max_vertex_samplers = 0;
+    gl_info->max_combined_samplers = 0;
+    gl_info->max_sampler_stages = 1;
+    gl_info->ps_arb_version = PS_VERSION_NOT_SUPPORTED;
+    gl_info->ps_arb_max_temps = 0;
+    gl_info->ps_arb_max_instructions = 0;
+    gl_info->vs_arb_version = VS_VERSION_NOT_SUPPORTED;
+    gl_info->vs_arb_max_temps = 0;
+    gl_info->vs_arb_max_instructions = 0;
+    gl_info->vs_nv_version  = VS_VERSION_NOT_SUPPORTED;
+    gl_info->vs_ati_version = VS_VERSION_NOT_SUPPORTED;
+    gl_info->vs_glsl_constantsF = 0;
+    gl_info->ps_glsl_constantsF = 0;
+    gl_info->vs_arb_constantsF = 0;
+    gl_info->ps_arb_constantsF = 0;
+
+    /* Retrieve opengl defaults */
+    glGetIntegerv(GL_MAX_CLIP_PLANES, &gl_max);
+    gl_info->max_clipplanes = min(WINED3DMAXUSERCLIPPLANES, gl_max);
+    TRACE_(d3d_caps)("ClipPlanes support - num Planes=%d\n", gl_max);
+
+    glGetIntegerv(GL_MAX_LIGHTS, &gl_max);
+    gl_info->max_lights = gl_max;
+    TRACE_(d3d_caps)("Lights support - max lights=%d\n", gl_max);
+
+    glGetIntegerv(GL_MAX_TEXTURE_SIZE, &gl_max);
+    gl_info->max_texture_size = gl_max;
+    TRACE_(d3d_caps)("Maximum texture size support - max texture size=%d\n", gl_max);
+
+    glGetFloatv(GL_POINT_SIZE_RANGE, gl_floatv);
+    gl_info->max_pointsizemin = gl_floatv[0];
+    gl_info->max_pointsize = gl_floatv[1];
+    TRACE_(d3d_caps)("Maximum point size support - max point size=%f\n", gl_floatv[1]);
+
+    /* Parse the gl supported features, in theory enabling parts of our code appropriately */
+    GL_Extensions = (const char *) glGetString(GL_EXTENSIONS);
+    TRACE_(d3d_caps)("GL_Extensions reported:\n");
+
+    if (NULL == GL_Extensions) {
+        ERR("   GL_Extensions returns NULL\n");
+    } else {
+        while (*GL_Extensions != 0x00) {
+            const char *Start;
+            char        ThisExtn[256];
+            size_t      len;
+
+            while (isspace(*GL_Extensions)) GL_Extensions++;
+            Start = GL_Extensions;
+            while (!isspace(*GL_Extensions) && *GL_Extensions != 0x00) {
+                GL_Extensions++;
+            }
+
+            len = GL_Extensions - Start;
+            if (len == 0 || len >= sizeof(ThisExtn))
+                continue;
+
+            memcpy(ThisExtn, Start, len);
+            ThisExtn[len] = '\0';
+            TRACE_(d3d_caps)("- %s\n", ThisExtn);
+
+            for (i = 0; i < (sizeof(EXTENSION_MAP) / sizeof(*EXTENSION_MAP)); ++i) {
+                if (!strcmp(ThisExtn, EXTENSION_MAP[i].extension_string)) {
+                    TRACE_(d3d_caps)(" FOUND: %s support\n", EXTENSION_MAP[i].extension_string);
+                    gl_info->supported[EXTENSION_MAP[i].extension] = TRUE;
+                    break;
+                }
+            }
+        }
+
+        LEAVE_GL();
+
+        /* Now work out what GL support this card really has */
+#define USE_GL_FUNC(type, pfn, ext, replace) { \
+            DWORD ver = ver_for_ext(ext); \
+            if(gl_info->supported[ext]) gl_info->pfn = (type) pwglGetProcAddress(#pfn); \
+            else if(ver && ver <= gl_info->gl_version) gl_info->pfn = (type) pwglGetProcAddress(#replace); \
+            else gl_info->pfn = NULL; \
+        }
+        GL_EXT_FUNCS_GEN;
+#undef USE_GL_FUNC
+
+#define USE_GL_FUNC(type, pfn, ext, replace) gl_info->pfn = (type) pwglGetProcAddress(#pfn);
+        WGL_EXT_FUNCS_GEN;
+#undef USE_GL_FUNC
+
+        ENTER_GL();
+        /* Now mark all the extensions supported which are included in the opengl core version. Do this *after*
+         * loading the functions, otherwise the code above will load the extension entry points instead of the
+         * core functions, which may not work
+         */
+        for (i = 0; i < (sizeof(EXTENSION_MAP) / sizeof(*EXTENSION_MAP)); ++i) {
+            if (gl_info->supported[EXTENSION_MAP[i].extension] == FALSE &&
+                EXTENSION_MAP[i].version <= gl_info->gl_version && EXTENSION_MAP[i].version) {
+                TRACE_(d3d_caps)(" GL CORE: %s support\n", EXTENSION_MAP[i].extension_string);
+                gl_info->supported[EXTENSION_MAP[i].extension] = TRUE;
+            }
+        }
+
+        if (gl_info->supported[APPLE_FENCE]) {
+            /* GL_NV_fence and GL_APPLE_fence provide the same functionality basically.
+             * The apple extension interacts with some other apple exts. Disable the NV
+             * extension if the apple one is support to prevent confusion in other parts
+             * of the code
+             */
+            gl_info->supported[NV_FENCE] = FALSE;
+        }
+        if (gl_info->supported[APPLE_FLOAT_PIXELS]) {
+            /* GL_APPLE_float_pixels == GL_ARB_texture_float + GL_ARB_half_float_pixel
+             *
+             * The enums are the same:
+             * GL_RGBA16F_ARB     = GL_RGBA_FLOAT16_APPLE = 0x881A
+             * GL_RGB16F_ARB      = GL_RGB_FLOAT16_APPLE  = 0x881B
+             * GL_RGBA32F_ARB     = GL_RGBA_FLOAT32_APPLE = 0x8814
+             * GL_RGB32F_ARB      = GL_RGB_FLOAT32_APPLE  = 0x8815
+             * GL_HALF_FLOAT_ARB  = GL_HALF_APPLE         =  0x140B
+             */
+            if(!gl_info->supported[ARB_TEXTURE_FLOAT]) {
+                TRACE_(d3d_caps)(" IMPLIED: GL_ARB_texture_float support(from GL_APPLE_float_pixels\n");
+                gl_info->supported[ARB_TEXTURE_FLOAT] = TRUE;
+            }
+            if(!gl_info->supported[ARB_HALF_FLOAT_PIXEL]) {
+                TRACE_(d3d_caps)(" IMPLIED: GL_ARB_half_float_pixel support(from GL_APPLE_float_pixels\n");
+                gl_info->supported[ARB_HALF_FLOAT_PIXEL] = TRUE;
+            }
+        }
+        if (gl_info->supported[ARB_TEXTURE_CUBE_MAP]) {
+            TRACE_(d3d_caps)(" IMPLIED: NVIDIA (NV) Texture Gen Reflection support\n");
+            gl_info->supported[NV_TEXGEN_REFLECTION] = TRUE;
+        }
+        if (gl_info->supported[NV_TEXTURE_SHADER2]) {
+            if(gl_info->supported[NV_REGISTER_COMBINERS]) {
+                /* Also disable ATI_FRAGMENT_SHADER if register combiners and texture_shader2
+                 * are supported. The nv extensions provide the same functionality as the
+                 * ATI one, and a bit more(signed pixelformats)
+                 */
+                gl_info->supported[ATI_FRAGMENT_SHADER] = FALSE;
+            }
+        }
+        if (gl_info->supported[ARB_DRAW_BUFFERS]) {
+            glGetIntegerv(GL_MAX_DRAW_BUFFERS_ARB, &gl_max);
+            gl_info->max_buffers = gl_max;
+            TRACE_(d3d_caps)("Max draw buffers: %u\n", gl_max);
+        }
+        if (gl_info->supported[ARB_MULTITEXTURE]) {
+            glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &gl_max);
+            gl_info->max_textures = min(MAX_TEXTURES, gl_max);
+            TRACE_(d3d_caps)("Max textures: %d\n", gl_info->max_textures);
+
+            if (gl_info->supported[NV_REGISTER_COMBINERS]) {
+                GLint tmp;
+                glGetIntegerv(GL_MAX_GENERAL_COMBINERS_NV, &tmp);
+                gl_info->max_texture_stages = min(MAX_TEXTURES, tmp);
+            } else {
+                gl_info->max_texture_stages = min(MAX_TEXTURES, gl_max);
+            }
+            TRACE_(d3d_caps)("Max texture stages: %d\n", gl_info->max_texture_stages);
+
+            if (gl_info->supported[ARB_FRAGMENT_PROGRAM]) {
+                GLint tmp;
+                glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS_ARB, &tmp);
+                gl_info->max_fragment_samplers = min(MAX_FRAGMENT_SAMPLERS, tmp);
+            } else {
+                gl_info->max_fragment_samplers = max(gl_info->max_fragment_samplers, gl_max);
+            }
+            TRACE_(d3d_caps)("Max fragment samplers: %d\n", gl_info->max_fragment_samplers);
+
+            if (gl_info->supported[ARB_VERTEX_SHADER]) {
+                GLint tmp;
+                glGetIntegerv(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB, &tmp);
+                gl_info->max_vertex_samplers = tmp;
+                glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB, &tmp);
+                gl_info->max_combined_samplers = tmp;
+
+                /* Loading GLSL sampler uniforms is much simpler if we can assume that the sampler setup
+                 * is known at shader link time. In a vertex shader + pixel shader combination this isn't
+                 * an issue because then the sampler setup only depends on the two shaders. If a pixel
+                 * shader is used with fixed function vertex processing we're fine too because fixed function
+                 * vertex processing doesn't use any samplers. If fixed function fragment processing is
+                 * used we have to make sure that all vertex sampler setups are valid together with all
+                 * possible fixed function fragment processing setups. This is true if vsamplers + MAX_TEXTURES
+                 * <= max_samplers. This is true on all d3d9 cards that support vtf(gf 6 and gf7 cards).
+                 * dx9 radeon cards do not support vertex texture fetch. DX10 cards have 128 samplers, and
+                 * dx9 is limited to 8 fixed function texture stages and 4 vertex samplers. DX10 does not have
+                 * a fixed function pipeline anymore.
+                 *
+                 * So this is just a check to check that our assumption holds true. If not, write a warning
+                 * and reduce the number of vertex samplers or probably disable vertex texture fetch.
+                 */
+                if(gl_info->max_vertex_samplers &&
+                   MAX_TEXTURES + gl_info->max_vertex_samplers > gl_info->max_combined_samplers) {
+                    FIXME("OpenGL implementation supports %u vertex samplers and %u total samplers\n",
+                          gl_info->max_vertex_samplers, gl_info->max_combined_samplers);
+                    FIXME("Expected vertex samplers + MAX_TEXTURES(=8) > combined_samplers\n");
+                    if( gl_info->max_combined_samplers > MAX_TEXTURES )
+                        gl_info->max_vertex_samplers =
+                            gl_info->max_combined_samplers - MAX_TEXTURES;
+                    else
+                        gl_info->max_vertex_samplers = 0;
+                }
+            } else {
+                gl_info->max_combined_samplers = gl_info->max_fragment_samplers;
+            }
+            TRACE_(d3d_caps)("Max vertex samplers: %u\n", gl_info->max_vertex_samplers);
+            TRACE_(d3d_caps)("Max combined samplers: %u\n", gl_info->max_combined_samplers);
+        }
+        if (gl_info->supported[ARB_VERTEX_BLEND]) {
+            glGetIntegerv(GL_MAX_VERTEX_UNITS_ARB, &gl_max);
+            gl_info->max_blends = gl_max;
+            TRACE_(d3d_caps)("Max blends: %u\n", gl_info->max_blends);
+        }
+        if (gl_info->supported[EXT_TEXTURE3D]) {
+            glGetIntegerv(GL_MAX_3D_TEXTURE_SIZE_EXT, &gl_max);
+            gl_info->max_texture3d_size = gl_max;
+            TRACE_(d3d_caps)("Max texture3D size: %d\n", gl_info->max_texture3d_size);
+        }
+        if (gl_info->supported[EXT_TEXTURE_FILTER_ANISOTROPIC]) {
+            glGetIntegerv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &gl_max);
+            gl_info->max_anisotropy = gl_max;
+            TRACE_(d3d_caps)("Max anisotropy: %d\n", gl_info->max_anisotropy);
+        }
+        if (gl_info->supported[ARB_FRAGMENT_PROGRAM]) {
+            gl_info->ps_arb_version = PS_VERSION_11;
+            GL_EXTCALL(glGetProgramivARB(GL_FRAGMENT_PROGRAM_ARB, GL_MAX_PROGRAM_ENV_PARAMETERS_ARB, &gl_max));
+            gl_info->ps_arb_constantsF = gl_max;
+            TRACE_(d3d_caps)("Max ARB_FRAGMENT_PROGRAM float constants: %d\n", gl_info->ps_arb_constantsF);
+            GL_EXTCALL(glGetProgramivARB(GL_FRAGMENT_PROGRAM_ARB, GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB, &gl_max));
+            gl_info->ps_arb_max_temps = gl_max;
+            TRACE_(d3d_caps)("Max ARB_FRAGMENT_PROGRAM native temporaries: %d\n", gl_info->ps_arb_max_temps);
+            GL_EXTCALL(glGetProgramivARB(GL_FRAGMENT_PROGRAM_ARB, GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB, &gl_max));
+            gl_info->ps_arb_max_instructions = gl_max;
+            TRACE_(d3d_caps)("Max ARB_FRAGMENT_PROGRAM native instructions: %d\n", gl_info->ps_arb_max_instructions);
+        }
+        if (gl_info->supported[ARB_VERTEX_PROGRAM]) {
+            gl_info->vs_arb_version = VS_VERSION_11;
+            GL_EXTCALL(glGetProgramivARB(GL_VERTEX_PROGRAM_ARB, GL_MAX_PROGRAM_ENV_PARAMETERS_ARB, &gl_max));
+            gl_info->vs_arb_constantsF = gl_max;
+            TRACE_(d3d_caps)("Max ARB_VERTEX_PROGRAM float constants: %d\n", gl_info->vs_arb_constantsF);
+            GL_EXTCALL(glGetProgramivARB(GL_VERTEX_PROGRAM_ARB, GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB, &gl_max));
+            gl_info->vs_arb_max_temps = gl_max;
+            TRACE_(d3d_caps)("Max ARB_VERTEX_PROGRAM native temporaries: %d\n", gl_info->vs_arb_max_temps);
+            GL_EXTCALL(glGetProgramivARB(GL_VERTEX_PROGRAM_ARB, GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB, &gl_max));
+            gl_info->vs_arb_max_instructions = gl_max;
+            TRACE_(d3d_caps)("Max ARB_VERTEX_PROGRAM native instructions: %d\n", gl_info->vs_arb_max_instructions);
+
+            gl_info->arb_vs_offset_limit = test_arb_vs_offset_limit(gl_info);
+        }
+        if (gl_info->supported[ARB_VERTEX_SHADER]) {
+            glGetIntegerv(GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB, &gl_max);
+            gl_info->vs_glsl_constantsF = gl_max / 4;
+            TRACE_(d3d_caps)("Max ARB_VERTEX_SHADER float constants: %u\n", gl_info->vs_glsl_constantsF);
+        }
+        if (gl_info->supported[ARB_FRAGMENT_SHADER]) {
+            glGetIntegerv(GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB, &gl_max);
+            gl_info->ps_glsl_constantsF = gl_max / 4;
+            TRACE_(d3d_caps)("Max ARB_FRAGMENT_SHADER float constants: %u\n", gl_info->ps_glsl_constantsF);
+            glGetIntegerv(GL_MAX_VARYING_FLOATS_ARB, &gl_max);
+            gl_info->max_glsl_varyings = gl_max;
+            TRACE_(d3d_caps)("Max GLSL varyings: %u (%u 4 component varyings)\n", gl_max, gl_max / 4);
+        }
+        if (gl_info->supported[EXT_VERTEX_SHADER]) {
+            gl_info->vs_ati_version = VS_VERSION_11;
+        }
+        if (gl_info->supported[NV_VERTEX_PROGRAM3]) {
+            gl_info->vs_nv_version = VS_VERSION_30;
+        } else if (gl_info->supported[NV_VERTEX_PROGRAM2]) {
+            gl_info->vs_nv_version = VS_VERSION_20;
+        } else if (gl_info->supported[NV_VERTEX_PROGRAM1_1]) {
+            gl_info->vs_nv_version = VS_VERSION_11;
+        } else if (gl_info->supported[NV_VERTEX_PROGRAM]) {
+            gl_info->vs_nv_version = VS_VERSION_10;
+        }
+        if (gl_info->supported[NV_FRAGMENT_PROGRAM2]) {
+            gl_info->ps_nv_version = PS_VERSION_30;
+        } else if (gl_info->supported[NV_FRAGMENT_PROGRAM]) {
+            gl_info->ps_nv_version = PS_VERSION_20;
+        }
+        if (gl_info->supported[NV_LIGHT_MAX_EXPONENT]) {
+            glGetFloatv(GL_MAX_SHININESS_NV, &gl_info->max_shininess);
+        } else {
+            gl_info->max_shininess = 128.0;
+        }
+        if (gl_info->supported[ARB_TEXTURE_NON_POWER_OF_TWO]) {
+            /* If we have full NP2 texture support, disable GL_ARB_texture_rectangle because we will never use it.
+             * This saves a few redundant glDisable calls
+             */
+            gl_info->supported[ARB_TEXTURE_RECTANGLE] = FALSE;
+        }
+        if(gl_info->supported[ATI_FRAGMENT_SHADER]) {
+            /* Disable NV_register_combiners and fragment shader if this is supported.
+             * generally the NV extensions are preferred over the ATI ones, and this
+             * extension is disabled if register_combiners and texture_shader2 are both
+             * supported. So we reach this place only if we have incomplete NV dxlevel 8
+             * fragment processing support
+             */
+            gl_info->supported[NV_REGISTER_COMBINERS] = FALSE;
+            gl_info->supported[NV_REGISTER_COMBINERS2] = FALSE;
+            gl_info->supported[NV_TEXTURE_SHADER] = FALSE;
+            gl_info->supported[NV_TEXTURE_SHADER2] = FALSE;
+            gl_info->supported[NV_TEXTURE_SHADER3] = FALSE;
+        }
+
+    }
+    checkGLcall("extension detection\n");
+
+    /* In some cases the number of texture stages can be larger than the number
+     * of samplers. The GF4 for example can use only 2 samplers (no fragment
+     * shaders), but 8 texture stages (register combiners). */
+    gl_info->max_sampler_stages = max(gl_info->max_fragment_samplers, gl_info->max_texture_stages);
+
+    /* We can only use ORM_FBO when the hardware supports it. */
+    if (wined3d_settings.offscreen_rendering_mode == ORM_FBO && !gl_info->supported[EXT_FRAMEBUFFER_OBJECT]) {
+        WARN_(d3d_caps)("GL_EXT_framebuffer_object not supported, falling back to PBuffer offscreen rendering mode.\n");
+        wined3d_settings.offscreen_rendering_mode = ORM_PBUFFER;
+    }
+
+    /* MRTs are currently only supported when FBOs are used. */
+    if (wined3d_settings.offscreen_rendering_mode != ORM_FBO) {
+        gl_info->max_buffers = 1;
+    }
+
+    /* Below is a list of Nvidia and ATI GPUs. Both vendors have dozens of different GPUs with roughly the same
+     * features. In most cases GPUs from a certain family differ in clockspeeds, the amount of video memory and
+     * in case of the latest videocards in the number of pixel/vertex pipelines.
+     *
+     * A Direct3D device object contains the PCI id (vendor + device) of the videocard which is used for
+     * rendering. Various games use this information to get a rough estimation of the features of the card
+     * and some might use it for enabling 3d effects only on certain types of videocards. In some cases
+     * games might even use it to work around bugs which happen on certain videocards/driver combinations.
+     * The problem is that OpenGL only exposes a rendering string containing the name of the videocard and
+     * not the PCI id.
+     *
+     * Various games depend on the PCI id, so somehow we need to provide one. A simple option is to parse
+     * the renderer string and translate this to the right PCI id. This is a lot of work because there are more
+     * than 200 GPUs just for Nvidia. Various cards share the same renderer string, so the amount of code might
+     * be 'small' but there are quite a number of exceptions which would make this a pain to maintain.
+     * Another way would be to query the PCI id from the operating system (assuming this is the videocard which
+     * is used for rendering which is not always the case). This would work but it is not very portable. Second
+     * it would not work well in, let's say, a remote X situation in which the amount of 3d features which can be used
+     * is limited.
+     *
+     * As said most games only use the PCI id to get an indication of the capabilities of the card.
+     * It doesn't really matter if the given id is the correct one if we return the id of a card with
+     * similar 3d features.
+     *
+     * The code below checks the OpenGL capabilities of a videocard and matches that to a certain level of
+     * Direct3D functionality. Once a card passes the Direct3D9 check, we know that the card (in case of Nvidia)
+     * is at least a GeforceFX. To give a better estimate we do a basic check on the renderer string but if that
+     * won't pass we return a default card. This way is better than maintaining a full card database as even
+     * without a full database we can return a card with similar features. Second the size of the database
+     * can be made quite small because when you know what type of 3d functionality a card has, you know to which
+     * GPU family the GPU must belong. Because of this you only have to check a small part of the renderer string
+     * to distinguishes between different models from that family.
+     *
+     * The code also selects a default amount of video memory which we will use for an estimation of the amount
+     * of free texture memory. In case of real D3D the amount of texture memory includes video memory and system
+     * memory (to be specific AGP memory or in case of PCIE TurboCache/HyperMemory). We don't know how much
+     * system memory can be addressed by the system but we can make a reasonable estimation about the amount of
+     * video memory. If the value is slightly wrong it doesn't matter as we didn't include AGP-like memory which
+     * makes the amount of addressable memory higher and second OpenGL isn't that critical it moves to system
+     * memory behind our backs if really needed.
+     * Note that the amount of video memory can be overruled using a registry setting.
+     */
+    switch (gl_info->gl_vendor) {
+        case VENDOR_NVIDIA:
+            /* Both the GeforceFX, 6xxx and 7xxx series support D3D9. The last two types have more
+             * shader capabilities, so we use the shader capabilities to distinguish between FX and 6xxx/7xxx.
+             */
+            if(WINE_D3D9_CAPABLE(gl_info) && (gl_info->vs_nv_version == VS_VERSION_30)) {
+                /* Geforce GTX - highend */
+                if(strstr(gl_info->gl_renderer, "GTX 280")) {
+                    gl_info->gl_card = CARD_NVIDIA_GEFORCE_GTX280;
+                    vidmem = 1024;
+                }
+                /* Geforce9 - highend */
+                else if(strstr(gl_info->gl_renderer, "9800")) {
+                    gl_info->gl_card = CARD_NVIDIA_GEFORCE_9800GT;
+                    vidmem = 512;
+                }
+                /* Geforce9 - midend */
+                else if(strstr(gl_info->gl_renderer, "9600")) {
+                    gl_info->gl_card = CARD_NVIDIA_GEFORCE_9600GT;
+                    vidmem = 384; /* The 9600GSO has 384MB, the 9600GT has 512-1024MB */
+                }
+                /* Geforce8 - highend */
+                else if (strstr(gl_info->gl_renderer, "8800")) {
+                    gl_info->gl_card = CARD_NVIDIA_GEFORCE_8800GTS;
+                    vidmem = 320; /* The 8800GTS uses 320MB, a 8800GTX can have 768MB */
+                }
+                /* Geforce8 - midend mobile */
+                else if(strstr(gl_info->gl_renderer, "8600 M")) {
+                    gl_info->gl_card = CARD_NVIDIA_GEFORCE_8600MGT;
+                    vidmem = 512;
+                }
+                /* Geforce8 - midend */
+                else if(strstr(gl_info->gl_renderer, "8600") ||
+                        strstr(gl_info->gl_renderer, "8700"))
+                {
+                    gl_info->gl_card = CARD_NVIDIA_GEFORCE_8600GT;
+                    vidmem = 256;
+                }
+                /* Geforce8 - lowend */
+                else if(strstr(gl_info->gl_renderer, "8300") ||
+                        strstr(gl_info->gl_renderer, "8400") ||
+                        strstr(gl_info->gl_renderer, "8500"))
+                {
+                    gl_info->gl_card = CARD_NVIDIA_GEFORCE_8300GS;
+                    vidmem = 128; /* 128-256MB for a 8300, 256-512MB for a 8400 */
+                }
+                /* Geforce7 - highend */
+                else if(strstr(gl_info->gl_renderer, "7800") ||
+                        strstr(gl_info->gl_renderer, "7900") ||
+                        strstr(gl_info->gl_renderer, "7950") ||
+                        strstr(gl_info->gl_renderer, "Quadro FX 4") ||
+                        strstr(gl_info->gl_renderer, "Quadro FX 5"))
+                {
+                    gl_info->gl_card = CARD_NVIDIA_GEFORCE_7800GT;
+                    vidmem = 256; /* A 7800GT uses 256MB while highend 7900 cards can use 512MB */
+                }
+                /* Geforce7 midend */
+                else if(strstr(gl_info->gl_renderer, "7600") ||
+                        strstr(gl_info->gl_renderer, "7700")) {
+                    gl_info->gl_card = CARD_NVIDIA_GEFORCE_7600;
+                    vidmem = 256; /* The 7600 uses 256-512MB */
+                /* Geforce7 lower medium */
+                } else if(strstr(gl_info->gl_renderer, "7400")) {
+                    gl_info->gl_card = CARD_NVIDIA_GEFORCE_7400;
+                    vidmem = 256; /* The 7400 uses 256-512MB */
+                }
+                /* Geforce7 lowend */
+                else if(strstr(gl_info->gl_renderer, "7300")) {
+                    gl_info->gl_card = CARD_NVIDIA_GEFORCE_7300;
+                    vidmem = 256; /* Mac Pros with this card have 256 MB */
+                }
+                /* Geforce6 highend */
+                else if(strstr(gl_info->gl_renderer, "6800"))
+                {
+                    gl_info->gl_card = CARD_NVIDIA_GEFORCE_6800;
+                    vidmem = 128; /* The 6800 uses 128-256MB, the 7600 uses 256-512MB */
+                }
+                /* Geforce6 - midend */
+                else if(strstr(gl_info->gl_renderer, "6600") ||
+                        strstr(gl_info->gl_renderer, "6610") ||
+                        strstr(gl_info->gl_renderer, "6700"))
+                {
+                    gl_info->gl_card = CARD_NVIDIA_GEFORCE_6600GT;
+                    vidmem = 128; /* A 6600GT has 128-256MB */
+                }
+                /* Geforce6/7 lowend */
+                else {
+                    gl_info->gl_card = CARD_NVIDIA_GEFORCE_6200; /* Geforce 6100/6150/6200/7300/7400/7500 */
+                    vidmem = 64; /* */
+                }
+            } else if(WINE_D3D9_CAPABLE(gl_info)) {
+                /* GeforceFX - highend */
+                if (strstr(gl_info->gl_renderer, "5800") ||
+                    strstr(gl_info->gl_renderer, "5900") ||
+                    strstr(gl_info->gl_renderer, "5950") ||
+                    strstr(gl_info->gl_renderer, "Quadro FX"))
+                {
+                    gl_info->gl_card = CARD_NVIDIA_GEFORCEFX_5800;
+                    vidmem = 256; /* 5800-5900 cards use 256MB */
+                }
+                /* GeforceFX - midend */
+                else if(strstr(gl_info->gl_renderer, "5600") ||
+                        strstr(gl_info->gl_renderer, "5650") ||
+                        strstr(gl_info->gl_renderer, "5700") ||
+                        strstr(gl_info->gl_renderer, "5750"))
+                {
+                    gl_info->gl_card = CARD_NVIDIA_GEFORCEFX_5600;
+                    vidmem = 128; /* A 5600 uses 128-256MB */
+                }
+                /* GeforceFX - lowend */
+                else {
+                    gl_info->gl_card = CARD_NVIDIA_GEFORCEFX_5200; /* GeforceFX 5100/5200/5250/5300/5500 */
+                    vidmem = 64; /* Normal FX5200 cards use 64-256MB; laptop (non-standard) can have less */
+                }
+            } else if(WINE_D3D8_CAPABLE(gl_info)) {
+                if (strstr(gl_info->gl_renderer, "GeForce4 Ti") || strstr(gl_info->gl_renderer, "Quadro4")) {
+                    gl_info->gl_card = CARD_NVIDIA_GEFORCE4_TI4200; /* Geforce4 Ti4200/Ti4400/Ti4600/Ti4800, Quadro4 */
+                    vidmem = 64; /* Geforce4 Ti cards have 64-128MB */
+                }
+                else {
+                    gl_info->gl_card = CARD_NVIDIA_GEFORCE3; /* Geforce3 standard/Ti200/Ti500, Quadro DCC */
+                    vidmem = 64; /* Geforce3 cards have 64-128MB */
+                }
+            } else if(WINE_D3D7_CAPABLE(gl_info)) {
+                if (strstr(gl_info->gl_renderer, "GeForce4 MX")) {
+                    gl_info->gl_card = CARD_NVIDIA_GEFORCE4_MX; /* MX420/MX440/MX460/MX4000 */
+                    vidmem = 64; /* Most Geforce4MX GPUs have at least 64MB of memory, some early models had 32MB but most have 64MB or even 128MB */
+                }
+                else if(strstr(gl_info->gl_renderer, "GeForce2 MX") || strstr(gl_info->gl_renderer, "Quadro2 MXR")) {
+                    gl_info->gl_card = CARD_NVIDIA_GEFORCE2_MX; /* Geforce2 standard/MX100/MX200/MX400, Quadro2 MXR */
+                    vidmem = 32; /* Geforce2MX GPUs have 32-64MB of video memory */
+                }
+                else if(strstr(gl_info->gl_renderer, "GeForce2") || strstr(gl_info->gl_renderer, "Quadro2")) {
+                    gl_info->gl_card = CARD_NVIDIA_GEFORCE2; /* Geforce2 GTS/Pro/Ti/Ultra, Quadro2 */
+                    vidmem = 32; /* Geforce2 GPUs have 32-64MB of video memory */
+                }
+                else {
+                    gl_info->gl_card = CARD_NVIDIA_GEFORCE; /* Geforce 256/DDR, Quadro */
+                    vidmem = 32; /* Most Geforce1 cards have 32MB, there are also some rare 16 and 64MB (Dell) models */
+                }
+            } else {
+                if (strstr(gl_info->gl_renderer, "TNT2")) {
+                    gl_info->gl_card = CARD_NVIDIA_RIVA_TNT2; /* Riva TNT2 standard/M64/Pro/Ultra */
+                    vidmem = 32; /* Most TNT2 boards have 32MB, though there are 16MB boards too */
+                }
+                else {
+                    gl_info->gl_card = CARD_NVIDIA_RIVA_TNT; /* Riva TNT, Vanta */
+                    vidmem = 16; /* Most TNT boards have 16MB, some rare models have 8MB */
+                }
+            }
+            break;
+        case VENDOR_ATI:
+            if(WINE_D3D9_CAPABLE(gl_info)) {
+                /* Radeon R6xx HD2900/HD3800 - highend */
+                if (strstr(gl_info->gl_renderer, "HD 2900") ||
+                    strstr(gl_info->gl_renderer, "HD 3870") ||
+                    strstr(gl_info->gl_renderer, "HD 3850"))
+                {
+                    gl_info->gl_card = CARD_ATI_RADEON_HD2900;
+                    vidmem = 512; /* HD2900/HD3800 uses 256-1024MB */
+                }
+                /* Radeon R6xx HD2600/HD3600 - midend; HD3830 is China-only midend */
+                else if (strstr(gl_info->gl_renderer, "HD 2600") ||
+                         strstr(gl_info->gl_renderer, "HD 3830") ||
+                         strstr(gl_info->gl_renderer, "HD 3690") ||
+                         strstr(gl_info->gl_renderer, "HD 3650"))
+                {
+                    gl_info->gl_card = CARD_ATI_RADEON_HD2600;
+                    vidmem = 256; /* HD2600/HD3600 uses 256-512MB */
+                }
+                /* Radeon R6xx HD2300/HD2400/HD3400 - lowend */
+                else if (strstr(gl_info->gl_renderer, "HD 2300") ||
+                         strstr(gl_info->gl_renderer, "HD 2400") ||
+                         strstr(gl_info->gl_renderer, "HD 3470") ||
+                         strstr(gl_info->gl_renderer, "HD 3450") ||
+                         strstr(gl_info->gl_renderer, "HD 3430"))
+                {
+                    gl_info->gl_card = CARD_ATI_RADEON_HD2300;
+                    vidmem = 128; /* HD2300 uses at least 128MB, HD2400 uses 256MB */
+                }
+                /* Radeon R6xx/R7xx integrated */
+                else if (strstr(gl_info->gl_renderer, "HD 3100") ||
+                         strstr(gl_info->gl_renderer, "HD 3200") ||
+                         strstr(gl_info->gl_renderer, "HD 3300"))
+                {
+                    gl_info->gl_card = CARD_ATI_RADEON_HD3200;
+                    vidmem = 128; /* 128MB */
+                }
+                /* Radeon R5xx */
+                else if (strstr(gl_info->gl_renderer, "X1600") ||
+                         strstr(gl_info->gl_renderer, "X1650") ||
+                         strstr(gl_info->gl_renderer, "X1800") ||
+                         strstr(gl_info->gl_renderer, "X1900") ||
+                         strstr(gl_info->gl_renderer, "X1950"))
+                {
+                    gl_info->gl_card = CARD_ATI_RADEON_X1600;
+                    vidmem = 128; /* X1600 uses 128-256MB, >=X1800 uses 256MB */
+                }
+                /* Radeon R4xx + X1300/X1400/X1450/X1550/X2300 (lowend R5xx) */
+                else if(strstr(gl_info->gl_renderer, "X700") ||
+                        strstr(gl_info->gl_renderer, "X800") ||
+                        strstr(gl_info->gl_renderer, "X850") ||
+                        strstr(gl_info->gl_renderer, "X1300") ||
+                        strstr(gl_info->gl_renderer, "X1400") ||
+                        strstr(gl_info->gl_renderer, "X1450") ||
+                        strstr(gl_info->gl_renderer, "X1550"))
+                {
+                    gl_info->gl_card = CARD_ATI_RADEON_X700;
+                    vidmem = 128; /* x700/x8*0 use 128-256MB, >=x1300 128-512MB */
+                }
+                /* Radeon R3xx */ 
+                else {
+                    gl_info->gl_card = CARD_ATI_RADEON_9500; /* Radeon 9500/9550/9600/9700/9800/X300/X550/X600 */
+                    vidmem = 64; /* Radeon 9500 uses 64MB, higher models use up to 256MB */
+                }
+            } else if(WINE_D3D8_CAPABLE(gl_info)) {
+                gl_info->gl_card = CARD_ATI_RADEON_8500; /* Radeon 8500/9000/9100/9200/9300 */
+                vidmem = 64; /* 8500/9000 cards use mostly 64MB, though there are 32MB and 128MB models */
+            } else if(WINE_D3D7_CAPABLE(gl_info)) {
+                gl_info->gl_card = CARD_ATI_RADEON_7200; /* Radeon 7000/7100/7200/7500 */
+                vidmem = 32; /* There are models with up to 64MB */
+            } else {
+                gl_info->gl_card = CARD_ATI_RAGE_128PRO;
+                vidmem = 16; /* There are 16-32MB models */
+            }
+            break;
+        case VENDOR_INTEL:
+            if (strstr(gl_info->gl_renderer, "GMA 950")) {
+                /* MacOS calls the card GMA 950, but everywhere else the PCI ID is named 945GM */
+                gl_info->gl_card = CARD_INTEL_I945GM;
+                vidmem = 64;
+            } else if (strstr(gl_info->gl_renderer, "915GM")) {
+                gl_info->gl_card = CARD_INTEL_I915GM;
+            } else if (strstr(gl_info->gl_renderer, "915G")) {
+                gl_info->gl_card = CARD_INTEL_I915G;
+            } else if (strstr(gl_info->gl_renderer, "865G")) {
+                gl_info->gl_card = CARD_INTEL_I865G;
+            } else if (strstr(gl_info->gl_renderer, "855G")) {
+                gl_info->gl_card = CARD_INTEL_I855G;
+            } else if (strstr(gl_info->gl_renderer, "830G")) {
+                gl_info->gl_card = CARD_INTEL_I830G;
+            } else {
+                gl_info->gl_card = CARD_INTEL_I915G;
+            }
+            break;
+        case VENDOR_MESA:
+        case VENDOR_WINE:
+        default:
+            /* Default to generic Nvidia hardware based on the supported OpenGL extensions. The choice 
+             * for Nvidia was because the hardware and drivers they make are of good quality. This makes
+             * them a good generic choice.
+             */
+            gl_info->gl_vendor = VENDOR_NVIDIA;
+            if(WINE_D3D9_CAPABLE(gl_info))
+                gl_info->gl_card = CARD_NVIDIA_GEFORCEFX_5600;
+            else if(WINE_D3D8_CAPABLE(gl_info))
+                gl_info->gl_card = CARD_NVIDIA_GEFORCE3;
+            else if(WINE_D3D7_CAPABLE(gl_info))
+                gl_info->gl_card = CARD_NVIDIA_GEFORCE;
+            else if(WINE_D3D6_CAPABLE(gl_info))
+                gl_info->gl_card = CARD_NVIDIA_RIVA_TNT;
+            else
+                gl_info->gl_card = CARD_NVIDIA_RIVA_128;
+    }
+    TRACE_(d3d_caps)("FOUND (fake) card: 0x%x (vendor id), 0x%x (device id)\n", gl_info->gl_vendor, gl_info->gl_card);
+
+    /* If we have an estimate use it, else default to 64MB;  */
+    if(vidmem)
+        gl_info->vidmem = vidmem*1024*1024; /* convert from MBs to bytes */
+    else
+        gl_info->vidmem = WINE_DEFAULT_VIDMEM;
+
+    /* Load all the lookup tables */
+    for (i = 0; i < MAX_LOOKUPS; i++) {
+        stateLookup[i] = HeapAlloc(GetProcessHeap(), 0, sizeof(*stateLookup[i]) * (1 + maxLookup[i] - minLookup[i]) );
+    }
+
+    stateLookup[WINELOOKUP_WARPPARAM][WINED3DTADDRESS_WRAP   - minLookup[WINELOOKUP_WARPPARAM]] = GL_REPEAT;
+    stateLookup[WINELOOKUP_WARPPARAM][WINED3DTADDRESS_CLAMP  - minLookup[WINELOOKUP_WARPPARAM]] = GL_CLAMP_TO_EDGE;
+    stateLookup[WINELOOKUP_WARPPARAM][WINED3DTADDRESS_BORDER - minLookup[WINELOOKUP_WARPPARAM]] =
+             gl_info->supported[ARB_TEXTURE_BORDER_CLAMP] ? GL_CLAMP_TO_BORDER_ARB : GL_REPEAT;
+    stateLookup[WINELOOKUP_WARPPARAM][WINED3DTADDRESS_BORDER - minLookup[WINELOOKUP_WARPPARAM]] =
+             gl_info->supported[ARB_TEXTURE_BORDER_CLAMP] ? GL_CLAMP_TO_BORDER_ARB : GL_REPEAT;
+    stateLookup[WINELOOKUP_WARPPARAM][WINED3DTADDRESS_MIRROR - minLookup[WINELOOKUP_WARPPARAM]] =
+             gl_info->supported[ARB_TEXTURE_MIRRORED_REPEAT] ? GL_MIRRORED_REPEAT_ARB : GL_REPEAT;
+    stateLookup[WINELOOKUP_WARPPARAM][WINED3DTADDRESS_MIRRORONCE - minLookup[WINELOOKUP_WARPPARAM]] =
+             gl_info->supported[ATI_TEXTURE_MIRROR_ONCE] ? GL_MIRROR_CLAMP_TO_EDGE_ATI : GL_REPEAT;
+
+    magLookup[WINED3DTEXF_NONE        - WINED3DTEXF_NONE]  = GL_NEAREST;
+    magLookup[WINED3DTEXF_POINT       - WINED3DTEXF_NONE] = GL_NEAREST;
+    magLookup[WINED3DTEXF_LINEAR      - WINED3DTEXF_NONE] = GL_LINEAR;
+    magLookup[WINED3DTEXF_ANISOTROPIC - WINED3DTEXF_NONE] =
+             gl_info->supported[EXT_TEXTURE_FILTER_ANISOTROPIC] ? GL_LINEAR : GL_NEAREST;
+
+
+    minMipLookup[WINED3DTEXF_NONE].mip[WINED3DTEXF_NONE]     = GL_LINEAR;
+    minMipLookup[WINED3DTEXF_NONE].mip[WINED3DTEXF_POINT]    = GL_LINEAR;
+    minMipLookup[WINED3DTEXF_NONE].mip[WINED3DTEXF_LINEAR]   = GL_LINEAR;
+    minMipLookup[WINED3DTEXF_POINT].mip[WINED3DTEXF_NONE]    = GL_NEAREST;
+    minMipLookup[WINED3DTEXF_POINT].mip[WINED3DTEXF_POINT]   = GL_NEAREST_MIPMAP_NEAREST;
+    minMipLookup[WINED3DTEXF_POINT].mip[WINED3DTEXF_LINEAR]  = GL_NEAREST_MIPMAP_LINEAR;
+    minMipLookup[WINED3DTEXF_LINEAR].mip[WINED3DTEXF_NONE]   = GL_LINEAR;
+    minMipLookup[WINED3DTEXF_LINEAR].mip[WINED3DTEXF_POINT]  = GL_LINEAR_MIPMAP_NEAREST;
+    minMipLookup[WINED3DTEXF_LINEAR].mip[WINED3DTEXF_LINEAR] = GL_LINEAR_MIPMAP_LINEAR;
+    minMipLookup[WINED3DTEXF_ANISOTROPIC].mip[WINED3DTEXF_NONE]
+            = gl_info->supported[EXT_TEXTURE_FILTER_ANISOTROPIC] ? GL_LINEAR_MIPMAP_LINEAR : GL_LINEAR;
+    minMipLookup[WINED3DTEXF_ANISOTROPIC].mip[WINED3DTEXF_POINT]
+            = gl_info->supported[EXT_TEXTURE_FILTER_ANISOTROPIC] ? GL_LINEAR_MIPMAP_NEAREST : GL_LINEAR;
+    minMipLookup[WINED3DTEXF_ANISOTROPIC].mip[WINED3DTEXF_LINEAR]
+            = gl_info->supported[EXT_TEXTURE_FILTER_ANISOTROPIC] ? GL_LINEAR_MIPMAP_LINEAR : GL_LINEAR;
+
+/* TODO: config lookups */
+
+    /* Make sure there's an active HDC else the WGL extensions will fail */
+    hdc = pwglGetCurrentDC();
+    if (hdc) {
+        WGL_Extensions = GL_EXTCALL(wglGetExtensionsStringARB(hdc));
+        TRACE_(d3d_caps)("WGL_Extensions reported:\n");
+
+        if (NULL == WGL_Extensions) {
+            ERR("   WGL_Extensions returns NULL\n");
+        } else {
+            while (*WGL_Extensions != 0x00) {
+                const char *Start;
+                char ThisExtn[256];
+                size_t len;
+
+                while (isspace(*WGL_Extensions)) WGL_Extensions++;
+                Start = WGL_Extensions;
+                while (!isspace(*WGL_Extensions) && *WGL_Extensions != 0x00) {
+                    WGL_Extensions++;
+                }
+
+                len = WGL_Extensions - Start;
+                if (len == 0 || len >= sizeof(ThisExtn))
+                    continue;
+
+                memcpy(ThisExtn, Start, len);
+                ThisExtn[len] = '\0';
+                TRACE_(d3d_caps)("- %s\n", ThisExtn);
+
+                if (!strcmp(ThisExtn, "WGL_ARB_pbuffer")) {
+                    gl_info->supported[WGL_ARB_PBUFFER] = TRUE;
+                    TRACE_(d3d_caps)("FOUND: WGL_ARB_pbuffer support\n");
+                }
+                if (!strcmp(ThisExtn, "WGL_WINE_pixel_format_passthrough")) {
+                    gl_info->supported[WGL_WINE_PIXEL_FORMAT_PASSTHROUGH] = TRUE;
+                    TRACE_(d3d_caps)("FOUND: WGL_WINE_pixel_format_passthrough support\n");
+                }
+            }
+        }
+    }
+    LEAVE_GL();
+
+    return return_value;
+}
+#undef GLINFO_LOCATION
+
+/**********************************************************
+ * IWineD3D implementation follows
+ **********************************************************/
+
+static UINT     WINAPI IWineD3DImpl_GetAdapterCount (IWineD3D *iface) {
+    IWineD3DImpl *This = (IWineD3DImpl *)iface;
+
+    TRACE_(d3d_caps)("(%p): Reporting %d adapters\n", This, numAdapters);
+    return numAdapters;
+}
+
+static HRESULT  WINAPI IWineD3DImpl_RegisterSoftwareDevice(IWineD3D *iface, void* pInitializeFunction) {
+    IWineD3DImpl *This = (IWineD3DImpl *)iface;
+    FIXME("(%p)->(%p): stub\n", This, pInitializeFunction);
+    return WINED3D_OK;
+}
+
+static HMONITOR WINAPI IWineD3DImpl_GetAdapterMonitor(IWineD3D *iface, UINT Adapter) {
+    IWineD3DImpl *This = (IWineD3DImpl *)iface;
+
+    TRACE_(d3d_caps)("(%p)->(%d)\n", This, Adapter);
+
+    if (Adapter >= IWineD3DImpl_GetAdapterCount(iface)) {
+        return NULL;
+    }
+
+    return MonitorFromPoint(Adapters[Adapter].monitorPoint, MONITOR_DEFAULTTOPRIMARY);
+}
+
+/* FIXME: GetAdapterModeCount and EnumAdapterModes currently only returns modes
+     of the same bpp but different resolutions                                  */
+
+/* Note: dx9 supplies a format. Calls from d3d8 supply WINED3DFMT_UNKNOWN */
+static UINT     WINAPI IWineD3DImpl_GetAdapterModeCount(IWineD3D *iface, UINT Adapter, WINED3DFORMAT Format) {
+    IWineD3DImpl *This = (IWineD3DImpl *)iface;
+    TRACE_(d3d_caps)("(%p}->(Adapter: %d, Format: %s)\n", This, Adapter, debug_d3dformat(Format));
+
+    if (Adapter >= IWineD3D_GetAdapterCount(iface)) {
+        return 0;
+    }
+
+    /* TODO: Store modes per adapter and read it from the adapter structure */
+    if (Adapter == 0) { /* Display */
+        int i = 0;
+        int j = 0;
+
+        if (!DEBUG_SINGLE_MODE) {
+            DEVMODEW DevModeW;
+
+            ZeroMemory(&DevModeW, sizeof(DevModeW));
+            DevModeW.dmSize = sizeof(DevModeW);
+            while (EnumDisplaySettingsExW(NULL, j, &DevModeW, 0)) {
+                j++;
+                switch (Format)
+                {
+                    case WINED3DFMT_UNKNOWN:
+                        /* This is for D3D8, do not enumerate P8 here */
+                        if (DevModeW.dmBitsPerPel == 32 ||
+                            DevModeW.dmBitsPerPel == 16) i++;
+                        break;
+                    case WINED3DFMT_X8R8G8B8:
+                        if (DevModeW.dmBitsPerPel == 32) i++;
+                        break;
+                    case WINED3DFMT_R5G6B5:
+                        if (DevModeW.dmBitsPerPel == 16) i++;
+                        break;
+                    case WINED3DFMT_P8:
+                        if (DevModeW.dmBitsPerPel == 8) i++;
+                        break;
+                    default:
+                        /* Skip other modes as they do not match the requested format */
+                        break;
+                }
+            }
+        } else {
+            i = 1;
+            j = 1;
+        }
+
+        TRACE_(d3d_caps)("(%p}->(Adapter: %d) => %d (out of %d)\n", This, Adapter, i, j);
+        return i;
+    } else {
+        FIXME_(d3d_caps)("Adapter not primary display\n");
+    }
+    return 0;
+}
+
+/* Note: dx9 supplies a format. Calls from d3d8 supply WINED3DFMT_UNKNOWN */
+static HRESULT WINAPI IWineD3DImpl_EnumAdapterModes(IWineD3D *iface, UINT Adapter, WINED3DFORMAT Format, UINT Mode, WINED3DDISPLAYMODE* pMode) {
+    IWineD3DImpl *This = (IWineD3DImpl *)iface;
+    TRACE_(d3d_caps)("(%p}->(Adapter:%d, mode:%d, pMode:%p, format:%s)\n", This, Adapter, Mode, pMode, debug_d3dformat(Format));
+
+    /* Validate the parameters as much as possible */
+    if (NULL == pMode ||
+        Adapter >= IWineD3DImpl_GetAdapterCount(iface) ||
+        Mode    >= IWineD3DImpl_GetAdapterModeCount(iface, Adapter, Format)) {
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    /* TODO: Store modes per adapter and read it from the adapter structure */
+    if (Adapter == 0 && !DEBUG_SINGLE_MODE) { /* Display */
+        DEVMODEW DevModeW;
+        int ModeIdx = 0;
+        UINT i = 0;
+        int j = 0;
+
+        ZeroMemory(&DevModeW, sizeof(DevModeW));
+        DevModeW.dmSize = sizeof(DevModeW);
+
+        /* If we are filtering to a specific format (D3D9), then need to skip
+           all unrelated modes, but if mode is irrelevant (D3D8), then we can
+           just count through the ones with valid bit depths */
+        while ((i<=Mode) && EnumDisplaySettingsExW(NULL, j++, &DevModeW, 0)) {
+            switch (Format)
+            {
+                case WINED3DFMT_UNKNOWN:
+                    /* This is D3D8. Do not enumerate P8 here */
+                    if (DevModeW.dmBitsPerPel == 32 ||
+                        DevModeW.dmBitsPerPel == 16) i++;
+                    break;
+                case WINED3DFMT_X8R8G8B8:
+                    if (DevModeW.dmBitsPerPel == 32) i++;
+                    break;
+                case WINED3DFMT_R5G6B5:
+                    if (DevModeW.dmBitsPerPel == 16) i++;
+                    break;
+                case WINED3DFMT_P8:
+                    if (DevModeW.dmBitsPerPel == 8) i++;
+                    break;
+                default:
+                    /* Modes that don't match what we support can get an early-out */
+                    TRACE_(d3d_caps)("Searching for %s, returning D3DERR_INVALIDCALL\n", debug_d3dformat(Format));
+                    return WINED3DERR_INVALIDCALL;
+            }
+        }
+
+        if (i == 0) {
+            TRACE_(d3d_caps)("No modes found for format (%x - %s)\n", Format, debug_d3dformat(Format));
+            return WINED3DERR_INVALIDCALL;
+        }
+        ModeIdx = j - 1;
+
+        /* Now get the display mode via the calculated index */
+        if (EnumDisplaySettingsExW(NULL, ModeIdx, &DevModeW, 0)) {
+            pMode->Width        = DevModeW.dmPelsWidth;
+            pMode->Height       = DevModeW.dmPelsHeight;
+            pMode->RefreshRate  = WINED3DADAPTER_DEFAULT;
+            if (DevModeW.dmFields & DM_DISPLAYFREQUENCY)
+                pMode->RefreshRate = DevModeW.dmDisplayFrequency;
+
+            if (Format == WINED3DFMT_UNKNOWN) {
+                pMode->Format = pixelformat_for_depth(DevModeW.dmBitsPerPel);
+            } else {
+                pMode->Format = Format;
+            }
+        } else {
+            TRACE_(d3d_caps)("Requested mode out of range %d\n", Mode);
+            return WINED3DERR_INVALIDCALL;
+        }
+
+        TRACE_(d3d_caps)("W %d H %d rr %d fmt (%x - %s) bpp %u\n", pMode->Width, pMode->Height,
+                pMode->RefreshRate, pMode->Format, debug_d3dformat(pMode->Format),
+                DevModeW.dmBitsPerPel);
+
+    } else if (DEBUG_SINGLE_MODE) {
+        /* Return one setting of the format requested */
+        if (Mode > 0) return WINED3DERR_INVALIDCALL;
+        pMode->Width        = 800;
+        pMode->Height       = 600;
+        pMode->RefreshRate  = 60;
+        pMode->Format       = (Format == WINED3DFMT_UNKNOWN) ? WINED3DFMT_X8R8G8B8 : Format;
+    } else {
+        FIXME_(d3d_caps)("Adapter not primary display\n");
+    }
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DImpl_GetAdapterDisplayMode(IWineD3D *iface, UINT Adapter, WINED3DDISPLAYMODE* pMode) {
+    IWineD3DImpl *This = (IWineD3DImpl *)iface;
+    TRACE_(d3d_caps)("(%p}->(Adapter: %d, pMode: %p)\n", This, Adapter, pMode);
+
+    if (NULL == pMode ||
+        Adapter >= IWineD3D_GetAdapterCount(iface)) {
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    if (Adapter == 0) { /* Display */
+        int bpp = 0;
+        DEVMODEW DevModeW;
+
+        ZeroMemory(&DevModeW, sizeof(DevModeW));
+        DevModeW.dmSize = sizeof(DevModeW);
+
+        EnumDisplaySettingsExW(NULL, ENUM_CURRENT_SETTINGS, &DevModeW, 0);
+        pMode->Width        = DevModeW.dmPelsWidth;
+        pMode->Height       = DevModeW.dmPelsHeight;
+        bpp                 = DevModeW.dmBitsPerPel;
+        pMode->RefreshRate  = WINED3DADAPTER_DEFAULT;
+        if (DevModeW.dmFields&DM_DISPLAYFREQUENCY)
+        {
+            pMode->RefreshRate = DevModeW.dmDisplayFrequency;
+        }
+
+        pMode->Format = pixelformat_for_depth(bpp);
+    } else {
+        FIXME_(d3d_caps)("Adapter not primary display\n");
+    }
+
+    TRACE_(d3d_caps)("returning w:%d, h:%d, ref:%d, fmt:%s\n", pMode->Width,
+          pMode->Height, pMode->RefreshRate, debug_d3dformat(pMode->Format));
+    return WINED3D_OK;
+}
+
+/* NOTE: due to structure differences between dx8 and dx9 D3DADAPTER_IDENTIFIER,
+   and fields being inserted in the middle, a new structure is used in place    */
+static HRESULT WINAPI IWineD3DImpl_GetAdapterIdentifier(IWineD3D *iface, UINT Adapter, DWORD Flags,
+                                                   WINED3DADAPTER_IDENTIFIER* pIdentifier) {
+    IWineD3DImpl *This = (IWineD3DImpl *)iface;
+
+    TRACE_(d3d_caps)("(%p}->(Adapter: %d, Flags: %x, pId=%p)\n", This, Adapter, Flags, pIdentifier);
+
+    if (Adapter >= IWineD3D_GetAdapterCount(iface)) {
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    /* Return the information requested */
+    TRACE_(d3d_caps)("device/Vendor Name and Version detection using FillGLCaps\n");
+    strcpy(pIdentifier->Driver, Adapters[Adapter].driver);
+    strcpy(pIdentifier->Description, Adapters[Adapter].description);
+
+    /* Note dx8 doesn't supply a DeviceName */
+    if (NULL != pIdentifier->DeviceName) strcpy(pIdentifier->DeviceName, "\\\\.\\DISPLAY"); /* FIXME: May depend on desktop? */
+    pIdentifier->DriverVersion->u.HighPart = Adapters[Adapter].gl_info.driver_version_hipart;
+    pIdentifier->DriverVersion->u.LowPart = Adapters[Adapter].gl_info.driver_version;
+    *(pIdentifier->VendorId) = Adapters[Adapter].gl_info.gl_vendor;
+    *(pIdentifier->DeviceId) = Adapters[Adapter].gl_info.gl_card;
+    *(pIdentifier->SubSysId) = 0;
+    *(pIdentifier->Revision) = 0;
+    *pIdentifier->DeviceIdentifier = IID_D3DDEVICE_D3DUID;
+
+    if(wined3d_settings.pci_device_id != PCI_DEVICE_NONE)
+    {
+        TRACE_(d3d_caps)("Overriding pci device id with: %x\n", wined3d_settings.pci_device_id);
+        *(pIdentifier->DeviceId) = wined3d_settings.pci_device_id;
+    }
+
+    if(wined3d_settings.pci_vendor_id != PCI_VENDOR_NONE)
+    {
+        TRACE_(d3d_caps)("Overriding pci vendor id with: %x\n", wined3d_settings.pci_vendor_id);
+        *(pIdentifier->VendorId) = wined3d_settings.pci_vendor_id;
+    }
+
+    if (Flags & WINED3DENUM_NO_WHQL_LEVEL) {
+        *(pIdentifier->WHQLLevel) = 0;
+    } else {
+        *(pIdentifier->WHQLLevel) = 1;
+    }
+
+    return WINED3D_OK;
+}
+
+static BOOL IWineD3DImpl_IsPixelFormatCompatibleWithRenderFmt(const WineD3D_PixelFormat *cfg, WINED3DFORMAT Format) {
+    short redSize, greenSize, blueSize, alphaSize, colorBits;
+
+    if(!cfg)
+        return FALSE;
+
+    if(cfg->iPixelType == WGL_TYPE_RGBA_ARB) { /* Integer RGBA formats */
+        if(!getColorBits(Format, &redSize, &greenSize, &blueSize, &alphaSize, &colorBits)) {
+            ERR("Unable to check compatibility for Format=%s\n", debug_d3dformat(Format));
+            return FALSE;
+        }
+
+        if(cfg->redSize < redSize)
+            return FALSE;
+
+        if(cfg->greenSize < greenSize)
+            return FALSE;
+
+        if(cfg->blueSize < blueSize)
+            return FALSE;
+
+        if(cfg->alphaSize < alphaSize)
+            return FALSE;
+
+        return TRUE;
+    } else if(cfg->iPixelType == WGL_TYPE_RGBA_FLOAT_ARB) { /* Float RGBA formats; TODO: WGL_NV_float_buffer */
+        if(Format == WINED3DFMT_R16F)
+            return (cfg->redSize == 16 && cfg->greenSize == 0 && cfg->blueSize == 0 && cfg->alphaSize == 0);
+        if(Format == WINED3DFMT_G16R16F)
+            return (cfg->redSize == 16 && cfg->greenSize == 16 && cfg->blueSize == 0 && cfg->alphaSize == 0);
+        if(Format == WINED3DFMT_A16B16G16R16F)
+            return (cfg->redSize == 16 && cfg->greenSize == 16 && cfg->blueSize == 16 && cfg->alphaSize == 16);
+        if(Format == WINED3DFMT_R32F)
+            return (cfg->redSize == 32 && cfg->greenSize == 0 && cfg->blueSize == 0 && cfg->alphaSize == 0);
+        if(Format == WINED3DFMT_G32R32F)
+            return (cfg->redSize == 32 && cfg->greenSize == 32 && cfg->blueSize == 0 && cfg->alphaSize == 0);
+        if(Format == WINED3DFMT_A32B32G32R32F)
+            return (cfg->redSize == 32 && cfg->greenSize == 32 && cfg->blueSize == 32 && cfg->alphaSize == 32);
+    } else {
+        /* Probably a color index mode */
+        return FALSE;
+    }
+
+    return FALSE;
+}
+
+static BOOL IWineD3DImpl_IsPixelFormatCompatibleWithDepthFmt(const WineD3D_PixelFormat *cfg, WINED3DFORMAT Format) {
+    short depthSize, stencilSize;
+    BOOL lockable = FALSE;
+
+    if(!cfg)
+        return FALSE;
+
+    if(!getDepthStencilBits(Format, &depthSize, &stencilSize)) {
+        ERR("Unable to check compatibility for Format=%s\n", debug_d3dformat(Format));
+        return FALSE;
+    }
+
+    if((Format == WINED3DFMT_D16_LOCKABLE) || (Format == WINED3DFMT_D32F_LOCKABLE))
+        lockable = TRUE;
+
+    /* On some modern cards like the Geforce8/9 GLX doesn't offer some dephthstencil formats which D3D9 reports.
+     * We can safely report 'compatible' formats (e.g. D24 can be used for D16) as long as we aren't dealing with
+     * a lockable format. This also helps D3D <= 7 as they expect D16 which isn't offered without this on Geforce8 cards. */
+    if(!(cfg->depthSize == depthSize || (!lockable && cfg->depthSize > depthSize)))
+        return FALSE;
+
+    /* Some cards like Intel i915 ones only offer D24S8 but lots of games also need a format without stencil, so
+     * allow more stencil bits than requested. */
+    if(cfg->stencilSize < stencilSize)
+        return FALSE;
+
+    return TRUE;
+}
+
+static HRESULT WINAPI IWineD3DImpl_CheckDepthStencilMatch(IWineD3D *iface, UINT Adapter, WINED3DDEVTYPE DeviceType,
+                                                   WINED3DFORMAT AdapterFormat,
+                                                   WINED3DFORMAT RenderTargetFormat,
+                                                   WINED3DFORMAT DepthStencilFormat) {
+    IWineD3DImpl *This = (IWineD3DImpl *)iface;
+    int nCfgs;
+    const WineD3D_PixelFormat *cfgs;
+    int it;
+
+    WARN_(d3d_caps)("(%p)-> (STUB) (Adptr:%d, DevType:(%x,%s), AdptFmt:(%x,%s), RendrTgtFmt:(%x,%s), DepthStencilFmt:(%x,%s))\n",
+           This, Adapter,
+           DeviceType, debug_d3ddevicetype(DeviceType),
+           AdapterFormat, debug_d3dformat(AdapterFormat),
+           RenderTargetFormat, debug_d3dformat(RenderTargetFormat),
+           DepthStencilFormat, debug_d3dformat(DepthStencilFormat));
+
+    if (Adapter >= IWineD3D_GetAdapterCount(iface)) {
+        TRACE("(%p) Failed: Atapter (%u) higher than supported adapters (%u) returning WINED3DERR_INVALIDCALL\n", This, Adapter, IWineD3D_GetAdapterCount(iface));
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    cfgs = Adapters[Adapter].cfgs;
+    nCfgs = Adapters[Adapter].nCfgs;
+    for (it = 0; it < nCfgs; ++it) {
+        if (IWineD3DImpl_IsPixelFormatCompatibleWithRenderFmt(&cfgs[it], RenderTargetFormat)) {
+            if (IWineD3DImpl_IsPixelFormatCompatibleWithDepthFmt(&cfgs[it], DepthStencilFormat)) {
+                TRACE_(d3d_caps)("(%p) : Formats matched\n", This);
+                return WINED3D_OK;
+            }
+        }
+    }
+    WARN_(d3d_caps)("unsupported format pair: %s and %s\n", debug_d3dformat(RenderTargetFormat), debug_d3dformat(DepthStencilFormat));
+
+    return WINED3DERR_NOTAVAILABLE;
+}
+
+static HRESULT WINAPI IWineD3DImpl_CheckDeviceMultiSampleType(IWineD3D *iface, UINT Adapter, WINED3DDEVTYPE DeviceType, 
+                                                       WINED3DFORMAT SurfaceFormat,
+                                                       BOOL Windowed, WINED3DMULTISAMPLE_TYPE MultiSampleType, DWORD*   pQualityLevels) {
+
+    IWineD3DImpl *This = (IWineD3DImpl *)iface;
+    const struct GlPixelFormatDesc *glDesc;
+    const StaticPixelFormatDesc *desc;
+
+    TRACE_(d3d_caps)("(%p)-> (Adptr:%d, DevType:(%x,%s), SurfFmt:(%x,%s), Win?%d, MultiSamp:%x, pQual:%p)\n",
+          This,
+          Adapter,
+          DeviceType, debug_d3ddevicetype(DeviceType),
+          SurfaceFormat, debug_d3dformat(SurfaceFormat),
+          Windowed,
+          MultiSampleType,
+          pQualityLevels);
+
+    if (Adapter >= IWineD3D_GetAdapterCount(iface)) {
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    /* TODO: handle Windowed, add more quality levels */
+
+    if (WINED3DMULTISAMPLE_NONE == MultiSampleType) return WINED3D_OK;
+
+    /* By default multisampling is disabled right now as it causes issues
+     * on some Nvidia driver versions and it doesn't work well in combination
+     * with FBOs yet. */
+    if(!wined3d_settings.allow_multisampling)
+        return WINED3DERR_NOTAVAILABLE;
+
+    desc = getFormatDescEntry(SurfaceFormat, &Adapters[Adapter].gl_info, &glDesc);
+    if(!desc || !glDesc) {
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    if(glDesc->Flags & (WINED3DFMT_FLAG_DEPTH | WINED3DFMT_FLAG_STENCIL)) {
+        int i, nCfgs;
+        const WineD3D_PixelFormat *cfgs;
+
+        cfgs = Adapters[Adapter].cfgs;
+        nCfgs = Adapters[Adapter].nCfgs;
+        for(i=0; i<nCfgs; i++) {
+            if(cfgs[i].numSamples != MultiSampleType)
+                continue;
+
+            if(!IWineD3DImpl_IsPixelFormatCompatibleWithDepthFmt(&cfgs[i], SurfaceFormat))
+                continue;
+
+            TRACE("Found iPixelFormat=%d to support MultiSampleType=%d for format %s\n", cfgs[i].iPixelFormat, MultiSampleType, debug_d3dformat(SurfaceFormat));
+
+            if(pQualityLevels)
+                *pQualityLevels = 1; /* Guess at a value! */
+            return WINED3D_OK;
+        }
+    }
+    else if(glDesc->Flags & WINED3DFMT_FLAG_RENDERTARGET) {
+        short redSize, greenSize, blueSize, alphaSize, colorBits;
+        int i, nCfgs;
+        const WineD3D_PixelFormat *cfgs;
+
+        if(!getColorBits(SurfaceFormat, &redSize, &greenSize, &blueSize, &alphaSize, &colorBits)) {
+            ERR("Unable to color bits for format %#x, can't check multisampling capability!\n", SurfaceFormat);
+            return WINED3DERR_NOTAVAILABLE;
+        }
+
+        cfgs = Adapters[Adapter].cfgs;
+        nCfgs = Adapters[Adapter].nCfgs;
+        for(i=0; i<nCfgs; i++) {
+            if(cfgs[i].numSamples != MultiSampleType)
+                continue;
+            if(cfgs[i].redSize != redSize)
+                continue;
+            if(cfgs[i].greenSize != greenSize)
+                continue;
+            if(cfgs[i].blueSize != blueSize)
+                continue;
+            if(cfgs[i].alphaSize != alphaSize)
+                continue;
+
+            TRACE("Found iPixelFormat=%d to support MultiSampleType=%d for format %s\n", cfgs[i].iPixelFormat, MultiSampleType, debug_d3dformat(SurfaceFormat));
+
+            if(pQualityLevels)
+                *pQualityLevels = 1; /* Guess at a value! */
+            return WINED3D_OK;
+        }
+    }
+    return WINED3DERR_NOTAVAILABLE;
+}
+
+static HRESULT WINAPI IWineD3DImpl_CheckDeviceType(IWineD3D *iface, UINT Adapter, WINED3DDEVTYPE DeviceType,
+                                            WINED3DFORMAT DisplayFormat, WINED3DFORMAT BackBufferFormat, BOOL Windowed) {
+
+    IWineD3DImpl *This = (IWineD3DImpl *)iface;
+    HRESULT hr = WINED3DERR_NOTAVAILABLE;
+    UINT nmodes;
+
+    TRACE_(d3d_caps)("(%p)-> (STUB) (Adptr:%d, CheckType:(%x,%s), DispFmt:(%x,%s), BackBuf:(%x,%s), Win?%d): stub\n",
+          This,
+          Adapter,
+          DeviceType, debug_d3ddevicetype(DeviceType),
+          DisplayFormat, debug_d3dformat(DisplayFormat),
+          BackBufferFormat, debug_d3dformat(BackBufferFormat),
+          Windowed);
+
+    if (Adapter >= IWineD3D_GetAdapterCount(iface)) {
+        WARN_(d3d_caps)("Adapter >= IWineD3D_GetAdapterCount(iface), returning WINED3DERR_INVALIDCALL\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    /* The task of this function is to check whether a certain display / backbuffer format
+     * combination is available on the given adapter. In fullscreen mode microsoft specified
+     * that the display format shouldn't provide alpha and that ignoring alpha the backbuffer
+     * and display format should match exactly.
+     * In windowed mode format conversion can occur and this depends on the driver. When format
+     * conversion is done, this function should nevertheless fail and applications need to use
+     * CheckDeviceFormatConversion.
+     * At the moment we assume that fullscreen and windowed have the same capabilities */
+
+    /* There are only 4 display formats */
+    if(!((DisplayFormat == WINED3DFMT_R5G6B5) ||
+         (DisplayFormat == WINED3DFMT_X1R5G5B5) ||
+         (DisplayFormat == WINED3DFMT_X8R8G8B8) ||
+         (DisplayFormat == WINED3DFMT_A2R10G10B10)))
+    {
+        TRACE_(d3d_caps)("Format %s unsupported as display format\n", debug_d3dformat(DisplayFormat));
+        return WINED3DERR_NOTAVAILABLE;
+    }
+
+    /* If the requested DisplayFormat is not available, don't continue */
+    nmodes = IWineD3DImpl_GetAdapterModeCount(iface, Adapter, DisplayFormat);
+    if(!nmodes) {
+        TRACE_(d3d_caps)("No available modes for display format %s\n", debug_d3dformat(DisplayFormat));
+        return WINED3DERR_NOTAVAILABLE;
+    }
+
+    /* Windowed mode allows you to specify WINED3DFMT_UNKNOWN for the backbufferformat, it means 'reuse' the display format for the backbuffer */
+    if(!Windowed && BackBufferFormat == WINED3DFMT_UNKNOWN) {
+        TRACE_(d3d_caps)("BackBufferFormat WINED3FMT_UNKNOWN not available in Windowed mode\n");
+        return WINED3DERR_NOTAVAILABLE;
+    }
+
+    /* In FULLSCREEN mode R5G6B5 can only be mixed with backbuffer format R5G6B5 */
+    if( (DisplayFormat == WINED3DFMT_R5G6B5) && (BackBufferFormat != WINED3DFMT_R5G6B5) ) {
+        TRACE_(d3d_caps)("Unsupported display/backbuffer format combination %s/%s\n", debug_d3dformat(DisplayFormat), debug_d3dformat(BackBufferFormat));
+        return WINED3DERR_NOTAVAILABLE;
+    }
+
+    /* In FULLSCREEN mode X1R5G5B5 can only be mixed with backbuffer format *1R5G5B5 */
+    if( (DisplayFormat == WINED3DFMT_X1R5G5B5) && !((BackBufferFormat == WINED3DFMT_X1R5G5B5) || (BackBufferFormat == WINED3DFMT_A1R5G5B5)) ) {
+        TRACE_(d3d_caps)("Unsupported display/backbuffer format combination %s/%s\n", debug_d3dformat(DisplayFormat), debug_d3dformat(BackBufferFormat));
+        return WINED3DERR_NOTAVAILABLE;
+    }
+
+    /* In FULLSCREEN mode X8R8G8B8 can only be mixed with backbuffer format *8R8G8B8 */
+    if( (DisplayFormat == WINED3DFMT_X8R8G8B8) && !((BackBufferFormat == WINED3DFMT_X8R8G8B8) || (BackBufferFormat == WINED3DFMT_A8R8G8B8)) ) {
+        TRACE_(d3d_caps)("Unsupported display/backbuffer format combination %s/%s\n", debug_d3dformat(DisplayFormat), debug_d3dformat(BackBufferFormat));
+        return WINED3DERR_NOTAVAILABLE;
+    }
+
+    /* A2R10G10B10 is only allowed in fullscreen mode and it can only be mixed with backbuffer format A2R10G10B10 */
+    if( (DisplayFormat == WINED3DFMT_A2R10G10B10) && ((BackBufferFormat != WINED3DFMT_A2R10G10B10) || Windowed)) {
+        TRACE_(d3d_caps)("Unsupported display/backbuffer format combination %s/%s\n", debug_d3dformat(DisplayFormat), debug_d3dformat(BackBufferFormat));
+        return WINED3DERR_NOTAVAILABLE;
+    }
+
+    /* Use CheckDeviceFormat to see if the BackBufferFormat is usable with the given DisplayFormat */
+    hr = IWineD3DImpl_CheckDeviceFormat(iface, Adapter, DeviceType, DisplayFormat, WINED3DUSAGE_RENDERTARGET, WINED3DRTYPE_SURFACE, BackBufferFormat, SURFACE_OPENGL);
+    if(FAILED(hr))
+        TRACE_(d3d_caps)("Unsupported display/backbuffer format combination %s/%s\n", debug_d3dformat(DisplayFormat), debug_d3dformat(BackBufferFormat));
+
+    return hr;
+}
+
+
+#define GLINFO_LOCATION Adapters[Adapter].gl_info
+/* Check if we support bumpmapping for a format */
+static BOOL CheckBumpMapCapability(UINT Adapter, WINED3DDEVTYPE DeviceType, WINED3DFORMAT CheckFormat)
+{
+    const struct fragment_pipeline *fp;
+    const struct GlPixelFormatDesc *glDesc;
+
+    switch(CheckFormat) {
+        case WINED3DFMT_V8U8:
+        case WINED3DFMT_V16U16:
+        case WINED3DFMT_L6V5U5:
+        case WINED3DFMT_X8L8V8U8:
+        case WINED3DFMT_Q8W8V8U8:
+            /* Ask the fixed function pipeline implementation if it can deal
+             * with the conversion. If we've got a GL extension giving native
+             * support this will be an identity conversion. */
+            getFormatDescEntry(CheckFormat, &GLINFO_LOCATION, &glDesc);
+            fp = select_fragment_implementation(Adapter, DeviceType);
+            if (fp->color_fixup_supported(glDesc->color_fixup))
+            {
+                TRACE_(d3d_caps)("[OK]\n");
+                return TRUE;
+            }
+            TRACE_(d3d_caps)("[FAILED]\n");
+            return FALSE;
+
+        default:
+            TRACE_(d3d_caps)("[FAILED]\n");
+            return FALSE;
+    }
+}
+
+/* Check if the given DisplayFormat + DepthStencilFormat combination is valid for the Adapter */
+static BOOL CheckDepthStencilCapability(UINT Adapter, WINED3DFORMAT DisplayFormat, WINED3DFORMAT DepthStencilFormat)
+{
+    int it=0;
+    const struct GlPixelFormatDesc *glDesc;
+    const StaticPixelFormatDesc *desc = getFormatDescEntry(DepthStencilFormat, &GLINFO_LOCATION, &glDesc);
+
+    /* Fail if we weren't able to get a description of the format */
+    if(!desc || !glDesc)
+        return FALSE;
+
+    /* Only allow depth/stencil formats */
+    if(!(glDesc->Flags & (WINED3DFMT_FLAG_DEPTH | WINED3DFMT_FLAG_STENCIL)))
+        return FALSE;
+
+    /* Walk through all WGL pixel formats to find a match */
+    for (it = 0; it < Adapters[Adapter].nCfgs; ++it) {
+        WineD3D_PixelFormat *cfg = &Adapters[Adapter].cfgs[it];
+        if (IWineD3DImpl_IsPixelFormatCompatibleWithRenderFmt(cfg, DisplayFormat)) {
+            if (IWineD3DImpl_IsPixelFormatCompatibleWithDepthFmt(cfg, DepthStencilFormat)) {
+                return TRUE;
+            }
+        }
+    }
+
+    return FALSE;
+}
+
+static BOOL CheckFilterCapability(UINT Adapter, WINED3DFORMAT CheckFormat)
+{
+    const struct GlPixelFormatDesc *glDesc;
+    const StaticPixelFormatDesc *desc = getFormatDescEntry(CheckFormat, &GLINFO_LOCATION, &glDesc);
+
+    /* Fail if we weren't able to get a description of the format */
+    if(!desc || !glDesc)
+        return FALSE;
+
+    /* The flags entry of a format contains the filtering capability */
+    if(glDesc->Flags & WINED3DFMT_FLAG_FILTERING)
+        return TRUE;
+
+    return FALSE;
+}
+
+/* Check the render target capabilities of a format */
+static BOOL CheckRenderTargetCapability(WINED3DFORMAT AdapterFormat, WINED3DFORMAT CheckFormat)
+{
+    UINT Adapter = 0;
+    const struct GlPixelFormatDesc *glDesc;
+    const StaticPixelFormatDesc *desc = getFormatDescEntry(CheckFormat, &GLINFO_LOCATION, &glDesc);
+
+    /* Fail if we weren't able to get a description of the format */
+    if(!desc || !glDesc)
+        return FALSE;
+
+    /* Filter out non-RT formats */
+    if(!(glDesc->Flags & WINED3DFMT_FLAG_RENDERTARGET))
+        return FALSE;
+
+    if(wined3d_settings.offscreen_rendering_mode == ORM_BACKBUFFER) {
+        WineD3D_PixelFormat *cfgs = Adapters[Adapter].cfgs;
+        int it;
+        short AdapterRed, AdapterGreen, AdapterBlue, AdapterAlpha, AdapterTotalSize;
+        short CheckRed, CheckGreen, CheckBlue, CheckAlpha, CheckTotalSize;
+
+        getColorBits(AdapterFormat, &AdapterRed, &AdapterGreen, &AdapterBlue, &AdapterAlpha, &AdapterTotalSize);
+        getColorBits(CheckFormat, &CheckRed, &CheckGreen, &CheckBlue, &CheckAlpha, &CheckTotalSize);
+
+        /* In backbuffer mode the front and backbuffer share the same WGL pixelformat.
+         * The format must match in RGB, alpha is allowed to be different. (Only the backbuffer can have alpha) */
+        if(!((AdapterRed == CheckRed) && (AdapterGreen == CheckGreen) && (AdapterBlue == CheckBlue))) {
+            TRACE_(d3d_caps)("[FAILED]\n");
+            return FALSE;
+        }
+
+        /* Check if there is a WGL pixel format matching the requirements, the format should also be window
+         * drawable (not offscreen; e.g. Nvidia offers R5G6B5 for pbuffers even when X is running at 24bit) */
+        for (it = 0; it < Adapters[Adapter].nCfgs; ++it) {
+            if (cfgs[it].windowDrawable && IWineD3DImpl_IsPixelFormatCompatibleWithRenderFmt(&cfgs[it], CheckFormat)) {
+                TRACE_(d3d_caps)("iPixelFormat=%d is compatible with CheckFormat=%s\n", cfgs[it].iPixelFormat, debug_d3dformat(CheckFormat));
+                return TRUE;
+            }
+        }
+    } else if(wined3d_settings.offscreen_rendering_mode == ORM_PBUFFER) {
+        /* We can probably use this function in FBO mode too on some drivers to get some basic indication of the capabilities. */
+        WineD3D_PixelFormat *cfgs = Adapters[Adapter].cfgs;
+        int it;
+
+        /* Check if there is a WGL pixel format matching the requirements, the pixel format should also be usable with pbuffers */
+        for (it = 0; it < Adapters[Adapter].nCfgs; ++it) {
+            if (cfgs[it].pbufferDrawable && IWineD3DImpl_IsPixelFormatCompatibleWithRenderFmt(&cfgs[it], CheckFormat)) {
+                TRACE_(d3d_caps)("iPixelFormat=%d is compatible with CheckFormat=%s\n", cfgs[it].iPixelFormat, debug_d3dformat(CheckFormat));
+                return TRUE;
+            }
+        }
+    } else if(wined3d_settings.offscreen_rendering_mode == ORM_FBO){
+        /* For now return TRUE for FBOs until we have some proper checks.
+         * Note that this function will only be called when the format is around for texturing. */
+        return TRUE;
+    }
+    return FALSE;
+}
+
+static BOOL CheckSrgbReadCapability(UINT Adapter, WINED3DFORMAT CheckFormat)
+{
+    /* Check for supported sRGB formats (Texture loading and framebuffer) */
+    if(!GL_SUPPORT(EXT_TEXTURE_SRGB)) {
+        TRACE_(d3d_caps)("[FAILED] GL_EXT_texture_sRGB not supported\n");
+        return FALSE;
+    }
+
+    switch (CheckFormat) {
+        case WINED3DFMT_A8R8G8B8:
+        case WINED3DFMT_X8R8G8B8:
+        case WINED3DFMT_A4R4G4B4:
+        case WINED3DFMT_L8:
+        case WINED3DFMT_A8L8:
+        case WINED3DFMT_DXT1:
+        case WINED3DFMT_DXT2:
+        case WINED3DFMT_DXT3:
+        case WINED3DFMT_DXT4:
+        case WINED3DFMT_DXT5:
+            TRACE_(d3d_caps)("[OK]\n");
+            return TRUE;
+
+        default:
+            TRACE_(d3d_caps)("[FAILED] Gamma texture format %s not supported.\n", debug_d3dformat(CheckFormat));
+            return FALSE;
+    }
+    return FALSE;
+}
+
+static BOOL CheckSrgbWriteCapability(UINT Adapter, WINED3DDEVTYPE DeviceType, WINED3DFORMAT CheckFormat)
+{
+    /* Only offer SRGB writing on X8R8G8B8/A8R8G8B8 when we use ARB or GLSL shaders as we are
+     * doing the color fixup in shaders.
+     * Note Windows drivers (at least on the Geforce 8800) also offer this on R5G6B5. */
+    if((CheckFormat == WINED3DFMT_X8R8G8B8) || (CheckFormat == WINED3DFMT_A8R8G8B8)) {
+        int vs_selected_mode;
+        int ps_selected_mode;
+        select_shader_mode(&GLINFO_LOCATION, DeviceType, &ps_selected_mode, &vs_selected_mode);
+
+        if((ps_selected_mode == SHADER_ARB) || (ps_selected_mode == SHADER_GLSL)) {
+            TRACE_(d3d_caps)("[OK]\n");
+            return TRUE;
+        }
+    }
+
+    TRACE_(d3d_caps)("[FAILED] - no SRGB writing support on format=%s\n", debug_d3dformat(CheckFormat));
+    return FALSE;
+}
+
+/* Check if a format support blending in combination with pixel shaders */
+static BOOL CheckPostPixelShaderBlendingCapability(UINT Adapter, WINED3DFORMAT CheckFormat)
+{
+    const struct GlPixelFormatDesc *glDesc;
+    const StaticPixelFormatDesc *desc = getFormatDescEntry(CheckFormat, &GLINFO_LOCATION, &glDesc);
+
+    /* Fail if we weren't able to get a description of the format */
+    if(!desc || !glDesc)
+        return FALSE;
+
+    /* The flags entry of a format contains the post pixel shader blending capability */
+    if(glDesc->Flags & WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING)
+        return TRUE;
+
+    return FALSE;
+}
+
+static BOOL CheckWrapAndMipCapability(UINT Adapter, WINED3DFORMAT CheckFormat) {
+    /* OpenGL supports mipmapping on all formats basically. Wrapping is unsupported,
+     * but we have to report mipmapping so we cannot reject this flag. Tests show that
+     * windows reports WRAPANDMIP on unfilterable surfaces as well, apparently to show
+     * that wrapping is supported. The lack of filtering will sort out the mipmapping
+     * capability anyway.
+     *
+     * For now lets report this on all formats, but in the future we may want to
+     * restrict it to some should games need that
+     */
+    return TRUE;
+}
+
+/* Check if a texture format is supported on the given adapter */
+static BOOL CheckTextureCapability(UINT Adapter, WINED3DDEVTYPE DeviceType, WINED3DFORMAT CheckFormat)
+{
+    const shader_backend_t *shader_backend;
+    const struct fragment_pipeline *fp;
+    const struct GlPixelFormatDesc *glDesc;
+
+    switch (CheckFormat) {
+
+        /*****
+         *  supported: RGB(A) formats
+         */
+        case WINED3DFMT_R8G8B8: /* Enable for dx7, blacklisted for 8 and 9 above */
+        case WINED3DFMT_A8R8G8B8:
+        case WINED3DFMT_X8R8G8B8:
+        case WINED3DFMT_R5G6B5:
+        case WINED3DFMT_X1R5G5B5:
+        case WINED3DFMT_A1R5G5B5:
+        case WINED3DFMT_A4R4G4B4:
+        case WINED3DFMT_A8:
+        case WINED3DFMT_X4R4G4B4:
+        case WINED3DFMT_A8B8G8R8:
+        case WINED3DFMT_X8B8G8R8:
+        case WINED3DFMT_A2R10G10B10:
+        case WINED3DFMT_A2B10G10R10:
+        case WINED3DFMT_G16R16:
+            TRACE_(d3d_caps)("[OK]\n");
+            return TRUE;
+
+        case WINED3DFMT_R3G3B2:
+            TRACE_(d3d_caps)("[FAILED] - Not supported on Windows\n");
+            return FALSE;
+
+        /*****
+         *  supported: Palettized
+         */
+        case WINED3DFMT_P8:
+            TRACE_(d3d_caps)("[OK]\n");
+            return TRUE;
+        /* No Windows driver offers A8P8, so don't offer it either */
+        case WINED3DFMT_A8P8:
+            return FALSE;
+
+        /*****
+         *  Supported: (Alpha)-Luminance
+         */
+        case WINED3DFMT_L8:
+        case WINED3DFMT_A8L8:
+        case WINED3DFMT_L16:
+            TRACE_(d3d_caps)("[OK]\n");
+            return TRUE;
+
+        /* Not supported on Windows, thus disabled */
+        case WINED3DFMT_A4L4:
+            TRACE_(d3d_caps)("[FAILED] - not supported on windows\n");
+            return FALSE;
+
+        /*****
+         *  Supported: Depth/Stencil formats
+         */
+        case WINED3DFMT_D16_LOCKABLE:
+        case WINED3DFMT_D16:
+        case WINED3DFMT_D15S1:
+        case WINED3DFMT_D24X8:
+        case WINED3DFMT_D24X4S4:
+        case WINED3DFMT_D24S8:
+        case WINED3DFMT_D24FS8:
+        case WINED3DFMT_D32:
+        case WINED3DFMT_D32F_LOCKABLE:
+            return TRUE;
+
+        /*****
+         *  Not supported everywhere(depends on GL_ATI_envmap_bumpmap or
+         *  GL_NV_texture_shader). Emulated by shaders
+         */
+        case WINED3DFMT_V8U8:
+        case WINED3DFMT_X8L8V8U8:
+        case WINED3DFMT_L6V5U5:
+        case WINED3DFMT_Q8W8V8U8:
+        case WINED3DFMT_V16U16:
+            /* Ask the shader backend if it can deal with the conversion. If
+             * we've got a GL extension giving native support this will be an
+             * identity conversion. */
+            getFormatDescEntry(CheckFormat, &GLINFO_LOCATION, &glDesc);
+            shader_backend = select_shader_backend(Adapter, DeviceType);
+            if (shader_backend->shader_color_fixup_supported(glDesc->color_fixup))
+            {
+                TRACE_(d3d_caps)("[OK]\n");
+                return TRUE;
+            }
+            TRACE_(d3d_caps)("[FAILED]\n");
+            return FALSE;
+
+        case WINED3DFMT_DXT1:
+        case WINED3DFMT_DXT2:
+        case WINED3DFMT_DXT3:
+        case WINED3DFMT_DXT4:
+        case WINED3DFMT_DXT5:
+            if (GL_SUPPORT(EXT_TEXTURE_COMPRESSION_S3TC)) {
+                TRACE_(d3d_caps)("[OK]\n");
+                return TRUE;
+            }
+            TRACE_(d3d_caps)("[FAILED]\n");
+            return FALSE;
+
+
+        /*****
+         *  Odd formats - not supported
+         */
+        case WINED3DFMT_VERTEXDATA:
+        case WINED3DFMT_INDEX16:
+        case WINED3DFMT_INDEX32:
+        case WINED3DFMT_Q16W16V16U16:
+        case WINED3DFMT_A2W10V10U10:
+        case WINED3DFMT_W11V11U10:
+            TRACE_(d3d_caps)("[FAILED]\n"); /* Enable when implemented */
+            return FALSE;
+
+        /*****
+         *  WINED3DFMT_CxV8U8: Not supported right now
+         */
+        case WINED3DFMT_CxV8U8:
+            TRACE_(d3d_caps)("[FAILED]\n"); /* Enable when implemented */
+            return FALSE;
+
+        /* YUV formats */
+        case WINED3DFMT_UYVY:
+        case WINED3DFMT_YUY2:
+            if(GL_SUPPORT(APPLE_YCBCR_422)) {
+                TRACE_(d3d_caps)("[OK]\n");
+                return TRUE;
+            }
+            TRACE_(d3d_caps)("[FAILED]\n");
+            return FALSE;
+        case WINED3DFMT_YV12:
+            TRACE_(d3d_caps)("[FAILED]\n");
+            return FALSE;
+
+            /* Not supported */
+        case WINED3DFMT_A16B16G16R16:
+        case WINED3DFMT_A8R3G3B2:
+            TRACE_(d3d_caps)("[FAILED]\n"); /* Enable when implemented */
+            return FALSE;
+
+            /* Floating point formats */
+        case WINED3DFMT_R16F:
+        case WINED3DFMT_A16B16G16R16F:
+            if(GL_SUPPORT(ARB_TEXTURE_FLOAT) && GL_SUPPORT(ARB_HALF_FLOAT_PIXEL)) {
+                TRACE_(d3d_caps)("[OK]\n");
+                return TRUE;
+            }
+            TRACE_(d3d_caps)("[FAILED]\n");
+            return FALSE;
+
+        case WINED3DFMT_R32F:
+        case WINED3DFMT_A32B32G32R32F:
+            if (GL_SUPPORT(ARB_TEXTURE_FLOAT)) {
+                TRACE_(d3d_caps)("[OK]\n");
+                return TRUE;
+            }
+            TRACE_(d3d_caps)("[FAILED]\n");
+            return FALSE;
+
+        case WINED3DFMT_G16R16F:
+        case WINED3DFMT_G32R32F:
+            TRACE_(d3d_caps)("[FAILED]\n");
+            return FALSE;
+
+        /* ATI instancing hack: Although ATI cards do not support Shader Model 3.0, they support
+         * instancing. To query if the card supports instancing CheckDeviceFormat with the special format
+         * MAKEFOURCC('I','N','S','T') is used. Should a (broken) app check for this provide a proper return value.
+         * We can do instancing with all shader versions, but we need vertex shaders.
+         *
+         * Additionally applications have to set the D3DRS_POINTSIZE render state to MAKEFOURCC('I','N','S','T') once
+         * to enable instancing. WineD3D doesn't need that and just ignores it.
+         *
+         * With Shader Model 3.0 capable cards Instancing 'just works' in Windows.
+         */
+        case WINEMAKEFOURCC('I','N','S','T'):
+            TRACE("ATI Instancing check hack\n");
+            if(GL_SUPPORT(ARB_VERTEX_PROGRAM) || GL_SUPPORT(ARB_VERTEX_SHADER)) {
+                TRACE_(d3d_caps)("[OK]\n");
+                return TRUE;
+            }
+            TRACE_(d3d_caps)("[FAILED]\n");
+            return FALSE;
+
+        /* Some weird FOURCC formats */
+        case WINED3DFMT_R8G8_B8G8:
+        case WINED3DFMT_G8R8_G8B8:
+        case WINED3DFMT_MULTI2_ARGB8:
+            TRACE_(d3d_caps)("[FAILED]\n");
+            return FALSE;
+
+        /* Vendor specific formats */
+        case WINED3DFMT_ATI2N:
+            if(GL_SUPPORT(ATI_TEXTURE_COMPRESSION_3DC) || GL_SUPPORT(EXT_TEXTURE_COMPRESSION_RGTC)) {
+                getFormatDescEntry(CheckFormat, &GLINFO_LOCATION, &glDesc);
+                shader_backend = select_shader_backend(Adapter, DeviceType);
+                fp = select_fragment_implementation(Adapter, DeviceType);
+                if (shader_backend->shader_color_fixup_supported(glDesc->color_fixup)
+                        && fp->color_fixup_supported(glDesc->color_fixup))
+                {
+                    TRACE_(d3d_caps)("[OK]\n");
+                    return TRUE;
+                }
+
+                TRACE_(d3d_caps)("[OK]\n");
+                return TRUE;
+            }
+            TRACE_(d3d_caps)("[FAILED]\n");
+            return FALSE;
+
+        case WINED3DFMT_NVHU:
+        case WINED3DFMT_NVHS:
+            /* These formats seem to be similar to the HILO formats in GL_NV_texture_shader. NVHU
+             * is said to be GL_UNSIGNED_HILO16, NVHS GL_SIGNED_HILO16. Rumours say that d3d computes
+             * a 3rd channel similarly to D3DFMT_CxV8U8(So NVHS could be called D3DFMT_CxV16U16).
+             * ATI refused to support formats which can easilly be emulated with pixel shaders, so
+             * Applications have to deal with not having NVHS and NVHU.
+             */
+            TRACE_(d3d_caps)("[FAILED]\n");
+            return FALSE;
+
+        case WINED3DFMT_UNKNOWN:
+            return FALSE;
+
+        default:
+            ERR("Unhandled format=%s\n", debug_d3dformat(CheckFormat));
+            break;
+    }
+    return FALSE;
+}
+
+static BOOL CheckSurfaceCapability(UINT Adapter, WINED3DFORMAT AdapterFormat, WINED3DDEVTYPE DeviceType, WINED3DFORMAT CheckFormat, WINED3DSURFTYPE SurfaceType) {
+    const struct GlPixelFormatDesc *format_desc;
+    const struct blit_shader *blitter;
+
+    if(SurfaceType == SURFACE_GDI) {
+        switch(CheckFormat) {
+            case WINED3DFMT_R8G8B8:
+            case WINED3DFMT_A8R8G8B8:
+            case WINED3DFMT_X8R8G8B8:
+            case WINED3DFMT_R5G6B5:
+            case WINED3DFMT_X1R5G5B5:
+            case WINED3DFMT_A1R5G5B5:
+            case WINED3DFMT_A4R4G4B4:
+            case WINED3DFMT_R3G3B2:
+            case WINED3DFMT_A8:
+            case WINED3DFMT_A8R3G3B2:
+            case WINED3DFMT_X4R4G4B4:
+            case WINED3DFMT_A2B10G10R10:
+            case WINED3DFMT_A8B8G8R8:
+            case WINED3DFMT_X8B8G8R8:
+            case WINED3DFMT_G16R16:
+            case WINED3DFMT_A2R10G10B10:
+            case WINED3DFMT_A16B16G16R16:
+            case WINED3DFMT_P8:
+                TRACE_(d3d_caps)("[OK]\n");
+                return TRUE;
+            default:
+                TRACE_(d3d_caps)("[FAILED] - not available on GDI surfaces\n");
+                return FALSE;
+        }
+    }
+
+    /* All format that are supported for textures are supported for surfaces as well */
+    if(CheckTextureCapability(Adapter, DeviceType, CheckFormat)) return TRUE;
+    /* All depth stencil formats are supported on surfaces */
+    if(CheckDepthStencilCapability(Adapter, AdapterFormat, CheckFormat)) return TRUE;
+
+    /* If opengl can't process the format natively, the blitter may be able to convert it */
+    getFormatDescEntry(CheckFormat, &GLINFO_LOCATION, &format_desc);
+    blitter = select_blit_implementation(Adapter, DeviceType);
+    if (blitter->color_fixup_supported(format_desc->color_fixup))
+    {
+        TRACE_(d3d_caps)("[OK]\n");
+        return TRUE;
+    }
+
+    /* Reject other formats */
+    TRACE_(d3d_caps)("[FAILED]\n");
+    return FALSE;
+}
+
+static BOOL CheckVertexTextureCapability(UINT Adapter, WINED3DFORMAT CheckFormat)
+{
+    if (!GL_LIMITS(vertex_samplers)) {
+        TRACE_(d3d_caps)("[FAILED]\n");
+        return FALSE;
+    }
+
+    switch (CheckFormat) {
+        case WINED3DFMT_A32B32G32R32F:
+            if (!GL_SUPPORT(ARB_TEXTURE_FLOAT)) {
+                TRACE_(d3d_caps)("[FAILED]\n");
+                return FALSE;
+            }
+            TRACE_(d3d_caps)("[OK]\n");
+            return TRUE;
+
+        default:
+            TRACE_(d3d_caps)("[FAILED]\n");
+            return FALSE;
+    }
+    return FALSE;
+}
+
+static HRESULT WINAPI IWineD3DImpl_CheckDeviceFormat(IWineD3D *iface, UINT Adapter, WINED3DDEVTYPE DeviceType, 
+        WINED3DFORMAT AdapterFormat, DWORD Usage, WINED3DRESOURCETYPE RType, WINED3DFORMAT CheckFormat,
+        WINED3DSURFTYPE SurfaceType) {
+    IWineD3DImpl *This = (IWineD3DImpl *)iface;
+    DWORD UsageCaps = 0;
+
+    TRACE_(d3d_caps)("(%p)-> (STUB) (Adptr:%d, DevType:(%u,%s), AdptFmt:(%u,%s), Use:(%u,%s,%s), ResTyp:(%x,%s), CheckFmt:(%u,%s))\n",
+          This,
+          Adapter,
+          DeviceType, debug_d3ddevicetype(DeviceType),
+          AdapterFormat, debug_d3dformat(AdapterFormat),
+          Usage, debug_d3dusage(Usage), debug_d3dusagequery(Usage),
+          RType, debug_d3dresourcetype(RType),
+          CheckFormat, debug_d3dformat(CheckFormat));
+
+    if (Adapter >= IWineD3D_GetAdapterCount(iface)) {
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    if(RType == WINED3DRTYPE_CUBETEXTURE) {
+
+        if(SurfaceType != SURFACE_OPENGL) {
+            TRACE("[FAILED]\n");
+            return WINED3DERR_NOTAVAILABLE;
+        }
+
+        /* Cubetexture allows:
+         *                    - D3DUSAGE_AUTOGENMIPMAP
+         *                    - D3DUSAGE_DEPTHSTENCIL
+         *                    - D3DUSAGE_DYNAMIC
+         *                    - D3DUSAGE_NONSECURE (d3d9ex)
+         *                    - D3DUSAGE_RENDERTARGET
+         *                    - D3DUSAGE_SOFTWAREPROCESSING
+         *                    - D3DUSAGE_QUERY_WRAPANDMIP
+         */
+        if(GL_SUPPORT(ARB_TEXTURE_CUBE_MAP)) {
+            /* Check if the texture format is around */
+            if(CheckTextureCapability(Adapter, DeviceType, CheckFormat)) {
+                if(Usage & WINED3DUSAGE_AUTOGENMIPMAP) {
+                    /* Check for automatic mipmap generation support */
+                    if(GL_SUPPORT(SGIS_GENERATE_MIPMAP)) {
+                        UsageCaps |= WINED3DUSAGE_AUTOGENMIPMAP;
+                    } else {
+                        /* When autogenmipmap isn't around continue and return WINED3DOK_NOAUTOGEN instead of D3D_OK */
+                        TRACE_(d3d_caps)("[FAILED] - No autogenmipmap support, but continuing\n");
+                    }
+                }
+
+                /* Always report dynamic locking */
+                if(Usage & WINED3DUSAGE_DYNAMIC)
+                    UsageCaps |= WINED3DUSAGE_DYNAMIC;
+
+                if(Usage & WINED3DUSAGE_RENDERTARGET) {
+                    if(CheckRenderTargetCapability(AdapterFormat, CheckFormat)) {
+                        UsageCaps |= WINED3DUSAGE_RENDERTARGET;
+                    } else {
+                        TRACE_(d3d_caps)("[FAILED] - No rendertarget support\n");
+                        return WINED3DERR_NOTAVAILABLE;
+                    }
+                }
+
+                /* Always report software processing */
+                if(Usage & WINED3DUSAGE_SOFTWAREPROCESSING)
+                    UsageCaps |= WINED3DUSAGE_SOFTWAREPROCESSING;
+
+                /* Check QUERY_FILTER support */
+                if(Usage & WINED3DUSAGE_QUERY_FILTER) {
+                    if(CheckFilterCapability(Adapter, CheckFormat)) {
+                        UsageCaps |= WINED3DUSAGE_QUERY_FILTER;
+                    } else {
+                        TRACE_(d3d_caps)("[FAILED] - No query filter support\n");
+                        return WINED3DERR_NOTAVAILABLE;
+                    }
+                }
+
+                /* Check QUERY_POSTPIXELSHADER_BLENDING support */
+                if(Usage & WINED3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING) {
+                    if(CheckPostPixelShaderBlendingCapability(Adapter, CheckFormat)) {
+                        UsageCaps |= WINED3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING;
+                    } else {
+                        TRACE_(d3d_caps)("[FAILED] - No query post pixelshader blending support\n");
+                        return WINED3DERR_NOTAVAILABLE;
+                    }
+                }
+
+                /* Check QUERY_SRGBREAD support */
+                if(Usage & WINED3DUSAGE_QUERY_SRGBREAD) {
+                    if(CheckSrgbReadCapability(Adapter, CheckFormat)) {
+                        UsageCaps |= WINED3DUSAGE_QUERY_SRGBREAD;
+                    } else {
+                        TRACE_(d3d_caps)("[FAILED] - No query srgbread support\n");
+                        return WINED3DERR_NOTAVAILABLE;
+                    }
+                }
+
+                /* Check QUERY_SRGBWRITE support */
+                if(Usage & WINED3DUSAGE_QUERY_SRGBWRITE) {
+                    if(CheckSrgbWriteCapability(Adapter, DeviceType, CheckFormat)) {
+                        UsageCaps |= WINED3DUSAGE_QUERY_SRGBWRITE;
+                    } else {
+                        TRACE_(d3d_caps)("[FAILED] - No query srgbwrite support\n");
+                        return WINED3DERR_NOTAVAILABLE;
+                    }
+                }
+
+                /* Check QUERY_VERTEXTEXTURE support */
+                if(Usage & WINED3DUSAGE_QUERY_VERTEXTEXTURE) {
+                    if(CheckVertexTextureCapability(Adapter, CheckFormat)) {
+                        UsageCaps |= WINED3DUSAGE_QUERY_VERTEXTEXTURE;
+                    } else {
+                        TRACE_(d3d_caps)("[FAILED] - No query vertextexture support\n");
+                        return WINED3DERR_NOTAVAILABLE;
+                    }
+                }
+
+                /* Check QUERY_WRAPANDMIP support */
+                if(Usage & WINED3DUSAGE_QUERY_WRAPANDMIP) {
+                    if(CheckWrapAndMipCapability(Adapter, CheckFormat)) {
+                        UsageCaps |= WINED3DUSAGE_QUERY_WRAPANDMIP;
+                    } else {
+                        TRACE_(d3d_caps)("[FAILED] - No wrapping and mipmapping support\n");
+                        return WINED3DERR_NOTAVAILABLE;
+                    }
+                }
+            } else {
+                TRACE_(d3d_caps)("[FAILED] - Cube texture format not supported\n");
+                return WINED3DERR_NOTAVAILABLE;
+            }
+        } else {
+            TRACE_(d3d_caps)("[FAILED] - No cube texture support\n");
+            return WINED3DERR_NOTAVAILABLE;
+        }
+    } else if(RType == WINED3DRTYPE_SURFACE) {
+        /* Surface allows:
+         *                - D3DUSAGE_DEPTHSTENCIL
+         *                - D3DUSAGE_NONSECURE (d3d9ex)
+         *                - D3DUSAGE_RENDERTARGET
+         */
+
+        if(CheckSurfaceCapability(Adapter, AdapterFormat, DeviceType, CheckFormat, SurfaceType)) {
+            if(Usage & WINED3DUSAGE_DEPTHSTENCIL) {
+                if(CheckDepthStencilCapability(Adapter, AdapterFormat, CheckFormat)) {
+                    UsageCaps |= WINED3DUSAGE_DEPTHSTENCIL;
+                } else {
+                    TRACE_(d3d_caps)("[FAILED] - No depthstencil support\n");
+                    return WINED3DERR_NOTAVAILABLE;
+                }
+            }
+
+            if(Usage & WINED3DUSAGE_RENDERTARGET) {
+                if(CheckRenderTargetCapability(AdapterFormat, CheckFormat)) {
+                    UsageCaps |= WINED3DUSAGE_RENDERTARGET;
+                } else {
+                    TRACE_(d3d_caps)("[FAILED] - No rendertarget support\n");
+                    return WINED3DERR_NOTAVAILABLE;
+                }
+            }
+
+            /* Check QUERY_POSTPIXELSHADER_BLENDING support */
+            if(Usage & WINED3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING) {
+                if(CheckPostPixelShaderBlendingCapability(Adapter, CheckFormat)) {
+                    UsageCaps |= WINED3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING;
+                } else {
+                    TRACE_(d3d_caps)("[FAILED] - No query post pixelshader blending support\n");
+                    return WINED3DERR_NOTAVAILABLE;
+                }
+            }
+        } else {
+            TRACE_(d3d_caps)("[FAILED] - Not supported for plain surfaces\n");
+            return WINED3DERR_NOTAVAILABLE;
+        }
+
+    } else if(RType == WINED3DRTYPE_TEXTURE) {
+        /* Texture allows:
+         *                - D3DUSAGE_AUTOGENMIPMAP
+         *                - D3DUSAGE_DEPTHSTENCIL
+         *                - D3DUSAGE_DMAP
+         *                - D3DUSAGE_DYNAMIC
+         *                - D3DUSAGE_NONSECURE (d3d9ex)
+         *                - D3DUSAGE_RENDERTARGET
+         *                - D3DUSAGE_SOFTWAREPROCESSING
+         *                - D3DUSAGE_TEXTAPI (d3d9ex)
+         *                - D3DUSAGE_QUERY_WRAPANDMIP
+         */
+
+        if(SurfaceType != SURFACE_OPENGL) {
+            TRACE("[FAILED]\n");
+            return WINED3DERR_NOTAVAILABLE;
+        }
+
+        /* Check if the texture format is around */
+        if(CheckTextureCapability(Adapter, DeviceType, CheckFormat)) {
+            if(Usage & WINED3DUSAGE_AUTOGENMIPMAP) {
+                /* Check for automatic mipmap generation support */
+                if(GL_SUPPORT(SGIS_GENERATE_MIPMAP)) {
+                    UsageCaps |= WINED3DUSAGE_AUTOGENMIPMAP;
+                } else {
+                    /* When autogenmipmap isn't around continue and return WINED3DOK_NOAUTOGEN instead of D3D_OK */
+                    TRACE_(d3d_caps)("[FAILED] - No autogenmipmap support, but continuing\n");
+                }
+            }
+
+            /* Always report dynamic locking */
+            if(Usage & WINED3DUSAGE_DYNAMIC)
+                UsageCaps |= WINED3DUSAGE_DYNAMIC;
+
+            if(Usage & WINED3DUSAGE_RENDERTARGET) {
+                if(CheckRenderTargetCapability(AdapterFormat, CheckFormat)) {
+                    UsageCaps |= WINED3DUSAGE_RENDERTARGET;
+                } else {
+                    TRACE_(d3d_caps)("[FAILED] - No rendertarget support\n");
+                     return WINED3DERR_NOTAVAILABLE;
+                 }
+            }
+
+            /* Always report software processing */
+            if(Usage & WINED3DUSAGE_SOFTWAREPROCESSING)
+                UsageCaps |= WINED3DUSAGE_SOFTWAREPROCESSING;
+
+            /* Check QUERY_FILTER support */
+            if(Usage & WINED3DUSAGE_QUERY_FILTER) {
+                if(CheckFilterCapability(Adapter, CheckFormat)) {
+                    UsageCaps |= WINED3DUSAGE_QUERY_FILTER;
+                } else {
+                    TRACE_(d3d_caps)("[FAILED] - No query filter support\n");
+                    return WINED3DERR_NOTAVAILABLE;
+                }
+            }
+
+            /* Check QUERY_LEGACYBUMPMAP support */
+            if(Usage & WINED3DUSAGE_QUERY_LEGACYBUMPMAP) {
+                if(CheckBumpMapCapability(Adapter, DeviceType, CheckFormat)) {
+                    UsageCaps |= WINED3DUSAGE_QUERY_LEGACYBUMPMAP;
+                } else {
+                    TRACE_(d3d_caps)("[FAILED] - No legacy bumpmap support\n");
+                    return WINED3DERR_NOTAVAILABLE;
+                }
+            }
+
+            /* Check QUERY_POSTPIXELSHADER_BLENDING support */
+            if(Usage & WINED3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING) {
+                if(CheckPostPixelShaderBlendingCapability(Adapter, CheckFormat)) {
+                    UsageCaps |= WINED3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING;
+                } else {
+                    TRACE_(d3d_caps)("[FAILED] - No query post pixelshader blending support\n");
+                    return WINED3DERR_NOTAVAILABLE;
+                }
+            }
+
+            /* Check QUERY_SRGBREAD support */
+            if(Usage & WINED3DUSAGE_QUERY_SRGBREAD) {
+                if(CheckSrgbReadCapability(Adapter, CheckFormat)) {
+                    UsageCaps |= WINED3DUSAGE_QUERY_SRGBREAD;
+                } else {
+                    TRACE_(d3d_caps)("[FAILED] - No query srgbread support\n");
+                    return WINED3DERR_NOTAVAILABLE;
+                }
+            }
+
+            /* Check QUERY_SRGBWRITE support */
+            if(Usage & WINED3DUSAGE_QUERY_SRGBWRITE) {
+                if(CheckSrgbWriteCapability(Adapter, DeviceType, CheckFormat)) {
+                    UsageCaps |= WINED3DUSAGE_QUERY_SRGBWRITE;
+                } else {
+                    TRACE_(d3d_caps)("[FAILED] - No query srgbwrite support\n");
+                    return WINED3DERR_NOTAVAILABLE;
+                }
+            }
+
+            /* Check QUERY_VERTEXTEXTURE support */
+            if(Usage & WINED3DUSAGE_QUERY_VERTEXTEXTURE) {
+                if(CheckVertexTextureCapability(Adapter, CheckFormat)) {
+                    UsageCaps |= WINED3DUSAGE_QUERY_VERTEXTEXTURE;
+                } else {
+                    TRACE_(d3d_caps)("[FAILED] - No query vertextexture support\n");
+                    return WINED3DERR_NOTAVAILABLE;
+                }
+            }
+
+            /* Check QUERY_WRAPANDMIP support */
+            if(Usage & WINED3DUSAGE_QUERY_WRAPANDMIP) {
+                if(CheckWrapAndMipCapability(Adapter, CheckFormat)) {
+                    UsageCaps |= WINED3DUSAGE_QUERY_WRAPANDMIP;
+                } else {
+                    TRACE_(d3d_caps)("[FAILED] - No wrapping and mipmapping support\n");
+                    return WINED3DERR_NOTAVAILABLE;
+                }
+            }
+
+            if(Usage & WINED3DUSAGE_DEPTHSTENCIL) {
+                if(CheckDepthStencilCapability(Adapter, AdapterFormat, CheckFormat)) {
+                    UsageCaps |= WINED3DUSAGE_DEPTHSTENCIL;
+                } else {
+                    TRACE_(d3d_caps)("[FAILED] - No depth stencil support\n");
+                    return WINED3DERR_NOTAVAILABLE;
+                }
+            }
+        } else {
+            TRACE_(d3d_caps)("[FAILED] - Texture format not supported\n");
+            return WINED3DERR_NOTAVAILABLE;
+        }
+    } else if((RType == WINED3DRTYPE_VOLUME) || (RType == WINED3DRTYPE_VOLUMETEXTURE)) {
+        /* Volume is to VolumeTexture what Surface is to Texture but its usage caps are not documented.
+         * Most driver seem to offer (nearly) the same on Volume and VolumeTexture, so do that too.
+         *
+         * Volumetexture allows:
+         *                      - D3DUSAGE_DYNAMIC
+         *                      - D3DUSAGE_NONSECURE (d3d9ex)
+         *                      - D3DUSAGE_SOFTWAREPROCESSING
+         *                      - D3DUSAGE_QUERY_WRAPANDMIP
+         */
+
+        if(SurfaceType != SURFACE_OPENGL) {
+            TRACE("[FAILED]\n");
+            return WINED3DERR_NOTAVAILABLE;
+        }
+
+        /* Check volume texture and volume usage caps */
+        if(GL_SUPPORT(EXT_TEXTURE3D)) {
+            if(CheckTextureCapability(Adapter, DeviceType, CheckFormat) == FALSE) {
+                TRACE_(d3d_caps)("[FAILED] - Format not supported\n");
+                return WINED3DERR_NOTAVAILABLE;
+            }
+
+            /* Always report dynamic locking */
+            if(Usage & WINED3DUSAGE_DYNAMIC)
+                UsageCaps |= WINED3DUSAGE_DYNAMIC;
+
+            /* Always report software processing */
+            if(Usage & WINED3DUSAGE_SOFTWAREPROCESSING)
+                UsageCaps |= WINED3DUSAGE_SOFTWAREPROCESSING;
+
+            /* Check QUERY_FILTER support */
+            if(Usage & WINED3DUSAGE_QUERY_FILTER) {
+                if(CheckFilterCapability(Adapter, CheckFormat)) {
+                    UsageCaps |= WINED3DUSAGE_QUERY_FILTER;
+                } else {
+                    TRACE_(d3d_caps)("[FAILED] - No query filter support\n");
+                    return WINED3DERR_NOTAVAILABLE;
+                }
+            }
+
+            /* Check QUERY_POSTPIXELSHADER_BLENDING support */
+            if(Usage & WINED3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING) {
+                if(CheckPostPixelShaderBlendingCapability(Adapter, CheckFormat)) {
+                    UsageCaps |= WINED3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING;
+                } else {
+                    TRACE_(d3d_caps)("[FAILED] - No query post pixelshader blending support\n");
+                    return WINED3DERR_NOTAVAILABLE;
+                }
+            }
+
+            /* Check QUERY_SRGBREAD support */
+            if(Usage & WINED3DUSAGE_QUERY_SRGBREAD) {
+                if(CheckSrgbReadCapability(Adapter, CheckFormat)) {
+                    UsageCaps |= WINED3DUSAGE_QUERY_SRGBREAD;
+                } else {
+                    TRACE_(d3d_caps)("[FAILED] - No query srgbread support\n");
+                    return WINED3DERR_NOTAVAILABLE;
+                }
+            }
+
+            /* Check QUERY_SRGBWRITE support */
+            if(Usage & WINED3DUSAGE_QUERY_SRGBWRITE) {
+                if(CheckSrgbWriteCapability(Adapter, DeviceType, CheckFormat)) {
+                    UsageCaps |= WINED3DUSAGE_QUERY_SRGBWRITE;
+                } else {
+                    TRACE_(d3d_caps)("[FAILED] - No query srgbwrite support\n");
+                    return WINED3DERR_NOTAVAILABLE;
+                }
+            }
+
+            /* Check QUERY_VERTEXTEXTURE support */
+            if(Usage & WINED3DUSAGE_QUERY_VERTEXTEXTURE) {
+                if(CheckVertexTextureCapability(Adapter, CheckFormat)) {
+                    UsageCaps |= WINED3DUSAGE_QUERY_VERTEXTEXTURE;
+                } else {
+                    TRACE_(d3d_caps)("[FAILED] - No query vertextexture support\n");
+                    return WINED3DERR_NOTAVAILABLE;
+                }
+            }
+
+            /* Check QUERY_WRAPANDMIP support */
+            if(Usage & WINED3DUSAGE_QUERY_WRAPANDMIP) {
+                if(CheckWrapAndMipCapability(Adapter, CheckFormat)) {
+                    UsageCaps |= WINED3DUSAGE_QUERY_WRAPANDMIP;
+                } else {
+                    TRACE_(d3d_caps)("[FAILED] - No wrapping and mipmapping support\n");
+                    return WINED3DERR_NOTAVAILABLE;
+                }
+            }
+        } else {
+            TRACE_(d3d_caps)("[FAILED] - No volume texture support\n");
+            return WINED3DERR_NOTAVAILABLE;
+        }
+
+        /* Filter formats that need conversion; For one part, this conversion is unimplemented,
+         * and volume textures are huge, so it would be a big performance hit. Unless we hit an
+         * app needing one of those formats, don't advertize them to avoid leading apps into
+         * temptation. The windows drivers don't support most of those formats on volumes anyway,
+         * except of R32F.
+         */
+        switch(CheckFormat) {
+            case WINED3DFMT_P8:
+            case WINED3DFMT_A4L4:
+            case WINED3DFMT_R32F:
+            case WINED3DFMT_R16F:
+            case WINED3DFMT_X8L8V8U8:
+            case WINED3DFMT_L6V5U5:
+            case WINED3DFMT_G16R16:
+                TRACE_(d3d_caps)("[FAILED] - No converted formats on volumes\n");
+                return WINED3DERR_NOTAVAILABLE;
+
+            case WINED3DFMT_Q8W8V8U8:
+            case WINED3DFMT_V16U16:
+            if(!GL_SUPPORT(NV_TEXTURE_SHADER)) {
+                TRACE_(d3d_caps)("[FAILED] - No converted formats on volumes\n");
+                return WINED3DERR_NOTAVAILABLE;
+            }
+            break;
+
+            case WINED3DFMT_V8U8:
+            if(!GL_SUPPORT(NV_TEXTURE_SHADER)) {
+                TRACE_(d3d_caps)("[FAILED] - No converted formats on volumes\n");
+                return WINED3DERR_NOTAVAILABLE;
+            }
+            break;
+
+            case WINED3DFMT_DXT1:
+            case WINED3DFMT_DXT2:
+            case WINED3DFMT_DXT3:
+            case WINED3DFMT_DXT4:
+            case WINED3DFMT_DXT5:
+                /* The GL_EXT_texture_compression_s3tc spec requires that loading an s3tc
+                 * compressed texture results in an error. While the D3D refrast does
+                 * support s3tc volumes, at least the nvidia windows driver does not, so
+                 * we're free not to support this format.
+                 */
+                TRACE_(d3d_caps)("[FAILED] - DXTn does not support 3D textures\n");
+                return WINED3DERR_NOTAVAILABLE;
+
+            default:
+                /* Do nothing, continue with checking the format below */
+                break;
+        }
+    } else if((RType == WINED3DRTYPE_INDEXBUFFER) || (RType == WINED3DRTYPE_VERTEXBUFFER)){
+        /* For instance vertexbuffer/indexbuffer aren't supported yet because no Windows drivers seem to offer it */
+        TRACE_(d3d_caps)("Unhandled resource type D3DRTYPE_INDEXBUFFER / D3DRTYPE_VERTEXBUFFER\n");
+        return WINED3DERR_NOTAVAILABLE;
+    }
+
+    /* This format is nothing special and it is supported perfectly.
+     * However, ati and nvidia driver on windows do not mark this format as
+     * supported (tested with the dxCapsViewer) and pretending to
+     * support this format uncovers a bug in Battlefield 1942 (fonts are missing)
+     * So do the same as Windows drivers and pretend not to support it on dx8 and 9
+     * Enable it on dx7. It will need additional checking on dx10 when we support it.
+     */
+    if(This->dxVersion > 7 && CheckFormat == WINED3DFMT_R8G8B8) {
+        TRACE_(d3d_caps)("[FAILED]\n");
+        return WINED3DERR_NOTAVAILABLE;
+    }
+
+    /* When the UsageCaps exactly matches Usage return WINED3D_OK except for the situation in which
+     * WINED3DUSAGE_AUTOGENMIPMAP isn't around, then WINED3DOK_NOAUTOGEN is returned if all the other
+     * usage flags match. */
+    if(UsageCaps == Usage) {
+        return WINED3D_OK;
+    } else if((UsageCaps == (Usage & ~WINED3DUSAGE_AUTOGENMIPMAP)) && (Usage & WINED3DUSAGE_AUTOGENMIPMAP)){
+        return WINED3DOK_NOAUTOGEN;
+    } else {
+        TRACE_(d3d_caps)("[FAILED] - Usage=%#08x requested for CheckFormat=%s and RType=%d but only %#08x is available\n", Usage, debug_d3dformat(CheckFormat), RType, UsageCaps);
+        return WINED3DERR_NOTAVAILABLE;
+    }
+}
+
+static HRESULT  WINAPI IWineD3DImpl_CheckDeviceFormatConversion(IWineD3D *iface, UINT Adapter, WINED3DDEVTYPE DeviceType,
+                                                          WINED3DFORMAT SourceFormat, WINED3DFORMAT TargetFormat) {
+    IWineD3DImpl *This = (IWineD3DImpl *)iface;
+
+    FIXME_(d3d_caps)("(%p)-> (STUB) (Adptr:%d, DevType:(%u,%s), SrcFmt:(%u,%s), TgtFmt:(%u,%s))\n",
+          This,
+          Adapter,
+          DeviceType, debug_d3ddevicetype(DeviceType),
+          SourceFormat, debug_d3dformat(SourceFormat),
+          TargetFormat, debug_d3dformat(TargetFormat));
+    return WINED3D_OK;
+}
+
+static const shader_backend_t *select_shader_backend(UINT Adapter, WINED3DDEVTYPE DeviceType) {
+    const shader_backend_t *ret;
+    int vs_selected_mode;
+    int ps_selected_mode;
+
+    select_shader_mode(&GLINFO_LOCATION, DeviceType, &ps_selected_mode, &vs_selected_mode);
+    if (vs_selected_mode == SHADER_GLSL || ps_selected_mode == SHADER_GLSL) {
+        ret = &glsl_shader_backend;
+    } else if (vs_selected_mode == SHADER_ARB || ps_selected_mode == SHADER_ARB) {
+        ret = &arb_program_shader_backend;
+    } else {
+        ret = &none_shader_backend;
+    }
+    return ret;
+}
+
+static const struct fragment_pipeline *select_fragment_implementation(UINT Adapter, WINED3DDEVTYPE DeviceType) {
+    int vs_selected_mode;
+    int ps_selected_mode;
+
+    select_shader_mode(&GLINFO_LOCATION, DeviceType, &ps_selected_mode, &vs_selected_mode);
+    if((ps_selected_mode == SHADER_ARB || ps_selected_mode == SHADER_GLSL) && GL_SUPPORT(ARB_FRAGMENT_PROGRAM)) {
+        return &arbfp_fragment_pipeline;
+    } else if(ps_selected_mode == SHADER_ATI) {
+        return &atifs_fragment_pipeline;
+    } else if(GL_SUPPORT(NV_REGISTER_COMBINERS) && GL_SUPPORT(NV_TEXTURE_SHADER2)) {
+        return &nvts_fragment_pipeline;
+    } else if(GL_SUPPORT(NV_REGISTER_COMBINERS)) {
+        return &nvrc_fragment_pipeline;
+    } else {
+        return &ffp_fragment_pipeline;
+    }
+}
+
+static const struct blit_shader *select_blit_implementation(UINT Adapter, WINED3DDEVTYPE DeviceType) {
+    int vs_selected_mode;
+    int ps_selected_mode;
+
+    select_shader_mode(&GLINFO_LOCATION, DeviceType, &ps_selected_mode, &vs_selected_mode);
+    if((ps_selected_mode == SHADER_ARB || ps_selected_mode == SHADER_GLSL) && GL_SUPPORT(ARB_FRAGMENT_PROGRAM)) {
+        return &arbfp_blit;
+    } else {
+        return &ffp_blit;
+    }
+}
+
+/* Note: d3d8 passes in a pointer to a D3DCAPS8 structure, which is a true
+      subset of a D3DCAPS9 structure. However, it has to come via a void *
+      as the d3d8 interface cannot import the d3d9 header                  */
+static HRESULT WINAPI IWineD3DImpl_GetDeviceCaps(IWineD3D *iface, UINT Adapter, WINED3DDEVTYPE DeviceType, WINED3DCAPS* pCaps) {
+
+    IWineD3DImpl    *This = (IWineD3DImpl *)iface;
+    int vs_selected_mode;
+    int ps_selected_mode;
+    struct shader_caps shader_caps;
+    struct fragment_caps fragment_caps;
+    const shader_backend_t *shader_backend;
+    const struct fragment_pipeline *frag_pipeline = NULL;
+    DWORD ckey_caps, blit_caps, fx_caps;
+
+    TRACE_(d3d_caps)("(%p)->(Adptr:%d, DevType: %x, pCaps: %p)\n", This, Adapter, DeviceType, pCaps);
+
+    if (Adapter >= IWineD3D_GetAdapterCount(iface)) {
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    select_shader_mode(&Adapters[Adapter].gl_info, DeviceType, &ps_selected_mode, &vs_selected_mode);
+
+    /* This function should *not* be modifying GL caps
+     * TODO: move the functionality where it belongs */
+    select_shader_max_constants(ps_selected_mode, vs_selected_mode, &Adapters[Adapter].gl_info);
+
+    /* ------------------------------------------------
+       The following fields apply to both d3d8 and d3d9
+       ------------------------------------------------ */
+    pCaps->DeviceType              = (DeviceType == WINED3DDEVTYPE_HAL) ? WINED3DDEVTYPE_HAL : WINED3DDEVTYPE_REF;  /* Not quite true, but use h/w supported by opengl I suppose */
+    pCaps->AdapterOrdinal          = Adapter;
+
+    pCaps->Caps                    = 0;
+    pCaps->Caps2                   = WINED3DCAPS2_CANRENDERWINDOWED |
+                                     WINED3DCAPS2_FULLSCREENGAMMA |
+                                     WINED3DCAPS2_DYNAMICTEXTURES;
+    if(GL_SUPPORT(SGIS_GENERATE_MIPMAP)) {
+        pCaps->Caps2 |= WINED3DCAPS2_CANAUTOGENMIPMAP;
+    }
+
+    pCaps->Caps3                   = WINED3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD |
+                                     WINED3DCAPS3_COPY_TO_VIDMEM                   |
+                                     WINED3DCAPS3_COPY_TO_SYSTEMMEM;
+
+    pCaps->PresentationIntervals   = WINED3DPRESENT_INTERVAL_IMMEDIATE  |
+                                     WINED3DPRESENT_INTERVAL_ONE;
+
+    pCaps->CursorCaps              = WINED3DCURSORCAPS_COLOR            |
+                                     WINED3DCURSORCAPS_LOWRES;
+
+    pCaps->DevCaps                 = WINED3DDEVCAPS_FLOATTLVERTEX       |
+                                     WINED3DDEVCAPS_EXECUTESYSTEMMEMORY |
+                                     WINED3DDEVCAPS_TLVERTEXSYSTEMMEMORY|
+                                     WINED3DDEVCAPS_TLVERTEXVIDEOMEMORY |
+                                     WINED3DDEVCAPS_DRAWPRIMTLVERTEX    |
+                                     WINED3DDEVCAPS_HWTRANSFORMANDLIGHT |
+                                     WINED3DDEVCAPS_EXECUTEVIDEOMEMORY  |
+                                     WINED3DDEVCAPS_PUREDEVICE          |
+                                     WINED3DDEVCAPS_HWRASTERIZATION     |
+                                     WINED3DDEVCAPS_TEXTUREVIDEOMEMORY  |
+                                     WINED3DDEVCAPS_TEXTURESYSTEMMEMORY |
+                                     WINED3DDEVCAPS_CANRENDERAFTERFLIP  |
+                                     WINED3DDEVCAPS_DRAWPRIMITIVES2     |
+                                     WINED3DDEVCAPS_DRAWPRIMITIVES2EX   |
+                                     WINED3DDEVCAPS_RTPATCHES;
+
+    pCaps->PrimitiveMiscCaps       = WINED3DPMISCCAPS_CULLNONE              |
+                                     WINED3DPMISCCAPS_CULLCCW               |
+                                     WINED3DPMISCCAPS_CULLCW                |
+                                     WINED3DPMISCCAPS_COLORWRITEENABLE      |
+                                     WINED3DPMISCCAPS_CLIPTLVERTS           |
+                                     WINED3DPMISCCAPS_CLIPPLANESCALEDPOINTS |
+                                     WINED3DPMISCCAPS_MASKZ                 |
+                                     WINED3DPMISCCAPS_BLENDOP               |
+                                     WINED3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING;
+                                    /* TODO:
+                                        WINED3DPMISCCAPS_NULLREFERENCE
+                                        WINED3DPMISCCAPS_INDEPENDENTWRITEMASKS
+                                        WINED3DPMISCCAPS_FOGANDSPECULARALPHA
+                                        WINED3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS
+                                        WINED3DPMISCCAPS_FOGVERTEXCLAMPED */
+
+    if(GL_SUPPORT(EXT_BLEND_EQUATION_SEPARATE) && GL_SUPPORT(EXT_BLEND_FUNC_SEPARATE))
+        pCaps->PrimitiveMiscCaps |= WINED3DPMISCCAPS_SEPARATEALPHABLEND;
+
+    pCaps->RasterCaps              = WINED3DPRASTERCAPS_DITHER    |
+                                     WINED3DPRASTERCAPS_PAT       |
+                                     WINED3DPRASTERCAPS_WFOG      |
+                                     WINED3DPRASTERCAPS_ZFOG      |
+                                     WINED3DPRASTERCAPS_FOGVERTEX |
+                                     WINED3DPRASTERCAPS_FOGTABLE  |
+                                     WINED3DPRASTERCAPS_STIPPLE   |
+                                     WINED3DPRASTERCAPS_SUBPIXEL  |
+                                     WINED3DPRASTERCAPS_ZTEST     |
+                                     WINED3DPRASTERCAPS_SCISSORTEST   |
+                                     WINED3DPRASTERCAPS_SLOPESCALEDEPTHBIAS |
+                                     WINED3DPRASTERCAPS_DEPTHBIAS;
+
+    if (GL_SUPPORT(EXT_TEXTURE_FILTER_ANISOTROPIC)) {
+        pCaps->RasterCaps |= WINED3DPRASTERCAPS_ANISOTROPY    |
+                             WINED3DPRASTERCAPS_ZBIAS         |
+                             WINED3DPRASTERCAPS_MIPMAPLODBIAS;
+    }
+    if(GL_SUPPORT(NV_FOG_DISTANCE)) {
+        pCaps->RasterCaps         |= WINED3DPRASTERCAPS_FOGRANGE;
+    }
+                        /* FIXME Add:
+			   WINED3DPRASTERCAPS_COLORPERSPECTIVE
+			   WINED3DPRASTERCAPS_STRETCHBLTMULTISAMPLE
+			   WINED3DPRASTERCAPS_ANTIALIASEDGES
+			   WINED3DPRASTERCAPS_ZBUFFERLESSHSR
+			   WINED3DPRASTERCAPS_WBUFFER */
+
+    pCaps->ZCmpCaps = WINED3DPCMPCAPS_ALWAYS       |
+                      WINED3DPCMPCAPS_EQUAL        |
+                      WINED3DPCMPCAPS_GREATER      |
+                      WINED3DPCMPCAPS_GREATEREQUAL |
+                      WINED3DPCMPCAPS_LESS         |
+                      WINED3DPCMPCAPS_LESSEQUAL    |
+                      WINED3DPCMPCAPS_NEVER        |
+                      WINED3DPCMPCAPS_NOTEQUAL;
+
+    pCaps->SrcBlendCaps  = WINED3DPBLENDCAPS_BOTHINVSRCALPHA |
+                           WINED3DPBLENDCAPS_BOTHSRCALPHA    |
+                           WINED3DPBLENDCAPS_DESTALPHA       |
+                           WINED3DPBLENDCAPS_DESTCOLOR       |
+                           WINED3DPBLENDCAPS_INVDESTALPHA    |
+                           WINED3DPBLENDCAPS_INVDESTCOLOR    |
+                           WINED3DPBLENDCAPS_INVSRCALPHA     |
+                           WINED3DPBLENDCAPS_INVSRCCOLOR     |
+                           WINED3DPBLENDCAPS_ONE             |
+                           WINED3DPBLENDCAPS_SRCALPHA        |
+                           WINED3DPBLENDCAPS_SRCALPHASAT     |
+                           WINED3DPBLENDCAPS_SRCCOLOR        |
+                           WINED3DPBLENDCAPS_ZERO;
+
+    pCaps->DestBlendCaps = WINED3DPBLENDCAPS_DESTALPHA       |
+                           WINED3DPBLENDCAPS_DESTCOLOR       |
+                           WINED3DPBLENDCAPS_INVDESTALPHA    |
+                           WINED3DPBLENDCAPS_INVDESTCOLOR    |
+                           WINED3DPBLENDCAPS_INVSRCALPHA     |
+                           WINED3DPBLENDCAPS_INVSRCCOLOR     |
+                           WINED3DPBLENDCAPS_ONE             |
+                           WINED3DPBLENDCAPS_SRCALPHA        |
+                           WINED3DPBLENDCAPS_SRCCOLOR        |
+                           WINED3DPBLENDCAPS_ZERO;
+    /* NOTE: WINED3DPBLENDCAPS_SRCALPHASAT is not supported as dest blend factor,
+     * according to the glBlendFunc manpage
+     *
+     * WINED3DPBLENDCAPS_BOTHINVSRCALPHA and WINED3DPBLENDCAPS_BOTHSRCALPHA are
+     * legacy settings for srcblend only
+     */
+
+    if( GL_SUPPORT(EXT_BLEND_COLOR)) {
+        pCaps->SrcBlendCaps |= WINED3DPBLENDCAPS_BLENDFACTOR;
+        pCaps->DestBlendCaps |= WINED3DPBLENDCAPS_BLENDFACTOR;
+    }
+
+
+    pCaps->AlphaCmpCaps = WINED3DPCMPCAPS_ALWAYS       |
+                          WINED3DPCMPCAPS_EQUAL        |
+                          WINED3DPCMPCAPS_GREATER      |
+                          WINED3DPCMPCAPS_GREATEREQUAL |
+                          WINED3DPCMPCAPS_LESS         |
+                          WINED3DPCMPCAPS_LESSEQUAL    |
+                          WINED3DPCMPCAPS_NEVER        |
+                          WINED3DPCMPCAPS_NOTEQUAL;
+
+    pCaps->ShadeCaps     = WINED3DPSHADECAPS_SPECULARGOURAUDRGB |
+                           WINED3DPSHADECAPS_COLORGOURAUDRGB    |
+                           WINED3DPSHADECAPS_ALPHAFLATBLEND     |
+                           WINED3DPSHADECAPS_ALPHAGOURAUDBLEND  |
+                           WINED3DPSHADECAPS_COLORFLATRGB       |
+                           WINED3DPSHADECAPS_FOGFLAT            |
+                           WINED3DPSHADECAPS_FOGGOURAUD         |
+                           WINED3DPSHADECAPS_SPECULARFLATRGB;
+
+    pCaps->TextureCaps =  WINED3DPTEXTURECAPS_ALPHA              |
+                          WINED3DPTEXTURECAPS_ALPHAPALETTE       |
+                          WINED3DPTEXTURECAPS_TRANSPARENCY       |
+                          WINED3DPTEXTURECAPS_BORDER             |
+                          WINED3DPTEXTURECAPS_MIPMAP             |
+                          WINED3DPTEXTURECAPS_PROJECTED          |
+                          WINED3DPTEXTURECAPS_PERSPECTIVE;
+
+    if( !GL_SUPPORT(ARB_TEXTURE_NON_POWER_OF_TWO)) {
+        pCaps->TextureCaps |= WINED3DPTEXTURECAPS_POW2 |
+                              WINED3DPTEXTURECAPS_NONPOW2CONDITIONAL;
+    }
+
+    if( GL_SUPPORT(EXT_TEXTURE3D)) {
+        pCaps->TextureCaps |=  WINED3DPTEXTURECAPS_VOLUMEMAP      |
+                               WINED3DPTEXTURECAPS_MIPVOLUMEMAP   |
+                               WINED3DPTEXTURECAPS_VOLUMEMAP_POW2;
+    }
+
+    if (GL_SUPPORT(ARB_TEXTURE_CUBE_MAP)) {
+        pCaps->TextureCaps |= WINED3DPTEXTURECAPS_CUBEMAP     |
+                              WINED3DPTEXTURECAPS_MIPCUBEMAP    |
+                              WINED3DPTEXTURECAPS_CUBEMAP_POW2;
+
+    }
+
+    pCaps->TextureFilterCaps = WINED3DPTFILTERCAPS_MAGFLINEAR       |
+                               WINED3DPTFILTERCAPS_MAGFPOINT        |
+                               WINED3DPTFILTERCAPS_MINFLINEAR       |
+                               WINED3DPTFILTERCAPS_MINFPOINT        |
+                               WINED3DPTFILTERCAPS_MIPFLINEAR       |
+                               WINED3DPTFILTERCAPS_MIPFPOINT        |
+                               WINED3DPTFILTERCAPS_LINEAR           |
+                               WINED3DPTFILTERCAPS_LINEARMIPLINEAR  |
+                               WINED3DPTFILTERCAPS_LINEARMIPNEAREST |
+                               WINED3DPTFILTERCAPS_MIPLINEAR        |
+                               WINED3DPTFILTERCAPS_MIPNEAREST       |
+                               WINED3DPTFILTERCAPS_NEAREST;
+
+    if (GL_SUPPORT(EXT_TEXTURE_FILTER_ANISOTROPIC)) {
+        pCaps->TextureFilterCaps |= WINED3DPTFILTERCAPS_MAGFANISOTROPIC |
+                                    WINED3DPTFILTERCAPS_MINFANISOTROPIC;
+    }
+
+    if (GL_SUPPORT(ARB_TEXTURE_CUBE_MAP)) {
+        pCaps->CubeTextureFilterCaps = WINED3DPTFILTERCAPS_MAGFLINEAR       |
+                                       WINED3DPTFILTERCAPS_MAGFPOINT        |
+                                       WINED3DPTFILTERCAPS_MINFLINEAR       |
+                                       WINED3DPTFILTERCAPS_MINFPOINT        |
+                                       WINED3DPTFILTERCAPS_MIPFLINEAR       |
+                                       WINED3DPTFILTERCAPS_MIPFPOINT        |
+                                       WINED3DPTFILTERCAPS_LINEAR           |
+                                       WINED3DPTFILTERCAPS_LINEARMIPLINEAR  |
+                                       WINED3DPTFILTERCAPS_LINEARMIPNEAREST |
+                                       WINED3DPTFILTERCAPS_MIPLINEAR        |
+                                       WINED3DPTFILTERCAPS_MIPNEAREST       |
+                                       WINED3DPTFILTERCAPS_NEAREST;
+
+        if (GL_SUPPORT(EXT_TEXTURE_FILTER_ANISOTROPIC)) {
+            pCaps->CubeTextureFilterCaps |= WINED3DPTFILTERCAPS_MAGFANISOTROPIC |
+                                            WINED3DPTFILTERCAPS_MINFANISOTROPIC;
+        }
+    } else
+        pCaps->CubeTextureFilterCaps = 0;
+
+    if (GL_SUPPORT(EXT_TEXTURE3D)) {
+        pCaps->VolumeTextureFilterCaps = WINED3DPTFILTERCAPS_MAGFLINEAR       |
+                                         WINED3DPTFILTERCAPS_MAGFPOINT        |
+                                         WINED3DPTFILTERCAPS_MINFLINEAR       |
+                                         WINED3DPTFILTERCAPS_MINFPOINT        |
+                                         WINED3DPTFILTERCAPS_MIPFLINEAR       |
+                                         WINED3DPTFILTERCAPS_MIPFPOINT        |
+                                         WINED3DPTFILTERCAPS_LINEAR           |
+                                         WINED3DPTFILTERCAPS_LINEARMIPLINEAR  |
+                                         WINED3DPTFILTERCAPS_LINEARMIPNEAREST |
+                                         WINED3DPTFILTERCAPS_MIPLINEAR        |
+                                         WINED3DPTFILTERCAPS_MIPNEAREST       |
+                                         WINED3DPTFILTERCAPS_NEAREST;
+    } else
+        pCaps->VolumeTextureFilterCaps = 0;
+
+    pCaps->TextureAddressCaps =  WINED3DPTADDRESSCAPS_INDEPENDENTUV |
+                                 WINED3DPTADDRESSCAPS_CLAMP  |
+                                 WINED3DPTADDRESSCAPS_WRAP;
+
+    if (GL_SUPPORT(ARB_TEXTURE_BORDER_CLAMP)) {
+        pCaps->TextureAddressCaps |= WINED3DPTADDRESSCAPS_BORDER;
+    }
+    if (GL_SUPPORT(ARB_TEXTURE_MIRRORED_REPEAT)) {
+        pCaps->TextureAddressCaps |= WINED3DPTADDRESSCAPS_MIRROR;
+    }
+    if (GL_SUPPORT(ATI_TEXTURE_MIRROR_ONCE)) {
+        pCaps->TextureAddressCaps |= WINED3DPTADDRESSCAPS_MIRRORONCE;
+    }
+
+    if (GL_SUPPORT(EXT_TEXTURE3D)) {
+        pCaps->VolumeTextureAddressCaps =  WINED3DPTADDRESSCAPS_INDEPENDENTUV |
+                                           WINED3DPTADDRESSCAPS_CLAMP  |
+                                           WINED3DPTADDRESSCAPS_WRAP;
+        if (GL_SUPPORT(ARB_TEXTURE_BORDER_CLAMP)) {
+            pCaps->VolumeTextureAddressCaps |= WINED3DPTADDRESSCAPS_BORDER;
+        }
+        if (GL_SUPPORT(ARB_TEXTURE_MIRRORED_REPEAT)) {
+            pCaps->VolumeTextureAddressCaps |= WINED3DPTADDRESSCAPS_MIRROR;
+        }
+        if (GL_SUPPORT(ATI_TEXTURE_MIRROR_ONCE)) {
+            pCaps->VolumeTextureAddressCaps |= WINED3DPTADDRESSCAPS_MIRRORONCE;
+        }
+    } else
+        pCaps->VolumeTextureAddressCaps = 0;
+
+    pCaps->LineCaps = WINED3DLINECAPS_TEXTURE       |
+                      WINED3DLINECAPS_ZTEST         |
+                      WINED3DLINECAPS_BLEND         |
+                      WINED3DLINECAPS_ALPHACMP      |
+                      WINED3DLINECAPS_FOG;
+    /* WINED3DLINECAPS_ANTIALIAS is not supported on Windows, and dx and gl seem to have a different
+     * idea how generating the smoothing alpha values works; the result is different
+     */
+
+    pCaps->MaxTextureWidth  = GL_LIMITS(texture_size);
+    pCaps->MaxTextureHeight = GL_LIMITS(texture_size);
+
+    if(GL_SUPPORT(EXT_TEXTURE3D))
+        pCaps->MaxVolumeExtent = GL_LIMITS(texture3d_size);
+    else
+        pCaps->MaxVolumeExtent = 0;
+
+    pCaps->MaxTextureRepeat = 32768;
+    pCaps->MaxTextureAspectRatio = GL_LIMITS(texture_size);
+    pCaps->MaxVertexW = 1.0;
+
+    pCaps->GuardBandLeft = 0;
+    pCaps->GuardBandTop = 0;
+    pCaps->GuardBandRight = 0;
+    pCaps->GuardBandBottom = 0;
+
+    pCaps->ExtentsAdjust = 0;
+
+    pCaps->StencilCaps =  WINED3DSTENCILCAPS_DECRSAT |
+                          WINED3DSTENCILCAPS_INCRSAT |
+                          WINED3DSTENCILCAPS_INVERT  |
+                          WINED3DSTENCILCAPS_KEEP    |
+                          WINED3DSTENCILCAPS_REPLACE |
+                          WINED3DSTENCILCAPS_ZERO;
+    if (GL_SUPPORT(EXT_STENCIL_WRAP)) {
+        pCaps->StencilCaps |= WINED3DSTENCILCAPS_DECR  |
+                              WINED3DSTENCILCAPS_INCR;
+    }
+    if ( This->dxVersion > 8 &&
+        ( GL_SUPPORT(EXT_STENCIL_TWO_SIDE) ||
+            GL_SUPPORT(ATI_SEPARATE_STENCIL) ) ) {
+        pCaps->StencilCaps |= WINED3DSTENCILCAPS_TWOSIDED;
+    }
+
+    pCaps->FVFCaps = WINED3DFVFCAPS_PSIZE | 0x0008; /* 8 texture coords */
+
+    pCaps->MaxUserClipPlanes       = GL_LIMITS(clipplanes);
+    pCaps->MaxActiveLights         = GL_LIMITS(lights);
+
+    pCaps->MaxVertexBlendMatrices      = GL_LIMITS(blends);
+    pCaps->MaxVertexBlendMatrixIndex   = 0;
+
+    pCaps->MaxAnisotropy   = GL_LIMITS(anisotropy);
+    pCaps->MaxPointSize    = GL_LIMITS(pointsize);
+
+
+    pCaps->VertexProcessingCaps = WINED3DVTXPCAPS_DIRECTIONALLIGHTS |
+                                  WINED3DVTXPCAPS_MATERIALSOURCE7   |
+                                  WINED3DVTXPCAPS_POSITIONALLIGHTS  |
+                                  WINED3DVTXPCAPS_LOCALVIEWER       |
+                                  WINED3DVTXPCAPS_VERTEXFOG         |
+                                  WINED3DVTXPCAPS_TEXGEN;
+                                  /* FIXME: Add 
+                                     D3DVTXPCAPS_TWEENING, D3DVTXPCAPS_TEXGEN_SPHEREMAP */
+
+    pCaps->MaxPrimitiveCount   = 0xFFFFF; /* For now set 2^20-1 which is used by most >=Geforce3/Radeon8500 cards */
+    pCaps->MaxVertexIndex      = 0xFFFFF;
+    pCaps->MaxStreams          = MAX_STREAMS;
+    pCaps->MaxStreamStride     = 1024;
+
+    /* d3d9.dll sets D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES here because StretchRects is implemented in d3d9 */
+    pCaps->DevCaps2                          = WINED3DDEVCAPS2_STREAMOFFSET |
+                                               WINED3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET;
+    pCaps->MaxNpatchTessellationLevel        = 0;
+    pCaps->MasterAdapterOrdinal              = 0;
+    pCaps->AdapterOrdinalInGroup             = 0;
+    pCaps->NumberOfAdaptersInGroup           = 1;
+
+    pCaps->NumSimultaneousRTs = GL_LIMITS(buffers);
+
+    pCaps->StretchRectFilterCaps             = WINED3DPTFILTERCAPS_MINFPOINT  |
+                                                WINED3DPTFILTERCAPS_MAGFPOINT  |
+                                                WINED3DPTFILTERCAPS_MINFLINEAR |
+                                                WINED3DPTFILTERCAPS_MAGFLINEAR;
+    pCaps->VertexTextureFilterCaps           = 0;
+
+    memset(&shader_caps, 0, sizeof(shader_caps));
+    shader_backend = select_shader_backend(Adapter, DeviceType);
+    shader_backend->shader_get_caps(DeviceType, &GLINFO_LOCATION, &shader_caps);
+
+    memset(&fragment_caps, 0, sizeof(fragment_caps));
+    frag_pipeline = select_fragment_implementation(Adapter, DeviceType);
+    frag_pipeline->get_caps(DeviceType, &GLINFO_LOCATION, &fragment_caps);
+
+    /* Add shader misc caps. Only some of them belong to the shader parts of the pipeline */
+    pCaps->PrimitiveMiscCaps |= fragment_caps.PrimitiveMiscCaps;
+
+    /* This takes care for disabling vertex shader or pixel shader caps while leaving the other one enabled.
+     * Ignore shader model capabilities if disabled in config
+     */
+    if(vs_selected_mode == SHADER_NONE) {
+        TRACE_(d3d_caps)("Vertex shader disabled in config, reporting version 0.0\n");
+        pCaps->VertexShaderVersion          = WINED3DVS_VERSION(0,0);
+        pCaps->MaxVertexShaderConst         = 0;
+    } else {
+        pCaps->VertexShaderVersion          = shader_caps.VertexShaderVersion;
+        pCaps->MaxVertexShaderConst         = shader_caps.MaxVertexShaderConst;
+    }
+
+    if(ps_selected_mode == SHADER_NONE) {
+        TRACE_(d3d_caps)("Pixel shader disabled in config, reporting version 0.0\n");
+        pCaps->PixelShaderVersion           = WINED3DPS_VERSION(0,0);
+        pCaps->PixelShader1xMaxValue        = 0.0;
+    } else {
+        pCaps->PixelShaderVersion           = shader_caps.PixelShaderVersion;
+        pCaps->PixelShader1xMaxValue        = shader_caps.PixelShader1xMaxValue;
+    }
+
+    pCaps->TextureOpCaps                    = fragment_caps.TextureOpCaps;
+    pCaps->MaxTextureBlendStages            = fragment_caps.MaxTextureBlendStages;
+    pCaps->MaxSimultaneousTextures          = fragment_caps.MaxSimultaneousTextures;
+
+    pCaps->VS20Caps                         = shader_caps.VS20Caps;
+    pCaps->MaxVShaderInstructionsExecuted   = shader_caps.MaxVShaderInstructionsExecuted;
+    pCaps->MaxVertexShader30InstructionSlots= shader_caps.MaxVertexShader30InstructionSlots;
+    pCaps->PS20Caps                         = shader_caps.PS20Caps;
+    pCaps->MaxPShaderInstructionsExecuted   = shader_caps.MaxPShaderInstructionsExecuted;
+    pCaps->MaxPixelShader30InstructionSlots = shader_caps.MaxPixelShader30InstructionSlots;
+
+    /* The following caps are shader specific, but they are things we cannot detect, or which
+     * are the same among all shader models. So to avoid code duplication set the shader version
+     * specific, but otherwise constant caps here
+     */
+    if(pCaps->VertexShaderVersion == WINED3DVS_VERSION(3,0)) {
+        /* Where possible set the caps based on OpenGL extensions and if they aren't set (in case of software rendering)
+        use the VS 3.0 from MSDN or else if there's OpenGL spec use a hardcoded value minimum VS3.0 value. */
+        pCaps->VS20Caps.Caps                     = WINED3DVS20CAPS_PREDICATION;
+        pCaps->VS20Caps.DynamicFlowControlDepth  = WINED3DVS20_MAX_DYNAMICFLOWCONTROLDEPTH; /* VS 3.0 requires MAX_DYNAMICFLOWCONTROLDEPTH (24) */
+        pCaps->VS20Caps.NumTemps                 = max(32, GLINFO_LOCATION.vs_arb_max_temps);
+        pCaps->VS20Caps.StaticFlowControlDepth   = WINED3DVS20_MAX_STATICFLOWCONTROLDEPTH ; /* level of nesting in loops / if-statements; VS 3.0 requires MAX (4) */
+
+        pCaps->MaxVShaderInstructionsExecuted    = 65535; /* VS 3.0 needs at least 65535, some cards even use 2^32-1 */
+        pCaps->MaxVertexShader30InstructionSlots = max(512, GLINFO_LOCATION.vs_arb_max_instructions);
+    } else if(pCaps->VertexShaderVersion == WINED3DVS_VERSION(2,0)) {
+        pCaps->VS20Caps.Caps                     = 0;
+        pCaps->VS20Caps.DynamicFlowControlDepth  = WINED3DVS20_MIN_DYNAMICFLOWCONTROLDEPTH;
+        pCaps->VS20Caps.NumTemps                 = max(12, GLINFO_LOCATION.vs_arb_max_temps);
+        pCaps->VS20Caps.StaticFlowControlDepth   = 1;
+
+        pCaps->MaxVShaderInstructionsExecuted    = 65535;
+        pCaps->MaxVertexShader30InstructionSlots = 0;
+    } else { /* VS 1.x */
+        pCaps->VS20Caps.Caps                     = 0;
+        pCaps->VS20Caps.DynamicFlowControlDepth  = 0;
+        pCaps->VS20Caps.NumTemps                 = 0;
+        pCaps->VS20Caps.StaticFlowControlDepth   = 0;
+
+        pCaps->MaxVShaderInstructionsExecuted    = 0;
+        pCaps->MaxVertexShader30InstructionSlots = 0;
+    }
+
+    if(pCaps->PixelShaderVersion == WINED3DPS_VERSION(3,0)) {
+        /* Where possible set the caps based on OpenGL extensions and if they aren't set (in case of software rendering)
+        use the PS 3.0 from MSDN or else if there's OpenGL spec use a hardcoded value minimum PS 3.0 value. */
+
+        /* Caps is more or less undocumented on MSDN but it appears to be used for PS20Caps based on results from R9600/FX5900/Geforce6800 cards from Windows */
+        pCaps->PS20Caps.Caps                     = WINED3DPS20CAPS_ARBITRARYSWIZZLE     |
+                WINED3DPS20CAPS_GRADIENTINSTRUCTIONS |
+                WINED3DPS20CAPS_PREDICATION          |
+                WINED3DPS20CAPS_NODEPENDENTREADLIMIT |
+                WINED3DPS20CAPS_NOTEXINSTRUCTIONLIMIT;
+        pCaps->PS20Caps.DynamicFlowControlDepth  = WINED3DPS20_MAX_DYNAMICFLOWCONTROLDEPTH; /* PS 3.0 requires MAX_DYNAMICFLOWCONTROLDEPTH (24) */
+        pCaps->PS20Caps.NumTemps                 = max(32, GLINFO_LOCATION.ps_arb_max_temps);
+        pCaps->PS20Caps.StaticFlowControlDepth   = WINED3DPS20_MAX_STATICFLOWCONTROLDEPTH; /* PS 3.0 requires MAX_STATICFLOWCONTROLDEPTH (4) */
+        pCaps->PS20Caps.NumInstructionSlots      = WINED3DPS20_MAX_NUMINSTRUCTIONSLOTS; /* PS 3.0 requires MAX_NUMINSTRUCTIONSLOTS (512) */
+
+        pCaps->MaxPShaderInstructionsExecuted    = 65535;
+        pCaps->MaxPixelShader30InstructionSlots  = max(WINED3DMIN30SHADERINSTRUCTIONS, GLINFO_LOCATION.ps_arb_max_instructions);
+    } else if(pCaps->PixelShaderVersion == WINED3DPS_VERSION(2,0)) {
+        /* Below we assume PS2.0 specs, not extended 2.0a(GeforceFX)/2.0b(Radeon R3xx) ones */
+        pCaps->PS20Caps.Caps                     = 0;
+        pCaps->PS20Caps.DynamicFlowControlDepth  = 0; /* WINED3DVS20_MIN_DYNAMICFLOWCONTROLDEPTH = 0 */
+        pCaps->PS20Caps.NumTemps                 = max(12, GLINFO_LOCATION.ps_arb_max_temps);
+        pCaps->PS20Caps.StaticFlowControlDepth   = WINED3DPS20_MIN_STATICFLOWCONTROLDEPTH; /* Minimum: 1 */
+        pCaps->PS20Caps.NumInstructionSlots      = WINED3DPS20_MIN_NUMINSTRUCTIONSLOTS; /* Minimum number (64 ALU + 32 Texture), a GeforceFX uses 512 */
+
+        pCaps->MaxPShaderInstructionsExecuted    = 512; /* Minimum value, a GeforceFX uses 1024 */
+        pCaps->MaxPixelShader30InstructionSlots  = 0;
+    } else { /* PS 1.x */
+        pCaps->PS20Caps.Caps                     = 0;
+        pCaps->PS20Caps.DynamicFlowControlDepth  = 0;
+        pCaps->PS20Caps.NumTemps                 = 0;
+        pCaps->PS20Caps.StaticFlowControlDepth   = 0;
+        pCaps->PS20Caps.NumInstructionSlots      = 0;
+
+        pCaps->MaxPShaderInstructionsExecuted    = 0;
+        pCaps->MaxPixelShader30InstructionSlots  = 0;
+    }
+
+    if(pCaps->VertexShaderVersion >= WINED3DVS_VERSION(2,0)) {
+        /* OpenGL supports all the formats below, perhaps not always
+         * without conversion, but it supports them.
+         * Further GLSL doesn't seem to have an official unsigned type so
+         * don't advertise it yet as I'm not sure how we handle it.
+         * We might need to add some clamping in the shader engine to
+         * support it.
+         * TODO: WINED3DDTCAPS_USHORT2N, WINED3DDTCAPS_USHORT4N, WINED3DDTCAPS_UDEC3, WINED3DDTCAPS_DEC3N */
+        pCaps->DeclTypes = WINED3DDTCAPS_UBYTE4    |
+                           WINED3DDTCAPS_UBYTE4N   |
+                           WINED3DDTCAPS_SHORT2N   |
+                           WINED3DDTCAPS_SHORT4N;
+        if (GL_SUPPORT(NV_HALF_FLOAT)) {
+            pCaps->DeclTypes |= WINED3DDTCAPS_FLOAT16_2 |
+                                WINED3DDTCAPS_FLOAT16_4;
+        }
+    } else
+        pCaps->DeclTypes                         = 0;
+
+    /* Set DirectDraw helper Caps */
+    ckey_caps =                         WINEDDCKEYCAPS_DESTBLT              |
+                                        WINEDDCKEYCAPS_SRCBLT;
+    fx_caps =                           WINEDDFXCAPS_BLTALPHA               |
+                                        WINEDDFXCAPS_BLTMIRRORLEFTRIGHT     |
+                                        WINEDDFXCAPS_BLTMIRRORUPDOWN        |
+                                        WINEDDFXCAPS_BLTROTATION90          |
+                                        WINEDDFXCAPS_BLTSHRINKX             |
+                                        WINEDDFXCAPS_BLTSHRINKXN            |
+                                        WINEDDFXCAPS_BLTSHRINKY             |
+                                        WINEDDFXCAPS_BLTSHRINKXN            |
+                                        WINEDDFXCAPS_BLTSTRETCHX            |
+                                        WINEDDFXCAPS_BLTSTRETCHXN           |
+                                        WINEDDFXCAPS_BLTSTRETCHY            |
+                                        WINEDDFXCAPS_BLTSTRETCHYN;
+    blit_caps =                         WINEDDCAPS_BLT                      |
+                                        WINEDDCAPS_BLTCOLORFILL             |
+                                        WINEDDCAPS_BLTDEPTHFILL             |
+                                        WINEDDCAPS_BLTSTRETCH               |
+                                        WINEDDCAPS_CANBLTSYSMEM             |
+                                        WINEDDCAPS_CANCLIP                  |
+                                        WINEDDCAPS_CANCLIPSTRETCHED         |
+                                        WINEDDCAPS_COLORKEY                 |
+                                        WINEDDCAPS_COLORKEYHWASSIST         |
+                                        WINEDDCAPS_ALIGNBOUNDARYSRC;
+
+    /* Fill the ddraw caps structure */
+    pCaps->DirectDrawCaps.Caps =        WINEDDCAPS_GDI                      |
+                                        WINEDDCAPS_PALETTE                  |
+                                        blit_caps;
+    pCaps->DirectDrawCaps.Caps2 =       WINEDDCAPS2_CERTIFIED                |
+                                        WINEDDCAPS2_NOPAGELOCKREQUIRED       |
+                                        WINEDDCAPS2_PRIMARYGAMMA             |
+                                        WINEDDCAPS2_WIDESURFACES             |
+                                        WINEDDCAPS2_CANRENDERWINDOWED;
+    pCaps->DirectDrawCaps.SVBCaps =     blit_caps;
+    pCaps->DirectDrawCaps.SVBCKeyCaps = ckey_caps;
+    pCaps->DirectDrawCaps.SVBFXCaps =   fx_caps;
+    pCaps->DirectDrawCaps.VSBCaps =     blit_caps;
+    pCaps->DirectDrawCaps.VSBCKeyCaps = ckey_caps;
+    pCaps->DirectDrawCaps.VSBFXCaps =   fx_caps;
+    pCaps->DirectDrawCaps.SSBCaps =     blit_caps;
+    pCaps->DirectDrawCaps.SSBCKeyCaps = ckey_caps;
+    pCaps->DirectDrawCaps.SSBFXCaps =   fx_caps;
+
+    pCaps->DirectDrawCaps.ddsCaps =     WINEDDSCAPS_ALPHA                   |
+                                        WINEDDSCAPS_BACKBUFFER              |
+                                        WINEDDSCAPS_FLIP                    |
+                                        WINEDDSCAPS_FRONTBUFFER             |
+                                        WINEDDSCAPS_OFFSCREENPLAIN          |
+                                        WINEDDSCAPS_PALETTE                 |
+                                        WINEDDSCAPS_PRIMARYSURFACE          |
+                                        WINEDDSCAPS_SYSTEMMEMORY            |
+                                        WINEDDSCAPS_VIDEOMEMORY             |
+                                        WINEDDSCAPS_VISIBLE;
+    pCaps->DirectDrawCaps.StrideAlign = DDRAW_PITCH_ALIGNMENT;
+
+    /* Set D3D caps if OpenGL is available. */
+    if(Adapters[Adapter].opengl) {
+        pCaps->DirectDrawCaps.ddsCaps |=WINEDDSCAPS_3DDEVICE                |
+                                        WINEDDSCAPS_MIPMAP                  |
+                                        WINEDDSCAPS_TEXTURE                 |
+                                        WINEDDSCAPS_ZBUFFER;
+        pCaps->DirectDrawCaps.Caps |=   WINEDDCAPS_3D;
+    }
+
+    return WINED3D_OK;
+}
+
+/* Note due to structure differences between dx8 and dx9 D3DPRESENT_PARAMETERS,
+   and fields being inserted in the middle, a new structure is used in place    */
+static HRESULT  WINAPI IWineD3DImpl_CreateDevice(IWineD3D *iface, UINT Adapter, WINED3DDEVTYPE DeviceType, HWND hFocusWindow,
+                                           DWORD BehaviourFlags, IWineD3DDevice** ppReturnedDeviceInterface,
+                                           IUnknown *parent) {
+
+    IWineD3DDeviceImpl *object  = NULL;
+    IWineD3DImpl       *This    = (IWineD3DImpl *)iface;
+    WINED3DDISPLAYMODE  mode;
+    const struct fragment_pipeline *frag_pipeline = NULL;
+    int i;
+    struct fragment_caps ffp_caps;
+
+    /* Validate the adapter number. If no adapters are available(no GL), ignore the adapter
+     * number and create a device without a 3D adapter for 2D only operation.
+     */
+    if (IWineD3D_GetAdapterCount(iface) && Adapter >= IWineD3D_GetAdapterCount(iface)) {
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    /* Create a WineD3DDevice object */
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IWineD3DDeviceImpl));
+    *ppReturnedDeviceInterface = (IWineD3DDevice *)object;
+    TRACE("Created WineD3DDevice object @ %p\n", object);
+    if (NULL == object) {
+      return WINED3DERR_OUTOFVIDEOMEMORY;
+    }
+
+    /* Set up initial COM information */
+    object->lpVtbl  = &IWineD3DDevice_Vtbl;
+    object->ref     = 1;
+    object->wineD3D = iface;
+    object->adapter = numAdapters ? &Adapters[Adapter] : NULL;
+    IWineD3D_AddRef(object->wineD3D);
+    object->parent  = parent;
+    list_init(&object->resources);
+    list_init(&object->shaders);
+
+    if(This->dxVersion == 7) {
+        object->surface_alignment = DDRAW_PITCH_ALIGNMENT;
+    } else {
+        object->surface_alignment = D3D8_PITCH_ALIGNMENT;
+    }
+    object->posFixup[0] = 1.0; /* This is needed to get the x coord unmodified through a MAD */
+
+    /* Set the state up as invalid until the device is fully created */
+    object->state   = WINED3DERR_DRIVERINTERNALERROR;
+
+    TRACE("(%p)->(Adptr:%d, DevType: %x, FocusHwnd: %p, BehFlags: %x, RetDevInt: %p)\n", This, Adapter, DeviceType,
+          hFocusWindow, BehaviourFlags, ppReturnedDeviceInterface);
+
+    /* Save the creation parameters */
+    object->createParms.AdapterOrdinal = Adapter;
+    object->createParms.DeviceType     = DeviceType;
+    object->createParms.hFocusWindow   = hFocusWindow;
+    object->createParms.BehaviorFlags  = BehaviourFlags;
+
+    /* Initialize other useful values */
+    object->adapterNo                    = Adapter;
+    object->devType                      = DeviceType;
+
+    select_shader_mode(&GLINFO_LOCATION, DeviceType, &object->ps_selected_mode, &object->vs_selected_mode);
+    object->shader_backend = select_shader_backend(Adapter, DeviceType);
+
+    memset(&ffp_caps, 0, sizeof(ffp_caps));
+    frag_pipeline = select_fragment_implementation(Adapter, DeviceType);
+    object->frag_pipe = frag_pipeline;
+    frag_pipeline->get_caps(DeviceType, &GLINFO_LOCATION, &ffp_caps);
+    object->max_ffp_textures = ffp_caps.MaxSimultaneousTextures;
+    object->max_ffp_texture_stages = ffp_caps.MaxTextureBlendStages;
+    compile_state_table(object->StateTable, object->multistate_funcs, &GLINFO_LOCATION,
+                        ffp_vertexstate_template, frag_pipeline, misc_state_template);
+
+    object->blitter = select_blit_implementation(Adapter, DeviceType);
+
+    /* Prefer the vtable with functions optimized for single dirtifyable objects if the shader
+     * model can deal with that. It is essentially the same, just with adjusted
+     * Set*ShaderConstantF implementations
+     */
+    if(object->shader_backend->shader_dirtifyable_constants((IWineD3DDevice *) object)) {
+        object->lpVtbl  = &IWineD3DDevice_DirtyConst_Vtbl;
+    }
+
+    /* set the state of the device to valid */
+    object->state = WINED3D_OK;
+
+    /* Get the initial screen setup for ddraw */
+    IWineD3DImpl_GetAdapterDisplayMode(iface, Adapter, &mode);
+
+    object->ddraw_width = mode.Width;
+    object->ddraw_height = mode.Height;
+    object->ddraw_format = mode.Format;
+
+    for(i = 0; i < PATCHMAP_SIZE; i++) {
+        list_init(&object->patches[i]);
+    }
+    return WINED3D_OK;
+}
+#undef GLINFO_LOCATION
+
+static HRESULT WINAPI IWineD3DImpl_GetParent(IWineD3D *iface, IUnknown **pParent) {
+    IWineD3DImpl *This = (IWineD3DImpl *)iface;
+    IUnknown_AddRef(This->parent);
+    *pParent = This->parent;
+    return WINED3D_OK;
+}
+
+ULONG WINAPI D3DCB_DefaultDestroySurface(IWineD3DSurface *pSurface) {
+    IUnknown* surfaceParent;
+    TRACE("(%p) call back\n", pSurface);
+
+    /* Now, release the parent, which will take care of cleaning up the surface for us */
+    IWineD3DSurface_GetParent(pSurface, &surfaceParent);
+    IUnknown_Release(surfaceParent);
+    return IUnknown_Release(surfaceParent);
+}
+
+ULONG WINAPI D3DCB_DefaultDestroyVolume(IWineD3DVolume *pVolume) {
+    IUnknown* volumeParent;
+    TRACE("(%p) call back\n", pVolume);
+
+    /* Now, release the parent, which will take care of cleaning up the volume for us */
+    IWineD3DVolume_GetParent(pVolume, &volumeParent);
+    IUnknown_Release(volumeParent);
+    return IUnknown_Release(volumeParent);
+}
+
+static BOOL implementation_is_apple(const WineD3D_GL_Info *gl_info)
+{
+    /* MacOS has various specialities in the extensions it advertises. Some have to be loaded from
+     * the opengl 1.2+ core, while other extensions are advertised, but software emulated. So try to
+     * detect the Apple OpenGL implementation to apply some extension fixups afterwards.
+     *
+     * Detecting this isn't really easy. The vendor string doesn't mention Apple. Compile-time checks
+     * aren't sufficient either because a Linux binary may display on a macos X server via remote X11.
+     * So try to detect the GL implementation by looking at certain Apple extensions. Some extensions
+     * like client storage might be supported on other implementations too, but GL_APPLE_flush_render
+     * is specific to the Mac OS X window management, and GL_APPLE_ycbcr_422 is QuickTime specific. So
+     * the chance that other implementations support them is rather small since Win32 QuickTime uses
+     * DirectDraw, not OpenGL.
+     */
+    if(gl_info->supported[APPLE_FENCE] &&
+       gl_info->supported[APPLE_CLIENT_STORAGE] &&
+       gl_info->supported[APPLE_FLUSH_RENDER] &&
+       gl_info->supported[APPLE_YCBCR_422]) {
+        TRACE_(d3d_caps)("GL_APPLE_fence, GL_APPLE_client_storage, GL_APPLE_flush_render and GL_ycbcr_422 are supported\n");
+        TRACE_(d3d_caps)("Activating MacOS fixups\n");
+        return TRUE;
+    } else {
+        TRACE_(d3d_caps)("Apple extensions are not supported\n");
+        TRACE_(d3d_caps)("Not activating MacOS fixups\n");
+        return FALSE;
+    }
+}
+
+#define GLINFO_LOCATION (*gl_info)
+static void test_pbo_functionality(WineD3D_GL_Info *gl_info) {
+    /* Some OpenGL implementations, namely Apple's Geforce 8 driver, advertises PBOs,
+     * but glTexSubImage from a PBO fails miserably, with the first line repeated over
+     * all the texture. This function detects this bug by its symptom and disables PBOs
+     * if the test fails.
+     *
+     * The test uploads a 4x4 texture via the PBO in the "native" format GL_BGRA,
+     * GL_UNSIGNED_INT_8_8_8_8_REV. This format triggers the bug, and it is what we use
+     * for D3DFMT_A8R8G8B8. Then the texture is read back without any PBO and the data
+     * read back is compared to the original. If they are equal PBOs are assumed to work,
+     * otherwise the PBO extension is disabled.
+     */
+    GLuint texture, pbo;
+    static const unsigned int pattern[] = {
+        0x00000000, 0x000000ff, 0x0000ff00, 0x40ff0000,
+        0x80ffffff, 0x40ffff00, 0x00ff00ff, 0x0000ffff,
+        0x00ffff00, 0x00ff00ff, 0x0000ffff, 0x000000ff,
+        0x80ff00ff, 0x0000ffff, 0x00ff00ff, 0x40ff00ff
+    };
+    unsigned int check[sizeof(pattern) / sizeof(pattern[0])];
+
+    if(!gl_info->supported[ARB_PIXEL_BUFFER_OBJECT]) {
+        /* No PBO -> No point in testing them */
+        return;
+    }
+
+    while(glGetError());
+    glGenTextures(1, &texture);
+    glBindTexture(GL_TEXTURE_2D, texture);
+    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 4, 4, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, 0);
+    checkGLcall("Specifying the PBO test texture\n");
+
+    GL_EXTCALL(glGenBuffersARB(1, &pbo));
+    GL_EXTCALL(glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, pbo));
+    GL_EXTCALL(glBufferDataARB(GL_PIXEL_UNPACK_BUFFER_ARB, sizeof(pattern), pattern, GL_STREAM_DRAW_ARB));
+    checkGLcall("Specifying the PBO test pbo\n");
+
+    glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 4, 4, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, NULL);
+    checkGLcall("Loading the PBO test texture\n");
+
+    GL_EXTCALL(glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0));
+    glFinish(); /* just to be sure */
+
+    memset(check, 0, sizeof(check));
+    glGetTexImage(GL_TEXTURE_2D, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, check);
+    checkGLcall("Reading back the PBO test texture\n");
+
+    glDeleteTextures(1, &texture);
+    GL_EXTCALL(glDeleteBuffersARB(1, &pbo));
+    checkGLcall("PBO test cleanup\n");
+
+    if(memcmp(check, pattern, sizeof(check)) != 0) {
+        WARN_(d3d_caps)("PBO test failed, read back data doesn't match original\n");
+        WARN_(d3d_caps)("Disabling PBOs. This may result in slower performance\n");
+        gl_info->supported[ARB_PIXEL_BUFFER_OBJECT] = FALSE;
+    } else {
+        TRACE_(d3d_caps)("PBO test successful\n");
+    }
+}
+#undef GLINFO_LOCATION
+
+/* Certain applications(Steam) complain if we report an outdated driver version. In general,
+ * reporting a driver version is moot because we are not the Windows driver, and we have different
+ * bugs, features, etc.
+ *
+ * If a card is not found in this table, the gl driver version is reported
+ */
+struct driver_version_information {
+    WORD vendor;                        /* reported PCI card vendor ID  */
+    WORD card;                          /* reported PCI card device ID  */
+    WORD hipart_hi, hipart_lo;          /* driver hiword to report      */
+    WORD lopart_hi, lopart_lo;          /* driver loword to report      */
+};
+
+static const struct driver_version_information driver_version_table[] = {
+    /* Nvidia drivers. Geforce6 and newer cards are supported by the current driver (177.x)*/
+    /* GeforceFX support is up to 173.x, Geforce2MX/3/4 up to 96.x, TNT/Geforce1/2 up to 71.x */
+    /* Note that version numbers >100 lets say 123.45 use >= x.y.11.2345 and not x.y.10.12345 */
+    {VENDOR_NVIDIA,     CARD_NVIDIA_GEFORCEFX_5200,     7,  15, 11, 7341   },
+    {VENDOR_NVIDIA,     CARD_NVIDIA_GEFORCEFX_5600,     7,  15, 11, 7341   },
+    {VENDOR_NVIDIA,     CARD_NVIDIA_GEFORCEFX_5800,     7,  15, 11, 7341   },
+    {VENDOR_NVIDIA,     CARD_NVIDIA_GEFORCE_6200,       7,  15, 11, 7341   },
+    {VENDOR_NVIDIA,     CARD_NVIDIA_GEFORCE_6600GT,     7,  15, 11, 7341   },
+    {VENDOR_NVIDIA,     CARD_NVIDIA_GEFORCE_6800,       7,  15, 11, 7341   },
+    {VENDOR_NVIDIA,     CARD_NVIDIA_GEFORCE_7400,       7,  15, 11, 7341   },
+    {VENDOR_NVIDIA,     CARD_NVIDIA_GEFORCE_7300,       7,  15, 11, 7341   },
+    {VENDOR_NVIDIA,     CARD_NVIDIA_GEFORCE_7600,       7,  15, 11, 7341   },
+    {VENDOR_NVIDIA,     CARD_NVIDIA_GEFORCE_7800GT,     7,  15, 11, 7341   },
+    {VENDOR_NVIDIA,     CARD_NVIDIA_GEFORCE_8300GS,     7,  15, 11, 7341   },
+    {VENDOR_NVIDIA,     CARD_NVIDIA_GEFORCE_8600GT,     7,  15, 11, 7341   },
+    {VENDOR_NVIDIA,     CARD_NVIDIA_GEFORCE_8600MGT,    7,  15, 11, 7341   },
+    {VENDOR_NVIDIA,     CARD_NVIDIA_GEFORCE_8800GTS,    7,  15, 11, 7341   },
+    {VENDOR_NVIDIA,     CARD_NVIDIA_GEFORCE_9600GT,     7,  15, 11, 7341    },
+    {VENDOR_NVIDIA,     CARD_NVIDIA_GEFORCE_9800GT,     7,  15, 11, 7341    },
+    {VENDOR_NVIDIA,     CARD_NVIDIA_GEFORCE_GTX280,     7,  15, 11, 7341    },
+
+    /* ATI cards. The driver versions are somewhat similar, but not quite the same. Let's hardcode */
+    {VENDOR_ATI,        CARD_ATI_RADEON_9500,           6,  14, 10, 6764    },
+    {VENDOR_ATI,        CARD_ATI_RADEON_X700,           6,  14, 10, 6764    },
+    {VENDOR_ATI,        CARD_ATI_RADEON_X1600,          6,  14, 10, 6764    },
+    {VENDOR_ATI,        CARD_ATI_RADEON_HD2300,         6,  14, 10, 6764    },
+    {VENDOR_ATI,        CARD_ATI_RADEON_HD2600,         6,  14, 10, 6764    },
+    {VENDOR_ATI,        CARD_ATI_RADEON_HD2900,         6,  14, 10, 6764    },
+
+    /* TODO: Add information about legacy nvidia and ATI hardware, Intel and other cards */
+};
+
+static void fixup_extensions(WineD3D_GL_Info *gl_info) {
+    unsigned int i;
+    BOOL apple = implementation_is_apple(gl_info);
+
+    if(apple) {
+        /* MacOS advertises more GLSL vertex shader uniforms than supported by the hardware, and if more are
+         * used it falls back to software. While the compiler can detect if the shader uses all declared
+         * uniforms, the optimization fails if the shader uses relative addressing. So any GLSL shader
+         * using relative addressing falls back to software.
+         *
+         * ARB vp gives the correct amount of uniforms, so use it instead of GLSL
+         */
+        if(gl_info->vs_glsl_constantsF <= gl_info->vs_arb_constantsF) {
+            FIXME("GLSL doesn't advertise more vertex shader uniforms than ARB. Driver fixup outdated?\n");
+        } else {
+            TRACE("Driver claims %u GLSL vs uniforms, replacing with %u ARB vp uniforms\n",
+                  gl_info->vs_glsl_constantsF, gl_info->vs_arb_constantsF);
+            gl_info->vs_glsl_constantsF = gl_info->vs_arb_constantsF;
+        }
+
+        /* The Intel GPUs on MacOS set the .w register of texcoords to 0.0 by default, which causes problems
+         * with fixed function fragment processing. Ideally this flag should be detected with a test shader
+         * and OpenGL feedback mode, but some GL implementations (MacOS ATI at least, probably all MacOS ones)
+         * do not like vertex shaders in feedback mode and return an error, even though it should be valid
+         * according to the spec.
+         *
+         * We don't want to enable this on all cards, as it adds an extra instruction per texcoord used. This
+         * makes the shader slower and eats instruction slots which should be available to the d3d app.
+         *
+         * ATI Radeon HD 2xxx cards on MacOS have the issue. Instead of checking for the buggy cards, blacklist
+         * all radeon cards on Macs and whitelist the good ones. That way we're prepared for the future. If
+         * this workaround is activated on cards that do not need it, it won't break things, just affect
+         * performance negatively.
+         */
+        if(gl_info->gl_vendor == VENDOR_INTEL ||
+           (gl_info->gl_vendor == VENDOR_ATI && gl_info->gl_card != CARD_ATI_RADEON_X1600)) {
+            TRACE("Enabling vertex texture coord fixes in vertex shaders\n");
+            gl_info->set_texcoord_w = TRUE;
+        }
+    }
+
+    /* MacOS advertises GL_ARB_texture_non_power_of_two on ATI r500 and earlier cards, although
+     * these cards only support GL_ARB_texture_rectangle(D3DPTEXTURECAPS_NONPOW2CONDITIONAL).
+     * If real NP2 textures are used, the driver falls back to software. We could just remove the
+     * extension and use GL_ARB_texture_rectangle instead, but texture_rectangle is inconventient
+     * due to the non-normalized texture coordinates. Thus set an internal extension flag,
+     * GL_WINE_normalized_texrect, which signals the code that it can use non power of two textures
+     * as per GL_ARB_texture_non_power_of_two, but has to stick to the texture_rectangle limits.
+     *
+     * fglrx doesn't advertise GL_ARB_texture_non_power_of_two, but it advertises opengl 2.0 which
+     * has this extension promoted to core. The extension loading code sets this extension supported
+     * due to that, so this code works on fglrx as well.
+     */
+    if(gl_info->supported[ARB_TEXTURE_NON_POWER_OF_TWO] && gl_info->gl_vendor == VENDOR_ATI) {
+        if(gl_info->gl_card == CARD_ATI_RADEON_X700 || gl_info->gl_card == CARD_ATI_RADEON_X1600 ||
+            gl_info->gl_card == CARD_ATI_RADEON_9500 || gl_info->gl_card == CARD_ATI_RADEON_8500  ||
+            gl_info->gl_card == CARD_ATI_RADEON_7200 || gl_info->gl_card == CARD_ATI_RAGE_128PRO) {
+            TRACE("GL_ARB_texture_non_power_of_two advertised on R500 or earlier card, removing\n");
+            gl_info->supported[ARB_TEXTURE_NON_POWER_OF_TWO] = FALSE;
+            gl_info->supported[WINE_NORMALIZED_TEXRECT] = TRUE;
+        }
+    }
+
+    /*  The nVidia GeForceFX series reports OpenGL 2.0 capabilities with the latest drivers versions, but
+     *  doesn't explicitly advertise the ARB_tex_npot extension in the GL extension string.
+     *  This usually means that ARB_tex_npot is supported in hardware as long as the application is staying
+     *  within the limits enforced by the ARB_texture_rectangle extension. This however is not true for the
+     *  FX series, which instantly falls back to a slower software path as soon as ARB_tex_npot is used.
+     *  We therefore completely remove ARB_tex_npot from the list of supported extensions.
+     *
+     *  Note that wine_normalized_texrect can't be used in this case because internally it uses ARB_tex_npot,
+     *  triggering the software fallback. There is not much we can do here apart from disabling the
+     *  software-emulated extension and reenable ARB_tex_rect (which was previously disabled
+     *  in IWineD3DImpl_FillGLCaps).
+     *  This fixup removes performance problems on both the FX 5900 and FX 5700 (e.g. for framebuffer
+     *  post-processing effects in the game "Max Payne 2").
+     *  The behaviour can be verified through a simple test app attached in bugreport #14724.
+     */
+    if(gl_info->supported[ARB_TEXTURE_NON_POWER_OF_TWO] && gl_info->gl_vendor == VENDOR_NVIDIA) {
+        if(gl_info->gl_card == CARD_NVIDIA_GEFORCEFX_5800 || gl_info->gl_card == CARD_NVIDIA_GEFORCEFX_5600) {
+            TRACE("GL_ARB_texture_non_power_of_two advertised through OpenGL 2.0 on NV FX card, removing\n");
+            gl_info->supported[ARB_TEXTURE_NON_POWER_OF_TWO] = FALSE;
+            gl_info->supported[ARB_TEXTURE_RECTANGLE] = TRUE;
+        }
+    }
+
+    /* Find out if PBOs work as they are supposed to */
+    test_pbo_functionality(gl_info);
+
+    /* Fixup the driver version */
+    for(i = 0; i < (sizeof(driver_version_table) / sizeof(driver_version_table[0])); i++) {
+        if(gl_info->gl_vendor == driver_version_table[i].vendor &&
+           gl_info->gl_card   == driver_version_table[i].card) {
+            TRACE_(d3d_caps)("Found card 0x%04x, 0x%04x in driver version DB\n", gl_info->gl_vendor, gl_info->gl_card);
+
+            gl_info->driver_version        = MAKEDWORD_VERSION(driver_version_table[i].lopart_hi,
+                                                               driver_version_table[i].lopart_lo);
+            gl_info->driver_version_hipart = MAKEDWORD_VERSION(driver_version_table[i].hipart_hi,
+                                                               driver_version_table[i].hipart_lo);
+            break;
+        }
+    }
+}
+
+static void WINE_GLAPI invalid_func(const void *data)
+{
+    ERR("Invalid vertex attribute function called\n");
+    DebugBreak();
+}
+
+static void WINE_GLAPI invalid_texcoord_func(GLenum unit, const void *data)
+{
+    ERR("Invalid texcoord function called\n");
+    DebugBreak();
+}
+
+#define GLINFO_LOCATION (Adapters[0].gl_info)
+
+/* Helper functions for providing vertex data to opengl. The arrays are initialized based on
+ * the extension detection and are used in drawStridedSlow
+ */
+static void WINE_GLAPI position_d3dcolor(const void *data)
+{
+    DWORD pos = *((const DWORD *)data);
+
+    FIXME("Add a test for fixed function position from d3dcolor type\n");
+    glVertex4s(D3DCOLOR_B_R(pos),
+               D3DCOLOR_B_G(pos),
+               D3DCOLOR_B_B(pos),
+               D3DCOLOR_B_A(pos));
+}
+
+static void WINE_GLAPI position_float4(const void *data)
+{
+    const GLfloat *pos = data;
+
+    if (pos[3] < eps && pos[3] > -eps)
+        glVertex3fv(pos);
+    else {
+        float w = 1.0 / pos[3];
+
+        glVertex4f(pos[0] * w, pos[1] * w, pos[2] * w, w);
+    }
+}
+
+static void WINE_GLAPI diffuse_d3dcolor(const void *data)
+{
+    DWORD diffuseColor = *((const DWORD *)data);
+
+    glColor4ub(D3DCOLOR_B_R(diffuseColor),
+               D3DCOLOR_B_G(diffuseColor),
+               D3DCOLOR_B_B(diffuseColor),
+               D3DCOLOR_B_A(diffuseColor));
+}
+
+static void WINE_GLAPI specular_d3dcolor(const void *data)
+{
+    DWORD specularColor = *((const DWORD *)data);
+
+    GL_EXTCALL(glSecondaryColor3ubEXT)(D3DCOLOR_B_R(specularColor),
+                                       D3DCOLOR_B_G(specularColor),
+                                       D3DCOLOR_B_B(specularColor));
+}
+
+static void WINE_GLAPI warn_no_specular_func(const void *data)
+{
+    WARN("GL_EXT_secondary_color not supported\n");
+}
+
+static void fillGLAttribFuncs(const WineD3D_GL_Info *gl_info)
+{
+    position_funcs[WINED3DDECLTYPE_FLOAT1]      = invalid_func;
+    position_funcs[WINED3DDECLTYPE_FLOAT2]      = invalid_func;
+    position_funcs[WINED3DDECLTYPE_FLOAT3]      = (glAttribFunc)glVertex3fv;
+    position_funcs[WINED3DDECLTYPE_FLOAT4]      = position_float4;
+    position_funcs[WINED3DDECLTYPE_D3DCOLOR]    = position_d3dcolor;
+    position_funcs[WINED3DDECLTYPE_UBYTE4]      = invalid_func;
+    position_funcs[WINED3DDECLTYPE_SHORT2]      = invalid_func;
+    position_funcs[WINED3DDECLTYPE_SHORT4]      = (glAttribFunc)glVertex2sv;
+    position_funcs[WINED3DDECLTYPE_UBYTE4N]     = invalid_func;
+    position_funcs[WINED3DDECLTYPE_SHORT2N]     = invalid_func;
+    position_funcs[WINED3DDECLTYPE_SHORT4N]     = invalid_func;
+    position_funcs[WINED3DDECLTYPE_USHORT2N]    = invalid_func;
+    position_funcs[WINED3DDECLTYPE_USHORT4N]    = invalid_func;
+    position_funcs[WINED3DDECLTYPE_UDEC3]       = invalid_func;
+    position_funcs[WINED3DDECLTYPE_DEC3N]       = invalid_func;
+    position_funcs[WINED3DDECLTYPE_FLOAT16_2]   = invalid_func;
+    position_funcs[WINED3DDECLTYPE_FLOAT16_4]   = invalid_func;
+
+    diffuse_funcs[WINED3DDECLTYPE_FLOAT1]       = invalid_func;
+    diffuse_funcs[WINED3DDECLTYPE_FLOAT2]       = invalid_func;
+    diffuse_funcs[WINED3DDECLTYPE_FLOAT3]       = (glAttribFunc)glColor3fv;
+    diffuse_funcs[WINED3DDECLTYPE_FLOAT4]       = (glAttribFunc)glColor4fv;
+    diffuse_funcs[WINED3DDECLTYPE_D3DCOLOR]     = diffuse_d3dcolor;
+    diffuse_funcs[WINED3DDECLTYPE_UBYTE4]       = invalid_func;
+    diffuse_funcs[WINED3DDECLTYPE_SHORT2]       = invalid_func;
+    diffuse_funcs[WINED3DDECLTYPE_SHORT4]       = invalid_func;
+    diffuse_funcs[WINED3DDECLTYPE_UBYTE4N]      = (glAttribFunc)glColor4ubv;
+    diffuse_funcs[WINED3DDECLTYPE_SHORT2N]      = invalid_func;
+    diffuse_funcs[WINED3DDECLTYPE_SHORT4N]      = (glAttribFunc)glColor4sv;
+    diffuse_funcs[WINED3DDECLTYPE_USHORT2N]     = invalid_func;
+    diffuse_funcs[WINED3DDECLTYPE_USHORT4N]     = (glAttribFunc)glColor4usv;
+    diffuse_funcs[WINED3DDECLTYPE_UDEC3]        = invalid_func;
+    diffuse_funcs[WINED3DDECLTYPE_DEC3N]        = invalid_func;
+    diffuse_funcs[WINED3DDECLTYPE_FLOAT16_2]    = invalid_func;
+    diffuse_funcs[WINED3DDECLTYPE_FLOAT16_4]    = invalid_func;
+
+    /* No 4 component entry points here */
+    specular_funcs[WINED3DDECLTYPE_FLOAT1]      = invalid_func;
+    specular_funcs[WINED3DDECLTYPE_FLOAT2]      = invalid_func;
+    if(GL_SUPPORT(EXT_SECONDARY_COLOR)) {
+        specular_funcs[WINED3DDECLTYPE_FLOAT3]      = (glAttribFunc)GL_EXTCALL(glSecondaryColor3fvEXT);
+    } else {
+        specular_funcs[WINED3DDECLTYPE_FLOAT3]      = warn_no_specular_func;
+    }
+    specular_funcs[WINED3DDECLTYPE_FLOAT4]      = invalid_func;
+    if(GL_SUPPORT(EXT_SECONDARY_COLOR)) {
+        specular_funcs[WINED3DDECLTYPE_D3DCOLOR]    = specular_d3dcolor;
+    } else {
+        specular_funcs[WINED3DDECLTYPE_D3DCOLOR]      = warn_no_specular_func;
+    }
+    specular_funcs[WINED3DDECLTYPE_UBYTE4]      = invalid_func;
+    specular_funcs[WINED3DDECLTYPE_SHORT2]      = invalid_func;
+    specular_funcs[WINED3DDECLTYPE_SHORT4]      = invalid_func;
+    specular_funcs[WINED3DDECLTYPE_UBYTE4N]     = invalid_func;
+    specular_funcs[WINED3DDECLTYPE_SHORT2N]     = invalid_func;
+    specular_funcs[WINED3DDECLTYPE_SHORT4N]     = invalid_func;
+    specular_funcs[WINED3DDECLTYPE_USHORT2N]    = invalid_func;
+    specular_funcs[WINED3DDECLTYPE_USHORT4N]    = invalid_func;
+    specular_funcs[WINED3DDECLTYPE_UDEC3]       = invalid_func;
+    specular_funcs[WINED3DDECLTYPE_DEC3N]       = invalid_func;
+    specular_funcs[WINED3DDECLTYPE_FLOAT16_2]   = invalid_func;
+    specular_funcs[WINED3DDECLTYPE_FLOAT16_4]   = invalid_func;
+
+    /* Only 3 component entry points here. Test how others behave. Float4 normals are used
+     * by one of our tests, trying to pass it to the pixel shader, which fails on Windows.
+     */
+    normal_funcs[WINED3DDECLTYPE_FLOAT1]         = invalid_func;
+    normal_funcs[WINED3DDECLTYPE_FLOAT2]         = invalid_func;
+    normal_funcs[WINED3DDECLTYPE_FLOAT3]         = (glAttribFunc)glNormal3fv;
+    normal_funcs[WINED3DDECLTYPE_FLOAT4]         = (glAttribFunc)glNormal3fv; /* Just ignore the 4th value */
+    normal_funcs[WINED3DDECLTYPE_D3DCOLOR]       = invalid_func;
+    normal_funcs[WINED3DDECLTYPE_UBYTE4]         = invalid_func;
+    normal_funcs[WINED3DDECLTYPE_SHORT2]         = invalid_func;
+    normal_funcs[WINED3DDECLTYPE_SHORT4]         = invalid_func;
+    normal_funcs[WINED3DDECLTYPE_UBYTE4N]        = invalid_func;
+    normal_funcs[WINED3DDECLTYPE_SHORT2N]        = invalid_func;
+    normal_funcs[WINED3DDECLTYPE_SHORT4N]        = invalid_func;
+    normal_funcs[WINED3DDECLTYPE_USHORT2N]       = invalid_func;
+    normal_funcs[WINED3DDECLTYPE_USHORT4N]       = invalid_func;
+    normal_funcs[WINED3DDECLTYPE_UDEC3]          = invalid_func;
+    normal_funcs[WINED3DDECLTYPE_DEC3N]          = invalid_func;
+    normal_funcs[WINED3DDECLTYPE_FLOAT16_2]      = invalid_func;
+    normal_funcs[WINED3DDECLTYPE_FLOAT16_4]      = invalid_func;
+
+    multi_texcoord_funcs[WINED3DDECLTYPE_FLOAT1]    = (glMultiTexCoordFunc)GL_EXTCALL(glMultiTexCoord1fvARB);
+    multi_texcoord_funcs[WINED3DDECLTYPE_FLOAT2]    = (glMultiTexCoordFunc)GL_EXTCALL(glMultiTexCoord2fvARB);
+    multi_texcoord_funcs[WINED3DDECLTYPE_FLOAT3]    = (glMultiTexCoordFunc)GL_EXTCALL(glMultiTexCoord3fvARB);
+    multi_texcoord_funcs[WINED3DDECLTYPE_FLOAT4]    = (glMultiTexCoordFunc)GL_EXTCALL(glMultiTexCoord4fvARB);
+    multi_texcoord_funcs[WINED3DDECLTYPE_D3DCOLOR]  = invalid_texcoord_func;
+    multi_texcoord_funcs[WINED3DDECLTYPE_UBYTE4]    = invalid_texcoord_func;
+    multi_texcoord_funcs[WINED3DDECLTYPE_SHORT2]    = (glMultiTexCoordFunc)GL_EXTCALL(glMultiTexCoord2svARB);
+    multi_texcoord_funcs[WINED3DDECLTYPE_SHORT4]    = (glMultiTexCoordFunc)GL_EXTCALL(glMultiTexCoord4svARB);
+    multi_texcoord_funcs[WINED3DDECLTYPE_UBYTE4N]   = invalid_texcoord_func;
+    multi_texcoord_funcs[WINED3DDECLTYPE_SHORT2N]   = invalid_texcoord_func;
+    multi_texcoord_funcs[WINED3DDECLTYPE_SHORT4N]   = invalid_texcoord_func;
+    multi_texcoord_funcs[WINED3DDECLTYPE_USHORT2N]  = invalid_texcoord_func;
+    multi_texcoord_funcs[WINED3DDECLTYPE_USHORT4N]  = invalid_texcoord_func;
+    multi_texcoord_funcs[WINED3DDECLTYPE_UDEC3]     = invalid_texcoord_func;
+    multi_texcoord_funcs[WINED3DDECLTYPE_DEC3N]     = invalid_texcoord_func;
+    if (GL_SUPPORT(NV_HALF_FLOAT))
+    {
+        multi_texcoord_funcs[WINED3DDECLTYPE_FLOAT16_2] = (glMultiTexCoordFunc)GL_EXTCALL(glMultiTexCoord2hvNV);
+        multi_texcoord_funcs[WINED3DDECLTYPE_FLOAT16_4] = (glMultiTexCoordFunc)GL_EXTCALL(glMultiTexCoord4hvNV);
+    } else {
+        multi_texcoord_funcs[WINED3DDECLTYPE_FLOAT16_2] = invalid_texcoord_func;
+        multi_texcoord_funcs[WINED3DDECLTYPE_FLOAT16_4] = invalid_texcoord_func;
+    }
+
+    texcoord_funcs[WINED3DDECLTYPE_FLOAT1]      = (glAttribFunc)glTexCoord1fv;
+    texcoord_funcs[WINED3DDECLTYPE_FLOAT2]      = (glAttribFunc)glTexCoord2fv;
+    texcoord_funcs[WINED3DDECLTYPE_FLOAT3]      = (glAttribFunc)glTexCoord3fv;
+    texcoord_funcs[WINED3DDECLTYPE_FLOAT4]      = (glAttribFunc)glTexCoord4fv;
+    texcoord_funcs[WINED3DDECLTYPE_D3DCOLOR]    = invalid_func;
+    texcoord_funcs[WINED3DDECLTYPE_UBYTE4]      = invalid_func;
+    texcoord_funcs[WINED3DDECLTYPE_SHORT2]      = (glAttribFunc)glTexCoord2sv;
+    texcoord_funcs[WINED3DDECLTYPE_SHORT4]      = (glAttribFunc)glTexCoord4sv;
+    texcoord_funcs[WINED3DDECLTYPE_UBYTE4N]     = invalid_func;
+    texcoord_funcs[WINED3DDECLTYPE_SHORT2N]     = invalid_func;
+    texcoord_funcs[WINED3DDECLTYPE_SHORT4N]     = invalid_func;
+    texcoord_funcs[WINED3DDECLTYPE_USHORT2N]    = invalid_func;
+    texcoord_funcs[WINED3DDECLTYPE_USHORT4N]    = invalid_func;
+    texcoord_funcs[WINED3DDECLTYPE_UDEC3]       = invalid_func;
+    texcoord_funcs[WINED3DDECLTYPE_DEC3N]       = invalid_func;
+    if (GL_SUPPORT(NV_HALF_FLOAT))
+    {
+        texcoord_funcs[WINED3DDECLTYPE_FLOAT16_2]   = (glAttribFunc)GL_EXTCALL(glTexCoord2hvNV);
+        texcoord_funcs[WINED3DDECLTYPE_FLOAT16_4]   = (glAttribFunc)GL_EXTCALL(glTexCoord4hvNV);
+    } else {
+        texcoord_funcs[WINED3DDECLTYPE_FLOAT16_2]   = invalid_func;
+        texcoord_funcs[WINED3DDECLTYPE_FLOAT16_4]   = invalid_func;
+    }
+}
+
+#define PUSH1(att)        attribs[nAttribs++] = (att);
+BOOL InitAdapters(void) {
+    static HMODULE mod_gl, mod_win32gl;
+    BOOL ret;
+    int ps_selected_mode, vs_selected_mode;
+
+    /* No need to hold any lock. The calling library makes sure only one thread calls
+     * wined3d simultaneously
+     */
+    if(numAdapters > 0) return Adapters[0].opengl;
+
+    TRACE("Initializing adapters\n");
+
+    if(!mod_gl) {
+#ifdef USE_WIN32_OPENGL
+#define USE_GL_FUNC(pfn) pfn = (void*)GetProcAddress(mod_gl, #pfn);
+        mod_gl = LoadLibraryA("opengl32.dll");
+        if(!mod_gl) {
+            ERR("Can't load opengl32.dll!\n");
+            goto nogl_adapter;
+        }
+        mod_win32gl = mod_gl;
+#else
+#define USE_GL_FUNC(pfn) pfn = (void*)pwglGetProcAddress(#pfn);
+        /* To bypass the opengl32 thunks load wglGetProcAddress from gdi32 (glXGetProcAddress wrapper) instead of opengl32's */
+        mod_gl = GetModuleHandleA("gdi32.dll");
+        mod_win32gl = LoadLibraryA("opengl32.dll");
+        if(!mod_win32gl) {
+            ERR("Can't load opengl32.dll!\n");
+            goto nogl_adapter;
+        }
+#endif
+    }
+
+/* Load WGL core functions from opengl32.dll */
+#define USE_WGL_FUNC(pfn) p##pfn = (void*)GetProcAddress(mod_gl, #pfn);
+    WGL_FUNCS_GEN;
+#undef USE_WGL_FUNC
+
+    if(!pwglGetProcAddress) {
+        ERR("Unable to load wglGetProcAddress!\n");
+        goto nogl_adapter;
+    }
+
+/* Dynamically load all GL core functions */
+    GL_FUNCS_GEN;
+#undef USE_GL_FUNC
+
+    /* Load glFinish and glFlush from opengl32.dll even if we're not using WIN32 opengl
+     * otherwise because we have to use winex11.drv's override
+     */
+    glFinish = (void*)GetProcAddress(mod_win32gl, "glFinish");
+    glFlush = (void*)GetProcAddress(mod_win32gl, "glFlush");
+
+    /* For now only one default adapter */
+    {
+        int iPixelFormat;
+        int attribs[10];
+        int values[10];
+        int nAttribs = 0;
+        int res;
+        int i;
+        WineD3D_PixelFormat *cfgs;
+        int attribute;
+        DISPLAY_DEVICEW DisplayDevice;
+        HDC hdc;
+
+        TRACE("Initializing default adapter\n");
+        Adapters[0].num = 0;
+        Adapters[0].monitorPoint.x = -1;
+        Adapters[0].monitorPoint.y = -1;
+
+        if (!WineD3D_CreateFakeGLContext()) {
+            ERR("Failed to get a gl context for default adapter\n");
+            WineD3D_ReleaseFakeGLContext();
+            goto nogl_adapter;
+        }
+
+        ret = IWineD3DImpl_FillGLCaps(&Adapters[0].gl_info);
+        if(!ret) {
+            ERR("Failed to initialize gl caps for default adapter\n");
+            WineD3D_ReleaseFakeGLContext();
+            goto nogl_adapter;
+        }
+        ret = initPixelFormats(&Adapters[0].gl_info);
+        if(!ret) {
+            ERR("Failed to init gl formats\n");
+            WineD3D_ReleaseFakeGLContext();
+            goto nogl_adapter;
+        }
+
+        hdc = pwglGetCurrentDC();
+        if(!hdc) {
+            ERR("Failed to get gl HDC\n");
+            WineD3D_ReleaseFakeGLContext();
+            goto nogl_adapter;
+        }
+
+        Adapters[0].driver = "Display";
+        Adapters[0].description = "Direct3D HAL";
+
+        /* Use the VideoRamSize registry setting when set */
+        if(wined3d_settings.emulated_textureram)
+            Adapters[0].TextureRam = wined3d_settings.emulated_textureram;
+        else
+            Adapters[0].TextureRam = Adapters[0].gl_info.vidmem;
+        Adapters[0].UsedTextureRam = 0;
+        TRACE("Emulating %dMB of texture ram\n", Adapters[0].TextureRam/(1024*1024));
+
+        /* Initialize the Adapter's DeviceName which is required for ChangeDisplaySettings and friends */
+        DisplayDevice.cb = sizeof(DisplayDevice);
+        EnumDisplayDevicesW(NULL, 0 /* Adapter 0 = iDevNum 0 */, &DisplayDevice, 0);
+        TRACE("DeviceName: %s\n", debugstr_w(DisplayDevice.DeviceName));
+        strcpyW(Adapters[0].DeviceName, DisplayDevice.DeviceName);
+
+        attribute = WGL_NUMBER_PIXEL_FORMATS_ARB;
+        GL_EXTCALL(wglGetPixelFormatAttribivARB(hdc, 0, 0, 1, &attribute, &Adapters[0].nCfgs));
+
+        Adapters[0].cfgs = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, Adapters[0].nCfgs *sizeof(WineD3D_PixelFormat));
+        cfgs = Adapters[0].cfgs;
+        PUSH1(WGL_RED_BITS_ARB)
+        PUSH1(WGL_GREEN_BITS_ARB)
+        PUSH1(WGL_BLUE_BITS_ARB)
+        PUSH1(WGL_ALPHA_BITS_ARB)
+        PUSH1(WGL_DEPTH_BITS_ARB)
+        PUSH1(WGL_STENCIL_BITS_ARB)
+        PUSH1(WGL_DRAW_TO_WINDOW_ARB)
+        PUSH1(WGL_PIXEL_TYPE_ARB)
+        PUSH1(WGL_DOUBLE_BUFFER_ARB)
+        PUSH1(WGL_AUX_BUFFERS_ARB)
+
+        for(iPixelFormat=1; iPixelFormat<=Adapters[0].nCfgs; iPixelFormat++) {
+            res = GL_EXTCALL(wglGetPixelFormatAttribivARB(hdc, iPixelFormat, 0, nAttribs, attribs, values));
+
+            if(!res)
+                continue;
+
+            /* Cache the pixel format */
+            cfgs->iPixelFormat = iPixelFormat;
+            cfgs->redSize = values[0];
+            cfgs->greenSize = values[1];
+            cfgs->blueSize = values[2];
+            cfgs->alphaSize = values[3];
+            cfgs->depthSize = values[4];
+            cfgs->stencilSize = values[5];
+            cfgs->windowDrawable = values[6];
+            cfgs->iPixelType = values[7];
+            cfgs->doubleBuffer = values[8];
+            cfgs->auxBuffers = values[9];
+
+            cfgs->pbufferDrawable = FALSE;
+            /* Check for pbuffer support when it is around as wglGetPixelFormatAttribiv fails for unknown attributes. */
+            if(GL_SUPPORT(WGL_ARB_PBUFFER)) {
+                int attrib = WGL_DRAW_TO_PBUFFER_ARB;
+                int value;
+                if(GL_EXTCALL(wglGetPixelFormatAttribivARB(hdc, iPixelFormat, 0, 1, &attrib, &value)))
+                    cfgs->pbufferDrawable = value;
+            }
+
+            cfgs->numSamples = 0;
+            /* Check multisample support */
+            if(GL_SUPPORT(ARB_MULTISAMPLE)) {
+                int attrib[2] = {WGL_SAMPLE_BUFFERS_ARB, WGL_SAMPLES_ARB};
+                int value[2];
+                if(GL_EXTCALL(wglGetPixelFormatAttribivARB(hdc, iPixelFormat, 0, 2, attrib, value))) {
+                    /* value[0] = WGL_SAMPLE_BUFFERS_ARB which tells whether multisampling is supported.
+                     * value[1] = number of multi sample buffers*/
+                    if(value[0])
+                        cfgs->numSamples = value[1];
+                }
+            }
+
+            TRACE("iPixelFormat=%d, iPixelType=%#x, doubleBuffer=%d, RGBA=%d/%d/%d/%d, depth=%d, stencil=%d, windowDrawable=%d, pbufferDrawable=%d\n", cfgs->iPixelFormat, cfgs->iPixelType, cfgs->doubleBuffer, cfgs->redSize, cfgs->greenSize, cfgs->blueSize, cfgs->alphaSize, cfgs->depthSize, cfgs->stencilSize, cfgs->windowDrawable, cfgs->pbufferDrawable);
+            cfgs++;
+        }
+
+        /* D16, D24X8 and D24S8 are common depth / depth+stencil formats. All drivers support them though this doesn't
+         * mean that the format is offered in hardware. For instance Geforce8 cards don't have offer D16 in hardware
+         * but just fake it using D24(X8?) which is fine. D3D also allows that.
+         * Some display drivers (i915 on Linux) only report mixed depth+stencil formats like D24S8. MSDN clearly mentions
+         * that only on lockable formats (e.g. D16_locked) the bit order is guaranteed and that on other formats the
+         * driver is allowed to consume more bits EXCEPT for stencil bits.
+         *
+         * Mark an adapter with this broken stencil behavior.
+         */
+        Adapters[0].brokenStencil = TRUE;
+        for(i=0, cfgs=Adapters[0].cfgs; i<Adapters[0].nCfgs; i++) {
+            /* Nearly all drivers offer depth formats without stencil, only on i915 this if-statement won't be entered. */
+            if(cfgs[i].depthSize && !cfgs[i].stencilSize) {
+                Adapters[0].brokenStencil = FALSE;
+                break;
+            }
+        }
+
+        fixup_extensions(&Adapters[0].gl_info);
+
+        WineD3D_ReleaseFakeGLContext();
+
+        select_shader_mode(&Adapters[0].gl_info, WINED3DDEVTYPE_HAL, &ps_selected_mode, &vs_selected_mode);
+        select_shader_max_constants(ps_selected_mode, vs_selected_mode, &Adapters[0].gl_info);
+        fillGLAttribFuncs(&Adapters[0].gl_info);
+        init_type_lookup(&Adapters[0].gl_info);
+        Adapters[0].opengl = TRUE;
+    }
+    numAdapters = 1;
+    TRACE("%d adapters successfully initialized\n", numAdapters);
+
+    return TRUE;
+
+nogl_adapter:
+    /* Initialize an adapter for ddraw-only memory counting */
+    memset(Adapters, 0, sizeof(Adapters));
+    Adapters[0].num = 0;
+    Adapters[0].opengl = FALSE;
+    Adapters[0].monitorPoint.x = -1;
+    Adapters[0].monitorPoint.y = -1;
+
+    Adapters[0].driver = "Display";
+    Adapters[0].description = "WineD3D DirectDraw Emulation";
+    if(wined3d_settings.emulated_textureram) {
+        Adapters[0].TextureRam = wined3d_settings.emulated_textureram;
+    } else {
+        Adapters[0].TextureRam = 8 * 1024 * 1024; /* This is plenty for a DDraw-only card */
+    }
+
+    numAdapters = 1;
+    return FALSE;
+}
+#undef PUSH1
+#undef GLINFO_LOCATION
+
+/**********************************************************
+ * IWineD3D VTbl follows
+ **********************************************************/
+
+const IWineD3DVtbl IWineD3D_Vtbl =
+{
+    /* IUnknown */
+    IWineD3DImpl_QueryInterface,
+    IWineD3DImpl_AddRef,
+    IWineD3DImpl_Release,
+    /* IWineD3D */
+    IWineD3DImpl_GetParent,
+    IWineD3DImpl_GetAdapterCount,
+    IWineD3DImpl_RegisterSoftwareDevice,
+    IWineD3DImpl_GetAdapterMonitor,
+    IWineD3DImpl_GetAdapterModeCount,
+    IWineD3DImpl_EnumAdapterModes,
+    IWineD3DImpl_GetAdapterDisplayMode,
+    IWineD3DImpl_GetAdapterIdentifier,
+    IWineD3DImpl_CheckDeviceMultiSampleType,
+    IWineD3DImpl_CheckDepthStencilMatch,
+    IWineD3DImpl_CheckDeviceType,
+    IWineD3DImpl_CheckDeviceFormat,
+    IWineD3DImpl_CheckDeviceFormatConversion,
+    IWineD3DImpl_GetDeviceCaps,
+    IWineD3DImpl_CreateDevice
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/drawprim.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/drawprim.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/drawprim.c	(revision 16410)
@@ -0,0 +1,1363 @@
+/*
+ * WINED3D draw functions
+ *
+ * Copyright 2002-2004 Jason Edmeades
+ * Copyright 2002-2004 Raphael Junqueira
+ * Copyright 2004 Christian Costa
+ * Copyright 2005 Oliver Stieber
+ * Copyright 2006, 2008 Henri Verbeet
+ * Copyright 2007-2008 Stefan Dösinger for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d_draw);
+#define GLINFO_LOCATION This->adapter->gl_info
+
+#include <stdio.h>
+#include <math.h>
+
+/* Issues the glBegin call for gl given the primitive type and count */
+static DWORD primitiveToGl(WINED3DPRIMITIVETYPE PrimitiveType,
+                    DWORD            NumPrimitives,
+                    GLenum          *primType)
+{
+    DWORD   NumVertexes = NumPrimitives;
+
+    switch (PrimitiveType) {
+    case WINED3DPT_POINTLIST:
+        TRACE("POINTS\n");
+        *primType   = GL_POINTS;
+        NumVertexes = NumPrimitives;
+        break;
+
+    case WINED3DPT_LINELIST:
+        TRACE("LINES\n");
+        *primType   = GL_LINES;
+        NumVertexes = NumPrimitives * 2;
+        break;
+
+    case WINED3DPT_LINESTRIP:
+        TRACE("LINE_STRIP\n");
+        *primType   = GL_LINE_STRIP;
+        NumVertexes = NumPrimitives + 1;
+        break;
+
+    case WINED3DPT_TRIANGLELIST:
+        TRACE("TRIANGLES\n");
+        *primType   = GL_TRIANGLES;
+        NumVertexes = NumPrimitives * 3;
+        break;
+
+    case WINED3DPT_TRIANGLESTRIP:
+        TRACE("TRIANGLE_STRIP\n");
+        *primType   = GL_TRIANGLE_STRIP;
+        NumVertexes = NumPrimitives + 2;
+        break;
+
+    case WINED3DPT_TRIANGLEFAN:
+        TRACE("TRIANGLE_FAN\n");
+        *primType   = GL_TRIANGLE_FAN;
+        NumVertexes = NumPrimitives + 2;
+        break;
+
+    default:
+        FIXME("Unhandled primitive\n");
+        *primType    = GL_POINTS;
+        break;
+    }
+    return NumVertexes;
+}
+
+static BOOL fixed_get_input(
+    BYTE usage, BYTE usage_idx,
+    unsigned int* regnum) {
+
+    *regnum = -1;
+
+    /* Those positions must have the order in the
+     * named part of the strided data */
+
+    if ((usage == WINED3DDECLUSAGE_POSITION || usage == WINED3DDECLUSAGE_POSITIONT) && usage_idx == 0)
+        *regnum = 0;
+    else if (usage == WINED3DDECLUSAGE_BLENDWEIGHT && usage_idx == 0)
+        *regnum = 1;
+    else if (usage == WINED3DDECLUSAGE_BLENDINDICES && usage_idx == 0)
+        *regnum = 2;
+    else if (usage == WINED3DDECLUSAGE_NORMAL && usage_idx == 0)
+        *regnum = 3;
+    else if (usage == WINED3DDECLUSAGE_PSIZE && usage_idx == 0)
+        *regnum = 4;
+    else if (usage == WINED3DDECLUSAGE_COLOR && usage_idx == 0)
+        *regnum = 5;
+    else if (usage == WINED3DDECLUSAGE_COLOR && usage_idx == 1)
+        *regnum = 6;
+    else if (usage == WINED3DDECLUSAGE_TEXCOORD && usage_idx < WINED3DDP_MAXTEXCOORD)
+        *regnum = 7 + usage_idx;
+    else if ((usage == WINED3DDECLUSAGE_POSITION || usage == WINED3DDECLUSAGE_POSITIONT) && usage_idx == 1)
+        *regnum = 7 + WINED3DDP_MAXTEXCOORD;
+    else if (usage == WINED3DDECLUSAGE_NORMAL && usage_idx == 1)
+        *regnum = 8 + WINED3DDP_MAXTEXCOORD;
+    else if (usage == WINED3DDECLUSAGE_TANGENT && usage_idx == 0)
+        *regnum = 9 + WINED3DDP_MAXTEXCOORD;
+    else if (usage == WINED3DDECLUSAGE_BINORMAL && usage_idx == 0)
+        *regnum = 10 + WINED3DDP_MAXTEXCOORD;
+    else if (usage == WINED3DDECLUSAGE_TESSFACTOR && usage_idx == 0)
+        *regnum = 11 + WINED3DDP_MAXTEXCOORD;
+    else if (usage == WINED3DDECLUSAGE_FOG && usage_idx == 0)
+        *regnum = 12 + WINED3DDP_MAXTEXCOORD;
+    else if (usage == WINED3DDECLUSAGE_DEPTH && usage_idx == 0)
+        *regnum = 13 + WINED3DDP_MAXTEXCOORD;
+    else if (usage == WINED3DDECLUSAGE_SAMPLE && usage_idx == 0)
+        *regnum = 14 + WINED3DDP_MAXTEXCOORD;
+
+    if (*regnum == -1) {
+        FIXME("Unsupported input stream [usage=%s, usage_idx=%u]\n",
+            debug_d3ddeclusage(usage), usage_idx);
+        return FALSE;
+    }
+    return TRUE;
+}
+
+void primitiveDeclarationConvertToStridedData(
+     IWineD3DDevice *iface,
+     BOOL useVertexShaderFunction,
+     WineDirect3DVertexStridedData *strided,
+     BOOL *fixup) {
+
+     /* We need to deal with frequency data!*/
+
+    const BYTE *data = NULL;
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    IWineD3DVertexDeclarationImpl* vertexDeclaration = (IWineD3DVertexDeclarationImpl *)This->stateBlock->vertexDecl;
+    unsigned int i;
+    const WINED3DVERTEXELEMENT *element;
+    DWORD stride;
+    DWORD numPreloadStreams = This->stateBlock->streamIsUP ? 0 : vertexDeclaration->num_streams;
+    const DWORD *streams = vertexDeclaration->streams;
+
+    /* Check for transformed vertices, disable vertex shader if present */
+    strided->u.s.position_transformed = vertexDeclaration->position_transformed;
+    if(vertexDeclaration->position_transformed) {
+        useVertexShaderFunction = FALSE;
+    }
+
+    /* Translate the declaration into strided data */
+    for (i = 0 ; i < vertexDeclaration->declarationWNumElements - 1; ++i) {
+        GLint streamVBO = 0;
+        BOOL stride_used;
+        unsigned int idx;
+
+        element = vertexDeclaration->pDeclarationWine + i;
+        TRACE("%p Element %p (%u of %u)\n", vertexDeclaration->pDeclarationWine,
+            element,  i + 1, vertexDeclaration->declarationWNumElements - 1);
+
+        if (This->stateBlock->streamSource[element->Stream] == NULL)
+            continue;
+
+        stride  = This->stateBlock->streamStride[element->Stream];
+        if (This->stateBlock->streamIsUP) {
+            TRACE("Stream is up %d, %p\n", element->Stream, This->stateBlock->streamSource[element->Stream]);
+            streamVBO = 0;
+            data    = (BYTE *)This->stateBlock->streamSource[element->Stream];
+        } else {
+            TRACE("Stream isn't up %d, %p\n", element->Stream, This->stateBlock->streamSource[element->Stream]);
+            data    = IWineD3DVertexBufferImpl_GetMemory(This->stateBlock->streamSource[element->Stream], 0, &streamVBO);
+
+            /* Can't use vbo's if the base vertex index is negative. OpenGL doesn't accept negative offsets
+             * (or rather offsets bigger than the vbo, because the pointer is unsigned), so use system memory
+             * sources. In most sane cases the pointer - offset will still be > 0, otherwise it will wrap
+             * around to some big value. Hope that with the indices, the driver wraps it back internally. If
+             * not, drawStridedSlow is needed, including a vertex buffer path.
+             */
+            if(This->stateBlock->loadBaseVertexIndex < 0) {
+                WARN("loadBaseVertexIndex is < 0 (%d), not using vbos\n", This->stateBlock->loadBaseVertexIndex);
+                streamVBO = 0;
+                data = ((IWineD3DVertexBufferImpl *) This->stateBlock->streamSource[element->Stream])->resource.allocatedMemory;
+                if((UINT_PTR)data < -This->stateBlock->loadBaseVertexIndex * stride) {
+                    FIXME("System memory vertex data load offset is negative!\n");
+                }
+            }
+
+            if(fixup) {
+                if( streamVBO != 0) *fixup = TRUE;
+                else if(*fixup && !useVertexShaderFunction &&
+                       (element->Usage == WINED3DDECLUSAGE_COLOR ||
+                        element->Usage == WINED3DDECLUSAGE_POSITIONT)) {
+                    static BOOL warned = FALSE;
+                    if(!warned) {
+			/* This may be bad with the fixed function pipeline */
+			FIXME("Missing vbo streams with unfixed colors or transformed position, expect problems\n");
+                        warned = TRUE;
+                    }
+                }
+            }
+        }
+        data += element->Offset;
+
+        TRACE("Offset %d Stream %d UsageIndex %d\n", element->Offset, element->Stream, element->UsageIndex);
+
+        if (useVertexShaderFunction)
+            stride_used = vshader_get_input(This->stateBlock->vertexShader,
+                element->Usage, element->UsageIndex, &idx);
+        else
+            stride_used = fixed_get_input(element->Usage, element->UsageIndex, &idx);
+
+        if (stride_used) {
+            TRACE("Load %s array %u [usage=%s, usage_idx=%u, "
+                    "stream=%u, offset=%u, stride=%u, type=%s, VBO=%u]\n",
+                    useVertexShaderFunction? "shader": "fixed function", idx,
+                    debug_d3ddeclusage(element->Usage), element->UsageIndex,
+                    element->Stream, element->Offset, stride, debug_d3ddecltype(element->Type), streamVBO);
+
+            if (!useVertexShaderFunction && !vertexDeclaration->ffp_valid[i]) {
+                WARN("Skipping unsupported fixed function element of type %s and usage %s\n",
+                    debug_d3ddecltype(element->Type), debug_d3ddeclusage(element->Usage));
+            } else {
+                strided->u.input[idx].lpData = data;
+                strided->u.input[idx].dwType = element->Type;
+                strided->u.input[idx].dwStride = stride;
+                strided->u.input[idx].VBO = streamVBO;
+                strided->u.input[idx].streamNo = element->Stream;
+            }
+        }
+    }
+    /* Now call PreLoad on all the vertex buffers. In the very rare case
+     * that the buffers stopps converting PreLoad will dirtify the VDECL again.
+     * The vertex buffer can now use the strided structure in the device instead of finding its
+     * own again.
+     *
+     * NULL streams won't be recorded in the array, UP streams won't be either. A stream is only
+     * once in there.
+     */
+    for(i=0; i < numPreloadStreams; i++) {
+        IWineD3DVertexBuffer *vb = This->stateBlock->streamSource[streams[i]];
+        if(vb) {
+            IWineD3DVertexBuffer_PreLoad(vb);
+        }
+    }
+}
+
+static void drawStridedFast(IWineD3DDevice *iface,UINT numberOfVertices, GLenum glPrimitiveType,
+                     const void *idxData, short idxSize, ULONG minIndex, ULONG startIdx, ULONG startVertex) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+
+    if (idxSize != 0 /* This crashes sometimes!*/) {
+        TRACE("(%p) : glElements(%x, %d, %d, ...)\n", This, glPrimitiveType, numberOfVertices, minIndex);
+        idxData = idxData == (void *)-1 ? NULL : idxData;
+#if 1
+        glDrawElements(glPrimitiveType, numberOfVertices, idxSize == 2 ? GL_UNSIGNED_SHORT : GL_UNSIGNED_INT,
+                     (const char *)idxData+(idxSize * startIdx));
+        checkGLcall("glDrawElements");
+#else /* using drawRangeElements may be faster */
+
+        glDrawRangeElements(glPrimitiveType, minIndex, minIndex + numberOfVertices - 1, numberOfVertices,
+                      idxSize == 2 ? GL_UNSIGNED_SHORT : GL_UNSIGNED_INT,
+                      (const char *)idxData+(idxSize * startIdx));
+        checkGLcall("glDrawRangeElements");
+#endif
+
+    } else {
+        TRACE("(%p) : glDrawArrays(%#x, %d, %d)\n", This, glPrimitiveType, startVertex, numberOfVertices);
+        glDrawArrays(glPrimitiveType, startVertex, numberOfVertices);
+        checkGLcall("glDrawArrays");
+    }
+
+    return;
+}
+
+/*
+ * Actually draw using the supplied information.
+ * Slower GL version which extracts info about each vertex in turn
+ */
+
+static void drawStridedSlow(IWineD3DDevice *iface, const WineDirect3DVertexStridedData *sd, UINT NumVertexes,
+        GLenum glPrimType, const void *idxData, short idxSize, ULONG minIndex, ULONG startIdx, ULONG startVertex)
+{
+    unsigned int               textureNo    = 0;
+    const WORD                *pIdxBufS     = NULL;
+    const DWORD               *pIdxBufL     = NULL;
+    ULONG                      vx_index;
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    const UINT *streamOffset = This->stateBlock->streamOffset;
+    long                      SkipnStrides = startVertex + This->stateBlock->loadBaseVertexIndex;
+    BOOL                      pixelShader = use_ps(This);
+    BOOL specular_fog = FALSE;
+    UINT texture_stages = GL_LIMITS(texture_stages);
+    const BYTE *texCoords[WINED3DDP_MAXTEXCOORD];
+    const BYTE *diffuse = NULL, *specular = NULL, *normal = NULL, *position = NULL;
+    DWORD tex_mask = 0;
+
+    TRACE("Using slow vertex array code\n");
+
+    /* Variable Initialization */
+    if (idxSize != 0) {
+        /* Immediate mode drawing can't make use of indices in a vbo - get the data from the index buffer.
+         * If the index buffer has no vbo(not supported or other reason), or with user pointer drawing
+         * idxData will be != NULL
+         */
+        if(idxData == NULL) {
+            idxData = ((IWineD3DIndexBufferImpl *) This->stateBlock->pIndexData)->resource.allocatedMemory;
+        }
+
+        if (idxSize == 2) pIdxBufS = (const WORD *) idxData;
+        else pIdxBufL = (const DWORD *) idxData;
+    } else if (idxData) {
+        ERR("non-NULL idxData with 0 idxSize, this should never happen\n");
+        return;
+    }
+
+    /* Start drawing in GL */
+    VTRACE(("glBegin(%x)\n", glPrimType));
+    glBegin(glPrimType);
+
+    if (sd->u.s.position.lpData) position = sd->u.s.position.lpData + streamOffset[sd->u.s.position.streamNo];
+
+    if (sd->u.s.normal.lpData) normal = sd->u.s.normal.lpData + streamOffset[sd->u.s.normal.streamNo];
+    else glNormal3f(0, 0, 0);
+
+    if (sd->u.s.diffuse.lpData) diffuse = sd->u.s.diffuse.lpData + streamOffset[sd->u.s.diffuse.streamNo];
+    else glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
+    if (This->activeContext->num_untracked_materials && sd->u.s.diffuse.dwType != WINED3DDECLTYPE_D3DCOLOR)
+        FIXME("Implement diffuse color tracking from %s\n", debug_d3ddecltype(sd->u.s.diffuse.dwType));
+
+    if (sd->u.s.specular.lpData)
+    {
+        specular = sd->u.s.specular.lpData + streamOffset[sd->u.s.specular.streamNo];
+
+        /* special case where the fog density is stored in the specular alpha channel */
+        if (This->stateBlock->renderState[WINED3DRS_FOGENABLE]
+                && (This->stateBlock->renderState[WINED3DRS_FOGVERTEXMODE] == WINED3DFOG_NONE
+                    || sd->u.s.position.dwType == WINED3DDECLTYPE_FLOAT4)
+                && This->stateBlock->renderState[WINED3DRS_FOGTABLEMODE] == WINED3DFOG_NONE)
+        {
+            if (GL_SUPPORT(EXT_FOG_COORD))
+            {
+                if (sd->u.s.specular.dwType == WINED3DDECLTYPE_D3DCOLOR) specular_fog = TRUE;
+                else FIXME("Implement fog coordinates from %s\n", debug_d3ddecltype(sd->u.s.specular.dwType));
+            }
+            else
+            {
+                static BOOL warned;
+
+                if (!warned)
+                {
+                    /* TODO: Use the fog table code from old ddraw */
+                    FIXME("Implement fog for transformed vertices in software\n");
+                    warned = TRUE;
+                }
+            }
+        }
+    }
+    else if (GL_SUPPORT(EXT_SECONDARY_COLOR))
+    {
+        GL_EXTCALL(glSecondaryColor3fEXT)(0, 0, 0);
+    }
+
+    for (textureNo = 0; textureNo < texture_stages; ++textureNo)
+    {
+        int coordIdx = This->stateBlock->textureState[textureNo][WINED3DTSS_TEXCOORDINDEX];
+        int texture_idx = This->texUnitMap[textureNo];
+
+        if (!GL_SUPPORT(ARB_MULTITEXTURE) && textureNo > 0)
+        {
+            FIXME("Program using multiple concurrent textures which this opengl implementation doesn't support\n");
+            continue;
+        }
+
+        if (!pixelShader && !This->stateBlock->textures[textureNo]) continue;
+
+        if (texture_idx == -1) continue;
+
+        if (coordIdx > 7)
+        {
+            TRACE("tex: %d - Skip tex coords, as being system generated\n", textureNo);
+            continue;
+        }
+        else if (coordIdx < 0)
+        {
+            FIXME("tex: %d - Coord index %d is less than zero, expect a crash.\n", textureNo, coordIdx);
+            continue;
+        }
+
+        if(sd->u.s.texCoords[textureNo].lpData)
+        {
+            texCoords[textureNo] =
+                    sd->u.s.texCoords[textureNo].lpData + streamOffset[sd->u.s.texCoords[textureNo].streamNo];
+            tex_mask |= (1 << textureNo);
+        }
+        else
+        {
+            TRACE("tex: %d - Skipping tex coords, as no data supplied\n", textureNo);
+            if (GL_SUPPORT(ARB_MULTITEXTURE))
+                GL_EXTCALL(glMultiTexCoord4fARB(GL_TEXTURE0_ARB + texture_idx, 0, 0, 0, 1));
+            else
+                glTexCoord4f(0, 0, 0, 1);
+        }
+    }
+
+    /* We shouldn't start this function if any VBO is involved. Should I put a safety check here?
+     * Guess it's not necessary(we crash then anyway) and would only eat CPU time
+     */
+
+    /* For each primitive */
+    for (vx_index = 0; vx_index < NumVertexes; ++vx_index) {
+        UINT texture, tmp_tex_mask;
+        /* Blending data and Point sizes are not supported by this function. They are not supported by the fixed
+         * function pipeline at all. A Fixme for them is printed after decoding the vertex declaration
+         */
+
+        /* For indexed data, we need to go a few more strides in */
+        if (idxData != NULL) {
+
+            /* Indexed so work out the number of strides to skip */
+            if (idxSize == 2) {
+                VTRACE(("Idx for vertex %u = %u\n", vx_index, pIdxBufS[startIdx+vx_index]));
+                SkipnStrides = pIdxBufS[startIdx + vx_index] + This->stateBlock->loadBaseVertexIndex;
+            } else {
+                VTRACE(("Idx for vertex %u = %u\n", vx_index, pIdxBufL[startIdx+vx_index]));
+                SkipnStrides = pIdxBufL[startIdx + vx_index] + This->stateBlock->loadBaseVertexIndex;
+            }
+        }
+
+        tmp_tex_mask = tex_mask;
+        for (texture = 0; tmp_tex_mask; tmp_tex_mask >>= 1, ++texture)
+        {
+            int coord_idx;
+            const void *ptr;
+
+            if (!(tmp_tex_mask & 1)) continue;
+
+            coord_idx = This->stateBlock->textureState[texture][WINED3DTSS_TEXCOORDINDEX];
+            ptr = texCoords[coord_idx] + (SkipnStrides * sd->u.s.texCoords[coord_idx].dwStride);
+
+            if (GL_SUPPORT(ARB_MULTITEXTURE))
+            {
+                int texture_idx = This->texUnitMap[texture];
+                multi_texcoord_funcs[sd->u.s.texCoords[coord_idx].dwType](GL_TEXTURE0_ARB + texture_idx, ptr);
+            }
+            else
+            {
+                texcoord_funcs[sd->u.s.texCoords[coord_idx].dwType](ptr);
+            }
+        }
+
+        /* Diffuse -------------------------------- */
+        if (diffuse) {
+            const void *ptrToCoords = diffuse + SkipnStrides * sd->u.s.diffuse.dwStride;
+
+            diffuse_funcs[sd->u.s.diffuse.dwType](ptrToCoords);
+            if(This->activeContext->num_untracked_materials) {
+                DWORD diffuseColor = ((const DWORD *)ptrToCoords)[0];
+                unsigned char i;
+                float color[4];
+
+                color[0] = D3DCOLOR_B_R(diffuseColor) / 255.0;
+                color[1] = D3DCOLOR_B_G(diffuseColor) / 255.0;
+                color[2] = D3DCOLOR_B_B(diffuseColor) / 255.0;
+                color[3] = D3DCOLOR_B_A(diffuseColor) / 255.0;
+
+                for(i = 0; i < This->activeContext->num_untracked_materials; i++) {
+                    glMaterialfv(GL_FRONT_AND_BACK, This->activeContext->untracked_materials[i], color);
+                }
+            }
+        }
+
+        /* Specular ------------------------------- */
+        if (specular) {
+            const void *ptrToCoords = specular + SkipnStrides * sd->u.s.specular.dwStride;
+
+            specular_funcs[sd->u.s.specular.dwType](ptrToCoords);
+
+            if (specular_fog)
+            {
+                DWORD specularColor = *(const DWORD *)ptrToCoords;
+                GL_EXTCALL(glFogCoordfEXT(specularColor >> 24));
+            }
+        }
+
+        /* Normal -------------------------------- */
+        if (normal != NULL) {
+            const void *ptrToCoords = normal + SkipnStrides * sd->u.s.normal.dwStride;
+            normal_funcs[sd->u.s.normal.dwType](ptrToCoords);
+        }
+
+        /* Position -------------------------------- */
+        if (position) {
+            const void *ptrToCoords = position + SkipnStrides * sd->u.s.position.dwStride;
+            position_funcs[sd->u.s.position.dwType](ptrToCoords);
+        }
+
+        /* For non indexed mode, step onto next parts */
+        if (idxData == NULL) {
+            ++SkipnStrides;
+        }
+    }
+
+    glEnd();
+    checkGLcall("glEnd and previous calls");
+}
+
+static inline void send_attribute(IWineD3DDeviceImpl *This, const DWORD type, const UINT index, const void *ptr) {
+    switch(type) {
+        case WINED3DDECLTYPE_FLOAT1:
+            GL_EXTCALL(glVertexAttrib1fvARB(index, (const float *)ptr));
+            break;
+        case WINED3DDECLTYPE_FLOAT2:
+            GL_EXTCALL(glVertexAttrib2fvARB(index, (const float *)ptr));
+            break;
+        case WINED3DDECLTYPE_FLOAT3:
+            GL_EXTCALL(glVertexAttrib3fvARB(index, (const float *)ptr));
+            break;
+        case WINED3DDECLTYPE_FLOAT4:
+            GL_EXTCALL(glVertexAttrib4fvARB(index, (const float *)ptr));
+            break;
+
+        case WINED3DDECLTYPE_UBYTE4:
+            GL_EXTCALL(glVertexAttrib4ubvARB(index, ptr));
+            break;
+        case WINED3DDECLTYPE_UBYTE4N:
+        case WINED3DDECLTYPE_D3DCOLOR:
+            GL_EXTCALL(glVertexAttrib4NubvARB(index, ptr));
+            break;
+
+        case WINED3DDECLTYPE_SHORT2:
+            GL_EXTCALL(glVertexAttrib4svARB(index, (const GLshort *)ptr));
+            break;
+        case WINED3DDECLTYPE_SHORT4:
+            GL_EXTCALL(glVertexAttrib4svARB(index, (const GLshort *)ptr));
+            break;
+
+        case WINED3DDECLTYPE_SHORT2N:
+        {
+            GLshort s[4] = {((const GLshort *)ptr)[0], ((const GLshort *)ptr)[1], 0, 1};
+            GL_EXTCALL(glVertexAttrib4NsvARB(index, s));
+            break;
+        }
+        case WINED3DDECLTYPE_USHORT2N:
+        {
+            GLushort s[4] = {((const GLushort *)ptr)[0], ((const GLushort *)ptr)[1], 0, 1};
+            GL_EXTCALL(glVertexAttrib4NusvARB(index, s));
+            break;
+        }
+        case WINED3DDECLTYPE_SHORT4N:
+            GL_EXTCALL(glVertexAttrib4NsvARB(index, (const GLshort *)ptr));
+            break;
+        case WINED3DDECLTYPE_USHORT4N:
+            GL_EXTCALL(glVertexAttrib4NusvARB(index, (const GLushort *)ptr));
+            break;
+
+        case WINED3DDECLTYPE_UDEC3:
+            FIXME("Unsure about WINED3DDECLTYPE_UDEC3\n");
+            /*glVertexAttrib3usvARB(instancedData[j], (GLushort *) ptr); Does not exist */
+            break;
+        case WINED3DDECLTYPE_DEC3N:
+            FIXME("Unsure about WINED3DDECLTYPE_DEC3N\n");
+            /*glVertexAttrib3NusvARB(instancedData[j], (GLushort *) ptr); Does not exist */
+            break;
+
+        case WINED3DDECLTYPE_FLOAT16_2:
+            /* Are those 16 bit floats. C doesn't have a 16 bit float type. I could read the single bits and calculate a 4
+             * byte float according to the IEEE standard
+             */
+            if (GL_SUPPORT(NV_HALF_FLOAT)) {
+                GL_EXTCALL(glVertexAttrib2hvNV(index, (const GLhalfNV *)ptr));
+            } else {
+                float x = float_16_to_32(((const unsigned short *)ptr) + 0);
+                float y = float_16_to_32(((const unsigned short *)ptr) + 1);
+                GL_EXTCALL(glVertexAttrib2fARB(index, x, y));
+            }
+            break;
+        case WINED3DDECLTYPE_FLOAT16_4:
+            if (GL_SUPPORT(NV_HALF_FLOAT)) {
+                GL_EXTCALL(glVertexAttrib4hvNV(index, (const GLhalfNV *)ptr));
+            } else {
+                float x = float_16_to_32(((const unsigned short *)ptr) + 0);
+                float y = float_16_to_32(((const unsigned short *)ptr) + 1);
+                float z = float_16_to_32(((const unsigned short *)ptr) + 2);
+                float w = float_16_to_32(((const unsigned short *)ptr) + 3);
+                GL_EXTCALL(glVertexAttrib4fARB(index, x, y, z, w));
+            }
+            break;
+
+        case WINED3DDECLTYPE_UNUSED:
+        default:
+            ERR("Unexpected attribute declaration: %d\n", type);
+            break;
+    }
+}
+
+static void drawStridedSlowVs(IWineD3DDevice *iface, const WineDirect3DVertexStridedData *sd, UINT numberOfVertices,
+        GLenum glPrimitiveType, const void *idxData, short idxSize, ULONG minIndex, ULONG startIdx, ULONG startVertex)
+{
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    long                      SkipnStrides = startVertex + This->stateBlock->loadBaseVertexIndex;
+    const WORD                *pIdxBufS     = NULL;
+    const DWORD               *pIdxBufL     = NULL;
+    ULONG                      vx_index;
+    int i;
+    IWineD3DStateBlockImpl *stateblock = This->stateBlock;
+    const BYTE *ptr;
+
+    if (idxSize != 0) {
+        /* Immediate mode drawing can't make use of indices in a vbo - get the data from the index buffer.
+         * If the index buffer has no vbo(not supported or other reason), or with user pointer drawing
+         * idxData will be != NULL
+         */
+        if(idxData == NULL) {
+            idxData = ((IWineD3DIndexBufferImpl *) stateblock->pIndexData)->resource.allocatedMemory;
+        }
+
+        if (idxSize == 2) pIdxBufS = (const WORD *) idxData;
+        else pIdxBufL = (const DWORD *) idxData;
+    } else if (idxData) {
+        ERR("non-NULL idxData with 0 idxSize, this should never happen\n");
+        return;
+    }
+
+    /* Start drawing in GL */
+    VTRACE(("glBegin(%x)\n", glPrimitiveType));
+    glBegin(glPrimitiveType);
+
+    for (vx_index = 0; vx_index < numberOfVertices; ++vx_index) {
+        if (idxData != NULL) {
+
+            /* Indexed so work out the number of strides to skip */
+            if (idxSize == 2) {
+                VTRACE(("Idx for vertex %d = %d\n", vx_index, pIdxBufS[startIdx+vx_index]));
+                SkipnStrides = pIdxBufS[startIdx + vx_index] + stateblock->loadBaseVertexIndex;
+            } else {
+                VTRACE(("Idx for vertex %d = %d\n", vx_index, pIdxBufL[startIdx+vx_index]));
+                SkipnStrides = pIdxBufL[startIdx + vx_index] + stateblock->loadBaseVertexIndex;
+            }
+        }
+
+        for(i = MAX_ATTRIBS - 1; i >= 0; i--) {
+            if(!sd->u.input[i].lpData) continue;
+
+            ptr = sd->u.input[i].lpData +
+                  sd->u.input[i].dwStride * SkipnStrides +
+                  stateblock->streamOffset[sd->u.input[i].streamNo];
+
+            send_attribute(This, sd->u.input[i].dwType, i, ptr);
+        }
+        SkipnStrides++;
+    }
+
+    glEnd();
+}
+
+static inline void drawStridedInstanced(IWineD3DDevice *iface, const WineDirect3DVertexStridedData *sd,
+        UINT numberOfVertices, GLenum glPrimitiveType, const void *idxData, short idxSize, ULONG minIndex,
+        ULONG startIdx, ULONG startVertex)
+{
+    UINT numInstances = 0, i;
+    int numInstancedAttribs = 0, j;
+    UINT instancedData[sizeof(sd->u.input) / sizeof(sd->u.input[0]) /* 16 */];
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
+    IWineD3DStateBlockImpl *stateblock = This->stateBlock;
+
+    if (idxSize == 0) {
+        /* This is a nasty thing. MSDN says no hardware supports that and apps have to use software vertex processing.
+         * We don't support this for now
+         *
+         * Shouldn't be too hard to support with opengl, in theory just call glDrawArrays instead of drawElements.
+         * But the StreamSourceFreq value has a different meaning in that situation.
+         */
+        FIXME("Non-indexed instanced drawing is not supported\n");
+        return;
+    }
+
+    TRACE("(%p) : glElements(%x, %d, %d, ...)\n", This, glPrimitiveType, numberOfVertices, minIndex);
+    idxData = idxData == (void *)-1 ? NULL : idxData;
+
+    /* First, figure out how many instances we have to draw */
+    for(i = 0; i < MAX_STREAMS; i++) {
+        /* Look at the streams and take the first one which matches */
+        if(((stateblock->streamFlags[i] & WINED3DSTREAMSOURCE_INSTANCEDATA) || (stateblock->streamFlags[i] & WINED3DSTREAMSOURCE_INDEXEDDATA)) && stateblock->streamSource[i]) {
+            /* D3D9 could set streamFreq 0 with (INSTANCEDATA or INDEXEDDATA) and then it is handled as 1. See d3d9/tests/visual.c-> stream_test() */
+            if(stateblock->streamFreq[i] == 0){
+                numInstances = 1;
+            } else {
+                numInstances = stateblock->streamFreq[i]; /* use the specified number of instances from the first matched stream. See d3d9/tests/visual.c-> stream_test() */
+            }
+            break; /* break, because only the first suitable value is interesting */
+        }
+    }
+
+    for(i = 0; i < sizeof(sd->u.input) / sizeof(sd->u.input[0]); i++) {
+        if(stateblock->streamFlags[sd->u.input[i].streamNo] & WINED3DSTREAMSOURCE_INSTANCEDATA) {
+            instancedData[numInstancedAttribs] = i;
+            numInstancedAttribs++;
+        }
+    }
+
+    /* now draw numInstances instances :-) */
+    for(i = 0; i < numInstances; i++) {
+        /* Specify the instanced attributes using immediate mode calls */
+        for(j = 0; j < numInstancedAttribs; j++) {
+            const BYTE *ptr = sd->u.input[instancedData[j]].lpData +
+                        sd->u.input[instancedData[j]].dwStride * i +
+                        stateblock->streamOffset[sd->u.input[instancedData[j]].streamNo];
+            if(sd->u.input[instancedData[j]].VBO) {
+                IWineD3DVertexBufferImpl *vb = (IWineD3DVertexBufferImpl *) stateblock->streamSource[sd->u.input[instancedData[j]].streamNo];
+                ptr += (long) vb->resource.allocatedMemory;
+            }
+
+            send_attribute(This, sd->u.input[instancedData[j]].dwType, instancedData[j], ptr);
+        }
+
+        glDrawElements(glPrimitiveType, numberOfVertices, idxSize == 2 ? GL_UNSIGNED_SHORT : GL_UNSIGNED_INT,
+                    (const char *)idxData+(idxSize * startIdx));
+        checkGLcall("glDrawElements");
+    }
+}
+
+static inline void remove_vbos(IWineD3DDeviceImpl *This, WineDirect3DVertexStridedData *s) {
+    unsigned char i;
+    IWineD3DVertexBufferImpl *vb;
+
+    if(s->u.s.position.VBO) {
+        vb = (IWineD3DVertexBufferImpl *) This->stateBlock->streamSource[s->u.s.position.streamNo];
+        s->u.s.position.VBO = 0;
+        s->u.s.position.lpData = (BYTE *) ((unsigned long) s->u.s.position.lpData + (unsigned long) vb->resource.allocatedMemory);
+    }
+    if(s->u.s.blendWeights.VBO) {
+        vb = (IWineD3DVertexBufferImpl *) This->stateBlock->streamSource[s->u.s.blendWeights.streamNo];
+        s->u.s.blendWeights.VBO = 0;
+        s->u.s.blendWeights.lpData = (BYTE *) ((unsigned long) s->u.s.blendWeights.lpData + (unsigned long) vb->resource.allocatedMemory);
+    }
+    if(s->u.s.blendMatrixIndices.VBO) {
+        vb = (IWineD3DVertexBufferImpl *) This->stateBlock->streamSource[s->u.s.blendMatrixIndices.streamNo];
+        s->u.s.blendMatrixIndices.VBO = 0;
+        s->u.s.blendMatrixIndices.lpData = (BYTE *) ((unsigned long) s->u.s.blendMatrixIndices.lpData + (unsigned long) vb->resource.allocatedMemory);
+    }
+    if(s->u.s.normal.VBO) {
+        vb = (IWineD3DVertexBufferImpl *) This->stateBlock->streamSource[s->u.s.normal.streamNo];
+        s->u.s.normal.VBO = 0;
+        s->u.s.normal.lpData = (BYTE *) ((unsigned long) s->u.s.normal.lpData + (unsigned long) vb->resource.allocatedMemory);
+    }
+    if(s->u.s.pSize.VBO) {
+        vb = (IWineD3DVertexBufferImpl *) This->stateBlock->streamSource[s->u.s.pSize.streamNo];
+        s->u.s.pSize.VBO = 0;
+        s->u.s.pSize.lpData = (BYTE *) ((unsigned long) s->u.s.pSize.lpData + (unsigned long) vb->resource.allocatedMemory);
+    }
+    if(s->u.s.diffuse.VBO) {
+        vb = (IWineD3DVertexBufferImpl *) This->stateBlock->streamSource[s->u.s.diffuse.streamNo];
+        s->u.s.diffuse.VBO = 0;
+        s->u.s.diffuse.lpData = (BYTE *) ((unsigned long) s->u.s.diffuse.lpData + (unsigned long) vb->resource.allocatedMemory);
+    }
+    if(s->u.s.specular.VBO) {
+        vb = (IWineD3DVertexBufferImpl *) This->stateBlock->streamSource[s->u.s.specular.streamNo];
+        s->u.s.specular.VBO = 0;
+        s->u.s.specular.lpData = (BYTE *) ((unsigned long) s->u.s.specular.lpData + (unsigned long) vb->resource.allocatedMemory);
+    }
+    for(i = 0; i < WINED3DDP_MAXTEXCOORD; i++) {
+        if(s->u.s.texCoords[i].VBO) {
+            vb = (IWineD3DVertexBufferImpl *) This->stateBlock->streamSource[s->u.s.texCoords[i].streamNo];
+            s->u.s.texCoords[i].VBO = 0;
+            s->u.s.texCoords[i].lpData = (BYTE *) ((unsigned long) s->u.s.texCoords[i].lpData + (unsigned long) vb->resource.allocatedMemory);
+        }
+    }
+    if(s->u.s.position2.VBO) {
+        vb = (IWineD3DVertexBufferImpl *) This->stateBlock->streamSource[s->u.s.position2.streamNo];
+        s->u.s.position2.VBO = 0;
+        s->u.s.position2.lpData = (BYTE *) ((unsigned long) s->u.s.position2.lpData + (unsigned long) vb->resource.allocatedMemory);
+    }
+    if(s->u.s.normal2.VBO) {
+        vb = (IWineD3DVertexBufferImpl *) This->stateBlock->streamSource[s->u.s.normal2.streamNo];
+        s->u.s.normal2.VBO = 0;
+        s->u.s.normal2.lpData = (BYTE *) ((unsigned long) s->u.s.normal2.lpData + (unsigned long) vb->resource.allocatedMemory);
+    }
+    if(s->u.s.tangent.VBO) {
+        vb = (IWineD3DVertexBufferImpl *) This->stateBlock->streamSource[s->u.s.tangent.streamNo];
+        s->u.s.tangent.VBO = 0;
+        s->u.s.tangent.lpData = (BYTE *) ((unsigned long) s->u.s.tangent.lpData + (unsigned long) vb->resource.allocatedMemory);
+    }
+    if(s->u.s.binormal.VBO) {
+        vb = (IWineD3DVertexBufferImpl *) This->stateBlock->streamSource[s->u.s.binormal.streamNo];
+        s->u.s.binormal.VBO = 0;
+        s->u.s.binormal.lpData = (BYTE *) ((unsigned long) s->u.s.binormal.lpData + (unsigned long) vb->resource.allocatedMemory);
+    }
+    if(s->u.s.tessFactor.VBO) {
+        vb = (IWineD3DVertexBufferImpl *) This->stateBlock->streamSource[s->u.s.tessFactor.streamNo];
+        s->u.s.tessFactor.VBO = 0;
+        s->u.s.tessFactor.lpData = (BYTE *) ((unsigned long) s->u.s.tessFactor.lpData + (unsigned long) vb->resource.allocatedMemory);
+    }
+    if(s->u.s.fog.VBO) {
+        vb = (IWineD3DVertexBufferImpl *) This->stateBlock->streamSource[s->u.s.fog.streamNo];
+        s->u.s.fog.VBO = 0;
+        s->u.s.fog.lpData = (BYTE *) ((unsigned long) s->u.s.fog.lpData + (unsigned long) vb->resource.allocatedMemory);
+    }
+    if(s->u.s.depth.VBO) {
+        vb = (IWineD3DVertexBufferImpl *) This->stateBlock->streamSource[s->u.s.depth.streamNo];
+        s->u.s.depth.VBO = 0;
+        s->u.s.depth.lpData = (BYTE *) ((unsigned long) s->u.s.depth.lpData + (unsigned long) vb->resource.allocatedMemory);
+    }
+    if(s->u.s.sample.VBO) {
+        vb = (IWineD3DVertexBufferImpl *) This->stateBlock->streamSource[s->u.s.sample.streamNo];
+        s->u.s.sample.VBO = 0;
+        s->u.s.sample.lpData = (BYTE *) ((unsigned long) s->u.s.sample.lpData + (unsigned long) vb->resource.allocatedMemory);
+    }
+}
+
+/* Routine common to the draw primitive and draw indexed primitive routines */
+void drawPrimitive(IWineD3DDevice *iface,
+                   int PrimitiveType,
+                   long NumPrimitives,
+                   /* for Indexed: */
+                   long  StartVertexIndex,
+                   UINT  numberOfVertices,
+                   long  StartIdx,
+                   short idxSize,
+                   const void *idxData,
+                   int   minIndex) {
+
+    IWineD3DDeviceImpl           *This = (IWineD3DDeviceImpl *)iface;
+    IWineD3DSurfaceImpl          *target;
+    unsigned int i;
+
+    if (NumPrimitives == 0) return;
+
+    /* Invalidate the back buffer memory so LockRect will read it the next time */
+    for(i = 0; i < GL_LIMITS(buffers); i++) {
+        target = (IWineD3DSurfaceImpl *) This->render_targets[i];
+        if (target) {
+            IWineD3DSurface_LoadLocation((IWineD3DSurface *) target, SFLAG_INDRAWABLE, NULL);
+            IWineD3DSurface_ModifyLocation((IWineD3DSurface *) target, SFLAG_INDRAWABLE, TRUE);
+        }
+    }
+
+    /* Signals other modules that a drawing is in progress and the stateblock finalized */
+    This->isInDraw = TRUE;
+
+    ActivateContext(This, This->render_targets[0], CTXUSAGE_DRAWPRIM);
+
+    if (This->stencilBufferTarget) {
+        /* Note that this depends on the ActivateContext call above to set
+         * This->render_offscreen properly */
+        DWORD location = This->render_offscreen ? SFLAG_DS_OFFSCREEN : SFLAG_DS_ONSCREEN;
+        surface_load_ds_location(This->stencilBufferTarget, location);
+        surface_modify_ds_location(This->stencilBufferTarget, location);
+    }
+
+    /* Ok, we will be updating the screen from here onwards so grab the lock */
+    ENTER_GL();
+    {
+        GLenum glPrimType;
+        BOOL emulation = FALSE;
+        const WineDirect3DVertexStridedData *strided = &This->strided_streams;
+        WineDirect3DVertexStridedData stridedlcl;
+        /* Ok, Work out which primitive is requested and how many vertexes that
+           will be                                                              */
+        UINT calculatedNumberOfindices = primitiveToGl(PrimitiveType, NumPrimitives, &glPrimType);
+        if (numberOfVertices == 0 )
+            numberOfVertices = calculatedNumberOfindices;
+
+        if(!use_vs(This)) {
+            if(!This->strided_streams.u.s.position_transformed && This->activeContext->num_untracked_materials &&
+                This->stateBlock->renderState[WINED3DRS_LIGHTING]) {
+                static BOOL warned;
+                if (!warned) {
+                    FIXME("Using software emulation because not all material properties could be tracked\n");
+                    warned = TRUE;
+                } else {
+                    TRACE("Using software emulation because not all material properties could be tracked\n");
+                }
+                emulation = TRUE;
+            }
+            else if(This->activeContext->fog_coord && This->stateBlock->renderState[WINED3DRS_FOGENABLE]) {
+                /* Either write a pipeline replacement shader or convert the specular alpha from unsigned byte
+                 * to a float in the vertex buffer
+                 */
+                static BOOL warned;
+                if (!warned) {
+                    FIXME("Using software emulation because manual fog coordinates are provided\n");
+                    warned = TRUE;
+                } else {
+                    TRACE("Using software emulation because manual fog coordinates are provided\n");
+                }
+                emulation = TRUE;
+            }
+
+            if(emulation) {
+                strided = &stridedlcl;
+                memcpy(&stridedlcl, &This->strided_streams, sizeof(stridedlcl));
+                remove_vbos(This, &stridedlcl);
+            }
+        }
+
+        if (This->useDrawStridedSlow || emulation) {
+            /* Immediate mode drawing */
+            if(use_vs(This)) {
+                static BOOL warned;
+                if (!warned) {
+                    FIXME("Using immediate mode with vertex shaders for half float emulation\n");
+                    warned = TRUE;
+                } else {
+                    TRACE("Using immediate mode with vertex shaders for half float emulation\n");
+                }
+                drawStridedSlowVs(iface, strided, calculatedNumberOfindices, glPrimType,
+                                  idxData, idxSize, minIndex, StartIdx, StartVertexIndex);
+            } else {
+                drawStridedSlow(iface, strided, calculatedNumberOfindices,
+                                glPrimType, idxData, idxSize, minIndex, StartIdx, StartVertexIndex);
+            }
+        } else if(This->instancedDraw) {
+            /* Instancing emulation with mixing immediate mode and arrays */
+            drawStridedInstanced(iface, &This->strided_streams, calculatedNumberOfindices, glPrimType,
+                            idxData, idxSize, minIndex, StartIdx, StartVertexIndex);
+        } else {
+            drawStridedFast(iface, calculatedNumberOfindices, glPrimType,
+                            idxData, idxSize, minIndex, StartIdx, StartVertexIndex);
+        }
+    }
+
+    /* Finished updating the screen, restore lock */
+    LEAVE_GL();
+    TRACE("Done all gl drawing\n");
+
+    /* Diagnostics */
+#ifdef SHOW_FRAME_MAKEUP
+    {
+        static long int primCounter = 0;
+        /* NOTE: set primCounter to the value reported by drawprim 
+           before you want to to write frame makeup to /tmp */
+        if (primCounter >= 0) {
+            WINED3DLOCKED_RECT r;
+            char buffer[80];
+            IWineD3DSurface_LockRect(This->render_targets[0], &r, NULL, WINED3DLOCK_READONLY);
+            sprintf(buffer, "/tmp/backbuffer_%ld.tga", primCounter);
+            TRACE("Saving screenshot %s\n", buffer);
+            IWineD3DSurface_SaveSnapshot(This->render_targets[0], buffer);
+            IWineD3DSurface_UnlockRect(This->render_targets[0]);
+
+#ifdef SHOW_TEXTURE_MAKEUP
+           {
+            IWineD3DSurface *pSur;
+            int textureNo;
+            for (textureNo = 0; textureNo < MAX_COMBINED_SAMPLERS; ++textureNo) {
+                if (This->stateBlock->textures[textureNo] != NULL) {
+                    sprintf(buffer, "/tmp/texture_%p_%ld_%d.tga", This->stateBlock->textures[textureNo], primCounter, textureNo);
+                    TRACE("Saving texture %s\n", buffer);
+                    if (IWineD3DBaseTexture_GetType(This->stateBlock->textures[textureNo]) == WINED3DRTYPE_TEXTURE) {
+                            IWineD3DTexture_GetSurfaceLevel((IWineD3DTexture *)This->stateBlock->textures[textureNo], 0, &pSur);
+                            IWineD3DSurface_SaveSnapshot(pSur, buffer);
+                            IWineD3DSurface_Release(pSur);
+                    } else  {
+                        FIXME("base Texture isn't of type texture %d\n", IWineD3DBaseTexture_GetType(This->stateBlock->textures[textureNo]));
+                    }
+                }
+            }
+           }
+#endif
+        }
+        TRACE("drawprim #%ld\n", primCounter);
+        ++primCounter;
+    }
+#endif
+
+    /* Control goes back to the device, stateblock values may change again */
+    This->isInDraw = FALSE;
+}
+
+static void normalize_normal(float *n) {
+    float length = n[0] * n[0] + n[1] * n[1] + n[2] * n[2];
+    if(length == 0.0) return;
+    length = sqrt(length);
+    n[0] = n[0] / length;
+    n[1] = n[1] / length;
+    n[2] = n[2] / length;
+}
+
+/* Tesselates a high order rectangular patch into single triangles using gl evaluators
+ *
+ * The problem is that OpenGL does not offer a direct way to return the tesselated primitives,
+ * and they can't be sent off for rendering directly either. Tesselating is slow, so we want
+ * to cache the patches in a vertex buffer. But more importantly, gl can't bind generated
+ * attributes to numbered shader attributes, so we have to store them and rebind them as needed
+ * in drawprim.
+ *
+ * To read back, the opengl feedback mode is used. This creates a problem because we want
+ * untransformed, unlit vertices, but feedback runs everything through transform and lighting.
+ * Thus disable lighting and set identity matrices to get unmodified colors and positions.
+ * To overcome clipping find the biggest x, y and z values of the vertices in the patch and scale
+ * them to [-1.0;+1.0] and set the viewport up to scale them back.
+ *
+ * Normals are more tricky: Draw white vertices with 3 directional lights, and calculate the
+ * resulting colors back to the normals.
+ *
+ * NOTE: This function activates a context for blitting, modifies matrices & viewport, but
+ * does not restore it because normally a draw follows immediately afterwards. The caller is
+ * responsible of taking care that either the gl states are restored, or the context activated
+ * for drawing to reset the lastWasBlit flag.
+ */
+HRESULT tesselate_rectpatch(IWineD3DDeviceImpl *This,
+                            struct WineD3DRectPatch *patch) {
+    unsigned int i, j, num_quads, out_vertex_size, buffer_size, d3d_out_vertex_size;
+    float max_x = 0.0, max_y = 0.0, max_z = 0.0, neg_z = 0.0;
+    WineDirect3DVertexStridedData strided;
+    const BYTE *data;
+    const WINED3DRECTPATCH_INFO *info = &patch->RectPatchInfo;
+    DWORD vtxStride;
+    GLenum feedback_type;
+    GLfloat *feedbuffer;
+
+    /* First, locate the position data. This is provided in a vertex buffer in the stateblock.
+     * Beware of vbos
+     */
+    memset(&strided, 0, sizeof(strided));
+    primitiveDeclarationConvertToStridedData((IWineD3DDevice *) This, FALSE, &strided, NULL);
+    if(strided.u.s.position.VBO) {
+        IWineD3DVertexBufferImpl *vb;
+        vb = (IWineD3DVertexBufferImpl *) This->stateBlock->streamSource[strided.u.s.position.streamNo];
+        strided.u.s.position.lpData = (BYTE *) ((unsigned long) strided.u.s.position.lpData +
+                                                (unsigned long) vb->resource.allocatedMemory);
+    }
+    vtxStride = strided.u.s.position.dwStride;
+    data = strided.u.s.position.lpData +
+           vtxStride * info->Stride * info->StartVertexOffsetHeight +
+           vtxStride * info->StartVertexOffsetWidth;
+
+    /* Not entirely sure about what happens with transformed vertices */
+    if(strided.u.s.position_transformed) {
+        FIXME("Transformed position in rectpatch generation\n");
+    }
+    if(vtxStride % sizeof(GLfloat)) {
+        /* glMap2f reads vertex sizes in GLfloats, the d3d stride is in bytes.
+         * I don't see how the stride could not be a multiple of 4, but make sure
+         * to check it
+         */
+        ERR("Vertex stride is not a multiple of sizeof(GLfloat)\n");
+    }
+    if(info->Basis != WINED3DBASIS_BEZIER) {
+        FIXME("Basis is %s, how to handle this?\n", debug_d3dbasis(info->Basis));
+    }
+    if(info->Degree != WINED3DDEGREE_CUBIC) {
+        FIXME("Degree is %s, how to handle this?\n", debug_d3ddegree(info->Degree));
+    }
+
+    /* First, get the boundary cube of the input data */
+    for(j = 0; j < info->Height; j++) {
+        for(i = 0; i < info->Width; i++) {
+            const float *v = (const float *)(data + vtxStride * i + vtxStride * info->Stride * j);
+            if(fabs(v[0]) > max_x) max_x = fabs(v[0]);
+            if(fabs(v[1]) > max_y) max_y = fabs(v[1]);
+            if(fabs(v[2]) > max_z) max_z = fabs(v[2]);
+            if(v[2] < neg_z) neg_z = v[2];
+        }
+    }
+
+    /* This needs some improvements in the vertex decl code */
+    FIXME("Cannot find data to generate. Only generating position and normals\n");
+    patch->has_normals = TRUE;
+    patch->has_texcoords = FALSE;
+
+    /* Simply activate the context for blitting. This disables all the things we don't want and
+     * takes care of dirtifying. Dirtifying is preferred over pushing / popping, since drawing the
+     * patch (as opposed to normal draws) will most likely need different changes anyway
+     */
+    ActivateContext(This, This->lastActiveRenderTarget, CTXUSAGE_BLIT);
+    ENTER_GL();
+
+    glMatrixMode(GL_PROJECTION);
+    checkGLcall("glMatrixMode(GL_PROJECTION)");
+    glLoadIdentity();
+    checkGLcall("glLoadIndentity()");
+    glScalef(1 / (max_x) , 1 / (max_y), max_z == 0 ? 1 : 1 / ( 2 * max_z));
+    glTranslatef(0, 0, 0.5);
+    checkGLcall("glScalef");
+    glViewport(-max_x, -max_y, 2 * (max_x), 2 * (max_y));
+    checkGLcall("glViewport");
+
+    /* Some states to take care of. If we're in wireframe opengl will produce lines, and confuse
+     * our feedback buffer parser
+     */
+    glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
+    checkGLcall("glPolygonMode(GL_FRONT_AND_BACK, GL_FILL)");
+    IWineD3DDeviceImpl_MarkStateDirty(This, STATE_RENDER(WINED3DRS_FILLMODE));
+    if(patch->has_normals) {
+        const GLfloat black[4] = {0, 0, 0, 0};
+        const GLfloat red[4]   = {1, 0, 0, 0};
+        const GLfloat green[4] = {0, 1, 0, 0};
+        const GLfloat blue[4]  = {0, 0, 1, 0};
+        const GLfloat white[4] = {1, 1, 1, 1};
+        glEnable(GL_LIGHTING);
+        checkGLcall("glEnable(GL_LIGHTING)");
+        glLightModelfv(GL_LIGHT_MODEL_AMBIENT, black);
+        checkGLcall("glLightModel for MODEL_AMBIENT");
+        IWineD3DDeviceImpl_MarkStateDirty(This, STATE_RENDER(WINED3DRS_AMBIENT));
+
+        for(i = 3; i < GL_LIMITS(lights); i++) {
+            glDisable(GL_LIGHT0 + i);
+            checkGLcall("glDisable(GL_LIGHT0 + i)");
+            IWineD3DDeviceImpl_MarkStateDirty(This, STATE_ACTIVELIGHT(i));
+        }
+
+        IWineD3DDeviceImpl_MarkStateDirty(This, STATE_ACTIVELIGHT(0));
+        glLightfv(GL_LIGHT0, GL_DIFFUSE, red);
+        glLightfv(GL_LIGHT0, GL_SPECULAR, black);
+        glLightfv(GL_LIGHT0, GL_AMBIENT, black);
+        glLightfv(GL_LIGHT0, GL_POSITION, red);
+        glEnable(GL_LIGHT0);
+        checkGLcall("Setting up light 1\n");
+        IWineD3DDeviceImpl_MarkStateDirty(This, STATE_ACTIVELIGHT(1));
+        glLightfv(GL_LIGHT1, GL_DIFFUSE, green);
+        glLightfv(GL_LIGHT1, GL_SPECULAR, black);
+        glLightfv(GL_LIGHT1, GL_AMBIENT, black);
+        glLightfv(GL_LIGHT1, GL_POSITION, green);
+        glEnable(GL_LIGHT1);
+        checkGLcall("Setting up light 2\n");
+        IWineD3DDeviceImpl_MarkStateDirty(This, STATE_ACTIVELIGHT(2));
+        glLightfv(GL_LIGHT2, GL_DIFFUSE, blue);
+        glLightfv(GL_LIGHT2, GL_SPECULAR, black);
+        glLightfv(GL_LIGHT2, GL_AMBIENT, black);
+        glLightfv(GL_LIGHT2, GL_POSITION, blue);
+        glEnable(GL_LIGHT2);
+        checkGLcall("Setting up light 3\n");
+
+        IWineD3DDeviceImpl_MarkStateDirty(This, STATE_MATERIAL);
+        IWineD3DDeviceImpl_MarkStateDirty(This, STATE_RENDER(WINED3DRS_COLORVERTEX));
+        glDisable(GL_COLOR_MATERIAL);
+        glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, black);
+        glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, black);
+        glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, white);
+        checkGLcall("Setting up materials\n");
+    }
+
+    /* Enable the needed maps.
+     * GL_MAP2_VERTEX_3 is needed for positional data.
+     * GL_AUTO_NORMAL to generate normals from the position. Do not use GL_MAP2_NORMAL.
+     * GL_MAP2_TEXTURE_COORD_4 for texture coords
+     */
+    num_quads = ceil(patch->numSegs[0]) * ceil(patch->numSegs[1]);
+    out_vertex_size = 3 /* position */;
+    d3d_out_vertex_size = 3;
+    glEnable(GL_MAP2_VERTEX_3);
+    if(patch->has_normals && patch->has_texcoords) {
+        FIXME("Texcoords not handled yet\n");
+        feedback_type = GL_3D_COLOR_TEXTURE;
+        out_vertex_size += 8;
+        d3d_out_vertex_size += 7;
+        glEnable(GL_AUTO_NORMAL);
+        glEnable(GL_MAP2_TEXTURE_COORD_4);
+    } else if(patch->has_texcoords) {
+        FIXME("Texcoords not handled yet\n");
+        feedback_type = GL_3D_COLOR_TEXTURE;
+        out_vertex_size += 7;
+        d3d_out_vertex_size += 4;
+        glEnable(GL_MAP2_TEXTURE_COORD_4);
+    } else if(patch->has_normals) {
+        feedback_type = GL_3D_COLOR;
+        out_vertex_size += 4;
+        d3d_out_vertex_size += 3;
+        glEnable(GL_AUTO_NORMAL);
+    } else {
+        feedback_type = GL_3D;
+    }
+    checkGLcall("glEnable vertex attrib generation");
+
+    buffer_size = num_quads * out_vertex_size * 2 /* triangle list */ * 3 /* verts per tri */
+                   + 4 * num_quads /* 2 triangle markers per quad + num verts in tri */;
+    feedbuffer = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, buffer_size * sizeof(float) * 8);
+
+    glMap2f(GL_MAP2_VERTEX_3,
+            0, 1, vtxStride / sizeof(float), info->Width,
+            0, 1, info->Stride * vtxStride / sizeof(float), info->Height,
+            (const GLfloat *)data);
+    checkGLcall("glMap2f");
+    if(patch->has_texcoords) {
+        glMap2f(GL_MAP2_TEXTURE_COORD_4,
+                0, 1, vtxStride / sizeof(float), info->Width,
+                0, 1, info->Stride * vtxStride / sizeof(float), info->Height,
+                (const GLfloat *)data);
+        checkGLcall("glMap2f");
+    }
+    glMapGrid2f(ceil(patch->numSegs[0]), 0.0, 1.0, ceil(patch->numSegs[1]), 0.0, 1.0);
+    checkGLcall("glMapGrid2f");
+
+    glFeedbackBuffer(buffer_size * 2, feedback_type, feedbuffer);
+    checkGLcall("glFeedbackBuffer");
+    glRenderMode(GL_FEEDBACK);
+
+    glEvalMesh2(GL_FILL, 0, ceil(patch->numSegs[0]), 0, ceil(patch->numSegs[1]));
+    checkGLcall("glEvalMesh2\n");
+
+    i = glRenderMode(GL_RENDER);
+    if(i == -1) {
+        LEAVE_GL();
+        ERR("Feedback failed. Expected %d elements back\n", buffer_size);
+        Sleep(10000);
+        HeapFree(GetProcessHeap(), 0, feedbuffer);
+        return WINED3DERR_DRIVERINTERNALERROR;
+    } else if(i != buffer_size) {
+        LEAVE_GL();
+        ERR("Unexpected amount of elements returned. Expected %d, got %d\n", buffer_size, i);
+        Sleep(10000);
+        HeapFree(GetProcessHeap(), 0, feedbuffer);
+        return WINED3DERR_DRIVERINTERNALERROR;
+    } else {
+        TRACE("Got %d elements as expected\n", i);
+    }
+
+    HeapFree(GetProcessHeap(), 0, patch->mem);
+    patch->mem = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, num_quads * 6 * d3d_out_vertex_size * sizeof(float) * 8);
+    i = 0;
+    for(j = 0; j < buffer_size; j += (3 /* num verts */ * out_vertex_size + 2 /* tri marker */)) {
+        if(feedbuffer[j] != GL_POLYGON_TOKEN) {
+            ERR("Unexpected token: %f\n", feedbuffer[j]);
+            continue;
+        }
+        if(feedbuffer[j + 1] != 3) {
+            ERR("Unexpected polygon: %f corners\n", feedbuffer[j + 1]);
+            continue;
+        }
+        /* Somehow there are different ideas about back / front facing, so fix up the
+         * vertex order
+         */
+        patch->mem[i + 0] =  feedbuffer[j + out_vertex_size * 2 + 2]; /* x, triangle 2 */
+        patch->mem[i + 1] =  feedbuffer[j + out_vertex_size * 2 + 3]; /* y, triangle 2 */
+        patch->mem[i + 2] = (feedbuffer[j + out_vertex_size * 2 + 4] - 0.5) * 4 * max_z; /* z, triangle 3 */
+        if(patch->has_normals) {
+            patch->mem[i + 3] = feedbuffer[j + out_vertex_size * 2 + 5];
+            patch->mem[i + 4] = feedbuffer[j + out_vertex_size * 2 + 6];
+            patch->mem[i + 5] = feedbuffer[j + out_vertex_size * 2 + 7];
+        }
+        i += d3d_out_vertex_size;
+
+        patch->mem[i + 0] =  feedbuffer[j + out_vertex_size * 1 + 2]; /* x, triangle 2 */
+        patch->mem[i + 1] =  feedbuffer[j + out_vertex_size * 1 + 3]; /* y, triangle 2 */
+        patch->mem[i + 2] = (feedbuffer[j + out_vertex_size * 1 + 4] - 0.5) * 4 * max_z; /* z, triangle 2 */
+        if(patch->has_normals) {
+            patch->mem[i + 3] = feedbuffer[j + out_vertex_size * 1 + 5];
+            patch->mem[i + 4] = feedbuffer[j + out_vertex_size * 1 + 6];
+            patch->mem[i + 5] = feedbuffer[j + out_vertex_size * 1 + 7];
+        }
+        i += d3d_out_vertex_size;
+
+        patch->mem[i + 0] =  feedbuffer[j + out_vertex_size * 0 + 2]; /* x, triangle 1 */
+        patch->mem[i + 1] =  feedbuffer[j + out_vertex_size * 0 + 3]; /* y, triangle 1 */
+        patch->mem[i + 2] = (feedbuffer[j + out_vertex_size * 0 + 4] - 0.5) * 4 * max_z; /* z, triangle 1 */
+        if(patch->has_normals) {
+            patch->mem[i + 3] = feedbuffer[j + out_vertex_size * 0 + 5];
+            patch->mem[i + 4] = feedbuffer[j + out_vertex_size * 0 + 6];
+            patch->mem[i + 5] = feedbuffer[j + out_vertex_size * 0 + 7];
+        }
+        i += d3d_out_vertex_size;
+    }
+
+    if(patch->has_normals) {
+        /* Now do the same with reverse light directions */
+        const GLfloat x[4] = {-1,  0,  0, 0};
+        const GLfloat y[4] = { 0, -1,  0, 0};
+        const GLfloat z[4] = { 0,  0, -1, 0};
+        glLightfv(GL_LIGHT0, GL_POSITION, x);
+        glLightfv(GL_LIGHT1, GL_POSITION, y);
+        glLightfv(GL_LIGHT2, GL_POSITION, z);
+        checkGLcall("Setting up reverse light directions\n");
+
+        glRenderMode(GL_FEEDBACK);
+        checkGLcall("glRenderMode(GL_FEEDBACK)");
+        glEvalMesh2(GL_FILL, 0, ceil(patch->numSegs[0]), 0, ceil(patch->numSegs[1]));
+        checkGLcall("glEvalMesh2\n");
+        i = glRenderMode(GL_RENDER);
+        checkGLcall("glRenderMode(GL_RENDER)");
+
+        i = 0;
+        for(j = 0; j < buffer_size; j += (3 /* num verts */ * out_vertex_size + 2 /* tri marker */)) {
+            if(feedbuffer[j] != GL_POLYGON_TOKEN) {
+                ERR("Unexpected token: %f\n", feedbuffer[j]);
+                continue;
+            }
+            if(feedbuffer[j + 1] != 3) {
+                ERR("Unexpected polygon: %f corners\n", feedbuffer[j + 1]);
+                continue;
+            }
+            if(patch->mem[i + 3] == 0.0)
+                patch->mem[i + 3] = -feedbuffer[j + out_vertex_size * 2 + 5];
+            if(patch->mem[i + 4] == 0.0)
+                patch->mem[i + 4] = -feedbuffer[j + out_vertex_size * 2 + 6];
+            if(patch->mem[i + 5] == 0.0)
+                patch->mem[i + 5] = -feedbuffer[j + out_vertex_size * 2 + 7];
+            normalize_normal(patch->mem + i + 3);
+            i += d3d_out_vertex_size;
+
+            if(patch->mem[i + 3] == 0.0)
+                patch->mem[i + 3] = -feedbuffer[j + out_vertex_size * 1 + 5];
+            if(patch->mem[i + 4] == 0.0)
+                patch->mem[i + 4] = -feedbuffer[j + out_vertex_size * 1 + 6];
+            if(patch->mem[i + 5] == 0.0)
+                patch->mem[i + 5] = -feedbuffer[j + out_vertex_size * 1 + 7];
+            normalize_normal(patch->mem + i + 3);
+            i += d3d_out_vertex_size;
+
+            if(patch->mem[i + 3] == 0.0)
+                patch->mem[i + 3] = -feedbuffer[j + out_vertex_size * 0 + 5];
+            if(patch->mem[i + 4] == 0.0)
+                patch->mem[i + 4] = -feedbuffer[j + out_vertex_size * 0 + 6];
+            if(patch->mem[i + 5] == 0.0)
+                patch->mem[i + 5] = -feedbuffer[j + out_vertex_size * 0 + 7];
+            normalize_normal(patch->mem + i + 3);
+            i += d3d_out_vertex_size;
+        }
+    }
+
+    glDisable(GL_MAP2_VERTEX_3);
+    glDisable(GL_AUTO_NORMAL);
+    glDisable(GL_MAP2_NORMAL);
+    glDisable(GL_MAP2_TEXTURE_COORD_4);
+    checkGLcall("glDisable vertex attrib generation");
+    LEAVE_GL();
+
+    HeapFree(GetProcessHeap(), 0, feedbuffer);
+
+    vtxStride = 3 * sizeof(float);
+    if(patch->has_normals) {
+        vtxStride += 3 * sizeof(float);
+    }
+    if(patch->has_texcoords) {
+        vtxStride += 4 * sizeof(float);
+    }
+    memset(&patch->strided, 0, sizeof(&patch->strided));
+    patch->strided.u.s.position.lpData = (BYTE *) patch->mem;
+    patch->strided.u.s.position.dwStride = vtxStride;
+    patch->strided.u.s.position.dwType = WINED3DDECLTYPE_FLOAT3;
+    patch->strided.u.s.position.streamNo = 255;
+
+    if(patch->has_normals) {
+        patch->strided.u.s.normal.lpData = (BYTE *) patch->mem + 3 * sizeof(float) /* pos */;
+        patch->strided.u.s.normal.dwStride = vtxStride;
+        patch->strided.u.s.normal.dwType = WINED3DDECLTYPE_FLOAT3;
+        patch->strided.u.s.normal.streamNo = 255;
+    }
+    if(patch->has_texcoords) {
+        patch->strided.u.s.texCoords[0].lpData = (BYTE *) patch->mem + 3 * sizeof(float) /* pos */;
+        if(patch->has_normals) {
+            patch->strided.u.s.texCoords[0].lpData += 3 * sizeof(float);
+        }
+        patch->strided.u.s.texCoords[0].dwStride = vtxStride;
+        patch->strided.u.s.texCoords[0].dwType = WINED3DDECLTYPE_FLOAT4;
+        /* MAX_STREAMS index points to an unused element in stateblock->streamOffsets which
+         * always remains set to 0. Windows uses stream 255 here, but this is not visible to the
+         * application.
+         */
+        patch->strided.u.s.texCoords[0].streamNo = MAX_STREAMS;
+    }
+
+    return WINED3D_OK;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/glsl_shader.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/glsl_shader.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/glsl_shader.c	(revision 16410)
@@ -0,0 +1,3877 @@
+/*
+ * GLSL pixel and vertex shader implementation
+ *
+ * Copyright 2006 Jason Green 
+ * Copyright 2006-2007 Henri Verbeet
+ * Copyright 2007-2008 Stefan Dösinger for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/*
+ * D3D shader asm has swizzles on source parameters, and write masks for
+ * destination parameters. GLSL uses swizzles for both. The result of this is
+ * that for example "mov dst.xw, src.zyxw" becomes "dst.xw = src.zw" in GLSL.
+ * Ie, to generate a proper GLSL source swizzle, we need to take the D3D write
+ * mask for the destination parameter into account.
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d_shader);
+WINE_DECLARE_DEBUG_CHANNEL(d3d_constants);
+WINE_DECLARE_DEBUG_CHANNEL(d3d_caps);
+WINE_DECLARE_DEBUG_CHANNEL(d3d);
+
+#define GLINFO_LOCATION      (*gl_info)
+
+typedef struct {
+    char reg_name[150];
+    char mask_str[6];
+} glsl_dst_param_t;
+
+typedef struct {
+    char reg_name[150];
+    char param_str[100];
+} glsl_src_param_t;
+
+typedef struct {
+    const char *name;
+    DWORD coord_mask;
+} glsl_sample_function_t;
+
+/* GLSL shader private data */
+struct shader_glsl_priv {
+    struct hash_table_t *glsl_program_lookup;
+    const struct glsl_shader_prog_link *glsl_program;
+    GLhandleARB depth_blt_program[tex_type_count];
+};
+
+/* Struct to maintain data about a linked GLSL program */
+struct glsl_shader_prog_link {
+    struct list                 vshader_entry;
+    struct list                 pshader_entry;
+    GLhandleARB                 programId;
+    GLhandleARB                 *vuniformF_locations;
+    GLhandleARB                 *puniformF_locations;
+    GLhandleARB                 vuniformI_locations[MAX_CONST_I];
+    GLhandleARB                 puniformI_locations[MAX_CONST_I];
+    GLhandleARB                 posFixup_location;
+    GLhandleARB                 bumpenvmat_location[MAX_TEXTURES];
+    GLhandleARB                 luminancescale_location[MAX_TEXTURES];
+    GLhandleARB                 luminanceoffset_location[MAX_TEXTURES];
+    GLhandleARB                 ycorrection_location;
+    GLenum                      vertex_color_clamp;
+    GLhandleARB                 vshader;
+    IWineD3DPixelShader         *pshader;
+    struct ps_compile_args      ps_args;
+};
+
+typedef struct {
+    GLhandleARB                 vshader;
+    IWineD3DPixelShader         *pshader;
+    struct ps_compile_args      ps_args;
+} glsl_program_key_t;
+
+
+/** Prints the GLSL info log which will contain error messages if they exist */
+static void print_glsl_info_log(const WineD3D_GL_Info *gl_info, GLhandleARB obj)
+{
+    int infologLength = 0;
+    char *infoLog;
+    unsigned int i;
+    BOOL is_spam;
+
+    const char *spam[] = {
+        "Vertex shader was successfully compiled to run on hardware.\n",    /* fglrx          */
+        "Fragment shader was successfully compiled to run on hardware.\n",  /* fglrx          */
+        "Fragment shader(s) linked, vertex shader(s) linked. \n ",          /* fglrx, with \n */
+        "Fragment shader(s) linked, vertex shader(s) linked.",              /* fglrx, no \n   */
+        "Vertex shader(s) linked, no fragment shader(s) defined. \n ",      /* fglrx, with \n */
+        "Vertex shader(s) linked, no fragment shader(s) defined.",          /* fglrx, no \n   */
+        "Fragment shader was successfully compiled to run on hardware.\nWARNING: 0:1: extension 'GL_ARB_draw_buffers' is not supported",
+        "Fragment shader(s) linked, no vertex shader(s) defined.",          /* fglrx, no \n   */
+        "Fragment shader(s) linked, no vertex shader(s) defined. \n ",      /* fglrx, with \n */
+        "WARNING: 0:2: extension 'GL_ARB_draw_buffers' is not supported\n"  /* MacOS ati      */
+    };
+
+    GL_EXTCALL(glGetObjectParameterivARB(obj,
+               GL_OBJECT_INFO_LOG_LENGTH_ARB,
+               &infologLength));
+
+    /* A size of 1 is just a null-terminated string, so the log should be bigger than
+     * that if there are errors. */
+    if (infologLength > 1)
+    {
+        /* Fglrx doesn't terminate the string properly, but it tells us the proper length.
+         * So use HEAP_ZERO_MEMORY to avoid uninitialized bytes
+         */
+        infoLog = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, infologLength);
+        GL_EXTCALL(glGetInfoLogARB(obj, infologLength, NULL, infoLog));
+        is_spam = FALSE;
+
+        for(i = 0; i < sizeof(spam) / sizeof(spam[0]); i++) {
+            if(strcmp(infoLog, spam[i]) == 0) {
+                is_spam = TRUE;
+                break;
+            }
+        }
+        if(is_spam) {
+            TRACE("Spam received from GLSL shader #%u: %s\n", obj, debugstr_a(infoLog));
+        } else {
+            FIXME("Error received from GLSL shader #%u: %s\n", obj, debugstr_a(infoLog));
+        }
+        HeapFree(GetProcessHeap(), 0, infoLog);
+    }
+}
+
+/**
+ * Loads (pixel shader) samplers
+ */
+static void shader_glsl_load_psamplers(const WineD3D_GL_Info *gl_info, IWineD3DStateBlock *iface, GLhandleARB programId)
+{
+    IWineD3DStateBlockImpl* stateBlock = (IWineD3DStateBlockImpl*) iface;
+    GLhandleARB name_loc;
+    int i;
+    char sampler_name[20];
+
+    for (i = 0; i < MAX_FRAGMENT_SAMPLERS; ++i) {
+        _snprintf(sampler_name, sizeof(sampler_name), "Psampler%d", i);
+        name_loc = GL_EXTCALL(glGetUniformLocationARB(programId, sampler_name));
+        if (name_loc != -1) {
+            int mapped_unit = stateBlock->wineD3DDevice->texUnitMap[i];
+            if (mapped_unit != -1 && mapped_unit < GL_LIMITS(fragment_samplers)) {
+                TRACE("Loading %s for texture %d\n", sampler_name, mapped_unit);
+                GL_EXTCALL(glUniform1iARB(name_loc, mapped_unit));
+                checkGLcall("glUniform1iARB");
+            } else {
+                ERR("Trying to load sampler %s on unsupported unit %d\n", sampler_name, mapped_unit);
+            }
+        }
+    }
+}
+
+static void shader_glsl_load_vsamplers(const WineD3D_GL_Info *gl_info, IWineD3DStateBlock *iface, GLhandleARB programId)
+{
+    IWineD3DStateBlockImpl* stateBlock = (IWineD3DStateBlockImpl*) iface;
+    GLhandleARB name_loc;
+    char sampler_name[20];
+    int i;
+
+    for (i = 0; i < MAX_VERTEX_SAMPLERS; ++i) {
+        _snprintf(sampler_name, sizeof(sampler_name), "Vsampler%d", i);
+        name_loc = GL_EXTCALL(glGetUniformLocationARB(programId, sampler_name));
+        if (name_loc != -1) {
+            int mapped_unit = stateBlock->wineD3DDevice->texUnitMap[MAX_FRAGMENT_SAMPLERS + i];
+            if (mapped_unit != -1 && mapped_unit < GL_LIMITS(combined_samplers)) {
+                TRACE("Loading %s for texture %d\n", sampler_name, mapped_unit);
+                GL_EXTCALL(glUniform1iARB(name_loc, mapped_unit));
+                checkGLcall("glUniform1iARB");
+            } else {
+                ERR("Trying to load sampler %s on unsupported unit %d\n", sampler_name, mapped_unit);
+            }
+        }
+    }
+}
+
+/** 
+ * Loads floating point constants (aka uniforms) into the currently set GLSL program.
+ * When constant_list == NULL, it will load all the constants.
+ */
+static void shader_glsl_load_constantsF(IWineD3DBaseShaderImpl *This, const WineD3D_GL_Info *gl_info,
+        unsigned int max_constants, const float *constants, const GLhandleARB *constant_locations,
+        const struct list *constant_list)
+{
+    const constants_entry *constant;
+    const local_constant *lconst;
+    GLhandleARB tmp_loc;
+    DWORD i, j, k;
+    const DWORD *idx;
+
+    if (TRACE_ON(d3d_shader)) {
+        LIST_FOR_EACH_ENTRY(constant, constant_list, constants_entry, entry) {
+            idx = constant->idx;
+            j = constant->count;
+            while (j--) {
+                i = *idx++;
+                tmp_loc = constant_locations[i];
+                if (tmp_loc != -1) {
+                    TRACE_(d3d_constants)("Loading constants %i: %f, %f, %f, %f\n", i,
+                            constants[i * 4 + 0], constants[i * 4 + 1],
+                            constants[i * 4 + 2], constants[i * 4 + 3]);
+                }
+            }
+        }
+    }
+
+    /* 1.X pshaders have the constants clamped to [-1;1] implicitly. */
+    if(WINED3DSHADER_VERSION_MAJOR(This->baseShader.hex_version) == 1 &&
+       shader_is_pshader_version(This->baseShader.hex_version)) {
+        float lcl_const[4];
+
+        LIST_FOR_EACH_ENTRY(constant, constant_list, constants_entry, entry) {
+            idx = constant->idx;
+            j = constant->count;
+            while (j--) {
+                i = *idx++;
+                tmp_loc = constant_locations[i];
+                if (tmp_loc != -1) {
+                    /* We found this uniform name in the program - go ahead and send the data */
+                    k = i * 4;
+                    if(constants[k + 0] < -1.0) lcl_const[0] = -1.0;
+                    else if(constants[k + 0] > 1.0) lcl_const[0] = 1.0;
+                    else lcl_const[0] = constants[k + 0];
+                    if(constants[k + 1] < -1.0) lcl_const[1] = -1.0;
+                    else if(constants[k + 1] > 1.0) lcl_const[1] = 1.0;
+                    else lcl_const[1] = constants[k + 1];
+                    if(constants[k + 2] < -1.0) lcl_const[2] = -1.0;
+                    else if(constants[k + 2] > 1.0) lcl_const[2] = 1.0;
+                    else lcl_const[2] = constants[k + 2];
+                    if(constants[k + 3] < -1.0) lcl_const[3] = -1.0;
+                    else if(constants[k + 3] > 1.0) lcl_const[3] = 1.0;
+                    else lcl_const[3] = constants[k + 3];
+
+                    GL_EXTCALL(glUniform4fvARB(tmp_loc, 1, lcl_const));
+                }
+            }
+        }
+    } else {
+        LIST_FOR_EACH_ENTRY(constant, constant_list, constants_entry, entry) {
+            idx = constant->idx;
+            j = constant->count;
+            while (j--) {
+                i = *idx++;
+                tmp_loc = constant_locations[i];
+                if (tmp_loc != -1) {
+                    /* We found this uniform name in the program - go ahead and send the data */
+                    GL_EXTCALL(glUniform4fvARB(tmp_loc, 1, constants + (i * 4)));
+                }
+            }
+        }
+    }
+    checkGLcall("glUniform4fvARB()");
+
+    if(!This->baseShader.load_local_constsF) {
+        TRACE("No need to load local float constants for this shader\n");
+        return;
+    }
+
+    /* Load immediate constants */
+    if (TRACE_ON(d3d_shader)) {
+        LIST_FOR_EACH_ENTRY(lconst, &This->baseShader.constantsF, local_constant, entry) {
+            tmp_loc = constant_locations[lconst->idx];
+            if (tmp_loc != -1) {
+                const GLfloat *values = (const GLfloat *)lconst->value;
+                TRACE_(d3d_constants)("Loading local constants %i: %f, %f, %f, %f\n", lconst->idx,
+                        values[0], values[1], values[2], values[3]);
+            }
+        }
+    }
+    /* Immediate constants are clamped to [-1;1] at shader creation time if needed */
+    LIST_FOR_EACH_ENTRY(lconst, &This->baseShader.constantsF, local_constant, entry) {
+        tmp_loc = constant_locations[lconst->idx];
+        if (tmp_loc != -1) {
+            /* We found this uniform name in the program - go ahead and send the data */
+            GL_EXTCALL(glUniform4fvARB(tmp_loc, 1, (const GLfloat *)lconst->value));
+        }
+    }
+    checkGLcall("glUniform4fvARB()");
+}
+
+/* Loads integer constants (aka uniforms) into the currently set GLSL program. */
+static void shader_glsl_load_constantsI(IWineD3DBaseShaderImpl *This, const WineD3D_GL_Info *gl_info,
+        const GLhandleARB locations[MAX_CONST_I], const int *constants, WORD constants_set)
+{
+    unsigned int i;
+    struct list* ptr;
+
+    for (i = 0; constants_set; constants_set >>= 1, ++i)
+    {
+        if (!(constants_set & 1)) continue;
+
+        TRACE_(d3d_constants)("Loading constants %u: %i, %i, %i, %i\n",
+                i, constants[i*4], constants[i*4+1], constants[i*4+2], constants[i*4+3]);
+
+        /* We found this uniform name in the program - go ahead and send the data */
+        GL_EXTCALL(glUniform4ivARB(locations[i], 1, &constants[i*4]));
+        checkGLcall("glUniform4ivARB");
+    }
+
+    /* Load immediate constants */
+    ptr = list_head(&This->baseShader.constantsI);
+    while (ptr) {
+        const struct local_constant *lconst = LIST_ENTRY(ptr, const struct local_constant, entry);
+        unsigned int idx = lconst->idx;
+        const GLint *values = (const GLint *)lconst->value;
+
+        TRACE_(d3d_constants)("Loading local constants %i: %i, %i, %i, %i\n", idx,
+            values[0], values[1], values[2], values[3]);
+
+        /* We found this uniform name in the program - go ahead and send the data */
+        GL_EXTCALL(glUniform4ivARB(locations[idx], 1, values));
+        checkGLcall("glUniform4ivARB");
+        ptr = list_next(&This->baseShader.constantsI, ptr);
+    }
+}
+
+/* Loads boolean constants (aka uniforms) into the currently set GLSL program. */
+static void shader_glsl_load_constantsB(IWineD3DBaseShaderImpl *This, const WineD3D_GL_Info *gl_info,
+        GLhandleARB programId, const BOOL *constants, WORD constants_set)
+{
+    GLhandleARB tmp_loc;
+    unsigned int i;
+    char tmp_name[8];
+    char is_pshader = shader_is_pshader_version(This->baseShader.hex_version);
+    const char* prefix = is_pshader? "PB":"VB";
+    struct list* ptr;
+
+    /* TODO: Benchmark and see if it would be beneficial to store the
+     * locations of the constants to avoid looking up each time */
+    for (i = 0; constants_set; constants_set >>= 1, ++i)
+    {
+        if (!(constants_set & 1)) continue;
+
+        TRACE_(d3d_constants)("Loading constants %i: %i;\n", i, constants[i]);
+
+        /* TODO: Benchmark and see if it would be beneficial to store the
+         * locations of the constants to avoid looking up each time */
+        _snprintf(tmp_name, sizeof(tmp_name), "%s[%i]", prefix, i);
+        tmp_loc = GL_EXTCALL(glGetUniformLocationARB(programId, tmp_name));
+        if (tmp_loc != -1)
+        {
+            /* We found this uniform name in the program - go ahead and send the data */
+            GL_EXTCALL(glUniform1ivARB(tmp_loc, 1, &constants[i]));
+            checkGLcall("glUniform1ivARB");
+        }
+    }
+
+    /* Load immediate constants */
+    ptr = list_head(&This->baseShader.constantsB);
+    while (ptr) {
+        const struct local_constant *lconst = LIST_ENTRY(ptr, const struct local_constant, entry);
+        unsigned int idx = lconst->idx;
+        const GLint *values = (const GLint *)lconst->value;
+
+        TRACE_(d3d_constants)("Loading local constants %i: %i\n", idx, values[0]);
+
+        _snprintf(tmp_name, sizeof(tmp_name), "%s[%i]", prefix, idx);
+        tmp_loc = GL_EXTCALL(glGetUniformLocationARB(programId, tmp_name));
+        if (tmp_loc != -1) {
+            /* We found this uniform name in the program - go ahead and send the data */
+            GL_EXTCALL(glUniform1ivARB(tmp_loc, 1, values));
+            checkGLcall("glUniform1ivARB");
+        }
+        ptr = list_next(&This->baseShader.constantsB, ptr);
+    }
+}
+
+
+
+/**
+ * Loads the app-supplied constants into the currently set GLSL program.
+ */
+static void shader_glsl_load_constants(
+    IWineD3DDevice* device,
+    char usePixelShader,
+    char useVertexShader) {
+   
+    IWineD3DDeviceImpl* deviceImpl = (IWineD3DDeviceImpl*) device;
+    const struct shader_glsl_priv *priv = (struct shader_glsl_priv *)deviceImpl->shader_priv;
+    IWineD3DStateBlockImpl* stateBlock = deviceImpl->stateBlock;
+    const WineD3D_GL_Info *gl_info = &deviceImpl->adapter->gl_info;
+
+    const GLhandleARB *constant_locations;
+    const struct list *constant_list;
+    GLhandleARB programId;
+    const struct glsl_shader_prog_link *prog = priv->glsl_program;
+    int i;
+
+    if (!prog) {
+        /* No GLSL program set - nothing to do. */
+        return;
+    }
+    programId = prog->programId;
+
+    if (useVertexShader) {
+        IWineD3DBaseShaderImpl* vshader = (IWineD3DBaseShaderImpl*) stateBlock->vertexShader;
+
+        constant_locations = prog->vuniformF_locations;
+        constant_list = &stateBlock->set_vconstantsF;
+
+        /* Load DirectX 9 float constants/uniforms for vertex shader */
+        shader_glsl_load_constantsF(vshader, gl_info, GL_LIMITS(vshader_constantsF),
+                stateBlock->vertexShaderConstantF, constant_locations, constant_list);
+
+        /* Load DirectX 9 integer constants/uniforms for vertex shader */
+        shader_glsl_load_constantsI(vshader, gl_info, prog->vuniformI_locations,
+                stateBlock->vertexShaderConstantI, stateBlock->changed.vertexShaderConstantsI);
+
+        /* Load DirectX 9 boolean constants/uniforms for vertex shader */
+        shader_glsl_load_constantsB(vshader, gl_info, programId,
+                stateBlock->vertexShaderConstantB, stateBlock->changed.vertexShaderConstantsB);
+
+        /* Upload the position fixup params */
+        GL_EXTCALL(glUniform4fvARB(prog->posFixup_location, 1, &deviceImpl->posFixup[0]));
+        checkGLcall("glUniform4fvARB");
+    }
+
+    if (usePixelShader) {
+
+        IWineD3DBaseShaderImpl* pshader = (IWineD3DBaseShaderImpl*) stateBlock->pixelShader;
+
+        constant_locations = prog->puniformF_locations;
+        constant_list = &stateBlock->set_pconstantsF;
+
+        /* Load DirectX 9 float constants/uniforms for pixel shader */
+        shader_glsl_load_constantsF(pshader, gl_info, GL_LIMITS(pshader_constantsF),
+                stateBlock->pixelShaderConstantF, constant_locations, constant_list);
+
+        /* Load DirectX 9 integer constants/uniforms for pixel shader */
+        shader_glsl_load_constantsI(pshader, gl_info, prog->puniformI_locations,
+                stateBlock->pixelShaderConstantI, stateBlock->changed.pixelShaderConstantsI);
+
+        /* Load DirectX 9 boolean constants/uniforms for pixel shader */
+        shader_glsl_load_constantsB(pshader, gl_info, programId,
+                stateBlock->pixelShaderConstantB, stateBlock->changed.pixelShaderConstantsB);
+
+        /* Upload the environment bump map matrix if needed. The needsbumpmat member specifies the texture stage to load the matrix from.
+         * It can't be 0 for a valid texbem instruction.
+         */
+        for(i = 0; i < ((IWineD3DPixelShaderImpl *) pshader)->numbumpenvmatconsts; i++) {
+            IWineD3DPixelShaderImpl *ps = (IWineD3DPixelShaderImpl *) pshader;
+            int stage = ps->luminanceconst[i].texunit;
+
+            const float *data = (const float *)&stateBlock->textureState[(int)ps->bumpenvmatconst[i].texunit][WINED3DTSS_BUMPENVMAT00];
+            GL_EXTCALL(glUniformMatrix2fvARB(prog->bumpenvmat_location[i], 1, 0, data));
+            checkGLcall("glUniformMatrix2fvARB");
+
+            /* texbeml needs the luminance scale and offset too. If texbeml is used, needsbumpmat
+             * is set too, so we can check that in the needsbumpmat check
+             */
+            if(ps->baseShader.reg_maps.luminanceparams[stage]) {
+                const GLfloat *scale = (const GLfloat *)&stateBlock->textureState[stage][WINED3DTSS_BUMPENVLSCALE];
+                const GLfloat *offset = (const GLfloat *)&stateBlock->textureState[stage][WINED3DTSS_BUMPENVLOFFSET];
+
+                GL_EXTCALL(glUniform1fvARB(prog->luminancescale_location[i], 1, scale));
+                checkGLcall("glUniform1fvARB");
+                GL_EXTCALL(glUniform1fvARB(prog->luminanceoffset_location[i], 1, offset));
+                checkGLcall("glUniform1fvARB");
+            }
+        }
+
+        if(((IWineD3DPixelShaderImpl *) pshader)->vpos_uniform) {
+            float correction_params[4];
+            if(deviceImpl->render_offscreen) {
+                correction_params[0] = 0.0;
+                correction_params[1] = 1.0;
+            } else {
+                /* position is window relative, not viewport relative */
+                correction_params[0] = ((IWineD3DSurfaceImpl *) deviceImpl->render_targets[0])->currentDesc.Height;
+                correction_params[1] = -1.0;
+            }
+            GL_EXTCALL(glUniform4fvARB(prog->ycorrection_location, 1, correction_params));
+        }
+    }
+}
+
+/** Generate the variable & register declarations for the GLSL output target */
+static void shader_generate_glsl_declarations(IWineD3DBaseShader *iface, const shader_reg_maps *reg_maps,
+        SHADER_BUFFER *buffer, const WineD3D_GL_Info *gl_info)
+{
+    IWineD3DBaseShaderImpl* This = (IWineD3DBaseShaderImpl*) iface;
+    IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *) This->baseShader.device;
+    unsigned int i, extra_constants_needed = 0;
+    const local_constant *lconst;
+
+    /* There are some minor differences between pixel and vertex shaders */
+    char pshader = shader_is_pshader_version(This->baseShader.hex_version);
+    char prefix = pshader ? 'P' : 'V';
+
+    /* Prototype the subroutines */
+    for (i = 0; i < This->baseShader.limits.label; i++) {
+        if (reg_maps->labels[i])
+            shader_addline(buffer, "void subroutine%u();\n", i);
+    }
+
+    /* Declare the constants (aka uniforms) */
+    if (This->baseShader.limits.constant_float > 0) {
+        unsigned max_constantsF = min(This->baseShader.limits.constant_float, 
+                (pshader ? GL_LIMITS(pshader_constantsF) : GL_LIMITS(vshader_constantsF)));
+        shader_addline(buffer, "uniform vec4 %cC[%u];\n", prefix, max_constantsF);
+    }
+
+    if (This->baseShader.limits.constant_int > 0)
+        shader_addline(buffer, "uniform ivec4 %cI[%u];\n", prefix, This->baseShader.limits.constant_int);
+
+    if (This->baseShader.limits.constant_bool > 0)
+        shader_addline(buffer, "uniform bool %cB[%u];\n", prefix, This->baseShader.limits.constant_bool);
+
+    if(!pshader) {
+        shader_addline(buffer, "uniform vec4 posFixup;\n");
+        /* Predeclaration; This function is added at link time based on the pixel shader.
+         * VS 3.0 shaders have an array OUT[] the shader writes to, earlier versions don't have
+         * that. We know the input to the reorder function at vertex shader compile time, so
+         * we can deal with that. The reorder function for a 1.x and 2.x vertex shader can just
+         * read gl_FrontColor. The output depends on the pixel shader. The reorder function for a
+         * 1.x and 2.x pshader or for fixed function will write gl_FrontColor, and for a 3.0 shader
+         * it will write to the varying array. Here we depend on the shader optimizer on sorting that
+         * out. The nvidia driver only does that if the parameter is inout instead of out, hence the
+         * inout.
+         */
+        if(This->baseShader.hex_version >= WINED3DVS_VERSION(3, 0)) {
+            shader_addline(buffer, "void order_ps_input(in vec4[%u]);\n", MAX_REG_OUTPUT);
+        } else {
+            shader_addline(buffer, "void order_ps_input();\n");
+        }
+    } else {
+        IWineD3DPixelShaderImpl *ps_impl = (IWineD3DPixelShaderImpl *) This;
+
+        ps_impl->numbumpenvmatconsts = 0;
+        for(i = 0; i < (sizeof(reg_maps->bumpmat) / sizeof(reg_maps->bumpmat[0])); i++) {
+            if(!reg_maps->bumpmat[i]) {
+                continue;
+            }
+
+            ps_impl->bumpenvmatconst[(int) ps_impl->numbumpenvmatconsts].texunit = i;
+            shader_addline(buffer, "uniform mat2 bumpenvmat%d;\n", i);
+
+            if(reg_maps->luminanceparams) {
+                ps_impl->luminanceconst[(int) ps_impl->numbumpenvmatconsts].texunit = i;
+                shader_addline(buffer, "uniform float luminancescale%d;\n", i);
+                shader_addline(buffer, "uniform float luminanceoffset%d;\n", i);
+                extra_constants_needed++;
+            } else {
+                ps_impl->luminanceconst[(int) ps_impl->numbumpenvmatconsts].texunit = -1;
+            }
+
+            extra_constants_needed++;
+            ps_impl->numbumpenvmatconsts++;
+        }
+
+        if(device->stateBlock->renderState[WINED3DRS_SRGBWRITEENABLE]) {
+            shader_addline(buffer, "const vec4 srgb_mul_low = vec4(%f, %f, %f, %f);\n",
+                            srgb_mul_low, srgb_mul_low, srgb_mul_low, srgb_mul_low);
+            shader_addline(buffer, "const vec4 srgb_comparison = vec4(%f, %f, %f, %f);\n",
+                            srgb_cmp, srgb_cmp, srgb_cmp, srgb_cmp);
+        }
+        if(reg_maps->vpos || reg_maps->usesdsy) {
+            if(This->baseShader.limits.constant_float + extra_constants_needed + 1 < GL_LIMITS(pshader_constantsF)) {
+                shader_addline(buffer, "uniform vec4 ycorrection;\n");
+                ((IWineD3DPixelShaderImpl *) This)->vpos_uniform = 1;
+                extra_constants_needed++;
+            } else {
+                /* This happens because we do not have proper tracking of the constant registers that are
+                 * actually used, only the max limit of the shader version
+                 */
+                FIXME("Cannot find a free uniform for vpos correction params\n");
+                shader_addline(buffer, "const vec4 ycorrection = vec4(%f, %f, 0.0, 0.0);\n",
+                               device->render_offscreen ? 0.0 : ((IWineD3DSurfaceImpl *) device->render_targets[0])->currentDesc.Height,
+                               device->render_offscreen ? 1.0 : -1.0);
+            }
+            shader_addline(buffer, "vec4 vpos;\n");
+        }
+    }
+
+    /* Declare texture samplers */ 
+    for (i = 0; i < This->baseShader.limits.sampler; i++) {
+        if (reg_maps->samplers[i]) {
+
+            DWORD stype = reg_maps->samplers[i] & WINED3DSP_TEXTURETYPE_MASK;
+            switch (stype) {
+
+                case WINED3DSTT_1D:
+                    shader_addline(buffer, "uniform sampler1D %csampler%u;\n", prefix, i);
+                    break;
+                case WINED3DSTT_2D:
+                    if(device->stateBlock->textures[i] &&
+                       IWineD3DBaseTexture_GetTextureDimensions(device->stateBlock->textures[i]) == GL_TEXTURE_RECTANGLE_ARB) {
+                        shader_addline(buffer, "uniform sampler2DRect %csampler%u;\n", prefix, i);
+                    } else {
+                        shader_addline(buffer, "uniform sampler2D %csampler%u;\n", prefix, i);
+                    }
+                    break;
+                case WINED3DSTT_CUBE:
+                    shader_addline(buffer, "uniform samplerCube %csampler%u;\n", prefix, i);
+                    break;
+                case WINED3DSTT_VOLUME:
+                    shader_addline(buffer, "uniform sampler3D %csampler%u;\n", prefix, i);
+                    break;
+                default:
+                    shader_addline(buffer, "uniform unsupported_sampler %csampler%u;\n", prefix, i);
+                    FIXME("Unrecognized sampler type: %#x\n", stype);
+                    break;
+            }
+        }
+    }
+    
+    /* Declare address variables */
+    for (i = 0; i < This->baseShader.limits.address; i++) {
+        if (reg_maps->address[i])
+            shader_addline(buffer, "ivec4 A%d;\n", i);
+    }
+
+    /* Declare texture coordinate temporaries and initialize them */
+    for (i = 0; i < This->baseShader.limits.texcoord; i++) {
+        if (reg_maps->texcoord[i]) 
+            shader_addline(buffer, "vec4 T%u = gl_TexCoord[%u];\n", i, i);
+    }
+
+    /* Declare input register varyings. Only pixel shader, vertex shaders have that declared in the
+     * helper function shader that is linked in at link time
+     */
+    if(pshader && This->baseShader.hex_version >= WINED3DPS_VERSION(3, 0)) {
+        if(use_vs(device)) {
+            shader_addline(buffer, "varying vec4 IN[%u];\n", GL_LIMITS(glsl_varyings) / 4);
+        } else {
+            /* TODO: Write a replacement shader for the fixed function vertex pipeline, so this isn't needed.
+             * For fixed function vertex processing + 3.0 pixel shader we need a separate function in the
+             * pixel shader that reads the fixed function color into the packed input registers.
+             */
+            shader_addline(buffer, "vec4 IN[%u];\n", GL_LIMITS(glsl_varyings) / 4);
+        }
+    }
+
+    /* Declare output register temporaries */
+    if(This->baseShader.limits.packed_output) {
+        shader_addline(buffer, "vec4 OUT[%u];\n", This->baseShader.limits.packed_output);
+    }
+
+    /* Declare temporary variables */
+    for(i = 0; i < This->baseShader.limits.temporary; i++) {
+        if (reg_maps->temporary[i])
+            shader_addline(buffer, "vec4 R%u;\n", i);
+    }
+
+    /* Declare attributes */
+    for (i = 0; i < This->baseShader.limits.attributes; i++) {
+        if (reg_maps->attributes[i])
+            shader_addline(buffer, "attribute vec4 attrib%i;\n", i);
+    }
+
+    /* Declare loop registers aLx */
+    for (i = 0; i < reg_maps->loop_depth; i++) {
+        shader_addline(buffer, "int aL%u;\n", i);
+        shader_addline(buffer, "int tmpInt%u;\n", i);
+    }
+
+    /* Temporary variables for matrix operations */
+    shader_addline(buffer, "vec4 tmp0;\n");
+    shader_addline(buffer, "vec4 tmp1;\n");
+
+    /* Local constants use a different name so they can be loaded once at shader link time
+     * They can't be hardcoded into the shader text via LC = {x, y, z, w}; because the
+     * float -> string conversion can cause precision loss.
+     */
+    if(!This->baseShader.load_local_constsF) {
+        LIST_FOR_EACH_ENTRY(lconst, &This->baseShader.constantsF, local_constant, entry) {
+            shader_addline(buffer, "uniform vec4 %cLC%u;\n", prefix, lconst->idx);
+        }
+    }
+
+    /* Start the main program */
+    shader_addline(buffer, "void main() {\n");
+    if(pshader && reg_maps->vpos) {
+        /* DirectX apps expect integer values, while OpenGL drivers add approximately 0.5. This causes
+         * off-by-one problems as spotted by the vPos d3d9 visual test. Unfortunately the ATI cards do
+         * not add exactly 0.5, but rather something like 0.49999999 or 0.50000001, which still causes
+         * precision troubles when we just substract 0.5.
+         *
+         * To deal with that just floor() the position. This will eliminate the fraction on all cards.
+         *
+         * TODO: Test how that behaves with multisampling once we can enable multisampling in winex11.
+         *
+         * An advantage of floor is that it works even if the driver doesn't add 1/2. It is somewhat
+         * questionable if 1.5, 2.5, ... are the proper values to return in gl_FragCoord, even though
+         * coordinates specify the pixel centers instead of the pixel corners. This code will behave
+         * correctly on drivers that returns integer values.
+         */
+        shader_addline(buffer, "vpos = floor(vec4(0, ycorrection[0], 0, 0) + gl_FragCoord * vec4(1, ycorrection[1], 1, 1));\n");
+    }
+}
+
+/*****************************************************************************
+ * Functions to generate GLSL strings from DirectX Shader bytecode begin here.
+ *
+ * For more information, see http://wiki.winehq.org/DirectX-Shaders
+ ****************************************************************************/
+
+/* Prototypes */
+static void shader_glsl_add_src_param(const SHADER_OPCODE_ARG *arg, const DWORD param,
+        const DWORD addr_token, DWORD mask, glsl_src_param_t *src_param);
+
+/** Used for opcode modifiers - They multiply the result by the specified amount */
+static const char * const shift_glsl_tab[] = {
+    "",           /*  0 (none) */ 
+    "2.0 * ",     /*  1 (x2)   */ 
+    "4.0 * ",     /*  2 (x4)   */ 
+    "8.0 * ",     /*  3 (x8)   */ 
+    "16.0 * ",    /*  4 (x16)  */ 
+    "32.0 * ",    /*  5 (x32)  */ 
+    "",           /*  6 (x64)  */ 
+    "",           /*  7 (x128) */ 
+    "",           /*  8 (d256) */ 
+    "",           /*  9 (d128) */ 
+    "",           /* 10 (d64)  */ 
+    "",           /* 11 (d32)  */ 
+    "0.0625 * ",  /* 12 (d16)  */ 
+    "0.125 * ",   /* 13 (d8)   */ 
+    "0.25 * ",    /* 14 (d4)   */ 
+    "0.5 * "      /* 15 (d2)   */ 
+};
+
+/* Generate a GLSL parameter that does the input modifier computation and return the input register/mask to use */
+static void shader_glsl_gen_modifier (
+    const DWORD instr,
+    const char *in_reg,
+    const char *in_regswizzle,
+    char *out_str) {
+
+    out_str[0] = 0;
+    
+    if (instr == WINED3DSIO_TEXKILL)
+        return;
+
+    switch (instr & WINED3DSP_SRCMOD_MASK) {
+    case WINED3DSPSM_DZ: /* Need to handle this in the instructions itself (texld & texcrd). */
+    case WINED3DSPSM_DW:
+    case WINED3DSPSM_NONE:
+        sprintf(out_str, "%s%s", in_reg, in_regswizzle);
+        break;
+    case WINED3DSPSM_NEG:
+        sprintf(out_str, "-%s%s", in_reg, in_regswizzle);
+        break;
+    case WINED3DSPSM_NOT:
+        sprintf(out_str, "!%s%s", in_reg, in_regswizzle);
+        break;
+    case WINED3DSPSM_BIAS:
+        sprintf(out_str, "(%s%s - vec4(0.5)%s)", in_reg, in_regswizzle, in_regswizzle);
+        break;
+    case WINED3DSPSM_BIASNEG:
+        sprintf(out_str, "-(%s%s - vec4(0.5)%s)", in_reg, in_regswizzle, in_regswizzle);
+        break;
+    case WINED3DSPSM_SIGN:
+        sprintf(out_str, "(2.0 * (%s%s - 0.5))", in_reg, in_regswizzle);
+        break;
+    case WINED3DSPSM_SIGNNEG:
+        sprintf(out_str, "-(2.0 * (%s%s - 0.5))", in_reg, in_regswizzle);
+        break;
+    case WINED3DSPSM_COMP:
+        sprintf(out_str, "(1.0 - %s%s)", in_reg, in_regswizzle);
+        break;
+    case WINED3DSPSM_X2:
+        sprintf(out_str, "(2.0 * %s%s)", in_reg, in_regswizzle);
+        break;
+    case WINED3DSPSM_X2NEG:
+        sprintf(out_str, "-(2.0 * %s%s)", in_reg, in_regswizzle);
+        break;
+    case WINED3DSPSM_ABS:
+        sprintf(out_str, "abs(%s%s)", in_reg, in_regswizzle);
+        break;
+    case WINED3DSPSM_ABSNEG:
+        sprintf(out_str, "-abs(%s%s)", in_reg, in_regswizzle);
+        break;
+    default:
+        FIXME("Unhandled modifier %u\n", (instr & WINED3DSP_SRCMOD_MASK));
+        sprintf(out_str, "%s%s", in_reg, in_regswizzle);
+    }
+}
+
+/** Writes the GLSL variable name that corresponds to the register that the
+ * DX opcode parameter is trying to access */
+static void shader_glsl_get_register_name(const DWORD param, const DWORD addr_token,
+        char *regstr, BOOL *is_color, const SHADER_OPCODE_ARG *arg)
+{
+    /* oPos, oFog and oPts in D3D */
+    static const char * const hwrastout_reg_names[] = { "gl_Position", "gl_FogFragCoord", "gl_PointSize" };
+
+    DWORD reg = param & WINED3DSP_REGNUM_MASK;
+    DWORD regtype = shader_get_regtype(param);
+    IWineD3DBaseShaderImpl* This = (IWineD3DBaseShaderImpl*) arg->shader;
+    IWineD3DDeviceImpl* deviceImpl = (IWineD3DDeviceImpl*) This->baseShader.device;
+    const WineD3D_GL_Info* gl_info = &deviceImpl->adapter->gl_info;
+
+    char pshader = shader_is_pshader_version(This->baseShader.hex_version);
+    char tmpStr[150];
+
+    *is_color = FALSE;   
+ 
+    switch (regtype) {
+    case WINED3DSPR_TEMP:
+        sprintf(tmpStr, "R%u", reg);
+    break;
+    case WINED3DSPR_INPUT:
+        if (pshader) {
+            /* Pixel shaders >= 3.0 */
+            if (WINED3DSHADER_VERSION_MAJOR(This->baseShader.hex_version) >= 3) {
+                DWORD in_count = GL_LIMITS(glsl_varyings) / 4;
+
+                if (param & WINED3DSHADER_ADDRMODE_RELATIVE) {
+                    glsl_src_param_t rel_param;
+                    shader_glsl_add_src_param(arg, addr_token, 0, WINED3DSP_WRITEMASK_0, &rel_param);
+
+                    /* Removing a + 0 would be an obvious optimization, but macos doesn't see the NOP
+                     * operation there
+                     */
+                    if(((IWineD3DPixelShaderImpl *) This)->input_reg_map[reg]) {
+                        if (((IWineD3DPixelShaderImpl *)This)->declared_in_count > in_count) {
+                            sprintf(tmpStr, "((%s + %u) > %d ? (%s + %u) > %d ? gl_SecondaryColor : gl_Color : IN[%s + %u])",
+                                    rel_param.param_str, ((IWineD3DPixelShaderImpl *)This)->input_reg_map[reg], in_count - 1,
+                                    rel_param.param_str, ((IWineD3DPixelShaderImpl *)This)->input_reg_map[reg], in_count,
+                                    rel_param.param_str, ((IWineD3DPixelShaderImpl *)This)->input_reg_map[reg]);
+                        } else {
+                            sprintf(tmpStr, "IN[%s + %u]", rel_param.param_str, ((IWineD3DPixelShaderImpl *)This)->input_reg_map[reg]);
+                        }
+                    } else {
+                        if (((IWineD3DPixelShaderImpl *)This)->declared_in_count > in_count) {
+                            sprintf(tmpStr, "((%s) > %d ? (%s) > %d ? gl_SecondaryColor : gl_Color : IN[%s])",
+                                    rel_param.param_str, in_count - 1,
+                                    rel_param.param_str, in_count,
+                                    rel_param.param_str);
+                        } else {
+                            sprintf(tmpStr, "IN[%s]", rel_param.param_str);
+                        }
+                    }
+                } else {
+                    DWORD idx = ((IWineD3DPixelShaderImpl *) This)->input_reg_map[reg];
+                    if (idx == in_count) {
+                        sprintf(tmpStr, "gl_Color");
+                    } else if (idx == in_count + 1) {
+                        sprintf(tmpStr, "gl_SecondaryColor");
+                    } else {
+                        sprintf(tmpStr, "IN[%u]", idx);
+                    }
+                }
+            } else {
+                if (reg==0)
+                    strcpy(tmpStr, "gl_Color");
+                else
+                    strcpy(tmpStr, "gl_SecondaryColor");
+            }
+        } else {
+            if (vshader_input_is_color((IWineD3DVertexShader*) This, reg))
+               *is_color = TRUE;
+            sprintf(tmpStr, "attrib%u", reg);
+        } 
+        break;
+    case WINED3DSPR_CONST:
+    {
+        const char prefix = pshader? 'P':'V';
+
+        /* Relative addressing */
+        if (param & WINED3DSHADER_ADDRMODE_RELATIVE) {
+
+           /* Relative addressing on shaders 2.0+ have a relative address token, 
+            * prior to that, it was hard-coded as "A0.x" because there's only 1 register */
+           if (WINED3DSHADER_VERSION_MAJOR(This->baseShader.hex_version) >= 2)  {
+               glsl_src_param_t rel_param;
+               shader_glsl_add_src_param(arg, addr_token, 0, WINED3DSP_WRITEMASK_0, &rel_param);
+               if(reg) {
+                   sprintf(tmpStr, "%cC[%s + %u]", prefix, rel_param.param_str, reg);
+               } else {
+                   sprintf(tmpStr, "%cC[%s]", prefix, rel_param.param_str);
+               }
+           } else {
+               if(reg) {
+                   sprintf(tmpStr, "%cC[A0.x + %u]", prefix, reg);
+               } else {
+                   sprintf(tmpStr, "%cC[A0.x]", prefix);
+               }
+           }
+
+        } else {
+            if(shader_constant_is_local(This, reg)) {
+                sprintf(tmpStr, "%cLC%u", prefix, reg);
+            } else {
+                sprintf(tmpStr, "%cC[%u]", prefix, reg);
+            }
+        }
+
+        break;
+    }
+    case WINED3DSPR_CONSTINT:
+        if (pshader)
+            sprintf(tmpStr, "PI[%u]", reg);
+        else
+            sprintf(tmpStr, "VI[%u]", reg);
+        break;
+    case WINED3DSPR_CONSTBOOL:
+        if (pshader)
+            sprintf(tmpStr, "PB[%u]", reg);
+        else
+            sprintf(tmpStr, "VB[%u]", reg);
+        break;
+    case WINED3DSPR_TEXTURE: /* case WINED3DSPR_ADDR: */
+        if (pshader) {
+            sprintf(tmpStr, "T%u", reg);
+        } else {
+            sprintf(tmpStr, "A%u", reg);
+        }
+    break;
+    case WINED3DSPR_LOOP:
+        sprintf(tmpStr, "aL%u", This->baseShader.cur_loop_regno - 1);
+    break;
+    case WINED3DSPR_SAMPLER:
+        if (pshader)
+            sprintf(tmpStr, "Psampler%u", reg);
+        else
+            sprintf(tmpStr, "Vsampler%u", reg);
+    break;
+    case WINED3DSPR_COLOROUT:
+        if (reg >= GL_LIMITS(buffers)) {
+            WARN("Write to render target %u, only %d supported\n", reg, 4);
+        }
+        if (GL_SUPPORT(ARB_DRAW_BUFFERS)) {
+            sprintf(tmpStr, "gl_FragData[%u]", reg);
+        } else { /* On older cards with GLSL support like the GeforceFX there's only one buffer. */
+            sprintf(tmpStr, "gl_FragColor");
+        }
+    break;
+    case WINED3DSPR_RASTOUT:
+        sprintf(tmpStr, "%s", hwrastout_reg_names[reg]);
+    break;
+    case WINED3DSPR_DEPTHOUT:
+        sprintf(tmpStr, "gl_FragDepth");
+    break;
+    case WINED3DSPR_ATTROUT:
+        if (reg == 0) {
+            sprintf(tmpStr, "gl_FrontColor");
+        } else {
+            sprintf(tmpStr, "gl_FrontSecondaryColor");
+        }
+    break;
+    case WINED3DSPR_TEXCRDOUT:
+        /* Vertex shaders >= 3.0: WINED3DSPR_OUTPUT */
+        if (WINED3DSHADER_VERSION_MAJOR(This->baseShader.hex_version) >= 3)
+            sprintf(tmpStr, "OUT[%u]", reg);
+        else
+            sprintf(tmpStr, "gl_TexCoord[%u]", reg);
+    break;
+    case WINED3DSPR_MISCTYPE:
+        if (reg == 0) {
+            /* vPos */
+            sprintf(tmpStr, "vpos");
+        } else if (reg == 1){
+            /* Note that gl_FrontFacing is a bool, while vFace is
+             * a float for which the sign determines front/back
+             */
+            sprintf(tmpStr, "(gl_FrontFacing ? 1.0 : -1.0)");
+        } else {
+            FIXME("Unhandled misctype register %d\n", reg);
+            sprintf(tmpStr, "unrecognized_register");
+        }
+        break;
+    default:
+        FIXME("Unhandled register name Type(%d)\n", regtype);
+        sprintf(tmpStr, "unrecognized_register");
+    break;
+    }
+
+    strcat(regstr, tmpStr);
+}
+
+/* Get the GLSL write mask for the destination register */
+static DWORD shader_glsl_get_write_mask(const DWORD param, char *write_mask) {
+    char *ptr = write_mask;
+    DWORD mask = param & WINED3DSP_WRITEMASK_ALL;
+
+    if (shader_is_scalar(param)) {
+        mask = WINED3DSP_WRITEMASK_0;
+    } else {
+        *ptr++ = '.';
+        if (param & WINED3DSP_WRITEMASK_0) *ptr++ = 'x';
+        if (param & WINED3DSP_WRITEMASK_1) *ptr++ = 'y';
+        if (param & WINED3DSP_WRITEMASK_2) *ptr++ = 'z';
+        if (param & WINED3DSP_WRITEMASK_3) *ptr++ = 'w';
+    }
+
+    *ptr = '\0';
+
+    return mask;
+}
+
+static unsigned int shader_glsl_get_write_mask_size(DWORD write_mask) {
+    unsigned int size = 0;
+
+    if (write_mask & WINED3DSP_WRITEMASK_0) ++size;
+    if (write_mask & WINED3DSP_WRITEMASK_1) ++size;
+    if (write_mask & WINED3DSP_WRITEMASK_2) ++size;
+    if (write_mask & WINED3DSP_WRITEMASK_3) ++size;
+
+    return size;
+}
+
+static void shader_glsl_get_swizzle(const DWORD param, BOOL fixup, DWORD mask, char *swizzle_str) {
+    /* For registers of type WINED3DDECLTYPE_D3DCOLOR, data is stored as "bgra",
+     * but addressed as "rgba". To fix this we need to swap the register's x
+     * and z components. */
+    DWORD swizzle = (param & WINED3DSP_SWIZZLE_MASK) >> WINED3DSP_SWIZZLE_SHIFT;
+    const char *swizzle_chars = fixup ? "zyxw" : "xyzw";
+    char *ptr = swizzle_str;
+
+    if (!shader_is_scalar(param)) {
+        *ptr++ = '.';
+        /* swizzle bits fields: wwzzyyxx */
+        if (mask & WINED3DSP_WRITEMASK_0) *ptr++ = swizzle_chars[swizzle & 0x03];
+        if (mask & WINED3DSP_WRITEMASK_1) *ptr++ = swizzle_chars[(swizzle >> 2) & 0x03];
+        if (mask & WINED3DSP_WRITEMASK_2) *ptr++ = swizzle_chars[(swizzle >> 4) & 0x03];
+        if (mask & WINED3DSP_WRITEMASK_3) *ptr++ = swizzle_chars[(swizzle >> 6) & 0x03];
+    }
+
+    *ptr = '\0';
+}
+
+/* From a given parameter token, generate the corresponding GLSL string.
+ * Also, return the actual register name and swizzle in case the
+ * caller needs this information as well. */
+static void shader_glsl_add_src_param(const SHADER_OPCODE_ARG *arg, const DWORD param,
+        const DWORD addr_token, DWORD mask, glsl_src_param_t *src_param)
+{
+    BOOL is_color = FALSE;
+    char swizzle_str[6];
+
+    src_param->reg_name[0] = '\0';
+    src_param->param_str[0] = '\0';
+    swizzle_str[0] = '\0';
+
+    shader_glsl_get_register_name(param, addr_token, src_param->reg_name, &is_color, arg);
+
+    shader_glsl_get_swizzle(param, is_color, mask, swizzle_str);
+    shader_glsl_gen_modifier(param, src_param->reg_name, swizzle_str, src_param->param_str);
+}
+
+/* From a given parameter token, generate the corresponding GLSL string.
+ * Also, return the actual register name and swizzle in case the
+ * caller needs this information as well. */
+static DWORD shader_glsl_add_dst_param(const SHADER_OPCODE_ARG* arg, const DWORD param,
+        const DWORD addr_token, glsl_dst_param_t *dst_param)
+{
+    BOOL is_color = FALSE;
+
+    dst_param->mask_str[0] = '\0';
+    dst_param->reg_name[0] = '\0';
+
+    shader_glsl_get_register_name(param, addr_token, dst_param->reg_name, &is_color, arg);
+    return shader_glsl_get_write_mask(param, dst_param->mask_str);
+}
+
+/* Append the destination part of the instruction to the buffer, return the effective write mask */
+static DWORD shader_glsl_append_dst_ext(SHADER_BUFFER *buffer, const SHADER_OPCODE_ARG *arg, const DWORD param)
+{
+    glsl_dst_param_t dst_param;
+    DWORD mask;
+    int shift;
+
+    mask = shader_glsl_add_dst_param(arg, param, arg->dst_addr, &dst_param);
+
+    if(mask) {
+        shift = (param & WINED3DSP_DSTSHIFT_MASK) >> WINED3DSP_DSTSHIFT_SHIFT;
+        shader_addline(buffer, "%s%s = %s(", dst_param.reg_name, dst_param.mask_str, shift_glsl_tab[shift]);
+    }
+
+    return mask;
+}
+
+/* Append the destination part of the instruction to the buffer, return the effective write mask */
+static DWORD shader_glsl_append_dst(SHADER_BUFFER *buffer, const SHADER_OPCODE_ARG *arg)
+{
+    return shader_glsl_append_dst_ext(buffer, arg, arg->dst);
+}
+
+/** Process GLSL instruction modifiers */
+void shader_glsl_add_instruction_modifiers(const SHADER_OPCODE_ARG* arg)
+{
+    DWORD mask = arg->dst & WINED3DSP_DSTMOD_MASK;
+ 
+    if (arg->opcode->dst_token && mask != 0) {
+        glsl_dst_param_t dst_param;
+
+        shader_glsl_add_dst_param(arg, arg->dst, 0, &dst_param);
+
+        if (mask & WINED3DSPDM_SATURATE) {
+            /* _SAT means to clamp the value of the register to between 0 and 1 */
+            shader_addline(arg->buffer, "%s%s = clamp(%s%s, 0.0, 1.0);\n", dst_param.reg_name,
+                    dst_param.mask_str, dst_param.reg_name, dst_param.mask_str);
+        }
+        if (mask & WINED3DSPDM_MSAMPCENTROID) {
+            FIXME("_centroid modifier not handled\n");
+        }
+        if (mask & WINED3DSPDM_PARTIALPRECISION) {
+            /* MSDN says this modifier can be safely ignored, so that's what we'll do. */
+        }
+    }
+}
+
+static inline const char* shader_get_comp_op(
+    const DWORD opcode) {
+
+    DWORD op = (opcode & INST_CONTROLS_MASK) >> INST_CONTROLS_SHIFT;
+    switch (op) {
+        case COMPARISON_GT: return ">";
+        case COMPARISON_EQ: return "==";
+        case COMPARISON_GE: return ">=";
+        case COMPARISON_LT: return "<";
+        case COMPARISON_NE: return "!=";
+        case COMPARISON_LE: return "<=";
+        default:
+            FIXME("Unrecognized comparison value: %u\n", op);
+            return "(\?\?)";
+    }
+}
+
+static void shader_glsl_get_sample_function(DWORD sampler_type, BOOL projected, BOOL texrect, glsl_sample_function_t *sample_function) {
+    /* Note that there's no such thing as a projected cube texture. */
+    switch(sampler_type) {
+        case WINED3DSTT_1D:
+            sample_function->name = projected ? "texture1DProj" : "texture1D";
+            sample_function->coord_mask = WINED3DSP_WRITEMASK_0;
+            break;
+        case WINED3DSTT_2D:
+            if(texrect) {
+                sample_function->name = projected ? "texture2DRectProj" : "texture2DRect";
+            } else {
+                sample_function->name = projected ? "texture2DProj" : "texture2D";
+            }
+            sample_function->coord_mask = WINED3DSP_WRITEMASK_0 | WINED3DSP_WRITEMASK_1;
+            break;
+        case WINED3DSTT_CUBE:
+            sample_function->name = "textureCube";
+            sample_function->coord_mask = WINED3DSP_WRITEMASK_0 | WINED3DSP_WRITEMASK_1 | WINED3DSP_WRITEMASK_2;
+            break;
+        case WINED3DSTT_VOLUME:
+            sample_function->name = projected ? "texture3DProj" : "texture3D";
+            sample_function->coord_mask = WINED3DSP_WRITEMASK_0 | WINED3DSP_WRITEMASK_1 | WINED3DSP_WRITEMASK_2;
+            break;
+        default:
+            sample_function->name = "";
+            sample_function->coord_mask = 0;
+            FIXME("Unrecognized sampler type: %#x;\n", sampler_type);
+            break;
+    }
+}
+
+static void shader_glsl_append_fixup_arg(char *arguments, const char *reg_name,
+        BOOL sign_fixup, enum fixup_channel_source channel_source)
+{
+    switch(channel_source)
+    {
+        case CHANNEL_SOURCE_ZERO:
+            strcat(arguments, "0.0");
+            break;
+
+        case CHANNEL_SOURCE_ONE:
+            strcat(arguments, "1.0");
+            break;
+
+        case CHANNEL_SOURCE_X:
+            strcat(arguments, reg_name);
+            strcat(arguments, ".x");
+            break;
+
+        case CHANNEL_SOURCE_Y:
+            strcat(arguments, reg_name);
+            strcat(arguments, ".y");
+            break;
+
+        case CHANNEL_SOURCE_Z:
+            strcat(arguments, reg_name);
+            strcat(arguments, ".z");
+            break;
+
+        case CHANNEL_SOURCE_W:
+            strcat(arguments, reg_name);
+            strcat(arguments, ".w");
+            break;
+
+        default:
+            FIXME("Unhandled channel source %#x\n", channel_source);
+            strcat(arguments, "undefined");
+            break;
+    }
+
+    if (sign_fixup) strcat(arguments, " * 2.0 - 1.0");
+}
+
+static void shader_glsl_color_correction(const struct SHADER_OPCODE_ARG *arg, struct color_fixup_desc fixup)
+{
+    unsigned int mask_size, remaining;
+    glsl_dst_param_t dst_param;
+    char arguments[256];
+    DWORD mask;
+    BOOL dummy;
+
+    mask = 0;
+    if (fixup.x_sign_fixup || fixup.x_source != CHANNEL_SOURCE_X) mask |= WINED3DSP_WRITEMASK_0;
+    if (fixup.y_sign_fixup || fixup.y_source != CHANNEL_SOURCE_Y) mask |= WINED3DSP_WRITEMASK_1;
+    if (fixup.z_sign_fixup || fixup.z_source != CHANNEL_SOURCE_Z) mask |= WINED3DSP_WRITEMASK_2;
+    if (fixup.w_sign_fixup || fixup.w_source != CHANNEL_SOURCE_W) mask |= WINED3DSP_WRITEMASK_3;
+    mask &= arg->dst;
+
+    if (!mask) return; /* Nothing to do */
+
+    if (is_yuv_fixup(fixup))
+    {
+        enum yuv_fixup yuv_fixup = get_yuv_fixup(fixup);
+        FIXME("YUV fixup (%#x) not supported\n", yuv_fixup);
+        return;
+    }
+
+    mask_size = shader_glsl_get_write_mask_size(mask);
+
+    dst_param.mask_str[0] = '\0';
+    shader_glsl_get_write_mask(mask, dst_param.mask_str);
+
+    dst_param.reg_name[0] = '\0';
+    shader_glsl_get_register_name(arg->dst, arg->dst_addr, dst_param.reg_name, &dummy, arg);
+
+    arguments[0] = '\0';
+    remaining = mask_size;
+    if (mask & WINED3DSP_WRITEMASK_0)
+    {
+        shader_glsl_append_fixup_arg(arguments, dst_param.reg_name, fixup.x_sign_fixup, fixup.x_source);
+        if (--remaining) strcat(arguments, ", ");
+    }
+    if (mask & WINED3DSP_WRITEMASK_1)
+    {
+        shader_glsl_append_fixup_arg(arguments, dst_param.reg_name, fixup.y_sign_fixup, fixup.y_source);
+        if (--remaining) strcat(arguments, ", ");
+    }
+    if (mask & WINED3DSP_WRITEMASK_2)
+    {
+        shader_glsl_append_fixup_arg(arguments, dst_param.reg_name, fixup.z_sign_fixup, fixup.z_source);
+        if (--remaining) strcat(arguments, ", ");
+    }
+    if (mask & WINED3DSP_WRITEMASK_3)
+    {
+        shader_glsl_append_fixup_arg(arguments, dst_param.reg_name, fixup.w_sign_fixup, fixup.w_source);
+        if (--remaining) strcat(arguments, ", ");
+    }
+
+    if (mask_size > 1)
+    {
+        shader_addline(arg->buffer, "%s%s = vec%u(%s);\n",
+                dst_param.reg_name, dst_param.mask_str, mask_size, arguments);
+    }
+    else
+    {
+        shader_addline(arg->buffer, "%s%s = %s;\n", dst_param.reg_name, dst_param.mask_str, arguments);
+    }
+}
+
+/*****************************************************************************
+ * 
+ * Begin processing individual instruction opcodes
+ * 
+ ****************************************************************************/
+
+/* Generate GLSL arithmetic functions (dst = src1 + src2) */
+static void shader_glsl_arith(const SHADER_OPCODE_ARG *arg)
+{
+    CONST SHADER_OPCODE* curOpcode = arg->opcode;
+    SHADER_BUFFER* buffer = arg->buffer;
+    glsl_src_param_t src0_param;
+    glsl_src_param_t src1_param;
+    DWORD write_mask;
+    char op;
+
+    /* Determine the GLSL operator to use based on the opcode */
+    switch (curOpcode->opcode) {
+        case WINED3DSIO_MUL: op = '*'; break;
+        case WINED3DSIO_ADD: op = '+'; break;
+        case WINED3DSIO_SUB: op = '-'; break;
+        default:
+            op = ' ';
+            FIXME("Opcode %s not yet handled in GLSL\n", curOpcode->name);
+            break;
+    }
+
+    write_mask = shader_glsl_append_dst(buffer, arg);
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], write_mask, &src0_param);
+    shader_glsl_add_src_param(arg, arg->src[1], arg->src_addr[1], write_mask, &src1_param);
+    shader_addline(buffer, "%s %c %s);\n", src0_param.param_str, op, src1_param.param_str);
+}
+
+/* Process the WINED3DSIO_MOV opcode using GLSL (dst = src) */
+static void shader_glsl_mov(const SHADER_OPCODE_ARG *arg)
+{
+    IWineD3DBaseShaderImpl* shader = (IWineD3DBaseShaderImpl*) arg->shader;
+    SHADER_BUFFER* buffer = arg->buffer;
+    glsl_src_param_t src0_param;
+    DWORD write_mask;
+
+    write_mask = shader_glsl_append_dst(buffer, arg);
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], write_mask, &src0_param);
+
+    /* In vs_1_1 WINED3DSIO_MOV can write to the address register. In later
+     * shader versions WINED3DSIO_MOVA is used for this. */
+    if ((WINED3DSHADER_VERSION_MAJOR(shader->baseShader.hex_version) == 1 &&
+            !shader_is_pshader_version(shader->baseShader.hex_version) &&
+            shader_get_regtype(arg->dst) == WINED3DSPR_ADDR)) {
+        /* This is a simple floor() */
+        unsigned int mask_size = shader_glsl_get_write_mask_size(write_mask);
+        if (mask_size > 1) {
+            shader_addline(buffer, "ivec%d(floor(%s)));\n", mask_size, src0_param.param_str);
+        } else {
+            shader_addline(buffer, "int(floor(%s)));\n", src0_param.param_str);
+        }
+    } else if(arg->opcode->opcode == WINED3DSIO_MOVA) {
+        /* We need to *round* to the nearest int here. */
+        unsigned int mask_size = shader_glsl_get_write_mask_size(write_mask);
+        if (mask_size > 1) {
+            shader_addline(buffer, "ivec%d(floor(abs(%s) + vec%d(0.5)) * sign(%s)));\n", mask_size, src0_param.param_str, mask_size, src0_param.param_str);
+        } else {
+            shader_addline(buffer, "int(floor(abs(%s) + 0.5) * sign(%s)));\n", src0_param.param_str, src0_param.param_str);
+        }
+    } else {
+        shader_addline(buffer, "%s);\n", src0_param.param_str);
+    }
+}
+
+/* Process the dot product operators DP3 and DP4 in GLSL (dst = dot(src0, src1)) */
+static void shader_glsl_dot(const SHADER_OPCODE_ARG *arg)
+{
+    CONST SHADER_OPCODE* curOpcode = arg->opcode;
+    SHADER_BUFFER* buffer = arg->buffer;
+    glsl_src_param_t src0_param;
+    glsl_src_param_t src1_param;
+    DWORD dst_write_mask, src_write_mask;
+    unsigned int dst_size = 0;
+
+    dst_write_mask = shader_glsl_append_dst(buffer, arg);
+    dst_size = shader_glsl_get_write_mask_size(dst_write_mask);
+
+    /* dp3 works on vec3, dp4 on vec4 */
+    if (curOpcode->opcode == WINED3DSIO_DP4) {
+        src_write_mask = WINED3DSP_WRITEMASK_ALL;
+    } else {
+        src_write_mask = WINED3DSP_WRITEMASK_0 | WINED3DSP_WRITEMASK_1 | WINED3DSP_WRITEMASK_2;
+    }
+
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], src_write_mask, &src0_param);
+    shader_glsl_add_src_param(arg, arg->src[1], arg->src_addr[1], src_write_mask, &src1_param);
+
+    if (dst_size > 1) {
+        shader_addline(buffer, "vec%d(dot(%s, %s)));\n", dst_size, src0_param.param_str, src1_param.param_str);
+    } else {
+        shader_addline(buffer, "dot(%s, %s));\n", src0_param.param_str, src1_param.param_str);
+    }
+}
+
+/* Note that this instruction has some restrictions. The destination write mask
+ * can't contain the w component, and the source swizzles have to be .xyzw */
+static void shader_glsl_cross(const SHADER_OPCODE_ARG *arg)
+{
+    DWORD src_mask = WINED3DSP_WRITEMASK_0 | WINED3DSP_WRITEMASK_1 | WINED3DSP_WRITEMASK_2;
+    glsl_src_param_t src0_param;
+    glsl_src_param_t src1_param;
+    char dst_mask[6];
+
+    shader_glsl_get_write_mask(arg->dst, dst_mask);
+    shader_glsl_append_dst(arg->buffer, arg);
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], src_mask, &src0_param);
+    shader_glsl_add_src_param(arg, arg->src[1], arg->src_addr[1], src_mask, &src1_param);
+    shader_addline(arg->buffer, "cross(%s, %s)%s);\n", src0_param.param_str, src1_param.param_str, dst_mask);
+}
+
+/* Process the WINED3DSIO_POW instruction in GLSL (dst = |src0|^src1)
+ * Src0 and src1 are scalars. Note that D3D uses the absolute of src0, while
+ * GLSL uses the value as-is. */
+static void shader_glsl_pow(const SHADER_OPCODE_ARG *arg)
+{
+    SHADER_BUFFER *buffer = arg->buffer;
+    glsl_src_param_t src0_param;
+    glsl_src_param_t src1_param;
+    DWORD dst_write_mask;
+    unsigned int dst_size;
+
+    dst_write_mask = shader_glsl_append_dst(buffer, arg);
+    dst_size = shader_glsl_get_write_mask_size(dst_write_mask);
+
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_0, &src0_param);
+    shader_glsl_add_src_param(arg, arg->src[1], arg->src_addr[1], WINED3DSP_WRITEMASK_0, &src1_param);
+
+    if (dst_size > 1) {
+        shader_addline(buffer, "vec%d(pow(abs(%s), %s)));\n", dst_size, src0_param.param_str, src1_param.param_str);
+    } else {
+        shader_addline(buffer, "pow(abs(%s), %s));\n", src0_param.param_str, src1_param.param_str);
+    }
+}
+
+/* Process the WINED3DSIO_LOG instruction in GLSL (dst = log2(|src0|))
+ * Src0 is a scalar. Note that D3D uses the absolute of src0, while
+ * GLSL uses the value as-is. */
+static void shader_glsl_log(const SHADER_OPCODE_ARG *arg)
+{
+    SHADER_BUFFER *buffer = arg->buffer;
+    glsl_src_param_t src0_param;
+    DWORD dst_write_mask;
+    unsigned int dst_size;
+
+    dst_write_mask = shader_glsl_append_dst(buffer, arg);
+    dst_size = shader_glsl_get_write_mask_size(dst_write_mask);
+
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_0, &src0_param);
+
+    if (dst_size > 1) {
+        shader_addline(buffer, "vec%d(log2(abs(%s))));\n", dst_size, src0_param.param_str);
+    } else {
+        shader_addline(buffer, "log2(abs(%s)));\n", src0_param.param_str);
+    }
+}
+
+/* Map the opcode 1-to-1 to the GL code (arg->dst = instruction(src0, src1, ...) */
+static void shader_glsl_map2gl(const SHADER_OPCODE_ARG *arg)
+{
+    CONST SHADER_OPCODE* curOpcode = arg->opcode;
+    SHADER_BUFFER* buffer = arg->buffer;
+    glsl_src_param_t src_param;
+    const char *instruction;
+    char arguments[256];
+    DWORD write_mask;
+    unsigned i;
+
+    /* Determine the GLSL function to use based on the opcode */
+    /* TODO: Possibly make this a table for faster lookups */
+    switch (curOpcode->opcode) {
+        case WINED3DSIO_MIN: instruction = "min"; break;
+        case WINED3DSIO_MAX: instruction = "max"; break;
+        case WINED3DSIO_ABS: instruction = "abs"; break;
+        case WINED3DSIO_FRC: instruction = "fract"; break;
+        case WINED3DSIO_NRM: instruction = "normalize"; break;
+        case WINED3DSIO_EXP: instruction = "exp2"; break;
+        case WINED3DSIO_SGN: instruction = "sign"; break;
+        case WINED3DSIO_DSX: instruction = "dFdx"; break;
+        case WINED3DSIO_DSY: instruction = "ycorrection.y * dFdy"; break;
+        default: instruction = "";
+            FIXME("Opcode %s not yet handled in GLSL\n", curOpcode->name);
+            break;
+    }
+
+    write_mask = shader_glsl_append_dst(buffer, arg);
+
+    arguments[0] = '\0';
+    if (curOpcode->num_params > 0) {
+        shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], write_mask, &src_param);
+        strcat(arguments, src_param.param_str);
+        for (i = 2; i < curOpcode->num_params; ++i) {
+            strcat(arguments, ", ");
+            shader_glsl_add_src_param(arg, arg->src[i-1], arg->src_addr[i-1], write_mask, &src_param);
+            strcat(arguments, src_param.param_str);
+        }
+    }
+
+    shader_addline(buffer, "%s(%s));\n", instruction, arguments);
+}
+
+/** Process the WINED3DSIO_EXPP instruction in GLSL:
+ * For shader model 1.x, do the following (and honor the writemask, so use a temporary variable):
+ *   dst.x = 2^(floor(src))
+ *   dst.y = src - floor(src)
+ *   dst.z = 2^src   (partial precision is allowed, but optional)
+ *   dst.w = 1.0;
+ * For 2.0 shaders, just do this (honoring writemask and swizzle):
+ *   dst = 2^src;    (partial precision is allowed, but optional)
+ */
+static void shader_glsl_expp(const SHADER_OPCODE_ARG *arg)
+{
+    IWineD3DBaseShaderImpl *shader = (IWineD3DBaseShaderImpl *)arg->shader;
+    glsl_src_param_t src_param;
+
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_0, &src_param);
+
+    if (shader->baseShader.hex_version < WINED3DPS_VERSION(2,0)) {
+        char dst_mask[6];
+
+        shader_addline(arg->buffer, "tmp0.x = exp2(floor(%s));\n", src_param.param_str);
+        shader_addline(arg->buffer, "tmp0.y = %s - floor(%s);\n", src_param.param_str, src_param.param_str);
+        shader_addline(arg->buffer, "tmp0.z = exp2(%s);\n", src_param.param_str);
+        shader_addline(arg->buffer, "tmp0.w = 1.0;\n");
+
+        shader_glsl_append_dst(arg->buffer, arg);
+        shader_glsl_get_write_mask(arg->dst, dst_mask);
+        shader_addline(arg->buffer, "tmp0%s);\n", dst_mask);
+    } else {
+        DWORD write_mask;
+        unsigned int mask_size;
+
+        write_mask = shader_glsl_append_dst(arg->buffer, arg);
+        mask_size = shader_glsl_get_write_mask_size(write_mask);
+
+        if (mask_size > 1) {
+            shader_addline(arg->buffer, "vec%d(exp2(%s)));\n", mask_size, src_param.param_str);
+        } else {
+            shader_addline(arg->buffer, "exp2(%s));\n", src_param.param_str);
+        }
+    }
+}
+
+/** Process the RCP (reciprocal or inverse) opcode in GLSL (dst = 1 / src) */
+static void shader_glsl_rcp(const SHADER_OPCODE_ARG *arg)
+{
+    glsl_src_param_t src_param;
+    DWORD write_mask;
+    unsigned int mask_size;
+
+    write_mask = shader_glsl_append_dst(arg->buffer, arg);
+    mask_size = shader_glsl_get_write_mask_size(write_mask);
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_3, &src_param);
+
+    if (mask_size > 1) {
+        shader_addline(arg->buffer, "vec%d(1.0 / %s));\n", mask_size, src_param.param_str);
+    } else {
+        shader_addline(arg->buffer, "1.0 / %s);\n", src_param.param_str);
+    }
+}
+
+static void shader_glsl_rsq(const SHADER_OPCODE_ARG *arg)
+{
+    SHADER_BUFFER* buffer = arg->buffer;
+    glsl_src_param_t src_param;
+    DWORD write_mask;
+    unsigned int mask_size;
+
+    write_mask = shader_glsl_append_dst(buffer, arg);
+    mask_size = shader_glsl_get_write_mask_size(write_mask);
+
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_3, &src_param);
+
+    if (mask_size > 1) {
+        shader_addline(buffer, "vec%d(inversesqrt(%s)));\n", mask_size, src_param.param_str);
+    } else {
+        shader_addline(buffer, "inversesqrt(%s));\n", src_param.param_str);
+    }
+}
+
+/** Process signed comparison opcodes in GLSL. */
+static void shader_glsl_compare(const SHADER_OPCODE_ARG *arg)
+{
+    glsl_src_param_t src0_param;
+    glsl_src_param_t src1_param;
+    DWORD write_mask;
+    unsigned int mask_size;
+
+    write_mask = shader_glsl_append_dst(arg->buffer, arg);
+    mask_size = shader_glsl_get_write_mask_size(write_mask);
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], write_mask, &src0_param);
+    shader_glsl_add_src_param(arg, arg->src[1], arg->src_addr[1], write_mask, &src1_param);
+
+    if (mask_size > 1) {
+        const char *compare;
+
+        switch(arg->opcode->opcode) {
+            case WINED3DSIO_SLT: compare = "lessThan"; break;
+            case WINED3DSIO_SGE: compare = "greaterThanEqual"; break;
+            default: compare = "";
+                FIXME("Can't handle opcode %s\n", arg->opcode->name);
+        }
+
+        shader_addline(arg->buffer, "vec%d(%s(%s, %s)));\n", mask_size, compare,
+                src0_param.param_str, src1_param.param_str);
+    } else {
+        switch(arg->opcode->opcode) {
+            case WINED3DSIO_SLT:
+                /* Step(src0, src1) is not suitable here because if src0 == src1 SLT is supposed,
+                 * to return 0.0 but step returns 1.0 because step is not < x
+                 * An alternative is a bvec compare padded with an unused second component.
+                 * step(src1 * -1.0, src0 * -1.0) is not an option because it suffers from the same
+                 * issue. Playing with not() is not possible either because not() does not accept
+                 * a scalar.
+                 */
+                shader_addline(arg->buffer, "(%s < %s) ? 1.0 : 0.0);\n", src0_param.param_str, src1_param.param_str);
+                break;
+            case WINED3DSIO_SGE:
+                /* Here we can use the step() function and safe a conditional */
+                shader_addline(arg->buffer, "step(%s, %s));\n", src1_param.param_str, src0_param.param_str);
+                break;
+            default:
+                FIXME("Can't handle opcode %s\n", arg->opcode->name);
+        }
+
+    }
+}
+
+/** Process CMP instruction in GLSL (dst = src0 >= 0.0 ? src1 : src2), per channel */
+static void shader_glsl_cmp(const SHADER_OPCODE_ARG *arg)
+{
+    glsl_src_param_t src0_param;
+    glsl_src_param_t src1_param;
+    glsl_src_param_t src2_param;
+    DWORD write_mask, cmp_channel = 0;
+    unsigned int i, j;
+    char mask_char[6];
+    BOOL temp_destination = FALSE;
+
+    if(shader_is_scalar(arg->src[0])) {
+        write_mask = shader_glsl_append_dst(arg->buffer, arg);
+
+        shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_ALL, &src0_param);
+        shader_glsl_add_src_param(arg, arg->src[1], arg->src_addr[1], write_mask, &src1_param);
+        shader_glsl_add_src_param(arg, arg->src[2], arg->src_addr[2], write_mask, &src2_param);
+
+        shader_addline(arg->buffer, "%s >= 0.0 ? %s : %s);\n",
+                       src0_param.param_str, src1_param.param_str, src2_param.param_str);
+    } else {
+        DWORD src0reg = arg->src[0] & WINED3DSP_REGNUM_MASK;
+        DWORD src1reg = arg->src[1] & WINED3DSP_REGNUM_MASK;
+        DWORD src2reg = arg->src[2] & WINED3DSP_REGNUM_MASK;
+        DWORD src0regtype = shader_get_regtype(arg->src[0]);
+        DWORD src1regtype = shader_get_regtype(arg->src[1]);
+        DWORD src2regtype = shader_get_regtype(arg->src[2]);
+        DWORD dstreg = arg->dst & WINED3DSP_REGNUM_MASK;
+        DWORD dstregtype = shader_get_regtype(arg->dst);
+
+        /* Cycle through all source0 channels */
+        for (i=0; i<4; i++) {
+            write_mask = 0;
+            /* Find the destination channels which use the current source0 channel */
+            for (j=0; j<4; j++) {
+                if ( ((arg->src[0] >> (WINED3DSP_SWIZZLE_SHIFT + 2*j)) & 0x3) == i ) {
+                    write_mask |= WINED3DSP_WRITEMASK_0 << j;
+                    cmp_channel = WINED3DSP_WRITEMASK_0 << j;
+                }
+            }
+
+            /* Splitting the cmp instruction up in multiple lines imposes a problem:
+            * The first lines may overwrite source parameters of the following lines.
+            * Deal with that by using a temporary destination register if needed
+            */
+            if((src0reg == dstreg && src0regtype == dstregtype) ||
+            (src1reg == dstreg && src1regtype == dstregtype) ||
+            (src2reg == dstreg && src2regtype == dstregtype)) {
+
+                write_mask = shader_glsl_get_write_mask(arg->dst & (~WINED3DSP_SWIZZLE_MASK | write_mask), mask_char);
+                if (!write_mask) continue;
+                shader_addline(arg->buffer, "tmp0%s = (", mask_char);
+                temp_destination = TRUE;
+            } else {
+                write_mask = shader_glsl_append_dst_ext(arg->buffer, arg, arg->dst & (~WINED3DSP_SWIZZLE_MASK | write_mask));
+                if (!write_mask) continue;
+            }
+
+            shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], cmp_channel, &src0_param);
+            shader_glsl_add_src_param(arg, arg->src[1], arg->src_addr[1], write_mask, &src1_param);
+            shader_glsl_add_src_param(arg, arg->src[2], arg->src_addr[2], write_mask, &src2_param);
+
+            shader_addline(arg->buffer, "%s >= 0.0 ? %s : %s);\n",
+                        src0_param.param_str, src1_param.param_str, src2_param.param_str);
+        }
+
+        if(temp_destination) {
+            shader_glsl_get_write_mask(arg->dst, mask_char);
+            shader_glsl_append_dst_ext(arg->buffer, arg, arg->dst);
+            shader_addline(arg->buffer, "tmp0%s);\n", mask_char);
+        }
+    }
+
+}
+
+/** Process the CND opcode in GLSL (dst = (src0 > 0.5) ? src1 : src2) */
+/* For ps 1.1-1.3, only a single component of src0 is used. For ps 1.4
+ * the compare is done per component of src0. */
+static void shader_glsl_cnd(const SHADER_OPCODE_ARG *arg)
+{
+    IWineD3DBaseShaderImpl* shader = (IWineD3DBaseShaderImpl*) arg->shader;
+    glsl_src_param_t src0_param;
+    glsl_src_param_t src1_param;
+    glsl_src_param_t src2_param;
+    DWORD write_mask, cmp_channel = 0;
+    unsigned int i, j;
+
+    if (shader->baseShader.hex_version < WINED3DPS_VERSION(1, 4)) {
+        write_mask = shader_glsl_append_dst(arg->buffer, arg);
+        shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_0, &src0_param);
+        shader_glsl_add_src_param(arg, arg->src[1], arg->src_addr[1], write_mask, &src1_param);
+        shader_glsl_add_src_param(arg, arg->src[2], arg->src_addr[2], write_mask, &src2_param);
+
+        /* Fun: The D3DSI_COISSUE flag changes the semantic of the cnd instruction for < 1.4 shaders */
+        if(arg->opcode_token & WINED3DSI_COISSUE) {
+            shader_addline(arg->buffer, "%s /* COISSUE! */);\n", src1_param.param_str);
+        } else {
+            shader_addline(arg->buffer, "%s > 0.5 ? %s : %s);\n",
+                    src0_param.param_str, src1_param.param_str, src2_param.param_str);
+        }
+        return;
+    }
+    /* Cycle through all source0 channels */
+    for (i=0; i<4; i++) {
+        write_mask = 0;
+        /* Find the destination channels which use the current source0 channel */
+        for (j=0; j<4; j++) {
+            if ( ((arg->src[0] >> (WINED3DSP_SWIZZLE_SHIFT + 2*j)) & 0x3) == i ) {
+                write_mask |= WINED3DSP_WRITEMASK_0 << j;
+                cmp_channel = WINED3DSP_WRITEMASK_0 << j;
+            }
+        }
+        write_mask = shader_glsl_append_dst_ext(arg->buffer, arg, arg->dst & (~WINED3DSP_SWIZZLE_MASK | write_mask));
+        if (!write_mask) continue;
+
+        shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], cmp_channel, &src0_param);
+        shader_glsl_add_src_param(arg, arg->src[1], arg->src_addr[1], write_mask, &src1_param);
+        shader_glsl_add_src_param(arg, arg->src[2], arg->src_addr[2], write_mask, &src2_param);
+
+        shader_addline(arg->buffer, "%s > 0.5 ? %s : %s);\n",
+                src0_param.param_str, src1_param.param_str, src2_param.param_str);
+    }
+}
+
+/** GLSL code generation for WINED3DSIO_MAD: Multiply the first 2 opcodes, then add the last */
+static void shader_glsl_mad(const SHADER_OPCODE_ARG *arg)
+{
+    glsl_src_param_t src0_param;
+    glsl_src_param_t src1_param;
+    glsl_src_param_t src2_param;
+    DWORD write_mask;
+
+    write_mask = shader_glsl_append_dst(arg->buffer, arg);
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], write_mask, &src0_param);
+    shader_glsl_add_src_param(arg, arg->src[1], arg->src_addr[1], write_mask, &src1_param);
+    shader_glsl_add_src_param(arg, arg->src[2], arg->src_addr[2], write_mask, &src2_param);
+    shader_addline(arg->buffer, "(%s * %s) + %s);\n",
+            src0_param.param_str, src1_param.param_str, src2_param.param_str);
+}
+
+/** Handles transforming all WINED3DSIO_M?x? opcodes for 
+    Vertex shaders to GLSL codes */
+static void shader_glsl_mnxn(const SHADER_OPCODE_ARG *arg)
+{
+    IWineD3DBaseShaderImpl *shader = (IWineD3DBaseShaderImpl *)arg->shader;
+    const SHADER_OPCODE *opcode_table = shader->baseShader.shader_ins;
+    DWORD shader_version = shader->baseShader.hex_version;
+    int i;
+    int nComponents = 0;
+    SHADER_OPCODE_ARG tmpArg;
+   
+    memset(&tmpArg, 0, sizeof(SHADER_OPCODE_ARG));
+
+    /* Set constants for the temporary argument */
+    tmpArg.shader      = arg->shader;
+    tmpArg.buffer      = arg->buffer;
+    tmpArg.src[0]      = arg->src[0];
+    tmpArg.src_addr[0] = arg->src_addr[0];
+    tmpArg.src_addr[1] = arg->src_addr[1];
+    tmpArg.reg_maps = arg->reg_maps; 
+    
+    switch(arg->opcode->opcode) {
+        case WINED3DSIO_M4x4:
+            nComponents = 4;
+            tmpArg.opcode = shader_get_opcode(opcode_table, shader_version, WINED3DSIO_DP4);
+            break;
+        case WINED3DSIO_M4x3:
+            nComponents = 3;
+            tmpArg.opcode = shader_get_opcode(opcode_table, shader_version, WINED3DSIO_DP4);
+            break;
+        case WINED3DSIO_M3x4:
+            nComponents = 4;
+            tmpArg.opcode = shader_get_opcode(opcode_table, shader_version, WINED3DSIO_DP3);
+            break;
+        case WINED3DSIO_M3x3:
+            nComponents = 3;
+            tmpArg.opcode = shader_get_opcode(opcode_table, shader_version, WINED3DSIO_DP3);
+            break;
+        case WINED3DSIO_M3x2:
+            nComponents = 2;
+            tmpArg.opcode = shader_get_opcode(opcode_table, shader_version, WINED3DSIO_DP3);
+            break;
+        default:
+            break;
+    }
+
+    for (i = 0; i < nComponents; i++) {
+        tmpArg.dst = ((arg->dst) & ~WINED3DSP_WRITEMASK_ALL)|(WINED3DSP_WRITEMASK_0<<i);
+        tmpArg.src[1]      = arg->src[1]+i;
+        shader_glsl_dot(&tmpArg);
+    }
+}
+
+/**
+    The LRP instruction performs a component-wise linear interpolation 
+    between the second and third operands using the first operand as the
+    blend factor.  Equation:  (dst = src2 + src0 * (src1 - src2))
+    This is equivalent to mix(src2, src1, src0);
+*/
+static void shader_glsl_lrp(const SHADER_OPCODE_ARG *arg)
+{
+    glsl_src_param_t src0_param;
+    glsl_src_param_t src1_param;
+    glsl_src_param_t src2_param;
+    DWORD write_mask;
+
+    write_mask = shader_glsl_append_dst(arg->buffer, arg);
+
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], write_mask, &src0_param);
+    shader_glsl_add_src_param(arg, arg->src[1], arg->src_addr[1], write_mask, &src1_param);
+    shader_glsl_add_src_param(arg, arg->src[2], arg->src_addr[2], write_mask, &src2_param);
+
+    shader_addline(arg->buffer, "mix(%s, %s, %s));\n",
+            src2_param.param_str, src1_param.param_str, src0_param.param_str);
+}
+
+/** Process the WINED3DSIO_LIT instruction in GLSL:
+ * dst.x = dst.w = 1.0
+ * dst.y = (src0.x > 0) ? src0.x
+ * dst.z = (src0.x > 0) ? ((src0.y > 0) ? pow(src0.y, src.w) : 0) : 0
+ *                                        where src.w is clamped at +- 128
+ */
+static void shader_glsl_lit(const SHADER_OPCODE_ARG *arg)
+{
+    glsl_src_param_t src0_param;
+    glsl_src_param_t src1_param;
+    glsl_src_param_t src3_param;
+    char dst_mask[6];
+
+    shader_glsl_append_dst(arg->buffer, arg);
+    shader_glsl_get_write_mask(arg->dst, dst_mask);
+
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_0, &src0_param);
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_1, &src1_param);
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_3, &src3_param);
+
+    /* The sdk specifies the instruction like this
+     * dst.x = 1.0;
+     * if(src.x > 0.0) dst.y = src.x
+     * else dst.y = 0.0.
+     * if(src.x > 0.0 && src.y > 0.0) dst.z = pow(src.y, power);
+     * else dst.z = 0.0;
+     * dst.w = 1.0;
+     *
+     * Obviously that has quite a few conditionals in it which we don't like. So the first step is this:
+     * dst.x = 1.0                                  ... No further explanation needed
+     * dst.y = max(src.y, 0.0);                     ... If x < 0.0, use 0.0, otherwise x. Same as the conditional
+     * dst.z = x > 0.0 ? pow(max(y, 0.0), p) : 0;   ... 0 ^ power is 0, and otherwise we use y anyway
+     * dst.w = 1.0.                                 ... Nothing fancy.
+     *
+     * So we still have one conditional in there. So do this:
+     * dst.z = pow(max(0.0, src.y) * step(0.0, src.x), power);
+     *
+     * step(0.0, x) will return 1 if src.x > 0.0, and 0 otherwise. So if y is 0 we get pow(0.0 * 1.0, power),
+     * which sets dst.z to 0. If y > 0, but x = 0.0, we get pow(y * 0.0, power), which results in 0 too.
+     * if both x and y are > 0, we get pow(y * 1.0, power), as it is supposed to
+     */
+    shader_addline(arg->buffer, "vec4(1.0, max(%s, 0.0), pow(max(0.0, %s) * step(0.0, %s), clamp(%s, -128.0, 128.0)), 1.0)%s);\n",
+                   src0_param.param_str, src1_param.param_str, src0_param.param_str, src3_param.param_str, dst_mask);
+}
+
+/** Process the WINED3DSIO_DST instruction in GLSL:
+ * dst.x = 1.0
+ * dst.y = src0.x * src0.y
+ * dst.z = src0.z
+ * dst.w = src1.w
+ */
+static void shader_glsl_dst(const SHADER_OPCODE_ARG *arg)
+{
+    glsl_src_param_t src0y_param;
+    glsl_src_param_t src0z_param;
+    glsl_src_param_t src1y_param;
+    glsl_src_param_t src1w_param;
+    char dst_mask[6];
+
+    shader_glsl_append_dst(arg->buffer, arg);
+    shader_glsl_get_write_mask(arg->dst, dst_mask);
+
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_1, &src0y_param);
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_2, &src0z_param);
+    shader_glsl_add_src_param(arg, arg->src[1], arg->src_addr[1], WINED3DSP_WRITEMASK_1, &src1y_param);
+    shader_glsl_add_src_param(arg, arg->src[1], arg->src_addr[1], WINED3DSP_WRITEMASK_3, &src1w_param);
+
+    shader_addline(arg->buffer, "vec4(1.0, %s * %s, %s, %s))%s;\n",
+            src0y_param.param_str, src1y_param.param_str, src0z_param.param_str, src1w_param.param_str, dst_mask);
+}
+
+/** Process the WINED3DSIO_SINCOS instruction in GLSL:
+ * VS 2.0 requires that specific cosine and sine constants be passed to this instruction so the hardware
+ * can handle it.  But, these functions are built-in for GLSL, so we can just ignore the last 2 params.
+ * 
+ * dst.x = cos(src0.?)
+ * dst.y = sin(src0.?)
+ * dst.z = dst.z
+ * dst.w = dst.w
+ */
+static void shader_glsl_sincos(const SHADER_OPCODE_ARG *arg)
+{
+    glsl_src_param_t src0_param;
+    DWORD write_mask;
+
+    write_mask = shader_glsl_append_dst(arg->buffer, arg);
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_0, &src0_param);
+
+    switch (write_mask) {
+        case WINED3DSP_WRITEMASK_0:
+            shader_addline(arg->buffer, "cos(%s));\n", src0_param.param_str);
+            break;
+
+        case WINED3DSP_WRITEMASK_1:
+            shader_addline(arg->buffer, "sin(%s));\n", src0_param.param_str);
+            break;
+
+        case (WINED3DSP_WRITEMASK_0 | WINED3DSP_WRITEMASK_1):
+            shader_addline(arg->buffer, "vec2(cos(%s), sin(%s)));\n", src0_param.param_str, src0_param.param_str);
+            break;
+
+        default:
+            ERR("Write mask should be .x, .y or .xy\n");
+            break;
+    }
+}
+
+/** Process the WINED3DSIO_LOOP instruction in GLSL:
+ * Start a for() loop where src1.y is the initial value of aL,
+ *  increment aL by src1.z for a total of src1.x iterations.
+ *  Need to use a temporary variable for this operation.
+ */
+/* FIXME: I don't think nested loops will work correctly this way. */
+static void shader_glsl_loop(const SHADER_OPCODE_ARG *arg)
+{
+    glsl_src_param_t src1_param;
+    IWineD3DBaseShaderImpl* shader = (IWineD3DBaseShaderImpl*) arg->shader;
+    DWORD regtype = shader_get_regtype(arg->src[1]);
+    DWORD reg = arg->src[1] & WINED3DSP_REGNUM_MASK;
+    const DWORD *control_values = NULL;
+    const local_constant *constant;
+
+    shader_glsl_add_src_param(arg, arg->src[1], arg->src_addr[1], WINED3DSP_WRITEMASK_ALL, &src1_param);
+
+    /* Try to hardcode the loop control parameters if possible. Direct3D 9 class hardware doesn't support real
+     * varying indexing, but Microsoft designed this feature for Shader model 2.x+. If the loop control is
+     * known at compile time, the GLSL compiler can unroll the loop, and replace indirect addressing with direct
+     * addressing.
+     */
+    if(regtype == WINED3DSPR_CONSTINT) {
+        LIST_FOR_EACH_ENTRY(constant, &shader->baseShader.constantsI, local_constant, entry) {
+            if(constant->idx == reg) {
+                control_values = constant->value;
+                break;
+            }
+        }
+    }
+
+    if(control_values) {
+        if(control_values[2] > 0) {
+            shader_addline(arg->buffer, "for (aL%u = %d; aL%u < (%d * %d + %d); aL%u += %d) {\n",
+                           shader->baseShader.cur_loop_depth, control_values[1],
+                           shader->baseShader.cur_loop_depth, control_values[0], control_values[2], control_values[1],
+                           shader->baseShader.cur_loop_depth, control_values[2]);
+        } else if(control_values[2] == 0) {
+            shader_addline(arg->buffer, "for (aL%u = %d, tmpInt%u = 0; tmpInt%u < %d; tmpInt%u++) {\n",
+                           shader->baseShader.cur_loop_depth, control_values[1], shader->baseShader.cur_loop_depth,
+                           shader->baseShader.cur_loop_depth, control_values[0],
+                           shader->baseShader.cur_loop_depth);
+        } else {
+            shader_addline(arg->buffer, "for (aL%u = %d; aL%u > (%d * %d + %d); aL%u += %d) {\n",
+                           shader->baseShader.cur_loop_depth, control_values[1],
+                           shader->baseShader.cur_loop_depth, control_values[0], control_values[2], control_values[1],
+                           shader->baseShader.cur_loop_depth, control_values[2]);
+        }
+    } else {
+        shader_addline(arg->buffer, "for (tmpInt%u = 0, aL%u = %s.y; tmpInt%u < %s.x; tmpInt%u++, aL%u += %s.z) {\n",
+                       shader->baseShader.cur_loop_depth, shader->baseShader.cur_loop_regno,
+                       src1_param.reg_name, shader->baseShader.cur_loop_depth, src1_param.reg_name,
+                       shader->baseShader.cur_loop_depth, shader->baseShader.cur_loop_regno, src1_param.reg_name);
+    }
+
+    shader->baseShader.cur_loop_depth++;
+    shader->baseShader.cur_loop_regno++;
+}
+
+static void shader_glsl_end(const SHADER_OPCODE_ARG *arg)
+{
+    IWineD3DBaseShaderImpl* shader = (IWineD3DBaseShaderImpl*) arg->shader;
+
+    shader_addline(arg->buffer, "}\n");
+
+    if(arg->opcode->opcode == WINED3DSIO_ENDLOOP) {
+        shader->baseShader.cur_loop_depth--;
+        shader->baseShader.cur_loop_regno--;
+    }
+    if(arg->opcode->opcode == WINED3DSIO_ENDREP) {
+        shader->baseShader.cur_loop_depth--;
+    }
+}
+
+static void shader_glsl_rep(const SHADER_OPCODE_ARG *arg)
+{
+    IWineD3DBaseShaderImpl* shader = (IWineD3DBaseShaderImpl*) arg->shader;
+    glsl_src_param_t src0_param;
+
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_0, &src0_param);
+    shader_addline(arg->buffer, "for (tmpInt%d = 0; tmpInt%d < %s; tmpInt%d++) {\n",
+                   shader->baseShader.cur_loop_depth, shader->baseShader.cur_loop_depth,
+                   src0_param.param_str, shader->baseShader.cur_loop_depth);
+    shader->baseShader.cur_loop_depth++;
+}
+
+static void shader_glsl_if(const SHADER_OPCODE_ARG *arg)
+{
+    glsl_src_param_t src0_param;
+
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_0, &src0_param);
+    shader_addline(arg->buffer, "if (%s) {\n", src0_param.param_str);
+}
+
+static void shader_glsl_ifc(const SHADER_OPCODE_ARG *arg)
+{
+    glsl_src_param_t src0_param;
+    glsl_src_param_t src1_param;
+
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_0, &src0_param);
+    shader_glsl_add_src_param(arg, arg->src[1], arg->src_addr[1], WINED3DSP_WRITEMASK_0, &src1_param);
+
+    shader_addline(arg->buffer, "if (%s %s %s) {\n",
+            src0_param.param_str, shader_get_comp_op(arg->opcode_token), src1_param.param_str);
+}
+
+static void shader_glsl_else(const SHADER_OPCODE_ARG *arg)
+{
+    shader_addline(arg->buffer, "} else {\n");
+}
+
+static void shader_glsl_break(const SHADER_OPCODE_ARG *arg)
+{
+    shader_addline(arg->buffer, "break;\n");
+}
+
+/* FIXME: According to MSDN the compare is done per component. */
+static void shader_glsl_breakc(const SHADER_OPCODE_ARG *arg)
+{
+    glsl_src_param_t src0_param;
+    glsl_src_param_t src1_param;
+
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_0, &src0_param);
+    shader_glsl_add_src_param(arg, arg->src[1], arg->src_addr[1], WINED3DSP_WRITEMASK_0, &src1_param);
+
+    shader_addline(arg->buffer, "if (%s %s %s) break;\n",
+            src0_param.param_str, shader_get_comp_op(arg->opcode_token), src1_param.param_str);
+}
+
+static void shader_glsl_label(const SHADER_OPCODE_ARG *arg)
+{
+
+    DWORD snum = (arg->src[0]) & WINED3DSP_REGNUM_MASK;
+    shader_addline(arg->buffer, "}\n");
+    shader_addline(arg->buffer, "void subroutine%u () {\n",  snum);
+}
+
+static void shader_glsl_call(const SHADER_OPCODE_ARG *arg)
+{
+    DWORD snum = (arg->src[0]) & WINED3DSP_REGNUM_MASK;
+    shader_addline(arg->buffer, "subroutine%u();\n", snum);
+}
+
+static void shader_glsl_callnz(const SHADER_OPCODE_ARG *arg)
+{
+    glsl_src_param_t src1_param;
+
+    DWORD snum = (arg->src[0]) & WINED3DSP_REGNUM_MASK;
+    shader_glsl_add_src_param(arg, arg->src[1], arg->src_addr[1], WINED3DSP_WRITEMASK_0, &src1_param);
+    shader_addline(arg->buffer, "if (%s) subroutine%u();\n", src1_param.param_str, snum);
+}
+
+/*********************************************
+ * Pixel Shader Specific Code begins here
+ ********************************************/
+static void pshader_glsl_tex(const SHADER_OPCODE_ARG *arg)
+{
+    IWineD3DPixelShaderImpl* This = (IWineD3DPixelShaderImpl*) arg->shader;
+    IWineD3DDeviceImpl* deviceImpl = (IWineD3DDeviceImpl*) This->baseShader.device;
+    DWORD hex_version = This->baseShader.hex_version;
+    char dst_swizzle[6];
+    glsl_sample_function_t sample_function;
+    DWORD sampler_type;
+    DWORD sampler_idx;
+    BOOL projected, texrect = FALSE;
+    DWORD mask = 0;
+
+    /* All versions have a destination register */
+    shader_glsl_append_dst(arg->buffer, arg);
+
+    /* 1.0-1.4: Use destination register as sampler source.
+     * 2.0+: Use provided sampler source. */
+    if (hex_version < WINED3DPS_VERSION(2,0)) {
+        sampler_idx = arg->dst & WINED3DSP_REGNUM_MASK;
+    } else {
+        sampler_idx = arg->src[1] & WINED3DSP_REGNUM_MASK;
+    }
+    sampler_type = arg->reg_maps->samplers[sampler_idx] & WINED3DSP_TEXTURETYPE_MASK;
+
+    if (hex_version < WINED3DPS_VERSION(1,4)) {
+        DWORD flags = deviceImpl->stateBlock->textureState[sampler_idx][WINED3DTSS_TEXTURETRANSFORMFLAGS];
+
+        /* Projected cube textures don't make a lot of sense, the resulting coordinates stay the same. */
+        if (flags & WINED3DTTFF_PROJECTED && sampler_type != WINED3DSTT_CUBE) {
+            projected = TRUE;
+            switch (flags & ~WINED3DTTFF_PROJECTED) {
+                case WINED3DTTFF_COUNT1: FIXME("WINED3DTTFF_PROJECTED with WINED3DTTFF_COUNT1?\n"); break;
+                case WINED3DTTFF_COUNT2: mask = WINED3DSP_WRITEMASK_1; break;
+                case WINED3DTTFF_COUNT3: mask = WINED3DSP_WRITEMASK_2; break;
+                case WINED3DTTFF_COUNT4:
+                case WINED3DTTFF_DISABLE: mask = WINED3DSP_WRITEMASK_3; break;
+            }
+        } else {
+            projected = FALSE;
+        }
+    } else if (hex_version < WINED3DPS_VERSION(2,0)) {
+        DWORD src_mod = arg->src[0] & WINED3DSP_SRCMOD_MASK;
+
+        if (src_mod == WINED3DSPSM_DZ) {
+            projected = TRUE;
+            mask = WINED3DSP_WRITEMASK_2;
+        } else if (src_mod == WINED3DSPSM_DW) {
+            projected = TRUE;
+            mask = WINED3DSP_WRITEMASK_3;
+        } else {
+            projected = FALSE;
+        }
+    } else {
+        if(arg->opcode_token & WINED3DSI_TEXLD_PROJECT) {
+                /* ps 2.0 texldp instruction always divides by the fourth component. */
+                projected = TRUE;
+                mask = WINED3DSP_WRITEMASK_3;
+        } else {
+            projected = FALSE;
+        }
+    }
+
+    if(deviceImpl->stateBlock->textures[sampler_idx] &&
+       IWineD3DBaseTexture_GetTextureDimensions(deviceImpl->stateBlock->textures[sampler_idx]) == GL_TEXTURE_RECTANGLE_ARB) {
+        texrect = TRUE;
+    }
+
+    shader_glsl_get_sample_function(sampler_type, projected, texrect, &sample_function);
+    mask |= sample_function.coord_mask;
+
+    if (hex_version < WINED3DPS_VERSION(2,0)) {
+        shader_glsl_get_write_mask(arg->dst, dst_swizzle);
+    } else {
+        shader_glsl_get_swizzle(arg->src[1], FALSE, arg->dst, dst_swizzle);
+    }
+
+    /* 1.0-1.3: Use destination register as coordinate source.
+       1.4+: Use provided coordinate source register. */
+    if (hex_version < WINED3DPS_VERSION(1,4)) {
+        char coord_mask[6];
+        shader_glsl_get_write_mask(mask, coord_mask);
+        shader_addline(arg->buffer, "%s(Psampler%u, T%u%s)%s);\n",
+                sample_function.name, sampler_idx, sampler_idx, coord_mask, dst_swizzle);
+    } else {
+        glsl_src_param_t coord_param;
+        shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], mask, &coord_param);
+        if(arg->opcode_token & WINED3DSI_TEXLD_BIAS) {
+            glsl_src_param_t bias;
+            shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_3, &bias);
+
+            shader_addline(arg->buffer, "%s(Psampler%u, %s, %s)%s);\n",
+                    sample_function.name, sampler_idx, coord_param.param_str,
+                    bias.param_str, dst_swizzle);
+        } else {
+            shader_addline(arg->buffer, "%s(Psampler%u, %s)%s);\n",
+                    sample_function.name, sampler_idx, coord_param.param_str, dst_swizzle);
+        }
+    }
+}
+
+static void shader_glsl_texldl(const SHADER_OPCODE_ARG *arg)
+{
+    IWineD3DBaseShaderImpl* This = (IWineD3DBaseShaderImpl*)arg->shader;
+    IWineD3DDeviceImpl* deviceImpl = (IWineD3DDeviceImpl*) This->baseShader.device;
+    glsl_sample_function_t sample_function;
+    glsl_src_param_t coord_param, lod_param;
+    char dst_swizzle[6];
+    DWORD sampler_type;
+    DWORD sampler_idx;
+    BOOL texrect = FALSE;
+
+    shader_glsl_append_dst(arg->buffer, arg);
+    shader_glsl_get_swizzle(arg->src[1], FALSE, arg->dst, dst_swizzle);
+
+    sampler_idx = arg->src[1] & WINED3DSP_REGNUM_MASK;
+    sampler_type = arg->reg_maps->samplers[sampler_idx] & WINED3DSP_TEXTURETYPE_MASK;
+    if(deviceImpl->stateBlock->textures[sampler_idx] &&
+       IWineD3DBaseTexture_GetTextureDimensions(deviceImpl->stateBlock->textures[sampler_idx]) == GL_TEXTURE_RECTANGLE_ARB) {
+        texrect = TRUE;
+    }
+    shader_glsl_get_sample_function(sampler_type, FALSE, texrect, &sample_function);    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], sample_function.coord_mask, &coord_param);
+
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_3, &lod_param);
+
+    if (shader_is_pshader_version(This->baseShader.hex_version)) {
+        /* The GLSL spec claims the Lod sampling functions are only supported in vertex shaders.
+         * However, they seem to work just fine in fragment shaders as well. */
+        WARN("Using %sLod in fragment shader.\n", sample_function.name);
+        shader_addline(arg->buffer, "%sLod(Psampler%u, %s, %s)%s);\n",
+                sample_function.name, sampler_idx, coord_param.param_str, lod_param.param_str, dst_swizzle);
+    } else {
+        shader_addline(arg->buffer, "%sLod(Vsampler%u, %s, %s)%s);\n",
+                sample_function.name, sampler_idx, coord_param.param_str, lod_param.param_str, dst_swizzle);
+    }
+}
+
+static void pshader_glsl_texcoord(const SHADER_OPCODE_ARG *arg)
+{
+    /* FIXME: Make this work for more than just 2D textures */
+    
+    IWineD3DPixelShaderImpl* This = (IWineD3DPixelShaderImpl*) arg->shader;
+    SHADER_BUFFER* buffer = arg->buffer;
+    DWORD hex_version = This->baseShader.hex_version;
+    DWORD write_mask;
+    char dst_mask[6];
+
+    write_mask = shader_glsl_append_dst(arg->buffer, arg);
+    shader_glsl_get_write_mask(write_mask, dst_mask);
+
+    if (hex_version != WINED3DPS_VERSION(1,4)) {
+        DWORD reg = arg->dst & WINED3DSP_REGNUM_MASK;
+        shader_addline(buffer, "clamp(gl_TexCoord[%u], 0.0, 1.0)%s);\n", reg, dst_mask);
+    } else {
+        DWORD reg = arg->src[0] & WINED3DSP_REGNUM_MASK;
+        DWORD src_mod = arg->src[0] & WINED3DSP_SRCMOD_MASK;
+        char dst_swizzle[6];
+
+        shader_glsl_get_swizzle(arg->src[0], FALSE, write_mask, dst_swizzle);
+
+        if (src_mod == WINED3DSPSM_DZ) {
+            glsl_src_param_t div_param;
+            unsigned int mask_size = shader_glsl_get_write_mask_size(write_mask);
+            shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_2, &div_param);
+
+            if (mask_size > 1) {
+                shader_addline(buffer, "gl_TexCoord[%u]%s / vec%d(%s));\n", reg, dst_swizzle, mask_size, div_param.param_str);
+            } else {
+                shader_addline(buffer, "gl_TexCoord[%u]%s / %s);\n", reg, dst_swizzle, div_param.param_str);
+            }
+        } else if (src_mod == WINED3DSPSM_DW) {
+            glsl_src_param_t div_param;
+            unsigned int mask_size = shader_glsl_get_write_mask_size(write_mask);
+            shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_3, &div_param);
+
+            if (mask_size > 1) {
+                shader_addline(buffer, "gl_TexCoord[%u]%s / vec%d(%s));\n", reg, dst_swizzle, mask_size, div_param.param_str);
+            } else {
+                shader_addline(buffer, "gl_TexCoord[%u]%s / %s);\n", reg, dst_swizzle, div_param.param_str);
+            }
+        } else {
+            shader_addline(buffer, "gl_TexCoord[%u]%s);\n", reg, dst_swizzle);
+        }
+    }
+}
+
+/** Process the WINED3DSIO_TEXDP3TEX instruction in GLSL:
+ * Take a 3-component dot product of the TexCoord[dstreg] and src,
+ * then perform a 1D texture lookup from stage dstregnum, place into dst. */
+static void pshader_glsl_texdp3tex(const SHADER_OPCODE_ARG *arg)
+{
+    glsl_src_param_t src0_param;
+    char dst_mask[6];
+    glsl_sample_function_t sample_function;
+    DWORD sampler_idx = arg->dst & WINED3DSP_REGNUM_MASK;
+    DWORD src_mask = WINED3DSP_WRITEMASK_0 | WINED3DSP_WRITEMASK_1 | WINED3DSP_WRITEMASK_2;
+    DWORD sampler_type = arg->reg_maps->samplers[sampler_idx] & WINED3DSP_TEXTURETYPE_MASK;
+
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], src_mask, &src0_param);
+
+    shader_glsl_append_dst(arg->buffer, arg);
+    shader_glsl_get_write_mask(arg->dst, dst_mask);
+
+    /* Do I have to take care about the projected bit? I don't think so, since the dp3 returns only one
+     * scalar, and projected sampling would require 4.
+     *
+     * It is a dependent read - not valid with conditional NP2 textures
+     */
+    shader_glsl_get_sample_function(sampler_type, FALSE, FALSE, &sample_function);
+
+    switch(count_bits(sample_function.coord_mask)) {
+        case 1:
+            shader_addline(arg->buffer, "%s(Psampler%u, dot(gl_TexCoord[%u].xyz, %s))%s);\n",
+                           sample_function.name, sampler_idx, sampler_idx, src0_param.param_str, dst_mask);
+            break;
+
+        case 2:
+            shader_addline(arg->buffer, "%s(Psampler%u, vec2(dot(gl_TexCoord[%u].xyz, %s), 0.0))%s);\n",
+                          sample_function.name, sampler_idx, sampler_idx, src0_param.param_str, dst_mask);
+            break;
+
+        case 3:
+            shader_addline(arg->buffer, "%s(Psampler%u, vec3(dot(gl_TexCoord[%u].xyz, %s), 0.0, 0.0))%s);\n",
+                           sample_function.name, sampler_idx, sampler_idx, src0_param.param_str, dst_mask);
+            break;
+        default:
+            FIXME("Unexpected mask bitcount %d\n", count_bits(sample_function.coord_mask));
+    }
+}
+
+/** Process the WINED3DSIO_TEXDP3 instruction in GLSL:
+ * Take a 3-component dot product of the TexCoord[dstreg] and src. */
+static void pshader_glsl_texdp3(const SHADER_OPCODE_ARG *arg)
+{
+    glsl_src_param_t src0_param;
+    DWORD dstreg = arg->dst & WINED3DSP_REGNUM_MASK;
+    DWORD src_mask = WINED3DSP_WRITEMASK_0 | WINED3DSP_WRITEMASK_1 | WINED3DSP_WRITEMASK_2;
+    DWORD dst_mask;
+    unsigned int mask_size;
+
+    dst_mask = shader_glsl_append_dst(arg->buffer, arg);
+    mask_size = shader_glsl_get_write_mask_size(dst_mask);
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], src_mask, &src0_param);
+
+    if (mask_size > 1) {
+        shader_addline(arg->buffer, "vec%d(dot(T%u.xyz, %s)));\n", mask_size, dstreg, src0_param.param_str);
+    } else {
+        shader_addline(arg->buffer, "dot(T%u.xyz, %s));\n", dstreg, src0_param.param_str);
+    }
+}
+
+/** Process the WINED3DSIO_TEXDEPTH instruction in GLSL:
+ * Calculate the depth as dst.x / dst.y   */
+static void pshader_glsl_texdepth(const SHADER_OPCODE_ARG *arg)
+{
+    glsl_dst_param_t dst_param;
+
+    shader_glsl_add_dst_param(arg, arg->dst, 0, &dst_param);
+
+    /* Tests show that texdepth never returns anything below 0.0, and that r5.y is clamped to 1.0.
+     * Negative input is accepted, -0.25 / -0.5 returns 0.5. GL should clamp gl_FragDepth to [0;1], but
+     * this doesn't always work, so clamp the results manually. Whether or not the x value is clamped at 1
+     * too is irrelevant, since if x = 0, any y value < 1.0 (and > 1.0 is not allowed) results in a result
+     * >= 1.0 or < 0.0
+     */
+    shader_addline(arg->buffer, "gl_FragDepth = clamp((%s.x / min(%s.y, 1.0)), 0.0, 1.0);\n", dst_param.reg_name, dst_param.reg_name);
+}
+
+/** Process the WINED3DSIO_TEXM3X2DEPTH instruction in GLSL:
+ * Last row of a 3x2 matrix multiply, use the result to calculate the depth:
+ * Calculate tmp0.y = TexCoord[dstreg] . src.xyz;  (tmp0.x has already been calculated)
+ * depth = (tmp0.y == 0.0) ? 1.0 : tmp0.x / tmp0.y
+ */
+static void pshader_glsl_texm3x2depth(const SHADER_OPCODE_ARG *arg)
+{
+    DWORD src_mask = WINED3DSP_WRITEMASK_0 | WINED3DSP_WRITEMASK_1 | WINED3DSP_WRITEMASK_2;
+    DWORD dstreg = arg->dst & WINED3DSP_REGNUM_MASK;
+    glsl_src_param_t src0_param;
+
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], src_mask, &src0_param);
+
+    shader_addline(arg->buffer, "tmp0.y = dot(T%u.xyz, %s);\n", dstreg, src0_param.param_str);
+    shader_addline(arg->buffer, "gl_FragDepth = (tmp0.y == 0.0) ? 1.0 : clamp(tmp0.x / tmp0.y, 0.0, 1.0);\n");
+}
+
+/** Process the WINED3DSIO_TEXM3X2PAD instruction in GLSL
+ * Calculate the 1st of a 2-row matrix multiplication. */
+static void pshader_glsl_texm3x2pad(const SHADER_OPCODE_ARG *arg)
+{
+    DWORD src_mask = WINED3DSP_WRITEMASK_0 | WINED3DSP_WRITEMASK_1 | WINED3DSP_WRITEMASK_2;
+    DWORD reg = arg->dst & WINED3DSP_REGNUM_MASK;
+    SHADER_BUFFER* buffer = arg->buffer;
+    glsl_src_param_t src0_param;
+
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], src_mask, &src0_param);
+    shader_addline(buffer, "tmp0.x = dot(T%u.xyz, %s);\n", reg, src0_param.param_str);
+}
+
+/** Process the WINED3DSIO_TEXM3X3PAD instruction in GLSL
+ * Calculate the 1st or 2nd row of a 3-row matrix multiplication. */
+static void pshader_glsl_texm3x3pad(const SHADER_OPCODE_ARG* arg)
+{
+    IWineD3DPixelShaderImpl* shader = (IWineD3DPixelShaderImpl*) arg->shader;
+    DWORD src_mask = WINED3DSP_WRITEMASK_0 | WINED3DSP_WRITEMASK_1 | WINED3DSP_WRITEMASK_2;
+    DWORD reg = arg->dst & WINED3DSP_REGNUM_MASK;
+    SHADER_BUFFER* buffer = arg->buffer;
+    SHADER_PARSE_STATE* current_state = &shader->baseShader.parse_state;
+    glsl_src_param_t src0_param;
+
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], src_mask, &src0_param);
+    shader_addline(buffer, "tmp0.%c = dot(T%u.xyz, %s);\n", 'x' + current_state->current_row, reg, src0_param.param_str);
+    current_state->texcoord_w[current_state->current_row++] = reg;
+}
+
+static void pshader_glsl_texm3x2tex(const SHADER_OPCODE_ARG *arg)
+{
+    DWORD src_mask = WINED3DSP_WRITEMASK_0 | WINED3DSP_WRITEMASK_1 | WINED3DSP_WRITEMASK_2;
+    DWORD reg = arg->dst & WINED3DSP_REGNUM_MASK;
+    SHADER_BUFFER* buffer = arg->buffer;
+    glsl_src_param_t src0_param;
+    char dst_mask[6];
+
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], src_mask, &src0_param);
+    shader_addline(buffer, "tmp0.y = dot(T%u.xyz, %s);\n", reg, src0_param.param_str);
+
+    shader_glsl_append_dst(buffer, arg);
+    shader_glsl_get_write_mask(arg->dst, dst_mask);
+
+    /* Sample the texture using the calculated coordinates */
+    shader_addline(buffer, "texture2D(Psampler%u, tmp0.xy)%s);\n", reg, dst_mask);
+}
+
+/** Process the WINED3DSIO_TEXM3X3TEX instruction in GLSL
+ * Perform the 3rd row of a 3x3 matrix multiply, then sample the texture using the calculated coordinates */
+static void pshader_glsl_texm3x3tex(const SHADER_OPCODE_ARG *arg)
+{
+    DWORD src_mask = WINED3DSP_WRITEMASK_0 | WINED3DSP_WRITEMASK_1 | WINED3DSP_WRITEMASK_2;
+    glsl_src_param_t src0_param;
+    char dst_mask[6];
+    DWORD reg = arg->dst & WINED3DSP_REGNUM_MASK;
+    IWineD3DPixelShaderImpl* This = (IWineD3DPixelShaderImpl*) arg->shader;
+    SHADER_PARSE_STATE* current_state = &This->baseShader.parse_state;
+    DWORD sampler_type = arg->reg_maps->samplers[reg] & WINED3DSP_TEXTURETYPE_MASK;
+    glsl_sample_function_t sample_function;
+
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], src_mask, &src0_param);
+    shader_addline(arg->buffer, "tmp0.z = dot(T%u.xyz, %s);\n", reg, src0_param.param_str);
+
+    shader_glsl_append_dst(arg->buffer, arg);
+    shader_glsl_get_write_mask(arg->dst, dst_mask);
+    /* Dependent read, not valid with conditional NP2 */
+    shader_glsl_get_sample_function(sampler_type, FALSE, FALSE, &sample_function);
+
+    /* Sample the texture using the calculated coordinates */
+    shader_addline(arg->buffer, "%s(Psampler%u, tmp0.xyz)%s);\n", sample_function.name, reg, dst_mask);
+
+    current_state->current_row = 0;
+}
+
+/** Process the WINED3DSIO_TEXM3X3 instruction in GLSL
+ * Perform the 3rd row of a 3x3 matrix multiply */
+static void pshader_glsl_texm3x3(const SHADER_OPCODE_ARG *arg)
+{
+    DWORD src_mask = WINED3DSP_WRITEMASK_0 | WINED3DSP_WRITEMASK_1 | WINED3DSP_WRITEMASK_2;
+    glsl_src_param_t src0_param;
+    char dst_mask[6];
+    DWORD reg = arg->dst & WINED3DSP_REGNUM_MASK;
+    IWineD3DPixelShaderImpl* This = (IWineD3DPixelShaderImpl*) arg->shader;
+    SHADER_PARSE_STATE* current_state = &This->baseShader.parse_state;
+
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], src_mask, &src0_param);
+
+    shader_glsl_append_dst(arg->buffer, arg);
+    shader_glsl_get_write_mask(arg->dst, dst_mask);
+    shader_addline(arg->buffer, "vec4(tmp0.xy, dot(T%u.xyz, %s), 1.0)%s);\n", reg, src0_param.param_str, dst_mask);
+
+    current_state->current_row = 0;
+}
+
+/** Process the WINED3DSIO_TEXM3X3SPEC instruction in GLSL 
+ * Perform the final texture lookup based on the previous 2 3x3 matrix multiplies */
+static void pshader_glsl_texm3x3spec(const SHADER_OPCODE_ARG *arg)
+{
+    IWineD3DPixelShaderImpl* shader = (IWineD3DPixelShaderImpl*) arg->shader;
+    DWORD reg = arg->dst & WINED3DSP_REGNUM_MASK;
+    glsl_src_param_t src0_param;
+    glsl_src_param_t src1_param;
+    char dst_mask[6];
+    SHADER_BUFFER* buffer = arg->buffer;
+    SHADER_PARSE_STATE* current_state = &shader->baseShader.parse_state;
+    DWORD stype = arg->reg_maps->samplers[reg] & WINED3DSP_TEXTURETYPE_MASK;
+    DWORD src_mask = WINED3DSP_WRITEMASK_0 | WINED3DSP_WRITEMASK_1 | WINED3DSP_WRITEMASK_2;
+    glsl_sample_function_t sample_function;
+
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], src_mask, &src0_param);
+    shader_glsl_add_src_param(arg, arg->src[1], arg->src_addr[1], src_mask, &src1_param);
+
+    /* Perform the last matrix multiply operation */
+    shader_addline(buffer, "tmp0.z = dot(T%u.xyz, %s);\n", reg, src0_param.param_str);
+    /* Reflection calculation */
+    shader_addline(buffer, "tmp0.xyz = -reflect((%s), normalize(tmp0.xyz));\n", src1_param.param_str);
+
+    shader_glsl_append_dst(buffer, arg);
+    shader_glsl_get_write_mask(arg->dst, dst_mask);
+    /* Dependent read, not valid with conditional NP2 */
+    shader_glsl_get_sample_function(stype, FALSE, FALSE, &sample_function);
+
+    /* Sample the texture */
+    shader_addline(buffer, "%s(Psampler%u, tmp0.xyz)%s);\n", sample_function.name, reg, dst_mask);
+
+    current_state->current_row = 0;
+}
+
+/** Process the WINED3DSIO_TEXM3X3VSPEC instruction in GLSL 
+ * Perform the final texture lookup based on the previous 2 3x3 matrix multiplies */
+static void pshader_glsl_texm3x3vspec(const SHADER_OPCODE_ARG *arg)
+{
+    IWineD3DPixelShaderImpl* shader = (IWineD3DPixelShaderImpl*) arg->shader;
+    DWORD reg = arg->dst & WINED3DSP_REGNUM_MASK;
+    SHADER_BUFFER* buffer = arg->buffer;
+    SHADER_PARSE_STATE* current_state = &shader->baseShader.parse_state;
+    glsl_src_param_t src0_param;
+    char dst_mask[6];
+    DWORD src_mask = WINED3DSP_WRITEMASK_0 | WINED3DSP_WRITEMASK_1 | WINED3DSP_WRITEMASK_2;
+    DWORD sampler_type = arg->reg_maps->samplers[reg] & WINED3DSP_TEXTURETYPE_MASK;
+    glsl_sample_function_t sample_function;
+
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], src_mask, &src0_param);
+
+    /* Perform the last matrix multiply operation */
+    shader_addline(buffer, "tmp0.z = dot(vec3(T%u), vec3(%s));\n", reg, src0_param.param_str);
+
+    /* Construct the eye-ray vector from w coordinates */
+    shader_addline(buffer, "tmp1.xyz = normalize(vec3(gl_TexCoord[%u].w, gl_TexCoord[%u].w, gl_TexCoord[%u].w));\n",
+            current_state->texcoord_w[0], current_state->texcoord_w[1], reg);
+    shader_addline(buffer, "tmp0.xyz = -reflect(tmp1.xyz, normalize(tmp0.xyz));\n");
+
+    shader_glsl_append_dst(buffer, arg);
+    shader_glsl_get_write_mask(arg->dst, dst_mask);
+    /* Dependent read, not valid with conditional NP2 */
+    shader_glsl_get_sample_function(sampler_type, FALSE, FALSE, &sample_function);
+
+    /* Sample the texture using the calculated coordinates */
+    shader_addline(buffer, "%s(Psampler%u, tmp0.xyz)%s);\n", sample_function.name, reg, dst_mask);
+
+    current_state->current_row = 0;
+}
+
+/** Process the WINED3DSIO_TEXBEM instruction in GLSL.
+ * Apply a fake bump map transform.
+ * texbem is pshader <= 1.3 only, this saves a few version checks
+ */
+static void pshader_glsl_texbem(const SHADER_OPCODE_ARG *arg)
+{
+    IWineD3DPixelShaderImpl* This = (IWineD3DPixelShaderImpl*) arg->shader;
+    IWineD3DDeviceImpl* deviceImpl = (IWineD3DDeviceImpl*) This->baseShader.device;
+    char dst_swizzle[6];
+    glsl_sample_function_t sample_function;
+    glsl_src_param_t coord_param;
+    DWORD sampler_type;
+    DWORD sampler_idx;
+    DWORD mask;
+    DWORD flags;
+    char coord_mask[6];
+
+    sampler_idx = arg->dst & WINED3DSP_REGNUM_MASK;
+    flags = deviceImpl->stateBlock->textureState[sampler_idx][WINED3DTSS_TEXTURETRANSFORMFLAGS];
+
+    sampler_type = arg->reg_maps->samplers[sampler_idx] & WINED3DSP_TEXTURETYPE_MASK;
+    /* Dependent read, not valid with conditional NP2 */
+    shader_glsl_get_sample_function(sampler_type, FALSE, FALSE, &sample_function);
+    mask = sample_function.coord_mask;
+
+    shader_glsl_get_write_mask(arg->dst, dst_swizzle);
+
+    shader_glsl_get_write_mask(mask, coord_mask);
+
+    /* with projective textures, texbem only divides the static texture coord, not the displacement,
+         * so we can't let the GL handle this.
+         */
+    if (flags & WINED3DTTFF_PROJECTED) {
+        DWORD div_mask=0;
+        char coord_div_mask[3];
+        switch (flags & ~WINED3DTTFF_PROJECTED) {
+            case WINED3DTTFF_COUNT1: FIXME("WINED3DTTFF_PROJECTED with WINED3DTTFF_COUNT1?\n"); break;
+            case WINED3DTTFF_COUNT2: div_mask = WINED3DSP_WRITEMASK_1; break;
+            case WINED3DTTFF_COUNT3: div_mask = WINED3DSP_WRITEMASK_2; break;
+            case WINED3DTTFF_COUNT4:
+            case WINED3DTTFF_DISABLE: div_mask = WINED3DSP_WRITEMASK_3; break;
+        }
+        shader_glsl_get_write_mask(div_mask, coord_div_mask);
+        shader_addline(arg->buffer, "T%u%s /= T%u%s;\n", sampler_idx, coord_mask, sampler_idx, coord_div_mask);
+    }
+
+    shader_glsl_append_dst(arg->buffer, arg);
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_0|WINED3DSP_WRITEMASK_1, &coord_param);
+    if(arg->opcode->opcode == WINED3DSIO_TEXBEML) {
+        glsl_src_param_t luminance_param;
+        shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_2, &luminance_param);
+        shader_addline(arg->buffer, "(%s(Psampler%u, T%u%s + vec4(bumpenvmat%d * %s, 0.0, 0.0)%s )*(%s * luminancescale%d + luminanceoffset%d))%s);\n",
+                       sample_function.name, sampler_idx, sampler_idx, coord_mask, sampler_idx, coord_param.param_str, coord_mask,
+                       luminance_param.param_str, sampler_idx, sampler_idx, dst_swizzle);
+    } else {
+        shader_addline(arg->buffer, "%s(Psampler%u, T%u%s + vec4(bumpenvmat%d * %s, 0.0, 0.0)%s )%s);\n",
+                       sample_function.name, sampler_idx, sampler_idx, coord_mask, sampler_idx, coord_param.param_str, coord_mask, dst_swizzle);
+    }
+}
+
+static void pshader_glsl_bem(const SHADER_OPCODE_ARG *arg)
+{
+    glsl_src_param_t src0_param, src1_param;
+    DWORD sampler_idx = arg->dst & WINED3DSP_REGNUM_MASK;
+
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_0|WINED3DSP_WRITEMASK_1, &src0_param);
+    shader_glsl_add_src_param(arg, arg->src[1], arg->src_addr[1], WINED3DSP_WRITEMASK_0|WINED3DSP_WRITEMASK_1, &src1_param);
+
+    shader_glsl_append_dst(arg->buffer, arg);
+    shader_addline(arg->buffer, "%s + bumpenvmat%d * %s);\n",
+                   src0_param.param_str, sampler_idx, src1_param.param_str);
+}
+
+/** Process the WINED3DSIO_TEXREG2AR instruction in GLSL
+ * Sample 2D texture at dst using the alpha & red (wx) components of src as texture coordinates */
+static void pshader_glsl_texreg2ar(const SHADER_OPCODE_ARG *arg)
+{
+    glsl_src_param_t src0_param;
+    DWORD sampler_idx = arg->dst & WINED3DSP_REGNUM_MASK;
+    char dst_mask[6];
+
+    shader_glsl_append_dst(arg->buffer, arg);
+    shader_glsl_get_write_mask(arg->dst, dst_mask);
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_ALL, &src0_param);
+
+    shader_addline(arg->buffer, "texture2D(Psampler%u, %s.wx)%s);\n", sampler_idx, src0_param.reg_name, dst_mask);
+}
+
+/** Process the WINED3DSIO_TEXREG2GB instruction in GLSL
+ * Sample 2D texture at dst using the green & blue (yz) components of src as texture coordinates */
+static void pshader_glsl_texreg2gb(const SHADER_OPCODE_ARG *arg)
+{
+    glsl_src_param_t src0_param;
+    DWORD sampler_idx = arg->dst & WINED3DSP_REGNUM_MASK;
+    char dst_mask[6];
+
+    shader_glsl_append_dst(arg->buffer, arg);
+    shader_glsl_get_write_mask(arg->dst, dst_mask);
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_ALL, &src0_param);
+
+    shader_addline(arg->buffer, "texture2D(Psampler%u, %s.yz)%s);\n", sampler_idx, src0_param.reg_name, dst_mask);
+}
+
+/** Process the WINED3DSIO_TEXREG2RGB instruction in GLSL
+ * Sample texture at dst using the rgb (xyz) components of src as texture coordinates */
+static void pshader_glsl_texreg2rgb(const SHADER_OPCODE_ARG *arg)
+{
+    glsl_src_param_t src0_param;
+    char dst_mask[6];
+    DWORD sampler_idx = arg->dst & WINED3DSP_REGNUM_MASK;
+    DWORD sampler_type = arg->reg_maps->samplers[sampler_idx] & WINED3DSP_TEXTURETYPE_MASK;
+    glsl_sample_function_t sample_function;
+
+    shader_glsl_append_dst(arg->buffer, arg);
+    shader_glsl_get_write_mask(arg->dst, dst_mask);
+    /* Dependent read, not valid with conditional NP2 */
+    shader_glsl_get_sample_function(sampler_type, FALSE, FALSE, &sample_function);
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], sample_function.coord_mask, &src0_param);
+
+    shader_addline(arg->buffer, "%s(Psampler%u, %s)%s);\n", sample_function.name, sampler_idx, src0_param.param_str, dst_mask);
+}
+
+/** Process the WINED3DSIO_TEXKILL instruction in GLSL.
+ * If any of the first 3 components are < 0, discard this pixel */
+static void pshader_glsl_texkill(const SHADER_OPCODE_ARG *arg)
+{
+    IWineD3DPixelShaderImpl* This = (IWineD3DPixelShaderImpl*) arg->shader;
+    DWORD hex_version = This->baseShader.hex_version;
+    glsl_dst_param_t dst_param;
+
+    /* The argument is a destination parameter, and no writemasks are allowed */
+    shader_glsl_add_dst_param(arg, arg->dst, 0, &dst_param);
+    if((hex_version >= WINED3DPS_VERSION(2,0))) {
+        /* 2.0 shaders compare all 4 components in texkill */
+        shader_addline(arg->buffer, "if (any(lessThan(%s.xyzw, vec4(0.0)))) discard;\n", dst_param.reg_name);
+    } else {
+        /* 1.X shaders only compare the first 3 components, probably due to the nature of the texkill
+         * instruction as a tex* instruction, and phase, which kills all a / w components. Even if all
+         * 4 components are defined, only the first 3 are used
+         */
+        shader_addline(arg->buffer, "if (any(lessThan(%s.xyz, vec3(0.0)))) discard;\n", dst_param.reg_name);
+    }
+}
+
+/** Process the WINED3DSIO_DP2ADD instruction in GLSL.
+ * dst = dot2(src0, src1) + src2 */
+static void pshader_glsl_dp2add(const SHADER_OPCODE_ARG *arg)
+{
+    glsl_src_param_t src0_param;
+    glsl_src_param_t src1_param;
+    glsl_src_param_t src2_param;
+    DWORD write_mask;
+    unsigned int mask_size;
+
+    write_mask = shader_glsl_append_dst(arg->buffer, arg);
+    mask_size = shader_glsl_get_write_mask_size(write_mask);
+
+    shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_0 | WINED3DSP_WRITEMASK_1, &src0_param);
+    shader_glsl_add_src_param(arg, arg->src[1], arg->src_addr[1], WINED3DSP_WRITEMASK_0 | WINED3DSP_WRITEMASK_1, &src1_param);
+    shader_glsl_add_src_param(arg, arg->src[2], arg->src_addr[2], WINED3DSP_WRITEMASK_0, &src2_param);
+
+    if (mask_size > 1) {
+        shader_addline(arg->buffer, "vec%d(dot(%s, %s) + %s));\n", mask_size, src0_param.param_str, src1_param.param_str, src2_param.param_str);
+    } else {
+        shader_addline(arg->buffer, "dot(%s, %s) + %s);\n", src0_param.param_str, src1_param.param_str, src2_param.param_str);
+    }
+}
+
+static void pshader_glsl_input_pack(SHADER_BUFFER* buffer, const struct semantic* semantics_in,
+        IWineD3DPixelShader *iface, enum vertexprocessing_mode vertexprocessing)
+{
+   unsigned int i;
+   IWineD3DPixelShaderImpl *This = (IWineD3DPixelShaderImpl *) iface;
+
+   for (i = 0; i < MAX_REG_INPUT; i++) {
+
+       DWORD usage_token = semantics_in[i].usage;
+       DWORD register_token = semantics_in[i].reg;
+       DWORD usage, usage_idx;
+       char reg_mask[6];
+
+       /* Uninitialized */
+       if (!usage_token) continue;
+       usage = (usage_token & WINED3DSP_DCL_USAGE_MASK) >> WINED3DSP_DCL_USAGE_SHIFT;
+       usage_idx = (usage_token & WINED3DSP_DCL_USAGEINDEX_MASK) >> WINED3DSP_DCL_USAGEINDEX_SHIFT;
+       shader_glsl_get_write_mask(register_token, reg_mask);
+
+       switch(usage) {
+
+           case WINED3DDECLUSAGE_TEXCOORD:
+               if(usage_idx < 8 && vertexprocessing == pretransformed) {
+                   shader_addline(buffer, "IN[%u]%s = gl_TexCoord[%u]%s;\n",
+                                  This->input_reg_map[i], reg_mask, usage_idx, reg_mask);
+               } else {
+                   shader_addline(buffer, "IN[%u]%s = vec4(0.0, 0.0, 0.0, 0.0)%s;\n",
+                                  This->input_reg_map[i], reg_mask, reg_mask);
+               }
+               break;
+
+           case WINED3DDECLUSAGE_COLOR:
+               if (usage_idx == 0)
+                   shader_addline(buffer, "IN[%u]%s = vec4(gl_Color)%s;\n",
+                       This->input_reg_map[i], reg_mask, reg_mask);
+               else if (usage_idx == 1)
+                   shader_addline(buffer, "IN[%u]%s = vec4(gl_SecondaryColor)%s;\n",
+                       This->input_reg_map[i], reg_mask, reg_mask);
+               else
+                   shader_addline(buffer, "IN[%u]%s = vec4(0.0, 0.0, 0.0, 0.0)%s;\n",
+                       This->input_reg_map[i], reg_mask, reg_mask);
+               break;
+
+           default:
+               shader_addline(buffer, "IN[%u]%s = vec4(0.0, 0.0, 0.0, 0.0)%s;\n",
+                   This->input_reg_map[i], reg_mask, reg_mask);
+        }
+    }
+}
+
+/*********************************************
+ * Vertex Shader Specific Code begins here
+ ********************************************/
+
+static void add_glsl_program_entry(struct shader_glsl_priv *priv, struct glsl_shader_prog_link *entry) {
+    glsl_program_key_t *key;
+
+    key = HeapAlloc(GetProcessHeap(), 0, sizeof(glsl_program_key_t));
+    key->vshader = entry->vshader;
+    key->pshader = entry->pshader;
+    key->ps_args = entry->ps_args;
+
+    hash_table_put(priv->glsl_program_lookup, key, entry);
+}
+
+static struct glsl_shader_prog_link *get_glsl_program_entry(struct shader_glsl_priv *priv,
+        GLhandleARB vshader, IWineD3DPixelShader *pshader, struct ps_compile_args *ps_args) {
+    glsl_program_key_t key;
+
+    key.vshader = vshader;
+    key.pshader = pshader;
+    key.ps_args = *ps_args;
+
+    return (struct glsl_shader_prog_link *)hash_table_get(priv->glsl_program_lookup, &key);
+}
+
+static void delete_glsl_program_entry(struct shader_glsl_priv *priv, const WineD3D_GL_Info *gl_info,
+        struct glsl_shader_prog_link *entry)
+{
+    glsl_program_key_t *key;
+
+    key = HeapAlloc(GetProcessHeap(), 0, sizeof(glsl_program_key_t));
+    key->vshader = entry->vshader;
+    key->pshader = entry->pshader;
+    key->ps_args = entry->ps_args;
+    hash_table_remove(priv->glsl_program_lookup, key);
+
+    GL_EXTCALL(glDeleteObjectARB(entry->programId));
+    if (entry->vshader) list_remove(&entry->vshader_entry);
+    if (entry->pshader) list_remove(&entry->pshader_entry);
+    HeapFree(GetProcessHeap(), 0, entry->vuniformF_locations);
+    HeapFree(GetProcessHeap(), 0, entry->puniformF_locations);
+    HeapFree(GetProcessHeap(), 0, entry);
+}
+
+static void handle_ps3_input(SHADER_BUFFER *buffer, const struct semantic *semantics_in,
+        const struct semantic *semantics_out, const WineD3D_GL_Info *gl_info, const DWORD *map)
+{
+    unsigned int i, j;
+    DWORD usage_token, usage_token_out;
+    DWORD register_token, register_token_out;
+    DWORD usage, usage_idx, usage_out, usage_idx_out;
+    DWORD *set;
+    DWORD in_idx;
+    DWORD in_count = GL_LIMITS(glsl_varyings) / 4;
+    char reg_mask[6], reg_mask_out[6];
+    char destination[50];
+
+    set = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*set) * (in_count + 2));
+
+    if (!semantics_out) {
+        /* Save gl_FrontColor & gl_FrontSecondaryColor before overwriting them. */
+        shader_addline(buffer, "vec4 front_color = gl_FrontColor;\n");
+        shader_addline(buffer, "vec4 front_secondary_color = gl_FrontSecondaryColor;\n");
+    }
+
+    for(i = 0; i < MAX_REG_INPUT; i++) {
+        usage_token = semantics_in[i].usage;
+        if (!usage_token) continue;
+
+        in_idx = map[i];
+        if (in_idx >= (in_count + 2)) {
+            FIXME("More input varyings declared than supported, expect issues\n");
+            continue;
+        } else if(map[i] == -1) {
+            /* Declared, but not read register */
+            continue;
+        }
+
+        if (in_idx == in_count) {
+            sprintf(destination, "gl_FrontColor");
+        } else if (in_idx == in_count + 1) {
+            sprintf(destination, "gl_FrontSecondaryColor");
+        } else {
+            sprintf(destination, "IN[%u]", in_idx);
+        }
+
+        register_token = semantics_in[i].reg;
+
+        usage = (usage_token & WINED3DSP_DCL_USAGE_MASK) >> WINED3DSP_DCL_USAGE_SHIFT;
+        usage_idx = (usage_token & WINED3DSP_DCL_USAGEINDEX_MASK) >> WINED3DSP_DCL_USAGEINDEX_SHIFT;
+        set[map[i]] = shader_glsl_get_write_mask(register_token, reg_mask);
+
+        if(!semantics_out) {
+            switch(usage) {
+                case WINED3DDECLUSAGE_COLOR:
+                    if (usage_idx == 0)
+                        shader_addline(buffer, "%s%s = front_color%s;\n",
+                                       destination, reg_mask, reg_mask);
+                    else if (usage_idx == 1)
+                        shader_addline(buffer, "%s%s = front_secondary_color%s;\n",
+                                       destination, reg_mask, reg_mask);
+                    else
+                        shader_addline(buffer, "%s%s = vec4(0.0, 0.0, 0.0, 0.0)%s;\n",
+                                       destination, reg_mask, reg_mask);
+                    break;
+
+                case WINED3DDECLUSAGE_TEXCOORD:
+                    if (usage_idx < 8) {
+                        shader_addline(buffer, "%s%s = gl_TexCoord[%u]%s;\n",
+                                       destination, reg_mask, usage_idx, reg_mask);
+                    } else {
+                        shader_addline(buffer, "%s%s = vec4(0.0, 0.0, 0.0, 0.0)%s;\n",
+                                       destination, reg_mask, reg_mask);
+                    }
+                    break;
+
+                case WINED3DDECLUSAGE_FOG:
+                    shader_addline(buffer, "%s%s = vec4(gl_FogFragCoord, 0.0, 0.0, 0.0)%s;\n",
+                                   destination, reg_mask, reg_mask);
+                    break;
+
+                default:
+                    shader_addline(buffer, "%s%s = vec4(0.0, 0.0, 0.0, 0.0)%s;\n",
+                                   destination, reg_mask, reg_mask);
+            }
+        } else {
+            BOOL found = FALSE;
+            for(j = 0; j < MAX_REG_OUTPUT; j++) {
+                usage_token_out = semantics_out[j].usage;
+                if (!usage_token_out) continue;
+                register_token_out = semantics_out[j].reg;
+
+                usage_out = (usage_token_out & WINED3DSP_DCL_USAGE_MASK) >> WINED3DSP_DCL_USAGE_SHIFT;
+                usage_idx_out = (usage_token_out & WINED3DSP_DCL_USAGEINDEX_MASK) >> WINED3DSP_DCL_USAGEINDEX_SHIFT;
+                shader_glsl_get_write_mask(register_token_out, reg_mask_out);
+
+                if(usage == usage_out &&
+                   usage_idx == usage_idx_out) {
+                    shader_addline(buffer, "%s%s = OUT[%u]%s;\n",
+                                   destination, reg_mask, j, reg_mask);
+                    found = TRUE;
+                }
+            }
+            if(!found) {
+                shader_addline(buffer, "%s%s = vec4(0.0, 0.0, 0.0, 0.0)%s;\n",
+                               destination, reg_mask, reg_mask);
+            }
+        }
+    }
+
+    /* This is solely to make the compiler / linker happy and avoid warning about undefined
+     * varyings. It shouldn't result in any real code executed on the GPU, since all read
+     * input varyings are assigned above, if the optimizer works properly.
+     */
+    for(i = 0; i < in_count + 2; i++) {
+        if(set[i] != WINED3DSP_WRITEMASK_ALL) {
+            unsigned int size = 0;
+            memset(reg_mask, 0, sizeof(reg_mask));
+            if(!(set[i] & WINED3DSP_WRITEMASK_0)) {
+                reg_mask[size] = 'x';
+                size++;
+            }
+            if(!(set[i] & WINED3DSP_WRITEMASK_1)) {
+                reg_mask[size] = 'y';
+                size++;
+            }
+            if(!(set[i] & WINED3DSP_WRITEMASK_2)) {
+                reg_mask[size] = 'z';
+                size++;
+            }
+            if(!(set[i] & WINED3DSP_WRITEMASK_3)) {
+                reg_mask[size] = 'w';
+                size++;
+            }
+
+            if (i == in_count) {
+                sprintf(destination, "gl_FrontColor");
+            } else if (i == in_count + 1) {
+                sprintf(destination, "gl_FrontSecondaryColor");
+            } else {
+                sprintf(destination, "IN[%u]", i);
+            }
+
+            if (size == 1) {
+                shader_addline(buffer, "%s.%s = 0.0;\n", destination, reg_mask);
+            } else {
+                shader_addline(buffer, "%s.%s = vec%u(0.0);\n", destination, reg_mask, size);
+            }
+        }
+    }
+
+    HeapFree(GetProcessHeap(), 0, set);
+}
+
+static GLhandleARB generate_param_reorder_function(IWineD3DVertexShader *vertexshader,
+        IWineD3DPixelShader *pixelshader, const WineD3D_GL_Info *gl_info)
+{
+    GLhandleARB ret = 0;
+    IWineD3DVertexShaderImpl *vs = (IWineD3DVertexShaderImpl *) vertexshader;
+    IWineD3DPixelShaderImpl *ps = (IWineD3DPixelShaderImpl *) pixelshader;
+    IWineD3DDeviceImpl *device;
+    DWORD vs_major = WINED3DSHADER_VERSION_MAJOR(vs->baseShader.hex_version);
+    DWORD ps_major = ps ? WINED3DSHADER_VERSION_MAJOR(ps->baseShader.hex_version) : 0;
+    unsigned int i;
+    SHADER_BUFFER buffer;
+    DWORD usage_token;
+    DWORD register_token;
+    DWORD usage, usage_idx, writemask;
+    char reg_mask[6];
+    const struct semantic *semantics_out, *semantics_in;
+
+    buffer.buffer = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, SHADER_PGMSIZE);
+    buffer.bsize = 0;
+    buffer.lineNo = 0;
+    buffer.newline = TRUE;
+
+    shader_addline(&buffer, "#version 120\n");
+
+    if(vs_major < 3 && ps_major < 3) {
+        /* That one is easy: The vertex shader writes to the builtin varyings, the pixel shader reads from them.
+         * Take care about the texcoord .w fixup though if we're using the fixed function fragment pipeline
+         */
+        device = (IWineD3DDeviceImpl *) vs->baseShader.device;
+        if((GLINFO_LOCATION).set_texcoord_w && ps_major == 0 && vs_major > 0 &&
+            !device->frag_pipe->ffp_proj_control) {
+            shader_addline(&buffer, "void order_ps_input() {\n");
+            for(i = 0; i < min(8, MAX_REG_TEXCRD); i++) {
+                if(vs->baseShader.reg_maps.texcoord_mask[i] != 0 &&
+                   vs->baseShader.reg_maps.texcoord_mask[i] != WINED3DSP_WRITEMASK_ALL) {
+                    shader_addline(&buffer, "gl_TexCoord[%u].w = 1.0;\n", i);
+                }
+            }
+            shader_addline(&buffer, "}\n");
+        } else {
+            shader_addline(&buffer, "void order_ps_input() { /* do nothing */ }\n");
+        }
+    } else if(ps_major < 3 && vs_major >= 3) {
+        /* The vertex shader writes to its own varyings, the pixel shader needs them in the builtin ones */
+        semantics_out = vs->semantics_out;
+
+        shader_addline(&buffer, "void order_ps_input(in vec4 OUT[%u]) {\n", MAX_REG_OUTPUT);
+        for(i = 0; i < MAX_REG_OUTPUT; i++) {
+            usage_token = semantics_out[i].usage;
+            if (!usage_token) continue;
+            register_token = semantics_out[i].reg;
+
+            usage = (usage_token & WINED3DSP_DCL_USAGE_MASK) >> WINED3DSP_DCL_USAGE_SHIFT;
+            usage_idx = (usage_token & WINED3DSP_DCL_USAGEINDEX_MASK) >> WINED3DSP_DCL_USAGEINDEX_SHIFT;
+            writemask = shader_glsl_get_write_mask(register_token, reg_mask);
+
+            switch(usage) {
+                case WINED3DDECLUSAGE_COLOR:
+                    if (usage_idx == 0)
+                        shader_addline(&buffer, "gl_FrontColor%s = OUT[%u]%s;\n", reg_mask, i, reg_mask);
+                    else if (usage_idx == 1)
+                        shader_addline(&buffer, "gl_FrontSecondaryColor%s = OUT[%u]%s;\n", reg_mask, i, reg_mask);
+                    break;
+
+                case WINED3DDECLUSAGE_POSITION:
+                    shader_addline(&buffer, "gl_Position%s = OUT[%u]%s;\n", reg_mask, i, reg_mask);
+                    break;
+
+                case WINED3DDECLUSAGE_TEXCOORD:
+                    if (usage_idx < 8) {
+                        if(!(GLINFO_LOCATION).set_texcoord_w || ps_major > 0) writemask |= WINED3DSP_WRITEMASK_3;
+
+                        shader_addline(&buffer, "gl_TexCoord[%u]%s = OUT[%u]%s;\n",
+                                        usage_idx, reg_mask, i, reg_mask);
+                        if(!(writemask & WINED3DSP_WRITEMASK_3)) {
+                            shader_addline(&buffer, "gl_TexCoord[%u].w = 1.0;\n", usage_idx);
+                        }
+                    }
+                    break;
+
+                case WINED3DDECLUSAGE_PSIZE:
+                    shader_addline(&buffer, "gl_PointSize = OUT[%u].x;\n", i);
+                    break;
+
+                case WINED3DDECLUSAGE_FOG:
+                    shader_addline(&buffer, "gl_FogFragCoord = OUT[%u].%c;\n", i, reg_mask[1]);
+                    break;
+
+                default:
+                    break;
+            }
+        }
+        shader_addline(&buffer, "}\n");
+
+    } else if(ps_major >= 3 && vs_major >= 3) {
+        semantics_out = vs->semantics_out;
+        semantics_in = ps->semantics_in;
+
+        /* This one is tricky: a 3.0 pixel shader reads from a 3.0 vertex shader */
+        shader_addline(&buffer, "varying vec4 IN[%u];\n", GL_LIMITS(glsl_varyings) / 4);
+        shader_addline(&buffer, "void order_ps_input(in vec4 OUT[%u]) {\n", MAX_REG_OUTPUT);
+
+        /* First, sort out position and point size. Those are not passed to the pixel shader */
+        for(i = 0; i < MAX_REG_OUTPUT; i++) {
+            usage_token = semantics_out[i].usage;
+            if (!usage_token) continue;
+            register_token = semantics_out[i].reg;
+
+            usage = (usage_token & WINED3DSP_DCL_USAGE_MASK) >> WINED3DSP_DCL_USAGE_SHIFT;
+            usage_idx = (usage_token & WINED3DSP_DCL_USAGEINDEX_MASK) >> WINED3DSP_DCL_USAGEINDEX_SHIFT;
+            shader_glsl_get_write_mask(register_token, reg_mask);
+
+            switch(usage) {
+                case WINED3DDECLUSAGE_POSITION:
+                    shader_addline(&buffer, "gl_Position%s = OUT[%u]%s;\n", reg_mask, i, reg_mask);
+                    break;
+
+                case WINED3DDECLUSAGE_PSIZE:
+                    shader_addline(&buffer, "gl_PointSize = OUT[%u].x;\n", i);
+                    break;
+
+                default:
+                    break;
+            }
+        }
+
+        /* Then, fix the pixel shader input */
+        handle_ps3_input(&buffer, semantics_in, semantics_out, gl_info, ps->input_reg_map);
+
+        shader_addline(&buffer, "}\n");
+    } else if(ps_major >= 3 && vs_major < 3) {
+        semantics_in = ps->semantics_in;
+
+        shader_addline(&buffer, "varying vec4 IN[%u];\n", GL_LIMITS(glsl_varyings) / 4);
+        shader_addline(&buffer, "void order_ps_input() {\n");
+        /* The vertex shader wrote to the builtin varyings. There is no need to figure out position and
+         * point size, but we depend on the optimizers kindness to find out that the pixel shader doesn't
+         * read gl_TexCoord and gl_ColorX, otherwise we'll run out of varyings
+         */
+        handle_ps3_input(&buffer, semantics_in, NULL, gl_info, ps->input_reg_map);
+        shader_addline(&buffer, "}\n");
+    } else {
+        ERR("Unexpected vertex and pixel shader version condition: vs: %d, ps: %d\n", vs_major, ps_major);
+    }
+
+    ret = GL_EXTCALL(glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB));
+    checkGLcall("glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB)");
+    GL_EXTCALL(glShaderSourceARB(ret, 1, (const char**)&buffer.buffer, NULL));
+    checkGLcall("glShaderSourceARB(ret, 1, (const char**)&buffer.buffer, NULL)");
+    GL_EXTCALL(glCompileShaderARB(ret));
+    checkGLcall("glCompileShaderARB(ret)");
+
+    HeapFree(GetProcessHeap(), 0, buffer.buffer);
+    return ret;
+}
+
+static void hardcode_local_constants(IWineD3DBaseShaderImpl *shader, const WineD3D_GL_Info *gl_info,
+        GLhandleARB programId, char prefix)
+{
+    const local_constant *lconst;
+    GLuint tmp_loc;
+    const float *value;
+    char glsl_name[8];
+
+    LIST_FOR_EACH_ENTRY(lconst, &shader->baseShader.constantsF, local_constant, entry) {
+        value = (const float *)lconst->value;
+        _snprintf(glsl_name, sizeof(glsl_name), "%cLC%u", prefix, lconst->idx);
+        tmp_loc = GL_EXTCALL(glGetUniformLocationARB(programId, glsl_name));
+        GL_EXTCALL(glUniform4fvARB(tmp_loc, 1, value));
+    }
+    checkGLcall("Hardcoding local constants\n");
+}
+
+/** Sets the GLSL program ID for the given pixel and vertex shader combination.
+ * It sets the programId on the current StateBlock (because it should be called
+ * inside of the DrawPrimitive() part of the render loop).
+ *
+ * If a program for the given combination does not exist, create one, and store
+ * the program in the hash table.  If it creates a program, it will link the
+ * given objects, too.
+ */
+static void set_glsl_shader_program(IWineD3DDevice *iface, BOOL use_ps, BOOL use_vs) {
+    IWineD3DDeviceImpl *This               = (IWineD3DDeviceImpl *)iface;
+    struct shader_glsl_priv *priv          = (struct shader_glsl_priv *)This->shader_priv;
+    const WineD3D_GL_Info *gl_info         = &This->adapter->gl_info;
+    IWineD3DPixelShader  *pshader          = This->stateBlock->pixelShader;
+    IWineD3DVertexShader *vshader          = This->stateBlock->vertexShader;
+    struct glsl_shader_prog_link *entry    = NULL;
+    GLhandleARB programId                  = 0;
+    GLhandleARB reorder_shader_id          = 0;
+    int i;
+    char glsl_name[8];
+    GLhandleARB vshader_id, pshader_id;
+    struct ps_compile_args compile_args;
+
+    if(use_vs) {
+        IWineD3DVertexShaderImpl_CompileShader(vshader);
+        vshader_id = ((IWineD3DVertexShaderImpl*)vshader)->prgId;
+    } else {
+        vshader_id = 0;
+    }
+    if(use_ps) {
+        find_ps_compile_args((IWineD3DPixelShaderImpl*)This->stateBlock->pixelShader, This->stateBlock, &compile_args);
+    } else {
+        /* FIXME: Do we really have to spend CPU cycles to generate a few zeroed bytes? */
+        memset(&compile_args, 0, sizeof(compile_args));
+    }
+    entry = get_glsl_program_entry(priv, vshader_id, pshader, &compile_args);
+    if (entry) {
+        priv->glsl_program = entry;
+        return;
+    }
+
+    /* If we get to this point, then no matching program exists, so we create one */
+    programId = GL_EXTCALL(glCreateProgramObjectARB());
+    TRACE("Created new GLSL shader program %u\n", programId);
+
+    /* Create the entry */
+    entry = HeapAlloc(GetProcessHeap(), 0, sizeof(struct glsl_shader_prog_link));
+    entry->programId = programId;
+    entry->vshader = vshader_id;
+    entry->pshader = pshader;
+    entry->ps_args = compile_args;
+    /* Add the hash table entry */
+    add_glsl_program_entry(priv, entry);
+
+    /* Set the current program */
+    priv->glsl_program = entry;
+
+    /* Attach GLSL vshader */
+    if (vshader_id) {
+        int max_attribs = 16;   /* TODO: Will this always be the case? It is at the moment... */
+        char tmp_name[10];
+
+        reorder_shader_id = generate_param_reorder_function(vshader, pshader, gl_info);
+        TRACE("Attaching GLSL shader object %u to program %u\n", reorder_shader_id, programId);
+        GL_EXTCALL(glAttachObjectARB(programId, reorder_shader_id));
+        checkGLcall("glAttachObjectARB");
+        /* Flag the reorder function for deletion, then it will be freed automatically when the program
+         * is destroyed
+         */
+        GL_EXTCALL(glDeleteObjectARB(reorder_shader_id));
+
+        TRACE("Attaching GLSL shader object %u to program %u\n", vshader_id, programId);
+        GL_EXTCALL(glAttachObjectARB(programId, vshader_id));
+        checkGLcall("glAttachObjectARB");
+
+        /* Bind vertex attributes to a corresponding index number to match
+         * the same index numbers as ARB_vertex_programs (makes loading
+         * vertex attributes simpler).  With this method, we can use the
+         * exact same code to load the attributes later for both ARB and
+         * GLSL shaders.
+         *
+         * We have to do this here because we need to know the Program ID
+         * in order to make the bindings work, and it has to be done prior
+         * to linking the GLSL program. */
+        for (i = 0; i < max_attribs; ++i) {
+            if (((IWineD3DBaseShaderImpl*)vshader)->baseShader.reg_maps.attributes[i]) {
+                _snprintf(tmp_name, sizeof(tmp_name), "attrib%i", i);
+                GL_EXTCALL(glBindAttribLocationARB(programId, i, tmp_name));
+            }
+        }
+        checkGLcall("glBindAttribLocationARB");
+
+        list_add_head(&((IWineD3DBaseShaderImpl *)vshader)->baseShader.linked_programs, &entry->vshader_entry);
+    }
+
+    if(use_ps) {
+        pshader_id = find_gl_pshader((IWineD3DPixelShaderImpl *) pshader, &compile_args);
+    } else {
+        pshader_id = 0;
+    }
+
+    /* Attach GLSL pshader */
+    if (pshader_id) {
+        TRACE("Attaching GLSL shader object %u to program %u\n", pshader_id, programId);
+        GL_EXTCALL(glAttachObjectARB(programId, pshader_id));
+        checkGLcall("glAttachObjectARB");
+
+        list_add_head(&((IWineD3DBaseShaderImpl *)pshader)->baseShader.linked_programs, &entry->pshader_entry);
+    }
+
+    /* Link the program */
+    TRACE("Linking GLSL shader program %u\n", programId);
+    GL_EXTCALL(glLinkProgramARB(programId));
+    print_glsl_info_log(&GLINFO_LOCATION, programId);
+
+    entry->vuniformF_locations = HeapAlloc(GetProcessHeap(), 0, sizeof(GLhandleARB) * GL_LIMITS(vshader_constantsF));
+    for (i = 0; i < GL_LIMITS(vshader_constantsF); ++i) {
+        _snprintf(glsl_name, sizeof(glsl_name), "VC[%i]", i);
+        entry->vuniformF_locations[i] = GL_EXTCALL(glGetUniformLocationARB(programId, glsl_name));
+    }
+    for (i = 0; i < MAX_CONST_I; ++i) {
+        _snprintf(glsl_name, sizeof(glsl_name), "VI[%i]", i);
+        entry->vuniformI_locations[i] = GL_EXTCALL(glGetUniformLocationARB(programId, glsl_name));
+    }
+    entry->puniformF_locations = HeapAlloc(GetProcessHeap(), 0, sizeof(GLhandleARB) * GL_LIMITS(pshader_constantsF));
+    for (i = 0; i < GL_LIMITS(pshader_constantsF); ++i) {
+        _snprintf(glsl_name, sizeof(glsl_name), "PC[%i]", i);
+        entry->puniformF_locations[i] = GL_EXTCALL(glGetUniformLocationARB(programId, glsl_name));
+    }
+    for (i = 0; i < MAX_CONST_I; ++i) {
+        _snprintf(glsl_name, sizeof(glsl_name), "PI[%i]", i);
+        entry->puniformI_locations[i] = GL_EXTCALL(glGetUniformLocationARB(programId, glsl_name));
+    }
+
+    if(pshader) {
+        for(i = 0; i < ((IWineD3DPixelShaderImpl*)pshader)->numbumpenvmatconsts; i++) {
+            char name[32];
+            sprintf(name, "bumpenvmat%d", ((IWineD3DPixelShaderImpl*)pshader)->bumpenvmatconst[i].texunit);
+            entry->bumpenvmat_location[i] = GL_EXTCALL(glGetUniformLocationARB(programId, name));
+            sprintf(name, "luminancescale%d", ((IWineD3DPixelShaderImpl*)pshader)->luminanceconst[i].texunit);
+            entry->luminancescale_location[i] = GL_EXTCALL(glGetUniformLocationARB(programId, name));
+            sprintf(name, "luminanceoffset%d", ((IWineD3DPixelShaderImpl*)pshader)->luminanceconst[i].texunit);
+            entry->luminanceoffset_location[i] = GL_EXTCALL(glGetUniformLocationARB(programId, name));
+        }
+    }
+
+
+    entry->posFixup_location = GL_EXTCALL(glGetUniformLocationARB(programId, "posFixup"));
+    entry->ycorrection_location = GL_EXTCALL(glGetUniformLocationARB(programId, "ycorrection"));
+    checkGLcall("Find glsl program uniform locations");
+
+    if (pshader && WINED3DSHADER_VERSION_MAJOR(((IWineD3DPixelShaderImpl *)pshader)->baseShader.hex_version) >= 3
+            && ((IWineD3DPixelShaderImpl *)pshader)->declared_in_count > GL_LIMITS(glsl_varyings) / 4) {
+        TRACE("Shader %d needs vertex color clamping disabled\n", programId);
+        entry->vertex_color_clamp = GL_FALSE;
+    } else {
+        entry->vertex_color_clamp = GL_FIXED_ONLY_ARB;
+    }
+
+    /* Set the shader to allow uniform loading on it */
+    GL_EXTCALL(glUseProgramObjectARB(programId));
+    checkGLcall("glUseProgramObjectARB(programId)");
+
+    /* Load the vertex and pixel samplers now. The function that finds the mappings makes sure
+     * that it stays the same for each vertexshader-pixelshader pair(=linked glsl program). If
+     * a pshader with fixed function pipeline is used there are no vertex samplers, and if a
+     * vertex shader with fixed function pixel processing is used we make sure that the card
+     * supports enough samplers to allow the max number of vertex samplers with all possible
+     * fixed function fragment processing setups. So once the program is linked these samplers
+     * won't change.
+     */
+    if(vshader_id) {
+        /* Load vertex shader samplers */
+        shader_glsl_load_vsamplers(gl_info, (IWineD3DStateBlock*)This->stateBlock, programId);
+    }
+    if(pshader_id) {
+        /* Load pixel shader samplers */
+        shader_glsl_load_psamplers(gl_info, (IWineD3DStateBlock*)This->stateBlock, programId);
+    }
+
+    /* If the local constants do not have to be loaded with the environment constants,
+     * load them now to have them hardcoded in the GLSL program. This saves some CPU cycles
+     * later
+     */
+    if(pshader && !((IWineD3DPixelShaderImpl*)pshader)->baseShader.load_local_constsF) {
+        hardcode_local_constants((IWineD3DBaseShaderImpl *) pshader, gl_info, programId, 'P');
+    }
+    if(vshader && !((IWineD3DVertexShaderImpl*)vshader)->baseShader.load_local_constsF) {
+        hardcode_local_constants((IWineD3DBaseShaderImpl *) vshader, gl_info, programId, 'V');
+    }
+}
+
+static GLhandleARB create_glsl_blt_shader(const WineD3D_GL_Info *gl_info, enum tex_types tex_type)
+{
+    GLhandleARB program_id;
+    GLhandleARB vshader_id, pshader_id;
+    const char *blt_vshader[] = {
+        "#version 120\n"
+        "void main(void)\n"
+        "{\n"
+        "    gl_Position = gl_Vertex;\n"
+        "    gl_FrontColor = vec4(1.0);\n"
+        "    gl_TexCoord[0] = gl_MultiTexCoord0;\n"
+        "}\n"
+    };
+
+    const char *blt_pshaders[tex_type_count] = {
+        /* tex_1d */
+        NULL,
+        /* tex_2d */
+        "#version 120\n"
+        "uniform sampler2D sampler;\n"
+        "void main(void)\n"
+        "{\n"
+        "    gl_FragDepth = texture2D(sampler, gl_TexCoord[0].xy).x;\n"
+        "}\n",
+        /* tex_3d */
+        NULL,
+        /* tex_cube */
+        "#version 120\n"
+        "uniform samplerCube sampler;\n"
+        "void main(void)\n"
+        "{\n"
+        "    gl_FragDepth = textureCube(sampler, gl_TexCoord[0].xyz).x;\n"
+        "}\n",
+        /* tex_rect */
+        "#version 120\n"
+        "#extension GL_ARB_texture_rectangle : enable\n"
+        "uniform sampler2DRect sampler;\n"
+        "void main(void)\n"
+        "{\n"
+        "    gl_FragDepth = texture2DRect(sampler, gl_TexCoord[0].xy).x;\n"
+        "}\n",
+    };
+
+    if (!blt_pshaders[tex_type])
+    {
+        FIXME("tex_type %#x not supported\n", tex_type);
+        tex_type = tex_2d;
+    }
+
+    vshader_id = GL_EXTCALL(glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB));
+    GL_EXTCALL(glShaderSourceARB(vshader_id, 1, blt_vshader, NULL));
+    GL_EXTCALL(glCompileShaderARB(vshader_id));
+
+    pshader_id = GL_EXTCALL(glCreateShaderObjectARB(GL_FRAGMENT_SHADER_ARB));
+    GL_EXTCALL(glShaderSourceARB(pshader_id, 1, &blt_pshaders[tex_type], NULL));
+    GL_EXTCALL(glCompileShaderARB(pshader_id));
+
+    program_id = GL_EXTCALL(glCreateProgramObjectARB());
+    GL_EXTCALL(glAttachObjectARB(program_id, vshader_id));
+    GL_EXTCALL(glAttachObjectARB(program_id, pshader_id));
+    GL_EXTCALL(glLinkProgramARB(program_id));
+
+    print_glsl_info_log(&GLINFO_LOCATION, program_id);
+
+    /* Once linked we can mark the shaders for deletion. They will be deleted once the program
+     * is destroyed
+     */
+    GL_EXTCALL(glDeleteObjectARB(vshader_id));
+    GL_EXTCALL(glDeleteObjectARB(pshader_id));
+    return program_id;
+}
+
+static void shader_glsl_select(IWineD3DDevice *iface, BOOL usePS, BOOL useVS) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    struct shader_glsl_priv *priv = (struct shader_glsl_priv *)This->shader_priv;
+    const WineD3D_GL_Info *gl_info = &This->adapter->gl_info;
+    GLhandleARB program_id = 0;
+    GLenum old_vertex_color_clamp, current_vertex_color_clamp;
+
+    old_vertex_color_clamp = priv->glsl_program ? priv->glsl_program->vertex_color_clamp : GL_FIXED_ONLY_ARB;
+
+    if (useVS || usePS) set_glsl_shader_program(iface, usePS, useVS);
+    else priv->glsl_program = NULL;
+
+    current_vertex_color_clamp = priv->glsl_program ? priv->glsl_program->vertex_color_clamp : GL_FIXED_ONLY_ARB;
+
+    if (old_vertex_color_clamp != current_vertex_color_clamp) {
+        if (GL_SUPPORT(ARB_COLOR_BUFFER_FLOAT)) {
+            GL_EXTCALL(glClampColorARB(GL_CLAMP_VERTEX_COLOR_ARB, current_vertex_color_clamp));
+            checkGLcall("glClampColorARB");
+        } else {
+            FIXME("vertex color clamp needs to be changed, but extension not supported.\n");
+        }
+    }
+
+    program_id = priv->glsl_program ? priv->glsl_program->programId : 0;
+    if (program_id) TRACE("Using GLSL program %u\n", program_id);
+    GL_EXTCALL(glUseProgramObjectARB(program_id));
+    checkGLcall("glUseProgramObjectARB");
+}
+
+static void shader_glsl_select_depth_blt(IWineD3DDevice *iface, enum tex_types tex_type) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    const WineD3D_GL_Info *gl_info = &This->adapter->gl_info;
+    struct shader_glsl_priv *priv = (struct shader_glsl_priv *) This->shader_priv;
+    GLhandleARB *blt_program = &priv->depth_blt_program[tex_type];
+
+    if (!*blt_program) {
+        GLhandleARB loc;
+        *blt_program = create_glsl_blt_shader(gl_info, tex_type);
+        loc = GL_EXTCALL(glGetUniformLocationARB(*blt_program, "sampler"));
+        GL_EXTCALL(glUseProgramObjectARB(*blt_program));
+        GL_EXTCALL(glUniform1iARB(loc, 0));
+    } else {
+        GL_EXTCALL(glUseProgramObjectARB(*blt_program));
+    }
+}
+
+static void shader_glsl_deselect_depth_blt(IWineD3DDevice *iface) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    const WineD3D_GL_Info *gl_info = &This->adapter->gl_info;
+    struct shader_glsl_priv *priv = (struct shader_glsl_priv *) This->shader_priv;
+    GLhandleARB program_id;
+
+    program_id = priv->glsl_program ? priv->glsl_program->programId : 0;
+    if (program_id) TRACE("Using GLSL program %u\n", program_id);
+
+    GL_EXTCALL(glUseProgramObjectARB(program_id));
+    checkGLcall("glUseProgramObjectARB");
+}
+
+static void shader_glsl_cleanup(IWineD3DDevice *iface) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    const WineD3D_GL_Info *gl_info = &This->adapter->gl_info;
+    GL_EXTCALL(glUseProgramObjectARB(0));
+}
+
+static void shader_glsl_destroy(IWineD3DBaseShader *iface) {
+    const struct list *linked_programs;
+    IWineD3DBaseShaderImpl *This = (IWineD3DBaseShaderImpl *) iface;
+    IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)This->baseShader.device;
+    struct shader_glsl_priv *priv = (struct shader_glsl_priv *)device->shader_priv;
+    const WineD3D_GL_Info *gl_info = &device->adapter->gl_info;
+    IWineD3DPixelShaderImpl *ps = NULL;
+    IWineD3DVertexShaderImpl *vs = NULL;
+
+    /* Note: Do not use QueryInterface here to find out which shader type this is because this code
+     * can be called from IWineD3DBaseShader::Release
+     */
+    char pshader = shader_is_pshader_version(This->baseShader.hex_version);
+
+    if(pshader) {
+        ps = (IWineD3DPixelShaderImpl *) This;
+        if(ps->num_gl_shaders == 0) return;
+    } else {
+        vs = (IWineD3DVertexShaderImpl *) This;
+        if(vs->prgId == 0) return;
+    }
+
+    linked_programs = &This->baseShader.linked_programs;
+
+    TRACE("Deleting linked programs\n");
+    if (linked_programs->next) {
+        struct glsl_shader_prog_link *entry, *entry2;
+
+        if(pshader) {
+            LIST_FOR_EACH_ENTRY_SAFE(entry, entry2, linked_programs, struct glsl_shader_prog_link, pshader_entry) {
+                delete_glsl_program_entry(priv, gl_info, entry);
+            }
+        } else {
+            LIST_FOR_EACH_ENTRY_SAFE(entry, entry2, linked_programs, struct glsl_shader_prog_link, vshader_entry) {
+                delete_glsl_program_entry(priv, gl_info, entry);
+            }
+        }
+    }
+
+    if(pshader) {
+        UINT i;
+
+        ENTER_GL();
+        for(i = 0; i < ps->num_gl_shaders; i++) {
+            TRACE("deleting pshader %u\n", ps->gl_shaders[i].prgId);
+            GL_EXTCALL(glDeleteObjectARB(ps->gl_shaders[i].prgId));
+            checkGLcall("glDeleteObjectARB");
+        }
+        LEAVE_GL();
+        HeapFree(GetProcessHeap(), 0, ps->gl_shaders);
+        ps->gl_shaders = NULL;
+        ps->num_gl_shaders = 0;
+    } else {
+        TRACE("Deleting shader object %u\n", vs->prgId);
+        ENTER_GL();
+        GL_EXTCALL(glDeleteObjectARB(vs->prgId));
+        checkGLcall("glDeleteObjectARB");
+        LEAVE_GL();
+        vs->prgId = 0;
+        vs->baseShader.is_compiled = FALSE;
+    }
+}
+
+static unsigned int glsl_program_key_hash(const void *key)
+{
+    const glsl_program_key_t *k = (const glsl_program_key_t *)key;
+
+    unsigned int hash = k->vshader | ((DWORD_PTR) k->pshader) << 16;
+    hash += ~(hash << 15);
+    hash ^=  (hash >> 10);
+    hash +=  (hash << 3);
+    hash ^=  (hash >> 6);
+    hash += ~(hash << 11);
+    hash ^=  (hash >> 16);
+
+    return hash;
+}
+
+static BOOL glsl_program_key_compare(const void *keya, const void *keyb)
+{
+    const glsl_program_key_t *ka = (const glsl_program_key_t *)keya;
+    const glsl_program_key_t *kb = (const glsl_program_key_t *)keyb;
+
+    return ka->vshader == kb->vshader && ka->pshader == kb->pshader &&
+           (memcmp(&ka->ps_args, &kb->ps_args, sizeof(kb->ps_args)) == 0);
+}
+
+static HRESULT shader_glsl_alloc(IWineD3DDevice *iface) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    struct shader_glsl_priv *priv = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(struct shader_glsl_priv));
+    priv->glsl_program_lookup = hash_table_create(glsl_program_key_hash, glsl_program_key_compare);
+    This->shader_priv = priv;
+    return WINED3D_OK;
+}
+
+static void shader_glsl_free(IWineD3DDevice *iface) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    const WineD3D_GL_Info *gl_info = &This->adapter->gl_info;
+    struct shader_glsl_priv *priv = (struct shader_glsl_priv *)This->shader_priv;
+    int i;
+
+    for (i = 0; i < tex_type_count; ++i)
+    {
+        if (priv->depth_blt_program[i])
+        {
+            GL_EXTCALL(glDeleteObjectARB(priv->depth_blt_program[i]));
+        }
+    }
+
+    hash_table_destroy(priv->glsl_program_lookup, NULL, NULL);
+
+    HeapFree(GetProcessHeap(), 0, This->shader_priv);
+    This->shader_priv = NULL;
+}
+
+static BOOL shader_glsl_dirty_const(IWineD3DDevice *iface) {
+    /* TODO: GL_EXT_bindable_uniform can be used to share constants across shaders */
+    return FALSE;
+}
+
+static GLuint shader_glsl_generate_pshader(IWineD3DPixelShader *iface, SHADER_BUFFER *buffer) {
+    IWineD3DPixelShaderImpl *This = (IWineD3DPixelShaderImpl *)iface;
+    const struct shader_reg_maps *reg_maps = &This->baseShader.reg_maps;
+    CONST DWORD *function = This->baseShader.function;
+    const char *fragcolor;
+    const WineD3D_GL_Info *gl_info = &((IWineD3DDeviceImpl *)This->baseShader.device)->adapter->gl_info;
+
+    /* Create the hw GLSL shader object and assign it as the shader->prgId */
+    GLhandleARB shader_obj = GL_EXTCALL(glCreateShaderObjectARB(GL_FRAGMENT_SHADER_ARB));
+
+    shader_addline(buffer, "#version 120\n");
+
+    if (GL_SUPPORT(ARB_DRAW_BUFFERS)) {
+        shader_addline(buffer, "#extension GL_ARB_draw_buffers : enable\n");
+    }
+    if (GL_SUPPORT(ARB_TEXTURE_RECTANGLE)) {
+        /* The spec says that it doesn't have to be explicitly enabled, but the nvidia
+         * drivers write a warning if we don't do so
+         */
+        shader_addline(buffer, "#extension GL_ARB_texture_rectangle : enable\n");
+    }
+
+    /* Base Declarations */
+    shader_generate_glsl_declarations( (IWineD3DBaseShader*) This, reg_maps, buffer, &GLINFO_LOCATION);
+
+    /* Pack 3.0 inputs */
+    if (This->baseShader.hex_version >= WINED3DPS_VERSION(3,0)) {
+
+        if(((IWineD3DDeviceImpl *) This->baseShader.device)->strided_streams.u.s.position_transformed) {
+            pshader_glsl_input_pack(buffer, This->semantics_in, iface, pretransformed);
+        } else if(!use_vs((IWineD3DDeviceImpl *) This->baseShader.device)) {
+            pshader_glsl_input_pack(buffer, This->semantics_in, iface, fixedfunction);
+        }
+    }
+
+    /* Base Shader Body */
+    shader_generate_main( (IWineD3DBaseShader*) This, buffer, reg_maps, function);
+
+    /* Pixel shaders < 2.0 place the resulting color in R0 implicitly */
+    if (This->baseShader.hex_version < WINED3DPS_VERSION(2,0)) {
+        /* Some older cards like GeforceFX ones don't support multiple buffers, so also not gl_FragData */
+        if(GL_SUPPORT(ARB_DRAW_BUFFERS))
+            shader_addline(buffer, "gl_FragData[0] = R0;\n");
+        else
+            shader_addline(buffer, "gl_FragColor = R0;\n");
+    }
+
+    if(GL_SUPPORT(ARB_DRAW_BUFFERS)) {
+        fragcolor = "gl_FragData[0]";
+    } else {
+        fragcolor = "gl_FragColor";
+    }
+    if(((IWineD3DDeviceImpl *)This->baseShader.device)->stateBlock->renderState[WINED3DRS_SRGBWRITEENABLE]) {
+        shader_addline(buffer, "tmp0.xyz = pow(%s.xyz, vec3(%f, %f, %f)) * vec3(%f, %f, %f) - vec3(%f, %f, %f);\n",
+                        fragcolor, srgb_pow, srgb_pow, srgb_pow, srgb_mul_high, srgb_mul_high, srgb_mul_high,
+                        srgb_sub_high, srgb_sub_high, srgb_sub_high);
+        shader_addline(buffer, "tmp1.xyz = %s.xyz * srgb_mul_low.xyz;\n", fragcolor);
+        shader_addline(buffer, "%s.x = %s.x < srgb_comparison.x ? tmp1.x : tmp0.x;\n", fragcolor, fragcolor);
+        shader_addline(buffer, "%s.y = %s.y < srgb_comparison.y ? tmp1.y : tmp0.y;\n", fragcolor, fragcolor);
+        shader_addline(buffer, "%s.z = %s.z < srgb_comparison.z ? tmp1.z : tmp0.z;\n", fragcolor, fragcolor);
+        shader_addline(buffer, "%s = clamp(%s, 0.0, 1.0);\n", fragcolor, fragcolor);
+    }
+    /* Pixel shader < 3.0 do not replace the fog stage.
+     * This implements linear fog computation and blending.
+     * TODO: non linear fog
+     * NOTE: gl_Fog.start and gl_Fog.end don't hold fog start s and end e but
+     * -1/(e-s) and e/(e-s) respectively.
+     */
+    if(This->baseShader.hex_version < WINED3DPS_VERSION(3,0)) {
+        shader_addline(buffer, "float Fog = clamp(gl_FogFragCoord * gl_Fog.start + gl_Fog.end, 0.0, 1.0);\n");
+        shader_addline(buffer, "%s.xyz = mix(gl_Fog.color.xyz, %s.xyz, Fog);\n", fragcolor, fragcolor);
+    }
+
+    shader_addline(buffer, "}\n");
+
+    TRACE("Compiling shader object %u\n", shader_obj);
+    GL_EXTCALL(glShaderSourceARB(shader_obj, 1, (const char**)&buffer->buffer, NULL));
+    GL_EXTCALL(glCompileShaderARB(shader_obj));
+    print_glsl_info_log(&GLINFO_LOCATION, shader_obj);
+
+    /* Store the shader object */
+    return shader_obj;
+}
+
+static void shader_glsl_generate_vshader(IWineD3DVertexShader *iface, SHADER_BUFFER *buffer) {
+    IWineD3DVertexShaderImpl *This = (IWineD3DVertexShaderImpl *)iface;
+    const struct shader_reg_maps *reg_maps = &This->baseShader.reg_maps;
+    CONST DWORD *function = This->baseShader.function;
+    const WineD3D_GL_Info *gl_info = &((IWineD3DDeviceImpl *)This->baseShader.device)->adapter->gl_info;
+
+    /* Create the hw GLSL shader program and assign it as the shader->prgId */
+    GLhandleARB shader_obj = GL_EXTCALL(glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB));
+
+    shader_addline(buffer, "#version 120\n");
+
+    /* Base Declarations */
+    shader_generate_glsl_declarations( (IWineD3DBaseShader*) This, reg_maps, buffer, &GLINFO_LOCATION);
+
+    /* Base Shader Body */
+    shader_generate_main( (IWineD3DBaseShader*) This, buffer, reg_maps, function);
+
+    /* Unpack 3.0 outputs */
+    if (This->baseShader.hex_version >= WINED3DVS_VERSION(3,0)) {
+        shader_addline(buffer, "order_ps_input(OUT);\n");
+    } else {
+        shader_addline(buffer, "order_ps_input();\n");
+    }
+
+    /* If this shader doesn't use fog copy the z coord to the fog coord so that we can use table fog */
+    if (!reg_maps->fog)
+        shader_addline(buffer, "gl_FogFragCoord = gl_Position.z;\n");
+
+    /* Write the final position.
+     *
+     * OpenGL coordinates specify the center of the pixel while d3d coords specify
+     * the corner. The offsets are stored in z and w in posFixup. posFixup.y contains
+     * 1.0 or -1.0 to turn the rendering upside down for offscreen rendering. PosFixup.x
+     * contains 1.0 to allow a mad.
+     */
+    shader_addline(buffer, "gl_Position.y = gl_Position.y * posFixup.y;\n");
+    shader_addline(buffer, "gl_Position.xy += posFixup.zw * gl_Position.ww;\n");
+
+    /* Z coord [0;1]->[-1;1] mapping, see comment in transform_projection in state.c
+     *
+     * Basically we want (in homogeneous coordinates) z = z * 2 - 1. However, shaders are run
+     * before the homogeneous divide, so we have to take the w into account: z = ((z / w) * 2 - 1) * w,
+     * which is the same as z = z * 2 - w.
+     */
+    shader_addline(buffer, "gl_Position.z = gl_Position.z * 2.0 - gl_Position.w;\n");
+
+    shader_addline(buffer, "}\n");
+
+    TRACE("Compiling shader object %u\n", shader_obj);
+    GL_EXTCALL(glShaderSourceARB(shader_obj, 1, (const char**)&buffer->buffer, NULL));
+    GL_EXTCALL(glCompileShaderARB(shader_obj));
+    print_glsl_info_log(&GLINFO_LOCATION, shader_obj);
+
+    /* Store the shader object */
+    This->prgId = shader_obj;
+}
+
+static void shader_glsl_get_caps(WINED3DDEVTYPE devtype, const WineD3D_GL_Info *gl_info, struct shader_caps *pCaps)
+{
+    /* Nvidia Geforce6/7 or Ati R4xx/R5xx cards with GLSL support, support VS 3.0 but older Nvidia/Ati
+     * models with GLSL support only support 2.0. In case of nvidia we can detect VS 2.0 support using
+     * vs_nv_version which is based on NV_vertex_program.
+     * For Ati cards there's no way using glsl (it abstracts the lowlevel info away) and also not
+     * using ARB_vertex_program. It is safe to assume that when a card supports pixel shader 2.0 it
+     * supports vertex shader 2.0 too and the way around. We can detect ps2.0 using the maximum number
+     * of native instructions, so use that here. For more info see the pixel shader versioning code below.
+     */
+    if((GLINFO_LOCATION.vs_nv_version == VS_VERSION_20) || (GLINFO_LOCATION.ps_arb_max_instructions <= 512))
+        pCaps->VertexShaderVersion = WINED3DVS_VERSION(2,0);
+    else
+        pCaps->VertexShaderVersion = WINED3DVS_VERSION(3,0);
+    TRACE_(d3d_caps)("Hardware vertex shader version %d.%d enabled (GLSL)\n", (pCaps->VertexShaderVersion >> 8) & 0xff, pCaps->VertexShaderVersion & 0xff);
+    pCaps->MaxVertexShaderConst = GL_LIMITS(vshader_constantsF);
+
+    /* Older DX9-class videocards (GeforceFX / Radeon >9500/X*00) only support pixel shader 2.0/2.0a/2.0b.
+     * In OpenGL the extensions related to GLSL abstract lowlevel GL info away which is needed
+     * to distinguish between 2.0 and 3.0 (and 2.0a/2.0b). In case of Nvidia we use their fragment
+     * program extensions. On other hardware including ATI GL_ARB_fragment_program offers the info
+     * in max native instructions. Intel and others also offer the info in this extension but they
+     * don't support GLSL (at least on Windows).
+     *
+     * PS2.0 requires at least 96 instructions, 2.0a/2.0b go up to 512. Assume that if the number
+     * of instructions is 512 or less we have to do with ps2.0 hardware.
+     * NOTE: ps3.0 hardware requires 512 or more instructions but ati and nvidia offer 'enough' (1024 vs 4096) on their most basic ps3.0 hardware.
+     */
+    if((GLINFO_LOCATION.ps_nv_version == PS_VERSION_20) || (GLINFO_LOCATION.ps_arb_max_instructions <= 512))
+        pCaps->PixelShaderVersion = WINED3DPS_VERSION(2,0);
+    else
+        pCaps->PixelShaderVersion = WINED3DPS_VERSION(3,0);
+
+    /* FIXME: The following line is card dependent. -8.0 to 8.0 is the
+     * Direct3D minimum requirement.
+     *
+     * Both GL_ARB_fragment_program and GLSL require a "maximum representable magnitude"
+     * of colors to be 2^10, and 2^32 for other floats. Should we use 1024 here?
+     *
+     * The problem is that the refrast clamps temporary results in the shader to
+     * [-MaxValue;+MaxValue]. If the card's max value is bigger than the one we advertize here,
+     * then applications may miss the clamping behavior. On the other hand, if it is smaller,
+     * the shader will generate incorrect results too. Unfortunately, GL deliberately doesn't
+     * offer a way to query this.
+     */
+    pCaps->PixelShader1xMaxValue = 8.0;
+    TRACE_(d3d_caps)("Hardware pixel shader version %d.%d enabled (GLSL)\n", (pCaps->PixelShaderVersion >> 8) & 0xff, pCaps->PixelShaderVersion & 0xff);
+}
+
+static BOOL shader_glsl_color_fixup_supported(struct color_fixup_desc fixup)
+{
+    if (TRACE_ON(d3d_shader) && TRACE_ON(d3d))
+    {
+        TRACE("Checking support for fixup:\n");
+        dump_color_fixup_desc(fixup);
+    }
+
+    /* We support everything except YUV conversions. */
+    if (!is_yuv_fixup(fixup))
+    {
+        TRACE("[OK]\n");
+        return TRUE;
+    }
+
+    TRACE("[FAILED]\n");
+    return FALSE;
+}
+
+static const SHADER_HANDLER shader_glsl_instruction_handler_table[WINED3DSIH_TABLE_SIZE] =
+{
+    /* WINED3DSIH_ABS           */ shader_glsl_map2gl,
+    /* WINED3DSIH_ADD           */ shader_glsl_arith,
+    /* WINED3DSIH_BEM           */ pshader_glsl_bem,
+    /* WINED3DSIH_BREAK         */ shader_glsl_break,
+    /* WINED3DSIH_BREAKC        */ shader_glsl_breakc,
+    /* WINED3DSIH_BREAKP        */ NULL,
+    /* WINED3DSIH_CALL          */ shader_glsl_call,
+    /* WINED3DSIH_CALLNZ        */ shader_glsl_callnz,
+    /* WINED3DSIH_CMP           */ shader_glsl_cmp,
+    /* WINED3DSIH_CND           */ shader_glsl_cnd,
+    /* WINED3DSIH_CRS           */ shader_glsl_cross,
+    /* WINED3DSIH_DCL           */ NULL,
+    /* WINED3DSIH_DEF           */ NULL,
+    /* WINED3DSIH_DEFB          */ NULL,
+    /* WINED3DSIH_DEFI          */ NULL,
+    /* WINED3DSIH_DP2ADD        */ pshader_glsl_dp2add,
+    /* WINED3DSIH_DP3           */ shader_glsl_dot,
+    /* WINED3DSIH_DP4           */ shader_glsl_dot,
+    /* WINED3DSIH_DST           */ shader_glsl_dst,
+    /* WINED3DSIH_DSX           */ shader_glsl_map2gl,
+    /* WINED3DSIH_DSY           */ shader_glsl_map2gl,
+    /* WINED3DSIH_ELSE          */ shader_glsl_else,
+    /* WINED3DSIH_ENDIF         */ shader_glsl_end,
+    /* WINED3DSIH_ENDLOOP       */ shader_glsl_end,
+    /* WINED3DSIH_ENDREP        */ shader_glsl_end,
+    /* WINED3DSIH_EXP           */ shader_glsl_map2gl,
+    /* WINED3DSIH_EXPP          */ shader_glsl_expp,
+    /* WINED3DSIH_FRC           */ shader_glsl_map2gl,
+    /* WINED3DSIH_IF            */ shader_glsl_if,
+    /* WINED3DSIH_IFC           */ shader_glsl_ifc,
+    /* WINED3DSIH_LABEL         */ shader_glsl_label,
+    /* WINED3DSIH_LIT           */ shader_glsl_lit,
+    /* WINED3DSIH_LOG           */ shader_glsl_log,
+    /* WINED3DSIH_LOGP          */ shader_glsl_log,
+    /* WINED3DSIH_LOOP          */ shader_glsl_loop,
+    /* WINED3DSIH_LRP           */ shader_glsl_lrp,
+    /* WINED3DSIH_M3x2          */ shader_glsl_mnxn,
+    /* WINED3DSIH_M3x3          */ shader_glsl_mnxn,
+    /* WINED3DSIH_M3x4          */ shader_glsl_mnxn,
+    /* WINED3DSIH_M4x3          */ shader_glsl_mnxn,
+    /* WINED3DSIH_M4x4          */ shader_glsl_mnxn,
+    /* WINED3DSIH_MAD           */ shader_glsl_mad,
+    /* WINED3DSIH_MAX           */ shader_glsl_map2gl,
+    /* WINED3DSIH_MIN           */ shader_glsl_map2gl,
+    /* WINED3DSIH_MOV           */ shader_glsl_mov,
+    /* WINED3DSIH_MOVA          */ shader_glsl_mov,
+    /* WINED3DSIH_MUL           */ shader_glsl_arith,
+    /* WINED3DSIH_NOP           */ NULL,
+    /* WINED3DSIH_NRM           */ shader_glsl_map2gl,
+    /* WINED3DSIH_PHASE         */ NULL,
+    /* WINED3DSIH_POW           */ shader_glsl_pow,
+    /* WINED3DSIH_RCP           */ shader_glsl_rcp,
+    /* WINED3DSIH_REP           */ shader_glsl_rep,
+    /* WINED3DSIH_RET           */ NULL,
+    /* WINED3DSIH_RSQ           */ shader_glsl_rsq,
+    /* WINED3DSIH_SETP          */ NULL,
+    /* WINED3DSIH_SGE           */ shader_glsl_compare,
+    /* WINED3DSIH_SGN           */ shader_glsl_map2gl,
+    /* WINED3DSIH_SINCOS        */ shader_glsl_sincos,
+    /* WINED3DSIH_SLT           */ shader_glsl_compare,
+    /* WINED3DSIH_SUB           */ shader_glsl_arith,
+    /* WINED3DSIH_TEX           */ pshader_glsl_tex,
+    /* WINED3DSIH_TEXBEM        */ pshader_glsl_texbem,
+    /* WINED3DSIH_TEXBEML       */ pshader_glsl_texbem,
+    /* WINED3DSIH_TEXCOORD      */ pshader_glsl_texcoord,
+    /* WINED3DSIH_TEXDEPTH      */ pshader_glsl_texdepth,
+    /* WINED3DSIH_TEXDP3        */ pshader_glsl_texdp3,
+    /* WINED3DSIH_TEXDP3TEX     */ pshader_glsl_texdp3tex,
+    /* WINED3DSIH_TEXKILL       */ pshader_glsl_texkill,
+    /* WINED3DSIH_TEXLDD        */ NULL,
+    /* WINED3DSIH_TEXLDL        */ shader_glsl_texldl,
+    /* WINED3DSIH_TEXM3x2DEPTH  */ pshader_glsl_texm3x2depth,
+    /* WINED3DSIH_TEXM3x2PAD    */ pshader_glsl_texm3x2pad,
+    /* WINED3DSIH_TEXM3x2TEX    */ pshader_glsl_texm3x2tex,
+    /* WINED3DSIH_TEXM3x3       */ pshader_glsl_texm3x3,
+    /* WINED3DSIH_TEXM3x3DIFF   */ NULL,
+    /* WINED3DSIH_TEXM3x3PAD    */ pshader_glsl_texm3x3pad,
+    /* WINED3DSIH_TEXM3x3SPEC   */ pshader_glsl_texm3x3spec,
+    /* WINED3DSIH_TEXM3x3TEX    */ pshader_glsl_texm3x3tex,
+    /* WINED3DSIH_TEXM3x3VSPEC  */ pshader_glsl_texm3x3vspec,
+    /* WINED3DSIH_TEXREG2AR     */ pshader_glsl_texreg2ar,
+    /* WINED3DSIH_TEXREG2GB     */ pshader_glsl_texreg2gb,
+    /* WINED3DSIH_TEXREG2RGB    */ pshader_glsl_texreg2rgb,
+};
+
+const shader_backend_t glsl_shader_backend = {
+    shader_glsl_instruction_handler_table,
+    shader_glsl_select,
+    shader_glsl_select_depth_blt,
+    shader_glsl_deselect_depth_blt,
+    shader_glsl_load_constants,
+    shader_glsl_cleanup,
+    shader_glsl_color_correction,
+    shader_glsl_destroy,
+    shader_glsl_alloc,
+    shader_glsl_free,
+    shader_glsl_dirty_const,
+    shader_glsl_generate_pshader,
+    shader_glsl_generate_vshader,
+    shader_glsl_get_caps,
+    shader_glsl_color_fixup_supported,
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/indexbuffer.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/indexbuffer.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/indexbuffer.c	(revision 16410)
@@ -0,0 +1,232 @@
+/*
+ * IWineD3DIndexBuffer Implementation
+ *
+ * Copyright 2002-2004 Jason Edmeades
+ * Copyright 2003-2004 Raphael Junqueira
+ * Copyright 2004 Christian Costa
+ * Copyright 2005 Oliver Stieber
+ * Copyright 2007 Stefan Dösinger for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d);
+#define GLINFO_LOCATION This->resource.wineD3DDevice->adapter->gl_info
+
+/* *******************************************
+   IWineD3DIndexBuffer IUnknown parts follow
+   ******************************************* */
+static HRESULT WINAPI IWineD3DIndexBufferImpl_QueryInterface(IWineD3DIndexBuffer *iface, REFIID riid, LPVOID *ppobj)
+{
+    IWineD3DIndexBufferImpl *This = (IWineD3DIndexBufferImpl *)iface;
+    TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj);
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IWineD3DBase)
+        || IsEqualGUID(riid, &IID_IWineD3DResource)
+        || IsEqualGUID(riid, &IID_IWineD3DIndexBuffer)){
+        IUnknown_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IWineD3DIndexBufferImpl_AddRef(IWineD3DIndexBuffer *iface) {
+    IWineD3DIndexBufferImpl *This = (IWineD3DIndexBufferImpl *)iface;
+    ULONG ref = InterlockedIncrement(&This->resource.ref);
+    TRACE("(%p) : AddRef increasing from %d\n", This, ref - 1);
+    return ref;
+}
+
+static ULONG WINAPI IWineD3DIndexBufferImpl_Release(IWineD3DIndexBuffer *iface) {
+    IWineD3DIndexBufferImpl *This = (IWineD3DIndexBufferImpl *)iface;
+    ULONG ref = InterlockedDecrement(&This->resource.ref);
+    TRACE("(%p) : Releasing from %d\n", This, ref + 1);
+    if (ref == 0) {
+        if(This->vbo) {
+            IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
+
+            ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+            ENTER_GL();
+            /* No need to manually unset the buffer. glDeleteBuffers unsets it for the current context,
+             * but not for other contexts. However, because the d3d buffer is destroyed the app has to
+             * unset it before doing the next draw, thus dirtifying the index buffer state and forcing
+             * binding a new buffer
+             */
+            GL_EXTCALL(glDeleteBuffersARB(1, &This->vbo));
+            checkGLcall("glDeleteBuffersARB");
+            LEAVE_GL();
+        }
+
+        resource_cleanup((IWineD3DResource *)iface);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+    return ref;
+}
+
+/* ****************************************************
+   IWineD3DIndexBuffer IWineD3DResource parts follow
+   **************************************************** */
+static HRESULT WINAPI IWineD3DIndexBufferImpl_GetDevice(IWineD3DIndexBuffer *iface, IWineD3DDevice** ppDevice) {
+    return resource_get_device((IWineD3DResource *)iface, ppDevice);
+}
+
+static HRESULT WINAPI IWineD3DIndexBufferImpl_SetPrivateData(IWineD3DIndexBuffer *iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) {
+    return resource_set_private_data((IWineD3DResource *)iface, refguid, pData, SizeOfData, Flags);
+}
+
+static HRESULT WINAPI IWineD3DIndexBufferImpl_GetPrivateData(IWineD3DIndexBuffer *iface, REFGUID refguid, void* pData, DWORD* pSizeOfData) {
+    return resource_get_private_data((IWineD3DResource *)iface, refguid, pData, pSizeOfData);
+}
+
+static HRESULT WINAPI IWineD3DIndexBufferImpl_FreePrivateData(IWineD3DIndexBuffer *iface, REFGUID refguid) {
+    return resource_free_private_data((IWineD3DResource *)iface, refguid);
+}
+
+static DWORD WINAPI IWineD3DIndexBufferImpl_SetPriority(IWineD3DIndexBuffer *iface, DWORD PriorityNew) {
+    return resource_set_priority((IWineD3DResource *)iface, PriorityNew);
+}
+
+static DWORD WINAPI IWineD3DIndexBufferImpl_GetPriority(IWineD3DIndexBuffer *iface) {
+    return resource_get_priority((IWineD3DResource *)iface);
+}
+
+static void WINAPI IWineD3DIndexBufferImpl_PreLoad(IWineD3DIndexBuffer *iface) {
+    FIXME("iface %p stub!\n", iface);
+}
+
+static void WINAPI IWineD3DIndexBufferImpl_UnLoad(IWineD3DIndexBuffer *iface) {
+    IWineD3DIndexBufferImpl *This = (IWineD3DIndexBufferImpl *) iface;
+    IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
+    TRACE("(%p)\n", This);
+
+    /* This is easy: The whole content is shadowed in This->resource.allocatedMemory,
+     * so we only have to destroy the vbo. Only do it if we have a vbo, which implies
+     * that vbos are supported.
+     * (TODO: Make a IWineD3DBuffer base class for index and vertex buffers and share
+     * this code. Also needed for D3D10)
+     */
+    if(This->vbo) {
+        ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+        ENTER_GL();
+        GL_EXTCALL(glDeleteBuffersARB(1, &This->vbo));
+        checkGLcall("glDeleteBuffersARB");
+        LEAVE_GL();
+        This->vbo = 0;
+    }
+}
+
+static WINED3DRESOURCETYPE WINAPI IWineD3DIndexBufferImpl_GetType(IWineD3DIndexBuffer *iface) {
+    return resource_get_type((IWineD3DResource *)iface);
+}
+
+static HRESULT WINAPI IWineD3DIndexBufferImpl_GetParent(IWineD3DIndexBuffer *iface, IUnknown **pParent) {
+    return resource_get_parent((IWineD3DResource *)iface, pParent);
+}
+
+/* ******************************************************
+   IWineD3DIndexBuffer IWineD3DIndexBuffer parts follow
+   ****************************************************** */
+static HRESULT WINAPI IWineD3DIndexBufferImpl_Lock(IWineD3DIndexBuffer *iface, UINT OffsetToLock, UINT SizeToLock, BYTE** ppbData, DWORD Flags) {
+    IWineD3DIndexBufferImpl *This = (IWineD3DIndexBufferImpl *)iface;
+    TRACE("(%p) : offset %d, size %d, Flags=%x\n", This, OffsetToLock, SizeToLock, Flags);
+
+    InterlockedIncrement(&This->lockcount);
+    *ppbData = This->resource.allocatedMemory + OffsetToLock;
+
+    if(Flags & (WINED3DLOCK_READONLY | WINED3DLOCK_NO_DIRTY_UPDATE) || This->vbo == 0) {
+        return WINED3D_OK;
+    }
+
+    if(This->dirtystart != This->dirtyend) {
+        if(This->dirtystart > OffsetToLock) This->dirtystart = OffsetToLock;
+        if(SizeToLock) {
+            if(This->dirtyend < OffsetToLock + SizeToLock) This->dirtyend = OffsetToLock + SizeToLock;
+        } else {
+            This->dirtyend = This->resource.size;
+        }
+    } else {
+        This->dirtystart = OffsetToLock;
+        if(SizeToLock)
+            This->dirtyend = OffsetToLock + SizeToLock;
+        else
+            This->dirtyend = This->resource.size;
+    }
+
+    return WINED3D_OK;
+}
+static HRESULT WINAPI IWineD3DIndexBufferImpl_Unlock(IWineD3DIndexBuffer *iface) {
+    IWineD3DIndexBufferImpl *This = (IWineD3DIndexBufferImpl *)iface;
+    unsigned long locks = InterlockedDecrement(&This->lockcount);
+    TRACE("(%p)\n", This);
+
+    /* For now load in unlock */
+    if(locks == 0 && This->vbo && (This->dirtyend - This->dirtystart) > 0) {
+        IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
+
+        ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+
+        ENTER_GL();
+        GL_EXTCALL(glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, This->vbo));
+        checkGLcall("glBindBufferARB");
+        GL_EXTCALL(glBufferSubDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB,
+                This->dirtystart, This->dirtyend - This->dirtystart, This->resource.allocatedMemory + This->dirtystart));
+        checkGLcall("glBufferSubDataARB");
+        LEAVE_GL();
+        This->dirtystart = 0;
+        This->dirtyend = 0;
+        /* TODO: Move loading into preload when the buffer is used, that avoids dirtifying the state */
+        IWineD3DDeviceImpl_MarkStateDirty(device, STATE_INDEXBUFFER);
+    }
+    return WINED3D_OK;
+}
+static HRESULT WINAPI IWineD3DIndexBufferImpl_GetDesc(IWineD3DIndexBuffer *iface, WINED3DINDEXBUFFER_DESC *pDesc) {
+    IWineD3DIndexBufferImpl *This = (IWineD3DIndexBufferImpl *)iface;
+
+    TRACE("(%p)\n", This);
+    pDesc->Format = This->resource.format;
+    pDesc->Type   = This->resource.resourceType;
+    pDesc->Usage  = This->resource.usage;
+    pDesc->Pool   = This->resource.pool;
+    pDesc->Size   = This->resource.size;
+    return WINED3D_OK;
+}
+
+const IWineD3DIndexBufferVtbl IWineD3DIndexBuffer_Vtbl =
+{
+    /* IUnknown */
+    IWineD3DIndexBufferImpl_QueryInterface,
+    IWineD3DIndexBufferImpl_AddRef,
+    IWineD3DIndexBufferImpl_Release,
+    /* IWineD3DResource */
+    IWineD3DIndexBufferImpl_GetParent,
+    IWineD3DIndexBufferImpl_GetDevice,
+    IWineD3DIndexBufferImpl_SetPrivateData,
+    IWineD3DIndexBufferImpl_GetPrivateData,
+    IWineD3DIndexBufferImpl_FreePrivateData,
+    IWineD3DIndexBufferImpl_SetPriority,
+    IWineD3DIndexBufferImpl_GetPriority,
+    IWineD3DIndexBufferImpl_PreLoad,
+    IWineD3DIndexBufferImpl_UnLoad,
+    IWineD3DIndexBufferImpl_GetType,
+    /* IWineD3DIndexBuffer */
+    IWineD3DIndexBufferImpl_Lock,
+    IWineD3DIndexBufferImpl_Unlock,
+    IWineD3DIndexBufferImpl_GetDesc
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/nvidia_texture_shader.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/nvidia_texture_shader.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/nvidia_texture_shader.c	(revision 16410)
@@ -0,0 +1,840 @@
+/*
+ * Fixed function pipeline replacement using GL_NV_register_combiners
+ * and GL_NV_texture_shader
+ *
+ * Copyright 2006 Henri Verbeet
+ * Copyright 2008 Stefan Dösinger(for CodeWeavers)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#include "config.h"
+
+#include <math.h>
+#include <stdio.h>
+
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d);
+
+#define GLINFO_LOCATION stateblock->wineD3DDevice->adapter->gl_info
+static void nvts_activate_dimensions(DWORD stage, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    BOOL bumpmap = FALSE;
+
+    if(stage > 0 && (stateblock->textureState[stage - 1][WINED3DTSS_COLOROP] == WINED3DTOP_BUMPENVMAPLUMINANCE ||
+                     stateblock->textureState[stage - 1][WINED3DTSS_COLOROP] == WINED3DTOP_BUMPENVMAP)) {
+        bumpmap = TRUE;
+        context->texShaderBumpMap |= (1 << stage);
+    } else {
+        context->texShaderBumpMap &= ~(1 << stage);
+    }
+
+    if(stateblock->textures[stage]) {
+        switch(stateblock->textureDimensions[stage]) {
+            case GL_TEXTURE_2D:
+                glTexEnvi(GL_TEXTURE_SHADER_NV, GL_SHADER_OPERATION_NV, bumpmap ? GL_OFFSET_TEXTURE_2D_NV : GL_TEXTURE_2D);
+                checkGLcall("glTexEnvi(GL_TEXTURE_SHADER_NV, GL_SHADER_OPERATION_NV, ...)");
+                break;
+            case GL_TEXTURE_RECTANGLE_ARB:
+                glTexEnvi(GL_TEXTURE_SHADER_NV, GL_SHADER_OPERATION_NV, bumpmap ? GL_OFFSET_TEXTURE_2D_NV : GL_TEXTURE_RECTANGLE_ARB);
+                checkGLcall("glTexEnvi(GL_TEXTURE_SHADER_NV, GL_SHADER_OPERATION_NV, ...)");
+                break;
+            case GL_TEXTURE_3D:
+                glTexEnvi(GL_TEXTURE_SHADER_NV, GL_SHADER_OPERATION_NV, GL_TEXTURE_3D);
+                checkGLcall("glTexEnvi(GL_TEXTURE_SHADER_NV, GL_SHADER_OPERATION_NV, GL_TEXTURE_3D)");
+                break;
+            case GL_TEXTURE_CUBE_MAP_ARB:
+                glTexEnvi(GL_TEXTURE_SHADER_NV, GL_SHADER_OPERATION_NV, GL_TEXTURE_CUBE_MAP_ARB);
+                checkGLcall("glTexEnvi(GL_TEXTURE_SHADER_NV, GL_SHADER_OPERATION_NV, GL_TEXTURE_CUBE_MAP_ARB)");
+                break;
+        }
+    } else {
+        glTexEnvi(GL_TEXTURE_SHADER_NV, GL_SHADER_OPERATION_NV, GL_NONE);
+        checkGLcall("glTexEnvi(GL_TEXTURE_SHADER_NV, GL_SHADER_OPERATION_NV, GL_NONE)");
+    }
+}
+
+typedef struct {
+    GLenum input[3];
+    GLenum mapping[3];
+    GLenum component_usage[3];
+} tex_op_args;
+
+static GLenum d3dta_to_combiner_input(DWORD d3dta, DWORD stage, INT texture_idx) {
+    switch (d3dta) {
+        case WINED3DTA_DIFFUSE:
+            return GL_PRIMARY_COLOR_NV;
+
+        case WINED3DTA_CURRENT:
+            if (stage) return GL_SPARE0_NV;
+            else return GL_PRIMARY_COLOR_NV;
+
+        case WINED3DTA_TEXTURE:
+            if (texture_idx > -1) return GL_TEXTURE0_ARB + texture_idx;
+            else return GL_PRIMARY_COLOR_NV;
+
+        case WINED3DTA_TFACTOR:
+            return GL_CONSTANT_COLOR0_NV;
+
+        case WINED3DTA_SPECULAR:
+            return GL_SECONDARY_COLOR_NV;
+
+        case WINED3DTA_TEMP:
+            return GL_SPARE1_NV;
+
+        case WINED3DTA_CONSTANT:
+            /* TODO: Support per stage constants (WINED3DTSS_CONSTANT, NV_register_combiners2) */
+            FIXME("WINED3DTA_CONSTANT, not properly supported.\n");
+            return GL_CONSTANT_COLOR1_NV;
+
+        default:
+            FIXME("Unrecognized texture arg %#x\n", d3dta);
+            return GL_TEXTURE;
+    }
+}
+
+static GLenum invert_mapping(GLenum mapping) {
+    if (mapping == GL_UNSIGNED_INVERT_NV) return GL_UNSIGNED_IDENTITY_NV;
+    else if (mapping == GL_UNSIGNED_IDENTITY_NV) return GL_UNSIGNED_INVERT_NV;
+
+    FIXME("Unhandled mapping %#x\n", mapping);
+    return mapping;
+}
+
+static void get_src_and_opr_nvrc(DWORD stage, DWORD arg, BOOL is_alpha, GLenum* input, GLenum* mapping, GLenum *component_usage, INT texture_idx) {
+    /* The WINED3DTA_COMPLEMENT flag specifies the complement of the input should
+    * be used. */
+    if (arg & WINED3DTA_COMPLEMENT) *mapping = GL_UNSIGNED_INVERT_NV;
+    else *mapping = GL_UNSIGNED_IDENTITY_NV; /* Clamp all values to positive ranges */
+
+    /* The WINED3DTA_ALPHAREPLICATE flag specifies the alpha component of the input
+    * should be used for all input components. */
+    if (is_alpha || arg & WINED3DTA_ALPHAREPLICATE) *component_usage = GL_ALPHA;
+    else *component_usage = GL_RGB;
+
+    *input = d3dta_to_combiner_input(arg & WINED3DTA_SELECTMASK, stage, texture_idx);
+}
+
+void set_tex_op_nvrc(IWineD3DDevice *iface, BOOL is_alpha, int stage, WINED3DTEXTUREOP op, DWORD arg1, DWORD arg2, DWORD arg3, INT texture_idx, DWORD dst) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl*)iface;
+    tex_op_args tex_op_args = {{0}, {0}, {0}};
+    GLenum portion = is_alpha ? GL_ALPHA : GL_RGB;
+    GLenum target = GL_COMBINER0_NV + stage;
+    GLenum output;
+    IWineD3DStateBlockImpl *stateblock = This->stateBlock; /* For GLINFO_LOCATION */
+
+    TRACE("stage %d, is_alpha %d, op %s, arg1 %#x, arg2 %#x, arg3 %#x, texture_idx %d\n",
+          stage, is_alpha, debug_d3dtop(op), arg1, arg2, arg3, texture_idx);
+
+    /* If a texture stage references an invalid texture unit the stage just
+    * passes through the result from the previous stage */
+    if (is_invalid_op(This, stage, op, arg1, arg2, arg3)) {
+        arg1 = WINED3DTA_CURRENT;
+        op = WINED3DTOP_SELECTARG1;
+    }
+
+    get_src_and_opr_nvrc(stage, arg1, is_alpha, &tex_op_args.input[0],
+                         &tex_op_args.mapping[0], &tex_op_args.component_usage[0], texture_idx);
+    get_src_and_opr_nvrc(stage, arg2, is_alpha, &tex_op_args.input[1],
+                         &tex_op_args.mapping[1], &tex_op_args.component_usage[1], texture_idx);
+    get_src_and_opr_nvrc(stage, arg3, is_alpha, &tex_op_args.input[2],
+                         &tex_op_args.mapping[2], &tex_op_args.component_usage[2], texture_idx);
+
+
+    if(dst == WINED3DTA_TEMP) {
+        output = GL_SPARE1_NV;
+    } else {
+        output = GL_SPARE0_NV;
+    }
+
+    /* This is called by a state handler which has the gl lock held and a context for the thread */
+    switch(op)
+    {
+        case WINED3DTOP_DISABLE:
+            /* Only for alpha */
+            if (!is_alpha) ERR("Shouldn't be called for WINED3DTSS_COLOROP (WINED3DTOP_DISABLE)\n");
+            /* Input, prev_alpha*1 */
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_A_NV,
+                       GL_SPARE0_NV, GL_UNSIGNED_IDENTITY_NV, GL_ALPHA));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_B_NV,
+                       GL_ZERO, GL_UNSIGNED_INVERT_NV, GL_ALPHA));
+
+            /* Output */
+            GL_EXTCALL(glCombinerOutputNV(target, portion, GL_SPARE0_NV, GL_DISCARD_NV,
+                       GL_DISCARD_NV, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
+            break;
+
+        case WINED3DTOP_SELECTARG1:
+        case WINED3DTOP_SELECTARG2:
+            /* Input, arg*1 */
+            if (op == WINED3DTOP_SELECTARG1) {
+                GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_A_NV,
+                           tex_op_args.input[0], tex_op_args.mapping[0], tex_op_args.component_usage[0]));
+            } else {
+                GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_A_NV,
+                           tex_op_args.input[1], tex_op_args.mapping[1], tex_op_args.component_usage[1]));
+            }
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_B_NV,
+                       GL_ZERO, GL_UNSIGNED_INVERT_NV, portion));
+
+            /* Output */
+            GL_EXTCALL(glCombinerOutputNV(target, portion, output, GL_DISCARD_NV,
+                       GL_DISCARD_NV, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
+            break;
+
+        case WINED3DTOP_MODULATE:
+        case WINED3DTOP_MODULATE2X:
+        case WINED3DTOP_MODULATE4X:
+            /* Input, arg1*arg2 */
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_A_NV,
+                       tex_op_args.input[0], tex_op_args.mapping[0], tex_op_args.component_usage[0]));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_B_NV,
+                       tex_op_args.input[1], tex_op_args.mapping[1], tex_op_args.component_usage[1]));
+
+            /* Output */
+            if (op == WINED3DTOP_MODULATE) {
+                GL_EXTCALL(glCombinerOutputNV(target, portion, output, GL_DISCARD_NV,
+                           GL_DISCARD_NV, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
+            } else if (op == WINED3DTOP_MODULATE2X) {
+                GL_EXTCALL(glCombinerOutputNV(target, portion, output, GL_DISCARD_NV,
+                           GL_DISCARD_NV, GL_SCALE_BY_TWO_NV, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
+            } else if (op == WINED3DTOP_MODULATE4X) {
+                GL_EXTCALL(glCombinerOutputNV(target, portion, output, GL_DISCARD_NV,
+                           GL_DISCARD_NV, GL_SCALE_BY_FOUR_NV, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
+            }
+            break;
+
+        case WINED3DTOP_ADD:
+        case WINED3DTOP_ADDSIGNED:
+        case WINED3DTOP_ADDSIGNED2X:
+            /* Input, arg1*1+arg2*1 */
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_A_NV,
+                       tex_op_args.input[0], tex_op_args.mapping[0], tex_op_args.component_usage[0]));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_B_NV,
+                       GL_ZERO, GL_UNSIGNED_INVERT_NV, portion));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_C_NV,
+                       tex_op_args.input[1], tex_op_args.mapping[1], tex_op_args.component_usage[1]));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_D_NV,
+                       GL_ZERO, GL_UNSIGNED_INVERT_NV, portion));
+
+            /* Output */
+            if (op == WINED3DTOP_ADD) {
+                GL_EXTCALL(glCombinerOutputNV(target, portion, GL_DISCARD_NV, GL_DISCARD_NV,
+                           output, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
+            } else if (op == WINED3DTOP_ADDSIGNED) {
+                GL_EXTCALL(glCombinerOutputNV(target, portion, GL_DISCARD_NV, GL_DISCARD_NV,
+                           output, GL_NONE, GL_BIAS_BY_NEGATIVE_ONE_HALF_NV, GL_FALSE, GL_FALSE, GL_FALSE));
+            } else if (op == WINED3DTOP_ADDSIGNED2X) {
+                GL_EXTCALL(glCombinerOutputNV(target, portion, GL_DISCARD_NV, GL_DISCARD_NV,
+                           output, GL_SCALE_BY_TWO_NV, GL_BIAS_BY_NEGATIVE_ONE_HALF_NV, GL_FALSE, GL_FALSE, GL_FALSE));
+            }
+            break;
+
+        case WINED3DTOP_SUBTRACT:
+            /* Input, arg1*1+-arg2*1 */
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_A_NV,
+                       tex_op_args.input[0], tex_op_args.mapping[0], tex_op_args.component_usage[0]));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_B_NV,
+                       GL_ZERO, GL_UNSIGNED_INVERT_NV, portion));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_C_NV,
+                       tex_op_args.input[1], GL_SIGNED_NEGATE_NV, tex_op_args.component_usage[1]));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_D_NV,
+                       GL_ZERO, GL_UNSIGNED_INVERT_NV, portion));
+
+            /* Output */
+            GL_EXTCALL(glCombinerOutputNV(target, portion, GL_DISCARD_NV, GL_DISCARD_NV,
+                       output, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
+            break;
+
+        case WINED3DTOP_ADDSMOOTH:
+            /* Input, arg1*1+(1-arg1)*arg2 */
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_A_NV,
+                       tex_op_args.input[0], tex_op_args.mapping[0], tex_op_args.component_usage[0]));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_B_NV,
+                       GL_ZERO, GL_UNSIGNED_INVERT_NV, portion));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_C_NV,
+                       tex_op_args.input[0], invert_mapping(tex_op_args.mapping[0]), tex_op_args.component_usage[0]));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_D_NV,
+                       tex_op_args.input[1], tex_op_args.mapping[1], tex_op_args.component_usage[1]));
+
+            /* Output */
+            GL_EXTCALL(glCombinerOutputNV(target, portion, GL_DISCARD_NV, GL_DISCARD_NV,
+                       output, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
+            break;
+
+        case WINED3DTOP_BLENDDIFFUSEALPHA:
+        case WINED3DTOP_BLENDTEXTUREALPHA:
+        case WINED3DTOP_BLENDFACTORALPHA:
+        case WINED3DTOP_BLENDTEXTUREALPHAPM:
+        case WINED3DTOP_BLENDCURRENTALPHA:
+        {
+            GLenum alpha_src = GL_PRIMARY_COLOR_NV;
+            if (op == WINED3DTOP_BLENDDIFFUSEALPHA) alpha_src = d3dta_to_combiner_input(WINED3DTA_DIFFUSE, stage, texture_idx);
+            else if (op == WINED3DTOP_BLENDTEXTUREALPHA) alpha_src = d3dta_to_combiner_input(WINED3DTA_TEXTURE, stage, texture_idx);
+            else if (op == WINED3DTOP_BLENDFACTORALPHA) alpha_src = d3dta_to_combiner_input(WINED3DTA_TFACTOR, stage, texture_idx);
+            else if (op == WINED3DTOP_BLENDTEXTUREALPHAPM) alpha_src = d3dta_to_combiner_input(WINED3DTA_TEXTURE, stage, texture_idx);
+            else if (op == WINED3DTOP_BLENDCURRENTALPHA) alpha_src = d3dta_to_combiner_input(WINED3DTA_CURRENT, stage, texture_idx);
+            else FIXME("Unhandled WINED3DTOP %s, shouldn't happen\n", debug_d3dtop(op));
+
+            /* Input, arg1*alpha_src+arg2*(1-alpha_src) */
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_A_NV,
+                       tex_op_args.input[0], tex_op_args.mapping[0], tex_op_args.component_usage[0]));
+            if (op == WINED3DTOP_BLENDTEXTUREALPHAPM)
+            {
+                GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_B_NV,
+                           GL_ZERO, GL_UNSIGNED_INVERT_NV, portion));
+            } else {
+                GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_B_NV,
+                           alpha_src, GL_UNSIGNED_IDENTITY_NV, GL_ALPHA));
+            }
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_C_NV,
+                       tex_op_args.input[1], tex_op_args.mapping[1], tex_op_args.component_usage[1]));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_D_NV,
+                       alpha_src, GL_UNSIGNED_INVERT_NV, GL_ALPHA));
+
+            /* Output */
+            GL_EXTCALL(glCombinerOutputNV(target, portion, GL_DISCARD_NV, GL_DISCARD_NV,
+                       output, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
+            break;
+        }
+
+        case WINED3DTOP_MODULATEALPHA_ADDCOLOR:
+            /* Input, arg1_alpha*arg2_rgb+arg1_rgb*1 */
+            if (is_alpha) ERR("Only supported for WINED3DTSS_COLOROP (WINED3DTOP_MODULATEALPHA_ADDCOLOR)\n");
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_A_NV,
+                       tex_op_args.input[0], tex_op_args.mapping[0], GL_ALPHA));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_B_NV,
+                       tex_op_args.input[1], tex_op_args.mapping[1], tex_op_args.component_usage[1]));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_C_NV,
+                       tex_op_args.input[0], tex_op_args.mapping[0], tex_op_args.component_usage[0]));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_D_NV,
+                       GL_ZERO, GL_UNSIGNED_INVERT_NV, portion));
+
+            /* Output */
+            GL_EXTCALL(glCombinerOutputNV(target, portion, GL_DISCARD_NV, GL_DISCARD_NV,
+                       output, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
+            break;
+
+        case WINED3DTOP_MODULATECOLOR_ADDALPHA:
+            /* Input, arg1_rgb*arg2_rgb+arg1_alpha*1 */
+            if (is_alpha) ERR("Only supported for WINED3DTSS_COLOROP (WINED3DTOP_MODULATECOLOR_ADDALPHA)\n");
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_A_NV,
+                       tex_op_args.input[0], tex_op_args.mapping[0], tex_op_args.component_usage[0]));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_B_NV,
+                       tex_op_args.input[1], tex_op_args.mapping[1], tex_op_args.component_usage[1]));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_C_NV,
+                       tex_op_args.input[0], tex_op_args.mapping[0], GL_ALPHA));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_D_NV,
+                       GL_ZERO, GL_UNSIGNED_INVERT_NV, portion));
+
+            /* Output */
+            GL_EXTCALL(glCombinerOutputNV(target, portion, GL_DISCARD_NV, GL_DISCARD_NV,
+                       output, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
+            break;
+
+        case WINED3DTOP_MODULATEINVALPHA_ADDCOLOR:
+            /* Input, (1-arg1_alpha)*arg2_rgb+arg1_rgb*1 */
+            if (is_alpha) ERR("Only supported for WINED3DTSS_COLOROP (WINED3DTOP_MODULATEINVALPHA_ADDCOLOR)\n");
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_A_NV,
+                       tex_op_args.input[0], invert_mapping(tex_op_args.mapping[0]), GL_ALPHA));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_B_NV,
+                       tex_op_args.input[1], tex_op_args.mapping[1], tex_op_args.component_usage[1]));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_C_NV,
+                       tex_op_args.input[0], tex_op_args.mapping[0], tex_op_args.component_usage[0]));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_D_NV,
+                       GL_ZERO, GL_UNSIGNED_INVERT_NV, portion));
+
+            /* Output */
+            GL_EXTCALL(glCombinerOutputNV(target, portion, GL_DISCARD_NV, GL_DISCARD_NV,
+                       output, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
+            break;
+
+        case WINED3DTOP_MODULATEINVCOLOR_ADDALPHA:
+            /* Input, (1-arg1_rgb)*arg2_rgb+arg1_alpha*1 */
+            if (is_alpha) ERR("Only supported for WINED3DTSS_COLOROP (WINED3DTOP_MODULATEINVCOLOR_ADDALPHA)\n");
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_A_NV,
+                       tex_op_args.input[0], invert_mapping(tex_op_args.mapping[0]), tex_op_args.component_usage[0]));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_B_NV,
+                       tex_op_args.input[1], tex_op_args.mapping[1], tex_op_args.component_usage[1]));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_C_NV,
+                       tex_op_args.input[0], tex_op_args.mapping[0], GL_ALPHA));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_D_NV,
+                       GL_ZERO, GL_UNSIGNED_INVERT_NV, portion));
+
+            /* Output */
+            GL_EXTCALL(glCombinerOutputNV(target, portion, GL_DISCARD_NV, GL_DISCARD_NV,
+                       output, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
+            break;
+
+        case WINED3DTOP_DOTPRODUCT3:
+            /* Input, arg1 . arg2 */
+            /* FIXME: DX7 uses a different calculation? */
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_A_NV,
+                       tex_op_args.input[0], GL_EXPAND_NORMAL_NV, tex_op_args.component_usage[0]));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_B_NV,
+                       tex_op_args.input[1], GL_EXPAND_NORMAL_NV, tex_op_args.component_usage[1]));
+
+            /* Output */
+            GL_EXTCALL(glCombinerOutputNV(target, portion, output, GL_DISCARD_NV,
+                       GL_DISCARD_NV, GL_NONE, GL_NONE, GL_TRUE, GL_FALSE, GL_FALSE));
+            break;
+
+        case WINED3DTOP_MULTIPLYADD:
+            /* Input, arg3*1+arg1*arg2 */
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_A_NV,
+                       tex_op_args.input[2], tex_op_args.mapping[2], tex_op_args.component_usage[2]));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_B_NV,
+                       GL_ZERO, GL_UNSIGNED_INVERT_NV, portion));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_C_NV,
+                       tex_op_args.input[0], tex_op_args.mapping[0], tex_op_args.component_usage[0]));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_D_NV,
+                       tex_op_args.input[1], tex_op_args.mapping[1], tex_op_args.component_usage[1]));
+
+            /* Output */
+            GL_EXTCALL(glCombinerOutputNV(target, portion, GL_DISCARD_NV, GL_DISCARD_NV,
+                       output, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
+            break;
+
+        case WINED3DTOP_LERP:
+            /* Input, arg3*arg1+(1-arg3)*arg2 */
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_A_NV,
+                       tex_op_args.input[2], tex_op_args.mapping[2], tex_op_args.component_usage[2]));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_B_NV,
+                       tex_op_args.input[0], tex_op_args.mapping[0], tex_op_args.component_usage[0]));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_C_NV,
+                       tex_op_args.input[2], invert_mapping(tex_op_args.mapping[2]), tex_op_args.component_usage[2]));
+            GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_D_NV,
+                       tex_op_args.input[1], tex_op_args.mapping[1], tex_op_args.component_usage[1]));
+
+            /* Output */
+            GL_EXTCALL(glCombinerOutputNV(target, portion, GL_DISCARD_NV, GL_DISCARD_NV,
+                       output, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
+            break;
+
+        case WINED3DTOP_BUMPENVMAPLUMINANCE:
+        case WINED3DTOP_BUMPENVMAP:
+            if(GL_SUPPORT(NV_TEXTURE_SHADER)) {
+                /* The bump map stage itself isn't exciting, just read the texture. But tell the next stage to
+                 * perform bump mapping and source from the current stage. Pretty much a SELECTARG2.
+                 * ARG2 is passed through unmodified(apps will most likely use D3DTA_CURRENT for arg2, arg1
+                 * (which will most likely be D3DTA_TEXTURE) is available as a texture shader input for the next stage
+                 */
+                GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_A_NV,
+                           tex_op_args.input[1], tex_op_args.mapping[1], tex_op_args.component_usage[1]));
+                GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_B_NV,
+                           GL_ZERO, GL_UNSIGNED_INVERT_NV, portion));
+                /* Always pass through to CURRENT, ignore temp arg */
+                GL_EXTCALL(glCombinerOutputNV(target, portion, GL_SPARE0_NV, GL_DISCARD_NV,
+                           GL_DISCARD_NV, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
+                break;
+            }
+
+        default:
+            FIXME("Unhandled WINED3DTOP: stage %d, is_alpha %d, op %s (%#x), arg1 %#x, arg2 %#x, arg3 %#x, texture_idx %d\n",
+                  stage, is_alpha, debug_d3dtop(op), op, arg1, arg2, arg3, texture_idx);
+    }
+
+    checkGLcall("set_tex_op_nvrc()\n");
+
+}
+
+
+static void nvrc_colorop(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    DWORD stage = (state - STATE_TEXTURESTAGE(0, 0)) / WINED3D_HIGHEST_TEXTURE_STATE;
+    DWORD mapped_stage = stateblock->wineD3DDevice->texUnitMap[stage];
+    BOOL tex_used = stateblock->wineD3DDevice->fixed_function_usage_map[stage];
+
+    TRACE("Setting color op for stage %d\n", stage);
+
+    if (stateblock->pixelShader && stateblock->wineD3DDevice->ps_selected_mode != SHADER_NONE &&
+        ((IWineD3DPixelShaderImpl *)stateblock->pixelShader)->baseShader.function) {
+        /* Using a pixel shader? Don't care for anything here, the shader applying does it */
+        return;
+    }
+
+    if (stage != mapped_stage) WARN("Using non 1:1 mapping: %d -> %d!\n", stage, mapped_stage);
+
+    if (mapped_stage != -1) {
+        if (GL_SUPPORT(ARB_MULTITEXTURE)) {
+            if (tex_used && mapped_stage >= GL_LIMITS(textures)) {
+                FIXME("Attempt to enable unsupported stage!\n");
+                return;
+            }
+            GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB + mapped_stage));
+            checkGLcall("glActiveTextureARB");
+        } else if (stage > 0) {
+            WARN("Program using multiple concurrent textures which this opengl implementation doesn't support\n");
+            return;
+        }
+    }
+
+    if(stateblock->lowest_disabled_stage > 0) {
+        glEnable(GL_REGISTER_COMBINERS_NV);
+        GL_EXTCALL(glCombinerParameteriNV(GL_NUM_GENERAL_COMBINERS_NV, stateblock->lowest_disabled_stage));
+    } else {
+        glDisable(GL_REGISTER_COMBINERS_NV);
+    }
+    if(stage >= stateblock->lowest_disabled_stage) {
+        TRACE("Stage disabled\n");
+        if (mapped_stage != -1) {
+            /* Disable everything here */
+            glDisable(GL_TEXTURE_2D);
+            checkGLcall("glDisable(GL_TEXTURE_2D)");
+            glDisable(GL_TEXTURE_3D);
+            checkGLcall("glDisable(GL_TEXTURE_3D)");
+            if(GL_SUPPORT(ARB_TEXTURE_CUBE_MAP)) {
+                glDisable(GL_TEXTURE_CUBE_MAP_ARB);
+                checkGLcall("glDisable(GL_TEXTURE_CUBE_MAP_ARB)");
+            }
+            if(GL_SUPPORT(ARB_TEXTURE_RECTANGLE)) {
+                glDisable(GL_TEXTURE_RECTANGLE_ARB);
+                checkGLcall("glDisable(GL_TEXTURE_RECTANGLE_ARB)");
+            }
+            if(GL_SUPPORT(NV_TEXTURE_SHADER2) && mapped_stage < GL_LIMITS(textures)) {
+                glTexEnvi(GL_TEXTURE_SHADER_NV, GL_SHADER_OPERATION_NV, GL_NONE);
+            }
+        }
+        /* All done */
+        return;
+    }
+
+    /* The sampler will also activate the correct texture dimensions, so no need to do it here
+     * if the sampler for this stage is dirty
+     */
+    if(!isStateDirty(context, STATE_SAMPLER(stage))) {
+        if (tex_used) {
+            if(GL_SUPPORT(NV_TEXTURE_SHADER2)) {
+                nvts_activate_dimensions(stage, stateblock, context);
+            } else {
+                texture_activate_dimensions(stage, stateblock, context);
+            }
+        }
+    }
+
+    /* Set the texture combiners */
+    set_tex_op_nvrc((IWineD3DDevice *)stateblock->wineD3DDevice, FALSE, stage,
+                        stateblock->textureState[stage][WINED3DTSS_COLOROP],
+                        stateblock->textureState[stage][WINED3DTSS_COLORARG1],
+                        stateblock->textureState[stage][WINED3DTSS_COLORARG2],
+                        stateblock->textureState[stage][WINED3DTSS_COLORARG0],
+                        mapped_stage,
+                        stateblock->textureState[stage][WINED3DTSS_RESULTARG]);
+
+    /* In register combiners bump mapping is done in the stage AFTER the one that has the bump map operation set,
+     * thus the texture shader may have to be updated
+     */
+    if(GL_SUPPORT(NV_TEXTURE_SHADER2)) {
+        BOOL usesBump = (stateblock->textureState[stage][WINED3DTSS_COLOROP] == WINED3DTOP_BUMPENVMAPLUMINANCE ||
+                            stateblock->textureState[stage][WINED3DTSS_COLOROP] == WINED3DTOP_BUMPENVMAP) ? TRUE : FALSE;
+        BOOL usedBump = (context->texShaderBumpMap & 1 << (stage + 1)) ? TRUE : FALSE;
+        if(usesBump != usedBump) {
+            GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB + mapped_stage + 1));
+            checkGLcall("glActiveTextureARB");
+            nvts_activate_dimensions(stage + 1, stateblock, context);
+            GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB + mapped_stage));
+            checkGLcall("glActiveTextureARB");
+        }
+    }
+}
+
+static void nvts_texdim(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    DWORD sampler = state - STATE_SAMPLER(0);
+    DWORD mapped_stage = stateblock->wineD3DDevice->texUnitMap[sampler];
+
+    /* No need to enable / disable anything here for unused samplers. The tex_colorop
+    * handler takes care. Also no action is needed with pixel shaders, or if tex_colorop
+    * will take care of this business
+    */
+    if(mapped_stage == -1 || mapped_stage >= GL_LIMITS(textures)) return;
+    if(sampler >= stateblock->lowest_disabled_stage) return;
+    if(isStateDirty(context, STATE_TEXTURESTAGE(sampler, WINED3DTSS_COLOROP))) return;
+
+    nvts_activate_dimensions(sampler, stateblock, context);
+}
+
+static void nvts_bumpenvmat(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    DWORD stage = (state - STATE_TEXTURESTAGE(0, 0)) / WINED3D_HIGHEST_TEXTURE_STATE;
+    DWORD mapped_stage = stateblock->wineD3DDevice->texUnitMap[stage + 1];
+    float mat[2][2];
+
+    /* Direct3D sets the matrix in the stage reading the perturbation map. The result is used to
+     * offset the destination stage(always stage + 1 in d3d). In GL_NV_texture_shader, the bump
+     * map offsetting is done in the stage reading the bump mapped texture, and the perturbation
+     * map is read from a specified source stage(always stage - 1 for d3d). Thus set the matrix
+     * for stage + 1. Keep the nvrc tex unit mapping in mind too
+     */
+    if(mapped_stage < GL_LIMITS(textures)) {
+        GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB + mapped_stage));
+        checkGLcall("GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB + mapped_stage))");
+
+        /* We can't just pass a pointer to the stateblock to GL due to the different matrix
+         * format(column major vs row major)
+         */
+        mat[0][0] = *((float *) &stateblock->textureState[stage][WINED3DTSS_BUMPENVMAT00]);
+        mat[1][0] = *((float *) &stateblock->textureState[stage][WINED3DTSS_BUMPENVMAT01]);
+        mat[0][1] = *((float *) &stateblock->textureState[stage][WINED3DTSS_BUMPENVMAT10]);
+        mat[1][1] = *((float *) &stateblock->textureState[stage][WINED3DTSS_BUMPENVMAT11]);
+        glTexEnvfv(GL_TEXTURE_SHADER_NV, GL_OFFSET_TEXTURE_MATRIX_NV, (float *) mat);
+        checkGLcall("glTexEnvfv(GL_TEXTURE_SHADER_NV, GL_OFFSET_TEXTURE_MATRIX_NV, mat)");
+    }
+}
+
+static void nvrc_texfactor(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    float col[4];
+    D3DCOLORTOGLFLOAT4(stateblock->renderState[WINED3DRS_TEXTUREFACTOR], col);
+    GL_EXTCALL(glCombinerParameterfvNV(GL_CONSTANT_COLOR0_NV, &col[0]));
+}
+#undef GLINFO_LOCATION
+
+#define GLINFO_LOCATION (*gl_info)
+static void nvrc_enable(IWineD3DDevice *iface, BOOL enable) { }
+
+static void nvts_enable(IWineD3DDevice *iface, BOOL enable) {
+    if(enable) {
+        glEnable(GL_TEXTURE_SHADER_NV);
+        checkGLcall("glEnable(GL_TEXTURE_SHADER_NV)");
+    } else {
+        glDisable(GL_TEXTURE_SHADER_NV);
+        checkGLcall("glDisable(GL_TEXTURE_SHADER_NV)");
+    }
+}
+
+static void nvrc_fragment_get_caps(WINED3DDEVTYPE devtype, const WineD3D_GL_Info *gl_info, struct fragment_caps *pCaps)
+{
+    pCaps->TextureOpCaps =  WINED3DTEXOPCAPS_ADD                        |
+                            WINED3DTEXOPCAPS_ADDSIGNED                  |
+                            WINED3DTEXOPCAPS_ADDSIGNED2X                |
+                            WINED3DTEXOPCAPS_MODULATE                   |
+                            WINED3DTEXOPCAPS_MODULATE2X                 |
+                            WINED3DTEXOPCAPS_MODULATE4X                 |
+                            WINED3DTEXOPCAPS_SELECTARG1                 |
+                            WINED3DTEXOPCAPS_SELECTARG2                 |
+                            WINED3DTEXOPCAPS_DISABLE                    |
+                            WINED3DTEXOPCAPS_BLENDDIFFUSEALPHA          |
+                            WINED3DTEXOPCAPS_BLENDTEXTUREALPHA          |
+                            WINED3DTEXOPCAPS_BLENDFACTORALPHA           |
+                            WINED3DTEXOPCAPS_BLENDCURRENTALPHA          |
+                            WINED3DTEXOPCAPS_LERP                       |
+                            WINED3DTEXOPCAPS_SUBTRACT                   |
+                            WINED3DTEXOPCAPS_ADDSMOOTH                  |
+                            WINED3DTEXOPCAPS_MULTIPLYADD                |
+                            WINED3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR     |
+                            WINED3DTEXOPCAPS_MODULATECOLOR_ADDALPHA     |
+                            WINED3DTEXOPCAPS_BLENDTEXTUREALPHAPM        |
+                            WINED3DTEXOPCAPS_DOTPRODUCT3                |
+                            WINED3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR  |
+                            WINED3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA;
+
+    if(GL_SUPPORT(NV_TEXTURE_SHADER2)) {
+        /* Bump mapping is supported already in NV_TEXTURE_SHADER, but that extension does
+         * not support 3D textures. This asks for trouble if an app uses both bump mapping
+         * and 3D textures. It also allows us to keep the code simpler by having texture
+         * shaders constantly enabled.
+         */
+        pCaps->TextureOpCaps |= WINED3DTEXOPCAPS_BUMPENVMAP;
+        /* TODO: Luminance bump map? */
+    }
+
+#if 0
+    /* FIXME: Add
+            pCaps->TextureOpCaps |= WINED3DTEXOPCAPS_BUMPENVMAPLUMINANCE
+            WINED3DTEXOPCAPS_PREMODULATE */
+#endif
+
+    pCaps->MaxTextureBlendStages   = GL_LIMITS(texture_stages);
+    pCaps->MaxSimultaneousTextures = GL_LIMITS(textures);
+
+    pCaps->PrimitiveMiscCaps |=  WINED3DPMISCCAPS_TSSARGTEMP;
+
+    /* The caps below can be supported but aren't handled yet in utils.c 'd3dta_to_combiner_input', disable them until support is fixed */
+#if 0
+    if (GL_SUPPORT(NV_REGISTER_COMBINERS2))
+    pCaps->PrimitiveMiscCaps |=  WINED3DPMISCCAPS_PERSTAGECONSTANT;
+#endif
+}
+
+static HRESULT nvrc_fragment_alloc(IWineD3DDevice *iface) { return WINED3D_OK; }
+static void nvrc_fragment_free(IWineD3DDevice *iface) {}
+
+/* Two fixed function pipeline implementations using GL_NV_register_combiners and
+ * GL_NV_texture_shader. The nvts_fragment_pipeline assumes that both extensions
+ * are available(geforce 3 and newer), while nvrc_fragment_pipeline uses only the
+ * register combiners extension(Pre-GF3).
+ */
+
+static BOOL nvts_color_fixup_supported(struct color_fixup_desc fixup)
+{
+    if (TRACE_ON(d3d))
+    {
+        TRACE("Checking support for fixup:\n");
+        dump_color_fixup_desc(fixup);
+    }
+
+    /* We only support identity conversions. */
+    if (is_identity_fixup(fixup))
+    {
+        TRACE("[OK]\n");
+        return TRUE;
+    }
+
+    TRACE("[FAILED]\n");
+    return FALSE;
+}
+
+static const struct StateEntryTemplate nvrc_fragmentstate_template[] = {
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_COLORARG1),        { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_COLORARG2),        { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAOP),          { STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAARG1),        { STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAARG2),        { STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT00),     { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT01),     { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT10),     { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT11),     { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_COLORARG0),        { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAARG0),        { STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_RESULTARG),        { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_COLOROP),          { STATE_TEXTURESTAGE(1, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_COLORARG1),        { STATE_TEXTURESTAGE(1, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_COLORARG2),        { STATE_TEXTURESTAGE(1, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_ALPHAOP),          { STATE_TEXTURESTAGE(1, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_ALPHAARG1),        { STATE_TEXTURESTAGE(1, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_ALPHAARG2),        { STATE_TEXTURESTAGE(1, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT00),     { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT01),     { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT10),     { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT11),     { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_COLORARG0),        { STATE_TEXTURESTAGE(1, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_ALPHAARG0),        { STATE_TEXTURESTAGE(1, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_RESULTARG),        { STATE_TEXTURESTAGE(1, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_COLOROP),          { STATE_TEXTURESTAGE(2, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_COLORARG1),        { STATE_TEXTURESTAGE(2, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_COLORARG2),        { STATE_TEXTURESTAGE(2, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_ALPHAOP),          { STATE_TEXTURESTAGE(2, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_ALPHAARG1),        { STATE_TEXTURESTAGE(2, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_ALPHAARG2),        { STATE_TEXTURESTAGE(2, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT00),     { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT01),     { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT10),     { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT11),     { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_COLORARG0),        { STATE_TEXTURESTAGE(2, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_ALPHAARG0),        { STATE_TEXTURESTAGE(2, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_RESULTARG),        { STATE_TEXTURESTAGE(2, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_COLOROP),          { STATE_TEXTURESTAGE(3, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_COLORARG1),        { STATE_TEXTURESTAGE(3, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_COLORARG2),        { STATE_TEXTURESTAGE(3, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_ALPHAOP),          { STATE_TEXTURESTAGE(3, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_ALPHAARG1),        { STATE_TEXTURESTAGE(3, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_ALPHAARG2),        { STATE_TEXTURESTAGE(3, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT00),     { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT01),     { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT10),     { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT11),     { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_COLORARG0),        { STATE_TEXTURESTAGE(3, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_ALPHAARG0),        { STATE_TEXTURESTAGE(3, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_RESULTARG),        { STATE_TEXTURESTAGE(3, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_COLOROP),          { STATE_TEXTURESTAGE(4, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_COLORARG1),        { STATE_TEXTURESTAGE(4, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_COLORARG2),        { STATE_TEXTURESTAGE(4, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_ALPHAOP),          { STATE_TEXTURESTAGE(4, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_ALPHAARG1),        { STATE_TEXTURESTAGE(4, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_ALPHAARG2),        { STATE_TEXTURESTAGE(4, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT00),     { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT01),     { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT10),     { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT11),     { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_COLORARG0),        { STATE_TEXTURESTAGE(4, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_ALPHAARG0),        { STATE_TEXTURESTAGE(4, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_RESULTARG),        { STATE_TEXTURESTAGE(4, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_COLOROP),          { STATE_TEXTURESTAGE(5, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_COLORARG1),        { STATE_TEXTURESTAGE(5, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_COLORARG2),        { STATE_TEXTURESTAGE(5, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_ALPHAOP),          { STATE_TEXTURESTAGE(5, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_ALPHAARG1),        { STATE_TEXTURESTAGE(5, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_ALPHAARG2),        { STATE_TEXTURESTAGE(5, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT00),     { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT01),     { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT10),     { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT11),     { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_COLORARG0),        { STATE_TEXTURESTAGE(5, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_ALPHAARG0),        { STATE_TEXTURESTAGE(5, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_RESULTARG),        { STATE_TEXTURESTAGE(5, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_COLOROP),          { STATE_TEXTURESTAGE(6, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_COLORARG1),        { STATE_TEXTURESTAGE(6, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_COLORARG2),        { STATE_TEXTURESTAGE(6, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_ALPHAOP),          { STATE_TEXTURESTAGE(6, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_ALPHAARG1),        { STATE_TEXTURESTAGE(6, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_ALPHAARG2),        { STATE_TEXTURESTAGE(6, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT00),     { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT01),     { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT10),     { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT11),     { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_COLORARG0),        { STATE_TEXTURESTAGE(6, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_ALPHAARG0),        { STATE_TEXTURESTAGE(6, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_RESULTARG),        { STATE_TEXTURESTAGE(6, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_COLOROP),          { STATE_TEXTURESTAGE(7, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_COLORARG1),        { STATE_TEXTURESTAGE(7, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_COLORARG2),        { STATE_TEXTURESTAGE(7, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_ALPHAOP),          { STATE_TEXTURESTAGE(7, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_ALPHAARG1),        { STATE_TEXTURESTAGE(7, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_ALPHAARG2),        { STATE_TEXTURESTAGE(7, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT00),     { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT01),     { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT10),     { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT11),     { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT00),     nvts_bumpenvmat     }, NV_TEXTURE_SHADER2              },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_COLORARG0),        { STATE_TEXTURESTAGE(7, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_ALPHAARG0),        { STATE_TEXTURESTAGE(7, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_RESULTARG),        { STATE_TEXTURESTAGE(7, WINED3DTSS_COLOROP),          nvrc_colorop        }, 0                               },
+    { STATE_PIXELSHADER,                                  { STATE_PIXELSHADER,                                  apply_pixelshader   }, 0                               },
+    { STATE_RENDER(WINED3DRS_SRGBWRITEENABLE),            { STATE_PIXELSHADER,                                  apply_pixelshader   }, 0                               },
+    { STATE_RENDER(WINED3DRS_TEXTUREFACTOR),              { STATE_RENDER(WINED3DRS_TEXTUREFACTOR),              nvrc_texfactor      }, 0                               },
+    { STATE_SAMPLER(0),                                   { STATE_SAMPLER(0),                                   nvts_texdim         }, NV_TEXTURE_SHADER2              },
+    { STATE_SAMPLER(0),                                   { STATE_SAMPLER(0),                                   sampler_texdim      }, 0                               },
+    { STATE_SAMPLER(1),                                   { STATE_SAMPLER(1),                                   nvts_texdim         }, NV_TEXTURE_SHADER2              },
+    { STATE_SAMPLER(1),                                   { STATE_SAMPLER(1),                                   sampler_texdim      }, 0                               },
+    { STATE_SAMPLER(2),                                   { STATE_SAMPLER(2),                                   nvts_texdim         }, NV_TEXTURE_SHADER2              },
+    { STATE_SAMPLER(2),                                   { STATE_SAMPLER(2),                                   sampler_texdim      }, 0                               },
+    { STATE_SAMPLER(3),                                   { STATE_SAMPLER(3),                                   nvts_texdim         }, NV_TEXTURE_SHADER2              },
+    { STATE_SAMPLER(3),                                   { STATE_SAMPLER(3),                                   sampler_texdim      }, 0                               },
+    { STATE_SAMPLER(4),                                   { STATE_SAMPLER(4),                                   nvts_texdim         }, NV_TEXTURE_SHADER2              },
+    { STATE_SAMPLER(4),                                   { STATE_SAMPLER(4),                                   sampler_texdim      }, 0                               },
+    { STATE_SAMPLER(5),                                   { STATE_SAMPLER(5),                                   nvts_texdim         }, NV_TEXTURE_SHADER2              },
+    { STATE_SAMPLER(5),                                   { STATE_SAMPLER(5),                                   sampler_texdim      }, 0                               },
+    { STATE_SAMPLER(6),                                   { STATE_SAMPLER(6),                                   nvts_texdim         }, NV_TEXTURE_SHADER2              },
+    { STATE_SAMPLER(6),                                   { STATE_SAMPLER(6),                                   sampler_texdim      }, 0                               },
+    { STATE_SAMPLER(7),                                   { STATE_SAMPLER(7),                                   nvts_texdim         }, NV_TEXTURE_SHADER2              },
+    { STATE_SAMPLER(7),                                   { STATE_SAMPLER(7),                                   sampler_texdim      }, 0                               },
+    {0 /* Terminate */,                                   { 0,                                                  0                   }, 0                               },
+};
+
+const struct fragment_pipeline nvts_fragment_pipeline = {
+    nvts_enable,
+    nvrc_fragment_get_caps,
+    nvrc_fragment_alloc,
+    nvrc_fragment_free,
+    nvts_color_fixup_supported,
+    nvrc_fragmentstate_template,
+    FALSE /* we cannot disable projected textures. The vertex pipe has to do it */
+};
+
+const struct fragment_pipeline nvrc_fragment_pipeline = {
+    nvrc_enable,
+    nvrc_fragment_get_caps,
+    nvrc_fragment_alloc,
+    nvrc_fragment_free,
+    nvts_color_fixup_supported,
+    nvrc_fragmentstate_template,
+    FALSE /* we cannot disable projected textures. The vertex pipe has to do it */
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/palette.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/palette.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/palette.c	(revision 16410)
@@ -0,0 +1,192 @@
+/*		DirectDraw - IDirectPalette base interface
+ *
+ * Copyright 1997-2000 Marcus Meissner
+ * Copyright 2000-2001 TransGaming Technologies Inc.
+ * Copyright 2006 Stefan Dösinger for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#include "config.h"
+#include "winerror.h"
+#include "wine/debug.h"
+
+#include <assert.h>
+#include <string.h>
+
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d);
+
+#define SIZE_BITS (WINEDDPCAPS_1BIT | WINEDDPCAPS_2BIT | WINEDDPCAPS_4BIT | WINEDDPCAPS_8BIT)
+
+static HRESULT  WINAPI IWineD3DPaletteImpl_QueryInterface(IWineD3DPalette *iface, REFIID refiid, void **obj) {
+    IWineD3DPaletteImpl *This = (IWineD3DPaletteImpl *)iface;
+    TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(refiid),obj);
+
+    if (IsEqualGUID(refiid, &IID_IUnknown)
+        || IsEqualGUID(refiid, &IID_IWineD3DPalette)) {
+        *obj = iface;
+        IWineD3DPalette_AddRef(iface);
+        return S_OK;
+    }
+    else {
+        *obj = NULL;
+        return E_NOINTERFACE;
+    }
+}
+
+static ULONG  WINAPI IWineD3DPaletteImpl_AddRef(IWineD3DPalette *iface) {
+    IWineD3DPaletteImpl *This = (IWineD3DPaletteImpl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p)->() incrementing from %u.\n", This, ref - 1);
+
+    return ref;
+}
+
+static ULONG  WINAPI IWineD3DPaletteImpl_Release(IWineD3DPalette *iface) {
+    IWineD3DPaletteImpl *This = (IWineD3DPaletteImpl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p)->() decrementing from %u.\n", This, ref + 1);
+
+    if (!ref) {
+        DeleteObject(This->hpal);
+        HeapFree(GetProcessHeap(), 0, This);
+        return 0;
+    }
+
+    return ref;
+}
+
+/* Not called from the vtable */
+DWORD IWineD3DPaletteImpl_Size(DWORD dwFlags) {
+    switch (dwFlags & SIZE_BITS) {
+        case WINEDDPCAPS_1BIT: return 2;
+        case WINEDDPCAPS_2BIT: return 4;
+        case WINEDDPCAPS_4BIT: return 16;
+        case WINEDDPCAPS_8BIT: return 256;
+        default: assert(0); return 256;
+    }
+}
+
+static HRESULT  WINAPI IWineD3DPaletteImpl_GetEntries(IWineD3DPalette *iface, DWORD Flags, DWORD Start, DWORD Count, PALETTEENTRY *PalEnt) {
+    IWineD3DPaletteImpl *This = (IWineD3DPaletteImpl *)iface;
+
+    TRACE("(%p)->(%08x,%d,%d,%p)\n",This,Flags,Start,Count,PalEnt);
+
+    if (Flags != 0) return WINED3DERR_INVALIDCALL; /* unchecked */
+    if (Start + Count > IWineD3DPaletteImpl_Size(This->Flags))
+        return WINED3DERR_INVALIDCALL;
+
+    if (This->Flags & WINEDDPCAPS_8BITENTRIES)
+    {
+        unsigned int i;
+        LPBYTE entry = (LPBYTE)PalEnt;
+
+        for (i=Start; i < Count+Start; i++)
+            *entry++ = This->palents[i].peRed;
+    }
+    else
+        memcpy(PalEnt, This->palents+Start, Count * sizeof(PALETTEENTRY));
+
+    return WINED3D_OK;
+}
+
+static HRESULT  WINAPI IWineD3DPaletteImpl_SetEntries(IWineD3DPalette *iface,
+        DWORD Flags, DWORD Start, DWORD Count, const PALETTEENTRY *PalEnt)
+{
+    IWineD3DPaletteImpl *This = (IWineD3DPaletteImpl *)iface;
+    IWineD3DResourceImpl *res;
+
+    TRACE("(%p)->(%08x,%d,%d,%p)\n",This,Flags,Start,Count,PalEnt);
+    TRACE("Palette flags: %#x\n", This->Flags);
+
+    if (This->Flags & WINEDDPCAPS_8BITENTRIES) {
+        unsigned int i;
+        const BYTE* entry = (const BYTE*)PalEnt;
+
+        for (i=Start; i < Count+Start; i++)
+            This->palents[i].peRed = *entry++;
+    }
+    else {
+        memcpy(This->palents+Start, PalEnt, Count * sizeof(PALETTEENTRY));
+
+        /* When WINEDDCAPS_ALLOW256 isn't set we need to override entry 0 with black and 255 with white */
+        if(!(This->Flags & WINEDDPCAPS_ALLOW256))
+        {
+            TRACE("WINEDDPCAPS_ALLOW256 set, overriding palette entry 0 with black and 255 with white\n");
+            This->palents[0].peRed = 0;
+            This->palents[0].peGreen = 0;
+            This->palents[0].peBlue = 0;
+
+            This->palents[255].peRed = 255;
+            This->palents[255].peGreen = 255;
+            This->palents[255].peBlue = 255;
+        }
+
+        if (This->hpal)
+            SetPaletteEntries(This->hpal, Start, Count, This->palents+Start);
+    }
+
+#if 0
+    /* Now, if we are in 'depth conversion mode', update the screen palette */
+    /* FIXME: we need to update the image or we won't get palette fading. */
+    if (This->ddraw->d->palette_convert != NULL)
+        This->ddraw->d->palette_convert(palent,This->screen_palents,start,count);
+#endif
+
+    /* If the palette is attached to the render target, update all render targets */
+
+    LIST_FOR_EACH_ENTRY(res, &This->wineD3DDevice->resources, IWineD3DResourceImpl, resource.resource_list_entry) {
+        if(IWineD3DResource_GetType((IWineD3DResource *) res) == WINED3DRTYPE_SURFACE) {
+            IWineD3DSurfaceImpl *impl = (IWineD3DSurfaceImpl *) res;
+            if(impl->palette == This)
+                IWineD3DSurface_RealizePalette((IWineD3DSurface *) res);
+        }
+    }
+
+    return WINED3D_OK;
+}
+
+static HRESULT  WINAPI IWineD3DPaletteImpl_GetCaps(IWineD3DPalette *iface, DWORD *Caps) {
+    IWineD3DPaletteImpl *This = (IWineD3DPaletteImpl *)iface;
+    TRACE("(%p)->(%p)\n", This, Caps);
+
+    *Caps = This->Flags;
+    return WINED3D_OK;
+}
+
+static HRESULT  WINAPI IWineD3DPaletteImpl_GetParent(IWineD3DPalette *iface, IUnknown **Parent) {
+    IWineD3DPaletteImpl *This = (IWineD3DPaletteImpl *)iface;
+    TRACE("(%p)->(%p)\n", This, Parent);
+
+    *Parent = This->parent;
+    IUnknown_AddRef(This->parent);
+    return WINED3D_OK;
+}
+
+const IWineD3DPaletteVtbl IWineD3DPalette_Vtbl =
+{
+    /*** IUnknown ***/
+    IWineD3DPaletteImpl_QueryInterface,
+    IWineD3DPaletteImpl_AddRef,
+    IWineD3DPaletteImpl_Release,
+    /*** IWineD3DPalette ***/
+    IWineD3DPaletteImpl_GetParent,
+    IWineD3DPaletteImpl_GetEntries,
+    IWineD3DPaletteImpl_GetCaps,
+    IWineD3DPaletteImpl_SetEntries
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/pixelshader.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/pixelshader.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/pixelshader.c	(revision 16410)
@@ -0,0 +1,492 @@
+/*
+ * shaders implementation
+ *
+ * Copyright 2002-2003 Jason Edmeades
+ * Copyright 2002-2003 Raphael Junqueira
+ * Copyright 2004 Christian Costa
+ * Copyright 2005 Oliver Stieber
+ * Copyright 2006 Ivan Gyurdiev
+ * Copyright 2007-2008 Stefan Dösinger for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+
+#include <math.h>
+#include <stdio.h>
+
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d_shader);
+
+#define GLINFO_LOCATION ((IWineD3DDeviceImpl *) This->baseShader.device)->adapter->gl_info
+
+#define GLNAME_REQUIRE_GLSL  ((const char *)1)
+
+static HRESULT  WINAPI IWineD3DPixelShaderImpl_QueryInterface(IWineD3DPixelShader *iface, REFIID riid, LPVOID *ppobj) {
+    return IWineD3DBaseShaderImpl_QueryInterface((IWineD3DBaseShader *) iface, riid, ppobj);
+}
+
+static ULONG  WINAPI IWineD3DPixelShaderImpl_AddRef(IWineD3DPixelShader *iface) {
+    return IWineD3DBaseShaderImpl_AddRef((IWineD3DBaseShader *) iface);
+}
+
+static ULONG  WINAPI IWineD3DPixelShaderImpl_Release(IWineD3DPixelShader *iface) {
+    return IWineD3DBaseShaderImpl_Release((IWineD3DBaseShader *) iface);
+}
+
+/* *******************************************
+   IWineD3DPixelShader IWineD3DPixelShader parts follow
+   ******************************************* */
+
+static HRESULT  WINAPI IWineD3DPixelShaderImpl_GetParent(IWineD3DPixelShader *iface, IUnknown** parent){
+    IWineD3DPixelShaderImpl *This = (IWineD3DPixelShaderImpl *)iface;
+
+    *parent = This->parent;
+    IUnknown_AddRef(*parent);
+    TRACE("(%p) : returning %p\n", This, *parent);
+    return WINED3D_OK;
+}
+
+static HRESULT  WINAPI IWineD3DPixelShaderImpl_GetDevice(IWineD3DPixelShader* iface, IWineD3DDevice **pDevice){
+    IWineD3DPixelShaderImpl *This = (IWineD3DPixelShaderImpl *)iface;
+    IWineD3DDevice_AddRef(This->baseShader.device);
+    *pDevice = This->baseShader.device;
+    TRACE("(%p) returning %p\n", This, *pDevice);
+    return WINED3D_OK;
+}
+
+
+static HRESULT  WINAPI IWineD3DPixelShaderImpl_GetFunction(IWineD3DPixelShader* impl, VOID* pData, UINT* pSizeOfData) {
+  IWineD3DPixelShaderImpl *This = (IWineD3DPixelShaderImpl *)impl;
+  TRACE("(%p) : pData(%p), pSizeOfData(%p)\n", This, pData, pSizeOfData);
+
+  if (NULL == pData) {
+    *pSizeOfData = This->baseShader.functionLength;
+    return WINED3D_OK;
+  }
+  if (*pSizeOfData < This->baseShader.functionLength) {
+    /* MSDN claims (for d3d8 at least) that if *pSizeOfData is smaller
+     * than the required size we should write the required size and
+     * return D3DERR_MOREDATA. That's not actually true. */
+    return WINED3DERR_INVALIDCALL;
+  }
+  if (NULL == This->baseShader.function) { /* no function defined */
+    TRACE("(%p) : GetFunction no User Function defined using NULL to %p\n", This, pData);
+    (*(DWORD **) pData) = NULL;
+  } else {
+    if (This->baseShader.functionLength == 0) {
+
+    }
+    TRACE("(%p) : GetFunction copying to %p\n", This, pData);
+    memcpy(pData, This->baseShader.function, This->baseShader.functionLength);
+  }
+  return WINED3D_OK;
+}
+
+CONST SHADER_OPCODE IWineD3DPixelShaderImpl_shader_ins[] = {
+    /* Arithmetic */
+    {WINED3DSIO_NOP,          "nop",          "NOP",               0, 0, WINED3DSIH_NOP,          0,                      0                     },
+    {WINED3DSIO_MOV,          "mov",          "MOV",               1, 2, WINED3DSIH_MOV,          0,                      0                     },
+    {WINED3DSIO_ADD,          "add",          "ADD",               1, 3, WINED3DSIH_ADD,          0,                      0                     },
+    {WINED3DSIO_SUB,          "sub",          "SUB",               1, 3, WINED3DSIH_SUB,          0,                      0                     },
+    {WINED3DSIO_MAD,          "mad",          "MAD",               1, 4, WINED3DSIH_MAD,          0,                      0                     },
+    {WINED3DSIO_MUL,          "mul",          "MUL",               1, 3, WINED3DSIH_MUL,          0,                      0                     },
+    {WINED3DSIO_RCP,          "rcp",          "RCP",               1, 2, WINED3DSIH_RCP,          0,                      0                     },
+    {WINED3DSIO_RSQ,          "rsq",          "RSQ",               1, 2, WINED3DSIH_RSQ,          0,                      0                     },
+    {WINED3DSIO_DP3,          "dp3",          "DP3",               1, 3, WINED3DSIH_DP3,          0,                      0                     },
+    {WINED3DSIO_DP4,          "dp4",          "DP4",               1, 3, WINED3DSIH_DP4,          0,                      0                     },
+    {WINED3DSIO_MIN,          "min",          "MIN",               1, 3, WINED3DSIH_MIN,          0,                      0                     },
+    {WINED3DSIO_MAX,          "max",          "MAX",               1, 3, WINED3DSIH_MAX,          0,                      0                     },
+    {WINED3DSIO_SLT,          "slt",          "SLT",               1, 3, WINED3DSIH_SLT,          0,                      0                     },
+    {WINED3DSIO_SGE,          "sge",          "SGE",               1, 3, WINED3DSIH_SGE,          0,                      0                     },
+    {WINED3DSIO_ABS,          "abs",          "ABS",               1, 2, WINED3DSIH_ABS,          0,                      0                     },
+    {WINED3DSIO_EXP,          "exp",          "EX2",               1, 2, WINED3DSIH_EXP,          0,                      0                     },
+    {WINED3DSIO_LOG,          "log",          "LG2",               1, 2, WINED3DSIH_LOG,          0,                      0                     },
+    {WINED3DSIO_EXPP,         "expp",         "EXP",               1, 2, WINED3DSIH_EXPP,         0,                      0                     },
+    {WINED3DSIO_LOGP,         "logp",         "LOG",               1, 2, WINED3DSIH_LOGP,         0,                      0                     },
+    {WINED3DSIO_DST,          "dst",          "DST",               1, 3, WINED3DSIH_DST,          0,                      0                     },
+    {WINED3DSIO_LRP,          "lrp",          "LRP",               1, 4, WINED3DSIH_LRP,          0,                      0                     },
+    {WINED3DSIO_FRC,          "frc",          "FRC",               1, 2, WINED3DSIH_FRC,          0,                      0                     },
+    {WINED3DSIO_CND,          "cnd",          NULL,                1, 4, WINED3DSIH_CND,          WINED3DPS_VERSION(1,0), WINED3DPS_VERSION(1,4)},
+    {WINED3DSIO_CMP,          "cmp",          NULL,                1, 4, WINED3DSIH_CMP,          WINED3DPS_VERSION(1,2), WINED3DPS_VERSION(3,0)},
+    {WINED3DSIO_POW,          "pow",          "POW",               1, 3, WINED3DSIH_POW,          0,                      0                     },
+    {WINED3DSIO_CRS,          "crs",          "XPD",               1, 3, WINED3DSIH_CRS,          0,                      0                     },
+    {WINED3DSIO_NRM,          "nrm",          NULL,                1, 2, WINED3DSIH_NRM,          0,                      0                     },
+    {WINED3DSIO_SINCOS,       "sincos",       NULL,                1, 4, WINED3DSIH_SINCOS,       WINED3DPS_VERSION(2,0), WINED3DPS_VERSION(2,1)},
+    {WINED3DSIO_SINCOS,       "sincos",       "SCS",               1, 2, WINED3DSIH_SINCOS,       WINED3DPS_VERSION(3,0), -1                    },
+    {WINED3DSIO_DP2ADD,       "dp2add",       NULL,                1, 4, WINED3DSIH_DP2ADD,       WINED3DPS_VERSION(2,0), -1                    },
+    /* Matrix */
+    {WINED3DSIO_M4x4,         "m4x4",         "undefined",         1, 3, WINED3DSIH_M4x4,         0,                      0                     },
+    {WINED3DSIO_M4x3,         "m4x3",         "undefined",         1, 3, WINED3DSIH_M4x3,         0,                      0                     },
+    {WINED3DSIO_M3x4,         "m3x4",         "undefined",         1, 3, WINED3DSIH_M3x4,         0,                      0                     },
+    {WINED3DSIO_M3x3,         "m3x3",         "undefined",         1, 3, WINED3DSIH_M3x3,         0,                      0                     },
+    {WINED3DSIO_M3x2,         "m3x2",         "undefined",         1, 3, WINED3DSIH_M3x2,         0,                      0                     },
+    /* Register declarations */
+    {WINED3DSIO_DCL,          "dcl",          NULL,                0, 2, WINED3DSIH_DCL,          0,                      0                     },
+    /* Flow control - requires GLSL or software shaders */
+    {WINED3DSIO_REP ,         "rep",          NULL,                0, 1, WINED3DSIH_REP,          WINED3DPS_VERSION(2,1), -1                    },
+    {WINED3DSIO_ENDREP,       "endrep",       NULL,                0, 0, WINED3DSIH_ENDREP,       WINED3DPS_VERSION(2,1), -1                    },
+    {WINED3DSIO_IF,           "if",           NULL,                0, 1, WINED3DSIH_IF,           WINED3DPS_VERSION(2,1), -1                    },
+    {WINED3DSIO_IFC,          "ifc",          NULL,                0, 2, WINED3DSIH_IFC,          WINED3DPS_VERSION(2,1), -1                    },
+    {WINED3DSIO_ELSE,         "else",         NULL,                0, 0, WINED3DSIH_ELSE,         WINED3DPS_VERSION(2,1), -1                    },
+    {WINED3DSIO_ENDIF,        "endif",        NULL,                0, 0, WINED3DSIH_ENDIF,        WINED3DPS_VERSION(2,1), -1                    },
+    {WINED3DSIO_BREAK,        "break",        NULL,                0, 0, WINED3DSIH_BREAK,        WINED3DPS_VERSION(2,1), -1                    },
+    {WINED3DSIO_BREAKC,       "breakc",       NULL,                0, 2, WINED3DSIH_BREAKC,       WINED3DPS_VERSION(2,1), -1                    },
+    {WINED3DSIO_BREAKP,       "breakp",       GLNAME_REQUIRE_GLSL, 0, 1, WINED3DSIH_BREAKP,       0,                      0                     },
+    {WINED3DSIO_CALL,         "call",         NULL,                0, 1, WINED3DSIH_CALL,         WINED3DPS_VERSION(2,1), -1                    },
+    {WINED3DSIO_CALLNZ,       "callnz",       NULL,                0, 2, WINED3DSIH_CALLNZ,       WINED3DPS_VERSION(2,1), -1                    },
+    {WINED3DSIO_LOOP,         "loop",         NULL,                0, 2, WINED3DSIH_LOOP,         WINED3DPS_VERSION(3,0), -1                    },
+    {WINED3DSIO_RET,          "ret",          NULL,                0, 0, WINED3DSIH_RET,          WINED3DPS_VERSION(2,1), -1                    },
+    {WINED3DSIO_ENDLOOP,      "endloop",      NULL,                0, 0, WINED3DSIH_ENDLOOP,      WINED3DPS_VERSION(3,0), -1                    },
+    {WINED3DSIO_LABEL,        "label",        NULL,                0, 1, WINED3DSIH_LABEL,        WINED3DPS_VERSION(2,1), -1                    },
+    /* Constant definitions */
+    {WINED3DSIO_DEF,          "def",          "undefined",         1, 5, WINED3DSIH_DEF,          0,                      0                     },
+    {WINED3DSIO_DEFB,         "defb",         GLNAME_REQUIRE_GLSL, 1, 2, WINED3DSIH_DEFB,         0,                      0                     },
+    {WINED3DSIO_DEFI,         "defi",         GLNAME_REQUIRE_GLSL, 1, 5, WINED3DSIH_DEFI,         0,                      0                     },
+    /* Texture */
+    {WINED3DSIO_TEXCOORD,     "texcoord",     "undefined",         1, 1, WINED3DSIH_TEXCOORD,     0,                      WINED3DPS_VERSION(1,3)},
+    {WINED3DSIO_TEXCOORD,     "texcrd",       "undefined",         1, 2, WINED3DSIH_TEXCOORD,     WINED3DPS_VERSION(1,4), WINED3DPS_VERSION(1,4)},
+    {WINED3DSIO_TEXKILL,      "texkill",      "KIL",               1, 1, WINED3DSIH_TEXKILL,      WINED3DPS_VERSION(1,0), WINED3DPS_VERSION(3,0)},
+    {WINED3DSIO_TEX,          "tex",          "undefined",         1, 1, WINED3DSIH_TEX,          0,                      WINED3DPS_VERSION(1,3)},
+    {WINED3DSIO_TEX,          "texld",        "undefined",         1, 2, WINED3DSIH_TEX,          WINED3DPS_VERSION(1,4), WINED3DPS_VERSION(1,4)},
+    {WINED3DSIO_TEX,          "texld",        "undefined",         1, 3, WINED3DSIH_TEX,          WINED3DPS_VERSION(2,0), -1                    },
+    {WINED3DSIO_TEXBEM,       "texbem",       "undefined",         1, 2, WINED3DSIH_TEXBEM,       0,                      WINED3DPS_VERSION(1,3)},
+    {WINED3DSIO_TEXBEML,      "texbeml",      GLNAME_REQUIRE_GLSL, 1, 2, WINED3DSIH_TEXBEML,      WINED3DPS_VERSION(1,0), WINED3DPS_VERSION(1,3)},
+    {WINED3DSIO_TEXREG2AR,    "texreg2ar",    "undefined",         1, 2, WINED3DSIH_TEXREG2AR,    WINED3DPS_VERSION(1,0), WINED3DPS_VERSION(1,3)},
+    {WINED3DSIO_TEXREG2GB,    "texreg2gb",    "undefined",         1, 2, WINED3DSIH_TEXREG2GB,    WINED3DPS_VERSION(1,0), WINED3DPS_VERSION(1,3)},
+    {WINED3DSIO_TEXREG2RGB,   "texreg2rgb",   "undefined",         1, 2, WINED3DSIH_TEXREG2RGB,   WINED3DPS_VERSION(1,2), WINED3DPS_VERSION(1,3)},
+    {WINED3DSIO_TEXM3x2PAD,   "texm3x2pad",   "undefined",         1, 2, WINED3DSIH_TEXM3x2PAD,   WINED3DPS_VERSION(1,0), WINED3DPS_VERSION(1,3)},
+    {WINED3DSIO_TEXM3x2TEX,   "texm3x2tex",   "undefined",         1, 2, WINED3DSIH_TEXM3x2TEX,   WINED3DPS_VERSION(1,0), WINED3DPS_VERSION(1,3)},
+    {WINED3DSIO_TEXM3x3PAD,   "texm3x3pad",   "undefined",         1, 2, WINED3DSIH_TEXM3x3PAD,   WINED3DPS_VERSION(1,0), WINED3DPS_VERSION(1,3)},
+    {WINED3DSIO_TEXM3x3DIFF,  "texm3x3diff",  GLNAME_REQUIRE_GLSL, 1, 2, WINED3DSIH_TEXM3x3DIFF,  WINED3DPS_VERSION(0,0), WINED3DPS_VERSION(0,0)},
+    {WINED3DSIO_TEXM3x3SPEC,  "texm3x3spec",  "undefined",         1, 3, WINED3DSIH_TEXM3x3SPEC,  WINED3DPS_VERSION(1,0), WINED3DPS_VERSION(1,3)},
+    {WINED3DSIO_TEXM3x3VSPEC, "texm3x3vspec", "undefined",         1, 2, WINED3DSIH_TEXM3x3VSPEC, WINED3DPS_VERSION(1,0), WINED3DPS_VERSION(1,3)},
+    {WINED3DSIO_TEXM3x3TEX,   "texm3x3tex",   "undefined",         1, 2, WINED3DSIH_TEXM3x3TEX,   WINED3DPS_VERSION(1,0), WINED3DPS_VERSION(1,3)},
+    {WINED3DSIO_TEXDP3TEX,    "texdp3tex",    NULL,                1, 2, WINED3DSIH_TEXDP3TEX,    WINED3DPS_VERSION(1,2), WINED3DPS_VERSION(1,3)},
+    {WINED3DSIO_TEXM3x2DEPTH, "texm3x2depth", GLNAME_REQUIRE_GLSL, 1, 2, WINED3DSIH_TEXM3x2DEPTH, WINED3DPS_VERSION(1,3), WINED3DPS_VERSION(1,3)},
+    {WINED3DSIO_TEXDP3,       "texdp3",       NULL,                1, 2, WINED3DSIH_TEXDP3,       WINED3DPS_VERSION(1,2), WINED3DPS_VERSION(1,3)},
+    {WINED3DSIO_TEXM3x3,      "texm3x3",      NULL,                1, 2, WINED3DSIH_TEXM3x3,      WINED3DPS_VERSION(1,2), WINED3DPS_VERSION(1,3)},
+    {WINED3DSIO_TEXDEPTH,     "texdepth",     NULL,                1, 1, WINED3DSIH_TEXDEPTH,     WINED3DPS_VERSION(1,4), WINED3DPS_VERSION(1,4)},
+    {WINED3DSIO_BEM,          "bem",          "undefined",         1, 3, WINED3DSIH_BEM,          WINED3DPS_VERSION(1,4), WINED3DPS_VERSION(1,4)},
+    {WINED3DSIO_DSX,          "dsx",          NULL,                1, 2, WINED3DSIH_DSX,          WINED3DPS_VERSION(2,1), -1                    },
+    {WINED3DSIO_DSY,          "dsy",          NULL,                1, 2, WINED3DSIH_DSY,          WINED3DPS_VERSION(2,1), -1                    },
+    {WINED3DSIO_TEXLDD,       "texldd",       GLNAME_REQUIRE_GLSL, 1, 5, WINED3DSIH_TEXLDD,       WINED3DPS_VERSION(2,1), -1                    },
+    {WINED3DSIO_SETP,         "setp",         GLNAME_REQUIRE_GLSL, 1, 3, WINED3DSIH_SETP,         0,                      0                     },
+    {WINED3DSIO_TEXLDL,       "texldl",       NULL,                1, 3, WINED3DSIH_TEXLDL,       WINED3DPS_VERSION(3,0), -1                    },
+    {WINED3DSIO_PHASE,        "phase",        GLNAME_REQUIRE_GLSL, 0, 0, WINED3DSIH_PHASE,        0,                      0                     },
+    {0,                       NULL,           NULL,                0, 0, 0,                       0,                      0                     }
+};
+
+static void pshader_set_limits(
+      IWineD3DPixelShaderImpl *This) { 
+
+      This->baseShader.limits.attributes = 0;
+      This->baseShader.limits.address = 0;
+      This->baseShader.limits.packed_output = 0;
+
+      switch (This->baseShader.hex_version) {
+          case WINED3DPS_VERSION(1,0):
+          case WINED3DPS_VERSION(1,1):
+          case WINED3DPS_VERSION(1,2):
+          case WINED3DPS_VERSION(1,3): 
+                   This->baseShader.limits.temporary = 2;
+                   This->baseShader.limits.constant_float = 8;
+                   This->baseShader.limits.constant_int = 0;
+                   This->baseShader.limits.constant_bool = 0;
+                   This->baseShader.limits.texcoord = 4;
+                   This->baseShader.limits.sampler = 4;
+                   This->baseShader.limits.packed_input = 0;
+                   This->baseShader.limits.label = 0;
+                   break;
+
+          case WINED3DPS_VERSION(1,4):
+                   This->baseShader.limits.temporary = 6;
+                   This->baseShader.limits.constant_float = 8;
+                   This->baseShader.limits.constant_int = 0;
+                   This->baseShader.limits.constant_bool = 0;
+                   This->baseShader.limits.texcoord = 6;
+                   This->baseShader.limits.sampler = 6;
+                   This->baseShader.limits.packed_input = 0;
+                   This->baseShader.limits.label = 0;
+                   break;
+               
+          /* FIXME: temporaries must match D3DPSHADERCAPS2_0.NumTemps */ 
+          case WINED3DPS_VERSION(2,0):
+                   This->baseShader.limits.temporary = 32;
+                   This->baseShader.limits.constant_float = 32;
+                   This->baseShader.limits.constant_int = 16;
+                   This->baseShader.limits.constant_bool = 16;
+                   This->baseShader.limits.texcoord = 8;
+                   This->baseShader.limits.sampler = 16;
+                   This->baseShader.limits.packed_input = 0;
+                   break;
+
+          case WINED3DPS_VERSION(2,1):
+                   This->baseShader.limits.temporary = 32;
+                   This->baseShader.limits.constant_float = 32;
+                   This->baseShader.limits.constant_int = 16;
+                   This->baseShader.limits.constant_bool = 16;
+                   This->baseShader.limits.texcoord = 8;
+                   This->baseShader.limits.sampler = 16;
+                   This->baseShader.limits.packed_input = 0;
+                   This->baseShader.limits.label = 16;
+                   break;
+
+          case WINED3DPS_VERSION(3,0):
+                   This->baseShader.limits.temporary = 32;
+                   This->baseShader.limits.constant_float = 224;
+                   This->baseShader.limits.constant_int = 16;
+                   This->baseShader.limits.constant_bool = 16;
+                   This->baseShader.limits.texcoord = 0;
+                   This->baseShader.limits.sampler = 16;
+                   This->baseShader.limits.packed_input = 12;
+                   This->baseShader.limits.label = 16; /* FIXME: 2048 */
+                   break;
+
+          default: This->baseShader.limits.temporary = 32;
+                   This->baseShader.limits.constant_float = 32;
+                   This->baseShader.limits.constant_int = 16;
+                   This->baseShader.limits.constant_bool = 16;
+                   This->baseShader.limits.texcoord = 8;
+                   This->baseShader.limits.sampler = 16;
+                   This->baseShader.limits.packed_input = 0;
+                   This->baseShader.limits.label = 0;
+                   FIXME("Unrecognized pixel shader version %#x\n", 
+                       This->baseShader.hex_version);
+      }
+}
+
+/** Generate a pixel shader string using either GL_FRAGMENT_PROGRAM_ARB
+    or GLSL and send it to the card */
+static inline GLuint IWineD3DPixelShaderImpl_GenerateShader(
+    IWineD3DPixelShaderImpl *This) {
+    SHADER_BUFFER buffer;
+
+    buffer.buffer = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, SHADER_PGMSIZE);
+    buffer.bsize = 0;
+    buffer.lineNo = 0;
+    buffer.newline = TRUE;
+
+    return ((IWineD3DDeviceImpl *)This->baseShader.device)->shader_backend->shader_generate_pshader((IWineD3DPixelShader *) This, &buffer);
+}
+
+static HRESULT WINAPI IWineD3DPixelShaderImpl_SetFunction(IWineD3DPixelShader *iface, CONST DWORD *pFunction) {
+
+    IWineD3DPixelShaderImpl *This =(IWineD3DPixelShaderImpl *)iface;
+    IWineD3DDeviceImpl *deviceImpl = (IWineD3DDeviceImpl *) This->baseShader.device;
+
+    TRACE("(%p) : pFunction %p\n", iface, pFunction);
+
+    /* First pass: trace shader */
+    shader_trace_init((IWineD3DBaseShader*) This, pFunction);
+    pshader_set_limits(This);
+
+    /* Initialize immediate constant lists */
+    list_init(&This->baseShader.constantsF);
+    list_init(&This->baseShader.constantsB);
+    list_init(&This->baseShader.constantsI);
+
+    if (WINED3DSHADER_VERSION_MAJOR(This->baseShader.hex_version) > 1) {
+        shader_reg_maps *reg_maps = &This->baseShader.reg_maps;
+        HRESULT hr;
+        unsigned int i, j, highest_reg_used = 0, num_regs_used = 0;
+
+        /* Second pass: figure out which registers are used, what the semantics are, etc.. */
+        memset(reg_maps, 0, sizeof(shader_reg_maps));
+        hr = shader_get_registers_used((IWineD3DBaseShader*) This, reg_maps,
+            This->semantics_in, NULL, pFunction, NULL);
+        if (FAILED(hr)) return hr;
+        /* FIXME: validate reg_maps against OpenGL */
+
+        for(i = 0; i < MAX_REG_INPUT; i++) {
+            if(This->input_reg_used[i]) {
+                num_regs_used++;
+                highest_reg_used = i;
+            }
+        }
+
+        /* Don't do any register mapping magic if it is not needed, or if we can't
+         * achieve anything anyway
+         */
+        if(highest_reg_used < (GL_LIMITS(glsl_varyings) / 4) ||
+           num_regs_used > (GL_LIMITS(glsl_varyings) / 4) ) {
+            if(num_regs_used > (GL_LIMITS(glsl_varyings) / 4)) {
+                /* This happens with relative addressing. The input mapper function
+                 * warns about this if the higher registers are declared too, so
+                 * don't write a FIXME here
+                 */
+                WARN("More varying registers used than supported\n");
+            }
+
+            for(i = 0; i < MAX_REG_INPUT; i++) {
+                This->input_reg_map[i] = i;
+            }
+            This->declared_in_count = highest_reg_used + 1;
+        } else {
+            j = 0;
+            for(i = 0; i < MAX_REG_INPUT; i++) {
+                if(This->input_reg_used[i]) {
+                    This->input_reg_map[i] = j;
+                    j++;
+                } else {
+                    This->input_reg_map[i] = -1;
+                }
+            }
+            This->declared_in_count = j;
+        }
+    }
+    This->baseShader.load_local_constsF = FALSE;
+
+    This->baseShader.shader_mode = deviceImpl->ps_selected_mode;
+
+    TRACE("(%p) : Copying the function\n", This);
+    if (NULL != pFunction) {
+        void *function;
+
+        function = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, This->baseShader.functionLength);
+        if (!function) return E_OUTOFMEMORY;
+        memcpy(function, pFunction, This->baseShader.functionLength);
+        This->baseShader.function = function;
+    } else {
+        This->baseShader.function = NULL;
+    }
+
+    return WINED3D_OK;
+}
+
+static GLuint pixelshader_compile(IWineD3DPixelShaderImpl *This, const struct ps_compile_args *args)
+{
+    CONST DWORD *function = This->baseShader.function;
+    HRESULT hr;
+    GLuint retval;
+
+    TRACE("(%p) : function %p\n", This, function);
+
+    hr = IWineD3DPixelShader_UpdateSamplers((IWineD3DPixelShader *) This);
+    if(FAILED(hr)) {
+        ERR("Failed to update sampler information\n");
+        return 0;
+    }
+
+    /* Reset fields tracking stateblock values being hardcoded in the shader */
+    This->baseShader.num_sampled_samplers = 0;
+
+    /* Generate the HW shader */
+    TRACE("(%p) : Generating hardware program\n", This);
+    retval = IWineD3DPixelShaderImpl_GenerateShader(This);
+
+    This->baseShader.is_compiled = TRUE;
+
+    return retval;
+}
+
+static HRESULT WINAPI IWineD3DPixelShaderImpl_UpdateSamplers(IWineD3DPixelShader *iface) {
+    IWineD3DPixelShaderImpl *This =(IWineD3DPixelShaderImpl *)iface;
+
+    if (WINED3DSHADER_VERSION_MAJOR(This->baseShader.hex_version) == 1) {
+        IWineD3DDeviceImpl *deviceImpl = (IWineD3DDeviceImpl*) This->baseShader.device;
+        shader_reg_maps *reg_maps = &This->baseShader.reg_maps;
+        HRESULT hr;
+
+        /* Second pass: figure out which registers are used, what the semantics are, etc.. */
+        memset(reg_maps, 0, sizeof(shader_reg_maps));
+        hr = shader_get_registers_used((IWineD3DBaseShader*)This, reg_maps,
+                                        This->semantics_in, NULL, This->baseShader.function, deviceImpl->stateBlock);
+        return hr;
+        /* FIXME: validate reg_maps against OpenGL */
+    } else {
+        return WINED3D_OK;
+    }
+}
+
+const IWineD3DPixelShaderVtbl IWineD3DPixelShader_Vtbl =
+{
+    /*** IUnknown methods ***/
+    IWineD3DPixelShaderImpl_QueryInterface,
+    IWineD3DPixelShaderImpl_AddRef,
+    IWineD3DPixelShaderImpl_Release,
+    /*** IWineD3DBase methods ***/
+    IWineD3DPixelShaderImpl_GetParent,
+    /*** IWineD3DBaseShader methods ***/
+    IWineD3DPixelShaderImpl_SetFunction,
+    /*** IWineD3DPixelShader methods ***/
+    IWineD3DPixelShaderImpl_UpdateSamplers,
+    IWineD3DPixelShaderImpl_GetDevice,
+    IWineD3DPixelShaderImpl_GetFunction
+};
+
+void find_ps_compile_args(IWineD3DPixelShaderImpl *shader, IWineD3DStateBlockImpl *stateblock, struct ps_compile_args *args) {
+    UINT i, sampler;
+    IWineD3DBaseTextureImpl *tex;
+
+    args->srgb_correction = stateblock->renderState[WINED3DRS_SRGBWRITEENABLE] ? 1 : 0;
+
+    memset(args->color_fixup, 0, sizeof(args->color_fixup));
+    for(i = 0; i < shader->baseShader.num_sampled_samplers; i++) {
+        sampler = shader->baseShader.sampled_samplers[i];
+        tex = (IWineD3DBaseTextureImpl *) stateblock->textures[sampler];
+        if(!tex) {
+            args->color_fixup[sampler] = COLOR_FIXUP_IDENTITY;
+            continue;
+        }
+        args->color_fixup[sampler] = tex->baseTexture.shader_color_fixup;
+    }
+    if(shader->baseShader.hex_version >= WINED3DPS_VERSION(3,0)) {
+        if(((IWineD3DDeviceImpl *) shader->baseShader.device)->strided_streams.u.s.position_transformed) {
+            args->vp_mode = pretransformed;
+        } else if(use_vs((IWineD3DDeviceImpl *) shader->baseShader.device)) {
+            args->vp_mode = vertexshader;
+        } else {
+            args->vp_mode = fixedfunction;
+        }
+    } else {
+        args->vp_mode = vertexshader;
+    }
+}
+
+GLuint find_gl_pshader(IWineD3DPixelShaderImpl *shader, const struct ps_compile_args *args)
+{
+    UINT i;
+    struct ps_compiled_shader *old_array;
+
+    /* Usually we have very few GL shaders for each d3d shader(just 1 or maybe 2),
+     * so a linear search is more performant than a hashmap
+     */
+    for(i = 0; i < shader->num_gl_shaders; i++) {
+        if(memcmp(&shader->gl_shaders[i].args, args, sizeof(*args)) == 0) {
+            return shader->gl_shaders[i].prgId;
+        }
+    }
+
+    TRACE("No matching GL shader found, compiling a new shader\n");
+    old_array = shader->gl_shaders;
+    if(old_array) {
+        shader->gl_shaders = HeapReAlloc(GetProcessHeap(), 0, old_array,
+                                         (shader->num_gl_shaders + 1) * sizeof(*shader->gl_shaders));
+    } else {
+        shader->gl_shaders = HeapAlloc(GetProcessHeap(), 0, sizeof(*shader->gl_shaders));
+    }
+
+    if(!shader->gl_shaders) {
+        ERR("Out of memory\n");
+        return 0;
+    }
+
+    shader->gl_shaders[shader->num_gl_shaders].args = *args;
+    shader->gl_shaders[shader->num_gl_shaders].prgId = pixelshader_compile(shader, args);
+    return shader->gl_shaders[shader->num_gl_shaders++].prgId;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/query.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/query.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/query.c	(revision 16410)
@@ -0,0 +1,565 @@
+/*
+ * IWineD3DQuery implementation
+ *
+ * Copyright 2005 Oliver Stieber
+ * Copyright 2007-2008 Stefan Dösinger for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+
+#include "config.h"
+#include "wined3d_private.h"
+
+/*
+ * Occlusion Queries:
+ * http://www.gris.uni-tuebingen.de/~bartz/Publications/paper/hww98.pdf
+ * http://oss.sgi.com/projects/ogl-sample/registry/ARB/occlusion_query.txt
+ */
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d);
+#define GLINFO_LOCATION This->wineD3DDevice->adapter->gl_info
+
+/* *******************************************
+   IWineD3DQuery IUnknown parts follow
+   ******************************************* */
+static HRESULT  WINAPI IWineD3DQueryImpl_QueryInterface(IWineD3DQuery *iface, REFIID riid, LPVOID *ppobj)
+{
+    IWineD3DQueryImpl *This = (IWineD3DQueryImpl *)iface;
+    TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj);
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IWineD3DBase)
+        || IsEqualGUID(riid, &IID_IWineD3DQuery)) {
+        IUnknown_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG  WINAPI IWineD3DQueryImpl_AddRef(IWineD3DQuery *iface) {
+    IWineD3DQueryImpl *This = (IWineD3DQueryImpl *)iface;
+    TRACE("(%p) : AddRef increasing from %d\n", This, This->ref);
+    return InterlockedIncrement(&This->ref);
+}
+
+static ULONG  WINAPI IWineD3DQueryImpl_Release(IWineD3DQuery *iface) {
+    IWineD3DQueryImpl *This = (IWineD3DQueryImpl *)iface;
+    ULONG ref;
+    TRACE("(%p) : Releasing from %d\n", This, This->ref);
+    ref = InterlockedDecrement(&This->ref);
+    if (ref == 0) {
+        ENTER_GL();
+        if(This->type == WINED3DQUERYTYPE_EVENT) {
+            if(GL_SUPPORT(APPLE_FENCE)) {
+                GL_EXTCALL(glDeleteFencesAPPLE(1, &((WineQueryEventData *)(This->extendedData))->fenceId));
+                checkGLcall("glDeleteFencesAPPLE");
+            } else if(GL_SUPPORT(NV_FENCE)) {
+                GL_EXTCALL(glDeleteFencesNV(1, &((WineQueryEventData *)(This->extendedData))->fenceId));
+                checkGLcall("glDeleteFencesNV");
+            }
+        } else if(This->type == WINED3DQUERYTYPE_OCCLUSION && GL_SUPPORT(ARB_OCCLUSION_QUERY)) {
+            GL_EXTCALL(glDeleteQueriesARB(1, &((WineQueryOcclusionData *)(This->extendedData))->queryId));
+            checkGLcall("glDeleteQueriesARB");
+        }
+        LEAVE_GL();
+
+        HeapFree(GetProcessHeap(), 0, This->extendedData);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+    return ref;
+}
+
+/* *******************************************
+   IWineD3DQuery IWineD3DQuery parts follow
+   ******************************************* */
+static HRESULT  WINAPI IWineD3DQueryImpl_GetParent(IWineD3DQuery *iface, IUnknown** parent){
+    IWineD3DQueryImpl *This = (IWineD3DQueryImpl *)iface;
+
+    *parent= (IUnknown*) parent;
+    IUnknown_AddRef(*parent);
+    TRACE("(%p) : returning %p\n", This, *parent);
+    return WINED3D_OK;
+}
+
+static HRESULT  WINAPI IWineD3DQueryImpl_GetDevice(IWineD3DQuery* iface, IWineD3DDevice **pDevice){
+    IWineD3DQueryImpl *This = (IWineD3DQueryImpl *)iface;
+    IWineD3DDevice_AddRef((IWineD3DDevice *)This->wineD3DDevice);
+    *pDevice = (IWineD3DDevice *)This->wineD3DDevice;
+    TRACE("(%p) returning %p\n", This, *pDevice);
+    return WINED3D_OK;
+}
+
+
+static HRESULT  WINAPI IWineD3DQueryImpl_GetData(IWineD3DQuery* iface, void* pData, DWORD dwSize, DWORD dwGetDataFlags){
+    IWineD3DQueryImpl *This = (IWineD3DQueryImpl *)iface;
+    HRESULT res = S_OK;
+
+    TRACE("(%p) : type %#x, pData %p, dwSize %#x, dwGetDataFlags %#x\n", This, This->type, pData, dwSize, dwGetDataFlags);
+
+    switch (This->type){
+
+    case WINED3DQUERYTYPE_VCACHE:
+    {
+
+        WINED3DDEVINFO_VCACHE *data = (WINED3DDEVINFO_VCACHE *)pData;
+        FIXME("(%p): Unimplemented query WINED3DQUERYTYPE_VCACHE\n", This);
+        if(pData == NULL || dwSize == 0) break;
+        data->Pattern     = WINEMAKEFOURCC('C','A','C','H');
+        data->OptMethod   = 0; /*0 get longest strips, 1 optimize vertex cache*/
+        data->CacheSize   = 0; /*cache size, only required if OptMethod == 1*/
+        data->MagicNumber = 0; /*only required if OptMethod == 1 (used internally)*/
+
+    }
+    break;
+    case WINED3DQUERYTYPE_RESOURCEMANAGER:
+    {
+        WINED3DDEVINFO_RESOURCEMANAGER *data = (WINED3DDEVINFO_RESOURCEMANAGER *)pData;
+        int i;
+        FIXME("(%p): Unimplemented query WINED3DQUERYTYPE_RESOURCEMANAGER\n", This);
+        if(pData == NULL || dwSize == 0) break;
+        for(i = 0; i < WINED3DRTYPECOUNT; i++){
+            /*I'm setting the default values to 1 so as to reduce the risk of a div/0 in the caller*/
+            /*  isTextureResident could be used to get some of this information  */
+            data->stats[i].bThrashing            = FALSE;
+            data->stats[i].ApproxBytesDownloaded = 1;
+            data->stats[i].NumEvicts             = 1;
+            data->stats[i].NumVidCreates         = 1;
+            data->stats[i].LastPri               = 1;
+            data->stats[i].NumUsed               = 1;
+            data->stats[i].NumUsedInVidMem       = 1;
+            data->stats[i].WorkingSet            = 1;
+            data->stats[i].WorkingSetBytes       = 1;
+            data->stats[i].TotalManaged          = 1;
+            data->stats[i].TotalBytes            = 1;
+        }
+
+    }
+    break;
+    case WINED3DQUERYTYPE_VERTEXSTATS:
+    {
+        WINED3DDEVINFO_VERTEXSTATS *data = (WINED3DDEVINFO_VERTEXSTATS *)pData;
+        FIXME("(%p): Unimplemented query WINED3DQUERYTYPE_VERTEXSTATS\n", This);
+        if(pData == NULL || dwSize == 0) break;
+        data->NumRenderedTriangles      = 1;
+        data->NumExtraClippingTriangles = 1;
+
+    }
+    break;
+    case WINED3DQUERYTYPE_TIMESTAMP:
+    {
+        UINT64* data = pData;
+        FIXME("(%p): Unimplemented query WINED3DQUERYTYPE_TIMESTAMP\n", This);
+        if(pData == NULL || dwSize == 0) break;
+        *data = 1; /*Don't know what this is supposed to be*/
+    }
+    break;
+    case WINED3DQUERYTYPE_TIMESTAMPDISJOINT:
+    {
+        BOOL* data = pData;
+        FIXME("(%p): Unimplemented query WINED3DQUERYTYPE_TIMESTAMPDISJOINT\n", This);
+        if(pData == NULL || dwSize == 0) break;
+        *data = FALSE; /*Don't know what this is supposed to be*/
+    }
+    break;
+    case WINED3DQUERYTYPE_TIMESTAMPFREQ:
+    {
+        UINT64* data = pData;
+        FIXME("(%p): Unimplemented query WINED3DQUERYTYPE_TIMESTAMPFREQ\n", This);
+        if(pData == NULL || dwSize == 0) break;
+        *data = 1; /*Don't know what this is supposed to be*/
+    }
+    break;
+    case WINED3DQUERYTYPE_PIPELINETIMINGS:
+    {
+        WINED3DDEVINFO_PIPELINETIMINGS *data = (WINED3DDEVINFO_PIPELINETIMINGS *)pData;
+        FIXME("(%p): Unimplemented query WINED3DQUERYTYPE_PIPELINETIMINGS\n", This);
+        if(pData == NULL || dwSize == 0) break;
+
+        data->VertexProcessingTimePercent    =   1.0f;
+        data->PixelProcessingTimePercent     =   1.0f;
+        data->OtherGPUProcessingTimePercent  =  97.0f;
+        data->GPUIdleTimePercent             =   1.0f;
+    }
+    break;
+    case WINED3DQUERYTYPE_INTERFACETIMINGS:
+    {
+        WINED3DDEVINFO_INTERFACETIMINGS *data = (WINED3DDEVINFO_INTERFACETIMINGS *)pData;
+        FIXME("(%p): Unimplemented query WINED3DQUERYTYPE_INTERFACETIMINGS\n", This);
+
+        if(pData == NULL || dwSize == 0) break;
+        data->WaitingForGPUToUseApplicationResourceTimePercent =   1.0f;
+        data->WaitingForGPUToAcceptMoreCommandsTimePercent     =   1.0f;
+        data->WaitingForGPUToStayWithinLatencyTimePercent      =   1.0f;
+        data->WaitingForGPUExclusiveResourceTimePercent        =   1.0f;
+        data->WaitingForGPUOtherTimePercent                    =  96.0f;
+    }
+
+    break;
+    case WINED3DQUERYTYPE_VERTEXTIMINGS:
+    {
+        WINED3DDEVINFO_STAGETIMINGS *data = (WINED3DDEVINFO_STAGETIMINGS *)pData;
+        FIXME("(%p): Unimplemented query WINED3DQUERYTYPE_VERTEXTIMINGS\n", This);
+
+        if(pData == NULL || dwSize == 0) break;
+        data->MemoryProcessingPercent      = 50.0f;
+        data->ComputationProcessingPercent = 50.0f;
+
+    }
+    break;
+    case WINED3DQUERYTYPE_PIXELTIMINGS:
+    {
+        WINED3DDEVINFO_STAGETIMINGS *data = (WINED3DDEVINFO_STAGETIMINGS *)pData;
+        FIXME("(%p): Unimplemented query WINED3DQUERYTYPE_PIXELTIMINGS\n", This);
+
+        if(pData == NULL || dwSize == 0) break;
+        data->MemoryProcessingPercent      = 50.0f;
+        data->ComputationProcessingPercent = 50.0f;
+    }
+    break;
+    case WINED3DQUERYTYPE_BANDWIDTHTIMINGS:
+    {
+        WINED3DDEVINFO_BANDWIDTHTIMINGS *data = (WINED3DDEVINFO_BANDWIDTHTIMINGS *)pData;
+        FIXME("(%p): Unimplemented query WINED3DQUERYTYPE_BANDWIDTHTIMINGS\n", This);
+
+        if(pData == NULL || dwSize == 0) break;
+        data->MaxBandwidthUtilized                =  1.0f;
+        data->FrontEndUploadMemoryUtilizedPercent =  1.0f;
+        data->VertexRateUtilizedPercent           =  1.0f;
+        data->TriangleSetupRateUtilizedPercent    =  1.0f;
+        data->FillRateUtilizedPercent             = 97.0f;
+    }
+    break;
+    case WINED3DQUERYTYPE_CACHEUTILIZATION:
+    {
+        WINED3DDEVINFO_CACHEUTILIZATION *data = (WINED3DDEVINFO_CACHEUTILIZATION *)pData;
+        FIXME("(%p): Unimplemented query WINED3DQUERYTYPE_CACHEUTILIZATION\n", This);
+
+        if(pData == NULL || dwSize == 0) break;
+        data->TextureCacheHitRate             = 1.0f;
+        data->PostTransformVertexCacheHitRate = 1.0f;
+    }
+
+
+    break;
+    default:
+        FIXME("(%p) Unhandled query type %d\n",This , This->type);
+
+    };
+
+    /*dwGetDataFlags = 0 || D3DGETDATA_FLUSH
+    D3DGETDATA_FLUSH may return WINED3DERR_DEVICELOST if the device is lost
+    */
+    return res; /* S_OK if the query data is available*/
+}
+
+static HRESULT  WINAPI IWineD3DOcclusionQueryImpl_GetData(IWineD3DQuery* iface, void* pData, DWORD dwSize, DWORD dwGetDataFlags) {
+    IWineD3DQueryImpl *This = (IWineD3DQueryImpl *) iface;
+    DWORD* data = pData;
+    HRESULT res;
+    TRACE("(%p) : type D3DQUERY_OCCLUSION, pData %p, dwSize %#x, dwGetDataFlags %#x\n", This, pData, dwSize, dwGetDataFlags);
+
+    if(This->state == QUERY_CREATED) {
+        /* D3D allows GetData on a new query, OpenGL doesn't. So just invent the data ourselves */
+        TRACE("Query wasn't yet started, returning S_OK\n");
+        res = S_OK;
+        if(data) *data = 0;
+    } else if(This->state == QUERY_BUILDING) {
+        /* Msdn says this returns an error, but our tests show that S_FALSE is returned */
+        TRACE("Query is building, returning S_FALSE\n");
+        res = S_FALSE;
+    } else if (GL_SUPPORT(ARB_OCCLUSION_QUERY) &&
+        ((WineQueryOcclusionData *)This->extendedData)->ctx == This->wineD3DDevice->activeContext &&
+                This->wineD3DDevice->activeContext->tid == GetCurrentThreadId()) {
+        GLuint available;
+        GLuint samples;
+        GLuint queryId = ((WineQueryOcclusionData *)This->extendedData)->queryId;
+
+        ENTER_GL();
+        GL_EXTCALL(glGetQueryObjectuivARB(queryId, GL_QUERY_RESULT_AVAILABLE_ARB, &available));
+        checkGLcall("glGetQueryObjectuivARB(GL_QUERY_RESULT_AVAILABLE)\n");
+        TRACE("(%p) : available %d.\n", This, available);
+
+        if (available) {
+            if(data) {
+                GL_EXTCALL(glGetQueryObjectuivARB(queryId, GL_QUERY_RESULT_ARB, &samples));
+                checkGLcall("glGetQueryObjectuivARB(GL_QUERY_RESULT)\n");
+                TRACE("(%p) : Returning %d samples.\n", This, samples);
+                *data = samples;
+            }
+            res = S_OK;
+        } else {
+            res = S_FALSE;
+        }
+        LEAVE_GL();
+    } else {
+        WARN("(%p) : Occlusion queries not supported, or wrong context. Returning 1.\n", This);
+        *data = 1;
+        res = S_OK;
+    }
+    return res;
+}
+
+static HRESULT  WINAPI IWineD3DEventQueryImpl_GetData(IWineD3DQuery* iface, void* pData, DWORD dwSize, DWORD dwGetDataFlags) {
+    IWineD3DQueryImpl *This = (IWineD3DQueryImpl *) iface;
+    BOOL* data = pData;
+    WineD3DContext *ctx;
+    TRACE("(%p) : type D3DQUERY_EVENT, pData %p, dwSize %#x, dwGetDataFlags %#x\n", This, pData, dwSize, dwGetDataFlags);
+
+    ctx = ((WineQueryEventData *)This->extendedData)->ctx;
+    if(pData == NULL || dwSize == 0) {
+        return S_OK;
+    } if(ctx != This->wineD3DDevice->activeContext || ctx->tid != GetCurrentThreadId()) {
+        /* See comment in IWineD3DQuery::Issue, event query codeblock */
+        WARN("Query context not active, reporting GPU idle\n");
+        *data = TRUE;
+    } else if(GL_SUPPORT(APPLE_FENCE)) {
+        ENTER_GL();
+        *data = GL_EXTCALL(glTestFenceAPPLE(((WineQueryEventData *)This->extendedData)->fenceId));
+        checkGLcall("glTestFenceAPPLE");
+        LEAVE_GL();
+    } else if(GL_SUPPORT(NV_FENCE)) {
+        ENTER_GL();
+        *data = GL_EXTCALL(glTestFenceNV(((WineQueryEventData *)This->extendedData)->fenceId));
+        checkGLcall("glTestFenceNV");
+        LEAVE_GL();
+    } else {
+        WARN("(%p): reporting GPU idle\n", This);
+        *data = TRUE;
+    }
+
+    return S_OK;
+}
+
+static DWORD  WINAPI IWineD3DQueryImpl_GetDataSize(IWineD3DQuery* iface){
+    IWineD3DQueryImpl *This = (IWineD3DQueryImpl *)iface;
+    int dataSize = 0;
+    TRACE("(%p) : type %#x\n", This, This->type);
+    switch(This->type){
+    case WINED3DQUERYTYPE_VCACHE:
+        dataSize = sizeof(WINED3DDEVINFO_VCACHE);
+        break;
+    case WINED3DQUERYTYPE_RESOURCEMANAGER:
+        dataSize = sizeof(WINED3DDEVINFO_RESOURCEMANAGER);
+        break;
+    case WINED3DQUERYTYPE_VERTEXSTATS:
+        dataSize = sizeof(WINED3DDEVINFO_VERTEXSTATS);
+        break;
+    case WINED3DQUERYTYPE_EVENT:
+        dataSize = sizeof(BOOL);
+        break;
+    case WINED3DQUERYTYPE_TIMESTAMP:
+        dataSize = sizeof(UINT64);
+        break;
+    case WINED3DQUERYTYPE_TIMESTAMPDISJOINT:
+        dataSize = sizeof(BOOL);
+        break;
+    case WINED3DQUERYTYPE_TIMESTAMPFREQ:
+        dataSize = sizeof(UINT64);
+        break;
+    case WINED3DQUERYTYPE_PIPELINETIMINGS:
+        dataSize = sizeof(WINED3DDEVINFO_PIPELINETIMINGS);
+        break;
+    case WINED3DQUERYTYPE_INTERFACETIMINGS:
+        dataSize = sizeof(WINED3DDEVINFO_INTERFACETIMINGS);
+        break;
+    case WINED3DQUERYTYPE_VERTEXTIMINGS:
+        dataSize = sizeof(WINED3DDEVINFO_STAGETIMINGS);
+        break;
+    case WINED3DQUERYTYPE_PIXELTIMINGS:
+        dataSize = sizeof(WINED3DDEVINFO_STAGETIMINGS);
+        break;
+    case WINED3DQUERYTYPE_BANDWIDTHTIMINGS:
+        dataSize = sizeof(WINED3DQUERYTYPE_BANDWIDTHTIMINGS);
+        break;
+    case WINED3DQUERYTYPE_CACHEUTILIZATION:
+        dataSize = sizeof(WINED3DDEVINFO_CACHEUTILIZATION);
+        break;
+    default:
+       FIXME("(%p) Unhandled query type %d\n",This , This->type);
+       dataSize = 0;
+    }
+    return dataSize;
+}
+
+static DWORD  WINAPI IWineD3DEventQueryImpl_GetDataSize(IWineD3DQuery* iface){
+    TRACE("(%p) : type D3DQUERY_EVENT\n", iface);
+
+    return sizeof(BOOL);
+}
+
+static DWORD  WINAPI IWineD3DOcclusionQueryImpl_GetDataSize(IWineD3DQuery* iface){
+    TRACE("(%p) : type D3DQUERY_OCCLUSION\n", iface);
+
+    return sizeof(DWORD);
+}
+
+static WINED3DQUERYTYPE  WINAPI IWineD3DQueryImpl_GetType(IWineD3DQuery* iface){
+    IWineD3DQueryImpl *This = (IWineD3DQueryImpl *)iface;
+    return This->type;
+}
+
+
+static HRESULT  WINAPI IWineD3DEventQueryImpl_Issue(IWineD3DQuery* iface,  DWORD dwIssueFlags) {
+    IWineD3DQueryImpl *This = (IWineD3DQueryImpl *)iface;
+
+    TRACE("(%p) : dwIssueFlags %#x, type D3DQUERY_EVENT\n", This, dwIssueFlags);
+    if (dwIssueFlags & WINED3DISSUE_END) {
+        WineD3DContext *ctx = ((WineQueryEventData *)This->extendedData)->ctx;
+        if(ctx != This->wineD3DDevice->activeContext || ctx->tid != GetCurrentThreadId()) {
+            /* GL fences can be used only from the context that created them,
+             * so if a different context is active, don't bother setting the query. The penalty
+             * of a context switch is most likely higher than the gain of a correct query result
+             *
+             * If the query is used from a different thread, don't bother creating a multithread
+             * context - there's no point in doing that as the query would be unusable anyway
+             */
+            WARN("Query context not active\n");
+        } else if(GL_SUPPORT(APPLE_FENCE)) {
+            ENTER_GL();
+            GL_EXTCALL(glSetFenceAPPLE(((WineQueryEventData *)This->extendedData)->fenceId));
+            checkGLcall("glSetFenceAPPLE");
+            LEAVE_GL();
+        } else if (GL_SUPPORT(NV_FENCE)) {
+            ENTER_GL();
+            GL_EXTCALL(glSetFenceNV(((WineQueryEventData *)This->extendedData)->fenceId, GL_ALL_COMPLETED_NV));
+            checkGLcall("glSetFenceNV");
+            LEAVE_GL();
+        }
+    } else if(dwIssueFlags & WINED3DISSUE_BEGIN) {
+        /* Started implicitly at device creation */
+        ERR("Event query issued with START flag - what to do?\n");
+    }
+
+    if(dwIssueFlags & WINED3DISSUE_BEGIN) {
+        This->state = QUERY_BUILDING;
+    } else {
+        This->state = QUERY_SIGNALLED;
+    }
+
+    return WINED3D_OK;
+}
+
+static HRESULT  WINAPI IWineD3DOcclusionQueryImpl_Issue(IWineD3DQuery* iface,  DWORD dwIssueFlags) {
+    IWineD3DQueryImpl *This = (IWineD3DQueryImpl *)iface;
+
+    if (GL_SUPPORT(ARB_OCCLUSION_QUERY)) {
+        WineD3DContext *ctx = ((WineQueryOcclusionData *)This->extendedData)->ctx;
+
+        if(ctx != This->wineD3DDevice->activeContext || ctx->tid != GetCurrentThreadId()) {
+            WARN("Not the owning context, can't start query\n");
+        } else {
+            ENTER_GL();
+            /* This is allowed according to msdn and our tests. Reset the query and restart */
+            if (dwIssueFlags & WINED3DISSUE_BEGIN) {
+                if(This->state == QUERY_BUILDING) {
+                    GL_EXTCALL(glEndQueryARB(GL_SAMPLES_PASSED_ARB));
+                    checkGLcall("glEndQuery()");
+                }
+
+                GL_EXTCALL(glBeginQueryARB(GL_SAMPLES_PASSED_ARB, ((WineQueryOcclusionData *)This->extendedData)->queryId));
+                checkGLcall("glBeginQuery()");
+            }
+            if (dwIssueFlags & WINED3DISSUE_END) {
+                /* Msdn says _END on a non-building occlusion query returns an error, but
+                 * our tests show that it returns OK. But OpenGL doesn't like it, so avoid
+                 * generating an error
+                 */
+                if(This->state == QUERY_BUILDING) {
+                    GL_EXTCALL(glEndQueryARB(GL_SAMPLES_PASSED_ARB));
+                    checkGLcall("glEndQuery()");
+                }
+            }
+            LEAVE_GL();
+        }
+    } else {
+        FIXME("(%p) : Occlusion queries not supported\n", This);
+    }
+
+    if(dwIssueFlags & WINED3DISSUE_BEGIN) {
+        This->state = QUERY_BUILDING;
+    } else {
+        This->state = QUERY_SIGNALLED;
+    }
+    return WINED3D_OK; /* can be WINED3DERR_INVALIDCALL.    */
+}
+
+static HRESULT  WINAPI IWineD3DQueryImpl_Issue(IWineD3DQuery* iface,  DWORD dwIssueFlags){
+    IWineD3DQueryImpl *This = (IWineD3DQueryImpl *)iface;
+
+    TRACE("(%p) : dwIssueFlags %#x, type %#x\n", This, dwIssueFlags, This->type);
+
+    /* The fixme is printed when the app asks for the resulting data */
+    WARN("(%p) : Unhandled query type %#x\n", This, This->type);
+
+    if(dwIssueFlags & WINED3DISSUE_BEGIN) {
+        This->state = QUERY_BUILDING;
+    } else {
+        This->state = QUERY_SIGNALLED;
+    }
+
+    return WINED3D_OK; /* can be WINED3DERR_INVALIDCALL.    */
+}
+
+
+/**********************************************************
+ * IWineD3DQuery VTbl follows
+ **********************************************************/
+
+const IWineD3DQueryVtbl IWineD3DQuery_Vtbl =
+{
+    /*** IUnknown methods ***/
+    IWineD3DQueryImpl_QueryInterface,
+    IWineD3DQueryImpl_AddRef,
+    IWineD3DQueryImpl_Release,
+     /*** IWineD3Dquery methods ***/
+    IWineD3DQueryImpl_GetParent,
+    IWineD3DQueryImpl_GetDevice,
+    IWineD3DQueryImpl_GetData,
+    IWineD3DQueryImpl_GetDataSize,
+    IWineD3DQueryImpl_GetType,
+    IWineD3DQueryImpl_Issue
+};
+
+const IWineD3DQueryVtbl IWineD3DEventQuery_Vtbl =
+{
+    /*** IUnknown methods ***/
+    IWineD3DQueryImpl_QueryInterface,
+    IWineD3DQueryImpl_AddRef,
+    IWineD3DQueryImpl_Release,
+    /*** IWineD3Dquery methods ***/
+    IWineD3DQueryImpl_GetParent,
+    IWineD3DQueryImpl_GetDevice,
+    IWineD3DEventQueryImpl_GetData,
+    IWineD3DEventQueryImpl_GetDataSize,
+    IWineD3DQueryImpl_GetType,
+    IWineD3DEventQueryImpl_Issue
+};
+
+const IWineD3DQueryVtbl IWineD3DOcclusionQuery_Vtbl =
+{
+    /*** IUnknown methods ***/
+    IWineD3DQueryImpl_QueryInterface,
+    IWineD3DQueryImpl_AddRef,
+    IWineD3DQueryImpl_Release,
+    /*** IWineD3Dquery methods ***/
+    IWineD3DQueryImpl_GetParent,
+    IWineD3DQueryImpl_GetDevice,
+    IWineD3DOcclusionQueryImpl_GetData,
+    IWineD3DOcclusionQueryImpl_GetDataSize,
+    IWineD3DQueryImpl_GetType,
+    IWineD3DOcclusionQueryImpl_Issue
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/resource.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/resource.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/resource.c	(revision 16410)
@@ -0,0 +1,218 @@
+/*
+ * IWineD3DResource Implementation
+ *
+ * Copyright 2002-2004 Jason Edmeades
+ * Copyright 2003-2004 Raphael Junqueira
+ * Copyright 2004 Christian Costa
+ * Copyright 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d);
+#define GLINFO_LOCATION ((IWineD3DImpl *)(((IWineD3DDeviceImpl *)This->resource.wineD3DDevice)->wineD3D))->gl_info
+
+void resource_cleanup(IWineD3DResource *iface)
+{
+    IWineD3DResourceImpl *This = (IWineD3DResourceImpl *)iface;
+    struct list *e1, *e2;
+    PrivateData *data;
+    HRESULT hr;
+
+    TRACE("(%p) Cleaning up resource\n", This);
+    if (This->resource.pool == WINED3DPOOL_DEFAULT) {
+        TRACE("Decrementing device memory pool by %u\n", This->resource.size);
+        WineD3DAdapterChangeGLRam(This->resource.wineD3DDevice, -This->resource.size);
+    }
+
+    LIST_FOR_EACH_SAFE(e1, e2, &This->resource.privateData) {
+        data = LIST_ENTRY(e1, PrivateData, entry);
+        hr = resource_free_private_data(iface, &data->tag);
+        if(hr != WINED3D_OK) {
+            ERR("Failed to free private data when destroying resource %p, hr = %08x\n", This, hr);
+        }
+    }
+
+    HeapFree(GetProcessHeap(), 0, This->resource.heapMemory);
+    This->resource.allocatedMemory = 0;
+    This->resource.heapMemory = 0;
+
+    if (This->resource.wineD3DDevice != NULL) {
+        IWineD3DDevice_ResourceReleased((IWineD3DDevice *)This->resource.wineD3DDevice, iface);
+    }/* NOTE: this is not really an error for system memory resources */
+    return;
+}
+
+HRESULT resource_get_device(IWineD3DResource *iface, IWineD3DDevice** ppDevice)
+{
+    IWineD3DResourceImpl *This = (IWineD3DResourceImpl *)iface;
+    TRACE("(%p) : returning %p\n", This, This->resource.wineD3DDevice);
+    *ppDevice = (IWineD3DDevice *) This->resource.wineD3DDevice;
+    IWineD3DDevice_AddRef(*ppDevice);
+    return WINED3D_OK;
+}
+
+static PrivateData* resource_find_private_data(IWineD3DResourceImpl *This, REFGUID tag)
+{
+    PrivateData *data;
+    struct list *entry;
+
+    TRACE("Searching for private data %s\n", debugstr_guid(tag));
+    LIST_FOR_EACH(entry, &This->resource.privateData)
+    {
+        data = LIST_ENTRY(entry, PrivateData, entry);
+        if (IsEqualGUID(&data->tag, tag)) {
+            TRACE("Found %p\n", data);
+            return data;
+        }
+    }
+    TRACE("Not found\n");
+    return NULL;
+}
+
+HRESULT resource_set_private_data(IWineD3DResource *iface, REFGUID refguid,
+        const void *pData, DWORD SizeOfData, DWORD Flags)
+{
+    IWineD3DResourceImpl *This = (IWineD3DResourceImpl *)iface;
+    PrivateData *data;
+
+    TRACE("(%p) : %s %p %d %d\n", This, debugstr_guid(refguid), pData, SizeOfData, Flags);
+    resource_free_private_data(iface, refguid);
+
+    data = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*data));
+    if (NULL == data) return E_OUTOFMEMORY;
+
+    data->tag = *refguid;
+    data->flags = Flags;
+
+    if (Flags & WINED3DSPD_IUNKNOWN) {
+        if(SizeOfData != sizeof(IUnknown *)) {
+            WARN("IUnknown data with size %d, returning WINED3DERR_INVALIDCALL\n", SizeOfData);
+            HeapFree(GetProcessHeap(), 0, data);
+            return WINED3DERR_INVALIDCALL;
+        }
+        data->ptr.object = (LPUNKNOWN)pData;
+        data->size = sizeof(LPUNKNOWN);
+        IUnknown_AddRef(data->ptr.object);
+    }
+    else
+    {
+        data->ptr.data = HeapAlloc(GetProcessHeap(), 0, SizeOfData);
+        if (NULL == data->ptr.data) {
+            HeapFree(GetProcessHeap(), 0, data);
+            return E_OUTOFMEMORY;
+        }
+        data->size = SizeOfData;
+        memcpy(data->ptr.data, pData, SizeOfData);
+    }
+    list_add_tail(&This->resource.privateData, &data->entry);
+
+    return WINED3D_OK;
+}
+
+HRESULT resource_get_private_data(IWineD3DResource *iface, REFGUID refguid, void *pData, DWORD *pSizeOfData)
+{
+    IWineD3DResourceImpl *This = (IWineD3DResourceImpl *)iface;
+    PrivateData *data;
+
+    TRACE("(%p) : %p %p %p\n", This, refguid, pData, pSizeOfData);
+    data = resource_find_private_data(This, refguid);
+    if (data == NULL) return WINED3DERR_NOTFOUND;
+
+    if (*pSizeOfData < data->size) {
+        *pSizeOfData = data->size;
+        return WINED3DERR_MOREDATA;
+    }
+
+    if (data->flags & WINED3DSPD_IUNKNOWN) {
+        *(LPUNKNOWN *)pData = data->ptr.object;
+        if(((IWineD3DImpl *) This->resource.wineD3DDevice->wineD3D)->dxVersion != 7) {
+            /* D3D8 and D3D9 addref the private data, DDraw does not. This can't be handled in
+             * ddraw because it doesn't know if the pointer returned is an IUnknown * or just a
+             * Blob
+             */
+            IUnknown_AddRef(data->ptr.object);
+        }
+    }
+    else {
+        memcpy(pData, data->ptr.data, data->size);
+    }
+
+    return WINED3D_OK;
+}
+HRESULT resource_free_private_data(IWineD3DResource *iface, REFGUID refguid)
+{
+    IWineD3DResourceImpl *This = (IWineD3DResourceImpl *)iface;
+    PrivateData *data;
+
+    TRACE("(%p) : %s\n", This, debugstr_guid(refguid));
+    data = resource_find_private_data(This, refguid);
+    if (data == NULL) return WINED3DERR_NOTFOUND;
+
+    if (data->flags & WINED3DSPD_IUNKNOWN)
+    {
+        if (data->ptr.object != NULL)
+            IUnknown_Release(data->ptr.object);
+    } else {
+        HeapFree(GetProcessHeap(), 0, data->ptr.data);
+    }
+    list_remove(&data->entry);
+
+    HeapFree(GetProcessHeap(), 0, data);
+
+    return WINED3D_OK;
+}
+
+DWORD resource_set_priority(IWineD3DResource *iface, DWORD PriorityNew)
+{
+    IWineD3DResourceImpl *This = (IWineD3DResourceImpl *)iface;
+    DWORD PriorityOld = This->resource.priority;
+    This->resource.priority = PriorityNew;
+    TRACE("(%p) : new priority %d, returning old priority %d\n", This, PriorityNew, PriorityOld );
+    return PriorityOld;
+}
+
+DWORD resource_get_priority(IWineD3DResource *iface)
+{
+    IWineD3DResourceImpl *This = (IWineD3DResourceImpl *)iface;
+    TRACE("(%p) : returning %d\n", This, This->resource.priority );
+    return This->resource.priority;
+}
+
+WINED3DRESOURCETYPE resource_get_type(IWineD3DResource *iface)
+{
+    IWineD3DResourceImpl *This = (IWineD3DResourceImpl *)iface;
+    TRACE("(%p) : returning %d\n", This, This->resource.resourceType);
+    return This->resource.resourceType;
+}
+
+HRESULT resource_get_parent(IWineD3DResource *iface, IUnknown **pParent)
+{
+    IWineD3DResourceImpl *This = (IWineD3DResourceImpl *)iface;
+    IUnknown_AddRef(This->resource.parent);
+    *pParent = This->resource.parent;
+    return WINED3D_OK;
+}
+
+void dumpResources(struct list *list) {
+    IWineD3DResourceImpl *resource;
+
+    LIST_FOR_EACH_ENTRY(resource, list, IWineD3DResourceImpl, resource.resource_list_entry) {
+        FIXME("Leftover resource %p with type %d,%s\n", resource, IWineD3DResource_GetType((IWineD3DResource *) resource), debug_d3dresourcetype(IWineD3DResource_GetType((IWineD3DResource *) resource)));
+    }
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/state.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/state.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/state.c	(revision 16410)
@@ -0,0 +1,5614 @@
+
+/*
+ * Direct3D state management
+ *
+ * Copyright 2002 Lionel Ulmer
+ * Copyright 2002-2005 Jason Edmeades
+ * Copyright 2003-2004 Raphael Junqueira
+ * Copyright 2004 Christian Costa
+ * Copyright 2005 Oliver Stieber
+ * Copyright 2006 Henri Verbeet
+ * Copyright 2006-2008 Stefan Dösinger for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include <stdio.h>
+#ifdef HAVE_FLOAT_H
+# include <float.h>
+#endif
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d);
+WINE_DECLARE_DEBUG_CHANNEL(d3d_shader);
+
+#define GLINFO_LOCATION stateblock->wineD3DDevice->adapter->gl_info
+
+static void state_blendop(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context);
+
+static void state_nogl(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    /* Used for states which are not mapped to a gl state as-is, but used somehow different,
+     * e.g as a parameter for drawing, or which are unimplemented in windows d3d
+     */
+    if(STATE_IS_RENDER(state)) {
+        WINED3DRENDERSTATETYPE RenderState = state - STATE_RENDER(0);
+        TRACE("(%s,%d) no direct mapping to gl\n", debug_d3drenderstate(RenderState), stateblock->renderState[RenderState]);
+    } else {
+        /* Shouldn't have an unknown type here */
+        FIXME("%d no direct mapping to gl of state with unknown type\n", state);
+    }
+}
+
+static void state_undefined(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    /* Print a WARN, this allows the stateblock code to loop over all states to generate a display
+     * list without causing confusing terminal output. Deliberately no special debug name here
+     * because its undefined.
+     */
+    WARN("undefined state %d\n", state);
+}
+
+static void state_fillmode(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    WINED3DFILLMODE Value = stateblock->renderState[WINED3DRS_FILLMODE];
+
+    switch(Value) {
+        case WINED3DFILL_POINT:
+            glPolygonMode(GL_FRONT_AND_BACK, GL_POINT);
+            checkGLcall("glPolygonMode(GL_FRONT_AND_BACK, GL_POINT)");
+            break;
+        case WINED3DFILL_WIREFRAME:
+            glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
+            checkGLcall("glPolygonMode(GL_FRONT_AND_BACK, GL_LINE)");
+            break;
+        case WINED3DFILL_SOLID:
+            glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
+            checkGLcall("glPolygonMode(GL_FRONT_AND_BACK, GL_FILL)");
+            break;
+        default:
+            FIXME("Unrecognized WINED3DRS_FILLMODE value %d\n", Value);
+    }
+}
+
+static void state_lighting(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    BOOL transformed;
+
+    /* Lighting is not enabled if transformed vertices are drawn
+     * but lighting does not affect the stream sources, so it is not grouped for performance reasons.
+     * This state reads the decoded vertex declaration, so if it is dirty don't do anything. The
+     * vertex declaration applying function calls this function for updating
+     */
+
+    if(isStateDirty(context, STATE_VDECL)) {
+        return;
+    }
+
+    transformed = ((stateblock->wineD3DDevice->strided_streams.u.s.position.lpData != NULL ||
+                    stateblock->wineD3DDevice->strided_streams.u.s.position.VBO != 0) &&
+                    stateblock->wineD3DDevice->strided_streams.u.s.position_transformed) ? TRUE : FALSE;
+
+    if (stateblock->renderState[WINED3DRS_LIGHTING] && !transformed) {
+        glEnable(GL_LIGHTING);
+        checkGLcall("glEnable GL_LIGHTING");
+    } else {
+        glDisable(GL_LIGHTING);
+        checkGLcall("glDisable GL_LIGHTING");
+    }
+}
+
+static void state_zenable(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    /* No z test without depth stencil buffers */
+    if(stateblock->wineD3DDevice->stencilBufferTarget == NULL) {
+        TRACE("No Z buffer - disabling depth test\n");
+        glDisable(GL_DEPTH_TEST); /* This also disables z writing in gl */
+        checkGLcall("glDisable GL_DEPTH_TEST");
+        return;
+    }
+
+    switch ((WINED3DZBUFFERTYPE) stateblock->renderState[WINED3DRS_ZENABLE]) {
+        case WINED3DZB_FALSE:
+            glDisable(GL_DEPTH_TEST);
+            checkGLcall("glDisable GL_DEPTH_TEST");
+            break;
+        case WINED3DZB_TRUE:
+            glEnable(GL_DEPTH_TEST);
+            checkGLcall("glEnable GL_DEPTH_TEST");
+            break;
+        case WINED3DZB_USEW:
+            glEnable(GL_DEPTH_TEST);
+            checkGLcall("glEnable GL_DEPTH_TEST");
+            FIXME("W buffer is not well handled\n");
+            break;
+        default:
+            FIXME("Unrecognized D3DZBUFFERTYPE value %d\n", stateblock->renderState[WINED3DRS_ZENABLE]);
+    }
+}
+
+static void state_cullmode(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    /* glFrontFace() is set in context.c at context init and on an offscreen / onscreen rendering
+     * switch
+     */
+    switch ((WINED3DCULL) stateblock->renderState[WINED3DRS_CULLMODE]) {
+        case WINED3DCULL_NONE:
+            glDisable(GL_CULL_FACE);
+            checkGLcall("glDisable GL_CULL_FACE");
+            break;
+        case WINED3DCULL_CW:
+            glEnable(GL_CULL_FACE);
+            checkGLcall("glEnable GL_CULL_FACE");
+            glCullFace(GL_FRONT);
+            checkGLcall("glCullFace(GL_FRONT)");
+            break;
+        case WINED3DCULL_CCW:
+            glEnable(GL_CULL_FACE);
+            checkGLcall("glEnable GL_CULL_FACE");
+            glCullFace(GL_BACK);
+            checkGLcall("glCullFace(GL_BACK)");
+            break;
+        default:
+            FIXME("Unrecognized/Unhandled WINED3DCULL value %d\n", stateblock->renderState[WINED3DRS_CULLMODE]);
+    }
+}
+
+static void state_shademode(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    switch ((WINED3DSHADEMODE) stateblock->renderState[WINED3DRS_SHADEMODE]) {
+        case WINED3DSHADE_FLAT:
+            glShadeModel(GL_FLAT);
+            checkGLcall("glShadeModel(GL_FLAT)");
+            break;
+        case WINED3DSHADE_GOURAUD:
+            glShadeModel(GL_SMOOTH);
+            checkGLcall("glShadeModel(GL_SMOOTH)");
+            break;
+        case WINED3DSHADE_PHONG:
+            FIXME("WINED3DSHADE_PHONG isn't supported\n");
+            break;
+        default:
+            FIXME("Unrecognized/Unhandled WINED3DSHADEMODE value %d\n", stateblock->renderState[WINED3DRS_SHADEMODE]);
+    }
+}
+
+static void state_ditherenable(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if (stateblock->renderState[WINED3DRS_DITHERENABLE]) {
+        glEnable(GL_DITHER);
+        checkGLcall("glEnable GL_DITHER");
+    } else {
+        glDisable(GL_DITHER);
+        checkGLcall("glDisable GL_DITHER");
+    }
+}
+
+static void state_zwritenable(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    /* TODO: Test if in d3d z writing is enabled even if ZENABLE is off. If yes,
+     * this has to be merged with ZENABLE and ZFUNC
+     */
+    if (stateblock->renderState[WINED3DRS_ZWRITEENABLE]) {
+        glDepthMask(1);
+        checkGLcall("glDepthMask(1)");
+    } else {
+        glDepthMask(0);
+        checkGLcall("glDepthMask(0)");
+    }
+}
+
+static void state_zfunc(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    int glParm = CompareFunc(stateblock->renderState[WINED3DRS_ZFUNC]);
+
+    if(glParm) {
+        if(glParm == GL_EQUAL || glParm == GL_NOTEQUAL) {
+            static BOOL once = FALSE;
+            /* There are a few issues with this: First, our inability to
+             * select a proper Z depth, most of the time we're stuck with
+             * D24S8, even if the app selects D32 or D16. There seem to be
+             * some other precision problems which have to be debugged to
+             * make NOTEQUAL and EQUAL work properly
+             */
+            if(!once) {
+                once = TRUE;
+                FIXME("D3DCMP_NOTEQUAL and D3DCMP_EQUAL do not work correctly yet\n");
+            }
+        }
+
+        glDepthFunc(glParm);
+        checkGLcall("glDepthFunc");
+    }
+}
+
+static void state_ambient(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    float col[4];
+    D3DCOLORTOGLFLOAT4(stateblock->renderState[WINED3DRS_AMBIENT], col);
+
+    TRACE("Setting ambient to (%f,%f,%f,%f)\n", col[0], col[1], col[2], col[3]);
+    glLightModelfv(GL_LIGHT_MODEL_AMBIENT, col);
+    checkGLcall("glLightModel for MODEL_AMBIENT");
+}
+
+static void state_blend(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    int srcBlend = GL_ZERO;
+    int dstBlend = GL_ZERO;
+    const StaticPixelFormatDesc *rtFormat;
+    IWineD3DSurfaceImpl *target = (IWineD3DSurfaceImpl *) stateblock->wineD3DDevice->render_targets[0];
+
+    /* GL_LINE_SMOOTH needs GL_BLEND to work, according to the red book, and special blending params */
+    if (stateblock->renderState[WINED3DRS_ALPHABLENDENABLE]      ||
+        stateblock->renderState[WINED3DRS_EDGEANTIALIAS]         ||
+        stateblock->renderState[WINED3DRS_ANTIALIASEDLINEENABLE]) {
+        const struct GlPixelFormatDesc *glDesc;
+        getFormatDescEntry(target->resource.format, &GLINFO_LOCATION, &glDesc);
+
+        /* Disable blending in all cases even without pixelshaders. With blending on we could face a big performance penalty.
+         * The d3d9 visual test confirms the behavior. */
+        if(!(glDesc->Flags & WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING)) {
+            glDisable(GL_BLEND);
+            checkGLcall("glDisable GL_BLEND");
+            return;
+        } else {
+            glEnable(GL_BLEND);
+            checkGLcall("glEnable GL_BLEND");
+        }
+    } else {
+        glDisable(GL_BLEND);
+        checkGLcall("glDisable GL_BLEND");
+        /* Nothing more to do - get out */
+        return;
+    };
+
+    switch (stateblock->renderState[WINED3DRS_DESTBLEND]) {
+        case WINED3DBLEND_ZERO               : dstBlend = GL_ZERO;  break;
+        case WINED3DBLEND_ONE                : dstBlend = GL_ONE;  break;
+        case WINED3DBLEND_SRCCOLOR           : dstBlend = GL_SRC_COLOR;  break;
+        case WINED3DBLEND_INVSRCCOLOR        : dstBlend = GL_ONE_MINUS_SRC_COLOR;  break;
+        case WINED3DBLEND_SRCALPHA           : dstBlend = GL_SRC_ALPHA;  break;
+        case WINED3DBLEND_INVSRCALPHA        : dstBlend = GL_ONE_MINUS_SRC_ALPHA;  break;
+        case WINED3DBLEND_DESTCOLOR          : dstBlend = GL_DST_COLOR;  break;
+        case WINED3DBLEND_INVDESTCOLOR       : dstBlend = GL_ONE_MINUS_DST_COLOR;  break;
+
+        /* To compensate the lack of format switching with backbuffer offscreen rendering,
+         * and with onscreen rendering, we modify the alpha test parameters for (INV)DESTALPHA
+         * if the render target doesn't support alpha blending. A nonexistent alpha channel
+         * returns 1.0, so D3DBLEND_DESTALPHA is GL_ONE, and D3DBLEND_INVDESTALPHA is GL_ZERO
+         */
+        case WINED3DBLEND_DESTALPHA          :
+            rtFormat = getFormatDescEntry(target->resource.format, NULL, NULL);
+            dstBlend = rtFormat->alphaMask ? GL_DST_ALPHA : GL_ONE;
+            break;
+        case WINED3DBLEND_INVDESTALPHA       :
+            rtFormat = getFormatDescEntry(target->resource.format, NULL, NULL);
+            dstBlend = rtFormat->alphaMask ? GL_ONE_MINUS_DST_ALPHA : GL_ZERO;
+            break;
+
+        case WINED3DBLEND_SRCALPHASAT        :
+            dstBlend = GL_SRC_ALPHA_SATURATE;
+            WARN("Application uses SRCALPHASAT as dest blend factor, expect problems\n");
+            break;
+
+        /* WINED3DBLEND_BOTHSRCALPHA and WINED3DBLEND_BOTHINVSRCALPHA are legacy source blending
+         * values which are still valid up to d3d9. They should not occur as dest blend values
+         */
+        case WINED3DBLEND_BOTHSRCALPHA       : dstBlend = GL_SRC_ALPHA;
+            srcBlend = GL_SRC_ALPHA;
+            FIXME("WINED3DRS_DESTBLEND = WINED3DBLEND_BOTHSRCALPHA, what to do?\n");
+            break;
+
+        case WINED3DBLEND_BOTHINVSRCALPHA    : dstBlend = GL_ONE_MINUS_SRC_ALPHA;
+            srcBlend = GL_ONE_MINUS_SRC_ALPHA;
+            FIXME("WINED3DRS_DESTBLEND = WINED3DBLEND_BOTHINVSRCALPHA, what to do?\n");
+            break;
+
+        case WINED3DBLEND_BLENDFACTOR        : dstBlend = GL_CONSTANT_COLOR;   break;
+        case WINED3DBLEND_INVBLENDFACTOR     : dstBlend = GL_ONE_MINUS_CONSTANT_COLOR;  break;
+        default:
+            FIXME("Unrecognized dst blend value %d\n", stateblock->renderState[WINED3DRS_DESTBLEND]);
+    }
+
+    switch (stateblock->renderState[WINED3DRS_SRCBLEND]) {
+        case WINED3DBLEND_ZERO               : srcBlend = GL_ZERO;  break;
+        case WINED3DBLEND_ONE                : srcBlend = GL_ONE;  break;
+        case WINED3DBLEND_SRCCOLOR           : srcBlend = GL_SRC_COLOR;  break;
+        case WINED3DBLEND_INVSRCCOLOR        : srcBlend = GL_ONE_MINUS_SRC_COLOR;  break;
+        case WINED3DBLEND_SRCALPHA           : srcBlend = GL_SRC_ALPHA;  break;
+        case WINED3DBLEND_INVSRCALPHA        : srcBlend = GL_ONE_MINUS_SRC_ALPHA;  break;
+        case WINED3DBLEND_DESTCOLOR          : srcBlend = GL_DST_COLOR;  break;
+        case WINED3DBLEND_INVDESTCOLOR       : srcBlend = GL_ONE_MINUS_DST_COLOR;  break;
+        case WINED3DBLEND_SRCALPHASAT        : srcBlend = GL_SRC_ALPHA_SATURATE;  break;
+
+        case WINED3DBLEND_DESTALPHA          :
+            rtFormat = getFormatDescEntry(target->resource.format, NULL, NULL);
+            srcBlend = rtFormat->alphaMask ? GL_DST_ALPHA : GL_ONE;
+            break;
+        case WINED3DBLEND_INVDESTALPHA       :
+            rtFormat = getFormatDescEntry(target->resource.format, NULL, NULL);
+            srcBlend = rtFormat->alphaMask ? GL_ONE_MINUS_DST_ALPHA : GL_ZERO;
+            break;
+
+        case WINED3DBLEND_BOTHSRCALPHA       : srcBlend = GL_SRC_ALPHA;
+            dstBlend = GL_ONE_MINUS_SRC_ALPHA;
+            break;
+
+        case WINED3DBLEND_BOTHINVSRCALPHA    : srcBlend = GL_ONE_MINUS_SRC_ALPHA;
+            dstBlend = GL_SRC_ALPHA;
+            break;
+
+        case WINED3DBLEND_BLENDFACTOR        : srcBlend = GL_CONSTANT_COLOR;   break;
+        case WINED3DBLEND_INVBLENDFACTOR     : srcBlend = GL_ONE_MINUS_CONSTANT_COLOR;  break;
+        default:
+            FIXME("Unrecognized src blend value %d\n", stateblock->renderState[WINED3DRS_SRCBLEND]);
+    }
+
+    if(stateblock->renderState[WINED3DRS_EDGEANTIALIAS] ||
+       stateblock->renderState[WINED3DRS_ANTIALIASEDLINEENABLE]) {
+        glEnable(GL_LINE_SMOOTH);
+        checkGLcall("glEnable(GL_LINE_SMOOTH)");
+        if(srcBlend != GL_SRC_ALPHA) {
+            WARN("WINED3DRS_EDGEANTIALIAS enabled, but unexpected src blending param\n");
+        }
+        if(dstBlend != GL_ONE_MINUS_SRC_ALPHA && dstBlend != GL_ONE) {
+            WARN("WINED3DRS_EDGEANTIALIAS enabled, but unexpected dst blending param\n");
+        }
+    } else {
+        glDisable(GL_LINE_SMOOTH);
+        checkGLcall("glDisable(GL_LINE_SMOOTH)");
+    }
+
+    /* Re-apply BLENDOP(ALPHA) because of a possible SEPARATEALPHABLENDENABLE change */
+    if(!isStateDirty(context, STATE_RENDER(WINED3DRS_BLENDOP))) {
+        state_blendop(STATE_RENDER(WINED3DRS_BLENDOPALPHA), stateblock, context);
+    }
+
+    if(stateblock->renderState[WINED3DRS_SEPARATEALPHABLENDENABLE]) {
+        int srcBlendAlpha = GL_ZERO;
+        int dstBlendAlpha = GL_ZERO;
+
+        /* Separate alpha blending requires GL_EXT_blend_function_separate, so make sure it is around */
+        if(!GL_SUPPORT(EXT_BLEND_FUNC_SEPARATE)) {
+            WARN("Unsupported in local OpenGL implementation: glBlendFuncSeparateEXT\n");
+            return;
+        }
+
+        switch (stateblock->renderState[WINED3DRS_DESTBLENDALPHA]) {
+            case WINED3DBLEND_ZERO               : dstBlendAlpha = GL_ZERO;  break;
+            case WINED3DBLEND_ONE                : dstBlendAlpha = GL_ONE;  break;
+            case WINED3DBLEND_SRCCOLOR           : dstBlendAlpha = GL_SRC_COLOR;  break;
+            case WINED3DBLEND_INVSRCCOLOR        : dstBlendAlpha = GL_ONE_MINUS_SRC_COLOR;  break;
+            case WINED3DBLEND_SRCALPHA           : dstBlendAlpha = GL_SRC_ALPHA;  break;
+            case WINED3DBLEND_INVSRCALPHA        : dstBlendAlpha = GL_ONE_MINUS_SRC_ALPHA;  break;
+            case WINED3DBLEND_DESTCOLOR          : dstBlendAlpha = GL_DST_COLOR;  break;
+            case WINED3DBLEND_INVDESTCOLOR       : dstBlendAlpha = GL_ONE_MINUS_DST_COLOR;  break;
+            case WINED3DBLEND_DESTALPHA          : dstBlendAlpha = GL_DST_ALPHA;  break;
+            case WINED3DBLEND_INVDESTALPHA       : dstBlendAlpha = GL_DST_ALPHA;  break;
+            case WINED3DBLEND_SRCALPHASAT        :
+                dstBlend = GL_SRC_ALPHA_SATURATE;
+                WARN("Application uses SRCALPHASAT as dest blend factor, expect problems\n");
+                break;
+            /* WINED3DBLEND_BOTHSRCALPHA and WINED3DBLEND_BOTHINVSRCALPHA are legacy source blending
+            * values which are still valid up to d3d9. They should not occur as dest blend values
+            */
+            case WINED3DBLEND_BOTHSRCALPHA       :
+                dstBlendAlpha = GL_SRC_ALPHA;
+                srcBlendAlpha = GL_SRC_ALPHA;
+                FIXME("WINED3DRS_DESTBLENDALPHA = WINED3DBLEND_BOTHSRCALPHA, what to do?\n");
+                break;
+            case WINED3DBLEND_BOTHINVSRCALPHA    :
+                dstBlendAlpha = GL_ONE_MINUS_SRC_ALPHA;
+                srcBlendAlpha = GL_ONE_MINUS_SRC_ALPHA;
+                FIXME("WINED3DRS_DESTBLENDALPHA = WINED3DBLEND_BOTHINVSRCALPHA, what to do?\n");
+                break;
+            case WINED3DBLEND_BLENDFACTOR        : dstBlendAlpha = GL_CONSTANT_COLOR;   break;
+            case WINED3DBLEND_INVBLENDFACTOR     : dstBlendAlpha = GL_ONE_MINUS_CONSTANT_COLOR;  break;
+            default:
+                FIXME("Unrecognized dst blend alpha value %d\n", stateblock->renderState[WINED3DRS_DESTBLENDALPHA]);
+        }
+
+        switch (stateblock->renderState[WINED3DRS_SRCBLENDALPHA]) {
+            case WINED3DBLEND_ZERO               : srcBlendAlpha = GL_ZERO;  break;
+            case WINED3DBLEND_ONE                : srcBlendAlpha = GL_ONE;  break;
+            case WINED3DBLEND_SRCCOLOR           : srcBlendAlpha = GL_SRC_COLOR;  break;
+            case WINED3DBLEND_INVSRCCOLOR        : srcBlendAlpha = GL_ONE_MINUS_SRC_COLOR;  break;
+            case WINED3DBLEND_SRCALPHA           : srcBlendAlpha = GL_SRC_ALPHA;  break;
+            case WINED3DBLEND_INVSRCALPHA        : srcBlendAlpha = GL_ONE_MINUS_SRC_ALPHA;  break;
+            case WINED3DBLEND_DESTCOLOR          : srcBlendAlpha = GL_DST_COLOR;  break;
+            case WINED3DBLEND_INVDESTCOLOR       : srcBlendAlpha = GL_ONE_MINUS_DST_COLOR;  break;
+            case WINED3DBLEND_SRCALPHASAT        : srcBlendAlpha = GL_SRC_ALPHA_SATURATE;  break;
+            case WINED3DBLEND_DESTALPHA          : srcBlendAlpha = GL_DST_ALPHA;  break;
+            case WINED3DBLEND_INVDESTALPHA       : srcBlendAlpha = GL_DST_ALPHA;  break;
+            case WINED3DBLEND_BOTHSRCALPHA       :
+                srcBlendAlpha = GL_SRC_ALPHA;
+                dstBlendAlpha = GL_ONE_MINUS_SRC_ALPHA;
+                break;
+            case WINED3DBLEND_BOTHINVSRCALPHA    :
+                srcBlendAlpha = GL_ONE_MINUS_SRC_ALPHA;
+                dstBlendAlpha = GL_SRC_ALPHA;
+                break;
+            case WINED3DBLEND_BLENDFACTOR        : srcBlendAlpha = GL_CONSTANT_COLOR;   break;
+            case WINED3DBLEND_INVBLENDFACTOR     : srcBlendAlpha = GL_ONE_MINUS_CONSTANT_COLOR;  break;
+            default:
+                FIXME("Unrecognized src blend alpha value %d\n", stateblock->renderState[WINED3DRS_SRCBLENDALPHA]);
+        }
+
+        GL_EXTCALL(glBlendFuncSeparateEXT(srcBlend, dstBlend, srcBlendAlpha, dstBlendAlpha));
+        checkGLcall("glBlendFuncSeparateEXT");
+    } else {
+        TRACE("glBlendFunc src=%x, dst=%x\n", srcBlend, dstBlend);
+        glBlendFunc(srcBlend, dstBlend);
+        checkGLcall("glBlendFunc");
+    }
+
+    /* colorkey fixup for stage 0 alphaop depends on WINED3DRS_ALPHABLENDENABLE state,
+        so it may need updating */
+    if (stateblock->renderState[WINED3DRS_COLORKEYENABLE]) {
+        const struct StateEntry *StateTable = stateblock->wineD3DDevice->StateTable;
+        StateTable[STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAOP)].apply(STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAOP), stateblock, context);
+    }
+}
+
+static void state_blendfactor_w(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    WARN("Unsupported in local OpenGL implementation: glBlendColorEXT\n");
+}
+
+static void state_blendfactor(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    float col[4];
+
+    TRACE("Setting BlendFactor to %d\n", stateblock->renderState[WINED3DRS_BLENDFACTOR]);
+    D3DCOLORTOGLFLOAT4(stateblock->renderState[WINED3DRS_BLENDFACTOR], col);
+    GL_EXTCALL(glBlendColorEXT (col[0],col[1],col[2],col[3]));
+    checkGLcall("glBlendColor");
+}
+
+static void state_alpha(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    int glParm = 0;
+    float ref;
+    BOOL enable_ckey = FALSE;
+
+    IWineD3DSurfaceImpl *surf;
+
+    /* Find out if the texture on the first stage has a ckey set
+     * The alpha state func reads the texture settings, even though alpha and texture are not grouped
+     * together. This is to avoid making a huge alpha+texture+texture stage+ckey block due to the hardly
+     * used WINED3DRS_COLORKEYENABLE state(which is d3d <= 3 only). The texture function will call alpha
+     * in case it finds some texture+colorkeyenable combination which needs extra care.
+     */
+    if(stateblock->textures[0] && (
+       stateblock->textureDimensions[0] == GL_TEXTURE_2D ||
+       stateblock->textureDimensions[0] == GL_TEXTURE_RECTANGLE_ARB)) {
+        surf = (IWineD3DSurfaceImpl *) ((IWineD3DTextureImpl *)stateblock->textures[0])->surfaces[0];
+
+        if(surf->CKeyFlags & WINEDDSD_CKSRCBLT) {
+            const StaticPixelFormatDesc *fmt = getFormatDescEntry(surf->resource.format, NULL, NULL);
+            /* The surface conversion does not do color keying conversion for surfaces that have an alpha
+             * channel on their own. Likewise, the alpha test shouldn't be set up for color keying if the
+             * surface has alpha bits
+             */
+            if(fmt->alphaMask == 0x00000000) {
+                enable_ckey = TRUE;
+            }
+        }
+    }
+
+    if(enable_ckey || context->last_was_ckey) {
+        const struct StateEntry *StateTable = stateblock->wineD3DDevice->StateTable;
+        StateTable[STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAOP)].apply(STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAOP), stateblock, context);
+    }
+    context->last_was_ckey = enable_ckey;
+
+    if (stateblock->renderState[WINED3DRS_ALPHATESTENABLE] ||
+        (stateblock->renderState[WINED3DRS_COLORKEYENABLE] && enable_ckey)) {
+        glEnable(GL_ALPHA_TEST);
+        checkGLcall("glEnable GL_ALPHA_TEST");
+    } else {
+        glDisable(GL_ALPHA_TEST);
+        checkGLcall("glDisable GL_ALPHA_TEST");
+        /* Alpha test is disabled, don't bother setting the params - it will happen on the next
+         * enable call
+         */
+        return;
+    }
+
+    if(stateblock->renderState[WINED3DRS_COLORKEYENABLE] && enable_ckey) {
+        glParm = GL_NOTEQUAL;
+        ref = 0.0;
+    } else {
+        ref = ((float) stateblock->renderState[WINED3DRS_ALPHAREF]) / 255.0f;
+        glParm = CompareFunc(stateblock->renderState[WINED3DRS_ALPHAFUNC]);
+    }
+    if(glParm) {
+        glAlphaFunc(glParm, ref);
+        checkGLcall("glAlphaFunc");
+    }
+}
+
+static void state_clipping(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    DWORD enable  = 0xFFFFFFFF;
+    DWORD disable = 0x00000000;
+
+    if (use_vs(stateblock->wineD3DDevice)) {
+        /* The spec says that opengl clipping planes are disabled when using shaders. Direct3D planes aren't,
+         * so that is an issue. The MacOS ATI driver keeps clipping planes activated with shaders in some
+         * conditions I got sick of tracking down. The shader state handler disables all clip planes because
+         * of that - don't do anything here and keep them disabled
+         */
+        if(stateblock->renderState[WINED3DRS_CLIPPLANEENABLE]) {
+            static BOOL warned = FALSE;
+            if(!warned) {
+                FIXME("Clipping not supported with vertex shaders\n");
+                warned = TRUE;
+            }
+        }
+        return;
+    }
+
+    /* TODO: Keep track of previously enabled clipplanes to avoid unnecessary resetting
+     * of already set values
+     */
+
+    /* If enabling / disabling all
+     * TODO: Is this correct? Doesn't D3DRS_CLIPPING disable clipping on the viewport frustrum?
+     */
+    if (stateblock->renderState[WINED3DRS_CLIPPING]) {
+        enable  = stateblock->renderState[WINED3DRS_CLIPPLANEENABLE];
+        disable = ~stateblock->renderState[WINED3DRS_CLIPPLANEENABLE];
+        if(GL_SUPPORT(NV_DEPTH_CLAMP)) {
+            glDisable(GL_DEPTH_CLAMP_NV);
+            checkGLcall("glDisable(GL_DEPTH_CLAMP_NV)");
+        }
+    } else {
+        disable = 0xffffffff;
+        enable  = 0x00;
+        if(GL_SUPPORT(NV_DEPTH_CLAMP)) {
+            glEnable(GL_DEPTH_CLAMP_NV);
+            checkGLcall("glEnable(GL_DEPTH_CLAMP_NV)");
+        }
+    }
+
+    if (enable & WINED3DCLIPPLANE0)  { glEnable(GL_CLIP_PLANE0);  checkGLcall("glEnable(clip plane 0)"); }
+    if (enable & WINED3DCLIPPLANE1)  { glEnable(GL_CLIP_PLANE1);  checkGLcall("glEnable(clip plane 1)"); }
+    if (enable & WINED3DCLIPPLANE2)  { glEnable(GL_CLIP_PLANE2);  checkGLcall("glEnable(clip plane 2)"); }
+    if (enable & WINED3DCLIPPLANE3)  { glEnable(GL_CLIP_PLANE3);  checkGLcall("glEnable(clip plane 3)"); }
+    if (enable & WINED3DCLIPPLANE4)  { glEnable(GL_CLIP_PLANE4);  checkGLcall("glEnable(clip plane 4)"); }
+    if (enable & WINED3DCLIPPLANE5)  { glEnable(GL_CLIP_PLANE5);  checkGLcall("glEnable(clip plane 5)"); }
+
+    if (disable & WINED3DCLIPPLANE0) { glDisable(GL_CLIP_PLANE0); checkGLcall("glDisable(clip plane 0)"); }
+    if (disable & WINED3DCLIPPLANE1) { glDisable(GL_CLIP_PLANE1); checkGLcall("glDisable(clip plane 1)"); }
+    if (disable & WINED3DCLIPPLANE2) { glDisable(GL_CLIP_PLANE2); checkGLcall("glDisable(clip plane 2)"); }
+    if (disable & WINED3DCLIPPLANE3) { glDisable(GL_CLIP_PLANE3); checkGLcall("glDisable(clip plane 3)"); }
+    if (disable & WINED3DCLIPPLANE4) { glDisable(GL_CLIP_PLANE4); checkGLcall("glDisable(clip plane 4)"); }
+    if (disable & WINED3DCLIPPLANE5) { glDisable(GL_CLIP_PLANE5); checkGLcall("glDisable(clip plane 5)"); }
+
+    /** update clipping status */
+    if (enable) {
+        stateblock->clip_status.ClipUnion = 0;
+        stateblock->clip_status.ClipIntersection = 0xFFFFFFFF;
+    } else {
+        stateblock->clip_status.ClipUnion = 0;
+        stateblock->clip_status.ClipIntersection = 0;
+    }
+}
+
+static void state_blendop_w(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    WARN("Unsupported in local OpenGL implementation: glBlendEquation\n");
+}
+
+static void state_blendop(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    int blendEquation = GL_FUNC_ADD;
+    int blendEquationAlpha = GL_FUNC_ADD;
+
+    /* BLENDOPALPHA requires GL_EXT_blend_equation_separate, so make sure it is around */
+    if(stateblock->renderState[WINED3DRS_BLENDOPALPHA] && !GL_SUPPORT(EXT_BLEND_EQUATION_SEPARATE)) {
+        WARN("Unsupported in local OpenGL implementation: glBlendEquationSeparateEXT\n");
+        return;
+    }
+
+    switch ((WINED3DBLENDOP) stateblock->renderState[WINED3DRS_BLENDOP]) {
+        case WINED3DBLENDOP_ADD              : blendEquation = GL_FUNC_ADD;              break;
+        case WINED3DBLENDOP_SUBTRACT         : blendEquation = GL_FUNC_SUBTRACT;         break;
+        case WINED3DBLENDOP_REVSUBTRACT      : blendEquation = GL_FUNC_REVERSE_SUBTRACT; break;
+        case WINED3DBLENDOP_MIN              : blendEquation = GL_MIN;                   break;
+        case WINED3DBLENDOP_MAX              : blendEquation = GL_MAX;                   break;
+        default:
+            FIXME("Unrecognized/Unhandled D3DBLENDOP value %d\n", stateblock->renderState[WINED3DRS_BLENDOP]);
+    }
+
+    switch ((WINED3DBLENDOP) stateblock->renderState[WINED3DRS_BLENDOPALPHA]) {
+        case WINED3DBLENDOP_ADD              : blendEquationAlpha = GL_FUNC_ADD;              break;
+        case WINED3DBLENDOP_SUBTRACT         : blendEquationAlpha = GL_FUNC_SUBTRACT;         break;
+        case WINED3DBLENDOP_REVSUBTRACT      : blendEquationAlpha = GL_FUNC_REVERSE_SUBTRACT; break;
+        case WINED3DBLENDOP_MIN              : blendEquationAlpha = GL_MIN;                   break;
+        case WINED3DBLENDOP_MAX              : blendEquationAlpha = GL_MAX;                   break;
+        default:
+            FIXME("Unrecognized/Unhandled D3DBLENDOP value %d\n", stateblock->renderState[WINED3DRS_BLENDOPALPHA]);
+    }
+
+    if(stateblock->renderState[WINED3DRS_SEPARATEALPHABLENDENABLE]) {
+        TRACE("glBlendEquationSeparateEXT(%x, %x)\n", blendEquation, blendEquationAlpha);
+        GL_EXTCALL(glBlendEquationSeparateEXT(blendEquation, blendEquationAlpha));
+        checkGLcall("glBlendEquationSeparateEXT");
+    } else {
+        TRACE("glBlendEquation(%x)\n", blendEquation);
+        GL_EXTCALL(glBlendEquationEXT(blendEquation));
+        checkGLcall("glBlendEquation");
+    }
+}
+
+static void
+state_specularenable(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    /* Originally this used glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL,GL_SEPARATE_SPECULAR_COLOR)
+     * and (GL_LIGHT_MODEL_COLOR_CONTROL,GL_SINGLE_COLOR) to swap between enabled/disabled
+     * specular color. This is wrong:
+     * Separate specular color means the specular colour is maintained separately, whereas
+     * single color means it is merged in. However in both cases they are being used to
+     * some extent.
+     * To disable specular color, set it explicitly to black and turn off GL_COLOR_SUM_EXT
+     * NOTE: If not supported don't give FIXMEs the impact is really minimal and very few people are
+     * running 1.4 yet!
+     *
+     *
+     * If register combiners are enabled, enabling / disabling GL_COLOR_SUM has no effect.
+     * Instead, we need to setup the FinalCombiner properly.
+     *
+     * The default setup for the FinalCombiner is:
+     *
+     * <variable>       <input>                             <mapping>               <usage>
+     * GL_VARIABLE_A_NV GL_FOG,                             GL_UNSIGNED_IDENTITY_NV GL_ALPHA
+     * GL_VARIABLE_B_NV GL_SPARE0_PLUS_SECONDARY_COLOR_NV   GL_UNSIGNED_IDENTITY_NV GL_RGB
+     * GL_VARIABLE_C_NV GL_FOG                              GL_UNSIGNED_IDENTITY_NV GL_RGB
+     * GL_VARIABLE_D_NV GL_ZERO                             GL_UNSIGNED_IDENTITY_NV GL_RGB
+     * GL_VARIABLE_E_NV GL_ZERO                             GL_UNSIGNED_IDENTITY_NV GL_RGB
+     * GL_VARIABLE_F_NV GL_ZERO                             GL_UNSIGNED_IDENTITY_NV GL_RGB
+     * GL_VARIABLE_G_NV GL_SPARE0_NV                        GL_UNSIGNED_IDENTITY_NV GL_ALPHA
+     *
+     * That's pretty much fine as it is, except for variable B, which needs to take
+     * either GL_SPARE0_PLUS_SECONDARY_COLOR_NV or GL_SPARE0_NV, depending on
+     * whether WINED3DRS_SPECULARENABLE is enabled or not.
+     */
+
+    TRACE("Setting specular enable state and materials\n");
+    if (stateblock->renderState[WINED3DRS_SPECULARENABLE]) {
+        glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, (float*) &stateblock->material.Specular);
+        checkGLcall("glMaterialfv");
+
+        if(stateblock->material.Power > GL_LIMITS(shininess)) {
+            /* glMaterialf man page says that the material says that GL_SHININESS must be between 0.0
+             * and 128.0, although in d3d neither -1 nor 129 produce an error. GL_NV_max_light_exponent
+             * allows bigger values. If the extension is supported, GL_LIMITS(shininess) contains the
+             * value reported by the extension, otherwise 128. For values > GL_LIMITS(shininess) clamp
+             * them, it should be safe to do so without major visual distortions.
+             */
+            WARN("Material power = %f, limit %f\n", stateblock->material.Power, GL_LIMITS(shininess));
+            glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, GL_LIMITS(shininess));
+        } else {
+            glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, stateblock->material.Power);
+        }
+        checkGLcall("glMaterialf(GL_SHININESS)");
+
+        if (GL_SUPPORT(EXT_SECONDARY_COLOR)) {
+            glEnable(GL_COLOR_SUM_EXT);
+        } else {
+            TRACE("Specular colors cannot be enabled in this version of opengl\n");
+        }
+        checkGLcall("glEnable(GL_COLOR_SUM)");
+
+        if (GL_SUPPORT(NV_REGISTER_COMBINERS)) {
+            GL_EXTCALL(glFinalCombinerInputNV(GL_VARIABLE_B_NV, GL_SPARE0_PLUS_SECONDARY_COLOR_NV, GL_UNSIGNED_IDENTITY_NV, GL_RGB));
+            checkGLcall("glFinalCombinerInputNV()");
+        }
+    } else {
+        const GLfloat black[4] = {0.0f, 0.0f, 0.0f, 0.0f};
+
+        /* for the case of enabled lighting: */
+        glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, &black[0]);
+        checkGLcall("glMaterialfv");
+
+        /* for the case of disabled lighting: */
+        if (GL_SUPPORT(EXT_SECONDARY_COLOR)) {
+            glDisable(GL_COLOR_SUM_EXT);
+        } else {
+            TRACE("Specular colors cannot be disabled in this version of opengl\n");
+        }
+        checkGLcall("glDisable(GL_COLOR_SUM)");
+
+        if (GL_SUPPORT(NV_REGISTER_COMBINERS)) {
+            GL_EXTCALL(glFinalCombinerInputNV(GL_VARIABLE_B_NV, GL_SPARE0_NV, GL_UNSIGNED_IDENTITY_NV, GL_RGB));
+            checkGLcall("glFinalCombinerInputNV()");
+        }
+    }
+
+    TRACE("(%p) : Diffuse (%f,%f,%f,%f)\n", stateblock->wineD3DDevice, stateblock->material.Diffuse.r, stateblock->material.Diffuse.g,
+          stateblock->material.Diffuse.b, stateblock->material.Diffuse.a);
+    TRACE("(%p) : Ambient (%f,%f,%f,%f)\n", stateblock->wineD3DDevice, stateblock->material.Ambient.r, stateblock->material.Ambient.g,
+          stateblock->material.Ambient.b, stateblock->material.Ambient.a);
+    TRACE("(%p) : Specular (%f,%f,%f,%f)\n", stateblock->wineD3DDevice, stateblock->material.Specular.r, stateblock->material.Specular.g,
+          stateblock->material.Specular.b, stateblock->material.Specular.a);
+    TRACE("(%p) : Emissive (%f,%f,%f,%f)\n", stateblock->wineD3DDevice, stateblock->material.Emissive.r, stateblock->material.Emissive.g,
+          stateblock->material.Emissive.b, stateblock->material.Emissive.a);
+
+    glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, (float*) &stateblock->material.Ambient);
+    checkGLcall("glMaterialfv(GL_AMBIENT)");
+    glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, (float*) &stateblock->material.Diffuse);
+    checkGLcall("glMaterialfv(GL_DIFFUSE)");
+    glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, (float*) &stateblock->material.Emissive);
+    checkGLcall("glMaterialfv(GL_EMISSION)");
+}
+
+static void state_texfactor(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    unsigned int i;
+
+    /* Note the texture color applies to all textures whereas
+     * GL_TEXTURE_ENV_COLOR applies to active only
+     */
+    float col[4];
+    D3DCOLORTOGLFLOAT4(stateblock->renderState[WINED3DRS_TEXTUREFACTOR], col);
+
+    /* And now the default texture color as well */
+    for (i = 0; i < GL_LIMITS(texture_stages); i++) {
+        /* Note the WINED3DRS value applies to all textures, but GL has one
+            * per texture, so apply it now ready to be used!
+            */
+        if (GL_SUPPORT(ARB_MULTITEXTURE)) {
+            GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB + i));
+            checkGLcall("glActiveTextureARB");
+        } else if (i>0) {
+            FIXME("Program using multiple concurrent textures which this opengl implementation doesn't support\n");
+        }
+
+        glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, &col[0]);
+        checkGLcall("glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, color);");
+    }
+}
+
+static void
+renderstate_stencil_twosided(IWineD3DStateBlockImpl *stateblock, GLint face, GLint func, GLint ref, GLuint mask, GLint stencilFail, GLint depthFail, GLint stencilPass ) {
+    glEnable(GL_STENCIL_TEST_TWO_SIDE_EXT);
+    checkGLcall("glEnable(GL_STENCIL_TEST_TWO_SIDE_EXT)");
+    GL_EXTCALL(glActiveStencilFaceEXT(face));
+    checkGLcall("glActiveStencilFaceEXT(...)");
+    glStencilFunc(func, ref, mask);
+    checkGLcall("glStencilFunc(...)");
+    glStencilOp(stencilFail, depthFail, stencilPass);
+    checkGLcall("glStencilOp(...)");
+}
+
+static void
+state_stencil(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    DWORD onesided_enable = FALSE;
+    DWORD twosided_enable = FALSE;
+    GLint func = GL_ALWAYS;
+    GLint func_ccw = GL_ALWAYS;
+    GLint ref = 0;
+    GLuint mask = 0;
+    GLint stencilFail = GL_KEEP;
+    GLint depthFail = GL_KEEP;
+    GLint stencilPass = GL_KEEP;
+    GLint stencilFail_ccw = GL_KEEP;
+    GLint depthFail_ccw = GL_KEEP;
+    GLint stencilPass_ccw = GL_KEEP;
+
+    /* No stencil test without a stencil buffer */
+    if(stateblock->wineD3DDevice->stencilBufferTarget == NULL) {
+        glDisable(GL_STENCIL_TEST);
+        checkGLcall("glDisable GL_STENCIL_TEST");
+        return;
+    }
+
+    onesided_enable = stateblock->renderState[WINED3DRS_STENCILENABLE];
+    twosided_enable = stateblock->renderState[WINED3DRS_TWOSIDEDSTENCILMODE];
+    if( !( func = CompareFunc(stateblock->renderState[WINED3DRS_STENCILFUNC]) ) )
+        func = GL_ALWAYS;
+    if( !( func_ccw = CompareFunc(stateblock->renderState[WINED3DRS_CCW_STENCILFUNC]) ) )
+        func_ccw = GL_ALWAYS;
+    ref = stateblock->renderState[WINED3DRS_STENCILREF];
+    mask = stateblock->renderState[WINED3DRS_STENCILMASK];
+    stencilFail = StencilOp(stateblock->renderState[WINED3DRS_STENCILFAIL]);
+    depthFail = StencilOp(stateblock->renderState[WINED3DRS_STENCILZFAIL]);
+    stencilPass = StencilOp(stateblock->renderState[WINED3DRS_STENCILPASS]);
+    stencilFail_ccw = StencilOp(stateblock->renderState[WINED3DRS_CCW_STENCILFAIL]);
+    depthFail_ccw = StencilOp(stateblock->renderState[WINED3DRS_CCW_STENCILZFAIL]);
+    stencilPass_ccw = StencilOp(stateblock->renderState[WINED3DRS_CCW_STENCILPASS]);
+
+    TRACE("(onesided %d, twosided %d, ref %x, mask %x, "
+          "GL_FRONT: func: %x, fail %x, zfail %x, zpass %x "
+          "GL_BACK: func: %x, fail %x, zfail %x, zpass %x )\n",
+    onesided_enable, twosided_enable, ref, mask,
+    func, stencilFail, depthFail, stencilPass,
+    func_ccw, stencilFail_ccw, depthFail_ccw, stencilPass_ccw);
+
+    if (twosided_enable && onesided_enable) {
+        glEnable(GL_STENCIL_TEST);
+        checkGLcall("glEnable GL_STENCIL_TEST");
+
+        if(GL_SUPPORT(EXT_STENCIL_TWO_SIDE)) {
+            /* Apply back first, then front. This function calls glActiveStencilFaceEXT,
+             * which has an effect on the code below too. If we apply the front face
+             * afterwards, we are sure that the active stencil face is set to front,
+             * and other stencil functions which do not use two sided stencil do not have
+             * to set it back
+             */
+            renderstate_stencil_twosided(stateblock, GL_BACK, func_ccw, ref, mask,
+                                         stencilFail_ccw, depthFail_ccw, stencilPass_ccw);
+            renderstate_stencil_twosided(stateblock, GL_FRONT, func, ref, mask,
+                                         stencilFail, depthFail, stencilPass);
+        } else if(GL_SUPPORT(ATI_SEPARATE_STENCIL)) {
+            GL_EXTCALL(glStencilFuncSeparateATI(func, func_ccw, ref, mask));
+            checkGLcall("glStencilFuncSeparateATI(...)");
+            GL_EXTCALL(glStencilOpSeparateATI(GL_FRONT, stencilFail, depthFail, stencilPass));
+            checkGLcall("glStencilOpSeparateATI(GL_FRONT, ...)");
+            GL_EXTCALL(glStencilOpSeparateATI(GL_BACK, stencilFail_ccw, depthFail_ccw, stencilPass_ccw));
+            checkGLcall("glStencilOpSeparateATI(GL_BACK, ...)");
+        } else {
+            ERR("Separate (two sided) stencil not supported on this version of opengl. Caps weren't honored?\n");
+        }
+    } else if(onesided_enable) {
+        if(GL_SUPPORT(EXT_STENCIL_TWO_SIDE)) {
+            glDisable(GL_STENCIL_TEST_TWO_SIDE_EXT);
+            checkGLcall("glDisable(GL_STENCIL_TEST_TWO_SIDE_EXT)");
+        }
+
+        /* This code disables the ATI extension as well, since the standard stencil functions are equal
+         * to calling the ATI functions with GL_FRONT_AND_BACK as face parameter
+         */
+        glEnable(GL_STENCIL_TEST);
+        checkGLcall("glEnable GL_STENCIL_TEST");
+        glStencilFunc(func, ref, mask);
+        checkGLcall("glStencilFunc(...)");
+        glStencilOp(stencilFail, depthFail, stencilPass);
+        checkGLcall("glStencilOp(...)");
+    } else {
+        glDisable(GL_STENCIL_TEST);
+        checkGLcall("glDisable GL_STENCIL_TEST");
+    }
+}
+
+static void state_stencilwrite2s(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    DWORD mask;
+
+    if(stateblock->wineD3DDevice->stencilBufferTarget) {
+        mask = stateblock->renderState[WINED3DRS_STENCILWRITEMASK];
+    } else {
+        mask = 0;
+    }
+
+    GL_EXTCALL(glActiveStencilFaceEXT(GL_BACK));
+    checkGLcall("glActiveStencilFaceEXT(GL_BACK)");
+    glStencilMask(mask);
+    checkGLcall("glStencilMask");
+    GL_EXTCALL(glActiveStencilFaceEXT(GL_FRONT));
+    checkGLcall("glActiveStencilFaceEXT(GL_FRONT)");
+    glStencilMask(mask);
+}
+
+static void state_stencilwrite(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    DWORD mask;
+
+    if(stateblock->wineD3DDevice->stencilBufferTarget) {
+        mask = stateblock->renderState[WINED3DRS_STENCILWRITEMASK];
+    } else {
+        mask = 0;
+    }
+
+    glStencilMask(mask);
+    checkGLcall("glStencilMask");
+}
+
+static void state_fog(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    BOOL fogenable = stateblock->renderState[WINED3DRS_FOGENABLE];
+    BOOL is_ps3 = use_ps(stateblock->wineD3DDevice)
+                  && ((IWineD3DPixelShaderImpl *)stateblock->pixelShader)->baseShader.hex_version >= WINED3DPS_VERSION(3,0);
+    float fogstart, fogend;
+
+    union {
+        DWORD d;
+        float f;
+    } tmpvalue;
+
+    if (!fogenable) {
+        /* No fog? Disable it, and we're done :-) */
+        glDisable(GL_FOG);
+        checkGLcall("glDisable GL_FOG");
+        if( use_ps(stateblock->wineD3DDevice)
+                && ((IWineD3DPixelShaderImpl *)stateblock->pixelShader)->baseShader.hex_version < WINED3DPS_VERSION(3,0) ) {
+            /* disable fog in the pixel shader
+             * NOTE: For pixel shader, GL_FOG_START and GL_FOG_END don't hold fog start s and end e but
+             * -1/(e-s) and e/(e-s) respectively.
+             */
+            glFogf(GL_FOG_START, 0.0f);
+            checkGLcall("glFogf(GL_FOG_START, fogstart)");
+            glFogf(GL_FOG_END, 1.0f);
+            checkGLcall("glFogf(GL_FOG_END, fogend)");
+        }
+        return;
+    }
+
+    tmpvalue.d = stateblock->renderState[WINED3DRS_FOGSTART];
+    fogstart = tmpvalue.f;
+    tmpvalue.d = stateblock->renderState[WINED3DRS_FOGEND];
+    fogend = tmpvalue.f;
+
+    /* Fog Rules:
+     *
+     * With fixed function vertex processing, Direct3D knows 2 different fog input sources.
+     * It can use the Z value of the vertex, or the alpha component of the specular color.
+     * This depends on the fog vertex, fog table and the vertex declaration. If the Z value
+     * is used, fogstart, fogend and the equation type are used, otherwise linear fog with
+     * start = 255, end = 0 is used. Obviously the msdn is not very clear on that.
+     *
+     * FOGTABLEMODE != NONE:
+     *  The Z value is used, with the equation specified, no matter what vertex type.
+     *
+     * FOGTABLEMODE == NONE, FOGVERTEXMODE != NONE, untransformed:
+     *  Per vertex fog is calculated using the specified fog equation and the parameters
+     *
+     * FOGTABLEMODE == NONE, FOGVERTEXMODE != NONE, transformed, OR
+     * FOGTABLEMODE == NONE, FOGVERTEXMODE == NONE, untransformed:
+     *  Linear fog with start = 255.0, end = 0.0, input comes from the specular color
+     *
+     *
+     * Rules for vertex fog with shaders:
+     *
+     * When mixing fixed function functionality with the programmable pipeline, D3D expects
+     * the fog computation to happen during transformation while openGL expects it to happen
+     * during rasterization. Also, prior to pixel shader 3.0 D3D handles fog blending after
+     * the pixel shader while openGL always expects the pixel shader to handle the blending.
+     * To solve this problem, WineD3D does:
+     * 1) implement a linear fog equation and fog blending at the end of every pre 3.0 pixel
+     * shader,
+     * and 2) disables the fog computation (in either the fixed function or programmable
+     * rasterizer) if using a vertex program.
+     *
+     *
+     * If a fogtablemode and a fogvertexmode are specified, table fog is applied (with or
+     * without shaders).
+     */
+
+    if( is_ps3 ) {
+        if( !use_vs(stateblock->wineD3DDevice)
+                && stateblock->renderState[WINED3DRS_FOGTABLEMODE] == WINED3DFOG_NONE ) {
+            FIXME("Implement vertex fog for pixel shader >= 3.0 and fixed function pipeline\n");
+        }
+    }
+
+    if (use_vs(stateblock->wineD3DDevice)
+            && ((IWineD3DVertexShaderImpl *)stateblock->vertexShader)->baseShader.reg_maps.fog) {
+        if( stateblock->renderState[WINED3DRS_FOGTABLEMODE] != WINED3DFOG_NONE ) {
+            if(!is_ps3) FIXME("Implement table fog for foggy vertex shader\n");
+            /* Disable fog */
+            fogenable = FALSE;
+        } else {
+            /* Set fog computation in the rasterizer to pass through the value (just blend it) */
+            glFogi(GL_FOG_MODE, GL_LINEAR);
+            checkGLcall("glFogi(GL_FOG_MODE, GL_LINEAR)");
+            fogstart = 1.0;
+            fogend = 0.0;
+        }
+
+        if(GL_SUPPORT(EXT_FOG_COORD) && context->fog_coord) {
+            glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FRAGMENT_DEPTH_EXT);
+            checkGLcall("glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FRAGMENT_DEPTH_EXT)");
+            context->fog_coord = FALSE;
+        }
+        context->last_was_foggy_shader = TRUE;
+    }
+    else if( use_ps(stateblock->wineD3DDevice) ) {
+        /* NOTE: For pixel shader, GL_FOG_START and GL_FOG_END don't hold fog start s and end e but
+         * -1/(e-s) and e/(e-s) respectively to simplify fog computation in the shader.
+         */
+        WINED3DFOGMODE mode;
+        context->last_was_foggy_shader = FALSE;
+
+        /* If both fogmodes are set use the table fog mode */
+        if(stateblock->renderState[WINED3DRS_FOGTABLEMODE] == WINED3DFOG_NONE)
+            mode = stateblock->renderState[WINED3DRS_FOGVERTEXMODE];
+        else
+            mode = stateblock->renderState[WINED3DRS_FOGTABLEMODE];
+
+        switch (mode) {
+            case WINED3DFOG_EXP:
+            case WINED3DFOG_EXP2:
+                if(!is_ps3) FIXME("Implement non linear fog for pixel shader < 3.0\n");
+                /* Disable fog */
+                fogenable = FALSE;
+                break;
+
+            case WINED3DFOG_LINEAR:
+                fogstart = -1.0f/(fogend-fogstart);
+                fogend *= -fogstart;
+                break;
+
+            case WINED3DFOG_NONE:
+                if(!is_ps3) FIXME("Implement software vertex fog for pixel shader < 3.0\n");
+                /* Disable fog */
+                fogenable = FALSE;
+                break;
+            default: FIXME("Unexpected WINED3DRS_FOGVERTEXMODE %d\n", stateblock->renderState[WINED3DRS_FOGVERTEXMODE]);
+        }
+
+        if(GL_SUPPORT(EXT_FOG_COORD) && context->fog_coord) {
+            glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FRAGMENT_DEPTH_EXT);
+            checkGLcall("glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FRAGMENT_DEPTH_EXT)");
+            context->fog_coord = FALSE;
+        }
+    }
+    /* DX 7 sdk: "If both render states(vertex and table fog) are set to valid modes,
+     * the system will apply only pixel(=table) fog effects."
+     */
+    else if(stateblock->renderState[WINED3DRS_FOGTABLEMODE] == WINED3DFOG_NONE) {
+        glHint(GL_FOG_HINT, GL_FASTEST);
+        checkGLcall("glHint(GL_FOG_HINT, GL_FASTEST)");
+        context->last_was_foggy_shader = FALSE;
+
+        switch (stateblock->renderState[WINED3DRS_FOGVERTEXMODE]) {
+            /* If processed vertices are used, fall through to the NONE case */
+            case WINED3DFOG_EXP:  {
+                if(!context->last_was_rhw) {
+                    glFogi(GL_FOG_MODE, GL_EXP);
+                    checkGLcall("glFogi(GL_FOG_MODE, GL_EXP)");
+                    if(GL_SUPPORT(EXT_FOG_COORD) && context->fog_coord) {
+                        glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FRAGMENT_DEPTH_EXT);
+                        checkGLcall("glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FRAGMENT_DEPTH_EXT)");
+                        context->fog_coord = FALSE;
+                    }
+                    break;
+                }
+            }
+            case WINED3DFOG_EXP2: {
+                if(!context->last_was_rhw) {
+                    glFogi(GL_FOG_MODE, GL_EXP2);
+                    checkGLcall("glFogi(GL_FOG_MODE, GL_EXP2)");
+                    if(GL_SUPPORT(EXT_FOG_COORD) && context->fog_coord) {
+                        glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FRAGMENT_DEPTH_EXT);
+                        checkGLcall("glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FRAGMENT_DEPTH_EXT)");
+                        context->fog_coord = FALSE;
+                    }
+                    break;
+                }
+            }
+            case WINED3DFOG_LINEAR: {
+                if(!context->last_was_rhw) {
+                    glFogi(GL_FOG_MODE, GL_LINEAR);
+                    checkGLcall("glFogi(GL_FOG_MODE, GL_LINEAR)");
+                    if(GL_SUPPORT(EXT_FOG_COORD) && context->fog_coord) {
+                        glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FRAGMENT_DEPTH_EXT);
+                        checkGLcall("glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FRAGMENT_DEPTH_EXT)");
+                        context->fog_coord = FALSE;
+                    }
+                    break;
+                }
+            }
+            case WINED3DFOG_NONE: {
+                /* Both are none? According to msdn the alpha channel of the specular
+                 * color contains a fog factor. Set it in drawStridedSlow.
+                 * Same happens with Vertexfog on transformed vertices
+                 */
+                if(GL_SUPPORT(EXT_FOG_COORD)) {
+                    if(context->fog_coord == FALSE) {
+                        glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FOG_COORDINATE_EXT);
+                        checkGLcall("glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FOG_COORDINATE_EXT)");
+                        context->fog_coord = TRUE;
+                    }
+                    glFogi(GL_FOG_MODE, GL_LINEAR);
+                    checkGLcall("glFogi(GL_FOG_MODE, GL_LINEAR)");
+                    fogstart = 0xff;
+                    fogend = 0x0;
+                } else {
+                    /* Disable GL fog, handle this in software in drawStridedSlow */
+                    fogenable = FALSE;
+                }
+                break;
+            }
+            default: FIXME("Unexpected WINED3DRS_FOGVERTEXMODE %d\n", stateblock->renderState[WINED3DRS_FOGVERTEXMODE]);
+        }
+    } else {
+        glHint(GL_FOG_HINT, GL_NICEST);
+        checkGLcall("glHint(GL_FOG_HINT, GL_NICEST)");
+        context->last_was_foggy_shader = FALSE;
+
+        switch (stateblock->renderState[WINED3DRS_FOGTABLEMODE]) {
+            case WINED3DFOG_EXP:
+                glFogi(GL_FOG_MODE, GL_EXP);
+                checkGLcall("glFogi(GL_FOG_MODE, GL_EXP)");
+                if(GL_SUPPORT(EXT_FOG_COORD) && context->fog_coord) {
+                    glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FRAGMENT_DEPTH_EXT);
+                    checkGLcall("glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FRAGMENT_DEPTH_EXT)");
+                    context->fog_coord = FALSE;
+                }
+                break;
+
+            case WINED3DFOG_EXP2:
+                glFogi(GL_FOG_MODE, GL_EXP2);
+                checkGLcall("glFogi(GL_FOG_MODE, GL_EXP2)");
+                if(GL_SUPPORT(EXT_FOG_COORD) && context->fog_coord) {
+                    glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FRAGMENT_DEPTH_EXT);
+                    checkGLcall("glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FRAGMENT_DEPTH_EXT)");
+                    context->fog_coord = FALSE;
+                }
+                break;
+
+            case WINED3DFOG_LINEAR:
+                glFogi(GL_FOG_MODE, GL_LINEAR);
+                checkGLcall("glFogi(GL_FOG_MODE, GL_LINEAR)");
+                if(GL_SUPPORT(EXT_FOG_COORD) && context->fog_coord) {
+                    glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FRAGMENT_DEPTH_EXT);
+                    checkGLcall("glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FRAGMENT_DEPTH_EXT)");
+                    context->fog_coord = FALSE;
+                }
+                break;
+
+            case WINED3DFOG_NONE:   /* Won't happen */
+            default:
+                FIXME("Unexpected WINED3DRS_FOGTABLEMODE %d\n", stateblock->renderState[WINED3DRS_FOGTABLEMODE]);
+        }
+    }
+
+    if(fogenable) {
+        glEnable(GL_FOG);
+        checkGLcall("glEnable GL_FOG");
+
+        if(fogstart != fogend)
+        {
+            glFogfv(GL_FOG_START, &fogstart);
+            checkGLcall("glFogf(GL_FOG_START, fogstart)");
+            TRACE("Fog Start == %f\n", fogstart);
+
+            glFogfv(GL_FOG_END, &fogend);
+            checkGLcall("glFogf(GL_FOG_END, fogend)");
+            TRACE("Fog End == %f\n", fogend);
+        }
+        else
+        {
+            unsigned long fMInf = 0xff800000;
+            //glFogf(GL_FOG_START, -1.0 / 0.0);
+            glFogf(GL_FOG_START, *(float*)(&fMInf));
+            checkGLcall("glFogf(GL_FOG_START, fogstart)");
+            TRACE("Fog Start == %f\n", fogstart);
+
+            glFogf(GL_FOG_END, 0.0);
+            checkGLcall("glFogf(GL_FOG_END, fogend)");
+            TRACE("Fog End == %f\n", fogend);
+        }
+    } else {
+        glDisable(GL_FOG);
+        checkGLcall("glDisable GL_FOG");
+        if( use_ps(stateblock->wineD3DDevice) ) {
+            /* disable fog in the pixel shader
+             * NOTE: For pixel shader, GL_FOG_START and GL_FOG_END don't hold fog start s and end e but
+             * -1/(e-s) and e/(e-s) respectively.
+             */
+            glFogf(GL_FOG_START, 0.0f);
+            checkGLcall("glFogf(GL_FOG_START, fogstart)");
+            glFogf(GL_FOG_END, 1.0f);
+            checkGLcall("glFogf(GL_FOG_END, fogend)");
+        }
+    }
+}
+
+static void state_rangefog_w(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(stateblock->renderState[WINED3DRS_RANGEFOGENABLE]) {
+        WARN("Range fog enabled, but not supported by this opengl implementation\n");
+    }
+}
+
+static void state_rangefog(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(stateblock->renderState[WINED3DRS_RANGEFOGENABLE]) {
+        glFogi(GL_FOG_DISTANCE_MODE_NV, GL_EYE_RADIAL_NV);
+        checkGLcall("glFogi(GL_FOG_DISTANCE_MODE_NV, GL_EYE_RADIAL_NV)");
+    } else {
+        glFogi(GL_FOG_DISTANCE_MODE_NV, GL_EYE_PLANE_ABSOLUTE_NV);
+        checkGLcall("glFogi(GL_FOG_DISTANCE_MODE_NV, GL_EYE_PLANE_ABSOLUTE_NV)");
+    }
+}
+
+static void state_fogcolor(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    float col[4];
+    D3DCOLORTOGLFLOAT4(stateblock->renderState[WINED3DRS_FOGCOLOR], col);
+    glFogfv(GL_FOG_COLOR, &col[0]);
+    checkGLcall("glFog GL_FOG_COLOR");
+}
+
+static void state_fogdensity(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    union {
+        DWORD d;
+        float f;
+    } tmpvalue;
+    tmpvalue.d = stateblock->renderState[WINED3DRS_FOGDENSITY];
+    glFogfv(GL_FOG_DENSITY, &tmpvalue.f);
+    checkGLcall("glFogf(GL_FOG_DENSITY, (float) Value)");
+}
+
+/* TODO: Merge with primitive type + init_materials()!! */
+static void state_colormat(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    IWineD3DDeviceImpl *device = stateblock->wineD3DDevice;
+    GLenum Parm = 0;
+    const WineDirect3DStridedData *diffuse = &device->strided_streams.u.s.diffuse;
+    BOOL isDiffuseSupplied;
+
+    /* Depends on the decoded vertex declaration to read the existence of diffuse data.
+     * The vertex declaration will call this function if the fixed function pipeline is used.
+     */
+
+    if(isStateDirty(context, STATE_VDECL)) {
+        return;
+    }
+
+    isDiffuseSupplied = diffuse->lpData || diffuse->VBO;
+
+    context->num_untracked_materials = 0;
+    if (isDiffuseSupplied && stateblock->renderState[WINED3DRS_COLORVERTEX]) {
+        TRACE("diff %d, amb %d, emis %d, spec %d\n",
+              stateblock->renderState[WINED3DRS_DIFFUSEMATERIALSOURCE],
+              stateblock->renderState[WINED3DRS_AMBIENTMATERIALSOURCE],
+              stateblock->renderState[WINED3DRS_EMISSIVEMATERIALSOURCE],
+              stateblock->renderState[WINED3DRS_SPECULARMATERIALSOURCE]);
+
+        if (stateblock->renderState[WINED3DRS_DIFFUSEMATERIALSOURCE] == WINED3DMCS_COLOR1) {
+            if (stateblock->renderState[WINED3DRS_AMBIENTMATERIALSOURCE] == WINED3DMCS_COLOR1) {
+                Parm = GL_AMBIENT_AND_DIFFUSE;
+            } else {
+                Parm = GL_DIFFUSE;
+            }
+            if(stateblock->renderState[WINED3DRS_EMISSIVEMATERIALSOURCE] == WINED3DMCS_COLOR1) {
+                context->untracked_materials[context->num_untracked_materials] = GL_EMISSION;
+                context->num_untracked_materials++;
+            }
+            if(stateblock->renderState[WINED3DRS_SPECULARMATERIALSOURCE] == WINED3DMCS_COLOR1) {
+                context->untracked_materials[context->num_untracked_materials] = GL_SPECULAR;
+                context->num_untracked_materials++;
+            }
+        } else if (stateblock->renderState[WINED3DRS_AMBIENTMATERIALSOURCE] == WINED3DMCS_COLOR1) {
+            Parm = GL_AMBIENT;
+            if(stateblock->renderState[WINED3DRS_EMISSIVEMATERIALSOURCE] == WINED3DMCS_COLOR1) {
+                context->untracked_materials[context->num_untracked_materials] = GL_EMISSION;
+                context->num_untracked_materials++;
+            }
+            if(stateblock->renderState[WINED3DRS_SPECULARMATERIALSOURCE] == WINED3DMCS_COLOR1) {
+                context->untracked_materials[context->num_untracked_materials] = GL_SPECULAR;
+                context->num_untracked_materials++;
+            }
+        } else if (stateblock->renderState[WINED3DRS_EMISSIVEMATERIALSOURCE] == WINED3DMCS_COLOR1) {
+            Parm = GL_EMISSION;
+            if(stateblock->renderState[WINED3DRS_SPECULARMATERIALSOURCE] == WINED3DMCS_COLOR1) {
+                context->untracked_materials[context->num_untracked_materials] = GL_SPECULAR;
+                context->num_untracked_materials++;
+            }
+        } else if (stateblock->renderState[WINED3DRS_SPECULARMATERIALSOURCE] == WINED3DMCS_COLOR1) {
+            Parm = GL_SPECULAR;
+        }
+    }
+
+    /* Nothing changed, return. */
+    if (Parm == context->tracking_parm) return;
+
+    if(!Parm) {
+        glDisable(GL_COLOR_MATERIAL);
+        checkGLcall("glDisable GL_COLOR_MATERIAL");
+    } else {
+        glColorMaterial(GL_FRONT_AND_BACK, Parm);
+        checkGLcall("glColorMaterial(GL_FRONT_AND_BACK, Parm)");
+        glEnable(GL_COLOR_MATERIAL);
+        checkGLcall("glEnable(GL_COLOR_MATERIAL)");
+    }
+
+    /* Apparently calls to glMaterialfv are ignored for properties we're
+     * tracking with glColorMaterial, so apply those here. */
+    switch (context->tracking_parm) {
+        case GL_AMBIENT_AND_DIFFUSE:
+            glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, (float*)&device->updateStateBlock->material.Ambient);
+            glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, (float*)&device->updateStateBlock->material.Diffuse);
+            checkGLcall("glMaterialfv");
+            break;
+
+        case GL_DIFFUSE:
+            glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, (float*)&device->updateStateBlock->material.Diffuse);
+            checkGLcall("glMaterialfv");
+            break;
+
+        case GL_AMBIENT:
+            glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, (float*)&device->updateStateBlock->material.Ambient);
+            checkGLcall("glMaterialfv");
+            break;
+
+        case GL_EMISSION:
+            glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, (float*)&device->updateStateBlock->material.Emissive);
+            checkGLcall("glMaterialfv");
+            break;
+
+        case GL_SPECULAR:
+            /* Only change material color if specular is enabled, otherwise it is set to black */
+            if (device->stateBlock->renderState[WINED3DRS_SPECULARENABLE]) {
+                glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, (float*)&device->updateStateBlock->material.Specular);
+                checkGLcall("glMaterialfv");
+            } else {
+                const GLfloat black[4] = {0.0f, 0.0f, 0.0f, 0.0f};
+                glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, &black[0]);
+                checkGLcall("glMaterialfv");
+            }
+            break;
+    }
+
+    context->tracking_parm = Parm;
+}
+
+static void state_linepattern(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    union {
+        DWORD                 d;
+        WINED3DLINEPATTERN    lp;
+    } tmppattern;
+    tmppattern.d = stateblock->renderState[WINED3DRS_LINEPATTERN];
+
+    TRACE("Line pattern: repeat %d bits %x\n", tmppattern.lp.wRepeatFactor, tmppattern.lp.wLinePattern);
+
+    if (tmppattern.lp.wRepeatFactor) {
+        glLineStipple(tmppattern.lp.wRepeatFactor, tmppattern.lp.wLinePattern);
+        checkGLcall("glLineStipple(repeat, linepattern)");
+        glEnable(GL_LINE_STIPPLE);
+        checkGLcall("glEnable(GL_LINE_STIPPLE);");
+    } else {
+        glDisable(GL_LINE_STIPPLE);
+        checkGLcall("glDisable(GL_LINE_STIPPLE);");
+    }
+}
+
+static void state_zbias(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    union {
+        DWORD d;
+        float f;
+    } tmpvalue;
+
+    if (stateblock->renderState[WINED3DRS_ZBIAS]) {
+        tmpvalue.d = stateblock->renderState[WINED3DRS_ZBIAS];
+        TRACE("ZBias value %f\n", tmpvalue.f);
+        glPolygonOffset(0, -tmpvalue.f);
+        checkGLcall("glPolygonOffset(0, -Value)");
+        glEnable(GL_POLYGON_OFFSET_FILL);
+        checkGLcall("glEnable(GL_POLYGON_OFFSET_FILL);");
+        glEnable(GL_POLYGON_OFFSET_LINE);
+        checkGLcall("glEnable(GL_POLYGON_OFFSET_LINE);");
+        glEnable(GL_POLYGON_OFFSET_POINT);
+        checkGLcall("glEnable(GL_POLYGON_OFFSET_POINT);");
+    } else {
+        glDisable(GL_POLYGON_OFFSET_FILL);
+        checkGLcall("glDisable(GL_POLYGON_OFFSET_FILL);");
+        glDisable(GL_POLYGON_OFFSET_LINE);
+        checkGLcall("glDisable(GL_POLYGON_OFFSET_LINE);");
+        glDisable(GL_POLYGON_OFFSET_POINT);
+        checkGLcall("glDisable(GL_POLYGON_OFFSET_POINT);");
+    }
+}
+
+
+static void state_normalize(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(isStateDirty(context, STATE_VDECL)) {
+        return;
+    }
+    /* Without vertex normals, we set the current normal to 0/0/0 to remove the diffuse factor
+     * from the opengl lighting equation, as d3d does. Normalization of 0/0/0 can lead to a division
+     * by zero and is not properly defined in opengl, so avoid it
+     */
+    if (stateblock->renderState[WINED3DRS_NORMALIZENORMALS] && (
+        stateblock->wineD3DDevice->strided_streams.u.s.normal.lpData ||
+        stateblock->wineD3DDevice->strided_streams.u.s.normal.VBO)) {
+        glEnable(GL_NORMALIZE);
+        checkGLcall("glEnable(GL_NORMALIZE);");
+    } else {
+        glDisable(GL_NORMALIZE);
+        checkGLcall("glDisable(GL_NORMALIZE);");
+    }
+}
+
+static void state_psizemin_w(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    union {
+        DWORD d;
+        float f;
+    } tmpvalue;
+
+    tmpvalue.d = stateblock->renderState[WINED3DRS_POINTSIZE_MIN];
+    if(tmpvalue.f != 1.0) {
+        FIXME("WINED3DRS_POINTSIZE_MIN not supported on this opengl, value is %f\n", tmpvalue.f);
+    }
+    tmpvalue.d = stateblock->renderState[WINED3DRS_POINTSIZE_MAX];
+    if(tmpvalue.f != 64.0) {
+        FIXME("WINED3DRS_POINTSIZE_MAX not supported on this opengl, value is %f\n", tmpvalue.f);
+    }
+
+}
+
+static void state_psizemin_ext(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    union {
+        DWORD d;
+        float f;
+    } min, max;
+
+    min.d = stateblock->renderState[WINED3DRS_POINTSIZE_MIN];
+    max.d = stateblock->renderState[WINED3DRS_POINTSIZE_MAX];
+
+    /* Max point size trumps min point size */
+    if(min.f > max.f) {
+        min.f = max.f;
+    }
+
+    GL_EXTCALL(glPointParameterfEXT)(GL_POINT_SIZE_MIN_EXT, min.f);
+    checkGLcall("glPointParameterfEXT(...)");
+    GL_EXTCALL(glPointParameterfEXT)(GL_POINT_SIZE_MAX_EXT, max.f);
+    checkGLcall("glPointParameterfEXT(...)");
+}
+
+static void state_psizemin_arb(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    union {
+        DWORD d;
+        float f;
+    } min, max;
+
+    min.d = stateblock->renderState[WINED3DRS_POINTSIZE_MIN];
+    max.d = stateblock->renderState[WINED3DRS_POINTSIZE_MAX];
+
+    /* Max point size trumps min point size */
+    if(min.f > max.f) {
+        min.f = max.f;
+    }
+
+    GL_EXTCALL(glPointParameterfARB)(GL_POINT_SIZE_MIN_ARB, min.f);
+    checkGLcall("glPointParameterfARB(...)");
+    GL_EXTCALL(glPointParameterfARB)(GL_POINT_SIZE_MAX_ARB, max.f);
+    checkGLcall("glPointParameterfARB(...)");
+}
+
+static void state_pscale(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    /* TODO: Group this with the viewport */
+    /*
+     * POINTSCALEENABLE controls how point size value is treated. If set to
+     * true, the point size is scaled with respect to height of viewport.
+     * When set to false point size is in pixels.
+     */
+
+    /* Default values */
+    GLfloat att[3] = {1.0f, 0.0f, 0.0f};
+    union {
+        DWORD d;
+        float f;
+    } pointSize, A, B, C;
+
+    pointSize.d = stateblock->renderState[WINED3DRS_POINTSIZE];
+    A.d = stateblock->renderState[WINED3DRS_POINTSCALE_A];
+    B.d = stateblock->renderState[WINED3DRS_POINTSCALE_B];
+    C.d = stateblock->renderState[WINED3DRS_POINTSCALE_C];
+
+    if(stateblock->renderState[WINED3DRS_POINTSCALEENABLE]) {
+        GLfloat scaleFactor;
+        float h = stateblock->viewport.Height;
+
+        if(pointSize.f < GL_LIMITS(pointsizemin)) {
+            /*
+             * Minimum valid point size for OpenGL is driver specific. For Direct3D it is
+             * 0.0f. This means that OpenGL will clamp really small point sizes to the
+             * driver minimum. To correct for this we need to multiply by the scale factor when sizes
+             * are less than 1.0f. scale_factor =  1.0f / point_size.
+             */
+            scaleFactor = pointSize.f / GL_LIMITS(pointsizemin);
+            /* Clamp the point size, don't rely on the driver to do it. MacOS says min point size
+             * is 1.0, but then accepts points below that and draws too small points
+             */
+            pointSize.f = GL_LIMITS(pointsizemin);
+        } else if(pointSize.f > GL_LIMITS(pointsize)) {
+            /* gl already scales the input to glPointSize,
+             * d3d scales the result after the point size scale.
+             * If the point size is bigger than the max size, use the
+             * scaling to scale it bigger, and set the gl point size to max
+             */
+            scaleFactor = pointSize.f / GL_LIMITS(pointsize);
+            TRACE("scale: %f\n", scaleFactor);
+            pointSize.f = GL_LIMITS(pointsize);
+        } else {
+            scaleFactor = 1.0f;
+        }
+        scaleFactor = pow(h * scaleFactor, 2);
+
+        att[0] = A.f / scaleFactor;
+        att[1] = B.f / scaleFactor;
+        att[2] = C.f / scaleFactor;
+    }
+
+    if(GL_SUPPORT(ARB_POINT_PARAMETERS)) {
+        GL_EXTCALL(glPointParameterfvARB)(GL_POINT_DISTANCE_ATTENUATION_ARB, att);
+        checkGLcall("glPointParameterfvARB(GL_DISTANCE_ATTENUATION_ARB, ...)");
+    }
+    else if(GL_SUPPORT(EXT_POINT_PARAMETERS)) {
+        GL_EXTCALL(glPointParameterfvEXT)(GL_DISTANCE_ATTENUATION_EXT, att);
+        checkGLcall("glPointParameterfvEXT(GL_DISTANCE_ATTENUATION_EXT, ...)");
+    } else if(stateblock->renderState[WINED3DRS_POINTSCALEENABLE]) {
+        WARN("POINT_PARAMETERS not supported in this version of opengl\n");
+    }
+
+    glPointSize(pointSize.f);
+    checkGLcall("glPointSize(...);");
+}
+
+static void state_colorwrite(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    DWORD Value = stateblock->renderState[WINED3DRS_COLORWRITEENABLE];
+
+    TRACE("Color mask: r(%d) g(%d) b(%d) a(%d)\n",
+        Value & WINED3DCOLORWRITEENABLE_RED   ? 1 : 0,
+        Value & WINED3DCOLORWRITEENABLE_GREEN ? 1 : 0,
+        Value & WINED3DCOLORWRITEENABLE_BLUE  ? 1 : 0,
+        Value & WINED3DCOLORWRITEENABLE_ALPHA ? 1 : 0);
+    glColorMask(Value & WINED3DCOLORWRITEENABLE_RED   ? GL_TRUE : GL_FALSE,
+                Value & WINED3DCOLORWRITEENABLE_GREEN ? GL_TRUE : GL_FALSE,
+                Value & WINED3DCOLORWRITEENABLE_BLUE  ? GL_TRUE : GL_FALSE,
+                Value & WINED3DCOLORWRITEENABLE_ALPHA ? GL_TRUE : GL_FALSE);
+    checkGLcall("glColorMask(...)");
+
+    /* depends on WINED3DRS_COLORWRITEENABLE. */
+    if(stateblock->renderState[WINED3DRS_COLORWRITEENABLE1] != 0x0000000F ||
+       stateblock->renderState[WINED3DRS_COLORWRITEENABLE2] != 0x0000000F ||
+       stateblock->renderState[WINED3DRS_COLORWRITEENABLE3] != 0x0000000F ) {
+        ERR("(WINED3DRS_COLORWRITEENABLE1/2/3,%d,%d,%d) not yet implemented. Missing of cap D3DPMISCCAPS_INDEPENDENTWRITEMASKS wasn't honored?\n",
+            stateblock->renderState[WINED3DRS_COLORWRITEENABLE1],
+            stateblock->renderState[WINED3DRS_COLORWRITEENABLE2],
+            stateblock->renderState[WINED3DRS_COLORWRITEENABLE3]);
+    }
+}
+
+static void state_localviewer(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(stateblock->renderState[WINED3DRS_LOCALVIEWER]) {
+        glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 1);
+        checkGLcall("glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 1)");
+    } else {
+        glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 0);
+        checkGLcall("glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 0)");
+    }
+}
+
+static void state_lastpixel(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(stateblock->renderState[WINED3DRS_LASTPIXEL]) {
+        TRACE("Last Pixel Drawing Enabled\n");
+    } else {
+        static BOOL warned;
+        if (!warned) {
+            FIXME("Last Pixel Drawing Disabled, not handled yet\n");
+            warned = TRUE;
+        } else {
+            TRACE("Last Pixel Drawing Disabled, not handled yet\n");
+        }
+    }
+}
+
+static void state_pointsprite_w(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    /* TODO: NV_POINT_SPRITE */
+    if (stateblock->renderState[WINED3DRS_POINTSPRITEENABLE]) {
+        TRACE("Point sprites not supported\n");
+    }
+}
+
+static void state_pointsprite(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if (stateblock->renderState[WINED3DRS_POINTSPRITEENABLE]) {
+        glEnable(GL_POINT_SPRITE_ARB);
+        checkGLcall("glEnable(GL_POINT_SPRITE_ARB)");
+    } else {
+        glDisable(GL_POINT_SPRITE_ARB);
+        checkGLcall("glDisable(GL_POINT_SPRITE_ARB)");
+    }
+}
+
+static void state_wrap(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    /**
+     http://www.cosc.brocku.ca/Offerings/3P98/course/lectures/texture/
+     http://www.gamedev.net/reference/programming/features/rendererdll3/page2.asp
+     Discussion on the ways to turn on WRAPing to solve an OpenGL conversion problem.
+     http://www.flipcode.org/cgi-bin/fcmsg.cgi?thread_show=10248
+
+     so far as I can tell, wrapping and texture-coordinate generate go hand in hand,
+     */
+    TRACE("Stub\n");
+    if(stateblock->renderState[WINED3DRS_WRAP0] ||
+       stateblock->renderState[WINED3DRS_WRAP1] ||
+       stateblock->renderState[WINED3DRS_WRAP2] ||
+       stateblock->renderState[WINED3DRS_WRAP3] ||
+       stateblock->renderState[WINED3DRS_WRAP4] ||
+       stateblock->renderState[WINED3DRS_WRAP5] ||
+       stateblock->renderState[WINED3DRS_WRAP6] ||
+       stateblock->renderState[WINED3DRS_WRAP7] ||
+       stateblock->renderState[WINED3DRS_WRAP8] ||
+       stateblock->renderState[WINED3DRS_WRAP9] ||
+       stateblock->renderState[WINED3DRS_WRAP10] ||
+       stateblock->renderState[WINED3DRS_WRAP11] ||
+       stateblock->renderState[WINED3DRS_WRAP12] ||
+       stateblock->renderState[WINED3DRS_WRAP13] ||
+       stateblock->renderState[WINED3DRS_WRAP14] ||
+       stateblock->renderState[WINED3DRS_WRAP15] ) {
+        FIXME("(WINED3DRS_WRAP0) Texture wraping not yet supported\n");
+    }
+}
+
+static void state_msaa_w(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(stateblock->renderState[WINED3DRS_MULTISAMPLEANTIALIAS]) {
+        WARN("Multisample antialiasing not supported by gl\n");
+    }
+}
+
+static void state_msaa(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(stateblock->renderState[WINED3DRS_MULTISAMPLEANTIALIAS]) {
+        glEnable(GL_MULTISAMPLE_ARB);
+        checkGLcall("glEnable(GL_MULTISAMPLE_ARB)");
+    } else {
+        glDisable(GL_MULTISAMPLE_ARB);
+        checkGLcall("glDisable(GL_MULTISAMPLE_ARB)");
+    }
+}
+
+static void state_scissor(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(stateblock->renderState[WINED3DRS_SCISSORTESTENABLE]) {
+        glEnable(GL_SCISSOR_TEST);
+        checkGLcall("glEnable(GL_SCISSOR_TEST)");
+    } else {
+        glDisable(GL_SCISSOR_TEST);
+        checkGLcall("glDisable(GL_SCISSOR_TEST)");
+    }
+}
+
+static void state_depthbias(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    union {
+        DWORD d;
+        float f;
+    } tmpvalue;
+
+    if(stateblock->renderState[WINED3DRS_SLOPESCALEDEPTHBIAS] ||
+       stateblock->renderState[WINED3DRS_DEPTHBIAS]) {
+        tmpvalue.d = stateblock->renderState[WINED3DRS_SLOPESCALEDEPTHBIAS];
+        glEnable(GL_POLYGON_OFFSET_FILL);
+        checkGLcall("glEnable(GL_POLYGON_OFFSET_FILL)");
+        glPolygonOffset(tmpvalue.f, *((float*)&stateblock->renderState[WINED3DRS_DEPTHBIAS]));
+        checkGLcall("glPolygonOffset(...)");
+    } else {
+        glDisable(GL_POLYGON_OFFSET_FILL);
+        checkGLcall("glDisable(GL_POLYGON_OFFSET_FILL)");
+    }
+}
+
+static void state_perspective(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if (stateblock->renderState[WINED3DRS_TEXTUREPERSPECTIVE]) {
+        glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
+        checkGLcall("glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST)");
+    } else {
+        glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
+        checkGLcall("glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST)");
+    }
+}
+
+static void state_stippledalpha(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    TRACE("Stub\n");
+    if (stateblock->renderState[WINED3DRS_STIPPLEDALPHA])
+        FIXME(" Stippled Alpha not supported yet.\n");
+}
+
+static void state_antialias(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    TRACE("Stub\n");
+    if (stateblock->renderState[WINED3DRS_ANTIALIAS])
+        FIXME(" Antialias not supported yet.\n");
+}
+
+static void state_multisampmask(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    TRACE("Stub\n");
+    if (stateblock->renderState[WINED3DRS_MULTISAMPLEMASK] != 0xFFFFFFFF)
+        FIXME("(WINED3DRS_MULTISAMPLEMASK,%d) not yet implemented\n", stateblock->renderState[WINED3DRS_MULTISAMPLEMASK]);
+}
+
+static void state_patchedgestyle(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    TRACE("Stub\n");
+    if (stateblock->renderState[WINED3DRS_PATCHEDGESTYLE] != WINED3DPATCHEDGE_DISCRETE)
+        FIXME("(WINED3DRS_PATCHEDGESTYLE,%d) not yet implemented\n", stateblock->renderState[WINED3DRS_PATCHEDGESTYLE]);
+}
+
+static void state_patchsegments(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    union {
+        DWORD d;
+        float f;
+    } tmpvalue;
+    tmpvalue.f = 1.0f;
+
+    TRACE("Stub\n");
+    if (stateblock->renderState[WINED3DRS_PATCHSEGMENTS] != tmpvalue.d)
+    {
+        static BOOL displayed = FALSE;
+
+        tmpvalue.d = stateblock->renderState[WINED3DRS_PATCHSEGMENTS];
+        if(!displayed)
+            FIXME("(WINED3DRS_PATCHSEGMENTS,%f) not yet implemented\n", tmpvalue.f);
+
+        displayed = TRUE;
+    }
+}
+
+static void state_positiondegree(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    TRACE("Stub\n");
+    if (stateblock->renderState[WINED3DRS_POSITIONDEGREE] != WINED3DDEGREE_CUBIC)
+        FIXME("(WINED3DRS_POSITIONDEGREE,%d) not yet implemented\n", stateblock->renderState[WINED3DRS_POSITIONDEGREE]);
+}
+
+static void state_normaldegree(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    TRACE("Stub\n");
+    if (stateblock->renderState[WINED3DRS_NORMALDEGREE] != WINED3DDEGREE_LINEAR)
+        FIXME("(WINED3DRS_NORMALDEGREE,%d) not yet implemented\n", stateblock->renderState[WINED3DRS_NORMALDEGREE]);
+}
+
+static void state_tessellation(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    TRACE("Stub\n");
+    if(stateblock->renderState[WINED3DRS_ENABLEADAPTIVETESSELLATION])
+        FIXME("(WINED3DRS_ENABLEADAPTIVETESSELLATION,%d) not yet implemented\n", stateblock->renderState[WINED3DRS_ENABLEADAPTIVETESSELLATION]);
+}
+
+static void state_wrapu(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(stateblock->renderState[WINED3DRS_WRAPU]) {
+        FIXME("Render state WINED3DRS_WRAPU not implemented yet\n");
+    }
+}
+
+static void state_wrapv(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(stateblock->renderState[WINED3DRS_WRAPV]) {
+        FIXME("Render state WINED3DRS_WRAPV not implemented yet\n");
+    }
+}
+
+static void state_monoenable(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(stateblock->renderState[WINED3DRS_MONOENABLE]) {
+        FIXME("Render state WINED3DRS_MONOENABLE not implemented yet\n");
+    }
+}
+
+static void state_rop2(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(stateblock->renderState[WINED3DRS_ROP2]) {
+        FIXME("Render state WINED3DRS_ROP2 not implemented yet\n");
+    }
+}
+
+static void state_planemask(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(stateblock->renderState[WINED3DRS_PLANEMASK]) {
+        FIXME("Render state WINED3DRS_PLANEMASK not implemented yet\n");
+    }
+}
+
+static void state_subpixel(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(stateblock->renderState[WINED3DRS_SUBPIXEL]) {
+        FIXME("Render state WINED3DRS_SUBPIXEL not implemented yet\n");
+    }
+}
+
+static void state_subpixelx(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(stateblock->renderState[WINED3DRS_SUBPIXELX]) {
+        FIXME("Render state WINED3DRS_SUBPIXELX not implemented yet\n");
+    }
+}
+
+static void state_stippleenable(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(stateblock->renderState[WINED3DRS_STIPPLEENABLE]) {
+        FIXME("Render state WINED3DRS_STIPPLEENABLE not implemented yet\n");
+    }
+}
+
+static void state_bordercolor(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(stateblock->renderState[WINED3DRS_BORDERCOLOR]) {
+        FIXME("Render state WINED3DRS_BORDERCOLOR not implemented yet\n");
+    }
+}
+
+static void state_mipmaplodbias(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(stateblock->renderState[WINED3DRS_MIPMAPLODBIAS]) {
+        FIXME("Render state WINED3DRS_MIPMAPLODBIAS not implemented yet\n");
+    }
+}
+
+static void state_anisotropy(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(stateblock->renderState[WINED3DRS_ANISOTROPY]) {
+        FIXME("Render state WINED3DRS_ANISOTROPY not implemented yet\n");
+    }
+}
+
+static void state_flushbatch(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(stateblock->renderState[WINED3DRS_FLUSHBATCH]) {
+        FIXME("Render state WINED3DRS_FLUSHBATCH not implemented yet\n");
+    }
+}
+
+static void state_translucentsi(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(stateblock->renderState[WINED3DRS_TRANSLUCENTSORTINDEPENDENT]) {
+        FIXME("Render state WINED3DRS_TRANSLUCENTSORTINDEPENDENT not implemented yet\n");
+    }
+}
+
+static void state_extents(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(stateblock->renderState[WINED3DRS_EXTENTS]) {
+        FIXME("Render state WINED3DRS_EXTENTS not implemented yet\n");
+    }
+}
+
+static void state_ckeyblend(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(stateblock->renderState[WINED3DRS_COLORKEYBLENDENABLE]) {
+        FIXME("Render state WINED3DRS_COLORKEYBLENDENABLE not implemented yet\n");
+    }
+}
+
+/* Set texture operations up - The following avoids lots of ifdefs in this routine!*/
+#if defined (GL_VERSION_1_3)
+# define useext(A) A
+#elif defined (GL_EXT_texture_env_combine)
+# define useext(A) A##_EXT
+#elif defined (GL_ARB_texture_env_combine)
+# define useext(A) A##_ARB
+#endif
+
+static void get_src_and_opr(DWORD arg, BOOL is_alpha, GLenum* source, GLenum* operand) {
+    /* The WINED3DTA_ALPHAREPLICATE flag specifies the alpha component of the
+    * input should be used for all input components. The WINED3DTA_COMPLEMENT
+    * flag specifies the complement of the input should be used. */
+    BOOL from_alpha = is_alpha || arg & WINED3DTA_ALPHAREPLICATE;
+    BOOL complement = arg & WINED3DTA_COMPLEMENT;
+
+    /* Calculate the operand */
+    if (complement) {
+        if (from_alpha) *operand = GL_ONE_MINUS_SRC_ALPHA;
+        else *operand = GL_ONE_MINUS_SRC_COLOR;
+    } else {
+        if (from_alpha) *operand = GL_SRC_ALPHA;
+        else *operand = GL_SRC_COLOR;
+    }
+
+    /* Calculate the source */
+    switch (arg & WINED3DTA_SELECTMASK) {
+        case WINED3DTA_CURRENT: *source = GL_PREVIOUS_EXT; break;
+        case WINED3DTA_DIFFUSE: *source = GL_PRIMARY_COLOR_EXT; break;
+        case WINED3DTA_TEXTURE: *source = GL_TEXTURE; break;
+        case WINED3DTA_TFACTOR: *source = GL_CONSTANT_EXT; break;
+        case WINED3DTA_SPECULAR:
+            /*
+            * According to the GL_ARB_texture_env_combine specs, SPECULAR is
+            * 'Secondary color' and isn't supported until base GL supports it
+            * There is no concept of temp registers as far as I can tell
+            */
+            FIXME("Unhandled texture arg WINED3DTA_SPECULAR\n");
+            *source = GL_TEXTURE;
+            break;
+        default:
+            FIXME("Unrecognized texture arg %#x\n", arg);
+            *source = GL_TEXTURE;
+            break;
+    }
+}
+
+/* Setup the texture operations texture stage states */
+static void set_tex_op(IWineD3DDevice *iface, BOOL isAlpha, int Stage, WINED3DTEXTUREOP op, DWORD arg1, DWORD arg2, DWORD arg3)
+{
+    GLenum src1, src2, src3;
+    GLenum opr1, opr2, opr3;
+    GLenum comb_target;
+    GLenum src0_target, src1_target, src2_target;
+    GLenum opr0_target, opr1_target, opr2_target;
+    GLenum scal_target;
+    GLenum opr=0, invopr, src3_target, opr3_target;
+    BOOL Handled = FALSE;
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    IWineD3DStateBlockImpl *stateblock = This->stateBlock; /* for GLINFO_LOCATION */
+
+    TRACE("Alpha?(%d), Stage:%d Op(%s), a1(%d), a2(%d), a3(%d)\n", isAlpha, Stage, debug_d3dtop(op), arg1, arg2, arg3);
+
+    /* This is called by a state handler which has the gl lock held and a context for the thread */
+
+        /* Note: Operations usually involve two ars, src0 and src1 and are operations of
+    the form (a1 <operation> a2). However, some of the more complex operations
+    take 3 parameters. Instead of the (sensible) addition of a3, Microsoft added
+    in a third parameter called a0. Therefore these are operations of the form
+    a0 <operation> a1 <operation> a2, i.e., the new parameter goes to the front.
+
+    However, below we treat the new (a0) parameter as src2/opr2, so in the actual
+    functions below, expect their syntax to differ slightly to those listed in the
+    manuals, i.e., replace arg1 with arg3, arg2 with arg1 and arg3 with arg2
+    This affects WINED3DTOP_MULTIPLYADD and WINED3DTOP_LERP                     */
+
+    if (isAlpha) {
+        comb_target = useext(GL_COMBINE_ALPHA);
+        src0_target = useext(GL_SOURCE0_ALPHA);
+        src1_target = useext(GL_SOURCE1_ALPHA);
+        src2_target = useext(GL_SOURCE2_ALPHA);
+        opr0_target = useext(GL_OPERAND0_ALPHA);
+        opr1_target = useext(GL_OPERAND1_ALPHA);
+        opr2_target = useext(GL_OPERAND2_ALPHA);
+        scal_target = GL_ALPHA_SCALE;
+    }
+    else {
+        comb_target = useext(GL_COMBINE_RGB);
+        src0_target = useext(GL_SOURCE0_RGB);
+        src1_target = useext(GL_SOURCE1_RGB);
+        src2_target = useext(GL_SOURCE2_RGB);
+        opr0_target = useext(GL_OPERAND0_RGB);
+        opr1_target = useext(GL_OPERAND1_RGB);
+        opr2_target = useext(GL_OPERAND2_RGB);
+        scal_target = useext(GL_RGB_SCALE);
+    }
+
+        /* If a texture stage references an invalid texture unit the stage just
+        * passes through the result from the previous stage */
+    if (is_invalid_op(This, Stage, op, arg1, arg2, arg3)) {
+        arg1 = WINED3DTA_CURRENT;
+        op = WINED3DTOP_SELECTARG1;
+    }
+
+        /* From MSDN (WINED3DTSS_ALPHAARG1) :
+    The default argument is WINED3DTA_TEXTURE. If no texture is set for this stage,
+    then the default argument is WINED3DTA_DIFFUSE.
+    FIXME? If texture added/removed, may need to reset back as well?    */
+    if (isAlpha && This->stateBlock->textures[Stage] == NULL && arg1 == WINED3DTA_TEXTURE) {
+        get_src_and_opr(WINED3DTA_DIFFUSE, isAlpha, &src1, &opr1);
+    } else {
+        get_src_and_opr(arg1, isAlpha, &src1, &opr1);
+    }
+    get_src_and_opr(arg2, isAlpha, &src2, &opr2);
+    get_src_and_opr(arg3, isAlpha, &src3, &opr3);
+
+    TRACE("ct(%x), 1:(%x,%x), 2:(%x,%x), 3:(%x,%x)\n", comb_target, src1, opr1, src2, opr2, src3, opr3);
+
+    Handled = TRUE; /* Assume will be handled */
+
+    /* Other texture operations require special extensions: */
+    if (GL_SUPPORT(NV_TEXTURE_ENV_COMBINE4)) {
+        if (isAlpha) {
+            opr = GL_SRC_ALPHA;
+            invopr = GL_ONE_MINUS_SRC_ALPHA;
+            src3_target = GL_SOURCE3_ALPHA_NV;
+            opr3_target = GL_OPERAND3_ALPHA_NV;
+        } else {
+            opr = GL_SRC_COLOR;
+            invopr = GL_ONE_MINUS_SRC_COLOR;
+            src3_target = GL_SOURCE3_RGB_NV;
+            opr3_target = GL_OPERAND3_RGB_NV;
+        }
+        switch (op) {
+            case WINED3DTOP_DISABLE: /* Only for alpha */
+                glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_ADD);
+                checkGLcall("GL_TEXTURE_ENV, comb_target, GL_REPLACE");
+                glTexEnvi(GL_TEXTURE_ENV, src0_target, GL_PREVIOUS_EXT);
+                checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+                glTexEnvi(GL_TEXTURE_ENV, opr0_target, GL_SRC_ALPHA);
+                checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+                glTexEnvi(GL_TEXTURE_ENV, src1_target, GL_ZERO);
+                checkGLcall("GL_TEXTURE_ENV, src1_target, GL_ZERO");
+                glTexEnvi(GL_TEXTURE_ENV, opr1_target, invopr);
+                checkGLcall("GL_TEXTURE_ENV, opr1_target, invopr");
+                glTexEnvi(GL_TEXTURE_ENV, src2_target, GL_ZERO);
+                checkGLcall("GL_TEXTURE_ENV, src2_target, GL_ZERO");
+                glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr);
+                checkGLcall("GL_TEXTURE_ENV, opr2_target, opr");
+                glTexEnvi(GL_TEXTURE_ENV, src3_target, GL_ZERO);
+                checkGLcall("GL_TEXTURE_ENV, src3_target, GL_ZERO");
+                glTexEnvi(GL_TEXTURE_ENV, opr3_target, opr);
+                checkGLcall("GL_TEXTURE_ENV, opr3_target, opr");
+                break;
+                case WINED3DTOP_SELECTARG1:                                          /* = a1 * 1 + 0 * 0 */
+                case WINED3DTOP_SELECTARG2:                                          /* = a2 * 1 + 0 * 0 */
+                    glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_ADD);
+                    checkGLcall("GL_TEXTURE_ENV, comb_target, GL_ADD");
+                    if (op == WINED3DTOP_SELECTARG1) {
+                        glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+                        checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+                        glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+                        checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+                    } else {
+                        glTexEnvi(GL_TEXTURE_ENV, src0_target, src2);
+                        checkGLcall("GL_TEXTURE_ENV, src0_target, src2");
+                        glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr2);
+                        checkGLcall("GL_TEXTURE_ENV, opr0_target, opr2");
+                    }
+                    glTexEnvi(GL_TEXTURE_ENV, src1_target, GL_ZERO);
+                    checkGLcall("GL_TEXTURE_ENV, src1_target, GL_ZERO");
+                    glTexEnvi(GL_TEXTURE_ENV, opr1_target, invopr);
+                    checkGLcall("GL_TEXTURE_ENV, opr1_target, invopr");
+                    glTexEnvi(GL_TEXTURE_ENV, src2_target, GL_ZERO);
+                    checkGLcall("GL_TEXTURE_ENV, src2_target, GL_ZERO");
+                    glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr);
+                    checkGLcall("GL_TEXTURE_ENV, opr2_target, opr");
+                    glTexEnvi(GL_TEXTURE_ENV, src3_target, GL_ZERO);
+                    checkGLcall("GL_TEXTURE_ENV, src3_target, GL_ZERO");
+                    glTexEnvi(GL_TEXTURE_ENV, opr3_target, opr);
+                    checkGLcall("GL_TEXTURE_ENV, opr3_target, opr");
+                    break;
+
+            case WINED3DTOP_MODULATE:
+                glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_ADD);
+                checkGLcall("GL_TEXTURE_ENV, comb_target, GL_ADD"); /* Add = a0*a1 + a2*a3 */
+                glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+                glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+                checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+                glTexEnvi(GL_TEXTURE_ENV, src1_target, src2);
+                checkGLcall("GL_TEXTURE_ENV, src1_target, GL_ZERO");
+                glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr2);
+                checkGLcall("GL_TEXTURE_ENV, opr1_target, invopr");
+                glTexEnvi(GL_TEXTURE_ENV, src2_target, GL_ZERO);
+                checkGLcall("GL_TEXTURE_ENV, src2_target, src2");
+                glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr);
+                checkGLcall("GL_TEXTURE_ENV, opr2_target, opr2");
+                glTexEnvi(GL_TEXTURE_ENV, src3_target, GL_ZERO);
+                checkGLcall("GL_TEXTURE_ENV, src3_target, GL_ZERO");
+                glTexEnvi(GL_TEXTURE_ENV, opr3_target, opr);
+                checkGLcall("GL_TEXTURE_ENV, opr3_target, opr1");
+                glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+                checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+                break;
+            case WINED3DTOP_MODULATE2X:
+                glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_ADD);
+                checkGLcall("GL_TEXTURE_ENV, comb_target, GL_ADD"); /* Add = a0*a1 + a2*a3 */
+                glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+                glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+                checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+                glTexEnvi(GL_TEXTURE_ENV, src1_target, src2);
+                checkGLcall("GL_TEXTURE_ENV, src1_target, GL_ZERO");
+                glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr2);
+                checkGLcall("GL_TEXTURE_ENV, opr1_target, invopr");
+                glTexEnvi(GL_TEXTURE_ENV, src2_target, GL_ZERO);
+                checkGLcall("GL_TEXTURE_ENV, src2_target, src2");
+                glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr);
+                checkGLcall("GL_TEXTURE_ENV, opr2_target, opr2");
+                glTexEnvi(GL_TEXTURE_ENV, src3_target, GL_ZERO);
+                checkGLcall("GL_TEXTURE_ENV, src3_target, GL_ZERO");
+                glTexEnvi(GL_TEXTURE_ENV, opr3_target, opr);
+                checkGLcall("GL_TEXTURE_ENV, opr3_target, opr1");
+                glTexEnvi(GL_TEXTURE_ENV, scal_target, 2);
+                checkGLcall("GL_TEXTURE_ENV, scal_target, 2");
+                break;
+            case WINED3DTOP_MODULATE4X:
+                glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_ADD);
+                checkGLcall("GL_TEXTURE_ENV, comb_target, GL_ADD"); /* Add = a0*a1 + a2*a3 */
+                glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+                glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+                checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+                glTexEnvi(GL_TEXTURE_ENV, src1_target, src2);
+                checkGLcall("GL_TEXTURE_ENV, src1_target, GL_ZERO");
+                glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr2);
+                checkGLcall("GL_TEXTURE_ENV, opr1_target, invopr");
+                glTexEnvi(GL_TEXTURE_ENV, src2_target, GL_ZERO);
+                checkGLcall("GL_TEXTURE_ENV, src2_target, src2");
+                glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr);
+                checkGLcall("GL_TEXTURE_ENV, opr2_target, opr2");
+                glTexEnvi(GL_TEXTURE_ENV, src3_target, GL_ZERO);
+                checkGLcall("GL_TEXTURE_ENV, src3_target, GL_ZERO");
+                glTexEnvi(GL_TEXTURE_ENV, opr3_target, opr);
+                checkGLcall("GL_TEXTURE_ENV, opr3_target, opr1");
+                glTexEnvi(GL_TEXTURE_ENV, scal_target, 4);
+                checkGLcall("GL_TEXTURE_ENV, scal_target, 4");
+                break;
+
+            case WINED3DTOP_ADD:
+                glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_ADD);
+                checkGLcall("GL_TEXTURE_ENV, comb_target, GL_ADD");
+                glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+                glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+                checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+                glTexEnvi(GL_TEXTURE_ENV, src1_target, GL_ZERO);
+                checkGLcall("GL_TEXTURE_ENV, src1_target, GL_ZERO");
+                glTexEnvi(GL_TEXTURE_ENV, opr1_target, invopr);
+                checkGLcall("GL_TEXTURE_ENV, opr1_target, invopr");
+                glTexEnvi(GL_TEXTURE_ENV, src2_target, src2);
+                checkGLcall("GL_TEXTURE_ENV, src2_target, src2");
+                glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr2);
+                checkGLcall("GL_TEXTURE_ENV, opr2_target, opr2");
+                glTexEnvi(GL_TEXTURE_ENV, src3_target, GL_ZERO);
+                checkGLcall("GL_TEXTURE_ENV, src3_target, GL_ZERO");
+                glTexEnvi(GL_TEXTURE_ENV, opr3_target, invopr);
+                checkGLcall("GL_TEXTURE_ENV, opr3_target, invopr");
+                glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+                checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+                break;
+
+            case WINED3DTOP_ADDSIGNED:
+                glTexEnvi(GL_TEXTURE_ENV, comb_target, useext(GL_ADD_SIGNED));
+                checkGLcall("GL_TEXTURE_ENV, comb_target, useext(GL_ADD_SIGNED)");
+                glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+                glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+                checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+                glTexEnvi(GL_TEXTURE_ENV, src1_target, GL_ZERO);
+                checkGLcall("GL_TEXTURE_ENV, src1_target, GL_ZERO");
+                glTexEnvi(GL_TEXTURE_ENV, opr1_target, invopr);
+                checkGLcall("GL_TEXTURE_ENV, opr1_target, invopr");
+                glTexEnvi(GL_TEXTURE_ENV, src2_target, src2);
+                checkGLcall("GL_TEXTURE_ENV, src2_target, src2");
+                glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr2);
+                checkGLcall("GL_TEXTURE_ENV, opr2_target, opr2");
+                glTexEnvi(GL_TEXTURE_ENV, src3_target, GL_ZERO);
+                checkGLcall("GL_TEXTURE_ENV, src3_target, GL_ZERO");
+                glTexEnvi(GL_TEXTURE_ENV, opr3_target, invopr);
+                checkGLcall("GL_TEXTURE_ENV, opr3_target, invopr");
+                glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+                checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+                break;
+
+            case WINED3DTOP_ADDSIGNED2X:
+                glTexEnvi(GL_TEXTURE_ENV, comb_target, useext(GL_ADD_SIGNED));
+                checkGLcall("GL_TEXTURE_ENV, comb_target, useext(GL_ADD_SIGNED)");
+                glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+                glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+                checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+                glTexEnvi(GL_TEXTURE_ENV, src1_target, GL_ZERO);
+                checkGLcall("GL_TEXTURE_ENV, src1_target, GL_ZERO");
+                glTexEnvi(GL_TEXTURE_ENV, opr1_target, invopr);
+                checkGLcall("GL_TEXTURE_ENV, opr1_target, invopr");
+                glTexEnvi(GL_TEXTURE_ENV, src2_target, src2);
+                checkGLcall("GL_TEXTURE_ENV, src2_target, src2");
+                glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr2);
+                checkGLcall("GL_TEXTURE_ENV, opr2_target, opr2");
+                glTexEnvi(GL_TEXTURE_ENV, src3_target, GL_ZERO);
+                checkGLcall("GL_TEXTURE_ENV, src3_target, GL_ZERO");
+                glTexEnvi(GL_TEXTURE_ENV, opr3_target, invopr);
+                checkGLcall("GL_TEXTURE_ENV, opr3_target, invopr");
+                glTexEnvi(GL_TEXTURE_ENV, scal_target, 2);
+                checkGLcall("GL_TEXTURE_ENV, scal_target, 2");
+                break;
+
+            case WINED3DTOP_ADDSMOOTH:
+                glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_ADD);
+                checkGLcall("GL_TEXTURE_ENV, comb_target, GL_ADD");
+                glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+                glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+                checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+                glTexEnvi(GL_TEXTURE_ENV, src1_target, GL_ZERO);
+                checkGLcall("GL_TEXTURE_ENV, src1_target, GL_ZERO");
+                glTexEnvi(GL_TEXTURE_ENV, opr1_target, invopr);
+                checkGLcall("GL_TEXTURE_ENV, opr1_target, invopr");
+                glTexEnvi(GL_TEXTURE_ENV, src2_target, src2);
+                checkGLcall("GL_TEXTURE_ENV, src2_target, src2");
+                glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr2);
+                checkGLcall("GL_TEXTURE_ENV, opr2_target, opr2");
+                glTexEnvi(GL_TEXTURE_ENV, src3_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src3_target, src1");
+                switch (opr1) {
+                    case GL_SRC_COLOR: opr = GL_ONE_MINUS_SRC_COLOR; break;
+                    case GL_ONE_MINUS_SRC_COLOR: opr = GL_SRC_COLOR; break;
+                    case GL_SRC_ALPHA: opr = GL_ONE_MINUS_SRC_ALPHA; break;
+                    case GL_ONE_MINUS_SRC_ALPHA: opr = GL_SRC_ALPHA; break;
+                }
+                glTexEnvi(GL_TEXTURE_ENV, opr3_target, opr);
+                checkGLcall("GL_TEXTURE_ENV, opr3_target, opr");
+                glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+                checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+                break;
+
+            case WINED3DTOP_BLENDDIFFUSEALPHA:
+                glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_ADD);
+                checkGLcall("GL_TEXTURE_ENV, comb_target, GL_ADD");
+                glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+                glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+                checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+                glTexEnvi(GL_TEXTURE_ENV, src1_target, useext(GL_PRIMARY_COLOR));
+                checkGLcall("GL_TEXTURE_ENV, src1_target, useext(GL_PRIMARY_COLOR)");
+                glTexEnvi(GL_TEXTURE_ENV, opr1_target, invopr);
+                checkGLcall("GL_TEXTURE_ENV, opr1_target, invopr");
+                glTexEnvi(GL_TEXTURE_ENV, src2_target, src2);
+                checkGLcall("GL_TEXTURE_ENV, src2_target, src2");
+                glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr2);
+                checkGLcall("GL_TEXTURE_ENV, opr2_target, opr2");
+                glTexEnvi(GL_TEXTURE_ENV, src3_target, useext(GL_PRIMARY_COLOR));
+                checkGLcall("GL_TEXTURE_ENV, src3_target, useext(GL_PRIMARY_COLOR)");
+                glTexEnvi(GL_TEXTURE_ENV, opr3_target, GL_ONE_MINUS_SRC_ALPHA);
+                checkGLcall("GL_TEXTURE_ENV, opr3_target, GL_ONE_MINUS_SRC_ALPHA");
+                glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+                checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+                break;
+            case WINED3DTOP_BLENDTEXTUREALPHA:
+                glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_ADD);
+                checkGLcall("GL_TEXTURE_ENV, comb_target, GL_ADD");
+                glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+                glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+                checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+                glTexEnvi(GL_TEXTURE_ENV, src1_target, GL_TEXTURE);
+                checkGLcall("GL_TEXTURE_ENV, src1_target, GL_TEXTURE");
+                glTexEnvi(GL_TEXTURE_ENV, opr1_target, invopr);
+                checkGLcall("GL_TEXTURE_ENV, opr1_target, invopr");
+                glTexEnvi(GL_TEXTURE_ENV, src2_target, src2);
+                checkGLcall("GL_TEXTURE_ENV, src2_target, src2");
+                glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr2);
+                checkGLcall("GL_TEXTURE_ENV, opr2_target, opr2");
+                glTexEnvi(GL_TEXTURE_ENV, src3_target, GL_TEXTURE);
+                checkGLcall("GL_TEXTURE_ENV, src3_target, GL_TEXTURE");
+                glTexEnvi(GL_TEXTURE_ENV, opr3_target, GL_ONE_MINUS_SRC_ALPHA);
+                checkGLcall("GL_TEXTURE_ENV, opr3_target, GL_ONE_MINUS_SRC_ALPHA");
+                glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+                checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+                break;
+            case WINED3DTOP_BLENDFACTORALPHA:
+                glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_ADD);
+                checkGLcall("GL_TEXTURE_ENV, comb_target, GL_ADD");
+                glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+                glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+                checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+                glTexEnvi(GL_TEXTURE_ENV, src1_target, useext(GL_CONSTANT));
+                checkGLcall("GL_TEXTURE_ENV, src1_target, useext(GL_CONSTANT)");
+                glTexEnvi(GL_TEXTURE_ENV, opr1_target, invopr);
+                checkGLcall("GL_TEXTURE_ENV, opr1_target, invopr");
+                glTexEnvi(GL_TEXTURE_ENV, src2_target, src2);
+                checkGLcall("GL_TEXTURE_ENV, src2_target, src2");
+                glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr2);
+                checkGLcall("GL_TEXTURE_ENV, opr2_target, opr2");
+                glTexEnvi(GL_TEXTURE_ENV, src3_target, useext(GL_CONSTANT));
+                checkGLcall("GL_TEXTURE_ENV, src3_target, useext(GL_CONSTANT)");
+                glTexEnvi(GL_TEXTURE_ENV, opr3_target, GL_ONE_MINUS_SRC_ALPHA);
+                checkGLcall("GL_TEXTURE_ENV, opr3_target, GL_ONE_MINUS_SRC_ALPHA");
+                glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+                checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+                break;
+            case WINED3DTOP_BLENDTEXTUREALPHAPM:
+                glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_ADD);
+                checkGLcall("GL_TEXTURE_ENV, comb_target, GL_ADD");
+                glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+                glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+                checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+                glTexEnvi(GL_TEXTURE_ENV, src1_target, GL_ZERO);
+                checkGLcall("GL_TEXTURE_ENV, src1_target, GL_ZERO");
+                glTexEnvi(GL_TEXTURE_ENV, opr1_target, invopr);
+                checkGLcall("GL_TEXTURE_ENV, opr1_target, invopr");
+                glTexEnvi(GL_TEXTURE_ENV, src2_target, src2);
+                checkGLcall("GL_TEXTURE_ENV, src2_target, src2");
+                glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr2);
+                checkGLcall("GL_TEXTURE_ENV, opr2_target, opr2");
+                glTexEnvi(GL_TEXTURE_ENV, src3_target, GL_TEXTURE);
+                checkGLcall("GL_TEXTURE_ENV, src3_target, GL_TEXTURE");
+                glTexEnvi(GL_TEXTURE_ENV, opr3_target, GL_ONE_MINUS_SRC_ALPHA);
+                checkGLcall("GL_TEXTURE_ENV, opr3_target, GL_ONE_MINUS_SRC_ALPHA");
+                glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+                checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+                break;
+            case WINED3DTOP_MODULATEALPHA_ADDCOLOR:
+                glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_ADD);
+                checkGLcall("GL_TEXTURE_ENV, comb_target, GL_ADD");  /* Add = a0*a1 + a2*a3 */
+                glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);        /*   a0 = src1/opr1    */
+                checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+                glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+                checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");    /*   a1 = 1 (see docs) */
+                glTexEnvi(GL_TEXTURE_ENV, src1_target, GL_ZERO);
+                checkGLcall("GL_TEXTURE_ENV, src1_target, GL_ZERO");
+                glTexEnvi(GL_TEXTURE_ENV, opr1_target, invopr);
+                checkGLcall("GL_TEXTURE_ENV, opr1_target, invopr");
+                glTexEnvi(GL_TEXTURE_ENV, src2_target, src2);        /*   a2 = arg2         */
+                checkGLcall("GL_TEXTURE_ENV, src2_target, src2");
+                glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr2);
+                checkGLcall("GL_TEXTURE_ENV, opr2_target, opr2");     /*  a3 = src1 alpha   */
+                glTexEnvi(GL_TEXTURE_ENV, src3_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src3_target, src1");
+                switch (opr) {
+                    case GL_SRC_COLOR: opr = GL_SRC_ALPHA; break;
+                    case GL_ONE_MINUS_SRC_COLOR: opr = GL_ONE_MINUS_SRC_ALPHA; break;
+                }
+                glTexEnvi(GL_TEXTURE_ENV, opr3_target, opr);
+                checkGLcall("GL_TEXTURE_ENV, opr3_target, opr");
+                glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+                checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+                break;
+            case WINED3DTOP_MODULATECOLOR_ADDALPHA:
+                glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_ADD);
+                checkGLcall("GL_TEXTURE_ENV, comb_target, GL_ADD");
+                glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+                glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+                checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+                glTexEnvi(GL_TEXTURE_ENV, src1_target, src2);
+                checkGLcall("GL_TEXTURE_ENV, src1_target, src2");
+                glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr2);
+                checkGLcall("GL_TEXTURE_ENV, opr1_target, opr2");
+                glTexEnvi(GL_TEXTURE_ENV, src2_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src2_target, src1");
+                switch (opr1) {
+                    case GL_SRC_COLOR: opr = GL_SRC_ALPHA; break;
+                    case GL_ONE_MINUS_SRC_COLOR: opr = GL_ONE_MINUS_SRC_ALPHA; break;
+                }
+                glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr);
+                checkGLcall("GL_TEXTURE_ENV, opr2_target, opr");
+                glTexEnvi(GL_TEXTURE_ENV, src3_target, GL_ZERO);
+                checkGLcall("GL_TEXTURE_ENV, src3_target, GL_ZERO");
+                glTexEnvi(GL_TEXTURE_ENV, opr3_target, invopr);
+                checkGLcall("GL_TEXTURE_ENV, opr3_target, invopr");
+                glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+                checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+                break;
+            case WINED3DTOP_MODULATEINVALPHA_ADDCOLOR:
+                glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_ADD);
+                checkGLcall("GL_TEXTURE_ENV, comb_target, GL_ADD");
+                glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+                glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+                checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+                glTexEnvi(GL_TEXTURE_ENV, src1_target, GL_ZERO);
+                checkGLcall("GL_TEXTURE_ENV, src1_target, GL_ZERO");
+                glTexEnvi(GL_TEXTURE_ENV, opr1_target, invopr);
+                checkGLcall("GL_TEXTURE_ENV, opr1_target, invopr");
+                glTexEnvi(GL_TEXTURE_ENV, src2_target, src2);
+                checkGLcall("GL_TEXTURE_ENV, src2_target, src2");
+                glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr2);
+                checkGLcall("GL_TEXTURE_ENV, opr2_target, opr2");
+                glTexEnvi(GL_TEXTURE_ENV, src3_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src3_target, src1");
+                switch (opr1) {
+                    case GL_SRC_COLOR: opr = GL_ONE_MINUS_SRC_ALPHA; break;
+                    case GL_ONE_MINUS_SRC_COLOR: opr = GL_SRC_ALPHA; break;
+                    case GL_SRC_ALPHA: opr = GL_ONE_MINUS_SRC_ALPHA; break;
+                    case GL_ONE_MINUS_SRC_ALPHA: opr = GL_SRC_ALPHA; break;
+                }
+                glTexEnvi(GL_TEXTURE_ENV, opr3_target, opr);
+                checkGLcall("GL_TEXTURE_ENV, opr3_target, opr");
+                glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+                checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+                break;
+            case WINED3DTOP_MODULATEINVCOLOR_ADDALPHA:
+                glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_ADD);
+                checkGLcall("GL_TEXTURE_ENV, comb_target, GL_ADD");
+                glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+                switch (opr1) {
+                    case GL_SRC_COLOR: opr = GL_ONE_MINUS_SRC_COLOR; break;
+                    case GL_ONE_MINUS_SRC_COLOR: opr = GL_SRC_COLOR; break;
+                    case GL_SRC_ALPHA: opr = GL_ONE_MINUS_SRC_ALPHA; break;
+                    case GL_ONE_MINUS_SRC_ALPHA: opr = GL_SRC_ALPHA; break;
+                }
+                glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr);
+                checkGLcall("GL_TEXTURE_ENV, opr0_target, opr");
+                glTexEnvi(GL_TEXTURE_ENV, src1_target, src2);
+                checkGLcall("GL_TEXTURE_ENV, src1_target, src2");
+                glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr2);
+                checkGLcall("GL_TEXTURE_ENV, opr1_target, opr2");
+                glTexEnvi(GL_TEXTURE_ENV, src2_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src2_target, src1");
+                switch (opr1) {
+                    case GL_SRC_COLOR: opr = GL_SRC_ALPHA; break;
+                    case GL_ONE_MINUS_SRC_COLOR: opr = GL_ONE_MINUS_SRC_ALPHA; break;
+                }
+                glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr);
+                checkGLcall("GL_TEXTURE_ENV, opr2_target, opr");
+                glTexEnvi(GL_TEXTURE_ENV, src3_target, GL_ZERO);
+                checkGLcall("GL_TEXTURE_ENV, src3_target, GL_ZERO");
+                glTexEnvi(GL_TEXTURE_ENV, opr3_target, invopr);
+                checkGLcall("GL_TEXTURE_ENV, opr3_target, invopr");
+                glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+                checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+                break;
+            case WINED3DTOP_MULTIPLYADD:
+                glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_ADD);
+                checkGLcall("GL_TEXTURE_ENV, comb_target, GL_ADD");
+                glTexEnvi(GL_TEXTURE_ENV, src0_target, src3);
+                checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+                glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr3);
+                checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+                glTexEnvi(GL_TEXTURE_ENV, src1_target, GL_ZERO);
+                checkGLcall("GL_TEXTURE_ENV, src1_target, GL_ZERO");
+                glTexEnvi(GL_TEXTURE_ENV, opr1_target, invopr);
+                checkGLcall("GL_TEXTURE_ENV, opr1_target, invopr");
+                glTexEnvi(GL_TEXTURE_ENV, src2_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src2_target, src2");
+                glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr1);
+                checkGLcall("GL_TEXTURE_ENV, opr2_target, opr2");
+                glTexEnvi(GL_TEXTURE_ENV, src3_target, src2);
+                checkGLcall("GL_TEXTURE_ENV, src3_target, src3");
+                glTexEnvi(GL_TEXTURE_ENV, opr3_target, opr2);
+                checkGLcall("GL_TEXTURE_ENV, opr3_target, opr3");
+                glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+                checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+                break;
+
+            case WINED3DTOP_BUMPENVMAP:
+            {
+            }
+
+            case WINED3DTOP_BUMPENVMAPLUMINANCE:
+                FIXME("Implement bump environment mapping in GL_NV_texture_env_combine4 path\n");
+
+            default:
+                Handled = FALSE;
+        }
+        if (Handled) {
+            glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE4_NV);
+            checkGLcall("GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE4_NV");
+
+            return;
+        }
+    } /* GL_NV_texture_env_combine4 */
+
+    Handled = TRUE; /* Again, assume handled */
+    switch (op) {
+        case WINED3DTOP_DISABLE: /* Only for alpha */
+            glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_REPLACE);
+            checkGLcall("GL_TEXTURE_ENV, comb_target, GL_REPLACE");
+            glTexEnvi(GL_TEXTURE_ENV, src0_target, GL_PREVIOUS_EXT);
+            checkGLcall("GL_TEXTURE_ENV, src0_target, GL_PREVIOUS_EXT");
+            glTexEnvi(GL_TEXTURE_ENV, opr0_target, GL_SRC_ALPHA);
+            checkGLcall("GL_TEXTURE_ENV, opr0_target, GL_SRC_ALPHA");
+            glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+            checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+            break;
+        case WINED3DTOP_SELECTARG1:
+            glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_REPLACE);
+            checkGLcall("GL_TEXTURE_ENV, comb_target, GL_REPLACE");
+            glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+            checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+            glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+            checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+            glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+            checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+            break;
+        case WINED3DTOP_SELECTARG2:
+            glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_REPLACE);
+            checkGLcall("GL_TEXTURE_ENV, comb_target, GL_REPLACE");
+            glTexEnvi(GL_TEXTURE_ENV, src0_target, src2);
+            checkGLcall("GL_TEXTURE_ENV, src0_target, src2");
+            glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr2);
+            checkGLcall("GL_TEXTURE_ENV, opr0_target, opr2");
+            glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+            checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+            break;
+        case WINED3DTOP_MODULATE:
+            glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_MODULATE);
+            checkGLcall("GL_TEXTURE_ENV, comb_target, GL_MODULATE");
+            glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+            checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+            glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+            checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+            glTexEnvi(GL_TEXTURE_ENV, src1_target, src2);
+            checkGLcall("GL_TEXTURE_ENV, src1_target, src2");
+            glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr2);
+            checkGLcall("GL_TEXTURE_ENV, opr1_target, opr2");
+            glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+            checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+            break;
+        case WINED3DTOP_MODULATE2X:
+            glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_MODULATE);
+            checkGLcall("GL_TEXTURE_ENV, comb_target, GL_MODULATE");
+            glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+            checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+            glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+            checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+            glTexEnvi(GL_TEXTURE_ENV, src1_target, src2);
+            checkGLcall("GL_TEXTURE_ENV, src1_target, src2");
+            glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr2);
+            checkGLcall("GL_TEXTURE_ENV, opr1_target, opr2");
+            glTexEnvi(GL_TEXTURE_ENV, scal_target, 2);
+            checkGLcall("GL_TEXTURE_ENV, scal_target, 2");
+            break;
+        case WINED3DTOP_MODULATE4X:
+            glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_MODULATE);
+            checkGLcall("GL_TEXTURE_ENV, comb_target, GL_MODULATE");
+            glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+            checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+            glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+            checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+            glTexEnvi(GL_TEXTURE_ENV, src1_target, src2);
+            checkGLcall("GL_TEXTURE_ENV, src1_target, src2");
+            glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr2);
+            checkGLcall("GL_TEXTURE_ENV, opr1_target, opr2");
+            glTexEnvi(GL_TEXTURE_ENV, scal_target, 4);
+            checkGLcall("GL_TEXTURE_ENV, scal_target, 4");
+            break;
+        case WINED3DTOP_ADD:
+            glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_ADD);
+            checkGLcall("GL_TEXTURE_ENV, comb_target, GL_ADD");
+            glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+            checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+            glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+            checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+            glTexEnvi(GL_TEXTURE_ENV, src1_target, src2);
+            checkGLcall("GL_TEXTURE_ENV, src1_target, src2");
+            glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr2);
+            checkGLcall("GL_TEXTURE_ENV, opr1_target, opr2");
+            glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+            checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+            break;
+        case WINED3DTOP_ADDSIGNED:
+            glTexEnvi(GL_TEXTURE_ENV, comb_target, useext(GL_ADD_SIGNED));
+            checkGLcall("GL_TEXTURE_ENV, comb_target, useext((GL_ADD_SIGNED)");
+            glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+            checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+            glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+            checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+            glTexEnvi(GL_TEXTURE_ENV, src1_target, src2);
+            checkGLcall("GL_TEXTURE_ENV, src1_target, src2");
+            glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr2);
+            checkGLcall("GL_TEXTURE_ENV, opr1_target, opr2");
+            glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+            checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+            break;
+        case WINED3DTOP_ADDSIGNED2X:
+            glTexEnvi(GL_TEXTURE_ENV, comb_target, useext(GL_ADD_SIGNED));
+            checkGLcall("GL_TEXTURE_ENV, comb_target, useext(GL_ADD_SIGNED)");
+            glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+            checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+            glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+            checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+            glTexEnvi(GL_TEXTURE_ENV, src1_target, src2);
+            checkGLcall("GL_TEXTURE_ENV, src1_target, src2");
+            glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr2);
+            checkGLcall("GL_TEXTURE_ENV, opr1_target, opr2");
+            glTexEnvi(GL_TEXTURE_ENV, scal_target, 2);
+            checkGLcall("GL_TEXTURE_ENV, scal_target, 2");
+            break;
+        case WINED3DTOP_SUBTRACT:
+            if (GL_SUPPORT(ARB_TEXTURE_ENV_COMBINE)) {
+                glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_SUBTRACT);
+                checkGLcall("GL_TEXTURE_ENV, comb_target, useext(GL_SUBTRACT)");
+                glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+                glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+                checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+                glTexEnvi(GL_TEXTURE_ENV, src1_target, src2);
+                checkGLcall("GL_TEXTURE_ENV, src1_target, src2");
+                glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr2);
+                checkGLcall("GL_TEXTURE_ENV, opr1_target, opr2");
+                glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+                checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+            } else {
+                FIXME("This version of opengl does not support GL_SUBTRACT\n");
+            }
+            break;
+
+        case WINED3DTOP_BLENDDIFFUSEALPHA:
+            glTexEnvi(GL_TEXTURE_ENV, comb_target, useext(GL_INTERPOLATE));
+            checkGLcall("GL_TEXTURE_ENV, comb_target, useext(GL_INTERPOLATE)");
+            glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+            checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+            glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+            checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+            glTexEnvi(GL_TEXTURE_ENV, src1_target, src2);
+            checkGLcall("GL_TEXTURE_ENV, src1_target, src2");
+            glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr2);
+            checkGLcall("GL_TEXTURE_ENV, opr1_target, opr2");
+            glTexEnvi(GL_TEXTURE_ENV, src2_target, useext(GL_PRIMARY_COLOR));
+            checkGLcall("GL_TEXTURE_ENV, src2_target, GL_PRIMARY_COLOR");
+            glTexEnvi(GL_TEXTURE_ENV, opr2_target, GL_SRC_ALPHA);
+            checkGLcall("GL_TEXTURE_ENV, opr2_target, GL_SRC_ALPHA");
+            glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+            checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+            break;
+        case WINED3DTOP_BLENDTEXTUREALPHA:
+            glTexEnvi(GL_TEXTURE_ENV, comb_target, useext(GL_INTERPOLATE));
+            checkGLcall("GL_TEXTURE_ENV, comb_target, useext(GL_INTERPOLATE)");
+            glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+            checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+            glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+            checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+            glTexEnvi(GL_TEXTURE_ENV, src1_target, src2);
+            checkGLcall("GL_TEXTURE_ENV, src1_target, src2");
+            glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr2);
+            checkGLcall("GL_TEXTURE_ENV, opr1_target, opr2");
+            glTexEnvi(GL_TEXTURE_ENV, src2_target, GL_TEXTURE);
+            checkGLcall("GL_TEXTURE_ENV, src2_target, GL_TEXTURE");
+            glTexEnvi(GL_TEXTURE_ENV, opr2_target, GL_SRC_ALPHA);
+            checkGLcall("GL_TEXTURE_ENV, opr2_target, GL_SRC_ALPHA");
+            glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+            checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+            break;
+        case WINED3DTOP_BLENDFACTORALPHA:
+            glTexEnvi(GL_TEXTURE_ENV, comb_target, useext(GL_INTERPOLATE));
+            checkGLcall("GL_TEXTURE_ENV, comb_target, useext(GL_INTERPOLATE)");
+            glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+            checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+            glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+            checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+            glTexEnvi(GL_TEXTURE_ENV, src1_target, src2);
+            checkGLcall("GL_TEXTURE_ENV, src1_target, src2");
+            glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr2);
+            checkGLcall("GL_TEXTURE_ENV, opr1_target, opr2");
+            glTexEnvi(GL_TEXTURE_ENV, src2_target, useext(GL_CONSTANT));
+            checkGLcall("GL_TEXTURE_ENV, src2_target, GL_CONSTANT");
+            glTexEnvi(GL_TEXTURE_ENV, opr2_target, GL_SRC_ALPHA);
+            checkGLcall("GL_TEXTURE_ENV, opr2_target, GL_SRC_ALPHA");
+            glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+            checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+            break;
+        case WINED3DTOP_BLENDCURRENTALPHA:
+            glTexEnvi(GL_TEXTURE_ENV, comb_target, useext(GL_INTERPOLATE));
+            checkGLcall("GL_TEXTURE_ENV, comb_target, useext(GL_INTERPOLATE)");
+            glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+            checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+            glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+            checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+            glTexEnvi(GL_TEXTURE_ENV, src1_target, src2);
+            checkGLcall("GL_TEXTURE_ENV, src1_target, src2");
+            glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr2);
+            checkGLcall("GL_TEXTURE_ENV, opr1_target, opr2");
+            glTexEnvi(GL_TEXTURE_ENV, src2_target, useext(GL_PREVIOUS));
+            checkGLcall("GL_TEXTURE_ENV, src2_target, GL_PREVIOUS");
+            glTexEnvi(GL_TEXTURE_ENV, opr2_target, GL_SRC_ALPHA);
+            checkGLcall("GL_TEXTURE_ENV, opr2_target, GL_SRC_ALPHA");
+            glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+            checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+            break;
+        case WINED3DTOP_DOTPRODUCT3:
+            if (GL_SUPPORT(ARB_TEXTURE_ENV_DOT3)) {
+                glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_DOT3_RGBA_ARB);
+                checkGLcall("GL_TEXTURE_ENV, comb_target, GL_DOT3_RGBA_ARB");
+            } else if (GL_SUPPORT(EXT_TEXTURE_ENV_DOT3)) {
+                glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_DOT3_RGBA_EXT);
+                checkGLcall("GL_TEXTURE_ENV, comb_target, GL_DOT3_RGBA_EXT");
+            } else {
+                FIXME("This version of opengl does not support GL_DOT3\n");
+            }
+            glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+            checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+            glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+            checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+            glTexEnvi(GL_TEXTURE_ENV, src1_target, src2);
+            checkGLcall("GL_TEXTURE_ENV, src1_target, src2");
+            glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr2);
+            checkGLcall("GL_TEXTURE_ENV, opr1_target, opr2");
+            glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+            checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+            break;
+        case WINED3DTOP_LERP:
+            glTexEnvi(GL_TEXTURE_ENV, comb_target, useext(GL_INTERPOLATE));
+            checkGLcall("GL_TEXTURE_ENV, comb_target, useext(GL_INTERPOLATE)");
+            glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+            checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+            glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+            checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+            glTexEnvi(GL_TEXTURE_ENV, src1_target, src2);
+            checkGLcall("GL_TEXTURE_ENV, src1_target, src2");
+            glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr2);
+            checkGLcall("GL_TEXTURE_ENV, opr1_target, opr2");
+            glTexEnvi(GL_TEXTURE_ENV, src2_target, src3);
+            checkGLcall("GL_TEXTURE_ENV, src2_target, src3");
+            glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr3);
+            checkGLcall("GL_TEXTURE_ENV, opr2_target, opr3");
+            glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+            checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+            break;
+        case WINED3DTOP_ADDSMOOTH:
+            if (GL_SUPPORT(ATI_TEXTURE_ENV_COMBINE3)) {
+                glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_MODULATE_ADD_ATI);
+                checkGLcall("GL_TEXTURE_ENV, comb_target, GL_MODULATE_ADD_ATI");
+                glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+                switch (opr1) {
+                    case GL_SRC_COLOR: opr = GL_ONE_MINUS_SRC_COLOR; break;
+                    case GL_ONE_MINUS_SRC_COLOR: opr = GL_SRC_COLOR; break;
+                    case GL_SRC_ALPHA: opr = GL_ONE_MINUS_SRC_ALPHA; break;
+                    case GL_ONE_MINUS_SRC_ALPHA: opr = GL_SRC_ALPHA; break;
+                }
+                glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr);
+                checkGLcall("GL_TEXTURE_ENV, opr0_target, opr");
+                glTexEnvi(GL_TEXTURE_ENV, src1_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src1_target, src1");
+                glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr1);
+                checkGLcall("GL_TEXTURE_ENV, opr1_target, opr1");
+                glTexEnvi(GL_TEXTURE_ENV, src2_target, src2);
+                checkGLcall("GL_TEXTURE_ENV, src2_target, src2");
+                glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr2);
+                checkGLcall("GL_TEXTURE_ENV, opr2_target, opr2");
+                glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+                checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+            } else
+                Handled = FALSE;
+                break;
+        case WINED3DTOP_BLENDTEXTUREALPHAPM:
+            if (GL_SUPPORT(ATI_TEXTURE_ENV_COMBINE3)) {
+                glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_MODULATE_ADD_ATI);
+                checkGLcall("GL_TEXTURE_ENV, comb_target, GL_MODULATE_ADD_ATI");
+                glTexEnvi(GL_TEXTURE_ENV, src0_target, GL_TEXTURE);
+                checkGLcall("GL_TEXTURE_ENV, src0_target, GL_TEXTURE");
+                glTexEnvi(GL_TEXTURE_ENV, opr0_target, GL_ONE_MINUS_SRC_ALPHA);
+                checkGLcall("GL_TEXTURE_ENV, opr0_target, GL_ONE_MINUS_SRC_APHA");
+                glTexEnvi(GL_TEXTURE_ENV, src1_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src1_target, src1");
+                glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr1);
+                checkGLcall("GL_TEXTURE_ENV, opr1_target, opr1");
+                glTexEnvi(GL_TEXTURE_ENV, src2_target, src2);
+                checkGLcall("GL_TEXTURE_ENV, src2_target, src2");
+                glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr2);
+                checkGLcall("GL_TEXTURE_ENV, opr2_target, opr2");
+                glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+                checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+            } else
+                Handled = FALSE;
+                break;
+        case WINED3DTOP_MODULATEALPHA_ADDCOLOR:
+            if (GL_SUPPORT(ATI_TEXTURE_ENV_COMBINE3)) {
+                glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_MODULATE_ADD_ATI);
+                checkGLcall("GL_TEXTURE_ENV, comb_target, GL_MODULATE_ADD_ATI");
+                glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+                switch (opr1) {
+                    case GL_SRC_COLOR: opr = GL_SRC_ALPHA; break;
+                    case GL_ONE_MINUS_SRC_COLOR: opr = GL_ONE_MINUS_SRC_ALPHA; break;
+                    case GL_SRC_ALPHA: opr = GL_SRC_ALPHA; break;
+                    case GL_ONE_MINUS_SRC_ALPHA: opr = GL_ONE_MINUS_SRC_ALPHA; break;
+                }
+                glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr);
+                checkGLcall("GL_TEXTURE_ENV, opr0_target, opr");
+                glTexEnvi(GL_TEXTURE_ENV, src1_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src1_target, src1");
+                glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr1);
+                checkGLcall("GL_TEXTURE_ENV, opr1_target, opr1");
+                glTexEnvi(GL_TEXTURE_ENV, src2_target, src2);
+                checkGLcall("GL_TEXTURE_ENV, src2_target, src2");
+                glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr2);
+                checkGLcall("GL_TEXTURE_ENV, opr2_target, opr2");
+                glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+                checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+            } else
+                Handled = FALSE;
+                break;
+        case WINED3DTOP_MODULATECOLOR_ADDALPHA:
+            if (GL_SUPPORT(ATI_TEXTURE_ENV_COMBINE3)) {
+                glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_MODULATE_ADD_ATI);
+                checkGLcall("GL_TEXTURE_ENV, comb_target, GL_MODULATE_ADD_ATI");
+                glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+                glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+                checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+                glTexEnvi(GL_TEXTURE_ENV, src1_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src1_target, src1");
+                switch (opr1) {
+                    case GL_SRC_COLOR: opr = GL_SRC_ALPHA; break;
+                    case GL_ONE_MINUS_SRC_COLOR: opr = GL_ONE_MINUS_SRC_ALPHA; break;
+                    case GL_SRC_ALPHA: opr = GL_SRC_ALPHA; break;
+                    case GL_ONE_MINUS_SRC_ALPHA: opr = GL_ONE_MINUS_SRC_ALPHA; break;
+                }
+                glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr);
+                checkGLcall("GL_TEXTURE_ENV, opr1_target, opr");
+                glTexEnvi(GL_TEXTURE_ENV, src2_target, src2);
+                checkGLcall("GL_TEXTURE_ENV, src2_target, src2");
+                glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr2);
+                checkGLcall("GL_TEXTURE_ENV, opr2_target, opr2");
+                glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+                checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+            } else
+                Handled = FALSE;
+                break;
+        case WINED3DTOP_MODULATEINVALPHA_ADDCOLOR:
+            if (GL_SUPPORT(ATI_TEXTURE_ENV_COMBINE3)) {
+                glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_MODULATE_ADD_ATI);
+                checkGLcall("GL_TEXTURE_ENV, comb_target, GL_MODULATE_ADD_ATI");
+                glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+                switch (opr1) {
+                    case GL_SRC_COLOR: opr = GL_ONE_MINUS_SRC_ALPHA; break;
+                    case GL_ONE_MINUS_SRC_COLOR: opr = GL_SRC_ALPHA; break;
+                    case GL_SRC_ALPHA: opr = GL_ONE_MINUS_SRC_ALPHA; break;
+                    case GL_ONE_MINUS_SRC_ALPHA: opr = GL_SRC_ALPHA; break;
+                }
+                glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr);
+                checkGLcall("GL_TEXTURE_ENV, opr0_target, opr");
+                glTexEnvi(GL_TEXTURE_ENV, src1_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src1_target, src1");
+                glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr1);
+                checkGLcall("GL_TEXTURE_ENV, opr1_target, opr1");
+                glTexEnvi(GL_TEXTURE_ENV, src2_target, src2);
+                checkGLcall("GL_TEXTURE_ENV, src2_target, src2");
+                glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr2);
+                checkGLcall("GL_TEXTURE_ENV, opr2_target, opr2");
+                glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+                checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+            } else
+                Handled = FALSE;
+                break;
+        case WINED3DTOP_MODULATEINVCOLOR_ADDALPHA:
+            if (GL_SUPPORT(ATI_TEXTURE_ENV_COMBINE3)) {
+                glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_MODULATE_ADD_ATI);
+                checkGLcall("GL_TEXTURE_ENV, comb_target, GL_MODULATE_ADD_ATI");
+                glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+                switch (opr1) {
+                    case GL_SRC_COLOR: opr = GL_ONE_MINUS_SRC_COLOR; break;
+                    case GL_ONE_MINUS_SRC_COLOR: opr = GL_SRC_COLOR; break;
+                    case GL_SRC_ALPHA: opr = GL_ONE_MINUS_SRC_ALPHA; break;
+                    case GL_ONE_MINUS_SRC_ALPHA: opr = GL_SRC_ALPHA; break;
+                }
+                glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr);
+                checkGLcall("GL_TEXTURE_ENV, opr0_target, opr");
+                glTexEnvi(GL_TEXTURE_ENV, src1_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src1_target, src1");
+                switch (opr1) {
+                    case GL_SRC_COLOR: opr = GL_SRC_ALPHA; break;
+                    case GL_ONE_MINUS_SRC_COLOR: opr = GL_ONE_MINUS_SRC_ALPHA; break;
+                    case GL_SRC_ALPHA: opr = GL_SRC_ALPHA; break;
+                    case GL_ONE_MINUS_SRC_ALPHA: opr = GL_ONE_MINUS_SRC_ALPHA; break;
+                }
+                glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr);
+                checkGLcall("GL_TEXTURE_ENV, opr1_target, opr");
+                glTexEnvi(GL_TEXTURE_ENV, src2_target, src2);
+                checkGLcall("GL_TEXTURE_ENV, src2_target, src2");
+                glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr2);
+                checkGLcall("GL_TEXTURE_ENV, opr2_target, opr2");
+                glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+                checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+            } else
+                Handled = FALSE;
+                break;
+        case WINED3DTOP_MULTIPLYADD:
+            if (GL_SUPPORT(ATI_TEXTURE_ENV_COMBINE3)) {
+                glTexEnvi(GL_TEXTURE_ENV, comb_target, GL_MODULATE_ADD_ATI);
+                checkGLcall("GL_TEXTURE_ENV, comb_target, GL_MODULATE_ADD_ATI");
+                glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
+                checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
+                glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr1);
+                checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
+                glTexEnvi(GL_TEXTURE_ENV, src1_target, src3);
+                checkGLcall("GL_TEXTURE_ENV, src1_target, src3");
+                glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr3);
+                checkGLcall("GL_TEXTURE_ENV, opr1_target, opr3");
+                glTexEnvi(GL_TEXTURE_ENV, src2_target, src2);
+                checkGLcall("GL_TEXTURE_ENV, src2_target, src2");
+                glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr2);
+                checkGLcall("GL_TEXTURE_ENV, opr2_target, opr2");
+                glTexEnvi(GL_TEXTURE_ENV, scal_target, 1);
+                checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
+            } else
+                Handled = FALSE;
+                break;
+        case WINED3DTOP_BUMPENVMAPLUMINANCE:
+        case WINED3DTOP_BUMPENVMAP:
+            if(GL_SUPPORT(NV_TEXTURE_SHADER2)) {
+                /* Technically texture shader support without register combiners is possible, but not expected to occur
+                 * on real world cards, so for now a fixme should be enough
+                 */
+                FIXME("Implement bump mapping with GL_NV_texture_shader in non register combiner path\n");
+            }
+        default:
+            Handled = FALSE;
+    }
+
+    if (Handled) {
+        BOOL  combineOK = TRUE;
+        if (GL_SUPPORT(NV_TEXTURE_ENV_COMBINE4)) {
+            DWORD op2;
+
+            if (isAlpha) {
+                op2 = This->stateBlock->textureState[Stage][WINED3DTSS_COLOROP];
+            } else {
+                op2 = This->stateBlock->textureState[Stage][WINED3DTSS_ALPHAOP];
+            }
+
+            /* Note: If COMBINE4 in effect can't go back to combine! */
+            switch (op2) {
+                case WINED3DTOP_ADDSMOOTH:
+                case WINED3DTOP_BLENDTEXTUREALPHAPM:
+                case WINED3DTOP_MODULATEALPHA_ADDCOLOR:
+                case WINED3DTOP_MODULATECOLOR_ADDALPHA:
+                case WINED3DTOP_MODULATEINVALPHA_ADDCOLOR:
+                case WINED3DTOP_MODULATEINVCOLOR_ADDALPHA:
+                case WINED3DTOP_MULTIPLYADD:
+                    /* Ignore those implemented in both cases */
+                    switch (op) {
+                        case WINED3DTOP_SELECTARG1:
+                        case WINED3DTOP_SELECTARG2:
+                            combineOK = FALSE;
+                            Handled   = FALSE;
+                            break;
+                        default:
+                            FIXME("Can't use COMBINE4 and COMBINE together, thisop=%s, otherop=%s, isAlpha(%d)\n", debug_d3dtop(op), debug_d3dtop(op2), isAlpha);
+                            return;
+                    }
+            }
+        }
+
+        if (combineOK) {
+            glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, useext(GL_COMBINE));
+            checkGLcall("GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, useext(GL_COMBINE)");
+
+            return;
+        }
+    }
+
+    /* After all the extensions, if still unhandled, report fixme */
+    FIXME("Unhandled texture operation %s\n", debug_d3dtop(op));
+}
+
+
+static void tex_colorop(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    DWORD stage = (state - STATE_TEXTURESTAGE(0, 0)) / WINED3D_HIGHEST_TEXTURE_STATE;
+    DWORD mapped_stage = stateblock->wineD3DDevice->texUnitMap[stage];
+    BOOL tex_used = stateblock->wineD3DDevice->fixed_function_usage_map[stage];
+
+    TRACE("Setting color op for stage %d\n", stage);
+
+    if (stateblock->pixelShader && stateblock->wineD3DDevice->ps_selected_mode != SHADER_NONE &&
+        ((IWineD3DPixelShaderImpl *)stateblock->pixelShader)->baseShader.function) {
+        /* Using a pixel shader? Don't care for anything here, the shader applying does it */
+        return;
+    }
+
+    if (stage != mapped_stage) WARN("Using non 1:1 mapping: %d -> %d!\n", stage, mapped_stage);
+
+    if (mapped_stage != -1) {
+        if (GL_SUPPORT(ARB_MULTITEXTURE)) {
+            if (tex_used && mapped_stage >= GL_LIMITS(textures)) {
+                FIXME("Attempt to enable unsupported stage!\n");
+                return;
+            }
+            GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB + mapped_stage));
+            checkGLcall("glActiveTextureARB");
+        } else if (stage > 0) {
+            WARN("Program using multiple concurrent textures which this opengl implementation doesn't support\n");
+            return;
+        }
+    }
+
+    if(stage >= stateblock->lowest_disabled_stage) {
+        TRACE("Stage disabled\n");
+        if (mapped_stage != -1) {
+            /* Disable everything here */
+            glDisable(GL_TEXTURE_2D);
+            checkGLcall("glDisable(GL_TEXTURE_2D)");
+            glDisable(GL_TEXTURE_3D);
+            checkGLcall("glDisable(GL_TEXTURE_3D)");
+            if(GL_SUPPORT(ARB_TEXTURE_CUBE_MAP)) {
+                glDisable(GL_TEXTURE_CUBE_MAP_ARB);
+                checkGLcall("glDisable(GL_TEXTURE_CUBE_MAP_ARB)");
+            }
+            if(GL_SUPPORT(ARB_TEXTURE_RECTANGLE)) {
+                glDisable(GL_TEXTURE_RECTANGLE_ARB);
+                checkGLcall("glDisable(GL_TEXTURE_RECTANGLE_ARB)");
+            }
+        }
+        /* All done */
+        return;
+    }
+
+    /* The sampler will also activate the correct texture dimensions, so no need to do it here
+     * if the sampler for this stage is dirty
+     */
+    if(!isStateDirty(context, STATE_SAMPLER(stage))) {
+        if (tex_used) texture_activate_dimensions(stage, stateblock, context);
+    }
+
+    set_tex_op((IWineD3DDevice *)stateblock->wineD3DDevice, FALSE, stage,
+                stateblock->textureState[stage][WINED3DTSS_COLOROP],
+                stateblock->textureState[stage][WINED3DTSS_COLORARG1],
+                stateblock->textureState[stage][WINED3DTSS_COLORARG2],
+                stateblock->textureState[stage][WINED3DTSS_COLORARG0]);
+}
+
+void tex_alphaop(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    DWORD stage = (state - STATE_TEXTURESTAGE(0, 0)) / WINED3D_HIGHEST_TEXTURE_STATE;
+    DWORD mapped_stage = stateblock->wineD3DDevice->texUnitMap[stage];
+    BOOL tex_used = stateblock->wineD3DDevice->fixed_function_usage_map[stage];
+    DWORD op, arg1, arg2, arg0;
+
+    TRACE("Setting alpha op for stage %d\n", stage);
+    /* Do not care for enabled / disabled stages, just assign the settings. colorop disables / enables required stuff */
+    if (mapped_stage != -1) {
+        if (GL_SUPPORT(ARB_MULTITEXTURE)) {
+            if (tex_used && mapped_stage >= GL_LIMITS(textures)) {
+                FIXME("Attempt to enable unsupported stage!\n");
+                return;
+            }
+            GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB + mapped_stage));
+            checkGLcall("glActiveTextureARB");
+        } else if (stage > 0) {
+            /* We can't do anything here */
+            WARN("Program using multiple concurrent textures which this opengl implementation doesn't support\n");
+            return;
+        }
+    }
+
+    op = stateblock->textureState[stage][WINED3DTSS_ALPHAOP];
+    arg1 = stateblock->textureState[stage][WINED3DTSS_ALPHAARG1];
+    arg2 = stateblock->textureState[stage][WINED3DTSS_ALPHAARG2];
+    arg0 = stateblock->textureState[stage][WINED3DTSS_ALPHAARG0];
+
+    if(stateblock->renderState[WINED3DRS_COLORKEYENABLE] && stage == 0 &&
+       stateblock->textures[0] &&
+       (stateblock->textureDimensions[0] == GL_TEXTURE_2D || stateblock->textureDimensions[0] == GL_TEXTURE_RECTANGLE_ARB)) {
+        IWineD3DSurfaceImpl *surf = (IWineD3DSurfaceImpl *) ((IWineD3DTextureImpl *) stateblock->textures[0])->surfaces[0];
+
+        if(surf->CKeyFlags & WINEDDSD_CKSRCBLT &&
+           getFormatDescEntry(surf->resource.format, NULL, NULL)->alphaMask == 0x00000000) {
+
+            /* Color keying needs to pass alpha values from the texture through to have the alpha test work properly.
+             * On the other hand applications can still use texture combiners apparently. This code takes care that apps
+             * cannot remove the texture's alpha channel entirely.
+             *
+             * The fixup is required for Prince of Persia 3D(prison bars), while Moto racer 2 requires D3DTOP_MODULATE to work
+             * on color keyed surfaces. Aliens vs Predator 1 uses color keyed textures and alpha component of diffuse color to
+             * draw things like translucent text and perform other blending effects.
+             *
+             * Aliens vs Predator 1 relies on diffuse alpha having an effect, so it cannot be ignored. To provide the
+             * behavior expected by the game, while emulating the colorkey, diffuse alpha must be modulated with texture alpha.
+             * OTOH, Moto racer 2 at some points sets alphaop/alphaarg to SELECTARG/CURRENT, yet puts garbage in diffuse alpha
+             * (zeroes). This works on native, because the game disables alpha test and alpha blending. Alpha test is overwritten by
+             * wine's for purposes of color-keying though, so this will lead to missing geometry if texture alpha is modulated
+             * (pixels fail alpha test). To get around this, ALPHABLENDENABLE state is checked: if the app enables alpha blending,
+             * it can be expected to provide meaningful values in diffuse alpha, so it should be modulated with texture alpha;
+             * otherwise, selecting diffuse alpha is ignored in favour of texture alpha.
+
+             * What to do with multitexturing? So far no app has been found that uses color keying with multitexturing
+             */
+            if(op == WINED3DTOP_DISABLE) {
+                arg1 = WINED3DTA_TEXTURE;
+                op = WINED3DTOP_SELECTARG1;
+            }
+            else if(op == WINED3DTOP_SELECTARG1 && arg1 != WINED3DTA_TEXTURE) {
+                if (stateblock->renderState[WINED3DRS_ALPHABLENDENABLE]) {
+                    arg2 = WINED3DTA_TEXTURE;
+                    op = WINED3DTOP_MODULATE;
+                }
+                else arg1 = WINED3DTA_TEXTURE;
+            }
+            else if(op == WINED3DTOP_SELECTARG2 && arg2 != WINED3DTA_TEXTURE) {
+                if (stateblock->renderState[WINED3DRS_ALPHABLENDENABLE]) {
+                    arg1 = WINED3DTA_TEXTURE;
+                    op = WINED3DTOP_MODULATE;
+                }
+                else arg2 = WINED3DTA_TEXTURE;
+            }
+        }
+    }
+
+    /* tex_alphaop is shared between the ffp and nvrc because the difference only comes down to
+     * this if block here, and the other code(color keying, texture unit selection) are the same
+     */
+    TRACE("Setting alpha op for stage %d\n", stage);
+    if (GL_SUPPORT(NV_REGISTER_COMBINERS)) {
+        set_tex_op_nvrc((IWineD3DDevice *)stateblock->wineD3DDevice, TRUE, stage,
+                         op, arg1, arg2, arg0,
+                         mapped_stage,
+                         stateblock->textureState[stage][WINED3DTSS_RESULTARG]);
+    } else {
+        set_tex_op((IWineD3DDevice *)stateblock->wineD3DDevice, TRUE, stage,
+                    op, arg1, arg2, arg0);
+    }
+}
+
+static void transform_texture(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    DWORD texUnit = (state - STATE_TEXTURESTAGE(0, 0)) / WINED3D_HIGHEST_TEXTURE_STATE;
+    DWORD mapped_stage = stateblock->wineD3DDevice->texUnitMap[texUnit];
+    BOOL generated;
+    int coordIdx;
+
+    /* Ignore this when a vertex shader is used, or if the streams aren't sorted out yet */
+    if(use_vs(stateblock->wineD3DDevice) ||
+       isStateDirty(context, STATE_VDECL)) {
+        TRACE("Using a vertex shader, or stream sources not sorted out yet, skipping\n");
+        return;
+    }
+
+    if (mapped_stage == -1) return;
+
+    if (GL_SUPPORT(ARB_MULTITEXTURE)) {
+        if(mapped_stage >= GL_LIMITS(textures)) {
+            return;
+        }
+        GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB + mapped_stage));
+        checkGLcall("glActiveTextureARB");
+    } else if (mapped_stage > 0) {
+        /* We can't do anything here */
+        WARN("Program using multiple concurrent textures which this opengl implementation doesn't support\n");
+        return;
+    }
+    generated = (stateblock->textureState[texUnit][WINED3DTSS_TEXCOORDINDEX] & 0xFFFF0000) != WINED3DTSS_TCI_PASSTHRU;
+    coordIdx = min(stateblock->textureState[texUnit][WINED3DTSS_TEXCOORDINDEX & 0x0000FFFF], MAX_TEXTURES - 1);
+
+    set_texture_matrix(&stateblock->transforms[WINED3DTS_TEXTURE0 + texUnit].u.m[0][0],
+                        stateblock->textureState[texUnit][WINED3DTSS_TEXTURETRANSFORMFLAGS],
+                        generated,
+                        context->last_was_rhw,
+                        stateblock->wineD3DDevice->strided_streams.u.s.texCoords[coordIdx].dwStride ?
+                            stateblock->wineD3DDevice->strided_streams.u.s.texCoords[coordIdx].dwType:
+                            WINED3DDECLTYPE_UNUSED,
+                        stateblock->wineD3DDevice->frag_pipe->ffp_proj_control);
+
+    /* The sampler applying function calls us if this changes */
+    if(context->lastWasPow2Texture[texUnit] && stateblock->textures[texUnit]) {
+        if(generated) {
+            FIXME("Non-power2 texture being used with generated texture coords\n");
+        }
+        TRACE("Non power two matrix multiply fixup\n");
+        glMultMatrixf(((IWineD3DTextureImpl *) stateblock->textures[texUnit])->baseTexture.pow2Matrix);
+    }
+}
+
+static void unloadTexCoords(IWineD3DStateBlockImpl *stateblock) {
+    int texture_idx;
+
+    for (texture_idx = 0; texture_idx < GL_LIMITS(texture_stages); ++texture_idx) {
+        GL_EXTCALL(glClientActiveTextureARB(GL_TEXTURE0_ARB + texture_idx));
+        glDisableClientState(GL_TEXTURE_COORD_ARRAY);
+    }
+}
+
+static void loadTexCoords(IWineD3DStateBlockImpl *stateblock, const WineDirect3DVertexStridedData *sd, GLint *curVBO)
+{
+    const UINT *offset = stateblock->streamOffset;
+    unsigned int mapped_stage = 0;
+    unsigned int textureNo = 0;
+
+    /* The code below uses glClientActiveTexture and glMultiTexCoord* which are all part of the GL_ARB_multitexture extension. */
+    /* Abort if we don't support the extension. */
+    if (!GL_SUPPORT(ARB_MULTITEXTURE)) {
+        FIXME("Program using multiple concurrent textures which this opengl implementation doesn't support\n");
+        return;
+    }
+
+    for (textureNo = 0; textureNo < GL_LIMITS(texture_stages); ++textureNo) {
+        int coordIdx = stateblock->textureState[textureNo][WINED3DTSS_TEXCOORDINDEX];
+
+        mapped_stage = stateblock->wineD3DDevice->texUnitMap[textureNo];
+        if (mapped_stage == -1) continue;
+
+        if (coordIdx < MAX_TEXTURES && (sd->u.s.texCoords[coordIdx].lpData || sd->u.s.texCoords[coordIdx].VBO)) {
+            TRACE("Setting up texture %u, idx %d, cordindx %u, data %p\n",
+                    textureNo, mapped_stage, coordIdx, sd->u.s.texCoords[coordIdx].lpData);
+
+            if (*curVBO != sd->u.s.texCoords[coordIdx].VBO) {
+                GL_EXTCALL(glBindBufferARB(GL_ARRAY_BUFFER_ARB, sd->u.s.texCoords[coordIdx].VBO));
+                checkGLcall("glBindBufferARB");
+                *curVBO = sd->u.s.texCoords[coordIdx].VBO;
+            }
+
+            GL_EXTCALL(glClientActiveTextureARB(GL_TEXTURE0_ARB + mapped_stage));
+            checkGLcall("glClientActiveTextureARB");
+
+            /* The coords to supply depend completely on the fvf / vertex shader */
+            glTexCoordPointer(
+                    WINED3D_ATR_SIZE(sd->u.s.texCoords[coordIdx].dwType),
+                    WINED3D_ATR_GLTYPE(sd->u.s.texCoords[coordIdx].dwType),
+                    sd->u.s.texCoords[coordIdx].dwStride,
+                    sd->u.s.texCoords[coordIdx].lpData + stateblock->loadBaseVertexIndex * sd->u.s.texCoords[coordIdx].dwStride + offset[sd->u.s.texCoords[coordIdx].streamNo]);
+            glEnableClientState(GL_TEXTURE_COORD_ARRAY);
+        } else {
+            GL_EXTCALL(glMultiTexCoord4fARB(GL_TEXTURE0_ARB + mapped_stage, 0, 0, 0, 1));
+        }
+    }
+    if (GL_SUPPORT(NV_REGISTER_COMBINERS)) {
+        /* The number of the mapped stages increases monotonically, so it's fine to use the last used one */
+        for (textureNo = mapped_stage + 1; textureNo < GL_LIMITS(textures); ++textureNo) {
+            GL_EXTCALL(glMultiTexCoord4fARB(GL_TEXTURE0_ARB + textureNo, 0, 0, 0, 1));
+        }
+    }
+
+    checkGLcall("loadTexCoords");
+}
+
+static void tex_coordindex(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    DWORD stage = (state - STATE_TEXTURESTAGE(0, 0)) / WINED3D_HIGHEST_TEXTURE_STATE;
+    DWORD mapped_stage = stateblock->wineD3DDevice->texUnitMap[stage];
+    const GLfloat s_plane[] = { 1.0, 0.0, 0.0, 0.0 };
+    const GLfloat t_plane[] = { 0.0, 1.0, 0.0, 0.0 };
+    const GLfloat r_plane[] = { 0.0, 0.0, 1.0, 0.0 };
+    const GLfloat q_plane[] = { 0.0, 0.0, 0.0, 1.0 };
+
+    if (mapped_stage == -1) {
+        TRACE("No texture unit mapped to stage %d. Skipping texture coordinates.\n", stage);
+        return;
+    }
+
+    if (GL_SUPPORT(ARB_MULTITEXTURE)) {
+        if(mapped_stage >= GL_LIMITS(fragment_samplers)) {
+            return;
+        }
+        GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB + mapped_stage));
+        checkGLcall("glActiveTextureARB");
+    } else if (stage > 0) {
+        /* We can't do anything here */
+        WARN("Program using multiple concurrent textures which this opengl implementation doesn't support\n");
+        return;
+    }
+
+    /* Values 0-7 are indexes into the FVF tex coords - See comments in DrawPrimitive
+     *
+     * FIXME: From MSDN: The WINED3DTSS_TCI_* flags are mutually exclusive. If you include
+     * one flag, you can still specify an index value, which the system uses to
+     * determine the texture wrapping mode.
+     * eg. SetTextureStageState( 0, WINED3DTSS_TEXCOORDINDEX, WINED3DTSS_TCI_CAMERASPACEPOSITION | 1 );
+     * means use the vertex position (camera-space) as the input texture coordinates
+     * for this texture stage, and the wrap mode set in the WINED3DRS_WRAP1 render
+     * state. We do not (yet) support the WINED3DRENDERSTATE_WRAPx values, nor tie them up
+     * to the TEXCOORDINDEX value
+     */
+
+    /*
+     * Be careful the value of the mask 0xF0000 come from d3d8types.h infos
+     */
+    switch (stateblock->textureState[stage][WINED3DTSS_TEXCOORDINDEX] & 0xFFFF0000) {
+    case WINED3DTSS_TCI_PASSTHRU:
+        /*Use the specified texture coordinates contained within the vertex format. This value resolves to zero.*/
+        glDisable(GL_TEXTURE_GEN_S);
+        glDisable(GL_TEXTURE_GEN_T);
+        glDisable(GL_TEXTURE_GEN_R);
+        glDisable(GL_TEXTURE_GEN_Q);
+        checkGLcall("glDisable(GL_TEXTURE_GEN_S,T,R,Q)");
+        break;
+
+    case WINED3DTSS_TCI_CAMERASPACEPOSITION:
+        /* CameraSpacePosition means use the vertex position, transformed to camera space,
+         * as the input texture coordinates for this stage's texture transformation. This
+         * equates roughly to EYE_LINEAR
+         */
+        {
+            TRACE("WINED3DTSS_TCI_CAMERASPACEPOSITION - Set eye plane\n");
+
+            glMatrixMode(GL_MODELVIEW);
+            glPushMatrix();
+            glLoadIdentity();
+            glTexGenfv(GL_S, GL_EYE_PLANE, s_plane);
+            glTexGenfv(GL_T, GL_EYE_PLANE, t_plane);
+            glTexGenfv(GL_R, GL_EYE_PLANE, r_plane);
+            glTexGenfv(GL_Q, GL_EYE_PLANE, q_plane);
+            glPopMatrix();
+
+            TRACE("WINED3DTSS_TCI_CAMERASPACEPOSITION - Set GL_TEXTURE_GEN_x and GL_x, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR\n");
+            glEnable(GL_TEXTURE_GEN_S);
+            checkGLcall("glEnable(GL_TEXTURE_GEN_S)");
+            glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
+            checkGLcall("glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR)");
+            glEnable(GL_TEXTURE_GEN_T);
+            checkGLcall("glEnable(GL_TEXTURE_GEN_T)");
+            glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
+            checkGLcall("glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR)");
+            glEnable(GL_TEXTURE_GEN_R);
+            checkGLcall("glEnable(GL_TEXTURE_GEN_R)");
+            glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
+            checkGLcall("glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR)");
+        }
+        break;
+
+    case WINED3DTSS_TCI_CAMERASPACENORMAL:
+        {
+            if (GL_SUPPORT(NV_TEXGEN_REFLECTION)) {
+                TRACE("WINED3DTSS_TCI_CAMERASPACENORMAL - Set eye plane\n");
+
+                glMatrixMode(GL_MODELVIEW);
+                glPushMatrix();
+                glLoadIdentity();
+                glTexGenfv(GL_S, GL_EYE_PLANE, s_plane);
+                glTexGenfv(GL_T, GL_EYE_PLANE, t_plane);
+                glTexGenfv(GL_R, GL_EYE_PLANE, r_plane);
+                glTexGenfv(GL_Q, GL_EYE_PLANE, q_plane);
+                glPopMatrix();
+
+                glEnable(GL_TEXTURE_GEN_S);
+                checkGLcall("glEnable(GL_TEXTURE_GEN_S)");
+                glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP_NV);
+                checkGLcall("glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP_NV)");
+                glEnable(GL_TEXTURE_GEN_T);
+                checkGLcall("glEnable(GL_TEXTURE_GEN_T)");
+                glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP_NV);
+                checkGLcall("glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP_NV)");
+                glEnable(GL_TEXTURE_GEN_R);
+                checkGLcall("glEnable(GL_TEXTURE_GEN_R)");
+                glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP_NV);
+                checkGLcall("glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP_NV)");
+            }
+        }
+        break;
+
+    case WINED3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR:
+        {
+            if (GL_SUPPORT(NV_TEXGEN_REFLECTION)) {
+            TRACE("WINED3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR - Set eye plane\n");
+
+            glMatrixMode(GL_MODELVIEW);
+            glPushMatrix();
+            glLoadIdentity();
+            glTexGenfv(GL_S, GL_EYE_PLANE, s_plane);
+            glTexGenfv(GL_T, GL_EYE_PLANE, t_plane);
+            glTexGenfv(GL_R, GL_EYE_PLANE, r_plane);
+            glTexGenfv(GL_Q, GL_EYE_PLANE, q_plane);
+            glPopMatrix();
+
+            glEnable(GL_TEXTURE_GEN_S);
+            checkGLcall("glEnable(GL_TEXTURE_GEN_S)");
+            glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP_NV);
+            checkGLcall("glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP_NV)");
+            glEnable(GL_TEXTURE_GEN_T);
+            checkGLcall("glEnable(GL_TEXTURE_GEN_T)");
+            glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP_NV);
+            checkGLcall("glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP_NV)");
+            glEnable(GL_TEXTURE_GEN_R);
+            checkGLcall("glEnable(GL_TEXTURE_GEN_R)");
+            glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP_NV);
+            checkGLcall("glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP_NV)");
+            }
+        }
+        break;
+
+    /* Unhandled types: */
+    default:
+        /* Todo: */
+        /* ? disable GL_TEXTURE_GEN_n ? */
+        glDisable(GL_TEXTURE_GEN_S);
+        glDisable(GL_TEXTURE_GEN_T);
+        glDisable(GL_TEXTURE_GEN_R);
+        glDisable(GL_TEXTURE_GEN_Q);
+        FIXME("Unhandled WINED3DTSS_TEXCOORDINDEX %x\n", stateblock->textureState[stage][WINED3DTSS_TEXCOORDINDEX]);
+        break;
+    }
+
+    /* Update the texture matrix */
+    if(!isStateDirty(context, STATE_TRANSFORM(WINED3DTS_TEXTURE0 + stage))) {
+        transform_texture(STATE_TEXTURESTAGE(stage, WINED3DTSS_TEXTURETRANSFORMFLAGS), stateblock, context);
+    }
+
+    if(!isStateDirty(context, STATE_VDECL) && context->namedArraysLoaded) {
+        /* Reload the arrays if we are using fixed function arrays to reflect the selected coord input
+         * source. Call loadTexCoords directly because there is no need to reparse the vertex declaration
+         * and do all the things linked to it
+         * TODO: Tidy that up to reload only the arrays of the changed unit
+         */
+        GLint curVBO = GL_SUPPORT(ARB_VERTEX_BUFFER_OBJECT) ? -1 : 0;
+
+        unloadTexCoords(stateblock);
+        loadTexCoords(stateblock, &stateblock->wineD3DDevice->strided_streams, &curVBO);
+    }
+}
+
+static void shaderconstant(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    IWineD3DDeviceImpl *device = stateblock->wineD3DDevice;
+
+    /* Vertex and pixel shader states will call a shader upload, don't do anything as long one of them
+     * has an update pending
+     */
+    if(isStateDirty(context, STATE_VDECL) ||
+       isStateDirty(context, STATE_PIXELSHADER)) {
+       return;
+    }
+
+    device->shader_backend->shader_load_constants((IWineD3DDevice *) device, use_ps(device), use_vs(device));
+}
+
+static void tex_bumpenvlscale(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    DWORD stage = (state - STATE_TEXTURESTAGE(0, 0)) / WINED3D_HIGHEST_TEXTURE_STATE;
+
+    if(stateblock->pixelShader && stage != 0 &&
+       ((IWineD3DPixelShaderImpl *) stateblock->pixelShader)->baseShader.reg_maps.luminanceparams[stage]) {
+        /* The pixel shader has to know the luminance scale. Do a constants update if it
+         * isn't scheduled anyway
+         */
+        if(!isStateDirty(context, STATE_PIXELSHADERCONSTANT) &&
+           !isStateDirty(context, STATE_PIXELSHADER)) {
+            shaderconstant(STATE_PIXELSHADERCONSTANT, stateblock, context);
+        }
+    }
+}
+
+static void sampler_texmatrix(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    BOOL texIsPow2 = FALSE;
+    DWORD sampler = state - STATE_SAMPLER(0);
+    IWineD3DBaseTexture *texture = stateblock->textures[sampler];
+
+    if(!texture) return;
+    /* The fixed function np2 texture emulation uses the texture matrix to fix up the coordinates
+     * IWineD3DBaseTexture::ApplyStateChanges multiplies the set matrix with a fixup matrix. Before the
+     * scaling is reapplied or removed, the texture matrix has to be reapplied
+     *
+     * The mapped stage is already active because the sampler() function below, which is part of the
+     * misc pipeline
+     */
+    if(sampler < MAX_TEXTURES) {
+        if(stateblock->textureDimensions[sampler] == GL_TEXTURE_2D ||
+           stateblock->textureDimensions[sampler] == GL_TEXTURE_RECTANGLE_ARB) {
+            if(((IWineD3DTextureImpl *)texture)->baseTexture.pow2Matrix[0] != 1.0 ||
+               ((IWineD3DTextureImpl *)texture)->baseTexture.pow2Matrix[5] != 1.0 ) {
+                texIsPow2 = TRUE;
+            }
+        } else if(stateblock->textureDimensions[sampler] == GL_TEXTURE_CUBE_MAP_ARB) {
+            if(((IWineD3DCubeTextureImpl *)texture)->baseTexture.pow2Matrix[0] != 1.0) {
+                texIsPow2 = TRUE;
+            }
+        }
+
+        if(texIsPow2 || context->lastWasPow2Texture[sampler]) {
+            context->lastWasPow2Texture[sampler] = texIsPow2;
+            transform_texture(STATE_TEXTURESTAGE(stateblock->wineD3DDevice->texUnitMap[sampler], WINED3DTSS_TEXTURETRANSFORMFLAGS), stateblock, context);
+        }
+    }
+}
+
+static void sampler(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    DWORD sampler = state - STATE_SAMPLER(0);
+    DWORD mapped_stage = stateblock->wineD3DDevice->texUnitMap[sampler];
+    union {
+        float f;
+        DWORD d;
+    } tmpvalue;
+
+    TRACE("Sampler: %d\n", sampler);
+    /* Enabling and disabling texture dimensions is done by texture stage state / pixel shader setup, this function
+     * only has to bind textures and set the per texture states
+     */
+
+    if (mapped_stage == -1) {
+        TRACE("No sampler mapped to stage %d. Returning.\n", sampler);
+        return;
+    }
+
+    if (GL_SUPPORT(ARB_MULTITEXTURE)) {
+        if (mapped_stage >= GL_LIMITS(combined_samplers)) {
+            return;
+        }
+        GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB + mapped_stage));
+        checkGLcall("glActiveTextureARB");
+    } else if (sampler > 0) {
+        /* We can't do anything here */
+        WARN("Program using multiple concurrent textures which this opengl implementation doesn't support\n");
+        return;
+    }
+
+    if(stateblock->textures[sampler]) {
+        IWineD3DBaseTexture_PreLoad(stateblock->textures[sampler]);
+        IWineD3DBaseTexture_BindTexture(stateblock->textures[sampler]);
+        IWineD3DBaseTexture_ApplyStateChanges(stateblock->textures[sampler], stateblock->textureState[sampler], stateblock->samplerState[sampler]);
+
+        if (GL_SUPPORT(EXT_TEXTURE_LOD_BIAS)) {
+            tmpvalue.d = stateblock->samplerState[sampler][WINED3DSAMP_MIPMAPLODBIAS];
+            glTexEnvf(GL_TEXTURE_FILTER_CONTROL_EXT,
+                      GL_TEXTURE_LOD_BIAS_EXT,
+                      tmpvalue.f);
+            checkGLcall("glTexEnvi(GL_TEXTURE_LOD_BIAS_EXT, ...)");
+        }
+
+        if(!use_ps(stateblock->wineD3DDevice) && sampler < stateblock->lowest_disabled_stage) {
+            if(stateblock->renderState[WINED3DRS_COLORKEYENABLE] && sampler == 0) {
+                /* If color keying is enabled update the alpha test, it depends on the existence
+                 * of a color key in stage 0
+                 */
+                state_alpha(WINED3DRS_COLORKEYENABLE, stateblock, context);
+            }
+        }
+    } else if(mapped_stage < GL_LIMITS(textures)) {
+        if(sampler < stateblock->lowest_disabled_stage) {
+            /* TODO: What should I do with pixel shaders here ??? */
+            if(stateblock->renderState[WINED3DRS_COLORKEYENABLE] && sampler == 0) {
+                /* If color keying is enabled update the alpha test, it depends on the existence
+                * of a color key in stage 0
+                */
+                state_alpha(WINED3DRS_COLORKEYENABLE, stateblock, context);
+            }
+        } /* Otherwise tex_colorop disables the stage */
+        glBindTexture(GL_TEXTURE_2D, stateblock->wineD3DDevice->dummyTextureName[sampler]);
+        checkGLcall("glBindTexture(GL_TEXTURE_2D, stateblock->wineD3DDevice->dummyTextureName[sampler])");
+    }
+}
+
+static void apply_pshader_fog(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    IWineD3DDeviceImpl *device = stateblock->wineD3DDevice;
+
+    if (use_ps(device)) {
+        if(!context->last_was_pshader) {
+            state_fog(state, stateblock, context);
+        }
+        context->last_was_pshader = TRUE;
+    } else {
+        if(context->last_was_pshader) {
+            state_fog(state, stateblock, context);
+        }
+        context->last_was_pshader = FALSE;
+    }
+}
+
+void apply_pixelshader(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    IWineD3DDeviceImpl *device = stateblock->wineD3DDevice;
+    BOOL use_pshader = use_ps(device);
+    BOOL use_vshader = use_vs(device);
+    int i;
+
+    if (use_pshader) {
+        if(!context->last_was_pshader) {
+            /* Former draw without a pixel shader, some samplers
+             * may be disabled because of WINED3DTSS_COLOROP = WINED3DTOP_DISABLE
+             * make sure to enable them
+             */
+            for(i=0; i < MAX_FRAGMENT_SAMPLERS; i++) {
+                if(!isStateDirty(context, STATE_SAMPLER(i))) {
+                    sampler(STATE_SAMPLER(i), stateblock, context);
+                }
+            }
+        } else {
+           /* Otherwise all samplers were activated by the code above in earlier draws, or by sampler()
+            * if a different texture was bound. I don't have to do anything.
+            */
+        }
+    } else {
+        /* Disabled the pixel shader - color ops weren't applied
+         * while it was enabled, so re-apply them.
+         */
+        for(i=0; i < MAX_TEXTURES; i++) {
+            if(!isStateDirty(context, STATE_TEXTURESTAGE(i, WINED3DTSS_COLOROP))) {
+                device->StateTable[STATE_TEXTURESTAGE(i, WINED3DTSS_COLOROP)].apply
+                        (STATE_TEXTURESTAGE(i, WINED3DTSS_COLOROP), stateblock, context);
+            }
+        }
+    }
+
+    if(!isStateDirty(context, device->StateTable[STATE_VSHADER].representative)) {
+        device->shader_backend->shader_select((IWineD3DDevice *)stateblock->wineD3DDevice, use_pshader, use_vshader);
+
+        if (!isStateDirty(context, STATE_VERTEXSHADERCONSTANT) && (use_vshader || use_pshader)) {
+            shaderconstant(STATE_VERTEXSHADERCONSTANT, stateblock, context);
+        }
+    }
+}
+
+static void shader_bumpenvmat(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    DWORD stage = (state - STATE_TEXTURESTAGE(0, 0)) / WINED3D_HIGHEST_TEXTURE_STATE;
+    if(stateblock->pixelShader && stage != 0 &&
+       ((IWineD3DPixelShaderImpl *) stateblock->pixelShader)->baseShader.reg_maps.bumpmat[stage]) {
+        /* The pixel shader has to know the bump env matrix. Do a constants update if it isn't scheduled
+         * anyway
+         */
+        if(!isStateDirty(context, STATE_PIXELSHADERCONSTANT) &&
+            !isStateDirty(context, STATE_PIXELSHADER)) {
+            shaderconstant(STATE_PIXELSHADERCONSTANT, stateblock, context);
+        }
+    }
+}
+
+static void transform_world(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    /* This function is called by transform_view below if the view matrix was changed too
+     *
+     * Deliberately no check if the vertex declaration is dirty because the vdecl state
+     * does not always update the world matrix, only on a switch between transformed
+     * and untransformed draws. It *may* happen that the world matrix is set 2 times during one
+     * draw, but that should be rather rare and cheaper in total.
+     */
+    glMatrixMode(GL_MODELVIEW);
+    checkGLcall("glMatrixMode");
+
+    if(context->last_was_rhw) {
+        glLoadIdentity();
+        checkGLcall("glLoadIdentity()");
+    } else {
+        /* In the general case, the view matrix is the identity matrix */
+        if (stateblock->wineD3DDevice->view_ident) {
+            glLoadMatrixf(&stateblock->transforms[WINED3DTS_WORLDMATRIX(0)].u.m[0][0]);
+            checkGLcall("glLoadMatrixf");
+        } else {
+            glLoadMatrixf(&stateblock->transforms[WINED3DTS_VIEW].u.m[0][0]);
+            checkGLcall("glLoadMatrixf");
+            glMultMatrixf(&stateblock->transforms[WINED3DTS_WORLDMATRIX(0)].u.m[0][0]);
+            checkGLcall("glMultMatrixf");
+        }
+    }
+}
+
+static void clipplane(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    UINT index = state - STATE_CLIPPLANE(0);
+
+    if(isStateDirty(context, STATE_TRANSFORM(WINED3DTS_VIEW)) || index >= GL_LIMITS(clipplanes)) {
+        return;
+    }
+
+    /* Clip Plane settings are affected by the model view in OpenGL, the View transform in direct3d */
+    glMatrixMode(GL_MODELVIEW);
+    glPushMatrix();
+    glLoadMatrixf(&stateblock->transforms[WINED3DTS_VIEW].u.m[0][0]);
+
+    TRACE("Clipplane [%f,%f,%f,%f]\n",
+          stateblock->clipplane[index][0],
+          stateblock->clipplane[index][1],
+          stateblock->clipplane[index][2],
+          stateblock->clipplane[index][3]);
+    glClipPlane(GL_CLIP_PLANE0 + index, stateblock->clipplane[index]);
+    checkGLcall("glClipPlane");
+
+    glPopMatrix();
+}
+
+static void transform_worldex(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    UINT matrix = state - STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(0));
+    GLenum glMat;
+    TRACE("Setting world matrix %d\n", matrix);
+
+    if(matrix >= GL_LIMITS(blends)) {
+        WARN("Unsupported blend matrix set\n");
+        return;
+    } else if(isStateDirty(context, STATE_TRANSFORM(WINED3DTS_VIEW))) {
+        return;
+    }
+
+    /* GL_MODELVIEW0_ARB:  0x1700
+     * GL_MODELVIEW1_ARB:  0x850a
+     * GL_MODELVIEW2_ARB:  0x8722
+     * GL_MODELVIEW3_ARB:  0x8723
+     * etc
+     * GL_MODELVIEW31_ARB: 0x873F
+     */
+    if(matrix == 1) glMat = GL_MODELVIEW1_ARB;
+    else glMat = GL_MODELVIEW2_ARB - 2 + matrix;
+
+    glMatrixMode(glMat);
+    checkGLcall("glMatrixMode(glMat)");
+
+    /* World matrix 0 is multiplied with the view matrix because d3d uses 3 matrices while gl uses only 2. To avoid
+     * weighting the view matrix incorrectly it has to be multiplied into every gl modelview matrix
+     */
+    if(stateblock->wineD3DDevice->view_ident) {
+        glLoadMatrixf(&stateblock->transforms[WINED3DTS_WORLDMATRIX(matrix)].u.m[0][0]);
+        checkGLcall("glLoadMatrixf");
+    } else {
+        glLoadMatrixf(&stateblock->transforms[WINED3DTS_VIEW].u.m[0][0]);
+        checkGLcall("glLoadMatrixf");
+        glMultMatrixf(&stateblock->transforms[WINED3DTS_WORLDMATRIX(matrix)].u.m[0][0]);
+        checkGLcall("glMultMatrixf");
+    }
+}
+
+static void state_vertexblend_w(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    static BOOL once = FALSE;
+
+    switch(stateblock->renderState[WINED3DRS_VERTEXBLEND]) {
+        case WINED3DVBF_1WEIGHTS:
+        case WINED3DVBF_2WEIGHTS:
+        case WINED3DVBF_3WEIGHTS:
+            if(!once) {
+                once = TRUE;
+                /* TODO: Implement vertex blending in drawStridedSlow */
+                FIXME("Vertex blending enabled, but not supported by hardware\n");
+            }
+            break;
+
+        case WINED3DVBF_TWEENING:
+            WARN("Tweening not supported yet\n");
+    }
+}
+
+static void state_vertexblend(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    WINED3DVERTEXBLENDFLAGS val = stateblock->renderState[WINED3DRS_VERTEXBLEND];
+
+    switch(val) {
+        case WINED3DVBF_1WEIGHTS:
+        case WINED3DVBF_2WEIGHTS:
+        case WINED3DVBF_3WEIGHTS:
+            glEnable(GL_VERTEX_BLEND_ARB);
+            checkGLcall("glEnable(GL_VERTEX_BLEND_ARB)");
+
+            /* D3D adds one more matrix which has weight (1 - sum(weights)). This is enabled at context
+             * creation with enabling GL_WEIGHT_SUM_UNITY_ARB.
+             */
+            GL_EXTCALL(glVertexBlendARB(stateblock->renderState[WINED3DRS_VERTEXBLEND] + 1));
+
+            if(!stateblock->wineD3DDevice->vertexBlendUsed) {
+                int i;
+                for(i = 1; i < GL_LIMITS(blends); i++) {
+                    if(!isStateDirty(context, STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(i)))) {
+                        transform_worldex(STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(i)), stateblock, context);
+                    }
+                }
+                stateblock->wineD3DDevice->vertexBlendUsed = TRUE;
+            }
+            break;
+
+        case WINED3DVBF_DISABLE:
+        case WINED3DVBF_0WEIGHTS: /* for Indexed vertex blending - not supported */
+            glDisable(GL_VERTEX_BLEND_ARB);
+            checkGLcall("glDisable(GL_VERTEX_BLEND_ARB)");
+            break;
+
+        case WINED3DVBF_TWEENING:
+            /* Just set the vertex weight for weight 0, enable vertex blending and hope the app doesn't have
+             * vertex weights in the vertices?
+             * For now we don't report that as supported, so a warn should suffice
+             */
+            WARN("Tweening not supported yet\n");
+            break;
+    }
+}
+
+static void transform_view(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    unsigned int k;
+
+    /* If we are changing the View matrix, reset the light and clipping planes to the new view
+     * NOTE: We have to reset the positions even if the light/plane is not currently
+     *       enabled, since the call to enable it will not reset the position.
+     * NOTE2: Apparently texture transforms do NOT need reapplying
+     */
+
+    const PLIGHTINFOEL *light = NULL;
+
+    glMatrixMode(GL_MODELVIEW);
+    checkGLcall("glMatrixMode(GL_MODELVIEW)");
+    glLoadMatrixf(&stateblock->transforms[WINED3DTS_VIEW].u.m[0][0]);
+    checkGLcall("glLoadMatrixf(...)");
+
+    /* Reset lights. TODO: Call light apply func */
+    for(k = 0; k < stateblock->wineD3DDevice->maxConcurrentLights; k++) {
+        light = stateblock->activeLights[k];
+        if(!light) continue;
+        glLightfv(GL_LIGHT0 + light->glIndex, GL_POSITION, light->lightPosn);
+        checkGLcall("glLightfv posn");
+        glLightfv(GL_LIGHT0 + light->glIndex, GL_SPOT_DIRECTION, light->lightDirn);
+        checkGLcall("glLightfv dirn");
+    }
+
+    /* Reset Clipping Planes  */
+    for (k = 0; k < GL_LIMITS(clipplanes); k++) {
+        if(!isStateDirty(context, STATE_CLIPPLANE(k))) {
+            clipplane(STATE_CLIPPLANE(k), stateblock, context);
+        }
+    }
+
+    if(context->last_was_rhw) {
+        glLoadIdentity();
+        checkGLcall("glLoadIdentity()");
+        /* No need to update the world matrix, the identity is fine */
+        return;
+    }
+
+    /* Call the world matrix state, this will apply the combined WORLD + VIEW matrix
+     * No need to do it here if the state is scheduled for update.
+     */
+    if(!isStateDirty(context, STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(0)))) {
+        transform_world(STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(0)), stateblock, context);
+    }
+
+    /* Avoid looping over a number of matrices if the app never used the functionality */
+    if(stateblock->wineD3DDevice->vertexBlendUsed) {
+        for(k = 1; k < GL_LIMITS(blends); k++) {
+            if(!isStateDirty(context, STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(k)))) {
+                transform_worldex(STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(k)), stateblock, context);
+            }
+        }
+    }
+}
+
+static void transform_projection(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    glMatrixMode(GL_PROJECTION);
+    checkGLcall("glMatrixMode(GL_PROJECTION)");
+    glLoadIdentity();
+    checkGLcall("glLoadIdentity");
+
+    if(context->last_was_rhw) {
+        double X, Y, height, width, minZ, maxZ;
+
+        X      = stateblock->viewport.X;
+        Y      = stateblock->viewport.Y;
+        height = stateblock->viewport.Height;
+        width  = stateblock->viewport.Width;
+        minZ   = stateblock->viewport.MinZ;
+        maxZ   = stateblock->viewport.MaxZ;
+
+        if(!stateblock->wineD3DDevice->untransformed) {
+            /* Transformed vertices are supposed to bypass the whole transform pipeline including
+             * frustum clipping. This can't be done in opengl, so this code adjusts the Z range to
+             * suppress depth clipping. This can be done because it is an orthogonal projection and
+             * the Z coordinate does not affect the size of the primitives. Half Life 1 and Prince of
+             * Persia 3D need this.
+             *
+             * Note that using minZ and maxZ here doesn't entirely fix the problem, since view frustum
+             * clipping is still enabled, but it seems to fix it for all apps tested so far. A minor
+             * problem can be witnessed in half-life 1 engine based games, the weapon is clipped close
+             * to the viewer.
+             *
+             * Also note that this breaks z comparison against z values filled in with clear,
+             * but no app depending on that and disabled clipping has been found yet. Comparing
+             * primitives against themselves works, so the Z buffer is still intact for normal hidden
+             * surface removal.
+             *
+             * We could disable clipping entirely by setting the near to infinity and far to -infinity,
+             * but this would break Z buffer operation. Raising the range to something less than
+             * infinity would help a bit at the cost of Z precision, but it wouldn't eliminate the
+             * problem either.
+             */
+            TRACE("Calling glOrtho with %f, %f, %f, %f\n", width, height, -minZ, -maxZ);
+            if(stateblock->wineD3DDevice->render_offscreen) {
+                glOrtho(X, X + width, -Y, -Y - height, -minZ, -maxZ);
+            } else {
+                glOrtho(X, X + width, Y + height, Y, -minZ, -maxZ);
+            }
+        } else {
+            /* If the app mixes transformed and untransformed primitives we can't use the coordinate system
+             * trick above because this would mess up transformed and untransformed Z order. Pass the z position
+             * unmodified to opengl.
+             *
+             * If the app depends on mixed types and disabled clipping we're out of luck without a pipeline
+             * replacement shader.
+             */
+            TRACE("Calling glOrtho with %f, %f, %f, %f\n", width, height, 1.0, -1.0);
+            if(stateblock->wineD3DDevice->render_offscreen) {
+                glOrtho(X, X + width, -Y, -Y - height, 0.0, -1.0);
+            } else {
+                glOrtho(X, X + width, Y + height, Y, 0.0, -1.0);
+            }
+        }
+        checkGLcall("glOrtho");
+
+        /* Window Coord 0 is the middle of the first pixel, so translate by 1/2 pixels */
+        glTranslatef(0.5, 0.5, 0);
+        checkGLcall("glTranslatef(0.5, 0.5, 0)");
+        /* D3D texture coordinates are flipped compared to OpenGL ones, so
+         * render everything upside down when rendering offscreen. */
+        if (stateblock->wineD3DDevice->render_offscreen) {
+            glScalef(1.0, -1.0, 1.0);
+            checkGLcall("glScalef");
+        }
+    } else {
+        /* The rule is that the window coordinate 0 does not correspond to the
+            beginning of the first pixel, but the center of the first pixel.
+            As a consequence if you want to correctly draw one line exactly from
+            the left to the right end of the viewport (with all matrices set to
+            be identity), the x coords of both ends of the line would be not
+            -1 and 1 respectively but (-1-1/viewport_widh) and (1-1/viewport_width)
+            instead.
+
+            1.0 / Width is used because the coord range goes from -1.0 to 1.0, then we
+            divide by the Width/Height, so we need the half range(1.0) to translate by
+            half a pixel.
+
+            The other fun is that d3d's output z range after the transformation is [0;1],
+            but opengl's is [-1;1]. Since the z buffer is in range [0;1] for both, gl
+            scales [-1;1] to [0;1]. This would mean that we end up in [0.5;1] and loose a lot
+            of Z buffer precision and the clear values do not match in the z test. Thus scale
+            [0;1] to [-1;1], so when gl undoes that we utilize the full z range
+         */
+
+        /*
+         * Careful with the order of operations here, we're essentially working backwards:
+         * x = x + 1/w;
+         * y = (y - 1/h) * flip;
+         * z = z * 2 - 1;
+         *
+         * Becomes:
+         * glTranslatef(0.0, 0.0, -1.0);
+         * glScalef(1.0, 1.0, 2.0);
+         *
+         * glScalef(1.0, flip, 1.0);
+         * glTranslatef(1/w, -1/h, 0.0);
+         *
+         * This is equivalent to:
+         * glTranslatef(1/w, -flip/h, -1.0)
+         * glScalef(1.0, flip, 2.0);
+         */
+
+        if (stateblock->wineD3DDevice->render_offscreen) {
+            /* D3D texture coordinates are flipped compared to OpenGL ones, so
+             * render everything upside down when rendering offscreen. */
+            glTranslatef(1.0 / stateblock->viewport.Width, 1.0 / stateblock->viewport.Height, -1.0);
+            checkGLcall("glTranslatef(1.0 / width, 1.0 / height, -1.0)");
+            glScalef(1.0, -1.0, 2.0);
+        } else {
+            glTranslatef(1.0 / stateblock->viewport.Width, -1.0 / stateblock->viewport.Height, -1.0);
+            checkGLcall("glTranslatef(1.0 / width, -1.0 / height, -1.0)");
+            glScalef(1.0, 1.0, 2.0);
+        }
+        checkGLcall("glScalef");
+
+        glMultMatrixf(&stateblock->transforms[WINED3DTS_PROJECTION].u.m[0][0]);
+        checkGLcall("glLoadMatrixf");
+    }
+}
+
+/* This should match any arrays loaded in loadVertexData.
+ * stateblock impl is required for GL_SUPPORT
+ * TODO: Only load / unload arrays if we have to.
+ */
+static inline void unloadVertexData(IWineD3DStateBlockImpl *stateblock) {
+    glDisableClientState(GL_VERTEX_ARRAY);
+    glDisableClientState(GL_NORMAL_ARRAY);
+    glDisableClientState(GL_COLOR_ARRAY);
+    if (GL_SUPPORT(EXT_SECONDARY_COLOR)) {
+        glDisableClientState(GL_SECONDARY_COLOR_ARRAY_EXT);
+    }
+    if (GL_SUPPORT(ARB_VERTEX_BLEND)) {
+        glDisableClientState(GL_WEIGHT_ARRAY_ARB);
+    }
+    unloadTexCoords(stateblock);
+}
+
+/* This should match any arrays loaded in loadNumberedArrays
+ * TODO: Only load / unload arrays if we have to.
+ */
+static inline void unloadNumberedArrays(IWineD3DStateBlockImpl *stateblock) {
+    /* disable any attribs (this is the same for both GLSL and ARB modes) */
+    GLint maxAttribs = 16;
+    int i;
+
+    /* Leave all the attribs disabled */
+    glGetIntegerv(GL_MAX_VERTEX_ATTRIBS_ARB, &maxAttribs);
+    /* MESA does not support it right not */
+    if (glGetError() != GL_NO_ERROR)
+        maxAttribs = 16;
+    for (i = 0; i < maxAttribs; ++i) {
+        GL_EXTCALL(glDisableVertexAttribArrayARB(i));
+        checkGLcall("glDisableVertexAttribArrayARB(reg)");
+        /* Some Windows drivers(NV GF 7) use the latest value that was used when drawing with the now
+         * deactivated stream disabled, some other drivers(ATI, NV GF 8) set the undefined values to 0x00.
+         * Let's set them to 0x00 to avoid hitting some undefined aspects of OpenGL. All that is really
+         * important here is the glDisableVertexAttribArrayARB call above. The test shows that the refrast
+         * keeps dereferencing the pointers, which would cause crashes in some games like Half Life 2: Episode Two.
+         */
+        GL_EXTCALL(glVertexAttrib4NubARB(i, 0, 0, 0, 0));
+        checkGLcall("glVertexAttrib4NubARB(i, 0, 0, 0, 0)");
+    }
+}
+
+static inline void loadNumberedArrays(IWineD3DStateBlockImpl *stateblock, const WineDirect3DVertexStridedData *strided)
+{
+    GLint curVBO = GL_SUPPORT(ARB_VERTEX_BUFFER_OBJECT) ? -1 : 0;
+    int i;
+    const UINT *offset = stateblock->streamOffset;
+    IWineD3DVertexBufferImpl *vb;
+    DWORD_PTR shift_index;
+
+    /* Default to no instancing */
+    stateblock->wineD3DDevice->instancedDraw = FALSE;
+
+    for (i = 0; i < MAX_ATTRIBS; i++) {
+
+        if (!strided->u.input[i].lpData && !strided->u.input[i].VBO)
+            continue;
+
+        /* Do not load instance data. It will be specified using glTexCoord by drawprim */
+        if(stateblock->streamFlags[strided->u.input[i].streamNo] & WINED3DSTREAMSOURCE_INSTANCEDATA) {
+            GL_EXTCALL(glDisableVertexAttribArrayARB(i));
+            stateblock->wineD3DDevice->instancedDraw = TRUE;
+            continue;
+        }
+
+        TRACE_(d3d_shader)("Loading array %u [VBO=%u]\n", i, strided->u.input[i].VBO);
+
+        if(strided->u.input[i].dwStride) {
+            if(curVBO != strided->u.input[i].VBO) {
+                GL_EXTCALL(glBindBufferARB(GL_ARRAY_BUFFER_ARB, strided->u.input[i].VBO));
+                checkGLcall("glBindBufferARB");
+                curVBO = strided->u.input[i].VBO;
+            }
+            vb = (IWineD3DVertexBufferImpl *) stateblock->streamSource[strided->u.input[i].streamNo];
+            /* Use the VBO to find out if a vertex buffer exists, not the vb pointer. vb can point to a
+             * user pointer data blob. In that case curVBO will be 0. If there is a vertex buffer but no
+             * vbo we won't be load converted attributes anyway
+             */
+            if(curVBO && vb->conv_shift) {
+                TRACE("Loading attribute from shifted buffer\n");
+                TRACE("Attrib %d has original stride %d, new stride %d\n", i, strided->u.input[i].dwStride, vb->conv_stride);
+                TRACE("Original offset %p, additional offset 0x%08x\n",strided->u.input[i].lpData, vb->conv_shift[(DWORD_PTR) strided->u.input[i].lpData]);
+                TRACE("Opengl type %x\n", WINED3D_ATR_GLTYPE(strided->u.input[i].dwType));
+                shift_index = ((DWORD_PTR) strided->u.input[i].lpData + offset[strided->u.input[i].streamNo]);
+                shift_index = shift_index % strided->u.input[i].dwStride;
+                GL_EXTCALL(glVertexAttribPointerARB(i,
+                                WINED3D_ATR_SIZE(strided->u.input[i].dwType),
+                                WINED3D_ATR_GLTYPE(strided->u.input[i].dwType),
+                                WINED3D_ATR_NORMALIZED(strided->u.input[i].dwType),
+                                vb->conv_stride,
+
+                                strided->u.input[i].lpData + vb->conv_shift[shift_index] +
+                                stateblock->loadBaseVertexIndex * strided->u.input[i].dwStride +
+                                offset[strided->u.input[i].streamNo]));
+
+            } else {
+                GL_EXTCALL(glVertexAttribPointerARB(i,
+                                WINED3D_ATR_SIZE(strided->u.input[i].dwType),
+                                WINED3D_ATR_GLTYPE(strided->u.input[i].dwType),
+                                WINED3D_ATR_NORMALIZED(strided->u.input[i].dwType),
+                                strided->u.input[i].dwStride,
+
+                                strided->u.input[i].lpData +
+                                stateblock->loadBaseVertexIndex * strided->u.input[i].dwStride +
+                                offset[strided->u.input[i].streamNo]) );
+                }
+            GL_EXTCALL(glEnableVertexAttribArrayARB(i));
+        } else {
+            /* Stride = 0 means always the same values. glVertexAttribPointerARB doesn't do that. Instead disable the pointer and
+             * set up the attribute statically. But we have to figure out the system memory address.
+             */
+            const BYTE *ptr = strided->u.input[i].lpData + offset[strided->u.input[i].streamNo];
+            if(strided->u.input[i].VBO) {
+                vb = (IWineD3DVertexBufferImpl *) stateblock->streamSource[strided->u.input[i].streamNo];
+                ptr += (long) vb->resource.allocatedMemory;
+            }
+            GL_EXTCALL(glDisableVertexAttribArrayARB(i));
+
+            switch(strided->u.input[i].dwType) {
+                case WINED3DDECLTYPE_FLOAT1:
+                    GL_EXTCALL(glVertexAttrib1fvARB(i, (const GLfloat *)ptr));
+                    break;
+                case WINED3DDECLTYPE_FLOAT2:
+                    GL_EXTCALL(glVertexAttrib2fvARB(i, (const GLfloat *)ptr));
+                    break;
+                case WINED3DDECLTYPE_FLOAT3:
+                    GL_EXTCALL(glVertexAttrib3fvARB(i, (const GLfloat *)ptr));
+                    break;
+                case WINED3DDECLTYPE_FLOAT4:
+                    GL_EXTCALL(glVertexAttrib4fvARB(i, (const GLfloat *)ptr));
+                    break;
+
+                case WINED3DDECLTYPE_UBYTE4:
+                    GL_EXTCALL(glVertexAttrib4NubvARB(i, ptr));
+                    break;
+                case WINED3DDECLTYPE_UBYTE4N:
+                case WINED3DDECLTYPE_D3DCOLOR:
+                    GL_EXTCALL(glVertexAttrib4NubvARB(i, ptr));
+                    break;
+
+                case WINED3DDECLTYPE_SHORT2:
+                    GL_EXTCALL(glVertexAttrib4svARB(i, (const GLshort *)ptr));
+                    break;
+                case WINED3DDECLTYPE_SHORT4:
+                    GL_EXTCALL(glVertexAttrib4svARB(i, (const GLshort *)ptr));
+                    break;
+
+                case WINED3DDECLTYPE_SHORT2N:
+                {
+                    const GLshort s[4] = {((const GLshort *)ptr)[0], ((const GLshort *)ptr)[1], 0, 1};
+                    GL_EXTCALL(glVertexAttrib4NsvARB(i, s));
+                    break;
+                }
+                case WINED3DDECLTYPE_USHORT2N:
+                {
+                    const GLushort s[4] = {((const GLushort *)ptr)[0], ((const GLushort *)ptr)[1], 0, 1};
+                    GL_EXTCALL(glVertexAttrib4NusvARB(i, s));
+                    break;
+                }
+                case WINED3DDECLTYPE_SHORT4N:
+                    GL_EXTCALL(glVertexAttrib4NsvARB(i, (const GLshort *)ptr));
+                    break;
+                case WINED3DDECLTYPE_USHORT4N:
+                    GL_EXTCALL(glVertexAttrib4NusvARB(i, (const GLushort *)ptr));
+                    break;
+
+                case WINED3DDECLTYPE_UDEC3:
+                    FIXME("Unsure about WINED3DDECLTYPE_UDEC3\n");
+                    /*glVertexAttrib3usvARB(i, (const GLushort *)ptr); Does not exist */
+                    break;
+                case WINED3DDECLTYPE_DEC3N:
+                    FIXME("Unsure about WINED3DDECLTYPE_DEC3N\n");
+                    /*glVertexAttrib3NusvARB(i, (const GLushort *)ptr); Does not exist */
+                    break;
+
+                case WINED3DDECLTYPE_FLOAT16_2:
+                    /* Are those 16 bit floats. C doesn't have a 16 bit float type. I could read the single bits and calculate a 4
+                     * byte float according to the IEEE standard
+                     */
+                    FIXME("Unsupported WINED3DDECLTYPE_FLOAT16_2\n");
+                    break;
+                case WINED3DDECLTYPE_FLOAT16_4:
+                    FIXME("Unsupported WINED3DDECLTYPE_FLOAT16_4\n");
+                    break;
+
+                case WINED3DDECLTYPE_UNUSED:
+                default:
+                    ERR("Unexpected declaration in stride 0 attributes\n");
+                    break;
+
+            }
+        }
+    }
+    checkGLcall("Loading numbered arrays");
+}
+
+/* Used from 2 different functions, and too big to justify making it inlined */
+static void loadVertexData(IWineD3DStateBlockImpl *stateblock, const WineDirect3DVertexStridedData *sd)
+{
+    const UINT *offset = stateblock->streamOffset;
+    GLint curVBO = GL_SUPPORT(ARB_VERTEX_BUFFER_OBJECT) ? -1 : 0;
+
+    TRACE("Using fast vertex array code\n");
+
+    /* This is fixed function pipeline only, and the fixed function pipeline doesn't do instancing */
+    stateblock->wineD3DDevice->instancedDraw = FALSE;
+
+    /* Blend Data ---------------------------------------------- */
+    if( (sd->u.s.blendWeights.lpData) || (sd->u.s.blendWeights.VBO) ||
+        (sd->u.s.blendMatrixIndices.lpData) || (sd->u.s.blendMatrixIndices.VBO) ) {
+
+        if (GL_SUPPORT(ARB_VERTEX_BLEND)) {
+            TRACE("Blend %d %p %d\n", WINED3D_ATR_SIZE(sd->u.s.blendWeights.dwType),
+                sd->u.s.blendWeights.lpData + stateblock->loadBaseVertexIndex * sd->u.s.blendWeights.dwStride, sd->u.s.blendWeights.dwStride + offset[sd->u.s.blendWeights.streamNo]);
+
+            glEnableClientState(GL_WEIGHT_ARRAY_ARB);
+            checkGLcall("glEnableClientState(GL_WEIGHT_ARRAY_ARB)");
+
+            GL_EXTCALL(glVertexBlendARB(WINED3D_ATR_SIZE(sd->u.s.blendWeights.dwType) + 1));
+
+            VTRACE(("glWeightPointerARB(%d, GL_FLOAT, %d, %p)\n",
+                WINED3D_ATR_SIZE(sd->u.s.blendWeights.dwType) ,
+                sd->u.s.blendWeights.dwStride,
+                sd->u.s.blendWeights.lpData + stateblock->loadBaseVertexIndex * sd->u.s.blendWeights.dwStride + offset[sd->u.s.blendWeights.streamNo]));
+
+            if(curVBO != sd->u.s.blendWeights.VBO) {
+                GL_EXTCALL(glBindBufferARB(GL_ARRAY_BUFFER_ARB, sd->u.s.blendWeights.VBO));
+                checkGLcall("glBindBufferARB");
+                curVBO = sd->u.s.blendWeights.VBO;
+            }
+
+            GL_EXTCALL(glWeightPointerARB)(
+                WINED3D_ATR_SIZE(sd->u.s.blendWeights.dwType),
+                WINED3D_ATR_GLTYPE(sd->u.s.blendWeights.dwType),
+                sd->u.s.blendWeights.dwStride,
+                sd->u.s.blendWeights.lpData + stateblock->loadBaseVertexIndex * sd->u.s.blendWeights.dwStride + offset[sd->u.s.blendWeights.streamNo]);
+
+            checkGLcall("glWeightPointerARB");
+
+            if((sd->u.s.blendMatrixIndices.lpData) || (sd->u.s.blendMatrixIndices.VBO)){
+                static BOOL warned;
+                if (!warned)
+                {
+                    FIXME("blendMatrixIndices support\n");
+                    warned = TRUE;
+                }
+            }
+        } else {
+            /* TODO: support blends in drawStridedSlow
+             * No need to write a FIXME here, this is done after the general vertex decl decoding
+             */
+            WARN("unsupported blending in openGl\n");
+        }
+    } else {
+        if (GL_SUPPORT(ARB_VERTEX_BLEND)) {
+            static const GLbyte one = 1;
+            GL_EXTCALL(glWeightbvARB(1, &one));
+            checkGLcall("glWeightivARB(GL_LIMITS(blends), weights)");
+        }
+    }
+
+    /* Point Size ----------------------------------------------*/
+    if (sd->u.s.pSize.lpData || sd->u.s.pSize.VBO) {
+
+        /* no such functionality in the fixed function GL pipeline */
+        TRACE("Cannot change ptSize here in openGl\n");
+        /* TODO: Implement this function in using shaders if they are available */
+
+    }
+
+    /* Vertex Pointers -----------------------------------------*/
+    if (sd->u.s.position.lpData != NULL || sd->u.s.position.VBO != 0) {
+        /* Note dwType == float3 or float4 == 2 or 3 */
+        VTRACE(("glVertexPointer(%d, GL_FLOAT, %d, %p)\n",
+                sd->u.s.position.dwStride,
+                sd->u.s.position.dwType + 1,
+                sd->u.s.position.lpData));
+
+        if(curVBO != sd->u.s.position.VBO) {
+            GL_EXTCALL(glBindBufferARB(GL_ARRAY_BUFFER_ARB, sd->u.s.position.VBO));
+            checkGLcall("glBindBufferARB");
+            curVBO = sd->u.s.position.VBO;
+        }
+
+        /* min(WINED3D_ATR_SIZE(position),3) to Disable RHW mode as 'w' coord
+           handling for rhw mode should not impact screen position whereas in GL it does.
+           This may result in very slightly distorted textures in rhw mode.
+           There's always the other option of fixing the view matrix to
+           prevent w from having any effect.
+
+           This only applies to user pointer sources, in VBOs the vertices are fixed up
+         */
+        if(sd->u.s.position.VBO == 0) {
+            glVertexPointer(3 /* min(WINED3D_ATR_SIZE(sd->u.s.position.dwType),3) */,
+                WINED3D_ATR_GLTYPE(sd->u.s.position.dwType),
+                sd->u.s.position.dwStride, sd->u.s.position.lpData + stateblock->loadBaseVertexIndex * sd->u.s.position.dwStride + offset[sd->u.s.position.streamNo]);
+        } else {
+            glVertexPointer(
+                WINED3D_ATR_SIZE(sd->u.s.position.dwType),
+                WINED3D_ATR_GLTYPE(sd->u.s.position.dwType),
+                sd->u.s.position.dwStride, sd->u.s.position.lpData + stateblock->loadBaseVertexIndex * sd->u.s.position.dwStride + offset[sd->u.s.position.streamNo]);
+        }
+        checkGLcall("glVertexPointer(...)");
+        glEnableClientState(GL_VERTEX_ARRAY);
+        checkGLcall("glEnableClientState(GL_VERTEX_ARRAY)");
+    }
+
+    /* Normals -------------------------------------------------*/
+    if (sd->u.s.normal.lpData || sd->u.s.normal.VBO) {
+        /* Note dwType == float3 or float4 == 2 or 3 */
+        VTRACE(("glNormalPointer(GL_FLOAT, %d, %p)\n",
+                sd->u.s.normal.dwStride,
+                sd->u.s.normal.lpData));
+        if(curVBO != sd->u.s.normal.VBO) {
+            GL_EXTCALL(glBindBufferARB(GL_ARRAY_BUFFER_ARB, sd->u.s.normal.VBO));
+            checkGLcall("glBindBufferARB");
+            curVBO = sd->u.s.normal.VBO;
+        }
+        glNormalPointer(
+            WINED3D_ATR_GLTYPE(sd->u.s.normal.dwType),
+            sd->u.s.normal.dwStride,
+            sd->u.s.normal.lpData + stateblock->loadBaseVertexIndex * sd->u.s.normal.dwStride + offset[sd->u.s.normal.streamNo]);
+        checkGLcall("glNormalPointer(...)");
+        glEnableClientState(GL_NORMAL_ARRAY);
+        checkGLcall("glEnableClientState(GL_NORMAL_ARRAY)");
+
+    } else {
+        glNormal3f(0, 0, 0);
+        checkGLcall("glNormal3f(0, 0, 0)");
+    }
+
+    /* Diffuse Colour --------------------------------------------*/
+    /*  WARNING: Data here MUST be in RGBA format, so cannot      */
+    /*     go directly into fast mode from app pgm, because       */
+    /*     directx requires data in BGRA format.                  */
+    /* currently fixupVertices swizzles the format, but this isn't*/
+    /* very practical when using VBOs                             */
+    /* NOTE: Unless we write a vertex shader to swizzle the colour*/
+    /* , or the user doesn't care and wants the speed advantage   */
+
+    if (sd->u.s.diffuse.lpData || sd->u.s.diffuse.VBO) {
+        /* Note dwType == float3 or float4 == 2 or 3 */
+        VTRACE(("glColorPointer(4, GL_UNSIGNED_BYTE, %d, %p)\n",
+                sd->u.s.diffuse.dwStride,
+                sd->u.s.diffuse.lpData));
+
+        if(curVBO != sd->u.s.diffuse.VBO) {
+            GL_EXTCALL(glBindBufferARB(GL_ARRAY_BUFFER_ARB, sd->u.s.diffuse.VBO));
+            checkGLcall("glBindBufferARB");
+            curVBO = sd->u.s.diffuse.VBO;
+        }
+
+        glColorPointer(WINED3D_ATR_SIZE(sd->u.s.diffuse.dwType),
+                       WINED3D_ATR_GLTYPE(sd->u.s.diffuse.dwType),
+                       sd->u.s.diffuse.dwStride,
+                       sd->u.s.diffuse.lpData + stateblock->loadBaseVertexIndex * sd->u.s.diffuse.dwStride + offset[sd->u.s.diffuse.streamNo]);
+        checkGLcall("glColorPointer(4, GL_UNSIGNED_BYTE, ...)");
+        glEnableClientState(GL_COLOR_ARRAY);
+        checkGLcall("glEnableClientState(GL_COLOR_ARRAY)");
+
+    } else {
+        glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
+        checkGLcall("glColor4f(1, 1, 1, 1)");
+    }
+
+    /* Specular Colour ------------------------------------------*/
+    if (sd->u.s.specular.lpData || sd->u.s.specular.VBO) {
+        TRACE("setting specular colour\n");
+        /* Note dwType == float3 or float4 == 2 or 3 */
+        VTRACE(("glSecondaryColorPointer(4, GL_UNSIGNED_BYTE, %d, %p)\n",
+                sd->u.s.specular.dwStride,
+                sd->u.s.specular.lpData));
+        if (GL_SUPPORT(EXT_SECONDARY_COLOR)) {
+            if(curVBO != sd->u.s.specular.VBO) {
+                GL_EXTCALL(glBindBufferARB(GL_ARRAY_BUFFER_ARB, sd->u.s.specular.VBO));
+                checkGLcall("glBindBufferARB");
+                curVBO = sd->u.s.specular.VBO;
+            }
+            GL_EXTCALL(glSecondaryColorPointerEXT)(WINED3D_ATR_SIZE(sd->u.s.specular.dwType),
+                                                   WINED3D_ATR_GLTYPE(sd->u.s.specular.dwType),
+                                                   sd->u.s.specular.dwStride,
+                                                   sd->u.s.specular.lpData + stateblock->loadBaseVertexIndex * sd->u.s.specular.dwStride + offset[sd->u.s.specular.streamNo]);
+            checkGLcall("glSecondaryColorPointerEXT(4, GL_UNSIGNED_BYTE, ...)");
+            glEnableClientState(GL_SECONDARY_COLOR_ARRAY_EXT);
+            checkGLcall("glEnableClientState(GL_SECONDARY_COLOR_ARRAY_EXT)");
+        } else {
+
+        /* Missing specular color is not critical, no warnings */
+        VTRACE(("Specular colour is not supported in this GL implementation\n"));
+        }
+
+    } else {
+        if (GL_SUPPORT(EXT_SECONDARY_COLOR)) {
+            GL_EXTCALL(glSecondaryColor3fEXT)(0, 0, 0);
+            checkGLcall("glSecondaryColor3fEXT(0, 0, 0)");
+        } else {
+
+            /* Missing specular color is not critical, no warnings */
+            VTRACE(("Specular colour is not supported in this GL implementation\n"));
+        }
+    }
+
+    /* Texture coords -------------------------------------------*/
+    loadTexCoords(stateblock, sd, &curVBO);
+}
+
+static inline void drawPrimitiveTraceDataLocations(const WineDirect3DVertexStridedData *dataLocations)
+{
+    /* Dump out what parts we have supplied */
+    TRACE("Strided Data:\n");
+    TRACE_STRIDED((dataLocations), position);
+    TRACE_STRIDED((dataLocations), blendWeights);
+    TRACE_STRIDED((dataLocations), blendMatrixIndices);
+    TRACE_STRIDED((dataLocations), normal);
+    TRACE_STRIDED((dataLocations), pSize);
+    TRACE_STRIDED((dataLocations), diffuse);
+    TRACE_STRIDED((dataLocations), specular);
+    TRACE_STRIDED((dataLocations), texCoords[0]);
+    TRACE_STRIDED((dataLocations), texCoords[1]);
+    TRACE_STRIDED((dataLocations), texCoords[2]);
+    TRACE_STRIDED((dataLocations), texCoords[3]);
+    TRACE_STRIDED((dataLocations), texCoords[4]);
+    TRACE_STRIDED((dataLocations), texCoords[5]);
+    TRACE_STRIDED((dataLocations), texCoords[6]);
+    TRACE_STRIDED((dataLocations), texCoords[7]);
+    TRACE_STRIDED((dataLocations), position2);
+    TRACE_STRIDED((dataLocations), normal2);
+    TRACE_STRIDED((dataLocations), tangent);
+    TRACE_STRIDED((dataLocations), binormal);
+    TRACE_STRIDED((dataLocations), tessFactor);
+    TRACE_STRIDED((dataLocations), fog);
+    TRACE_STRIDED((dataLocations), depth);
+    TRACE_STRIDED((dataLocations), sample);
+
+    return;
+}
+
+static void streamsrc(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    IWineD3DDeviceImpl *device = stateblock->wineD3DDevice;
+    BOOL fixup = FALSE;
+    WineDirect3DVertexStridedData *dataLocations = &device->strided_streams;
+    BOOL useVertexShaderFunction;
+
+    if (device->vs_selected_mode != SHADER_NONE && stateblock->vertexShader &&
+        ((IWineD3DVertexShaderImpl *)stateblock->vertexShader)->baseShader.function != NULL) {
+        useVertexShaderFunction = TRUE;
+    } else {
+        useVertexShaderFunction = FALSE;
+    }
+
+
+    if(device->up_strided) {
+        /* Note: this is a ddraw fixed-function code path */
+        TRACE("================ Strided Input ===================\n");
+        memcpy(dataLocations, device->up_strided, sizeof(*dataLocations));
+
+        if(TRACE_ON(d3d)) {
+            drawPrimitiveTraceDataLocations(dataLocations);
+        }
+    } else {
+        /* Note: This is a fixed function or shader codepath.
+         * This means it must handle both types of strided data.
+         * Shaders must go through here to zero the strided data, even if they
+         * don't set any declaration at all
+         */
+        TRACE("================ Vertex Declaration  ===================\n");
+        memset(dataLocations, 0, sizeof(*dataLocations));
+        primitiveDeclarationConvertToStridedData((IWineD3DDevice *) device,
+                useVertexShaderFunction, dataLocations, &fixup);
+    }
+
+    if (dataLocations->u.s.position_transformed) {
+        useVertexShaderFunction = FALSE;
+    }
+
+    /* Unload the old arrays before loading the new ones to get old junk out */
+    if(context->numberedArraysLoaded) {
+        unloadNumberedArrays(stateblock);
+        context->numberedArraysLoaded = FALSE;
+    }
+    if(context->namedArraysLoaded) {
+        unloadVertexData(stateblock);
+        context->namedArraysLoaded = FALSE;
+    }
+
+    if(useVertexShaderFunction) {
+        if(((IWineD3DVertexDeclarationImpl *) stateblock->vertexDecl)->half_float_conv_needed && !fixup) {
+            TRACE("Using drawStridedSlow with vertex shaders for FLOAT16 conversion\n");
+            device->useDrawStridedSlow = TRUE;
+            context->numberedArraysLoaded = FALSE;
+        } else {
+            TRACE("Loading numbered arrays\n");
+            loadNumberedArrays(stateblock, dataLocations);
+            device->useDrawStridedSlow = FALSE;
+            context->numberedArraysLoaded = TRUE;
+        }
+    } else if (fixup ||
+               (dataLocations->u.s.pSize.lpData == NULL &&
+                dataLocations->u.s.diffuse.lpData == NULL &&
+                dataLocations->u.s.specular.lpData == NULL)) {
+        /* Load the vertex data using named arrays */
+        TRACE("Loading vertex data\n");
+        loadVertexData(stateblock, dataLocations);
+        device->useDrawStridedSlow = FALSE;
+        context->namedArraysLoaded = TRUE;
+    } else {
+        TRACE("Not loading vertex data\n");
+        device->useDrawStridedSlow = TRUE;
+    }
+
+/* Generate some fixme's if unsupported functionality is being used */
+#define BUFFER_OR_DATA(_attribute) dataLocations->u.s._attribute.lpData
+    /* TODO: Either support missing functionality in fixupVertices or by creating a shader to replace the pipeline. */
+    if (!useVertexShaderFunction && (BUFFER_OR_DATA(position2) || BUFFER_OR_DATA(normal2))) {
+        FIXME("Tweening is only valid with vertex shaders\n");
+    }
+    if (!useVertexShaderFunction && BUFFER_OR_DATA(binormal)) {
+        FIXME("Binormal bump mapping is only valid with vertex shaders\n");
+    }
+    if (!useVertexShaderFunction && (BUFFER_OR_DATA(tessFactor) || BUFFER_OR_DATA(fog) || BUFFER_OR_DATA(depth) || BUFFER_OR_DATA(sample))) {
+        FIXME("Extended attributes are only valid with vertex shaders\n");
+    }
+#undef BUFFER_OR_DATA
+}
+
+static void vertexdeclaration(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    BOOL useVertexShaderFunction = FALSE, updateFog = FALSE;
+    BOOL usePixelShaderFunction = stateblock->wineD3DDevice->ps_selected_mode != SHADER_NONE && stateblock->pixelShader
+            && ((IWineD3DPixelShaderImpl *)stateblock->pixelShader)->baseShader.function;
+    BOOL transformed;
+    /* Some stuff is in the device until we have per context tracking */
+    IWineD3DDeviceImpl *device = stateblock->wineD3DDevice;
+    BOOL wasrhw = context->last_was_rhw;
+
+    /* Shaders can be implemented using ARB_PROGRAM, GLSL, or software -
+     * here simply check whether a shader was set, or the user disabled shaders
+     */
+    if (use_vs(device)) {
+        useVertexShaderFunction = TRUE;
+
+        if(((IWineD3DVertexShaderImpl *)stateblock->vertexShader)->baseShader.reg_maps.fog != context->last_was_foggy_shader) {
+            updateFog = TRUE;
+        }
+    } else if(context->last_was_foggy_shader) {
+        updateFog = TRUE;
+    }
+
+    transformed = device->strided_streams.u.s.position_transformed;
+    if (transformed) useVertexShaderFunction = FALSE;
+
+    if(transformed != context->last_was_rhw && !useVertexShaderFunction) {
+        updateFog = TRUE;
+    }
+
+    /* Reapply lighting if it is not scheduled for reapplication already */
+    if(!isStateDirty(context, STATE_RENDER(WINED3DRS_LIGHTING))) {
+        state_lighting(STATE_RENDER(WINED3DRS_LIGHTING), stateblock, context);
+    }
+
+    if (transformed) {
+        context->last_was_rhw = TRUE;
+    } else {
+
+        /* Untransformed, so relies on the view and projection matrices */
+        context->last_was_rhw = FALSE;
+        /* This turns off the Z scale trick to 'disable' viewport frustum clipping in rhw mode*/
+        device->untransformed = TRUE;
+
+        /* Todo for sw shaders: Vertex Shader output is already transformed, so set up identity matrices
+         * Not needed as long as only hw shaders are supported
+         */
+
+        /* This sets the shader output position correction constants.
+         * TODO: Move to the viewport state
+         */
+        if (useVertexShaderFunction) {
+            device->posFixup[1] = device->render_offscreen ? -1.0 : 1.0;
+            device->posFixup[3] = -device->posFixup[1] / stateblock->viewport.Height;
+        }
+    }
+
+    /* Don't have to apply the matrices when vertex shaders are used. When vshaders are turned
+     * off this function will be called again anyway to make sure they're properly set
+     */
+    if(!useVertexShaderFunction) {
+        /* TODO: Move this mainly to the viewport state and only apply when the vp has changed
+         * or transformed / untransformed was switched
+         */
+       if(wasrhw != context->last_was_rhw &&
+          !isStateDirty(context, STATE_TRANSFORM(WINED3DTS_PROJECTION)) &&
+          !isStateDirty(context, STATE_VIEWPORT)) {
+            transform_projection(STATE_TRANSFORM(WINED3DTS_PROJECTION), stateblock, context);
+        }
+        /* World matrix needs reapplication here only if we're switching between rhw and non-rhw
+         * mode.
+         *
+         * If a vertex shader is used, the world matrix changed and then vertex shader unbound
+         * this check will fail and the matrix not applied again. This is OK because a simple
+         * world matrix change reapplies the matrix - These checks here are only to satisfy the
+         * needs of the vertex declaration.
+         *
+         * World and view matrix go into the same gl matrix, so only apply them when neither is
+         * dirty
+         */
+        if(transformed != wasrhw &&
+           !isStateDirty(context, STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(0))) &&
+           !isStateDirty(context, STATE_TRANSFORM(WINED3DTS_VIEW))) {
+            transform_world(STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(0)), stateblock, context);
+        }
+
+        if(!isStateDirty(context, STATE_RENDER(WINED3DRS_COLORVERTEX))) {
+            state_colormat(STATE_RENDER(WINED3DRS_COLORVERTEX), stateblock, context);
+        }
+
+        if(context->last_was_vshader && !isStateDirty(context, STATE_RENDER(WINED3DRS_CLIPPLANEENABLE))) {
+            state_clipping(STATE_RENDER(WINED3DRS_CLIPPLANEENABLE), stateblock, context);
+        }
+        if(!isStateDirty(context, STATE_RENDER(WINED3DRS_NORMALIZENORMALS))) {
+            state_normalize(STATE_RENDER(WINED3DRS_NORMALIZENORMALS), stateblock, context);
+        }
+    } else {
+        if(!context->last_was_vshader) {
+            int i;
+            static BOOL warned = FALSE;
+            /* Disable all clip planes to get defined results on all drivers. See comment in the
+             * state_clipping state handler
+             */
+            for(i = 0; i < GL_LIMITS(clipplanes); i++) {
+                glDisable(GL_CLIP_PLANE0 + i);
+                checkGLcall("glDisable(GL_CLIP_PLANE0 + i)");
+            }
+
+            if(!warned && stateblock->renderState[WINED3DRS_CLIPPLANEENABLE]) {
+                FIXME("Clipping not supported with vertex shaders\n");
+                warned = TRUE;
+            }
+            if(wasrhw) {
+                /* Apply the transform matrices when switching from rhw drawing to vertex shaders. Vertex
+                 * shaders themselves do not need it, but the matrices are not reapplied automatically when
+                 * switching back from vertex shaders to fixed function processing. So make sure we leave the
+                 * fixed function vertex processing states back in a sane state before switching to shaders
+                 */
+                if(!isStateDirty(context, STATE_TRANSFORM(WINED3DTS_PROJECTION))) {
+                    transform_projection(STATE_TRANSFORM(WINED3DTS_PROJECTION), stateblock, context);
+                }
+                if(!isStateDirty(context, STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(0)))) {
+                    transform_world(STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(0)), stateblock, context);
+                }
+            }
+        }
+    }
+
+    /* Vertex and pixel shaders are applied together for now, so let the last dirty state do the
+     * application
+     */
+    if (!isStateDirty(context, STATE_PIXELSHADER)) {
+        device->shader_backend->shader_select((IWineD3DDevice *)device, usePixelShaderFunction, useVertexShaderFunction);
+
+        if (!isStateDirty(context, STATE_VERTEXSHADERCONSTANT) && (useVertexShaderFunction || usePixelShaderFunction)) {
+            shaderconstant(STATE_VERTEXSHADERCONSTANT, stateblock, context);
+        }
+    }
+
+    context->last_was_vshader = useVertexShaderFunction;
+
+    if(updateFog) {
+        state_fog(STATE_RENDER(WINED3DRS_FOGENABLE), stateblock, context);
+    }
+    if(!useVertexShaderFunction) {
+        int i;
+        for(i = 0; i < MAX_TEXTURES; i++) {
+            if(!isStateDirty(context, STATE_TRANSFORM(WINED3DTS_TEXTURE0 + i))) {
+                transform_texture(STATE_TEXTURESTAGE(i, WINED3DTSS_TEXTURETRANSFORMFLAGS), stateblock, context);
+            }
+        }
+    }
+}
+
+static void viewport_miscpart(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    UINT width, height;
+    IWineD3DSurfaceImpl *target;
+
+    glDepthRange(stateblock->viewport.MinZ, stateblock->viewport.MaxZ);
+    checkGLcall("glDepthRange");
+    /* Note: GL requires lower left, DirectX supplies upper left. This is reversed when using offscreen rendering
+     */
+    if(stateblock->wineD3DDevice->render_offscreen) {
+        glViewport(stateblock->viewport.X,
+                   stateblock->viewport.Y,
+                   stateblock->viewport.Width, stateblock->viewport.Height);
+    } else {
+        target = (IWineD3DSurfaceImpl *) stateblock->wineD3DDevice->render_targets[0];
+        target->get_drawable_size(target, &width, &height);
+
+        glViewport(stateblock->viewport.X,
+                   (height - (stateblock->viewport.Y + stateblock->viewport.Height)),
+                   stateblock->viewport.Width, stateblock->viewport.Height);
+    }
+
+    checkGLcall("glViewport");
+}
+
+static void viewport_vertexpart(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    stateblock->wineD3DDevice->posFixup[2] = 1.0 / stateblock->viewport.Width;
+    stateblock->wineD3DDevice->posFixup[3] = -stateblock->wineD3DDevice->posFixup[1] / stateblock->viewport.Height;
+    if(!isStateDirty(context, STATE_TRANSFORM(WINED3DTS_PROJECTION))) {
+        transform_projection(STATE_TRANSFORM(WINED3DTS_PROJECTION), stateblock, context);
+    }
+    if(!isStateDirty(context, STATE_RENDER(WINED3DRS_POINTSCALEENABLE))) {
+        state_pscale(STATE_RENDER(WINED3DRS_POINTSCALEENABLE), stateblock, context);
+    }
+}
+
+static void light(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    UINT Index = state - STATE_ACTIVELIGHT(0);
+    const PLIGHTINFOEL *lightInfo = stateblock->activeLights[Index];
+
+    if(!lightInfo) {
+        glDisable(GL_LIGHT0 + Index);
+        checkGLcall("glDisable(GL_LIGHT0 + Index)");
+    } else {
+        float quad_att;
+        float colRGBA[] = {0.0, 0.0, 0.0, 0.0};
+
+        /* Light settings are affected by the model view in OpenGL, the View transform in direct3d*/
+        glMatrixMode(GL_MODELVIEW);
+        glPushMatrix();
+        glLoadMatrixf(&stateblock->transforms[WINED3DTS_VIEW].u.m[0][0]);
+
+        /* Diffuse: */
+        colRGBA[0] = lightInfo->OriginalParms.Diffuse.r;
+        colRGBA[1] = lightInfo->OriginalParms.Diffuse.g;
+        colRGBA[2] = lightInfo->OriginalParms.Diffuse.b;
+        colRGBA[3] = lightInfo->OriginalParms.Diffuse.a;
+        glLightfv(GL_LIGHT0 + Index, GL_DIFFUSE, colRGBA);
+        checkGLcall("glLightfv");
+
+        /* Specular */
+        colRGBA[0] = lightInfo->OriginalParms.Specular.r;
+        colRGBA[1] = lightInfo->OriginalParms.Specular.g;
+        colRGBA[2] = lightInfo->OriginalParms.Specular.b;
+        colRGBA[3] = lightInfo->OriginalParms.Specular.a;
+        glLightfv(GL_LIGHT0 + Index, GL_SPECULAR, colRGBA);
+        checkGLcall("glLightfv");
+
+        /* Ambient */
+        colRGBA[0] = lightInfo->OriginalParms.Ambient.r;
+        colRGBA[1] = lightInfo->OriginalParms.Ambient.g;
+        colRGBA[2] = lightInfo->OriginalParms.Ambient.b;
+        colRGBA[3] = lightInfo->OriginalParms.Ambient.a;
+        glLightfv(GL_LIGHT0 + Index, GL_AMBIENT, colRGBA);
+        checkGLcall("glLightfv");
+
+        if ((lightInfo->OriginalParms.Range *lightInfo->OriginalParms.Range) >= FLT_MIN) {
+            quad_att = 1.4/(lightInfo->OriginalParms.Range *lightInfo->OriginalParms.Range);
+        } else {
+            quad_att = 0; /*  0 or  MAX?  (0 seems to be ok) */
+        }
+
+        /* Do not assign attenuation values for lights that do not use them. D3D apps are free to pass any junk,
+         * but gl drivers use them and may crash due to bad Attenuation values. Need for Speed most wanted sets
+         * Attenuation0 to NaN and crashes in the gl lib
+         */
+
+        switch (lightInfo->OriginalParms.Type) {
+            case WINED3DLIGHT_POINT:
+                /* Position */
+                glLightfv(GL_LIGHT0 + Index, GL_POSITION, &lightInfo->lightPosn[0]);
+                checkGLcall("glLightfv");
+                glLightf(GL_LIGHT0 + Index, GL_SPOT_CUTOFF, lightInfo->cutoff);
+                checkGLcall("glLightf");
+                /* Attenuation - Are these right? guessing... */
+                glLightf(GL_LIGHT0 + Index, GL_CONSTANT_ATTENUATION,  lightInfo->OriginalParms.Attenuation0);
+                checkGLcall("glLightf");
+                glLightf(GL_LIGHT0 + Index, GL_LINEAR_ATTENUATION,    lightInfo->OriginalParms.Attenuation1);
+                checkGLcall("glLightf");
+                if (quad_att < lightInfo->OriginalParms.Attenuation2) quad_att = lightInfo->OriginalParms.Attenuation2;
+                glLightf(GL_LIGHT0 + Index, GL_QUADRATIC_ATTENUATION, quad_att);
+                checkGLcall("glLightf");
+                /* FIXME: Range */
+                break;
+
+            case WINED3DLIGHT_SPOT:
+                /* Position */
+                glLightfv(GL_LIGHT0 + Index, GL_POSITION, &lightInfo->lightPosn[0]);
+                checkGLcall("glLightfv");
+                /* Direction */
+                glLightfv(GL_LIGHT0 + Index, GL_SPOT_DIRECTION, &lightInfo->lightDirn[0]);
+                checkGLcall("glLightfv");
+                glLightf(GL_LIGHT0 + Index, GL_SPOT_EXPONENT, lightInfo->exponent);
+                checkGLcall("glLightf");
+                glLightf(GL_LIGHT0 + Index, GL_SPOT_CUTOFF, lightInfo->cutoff);
+                checkGLcall("glLightf");
+                /* Attenuation - Are these right? guessing... */
+                glLightf(GL_LIGHT0 + Index, GL_CONSTANT_ATTENUATION,  lightInfo->OriginalParms.Attenuation0);
+                checkGLcall("glLightf");
+                glLightf(GL_LIGHT0 + Index, GL_LINEAR_ATTENUATION,    lightInfo->OriginalParms.Attenuation1);
+                checkGLcall("glLightf");
+                if (quad_att < lightInfo->OriginalParms.Attenuation2) quad_att = lightInfo->OriginalParms.Attenuation2;
+                glLightf(GL_LIGHT0 + Index, GL_QUADRATIC_ATTENUATION, quad_att);
+                checkGLcall("glLightf");
+                /* FIXME: Range */
+                break;
+
+            case WINED3DLIGHT_DIRECTIONAL:
+                /* Direction */
+                glLightfv(GL_LIGHT0 + Index, GL_POSITION, &lightInfo->lightPosn[0]); /* Note gl uses w position of 0 for direction! */
+                checkGLcall("glLightfv");
+                glLightf(GL_LIGHT0 + Index, GL_SPOT_CUTOFF, lightInfo->cutoff);
+                checkGLcall("glLightf");
+                glLightf(GL_LIGHT0 + Index, GL_SPOT_EXPONENT, 0.0f);
+                checkGLcall("glLightf");
+                break;
+
+            default:
+                FIXME("Unrecognized light type %d\n", lightInfo->OriginalParms.Type);
+        }
+
+        /* Restore the modelview matrix */
+        glPopMatrix();
+
+        glEnable(GL_LIGHT0 + Index);
+        checkGLcall("glEnable(GL_LIGHT0 + Index)");
+    }
+
+    return;
+}
+
+static void scissorrect(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    RECT *pRect = &stateblock->scissorRect;
+    UINT height;
+    UINT width;
+    IWineD3DSurfaceImpl *target = (IWineD3DSurfaceImpl *) stateblock->wineD3DDevice->render_targets[0];
+
+    target->get_drawable_size(target, &width, &height);
+    /* Warning: glScissor uses window coordinates, not viewport coordinates, so our viewport correction does not apply
+     * Warning2: Even in windowed mode the coords are relative to the window, not the screen
+     */
+    TRACE("(%p) Setting new Scissor Rect to %d:%d-%d:%d\n", stateblock->wineD3DDevice, pRect->left, pRect->bottom - height,
+          pRect->right - pRect->left, pRect->bottom - pRect->top);
+
+    if (stateblock->wineD3DDevice->render_offscreen) {
+        glScissor(pRect->left, pRect->top, pRect->right - pRect->left, pRect->bottom - pRect->top);
+    } else {
+        glScissor(pRect->left, height - pRect->bottom, pRect->right - pRect->left, pRect->bottom - pRect->top);
+    }
+    checkGLcall("glScissor");
+}
+
+static void indexbuffer(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(stateblock->streamIsUP || stateblock->pIndexData == NULL ) {
+        GL_EXTCALL(glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0));
+    } else {
+        IWineD3DIndexBufferImpl *ib = (IWineD3DIndexBufferImpl *) stateblock->pIndexData;
+        GL_EXTCALL(glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, ib->vbo));
+    }
+}
+
+static void frontface(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(stateblock->wineD3DDevice->render_offscreen) {
+        glFrontFace(GL_CCW);
+        checkGLcall("glFrontFace(GL_CCW)");
+    } else {
+        glFrontFace(GL_CW);
+        checkGLcall("glFrontFace(GL_CW)");
+    }
+}
+
+const struct StateEntryTemplate misc_state_template[] = {
+    { STATE_RENDER(WINED3DRS_SRCBLEND),                   { STATE_RENDER(WINED3DRS_ALPHABLENDENABLE),           state_blend         }, 0                               },
+    { STATE_RENDER(WINED3DRS_DESTBLEND),                  { STATE_RENDER(WINED3DRS_ALPHABLENDENABLE),           state_blend         }, 0                               },
+    { STATE_RENDER(WINED3DRS_ALPHABLENDENABLE),           { STATE_RENDER(WINED3DRS_ALPHABLENDENABLE),           state_blend         }, 0                               },
+    { STATE_RENDER(WINED3DRS_EDGEANTIALIAS),              { STATE_RENDER(WINED3DRS_ALPHABLENDENABLE),           state_blend         }, 0                               },
+    { STATE_RENDER(WINED3DRS_ANTIALIASEDLINEENABLE),      { STATE_RENDER(WINED3DRS_ALPHABLENDENABLE),           state_blend         }, 0                               },
+    { STATE_RENDER(WINED3DRS_SEPARATEALPHABLENDENABLE),   { STATE_RENDER(WINED3DRS_ALPHABLENDENABLE),           state_blend         }, 0                               },
+    { STATE_RENDER(WINED3DRS_SRCBLENDALPHA),              { STATE_RENDER(WINED3DRS_ALPHABLENDENABLE),           state_blend         }, 0                               },
+    { STATE_RENDER(WINED3DRS_DESTBLENDALPHA),             { STATE_RENDER(WINED3DRS_ALPHABLENDENABLE),           state_blend         }, 0                               },
+    { STATE_RENDER(WINED3DRS_DESTBLENDALPHA),             { STATE_RENDER(WINED3DRS_ALPHABLENDENABLE),           state_blend         }, 0                               },
+    { STATE_RENDER(WINED3DRS_BLENDOPALPHA),               { STATE_RENDER(WINED3DRS_ALPHABLENDENABLE),           state_blend         }, 0                               },
+    { STATE_STREAMSRC,                                    { STATE_VDECL,                                        streamsrc           }, 0                               },
+    { STATE_VDECL,                                        { STATE_VDECL,                                        streamsrc           }, 0                               },
+    { STATE_FRONTFACE,                                    { STATE_FRONTFACE,                                    frontface           }, 0                               },
+    { STATE_SCISSORRECT,                                  { STATE_SCISSORRECT,                                  scissorrect         }, 0                               },
+    /* TODO: Move shader constant loading to vertex and fragment pipeline repectively, as soon as the pshader and
+     * vshader loadings are untied from each other
+     */
+    { STATE_VERTEXSHADERCONSTANT,                         { STATE_VERTEXSHADERCONSTANT,                         shaderconstant      }, 0                               },
+    { STATE_PIXELSHADERCONSTANT,                          { STATE_VERTEXSHADERCONSTANT,                         shaderconstant      }, 0                               },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT00),     { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT01),     { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT10),     { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT11),     { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT00),     { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT01),     { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT10),     { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT11),     { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT00),     { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT01),     { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT10),     { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT11),     { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT00),     { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT01),     { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT10),     { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT11),     { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT00),     { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT01),     { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT10),     { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT11),     { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT00),     { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT01),     { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT10),     { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT11),     { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT00),     { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT01),     { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT10),     { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT11),     { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT00),     { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT01),     { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT10),     { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT11),     { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVMAT00),     shader_bumpenvmat   }, 0                               },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVLSCALE),    { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlscale   }, 0                               },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVLOFFSET),   { STATE_TEXTURESTAGE(0, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlscale   }, 0                               },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVLSCALE),    { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlscale   }, 0                               },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVLOFFSET),   { STATE_TEXTURESTAGE(1, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlscale   }, 0                               },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVLSCALE),    { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlscale   }, 0                               },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVLOFFSET),   { STATE_TEXTURESTAGE(2, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlscale   }, 0                               },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVLSCALE),    { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlscale   }, 0                               },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVLOFFSET),   { STATE_TEXTURESTAGE(3, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlscale   }, 0                               },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVLSCALE),    { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlscale   }, 0                               },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVLOFFSET),   { STATE_TEXTURESTAGE(4, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlscale   }, 0                               },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVLSCALE),    { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlscale   }, 0                               },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVLOFFSET),   { STATE_TEXTURESTAGE(5, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlscale   }, 0                               },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVLSCALE),    { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlscale   }, 0                               },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVLOFFSET),   { STATE_TEXTURESTAGE(6, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlscale   }, 0                               },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVLSCALE),    { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlscale   }, 0                               },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVLOFFSET),   { STATE_TEXTURESTAGE(7, WINED3DTSS_BUMPENVLSCALE),    tex_bumpenvlscale   }, 0                               },
+
+    { STATE_VIEWPORT,                                     { STATE_VIEWPORT,                                     viewport_miscpart   }, 0                               },
+    { STATE_INDEXBUFFER,                                  { STATE_INDEXBUFFER,                                  indexbuffer         }, ARB_VERTEX_BUFFER_OBJECT        },
+    { STATE_RENDER(WINED3DRS_ANTIALIAS),                  { STATE_RENDER(WINED3DRS_ANTIALIAS),                  state_antialias     }, 0                               },
+    { STATE_RENDER(WINED3DRS_TEXTUREPERSPECTIVE),         { STATE_RENDER(WINED3DRS_TEXTUREPERSPECTIVE),         state_perspective   }, 0                               },
+    { STATE_RENDER(WINED3DRS_ZENABLE),                    { STATE_RENDER(WINED3DRS_ZENABLE),                    state_zenable       }, 0                               },
+    { STATE_RENDER(WINED3DRS_WRAPU),                      { STATE_RENDER(WINED3DRS_WRAPU),                      state_wrapu         }, 0                               },
+    { STATE_RENDER(WINED3DRS_WRAPV),                      { STATE_RENDER(WINED3DRS_WRAPV),                      state_wrapv         }, 0                               },
+    { STATE_RENDER(WINED3DRS_FILLMODE),                   { STATE_RENDER(WINED3DRS_FILLMODE),                   state_fillmode      }, 0                               },
+    { STATE_RENDER(WINED3DRS_SHADEMODE),                  { STATE_RENDER(WINED3DRS_SHADEMODE),                  state_shademode     }, 0                               },
+    { STATE_RENDER(WINED3DRS_LINEPATTERN),                { STATE_RENDER(WINED3DRS_LINEPATTERN),                state_linepattern   }, 0                               },
+    { STATE_RENDER(WINED3DRS_MONOENABLE),                 { STATE_RENDER(WINED3DRS_MONOENABLE),                 state_monoenable    }, 0                               },
+    { STATE_RENDER(WINED3DRS_ROP2),                       { STATE_RENDER(WINED3DRS_ROP2),                       state_rop2          }, 0                               },
+    { STATE_RENDER(WINED3DRS_PLANEMASK),                  { STATE_RENDER(WINED3DRS_PLANEMASK),                  state_planemask     }, 0                               },
+    { STATE_RENDER(WINED3DRS_ZWRITEENABLE),               { STATE_RENDER(WINED3DRS_ZWRITEENABLE),               state_zwritenable   }, 0                               },
+    { STATE_RENDER(WINED3DRS_ALPHATESTENABLE),            { STATE_RENDER(WINED3DRS_ALPHATESTENABLE),            state_alpha         }, 0                               },
+    { STATE_RENDER(WINED3DRS_ALPHAREF),                   { STATE_RENDER(WINED3DRS_ALPHATESTENABLE),            state_alpha         }, 0                               },
+    { STATE_RENDER(WINED3DRS_ALPHAFUNC),                  { STATE_RENDER(WINED3DRS_ALPHATESTENABLE),            state_alpha         }, 0                               },
+    { STATE_RENDER(WINED3DRS_COLORKEYENABLE),             { STATE_RENDER(WINED3DRS_ALPHATESTENABLE),            state_alpha         }, 0                               },
+    { STATE_RENDER(WINED3DRS_LASTPIXEL),                  { STATE_RENDER(WINED3DRS_LASTPIXEL),                  state_lastpixel     }, 0                               },
+    { STATE_RENDER(WINED3DRS_CULLMODE),                   { STATE_RENDER(WINED3DRS_CULLMODE),                   state_cullmode      }, 0                               },
+    { STATE_RENDER(WINED3DRS_ZFUNC),                      { STATE_RENDER(WINED3DRS_ZFUNC),                      state_zfunc         }, 0                               },
+    { STATE_RENDER(WINED3DRS_DITHERENABLE),               { STATE_RENDER(WINED3DRS_DITHERENABLE),               state_ditherenable  }, 0                               },
+    { STATE_RENDER(WINED3DRS_SUBPIXEL),                   { STATE_RENDER(WINED3DRS_SUBPIXEL),                   state_subpixel      }, 0                               },
+    { STATE_RENDER(WINED3DRS_SUBPIXELX),                  { STATE_RENDER(WINED3DRS_SUBPIXELX),                  state_subpixelx     }, 0                               },
+    { STATE_RENDER(WINED3DRS_STIPPLEDALPHA),              { STATE_RENDER(WINED3DRS_STIPPLEDALPHA),              state_stippledalpha }, 0                               },
+    { STATE_RENDER(WINED3DRS_ZBIAS),                      { STATE_RENDER(WINED3DRS_ZBIAS),                      state_zbias         }, 0                               },
+    { STATE_RENDER(WINED3DRS_STIPPLEENABLE),              { STATE_RENDER(WINED3DRS_STIPPLEENABLE),              state_stippleenable }, 0                               },
+    { STATE_RENDER(WINED3DRS_MIPMAPLODBIAS),              { STATE_RENDER(WINED3DRS_MIPMAPLODBIAS),              state_mipmaplodbias }, 0                               },
+    { STATE_RENDER(WINED3DRS_ANISOTROPY),                 { STATE_RENDER(WINED3DRS_ANISOTROPY),                 state_anisotropy    }, 0                               },
+    { STATE_RENDER(WINED3DRS_FLUSHBATCH),                 { STATE_RENDER(WINED3DRS_FLUSHBATCH),                 state_flushbatch    }, 0                               },
+    { STATE_RENDER(WINED3DRS_TRANSLUCENTSORTINDEPENDENT), { STATE_RENDER(WINED3DRS_TRANSLUCENTSORTINDEPENDENT), state_translucentsi }, 0                               },
+    { STATE_RENDER(WINED3DRS_STENCILENABLE),              { STATE_RENDER(WINED3DRS_STENCILENABLE),              state_stencil       }, 0                               },
+    { STATE_RENDER(WINED3DRS_STENCILFAIL),                { STATE_RENDER(WINED3DRS_STENCILENABLE),              state_stencil       }, 0                               },
+    { STATE_RENDER(WINED3DRS_STENCILZFAIL),               { STATE_RENDER(WINED3DRS_STENCILENABLE),              state_stencil       }, 0                               },
+    { STATE_RENDER(WINED3DRS_STENCILPASS),                { STATE_RENDER(WINED3DRS_STENCILENABLE),              state_stencil       }, 0                               },
+    { STATE_RENDER(WINED3DRS_STENCILFUNC),                { STATE_RENDER(WINED3DRS_STENCILENABLE),              state_stencil       }, 0                               },
+    { STATE_RENDER(WINED3DRS_STENCILREF),                 { STATE_RENDER(WINED3DRS_STENCILENABLE),              state_stencil       }, 0                               },
+    { STATE_RENDER(WINED3DRS_STENCILMASK),                { STATE_RENDER(WINED3DRS_STENCILENABLE),              state_stencil       }, 0                               },
+    { STATE_RENDER(WINED3DRS_STENCILWRITEMASK),           { STATE_RENDER(WINED3DRS_STENCILWRITEMASK),           state_stencilwrite2s}, EXT_STENCIL_TWO_SIDE            },
+    { STATE_RENDER(WINED3DRS_STENCILWRITEMASK),           { STATE_RENDER(WINED3DRS_STENCILWRITEMASK),           state_stencilwrite  }, 0                               },
+    { STATE_RENDER(WINED3DRS_TWOSIDEDSTENCILMODE),        { STATE_RENDER(WINED3DRS_STENCILENABLE),              state_stencil       }, 0                               },
+    { STATE_RENDER(WINED3DRS_CCW_STENCILFAIL),            { STATE_RENDER(WINED3DRS_STENCILENABLE),              state_stencil       }, 0                               },
+    { STATE_RENDER(WINED3DRS_CCW_STENCILZFAIL),           { STATE_RENDER(WINED3DRS_STENCILENABLE),              state_stencil       }, 0                               },
+    { STATE_RENDER(WINED3DRS_CCW_STENCILPASS),            { STATE_RENDER(WINED3DRS_STENCILENABLE),              state_stencil       }, 0                               },
+    { STATE_RENDER(WINED3DRS_CCW_STENCILFUNC),            { STATE_RENDER(WINED3DRS_STENCILENABLE),              state_stencil       }, 0                               },
+    { STATE_RENDER(WINED3DRS_WRAP0),                      { STATE_RENDER(WINED3DRS_WRAP0),                      state_wrap          }, 0                               },
+    { STATE_RENDER(WINED3DRS_WRAP1),                      { STATE_RENDER(WINED3DRS_WRAP0),                      state_wrap          }, 0                               },
+    { STATE_RENDER(WINED3DRS_WRAP2),                      { STATE_RENDER(WINED3DRS_WRAP0),                      state_wrap          }, 0                               },
+    { STATE_RENDER(WINED3DRS_WRAP3),                      { STATE_RENDER(WINED3DRS_WRAP0),                      state_wrap          }, 0                               },
+    { STATE_RENDER(WINED3DRS_WRAP4),                      { STATE_RENDER(WINED3DRS_WRAP0),                      state_wrap          }, 0                               },
+    { STATE_RENDER(WINED3DRS_WRAP5),                      { STATE_RENDER(WINED3DRS_WRAP0),                      state_wrap          }, 0                               },
+    { STATE_RENDER(WINED3DRS_WRAP6),                      { STATE_RENDER(WINED3DRS_WRAP0),                      state_wrap          }, 0                               },
+    { STATE_RENDER(WINED3DRS_WRAP7),                      { STATE_RENDER(WINED3DRS_WRAP0),                      state_wrap          }, 0                               },
+    { STATE_RENDER(WINED3DRS_WRAP8),                      { STATE_RENDER(WINED3DRS_WRAP0),                      state_wrap          }, 0                               },
+    { STATE_RENDER(WINED3DRS_WRAP9),                      { STATE_RENDER(WINED3DRS_WRAP0),                      state_wrap          }, 0                               },
+    { STATE_RENDER(WINED3DRS_WRAP10),                     { STATE_RENDER(WINED3DRS_WRAP0),                      state_wrap          }, 0                               },
+    { STATE_RENDER(WINED3DRS_WRAP11),                     { STATE_RENDER(WINED3DRS_WRAP0),                      state_wrap          }, 0                               },
+    { STATE_RENDER(WINED3DRS_WRAP12),                     { STATE_RENDER(WINED3DRS_WRAP0),                      state_wrap          }, 0                               },
+    { STATE_RENDER(WINED3DRS_WRAP13),                     { STATE_RENDER(WINED3DRS_WRAP0),                      state_wrap          }, 0                               },
+    { STATE_RENDER(WINED3DRS_WRAP14),                     { STATE_RENDER(WINED3DRS_WRAP0),                      state_wrap          }, 0                               },
+    { STATE_RENDER(WINED3DRS_WRAP15),                     { STATE_RENDER(WINED3DRS_WRAP0),                      state_wrap          }, 0                               },
+    { STATE_RENDER(WINED3DRS_EXTENTS),                    { STATE_RENDER(WINED3DRS_EXTENTS),                    state_extents       }, 0                               },
+    { STATE_RENDER(WINED3DRS_COLORKEYBLENDENABLE),        { STATE_RENDER(WINED3DRS_COLORKEYBLENDENABLE),        state_ckeyblend     }, 0                               },
+    { STATE_RENDER(WINED3DRS_PATCHEDGESTYLE),             { STATE_RENDER(WINED3DRS_PATCHEDGESTYLE),             state_patchedgestyle}, 0                               },
+    { STATE_RENDER(WINED3DRS_PATCHSEGMENTS),              { STATE_RENDER(WINED3DRS_PATCHSEGMENTS),              state_patchsegments }, 0                               },
+    { STATE_RENDER(WINED3DRS_POSITIONDEGREE),             { STATE_RENDER(WINED3DRS_POSITIONDEGREE),             state_positiondegree}, 0                               },
+    { STATE_RENDER(WINED3DRS_NORMALDEGREE),               { STATE_RENDER(WINED3DRS_NORMALDEGREE),               state_normaldegree  }, 0                               },
+    { STATE_RENDER(WINED3DRS_MINTESSELLATIONLEVEL),       { STATE_RENDER(WINED3DRS_ENABLEADAPTIVETESSELLATION), state_tessellation  }, 0                               },
+    { STATE_RENDER(WINED3DRS_MAXTESSELLATIONLEVEL),       { STATE_RENDER(WINED3DRS_ENABLEADAPTIVETESSELLATION), state_tessellation  }, 0                               },
+    { STATE_RENDER(WINED3DRS_ADAPTIVETESS_X),             { STATE_RENDER(WINED3DRS_ENABLEADAPTIVETESSELLATION), state_tessellation  }, 0                               },
+    { STATE_RENDER(WINED3DRS_ADAPTIVETESS_Y),             { STATE_RENDER(WINED3DRS_ENABLEADAPTIVETESSELLATION), state_tessellation  }, 0                               },
+    { STATE_RENDER(WINED3DRS_ADAPTIVETESS_Z),             { STATE_RENDER(WINED3DRS_ENABLEADAPTIVETESSELLATION), state_tessellation  }, 0                               },
+    { STATE_RENDER(WINED3DRS_ADAPTIVETESS_W),             { STATE_RENDER(WINED3DRS_ENABLEADAPTIVETESSELLATION), state_tessellation  }, 0                               },
+    { STATE_RENDER(WINED3DRS_ENABLEADAPTIVETESSELLATION), { STATE_RENDER(WINED3DRS_ENABLEADAPTIVETESSELLATION), state_tessellation  }, 0                               },
+    { STATE_RENDER(WINED3DRS_MULTISAMPLEANTIALIAS),       { STATE_RENDER(WINED3DRS_MULTISAMPLEANTIALIAS),       state_msaa          }, ARB_MULTISAMPLE                 },
+    { STATE_RENDER(WINED3DRS_MULTISAMPLEANTIALIAS),       { STATE_RENDER(WINED3DRS_MULTISAMPLEANTIALIAS),       state_msaa_w        }, 0                               },
+    { STATE_RENDER(WINED3DRS_MULTISAMPLEMASK),            { STATE_RENDER(WINED3DRS_MULTISAMPLEMASK),            state_multisampmask }, 0                               },
+    { STATE_RENDER(WINED3DRS_COLORWRITEENABLE),           { STATE_RENDER(WINED3DRS_COLORWRITEENABLE),           state_colorwrite    }, 0                               },
+    { STATE_RENDER(WINED3DRS_BLENDOP),                    { STATE_RENDER(WINED3DRS_BLENDOP),                    state_blendop       }, EXT_BLEND_MINMAX                },
+    { STATE_RENDER(WINED3DRS_BLENDOP),                    { STATE_RENDER(WINED3DRS_BLENDOP),                    state_blendop_w     }, 0                               },
+    { STATE_RENDER(WINED3DRS_SCISSORTESTENABLE),          { STATE_RENDER(WINED3DRS_SCISSORTESTENABLE),          state_scissor       }, 0                               },
+    { STATE_RENDER(WINED3DRS_SLOPESCALEDEPTHBIAS),        { STATE_RENDER(WINED3DRS_DEPTHBIAS),                  state_depthbias     }, 0                               },
+    { STATE_RENDER(WINED3DRS_COLORWRITEENABLE1),          { STATE_RENDER(WINED3DRS_COLORWRITEENABLE),           state_colorwrite    }, 0                               },
+    { STATE_RENDER(WINED3DRS_COLORWRITEENABLE2),          { STATE_RENDER(WINED3DRS_COLORWRITEENABLE),           state_colorwrite    }, 0                               },
+    { STATE_RENDER(WINED3DRS_COLORWRITEENABLE3),          { STATE_RENDER(WINED3DRS_COLORWRITEENABLE),           state_colorwrite    }, 0                               },
+    { STATE_RENDER(WINED3DRS_BLENDFACTOR),                { STATE_RENDER(WINED3DRS_BLENDFACTOR),                state_blendfactor   }, EXT_BLEND_COLOR                 },
+    { STATE_RENDER(WINED3DRS_BLENDFACTOR),                { STATE_RENDER(WINED3DRS_BLENDFACTOR),                state_blendfactor_w }, 0                               },
+    { STATE_RENDER(WINED3DRS_DEPTHBIAS),                  { STATE_RENDER(WINED3DRS_DEPTHBIAS),                  state_depthbias     }, 0                               },
+    /* Samplers */
+    { STATE_SAMPLER(0),                                   { STATE_SAMPLER(0),                                   sampler             }, 0                               },
+    { STATE_SAMPLER(1),                                   { STATE_SAMPLER(1),                                   sampler             }, 0                               },
+    { STATE_SAMPLER(2),                                   { STATE_SAMPLER(2),                                   sampler             }, 0                               },
+    { STATE_SAMPLER(3),                                   { STATE_SAMPLER(3),                                   sampler             }, 0                               },
+    { STATE_SAMPLER(4),                                   { STATE_SAMPLER(4),                                   sampler             }, 0                               },
+    { STATE_SAMPLER(5),                                   { STATE_SAMPLER(5),                                   sampler             }, 0                               },
+    { STATE_SAMPLER(6),                                   { STATE_SAMPLER(6),                                   sampler             }, 0                               },
+    { STATE_SAMPLER(7),                                   { STATE_SAMPLER(7),                                   sampler             }, 0                               },
+    { STATE_SAMPLER(8),                                   { STATE_SAMPLER(8),                                   sampler             }, 0                               },
+    { STATE_SAMPLER(9),                                   { STATE_SAMPLER(9),                                   sampler             }, 0                               },
+    { STATE_SAMPLER(10),                                  { STATE_SAMPLER(10),                                  sampler             }, 0                               },
+    { STATE_SAMPLER(11),                                  { STATE_SAMPLER(11),                                  sampler             }, 0                               },
+    { STATE_SAMPLER(12),                                  { STATE_SAMPLER(12),                                  sampler             }, 0                               },
+    { STATE_SAMPLER(13),                                  { STATE_SAMPLER(13),                                  sampler             }, 0                               },
+    { STATE_SAMPLER(14),                                  { STATE_SAMPLER(14),                                  sampler             }, 0                               },
+    { STATE_SAMPLER(15),                                  { STATE_SAMPLER(15),                                  sampler             }, 0                               },
+    { STATE_SAMPLER(16), /* Vertex sampler 0 */           { STATE_SAMPLER(16),                                  sampler             }, 0                               },
+    { STATE_SAMPLER(17), /* Vertex sampler 1 */           { STATE_SAMPLER(17),                                  sampler             }, 0                               },
+    { STATE_SAMPLER(18), /* Vertex sampler 2 */           { STATE_SAMPLER(18),                                  sampler             }, 0                               },
+    { STATE_SAMPLER(19), /* Vertex sampler 3 */           { STATE_SAMPLER(19),                                  sampler             }, 0                               },
+    {0 /* Terminate */,                                   { 0,                                                  0                   }, 0                               },
+};
+
+const struct StateEntryTemplate ffp_vertexstate_template[] = {
+    { STATE_VDECL,                                        { STATE_VDECL,                                        vertexdeclaration   }, 0                               },
+    { STATE_VSHADER,                                      { STATE_VDECL,                                        vertexdeclaration   }, 0                               },
+    { STATE_MATERIAL,                                     { STATE_RENDER(WINED3DRS_SPECULARENABLE),             state_specularenable}, 0                               },
+    { STATE_RENDER(WINED3DRS_SPECULARENABLE),             { STATE_RENDER(WINED3DRS_SPECULARENABLE),             state_specularenable}, 0                               },
+      /* Clip planes */
+    { STATE_CLIPPLANE(0),                                 { STATE_CLIPPLANE(0),                                 clipplane           }, 0                               },
+    { STATE_CLIPPLANE(1),                                 { STATE_CLIPPLANE(1),                                 clipplane           }, 0                               },
+    { STATE_CLIPPLANE(2),                                 { STATE_CLIPPLANE(2),                                 clipplane           }, 0                               },
+    { STATE_CLIPPLANE(3),                                 { STATE_CLIPPLANE(3),                                 clipplane           }, 0                               },
+    { STATE_CLIPPLANE(4),                                 { STATE_CLIPPLANE(4),                                 clipplane           }, 0                               },
+    { STATE_CLIPPLANE(5),                                 { STATE_CLIPPLANE(5),                                 clipplane           }, 0                               },
+    { STATE_CLIPPLANE(6),                                 { STATE_CLIPPLANE(6),                                 clipplane           }, 0                               },
+    { STATE_CLIPPLANE(7),                                 { STATE_CLIPPLANE(7),                                 clipplane           }, 0                               },
+    { STATE_CLIPPLANE(8),                                 { STATE_CLIPPLANE(8),                                 clipplane           }, 0                               },
+    { STATE_CLIPPLANE(9),                                 { STATE_CLIPPLANE(9),                                 clipplane           }, 0                               },
+    { STATE_CLIPPLANE(10),                                { STATE_CLIPPLANE(10),                                clipplane           }, 0                               },
+    { STATE_CLIPPLANE(11),                                { STATE_CLIPPLANE(11),                                clipplane           }, 0                               },
+    { STATE_CLIPPLANE(12),                                { STATE_CLIPPLANE(12),                                clipplane           }, 0                               },
+    { STATE_CLIPPLANE(13),                                { STATE_CLIPPLANE(13),                                clipplane           }, 0                               },
+    { STATE_CLIPPLANE(14),                                { STATE_CLIPPLANE(14),                                clipplane           }, 0                               },
+    { STATE_CLIPPLANE(15),                                { STATE_CLIPPLANE(15),                                clipplane           }, 0                               },
+    { STATE_CLIPPLANE(16),                                { STATE_CLIPPLANE(16),                                clipplane           }, 0                               },
+    { STATE_CLIPPLANE(17),                                { STATE_CLIPPLANE(17),                                clipplane           }, 0                               },
+    { STATE_CLIPPLANE(18),                                { STATE_CLIPPLANE(18),                                clipplane           }, 0                               },
+    { STATE_CLIPPLANE(19),                                { STATE_CLIPPLANE(19),                                clipplane           }, 0                               },
+    { STATE_CLIPPLANE(20),                                { STATE_CLIPPLANE(20),                                clipplane           }, 0                               },
+    { STATE_CLIPPLANE(21),                                { STATE_CLIPPLANE(21),                                clipplane           }, 0                               },
+    { STATE_CLIPPLANE(22),                                { STATE_CLIPPLANE(22),                                clipplane           }, 0                               },
+    { STATE_CLIPPLANE(23),                                { STATE_CLIPPLANE(23),                                clipplane           }, 0                               },
+    { STATE_CLIPPLANE(24),                                { STATE_CLIPPLANE(24),                                clipplane           }, 0                               },
+    { STATE_CLIPPLANE(25),                                { STATE_CLIPPLANE(25),                                clipplane           }, 0                               },
+    { STATE_CLIPPLANE(26),                                { STATE_CLIPPLANE(26),                                clipplane           }, 0                               },
+    { STATE_CLIPPLANE(27),                                { STATE_CLIPPLANE(27),                                clipplane           }, 0                               },
+    { STATE_CLIPPLANE(28),                                { STATE_CLIPPLANE(28),                                clipplane           }, 0                               },
+    { STATE_CLIPPLANE(29),                                { STATE_CLIPPLANE(29),                                clipplane           }, 0                               },
+    { STATE_CLIPPLANE(30),                                { STATE_CLIPPLANE(30),                                clipplane           }, 0                               },
+    { STATE_CLIPPLANE(31),                                { STATE_CLIPPLANE(31),                                clipplane           }, 0                               },
+      /* Lights */
+    { STATE_ACTIVELIGHT(0),                               { STATE_ACTIVELIGHT(0),                               light               }, 0                               },
+    { STATE_ACTIVELIGHT(1),                               { STATE_ACTIVELIGHT(1),                               light               }, 0                               },
+    { STATE_ACTIVELIGHT(2),                               { STATE_ACTIVELIGHT(2),                               light               }, 0                               },
+    { STATE_ACTIVELIGHT(3),                               { STATE_ACTIVELIGHT(3),                               light               }, 0                               },
+    { STATE_ACTIVELIGHT(4),                               { STATE_ACTIVELIGHT(4),                               light               }, 0                               },
+    { STATE_ACTIVELIGHT(5),                               { STATE_ACTIVELIGHT(5),                               light               }, 0                               },
+    { STATE_ACTIVELIGHT(6),                               { STATE_ACTIVELIGHT(6),                               light               }, 0                               },
+    { STATE_ACTIVELIGHT(7),                               { STATE_ACTIVELIGHT(7),                               light               }, 0                               },
+    /* Viewport */
+    { STATE_VIEWPORT,                                     { STATE_VIEWPORT,                                     viewport_vertexpart }, 0                               },
+      /* Transform states follow                    */
+    { STATE_TRANSFORM(WINED3DTS_VIEW),                    { STATE_TRANSFORM(WINED3DTS_VIEW),                    transform_view      }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_PROJECTION),              { STATE_TRANSFORM(WINED3DTS_PROJECTION),              transform_projection}, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_TEXTURE0),                { STATE_TEXTURESTAGE(0,WINED3DTSS_TEXTURETRANSFORMFLAGS),  transform_texture   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_TEXTURE1),                { STATE_TEXTURESTAGE(1,WINED3DTSS_TEXTURETRANSFORMFLAGS),  transform_texture   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_TEXTURE2),                { STATE_TEXTURESTAGE(2,WINED3DTSS_TEXTURETRANSFORMFLAGS),  transform_texture   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_TEXTURE3),                { STATE_TEXTURESTAGE(3,WINED3DTSS_TEXTURETRANSFORMFLAGS),  transform_texture   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_TEXTURE4),                { STATE_TEXTURESTAGE(4,WINED3DTSS_TEXTURETRANSFORMFLAGS),  transform_texture   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_TEXTURE5),                { STATE_TEXTURESTAGE(5,WINED3DTSS_TEXTURETRANSFORMFLAGS),  transform_texture   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_TEXTURE6),                { STATE_TEXTURESTAGE(6,WINED3DTSS_TEXTURETRANSFORMFLAGS),  transform_texture   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_TEXTURE7),                { STATE_TEXTURESTAGE(7,WINED3DTSS_TEXTURETRANSFORMFLAGS),  transform_texture   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(  0)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(  0)),        transform_world     }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(  1)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(  1)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(  2)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(  2)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(  3)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(  3)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(  4)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(  4)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(  5)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(  5)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(  6)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(  6)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(  7)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(  7)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(  8)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(  8)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(  9)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(  9)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 10)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 10)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 11)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 11)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 12)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 12)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 13)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 13)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 14)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 14)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 15)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 15)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 16)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 16)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 17)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 17)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 18)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 18)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 19)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 19)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 20)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 20)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 21)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 21)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 22)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 22)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 23)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 23)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 24)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 24)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 25)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 25)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 26)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 26)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 27)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 27)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 28)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 28)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 29)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 29)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 30)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 30)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 31)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 31)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 32)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 32)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 33)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 33)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 34)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 34)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 35)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 35)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 36)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 36)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 37)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 37)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 38)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 38)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 39)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 39)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 40)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 40)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 41)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 41)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 42)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 42)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 43)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 43)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 44)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 44)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 45)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 45)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 46)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 46)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 47)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 47)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 48)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 48)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 49)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 49)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 50)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 50)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 51)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 51)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 52)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 52)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 53)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 53)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 54)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 54)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 55)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 55)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 56)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 56)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 57)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 57)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 58)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 58)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 59)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 59)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 60)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 60)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 61)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 61)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 62)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 62)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 63)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 63)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 64)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 64)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 65)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 65)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 66)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 66)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 67)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 67)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 68)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 68)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 69)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 69)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 70)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 70)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 71)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 71)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 72)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 72)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 73)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 73)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 74)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 74)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 75)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 75)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 76)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 76)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 77)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 77)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 78)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 78)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 79)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 79)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 80)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 80)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 81)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 81)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 82)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 82)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 83)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 83)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 84)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 84)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 85)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 85)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 86)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 86)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 87)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 87)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 88)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 88)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 89)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 89)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 90)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 90)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 91)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 91)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 92)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 92)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 93)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 93)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 94)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 94)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 95)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 95)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 96)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 96)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 97)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 97)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 98)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 98)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 99)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX( 99)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(100)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(100)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(101)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(101)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(102)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(102)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(103)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(103)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(104)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(104)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(105)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(105)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(106)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(106)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(107)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(107)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(108)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(108)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(109)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(109)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(110)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(110)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(111)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(111)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(112)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(112)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(113)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(113)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(114)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(114)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(115)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(115)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(116)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(116)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(117)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(117)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(118)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(118)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(119)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(119)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(120)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(120)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(121)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(121)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(122)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(122)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(123)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(123)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(124)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(124)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(125)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(125)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(126)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(126)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(127)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(127)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(128)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(128)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(129)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(129)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(130)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(130)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(131)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(131)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(132)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(132)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(133)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(133)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(134)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(134)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(135)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(135)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(136)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(136)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(137)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(137)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(138)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(138)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(139)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(139)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(140)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(140)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(141)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(141)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(142)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(142)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(143)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(143)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(144)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(144)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(145)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(145)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(146)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(146)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(147)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(147)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(148)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(148)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(149)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(149)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(150)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(150)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(151)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(151)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(152)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(152)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(153)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(153)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(154)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(154)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(155)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(155)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(156)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(156)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(157)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(157)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(158)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(158)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(159)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(159)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(160)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(160)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(161)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(161)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(162)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(162)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(163)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(163)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(164)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(164)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(165)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(165)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(166)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(166)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(167)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(167)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(168)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(168)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(169)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(169)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(170)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(170)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(171)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(171)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(172)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(172)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(173)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(173)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(174)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(174)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(175)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(175)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(176)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(176)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(177)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(177)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(178)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(178)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(179)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(179)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(180)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(180)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(181)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(181)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(182)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(182)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(183)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(183)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(184)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(184)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(185)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(185)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(186)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(186)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(187)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(187)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(188)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(188)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(189)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(189)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(190)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(190)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(191)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(191)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(192)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(192)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(193)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(193)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(194)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(194)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(195)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(195)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(196)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(196)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(197)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(197)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(198)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(198)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(199)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(199)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(200)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(200)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(201)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(201)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(202)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(202)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(203)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(203)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(204)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(204)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(205)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(205)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(206)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(206)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(207)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(207)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(208)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(208)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(209)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(209)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(210)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(210)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(211)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(211)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(212)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(212)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(213)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(213)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(214)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(214)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(215)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(215)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(216)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(216)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(217)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(217)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(218)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(218)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(219)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(219)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(220)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(220)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(221)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(221)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(222)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(222)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(223)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(223)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(224)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(224)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(225)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(225)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(226)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(226)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(227)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(227)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(228)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(228)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(229)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(229)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(230)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(230)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(231)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(231)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(232)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(232)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(233)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(233)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(234)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(234)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(235)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(235)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(236)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(236)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(237)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(237)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(238)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(238)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(239)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(239)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(240)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(240)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(241)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(241)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(242)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(242)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(243)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(243)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(244)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(244)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(245)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(245)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(246)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(246)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(247)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(247)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(248)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(248)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(249)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(249)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(250)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(250)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(251)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(251)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(252)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(252)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(253)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(253)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(254)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(254)),        transform_worldex   }, 0                               },
+    { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(255)),        { STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(255)),        transform_worldex   }, 0                               },
+    { STATE_TEXTURESTAGE(0,WINED3DTSS_TEXTURETRANSFORMFLAGS),{STATE_TEXTURESTAGE(0,WINED3DTSS_TEXTURETRANSFORMFLAGS),transform_texture   }, 0                               },
+    { STATE_TEXTURESTAGE(1,WINED3DTSS_TEXTURETRANSFORMFLAGS),{STATE_TEXTURESTAGE(1,WINED3DTSS_TEXTURETRANSFORMFLAGS),transform_texture   }, 0                               },
+    { STATE_TEXTURESTAGE(2,WINED3DTSS_TEXTURETRANSFORMFLAGS),{STATE_TEXTURESTAGE(2,WINED3DTSS_TEXTURETRANSFORMFLAGS),transform_texture   }, 0                               },
+    { STATE_TEXTURESTAGE(3,WINED3DTSS_TEXTURETRANSFORMFLAGS),{STATE_TEXTURESTAGE(3,WINED3DTSS_TEXTURETRANSFORMFLAGS),transform_texture   }, 0                               },
+    { STATE_TEXTURESTAGE(4,WINED3DTSS_TEXTURETRANSFORMFLAGS),{STATE_TEXTURESTAGE(4,WINED3DTSS_TEXTURETRANSFORMFLAGS),transform_texture   }, 0                               },
+    { STATE_TEXTURESTAGE(5,WINED3DTSS_TEXTURETRANSFORMFLAGS),{STATE_TEXTURESTAGE(5,WINED3DTSS_TEXTURETRANSFORMFLAGS),transform_texture   }, 0                               },
+    { STATE_TEXTURESTAGE(6,WINED3DTSS_TEXTURETRANSFORMFLAGS),{STATE_TEXTURESTAGE(6,WINED3DTSS_TEXTURETRANSFORMFLAGS),transform_texture   }, 0                               },
+    { STATE_TEXTURESTAGE(7,WINED3DTSS_TEXTURETRANSFORMFLAGS),{STATE_TEXTURESTAGE(7,WINED3DTSS_TEXTURETRANSFORMFLAGS),transform_texture   }, 0                               },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_TEXCOORDINDEX),    { STATE_TEXTURESTAGE(0, WINED3DTSS_TEXCOORDINDEX),    tex_coordindex      }, 0                               },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_TEXCOORDINDEX),    { STATE_TEXTURESTAGE(1, WINED3DTSS_TEXCOORDINDEX),    tex_coordindex      }, 0                               },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_TEXCOORDINDEX),    { STATE_TEXTURESTAGE(2, WINED3DTSS_TEXCOORDINDEX),    tex_coordindex      }, 0                               },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_TEXCOORDINDEX),    { STATE_TEXTURESTAGE(3, WINED3DTSS_TEXCOORDINDEX),    tex_coordindex      }, 0                               },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_TEXCOORDINDEX),    { STATE_TEXTURESTAGE(4, WINED3DTSS_TEXCOORDINDEX),    tex_coordindex      }, 0                               },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_TEXCOORDINDEX),    { STATE_TEXTURESTAGE(5, WINED3DTSS_TEXCOORDINDEX),    tex_coordindex      }, 0                               },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_TEXCOORDINDEX),    { STATE_TEXTURESTAGE(6, WINED3DTSS_TEXCOORDINDEX),    tex_coordindex      }, 0                               },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_TEXCOORDINDEX),    { STATE_TEXTURESTAGE(7, WINED3DTSS_TEXCOORDINDEX),    tex_coordindex      }, 0                               },
+      /* Fog */
+    { STATE_RENDER(WINED3DRS_FOGENABLE),                  { STATE_RENDER(WINED3DRS_FOGENABLE),                  state_fog           }, 0                               },
+    { STATE_RENDER(WINED3DRS_FOGTABLEMODE),               { STATE_RENDER(WINED3DRS_FOGENABLE),                  state_fog           }, 0                               },
+    { STATE_RENDER(WINED3DRS_FOGSTART),                   { STATE_RENDER(WINED3DRS_FOGENABLE),                  state_fog           }, 0                               },
+    { STATE_RENDER(WINED3DRS_FOGEND),                     { STATE_RENDER(WINED3DRS_FOGENABLE),                  state_fog           }, 0                               },
+    { STATE_RENDER(WINED3DRS_FOGVERTEXMODE),              { STATE_RENDER(WINED3DRS_FOGENABLE),                  state_fog           }, 0                               },
+    { STATE_RENDER(WINED3DRS_FOGCOLOR),                   { STATE_RENDER(WINED3DRS_FOGCOLOR),                   state_fogcolor      }, 0                               },
+    { STATE_RENDER(WINED3DRS_FOGDENSITY),                 { STATE_RENDER(WINED3DRS_FOGDENSITY),                 state_fogdensity    }, 0                               },
+    { STATE_RENDER(WINED3DRS_RANGEFOGENABLE),             { STATE_RENDER(WINED3DRS_RANGEFOGENABLE),             state_rangefog      }, NV_FOG_DISTANCE                 },
+    { STATE_RENDER(WINED3DRS_RANGEFOGENABLE),             { STATE_RENDER(WINED3DRS_RANGEFOGENABLE),             state_rangefog_w    }, 0                               },
+    { STATE_RENDER(WINED3DRS_CLIPPING),                   { STATE_RENDER(WINED3DRS_CLIPPING),                   state_clipping      }, 0                               },
+    { STATE_RENDER(WINED3DRS_CLIPPLANEENABLE),            { STATE_RENDER(WINED3DRS_CLIPPING),                   state_clipping      }, 0                               },
+    { STATE_RENDER(WINED3DRS_LIGHTING),                   { STATE_RENDER(WINED3DRS_LIGHTING),                   state_lighting      }, 0                               },
+    { STATE_RENDER(WINED3DRS_AMBIENT),                    { STATE_RENDER(WINED3DRS_AMBIENT),                    state_ambient       }, 0                               },
+    { STATE_RENDER(WINED3DRS_COLORVERTEX),                { STATE_RENDER(WINED3DRS_COLORVERTEX),                state_colormat      }, 0                               },
+    { STATE_RENDER(WINED3DRS_LOCALVIEWER),                { STATE_RENDER(WINED3DRS_LOCALVIEWER),                state_localviewer   }, 0                               },
+    { STATE_RENDER(WINED3DRS_NORMALIZENORMALS),           { STATE_RENDER(WINED3DRS_NORMALIZENORMALS),           state_normalize     }, 0                               },
+    { STATE_RENDER(WINED3DRS_DIFFUSEMATERIALSOURCE),      { STATE_RENDER(WINED3DRS_COLORVERTEX),                state_colormat      }, 0                               },
+    { STATE_RENDER(WINED3DRS_SPECULARMATERIALSOURCE),     { STATE_RENDER(WINED3DRS_COLORVERTEX),                state_colormat      }, 0                               },
+    { STATE_RENDER(WINED3DRS_AMBIENTMATERIALSOURCE),      { STATE_RENDER(WINED3DRS_COLORVERTEX),                state_colormat      }, 0                               },
+    { STATE_RENDER(WINED3DRS_EMISSIVEMATERIALSOURCE),     { STATE_RENDER(WINED3DRS_COLORVERTEX),                state_colormat      }, 0                               },
+    { STATE_RENDER(WINED3DRS_VERTEXBLEND),                { STATE_RENDER(WINED3DRS_VERTEXBLEND),                state_vertexblend   }, ARB_VERTEX_BLEND                },
+    { STATE_RENDER(WINED3DRS_VERTEXBLEND),                { STATE_RENDER(WINED3DRS_VERTEXBLEND),                state_vertexblend_w }, 0                               },
+    { STATE_RENDER(WINED3DRS_POINTSIZE),                  { STATE_RENDER(WINED3DRS_POINTSCALEENABLE),           state_pscale        }, 0                               },
+    { STATE_RENDER(WINED3DRS_POINTSIZE_MIN),              { STATE_RENDER(WINED3DRS_POINTSIZE_MIN),              state_psizemin_arb  }, ARB_POINT_PARAMETERS            },
+    { STATE_RENDER(WINED3DRS_POINTSIZE_MIN),              { STATE_RENDER(WINED3DRS_POINTSIZE_MIN),              state_psizemin_ext  }, EXT_POINT_PARAMETERS            },
+    { STATE_RENDER(WINED3DRS_POINTSIZE_MIN),              { STATE_RENDER(WINED3DRS_POINTSIZE_MIN),              state_psizemin_w    }, 0                               },
+    { STATE_RENDER(WINED3DRS_POINTSPRITEENABLE),          { STATE_RENDER(WINED3DRS_POINTSPRITEENABLE),          state_pointsprite   }, ARB_POINT_SPRITE                },
+    { STATE_RENDER(WINED3DRS_POINTSPRITEENABLE),          { STATE_RENDER(WINED3DRS_POINTSPRITEENABLE),          state_pointsprite_w }, 0                               },
+    { STATE_RENDER(WINED3DRS_POINTSCALEENABLE),           { STATE_RENDER(WINED3DRS_POINTSCALEENABLE),           state_pscale        }, 0                               },
+    { STATE_RENDER(WINED3DRS_POINTSCALE_A),               { STATE_RENDER(WINED3DRS_POINTSCALEENABLE),           state_pscale        }, 0                               },
+    { STATE_RENDER(WINED3DRS_POINTSCALE_B),               { STATE_RENDER(WINED3DRS_POINTSCALEENABLE),           state_pscale        }, 0                               },
+    { STATE_RENDER(WINED3DRS_POINTSCALE_C),               { STATE_RENDER(WINED3DRS_POINTSCALEENABLE),           state_pscale        }, 0                               },
+    { STATE_RENDER(WINED3DRS_POINTSIZE_MAX),              { STATE_RENDER(WINED3DRS_POINTSIZE_MIN),              state_psizemin_arb  }, ARB_POINT_PARAMETERS            },
+    { STATE_RENDER(WINED3DRS_POINTSIZE_MAX),              { STATE_RENDER(WINED3DRS_POINTSIZE_MIN),              state_psizemin_ext  }, EXT_POINT_PARAMETERS            },
+    { STATE_RENDER(WINED3DRS_POINTSIZE_MAX),              { STATE_RENDER(WINED3DRS_POINTSIZE_MIN),              state_psizemin_w    }, 0                               },
+    /* pixel shaders need a different fog input */
+    { STATE_PIXELSHADER,                                  { STATE_PIXELSHADER,                                  apply_pshader_fog   }, 0                               },
+    /* Samplers for NP2 texture matrix adjustions. They are not needed if GL_ARB_texture_non_power_of_two is supported,
+     * so register a NULL state handler in that case to get the vertex part of sampler() skipped(VTF is handled in the misc states.
+     * otherwise, register sampler_texmatrix, which takes care of updating the texture matrix
+     */
+    { STATE_SAMPLER(0),                                   { 0,                                                  NULL                }, ARB_TEXTURE_NON_POWER_OF_TWO    },
+    { STATE_SAMPLER(0),                                   { 0,                                                  NULL                }, WINE_NORMALIZED_TEXRECT         },
+    { STATE_SAMPLER(0),                                   { STATE_SAMPLER(0),                                   sampler_texmatrix   }, 0                               },
+    { STATE_SAMPLER(1),                                   { 0,                                                  NULL                }, ARB_TEXTURE_NON_POWER_OF_TWO    },
+    { STATE_SAMPLER(1),                                   { 0,                                                  NULL                }, WINE_NORMALIZED_TEXRECT         },
+    { STATE_SAMPLER(1),                                   { STATE_SAMPLER(1),                                   sampler_texmatrix   }, 0                               },
+    { STATE_SAMPLER(2),                                   { 0,                                                  NULL                }, ARB_TEXTURE_NON_POWER_OF_TWO    },
+    { STATE_SAMPLER(2),                                   { 0,                                                  NULL                }, WINE_NORMALIZED_TEXRECT         },
+    { STATE_SAMPLER(2),                                   { STATE_SAMPLER(2),                                   sampler_texmatrix   }, 0                               },
+    { STATE_SAMPLER(3),                                   { 0,                                                  NULL                }, ARB_TEXTURE_NON_POWER_OF_TWO    },
+    { STATE_SAMPLER(3),                                   { 0,                                                  NULL                }, WINE_NORMALIZED_TEXRECT         },
+    { STATE_SAMPLER(3),                                   { STATE_SAMPLER(3),                                   sampler_texmatrix   }, 0                               },
+    { STATE_SAMPLER(4),                                   { 0,                                                  NULL                }, ARB_TEXTURE_NON_POWER_OF_TWO    },
+    { STATE_SAMPLER(4),                                   { 0,                                                  NULL                }, WINE_NORMALIZED_TEXRECT         },
+    { STATE_SAMPLER(4),                                   { STATE_SAMPLER(4),                                   sampler_texmatrix   }, 0                               },
+    { STATE_SAMPLER(5),                                   { 0,                                                  NULL                }, ARB_TEXTURE_NON_POWER_OF_TWO    },
+    { STATE_SAMPLER(5),                                   { 0,                                                  NULL                }, WINE_NORMALIZED_TEXRECT         },
+    { STATE_SAMPLER(5),                                   { STATE_SAMPLER(5),                                   sampler_texmatrix   }, 0                               },
+    { STATE_SAMPLER(6),                                   { 0,                                                  NULL                }, ARB_TEXTURE_NON_POWER_OF_TWO    },
+    { STATE_SAMPLER(6),                                   { 0,                                                  NULL                }, WINE_NORMALIZED_TEXRECT         },
+    { STATE_SAMPLER(6),                                   { STATE_SAMPLER(6),                                   sampler_texmatrix   }, 0                               },
+    { STATE_SAMPLER(7),                                   { 0,                                                  NULL                }, ARB_TEXTURE_NON_POWER_OF_TWO    },
+    { STATE_SAMPLER(7),                                   { 0,                                                  NULL                }, WINE_NORMALIZED_TEXRECT         },
+    { STATE_SAMPLER(7),                                   { STATE_SAMPLER(7),                                   sampler_texmatrix   }, 0                               },
+    {0 /* Terminate */,                                   { 0,                                                  0                   }, 0                               },
+};
+
+static const struct StateEntryTemplate ffp_fragmentstate_template[] = {
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_COLORARG1),        { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_COLORARG2),        { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAOP),          { STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAARG1),        { STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAARG2),        { STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_COLORARG0),        { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAARG0),        { STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_RESULTARG),        { STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(0, WINED3DTSS_CONSTANT),         { 0 /* As long as we don't support D3DTA_CONSTANT */, state_nogl          }, 0                               },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_COLOROP),          { STATE_TEXTURESTAGE(1, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_COLORARG1),        { STATE_TEXTURESTAGE(1, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_COLORARG2),        { STATE_TEXTURESTAGE(1, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_ALPHAOP),          { STATE_TEXTURESTAGE(1, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_ALPHAARG1),        { STATE_TEXTURESTAGE(1, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_ALPHAARG2),        { STATE_TEXTURESTAGE(1, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_COLORARG0),        { STATE_TEXTURESTAGE(1, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_ALPHAARG0),        { STATE_TEXTURESTAGE(1, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_RESULTARG),        { STATE_TEXTURESTAGE(1, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(1, WINED3DTSS_CONSTANT),         { 0 /* As long as we don't support D3DTA_CONSTANT */, state_nogl          }, 0                               },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_COLOROP),          { STATE_TEXTURESTAGE(2, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_COLORARG1),        { STATE_TEXTURESTAGE(2, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_COLORARG2),        { STATE_TEXTURESTAGE(2, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_ALPHAOP),          { STATE_TEXTURESTAGE(2, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_ALPHAARG1),        { STATE_TEXTURESTAGE(2, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_ALPHAARG2),        { STATE_TEXTURESTAGE(2, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_COLORARG0),        { STATE_TEXTURESTAGE(2, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_ALPHAARG0),        { STATE_TEXTURESTAGE(2, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_RESULTARG),        { STATE_TEXTURESTAGE(2, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(2, WINED3DTSS_CONSTANT),         { 0 /* As long as we don't support D3DTA_CONSTANT */, state_nogl          }, 0                               },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_COLOROP),          { STATE_TEXTURESTAGE(3, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_COLORARG1),        { STATE_TEXTURESTAGE(3, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_COLORARG2),        { STATE_TEXTURESTAGE(3, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_ALPHAOP),          { STATE_TEXTURESTAGE(3, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_ALPHAARG1),        { STATE_TEXTURESTAGE(3, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_ALPHAARG2),        { STATE_TEXTURESTAGE(3, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_COLORARG0),        { STATE_TEXTURESTAGE(3, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_ALPHAARG0),        { STATE_TEXTURESTAGE(3, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_RESULTARG),        { STATE_TEXTURESTAGE(3, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(3, WINED3DTSS_CONSTANT),         { 0 /* As long as we don't support D3DTA_CONSTANT */, state_nogl          }, 0                               },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_COLOROP),          { STATE_TEXTURESTAGE(4, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_COLORARG1),        { STATE_TEXTURESTAGE(4, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_COLORARG2),        { STATE_TEXTURESTAGE(4, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_ALPHAOP),          { STATE_TEXTURESTAGE(4, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_ALPHAARG1),        { STATE_TEXTURESTAGE(4, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_ALPHAARG2),        { STATE_TEXTURESTAGE(4, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_COLORARG0),        { STATE_TEXTURESTAGE(4, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_ALPHAARG0),        { STATE_TEXTURESTAGE(4, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_RESULTARG),        { STATE_TEXTURESTAGE(4, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(4, WINED3DTSS_CONSTANT),         { 0 /* As long as we don't support D3DTA_CONSTANT */, state_nogl          }, 0                               },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_COLOROP),          { STATE_TEXTURESTAGE(5, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_COLORARG1),        { STATE_TEXTURESTAGE(5, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_COLORARG2),        { STATE_TEXTURESTAGE(5, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_ALPHAOP),          { STATE_TEXTURESTAGE(5, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_ALPHAARG1),        { STATE_TEXTURESTAGE(5, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_ALPHAARG2),        { STATE_TEXTURESTAGE(5, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_COLORARG0),        { STATE_TEXTURESTAGE(5, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_ALPHAARG0),        { STATE_TEXTURESTAGE(5, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_RESULTARG),        { STATE_TEXTURESTAGE(5, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(5, WINED3DTSS_CONSTANT),         { 0 /* As long as we don't support D3DTA_CONSTANT */, state_nogl          }, 0                               },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_COLOROP),          { STATE_TEXTURESTAGE(6, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_COLORARG1),        { STATE_TEXTURESTAGE(6, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_COLORARG2),        { STATE_TEXTURESTAGE(6, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_ALPHAOP),          { STATE_TEXTURESTAGE(6, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_ALPHAARG1),        { STATE_TEXTURESTAGE(6, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_ALPHAARG2),        { STATE_TEXTURESTAGE(6, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_COLORARG0),        { STATE_TEXTURESTAGE(6, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_ALPHAARG0),        { STATE_TEXTURESTAGE(6, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_RESULTARG),        { STATE_TEXTURESTAGE(6, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(6, WINED3DTSS_CONSTANT),         { 0 /* As long as we don't support D3DTA_CONSTANT */, state_nogl          }, 0                               },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_COLOROP),          { STATE_TEXTURESTAGE(7, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_COLORARG1),        { STATE_TEXTURESTAGE(7, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_COLORARG2),        { STATE_TEXTURESTAGE(7, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_ALPHAOP),          { STATE_TEXTURESTAGE(7, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_ALPHAARG1),        { STATE_TEXTURESTAGE(7, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_ALPHAARG2),        { STATE_TEXTURESTAGE(7, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_COLORARG0),        { STATE_TEXTURESTAGE(7, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_ALPHAARG0),        { STATE_TEXTURESTAGE(7, WINED3DTSS_ALPHAOP),          tex_alphaop         }, 0                               },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_RESULTARG),        { STATE_TEXTURESTAGE(7, WINED3DTSS_COLOROP),          tex_colorop         }, 0                               },
+    { STATE_TEXTURESTAGE(7, WINED3DTSS_CONSTANT),         { 0 /* As long as we don't support D3DTA_CONSTANT */, state_nogl          }, 0                               },
+    { STATE_PIXELSHADER,                                  { STATE_PIXELSHADER,                                  apply_pixelshader   }, 0                               },
+    { STATE_RENDER(WINED3DRS_SRGBWRITEENABLE),            { STATE_PIXELSHADER,                                  apply_pixelshader   }, 0                               },
+    { STATE_RENDER(WINED3DRS_BORDERCOLOR),                { STATE_RENDER(WINED3DRS_BORDERCOLOR),                state_bordercolor   }, 0                               },
+    { STATE_RENDER(WINED3DRS_TEXTUREFACTOR),              { STATE_RENDER(WINED3DRS_TEXTUREFACTOR),              state_texfactor     }, 0                               },
+    { STATE_SAMPLER(0),                                   { STATE_SAMPLER(0),                                   sampler_texdim      }, 0                               },
+    { STATE_SAMPLER(1),                                   { STATE_SAMPLER(1),                                   sampler_texdim      }, 0                               },
+    { STATE_SAMPLER(2),                                   { STATE_SAMPLER(2),                                   sampler_texdim      }, 0                               },
+    { STATE_SAMPLER(3),                                   { STATE_SAMPLER(3),                                   sampler_texdim      }, 0                               },
+    { STATE_SAMPLER(4),                                   { STATE_SAMPLER(4),                                   sampler_texdim      }, 0                               },
+    { STATE_SAMPLER(5),                                   { STATE_SAMPLER(5),                                   sampler_texdim      }, 0                               },
+    { STATE_SAMPLER(6),                                   { STATE_SAMPLER(6),                                   sampler_texdim      }, 0                               },
+    { STATE_SAMPLER(7),                                   { STATE_SAMPLER(7),                                   sampler_texdim      }, 0                               },
+    {0 /* Terminate */,                                   { 0,                                                  0                   }, 0                               },
+};
+#undef GLINFO_LOCATION
+
+#define GLINFO_LOCATION (*gl_info)
+static void ffp_enable(IWineD3DDevice *iface, BOOL enable) { }
+
+static void ffp_fragment_get_caps(WINED3DDEVTYPE devtype, const WineD3D_GL_Info *gl_info, struct fragment_caps *pCaps)
+{
+    pCaps->TextureOpCaps =  WINED3DTEXOPCAPS_ADD         |
+                            WINED3DTEXOPCAPS_ADDSIGNED   |
+                            WINED3DTEXOPCAPS_ADDSIGNED2X |
+                            WINED3DTEXOPCAPS_MODULATE    |
+                            WINED3DTEXOPCAPS_MODULATE2X  |
+                            WINED3DTEXOPCAPS_MODULATE4X  |
+                            WINED3DTEXOPCAPS_SELECTARG1  |
+                            WINED3DTEXOPCAPS_SELECTARG2  |
+                            WINED3DTEXOPCAPS_DISABLE;
+
+    if (GL_SUPPORT(ARB_TEXTURE_ENV_COMBINE) ||
+        GL_SUPPORT(EXT_TEXTURE_ENV_COMBINE) ||
+        GL_SUPPORT(NV_TEXTURE_ENV_COMBINE4)) {
+        pCaps->TextureOpCaps |= WINED3DTEXOPCAPS_BLENDDIFFUSEALPHA  |
+                                WINED3DTEXOPCAPS_BLENDTEXTUREALPHA  |
+                                WINED3DTEXOPCAPS_BLENDFACTORALPHA   |
+                                WINED3DTEXOPCAPS_BLENDCURRENTALPHA  |
+                                WINED3DTEXOPCAPS_LERP               |
+                                WINED3DTEXOPCAPS_SUBTRACT;
+    }
+    if (GL_SUPPORT(ATI_TEXTURE_ENV_COMBINE3) ||
+        GL_SUPPORT(NV_TEXTURE_ENV_COMBINE4)) {
+        pCaps->TextureOpCaps |= WINED3DTEXOPCAPS_ADDSMOOTH              |
+                                WINED3DTEXOPCAPS_MULTIPLYADD            |
+                                WINED3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR |
+                                WINED3DTEXOPCAPS_MODULATECOLOR_ADDALPHA |
+                                WINED3DTEXOPCAPS_BLENDTEXTUREALPHAPM;
+    }
+    if (GL_SUPPORT(ARB_TEXTURE_ENV_DOT3))
+        pCaps->TextureOpCaps |= WINED3DTEXOPCAPS_DOTPRODUCT3;
+
+    pCaps->MaxTextureBlendStages   = GL_LIMITS(texture_stages);
+    pCaps->MaxSimultaneousTextures = GL_LIMITS(textures);
+}
+
+static HRESULT ffp_fragment_alloc(IWineD3DDevice *iface) { return WINED3D_OK; }
+static void ffp_fragment_free(IWineD3DDevice *iface) {}
+static BOOL ffp_color_fixup_supported(struct color_fixup_desc fixup)
+{
+    if (TRACE_ON(d3d))
+    {
+        TRACE("Checking support for fixup:\n");
+        dump_color_fixup_desc(fixup);
+    }
+
+    /* We only support identity conversions. */
+    if (is_identity_fixup(fixup))
+    {
+        TRACE("[OK]\n");
+        return TRUE;
+    }
+
+    TRACE("[FAILED]\n");
+    return FALSE;
+}
+
+const struct fragment_pipeline ffp_fragment_pipeline = {
+    ffp_enable,
+    ffp_fragment_get_caps,
+    ffp_fragment_alloc,
+    ffp_fragment_free,
+    ffp_color_fixup_supported,
+    ffp_fragmentstate_template,
+    FALSE /* we cannot disable projected textures. The vertex pipe has to do it */
+};
+
+static unsigned int num_handlers(const APPLYSTATEFUNC *funcs)
+{
+    unsigned int i;
+    for(i = 0; funcs[i]; i++);
+    return i;
+}
+
+static void multistate_apply_2(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    stateblock->wineD3DDevice->multistate_funcs[state][0](state, stateblock, context);
+    stateblock->wineD3DDevice->multistate_funcs[state][1](state, stateblock, context);
+}
+
+static void multistate_apply_3(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    stateblock->wineD3DDevice->multistate_funcs[state][0](state, stateblock, context);
+    stateblock->wineD3DDevice->multistate_funcs[state][1](state, stateblock, context);
+    stateblock->wineD3DDevice->multistate_funcs[state][2](state, stateblock, context);
+}
+
+void compile_state_table(struct StateEntry *StateTable, APPLYSTATEFUNC **dev_multistate_funcs,
+        const WineD3D_GL_Info *gl_info, const struct StateEntryTemplate *vertex,
+        const struct fragment_pipeline *fragment, const struct StateEntryTemplate *misc)
+{
+    unsigned int i, type, handlers;
+    APPLYSTATEFUNC multistate_funcs[STATE_HIGHEST + 1][3];
+    const struct StateEntryTemplate *cur;
+    BOOL set[STATE_HIGHEST + 1];
+
+    memset(multistate_funcs, 0, sizeof(multistate_funcs));
+
+    for(i = 0; i < STATE_HIGHEST + 1; i++) {
+        StateTable[i].representative = 0;
+        StateTable[i].apply = state_undefined;
+    }
+
+    for(type = 0; type < 3; type++) {
+        /* This switch decides the order in which the states are applied */
+        switch(type) {
+            case 0: cur = misc; break;
+            case 1: cur = fragment->states; break;
+            case 2: cur = vertex; break;
+            default: cur = NULL; /* Stupid compiler */
+        }
+        if(!cur) continue;
+
+        /* GL extension filtering should not prevent multiple handlers being applied from different
+         * pipeline parts
+         */
+        memset(set, 0, sizeof(set));
+
+        for(i = 0; cur[i].state; i++) {
+
+            /* Only use the first matching state with the available extension from one template.
+             * e.g.
+             * {D3DRS_FOOBAR, {D3DRS_FOOBAR, func1}, XYZ_FANCY},
+             * {D3DRS_FOOBAR, {D3DRS_FOOBAR, func2}, 0        }
+             *
+             * if GL_XYZ_fancy is supported, ignore the 2nd line
+             */
+            if(set[cur[i].state]) continue;
+            /* Skip state lines depending on unsupported extensions */
+            if(cur[i].extension && !GL_SUPPORT(cur[i].extension)) continue;
+            set[cur[i].state] = TRUE;
+            /* In some cases having an extension means that nothing has to be
+             * done for a state, e.g. if GL_ARB_texture_non_power_of_two is
+             * supported, the texture coordinate fixup can be ignored. If the
+             * apply function is used, mark the state set(done above) to prevent
+             * applying later lines, but do not record anything in the state
+             * table
+             */
+            if(!cur[i].content.apply) continue;
+
+            handlers = num_handlers(multistate_funcs[cur[i].state]);
+            multistate_funcs[cur[i].state][handlers] = cur[i].content.apply;
+            switch(handlers) {
+                case 0:
+                    StateTable[cur[i].state].apply = cur[i].content.apply;
+                    break;
+                case 1:
+                    StateTable[cur[i].state].apply = multistate_apply_2;
+                    dev_multistate_funcs[cur[i].state] = HeapAlloc(GetProcessHeap(),
+                                                                   0,
+                                                                   sizeof(**dev_multistate_funcs) * 2);
+                    dev_multistate_funcs[cur[i].state][0] = multistate_funcs[cur[i].state][0];
+                    dev_multistate_funcs[cur[i].state][1] = multistate_funcs[cur[i].state][1];
+                    break;
+                case 2:
+                    StateTable[cur[i].state].apply = multistate_apply_3;
+                    HeapFree(GetProcessHeap(), 0, multistate_funcs[cur[i].state]);
+                    dev_multistate_funcs[cur[i].state] = HeapAlloc(GetProcessHeap(),
+                                                                   0,
+                                                                   sizeof(**dev_multistate_funcs) * 3);
+                    dev_multistate_funcs[cur[i].state][0] = multistate_funcs[cur[i].state][0];
+                    dev_multistate_funcs[cur[i].state][1] = multistate_funcs[cur[i].state][1];
+                    dev_multistate_funcs[cur[i].state][2] = multistate_funcs[cur[i].state][2];
+                    break;
+                default:
+                    ERR("Unexpected amount of state handlers for state %u: %u\n",
+                        cur[i].state, handlers + 1);
+            }
+
+            if(StateTable[cur[i].state].representative &&
+            StateTable[cur[i].state].representative != cur[i].content.representative) {
+                FIXME("State %u has different representatives in different pipeline parts\n",
+                    cur[i].state);
+            }
+            StateTable[cur[i].state].representative = cur[i].content.representative;
+        }
+    }
+}
+#undef GLINFO_LOCATION
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/stateblock.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/stateblock.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/stateblock.c	(revision 16410)
@@ -0,0 +1,1289 @@
+/*
+ * state block implementation
+ *
+ * Copyright 2002 Raphael Junqueira
+ * Copyright 2004 Jason Edmeades
+ * Copyright 2005 Oliver Stieber
+ * Copyright 2007 Stefan Dösinger for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d);
+#define GLINFO_LOCATION This->wineD3DDevice->adapter->gl_info
+
+/***************************************
+ * Stateblock helper functions follow
+ **************************************/
+
+/** Allocates the correct amount of space for pixel and vertex shader constants, 
+ * along with their set/changed flags on the given stateblock object
+ */
+HRESULT allocate_shader_constants(IWineD3DStateBlockImpl* object) {
+    
+    IWineD3DStateBlockImpl *This = object;
+
+#define WINED3D_MEMCHECK(_object) if (NULL == _object) { FIXME("Out of memory!\n"); return E_OUTOFMEMORY; }
+
+    /* Allocate space for floating point constants */
+    object->pixelShaderConstantF = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(float) * GL_LIMITS(pshader_constantsF) * 4);
+    WINED3D_MEMCHECK(object->pixelShaderConstantF);
+    object->changed.pixelShaderConstantsF = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(BOOL) * GL_LIMITS(pshader_constantsF));
+    WINED3D_MEMCHECK(object->changed.pixelShaderConstantsF);
+    object->vertexShaderConstantF = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(float) * GL_LIMITS(vshader_constantsF) * 4);
+    WINED3D_MEMCHECK(object->vertexShaderConstantF);
+    object->changed.vertexShaderConstantsF = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(BOOL) * GL_LIMITS(vshader_constantsF));
+    WINED3D_MEMCHECK(object->changed.vertexShaderConstantsF);
+    object->contained_vs_consts_f = HeapAlloc(GetProcessHeap(), 0, sizeof(DWORD) * GL_LIMITS(vshader_constantsF));
+    WINED3D_MEMCHECK(object->contained_vs_consts_f);
+    object->contained_ps_consts_f = HeapAlloc(GetProcessHeap(), 0, sizeof(DWORD) * GL_LIMITS(pshader_constantsF));
+    WINED3D_MEMCHECK(object->contained_ps_consts_f);
+
+    list_init(&object->set_vconstantsF);
+    list_init(&object->set_pconstantsF);
+
+#undef WINED3D_MEMCHECK
+
+    return WINED3D_OK;
+}
+
+/** Copy all members of one stateblock to another */
+static void stateblock_savedstates_copy(IWineD3DStateBlock* iface, SAVEDSTATES *dest, const SAVEDSTATES *source)
+{
+    IWineD3DStateBlockImpl *This = (IWineD3DStateBlockImpl *)iface;
+    unsigned bsize = sizeof(BOOL);
+
+    /* Single values */
+    dest->indices = source->indices;
+    dest->material = source->material;
+    dest->fvf = source->fvf;
+    dest->viewport = source->viewport;
+    dest->vertexDecl = source->vertexDecl;
+    dest->pixelShader = source->pixelShader;
+    dest->vertexShader = source->vertexShader;
+    dest->scissorRect = dest->scissorRect;
+
+    /* Fixed size arrays */
+    memcpy(dest->streamSource, source->streamSource, bsize * MAX_STREAMS);
+    memcpy(dest->streamFreq, source->streamFreq, bsize * MAX_STREAMS);
+    memcpy(dest->textures, source->textures, bsize * MAX_COMBINED_SAMPLERS);
+    memcpy(dest->transform, source->transform, bsize * (HIGHEST_TRANSFORMSTATE + 1));
+    memcpy(dest->renderState, source->renderState, bsize * (WINEHIGHEST_RENDER_STATE + 1));
+    memcpy(dest->textureState, source->textureState, bsize * MAX_TEXTURES * (WINED3D_HIGHEST_TEXTURE_STATE + 1));
+    memcpy(dest->samplerState, source->samplerState, bsize * MAX_COMBINED_SAMPLERS * (WINED3D_HIGHEST_SAMPLER_STATE + 1));
+    memcpy(dest->clipplane, source->clipplane, bsize * MAX_CLIPPLANES);
+    dest->pixelShaderConstantsB = source->pixelShaderConstantsB;
+    dest->pixelShaderConstantsI = source->pixelShaderConstantsI;
+    dest->vertexShaderConstantsB = source->vertexShaderConstantsB;
+    dest->vertexShaderConstantsI = source->vertexShaderConstantsI;
+
+    /* Dynamically sized arrays */
+    memcpy(dest->pixelShaderConstantsF, source->pixelShaderConstantsF, bsize * GL_LIMITS(pshader_constantsF));
+    memcpy(dest->vertexShaderConstantsF, source->vertexShaderConstantsF, bsize * GL_LIMITS(vshader_constantsF));
+}
+
+/** Set all members of a stateblock savedstate to the given value */
+void stateblock_savedstates_set(
+    IWineD3DStateBlock* iface,
+    SAVEDSTATES* states,
+    BOOL value) {
+    
+    IWineD3DStateBlockImpl *This = (IWineD3DStateBlockImpl *)iface;
+    unsigned bsize = sizeof(BOOL);
+
+    /* Single values */
+    states->indices = value;
+    states->material = value;
+    states->fvf = value;
+    states->viewport = value;
+    states->vertexDecl = value;
+    states->pixelShader = value;
+    states->vertexShader = value;
+    states->scissorRect = value;
+
+    /* Fixed size arrays */
+    memset(states->streamSource, value, bsize * MAX_STREAMS);
+    memset(states->streamFreq, value, bsize * MAX_STREAMS);
+    memset(states->textures, value, bsize * MAX_COMBINED_SAMPLERS);
+    memset(states->transform, value, bsize * (HIGHEST_TRANSFORMSTATE + 1));
+    memset(states->renderState, value, bsize * (WINEHIGHEST_RENDER_STATE + 1));
+    memset(states->textureState, value, bsize * MAX_TEXTURES * (WINED3D_HIGHEST_TEXTURE_STATE + 1));
+    memset(states->samplerState, value, bsize * MAX_COMBINED_SAMPLERS * (WINED3D_HIGHEST_SAMPLER_STATE + 1));
+    memset(states->clipplane, value, bsize * MAX_CLIPPLANES);
+    states->pixelShaderConstantsB = value ? 0xffff : 0;
+    states->pixelShaderConstantsI = value ? 0xffff : 0;
+    states->vertexShaderConstantsB = value ? 0xffff : 0;
+    states->vertexShaderConstantsI = value ? 0xffff : 0;
+
+    /* Dynamically sized arrays */
+    memset(states->pixelShaderConstantsF, value, bsize * GL_LIMITS(pshader_constantsF));
+    memset(states->vertexShaderConstantsF, value, bsize * GL_LIMITS(vshader_constantsF));
+}
+
+void stateblock_copy(
+    IWineD3DStateBlock* destination,
+    IWineD3DStateBlock* source) {
+    int l;
+
+    IWineD3DStateBlockImpl *This = (IWineD3DStateBlockImpl *)source;
+    IWineD3DStateBlockImpl *Dest = (IWineD3DStateBlockImpl *)destination;
+
+    /* IUnknown fields */
+    Dest->lpVtbl                = This->lpVtbl;
+    Dest->ref                   = This->ref;
+
+    /* IWineD3DStateBlock information */
+    Dest->parent                = This->parent;
+    Dest->wineD3DDevice         = This->wineD3DDevice;
+    Dest->blockType             = This->blockType;
+
+    /* Saved states */
+    stateblock_savedstates_copy(source, &Dest->changed, &This->changed);
+
+    /* Single items */
+    Dest->fvf = This->fvf;
+    Dest->vertexDecl = This->vertexDecl;
+    Dest->vertexShader = This->vertexShader;
+    Dest->streamIsUP = This->streamIsUP;
+    Dest->pIndexData = This->pIndexData;
+    Dest->baseVertexIndex = This->baseVertexIndex;
+    /* Dest->lights = This->lights; */
+    Dest->clip_status = This->clip_status;
+    Dest->viewport = This->viewport;
+    Dest->material = This->material;
+    Dest->pixelShader = This->pixelShader;
+    Dest->scissorRect = This->scissorRect;
+
+    /* Lights */
+    memset(This->activeLights, 0, sizeof(This->activeLights));
+    for(l = 0; l < LIGHTMAP_SIZE; l++) {
+        struct list *e1, *e2;
+        LIST_FOR_EACH_SAFE(e1, e2, &Dest->lightMap[l]) {
+            PLIGHTINFOEL *light = LIST_ENTRY(e1, PLIGHTINFOEL, entry);
+            list_remove(&light->entry);
+            HeapFree(GetProcessHeap(), 0, light);
+        }
+
+        LIST_FOR_EACH(e1, &This->lightMap[l]) {
+            PLIGHTINFOEL *light = LIST_ENTRY(e1, PLIGHTINFOEL, entry), *light2;
+            light2 = HeapAlloc(GetProcessHeap(), 0, sizeof(*light));
+            *light2 = *light;
+            list_add_tail(&Dest->lightMap[l], &light2->entry);
+            if(light2->glIndex != -1) Dest->activeLights[light2->glIndex] = light2;
+        }
+    }
+
+    /* Fixed size arrays */
+    memcpy(Dest->vertexShaderConstantB, This->vertexShaderConstantB, sizeof(BOOL) * MAX_CONST_B);
+    memcpy(Dest->vertexShaderConstantI, This->vertexShaderConstantI, sizeof(INT) * MAX_CONST_I * 4);
+    memcpy(Dest->pixelShaderConstantB, This->pixelShaderConstantB, sizeof(BOOL) * MAX_CONST_B);
+    memcpy(Dest->pixelShaderConstantI, This->pixelShaderConstantI, sizeof(INT) * MAX_CONST_I * 4);
+    
+    memcpy(Dest->streamStride, This->streamStride, sizeof(UINT) * MAX_STREAMS);
+    memcpy(Dest->streamOffset, This->streamOffset, sizeof(UINT) * MAX_STREAMS);
+    memcpy(Dest->streamSource, This->streamSource, sizeof(IWineD3DVertexBuffer*) * MAX_STREAMS);
+    memcpy(Dest->streamFreq,   This->streamFreq,   sizeof(UINT) * MAX_STREAMS);
+    memcpy(Dest->streamFlags,  This->streamFlags,  sizeof(UINT) * MAX_STREAMS);
+    memcpy(Dest->transforms,   This->transforms,   sizeof(WINED3DMATRIX) * (HIGHEST_TRANSFORMSTATE + 1));
+    memcpy(Dest->clipplane,    This->clipplane,    sizeof(double) * MAX_CLIPPLANES * 4);
+    memcpy(Dest->renderState,  This->renderState,  sizeof(DWORD) * (WINEHIGHEST_RENDER_STATE + 1));
+    memcpy(Dest->textures,     This->textures,     sizeof(IWineD3DBaseTexture*) * MAX_COMBINED_SAMPLERS);
+    memcpy(Dest->textureDimensions, This->textureDimensions, sizeof(int) * MAX_COMBINED_SAMPLERS);
+    memcpy(Dest->textureState, This->textureState, sizeof(DWORD) * MAX_TEXTURES * (WINED3D_HIGHEST_TEXTURE_STATE + 1));
+    memcpy(Dest->samplerState, This->samplerState, sizeof(DWORD) * MAX_COMBINED_SAMPLERS * (WINED3D_HIGHEST_SAMPLER_STATE + 1));
+
+    /* Dynamically sized arrays */
+    memcpy(Dest->vertexShaderConstantF, This->vertexShaderConstantF, sizeof(float) * GL_LIMITS(vshader_constantsF) * 4);
+    memcpy(Dest->pixelShaderConstantF,  This->pixelShaderConstantF,  sizeof(float) * GL_LIMITS(pshader_constantsF) * 4);
+}
+
+/**********************************************************
+ * IWineD3DStateBlockImpl IUnknown parts follows
+ **********************************************************/
+static HRESULT  WINAPI IWineD3DStateBlockImpl_QueryInterface(IWineD3DStateBlock *iface,REFIID riid,LPVOID *ppobj)
+{
+    IWineD3DStateBlockImpl *This = (IWineD3DStateBlockImpl *)iface;
+    TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj);
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IWineD3DBase)
+        || IsEqualGUID(riid, &IID_IWineD3DStateBlock)){
+        IUnknown_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG  WINAPI IWineD3DStateBlockImpl_AddRef(IWineD3DStateBlock *iface) {
+    IWineD3DStateBlockImpl *This = (IWineD3DStateBlockImpl *)iface;
+    ULONG refCount = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p) : AddRef increasing from %d\n", This, refCount - 1);
+    return refCount;
+}
+
+static ULONG  WINAPI IWineD3DStateBlockImpl_Release(IWineD3DStateBlock *iface) {
+    IWineD3DStateBlockImpl *This = (IWineD3DStateBlockImpl *)iface;
+    ULONG refCount = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) : Releasing from %d\n", This, refCount + 1);
+
+    if (!refCount) {
+        constants_entry *constant, *constant2;
+        int counter;
+
+        /* type 0 represents the primary stateblock, so free all the resources */
+        if (This->blockType == WINED3DSBT_INIT) {
+            /* NOTE: according to MSDN: The application is responsible for making sure the texture references are cleared down */
+            for (counter = 0; counter < MAX_COMBINED_SAMPLERS; counter++) {
+                if (This->textures[counter]) {
+                    /* release our 'internal' hold on the texture */
+                    if(0 != IWineD3DBaseTexture_Release(This->textures[counter])) {
+                        TRACE("Texture still referenced by stateblock, applications has leaked Stage = %u Texture = %p\n", counter, This->textures[counter]);
+                    }
+                }
+            }
+        }
+
+        for (counter = 0; counter < MAX_STREAMS; counter++) {
+            if(This->streamSource[counter]) {
+                if(0 != IWineD3DVertexBuffer_Release(This->streamSource[counter])) {
+                    TRACE("Vertex buffer still referenced by stateblock, applications has leaked Stream %u, buffer %p\n", counter, This->streamSource[counter]);
+                }
+            }
+        }
+        if(This->pIndexData) IWineD3DIndexBuffer_Release(This->pIndexData);
+        if(This->vertexShader) IWineD3DVertexShader_Release(This->vertexShader);
+        if(This->pixelShader) IWineD3DPixelShader_Release(This->pixelShader);
+
+        for(counter = 0; counter < LIGHTMAP_SIZE; counter++) {
+            struct list *e1, *e2;
+            LIST_FOR_EACH_SAFE(e1, e2, &This->lightMap[counter]) {
+                PLIGHTINFOEL *light = LIST_ENTRY(e1, PLIGHTINFOEL, entry);
+                list_remove(&light->entry);
+                HeapFree(GetProcessHeap(), 0, light);
+            }
+        }
+
+        HeapFree(GetProcessHeap(), 0, This->vertexShaderConstantF);
+        HeapFree(GetProcessHeap(), 0, This->changed.vertexShaderConstantsF);
+        HeapFree(GetProcessHeap(), 0, This->pixelShaderConstantF);
+        HeapFree(GetProcessHeap(), 0, This->changed.pixelShaderConstantsF);
+        HeapFree(GetProcessHeap(), 0, This->contained_vs_consts_f);
+        HeapFree(GetProcessHeap(), 0, This->contained_ps_consts_f);
+
+        LIST_FOR_EACH_ENTRY_SAFE(constant, constant2, &This->set_vconstantsF, constants_entry, entry) {
+            HeapFree(GetProcessHeap(), 0, constant);
+        }
+
+        LIST_FOR_EACH_ENTRY_SAFE(constant, constant2, &This->set_pconstantsF, constants_entry, entry) {
+            HeapFree(GetProcessHeap(), 0, constant);
+        }
+
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+    return refCount;
+}
+
+/**********************************************************
+ * IWineD3DStateBlockImpl parts follows
+ **********************************************************/
+static HRESULT  WINAPI IWineD3DStateBlockImpl_GetParent(IWineD3DStateBlock *iface, IUnknown **pParent) {
+    IWineD3DStateBlockImpl *This = (IWineD3DStateBlockImpl *)iface;
+    IUnknown_AddRef(This->parent);
+    *pParent = This->parent;
+    return WINED3D_OK;
+}
+
+static HRESULT  WINAPI IWineD3DStateBlockImpl_GetDevice(IWineD3DStateBlock *iface, IWineD3DDevice** ppDevice){
+
+    IWineD3DStateBlockImpl *This   = (IWineD3DStateBlockImpl *)iface;
+
+    *ppDevice = (IWineD3DDevice*)This->wineD3DDevice;
+    IWineD3DDevice_AddRef(*ppDevice);
+    return WINED3D_OK;
+
+}
+
+static inline void record_lights(IWineD3DStateBlockImpl *This, IWineD3DStateBlockImpl *targetStateBlock) {
+    UINT i;
+
+    /* Lights... For a recorded state block, we just had a chain of actions to perform,
+     * so we need to walk that chain and update any actions which differ
+     */
+    for(i = 0; i < LIGHTMAP_SIZE; i++) {
+        struct list *e, *f;
+        LIST_FOR_EACH(e, &This->lightMap[i]) {
+            BOOL updated = FALSE;
+            PLIGHTINFOEL *src = LIST_ENTRY(e, PLIGHTINFOEL, entry), *realLight;
+            if(!src->changed || !src->enabledChanged) continue;
+
+            /* Look up the light in the destination */
+            LIST_FOR_EACH(f, &targetStateBlock->lightMap[i]) {
+                realLight = LIST_ENTRY(f, PLIGHTINFOEL, entry);
+                if(realLight->OriginalIndex == src->OriginalIndex) {
+                    if(src->changed) {
+                        src->OriginalParms = realLight->OriginalParms;
+                    }
+                    if(src->enabledChanged) {
+                            /* Need to double check because enabledChanged does not catch enabled -> disabled -> enabled
+                        * or disabled -> enabled -> disabled changes
+                            */
+                        if(realLight->glIndex == -1 && src->glIndex != -1) {
+                            /* Light disabled */
+                            This->activeLights[src->glIndex] = NULL;
+                        } else if(realLight->glIndex != -1 && src->glIndex == -1){
+                            /* Light enabled */
+                            This->activeLights[realLight->glIndex] = src;
+                        }
+                        src->glIndex = realLight->glIndex;
+                    }
+                    updated = TRUE;
+                    break;
+                }
+            }
+
+            if(updated) {
+                /* Found a light, all done, proceed with next hash entry */
+                continue;
+            } else if(src->changed) {
+                /* Otherwise assign defaul params */
+                src->OriginalParms = WINED3D_default_light;
+            } else {
+                /* Not enabled by default */
+                src->glIndex = -1;
+            }
+        }
+    }
+}
+
+static HRESULT  WINAPI IWineD3DStateBlockImpl_Capture(IWineD3DStateBlock *iface){
+
+    IWineD3DStateBlockImpl *This             = (IWineD3DStateBlockImpl *)iface;
+    IWineD3DStateBlockImpl *targetStateBlock = This->wineD3DDevice->stateBlock;
+    unsigned int i, j;
+
+    TRACE("(%p) : Updating state block %p ------------------v\n", targetStateBlock, This);
+
+    /* If not recorded, then update can just recapture */
+    if (This->blockType == WINED3DSBT_RECORDED) {
+
+        /* Recorded => Only update 'changed' values */
+        if (This->changed.vertexShader && This->vertexShader != targetStateBlock->vertexShader) {
+            TRACE("Updating vertex shader from %p to %p\n", This->vertexShader, targetStateBlock->vertexShader);
+
+            if(targetStateBlock->vertexShader) IWineD3DVertexShader_AddRef(targetStateBlock->vertexShader);
+            if(This->vertexShader) IWineD3DVertexShader_Release(This->vertexShader);
+            This->vertexShader = targetStateBlock->vertexShader;
+        }
+
+        /* Vertex Shader Float Constants */
+        for (j = 0; j < This->num_contained_vs_consts_f; ++j) {
+            i = This->contained_vs_consts_f[j];
+            TRACE("Setting %p from %p %d to { %f, %f, %f, %f }\n", This, targetStateBlock, i,
+                targetStateBlock->vertexShaderConstantF[i * 4],
+                targetStateBlock->vertexShaderConstantF[i * 4 + 1],
+                targetStateBlock->vertexShaderConstantF[i * 4 + 2],
+                targetStateBlock->vertexShaderConstantF[i * 4 + 3]);
+
+            This->vertexShaderConstantF[i * 4]      = targetStateBlock->vertexShaderConstantF[i * 4];
+            This->vertexShaderConstantF[i * 4 + 1]  = targetStateBlock->vertexShaderConstantF[i * 4 + 1];
+            This->vertexShaderConstantF[i * 4 + 2]  = targetStateBlock->vertexShaderConstantF[i * 4 + 2];
+            This->vertexShaderConstantF[i * 4 + 3]  = targetStateBlock->vertexShaderConstantF[i * 4 + 3];
+        }
+
+        /* Vertex Shader Integer Constants */
+        for (j = 0; j < This->num_contained_vs_consts_i; ++j) {
+            i = This->contained_vs_consts_i[j];
+            TRACE("Setting %p from %p %d to { %d, %d, %d, %d }\n", This, targetStateBlock, i,
+                targetStateBlock->vertexShaderConstantI[i * 4],
+                targetStateBlock->vertexShaderConstantI[i * 4 + 1],
+                targetStateBlock->vertexShaderConstantI[i * 4 + 2],
+                targetStateBlock->vertexShaderConstantI[i * 4 + 3]);
+
+            This->vertexShaderConstantI[i * 4]      = targetStateBlock->vertexShaderConstantI[i * 4];
+            This->vertexShaderConstantI[i * 4 + 1]  = targetStateBlock->vertexShaderConstantI[i * 4 + 1];
+            This->vertexShaderConstantI[i * 4 + 2]  = targetStateBlock->vertexShaderConstantI[i * 4 + 2];
+            This->vertexShaderConstantI[i * 4 + 3]  = targetStateBlock->vertexShaderConstantI[i * 4 + 3];
+        }
+
+        /* Vertex Shader Boolean Constants */
+        for (j = 0; j < This->num_contained_vs_consts_b; ++j) {
+            i = This->contained_vs_consts_b[j];
+            TRACE("Setting %p from %p %d to %s\n", This, targetStateBlock, i,
+                targetStateBlock->vertexShaderConstantB[i]? "TRUE":"FALSE");
+
+            This->vertexShaderConstantB[i] =  targetStateBlock->vertexShaderConstantB[i];
+        }
+
+        /* Pixel Shader Float Constants */
+        for (j = 0; j < This->num_contained_ps_consts_f; ++j) {
+            i = This->contained_ps_consts_f[j];
+            TRACE("Setting %p from %p %d to { %f, %f, %f, %f }\n", This, targetStateBlock, i,
+                targetStateBlock->pixelShaderConstantF[i * 4],
+                targetStateBlock->pixelShaderConstantF[i * 4 + 1],
+                targetStateBlock->pixelShaderConstantF[i * 4 + 2],
+                targetStateBlock->pixelShaderConstantF[i * 4 + 3]);
+
+            This->pixelShaderConstantF[i * 4]      = targetStateBlock->pixelShaderConstantF[i * 4];
+            This->pixelShaderConstantF[i * 4 + 1]  = targetStateBlock->pixelShaderConstantF[i * 4 + 1];
+            This->pixelShaderConstantF[i * 4 + 2]  = targetStateBlock->pixelShaderConstantF[i * 4 + 2];
+            This->pixelShaderConstantF[i * 4 + 3]  = targetStateBlock->pixelShaderConstantF[i * 4 + 3];
+        }
+
+        /* Pixel Shader Integer Constants */
+        for (j = 0; j < This->num_contained_ps_consts_i; ++j) {
+            i = This->contained_ps_consts_i[j];
+            TRACE("Setting %p from %p %d to { %d, %d, %d, %d }\n", This, targetStateBlock, i,
+                targetStateBlock->pixelShaderConstantI[i * 4],
+                targetStateBlock->pixelShaderConstantI[i * 4 + 1],
+                targetStateBlock->pixelShaderConstantI[i * 4 + 2],
+                targetStateBlock->pixelShaderConstantI[i * 4 + 3]);
+
+            This->pixelShaderConstantI[i * 4]      = targetStateBlock->pixelShaderConstantI[i * 4];
+            This->pixelShaderConstantI[i * 4 + 1]  = targetStateBlock->pixelShaderConstantI[i * 4 + 1];
+            This->pixelShaderConstantI[i * 4 + 2]  = targetStateBlock->pixelShaderConstantI[i * 4 + 2];
+            This->pixelShaderConstantI[i * 4 + 3]  = targetStateBlock->pixelShaderConstantI[i * 4 + 3];
+        }
+
+        /* Pixel Shader Boolean Constants */
+        for (j = 0; j < This->num_contained_ps_consts_b; ++j) {
+            i = This->contained_ps_consts_b[j];
+            TRACE("Setting %p from %p %d to %s\n", This, targetStateBlock, i,
+                targetStateBlock->pixelShaderConstantB[i]? "TRUE":"FALSE");
+
+            This->pixelShaderConstantB[i] =  targetStateBlock->pixelShaderConstantB[i];
+        }
+
+        /* Others + Render & Texture */
+        for (i = 0; i < This->num_contained_transform_states; i++) {
+            TRACE("Updating transform %d\n", i);
+            This->transforms[This->contained_transform_states[i]] =
+                targetStateBlock->transforms[This->contained_transform_states[i]];
+        }
+
+        if (This->changed.indices && ((This->pIndexData != targetStateBlock->pIndexData)
+                        || (This->baseVertexIndex != targetStateBlock->baseVertexIndex))) {
+            TRACE("Updating pindexData to %p, baseVertexIndex to %d\n",
+                  targetStateBlock->pIndexData, targetStateBlock->baseVertexIndex);
+            if(targetStateBlock->pIndexData) IWineD3DIndexBuffer_AddRef(targetStateBlock->pIndexData);
+            if(This->pIndexData) IWineD3DIndexBuffer_Release(This->pIndexData);
+            This->pIndexData = targetStateBlock->pIndexData;
+            This->baseVertexIndex = targetStateBlock->baseVertexIndex;
+        }
+
+        if(This->changed.vertexDecl && This->vertexDecl != targetStateBlock->vertexDecl){
+            TRACE("Updating vertex declaration from %p to %p\n", This->vertexDecl, targetStateBlock->vertexDecl);
+
+            This->vertexDecl = targetStateBlock->vertexDecl;
+        }
+
+        if(This->changed.fvf && This->fvf != targetStateBlock->fvf){
+            This->fvf = targetStateBlock->fvf;
+        }
+
+        if (This->changed.material && memcmp(&targetStateBlock->material,
+                                                    &This->material,
+                                                    sizeof(WINED3DMATERIAL)) != 0) {
+            TRACE("Updating material\n");
+            This->material = targetStateBlock->material;
+        }
+
+        if (This->changed.viewport && memcmp(&targetStateBlock->viewport,
+                                                    &This->viewport,
+                                                    sizeof(WINED3DVIEWPORT)) != 0) {
+            TRACE("Updating viewport\n");
+            This->viewport = targetStateBlock->viewport;
+        }
+
+        if(This->changed.scissorRect && memcmp(&targetStateBlock->scissorRect,
+                                           &This->scissorRect,
+                                           sizeof(targetStateBlock->scissorRect)))
+        {
+            TRACE("Updating scissor rect\n");
+            targetStateBlock->scissorRect = This->scissorRect;
+        }
+
+        for (i = 0; i < MAX_STREAMS; i++) {
+            if (This->changed.streamSource[i] &&
+                            ((This->streamStride[i] != targetStateBlock->streamStride[i]) ||
+                            (This->streamSource[i] != targetStateBlock->streamSource[i]))) {
+                TRACE("Updating stream source %d to %p, stride to %d\n", i, targetStateBlock->streamSource[i],
+                                                                            targetStateBlock->streamStride[i]);
+                This->streamStride[i] = targetStateBlock->streamStride[i];
+                if(targetStateBlock->streamSource[i]) IWineD3DVertexBuffer_AddRef(targetStateBlock->streamSource[i]);
+                if(This->streamSource[i]) IWineD3DVertexBuffer_Release(This->streamSource[i]);
+                This->streamSource[i] = targetStateBlock->streamSource[i];
+            }
+
+            if (This->changed.streamFreq[i] &&
+            (This->streamFreq[i] != targetStateBlock->streamFreq[i]
+            || This->streamFlags[i] != targetStateBlock->streamFlags[i])){
+                    TRACE("Updating stream frequency %d to %d flags to %d\n", i ,  targetStateBlock->streamFreq[i] ,
+                                                                                   targetStateBlock->streamFlags[i]);
+                    This->streamFreq[i]  =  targetStateBlock->streamFreq[i];
+                    This->streamFlags[i] =  targetStateBlock->streamFlags[i];
+            }
+        }
+
+        for (i = 0; i < GL_LIMITS(clipplanes); i++) {
+            if (This->changed.clipplane[i] && memcmp(&targetStateBlock->clipplane[i],
+                                                        &This->clipplane[i],
+                                                        sizeof(This->clipplane)) != 0) {
+
+                TRACE("Updating clipplane %d\n", i);
+                memcpy(&This->clipplane[i], &targetStateBlock->clipplane[i],
+                                        sizeof(This->clipplane));
+            }
+        }
+
+        /* Render */
+        for (i = 0; i < This->num_contained_render_states; i++) {
+            TRACE("Updating renderState %d to %d\n",
+                  This->contained_render_states[i], targetStateBlock->renderState[This->contained_render_states[i]]);
+            This->renderState[This->contained_render_states[i]] = targetStateBlock->renderState[This->contained_render_states[i]];
+        }
+
+        /* Texture states */
+        for (j = 0; j < This->num_contained_tss_states; j++) {
+            DWORD stage = This->contained_tss_states[j].stage;
+            DWORD state = This->contained_tss_states[j].state;
+
+            TRACE("Updating texturestagestate %d,%d to %d (was %d)\n", stage,state,
+                  targetStateBlock->textureState[stage][state], This->textureState[stage][state]);
+                    This->textureState[stage][state] =  targetStateBlock->textureState[stage][state];
+        }
+
+        /* Samplers */
+        /* TODO: move over to using memcpy */
+        for (j = 0; j < MAX_COMBINED_SAMPLERS; j++) {
+            if (This->changed.textures[j]) {
+                TRACE("Updating texture %d to %p (was %p)\n", j, targetStateBlock->textures[j],  This->textures[j]);
+                This->textures[j] = targetStateBlock->textures[j];
+            }
+        }
+
+        for (j = 0; j < This->num_contained_sampler_states; j++) {
+            DWORD stage = This->contained_sampler_states[j].stage;
+            DWORD state = This->contained_sampler_states[j].state;
+            TRACE("Updating sampler state %d,%d to %d (was %d)\n",
+                stage, state, targetStateBlock->samplerState[stage][state],
+                This->samplerState[stage][state]);
+            This->samplerState[stage][state] = targetStateBlock->samplerState[stage][state];
+        }
+        if(This->changed.pixelShader && This->pixelShader != targetStateBlock->pixelShader) {
+            if(targetStateBlock->pixelShader) IWineD3DPixelShader_AddRef(targetStateBlock->pixelShader);
+            if(This->pixelShader) IWineD3DPixelShader_Release(This->pixelShader);
+            This->pixelShader = targetStateBlock->pixelShader;
+        }
+
+        record_lights(This, targetStateBlock);
+    } else if(This->blockType == WINED3DSBT_ALL) {
+        This->vertexDecl = targetStateBlock->vertexDecl;
+        memcpy(This->vertexShaderConstantB, targetStateBlock->vertexShaderConstantB, sizeof(This->vertexShaderConstantI));
+        memcpy(This->vertexShaderConstantI, targetStateBlock->vertexShaderConstantI, sizeof(This->vertexShaderConstantF));
+        memcpy(This->vertexShaderConstantF, targetStateBlock->vertexShaderConstantF, sizeof(float) * GL_LIMITS(vshader_constantsF) * 4);
+        memcpy(This->streamStride, targetStateBlock->streamStride, sizeof(This->streamStride));
+        memcpy(This->streamOffset, targetStateBlock->streamOffset, sizeof(This->streamOffset));
+        memcpy(This->streamFreq, targetStateBlock->streamFreq, sizeof(This->streamFreq));
+        memcpy(This->streamFlags, targetStateBlock->streamFlags, sizeof(This->streamFlags));
+        This->baseVertexIndex = targetStateBlock->baseVertexIndex;
+        memcpy(This->transforms, targetStateBlock->transforms, sizeof(This->transforms));
+        record_lights(This, targetStateBlock);
+        memcpy(This->clipplane, targetStateBlock->clipplane, sizeof(This->clipplane));
+        This->clip_status = targetStateBlock->clip_status;
+        This->viewport = targetStateBlock->viewport;
+        This->material = targetStateBlock->material;
+        memcpy(This->pixelShaderConstantB, targetStateBlock->pixelShaderConstantB, sizeof(This->pixelShaderConstantI));
+        memcpy(This->pixelShaderConstantI, targetStateBlock->pixelShaderConstantI, sizeof(This->pixelShaderConstantF));
+        memcpy(This->pixelShaderConstantF, targetStateBlock->pixelShaderConstantF, sizeof(float) * GL_LIMITS(pshader_constantsF) * 4);
+        memcpy(This->renderState, targetStateBlock->renderState, sizeof(This->renderState));
+        memcpy(This->textures, targetStateBlock->textures, sizeof(This->textures));
+        memcpy(This->textureDimensions, targetStateBlock->textureDimensions, sizeof(This->textureDimensions));
+        memcpy(This->textureState, targetStateBlock->textureState, sizeof(This->textureState));
+        memcpy(This->samplerState, targetStateBlock->samplerState, sizeof(This->samplerState));
+        This->scissorRect = targetStateBlock->scissorRect;
+
+        if(targetStateBlock->pIndexData != This->pIndexData) {
+            if(targetStateBlock->pIndexData) IWineD3DIndexBuffer_AddRef(targetStateBlock->pIndexData);
+            if(This->pIndexData) IWineD3DIndexBuffer_Release(This->pIndexData);
+            This->pIndexData = targetStateBlock->pIndexData;
+        }
+        for(i = 0; i < MAX_STREAMS; i++) {
+            if(targetStateBlock->streamSource[i] != This->streamSource[i]) {
+                if(targetStateBlock->streamSource[i]) IWineD3DVertexBuffer_AddRef(targetStateBlock->streamSource[i]);
+                if(This->streamSource[i]) IWineD3DVertexBuffer_Release(This->streamSource[i]);
+                This->streamSource[i] = targetStateBlock->streamSource[i];
+            }
+        }
+        if(This->vertexShader != targetStateBlock->vertexShader) {
+            if(targetStateBlock->vertexShader) IWineD3DVertexShader_AddRef(targetStateBlock->vertexShader);
+            if(This->vertexShader) IWineD3DVertexShader_Release(This->vertexShader);
+            This->vertexShader = targetStateBlock->vertexShader;
+        }
+        if(This->pixelShader != targetStateBlock->pixelShader) {
+            if(targetStateBlock->pixelShader) IWineD3DPixelShader_AddRef(targetStateBlock->pixelShader);
+            if(This->pixelShader) IWineD3DPixelShader_Release(This->pixelShader);
+            This->pixelShader = targetStateBlock->pixelShader;
+        }
+    } else if(This->blockType == WINED3DSBT_VERTEXSTATE) {
+        memcpy(This->vertexShaderConstantB, targetStateBlock->vertexShaderConstantB, sizeof(This->vertexShaderConstantI));
+        memcpy(This->vertexShaderConstantI, targetStateBlock->vertexShaderConstantI, sizeof(This->vertexShaderConstantF));
+        memcpy(This->vertexShaderConstantF, targetStateBlock->vertexShaderConstantF, sizeof(float) * GL_LIMITS(vshader_constantsF) * 4);
+        record_lights(This, targetStateBlock);
+        for (i = 0; i < NUM_SAVEDVERTEXSTATES_R; i++) {
+            This->renderState[SavedVertexStates_R[i]] = targetStateBlock->renderState[SavedVertexStates_R[i]];
+        }
+        for (j = 0; j < MAX_COMBINED_SAMPLERS; j++) {
+            for (i = 0; i < NUM_SAVEDVERTEXSTATES_S; i++) {
+                This->samplerState[j][SavedVertexStates_S[i]] = targetStateBlock->samplerState[j][SavedVertexStates_S[i]];
+            }
+        }
+        for (j = 0; j < MAX_TEXTURES; j++) {
+            for (i = 0; i < NUM_SAVEDVERTEXSTATES_R; i++) {
+                This->textureState[j][SavedVertexStates_R[i]] = targetStateBlock->textureState[j][SavedVertexStates_R[i]];
+            }
+        }
+        for(i = 0; i < MAX_STREAMS; i++) {
+            if(targetStateBlock->streamSource[i] != This->streamSource[i]) {
+                if(targetStateBlock->streamSource[i]) IWineD3DVertexBuffer_AddRef(targetStateBlock->streamSource[i]);
+                if(This->streamSource[i]) IWineD3DVertexBuffer_Release(This->streamSource[i]);
+                This->streamSource[i] = targetStateBlock->streamSource[i];
+            }
+        }
+        if(This->vertexShader != targetStateBlock->vertexShader) {
+            if(targetStateBlock->vertexShader) IWineD3DVertexShader_AddRef(targetStateBlock->vertexShader);
+            if(This->vertexShader) IWineD3DVertexShader_Release(This->vertexShader);
+            This->vertexShader = targetStateBlock->vertexShader;
+        }
+    } else if(This->blockType == WINED3DSBT_PIXELSTATE) {
+        memcpy(This->pixelShaderConstantB, targetStateBlock->pixelShaderConstantB, sizeof(This->pixelShaderConstantI));
+        memcpy(This->pixelShaderConstantI, targetStateBlock->pixelShaderConstantI, sizeof(This->pixelShaderConstantF));
+        memcpy(This->pixelShaderConstantF, targetStateBlock->pixelShaderConstantF, sizeof(float) * GL_LIMITS(pshader_constantsF) * 4);
+        for (i = 0; i < NUM_SAVEDPIXELSTATES_R; i++) {
+            This->renderState[SavedPixelStates_R[i]] = targetStateBlock->renderState[SavedPixelStates_R[i]];
+        }
+        for (j = 0; j < MAX_COMBINED_SAMPLERS; j++) {
+            for (i = 0; i < NUM_SAVEDPIXELSTATES_S; i++) {
+                This->samplerState[j][SavedPixelStates_S[i]] = targetStateBlock->samplerState[j][SavedPixelStates_S[i]];
+            }
+        }
+        for (j = 0; j < MAX_TEXTURES; j++) {
+            for (i = 0; i < NUM_SAVEDPIXELSTATES_R; i++) {
+                This->textureState[j][SavedPixelStates_R[i]] = targetStateBlock->textureState[j][SavedPixelStates_R[i]];
+            }
+        }
+        if(This->pixelShader != targetStateBlock->pixelShader) {
+            if(targetStateBlock->pixelShader) IWineD3DPixelShader_AddRef(targetStateBlock->pixelShader);
+            if(This->pixelShader) IWineD3DPixelShader_Release(This->pixelShader);
+            This->pixelShader = targetStateBlock->pixelShader;
+        }
+    }
+
+    TRACE("(%p) : Updated state block %p ------------------^\n", targetStateBlock, This);
+
+    return WINED3D_OK;
+}
+
+static inline void apply_lights(IWineD3DDevice *pDevice, IWineD3DStateBlockImpl *This) {
+    UINT i;
+    for(i = 0; i < LIGHTMAP_SIZE; i++) {
+        struct list *e;
+
+        LIST_FOR_EACH(e, &This->lightMap[i]) {
+            const PLIGHTINFOEL *light = LIST_ENTRY(e, PLIGHTINFOEL, entry);
+
+            if(light->changed) {
+                IWineD3DDevice_SetLight(pDevice, light->OriginalIndex, &light->OriginalParms);
+            }
+            if(light->enabledChanged) {
+                IWineD3DDevice_SetLightEnable(pDevice, light->OriginalIndex, light->glIndex != -1);
+            }
+        }
+    }
+}
+
+static HRESULT  WINAPI IWineD3DStateBlockImpl_Apply(IWineD3DStateBlock *iface){
+    IWineD3DStateBlockImpl *This = (IWineD3DStateBlockImpl *)iface;
+    IWineD3DDevice*        pDevice     = (IWineD3DDevice*)This->wineD3DDevice;
+
+/*Copy thing over to updateBlock is isRecording otherwise StateBlock,
+should really perform a delta so that only the changes get updated*/
+
+    UINT i;
+    UINT j;
+
+    TRACE("(%p) : Applying state block %p ------------------v\n", This, pDevice);
+
+    TRACE("Blocktype: %d\n", This->blockType);
+
+    if(This->blockType == WINED3DSBT_RECORDED) {
+        if (This->changed.vertexShader) {
+            IWineD3DDevice_SetVertexShader(pDevice, This->vertexShader);
+        }
+        /* Vertex Shader Constants */
+        for (i = 0; i < This->num_contained_vs_consts_f; i++) {
+            IWineD3DDevice_SetVertexShaderConstantF(pDevice, This->contained_vs_consts_f[i],
+                    This->vertexShaderConstantF + This->contained_vs_consts_f[i] * 4, 1);
+        }
+        for (i = 0; i < This->num_contained_vs_consts_i; i++) {
+            IWineD3DDevice_SetVertexShaderConstantI(pDevice, This->contained_vs_consts_i[i],
+                    This->vertexShaderConstantI + This->contained_vs_consts_i[i] * 4, 1);
+        }
+        for (i = 0; i < This->num_contained_vs_consts_b; i++) {
+            IWineD3DDevice_SetVertexShaderConstantB(pDevice, This->contained_vs_consts_b[i],
+                    This->vertexShaderConstantB + This->contained_vs_consts_b[i], 1);
+        }
+
+        apply_lights(pDevice, This);
+
+        if (This->changed.pixelShader) {
+            IWineD3DDevice_SetPixelShader(pDevice, This->pixelShader);
+        }
+        /* Pixel Shader Constants */
+        for (i = 0; i < This->num_contained_ps_consts_f; i++) {
+            IWineD3DDevice_SetPixelShaderConstantF(pDevice, This->contained_ps_consts_f[i],
+                    This->pixelShaderConstantF + This->contained_ps_consts_f[i] * 4, 1);
+        }
+        for (i = 0; i < This->num_contained_ps_consts_i; i++) {
+            IWineD3DDevice_SetPixelShaderConstantI(pDevice, This->contained_ps_consts_i[i],
+                    This->pixelShaderConstantI + This->contained_ps_consts_i[i] * 4, 1);
+        }
+        for (i = 0; i < This->num_contained_ps_consts_b; i++) {
+            IWineD3DDevice_SetPixelShaderConstantB(pDevice, This->contained_ps_consts_b[i],
+                    This->pixelShaderConstantB + This->contained_ps_consts_b[i], 1);
+        }
+
+        /* Render */
+        for (i = 0; i <= This->num_contained_render_states; i++) {
+            IWineD3DDevice_SetRenderState(pDevice, This->contained_render_states[i],
+                                          This->renderState[This->contained_render_states[i]]);
+        }
+        /* Texture states */
+        for (i = 0; i < This->num_contained_tss_states; i++) {
+            DWORD stage = This->contained_tss_states[i].stage;
+            DWORD state = This->contained_tss_states[i].state;
+            ((IWineD3DDeviceImpl *)pDevice)->stateBlock->textureState[stage][state]         = This->textureState[stage][state];
+            ((IWineD3DDeviceImpl *)pDevice)->stateBlock->changed.textureState[stage][state] = TRUE;
+            /* TODO: Record a display list to apply all gl states. For now apply by brute force */
+            IWineD3DDeviceImpl_MarkStateDirty((IWineD3DDeviceImpl *)pDevice, STATE_TEXTURESTAGE(stage, state));
+        }
+        /* Sampler states */
+        for (i = 0; i < This->num_contained_sampler_states; i++) {
+            DWORD stage = This->contained_sampler_states[i].stage;
+            DWORD state = This->contained_sampler_states[i].state;
+            ((IWineD3DDeviceImpl *)pDevice)->stateBlock->samplerState[stage][state]         = This->samplerState[stage][state];
+            ((IWineD3DDeviceImpl *)pDevice)->stateBlock->changed.samplerState[stage][state] = TRUE;
+            IWineD3DDeviceImpl_MarkStateDirty((IWineD3DDeviceImpl *)pDevice, STATE_SAMPLER(stage));
+        }
+
+        for (i = 0; i < This->num_contained_transform_states; i++) {
+            IWineD3DDevice_SetTransform(pDevice, This->contained_transform_states[i],
+                                        &This->transforms[This->contained_transform_states[i]]);
+        }
+
+        if (This->changed.indices) {
+            IWineD3DDevice_SetIndices(pDevice, This->pIndexData);
+            IWineD3DDevice_SetBaseVertexIndex(pDevice, This->baseVertexIndex);
+        }
+
+        if (This->changed.fvf) {
+            IWineD3DDevice_SetFVF(pDevice, This->fvf);
+        }
+
+        if (This->changed.vertexDecl) {
+            IWineD3DDevice_SetVertexDeclaration(pDevice, This->vertexDecl);
+        }
+
+        if (This->changed.material ) {
+            IWineD3DDevice_SetMaterial(pDevice, &This->material);
+        }
+
+        if (This->changed.viewport) {
+            IWineD3DDevice_SetViewport(pDevice, &This->viewport);
+        }
+
+        if (This->changed.scissorRect) {
+            IWineD3DDevice_SetScissorRect(pDevice, &This->scissorRect);
+        }
+
+        /* TODO: Proper implementation using SetStreamSource offset (set to 0 for the moment)\n") */
+        for (i=0; i<MAX_STREAMS; i++) {
+            if (This->changed.streamSource[i])
+                IWineD3DDevice_SetStreamSource(pDevice, i, This->streamSource[i], 0, This->streamStride[i]);
+
+            if (This->changed.streamFreq[i])
+                IWineD3DDevice_SetStreamSourceFreq(pDevice, i, This->streamFreq[i] | This->streamFlags[i]);
+        }
+        for (j = 0 ; j < MAX_COMBINED_SAMPLERS; j++){
+            if (This->changed.textures[j]) {
+                if (j < MAX_FRAGMENT_SAMPLERS) {
+                    IWineD3DDevice_SetTexture(pDevice, j, This->textures[j]);
+                } else {
+                    IWineD3DDevice_SetTexture(pDevice, WINED3DVERTEXTEXTURESAMPLER0 + j - MAX_FRAGMENT_SAMPLERS, This->textures[j]);
+                }
+            }
+        }
+
+        for (i = 0; i < GL_LIMITS(clipplanes); i++) {
+            if (This->changed.clipplane[i]) {
+                float clip[4];
+
+                clip[0] = This->clipplane[i][0];
+                clip[1] = This->clipplane[i][1];
+                clip[2] = This->clipplane[i][2];
+                clip[3] = This->clipplane[i][3];
+                IWineD3DDevice_SetClipPlane(pDevice, i, clip);
+            }
+        }
+
+    } else if(This->blockType == WINED3DSBT_VERTEXSTATE) {
+        IWineD3DDevice_SetVertexShader(pDevice, This->vertexShader);
+        for (i = 0; i < GL_LIMITS(vshader_constantsF); i++) {
+            IWineD3DDevice_SetVertexShaderConstantF(pDevice, i,
+                    This->vertexShaderConstantF + i * 4, 1);
+        }
+        for (i = 0; i < MAX_CONST_I; i++) {
+            IWineD3DDevice_SetVertexShaderConstantI(pDevice, i,
+                    This->vertexShaderConstantI + i * 4, 1);
+        }
+        for (i = 0; i < MAX_CONST_B; i++) {
+            IWineD3DDevice_SetVertexShaderConstantB(pDevice, i,
+                    This->vertexShaderConstantB + i, 1);
+        }
+
+        apply_lights(pDevice, This);
+
+        for(i = 0; i < NUM_SAVEDVERTEXSTATES_R; i++) {
+            IWineD3DDevice_SetRenderState(pDevice, SavedVertexStates_R[i], This->renderState[SavedVertexStates_R[i]]);
+        }
+        for(j = 0; j < MAX_TEXTURES; j++) {
+            for(i = 0; i < NUM_SAVEDVERTEXSTATES_T; i++) {
+                IWineD3DDevice_SetTextureStageState(pDevice, j, SavedVertexStates_T[i],
+                        This->textureState[j][SavedVertexStates_T[i]]);
+            }
+        }
+
+        for(j = 0; j < MAX_FRAGMENT_SAMPLERS; j++) {
+            for(i = 0; i < NUM_SAVEDVERTEXSTATES_S; i++) {
+                IWineD3DDevice_SetSamplerState(pDevice, j, SavedVertexStates_S[i],
+                                               This->samplerState[j][SavedVertexStates_S[i]]);
+            }
+        }
+        for(j = MAX_FRAGMENT_SAMPLERS; j < MAX_COMBINED_SAMPLERS; j++) {
+            for(i = 0; i < NUM_SAVEDVERTEXSTATES_S; i++) {
+                IWineD3DDevice_SetSamplerState(pDevice,
+                                               WINED3DVERTEXTEXTURESAMPLER0 + j - MAX_FRAGMENT_SAMPLERS,
+                                               SavedVertexStates_S[i],
+                                               This->samplerState[j][SavedVertexStates_S[i]]);
+            }
+        }
+    } else if(This->blockType == WINED3DSBT_PIXELSTATE) {
+        IWineD3DDevice_SetPixelShader(pDevice, This->pixelShader);
+        for (i = 0; i < GL_LIMITS(pshader_constantsF); i++) {
+            IWineD3DDevice_SetPixelShaderConstantF(pDevice, i,
+                    This->pixelShaderConstantF + i * 4, 1);
+        }
+        for (i = 0; i < MAX_CONST_I; i++) {
+            IWineD3DDevice_SetPixelShaderConstantI(pDevice, i,
+                    This->pixelShaderConstantI + i * 4, 1);
+        }
+        for (i = 0; i < MAX_CONST_B; i++) {
+            IWineD3DDevice_SetPixelShaderConstantB(pDevice, i,
+                    This->pixelShaderConstantB + i, 1);
+        }
+
+        for(i = 0; i < NUM_SAVEDPIXELSTATES_R; i++) {
+            IWineD3DDevice_SetRenderState(pDevice, SavedPixelStates_R[i], This->renderState[SavedPixelStates_R[i]]);
+        }
+        for(j = 0; j < MAX_TEXTURES; j++) {
+            for(i = 0; i < NUM_SAVEDPIXELSTATES_T; i++) {
+                IWineD3DDevice_SetTextureStageState(pDevice, j, SavedPixelStates_T[i],
+                        This->textureState[j][SavedPixelStates_T[i]]);
+            }
+        }
+
+        for(j = 0; j < MAX_FRAGMENT_SAMPLERS; j++) {
+            for(i = 0; i < NUM_SAVEDPIXELSTATES_S; i++) {
+                IWineD3DDevice_SetSamplerState(pDevice, j, SavedPixelStates_S[i],
+                                               This->samplerState[j][SavedPixelStates_S[i]]);
+            }
+        }
+        for(j = MAX_FRAGMENT_SAMPLERS; j < MAX_COMBINED_SAMPLERS; j++) {
+            for(i = 0; i < NUM_SAVEDPIXELSTATES_S; i++) {
+                IWineD3DDevice_SetSamplerState(pDevice,
+                                               WINED3DVERTEXTEXTURESAMPLER0 + j - MAX_FRAGMENT_SAMPLERS,
+                                               SavedPixelStates_S[i],
+                                               This->samplerState[j][SavedPixelStates_S[i]]);
+            }
+        }
+    } else if(This->blockType == WINED3DSBT_ALL) {
+        IWineD3DDevice_SetVertexShader(pDevice, This->vertexShader);
+        for (i = 0; i < GL_LIMITS(vshader_constantsF); i++) {
+            IWineD3DDevice_SetVertexShaderConstantF(pDevice, i,
+                    This->vertexShaderConstantF + i * 4, 1);
+        }
+        for (i = 0; i < MAX_CONST_I; i++) {
+            IWineD3DDevice_SetVertexShaderConstantI(pDevice, i,
+                    This->vertexShaderConstantI + i * 4, 1);
+        }
+        for (i = 0; i < MAX_CONST_B; i++) {
+            IWineD3DDevice_SetVertexShaderConstantB(pDevice, i,
+                    This->vertexShaderConstantB + i, 1);
+        }
+
+        IWineD3DDevice_SetPixelShader(pDevice, This->pixelShader);
+        for (i = 0; i < GL_LIMITS(pshader_constantsF); i++) {
+            IWineD3DDevice_SetPixelShaderConstantF(pDevice, i,
+                    This->pixelShaderConstantF + i * 4, 1);
+        }
+        for (i = 0; i < MAX_CONST_I; i++) {
+            IWineD3DDevice_SetPixelShaderConstantI(pDevice, i,
+                    This->pixelShaderConstantI + i * 4, 1);
+        }
+        for (i = 0; i < MAX_CONST_B; i++) {
+            IWineD3DDevice_SetPixelShaderConstantB(pDevice, i,
+                    This->pixelShaderConstantB + i, 1);
+        }
+
+        apply_lights(pDevice, This);
+
+        for(i = 1; i <= WINEHIGHEST_RENDER_STATE; i++) {
+            IWineD3DDevice_SetRenderState(pDevice, i, This->renderState[i]);
+        }
+        for(j = 0; j < MAX_TEXTURES; j++) {
+            for(i = 1; i <= WINED3D_HIGHEST_TEXTURE_STATE; i++) {
+                IWineD3DDevice_SetTextureStageState(pDevice, j, i, This->textureState[j][i]);
+            }
+        }
+
+        /* Skip unused values between TEXTURE8 and WORLD0 ? */
+        for(i = 1; i <= HIGHEST_TRANSFORMSTATE; i++) {
+            IWineD3DDevice_SetTransform(pDevice, i, &This->transforms[i]);
+        }
+        IWineD3DDevice_SetIndices(pDevice, This->pIndexData);
+        IWineD3DDevice_SetBaseVertexIndex(pDevice, This->baseVertexIndex);
+        IWineD3DDevice_SetFVF(pDevice, This->fvf);
+        IWineD3DDevice_SetVertexDeclaration(pDevice, This->vertexDecl);
+        IWineD3DDevice_SetMaterial(pDevice, &This->material);
+        IWineD3DDevice_SetViewport(pDevice, &This->viewport);
+        IWineD3DDevice_SetScissorRect(pDevice, &This->scissorRect);
+
+        /* TODO: Proper implementation using SetStreamSource offset (set to 0 for the moment)\n") */
+        for (i=0; i<MAX_STREAMS; i++) {
+            IWineD3DDevice_SetStreamSource(pDevice, i, This->streamSource[i], 0, This->streamStride[i]);
+            IWineD3DDevice_SetStreamSourceFreq(pDevice, i, This->streamFreq[i] | This->streamFlags[i]);
+        }
+        for (j = 0 ; j < MAX_COMBINED_SAMPLERS; j++){
+            UINT sampler = j < MAX_FRAGMENT_SAMPLERS ? j : WINED3DVERTEXTEXTURESAMPLER0 + j - MAX_FRAGMENT_SAMPLERS;
+
+            IWineD3DDevice_SetTexture(pDevice, sampler, This->textures[j]);
+            for(i = 1; i < WINED3D_HIGHEST_SAMPLER_STATE; i++) {
+                IWineD3DDevice_SetSamplerState(pDevice, sampler, i, This->samplerState[j][i]);
+            }
+        }
+        for (i = 0; i < GL_LIMITS(clipplanes); i++) {
+            float clip[4];
+
+            clip[0] = This->clipplane[i][0];
+            clip[1] = This->clipplane[i][1];
+            clip[2] = This->clipplane[i][2];
+            clip[3] = This->clipplane[i][3];
+            IWineD3DDevice_SetClipPlane(pDevice, i, clip);
+        }
+    }
+
+    ((IWineD3DDeviceImpl *)pDevice)->stateBlock->lowest_disabled_stage = MAX_TEXTURES - 1;
+    for(j = 0; j < MAX_TEXTURES - 1; j++) {
+        if(((IWineD3DDeviceImpl *)pDevice)->stateBlock->textureState[j][WINED3DTSS_COLOROP] == WINED3DTOP_DISABLE) {
+            ((IWineD3DDeviceImpl *)pDevice)->stateBlock->lowest_disabled_stage = j;
+            break;
+        }
+    }
+    TRACE("(%p) : Applied state block %p ------------------^\n", This, pDevice);
+
+    return WINED3D_OK;
+}
+
+static HRESULT  WINAPI IWineD3DStateBlockImpl_InitStartupStateBlock(IWineD3DStateBlock* iface) {
+    IWineD3DStateBlockImpl *This = (IWineD3DStateBlockImpl *)iface;
+    IWineD3DDevice         *device = (IWineD3DDevice *)This->wineD3DDevice;
+    IWineD3DDeviceImpl     *ThisDevice = (IWineD3DDeviceImpl *)device;
+    union {
+        WINED3DLINEPATTERN lp;
+        DWORD d;
+    } lp;
+    union {
+        float f;
+        DWORD d;
+    } tmpfloat;
+    unsigned int i;
+    IWineD3DSwapChain *swapchain;
+    IWineD3DSurface *backbuffer;
+    WINED3DSURFACE_DESC desc = {0};
+    UINT width, height;
+    RECT scissorrect;
+    HRESULT hr;
+
+    /* Note this may have a large overhead but it should only be executed
+       once, in order to initialize the complete state of the device and
+       all opengl equivalents                                            */
+    TRACE("(%p) -----------------------> Setting up device defaults... %p\n", This, This->wineD3DDevice);
+    /* TODO: make a special stateblock type for the primary stateblock (it never gets applied so it doesn't need a real type) */
+    This->blockType = WINED3DSBT_INIT;
+
+    /* Set some of the defaults for lights, transforms etc */
+    memcpy(&This->transforms[WINED3DTS_PROJECTION], identity, sizeof(identity));
+    memcpy(&This->transforms[WINED3DTS_VIEW], identity, sizeof(identity));
+    for (i = 0; i < 256; ++i) {
+      memcpy(&This->transforms[WINED3DTS_WORLDMATRIX(i)], identity, sizeof(identity));
+    }
+
+    TRACE("Render states\n");
+    /* Render states: */
+    if (ThisDevice->auto_depth_stencil_buffer != NULL) {
+       IWineD3DDevice_SetRenderState(device, WINED3DRS_ZENABLE,       WINED3DZB_TRUE);
+    } else {
+       IWineD3DDevice_SetRenderState(device, WINED3DRS_ZENABLE,       WINED3DZB_FALSE);
+    }
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_FILLMODE,         WINED3DFILL_SOLID);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_SHADEMODE,        WINED3DSHADE_GOURAUD);
+    lp.lp.wRepeatFactor = 0;
+    lp.lp.wLinePattern  = 0;
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_LINEPATTERN,      lp.d);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_ZWRITEENABLE,     TRUE);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_ALPHATESTENABLE,  FALSE);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_LASTPIXEL,        TRUE);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_SRCBLEND,         WINED3DBLEND_ONE);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_DESTBLEND,        WINED3DBLEND_ZERO);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_CULLMODE,         WINED3DCULL_CCW);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_ZFUNC,            WINED3DCMP_LESSEQUAL);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_ALPHAFUNC,        WINED3DCMP_ALWAYS);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_ALPHAREF,         0);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_DITHERENABLE,     FALSE);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_ALPHABLENDENABLE, FALSE);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_FOGENABLE,        FALSE);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_SPECULARENABLE,   FALSE);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_ZVISIBLE,         0);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_FOGCOLOR,         0);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_FOGTABLEMODE,     WINED3DFOG_NONE);
+    tmpfloat.f = 0.0f;
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_FOGSTART,         tmpfloat.d);
+    tmpfloat.f = 1.0f;
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_FOGEND,           tmpfloat.d);
+    tmpfloat.f = 1.0f;
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_FOGDENSITY,       tmpfloat.d);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_EDGEANTIALIAS,    FALSE);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_ZBIAS,            0);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_RANGEFOGENABLE,   FALSE);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_STENCILENABLE,    FALSE);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_STENCILFAIL,      WINED3DSTENCILOP_KEEP);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_STENCILZFAIL,     WINED3DSTENCILOP_KEEP);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_STENCILPASS,      WINED3DSTENCILOP_KEEP);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_STENCILREF,       0);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_STENCILMASK,      0xFFFFFFFF);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_STENCILFUNC,      WINED3DCMP_ALWAYS);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_STENCILWRITEMASK, 0xFFFFFFFF);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_TEXTUREFACTOR,    0xFFFFFFFF);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_WRAP0, 0);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_WRAP1, 0);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_WRAP2, 0);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_WRAP3, 0);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_WRAP4, 0);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_WRAP5, 0);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_WRAP6, 0);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_WRAP7, 0);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_CLIPPING,                 TRUE);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_LIGHTING,                 TRUE);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_AMBIENT,                  0);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_FOGVERTEXMODE,            WINED3DFOG_NONE);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_COLORVERTEX,              TRUE);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_LOCALVIEWER,              TRUE);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_NORMALIZENORMALS,         FALSE);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_DIFFUSEMATERIALSOURCE,    WINED3DMCS_COLOR1);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_SPECULARMATERIALSOURCE,   WINED3DMCS_COLOR2);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_AMBIENTMATERIALSOURCE,    WINED3DMCS_MATERIAL);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_EMISSIVEMATERIALSOURCE,   WINED3DMCS_MATERIAL);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_VERTEXBLEND,              WINED3DVBF_DISABLE);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_CLIPPLANEENABLE,          0);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_SOFTWAREVERTEXPROCESSING, FALSE);
+    tmpfloat.f = 1.0f;
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_POINTSIZE,                tmpfloat.d);
+    tmpfloat.f = 1.0f;
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_POINTSIZE_MIN,            tmpfloat.d);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_POINTSPRITEENABLE,        FALSE);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_POINTSCALEENABLE,         FALSE);
+    tmpfloat.f = 1.0f;
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_POINTSCALE_A,             tmpfloat.d);
+    tmpfloat.f = 0.0f;
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_POINTSCALE_B,             tmpfloat.d);
+    tmpfloat.f = 0.0f;
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_POINTSCALE_C,             tmpfloat.d);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_MULTISAMPLEANTIALIAS,     TRUE);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_MULTISAMPLEMASK,          0xFFFFFFFF);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_PATCHEDGESTYLE,           WINED3DPATCHEDGE_DISCRETE);
+    tmpfloat.f = 1.0f;
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_PATCHSEGMENTS,            tmpfloat.d);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_DEBUGMONITORTOKEN,        0xbaadcafe);
+    tmpfloat.f = 64.0f;
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_POINTSIZE_MAX,            tmpfloat.d);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_INDEXEDVERTEXBLENDENABLE, FALSE);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_COLORWRITEENABLE,         0x0000000F);
+    tmpfloat.f = 0.0f;
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_TWEENFACTOR,              tmpfloat.d);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_BLENDOP,                  WINED3DBLENDOP_ADD);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_POSITIONDEGREE,           WINED3DDEGREE_CUBIC);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_NORMALDEGREE,             WINED3DDEGREE_LINEAR);
+    /* states new in d3d9 */
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_SCISSORTESTENABLE,        FALSE);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_SLOPESCALEDEPTHBIAS,      0);
+    tmpfloat.f = 1.0f;
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_MINTESSELLATIONLEVEL,     tmpfloat.d);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_MAXTESSELLATIONLEVEL,     tmpfloat.d);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_ANTIALIASEDLINEENABLE,    FALSE);
+    tmpfloat.f = 0.0f;
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_ADAPTIVETESS_X,           tmpfloat.d);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_ADAPTIVETESS_Y,           tmpfloat.d);
+    tmpfloat.f = 1.0f;
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_ADAPTIVETESS_Z,           tmpfloat.d);
+    tmpfloat.f = 0.0f;
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_ADAPTIVETESS_W,           tmpfloat.d);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_ENABLEADAPTIVETESSELLATION, FALSE);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_TWOSIDEDSTENCILMODE,      FALSE);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_CCW_STENCILFAIL,          WINED3DSTENCILOP_KEEP);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_CCW_STENCILZFAIL,         WINED3DSTENCILOP_KEEP);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_CCW_STENCILPASS,          WINED3DSTENCILOP_KEEP);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_CCW_STENCILFUNC,          WINED3DCMP_ALWAYS);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_COLORWRITEENABLE1,        0x0000000F);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_COLORWRITEENABLE2,        0x0000000F);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_COLORWRITEENABLE3,        0x0000000F);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_BLENDFACTOR,              0xFFFFFFFF);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_SRGBWRITEENABLE,          0);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_DEPTHBIAS,                0);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_WRAP8,  0);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_WRAP9,  0);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_WRAP10, 0);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_WRAP11, 0);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_WRAP12, 0);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_WRAP13, 0);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_WRAP14, 0);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_WRAP15, 0);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_SEPARATEALPHABLENDENABLE, FALSE);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_SRCBLENDALPHA,            WINED3DBLEND_ONE);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_DESTBLENDALPHA,           WINED3DBLEND_ZERO);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_BLENDOPALPHA,             WINED3DBLENDOP_ADD);
+
+    /* clipping status */
+    This->clip_status.ClipUnion = 0;
+    This->clip_status.ClipIntersection = 0xFFFFFFFF;
+
+    /* Texture Stage States - Put directly into state block, we will call function below */
+    for (i = 0; i < MAX_TEXTURES; i++) {
+        TRACE("Setting up default texture states for texture Stage %d\n", i);
+        memcpy(&This->transforms[WINED3DTS_TEXTURE0 + i], identity, sizeof(identity));
+        This->textureState[i][WINED3DTSS_COLOROP               ] = (i==0)? WINED3DTOP_MODULATE :  WINED3DTOP_DISABLE;
+        This->textureState[i][WINED3DTSS_COLORARG1             ] = WINED3DTA_TEXTURE;
+        This->textureState[i][WINED3DTSS_COLORARG2             ] = WINED3DTA_CURRENT;
+        This->textureState[i][WINED3DTSS_ALPHAOP               ] = (i==0)? WINED3DTOP_SELECTARG1 :  WINED3DTOP_DISABLE;
+        This->textureState[i][WINED3DTSS_ALPHAARG1             ] = WINED3DTA_TEXTURE;
+        This->textureState[i][WINED3DTSS_ALPHAARG2             ] = WINED3DTA_CURRENT;
+        This->textureState[i][WINED3DTSS_BUMPENVMAT00          ] = 0;
+        This->textureState[i][WINED3DTSS_BUMPENVMAT01          ] = 0;
+        This->textureState[i][WINED3DTSS_BUMPENVMAT10          ] = 0;
+        This->textureState[i][WINED3DTSS_BUMPENVMAT11          ] = 0;
+        This->textureState[i][WINED3DTSS_TEXCOORDINDEX         ] = i;
+        This->textureState[i][WINED3DTSS_BUMPENVLSCALE         ] = 0;
+        This->textureState[i][WINED3DTSS_BUMPENVLOFFSET        ] = 0;
+        This->textureState[i][WINED3DTSS_TEXTURETRANSFORMFLAGS ] = WINED3DTTFF_DISABLE;
+        This->textureState[i][WINED3DTSS_ADDRESSW              ] = WINED3DTADDRESS_WRAP;
+        This->textureState[i][WINED3DTSS_COLORARG0             ] = WINED3DTA_CURRENT;
+        This->textureState[i][WINED3DTSS_ALPHAARG0             ] = WINED3DTA_CURRENT;
+        This->textureState[i][WINED3DTSS_RESULTARG             ] = WINED3DTA_CURRENT;
+    }
+    This->lowest_disabled_stage = 1;
+
+        /* Sampler states*/
+    for (i = 0 ; i <  MAX_COMBINED_SAMPLERS; i++) {
+        TRACE("Setting up default samplers states for sampler %d\n", i);
+        This->samplerState[i][WINED3DSAMP_ADDRESSU         ] = WINED3DTADDRESS_WRAP;
+        This->samplerState[i][WINED3DSAMP_ADDRESSV         ] = WINED3DTADDRESS_WRAP;
+        This->samplerState[i][WINED3DSAMP_ADDRESSW         ] = WINED3DTADDRESS_WRAP;
+        This->samplerState[i][WINED3DSAMP_BORDERCOLOR      ] = 0x00;
+        This->samplerState[i][WINED3DSAMP_MAGFILTER        ] = WINED3DTEXF_POINT;
+        This->samplerState[i][WINED3DSAMP_MINFILTER        ] = WINED3DTEXF_POINT;
+        This->samplerState[i][WINED3DSAMP_MIPFILTER        ] = WINED3DTEXF_NONE;
+        This->samplerState[i][WINED3DSAMP_MIPMAPLODBIAS    ] = 0;
+        This->samplerState[i][WINED3DSAMP_MAXMIPLEVEL      ] = 0;
+        This->samplerState[i][WINED3DSAMP_MAXANISOTROPY    ] = 1;
+        This->samplerState[i][WINED3DSAMP_SRGBTEXTURE      ] = 0;
+        This->samplerState[i][WINED3DSAMP_ELEMENTINDEX     ] = 0; /* TODO: Indicates which element of a  multielement texture to use */
+        This->samplerState[i][WINED3DSAMP_DMAPOFFSET       ] = 0; /* TODO: Vertex offset in the presampled displacement map */
+    }
+
+    for(i = 0; i < GL_LIMITS(textures); i++) {
+        /* Note: This avoids calling SetTexture, so pretend it has been called */
+        This->changed.textures[i] = TRUE;
+        This->textures[i]         = NULL;
+    }
+
+    /* Set the default scissor rect values */
+    desc.Width = &width;
+    desc.Height = &height;
+
+    /* check the return values, because the GetBackBuffer call isn't valid for ddraw */
+    hr = IWineD3DDevice_GetSwapChain(device, 0, &swapchain);
+    if( hr == WINED3D_OK && swapchain != NULL) {
+        hr = IWineD3DSwapChain_GetBackBuffer(swapchain, 0, WINED3DBACKBUFFER_TYPE_MONO, &backbuffer);
+        if( hr == WINED3D_OK && backbuffer != NULL) {
+            IWineD3DSurface_GetDesc(backbuffer, &desc);
+            IWineD3DSurface_Release(backbuffer);
+
+            scissorrect.left = 0;
+            scissorrect.right = width;
+            scissorrect.top = 0;
+            scissorrect.bottom = height;
+            hr = IWineD3DDevice_SetScissorRect(device, &scissorrect);
+            if( hr != WINED3D_OK ) {
+                ERR("This should never happen, expect rendering issues!\n");
+            }
+        }
+        IWineD3DSwapChain_Release(swapchain);
+    }
+
+    TRACE("-----------------------> Device defaults now set up...\n");
+    return WINED3D_OK;
+}
+
+/**********************************************************
+ * IWineD3DStateBlock VTbl follows
+ **********************************************************/
+
+const IWineD3DStateBlockVtbl IWineD3DStateBlock_Vtbl =
+{
+    /* IUnknown */
+    IWineD3DStateBlockImpl_QueryInterface,
+    IWineD3DStateBlockImpl_AddRef,
+    IWineD3DStateBlockImpl_Release,
+    /* IWineD3DStateBlock */
+    IWineD3DStateBlockImpl_GetParent,
+    IWineD3DStateBlockImpl_GetDevice,
+    IWineD3DStateBlockImpl_Capture,
+    IWineD3DStateBlockImpl_Apply,
+    IWineD3DStateBlockImpl_InitStartupStateBlock
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/surface.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/surface.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/surface.c	(revision 16410)
@@ -0,0 +1,4746 @@
+/*
+ * IWineD3DSurface Implementation
+ *
+ * Copyright 1998 Lionel Ulmer
+ * Copyright 2000-2001 TransGaming Technologies Inc.
+ * Copyright 2002-2005 Jason Edmeades
+ * Copyright 2002-2003 Raphael Junqueira
+ * Copyright 2004 Christian Costa
+ * Copyright 2005 Oliver Stieber
+ * Copyright 2006-2008 Stefan Dösinger for CodeWeavers
+ * Copyright 2007-2008 Henri Verbeet
+ * Copyright 2006-2008 Roderick Colenbrander
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "wine/port.h"
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d_surface);
+WINE_DECLARE_DEBUG_CHANNEL(d3d);
+#define GLINFO_LOCATION This->resource.wineD3DDevice->adapter->gl_info
+
+static void d3dfmt_p8_init_palette(IWineD3DSurfaceImpl *This, BYTE table[256][4], BOOL colorkey);
+static void d3dfmt_p8_upload_palette(IWineD3DSurface *iface, CONVERT_TYPES convert);
+static void surface_remove_pbo(IWineD3DSurfaceImpl *This);
+
+void surface_force_reload(IWineD3DSurface *iface)
+{
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+
+    This->Flags &= ~SFLAG_ALLOCATED;
+}
+
+void surface_set_texture_name(IWineD3DSurface *iface, GLuint name)
+{
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+
+    TRACE("(%p) : setting texture name %u\n", This, name);
+
+    if (!This->glDescription.textureName && name)
+    {
+        /* FIXME: We shouldn't need to remove SFLAG_INTEXTURE if the
+         * surface has no texture name yet. See if we can get rid of this. */
+        if (This->Flags & SFLAG_INTEXTURE)
+            ERR("Surface has SFLAG_INTEXTURE set, but no texture name\n");
+        IWineD3DSurface_ModifyLocation(iface, SFLAG_INTEXTURE, FALSE);
+    }
+
+    This->glDescription.textureName = name;
+    surface_force_reload(iface);
+}
+
+void surface_set_texture_target(IWineD3DSurface *iface, GLenum target)
+{
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+
+    TRACE("(%p) : setting target %#x\n", This, target);
+
+    if (This->glDescription.target != target)
+    {
+        if (target == GL_TEXTURE_RECTANGLE_ARB)
+        {
+            This->Flags &= ~SFLAG_NORMCOORD;
+        }
+        else if (This->glDescription.target == GL_TEXTURE_RECTANGLE_ARB)
+        {
+            This->Flags |= SFLAG_NORMCOORD;
+        }
+    }
+    This->glDescription.target = target;
+    surface_force_reload(iface);
+}
+
+static void surface_bind_and_dirtify(IWineD3DSurfaceImpl *This) {
+    int active_sampler;
+
+    /* We don't need a specific texture unit, but after binding the texture the current unit is dirty.
+     * Read the unit back instead of switching to 0, this avoids messing around with the state manager's
+     * gl states. The current texture unit should always be a valid one.
+     *
+     * To be more specific, this is tricky because we can implicitly be called
+     * from sampler() in state.c. This means we can't touch anything other than
+     * whatever happens to be the currently active texture, or we would risk
+     * marking already applied sampler states dirty again.
+     *
+     * TODO: Track the current active texture per GL context instead of using glGet
+     */
+    if (GL_SUPPORT(ARB_MULTITEXTURE)) {
+        GLint active_texture;
+        ENTER_GL();
+        glGetIntegerv(GL_ACTIVE_TEXTURE, &active_texture);
+        LEAVE_GL();
+        active_sampler = This->resource.wineD3DDevice->rev_tex_unit_map[active_texture - GL_TEXTURE0_ARB];
+    } else {
+        active_sampler = 0;
+    }
+
+    if (active_sampler != -1) {
+        IWineD3DDeviceImpl_MarkStateDirty(This->resource.wineD3DDevice, STATE_SAMPLER(active_sampler));
+    }
+    IWineD3DSurface_BindTexture((IWineD3DSurface *)This);
+}
+
+/* This function checks if the primary render target uses the 8bit paletted format. */
+static BOOL primary_render_target_is_p8(IWineD3DDeviceImpl *device)
+{
+    if (device->render_targets && device->render_targets[0]) {
+        IWineD3DSurfaceImpl* render_target = (IWineD3DSurfaceImpl*)device->render_targets[0];
+        if((render_target->resource.usage & WINED3DUSAGE_RENDERTARGET) && (render_target->resource.format == WINED3DFMT_P8))
+            return TRUE;
+    }
+    return FALSE;
+}
+
+/* This call just downloads data, the caller is responsible for activating the
+ * right context and binding the correct texture. */
+static void surface_download_data(IWineD3DSurfaceImpl *This) {
+    if (0 == This->glDescription.textureName) {
+        ERR("Surface does not have a texture, but SFLAG_INTEXTURE is set\n");
+        return;
+    }
+
+    /* Only support read back of converted P8 surfaces */
+    if(This->Flags & SFLAG_CONVERTED && (This->resource.format != WINED3DFMT_P8)) {
+        FIXME("Read back converted textures unsupported, format=%s\n", debug_d3dformat(This->resource.format));
+        return;
+    }
+
+    ENTER_GL();
+
+    if (This->resource.format == WINED3DFMT_DXT1 ||
+            This->resource.format == WINED3DFMT_DXT2 || This->resource.format == WINED3DFMT_DXT3 ||
+            This->resource.format == WINED3DFMT_DXT4 || This->resource.format == WINED3DFMT_DXT5 ||
+            This->resource.format == WINED3DFMT_ATI2N) {
+        if (!GL_SUPPORT(EXT_TEXTURE_COMPRESSION_S3TC)) { /* We can assume this as the texture would not have been created otherwise */
+            FIXME("(%p) : Attempting to lock a compressed texture when texture compression isn't supported by opengl\n", This);
+        } else {
+            TRACE("(%p) : Calling glGetCompressedTexImageARB level %d, format %#x, type %#x, data %p\n", This, This->glDescription.level,
+                This->glDescription.glFormat, This->glDescription.glType, This->resource.allocatedMemory);
+
+            if(This->Flags & SFLAG_PBO) {
+                GL_EXTCALL(glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, This->pbo));
+                checkGLcall("glBindBufferARB");
+                GL_EXTCALL(glGetCompressedTexImageARB(This->glDescription.target, This->glDescription.level, NULL));
+                checkGLcall("glGetCompressedTexImageARB()");
+                GL_EXTCALL(glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, 0));
+                checkGLcall("glBindBufferARB");
+            } else {
+                GL_EXTCALL(glGetCompressedTexImageARB(This->glDescription.target, This->glDescription.level, This->resource.allocatedMemory));
+                checkGLcall("glGetCompressedTexImageARB()");
+            }
+        }
+        LEAVE_GL();
+    } else {
+        void *mem;
+        GLenum format = This->glDescription.glFormat;
+        GLenum type = This->glDescription.glType;
+        int src_pitch = 0;
+        int dst_pitch = 0;
+
+        /* In case of P8 the index is stored in the alpha component if the primary render target uses P8 */
+        if(This->resource.format == WINED3DFMT_P8 && primary_render_target_is_p8(This->resource.wineD3DDevice)) {
+            format = GL_ALPHA;
+            type = GL_UNSIGNED_BYTE;
+        }
+
+        if (This->Flags & SFLAG_NONPOW2) {
+            unsigned char alignment = This->resource.wineD3DDevice->surface_alignment;
+            src_pitch = This->bytesPerPixel * This->pow2Width;
+            dst_pitch = IWineD3DSurface_GetPitch((IWineD3DSurface *) This);
+            src_pitch = (src_pitch + alignment - 1) & ~(alignment - 1);
+            mem = HeapAlloc(GetProcessHeap(), 0, src_pitch * This->pow2Height);
+        } else {
+            mem = This->resource.allocatedMemory;
+        }
+
+        TRACE("(%p) : Calling glGetTexImage level %d, format %#x, type %#x, data %p\n", This, This->glDescription.level,
+                format, type, mem);
+
+        if(This->Flags & SFLAG_PBO) {
+            GL_EXTCALL(glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, This->pbo));
+            checkGLcall("glBindBufferARB");
+
+            glGetTexImage(This->glDescription.target, This->glDescription.level, format,
+                          type, NULL);
+            checkGLcall("glGetTexImage()");
+
+            GL_EXTCALL(glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, 0));
+            checkGLcall("glBindBufferARB");
+        } else {
+            glGetTexImage(This->glDescription.target, This->glDescription.level, format,
+                          type, mem);
+            checkGLcall("glGetTexImage()");
+        }
+        LEAVE_GL();
+
+        if (This->Flags & SFLAG_NONPOW2) {
+            const BYTE *src_data;
+            BYTE *dst_data;
+            UINT y;
+            /*
+             * Some games (e.g. warhammer 40k) don't work properly with the odd pitches, preventing
+             * the surface pitch from being used to box non-power2 textures. Instead we have to use a hack to
+             * repack the texture so that the bpp * width pitch can be used instead of bpp * pow2width.
+             *
+             * We're doing this...
+             *
+             * instead of boxing the texture :
+             * |<-texture width ->|  -->pow2width|   /\
+             * |111111111111111111|              |   |
+             * |222 Texture 222222| boxed empty  | texture height
+             * |3333 Data 33333333|              |   |
+             * |444444444444444444|              |   \/
+             * -----------------------------------   |
+             * |     boxed  empty | boxed empty  | pow2height
+             * |                  |              |   \/
+             * -----------------------------------
+             *
+             *
+             * we're repacking the data to the expected texture width
+             *
+             * |<-texture width ->|  -->pow2width|   /\
+             * |111111111111111111222222222222222|   |
+             * |222333333333333333333444444444444| texture height
+             * |444444                           |   |
+             * |                                 |   \/
+             * |                                 |   |
+             * |            empty                | pow2height
+             * |                                 |   \/
+             * -----------------------------------
+             *
+             * == is the same as
+             *
+             * |<-texture width ->|    /\
+             * |111111111111111111|
+             * |222222222222222222|texture height
+             * |333333333333333333|
+             * |444444444444444444|    \/
+             * --------------------
+             *
+             * this also means that any references to allocatedMemory should work with the data as if were a
+             * standard texture with a non-power2 width instead of texture boxed up to be a power2 texture.
+             *
+             * internally the texture is still stored in a boxed format so any references to textureName will
+             * get a boxed texture with width pow2width and not a texture of width currentDesc.Width.
+             *
+             * Performance should not be an issue, because applications normally do not lock the surfaces when
+             * rendering. If an app does, the SFLAG_DYNLOCK flag will kick in and the memory copy won't be released,
+             * and doesn't have to be re-read.
+             */
+            src_data = mem;
+            dst_data = This->resource.allocatedMemory;
+            TRACE("(%p) : Repacking the surface data from pitch %d to pitch %d\n", This, src_pitch, dst_pitch);
+            for (y = 1 ; y < This->currentDesc.Height; y++) {
+                /* skip the first row */
+                src_data += src_pitch;
+                dst_data += dst_pitch;
+                memcpy(dst_data, src_data, dst_pitch);
+            }
+
+            HeapFree(GetProcessHeap(), 0, mem);
+        }
+    }
+
+    /* Surface has now been downloaded */
+    This->Flags |= SFLAG_INSYSMEM;
+}
+
+/* This call just uploads data, the caller is responsible for activating the
+ * right context and binding the correct texture. */
+static void surface_upload_data(IWineD3DSurfaceImpl *This, GLenum internal, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *data) {
+
+    if(This->heightscale != 1.0 && This->heightscale != 0.0) height *= This->heightscale;
+
+    if (This->resource.format == WINED3DFMT_DXT1 ||
+            This->resource.format == WINED3DFMT_DXT2 || This->resource.format == WINED3DFMT_DXT3 ||
+            This->resource.format == WINED3DFMT_DXT4 || This->resource.format == WINED3DFMT_DXT5 ||
+            This->resource.format == WINED3DFMT_ATI2N) {
+        if (!GL_SUPPORT(EXT_TEXTURE_COMPRESSION_S3TC)) {
+            FIXME("Using DXT1/3/5 without advertized support\n");
+        } else {
+            /* glCompressedTexSubImage2D for uploading and glTexImage2D for allocating does not work well on some drivers(r200 dri, MacOS ATI driver)
+             * glCompressedTexImage2D does not accept NULL pointers. So for compressed textures surface_allocate_surface does nothing, and this
+             * function uses glCompressedTexImage2D instead of the SubImage call
+             */
+            TRACE("(%p) : Calling glCompressedTexSubImage2D w %d, h %d, data %p\n", This, width, height, data);
+            ENTER_GL();
+
+            if(This->Flags & SFLAG_PBO) {
+                GL_EXTCALL(glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, This->pbo));
+                checkGLcall("glBindBufferARB");
+                TRACE("(%p) pbo: %#x, data: %p\n", This, This->pbo, data);
+
+                GL_EXTCALL(glCompressedTexImage2DARB(This->glDescription.target, This->glDescription.level, internal,
+                        width, height, 0 /* border */, This->resource.size, NULL));
+                checkGLcall("glCompressedTexSubImage2D");
+
+                GL_EXTCALL(glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0));
+                checkGLcall("glBindBufferARB");
+            } else {
+                GL_EXTCALL(glCompressedTexImage2DARB(This->glDescription.target, This->glDescription.level, internal,
+                        width, height, 0 /* border */, This->resource.size, data));
+                checkGLcall("glCompressedTexSubImage2D");
+            }
+            LEAVE_GL();
+        }
+    } else {
+        TRACE("(%p) : Calling glTexSubImage2D w %d,  h %d, data, %p\n", This, width, height, data);
+        ENTER_GL();
+
+        if(This->Flags & SFLAG_PBO) {
+            GL_EXTCALL(glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, This->pbo));
+            checkGLcall("glBindBufferARB");
+            TRACE("(%p) pbo: %#x, data: %p\n", This, This->pbo, data);
+
+            glTexSubImage2D(This->glDescription.target, This->glDescription.level, 0, 0, width, height, format, type, NULL);
+            checkGLcall("glTexSubImage2D");
+
+            GL_EXTCALL(glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0));
+            checkGLcall("glBindBufferARB");
+        }
+        else {
+            glTexSubImage2D(This->glDescription.target, This->glDescription.level, 0, 0, width, height, format, type, data);
+            checkGLcall("glTexSubImage2D");
+        }
+
+        LEAVE_GL();
+    }
+}
+
+/* This call just allocates the texture, the caller is responsible for
+ * activating the right context and binding the correct texture. */
+static void surface_allocate_surface(IWineD3DSurfaceImpl *This, GLenum internal, GLsizei width, GLsizei height, GLenum format, GLenum type) {
+    BOOL enable_client_storage = FALSE;
+    const BYTE *mem = NULL;
+
+    if(This->heightscale != 1.0 && This->heightscale != 0.0) height *= This->heightscale;
+
+    TRACE("(%p) : Creating surface (target %#x)  level %d, d3d format %s, internal format %#x, width %d, height %d, gl format %#x, gl type=%#x\n", This,
+            This->glDescription.target, This->glDescription.level, debug_d3dformat(This->resource.format), internal, width, height, format, type);
+
+    if (This->resource.format == WINED3DFMT_DXT1 ||
+            This->resource.format == WINED3DFMT_DXT2 || This->resource.format == WINED3DFMT_DXT3 ||
+            This->resource.format == WINED3DFMT_DXT4 || This->resource.format == WINED3DFMT_DXT5 ||
+            This->resource.format == WINED3DFMT_ATI2N) {
+        /* glCompressedTexImage2D does not accept NULL pointers, so we cannot allocate a compressed texture without uploading data */
+        TRACE("Not allocating compressed surfaces, surface_upload_data will specify them\n");
+
+        /* We have to point GL to the client storage memory here, because upload_data might use a PBO. This means a double upload
+         * once, unfortunately
+         */
+        if(GL_SUPPORT(APPLE_CLIENT_STORAGE)) {
+            /* Neither NONPOW2, DIBSECTION nor OVERSIZE flags can be set on compressed textures */
+            This->Flags |= SFLAG_CLIENT;
+            mem = (BYTE *)(((ULONG_PTR) This->resource.heapMemory + (RESOURCE_ALIGNMENT - 1)) & ~(RESOURCE_ALIGNMENT - 1));
+            ENTER_GL();
+            GL_EXTCALL(glCompressedTexImage2DARB(This->glDescription.target, This->glDescription.level, internal,
+                       width, height, 0 /* border */, This->resource.size, mem));
+            LEAVE_GL();
+        }
+
+        return;
+    }
+
+    ENTER_GL();
+
+    if(GL_SUPPORT(APPLE_CLIENT_STORAGE)) {
+        if(This->Flags & (SFLAG_NONPOW2 | SFLAG_DIBSECTION | SFLAG_OVERSIZE | SFLAG_CONVERTED) || This->resource.allocatedMemory == NULL) {
+            /* In some cases we want to disable client storage.
+             * SFLAG_NONPOW2 has a bigger opengl texture than the client memory, and different pitches
+             * SFLAG_DIBSECTION: Dibsections may have read / write protections on the memory. Avoid issues...
+             * SFLAG_OVERSIZE: The gl texture is smaller than the allocated memory
+             * SFLAG_CONVERTED: The conversion destination memory is freed after loading the surface
+             * allocatedMemory == NULL: Not defined in the extension. Seems to disable client storage effectively
+             */
+            glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_FALSE);
+            checkGLcall("glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_FALSE)");
+            This->Flags &= ~SFLAG_CLIENT;
+            enable_client_storage = TRUE;
+        } else {
+            This->Flags |= SFLAG_CLIENT;
+
+            /* Point opengl to our allocated texture memory. Do not use resource.allocatedMemory here because
+             * it might point into a pbo. Instead use heapMemory, but get the alignment right.
+             */
+            mem = (BYTE *)(((ULONG_PTR) This->resource.heapMemory + (RESOURCE_ALIGNMENT - 1)) & ~(RESOURCE_ALIGNMENT - 1));
+        }
+    }
+    glTexImage2D(This->glDescription.target, This->glDescription.level, internal, width, height, 0, format, type, mem);
+    checkGLcall("glTexImage2D");
+
+    if(enable_client_storage) {
+        glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_TRUE);
+        checkGLcall("glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_TRUE)");
+    }
+    LEAVE_GL();
+
+    This->Flags |= SFLAG_ALLOCATED;
+}
+
+/* In D3D the depth stencil dimensions have to be greater than or equal to the
+ * render target dimensions. With FBOs, the dimensions have to be an exact match. */
+/* TODO: We should synchronize the renderbuffer's content with the texture's content. */
+void surface_set_compatible_renderbuffer(IWineD3DSurface *iface, unsigned int width, unsigned int height) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+    renderbuffer_entry_t *entry;
+    GLuint renderbuffer = 0;
+    unsigned int src_width, src_height;
+
+    src_width = This->pow2Width;
+    src_height = This->pow2Height;
+
+    /* A depth stencil smaller than the render target is not valid */
+    if (width > src_width || height > src_height) return;
+
+    /* Remove any renderbuffer set if the sizes match */
+    if (width == src_width && height == src_height) {
+        This->current_renderbuffer = NULL;
+        return;
+    }
+
+    /* Look if we've already got a renderbuffer of the correct dimensions */
+    LIST_FOR_EACH_ENTRY(entry, &This->renderbuffers, renderbuffer_entry_t, entry) {
+        if (entry->width == width && entry->height == height) {
+            renderbuffer = entry->id;
+            This->current_renderbuffer = entry;
+            break;
+        }
+    }
+
+    if (!renderbuffer) {
+        const struct GlPixelFormatDesc *glDesc;
+        getFormatDescEntry(This->resource.format, &GLINFO_LOCATION, &glDesc);
+
+        GL_EXTCALL(glGenRenderbuffersEXT(1, &renderbuffer));
+        GL_EXTCALL(glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, renderbuffer));
+        GL_EXTCALL(glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, glDesc->glInternal, width, height));
+
+        entry = HeapAlloc(GetProcessHeap(), 0, sizeof(renderbuffer_entry_t));
+        entry->width = width;
+        entry->height = height;
+        entry->id = renderbuffer;
+        list_add_head(&This->renderbuffers, &entry->entry);
+
+        This->current_renderbuffer = entry;
+    }
+
+    checkGLcall("set_compatible_renderbuffer");
+}
+
+GLenum surface_get_gl_buffer(IWineD3DSurface *iface, IWineD3DSwapChain *swapchain) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+    IWineD3DSwapChainImpl *swapchain_impl = (IWineD3DSwapChainImpl *)swapchain;
+
+    TRACE("(%p) : swapchain %p\n", This, swapchain);
+
+    if (swapchain_impl->backBuffer && swapchain_impl->backBuffer[0] == iface) {
+        TRACE("Returning GL_BACK\n");
+        return GL_BACK;
+    } else if (swapchain_impl->frontBuffer == iface) {
+        TRACE("Returning GL_FRONT\n");
+        return GL_FRONT;
+    }
+
+    FIXME("Higher back buffer, returning GL_BACK\n");
+    return GL_BACK;
+}
+
+static ULONG WINAPI IWineD3DSurfaceImpl_Release(IWineD3DSurface *iface)
+{
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+    ULONG ref = InterlockedDecrement(&This->resource.ref);
+    TRACE("(%p) : Releasing from %d\n", This, ref + 1);
+    if (ref == 0) {
+        IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
+        renderbuffer_entry_t *entry, *entry2;
+        TRACE("(%p) : cleaning up\n", This);
+
+        /* Need a context to destroy the texture. Use the currently active render target, but only if
+         * the primary render target exists. Otherwise lastActiveRenderTarget is garbage, see above.
+         * When destroying the primary rt, Uninit3D will activate a context before doing anything
+         */
+        if(device->render_targets && device->render_targets[0]) {
+            ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+        }
+
+        ENTER_GL();
+        if (This->glDescription.textureName != 0) { /* release the openGL texture.. */
+            TRACE("Deleting texture %d\n", This->glDescription.textureName);
+            glDeleteTextures(1, &This->glDescription.textureName);
+        }
+
+        if(This->Flags & SFLAG_PBO) {
+            /* Delete the PBO */
+            GL_EXTCALL(glDeleteBuffersARB(1, &This->pbo));
+        }
+
+        LIST_FOR_EACH_ENTRY_SAFE(entry, entry2, &This->renderbuffers, renderbuffer_entry_t, entry) {
+            GL_EXTCALL(glDeleteRenderbuffersEXT(1, &entry->id));
+            HeapFree(GetProcessHeap(), 0, entry);
+        }
+        LEAVE_GL();
+
+        if(This->Flags & SFLAG_DIBSECTION) {
+            /* Release the DC */
+            SelectObject(This->hDC, This->dib.holdbitmap);
+            DeleteDC(This->hDC);
+            /* Release the DIB section */
+            DeleteObject(This->dib.DIBsection);
+            This->dib.bitmap_data = NULL;
+            This->resource.allocatedMemory = NULL;
+        }
+        if(This->Flags & SFLAG_USERPTR) IWineD3DSurface_SetMem(iface, NULL);
+
+        HeapFree(GetProcessHeap(), 0, This->palette9);
+
+        resource_cleanup((IWineD3DResource *)iface);
+
+        if(This->overlay_dest) {
+            list_remove(&This->overlay_entry);
+        }
+
+        TRACE("(%p) Released\n", This);
+        HeapFree(GetProcessHeap(), 0, This);
+
+    }
+    return ref;
+}
+
+/* ****************************************************
+   IWineD3DSurface IWineD3DResource parts follow
+   **************************************************** */
+
+static void WINAPI IWineD3DSurfaceImpl_PreLoad(IWineD3DSurface *iface)
+{
+    /* TODO: check for locks */
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+    IWineD3DBaseTexture *baseTexture = NULL;
+    IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
+
+    TRACE("(%p)Checking to see if the container is a base texture\n", This);
+    if (IWineD3DSurface_GetContainer(iface, &IID_IWineD3DBaseTexture, (void **)&baseTexture) == WINED3D_OK) {
+        TRACE("Passing to container\n");
+        IWineD3DBaseTexture_PreLoad(baseTexture);
+        IWineD3DBaseTexture_Release(baseTexture);
+    } else {
+        TRACE("(%p) : About to load surface\n", This);
+
+        if(!device->isInDraw) {
+            ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+        }
+
+        if (This->resource.format == WINED3DFMT_P8 || This->resource.format == WINED3DFMT_A8P8) {
+            if(palette9_changed(This)) {
+                TRACE("Reloading surface because the d3d8/9 palette was changed\n");
+                /* TODO: This is not necessarily needed with hw palettized texture support */
+                IWineD3DSurface_LoadLocation(iface, SFLAG_INSYSMEM, NULL);
+                /* Make sure the texture is reloaded because of the palette change, this kills performance though :( */
+                IWineD3DSurface_ModifyLocation(iface, SFLAG_INTEXTURE, FALSE);
+            }
+        }
+
+        IWineD3DSurface_LoadTexture(iface, FALSE);
+
+        if (This->resource.pool == WINED3DPOOL_DEFAULT) {
+            /* Tell opengl to try and keep this texture in video ram (well mostly) */
+            GLclampf tmp;
+            tmp = 0.9f;
+            ENTER_GL();
+            glPrioritizeTextures(1, &This->glDescription.textureName, &tmp);
+            LEAVE_GL();
+        }
+    }
+    return;
+}
+
+static void surface_remove_pbo(IWineD3DSurfaceImpl *This) {
+    This->resource.heapMemory = HeapAlloc(GetProcessHeap() ,0 , This->resource.size + RESOURCE_ALIGNMENT);
+    This->resource.allocatedMemory =
+            (BYTE *)(((ULONG_PTR) This->resource.heapMemory + (RESOURCE_ALIGNMENT - 1)) & ~(RESOURCE_ALIGNMENT - 1));
+
+    ENTER_GL();
+    GL_EXTCALL(glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, This->pbo));
+    checkGLcall("glBindBuffer(GL_PIXEL_UNPACK_BUFFER, This->pbo)");
+    GL_EXTCALL(glGetBufferSubDataARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0, This->resource.size, This->resource.allocatedMemory));
+    checkGLcall("glGetBufferSubData");
+    GL_EXTCALL(glDeleteBuffersARB(1, &This->pbo));
+    checkGLcall("glDeleteBuffers");
+    LEAVE_GL();
+
+    This->pbo = 0;
+    This->Flags &= ~SFLAG_PBO;
+}
+
+static void WINAPI IWineD3DSurfaceImpl_UnLoad(IWineD3DSurface *iface) {
+    IWineD3DBaseTexture *texture = NULL;
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface;
+    renderbuffer_entry_t *entry, *entry2;
+    TRACE("(%p)\n", iface);
+
+    if(This->resource.pool == WINED3DPOOL_DEFAULT) {
+        /* Default pool resources are supposed to be destroyed before Reset is called.
+         * Implicit resources stay however. So this means we have an implicit render target
+         * or depth stencil. The content may be destroyed, but we still have to tear down
+         * opengl resources, so we cannot leave early.
+         *
+         * Put the most up to date surface location into the drawable. D3D-wise this content
+         * is undefined, so it would be nowhere, but that would make the location management
+         * more complicated. The drawable is a sane location, because if we mark sysmem or
+         * texture up to date, drawPrim will copy the uninitialized texture or sysmem to the
+         * uninitialized drawable. That's pointless and we'd have to allocate the texture /
+         * sysmem copy here.
+         */
+        if (This->resource.usage & WINED3DUSAGE_DEPTHSTENCIL) {
+            IWineD3DSurface_ModifyLocation(iface, SFLAG_INSYSMEM, TRUE);
+        } else {
+            IWineD3DSurface_ModifyLocation(iface, SFLAG_INDRAWABLE, TRUE);
+        }
+    } else {
+        /* Load the surface into system memory */
+        IWineD3DSurface_LoadLocation(iface, SFLAG_INSYSMEM, NULL);
+        IWineD3DSurface_ModifyLocation(iface, SFLAG_INDRAWABLE, FALSE);
+    }
+    IWineD3DSurface_ModifyLocation(iface, SFLAG_INTEXTURE, FALSE);
+    This->Flags &= ~SFLAG_ALLOCATED;
+
+    /* Destroy PBOs, but load them into real sysmem before */
+    if(This->Flags & SFLAG_PBO) {
+        surface_remove_pbo(This);
+    }
+
+    /* Destroy fbo render buffers. This is needed for implicit render targets, for
+     * all application-created targets the application has to release the surface
+     * before calling _Reset
+     */
+    LIST_FOR_EACH_ENTRY_SAFE(entry, entry2, &This->renderbuffers, renderbuffer_entry_t, entry) {
+        ENTER_GL();
+        GL_EXTCALL(glDeleteRenderbuffersEXT(1, &entry->id));
+        LEAVE_GL();
+        list_remove(&entry->entry);
+        HeapFree(GetProcessHeap(), 0, entry);
+    }
+    list_init(&This->renderbuffers);
+    This->current_renderbuffer = NULL;
+
+    /* If we're in a texture, the texture name belongs to the texture. Otherwise,
+     * destroy it
+     */
+    IWineD3DSurface_GetContainer(iface, &IID_IWineD3DBaseTexture, (void **) &texture);
+    if(!texture) {
+        ENTER_GL();
+        glDeleteTextures(1, &This->glDescription.textureName);
+        This->glDescription.textureName = 0;
+        LEAVE_GL();
+    } else {
+        IWineD3DBaseTexture_Release(texture);
+    }
+    return;
+}
+
+/* ******************************************************
+   IWineD3DSurface IWineD3DSurface parts follow
+   ****************************************************** */
+
+static void WINAPI IWineD3DSurfaceImpl_GetGlDesc(IWineD3DSurface *iface, glDescriptor **glDescription)
+{
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+    TRACE("(%p) : returning %p\n", This, &This->glDescription);
+    *glDescription = &This->glDescription;
+}
+
+/* Read the framebuffer back into the surface */
+static void read_from_framebuffer(IWineD3DSurfaceImpl *This, CONST RECT *rect, void *dest, UINT pitch) {
+    IWineD3DSwapChainImpl *swapchain;
+    IWineD3DDeviceImpl *myDevice = This->resource.wineD3DDevice;
+    BYTE *mem;
+    GLint fmt;
+    GLint type;
+    BYTE *row, *top, *bottom;
+    int i;
+    BOOL bpp;
+    RECT local_rect;
+    BOOL srcIsUpsideDown;
+
+    if(wined3d_settings.rendertargetlock_mode == RTL_DISABLE) {
+        static BOOL warned = FALSE;
+        if(!warned) {
+            ERR("The application tries to lock the render target, but render target locking is disabled\n");
+            warned = TRUE;
+        }
+        return;
+    }
+
+    /* Activate the surface. Set it up for blitting now, although not necessarily needed for LockRect.
+     * Certain graphics drivers seem to dislike some enabled states when reading from opengl, the blitting usage
+     * should help here. Furthermore unlockrect will need the context set up for blitting. The context manager will find
+     * context->last_was_blit set on the unlock.
+     */
+    ActivateContext(myDevice, (IWineD3DSurface *) This, CTXUSAGE_BLIT);
+    ENTER_GL();
+
+    /* Select the correct read buffer, and give some debug output.
+     * There is no need to keep track of the current read buffer or reset it, every part of the code
+     * that reads sets the read buffer as desired.
+     */
+    if (SUCCEEDED(IWineD3DSurface_GetContainer((IWineD3DSurface *) This, &IID_IWineD3DSwapChain, (void **)&swapchain)))
+    {
+        GLenum buffer = surface_get_gl_buffer((IWineD3DSurface *) This, (IWineD3DSwapChain *)swapchain);
+        TRACE("Locking %#x buffer\n", buffer);
+        glReadBuffer(buffer);
+        checkGLcall("glReadBuffer");
+
+        IWineD3DSwapChain_Release((IWineD3DSwapChain *) swapchain);
+        srcIsUpsideDown = FALSE;
+    } else {
+        /* Locking the primary render target which is not on a swapchain(=offscreen render target).
+         * Read from the back buffer
+         */
+        TRACE("Locking offscreen render target\n");
+        glReadBuffer(myDevice->offscreenBuffer);
+        srcIsUpsideDown = TRUE;
+    }
+
+    /* TODO: Get rid of the extra rectangle comparison and construction of a full surface rectangle */
+    if(!rect) {
+        local_rect.left = 0;
+        local_rect.top = 0;
+        local_rect.right = This->currentDesc.Width;
+        local_rect.bottom = This->currentDesc.Height;
+    } else {
+        local_rect = *rect;
+    }
+    /* TODO: Get rid of the extra GetPitch call, LockRect does that too. Cache the pitch */
+
+    switch(This->resource.format)
+    {
+        case WINED3DFMT_P8:
+        {
+            if(primary_render_target_is_p8(myDevice)) {
+                /* In case of P8 render targets the index is stored in the alpha component */
+                fmt = GL_ALPHA;
+                type = GL_UNSIGNED_BYTE;
+                mem = dest;
+                bpp = This->bytesPerPixel;
+            } else {
+                /* GL can't return palettized data, so read ARGB pixels into a
+                 * separate block of memory and convert them into palettized format
+                 * in software. Slow, but if the app means to use palettized render
+                 * targets and locks it...
+                 *
+                 * Use GL_RGB, GL_UNSIGNED_BYTE to read the surface for performance reasons
+                 * Don't use GL_BGR as in the WINED3DFMT_R8G8B8 case, instead watch out
+                 * for the color channels when palettizing the colors.
+                 */
+                fmt = GL_RGB;
+                type = GL_UNSIGNED_BYTE;
+                pitch *= 3;
+                mem = HeapAlloc(GetProcessHeap(), 0, This->resource.size * 3);
+                if(!mem) {
+                    ERR("Out of memory\n");
+                    LEAVE_GL();
+                    return;
+                }
+                bpp = This->bytesPerPixel * 3;
+            }
+        }
+        break;
+
+        default:
+            mem = dest;
+            fmt = This->glDescription.glFormat;
+            type = This->glDescription.glType;
+            bpp = This->bytesPerPixel;
+    }
+
+    if(This->Flags & SFLAG_PBO) {
+        GL_EXTCALL(glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, This->pbo));
+        checkGLcall("glBindBufferARB");
+    }
+
+    glReadPixels(local_rect.left, local_rect.top,
+                 local_rect.right - local_rect.left,
+                 local_rect.bottom - local_rect.top,
+                 fmt, type, mem);
+    checkGLcall("glReadPixels");
+
+    if(This->Flags & SFLAG_PBO) {
+        GL_EXTCALL(glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, 0));
+        checkGLcall("glBindBufferARB");
+
+        /* Check if we need to flip the image. If we need to flip use glMapBufferARB
+         * to get a pointer to it and perform the flipping in software. This is a lot
+         * faster than calling glReadPixels for each line. In case we want more speed
+         * we should rerender it flipped in a FBO and read the data back from the FBO. */
+        if(!srcIsUpsideDown) {
+            GL_EXTCALL(glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, This->pbo));
+            checkGLcall("glBindBufferARB");
+
+            mem = GL_EXTCALL(glMapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, GL_READ_WRITE_ARB));
+            checkGLcall("glMapBufferARB");
+        }
+    }
+
+    /* TODO: Merge this with the palettization loop below for P8 targets */
+    if(!srcIsUpsideDown) {
+        UINT len, off;
+        /* glReadPixels returns the image upside down, and there is no way to prevent this.
+            Flip the lines in software */
+        len = (local_rect.right - local_rect.left) * bpp;
+        off = local_rect.left * bpp;
+
+        row = HeapAlloc(GetProcessHeap(), 0, len);
+        if(!row) {
+            ERR("Out of memory\n");
+            if(This->resource.format == WINED3DFMT_P8) HeapFree(GetProcessHeap(), 0, mem);
+            LEAVE_GL();
+            return;
+        }
+
+        top = mem + pitch * local_rect.top;
+        bottom = mem + pitch * ( local_rect.bottom - local_rect.top - 1);
+        for(i = 0; i < (local_rect.bottom - local_rect.top) / 2; i++) {
+            memcpy(row, top + off, len);
+            memcpy(top + off, bottom + off, len);
+            memcpy(bottom + off, row, len);
+            top += pitch;
+            bottom -= pitch;
+        }
+        HeapFree(GetProcessHeap(), 0, row);
+
+        /* Unmap the temp PBO buffer */
+        if(This->Flags & SFLAG_PBO) {
+            GL_EXTCALL(glUnmapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB));
+            GL_EXTCALL(glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0));
+        }
+    }
+
+    LEAVE_GL();
+
+    /* For P8 textures we need to perform an inverse palette lookup. This is done by searching for a palette
+     * index which matches the RGB value. Note this isn't guaranteed to work when there are multiple entries for
+     * the same color but we have no choice.
+     * In case of P8 render targets, the index is stored in the alpha component so no conversion is needed.
+     */
+    if((This->resource.format == WINED3DFMT_P8) && !primary_render_target_is_p8(myDevice)) {
+        const PALETTEENTRY *pal = NULL;
+        DWORD width = pitch / 3;
+        int x, y, c;
+
+        if(This->palette) {
+            pal = This->palette->palents;
+        } else {
+            ERR("Palette is missing, cannot perform inverse palette lookup\n");
+            HeapFree(GetProcessHeap(), 0, mem);
+            return ;
+        }
+
+        for(y = local_rect.top; y < local_rect.bottom; y++) {
+            for(x = local_rect.left; x < local_rect.right; x++) {
+                /*                      start              lines            pixels      */
+                const BYTE *blue = mem + y * pitch + x * (sizeof(BYTE) * 3);
+                const BYTE *green = blue  + 1;
+                const BYTE *red = green + 1;
+
+                for(c = 0; c < 256; c++) {
+                    if(*red   == pal[c].peRed   &&
+                       *green == pal[c].peGreen &&
+                       *blue  == pal[c].peBlue)
+                    {
+                        *((BYTE *) dest + y * width + x) = c;
+                        break;
+                    }
+                }
+            }
+        }
+        HeapFree(GetProcessHeap(), 0, mem);
+    }
+}
+
+/* Read the framebuffer contents into a texture */
+static void read_from_framebuffer_texture(IWineD3DSurfaceImpl *This)
+{
+    IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
+    IWineD3DSwapChainImpl *swapchain;
+    int bpp;
+    GLenum format, internal, type;
+    CONVERT_TYPES convert;
+    GLint prevRead;
+
+    d3dfmt_get_conv(This, TRUE /* We need color keying */, TRUE /* We will use textures */, &format, &internal, &type, &convert, &bpp, This->srgb);
+
+    /* Activate the surface to read from. In some situations it isn't the currently active target(e.g. backbuffer
+     * locking during offscreen rendering). RESOURCELOAD is ok because glCopyTexSubImage2D isn't affected by any
+     * states in the stateblock, and no driver was found yet that had bugs in that regard.
+     */
+    ActivateContext(device, (IWineD3DSurface *) This, CTXUSAGE_RESOURCELOAD);
+    surface_bind_and_dirtify(This);
+
+    ENTER_GL();
+    glGetIntegerv(GL_READ_BUFFER, &prevRead);
+    LEAVE_GL();
+
+    /* Select the correct read buffer, and give some debug output.
+     * There is no need to keep track of the current read buffer or reset it, every part of the code
+     * that reads sets the read buffer as desired.
+     */
+    if (SUCCEEDED(IWineD3DSurface_GetContainer((IWineD3DSurface *)This, &IID_IWineD3DSwapChain, (void **)&swapchain)))
+    {
+        GLenum buffer = surface_get_gl_buffer((IWineD3DSurface *) This, (IWineD3DSwapChain *)swapchain);
+        TRACE("Locking %#x buffer\n", buffer);
+
+        ENTER_GL();
+        glReadBuffer(buffer);
+        checkGLcall("glReadBuffer");
+        LEAVE_GL();
+
+        IWineD3DSwapChain_Release((IWineD3DSwapChain *) swapchain);
+    } else {
+        /* Locking the primary render target which is not on a swapchain(=offscreen render target).
+         * Read from the back buffer
+         */
+        TRACE("Locking offscreen render target\n");
+        ENTER_GL();
+        glReadBuffer(device->offscreenBuffer);
+        LEAVE_GL();
+    }
+
+    if(!(This->Flags & SFLAG_ALLOCATED)) {
+        surface_allocate_surface(This, internal, This->pow2Width,
+                                 This->pow2Height, format, type);
+    }
+
+    ENTER_GL();
+    /* If !SrcIsUpsideDown we should flip the surface.
+     * This can be done using glCopyTexSubImage2D but this
+     * is VERY slow, so don't do that. We should prevent
+     * this code from getting called in such cases or perhaps
+     * we can use FBOs */
+
+    glCopyTexSubImage2D(This->glDescription.target,
+                        This->glDescription.level,
+                        0, 0, 0, 0,
+                        This->currentDesc.Width,
+                        This->currentDesc.Height);
+    checkGLcall("glCopyTexSubImage2D");
+
+    glReadBuffer(prevRead);
+    checkGLcall("glReadBuffer");
+
+    LEAVE_GL();
+    TRACE("Updated target %d\n", This->glDescription.target);
+}
+
+static void surface_prepare_system_memory(IWineD3DSurfaceImpl *This) {
+    /* Performance optimization: Count how often a surface is locked, if it is locked regularly do not throw away the system memory copy.
+     * This avoids the need to download the surface from opengl all the time. The surface is still downloaded if the opengl texture is
+     * changed
+     */
+    if(!(This->Flags & SFLAG_DYNLOCK)) {
+        This->lockCount++;
+        /* MAXLOCKCOUNT is defined in wined3d_private.h */
+        if(This->lockCount > MAXLOCKCOUNT) {
+            TRACE("Surface is locked regularly, not freeing the system memory copy any more\n");
+            This->Flags |= SFLAG_DYNLOCK;
+        }
+    }
+
+    /* Create a PBO for dynamically locked surfaces but don't do it for converted or non-pow2 surfaces.
+     * Also don't create a PBO for systemmem surfaces.
+     */
+    if(GL_SUPPORT(ARB_PIXEL_BUFFER_OBJECT) && (This->Flags & SFLAG_DYNLOCK) && !(This->Flags & (SFLAG_PBO | SFLAG_CONVERTED | SFLAG_NONPOW2)) && (This->resource.pool != WINED3DPOOL_SYSTEMMEM)) {
+        GLenum error;
+        IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
+
+        ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+        ENTER_GL();
+
+        GL_EXTCALL(glGenBuffersARB(1, &This->pbo));
+        error = glGetError();
+        if(This->pbo == 0 || error != GL_NO_ERROR) {
+            ERR("Failed to bind the PBO with error %s (%#x)\n", debug_glerror(error), error);
+        }
+
+        TRACE("Attaching pbo=%#x to (%p)\n", This->pbo, This);
+
+        GL_EXTCALL(glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, This->pbo));
+        checkGLcall("glBindBufferARB");
+
+        GL_EXTCALL(glBufferDataARB(GL_PIXEL_UNPACK_BUFFER_ARB, This->resource.size + 4, This->resource.allocatedMemory, GL_STREAM_DRAW_ARB));
+        checkGLcall("glBufferDataARB");
+
+        GL_EXTCALL(glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0));
+        checkGLcall("glBindBufferARB");
+
+        /* We don't need the system memory anymore and we can't even use it for PBOs */
+        if(!(This->Flags & SFLAG_CLIENT)) {
+            HeapFree(GetProcessHeap(), 0, This->resource.heapMemory);
+            This->resource.heapMemory = NULL;
+        }
+        This->resource.allocatedMemory = NULL;
+        This->Flags |= SFLAG_PBO;
+        LEAVE_GL();
+    } else if(!(This->resource.allocatedMemory || This->Flags & SFLAG_PBO)) {
+        /* Whatever surface we have, make sure that there is memory allocated for the downloaded copy,
+         * or a pbo to map
+         */
+        if(!This->resource.heapMemory) {
+            This->resource.heapMemory = HeapAlloc(GetProcessHeap() ,0 , This->resource.size + RESOURCE_ALIGNMENT);
+        }
+        This->resource.allocatedMemory =
+                (BYTE *)(((ULONG_PTR) This->resource.heapMemory + (RESOURCE_ALIGNMENT - 1)) & ~(RESOURCE_ALIGNMENT - 1));
+        if(This->Flags & SFLAG_INSYSMEM) {
+            ERR("Surface without memory or pbo has SFLAG_INSYSMEM set!\n");
+        }
+    }
+}
+
+static HRESULT WINAPI IWineD3DSurfaceImpl_LockRect(IWineD3DSurface *iface, WINED3DLOCKED_RECT* pLockedRect, CONST RECT* pRect, DWORD Flags) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+    IWineD3DDeviceImpl  *myDevice = This->resource.wineD3DDevice;
+    IWineD3DSwapChain *swapchain = NULL;
+
+    TRACE("(%p) : rect@%p flags(%08x), output lockedRect@%p, memory@%p\n", This, pRect, Flags, pLockedRect, This->resource.allocatedMemory);
+
+    /* This is also done in the base class, but we have to verify this before loading any data from
+     * gl into the sysmem copy. The PBO may be mapped, a different rectangle locked, the discard flag
+     * may interfere, and all other bad things may happen
+     */
+    if (This->Flags & SFLAG_LOCKED) {
+        WARN("Surface is already locked, returning D3DERR_INVALIDCALL\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+    This->Flags |= SFLAG_LOCKED;
+
+    if (!(This->Flags & SFLAG_LOCKABLE))
+    {
+        TRACE("Warning: trying to lock unlockable surf@%p\n", This);
+    }
+
+    if (Flags & WINED3DLOCK_DISCARD) {
+        /* Set SFLAG_INSYSMEM, so we'll never try to download the data from the texture. */
+        TRACE("WINED3DLOCK_DISCARD flag passed, marking local copy as up to date\n");
+        surface_prepare_system_memory(This); /* Makes sure memory is allocated */
+        This->Flags |= SFLAG_INSYSMEM;
+        goto lock_end;
+    }
+
+    if (This->Flags & SFLAG_INSYSMEM) {
+        TRACE("Local copy is up to date, not downloading data\n");
+        surface_prepare_system_memory(This); /* Makes sure memory is allocated */
+        goto lock_end;
+    }
+
+    /* Now download the surface content from opengl
+     * Use the render target readback if the surface is on a swapchain(=onscreen render target) or the current primary target
+     * Offscreen targets which are not active at the moment or are higher targets(FBOs) can be locked with the texture path
+     */
+    IWineD3DSurface_GetContainer(iface, &IID_IWineD3DSwapChain, (void **)&swapchain);
+    if(swapchain || iface == myDevice->render_targets[0]) {
+        const RECT *pass_rect = pRect;
+
+        /* IWineD3DSurface_LoadLocation does not check if the rectangle specifies the full surfaces
+         * because most caller functions do not need that. So do that here
+         */
+        if(pRect &&
+           pRect->top    == 0 &&
+           pRect->left   == 0 &&
+           pRect->right  == This->currentDesc.Width &&
+           pRect->bottom == This->currentDesc.Height) {
+            pass_rect = NULL;
+        }
+
+        switch(wined3d_settings.rendertargetlock_mode) {
+            case RTL_TEXDRAW:
+            case RTL_TEXTEX:
+                FIXME("Reading from render target with a texture isn't implemented yet, falling back to framebuffer reading\n");
+#if 0
+                /* Disabled for now. LoadLocation prefers the texture over the drawable as the source. So if we copy to the
+                 * texture first, then to sysmem, we'll avoid glReadPixels and use glCopyTexImage and glGetTexImage2D instead.
+                 * This may be faster on some cards
+                 */
+                IWineD3DSurface_LoadLocation(iface, SFLAG_INTEXTURE, NULL /* No partial texture copy yet */);
+#endif
+                /* drop through */
+
+            case RTL_AUTO:
+            case RTL_READDRAW:
+            case RTL_READTEX:
+                IWineD3DSurface_LoadLocation(iface, SFLAG_INSYSMEM, pass_rect);
+                break;
+
+            case RTL_DISABLE:
+                break;
+        }
+        if(swapchain) IWineD3DSwapChain_Release(swapchain);
+
+    } else if(iface == myDevice->stencilBufferTarget) {
+        /** the depth stencil in openGL has a format of GL_FLOAT
+         * which should be good for WINED3DFMT_D16_LOCKABLE
+         * and WINED3DFMT_D16
+         * it is unclear what format the stencil buffer is in except.
+         * 'Each index is converted to fixed point...
+         * If GL_MAP_STENCIL is GL_TRUE, indices are replaced by their
+         * mappings in the table GL_PIXEL_MAP_S_TO_S.
+         * glReadPixels(This->lockedRect.left,
+         *             This->lockedRect.bottom - j - 1,
+         *             This->lockedRect.right - This->lockedRect.left,
+         *             1,
+         *             GL_DEPTH_COMPONENT,
+         *             type,
+         *             (char *)pLockedRect->pBits + (pLockedRect->Pitch * (j-This->lockedRect.top)));
+         *
+         * Depth Stencil surfaces which are not the current depth stencil target should have their data in a
+         * gl texture(next path), or in local memory(early return because of set SFLAG_INSYSMEM above). If
+         * none of that is the case the problem is not in this function :-)
+         ********************************************/
+        FIXME("Depth stencil locking not supported yet\n");
+    } else {
+        /* This path is for normal surfaces, offscreen render targets and everything else that is in a gl texture */
+        TRACE("locking an ordinary surface\n");
+        IWineD3DSurface_LoadLocation(iface, SFLAG_INSYSMEM, NULL /* no partial locking for textures yet */);
+    }
+
+lock_end:
+    if(This->Flags & SFLAG_PBO) {
+        ActivateContext(myDevice, myDevice->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+        ENTER_GL();
+        GL_EXTCALL(glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, This->pbo));
+        checkGLcall("glBindBufferARB");
+
+        /* This shouldn't happen but could occur if some other function didn't handle the PBO properly */
+        if(This->resource.allocatedMemory) {
+            ERR("The surface already has PBO memory allocated!\n");
+        }
+
+        This->resource.allocatedMemory = GL_EXTCALL(glMapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, GL_READ_WRITE_ARB));
+        checkGLcall("glMapBufferARB");
+
+        /* Make sure the pbo isn't set anymore in order not to break non-pbo calls */
+        GL_EXTCALL(glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0));
+        checkGLcall("glBindBufferARB");
+
+        LEAVE_GL();
+    }
+
+    if (Flags & (WINED3DLOCK_NO_DIRTY_UPDATE | WINED3DLOCK_READONLY)) {
+        /* Don't dirtify */
+    } else {
+        IWineD3DBaseTexture *pBaseTexture;
+        /**
+         * Dirtify on lock
+         * as seen in msdn docs
+         */
+        IWineD3DSurface_AddDirtyRect(iface, pRect);
+
+        /** Dirtify Container if needed */
+        if (SUCCEEDED(IWineD3DSurface_GetContainer(iface, &IID_IWineD3DBaseTexture, (void **)&pBaseTexture))) {
+            TRACE("Making container dirty\n");
+            IWineD3DBaseTexture_SetDirty(pBaseTexture, TRUE);
+            IWineD3DBaseTexture_Release(pBaseTexture);
+        } else {
+            TRACE("Surface is standalone, no need to dirty the container\n");
+        }
+    }
+
+    return IWineD3DBaseSurfaceImpl_LockRect(iface, pLockedRect, pRect, Flags);
+}
+
+static void flush_to_framebuffer_drawpixels(IWineD3DSurfaceImpl *This, GLenum fmt, GLenum type, UINT bpp, const BYTE *mem) {
+    GLint  prev_store;
+    GLint  prev_rasterpos[4];
+    GLint skipBytes = 0;
+    UINT pitch = IWineD3DSurface_GetPitch((IWineD3DSurface *) This);    /* target is argb, 4 byte */
+    IWineD3DDeviceImpl *myDevice = This->resource.wineD3DDevice;
+    IWineD3DSwapChainImpl *swapchain;
+
+    /* Activate the correct context for the render target */
+    ActivateContext(myDevice, (IWineD3DSurface *) This, CTXUSAGE_BLIT);
+    ENTER_GL();
+
+    if (SUCCEEDED(IWineD3DSurface_GetContainer((IWineD3DSurface *)This, &IID_IWineD3DSwapChain, (void **)&swapchain))) {
+        GLenum buffer = surface_get_gl_buffer((IWineD3DSurface *) This, (IWineD3DSwapChain *)swapchain);
+        TRACE("Unlocking %#x buffer\n", buffer);
+        glDrawBuffer(buffer);
+        checkGLcall("glDrawBuffer");
+
+        IWineD3DSwapChain_Release((IWineD3DSwapChain *)swapchain);
+    } else {
+        /* Primary offscreen render target */
+        TRACE("Offscreen render target\n");
+        glDrawBuffer(myDevice->offscreenBuffer);
+        checkGLcall("glDrawBuffer(myDevice->offscreenBuffer)");
+    }
+
+    glGetIntegerv(GL_PACK_SWAP_BYTES, &prev_store);
+    checkGLcall("glIntegerv");
+    glGetIntegerv(GL_CURRENT_RASTER_POSITION, &prev_rasterpos[0]);
+    checkGLcall("glIntegerv");
+    glPixelZoom(1.0, -1.0);
+    checkGLcall("glPixelZoom");
+
+    /* If not fullscreen, we need to skip a number of bytes to find the next row of data */
+    glGetIntegerv(GL_UNPACK_ROW_LENGTH, &skipBytes);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, This->currentDesc.Width);
+
+    glRasterPos3i(This->lockedRect.left, This->lockedRect.top, 1);
+    checkGLcall("glRasterPos2f");
+
+    /* Some drivers(radeon dri, others?) don't like exceptions during
+     * glDrawPixels. If the surface is a DIB section, it might be in GDIMode
+     * after ReleaseDC. Reading it will cause an exception, which x11drv will
+     * catch to put the dib section in InSync mode, which leads to a crash
+     * and a blocked x server on my radeon card.
+     *
+     * The following lines read the dib section so it is put in InSync mode
+     * before glDrawPixels is called and the crash is prevented. There won't
+     * be any interfering gdi accesses, because UnlockRect is called from
+     * ReleaseDC, and the app won't use the dc any more afterwards.
+     */
+    if((This->Flags & SFLAG_DIBSECTION) && !(This->Flags & SFLAG_PBO)) {
+        volatile BYTE read;
+        read = This->resource.allocatedMemory[0];
+    }
+
+    if(This->Flags & SFLAG_PBO) {
+        GL_EXTCALL(glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, This->pbo));
+        checkGLcall("glBindBufferARB");
+    }
+
+    /* When the surface is locked we only have to refresh the locked part else we need to update the whole image */
+    if(This->Flags & SFLAG_LOCKED) {
+        glDrawPixels(This->lockedRect.right - This->lockedRect.left,
+                     (This->lockedRect.bottom - This->lockedRect.top)-1,
+                     fmt, type,
+                     mem + bpp * This->lockedRect.left + pitch * This->lockedRect.top);
+        checkGLcall("glDrawPixels");
+    } else {
+        glDrawPixels(This->currentDesc.Width,
+                     This->currentDesc.Height,
+                     fmt, type, mem);
+        checkGLcall("glDrawPixels");
+    }
+
+    if(This->Flags & SFLAG_PBO) {
+        GL_EXTCALL(glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0));
+        checkGLcall("glBindBufferARB");
+    }
+
+    glPixelZoom(1.0,1.0);
+    checkGLcall("glPixelZoom");
+
+    glRasterPos3iv(&prev_rasterpos[0]);
+    checkGLcall("glRasterPos3iv");
+
+    /* Reset to previous pack row length */
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, skipBytes);
+    checkGLcall("glPixelStorei GL_UNPACK_ROW_LENGTH");
+
+    if(!swapchain) {
+        glDrawBuffer(myDevice->offscreenBuffer);
+        checkGLcall("glDrawBuffer(myDevice->offscreenBuffer)");
+    } else if(swapchain->backBuffer) {
+        glDrawBuffer(GL_BACK);
+        checkGLcall("glDrawBuffer(GL_BACK)");
+    } else {
+        glDrawBuffer(GL_FRONT);
+        checkGLcall("glDrawBuffer(GL_FRONT)");
+    }
+    LEAVE_GL();
+
+    return;
+}
+
+static HRESULT WINAPI IWineD3DSurfaceImpl_UnlockRect(IWineD3DSurface *iface) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+    IWineD3DDeviceImpl  *myDevice = This->resource.wineD3DDevice;
+    IWineD3DSwapChainImpl *swapchain = NULL;
+    BOOL fullsurface;
+
+    if (!(This->Flags & SFLAG_LOCKED)) {
+        WARN("trying to Unlock an unlocked surf@%p\n", This);
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    if (This->Flags & SFLAG_PBO) {
+        TRACE("Freeing PBO memory\n");
+        ActivateContext(myDevice, myDevice->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+        ENTER_GL();
+        GL_EXTCALL(glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, This->pbo));
+        GL_EXTCALL(glUnmapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB));
+        GL_EXTCALL(glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0));
+        checkGLcall("glUnmapBufferARB");
+        LEAVE_GL();
+        This->resource.allocatedMemory = NULL;
+    }
+
+    TRACE("(%p) : dirtyfied(%d)\n", This, This->Flags & (SFLAG_INDRAWABLE | SFLAG_INTEXTURE) ? 0 : 1);
+
+    if (This->Flags & (SFLAG_INDRAWABLE | SFLAG_INTEXTURE)) {
+        TRACE("(%p) : Not Dirtified so nothing to do, return now\n", This);
+        goto unlock_end;
+    }
+
+    IWineD3DSurface_GetContainer(iface, &IID_IWineD3DSwapChain, (void **)&swapchain);
+    if(swapchain || (myDevice->render_targets && iface == myDevice->render_targets[0])) {
+        if(swapchain) IWineD3DSwapChain_Release((IWineD3DSwapChain *) swapchain);
+
+        if(wined3d_settings.rendertargetlock_mode == RTL_DISABLE) {
+            static BOOL warned = FALSE;
+            if(!warned) {
+                ERR("The application tries to write to the render target, but render target locking is disabled\n");
+                warned = TRUE;
+            }
+            goto unlock_end;
+        }
+
+        if(This->dirtyRect.left   == 0 &&
+           This->dirtyRect.top    == 0 &&
+           This->dirtyRect.right  == This->currentDesc.Width &&
+           This->dirtyRect.bottom == This->currentDesc.Height) {
+            fullsurface = TRUE;
+        } else {
+            /* TODO: Proper partial rectangle tracking */
+            fullsurface = FALSE;
+            This->Flags |= SFLAG_INSYSMEM;
+        }
+
+        switch(wined3d_settings.rendertargetlock_mode) {
+            case RTL_READTEX:
+            case RTL_TEXTEX:
+                ActivateContext(myDevice, iface, CTXUSAGE_BLIT);
+                IWineD3DSurface_LoadLocation(iface, SFLAG_INTEXTURE, NULL /* partial texture loading not supported yet */);
+                /* drop through */
+
+            case RTL_AUTO:
+            case RTL_READDRAW:
+            case RTL_TEXDRAW:
+                IWineD3DSurface_LoadLocation(iface, SFLAG_INDRAWABLE, fullsurface ? NULL : &This->dirtyRect);
+                break;
+        }
+
+        if(!fullsurface) {
+            /* Partial rectangle tracking is not commonly implemented, it is only done for render targets. Overwrite
+             * the flags to bring them back into a sane state. INSYSMEM was set before to tell LoadLocation where
+             * to read the rectangle from. Indrawable is set because all modifications from the partial sysmem copy
+             * are written back to the drawable, thus the surface is merged again in the drawable. The sysmem copy is
+             * not fully up to date because only a subrectangle was read in LockRect.
+             */
+            This->Flags &= ~SFLAG_INSYSMEM;
+            This->Flags |= SFLAG_INDRAWABLE;
+        }
+
+        This->dirtyRect.left   = This->currentDesc.Width;
+        This->dirtyRect.top    = This->currentDesc.Height;
+        This->dirtyRect.right  = 0;
+        This->dirtyRect.bottom = 0;
+    } else if(iface == myDevice->stencilBufferTarget) {
+        FIXME("Depth Stencil buffer locking is not implemented\n");
+    } else {
+        /* The rest should be a normal texture */
+        IWineD3DBaseTextureImpl *impl;
+        /* Check if the texture is bound, if yes dirtify the sampler to force a re-upload of the texture
+         * Can't load the texture here because PreLoad may destroy and recreate the gl texture, so sampler
+         * states need resetting
+         */
+        if(IWineD3DSurface_GetContainer(iface, &IID_IWineD3DBaseTexture, (void **)&impl) == WINED3D_OK) {
+            if(impl->baseTexture.bindCount) {
+                IWineD3DDeviceImpl_MarkStateDirty(myDevice, STATE_SAMPLER(impl->baseTexture.sampler));
+            }
+            IWineD3DBaseTexture_Release((IWineD3DBaseTexture *) impl);
+        }
+    }
+
+    unlock_end:
+    This->Flags &= ~SFLAG_LOCKED;
+    memset(&This->lockedRect, 0, sizeof(RECT));
+
+    /* Overlays have to be redrawn manually after changes with the GL implementation */
+    if(This->overlay_dest) {
+        IWineD3DSurface_DrawOverlay(iface);
+    }
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DSurfaceImpl_GetDC(IWineD3DSurface *iface, HDC *pHDC)
+{
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+    WINED3DLOCKED_RECT lock;
+    HRESULT hr;
+    RGBQUAD col[256];
+
+    TRACE("(%p)->(%p)\n",This,pHDC);
+
+    if(This->Flags & SFLAG_USERPTR) {
+        ERR("Not supported on surfaces with an application-provided surfaces\n");
+        return WINEDDERR_NODC;
+    }
+
+    /* Give more detailed info for ddraw */
+    if (This->Flags & SFLAG_DCINUSE)
+        return WINEDDERR_DCALREADYCREATED;
+
+    /* Can't GetDC if the surface is locked */
+    if (This->Flags & SFLAG_LOCKED)
+        return WINED3DERR_INVALIDCALL;
+
+    /* According to Direct3D9 docs, only these formats are supported */
+    if (((IWineD3DImpl *)This->resource.wineD3DDevice->wineD3D)->dxVersion > 7) {
+        if (This->resource.format != WINED3DFMT_R5G6B5 &&
+            This->resource.format != WINED3DFMT_X1R5G5B5 &&
+            This->resource.format != WINED3DFMT_R8G8B8 &&
+            This->resource.format != WINED3DFMT_X8R8G8B8) return WINED3DERR_INVALIDCALL;
+    }
+
+    memset(&lock, 0, sizeof(lock)); /* To be sure */
+
+    /* Create a DIB section if there isn't a hdc yet */
+    if(!This->hDC) {
+        IWineD3DBaseSurfaceImpl_CreateDIBSection(iface);
+        if(This->Flags & SFLAG_CLIENT) {
+            IWineD3DSurface_PreLoad(iface);
+        }
+
+        /* Use the dib section from now on if we are not using a PBO */
+        if(!(This->Flags & SFLAG_PBO))
+            This->resource.allocatedMemory = This->dib.bitmap_data;
+    }
+
+    /* Lock the surface */
+    hr = IWineD3DSurface_LockRect(iface,
+                                  &lock,
+                                  NULL,
+                                  0);
+
+    if(This->Flags & SFLAG_PBO) {
+        /* Sync the DIB with the PBO. This can't be done earlier because LockRect activates the allocatedMemory */
+        memcpy(This->dib.bitmap_data, This->resource.allocatedMemory, This->dib.bitmap_size);
+    }
+
+    if(FAILED(hr)) {
+        ERR("IWineD3DSurface_LockRect failed with hr = %08x\n", hr);
+        /* keep the dib section */
+        return hr;
+    }
+
+    if(This->resource.format == WINED3DFMT_P8 ||
+        This->resource.format == WINED3DFMT_A8P8) {
+        /* GetDC on palettized formats is unsupported in D3D9, and the method is missing in
+            D3D8, so this should only be used for DX <=7 surfaces (with non-device palettes) */
+        unsigned int n;
+        const PALETTEENTRY *pal = NULL;
+
+        if(This->palette) {
+            pal = This->palette->palents;
+        } else {
+            IWineD3DSurfaceImpl *dds_primary;
+            IWineD3DSwapChainImpl *swapchain;
+            swapchain = (IWineD3DSwapChainImpl *)This->resource.wineD3DDevice->swapchains[0];
+            dds_primary = (IWineD3DSurfaceImpl *)swapchain->frontBuffer;
+            if (dds_primary && dds_primary->palette)
+                pal = dds_primary->palette->palents;
+        }
+
+        if (pal) {
+            for (n=0; n<256; n++) {
+                col[n].rgbRed   = pal[n].peRed;
+                col[n].rgbGreen = pal[n].peGreen;
+                col[n].rgbBlue  = pal[n].peBlue;
+                col[n].rgbReserved = 0;
+            }
+            SetDIBColorTable(This->hDC, 0, 256, col);
+        }
+    }
+
+    *pHDC = This->hDC;
+    TRACE("returning %p\n",*pHDC);
+    This->Flags |= SFLAG_DCINUSE;
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DSurfaceImpl_ReleaseDC(IWineD3DSurface *iface, HDC hDC)
+{
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+
+    TRACE("(%p)->(%p)\n",This,hDC);
+
+    if (!(This->Flags & SFLAG_DCINUSE))
+        return WINED3DERR_INVALIDCALL;
+
+    if (This->hDC !=hDC) {
+        WARN("Application tries to release an invalid DC(%p), surface dc is %p\n", hDC, This->hDC);
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    if((This->Flags & SFLAG_PBO) && This->resource.allocatedMemory) {
+        /* Copy the contents of the DIB over to the PBO */
+        memcpy(This->resource.allocatedMemory, This->dib.bitmap_data, This->dib.bitmap_size);
+    }
+
+    /* we locked first, so unlock now */
+    IWineD3DSurface_UnlockRect(iface);
+
+    This->Flags &= ~SFLAG_DCINUSE;
+
+    return WINED3D_OK;
+}
+
+/* ******************************************************
+   IWineD3DSurface Internal (No mapping to directx api) parts follow
+   ****************************************************** */
+
+HRESULT d3dfmt_get_conv(IWineD3DSurfaceImpl *This, BOOL need_alpha_ck, BOOL use_texturing, GLenum *format, GLenum *internal, GLenum *type, CONVERT_TYPES *convert, int *target_bpp, BOOL srgb_mode) {
+    BOOL colorkey_active = need_alpha_ck && (This->CKeyFlags & WINEDDSD_CKSRCBLT);
+    const struct GlPixelFormatDesc *glDesc;
+    IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
+    getFormatDescEntry(This->resource.format, &GLINFO_LOCATION, &glDesc);
+
+    /* Default values: From the surface */
+    *format = glDesc->glFormat;
+    *type = glDesc->glType;
+    *convert = NO_CONVERSION;
+    *target_bpp = This->bytesPerPixel;
+
+    if(srgb_mode) {
+        *internal = glDesc->glGammaInternal;
+    } else if(This->resource.usage & WINED3DUSAGE_RENDERTARGET) {
+        *internal = glDesc->rtInternal;
+    } else {
+        *internal = glDesc->glInternal;
+    }
+
+    /* Ok, now look if we have to do any conversion */
+    switch(This->resource.format) {
+        case WINED3DFMT_P8:
+            /* ****************
+                Paletted Texture
+                **************** */
+
+             /* Use conversion when the paletted texture extension OR fragment shaders are available. When either
+             * of the two is available make sure texturing is requested as neither of the two works in
+             * conjunction with calls like glDraw-/glReadPixels. Further also use conversion in case of color keying.
+             * Paletted textures can be emulated using shaders but only do that for 2D purposes e.g. situations
+             * in which the main render target uses p8. Some games like GTA Vice City use P8 for texturing which
+             * conflicts with this.
+             */
+            if( !(GL_SUPPORT(EXT_PALETTED_TEXTURE) ||
+                  (GL_SUPPORT(ARB_FRAGMENT_PROGRAM) &&
+                   device->render_targets &&
+                   This == (IWineD3DSurfaceImpl*)device->render_targets[0])) ||
+                colorkey_active || !use_texturing ) {
+                *format = GL_RGBA;
+                *internal = GL_RGBA;
+                *type = GL_UNSIGNED_BYTE;
+                *target_bpp = 4;
+                if(colorkey_active) {
+                    *convert = CONVERT_PALETTED_CK;
+                } else {
+                    *convert = CONVERT_PALETTED;
+                }
+            }
+            else if(!GL_SUPPORT(EXT_PALETTED_TEXTURE) && GL_SUPPORT(ARB_FRAGMENT_PROGRAM)) {
+                *format = GL_ALPHA;
+                *internal = GL_RGBA;
+                *type = GL_UNSIGNED_BYTE;
+                *target_bpp = 1;
+            }
+
+            break;
+
+        case WINED3DFMT_R3G3B2:
+            /* **********************
+                GL_UNSIGNED_BYTE_3_3_2
+                ********************** */
+            if (colorkey_active) {
+                /* This texture format will never be used.. So do not care about color keying
+                    up until the point in time it will be needed :-) */
+                FIXME(" ColorKeying not supported in the RGB 332 format !\n");
+            }
+            break;
+
+        case WINED3DFMT_R5G6B5:
+            if (colorkey_active) {
+                *convert = CONVERT_CK_565;
+                *format = GL_RGBA;
+                *internal = GL_RGBA;
+                *type = GL_UNSIGNED_SHORT_5_5_5_1;
+            }
+            break;
+
+        case WINED3DFMT_X1R5G5B5:
+            if (colorkey_active) {
+                *convert = CONVERT_CK_5551;
+                *format = GL_BGRA;
+                *internal = GL_RGBA;
+                *type = GL_UNSIGNED_SHORT_1_5_5_5_REV;
+            }
+            break;
+
+        case WINED3DFMT_R8G8B8:
+            if (colorkey_active) {
+                *convert = CONVERT_CK_RGB24;
+                *format = GL_RGBA;
+                *internal = GL_RGBA;
+                *type = GL_UNSIGNED_INT_8_8_8_8;
+                *target_bpp = 4;
+            }
+            break;
+
+        case WINED3DFMT_X8R8G8B8:
+            if (colorkey_active) {
+                *convert = CONVERT_RGB32_888;
+                *format = GL_RGBA;
+                *internal = GL_RGBA;
+                *type = GL_UNSIGNED_INT_8_8_8_8;
+            }
+            break;
+
+        case WINED3DFMT_V8U8:
+            if(GL_SUPPORT(NV_TEXTURE_SHADER3)) break;
+            *convert = CONVERT_V8U8;
+            *format = GL_BGR;
+            *internal = GL_RGB8;
+            *type = GL_UNSIGNED_BYTE;
+            *target_bpp = 3;
+            break;
+
+        case WINED3DFMT_L6V5U5:
+            *convert = CONVERT_L6V5U5;
+            if(GL_SUPPORT(NV_TEXTURE_SHADER)) {
+                *target_bpp = 3;
+                /* Use format and types from table */
+            } else {
+                /* Load it into unsigned R5G6B5, swap L and V channels, and revert that in the shader */
+                *target_bpp = 2;
+                *format = GL_RGB;
+                *internal = GL_RGB5;
+                *type = GL_UNSIGNED_SHORT_5_6_5;
+            }
+            break;
+
+        case WINED3DFMT_X8L8V8U8:
+            *convert = CONVERT_X8L8V8U8;
+            *target_bpp = 4;
+            if(GL_SUPPORT(NV_TEXTURE_SHADER)) {
+                /* Use formats from gl table. It is a bit unfortunate, but the conversion
+                 * is needed to set the X format to 255 to get 1.0 for alpha when sampling
+                 * the texture. OpenGL can't use GL_DSDT8_MAG8_NV as internal format with
+                 * the needed type and format parameter, so the internal format contains a
+                 * 4th component, which is returned as alpha
+                 */
+            } else {
+                *format = GL_BGRA;
+                *internal = GL_RGB8;
+                *type = GL_UNSIGNED_INT_8_8_8_8_REV;
+            }
+            break;
+
+        case WINED3DFMT_Q8W8V8U8:
+            if(GL_SUPPORT(NV_TEXTURE_SHADER3)) break;
+            *convert = CONVERT_Q8W8V8U8;
+            *format = GL_BGRA;
+            *internal = GL_RGBA8;
+            *type = GL_UNSIGNED_BYTE;
+            *target_bpp = 4;
+            break;
+
+        case WINED3DFMT_V16U16:
+            if(GL_SUPPORT(NV_TEXTURE_SHADER3)) break;
+            *convert = CONVERT_V16U16;
+            *format = GL_BGR;
+            *internal = GL_RGB16_EXT;
+            *type = GL_UNSIGNED_SHORT;
+            *target_bpp = 6;
+            break;
+
+        case WINED3DFMT_A4L4:
+            /* A4L4 exists as an internal gl format, but for some reason there is not
+             * format+type combination to load it. Thus convert it to A8L8, then load it
+             * with A4L4 internal, but A8L8 format+type
+             */
+            *convert = CONVERT_A4L4;
+            *format = GL_LUMINANCE_ALPHA;
+            *internal = GL_LUMINANCE4_ALPHA4;
+            *type = GL_UNSIGNED_BYTE;
+            *target_bpp = 2;
+            break;
+
+        default:
+            break;
+    }
+
+    return WINED3D_OK;
+}
+
+static HRESULT d3dfmt_convert_surface(const BYTE *src, BYTE *dst, UINT pitch, UINT width,
+        UINT height, UINT outpitch, CONVERT_TYPES convert, IWineD3DSurfaceImpl *This)
+{
+    const BYTE *source;
+    BYTE *dest;
+    TRACE("(%p)->(%p),(%d,%d,%d,%d,%p)\n", src, dst, pitch, height, outpitch, convert,This);
+
+    switch (convert) {
+        case NO_CONVERSION:
+        {
+            memcpy(dst, src, pitch * height);
+            break;
+        }
+        case CONVERT_PALETTED:
+        case CONVERT_PALETTED_CK:
+        {
+            IWineD3DPaletteImpl* pal = This->palette;
+            BYTE table[256][4];
+            unsigned int x, y;
+
+            if( pal == NULL) {
+                /* TODO: If we are a sublevel, try to get the palette from level 0 */
+            }
+
+            d3dfmt_p8_init_palette(This, table, (convert == CONVERT_PALETTED_CK));
+
+            for (y = 0; y < height; y++)
+            {
+                source = src + pitch * y;
+                dest = dst + outpitch * y;
+                /* This is an 1 bpp format, using the width here is fine */
+                for (x = 0; x < width; x++) {
+                    BYTE color = *source++;
+                    *dest++ = table[color][0];
+                    *dest++ = table[color][1];
+                    *dest++ = table[color][2];
+                    *dest++ = table[color][3];
+                }
+            }
+        }
+        break;
+
+        case CONVERT_CK_565:
+        {
+            /* Converting the 565 format in 5551 packed to emulate color-keying.
+
+              Note : in all these conversion, it would be best to average the averaging
+                      pixels to get the color of the pixel that will be color-keyed to
+                      prevent 'color bleeding'. This will be done later on if ever it is
+                      too visible.
+
+              Note2: Nvidia documents say that their driver does not support alpha + color keying
+                     on the same surface and disables color keying in such a case
+            */
+            unsigned int x, y;
+            const WORD *Source;
+            WORD *Dest;
+
+            TRACE("Color keyed 565\n");
+
+            for (y = 0; y < height; y++) {
+                Source = (const WORD *)(src + y * pitch);
+                Dest = (WORD *) (dst + y * outpitch);
+                for (x = 0; x < width; x++ ) {
+                    WORD color = *Source++;
+                    *Dest = ((color & 0xFFC0) | ((color & 0x1F) << 1));
+                    if ((color < This->SrcBltCKey.dwColorSpaceLowValue) ||
+                        (color > This->SrcBltCKey.dwColorSpaceHighValue)) {
+                        *Dest |= 0x0001;
+                    }
+                    Dest++;
+                }
+            }
+        }
+        break;
+
+        case CONVERT_CK_5551:
+        {
+            /* Converting X1R5G5B5 format to R5G5B5A1 to emulate color-keying. */
+            unsigned int x, y;
+            const WORD *Source;
+            WORD *Dest;
+            TRACE("Color keyed 5551\n");
+            for (y = 0; y < height; y++) {
+                Source = (const WORD *)(src + y * pitch);
+                Dest = (WORD *) (dst + y * outpitch);
+                for (x = 0; x < width; x++ ) {
+                    WORD color = *Source++;
+		    *Dest = color;
+                    if ((color < This->SrcBltCKey.dwColorSpaceLowValue) ||
+                        (color > This->SrcBltCKey.dwColorSpaceHighValue)) {
+                        *Dest |= (1 << 15);
+                    }
+                    else {
+                        *Dest &= ~(1 << 15);
+                    }
+                    Dest++;
+                }
+            }
+        }
+        break;
+
+        case CONVERT_CK_RGB24:
+        {
+            /* Converting R8G8B8 format to R8G8B8A8 with color-keying. */
+            unsigned int x, y;
+            for (y = 0; y < height; y++)
+            {
+                source = src + pitch * y;
+                dest = dst + outpitch * y;
+                for (x = 0; x < width; x++) {
+                    DWORD color = ((DWORD)source[0] << 16) + ((DWORD)source[1] << 8) + (DWORD)source[2] ;
+                    DWORD dstcolor = color << 8;
+                    if ((color < This->SrcBltCKey.dwColorSpaceLowValue) ||
+                        (color > This->SrcBltCKey.dwColorSpaceHighValue)) {
+                        dstcolor |= 0xff;
+                    }
+                    *(DWORD*)dest = dstcolor;
+                    source += 3;
+                    dest += 4;
+                }
+            }
+        }
+        break;
+
+        case CONVERT_RGB32_888:
+        {
+            /* Converting X8R8G8B8 format to R8G8B8A8 with color-keying. */
+            unsigned int x, y;
+            for (y = 0; y < height; y++)
+            {
+                source = src + pitch * y;
+                dest = dst + outpitch * y;
+                for (x = 0; x < width; x++) {
+                    DWORD color = 0xffffff & *(const DWORD*)source;
+                    DWORD dstcolor = color << 8;
+                    if ((color < This->SrcBltCKey.dwColorSpaceLowValue) ||
+                        (color > This->SrcBltCKey.dwColorSpaceHighValue)) {
+                        dstcolor |= 0xff;
+                    }
+                    *(DWORD*)dest = dstcolor;
+                    source += 4;
+                    dest += 4;
+                }
+            }
+        }
+        break;
+
+        case CONVERT_V8U8:
+        {
+            unsigned int x, y;
+            const short *Source;
+            unsigned char *Dest;
+            for(y = 0; y < height; y++) {
+                Source = (const short *)(src + y * pitch);
+                Dest = dst + y * outpitch;
+                for (x = 0; x < width; x++ ) {
+                    long color = (*Source++);
+                    /* B */ Dest[0] = 0xff;
+                    /* G */ Dest[1] = (color >> 8) + 128; /* V */
+                    /* R */ Dest[2] = (color) + 128;      /* U */
+                    Dest += 3;
+                }
+            }
+            break;
+        }
+
+        case CONVERT_V16U16:
+        {
+            unsigned int x, y;
+            const DWORD *Source;
+            unsigned short *Dest;
+            for(y = 0; y < height; y++) {
+                Source = (const DWORD *)(src + y * pitch);
+                Dest = (unsigned short *) (dst + y * outpitch);
+                for (x = 0; x < width; x++ ) {
+                    DWORD color = (*Source++);
+                    /* B */ Dest[0] = 0xffff;
+                    /* G */ Dest[1] = (color >> 16) + 32768; /* V */
+                    /* R */ Dest[2] = (color      ) + 32768; /* U */
+                    Dest += 3;
+                }
+            }
+            break;
+        }
+
+        case CONVERT_Q8W8V8U8:
+        {
+            unsigned int x, y;
+            const DWORD *Source;
+            unsigned char *Dest;
+            for(y = 0; y < height; y++) {
+                Source = (const DWORD *)(src + y * pitch);
+                Dest = dst + y * outpitch;
+                for (x = 0; x < width; x++ ) {
+                    long color = (*Source++);
+                    /* B */ Dest[0] = ((color >> 16) & 0xff) + 128; /* W */
+                    /* G */ Dest[1] = ((color >> 8 ) & 0xff) + 128; /* V */
+                    /* R */ Dest[2] = (color         & 0xff) + 128; /* U */
+                    /* A */ Dest[3] = ((color >> 24) & 0xff) + 128; /* Q */
+                    Dest += 4;
+                }
+            }
+            break;
+        }
+
+        case CONVERT_L6V5U5:
+        {
+            unsigned int x, y;
+            const WORD *Source;
+            unsigned char *Dest;
+
+            if(GL_SUPPORT(NV_TEXTURE_SHADER)) {
+                /* This makes the gl surface bigger(24 bit instead of 16), but it works with
+                 * fixed function and shaders without further conversion once the surface is
+                 * loaded
+                 */
+                for(y = 0; y < height; y++) {
+                    Source = (const WORD *)(src + y * pitch);
+                    Dest = dst + y * outpitch;
+                    for (x = 0; x < width; x++ ) {
+                        short color = (*Source++);
+                        unsigned char l = ((color >> 10) & 0xfc);
+                                  char v = ((color >>  5) & 0x3e);
+                                  char u = ((color      ) & 0x1f);
+
+                        /* 8 bits destination, 6 bits source, 8th bit is the sign. gl ignores the sign
+                         * and doubles the positive range. Thus shift left only once, gl does the 2nd
+                         * shift. GL reads a signed value and converts it into an unsigned value.
+                         */
+                        /* M */ Dest[2] = l << 1;
+
+                        /* Those are read as signed, but kept signed. Just left-shift 3 times to scale
+                         * from 5 bit values to 8 bit values.
+                         */
+                        /* V */ Dest[1] = v << 3;
+                        /* U */ Dest[0] = u << 3;
+                        Dest += 3;
+                    }
+                }
+            } else {
+                for(y = 0; y < height; y++) {
+                    unsigned short *Dest_s = (unsigned short *) (dst + y * outpitch);
+                    Source = (const WORD *)(src + y * pitch);
+                    for (x = 0; x < width; x++ ) {
+                        short color = (*Source++);
+                        unsigned char l = ((color >> 10) & 0xfc);
+                                 short v = ((color >>  5) & 0x3e);
+                                 short u = ((color      ) & 0x1f);
+                        short v_conv = v + 16;
+                        short u_conv = u + 16;
+
+                        *Dest_s = ((v_conv << 11) & 0xf800) | ((l << 5) & 0x7e0) | (u_conv & 0x1f);
+                        Dest_s += 1;
+                    }
+                }
+            }
+            break;
+        }
+
+        case CONVERT_X8L8V8U8:
+        {
+            unsigned int x, y;
+            const DWORD *Source;
+            unsigned char *Dest;
+
+            if(GL_SUPPORT(NV_TEXTURE_SHADER)) {
+                /* This implementation works with the fixed function pipeline and shaders
+                 * without further modification after converting the surface.
+                 */
+                for(y = 0; y < height; y++) {
+                    Source = (const DWORD *)(src + y * pitch);
+                    Dest = dst + y * outpitch;
+                    for (x = 0; x < width; x++ ) {
+                        long color = (*Source++);
+                        /* L */ Dest[2] = ((color >> 16) & 0xff);   /* L */
+                        /* V */ Dest[1] = ((color >> 8 ) & 0xff);   /* V */
+                        /* U */ Dest[0] = (color         & 0xff);   /* U */
+                        /* I */ Dest[3] = 255;                      /* X */
+                        Dest += 4;
+                    }
+                }
+            } else {
+                /* Doesn't work correctly with the fixed function pipeline, but can work in
+                 * shaders if the shader is adjusted. (There's no use for this format in gl's
+                 * standard fixed function pipeline anyway).
+                 */
+                for(y = 0; y < height; y++) {
+                    Source = (const DWORD *)(src + y * pitch);
+                    Dest = dst + y * outpitch;
+                    for (x = 0; x < width; x++ ) {
+                        long color = (*Source++);
+                        /* B */ Dest[0] = ((color >> 16) & 0xff);       /* L */
+                        /* G */ Dest[1] = ((color >> 8 ) & 0xff) + 128; /* V */
+                        /* R */ Dest[2] = (color         & 0xff) + 128;  /* U */
+                        Dest += 4;
+                    }
+                }
+            }
+            break;
+        }
+
+        case CONVERT_A4L4:
+        {
+            unsigned int x, y;
+            const unsigned char *Source;
+            unsigned char *Dest;
+            for(y = 0; y < height; y++) {
+                Source = src + y * pitch;
+                Dest = dst + y * outpitch;
+                for (x = 0; x < width; x++ ) {
+                    unsigned char color = (*Source++);
+                    /* A */ Dest[1] = (color & 0xf0) << 0;
+                    /* L */ Dest[0] = (color & 0x0f) << 4;
+                    Dest += 2;
+                }
+            }
+            break;
+        }
+
+        default:
+            ERR("Unsupported conversation type %d\n", convert);
+    }
+    return WINED3D_OK;
+}
+
+static void d3dfmt_p8_init_palette(IWineD3DSurfaceImpl *This, BYTE table[256][4], BOOL colorkey) {
+    IWineD3DPaletteImpl* pal = This->palette;
+    IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
+    BOOL index_in_alpha = FALSE;
+    int dxVersion = ( (IWineD3DImpl *) device->wineD3D)->dxVersion;
+    unsigned int i;
+
+    /* Old games like StarCraft, C&C, Red Alert and others use P8 render targets.
+    * Reading back the RGB output each lockrect (each frame as they lock the whole screen)
+    * is slow. Further RGB->P8 conversion is not possible because palettes can have
+    * duplicate entries. Store the color key in the unused alpha component to speed the
+    * download up and to make conversion unneeded. */
+    index_in_alpha = primary_render_target_is_p8(device);
+
+    if (pal == NULL) {
+        /* In DirectDraw the palette is a property of the surface, there are no such things as device palettes. */
+        if(dxVersion <= 7) {
+            ERR("This code should never get entered for DirectDraw!, expect problems\n");
+            if(index_in_alpha) {
+                /* Guarantees that memory representation remains correct after sysmem<->texture transfers even if
+                   there's no palette at this time. */
+                for (i = 0; i < 256; i++) table[i][3] = i;
+            }
+        } else {
+            /*  Direct3D >= 8 palette usage style: P8 textures use device palettes, palette entry format is A8R8G8B8,
+                alpha is stored in peFlags and may be used by the app if D3DPTEXTURECAPS_ALPHAPALETTE device
+                capability flag is present (wine does advertise this capability) */
+            for (i = 0; i < 256; i++) {
+                table[i][0] = device->palettes[device->currentPalette][i].peRed;
+                table[i][1] = device->palettes[device->currentPalette][i].peGreen;
+                table[i][2] = device->palettes[device->currentPalette][i].peBlue;
+                table[i][3] = device->palettes[device->currentPalette][i].peFlags;
+            }
+        }
+    } else {
+        TRACE("Using surface palette %p\n", pal);
+        /* Get the surface's palette */
+        for (i = 0; i < 256; i++) {
+            table[i][0] = pal->palents[i].peRed;
+            table[i][1] = pal->palents[i].peGreen;
+            table[i][2] = pal->palents[i].peBlue;
+
+            /* When index_in_alpha is the palette index is stored in the alpha component. In case of a readback
+               we can then read GL_ALPHA. Color keying is handled in BltOverride using a GL_ALPHA_TEST using GL_NOT_EQUAL.
+               In case of index_in_alpha the color key itself is passed to glAlphaFunc in other cases the alpha component
+               of pixels that should be masked away is set to 0. */
+            if(index_in_alpha) {
+                table[i][3] = i;
+            } else if(colorkey && (i >= This->SrcBltCKey.dwColorSpaceLowValue) &&  (i <= This->SrcBltCKey.dwColorSpaceHighValue)) {
+                table[i][3] = 0x00;
+            } else if(pal->Flags & WINEDDPCAPS_ALPHA) {
+                table[i][3] = pal->palents[i].peFlags;
+            } else {
+                table[i][3] = 0xFF;
+            }
+        }
+    }
+}
+
+/* This function is used in case of 8bit paletted textures to upload the palette.
+   It supports GL_EXT_paletted_texture and GL_ARB_fragment_program, support for other
+   extensions like ATI_fragment_shaders is possible.
+*/
+static void d3dfmt_p8_upload_palette(IWineD3DSurface *iface, CONVERT_TYPES convert) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+    BYTE table[256][4];
+    IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
+
+    d3dfmt_p8_init_palette(This, table, (convert == CONVERT_PALETTED_CK));
+
+    /* Try to use the paletted texture extension */
+    if(GL_SUPPORT(EXT_PALETTED_TEXTURE))
+    {
+        TRACE("Using GL_EXT_PALETTED_TEXTURE for 8-bit paletted texture support\n");
+        GL_EXTCALL(glColorTableEXT(This->glDescription.target,GL_RGBA,256,GL_RGBA,GL_UNSIGNED_BYTE, table));
+    }
+    else
+    {
+        /* Let a fragment shader do the color conversion by uploading the palette to a 1D texture.
+         * The 8bit pixel data will be used as an index in this palette texture to retrieve the final color. */
+        TRACE("Using fragment shaders for emulating 8-bit paletted texture support\n");
+
+        /* Create the fragment program if we don't have it */
+        if(!device->paletteConversionShader)
+        {
+            const char *fragment_palette_conversion =
+                "!!ARBfp1.0\n"
+                "TEMP index;\n"
+                /* { 255/256, 0.5/255*255/256, 0, 0 } */
+                "PARAM constants = { 0.996, 0.00195, 0, 0 };\n"
+                /* The alpha-component contains the palette index */
+                "TEX index, fragment.texcoord[0], texture[0], 2D;\n"
+                /* Scale the index by 255/256 and add a bias of '0.5' in order to sample in the middle */
+                "MAD index.a, index.a, constants.x, constants.y;\n"
+                /* Use the alpha-component as an index in the palette to get the final color */
+                "TEX result.color, index.a, texture[1], 1D;\n"
+                "END";
+
+            glEnable(GL_FRAGMENT_PROGRAM_ARB);
+            GL_EXTCALL(glGenProgramsARB(1, &device->paletteConversionShader));
+            GL_EXTCALL(glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, device->paletteConversionShader));
+            GL_EXTCALL(glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, strlen(fragment_palette_conversion), (const GLbyte *)fragment_palette_conversion));
+            glDisable(GL_FRAGMENT_PROGRAM_ARB);
+        }
+
+        glEnable(GL_FRAGMENT_PROGRAM_ARB);
+        GL_EXTCALL(glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, device->paletteConversionShader));
+
+        GL_EXTCALL(glActiveTextureARB(GL_TEXTURE1));
+        glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
+
+        glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+        glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); /* Make sure we have discrete color levels. */
+        glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+        glTexImage1D(GL_TEXTURE_1D, 0, GL_RGBA, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, table); /* Upload the palette */
+
+        /* Switch back to unit 0 in which the 2D texture will be stored. */
+        GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0));
+
+        /* Rebind the texture because it isn't bound anymore */
+        glBindTexture(This->glDescription.target, This->glDescription.textureName);
+    }
+}
+
+BOOL palette9_changed(IWineD3DSurfaceImpl *This) {
+    IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
+
+    if(This->palette || (This->resource.format != WINED3DFMT_P8 && This->resource.format != WINED3DFMT_A8P8)) {
+        /* If a ddraw-style palette is attached assume no d3d9 palette change.
+         * Also the palette isn't interesting if the surface format isn't P8 or A8P8
+         */
+        return FALSE;
+    }
+
+    if(This->palette9) {
+        if(memcmp(This->palette9, &device->palettes[device->currentPalette], sizeof(PALETTEENTRY) * 256) == 0) {
+            return FALSE;
+        }
+    } else {
+        This->palette9 = HeapAlloc(GetProcessHeap(), 0, sizeof(PALETTEENTRY) * 256);
+    }
+    memcpy(This->palette9, &device->palettes[device->currentPalette], sizeof(PALETTEENTRY) * 256);
+    return TRUE;
+}
+
+static HRESULT WINAPI IWineD3DSurfaceImpl_LoadTexture(IWineD3DSurface *iface, BOOL srgb_mode) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+
+    if (!(This->Flags & SFLAG_INTEXTURE)) {
+        TRACE("Reloading because surface is dirty\n");
+    } else if(/* Reload: gl texture has ck, now no ckey is set OR */
+              ((This->Flags & SFLAG_GLCKEY) && (!(This->CKeyFlags & WINEDDSD_CKSRCBLT))) ||
+              /* Reload: vice versa  OR */
+              ((!(This->Flags & SFLAG_GLCKEY)) && (This->CKeyFlags & WINEDDSD_CKSRCBLT)) ||
+              /* Also reload: Color key is active AND the color key has changed */
+              ((This->CKeyFlags & WINEDDSD_CKSRCBLT) && (
+                (This->glCKey.dwColorSpaceLowValue != This->SrcBltCKey.dwColorSpaceLowValue) ||
+                (This->glCKey.dwColorSpaceHighValue != This->SrcBltCKey.dwColorSpaceHighValue)))) {
+        TRACE("Reloading because of color keying\n");
+        /* To perform the color key conversion we need a sysmem copy of
+         * the surface. Make sure we have it
+         */
+
+        IWineD3DSurface_LoadLocation(iface, SFLAG_INSYSMEM, NULL);
+        /* Make sure the texture is reloaded because of the color key change, this kills performance though :( */
+        /* TODO: This is not necessarily needed with hw palettized texture support */
+        IWineD3DSurface_ModifyLocation(iface, SFLAG_INSYSMEM, TRUE);
+    } else {
+        TRACE("surface is already in texture\n");
+        return WINED3D_OK;
+    }
+
+    /* Resources are placed in system RAM and do not need to be recreated when a device is lost.
+     *  These resources are not bound by device size or format restrictions. Because of this,
+     *  these resources cannot be accessed by the Direct3D device nor set as textures or render targets.
+     *  However, these resources can always be created, locked, and copied.
+     */
+    if (This->resource.pool == WINED3DPOOL_SCRATCH )
+    {
+        FIXME("(%p) Operation not supported for scratch textures\n",This);
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    This->srgb = srgb_mode;
+    IWineD3DSurface_LoadLocation(iface, SFLAG_INTEXTURE, NULL /* no partial locking for textures yet */);
+
+#if 0
+    {
+        static unsigned int gen = 0;
+        char buffer[4096];
+        ++gen;
+        if ((gen % 10) == 0) {
+            snprintf(buffer, sizeof(buffer), "/tmp/surface%p_type%u_level%u_%u.ppm", This, This->glDescription.target, This->glDescription.level, gen);
+            IWineD3DSurfaceImpl_SaveSnapshot(iface, buffer);
+        }
+        /*
+         * debugging crash code
+         if (gen == 250) {
+         void** test = NULL;
+         *test = 0;
+         }
+         */
+    }
+#endif
+
+    if (!(This->Flags & SFLAG_DONOTFREE)) {
+        HeapFree(GetProcessHeap(), 0, This->resource.heapMemory);
+        This->resource.allocatedMemory = NULL;
+        This->resource.heapMemory = NULL;
+        IWineD3DSurface_ModifyLocation(iface, SFLAG_INSYSMEM, FALSE);
+    }
+
+    return WINED3D_OK;
+}
+
+static void WINAPI IWineD3DSurfaceImpl_BindTexture(IWineD3DSurface *iface) {
+    /* TODO: check for locks */
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+    IWineD3DBaseTexture *baseTexture = NULL;
+    IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
+
+    TRACE("(%p)Checking to see if the container is a base texture\n", This);
+    if (IWineD3DSurface_GetContainer(iface, &IID_IWineD3DBaseTexture, (void **)&baseTexture) == WINED3D_OK) {
+        TRACE("Passing to container\n");
+        IWineD3DBaseTexture_BindTexture(baseTexture);
+        IWineD3DBaseTexture_Release(baseTexture);
+    } else {
+        TRACE("(%p) : Binding surface\n", This);
+
+        if(!device->isInDraw) {
+            ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+        }
+
+        ENTER_GL();
+
+        if (!This->glDescription.level) {
+            if (!This->glDescription.textureName) {
+                glGenTextures(1, &This->glDescription.textureName);
+                checkGLcall("glGenTextures");
+                TRACE("Surface %p given name %d\n", This, This->glDescription.textureName);
+
+                glBindTexture(This->glDescription.target, This->glDescription.textureName);
+                checkGLcall("glBindTexture");
+                glTexParameteri(This->glDescription.target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+                checkGLcall("glTexParameteri(dimension, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)");
+                glTexParameteri(This->glDescription.target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+                checkGLcall("glTexParameteri(dimension, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)");
+                glTexParameteri(This->glDescription.target, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
+                checkGLcall("glTexParameteri(dimension, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE)");
+                glTexParameteri(This->glDescription.target, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+                checkGLcall("glTexParameteri(dimension, GL_TEXTURE_MIN_FILTER, GL_NEAREST)");
+                glTexParameteri(This->glDescription.target, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+                checkGLcall("glTexParameteri(dimension, GL_TEXTURE_MAG_FILTER, GL_NEAREST)");
+            }
+            /* This is where we should be reducing the amount of GLMemoryUsed */
+        } else if (This->glDescription.textureName) {
+            /* Mipmap surfaces should have a base texture container */
+            ERR("Mipmap surface has a glTexture bound to it!\n");
+        }
+
+        glBindTexture(This->glDescription.target, This->glDescription.textureName);
+        checkGLcall("glBindTexture");
+
+        LEAVE_GL();
+    }
+    return;
+}
+
+#include <errno.h>
+#include <stdio.h>
+static HRESULT WINAPI IWineD3DSurfaceImpl_SaveSnapshot(IWineD3DSurface *iface, const char* filename)
+{
+    FILE* f = NULL;
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+    char *allocatedMemory;
+    const char *textureRow;
+    IWineD3DSwapChain *swapChain = NULL;
+    int width, height, i, y;
+    GLuint tmpTexture = 0;
+    DWORD color;
+    /*FIXME:
+    Textures may not be stored in ->allocatedgMemory and a GlTexture
+    so we should lock the surface before saving a snapshot, or at least check that
+    */
+    /* TODO: Compressed texture images can be obtained from the GL in uncompressed form
+    by calling GetTexImage and in compressed form by calling
+    GetCompressedTexImageARB.  Queried compressed images can be saved and
+    later reused by calling CompressedTexImage[123]DARB.  Pre-compressed
+    texture images do not need to be processed by the GL and should
+    significantly improve texture loading performance relative to uncompressed
+    images. */
+
+/* Setup the width and height to be the internal texture width and height. */
+    width  = This->pow2Width;
+    height = This->pow2Height;
+/* check to see if we're a 'virtual' texture, e.g. we're not a pbuffer of texture, we're a back buffer*/
+    IWineD3DSurface_GetContainer(iface, &IID_IWineD3DSwapChain, (void **)&swapChain);
+
+    if (This->Flags & SFLAG_INDRAWABLE && !(This->Flags & SFLAG_INTEXTURE)) {
+        /* if were not a real texture then read the back buffer into a real texture */
+        /* we don't want to interfere with the back buffer so read the data into a temporary
+         * texture and then save the data out of the temporary texture
+         */
+        GLint prevRead;
+        ENTER_GL();
+        TRACE("(%p) Reading render target into texture\n", This);
+
+        glGenTextures(1, &tmpTexture);
+        glBindTexture(GL_TEXTURE_2D, tmpTexture);
+
+        glTexImage2D(GL_TEXTURE_2D,
+                        0,
+                        GL_RGBA,
+                        width,
+                        height,
+                        0/*border*/,
+                        GL_RGBA,
+                        GL_UNSIGNED_INT_8_8_8_8_REV,
+                        NULL);
+
+        glGetIntegerv(GL_READ_BUFFER, &prevRead);
+        checkGLcall("glGetIntegerv");
+        glReadBuffer(swapChain ? GL_BACK : This->resource.wineD3DDevice->offscreenBuffer);
+        checkGLcall("glReadBuffer");
+        glCopyTexImage2D(GL_TEXTURE_2D,
+                            0,
+                            GL_RGBA,
+                            0,
+                            0,
+                            width,
+                            height,
+                            0);
+
+        checkGLcall("glCopyTexImage2D");
+        glReadBuffer(prevRead);
+        LEAVE_GL();
+
+    } else { /* bind the real texture, and make sure it up to date */
+        IWineD3DSurface_PreLoad(iface);
+        surface_bind_and_dirtify(This);
+    }
+    allocatedMemory = HeapAlloc(GetProcessHeap(), 0, width  * height * 4);
+    ENTER_GL();
+    FIXME("Saving texture level %d width %d height %d\n", This->glDescription.level, width, height);
+    glGetTexImage(GL_TEXTURE_2D,
+                This->glDescription.level,
+                GL_RGBA,
+                GL_UNSIGNED_INT_8_8_8_8_REV,
+                allocatedMemory);
+    checkGLcall("glTexImage2D");
+    if (tmpTexture) {
+        glBindTexture(GL_TEXTURE_2D, 0);
+        glDeleteTextures(1, &tmpTexture);
+    }
+    LEAVE_GL();
+
+    f = fopen(filename, "w+");
+    if (NULL == f) {
+        ERR("opening of %s failed with: %s\n", filename, strerror(errno));
+        return WINED3DERR_INVALIDCALL;
+    }
+/* Save the data out to a TGA file because 1: it's an easy raw format, 2: it supports an alpha channel */
+    TRACE("(%p) opened %s with format %s\n", This, filename, debug_d3dformat(This->resource.format));
+/* TGA header */
+    fputc(0,f);
+    fputc(0,f);
+    fputc(2,f);
+    fputc(0,f);
+    fputc(0,f);
+    fputc(0,f);
+    fputc(0,f);
+    fputc(0,f);
+    fputc(0,f);
+    fputc(0,f);
+    fputc(0,f);
+    fputc(0,f);
+/* short width*/
+    fwrite(&width,2,1,f);
+/* short height */
+    fwrite(&height,2,1,f);
+/* format rgba */
+    fputc(0x20,f);
+    fputc(0x28,f);
+/* raw data */
+    /* if the data is upside down if we've fetched it from a back buffer, so it needs flipping again to make it the correct way up */
+    if(swapChain)
+        textureRow = allocatedMemory + (width * (height - 1) *4);
+    else
+        textureRow = allocatedMemory;
+    for (y = 0 ; y < height; y++) {
+        for (i = 0; i < width;  i++) {
+            color = *((const DWORD*)textureRow);
+            fputc((color >> 16) & 0xFF, f); /* B */
+            fputc((color >>  8) & 0xFF, f); /* G */
+            fputc((color >>  0) & 0xFF, f); /* R */
+            fputc((color >> 24) & 0xFF, f); /* A */
+            textureRow += 4;
+        }
+        /* take two rows of the pointer to the texture memory */
+        if(swapChain)
+            (textureRow-= width << 3);
+
+    }
+    TRACE("Closing file\n");
+    fclose(f);
+
+    if(swapChain) {
+        IWineD3DSwapChain_Release(swapChain);
+    }
+    HeapFree(GetProcessHeap(), 0, allocatedMemory);
+    return WINED3D_OK;
+}
+
+/**
+ *   Slightly inefficient way to handle multiple dirty rects but it works :)
+ */
+static HRESULT WINAPI IWineD3DSurfaceImpl_AddDirtyRect(IWineD3DSurface *iface, CONST RECT* pDirtyRect)
+{
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+    IWineD3DBaseTexture *baseTexture = NULL;
+
+    if (!(This->Flags & SFLAG_INSYSMEM) && (This->Flags & SFLAG_INTEXTURE))
+        IWineD3DSurface_LoadLocation(iface, SFLAG_INSYSMEM, NULL /* no partial locking for textures yet */);
+
+    IWineD3DSurface_ModifyLocation(iface, SFLAG_INSYSMEM, TRUE);
+    if (NULL != pDirtyRect) {
+        This->dirtyRect.left   = min(This->dirtyRect.left,   pDirtyRect->left);
+        This->dirtyRect.top    = min(This->dirtyRect.top,    pDirtyRect->top);
+        This->dirtyRect.right  = max(This->dirtyRect.right,  pDirtyRect->right);
+        This->dirtyRect.bottom = max(This->dirtyRect.bottom, pDirtyRect->bottom);
+    } else {
+        This->dirtyRect.left   = 0;
+        This->dirtyRect.top    = 0;
+        This->dirtyRect.right  = This->currentDesc.Width;
+        This->dirtyRect.bottom = This->currentDesc.Height;
+    }
+    TRACE("(%p) : Dirty: yes, Rect:(%d,%d,%d,%d)\n", This, This->dirtyRect.left,
+          This->dirtyRect.top, This->dirtyRect.right, This->dirtyRect.bottom);
+    /* if the container is a basetexture then mark it dirty. */
+    if (IWineD3DSurface_GetContainer(iface, &IID_IWineD3DBaseTexture, (void **)&baseTexture) == WINED3D_OK) {
+        TRACE("Passing to container\n");
+        IWineD3DBaseTexture_SetDirty(baseTexture, TRUE);
+        IWineD3DBaseTexture_Release(baseTexture);
+    }
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DSurfaceImpl_SetFormat(IWineD3DSurface *iface, WINED3DFORMAT format) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+    HRESULT hr;
+    const struct GlPixelFormatDesc *glDesc;
+    getFormatDescEntry(format, &GLINFO_LOCATION, &glDesc);
+
+    TRACE("(%p) : Calling base function first\n", This);
+    hr = IWineD3DBaseSurfaceImpl_SetFormat(iface, format);
+    if(SUCCEEDED(hr)) {
+        /* Setup some glformat defaults */
+        This->glDescription.glFormat         = glDesc->glFormat;
+        This->glDescription.glFormatInternal = glDesc->glInternal;
+        This->glDescription.glType           = glDesc->glType;
+
+        This->Flags &= ~SFLAG_ALLOCATED;
+        TRACE("(%p) : glFormat %d, glFotmatInternal %d, glType %d\n", This,
+              This->glDescription.glFormat, This->glDescription.glFormatInternal, This->glDescription.glType);
+    }
+    return hr;
+}
+
+static HRESULT WINAPI IWineD3DSurfaceImpl_SetMem(IWineD3DSurface *iface, void *Mem) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface;
+
+    if(This->Flags & (SFLAG_LOCKED | SFLAG_DCINUSE)) {
+        WARN("Surface is locked or the HDC is in use\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    if(Mem && Mem != This->resource.allocatedMemory) {
+        void *release = NULL;
+
+        /* Do I have to copy the old surface content? */
+        if(This->Flags & SFLAG_DIBSECTION) {
+                /* Release the DC. No need to hold the critical section for the update
+                 * Thread because this thread runs only on front buffers, but this method
+                 * fails for render targets in the check above.
+                 */
+                SelectObject(This->hDC, This->dib.holdbitmap);
+                DeleteDC(This->hDC);
+                /* Release the DIB section */
+                DeleteObject(This->dib.DIBsection);
+                This->dib.bitmap_data = NULL;
+                This->resource.allocatedMemory = NULL;
+                This->hDC = NULL;
+                This->Flags &= ~SFLAG_DIBSECTION;
+        } else if(!(This->Flags & SFLAG_USERPTR)) {
+            release = This->resource.heapMemory;
+            This->resource.heapMemory = NULL;
+        }
+        This->resource.allocatedMemory = Mem;
+        This->Flags |= SFLAG_USERPTR | SFLAG_INSYSMEM;
+
+        /* Now the surface memory is most up do date. Invalidate drawable and texture */
+        IWineD3DSurface_ModifyLocation(iface, SFLAG_INSYSMEM, TRUE);
+
+        /* For client textures opengl has to be notified */
+        if(This->Flags & SFLAG_CLIENT) {
+            This->Flags &= ~SFLAG_ALLOCATED;
+            IWineD3DSurface_PreLoad(iface);
+            /* And hope that the app behaves correctly and did not free the old surface memory before setting a new pointer */
+        }
+
+        /* Now free the old memory if any */
+        HeapFree(GetProcessHeap(), 0, release);
+    } else if(This->Flags & SFLAG_USERPTR) {
+        /* LockRect and GetDC will re-create the dib section and allocated memory */
+        This->resource.allocatedMemory = NULL;
+        /* HeapMemory should be NULL already */
+        if(This->resource.heapMemory != NULL) ERR("User pointer surface has heap memory allocated\n");
+        This->Flags &= ~SFLAG_USERPTR;
+
+        if(This->Flags & SFLAG_CLIENT) {
+            This->Flags &= ~SFLAG_ALLOCATED;
+            /* This respecifies an empty texture and opengl knows that the old memory is gone */
+            IWineD3DSurface_PreLoad(iface);
+        }
+    }
+    return WINED3D_OK;
+}
+
+void flip_surface(IWineD3DSurfaceImpl *front, IWineD3DSurfaceImpl *back) {
+
+    /* Flip the surface contents */
+    /* Flip the DC */
+    {
+        HDC tmp;
+        tmp = front->hDC;
+        front->hDC = back->hDC;
+        back->hDC = tmp;
+    }
+
+    /* Flip the DIBsection */
+    {
+        HBITMAP tmp;
+        BOOL hasDib = front->Flags & SFLAG_DIBSECTION;
+        tmp = front->dib.DIBsection;
+        front->dib.DIBsection = back->dib.DIBsection;
+        back->dib.DIBsection = tmp;
+
+        if(back->Flags & SFLAG_DIBSECTION) front->Flags |= SFLAG_DIBSECTION;
+        else front->Flags &= ~SFLAG_DIBSECTION;
+        if(hasDib) back->Flags |= SFLAG_DIBSECTION;
+        else back->Flags &= ~SFLAG_DIBSECTION;
+    }
+
+    /* Flip the surface data */
+    {
+        void* tmp;
+
+        tmp = front->dib.bitmap_data;
+        front->dib.bitmap_data = back->dib.bitmap_data;
+        back->dib.bitmap_data = tmp;
+
+        tmp = front->resource.allocatedMemory;
+        front->resource.allocatedMemory = back->resource.allocatedMemory;
+        back->resource.allocatedMemory = tmp;
+
+        tmp = front->resource.heapMemory;
+        front->resource.heapMemory = back->resource.heapMemory;
+        back->resource.heapMemory = tmp;
+    }
+
+    /* Flip the PBO */
+    {
+        GLuint tmp_pbo = front->pbo;
+        front->pbo = back->pbo;
+        back->pbo = tmp_pbo;
+    }
+
+    /* client_memory should not be different, but just in case */
+    {
+        BOOL tmp;
+        tmp = front->dib.client_memory;
+        front->dib.client_memory = back->dib.client_memory;
+        back->dib.client_memory = tmp;
+    }
+
+    /* Flip the opengl texture */
+    {
+        glDescriptor tmp_desc = back->glDescription;
+        back->glDescription = front->glDescription;
+        front->glDescription = tmp_desc;
+    }
+
+    {
+        DWORD tmp_flags = back->Flags;
+        back->Flags = front->Flags;
+        front->Flags = tmp_flags;
+    }
+}
+
+static HRESULT WINAPI IWineD3DSurfaceImpl_Flip(IWineD3DSurface *iface, IWineD3DSurface *override, DWORD Flags) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+    IWineD3DSwapChainImpl *swapchain = NULL;
+    HRESULT hr;
+    TRACE("(%p)->(%p,%x)\n", This, override, Flags);
+
+    /* Flipping is only supported on RenderTargets and overlays*/
+    if( !(This->resource.usage & (WINED3DUSAGE_RENDERTARGET | WINED3DUSAGE_OVERLAY)) ) {
+        WARN("Tried to flip a non-render target, non-overlay surface\n");
+        return WINEDDERR_NOTFLIPPABLE;
+    }
+
+    if(This->resource.usage & WINED3DUSAGE_OVERLAY) {
+        flip_surface(This, (IWineD3DSurfaceImpl *) override);
+
+        /* Update the overlay if it is visible */
+        if(This->overlay_dest) {
+            return IWineD3DSurface_DrawOverlay((IWineD3DSurface *) This);
+        } else {
+            return WINED3D_OK;
+        }
+    }
+
+    if(override) {
+        /* DDraw sets this for the X11 surfaces, so don't confuse the user 
+         * FIXME("(%p) Target override is not supported by now\n", This);
+         * Additionally, it isn't really possible to support triple-buffering
+         * properly on opengl at all
+         */
+    }
+
+    IWineD3DSurface_GetContainer(iface, &IID_IWineD3DSwapChain, (void **) &swapchain);
+    if(!swapchain) {
+        ERR("Flipped surface is not on a swapchain\n");
+        return WINEDDERR_NOTFLIPPABLE;
+    }
+
+    /* Just overwrite the swapchain presentation interval. This is ok because only ddraw apps can call Flip,
+     * and only d3d8 and d3d9 apps specify the presentation interval
+     */
+    if((Flags & (WINEDDFLIP_NOVSYNC | WINEDDFLIP_INTERVAL2 | WINEDDFLIP_INTERVAL3 | WINEDDFLIP_INTERVAL4)) == 0) {
+        /* Most common case first to avoid wasting time on all the other cases */
+        swapchain->presentParms.PresentationInterval = WINED3DPRESENT_INTERVAL_ONE;
+    } else if(Flags & WINEDDFLIP_NOVSYNC) {
+        swapchain->presentParms.PresentationInterval = WINED3DPRESENT_INTERVAL_IMMEDIATE;
+    } else if(Flags & WINEDDFLIP_INTERVAL2) {
+        swapchain->presentParms.PresentationInterval = WINED3DPRESENT_INTERVAL_TWO;
+    } else if(Flags & WINEDDFLIP_INTERVAL3) {
+        swapchain->presentParms.PresentationInterval = WINED3DPRESENT_INTERVAL_THREE;
+    } else {
+        swapchain->presentParms.PresentationInterval = WINED3DPRESENT_INTERVAL_FOUR;
+    }
+
+    /* Flipping a OpenGL surface -> Use WineD3DDevice::Present */
+    hr = IWineD3DSwapChain_Present((IWineD3DSwapChain *) swapchain, NULL, NULL, 0, NULL, 0);
+    IWineD3DSwapChain_Release((IWineD3DSwapChain *) swapchain);
+    return hr;
+}
+
+/* Does a direct frame buffer -> texture copy. Stretching is done
+ * with single pixel copy calls
+ */
+static inline void fb_copy_to_texture_direct(IWineD3DSurfaceImpl *This, IWineD3DSurface *SrcSurface,
+        IWineD3DSwapChainImpl *swapchain, const WINED3DRECT *srect, const WINED3DRECT *drect,
+        BOOL upsidedown, WINED3DTEXTUREFILTERTYPE Filter)
+{
+    IWineD3DDeviceImpl *myDevice = This->resource.wineD3DDevice;
+    float xrel, yrel;
+    UINT row;
+    IWineD3DSurfaceImpl *Src = (IWineD3DSurfaceImpl *) SrcSurface;
+
+
+    ActivateContext(myDevice, SrcSurface, CTXUSAGE_BLIT);
+    IWineD3DSurface_PreLoad((IWineD3DSurface *) This);
+    ENTER_GL();
+
+    /* Bind the target texture */
+    glBindTexture(This->glDescription.target, This->glDescription.textureName);
+    checkGLcall("glBindTexture");
+    if(!swapchain) {
+        TRACE("Reading from an offscreen target\n");
+        upsidedown = !upsidedown;
+        glReadBuffer(myDevice->offscreenBuffer);
+    } else {
+        GLenum buffer = surface_get_gl_buffer(SrcSurface, (IWineD3DSwapChain *)swapchain);
+        glReadBuffer(buffer);
+    }
+    checkGLcall("glReadBuffer");
+
+    xrel = (float) (srect->x2 - srect->x1) / (float) (drect->x2 - drect->x1);
+    yrel = (float) (srect->y2 - srect->y1) / (float) (drect->y2 - drect->y1);
+
+    if( (xrel - 1.0 < -eps) || (xrel - 1.0 > eps)) {
+        FIXME("Doing a pixel by pixel copy from the framebuffer to a texture, expect major performance issues\n");
+
+        if(Filter != WINED3DTEXF_NONE && Filter != WINED3DTEXF_POINT) {
+            ERR("Texture filtering not supported in direct blit\n");
+        }
+    } else if((Filter != WINED3DTEXF_NONE && Filter != WINED3DTEXF_POINT) && ((yrel - 1.0 < -eps) || (yrel - 1.0 > eps))) {
+        ERR("Texture filtering not supported in direct blit\n");
+    }
+
+    if(upsidedown &&
+       !((xrel - 1.0 < -eps) || (xrel - 1.0 > eps)) &&
+       !((yrel - 1.0 < -eps) || (yrel - 1.0 > eps))) {
+        /* Upside down copy without stretching is nice, one glCopyTexSubImage call will do */
+
+        glCopyTexSubImage2D(This->glDescription.target,
+                            This->glDescription.level,
+                            drect->x1, drect->y1, /* xoffset, yoffset */
+                            srect->x1, Src->currentDesc.Height - srect->y2,
+                            drect->x2 - drect->x1, drect->y2 - drect->y1);
+    } else {
+        UINT yoffset = Src->currentDesc.Height - srect->y1 + drect->y1 - 1;
+        /* I have to process this row by row to swap the image,
+         * otherwise it would be upside down, so stretching in y direction
+         * doesn't cost extra time
+         *
+         * However, stretching in x direction can be avoided if not necessary
+         */
+        for(row = drect->y1; row < drect->y2; row++) {
+            if( (xrel - 1.0 < -eps) || (xrel - 1.0 > eps)) {
+                /* Well, that stuff works, but it's very slow.
+                 * find a better way instead
+                 */
+                UINT col;
+
+                for(col = drect->x1; col < drect->x2; col++) {
+                    glCopyTexSubImage2D(This->glDescription.target,
+                                        This->glDescription.level,
+                                        drect->x1 + col, row, /* xoffset, yoffset */
+                                        srect->x1 + col * xrel, yoffset - (int) (row * yrel),
+                                        1, 1);
+                }
+            } else {
+                glCopyTexSubImage2D(This->glDescription.target,
+                                    This->glDescription.level,
+                                    drect->x1, row, /* xoffset, yoffset */
+                                    srect->x1, yoffset - (int) (row * yrel),
+                                    drect->x2-drect->x1, 1);
+            }
+        }
+    }
+    checkGLcall("glCopyTexSubImage2D");
+
+    LEAVE_GL();
+}
+
+/* Uses the hardware to stretch and flip the image */
+static inline void fb_copy_to_texture_hwstretch(IWineD3DSurfaceImpl *This, IWineD3DSurface *SrcSurface,
+        IWineD3DSwapChainImpl *swapchain, const WINED3DRECT *srect, const WINED3DRECT *drect,
+        BOOL upsidedown, WINED3DTEXTUREFILTERTYPE Filter)
+{
+    GLuint src, backup = 0;
+    IWineD3DDeviceImpl *myDevice = This->resource.wineD3DDevice;
+    IWineD3DSurfaceImpl *Src = (IWineD3DSurfaceImpl *) SrcSurface;
+    float left, right, top, bottom; /* Texture coordinates */
+    UINT fbwidth = Src->currentDesc.Width;
+    UINT fbheight = Src->currentDesc.Height;
+    GLenum drawBuffer = GL_BACK;
+    GLenum texture_target;
+    BOOL noBackBufferBackup;
+
+    TRACE("Using hwstretch blit\n");
+    /* Activate the Proper context for reading from the source surface, set it up for blitting */
+    ActivateContext(myDevice, SrcSurface, CTXUSAGE_BLIT);
+    IWineD3DSurface_PreLoad((IWineD3DSurface *) This);
+
+    noBackBufferBackup = !swapchain && wined3d_settings.offscreen_rendering_mode == ORM_FBO;
+    if(!noBackBufferBackup && Src->glDescription.textureName == 0) {
+        /* Get it a description */
+        IWineD3DSurface_PreLoad(SrcSurface);
+    }
+    ENTER_GL();
+
+    /* Try to use an aux buffer for drawing the rectangle. This way it doesn't need restoring.
+     * This way we don't have to wait for the 2nd readback to finish to leave this function.
+     */
+    if(myDevice->activeContext->aux_buffers >= 2) {
+        /* Got more than one aux buffer? Use the 2nd aux buffer */
+        drawBuffer = GL_AUX1;
+    } else if((swapchain || myDevice->offscreenBuffer == GL_BACK) && myDevice->activeContext->aux_buffers >= 1) {
+        /* Only one aux buffer, but it isn't used (Onscreen rendering, or non-aux orm)? Use it! */
+        drawBuffer = GL_AUX0;
+    }
+
+    if(noBackBufferBackup) {
+        glGenTextures(1, &backup);
+        checkGLcall("glGenTextures\n");
+        glBindTexture(GL_TEXTURE_2D, backup);
+        checkGLcall("glBindTexture(Src->glDescription.target, Src->glDescription.textureName)");
+        texture_target = GL_TEXTURE_2D;
+    } else {
+        /* Backup the back buffer and copy the source buffer into a texture to draw an upside down stretched quad. If
+         * we are reading from the back buffer, the backup can be used as source texture
+         */
+        texture_target = Src->glDescription.target;
+        glBindTexture(texture_target, Src->glDescription.textureName);
+        checkGLcall("glBindTexture(texture_target, Src->glDescription.textureName)");
+        glEnable(texture_target);
+        checkGLcall("glEnable(texture_target)");
+
+        /* For now invalidate the texture copy of the back buffer. Drawable and sysmem copy are untouched */
+        Src->Flags &= ~SFLAG_INTEXTURE;
+    }
+
+    if(swapchain) {
+        glReadBuffer(surface_get_gl_buffer(SrcSurface, (IWineD3DSwapChain *)swapchain));
+    } else {
+        TRACE("Reading from an offscreen target\n");
+        upsidedown = !upsidedown;
+        glReadBuffer(myDevice->offscreenBuffer);
+    }
+
+    /* TODO: Only back up the part that will be overwritten */
+    glCopyTexSubImage2D(texture_target, 0,
+                        0, 0 /* read offsets */,
+                        0, 0,
+                        fbwidth,
+                        fbheight);
+
+    checkGLcall("glCopyTexSubImage2D");
+
+    /* No issue with overriding these - the sampler is dirty due to blit usage */
+    glTexParameteri(texture_target, GL_TEXTURE_MAG_FILTER,
+                    magLookup[Filter - WINED3DTEXF_NONE]);
+    checkGLcall("glTexParameteri");
+    glTexParameteri(texture_target, GL_TEXTURE_MIN_FILTER,
+                    minMipLookup[Filter].mip[WINED3DTEXF_NONE]);
+    checkGLcall("glTexParameteri");
+
+    if(!swapchain || (IWineD3DSurface *) Src == swapchain->backBuffer[0]) {
+        src = backup ? backup : Src->glDescription.textureName;
+    } else {
+        glReadBuffer(GL_FRONT);
+        checkGLcall("glReadBuffer(GL_FRONT)");
+
+        glGenTextures(1, &src);
+        checkGLcall("glGenTextures(1, &src)");
+        glBindTexture(GL_TEXTURE_2D, src);
+        checkGLcall("glBindTexture(GL_TEXTURE_2D, src)");
+
+        /* TODO: Only copy the part that will be read. Use srect->x1, srect->y2 as origin, but with the width watch
+         * out for power of 2 sizes
+         */
+        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, Src->pow2Width, Src->pow2Height, 0,
+                    GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+        checkGLcall("glTexImage2D");
+        glCopyTexSubImage2D(GL_TEXTURE_2D, 0,
+                            0, 0 /* read offsets */,
+                            0, 0,
+                            fbwidth,
+                            fbheight);
+
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+        checkGLcall("glTexParameteri");
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+        checkGLcall("glTexParameteri");
+
+        glReadBuffer(GL_BACK);
+        checkGLcall("glReadBuffer(GL_BACK)");
+
+        if(texture_target != GL_TEXTURE_2D) {
+            glDisable(texture_target);
+            glEnable(GL_TEXTURE_2D);
+            texture_target = GL_TEXTURE_2D;
+        }
+    }
+    checkGLcall("glEnd and previous");
+
+    left = srect->x1;
+    right = srect->x2;
+
+    if(upsidedown) {
+        top = Src->currentDesc.Height - srect->y1;
+        bottom = Src->currentDesc.Height - srect->y2;
+    } else {
+        top = Src->currentDesc.Height - srect->y2;
+        bottom = Src->currentDesc.Height - srect->y1;
+    }
+
+    if(Src->Flags & SFLAG_NORMCOORD) {
+        left /= Src->pow2Width;
+        right /= Src->pow2Width;
+        top /= Src->pow2Height;
+        bottom /= Src->pow2Height;
+    }
+
+    /* draw the source texture stretched and upside down. The correct surface is bound already */
+    glTexParameteri(texture_target, GL_TEXTURE_WRAP_S, GL_CLAMP);
+    glTexParameteri(texture_target, GL_TEXTURE_WRAP_T, GL_CLAMP);
+
+    glDrawBuffer(drawBuffer);
+    glReadBuffer(drawBuffer);
+
+    glBegin(GL_QUADS);
+        /* bottom left */
+        glTexCoord2f(left, bottom);
+        glVertex2i(0, fbheight);
+
+        /* top left */
+        glTexCoord2f(left, top);
+        glVertex2i(0, fbheight - drect->y2 - drect->y1);
+
+        /* top right */
+        glTexCoord2f(right, top);
+        glVertex2i(drect->x2 - drect->x1, fbheight - drect->y2 - drect->y1);
+
+        /* bottom right */
+        glTexCoord2f(right, bottom);
+        glVertex2i(drect->x2 - drect->x1, fbheight);
+    glEnd();
+    checkGLcall("glEnd and previous");
+
+    if(texture_target != This->glDescription.target) {
+        glDisable(texture_target);
+        glEnable(This->glDescription.target);
+        texture_target = This->glDescription.target;
+    }
+
+    /* Now read the stretched and upside down image into the destination texture */
+    glBindTexture(texture_target, This->glDescription.textureName);
+    checkGLcall("glBindTexture");
+    glCopyTexSubImage2D(texture_target,
+                        0,
+                        drect->x1, drect->y1, /* xoffset, yoffset */
+                        0, 0, /* We blitted the image to the origin */
+                        drect->x2 - drect->x1, drect->y2 - drect->y1);
+    checkGLcall("glCopyTexSubImage2D");
+
+    if(drawBuffer == GL_BACK) {
+        /* Write the back buffer backup back */
+        if(backup) {
+            if(texture_target != GL_TEXTURE_2D) {
+                glDisable(texture_target);
+                glEnable(GL_TEXTURE_2D);
+                texture_target = GL_TEXTURE_2D;
+            }
+            glBindTexture(GL_TEXTURE_2D, backup);
+            checkGLcall("glBindTexture(GL_TEXTURE_2D, backup)");
+        } else {
+            if(texture_target != Src->glDescription.target) {
+                glDisable(texture_target);
+                glEnable(Src->glDescription.target);
+                texture_target = Src->glDescription.target;
+            }
+            glBindTexture(Src->glDescription.target, Src->glDescription.textureName);
+            checkGLcall("glBindTexture(Src->glDescription.target, Src->glDescription.textureName)");
+        }
+
+        glBegin(GL_QUADS);
+            /* top left */
+            glTexCoord2f(0.0, (float) fbheight / (float) Src->pow2Height);
+            glVertex2i(0, 0);
+
+            /* bottom left */
+            glTexCoord2f(0.0, 0.0);
+            glVertex2i(0, fbheight);
+
+            /* bottom right */
+            glTexCoord2f((float) fbwidth / (float) Src->pow2Width, 0.0);
+            glVertex2i(fbwidth, Src->currentDesc.Height);
+
+            /* top right */
+            glTexCoord2f((float) fbwidth / (float) Src->pow2Width, (float) fbheight / (float) Src->pow2Height);
+            glVertex2i(fbwidth, 0);
+        glEnd();
+    } else {
+        /* Restore the old draw buffer */
+        glDrawBuffer(GL_BACK);
+    }
+    glDisable(texture_target);
+    checkGLcall("glDisable(texture_target)");
+
+    /* Cleanup */
+    if(src != Src->glDescription.textureName && src != backup) {
+        glDeleteTextures(1, &src);
+        checkGLcall("glDeleteTextures(1, &src)");
+    }
+    if(backup) {
+        glDeleteTextures(1, &backup);
+        checkGLcall("glDeleteTextures(1, &backup)");
+    }
+
+    LEAVE_GL();
+}
+
+/* Not called from the VTable */
+static HRESULT IWineD3DSurfaceImpl_BltOverride(IWineD3DSurfaceImpl *This, const RECT *DestRect,
+        IWineD3DSurface *SrcSurface, const RECT *SrcRect, DWORD Flags, const WINEDDBLTFX *DDBltFx,
+        WINED3DTEXTUREFILTERTYPE Filter)
+{
+    WINED3DRECT rect;
+    IWineD3DDeviceImpl *myDevice = This->resource.wineD3DDevice;
+    IWineD3DSwapChainImpl *srcSwapchain = NULL, *dstSwapchain = NULL;
+    IWineD3DSurfaceImpl *Src = (IWineD3DSurfaceImpl *) SrcSurface;
+
+    TRACE("(%p)->(%p,%p,%p,%08x,%p)\n", This, DestRect, SrcSurface, SrcRect, Flags, DDBltFx);
+
+    /* Get the swapchain. One of the surfaces has to be a primary surface */
+    if(This->resource.pool == WINED3DPOOL_SYSTEMMEM) {
+        WARN("Destination is in sysmem, rejecting gl blt\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+    IWineD3DSurface_GetContainer( (IWineD3DSurface *) This, &IID_IWineD3DSwapChain, (void **)&dstSwapchain);
+    if(dstSwapchain) IWineD3DSwapChain_Release((IWineD3DSwapChain *) dstSwapchain);
+    if(Src) {
+        if(Src->resource.pool == WINED3DPOOL_SYSTEMMEM) {
+            WARN("Src is in sysmem, rejecting gl blt\n");
+            return WINED3DERR_INVALIDCALL;
+        }
+        IWineD3DSurface_GetContainer( (IWineD3DSurface *) Src, &IID_IWineD3DSwapChain, (void **)&srcSwapchain);
+        if(srcSwapchain) IWineD3DSwapChain_Release((IWineD3DSwapChain *) srcSwapchain);
+    }
+
+    /* Early sort out of cases where no render target is used */
+    if(!dstSwapchain && !srcSwapchain &&
+        SrcSurface != myDevice->render_targets[0] && This != (IWineD3DSurfaceImpl *) myDevice->render_targets[0]) {
+        TRACE("No surface is render target, not using hardware blit. Src = %p, dst = %p\n", Src, This);
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    /* No destination color keying supported */
+    if(Flags & (WINEDDBLT_KEYDEST | WINEDDBLT_KEYDESTOVERRIDE)) {
+        /* Can we support that with glBlendFunc if blitting to the frame buffer? */
+        TRACE("Destination color key not supported in accelerated Blit, falling back to software\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    if (DestRect) {
+        rect.x1 = DestRect->left;
+        rect.y1 = DestRect->top;
+        rect.x2 = DestRect->right;
+        rect.y2 = DestRect->bottom;
+    } else {
+        rect.x1 = 0;
+        rect.y1 = 0;
+        rect.x2 = This->currentDesc.Width;
+        rect.y2 = This->currentDesc.Height;
+    }
+
+    /* The only case where both surfaces on a swapchain are supported is a back buffer -> front buffer blit on the same swapchain */
+    if(dstSwapchain && dstSwapchain == srcSwapchain && dstSwapchain->backBuffer &&
+       ((IWineD3DSurface *) This == dstSwapchain->frontBuffer) && SrcSurface == dstSwapchain->backBuffer[0]) {
+        /* Half-life does a Blt from the back buffer to the front buffer,
+         * Full surface size, no flags... Use present instead
+         *
+         * This path will only be entered for d3d7 and ddraw apps, because d3d8/9 offer no way to blit TO the front buffer
+         */
+
+        /* Check rects - IWineD3DDevice_Present doesn't handle them */
+        while(1)
+        {
+            RECT mySrcRect;
+            TRACE("Looking if a Present can be done...\n");
+            /* Source Rectangle must be full surface */
+            if( SrcRect ) {
+                if(SrcRect->left != 0 || SrcRect->top != 0 ||
+                   SrcRect->right != Src->currentDesc.Width || SrcRect->bottom != Src->currentDesc.Height) {
+                    TRACE("No, Source rectangle doesn't match\n");
+                    break;
+                }
+            }
+            mySrcRect.left = 0;
+            mySrcRect.top = 0;
+            mySrcRect.right = Src->currentDesc.Width;
+            mySrcRect.bottom = Src->currentDesc.Height;
+
+            /* No stretching may occur */
+            if(mySrcRect.right != rect.x2 - rect.x1 ||
+               mySrcRect.bottom != rect.y2 - rect.y1) {
+                TRACE("No, stretching is done\n");
+                break;
+            }
+
+            /* Destination must be full surface or match the clipping rectangle */
+            if(This->clipper && ((IWineD3DClipperImpl *) This->clipper)->hWnd)
+            {
+                RECT cliprect;
+                POINT pos[2];
+                GetClientRect(((IWineD3DClipperImpl *) This->clipper)->hWnd, &cliprect);
+                pos[0].x = rect.x1;
+                pos[0].y = rect.y1;
+                pos[1].x = rect.x2;
+                pos[1].y = rect.y2;
+                MapWindowPoints(GetDesktopWindow(), ((IWineD3DClipperImpl *) This->clipper)->hWnd,
+                                pos, 2);
+
+                if(pos[0].x != cliprect.left  || pos[0].y != cliprect.top   ||
+                   pos[1].x != cliprect.right || pos[1].y != cliprect.bottom)
+                {
+                    TRACE("No, dest rectangle doesn't match(clipper)\n");
+                    TRACE("Clip rect at (%d,%d)-(%d,%d)\n", cliprect.left, cliprect.top, cliprect.right, cliprect.bottom);
+                    TRACE("Blt dest: (%d,%d)-(%d,%d)\n", rect.x1, rect.y1, rect.x2, rect.y2);
+                    break;
+                }
+            }
+            else
+            {
+                if(rect.x1 != 0 || rect.y1 != 0 ||
+                   rect.x2 != This->currentDesc.Width || rect.y2 != This->currentDesc.Height) {
+                    TRACE("No, dest rectangle doesn't match(surface size)\n");
+                    break;
+                }
+            }
+
+            TRACE("Yes\n");
+
+            /* These flags are unimportant for the flag check, remove them */
+            if((Flags & ~(WINEDDBLT_DONOTWAIT | WINEDDBLT_WAIT)) == 0) {
+                WINED3DSWAPEFFECT orig_swap = dstSwapchain->presentParms.SwapEffect;
+
+                /* The idea behind this is that a glReadPixels and a glDrawPixels call
+                    * take very long, while a flip is fast.
+                    * This applies to Half-Life, which does such Blts every time it finished
+                    * a frame, and to Prince of Persia 3D, which uses this to draw at least the main
+                    * menu. This is also used by all apps when they do windowed rendering
+                    *
+                    * The problem is that flipping is not really the same as copying. After a
+                    * Blt the front buffer is a copy of the back buffer, and the back buffer is
+                    * untouched. Therefore it's necessary to override the swap effect
+                    * and to set it back after the flip.
+                    *
+                    * Windowed Direct3D < 7 apps do the same. The D3D7 sdk demos are nice
+                    * testcases.
+                    */
+
+                dstSwapchain->presentParms.SwapEffect = WINED3DSWAPEFFECT_COPY;
+                dstSwapchain->presentParms.PresentationInterval = WINED3DPRESENT_INTERVAL_IMMEDIATE;
+
+                TRACE("Full screen back buffer -> front buffer blt, performing a flip instead\n");
+                IWineD3DSwapChain_Present((IWineD3DSwapChain *) dstSwapchain, NULL, NULL, 0, NULL, 0);
+
+                dstSwapchain->presentParms.SwapEffect = orig_swap;
+
+                return WINED3D_OK;
+            }
+            break;
+        }
+
+        TRACE("Unsupported blit between buffers on the same swapchain\n");
+        return WINED3DERR_INVALIDCALL;
+    } else if(dstSwapchain && dstSwapchain == srcSwapchain) {
+        FIXME("Implement hardware blit between two surfaces on the same swapchain\n");
+        return WINED3DERR_INVALIDCALL;
+    } else if(dstSwapchain && srcSwapchain) {
+        FIXME("Implement hardware blit between two different swapchains\n");
+        return WINED3DERR_INVALIDCALL;
+    } else if(dstSwapchain) {
+        if(SrcSurface == myDevice->render_targets[0]) {
+            TRACE("Blit from active render target to a swapchain\n");
+            /* Handled with regular texture -> swapchain blit */
+        }
+    } else if(srcSwapchain && This == (IWineD3DSurfaceImpl *) myDevice->render_targets[0]) {
+        FIXME("Implement blit from a swapchain to the active render target\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    if((srcSwapchain || SrcSurface == myDevice->render_targets[0]) && !dstSwapchain) {
+        /* Blit from render target to texture */
+        WINED3DRECT srect;
+        BOOL upsideDown, stretchx;
+        BOOL paletteOverride = FALSE;
+
+        if(Flags & (WINEDDBLT_KEYSRC | WINEDDBLT_KEYSRCOVERRIDE)) {
+            TRACE("Color keying not supported by frame buffer to texture blit\n");
+            return WINED3DERR_INVALIDCALL;
+            /* Destination color key is checked above */
+        }
+
+        /* Make sure that the top pixel is always above the bottom pixel, and keep a separate upside down flag
+         * glCopyTexSubImage is a bit picky about the parameters we pass to it
+         */
+        if(SrcRect) {
+            if(SrcRect->top < SrcRect->bottom) {
+                srect.y1 = SrcRect->top;
+                srect.y2 = SrcRect->bottom;
+                upsideDown = FALSE;
+            } else {
+                srect.y1 = SrcRect->bottom;
+                srect.y2 = SrcRect->top;
+                upsideDown = TRUE;
+            }
+            srect.x1 = SrcRect->left;
+            srect.x2 = SrcRect->right;
+        } else {
+            srect.x1 = 0;
+            srect.y1 = 0;
+            srect.x2 = Src->currentDesc.Width;
+            srect.y2 = Src->currentDesc.Height;
+            upsideDown = FALSE;
+        }
+        if(rect.x1 > rect.x2) {
+            UINT tmp = rect.x2;
+            rect.x2 = rect.x1;
+            rect.x1 = tmp;
+            upsideDown = !upsideDown;
+        }
+
+        if(rect.x2 - rect.x1 != srect.x2 - srect.x1) {
+            stretchx = TRUE;
+        } else {
+            stretchx = FALSE;
+        }
+
+        /* When blitting from a render target a texture, the texture isn't required to have a palette.
+         * In this case grab the palette from the render target. */
+        if((This->resource.format == WINED3DFMT_P8) && (This->palette == NULL)) {
+            paletteOverride = TRUE;
+            TRACE("Source surface (%p) lacks palette, overriding palette with palette %p of destination surface (%p)\n", Src, This->palette, This);
+            This->palette = Src->palette;
+        }
+
+        /* Blt is a pretty powerful call, while glCopyTexSubImage2D is not. glCopyTexSubImage cannot
+         * flip the image nor scale it.
+         *
+         * -> If the app asks for a unscaled, upside down copy, just perform one glCopyTexSubImage2D call
+         * -> If the app wants a image width an unscaled width, copy it line per line
+         * -> If the app wants a image that is scaled on the x axis, and the destination rectangle is smaller
+         *    than the frame buffer, draw an upside down scaled image onto the fb, read it back and restore the
+         *    back buffer. This is slower than reading line per line, thus not used for flipping
+         * -> If the app wants a scaled image with a dest rect that is bigger than the fb, it has to be copied
+         *    pixel by pixel
+         *
+         * If EXT_framebuffer_blit is supported that can be used instead. Note that EXT_framebuffer_blit implies
+         * FBO support, so it doesn't really make sense to try and make it work with different offscreen rendering
+         * backends.
+         */
+        if (wined3d_settings.offscreen_rendering_mode == ORM_FBO && GL_SUPPORT(EXT_FRAMEBUFFER_BLIT)) {
+            stretch_rect_fbo((IWineD3DDevice *)myDevice, SrcSurface, &srect,
+                    (IWineD3DSurface *)This, &rect, Filter, upsideDown);
+        } else if((!stretchx) || rect.x2 - rect.x1 > Src->currentDesc.Width ||
+                                    rect.y2 - rect.y1 > Src->currentDesc.Height) {
+            TRACE("No stretching in x direction, using direct framebuffer -> texture copy\n");
+            fb_copy_to_texture_direct(This, SrcSurface, srcSwapchain, &srect, &rect, upsideDown, Filter);
+        } else {
+            TRACE("Using hardware stretching to flip / stretch the texture\n");
+            fb_copy_to_texture_hwstretch(This, SrcSurface, srcSwapchain, &srect, &rect, upsideDown, Filter);
+        }
+
+        /* Clear the palette as the surface didn't have a palette attached, it would confuse GetPalette and other calls */
+        if(paletteOverride)
+            This->palette = NULL;
+
+        if(!(This->Flags & SFLAG_DONOTFREE)) {
+            HeapFree(GetProcessHeap(), 0, This->resource.heapMemory);
+            This->resource.allocatedMemory = NULL;
+            This->resource.heapMemory = NULL;
+        } else {
+            This->Flags &= ~SFLAG_INSYSMEM;
+        }
+        /* The texture is now most up to date - If the surface is a render target and has a drawable, this
+         * path is never entered
+         */
+        IWineD3DSurface_ModifyLocation((IWineD3DSurface *) This, SFLAG_INTEXTURE, TRUE);
+
+        return WINED3D_OK;
+    } else if(Src) {
+        /* Blit from offscreen surface to render target */
+        float glTexCoord[4];
+        DWORD oldCKeyFlags = Src->CKeyFlags;
+        WINEDDCOLORKEY oldBltCKey = Src->SrcBltCKey;
+        RECT SourceRectangle;
+        BOOL paletteOverride = FALSE;
+
+        TRACE("Blt from surface %p to rendertarget %p\n", Src, This);
+
+        if(SrcRect) {
+            SourceRectangle.left = SrcRect->left;
+            SourceRectangle.right = SrcRect->right;
+            SourceRectangle.top = SrcRect->top;
+            SourceRectangle.bottom = SrcRect->bottom;
+        } else {
+            SourceRectangle.left = 0;
+            SourceRectangle.right = Src->currentDesc.Width;
+            SourceRectangle.top = 0;
+            SourceRectangle.bottom = Src->currentDesc.Height;
+        }
+
+        /* When blitting from an offscreen surface to a rendertarget, the source
+         * surface is not required to have a palette. Our rendering / conversion
+         * code further down the road retrieves the palette from the surface, so
+         * it must have a palette set. */
+        if((Src->resource.format == WINED3DFMT_P8) && (Src->palette == NULL)) {
+            paletteOverride = TRUE;
+            TRACE("Source surface (%p) lacks palette, overriding palette with palette %p of destination surface (%p)\n", Src, This->palette, This);
+            Src->palette = This->palette;
+        }
+
+        if (wined3d_settings.offscreen_rendering_mode == ORM_FBO && GL_SUPPORT(EXT_FRAMEBUFFER_BLIT) &&
+            (Flags & (WINEDDBLT_KEYSRC | WINEDDBLT_KEYSRCOVERRIDE)) == 0) {
+            TRACE("Using stretch_rect_fbo\n");
+            /* The source is always a texture, but never the currently active render target, and the texture
+             * contents are never upside down
+             */
+            stretch_rect_fbo((IWineD3DDevice *)myDevice, SrcSurface, (WINED3DRECT *) &SourceRectangle,
+                              (IWineD3DSurface *)This, &rect, Filter, FALSE);
+
+            /* Clear the palette as the surface didn't have a palette attached, it would confuse GetPalette and other calls */
+            if(paletteOverride)
+                Src->palette = NULL;
+            return WINED3D_OK;
+        }
+
+        if(!CalculateTexRect(Src, &SourceRectangle, glTexCoord)) {
+            /* Fall back to software */
+            WARN("(%p) Source texture area (%d,%d)-(%d,%d) is too big\n", Src,
+                    SourceRectangle.left, SourceRectangle.top,
+                    SourceRectangle.right, SourceRectangle.bottom);
+            return WINED3DERR_INVALIDCALL;
+        }
+
+        /* Color keying: Check if we have to do a color keyed blt,
+         * and if not check if a color key is activated.
+         *
+         * Just modify the color keying parameters in the surface and restore them afterwards
+         * The surface keeps track of the color key last used to load the opengl surface.
+         * PreLoad will catch the change to the flags and color key and reload if necessary.
+         */
+        if(Flags & WINEDDBLT_KEYSRC) {
+            /* Use color key from surface */
+        } else if(Flags & WINEDDBLT_KEYSRCOVERRIDE) {
+            /* Use color key from DDBltFx */
+            Src->CKeyFlags |= WINEDDSD_CKSRCBLT;
+            Src->SrcBltCKey = DDBltFx->ddckSrcColorkey;
+        } else {
+            /* Do not use color key */
+            Src->CKeyFlags &= ~WINEDDSD_CKSRCBLT;
+        }
+
+        /* Now load the surface */
+        IWineD3DSurface_PreLoad((IWineD3DSurface *) Src);
+
+        /* Activate the destination context, set it up for blitting */
+        ActivateContext(myDevice, (IWineD3DSurface *) This, CTXUSAGE_BLIT);
+
+        /* The coordinates of the ddraw front buffer are always fullscreen ('screen coordinates',
+         * while OpenGL coordinates are window relative.
+         * Also beware of the origin difference(top left vs bottom left).
+         * Also beware that the front buffer's surface size is screen width x screen height,
+         * whereas the real gl drawable size is the size of the window.
+         */
+        if (dstSwapchain && (IWineD3DSurface *)This == dstSwapchain->frontBuffer) {
+            RECT windowsize;
+            POINT offset = {0,0};
+            UINT h;
+            ClientToScreen(dstSwapchain->win_handle, &offset);
+            GetClientRect(dstSwapchain->win_handle, &windowsize);
+            h = windowsize.bottom - windowsize.top;
+            rect.x1 -= offset.x; rect.x2 -=offset.x;
+            rect.y1 -= offset.y; rect.y2 -=offset.y;
+            rect.y1 += This->currentDesc.Height - h; rect.y2 += This->currentDesc.Height - h;
+        }
+
+        myDevice->blitter->set_shader((IWineD3DDevice *) myDevice, Src->resource.format,
+                                       Src->glDescription.target, Src->pow2Width, Src->pow2Height);
+
+        ENTER_GL();
+
+        /* Bind the texture */
+        glBindTexture(Src->glDescription.target, Src->glDescription.textureName);
+        checkGLcall("glBindTexture");
+
+        /* Filtering for StretchRect */
+        glTexParameteri(Src->glDescription.target, GL_TEXTURE_MAG_FILTER,
+                        magLookup[Filter - WINED3DTEXF_NONE]);
+        checkGLcall("glTexParameteri");
+        glTexParameteri(Src->glDescription.target, GL_TEXTURE_MIN_FILTER,
+                        minMipLookup[Filter].mip[WINED3DTEXF_NONE]);
+        checkGLcall("glTexParameteri");
+        glTexParameteri(Src->glDescription.target, GL_TEXTURE_WRAP_S, GL_CLAMP);
+        glTexParameteri(Src->glDescription.target, GL_TEXTURE_WRAP_T, GL_CLAMP);
+        glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
+        checkGLcall("glTexEnvi");
+
+        /* This is for color keying */
+        if(Flags & (WINEDDBLT_KEYSRC | WINEDDBLT_KEYSRCOVERRIDE)) {
+            glEnable(GL_ALPHA_TEST);
+            checkGLcall("glEnable GL_ALPHA_TEST");
+
+            /* When the primary render target uses P8, the alpha component contains the palette index.
+             * Which means that the colorkey is one of the palette entries. In other cases pixels that
+             * should be masked away have alpha set to 0. */
+            if(primary_render_target_is_p8(myDevice))
+                glAlphaFunc(GL_NOTEQUAL, (float)Src->SrcBltCKey.dwColorSpaceLowValue / 256.0);
+            else
+                glAlphaFunc(GL_NOTEQUAL, 0.0);
+            checkGLcall("glAlphaFunc\n");
+        } else {
+            glDisable(GL_ALPHA_TEST);
+            checkGLcall("glDisable GL_ALPHA_TEST");
+        }
+
+        /* Draw a textured quad
+         */
+        glBegin(GL_QUADS);
+
+        glColor3d(1.0f, 1.0f, 1.0f);
+        glTexCoord2f(glTexCoord[0], glTexCoord[2]);
+        glVertex3f(rect.x1,
+                    rect.y1,
+                    0.0);
+
+        glTexCoord2f(glTexCoord[0], glTexCoord[3]);
+        glVertex3f(rect.x1, rect.y2, 0.0);
+
+        glTexCoord2f(glTexCoord[1], glTexCoord[3]);
+        glVertex3f(rect.x2,
+                    rect.y2,
+                    0.0);
+
+        glTexCoord2f(glTexCoord[1], glTexCoord[2]);
+        glVertex3f(rect.x2,
+                    rect.y1,
+                    0.0);
+        glEnd();
+        checkGLcall("glEnd");
+
+        if(Flags & (WINEDDBLT_KEYSRC | WINEDDBLT_KEYSRCOVERRIDE)) {
+            glDisable(GL_ALPHA_TEST);
+            checkGLcall("glDisable(GL_ALPHA_TEST)");
+        }
+
+        glBindTexture(Src->glDescription.target, 0);
+        checkGLcall("glBindTexture(Src->glDescription.target, 0)");
+
+        /* Restore the color key parameters */
+        Src->CKeyFlags = oldCKeyFlags;
+        Src->SrcBltCKey = oldBltCKey;
+
+        /* Clear the palette as the surface didn't have a palette attached, it would confuse GetPalette and other calls */
+        if(paletteOverride)
+            Src->palette = NULL;
+
+        LEAVE_GL();
+
+        /* Leave the opengl state valid for blitting */
+        myDevice->blitter->unset_shader((IWineD3DDevice *) myDevice);
+
+        /* Flush in case the drawable is used by multiple GL contexts */
+        if(dstSwapchain && (This == (IWineD3DSurfaceImpl *) dstSwapchain->frontBuffer || dstSwapchain->num_contexts >= 2))
+            glFlush();
+
+        /* TODO: If the surface is locked often, perform the Blt in software on the memory instead */
+        /* The surface is now in the drawable. On onscreen surfaces or without fbos the texture
+         * is outdated now
+         */
+        IWineD3DSurface_ModifyLocation((IWineD3DSurface *) This, SFLAG_INDRAWABLE, TRUE);
+
+        return WINED3D_OK;
+    } else {
+        /* Source-Less Blit to render target */
+        if (Flags & WINEDDBLT_COLORFILL) {
+            /* This is easy to handle for the D3D Device... */
+            DWORD color;
+
+            TRACE("Colorfill\n");
+
+            /* This == (IWineD3DSurfaceImpl *) myDevice->render_targets[0] || dstSwapchain
+                must be true if we are here */
+            if (This != (IWineD3DSurfaceImpl *) myDevice->render_targets[0] &&
+                    !(This == (IWineD3DSurfaceImpl*) dstSwapchain->frontBuffer ||
+                      (dstSwapchain->backBuffer && This == (IWineD3DSurfaceImpl*) dstSwapchain->backBuffer[0]))) {
+                TRACE("Surface is higher back buffer, falling back to software\n");
+                return WINED3DERR_INVALIDCALL;
+            }
+
+            /* The color as given in the Blt function is in the format of the frame-buffer...
+             * 'clear' expect it in ARGB format => we need to do some conversion :-)
+             */
+            if (This->resource.format == WINED3DFMT_P8) {
+                DWORD alpha;
+
+                if (primary_render_target_is_p8(myDevice)) alpha = DDBltFx->u5.dwFillColor << 24;
+                else alpha = 0xFF000000;
+
+                if (This->palette) {
+                    color = (alpha |
+                            (This->palette->palents[DDBltFx->u5.dwFillColor].peRed << 16) |
+                            (This->palette->palents[DDBltFx->u5.dwFillColor].peGreen << 8) |
+                            (This->palette->palents[DDBltFx->u5.dwFillColor].peBlue));
+                } else {
+                    color = alpha;
+                }
+            }
+            else if (This->resource.format == WINED3DFMT_R5G6B5) {
+                if (DDBltFx->u5.dwFillColor == 0xFFFF) {
+                    color = 0xFFFFFFFF;
+                } else {
+                    color = ((0xFF000000) |
+                            ((DDBltFx->u5.dwFillColor & 0xF800) << 8) |
+                            ((DDBltFx->u5.dwFillColor & 0x07E0) << 5) |
+                            ((DDBltFx->u5.dwFillColor & 0x001F) << 3));
+                }
+            }
+            else if ((This->resource.format == WINED3DFMT_R8G8B8) ||
+                    (This->resource.format == WINED3DFMT_X8R8G8B8) ) {
+                color = 0xFF000000 | DDBltFx->u5.dwFillColor;
+            }
+            else if (This->resource.format == WINED3DFMT_A8R8G8B8) {
+                color = DDBltFx->u5.dwFillColor;
+            }
+            else {
+                ERR("Wrong surface type for BLT override(Format doesn't match) !\n");
+                return WINED3DERR_INVALIDCALL;
+            }
+
+            TRACE("(%p) executing Render Target override, color = %x\n", This, color);
+            IWineD3DDeviceImpl_ClearSurface(myDevice, This,
+                                            1, /* Number of rectangles */
+                                            &rect, WINED3DCLEAR_TARGET, color,
+                                            0.0 /* Z */,
+                                            0 /* Stencil */);
+            return WINED3D_OK;
+        }
+    }
+
+    /* Default: Fall back to the generic blt. Not an error, a TRACE is enough */
+    TRACE("Didn't find any usable render target setup for hw blit, falling back to software\n");
+    return WINED3DERR_INVALIDCALL;
+}
+
+static HRESULT IWineD3DSurfaceImpl_BltZ(IWineD3DSurfaceImpl *This, const RECT *DestRect,
+        IWineD3DSurface *SrcSurface, const RECT *SrcRect, DWORD Flags, const WINEDDBLTFX *DDBltFx)
+{
+    IWineD3DDeviceImpl *myDevice = This->resource.wineD3DDevice;
+    float depth;
+
+    if (Flags & WINEDDBLT_DEPTHFILL) {
+        switch(This->resource.format) {
+            case WINED3DFMT_D16:
+                depth = (float) DDBltFx->u5.dwFillDepth / (float) 0x0000ffff;
+                break;
+            case WINED3DFMT_D15S1:
+                depth = (float) DDBltFx->u5.dwFillDepth / (float) 0x0000fffe;
+                break;
+            case WINED3DFMT_D24S8:
+            case WINED3DFMT_D24X8:
+                depth = (float) DDBltFx->u5.dwFillDepth / (float) 0x00ffffff;
+                break;
+            case WINED3DFMT_D32:
+                depth = (float) DDBltFx->u5.dwFillDepth / (float) 0xffffffff;
+                break;
+            default:
+                depth = 0.0;
+                ERR("Unexpected format for depth fill: %s\n", debug_d3dformat(This->resource.format));
+        }
+
+        return IWineD3DDevice_Clear((IWineD3DDevice *) myDevice,
+                                    DestRect == NULL ? 0 : 1,
+                                    (const WINED3DRECT *)DestRect,
+                                    WINED3DCLEAR_ZBUFFER,
+                                    0x00000000,
+                                    depth,
+                                    0x00000000);
+    }
+
+    FIXME("(%p): Unsupp depthstencil blit\n", This);
+    return WINED3DERR_INVALIDCALL;
+}
+
+static HRESULT WINAPI IWineD3DSurfaceImpl_Blt(IWineD3DSurface *iface, const RECT *DestRect, IWineD3DSurface *SrcSurface,
+        const RECT *SrcRect, DWORD Flags, const WINEDDBLTFX *DDBltFx, WINED3DTEXTUREFILTERTYPE Filter) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+    IWineD3DSurfaceImpl *Src = (IWineD3DSurfaceImpl *) SrcSurface;
+    IWineD3DDeviceImpl *myDevice = This->resource.wineD3DDevice;
+    TRACE("(%p)->(%p,%p,%p,%x,%p)\n", This, DestRect, SrcSurface, SrcRect, Flags, DDBltFx);
+    TRACE("(%p): Usage is %s\n", This, debug_d3dusage(This->resource.usage));
+
+    if ( (This->Flags & SFLAG_LOCKED) || ((Src != NULL) && (Src->Flags & SFLAG_LOCKED)))
+    {
+        WARN(" Surface is busy, returning DDERR_SURFACEBUSY\n");
+        return WINEDDERR_SURFACEBUSY;
+    }
+
+    /* Accessing the depth stencil is supposed to fail between a BeginScene and EndScene pair,
+     * except depth blits, which seem to work
+     */
+    if(iface == myDevice->stencilBufferTarget || (SrcSurface && SrcSurface == myDevice->stencilBufferTarget)) {
+        if(myDevice->inScene && !(Flags & WINEDDBLT_DEPTHFILL)) {
+            TRACE("Attempt to access the depth stencil surface in a BeginScene / EndScene pair, returning WINED3DERR_INVALIDCALL\n");
+            return WINED3DERR_INVALIDCALL;
+        } else if(IWineD3DSurfaceImpl_BltZ(This, DestRect, SrcSurface, SrcRect, Flags, DDBltFx) == WINED3D_OK) {
+            TRACE("Z Blit override handled the blit\n");
+            return WINED3D_OK;
+        }
+    }
+
+    /* Special cases for RenderTargets */
+    if( (This->resource.usage & WINED3DUSAGE_RENDERTARGET) ||
+        ( Src && (Src->resource.usage & WINED3DUSAGE_RENDERTARGET) )) {
+        if(IWineD3DSurfaceImpl_BltOverride(This, DestRect, SrcSurface, SrcRect, Flags, DDBltFx, Filter) == WINED3D_OK) return WINED3D_OK;
+    }
+
+    /* For the rest call the X11 surface implementation.
+     * For RenderTargets this should be implemented OpenGL accelerated in BltOverride,
+     * other Blts are rather rare
+     */
+    return IWineD3DBaseSurfaceImpl_Blt(iface, DestRect, SrcSurface, SrcRect, Flags, DDBltFx, Filter);
+}
+
+static HRESULT WINAPI IWineD3DSurfaceImpl_BltFast(IWineD3DSurface *iface, DWORD dstx, DWORD dsty,
+        IWineD3DSurface *Source, const RECT *rsrc, DWORD trans)
+{
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface;
+    IWineD3DSurfaceImpl *srcImpl = (IWineD3DSurfaceImpl *) Source;
+    IWineD3DDeviceImpl *myDevice = This->resource.wineD3DDevice;
+    TRACE("(%p)->(%d, %d, %p, %p, %08x\n", iface, dstx, dsty, Source, rsrc, trans);
+
+    if ( (This->Flags & SFLAG_LOCKED) || ((srcImpl != NULL) && (srcImpl->Flags & SFLAG_LOCKED)))
+    {
+        WARN(" Surface is busy, returning DDERR_SURFACEBUSY\n");
+        return WINEDDERR_SURFACEBUSY;
+    }
+
+    if(myDevice->inScene &&
+       (iface == myDevice->stencilBufferTarget ||
+       (Source && Source == myDevice->stencilBufferTarget))) {
+        TRACE("Attempt to access the depth stencil surface in a BeginScene / EndScene pair, returning WINED3DERR_INVALIDCALL\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    /* Special cases for RenderTargets */
+    if( (This->resource.usage & WINED3DUSAGE_RENDERTARGET) ||
+        ( srcImpl && (srcImpl->resource.usage & WINED3DUSAGE_RENDERTARGET) )) {
+
+        RECT SrcRect, DstRect;
+        DWORD Flags=0;
+
+        if(rsrc) {
+            SrcRect.left = rsrc->left;
+            SrcRect.top= rsrc->top;
+            SrcRect.bottom = rsrc->bottom;
+            SrcRect.right = rsrc->right;
+        } else {
+            SrcRect.left = 0;
+            SrcRect.top = 0;
+            SrcRect.right = srcImpl->currentDesc.Width;
+            SrcRect.bottom = srcImpl->currentDesc.Height;
+        }
+
+        DstRect.left = dstx;
+        DstRect.top=dsty;
+        DstRect.right = dstx + SrcRect.right - SrcRect.left;
+        DstRect.bottom = dsty + SrcRect.bottom - SrcRect.top;
+
+        /* Convert BltFast flags into Btl ones because it is called from SurfaceImpl_Blt as well */
+        if(trans & WINEDDBLTFAST_SRCCOLORKEY)
+            Flags |= WINEDDBLT_KEYSRC;
+        if(trans & WINEDDBLTFAST_DESTCOLORKEY)
+            Flags |= WINEDDBLT_KEYDEST;
+        if(trans & WINEDDBLTFAST_WAIT)
+            Flags |= WINEDDBLT_WAIT;
+        if(trans & WINEDDBLTFAST_DONOTWAIT)
+            Flags |= WINEDDBLT_DONOTWAIT;
+
+        if(IWineD3DSurfaceImpl_BltOverride(This, &DstRect, Source, &SrcRect, Flags, NULL, WINED3DTEXF_POINT) == WINED3D_OK) return WINED3D_OK;
+    }
+
+
+    return IWineD3DBaseSurfaceImpl_BltFast(iface, dstx, dsty, Source, rsrc, trans);
+}
+
+static HRESULT WINAPI IWineD3DSurfaceImpl_RealizePalette(IWineD3DSurface *iface)
+{
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface;
+    RGBQUAD col[256];
+    IWineD3DPaletteImpl *pal = This->palette;
+    unsigned int n;
+    TRACE("(%p)\n", This);
+
+    if (!pal) return WINED3D_OK;
+
+    if(This->resource.format == WINED3DFMT_P8 ||
+       This->resource.format == WINED3DFMT_A8P8)
+    {
+        int bpp;
+        GLenum format, internal, type;
+        CONVERT_TYPES convert;
+
+        /* Check if we are using a RTL mode which uses texturing for uploads */
+        BOOL use_texture = (wined3d_settings.rendertargetlock_mode == RTL_READTEX || wined3d_settings.rendertargetlock_mode == RTL_TEXTEX);
+
+        /* Check if we have hardware palette conversion if we have convert is set to NO_CONVERSION */
+        d3dfmt_get_conv(This, TRUE, use_texture, &format, &internal, &type, &convert, &bpp, This->srgb);
+
+        if((This->resource.usage & WINED3DUSAGE_RENDERTARGET) && (convert == NO_CONVERSION))
+        {
+            /* Make sure the texture is up to date. This call doesn't do anything if the texture is already up to date. */
+            IWineD3DSurface_LoadLocation(iface, SFLAG_INTEXTURE, NULL);
+
+            /* We want to force a palette refresh, so mark the drawable as not being up to date */
+            IWineD3DSurface_ModifyLocation(iface, SFLAG_INDRAWABLE, FALSE);
+
+            /* Re-upload the palette */
+            d3dfmt_p8_upload_palette(iface, convert);
+        } else {
+            if(!(This->Flags & SFLAG_INSYSMEM)) {
+                TRACE("Palette changed with surface that does not have an up to date system memory copy\n");
+                IWineD3DSurface_LoadLocation(iface, SFLAG_INSYSMEM, NULL);
+            }
+            TRACE("Dirtifying surface\n");
+            IWineD3DSurface_ModifyLocation(iface, SFLAG_INSYSMEM, TRUE);
+        }
+    }
+
+    if(This->Flags & SFLAG_DIBSECTION) {
+        TRACE("(%p): Updating the hdc's palette\n", This);
+        for (n=0; n<256; n++) {
+            col[n].rgbRed   = pal->palents[n].peRed;
+            col[n].rgbGreen = pal->palents[n].peGreen;
+            col[n].rgbBlue  = pal->palents[n].peBlue;
+            col[n].rgbReserved = 0;
+        }
+        SetDIBColorTable(This->hDC, 0, 256, col);
+    }
+
+    /* Propagate the changes to the drawable when we have a palette. */
+    if(This->resource.usage & WINED3DUSAGE_RENDERTARGET)
+        IWineD3DSurface_LoadLocation(iface, SFLAG_INDRAWABLE, NULL);
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DSurfaceImpl_PrivateSetup(IWineD3DSurface *iface) {
+    /** Check against the maximum texture sizes supported by the video card **/
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface;
+    unsigned int pow2Width, pow2Height;
+    const struct GlPixelFormatDesc *glDesc;
+
+    getFormatDescEntry(This->resource.format, &GLINFO_LOCATION, &glDesc);
+    /* Setup some glformat defaults */
+    This->glDescription.glFormat         = glDesc->glFormat;
+    This->glDescription.glFormatInternal = glDesc->glInternal;
+    This->glDescription.glType           = glDesc->glType;
+
+    This->glDescription.textureName      = 0;
+    This->glDescription.target           = GL_TEXTURE_2D;
+
+    /* Non-power2 support */
+    if (GL_SUPPORT(ARB_TEXTURE_NON_POWER_OF_TWO) || GL_SUPPORT(WINE_NORMALIZED_TEXRECT)) {
+        pow2Width = This->currentDesc.Width;
+        pow2Height = This->currentDesc.Height;
+    } else {
+        /* Find the nearest pow2 match */
+        pow2Width = pow2Height = 1;
+        while (pow2Width < This->currentDesc.Width) pow2Width <<= 1;
+        while (pow2Height < This->currentDesc.Height) pow2Height <<= 1;
+    }
+    This->pow2Width  = pow2Width;
+    This->pow2Height = pow2Height;
+
+    if (pow2Width > This->currentDesc.Width || pow2Height > This->currentDesc.Height) {
+        WINED3DFORMAT Format = This->resource.format;
+        /** TODO: add support for non power two compressed textures **/
+        if (Format == WINED3DFMT_DXT1 || Format == WINED3DFMT_DXT2 || Format == WINED3DFMT_DXT3
+            || Format == WINED3DFMT_DXT4 || Format == WINED3DFMT_DXT5
+            || This->resource.format == WINED3DFMT_ATI2N) {
+            FIXME("(%p) Compressed non-power-two textures are not supported w(%d) h(%d)\n",
+                  This, This->currentDesc.Width, This->currentDesc.Height);
+            return WINED3DERR_NOTAVAILABLE;
+        }
+    }
+
+    if(pow2Width != This->currentDesc.Width ||
+       pow2Height != This->currentDesc.Height) {
+        This->Flags |= SFLAG_NONPOW2;
+    }
+
+    TRACE("%p\n", This);
+    if ((This->pow2Width > GL_LIMITS(texture_size) || This->pow2Height > GL_LIMITS(texture_size)) && !(This->resource.usage & (WINED3DUSAGE_RENDERTARGET | WINED3DUSAGE_DEPTHSTENCIL))) {
+        /* one of three options
+        1: Do the same as we do with nonpow 2 and scale the texture, (any texture ops would require the texture to be scaled which is potentially slow)
+        2: Set the texture to the maximum size (bad idea)
+        3:    WARN and return WINED3DERR_NOTAVAILABLE;
+        4: Create the surface, but allow it to be used only for DirectDraw Blts. Some apps(e.g. Swat 3) create textures with a Height of 16 and a Width > 3000 and blt 16x16 letter areas from them to the render target.
+        */
+        WARN("(%p) Creating an oversized surface\n", This);
+        This->Flags |= SFLAG_OVERSIZE;
+
+        /* This will be initialized on the first blt */
+        This->glRect.left = 0;
+        This->glRect.top = 0;
+        This->glRect.right = 0;
+        This->glRect.bottom = 0;
+    } else {
+        /* Check this after the oversize check - do not make an oversized surface a texture_rectangle one.
+           Second also don't use ARB_TEXTURE_RECTANGLE in case the surface format is P8 and EXT_PALETTED_TEXTURE
+           is used in combination with texture uploads (RTL_READTEX/RTL_TEXTEX). The reason is that EXT_PALETTED_TEXTURE
+           doesn't work in combination with ARB_TEXTURE_RECTANGLE.
+        */
+        if(This->Flags & SFLAG_NONPOW2 && GL_SUPPORT(ARB_TEXTURE_RECTANGLE) &&
+           !((This->resource.format == WINED3DFMT_P8) && GL_SUPPORT(EXT_PALETTED_TEXTURE) && (wined3d_settings.rendertargetlock_mode == RTL_READTEX || wined3d_settings.rendertargetlock_mode == RTL_TEXTEX)))
+        {
+            This->glDescription.target = GL_TEXTURE_RECTANGLE_ARB;
+            This->pow2Width  = This->currentDesc.Width;
+            This->pow2Height = This->currentDesc.Height;
+            This->Flags &= ~(SFLAG_NONPOW2 | SFLAG_NORMCOORD);
+        }
+
+        /* No oversize, gl rect is the full texture size */
+        This->Flags &= ~SFLAG_OVERSIZE;
+        This->glRect.left = 0;
+        This->glRect.top = 0;
+        This->glRect.right = This->pow2Width;
+        This->glRect.bottom = This->pow2Height;
+    }
+
+    if(This->resource.usage & WINED3DUSAGE_RENDERTARGET) {
+        switch(wined3d_settings.offscreen_rendering_mode) {
+            case ORM_FBO:        This->get_drawable_size = get_drawable_size_fbo;        break;
+            case ORM_PBUFFER:    This->get_drawable_size = get_drawable_size_pbuffer;    break;
+            case ORM_BACKBUFFER: This->get_drawable_size = get_drawable_size_backbuffer; break;
+        }
+    }
+
+    This->Flags |= SFLAG_INSYSMEM;
+
+    return WINED3D_OK;
+}
+
+struct depth_blt_info
+{
+    GLenum binding;
+    GLenum bind_target;
+    enum tex_types tex_type;
+    GLfloat coords[4][3];
+};
+
+static void surface_get_depth_blt_info(GLenum target, GLsizei w, GLsizei h, struct depth_blt_info *info)
+{
+    GLfloat (*coords)[3] = info->coords;
+
+    switch (target)
+    {
+        default:
+            FIXME("Unsupported texture target %#x\n", target);
+            /* Fall back to GL_TEXTURE_2D */
+        case GL_TEXTURE_2D:
+            info->binding = GL_TEXTURE_BINDING_2D;
+            info->bind_target = GL_TEXTURE_2D;
+            info->tex_type = tex_2d;
+            coords[0][0] = 0.0f;    coords[0][1] = 1.0f;    coords[0][2] = 0.0f;
+            coords[1][0] = 1.0f;    coords[1][1] = 1.0f;    coords[1][2] = 0.0f;
+            coords[2][0] = 0.0f;    coords[2][1] = 0.0f;    coords[2][2] = 0.0f;
+            coords[3][0] = 1.0f;    coords[3][1] = 0.0f;    coords[3][2] = 0.0f;
+            break;
+
+        case GL_TEXTURE_RECTANGLE_ARB:
+            info->binding = GL_TEXTURE_BINDING_RECTANGLE_ARB;
+            info->bind_target = GL_TEXTURE_RECTANGLE_ARB;
+            info->tex_type = tex_rect;
+            coords[0][0] = 0.0f;    coords[0][1] = h;       coords[0][2] = 0.0f;
+            coords[1][0] = w;       coords[1][1] = h;       coords[1][2] = 0.0f;
+            coords[2][0] = 0.0f;    coords[2][1] = 0.0f;    coords[2][2] = 0.0f;
+            coords[3][0] = w;       coords[3][1] = 0.0f;    coords[3][2] = 0.0f;
+            break;
+
+        case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
+            info->binding = GL_TEXTURE_BINDING_CUBE_MAP_ARB;
+            info->bind_target = GL_TEXTURE_CUBE_MAP_ARB;
+            info->tex_type = tex_cube;
+            coords[0][0] =  1.0f;   coords[0][1] = -1.0f;   coords[0][2] =  1.0f;
+            coords[1][0] =  1.0f;   coords[1][1] = -1.0f;   coords[1][2] = -1.0f;
+            coords[2][0] =  1.0f;   coords[2][1] =  1.0f;   coords[2][2] =  1.0f;
+            coords[3][0] =  1.0f;   coords[3][1] =  1.0f;   coords[3][2] = -1.0f;
+
+        case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
+            info->binding = GL_TEXTURE_BINDING_CUBE_MAP_ARB;
+            info->bind_target = GL_TEXTURE_CUBE_MAP_ARB;
+            info->tex_type = tex_cube;
+            coords[0][0] = -1.0f;   coords[0][1] = -1.0f;   coords[0][2] = -1.0f;
+            coords[1][0] = -1.0f;   coords[1][1] = -1.0f;   coords[1][2] =  1.0f;
+            coords[2][0] = -1.0f;   coords[2][1] =  1.0f;   coords[2][2] = -1.0f;
+            coords[3][0] = -1.0f;   coords[3][1] =  1.0f;   coords[3][2] =  1.0f;
+
+        case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
+            info->binding = GL_TEXTURE_BINDING_CUBE_MAP_ARB;
+            info->bind_target = GL_TEXTURE_CUBE_MAP_ARB;
+            info->tex_type = tex_cube;
+            coords[0][0] = -1.0f;   coords[0][1] =  1.0f;   coords[0][2] =  1.0f;
+            coords[1][0] =  1.0f;   coords[1][1] =  1.0f;   coords[1][2] =  1.0f;
+            coords[2][0] = -1.0f;   coords[2][1] =  1.0f;   coords[2][2] = -1.0f;
+            coords[3][0] =  1.0f;   coords[3][1] =  1.0f;   coords[3][2] = -1.0f;
+
+        case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
+            info->binding = GL_TEXTURE_BINDING_CUBE_MAP_ARB;
+            info->bind_target = GL_TEXTURE_CUBE_MAP_ARB;
+            info->tex_type = tex_cube;
+            coords[0][0] = -1.0f;   coords[0][1] = -1.0f;   coords[0][2] = -1.0f;
+            coords[1][0] =  1.0f;   coords[1][1] = -1.0f;   coords[1][2] = -1.0f;
+            coords[2][0] = -1.0f;   coords[2][1] = -1.0f;   coords[2][2] =  1.0f;
+            coords[3][0] =  1.0f;   coords[3][1] = -1.0f;   coords[3][2] =  1.0f;
+
+        case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
+            info->binding = GL_TEXTURE_BINDING_CUBE_MAP_ARB;
+            info->bind_target = GL_TEXTURE_CUBE_MAP_ARB;
+            info->tex_type = tex_cube;
+            coords[0][0] = -1.0f;   coords[0][1] = -1.0f;   coords[0][2] =  1.0f;
+            coords[1][0] =  1.0f;   coords[1][1] = -1.0f;   coords[1][2] =  1.0f;
+            coords[2][0] = -1.0f;   coords[2][1] =  1.0f;   coords[2][2] =  1.0f;
+            coords[3][0] =  1.0f;   coords[3][1] =  1.0f;   coords[3][2] =  1.0f;
+
+        case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
+            info->binding = GL_TEXTURE_BINDING_CUBE_MAP_ARB;
+            info->bind_target = GL_TEXTURE_CUBE_MAP_ARB;
+            info->tex_type = tex_cube;
+            coords[0][0] =  1.0f;   coords[0][1] = -1.0f;   coords[0][2] = -1.0f;
+            coords[1][0] = -1.0f;   coords[1][1] = -1.0f;   coords[1][2] = -1.0f;
+            coords[2][0] =  1.0f;   coords[2][1] =  1.0f;   coords[2][2] = -1.0f;
+            coords[3][0] = -1.0f;   coords[3][1] =  1.0f;   coords[3][2] = -1.0f;
+    }
+}
+
+static void surface_depth_blt(IWineD3DSurfaceImpl *This, GLuint texture, GLsizei w, GLsizei h, GLenum target)
+{
+    IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
+    struct depth_blt_info info;
+    GLint old_binding = 0;
+
+    glPushAttrib(GL_ENABLE_BIT | GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT | GL_VIEWPORT_BIT);
+
+    glDisable(GL_CULL_FACE);
+    glEnable(GL_BLEND);
+    glDisable(GL_ALPHA_TEST);
+    glDisable(GL_SCISSOR_TEST);
+    glDisable(GL_STENCIL_TEST);
+    glEnable(GL_DEPTH_TEST);
+    glDepthFunc(GL_ALWAYS);
+    glDepthMask(GL_TRUE);
+    glBlendFunc(GL_ZERO, GL_ONE);
+    glViewport(0, 0, w, h);
+
+    surface_get_depth_blt_info(target, w, h, &info);
+    GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB));
+    glGetIntegerv(info.binding, &old_binding);
+    glBindTexture(info.bind_target, texture);
+
+    device->shader_backend->shader_select_depth_blt((IWineD3DDevice *)device, info.tex_type);
+
+    glBegin(GL_TRIANGLE_STRIP);
+    glTexCoord3fv(info.coords[0]);
+    glVertex2f(-1.0f, -1.0f);
+    glTexCoord3fv(info.coords[1]);
+    glVertex2f(1.0f, -1.0f);
+    glTexCoord3fv(info.coords[2]);
+    glVertex2f(-1.0f, 1.0f);
+    glTexCoord3fv(info.coords[3]);
+    glVertex2f(1.0f, 1.0f);
+    glEnd();
+
+    glBindTexture(info.bind_target, old_binding);
+
+    glPopAttrib();
+
+    device->shader_backend->shader_deselect_depth_blt((IWineD3DDevice *)device);
+}
+
+void surface_modify_ds_location(IWineD3DSurface *iface, DWORD location) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+
+    TRACE("(%p) New location %#x\n", This, location);
+
+    if (location & ~SFLAG_DS_LOCATIONS) {
+        FIXME("(%p) Invalid location (%#x) specified\n", This, location);
+    }
+
+    This->Flags &= ~SFLAG_DS_LOCATIONS;
+    This->Flags |= location;
+}
+
+void surface_load_ds_location(IWineD3DSurface *iface, DWORD location) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+    IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
+
+    TRACE("(%p) New location %#x\n", This, location);
+
+    /* TODO: Make this work for modes other than FBO */
+    if (wined3d_settings.offscreen_rendering_mode != ORM_FBO) return;
+
+    if (This->Flags & location) {
+        TRACE("(%p) Location (%#x) is already up to date\n", This, location);
+        return;
+    }
+
+    if (This->current_renderbuffer) {
+        FIXME("(%p) Not supported with fixed up depth stencil\n", This);
+        return;
+    }
+
+    if (location == SFLAG_DS_OFFSCREEN) {
+        if (This->Flags & SFLAG_DS_ONSCREEN) {
+            GLint old_binding = 0;
+            GLenum bind_target;
+
+            TRACE("(%p) Copying onscreen depth buffer to depth texture\n", This);
+
+            ENTER_GL();
+
+            if (!device->depth_blt_texture) {
+                glGenTextures(1, &device->depth_blt_texture);
+            }
+
+            /* Note that we use depth_blt here as well, rather than glCopyTexImage2D
+             * directly on the FBO texture. That's because we need to flip. */
+            GL_EXTCALL(glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0));
+            if (This->glDescription.target == GL_TEXTURE_RECTANGLE_ARB) {
+                glGetIntegerv(GL_TEXTURE_BINDING_RECTANGLE_ARB, &old_binding);
+                bind_target = GL_TEXTURE_RECTANGLE_ARB;
+            } else {
+                glGetIntegerv(GL_TEXTURE_BINDING_2D, &old_binding);
+                bind_target = GL_TEXTURE_2D;
+            }
+            glBindTexture(bind_target, device->depth_blt_texture);
+            glCopyTexImage2D(bind_target,
+                    This->glDescription.level,
+                    This->glDescription.glFormatInternal,
+                    0,
+                    0,
+                    This->currentDesc.Width,
+                    This->currentDesc.Height,
+                    0);
+            glTexParameteri(bind_target, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+            glTexParameteri(bind_target, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+            glTexParameteri(bind_target, GL_DEPTH_TEXTURE_MODE_ARB, GL_LUMINANCE);
+            glBindTexture(bind_target, old_binding);
+
+            /* Setup the destination */
+            if (!device->depth_blt_rb) {
+                GL_EXTCALL(glGenRenderbuffersEXT(1, &device->depth_blt_rb));
+                checkGLcall("glGenRenderbuffersEXT");
+            }
+            if (device->depth_blt_rb_w != This->currentDesc.Width
+                    || device->depth_blt_rb_h != This->currentDesc.Height) {
+                GL_EXTCALL(glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, device->depth_blt_rb));
+                checkGLcall("glBindRenderbufferEXT");
+                GL_EXTCALL(glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGBA8, This->currentDesc.Width, This->currentDesc.Height));
+                checkGLcall("glRenderbufferStorageEXT");
+                device->depth_blt_rb_w = This->currentDesc.Width;
+                device->depth_blt_rb_h = This->currentDesc.Height;
+            }
+
+            context_bind_fbo((IWineD3DDevice *)device, GL_FRAMEBUFFER_EXT, &device->activeContext->dst_fbo);
+            GL_EXTCALL(glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_RENDERBUFFER_EXT, device->depth_blt_rb));
+            checkGLcall("glFramebufferRenderbufferEXT");
+            context_attach_depth_stencil_fbo(device, GL_FRAMEBUFFER_EXT, iface, FALSE);
+
+            /* Do the actual blit */
+            surface_depth_blt(This, device->depth_blt_texture, This->currentDesc.Width, This->currentDesc.Height, bind_target);
+            checkGLcall("depth_blt");
+
+            if (device->activeContext->current_fbo) {
+                context_bind_fbo((IWineD3DDevice *)device, GL_FRAMEBUFFER_EXT, &device->activeContext->current_fbo->id);
+            } else {
+                GL_EXTCALL(glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0));
+                checkGLcall("glBindFramebuffer()");
+            }
+
+            LEAVE_GL();
+        } else {
+            FIXME("No up to date depth stencil location\n");
+        }
+    } else if (location == SFLAG_DS_ONSCREEN) {
+        if (This->Flags & SFLAG_DS_OFFSCREEN) {
+            TRACE("(%p) Copying depth texture to onscreen depth buffer\n", This);
+
+            ENTER_GL();
+
+            GL_EXTCALL(glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0));
+            checkGLcall("glBindFramebuffer()");
+            surface_depth_blt(This, This->glDescription.textureName, This->currentDesc.Width, This->currentDesc.Height, This->glDescription.target);
+            checkGLcall("depth_blt");
+
+            if (device->activeContext->current_fbo) {
+                GL_EXTCALL(glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, device->activeContext->current_fbo->id));
+                checkGLcall("glBindFramebuffer()");
+            }
+
+            LEAVE_GL();
+        } else {
+            FIXME("No up to date depth stencil location\n");
+        }
+    } else {
+        ERR("(%p) Invalid location (%#x) specified\n", This, location);
+    }
+
+    This->Flags |= location;
+}
+
+static void WINAPI IWineD3DSurfaceImpl_ModifyLocation(IWineD3DSurface *iface, DWORD flag, BOOL persistent) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface;
+    IWineD3DBaseTexture *texture;
+    IWineD3DSurfaceImpl *overlay;
+
+    TRACE("(%p)->(%s, %s)\n", iface,
+          flag == SFLAG_INSYSMEM ? "SFLAG_INSYSMEM" : flag == SFLAG_INDRAWABLE ? "SFLAG_INDRAWABLE" : "SFLAG_INTEXTURE",
+          persistent ? "TRUE" : "FALSE");
+
+    if (wined3d_settings.offscreen_rendering_mode == ORM_FBO) {
+        IWineD3DSwapChain *swapchain = NULL;
+
+        if (SUCCEEDED(IWineD3DSurface_GetContainer(iface, &IID_IWineD3DSwapChain, (void **)&swapchain))) {
+            TRACE("Surface %p is an onscreen surface\n", iface);
+
+            IWineD3DSwapChain_Release(swapchain);
+        } else {
+            /* With ORM_FBO, SFLAG_INTEXTURE and SFLAG_INDRAWABLE are the same for offscreen targets. */
+            if (flag & (SFLAG_INTEXTURE | SFLAG_INDRAWABLE)) flag |= (SFLAG_INTEXTURE | SFLAG_INDRAWABLE);
+        }
+    }
+
+    if(persistent) {
+        if((This->Flags & SFLAG_INTEXTURE) && !(flag & SFLAG_INTEXTURE)) {
+            if (IWineD3DSurface_GetContainer(iface, &IID_IWineD3DBaseTexture, (void **)&texture) == WINED3D_OK) {
+                TRACE("Passing to container\n");
+                IWineD3DBaseTexture_SetDirty(texture, TRUE);
+                IWineD3DBaseTexture_Release(texture);
+            }
+        }
+        This->Flags &= ~SFLAG_LOCATIONS;
+        This->Flags |= flag;
+
+        /* Redraw emulated overlays, if any */
+        if(flag & SFLAG_INDRAWABLE && !list_empty(&This->overlays)) {
+            LIST_FOR_EACH_ENTRY(overlay, &This->overlays, IWineD3DSurfaceImpl, overlay_entry) {
+                IWineD3DSurface_DrawOverlay((IWineD3DSurface *) overlay);
+            }
+        }
+    } else {
+        if((This->Flags & SFLAG_INTEXTURE) && (flag & SFLAG_INTEXTURE)) {
+            if (IWineD3DSurface_GetContainer(iface, &IID_IWineD3DBaseTexture, (void **)&texture) == WINED3D_OK) {
+                TRACE("Passing to container\n");
+                IWineD3DBaseTexture_SetDirty(texture, TRUE);
+                IWineD3DBaseTexture_Release(texture);
+            }
+        }
+        This->Flags &= ~flag;
+    }
+}
+
+struct coords {
+    GLfloat x, y, z;
+};
+
+struct float_rect
+{
+    float l;
+    float t;
+    float r;
+    float b;
+};
+
+static inline void cube_coords_float(const RECT *r, UINT w, UINT h, struct float_rect *f)
+{
+    f->l = ((r->left * 2.0f) / w) - 1.0f;
+    f->t = ((r->top * 2.0f) / h) - 1.0f;
+    f->r = ((r->right * 2.0f) / w) - 1.0f;
+    f->b = ((r->bottom * 2.0f) / h) - 1.0f;
+}
+
+static inline void surface_blt_to_drawable(IWineD3DSurfaceImpl *This, const RECT *rect_in) {
+    struct coords coords[4];
+    RECT rect;
+    IWineD3DSwapChain *swapchain;
+    IWineD3DBaseTexture *texture;
+    IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
+    GLenum bind_target;
+    struct float_rect f;
+
+    if(rect_in) {
+        rect = *rect_in;
+    } else {
+        rect.left = 0;
+        rect.top = 0;
+        rect.right = This->currentDesc.Width;
+        rect.bottom = This->currentDesc.Height;
+    }
+
+    switch(This->glDescription.target)
+    {
+        case GL_TEXTURE_2D:
+            bind_target = GL_TEXTURE_2D;
+
+            coords[0].x = (float)rect.left / This->pow2Width;
+            coords[0].y = (float)rect.top / This->pow2Height;
+            coords[0].z = 0;
+
+            coords[1].x = (float)rect.left / This->pow2Width;
+            coords[1].y = (float)rect.bottom / This->pow2Height;
+            coords[1].z = 0;
+
+            coords[2].x = (float)rect.right / This->pow2Width;
+            coords[2].y = (float)rect.bottom / This->pow2Height;
+            coords[2].z = 0;
+
+            coords[3].x = (float)rect.right / This->pow2Width;
+            coords[3].y = (float)rect.top / This->pow2Height;
+            coords[3].z = 0;
+            break;
+
+        case GL_TEXTURE_RECTANGLE_ARB:
+            bind_target = GL_TEXTURE_RECTANGLE_ARB;
+            coords[0].x = rect.left;    coords[0].y = rect.top;     coords[0].z = 0;
+            coords[1].x = rect.left;    coords[1].y = rect.bottom;  coords[1].z = 0;
+            coords[2].x = rect.right;   coords[2].y = rect.bottom;  coords[2].z = 0;
+            coords[3].x = rect.right;   coords[3].y = rect.top;     coords[3].z = 0;
+            break;
+
+        case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
+            bind_target = GL_TEXTURE_CUBE_MAP_ARB;
+            cube_coords_float(&rect, This->pow2Width, This->pow2Height, &f);
+            coords[0].x =    1; coords[0].y = -f.t; coords[0].z = -f.l;
+            coords[1].x =    1; coords[1].y = -f.b; coords[1].z = -f.l;
+            coords[2].x =    1; coords[2].y = -f.b; coords[2].z = -f.r;
+            coords[3].x =    1; coords[3].y = -f.t; coords[3].z = -f.r;
+            break;
+
+        case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
+            bind_target = GL_TEXTURE_CUBE_MAP_ARB;
+            cube_coords_float(&rect, This->pow2Width, This->pow2Height, &f);
+            coords[0].x =   -1; coords[0].y = -f.t; coords[0].z =  f.l;
+            coords[1].x =   -1; coords[1].y = -f.b; coords[1].z =  f.l;
+            coords[2].x =   -1; coords[2].y = -f.b; coords[2].z =  f.r;
+            coords[3].x =   -1; coords[3].y = -f.t; coords[3].z =  f.r;
+            break;
+
+        case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
+            bind_target = GL_TEXTURE_CUBE_MAP_ARB;
+            cube_coords_float(&rect, This->pow2Width, This->pow2Height, &f);
+            coords[0].x =  f.l; coords[0].y =    1; coords[0].z =  f.t;
+            coords[1].x =  f.l; coords[1].y =    1; coords[1].z =  f.b;
+            coords[2].x =  f.r; coords[2].y =    1; coords[2].z =  f.b;
+            coords[3].x =  f.r; coords[3].y =    1; coords[3].z =  f.t;
+            break;
+
+        case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
+            bind_target = GL_TEXTURE_CUBE_MAP_ARB;
+            cube_coords_float(&rect, This->pow2Width, This->pow2Height, &f);
+            coords[0].x =  f.l; coords[0].y =   -1; coords[0].z = -f.t;
+            coords[1].x =  f.l; coords[1].y =   -1; coords[1].z = -f.b;
+            coords[2].x =  f.r; coords[2].y =   -1; coords[2].z = -f.b;
+            coords[3].x =  f.r; coords[3].y =   -1; coords[3].z = -f.t;
+            break;
+
+        case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
+            bind_target = GL_TEXTURE_CUBE_MAP_ARB;
+            cube_coords_float(&rect, This->pow2Width, This->pow2Height, &f);
+            coords[0].x =  f.l; coords[0].y = -f.t; coords[0].z =    1;
+            coords[1].x =  f.l; coords[1].y = -f.b; coords[1].z =    1;
+            coords[2].x =  f.r; coords[2].y = -f.b; coords[2].z =    1;
+            coords[3].x =  f.r; coords[3].y = -f.t; coords[3].z =    1;
+            break;
+
+        case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
+            bind_target = GL_TEXTURE_CUBE_MAP_ARB;
+            cube_coords_float(&rect, This->pow2Width, This->pow2Height, &f);
+            coords[0].x = -f.l; coords[0].y = -f.t; coords[0].z =   -1;
+            coords[1].x = -f.l; coords[1].y = -f.b; coords[1].z =   -1;
+            coords[2].x = -f.r; coords[2].y = -f.b; coords[2].z =   -1;
+            coords[3].x = -f.r; coords[3].y = -f.t; coords[3].z =   -1;
+            break;
+
+        default:
+            ERR("Unexpected texture target %#x\n", This->glDescription.target);
+            return;
+    }
+
+    ActivateContext(device, (IWineD3DSurface*)This, CTXUSAGE_BLIT);
+    ENTER_GL();
+
+    glEnable(bind_target);
+    checkGLcall("glEnable(bind_target)");
+    glBindTexture(bind_target, This->glDescription.textureName);
+    checkGLcall("bind_target, This->glDescription.textureName)");
+    glTexParameteri(bind_target, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+    checkGLcall("glTexParameteri");
+    glTexParameteri(bind_target, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+    checkGLcall("glTexParameteri");
+
+    if (device->render_offscreen)
+    {
+        LONG tmp = rect.top;
+        rect.top = rect.bottom;
+        rect.bottom = tmp;
+    }
+
+    glBegin(GL_QUADS);
+    glTexCoord3fv(&coords[0].x);
+    glVertex2i(rect.left, rect.top);
+
+    glTexCoord3fv(&coords[1].x);
+    glVertex2i(rect.left, rect.bottom);
+
+    glTexCoord3fv(&coords[2].x);
+    glVertex2i(rect.right, rect.bottom);
+
+    glTexCoord3fv(&coords[3].x);
+    glVertex2i(rect.right, rect.top);
+    glEnd();
+    checkGLcall("glEnd");
+
+    glDisable(bind_target);
+    checkGLcall("glDisable(bind_target)");
+
+    LEAVE_GL();
+
+    if(SUCCEEDED(IWineD3DSurface_GetContainer((IWineD3DSurface*)This, &IID_IWineD3DSwapChain, (void **) &swapchain)))
+    {
+        /* Make sure to flush the buffers. This is needed in apps like Red Alert II and Tiberian SUN that use multiple WGL contexts. */
+        if(((IWineD3DSwapChainImpl*)swapchain)->frontBuffer == (IWineD3DSurface*)This ||
+           ((IWineD3DSwapChainImpl*)swapchain)->num_contexts >= 2)
+            glFlush();
+
+        IWineD3DSwapChain_Release(swapchain);
+    } else {
+        /* We changed the filtering settings on the texture. Inform the container about this to get the filters
+         * reset properly next draw
+         */
+        if(SUCCEEDED(IWineD3DSurface_GetContainer((IWineD3DSurface*)This, &IID_IWineD3DBaseTexture, (void **) &texture)))
+        {
+            ((IWineD3DBaseTextureImpl *) texture)->baseTexture.states[WINED3DTEXSTA_MAGFILTER] = WINED3DTEXF_POINT;
+            ((IWineD3DBaseTextureImpl *) texture)->baseTexture.states[WINED3DTEXSTA_MINFILTER] = WINED3DTEXF_POINT;
+            ((IWineD3DBaseTextureImpl *) texture)->baseTexture.states[WINED3DTEXSTA_MIPFILTER] = WINED3DTEXF_NONE;
+            IWineD3DBaseTexture_Release(texture);
+        }
+    }
+}
+
+/*****************************************************************************
+ * IWineD3DSurface::LoadLocation
+ *
+ * Copies the current surface data from wherever it is to the requested
+ * location. The location is one of the surface flags, SFLAG_INSYSMEM,
+ * SFLAG_INTEXTURE and SFLAG_INDRAWABLE. When the surface is current in
+ * multiple locations, the gl texture is preferred over the drawable, which is
+ * preferred over system memory. The PBO counts as system memory. If rect is
+ * not NULL, only the specified rectangle is copied (only supported for
+ * sysmem<->drawable copies at the moment). If rect is NULL, the destination
+ * location is marked up to date after the copy.
+ *
+ * Parameters:
+ *  flag: Surface location flag to be updated
+ *  rect: rectangle to be copied
+ *
+ * Returns:
+ *  WINED3D_OK on success
+ *  WINED3DERR_DEVICELOST on an internal error
+ *
+ *****************************************************************************/
+static HRESULT WINAPI IWineD3DSurfaceImpl_LoadLocation(IWineD3DSurface *iface, DWORD flag, const RECT *rect) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface;
+    IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
+    IWineD3DSwapChain *swapchain = NULL;
+    GLenum format, internal, type;
+    CONVERT_TYPES convert;
+    int bpp;
+    int width, pitch, outpitch;
+    BYTE *mem;
+
+    if (wined3d_settings.offscreen_rendering_mode == ORM_FBO) {
+        if (SUCCEEDED(IWineD3DSurface_GetContainer(iface, &IID_IWineD3DSwapChain, (void **)&swapchain))) {
+            TRACE("Surface %p is an onscreen surface\n", iface);
+
+            IWineD3DSwapChain_Release(swapchain);
+        } else {
+            /* With ORM_FBO, SFLAG_INTEXTURE and SFLAG_INDRAWABLE are the same for offscreen targets.
+             * Prefer SFLAG_INTEXTURE. */
+            if (flag == SFLAG_INDRAWABLE) flag = SFLAG_INTEXTURE;
+        }
+    }
+
+    TRACE("(%p)->(%s, %p)\n", iface,
+          flag == SFLAG_INSYSMEM ? "SFLAG_INSYSMEM" : flag == SFLAG_INDRAWABLE ? "SFLAG_INDRAWABLE" : "SFLAG_INTEXTURE",
+          rect);
+    if(rect) {
+        TRACE("Rectangle: (%d,%d)-(%d,%d)\n", rect->left, rect->top, rect->right, rect->bottom);
+    }
+
+    if(This->Flags & flag) {
+        TRACE("Location already up to date\n");
+        return WINED3D_OK;
+    }
+
+    if(!(This->Flags & SFLAG_LOCATIONS)) {
+        ERR("Surface does not have any up to date location\n");
+        This->Flags |= SFLAG_LOST;
+        return WINED3DERR_DEVICELOST;
+    }
+
+    if(flag == SFLAG_INSYSMEM) {
+        surface_prepare_system_memory(This);
+
+        /* Download the surface to system memory */
+        if(This->Flags & SFLAG_INTEXTURE) {
+            if(!device->isInDraw) ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+            surface_bind_and_dirtify(This);
+
+            surface_download_data(This);
+        } else {
+            read_from_framebuffer(This, rect,
+                                  This->resource.allocatedMemory,
+                                  IWineD3DSurface_GetPitch(iface));
+        }
+    } else if(flag == SFLAG_INDRAWABLE) {
+        if(This->Flags & SFLAG_INTEXTURE) {
+            surface_blt_to_drawable(This, rect);
+        } else {
+            d3dfmt_get_conv(This, TRUE /* We need color keying */, FALSE /* We won't use textures */, &format, &internal, &type, &convert, &bpp, This->srgb);
+
+            /* The width is in 'length' not in bytes */
+            width = This->currentDesc.Width;
+            pitch = IWineD3DSurface_GetPitch(iface);
+
+            /* Don't use PBOs for converted surfaces. During PBO conversion we look at SFLAG_CONVERTED
+             * but it isn't set (yet) in all cases it is getting called. */
+            if((convert != NO_CONVERSION) && (This->Flags & SFLAG_PBO)) {
+                TRACE("Removing the pbo attached to surface %p\n", This);
+                surface_remove_pbo(This);
+            }
+
+            if((convert != NO_CONVERSION) && This->resource.allocatedMemory) {
+                int height = This->currentDesc.Height;
+
+                /* Stick to the alignment for the converted surface too, makes it easier to load the surface */
+                outpitch = width * bpp;
+                outpitch = (outpitch + device->surface_alignment - 1) & ~(device->surface_alignment - 1);
+
+                mem = HeapAlloc(GetProcessHeap(), 0, outpitch * height);
+                if(!mem) {
+                    ERR("Out of memory %d, %d!\n", outpitch, height);
+                    return WINED3DERR_OUTOFVIDEOMEMORY;
+                }
+                d3dfmt_convert_surface(This->resource.allocatedMemory, mem, pitch, width, height, outpitch, convert, This);
+
+                This->Flags |= SFLAG_CONVERTED;
+            } else {
+                This->Flags &= ~SFLAG_CONVERTED;
+                mem = This->resource.allocatedMemory;
+            }
+
+            flush_to_framebuffer_drawpixels(This, format, type, bpp, mem);
+
+            /* Don't delete PBO memory */
+            if((mem != This->resource.allocatedMemory) && !(This->Flags & SFLAG_PBO))
+                HeapFree(GetProcessHeap(), 0, mem);
+        }
+    } else /* if(flag == SFLAG_INTEXTURE) */ {
+        if (This->Flags & SFLAG_INDRAWABLE) {
+            read_from_framebuffer_texture(This);
+        } else { /* Upload from system memory */
+            d3dfmt_get_conv(This, TRUE /* We need color keying */, TRUE /* We will use textures */, &format, &internal, &type, &convert, &bpp, This->srgb);
+
+            if(!device->isInDraw) ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+            surface_bind_and_dirtify(This);
+
+            /* The only place where LoadTexture() might get called when isInDraw=1
+             * is ActivateContext where lastActiveRenderTarget is preloaded.
+             */
+            if(iface == device->lastActiveRenderTarget && device->isInDraw)
+                ERR("Reading back render target but SFLAG_INDRAWABLE not set\n");
+
+            /* Otherwise: System memory copy must be most up to date */
+
+            if(This->CKeyFlags & WINEDDSD_CKSRCBLT) {
+                This->Flags |= SFLAG_GLCKEY;
+                This->glCKey = This->SrcBltCKey;
+            }
+            else This->Flags &= ~SFLAG_GLCKEY;
+
+            /* The width is in 'length' not in bytes */
+            width = This->currentDesc.Width;
+            pitch = IWineD3DSurface_GetPitch(iface);
+
+            /* Don't use PBOs for converted surfaces. During PBO conversion we look at SFLAG_CONVERTED
+             * but it isn't set (yet) in all cases it is getting called. */
+            if((convert != NO_CONVERSION) && (This->Flags & SFLAG_PBO)) {
+                TRACE("Removing the pbo attached to surface %p\n", This);
+                surface_remove_pbo(This);
+            }
+
+            if((convert != NO_CONVERSION) && This->resource.allocatedMemory) {
+                int height = This->currentDesc.Height;
+
+                /* Stick to the alignment for the converted surface too, makes it easier to load the surface */
+                outpitch = width * bpp;
+                outpitch = (outpitch + device->surface_alignment - 1) & ~(device->surface_alignment - 1);
+
+                mem = HeapAlloc(GetProcessHeap(), 0, outpitch * height);
+                if(!mem) {
+                    ERR("Out of memory %d, %d!\n", outpitch, height);
+                    return WINED3DERR_OUTOFVIDEOMEMORY;
+                }
+                d3dfmt_convert_surface(This->resource.allocatedMemory, mem, pitch, width, height, outpitch, convert, This);
+
+                This->Flags |= SFLAG_CONVERTED;
+            } else if( (This->resource.format == WINED3DFMT_P8) && (GL_SUPPORT(EXT_PALETTED_TEXTURE) || GL_SUPPORT(ARB_FRAGMENT_PROGRAM)) ) {
+                d3dfmt_p8_upload_palette(iface, convert);
+                This->Flags &= ~SFLAG_CONVERTED;
+                mem = This->resource.allocatedMemory;
+            } else {
+                This->Flags &= ~SFLAG_CONVERTED;
+                mem = This->resource.allocatedMemory;
+            }
+
+            /* Make sure the correct pitch is used */
+            ENTER_GL();
+            glPixelStorei(GL_UNPACK_ROW_LENGTH, width);
+            LEAVE_GL();
+
+            if ((This->Flags & SFLAG_NONPOW2) && !(This->Flags & SFLAG_OVERSIZE)) {
+                TRACE("non power of two support\n");
+                if(!(This->Flags & SFLAG_ALLOCATED)) {
+                    surface_allocate_surface(This, internal, This->pow2Width, This->pow2Height, format, type);
+                }
+                if (mem || (This->Flags & SFLAG_PBO)) {
+                    surface_upload_data(This, internal, This->currentDesc.Width, This->currentDesc.Height, format, type, mem);
+                }
+            } else {
+                /* When making the realloc conditional, keep in mind that GL_APPLE_client_storage may be in use, and This->resource.allocatedMemory
+                 * changed. So also keep track of memory changes. In this case the texture has to be reallocated
+                 */
+                if(!(This->Flags & SFLAG_ALLOCATED)) {
+                    surface_allocate_surface(This, internal, This->glRect.right - This->glRect.left, This->glRect.bottom - This->glRect.top, format, type);
+                }
+                if (mem || (This->Flags & SFLAG_PBO)) {
+                    surface_upload_data(This, internal, This->glRect.right - This->glRect.left, This->glRect.bottom - This->glRect.top, format, type, mem);
+                }
+            }
+
+            /* Restore the default pitch */
+            ENTER_GL();
+            glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
+            LEAVE_GL();
+
+            /* Don't delete PBO memory */
+            if((mem != This->resource.allocatedMemory) && !(This->Flags & SFLAG_PBO))
+                HeapFree(GetProcessHeap(), 0, mem);
+        }
+    }
+
+    if(rect == NULL) {
+        This->Flags |= flag;
+    }
+
+    if (wined3d_settings.offscreen_rendering_mode == ORM_FBO && !swapchain
+            && (This->Flags & (SFLAG_INTEXTURE | SFLAG_INDRAWABLE))) {
+        /* With ORM_FBO, SFLAG_INTEXTURE and SFLAG_INDRAWABLE are the same for offscreen targets. */
+        This->Flags |= (SFLAG_INTEXTURE | SFLAG_INDRAWABLE);
+    }
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DSurfaceImpl_SetContainer(IWineD3DSurface *iface, IWineD3DBase *container)
+{
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface;
+    IWineD3DSwapChain *swapchain = NULL;
+
+    /* Update the drawable size method */
+    if(container) {
+        IWineD3DBase_QueryInterface(container, &IID_IWineD3DSwapChain, (void **) &swapchain);
+    }
+    if(swapchain) {
+        This->get_drawable_size = get_drawable_size_swapchain;
+        IWineD3DSwapChain_Release(swapchain);
+    } else if(This->resource.usage & WINED3DUSAGE_RENDERTARGET) {
+        switch(wined3d_settings.offscreen_rendering_mode) {
+            case ORM_FBO:        This->get_drawable_size = get_drawable_size_fbo;        break;
+            case ORM_PBUFFER:    This->get_drawable_size = get_drawable_size_pbuffer;    break;
+            case ORM_BACKBUFFER: This->get_drawable_size = get_drawable_size_backbuffer; break;
+        }
+    }
+
+    return IWineD3DBaseSurfaceImpl_SetContainer(iface, container);
+}
+
+static WINED3DSURFTYPE WINAPI IWineD3DSurfaceImpl_GetImplType(IWineD3DSurface *iface) {
+    return SURFACE_OPENGL;
+}
+
+static HRESULT WINAPI IWineD3DSurfaceImpl_DrawOverlay(IWineD3DSurface *iface) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface;
+    HRESULT hr;
+
+    /* If there's no destination surface there is nothing to do */
+    if(!This->overlay_dest) return WINED3D_OK;
+
+    /* Blt calls ModifyLocation on the dest surface, which in turn calls DrawOverlay to
+     * update the overlay. Prevent an endless recursion
+     */
+    if(This->overlay_dest->Flags & SFLAG_INOVERLAYDRAW) {
+        return WINED3D_OK;
+    }
+    This->overlay_dest->Flags |= SFLAG_INOVERLAYDRAW;
+    hr = IWineD3DSurfaceImpl_Blt((IWineD3DSurface *) This->overlay_dest, &This->overlay_destrect,
+                                 iface, &This->overlay_srcrect, WINEDDBLT_WAIT,
+                                 NULL, WINED3DTEXF_LINEAR);
+    This->overlay_dest->Flags &= ~SFLAG_INOVERLAYDRAW;
+
+    return hr;
+}
+
+const IWineD3DSurfaceVtbl IWineD3DSurface_Vtbl =
+{
+    /* IUnknown */
+    IWineD3DBaseSurfaceImpl_QueryInterface,
+    IWineD3DBaseSurfaceImpl_AddRef,
+    IWineD3DSurfaceImpl_Release,
+    /* IWineD3DResource */
+    IWineD3DBaseSurfaceImpl_GetParent,
+    IWineD3DBaseSurfaceImpl_GetDevice,
+    IWineD3DBaseSurfaceImpl_SetPrivateData,
+    IWineD3DBaseSurfaceImpl_GetPrivateData,
+    IWineD3DBaseSurfaceImpl_FreePrivateData,
+    IWineD3DBaseSurfaceImpl_SetPriority,
+    IWineD3DBaseSurfaceImpl_GetPriority,
+    IWineD3DSurfaceImpl_PreLoad,
+    IWineD3DSurfaceImpl_UnLoad,
+    IWineD3DBaseSurfaceImpl_GetType,
+    /* IWineD3DSurface */
+    IWineD3DBaseSurfaceImpl_GetContainer,
+    IWineD3DBaseSurfaceImpl_GetDesc,
+    IWineD3DSurfaceImpl_LockRect,
+    IWineD3DSurfaceImpl_UnlockRect,
+    IWineD3DSurfaceImpl_GetDC,
+    IWineD3DSurfaceImpl_ReleaseDC,
+    IWineD3DSurfaceImpl_Flip,
+    IWineD3DSurfaceImpl_Blt,
+    IWineD3DBaseSurfaceImpl_GetBltStatus,
+    IWineD3DBaseSurfaceImpl_GetFlipStatus,
+    IWineD3DBaseSurfaceImpl_IsLost,
+    IWineD3DBaseSurfaceImpl_Restore,
+    IWineD3DSurfaceImpl_BltFast,
+    IWineD3DBaseSurfaceImpl_GetPalette,
+    IWineD3DBaseSurfaceImpl_SetPalette,
+    IWineD3DSurfaceImpl_RealizePalette,
+    IWineD3DBaseSurfaceImpl_SetColorKey,
+    IWineD3DBaseSurfaceImpl_GetPitch,
+    IWineD3DSurfaceImpl_SetMem,
+    IWineD3DBaseSurfaceImpl_SetOverlayPosition,
+    IWineD3DBaseSurfaceImpl_GetOverlayPosition,
+    IWineD3DBaseSurfaceImpl_UpdateOverlayZOrder,
+    IWineD3DBaseSurfaceImpl_UpdateOverlay,
+    IWineD3DBaseSurfaceImpl_SetClipper,
+    IWineD3DBaseSurfaceImpl_GetClipper,
+    /* Internal use: */
+    IWineD3DSurfaceImpl_AddDirtyRect,
+    IWineD3DSurfaceImpl_LoadTexture,
+    IWineD3DSurfaceImpl_BindTexture,
+    IWineD3DSurfaceImpl_SaveSnapshot,
+    IWineD3DSurfaceImpl_SetContainer,
+    IWineD3DSurfaceImpl_GetGlDesc,
+    IWineD3DBaseSurfaceImpl_GetData,
+    IWineD3DSurfaceImpl_SetFormat,
+    IWineD3DSurfaceImpl_PrivateSetup,
+    IWineD3DSurfaceImpl_ModifyLocation,
+    IWineD3DSurfaceImpl_LoadLocation,
+    IWineD3DSurfaceImpl_GetImplType,
+    IWineD3DSurfaceImpl_DrawOverlay
+};
+#undef GLINFO_LOCATION
+
+#define GLINFO_LOCATION device->adapter->gl_info
+static HRESULT ffp_blit_alloc(IWineD3DDevice *iface) { return WINED3D_OK; }
+static void ffp_blit_free(IWineD3DDevice *iface) { }
+
+static HRESULT ffp_blit_set(IWineD3DDevice *iface, WINED3DFORMAT fmt, GLenum textype, UINT width, UINT height) {
+    glEnable(textype);
+    checkGLcall("glEnable(textype)");
+    return WINED3D_OK;
+}
+
+static void ffp_blit_unset(IWineD3DDevice *iface) {
+    IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *) iface;
+    glDisable(GL_TEXTURE_2D);
+    checkGLcall("glDisable(GL_TEXTURE_2D)");
+    if(GL_SUPPORT(ARB_TEXTURE_CUBE_MAP)) {
+        glDisable(GL_TEXTURE_CUBE_MAP_ARB);
+        checkGLcall("glDisable(GL_TEXTURE_CUBE_MAP_ARB)");
+    }
+    if(GL_SUPPORT(ARB_TEXTURE_RECTANGLE)) {
+        glDisable(GL_TEXTURE_RECTANGLE_ARB);
+        checkGLcall("glDisable(GL_TEXTURE_RECTANGLE_ARB)");
+    }
+}
+
+static BOOL ffp_blit_color_fixup_supported(struct color_fixup_desc fixup)
+{
+    if (TRACE_ON(d3d_surface) && TRACE_ON(d3d))
+    {
+        TRACE("Checking support for fixup:\n");
+        dump_color_fixup_desc(fixup);
+    }
+
+    /* We only support identity conversions. */
+    if (is_identity_fixup(fixup))
+    {
+        TRACE("[OK]\n");
+        return TRUE;
+    }
+
+    TRACE("[FAILED]\n");
+    return FALSE;
+}
+
+const struct blit_shader ffp_blit =  {
+    ffp_blit_alloc,
+    ffp_blit_free,
+    ffp_blit_set,
+    ffp_blit_unset,
+    ffp_blit_color_fixup_supported
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/surface_base.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/surface_base.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/surface_base.c	(revision 16410)
@@ -0,0 +1,1845 @@
+/*
+ * IWineD3DSurface Implementation of management(non-rendering) functions
+ *
+ * Copyright 1998 Lionel Ulmer
+ * Copyright 2000-2001 TransGaming Technologies Inc.
+ * Copyright 2002-2005 Jason Edmeades
+ * Copyright 2002-2003 Raphael Junqueira
+ * Copyright 2004 Christian Costa
+ * Copyright 2005 Oliver Stieber
+ * Copyright 2006-2008 Stefan Dösinger for CodeWeavers
+ * Copyright 2007 Henri Verbeet
+ * Copyright 2006-2007 Roderick Colenbrander
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "wine/port.h"
+#include "wined3d_private.h"
+
+#include <assert.h>
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d_surface);
+
+/* See also float_16_to_32() in wined3d_private.h */
+static inline unsigned short float_32_to_16(const float *in)
+{
+    int exp = 0;
+    float tmp = fabs(*in);
+    unsigned int mantissa;
+    unsigned short ret;
+
+    /* Deal with special numbers */
+    if(*in == 0.0) return 0x0000;
+    if(_isnan(*in)) return 0x7C01;
+    if(!_finite(*in)) return (*in < 0.0 ? 0xFC00 : 0x7c00);
+
+    if(tmp < pow(2, 10)) {
+        do
+        {
+            tmp = tmp * 2.0;
+            exp--;
+        }while(tmp < pow(2, 10));
+    } else if(tmp >= pow(2, 11)) {
+        do
+        {
+            tmp /= 2.0;
+            exp++;
+        }while(tmp >= pow(2, 11));
+    }
+
+    mantissa = (unsigned int) tmp;
+    if(tmp - mantissa >= 0.5) mantissa++; /* round to nearest, away from zero */
+
+    exp += 10;  /* Normalize the mantissa */
+    exp += 15;  /* Exponent is encoded with excess 15 */
+
+    if(exp > 30) { /* too big */
+        ret = 0x7c00; /* INF */
+    } else if(exp <= 0) {
+        /* exp == 0: Non-normalized mantissa. Returns 0x0000 (=0.0) for too small numbers */
+        while(exp <= 0) {
+            mantissa = mantissa >> 1;
+            exp++;
+        }
+        ret = mantissa & 0x3ff;
+    } else {
+        ret = (exp << 10) | (mantissa & 0x3ff);
+    }
+
+    ret |= ((*in < 0.0 ? 1 : 0) << 15); /* Add the sign */
+    return ret;
+}
+
+
+/* Do NOT define GLINFO_LOCATION in this file. THIS CODE MUST NOT USE IT */
+
+/* *******************************************
+   IWineD3DSurface IUnknown parts follow
+   ******************************************* */
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_QueryInterface(IWineD3DSurface *iface, REFIID riid, LPVOID *ppobj)
+{
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+    /* Warn ,but be nice about things */
+    TRACE("(%p)->(%s,%p)\n", This,debugstr_guid(riid),ppobj);
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IWineD3DBase)
+        || IsEqualGUID(riid, &IID_IWineD3DResource)
+        || IsEqualGUID(riid, &IID_IWineD3DSurface)) {
+        IUnknown_AddRef((IUnknown*)iface);
+        *ppobj = This;
+        return S_OK;
+        }
+        *ppobj = NULL;
+        return E_NOINTERFACE;
+}
+
+ULONG WINAPI IWineD3DBaseSurfaceImpl_AddRef(IWineD3DSurface *iface) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+    ULONG ref = InterlockedIncrement(&This->resource.ref);
+    TRACE("(%p) : AddRef increasing from %d\n", This,ref - 1);
+    return ref;
+}
+
+/* ****************************************************
+   IWineD3DSurface IWineD3DResource parts follow
+   **************************************************** */
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_GetDevice(IWineD3DSurface *iface, IWineD3DDevice** ppDevice) {
+    return resource_get_device((IWineD3DResource *)iface, ppDevice);
+}
+
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_SetPrivateData(IWineD3DSurface *iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) {
+    return resource_set_private_data((IWineD3DResource *)iface, refguid, pData, SizeOfData, Flags);
+}
+
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_GetPrivateData(IWineD3DSurface *iface, REFGUID refguid, void* pData, DWORD* pSizeOfData) {
+    return resource_get_private_data((IWineD3DResource *)iface, refguid, pData, pSizeOfData);
+}
+
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_FreePrivateData(IWineD3DSurface *iface, REFGUID refguid) {
+    return resource_free_private_data((IWineD3DResource *)iface, refguid);
+}
+
+DWORD   WINAPI IWineD3DBaseSurfaceImpl_SetPriority(IWineD3DSurface *iface, DWORD PriorityNew) {
+    return resource_set_priority((IWineD3DResource *)iface, PriorityNew);
+}
+
+DWORD   WINAPI IWineD3DBaseSurfaceImpl_GetPriority(IWineD3DSurface *iface) {
+    return resource_get_priority((IWineD3DResource *)iface);
+}
+
+WINED3DRESOURCETYPE WINAPI IWineD3DBaseSurfaceImpl_GetType(IWineD3DSurface *iface) {
+    TRACE("(%p) : calling resourceimpl_GetType\n", iface);
+    return resource_get_type((IWineD3DResource *)iface);
+}
+
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_GetParent(IWineD3DSurface *iface, IUnknown **pParent) {
+    TRACE("(%p) : calling resourceimpl_GetParent\n", iface);
+    return resource_get_parent((IWineD3DResource *)iface, pParent);
+}
+
+/* ******************************************************
+   IWineD3DSurface IWineD3DSurface parts follow
+   ****************************************************** */
+
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_GetContainer(IWineD3DSurface* iface, REFIID riid, void** ppContainer) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+    IWineD3DBase *container = 0;
+
+    TRACE("(This %p, riid %s, ppContainer %p)\n", This, debugstr_guid(riid), ppContainer);
+
+    if (!ppContainer) {
+        ERR("Called without a valid ppContainer.\n");
+    }
+
+    /** From MSDN:
+     * If the surface is created using CreateImageSurface/CreateOffscreenPlainSurface, CreateRenderTarget,
+     * or CreateDepthStencilSurface, the surface is considered stand alone. In this case,
+     * GetContainer will return the Direct3D device used to create the surface.
+     */
+    if (This->container) {
+        container = This->container;
+    } else {
+        container = (IWineD3DBase *)This->resource.wineD3DDevice;
+    }
+
+    TRACE("Relaying to QueryInterface\n");
+    return IUnknown_QueryInterface(container, riid, ppContainer);
+}
+
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_GetDesc(IWineD3DSurface *iface, WINED3DSURFACE_DESC *pDesc) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+
+    TRACE("(%p) : copying into %p\n", This, pDesc);
+    if(pDesc->Format != NULL)             *(pDesc->Format) = This->resource.format;
+    if(pDesc->Type != NULL)               *(pDesc->Type)   = This->resource.resourceType;
+    if(pDesc->Usage != NULL)              *(pDesc->Usage)              = This->resource.usage;
+    if(pDesc->Pool != NULL)               *(pDesc->Pool)               = This->resource.pool;
+    if(pDesc->Size != NULL)               *(pDesc->Size)               = This->resource.size;   /* dx8 only */
+    if(pDesc->MultiSampleType != NULL)    *(pDesc->MultiSampleType)    = This->currentDesc.MultiSampleType;
+    if(pDesc->MultiSampleQuality != NULL) *(pDesc->MultiSampleQuality) = This->currentDesc.MultiSampleQuality;
+    if(pDesc->Width != NULL)              *(pDesc->Width)              = This->currentDesc.Width;
+    if(pDesc->Height != NULL)             *(pDesc->Height)             = This->currentDesc.Height;
+    return WINED3D_OK;
+}
+
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_GetBltStatus(IWineD3DSurface *iface, DWORD Flags) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+    TRACE("(%p)->(%x)\n", This, Flags);
+
+    switch (Flags)
+    {
+        case WINEDDGBS_CANBLT:
+        case WINEDDGBS_ISBLTDONE:
+            return WINED3D_OK;
+
+        default:
+            return WINED3DERR_INVALIDCALL;
+    }
+}
+
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_GetFlipStatus(IWineD3DSurface *iface, DWORD Flags) {
+    /* XXX: DDERR_INVALIDSURFACETYPE */
+
+    TRACE("(%p)->(%08x)\n",iface,Flags);
+    switch (Flags) {
+        case WINEDDGFS_CANFLIP:
+        case WINEDDGFS_ISFLIPDONE:
+            return WINED3D_OK;
+
+        default:
+            return WINED3DERR_INVALIDCALL;
+    }
+}
+
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_IsLost(IWineD3DSurface *iface) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface;
+    TRACE("(%p)\n", This);
+
+    /* D3D8 and 9 loose full devices, ddraw only surfaces */
+    return This->Flags & SFLAG_LOST ? WINED3DERR_DEVICELOST : WINED3D_OK;
+}
+
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_Restore(IWineD3DSurface *iface) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface;
+    TRACE("(%p)\n", This);
+
+    /* So far we don't lose anything :) */
+    This->Flags &= ~SFLAG_LOST;
+    return WINED3D_OK;
+}
+
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_SetPalette(IWineD3DSurface *iface, IWineD3DPalette *Pal) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface;
+    IWineD3DPaletteImpl *PalImpl = (IWineD3DPaletteImpl *) Pal;
+    TRACE("(%p)->(%p)\n", This, Pal);
+
+    if(This->palette == PalImpl) {
+        TRACE("Nop palette change\n");
+        return WINED3D_OK;
+    }
+
+    if(This->palette != NULL)
+        if(This->resource.usage & WINED3DUSAGE_RENDERTARGET)
+            This->palette->Flags &= ~WINEDDPCAPS_PRIMARYSURFACE;
+
+    This->palette = PalImpl;
+
+    if(PalImpl != NULL) {
+        if(This->resource.usage & WINED3DUSAGE_RENDERTARGET) {
+            (PalImpl)->Flags |= WINEDDPCAPS_PRIMARYSURFACE;
+        }
+
+        return IWineD3DSurface_RealizePalette(iface);
+    }
+    else return WINED3D_OK;
+}
+
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_SetColorKey(IWineD3DSurface *iface, DWORD Flags, const WINEDDCOLORKEY *CKey)
+{
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface;
+    TRACE("(%p)->(%08x,%p)\n", This, Flags, CKey);
+
+    if ((Flags & WINEDDCKEY_COLORSPACE) != 0) {
+        FIXME(" colorkey value not supported (%08x) !\n", Flags);
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    /* Dirtify the surface, but only if a key was changed */
+    if(CKey) {
+        switch (Flags & ~WINEDDCKEY_COLORSPACE) {
+            case WINEDDCKEY_DESTBLT:
+                This->DestBltCKey = *CKey;
+                This->CKeyFlags |= WINEDDSD_CKDESTBLT;
+                break;
+
+            case WINEDDCKEY_DESTOVERLAY:
+                This->DestOverlayCKey = *CKey;
+                This->CKeyFlags |= WINEDDSD_CKDESTOVERLAY;
+                break;
+
+            case WINEDDCKEY_SRCOVERLAY:
+                This->SrcOverlayCKey = *CKey;
+                This->CKeyFlags |= WINEDDSD_CKSRCOVERLAY;
+                break;
+
+            case WINEDDCKEY_SRCBLT:
+                This->SrcBltCKey = *CKey;
+                This->CKeyFlags |= WINEDDSD_CKSRCBLT;
+                break;
+        }
+    }
+    else {
+        switch (Flags & ~WINEDDCKEY_COLORSPACE) {
+            case WINEDDCKEY_DESTBLT:
+                This->CKeyFlags &= ~WINEDDSD_CKDESTBLT;
+                break;
+
+            case WINEDDCKEY_DESTOVERLAY:
+                This->CKeyFlags &= ~WINEDDSD_CKDESTOVERLAY;
+                break;
+
+            case WINEDDCKEY_SRCOVERLAY:
+                This->CKeyFlags &= ~WINEDDSD_CKSRCOVERLAY;
+                break;
+
+            case WINEDDCKEY_SRCBLT:
+                This->CKeyFlags &= ~WINEDDSD_CKSRCBLT;
+                break;
+        }
+    }
+
+    return WINED3D_OK;
+}
+
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_GetPalette(IWineD3DSurface *iface, IWineD3DPalette **Pal) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface;
+    TRACE("(%p)->(%p)\n", This, Pal);
+
+    *Pal = (IWineD3DPalette *) This->palette;
+    return WINED3D_OK;
+}
+
+DWORD WINAPI IWineD3DBaseSurfaceImpl_GetPitch(IWineD3DSurface *iface) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface;
+    DWORD ret;
+    TRACE("(%p)\n", This);
+
+    /* DXTn formats don't have exact pitches as they are to the new row of blocks,
+    where each block is 4x4 pixels, 8 bytes (dxt1) and 16 bytes (dxt2/3/4/5)
+    ie pitch = (width/4) * bytes per block                                  */
+    if (This->resource.format == WINED3DFMT_DXT1) /* DXT1 is 8 bytes per block */
+        ret = ((This->currentDesc.Width + 3) >> 2) << 3;
+    else if (This->resource.format == WINED3DFMT_DXT2 || This->resource.format == WINED3DFMT_DXT3 ||
+             This->resource.format == WINED3DFMT_DXT4 || This->resource.format == WINED3DFMT_DXT5) /* DXT2/3/4/5 is 16 bytes per block */
+        ret = ((This->currentDesc.Width + 3) >> 2) << 4;
+    else {
+        unsigned char alignment = This->resource.wineD3DDevice->surface_alignment;
+        ret = This->bytesPerPixel * This->currentDesc.Width;  /* Bytes / row */
+        ret = (ret + alignment - 1) & ~(alignment - 1);
+    }
+    TRACE("(%p) Returning %d\n", This, ret);
+    return ret;
+}
+
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_SetOverlayPosition(IWineD3DSurface *iface, LONG X, LONG Y) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface;
+    LONG w, h;
+
+    TRACE("(%p)->(%d,%d) Stub!\n", This, X, Y);
+
+    if(!(This->resource.usage & WINED3DUSAGE_OVERLAY))
+    {
+        TRACE("(%p): Not an overlay surface\n", This);
+        return WINEDDERR_NOTAOVERLAYSURFACE;
+    }
+
+    w = This->overlay_destrect.right - This->overlay_destrect.left;
+    h = This->overlay_destrect.bottom - This->overlay_destrect.top;
+    This->overlay_destrect.left = X;
+    This->overlay_destrect.top = Y;
+    This->overlay_destrect.right = X + w;
+    This->overlay_destrect.bottom = Y + h;
+
+    IWineD3DSurface_DrawOverlay(iface);
+
+    return WINED3D_OK;
+}
+
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_GetOverlayPosition(IWineD3DSurface *iface, LONG *X, LONG *Y) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface;
+    HRESULT hr;
+
+    TRACE("(%p)->(%p,%p)\n", This, X, Y);
+
+    if(!(This->resource.usage & WINED3DUSAGE_OVERLAY))
+    {
+        TRACE("(%p): Not an overlay surface\n", This);
+        return WINEDDERR_NOTAOVERLAYSURFACE;
+    }
+    if(This->overlay_dest == NULL) {
+        *X = 0; *Y = 0;
+        hr = WINEDDERR_OVERLAYNOTVISIBLE;
+    } else {
+        *X = This->overlay_destrect.left;
+        *Y = This->overlay_destrect.top;
+        hr = WINED3D_OK;
+    }
+
+    TRACE("Returning 0x%08x, position %d, %d\n", hr, *X, *Y);
+    return hr;
+}
+
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_UpdateOverlayZOrder(IWineD3DSurface *iface, DWORD Flags, IWineD3DSurface *Ref) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface;
+    IWineD3DSurfaceImpl *RefImpl = (IWineD3DSurfaceImpl *) Ref;
+
+    FIXME("(%p)->(%08x,%p) Stub!\n", This, Flags, RefImpl);
+
+    if(!(This->resource.usage & WINED3DUSAGE_OVERLAY))
+    {
+        TRACE("(%p): Not an overlay surface\n", This);
+        return WINEDDERR_NOTAOVERLAYSURFACE;
+    }
+
+    return WINED3D_OK;
+}
+
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_UpdateOverlay(IWineD3DSurface *iface, const RECT *SrcRect,
+        IWineD3DSurface *DstSurface, const RECT *DstRect, DWORD Flags, const WINEDDOVERLAYFX *FX)
+{
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface;
+    IWineD3DSurfaceImpl *Dst = (IWineD3DSurfaceImpl *) DstSurface;
+    TRACE("(%p)->(%p, %p, %p, %08x, %p)\n", This, SrcRect, Dst, DstRect, Flags, FX);
+
+    if(!(This->resource.usage & WINED3DUSAGE_OVERLAY))
+    {
+        WARN("(%p): Not an overlay surface\n", This);
+        return WINEDDERR_NOTAOVERLAYSURFACE;
+    } else if(!DstSurface) {
+        WARN("(%p): Dest surface is NULL\n", This);
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    if(SrcRect) {
+        This->overlay_srcrect = *SrcRect;
+    } else {
+        This->overlay_srcrect.left = 0;
+        This->overlay_srcrect.top = 0;
+        This->overlay_srcrect.right = This->currentDesc.Width;
+        This->overlay_srcrect.bottom = This->currentDesc.Height;
+    }
+
+    if(DstRect) {
+        This->overlay_destrect = *DstRect;
+    } else {
+        This->overlay_destrect.left = 0;
+        This->overlay_destrect.top = 0;
+        This->overlay_destrect.right = Dst ? Dst->currentDesc.Width : 0;
+        This->overlay_destrect.bottom = Dst ? Dst->currentDesc.Height : 0;
+    }
+
+    if(This->overlay_dest && (This->overlay_dest != Dst || Flags & WINEDDOVER_HIDE)) {
+        list_remove(&This->overlay_entry);
+    }
+
+    if(Flags & WINEDDOVER_SHOW) {
+        if(This->overlay_dest != Dst) {
+            This->overlay_dest = Dst;
+            list_add_tail(&Dst->overlays, &This->overlay_entry);
+        }
+    } else if(Flags & WINEDDOVER_HIDE) {
+        /* tests show that the rectangles are erased on hide */
+        This->overlay_srcrect.left   = 0; This->overlay_srcrect.top     = 0;
+        This->overlay_srcrect.right  = 0; This->overlay_srcrect.bottom  = 0;
+        This->overlay_destrect.left  = 0; This->overlay_destrect.top    = 0;
+        This->overlay_destrect.right = 0; This->overlay_destrect.bottom = 0;
+        This->overlay_dest = NULL;
+    }
+
+    IWineD3DSurface_DrawOverlay(iface);
+
+    return WINED3D_OK;
+}
+
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_SetClipper(IWineD3DSurface *iface, IWineD3DClipper *clipper)
+{
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface;
+    TRACE("(%p)->(%p)\n", This, clipper);
+
+    This->clipper = clipper;
+    return WINED3D_OK;
+}
+
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_GetClipper(IWineD3DSurface *iface, IWineD3DClipper **clipper)
+{
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface;
+    TRACE("(%p)->(%p)\n", This, clipper);
+
+    *clipper = This->clipper;
+    if(*clipper) {
+        IWineD3DClipper_AddRef(*clipper);
+    }
+    return WINED3D_OK;
+}
+
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_SetContainer(IWineD3DSurface *iface, IWineD3DBase *container) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+
+    TRACE("This %p, container %p\n", This, container);
+
+    /* We can't keep a reference to the container, since the container already keeps a reference to us. */
+
+    TRACE("Setting container to %p from %p\n", container, This->container);
+    This->container = container;
+
+    return WINED3D_OK;
+}
+
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_SetFormat(IWineD3DSurface *iface, WINED3DFORMAT format) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+    const StaticPixelFormatDesc *formatEntry = getFormatDescEntry(format, NULL, NULL);
+
+    if (This->resource.format != WINED3DFMT_UNKNOWN) {
+        FIXME("(%p) : The format of the surface must be WINED3DFORMAT_UNKNOWN\n", This);
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    TRACE("(%p) : Setting texture format to (%d,%s)\n", This, format, debug_d3dformat(format));
+    if (format == WINED3DFMT_UNKNOWN) {
+        This->resource.size = 0;
+    } else if (format == WINED3DFMT_DXT1) {
+        /* DXT1 is half byte per pixel */
+        This->resource.size = ((max(This->pow2Width, 4) * formatEntry->bpp) * max(This->pow2Height, 4)) >> 1;
+
+    } else if (format == WINED3DFMT_DXT2 || format == WINED3DFMT_DXT3 ||
+               format == WINED3DFMT_DXT4 || format == WINED3DFMT_DXT5) {
+        This->resource.size = ((max(This->pow2Width, 4) * formatEntry->bpp) * max(This->pow2Height, 4));
+    } else {
+        unsigned char alignment = This->resource.wineD3DDevice->surface_alignment;
+        This->resource.size = ((This->pow2Width * formatEntry->bpp) + alignment - 1) & ~(alignment - 1);
+        This->resource.size *= This->pow2Height;
+    }
+
+    if (format != WINED3DFMT_UNKNOWN) {
+        This->bytesPerPixel = formatEntry->bpp;
+    } else {
+        This->bytesPerPixel = 0;
+    }
+
+    This->Flags |= (WINED3DFMT_D16_LOCKABLE == format) ? SFLAG_LOCKABLE : 0;
+
+    This->resource.format = format;
+
+    TRACE("(%p) : Size %d, bytesPerPixel %d\n", This, This->resource.size, This->bytesPerPixel);
+
+    return WINED3D_OK;
+}
+
+HRESULT IWineD3DBaseSurfaceImpl_CreateDIBSection(IWineD3DSurface *iface) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+    int extraline = 0;
+    SYSTEM_INFO sysInfo;
+    BITMAPINFO* b_info;
+    HDC ddc;
+    DWORD *masks;
+    const StaticPixelFormatDesc *formatEntry = getFormatDescEntry(This->resource.format, NULL, NULL);
+    UINT usage;
+
+    switch (This->bytesPerPixel) {
+        case 2:
+        case 4:
+            /* Allocate extra space to store the RGB bit masks. */
+            b_info = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(BITMAPINFOHEADER) + 3 * sizeof(DWORD));
+            break;
+
+        case 3:
+            b_info = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(BITMAPINFOHEADER));
+            break;
+
+        default:
+            /* Allocate extra space for a palette. */
+            b_info = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
+                               sizeof(BITMAPINFOHEADER)
+                               + sizeof(RGBQUAD)
+                               * (1 << (This->bytesPerPixel * 8)));
+            break;
+    }
+
+    if (!b_info)
+        return E_OUTOFMEMORY;
+
+        /* Some apps access the surface in via DWORDs, and do not take the necessary care at the end of the
+    * surface. So we need at least extra 4 bytes at the end of the surface. Check against the page size,
+    * if the last page used for the surface has at least 4 spare bytes we're safe, otherwise
+    * add an extra line to the dib section
+        */
+    GetSystemInfo(&sysInfo);
+    if( ((This->resource.size + 3) % sysInfo.dwPageSize) < 4) {
+        extraline = 1;
+        TRACE("Adding an extra line to the dib section\n");
+    }
+
+    b_info->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
+    /* TODO: Is there a nicer way to force a specific alignment? (8 byte for ddraw) */
+    b_info->bmiHeader.biWidth = IWineD3DSurface_GetPitch(iface) / This->bytesPerPixel;
+    b_info->bmiHeader.biHeight = -This->currentDesc.Height -extraline;
+    b_info->bmiHeader.biSizeImage = ( This->currentDesc.Height + extraline) * IWineD3DSurface_GetPitch(iface);
+    b_info->bmiHeader.biPlanes = 1;
+    b_info->bmiHeader.biBitCount = This->bytesPerPixel * 8;
+
+    b_info->bmiHeader.biXPelsPerMeter = 0;
+    b_info->bmiHeader.biYPelsPerMeter = 0;
+    b_info->bmiHeader.biClrUsed = 0;
+    b_info->bmiHeader.biClrImportant = 0;
+
+    /* Get the bit masks */
+    masks = (DWORD *)b_info->bmiColors;
+    switch (This->resource.format) {
+        case WINED3DFMT_R8G8B8:
+            usage = DIB_RGB_COLORS;
+            b_info->bmiHeader.biCompression = BI_RGB;
+            break;
+
+        case WINED3DFMT_X1R5G5B5:
+        case WINED3DFMT_A1R5G5B5:
+        case WINED3DFMT_A4R4G4B4:
+        case WINED3DFMT_X4R4G4B4:
+        case WINED3DFMT_R3G3B2:
+        case WINED3DFMT_A8R3G3B2:
+        case WINED3DFMT_A2B10G10R10:
+        case WINED3DFMT_A8B8G8R8:
+        case WINED3DFMT_X8B8G8R8:
+        case WINED3DFMT_A2R10G10B10:
+        case WINED3DFMT_R5G6B5:
+        case WINED3DFMT_A16B16G16R16:
+            usage = 0;
+            b_info->bmiHeader.biCompression = BI_BITFIELDS;
+            masks[0] = formatEntry->redMask;
+            masks[1] = formatEntry->greenMask;
+            masks[2] = formatEntry->blueMask;
+            break;
+
+        default:
+            /* Don't know palette */
+            b_info->bmiHeader.biCompression = BI_RGB;
+            usage = 0;
+            break;
+    }
+
+    ddc = GetDC(0);
+    if (ddc == 0) {
+        HeapFree(GetProcessHeap(), 0, b_info);
+        return HRESULT_FROM_WIN32(GetLastError());
+    }
+
+    TRACE("Creating a DIB section with size %dx%dx%d, size=%d\n", b_info->bmiHeader.biWidth, b_info->bmiHeader.biHeight, b_info->bmiHeader.biBitCount, b_info->bmiHeader.biSizeImage);
+    This->dib.DIBsection = CreateDIBSection(ddc, b_info, usage, &This->dib.bitmap_data, 0 /* Handle */, 0 /* Offset */);
+    ReleaseDC(0, ddc);
+
+    if (!This->dib.DIBsection) {
+        ERR("CreateDIBSection failed!\n");
+        HeapFree(GetProcessHeap(), 0, b_info);
+        return HRESULT_FROM_WIN32(GetLastError());
+    }
+
+    TRACE("DIBSection at : %p\n", This->dib.bitmap_data);
+    /* copy the existing surface to the dib section */
+    if(This->resource.allocatedMemory) {
+        memcpy(This->dib.bitmap_data, This->resource.allocatedMemory,  This->currentDesc.Height * IWineD3DSurface_GetPitch(iface));
+    } else {
+        /* This is to make LockRect read the gl Texture although memory is allocated */
+        This->Flags &= ~SFLAG_INSYSMEM;
+    }
+    This->dib.bitmap_size = b_info->bmiHeader.biSizeImage;
+
+    HeapFree(GetProcessHeap(), 0, b_info);
+
+    /* Now allocate a HDC */
+    This->hDC = CreateCompatibleDC(0);
+    This->dib.holdbitmap = SelectObject(This->hDC, This->dib.DIBsection);
+    TRACE("using wined3d palette %p\n", This->palette);
+    SelectPalette(This->hDC,
+                  This->palette ? This->palette->hpal : 0,
+                  FALSE);
+
+    This->Flags |= SFLAG_DIBSECTION;
+
+    HeapFree(GetProcessHeap(), 0, This->resource.heapMemory);
+    This->resource.heapMemory = NULL;
+
+    return WINED3D_OK;
+}
+
+static void convert_r32f_r16f(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
+                              unsigned int w, unsigned int h)
+{
+    unsigned int x, y;
+    const float *src_f;
+    unsigned short *dst_s;
+
+    TRACE("Converting %dx%d pixels, pitches %d %d\n", w, h, pitch_in, pitch_out);
+    for(y = 0; y < h; y++) {
+        src_f = (const float *)(src + y * pitch_in);
+        dst_s = (unsigned short *) (dst + y * pitch_out);
+        for(x = 0; x < w; x++) {
+            dst_s[x] = float_32_to_16(src_f + x);
+        }
+    }
+}
+
+struct d3dfmt_convertor_desc {
+    WINED3DFORMAT from, to;
+    void (*convert)(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out, unsigned int w, unsigned int h);
+};
+
+static const struct d3dfmt_convertor_desc convertors[] =
+{
+    {WINED3DFMT_R32F,       WINED3DFMT_R16F,        convert_r32f_r16f},
+};
+
+static inline const struct d3dfmt_convertor_desc *find_convertor(WINED3DFORMAT from, WINED3DFORMAT to)
+{
+    unsigned int i;
+    for(i = 0; i < (sizeof(convertors) / sizeof(convertors[0])); i++) {
+        if(convertors[i].from == from && convertors[i].to == to) {
+            return &convertors[i];
+        }
+    }
+    return NULL;
+}
+
+/*****************************************************************************
+ * surface_convert_format
+ *
+ * Creates a duplicate of a surface in a different format. Is used by Blt to
+ * blit between surfaces with different formats
+ *
+ * Parameters
+ *  source: Source surface
+ *  fmt: Requested destination format
+ *
+ *****************************************************************************/
+static IWineD3DSurfaceImpl *surface_convert_format(IWineD3DSurfaceImpl *source, WINED3DFORMAT to_fmt) {
+    IWineD3DSurface *ret = NULL;
+    const struct d3dfmt_convertor_desc *conv;
+    WINED3DLOCKED_RECT lock_src, lock_dst;
+    HRESULT hr;
+
+    conv = find_convertor(source->resource.format, to_fmt);
+    if(!conv) {
+        FIXME("Cannot find a conversion function from format %s to %s\n",
+              debug_d3dformat(source->resource.format), debug_d3dformat(to_fmt));
+        return NULL;
+    }
+
+    IWineD3DDevice_CreateSurface((IWineD3DDevice *) source->resource.wineD3DDevice,
+                                 source->currentDesc.Width,
+                                 source->currentDesc.Height,
+                                 to_fmt,
+                                 TRUE,  /* lockable */
+                                 TRUE,  /* discard  */
+                                 0,     /* level */
+                                 &ret,
+                                 WINED3DRTYPE_SURFACE,
+                                 0,     /* usage */
+                                 WINED3DPOOL_SCRATCH,
+                                 WINED3DMULTISAMPLE_NONE,   /* TODO: Multisampled conversion */
+                                 0,     /* MultiSampleQuality */
+                                 NULL,  /* SharedHandle */
+                                 IWineD3DSurface_GetImplType((IWineD3DSurface *) source),
+                                 NULL); /* parent */
+    if(!ret) {
+        ERR("Failed to create a destination surface for conversion\n");
+        return NULL;
+    }
+
+    memset(&lock_src, 0, sizeof(lock_src));
+    memset(&lock_dst, 0, sizeof(lock_dst));
+
+    hr = IWineD3DSurface_LockRect((IWineD3DSurface *) source, &lock_src, NULL, WINED3DLOCK_READONLY);
+    if(FAILED(hr)) {
+        ERR("Failed to lock the source surface\n");
+        IWineD3DSurface_Release(ret);
+        return NULL;
+    }
+    hr = IWineD3DSurface_LockRect(ret, &lock_dst, NULL, WINED3DLOCK_READONLY);
+    if(FAILED(hr)) {
+        ERR("Failed to lock the dest surface\n");
+        IWineD3DSurface_UnlockRect((IWineD3DSurface *) source);
+        IWineD3DSurface_Release(ret);
+        return NULL;
+    }
+
+    conv->convert(lock_src.pBits, lock_dst.pBits, lock_src.Pitch, lock_dst.Pitch,
+                  source->currentDesc.Width, source->currentDesc.Height);
+
+    IWineD3DSurface_UnlockRect(ret);
+    IWineD3DSurface_UnlockRect((IWineD3DSurface *) source);
+
+    return (IWineD3DSurfaceImpl *) ret;
+}
+
+/*****************************************************************************
+ * _Blt_ColorFill
+ *
+ * Helper function that fills a memory area with a specific color
+ *
+ * Params:
+ *  buf: memory address to start filling at
+ *  width, height: Dimensions of the area to fill
+ *  bpp: Bit depth of the surface
+ *  lPitch: pitch of the surface
+ *  color: Color to fill with
+ *
+ *****************************************************************************/
+static HRESULT
+        _Blt_ColorFill(BYTE *buf,
+                       int width, int height,
+                       int bpp, LONG lPitch,
+                       DWORD color)
+{
+    int x, y;
+    LPBYTE first;
+
+    /* Do first row */
+
+#define COLORFILL_ROW(type) \
+    { \
+    type *d = (type *) buf; \
+    for (x = 0; x < width; x++) \
+    d[x] = (type) color; \
+    break; \
+}
+    switch(bpp)
+    {
+        case 1: COLORFILL_ROW(BYTE)
+                case 2: COLORFILL_ROW(WORD)
+        case 3:
+        {
+            BYTE *d = buf;
+            for (x = 0; x < width; x++,d+=3)
+            {
+                d[0] = (color    ) & 0xFF;
+                d[1] = (color>> 8) & 0xFF;
+                d[2] = (color>>16) & 0xFF;
+            }
+            break;
+        }
+        case 4: COLORFILL_ROW(DWORD)
+        default:
+            FIXME("Color fill not implemented for bpp %d!\n", bpp*8);
+            return WINED3DERR_NOTAVAILABLE;
+    }
+
+#undef COLORFILL_ROW
+
+    /* Now copy first row */
+    first = buf;
+    for (y = 1; y < height; y++)
+    {
+        buf += lPitch;
+        memcpy(buf, first, width * bpp);
+    }
+    return WINED3D_OK;
+}
+
+/*****************************************************************************
+ * IWineD3DSurface::Blt, SW emulation version
+ *
+ * Performs blits to a surface, eigher from a source of source-less blts
+ * This is the main functionality of DirectDraw
+ *
+ * Params:
+ *  DestRect: Destination rectangle to write to
+ *  SrcSurface: Source surface, can be NULL
+ *  SrcRect: Source rectangle
+ *****************************************************************************/
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_Blt(IWineD3DSurface *iface, const RECT *DestRect, IWineD3DSurface *SrcSurface,
+        const RECT *SrcRect, DWORD Flags, const WINEDDBLTFX *DDBltFx, WINED3DTEXTUREFILTERTYPE Filter)
+{
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface;
+    IWineD3DSurfaceImpl *Src = (IWineD3DSurfaceImpl *) SrcSurface;
+    RECT        xdst,xsrc;
+    HRESULT     ret = WINED3D_OK;
+    WINED3DLOCKED_RECT  dlock, slock;
+    WINED3DFORMAT       dfmt = WINED3DFMT_UNKNOWN, sfmt = WINED3DFMT_UNKNOWN;
+    int bpp, srcheight, srcwidth, dstheight, dstwidth, width;
+    int x, y;
+    const StaticPixelFormatDesc *sEntry, *dEntry;
+    const BYTE *sbuf;
+    BYTE *dbuf;
+    TRACE("(%p)->(%p,%p,%p,%x,%p)\n", This, DestRect, Src, SrcRect, Flags, DDBltFx);
+
+    if (TRACE_ON(d3d_surface))
+    {
+        if (DestRect) TRACE("\tdestrect :%dx%d-%dx%d\n",
+            DestRect->left, DestRect->top, DestRect->right, DestRect->bottom);
+        if (SrcRect) TRACE("\tsrcrect  :%dx%d-%dx%d\n",
+            SrcRect->left, SrcRect->top, SrcRect->right, SrcRect->bottom);
+#if 0
+        TRACE("\tflags: ");
+                      DDRAW_dump_DDBLT(Flags);
+                      if (Flags & WINEDDBLT_DDFX)
+              {
+                      TRACE("\tblitfx: ");
+                      DDRAW_dump_DDBLTFX(DDBltFx->dwDDFX);
+    }
+#endif
+    }
+
+    if ( (This->Flags & SFLAG_LOCKED) || ((Src != NULL) && (Src->Flags & SFLAG_LOCKED)))
+    {
+        WARN(" Surface is busy, returning DDERR_SURFACEBUSY\n");
+        return WINEDDERR_SURFACEBUSY;
+    }
+
+    if(Filter != WINED3DTEXF_NONE && Filter != WINED3DTEXF_POINT) {
+        /* Can happen when d3d9 apps do a StretchRect call which isn't handled in gl */
+        FIXME("Filters not supported in software blit\n");
+    }
+
+    /* First check for the validity of source / destination rectangles. This was
+     * verified using a test application + by MSDN.
+     */
+    if ((Src != NULL) && (SrcRect != NULL) &&
+         ((SrcRect->bottom > Src->currentDesc.Height)||(SrcRect->bottom < 0) ||
+         (SrcRect->top     > Src->currentDesc.Height)||(SrcRect->top    < 0) ||
+         (SrcRect->left    > Src->currentDesc.Width) ||(SrcRect->left   < 0) ||
+         (SrcRect->right   > Src->currentDesc.Width) ||(SrcRect->right  < 0) ||
+         (SrcRect->right   < SrcRect->left)          ||(SrcRect->bottom < SrcRect->top)))
+    {
+        WARN("Application gave us bad source rectangle for Blt.\n");
+        return WINEDDERR_INVALIDRECT;
+    }
+    /* For the Destination rect, it can be out of bounds on the condition that a clipper
+     * is set for the given surface.
+     */
+    if ((/*This->clipper == NULL*/ TRUE) && (DestRect) &&
+         ((DestRect->bottom > This->currentDesc.Height)||(DestRect->bottom < 0) ||
+         (DestRect->top     > This->currentDesc.Height)||(DestRect->top    < 0) ||
+         (DestRect->left    > This->currentDesc.Width) ||(DestRect->left   < 0) ||
+         (DestRect->right   > This->currentDesc.Width) ||(DestRect->right  < 0) ||
+         (DestRect->right   < DestRect->left)          ||(DestRect->bottom < DestRect->top)))
+    {
+        WARN("Application gave us bad destination rectangle for Blt without a clipper set.\n");
+        return WINEDDERR_INVALIDRECT;
+    }
+
+    /* Now handle negative values in the rectangles. Warning: only supported for now
+    in the 'simple' cases (ie not in any stretching / rotation cases).
+
+    First, the case where nothing is to be done.
+    */
+    if ((DestRect && ((DestRect->bottom <= 0) || (DestRect->right <= 0)  ||
+          (DestRect->top    >= (int) This->currentDesc.Height) ||
+          (DestRect->left   >= (int) This->currentDesc.Width))) ||
+          ((Src != NULL) && (SrcRect != NULL) &&
+          ((SrcRect->bottom <= 0) || (SrcRect->right <= 0)     ||
+          (SrcRect->top >= (int) Src->currentDesc.Height) ||
+          (SrcRect->left >= (int) Src->currentDesc.Width))  ))
+    {
+        TRACE("Nothing to be done !\n");
+        return  WINED3D_OK;
+    }
+
+    if (DestRect)
+    {
+        xdst = *DestRect;
+    }
+    else
+    {
+        xdst.top    = 0;
+        xdst.bottom = This->currentDesc.Height;
+        xdst.left   = 0;
+        xdst.right  = This->currentDesc.Width;
+    }
+
+    if (SrcRect)
+    {
+        xsrc = *SrcRect;
+    }
+    else
+    {
+        if (Src)
+        {
+            xsrc.top    = 0;
+            xsrc.bottom = Src->currentDesc.Height;
+            xsrc.left   = 0;
+            xsrc.right  = Src->currentDesc.Width;
+        }
+        else
+        {
+            memset(&xsrc,0,sizeof(xsrc));
+        }
+    }
+
+    /* The easy case : the source-less blits.... */
+    if (Src == NULL && DestRect)
+    {
+        RECT full_rect;
+        RECT temp_rect; /* No idea if intersect rect can be the same as one of the source rect */
+
+        full_rect.left   = 0;
+        full_rect.top    = 0;
+        full_rect.right  = This->currentDesc.Width;
+        full_rect.bottom = This->currentDesc.Height;
+        IntersectRect(&temp_rect, &full_rect, DestRect);
+        xdst = temp_rect;
+    }
+    else if (DestRect)
+    {
+        /* Only handle clipping on the destination rectangle */
+        int clip_horiz = (DestRect->left < 0) || (DestRect->right  > (int) This->currentDesc.Width );
+        int clip_vert  = (DestRect->top  < 0) || (DestRect->bottom > (int) This->currentDesc.Height);
+        if (clip_vert || clip_horiz)
+        {
+            /* Now check if this is a special case or not... */
+            if ((((DestRect->bottom - DestRect->top ) != (xsrc.bottom - xsrc.top )) && clip_vert ) ||
+                   (((DestRect->right  - DestRect->left) != (xsrc.right  - xsrc.left)) && clip_horiz) ||
+                   (Flags & WINEDDBLT_DDFX))
+            {
+                WARN("Out of screen rectangle in special case. Not handled right now.\n");
+                return  WINED3D_OK;
+            }
+
+            if (clip_horiz)
+            {
+                if (DestRect->left < 0) { xsrc.left -= DestRect->left; xdst.left = 0; }
+                if (DestRect->right > This->currentDesc.Width)
+                {
+                    xsrc.right -= (DestRect->right - (int) This->currentDesc.Width);
+                    xdst.right = (int) This->currentDesc.Width;
+                }
+            }
+            if (clip_vert)
+            {
+                if (DestRect->top < 0)
+                {
+                    xsrc.top -= DestRect->top;
+                    xdst.top = 0;
+                }
+                if (DestRect->bottom > This->currentDesc.Height)
+                {
+                    xsrc.bottom -= (DestRect->bottom - (int) This->currentDesc.Height);
+                    xdst.bottom = (int) This->currentDesc.Height;
+                }
+            }
+            /* And check if after clipping something is still to be done... */
+            if ((xdst.bottom <= 0)   || (xdst.right <= 0)       ||
+                 (xdst.top   >= (int) This->currentDesc.Height)  ||
+                 (xdst.left  >= (int) This->currentDesc.Width)   ||
+                 (xsrc.bottom <= 0)   || (xsrc.right <= 0)       ||
+                 (xsrc.top >= (int) Src->currentDesc.Height)     ||
+                 (xsrc.left >= (int) Src->currentDesc.Width))
+            {
+                TRACE("Nothing to be done after clipping !\n");
+                return  WINED3D_OK;
+            }
+        }
+    }
+
+    if (Src == This)
+    {
+        IWineD3DSurface_LockRect(iface, &dlock, NULL, 0);
+        dfmt = This->resource.format;
+        slock = dlock;
+        sfmt = dfmt;
+        sEntry = getFormatDescEntry(sfmt, NULL, NULL);
+        dEntry = sEntry;
+    }
+    else
+    {
+        dfmt = This->resource.format;
+        dEntry = getFormatDescEntry(dfmt, NULL, NULL);
+        if (Src)
+        {
+            if(This->resource.format != Src->resource.format) {
+                Src = surface_convert_format(Src, dfmt);
+                if(!Src) {
+                    /* The conv function writes a FIXME */
+                    WARN("Cannot convert source surface format to dest format\n");
+                    goto release;
+                }
+            }
+            IWineD3DSurface_LockRect((IWineD3DSurface *) Src, &slock, NULL, WINED3DLOCK_READONLY);
+            sfmt = Src->resource.format;
+        }
+        sEntry = getFormatDescEntry(sfmt, NULL, NULL);
+        if (DestRect)
+            IWineD3DSurface_LockRect(iface, &dlock, &xdst, 0);
+        else
+            IWineD3DSurface_LockRect(iface, &dlock, NULL, 0);
+    }
+
+    if (!DDBltFx || !(DDBltFx->dwDDFX)) Flags &= ~WINEDDBLT_DDFX;
+
+    if (sEntry->isFourcc && dEntry->isFourcc)
+    {
+        if (!DestRect || Src == This)
+        {
+            memcpy(dlock.pBits, slock.pBits, This->resource.size);
+            goto release;
+        }
+    }
+
+    bpp = This->bytesPerPixel;
+    srcheight = xsrc.bottom - xsrc.top;
+    srcwidth = xsrc.right - xsrc.left;
+    dstheight = xdst.bottom - xdst.top;
+    dstwidth = xdst.right - xdst.left;
+    width = (xdst.right - xdst.left) * bpp;
+
+    assert(width <= dlock.Pitch);
+
+    if (DestRect && Src != This)
+        dbuf = (BYTE*)dlock.pBits;
+    else
+        dbuf = (BYTE*)dlock.pBits+(xdst.top*dlock.Pitch)+(xdst.left*bpp);
+
+    if (Flags & WINEDDBLT_WAIT)
+    {
+        Flags &= ~WINEDDBLT_WAIT;
+    }
+    if (Flags & WINEDDBLT_ASYNC)
+    {
+        static BOOL displayed = FALSE;
+        if (!displayed)
+            FIXME("Can't handle WINEDDBLT_ASYNC flag right now.\n");
+        displayed = TRUE;
+        Flags &= ~WINEDDBLT_ASYNC;
+    }
+    if (Flags & WINEDDBLT_DONOTWAIT)
+    {
+        /* WINEDDBLT_DONOTWAIT appeared in DX7 */
+        static BOOL displayed = FALSE;
+        if (!displayed)
+            FIXME("Can't handle WINEDDBLT_DONOTWAIT flag right now.\n");
+        displayed = TRUE;
+        Flags &= ~WINEDDBLT_DONOTWAIT;
+    }
+
+    /* First, all the 'source-less' blits */
+    if (Flags & WINEDDBLT_COLORFILL)
+    {
+        ret = _Blt_ColorFill(dbuf, dstwidth, dstheight, bpp,
+                             dlock.Pitch, DDBltFx->u5.dwFillColor);
+        Flags &= ~WINEDDBLT_COLORFILL;
+    }
+
+    if (Flags & WINEDDBLT_DEPTHFILL)
+    {
+        FIXME("DDBLT_DEPTHFILL needs to be implemented!\n");
+    }
+    if (Flags & WINEDDBLT_ROP)
+    {
+        /* Catch some degenerate cases here */
+        switch(DDBltFx->dwROP)
+        {
+            case BLACKNESS:
+                ret = _Blt_ColorFill(dbuf,dstwidth,dstheight,bpp,dlock.Pitch,0);
+                break;
+                case 0xAA0029: /* No-op */
+                    break;
+            case WHITENESS:
+                ret = _Blt_ColorFill(dbuf,dstwidth,dstheight,bpp,dlock.Pitch,~0);
+                break;
+                case SRCCOPY: /* well, we do that below ? */
+                    break;
+            default:
+                FIXME("Unsupported raster op: %08x  Pattern: %p\n", DDBltFx->dwROP, DDBltFx->u5.lpDDSPattern);
+                goto error;
+        }
+        Flags &= ~WINEDDBLT_ROP;
+    }
+    if (Flags & WINEDDBLT_DDROPS)
+    {
+        FIXME("\tDdraw Raster Ops: %08x  Pattern: %p\n", DDBltFx->dwDDROP, DDBltFx->u5.lpDDSPattern);
+    }
+    /* Now the 'with source' blits */
+    if (Src)
+    {
+        const BYTE *sbase;
+        int sx, xinc, sy, yinc;
+
+        if (!dstwidth || !dstheight) /* hmm... stupid program ? */
+            goto release;
+        sbase = (BYTE*)slock.pBits+(xsrc.top*slock.Pitch)+xsrc.left*bpp;
+        xinc = (srcwidth << 16) / dstwidth;
+        yinc = (srcheight << 16) / dstheight;
+
+        if (!Flags)
+        {
+            /* No effects, we can cheat here */
+            if (dstwidth == srcwidth)
+            {
+                if (dstheight == srcheight)
+                {
+                    /* No stretching in either direction. This needs to be as
+                    * fast as possible */
+                    sbuf = sbase;
+
+                    /* check for overlapping surfaces */
+                    if (Src != This || xdst.top < xsrc.top ||
+                        xdst.right <= xsrc.left || xsrc.right <= xdst.left)
+                    {
+                        /* no overlap, or dst above src, so copy from top downwards */
+                        for (y = 0; y < dstheight; y++)
+                        {
+                            memcpy(dbuf, sbuf, width);
+                            sbuf += slock.Pitch;
+                            dbuf += dlock.Pitch;
+                        }
+                    }
+                    else if (xdst.top > xsrc.top)  /* copy from bottom upwards */
+                    {
+                        sbuf += (slock.Pitch*dstheight);
+                        dbuf += (dlock.Pitch*dstheight);
+                        for (y = 0; y < dstheight; y++)
+                        {
+                            sbuf -= slock.Pitch;
+                            dbuf -= dlock.Pitch;
+                            memcpy(dbuf, sbuf, width);
+                        }
+                    }
+                    else /* src and dst overlapping on the same line, use memmove */
+                    {
+                        for (y = 0; y < dstheight; y++)
+                        {
+                            memmove(dbuf, sbuf, width);
+                            sbuf += slock.Pitch;
+                            dbuf += dlock.Pitch;
+                        }
+                    }
+                } else {
+                    /* Stretching in Y direction only */
+                    for (y = sy = 0; y < dstheight; y++, sy += yinc) {
+                        sbuf = sbase + (sy >> 16) * slock.Pitch;
+                        memcpy(dbuf, sbuf, width);
+                        dbuf += dlock.Pitch;
+                    }
+                }
+            }
+            else
+            {
+                /* Stretching in X direction */
+                int last_sy = -1;
+                for (y = sy = 0; y < dstheight; y++, sy += yinc)
+                {
+                    sbuf = sbase + (sy >> 16) * slock.Pitch;
+
+                    if ((sy >> 16) == (last_sy >> 16))
+                    {
+                        /* this sourcerow is the same as last sourcerow -
+                        * copy already stretched row
+                        */
+                        memcpy(dbuf, dbuf - dlock.Pitch, width);
+                    }
+                    else
+                    {
+#define STRETCH_ROW(type) { \
+                        const type *s = (const type *)sbuf; \
+                        type *d = (type *)dbuf; \
+                        for (x = sx = 0; x < dstwidth; x++, sx += xinc) \
+                        d[x] = s[sx >> 16]; \
+                        break; }
+
+                        switch(bpp)
+                        {
+                            case 1: STRETCH_ROW(BYTE)
+                                    case 2: STRETCH_ROW(WORD)
+                                            case 4: STRETCH_ROW(DWORD)
+                            case 3:
+                            {
+                                const BYTE *s;
+                                BYTE *d = dbuf;
+                                for (x = sx = 0; x < dstwidth; x++, sx+= xinc)
+                                {
+                                    DWORD pixel;
+
+                                    s = sbuf+3*(sx>>16);
+                                    pixel = s[0]|(s[1]<<8)|(s[2]<<16);
+                                    d[0] = (pixel    )&0xff;
+                                    d[1] = (pixel>> 8)&0xff;
+                                    d[2] = (pixel>>16)&0xff;
+                                    d+=3;
+                                }
+                                break;
+                            }
+                            default:
+                                FIXME("Stretched blit not implemented for bpp %d!\n", bpp*8);
+                                ret = WINED3DERR_NOTAVAILABLE;
+                                goto error;
+                        }
+#undef STRETCH_ROW
+                    }
+                    dbuf += dlock.Pitch;
+                    last_sy = sy;
+                }
+            }
+        }
+        else
+        {
+            LONG dstyinc = dlock.Pitch, dstxinc = bpp;
+            DWORD keylow = 0xFFFFFFFF, keyhigh = 0, keymask = 0xFFFFFFFF;
+            DWORD destkeylow = 0x0, destkeyhigh = 0xFFFFFFFF, destkeymask = 0xFFFFFFFF;
+            if (Flags & (WINEDDBLT_KEYSRC | WINEDDBLT_KEYDEST | WINEDDBLT_KEYSRCOVERRIDE | WINEDDBLT_KEYDESTOVERRIDE))
+            {
+                /* The color keying flags are checked for correctness in ddraw */
+                if (Flags & WINEDDBLT_KEYSRC)
+                {
+                    keylow  = Src->SrcBltCKey.dwColorSpaceLowValue;
+                    keyhigh = Src->SrcBltCKey.dwColorSpaceHighValue;
+                }
+                else  if (Flags & WINEDDBLT_KEYSRCOVERRIDE)
+                {
+                    keylow  = DDBltFx->ddckSrcColorkey.dwColorSpaceLowValue;
+                    keyhigh = DDBltFx->ddckSrcColorkey.dwColorSpaceHighValue;
+                }
+
+                if (Flags & WINEDDBLT_KEYDEST)
+                {
+                    /* Destination color keys are taken from the source surface ! */
+                    destkeylow  = Src->DestBltCKey.dwColorSpaceLowValue;
+                    destkeyhigh = Src->DestBltCKey.dwColorSpaceHighValue;
+                }
+                else if (Flags & WINEDDBLT_KEYDESTOVERRIDE)
+                {
+                    destkeylow  = DDBltFx->ddckDestColorkey.dwColorSpaceLowValue;
+                    destkeyhigh = DDBltFx->ddckDestColorkey.dwColorSpaceHighValue;
+                }
+
+                if(bpp == 1)
+                {
+                    keymask = 0xff;
+                }
+                else
+                {
+                    keymask = sEntry->redMask   |
+                            sEntry->greenMask |
+                            sEntry->blueMask;
+                }
+                Flags &= ~(WINEDDBLT_KEYSRC | WINEDDBLT_KEYDEST | WINEDDBLT_KEYSRCOVERRIDE | WINEDDBLT_KEYDESTOVERRIDE);
+            }
+
+            if (Flags & WINEDDBLT_DDFX)
+            {
+                LPBYTE dTopLeft, dTopRight, dBottomLeft, dBottomRight, tmp;
+                LONG tmpxy;
+                dTopLeft     = dbuf;
+                dTopRight    = dbuf+((dstwidth-1)*bpp);
+                dBottomLeft  = dTopLeft+((dstheight-1)*dlock.Pitch);
+                dBottomRight = dBottomLeft+((dstwidth-1)*bpp);
+
+                if (DDBltFx->dwDDFX & WINEDDBLTFX_ARITHSTRETCHY)
+                {
+                    /* I don't think we need to do anything about this flag */
+                    WARN("Flags=DDBLT_DDFX nothing done for WINEDDBLTFX_ARITHSTRETCHY\n");
+                }
+                if (DDBltFx->dwDDFX & WINEDDBLTFX_MIRRORLEFTRIGHT)
+                {
+                    tmp          = dTopRight;
+                    dTopRight    = dTopLeft;
+                    dTopLeft     = tmp;
+                    tmp          = dBottomRight;
+                    dBottomRight = dBottomLeft;
+                    dBottomLeft  = tmp;
+                    dstxinc = dstxinc *-1;
+                }
+                if (DDBltFx->dwDDFX & WINEDDBLTFX_MIRRORUPDOWN)
+                {
+                    tmp          = dTopLeft;
+                    dTopLeft     = dBottomLeft;
+                    dBottomLeft  = tmp;
+                    tmp          = dTopRight;
+                    dTopRight    = dBottomRight;
+                    dBottomRight = tmp;
+                    dstyinc = dstyinc *-1;
+                }
+                if (DDBltFx->dwDDFX & WINEDDBLTFX_NOTEARING)
+                {
+                    /* I don't think we need to do anything about this flag */
+                    WARN("Flags=DDBLT_DDFX nothing done for WINEDDBLTFX_NOTEARING\n");
+                }
+                if (DDBltFx->dwDDFX & WINEDDBLTFX_ROTATE180)
+                {
+                    tmp          = dBottomRight;
+                    dBottomRight = dTopLeft;
+                    dTopLeft     = tmp;
+                    tmp          = dBottomLeft;
+                    dBottomLeft  = dTopRight;
+                    dTopRight    = tmp;
+                    dstxinc = dstxinc * -1;
+                    dstyinc = dstyinc * -1;
+                }
+                if (DDBltFx->dwDDFX & WINEDDBLTFX_ROTATE270)
+                {
+                    tmp          = dTopLeft;
+                    dTopLeft     = dBottomLeft;
+                    dBottomLeft  = dBottomRight;
+                    dBottomRight = dTopRight;
+                    dTopRight    = tmp;
+                    tmpxy   = dstxinc;
+                    dstxinc = dstyinc;
+                    dstyinc = tmpxy;
+                    dstxinc = dstxinc * -1;
+                }
+                if (DDBltFx->dwDDFX & WINEDDBLTFX_ROTATE90)
+                {
+                    tmp          = dTopLeft;
+                    dTopLeft     = dTopRight;
+                    dTopRight    = dBottomRight;
+                    dBottomRight = dBottomLeft;
+                    dBottomLeft  = tmp;
+                    tmpxy   = dstxinc;
+                    dstxinc = dstyinc;
+                    dstyinc = tmpxy;
+                    dstyinc = dstyinc * -1;
+                }
+                if (DDBltFx->dwDDFX & WINEDDBLTFX_ZBUFFERBASEDEST)
+                {
+                    /* I don't think we need to do anything about this flag */
+                    WARN("Flags=WINEDDBLT_DDFX nothing done for WINEDDBLTFX_ZBUFFERBASEDEST\n");
+                }
+                dbuf = dTopLeft;
+                Flags &= ~(WINEDDBLT_DDFX);
+            }
+
+#define COPY_COLORKEY_FX(type) { \
+            const type *s; \
+            type *d = (type *)dbuf, *dx, tmp; \
+            for (y = sy = 0; y < dstheight; y++, sy += yinc) { \
+            s = (const type*)(sbase + (sy >> 16) * slock.Pitch); \
+            dx = d; \
+            for (x = sx = 0; x < dstwidth; x++, sx += xinc) { \
+            tmp = s[sx >> 16]; \
+            if (((tmp & keymask) < keylow || (tmp & keymask) > keyhigh) && \
+            ((dx[0] & destkeymask) >= destkeylow && (dx[0] & destkeymask) <= destkeyhigh)) { \
+            dx[0] = tmp; \
+        } \
+            dx = (type*)(((LPBYTE)dx)+dstxinc); \
+        } \
+            d = (type*)(((LPBYTE)d)+dstyinc); \
+        } \
+            break; }
+
+            switch (bpp) {
+                case 1: COPY_COLORKEY_FX(BYTE)
+                        case 2: COPY_COLORKEY_FX(WORD)
+                                case 4: COPY_COLORKEY_FX(DWORD)
+                case 3:
+                {
+                    const BYTE *s;
+                    BYTE *d = dbuf, *dx;
+                    for (y = sy = 0; y < dstheight; y++, sy += yinc)
+                    {
+                        sbuf = sbase + (sy >> 16) * slock.Pitch;
+                        dx = d;
+                        for (x = sx = 0; x < dstwidth; x++, sx+= xinc)
+                        {
+                            DWORD pixel, dpixel = 0;
+                            s = sbuf+3*(sx>>16);
+                            pixel = s[0]|(s[1]<<8)|(s[2]<<16);
+                            dpixel = dx[0]|(dx[1]<<8)|(dx[2]<<16);
+                            if (((pixel & keymask) < keylow || (pixel & keymask) > keyhigh) &&
+                                  ((dpixel & keymask) >= destkeylow || (dpixel & keymask) <= keyhigh))
+                            {
+                                dx[0] = (pixel    )&0xff;
+                                dx[1] = (pixel>> 8)&0xff;
+                                dx[2] = (pixel>>16)&0xff;
+                            }
+                            dx+= dstxinc;
+                        }
+                        d += dstyinc;
+                    }
+                    break;
+                }
+                default:
+                    FIXME("%s color-keyed blit not implemented for bpp %d!\n",
+                          (Flags & WINEDDBLT_KEYSRC) ? "Source" : "Destination", bpp*8);
+                    ret = WINED3DERR_NOTAVAILABLE;
+                    goto error;
+#undef COPY_COLORKEY_FX
+            }
+        }
+    }
+
+error:
+    if (Flags && FIXME_ON(d3d_surface))
+    {
+        FIXME("\tUnsupported flags: %08x\n", Flags);
+    }
+
+release:
+    IWineD3DSurface_UnlockRect(iface);
+    if (Src && Src != This) IWineD3DSurface_UnlockRect((IWineD3DSurface *) Src);
+    /* Release the converted surface if any */
+    if (Src && SrcSurface != (IWineD3DSurface *) Src) IWineD3DSurface_Release((IWineD3DSurface *) Src);
+    return ret;
+}
+
+/*****************************************************************************
+ * IWineD3DSurface::BltFast, SW emulation version
+ *
+ * This is the software implementation of BltFast, as used by GDI surfaces
+ * and as a fallback for OpenGL surfaces. This code is taken from the old
+ * DirectDraw code, and was originally written by TransGaming.
+ *
+ * Params:
+ *  dstx:
+ *  dsty:
+ *  Source: Source surface to copy from
+ *  rsrc: Source rectangle
+ *  trans: Some Flags
+ *
+ * Returns:
+ *  WINED3D_OK on success
+ *
+ *****************************************************************************/
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_BltFast(IWineD3DSurface *iface, DWORD dstx, DWORD dsty,
+        IWineD3DSurface *Source, const RECT *rsrc, DWORD trans)
+{
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface;
+    IWineD3DSurfaceImpl *Src = (IWineD3DSurfaceImpl *) Source;
+
+    int                 bpp, w, h, x, y;
+    WINED3DLOCKED_RECT  dlock,slock;
+    HRESULT             ret = WINED3D_OK;
+    RECT                rsrc2;
+    RECT                lock_src, lock_dst, lock_union;
+    const BYTE          *sbuf;
+    BYTE                *dbuf;
+    const StaticPixelFormatDesc *sEntry, *dEntry;
+
+    if (TRACE_ON(d3d_surface))
+    {
+        TRACE("(%p)->(%d,%d,%p,%p,%08x)\n", This,dstx,dsty,Src,rsrc,trans);
+
+        if (rsrc)
+        {
+            TRACE("\tsrcrect: %dx%d-%dx%d\n",rsrc->left,rsrc->top,
+                  rsrc->right,rsrc->bottom);
+        }
+        else
+        {
+            TRACE(" srcrect: NULL\n");
+        }
+    }
+
+    if ((This->Flags & SFLAG_LOCKED) ||
+            (Src->Flags & SFLAG_LOCKED))
+    {
+        WARN(" Surface is busy, returning DDERR_SURFACEBUSY\n");
+        return WINEDDERR_SURFACEBUSY;
+    }
+
+    if (!rsrc)
+    {
+        WARN("rsrc is NULL!\n");
+        rsrc2.left = 0;
+        rsrc2.top = 0;
+        rsrc2.right = Src->currentDesc.Width;
+        rsrc2.bottom = Src->currentDesc.Height;
+        rsrc = &rsrc2;
+    }
+
+    /* Check source rect for validity. Copied from normal Blt. Fixes Baldur's Gate.*/
+    if ((rsrc->bottom > Src->currentDesc.Height) || (rsrc->bottom < 0) ||
+         (rsrc->top    > Src->currentDesc.Height) || (rsrc->top    < 0) ||
+         (rsrc->left   > Src->currentDesc.Width)  || (rsrc->left   < 0) ||
+         (rsrc->right  > Src->currentDesc.Width)  || (rsrc->right  < 0) ||
+         (rsrc->right  < rsrc->left)              || (rsrc->bottom < rsrc->top))
+    {
+        WARN("Application gave us bad source rectangle for BltFast.\n");
+        return WINEDDERR_INVALIDRECT;
+    }
+
+    h = rsrc->bottom - rsrc->top;
+    if (h > This->currentDesc.Height-dsty) h = This->currentDesc.Height-dsty;
+    if (h > Src->currentDesc.Height-rsrc->top) h=Src->currentDesc.Height-rsrc->top;
+    if (h <= 0) return WINEDDERR_INVALIDRECT;
+
+    w = rsrc->right - rsrc->left;
+    if (w > This->currentDesc.Width-dstx) w = This->currentDesc.Width-dstx;
+    if (w > Src->currentDesc.Width-rsrc->left) w = Src->currentDesc.Width-rsrc->left;
+    if (w <= 0) return WINEDDERR_INVALIDRECT;
+
+    /* Now compute the locking rectangle... */
+    lock_src.left = rsrc->left;
+    lock_src.top = rsrc->top;
+    lock_src.right = lock_src.left + w;
+    lock_src.bottom = lock_src.top + h;
+
+    lock_dst.left = dstx;
+    lock_dst.top = dsty;
+    lock_dst.right = dstx + w;
+    lock_dst.bottom = dsty + h;
+
+    bpp = This->bytesPerPixel;
+
+    /* We need to lock the surfaces, or we won't get refreshes when done. */
+    if (Src == This)
+    {
+        int pitch;
+
+        UnionRect(&lock_union, &lock_src, &lock_dst);
+
+        /* Lock the union of the two rectangles */
+        ret = IWineD3DSurface_LockRect(iface, &dlock, &lock_union, 0);
+        if(ret != WINED3D_OK) goto error;
+
+        pitch = dlock.Pitch;
+        slock.Pitch = dlock.Pitch;
+
+        /* Since slock was originally copied from this surface's description, we can just reuse it */
+        assert(This->resource.allocatedMemory != NULL);
+        sbuf = This->resource.allocatedMemory + lock_src.top * pitch + lock_src.left * bpp;
+        dbuf = This->resource.allocatedMemory + lock_dst.top * pitch + lock_dst.left * bpp;
+        sEntry = getFormatDescEntry(Src->resource.format, NULL, NULL);
+        dEntry = sEntry;
+    }
+    else
+    {
+        ret = IWineD3DSurface_LockRect(Source, &slock, &lock_src, WINED3DLOCK_READONLY);
+        if(ret != WINED3D_OK) goto error;
+        ret = IWineD3DSurface_LockRect(iface, &dlock, &lock_dst, 0);
+        if(ret != WINED3D_OK) goto error;
+
+        sbuf = slock.pBits;
+        dbuf = dlock.pBits;
+        TRACE("Dst is at %p, Src is at %p\n", dbuf, sbuf);
+
+        sEntry = getFormatDescEntry(Src->resource.format, NULL, NULL);
+        dEntry = getFormatDescEntry(This->resource.format, NULL, NULL);
+    }
+
+    /* Handle first the FOURCC surfaces... */
+    if (sEntry->isFourcc && dEntry->isFourcc)
+    {
+        TRACE("Fourcc -> Fourcc copy\n");
+        if (trans)
+            FIXME("trans arg not supported when a FOURCC surface is involved\n");
+        if (dstx || dsty)
+            FIXME("offset for destination surface is not supported\n");
+        if (Src->resource.format != This->resource.format)
+        {
+            FIXME("FOURCC->FOURCC copy only supported for the same type of surface\n");
+            ret = WINED3DERR_WRONGTEXTUREFORMAT;
+            goto error;
+        }
+        /* FIXME: Watch out that the size is correct for FOURCC surfaces */
+        memcpy(dbuf, sbuf, This->resource.size);
+        goto error;
+    }
+    if (sEntry->isFourcc && !dEntry->isFourcc)
+    {
+        /* TODO: Use the libtxc_dxtn.so shared library to do
+         * software decompression
+         */
+        ERR("DXTC decompression not supported by now\n");
+        goto error;
+    }
+
+    if (trans & (WINEDDBLTFAST_SRCCOLORKEY | WINEDDBLTFAST_DESTCOLORKEY))
+    {
+        DWORD keylow, keyhigh;
+        TRACE("Color keyed copy\n");
+        if (trans & WINEDDBLTFAST_SRCCOLORKEY)
+        {
+            keylow  = Src->SrcBltCKey.dwColorSpaceLowValue;
+            keyhigh = Src->SrcBltCKey.dwColorSpaceHighValue;
+        }
+        else
+        {
+            /* I'm not sure if this is correct */
+            FIXME("WINEDDBLTFAST_DESTCOLORKEY not fully supported yet.\n");
+            keylow  = This->DestBltCKey.dwColorSpaceLowValue;
+            keyhigh = This->DestBltCKey.dwColorSpaceHighValue;
+        }
+
+#define COPYBOX_COLORKEY(type) { \
+        const type *s = (const type *)sbuf; \
+        type *d = (type *)dbuf; \
+        type tmp; \
+        for (y = 0; y < h; y++) { \
+        for (x = 0; x < w; x++) { \
+        tmp = s[x]; \
+        if (tmp < keylow || tmp > keyhigh) d[x] = tmp; \
+    } \
+        s = (const type *)((const BYTE *)s + slock.Pitch); \
+        d = (type *)((BYTE *)d + dlock.Pitch); \
+    } \
+        break; \
+    }
+
+        switch (bpp) {
+            case 1: COPYBOX_COLORKEY(BYTE)
+                    case 2: COPYBOX_COLORKEY(WORD)
+                            case 4: COPYBOX_COLORKEY(DWORD)
+            case 3:
+            {
+                const BYTE *s;
+                BYTE *d;
+                DWORD tmp;
+                s = sbuf;
+                d = dbuf;
+                for (y = 0; y < h; y++)
+                {
+                    for (x = 0; x < w * 3; x += 3)
+                    {
+                        tmp = (DWORD)s[x] + ((DWORD)s[x + 1] << 8) + ((DWORD)s[x + 2] << 16);
+                        if (tmp < keylow || tmp > keyhigh)
+                        {
+                            d[x + 0] = s[x + 0];
+                            d[x + 1] = s[x + 1];
+                            d[x + 2] = s[x + 2];
+                        }
+                    }
+                    s += slock.Pitch;
+                    d += dlock.Pitch;
+                }
+                break;
+            }
+            default:
+                FIXME("Source color key blitting not supported for bpp %d\n",bpp*8);
+                ret = WINED3DERR_NOTAVAILABLE;
+                goto error;
+        }
+#undef COPYBOX_COLORKEY
+        TRACE("Copy Done\n");
+    }
+    else
+    {
+        int width = w * bpp;
+        INT sbufpitch, dbufpitch;
+
+        TRACE("NO color key copy\n");
+        /* Handle overlapping surfaces */
+        if (sbuf < dbuf)
+        {
+            sbuf += (h - 1) * slock.Pitch;
+            dbuf += (h - 1) * dlock.Pitch;
+            sbufpitch = -slock.Pitch;
+            dbufpitch = -dlock.Pitch;
+        }
+        else
+        {
+            sbufpitch = slock.Pitch;
+            dbufpitch = dlock.Pitch;
+        }
+        for (y = 0; y < h; y++)
+        {
+            /* This is pretty easy, a line for line memcpy */
+            memmove(dbuf, sbuf, width);
+            sbuf += sbufpitch;
+            dbuf += dbufpitch;
+        }
+        TRACE("Copy done\n");
+    }
+
+error:
+    if (Src == This)
+    {
+        IWineD3DSurface_UnlockRect(iface);
+    }
+    else
+    {
+        IWineD3DSurface_UnlockRect(iface);
+        IWineD3DSurface_UnlockRect(Source);
+    }
+
+    return ret;
+}
+
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_LockRect(IWineD3DSurface *iface, WINED3DLOCKED_RECT* pLockedRect, CONST RECT* pRect, DWORD Flags)
+{
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+
+    TRACE("(%p) : rect@%p flags(%08x), output lockedRect@%p, memory@%p\n",
+          This, pRect, Flags, pLockedRect, This->resource.allocatedMemory);
+
+    pLockedRect->Pitch = IWineD3DSurface_GetPitch(iface);
+
+    if (NULL == pRect)
+    {
+        pLockedRect->pBits = This->resource.allocatedMemory;
+        This->lockedRect.left   = 0;
+        This->lockedRect.top    = 0;
+        This->lockedRect.right  = This->currentDesc.Width;
+        This->lockedRect.bottom = This->currentDesc.Height;
+
+        TRACE("Locked Rect (%p) = l %d, t %d, r %d, b %d\n",
+              &This->lockedRect, This->lockedRect.left, This->lockedRect.top,
+              This->lockedRect.right, This->lockedRect.bottom);
+    }
+    else
+    {
+        TRACE("Lock Rect (%p) = l %d, t %d, r %d, b %d\n",
+              pRect, pRect->left, pRect->top, pRect->right, pRect->bottom);
+
+        /* DXTn textures are based on compressed blocks of 4x4 pixels, each
+         * 16 bytes large (8 bytes in case of DXT1). Because of that Pitch has
+         * slightly different meaning compared to regular textures. For DXTn
+         * textures Pitch is the size of a row of blocks, 4 high and "width"
+         * long. The x offset is calculated differently as well, since moving 4
+         * pixels to the right actually moves an entire 4x4 block to right, ie
+         * 16 bytes (8 in case of DXT1). */
+        if (This->resource.format == WINED3DFMT_DXT1)
+        {
+            pLockedRect->pBits = This->resource.allocatedMemory + (pLockedRect->Pitch * pRect->top / 4) + (pRect->left * 2);
+        }
+        else if (This->resource.format == WINED3DFMT_DXT2 || This->resource.format == WINED3DFMT_DXT3 ||
+                    This->resource.format == WINED3DFMT_DXT4 || This->resource.format == WINED3DFMT_DXT5)
+        {
+            pLockedRect->pBits = This->resource.allocatedMemory + (pLockedRect->Pitch * pRect->top / 4) + (pRect->left * 4);
+        }
+        else
+        {
+            pLockedRect->pBits = This->resource.allocatedMemory +
+                    (pLockedRect->Pitch * pRect->top) +
+                    (pRect->left * This->bytesPerPixel);
+        }
+        This->lockedRect.left   = pRect->left;
+        This->lockedRect.top    = pRect->top;
+        This->lockedRect.right  = pRect->right;
+        This->lockedRect.bottom = pRect->bottom;
+    }
+
+    /* No dirtifying is needed for this surface implementation */
+    TRACE("returning memory@%p, pitch(%d)\n", pLockedRect->pBits, pLockedRect->Pitch);
+
+    return WINED3D_OK;
+}
+
+void WINAPI IWineD3DBaseSurfaceImpl_BindTexture(IWineD3DSurface *iface) {
+    ERR("Should not be called on base texture\n");
+    return;
+}
+
+/* TODO: think about moving this down to resource? */
+const void *WINAPI IWineD3DBaseSurfaceImpl_GetData(IWineD3DSurface *iface)
+{
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+
+    /* This should only be called for sysmem textures, it may be a good idea
+     * to extend this to all pools at some point in the future  */
+    if (This->resource.pool != WINED3DPOOL_SYSTEMMEM)
+    {
+        FIXME("(%p) Attempting to get system memory for a non-system memory texture\n", iface);
+    }
+    return This->resource.allocatedMemory;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/surface_gdi.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/surface_gdi.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/surface_gdi.c	(revision 16410)
@@ -0,0 +1,689 @@
+/*
+ * 2D Surface implementation without OpenGL
+ *
+ * Copyright 1997-2000 Marcus Meissner
+ * Copyright 1998-2000 Lionel Ulmer
+ * Copyright 2000-2001 TransGaming Technologies Inc.
+ * Copyright 2002-2005 Jason Edmeades
+ * Copyright 2002-2003 Raphael Junqueira
+ * Copyright 2004 Christian Costa
+ * Copyright 2005 Oliver Stieber
+ * Copyright 2006-2008 Stefan Dösinger
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "wine/port.h"
+#include "wined3d_private.h"
+
+#include <assert.h>
+#include <stdio.h>
+
+/* Use the d3d_surface debug channel to have one channel for all surfaces */
+WINE_DEFAULT_DEBUG_CHANNEL(d3d_surface);
+
+/*****************************************************************************
+ * IWineD3DSurface::Release, GDI version
+ *
+ * In general a normal COM Release method, but the GDI version doesn't have
+ * to destroy all the GL things.
+ *
+ *****************************************************************************/
+static ULONG WINAPI IWineGDISurfaceImpl_Release(IWineD3DSurface *iface) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+    ULONG ref = InterlockedDecrement(&This->resource.ref);
+    TRACE("(%p) : Releasing from %d\n", This, ref + 1);
+    if (ref == 0) {
+        TRACE("(%p) : cleaning up\n", This);
+
+        if(This->Flags & SFLAG_DIBSECTION) {
+            /* Release the DC */
+            SelectObject(This->hDC, This->dib.holdbitmap);
+            DeleteDC(This->hDC);
+            /* Release the DIB section */
+            DeleteObject(This->dib.DIBsection);
+            This->dib.bitmap_data = NULL;
+            This->resource.allocatedMemory = NULL;
+        }
+        if(This->Flags & SFLAG_USERPTR) IWineD3DSurface_SetMem(iface, NULL);
+
+        HeapFree(GetProcessHeap(), 0, This->palette9);
+
+        resource_cleanup((IWineD3DResource *)iface);
+
+        if(This->overlay_dest) {
+            list_remove(&This->overlay_entry);
+        }
+
+        TRACE("(%p) Released\n", This);
+        HeapFree(GetProcessHeap(), 0, This);
+
+    }
+    return ref;
+}
+
+/*****************************************************************************
+ * IWineD3DSurface::PreLoad, GDI version
+ *
+ * This call is unsupported on GDI surfaces, if it's called something went
+ * wrong in the parent library. Write an informative warning
+ *
+ *****************************************************************************/
+static void WINAPI
+IWineGDISurfaceImpl_PreLoad(IWineD3DSurface *iface)
+{
+    ERR("(%p): PreLoad is not supported on X11 surfaces!\n", iface);
+    ERR("(%p): Most likely the parent library did something wrong.\n", iface);
+    ERR("(%p): Please report to wine-devel\n", iface);
+}
+
+/*****************************************************************************
+ * IWineD3DSurface::UnLoad, GDI version
+ *
+ * This call is unsupported on GDI surfaces, if it's called something went
+ * wrong in the parent library. Write an informative warning.
+ *
+ *****************************************************************************/
+static void WINAPI IWineGDISurfaceImpl_UnLoad(IWineD3DSurface *iface)
+{
+    ERR("(%p): UnLoad is not supported on X11 surfaces!\n", iface);
+    ERR("(%p): Most likely the parent library did something wrong.\n", iface);
+    ERR("(%p): Please report to wine-devel\n", iface);
+}
+
+/*****************************************************************************
+ * IWineD3DSurface::LockRect, GDI version
+ *
+ * Locks the surface and returns a pointer to the surface memory
+ *
+ * Params:
+ *  pLockedRect: Address to return the locking info at
+ *  pRect: Rectangle to lock
+ *  Flags: Some flags
+ *
+ * Returns:
+ *  WINED3D_OK on success
+ *  WINED3DERR_INVALIDCALL on errors
+ *
+ *****************************************************************************/
+static HRESULT WINAPI
+IWineGDISurfaceImpl_LockRect(IWineD3DSurface *iface,
+                             WINED3DLOCKED_RECT* pLockedRect,
+                             CONST RECT* pRect,
+                             DWORD Flags)
+{
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+
+    /* Already locked? */
+    if(This->Flags & SFLAG_LOCKED)
+    {
+        ERR("(%p) Surface already locked\n", This);
+        /* What should I return here? */
+        return WINED3DERR_INVALIDCALL;
+    }
+    This->Flags |= SFLAG_LOCKED;
+
+    if(!This->resource.allocatedMemory) {
+        /* This happens on gdi surfaces if the application set a user pointer and resets it.
+         * Recreate the DIB section
+         */
+        IWineD3DBaseSurfaceImpl_CreateDIBSection(iface);
+        This->resource.allocatedMemory = This->dib.bitmap_data;
+    }
+
+    return IWineD3DBaseSurfaceImpl_LockRect(iface, pLockedRect, pRect, Flags);
+}
+
+/*****************************************************************************
+ * IWineD3DSurface::UnlockRect, GDI version
+ *
+ * Unlocks a surface. This implementation doesn't do much, except updating
+ * the window if the front buffer is unlocked
+ *
+ * Returns:
+ *  WINED3D_OK on success
+ *  WINED3DERR_INVALIDCALL on failure
+ *
+ *****************************************************************************/
+static HRESULT WINAPI
+IWineGDISurfaceImpl_UnlockRect(IWineD3DSurface *iface)
+{
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+    IWineD3DSwapChainImpl *swapchain = NULL;
+    TRACE("(%p)\n", This);
+
+    if (!(This->Flags & SFLAG_LOCKED))
+    {
+        WARN("trying to Unlock an unlocked surf@%p\n", This);
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    /* Can be useful for debugging */
+#if 0
+        {
+            static unsigned int gen = 0;
+            char buffer[4096];
+            ++gen;
+            if ((gen % 10) == 0) {
+                snprintf(buffer, sizeof(buffer), "/tmp/surface%p_type%u_level%u_%u.ppm", This, This->glDescription.target, This->glDescription.level, gen);
+                IWineD3DSurfaceImpl_SaveSnapshot(iface, buffer);
+            }
+            /*
+             * debugging crash code
+            if (gen == 250) {
+              void** test = NULL;
+              *test = 0;
+            }
+            */
+        }
+#endif
+
+    /* Tell the swapchain to update the screen */
+    if (SUCCEEDED(IWineD3DSurface_GetContainer(iface, &IID_IWineD3DSwapChain, (void **)&swapchain)))
+    {
+        x11_copy_to_screen(swapchain, &This->lockedRect);
+        IWineD3DSwapChain_Release((IWineD3DSwapChain *) swapchain);
+    }
+
+    This->Flags &= ~SFLAG_LOCKED;
+    memset(&This->lockedRect, 0, sizeof(RECT));
+    return WINED3D_OK;
+}
+
+/*****************************************************************************
+ * IWineD3DSurface::Flip, GDI version
+ *
+ * Flips 2 flipping enabled surfaces. Determining the 2 targets is done by
+ * the parent library. This implementation changes the data pointers of the
+ * surfaces and copies the new front buffer content to the screen
+ *
+ * Params:
+ *  override: Flipping target(e.g. back buffer)
+ *
+ * Returns:
+ *  WINED3D_OK on success
+ *
+ *****************************************************************************/
+static HRESULT WINAPI
+IWineGDISurfaceImpl_Flip(IWineD3DSurface *iface,
+                         IWineD3DSurface *override,
+                         DWORD Flags)
+{
+    IWineD3DSwapChainImpl *swapchain = NULL;
+    HRESULT hr;
+
+    if(FAILED(IWineD3DSurface_GetContainer(iface, &IID_IWineD3DSwapChain, (void **)&swapchain)))
+    {
+        ERR("Flipped surface is not on a swapchain\n");
+        return WINEDDERR_NOTFLIPPABLE;
+    }
+
+    hr = IWineD3DSwapChain_Present((IWineD3DSwapChain *) swapchain, NULL, NULL, 0, NULL, 0);
+    IWineD3DSwapChain_Release((IWineD3DSwapChain *) swapchain);
+    return hr;
+}
+
+/*****************************************************************************
+ * IWineD3DSurface::LoadTexture, GDI version
+ *
+ * This is mutually unsupported by GDI surfaces
+ *
+ * Returns:
+ *  D3DERR_INVALIDCALL
+ *
+ *****************************************************************************/
+static HRESULT WINAPI
+IWineGDISurfaceImpl_LoadTexture(IWineD3DSurface *iface, BOOL srgb_mode)
+{
+    ERR("Unsupported on X11 surfaces\n");
+    return WINED3DERR_INVALIDCALL;
+}
+
+/*****************************************************************************
+ * IWineD3DSurface::SaveSnapshot, GDI version
+ *
+ * This method writes the surface's contents to the in tga format to the
+ * file specified in filename.
+ *
+ * Params:
+ *  filename: File to write to
+ *
+ * Returns:
+ *  WINED3DERR_INVALIDCALL if the file couldn't be opened
+ *  WINED3D_OK on success
+ *
+ *****************************************************************************/
+static int get_shift(DWORD color_mask) {
+    int shift = 0;
+    while (color_mask > 0xFF) {
+        color_mask >>= 1;
+        shift += 1;
+    }
+    while ((color_mask & 0x80) == 0) {
+        color_mask <<= 1;
+        shift -= 1;
+    }
+    return shift;
+}
+
+
+static HRESULT WINAPI
+IWineGDISurfaceImpl_SaveSnapshot(IWineD3DSurface *iface,
+const char* filename)
+{
+    FILE* f = NULL;
+    UINT y = 0, x = 0;
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+    static char *output = NULL;
+    static UINT size = 0;
+    const StaticPixelFormatDesc *formatEntry = getFormatDescEntry(This->resource.format, NULL, NULL);
+
+    if (This->pow2Width > size) {
+        output = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, This->pow2Width * 3);
+        size = This->pow2Width;
+    }
+
+
+    f = fopen(filename, "w+");
+    if (NULL == f) {
+        ERR("opening of %s failed with\n", filename);
+        return WINED3DERR_INVALIDCALL;
+    }
+    fprintf(f, "P6\n%d %d\n255\n", This->pow2Width, This->pow2Height);
+
+    if (This->resource.format == WINED3DFMT_P8) {
+        unsigned char table[256][3];
+        int i;
+
+        if (This->palette == NULL) {
+            fclose(f);
+            return WINED3DERR_INVALIDCALL;
+        }
+        for (i = 0; i < 256; i++) {
+            table[i][0] = This->palette->palents[i].peRed;
+            table[i][1] = This->palette->palents[i].peGreen;
+            table[i][2] = This->palette->palents[i].peBlue;
+        }
+        for (y = 0; y < This->pow2Height; y++) {
+            unsigned char *src = This->resource.allocatedMemory + (y * 1 * IWineD3DSurface_GetPitch(iface));
+            for (x = 0; x < This->pow2Width; x++) {
+                unsigned char color = *src;
+                src += 1;
+
+                output[3 * x + 0] = table[color][0];
+                output[3 * x + 1] = table[color][1];
+                output[3 * x + 2] = table[color][2];
+            }
+            fwrite(output, 3 * This->pow2Width, 1, f);
+        }
+    } else {
+        int red_shift, green_shift, blue_shift, pix_width, alpha_shift;
+
+        pix_width = This->bytesPerPixel;
+
+        red_shift = get_shift(formatEntry->redMask);
+        green_shift = get_shift(formatEntry->greenMask);
+        blue_shift = get_shift(formatEntry->blueMask);
+        alpha_shift = get_shift(formatEntry->alphaMask);
+
+        for (y = 0; y < This->pow2Height; y++) {
+            const unsigned char *src = This->resource.allocatedMemory + (y * 1 * IWineD3DSurface_GetPitch(iface));
+            for (x = 0; x < This->pow2Width; x++) {	    
+                unsigned int color;
+                unsigned int comp;
+                int i;
+
+                color = 0;
+                for (i = 0; i < pix_width; i++) {
+                    color |= src[i] << (8 * i);
+                }
+                src += 1 * pix_width;
+
+                comp = color & formatEntry->redMask;
+                output[3 * x + 0] = red_shift > 0 ? comp >> red_shift : comp << -red_shift;
+                comp = color & formatEntry->greenMask;
+                output[3 * x + 1] = green_shift > 0 ? comp >> green_shift : comp << -green_shift;
+                comp = color & formatEntry->alphaMask;
+                output[3 * x + 2] = alpha_shift > 0 ? comp >> alpha_shift : comp << -alpha_shift;
+            }
+            fwrite(output, 3 * This->pow2Width, 1, f);
+        }
+    }
+    fclose(f);
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineGDISurfaceImpl_GetDC(IWineD3DSurface *iface, HDC *pHDC) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+    WINED3DLOCKED_RECT lock;
+    HRESULT hr;
+    RGBQUAD col[256];
+
+    TRACE("(%p)->(%p)\n",This,pHDC);
+
+    if(This->Flags & SFLAG_USERPTR) {
+        ERR("Not supported on surfaces with an application-provided surfaces\n");
+        return WINEDDERR_NODC;
+    }
+
+    /* Give more detailed info for ddraw */
+    if (This->Flags & SFLAG_DCINUSE)
+        return WINEDDERR_DCALREADYCREATED;
+
+    /* Can't GetDC if the surface is locked */
+    if (This->Flags & SFLAG_LOCKED)
+        return WINED3DERR_INVALIDCALL;
+
+    memset(&lock, 0, sizeof(lock)); /* To be sure */
+
+    /* Should have a DIB section already */
+
+    /* Lock the surface */
+    hr = IWineD3DSurface_LockRect(iface,
+                                  &lock,
+                                  NULL,
+                                  0);
+    if(FAILED(hr)) {
+        ERR("IWineD3DSurface_LockRect failed with hr = %08x\n", hr);
+        /* keep the dib section */
+        return hr;
+    }
+
+    if(This->resource.format == WINED3DFMT_P8 ||
+       This->resource.format == WINED3DFMT_A8P8) {
+        unsigned int n;
+        const PALETTEENTRY *pal = NULL;
+
+        if(This->palette) {
+            pal = This->palette->palents;
+        } else {
+            IWineD3DSurfaceImpl *dds_primary;
+            IWineD3DSwapChainImpl *swapchain;
+            swapchain = (IWineD3DSwapChainImpl *)This->resource.wineD3DDevice->swapchains[0];
+            dds_primary = (IWineD3DSurfaceImpl *)swapchain->frontBuffer;
+            if (dds_primary && dds_primary->palette)
+                pal = dds_primary->palette->palents;
+        }
+
+        if (pal) {
+            for (n=0; n<256; n++) {
+                col[n].rgbRed   = pal[n].peRed;
+                col[n].rgbGreen = pal[n].peGreen;
+                col[n].rgbBlue  = pal[n].peBlue;
+                col[n].rgbReserved = 0;
+            }
+            SetDIBColorTable(This->hDC, 0, 256, col);
+        }
+    }
+
+    *pHDC = This->hDC;
+    TRACE("returning %p\n",*pHDC);
+    This->Flags |= SFLAG_DCINUSE;
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineGDISurfaceImpl_ReleaseDC(IWineD3DSurface *iface, HDC hDC) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+
+    TRACE("(%p)->(%p)\n",This,hDC);
+
+    if (!(This->Flags & SFLAG_DCINUSE))
+        return WINED3DERR_INVALIDCALL;
+
+    if (This->hDC !=hDC) {
+        WARN("Application tries to release an invalid DC(%p), surface dc is %p\n", hDC, This->hDC);
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    /* we locked first, so unlock now */
+    IWineD3DSurface_UnlockRect(iface);
+
+    This->Flags &= ~SFLAG_DCINUSE;
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineGDISurfaceImpl_RealizePalette(IWineD3DSurface *iface) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface;
+    RGBQUAD col[256];
+    IWineD3DPaletteImpl *pal = This->palette;
+    unsigned int n;
+    IWineD3DSwapChainImpl *swapchain;
+    TRACE("(%p)\n", This);
+
+    if (!pal) return WINED3D_OK;
+
+    if(This->Flags & SFLAG_DIBSECTION) {
+        TRACE("(%p): Updating the hdc's palette\n", This);
+        for (n=0; n<256; n++) {
+            col[n].rgbRed   = pal->palents[n].peRed;
+            col[n].rgbGreen = pal->palents[n].peGreen;
+            col[n].rgbBlue  = pal->palents[n].peBlue;
+            col[n].rgbReserved = 0;
+        }
+        SetDIBColorTable(This->hDC, 0, 256, col);
+    }
+
+    /* Update the image because of the palette change. Some games like e.g Red Alert
+       call SetEntries a lot to implement fading. */
+    /* Tell the swapchain to update the screen */
+    if (SUCCEEDED(IWineD3DSurface_GetContainer(iface, &IID_IWineD3DSwapChain, (void **)&swapchain)))
+    {
+        x11_copy_to_screen(swapchain, NULL);
+        IWineD3DSwapChain_Release((IWineD3DSwapChain *) swapchain);
+    }
+
+    return WINED3D_OK;
+}
+
+/*****************************************************************************
+ * IWineD3DSurface::PrivateSetup, GDI version
+ *
+ * Initializes the GDI surface, aka creates the DIB section we render to
+ * The DIB section creation is done by calling GetDC, which will create the
+ * section and releasing the dc to allow the app to use it. The dib section
+ * will stay until the surface is released
+ *
+ * GDI surfaces do not need to be a power of 2 in size, so the pow2 sizes
+ * are set to the real sizes to save memory. The NONPOW2 flag is unset to
+ * avoid confusion in the shared surface code.
+ *
+ * Returns:
+ *  WINED3D_OK on success
+ *  The return values of called methods on failure
+ *
+ *****************************************************************************/
+static HRESULT WINAPI
+IWineGDISurfaceImpl_PrivateSetup(IWineD3DSurface *iface)
+{
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface;
+
+    if(This->resource.usage & WINED3DUSAGE_OVERLAY)
+    {
+        ERR("(%p) Overlays not yet supported by GDI surfaces\n", This);
+        return WINED3DERR_INVALIDCALL;
+    }
+    /* Sysmem textures have memory already allocated -
+     * release it, this avoids an unnecessary memcpy
+     */
+    HeapFree(GetProcessHeap(), 0, This->resource.heapMemory);
+    This->resource.allocatedMemory = NULL;
+    This->resource.heapMemory = NULL;
+
+    /* We don't mind the nonpow2 stuff in GDI */
+    This->pow2Width = This->currentDesc.Width;
+    This->pow2Height = This->currentDesc.Height;
+
+    IWineD3DBaseSurfaceImpl_CreateDIBSection(iface);
+    This->resource.allocatedMemory = This->dib.bitmap_data;
+
+    return WINED3D_OK;
+}
+
+static void WINAPI IWineGDISurfaceImpl_GetGlDesc(IWineD3DSurface *iface, glDescriptor **glDescription) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
+    FIXME("(%p) : Should not be called on a GDI surface\n", This);
+    *glDescription = NULL;
+}
+
+static HRESULT WINAPI IWineGDISurfaceImpl_AddDirtyRect(IWineD3DSurface *iface, CONST RECT* pDirtyRect) {
+    /* GDI surface data can only be in one location, the system memory dib section. So they are
+     * always clean by definition.
+     */
+    TRACE("No dirtification in GDI surfaces\n");
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineGDISurfaceImpl_SetMem(IWineD3DSurface *iface, void *Mem) {
+    IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface;
+
+    /* Render targets depend on their hdc, and we can't create an hdc on a user pointer */
+    if(This->resource.usage & WINED3DUSAGE_RENDERTARGET) {
+        ERR("Not supported on render targets\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    if(This->Flags & (SFLAG_LOCKED | SFLAG_DCINUSE)) {
+        WARN("Surface is locked or the HDC is in use\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    if(Mem && Mem != This->resource.allocatedMemory) {
+        void *release = NULL;
+
+        /* Do I have to copy the old surface content? */
+        if(This->Flags & SFLAG_DIBSECTION) {
+                /* Release the DC. No need to hold the critical section for the update
+            * Thread because this thread runs only on front buffers, but this method
+            * fails for render targets in the check above.
+                */
+            SelectObject(This->hDC, This->dib.holdbitmap);
+            DeleteDC(This->hDC);
+            /* Release the DIB section */
+            DeleteObject(This->dib.DIBsection);
+            This->dib.bitmap_data = NULL;
+            This->resource.allocatedMemory = NULL;
+            This->hDC = NULL;
+            This->Flags &= ~SFLAG_DIBSECTION;
+        } else if(!(This->Flags & SFLAG_USERPTR)) {
+            release = This->resource.allocatedMemory;
+        }
+        This->resource.allocatedMemory = Mem;
+        This->Flags |= SFLAG_USERPTR | SFLAG_INSYSMEM;
+
+        /* Now free the old memory if any */
+        HeapFree(GetProcessHeap(), 0, release);
+    } else if(This->Flags & SFLAG_USERPTR) {
+        /* LockRect and GetDC will re-create the dib section and allocated memory */
+        This->resource.allocatedMemory = NULL;
+        This->Flags &= ~SFLAG_USERPTR;
+    }
+    return WINED3D_OK;
+}
+
+/***************************
+ *
+ ***************************/
+static void WINAPI IWineGDISurfaceImpl_ModifyLocation(IWineD3DSurface *iface, DWORD flag, BOOL persistent) {
+    TRACE("(%p)->(%s, %s)\n", iface,
+          flag == SFLAG_INSYSMEM ? "SFLAG_INSYSMEM" : flag == SFLAG_INDRAWABLE ? "SFLAG_INDRAWABLE" : "SFLAG_INTEXTURE",
+          persistent ? "TRUE" : "FALSE");
+    /* GDI surfaces can be in system memory only */
+    if(flag != SFLAG_INSYSMEM) {
+        ERR("GDI Surface requested in gl %s memory\n", flag == SFLAG_INDRAWABLE ? "drawable" : "texture");
+    }
+}
+
+static HRESULT WINAPI IWineGDISurfaceImpl_LoadLocation(IWineD3DSurface *iface, DWORD flag, const RECT *rect) {
+    if(flag != SFLAG_INSYSMEM) {
+        ERR("GDI Surface requested to be copied to gl %s\n", flag == SFLAG_INTEXTURE ? "texture" : "drawable");
+    } else {
+        TRACE("Surface requested in surface memory\n");
+    }
+    return WINED3D_OK;
+}
+
+static WINED3DSURFTYPE WINAPI IWineGDISurfaceImpl_GetImplType(IWineD3DSurface *iface) {
+    return SURFACE_GDI;
+}
+
+static HRESULT WINAPI IWineGDISurfaceImpl_DrawOverlay(IWineD3DSurface *iface) {
+    FIXME("GDI surfaces can't draw overlays yet\n");
+    return E_FAIL;
+}
+
+/* FIXME: This vtable should not use any IWineD3DSurface* implementation functions,
+ * only IWineD3DBaseSurface and IWineGDISurface ones.
+ */
+const IWineD3DSurfaceVtbl IWineGDISurface_Vtbl =
+{
+    /* IUnknown */
+    IWineD3DBaseSurfaceImpl_QueryInterface,
+    IWineD3DBaseSurfaceImpl_AddRef,
+    IWineGDISurfaceImpl_Release,
+    /* IWineD3DResource */
+    IWineD3DBaseSurfaceImpl_GetParent,
+    IWineD3DBaseSurfaceImpl_GetDevice,
+    IWineD3DBaseSurfaceImpl_SetPrivateData,
+    IWineD3DBaseSurfaceImpl_GetPrivateData,
+    IWineD3DBaseSurfaceImpl_FreePrivateData,
+    IWineD3DBaseSurfaceImpl_SetPriority,
+    IWineD3DBaseSurfaceImpl_GetPriority,
+    IWineGDISurfaceImpl_PreLoad,
+    IWineGDISurfaceImpl_UnLoad,
+    IWineD3DBaseSurfaceImpl_GetType,
+    /* IWineD3DSurface */
+    IWineD3DBaseSurfaceImpl_GetContainer,
+    IWineD3DBaseSurfaceImpl_GetDesc,
+    IWineGDISurfaceImpl_LockRect,
+    IWineGDISurfaceImpl_UnlockRect,
+    IWineGDISurfaceImpl_GetDC,
+    IWineGDISurfaceImpl_ReleaseDC,
+    IWineGDISurfaceImpl_Flip,
+    IWineD3DBaseSurfaceImpl_Blt,
+    IWineD3DBaseSurfaceImpl_GetBltStatus,
+    IWineD3DBaseSurfaceImpl_GetFlipStatus,
+    IWineD3DBaseSurfaceImpl_IsLost,
+    IWineD3DBaseSurfaceImpl_Restore,
+    IWineD3DBaseSurfaceImpl_BltFast,
+    IWineD3DBaseSurfaceImpl_GetPalette,
+    IWineD3DBaseSurfaceImpl_SetPalette,
+    IWineGDISurfaceImpl_RealizePalette,
+    IWineD3DBaseSurfaceImpl_SetColorKey,
+    IWineD3DBaseSurfaceImpl_GetPitch,
+    IWineGDISurfaceImpl_SetMem,
+    IWineD3DBaseSurfaceImpl_SetOverlayPosition,
+    IWineD3DBaseSurfaceImpl_GetOverlayPosition,
+    IWineD3DBaseSurfaceImpl_UpdateOverlayZOrder,
+    IWineD3DBaseSurfaceImpl_UpdateOverlay,
+    IWineD3DBaseSurfaceImpl_SetClipper,
+    IWineD3DBaseSurfaceImpl_GetClipper,
+    /* Internal use: */
+    IWineGDISurfaceImpl_AddDirtyRect,
+    IWineGDISurfaceImpl_LoadTexture,
+    IWineD3DBaseSurfaceImpl_BindTexture,
+    IWineGDISurfaceImpl_SaveSnapshot,
+    IWineD3DBaseSurfaceImpl_SetContainer,
+    IWineGDISurfaceImpl_GetGlDesc,
+    IWineD3DBaseSurfaceImpl_GetData,
+    IWineD3DBaseSurfaceImpl_SetFormat,
+    IWineGDISurfaceImpl_PrivateSetup,
+    IWineGDISurfaceImpl_ModifyLocation,
+    IWineGDISurfaceImpl_LoadLocation,
+    IWineGDISurfaceImpl_GetImplType,
+    IWineGDISurfaceImpl_DrawOverlay
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/swapchain.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/swapchain.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/swapchain.c	(revision 16410)
@@ -0,0 +1,410 @@
+/*
+ *IDirect3DSwapChain9 implementation
+ *
+ *Copyright 2002-2003 Jason Edmeades
+ *Copyright 2002-2003 Raphael Junqueira
+ *Copyright 2005 Oliver Stieber
+ *Copyright 2007-2008 Stefan Dösinger for CodeWeavers
+ *
+ *This library is free software; you can redistribute it and/or
+ *modify it under the terms of the GNU Lesser General Public
+ *License as published by the Free Software Foundation; either
+ *version 2.1 of the License, or (at your option) any later version.
+ *
+ *This library is distributed in the hope that it will be useful,
+ *but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *Lesser General Public License for more details.
+ *
+ *You should have received a copy of the GNU Lesser General Public
+ *License along with this library; if not, write to the Free Software
+ *Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "wined3d_private.h"
+
+
+/*TODO: some of the additional parameters may be required to
+    set the gamma ramp (for some weird reason microsoft have left swap gammaramp in device
+    but it operates on a swapchain, it may be a good idea to move it to IWineD3DSwapChain for IWineD3D)*/
+
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d);
+WINE_DECLARE_DEBUG_CHANNEL(fps);
+
+#define GLINFO_LOCATION This->wineD3DDevice->adapter->gl_info
+
+/*IWineD3DSwapChain parts follow: */
+static void WINAPI IWineD3DSwapChainImpl_Destroy(IWineD3DSwapChain *iface, D3DCB_DESTROYSURFACEFN D3DCB_DestroyRenderTarget) {
+    IWineD3DSwapChainImpl *This = (IWineD3DSwapChainImpl *)iface;
+    WINED3DDISPLAYMODE mode;
+    unsigned int i;
+
+    TRACE("Destroying swapchain %p\n", iface);
+
+    IWineD3DSwapChain_SetGammaRamp(iface, 0, &This->orig_gamma);
+
+    /* release the ref to the front and back buffer parents */
+    if(This->frontBuffer) {
+        IWineD3DSurface_SetContainer(This->frontBuffer, 0);
+        if(D3DCB_DestroyRenderTarget(This->frontBuffer) > 0) {
+            FIXME("(%p) Something's still holding the front buffer\n",This);
+        }
+    }
+
+    if(This->backBuffer) {
+        UINT i;
+        for(i = 0; i < This->presentParms.BackBufferCount; i++) {
+            IWineD3DSurface_SetContainer(This->backBuffer[i], 0);
+            if(D3DCB_DestroyRenderTarget(This->backBuffer[i]) > 0) {
+                FIXME("(%p) Something's still holding the back buffer\n",This);
+            }
+        }
+        HeapFree(GetProcessHeap(), 0, This->backBuffer);
+    }
+
+    for(i = 0; i < This->num_contexts; i++) {
+        DestroyContext(This->wineD3DDevice, This->context[i]);
+    }
+    /* Restore the screen resolution if we rendered in fullscreen
+     * This will restore the screen resolution to what it was before creating the swapchain. In case of d3d8 and d3d9
+     * this will be the original desktop resolution. In case of d3d7 this will be a NOP because ddraw sets the resolution
+     * before starting up Direct3D, thus orig_width and orig_height will be equal to the modes in the presentation params
+     */
+    if(This->presentParms.Windowed == FALSE && This->presentParms.AutoRestoreDisplayMode) {
+        mode.Width = This->orig_width;
+        mode.Height = This->orig_height;
+        mode.RefreshRate = 0;
+        mode.Format = This->orig_fmt;
+        IWineD3DDevice_SetDisplayMode((IWineD3DDevice *) This->wineD3DDevice, 0, &mode);
+    }
+    HeapFree(GetProcessHeap(), 0, This->context);
+
+    HeapFree(GetProcessHeap(), 0, This);
+}
+
+static HRESULT WINAPI IWineD3DSwapChainImpl_Present(IWineD3DSwapChain *iface, CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride, CONST RGNDATA *pDirtyRegion, DWORD dwFlags) {
+    IWineD3DSwapChainImpl *This = (IWineD3DSwapChainImpl *)iface;
+    unsigned int sync;
+    int retval;
+
+
+    ActivateContext(This->wineD3DDevice, This->backBuffer[0], CTXUSAGE_RESOURCELOAD);
+
+    /* Render the cursor onto the back buffer, using our nifty directdraw blitting code :-) */
+    if(This->wineD3DDevice->bCursorVisible && This->wineD3DDevice->cursorTexture) {
+        IWineD3DSurfaceImpl cursor;
+        RECT destRect = {This->wineD3DDevice->xScreenSpace - This->wineD3DDevice->xHotSpot,
+                         This->wineD3DDevice->yScreenSpace - This->wineD3DDevice->yHotSpot,
+                         This->wineD3DDevice->xScreenSpace + This->wineD3DDevice->cursorWidth - This->wineD3DDevice->xHotSpot,
+                         This->wineD3DDevice->yScreenSpace + This->wineD3DDevice->cursorHeight - This->wineD3DDevice->yHotSpot};
+        TRACE("Rendering the cursor. Creating fake surface at %p\n", &cursor);
+        /* Build a fake surface to call the Blitting code. It is not possible to use the interface passed by
+         * the application because we are only supposed to copy the information out. Using a fake surface
+         * allows to use the Blitting engine and avoid copying the whole texture -> render target blitting code.
+         */
+        memset(&cursor, 0, sizeof(cursor));
+        cursor.lpVtbl = &IWineD3DSurface_Vtbl;
+        cursor.resource.ref = 1;
+        cursor.resource.wineD3DDevice = This->wineD3DDevice;
+        cursor.resource.pool = WINED3DPOOL_SCRATCH;
+        cursor.resource.format = WINED3DFMT_A8R8G8B8;
+        cursor.resource.resourceType = WINED3DRTYPE_SURFACE;
+        cursor.glDescription.textureName = This->wineD3DDevice->cursorTexture;
+        cursor.glDescription.target = GL_TEXTURE_2D;
+        cursor.glDescription.level = 0;
+        cursor.currentDesc.Width = This->wineD3DDevice->cursorWidth;
+        cursor.currentDesc.Height = This->wineD3DDevice->cursorHeight;
+        cursor.glRect.left = 0;
+        cursor.glRect.top = 0;
+        cursor.glRect.right = cursor.currentDesc.Width;
+        cursor.glRect.bottom = cursor.currentDesc.Height;
+        /* The cursor must have pow2 sizes */
+        cursor.pow2Width = cursor.currentDesc.Width;
+        cursor.pow2Height = cursor.currentDesc.Height;
+        /* The surface is in the texture */
+        cursor.Flags |= SFLAG_INTEXTURE;
+        /* DDBLT_KEYSRC will cause BltOverride to enable the alpha test with GL_NOTEQUAL, 0.0,
+         * which is exactly what we want :-)
+         */
+        if (This->presentParms.Windowed) {
+            MapWindowPoints(NULL, This->win_handle, (LPPOINT)&destRect, 2);
+        }
+        IWineD3DSurface_Blt(This->backBuffer[0], &destRect, (IWineD3DSurface *) &cursor, NULL, WINEDDBLT_KEYSRC, NULL, WINED3DTEXF_NONE);
+    }
+    if(This->wineD3DDevice->logo_surface) {
+        /* Blit the logo into the upper left corner of the drawable */
+        IWineD3DSurface_BltFast(This->backBuffer[0], 0, 0, This->wineD3DDevice->logo_surface, NULL, WINEDDBLTFAST_SRCCOLORKEY);
+    }
+
+    if (pSourceRect || pDestRect) FIXME("Unhandled present rects %s/%s\n", wine_dbgstr_rect(pSourceRect), wine_dbgstr_rect(pDestRect));
+    /* TODO: If only source rect or dest rect are supplied then clip the window to match */
+    TRACE("presetting HDC %p\n", This->context[0]->hdc);
+
+    /* Don't call checkGLcall, as glGetError is not applicable here */
+    if (hDestWindowOverride && This->win_handle != hDestWindowOverride) {
+        IWineD3DSwapChain_SetDestWindowOverride(iface, hDestWindowOverride);
+    }
+
+    SwapBuffers(This->context[0]->hdc); /* TODO: cycle through the swapchain buffers */
+
+    TRACE("SwapBuffers called, Starting new frame\n");
+    /* FPS support */
+    if (TRACE_ON(fps))
+    {
+        DWORD time = GetTickCount();
+        This->frames++;
+        /* every 1.5 seconds */
+        if (time - This->prev_time > 1500) {
+            TRACE_(fps)("%p @ approx %.2ffps\n", This, 1000.0*This->frames/(time - This->prev_time));
+            This->prev_time = time;
+            This->frames = 0;
+        }
+    }
+
+#if defined(FRAME_DEBUGGING)
+{
+    if (GetFileAttributesA("C:\\D3DTRACE") != INVALID_FILE_ATTRIBUTES) {
+        if (!isOn) {
+            isOn = TRUE;
+            FIXME("Enabling D3D Trace\n");
+            __WINE_SET_DEBUGGING(__WINE_DBCL_TRACE, __wine_dbch_d3d, 1);
+#if defined(SHOW_FRAME_MAKEUP)
+            FIXME("Singe Frame snapshots Starting\n");
+            isDumpingFrames = TRUE;
+            ENTER_GL();
+            glClear(GL_COLOR_BUFFER_BIT);
+            LEAVE_GL();
+#endif
+
+#if defined(SINGLE_FRAME_DEBUGGING)
+        } else {
+#if defined(SHOW_FRAME_MAKEUP)
+            FIXME("Singe Frame snapshots Finishing\n");
+            isDumpingFrames = FALSE;
+#endif
+            FIXME("Singe Frame trace complete\n");
+            DeleteFileA("C:\\D3DTRACE");
+            __WINE_SET_DEBUGGING(__WINE_DBCL_TRACE, __wine_dbch_d3d, 0);
+#endif
+        }
+    } else {
+        if (isOn) {
+            isOn = FALSE;
+#if defined(SHOW_FRAME_MAKEUP)
+            FIXME("Single Frame snapshots Finishing\n");
+            isDumpingFrames = FALSE;
+#endif
+            FIXME("Disabling D3D Trace\n");
+            __WINE_SET_DEBUGGING(__WINE_DBCL_TRACE, __wine_dbch_d3d, 0);
+        }
+    }
+}
+#endif
+
+    /* This is disabled, but the code left in for debug purposes.
+     *
+     * Since we're allowed to modify the new back buffer on a D3DSWAPEFFECT_DISCARD flip,
+     * we can clear it with some ugly color to make bad drawing visible and ease debugging.
+     * The Debug runtime does the same on Windows. However, a few games do not redraw the
+     * screen properly, like Max Payne 2, which leaves a few pixels undefined.
+     *
+     * Tests show that the content of the back buffer after a discard flip is indeed not
+     * reliable, so no game can depend on the exact content. However, it resembles the
+     * old contents in some way, for example by showing fragments at other locations. In
+     * general, the color theme is still intact. So Max payne, which draws rather dark scenes
+     * gets a dark background image. If we clear it with a bright ugly color, the game's
+     * bug shows up much more than it does on Windows, and the players see single pixels
+     * with wrong colors.
+     * (The Max Payne bug has been confirmed on Windows with the debug runtime)
+     */
+    if (FALSE && This->presentParms.SwapEffect == WINED3DSWAPEFFECT_DISCARD) {
+        TRACE("Clearing the color buffer with cyan color\n");
+
+        IWineD3DDevice_Clear((IWineD3DDevice*)This->wineD3DDevice, 0, NULL,
+                              WINED3DCLEAR_TARGET, 0xff00ffff, 1.0, 0);
+    }
+
+    if(((IWineD3DSurfaceImpl *) This->frontBuffer)->Flags   & SFLAG_INSYSMEM ||
+       ((IWineD3DSurfaceImpl *) This->backBuffer[0])->Flags & SFLAG_INSYSMEM ) {
+        /* Both memory copies of the surfaces are ok, flip them around too instead of dirtifying */
+        IWineD3DSurfaceImpl *front = (IWineD3DSurfaceImpl *) This->frontBuffer;
+        IWineD3DSurfaceImpl *back = (IWineD3DSurfaceImpl *) This->backBuffer[0];
+
+        if(front->resource.size == back->resource.size) {
+            DWORD fbflags;
+            flip_surface(front, back);
+
+            /* Tell the front buffer surface that is has been modified. However,
+             * the other locations were preserved during that, so keep the flags.
+             * This serves to update the emulated overlay, if any
+             */
+            fbflags = front->Flags;
+            IWineD3DSurface_ModifyLocation(This->frontBuffer, SFLAG_INDRAWABLE, TRUE);
+            front->Flags = fbflags;
+        } else {
+            IWineD3DSurface_ModifyLocation((IWineD3DSurface *) front, SFLAG_INDRAWABLE, TRUE);
+            IWineD3DSurface_ModifyLocation((IWineD3DSurface *) back, SFLAG_INDRAWABLE, TRUE);
+        }
+    } else {
+        IWineD3DSurface_ModifyLocation(This->frontBuffer, SFLAG_INDRAWABLE, TRUE);
+        /* If the swapeffect is DISCARD, the back buffer is undefined. That means the SYSMEM
+         * and INTEXTURE copies can keep their old content if they have any defined content.
+         * If the swapeffect is COPY, the content remains the same. If it is FLIP however,
+         * the texture / sysmem copy needs to be reloaded from the drawable
+         */
+        if(This->presentParms.SwapEffect == WINED3DSWAPEFFECT_FLIP) {
+            IWineD3DSurface_ModifyLocation(This->backBuffer[0], SFLAG_INDRAWABLE, TRUE);
+        }
+    }
+
+    if (This->wineD3DDevice->stencilBufferTarget) {
+        if (This->presentParms.Flags & WINED3DPRESENTFLAG_DISCARD_DEPTHSTENCIL
+                || ((IWineD3DSurfaceImpl *)This->wineD3DDevice->stencilBufferTarget)->Flags & SFLAG_DISCARD) {
+            surface_modify_ds_location(This->wineD3DDevice->stencilBufferTarget, SFLAG_DS_DISCARDED);
+        }
+    }
+
+    if(This->presentParms.PresentationInterval != WINED3DPRESENT_INTERVAL_IMMEDIATE && GL_SUPPORT(SGI_VIDEO_SYNC)) {
+        retval = GL_EXTCALL(glXGetVideoSyncSGI(&sync));
+        if(retval != 0) {
+            ERR("glXGetVideoSyncSGI failed(retval = %d\n", retval);
+        }
+
+        switch(This->presentParms.PresentationInterval) {
+            case WINED3DPRESENT_INTERVAL_DEFAULT:
+            case WINED3DPRESENT_INTERVAL_ONE:
+                if(sync <= This->vSyncCounter) {
+                    retval = GL_EXTCALL(glXWaitVideoSyncSGI(1, 0, &This->vSyncCounter));
+                } else {
+                    This->vSyncCounter = sync;
+                }
+                break;
+            case WINED3DPRESENT_INTERVAL_TWO:
+                if(sync <= This->vSyncCounter + 1) {
+                    retval = GL_EXTCALL(glXWaitVideoSyncSGI(2, This->vSyncCounter & 0x1, &This->vSyncCounter));
+                } else {
+                    This->vSyncCounter = sync;
+                }
+                break;
+            case WINED3DPRESENT_INTERVAL_THREE:
+                if(sync <= This->vSyncCounter + 2) {
+                    retval = GL_EXTCALL(glXWaitVideoSyncSGI(3, This->vSyncCounter % 0x3, &This->vSyncCounter));
+                } else {
+                    This->vSyncCounter = sync;
+                }
+                break;
+            case WINED3DPRESENT_INTERVAL_FOUR:
+                if(sync <= This->vSyncCounter + 3) {
+                    retval = GL_EXTCALL(glXWaitVideoSyncSGI(4, This->vSyncCounter & 0x3, &This->vSyncCounter));
+                } else {
+                    This->vSyncCounter = sync;
+                }
+                break;
+            default:
+                FIXME("Unknown presentation interval %08x\n", This->presentParms.PresentationInterval);
+        }
+    }
+
+    TRACE("returning\n");
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DSwapChainImpl_SetDestWindowOverride(IWineD3DSwapChain *iface, HWND window) {
+    IWineD3DSwapChainImpl *This = (IWineD3DSwapChainImpl *)iface;
+    WINED3DLOCKED_RECT r;
+    BYTE *mem;
+
+    if(window == This->win_handle) return WINED3D_OK;
+
+    TRACE("Performing dest override of swapchain %p from window %p to %p\n", This, This->win_handle, window);
+    if(This->context[0] == This->wineD3DDevice->contexts[0]) {
+        /* The primary context 'owns' all the opengl resources. Destroying and recreating that context requires downloading
+         * all opengl resources, deleting the gl resources, destroying all other contexts, then recreating all other contexts
+         * and reload the resources
+         */
+        delete_opengl_contexts((IWineD3DDevice *) This->wineD3DDevice, iface);
+        This->win_handle             = window;
+        create_primary_opengl_context((IWineD3DDevice *) This->wineD3DDevice, iface);
+    } else {
+        This->win_handle             = window;
+
+        /* The old back buffer has to be copied over to the new back buffer. A lockrect - switchcontext - unlockrect
+         * would suffice in theory, but it is rather nasty and may cause troubles with future changes of the locking code
+         * So lock read only, copy the surface out, then lock with the discard flag and write back
+         */
+        IWineD3DSurface_LockRect(This->backBuffer[0], &r, NULL, WINED3DLOCK_READONLY);
+        mem = HeapAlloc(GetProcessHeap(), 0, r.Pitch * ((IWineD3DSurfaceImpl *) This->backBuffer[0])->currentDesc.Height);
+        memcpy(mem, r.pBits, r.Pitch * ((IWineD3DSurfaceImpl *) This->backBuffer[0])->currentDesc.Height);
+        IWineD3DSurface_UnlockRect(This->backBuffer[0]);
+
+        DestroyContext(This->wineD3DDevice, This->context[0]);
+        This->context[0] = CreateContext(This->wineD3DDevice, (IWineD3DSurfaceImpl *) This->frontBuffer, This->win_handle, FALSE /* pbuffer */, &This->presentParms);
+
+        IWineD3DSurface_LockRect(This->backBuffer[0], &r, NULL, WINED3DLOCK_DISCARD);
+        memcpy(r.pBits, mem, r.Pitch * ((IWineD3DSurfaceImpl *) This->backBuffer[0])->currentDesc.Height);
+        HeapFree(GetProcessHeap(), 0, mem);
+        IWineD3DSurface_UnlockRect(This->backBuffer[0]);
+    }
+    return WINED3D_OK;
+}
+
+const IWineD3DSwapChainVtbl IWineD3DSwapChain_Vtbl =
+{
+    /* IUnknown */
+    IWineD3DBaseSwapChainImpl_QueryInterface,
+    IWineD3DBaseSwapChainImpl_AddRef,
+    IWineD3DBaseSwapChainImpl_Release,
+    /* IWineD3DSwapChain */
+    IWineD3DBaseSwapChainImpl_GetParent,
+    IWineD3DSwapChainImpl_Destroy,
+    IWineD3DBaseSwapChainImpl_GetDevice,
+    IWineD3DSwapChainImpl_Present,
+    IWineD3DSwapChainImpl_SetDestWindowOverride,
+    IWineD3DBaseSwapChainImpl_GetFrontBufferData,
+    IWineD3DBaseSwapChainImpl_GetBackBuffer,
+    IWineD3DBaseSwapChainImpl_GetRasterStatus,
+    IWineD3DBaseSwapChainImpl_GetDisplayMode,
+    IWineD3DBaseSwapChainImpl_GetPresentParameters,
+    IWineD3DBaseSwapChainImpl_SetGammaRamp,
+    IWineD3DBaseSwapChainImpl_GetGammaRamp
+};
+
+WineD3DContext *IWineD3DSwapChainImpl_CreateContextForThread(IWineD3DSwapChain *iface) {
+    WineD3DContext *ctx;
+    IWineD3DSwapChainImpl *This = (IWineD3DSwapChainImpl *) iface;
+    WineD3DContext **newArray;
+
+    TRACE("Creating a new context for swapchain %p, thread %d\n", This, GetCurrentThreadId());
+
+    ctx = CreateContext(This->wineD3DDevice, (IWineD3DSurfaceImpl *) This->frontBuffer,
+                        This->context[0]->win_handle, FALSE /* pbuffer */, &This->presentParms);
+    if(!ctx) {
+        ERR("Failed to create a new context for the swapchain\n");
+        return NULL;
+    }
+
+    newArray = HeapAlloc(GetProcessHeap(), 0, sizeof(*newArray) * This->num_contexts + 1);
+    if(!newArray) {
+        ERR("Out of memory when trying to allocate a new context array\n");
+        DestroyContext(This->wineD3DDevice, ctx);
+        return NULL;
+    }
+    memcpy(newArray, This->context, sizeof(*newArray) * This->num_contexts);
+    HeapFree(GetProcessHeap(), 0, This->context);
+    newArray[This->num_contexts] = ctx;
+    This->context = newArray;
+    This->num_contexts++;
+
+    TRACE("Returning context %p\n", ctx);
+    return ctx;
+}
+
+void get_drawable_size_swapchain(IWineD3DSurfaceImpl *This, UINT *width, UINT *height) {
+    /* The drawable size of an onscreen drawable is the surface size.
+     * (Actually: The window size, but the surface is created in window size)
+     */
+    *width = This->currentDesc.Width;
+    *height = This->currentDesc.Height;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/swapchain_base.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/swapchain_base.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/swapchain_base.c	(revision 16410)
@@ -0,0 +1,192 @@
+/*
+ *IDirect3DSwapChain9 implementation
+ *
+ *Copyright 2002-2003 Jason Edmeades
+ *Copyright 2002-2003 Raphael Junqueira
+ *Copyright 2005 Oliver Stieber
+ *Copyright 2007-2008 Stefan Dösinger for CodeWeavers
+ *
+ *This library is free software; you can redistribute it and/or
+ *modify it under the terms of the GNU Lesser General Public
+ *License as published by the Free Software Foundation; either
+ *version 2.1 of the License, or (at your option) any later version.
+ *
+ *This library is distributed in the hope that it will be useful,
+ *but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *Lesser General Public License for more details.
+ *
+ *You should have received a copy of the GNU Lesser General Public
+ *License along with this library; if not, write to the Free Software
+ *Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d);
+
+/* IDirect3DSwapChain IUnknown parts follow: */
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_QueryInterface(IWineD3DSwapChain *iface, REFIID riid, LPVOID *ppobj)
+{
+    IWineD3DSwapChainImpl *This = (IWineD3DSwapChainImpl *)iface;
+    TRACE("(%p)->(%s,%p)\n", This, debugstr_guid(riid), ppobj);
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IWineD3DBase)
+        || IsEqualGUID(riid, &IID_IWineD3DSwapChain)){
+        IWineD3DSwapChain_AddRef(iface);
+        if(ppobj == NULL){
+            ERR("Query interface called but now data allocated\n");
+            return E_NOINTERFACE;
+        }
+        *ppobj = This;
+        return WINED3D_OK;
+        }
+        *ppobj = NULL;
+        return E_NOINTERFACE;
+}
+
+ULONG WINAPI IWineD3DBaseSwapChainImpl_AddRef(IWineD3DSwapChain *iface) {
+    IWineD3DSwapChainImpl *This = (IWineD3DSwapChainImpl *)iface;
+    DWORD refCount = InterlockedIncrement(&This->ref);
+    TRACE("(%p) : AddRef increasing from %d\n", This, refCount - 1);
+    return refCount;
+}
+
+ULONG WINAPI IWineD3DBaseSwapChainImpl_Release(IWineD3DSwapChain *iface) {
+    IWineD3DSwapChainImpl *This = (IWineD3DSwapChainImpl *)iface;
+    DWORD refCount;
+    refCount = InterlockedDecrement(&This->ref);
+    TRACE("(%p) : ReleaseRef to %d\n", This, refCount);
+    if (refCount == 0) {
+        IWineD3DSwapChain_Destroy(iface, D3DCB_DefaultDestroySurface);
+    }
+    return refCount;
+}
+
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_GetParent(IWineD3DSwapChain *iface, IUnknown ** ppParent){
+    IWineD3DSwapChainImpl *This = (IWineD3DSwapChainImpl *)iface;
+    *ppParent = This->parent;
+    IUnknown_AddRef(*ppParent);
+    TRACE("(%p) returning %p\n", This , *ppParent);
+    return WINED3D_OK;
+}
+
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_GetFrontBufferData(IWineD3DSwapChain *iface, IWineD3DSurface *pDestSurface) {
+    IWineD3DSwapChainImpl *This = (IWineD3DSwapChainImpl *)iface;
+    POINT start;
+
+    TRACE("(%p) : iface(%p) pDestSurface(%p)\n", This, iface, pDestSurface);
+
+    start.x = 0;
+    start.y = 0;
+
+    if (This->presentParms.Windowed) {
+        MapWindowPoints(This->win_handle, NULL, &start, 1);
+    }
+
+    IWineD3DSurface_BltFast(pDestSurface, start.x, start.y, This->frontBuffer, NULL, 0);
+    return WINED3D_OK;
+}
+
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_GetBackBuffer(IWineD3DSwapChain *iface, UINT iBackBuffer, WINED3DBACKBUFFER_TYPE Type, IWineD3DSurface **ppBackBuffer) {
+
+    IWineD3DSwapChainImpl *This = (IWineD3DSwapChainImpl *)iface;
+
+    if (iBackBuffer > This->presentParms.BackBufferCount - 1) {
+        TRACE("Back buffer count out of range\n");
+        /* Native d3d9 doesn't set NULL here, just as wine's d3d9. But set it
+         * here in wined3d to avoid problems in other libs
+         */
+        *ppBackBuffer = NULL;
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    /* Return invalid if there is no backbuffer array, otherwise it will crash when ddraw is
+     * used (there This->backBuffer is always NULL). We need this because this function has
+     * to be called from IWineD3DStateBlockImpl_InitStartupStateBlock to get the default
+     * scissorrect dimensions. */
+    if( !This->backBuffer ) {
+        *ppBackBuffer = NULL;
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    *ppBackBuffer = This->backBuffer[iBackBuffer];
+    TRACE("(%p) : BackBuf %d Type %d  returning %p\n", This, iBackBuffer, Type, *ppBackBuffer);
+
+    /* Note inc ref on returned surface */
+    if(*ppBackBuffer) IWineD3DSurface_AddRef(*ppBackBuffer);
+    return WINED3D_OK;
+
+}
+
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_GetRasterStatus(IWineD3DSwapChain *iface, WINED3DRASTER_STATUS *pRasterStatus) {
+    IWineD3DSwapChainImpl *This = (IWineD3DSwapChainImpl *)iface;
+    static BOOL warned;
+    pRasterStatus->InVBlank = TRUE;
+    pRasterStatus->ScanLine = 0;
+    /* No openGL equivalent */
+    if (!warned)
+    {
+        FIXME("(%p) : stub (once)\n", This);
+        warned = TRUE;
+    }
+    return WINED3D_OK;
+}
+
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_GetDisplayMode(IWineD3DSwapChain *iface, WINED3DDISPLAYMODE*pMode) {
+    IWineD3DSwapChainImpl *This = (IWineD3DSwapChainImpl *)iface;
+    HRESULT hr;
+
+    TRACE("(%p)->(%p): Calling GetAdapterDisplayMode\n", This, pMode);
+    hr = IWineD3D_GetAdapterDisplayMode(This->wineD3DDevice->wineD3D, This->wineD3DDevice->adapter->num, pMode);
+
+    TRACE("(%p) : returning w(%d) h(%d) rr(%d) fmt(%u,%s)\n", This, pMode->Width, pMode->Height, pMode->RefreshRate,
+          pMode->Format, debug_d3dformat(pMode->Format));
+    return hr;
+}
+
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_GetDevice(IWineD3DSwapChain *iface, IWineD3DDevice**ppDevice) {
+    IWineD3DSwapChainImpl *This = (IWineD3DSwapChainImpl *)iface;
+
+    *ppDevice = (IWineD3DDevice *) This->wineD3DDevice;
+
+    /* Note  Calling this method will increase the internal reference count
+    on the IDirect3DDevice9 interface. */
+    IWineD3DDevice_AddRef(*ppDevice);
+    TRACE("(%p) : returning %p\n", This, *ppDevice);
+    return WINED3D_OK;
+}
+
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_GetPresentParameters(IWineD3DSwapChain *iface, WINED3DPRESENT_PARAMETERS *pPresentationParameters) {
+    IWineD3DSwapChainImpl *This = (IWineD3DSwapChainImpl *)iface;
+    TRACE("(%p)\n", This);
+
+    *pPresentationParameters = This->presentParms;
+
+    return WINED3D_OK;
+}
+
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_SetGammaRamp(IWineD3DSwapChain *iface, DWORD Flags, CONST WINED3DGAMMARAMP *pRamp){
+
+    IWineD3DSwapChainImpl *This = (IWineD3DSwapChainImpl *)iface;
+    HDC hDC;
+    TRACE("(%p) : pRamp@%p flags(%d)\n", This, pRamp, Flags);
+    hDC = GetDC(This->win_handle);
+    SetDeviceGammaRamp(hDC, (LPVOID)pRamp);
+    ReleaseDC(This->win_handle, hDC);
+    return WINED3D_OK;
+
+}
+
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_GetGammaRamp(IWineD3DSwapChain *iface, WINED3DGAMMARAMP *pRamp){
+
+    IWineD3DSwapChainImpl *This = (IWineD3DSwapChainImpl *)iface;
+    HDC hDC;
+    TRACE("(%p) : pRamp@%p\n", This, pRamp);
+    hDC = GetDC(This->win_handle);
+    GetDeviceGammaRamp(hDC, pRamp);
+    ReleaseDC(This->win_handle, hDC);
+    return WINED3D_OK;
+
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/swapchain_gdi.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/swapchain_gdi.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/swapchain_gdi.c	(revision 16410)
@@ -0,0 +1,261 @@
+/*
+ *IDirect3DSwapChain9 implementation
+ *
+ *Copyright 2002-2003 Jason Edmeades
+ *Copyright 2002-2003 Raphael Junqueira
+ *Copyright 2005 Oliver Stieber
+ *Copyright 2007-2008 Stefan Dösinger for CodeWeavers
+ *
+ *This library is free software; you can redistribute it and/or
+ *modify it under the terms of the GNU Lesser General Public
+ *License as published by the Free Software Foundation; either
+ *version 2.1 of the License, or (at your option) any later version.
+ *
+ *This library is distributed in the hope that it will be useful,
+ *but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *Lesser General Public License for more details.
+ *
+ *You should have received a copy of the GNU Lesser General Public
+ *License along with this library; if not, write to the Free Software
+ *Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d);
+WINE_DECLARE_DEBUG_CHANNEL(fps);
+
+static void WINAPI IWineGDISwapChainImpl_Destroy(IWineD3DSwapChain *iface, D3DCB_DESTROYSURFACEFN D3DCB_DestroyRenderback) {
+    IWineD3DSwapChainImpl *This = (IWineD3DSwapChainImpl *)iface;
+    WINED3DDISPLAYMODE mode;
+
+    TRACE("Destroying swapchain %p\n", iface);
+
+    IWineD3DSwapChain_SetGammaRamp(iface, 0, &This->orig_gamma);
+
+    /* release the ref to the front and back buffer parents */
+    if(This->frontBuffer) {
+        IWineD3DSurface_SetContainer(This->frontBuffer, 0);
+        if(D3DCB_DestroyRenderback(This->frontBuffer) > 0) {
+            FIXME("(%p) Something's still holding the front buffer\n",This);
+        }
+    }
+
+    if(This->backBuffer) {
+        UINT i;
+        for(i = 0; i < This->presentParms.BackBufferCount; i++) {
+            IWineD3DSurface_SetContainer(This->backBuffer[i], 0);
+            if(D3DCB_DestroyRenderback(This->backBuffer[i]) > 0) {
+                FIXME("(%p) Something's still holding the back buffer\n",This);
+            }
+        }
+        HeapFree(GetProcessHeap(), 0, This->backBuffer);
+    }
+
+    /* Restore the screen resolution if we rendered in fullscreen
+     * This will restore the screen resolution to what it was before creating the swapchain. In case of d3d8 and d3d9
+     * this will be the original desktop resolution. In case of d3d7 this will be a NOP because ddraw sets the resolution
+     * before starting up Direct3D, thus orig_width and orig_height will be equal to the modes in the presentation params
+     */
+    if(This->presentParms.Windowed == FALSE && This->presentParms.AutoRestoreDisplayMode) {
+        mode.Width = This->orig_width;
+        mode.Height = This->orig_height;
+        mode.RefreshRate = 0;
+        mode.Format = This->orig_fmt;
+        IWineD3DDevice_SetDisplayMode((IWineD3DDevice *) This->wineD3DDevice, 0, &mode);
+    }
+
+    HeapFree(GetProcessHeap(), 0, This);
+}
+
+/*****************************************************************************
+ * x11_copy_to_screen
+ *
+ * Helper function that blts the front buffer contents to the target window
+ *
+ * Params:
+ *  This: Surface to copy from
+ *  rc: Rectangle to copy
+ *
+ *****************************************************************************/
+void x11_copy_to_screen(IWineD3DSwapChainImpl *This, const RECT *rc)
+{
+    IWineD3DSurfaceImpl *front = (IWineD3DSurfaceImpl *) This->frontBuffer;
+
+    if(front->resource.usage & WINED3DUSAGE_RENDERTARGET) {
+        POINT offset = {0,0};
+        HWND hDisplayWnd;
+        HDC hDisplayDC;
+        HDC hSurfaceDC = 0;
+        RECT drawrect;
+        TRACE("(%p)->(%p): Copying to screen\n", front, rc);
+
+        hSurfaceDC = front->hDC;
+
+        hDisplayWnd = This->win_handle;
+        hDisplayDC = GetDCEx(hDisplayWnd, 0, DCX_CLIPSIBLINGS|DCX_CACHE);
+        if(rc) {
+            TRACE(" copying rect (%d,%d)->(%d,%d), offset (%d,%d)\n",
+                  rc->left, rc->top, rc->right, rc->bottom, offset.x, offset.y);
+        }
+
+        /* Front buffer coordinates are screen coordinates. Map them to the destination
+         * window if not fullscreened
+         */
+        if(This->presentParms.Windowed) {
+            ClientToScreen(hDisplayWnd, &offset);
+        }
+#if 0
+        /* FIXME: This doesn't work... if users really want to run
+        * X in 8bpp, then we need to call directly into display.drv
+        * (or Wine's equivalent), and force a private colormap
+        * without default entries. */
+        if (front->palette) {
+        SelectPalette(hDisplayDC, front->palette->hpal, FALSE);
+        RealizePalette(hDisplayDC); /* sends messages => deadlocks */
+    }
+#endif
+        drawrect.left   = 0;
+        drawrect.right  = front->currentDesc.Width;
+        drawrect.top    = 0;
+        drawrect.bottom = front->currentDesc.Height;
+
+#if 0
+        /* TODO: Support clippers */
+        if (front->clipper)
+        {
+        RECT xrc;
+        HWND hwnd = ((IWineD3DClipperImpl *) front->clipper)->hWnd;
+        if (hwnd && GetClientRect(hwnd,&xrc))
+        {
+        OffsetRect(&xrc,offset.x,offset.y);
+        IntersectRect(&drawrect,&drawrect,&xrc);
+    }
+    }
+#endif
+        if (rc) {
+            IntersectRect(&drawrect,&drawrect,rc);
+        }
+        else {
+            /* Only use this if the caller did not pass a rectangle, since
+            * due to double locking this could be the wrong one ...
+            */
+            if (front->lockedRect.left != front->lockedRect.right) {
+                IntersectRect(&drawrect,&drawrect,&front->lockedRect);
+            }
+        }
+
+        BitBlt(hDisplayDC,
+               drawrect.left-offset.x, drawrect.top-offset.y,
+               drawrect.right-drawrect.left, drawrect.bottom-drawrect.top,
+               hSurfaceDC,
+               drawrect.left, drawrect.top,
+               SRCCOPY);
+        ReleaseDC(hDisplayWnd, hDisplayDC);
+    }
+}
+
+static HRESULT WINAPI IWineGDISwapChainImpl_SetDestWindowOverride(IWineD3DSwapChain *iface, HWND window) {
+    IWineD3DSwapChainImpl *This = (IWineD3DSwapChainImpl *)iface;
+
+    This->win_handle = window;
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineGDISwapChainImpl_Present(IWineD3DSwapChain *iface, CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride, CONST RGNDATA *pDirtyRegion, DWORD dwFlags) {
+    IWineD3DSwapChainImpl *This = (IWineD3DSwapChainImpl *) iface;
+    IWineD3DSurfaceImpl *front, *back;
+
+    if(!This->backBuffer) {
+        WARN("Swapchain doesn't have a backbuffer, returning WINED3DERR_INVALIDCALL\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+    front = (IWineD3DSurfaceImpl *) This->frontBuffer;
+    back = (IWineD3DSurfaceImpl *) This->backBuffer[0];
+
+    /* Flip the DC */
+    {
+        HDC tmp;
+        tmp = front->hDC;
+        front->hDC = back->hDC;
+        back->hDC = tmp;
+    }
+
+    /* Flip the DIBsection */
+    {
+        HBITMAP tmp;
+        tmp = front->dib.DIBsection;
+        front->dib.DIBsection = back->dib.DIBsection;
+        back->dib.DIBsection = tmp;
+    }
+
+    /* Flip the surface data */
+    {
+        void* tmp;
+
+        tmp = front->dib.bitmap_data;
+        front->dib.bitmap_data = back->dib.bitmap_data;
+        back->dib.bitmap_data = tmp;
+
+        tmp = front->resource.allocatedMemory;
+        front->resource.allocatedMemory = back->resource.allocatedMemory;
+        back->resource.allocatedMemory = tmp;
+
+        if(front->resource.heapMemory) {
+            ERR("GDI Surface %p has heap memory allocated\n", front);
+        }
+        if(back->resource.heapMemory) {
+            ERR("GDI Surface %p has heap memory allocated\n", back);
+        }
+    }
+
+    /* client_memory should not be different, but just in case */
+    {
+        BOOL tmp;
+        tmp = front->dib.client_memory;
+        front->dib.client_memory = back->dib.client_memory;
+        back->dib.client_memory = tmp;
+    }
+
+    /* FPS support */
+    if (TRACE_ON(fps))
+    {
+        static long prev_time, frames;
+
+        DWORD time = GetTickCount();
+        frames++;
+        /* every 1.5 seconds */
+        if (time - prev_time > 1500) {
+            TRACE_(fps)("@ approx %.2ffps\n", 1000.0*frames/(time - prev_time));
+            prev_time = time;
+            frames = 0;
+        }
+    }
+
+    x11_copy_to_screen(This, NULL);
+
+    return WINED3D_OK;
+}
+
+const IWineD3DSwapChainVtbl IWineGDISwapChain_Vtbl =
+{
+    /* IUnknown */
+    IWineD3DBaseSwapChainImpl_QueryInterface,
+    IWineD3DBaseSwapChainImpl_AddRef,
+    IWineD3DBaseSwapChainImpl_Release,
+    /* IWineD3DSwapChain */
+    IWineD3DBaseSwapChainImpl_GetParent,
+    IWineGDISwapChainImpl_Destroy,
+    IWineD3DBaseSwapChainImpl_GetDevice,
+    IWineGDISwapChainImpl_Present,
+    IWineGDISwapChainImpl_SetDestWindowOverride,
+    IWineD3DBaseSwapChainImpl_GetFrontBufferData,
+    IWineD3DBaseSwapChainImpl_GetBackBuffer,
+    IWineD3DBaseSwapChainImpl_GetRasterStatus,
+    IWineD3DBaseSwapChainImpl_GetDisplayMode,
+    IWineD3DBaseSwapChainImpl_GetPresentParameters,
+    IWineD3DBaseSwapChainImpl_SetGammaRamp,
+    IWineD3DBaseSwapChainImpl_GetGammaRamp
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/texture.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/texture.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/texture.c	(revision 16410)
@@ -0,0 +1,403 @@
+/*
+ * IWineD3DTexture implementation
+ *
+ * Copyright 2002-2005 Jason Edmeades
+ * Copyright 2002-2005 Raphael Junqueira
+ * Copyright 2005 Oliver Stieber
+ * Copyright 2007-2008 Stefan Dösinger for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d_texture);
+#define GLINFO_LOCATION This->resource.wineD3DDevice->adapter->gl_info
+
+/* *******************************************
+   IWineD3DTexture IUnknown parts follow
+   ******************************************* */
+static HRESULT WINAPI IWineD3DTextureImpl_QueryInterface(IWineD3DTexture *iface, REFIID riid, LPVOID *ppobj)
+{
+    IWineD3DTextureImpl *This = (IWineD3DTextureImpl *)iface;
+    TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj);
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IWineD3DBase)
+        || IsEqualGUID(riid, &IID_IWineD3DResource)
+        || IsEqualGUID(riid, &IID_IWineD3DBaseTexture)
+        || IsEqualGUID(riid, &IID_IWineD3DTexture)){
+        IUnknown_AddRef(iface);
+        *ppobj = This;
+        return WINED3D_OK;
+    }
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IWineD3DTextureImpl_AddRef(IWineD3DTexture *iface) {
+    IWineD3DTextureImpl *This = (IWineD3DTextureImpl *)iface;
+    TRACE("(%p) : AddRef increasing from %d\n", This, This->resource.ref);
+    return InterlockedIncrement(&This->resource.ref);
+}
+
+static ULONG WINAPI IWineD3DTextureImpl_Release(IWineD3DTexture *iface) {
+    IWineD3DTextureImpl *This = (IWineD3DTextureImpl *)iface;
+    ULONG ref;
+    TRACE("(%p) : Releasing from %d\n", This, This->resource.ref);
+    ref = InterlockedDecrement(&This->resource.ref);
+    if (ref == 0) {
+        IWineD3DTexture_Destroy(iface, D3DCB_DefaultDestroySurface);
+    }
+    return ref;
+}
+
+
+/* ****************************************************
+   IWineD3DTexture IWineD3DResource parts follow
+   **************************************************** */
+static HRESULT WINAPI IWineD3DTextureImpl_GetDevice(IWineD3DTexture *iface, IWineD3DDevice** ppDevice) {
+    return resource_get_device((IWineD3DResource *)iface, ppDevice);
+}
+
+static HRESULT WINAPI IWineD3DTextureImpl_SetPrivateData(IWineD3DTexture *iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) {
+    return resource_set_private_data((IWineD3DResource *)iface, refguid, pData, SizeOfData, Flags);
+}
+
+static HRESULT WINAPI IWineD3DTextureImpl_GetPrivateData(IWineD3DTexture *iface, REFGUID refguid, void* pData, DWORD* pSizeOfData) {
+    return resource_get_private_data((IWineD3DResource *)iface, refguid, pData, pSizeOfData);
+}
+
+static HRESULT WINAPI IWineD3DTextureImpl_FreePrivateData(IWineD3DTexture *iface, REFGUID refguid) {
+    return resource_free_private_data((IWineD3DResource *)iface, refguid);
+}
+
+static DWORD WINAPI IWineD3DTextureImpl_SetPriority(IWineD3DTexture *iface, DWORD PriorityNew) {
+    return resource_set_priority((IWineD3DResource *)iface, PriorityNew);
+}
+
+static DWORD WINAPI IWineD3DTextureImpl_GetPriority(IWineD3DTexture *iface) {
+    return resource_get_priority((IWineD3DResource *)iface);
+}
+
+static void WINAPI IWineD3DTextureImpl_PreLoad(IWineD3DTexture *iface) {
+
+    /* Override the IWineD3DResource PreLoad method */
+    unsigned int i;
+    IWineD3DTextureImpl *This = (IWineD3DTextureImpl *)iface;
+    IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
+    BOOL srgb_mode = This->baseTexture.is_srgb;
+    BOOL srgb_was_toggled = FALSE;
+
+    TRACE("(%p) : About to load texture\n", This);
+
+    if(!device->isInDraw) {
+        /* ActivateContext sets isInDraw to TRUE when loading a pbuffer into a texture, thus no danger of
+         * recursive calls
+         */
+        ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+    } else if (GL_SUPPORT(EXT_TEXTURE_SRGB) && This->baseTexture.bindCount > 0) {
+        srgb_mode = device->stateBlock->samplerState[This->baseTexture.sampler][WINED3DSAMP_SRGBTEXTURE];
+        srgb_was_toggled = This->baseTexture.is_srgb != srgb_mode;
+        This->baseTexture.is_srgb = srgb_mode;
+    }
+
+    if (This->resource.format == WINED3DFMT_P8 || This->resource.format == WINED3DFMT_A8P8) {
+        for (i = 0; i < This->baseTexture.levels; i++) {
+            if(palette9_changed((IWineD3DSurfaceImpl *)This->surfaces[i])) {
+                TRACE("Reloading surface because the d3d8/9 palette was changed\n");
+                /* TODO: This is not necessarily needed with hw palettized texture support */
+                IWineD3DSurface_LoadLocation(This->surfaces[i], SFLAG_INSYSMEM, NULL);
+                /* Make sure the texture is reloaded because of the palette change, this kills performance though :( */
+                IWineD3DSurface_ModifyLocation(This->surfaces[i], SFLAG_INTEXTURE, FALSE);
+            }
+        }
+    }
+    /* If the texture is marked dirty or the srgb sampler setting has changed since the last load then reload the surfaces */
+    if (This->baseTexture.dirty) {
+        for (i = 0; i < This->baseTexture.levels; i++) {
+            IWineD3DSurface_LoadTexture(This->surfaces[i], srgb_mode);
+        }
+    } else if (srgb_was_toggled) {
+        if (This->baseTexture.srgb_mode_change_count < 20)
+            ++This->baseTexture.srgb_mode_change_count;
+        else
+            FIXME("Texture (%p) has been reloaded at least 20 times due to WINED3DSAMP_SRGBTEXTURE changes on it\'s sampler\n", This);
+
+        for (i = 0; i < This->baseTexture.levels; i++) {
+            IWineD3DSurface_AddDirtyRect(This->surfaces[i], NULL);
+            surface_force_reload(This->surfaces[i]);
+            IWineD3DSurface_LoadTexture(This->surfaces[i], srgb_mode);
+        }
+    } else {
+        TRACE("(%p) Texture not dirty, nothing to do\n" , iface);
+    }
+
+    /* No longer dirty */
+    This->baseTexture.dirty = FALSE;
+
+    return ;
+}
+
+static void WINAPI IWineD3DTextureImpl_UnLoad(IWineD3DTexture *iface) {
+    unsigned int i;
+    IWineD3DTextureImpl *This = (IWineD3DTextureImpl *)iface;
+    TRACE("(%p)\n", This);
+
+    /* Unload all the surfaces and reset the texture name. If UnLoad was called on the
+     * surface before, this one will be a NOP and vice versa. Unloading an unloaded
+     * surface is fine
+     */
+    for (i = 0; i < This->baseTexture.levels; i++) {
+        IWineD3DSurface_UnLoad(This->surfaces[i]);
+        surface_set_texture_name(This->surfaces[i], 0);
+    }
+
+    basetexture_unload((IWineD3DBaseTexture *)iface);
+}
+
+static WINED3DRESOURCETYPE WINAPI IWineD3DTextureImpl_GetType(IWineD3DTexture *iface) {
+    return resource_get_type((IWineD3DResource *)iface);
+}
+
+static HRESULT WINAPI IWineD3DTextureImpl_GetParent(IWineD3DTexture *iface, IUnknown **pParent) {
+    return resource_get_parent((IWineD3DResource *)iface, pParent);
+}
+
+/* ******************************************************
+   IWineD3DTexture IWineD3DBaseTexture parts follow
+   ****************************************************** */
+static DWORD WINAPI IWineD3DTextureImpl_SetLOD(IWineD3DTexture *iface, DWORD LODNew) {
+    return basetexture_set_lod((IWineD3DBaseTexture *)iface, LODNew);
+}
+
+static DWORD WINAPI IWineD3DTextureImpl_GetLOD(IWineD3DTexture *iface) {
+    return basetexture_get_lod((IWineD3DBaseTexture *)iface);
+}
+
+static DWORD WINAPI IWineD3DTextureImpl_GetLevelCount(IWineD3DTexture *iface) {
+    return basetexture_get_level_count((IWineD3DBaseTexture *)iface);
+}
+
+static HRESULT WINAPI IWineD3DTextureImpl_SetAutoGenFilterType(IWineD3DTexture *iface, WINED3DTEXTUREFILTERTYPE FilterType) {
+  return basetexture_set_autogen_filter_type((IWineD3DBaseTexture *)iface, FilterType);
+}
+
+static WINED3DTEXTUREFILTERTYPE WINAPI IWineD3DTextureImpl_GetAutoGenFilterType(IWineD3DTexture *iface) {
+  return basetexture_get_autogen_filter_type((IWineD3DBaseTexture *)iface);
+}
+
+static void WINAPI IWineD3DTextureImpl_GenerateMipSubLevels(IWineD3DTexture *iface) {
+    basetexture_generate_mipmaps((IWineD3DBaseTexture *)iface);
+}
+
+/* Internal function, No d3d mapping */
+static BOOL WINAPI IWineD3DTextureImpl_SetDirty(IWineD3DTexture *iface, BOOL dirty) {
+    return basetexture_set_dirty((IWineD3DBaseTexture *)iface, dirty);
+}
+
+static BOOL WINAPI IWineD3DTextureImpl_GetDirty(IWineD3DTexture *iface) {
+    return basetexture_get_dirty((IWineD3DBaseTexture *)iface);
+}
+
+static HRESULT WINAPI IWineD3DTextureImpl_BindTexture(IWineD3DTexture *iface) {
+    IWineD3DTextureImpl *This = (IWineD3DTextureImpl *)iface;
+    BOOL set_gl_texture_desc = This->baseTexture.textureName == 0;
+    HRESULT hr;
+
+    TRACE("(%p) : relay to BaseTexture\n", This);
+
+    hr = basetexture_bind((IWineD3DBaseTexture *)iface);
+    if (set_gl_texture_desc && SUCCEEDED(hr)) {
+        UINT i;
+        for (i = 0; i < This->baseTexture.levels; ++i) {
+            surface_set_texture_name(This->surfaces[i], This->baseTexture.textureName);
+        }
+        /* Conditinal non power of two textures use a different clamping default. If we're using the GL_WINE_normalized_texrect
+         * partial driver emulation, we're dealing with a GL_TEXTURE_2D texture which has the address mode set to repeat - something
+         * that prevents us from hitting the accelerated codepath. Thus manually set the GL state. The same applies to filtering.
+         * Even if the texture has only one mip level, the default LINEAR_MIPMAP_LINEAR filter causes a SW fallback on macos.
+         */
+        if(IWineD3DBaseTexture_IsCondNP2(iface)) {
+            ENTER_GL();
+            glTexParameteri(IWineD3DTexture_GetTextureDimensions(iface), GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+            checkGLcall("glTexParameteri(dimension, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)");
+            glTexParameteri(IWineD3DTexture_GetTextureDimensions(iface), GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+            checkGLcall("glTexParameteri(dimension, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)");
+            glTexParameteri(IWineD3DTexture_GetTextureDimensions(iface), GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+            checkGLcall("glTexParameteri(dimension, GL_TEXTURE_MIN_FILTER, GL_NEAREST)");
+            glTexParameteri(IWineD3DTexture_GetTextureDimensions(iface), GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+            checkGLcall("glTexParameteri(dimension, GL_TEXTURE_MAG_FILTER, GL_NEAREST)");
+            LEAVE_GL();
+            This->baseTexture.states[WINED3DTEXSTA_ADDRESSU]      = WINED3DTADDRESS_CLAMP;
+            This->baseTexture.states[WINED3DTEXSTA_ADDRESSV]      = WINED3DTADDRESS_CLAMP;
+            This->baseTexture.states[WINED3DTEXSTA_MAGFILTER]     = WINED3DTEXF_POINT;
+            This->baseTexture.states[WINED3DTEXSTA_MINFILTER]     = WINED3DTEXF_POINT;
+            This->baseTexture.states[WINED3DTEXSTA_MIPFILTER]     = WINED3DTEXF_NONE;
+        }
+    }
+
+    return hr;
+}
+
+static UINT WINAPI IWineD3DTextureImpl_GetTextureDimensions(IWineD3DTexture *iface) {
+    IWineD3DTextureImpl *This = (IWineD3DTextureImpl *)iface;
+    TRACE("(%p)\n", This);
+
+    return This->target;
+}
+
+static BOOL WINAPI IWineD3DTextureImpl_IsCondNP2(IWineD3DTexture *iface) {
+    IWineD3DTextureImpl *This = (IWineD3DTextureImpl *)iface;
+    TRACE("(%p)\n", This);
+
+    return This->cond_np2;
+}
+
+static void WINAPI IWineD3DTextureImpl_ApplyStateChanges(IWineD3DTexture *iface,
+                                                   const DWORD textureStates[WINED3D_HIGHEST_TEXTURE_STATE + 1],
+                                                   const DWORD samplerStates[WINED3D_HIGHEST_SAMPLER_STATE + 1]) {
+    TRACE("(%p) : relay to BaseTexture\n", iface);
+    basetexture_apply_state_changes((IWineD3DBaseTexture *)iface, textureStates, samplerStates);
+}
+
+/* *******************************************
+   IWineD3DTexture IWineD3DTexture parts follow
+   ******************************************* */
+static void WINAPI IWineD3DTextureImpl_Destroy(IWineD3DTexture *iface, D3DCB_DESTROYSURFACEFN D3DCB_DestroySurface) {
+    IWineD3DTextureImpl *This = (IWineD3DTextureImpl *)iface;
+    int i;
+
+    TRACE("(%p) : Cleaning up\n",This);
+    for (i = 0; i < This->baseTexture.levels; i++) {
+        if (This->surfaces[i] != NULL) {
+            /* Clean out the texture name we gave to the surface so that the surface doesn't try and release it */
+            surface_set_texture_name(This->surfaces[i], 0);
+            surface_set_texture_target(This->surfaces[i], 0);
+            IWineD3DSurface_SetContainer(This->surfaces[i], 0);
+            D3DCB_DestroySurface(This->surfaces[i]);
+        }
+    }
+    TRACE("(%p) : cleaning up base texture\n", This);
+    basetexture_cleanup((IWineD3DBaseTexture *)iface);
+    /* free the object */
+    HeapFree(GetProcessHeap(), 0, This);
+}
+
+static HRESULT WINAPI IWineD3DTextureImpl_GetLevelDesc(IWineD3DTexture *iface, UINT Level, WINED3DSURFACE_DESC* pDesc) {
+    IWineD3DTextureImpl *This = (IWineD3DTextureImpl *)iface;
+
+    if (Level < This->baseTexture.levels) {
+        TRACE("(%p) Level (%d)\n", This, Level);
+        return IWineD3DSurface_GetDesc(This->surfaces[Level], pDesc);
+    }
+    FIXME("(%p) level(%d) overflow Levels(%d)\n", This, Level, This->baseTexture.levels);
+    return WINED3DERR_INVALIDCALL;
+}
+
+static HRESULT WINAPI IWineD3DTextureImpl_GetSurfaceLevel(IWineD3DTexture *iface, UINT Level, IWineD3DSurface** ppSurfaceLevel) {
+    IWineD3DTextureImpl *This = (IWineD3DTextureImpl *)iface;
+    HRESULT hr = WINED3DERR_INVALIDCALL;
+
+    if (Level < This->baseTexture.levels) {
+        *ppSurfaceLevel = This->surfaces[Level];
+        IWineD3DSurface_AddRef(This->surfaces[Level]);
+        hr = WINED3D_OK;
+        TRACE("(%p) : returning %p for level %d\n", This, *ppSurfaceLevel, Level);
+    }
+    if (WINED3D_OK != hr) {
+        WARN("(%p) level(%d) overflow Levels(%d)\n", This, Level, This->baseTexture.levels);
+        *ppSurfaceLevel = NULL; /* Just to be on the safe side.. */
+    }
+    return hr;
+}
+
+static HRESULT WINAPI IWineD3DTextureImpl_LockRect(IWineD3DTexture *iface, UINT Level, WINED3DLOCKED_RECT *pLockedRect,
+                                            CONST RECT *pRect, DWORD Flags) {
+    IWineD3DTextureImpl *This = (IWineD3DTextureImpl *)iface;
+    HRESULT hr = WINED3DERR_INVALIDCALL;
+
+    if (Level < This->baseTexture.levels) {
+        hr = IWineD3DSurface_LockRect(This->surfaces[Level], pLockedRect, pRect, Flags);
+    }
+    if (WINED3D_OK == hr) {
+        TRACE("(%p) Level (%d) success\n", This, Level);
+    } else {
+        WARN("(%p) level(%d) overflow Levels(%d)\n", This, Level, This->baseTexture.levels);
+    }
+
+    return hr;
+}
+
+static HRESULT WINAPI IWineD3DTextureImpl_UnlockRect(IWineD3DTexture *iface, UINT Level) {
+   IWineD3DTextureImpl *This = (IWineD3DTextureImpl *)iface;
+    HRESULT hr = WINED3DERR_INVALIDCALL;
+
+    if (Level < This->baseTexture.levels) {
+        hr = IWineD3DSurface_UnlockRect(This->surfaces[Level]);
+    }
+    if ( WINED3D_OK == hr) {
+        TRACE("(%p) Level (%d) success\n", This, Level);
+    } else {
+        WARN("(%p) level(%d) overflow Levels(%d)\n", This, Level, This->baseTexture.levels);
+    }
+    return hr;
+}
+
+static HRESULT WINAPI IWineD3DTextureImpl_AddDirtyRect(IWineD3DTexture *iface, CONST RECT* pDirtyRect) {
+    IWineD3DTextureImpl *This = (IWineD3DTextureImpl *)iface;
+    This->baseTexture.dirty = TRUE;
+    TRACE("(%p) : dirtyfication of surface Level (0)\n", This);
+    return IWineD3DSurface_AddDirtyRect(This->surfaces[0], pDirtyRect);
+}
+
+const IWineD3DTextureVtbl IWineD3DTexture_Vtbl =
+{
+    /* IUnknown */
+    IWineD3DTextureImpl_QueryInterface,
+    IWineD3DTextureImpl_AddRef,
+    IWineD3DTextureImpl_Release,
+    /* IWineD3DResource */
+    IWineD3DTextureImpl_GetParent,
+    IWineD3DTextureImpl_GetDevice,
+    IWineD3DTextureImpl_SetPrivateData,
+    IWineD3DTextureImpl_GetPrivateData,
+    IWineD3DTextureImpl_FreePrivateData,
+    IWineD3DTextureImpl_SetPriority,
+    IWineD3DTextureImpl_GetPriority,
+    IWineD3DTextureImpl_PreLoad,
+    IWineD3DTextureImpl_UnLoad,
+    IWineD3DTextureImpl_GetType,
+    /* IWineD3DBaseTexture */
+    IWineD3DTextureImpl_SetLOD,
+    IWineD3DTextureImpl_GetLOD,
+    IWineD3DTextureImpl_GetLevelCount,
+    IWineD3DTextureImpl_SetAutoGenFilterType,
+    IWineD3DTextureImpl_GetAutoGenFilterType,
+    IWineD3DTextureImpl_GenerateMipSubLevels,
+    IWineD3DTextureImpl_SetDirty,
+    IWineD3DTextureImpl_GetDirty,
+    IWineD3DTextureImpl_BindTexture,
+    IWineD3DTextureImpl_GetTextureDimensions,
+    IWineD3DTextureImpl_IsCondNP2,
+    IWineD3DTextureImpl_ApplyStateChanges,
+    /* IWineD3DTexture */
+    IWineD3DTextureImpl_Destroy,
+    IWineD3DTextureImpl_GetLevelDesc,
+    IWineD3DTextureImpl_GetSurfaceLevel,
+    IWineD3DTextureImpl_LockRect,
+    IWineD3DTextureImpl_UnlockRect,
+    IWineD3DTextureImpl_AddDirtyRect
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/utils.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/utils.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/utils.c	(revision 16410)
@@ -0,0 +1,2238 @@
+/*
+ * Utility functions for the WineD3D Library
+ *
+ * Copyright 2002-2004 Jason Edmeades
+ * Copyright 2003-2004 Raphael Junqueira
+ * Copyright 2004 Christian Costa
+ * Copyright 2005 Oliver Stieber
+ * Copyright 2006-2008 Henri Verbeet
+ * Copyright 2007-2008 Stefan Dösinger for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d);
+
+/*****************************************************************************
+ * Pixel format array
+ *
+ * For the formats WINED3DFMT_A32B32G32R32F, WINED3DFMT_A16B16G16R16F,
+ * and WINED3DFMT_A16B16G16R16 do not have correct alpha masks, because the
+ * high masks do not fit into the 32 bit values needed for ddraw. It is only
+ * used for ddraw mostly, and to figure out if the format has alpha at all, so
+ * setting a mask like 0x1 for those surfaces is correct. The 64 and 128 bit
+ * formats are not usable in 2D rendering because ddraw doesn't support them.
+ */
+static const StaticPixelFormatDesc formats[] = {
+  /*{WINED3DFORMAT          ,alphamask  ,redmask    ,greenmask  ,bluemask   ,bpp    ,depth  ,stencil,    isFourcc*/
+    {WINED3DFMT_UNKNOWN     ,0x0        ,0x0        ,0x0        ,0x0        ,1      ,0      ,0          ,FALSE },
+    /* FourCC formats, kept here to have WINED3DFMT_R8G8B8(=20) at position 20 */
+    {WINED3DFMT_UYVY        ,0x0        ,0x0        ,0x0        ,0x0        ,2      ,0      ,0          ,TRUE  },
+    {WINED3DFMT_YUY2        ,0x0        ,0x0        ,0x0        ,0x0        ,2      ,0      ,0          ,TRUE  },
+    {WINED3DFMT_YV12        ,0x0        ,0x0        ,0x0        ,0x0        ,1      ,0      ,0          ,TRUE  },
+    {WINED3DFMT_DXT1        ,0x0        ,0x0        ,0x0        ,0x0        ,1      ,0      ,0          ,TRUE  },
+    {WINED3DFMT_DXT2        ,0x0        ,0x0        ,0x0        ,0x0        ,1      ,0      ,0          ,TRUE  },
+    {WINED3DFMT_DXT3        ,0x0        ,0x0        ,0x0        ,0x0        ,1      ,0      ,0          ,TRUE  },
+    {WINED3DFMT_DXT4        ,0x0        ,0x0        ,0x0        ,0x0        ,1      ,0      ,0          ,TRUE  },
+    {WINED3DFMT_DXT5        ,0x0        ,0x0        ,0x0        ,0x0        ,1      ,0      ,0          ,TRUE  },
+    {WINED3DFMT_MULTI2_ARGB8,0x0        ,0x0        ,0x0        ,0x0        ,1/*?*/ ,0      ,0          ,TRUE  },
+    {WINED3DFMT_G8R8_G8B8   ,0x0        ,0x0        ,0x0        ,0x0        ,1/*?*/ ,0      ,0          ,TRUE  },
+    {WINED3DFMT_R8G8_B8G8   ,0x0        ,0x0        ,0x0        ,0x0        ,1/*?*/ ,0      ,0          ,TRUE  },
+    /* IEEE formats */
+    {WINED3DFMT_R32F        ,0x0        ,0x0        ,0x0        ,0x0        ,4      ,0      ,0          ,FALSE },
+    {WINED3DFMT_G32R32F     ,0x0        ,0x0        ,0x0        ,0x0        ,8      ,0      ,0          ,FALSE },
+    {WINED3DFMT_A32B32G32R32F,0x1       ,0x0        ,0x0        ,0x0        ,16     ,0      ,0          ,FALSE },
+    /* Hmm? */
+    {WINED3DFMT_CxV8U8      ,0x0        ,0x0        ,0x0        ,0x0        ,2      ,0      ,0          ,FALSE },
+    /* Float */
+    {WINED3DFMT_R16F        ,0x0        ,0x0        ,0x0        ,0x0        ,2      ,0      ,0          ,FALSE },
+    {WINED3DFMT_G16R16F     ,0x0        ,0x0        ,0x0        ,0x0        ,4      ,0      ,0          ,FALSE },
+    {WINED3DFMT_A16B16G16R16F,0x1       ,0x0        ,0x0        ,0x0        ,8      ,0      ,0          ,FALSE },
+    /* Palettized formats */
+    {WINED3DFMT_A8P8        ,0x0000ff00 ,0x0        ,0x0        ,0x0        ,2      ,0      ,0          ,FALSE },
+    {WINED3DFMT_P8          ,0x0        ,0x0        ,0x0        ,0x0        ,1      ,0      ,0          ,FALSE },
+    /* Standard ARGB formats. Keep WINED3DFMT_R8G8B8(=20) at position 20 */
+    {WINED3DFMT_R8G8B8      ,0x0        ,0x00ff0000 ,0x0000ff00 ,0x000000ff ,3      ,0      ,0          ,FALSE },
+    {WINED3DFMT_A8R8G8B8    ,0xff000000 ,0x00ff0000 ,0x0000ff00 ,0x000000ff ,4      ,0      ,0          ,FALSE },
+    {WINED3DFMT_X8R8G8B8    ,0x0        ,0x00ff0000 ,0x0000ff00 ,0x000000ff ,4      ,0      ,0          ,FALSE },
+    {WINED3DFMT_R5G6B5      ,0x0        ,0x0000F800 ,0x000007e0 ,0x0000001f ,2      ,0      ,0          ,FALSE },
+    {WINED3DFMT_X1R5G5B5    ,0x0        ,0x00007c00 ,0x000003e0 ,0x0000001f ,2      ,0      ,0          ,FALSE },
+    {WINED3DFMT_A1R5G5B5    ,0x00008000 ,0x00007c00 ,0x000003e0 ,0x0000001f ,2      ,0      ,0          ,FALSE },
+    {WINED3DFMT_A4R4G4B4    ,0x0000f000 ,0x00000f00 ,0x000000f0 ,0x0000000f ,2      ,0      ,0          ,FALSE },
+    {WINED3DFMT_R3G3B2      ,0x0        ,0x000000e0 ,0x0000001c ,0x00000003 ,1      ,0      ,0          ,FALSE },
+    {WINED3DFMT_A8          ,0x000000ff ,0x0        ,0x0        ,0x0        ,1      ,0      ,0          ,FALSE },
+    {WINED3DFMT_A8R3G3B2    ,0x0000ff00 ,0x000000e0 ,0x0000001c ,0x00000003 ,2      ,0      ,0          ,FALSE },
+    {WINED3DFMT_X4R4G4B4    ,0x0        ,0x00000f00 ,0x000000f0 ,0x0000000f ,2      ,0      ,0          ,FALSE },
+    {WINED3DFMT_A2B10G10R10 ,0xb0000000 ,0x000003ff ,0x000ffc00 ,0x3ff00000 ,4      ,0      ,0          ,FALSE },
+    {WINED3DFMT_A8B8G8R8    ,0xff000000 ,0x000000ff ,0x0000ff00 ,0x00ff0000 ,4      ,0      ,0          ,FALSE },
+    {WINED3DFMT_X8B8G8R8    ,0x0        ,0x000000ff ,0x0000ff00 ,0x00ff0000 ,4      ,0      ,0          ,FALSE },
+    {WINED3DFMT_G16R16      ,0x0        ,0x0000ffff ,0xffff0000 ,0x0        ,4      ,0      ,0          ,FALSE },
+    {WINED3DFMT_A2R10G10B10 ,0xb0000000 ,0x3ff00000 ,0x000ffc00 ,0x000003ff ,4      ,0      ,0          ,FALSE },
+    {WINED3DFMT_A16B16G16R16,0x1        ,0x0000ffff ,0xffff0000 ,0x0        ,8      ,0      ,0          ,FALSE },
+    /* Luminance */
+    {WINED3DFMT_L8          ,0x0        ,0x0        ,0x0        ,0x0        ,1      ,0      ,0          ,FALSE },
+    {WINED3DFMT_A8L8        ,0x0000ff00 ,0x0        ,0x0        ,0x0        ,2      ,0      ,0          ,FALSE },
+    {WINED3DFMT_A4L4        ,0x000000f0 ,0x0        ,0x0        ,0x0        ,1      ,0      ,0          ,FALSE },
+    /* Bump mapping stuff */
+    {WINED3DFMT_V8U8        ,0x0        ,0x0        ,0x0        ,0x0        ,2      ,0      ,0          ,FALSE },
+    {WINED3DFMT_L6V5U5      ,0x0        ,0x0        ,0x0        ,0x0        ,2      ,0      ,0          ,FALSE },
+    {WINED3DFMT_X8L8V8U8    ,0x0        ,0x0        ,0x0        ,0x0        ,4      ,0      ,0          ,FALSE },
+    {WINED3DFMT_Q8W8V8U8    ,0x0        ,0x0        ,0x0        ,0x0        ,4      ,0      ,0          ,FALSE },
+    {WINED3DFMT_V16U16      ,0x0        ,0x0        ,0x0        ,0x0        ,4      ,0      ,0          ,FALSE },
+    {WINED3DFMT_W11V11U10   ,0x0        ,0x0        ,0x0        ,0x0        ,4      ,0      ,0          ,FALSE },
+    {WINED3DFMT_A2W10V10U10 ,0xb0000000 ,0x0        ,0x0        ,0x0        ,4      ,0      ,0          ,FALSE },
+    /* Depth stencil formats */
+    {WINED3DFMT_D16_LOCKABLE,0x0        ,0x0        ,0x0        ,0x0        ,2      ,16     ,0          ,FALSE },
+    {WINED3DFMT_D32         ,0x0        ,0x0        ,0x0        ,0x0        ,4      ,32     ,0          ,FALSE },
+    {WINED3DFMT_D15S1       ,0x0        ,0x0        ,0x0        ,0x0        ,2      ,15     ,1          ,FALSE },
+    {WINED3DFMT_D24S8       ,0x0        ,0x0        ,0x0        ,0x0        ,4      ,24     ,8          ,FALSE },
+    {WINED3DFMT_D24X8       ,0x0        ,0x0        ,0x0        ,0x0        ,4      ,24     ,0          ,FALSE },
+    {WINED3DFMT_D24X4S4     ,0x0        ,0x0        ,0x0        ,0x0        ,4      ,24     ,4          ,FALSE },
+    {WINED3DFMT_D16         ,0x0        ,0x0        ,0x0        ,0x0        ,2      ,16     ,0          ,FALSE },
+    {WINED3DFMT_L16         ,0x0        ,0x0        ,0x0        ,0x0        ,2      ,16      ,0          ,FALSE },
+    {WINED3DFMT_D32F_LOCKABLE,0x0       ,0x0        ,0x0        ,0x0        ,4      ,32     ,0          ,FALSE },
+    {WINED3DFMT_D24FS8      ,0x0        ,0x0        ,0x0        ,0x0        ,4      ,24     ,8          ,FALSE },
+    /* Is this a vertex buffer? */
+    {WINED3DFMT_VERTEXDATA  ,0x0        ,0x0        ,0x0        ,0x0        ,0      ,0      ,0          ,FALSE },
+    {WINED3DFMT_INDEX16     ,0x0        ,0x0        ,0x0        ,0x0        ,2      ,0      ,0          ,FALSE },
+    {WINED3DFMT_INDEX32     ,0x0        ,0x0        ,0x0        ,0x0        ,4      ,0      ,0          ,FALSE },
+    {WINED3DFMT_Q16W16V16U16,0x0        ,0x0        ,0x0        ,0x0        ,8      ,0      ,0          ,FALSE },
+    /* Vendor-specific formats */
+    {WINED3DFMT_ATI2N       ,0x0        ,0x0        ,0x0        ,0x0        ,1      ,0      ,0          ,TRUE  },
+    {WINED3DFMT_NVHU        ,0x0        ,0x0        ,0x0        ,0x0        ,2      ,0      ,0          ,TRUE  },
+    {WINED3DFMT_NVHS        ,0x0        ,0x0        ,0x0        ,0x0        ,2      ,0      ,0          ,TRUE  },
+};
+
+typedef struct {
+    WINED3DFORMAT           fmt;
+    GLint                   glInternal, glGammaInternal, rtInternal, glFormat, glType;
+    unsigned int            Flags;
+} GlPixelFormatDescTemplate;
+
+/*****************************************************************************
+ * OpenGL format template. Contains unexciting formats which do not need
+ * extension checks. The order in this table is independent of the order in
+ * the table StaticPixelFormatDesc above. Not all formats have to be in this
+ * table.
+ */
+static const GlPixelFormatDescTemplate gl_formats_template[] = {
+  /*{                           internal                         ,srgbInternal                           , rtInternal,  format                    ,type \
+        ,Flags }*/
+    {WINED3DFMT_UNKNOWN        ,0                                ,0                                      , 0,           0                         ,0
+        ,0 },
+    /* FourCC formats */
+    /* GL_APPLE_ycbcr_422 claims that its '2YUV' format, which is supported via the UNSIGNED_SHORT_8_8_REV_APPLE type
+     * is equivalent to 'UYVY' format on Windows, and the 'YUVS' via UNSIGNED_SHORT_8_8_APPLE equates to 'YUY2'. The
+     * d3d9 test however shows that the opposite is true. Since the extension is from 2002, it predates the x86 based
+     * Macs, so probably the endianess differs. This could be tested as soon as we have a Windows and MacOS on a big
+     * endian machine
+     */
+    {WINED3DFMT_UYVY           ,GL_RGB                           ,GL_RGB                                 , 0,           GL_YCBCR_422_APPLE        ,UNSIGNED_SHORT_8_8_APPLE
+        ,WINED3DFMT_FLAG_FILTERING },
+    {WINED3DFMT_YUY2           ,GL_RGB                           ,GL_RGB                                 , 0,           GL_YCBCR_422_APPLE        ,UNSIGNED_SHORT_8_8_REV_APPLE
+        ,WINED3DFMT_FLAG_FILTERING },
+    {WINED3DFMT_YV12           ,GL_ALPHA                         ,GL_ALPHA                               , 0,           GL_ALPHA                  ,GL_UNSIGNED_BYTE
+        ,WINED3DFMT_FLAG_FILTERING },
+    {WINED3DFMT_DXT1           ,GL_COMPRESSED_RGBA_S3TC_DXT1_EXT ,GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT , 0,           GL_RGBA                   ,GL_UNSIGNED_BYTE
+        ,WINED3DFMT_FLAG_FILTERING },
+    {WINED3DFMT_DXT2           ,GL_COMPRESSED_RGBA_S3TC_DXT3_EXT ,GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT , 0,           GL_RGBA                   ,GL_UNSIGNED_BYTE
+        ,WINED3DFMT_FLAG_FILTERING },
+    {WINED3DFMT_DXT3           ,GL_COMPRESSED_RGBA_S3TC_DXT3_EXT ,GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT , 0,           GL_RGBA                   ,GL_UNSIGNED_BYTE
+        ,WINED3DFMT_FLAG_FILTERING },
+    {WINED3DFMT_DXT4           ,GL_COMPRESSED_RGBA_S3TC_DXT5_EXT ,GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT , 0,           GL_RGBA                   ,GL_UNSIGNED_BYTE
+        ,WINED3DFMT_FLAG_FILTERING },
+    {WINED3DFMT_DXT5           ,GL_COMPRESSED_RGBA_S3TC_DXT5_EXT ,GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT , 0,           GL_RGBA                   ,GL_UNSIGNED_BYTE
+        ,WINED3DFMT_FLAG_FILTERING },
+    {WINED3DFMT_MULTI2_ARGB8   ,0                                ,0                                      , 0,           0                         ,0
+        ,0 },
+    {WINED3DFMT_G8R8_G8B8      ,0                                ,0                                      , 0,           0                         ,0
+        ,0 },
+    {WINED3DFMT_R8G8_B8G8      ,0                                ,0                                      , 0,           0                         ,0
+        ,0 },
+    /* IEEE formats */
+    {WINED3DFMT_R32F           ,GL_RGB32F_ARB                    ,GL_RGB32F_ARB                          , 0,           GL_RED                    ,GL_FLOAT
+        ,WINED3DFMT_FLAG_RENDERTARGET },
+    {WINED3DFMT_G32R32F        ,0                                ,0                                      , 0,           0                         ,0
+        ,WINED3DFMT_FLAG_RENDERTARGET },
+    {WINED3DFMT_A32B32G32R32F  ,GL_RGBA32F_ARB                   ,GL_RGBA32F_ARB                         , 0,           GL_RGBA                   ,GL_FLOAT
+        ,WINED3DFMT_FLAG_RENDERTARGET },
+    /* Hmm? */
+    {WINED3DFMT_CxV8U8         ,0                                ,0                                      , 0,           0                         ,0
+        ,0 },
+    /* Float */
+    {WINED3DFMT_R16F           ,GL_RGB16F_ARB                    ,GL_RGB16F_ARB                          , 0,           GL_RED                    ,GL_HALF_FLOAT_ARB
+        ,WINED3DFMT_FLAG_FILTERING | WINED3DFMT_FLAG_RENDERTARGET },
+    {WINED3DFMT_G16R16F        ,0                                ,0                                      , 0,           0                         ,0
+        ,WINED3DFMT_FLAG_FILTERING | WINED3DFMT_FLAG_RENDERTARGET },
+    {WINED3DFMT_A16B16G16R16F  ,GL_RGBA16F_ARB                   ,GL_RGBA16F_ARB                         , 0,           GL_RGBA                   ,GL_HALF_FLOAT_ARB
+        ,WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING | WINED3DFMT_FLAG_RENDERTARGET },
+    /* Palettized formats */
+    {WINED3DFMT_A8P8,           0                                ,0                                      , 0,           0                         ,0
+        ,0 },
+    {WINED3DFMT_P8,             GL_COLOR_INDEX8_EXT              ,GL_COLOR_INDEX8_EXT                    , 0,           GL_COLOR_INDEX            ,GL_UNSIGNED_BYTE
+        ,0 },
+    /* Standard ARGB formats */
+    {WINED3DFMT_R8G8B8         ,GL_RGB8                          ,GL_RGB8                                , 0,           GL_BGR                    ,GL_UNSIGNED_BYTE
+        ,WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING | WINED3DFMT_FLAG_RENDERTARGET },
+    {WINED3DFMT_A8R8G8B8       ,GL_RGBA8                         ,GL_SRGB8_ALPHA8_EXT                    , 0,           GL_BGRA                   ,GL_UNSIGNED_INT_8_8_8_8_REV
+        ,WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING | WINED3DFMT_FLAG_RENDERTARGET },
+    {WINED3DFMT_X8R8G8B8       ,GL_RGB8                          ,GL_SRGB8_EXT                           , 0,           GL_BGRA                   ,GL_UNSIGNED_INT_8_8_8_8_REV
+        ,WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING | WINED3DFMT_FLAG_RENDERTARGET },
+    {WINED3DFMT_R5G6B5         ,GL_RGB5                          ,GL_RGB5                                , GL_RGB8,     GL_RGB                    ,GL_UNSIGNED_SHORT_5_6_5
+        ,WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING | WINED3DFMT_FLAG_RENDERTARGET },
+    {WINED3DFMT_X1R5G5B5       ,GL_RGB5                          ,GL_RGB5_A1                             , 0,           GL_BGRA                   ,GL_UNSIGNED_SHORT_1_5_5_5_REV
+        ,WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING },
+    {WINED3DFMT_A1R5G5B5       ,GL_RGB5_A1                       ,GL_RGB5_A1                             , 0,           GL_BGRA                   ,GL_UNSIGNED_SHORT_1_5_5_5_REV
+        ,WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING },
+    {WINED3DFMT_A4R4G4B4       ,GL_RGBA4                         ,GL_SRGB8_ALPHA8_EXT                    , 0,           GL_BGRA                   ,GL_UNSIGNED_SHORT_4_4_4_4_REV
+        ,WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING },
+    {WINED3DFMT_R3G3B2         ,GL_R3_G3_B2                      ,GL_R3_G3_B2                            , 0,           GL_RGB                    ,GL_UNSIGNED_BYTE_3_3_2
+        ,WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING },
+    {WINED3DFMT_A8             ,GL_ALPHA8                        ,GL_ALPHA8                              , 0,           GL_ALPHA                  ,GL_UNSIGNED_BYTE
+        ,WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING },
+    {WINED3DFMT_A8R3G3B2       ,0                                ,0                                      , 0,           0                         ,0
+        ,0 },
+    {WINED3DFMT_X4R4G4B4       ,GL_RGB4                          ,GL_RGB4                                , 0,           GL_BGRA                   ,GL_UNSIGNED_SHORT_4_4_4_4_REV
+        ,WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING},
+    {WINED3DFMT_A2B10G10R10    ,GL_RGB10_A2                      ,GL_RGB10_A2                            , 0,           GL_RGBA                   ,GL_UNSIGNED_INT_2_10_10_10_REV
+        ,WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING},
+    {WINED3DFMT_A8B8G8R8       ,GL_RGBA8                         ,GL_RGBA8                               , 0,           GL_RGBA                   ,GL_UNSIGNED_INT_8_8_8_8_REV
+        ,WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING},
+    {WINED3DFMT_X8B8G8R8       ,GL_RGB8                          ,GL_RGB8                                , 0,           GL_RGBA                   ,GL_UNSIGNED_INT_8_8_8_8_REV
+        ,WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING},
+    {WINED3DFMT_G16R16         ,GL_RGB16_EXT                     ,GL_RGB16_EXT                           , 0,           GL_RGB                    ,GL_UNSIGNED_SHORT
+        ,WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING },
+    {WINED3DFMT_A2R10G10B10    ,GL_RGB10_A2                      ,GL_RGB10_A2                            , 0,           GL_BGRA                   ,GL_UNSIGNED_INT_2_10_10_10_REV
+        ,WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING },
+    {WINED3DFMT_A16B16G16R16   ,GL_RGBA16_EXT                    ,GL_RGBA16_EXT                          , 0,           GL_RGBA                   ,GL_UNSIGNED_SHORT
+        ,WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING | WINED3DFMT_FLAG_RENDERTARGET },
+    /* Luminance */
+    {WINED3DFMT_L8             ,GL_LUMINANCE8                    ,GL_SLUMINANCE8_EXT                     , 0,           GL_LUMINANCE              ,GL_UNSIGNED_BYTE
+        ,WINED3DFMT_FLAG_FILTERING },
+    {WINED3DFMT_A8L8           ,GL_LUMINANCE8_ALPHA8             ,GL_SLUMINANCE8_ALPHA8_EXT              , 0,           GL_LUMINANCE_ALPHA        ,GL_UNSIGNED_BYTE
+        ,WINED3DFMT_FLAG_FILTERING },
+    {WINED3DFMT_A4L4           ,GL_LUMINANCE4_ALPHA4             ,GL_LUMINANCE4_ALPHA4                   , 0,           GL_LUMINANCE_ALPHA        ,GL_UNSIGNED_BYTE
+        ,0 },
+    /* Bump mapping stuff */
+    {WINED3DFMT_V8U8           ,GL_DSDT8_NV                      ,GL_DSDT8_NV                            , 0,           GL_DSDT_NV                ,GL_BYTE
+        ,WINED3DFMT_FLAG_FILTERING },
+    {WINED3DFMT_L6V5U5         ,GL_DSDT8_MAG8_NV                 ,GL_DSDT8_MAG8_NV                       , 0,           GL_DSDT_MAG_NV            ,GL_BYTE
+        ,WINED3DFMT_FLAG_FILTERING },
+    {WINED3DFMT_X8L8V8U8       ,GL_DSDT8_MAG8_INTENSITY8_NV      ,GL_DSDT8_MAG8_INTENSITY8_NV            , 0,           GL_DSDT_MAG_VIB_NV        ,GL_UNSIGNED_INT_8_8_S8_S8_REV_NV
+        ,WINED3DFMT_FLAG_FILTERING },
+    {WINED3DFMT_Q8W8V8U8       ,GL_SIGNED_RGBA8_NV               ,GL_SIGNED_RGBA8_NV                     , 0,           GL_RGBA                   ,GL_BYTE
+        ,WINED3DFMT_FLAG_FILTERING },
+    {WINED3DFMT_V16U16         ,GL_SIGNED_HILO16_NV              ,GL_SIGNED_HILO16_NV                    , 0,           GL_HILO_NV                ,GL_SHORT
+        ,WINED3DFMT_FLAG_FILTERING },
+    {WINED3DFMT_W11V11U10      ,0                                ,0                                      , 0,           0                         ,0
+        ,0 },
+    {WINED3DFMT_A2W10V10U10    ,0                                ,0                                      , 0,           0                         ,0
+        ,0 },
+    /* Depth stencil formats */
+    {WINED3DFMT_D16_LOCKABLE   ,GL_DEPTH_COMPONENT24_ARB         ,GL_DEPTH_COMPONENT24_ARB               , 0,           GL_DEPTH_COMPONENT        ,GL_UNSIGNED_SHORT
+        ,WINED3DFMT_FLAG_DEPTH },
+    {WINED3DFMT_D32            ,GL_DEPTH_COMPONENT32_ARB         ,GL_DEPTH_COMPONENT32_ARB               , 0,           GL_DEPTH_COMPONENT        ,GL_UNSIGNED_INT
+        ,WINED3DFMT_FLAG_DEPTH },
+    {WINED3DFMT_D15S1          ,GL_DEPTH_COMPONENT24_ARB         ,GL_DEPTH_COMPONENT24_ARB               , 0,           GL_DEPTH_COMPONENT        ,GL_UNSIGNED_SHORT
+        ,WINED3DFMT_FLAG_DEPTH | WINED3DFMT_FLAG_STENCIL },
+    {WINED3DFMT_D24S8          ,GL_DEPTH_COMPONENT24_ARB         ,GL_DEPTH_COMPONENT24_ARB               , 0,           GL_DEPTH_COMPONENT        ,GL_UNSIGNED_INT
+        ,WINED3DFMT_FLAG_FILTERING | WINED3DFMT_FLAG_DEPTH | WINED3DFMT_FLAG_STENCIL },
+    {WINED3DFMT_D24X8          ,GL_DEPTH_COMPONENT24_ARB         ,GL_DEPTH_COMPONENT24_ARB               , 0,           GL_DEPTH_COMPONENT        ,GL_UNSIGNED_INT
+        ,WINED3DFMT_FLAG_FILTERING | WINED3DFMT_FLAG_DEPTH },
+    {WINED3DFMT_D24X4S4        ,GL_DEPTH_COMPONENT24_ARB         ,GL_DEPTH_COMPONENT24_ARB               , 0,           GL_DEPTH_COMPONENT        ,GL_UNSIGNED_INT
+        ,WINED3DFMT_FLAG_DEPTH | WINED3DFMT_FLAG_STENCIL },
+    {WINED3DFMT_D16            ,GL_DEPTH_COMPONENT24_ARB         ,GL_DEPTH_COMPONENT24_ARB               , 0,           GL_DEPTH_COMPONENT        ,GL_UNSIGNED_SHORT
+        ,WINED3DFMT_FLAG_FILTERING | WINED3DFMT_FLAG_DEPTH },
+    {WINED3DFMT_L16            ,GL_LUMINANCE16_EXT               ,GL_LUMINANCE16_EXT                     , 0,           GL_LUMINANCE              ,GL_UNSIGNED_SHORT
+        ,WINED3DFMT_FLAG_FILTERING },
+    {WINED3DFMT_D32F_LOCKABLE  ,GL_DEPTH_COMPONENT32_ARB         ,GL_DEPTH_COMPONENT32_ARB               , 0,           GL_DEPTH_COMPONENT        ,GL_FLOAT
+        ,WINED3DFMT_FLAG_DEPTH },
+    {WINED3DFMT_D24FS8         ,GL_DEPTH_COMPONENT24_ARB         ,GL_DEPTH_COMPONENT24_ARB               , 0,           GL_DEPTH_COMPONENT        ,GL_FLOAT
+        ,WINED3DFMT_FLAG_DEPTH | WINED3DFMT_FLAG_STENCIL},
+    /* Is this a vertex buffer? */
+    {WINED3DFMT_VERTEXDATA     ,0                                ,0                                      , 0,           0                         ,0
+        ,0 },
+    {WINED3DFMT_INDEX16        ,0                                ,0                                      , 0,           0                         ,0
+        ,0 },
+    {WINED3DFMT_INDEX32        ,0                                ,0                                      , 0,           0                         ,0
+        ,0 },
+    {WINED3DFMT_Q16W16V16U16   ,GL_COLOR_INDEX                   ,GL_COLOR_INDEX                         , 0,           GL_COLOR_INDEX            ,GL_UNSIGNED_SHORT
+        ,0 },
+    /* Vendor-specific formats */
+    {WINED3DFMT_ATI2N          ,0                                ,0                                      , 0,           GL_LUMINANCE_ALPHA        ,GL_UNSIGNED_BYTE
+        ,0 },
+    {WINED3DFMT_NVHU           ,0                                ,0                                      , 0,           GL_LUMINANCE_ALPHA        ,GL_UNSIGNED_BYTE
+        ,0 },
+    {WINED3DFMT_NVHS           ,0                                ,0                                      , 0,           GL_LUMINANCE_ALPHA        ,GL_UNSIGNED_BYTE
+        ,0 }
+};
+
+static inline int getFmtIdx(WINED3DFORMAT fmt) {
+    /* First check if the format is at the position of its value.
+     * This will catch the argb formats before the loop is entered
+     */
+    if(fmt < (sizeof(formats) / sizeof(formats[0])) && formats[fmt].format == fmt) {
+        return fmt;
+    } else {
+        unsigned int i;
+        for(i = 0; i < (sizeof(formats) / sizeof(formats[0])); i++) {
+            if(formats[i].format == fmt) {
+                return i;
+            }
+        }
+    }
+    return -1;
+}
+
+#define GLINFO_LOCATION (*gl_info)
+BOOL initPixelFormats(WineD3D_GL_Info *gl_info)
+{
+    unsigned int src;
+    int dst;
+
+    gl_info->gl_formats = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
+                                    sizeof(formats) / sizeof(formats[0]) * sizeof(gl_info->gl_formats[0]));
+    if(!gl_info->gl_formats) return FALSE;
+
+    /* If a format depends on some extensions, remove them from the table above and initialize them
+     * after this loop
+     */
+    for(src = 0; src < sizeof(gl_formats_template) / sizeof(gl_formats_template[0]); src++) {
+        dst = getFmtIdx(gl_formats_template[src].fmt);
+        gl_info->gl_formats[dst].glInternal      = gl_formats_template[src].glInternal;
+        gl_info->gl_formats[dst].glGammaInternal = gl_formats_template[src].glGammaInternal;
+        gl_info->gl_formats[dst].glFormat        = gl_formats_template[src].glFormat;
+        gl_info->gl_formats[dst].glType          = gl_formats_template[src].glType;
+        gl_info->gl_formats[dst].color_fixup     = COLOR_FIXUP_IDENTITY;
+        gl_info->gl_formats[dst].Flags           = gl_formats_template[src].Flags;
+        gl_info->gl_formats[dst].heightscale     = 1.0;
+
+        if(wined3d_settings.offscreen_rendering_mode == ORM_FBO &&
+           gl_formats_template[src].rtInternal != 0) {
+            GLuint tex, fb;
+            GLenum status;
+
+            /* Check if the default internal format is supported as a frame buffer target, otherwise
+             * fall back to the render target internal.
+             *
+             * Try to stick to the standard format if possible, this limits precision differences
+             */
+            while(glGetError());
+            glGenTextures(1, &tex);
+            glBindTexture(GL_TEXTURE_2D, tex);
+            glTexImage2D(GL_TEXTURE_2D, 0, gl_formats_template[src].glInternal, 16, 16, 0,
+                         GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+
+            GL_EXTCALL(glGenFramebuffersEXT(1, &fb));
+            GL_EXTCALL(glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fb));
+            GL_EXTCALL(glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
+                                                 GL_TEXTURE_2D, tex, 0));
+
+            status = GL_EXTCALL(glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT));
+            GL_EXTCALL(glDeleteFramebuffersEXT(1, &fb));
+            glDeleteTextures(1, &tex);
+
+            checkGLcall("Framebuffer format check");
+
+            if(status != GL_FRAMEBUFFER_COMPLETE_EXT) {
+                TRACE("Internal format of %s not supported as frame buffer target, using render target internal instead\n",
+                    debug_d3dformat(gl_formats_template[src].fmt));
+                gl_info->gl_formats[dst].rtInternal = gl_formats_template[src].rtInternal;
+            } else {
+                TRACE("Format %s is supported as fbo target\n", debug_d3dformat(gl_formats_template[src].fmt));
+                gl_info->gl_formats[dst].rtInternal = gl_formats_template[src].glInternal;
+            }
+
+        } else {
+            gl_info->gl_formats[dst].rtInternal = gl_formats_template[src].glInternal;
+        }
+    }
+
+    dst = getFmtIdx(WINED3DFMT_R16F);
+    gl_info->gl_formats[dst].color_fixup = create_color_fixup_desc(
+            0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_ONE, 0, CHANNEL_SOURCE_ONE, 0, CHANNEL_SOURCE_W);
+
+    dst = getFmtIdx(WINED3DFMT_R32F);
+    gl_info->gl_formats[dst].color_fixup = create_color_fixup_desc(
+            0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_ONE, 0, CHANNEL_SOURCE_ONE, 0, CHANNEL_SOURCE_W);
+
+    dst = getFmtIdx(WINED3DFMT_G16R16);
+    gl_info->gl_formats[dst].color_fixup = create_color_fixup_desc(
+            0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_Y, 0, CHANNEL_SOURCE_ONE, 0, CHANNEL_SOURCE_W);
+
+    dst = getFmtIdx(WINED3DFMT_G16R16F);
+    gl_info->gl_formats[dst].color_fixup = create_color_fixup_desc(
+            0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_Y, 0, CHANNEL_SOURCE_ONE, 0, CHANNEL_SOURCE_W);
+
+    dst = getFmtIdx(WINED3DFMT_G32R32F);
+    gl_info->gl_formats[dst].color_fixup = create_color_fixup_desc(
+            0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_Y, 0, CHANNEL_SOURCE_ONE, 0, CHANNEL_SOURCE_W);
+
+    /* V8U8 is supported natively by GL_ATI_envmap_bumpmap and GL_NV_texture_shader.
+     * V16U16 is only supported by GL_NV_texture_shader. The formats need fixup if
+     * their extensions are not available. GL_ATI_envmap_bumpmap is not used because
+     * the only driver that implements it(fglrx) has a buggy implementation.
+     *
+     * V8U8 and V16U16 need a fixup of the undefined blue channel. OpenGL
+     * returns 0.0 when sampling from it, DirectX 1.0. So we always have in-shader
+     * conversion for this format.
+     */
+    if (!GL_SUPPORT(NV_TEXTURE_SHADER))
+    {
+        dst = getFmtIdx(WINED3DFMT_V8U8);
+        gl_info->gl_formats[dst].color_fixup = create_color_fixup_desc(
+                1, CHANNEL_SOURCE_X, 1, CHANNEL_SOURCE_Y, 0, CHANNEL_SOURCE_ONE, 0, CHANNEL_SOURCE_ONE);
+        dst = getFmtIdx(WINED3DFMT_V16U16);
+        gl_info->gl_formats[dst].color_fixup = create_color_fixup_desc(
+                1, CHANNEL_SOURCE_X, 1, CHANNEL_SOURCE_Y, 0, CHANNEL_SOURCE_ONE, 0, CHANNEL_SOURCE_ONE);
+    }
+    else
+    {
+        dst = getFmtIdx(WINED3DFMT_V8U8);
+        gl_info->gl_formats[dst].color_fixup = create_color_fixup_desc(
+                0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_Y, 0, CHANNEL_SOURCE_ONE, 0, CHANNEL_SOURCE_ONE);
+        dst = getFmtIdx(WINED3DFMT_V16U16);
+        gl_info->gl_formats[dst].color_fixup = create_color_fixup_desc(
+                0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_Y, 0, CHANNEL_SOURCE_ONE, 0, CHANNEL_SOURCE_ONE);
+    }
+
+    if(!GL_SUPPORT(NV_TEXTURE_SHADER)) {
+        /* If GL_NV_texture_shader is not supported, those formats are converted, incompatibly
+         * with each other
+         */
+        dst = getFmtIdx(WINED3DFMT_L6V5U5);
+        gl_info->gl_formats[dst].color_fixup = create_color_fixup_desc(
+                1, CHANNEL_SOURCE_X, 1, CHANNEL_SOURCE_Z, 0, CHANNEL_SOURCE_Y, 0, CHANNEL_SOURCE_ONE);
+        dst = getFmtIdx(WINED3DFMT_X8L8V8U8);
+        gl_info->gl_formats[dst].color_fixup = create_color_fixup_desc(
+                1, CHANNEL_SOURCE_X, 1, CHANNEL_SOURCE_Y, 0, CHANNEL_SOURCE_Z, 0, CHANNEL_SOURCE_W);
+        dst = getFmtIdx(WINED3DFMT_Q8W8V8U8);
+        gl_info->gl_formats[dst].color_fixup = create_color_fixup_desc(
+                1, CHANNEL_SOURCE_X, 1, CHANNEL_SOURCE_Y, 1, CHANNEL_SOURCE_Z, 1, CHANNEL_SOURCE_W);
+    } else {
+        /* If GL_NV_texture_shader is supported, WINED3DFMT_L6V5U5 and WINED3DFMT_X8L8V8U8
+         * are converted at surface loading time, but they do not need any modification in
+         * the shader, thus they are compatible with all WINED3DFMT_UNKNOWN group formats.
+         * WINED3DFMT_Q8W8V8U8 doesn't even need load-time conversion
+         */
+    }
+
+    if(GL_SUPPORT(EXT_TEXTURE_COMPRESSION_RGTC)) {
+        dst = getFmtIdx(WINED3DFMT_ATI2N);
+        gl_info->gl_formats[dst].glInternal = GL_COMPRESSED_RED_GREEN_RGTC2_EXT;
+        gl_info->gl_formats[dst].glGammaInternal = GL_COMPRESSED_RED_GREEN_RGTC2_EXT;
+        gl_info->gl_formats[dst].color_fixup = create_color_fixup_desc(
+                0, CHANNEL_SOURCE_Y, 0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_ONE, 0, CHANNEL_SOURCE_ONE);
+    } else if(GL_SUPPORT(ATI_TEXTURE_COMPRESSION_3DC)) {
+        dst = getFmtIdx(WINED3DFMT_ATI2N);
+        gl_info->gl_formats[dst].glInternal = GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI;
+        gl_info->gl_formats[dst].glGammaInternal = GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI;
+        gl_info->gl_formats[dst].color_fixup= create_color_fixup_desc(
+                0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_W, 0, CHANNEL_SOURCE_ONE, 0, CHANNEL_SOURCE_ONE);
+    }
+
+    if(!GL_SUPPORT(APPLE_YCBCR_422)) {
+        dst = getFmtIdx(WINED3DFMT_YUY2);
+        gl_info->gl_formats[dst].glInternal = GL_LUMINANCE_ALPHA;
+        gl_info->gl_formats[dst].glGammaInternal = GL_LUMINANCE_ALPHA; /* not srgb */
+        gl_info->gl_formats[dst].glFormat = GL_LUMINANCE_ALPHA;
+        gl_info->gl_formats[dst].glType = GL_UNSIGNED_BYTE;
+        gl_info->gl_formats[dst].color_fixup = create_yuv_fixup_desc(YUV_FIXUP_YUY2);
+
+        dst = getFmtIdx(WINED3DFMT_UYVY);
+        gl_info->gl_formats[dst].glInternal = GL_LUMINANCE_ALPHA;
+        gl_info->gl_formats[dst].glGammaInternal = GL_LUMINANCE_ALPHA; /* not srgb */
+        gl_info->gl_formats[dst].glFormat = GL_LUMINANCE_ALPHA;
+        gl_info->gl_formats[dst].glType = GL_UNSIGNED_BYTE;
+        gl_info->gl_formats[dst].color_fixup = create_yuv_fixup_desc(YUV_FIXUP_UYVY);
+    }
+
+    dst = getFmtIdx(WINED3DFMT_YV12);
+    gl_info->gl_formats[dst].heightscale = 1.5;
+    gl_info->gl_formats[dst].color_fixup = create_yuv_fixup_desc(YUV_FIXUP_YV12);
+
+    return TRUE;
+}
+
+/* NOTE: Make sure these are in the correct numerical order. (see /include/wined3d_types.h) */
+static WINED3DGLTYPE const glTypeLookupTemplate[WINED3DDECLTYPE_UNUSED] = {
+                                  {WINED3DDECLTYPE_FLOAT1,    1, GL_FLOAT           , GL_FALSE ,sizeof(float)},
+                                  {WINED3DDECLTYPE_FLOAT2,    2, GL_FLOAT           , GL_FALSE ,sizeof(float)},
+                                  {WINED3DDECLTYPE_FLOAT3,    3, GL_FLOAT           , GL_FALSE ,sizeof(float)},
+                                  {WINED3DDECLTYPE_FLOAT4,    4, GL_FLOAT           , GL_FALSE ,sizeof(float)},
+                                  {WINED3DDECLTYPE_D3DCOLOR,  4, GL_UNSIGNED_BYTE   , GL_TRUE  ,sizeof(BYTE)},
+                                  {WINED3DDECLTYPE_UBYTE4,    4, GL_UNSIGNED_BYTE   , GL_FALSE ,sizeof(BYTE)},
+                                  {WINED3DDECLTYPE_SHORT2,    2, GL_SHORT           , GL_FALSE ,sizeof(short int)},
+                                  {WINED3DDECLTYPE_SHORT4,    4, GL_SHORT           , GL_FALSE ,sizeof(short int)},
+                                  {WINED3DDECLTYPE_UBYTE4N,   4, GL_UNSIGNED_BYTE   , GL_TRUE  ,sizeof(BYTE)},
+                                  {WINED3DDECLTYPE_SHORT2N,   2, GL_SHORT           , GL_TRUE  ,sizeof(short int)},
+                                  {WINED3DDECLTYPE_SHORT4N,   4, GL_SHORT           , GL_TRUE  ,sizeof(short int)},
+                                  {WINED3DDECLTYPE_USHORT2N,  2, GL_UNSIGNED_SHORT  , GL_TRUE  ,sizeof(short int)},
+                                  {WINED3DDECLTYPE_USHORT4N,  4, GL_UNSIGNED_SHORT  , GL_TRUE  ,sizeof(short int)},
+                                  {WINED3DDECLTYPE_UDEC3,     3, GL_UNSIGNED_SHORT  , GL_FALSE ,sizeof(short int)},
+                                  {WINED3DDECLTYPE_DEC3N,     3, GL_SHORT           , GL_TRUE  ,sizeof(short int)},
+                                  {WINED3DDECLTYPE_FLOAT16_2, 2, GL_HALF_FLOAT_NV   , GL_FALSE ,sizeof(GLhalfNV)},
+                                  {WINED3DDECLTYPE_FLOAT16_4, 4, GL_HALF_FLOAT_NV   , GL_FALSE ,sizeof(GLhalfNV)}};
+
+void init_type_lookup(WineD3D_GL_Info *gl_info) {
+    memcpy(gl_info->glTypeLookup, glTypeLookupTemplate, sizeof(glTypeLookupTemplate));
+    if(!GL_SUPPORT(NV_HALF_FLOAT)) {
+        /* Do not change the size of the type, it is CPU side. We have to change the GPU-side information though.
+         * It is the job of the vertex buffer code to make sure that the vbos have the right format
+         */
+        gl_info->glTypeLookup[WINED3DDECLTYPE_FLOAT16_2].glType = GL_FLOAT;
+        gl_info->glTypeLookup[WINED3DDECLTYPE_FLOAT16_4].glType = GL_FLOAT;
+    }
+}
+
+#undef GLINFO_LOCATION
+
+#define GLINFO_LOCATION This->adapter->gl_info
+
+const StaticPixelFormatDesc *getFormatDescEntry(WINED3DFORMAT fmt, const WineD3D_GL_Info *gl_info,
+        const struct GlPixelFormatDesc **glDesc)
+{
+    int idx = getFmtIdx(fmt);
+
+    if(idx == -1) {
+        FIXME("Can't find format %s(%d) in the format lookup table\n", debug_d3dformat(fmt), fmt);
+        /* Get the caller a valid pointer */
+        idx = getFmtIdx(WINED3DFMT_UNKNOWN);
+    }
+    if(glDesc) {
+        if(!gl_info->gl_formats) {
+            /* If we do not have gl format information, provide a dummy NULL format. This is an easy way to make
+             * all gl caps check return "unsupported" than catching the lack of gl all over the code. ANSI C requires
+             * static variables to be initialized to 0.
+             */
+            static const struct GlPixelFormatDesc dummyFmt;
+            *glDesc = &dummyFmt;
+        } else {
+            *glDesc = &gl_info->gl_formats[idx];
+        }
+    }
+    return &formats[idx];
+}
+
+/*****************************************************************************
+ * Trace formatting of useful values
+ */
+const char* debug_d3dformat(WINED3DFORMAT fmt) {
+  switch (fmt) {
+#define FMT_TO_STR(fmt) case fmt: return #fmt
+    FMT_TO_STR(WINED3DFMT_UNKNOWN);
+    FMT_TO_STR(WINED3DFMT_R8G8B8);
+    FMT_TO_STR(WINED3DFMT_A8R8G8B8);
+    FMT_TO_STR(WINED3DFMT_X8R8G8B8);
+    FMT_TO_STR(WINED3DFMT_R5G6B5);
+    FMT_TO_STR(WINED3DFMT_X1R5G5B5);
+    FMT_TO_STR(WINED3DFMT_A1R5G5B5);
+    FMT_TO_STR(WINED3DFMT_A4R4G4B4);
+    FMT_TO_STR(WINED3DFMT_R3G3B2);
+    FMT_TO_STR(WINED3DFMT_A8);
+    FMT_TO_STR(WINED3DFMT_A8R3G3B2);
+    FMT_TO_STR(WINED3DFMT_X4R4G4B4);
+    FMT_TO_STR(WINED3DFMT_A2B10G10R10);
+    FMT_TO_STR(WINED3DFMT_A8B8G8R8);
+    FMT_TO_STR(WINED3DFMT_X8B8G8R8);
+    FMT_TO_STR(WINED3DFMT_G16R16);
+    FMT_TO_STR(WINED3DFMT_A2R10G10B10);
+    FMT_TO_STR(WINED3DFMT_A16B16G16R16);
+    FMT_TO_STR(WINED3DFMT_A8P8);
+    FMT_TO_STR(WINED3DFMT_P8);
+    FMT_TO_STR(WINED3DFMT_L8);
+    FMT_TO_STR(WINED3DFMT_A8L8);
+    FMT_TO_STR(WINED3DFMT_A4L4);
+    FMT_TO_STR(WINED3DFMT_V8U8);
+    FMT_TO_STR(WINED3DFMT_L6V5U5);
+    FMT_TO_STR(WINED3DFMT_X8L8V8U8);
+    FMT_TO_STR(WINED3DFMT_Q8W8V8U8);
+    FMT_TO_STR(WINED3DFMT_V16U16);
+    FMT_TO_STR(WINED3DFMT_W11V11U10);
+    FMT_TO_STR(WINED3DFMT_A2W10V10U10);
+    FMT_TO_STR(WINED3DFMT_UYVY);
+    FMT_TO_STR(WINED3DFMT_YUY2);
+    FMT_TO_STR(WINED3DFMT_YV12);
+    FMT_TO_STR(WINED3DFMT_DXT1);
+    FMT_TO_STR(WINED3DFMT_DXT2);
+    FMT_TO_STR(WINED3DFMT_DXT3);
+    FMT_TO_STR(WINED3DFMT_DXT4);
+    FMT_TO_STR(WINED3DFMT_DXT5);
+    FMT_TO_STR(WINED3DFMT_MULTI2_ARGB8);
+    FMT_TO_STR(WINED3DFMT_G8R8_G8B8);
+    FMT_TO_STR(WINED3DFMT_R8G8_B8G8);
+    FMT_TO_STR(WINED3DFMT_D16_LOCKABLE);
+    FMT_TO_STR(WINED3DFMT_D32);
+    FMT_TO_STR(WINED3DFMT_D15S1);
+    FMT_TO_STR(WINED3DFMT_D24S8);
+    FMT_TO_STR(WINED3DFMT_D24X8);
+    FMT_TO_STR(WINED3DFMT_D24X4S4);
+    FMT_TO_STR(WINED3DFMT_D16);
+    FMT_TO_STR(WINED3DFMT_L16);
+    FMT_TO_STR(WINED3DFMT_D32F_LOCKABLE);
+    FMT_TO_STR(WINED3DFMT_D24FS8);
+    FMT_TO_STR(WINED3DFMT_VERTEXDATA);
+    FMT_TO_STR(WINED3DFMT_INDEX16);
+    FMT_TO_STR(WINED3DFMT_INDEX32);
+    FMT_TO_STR(WINED3DFMT_Q16W16V16U16);
+    FMT_TO_STR(WINED3DFMT_R16F);
+    FMT_TO_STR(WINED3DFMT_G16R16F);
+    FMT_TO_STR(WINED3DFMT_A16B16G16R16F);
+    FMT_TO_STR(WINED3DFMT_R32F);
+    FMT_TO_STR(WINED3DFMT_G32R32F);
+    FMT_TO_STR(WINED3DFMT_A32B32G32R32F);
+    FMT_TO_STR(WINED3DFMT_CxV8U8);
+    FMT_TO_STR(WINED3DFMT_ATI2N);
+    FMT_TO_STR(WINED3DFMT_NVHU);
+    FMT_TO_STR(WINED3DFMT_NVHS);
+#undef FMT_TO_STR
+  default:
+    {
+      char fourcc[5];
+      fourcc[0] = (char)(fmt);
+      fourcc[1] = (char)(fmt >> 8);
+      fourcc[2] = (char)(fmt >> 16);
+      fourcc[3] = (char)(fmt >> 24);
+      fourcc[4] = 0;
+      if( isprint(fourcc[0]) && isprint(fourcc[1]) && isprint(fourcc[2]) && isprint(fourcc[3]) )
+        FIXME("Unrecognized %u (as fourcc: %s) WINED3DFORMAT!\n", fmt, fourcc);
+      else
+        FIXME("Unrecognized %u WINED3DFORMAT!\n", fmt);
+    }
+    return "unrecognized";
+  }
+}
+
+const char* debug_d3ddevicetype(WINED3DDEVTYPE devtype) {
+  switch (devtype) {
+#define DEVTYPE_TO_STR(dev) case dev: return #dev
+    DEVTYPE_TO_STR(WINED3DDEVTYPE_HAL);
+    DEVTYPE_TO_STR(WINED3DDEVTYPE_REF);
+    DEVTYPE_TO_STR(WINED3DDEVTYPE_SW);
+#undef DEVTYPE_TO_STR
+  default:
+    FIXME("Unrecognized %u WINED3DDEVTYPE!\n", devtype);
+    return "unrecognized";
+  }
+}
+
+const char* debug_d3dusage(DWORD usage) {
+  switch (usage & WINED3DUSAGE_MASK) {
+#define WINED3DUSAGE_TO_STR(u) case u: return #u
+    WINED3DUSAGE_TO_STR(WINED3DUSAGE_RENDERTARGET);
+    WINED3DUSAGE_TO_STR(WINED3DUSAGE_DEPTHSTENCIL);
+    WINED3DUSAGE_TO_STR(WINED3DUSAGE_WRITEONLY);
+    WINED3DUSAGE_TO_STR(WINED3DUSAGE_SOFTWAREPROCESSING);
+    WINED3DUSAGE_TO_STR(WINED3DUSAGE_DONOTCLIP);
+    WINED3DUSAGE_TO_STR(WINED3DUSAGE_POINTS);
+    WINED3DUSAGE_TO_STR(WINED3DUSAGE_RTPATCHES);
+    WINED3DUSAGE_TO_STR(WINED3DUSAGE_NPATCHES);
+    WINED3DUSAGE_TO_STR(WINED3DUSAGE_DYNAMIC);
+    WINED3DUSAGE_TO_STR(WINED3DUSAGE_AUTOGENMIPMAP);
+    WINED3DUSAGE_TO_STR(WINED3DUSAGE_DMAP);
+#undef WINED3DUSAGE_TO_STR
+  case 0: return "none";
+  default:
+    FIXME("Unrecognized %u Usage!\n", usage);
+    return "unrecognized";
+  }
+}
+
+const char* debug_d3dusagequery(DWORD usagequery) {
+  switch (usagequery & WINED3DUSAGE_QUERY_MASK) {
+#define WINED3DUSAGEQUERY_TO_STR(u) case u: return #u
+    WINED3DUSAGEQUERY_TO_STR(WINED3DUSAGE_QUERY_FILTER);
+    WINED3DUSAGEQUERY_TO_STR(WINED3DUSAGE_QUERY_LEGACYBUMPMAP);
+    WINED3DUSAGEQUERY_TO_STR(WINED3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING);
+    WINED3DUSAGEQUERY_TO_STR(WINED3DUSAGE_QUERY_SRGBREAD);
+    WINED3DUSAGEQUERY_TO_STR(WINED3DUSAGE_QUERY_SRGBWRITE);
+    WINED3DUSAGEQUERY_TO_STR(WINED3DUSAGE_QUERY_VERTEXTEXTURE);
+    WINED3DUSAGEQUERY_TO_STR(WINED3DUSAGE_QUERY_WRAPANDMIP);
+#undef WINED3DUSAGEQUERY_TO_STR
+  case 0: return "none";
+  default:
+    FIXME("Unrecognized %u Usage Query!\n", usagequery);
+    return "unrecognized";
+  }
+}
+
+const char* debug_d3ddeclmethod(WINED3DDECLMETHOD method) {
+    switch (method) {
+#define WINED3DDECLMETHOD_TO_STR(u) case u: return #u
+        WINED3DDECLMETHOD_TO_STR(WINED3DDECLMETHOD_DEFAULT);
+        WINED3DDECLMETHOD_TO_STR(WINED3DDECLMETHOD_PARTIALU);
+        WINED3DDECLMETHOD_TO_STR(WINED3DDECLMETHOD_PARTIALV);
+        WINED3DDECLMETHOD_TO_STR(WINED3DDECLMETHOD_CROSSUV);
+        WINED3DDECLMETHOD_TO_STR(WINED3DDECLMETHOD_UV);
+        WINED3DDECLMETHOD_TO_STR(WINED3DDECLMETHOD_LOOKUP);
+        WINED3DDECLMETHOD_TO_STR(WINED3DDECLMETHOD_LOOKUPPRESAMPLED);
+#undef WINED3DDECLMETHOD_TO_STR
+        default:
+            FIXME("Unrecognized %u declaration method!\n", method);
+            return "unrecognized";
+    }
+}
+
+const char* debug_d3ddecltype(WINED3DDECLTYPE type) {
+    switch (type) {
+#define WINED3DDECLTYPE_TO_STR(u) case u: return #u
+        WINED3DDECLTYPE_TO_STR(WINED3DDECLTYPE_FLOAT1);
+        WINED3DDECLTYPE_TO_STR(WINED3DDECLTYPE_FLOAT2);
+        WINED3DDECLTYPE_TO_STR(WINED3DDECLTYPE_FLOAT3);
+        WINED3DDECLTYPE_TO_STR(WINED3DDECLTYPE_FLOAT4);
+        WINED3DDECLTYPE_TO_STR(WINED3DDECLTYPE_D3DCOLOR);
+        WINED3DDECLTYPE_TO_STR(WINED3DDECLTYPE_UBYTE4);
+        WINED3DDECLTYPE_TO_STR(WINED3DDECLTYPE_SHORT2);
+        WINED3DDECLTYPE_TO_STR(WINED3DDECLTYPE_SHORT4);
+        WINED3DDECLTYPE_TO_STR(WINED3DDECLTYPE_UBYTE4N);
+        WINED3DDECLTYPE_TO_STR(WINED3DDECLTYPE_SHORT2N);
+        WINED3DDECLTYPE_TO_STR(WINED3DDECLTYPE_SHORT4N);
+        WINED3DDECLTYPE_TO_STR(WINED3DDECLTYPE_USHORT2N);
+        WINED3DDECLTYPE_TO_STR(WINED3DDECLTYPE_USHORT4N);
+        WINED3DDECLTYPE_TO_STR(WINED3DDECLTYPE_UDEC3);
+        WINED3DDECLTYPE_TO_STR(WINED3DDECLTYPE_DEC3N);
+        WINED3DDECLTYPE_TO_STR(WINED3DDECLTYPE_FLOAT16_2);
+        WINED3DDECLTYPE_TO_STR(WINED3DDECLTYPE_FLOAT16_4);
+        WINED3DDECLTYPE_TO_STR(WINED3DDECLTYPE_UNUSED);
+#undef WINED3DDECLTYPE_TO_STR
+        default:
+            FIXME("Unrecognized %u declaration type!\n", type);
+            return "unrecognized";
+    }
+}
+
+const char* debug_d3ddeclusage(BYTE usage) {
+    switch (usage) {
+#define WINED3DDECLUSAGE_TO_STR(u) case u: return #u
+        WINED3DDECLUSAGE_TO_STR(WINED3DDECLUSAGE_POSITION);
+        WINED3DDECLUSAGE_TO_STR(WINED3DDECLUSAGE_BLENDWEIGHT);
+        WINED3DDECLUSAGE_TO_STR(WINED3DDECLUSAGE_BLENDINDICES);
+        WINED3DDECLUSAGE_TO_STR(WINED3DDECLUSAGE_NORMAL);
+        WINED3DDECLUSAGE_TO_STR(WINED3DDECLUSAGE_PSIZE);
+        WINED3DDECLUSAGE_TO_STR(WINED3DDECLUSAGE_TEXCOORD);
+        WINED3DDECLUSAGE_TO_STR(WINED3DDECLUSAGE_TANGENT);
+        WINED3DDECLUSAGE_TO_STR(WINED3DDECLUSAGE_BINORMAL);
+        WINED3DDECLUSAGE_TO_STR(WINED3DDECLUSAGE_TESSFACTOR);
+        WINED3DDECLUSAGE_TO_STR(WINED3DDECLUSAGE_POSITIONT);
+        WINED3DDECLUSAGE_TO_STR(WINED3DDECLUSAGE_COLOR);
+        WINED3DDECLUSAGE_TO_STR(WINED3DDECLUSAGE_FOG);
+        WINED3DDECLUSAGE_TO_STR(WINED3DDECLUSAGE_DEPTH);
+        WINED3DDECLUSAGE_TO_STR(WINED3DDECLUSAGE_SAMPLE);
+#undef WINED3DDECLUSAGE_TO_STR
+        default:
+            FIXME("Unrecognized %u declaration usage!\n", usage);
+            return "unrecognized";
+    }
+}
+
+const char* debug_d3dresourcetype(WINED3DRESOURCETYPE res) {
+  switch (res) {
+#define RES_TO_STR(res) case res: return #res;
+    RES_TO_STR(WINED3DRTYPE_SURFACE);
+    RES_TO_STR(WINED3DRTYPE_VOLUME);
+    RES_TO_STR(WINED3DRTYPE_TEXTURE);
+    RES_TO_STR(WINED3DRTYPE_VOLUMETEXTURE);
+    RES_TO_STR(WINED3DRTYPE_CUBETEXTURE);
+    RES_TO_STR(WINED3DRTYPE_VERTEXBUFFER);
+    RES_TO_STR(WINED3DRTYPE_INDEXBUFFER);
+#undef  RES_TO_STR
+  default:
+    FIXME("Unrecognized %u WINED3DRESOURCETYPE!\n", res);
+    return "unrecognized";
+  }
+}
+
+const char* debug_d3dprimitivetype(WINED3DPRIMITIVETYPE PrimitiveType) {
+  switch (PrimitiveType) {
+#define PRIM_TO_STR(prim) case prim: return #prim;
+    PRIM_TO_STR(WINED3DPT_POINTLIST);
+    PRIM_TO_STR(WINED3DPT_LINELIST);
+    PRIM_TO_STR(WINED3DPT_LINESTRIP);
+    PRIM_TO_STR(WINED3DPT_TRIANGLELIST);
+    PRIM_TO_STR(WINED3DPT_TRIANGLESTRIP);
+    PRIM_TO_STR(WINED3DPT_TRIANGLEFAN);
+#undef  PRIM_TO_STR
+  default:
+    FIXME("Unrecognized %u WINED3DPRIMITIVETYPE!\n", PrimitiveType);
+    return "unrecognized";
+  }
+}
+
+const char* debug_d3drenderstate(DWORD state) {
+  switch (state) {
+#define D3DSTATE_TO_STR(u) case u: return #u
+    D3DSTATE_TO_STR(WINED3DRS_TEXTUREHANDLE             );
+    D3DSTATE_TO_STR(WINED3DRS_ANTIALIAS                 );
+    D3DSTATE_TO_STR(WINED3DRS_TEXTUREADDRESS            );
+    D3DSTATE_TO_STR(WINED3DRS_TEXTUREPERSPECTIVE        );
+    D3DSTATE_TO_STR(WINED3DRS_WRAPU                     );
+    D3DSTATE_TO_STR(WINED3DRS_WRAPV                     );
+    D3DSTATE_TO_STR(WINED3DRS_ZENABLE                   );
+    D3DSTATE_TO_STR(WINED3DRS_FILLMODE                  );
+    D3DSTATE_TO_STR(WINED3DRS_SHADEMODE                 );
+    D3DSTATE_TO_STR(WINED3DRS_LINEPATTERN               );
+    D3DSTATE_TO_STR(WINED3DRS_MONOENABLE                );
+    D3DSTATE_TO_STR(WINED3DRS_ROP2                      );
+    D3DSTATE_TO_STR(WINED3DRS_PLANEMASK                 );
+    D3DSTATE_TO_STR(WINED3DRS_ZWRITEENABLE              );
+    D3DSTATE_TO_STR(WINED3DRS_ALPHATESTENABLE           );
+    D3DSTATE_TO_STR(WINED3DRS_LASTPIXEL                 );
+    D3DSTATE_TO_STR(WINED3DRS_TEXTUREMAG                );
+    D3DSTATE_TO_STR(WINED3DRS_TEXTUREMIN                );
+    D3DSTATE_TO_STR(WINED3DRS_SRCBLEND                  );
+    D3DSTATE_TO_STR(WINED3DRS_DESTBLEND                 );
+    D3DSTATE_TO_STR(WINED3DRS_TEXTUREMAPBLEND           );
+    D3DSTATE_TO_STR(WINED3DRS_CULLMODE                  );
+    D3DSTATE_TO_STR(WINED3DRS_ZFUNC                     );
+    D3DSTATE_TO_STR(WINED3DRS_ALPHAREF                  );
+    D3DSTATE_TO_STR(WINED3DRS_ALPHAFUNC                 );
+    D3DSTATE_TO_STR(WINED3DRS_DITHERENABLE              );
+    D3DSTATE_TO_STR(WINED3DRS_ALPHABLENDENABLE          );
+    D3DSTATE_TO_STR(WINED3DRS_FOGENABLE                 );
+    D3DSTATE_TO_STR(WINED3DRS_SPECULARENABLE            );
+    D3DSTATE_TO_STR(WINED3DRS_ZVISIBLE                  );
+    D3DSTATE_TO_STR(WINED3DRS_SUBPIXEL                  );
+    D3DSTATE_TO_STR(WINED3DRS_SUBPIXELX                 );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEDALPHA             );
+    D3DSTATE_TO_STR(WINED3DRS_FOGCOLOR                  );
+    D3DSTATE_TO_STR(WINED3DRS_FOGTABLEMODE              );
+    D3DSTATE_TO_STR(WINED3DRS_FOGSTART                  );
+    D3DSTATE_TO_STR(WINED3DRS_FOGEND                    );
+    D3DSTATE_TO_STR(WINED3DRS_FOGDENSITY                );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEENABLE             );
+    D3DSTATE_TO_STR(WINED3DRS_EDGEANTIALIAS             );
+    D3DSTATE_TO_STR(WINED3DRS_COLORKEYENABLE            );
+    D3DSTATE_TO_STR(WINED3DRS_BORDERCOLOR               );
+    D3DSTATE_TO_STR(WINED3DRS_TEXTUREADDRESSU           );
+    D3DSTATE_TO_STR(WINED3DRS_TEXTUREADDRESSV           );
+    D3DSTATE_TO_STR(WINED3DRS_MIPMAPLODBIAS             );
+    D3DSTATE_TO_STR(WINED3DRS_ZBIAS                     );
+    D3DSTATE_TO_STR(WINED3DRS_RANGEFOGENABLE            );
+    D3DSTATE_TO_STR(WINED3DRS_ANISOTROPY                );
+    D3DSTATE_TO_STR(WINED3DRS_FLUSHBATCH                );
+    D3DSTATE_TO_STR(WINED3DRS_TRANSLUCENTSORTINDEPENDENT);
+    D3DSTATE_TO_STR(WINED3DRS_STENCILENABLE             );
+    D3DSTATE_TO_STR(WINED3DRS_STENCILFAIL               );
+    D3DSTATE_TO_STR(WINED3DRS_STENCILZFAIL              );
+    D3DSTATE_TO_STR(WINED3DRS_STENCILPASS               );
+    D3DSTATE_TO_STR(WINED3DRS_STENCILFUNC               );
+    D3DSTATE_TO_STR(WINED3DRS_STENCILREF                );
+    D3DSTATE_TO_STR(WINED3DRS_STENCILMASK               );
+    D3DSTATE_TO_STR(WINED3DRS_STENCILWRITEMASK          );
+    D3DSTATE_TO_STR(WINED3DRS_TEXTUREFACTOR             );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN00          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN01          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN02          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN03          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN04          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN05          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN06          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN07          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN08          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN09          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN10          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN11          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN12          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN13          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN14          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN15          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN16          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN17          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN18          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN19          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN20          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN21          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN22          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN23          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN24          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN25          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN26          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN27          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN28          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN29          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN30          );
+    D3DSTATE_TO_STR(WINED3DRS_STIPPLEPATTERN31          );
+    D3DSTATE_TO_STR(WINED3DRS_WRAP0                     );
+    D3DSTATE_TO_STR(WINED3DRS_WRAP1                     );
+    D3DSTATE_TO_STR(WINED3DRS_WRAP2                     );
+    D3DSTATE_TO_STR(WINED3DRS_WRAP3                     );
+    D3DSTATE_TO_STR(WINED3DRS_WRAP4                     );
+    D3DSTATE_TO_STR(WINED3DRS_WRAP5                     );
+    D3DSTATE_TO_STR(WINED3DRS_WRAP6                     );
+    D3DSTATE_TO_STR(WINED3DRS_WRAP7                     );
+    D3DSTATE_TO_STR(WINED3DRS_CLIPPING                  );
+    D3DSTATE_TO_STR(WINED3DRS_LIGHTING                  );
+    D3DSTATE_TO_STR(WINED3DRS_EXTENTS                   );
+    D3DSTATE_TO_STR(WINED3DRS_AMBIENT                   );
+    D3DSTATE_TO_STR(WINED3DRS_FOGVERTEXMODE             );
+    D3DSTATE_TO_STR(WINED3DRS_COLORVERTEX               );
+    D3DSTATE_TO_STR(WINED3DRS_LOCALVIEWER               );
+    D3DSTATE_TO_STR(WINED3DRS_NORMALIZENORMALS          );
+    D3DSTATE_TO_STR(WINED3DRS_COLORKEYBLENDENABLE       );
+    D3DSTATE_TO_STR(WINED3DRS_DIFFUSEMATERIALSOURCE     );
+    D3DSTATE_TO_STR(WINED3DRS_SPECULARMATERIALSOURCE    );
+    D3DSTATE_TO_STR(WINED3DRS_AMBIENTMATERIALSOURCE     );
+    D3DSTATE_TO_STR(WINED3DRS_EMISSIVEMATERIALSOURCE    );
+    D3DSTATE_TO_STR(WINED3DRS_VERTEXBLEND               );
+    D3DSTATE_TO_STR(WINED3DRS_CLIPPLANEENABLE           );
+    D3DSTATE_TO_STR(WINED3DRS_SOFTWAREVERTEXPROCESSING  );
+    D3DSTATE_TO_STR(WINED3DRS_POINTSIZE                 );
+    D3DSTATE_TO_STR(WINED3DRS_POINTSIZE_MIN             );
+    D3DSTATE_TO_STR(WINED3DRS_POINTSPRITEENABLE         );
+    D3DSTATE_TO_STR(WINED3DRS_POINTSCALEENABLE          );
+    D3DSTATE_TO_STR(WINED3DRS_POINTSCALE_A              );
+    D3DSTATE_TO_STR(WINED3DRS_POINTSCALE_B              );
+    D3DSTATE_TO_STR(WINED3DRS_POINTSCALE_C              );
+    D3DSTATE_TO_STR(WINED3DRS_MULTISAMPLEANTIALIAS      );
+    D3DSTATE_TO_STR(WINED3DRS_MULTISAMPLEMASK           );
+    D3DSTATE_TO_STR(WINED3DRS_PATCHEDGESTYLE            );
+    D3DSTATE_TO_STR(WINED3DRS_PATCHSEGMENTS             );
+    D3DSTATE_TO_STR(WINED3DRS_DEBUGMONITORTOKEN         );
+    D3DSTATE_TO_STR(WINED3DRS_POINTSIZE_MAX             );
+    D3DSTATE_TO_STR(WINED3DRS_INDEXEDVERTEXBLENDENABLE  );
+    D3DSTATE_TO_STR(WINED3DRS_COLORWRITEENABLE          );
+    D3DSTATE_TO_STR(WINED3DRS_TWEENFACTOR               );
+    D3DSTATE_TO_STR(WINED3DRS_BLENDOP                   );
+    D3DSTATE_TO_STR(WINED3DRS_POSITIONDEGREE            );
+    D3DSTATE_TO_STR(WINED3DRS_NORMALDEGREE              );
+    D3DSTATE_TO_STR(WINED3DRS_SCISSORTESTENABLE         );
+    D3DSTATE_TO_STR(WINED3DRS_SLOPESCALEDEPTHBIAS       );
+    D3DSTATE_TO_STR(WINED3DRS_ANTIALIASEDLINEENABLE     );
+    D3DSTATE_TO_STR(WINED3DRS_MINTESSELLATIONLEVEL      );
+    D3DSTATE_TO_STR(WINED3DRS_MAXTESSELLATIONLEVEL      );
+    D3DSTATE_TO_STR(WINED3DRS_ADAPTIVETESS_X            );
+    D3DSTATE_TO_STR(WINED3DRS_ADAPTIVETESS_Y            );
+    D3DSTATE_TO_STR(WINED3DRS_ADAPTIVETESS_Z            );
+    D3DSTATE_TO_STR(WINED3DRS_ADAPTIVETESS_W            );
+    D3DSTATE_TO_STR(WINED3DRS_ENABLEADAPTIVETESSELLATION);
+    D3DSTATE_TO_STR(WINED3DRS_TWOSIDEDSTENCILMODE       );
+    D3DSTATE_TO_STR(WINED3DRS_CCW_STENCILFAIL           );
+    D3DSTATE_TO_STR(WINED3DRS_CCW_STENCILZFAIL          );
+    D3DSTATE_TO_STR(WINED3DRS_CCW_STENCILPASS           );
+    D3DSTATE_TO_STR(WINED3DRS_CCW_STENCILFUNC           );
+    D3DSTATE_TO_STR(WINED3DRS_COLORWRITEENABLE1         );
+    D3DSTATE_TO_STR(WINED3DRS_COLORWRITEENABLE2         );
+    D3DSTATE_TO_STR(WINED3DRS_COLORWRITEENABLE3         );
+    D3DSTATE_TO_STR(WINED3DRS_BLENDFACTOR               );
+    D3DSTATE_TO_STR(WINED3DRS_SRGBWRITEENABLE           );
+    D3DSTATE_TO_STR(WINED3DRS_DEPTHBIAS                 );
+    D3DSTATE_TO_STR(WINED3DRS_WRAP8                     );
+    D3DSTATE_TO_STR(WINED3DRS_WRAP9                     );
+    D3DSTATE_TO_STR(WINED3DRS_WRAP10                    );
+    D3DSTATE_TO_STR(WINED3DRS_WRAP11                    );
+    D3DSTATE_TO_STR(WINED3DRS_WRAP12                    );
+    D3DSTATE_TO_STR(WINED3DRS_WRAP13                    );
+    D3DSTATE_TO_STR(WINED3DRS_WRAP14                    );
+    D3DSTATE_TO_STR(WINED3DRS_WRAP15                    );
+    D3DSTATE_TO_STR(WINED3DRS_SEPARATEALPHABLENDENABLE  );
+    D3DSTATE_TO_STR(WINED3DRS_SRCBLENDALPHA             );
+    D3DSTATE_TO_STR(WINED3DRS_DESTBLENDALPHA            );
+    D3DSTATE_TO_STR(WINED3DRS_BLENDOPALPHA              );
+#undef D3DSTATE_TO_STR
+  default:
+    FIXME("Unrecognized %u render state!\n", state);
+    return "unrecognized";
+  }
+}
+
+const char* debug_d3dsamplerstate(DWORD state) {
+  switch (state) {
+#define D3DSTATE_TO_STR(u) case u: return #u
+    D3DSTATE_TO_STR(WINED3DSAMP_BORDERCOLOR  );
+    D3DSTATE_TO_STR(WINED3DSAMP_ADDRESSU     );
+    D3DSTATE_TO_STR(WINED3DSAMP_ADDRESSV     );
+    D3DSTATE_TO_STR(WINED3DSAMP_ADDRESSW     );
+    D3DSTATE_TO_STR(WINED3DSAMP_MAGFILTER    );
+    D3DSTATE_TO_STR(WINED3DSAMP_MINFILTER    );
+    D3DSTATE_TO_STR(WINED3DSAMP_MIPFILTER    );
+    D3DSTATE_TO_STR(WINED3DSAMP_MIPMAPLODBIAS);
+    D3DSTATE_TO_STR(WINED3DSAMP_MAXMIPLEVEL  );
+    D3DSTATE_TO_STR(WINED3DSAMP_MAXANISOTROPY);
+    D3DSTATE_TO_STR(WINED3DSAMP_SRGBTEXTURE  );
+    D3DSTATE_TO_STR(WINED3DSAMP_ELEMENTINDEX );
+    D3DSTATE_TO_STR(WINED3DSAMP_DMAPOFFSET   );
+#undef D3DSTATE_TO_STR
+  default:
+    FIXME("Unrecognized %u sampler state!\n", state);
+    return "unrecognized";
+  }
+}
+
+const char *debug_d3dtexturefiltertype(WINED3DTEXTUREFILTERTYPE filter_type) {
+    switch (filter_type) {
+#define D3DTEXTUREFILTERTYPE_TO_STR(u) case u: return #u
+        D3DTEXTUREFILTERTYPE_TO_STR(WINED3DTEXF_NONE);
+        D3DTEXTUREFILTERTYPE_TO_STR(WINED3DTEXF_POINT);
+        D3DTEXTUREFILTERTYPE_TO_STR(WINED3DTEXF_LINEAR);
+        D3DTEXTUREFILTERTYPE_TO_STR(WINED3DTEXF_ANISOTROPIC);
+        D3DTEXTUREFILTERTYPE_TO_STR(WINED3DTEXF_FLATCUBIC);
+        D3DTEXTUREFILTERTYPE_TO_STR(WINED3DTEXF_GAUSSIANCUBIC);
+        D3DTEXTUREFILTERTYPE_TO_STR(WINED3DTEXF_PYRAMIDALQUAD);
+        D3DTEXTUREFILTERTYPE_TO_STR(WINED3DTEXF_GAUSSIANQUAD);
+#undef D3DTEXTUREFILTERTYPE_TO_STR
+        default:
+            FIXME("Unrecognied texture filter type 0x%08x\n", filter_type);
+            return "unrecognized";
+    }
+}
+
+const char* debug_d3dtexturestate(DWORD state) {
+  switch (state) {
+#define D3DSTATE_TO_STR(u) case u: return #u
+    D3DSTATE_TO_STR(WINED3DTSS_COLOROP               );
+    D3DSTATE_TO_STR(WINED3DTSS_COLORARG1             );
+    D3DSTATE_TO_STR(WINED3DTSS_COLORARG2             );
+    D3DSTATE_TO_STR(WINED3DTSS_ALPHAOP               );
+    D3DSTATE_TO_STR(WINED3DTSS_ALPHAARG1             );
+    D3DSTATE_TO_STR(WINED3DTSS_ALPHAARG2             );
+    D3DSTATE_TO_STR(WINED3DTSS_BUMPENVMAT00          );
+    D3DSTATE_TO_STR(WINED3DTSS_BUMPENVMAT01          );
+    D3DSTATE_TO_STR(WINED3DTSS_BUMPENVMAT10          );
+    D3DSTATE_TO_STR(WINED3DTSS_BUMPENVMAT11          );
+    D3DSTATE_TO_STR(WINED3DTSS_TEXCOORDINDEX         );
+    D3DSTATE_TO_STR(WINED3DTSS_BUMPENVLSCALE         );
+    D3DSTATE_TO_STR(WINED3DTSS_BUMPENVLOFFSET        );
+    D3DSTATE_TO_STR(WINED3DTSS_TEXTURETRANSFORMFLAGS );
+    D3DSTATE_TO_STR(WINED3DTSS_ADDRESSW              );
+    D3DSTATE_TO_STR(WINED3DTSS_COLORARG0             );
+    D3DSTATE_TO_STR(WINED3DTSS_ALPHAARG0             );
+    D3DSTATE_TO_STR(WINED3DTSS_RESULTARG             );
+    D3DSTATE_TO_STR(WINED3DTSS_CONSTANT              );
+#undef D3DSTATE_TO_STR
+  case 12:
+    /* Note WINED3DTSS are not consecutive, so skip these */
+    return "unused";
+  default:
+    FIXME("Unrecognized %u texture state!\n", state);
+    return "unrecognized";
+  }
+}
+
+const char* debug_d3dtop(WINED3DTEXTUREOP d3dtop) {
+    switch (d3dtop) {
+#define D3DTOP_TO_STR(u) case u: return #u
+        D3DTOP_TO_STR(WINED3DTOP_DISABLE);
+        D3DTOP_TO_STR(WINED3DTOP_SELECTARG1);
+        D3DTOP_TO_STR(WINED3DTOP_SELECTARG2);
+        D3DTOP_TO_STR(WINED3DTOP_MODULATE);
+        D3DTOP_TO_STR(WINED3DTOP_MODULATE2X);
+        D3DTOP_TO_STR(WINED3DTOP_MODULATE4X);
+        D3DTOP_TO_STR(WINED3DTOP_ADD);
+        D3DTOP_TO_STR(WINED3DTOP_ADDSIGNED);
+        D3DTOP_TO_STR(WINED3DTOP_ADDSIGNED2X);
+        D3DTOP_TO_STR(WINED3DTOP_SUBTRACT);
+        D3DTOP_TO_STR(WINED3DTOP_ADDSMOOTH);
+        D3DTOP_TO_STR(WINED3DTOP_BLENDDIFFUSEALPHA);
+        D3DTOP_TO_STR(WINED3DTOP_BLENDTEXTUREALPHA);
+        D3DTOP_TO_STR(WINED3DTOP_BLENDFACTORALPHA);
+        D3DTOP_TO_STR(WINED3DTOP_BLENDTEXTUREALPHAPM);
+        D3DTOP_TO_STR(WINED3DTOP_BLENDCURRENTALPHA);
+        D3DTOP_TO_STR(WINED3DTOP_PREMODULATE);
+        D3DTOP_TO_STR(WINED3DTOP_MODULATEALPHA_ADDCOLOR);
+        D3DTOP_TO_STR(WINED3DTOP_MODULATECOLOR_ADDALPHA);
+        D3DTOP_TO_STR(WINED3DTOP_MODULATEINVALPHA_ADDCOLOR);
+        D3DTOP_TO_STR(WINED3DTOP_MODULATEINVCOLOR_ADDALPHA);
+        D3DTOP_TO_STR(WINED3DTOP_BUMPENVMAP);
+        D3DTOP_TO_STR(WINED3DTOP_BUMPENVMAPLUMINANCE);
+        D3DTOP_TO_STR(WINED3DTOP_DOTPRODUCT3);
+        D3DTOP_TO_STR(WINED3DTOP_MULTIPLYADD);
+        D3DTOP_TO_STR(WINED3DTOP_LERP);
+#undef D3DTOP_TO_STR
+        default:
+            FIXME("Unrecognized %u WINED3DTOP\n", d3dtop);
+            return "unrecognized";
+    }
+}
+
+const char* debug_d3dtstype(WINED3DTRANSFORMSTATETYPE tstype) {
+    switch (tstype) {
+#define TSTYPE_TO_STR(tstype) case tstype: return #tstype
+    TSTYPE_TO_STR(WINED3DTS_VIEW);
+    TSTYPE_TO_STR(WINED3DTS_PROJECTION);
+    TSTYPE_TO_STR(WINED3DTS_TEXTURE0);
+    TSTYPE_TO_STR(WINED3DTS_TEXTURE1);
+    TSTYPE_TO_STR(WINED3DTS_TEXTURE2);
+    TSTYPE_TO_STR(WINED3DTS_TEXTURE3);
+    TSTYPE_TO_STR(WINED3DTS_TEXTURE4);
+    TSTYPE_TO_STR(WINED3DTS_TEXTURE5);
+    TSTYPE_TO_STR(WINED3DTS_TEXTURE6);
+    TSTYPE_TO_STR(WINED3DTS_TEXTURE7);
+    TSTYPE_TO_STR(WINED3DTS_WORLDMATRIX(0));
+#undef TSTYPE_TO_STR
+    default:
+        if (tstype > 256 && tstype < 512) {
+            FIXME("WINED3DTS_WORLDMATRIX(%u). 1..255 not currently supported\n", tstype);
+            return ("WINED3DTS_WORLDMATRIX > 0");
+        }
+        FIXME("Unrecognized %u WINED3DTS\n", tstype);
+        return "unrecognized";
+    }
+}
+
+const char* debug_d3dpool(WINED3DPOOL Pool) {
+  switch (Pool) {
+#define POOL_TO_STR(p) case p: return #p;
+    POOL_TO_STR(WINED3DPOOL_DEFAULT);
+    POOL_TO_STR(WINED3DPOOL_MANAGED);
+    POOL_TO_STR(WINED3DPOOL_SYSTEMMEM);
+    POOL_TO_STR(WINED3DPOOL_SCRATCH);
+#undef  POOL_TO_STR
+  default:
+    FIXME("Unrecognized %u WINED3DPOOL!\n", Pool);
+    return "unrecognized";
+  }
+}
+
+const char *debug_fbostatus(GLenum status) {
+    switch(status) {
+#define FBOSTATUS_TO_STR(u) case u: return #u
+        FBOSTATUS_TO_STR(GL_FRAMEBUFFER_COMPLETE_EXT);
+        FBOSTATUS_TO_STR(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT);
+        FBOSTATUS_TO_STR(GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT);
+        FBOSTATUS_TO_STR(GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT);
+        FBOSTATUS_TO_STR(GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT);
+        FBOSTATUS_TO_STR(GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT);
+        FBOSTATUS_TO_STR(GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT);
+        FBOSTATUS_TO_STR(GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT);
+        FBOSTATUS_TO_STR(GL_FRAMEBUFFER_UNSUPPORTED_EXT);
+#undef FBOSTATUS_TO_STR
+        default:
+            FIXME("Unrecognied FBO status 0x%08x\n", status);
+            return "unrecognized";
+    }
+}
+
+const char *debug_glerror(GLenum error) {
+    switch(error) {
+#define GLERROR_TO_STR(u) case u: return #u
+        GLERROR_TO_STR(GL_NO_ERROR);
+        GLERROR_TO_STR(GL_INVALID_ENUM);
+        GLERROR_TO_STR(GL_INVALID_VALUE);
+        GLERROR_TO_STR(GL_INVALID_OPERATION);
+        GLERROR_TO_STR(GL_STACK_OVERFLOW);
+        GLERROR_TO_STR(GL_STACK_UNDERFLOW);
+        GLERROR_TO_STR(GL_OUT_OF_MEMORY);
+        GLERROR_TO_STR(GL_INVALID_FRAMEBUFFER_OPERATION_EXT);
+#undef GLERROR_TO_STR
+        default:
+            FIXME("Unrecognied GL error 0x%08x\n", error);
+            return "unrecognized";
+    }
+}
+
+const char *debug_d3dbasis(WINED3DBASISTYPE basis) {
+    switch(basis) {
+        case WINED3DBASIS_BEZIER:       return "WINED3DBASIS_BEZIER";
+        case WINED3DBASIS_BSPLINE:      return "WINED3DBASIS_BSPLINE";
+        case WINED3DBASIS_INTERPOLATE:  return "WINED3DBASIS_INTERPOLATE";
+        default:                        return "unrecognized";
+    }
+}
+
+const char *debug_d3ddegree(WINED3DDEGREETYPE degree) {
+    switch(degree) {
+        case WINED3DDEGREE_LINEAR:      return "WINED3DDEGREE_LINEAR";
+        case WINED3DDEGREE_QUADRATIC:   return "WINED3DDEGREE_QUADRATIC";
+        case WINED3DDEGREE_CUBIC:       return "WINED3DDEGREE_CUBIC";
+        case WINED3DDEGREE_QUINTIC:     return "WINED3DDEGREE_QUINTIC";
+        default:                        return "unrecognized";
+    }
+}
+
+const char *debug_fixup_channel_source(enum fixup_channel_source source)
+{
+    switch(source)
+    {
+#define WINED3D_TO_STR(x) case x: return #x
+        WINED3D_TO_STR(CHANNEL_SOURCE_ZERO);
+        WINED3D_TO_STR(CHANNEL_SOURCE_ONE);
+        WINED3D_TO_STR(CHANNEL_SOURCE_X);
+        WINED3D_TO_STR(CHANNEL_SOURCE_Y);
+        WINED3D_TO_STR(CHANNEL_SOURCE_Z);
+        WINED3D_TO_STR(CHANNEL_SOURCE_W);
+        WINED3D_TO_STR(CHANNEL_SOURCE_YUV0);
+        WINED3D_TO_STR(CHANNEL_SOURCE_YUV1);
+#undef WINED3D_TO_STR
+        default:
+            FIXME("Unrecognized fixup_channel_source %#x\n", source);
+            return "unrecognized";
+    }
+}
+
+const char *debug_yuv_fixup(enum yuv_fixup yuv_fixup)
+{
+    switch(yuv_fixup)
+    {
+#define WINED3D_TO_STR(x) case x: return #x
+        WINED3D_TO_STR(YUV_FIXUP_YUY2);
+        WINED3D_TO_STR(YUV_FIXUP_UYVY);
+        WINED3D_TO_STR(YUV_FIXUP_YV12);
+#undef WINED3D_TO_STR
+        default:
+            FIXME("Unrecognized YUV fixup %#x\n", yuv_fixup);
+            return "unrecognized";
+    }
+}
+
+void dump_color_fixup_desc(struct color_fixup_desc fixup)
+{
+    if (is_yuv_fixup(fixup))
+    {
+        TRACE("\tYUV: %s\n", debug_yuv_fixup(get_yuv_fixup(fixup)));
+        return;
+    }
+
+    TRACE("\tX: %s%s\n", debug_fixup_channel_source(fixup.x_source), fixup.x_sign_fixup ? ", SIGN_FIXUP" : "");
+    TRACE("\tY: %s%s\n", debug_fixup_channel_source(fixup.y_source), fixup.y_sign_fixup ? ", SIGN_FIXUP" : "");
+    TRACE("\tZ: %s%s\n", debug_fixup_channel_source(fixup.z_source), fixup.z_sign_fixup ? ", SIGN_FIXUP" : "");
+    TRACE("\tW: %s%s\n", debug_fixup_channel_source(fixup.w_source), fixup.w_sign_fixup ? ", SIGN_FIXUP" : "");
+}
+
+/*****************************************************************************
+ * Useful functions mapping GL <-> D3D values
+ */
+GLenum StencilOp(DWORD op) {
+    switch(op) {
+    case WINED3DSTENCILOP_KEEP    : return GL_KEEP;
+    case WINED3DSTENCILOP_ZERO    : return GL_ZERO;
+    case WINED3DSTENCILOP_REPLACE : return GL_REPLACE;
+    case WINED3DSTENCILOP_INCRSAT : return GL_INCR;
+    case WINED3DSTENCILOP_DECRSAT : return GL_DECR;
+    case WINED3DSTENCILOP_INVERT  : return GL_INVERT;
+    case WINED3DSTENCILOP_INCR    : return GL_INCR_WRAP_EXT;
+    case WINED3DSTENCILOP_DECR    : return GL_DECR_WRAP_EXT;
+    default:
+        FIXME("Unrecognized stencil op %d\n", op);
+        return GL_KEEP;
+    }
+}
+
+GLenum CompareFunc(DWORD func) {
+    switch ((WINED3DCMPFUNC)func) {
+    case WINED3DCMP_NEVER        : return GL_NEVER;
+    case WINED3DCMP_LESS         : return GL_LESS;
+    case WINED3DCMP_EQUAL        : return GL_EQUAL;
+    case WINED3DCMP_LESSEQUAL    : return GL_LEQUAL;
+    case WINED3DCMP_GREATER      : return GL_GREATER;
+    case WINED3DCMP_NOTEQUAL     : return GL_NOTEQUAL;
+    case WINED3DCMP_GREATEREQUAL : return GL_GEQUAL;
+    case WINED3DCMP_ALWAYS       : return GL_ALWAYS;
+    default:
+        FIXME("Unrecognized WINED3DCMPFUNC value %d\n", func);
+        return 0;
+    }
+}
+
+BOOL is_invalid_op(IWineD3DDeviceImpl *This, int stage, WINED3DTEXTUREOP op, DWORD arg1, DWORD arg2, DWORD arg3) {
+    if (op == WINED3DTOP_DISABLE) return FALSE;
+    if (This->stateBlock->textures[stage]) return FALSE;
+
+    if ((arg1 & WINED3DTA_SELECTMASK) == WINED3DTA_TEXTURE
+            && op != WINED3DTOP_SELECTARG2) return TRUE;
+    if ((arg2 & WINED3DTA_SELECTMASK) == WINED3DTA_TEXTURE
+            && op != WINED3DTOP_SELECTARG1) return TRUE;
+    if ((arg3 & WINED3DTA_SELECTMASK) == WINED3DTA_TEXTURE
+            && (op == WINED3DTOP_MULTIPLYADD || op == WINED3DTOP_LERP)) return TRUE;
+
+    return FALSE;
+}
+
+/* Setup this textures matrix according to the texture flags*/
+void set_texture_matrix(const float *smat, DWORD flags, BOOL calculatedCoords, BOOL transformed, DWORD coordtype,
+                        BOOL ffp_proj_control)
+{
+    float mat[16];
+
+    glMatrixMode(GL_TEXTURE);
+    checkGLcall("glMatrixMode(GL_TEXTURE)");
+
+    if (flags == WINED3DTTFF_DISABLE || flags == WINED3DTTFF_COUNT1 || transformed) {
+        glLoadIdentity();
+        checkGLcall("glLoadIdentity()");
+        return;
+    }
+
+    if (flags == (WINED3DTTFF_COUNT1|WINED3DTTFF_PROJECTED)) {
+        ERR("Invalid texture transform flags: WINED3DTTFF_COUNT1|WINED3DTTFF_PROJECTED\n");
+        return;
+    }
+
+    memcpy(mat, smat, 16 * sizeof(float));
+
+    if (flags & WINED3DTTFF_PROJECTED) {
+        if(!ffp_proj_control) {
+            switch (flags & ~WINED3DTTFF_PROJECTED) {
+            case WINED3DTTFF_COUNT2:
+                mat[3] = mat[1], mat[7] = mat[5], mat[11] = mat[9], mat[15] = mat[13];
+                mat[1] = mat[5] = mat[9] = mat[13] = 0;
+                break;
+            case WINED3DTTFF_COUNT3:
+                mat[3] = mat[2], mat[7] = mat[6], mat[11] = mat[10], mat[15] = mat[14];
+                mat[2] = mat[6] = mat[10] = mat[14] = 0;
+                break;
+            }
+        }
+    } else { /* under directx the R/Z coord can be used for translation, under opengl we use the Q coord instead */
+        if(!calculatedCoords) {
+            switch(coordtype) {
+                case WINED3DDECLTYPE_FLOAT1:
+                    /* Direct3D passes the default 1.0 in the 2nd coord, while gl passes it in the 4th.
+                     * swap 2nd and 4th coord. No need to store the value of mat[12] in mat[4] because
+                     * the input value to the transformation will be 0, so the matrix value is irrelevant
+                     */
+                    mat[12] = mat[4];
+                    mat[13] = mat[5];
+                    mat[14] = mat[6];
+                    mat[15] = mat[7];
+                    break;
+                case WINED3DDECLTYPE_FLOAT2:
+                    /* See above, just 3rd and 4th coord
+                    */
+                    mat[12] = mat[8];
+                    mat[13] = mat[9];
+                    mat[14] = mat[10];
+                    mat[15] = mat[11];
+                    break;
+                case WINED3DDECLTYPE_FLOAT3: /* Opengl defaults match dx defaults */
+                case WINED3DDECLTYPE_FLOAT4: /* No defaults apply, all app defined */
+
+                /* This is to prevent swapping the matrix lines and put the default 4th coord = 1.0
+                 * into a bad place. The division elimination below will apply to make sure the
+                 * 1.0 doesn't do anything bad. The caller will set this value if the stride is 0
+                 */
+                case WINED3DDECLTYPE_UNUSED: /* No texture coords, 0/0/0/1 defaults are passed */
+                    break;
+                default:
+                    FIXME("Unexpected fixed function texture coord input\n");
+            }
+        }
+        if(!ffp_proj_control) {
+            switch (flags & ~WINED3DTTFF_PROJECTED) {
+                /* case WINED3DTTFF_COUNT1: Won't ever get here */
+                case WINED3DTTFF_COUNT2: mat[2] = mat[6] = mat[10] = mat[14] = 0;
+                /* OpenGL divides the first 3 vertex coord by the 4th by default,
+                * which is essentially the same as D3DTTFF_PROJECTED. Make sure that
+                * the 4th coord evaluates to 1.0 to eliminate that.
+                *
+                * If the fixed function pipeline is used, the 4th value remains unused,
+                * so there is no danger in doing this. With vertex shaders we have a
+                * problem. Should an app hit that problem, the code here would have to
+                * check for pixel shaders, and the shader has to undo the default gl divide.
+                *
+                * A more serious problem occurs if the app passes 4 coordinates in, and the
+                * 4th is != 1.0(opengl default). This would have to be fixed in drawStridedSlow
+                * or a replacement shader
+                */
+                default: mat[3] = mat[7] = mat[11] = 0; mat[15] = 1;
+            }
+        }
+    }
+
+    glLoadMatrixf(mat);
+    checkGLcall("glLoadMatrixf(mat)");
+}
+#undef GLINFO_LOCATION
+
+#define GLINFO_LOCATION ((IWineD3DImpl *)(This->wineD3D))->gl_info
+
+/* This small helper function is used to convert a bitmask into the number of masked bits */
+unsigned int count_bits(unsigned int mask)
+{
+    unsigned int count;
+    for (count = 0; mask; ++count)
+    {
+        mask &= mask - 1;
+    }
+    return count;
+}
+
+/* Helper function for retrieving color info for ChoosePixelFormat and wglChoosePixelFormatARB.
+ * The later function requires individual color components. */
+BOOL getColorBits(WINED3DFORMAT fmt, short *redSize, short *greenSize, short *blueSize, short *alphaSize, short *totalSize)
+{
+    const StaticPixelFormatDesc *desc;
+
+    TRACE("fmt: %s\n", debug_d3dformat(fmt));
+    switch(fmt)
+    {
+        case WINED3DFMT_X8R8G8B8:
+        case WINED3DFMT_R8G8B8:
+        case WINED3DFMT_A8R8G8B8:
+        case WINED3DFMT_A2R10G10B10:
+        case WINED3DFMT_X1R5G5B5:
+        case WINED3DFMT_A1R5G5B5:
+        case WINED3DFMT_R5G6B5:
+        case WINED3DFMT_X4R4G4B4:
+        case WINED3DFMT_A4R4G4B4:
+        case WINED3DFMT_R3G3B2:
+        case WINED3DFMT_A8P8:
+        case WINED3DFMT_P8:
+            break;
+        default:
+            ERR("Unsupported format: %s\n", debug_d3dformat(fmt));
+            return FALSE;
+    }
+
+    desc = getFormatDescEntry(fmt, NULL, NULL);
+    if(!desc)
+    {
+        ERR("Unable to look up format: 0x%x\n", fmt);
+        return FALSE;
+    }
+    *redSize = count_bits(desc->redMask);
+    *greenSize = count_bits(desc->greenMask);
+    *blueSize = count_bits(desc->blueMask);
+    *alphaSize = count_bits(desc->alphaMask);
+    *totalSize = *redSize + *greenSize + *blueSize + *alphaSize;
+
+    TRACE("Returning red:  %d, green: %d, blue: %d, alpha: %d, total: %d for fmt=%s\n", *redSize, *greenSize, *blueSize, *alphaSize, *totalSize, debug_d3dformat(fmt));
+    return TRUE;
+}
+
+/* Helper function for retrieving depth/stencil info for ChoosePixelFormat and wglChoosePixelFormatARB */
+BOOL getDepthStencilBits(WINED3DFORMAT fmt, short *depthSize, short *stencilSize)
+{
+    const StaticPixelFormatDesc *desc;
+
+    TRACE("fmt: %s\n", debug_d3dformat(fmt));
+    switch(fmt)
+    {
+        case WINED3DFMT_D16_LOCKABLE:
+        case WINED3DFMT_D16:
+        case WINED3DFMT_D15S1:
+        case WINED3DFMT_D24X8:
+        case WINED3DFMT_D24X4S4:
+        case WINED3DFMT_D24S8:
+        case WINED3DFMT_D24FS8:
+        case WINED3DFMT_D32:
+        case WINED3DFMT_D32F_LOCKABLE:
+            break;
+        default:
+            FIXME("Unsupported stencil format: %s\n", debug_d3dformat(fmt));
+            return FALSE;
+    }
+
+    desc = getFormatDescEntry(fmt, NULL, NULL);
+    if(!desc)
+    {
+        ERR("Unable to look up format: 0x%x\n", fmt);
+        return FALSE;
+    }
+    *depthSize = desc->depthSize;
+    *stencilSize = desc->stencilSize;
+
+    TRACE("Returning depthSize: %d and stencilSize: %d for fmt=%s\n", *depthSize, *stencilSize, debug_d3dformat(fmt));
+    return TRUE;
+}
+
+#undef GLINFO_LOCATION
+
+/* DirectDraw stuff */
+WINED3DFORMAT pixelformat_for_depth(DWORD depth) {
+    switch(depth) {
+        case 8:  return WINED3DFMT_P8;
+        case 15: return WINED3DFMT_X1R5G5B5;
+        case 16: return WINED3DFMT_R5G6B5;
+        case 24: return WINED3DFMT_X8R8G8B8; /* Robots needs 24bit to be X8R8G8B8 */
+        case 32: return WINED3DFMT_X8R8G8B8; /* EVE online and the Fur demo need 32bit AdapterDisplayMode to return X8R8G8B8 */
+        default: return WINED3DFMT_UNKNOWN;
+    }
+}
+
+void multiply_matrix(WINED3DMATRIX *dest, const WINED3DMATRIX *src1, const WINED3DMATRIX *src2) {
+    WINED3DMATRIX temp;
+
+    /* Now do the multiplication 'by hand'.
+       I know that all this could be optimised, but this will be done later :-) */
+    temp.u.s._11 = (src1->u.s._11 * src2->u.s._11) + (src1->u.s._21 * src2->u.s._12) + (src1->u.s._31 * src2->u.s._13) + (src1->u.s._41 * src2->u.s._14);
+    temp.u.s._21 = (src1->u.s._11 * src2->u.s._21) + (src1->u.s._21 * src2->u.s._22) + (src1->u.s._31 * src2->u.s._23) + (src1->u.s._41 * src2->u.s._24);
+    temp.u.s._31 = (src1->u.s._11 * src2->u.s._31) + (src1->u.s._21 * src2->u.s._32) + (src1->u.s._31 * src2->u.s._33) + (src1->u.s._41 * src2->u.s._34);
+    temp.u.s._41 = (src1->u.s._11 * src2->u.s._41) + (src1->u.s._21 * src2->u.s._42) + (src1->u.s._31 * src2->u.s._43) + (src1->u.s._41 * src2->u.s._44);
+
+    temp.u.s._12 = (src1->u.s._12 * src2->u.s._11) + (src1->u.s._22 * src2->u.s._12) + (src1->u.s._32 * src2->u.s._13) + (src1->u.s._42 * src2->u.s._14);
+    temp.u.s._22 = (src1->u.s._12 * src2->u.s._21) + (src1->u.s._22 * src2->u.s._22) + (src1->u.s._32 * src2->u.s._23) + (src1->u.s._42 * src2->u.s._24);
+    temp.u.s._32 = (src1->u.s._12 * src2->u.s._31) + (src1->u.s._22 * src2->u.s._32) + (src1->u.s._32 * src2->u.s._33) + (src1->u.s._42 * src2->u.s._34);
+    temp.u.s._42 = (src1->u.s._12 * src2->u.s._41) + (src1->u.s._22 * src2->u.s._42) + (src1->u.s._32 * src2->u.s._43) + (src1->u.s._42 * src2->u.s._44);
+
+    temp.u.s._13 = (src1->u.s._13 * src2->u.s._11) + (src1->u.s._23 * src2->u.s._12) + (src1->u.s._33 * src2->u.s._13) + (src1->u.s._43 * src2->u.s._14);
+    temp.u.s._23 = (src1->u.s._13 * src2->u.s._21) + (src1->u.s._23 * src2->u.s._22) + (src1->u.s._33 * src2->u.s._23) + (src1->u.s._43 * src2->u.s._24);
+    temp.u.s._33 = (src1->u.s._13 * src2->u.s._31) + (src1->u.s._23 * src2->u.s._32) + (src1->u.s._33 * src2->u.s._33) + (src1->u.s._43 * src2->u.s._34);
+    temp.u.s._43 = (src1->u.s._13 * src2->u.s._41) + (src1->u.s._23 * src2->u.s._42) + (src1->u.s._33 * src2->u.s._43) + (src1->u.s._43 * src2->u.s._44);
+
+    temp.u.s._14 = (src1->u.s._14 * src2->u.s._11) + (src1->u.s._24 * src2->u.s._12) + (src1->u.s._34 * src2->u.s._13) + (src1->u.s._44 * src2->u.s._14);
+    temp.u.s._24 = (src1->u.s._14 * src2->u.s._21) + (src1->u.s._24 * src2->u.s._22) + (src1->u.s._34 * src2->u.s._23) + (src1->u.s._44 * src2->u.s._24);
+    temp.u.s._34 = (src1->u.s._14 * src2->u.s._31) + (src1->u.s._24 * src2->u.s._32) + (src1->u.s._34 * src2->u.s._33) + (src1->u.s._44 * src2->u.s._34);
+    temp.u.s._44 = (src1->u.s._14 * src2->u.s._41) + (src1->u.s._24 * src2->u.s._42) + (src1->u.s._34 * src2->u.s._43) + (src1->u.s._44 * src2->u.s._44);
+
+    /* And copy the new matrix in the good storage.. */
+    memcpy(dest, &temp, 16 * sizeof(float));
+}
+
+DWORD get_flexible_vertex_size(DWORD d3dvtVertexType) {
+    DWORD size = 0;
+    int i;
+    int numTextures = (d3dvtVertexType & WINED3DFVF_TEXCOUNT_MASK) >> WINED3DFVF_TEXCOUNT_SHIFT;
+
+    if (d3dvtVertexType & WINED3DFVF_NORMAL) size += 3 * sizeof(float);
+    if (d3dvtVertexType & WINED3DFVF_DIFFUSE) size += sizeof(DWORD);
+    if (d3dvtVertexType & WINED3DFVF_SPECULAR) size += sizeof(DWORD);
+    if (d3dvtVertexType & WINED3DFVF_PSIZE) size += sizeof(DWORD);
+    switch (d3dvtVertexType & WINED3DFVF_POSITION_MASK) {
+        case WINED3DFVF_XYZ:    size += 3 * sizeof(float); break;
+        case WINED3DFVF_XYZRHW: size += 4 * sizeof(float); break;
+        case WINED3DFVF_XYZB1:  size += 4 * sizeof(float); break;
+        case WINED3DFVF_XYZB2:  size += 5 * sizeof(float); break;
+        case WINED3DFVF_XYZB3:  size += 6 * sizeof(float); break;
+        case WINED3DFVF_XYZB4:  size += 7 * sizeof(float); break;
+        case WINED3DFVF_XYZB5:  size += 8 * sizeof(float); break;
+        default: ERR("Unexpected position mask\n");
+    }
+    for (i = 0; i < numTextures; i++) {
+        size += GET_TEXCOORD_SIZE_FROM_FVF(d3dvtVertexType, i) * sizeof(float);
+    }
+
+    return size;
+}
+
+/***********************************************************************
+ * CalculateTexRect
+ *
+ * Calculates the dimensions of the opengl texture used for blits.
+ * Handled oversized opengl textures and updates the source rectangle
+ * accordingly
+ *
+ * Params:
+ *  This: Surface to operate on
+ *  Rect: Requested rectangle
+ *
+ * Returns:
+ *  TRUE if the texture part can be loaded,
+ *  FALSE otherwise
+ *
+ *********************************************************************/
+#define GLINFO_LOCATION This->resource.wineD3DDevice->adapter->gl_info
+
+BOOL CalculateTexRect(IWineD3DSurfaceImpl *This, RECT *Rect, float glTexCoord[4]) {
+    int x1 = Rect->left, x2 = Rect->right;
+    int y1 = Rect->top, y2 = Rect->bottom;
+    GLint maxSize = GL_LIMITS(texture_size);
+
+    TRACE("(%p)->(%d,%d)-(%d,%d)\n", This,
+          Rect->left, Rect->top, Rect->right, Rect->bottom);
+
+    /* The sizes might be reversed */
+    if(Rect->left > Rect->right) {
+        x1 = Rect->right;
+        x2 = Rect->left;
+    }
+    if(Rect->top > Rect->bottom) {
+        y1 = Rect->bottom;
+        y2 = Rect->top;
+    }
+
+    /* No oversized texture? This is easy */
+    if(!(This->Flags & SFLAG_OVERSIZE)) {
+        /* Which rect from the texture do I need? */
+        if(This->glDescription.target == GL_TEXTURE_RECTANGLE_ARB) {
+            glTexCoord[0] = (float) Rect->left;
+            glTexCoord[2] = (float) Rect->top;
+            glTexCoord[1] = (float) Rect->right;
+            glTexCoord[3] = (float) Rect->bottom;
+        } else {
+            glTexCoord[0] = (float) Rect->left / (float) This->pow2Width;
+            glTexCoord[2] = (float) Rect->top / (float) This->pow2Height;
+            glTexCoord[1] = (float) Rect->right / (float) This->pow2Width;
+            glTexCoord[3] = (float) Rect->bottom / (float) This->pow2Height;
+        }
+
+        return TRUE;
+    } else {
+        /* Check if we can succeed at all */
+        if( (x2 - x1) > maxSize ||
+            (y2 - y1) > maxSize ) {
+            TRACE("Requested rectangle is too large for gl\n");
+            return FALSE;
+        }
+
+        /* A part of the texture has to be picked. First, check if
+         * some texture part is loaded already, if yes try to re-use it.
+         * If the texture is dirty, or the part can't be used,
+         * re-position the part to load
+         */
+        if(This->Flags & SFLAG_INTEXTURE) {
+            if(This->glRect.left <= x1 && This->glRect.right >= x2 &&
+               This->glRect.top <= y1 && This->glRect.bottom >= x2 ) {
+                /* Ok, the rectangle is ok, re-use it */
+                TRACE("Using existing gl Texture\n");
+            } else {
+                /* Rectangle is not ok, dirtify the texture to reload it */
+                TRACE("Dirtifying texture to force reload\n");
+                This->Flags &= ~SFLAG_INTEXTURE;
+            }
+        }
+
+        /* Now if we are dirty(no else if!) */
+        if(!(This->Flags & SFLAG_INTEXTURE)) {
+            /* Set the new rectangle. Use the following strategy:
+             * 1) Use as big textures as possible.
+             * 2) Place the texture part in the way that the requested
+             *    part is in the middle of the texture(well, almost)
+             * 3) If the texture is moved over the edges of the
+             *    surface, replace it nicely
+             * 4) If the coord is not limiting the texture size,
+             *    use the whole size
+             */
+            if((This->pow2Width) > maxSize) {
+                This->glRect.left = x1 - maxSize / 2;
+                if(This->glRect.left < 0) {
+                    This->glRect.left = 0;
+                }
+                This->glRect.right = This->glRect.left + maxSize;
+                if(This->glRect.right > This->currentDesc.Width) {
+                    This->glRect.right = This->currentDesc.Width;
+                    This->glRect.left = This->glRect.right - maxSize;
+                }
+            } else {
+                This->glRect.left = 0;
+                This->glRect.right = This->pow2Width;
+            }
+
+            if(This->pow2Height > maxSize) {
+                This->glRect.top = x1 - GL_LIMITS(texture_size) / 2;
+                if(This->glRect.top < 0) This->glRect.top = 0;
+                This->glRect.bottom = This->glRect.left + maxSize;
+                if(This->glRect.bottom > This->currentDesc.Height) {
+                    This->glRect.bottom = This->currentDesc.Height;
+                    This->glRect.top = This->glRect.bottom - maxSize;
+                }
+            } else {
+                This->glRect.top = 0;
+                This->glRect.bottom = This->pow2Height;
+            }
+            TRACE("(%p): Using rect (%d,%d)-(%d,%d)\n", This,
+                   This->glRect.left, This->glRect.top, This->glRect.right, This->glRect.bottom);
+        }
+
+        /* Re-calculate the rect to draw */
+        Rect->left -= This->glRect.left;
+        Rect->right -= This->glRect.left;
+        Rect->top -= This->glRect.top;
+        Rect->bottom -= This->glRect.top;
+
+        /* Get the gl coordinates. The gl rectangle is a power of 2, eigher the max size,
+         * or the pow2Width / pow2Height of the surface.
+         *
+         * Can never be GL_TEXTURE_RECTANGLE_ARB because oversized surfaces are always set up
+         * as regular GL_TEXTURE_2D.
+         */
+        glTexCoord[0] = (float) Rect->left / (float) (This->glRect.right - This->glRect.left);
+        glTexCoord[2] = (float) Rect->top / (float) (This->glRect.bottom - This->glRect.top);
+        glTexCoord[1] = (float) Rect->right / (float) (This->glRect.right - This->glRect.left);
+        glTexCoord[3] = (float) Rect->bottom / (float) (This->glRect.bottom - This->glRect.top);
+    }
+    return TRUE;
+}
+#undef GLINFO_LOCATION
+
+/* Hash table functions */
+
+struct hash_table_t *hash_table_create(hash_function_t *hash_function, compare_function_t *compare_function)
+{
+    struct hash_table_t *table;
+    unsigned int initial_size = 8;
+
+    table = HeapAlloc(GetProcessHeap(), 0, sizeof(struct hash_table_t) + (initial_size * sizeof(struct list)));
+    if (!table)
+    {
+        ERR("Failed to allocate table, returning NULL.\n");
+        return NULL;
+    }
+
+    table->hash_function = hash_function;
+    table->compare_function = compare_function;
+
+    table->grow_size = initial_size - (initial_size >> 2);
+    table->shrink_size = 0;
+
+    table->buckets = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, initial_size * sizeof(struct list));
+    if (!table->buckets)
+    {
+        ERR("Failed to allocate table buckets, returning NULL.\n");
+        HeapFree(GetProcessHeap(), 0, table);
+        return NULL;
+    }
+    table->bucket_count = initial_size;
+
+    table->entries = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, table->grow_size * sizeof(struct hash_table_entry_t));
+    if (!table->entries)
+    {
+        ERR("Failed to allocate table entries, returning NULL.\n");
+        HeapFree(GetProcessHeap(), 0, table->buckets);
+        HeapFree(GetProcessHeap(), 0, table);
+        return NULL;
+    }
+    table->entry_count = 0;
+
+    list_init(&table->free_entries);
+    table->count = 0;
+
+    return table;
+}
+
+void hash_table_destroy(struct hash_table_t *table, void (*free_value)(void *value, void *cb), void *cb)
+{
+    unsigned int i = 0;
+
+    for (i = 0; i < table->entry_count; ++i)
+    {
+        if(free_value) {
+            free_value(table->entries[i].value, cb);
+        }
+        HeapFree(GetProcessHeap(), 0, table->entries[i].key);
+    }
+
+    HeapFree(GetProcessHeap(), 0, table->entries);
+    HeapFree(GetProcessHeap(), 0, table->buckets);
+    HeapFree(GetProcessHeap(), 0, table);
+}
+
+static inline struct hash_table_entry_t *hash_table_get_by_idx(const struct hash_table_t *table, const void *key,
+        unsigned int idx)
+{
+    struct hash_table_entry_t *entry;
+
+    if (table->buckets[idx].next)
+        LIST_FOR_EACH_ENTRY(entry, &(table->buckets[idx]), struct hash_table_entry_t, entry)
+            if (table->compare_function(entry->key, key)) return entry;
+
+    return NULL;
+}
+
+static BOOL hash_table_resize(struct hash_table_t *table, unsigned int new_bucket_count)
+{
+    unsigned int new_entry_count = 0;
+    struct hash_table_entry_t *new_entries;
+    struct list *new_buckets;
+    unsigned int grow_size = new_bucket_count - (new_bucket_count >> 2);
+    unsigned int i;
+
+    new_buckets = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, new_bucket_count * sizeof(struct list));
+    if (!new_buckets)
+    {
+        ERR("Failed to allocate new buckets, returning FALSE.\n");
+        return FALSE;
+    }
+
+    new_entries = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, grow_size * sizeof(struct hash_table_entry_t));
+    if (!new_entries)
+    {
+        ERR("Failed to allocate new entries, returning FALSE.\n");
+        HeapFree(GetProcessHeap(), 0, new_buckets);
+        return FALSE;
+    }
+
+    for (i = 0; i < table->bucket_count; ++i)
+    {
+        if (table->buckets[i].next)
+        {
+            struct hash_table_entry_t *entry, *entry2;
+
+            LIST_FOR_EACH_ENTRY_SAFE(entry, entry2, &table->buckets[i], struct hash_table_entry_t, entry)
+            {
+                int j;
+                struct hash_table_entry_t *new_entry = new_entries + (new_entry_count++);
+                *new_entry = *entry;
+
+                j = new_entry->hash & (new_bucket_count - 1);
+
+                if (!new_buckets[j].next) list_init(&new_buckets[j]);
+                list_add_head(&new_buckets[j], &new_entry->entry);
+            }
+        }
+    }
+
+    HeapFree(GetProcessHeap(), 0, table->buckets);
+    table->buckets = new_buckets;
+
+    HeapFree(GetProcessHeap(), 0, table->entries);
+    table->entries = new_entries;
+
+    table->entry_count = new_entry_count;
+    list_init(&table->free_entries);
+
+    table->bucket_count = new_bucket_count;
+    table->grow_size = grow_size;
+    table->shrink_size = new_bucket_count > 8 ? new_bucket_count >> 2 : 0;
+
+    return TRUE;
+}
+
+void hash_table_put(struct hash_table_t *table, void *key, void *value)
+{
+    unsigned int idx;
+    unsigned int hash;
+    struct hash_table_entry_t *entry;
+
+    hash = table->hash_function(key);
+    idx = hash & (table->bucket_count - 1);
+    entry = hash_table_get_by_idx(table, key, idx);
+
+    if (entry)
+    {
+        HeapFree(GetProcessHeap(), 0, key);
+        entry->value = value;
+
+        if (!value)
+        {
+            HeapFree(GetProcessHeap(), 0, entry->key);
+            entry->key = NULL;
+
+            /* Remove the entry */
+            list_remove(&entry->entry);
+            list_add_head(&table->free_entries, &entry->entry);
+
+            --table->count;
+
+            /* Shrink if necessary */
+            if (table->count < table->shrink_size) {
+                if (!hash_table_resize(table, table->bucket_count >> 1))
+                {
+                    ERR("Failed to shrink the table...\n");
+                }
+            }
+        }
+
+        return;
+    }
+
+    if (!value) return;
+
+    /* Grow if necessary */
+    if (table->count >= table->grow_size)
+    {
+        if (!hash_table_resize(table, table->bucket_count << 1))
+        {
+            ERR("Failed to grow the table, returning.\n");
+            return;
+        }
+
+        idx = hash & (table->bucket_count - 1);
+    }
+
+    /* Find an entry to insert */
+    if (!list_empty(&table->free_entries))
+    {
+        struct list *elem = list_head(&table->free_entries);
+
+        list_remove(elem);
+        entry = LIST_ENTRY(elem, struct hash_table_entry_t, entry);
+    } else {
+        entry = table->entries + (table->entry_count++);
+    }
+
+    /* Insert the entry */
+    entry->key = key;
+    entry->value = value;
+    entry->hash = hash;
+    if (!table->buckets[idx].next) list_init(&table->buckets[idx]);
+    list_add_head(&table->buckets[idx], &entry->entry);
+
+    ++table->count;
+}
+
+void hash_table_remove(struct hash_table_t *table, void *key)
+{
+    hash_table_put(table, key, NULL);
+}
+
+void *hash_table_get(const struct hash_table_t *table, const void *key)
+{
+    unsigned int idx;
+    struct hash_table_entry_t *entry;
+
+    idx = table->hash_function(key) & (table->bucket_count - 1);
+    entry = hash_table_get_by_idx(table, key, idx);
+
+    return entry ? entry->value : NULL;
+}
+
+#define GLINFO_LOCATION stateblock->wineD3DDevice->adapter->gl_info
+void gen_ffp_frag_op(IWineD3DStateBlockImpl *stateblock, struct ffp_frag_settings *settings, BOOL ignore_textype) {
+#define ARG1 0x01
+#define ARG2 0x02
+#define ARG0 0x04
+    static const unsigned char args[WINED3DTOP_LERP + 1] = {
+        /* undefined                        */  0,
+        /* D3DTOP_DISABLE                   */  0,
+        /* D3DTOP_SELECTARG1                */  ARG1,
+        /* D3DTOP_SELECTARG2                */  ARG2,
+        /* D3DTOP_MODULATE                  */  ARG1 | ARG2,
+        /* D3DTOP_MODULATE2X                */  ARG1 | ARG2,
+        /* D3DTOP_MODULATE4X                */  ARG1 | ARG2,
+        /* D3DTOP_ADD                       */  ARG1 | ARG2,
+        /* D3DTOP_ADDSIGNED                 */  ARG1 | ARG2,
+        /* D3DTOP_ADDSIGNED2X               */  ARG1 | ARG2,
+        /* D3DTOP_SUBTRACT                  */  ARG1 | ARG2,
+        /* D3DTOP_ADDSMOOTH                 */  ARG1 | ARG2,
+        /* D3DTOP_BLENDDIFFUSEALPHA         */  ARG1 | ARG2,
+        /* D3DTOP_BLENDTEXTUREALPHA         */  ARG1 | ARG2,
+        /* D3DTOP_BLENDFACTORALPHA          */  ARG1 | ARG2,
+        /* D3DTOP_BLENDTEXTUREALPHAPM       */  ARG1 | ARG2,
+        /* D3DTOP_BLENDCURRENTALPHA         */  ARG1 | ARG2,
+        /* D3DTOP_PREMODULATE               */  ARG1 | ARG2,
+        /* D3DTOP_MODULATEALPHA_ADDCOLOR    */  ARG1 | ARG2,
+        /* D3DTOP_MODULATECOLOR_ADDALPHA    */  ARG1 | ARG2,
+        /* D3DTOP_MODULATEINVALPHA_ADDCOLOR */  ARG1 | ARG2,
+        /* D3DTOP_MODULATEINVCOLOR_ADDALPHA */  ARG1 | ARG2,
+        /* D3DTOP_BUMPENVMAP                */  ARG1 | ARG2,
+        /* D3DTOP_BUMPENVMAPLUMINANCE       */  ARG1 | ARG2,
+        /* D3DTOP_DOTPRODUCT3               */  ARG1 | ARG2,
+        /* D3DTOP_MULTIPLYADD               */  ARG1 | ARG2 | ARG0,
+        /* D3DTOP_LERP                      */  ARG1 | ARG2 | ARG0
+    };
+    unsigned int i;
+    DWORD ttff;
+    DWORD cop, aop, carg0, carg1, carg2, aarg0, aarg1, aarg2;
+
+    for(i = 0; i < GL_LIMITS(texture_stages); i++) {
+        IWineD3DBaseTextureImpl *texture;
+        settings->op[i].padding = 0;
+        if(stateblock->textureState[i][WINED3DTSS_COLOROP] == WINED3DTOP_DISABLE) {
+            settings->op[i].cop = WINED3DTOP_DISABLE;
+            settings->op[i].aop = WINED3DTOP_DISABLE;
+            settings->op[i].carg0 = settings->op[i].carg1 = settings->op[i].carg2 = ARG_UNUSED;
+            settings->op[i].aarg0 = settings->op[i].aarg1 = settings->op[i].aarg2 = ARG_UNUSED;
+            settings->op[i].color_correction = COLOR_FIXUP_IDENTITY;
+            settings->op[i].dst = resultreg;
+            settings->op[i].tex_type = tex_1d;
+            settings->op[i].projected = proj_none;
+            i++;
+            break;
+        }
+
+        texture = (IWineD3DBaseTextureImpl *) stateblock->textures[i];
+        if(texture) {
+            settings->op[i].color_correction = texture->baseTexture.shader_color_fixup;
+            if(ignore_textype) {
+                settings->op[i].tex_type = tex_1d;
+            } else {
+                switch(stateblock->textureDimensions[i]) {
+                    case GL_TEXTURE_1D:
+                        settings->op[i].tex_type = tex_1d;
+                        break;
+                    case GL_TEXTURE_2D:
+                        settings->op[i].tex_type = tex_2d;
+                        break;
+                    case GL_TEXTURE_3D:
+                        settings->op[i].tex_type = tex_3d;
+                        break;
+                    case GL_TEXTURE_CUBE_MAP_ARB:
+                        settings->op[i].tex_type = tex_cube;
+                        break;
+                    case GL_TEXTURE_RECTANGLE_ARB:
+                        settings->op[i].tex_type = tex_rect;
+                        break;
+                }
+            }
+        } else {
+            settings->op[i].color_correction = COLOR_FIXUP_IDENTITY;
+            settings->op[i].tex_type = tex_1d;
+        }
+
+        cop = stateblock->textureState[i][WINED3DTSS_COLOROP];
+        aop = stateblock->textureState[i][WINED3DTSS_ALPHAOP];
+
+        carg1 = (args[cop] & ARG1) ? stateblock->textureState[i][WINED3DTSS_COLORARG1] : 0xffffffff;
+        carg2 = (args[cop] & ARG2) ? stateblock->textureState[i][WINED3DTSS_COLORARG2] : 0xffffffff;
+        carg0 = (args[cop] & ARG0) ? stateblock->textureState[i][WINED3DTSS_COLORARG0] : 0xffffffff;
+
+        if(is_invalid_op(stateblock->wineD3DDevice, i, cop,
+                         carg1, carg2, carg0)) {
+            carg0 = 0xffffffff;
+            carg2 = 0xffffffff;
+            carg1 = WINED3DTA_CURRENT;
+            cop = WINED3DTOP_SELECTARG1;
+        }
+
+        if(cop == WINED3DTOP_DOTPRODUCT3) {
+            /* A dotproduct3 on the colorop overwrites the alphaop operation and replicates
+             * the color result to the alpha component of the destination
+             */
+            aop = cop;
+            aarg1 = carg1;
+            aarg2 = carg2;
+            aarg0 = carg0;
+        } else {
+            aarg1 = (args[aop] & ARG1) ? stateblock->textureState[i][WINED3DTSS_ALPHAARG1] : 0xffffffff;
+            aarg2 = (args[aop] & ARG2) ? stateblock->textureState[i][WINED3DTSS_ALPHAARG2] : 0xffffffff;
+            aarg0 = (args[aop] & ARG0) ? stateblock->textureState[i][WINED3DTSS_ALPHAARG0] : 0xffffffff;
+        }
+
+        if(i == 0 && stateblock->textures[0] &&
+                  stateblock->renderState[WINED3DRS_COLORKEYENABLE] &&
+                 (stateblock->textureDimensions[0] == GL_TEXTURE_2D ||
+                  stateblock->textureDimensions[0] == GL_TEXTURE_RECTANGLE_ARB)) {
+            IWineD3DSurfaceImpl *surf = (IWineD3DSurfaceImpl *) ((IWineD3DTextureImpl *) stateblock->textures[0])->surfaces[0];
+
+            if(surf->CKeyFlags & WINEDDSD_CKSRCBLT &&
+               getFormatDescEntry(surf->resource.format, NULL, NULL)->alphaMask == 0x00000000) {
+
+                if(aop == WINED3DTOP_DISABLE) {
+                   aarg1 = WINED3DTA_TEXTURE;
+                   aop = WINED3DTOP_SELECTARG1;
+                }
+                else if(aop == WINED3DTOP_SELECTARG1 && aarg1 != WINED3DTA_TEXTURE) {
+                    if (stateblock->renderState[WINED3DRS_ALPHABLENDENABLE]) {
+                        aarg2 = WINED3DTA_TEXTURE;
+                        aop = WINED3DTOP_MODULATE;
+                    }
+                    else aarg1 = WINED3DTA_TEXTURE;
+                }
+                else if(aop == WINED3DTOP_SELECTARG2 && aarg2 != WINED3DTA_TEXTURE) {
+                    if (stateblock->renderState[WINED3DRS_ALPHABLENDENABLE]) {
+                        aarg1 = WINED3DTA_TEXTURE;
+                        aop = WINED3DTOP_MODULATE;
+                    }
+                    else aarg2 = WINED3DTA_TEXTURE;
+                }
+            }
+        }
+
+        if(is_invalid_op(stateblock->wineD3DDevice, i, aop,
+           aarg1, aarg2, aarg0)) {
+               aarg0 = 0xffffffff;
+               aarg2 = 0xffffffff;
+               aarg1 = WINED3DTA_CURRENT;
+               aop = WINED3DTOP_SELECTARG1;
+        }
+
+        if(carg1 == WINED3DTA_TEXTURE || carg2 == WINED3DTA_TEXTURE || carg0 == WINED3DTA_TEXTURE ||
+           aarg1 == WINED3DTA_TEXTURE || aarg2 == WINED3DTA_TEXTURE || aarg0 == WINED3DTA_TEXTURE) {
+            ttff = stateblock->textureState[i][WINED3DTSS_TEXTURETRANSFORMFLAGS];
+            if(ttff == (WINED3DTTFF_PROJECTED | WINED3DTTFF_COUNT3)) {
+                settings->op[i].projected = proj_count3;
+            } else if(ttff == (WINED3DTTFF_PROJECTED | WINED3DTTFF_COUNT4)) {
+                settings->op[i].projected = proj_count4;
+            } else {
+                settings->op[i].projected = proj_none;
+            }
+        } else {
+            settings->op[i].projected = proj_none;
+        }
+
+        settings->op[i].cop = cop;
+        settings->op[i].aop = aop;
+        settings->op[i].carg0 = carg0;
+        settings->op[i].carg1 = carg1;
+        settings->op[i].carg2 = carg2;
+        settings->op[i].aarg0 = aarg0;
+        settings->op[i].aarg1 = aarg1;
+        settings->op[i].aarg2 = aarg2;
+
+        if(stateblock->textureState[i][WINED3DTSS_RESULTARG] == WINED3DTA_TEMP) {
+            settings->op[i].dst = tempreg;
+        } else {
+            settings->op[i].dst = resultreg;
+        }
+    }
+
+    /* Clear unsupported stages */
+    for(; i < MAX_TEXTURES; i++) {
+        memset(&settings->op[i], 0xff, sizeof(settings->op[i]));
+    }
+
+    if(stateblock->renderState[WINED3DRS_FOGENABLE] == FALSE) {
+        settings->fog = FOG_OFF;
+    } else if(stateblock->renderState[WINED3DRS_FOGTABLEMODE] == WINED3DFOG_NONE) {
+        switch(stateblock->renderState[WINED3DRS_FOGVERTEXMODE]) {
+            case WINED3DFOG_NONE:
+            case WINED3DFOG_LINEAR:
+                settings->fog = FOG_LINEAR;
+                break;
+            case WINED3DFOG_EXP:
+                settings->fog = FOG_EXP;
+                break;
+            case WINED3DFOG_EXP2:
+                settings->fog = FOG_EXP2;
+                break;
+        }
+    } else {
+        switch(stateblock->renderState[WINED3DRS_FOGTABLEMODE]) {
+            case WINED3DFOG_LINEAR:
+                settings->fog = FOG_LINEAR;
+                break;
+            case WINED3DFOG_EXP:
+                settings->fog = FOG_EXP;
+                break;
+            case WINED3DFOG_EXP2:
+                settings->fog = FOG_EXP2;
+                break;
+        }
+    }
+    if(stateblock->renderState[WINED3DRS_SRGBWRITEENABLE]) {
+        settings->sRGB_write = 1;
+    } else {
+        settings->sRGB_write = 0;
+    }
+}
+#undef GLINFO_LOCATION
+
+const struct ffp_frag_desc *find_ffp_frag_shader(const struct hash_table_t *fragment_shaders,
+        const struct ffp_frag_settings *settings)
+{
+    return (const struct ffp_frag_desc *)hash_table_get(fragment_shaders, settings);
+}
+
+void add_ffp_frag_shader(struct hash_table_t *shaders, struct ffp_frag_desc *desc) {
+    struct ffp_frag_settings *key = HeapAlloc(GetProcessHeap(), 0, sizeof(*key));
+    /* Note that the key is the implementation independent part of the ffp_frag_desc structure,
+     * whereas desc points to an extended structure with implementation specific parts.
+     * Make a copy of the key because hash_table_put takes ownership of it
+     */
+    *key = desc->settings;
+    hash_table_put(shaders, key, desc);
+}
+
+/* Activates the texture dimension according to the bound D3D texture.
+ * Does not care for the colorop or correct gl texture unit(when using nvrc)
+ * Requires the caller to activate the correct unit before
+ */
+#define GLINFO_LOCATION stateblock->wineD3DDevice->adapter->gl_info
+void texture_activate_dimensions(DWORD stage, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    if(stateblock->textures[stage]) {
+        switch(stateblock->textureDimensions[stage]) {
+            case GL_TEXTURE_2D:
+                glDisable(GL_TEXTURE_3D);
+                checkGLcall("glDisable(GL_TEXTURE_3D)");
+                if(GL_SUPPORT(ARB_TEXTURE_CUBE_MAP)) {
+                    glDisable(GL_TEXTURE_CUBE_MAP_ARB);
+                    checkGLcall("glDisable(GL_TEXTURE_CUBE_MAP_ARB)");
+                }
+                if(GL_SUPPORT(ARB_TEXTURE_RECTANGLE)) {
+                    glDisable(GL_TEXTURE_RECTANGLE_ARB);
+                    checkGLcall("glDisable(GL_TEXTURE_RECTANGLE_ARB)");
+                }
+                glEnable(GL_TEXTURE_2D);
+                checkGLcall("glEnable(GL_TEXTURE_2D)");
+                break;
+            case GL_TEXTURE_RECTANGLE_ARB:
+                glDisable(GL_TEXTURE_2D);
+                checkGLcall("glDisable(GL_TEXTURE_2D)");
+                glDisable(GL_TEXTURE_3D);
+                checkGLcall("glDisable(GL_TEXTURE_3D)");
+                if(GL_SUPPORT(ARB_TEXTURE_CUBE_MAP)) {
+                    glDisable(GL_TEXTURE_CUBE_MAP_ARB);
+                    checkGLcall("glDisable(GL_TEXTURE_CUBE_MAP_ARB)");
+                }
+                glEnable(GL_TEXTURE_RECTANGLE_ARB);
+                checkGLcall("glEnable(GL_TEXTURE_RECTANGLE_ARB)");
+                break;
+            case GL_TEXTURE_3D:
+                if(GL_SUPPORT(ARB_TEXTURE_CUBE_MAP)) {
+                    glDisable(GL_TEXTURE_CUBE_MAP_ARB);
+                    checkGLcall("glDisable(GL_TEXTURE_CUBE_MAP_ARB)");
+                }
+                if(GL_SUPPORT(ARB_TEXTURE_RECTANGLE)) {
+                    glDisable(GL_TEXTURE_RECTANGLE_ARB);
+                    checkGLcall("glDisable(GL_TEXTURE_RECTANGLE_ARB)");
+                }
+                glDisable(GL_TEXTURE_2D);
+                checkGLcall("glDisable(GL_TEXTURE_2D)");
+                glEnable(GL_TEXTURE_3D);
+                checkGLcall("glEnable(GL_TEXTURE_3D)");
+                break;
+            case GL_TEXTURE_CUBE_MAP_ARB:
+                glDisable(GL_TEXTURE_2D);
+                checkGLcall("glDisable(GL_TEXTURE_2D)");
+                glDisable(GL_TEXTURE_3D);
+                checkGLcall("glDisable(GL_TEXTURE_3D)");
+                if(GL_SUPPORT(ARB_TEXTURE_RECTANGLE)) {
+                    glDisable(GL_TEXTURE_RECTANGLE_ARB);
+                    checkGLcall("glDisable(GL_TEXTURE_RECTANGLE_ARB)");
+                }
+                glEnable(GL_TEXTURE_CUBE_MAP_ARB);
+                checkGLcall("glEnable(GL_TEXTURE_CUBE_MAP_ARB)");
+              break;
+        }
+    } else {
+        glEnable(GL_TEXTURE_2D);
+        checkGLcall("glEnable(GL_TEXTURE_2D)");
+        glDisable(GL_TEXTURE_3D);
+        checkGLcall("glDisable(GL_TEXTURE_3D)");
+        if(GL_SUPPORT(ARB_TEXTURE_CUBE_MAP)) {
+            glDisable(GL_TEXTURE_CUBE_MAP_ARB);
+            checkGLcall("glDisable(GL_TEXTURE_CUBE_MAP_ARB)");
+        }
+        if(GL_SUPPORT(ARB_TEXTURE_RECTANGLE)) {
+            glDisable(GL_TEXTURE_RECTANGLE_ARB);
+            checkGLcall("glDisable(GL_TEXTURE_RECTANGLE_ARB)");
+        }
+        /* Binding textures is done by samplers. A dummy texture will be bound */
+    }
+}
+
+void sampler_texdim(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
+    DWORD sampler = state - STATE_SAMPLER(0);
+    DWORD mapped_stage = stateblock->wineD3DDevice->texUnitMap[sampler];
+
+    /* No need to enable / disable anything here for unused samplers. The tex_colorop
+    * handler takes care. Also no action is needed with pixel shaders, or if tex_colorop
+    * will take care of this business
+    */
+    if(mapped_stage == -1 || mapped_stage >= GL_LIMITS(textures)) return;
+    if(sampler >= stateblock->lowest_disabled_stage) return;
+    if(isStateDirty(context, STATE_TEXTURESTAGE(sampler, WINED3DTSS_COLOROP))) return;
+
+    texture_activate_dimensions(sampler, stateblock, context);
+}
+#undef GLINFO_LOCATION
+
+unsigned int ffp_frag_program_key_hash(const void *key)
+{
+    const struct ffp_frag_settings *k = (const struct ffp_frag_settings *)key;
+    unsigned int hash = 0, i;
+    const DWORD *blob;
+
+    /* This takes the texture op settings of stage 0 and 1 into account.
+     * how exactly depends on the memory laybout of the compiler, but it
+     * should not matter too much. Stages > 1 are used rarely, so there's
+     * no need to process them. Even if they're used it is likely that
+     * the ffp setup has distinct stage 0 and 1 settings.
+     */
+    for(i = 0; i < 2; i++) {
+        blob = (const DWORD *)&k->op[i];
+        hash ^= blob[0] ^ blob[1];
+    }
+
+    hash += ~(hash << 15);
+    hash ^=  (hash >> 10);
+    hash +=  (hash << 3);
+    hash ^=  (hash >> 6);
+    hash += ~(hash << 11);
+    hash ^=  (hash >> 16);
+
+    return hash;
+}
+
+BOOL ffp_frag_program_key_compare(const void *keya, const void *keyb)
+{
+    const struct ffp_frag_settings *ka = (const struct ffp_frag_settings *)keya;
+    const struct ffp_frag_settings *kb = (const struct ffp_frag_settings *)keyb;
+
+    return memcmp(ka, kb, sizeof(*ka)) == 0;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/vertexbuffer.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/vertexbuffer.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/vertexbuffer.c	(revision 16410)
@@ -0,0 +1,818 @@
+/*
+ * IWineD3DVertexBuffer Implementation
+ *
+ * Copyright 2002-2005 Jason Edmeades
+ *                     Raphael Junqueira
+ * Copyright 2004 Christian Costa
+ * Copyright 2007 Stefan Dösinger for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d);
+#define GLINFO_LOCATION This->resource.wineD3DDevice->adapter->gl_info
+
+#define VB_MAXDECLCHANGES     100     /* After that number we stop converting */
+#define VB_RESETDECLCHANGE    1000    /* Reset the changecount after that number of draws */
+
+/* *******************************************
+   IWineD3DVertexBuffer IUnknown parts follow
+   ******************************************* */
+static HRESULT WINAPI IWineD3DVertexBufferImpl_QueryInterface(IWineD3DVertexBuffer *iface, REFIID riid, LPVOID *ppobj)
+{
+    IWineD3DVertexBufferImpl *This = (IWineD3DVertexBufferImpl *)iface;
+    TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj);
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IWineD3DBase)
+        || IsEqualGUID(riid, &IID_IWineD3DResource)
+        || IsEqualGUID(riid, &IID_IWineD3DVertexBuffer)){
+        IUnknown_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IWineD3DVertexBufferImpl_AddRef(IWineD3DVertexBuffer *iface) {
+    IWineD3DVertexBufferImpl *This = (IWineD3DVertexBufferImpl *)iface;
+    ULONG ref = InterlockedIncrement(&This->resource.ref);
+    TRACE("(%p) : AddRef increasing from %d\n", This, ref - 1);
+    return ref;
+}
+
+static ULONG WINAPI IWineD3DVertexBufferImpl_Release(IWineD3DVertexBuffer *iface) {
+    IWineD3DVertexBufferImpl *This = (IWineD3DVertexBufferImpl *)iface;
+    ULONG ref = InterlockedDecrement(&This->resource.ref);
+    TRACE("(%p) : Releasing from %d\n", This, ref + 1);
+    if (ref == 0) {
+
+        if(This->vbo) {
+            IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
+
+            ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+            ENTER_GL();
+            GL_EXTCALL(glDeleteBuffersARB(1, &This->vbo));
+            checkGLcall("glDeleteBuffersARB");
+            LEAVE_GL();
+        }
+
+        resource_cleanup((IWineD3DResource *)iface);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+    return ref;
+}
+
+/* ****************************************************
+   IWineD3DVertexBuffer IWineD3DResource parts follow
+   **************************************************** */
+static HRESULT WINAPI IWineD3DVertexBufferImpl_GetDevice(IWineD3DVertexBuffer *iface, IWineD3DDevice** ppDevice) {
+    return resource_get_device((IWineD3DResource *)iface, ppDevice);
+}
+
+static HRESULT WINAPI IWineD3DVertexBufferImpl_SetPrivateData(IWineD3DVertexBuffer *iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) {
+    return resource_set_private_data((IWineD3DResource *)iface, refguid, pData, SizeOfData, Flags);
+}
+
+static HRESULT WINAPI IWineD3DVertexBufferImpl_GetPrivateData(IWineD3DVertexBuffer *iface, REFGUID refguid, void* pData, DWORD* pSizeOfData) {
+    return resource_get_private_data((IWineD3DResource *)iface, refguid, pData, pSizeOfData);
+}
+
+static HRESULT WINAPI IWineD3DVertexBufferImpl_FreePrivateData(IWineD3DVertexBuffer *iface, REFGUID refguid) {
+    return resource_free_private_data((IWineD3DResource *)iface, refguid);
+}
+
+static DWORD    WINAPI IWineD3DVertexBufferImpl_SetPriority(IWineD3DVertexBuffer *iface, DWORD PriorityNew) {
+    return resource_set_priority((IWineD3DResource *)iface, PriorityNew);
+}
+
+static DWORD    WINAPI IWineD3DVertexBufferImpl_GetPriority(IWineD3DVertexBuffer *iface) {
+    return resource_get_priority((IWineD3DResource *)iface);
+}
+
+static inline void fixup_d3dcolor(DWORD *pos) {
+    DWORD srcColor = *pos;
+
+    /* Color conversion like in drawStridedSlow. watch out for little endianity
+     * If we want that stuff to work on big endian machines too we have to consider more things
+     *
+     * 0xff000000: Alpha mask
+     * 0x00ff0000: Blue mask
+     * 0x0000ff00: Green mask
+     * 0x000000ff: Red mask
+     */
+    *pos = 0;
+    *pos |= (srcColor & 0xff00ff00)      ;   /* Alpha Green */
+    *pos |= (srcColor & 0x00ff0000) >> 16;   /* Red */
+    *pos |= (srcColor & 0x000000ff) << 16;   /* Blue */
+}
+
+static inline void fixup_transformed_pos(float *p) {
+    float x, y, z, w;
+
+    /* rhw conversion like in drawStridedSlow */
+    if(p[3] == 1.0 || ((p[3] < eps) && (p[3] > -eps))) {
+        x = p[0];
+        y = p[1];
+        z = p[2];
+        w = 1.0;
+    } else {
+        w = 1.0 / p[3];
+        x = p[0] * w;
+        y = p[1] * w;
+        z = p[2] * w;
+    }
+    p[0] = x;
+    p[1] = y;
+    p[2] = z;
+    p[3] = w;
+}
+
+static DWORD *find_conversion_shift(IWineD3DVertexBufferImpl *This, const WineDirect3DVertexStridedData *strided, DWORD stride)
+{
+    DWORD *ret, i, shift, j, type;
+    DWORD orig_type_size;
+
+    if(!stride) {
+        TRACE("No shift\n");
+        return NULL;
+    }
+
+    This->conv_stride = stride;
+    ret = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DWORD) * stride);
+    for(i = 0; i < MAX_ATTRIBS; i++) {
+        if(strided->u.input[i].VBO != This->vbo) continue;
+
+        type = strided->u.input[i].dwType;
+        if(type == WINED3DDECLTYPE_FLOAT16_2) {
+            shift = 4;
+        } else if(type == WINED3DDECLTYPE_FLOAT16_4) {
+            shift = 8;
+            /* Pre-shift the last 4 bytes in the FLOAT16_4 by 4 bytes - this makes FLOAT16_2 and FLOAT16_4 conversions
+             * compatible
+             */
+            for(j = 4; j < 8; j++) {
+                ret[(DWORD_PTR) strided->u.input[i].lpData + j ] += 4;
+            }
+        } else {
+            shift = 0;
+        }
+        This->conv_stride += shift;
+
+        if(shift) {
+            orig_type_size = WINED3D_ATR_TYPESIZE(type) * WINED3D_ATR_SIZE(type);
+            for(j = (DWORD_PTR) strided->u.input[i].lpData + orig_type_size; j < stride; j++) {
+                ret[j] += shift;
+            }
+        }
+    }
+
+    if(TRACE_ON(d3d)) {
+        TRACE("Dumping conversion shift:\n");
+        for(i = 0; i < stride; i++) {
+            TRACE("[%d]", ret[i]);
+        }
+        TRACE("\n");
+    }
+    return ret;
+}
+
+static inline BOOL process_converted_attribute(IWineD3DVertexBufferImpl *This,
+                                               const enum vbo_conversion_type conv_type,
+                                               const WineDirect3DStridedData *attrib,
+                                               DWORD *stride_this_run, const DWORD type) {
+    DWORD attrib_size;
+    BOOL ret = FALSE;
+    int i;
+    DWORD offset = This->resource.wineD3DDevice->stateBlock->streamOffset[attrib->streamNo];
+    DWORD_PTR data;
+
+    /* Check for some valid situations which cause us pain. One is if the buffer is used for
+     * constant attributes(stride = 0), the other one is if the buffer is used on two streams
+     * with different strides. In the 2nd case we might have to drop conversion entirely,
+     * it is possible that the same bytes are once read as FLOAT2 and once as UBYTE4N.
+     */
+    if(attrib->dwStride == 0) {
+        FIXME("%s used with stride 0, let's hope we get the vertex stride from somewhere else\n",
+                debug_d3ddecltype(type));
+    } else if(attrib->dwStride != *stride_this_run &&
+                *stride_this_run) {
+        FIXME("Got two concurrent strides, %d and %d\n", attrib->dwStride, *stride_this_run);
+    } else {
+        *stride_this_run = attrib->dwStride;
+        if(This->stride != *stride_this_run) {
+            /* We rely that this happens only on the first converted attribute that is found,
+             * if at all. See above check
+             */
+            TRACE("Reconverting because converted attributes occur, and the stride changed\n");
+            This->stride = *stride_this_run;
+            HeapFree(GetProcessHeap(), HEAP_ZERO_MEMORY, This->conv_map);
+            This->conv_map = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*This->conv_map) * This->stride);
+            ret = TRUE;
+        }
+    }
+
+    data = (((DWORD_PTR) attrib->lpData) + offset) % This->stride;
+    attrib_size = WINED3D_ATR_SIZE(type) * WINED3D_ATR_TYPESIZE(type);
+    for(i = 0; i < attrib_size; i++) {
+        if(This->conv_map[data + i] != conv_type) {
+            TRACE("Byte %ld in vertex changed\n", i + data);
+            TRACE("It was type %d, is %d now\n", This->conv_map[data + i], conv_type);
+            ret = TRUE;
+            This->conv_map[data + i] = conv_type;
+        }
+    }
+    return ret;
+}
+
+static inline BOOL check_attribute(IWineD3DVertexBufferImpl *This, const WineDirect3DStridedData *attrib,
+                                   const BOOL check_d3dcolor, const BOOL is_ffp_position, const BOOL is_ffp_color,
+                                   DWORD *stride_this_run, BOOL *float16_used) {
+    BOOL ret = FALSE;
+    DWORD type;
+
+    /* Ignore attributes that do not have our vbo. After that check we can be sure that the attribute is
+     * there, on nonexistent attribs the vbo is 0.
+     */
+    if(attrib->VBO != This->vbo) return FALSE;
+
+    type = attrib->dwType;
+    /* Look for newly appeared conversion */
+    if(!GL_SUPPORT(NV_HALF_FLOAT) && (
+       type == WINED3DDECLTYPE_FLOAT16_2 ||
+       type == WINED3DDECLTYPE_FLOAT16_4)) {
+
+        ret = process_converted_attribute(This, CONV_FLOAT16_2, attrib, stride_this_run, type);
+
+        if(is_ffp_position) {
+            FIXME("Test FLOAT16 fixed function processing positions\n");
+        } else if(is_ffp_color) {
+            FIXME("test FLOAT16 fixed function processing colors\n");
+        }
+        *float16_used = TRUE;
+    } else if(check_d3dcolor && type == WINED3DDECLTYPE_D3DCOLOR) {
+
+        ret = process_converted_attribute(This, CONV_D3DCOLOR, attrib, stride_this_run, WINED3DDECLTYPE_D3DCOLOR);
+
+        if(!is_ffp_color) {
+            FIXME("Test for non-color fixed function D3DCOLOR type\n");
+        }
+    } else if(is_ffp_position && type == WINED3DDECLTYPE_FLOAT4) {
+        ret = process_converted_attribute(This, CONV_POSITIONT, attrib, stride_this_run, WINED3DDECLTYPE_FLOAT4);
+    } else if(This->conv_map) {
+        ret = process_converted_attribute(This, CONV_NONE, attrib, stride_this_run, type);
+    }
+    return ret;
+}
+
+static inline BOOL IWineD3DVertexBufferImpl_FindDecl(IWineD3DVertexBufferImpl *This)
+{
+    IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
+    BOOL ret = FALSE;
+    int i;
+    DWORD stride_this_run = 0;
+    BOOL float16_used = FALSE;
+
+    /* In d3d7 the vertex buffer declaration NEVER changes because it is stored in the d3d7 vertex buffer.
+     * Once we have our declaration there is no need to look it up again.
+     */
+    if(((IWineD3DImpl *)device->wineD3D)->dxVersion == 7 && This->Flags & VBFLAG_HASDESC) {
+        return FALSE;
+    }
+
+    TRACE("Finding vertex buffer conversion information\n");
+    /* Certain declaration types need some fixups before we can pass them to opengl. This means D3DCOLOR attributes with fixed
+     * function vertex processing, FLOAT4 POSITIONT with fixed function, and FLOAT16 if GL_NV_half_float is not supported.
+     *
+     * The vertex buffer FVF doesn't help with finding them, we have to use the decoded vertex declaration and pick the things
+     * that concern the current buffer. A problem with this is that this can change between draws, so we have to validate
+     * the information and reprocess the buffer if it changes, and avoid false positives for performance reasons.
+     *
+     * We have to distinguish between vertex shaders and fixed function to pick the way we access the
+     * strided vertex information.
+     *
+     * This code sets up a per-byte array with the size of the detected stride of the arrays in the
+     * buffer. For each byte we have a field that marks the conversion needed on this byte. For example,
+     * the following declaration with fixed function vertex processing:
+     *
+     *      POSITIONT, FLOAT4
+     *      NORMAL, FLOAT3
+     *      DIFFUSE, FLOAT16_4
+     *      SPECULAR, D3DCOLOR
+     *
+     * Will result in
+     * {                 POSITIONT                    }{             NORMAL                }{    DIFFUSE          }{SPECULAR }
+     * [P][P][P][P][P][P][P][P][P][P][P][P][P][P][P][P][0][0][0][0][0][0][0][0][0][0][0][0][F][F][F][F][F][F][F][F][C][C][C][C]
+     *
+     * Where in this example map P means 4 component position conversion, 0 means no conversion, F means FLOAT16_2 conversion
+     * and C means D3DCOLOR conversion(red / blue swizzle).
+     *
+     * If we're doing conversion and the stride changes we have to reconvert the whole buffer. Note that we do not mind if the
+     * semantic changes, we only care for the conversion type. So if the NORMAL is replaced with a TEXCOORD, nothing has to be
+     * done, or if the DIFFUSE is replaced with a D3DCOLOR BLENDWEIGHT we can happily dismiss the change. Some conversion types
+     * depend on the semantic as well, for example a FLOAT4 texcoord needs no conversion while a FLOAT4 positiont needs one
+     */
+    if(use_vs(device)) {
+        TRACE("vhsader\n");
+        /* If the current vertex declaration is marked for no half float conversion don't bother to
+         * analyse the strided streams in depth, just set them up for no conversion. Return decl changed
+         * if we used conversion before
+         */
+        if(!((IWineD3DVertexDeclarationImpl *) device->stateBlock->vertexDecl)->half_float_conv_needed) {
+            if(This->conv_map) {
+                TRACE("Now using shaders without conversion, but conversion used before\n");
+                HeapFree(GetProcessHeap(), 0, This->conv_map);
+                HeapFree(GetProcessHeap(), 0, This->conv_shift);
+                This->conv_map = NULL;
+                This->stride = 0;
+                This->conv_shift = NULL;
+                This->conv_stride = 0;
+                return TRUE;
+            } else {
+                return FALSE;
+            }
+        }
+        for(i = 0; i < MAX_ATTRIBS; i++) {
+            ret = check_attribute(This, &device->strided_streams.u.input[i], FALSE, FALSE, FALSE, &stride_this_run, &float16_used) || ret;
+        }
+
+        /* Recalculate the conversion shift map if the declaration has changed,
+         * and we're using float16 conversion or used it on the last run
+         */
+        if(ret && (float16_used || This->conv_map)) {
+            HeapFree(GetProcessHeap(), 0, This->conv_shift);
+            This->conv_shift = find_conversion_shift(This, &device->strided_streams, This->stride);
+        }
+    } else {
+        /* Fixed function is a bit trickier. We have to take care for D3DCOLOR types, FLOAT4 positions and of course
+         * FLOAT16s if not supported. Also, we can't iterate over the array, so use macros to generate code for all
+         * the attributes that our current fixed function pipeline implementation cares for.
+         */
+        ret = check_attribute(This, &device->strided_streams.u.s.position,     TRUE, TRUE,  FALSE, &stride_this_run, &float16_used) || ret;
+        ret = check_attribute(This, &device->strided_streams.u.s.normal,       TRUE, FALSE, FALSE, &stride_this_run, &float16_used) || ret;
+        ret = check_attribute(This, &device->strided_streams.u.s.diffuse,      TRUE, FALSE, TRUE,  &stride_this_run, &float16_used) || ret;
+        ret = check_attribute(This, &device->strided_streams.u.s.specular,     TRUE, FALSE, TRUE,  &stride_this_run, &float16_used) || ret;
+        ret = check_attribute(This, &device->strided_streams.u.s.texCoords[0], TRUE, FALSE, FALSE, &stride_this_run, &float16_used) || ret;
+        ret = check_attribute(This, &device->strided_streams.u.s.texCoords[1], TRUE, FALSE, FALSE, &stride_this_run, &float16_used) || ret;
+        ret = check_attribute(This, &device->strided_streams.u.s.texCoords[2], TRUE, FALSE, FALSE, &stride_this_run, &float16_used) || ret;
+        ret = check_attribute(This, &device->strided_streams.u.s.texCoords[3], TRUE, FALSE, FALSE, &stride_this_run, &float16_used) || ret;
+        ret = check_attribute(This, &device->strided_streams.u.s.texCoords[4], TRUE, FALSE, FALSE, &stride_this_run, &float16_used) || ret;
+        ret = check_attribute(This, &device->strided_streams.u.s.texCoords[5], TRUE, FALSE, FALSE, &stride_this_run, &float16_used) || ret;
+        ret = check_attribute(This, &device->strided_streams.u.s.texCoords[6], TRUE, FALSE, FALSE, &stride_this_run, &float16_used) || ret;
+        ret = check_attribute(This, &device->strided_streams.u.s.texCoords[7], TRUE, FALSE, FALSE, &stride_this_run, &float16_used) || ret;
+
+        if(float16_used) FIXME("Float16 conversion used with fixed function vertex processing\n");
+    }
+
+    if(stride_this_run == 0 && This->conv_map) {
+        /* Sanity test */
+        if(ret == FALSE) {
+            ERR("no converted attributes found, old conversion map exists, and no declaration change???\n");
+        }
+        HeapFree(GetProcessHeap(), 0, This->conv_map);
+        This->conv_map = NULL;
+        This->stride = 0;
+    }
+    This->Flags |= VBFLAG_HASDESC;
+
+    if(ret) TRACE("Conversion information changed\n");
+    return ret;
+}
+
+static void check_vbo_size(IWineD3DVertexBufferImpl *This) {
+    DWORD size = This->conv_stride ? This->conv_stride * (This->resource.size / This->stride) : This->resource.size;
+    if(This->vbo_size != size) {
+        TRACE("Old size %d, creating new size %d\n", This->vbo_size, size);
+        ENTER_GL();
+        GL_EXTCALL(glBindBufferARB(GL_ARRAY_BUFFER_ARB, This->vbo));
+        checkGLcall("glBindBufferARB");
+        GL_EXTCALL(glBufferDataARB(GL_ARRAY_BUFFER_ARB, size, NULL, This->vbo_usage));
+        This->vbo_size = size;
+        checkGLcall("glBufferDataARB");
+        LEAVE_GL();
+    }
+}
+
+static void CreateVBO(IWineD3DVertexBufferImpl *This) {
+    GLenum error, glUsage;
+    DWORD vboUsage = This->resource.usage;
+    IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
+
+    TRACE("Creating an OpenGL vertex buffer object for IWineD3DVertexBuffer %p  Usage(%s)\n", This, debug_d3dusage(vboUsage));
+
+    /* Make sure that a context is there. Needed in a multithreaded environment. Otherwise this call is a nop */
+    ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+    ENTER_GL();
+
+    /* Make sure that the gl error is cleared. Do not use checkGLcall
+    * here because checkGLcall just prints a fixme and continues. However,
+    * if an error during VBO creation occurs we can fall back to non-vbo operation
+    * with full functionality(but performance loss)
+    */
+    while(glGetError() != GL_NO_ERROR);
+
+    /* Basically the FVF parameter passed to CreateVertexBuffer is no good
+    * It is the FVF set with IWineD3DDevice::SetFVF or the Vertex Declaration set with
+    * IWineD3DDevice::SetVertexDeclaration that decides how the vertices in the buffer
+    * look like. This means that on each DrawPrimitive call the vertex buffer has to be verified
+    * to check if the rhw and color values are in the correct format.
+    */
+
+    GL_EXTCALL(glGenBuffersARB(1, &This->vbo));
+    error = glGetError();
+    if(This->vbo == 0 || error != GL_NO_ERROR) {
+        WARN("Failed to create a VBO with error %s (%#x)\n", debug_glerror(error), error);
+        goto error;
+    }
+
+    GL_EXTCALL(glBindBufferARB(GL_ARRAY_BUFFER_ARB, This->vbo));
+    error = glGetError();
+    if(error != GL_NO_ERROR) {
+        WARN("Failed to bind the VBO with error %s (%#x)\n", debug_glerror(error), error);
+        goto error;
+    }
+
+    /* Don't use static, because dx apps tend to update the buffer
+    * quite often even if they specify 0 usage. Because we always keep the local copy
+    * we never read from the vbo and can create a write only opengl buffer.
+    */
+    switch(vboUsage & (WINED3DUSAGE_WRITEONLY | WINED3DUSAGE_DYNAMIC) ) {
+        case WINED3DUSAGE_WRITEONLY | WINED3DUSAGE_DYNAMIC:
+        case WINED3DUSAGE_DYNAMIC:
+            TRACE("Gl usage = GL_STREAM_DRAW\n");
+            glUsage = GL_STREAM_DRAW_ARB;
+            break;
+        case WINED3DUSAGE_WRITEONLY:
+        default:
+            TRACE("Gl usage = GL_DYNAMIC_DRAW\n");
+            glUsage = GL_DYNAMIC_DRAW_ARB;
+            break;
+    }
+
+    /* Reserve memory for the buffer. The amount of data won't change
+    * so we are safe with calling glBufferData once with a NULL ptr and
+    * calling glBufferSubData on updates
+    */
+    GL_EXTCALL(glBufferDataARB(GL_ARRAY_BUFFER_ARB, This->resource.size, NULL, glUsage));
+    error = glGetError();
+    if(error != GL_NO_ERROR) {
+        WARN("glBufferDataARB failed with error %s (%#x)\n", debug_glerror(error), error);
+        goto error;
+    }
+    This->vbo_size = This->resource.size;
+    This->vbo_usage = glUsage;
+    This->dirtystart = 0;
+    This->dirtyend = This->resource.size;
+    This->Flags |= VBFLAG_DIRTY;
+
+    LEAVE_GL();
+
+    return;
+    error:
+            /* Clean up all vbo init, but continue because we can work without a vbo :-) */
+            FIXME("Failed to create a vertex buffer object. Continuing, but performance issues can occur\n");
+    if(This->vbo) GL_EXTCALL(glDeleteBuffersARB(1, &This->vbo));
+    This->vbo = 0;
+    LEAVE_GL();
+    return;
+}
+
+static void     WINAPI IWineD3DVertexBufferImpl_PreLoad(IWineD3DVertexBuffer *iface) {
+    IWineD3DVertexBufferImpl *This = (IWineD3DVertexBufferImpl *) iface;
+    IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
+    BYTE *data;
+    UINT start = 0, end = 0, vertices;
+    BOOL declChanged = FALSE;
+    int i, j;
+    TRACE("(%p)->()\n", This);
+
+    if(!This->vbo) {
+        /* TODO: Make converting independent from VBOs */
+        if(This->Flags & VBFLAG_CREATEVBO) {
+            CreateVBO(This);
+            This->Flags &= ~VBFLAG_CREATEVBO;
+        } else {
+            return; /* Not doing any conversion */
+        }
+    }
+
+    /* Reading the declaration makes only sense if the stateblock is finalized and the buffer bound to a stream */
+    if(device->isInDraw && This->bindCount > 0) {
+        declChanged = IWineD3DVertexBufferImpl_FindDecl(This);
+    } else if(This->Flags & VBFLAG_HASDESC) {
+        /* Reuse the declaration stored in the buffer. It will most likely not change, and if it does
+         * the stream source state handler will call PreLoad again and the change will be caught
+         */
+    } else {
+        /* Cannot get a declaration, and no declaration is stored in the buffer. It is pointless to preload
+         * now. When the buffer is used, PreLoad will be called by the stream source state handler and a valid
+         * declaration for the buffer can be found
+         */
+        return;
+    }
+
+    /* If applications change the declaration over and over, reconverting all the time is a huge
+     * performance hit. So count the declaration changes and release the VBO if there are too many
+     * of them (and thus stop converting)
+     */
+    if(declChanged) {
+        This->declChanges++;
+        This->draws = 0;
+
+        if(This->declChanges > VB_MAXDECLCHANGES) {
+            FIXME("Too many declaration changes, stopping converting\n");
+            ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+            ENTER_GL();
+            GL_EXTCALL(glDeleteBuffersARB(1, &This->vbo));
+            checkGLcall("glDeleteBuffersARB");
+            LEAVE_GL();
+            This->vbo = 0;
+            HeapFree(GetProcessHeap(), 0, This->conv_shift);
+
+            /* The stream source state handler might have read the memory of the vertex buffer already
+             * and got the memory in the vbo which is not valid any longer. Dirtify the stream source
+             * to force a reload. This happens only once per changed vertexbuffer and should occur rather
+             * rarely
+             */
+            IWineD3DDeviceImpl_MarkStateDirty(device, STATE_STREAMSRC);
+
+            return;
+        }
+        check_vbo_size(This);
+    } else {
+        /* However, it is perfectly fine to change the declaration every now and then. We don't want a game that
+         * changes it every minute drop the VBO after VB_MAX_DECL_CHANGES minutes. So count draws without
+         * decl changes and reset the decl change count after a specific number of them
+         */
+        This->draws++;
+        if(This->draws > VB_RESETDECLCHANGE) This->declChanges = 0;
+    }
+
+    if(declChanged) {
+        /* The declaration changed, reload the whole buffer */
+        WARN("Reloading buffer because of decl change\n");
+        start = 0;
+        end = This->resource.size;
+    } else if(This->Flags & VBFLAG_DIRTY) {
+        /* No decl change, but dirty data, reload the changed stuff */
+        if(This->conv_shift) {
+            if(This->dirtystart != 0 || This->dirtyend != 0) {
+                FIXME("Implement partial buffer loading with shifted conversion\n");
+            }
+        }
+        start = This->dirtystart;
+        end = This->dirtyend;
+    } else {
+        /* Desc not changed, buffer not dirty, nothing to do :-) */
+        return;
+    }
+
+    /* Mark the buffer clean */
+    This->Flags &= ~VBFLAG_DIRTY;
+    This->dirtystart = 0;
+    This->dirtyend = 0;
+
+    if(!This->conv_map) {
+        /* That means that there is nothing to fixup. Just upload from This->resource.allocatedMemory
+         * directly into the vbo. Do not free the system memory copy because drawPrimitive may need it if
+         * the stride is 0, for instancing emulation, vertex blending emulation or shader emulation.
+         */
+        TRACE("No conversion needed\n");
+
+        if(!device->isInDraw) {
+            ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+        }
+        ENTER_GL();
+        GL_EXTCALL(glBindBufferARB(GL_ARRAY_BUFFER_ARB, This->vbo));
+        checkGLcall("glBindBufferARB");
+        GL_EXTCALL(glBufferSubDataARB(GL_ARRAY_BUFFER_ARB, start, end-start, This->resource.allocatedMemory + start));
+        checkGLcall("glBufferSubDataARB");
+        LEAVE_GL();
+        return;
+    }
+
+    /* Now for each vertex in the buffer that needs conversion */
+    vertices = This->resource.size / This->stride;
+
+    if(This->conv_shift) {
+        TRACE("Shifted conversion\n");
+        data = HeapAlloc(GetProcessHeap(), 0, vertices * This->conv_stride);
+
+        for(i = start / This->stride; i < min((end / This->stride) + 1, vertices); i++) {
+            for(j = 0; j < This->stride; j++) {
+                switch(This->conv_map[j]) {
+                    case CONV_NONE:
+                        data[This->conv_stride * i + j + This->conv_shift[j]] = This->resource.allocatedMemory[This->stride * i + j];
+                        break;
+
+                    case CONV_FLOAT16_2:
+                    {
+                        float *out = (float *) (&data[This->conv_stride * i + j + This->conv_shift[j]]);
+                        const WORD *in = (WORD *) (&This->resource.allocatedMemory[i * This->stride + j]);
+
+                        out[1] = float_16_to_32(in + 1);
+                        out[0] = float_16_to_32(in + 0);
+                        j += 3;    /* Skip 3 additional bytes,as a FLOAT16_2 has 4 bytes */
+                        break;
+                    }
+
+                    default:
+                        FIXME("Unimplemented conversion %d in shifted conversion\n", This->conv_map[j]);
+                }
+            }
+        }
+
+        ENTER_GL();
+        GL_EXTCALL(glBindBufferARB(GL_ARRAY_BUFFER_ARB, This->vbo));
+        checkGLcall("glBindBufferARB");
+        GL_EXTCALL(glBufferSubDataARB(GL_ARRAY_BUFFER_ARB, 0, vertices * This->conv_stride, data));
+        checkGLcall("glBufferSubDataARB");
+        LEAVE_GL();
+
+    } else {
+        data = HeapAlloc(GetProcessHeap(), 0, This->resource.size);
+        memcpy(data + start, This->resource.allocatedMemory + start, end - start);
+        for(i = start / This->stride; i < min((end / This->stride) + 1, vertices); i++) {
+            for(j = 0; j < This->stride; j++) {
+                switch(This->conv_map[j]) {
+                    case CONV_NONE:
+                        /* Done already */
+                        j += 3;
+                        break;
+                    case CONV_D3DCOLOR:
+                        fixup_d3dcolor((DWORD *) (data + i * This->stride + j));
+                        j += 3;
+                        break;
+
+                    case CONV_POSITIONT:
+                        fixup_transformed_pos((float *) (data + i * This->stride + j));
+                        j += 15;
+                        break;
+
+                    case CONV_FLOAT16_2:
+                        ERR("Did not expect FLOAT16 conversion in unshifted conversion\n");
+                    default:
+                        FIXME("Unimplemented conversion %d in shifted conversion\n", This->conv_map[j]);
+                }
+            }
+        }
+
+        ENTER_GL();
+        GL_EXTCALL(glBindBufferARB(GL_ARRAY_BUFFER_ARB, This->vbo));
+        checkGLcall("glBindBufferARB");
+        GL_EXTCALL(glBufferSubDataARB(GL_ARRAY_BUFFER_ARB, start, end - start, data + start));
+        checkGLcall("glBufferSubDataARB");
+        LEAVE_GL();
+    }
+
+    HeapFree(GetProcessHeap(), 0, data);
+}
+
+static void WINAPI IWineD3DVertexBufferImpl_UnLoad(IWineD3DVertexBuffer *iface) {
+    IWineD3DVertexBufferImpl *This = (IWineD3DVertexBufferImpl *) iface;
+    IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
+    TRACE("(%p)\n", This);
+
+    /* This is easy: The whole content is shadowed in This->resource.allocatedMemory,
+     * so we only have to destroy the vbo. Only do it if we have a vbo, which implies
+     * that vbos are supported
+     */
+    if(This->vbo) {
+        ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+        ENTER_GL();
+        GL_EXTCALL(glDeleteBuffersARB(1, &This->vbo));
+        checkGLcall("glDeleteBuffersARB");
+        LEAVE_GL();
+        This->vbo = 0;
+        This->Flags |= VBFLAG_CREATEVBO; /* Recreate the VBO next load */
+    }
+}
+
+static WINED3DRESOURCETYPE WINAPI IWineD3DVertexBufferImpl_GetType(IWineD3DVertexBuffer *iface) {
+    return resource_get_type((IWineD3DResource *)iface);
+}
+
+static HRESULT WINAPI IWineD3DVertexBufferImpl_GetParent(IWineD3DVertexBuffer *iface, IUnknown **pParent) {
+    return resource_get_parent((IWineD3DResource *)iface, pParent);
+}
+
+/* ******************************************************
+   IWineD3DVertexBuffer IWineD3DVertexBuffer parts follow
+   ****************************************************** */
+static HRESULT  WINAPI IWineD3DVertexBufferImpl_Lock(IWineD3DVertexBuffer *iface, UINT OffsetToLock, UINT SizeToLock, BYTE** ppbData, DWORD Flags) {
+    IWineD3DVertexBufferImpl *This = (IWineD3DVertexBufferImpl *)iface;
+    BYTE *data;
+    TRACE("(%p)->%d, %d, %p, %08x\n", This, OffsetToLock, SizeToLock, ppbData, Flags);
+
+    InterlockedIncrement(&This->lockcount);
+
+    if(This->Flags & VBFLAG_DIRTY) {
+        if(This->dirtystart > OffsetToLock) This->dirtystart = OffsetToLock;
+        if(SizeToLock) {
+            if(This->dirtyend < OffsetToLock + SizeToLock) This->dirtyend = OffsetToLock + SizeToLock;
+        } else {
+            This->dirtyend = This->resource.size;
+        }
+    } else {
+        This->dirtystart = OffsetToLock;
+        if(SizeToLock)
+            This->dirtyend = OffsetToLock + SizeToLock;
+        else
+            This->dirtyend = This->resource.size;
+    }
+
+    data = This->resource.allocatedMemory;
+    This->Flags |= VBFLAG_DIRTY;
+    *ppbData = data + OffsetToLock;
+
+    TRACE("(%p) : returning memory of %p (base:%p,offset:%u)\n", This, data + OffsetToLock, data, OffsetToLock);
+    /* TODO: check Flags compatibility with This->currentDesc.Usage (see MSDN) */
+    return WINED3D_OK;
+}
+static HRESULT WINAPI IWineD3DVertexBufferImpl_Unlock(IWineD3DVertexBuffer *iface) {
+    IWineD3DVertexBufferImpl *This = (IWineD3DVertexBufferImpl *) iface;
+    LONG lockcount;
+    TRACE("(%p)\n", This);
+
+    lockcount = InterlockedDecrement(&This->lockcount);
+    if(lockcount > 0) {
+        /* Delay loading the buffer until everything is unlocked */
+        TRACE("Ignoring the unlock\n");
+        return WINED3D_OK;
+    }
+
+    if(This->Flags & VBFLAG_HASDESC) {
+        IWineD3DVertexBufferImpl_PreLoad(iface);
+    }
+    return WINED3D_OK;
+}
+static HRESULT  WINAPI IWineD3DVertexBufferImpl_GetDesc(IWineD3DVertexBuffer *iface, WINED3DVERTEXBUFFER_DESC *pDesc) {
+    IWineD3DVertexBufferImpl *This = (IWineD3DVertexBufferImpl *)iface;
+
+    TRACE("(%p)\n", This);
+    pDesc->Format = This->resource.format;
+    pDesc->Type   = This->resource.resourceType;
+    pDesc->Usage  = This->resource.usage;
+    pDesc->Pool   = This->resource.pool;
+    pDesc->Size   = This->resource.size;
+    pDesc->FVF    = This->fvf;
+    return WINED3D_OK;
+}
+
+const IWineD3DVertexBufferVtbl IWineD3DVertexBuffer_Vtbl =
+{
+    /* IUnknown */
+    IWineD3DVertexBufferImpl_QueryInterface,
+    IWineD3DVertexBufferImpl_AddRef,
+    IWineD3DVertexBufferImpl_Release,
+    /* IWineD3DResource */
+    IWineD3DVertexBufferImpl_GetParent,
+    IWineD3DVertexBufferImpl_GetDevice,
+    IWineD3DVertexBufferImpl_SetPrivateData,
+    IWineD3DVertexBufferImpl_GetPrivateData,
+    IWineD3DVertexBufferImpl_FreePrivateData,
+    IWineD3DVertexBufferImpl_SetPriority,
+    IWineD3DVertexBufferImpl_GetPriority,
+    IWineD3DVertexBufferImpl_PreLoad,
+    IWineD3DVertexBufferImpl_UnLoad,
+    IWineD3DVertexBufferImpl_GetType,
+    /* IWineD3DVertexBuffer */
+    IWineD3DVertexBufferImpl_Lock,
+    IWineD3DVertexBufferImpl_Unlock,
+    IWineD3DVertexBufferImpl_GetDesc
+};
+
+const BYTE* IWineD3DVertexBufferImpl_GetMemory(IWineD3DVertexBuffer* iface, DWORD iOffset, GLint *vbo)
+{
+    IWineD3DVertexBufferImpl *This = (IWineD3DVertexBufferImpl *)iface;
+
+    *vbo = This->vbo;
+    if(This->vbo == 0) {
+        if(This->Flags & VBFLAG_CREATEVBO) {
+            CreateVBO(This);
+            This->Flags &= ~VBFLAG_CREATEVBO;
+            if(This->vbo) {
+                *vbo = This->vbo;
+                return (const BYTE *)iOffset;
+            }
+        }
+        return This->resource.allocatedMemory + iOffset;
+    } else {
+        return (const BYTE *)iOffset;
+    }
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/vertexdeclaration.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/vertexdeclaration.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/vertexdeclaration.c	(revision 16410)
@@ -0,0 +1,314 @@
+/*
+ * vertex declaration implementation
+ *
+ * Copyright 2002-2005 Raphael Junqueira
+ * Copyright 2004 Jason Edmeades
+ * Copyright 2004 Christian Costa
+ * Copyright 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d_decl);
+
+#define GLINFO_LOCATION This->wineD3DDevice->adapter->gl_info
+
+static void dump_wined3dvertexelement(const WINED3DVERTEXELEMENT *element) {
+    TRACE("     Stream: %d\n", element->Stream);
+    TRACE("     Offset: %d\n", element->Offset);
+    TRACE("       Type: %s (%#x)\n", debug_d3ddecltype(element->Type), element->Type);
+    TRACE("     Method: %s (%#x)\n", debug_d3ddeclmethod(element->Method), element->Method);
+    TRACE("      Usage: %s (%#x)\n", debug_d3ddeclusage(element->Usage), element->Usage);
+    TRACE("Usage index: %d\n", element->UsageIndex);
+    TRACE("   Register: %d\n", element->Reg);
+}
+
+/* *******************************************
+   IWineD3DVertexDeclaration IUnknown parts follow
+   ******************************************* */
+static HRESULT WINAPI IWineD3DVertexDeclarationImpl_QueryInterface(IWineD3DVertexDeclaration *iface, REFIID riid, LPVOID *ppobj)
+{
+    IWineD3DVertexDeclarationImpl *This = (IWineD3DVertexDeclarationImpl *)iface;
+    TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj);
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IWineD3DBase)
+        || IsEqualGUID(riid, &IID_IWineD3DVertexDeclaration)){
+        IUnknown_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IWineD3DVertexDeclarationImpl_AddRef(IWineD3DVertexDeclaration *iface) {
+    IWineD3DVertexDeclarationImpl *This = (IWineD3DVertexDeclarationImpl *)iface;
+    TRACE("(%p) : AddRef increasing from %d\n", This, This->ref);
+    return InterlockedIncrement(&This->ref);
+}
+
+static ULONG WINAPI IWineD3DVertexDeclarationImpl_Release(IWineD3DVertexDeclaration *iface) {
+    IWineD3DVertexDeclarationImpl *This = (IWineD3DVertexDeclarationImpl *)iface;
+    ULONG ref;
+    TRACE("(%p) : Releasing from %d\n", This, This->ref);
+    ref = InterlockedDecrement(&This->ref);
+    if (ref == 0) {
+        if(iface == This->wineD3DDevice->stateBlock->vertexDecl) {
+            /* See comment in PixelShader::Release */
+            IWineD3DDeviceImpl_MarkStateDirty(This->wineD3DDevice, STATE_VDECL);
+        }
+
+        HeapFree(GetProcessHeap(), 0, This->pDeclarationWine);
+        HeapFree(GetProcessHeap(), 0, This->ffp_valid);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+    return ref;
+}
+
+/* *******************************************
+   IWineD3DVertexDeclaration parts follow
+   ******************************************* */
+
+static HRESULT WINAPI IWineD3DVertexDeclarationImpl_GetParent(IWineD3DVertexDeclaration *iface, IUnknown** parent){
+    IWineD3DVertexDeclarationImpl *This = (IWineD3DVertexDeclarationImpl *)iface;
+
+    *parent= This->parent;
+    IUnknown_AddRef(*parent);
+    TRACE("(%p) : returning %p\n", This, *parent);
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DVertexDeclarationImpl_GetDevice(IWineD3DVertexDeclaration *iface, IWineD3DDevice** ppDevice) {
+    IWineD3DVertexDeclarationImpl *This = (IWineD3DVertexDeclarationImpl *)iface;
+    TRACE("(%p) : returning %p\n", This, This->wineD3DDevice);
+
+    *ppDevice = (IWineD3DDevice *) This->wineD3DDevice;
+    IWineD3DDevice_AddRef(*ppDevice);
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DVertexDeclarationImpl_GetDeclaration(IWineD3DVertexDeclaration *iface,
+        WINED3DVERTEXELEMENT *elements, UINT *element_count) {
+    IWineD3DVertexDeclarationImpl *This = (IWineD3DVertexDeclarationImpl *)iface;
+    HRESULT hr = WINED3D_OK;
+
+    TRACE("(%p) : d3d version %d, elements %p, element_count %p\n",
+            This, ((IWineD3DImpl *)This->wineD3DDevice->wineD3D)->dxVersion, elements, element_count);
+
+    *element_count = This->declarationWNumElements;
+    if (elements) {
+        CopyMemory(elements, This->pDeclarationWine, This->declarationWNumElements * sizeof(WINED3DVERTEXELEMENT));
+    }
+
+    return hr;
+}
+
+static BOOL declaration_element_valid_ffp(const WINED3DVERTEXELEMENT *element)
+{
+    switch(element->Usage)
+    {
+        case WINED3DDECLUSAGE_POSITION:
+        case WINED3DDECLUSAGE_POSITIONT:
+            switch(element->Type)
+            {
+                case WINED3DDECLTYPE_FLOAT2:
+                case WINED3DDECLTYPE_FLOAT3:
+                case WINED3DDECLTYPE_FLOAT4:
+                case WINED3DDECLTYPE_SHORT2:
+                case WINED3DDECLTYPE_SHORT4:
+                case WINED3DDECLTYPE_FLOAT16_2:
+                case WINED3DDECLTYPE_FLOAT16_4:
+                    return TRUE;
+                default:
+                    return FALSE;
+            }
+
+        case WINED3DDECLUSAGE_BLENDWEIGHT:
+            switch(element->Type)
+            {
+                case WINED3DDECLTYPE_D3DCOLOR:
+                case WINED3DDECLTYPE_UBYTE4:
+                case WINED3DDECLTYPE_SHORT2:
+                case WINED3DDECLTYPE_SHORT4:
+                case WINED3DDECLTYPE_FLOAT16_2:
+                case WINED3DDECLTYPE_FLOAT16_4:
+                    return TRUE;
+                default:
+                    return FALSE;
+            }
+
+        case WINED3DDECLUSAGE_NORMAL:
+            switch(element->Type)
+            {
+                case WINED3DDECLTYPE_FLOAT3:
+                case WINED3DDECLTYPE_FLOAT4:
+                case WINED3DDECLTYPE_SHORT4:
+                case WINED3DDECLTYPE_FLOAT16_4:
+                    return TRUE;
+                default:
+                    return FALSE;
+            }
+
+        case WINED3DDECLUSAGE_TEXCOORD:
+            switch(element->Type)
+            {
+                case WINED3DDECLTYPE_FLOAT1:
+                case WINED3DDECLTYPE_FLOAT2:
+                case WINED3DDECLTYPE_FLOAT3:
+                case WINED3DDECLTYPE_FLOAT4:
+                case WINED3DDECLTYPE_SHORT2:
+                case WINED3DDECLTYPE_SHORT4:
+                case WINED3DDECLTYPE_FLOAT16_2:
+                case WINED3DDECLTYPE_FLOAT16_4:
+                    return TRUE;
+                default:
+                    return FALSE;
+            }
+
+        case WINED3DDECLUSAGE_COLOR:
+            switch(element->Type)
+            {
+                case WINED3DDECLTYPE_FLOAT3:
+                case WINED3DDECLTYPE_FLOAT4:
+                case WINED3DDECLTYPE_D3DCOLOR:
+                case WINED3DDECLTYPE_UBYTE4:
+                case WINED3DDECLTYPE_SHORT4:
+                case WINED3DDECLTYPE_UBYTE4N:
+                case WINED3DDECLTYPE_SHORT4N:
+                case WINED3DDECLTYPE_USHORT4N:
+                case WINED3DDECLTYPE_FLOAT16_4:
+                    return TRUE;
+                default:
+                    return FALSE;
+            }
+
+        default:
+            return FALSE;
+    }
+}
+
+static HRESULT WINAPI IWineD3DVertexDeclarationImpl_SetDeclaration(IWineD3DVertexDeclaration *iface,
+        const WINED3DVERTEXELEMENT *elements, UINT element_count) {
+    IWineD3DVertexDeclarationImpl *This = (IWineD3DVertexDeclarationImpl *)iface;
+    HRESULT hr = WINED3D_OK;
+    int i, j;
+    char isPreLoaded[MAX_STREAMS];
+
+    TRACE("(%p) : d3d version %d\n", This, ((IWineD3DImpl *)This->wineD3DDevice->wineD3D)->dxVersion);
+    memset(isPreLoaded, 0, sizeof(isPreLoaded));
+
+    if (TRACE_ON(d3d_decl)) {
+        for (i = 0; i < element_count; ++i) {
+            dump_wined3dvertexelement(elements+i);
+        }
+    }
+
+    This->declarationWNumElements = element_count;
+    This->pDeclarationWine = HeapAlloc(GetProcessHeap(), 0, sizeof(WINED3DVERTEXELEMENT) * element_count);
+    This->ffp_valid = HeapAlloc(GetProcessHeap(), 0, sizeof(*This->ffp_valid) * element_count);
+    if (!This->pDeclarationWine || !This->ffp_valid) {
+        ERR("Memory allocation failed\n");
+        return WINED3DERR_OUTOFVIDEOMEMORY;
+    } else {
+        CopyMemory(This->pDeclarationWine, elements, sizeof(WINED3DVERTEXELEMENT) * element_count);
+    }
+
+    /* Do some static analysis on the elements to make reading the declaration more comfortable
+     * for the drawing code
+     */
+    This->num_streams = 0;
+    This->position_transformed = FALSE;
+    for (i = 0; i < element_count; ++i) {
+        This->ffp_valid[i] = declaration_element_valid_ffp(&This->pDeclarationWine[i]);
+
+        if(This->pDeclarationWine[i].Usage == WINED3DDECLUSAGE_POSITIONT) {
+            This->position_transformed = TRUE;
+        }
+
+        /* Find the Streams used in the declaration. The vertex buffers have to be loaded
+         * when drawing, but filter tesselation pseudo streams
+         */
+        if(This->pDeclarationWine[i].Stream >= MAX_STREAMS) continue;
+
+        if(This->pDeclarationWine[i].Type == WINED3DDECLTYPE_UNUSED) {
+            WARN("The application tries to use WINED3DDECLTYPE_UNUSED, returning E_FAIL\n");
+            /* The caller will release the vdecl, which will free This->pDeclarationWine */
+            return E_FAIL;
+        }
+
+        if(This->pDeclarationWine[i].Offset & 0x3) {
+            WARN("Declaration element %d is not 4 byte aligned(%d), returning E_FAIL\n", i, This->pDeclarationWine[i].Offset);
+            return E_FAIL;
+        }
+
+        if(!isPreLoaded[This->pDeclarationWine[i].Stream]) {
+            This->streams[This->num_streams] = This->pDeclarationWine[i].Stream;
+            This->num_streams++;
+            isPreLoaded[This->pDeclarationWine[i].Stream] = 1;
+        }
+
+        /* Create a sorted array containing the attribute declarations that are of type
+         * D3DCOLOR. D3DCOLOR requires swizzling of the r and b component, and if the
+         * declaration of one attribute changes the vertex shader needs recompilation.
+         * Having a sorted array of the attributes allows efficient comparison of the
+         * declaration against a shader
+         */
+        if(This->pDeclarationWine[i].Type == WINED3DDECLTYPE_D3DCOLOR) {
+            for(j = 0; j < This->num_swizzled_attribs; j++) {
+                if(This->swizzled_attribs[j].usage >  This->pDeclarationWine[i].Usage ||
+                  (This->swizzled_attribs[j].usage == This->pDeclarationWine[i].Usage &&
+                   This->swizzled_attribs[j].idx   >   This->pDeclarationWine[i].UsageIndex)) {
+                    memmove(&This->swizzled_attribs[j + 1], &This->swizzled_attribs[j],
+                             sizeof(This->swizzled_attribs) - (sizeof(This->swizzled_attribs[0]) * (j + 1)));
+                    break;
+                }
+            }
+
+            This->swizzled_attribs[j].usage = This->pDeclarationWine[i].Usage;
+            This->swizzled_attribs[j].idx = This->pDeclarationWine[i].UsageIndex;
+            This->num_swizzled_attribs++;
+        } else if(This->pDeclarationWine[i].Type == WINED3DDECLTYPE_FLOAT16_2 ||
+                  This->pDeclarationWine[i].Type == WINED3DDECLTYPE_FLOAT16_4) {
+            if(!GL_SUPPORT(NV_HALF_FLOAT)) {
+                This->half_float_conv_needed = TRUE;
+            }
+        }
+    }
+
+    TRACE("Swizzled attributes found:\n");
+    for(i = 0; i < This->num_swizzled_attribs; i++) {
+        TRACE("%u: %s%d\n", i,
+              debug_d3ddeclusage(This->swizzled_attribs[i].usage), This->swizzled_attribs[i].idx);
+    }
+    TRACE("Returning\n");
+    return hr;
+}
+
+const IWineD3DVertexDeclarationVtbl IWineD3DVertexDeclaration_Vtbl =
+{
+    /* IUnknown */
+    IWineD3DVertexDeclarationImpl_QueryInterface,
+    IWineD3DVertexDeclarationImpl_AddRef,
+    IWineD3DVertexDeclarationImpl_Release,
+    /* IWineD3DVertexDeclaration */
+    IWineD3DVertexDeclarationImpl_GetParent,
+    IWineD3DVertexDeclarationImpl_GetDevice,
+    IWineD3DVertexDeclarationImpl_GetDeclaration,
+    IWineD3DVertexDeclarationImpl_SetDeclaration
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/vertexshader.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/vertexshader.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/vertexshader.c	(revision 16410)
@@ -0,0 +1,632 @@
+/*
+ * shaders implementation
+ *
+ * Copyright 2002-2003 Jason Edmeades
+ * Copyright 2002-2003 Raphael Junqueira
+ * Copyright 2004 Christian Costa
+ * Copyright 2005 Oliver Stieber
+ * Copyright 2006 Ivan Gyurdiev
+ * Copyright 2007-2008 Stefan Dösinger for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+
+#include <math.h>
+#include <stdio.h>
+
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d_shader);
+
+#define GLINFO_LOCATION ((IWineD3DDeviceImpl *)This->baseShader.device)->adapter->gl_info
+
+/* TODO: Vertex and Pixel shaders are almost identical, the only exception being the way that some of the data is looked up or the availability of some of the data i.e. some instructions are only valid for pshaders and some for vshaders
+because of this the bulk of the software pipeline can be shared between pixel and vertex shaders... and it wouldn't surprise me if the program can be cross compiled using a large body of shared code */
+
+#define GLNAME_REQUIRE_GLSL  ((const char *)1)
+
+CONST SHADER_OPCODE IWineD3DVertexShaderImpl_shader_ins[] = {
+    /* This table is not order or position dependent. */
+
+    /* Arithmetic */
+    {WINED3DSIO_NOP,     "nop",     "NOP",               0, 0, WINED3DSIH_NOP,     0,                      0                     },
+    {WINED3DSIO_MOV,     "mov",     "MOV",               1, 2, WINED3DSIH_MOV,     0,                      0                     },
+    {WINED3DSIO_MOVA,    "mova",    NULL,                1, 2, WINED3DSIH_MOVA,    WINED3DVS_VERSION(2,0), -1                    },
+    {WINED3DSIO_ADD,     "add",     "ADD",               1, 3, WINED3DSIH_ADD,     0,                      0                     },
+    {WINED3DSIO_SUB,     "sub",     "SUB",               1, 3, WINED3DSIH_SUB,     0,                      0                     },
+    {WINED3DSIO_MAD,     "mad",     "MAD",               1, 4, WINED3DSIH_MAD,     0,                      0                     },
+    {WINED3DSIO_MUL,     "mul",     "MUL",               1, 3, WINED3DSIH_MUL,     0,                      0                     },
+    {WINED3DSIO_RCP,     "rcp",     "RCP",               1, 2, WINED3DSIH_RCP,     0,                      0                     },
+    {WINED3DSIO_RSQ,     "rsq",     "RSQ",               1, 2, WINED3DSIH_RSQ,     0,                      0                     },
+    {WINED3DSIO_DP3,     "dp3",     "DP3",               1, 3, WINED3DSIH_DP3,     0,                      0                     },
+    {WINED3DSIO_DP4,     "dp4",     "DP4",               1, 3, WINED3DSIH_DP4,     0,                      0                     },
+    {WINED3DSIO_MIN,     "min",     "MIN",               1, 3, WINED3DSIH_MIN,     0,                      0                     },
+    {WINED3DSIO_MAX,     "max",     "MAX",               1, 3, WINED3DSIH_MAX,     0,                      0                     },
+    {WINED3DSIO_SLT,     "slt",     "SLT",               1, 3, WINED3DSIH_SLT,     0,                      0                     },
+    {WINED3DSIO_SGE,     "sge",     "SGE",               1, 3, WINED3DSIH_SGE,     0,                      0                     },
+    {WINED3DSIO_ABS,     "abs",     "ABS",               1, 2, WINED3DSIH_ABS,     0,                      0                     },
+    {WINED3DSIO_EXP,     "exp",     "EX2",               1, 2, WINED3DSIH_EXP,     0,                      0                     },
+    {WINED3DSIO_LOG,     "log",     "LG2",               1, 2, WINED3DSIH_LOG,     0,                      0                     },
+    {WINED3DSIO_EXPP,    "expp",    "EXP",               1, 2, WINED3DSIH_EXPP,    0,                      0                     },
+    {WINED3DSIO_LOGP,    "logp",    "LOG",               1, 2, WINED3DSIH_LOGP,    0,                      0                     },
+    {WINED3DSIO_LIT,     "lit",     "LIT",               1, 2, WINED3DSIH_LIT,     0,                      0                     },
+    {WINED3DSIO_DST,     "dst",     "DST",               1, 3, WINED3DSIH_DST,     0,                      0                     },
+    {WINED3DSIO_LRP,     "lrp",     "LRP",               1, 4, WINED3DSIH_LRP,     0,                      0                     },
+    {WINED3DSIO_FRC,     "frc",     "FRC",               1, 2, WINED3DSIH_FRC,     0,                      0                     },
+    {WINED3DSIO_POW,     "pow",     "POW",               1, 3, WINED3DSIH_POW,     0,                      0                     },
+    {WINED3DSIO_CRS,     "crs",     "XPD",               1, 3, WINED3DSIH_CRS,     0,                      0                     },
+    /* TODO: sng can possibly be performed a  s
+        RCP tmp, vec
+        MUL out, tmp, vec*/
+    {WINED3DSIO_SGN,     "sgn",     NULL,                1, 2, WINED3DSIH_SGN,     0,                      0                     },
+    {WINED3DSIO_NRM,     "nrm",     NULL,                1, 2, WINED3DSIH_NRM,     0,                      0                     },
+    {WINED3DSIO_SINCOS,  "sincos",  NULL,                1, 4, WINED3DSIH_SINCOS,  WINED3DVS_VERSION(2,0), WINED3DVS_VERSION(2,1)},
+    {WINED3DSIO_SINCOS,  "sincos",  "SCS",               1, 2, WINED3DSIH_SINCOS,  WINED3DVS_VERSION(3,0), -1                    },
+    /* Matrix */
+    {WINED3DSIO_M4x4,    "m4x4",    "undefined",         1, 3, WINED3DSIH_M4x4,    0,                      0                     },
+    {WINED3DSIO_M4x3,    "m4x3",    "undefined",         1, 3, WINED3DSIH_M4x3,    0,                      0                     },
+    {WINED3DSIO_M3x4,    "m3x4",    "undefined",         1, 3, WINED3DSIH_M3x4,    0,                      0                     },
+    {WINED3DSIO_M3x3,    "m3x3",    "undefined",         1, 3, WINED3DSIH_M3x3,    0,                      0                     },
+    {WINED3DSIO_M3x2,    "m3x2",    "undefined",         1, 3, WINED3DSIH_M3x2,    0,                      0                     },
+    /* Declare registers */
+    {WINED3DSIO_DCL,     "dcl",     NULL,                0, 2, WINED3DSIH_DCL,     0,                      0                     },
+    /* Constant definitions */
+    {WINED3DSIO_DEF,     "def",     NULL,                1, 5, WINED3DSIH_DEF,     0,                      0                     },
+    {WINED3DSIO_DEFB,    "defb",    GLNAME_REQUIRE_GLSL, 1, 2, WINED3DSIH_DEFB,    0,                      0                     },
+    {WINED3DSIO_DEFI,    "defi",    GLNAME_REQUIRE_GLSL, 1, 5, WINED3DSIH_DEFI,    0,                      0                     },
+    /* Flow control - requires GLSL or software shaders */
+    {WINED3DSIO_REP ,    "rep",     NULL,                0, 1, WINED3DSIH_REP,     WINED3DVS_VERSION(2,0), -1                    },
+    {WINED3DSIO_ENDREP,  "endrep",  NULL,                0, 0, WINED3DSIH_ENDREP,  WINED3DVS_VERSION(2,0), -1                    },
+    {WINED3DSIO_IF,      "if",      NULL,                0, 1, WINED3DSIH_IF,      WINED3DVS_VERSION(2,0), -1                    },
+    {WINED3DSIO_IFC,     "ifc",     NULL,                0, 2, WINED3DSIH_IFC,     WINED3DVS_VERSION(2,1), -1                    },
+    {WINED3DSIO_ELSE,    "else",    NULL,                0, 0, WINED3DSIH_ELSE,    WINED3DVS_VERSION(2,0), -1                    },
+    {WINED3DSIO_ENDIF,   "endif",   NULL,                0, 0, WINED3DSIH_ENDIF,   WINED3DVS_VERSION(2,0), -1                    },
+    {WINED3DSIO_BREAK,   "break",   NULL,                0, 0, WINED3DSIH_BREAK,   WINED3DVS_VERSION(2,1), -1                    },
+    {WINED3DSIO_BREAKC,  "breakc",  NULL,                0, 2, WINED3DSIH_BREAKC,  WINED3DVS_VERSION(2,1), -1                    },
+    {WINED3DSIO_BREAKP,  "breakp",  GLNAME_REQUIRE_GLSL, 0, 1, WINED3DSIH_BREAKP,  0,                      0                     },
+    {WINED3DSIO_CALL,    "call",    NULL,                0, 1, WINED3DSIH_CALL,    WINED3DVS_VERSION(2,0), -1                    },
+    {WINED3DSIO_CALLNZ,  "callnz",  NULL,                0, 2, WINED3DSIH_CALLNZ,  WINED3DVS_VERSION(2,0), -1                    },
+    {WINED3DSIO_LOOP,    "loop",    NULL,                0, 2, WINED3DSIH_LOOP,    WINED3DVS_VERSION(2,0), -1                    },
+    {WINED3DSIO_RET,     "ret",     NULL,                0, 0, WINED3DSIH_RET,     WINED3DVS_VERSION(2,0), -1                    },
+    {WINED3DSIO_ENDLOOP, "endloop", NULL,                0, 0, WINED3DSIH_ENDLOOP, WINED3DVS_VERSION(2,0), -1                    },
+    {WINED3DSIO_LABEL,   "label",   NULL,                0, 1, WINED3DSIH_LABEL,   WINED3DVS_VERSION(2,0), -1                    },
+
+    {WINED3DSIO_SETP,    "setp",    GLNAME_REQUIRE_GLSL, 1, 3, WINED3DSIH_SETP,    0,                      0                     },
+    {WINED3DSIO_TEXLDL,  "texldl",  NULL,                1, 3, WINED3DSIH_TEXLDL,  WINED3DVS_VERSION(3,0), -1                    },
+    {0,                  NULL,      NULL,                0, 0, 0,                  0,                      0                     }
+};
+
+static void vshader_set_limits(
+      IWineD3DVertexShaderImpl *This) {
+
+      This->baseShader.limits.texcoord = 0;
+      This->baseShader.limits.attributes = 16;
+      This->baseShader.limits.packed_input = 0;
+
+      /* Must match D3DCAPS9.MaxVertexShaderConst: at least 256 for vs_2_0 */
+      This->baseShader.limits.constant_float = GL_LIMITS(vshader_constantsF);
+
+      switch (This->baseShader.hex_version) {
+          case WINED3DVS_VERSION(1,0):
+          case WINED3DVS_VERSION(1,1):
+                   This->baseShader.limits.temporary = 12;
+                   This->baseShader.limits.constant_bool = 0;
+                   This->baseShader.limits.constant_int = 0;
+                   This->baseShader.limits.address = 1;
+                   This->baseShader.limits.packed_output = 0;
+                   This->baseShader.limits.sampler = 0;
+                   This->baseShader.limits.label = 0;
+                   break;
+      
+          case WINED3DVS_VERSION(2,0):
+          case WINED3DVS_VERSION(2,1):
+                   This->baseShader.limits.temporary = 12;
+                   This->baseShader.limits.constant_bool = 16;
+                   This->baseShader.limits.constant_int = 16;
+                   This->baseShader.limits.address = 1;
+                   This->baseShader.limits.packed_output = 0;
+                   This->baseShader.limits.sampler = 0;
+                   This->baseShader.limits.label = 16;
+                   break;
+
+          case WINED3DVS_VERSION(3,0):
+                   This->baseShader.limits.temporary = 32;
+                   This->baseShader.limits.constant_bool = 32;
+                   This->baseShader.limits.constant_int = 32;
+                   This->baseShader.limits.address = 1;
+                   This->baseShader.limits.packed_output = 12;
+                   This->baseShader.limits.sampler = 4;
+                   This->baseShader.limits.label = 16; /* FIXME: 2048 */
+                   break;
+
+          default: This->baseShader.limits.temporary = 12;
+                   This->baseShader.limits.constant_bool = 16;
+                   This->baseShader.limits.constant_int = 16;
+                   This->baseShader.limits.address = 1;
+                   This->baseShader.limits.packed_output = 0;
+                   This->baseShader.limits.sampler = 0;
+                   This->baseShader.limits.label = 16;
+                   FIXME("Unrecognized vertex shader version %#x\n",
+                       This->baseShader.hex_version);
+      }
+}
+
+/* This is an internal function,
+ * used to create fake semantics for shaders
+ * that don't have them - d3d8 shaders where the declaration
+ * stores the register for each input
+ */
+static void vshader_set_input(
+    IWineD3DVertexShaderImpl* This,
+    unsigned int regnum,
+    BYTE usage, BYTE usage_idx) {
+
+    /* Fake usage: set reserved bit, usage, usage_idx */
+    DWORD usage_token = (0x1 << 31) |
+        (usage << WINED3DSP_DCL_USAGE_SHIFT) | (usage_idx << WINED3DSP_DCL_USAGEINDEX_SHIFT);
+
+    /* Fake register; set reserved bit, regnum, type: input, wmask: all */
+    DWORD reg_token = (0x1 << 31) |
+        WINED3DSP_WRITEMASK_ALL | (WINED3DSPR_INPUT << WINED3DSP_REGTYPE_SHIFT) | regnum;
+
+    This->semantics_in[regnum].usage = usage_token;
+    This->semantics_in[regnum].reg = reg_token;
+}
+
+static BOOL match_usage(BYTE usage1, BYTE usage_idx1, BYTE usage2, BYTE usage_idx2) {
+    if (usage_idx1 != usage_idx2) return FALSE;
+    if (usage1 == usage2) return TRUE;
+    if (usage1 == WINED3DDECLUSAGE_POSITION && usage2 == WINED3DDECLUSAGE_POSITIONT) return TRUE;
+    if (usage2 == WINED3DDECLUSAGE_POSITION && usage1 == WINED3DDECLUSAGE_POSITIONT) return TRUE;
+
+    return FALSE;
+}
+
+BOOL vshader_get_input(
+    IWineD3DVertexShader* iface,
+    BYTE usage_req, BYTE usage_idx_req,
+    unsigned int* regnum) {
+
+    IWineD3DVertexShaderImpl* This = (IWineD3DVertexShaderImpl*) iface;
+    int i;
+
+    for (i = 0; i < MAX_ATTRIBS; i++) {
+        DWORD usage_token = This->semantics_in[i].usage;
+        DWORD usage = (usage_token & WINED3DSP_DCL_USAGE_MASK) >> WINED3DSP_DCL_USAGE_SHIFT;
+        DWORD usage_idx = (usage_token & WINED3DSP_DCL_USAGEINDEX_MASK) >> WINED3DSP_DCL_USAGEINDEX_SHIFT;
+
+        if (usage_token && match_usage(usage, usage_idx, usage_req, usage_idx_req)) {
+            *regnum = i;
+            return TRUE;
+        }
+    }
+    return FALSE;
+}
+
+BOOL vshader_input_is_color(
+    IWineD3DVertexShader* iface,
+    unsigned int regnum) {
+
+    IWineD3DVertexShaderImpl* This = (IWineD3DVertexShaderImpl*) iface;
+
+    DWORD usage_token = This->semantics_in[regnum].usage;
+    DWORD usage = (usage_token & WINED3DSP_DCL_USAGE_MASK) >> WINED3DSP_DCL_USAGE_SHIFT;
+    DWORD usage_idx = (usage_token & WINED3DSP_DCL_USAGEINDEX_MASK) >> WINED3DSP_DCL_USAGEINDEX_SHIFT;
+
+    int i;
+
+    for(i = 0; i < This->num_swizzled_attribs; i++) {
+        if(This->swizzled_attribs[i].usage == usage &&
+           This->swizzled_attribs[i].idx == usage_idx) {
+            return TRUE;
+        }
+    }
+    return FALSE;
+}
+
+static inline void find_swizzled_attribs(IWineD3DVertexDeclaration *declaration, IWineD3DVertexShaderImpl *This) {
+    UINT num = 0, i, j;
+    UINT numoldswizzles = This->num_swizzled_attribs;
+    IWineD3DVertexDeclarationImpl *decl = (IWineD3DVertexDeclarationImpl *) declaration;
+
+    DWORD usage_token, usage, usage_idx;
+    BOOL found;
+
+    attrib_declaration oldswizzles[sizeof(This->swizzled_attribs) / sizeof(This->swizzled_attribs[0])];
+
+    /* Back up the old swizzles to keep attributes that are undefined in the current declaration */
+    memcpy(oldswizzles, This->swizzled_attribs, sizeof(oldswizzles));
+
+    memset(This->swizzled_attribs, 0, sizeof(This->swizzled_attribs[0]) * MAX_ATTRIBS);
+
+    for(i = 0; i < decl->num_swizzled_attribs; i++) {
+        for(j = 0; j < MAX_ATTRIBS; j++) {
+
+            if(!This->baseShader.reg_maps.attributes[j]) continue;
+
+            usage_token = This->semantics_in[j].usage;
+            usage = (usage_token & WINED3DSP_DCL_USAGE_MASK) >> WINED3DSP_DCL_USAGE_SHIFT;
+            usage_idx = (usage_token & WINED3DSP_DCL_USAGEINDEX_MASK) >> WINED3DSP_DCL_USAGEINDEX_SHIFT;
+
+            if(decl->swizzled_attribs[i].usage == usage &&
+               decl->swizzled_attribs[i].idx == usage_idx) {
+                This->swizzled_attribs[num].usage = usage;
+                This->swizzled_attribs[num].idx = usage_idx;
+                num++;
+            }
+        }
+    }
+
+    /* Add previously converted attributes back in if they are not defined in the current declaration */
+    for(i = 0; i < numoldswizzles; i++) {
+
+        found = FALSE;
+        for(j = 0; j < decl->declarationWNumElements; j++) {
+            if(oldswizzles[i].usage == decl->pDeclarationWine[j].Usage &&
+               oldswizzles[i].idx == decl->pDeclarationWine[j].UsageIndex) {
+                found = TRUE;
+            }
+        }
+        if(found) {
+            /* This previously converted attribute is declared in the current declaration. Either it is
+             * already in the new array, or it should not be there. Skip it
+             */
+            continue;
+        }
+        /* We have a previously swizzled attribute that is not defined by the current vertex declaration.
+         * Insert it into the new conversion array to keep it in the old defined state. Otherwise we end up
+         * recompiling if the old decl is used again because undefined attributes are reset to no swizzling.
+         * In the reverse way(attribute was not swizzled and is not declared in new declaration) the attrib
+         * stays unswizzled as well because it isn't found in the oldswizzles array
+         */
+        for(j = 0; j < num; j++) {
+            if(oldswizzles[i].usage > This->swizzled_attribs[j].usage || (
+               oldswizzles[i].usage == This->swizzled_attribs[j].usage &&
+               oldswizzles[i].idx > This->swizzled_attribs[j].idx)) {
+                memmove(&This->swizzled_attribs[j + 1], &This->swizzled_attribs[j],
+                         sizeof(This->swizzled_attribs) - (sizeof(This->swizzled_attribs[0]) * (j + 1)));
+                break;
+            }
+        }
+        This->swizzled_attribs[j].usage = oldswizzles[i].usage;
+        This->swizzled_attribs[j].idx = oldswizzles[i].idx;
+        num++;
+    }
+
+    TRACE("New swizzled attributes array\n");
+    for(i = 0; i < num; i++) {
+        TRACE("%d: %s(%d), %d\n", i, debug_d3ddeclusage(This->swizzled_attribs[i].usage),
+              This->swizzled_attribs[i].usage, This->swizzled_attribs[i].idx);
+    }
+    This->num_swizzled_attribs = num;
+}
+/** Generate a vertex shader string using either GL_VERTEX_PROGRAM_ARB
+    or GLSL and send it to the card */
+static void IWineD3DVertexShaderImpl_GenerateShader(IWineD3DVertexShader *iface,
+        const struct shader_reg_maps* reg_maps, const DWORD *pFunction)
+{
+    IWineD3DVertexShaderImpl *This = (IWineD3DVertexShaderImpl *)iface;
+    IWineD3DVertexDeclaration *decl = ((IWineD3DDeviceImpl *) This->baseShader.device)->stateBlock->vertexDecl;
+    SHADER_BUFFER buffer;
+
+    find_swizzled_attribs(decl, This);
+
+#if 0 /* FIXME: Use the buffer that is held by the device, this is ok since fixups will be skipped for software shaders
+        it also requires entering a critical section but cuts down the runtime footprint of wined3d and any memory fragmentation that may occur... */
+    if (This->device->fixupVertexBufferSize < SHADER_PGMSIZE) {
+        HeapFree(GetProcessHeap(), 0, This->fixupVertexBuffer);
+        This->fixupVertexBuffer = HeapAlloc(GetProcessHeap() , 0, SHADER_PGMSIZE);
+        This->fixupVertexBufferSize = PGMSIZE;
+        This->fixupVertexBuffer[0] = 0;
+    }
+    buffer.buffer = This->device->fixupVertexBuffer;
+#else
+    buffer.buffer = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, SHADER_PGMSIZE); 
+#endif
+    buffer.bsize = 0;
+    buffer.lineNo = 0;
+    buffer.newline = TRUE;
+
+    ((IWineD3DDeviceImpl *)This->baseShader.device)->shader_backend->shader_generate_vshader(iface, &buffer);
+
+#if 1 /* if were using the data buffer of device then we don't need to free it */
+  HeapFree(GetProcessHeap(), 0, buffer.buffer);
+#endif
+}
+
+/* *******************************************
+   IWineD3DVertexShader IUnknown parts follow
+   ******************************************* */
+static HRESULT  WINAPI IWineD3DVertexShaderImpl_QueryInterface(IWineD3DVertexShader *iface, REFIID riid, LPVOID *ppobj) {
+    return IWineD3DBaseShaderImpl_QueryInterface((IWineD3DBaseShader *) iface, riid, ppobj);
+}
+
+static ULONG  WINAPI IWineD3DVertexShaderImpl_AddRef(IWineD3DVertexShader *iface) {
+    return IWineD3DBaseShaderImpl_AddRef((IWineD3DBaseShader *) iface);
+}
+
+static ULONG WINAPI IWineD3DVertexShaderImpl_Release(IWineD3DVertexShader *iface) {
+    return IWineD3DBaseShaderImpl_Release((IWineD3DBaseShader *) iface);
+}
+
+/* *******************************************
+   IWineD3DVertexShader IWineD3DVertexShader parts follow
+   ******************************************* */
+
+static HRESULT WINAPI IWineD3DVertexShaderImpl_GetParent(IWineD3DVertexShader *iface, IUnknown** parent){
+    IWineD3DVertexShaderImpl *This = (IWineD3DVertexShaderImpl *)iface;
+    
+    *parent = This->parent;
+    IUnknown_AddRef(*parent);
+    TRACE("(%p) : returning %p\n", This, *parent);
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DVertexShaderImpl_GetDevice(IWineD3DVertexShader* iface, IWineD3DDevice **pDevice){
+    IWineD3DVertexShaderImpl *This = (IWineD3DVertexShaderImpl *)iface;
+    IWineD3DDevice_AddRef(This->baseShader.device);
+    *pDevice = This->baseShader.device;
+    TRACE("(%p) returning %p\n", This, *pDevice);
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DVertexShaderImpl_GetFunction(IWineD3DVertexShader* impl, VOID* pData, UINT* pSizeOfData) {
+    IWineD3DVertexShaderImpl *This = (IWineD3DVertexShaderImpl *)impl;
+    TRACE("(%p) : pData(%p), pSizeOfData(%p)\n", This, pData, pSizeOfData);
+
+    if (NULL == pData) {
+        *pSizeOfData = This->baseShader.functionLength;
+        return WINED3D_OK;
+    }
+    if (*pSizeOfData < This->baseShader.functionLength) {
+        /* MSDN claims (for d3d8 at least) that if *pSizeOfData is smaller
+         * than the required size we should write the required size and
+         * return D3DERR_MOREDATA. That's not actually true. */
+        return WINED3DERR_INVALIDCALL;
+    }
+    if (NULL == This->baseShader.function) { /* no function defined */
+        TRACE("(%p) : GetFunction no User Function defined using NULL to %p\n", This, pData);
+        (*(DWORD **) pData) = NULL;
+    } else {
+        if(This->baseShader.functionLength == 0){
+
+        }
+        TRACE("(%p) : GetFunction copying to %p\n", This, pData);
+        memcpy(pData, This->baseShader.function, This->baseShader.functionLength);
+    }
+    return WINED3D_OK;
+}
+
+/* Note that for vertex shaders CompileShader isn't called until the
+ * shader is first used. The reason for this is that we need the vertex
+ * declaration the shader will be used with in order to determine if
+ * the data in a register is of type D3DCOLOR, and needs swizzling. */
+static HRESULT WINAPI IWineD3DVertexShaderImpl_SetFunction(IWineD3DVertexShader *iface, CONST DWORD *pFunction) {
+
+    IWineD3DVertexShaderImpl *This =(IWineD3DVertexShaderImpl *)iface;
+    IWineD3DDeviceImpl *deviceImpl = (IWineD3DDeviceImpl *) This->baseShader.device;
+    HRESULT hr;
+    shader_reg_maps *reg_maps = &This->baseShader.reg_maps;
+
+    TRACE("(%p) : pFunction %p\n", iface, pFunction);
+
+    /* First pass: trace shader */
+    shader_trace_init((IWineD3DBaseShader*) This, pFunction);
+    vshader_set_limits(This);
+
+    /* Initialize immediate constant lists */
+    list_init(&This->baseShader.constantsF);
+    list_init(&This->baseShader.constantsB);
+    list_init(&This->baseShader.constantsI);
+
+    /* Second pass: figure out registers used, semantics, etc.. */
+    This->min_rel_offset = GL_LIMITS(vshader_constantsF);
+    This->max_rel_offset = 0;
+    memset(reg_maps, 0, sizeof(shader_reg_maps));
+    hr = shader_get_registers_used((IWineD3DBaseShader*) This, reg_maps,
+       This->semantics_in, This->semantics_out, pFunction, NULL);
+    if (hr != WINED3D_OK) return hr;
+
+    This->baseShader.shader_mode = deviceImpl->vs_selected_mode;
+
+    if(deviceImpl->vs_selected_mode == SHADER_ARB &&
+       (GLINFO_LOCATION).arb_vs_offset_limit      &&
+       This->min_rel_offset <= This->max_rel_offset) {
+
+        if(This->max_rel_offset - This->min_rel_offset > 127) {
+            FIXME("The difference between the minimum and maximum relative offset is > 127\n");
+            FIXME("Which this OpenGL implementation does not support. Try using GLSL\n");
+            FIXME("Min: %d, Max: %d\n", This->min_rel_offset, This->max_rel_offset);
+        } else if(This->max_rel_offset - This->min_rel_offset > 63) {
+            This->rel_offset = This->min_rel_offset + 63;
+        } else if(This->max_rel_offset > 63) {
+            This->rel_offset = This->min_rel_offset;
+        } else {
+            This->rel_offset = 0;
+        }
+    }
+    This->baseShader.load_local_constsF = This->baseShader.reg_maps.usesrelconstF && !list_empty(&This->baseShader.constantsF);
+
+    /* copy the function ... because it will certainly be released by application */
+    if (NULL != pFunction) {
+        void *function;
+
+        function = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, This->baseShader.functionLength);
+        if (!function) return E_OUTOFMEMORY;
+        memcpy(function, pFunction, This->baseShader.functionLength);
+        This->baseShader.function = function;
+    } else {
+        This->baseShader.function = NULL;
+    }
+
+    return WINED3D_OK;
+}
+
+/* Preload semantics for d3d8 shaders */
+static void WINAPI IWineD3DVertexShaderImpl_FakeSemantics(IWineD3DVertexShader *iface, IWineD3DVertexDeclaration *vertex_declaration) {
+    IWineD3DVertexShaderImpl *This =(IWineD3DVertexShaderImpl *)iface;
+    IWineD3DVertexDeclarationImpl* vdecl = (IWineD3DVertexDeclarationImpl*)vertex_declaration;
+
+    int i;
+    for (i = 0; i < vdecl->declarationWNumElements - 1; ++i) {
+        const WINED3DVERTEXELEMENT *element = vdecl->pDeclarationWine + i;
+        vshader_set_input(This, element->Reg, element->Usage, element->UsageIndex);
+    }
+}
+
+/* Set local constants for d3d8 shaders */
+static HRESULT WINAPI IWIneD3DVertexShaderImpl_SetLocalConstantsF(IWineD3DVertexShader *iface,
+        UINT start_idx, const float *src_data, UINT count) {
+    IWineD3DVertexShaderImpl *This =(IWineD3DVertexShaderImpl *)iface;
+    UINT i, end_idx;
+
+    TRACE("(%p) : start_idx %u, src_data %p, count %u\n", This, start_idx, src_data, count);
+
+    end_idx = start_idx + count;
+    if (end_idx > GL_LIMITS(vshader_constantsF)) {
+        WARN("end_idx %u > float constants limit %u\n", end_idx, GL_LIMITS(vshader_constantsF));
+        end_idx = GL_LIMITS(vshader_constantsF);
+    }
+
+    for (i = start_idx; i < end_idx; ++i) {
+        local_constant* lconst = HeapAlloc(GetProcessHeap(), 0, sizeof(local_constant));
+        if (!lconst) return E_OUTOFMEMORY;
+
+        lconst->idx = i;
+        memcpy(lconst->value, src_data + (i - start_idx) * 4 /* 4 components */, 4 * sizeof(float));
+        list_add_head(&This->baseShader.constantsF, &lconst->entry);
+    }
+
+    return WINED3D_OK;
+}
+
+static inline BOOL swizzled_attribs_differ(IWineD3DVertexShaderImpl *This, IWineD3DVertexDeclarationImpl *vdecl) {
+    UINT i, j, k;
+    BOOL found;
+
+    DWORD usage_token;
+    DWORD usage;
+    DWORD usage_idx;
+
+    for(i = 0; i < vdecl->declarationWNumElements; i++) {
+        /* Ignore tesselated streams and the termination entry(position0, stream 255, unused) */
+        if(vdecl->pDeclarationWine[i].Stream >= MAX_STREAMS ||
+           vdecl->pDeclarationWine[i].Type == WINED3DDECLTYPE_UNUSED) continue;
+
+        for(j = 0; j < MAX_ATTRIBS; j++) {
+            if(!This->baseShader.reg_maps.attributes[j]) continue;
+
+            usage_token = This->semantics_in[j].usage;
+            usage = (usage_token & WINED3DSP_DCL_USAGE_MASK) >> WINED3DSP_DCL_USAGE_SHIFT;
+            usage_idx = (usage_token & WINED3DSP_DCL_USAGEINDEX_MASK) >> WINED3DSP_DCL_USAGEINDEX_SHIFT;
+
+            if(vdecl->pDeclarationWine[i].Usage != usage ||
+               vdecl->pDeclarationWine[i].UsageIndex != usage_idx) {
+                continue;
+            }
+
+            found = FALSE;
+            for(k = 0; k < This->num_swizzled_attribs; k++) {
+                if(This->swizzled_attribs[k].usage == usage &&
+                    This->swizzled_attribs[k].idx == usage_idx) {
+                    found = TRUE;
+                }
+            }
+            if(!found && vdecl->pDeclarationWine[i].Type == WINED3DDECLTYPE_D3DCOLOR) {
+                TRACE("Attribute %s%d is D3DCOLOR now but wasn't before\n",
+                      debug_d3ddeclusage(usage), usage_idx);
+                return TRUE;
+            }
+            if( found && vdecl->pDeclarationWine[i].Type != WINED3DDECLTYPE_D3DCOLOR) {
+                TRACE("Attribute %s%d was D3DCOLOR before but is not any more\n",
+                      debug_d3ddeclusage(usage), usage_idx);
+                return TRUE;
+            }
+        }
+    }
+    return FALSE;
+}
+
+HRESULT IWineD3DVertexShaderImpl_CompileShader(IWineD3DVertexShader *iface) {
+    IWineD3DVertexShaderImpl *This = (IWineD3DVertexShaderImpl *)iface;
+    IWineD3DVertexDeclarationImpl *vdecl;
+    CONST DWORD *function = This->baseShader.function;
+    IWineD3DDeviceImpl *deviceImpl = (IWineD3DDeviceImpl *) This->baseShader.device;
+
+    TRACE("(%p) : function %p\n", iface, function);
+
+    /* We're already compiled. */
+    if (This->baseShader.is_compiled) {
+        vdecl = (IWineD3DVertexDeclarationImpl *) deviceImpl->stateBlock->vertexDecl;
+
+        if(This->num_swizzled_attribs != vdecl->num_swizzled_attribs ||
+           memcmp(This->swizzled_attribs, vdecl->swizzled_attribs, sizeof(vdecl->swizzled_attribs[0]) * This->num_swizzled_attribs) != 0) {
+
+            /* The swizzled attributes differ between shader and declaration. This doesn't necessarily mean
+             * we have to recompile, but we have to take a deeper look at see if the attribs that differ
+             * are declared in the decl and used in the shader
+             */
+            if(swizzled_attribs_differ(This, vdecl)) {
+                WARN("Recompiling vertex shader %p due to D3DCOLOR input changes\n", This);
+                goto recompile;
+            }
+            WARN("Swizzled attribute validation required an expensive comparison\n");
+        }
+
+        return WINED3D_OK;
+
+        recompile:
+        if(This->recompile_count < 50) {
+            This->recompile_count++;
+        } else {
+            FIXME("Vertexshader %p recompiled more than 50 times\n", This);
+        }
+
+        deviceImpl->shader_backend->shader_destroy((IWineD3DBaseShader *) iface);
+    }
+
+    /* We don't need to compile */
+    if (!function) {
+        This->baseShader.is_compiled = TRUE;
+        return WINED3D_OK;
+    }
+
+    /* Generate the HW shader */
+    TRACE("(%p) : Generating hardware program\n", This);
+    IWineD3DVertexShaderImpl_GenerateShader(iface, &This->baseShader.reg_maps, function);
+
+    This->baseShader.is_compiled = TRUE;
+
+    return WINED3D_OK;
+}
+
+const IWineD3DVertexShaderVtbl IWineD3DVertexShader_Vtbl =
+{
+    /*** IUnknown methods ***/
+    IWineD3DVertexShaderImpl_QueryInterface,
+    IWineD3DVertexShaderImpl_AddRef,
+    IWineD3DVertexShaderImpl_Release,
+    /*** IWineD3DBase methods ***/
+    IWineD3DVertexShaderImpl_GetParent,
+    /*** IWineD3DBaseShader methods ***/
+    IWineD3DVertexShaderImpl_SetFunction,
+    /*** IWineD3DVertexShader methods ***/
+    IWineD3DVertexShaderImpl_GetDevice,
+    IWineD3DVertexShaderImpl_GetFunction,
+    IWineD3DVertexShaderImpl_FakeSemantics,
+    IWIneD3DVertexShaderImpl_SetLocalConstantsF
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/volume.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/volume.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/volume.c	(revision 16410)
@@ -0,0 +1,381 @@
+/*
+ * IWineD3DVolume implementation
+ *
+ * Copyright 2002-2005 Jason Edmeades
+ * Copyright 2002-2005 Raphael Junqueira
+ * Copyright 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d_surface);
+#define GLINFO_LOCATION This->resource.wineD3DDevice->adapter->gl_info
+
+static void volume_bind_and_dirtify(IWineD3DVolume *iface) {
+    IWineD3DVolumeImpl *This = (IWineD3DVolumeImpl *)iface;
+    IWineD3DVolumeTexture *texture;
+    int active_sampler;
+
+    /* We don't need a specific texture unit, but after binding the texture the current unit is dirty.
+     * Read the unit back instead of switching to 0, this avoids messing around with the state manager's
+     * gl states. The current texture unit should always be a valid one.
+     *
+     * To be more specific, this is tricky because we can implicitly be called
+     * from sampler() in state.c. This means we can't touch anything other than
+     * whatever happens to be the currently active texture, or we would risk
+     * marking already applied sampler states dirty again.
+     *
+     * TODO: Track the current active texture per GL context instead of using glGet
+     */
+    if (GL_SUPPORT(ARB_MULTITEXTURE)) {
+        GLint active_texture;
+        ENTER_GL();
+        glGetIntegerv(GL_ACTIVE_TEXTURE, &active_texture);
+        LEAVE_GL();
+        active_sampler = This->resource.wineD3DDevice->rev_tex_unit_map[active_texture - GL_TEXTURE0_ARB];
+    } else {
+        active_sampler = 0;
+    }
+
+    if (active_sampler != -1) {
+        IWineD3DDeviceImpl_MarkStateDirty(This->resource.wineD3DDevice, STATE_SAMPLER(active_sampler));
+    }
+
+    if (SUCCEEDED(IWineD3DSurface_GetContainer(iface, &IID_IWineD3DVolumeTexture, (void **)&texture))) {
+        IWineD3DVolumeTexture_BindTexture(texture);
+        IWineD3DVolumeTexture_Release(texture);
+    } else {
+        ERR("Volume should be part of a volume texture\n");
+    }
+}
+
+/* *******************************************
+   IWineD3DVolume IUnknown parts follow
+   ******************************************* */
+static HRESULT WINAPI IWineD3DVolumeImpl_QueryInterface(IWineD3DVolume *iface, REFIID riid, LPVOID *ppobj)
+{
+    IWineD3DVolumeImpl *This = (IWineD3DVolumeImpl *)iface;
+    TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj);
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IWineD3DBase)
+        || IsEqualGUID(riid, &IID_IWineD3DVolume)){
+        IUnknown_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IWineD3DVolumeImpl_AddRef(IWineD3DVolume *iface) {
+    IWineD3DVolumeImpl *This = (IWineD3DVolumeImpl *)iface;
+    TRACE("(%p) : AddRef increasing from %d\n", This, This->resource.ref);
+    return InterlockedIncrement(&This->resource.ref);
+}
+
+static ULONG WINAPI IWineD3DVolumeImpl_Release(IWineD3DVolume *iface) {
+    IWineD3DVolumeImpl *This = (IWineD3DVolumeImpl *)iface;
+    ULONG ref;
+    TRACE("(%p) : Releasing from %d\n", This, This->resource.ref);
+    ref = InterlockedDecrement(&This->resource.ref);
+    if (ref == 0) {
+        resource_cleanup((IWineD3DResource *)iface);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+    return ref;
+}
+
+/* ****************************************************
+   IWineD3DVolume IWineD3DResource parts follow
+   **************************************************** */
+static HRESULT WINAPI IWineD3DVolumeImpl_GetParent(IWineD3DVolume *iface, IUnknown **pParent) {
+    return resource_get_parent((IWineD3DResource *)iface, pParent);
+}
+
+static HRESULT WINAPI IWineD3DVolumeImpl_GetDevice(IWineD3DVolume *iface, IWineD3DDevice** ppDevice) {
+    return resource_get_device((IWineD3DResource *)iface, ppDevice);
+}
+
+static HRESULT WINAPI IWineD3DVolumeImpl_SetPrivateData(IWineD3DVolume *iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) {
+    return resource_set_private_data((IWineD3DResource *)iface, refguid, pData, SizeOfData, Flags);
+}
+
+static HRESULT WINAPI IWineD3DVolumeImpl_GetPrivateData(IWineD3DVolume *iface, REFGUID  refguid, void* pData, DWORD* pSizeOfData) {
+    return resource_get_private_data((IWineD3DResource *)iface, refguid, pData, pSizeOfData);
+}
+
+static HRESULT WINAPI IWineD3DVolumeImpl_FreePrivateData(IWineD3DVolume *iface, REFGUID refguid) {
+    return resource_free_private_data((IWineD3DResource *)iface, refguid);
+}
+
+static DWORD WINAPI IWineD3DVolumeImpl_SetPriority(IWineD3DVolume *iface, DWORD PriorityNew) {
+    return resource_set_priority((IWineD3DResource *)iface, PriorityNew);
+}
+
+static DWORD WINAPI IWineD3DVolumeImpl_GetPriority(IWineD3DVolume *iface) {
+    return resource_get_priority((IWineD3DResource *)iface);
+}
+
+static void WINAPI IWineD3DVolumeImpl_PreLoad(IWineD3DVolume *iface) {
+    FIXME("iface %p stub!\n", iface);
+}
+
+static void WINAPI IWineD3DVolumeImpl_UnLoad(IWineD3DVolume *iface) {
+    /* The whole content is shadowed on This->resource.allocatedMemory, and the
+     * texture name is managed by the VolumeTexture container
+     */
+    TRACE("(%p): Nothing to do\n", iface);
+}
+
+static WINED3DRESOURCETYPE WINAPI IWineD3DVolumeImpl_GetType(IWineD3DVolume *iface) {
+    return resource_get_type((IWineD3DResource *)iface);
+}
+
+/* *******************************************
+   IWineD3DVolume parts follow
+   ******************************************* */
+static HRESULT WINAPI IWineD3DVolumeImpl_GetContainer(IWineD3DVolume *iface, REFIID riid, void** ppContainer) {
+    IWineD3DVolumeImpl *This = (IWineD3DVolumeImpl *)iface;
+
+    TRACE("(This %p, riid %s, ppContainer %p)\n", This, debugstr_guid(riid), ppContainer);
+
+    if (!ppContainer) {
+        ERR("Called without a valid ppContainer.\n");
+    }
+
+    /* Although surfaces can be standalone, volumes can't */
+    if (!This->container) {
+        ERR("Volume without an container. Should not happen.\n");
+    }
+
+    TRACE("Relaying to QueryInterface\n");
+    return IUnknown_QueryInterface(This->container, riid, ppContainer);
+}
+
+static HRESULT WINAPI IWineD3DVolumeImpl_GetDesc(IWineD3DVolume *iface, WINED3DVOLUME_DESC* pDesc) {
+    IWineD3DVolumeImpl *This = (IWineD3DVolumeImpl *)iface;
+    TRACE("(%p) : copying into %p\n", This, pDesc);
+
+    *(pDesc->Format)  = This->resource.format;
+    *(pDesc->Type)    = This->resource.resourceType;
+    *(pDesc->Usage)   = This->resource.usage;
+    *(pDesc->Pool)    = This->resource.pool;
+    *(pDesc->Size)    = This->resource.size; /* dx8 only */
+    *(pDesc->Width)   = This->currentDesc.Width;
+    *(pDesc->Height)  = This->currentDesc.Height;
+    *(pDesc->Depth)   = This->currentDesc.Depth;
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DVolumeImpl_LockBox(IWineD3DVolume *iface, WINED3DLOCKED_BOX* pLockedVolume, CONST WINED3DBOX* pBox, DWORD Flags) {
+    IWineD3DVolumeImpl *This = (IWineD3DVolumeImpl *)iface;
+    FIXME("(%p) : pBox=%p stub\n", This, pBox);
+
+    if(!This->resource.allocatedMemory) {
+        This->resource.allocatedMemory = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, This->resource.size);
+    }
+
+    /* fixme: should we really lock as such? */
+    TRACE("(%p) : box=%p, output pbox=%p, allMem=%p\n", This, pBox, pLockedVolume, This->resource.allocatedMemory);
+
+    pLockedVolume->RowPitch   = This->bytesPerPixel * This->currentDesc.Width;                        /* Bytes / row   */
+    pLockedVolume->SlicePitch = This->bytesPerPixel * This->currentDesc.Width * This->currentDesc.Height;  /* Bytes / slice */
+    if (!pBox) {
+        TRACE("No box supplied - all is ok\n");
+        pLockedVolume->pBits = This->resource.allocatedMemory;
+        This->lockedBox.Left   = 0;
+        This->lockedBox.Top    = 0;
+        This->lockedBox.Front  = 0;
+        This->lockedBox.Right  = This->currentDesc.Width;
+        This->lockedBox.Bottom = This->currentDesc.Height;
+        This->lockedBox.Back   = This->currentDesc.Depth;
+    } else {
+        TRACE("Lock Box (%p) = l %d, t %d, r %d, b %d, fr %d, ba %d\n", pBox, pBox->Left, pBox->Top, pBox->Right, pBox->Bottom, pBox->Front, pBox->Back);
+        pLockedVolume->pBits = This->resource.allocatedMemory +
+          (pLockedVolume->SlicePitch * pBox->Front) + /* FIXME: is front < back or vica versa? */
+          (pLockedVolume->RowPitch * pBox->Top) +
+          (pBox->Left * This->bytesPerPixel);
+        This->lockedBox.Left   = pBox->Left;
+        This->lockedBox.Top    = pBox->Top;
+        This->lockedBox.Front  = pBox->Front;
+        This->lockedBox.Right  = pBox->Right;
+        This->lockedBox.Bottom = pBox->Bottom;
+        This->lockedBox.Back   = pBox->Back;
+    }
+
+    if (Flags & (WINED3DLOCK_NO_DIRTY_UPDATE | WINED3DLOCK_READONLY)) {
+      /* Don't dirtify */
+    } else {
+      /**
+       * Dirtify on lock
+       * as seen in msdn docs
+       */
+      IWineD3DVolume_AddDirtyBox(iface, &This->lockedBox);
+
+      /**  Dirtify Container if needed */
+      if (NULL != This->container) {
+
+        IWineD3DVolumeTexture *cont = (IWineD3DVolumeTexture*) This->container;
+        WINED3DRESOURCETYPE containerType = IWineD3DBaseTexture_GetType((IWineD3DBaseTexture *) cont);
+
+        if (containerType == WINED3DRTYPE_VOLUMETEXTURE) {
+          IWineD3DBaseTextureImpl* pTexture = (IWineD3DBaseTextureImpl*) cont;
+          pTexture->baseTexture.dirty = TRUE;
+        } else {
+          FIXME("Set dirty on container type %d\n", containerType);
+        }
+      }
+    }
+
+    This->locked = TRUE;
+    TRACE("returning memory@%p rpitch(%d) spitch(%d)\n", pLockedVolume->pBits, pLockedVolume->RowPitch, pLockedVolume->SlicePitch);
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DVolumeImpl_UnlockBox(IWineD3DVolume *iface) {
+    IWineD3DVolumeImpl *This = (IWineD3DVolumeImpl *)iface;
+    if (!This->locked) {
+      ERR("trying to lock unlocked volume@%p\n", This);
+      return WINED3DERR_INVALIDCALL;
+    }
+    TRACE("(%p) : unlocking volume\n", This);
+    This->locked = FALSE;
+    memset(&This->lockedBox, 0, sizeof(RECT));
+    return WINED3D_OK;
+}
+
+/* Internal use functions follow : */
+
+static HRESULT WINAPI IWineD3DVolumeImpl_CleanDirtyBox(IWineD3DVolume *iface) {
+  IWineD3DVolumeImpl *This = (IWineD3DVolumeImpl *)iface;
+  This->dirty = FALSE;
+  This->lockedBox.Left   = This->currentDesc.Width;
+  This->lockedBox.Top    = This->currentDesc.Height;
+  This->lockedBox.Front  = This->currentDesc.Depth;
+  This->lockedBox.Right  = 0;
+  This->lockedBox.Bottom = 0;
+  This->lockedBox.Back   = 0;
+  return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DVolumeImpl_AddDirtyBox(IWineD3DVolume *iface, CONST WINED3DBOX* pDirtyBox) {
+  IWineD3DVolumeImpl *This = (IWineD3DVolumeImpl *)iface;
+  This->dirty = TRUE;
+   if (NULL != pDirtyBox) {
+    This->lockedBox.Left   = min(This->lockedBox.Left,   pDirtyBox->Left);
+    This->lockedBox.Top    = min(This->lockedBox.Top,    pDirtyBox->Top);
+    This->lockedBox.Front  = min(This->lockedBox.Front,  pDirtyBox->Front);
+    This->lockedBox.Right  = max(This->lockedBox.Right,  pDirtyBox->Right);
+    This->lockedBox.Bottom = max(This->lockedBox.Bottom, pDirtyBox->Bottom);
+    This->lockedBox.Back   = max(This->lockedBox.Back,   pDirtyBox->Back);
+  } else {
+    This->lockedBox.Left   = 0;
+    This->lockedBox.Top    = 0;
+    This->lockedBox.Front  = 0;
+    This->lockedBox.Right  = This->currentDesc.Width;
+    This->lockedBox.Bottom = This->currentDesc.Height;
+    This->lockedBox.Back   = This->currentDesc.Depth;
+  }
+  return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DVolumeImpl_SetContainer(IWineD3DVolume *iface, IWineD3DBase* container) {
+    IWineD3DVolumeImpl *This = (IWineD3DVolumeImpl *)iface;
+
+    TRACE("This %p, container %p\n", This, container);
+
+    /* We can't keep a reference to the container, since the container already keeps a reference to us. */
+
+    TRACE("Setting container to %p from %p\n", container, This->container);
+    This->container = container;
+
+    return WINED3D_OK;
+}
+
+static HRESULT WINAPI IWineD3DVolumeImpl_LoadTexture(IWineD3DVolume *iface, int gl_level, BOOL srgb_mode) {
+    IWineD3DVolumeImpl *This     = (IWineD3DVolumeImpl *)iface;
+    WINED3DFORMAT format = This->resource.format;
+    const struct GlPixelFormatDesc *glDesc;
+    getFormatDescEntry(format, &GLINFO_LOCATION, &glDesc);
+
+    TRACE("(%p) : level %u, format %s (0x%08x)\n", This, gl_level, debug_d3dformat(format), format);
+
+    volume_bind_and_dirtify(iface);
+
+    TRACE("Calling glTexImage3D %x level=%d, intfmt=%x, w=%d, h=%d,d=%d, 0=%d, glFmt=%x, glType=%x, Mem=%p\n",
+            GL_TEXTURE_3D,
+            gl_level,
+            glDesc->glInternal,
+            This->currentDesc.Width,
+            This->currentDesc.Height,
+            This->currentDesc.Depth,
+            0,
+            glDesc->glFormat,
+            glDesc->glType,
+            This->resource.allocatedMemory);
+
+    ENTER_GL();
+    GL_EXTCALL(glTexImage3DEXT(GL_TEXTURE_3D,
+                gl_level,
+                glDesc->glInternal,
+                This->currentDesc.Width,
+                This->currentDesc.Height,
+                This->currentDesc.Depth,
+                0,
+                glDesc->glFormat,
+                glDesc->glType,
+                This->resource.allocatedMemory));
+    checkGLcall("glTexImage3D");
+    LEAVE_GL();
+
+    /* When adding code releasing This->resource.allocatedMemory to save data keep in mind that
+     * GL_UNPACK_CLIENT_STORAGE_APPLE is enabled by default if supported(GL_APPLE_client_storage).
+     * Thus do not release This->resource.allocatedMemory if GL_APPLE_client_storage is supported.
+     */
+    return WINED3D_OK;
+
+}
+
+const IWineD3DVolumeVtbl IWineD3DVolume_Vtbl =
+{
+    /* IUnknown */
+    IWineD3DVolumeImpl_QueryInterface,
+    IWineD3DVolumeImpl_AddRef,
+    IWineD3DVolumeImpl_Release,
+    /* IWineD3DResource */
+    IWineD3DVolumeImpl_GetParent,
+    IWineD3DVolumeImpl_GetDevice,
+    IWineD3DVolumeImpl_SetPrivateData,
+    IWineD3DVolumeImpl_GetPrivateData,
+    IWineD3DVolumeImpl_FreePrivateData,
+    IWineD3DVolumeImpl_SetPriority,
+    IWineD3DVolumeImpl_GetPriority,
+    IWineD3DVolumeImpl_PreLoad,
+    IWineD3DVolumeImpl_UnLoad,
+    IWineD3DVolumeImpl_GetType,
+    /* IWineD3DVolume */
+    IWineD3DVolumeImpl_GetContainer,
+    IWineD3DVolumeImpl_GetDesc,
+    IWineD3DVolumeImpl_LockBox,
+    IWineD3DVolumeImpl_UnlockBox,
+    /* Internal interface */
+    IWineD3DVolumeImpl_AddDirtyBox,
+    IWineD3DVolumeImpl_CleanDirtyBox,
+    IWineD3DVolumeImpl_LoadTexture,
+    IWineD3DVolumeImpl_SetContainer
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/volumetexture.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/volumetexture.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/volumetexture.c	(revision 16410)
@@ -0,0 +1,339 @@
+/*
+ * IWineD3DVolumeTexture implementation
+ *
+ * Copyright 2002-2005 Jason Edmeades
+ * Copyright 2002-2005 Raphael Junqueira
+ * Copyright 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d_texture);
+#define GLINFO_LOCATION This->resource.wineD3DDevice->adapter->gl_info
+
+/* *******************************************
+   IWineD3DTexture IUnknown parts follow
+   ******************************************* */
+static HRESULT WINAPI IWineD3DVolumeTextureImpl_QueryInterface(IWineD3DVolumeTexture *iface, REFIID riid, LPVOID *ppobj)
+{
+    IWineD3DVolumeTextureImpl *This = (IWineD3DVolumeTextureImpl *)iface;
+    TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj);
+    if (IsEqualGUID(riid, &IID_IUnknown)
+        || IsEqualGUID(riid, &IID_IWineD3DBase)
+        || IsEqualGUID(riid, &IID_IWineD3DResource)
+        || IsEqualGUID(riid, &IID_IWineD3DBaseTexture)
+        || IsEqualGUID(riid, &IID_IWineD3DVolumeTexture)) {
+        IUnknown_AddRef(iface);
+        *ppobj = This;
+        return S_OK;
+    }
+    *ppobj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IWineD3DVolumeTextureImpl_AddRef(IWineD3DVolumeTexture *iface) {
+    IWineD3DVolumeTextureImpl *This = (IWineD3DVolumeTextureImpl *)iface;
+    TRACE("(%p) : AddRef increasing from %d\n", This, This->resource.ref);
+    return InterlockedIncrement(&This->resource.ref);
+}
+
+static ULONG WINAPI IWineD3DVolumeTextureImpl_Release(IWineD3DVolumeTexture *iface) {
+    IWineD3DVolumeTextureImpl *This = (IWineD3DVolumeTextureImpl *)iface;
+    ULONG ref;
+    TRACE("(%p) : Releasing from %d\n", This, This->resource.ref);
+    ref = InterlockedDecrement(&This->resource.ref);
+    if (ref == 0) {
+        IWineD3DVolumeTexture_Destroy(iface, D3DCB_DefaultDestroyVolume);
+    }
+    return ref;
+}
+
+/* ****************************************************
+   IWineD3DVolumeTexture IWineD3DResource parts follow
+   **************************************************** */
+static HRESULT WINAPI IWineD3DVolumeTextureImpl_GetDevice(IWineD3DVolumeTexture *iface, IWineD3DDevice** ppDevice) {
+    return resource_get_device((IWineD3DResource *)iface, ppDevice);
+}
+
+static HRESULT WINAPI IWineD3DVolumeTextureImpl_SetPrivateData(IWineD3DVolumeTexture *iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) {
+    return resource_set_private_data((IWineD3DResource *)iface, refguid, pData, SizeOfData, Flags);
+}
+
+static HRESULT WINAPI IWineD3DVolumeTextureImpl_GetPrivateData(IWineD3DVolumeTexture *iface, REFGUID refguid, void* pData, DWORD* pSizeOfData) {
+    return resource_get_private_data((IWineD3DResource *)iface, refguid, pData, pSizeOfData);
+}
+
+static HRESULT WINAPI IWineD3DVolumeTextureImpl_FreePrivateData(IWineD3DVolumeTexture *iface, REFGUID refguid) {
+    return resource_free_private_data((IWineD3DResource *)iface, refguid);
+}
+
+static DWORD WINAPI IWineD3DVolumeTextureImpl_SetPriority(IWineD3DVolumeTexture *iface, DWORD PriorityNew) {
+    return resource_set_priority((IWineD3DResource *)iface, PriorityNew);
+}
+
+static DWORD WINAPI IWineD3DVolumeTextureImpl_GetPriority(IWineD3DVolumeTexture *iface) {
+    return resource_get_priority((IWineD3DResource *)iface);
+}
+
+static void WINAPI IWineD3DVolumeTextureImpl_PreLoad(IWineD3DVolumeTexture *iface) {
+    /* Overrider the IWineD3DResource Preload method */
+    int i;
+    IWineD3DVolumeTextureImpl *This = (IWineD3DVolumeTextureImpl *)iface;
+    IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
+    BOOL srgb_mode = This->baseTexture.is_srgb;
+    BOOL srgb_was_toggled = FALSE;
+
+    TRACE("(%p) : About to load texture\n", This);
+
+    if(!device->isInDraw) {
+        ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+    } else if (GL_SUPPORT(EXT_TEXTURE_SRGB) && This->baseTexture.bindCount > 0) {
+        srgb_mode = device->stateBlock->samplerState[This->baseTexture.sampler][WINED3DSAMP_SRGBTEXTURE];
+        srgb_was_toggled = This->baseTexture.is_srgb != srgb_mode;
+        This->baseTexture.is_srgb = srgb_mode;
+    }
+
+    /* If the texture is marked dirty or the srgb sampler setting has changed since the last load then reload the surfaces */
+    if (This->baseTexture.dirty) {
+        for (i = 0; i < This->baseTexture.levels; i++)
+            IWineD3DVolume_LoadTexture(This->volumes[i], i, srgb_mode);
+    } else if (srgb_was_toggled) {
+        if (This->baseTexture.srgb_mode_change_count < 20)
+            ++This->baseTexture.srgb_mode_change_count;
+        else
+            FIXME("Volumetexture (%p) has been reloaded at least 20 times due to WINED3DSAMP_SRGBTEXTURE changes on it\'s sampler\n", This);
+
+        for (i = 0; i < This->baseTexture.levels; i++) {
+            IWineD3DVolume_AddDirtyBox(This->volumes[i], NULL);
+            IWineD3DVolume_LoadTexture(This->volumes[i], i, srgb_mode);
+        }
+    } else {
+        TRACE("(%p) Texture not dirty, nothing to do\n" , iface);
+    }
+
+    /* No longer dirty */
+    This->baseTexture.dirty = FALSE;
+
+    return ;
+}
+
+static void WINAPI IWineD3DVolumeTextureImpl_UnLoad(IWineD3DVolumeTexture *iface) {
+    unsigned int i;
+    IWineD3DVolumeTextureImpl *This = (IWineD3DVolumeTextureImpl *)iface;
+    TRACE("(%p)\n", This);
+
+    /* Unload all the surfaces and reset the texture name. If UnLoad was called on the
+     * surface before, this one will be a NOP and vice versa. Unloading an unloaded
+     * surface is fine
+     */
+    for (i = 0; i < This->baseTexture.levels; i++) {
+        IWineD3DVolume_UnLoad(This->volumes[i]);
+    }
+
+    basetexture_unload((IWineD3DBaseTexture *)iface);
+}
+
+static WINED3DRESOURCETYPE WINAPI IWineD3DVolumeTextureImpl_GetType(IWineD3DVolumeTexture *iface) {
+    return resource_get_type((IWineD3DResource *)iface);
+}
+
+static HRESULT WINAPI IWineD3DVolumeTextureImpl_GetParent(IWineD3DVolumeTexture *iface, IUnknown **pParent) {
+    return resource_get_parent((IWineD3DResource *)iface, pParent);
+}
+
+/* ******************************************************
+   IWineD3DVolumeTexture IWineD3DBaseTexture parts follow
+   ****************************************************** */
+static DWORD WINAPI IWineD3DVolumeTextureImpl_SetLOD(IWineD3DVolumeTexture *iface, DWORD LODNew) {
+    return basetexture_set_lod((IWineD3DBaseTexture *)iface, LODNew);
+}
+
+static DWORD WINAPI IWineD3DVolumeTextureImpl_GetLOD(IWineD3DVolumeTexture *iface) {
+    return basetexture_get_lod((IWineD3DBaseTexture *)iface);
+}
+
+static DWORD WINAPI IWineD3DVolumeTextureImpl_GetLevelCount(IWineD3DVolumeTexture *iface) {
+    return basetexture_get_level_count((IWineD3DBaseTexture *)iface);
+}
+
+static HRESULT WINAPI IWineD3DVolumeTextureImpl_SetAutoGenFilterType(IWineD3DVolumeTexture *iface, WINED3DTEXTUREFILTERTYPE FilterType) {
+  return basetexture_set_autogen_filter_type((IWineD3DBaseTexture *)iface, FilterType);
+}
+
+static WINED3DTEXTUREFILTERTYPE WINAPI IWineD3DVolumeTextureImpl_GetAutoGenFilterType(IWineD3DVolumeTexture *iface) {
+  return basetexture_get_autogen_filter_type((IWineD3DBaseTexture *)iface);
+}
+
+static void WINAPI IWineD3DVolumeTextureImpl_GenerateMipSubLevels(IWineD3DVolumeTexture *iface) {
+    basetexture_generate_mipmaps((IWineD3DBaseTexture *)iface);
+}
+
+/* Internal function, No d3d mapping */
+static BOOL WINAPI IWineD3DVolumeTextureImpl_SetDirty(IWineD3DVolumeTexture *iface, BOOL dirty) {
+    return basetexture_set_dirty((IWineD3DBaseTexture *)iface, dirty);
+}
+
+static BOOL WINAPI IWineD3DVolumeTextureImpl_GetDirty(IWineD3DVolumeTexture *iface) {
+    return basetexture_get_dirty((IWineD3DBaseTexture *)iface);
+}
+
+static HRESULT WINAPI IWineD3DVolumeTextureImpl_BindTexture(IWineD3DVolumeTexture *iface) {
+    IWineD3DVolumeTextureImpl *This = (IWineD3DVolumeTextureImpl *)iface;
+    TRACE("(%p) : relay to BaseTexture\n", This);
+    return basetexture_bind((IWineD3DBaseTexture *)iface);
+}
+
+static UINT WINAPI IWineD3DVolumeTextureImpl_GetTextureDimensions(IWineD3DVolumeTexture *iface) {
+    IWineD3DVolumeTextureImpl *This = (IWineD3DVolumeTextureImpl *)iface;
+    TRACE("(%p)\n", This);
+    return GL_TEXTURE_3D;
+}
+
+static BOOL WINAPI IWineD3DVolumeTextureImpl_IsCondNP2(IWineD3DVolumeTexture *iface) {
+    IWineD3DVolumeTextureImpl *This = (IWineD3DVolumeTextureImpl *)iface;
+    TRACE("(%p)\n", This);
+
+    return FALSE;
+}
+
+static void WINAPI IWineD3DVolumeTextureImpl_ApplyStateChanges(IWineD3DVolumeTexture *iface,
+                                                        const DWORD textureStates[WINED3D_HIGHEST_TEXTURE_STATE + 1],
+                                                        const DWORD samplerStates[WINED3D_HIGHEST_SAMPLER_STATE + 1]) {
+    IWineD3DVolumeTextureImpl *This = (IWineD3DVolumeTextureImpl *)iface;
+    TRACE("(%p) : nothing to do, passing to base texture\n", This);
+    basetexture_apply_state_changes((IWineD3DBaseTexture *)iface, textureStates, samplerStates);
+}
+
+
+/* *******************************************
+   IWineD3DVolumeTexture IWineD3DVolumeTexture parts follow
+   ******************************************* */
+static void WINAPI IWineD3DVolumeTextureImpl_Destroy(IWineD3DVolumeTexture *iface, D3DCB_DESTROYVOLUMEFN D3DCB_DestroyVolume) {
+    IWineD3DVolumeTextureImpl *This = (IWineD3DVolumeTextureImpl *)iface;
+    int i;
+    TRACE("(%p) : Cleaning up\n",This);
+    for (i = 0; i < This->baseTexture.levels; i++) {
+        if (This->volumes[i] != NULL) {
+            /* Cleanup the container */
+            IWineD3DVolume_SetContainer(This->volumes[i], 0);
+            D3DCB_DestroyVolume(This->volumes[i]);
+        }
+    }
+    basetexture_cleanup((IWineD3DBaseTexture *)iface);
+    HeapFree(GetProcessHeap(), 0, This);
+}
+
+static HRESULT WINAPI IWineD3DVolumeTextureImpl_GetLevelDesc(IWineD3DVolumeTexture *iface, UINT Level,WINED3DVOLUME_DESC *pDesc) {
+    IWineD3DVolumeTextureImpl *This = (IWineD3DVolumeTextureImpl *)iface;
+    if (Level < This->baseTexture.levels) {
+        TRACE("(%p) Level (%d)\n", This, Level);
+        return IWineD3DVolume_GetDesc(This->volumes[Level], pDesc);
+    } else {
+        FIXME("(%p) Level (%d)\n", This, Level);
+    }
+    return WINED3D_OK;
+}
+static HRESULT WINAPI IWineD3DVolumeTextureImpl_GetVolumeLevel(IWineD3DVolumeTexture *iface, UINT Level, IWineD3DVolume** ppVolumeLevel) {
+    IWineD3DVolumeTextureImpl *This = (IWineD3DVolumeTextureImpl *)iface;
+    if (Level < This->baseTexture.levels) {
+      *ppVolumeLevel = This->volumes[Level];
+      IWineD3DVolume_AddRef(*ppVolumeLevel);
+      TRACE("(%p) -> level(%d) returning volume@%p\n", This, Level, *ppVolumeLevel);
+    } else {
+      FIXME("(%p) Level(%d) overflow Levels(%d)\n", This, Level, This->baseTexture.levels);
+      return WINED3DERR_INVALIDCALL;
+    }
+    return WINED3D_OK;
+
+}
+static HRESULT WINAPI IWineD3DVolumeTextureImpl_LockBox(IWineD3DVolumeTexture *iface, UINT Level, WINED3DLOCKED_BOX* pLockedVolume, CONST WINED3DBOX* pBox, DWORD Flags) {
+    HRESULT hr;
+    IWineD3DVolumeTextureImpl *This = (IWineD3DVolumeTextureImpl *)iface;
+
+    if (Level < This->baseTexture.levels) {
+      hr = IWineD3DVolume_LockBox(This->volumes[Level], pLockedVolume, pBox, Flags);
+      TRACE("(%p) Level (%d) success(%u)\n", This, Level, hr);
+
+    } else {
+      FIXME("(%p) level(%d) overflow Levels(%d)\n", This, Level, This->baseTexture.levels);
+      return WINED3DERR_INVALIDCALL;
+    }
+    return hr;
+}
+
+static HRESULT WINAPI IWineD3DVolumeTextureImpl_UnlockBox(IWineD3DVolumeTexture *iface, UINT Level) {
+    HRESULT hr;
+    IWineD3DVolumeTextureImpl *This = (IWineD3DVolumeTextureImpl *)iface;
+
+    if (Level < This->baseTexture.levels) {
+      hr = IWineD3DVolume_UnlockBox(This->volumes[Level]);
+      TRACE("(%p) -> level(%d) success(%u)\n", This, Level, hr);
+
+    } else {
+      FIXME("(%p) level(%d) overflow Levels(%d)\n", This, Level, This->baseTexture.levels);
+      return WINED3DERR_INVALIDCALL;
+    }
+    return hr;
+}
+
+static HRESULT WINAPI IWineD3DVolumeTextureImpl_AddDirtyBox(IWineD3DVolumeTexture *iface, CONST WINED3DBOX* pDirtyBox) {
+    IWineD3DVolumeTextureImpl *This = (IWineD3DVolumeTextureImpl *)iface;
+    This->baseTexture.dirty = TRUE;
+    TRACE("(%p) : dirtyfication of volume Level (0)\n", This);
+    return IWineD3DVolume_AddDirtyBox(This->volumes[0], pDirtyBox);
+}
+
+const IWineD3DVolumeTextureVtbl IWineD3DVolumeTexture_Vtbl =
+{
+    /* IUnknown */
+    IWineD3DVolumeTextureImpl_QueryInterface,
+    IWineD3DVolumeTextureImpl_AddRef,
+    IWineD3DVolumeTextureImpl_Release,
+    /* resource */
+    IWineD3DVolumeTextureImpl_GetParent,
+    IWineD3DVolumeTextureImpl_GetDevice,
+    IWineD3DVolumeTextureImpl_SetPrivateData,
+    IWineD3DVolumeTextureImpl_GetPrivateData,
+    IWineD3DVolumeTextureImpl_FreePrivateData,
+    IWineD3DVolumeTextureImpl_SetPriority,
+    IWineD3DVolumeTextureImpl_GetPriority,
+    IWineD3DVolumeTextureImpl_PreLoad,
+    IWineD3DVolumeTextureImpl_UnLoad,
+    IWineD3DVolumeTextureImpl_GetType,
+    /* BaseTexture */
+    IWineD3DVolumeTextureImpl_SetLOD,
+    IWineD3DVolumeTextureImpl_GetLOD,
+    IWineD3DVolumeTextureImpl_GetLevelCount,
+    IWineD3DVolumeTextureImpl_SetAutoGenFilterType,
+    IWineD3DVolumeTextureImpl_GetAutoGenFilterType,
+    IWineD3DVolumeTextureImpl_GenerateMipSubLevels,
+    IWineD3DVolumeTextureImpl_SetDirty,
+    IWineD3DVolumeTextureImpl_GetDirty,
+    /* not in d3d */
+    IWineD3DVolumeTextureImpl_BindTexture,
+    IWineD3DVolumeTextureImpl_GetTextureDimensions,
+    IWineD3DVolumeTextureImpl_IsCondNP2,
+    IWineD3DVolumeTextureImpl_ApplyStateChanges,
+    /* volume texture */
+    IWineD3DVolumeTextureImpl_Destroy,
+    IWineD3DVolumeTextureImpl_GetLevelDesc,
+    IWineD3DVolumeTextureImpl_GetVolumeLevel,
+    IWineD3DVolumeTextureImpl_LockBox,
+    IWineD3DVolumeTextureImpl_UnlockBox,
+    IWineD3DVolumeTextureImpl_AddDirtyBox
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/wined3d.def
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/wined3d.def	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/wined3d.def	(revision 16410)
@@ -0,0 +1,11 @@
+; File generated automatically from ../../../dlls/wined3d/wined3d.spec; do not edit!
+
+LIBRARY wined3d.dll
+
+EXPORTS
+;  WineDirect3DCreate@8 @1
+;  WineDirect3DCreateClipper@4 @2
+;  WineDirect3DCreate@8 = WineDirect3DCreate
+;  WineDirect3DCreateClipper@4 = WineDirect3DCreateClipper
+  WineDirect3DCreate
+  WineDirect3DCreateClipper
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/wined3d.spec
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/wined3d.spec	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/wined3d.spec	(revision 16410)
@@ -0,0 +1,2 @@
+@ stdcall WineDirect3DCreate(long ptr)
+@ stdcall WineDirect3DCreateClipper(ptr)
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/wined3d_gl.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/wined3d_gl.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/wined3d_gl.h	(revision 16410)
@@ -0,0 +1,3892 @@
+/*
+ * Direct3D wine OpenGL include file
+ *
+ * Copyright 2002-2003 The wine-d3d team
+ * Copyright 2002-2004 Jason Edmeades
+ *                     Raphael Junqueira
+ * Copyright 2007 Roderick Colenbrander
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ *
+ * Most OpenGL 1.0/1.1/1.2/1.3 constants/types come from the Mesa-project:
+ * Copyright (C) 1999-2006  Brian Paul
+ *
+ * From the Mesa-license:
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef __WINE_WINED3D_GL_H
+#define __WINE_WINED3D_GL_H
+
+#ifdef USE_WIN32_OPENGL
+#define WINE_GLAPI __stdcall
+#else
+#define WINE_GLAPI
+#endif
+
+/****************************************************
+ * OpenGL 1.0/1.1/1.2/1.3
+ *     types, #defines and function pointers
+ ****************************************************/
+
+/* Types */
+typedef unsigned int    GLbitfield;
+typedef unsigned char   GLboolean;
+typedef signed char     GLbyte;
+typedef unsigned char   GLubyte;
+typedef short           GLshort;
+typedef unsigned short  GLushort;
+typedef int             GLint;
+typedef unsigned int    GLuint;
+typedef unsigned int    GLenum;
+typedef float           GLfloat;
+typedef int             GLsizei;
+typedef float           GLclampf;
+typedef double          GLdouble;
+typedef double          GLclampd;
+typedef void            GLvoid;
+
+/* Booleans */
+#define GL_FALSE                                0x0
+#define GL_TRUE                                 0x1
+
+/* Data types */
+#define GL_BYTE                                 0x1400
+#define GL_UNSIGNED_BYTE                        0x1401
+#define GL_SHORT                                0x1402
+#define GL_UNSIGNED_SHORT                       0x1403
+#define GL_INT                                  0x1404
+#define GL_UNSIGNED_INT                         0x1405
+#define GL_FLOAT                                0x1406
+#define GL_DOUBLE                               0x140A
+#define GL_2_BYTES                              0x1407
+#define GL_3_BYTES                              0x1408
+#define GL_4_BYTES                              0x1409
+
+/* Errors */
+#define GL_NO_ERROR                             0x0
+#define GL_INVALID_VALUE                        0x0501
+#define GL_INVALID_ENUM                         0x0500
+#define GL_INVALID_OPERATION                    0x0502
+#define GL_STACK_OVERFLOW                       0x0503
+#define GL_STACK_UNDERFLOW                      0x0504
+#define GL_OUT_OF_MEMORY                        0x0505
+
+/* Utility */
+#define GL_VENDOR                               0x1F00
+#define GL_RENDERER                             0x1F01
+#define GL_VERSION                              0x1F02
+#define GL_EXTENSIONS                           0x1F03
+
+/* Accumulation buffer */
+#define GL_ACCUM_RED_BITS                       0x0D58
+#define GL_ACCUM_GREEN_BITS                     0x0D59
+#define GL_ACCUM_BLUE_BITS                      0x0D5A
+#define GL_ACCUM_ALPHA_BITS                     0x0D5B
+#define GL_ACCUM_CLEAR_VALUE                    0x0B80
+#define GL_ACCUM                                0x0100
+#define GL_ADD                                  0x0104
+#define GL_LOAD                                 0x0101
+#define GL_MULT                                 0x0103
+#define GL_RETURN                               0x0102
+
+/* Alpha testing */
+#define GL_ALPHA_TEST                           0x0BC0
+#define GL_ALPHA_TEST_REF                       0x0BC2
+#define GL_ALPHA_TEST_FUNC                      0x0BC1
+
+/* Blending */
+#define GL_BLEND                                0x0BE2
+#define GL_BLEND_SRC                            0x0BE1
+#define GL_BLEND_DST                            0x0BE0
+#define GL_ZERO                                 0x0
+#define GL_ONE                                  0x1
+#define GL_SRC_COLOR                            0x0300
+#define GL_ONE_MINUS_SRC_COLOR                  0x0301
+#define GL_SRC_ALPHA                            0x0302
+#define GL_ONE_MINUS_SRC_ALPHA                  0x0303
+#define GL_DST_ALPHA                            0x0304
+#define GL_ONE_MINUS_DST_ALPHA                  0x0305
+#define GL_DST_COLOR                            0x0306
+#define GL_ONE_MINUS_DST_COLOR                  0x0307
+#define GL_SRC_ALPHA_SATURATE                   0x0308
+#define GL_CONSTANT_COLOR                       0x8001
+#define GL_ONE_MINUS_CONSTANT_COLOR             0x8002
+#define GL_CONSTANT_ALPHA                       0x8003
+#define GL_ONE_MINUS_CONSTANT_ALPHA             0x8004
+
+/* Buffers, Pixel Drawing/Reading */
+#define GL_NONE                                 0x0
+#define GL_FRONT_LEFT                           0x0400
+#define GL_FRONT_RIGHT                          0x0401
+#define GL_BACK_LEFT                            0x0402
+#define GL_BACK_RIGHT                           0x0403
+#define GL_FRONT                                0x0404
+#define GL_BACK                                 0x0405
+#define GL_LEFT                                 0x0406
+#define GL_RIGHT                                0x0407
+#define GL_FRONT_AND_BACK                       0x0408
+#define GL_AUX0                                 0x0409
+#define GL_AUX1                                 0x040A
+#define GL_AUX2                                 0x040B
+#define GL_AUX3                                 0x040C
+#define GL_COLOR_INDEX                          0x1900
+#define GL_RED                                  0x1903
+#define GL_GREEN                                0x1904
+#define GL_BLUE                                 0x1905
+#define GL_ALPHA                                0x1906
+#define GL_LUMINANCE                            0x1909
+#define GL_LUMINANCE_ALPHA                      0x190A
+#define GL_ALPHA_BITS                           0x0D55
+#define GL_RED_BITS                             0x0D52
+#define GL_GREEN_BITS                           0x0D53
+#define GL_BLUE_BITS                            0x0D54
+#define GL_INDEX_BITS                           0x0D51
+#define GL_SUBPIXEL_BITS                        0x0D50
+#define GL_AUX_BUFFERS                          0x0C00
+#define GL_READ_BUFFER                          0x0C02
+#define GL_DRAW_BUFFER                          0x0C01
+#define GL_DOUBLEBUFFER                         0x0C32
+#define GL_STEREO                               0x0C33
+#define GL_BITMAP                               0x1A00
+#define GL_COLOR                                0x1800
+#define GL_DEPTH                                0x1801
+#define GL_STENCIL                              0x1802
+#define GL_DITHER                               0x0BD0
+#define GL_RGB                                  0x1907
+#define GL_RGBA                                 0x1908
+
+/* Clipping */
+#define GL_CLIP_PLANE0                          0x3000
+#define GL_CLIP_PLANE1                          0x3001
+#define GL_CLIP_PLANE2                          0x3002
+#define GL_CLIP_PLANE3                          0x3003
+#define GL_CLIP_PLANE4                          0x3004
+#define GL_CLIP_PLANE5                          0x3005
+
+/* Depth buffer */
+#define GL_NEVER                                0x0200
+#define GL_LESS                                 0x0201
+#define GL_EQUAL                                0x0202
+#define GL_LEQUAL                               0x0203
+#define GL_GREATER                              0x0204
+#define GL_NOTEQUAL                             0x0205
+#define GL_GEQUAL                               0x0206
+#define GL_ALWAYS                               0x0207
+#define GL_DEPTH_TEST                           0x0B71
+#define GL_DEPTH_BITS                           0x0D56
+#define GL_DEPTH_CLEAR_VALUE                    0x0B73
+#define GL_DEPTH_FUNC                           0x0B74
+#define GL_DEPTH_RANGE                          0x0B70
+#define GL_DEPTH_WRITEMASK                      0x0B72
+#define GL_DEPTH_COMPONENT                      0x1902
+
+/* Evaluators */
+#define GL_AUTO_NORMAL                          0x0D80
+#define GL_MAP1_COLOR_4                         0x0D90
+#define GL_MAP1_GRID_DOMAIN                     0x0DD0
+#define GL_MAP1_GRID_SEGMENTS                   0x0DD1
+#define GL_MAP1_INDEX                           0x0D91
+#define GL_MAP1_NORMAL                          0x0D92
+#define GL_MAP1_TEXTURE_COORD_1                 0x0D93
+#define GL_MAP1_TEXTURE_COORD_2                 0x0D94
+#define GL_MAP1_TEXTURE_COORD_3                 0x0D95
+#define GL_MAP1_TEXTURE_COORD_4                 0x0D96
+#define GL_MAP1_VERTEX_3                        0x0D97
+#define GL_MAP1_VERTEX_4                        0x0D98
+#define GL_MAP2_COLOR_4                         0x0DB0
+#define GL_MAP2_GRID_DOMAIN                     0x0DD2
+#define GL_MAP2_GRID_SEGMENTS                   0x0DD3
+#define GL_MAP2_INDEX                           0x0DB1
+#define GL_MAP2_NORMAL                          0x0DB2
+#define GL_MAP2_TEXTURE_COORD_1                 0x0DB3
+#define GL_MAP2_TEXTURE_COORD_2                 0x0DB4
+#define GL_MAP2_TEXTURE_COORD_3                 0x0DB5
+#define GL_MAP2_TEXTURE_COORD_4                 0x0DB6
+#define GL_MAP2_VERTEX_3                        0x0DB7
+#define GL_MAP2_VERTEX_4                        0x0DB8
+#define GL_COEFF                                0x0A00
+#define GL_DOMAIN                               0x0A02
+#define GL_ORDER                                0x0A01
+
+/* Feedback */
+#define GL_2D                                   0x0600
+#define GL_3D                                   0x0601
+#define GL_3D_COLOR                             0x0602
+#define GL_3D_COLOR_TEXTURE                     0x0603
+#define GL_4D_COLOR_TEXTURE                     0x0604
+#define GL_POINT_TOKEN                          0x0701
+#define GL_LINE_TOKEN                           0x0702
+#define GL_LINE_RESET_TOKEN                     0x0707
+#define GL_POLYGON_TOKEN                        0x0703
+#define GL_BITMAP_TOKEN                         0x0704
+#define GL_DRAW_PIXEL_TOKEN                     0x0705
+#define GL_COPY_PIXEL_TOKEN                     0x0706
+#define GL_PASS_THROUGH_TOKEN                   0x0700
+#define GL_FEEDBACK_BUFFER_POINTER              0x0DF0
+#define GL_FEEDBACK_BUFFER_SIZE                 0x0DF1
+#define GL_FEEDBACK_BUFFER_TYPE                 0x0DF2
+
+/* Fog */
+#define GL_FOG                                  0x0B60
+#define GL_FOG_MODE                             0x0B65
+#define GL_FOG_DENSITY                          0x0B62
+#define GL_FOG_COLOR                            0x0B66
+#define GL_FOG_INDEX                            0x0B61
+#define GL_FOG_START                            0x0B63
+#define GL_FOG_END                              0x0B64
+#define GL_LINEAR                               0x2601
+#define GL_EXP                                  0x0800
+#define GL_EXP2                                 0x0801
+
+/* Gets */
+#define GL_ATTRIB_STACK_DEPTH                   0x0BB0
+#define GL_CLIENT_ATTRIB_STACK_DEPTH            0x0BB1
+#define GL_COLOR_CLEAR_VALUE                    0x0C22
+#define GL_COLOR_WRITEMASK                      0x0C23
+#define GL_CURRENT_INDEX                        0x0B01
+#define GL_CURRENT_COLOR                        0x0B00
+#define GL_CURRENT_NORMAL                       0x0B02
+#define GL_CURRENT_RASTER_COLOR                 0x0B04
+#define GL_CURRENT_RASTER_DISTANCE              0x0B09
+#define GL_CURRENT_RASTER_INDEX                 0x0B05
+#define GL_CURRENT_RASTER_POSITION              0x0B07
+#define GL_CURRENT_RASTER_TEXTURE_COORDS        0x0B06
+#define GL_CURRENT_RASTER_POSITION_VALID        0x0B08
+#define GL_CURRENT_TEXTURE_COORDS               0x0B03
+#define GL_INDEX_CLEAR_VALUE                    0x0C20
+#define GL_INDEX_MODE                           0x0C30
+#define GL_INDEX_WRITEMASK                      0x0C21
+#define GL_MODELVIEW_MATRIX                     0x0BA6
+#define GL_MODELVIEW_STACK_DEPTH                0x0BA3
+#define GL_NAME_STACK_DEPTH                     0x0D70
+#define GL_PROJECTION_MATRIX                    0x0BA7
+#define GL_PROJECTION_STACK_DEPTH               0x0BA4
+#define GL_RENDER_MODE                          0x0C40
+#define GL_RGBA_MODE                            0x0C31
+#define GL_TEXTURE_MATRIX                       0x0BA8
+#define GL_TEXTURE_STACK_DEPTH                  0x0BA5
+#define GL_VIEWPORT                             0x0BA2
+
+/* Hints */
+#define GL_FOG_HINT                             0x0C54
+#define GL_LINE_SMOOTH_HINT                     0x0C52
+#define GL_PERSPECTIVE_CORRECTION_HINT          0x0C50
+#define GL_POINT_SMOOTH_HINT                    0x0C51
+#define GL_POLYGON_SMOOTH_HINT                  0x0C53
+#define GL_DONT_CARE                            0x1100
+#define GL_FASTEST                              0x1101
+#define GL_NICEST                               0x1102
+
+/* Implementation limits */
+#define GL_MAX_LIST_NESTING                     0x0B31
+#define GL_MAX_ATTRIB_STACK_DEPTH               0x0D35
+#define GL_MAX_MODELVIEW_STACK_DEPTH            0x0D36
+#define GL_MAX_NAME_STACK_DEPTH                 0x0D37
+#define GL_MAX_PROJECTION_STACK_DEPTH           0x0D38
+#define GL_MAX_TEXTURE_STACK_DEPTH              0x0D39
+#define GL_MAX_EVAL_ORDER                       0x0D30
+#define GL_MAX_LIGHTS                           0x0D31
+#define GL_MAX_CLIP_PLANES                      0x0D32
+#define GL_MAX_TEXTURE_SIZE                     0x0D33
+#define GL_MAX_PIXEL_MAP_TABLE                  0x0D34
+#define GL_MAX_VIEWPORT_DIMS                    0x0D3A
+#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH        0x0D3B
+
+/* Lighting */
+#define GL_LIGHTING                             0x0B50
+#define GL_LIGHT0                               0x4000
+#define GL_LIGHT1                               0x4001
+#define GL_LIGHT2                               0x4002
+#define GL_LIGHT3                               0x4003
+#define GL_LIGHT4                               0x4004
+#define GL_LIGHT5                               0x4005
+#define GL_LIGHT6                               0x4006
+#define GL_LIGHT7                               0x4007
+#define GL_SPOT_EXPONENT                        0x1205
+#define GL_SPOT_CUTOFF                          0x1206
+#define GL_CONSTANT_ATTENUATION                 0x1207
+#define GL_LINEAR_ATTENUATION                   0x1208
+#define GL_QUADRATIC_ATTENUATION                0x1209
+#define GL_AMBIENT                              0x1200
+#define GL_DIFFUSE                              0x1201
+#define GL_SPECULAR                             0x1202
+#define GL_SHININESS                            0x1601
+#define GL_EMISSION                             0x1600
+#define GL_POSITION                             0x1203
+#define GL_SPOT_DIRECTION                       0x1204
+#define GL_AMBIENT_AND_DIFFUSE                  0x1602
+#define GL_COLOR_INDEXES                        0x1603
+#define GL_LIGHT_MODEL_TWO_SIDE                 0x0B52
+#define GL_LIGHT_MODEL_LOCAL_VIEWER             0x0B51
+#define GL_LIGHT_MODEL_AMBIENT                  0x0B53
+#define GL_FRONT_AND_BACK                       0x0408
+#define GL_SHADE_MODEL                          0x0B54
+#define GL_FLAT                                 0x1D00
+#define GL_SMOOTH                               0x1D01
+#define GL_COLOR_MATERIAL                       0x0B57
+#define GL_COLOR_MATERIAL_FACE                  0x0B55
+#define GL_COLOR_MATERIAL_PARAMETER             0x0B56
+#define GL_NORMALIZE                            0x0BA1
+
+/* Lines */
+#define GL_LINE_SMOOTH                          0x0B20
+#define GL_LINE_STIPPLE                         0x0B24
+#define GL_LINE_STIPPLE_PATTERN                 0x0B25
+#define GL_LINE_STIPPLE_REPEAT                  0x0B26
+#define GL_LINE_WIDTH                           0x0B21
+#define GL_LINE_WIDTH_GRANULARITY               0x0B23
+#define GL_LINE_WIDTH_RANGE                     0x0B22
+
+/* Logic Ops */
+#define GL_LOGIC_OP                             0x0BF1
+#define GL_INDEX_LOGIC_OP                       0x0BF1
+#define GL_COLOR_LOGIC_OP                       0x0BF2
+#define GL_LOGIC_OP_MODE                        0x0BF0
+#define GL_CLEAR                                0x1500
+#define GL_SET                                  0x150F
+#define GL_COPY                                 0x1503
+#define GL_COPY_INVERTED                        0x150C
+#define GL_NOOP                                 0x1505
+#define GL_INVERT                               0x150A
+#define GL_AND                                  0x1501
+#define GL_NAND                                 0x150E
+#define GL_OR                                   0x1507
+#define GL_NOR                                  0x1508
+#define GL_XOR                                  0x1506
+#define GL_EQUIV                                0x1509
+#define GL_AND_REVERSE                          0x1502
+#define GL_AND_INVERTED                         0x1504
+#define GL_OR_REVERSE                           0x150B
+#define GL_OR_INVERTED                          0x150D
+
+/* Matrix Mode */
+#define GL_MATRIX_MODE                          0x0BA0
+#define GL_MODELVIEW                            0x1700
+#define GL_PROJECTION                           0x1701
+#define GL_TEXTURE                              0x1702
+
+/* Pixel Mode / Transfer */
+#define GL_MAP_COLOR                            0x0D10
+#define GL_MAP_STENCIL                          0x0D11
+#define GL_INDEX_SHIFT                          0x0D12
+#define GL_INDEX_OFFSET                         0x0D13
+#define GL_RED_SCALE                            0x0D14
+#define GL_RED_BIAS                             0x0D15
+#define GL_GREEN_SCALE                          0x0D18
+#define GL_GREEN_BIAS                           0x0D19
+#define GL_BLUE_SCALE                           0x0D1A
+#define GL_BLUE_BIAS                            0x0D1B
+#define GL_ALPHA_SCALE                          0x0D1C
+#define GL_ALPHA_BIAS                           0x0D1D
+#define GL_DEPTH_SCALE                          0x0D1E
+#define GL_DEPTH_BIAS                           0x0D1F
+#define GL_PIXEL_MAP_S_TO_S_SIZE                0x0CB1
+#define GL_PIXEL_MAP_I_TO_I_SIZE                0x0CB0
+#define GL_PIXEL_MAP_I_TO_R_SIZE                0x0CB2
+#define GL_PIXEL_MAP_I_TO_G_SIZE                0x0CB3
+#define GL_PIXEL_MAP_I_TO_B_SIZE                0x0CB4
+#define GL_PIXEL_MAP_I_TO_A_SIZE                0x0CB5
+#define GL_PIXEL_MAP_R_TO_R_SIZE                0x0CB6
+#define GL_PIXEL_MAP_G_TO_G_SIZE                0x0CB7
+#define GL_PIXEL_MAP_B_TO_B_SIZE                0x0CB8
+#define GL_PIXEL_MAP_A_TO_A_SIZE                0x0CB9
+#define GL_PIXEL_MAP_S_TO_S                     0x0C71
+#define GL_PIXEL_MAP_I_TO_I                     0x0C70
+#define GL_PIXEL_MAP_I_TO_R                     0x0C72
+#define GL_PIXEL_MAP_I_TO_G                     0x0C73
+#define GL_PIXEL_MAP_I_TO_B                     0x0C74
+#define GL_PIXEL_MAP_I_TO_A                     0x0C75
+#define GL_PIXEL_MAP_R_TO_R                     0x0C76
+#define GL_PIXEL_MAP_G_TO_G                     0x0C77
+#define GL_PIXEL_MAP_B_TO_B                     0x0C78
+#define GL_PIXEL_MAP_A_TO_A                     0x0C79
+#define GL_PACK_ALIGNMENT                       0x0D05
+#define GL_PACK_LSB_FIRST                       0x0D01
+#define GL_PACK_ROW_LENGTH                      0x0D02
+#define GL_PACK_SKIP_PIXELS                     0x0D04
+#define GL_PACK_SKIP_ROWS                       0x0D03
+#define GL_PACK_SWAP_BYTES                      0x0D00
+#define GL_UNPACK_ALIGNMENT                     0x0CF5
+#define GL_UNPACK_LSB_FIRST                     0x0CF1
+#define GL_UNPACK_ROW_LENGTH                    0x0CF2
+#define GL_UNPACK_SKIP_PIXELS                   0x0CF4
+#define GL_UNPACK_SKIP_ROWS                     0x0CF3
+#define GL_UNPACK_SWAP_BYTES                    0x0CF0
+#define GL_ZOOM_X                               0x0D16
+#define GL_ZOOM_Y                               0x0D17
+
+/* Points */
+#define GL_POINT_SMOOTH                         0x0B10
+#define GL_POINT_SIZE                           0x0B11
+#define GL_POINT_SIZE_GRANULARITY               0x0B13
+#define GL_POINT_SIZE_RANGE                     0x0B12
+
+/* Polygons */
+#define GL_POINT                                0x1B00
+#define GL_LINE                                 0x1B01
+#define GL_FILL                                 0x1B02
+#define GL_CW                                   0x0900
+#define GL_CCW                                  0x0901
+#define GL_FRONT                                0x0404
+#define GL_BACK                                 0x0405
+#define GL_POLYGON_MODE                         0x0B40
+#define GL_POLYGON_SMOOTH                       0x0B41
+#define GL_POLYGON_STIPPLE                      0x0B42
+#define GL_EDGE_FLAG                            0x0B43
+#define GL_CULL_FACE                            0x0B44
+#define GL_CULL_FACE_MODE                       0x0B45
+#define GL_FRONT_FACE                           0x0B46
+#define GL_POLYGON_OFFSET_FACTOR                0x8038
+#define GL_POLYGON_OFFSET_UNITS                 0x2A00
+#define GL_POLYGON_OFFSET_POINT                 0x2A01
+#define GL_POLYGON_OFFSET_LINE                  0x2A02
+#define GL_POLYGON_OFFSET_FILL                  0x8037
+
+/* Primitives */
+#define GL_POINTS                               0x0000
+#define GL_LINES                                0x0001
+#define GL_LINE_LOOP                            0x0002
+#define GL_LINE_STRIP                           0x0003
+#define GL_TRIANGLES                            0x0004
+#define GL_TRIANGLE_STRIP                       0x0005
+#define GL_TRIANGLE_FAN                         0x0006
+#define GL_QUADS                                0x0007
+#define GL_QUAD_STRIP                           0x0008
+#define GL_POLYGON                              0x0009
+
+/* Push/Pop bits */
+#define GL_CURRENT_BIT                          0x00000001
+#define GL_POINT_BIT                            0x00000002
+#define GL_LINE_BIT                             0x00000004
+#define GL_POLYGON_BIT                          0x00000008
+#define GL_POLYGON_STIPPLE_BIT                  0x00000010
+#define GL_PIXEL_MODE_BIT                       0x00000020
+#define GL_LIGHTING_BIT                         0x00000040
+#define GL_FOG_BIT                              0x00000080
+#define GL_DEPTH_BUFFER_BIT                     0x00000100
+#define GL_ACCUM_BUFFER_BIT                     0x00000200
+#define GL_STENCIL_BUFFER_BIT                   0x00000400
+#define GL_VIEWPORT_BIT                         0x00000800
+#define GL_TRANSFORM_BIT                        0x00001000
+#define GL_ENABLE_BIT                           0x00002000
+#define GL_COLOR_BUFFER_BIT                     0x00004000
+#define GL_HINT_BIT                             0x00008000
+#define GL_EVAL_BIT                             0x00010000
+#define GL_LIST_BIT                             0x00020000
+#define GL_TEXTURE_BIT                          0x00040000
+#define GL_SCISSOR_BIT                          0x00080000
+#define GL_ALL_ATTRIB_BITS                      0x000FFFFF
+
+/* Render Mode */
+#define GL_FEEDBACK                             0x1C01
+#define GL_RENDER                               0x1C00
+#define GL_SELECT                               0x1C02
+
+/* Scissor box */
+#define GL_SCISSOR_TEST                         0x0C11
+#define GL_SCISSOR_BOX                          0x0C10
+
+/* Stencil */
+#define GL_STENCIL_TEST                         0x0B90
+#define GL_STENCIL_WRITEMASK                    0x0B98
+#define GL_STENCIL_BITS                         0x0D57
+#define GL_STENCIL_FUNC                         0x0B92
+#define GL_STENCIL_VALUE_MASK                   0x0B93
+#define GL_STENCIL_REF                          0x0B97
+#define GL_STENCIL_FAIL                         0x0B94
+#define GL_STENCIL_PASS_DEPTH_PASS              0x0B96
+#define GL_STENCIL_PASS_DEPTH_FAIL              0x0B95
+#define GL_STENCIL_CLEAR_VALUE                  0x0B91
+#define GL_STENCIL_INDEX                        0x1901
+#define GL_KEEP                                 0x1E00
+#define GL_REPLACE                              0x1E01
+#define GL_INCR                                 0x1E02
+#define GL_DECR                                 0x1E03
+
+/* Texture mapping */
+#define GL_TEXTURE_ENV                          0x2300
+#define GL_TEXTURE_ENV_MODE                     0x2200
+#define GL_TEXTURE_1D                           0x0DE0
+#define GL_TEXTURE_2D                           0x0DE1
+#define GL_TEXTURE_WRAP_S                       0x2802
+#define GL_TEXTURE_WRAP_T                       0x2803
+#define GL_TEXTURE_MAG_FILTER                   0x2800
+#define GL_TEXTURE_MIN_FILTER                   0x2801
+#define GL_TEXTURE_ENV_COLOR                    0x2201
+#define GL_TEXTURE_GEN_S                        0x0C60
+#define GL_TEXTURE_GEN_T                        0x0C61
+#define GL_TEXTURE_GEN_MODE                     0x2500
+#define GL_TEXTURE_BORDER_COLOR                 0x1004
+#define GL_TEXTURE_WIDTH                        0x1000
+#define GL_TEXTURE_HEIGHT                       0x1001
+#define GL_TEXTURE_BORDER                       0x1005
+#define GL_TEXTURE_COMPONENTS                   0x1003
+#define GL_TEXTURE_RED_SIZE                     0x805C
+#define GL_TEXTURE_GREEN_SIZE                   0x805D
+#define GL_TEXTURE_BLUE_SIZE                    0x805E
+#define GL_TEXTURE_ALPHA_SIZE                   0x805F
+#define GL_TEXTURE_LUMINANCE_SIZE               0x8060
+#define GL_TEXTURE_INTENSITY_SIZE               0x8061
+#define GL_NEAREST_MIPMAP_NEAREST               0x2700
+#define GL_NEAREST_MIPMAP_LINEAR                0x2702
+#define GL_LINEAR_MIPMAP_NEAREST                0x2701
+#define GL_LINEAR_MIPMAP_LINEAR                 0x2703
+#define GL_OBJECT_LINEAR                        0x2401
+#define GL_OBJECT_PLANE                         0x2501
+#define GL_EYE_LINEAR                           0x2400
+#define GL_EYE_PLANE                            0x2502
+#define GL_SPHERE_MAP                           0x2402
+#define GL_DECAL                                0x2101
+#define GL_MODULATE                             0x2100
+#define GL_NEAREST                              0x2600
+#define GL_REPEAT                               0x2901
+#define GL_CLAMP                                0x2900
+#define GL_S                                    0x2000
+#define GL_T                                    0x2001
+#define GL_R                                    0x2002
+#define GL_Q                                    0x2003
+#define GL_TEXTURE_GEN_R                        0x0C62
+#define GL_TEXTURE_GEN_Q                        0x0C63
+
+/* Vertex Arrays */
+#define GL_VERTEX_ARRAY                         0x8074
+#define GL_NORMAL_ARRAY                         0x8075
+#define GL_COLOR_ARRAY                          0x8076
+#define GL_INDEX_ARRAY                          0x8077
+#define GL_TEXTURE_COORD_ARRAY                  0x8078
+#define GL_EDGE_FLAG_ARRAY                      0x8079
+#define GL_VERTEX_ARRAY_SIZE                    0x807A
+#define GL_VERTEX_ARRAY_TYPE                    0x807B
+#define GL_VERTEX_ARRAY_STRIDE                  0x807C
+#define GL_NORMAL_ARRAY_TYPE                    0x807E
+#define GL_NORMAL_ARRAY_STRIDE                  0x807F
+#define GL_COLOR_ARRAY_SIZE                     0x8081
+#define GL_COLOR_ARRAY_TYPE                     0x8082
+#define GL_COLOR_ARRAY_STRIDE                   0x8083
+#define GL_INDEX_ARRAY_TYPE                     0x8085
+#define GL_INDEX_ARRAY_STRIDE                   0x8086
+#define GL_TEXTURE_COORD_ARRAY_SIZE             0x8088
+#define GL_TEXTURE_COORD_ARRAY_TYPE             0x8089
+#define GL_TEXTURE_COORD_ARRAY_STRIDE           0x808A
+#define GL_EDGE_FLAG_ARRAY_STRIDE               0x808C
+#define GL_VERTEX_ARRAY_POINTER                 0x808E
+#define GL_NORMAL_ARRAY_POINTER                 0x808F
+#define GL_COLOR_ARRAY_POINTER                  0x8090
+#define GL_INDEX_ARRAY_POINTER                  0x8091
+#define GL_TEXTURE_COORD_ARRAY_POINTER          0x8092
+#define GL_EDGE_FLAG_ARRAY_POINTER              0x8093
+#define GL_V2F                                  0x2A20
+#define GL_V3F                                  0x2A21
+#define GL_C4UB_V2F                             0x2A22
+#define GL_C4UB_V3F                             0x2A23
+#define GL_C3F_V3F                              0x2A24
+#define GL_N3F_V3F                              0x2A25
+#define GL_C4F_N3F_V3F                          0x2A26
+#define GL_T2F_V3F                              0x2A27
+#define GL_T4F_V4F                              0x2A28
+#define GL_T2F_C4UB_V3F                         0x2A29
+#define GL_T2F_C3F_V3F                          0x2A2A
+#define GL_T2F_N3F_V3F                          0x2A2B
+#define GL_T2F_C4F_N3F_V3F                      0x2A2C
+#define GL_T4F_C4F_N3F_V4F                      0x2A2D
+
+/* OpenGL 1.1 */
+#define GL_PROXY_TEXTURE_1D                     0x8063
+#define GL_PROXY_TEXTURE_2D                     0x8064
+#define GL_TEXTURE_PRIORITY                     0x8066
+#define GL_TEXTURE_RESIDENT                     0x8067
+#define GL_TEXTURE_BINDING_1D                   0x8068
+#define GL_TEXTURE_BINDING_2D                   0x8069
+#define GL_TEXTURE_INTERNAL_FORMAT              0x1003
+#define GL_ALPHA4                               0x803B
+#define GL_ALPHA8                               0x803C
+#define GL_ALPHA12                              0x803D
+#define GL_ALPHA16                              0x803E
+#define GL_LUMINANCE4                           0x803F
+#define GL_LUMINANCE8                           0x8040
+#define GL_LUMINANCE12                          0x8041
+#define GL_LUMINANCE16                          0x8042
+#define GL_LUMINANCE4_ALPHA4                    0x8043
+#define GL_LUMINANCE6_ALPHA2                    0x8044
+#define GL_LUMINANCE8_ALPHA8                    0x8045
+#define GL_LUMINANCE12_ALPHA4                   0x8046
+#define GL_LUMINANCE12_ALPHA12                  0x8047
+#define GL_LUMINANCE16_ALPHA16                  0x8048
+#define GL_INTENSITY                            0x8049
+#define GL_INTENSITY4                           0x804A
+#define GL_INTENSITY8                           0x804B
+#define GL_INTENSITY12                          0x804C
+#define GL_INTENSITY16                          0x804D
+#define GL_R3_G3_B2                             0x2A10
+#define GL_RGB4                                 0x804F
+#define GL_RGB5                                 0x8050
+#define GL_RGB8                                 0x8051
+#define GL_RGB10                                0x8052
+#define GL_RGB12                                0x8053
+#define GL_RGB16                                0x8054
+#define GL_RGBA2                                0x8055
+#define GL_RGBA4                                0x8056
+#define GL_RGB5_A1                              0x8057
+#define GL_RGBA8                                0x8058
+#define GL_RGB10_A2                             0x8059
+#define GL_RGBA12                               0x805A
+#define GL_RGBA16                               0x805B
+#define GL_CLIENT_PIXEL_STORE_BIT               0x00000001
+#define GL_CLIENT_VERTEX_ARRAY_BIT              0x00000002
+#define GL_ALL_CLIENT_ATTRIB_BITS               0xFFFFFFFF
+#define GL_CLIENT_ALL_ATTRIB_BITS               0xFFFFFFFF
+
+/* OpenGL 1.2 constants */
+#define GL_PACK_SKIP_IMAGES               0x806B
+#define GL_PACK_IMAGE_HEIGHT              0x806C
+#define GL_UNPACK_SKIP_IMAGES             0x806D
+#define GL_UNPACK_IMAGE_HEIGHT            0x806E
+#define GL_TEXTURE_3D                     0x806F
+#define GL_PROXY_TEXTURE_3D               0x8070
+#define GL_TEXTURE_DEPTH                  0x8071
+#define GL_TEXTURE_WRAP_R                 0x8072
+#define GL_MAX_3D_TEXTURE_SIZE            0x8073
+#define GL_BGR                            0x80E0
+#define GL_BGRA                           0x80E1
+#define GL_UNSIGNED_BYTE_3_3_2            0x8032
+#define GL_UNSIGNED_BYTE_2_3_3_REV        0x8362
+#define GL_UNSIGNED_SHORT_5_6_5           0x8363
+#define GL_UNSIGNED_SHORT_5_6_5_REV       0x8364
+#define GL_UNSIGNED_SHORT_4_4_4_4         0x8033
+#define GL_UNSIGNED_SHORT_4_4_4_4_REV     0x8365
+#define GL_UNSIGNED_SHORT_5_5_5_1         0x8034
+#define GL_UNSIGNED_SHORT_1_5_5_5_REV     0x8366
+#define GL_UNSIGNED_INT_8_8_8_8           0x8035
+#define GL_UNSIGNED_INT_8_8_8_8_REV       0x8367
+#define GL_UNSIGNED_INT_10_10_10_2        0x8036
+#define GL_UNSIGNED_INT_2_10_10_10_REV    0x8368
+#define GL_RESCALE_NORMAL                 0x803A
+#define GL_TEXTURE_BINDING_3D             0x806A
+#define GL_LIGHT_MODEL_COLOR_CONTROL      0x81F8
+#define GL_SINGLE_COLOR                   0x81F9
+#define GL_SEPARATE_SPECULAR_COLOR        0x81FA
+#define GL_CLAMP_TO_EDGE                  0x812F
+#define GL_TEXTURE_MIN_LOD                0x813A
+#define GL_TEXTURE_MAX_LOD                0x813B
+#define GL_TEXTURE_BASE_LEVEL             0x813C
+#define GL_TEXTURE_MAX_LEVEL              0x813D
+#define GL_MAX_ELEMENTS_VERTICES          0x80E8
+#define GL_MAX_ELEMENTS_INDICES           0x80E9
+#define GL_ALIASED_POINT_SIZE_RANGE       0x846D
+#define GL_ALIASED_LINE_WIDTH_RANGE       0x846E
+
+/* OpenGL 1.3 constants */
+#define GL_ACTIVE_TEXTURE                 0x84E0
+#define GL_CLIENT_ACTIVE_TEXTURE          0x84E1
+#define GL_MAX_TEXTURE_UNITS              0x84E2
+#define GL_TEXTURE0                       0x84C0
+#define GL_TEXTURE1                       0x84C1
+#define GL_TEXTURE2                       0x84C2
+#define GL_TEXTURE3                       0x84C3
+#define GL_TEXTURE4                       0x84C4
+#define GL_TEXTURE5                       0x84C5
+#define GL_TEXTURE6                       0x84C6
+#define GL_TEXTURE7                       0x84C7
+#define GL_TEXTURE8                       0x84C8
+#define GL_TEXTURE9                       0x84C9
+#define GL_TEXTURE10                      0x84CA
+#define GL_TEXTURE11                      0x84CB
+#define GL_TEXTURE12                      0x84CC
+#define GL_TEXTURE13                      0x84CD
+#define GL_TEXTURE14                      0x84CE
+#define GL_TEXTURE15                      0x84CF
+#define GL_TEXTURE16                      0x84D0
+#define GL_TEXTURE17                      0x84D1
+#define GL_TEXTURE18                      0x84D2
+#define GL_TEXTURE19                      0x84D3
+#define GL_TEXTURE20                      0x84D4
+#define GL_TEXTURE21                      0x84D5
+#define GL_TEXTURE22                      0x84D6
+#define GL_TEXTURE23                      0x84D7
+#define GL_TEXTURE24                      0x84D8
+#define GL_TEXTURE25                      0x84D9
+#define GL_TEXTURE26                      0x84DA
+#define GL_TEXTURE27                      0x84DB
+#define GL_TEXTURE28                      0x84DC
+#define GL_TEXTURE29                      0x84DD
+#define GL_TEXTURE30                      0x84DE
+#define GL_TEXTURE31                      0x84DF
+#define GL_NORMAL_MAP                     0x8511
+#define GL_REFLECTION_MAP                 0x8512
+#define GL_TEXTURE_CUBE_MAP               0x8513
+#define GL_TEXTURE_BINDING_CUBE_MAP       0x8514
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X    0x8515
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X    0x8516
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y    0x8517
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y    0x8518
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z    0x8519
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z    0x851A
+#define GL_PROXY_TEXTURE_CUBE_MAP         0x851B
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE      0x851C
+#define GL_COMBINE                        0x8570
+#define GL_COMBINE_RGB                    0x8571
+#define GL_COMBINE_ALPHA                  0x8572
+#define GL_RGB_SCALE                      0x8573
+#define GL_ADD_SIGNED                     0x8574
+#define GL_INTERPOLATE                    0x8575
+#define GL_CONSTANT                       0x8576
+#define GL_PRIMARY_COLOR                  0x8577
+#define GL_PREVIOUS                       0x8578
+#define GL_SOURCE0_RGB                    0x8580
+#define GL_SOURCE1_RGB                    0x8581
+#define GL_SOURCE2_RGB                    0x8582
+#define GL_SOURCE0_ALPHA                  0x8588
+#define GL_SOURCE1_ALPHA                  0x8589
+#define GL_SOURCE2_ALPHA                  0x858A
+#define GL_OPERAND0_RGB                   0x8590
+#define GL_OPERAND1_RGB                   0x8591
+#define GL_OPERAND2_RGB                   0x8592
+#define GL_OPERAND0_ALPHA                 0x8598
+#define GL_OPERAND1_ALPHA                 0x8599
+#define GL_OPERAND2_ALPHA                 0x859A
+#define GL_SUBTRACT                       0x84E7
+#define GL_TRANSPOSE_MODELVIEW_MATRIX     0x84E3
+#define GL_TRANSPOSE_PROJECTION_MATRIX    0x84E4
+#define GL_TRANSPOSE_TEXTURE_MATRIX       0x84E5
+#define GL_TRANSPOSE_COLOR_MATRIX         0x84E6
+#define GL_COMPRESSED_ALPHA               0x84E9
+#define GL_COMPRESSED_LUMINANCE           0x84EA
+#define GL_COMPRESSED_LUMINANCE_ALPHA     0x84EB
+#define GL_COMPRESSED_INTENSITY           0x84EC
+#define GL_COMPRESSED_RGB                 0x84ED
+#define GL_COMPRESSED_RGBA                0x84EE
+#define GL_TEXTURE_COMPRESSION_HINT       0x84EF
+#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE  0x86A0
+#define GL_TEXTURE_COMPRESSED             0x86A1
+#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
+#define GL_COMPRESSED_TEXTURE_FORMATS     0x86A3
+#define GL_DOT3_RGB                       0x86AE
+#define GL_DOT3_RGBA                      0x86AF
+#define GL_CLAMP_TO_BORDER                0x812D
+#define GL_MULTISAMPLE                    0x809D
+#define GL_SAMPLE_ALPHA_TO_COVERAGE       0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE            0x809F
+#define GL_SAMPLE_COVERAGE                0x80A0
+#define GL_SAMPLE_BUFFERS                 0x80A8
+#define GL_SAMPLES                        0x80A9
+#define GL_SAMPLE_COVERAGE_VALUE          0x80AA
+#define GL_SAMPLE_COVERAGE_INVERT         0x80AB
+#define GL_MULTISAMPLE_BIT                0x20000000
+
+void (WINE_GLAPI *glAccum) (GLenum op, GLfloat value);
+void (WINE_GLAPI *glAlphaFunc) (GLenum func, GLclampf ref);
+GLboolean (WINE_GLAPI *glAreTexturesResident) (GLsizei n, const GLuint* textures, GLboolean* residences);
+void (WINE_GLAPI *glArrayElement) (GLint i);
+void (WINE_GLAPI *glBegin) (GLenum mode);
+void (WINE_GLAPI *glBindTexture) (GLenum target, GLuint texture);
+void (WINE_GLAPI *glBitmap) (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte* bitmap);
+void (WINE_GLAPI *glBlendFunc) (GLenum sfactor, GLenum dfactor);
+void (WINE_GLAPI *glCallList) (GLuint list);
+void (WINE_GLAPI *glCallLists) (GLsizei n, GLenum type, const GLvoid* lists);
+void (WINE_GLAPI *glClear) (GLbitfield mask);
+void (WINE_GLAPI *glClearAccum) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+void (WINE_GLAPI *glClearColor) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+void (WINE_GLAPI *glClearDepth) (GLclampd depth);
+void (WINE_GLAPI *glClearIndex) (GLfloat c);
+void (WINE_GLAPI *glClearStencil) (GLint s);
+void (WINE_GLAPI *glClipPlane) (GLenum plane, const GLdouble* equation);
+void (WINE_GLAPI *glColor3b) (GLbyte red, GLbyte green, GLbyte blue);
+void (WINE_GLAPI *glColor3bv) (const GLbyte* v);
+void (WINE_GLAPI *glColor3d) (GLdouble red, GLdouble green, GLdouble blue);
+void (WINE_GLAPI *glColor3dv) (const GLdouble* v);
+void (WINE_GLAPI *glColor3f) (GLfloat red, GLfloat green, GLfloat blue);
+void (WINE_GLAPI *glColor3fv) (const GLfloat* v);
+void (WINE_GLAPI *glColor3i) (GLint red, GLint green, GLint blue);
+void (WINE_GLAPI *glColor3iv) (const GLint* v);
+void (WINE_GLAPI *glColor3s) (GLshort red, GLshort green, GLshort blue);
+void (WINE_GLAPI *glColor3sv) (const GLshort* v);
+void (WINE_GLAPI *glColor3ub) (GLubyte red, GLubyte green, GLubyte blue);
+void (WINE_GLAPI *glColor3ubv) (const GLubyte* v);
+void (WINE_GLAPI *glColor3ui) (GLuint red, GLuint green, GLuint blue);
+void (WINE_GLAPI *glColor3uiv) (const GLuint* v);
+void (WINE_GLAPI *glColor3us) (GLushort red, GLushort green, GLushort blue);
+void (WINE_GLAPI *glColor3usv) (const GLushort* v);
+void (WINE_GLAPI *glColor4b) (GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha);
+void (WINE_GLAPI *glColor4bv) (const GLbyte* v);
+void (WINE_GLAPI *glColor4d) (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);
+void (WINE_GLAPI *glColor4dv) (const GLdouble* v);
+void (WINE_GLAPI *glColor4f) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+void (WINE_GLAPI *glColor4fv) (const GLfloat* v);
+void (WINE_GLAPI *glColor4i) (GLint red, GLint green, GLint blue, GLint alpha);
+void (WINE_GLAPI *glColor4iv) (const GLint* v);
+void (WINE_GLAPI *glColor4s) (GLshort red, GLshort green, GLshort blue, GLshort alpha);
+void (WINE_GLAPI *glColor4sv) (const GLshort* v);
+void (WINE_GLAPI *glColor4ub) (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
+void (WINE_GLAPI *glColor4ubv) (const GLubyte* v);
+void (WINE_GLAPI *glColor4ui) (GLuint red, GLuint green, GLuint blue, GLuint alpha);
+void (WINE_GLAPI *glColor4uiv) (const GLuint* v);
+void (WINE_GLAPI *glColor4us) (GLushort red, GLushort green, GLushort blue, GLushort alpha);
+void (WINE_GLAPI *glColor4usv) (const GLushort* v);
+void (WINE_GLAPI *glColorMask) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+void (WINE_GLAPI *glColorMaterial) (GLenum face, GLenum mode);
+void (WINE_GLAPI *glColorPointer) (GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
+void (WINE_GLAPI *glCopyPixels) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);
+void (WINE_GLAPI *glCopyTexImage1D) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+void (WINE_GLAPI *glCopyTexImage2D) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+void (WINE_GLAPI *glCopyTexSubImage1D) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+void (WINE_GLAPI *glCopyTexSubImage2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+void (WINE_GLAPI *glCullFace) (GLenum mode);
+void (WINE_GLAPI *glDeleteLists) (GLuint list, GLsizei range);
+void (WINE_GLAPI *glDeleteTextures) (GLsizei n, const GLuint* textures);
+void (WINE_GLAPI *glDepthFunc) (GLenum func);
+void (WINE_GLAPI *glDepthMask) (GLboolean flag);
+void (WINE_GLAPI *glDepthRange) (GLclampd nearParam, GLclampd farParam);
+void (WINE_GLAPI *glDisable) (GLenum cap);
+void (WINE_GLAPI *glDisableClientState) (GLenum array);
+void (WINE_GLAPI *glDrawArrays) (GLenum mode, GLint first, GLsizei count);
+void (WINE_GLAPI *glDrawBuffer) (GLenum mode);
+void (WINE_GLAPI *glDrawElements) (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
+void (WINE_GLAPI *glDrawPixels) (GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels);
+void (WINE_GLAPI *glEdgeFlag) (GLboolean flag);
+void (WINE_GLAPI *glEdgeFlagPointer) (GLsizei stride, const GLvoid* pointer);
+void (WINE_GLAPI *glEdgeFlagv) (const GLboolean* flag);
+void (WINE_GLAPI *glEnable) (GLenum cap);
+void (WINE_GLAPI *glEnableClientState) (GLenum array);
+void (WINE_GLAPI *glEnd) ();
+void (WINE_GLAPI *glEndList) ();
+void (WINE_GLAPI *glEvalCoord1d) (GLdouble u);
+void (WINE_GLAPI *glEvalCoord1dv) (const GLdouble* u);
+void (WINE_GLAPI *glEvalCoord1f) (GLfloat u);
+void (WINE_GLAPI *glEvalCoord1fv) (const GLfloat* u);
+void (WINE_GLAPI *glEvalCoord2d) (GLdouble u, GLdouble v);
+void (WINE_GLAPI *glEvalCoord2dv) (const GLdouble* u);
+void (WINE_GLAPI *glEvalCoord2f) (GLfloat u, GLfloat v);
+void (WINE_GLAPI *glEvalCoord2fv) (const GLfloat* u);
+void (WINE_GLAPI *glEvalMesh1) (GLenum mode, GLint i1, GLint i2);
+void (WINE_GLAPI *glEvalMesh2) (GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2);
+void (WINE_GLAPI *glEvalPoint1) (GLint i);
+void (WINE_GLAPI *glEvalPoint2) (GLint i, GLint j);
+void (WINE_GLAPI *glFeedbackBuffer) (GLsizei size, GLenum type, GLfloat* buffer);
+void (WINE_GLAPI *glFogf) (GLenum pname, GLfloat param);
+void (WINE_GLAPI *glFogfv) (GLenum pname, const GLfloat* params);
+void (WINE_GLAPI *glFogi) (GLenum pname, GLint param);
+void (WINE_GLAPI *glFogiv) (GLenum pname, const GLint* params);
+void (WINE_GLAPI *glFrontFace) (GLenum mode);
+void (WINE_GLAPI *glFrustum) (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+GLuint (WINE_GLAPI *glGenLists) (GLsizei range);
+void (WINE_GLAPI *glGenTextures) (GLsizei n, GLuint* textures);
+void (WINE_GLAPI *glGetBooleanv) (GLenum pname, GLboolean* params);
+void (WINE_GLAPI *glGetClipPlane) (GLenum plane, GLdouble* equation);
+void (WINE_GLAPI *glGetDoublev) (GLenum pname, GLdouble* params);
+GLenum (WINE_GLAPI *glGetError) ();
+void (WINE_GLAPI *glGetFloatv) (GLenum pname, GLfloat* params);
+void (WINE_GLAPI *glGetIntegerv) (GLenum pname, GLint* params);
+void (WINE_GLAPI *glGetLightfv) (GLenum light, GLenum pname, GLfloat* params);
+void (WINE_GLAPI *glGetLightiv) (GLenum light, GLenum pname, GLint* params);
+void (WINE_GLAPI *glGetMapdv) (GLenum target, GLenum query, GLdouble* v);
+void (WINE_GLAPI *glGetMapfv) (GLenum target, GLenum query, GLfloat* v);
+void (WINE_GLAPI *glGetMapiv) (GLenum target, GLenum query, GLint* v);
+void (WINE_GLAPI *glGetMaterialfv) (GLenum face, GLenum pname, GLfloat* params);
+void (WINE_GLAPI *glGetMaterialiv) (GLenum face, GLenum pname, GLint* params);
+void (WINE_GLAPI *glGetPixelMapfv) (GLenum map, GLfloat* values);
+void (WINE_GLAPI *glGetPixelMapuiv) (GLenum map, GLuint* values);
+void (WINE_GLAPI *glGetPixelMapusv) (GLenum map, GLushort* values);
+void (WINE_GLAPI *glGetPointerv) (GLenum pname, GLvoid** params);
+void (WINE_GLAPI *glGetPolygonStipple) (GLubyte* mask);
+const GLubyte * (WINE_GLAPI *glGetString) (GLenum name);
+void (WINE_GLAPI *glGetTexEnvfv) (GLenum target, GLenum pname, GLfloat* params);
+void (WINE_GLAPI *glGetTexEnviv) (GLenum target, GLenum pname, GLint* params);
+void (WINE_GLAPI *glGetTexGendv) (GLenum coord, GLenum pname, GLdouble* params);
+void (WINE_GLAPI *glGetTexGenfv) (GLenum coord, GLenum pname, GLfloat* params);
+void (WINE_GLAPI *glGetTexGeniv) (GLenum coord, GLenum pname, GLint* params);
+void (WINE_GLAPI *glGetTexImage) (GLenum target, GLint level, GLenum format, GLenum type, GLvoid* pixels);
+void (WINE_GLAPI *glGetTexLevelParameterfv) (GLenum target, GLint level, GLenum pname, GLfloat* params);
+void (WINE_GLAPI *glGetTexLevelParameteriv) (GLenum target, GLint level, GLenum pname, GLint* params);
+void (WINE_GLAPI *glGetTexParameterfv) (GLenum target, GLenum pname, GLfloat* params);
+void (WINE_GLAPI *glGetTexParameteriv) (GLenum target, GLenum pname, GLint* params);
+void (WINE_GLAPI *glHint) (GLenum target, GLenum mode);
+void (WINE_GLAPI *glIndexMask) (GLuint mask);
+void (WINE_GLAPI *glIndexPointer) (GLenum type, GLsizei stride, const GLvoid* pointer);
+void (WINE_GLAPI *glIndexd) (GLdouble c);
+void (WINE_GLAPI *glIndexdv) (const GLdouble* c);
+void (WINE_GLAPI *glIndexf) (GLfloat c);
+void (WINE_GLAPI *glIndexfv) (const GLfloat* c);
+void (WINE_GLAPI *glIndexi) (GLint c);
+void (WINE_GLAPI *glIndexiv) (const GLint* c);
+void (WINE_GLAPI *glIndexs) (GLshort c);
+void (WINE_GLAPI *glIndexsv) (const GLshort* c);
+void (WINE_GLAPI *glIndexub) (GLubyte c);
+void (WINE_GLAPI *glIndexubv) (const GLubyte* c);
+void (WINE_GLAPI *glInitNames) ();
+void (WINE_GLAPI *glInterleavedArrays) (GLenum format, GLsizei stride, const GLvoid* pointer);
+GLboolean (WINE_GLAPI *glIsEnabled) (GLenum cap);
+GLboolean (WINE_GLAPI *glIsList) (GLuint list);
+GLboolean (WINE_GLAPI *glIsTexture) (GLuint texture);
+void (WINE_GLAPI *glLightModelf) (GLenum pname, GLfloat param);
+void (WINE_GLAPI *glLightModelfv) (GLenum pname, const GLfloat* params);
+void (WINE_GLAPI *glLightModeli) (GLenum pname, GLint param);
+void (WINE_GLAPI *glLightModeliv) (GLenum pname, const GLint* params);
+void (WINE_GLAPI *glLightf) (GLenum light, GLenum pname, GLfloat param);
+void (WINE_GLAPI *glLightfv) (GLenum light, GLenum pname, const GLfloat* params);
+void (WINE_GLAPI *glLighti) (GLenum light, GLenum pname, GLint param);
+void (WINE_GLAPI *glLightiv) (GLenum light, GLenum pname, const GLint* params);
+void (WINE_GLAPI *glLineStipple) (GLint factor, GLushort pattern);
+void (WINE_GLAPI *glLineWidth) (GLfloat width);
+void (WINE_GLAPI *glListBase) (GLuint base);
+void (WINE_GLAPI *glLoadIdentity) ();
+void (WINE_GLAPI *glLoadMatrixd) (const GLdouble* m);
+void (WINE_GLAPI *glLoadMatrixf) (const GLfloat* m);
+void (WINE_GLAPI *glLoadName) (GLuint name);
+void (WINE_GLAPI *glLogicOp) (GLenum opcode);
+void (WINE_GLAPI *glMap1d) (GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble* points);
+void (WINE_GLAPI *glMap1f) (GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat* points);
+void (WINE_GLAPI *glMap2d) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble* points);
+void (WINE_GLAPI *glMap2f) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat* points);
+void (WINE_GLAPI *glMapGrid1d) (GLint un, GLdouble u1, GLdouble u2);
+void (WINE_GLAPI *glMapGrid1f) (GLint un, GLfloat u1, GLfloat u2);
+void (WINE_GLAPI *glMapGrid2d) (GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2);
+void (WINE_GLAPI *glMapGrid2f) (GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2);
+void (WINE_GLAPI *glMaterialf) (GLenum face, GLenum pname, GLfloat param);
+void (WINE_GLAPI *glMaterialfv) (GLenum face, GLenum pname, const GLfloat* params);
+void (WINE_GLAPI *glMateriali) (GLenum face, GLenum pname, GLint param);
+void (WINE_GLAPI *glMaterialiv) (GLenum face, GLenum pname, const GLint* params);
+void (WINE_GLAPI *glMatrixMode) (GLenum mode);
+void (WINE_GLAPI *glMultMatrixd) (const GLdouble* m);
+void (WINE_GLAPI *glMultMatrixf) (const GLfloat* m);
+void (WINE_GLAPI *glNewList) (GLuint list, GLenum mode);
+void (WINE_GLAPI *glNormal3b) (GLbyte nx, GLbyte ny, GLbyte nz);
+void (WINE_GLAPI *glNormal3bv) (const GLbyte* v);
+void (WINE_GLAPI *glNormal3d) (GLdouble nx, GLdouble ny, GLdouble nz);
+void (WINE_GLAPI *glNormal3dv) (const GLdouble* v);
+void (WINE_GLAPI *glNormal3f) (GLfloat nx, GLfloat ny, GLfloat nz);
+void (WINE_GLAPI *glNormal3fv) (const GLfloat* v);
+void (WINE_GLAPI *glNormal3i) (GLint nx, GLint ny, GLint nz);
+void (WINE_GLAPI *glNormal3iv) (const GLint* v);
+void (WINE_GLAPI *glNormal3s) (GLshort nx, GLshort ny, GLshort nz);
+void (WINE_GLAPI *glNormal3sv) (const GLshort* v);
+void (WINE_GLAPI *glNormalPointer) (GLenum type, GLsizei stride, const GLvoid* pointer);
+void (WINE_GLAPI *glOrtho) (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+void (WINE_GLAPI *glPassThrough) (GLfloat token);
+void (WINE_GLAPI *glPixelMapfv) (GLenum map, GLint mapsize, const GLfloat* values);
+void (WINE_GLAPI *glPixelMapuiv) (GLenum map, GLint mapsize, const GLuint* values);
+void (WINE_GLAPI *glPixelMapusv) (GLenum map, GLint mapsize, const GLushort* values);
+void (WINE_GLAPI *glPixelStoref) (GLenum pname, GLfloat param);
+void (WINE_GLAPI *glPixelStorei) (GLenum pname, GLint param);
+void (WINE_GLAPI *glPixelTransferf) (GLenum pname, GLfloat param);
+void (WINE_GLAPI *glPixelTransferi) (GLenum pname, GLint param);
+void (WINE_GLAPI *glPixelZoom) (GLfloat xfactor, GLfloat yfactor);
+void (WINE_GLAPI *glPointSize) (GLfloat size);
+void (WINE_GLAPI *glPolygonMode) (GLenum face, GLenum mode);
+void (WINE_GLAPI *glPolygonOffset) (GLfloat factor, GLfloat units);
+void (WINE_GLAPI *glPolygonStipple) (const GLubyte* mask);
+void (WINE_GLAPI *glPopAttrib) ();
+void (WINE_GLAPI *glPopClientAttrib) ();
+void (WINE_GLAPI *glPopMatrix) ();
+void (WINE_GLAPI *glPopName) ();
+void (WINE_GLAPI *glPrioritizeTextures) (GLsizei n, const GLuint* textures, const GLclampf* priorities);
+void (WINE_GLAPI *glPushAttrib) (GLbitfield mask);
+void (WINE_GLAPI *glPushClientAttrib) (GLbitfield mask);
+void (WINE_GLAPI *glPushMatrix) ();
+void (WINE_GLAPI *glPushName) (GLuint name);
+void (WINE_GLAPI *glRasterPos2d) (GLdouble x, GLdouble y);
+void (WINE_GLAPI *glRasterPos2dv) (const GLdouble* v);
+void (WINE_GLAPI *glRasterPos2f) (GLfloat x, GLfloat y);
+void (WINE_GLAPI *glRasterPos2fv) (const GLfloat* v);
+void (WINE_GLAPI *glRasterPos2i) (GLint x, GLint y);
+void (WINE_GLAPI *glRasterPos2iv) (const GLint* v);
+void (WINE_GLAPI *glRasterPos2s) (GLshort x, GLshort y);
+void (WINE_GLAPI *glRasterPos2sv) (const GLshort* v);
+void (WINE_GLAPI *glRasterPos3d) (GLdouble x, GLdouble y, GLdouble z);
+void (WINE_GLAPI *glRasterPos3dv) (const GLdouble* v);
+void (WINE_GLAPI *glRasterPos3f) (GLfloat x, GLfloat y, GLfloat z);
+void (WINE_GLAPI *glRasterPos3fv) (const GLfloat* v);
+void (WINE_GLAPI *glRasterPos3i) (GLint x, GLint y, GLint z);
+void (WINE_GLAPI *glRasterPos3iv) (const GLint* v);
+void (WINE_GLAPI *glRasterPos3s) (GLshort x, GLshort y, GLshort z);
+void (WINE_GLAPI *glRasterPos3sv) (const GLshort* v);
+void (WINE_GLAPI *glRasterPos4d) (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+void (WINE_GLAPI *glRasterPos4dv) (const GLdouble* v);
+void (WINE_GLAPI *glRasterPos4f) (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+void (WINE_GLAPI *glRasterPos4fv) (const GLfloat* v);
+void (WINE_GLAPI *glRasterPos4i) (GLint x, GLint y, GLint z, GLint w);
+void (WINE_GLAPI *glRasterPos4iv) (const GLint* v);
+void (WINE_GLAPI *glRasterPos4s) (GLshort x, GLshort y, GLshort z, GLshort w);
+void (WINE_GLAPI *glRasterPos4sv) (const GLshort* v);
+void (WINE_GLAPI *glReadBuffer) (GLenum mode);
+void (WINE_GLAPI *glReadPixels) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
+void (WINE_GLAPI *glRectd) (GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);
+void (WINE_GLAPI *glRectdv) (const GLdouble* v1, const GLdouble* v2);
+void (WINE_GLAPI *glRectf) (GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2);
+void (WINE_GLAPI *glRectfv) (const GLfloat* v1, const GLfloat* v2);
+void (WINE_GLAPI *glRecti) (GLint x1, GLint y1, GLint x2, GLint y2);
+void (WINE_GLAPI *glRectiv) (const GLint* v1, const GLint* v2);
+void (WINE_GLAPI *glRects) (GLshort x1, GLshort y1, GLshort x2, GLshort y2);
+void (WINE_GLAPI *glRectsv) (const GLshort* v1, const GLshort* v2);
+GLint (WINE_GLAPI *glRenderMode) (GLenum mode);
+void (WINE_GLAPI *glRotated) (GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
+void (WINE_GLAPI *glRotatef) (GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
+void (WINE_GLAPI *glScaled) (GLdouble x, GLdouble y, GLdouble z);
+void (WINE_GLAPI *glScalef) (GLfloat x, GLfloat y, GLfloat z);
+void (WINE_GLAPI *glScissor) (GLint x, GLint y, GLsizei width, GLsizei height);
+void (WINE_GLAPI *glSelectBuffer) (GLsizei size, GLuint* buffer);
+void (WINE_GLAPI *glShadeModel) (GLenum mode);
+void (WINE_GLAPI *glStencilFunc) (GLenum func, GLint ref, GLuint mask);
+void (WINE_GLAPI *glStencilMask) (GLuint mask);
+void (WINE_GLAPI *glStencilOp) (GLenum fail, GLenum zfail, GLenum zpass);
+void (WINE_GLAPI *glTexCoord1d) (GLdouble s);
+void (WINE_GLAPI *glTexCoord1dv) (const GLdouble* v);
+void (WINE_GLAPI *glTexCoord1f) (GLfloat s);
+void (WINE_GLAPI *glTexCoord1fv) (const GLfloat* v);
+void (WINE_GLAPI *glTexCoord1i) (GLint s);
+void (WINE_GLAPI *glTexCoord1iv) (const GLint* v);
+void (WINE_GLAPI *glTexCoord1s) (GLshort s);
+void (WINE_GLAPI *glTexCoord1sv) (const GLshort* v);
+void (WINE_GLAPI *glTexCoord2d) (GLdouble s, GLdouble t);
+void (WINE_GLAPI *glTexCoord2dv) (const GLdouble* v);
+void (WINE_GLAPI *glTexCoord2f) (GLfloat s, GLfloat t);
+void (WINE_GLAPI *glTexCoord2fv) (const GLfloat* v);
+void (WINE_GLAPI *glTexCoord2i) (GLint s, GLint t);
+void (WINE_GLAPI *glTexCoord2iv) (const GLint* v);
+void (WINE_GLAPI *glTexCoord2s) (GLshort s, GLshort t);
+void (WINE_GLAPI *glTexCoord2sv) (const GLshort* v);
+void (WINE_GLAPI *glTexCoord3d) (GLdouble s, GLdouble t, GLdouble r);
+void (WINE_GLAPI *glTexCoord3dv) (const GLdouble* v);
+void (WINE_GLAPI *glTexCoord3f) (GLfloat s, GLfloat t, GLfloat r);
+void (WINE_GLAPI *glTexCoord3fv) (const GLfloat* v);
+void (WINE_GLAPI *glTexCoord3i) (GLint s, GLint t, GLint r);
+void (WINE_GLAPI *glTexCoord3iv) (const GLint* v);
+void (WINE_GLAPI *glTexCoord3s) (GLshort s, GLshort t, GLshort r);
+void (WINE_GLAPI *glTexCoord3sv) (const GLshort* v);
+void (WINE_GLAPI *glTexCoord4d) (GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+void (WINE_GLAPI *glTexCoord4dv) (const GLdouble* v);
+void (WINE_GLAPI *glTexCoord4f) (GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+void (WINE_GLAPI *glTexCoord4fv) (const GLfloat* v);
+void (WINE_GLAPI *glTexCoord4i) (GLint s, GLint t, GLint r, GLint q);
+void (WINE_GLAPI *glTexCoord4iv) (const GLint* v);
+void (WINE_GLAPI *glTexCoord4s) (GLshort s, GLshort t, GLshort r, GLshort q);
+void (WINE_GLAPI *glTexCoord4sv) (const GLshort* v);
+void (WINE_GLAPI *glTexCoordPointer) (GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
+void (WINE_GLAPI *glTexEnvf) (GLenum target, GLenum pname, GLfloat param);
+void (WINE_GLAPI *glTexEnvfv) (GLenum target, GLenum pname, const GLfloat* params);
+void (WINE_GLAPI *glTexEnvi) (GLenum target, GLenum pname, GLint param);
+void (WINE_GLAPI *glTexEnviv) (GLenum target, GLenum pname, const GLint* params);
+void (WINE_GLAPI *glTexGend) (GLenum coord, GLenum pname, GLdouble param);
+void (WINE_GLAPI *glTexGendv) (GLenum coord, GLenum pname, const GLdouble* params);
+void (WINE_GLAPI *glTexGenf) (GLenum coord, GLenum pname, GLfloat param);
+void (WINE_GLAPI *glTexGenfv) (GLenum coord, GLenum pname, const GLfloat* params);
+void (WINE_GLAPI *glTexGeni) (GLenum coord, GLenum pname, GLint param);
+void (WINE_GLAPI *glTexGeniv) (GLenum coord, GLenum pname, const GLint* params);
+void (WINE_GLAPI *glTexImage1D) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
+void (WINE_GLAPI *glTexImage2D) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
+void (WINE_GLAPI *glTexParameterf) (GLenum target, GLenum pname, GLfloat param);
+void (WINE_GLAPI *glTexParameterfv) (GLenum target, GLenum pname, const GLfloat* params);
+void (WINE_GLAPI *glTexParameteri) (GLenum target, GLenum pname, GLint param);
+void (WINE_GLAPI *glTexParameteriv) (GLenum target, GLenum pname, const GLint* params);
+void (WINE_GLAPI *glTexSubImage1D) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid* pixels);
+void (WINE_GLAPI *glTexSubImage2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels);
+void (WINE_GLAPI *glTranslated) (GLdouble x, GLdouble y, GLdouble z);
+void (WINE_GLAPI *glTranslatef) (GLfloat x, GLfloat y, GLfloat z);
+void (WINE_GLAPI *glVertex2d) (GLdouble x, GLdouble y);
+void (WINE_GLAPI *glVertex2dv) (const GLdouble* v);
+void (WINE_GLAPI *glVertex2f) (GLfloat x, GLfloat y);
+void (WINE_GLAPI *glVertex2fv) (const GLfloat* v);
+void (WINE_GLAPI *glVertex2i) (GLint x, GLint y);
+void (WINE_GLAPI *glVertex2iv) (const GLint* v);
+void (WINE_GLAPI *glVertex2s) (GLshort x, GLshort y);
+void (WINE_GLAPI *glVertex2sv) (const GLshort* v);
+void (WINE_GLAPI *glVertex3d) (GLdouble x, GLdouble y, GLdouble z);
+void (WINE_GLAPI *glVertex3dv) (const GLdouble* v);
+void (WINE_GLAPI *glVertex3f) (GLfloat x, GLfloat y, GLfloat z);
+void (WINE_GLAPI *glVertex3fv) (const GLfloat* v);
+void (WINE_GLAPI *glVertex3i) (GLint x, GLint y, GLint z);
+void (WINE_GLAPI *glVertex3iv) (const GLint* v);
+void (WINE_GLAPI *glVertex3s) (GLshort x, GLshort y, GLshort z);
+void (WINE_GLAPI *glVertex3sv) (const GLshort* v);
+void (WINE_GLAPI *glVertex4d) (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+void (WINE_GLAPI *glVertex4dv) (const GLdouble* v);
+void (WINE_GLAPI *glVertex4f) (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+void (WINE_GLAPI *glVertex4fv) (const GLfloat* v);
+void (WINE_GLAPI *glVertex4i) (GLint x, GLint y, GLint z, GLint w);
+void (WINE_GLAPI *glVertex4iv) (const GLint* v);
+void (WINE_GLAPI *glVertex4s) (GLshort x, GLshort y, GLshort z, GLshort w);
+void (WINE_GLAPI *glVertex4sv) (const GLshort* v);
+void (WINE_GLAPI *glVertexPointer) (GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
+void (WINE_GLAPI *glViewport) (GLint x, GLint y, GLsizei width, GLsizei height);
+void (WINE_GLAPI *glPointParameterfv) (GLenum pname, const GLfloat *params);
+
+/* glFinish and glFlush are always loaded from opengl32.dll, thus they always have
+ * __stdcall calling convention
+ */
+void (__stdcall  *glFinish) ();
+void (__stdcall  *glFlush) ();
+
+/* WGL functions */
+HGLRC   (WINAPI *pwglCreateContext)(HDC);
+BOOL    (WINAPI *pwglDeleteContext)(HGLRC);
+HGLRC   (WINAPI *pwglGetCurrentContext)(void);
+HDC     (WINAPI *pwglGetCurrentDC)(void);
+PROC    (WINAPI *pwglGetProcAddress)(LPCSTR);
+BOOL    (WINAPI *pwglMakeCurrent)(HDC,HGLRC);
+BOOL    (WINAPI *pwglShareLists)(HGLRC,HGLRC);
+
+#define GL_FUNCS_GEN \
+    USE_GL_FUNC(glAccum) \
+    USE_GL_FUNC(glAlphaFunc) \
+    USE_GL_FUNC(glAreTexturesResident) \
+    USE_GL_FUNC(glArrayElement) \
+    USE_GL_FUNC(glBegin) \
+    USE_GL_FUNC(glBindTexture) \
+    USE_GL_FUNC(glBitmap) \
+    USE_GL_FUNC(glBlendFunc) \
+    USE_GL_FUNC(glCallList) \
+    USE_GL_FUNC(glCallLists) \
+    USE_GL_FUNC(glClear) \
+    USE_GL_FUNC(glClearAccum) \
+    USE_GL_FUNC(glClearColor) \
+    USE_GL_FUNC(glClearDepth) \
+    USE_GL_FUNC(glClearIndex) \
+    USE_GL_FUNC(glClearStencil) \
+    USE_GL_FUNC(glClipPlane) \
+    USE_GL_FUNC(glColor3b) \
+    USE_GL_FUNC(glColor3bv) \
+    USE_GL_FUNC(glColor3d) \
+    USE_GL_FUNC(glColor3dv) \
+    USE_GL_FUNC(glColor3f) \
+    USE_GL_FUNC(glColor3fv) \
+    USE_GL_FUNC(glColor3i) \
+    USE_GL_FUNC(glColor3iv) \
+    USE_GL_FUNC(glColor3s) \
+    USE_GL_FUNC(glColor3sv) \
+    USE_GL_FUNC(glColor3ub) \
+    USE_GL_FUNC(glColor3ubv) \
+    USE_GL_FUNC(glColor3ui) \
+    USE_GL_FUNC(glColor3uiv) \
+    USE_GL_FUNC(glColor3us) \
+    USE_GL_FUNC(glColor3usv) \
+    USE_GL_FUNC(glColor4b) \
+    USE_GL_FUNC(glColor4bv) \
+    USE_GL_FUNC(glColor4d) \
+    USE_GL_FUNC(glColor4dv) \
+    USE_GL_FUNC(glColor4f) \
+    USE_GL_FUNC(glColor4fv) \
+    USE_GL_FUNC(glColor4i) \
+    USE_GL_FUNC(glColor4iv) \
+    USE_GL_FUNC(glColor4s) \
+    USE_GL_FUNC(glColor4sv) \
+    USE_GL_FUNC(glColor4ub) \
+    USE_GL_FUNC(glColor4ubv) \
+    USE_GL_FUNC(glColor4ui) \
+    USE_GL_FUNC(glColor4uiv) \
+    USE_GL_FUNC(glColor4us) \
+    USE_GL_FUNC(glColor4usv) \
+    USE_GL_FUNC(glColorMask) \
+    USE_GL_FUNC(glColorMaterial) \
+    USE_GL_FUNC(glColorPointer) \
+    USE_GL_FUNC(glCopyPixels) \
+    USE_GL_FUNC(glCopyTexImage1D) \
+    USE_GL_FUNC(glCopyTexImage2D) \
+    USE_GL_FUNC(glCopyTexSubImage1D) \
+    USE_GL_FUNC(glCopyTexSubImage2D) \
+    USE_GL_FUNC(glCullFace) \
+    USE_GL_FUNC(glDeleteLists) \
+    USE_GL_FUNC(glDeleteTextures) \
+    USE_GL_FUNC(glDepthFunc) \
+    USE_GL_FUNC(glDepthMask) \
+    USE_GL_FUNC(glDepthRange) \
+    USE_GL_FUNC(glDisable) \
+    USE_GL_FUNC(glDisableClientState) \
+    USE_GL_FUNC(glDrawArrays) \
+    USE_GL_FUNC(glDrawBuffer) \
+    USE_GL_FUNC(glDrawElements) \
+    USE_GL_FUNC(glDrawPixels) \
+    USE_GL_FUNC(glEdgeFlag) \
+    USE_GL_FUNC(glEdgeFlagPointer) \
+    USE_GL_FUNC(glEdgeFlagv) \
+    USE_GL_FUNC(glEnable) \
+    USE_GL_FUNC(glEnableClientState) \
+    USE_GL_FUNC(glEnd) \
+    USE_GL_FUNC(glEndList) \
+    USE_GL_FUNC(glEvalCoord1d) \
+    USE_GL_FUNC(glEvalCoord1dv) \
+    USE_GL_FUNC(glEvalCoord1f) \
+    USE_GL_FUNC(glEvalCoord1fv) \
+    USE_GL_FUNC(glEvalCoord2d) \
+    USE_GL_FUNC(glEvalCoord2dv) \
+    USE_GL_FUNC(glEvalCoord2f) \
+    USE_GL_FUNC(glEvalCoord2fv) \
+    USE_GL_FUNC(glEvalMesh1) \
+    USE_GL_FUNC(glEvalMesh2) \
+    USE_GL_FUNC(glEvalPoint1) \
+    USE_GL_FUNC(glEvalPoint2) \
+    USE_GL_FUNC(glFeedbackBuffer) \
+    USE_GL_FUNC(glFogf) \
+    USE_GL_FUNC(glFogfv) \
+    USE_GL_FUNC(glFogi) \
+    USE_GL_FUNC(glFogiv) \
+    USE_GL_FUNC(glFrontFace) \
+    USE_GL_FUNC(glFrustum) \
+    USE_GL_FUNC(glGenLists) \
+    USE_GL_FUNC(glGenTextures) \
+    USE_GL_FUNC(glGetBooleanv) \
+    USE_GL_FUNC(glGetClipPlane) \
+    USE_GL_FUNC(glGetDoublev) \
+    USE_GL_FUNC(glGetError) \
+    USE_GL_FUNC(glGetFloatv) \
+    USE_GL_FUNC(glGetIntegerv) \
+    USE_GL_FUNC(glGetLightfv) \
+    USE_GL_FUNC(glGetLightiv) \
+    USE_GL_FUNC(glGetMapdv) \
+    USE_GL_FUNC(glGetMapfv) \
+    USE_GL_FUNC(glGetMapiv) \
+    USE_GL_FUNC(glGetMaterialfv) \
+    USE_GL_FUNC(glGetMaterialiv) \
+    USE_GL_FUNC(glGetPixelMapfv) \
+    USE_GL_FUNC(glGetPixelMapuiv) \
+    USE_GL_FUNC(glGetPixelMapusv) \
+    USE_GL_FUNC(glGetPointerv) \
+    USE_GL_FUNC(glGetPolygonStipple) \
+    USE_GL_FUNC(glGetString) \
+    USE_GL_FUNC(glGetTexEnvfv) \
+    USE_GL_FUNC(glGetTexEnviv) \
+    USE_GL_FUNC(glGetTexGendv) \
+    USE_GL_FUNC(glGetTexGenfv) \
+    USE_GL_FUNC(glGetTexGeniv) \
+    USE_GL_FUNC(glGetTexImage) \
+    USE_GL_FUNC(glGetTexLevelParameterfv) \
+    USE_GL_FUNC(glGetTexLevelParameteriv) \
+    USE_GL_FUNC(glGetTexParameterfv) \
+    USE_GL_FUNC(glGetTexParameteriv) \
+    USE_GL_FUNC(glHint) \
+    USE_GL_FUNC(glIndexMask) \
+    USE_GL_FUNC(glIndexPointer) \
+    USE_GL_FUNC(glIndexd) \
+    USE_GL_FUNC(glIndexdv) \
+    USE_GL_FUNC(glIndexf) \
+    USE_GL_FUNC(glIndexfv) \
+    USE_GL_FUNC(glIndexi) \
+    USE_GL_FUNC(glIndexiv) \
+    USE_GL_FUNC(glIndexs) \
+    USE_GL_FUNC(glIndexsv) \
+    USE_GL_FUNC(glIndexub) \
+    USE_GL_FUNC(glIndexubv) \
+    USE_GL_FUNC(glInitNames) \
+    USE_GL_FUNC(glInterleavedArrays) \
+    USE_GL_FUNC(glIsEnabled) \
+    USE_GL_FUNC(glIsList) \
+    USE_GL_FUNC(glIsTexture) \
+    USE_GL_FUNC(glLightModelf) \
+    USE_GL_FUNC(glLightModelfv) \
+    USE_GL_FUNC(glLightModeli) \
+    USE_GL_FUNC(glLightModeliv) \
+    USE_GL_FUNC(glLightf) \
+    USE_GL_FUNC(glLightfv) \
+    USE_GL_FUNC(glLighti) \
+    USE_GL_FUNC(glLightiv) \
+    USE_GL_FUNC(glLineStipple) \
+    USE_GL_FUNC(glLineWidth) \
+    USE_GL_FUNC(glListBase) \
+    USE_GL_FUNC(glLoadIdentity) \
+    USE_GL_FUNC(glLoadMatrixd) \
+    USE_GL_FUNC(glLoadMatrixf) \
+    USE_GL_FUNC(glLoadName) \
+    USE_GL_FUNC(glLogicOp) \
+    USE_GL_FUNC(glMap1d) \
+    USE_GL_FUNC(glMap1f) \
+    USE_GL_FUNC(glMap2d) \
+    USE_GL_FUNC(glMap2f) \
+    USE_GL_FUNC(glMapGrid1d) \
+    USE_GL_FUNC(glMapGrid1f) \
+    USE_GL_FUNC(glMapGrid2d) \
+    USE_GL_FUNC(glMapGrid2f) \
+    USE_GL_FUNC(glMaterialf) \
+    USE_GL_FUNC(glMaterialfv) \
+    USE_GL_FUNC(glMateriali) \
+    USE_GL_FUNC(glMaterialiv) \
+    USE_GL_FUNC(glMatrixMode) \
+    USE_GL_FUNC(glMultMatrixd) \
+    USE_GL_FUNC(glMultMatrixf) \
+    USE_GL_FUNC(glNewList) \
+    USE_GL_FUNC(glNormal3b) \
+    USE_GL_FUNC(glNormal3bv) \
+    USE_GL_FUNC(glNormal3d) \
+    USE_GL_FUNC(glNormal3dv) \
+    USE_GL_FUNC(glNormal3f) \
+    USE_GL_FUNC(glNormal3fv) \
+    USE_GL_FUNC(glNormal3i) \
+    USE_GL_FUNC(glNormal3iv) \
+    USE_GL_FUNC(glNormal3s) \
+    USE_GL_FUNC(glNormal3sv) \
+    USE_GL_FUNC(glNormalPointer) \
+    USE_GL_FUNC(glOrtho) \
+    USE_GL_FUNC(glPassThrough) \
+    USE_GL_FUNC(glPixelMapfv) \
+    USE_GL_FUNC(glPixelMapuiv) \
+    USE_GL_FUNC(glPixelMapusv) \
+    USE_GL_FUNC(glPixelStoref) \
+    USE_GL_FUNC(glPixelStorei) \
+    USE_GL_FUNC(glPixelTransferf) \
+    USE_GL_FUNC(glPixelTransferi) \
+    USE_GL_FUNC(glPixelZoom) \
+    USE_GL_FUNC(glPointSize) \
+    USE_GL_FUNC(glPolygonMode) \
+    USE_GL_FUNC(glPolygonOffset) \
+    USE_GL_FUNC(glPolygonStipple) \
+    USE_GL_FUNC(glPopAttrib) \
+    USE_GL_FUNC(glPopClientAttrib) \
+    USE_GL_FUNC(glPopMatrix) \
+    USE_GL_FUNC(glPopName) \
+    USE_GL_FUNC(glPrioritizeTextures) \
+    USE_GL_FUNC(glPushAttrib) \
+    USE_GL_FUNC(glPushClientAttrib) \
+    USE_GL_FUNC(glPushMatrix) \
+    USE_GL_FUNC(glPushName) \
+    USE_GL_FUNC(glRasterPos2d) \
+    USE_GL_FUNC(glRasterPos2dv) \
+    USE_GL_FUNC(glRasterPos2f) \
+    USE_GL_FUNC(glRasterPos2fv) \
+    USE_GL_FUNC(glRasterPos2i) \
+    USE_GL_FUNC(glRasterPos2iv) \
+    USE_GL_FUNC(glRasterPos2s) \
+    USE_GL_FUNC(glRasterPos2sv) \
+    USE_GL_FUNC(glRasterPos3d) \
+    USE_GL_FUNC(glRasterPos3dv) \
+    USE_GL_FUNC(glRasterPos3f) \
+    USE_GL_FUNC(glRasterPos3fv) \
+    USE_GL_FUNC(glRasterPos3i) \
+    USE_GL_FUNC(glRasterPos3iv) \
+    USE_GL_FUNC(glRasterPos3s) \
+    USE_GL_FUNC(glRasterPos3sv) \
+    USE_GL_FUNC(glRasterPos4d) \
+    USE_GL_FUNC(glRasterPos4dv) \
+    USE_GL_FUNC(glRasterPos4f) \
+    USE_GL_FUNC(glRasterPos4fv) \
+    USE_GL_FUNC(glRasterPos4i) \
+    USE_GL_FUNC(glRasterPos4iv) \
+    USE_GL_FUNC(glRasterPos4s) \
+    USE_GL_FUNC(glRasterPos4sv) \
+    USE_GL_FUNC(glReadBuffer) \
+    USE_GL_FUNC(glReadPixels) \
+    USE_GL_FUNC(glRectd) \
+    USE_GL_FUNC(glRectdv) \
+    USE_GL_FUNC(glRectf) \
+    USE_GL_FUNC(glRectfv) \
+    USE_GL_FUNC(glRecti) \
+    USE_GL_FUNC(glRectiv) \
+    USE_GL_FUNC(glRects) \
+    USE_GL_FUNC(glRectsv) \
+    USE_GL_FUNC(glRenderMode) \
+    USE_GL_FUNC(glRotated) \
+    USE_GL_FUNC(glRotatef) \
+    USE_GL_FUNC(glScaled) \
+    USE_GL_FUNC(glScalef) \
+    USE_GL_FUNC(glScissor) \
+    USE_GL_FUNC(glSelectBuffer) \
+    USE_GL_FUNC(glShadeModel) \
+    USE_GL_FUNC(glStencilFunc) \
+    USE_GL_FUNC(glStencilMask) \
+    USE_GL_FUNC(glStencilOp) \
+    USE_GL_FUNC(glTexCoord1d) \
+    USE_GL_FUNC(glTexCoord1dv) \
+    USE_GL_FUNC(glTexCoord1f) \
+    USE_GL_FUNC(glTexCoord1fv) \
+    USE_GL_FUNC(glTexCoord1i) \
+    USE_GL_FUNC(glTexCoord1iv) \
+    USE_GL_FUNC(glTexCoord1s) \
+    USE_GL_FUNC(glTexCoord1sv) \
+    USE_GL_FUNC(glTexCoord2d) \
+    USE_GL_FUNC(glTexCoord2dv) \
+    USE_GL_FUNC(glTexCoord2f) \
+    USE_GL_FUNC(glTexCoord2fv) \
+    USE_GL_FUNC(glTexCoord2i) \
+    USE_GL_FUNC(glTexCoord2iv) \
+    USE_GL_FUNC(glTexCoord2s) \
+    USE_GL_FUNC(glTexCoord2sv) \
+    USE_GL_FUNC(glTexCoord3d) \
+    USE_GL_FUNC(glTexCoord3dv) \
+    USE_GL_FUNC(glTexCoord3f) \
+    USE_GL_FUNC(glTexCoord3fv) \
+    USE_GL_FUNC(glTexCoord3i) \
+    USE_GL_FUNC(glTexCoord3iv) \
+    USE_GL_FUNC(glTexCoord3s) \
+    USE_GL_FUNC(glTexCoord3sv) \
+    USE_GL_FUNC(glTexCoord4d) \
+    USE_GL_FUNC(glTexCoord4dv) \
+    USE_GL_FUNC(glTexCoord4f) \
+    USE_GL_FUNC(glTexCoord4fv) \
+    USE_GL_FUNC(glTexCoord4i) \
+    USE_GL_FUNC(glTexCoord4iv) \
+    USE_GL_FUNC(glTexCoord4s) \
+    USE_GL_FUNC(glTexCoord4sv) \
+    USE_GL_FUNC(glTexCoordPointer) \
+    USE_GL_FUNC(glTexEnvf) \
+    USE_GL_FUNC(glTexEnvfv) \
+    USE_GL_FUNC(glTexEnvi) \
+    USE_GL_FUNC(glTexEnviv) \
+    USE_GL_FUNC(glTexGend) \
+    USE_GL_FUNC(glTexGendv) \
+    USE_GL_FUNC(glTexGenf) \
+    USE_GL_FUNC(glTexGenfv) \
+    USE_GL_FUNC(glTexGeni) \
+    USE_GL_FUNC(glTexGeniv) \
+    USE_GL_FUNC(glTexImage1D) \
+    USE_GL_FUNC(glTexImage2D) \
+    USE_GL_FUNC(glTexParameterf) \
+    USE_GL_FUNC(glTexParameterfv) \
+    USE_GL_FUNC(glTexParameteri) \
+    USE_GL_FUNC(glTexParameteriv) \
+    USE_GL_FUNC(glTexSubImage1D) \
+    USE_GL_FUNC(glTexSubImage2D) \
+    USE_GL_FUNC(glTranslated) \
+    USE_GL_FUNC(glTranslatef) \
+    USE_GL_FUNC(glVertex2d) \
+    USE_GL_FUNC(glVertex2dv) \
+    USE_GL_FUNC(glVertex2f) \
+    USE_GL_FUNC(glVertex2fv) \
+    USE_GL_FUNC(glVertex2i) \
+    USE_GL_FUNC(glVertex2iv) \
+    USE_GL_FUNC(glVertex2s) \
+    USE_GL_FUNC(glVertex2sv) \
+    USE_GL_FUNC(glVertex3d) \
+    USE_GL_FUNC(glVertex3dv) \
+    USE_GL_FUNC(glVertex3f) \
+    USE_GL_FUNC(glVertex3fv) \
+    USE_GL_FUNC(glVertex3i) \
+    USE_GL_FUNC(glVertex3iv) \
+    USE_GL_FUNC(glVertex3s) \
+    USE_GL_FUNC(glVertex3sv) \
+    USE_GL_FUNC(glVertex4d) \
+    USE_GL_FUNC(glVertex4dv) \
+    USE_GL_FUNC(glVertex4f) \
+    USE_GL_FUNC(glVertex4fv) \
+    USE_GL_FUNC(glVertex4i) \
+    USE_GL_FUNC(glVertex4iv) \
+    USE_GL_FUNC(glVertex4s) \
+    USE_GL_FUNC(glVertex4sv) \
+    USE_GL_FUNC(glVertexPointer) \
+    USE_GL_FUNC(glViewport) \
+    USE_GL_FUNC(glPointParameterfv) \
+
+#define WGL_FUNCS_GEN \
+    USE_WGL_FUNC(wglCreateContext) \
+    USE_WGL_FUNC(wglDeleteContext) \
+    USE_WGL_FUNC(wglGetCurrentContext) \
+    USE_WGL_FUNC(wglGetCurrentDC) \
+    USE_WGL_FUNC(wglGetProcAddress) \
+    USE_WGL_FUNC(wglMakeCurrent) \
+    USE_WGL_FUNC(wglShareLists)
+
+
+/****************************************************
+ * OpenGL Extensions (EXT and ARB)
+ *     #defines and functions pointer
+ ****************************************************/
+
+/* GL_ARB_color_buffer_float */
+#ifndef GL_ARB_color_buffer_float
+#define GL_RGBA_FLOAT_MODE_ARB            0x8820
+#define GL_CLAMP_VERTEX_COLOR_ARB         0x891A
+#define GL_CLAMP_FRAGMENT_COLOR_ARB       0x891B
+#define GL_CLAMP_READ_COLOR_ARB           0x891C
+#define GL_FIXED_ONLY_ARB                 0x891D
+#endif
+typedef void (WINE_GLAPI *PGLFNCLAMPCOLORARBPROC) (GLenum target, GLenum clamp);
+
+/* GL_ARB_depth_texture */
+#ifndef GL_ARB_depth_texture
+#define GL_ARB_depth_texture 1
+#define GL_DEPTH_COMPONENT16_ARB          0x81A5
+#define GL_DEPTH_COMPONENT24_ARB          0x81A6
+#define GL_DEPTH_COMPONENT32_ARB          0x81A7
+#define GL_TEXTURE_DEPTH_SIZE_ARB         0x884A
+#define GL_DEPTH_TEXTURE_MODE_ARB         0x884B
+#endif
+
+/* GL_ARB_draw_buffers */
+#ifndef GL_ARB_draw_buffers
+#define GL_ARB_draw_buffers 1
+#define GL_MAX_DRAW_BUFFERS_ARB           0x8824
+#define GL_DRAW_BUFFER0_ARB               0x8825
+#define GL_DRAW_BUFFER1_ARB               0x8826
+#define GL_DRAW_BUFFER2_ARB               0x8827
+#define GL_DRAW_BUFFER3_ARB               0x8828
+#define GL_DRAW_BUFFER4_ARB               0x8829
+#define GL_DRAW_BUFFER5_ARB               0x882A
+#define GL_DRAW_BUFFER6_ARB               0x882B
+#define GL_DRAW_BUFFER7_ARB               0x882C
+#define GL_DRAW_BUFFER8_ARB               0x882D
+#define GL_DRAW_BUFFER9_ARB               0x882E
+#define GL_DRAW_BUFFER10_ARB              0x882F
+#define GL_DRAW_BUFFER11_ARB              0x8830
+#define GL_DRAW_BUFFER12_ARB              0x8831
+#define GL_DRAW_BUFFER13_ARB              0x8832
+#define GL_DRAW_BUFFER14_ARB              0x8833
+#define GL_DRAW_BUFFER15_ARB              0x8834
+#endif
+typedef void (WINE_GLAPI *PGLFNDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs);
+
+/* GL_ARB_imaging */
+#ifndef GL_ARB_imaging
+#define GL_ARB_imaging 1
+#define GL_CONSTANT_COLOR                 0x8001
+#define GL_ONE_MINUS_CONSTANT_COLOR       0x8002
+#define GL_CONSTANT_ALPHA                 0x8003
+#define GL_ONE_MINUS_CONSTANT_ALPHA       0x8004
+#define GL_BLEND_COLOR                    0x8005
+#define GL_FUNC_ADD                       0x8006
+#define GL_MIN                            0x8007
+#define GL_MAX                            0x8008
+#define GL_BLEND_EQUATION                 0x8009
+#define GL_FUNC_SUBTRACT                  0x800A
+#define GL_FUNC_REVERSE_SUBTRACT          0x800B
+#define GL_CONVOLUTION_1D                 0x8010
+#define GL_CONVOLUTION_2D                 0x8011
+#define GL_SEPARABLE_2D                   0x8012
+#define GL_CONVOLUTION_BORDER_MODE        0x8013
+#define GL_CONVOLUTION_FILTER_SCALE       0x8014
+#define GL_CONVOLUTION_FILTER_BIAS        0x8015
+#define GL_REDUCE                         0x8016
+#define GL_CONVOLUTION_FORMAT             0x8017
+#define GL_CONVOLUTION_WIDTH              0x8018
+#define GL_CONVOLUTION_HEIGHT             0x8019
+#define GL_MAX_CONVOLUTION_WIDTH          0x801A
+#define GL_MAX_CONVOLUTION_HEIGHT         0x801B
+#define GL_POST_CONVOLUTION_RED_SCALE     0x801C
+#define GL_POST_CONVOLUTION_GREEN_SCALE   0x801D
+#define GL_POST_CONVOLUTION_BLUE_SCALE    0x801E
+#define GL_POST_CONVOLUTION_ALPHA_SCALE   0x801F
+#define GL_POST_CONVOLUTION_RED_BIAS      0x8020
+#define GL_POST_CONVOLUTION_GREEN_BIAS    0x8021
+#define GL_POST_CONVOLUTION_BLUE_BIAS     0x8022
+#define GL_POST_CONVOLUTION_ALPHA_BIAS    0x8023
+#define GL_HISTOGRAM                      0x8024
+#define GL_PROXY_HISTOGRAM                0x8025
+#define GL_HISTOGRAM_WIDTH                0x8026
+#define GL_HISTOGRAM_FORMAT               0x8027
+#define GL_HISTOGRAM_RED_SIZE             0x8028
+#define GL_HISTOGRAM_GREEN_SIZE           0x8029
+#define GL_HISTOGRAM_BLUE_SIZE            0x802A
+#define GL_HISTOGRAM_ALPHA_SIZE           0x802B
+#define GL_HISTOGRAM_LUMINANCE_SIZE       0x802C
+#define GL_HISTOGRAM_SINK                 0x802D
+#define GL_MINMAX                         0x802E
+#define GL_MINMAX_FORMAT                  0x802F
+#define GL_MINMAX_SINK                    0x8030
+#define GL_TABLE_TOO_LARGE                0x8031
+#define GL_COLOR_MATRIX                   0x80B1
+#define GL_COLOR_MATRIX_STACK_DEPTH       0x80B2
+#define GL_MAX_COLOR_MATRIX_STACK_DEPTH   0x80B3
+#define GL_POST_COLOR_MATRIX_RED_SCALE    0x80B4
+#define GL_POST_COLOR_MATRIX_GREEN_SCALE  0x80B5
+#define GL_POST_COLOR_MATRIX_BLUE_SCALE   0x80B6
+#define GL_POST_COLOR_MATRIX_ALPHA_SCALE  0x80B7
+#define GL_POST_COLOR_MATRIX_RED_BIAS     0x80B8
+#define GL_POST_COLOR_MATRIX_GREEN_BIAS   0x80B9
+#define GL_POST_COLOR_MATRIX_BLUE_BIAS    0x80BA
+#define GL_POST_COLOR_MATRIX_ALPHA_BIAS   0x80BB
+#define GL_COLOR_TABLE                    0x80D0
+#define GL_POST_CONVOLUTION_COLOR_TABLE   0x80D1
+#define GL_POST_COLOR_MATRIX_COLOR_TABLE  0x80D2
+#define GL_PROXY_COLOR_TABLE              0x80D3
+#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4
+#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5
+#define GL_COLOR_TABLE_SCALE              0x80D6
+#define GL_COLOR_TABLE_BIAS               0x80D7
+#define GL_COLOR_TABLE_FORMAT             0x80D8
+#define GL_COLOR_TABLE_WIDTH              0x80D9
+#define GL_COLOR_TABLE_RED_SIZE           0x80DA
+#define GL_COLOR_TABLE_GREEN_SIZE         0x80DB
+#define GL_COLOR_TABLE_BLUE_SIZE          0x80DC
+#define GL_COLOR_TABLE_ALPHA_SIZE         0x80DD
+#define GL_COLOR_TABLE_LUMINANCE_SIZE     0x80DE
+#define GL_COLOR_TABLE_INTENSITY_SIZE     0x80DF
+#define GL_CONSTANT_BORDER                0x8151
+#define GL_REPLICATE_BORDER               0x8153
+#define GL_CONVOLUTION_BORDER_COLOR       0x8154
+#endif
+typedef void (WINE_GLAPI *PGLFNBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+typedef void (WINE_GLAPI *PGLFNBLENDEQUATIONPROC) (GLenum mode);
+/* GL_ARB_multitexture */
+#ifndef GL_ARB_multitexture
+#define GL_ARB_multitexture 1
+#define GL_TEXTURE0_ARB                   0x84C0
+#define GL_TEXTURE1_ARB                   0x84C1
+#define GL_TEXTURE2_ARB                   0x84C2
+#define GL_TEXTURE3_ARB                   0x84C3
+#define GL_TEXTURE4_ARB                   0x84C4
+#define GL_TEXTURE5_ARB                   0x84C5
+#define GL_TEXTURE6_ARB                   0x84C6
+#define GL_TEXTURE7_ARB                   0x84C7
+#define GL_TEXTURE8_ARB                   0x84C8
+#define GL_TEXTURE9_ARB                   0x84C9
+#define GL_TEXTURE10_ARB                  0x84CA
+#define GL_TEXTURE11_ARB                  0x84CB
+#define GL_TEXTURE12_ARB                  0x84CC
+#define GL_TEXTURE13_ARB                  0x84CD
+#define GL_TEXTURE14_ARB                  0x84CE
+#define GL_TEXTURE15_ARB                  0x84CF
+#define GL_TEXTURE16_ARB                  0x84D0
+#define GL_TEXTURE17_ARB                  0x84D1
+#define GL_TEXTURE18_ARB                  0x84D2
+#define GL_TEXTURE19_ARB                  0x84D3
+#define GL_TEXTURE20_ARB                  0x84D4
+#define GL_TEXTURE21_ARB                  0x84D5
+#define GL_TEXTURE22_ARB                  0x84D6
+#define GL_TEXTURE23_ARB                  0x84D7
+#define GL_TEXTURE24_ARB                  0x84D8
+#define GL_TEXTURE25_ARB                  0x84D9
+#define GL_TEXTURE26_ARB                  0x84DA
+#define GL_TEXTURE27_ARB                  0x84DB
+#define GL_TEXTURE28_ARB                  0x84DC
+#define GL_TEXTURE29_ARB                  0x84DD
+#define GL_TEXTURE30_ARB                  0x84DE
+#define GL_TEXTURE31_ARB                  0x84DF
+#define GL_ACTIVE_TEXTURE_ARB             0x84E0
+#define GL_CLIENT_ACTIVE_TEXTURE_ARB      0x84E1
+#define GL_MAX_TEXTURE_UNITS_ARB          0x84E2
+#endif
+typedef void (WINE_GLAPI *WINED3D_PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
+typedef void (WINE_GLAPI *WINED3D_PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
+typedef void (WINE_GLAPI *WINED3D_PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);
+typedef void (WINE_GLAPI *WINED3D_PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (WINE_GLAPI *WINED3D_PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);
+typedef void (WINE_GLAPI *WINED3D_PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (WINE_GLAPI *WINED3D_PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
+typedef void (WINE_GLAPI *WINED3D_PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (WINE_GLAPI *WINED3D_PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+typedef void (WINE_GLAPI *WINED3D_PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (WINE_GLAPI *WINED3D_PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);
+typedef void (WINE_GLAPI *WINED3D_PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);
+
+/* GL_ARB_texture_cube_map */
+#ifndef GL_ARB_texture_cube_map
+#define GL_ARB_texture_cube_map 1
+#define GL_NORMAL_MAP_ARB                   0x8511
+#define GL_REFLECTION_MAP_ARB               0x8512
+#define GL_TEXTURE_CUBE_MAP_ARB             0x8513
+#define GL_TEXTURE_BINDING_CUBE_MAP_ARB     0x8514
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB  0x8515
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB  0x8516
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB  0x8517
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB  0x8518
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB  0x8519
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB  0x851A
+#define GL_PROXY_TEXTURE_CUBE_MAP_ARB       0x851B
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB    0x851C
+#endif
+
+/* GL_ARB_point_parameters */
+#ifndef GL_ARB_point_parameters
+#define GL_ARB_point_parameters 1
+#define GL_POINT_SIZE_MIN_ARB             0x8126
+#define GL_POINT_SIZE_MAX_ARB             0x8127
+#define GL_POINT_FADE_THRESHOLD_SIZE_ARB  0x8128
+#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129
+#endif
+typedef void (WINE_GLAPI * PGLFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param);
+typedef void (WINE_GLAPI * PGLFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params);
+/* GL_ARB_vertex_blend */
+#ifndef GL_ARB_vertex_blend
+#define GL_ARB_vertex_blend 1
+#define GL_MAX_VERTEX_UNITS_ARB           0x86A4
+#define GL_ACTIVE_VERTEX_UNITS_ARB        0x86A5
+#define GL_WEIGHT_SUM_UNITY_ARB           0x86A6
+#define GL_VERTEX_BLEND_ARB               0x86A7
+#define GL_CURRENT_WEIGHT_ARB             0x86A8
+#define GL_WEIGHT_ARRAY_TYPE_ARB          0x86A9
+#define GL_WEIGHT_ARRAY_STRIDE_ARB        0x86AA
+#define GL_WEIGHT_ARRAY_SIZE_ARB          0x86AB
+#define GL_WEIGHT_ARRAY_POINTER_ARB       0x86AC
+#define GL_WEIGHT_ARRAY_ARB               0x86AD
+#define GL_MODELVIEW0_ARB                 0x1700
+#define GL_MODELVIEW1_ARB                 0x850A
+#define GL_MODELVIEW2_ARB                 0x8722
+#define GL_MODELVIEW3_ARB                 0x8723
+#define GL_MODELVIEW4_ARB                 0x8724
+#define GL_MODELVIEW5_ARB                 0x8725
+#define GL_MODELVIEW6_ARB                 0x8726
+#define GL_MODELVIEW7_ARB                 0x8727
+#define GL_MODELVIEW8_ARB                 0x8728
+#define GL_MODELVIEW9_ARB                 0x8729
+#define GL_MODELVIEW10_ARB                0x872A
+#define GL_MODELVIEW11_ARB                0x872B
+#define GL_MODELVIEW12_ARB                0x872C
+#define GL_MODELVIEW13_ARB                0x872D
+#define GL_MODELVIEW14_ARB                0x872E
+#define GL_MODELVIEW15_ARB                0x872F
+#define GL_MODELVIEW16_ARB                0x8730
+#define GL_MODELVIEW17_ARB                0x8731
+#define GL_MODELVIEW18_ARB                0x8732
+#define GL_MODELVIEW19_ARB                0x8733
+#define GL_MODELVIEW20_ARB                0x8734
+#define GL_MODELVIEW21_ARB                0x8735
+#define GL_MODELVIEW22_ARB                0x8736
+#define GL_MODELVIEW23_ARB                0x8737
+#define GL_MODELVIEW24_ARB                0x8738
+#define GL_MODELVIEW25_ARB                0x8739
+#define GL_MODELVIEW26_ARB                0x873A
+#define GL_MODELVIEW27_ARB                0x873B
+#define GL_MODELVIEW28_ARB                0x873C
+#define GL_MODELVIEW29_ARB                0x873D
+#define GL_MODELVIEW30_ARB                0x873E
+#define GL_MODELVIEW31_ARB                0x873F
+#endif
+typedef void (WINE_GLAPI * PGLFNGLWEIGHTPOINTERARB) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+typedef void (WINE_GLAPI * PGLFNGLWEIGHTBV) (GLint size, const GLbyte *weights);
+typedef void (WINE_GLAPI * PGLFNGLWEIGHTSV) (GLint size, const GLshort *weights);
+typedef void (WINE_GLAPI * PGLFNGLWEIGHTIV) (GLint size, const GLint *weights);
+typedef void (WINE_GLAPI * PGLFNGLWEIGHTFV) (GLint size, const GLfloat *weights);
+typedef void (WINE_GLAPI * PGLFNGLWEIGHTDV) (GLint size, const GLdouble *weights);
+typedef void (WINE_GLAPI * PGLFNGLWEIGHTUBV) (GLint size, const GLubyte *weights);
+typedef void (WINE_GLAPI * PGLFNGLWEIGHTUSV) (GLint size, const GLushort *weights);
+typedef void (WINE_GLAPI * PGLFNGLWEIGHTUIV) (GLint size, const GLuint *weights);
+typedef void (WINE_GLAPI * PGLFNGLVERTEXBLENDARB) (GLint count);
+/* GL_ARB_pixel_buffer_object */
+#ifndef GL_ARB_pixel_buffer_object
+#define GL_ARB_pixel_buffer_object 1
+#endif
+#define GL_PIXEL_PACK_BUFFER_ARB               0x88EB
+#define GL_PIXEL_UNPACK_BUFFER_ARB             0x88EC
+#define GL_PIXEL_PACK_BUFFER_BINDING_ARB       0x88ED
+#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB     0x88EF
+/* GL_EXT_framebuffer_object */
+#ifndef GL_EXT_framebuffer_object
+#define GL_EXT_framebuffer_object 1
+#define GL_FRAMEBUFFER_EXT                     0x8D40
+#define GL_RENDERBUFFER_EXT                    0x8D41
+#define GL_STENCIL_INDEX1_EXT                  0x8D46
+#define GL_STENCIL_INDEX4_EXT                  0x8D47
+#define GL_STENCIL_INDEX8_EXT                  0x8D48
+#define GL_STENCIL_INDEX16_EXT                 0x8D49
+#define GL_RENDERBUFFER_WIDTH_EXT              0x8D42
+#define GL_RENDERBUFFER_HEIGHT_EXT             0x8D43
+#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT    0x8D44
+#define GL_RENDERBUFFER_RED_SIZE_EXT           0x8D50
+#define GL_RENDERBUFFER_GREEN_SIZE_EXT         0x8D51
+#define GL_RENDERBUFFER_BLUE_SIZE_EXT          0x8D52
+#define GL_RENDERBUFFER_ALPHA_SIZE_EXT         0x8D53
+#define GL_RENDERBUFFER_DEPTH_SIZE_EXT         0x8D54
+#define GL_RENDERBUFFER_STENCIL_SIZE_EXT       0x8D55
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT            0x8CD0
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT            0x8CD1
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT          0x8CD2
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT  0x8CD3
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT     0x8CD4
+#define GL_COLOR_ATTACHMENT0_EXT                0x8CE0
+#define GL_COLOR_ATTACHMENT1_EXT                0x8CE1
+#define GL_COLOR_ATTACHMENT2_EXT                0x8CE2
+#define GL_COLOR_ATTACHMENT3_EXT                0x8CE3
+#define GL_COLOR_ATTACHMENT4_EXT                0x8CE4
+#define GL_COLOR_ATTACHMENT5_EXT                0x8CE5
+#define GL_COLOR_ATTACHMENT6_EXT                0x8CE6
+#define GL_COLOR_ATTACHMENT7_EXT                0x8CE7
+#define GL_COLOR_ATTACHMENT8_EXT                0x8CE8
+#define GL_COLOR_ATTACHMENT9_EXT                0x8CE9
+#define GL_COLOR_ATTACHMENT10_EXT               0x8CEA
+#define GL_COLOR_ATTACHMENT11_EXT               0x8CEB
+#define GL_COLOR_ATTACHMENT12_EXT               0x8CEC
+#define GL_COLOR_ATTACHMENT13_EXT               0x8CED
+#define GL_COLOR_ATTACHMENT14_EXT               0x8CEE
+#define GL_COLOR_ATTACHMENT15_EXT               0x8CEF
+#define GL_DEPTH_ATTACHMENT_EXT                 0x8D00
+#define GL_STENCIL_ATTACHMENT_EXT               0x8D20
+#define GL_FRAMEBUFFER_COMPLETE_EXT                          0x8CD5
+#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT             0x8CD6
+#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT     0x8CD7
+#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT             0x8CD9
+#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT                0x8CDA
+#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT            0x8CDB
+#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT            0x8CDC
+#define GL_FRAMEBUFFER_UNSUPPORTED_EXT                       0x8CDD
+#define GL_FRAMEBUFFER_BINDING_EXT             0x8CA6
+#define GL_RENDERBUFFER_BINDING_EXT            0x8CA7
+#define GL_MAX_COLOR_ATTACHMENTS_EXT           0x8CDF
+#define GL_MAX_RENDERBUFFER_SIZE_EXT           0x84E8
+#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT   0x0506
+
+#endif
+typedef GLboolean (WINE_GLAPI * PGLFNGLISRENDERBUFFEREXTPROC)(GLuint renderbuffer);
+typedef void (WINE_GLAPI * PGLFNGLBINDRENDERBUFFEREXTPROC)(GLenum target, GLuint renderbuffer);
+typedef void (WINE_GLAPI * PGLFNGLDELETERENDERBUFFERSEXTPROC)(GLsizei n, const GLuint *renderbuffers);
+typedef void (WINE_GLAPI * PGLFNGLGENRENDERBUFFERSEXTPROC)(GLsizei n, GLuint *renderbuffers);
+typedef void (WINE_GLAPI * PGLFNGLRENDERBUFFERSTORAGEEXTPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (WINE_GLAPI * PGLFNGLGETRENDERBUFFERPARAMETERIVEXTPROC)(GLenum target, GLenum pname, GLint *params);
+typedef GLboolean (WINE_GLAPI * PGLFNGLISFRAMEBUFFEREXTPROC)(GLuint framebuffer);
+typedef void (WINE_GLAPI * PGLFNGLBINDFRAMEBUFFEREXTPROC)(GLenum target, GLuint framebuffer);
+typedef void (WINE_GLAPI * PGLFNGLDELETEFRAMEBUFFERSEXTPROC)(GLsizei n, const GLuint *framebuffers);
+typedef void (WINE_GLAPI * PGLFNGLGENFRAMEBUFFERSEXTPROC)(GLsizei n, GLuint *framebuffers);
+typedef GLenum (WINE_GLAPI * PGLFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)(GLenum target);
+typedef void (WINE_GLAPI * PGLFNGLFRAMEBUFFERTEXTURE1DEXTPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (WINE_GLAPI * PGLFNGLFRAMEBUFFERTEXTURE2DEXTPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (WINE_GLAPI * PGLFNGLFRAMEBUFFERTEXTURE3DEXTPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+typedef void (WINE_GLAPI * PGLFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (WINE_GLAPI * PGLFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)(GLenum target, GLenum attachment, GLenum pname, GLint *params);
+typedef void (WINE_GLAPI * PGLFNGLGENERATEMIPMAPEXTPROC)(GLenum target);
+/* GL_EXT_framebuffer_blit */
+#ifndef GL_EXT_framebuffer_blit
+#define GL_EXT_framebuffer_blit 1
+#define GL_READ_FRAMEBUFFER_EXT                0x8CA8
+#define GL_DRAW_FRAMEBUFFER_EXT                0x8CA9
+#define GL_DRAW_FRAMEBUFFER_BINDING_EXT        0x8CA6
+#define GL_READ_FRAMEBUFFER_BINDING_EXT        0x8CAA
+#endif
+typedef void (WINE_GLAPI * PGLFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+
+/* GL_EXT_framebuffer_multisample */
+#ifndef GL_EXT_framebuffer_multisample
+#define GL_EXT_framebuffer_multisample 1
+#define GL_RENDERBUFFER_SAMPLES_EXT                 0x8cab
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT   0x8d56
+#define GL_MAX_SAMPLES_EXT                          0x8d57
+#endif
+typedef void (WINE_GLAPI * PGLFNRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+
+/* GL_EXT_secondary_color */
+#ifndef GL_EXT_secondary_color
+#define GL_EXT_secondary_color 1
+#define GL_COLOR_SUM_EXT                     0x8458
+#define GL_CURRENT_SECONDARY_COLOR_EXT       0x8459
+#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT    0x845A
+#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT    0x845B
+#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT  0x845C
+#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D
+#define GL_SECONDARY_COLOR_ARRAY_EXT         0x845E
+#endif
+typedef void (WINE_GLAPI * PGLFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue);
+typedef void (WINE_GLAPI * PGLFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v);
+typedef void (WINE_GLAPI * PGLFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue);
+typedef void (WINE_GLAPI * PGLFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+/* GL_EXT_paletted_texture */
+#ifndef GL_EXT_paletted_texture
+#define GL_EXT_paletted_texture 1
+#define GL_COLOR_INDEX1_EXT               0x80E2
+#define GL_COLOR_INDEX2_EXT               0x80E3
+#define GL_COLOR_INDEX4_EXT               0x80E4
+#define GL_COLOR_INDEX8_EXT               0x80E5
+#define GL_COLOR_INDEX12_EXT              0x80E6
+#define GL_COLOR_INDEX16_EXT              0x80E7
+#define GL_TEXTURE_INDEX_SIZE_EXT         0x80ED
+#endif
+typedef void (WINE_GLAPI * PGLFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
+/* GL_EXT_point_parameters */
+#ifndef GL_EXT_point_parameters
+#define GL_EXT_point_parameters 1
+#define GL_POINT_SIZE_MIN_EXT             0x8126
+#define GL_POINT_SIZE_MAX_EXT             0x8127
+#define GL_POINT_FADE_THRESHOLD_SIZE_EXT  0x8128
+#define GL_DISTANCE_ATTENUATION_EXT       0x8129
+#endif
+typedef void (WINE_GLAPI * PGLFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param);
+typedef void (WINE_GLAPI * PGLFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params);
+/* GL_EXT_texture3D */
+#ifndef GL_EXT_texture3D
+#define GL_EXT_texture3D 1
+#define GL_PACK_SKIP_IMAGES_EXT           0x806B
+#define GL_PACK_IMAGE_HEIGHT_EXT          0x806C
+#define GL_UNPACK_SKIP_IMAGES_EXT         0x806D
+#define GL_UNPACK_IMAGE_HEIGHT_EXT        0x806E
+#define GL_TEXTURE_3D_EXT                 0x806F
+#define GL_PROXY_TEXTURE_3D_EXT           0x8070
+#define GL_TEXTURE_DEPTH_EXT              0x8071
+#define GL_TEXTURE_WRAP_R_EXT             0x8072
+#define GL_MAX_3D_TEXTURE_SIZE_EXT        0x8073
+#endif
+typedef void (WINE_GLAPI * PGLFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (WINE_GLAPI * PGLFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
+/* GL_EXT_texture_env_combine */
+#ifndef GL_EXT_texture_env_combine
+#define GL_EXT_texture_env_combine 1
+#define GL_COMBINE_EXT                    0x8570
+#define GL_COMBINE_RGB_EXT                0x8571
+#define GL_COMBINE_ALPHA_EXT              0x8572
+#define GL_RGB_SCALE_EXT                  0x8573
+#define GL_ADD_SIGNED_EXT                 0x8574
+#define GL_INTERPOLATE_EXT                0x8575
+#define GL_SUBTRACT_EXT                   0x84E7
+#define GL_CONSTANT_EXT                   0x8576
+#define GL_PRIMARY_COLOR_EXT              0x8577
+#define GL_PREVIOUS_EXT                   0x8578
+#define GL_SOURCE0_RGB_EXT                0x8580
+#define GL_SOURCE1_RGB_EXT                0x8581
+#define GL_SOURCE2_RGB_EXT                0x8582
+#define GL_SOURCE3_RGB_EXT                0x8583
+#define GL_SOURCE4_RGB_EXT                0x8584
+#define GL_SOURCE5_RGB_EXT                0x8585
+#define GL_SOURCE6_RGB_EXT                0x8586
+#define GL_SOURCE7_RGB_EXT                0x8587
+#define GL_SOURCE0_ALPHA_EXT              0x8588
+#define GL_SOURCE1_ALPHA_EXT              0x8589
+#define GL_SOURCE2_ALPHA_EXT              0x858A
+#define GL_SOURCE3_ALPHA_EXT              0x858B
+#define GL_SOURCE4_ALPHA_EXT              0x858C
+#define GL_SOURCE5_ALPHA_EXT              0x858D
+#define GL_SOURCE6_ALPHA_EXT              0x858E
+#define GL_SOURCE7_ALPHA_EXT              0x858F
+#define GL_OPERAND0_RGB_EXT               0x8590
+#define GL_OPERAND1_RGB_EXT               0x8591
+#define GL_OPERAND2_RGB_EXT               0x8592
+#define GL_OPERAND3_RGB_EXT               0x8593
+#define GL_OPERAND4_RGB_EXT               0x8594
+#define GL_OPERAND5_RGB_EXT               0x8595
+#define GL_OPERAND6_RGB_EXT               0x8596
+#define GL_OPERAND7_RGB_EXT               0x8597
+#define GL_OPERAND0_ALPHA_EXT             0x8598
+#define GL_OPERAND1_ALPHA_EXT             0x8599
+#define GL_OPERAND2_ALPHA_EXT             0x859A
+#define GL_OPERAND3_ALPHA_EXT             0x859B
+#define GL_OPERAND4_ALPHA_EXT             0x859C
+#define GL_OPERAND5_ALPHA_EXT             0x859D
+#define GL_OPERAND6_ALPHA_EXT             0x859E
+#define GL_OPERAND7_ALPHA_EXT             0x859F
+#endif
+/* GL_EXT_texture_env_dot3 */
+#ifndef GL_EXT_texture_env_dot3
+#define GL_EXT_texture_env_dot3 1
+#define GL_DOT3_RGB_EXT                   0x8740
+#define GL_DOT3_RGBA_EXT                  0x8741
+#endif
+/* GL_EXT_texture_lod_bias */
+#ifndef GL_EXT_texture_lod_bias
+#define GL_EXT_texture_lod_bias 1
+#define GL_MAX_TEXTURE_LOD_BIAS_EXT       0x84FD
+#define GL_TEXTURE_FILTER_CONTROL_EXT     0x8500
+#define GL_TEXTURE_LOD_BIAS_EXT           0x8501
+#endif
+/* GL_ARB_texture_border_clamp */
+#ifndef GL_ARB_texture_border_clamp
+#define GL_ARB_texture_border_clamp 1
+#define GL_CLAMP_TO_BORDER_ARB            0x812D
+#endif
+/* GL_EXT_texture_filter_anisotropic */
+#ifndef GL_EXT_texture_filter_anisotropic
+#define GL_EXT_texture_filter_anisotropic 1
+#define GL_TEXTURE_MAX_ANISOTROPY_EXT     0x84FE
+#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
+#endif
+/* GL_ARB_texture_mirrored_repeat (full support GL1.4) */
+#ifndef GL_ARB_texture_mirrored_repeat
+#define GL_ARB_texture_mirrored_repeat 1
+#define GL_MIRRORED_REPEAT_ARB            0x8370
+#endif
+/* GL_ATI_texture_mirror_once */
+#ifndef GL_ATI_texture_mirror_once
+#define GL_ATI_texture_mirror_once 1
+#define GL_MIRROR_CLAMP_ATI               0x8742
+#define GL_MIRROR_CLAMP_TO_EDGE_ATI       0x8743
+#endif
+/* GL_ARB_texture_env_dot3 */
+#ifndef GL_ARB_texture_env_dot3
+#define GL_ARB_texture_env_dot3 1
+#define GL_DOT3_RGB_ARB                   0x86AE
+#define GL_DOT3_RGBA_ARB                  0x86AF
+#endif
+/* GL_EXT_texture_env_dot3 */
+#ifndef GL_EXT_texture_env_dot3
+#define GL_EXT_texture_env_dot3 1
+#define GL_DOT3_RGB_EXT                   0x8740
+#define GL_DOT3_RGBA_EXT                  0x8741
+#endif
+/* GL_EXT_texture_sRGB */
+#ifndef GL_EXT_texture_sRGB
+#define GL_EXT_texture_sRGB 1
+#define GL_SRGB_EXT                            0x8C40
+#define GL_SRGB8_EXT                           0x8C41
+#define GL_SRGB_ALPHA_EXT                      0x8C42
+#define GL_SRGB8_ALPHA8_EXT                    0x8C43
+#define GL_SLUMINANCE_ALPHA_EXT                0x8C44
+#define GL_SLUMINANCE8_ALPHA8_EXT              0x8C45
+#define GL_SLUMINANCE_EXT                      0x8C46
+#define GL_SLUMINANCE8_EXT                     0x8C47
+#define GL_COMPRESSED_SRGB_EXT                 0x8C48
+#define GL_COMPRESSED_SRGB_ALPHA_EXT           0x8C49
+#define GL_COMPRESSED_SLUMINANCE_EXT           0x8C4A
+#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT     0x8C4B
+#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT       0x8C4C
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
+#endif
+/* GL_ARB_texture_float */
+#ifndef GL_ARB_texture_float
+#define GL_ARB_texture_float 1
+#define GL_RGBA32F_ARB                    0x8814
+#define GL_RGB32F_ARB                     0x8815
+#define GL_RGBA16F_ARB                    0x881A
+#define GL_RGB16F_ARB                     0x881B
+#endif
+/* GL_ARB_half_float_pixel */
+#ifndef GL_ARB_half_float_pixel
+#define GL_ARB_half_float_pixel
+#define GL_HALF_FLOAT_ARB                 0x140B
+#endif
+/* GL_ARB_vertex_program */
+#ifndef GL_ARB_vertex_program
+#define GL_ARB_vertex_program 1
+#define GL_VERTEX_PROGRAM_ARB             0x8620
+#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB  0x8642
+#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB    0x8643
+#define GL_COLOR_SUM_ARB                  0x8458
+#define GL_PROGRAM_FORMAT_ASCII_ARB       0x8875
+#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622
+#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB   0x8623
+#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624
+#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB   0x8625
+#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A
+#define GL_CURRENT_VERTEX_ATTRIB_ARB      0x8626
+#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645
+#define GL_PROGRAM_LENGTH_ARB             0x8627
+#define GL_PROGRAM_FORMAT_ARB             0x8876
+#define GL_PROGRAM_BINDING_ARB            0x8677
+#define GL_PROGRAM_INSTRUCTIONS_ARB       0x88A0
+#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB   0x88A1
+#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2
+#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3
+#define GL_PROGRAM_TEMPORARIES_ARB        0x88A4
+#define GL_MAX_PROGRAM_TEMPORARIES_ARB    0x88A5
+#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6
+#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7
+#define GL_PROGRAM_PARAMETERS_ARB         0x88A8
+#define GL_MAX_PROGRAM_PARAMETERS_ARB     0x88A9
+#define GL_PROGRAM_NATIVE_PARAMETERS_ARB  0x88AA
+#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB
+#define GL_PROGRAM_ATTRIBS_ARB            0x88AC
+#define GL_MAX_PROGRAM_ATTRIBS_ARB        0x88AD
+#define GL_PROGRAM_NATIVE_ATTRIBS_ARB     0x88AE
+#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF
+#define GL_PROGRAM_ADDRESS_REGISTERS_ARB  0x88B0
+#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1
+#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2
+#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3
+#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4
+#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5
+#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6
+#define GL_PROGRAM_STRING_ARB             0x8628
+#define GL_PROGRAM_ERROR_POSITION_ARB     0x864B
+#define GL_CURRENT_MATRIX_ARB             0x8641
+#define GL_TRANSPOSE_CURRENT_MATRIX_ARB   0x88B7
+#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640
+#define GL_MAX_VERTEX_ATTRIBS_ARB         0x8869
+#define GL_MAX_PROGRAM_MATRICES_ARB       0x862F
+#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E
+#define GL_PROGRAM_ERROR_STRING_ARB       0x8874
+#define GL_MATRIX0_ARB                    0x88C0
+#define GL_MATRIX1_ARB                    0x88C1
+#define GL_MATRIX2_ARB                    0x88C2
+#define GL_MATRIX3_ARB                    0x88C3
+#define GL_MATRIX4_ARB                    0x88C4
+#define GL_MATRIX5_ARB                    0x88C5
+#define GL_MATRIX6_ARB                    0x88C6
+#define GL_MATRIX7_ARB                    0x88C7
+#define GL_MATRIX8_ARB                    0x88C8
+#define GL_MATRIX9_ARB                    0x88C9
+#define GL_MATRIX10_ARB                   0x88CA
+#define GL_MATRIX11_ARB                   0x88CB
+#define GL_MATRIX12_ARB                   0x88CC
+#define GL_MATRIX13_ARB                   0x88CD
+#define GL_MATRIX14_ARB                   0x88CE
+#define GL_MATRIX15_ARB                   0x88CF
+#define GL_MATRIX16_ARB                   0x88D0
+#define GL_MATRIX17_ARB                   0x88D1
+#define GL_MATRIX18_ARB                   0x88D2
+#define GL_MATRIX19_ARB                   0x88D3
+#define GL_MATRIX20_ARB                   0x88D4
+#define GL_MATRIX21_ARB                   0x88D5
+#define GL_MATRIX22_ARB                   0x88D6
+#define GL_MATRIX23_ARB                   0x88D7
+#define GL_MATRIX24_ARB                   0x88D8
+#define GL_MATRIX25_ARB                   0x88D9
+#define GL_MATRIX26_ARB                   0x88DA
+#define GL_MATRIX27_ARB                   0x88DB
+#define GL_MATRIX28_ARB                   0x88DC
+#define GL_MATRIX29_ARB                   0x88DD
+#define GL_MATRIX30_ARB                   0x88DE
+#define GL_MATRIX31_ARB                   0x88DF
+#endif
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
+typedef void (WINE_GLAPI * PGLFNENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
+typedef void (WINE_GLAPI * PGLFNDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
+typedef void (WINE_GLAPI * PGLFNPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const GLvoid *string);
+typedef void (WINE_GLAPI * PGLFNBINDPROGRAMARBPROC) (GLenum target, GLuint program);
+typedef void (WINE_GLAPI * PGLFNDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint *programs);
+typedef void (WINE_GLAPI * PGLFNGENPROGRAMSARBPROC) (GLsizei n, GLuint *programs);
+typedef void (WINE_GLAPI * PGLFNPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (WINE_GLAPI * PGLFNPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params);
+typedef void (WINE_GLAPI * PGLFNPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (WINE_GLAPI * PGLFNPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);
+typedef void (WINE_GLAPI * PGLFNPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (WINE_GLAPI * PGLFNPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params);
+typedef void (WINE_GLAPI * PGLFNPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (WINE_GLAPI * PGLFNPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);
+typedef void (WINE_GLAPI * PGLFNGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params);
+typedef void (WINE_GLAPI * PGLFNGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params);
+typedef void (WINE_GLAPI * PGLFNGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params);
+typedef void (WINE_GLAPI * PGLFNGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params);
+typedef void (WINE_GLAPI * PGLFNGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (WINE_GLAPI * PGLFNGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, GLvoid *string);
+typedef void (WINE_GLAPI * PGLFNGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble *params);
+typedef void (WINE_GLAPI * PGLFNGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat *params);
+typedef void (WINE_GLAPI * PGLFNGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint *params);
+typedef void (WINE_GLAPI * PGLFNGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, GLvoid* *pointer);
+typedef GLboolean (WINE_GLAPI * PGLFNISPROGRAMARBPROC) (GLuint program);
+#ifndef GL_ARB_fragment_program
+#define GL_ARB_fragment_program 1
+#define GL_FRAGMENT_PROGRAM_ARB           0x8804
+#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB   0x8805
+#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB   0x8806
+#define GL_PROGRAM_TEX_INDIRECTIONS_ARB   0x8807
+#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808
+#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809
+#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A
+#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B
+#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C
+#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D
+#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E
+#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F
+#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810
+#define GL_MAX_TEXTURE_COORDS_ARB         0x8871
+#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB    0x8872
+/* All ARB_fragment_program entry points are shared with ARB_vertex_program. */
+#endif
+/* GL_ARB_multisample */
+#ifndef GL_ARB_multisample
+#define GL_ARB_multisample 1
+#define GL_MULTISAMPLE_ARB                0x809D
+#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB   0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE_ARB        0x809F
+#define GL_SAMPLE_COVERAGE_ARB            0x80A0
+#define GL_SAMPLE_BUFFERS_ARB             0x80A8
+#define GL_SAMPLES_ARB                    0x80A9
+#define GL_SAMPLE_COVERAGE_VALUE_ARB      0x80AA
+#define GL_SAMPLE_COVERAGE_INVERT_ARB     0x80AB
+#define GL_MULTISAMPLE_BIT_ARB            0x20000000
+#endif
+typedef void (WINE_GLAPI * WINED3D_PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert);
+/* GL_ARB_vertex_buffer_object */
+#ifndef GL_ARB_vertex_buffer_object
+#define GL_ARB_vertex_buffer_object 1
+#define GL_BUFFER_SIZE_ARB                0x8764
+#define GL_BUFFER_USAGE_ARB               0x8765
+#define GL_ARRAY_BUFFER_ARB               0x8892
+#define GL_ELEMENT_ARRAY_BUFFER_ARB       0x8893
+#define GL_ARRAY_BUFFER_BINDING_ARB       0x8894
+#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895
+#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB  0x8896
+#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB  0x8897
+#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB   0x8898
+#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB   0x8899
+#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB   0x889A
+#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB       0x889B
+#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C
+#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB  0x889D
+#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB          0x889E
+#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB   0x889F
+#define GL_READ_ONLY_ARB                  0x88B8
+#define GL_WRITE_ONLY_ARB                 0x88B9
+#define GL_READ_WRITE_ARB                 0x88BA
+#define GL_BUFFER_ACCESS_ARB              0x88BB
+#define GL_BUFFER_MAPPED_ARB              0x88BC
+#define GL_BUFFER_MAP_POINTER_ARB         0x88BD
+#define GL_STREAM_DRAW_ARB                0x88E0
+#define GL_STREAM_READ_ARB                0x88E1
+#define GL_STREAM_COPY_ARB                0x88E2
+#define GL_STATIC_DRAW_ARB                0x88E4
+#define GL_STATIC_READ_ARB                0x88E5
+#define GL_STATIC_COPY_ARB                0x88E6
+#define GL_DYNAMIC_DRAW_ARB               0x88E8
+#define GL_DYNAMIC_READ_ARB               0x88E9
+#define GL_DYNAMIC_COPY_ARB               0x88EA
+#endif
+typedef void (WINE_GLAPI * PGLFNBINDBUFFERARBPROC) (GLenum target, GLuint buffer);
+typedef void (WINE_GLAPI * PGLFNDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers);
+typedef void (WINE_GLAPI * PGLFNGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers);
+typedef GLboolean (WINE_GLAPI * PGLFNISBUFFERARBPROC) (GLuint buffer);
+typedef void (WINE_GLAPI * PGLFNBUFFERDATAARBPROC) (GLenum target, ptrdiff_t size, const GLvoid *data, GLenum usage);
+typedef void (WINE_GLAPI * PGLFNBUFFERSUBDATAARBPROC) (GLenum target, ptrdiff_t offset, ptrdiff_t size, const GLvoid *data);
+typedef void (WINE_GLAPI * PGLFNGETBUFFERSUBDATAARBPROC) (GLenum target, ptrdiff_t offset, ptrdiff_t size, GLvoid *data);
+typedef GLvoid* (WINE_GLAPI * PGLFNMAPBUFFERARBPROC) (GLenum target, GLenum access);
+typedef GLboolean (WINE_GLAPI * PGLFNUNMAPBUFFERARBPROC) (GLenum target);
+typedef void (WINE_GLAPI * PGLFNGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (WINE_GLAPI * PGLFNGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, GLvoid* *params);
+/* GL_EXT_blend_equation_separate */
+typedef void (WINE_GLAPI * PGLFNBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+/* GL_EXT_blend_func_separate */
+#ifndef GL_EXT_blend_func_separate
+#define GL_BLEND_DST_RGB_EXT              0x80C8
+#define GL_BLEND_SRC_RGB_EXT              0x80C9
+#define GL_BLEND_DST_ALPHA_EXT            0x80CA
+#define GL_BLEND_SRC_ALPHA_EXT            0x80CB
+#endif
+typedef void (WINE_GLAPI * PGLFNBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha);
+/* GL_EXT_fog_coord */
+#ifndef GL_EXT_fog_coord
+#define GL_EXT_fog_coord 1
+#define GL_FOG_COORDINATE_SOURCE_EXT            0x8450
+#define GL_FOG_COORDINATE_EXT                   0x8451
+#define GL_FRAGMENT_DEPTH_EXT                   0x8452
+#define GL_CURRENT_FOG_COORDINATE_EXT           0x8453
+#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT        0x8454
+#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT      0x8455
+#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT     0x8456
+#define GL_FOG_COORDINATE_ARRAY_EXT             0x8457
+#endif /* GL_EXT_fog_coord */
+typedef void (WINE_GLAPI * PGLFNGLFOGCOORDFEXTPROC) (GLfloat intesity);
+typedef void (WINE_GLAPI * PGLFNGLFOGCOORDFVEXTPROC) (GLfloat intesity);
+typedef void (WINE_GLAPI * PGLFNGLFOGCOORDDEXTPROC) (GLfloat intesity);
+typedef void (WINE_GLAPI * PGLFNGLFOGCOORDDVEXTPROC) (GLfloat intesity);
+typedef void (WINE_GLAPI * PGLFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, GLvoid *data);
+/* GL_ARB_shader_objects (GLSL) */
+#ifndef GL_ARB_shader_objects
+#define GL_ARB_shader_objects 1
+typedef char GLcharARB;
+typedef unsigned int GLhandleARB;
+#define GL_PROGRAM_OBJECT_ARB                   0x8B40
+#define GL_OBJECT_TYPE_ARB                      0x8B4E
+#define GL_OBJECT_SUBTYPE_ARB                   0x8B4F
+#define GL_OBJECT_DELETE_STATUS_ARB             0x8B80
+#define GL_OBJECT_COMPILE_STATUS_ARB            0x8B81
+#define GL_OBJECT_LINK_STATUS_ARB               0x8B82
+#define GL_OBJECT_VALIDATE_STATUS_ARB           0x8B83
+#define GL_OBJECT_INFO_LOG_LENGTH_ARB           0x8B84
+#define GL_OBJECT_ATTACHED_OBJECTS_ARB          0x8B85
+#define GL_OBJECT_ACTIVE_UNIFORMS_ARB           0x8B86
+#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87
+#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB      0x8B88
+#define GL_SHADER_OBJECT_ARB                    0x8B48
+#define GL_FLOAT_VEC2_ARB                       0x8B50
+#define GL_FLOAT_VEC3_ARB                       0x8B51
+#define GL_FLOAT_VEC4_ARB                       0x8B52
+#define GL_INT_VEC2_ARB                         0x8B53
+#define GL_INT_VEC3_ARB                         0x8B54
+#define GL_INT_VEC4_ARB                         0x8B55
+#define GL_BOOL_ARB                             0x8B56
+#define GL_BOOL_VEC2_ARB                        0x8B57
+#define GL_BOOL_VEC3_ARB                        0x8B58
+#define GL_BOOL_VEC4_ARB                        0x8B59
+#define GL_FLOAT_MAT2_ARB                       0x8B5A
+#define GL_FLOAT_MAT3_ARB                       0x8B5B
+#define GL_FLOAT_MAT4_ARB                       0x8B5C
+#define GL_SAMPLER_1D_ARB                       0x8B5D
+#define GL_SAMPLER_2D_ARB                       0x8B5E
+#define GL_SAMPLER_3D_ARB                       0x8B5F
+#define GL_SAMPLER_CUBE_ARB                     0x8B60
+#define GL_SAMPLER_1D_SHADOW_ARB                0x8B61
+#define GL_SAMPLER_2D_SHADOW_ARB                0x8B62
+#define GL_SAMPLER_2D_RECT_ARB                  0x8B63
+#define GL_SAMPELR_2D_RECT_SHADOW_ARB           0x8B64
+#endif
+#ifndef GL_ARB_shading_language_100
+#define GL_ARB_shading_language_100         1
+#define GL_SHADING_LANGUAGE_VERSION_ARB     0x8B8C
+#endif
+#ifndef GL_ARB_fragment_shader
+#define GL_ARB_fragment_shader 1
+#define GL_FRAGMENT_SHADER_ARB                  0x8B30
+#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB  0x8B49
+#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB  0x8B8B
+#endif
+#ifndef GL_ARB_vertex_shader
+#define GL_ARB_vertex_shader 1
+#define GL_VERTEX_SHADER_ARB                        0x8B31
+#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB        0x8B4A
+#define GL_MAX_VARYING_FLOATS_ARB                   0x8B4B
+#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB       0x8B4C
+#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB     0x8B4D
+#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB             0x8B89
+#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB   0x8B8A
+#endif
+typedef void (WINE_GLAPI * WINED3D_PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint *params);
+typedef void (WINE_GLAPI * WINED3D_PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat *params);
+typedef GLint (WINE_GLAPI * WINED3D_PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);
+typedef void (WINE_GLAPI * WINED3D_PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
+typedef void (WINE_GLAPI * WINED3D_PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0);
+typedef void (WINE_GLAPI * WINED3D_PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1);
+typedef void (WINE_GLAPI * WINED3D_PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2);
+typedef void (WINE_GLAPI * WINED3D_PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+typedef void (WINE_GLAPI * WINED3D_PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0);
+typedef void (WINE_GLAPI * WINED3D_PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1);
+typedef void (WINE_GLAPI * WINED3D_PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+typedef void (WINE_GLAPI * WINED3D_PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+typedef void (WINE_GLAPI * WINED3D_PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (WINE_GLAPI * WINED3D_PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (WINE_GLAPI * WINED3D_PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (WINE_GLAPI * WINED3D_PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (WINE_GLAPI * WINED3D_PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (WINE_GLAPI * WINED3D_PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (WINE_GLAPI * WINED3D_PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (WINE_GLAPI * WINED3D_PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (WINE_GLAPI * WINED3D_PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (WINE_GLAPI * WINED3D_PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (WINE_GLAPI * WINED3D_PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (WINE_GLAPI * WINED3D_PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat *params);
+typedef void (WINE_GLAPI * WINED3D_PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint *params);
+typedef void (WINE_GLAPI * WINED3D_PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
+typedef void (WINE_GLAPI * WINED3D_PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj);
+typedef GLhandleARB (WINE_GLAPI * WINED3D_PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType);
+typedef void (WINE_GLAPI * WINED3D_PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB* *string, const GLint *length);
+typedef void (WINE_GLAPI * WINED3D_PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj);
+typedef GLhandleARB (WINE_GLAPI * WINED3D_PFNGLCREATEPROGRAMOBJECTARBPROC) (void);
+typedef void (WINE_GLAPI * WINED3D_PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj);
+typedef void (WINE_GLAPI * WINED3D_PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj);
+typedef void (WINE_GLAPI * WINED3D_PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj);
+typedef void (WINE_GLAPI * WINED3D_PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj);
+typedef void (WINE_GLAPI * WINED3D_PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj);
+typedef void (WINE_GLAPI * WINED3D_PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj);
+typedef GLhandleARB (WINE_GLAPI * WINED3D_PFNGLGETHANDLEARBPROC) (GLenum pname);
+typedef void (WINE_GLAPI * WINED3D_PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source);
+typedef void (WINE_GLAPI * WINED3D_PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB *name);
+typedef GLint (WINE_GLAPI * WINED3D_PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);
+/* GL_ARB_pixel_buffer_object */
+#ifndef GL_ARB_pixel_buffer_object
+#define GL_PIXEL_PACK_BUFFER_ARB          0x88EB
+#define GL_PIXEL_UNPACK_BUFFER_ARB        0x88EC
+#define GL_PIXEL_PACK_BUFFER_BINDING_ARB  0x88ED
+#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF
+#endif
+/* GL_EXT_texture */
+#ifndef GL_EXT_texture
+#define GL_EXT_texture 1
+#define GL_ALPHA4_EXT                     0x803B
+#define GL_ALPHA8_EXT                     0x803C
+#define GL_ALPHA12_EXT                    0x803D
+#define GL_ALPHA16_EXT                    0x803E
+#define GL_LUMINANCE4_EXT                 0x803F
+#define GL_LUMINANCE8_EXT                 0x8040
+#define GL_LUMINANCE12_EXT                0x8041
+#define GL_LUMINANCE16_EXT                0x8042
+#define GL_LUMINANCE4_ALPHA4_EXT          0x8043
+#define GL_LUMINANCE6_ALPHA2_EXT          0x8044
+#define GL_LUMINANCE8_ALPHA8_EXT          0x8045
+#define GL_LUMINANCE12_ALPHA4_EXT         0x8046
+#define GL_LUMINANCE12_ALPHA12_EXT        0x8047
+#define GL_LUMINANCE16_ALPHA16_EXT        0x8048
+#define GL_INTENSITY_EXT                  0x8049
+#define GL_INTENSITY4_EXT                 0x804A
+#define GL_INTENSITY8_EXT                 0x804B
+#define GL_INTENSITY12_EXT                0x804C
+#define GL_INTENSITY16_EXT                0x804D
+#define GL_RGB2_EXT                       0x804E
+#define GL_RGB4_EXT                       0x804F
+#define GL_RGB5_EXT                       0x8050
+#define GL_RGB8_EXT                       0x8051
+#define GL_RGB10_EXT                      0x8052
+#define GL_RGB12_EXT                      0x8053
+#define GL_RGB16_EXT                      0x8054
+#define GL_RGBA2_EXT                      0x8055
+#define GL_RGBA4_EXT                      0x8056
+#define GL_RGB5_A1_EXT                    0x8057
+#define GL_RGBA8_EXT                      0x8058
+#define GL_RGB10_A2_EXT                   0x8059
+#define GL_RGBA12_EXT                     0x805A
+#define GL_RGBA16_EXT                     0x805B
+#define GL_TEXTURE_RED_SIZE_EXT           0x805C
+#define GL_TEXTURE_GREEN_SIZE_EXT         0x805D
+#define GL_TEXTURE_BLUE_SIZE_EXT          0x805E
+#define GL_TEXTURE_ALPHA_SIZE_EXT         0x805F
+#define GL_TEXTURE_LUMINANCE_SIZE_EXT     0x8060
+#define GL_TEXTURE_INTENSITY_SIZE_EXT     0x8061
+#define GL_REPLACE_EXT                    0x8062
+#define GL_PROXY_TEXTURE_1D_EXT           0x8063
+#define GL_PROXY_TEXTURE_2D_EXT           0x8064
+#define GL_TEXTURE_TOO_LARGE_EXT          0x8065
+#endif
+/* GL_EXT_texture_compression_s3tc */
+#ifndef GL_EXT_texture_compression_s3tc
+#define GL_EXT_texture_compression_s3tc 1
+#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT   0x83F0
+#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT  0x83F1
+#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT  0x83F2
+#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT  0x83F3
+#endif
+typedef void (WINE_GLAPI * PGLFNCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
+typedef void (WINE_GLAPI * PGLFNCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
+typedef void (WINE_GLAPI * PGLFNCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
+typedef void (WINE_GLAPI * PGLFNCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
+typedef void (WINE_GLAPI * PGLFNCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
+typedef void (WINE_GLAPI * PGLFNCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
+typedef void (WINE_GLAPI * PGLFNGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, void *img);
+/* GL_EXT_stencil_wrap */
+#ifndef GL_EXT_stencil_wrap
+#define GL_EXT_stencil_wrap 1
+#define GL_INCR_WRAP_EXT                  0x8507
+#define GL_DECR_WRAP_EXT                  0x8508
+#endif
+
+/* GL_NV_half_float */
+#ifndef GL_NV_half_float
+#define GL_NV_half_float 1
+typedef unsigned short GLhalfNV;
+#define GL_HALF_FLOAT_NV                  0x140B
+#endif
+typedef void (WINE_GLAPI * PGLFNVERTEX2HNVPROC) (GLhalfNV x, GLhalfNV y);
+typedef void (WINE_GLAPI * PGLFNVERTEX2HVNVPROC) (const GLhalfNV *v);
+typedef void (WINE_GLAPI * PGLFNVERTEX3HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z);
+typedef void (WINE_GLAPI * PGLFNVERTEX3HVNVPROC) (const GLhalfNV *v);
+typedef void (WINE_GLAPI * PGLFNVERTEX4HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
+typedef void (WINE_GLAPI * PGLFNVERTEX4HVNVPROC) (const GLhalfNV *v);
+typedef void (WINE_GLAPI * PGLFNNORMAL3HNVPROC) (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz);
+typedef void (WINE_GLAPI * PGLFNNORMAL3HVNVPROC) (const GLhalfNV *v);
+typedef void (WINE_GLAPI * PGLFNCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
+typedef void (WINE_GLAPI * PGLFNCOLOR3HVNVPROC) (const GLhalfNV *v);
+typedef void (WINE_GLAPI * PGLFNCOLOR4HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha);
+typedef void (WINE_GLAPI * PGLFNCOLOR4HVNVPROC) (const GLhalfNV *v);
+typedef void (WINE_GLAPI * PGLFNTEXCOORD1HNVPROC) (GLhalfNV s);
+typedef void (WINE_GLAPI * PGLFNTEXCOORD1HVNVPROC) (const GLhalfNV *v);
+typedef void (WINE_GLAPI * PGLFNTEXCOORD2HNVPROC) (GLhalfNV s, GLhalfNV t);
+typedef void (WINE_GLAPI * PGLFNTEXCOORD2HVNVPROC) (const GLhalfNV *v);
+typedef void (WINE_GLAPI * PGLFNTEXCOORD3HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r);
+typedef void (WINE_GLAPI * PGLFNTEXCOORD3HVNVPROC) (const GLhalfNV *v);
+typedef void (WINE_GLAPI * PGLFNTEXCOORD4HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
+typedef void (WINE_GLAPI * PGLFNTEXCOORD4HVNVPROC) (const GLhalfNV *v);
+typedef void (WINE_GLAPI * PGLFNMULTITEXCOORD1HNVPROC) (GLenum target, GLhalfNV s);
+typedef void (WINE_GLAPI * PGLFNMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalfNV *v);
+typedef void (WINE_GLAPI * PGLFNMULTITEXCOORD2HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t);
+typedef void (WINE_GLAPI * PGLFNMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalfNV *v);
+typedef void (WINE_GLAPI * PGLFNMULTITEXCOORD3HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r);
+typedef void (WINE_GLAPI * PGLFNMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalfNV *v);
+typedef void (WINE_GLAPI * PGLFNMULTITEXCOORD4HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
+typedef void (WINE_GLAPI * PGLFNMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalfNV *v);
+typedef void (WINE_GLAPI * PGLFNFOGCOORDHNVPROC) (GLhalfNV fog);
+typedef void (WINE_GLAPI * PGLFNFOGCOORDHVNVPROC) (const GLhalfNV *fog);
+typedef void (WINE_GLAPI * PGLFNSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
+typedef void (WINE_GLAPI * PGLFNSECONDARYCOLOR3HVNVPROC) (const GLhalfNV *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXWEIGHTHNVPROC) (GLhalfNV weight);
+typedef void (WINE_GLAPI * PGLFNVERTEXWEIGHTHVNVPROC) (const GLhalfNV *weight);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB1HNVPROC) (GLuint index, GLhalfNV x);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalfNV *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB2HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalfNV *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB3HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalfNV *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalfNV *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
+
+/* GL_NV_fog_distance */
+#ifndef GL_NV_fog_distance
+#define GL_NV_fog_distance 1
+#define GL_FOG_DISTANCE_MODE_NV           0x855A
+#define GL_EYE_RADIAL_NV                  0x855B
+#define GL_EYE_PLANE_ABSOLUTE_NV          0x855C
+/* reuse GL_EYE_PLANE */
+#endif
+/* GL_NV_texgen_reflection */
+#ifndef GL_NV_texgen_reflection
+#define GL_NV_texgen_reflection 1
+#define GL_NORMAL_MAP_NV                  0x8511
+#define GL_REFLECTION_MAP_NV              0x8512
+#endif
+/* GL_NV_texture_env_combine4 */
+#ifndef GL_NV_texture_env_combine4
+#define GL_NV_texture_env_combine4 1
+#define GL_COMBINE4_NV                    0x8503
+#define GL_SOURCE3_RGB_NV                 0x8583
+#define GL_SOURCE3_ALPHA_NV               0x858B
+#define GL_OPERAND3_RGB_NV                0x8593
+#define GL_OPERAND3_ALPHA_NV              0x859B
+#endif
+/* GL_NV_register_combiners */
+#ifndef GL_NV_register_combiners
+#define GL_NV_register_combiners 1
+#define GL_REGISTER_COMBINERS_NV          0x8522
+#define GL_VARIABLE_A_NV                  0x8523
+#define GL_VARIABLE_B_NV                  0x8524
+#define GL_VARIABLE_C_NV                  0x8525
+#define GL_VARIABLE_D_NV                  0x8526
+#define GL_VARIABLE_E_NV                  0x8527
+#define GL_VARIABLE_F_NV                  0x8528
+#define GL_VARIABLE_G_NV                  0x8529
+#define GL_CONSTANT_COLOR0_NV             0x852A
+#define GL_CONSTANT_COLOR1_NV             0x852B
+#define GL_PRIMARY_COLOR_NV               0x852C
+#define GL_SECONDARY_COLOR_NV             0x852D
+#define GL_SPARE0_NV                      0x852E
+#define GL_SPARE1_NV                      0x852F
+#define GL_DISCARD_NV                     0x8530
+#define GL_E_TIMES_F_NV                   0x8531
+#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532
+#define GL_UNSIGNED_IDENTITY_NV           0x8536
+#define GL_UNSIGNED_INVERT_NV             0x8537
+#define GL_EXPAND_NORMAL_NV               0x8538
+#define GL_EXPAND_NEGATE_NV               0x8539
+#define GL_HALF_BIAS_NORMAL_NV            0x853A
+#define GL_HALF_BIAS_NEGATE_NV            0x853B
+#define GL_SIGNED_IDENTITY_NV             0x853C
+#define GL_SIGNED_NEGATE_NV               0x853D
+#define GL_SCALE_BY_TWO_NV                0x853E
+#define GL_SCALE_BY_FOUR_NV               0x853F
+#define GL_SCALE_BY_ONE_HALF_NV           0x8540
+#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV   0x8541
+#define GL_COMBINER_INPUT_NV              0x8542
+#define GL_COMBINER_MAPPING_NV            0x8543
+#define GL_COMBINER_COMPONENT_USAGE_NV    0x8544
+#define GL_COMBINER_AB_DOT_PRODUCT_NV     0x8545
+#define GL_COMBINER_CD_DOT_PRODUCT_NV     0x8546
+#define GL_COMBINER_MUX_SUM_NV            0x8547
+#define GL_COMBINER_SCALE_NV              0x8548
+#define GL_COMBINER_BIAS_NV               0x8549
+#define GL_COMBINER_AB_OUTPUT_NV          0x854A
+#define GL_COMBINER_CD_OUTPUT_NV          0x854B
+#define GL_COMBINER_SUM_OUTPUT_NV         0x854C
+#define GL_MAX_GENERAL_COMBINERS_NV       0x854D
+#define GL_NUM_GENERAL_COMBINERS_NV       0x854E
+#define GL_COLOR_SUM_CLAMP_NV             0x854F
+#define GL_COMBINER0_NV                   0x8550
+#define GL_COMBINER1_NV                   0x8551
+#define GL_COMBINER2_NV                   0x8552
+#define GL_COMBINER3_NV                   0x8553
+#define GL_COMBINER4_NV                   0x8554
+#define GL_COMBINER5_NV                   0x8555
+#define GL_COMBINER6_NV                   0x8556
+#define GL_COMBINER7_NV                   0x8557
+/* reuse GL_TEXTURE0_ARB */
+/* reuse GL_TEXTURE1_ARB */
+/* reuse GL_ZERO */
+/* reuse GL_NONE */
+/* reuse GL_FOG */
+#endif
+typedef void (WINE_GLAPI * PGLFNCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params);
+typedef void (WINE_GLAPI * PGLFNCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param);
+typedef void (WINE_GLAPI * PGLFNCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint *params);
+typedef void (WINE_GLAPI * PGLFNCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param);
+typedef void (WINE_GLAPI * PGLFNCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
+typedef void (WINE_GLAPI * PGLFNCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);
+typedef void (WINE_GLAPI * PGLFNFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
+typedef void (WINE_GLAPI * PGLFNGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params);
+typedef void (WINE_GLAPI * PGLFNGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params);
+typedef void (WINE_GLAPI * PGLFNGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat *params);
+typedef void (WINE_GLAPI * PGLFNGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint *params);
+typedef void (WINE_GLAPI * PGLFNGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat *params);
+typedef void (WINE_GLAPI * PGLFNGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint *params);
+/* GL_NV_register_combiners2 */
+#ifndef GL_NV_register_combiners2
+#define GL_NV_register_combiners2 1
+#define GL_PER_STAGE_CONSTANTS_NV         0x8535
+#endif
+typedef void (WINE_GLAPI * PGLFNCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat *params);
+typedef void (WINE_GLAPI * PGLFNGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat *params);
+/* GL_NV_texture_shader */
+#ifndef GL_NV_texture_shader
+#define GL_NV_texture_shader 1
+#define GL_OFFSET_TEXTURE_RECTANGLE_NV    0x864C
+#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D
+#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E
+#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9
+#define GL_UNSIGNED_INT_S8_S8_8_8_NV      0x86DA
+#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV  0x86DB
+#define GL_DSDT_MAG_INTENSITY_NV          0x86DC
+#define GL_SHADER_CONSISTENT_NV           0x86DD
+#define GL_TEXTURE_SHADER_NV              0x86DE
+#define GL_SHADER_OPERATION_NV            0x86DF
+#define GL_CULL_MODES_NV                  0x86E0
+#define GL_OFFSET_TEXTURE_MATRIX_NV       0x86E1
+#define GL_OFFSET_TEXTURE_SCALE_NV        0x86E2
+#define GL_OFFSET_TEXTURE_BIAS_NV         0x86E3
+#define GL_OFFSET_TEXTURE_2D_MATRIX_NV    GL_OFFSET_TEXTURE_MATRIX_NV
+#define GL_OFFSET_TEXTURE_2D_SCALE_NV     GL_OFFSET_TEXTURE_SCALE_NV
+#define GL_OFFSET_TEXTURE_2D_BIAS_NV      GL_OFFSET_TEXTURE_BIAS_NV
+#define GL_PREVIOUS_TEXTURE_INPUT_NV      0x86E4
+#define GL_CONST_EYE_NV                   0x86E5
+#define GL_PASS_THROUGH_NV                0x86E6
+#define GL_CULL_FRAGMENT_NV               0x86E7
+#define GL_OFFSET_TEXTURE_2D_NV           0x86E8
+#define GL_DEPENDENT_AR_TEXTURE_2D_NV     0x86E9
+#define GL_DEPENDENT_GB_TEXTURE_2D_NV     0x86EA
+#define GL_DOT_PRODUCT_NV                 0x86EC
+#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV   0x86ED
+#define GL_DOT_PRODUCT_TEXTURE_2D_NV      0x86EE
+#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0
+#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1
+#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2
+#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3
+#define GL_HILO_NV                        0x86F4
+#define GL_DSDT_NV                        0x86F5
+#define GL_DSDT_MAG_NV                    0x86F6
+#define GL_DSDT_MAG_VIB_NV                0x86F7
+#define GL_HILO16_NV                      0x86F8
+#define GL_SIGNED_HILO_NV                 0x86F9
+#define GL_SIGNED_HILO16_NV               0x86FA
+#define GL_SIGNED_RGBA_NV                 0x86FB
+#define GL_SIGNED_RGBA8_NV                0x86FC
+#define GL_SIGNED_RGB_NV                  0x86FE
+#define GL_SIGNED_RGB8_NV                 0x86FF
+#define GL_SIGNED_LUMINANCE_NV            0x8701
+#define GL_SIGNED_LUMINANCE8_NV           0x8702
+#define GL_SIGNED_LUMINANCE_ALPHA_NV      0x8703
+#define GL_SIGNED_LUMINANCE8_ALPHA8_NV    0x8704
+#define GL_SIGNED_ALPHA_NV                0x8705
+#define GL_SIGNED_ALPHA8_NV               0x8706
+#define GL_SIGNED_INTENSITY_NV            0x8707
+#define GL_SIGNED_INTENSITY8_NV           0x8708
+#define GL_DSDT8_NV                       0x8709
+#define GL_DSDT8_MAG8_NV                  0x870A
+#define GL_DSDT8_MAG8_INTENSITY8_NV       0x870B
+#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV   0x870C
+#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D
+#define GL_HI_SCALE_NV                    0x870E
+#define GL_LO_SCALE_NV                    0x870F
+#define GL_DS_SCALE_NV                    0x8710
+#define GL_DT_SCALE_NV                    0x8711
+#define GL_MAGNITUDE_SCALE_NV             0x8712
+#define GL_VIBRANCE_SCALE_NV              0x8713
+#define GL_HI_BIAS_NV                     0x8714
+#define GL_LO_BIAS_NV                     0x8715
+#define GL_DS_BIAS_NV                     0x8716
+#define GL_DT_BIAS_NV                     0x8717
+#define GL_MAGNITUDE_BIAS_NV              0x8718
+#define GL_VIBRANCE_BIAS_NV               0x8719
+#define GL_TEXTURE_BORDER_VALUES_NV       0x871A
+#define GL_TEXTURE_HI_SIZE_NV             0x871B
+#define GL_TEXTURE_LO_SIZE_NV             0x871C
+#define GL_TEXTURE_DS_SIZE_NV             0x871D
+#define GL_TEXTURE_DT_SIZE_NV             0x871E
+#define GL_TEXTURE_MAG_SIZE_NV            0x871F
+#endif
+/* GL_NV_texture_shader2 */
+#ifndef GL_NV_texture_shader2
+#define GL_NV_texture_shader2 1
+#define GL_DOT_PRODUCT_TEXTURE_3D_NV      0x86EF
+#endif
+/* GL_NV_texture_shader3 */
+#ifndef GL_NV_texture_shader3
+#define GL_NV_texture_shader3 1
+#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850
+#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851
+#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852
+#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853
+#define GL_OFFSET_HILO_TEXTURE_2D_NV      0x8854
+#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855
+#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856
+#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857
+#define GL_DEPENDENT_HILO_TEXTURE_2D_NV   0x8858
+#define GL_DEPENDENT_RGB_TEXTURE_3D_NV    0x8859
+#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A
+#define GL_DOT_PRODUCT_PASS_THROUGH_NV    0x885B
+#define GL_DOT_PRODUCT_TEXTURE_1D_NV      0x885C
+#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D
+#define GL_HILO8_NV                       0x885E
+#define GL_SIGNED_HILO8_NV                0x885F
+#define GL_FORCE_BLUE_TO_ONE_NV           0x8860
+#endif
+/* GL_ATI_texture_env_combine3 */
+#ifndef GL_ATI_texture_env_combine3
+#define GL_ATI_texture_env_combine3 1
+#define GL_MODULATE_ADD_ATI               0x8744
+#define GL_MODULATE_SIGNED_ADD_ATI        0x8745
+#define GL_MODULATE_SUBTRACT_ATI          0x8746
+/* #define ONE */
+/* #define ZERO */
+#endif
+
+/**
+ * Point sprites
+ */
+/* GL_ARB_point_sprite */
+#ifndef GL_ARB_point_sprite
+#define GL_ARB_point_sprite 1
+#define GL_POINT_SPRITE_ARB               0x8861
+#define GL_COORD_REPLACE_ARB              0x8862
+#endif
+/**
+ * @TODO: GL_NV_point_sprite
+ */
+
+/**
+ * Occlusion Queries
+ */
+/* GL_ARB_occlusion_query */
+#ifndef GL_ARB_occlusion_query
+#define GL_ARB_occlusion_query 1
+#define GL_SAMPLES_PASSED_ARB                             0x8914
+#define GL_QUERY_COUNTER_BITS_ARB                         0x8864
+#define GL_CURRENT_QUERY_ARB                              0x8865
+#define GL_QUERY_RESULT_ARB                               0x8866
+#define GL_QUERY_RESULT_AVAILABLE_ARB                     0x8867
+#endif
+typedef void (WINE_GLAPI * PGLFNGENQUERIESARBPROC) (GLsizei n, GLuint *queries);
+typedef void (WINE_GLAPI * PGLFNDELETEQUERIESARBPROC) (GLsizei n, const GLuint *queries);
+typedef GLboolean (WINE_GLAPI * PGLFNISQUERYARBPROC) (GLuint query);
+typedef void (WINE_GLAPI * PGLFNBEGINQUERYARBPROC) (GLenum target, GLuint query);
+typedef void (WINE_GLAPI * PGLFNENDQUERYARBPROC) (GLenum target);
+typedef void (WINE_GLAPI * PGLFNGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (WINE_GLAPI * PGLFNGETQUERYOBJECTIVARBPROC) (GLuint query, GLenum pname, GLint *params);
+typedef void (WINE_GLAPI * PGLFNGETQUERYOBJECTUIVARBPROC) (GLuint query, GLenum pname, GLuint *params);
+/* GL_HP_occlusion_test isn't complete, but it's constants are used by GL_NV_occlusion_query */
+#ifndef GL_HP_occlusion_test
+#define GL_HP_occlusion_test 1
+#define GL_OCCLUSION_TEST_HP                 0x8165
+#define GL_OCCLUSION_TEST_RESULT_HP          0x8165
+#endif
+/*  GL_NV_occlusion_query */
+#ifndef GL_NV_occlusion_query
+#define GL_NV_occlusion_query 1
+#define GL_PIXEL_COUNTER_BITS_NV          0x8864
+#define GL_CURRENT_OCCLUSION_QUERY_ID_NV  0x8865
+#define GL_PIXEL_COUNT_NV                 0x8866
+#define GL_PIXEL_COUNT_AVAILABLE_NV       0x8867
+#endif
+typedef void (WINE_GLAPI * PGLFNGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids);
+typedef void (WINE_GLAPI * PGLFNDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids);
+typedef GLboolean (WINE_GLAPI * PGLFNISOCCLUSIONQUERYNVPROC) (GLuint id);
+typedef void (WINE_GLAPI * PGLFNBEGINOCCLUSIONQUERYNVPROC) (GLuint id);
+typedef void (WINE_GLAPI * PGLFNENDOCCLUSIONQUERYNVPROC) (void);
+typedef void (WINE_GLAPI * PGLFNGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint *params);
+typedef void (WINE_GLAPI * PGLFNGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint *params);
+/* GL_EXT_stencil_two_side */
+#ifndef GL_EXT_stencil_two_side
+#define GL_EXT_stencil_two_side 1
+#define GL_STENCIL_TEST_TWO_SIDE_EXT      0x8910
+#define GL_ACTIVE_STENCIL_FACE_EXT        0x8911
+#endif
+typedef void (WINE_GLAPI * PGLFNACTIVESTENCILFACEEXTPROC) (GLenum face);
+/* GL_ATI_separate_stencil */
+#ifndef GL_ATI_separate_stencil
+#define GL_ATI_separate_stencil 1
+#define GL_STENCIL_BACK_FUNC_ATI          0x8800
+#define GL_STENCIL_BACK_FAIL_ATI          0x8801
+#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802
+#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803
+#endif
+typedef void (WINE_GLAPI * PGLFNSTENCILOPSEPARATEATIPROC) (GLenum, GLenum, GLenum, GLenum);
+typedef void (WINE_GLAPI * PGLFNSTENCILFUNCSEPARATEATIPROC) (GLenum, GLenum, GLint, GLuint);
+/* GL_NV_fence */
+#ifndef GL_NV_fence
+#define GL_NV_fence 1
+#define GL_ALL_COMPLETED_NV                 0x84F2
+#define GL_FENCE_STATUS_NV                  0x84F3
+#define GL_FENCE_CONDITION_NV               0x84F4
+#endif
+typedef void (WINE_GLAPI * PGLFNGENFENCESNVPROC) (GLsizei, GLuint *);
+typedef void (WINE_GLAPI * PGLFNDELETEFENCESNVPROC) (GLuint, const GLuint *);
+typedef void (WINE_GLAPI * PGLFNSETFENCENVPROC) (GLuint, GLenum);
+typedef GLboolean (WINE_GLAPI * PGLFNTESTFENCENVPROC) (GLuint);
+typedef void (WINE_GLAPI * PGLFNFINISHFENCENVPROC) (GLuint);
+typedef GLboolean (WINE_GLAPI * PGLFNISFENCENVPROC) (GLuint);
+typedef void (WINE_GLAPI * PGLFNGETFENCEIVNVPROC) (GLuint, GLenum, GLint *);
+/* GL_APPLE_fence */
+#ifndef GL_APPLE_fence
+#define GL_APPLE_fence 1
+#define GL_DRAW_PIXELS_APPLE                0x8A0A
+#define GL_FENCE_APPLE                      0x84F3
+#endif
+typedef void (WINE_GLAPI * PGLFNGENFENCESAPPLEPROC) (GLsizei, GLuint *);
+typedef void (WINE_GLAPI * PGLFNDELETEFENCESAPPLEPROC) (GLuint, const GLuint *);
+typedef void (WINE_GLAPI * PGLFNSETFENCEAPPLEPROC) (GLuint);
+typedef GLboolean (WINE_GLAPI * PGLFNTESTFENCEAPPLEPROC) (GLuint);
+typedef void (WINE_GLAPI * PGLFNFINISHFENCEAPPLEPROC) (GLuint);
+typedef GLboolean (WINE_GLAPI * PGLFNISFENCEAPPLEPROC) (GLuint);
+typedef GLboolean (WINE_GLAPI * PGLFNTESTOBJECTAPPLEPROC) (GLenum, GLuint);
+typedef void (WINE_GLAPI * PGLFNFINISHOBJECTAPPLEPROC) (GLenum, GLuint);
+/* GL_APPLE_client_storage */
+#ifndef GL_APPLE_client_storage
+#define GL_APPLE_client_storage 1
+#define GL_UNPACK_CLIENT_STORAGE_APPLE      0x85B2
+#endif
+/* GLX_SGI_video_sync */
+typedef int (WINE_GLAPI * PGLXFNGETVIDEOSYNCSGIPROC) (unsigned int *);
+typedef int (WINE_GLAPI * PGLXFNWAITVIDEOSYNCSGIPROC) (int, int, unsigned int *);
+
+/* GL_SGIS_generate_mipmap */
+#ifndef GLX_SGIS_generate_mipmap
+#define GL_GENERATE_MIPMAP_SGIS             0x8191
+#define GL_GENERATE_MIPMAP_HINT_SGIS        0x8192
+#define GLX_SGIS_generate_mipmap
+#endif
+
+/* GL_NV_depth_clamp */
+#ifndef GL_NV_depth_clamp
+#define GL_DEPTH_CLAMP_NV                   0x864F
+#endif
+
+/* GL_APPLE_flush_render */
+typedef void (WINE_GLAPI * PGLFNFLUSHRENDERAPPLEPROC) (void);
+typedef void (WINE_GLAPI * PGLFNFINISHRENDERAPPLEPROC) (void);
+
+/* GL_APPLE_ycbcr_422 */
+#ifndef GL_APPLE_ycbcr_422
+#define GL_APPLE_ycbcr_422
+#define GL_YCBCR_422_APPLE                  0x85B9
+#define UNSIGNED_SHORT_8_8_APPLE            0x85BA
+#define UNSIGNED_SHORT_8_8_REV_APPLE        0x85BB
+#endif
+
+/* GL_ARB_texture_rectangle */
+#ifndef GL_ARB_texture_rectangle
+#define GL_ARB_texture_rectangle
+#define GL_TEXTURE_RECTANGLE_ARB            0x84F5
+#define GL_TEXTURE_BINDING_RECTANGLE_ARB    0x84F6
+#define GL_PROXY_TEXTURE_RECTANGLE_ARB      0x84F7
+#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB   0x84F8
+#define GL_SAMPLER_2D_RECT_ARB              0x8B63
+#define GL_SAMPLER_2D_RECT_SHADOW_ARB       0x8B64
+#endif
+
+/* GL_APPLE_float_pixels */
+#ifndef GL_APPLE_float_pixels
+#define GL_APPLE_float_pixels
+#define GL_HALF_APPLE                       0x140B
+#define GL_COLOR_FLOAT_APPLE                0x8A0F
+#define GL_RGBA_FLOAT32_APPLE               0x8814
+#define GL_RGB_FLOAT32_APPLE                0x8815
+#define GL_ALPHA_FLOAT32_APPLE              0x8816
+#define GL_INTENSITY_FLOAT32_APPLE          0x8817
+#define GL_LUMINANCE_FLOAT32_APPLE          0x8818
+#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE    0x8819
+#define GL_RGBA_FLOAT16_APPLE               0x881A
+#define GL_RGB_FLOAT16_APPLE                0x881B
+#define GL_ALPHA_FLOAT16_APPLE              0x881C
+#define GL_INTENSITY_FLOAT16_APPLE          0x881D
+#define GL_LUMINANCE_FLOAT16_APPLE          0x881E
+#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE    0x881F
+#endif
+
+/* GL_EXT_gpu_program_parameters */
+#ifndef GL_EXT_gpu_program_parameters
+#define GL_EXT_gpu_program_parameters
+typedef void (WINE_GLAPI * PGLFNPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const float *params);
+typedef void (WINE_GLAPI * PGLFNPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const float *params);
+#endif
+
+/* GL_NV_light_max_exponent */
+#ifndef GL_NV_light_max_exponent
+#define GL_NV_light_max_exponent
+#define GL_MAX_SHININESS_NV                 0x8504
+#define GL_MAX_SPOT_EXPONENT_NV             0x8505
+#endif
+
+/* GL_ATI_fragment_shader */
+#ifndef GL_ATI_fragment_shader
+#define GL_ATI_fragment_shader
+typedef GLuint (WINE_GLAPI *PGLFNGENFRAGMENTSHADERSATI) (GLuint range);
+typedef void (WINE_GLAPI *PGLFNBINDFRAGMENTSHADERATI) (GLuint id);
+typedef void (WINE_GLAPI *PGLFNDELETEFRAGMENTSHADERATI) (GLuint id);
+typedef void (WINE_GLAPI *PGLFNBEGINFRAGMENTSHADERATI) ();
+typedef void (WINE_GLAPI *PGLFNENDFRAGMENTSHADERATI) ();
+typedef void (WINE_GLAPI *PGLFNPASSTEXCOORDATI) (GLuint dst, GLuint coord, GLenum swizzle);
+typedef void (WINE_GLAPI *PGLFNSAMPLEMAPATI) (GLuint dst, GLuint interp, GLenum swizzle);
+typedef void (WINE_GLAPI *PGLFNCOLORFRAGMENTOP1ATI) (GLenum op, GLuint dst, GLuint dstMask,
+                                                     GLuint dstMod, GLuint arg1, GLuint arg1Rep,
+                                                     GLuint arg1Mod);
+typedef void (WINE_GLAPI *PGLFNCOLORFRAGMENTOP2ATI) (GLenum op, GLuint dst, GLuint dstMask,
+                                                     GLuint dstMod, GLuint arg1, GLuint arg1Rep,
+                                                     GLuint arg1Mod, GLuint arg2, GLuint arg2Rep,
+                                                     GLuint arg2Mod);
+typedef void (WINE_GLAPI *PGLFNCOLORFRAGMENTOP3ATI) (GLenum op, GLuint dst, GLuint dstMask,
+                                                     GLuint dstMod, GLuint arg1, GLuint arg1Rep,
+                                                     GLuint arg1Mod, GLuint arg2, GLuint arg2Rep,
+                                                     GLuint arg2Mod, GLuint arg3, GLuint arg3Rep,
+                                                     GLuint arg3Mod);
+typedef void (WINE_GLAPI *PGLFNALPHAFRAGMENTOP1ATI) (GLenum op, GLuint dst, GLuint dstMod,
+                                                     GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
+typedef void (WINE_GLAPI *PGLFNALPHAFRAGMENTOP2ATI) (GLenum op, GLuint dst, GLuint dstMod,
+                                                     GLuint arg1, GLuint arg1Rep, GLuint arg1Mod,
+                                                     GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
+typedef void (WINE_GLAPI *PGLFNALPHAFRAGMENTOP3ATI) (GLenum op, GLuint dst, GLuint dstMod,
+                                                     GLuint arg1, GLuint arg1Rep, GLuint arg1Mod,
+                                                     GLuint arg2, GLuint arg2Rep, GLuint arg2Mod,
+                                                     GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
+typedef void (WINE_GLAPI *PGLFNSETFRAGMENTSHADERCONSTANTATI) (GLuint dst, const GLfloat *value);
+#define GL_FRAGMENT_SHADER_ATI              0x8920
+#define GL_REG_0_ATI                        0x8921
+#define GL_REG_1_ATI                        0x8922
+#define GL_REG_2_ATI                        0x8923
+#define GL_REG_3_ATI                        0x8924
+#define GL_REG_4_ATI                        0x8925
+#define GL_REG_5_ATI                        0x8926
+#define GL_CON_0_ATI                        0x8941
+#define GL_CON_1_ATI                        0x8942
+#define GL_CON_2_ATI                        0x8943
+#define GL_CON_3_ATI                        0x8944
+#define GL_CON_4_ATI                        0x8945
+#define GL_CON_5_ATI                        0x8946
+#define GL_CON_6_ATI                        0x8947
+#define GL_CON_7_ATI                        0x8948
+#define GL_MOV_ATI                          0x8961
+#define GL_ADD_ATI                          0x8963
+#define GL_MUL_ATI                          0x8964
+#define GL_SUB_ATI                          0x8965
+#define GL_DOT3_ATI                         0x8966
+#define GL_DOT4_ATI                         0x8967
+#define GL_MAD_ATI                          0x8968
+#define GL_LERP_ATI                         0x8969
+#define GL_CND_ATI                          0x896A
+#define GL_CND0_ATI                         0x896B
+#define GL_DOT2_ADD_ATI                     0x896C
+#define GL_SECONDARY_INTERPOLATOR_ATI       0x896D
+#define GL_SWIZZLE_STR_ATI                  0x8976
+#define GL_SWIZZLE_STQ_ATI                  0x8977
+#define GL_SWIZZLE_STR_DR_ATI               0x8978
+#define GL_SWIZZLE_STQ_DQ_ATI               0x8979
+#define GL_RED_BIT_ATI                      0x00000001
+#define GL_GREEN_BIT_ATI                    0x00000002
+#define GL_BLUE_BIT_ATI                     0x00000004
+#define GL_2X_BIT_ATI                       0x00000001
+#define GL_4X_BIT_ATI                       0x00000002
+#define GL_8X_BIT_ATI                       0x00000004
+#define GL_HALF_BIT_ATI                     0x00000008
+#define GL_QUARTER_BIT_ATI                  0x00000010
+#define GL_EIGHTH_BIT_ATI                   0x00000020
+#define GL_SATURATE_BIT_ATI                 0x00000040
+#define GL_2X_BIT_ATI                       0x00000001
+#define GL_COMP_BIT_ATI                     0x00000002
+#define GL_NEGATE_BIT_ATI                   0x00000004
+#define GL_BIAS_BIT_ATI                     0x00000008
+#endif
+/* GL_ATI_texture_compression_3dc */
+#ifndef GL_ATI_texture_compression_3dc
+#define GL_ATI_texture_compression_3dc
+#define GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI 0x8837
+#endif
+/* GL_EXT_texture_compression_rgtc */
+#ifndef GL_EXT_texture_compression_rgtc
+#define GL_EXT_texture_compression_rgtc
+#define GL_COMPRESSED_RED_RGTC1_EXT                       0x8DBB
+#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT                0x8DBC
+#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT                 0x8DBD
+#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT          0x8DBE
+#endif
+
+/* GL_VERSION_2_0 */
+#ifndef GL_VERSION_2_0
+#define GL_VERSION_2_0 1
+#define GL_BLEND_EQUATION_RGB             GL_BLEND_EQUATION
+#define GL_VERTEX_ATTRIB_ARRAY_ENABLED    0x8622
+#define GL_VERTEX_ATTRIB_ARRAY_SIZE       0x8623
+#define GL_VERTEX_ATTRIB_ARRAY_STRIDE     0x8624
+#define GL_VERTEX_ATTRIB_ARRAY_TYPE       0x8625
+#define GL_CURRENT_VERTEX_ATTRIB          0x8626
+#define GL_VERTEX_PROGRAM_POINT_SIZE      0x8642
+#define GL_VERTEX_PROGRAM_TWO_SIDE        0x8643
+#define GL_VERTEX_ATTRIB_ARRAY_POINTER    0x8645
+#define GL_STENCIL_BACK_FUNC              0x8800
+#define GL_STENCIL_BACK_FAIL              0x8801
+#define GL_STENCIL_BACK_PASS_DEPTH_FAIL   0x8802
+#define GL_STENCIL_BACK_PASS_DEPTH_PASS   0x8803
+#define GL_MAX_DRAW_BUFFERS               0x8824
+#define GL_DRAW_BUFFER0                   0x8825
+#define GL_DRAW_BUFFER1                   0x8826
+#define GL_DRAW_BUFFER2                   0x8827
+#define GL_DRAW_BUFFER3                   0x8828
+#define GL_DRAW_BUFFER4                   0x8829
+#define GL_DRAW_BUFFER5                   0x882A
+#define GL_DRAW_BUFFER6                   0x882B
+#define GL_DRAW_BUFFER7                   0x882C
+#define GL_DRAW_BUFFER8                   0x882D
+#define GL_DRAW_BUFFER9                   0x882E
+#define GL_DRAW_BUFFER10                  0x882F
+#define GL_DRAW_BUFFER11                  0x8830
+#define GL_DRAW_BUFFER12                  0x8831
+#define GL_DRAW_BUFFER13                  0x8832
+#define GL_DRAW_BUFFER14                  0x8833
+#define GL_DRAW_BUFFER15                  0x8834
+#define GL_BLEND_EQUATION_ALPHA           0x883D
+#define GL_POINT_SPRITE                   0x8861
+#define GL_COORD_REPLACE                  0x8862
+#define GL_MAX_VERTEX_ATTRIBS             0x8869
+#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A
+#define GL_MAX_TEXTURE_COORDS             0x8871
+#define GL_MAX_TEXTURE_IMAGE_UNITS        0x8872
+#define GL_FRAGMENT_SHADER                0x8B30
+#define GL_VERTEX_SHADER                  0x8B31
+#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49
+#define GL_MAX_VERTEX_UNIFORM_COMPONENTS  0x8B4A
+#define GL_MAX_VARYING_FLOATS             0x8B4B
+#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C
+#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
+#define GL_SHADER_TYPE                    0x8B4F
+#define GL_FLOAT_VEC2                     0x8B50
+#define GL_FLOAT_VEC3                     0x8B51
+#define GL_FLOAT_VEC4                     0x8B52
+#define GL_INT_VEC2                       0x8B53
+#define GL_INT_VEC3                       0x8B54
+#define GL_INT_VEC4                       0x8B55
+#define GL_BOOL                           0x8B56
+#define GL_BOOL_VEC2                      0x8B57
+#define GL_BOOL_VEC3                      0x8B58
+#define GL_BOOL_VEC4                      0x8B59
+#define GL_FLOAT_MAT2                     0x8B5A
+#define GL_FLOAT_MAT3                     0x8B5B
+#define GL_FLOAT_MAT4                     0x8B5C
+#define GL_SAMPLER_1D                     0x8B5D
+#define GL_SAMPLER_2D                     0x8B5E
+#define GL_SAMPLER_3D                     0x8B5F
+#define GL_SAMPLER_CUBE                   0x8B60
+#define GL_SAMPLER_1D_SHADOW              0x8B61
+#define GL_SAMPLER_2D_SHADOW              0x8B62
+#define GL_DELETE_STATUS                  0x8B80
+#define GL_COMPILE_STATUS                 0x8B81
+#define GL_LINK_STATUS                    0x8B82
+#define GL_VALIDATE_STATUS                0x8B83
+#define GL_INFO_LOG_LENGTH                0x8B84
+#define GL_ATTACHED_SHADERS               0x8B85
+#define GL_ACTIVE_UNIFORMS                0x8B86
+#define GL_ACTIVE_UNIFORM_MAX_LENGTH      0x8B87
+#define GL_SHADER_SOURCE_LENGTH           0x8B88
+#define GL_ACTIVE_ATTRIBUTES              0x8B89
+#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH    0x8B8A
+#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B
+#define GL_SHADING_LANGUAGE_VERSION       0x8B8C
+#define GL_CURRENT_PROGRAM                0x8B8D
+#define GL_POINT_SPRITE_COORD_ORIGIN      0x8CA0
+#define GL_LOWER_LEFT                     0x8CA1
+#define GL_UPPER_LEFT                     0x8CA2
+#define GL_STENCIL_BACK_REF               0x8CA3
+#define GL_STENCIL_BACK_VALUE_MASK        0x8CA4
+#define GL_STENCIL_BACK_WRITEMASK         0x8CA5
+typedef char GLchar;
+#endif
+typedef void (WINE_GLAPI * PGLFNBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);
+typedef void (WINE_GLAPI * PGLFNDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs);
+typedef void (WINE_GLAPI * PGLFNSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
+typedef void (WINE_GLAPI * PGLFNSTENCILFUNCSEPARATEPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
+typedef void (WINE_GLAPI * PGLFNSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask);
+typedef void (WINE_GLAPI * PGLFNATTACHSHADERPROC) (GLuint program, GLuint shader);
+typedef void (WINE_GLAPI * PGLFNBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name);
+typedef void (WINE_GLAPI * PGLFNCOMPILESHADERPROC) (GLuint shader);
+typedef GLuint (WINE_GLAPI * PGLFNCREATEPROGRAMPROC) (void);
+typedef GLuint (WINE_GLAPI * PGLFNCREATESHADERPROC) (GLenum type);
+typedef void (WINE_GLAPI * PGLFNDELETEPROGRAMPROC) (GLuint program);
+typedef void (WINE_GLAPI * PGLFNDELETESHADERPROC) (GLuint shader);
+typedef void (WINE_GLAPI * PGLFNDETACHSHADERPROC) (GLuint program, GLuint shader);
+typedef void (WINE_GLAPI * PGLFNDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);
+typedef void (WINE_GLAPI * PGLFNENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
+typedef void (WINE_GLAPI * PGLFNGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
+typedef void (WINE_GLAPI * PGLFNGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
+typedef void (WINE_GLAPI * PGLFNGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj);
+typedef GLint (WINE_GLAPI * PGLFNGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name);
+typedef void (WINE_GLAPI * PGLFNGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params);
+typedef void (WINE_GLAPI * PGLFNGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
+typedef void (WINE_GLAPI * PGLFNGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);
+typedef void (WINE_GLAPI * PGLFNGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
+typedef void (WINE_GLAPI * PGLFNGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
+typedef GLint (WINE_GLAPI * PGLFNGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name);
+typedef void (WINE_GLAPI * PGLFNGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params);
+typedef void (WINE_GLAPI * PGLFNGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params);
+typedef void (WINE_GLAPI * PGLFNGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params);
+typedef void (WINE_GLAPI * PGLFNGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params);
+typedef void (WINE_GLAPI * PGLFNGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params);
+typedef void (WINE_GLAPI * PGLFNGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, GLvoid* *pointer);
+typedef GLboolean (WINE_GLAPI * PGLFNISPROGRAMPROC) (GLuint program);
+typedef GLboolean (WINE_GLAPI * PGLFNISSHADERPROC) (GLuint shader);
+typedef void (WINE_GLAPI * PGLFNLINKPROGRAMPROC) (GLuint program);
+typedef void (WINE_GLAPI * PGLFNSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar* *string, const GLint *length);
+typedef void (WINE_GLAPI * PGLFNUSEPROGRAMPROC) (GLuint program);
+typedef void (WINE_GLAPI * PGLFNUNIFORM1FPROC) (GLint location, GLfloat v0);
+typedef void (WINE_GLAPI * PGLFNUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1);
+typedef void (WINE_GLAPI * PGLFNUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+typedef void (WINE_GLAPI * PGLFNUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+typedef void (WINE_GLAPI * PGLFNUNIFORM1IPROC) (GLint location, GLint v0);
+typedef void (WINE_GLAPI * PGLFNUNIFORM2IPROC) (GLint location, GLint v0, GLint v1);
+typedef void (WINE_GLAPI * PGLFNUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2);
+typedef void (WINE_GLAPI * PGLFNUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+typedef void (WINE_GLAPI * PGLFNUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (WINE_GLAPI * PGLFNUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (WINE_GLAPI * PGLFNUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (WINE_GLAPI * PGLFNUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (WINE_GLAPI * PGLFNUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (WINE_GLAPI * PGLFNUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (WINE_GLAPI * PGLFNUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (WINE_GLAPI * PGLFNUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (WINE_GLAPI * PGLFNUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (WINE_GLAPI * PGLFNUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (WINE_GLAPI * PGLFNUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (WINE_GLAPI * PGLFNVALIDATEPROGRAMPROC) (GLuint program);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB1DPROC) (GLuint index, GLdouble x);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB1FPROC) (GLuint index, GLfloat x);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB1SPROC) (GLuint index, GLshort x);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v);
+typedef void (WINE_GLAPI * PGLFNVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
+
+
+/****************************************************
+ * OpenGL Official Version
+ *  defines
+ ****************************************************/
+/* GL_VERSION_1_3 */
+#if !defined(GL_DOT3_RGBA)
+# define GL_DOT3_RGBA                     0x8741
+#endif
+#if !defined(GL_SUBTRACT)
+# define GL_SUBTRACT                      0x84E7
+#endif
+
+
+/****************************************************
+ * Enumerated types
+ ****************************************************/
+typedef enum _GL_Vendors {
+  VENDOR_WINE   = 0x0,
+  VENDOR_MESA   = 0x1,
+  VENDOR_ATI    = 0x1002,
+  VENDOR_NVIDIA = 0x10de,
+  VENDOR_INTEL  = 0x8086
+} GL_Vendors;
+
+typedef enum _GL_Cards {
+  CARD_WINE                       =    0x0,
+
+  CARD_ATI_RAGE_128PRO            = 0x5246,
+  CARD_ATI_RADEON_7200            = 0x5144,
+  CARD_ATI_RADEON_8500            = 0x514c,
+  CARD_ATI_RADEON_9500            = 0x4144,
+  CARD_ATI_RADEON_X700            = 0x5e4c,
+  CARD_ATI_RADEON_X1600           = 0x71c2,
+  CARD_ATI_RADEON_HD2300          = 0x7210,
+  CARD_ATI_RADEON_HD2600          = 0x9581,
+  CARD_ATI_RADEON_HD2900          = 0x9400,
+  CARD_ATI_RADEON_HD3200          = 0x9620,
+
+  CARD_NVIDIA_RIVA_128            = 0x0018,
+  CARD_NVIDIA_RIVA_TNT            = 0x0020,
+  CARD_NVIDIA_RIVA_TNT2           = 0x0028,
+  CARD_NVIDIA_GEFORCE             = 0x0100,
+  CARD_NVIDIA_GEFORCE2_MX         = 0x0110,
+  CARD_NVIDIA_GEFORCE2            = 0x0150,
+  CARD_NVIDIA_GEFORCE3            = 0x0200,
+  CARD_NVIDIA_GEFORCE4_MX         = 0x0170,
+  CARD_NVIDIA_GEFORCE4_TI4200     = 0x0253,
+  CARD_NVIDIA_GEFORCEFX_5200      = 0x0320,
+  CARD_NVIDIA_GEFORCEFX_5600      = 0x0312,
+  CARD_NVIDIA_GEFORCEFX_5800      = 0x0302,
+  CARD_NVIDIA_GEFORCE_6200        = 0x014f,
+  CARD_NVIDIA_GEFORCE_6600GT      = 0x0140,
+  CARD_NVIDIA_GEFORCE_6800        = 0x0041,
+  CARD_NVIDIA_GEFORCE_7400        = 0x01d8,
+  CARD_NVIDIA_GEFORCE_7300        = 0x01d7, /* GeForce Go 7300 */
+  CARD_NVIDIA_GEFORCE_7600        = 0x0391,
+  CARD_NVIDIA_GEFORCE_7800GT      = 0x0092,
+  CARD_NVIDIA_GEFORCE_8300GS      = 0x0423,
+  CARD_NVIDIA_GEFORCE_8600GT      = 0x0402,
+  CARD_NVIDIA_GEFORCE_8600MGT     = 0x0407,
+  CARD_NVIDIA_GEFORCE_8800GTS     = 0x0193,
+  CARD_NVIDIA_GEFORCE_9600GT      = 0x0622,
+  CARD_NVIDIA_GEFORCE_9800GT      = 0x0614,
+  CARD_NVIDIA_GEFORCE_GTX280      = 0x05e1,
+
+  CARD_INTEL_845G                 = 0x2562,
+  CARD_INTEL_I830G                = 0x3577,
+  CARD_INTEL_I855G                = 0x3582,
+  CARD_INTEL_I865G                = 0x2572,
+  CARD_INTEL_I915G                = 0x2582,
+  CARD_INTEL_I915GM               = 0x2592,
+  CARD_INTEL_I945GM               = 0x27a2, /* Same as GMA 950?? */
+} GL_Cards;
+
+#define WINE_DEFAULT_VIDMEM 64*1024*1024
+
+typedef enum _GL_VSVersion {
+  VS_VERSION_NOT_SUPPORTED = 0x0,
+  VS_VERSION_10 = 0x10,
+  VS_VERSION_11 = 0x11,
+  VS_VERSION_20 = 0x20,
+  VS_VERSION_30 = 0x30,
+  /*Force 32-bits*/
+  VS_VERSION_FORCE_DWORD = 0x7FFFFFFF
+} GL_VSVersion;
+
+typedef enum _GL_PSVersion {
+  PS_VERSION_NOT_SUPPORTED = 0x0,
+  PS_VERSION_10 = 0x10,
+  PS_VERSION_11 = 0x11,
+  PS_VERSION_12 = 0x12,
+  PS_VERSION_13 = 0x13,
+  PS_VERSION_14 = 0x14,
+  PS_VERSION_20 = 0x20,
+  PS_VERSION_30 = 0x30,
+  /*Force 32-bits*/
+  PS_VERSION_FORCE_DWORD = 0x7FFFFFFF
+} GL_PSVersion;
+
+#define MAKEDWORD_VERSION(maj, min)  ((maj & 0x0000FFFF) << 16) | (min & 0x0000FFFF)
+
+/* OpenGL Supported Extensions (ARB and EXT) */
+typedef enum _GL_SupportedExt {
+  /* ARB */
+  ARB_COLOR_BUFFER_FLOAT,
+  ARB_DRAW_BUFFERS,
+  ARB_FRAGMENT_PROGRAM,
+  ARB_FRAGMENT_SHADER,
+  ARB_IMAGING,
+  ARB_MULTISAMPLE,
+  ARB_MULTITEXTURE,
+  ARB_OCCLUSION_QUERY,
+  ARB_POINT_PARAMETERS,
+  ARB_PIXEL_BUFFER_OBJECT,
+  ARB_POINT_SPRITE,
+  ARB_TEXTURE_COMPRESSION,
+  ARB_TEXTURE_CUBE_MAP,
+  ARB_TEXTURE_ENV_ADD,
+  ARB_TEXTURE_ENV_COMBINE,
+  ARB_TEXTURE_ENV_DOT3,
+  ARB_TEXTURE_FLOAT,
+  ARB_HALF_FLOAT_PIXEL,
+  ARB_TEXTURE_BORDER_CLAMP,
+  ARB_TEXTURE_MIRRORED_REPEAT,
+  ARB_TEXTURE_NON_POWER_OF_TWO,
+  ARB_TEXTURE_RECTANGLE,
+  ARB_VERTEX_PROGRAM,
+  ARB_VERTEX_BLEND,
+  ARB_VERTEX_BUFFER_OBJECT,
+  ARB_VERTEX_SHADER,
+  ARB_SHADER_OBJECTS,
+  /* EXT */
+  EXT_BLEND_COLOR,
+  EXT_BLEND_MINMAX,
+  EXT_BLEND_EQUATION_SEPARATE,
+  EXT_BLEND_FUNC_SEPARATE,
+  EXT_FOG_COORD,
+  EXT_FRAMEBUFFER_OBJECT,
+  EXT_FRAMEBUFFER_BLIT,
+  EXT_FRAMEBUFFER_MULTISAMPLE,
+  EXT_PALETTED_TEXTURE,
+  EXT_PIXEL_BUFFER_OBJECT,
+  EXT_POINT_PARAMETERS,
+  EXT_SECONDARY_COLOR,
+  EXT_STENCIL_TWO_SIDE,
+  EXT_STENCIL_WRAP,
+  EXT_TEXTURE3D,
+  EXT_TEXTURE_COMPRESSION_S3TC,
+  EXT_TEXTURE_COMPRESSION_RGTC,
+  EXT_TEXTURE_FILTER_ANISOTROPIC,
+  EXT_TEXTURE_LOD,
+  EXT_TEXTURE_LOD_BIAS,
+  EXT_TEXTURE_ENV_ADD,
+  EXT_TEXTURE_ENV_COMBINE,
+  EXT_TEXTURE_ENV_DOT3,
+  EXT_TEXTURE_SRGB,
+  EXT_GPU_PROGRAM_PARAMETERS,
+  /* NVIDIA */
+  NV_HALF_FLOAT,
+  NV_FOG_DISTANCE,
+  NV_FRAGMENT_PROGRAM,
+  NV_FRAGMENT_PROGRAM2,
+  NV_OCCLUSION_QUERY,
+  NV_REGISTER_COMBINERS,
+  NV_REGISTER_COMBINERS2,
+  NV_TEXGEN_REFLECTION,
+  NV_TEXTURE_ENV_COMBINE4,
+  NV_TEXTURE_SHADER,
+  NV_TEXTURE_SHADER2,
+  NV_TEXTURE_SHADER3,
+  NV_VERTEX_PROGRAM,
+  NV_VERTEX_PROGRAM1_1,
+  NV_VERTEX_PROGRAM2,
+  NV_VERTEX_PROGRAM3,
+  NV_FENCE,
+  NV_DEPTH_CLAMP,
+  NV_LIGHT_MAX_EXPONENT,
+  /* ATI */
+  ATI_SEPARATE_STENCIL,
+  ATI_TEXTURE_ENV_COMBINE3,
+  ATI_TEXTURE_MIRROR_ONCE,
+  EXT_VERTEX_SHADER,
+  ATI_FRAGMENT_SHADER,
+  ATI_TEXTURE_COMPRESSION_3DC,
+  /* APPLE */
+  APPLE_FENCE,
+  APPLE_CLIENT_STORAGE,
+  APPLE_FLUSH_RENDER,
+  APPLE_YCBCR_422,
+  APPLE_FLOAT_PIXELS,
+  /* SGI */
+  SGI_VIDEO_SYNC,
+  SGIS_GENERATE_MIPMAP,
+
+  /* Internally used */
+  WINE_NORMALIZED_TEXRECT,
+
+  /* WGL extensions */
+  WGL_ARB_PBUFFER,
+  WGL_WINE_PIXEL_FORMAT_PASSTHROUGH,
+
+  OPENGL_SUPPORTED_EXT_END
+} GL_SupportedExt;
+
+
+/****************************************************
+ * #Defines
+ ****************************************************/
+#define GL_EXT_FUNCS_GEN \
+    /** ARB Extensions **/ \
+    /* GL_ARB_color_buffer_float */ \
+    USE_GL_FUNC(PGLFNCLAMPCOLORARBPROC,                             glClampColorARB,                            ARB_COLOR_BUFFER_FLOAT, NULL )\
+    /* GL_ARB_draw_buffers */ \
+    USE_GL_FUNC(PGLFNDRAWBUFFERSARBPROC,                            glDrawBuffersARB,                           ARB_DRAW_BUFFERS,       NULL )\
+    /* GL_ARB_imaging, GL_EXT_blend_minmax */ \
+    USE_GL_FUNC(PGLFNBLENDCOLORPROC,                                glBlendColorEXT,                            EXT_BLEND_COLOR,        NULL )\
+    USE_GL_FUNC(PGLFNBLENDEQUATIONPROC,                             glBlendEquationEXT,                         EXT_BLEND_MINMAX,       NULL )\
+    /* GL_ARB_multisample */ \
+    USE_GL_FUNC(WINED3D_PFNGLSAMPLECOVERAGEARBPROC,                 glSampleCoverageARB,                        ARB_MULTISAMPLE,        NULL )\
+    /* GL_ARB_multitexture */ \
+    USE_GL_FUNC(WINED3D_PFNGLACTIVETEXTUREARBPROC,                  glActiveTextureARB,                         ARB_MULTITEXTURE,       NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLCLIENTACTIVETEXTUREARBPROC,            glClientActiveTextureARB,                   ARB_MULTITEXTURE,       NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLMULTITEXCOORD1FARBPROC,                glMultiTexCoord1fARB,                       ARB_MULTITEXTURE,       NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLMULTITEXCOORD1FVARBPROC,               glMultiTexCoord1fvARB,                      ARB_MULTITEXTURE,       NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLMULTITEXCOORD2FARBPROC,                glMultiTexCoord2fARB,                       ARB_MULTITEXTURE,       NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLMULTITEXCOORD2FVARBPROC,               glMultiTexCoord2fvARB,                      ARB_MULTITEXTURE,       NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLMULTITEXCOORD3FARBPROC,                glMultiTexCoord3fARB,                       ARB_MULTITEXTURE,       NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLMULTITEXCOORD3FVARBPROC,               glMultiTexCoord3fvARB,                      ARB_MULTITEXTURE,       NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLMULTITEXCOORD4FARBPROC,                glMultiTexCoord4fARB,                       ARB_MULTITEXTURE,       NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLMULTITEXCOORD4FVARBPROC,               glMultiTexCoord4fvARB,                      ARB_MULTITEXTURE,       NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLMULTITEXCOORD2SVARBPROC,               glMultiTexCoord2svARB,                      ARB_MULTITEXTURE,       NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLMULTITEXCOORD4SVARBPROC,               glMultiTexCoord4svARB,                      ARB_MULTITEXTURE,       NULL )\
+    /* GL_ARB_occlusion_query */ \
+    USE_GL_FUNC(PGLFNGENQUERIESARBPROC,                             glGenQueriesARB,                            ARB_OCCLUSION_QUERY,    NULL )\
+    USE_GL_FUNC(PGLFNDELETEQUERIESARBPROC,                          glDeleteQueriesARB,                         ARB_OCCLUSION_QUERY,    NULL )\
+    USE_GL_FUNC(PGLFNBEGINQUERYARBPROC,                             glBeginQueryARB,                            ARB_OCCLUSION_QUERY,    NULL )\
+    USE_GL_FUNC(PGLFNENDQUERYARBPROC,                               glEndQueryARB,                              ARB_OCCLUSION_QUERY,    NULL )\
+    USE_GL_FUNC(PGLFNGETQUERYOBJECTIVARBPROC,                       glGetQueryObjectivARB,                      ARB_OCCLUSION_QUERY,    NULL )\
+    USE_GL_FUNC(PGLFNGETQUERYOBJECTUIVARBPROC,                      glGetQueryObjectuivARB,                     ARB_OCCLUSION_QUERY,    NULL )\
+    /* GL_ARB_point_parameters */ \
+    USE_GL_FUNC(PGLFNGLPOINTPARAMETERFARBPROC,                      glPointParameterfARB,                       ARB_POINT_PARAMETERS,   NULL )\
+    USE_GL_FUNC(PGLFNGLPOINTPARAMETERFVARBPROC,                     glPointParameterfvARB,                      ARB_POINT_PARAMETERS,   NULL )\
+    /* GL_ARB_texture_compression */ \
+    USE_GL_FUNC(PGLFNCOMPRESSEDTEXIMAGE2DPROC,                      glCompressedTexImage2DARB,                  ARB_TEXTURE_COMPRESSION,NULL )\
+    USE_GL_FUNC(PGLFNCOMPRESSEDTEXIMAGE3DPROC,                      glCompressedTexImage3DARB,                  ARB_TEXTURE_COMPRESSION,NULL )\
+    USE_GL_FUNC(PGLFNCOMPRESSEDTEXSUBIMAGE2DPROC,                   glCompressedTexSubImage2DARB,               ARB_TEXTURE_COMPRESSION,NULL )\
+    USE_GL_FUNC(PGLFNCOMPRESSEDTEXSUBIMAGE3DPROC,                   glCompressedTexSubImage3DARB,               ARB_TEXTURE_COMPRESSION,NULL )\
+    USE_GL_FUNC(PGLFNGETCOMPRESSEDTEXIMAGEPROC,                     glGetCompressedTexImageARB,                 ARB_TEXTURE_COMPRESSION,NULL )\
+    /* GL_ARB_vertex_blend */ \
+    USE_GL_FUNC(PGLFNGLWEIGHTPOINTERARB,                            glWeightPointerARB,                         ARB_VERTEX_BLEND,       NULL )\
+    USE_GL_FUNC(PGLFNGLWEIGHTBV,                                    glWeightbvARB,                              ARB_VERTEX_BLEND,       NULL )\
+    USE_GL_FUNC(PGLFNGLWEIGHTSV,                                    glWeightsvARB,                              ARB_VERTEX_BLEND,       NULL )\
+    USE_GL_FUNC(PGLFNGLWEIGHTIV,                                    glWeightivARB,                              ARB_VERTEX_BLEND,       NULL )\
+    USE_GL_FUNC(PGLFNGLWEIGHTFV,                                    glWeightfvARB,                              ARB_VERTEX_BLEND,       NULL )\
+    USE_GL_FUNC(PGLFNGLWEIGHTDV,                                    glWeightdvARB,                              ARB_VERTEX_BLEND,       NULL )\
+    USE_GL_FUNC(PGLFNGLWEIGHTUBV,                                   glWeightubvARB,                             ARB_VERTEX_BLEND,       NULL )\
+    USE_GL_FUNC(PGLFNGLWEIGHTUSV,                                   glWeightusvARB,                             ARB_VERTEX_BLEND,       NULL )\
+    USE_GL_FUNC(PGLFNGLWEIGHTUIV,                                   glWeightuivARB,                             ARB_VERTEX_BLEND,       NULL )\
+    USE_GL_FUNC(PGLFNGLVERTEXBLENDARB,                              glVertexBlendARB,                           ARB_VERTEX_BLEND,       NULL )\
+    /* GL_ARB_vertex_buffer_object */ \
+    USE_GL_FUNC(PGLFNBINDBUFFERARBPROC,                             glBindBufferARB,                            ARB_VERTEX_BUFFER_OBJECT,NULL)\
+    USE_GL_FUNC(PGLFNDELETEBUFFERSARBPROC,                          glDeleteBuffersARB,                         ARB_VERTEX_BUFFER_OBJECT,NULL)\
+    USE_GL_FUNC(PGLFNGENBUFFERSARBPROC,                             glGenBuffersARB,                            ARB_VERTEX_BUFFER_OBJECT,NULL)\
+    USE_GL_FUNC(PGLFNISBUFFERARBPROC,                               glIsBufferARB,                              ARB_VERTEX_BUFFER_OBJECT,NULL)\
+    USE_GL_FUNC(PGLFNBUFFERDATAARBPROC,                             glBufferDataARB,                            ARB_VERTEX_BUFFER_OBJECT,NULL)\
+    USE_GL_FUNC(PGLFNBUFFERSUBDATAARBPROC,                          glBufferSubDataARB,                         ARB_VERTEX_BUFFER_OBJECT,NULL)\
+    USE_GL_FUNC(PGLFNGETBUFFERSUBDATAARBPROC,                       glGetBufferSubDataARB,                      ARB_VERTEX_BUFFER_OBJECT,NULL)\
+    USE_GL_FUNC(PGLFNMAPBUFFERARBPROC,                              glMapBufferARB,                             ARB_VERTEX_BUFFER_OBJECT,NULL)\
+    USE_GL_FUNC(PGLFNUNMAPBUFFERARBPROC,                            glUnmapBufferARB,                           ARB_VERTEX_BUFFER_OBJECT,NULL)\
+    USE_GL_FUNC(PGLFNGETBUFFERPARAMETERIVARBPROC,                   glGetBufferParameterivARB,                  ARB_VERTEX_BUFFER_OBJECT,NULL)\
+    USE_GL_FUNC(PGLFNGETBUFFERPOINTERVARBPROC,                      glGetBufferPointervARB,                     ARB_VERTEX_BUFFER_OBJECT,NULL)\
+    /** EXT Extensions **/ \
+    /* GL_EXT_blend_equation_separate */ \
+    USE_GL_FUNC(PGLFNBLENDFUNCSEPARATEEXTPROC,                      glBlendFuncSeparateEXT,                     EXT_BLEND_FUNC_SEPARATE, NULL)\
+    /* GL_EXT_blend_func_separate */ \
+    USE_GL_FUNC(PGLFNBLENDEQUATIONSEPARATEEXTPROC,                  glBlendEquationSeparateEXT,                 EXT_BLEND_EQUATION_SEPARATE, NULL)\
+    /* GL_EXT_fog_coord */ \
+    USE_GL_FUNC(PGLFNGLFOGCOORDFEXTPROC,                            glFogCoordfEXT,                             EXT_FOG_COORD,          NULL )\
+    USE_GL_FUNC(PGLFNGLFOGCOORDFVEXTPROC,                           glFogCoordfvEXT,                            EXT_FOG_COORD,          NULL )\
+    USE_GL_FUNC(PGLFNGLFOGCOORDDEXTPROC,                            glFogCoorddEXT,                             EXT_FOG_COORD,          NULL )\
+    USE_GL_FUNC(PGLFNGLFOGCOORDDVEXTPROC,                           glFogCoordvEXT,                             EXT_FOG_COORD,          NULL )\
+    USE_GL_FUNC(PGLFNGLFOGCOORDPOINTEREXTPROC,                      glFogCoordPointerEXT,                       EXT_FOG_COORD,          NULL )\
+    /* GL_EXT_framebuffer_object */ \
+    USE_GL_FUNC(PGLFNGLISRENDERBUFFEREXTPROC,                       glIsRenderbufferEXT,                        EXT_FRAMEBUFFER_OBJECT, NULL )\
+    USE_GL_FUNC(PGLFNGLBINDRENDERBUFFEREXTPROC,                     glBindRenderbufferEXT,                      EXT_FRAMEBUFFER_OBJECT, NULL )\
+    USE_GL_FUNC(PGLFNGLDELETERENDERBUFFERSEXTPROC,                  glDeleteRenderbuffersEXT,                   EXT_FRAMEBUFFER_OBJECT, NULL )\
+    USE_GL_FUNC(PGLFNGLGENRENDERBUFFERSEXTPROC,                     glGenRenderbuffersEXT,                      EXT_FRAMEBUFFER_OBJECT, NULL )\
+    USE_GL_FUNC(PGLFNGLRENDERBUFFERSTORAGEEXTPROC,                  glRenderbufferStorageEXT,                   EXT_FRAMEBUFFER_OBJECT, NULL )\
+    USE_GL_FUNC(PGLFNGLISFRAMEBUFFEREXTPROC,                        glIsFramebufferEXT,                         EXT_FRAMEBUFFER_OBJECT, NULL )\
+    USE_GL_FUNC(PGLFNGLBINDFRAMEBUFFEREXTPROC,                      glBindFramebufferEXT,                       EXT_FRAMEBUFFER_OBJECT, NULL )\
+    USE_GL_FUNC(PGLFNGLDELETEFRAMEBUFFERSEXTPROC,                   glDeleteFramebuffersEXT,                    EXT_FRAMEBUFFER_OBJECT, NULL )\
+    USE_GL_FUNC(PGLFNGLGENFRAMEBUFFERSEXTPROC,                      glGenFramebuffersEXT,                       EXT_FRAMEBUFFER_OBJECT, NULL )\
+    USE_GL_FUNC(PGLFNGLCHECKFRAMEBUFFERSTATUSEXTPROC,               glCheckFramebufferStatusEXT,                EXT_FRAMEBUFFER_OBJECT, NULL )\
+    USE_GL_FUNC(PGLFNGLFRAMEBUFFERTEXTURE1DEXTPROC,                 glFramebufferTexture1DEXT,                  EXT_FRAMEBUFFER_OBJECT, NULL )\
+    USE_GL_FUNC(PGLFNGLFRAMEBUFFERTEXTURE2DEXTPROC,                 glFramebufferTexture2DEXT,                  EXT_FRAMEBUFFER_OBJECT, NULL )\
+    USE_GL_FUNC(PGLFNGLFRAMEBUFFERTEXTURE3DEXTPROC,                 glFramebufferTexture3DEXT,                  EXT_FRAMEBUFFER_OBJECT, NULL )\
+    USE_GL_FUNC(PGLFNGLFRAMEBUFFERRENDERBUFFEREXTPROC,              glFramebufferRenderbufferEXT,               EXT_FRAMEBUFFER_OBJECT, NULL )\
+    USE_GL_FUNC(PGLFNGLGENERATEMIPMAPEXTPROC,                       glGenerateMipmapEXT,                        EXT_FRAMEBUFFER_OBJECT, NULL )\
+    USE_GL_FUNC(PGLFNGLGETRENDERBUFFERPARAMETERIVEXTPROC,           glGetRenderbufferParameterivEXT,            EXT_FRAMEBUFFER_OBJECT, NULL )\
+    USE_GL_FUNC(PGLFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC,  glGetFramebufferAttachmentParameterivEXT,   EXT_FRAMEBUFFER_OBJECT, NULL )\
+    /* GL_EXT_framebuffer_blit */ \
+    USE_GL_FUNC(PGLFNGLBLITFRAMEBUFFEREXTPROC,                      glBlitFramebufferEXT,                       EXT_FRAMEBUFFER_BLIT,   NULL )\
+    /* GL_EXT_framebuffer_multisample */ \
+    USE_GL_FUNC(PGLFNRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC,         glRenderbufferStorageMultisampleEXT,        EXT_FRAMEBUFFER_MULTISAMPLE, NULL )\
+    /* GL_EXT_paletted_texture */ \
+    USE_GL_FUNC(PGLFNGLCOLORTABLEEXTPROC,                           glColorTableEXT,                            EXT_PALETTED_TEXTURE,   NULL )\
+    /* GL_EXT_point_parameters */ \
+    USE_GL_FUNC(PGLFNGLPOINTPARAMETERFEXTPROC,                      glPointParameterfEXT,                       EXT_POINT_PARAMETERS,   NULL )\
+    USE_GL_FUNC(PGLFNGLPOINTPARAMETERFVEXTPROC,                     glPointParameterfvEXT,                      EXT_POINT_PARAMETERS,   NULL )\
+    /* GL_EXT_secondary_color */ \
+    USE_GL_FUNC(PGLFNGLSECONDARYCOLOR3UBEXTPROC,                    glSecondaryColor3ubEXT,                     EXT_SECONDARY_COLOR,    NULL )\
+    USE_GL_FUNC(PGLFNGLSECONDARYCOLOR3FEXTPROC,                     glSecondaryColor3fEXT,                      EXT_SECONDARY_COLOR,    NULL )\
+    USE_GL_FUNC(PGLFNGLSECONDARYCOLOR3FVEXTPROC,                    glSecondaryColor3fvEXT,                     EXT_SECONDARY_COLOR,    NULL )\
+    USE_GL_FUNC(PGLFNGLSECONDARYCOLORPOINTEREXTPROC,                glSecondaryColorPointerEXT,                 EXT_SECONDARY_COLOR,    NULL )\
+    /* GL_EXT_texture3D */ \
+    USE_GL_FUNC(PGLFNGLTEXIMAGE3DEXTPROC,                           glTexImage3DEXT,                            EXT_TEXTURE3D,          glTexImage3D)\
+    USE_GL_FUNC(PGLFNGLTEXSUBIMAGE3DEXTPROC,                        glTexSubImage3DEXT,                         EXT_TEXTURE3D,          glTexSubImage3D)\
+    /* GL_ARB_vertex_program */ \
+    USE_GL_FUNC(PGLFNGENPROGRAMSARBPROC,                            glGenProgramsARB,                           ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNBINDPROGRAMARBPROC,                            glBindProgramARB,                           ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNPROGRAMSTRINGARBPROC,                          glProgramStringARB,                         ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNDELETEPROGRAMSARBPROC,                         glDeleteProgramsARB,                        ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNPROGRAMENVPARAMETER4FVARBPROC,                 glProgramEnvParameter4fvARB,                ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNPROGRAMLOCALPARAMETER4FVARBPROC,               glProgramLocalParameter4fvARB,                ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIBPOINTERARBPROC,                    glVertexAttribPointerARB,                   ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNENABLEVERTEXATTRIBARRAYARBPROC,                glEnableVertexAttribArrayARB,               ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNDISABLEVERTEXATTRIBARRAYARBPROC,               glDisableVertexAttribArrayARB,              ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB1DARBPROC,                         glVertexAttrib1dARB,                        ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB1DVARBPROC,                        glVertexAttrib1dvARB,                       ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB1FARBPROC,                         glVertexAttrib1fARB,                        ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB1FVARBPROC,                        glVertexAttrib1fvARB,                       ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB1SARBPROC,                         glVertexAttrib1sARB,                        ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB1SVARBPROC,                        glVertexAttrib1svARB,                       ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB2DARBPROC,                         glVertexAttrib2dARB,                        ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB2DVARBPROC,                        glVertexAttrib2dvARB,                       ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB2FARBPROC,                         glVertexAttrib2fARB,                        ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB2FVARBPROC,                        glVertexAttrib2fvARB,                       ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB2SARBPROC,                         glVertexAttrib2sARB,                        ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB2SVARBPROC,                        glVertexAttrib2svARB,                       ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB3DARBPROC,                         glVertexAttrib3dARB,                        ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB3DVARBPROC,                        glVertexAttrib3dvARB,                       ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB3FARBPROC,                         glVertexAttrib3fARB,                        ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB3FVARBPROC,                        glVertexAttrib3fvARB,                       ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB3SARBPROC,                         glVertexAttrib3sARB,                        ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB3SVARBPROC,                        glVertexAttrib3svARB,                       ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB4NBVARBPROC,                       glVertexAttrib4NbvARB,                      ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB4NIVARBPROC,                       glVertexAttrib4NivARB,                      ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB4NSVARBPROC,                       glVertexAttrib4NsvARB,                      ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB4NUBARBPROC,                       glVertexAttrib4NubARB,                      ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB4NUBVARBPROC,                      glVertexAttrib4NubvARB,                     ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB4NUIVARBPROC,                      glVertexAttrib4NuivARB,                     ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB4NUSVARBPROC,                      glVertexAttrib4NusvARB,                     ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB4BVARBPROC,                        glVertexAttrib4bvARB,                       ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB4DARBPROC,                         glVertexAttrib4dARB,                        ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB4DVARBPROC,                        glVertexAttrib4dvARB,                       ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB4FARBPROC,                         glVertexAttrib4fARB,                        ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB4FVARBPROC,                        glVertexAttrib4fvARB,                       ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB4IVARBPROC,                        glVertexAttrib4ivARB,                       ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB4SARBPROC,                         glVertexAttrib4sARB,                        ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB4SVARBPROC,                        glVertexAttrib4svARB,                       ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB4UBVARBPROC,                       glVertexAttrib4ubvARB,                      ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB4UIVARBPROC,                       glVertexAttrib4uivARB,                      ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB4USVARBPROC,                       glVertexAttrib4usvARB,                      ARB_VERTEX_PROGRAM,     NULL )\
+    USE_GL_FUNC(PGLFNGETPROGRAMIVARBPROC,                           glGetProgramivARB,                          ARB_VERTEX_PROGRAM,     NULL )\
+    /* GL_ARB_shader_objects */ \
+    USE_GL_FUNC(WINED3D_PFNGLGETOBJECTPARAMETERIVARBPROC,           glGetObjectParameterivARB,                  ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLGETOBJECTPARAMETERFVARBPROC,           glGetObjectParameterfvARB,                  ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLGETUNIFORMLOCATIONARBPROC,             glGetUniformLocationARB,                    ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLGETACTIVEUNIFORMARBPROC,               glGetActiveUniformARB,                      ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLUNIFORM1IARBPROC,                      glUniform1iARB,                             ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLUNIFORM2IARBPROC,                      glUniform2iARB,                             ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLUNIFORM3IARBPROC,                      glUniform3iARB,                             ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLUNIFORM4IARBPROC,                      glUniform4iARB,                             ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLUNIFORM1IARBPROC,                      glUniform1fARB,                             ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLUNIFORM2FARBPROC,                      glUniform2fARB,                             ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLUNIFORM3FARBPROC,                      glUniform3fARB,                             ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLUNIFORM4FARBPROC,                      glUniform4fARB,                             ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLUNIFORM1FVARBPROC,                     glUniform1fvARB,                            ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLUNIFORM2FVARBPROC,                     glUniform2fvARB,                            ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLUNIFORM3FVARBPROC,                     glUniform3fvARB,                            ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLUNIFORM4FVARBPROC,                     glUniform4fvARB,                            ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLUNIFORM1IVARBPROC,                     glUniform1ivARB,                            ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLUNIFORM2IVARBPROC,                     glUniform2ivARB,                            ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLUNIFORM3IVARBPROC,                     glUniform3ivARB,                            ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLUNIFORM4IVARBPROC,                     glUniform4ivARB,                            ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLUNIFORMMATRIX2FVARBPROC,               glUniformMatrix2fvARB,                      ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLUNIFORMMATRIX3FVARBPROC,               glUniformMatrix3fvARB,                      ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLUNIFORMMATRIX4FVARBPROC,               glUniformMatrix4fvARB,                      ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLGETUNIFORMFVARBPROC,                   glGetUniform4fvARB,                         ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLGETUNIFORMIVARBPROC,                   glGetUniform4ivARB,                         ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLGETINFOLOGARBPROC,                     glGetInfoLogARB,                            ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLUSEPROGRAMOBJECTARBPROC,               glUseProgramObjectARB,                      ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLCREATESHADEROBJECTARBPROC,             glCreateShaderObjectARB,                    ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLSHADERSOURCEARBPROC,                   glShaderSourceARB,                          ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLCOMPILESHADERARBPROC,                  glCompileShaderARB,                         ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLCREATEPROGRAMOBJECTARBPROC,            glCreateProgramObjectARB,                   ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLATTACHOBJECTARBPROC,                   glAttachObjectARB,                          ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLLINKPROGRAMARBPROC,                    glLinkProgramARB,                           ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLDETACHOBJECTARBPROC,                   glDetachObjectARB,                          ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLDELETEOBJECTARBPROC,                   glDeleteObjectARB,                          ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLVALIDATEPROGRAMARBPROC,                glValidateProgramARB,                       ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLGETATTACHEDOBJECTSARBPROC,             glGetAttachedObjectsARB,                    ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLGETHANDLEARBPROC,                      glGetHandleARB,                             ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLGETSHADERSOURCEARBPROC,                glGetShaderSourceARB,                       ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLBINDATTRIBLOCATIONARBPROC,             glBindAttribLocationARB,                    ARB_SHADER_OBJECTS,     NULL )\
+    USE_GL_FUNC(WINED3D_PFNGLGETATTRIBLOCATIONARBPROC,              glGetAttribLocationARB,                     ARB_SHADER_OBJECTS,     NULL )\
+    /* GL_EXT_stencil_two_side */ \
+    USE_GL_FUNC(PGLFNACTIVESTENCILFACEEXTPROC,                      glActiveStencilFaceEXT,                     EXT_STENCIL_TWO_SIDE,   NULL )\
+    /* GL_ATI_separate_stencil */ \
+    USE_GL_FUNC(PGLFNSTENCILOPSEPARATEATIPROC,                      glStencilOpSeparateATI,                     ATI_SEPARATE_STENCIL,   NULL )\
+    USE_GL_FUNC(PGLFNSTENCILFUNCSEPARATEATIPROC,                    glStencilFuncSeparateATI,                   ATI_SEPARATE_STENCIL,   NULL )\
+    /* GL_NV_half_float */ \
+    USE_GL_FUNC(PGLFNVERTEX2HNVPROC,                                glVertex2hNV,                               NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNVERTEX2HVNVPROC,                               glVertex2hvNV,                              NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNVERTEX3HNVPROC,                                glVertex3hNV,                               NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNVERTEX3HVNVPROC,                               glVertex3hvNV,                              NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNVERTEX4HNVPROC,                                glVertex4hNV,                               NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNVERTEX4HVNVPROC,                               glVertex4hvNV,                              NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNNORMAL3HNVPROC,                                glNormal3hNV,                               NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNNORMAL3HVNVPROC,                               glNormal3hvNV,                              NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNCOLOR3HNVPROC,                                 glColor3hNV,                                NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNCOLOR3HVNVPROC,                                glColor3hvNV,                               NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNCOLOR4HNVPROC,                                 glColor4hNV,                                NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNCOLOR4HVNVPROC,                                glColor4hvNV,                               NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNTEXCOORD1HNVPROC,                              glTexCoord1hNV,                             NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNTEXCOORD1HVNVPROC,                             glTexCoord1hvNV,                            NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNTEXCOORD2HNVPROC,                              glTexCoord2hNV,                             NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNTEXCOORD2HVNVPROC,                             glTexCoord2hvNV,                            NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNTEXCOORD3HNVPROC,                              glTexCoord3hNV,                             NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNTEXCOORD3HVNVPROC,                             glTexCoord3hvNV,                            NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNTEXCOORD4HNVPROC,                              glTexCoord4hNV,                             NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNTEXCOORD4HVNVPROC,                             glTexCoord4hvNV,                            NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNMULTITEXCOORD1HNVPROC,                         glMultiTexCoord1hNV,                        NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNMULTITEXCOORD1HVNVPROC,                        glMultiTexCoord1hvNV,                       NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNMULTITEXCOORD2HNVPROC,                         glMultiTexCoord2hNV,                        NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNMULTITEXCOORD2HVNVPROC,                        glMultiTexCoord2hvNV,                       NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNMULTITEXCOORD3HNVPROC,                         glMultiTexCoord3hNV,                        NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNMULTITEXCOORD3HVNVPROC,                        glMultiTexCoord3hvNV,                       NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNMULTITEXCOORD4HNVPROC,                         glMultiTexCoord4hNV,                        NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNMULTITEXCOORD4HVNVPROC,                        glMultiTexCoord4hvNV,                       NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNFOGCOORDHNVPROC,                               glFogCoordhNV,                              NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNFOGCOORDHVNVPROC,                              glFogCoordhvNV,                             NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNSECONDARYCOLOR3HNVPROC,                        glSecondaryColor3hNV,                       NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNSECONDARYCOLOR3HVNVPROC,                       glSecondaryColor3hvNV,                      NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNVERTEXWEIGHTHNVPROC,                           glVertexWeighthNV,                          NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNVERTEXWEIGHTHVNVPROC,                          glVertexWeighthvNV,                         NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB1HNVPROC,                          glVertexAttrib1hNV,                         NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB1HVNVPROC,                         glVertexAttrib1hvNV,                        NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB2HNVPROC,                          glVertexAttrib2hNV,                         NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB2HVNVPROC,                         glVertexAttrib2hvNV,                        NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB3HNVPROC,                          glVertexAttrib3hNV,                         NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB3HVNVPROC,                         glVertexAttrib3hvNV,                        NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB4HNVPROC,                          glVertexAttrib4hNV,                         NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIB4HVNVPROC,                         glVertexAttrib4hvNV,                        NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIBS1HVNVPROC,                        glVertexAttribs1hvNV,                       NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIBS2HVNVPROC,                        glVertexAttribs2hvNV,                       NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIBS3HVNVPROC,                        glVertexAttribs3hvNV,                       NV_HALF_FLOAT,          NULL )\
+    USE_GL_FUNC(PGLFNVERTEXATTRIBS4HVNVPROC,                        glVertexAttribs4hvNV,                       NV_HALF_FLOAT,          NULL )\
+    /* GL_NV_register_combiners */ \
+    USE_GL_FUNC(PGLFNCOMBINERINPUTNVPROC,                           glCombinerInputNV,                          NV_REGISTER_COMBINERS,  NULL )\
+    USE_GL_FUNC(PGLFNCOMBINEROUTPUTNVPROC,                          glCombinerOutputNV,                         NV_REGISTER_COMBINERS,  NULL )\
+    USE_GL_FUNC(PGLFNCOMBINERPARAMETERFNVPROC,                      glCombinerParameterfNV,                     NV_REGISTER_COMBINERS,  NULL )\
+    USE_GL_FUNC(PGLFNCOMBINERPARAMETERFVNVPROC,                     glCombinerParameterfvNV,                    NV_REGISTER_COMBINERS,  NULL )\
+    USE_GL_FUNC(PGLFNCOMBINERPARAMETERINVPROC,                      glCombinerParameteriNV,                     NV_REGISTER_COMBINERS,  NULL )\
+    USE_GL_FUNC(PGLFNCOMBINERPARAMETERIVNVPROC,                     glCombinerParameterivNV,                    NV_REGISTER_COMBINERS,  NULL )\
+    USE_GL_FUNC(PGLFNFINALCOMBINERINPUTNVPROC,                      glFinalCombinerInputNV,                     NV_REGISTER_COMBINERS,  NULL )\
+    /* GL_NV_fence */ \
+    USE_GL_FUNC(PGLFNGENFENCESNVPROC,                               glGenFencesNV,                              NV_FENCE,               NULL )\
+    USE_GL_FUNC(PGLFNDELETEFENCESNVPROC,                            glDeleteFencesNV,                           NV_FENCE,               NULL )\
+    USE_GL_FUNC(PGLFNSETFENCENVPROC,                                glSetFenceNV,                               NV_FENCE,               NULL )\
+    USE_GL_FUNC(PGLFNTESTFENCENVPROC,                               glTestFenceNV,                              NV_FENCE,               NULL )\
+    USE_GL_FUNC(PGLFNFINISHFENCENVPROC,                             glFinishFenceNV,                            NV_FENCE,               NULL )\
+    USE_GL_FUNC(PGLFNISFENCENVPROC,                                 glIsFenceNV,                                NV_FENCE,               NULL )\
+    USE_GL_FUNC(PGLFNGETFENCEIVNVPROC,                              glGetFenceivNV,                             NV_FENCE,               NULL )\
+    /* GL_APPLE_fence */ \
+    USE_GL_FUNC(PGLFNGENFENCESAPPLEPROC,                            glGenFencesAPPLE,                           APPLE_FENCE,            NULL )\
+    USE_GL_FUNC(PGLFNDELETEFENCESAPPLEPROC,                         glDeleteFencesAPPLE,                        APPLE_FENCE,            NULL )\
+    USE_GL_FUNC(PGLFNSETFENCEAPPLEPROC,                             glSetFenceAPPLE,                            APPLE_FENCE,            NULL )\
+    USE_GL_FUNC(PGLFNTESTFENCEAPPLEPROC,                            glTestFenceAPPLE,                           APPLE_FENCE,            NULL )\
+    USE_GL_FUNC(PGLFNFINISHFENCEAPPLEPROC,                          glFinishFenceAPPLE,                         APPLE_FENCE,            NULL )\
+    USE_GL_FUNC(PGLFNISFENCEAPPLEPROC,                              glIsFenceAPPLE,                             APPLE_FENCE,            NULL )\
+    USE_GL_FUNC(PGLFNTESTOBJECTAPPLEPROC,                           glTestObjectAPPLE,                          APPLE_FENCE,            NULL )\
+    USE_GL_FUNC(PGLFNFINISHOBJECTAPPLEPROC,                         glFinishObjectAPPLE,                        APPLE_FENCE,            NULL )\
+    /* GLX_SGI_video_sync */ \
+    USE_GL_FUNC(PGLXFNGETVIDEOSYNCSGIPROC,                          glXGetVideoSyncSGI,                         SGI_VIDEO_SYNC,         NULL )\
+    USE_GL_FUNC(PGLXFNWAITVIDEOSYNCSGIPROC,                         glXWaitVideoSyncSGI,                        SGI_VIDEO_SYNC,         NULL )\
+    /* GL_APPLE_flush_render */ \
+    USE_GL_FUNC(PGLFNFLUSHRENDERAPPLEPROC,                          glFlushRenderApple,                         APPLE_FLUSH_RENDER,     NULL )\
+    USE_GL_FUNC(PGLFNFINISHRENDERAPPLEPROC,                         glFinishRenderApple,                        APPLE_FLUSH_RENDER,     NULL )\
+    /* GL_EXT_gpu_program_parameters */ \
+    USE_GL_FUNC(PGLFNPROGRAMENVPARAMETERS4FVEXTPROC,                glProgramEnvParameters4fvEXT,            EXT_GPU_PROGRAM_PARAMETERS,NULL )\
+    USE_GL_FUNC(PGLFNPROGRAMLOCALPARAMETERS4FVEXTPROC,              glProgramLocalParameters4fvEXT,          EXT_GPU_PROGRAM_PARAMETERS,NULL )\
+    /* GL_ATI_fragment_shader */ \
+    USE_GL_FUNC(PGLFNGENFRAGMENTSHADERSATI,                         glGenFragmentShadersATI,                    ATI_FRAGMENT_SHADER,    NULL )\
+    USE_GL_FUNC(PGLFNBINDFRAGMENTSHADERATI,                         glBindFragmentShaderATI,                    ATI_FRAGMENT_SHADER,    NULL )\
+    USE_GL_FUNC(PGLFNDELETEFRAGMENTSHADERATI,                       glDeleteFragmentShaderATI,                  ATI_FRAGMENT_SHADER,    NULL )\
+    USE_GL_FUNC(PGLFNBEGINFRAGMENTSHADERATI,                        glBeginFragmentShaderATI,                   ATI_FRAGMENT_SHADER,    NULL )\
+    USE_GL_FUNC(PGLFNENDFRAGMENTSHADERATI,                          glEndFragmentShaderATI,                     ATI_FRAGMENT_SHADER,    NULL )\
+    USE_GL_FUNC(PGLFNPASSTEXCOORDATI,                               glPassTexCoordATI,                          ATI_FRAGMENT_SHADER,    NULL )\
+    USE_GL_FUNC(PGLFNSAMPLEMAPATI,                                  glSampleMapATI,                             ATI_FRAGMENT_SHADER,    NULL )\
+    USE_GL_FUNC(PGLFNCOLORFRAGMENTOP1ATI,                           glColorFragmentOp1ATI,                      ATI_FRAGMENT_SHADER,    NULL )\
+    USE_GL_FUNC(PGLFNCOLORFRAGMENTOP2ATI,                           glColorFragmentOp2ATI,                      ATI_FRAGMENT_SHADER,    NULL )\
+    USE_GL_FUNC(PGLFNCOLORFRAGMENTOP3ATI,                           glColorFragmentOp3ATI,                      ATI_FRAGMENT_SHADER,    NULL )\
+    USE_GL_FUNC(PGLFNALPHAFRAGMENTOP1ATI,                           glAlphaFragmentOp1ATI,                      ATI_FRAGMENT_SHADER,    NULL )\
+    USE_GL_FUNC(PGLFNALPHAFRAGMENTOP2ATI,                           glAlphaFragmentOp2ATI,                      ATI_FRAGMENT_SHADER,    NULL )\
+    USE_GL_FUNC(PGLFNALPHAFRAGMENTOP3ATI,                           glAlphaFragmentOp3ATI,                      ATI_FRAGMENT_SHADER,    NULL )\
+    USE_GL_FUNC(PGLFNSETFRAGMENTSHADERCONSTANTATI,                  glSetFragmentShaderConstantATI,             ATI_FRAGMENT_SHADER,    NULL )
+
+/****************************************************
+ * OpenGL WGL defines and functions pointer
+ ****************************************************/
+
+/* WGL_ARB_extensions_string */
+typedef const char * (WINAPI * WINED3D_PFNWGLGETEXTENSIONSSTRINGARBPROC) (HDC hdc);
+/* WGL_ARB_multisample */
+#ifndef WGL_ARB_multisample
+#define WGL_SAMPLE_BUFFERS_ARB         0x2041
+#define WGL_SAMPLES_ARB                0x2042
+#endif
+/* WGL_ARB_pixel_format */
+#ifndef WGL_ARB_pixel_format
+#define WGL_ARB_pixel_format 1
+#define WGL_NUMBER_PIXEL_FORMATS_ARB   0x2000
+#define WGL_DRAW_TO_WINDOW_ARB         0x2001
+#define WGL_DRAW_TO_BITMAP_ARB         0x2002
+#define WGL_ACCELERATION_ARB           0x2003
+#define WGL_NEED_PALETTE_ARB           0x2004
+#define WGL_NEED_SYSTEM_PALETTE_ARB    0x2005
+#define WGL_SWAP_LAYER_BUFFERS_ARB     0x2006
+#define WGL_SWAP_METHOD_ARB            0x2007
+#define WGL_NUMBER_OVERLAYS_ARB        0x2008
+#define WGL_NUMBER_UNDERLAYS_ARB       0x2009
+#define WGL_TRANSPARENT_ARB            0x200A
+#define WGL_TRANSPARENT_RED_VALUE_ARB  0x2037
+#define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038
+#define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039
+#define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A
+#define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B
+#define WGL_SHARE_DEPTH_ARB            0x200C
+#define WGL_SHARE_STENCIL_ARB          0x200D
+#define WGL_SHARE_ACCUM_ARB            0x200E
+#define WGL_SUPPORT_GDI_ARB            0x200F
+#define WGL_SUPPORT_OPENGL_ARB         0x2010
+#define WGL_DOUBLE_BUFFER_ARB          0x2011
+#define WGL_STEREO_ARB                 0x2012
+#define WGL_PIXEL_TYPE_ARB             0x2013
+#define WGL_COLOR_BITS_ARB             0x2014
+#define WGL_RED_BITS_ARB               0x2015
+#define WGL_RED_SHIFT_ARB              0x2016
+#define WGL_GREEN_BITS_ARB             0x2017
+#define WGL_GREEN_SHIFT_ARB            0x2018
+#define WGL_BLUE_BITS_ARB              0x2019
+#define WGL_BLUE_SHIFT_ARB             0x201A
+#define WGL_ALPHA_BITS_ARB             0x201B
+#define WGL_ALPHA_SHIFT_ARB            0x201C
+#define WGL_ACCUM_BITS_ARB             0x201D
+#define WGL_ACCUM_RED_BITS_ARB         0x201E
+#define WGL_ACCUM_GREEN_BITS_ARB       0x201F
+#define WGL_ACCUM_BLUE_BITS_ARB        0x2020
+#define WGL_ACCUM_ALPHA_BITS_ARB       0x2021
+#define WGL_DEPTH_BITS_ARB             0x2022
+#define WGL_STENCIL_BITS_ARB           0x2023
+#define WGL_AUX_BUFFERS_ARB            0x2024
+#define WGL_NO_ACCELERATION_ARB        0x2025
+#define WGL_GENERIC_ACCELERATION_ARB   0x2026
+#define WGL_FULL_ACCELERATION_ARB      0x2027
+#define WGL_SWAP_EXCHANGE_ARB          0x2028
+#define WGL_SWAP_COPY_ARB              0x2029
+#define WGL_SWAP_UNDEFINED_ARB         0x202A
+#define WGL_TYPE_RGBA_ARB              0x202B
+#define WGL_TYPE_COLORINDEX_ARB        0x202C
+#endif
+typedef BOOL (WINAPI * WINED3D_PFNWGLGETPIXELFORMATATTRIBIVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, int *piValues);
+typedef BOOL (WINAPI * WINED3D_PFNWGLGETPIXELFORMATATTRIBFVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, FLOAT *pfValues);
+typedef BOOL (WINAPI * WINED3D_PFNWGLCHOOSEPIXELFORMATARBPROC) (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
+/* WGL_ARB_make_current_read */
+typedef BOOL (WINAPI * WINED3D_PFNWGLMAKECONTEXTCURRENTARBPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
+typedef HDC (WINAPI * WINED3D_PFNWGLGETCURRENTREADDCARBPROC) (void);
+/* WGL_ARB_pbuffer */
+#ifndef WGL_ARB_pbuffer
+#define WGL_ARB_pbuffer 1
+#define WGL_DRAW_TO_PBUFFER_ARB        0x202D
+#define WGL_MAX_PBUFFER_PIXELS_ARB     0x202E
+#define WGL_MAX_PBUFFER_WIDTH_ARB      0x202F
+#define WGL_MAX_PBUFFER_HEIGHT_ARB     0x2030
+#define WGL_PBUFFER_LARGEST_ARB        0x2033
+#define WGL_PBUFFER_WIDTH_ARB          0x2034
+#define WGL_PBUFFER_HEIGHT_ARB         0x2035
+#define WGL_PBUFFER_LOST_ARB           0x2036
+#endif
+DECLARE_HANDLE(HPBUFFERARB);
+typedef HPBUFFERARB (WINAPI * WINED3D_PFNWGLCREATEPBUFFERARBPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList);
+typedef HDC (WINAPI * WINED3D_PFNWGLGETPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer);
+typedef int (WINAPI * WINED3D_PFNWGLRELEASEPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer, HDC hDC);
+typedef BOOL (WINAPI * WINED3D_PFNWGLDESTROYPBUFFERARBPROC) (HPBUFFERARB hPbuffer);
+typedef BOOL (WINAPI * WINED3D_PFNWGLQUERYPBUFFERARBPROC) (HPBUFFERARB hPbuffer, int iAttribute, int *piValue);
+#ifndef WGL_ARB_pixel_format_float
+#define WGL_ARB_pixel_format_float 1
+#define WGL_TYPE_RGBA_FLOAT_ARB        0x21A0
+#endif
+/* WGL_WINE_pixel_format_passthrough */
+typedef BOOL (WINAPI * WINED3D_PFNWGLSETPIXELFORMATWINE) (HDC hdc, int iPixelFormat, const PIXELFORMATDESCRIPTOR* ppfd);
+
+#define WGL_EXT_FUNCS_GEN \
+    USE_GL_FUNC(WINED3D_PFNWGLGETEXTENSIONSSTRINGARBPROC, wglGetExtensionsStringARB, 0, NULL) \
+    USE_GL_FUNC(WINED3D_PFNWGLGETPIXELFORMATATTRIBIVARBPROC, wglGetPixelFormatAttribivARB, 0, NULL) \
+    USE_GL_FUNC(WINED3D_PFNWGLGETPIXELFORMATATTRIBFVARBPROC, wglGetPixelFormatAttribfvARB, 0, NULL) \
+    USE_GL_FUNC(WINED3D_PFNWGLCHOOSEPIXELFORMATARBPROC, wglChoosePixelFormatARB, 0, NULL) \
+    USE_GL_FUNC(WINED3D_PFNWGLMAKECONTEXTCURRENTARBPROC, wglMakeContextCurrentARB, 0, NULL) \
+    USE_GL_FUNC(WINED3D_PFNWGLGETCURRENTREADDCARBPROC, wglGetCurrentReadDCARB, 0, NULL) \
+    USE_GL_FUNC(WINED3D_PFNWGLCREATEPBUFFERARBPROC, wglCreatePbufferARB, 0, NULL) \
+    USE_GL_FUNC(WINED3D_PFNWGLGETPBUFFERDCARBPROC, wglGetPbufferDCARB, 0, NULL) \
+    USE_GL_FUNC(WINED3D_PFNWGLRELEASEPBUFFERDCARBPROC, wglReleasePbufferDCARB, 0, NULL) \
+    USE_GL_FUNC(WINED3D_PFNWGLDESTROYPBUFFERARBPROC, wglDestroyPbufferARB, 0, NULL) \
+    USE_GL_FUNC(WINED3D_PFNWGLQUERYPBUFFERARBPROC, wglQueryPbufferARB, 0, NULL) \
+    USE_GL_FUNC(WINED3D_PFNWGLSETPIXELFORMATWINE, wglSetPixelFormatWINE, 0, NULL)
+
+
+/****************************************************
+ * Structures
+ ****************************************************/
+
+typedef struct _WINED3DGLTYPE {
+    int         d3dType;
+    GLint       size;
+    GLenum      glType;
+    GLboolean   normalized;
+    int         typesize;
+} WINED3DGLTYPE;
+
+#define USE_GL_FUNC(type, pfn, ext, replace) type pfn;
+typedef struct _WineD3D_GL_Info {
+
+  DWORD  glx_version;
+  DWORD  gl_version;
+
+  GL_Vendors gl_vendor;
+  GL_Cards   gl_card;
+  UINT   vidmem;
+  DWORD  driver_version;
+  DWORD  driver_version_hipart;
+  CHAR   gl_renderer[255];
+  /**
+   * CAPS Constants
+   */
+  UINT   max_buffers;
+  UINT   max_lights;
+  UINT   max_textures;
+  UINT   max_texture_stages;
+  UINT   max_fragment_samplers;
+  UINT   max_vertex_samplers;
+  UINT   max_combined_samplers;
+  UINT   max_sampler_stages;
+  UINT   max_clipplanes;
+  UINT   max_texture_size;
+  UINT   max_texture3d_size;
+  float  max_pointsize, max_pointsizemin;
+  UINT   max_blends;
+  UINT   max_anisotropy;
+  UINT   max_glsl_varyings;
+  float  max_shininess;
+
+  unsigned max_vshader_constantsF;
+  unsigned max_pshader_constantsF;
+
+  unsigned vs_arb_constantsF;
+  unsigned vs_arb_max_instructions;
+  unsigned vs_arb_max_temps;
+  unsigned ps_arb_constantsF;
+  unsigned ps_arb_max_instructions;
+  unsigned ps_arb_max_temps;
+  unsigned vs_glsl_constantsF;
+  unsigned ps_glsl_constantsF;
+
+  GL_PSVersion ps_arb_version;
+  GL_PSVersion ps_nv_version;
+
+  GL_VSVersion vs_arb_version;
+  GL_VSVersion vs_nv_version;
+  GL_VSVersion vs_ati_version;
+
+  BOOL arb_vs_offset_limit;
+  BOOL set_texcoord_w;
+
+  BOOL supported[OPENGL_SUPPORTED_EXT_END + 1];
+
+  /** OpenGL EXT and ARB functions ptr */
+  GL_EXT_FUNCS_GEN
+  /** OpenGL WGL functions ptr */
+  WGL_EXT_FUNCS_GEN
+
+  struct GlPixelFormatDesc *gl_formats;
+
+  /* Vertex data types */
+  WINED3DGLTYPE glTypeLookup[WINED3DDECLTYPE_UNUSED];
+} WineD3D_GL_Info;
+#undef USE_GL_FUNC
+
+#endif /* __WINE_WINED3D_GL */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/wined3d_main.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/wined3d_main.c	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/wined3d_main.c	(revision 16410)
@@ -0,0 +1,322 @@
+/*
+ * Direct3D wine internal interface main
+ *
+ * Copyright 2002-2003 The wine-d3d team
+ * Copyright 2002-2003 Raphael Junqueira
+ * Copyright 2004      Jason Edmeades
+ * Copyright 2007-2008 Stefan Dösinger for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+
+#include "initguid.h"
+#include "wined3d_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d);
+
+int num_lock = 0;
+void (*wine_tsx11_lock_ptr)(void) = NULL;
+void (*wine_tsx11_unlock_ptr)(void) = NULL;
+
+
+/* When updating default value here, make sure to update winecfg as well,
+ * where appropriate. */
+wined3d_settings_t wined3d_settings = 
+{
+    VS_HW,          /* Hardware by default */
+    PS_HW,          /* Hardware by default */
+    VBO_HW,         /* Hardware by default */
+    TRUE,           /* Use of GLSL enabled by default */
+    ORM_BACKBUFFER, /* Use the backbuffer to do offscreen rendering */
+    RTL_AUTO,       /* Automatically determine best locking method */
+    PCI_VENDOR_NONE,/* PCI Vendor ID */
+    PCI_DEVICE_NONE,/* PCI Device ID */
+    0,              /* The default of memory is set in FillGLCaps */
+    NULL,           /* No wine logo by default */
+    FALSE           /* Disable multisampling for now due to Nvidia driver bugs which happens for some users */
+};
+
+IWineD3D* WINAPI WineDirect3DCreate(UINT dxVersion, IUnknown *parent) {
+    IWineD3DImpl* object;
+
+    if (!InitAdapters()) {
+        WARN("Failed to initialize direct3d adapters, Direct3D will not be available\n");
+        if(dxVersion > 7) {
+            ERR("Direct3D%d is not available without opengl\n", dxVersion);
+            return NULL;
+        }
+    }
+
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IWineD3DImpl));
+    object->lpVtbl = &IWineD3D_Vtbl;
+    object->dxVersion = dxVersion;
+    object->ref = 1;
+    object->parent = parent;
+
+    TRACE("Created WineD3D object @ %p for d3d%d support\n", object, dxVersion);
+
+    return (IWineD3D *)object;
+}
+
+static inline DWORD get_config_key(HKEY defkey, HKEY appkey, const char* name, char* buffer, DWORD size)
+{
+    if (0 != appkey && !RegQueryValueExA( appkey, name, 0, NULL, (LPBYTE) buffer, &size )) return 0;
+    if (0 != defkey && !RegQueryValueExA( defkey, name, 0, NULL, (LPBYTE) buffer, &size )) return 0;
+    return ERROR_FILE_NOT_FOUND;
+}
+
+static inline DWORD get_config_key_dword(HKEY defkey, HKEY appkey, const char* name, DWORD *data)
+{
+    DWORD type;
+    DWORD size = sizeof(DWORD);
+    if (0 != appkey && !RegQueryValueExA( appkey, name, 0, &type, (LPBYTE) data, &size ) && (type == REG_DWORD)) return 0;
+    if (0 != defkey && !RegQueryValueExA( defkey, name, 0, &type, (LPBYTE) data, &size ) && (type == REG_DWORD)) return 0;
+    return ERROR_FILE_NOT_FOUND;
+}
+
+static void wined3d_do_nothing(void)
+{
+}
+
+/* At process attach */
+BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv)
+{
+    TRACE("WineD3D DLLMain Reason=%d\n", fdwReason);
+    if (fdwReason == DLL_PROCESS_ATTACH)
+    {
+       HMODULE mod;
+       char buffer[MAX_PATH+10];
+       DWORD size = sizeof(buffer);
+       HKEY hkey = 0;
+       HKEY appkey = 0;
+       DWORD len, tmpvalue;
+       WNDCLASSA wc;
+
+       /* We need our own window class for a fake window which we use to retrieve GL capabilities */
+       /* We might need CS_OWNDC in the future if we notice strange things on Windows.
+        * Various articles/posts about OpenGL problems on Windows recommend this. */
+       wc.style                = CS_HREDRAW | CS_VREDRAW;
+       wc.lpfnWndProc          = DefWindowProcA;
+       wc.cbClsExtra           = 0;
+       wc.cbWndExtra           = 0;
+       wc.hInstance            = hInstDLL;
+       wc.hIcon                = LoadIconA(NULL, (LPCSTR)IDI_WINLOGO);
+       wc.hCursor              = LoadCursorA(NULL, (LPCSTR)IDC_ARROW);
+       wc.hbrBackground        = NULL;
+       wc.lpszMenuName         = NULL;
+       wc.lpszClassName        = "WineD3D_OpenGL";
+
+       if (!RegisterClassA(&wc) && GetLastError() != ERROR_CLASS_ALREADY_EXISTS)
+       {
+           ERR("Failed to register window class 'WineD3D_OpenGL'!\n");
+           return FALSE;
+       }
+
+       DisableThreadLibraryCalls(hInstDLL);
+
+       mod = GetModuleHandleA( "winex11.drv" );
+       if (mod)
+       {
+           wine_tsx11_lock_ptr   = (void *)GetProcAddress( mod, "wine_tsx11_lock" );
+           wine_tsx11_unlock_ptr = (void *)GetProcAddress( mod, "wine_tsx11_unlock" );
+       }
+       else /* We are most likely on Windows */
+       {
+           wine_tsx11_lock_ptr   = wined3d_do_nothing;
+           wine_tsx11_unlock_ptr = wined3d_do_nothing;
+       }
+       /* @@ Wine registry key: HKCU\Software\Wine\Direct3D */
+       if ( RegOpenKeyA( HKEY_CURRENT_USER, "Software\\Wine\\Direct3D", &hkey ) ) hkey = 0;
+
+       len = GetModuleFileNameA( 0, buffer, MAX_PATH );
+       if (len && len < MAX_PATH)
+       {
+            HKEY tmpkey;
+            /* @@ Wine registry key: HKCU\Software\Wine\AppDefaults\app.exe\Direct3D */
+            if (!RegOpenKeyA( HKEY_CURRENT_USER, "Software\\Wine\\AppDefaults", &tmpkey ))
+            {
+                char *p, *appname = buffer;
+                if ((p = strrchr( appname, '/' ))) appname = p + 1;
+                if ((p = strrchr( appname, '\\' ))) appname = p + 1;
+                strcat( appname, "\\Direct3D" );
+                TRACE("appname = [%s]\n", appname);
+                if (RegOpenKeyA( tmpkey, appname, &appkey )) appkey = 0;
+                RegCloseKey( tmpkey );
+            }
+       }
+
+       if ( 0 != hkey || 0 != appkey )
+       {
+            if ( !get_config_key( hkey, appkey, "VertexShaderMode", buffer, size) )
+            {
+                if (!strcmp(buffer,"none"))
+                {
+                    TRACE("Disable vertex shaders\n");
+                    wined3d_settings.vs_mode = VS_NONE;
+                }
+            }
+            if ( !get_config_key( hkey, appkey, "PixelShaderMode", buffer, size) )
+            {
+                if (!strcmp(buffer,"enabled"))
+                {
+                    TRACE("Allow pixel shaders\n");
+                    wined3d_settings.ps_mode = PS_HW;
+                }
+                if (!strcmp(buffer,"disabled"))
+                {
+                    TRACE("Disable pixel shaders\n");
+                    wined3d_settings.ps_mode = PS_NONE;
+                }
+            }
+            if ( !get_config_key( hkey, appkey, "VertexBufferMode", buffer, size) )
+            {
+                if (!strcmp(buffer,"none"))
+                {
+                    TRACE("Disable Vertex Buffer Hardware support\n");
+                    wined3d_settings.vbo_mode = VBO_NONE;
+                }
+                else if (!strcmp(buffer,"hardware"))
+                {
+                    TRACE("Allow Vertex Buffer Hardware support\n");
+                    wined3d_settings.vbo_mode = VBO_HW;
+                }
+            }
+            if ( !get_config_key( hkey, appkey, "UseGLSL", buffer, size) )
+            {
+                if (!strcmp(buffer,"disabled"))
+                {
+                    TRACE("Use of GL Shading Language disabled\n");
+                    wined3d_settings.glslRequested = FALSE;
+                }
+            }
+            if ( !get_config_key( hkey, appkey, "OffscreenRenderingMode", buffer, size) )
+            {
+                if (!strcmp(buffer,"backbuffer"))
+                {
+                    TRACE("Using the backbuffer for offscreen rendering\n");
+                    wined3d_settings.offscreen_rendering_mode = ORM_BACKBUFFER;
+                }
+                else if (!strcmp(buffer,"pbuffer"))
+                {
+                    TRACE("Using PBuffers for offscreen rendering\n");
+                    wined3d_settings.offscreen_rendering_mode = ORM_PBUFFER;
+                }
+                else if (!strcmp(buffer,"fbo"))
+                {
+                    TRACE("Using FBOs for offscreen rendering\n");
+                    wined3d_settings.offscreen_rendering_mode = ORM_FBO;
+                }
+            }
+            if ( !get_config_key( hkey, appkey, "RenderTargetLockMode", buffer, size) )
+            {
+                if (!strcmp(buffer,"disabled"))
+                {
+                    TRACE("Disabling render target locking\n");
+                    wined3d_settings.rendertargetlock_mode = RTL_DISABLE;
+                }
+                else if (!strcmp(buffer,"readdraw"))
+                {
+                    TRACE("Using glReadPixels for render target reading and glDrawPixels for writing\n");
+                    wined3d_settings.rendertargetlock_mode = RTL_READDRAW;
+                }
+                else if (!strcmp(buffer,"readtex"))
+                {
+                    TRACE("Using glReadPixels for render target reading and textures for writing\n");
+                    wined3d_settings.rendertargetlock_mode = RTL_READTEX;
+                }
+                else if (!strcmp(buffer,"texdraw"))
+                {
+                    TRACE("Using textures for render target reading and glDrawPixels for writing\n");
+                    wined3d_settings.rendertargetlock_mode = RTL_TEXDRAW;
+                }
+                else if (!strcmp(buffer,"textex"))
+                {
+                    TRACE("Reading render targets via textures and writing via textures\n");
+                    wined3d_settings.rendertargetlock_mode = RTL_TEXTEX;
+                }
+            }
+            if ( !get_config_key_dword( hkey, appkey, "VideoPciDeviceID", &tmpvalue) )
+            {
+                int pci_device_id = tmpvalue;
+
+                /* A pci device id is 16-bit */
+                if(pci_device_id > 0xffff)
+                {
+                    ERR("Invalid value for VideoPciDeviceID. The value should be smaller or equal to 65535 or 0xffff\n");
+                }
+                else
+                {
+                    TRACE("Using PCI Device ID %04x\n", pci_device_id);
+                    wined3d_settings.pci_device_id = pci_device_id;
+                }
+            }
+            if ( !get_config_key_dword( hkey, appkey, "VideoPciVendorID", &tmpvalue) )
+            {
+                int pci_vendor_id = tmpvalue;
+
+                /* A pci device id is 16-bit */
+                if(pci_vendor_id > 0xffff)
+                {
+                    ERR("Invalid value for VideoPciVendorID. The value should be smaller or equal to 65535 or 0xffff\n");
+                }
+                else
+                {
+                    TRACE("Using PCI Vendor ID %04x\n", pci_vendor_id);
+                    wined3d_settings.pci_vendor_id = pci_vendor_id;
+                }
+            }
+            if ( !get_config_key( hkey, appkey, "VideoMemorySize", buffer, size) )
+            {
+                int TmpVideoMemorySize = atoi(buffer);
+                if(TmpVideoMemorySize > 0)
+                {
+                    wined3d_settings.emulated_textureram = TmpVideoMemorySize *1024*1024;
+                    TRACE("Use %iMB = %d byte for emulated_textureram\n",
+                            TmpVideoMemorySize,
+                            wined3d_settings.emulated_textureram);
+                }
+                else
+                    ERR("VideoMemorySize is %i but must be >0\n", TmpVideoMemorySize);
+            }
+            if ( !get_config_key( hkey, appkey, "WineLogo", buffer, size) )
+            {
+                wined3d_settings.logo = HeapAlloc(GetProcessHeap(), 0, strlen(buffer) + 1);
+                if(wined3d_settings.logo) strcpy(wined3d_settings.logo, buffer);
+            }
+            if ( !get_config_key( hkey, appkey, "Multisampling", buffer, size) )
+            {
+                if (!strcmp(buffer,"enabled"))
+                {
+                    TRACE("Allow multisampling\n");
+                    wined3d_settings.allow_multisampling = TRUE;
+                }
+            }
+       }
+       if (wined3d_settings.vs_mode == VS_HW)
+           TRACE("Allow HW vertex shaders\n");
+       if (wined3d_settings.ps_mode == PS_NONE)
+           TRACE("Disable pixel shaders\n");
+       if (wined3d_settings.vbo_mode == VBO_NONE)
+           TRACE("Disable Vertex Buffer Hardware support\n");
+       if (wined3d_settings.glslRequested)
+           TRACE("If supported by your system, GL Shading Language will be used\n");
+
+       if (appkey) RegCloseKey( appkey );
+       if (hkey) RegCloseKey( hkey );
+    }
+    return TRUE;
+}
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/wined3d_private.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/wined3d_private.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/wined3d_private.h	(revision 16410)
@@ -0,0 +1,2489 @@
+/*
+ * Direct3D wine internal private include file
+ *
+ * Copyright 2002-2003 The wine-d3d team
+ * Copyright 2002-2003 Raphael Junqueira
+ * Copyright 2004 Jason Edmeades
+ * Copyright 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINED3D_PRIVATE_H
+#define __WINE_WINED3D_PRIVATE_H
+
+#include <stdarg.h>
+#include <math.h>
+#define NONAMELESSUNION
+#define NONAMELESSSTRUCT
+#define COBJMACROS
+#include "windef.h"
+#include "winbase.h"
+#include "winreg.h"
+#include "wingdi.h"
+#include "winuser.h"
+#include "wine/debug.h"
+#include "wine/unicode.h"
+
+#include "objbase.h"
+#include "wined3d_private_types.h"
+#include "wine/wined3d.h"
+#include "wined3d_gl.h"
+#include "wine/list.h"
+
+/* Texture format fixups */
+
+enum fixup_channel_source
+{
+    CHANNEL_SOURCE_ZERO = 0,
+    CHANNEL_SOURCE_ONE = 1,
+    CHANNEL_SOURCE_X = 2,
+    CHANNEL_SOURCE_Y = 3,
+    CHANNEL_SOURCE_Z = 4,
+    CHANNEL_SOURCE_W = 5,
+    CHANNEL_SOURCE_YUV0 = 6,
+    CHANNEL_SOURCE_YUV1 = 7,
+};
+
+enum yuv_fixup
+{
+    YUV_FIXUP_YUY2 = 0,
+    YUV_FIXUP_UYVY = 1,
+    YUV_FIXUP_YV12 = 2,
+};
+
+#include <pshpack2.h>
+struct color_fixup_desc
+{
+    unsigned x_sign_fixup : 1;
+    unsigned x_source : 3;
+    unsigned y_sign_fixup : 1;
+    unsigned y_source : 3;
+    unsigned z_sign_fixup : 1;
+    unsigned z_source : 3;
+    unsigned w_sign_fixup : 1;
+    unsigned w_source : 3;
+};
+#include <poppack.h>
+
+static const struct color_fixup_desc COLOR_FIXUP_IDENTITY =
+        {0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_Y, 0, CHANNEL_SOURCE_Z, 0, CHANNEL_SOURCE_W};
+
+static inline struct color_fixup_desc create_color_fixup_desc(
+        int sign0, enum fixup_channel_source src0, int sign1, enum fixup_channel_source src1,
+        int sign2, enum fixup_channel_source src2, int sign3, enum fixup_channel_source src3)
+{
+    struct color_fixup_desc fixup =
+    {
+        sign0, src0,
+        sign1, src1,
+        sign2, src2,
+        sign3, src3,
+    };
+    return fixup;
+}
+
+static inline struct color_fixup_desc create_yuv_fixup_desc(enum yuv_fixup yuv_fixup)
+{
+    struct color_fixup_desc fixup =
+    {
+        0, yuv_fixup & (1 << 0) ? CHANNEL_SOURCE_YUV1 : CHANNEL_SOURCE_YUV0,
+        0, yuv_fixup & (1 << 1) ? CHANNEL_SOURCE_YUV1 : CHANNEL_SOURCE_YUV0,
+        0, yuv_fixup & (1 << 2) ? CHANNEL_SOURCE_YUV1 : CHANNEL_SOURCE_YUV0,
+        0, yuv_fixup & (1 << 3) ? CHANNEL_SOURCE_YUV1 : CHANNEL_SOURCE_YUV0,
+    };
+    return fixup;
+}
+
+static inline BOOL is_identity_fixup(struct color_fixup_desc fixup)
+{
+    return !memcmp(&fixup, &COLOR_FIXUP_IDENTITY, sizeof(fixup));
+}
+
+static inline BOOL is_yuv_fixup(struct color_fixup_desc fixup)
+{
+    return fixup.x_source == CHANNEL_SOURCE_YUV0 || fixup.x_source == CHANNEL_SOURCE_YUV1;
+}
+
+static inline enum yuv_fixup get_yuv_fixup(struct color_fixup_desc fixup)
+{
+    enum yuv_fixup yuv_fixup = 0;
+    if (fixup.x_source == CHANNEL_SOURCE_YUV1) yuv_fixup |= (1 << 0);
+    if (fixup.y_source == CHANNEL_SOURCE_YUV1) yuv_fixup |= (1 << 1);
+    if (fixup.z_source == CHANNEL_SOURCE_YUV1) yuv_fixup |= (1 << 2);
+    if (fixup.w_source == CHANNEL_SOURCE_YUV1) yuv_fixup |= (1 << 3);
+    return yuv_fixup;
+}
+
+/* Hash table functions */
+typedef unsigned int (hash_function_t)(const void *key);
+typedef BOOL (compare_function_t)(const void *keya, const void *keyb);
+
+struct hash_table_entry_t {
+    void *key;
+    void *value;
+    unsigned int hash;
+    struct list entry;
+};
+
+struct hash_table_t {
+    hash_function_t *hash_function;
+    compare_function_t *compare_function;
+    struct list *buckets;
+    unsigned int bucket_count;
+    struct hash_table_entry_t *entries;
+    unsigned int entry_count;
+    struct list free_entries;
+    unsigned int count;
+    unsigned int grow_size;
+    unsigned int shrink_size;
+};
+
+struct hash_table_t *hash_table_create(hash_function_t *hash_function, compare_function_t *compare_function);
+void hash_table_destroy(struct hash_table_t *table, void (*free_value)(void *value, void *cb), void *cb);
+void *hash_table_get(const struct hash_table_t *table, const void *key);
+void hash_table_put(struct hash_table_t *table, void *key, void *value);
+void hash_table_remove(struct hash_table_t *table, void *key);
+
+/* Device caps */
+#define MAX_PALETTES            65536
+#define MAX_STREAMS             16
+#define MAX_TEXTURES            8
+#define MAX_FRAGMENT_SAMPLERS   16
+#define MAX_VERTEX_SAMPLERS     4
+#define MAX_COMBINED_SAMPLERS   (MAX_FRAGMENT_SAMPLERS + MAX_VERTEX_SAMPLERS)
+#define MAX_ACTIVE_LIGHTS       8
+#define MAX_CLIPPLANES          WINED3DMAXUSERCLIPPLANES
+#define MAX_LEVELS              256
+
+#define MAX_CONST_I 16
+#define MAX_CONST_B 16
+
+/* Used for CreateStateBlock */
+#define NUM_SAVEDPIXELSTATES_R     35
+#define NUM_SAVEDPIXELSTATES_T     18
+#define NUM_SAVEDPIXELSTATES_S     12
+#define NUM_SAVEDVERTEXSTATES_R    34
+#define NUM_SAVEDVERTEXSTATES_T    2
+#define NUM_SAVEDVERTEXSTATES_S    1
+
+extern const DWORD SavedPixelStates_R[NUM_SAVEDPIXELSTATES_R];
+extern const DWORD SavedPixelStates_T[NUM_SAVEDPIXELSTATES_T];
+extern const DWORD SavedPixelStates_S[NUM_SAVEDPIXELSTATES_S];
+extern const DWORD SavedVertexStates_R[NUM_SAVEDVERTEXSTATES_R];
+extern const DWORD SavedVertexStates_T[NUM_SAVEDVERTEXSTATES_T];
+extern const DWORD SavedVertexStates_S[NUM_SAVEDVERTEXSTATES_S];
+
+typedef enum _WINELOOKUP {
+    WINELOOKUP_WARPPARAM = 0,
+    MAX_LOOKUPS          = 1
+} WINELOOKUP;
+
+extern const int minLookup[MAX_LOOKUPS];
+extern const int maxLookup[MAX_LOOKUPS];
+extern DWORD *stateLookup[MAX_LOOKUPS];
+
+struct min_lookup
+{
+    GLenum mip[WINED3DTEXF_LINEAR + 1];
+};
+
+struct min_lookup minMipLookup[WINED3DTEXF_ANISOTROPIC + 1];
+const struct min_lookup minMipLookup_noFilter[WINED3DTEXF_ANISOTROPIC + 1];
+GLenum magLookup[WINED3DTEXF_ANISOTROPIC + 1];
+const GLenum magLookup_noFilter[WINED3DTEXF_ANISOTROPIC + 1];
+
+extern const struct filter_lookup filter_lookup_nofilter;
+extern struct filter_lookup filter_lookup;
+
+void init_type_lookup(WineD3D_GL_Info *gl_info);
+#define WINED3D_ATR_TYPE(type)          GLINFO_LOCATION.glTypeLookup[type].d3dType
+#define WINED3D_ATR_SIZE(type)          GLINFO_LOCATION.glTypeLookup[type].size
+#define WINED3D_ATR_GLTYPE(type)        GLINFO_LOCATION.glTypeLookup[type].glType
+#define WINED3D_ATR_NORMALIZED(type)    GLINFO_LOCATION.glTypeLookup[type].normalized
+#define WINED3D_ATR_TYPESIZE(type)      GLINFO_LOCATION.glTypeLookup[type].typesize
+
+/* float_16_to_32() and float_32_to_16() (see implementation in
+ * surface_base.c) convert 16 bit floats in the FLOAT16 data type
+ * to standard C floats and vice versa. They do not depend on the encoding
+ * of the C float, so they are platform independent, but slow. On x86 and
+ * other IEEE 754 compliant platforms the conversion can be accelerated by
+ * bit shifting the exponent and mantissa. There are also some SSE-based
+ * assembly routines out there.
+ *
+ * See GL_NV_half_float for a reference of the FLOAT16 / GL_HALF format
+ */
+static inline float float_16_to_32(const unsigned short *in) {
+    const unsigned short s = ((*in) & 0x8000);
+    const unsigned short e = ((*in) & 0x7C00) >> 10;
+    const unsigned short m = (*in) & 0x3FF;
+    const float sgn = (s ? -1.0 : 1.0);
+    unsigned long fNaN = 0x7fc00000;
+
+    if(e == 0) {
+        if(m == 0) return sgn * 0.0; /* +0.0 or -0.0 */
+        else return sgn * pow(2, -14.0) * ( (float) m / 1024.0);
+    } else if(e < 31) {
+        return sgn * pow(2, (float) e-15.0) * (1.0 + ((float) m / 1024.0));
+    } else {
+        if(m == 0) return sgn / 0.0; /* +INF / -INF */
+        else return *(float*)(&fNaN); //0.0 / 0.0; /* NAN */
+    }
+}
+
+/**
+ * Settings 
+ */
+#define VS_NONE    0
+#define VS_HW      1
+
+#define PS_NONE    0
+#define PS_HW      1
+
+#define VBO_NONE   0
+#define VBO_HW     1
+
+#define NP2_NONE   0
+#define NP2_REPACK 1
+#define NP2_NATIVE 2
+
+#define ORM_BACKBUFFER  0
+#define ORM_PBUFFER     1
+#define ORM_FBO         2
+
+#define SHADER_ARB  1
+#define SHADER_GLSL 2
+#define SHADER_ATI  3
+#define SHADER_NONE 4
+
+#define RTL_DISABLE   -1
+#define RTL_AUTO       0
+#define RTL_READDRAW   1
+#define RTL_READTEX    2
+#define RTL_TEXDRAW    3
+#define RTL_TEXTEX     4
+
+#define PCI_VENDOR_NONE 0xffff /* e.g. 0x8086 for Intel and 0x10de for Nvidia */
+#define PCI_DEVICE_NONE 0xffff /* e.g. 0x14f for a Geforce6200 */
+
+/* NOTE: When adding fields to this structure, make sure to update the default
+ * values in wined3d_main.c as well. */
+typedef struct wined3d_settings_s {
+/* vertex and pixel shader modes */
+  int vs_mode;
+  int ps_mode;
+  int vbo_mode;
+/* Ideally, we don't want the user to have to request GLSL.  If the hardware supports GLSL,
+    we should use it.  However, until it's fully implemented, we'll leave it as a registry
+    setting for developers. */
+  BOOL glslRequested;
+  int offscreen_rendering_mode;
+  int rendertargetlock_mode;
+  unsigned short pci_vendor_id;
+  unsigned short pci_device_id;
+/* Memory tracking and object counting */
+  unsigned int emulated_textureram;
+  char *logo;
+  int allow_multisampling;
+} wined3d_settings_t;
+
+extern wined3d_settings_t wined3d_settings;
+
+/* Shader backends */
+struct SHADER_OPCODE_ARG;
+
+#define SHADER_PGMSIZE 65535
+typedef struct SHADER_BUFFER {
+    char* buffer;
+    unsigned int bsize;
+    unsigned int lineNo;
+    BOOL newline;
+} SHADER_BUFFER;
+
+enum WINED3D_SHADER_INSTRUCTION_HANDLER
+{
+    WINED3DSIH_ABS,
+    WINED3DSIH_ADD,
+    WINED3DSIH_BEM,
+    WINED3DSIH_BREAK,
+    WINED3DSIH_BREAKC,
+    WINED3DSIH_BREAKP,
+    WINED3DSIH_CALL,
+    WINED3DSIH_CALLNZ,
+    WINED3DSIH_CMP,
+    WINED3DSIH_CND,
+    WINED3DSIH_CRS,
+    WINED3DSIH_DCL,
+    WINED3DSIH_DEF,
+    WINED3DSIH_DEFB,
+    WINED3DSIH_DEFI,
+    WINED3DSIH_DP2ADD,
+    WINED3DSIH_DP3,
+    WINED3DSIH_DP4,
+    WINED3DSIH_DST,
+    WINED3DSIH_DSX,
+    WINED3DSIH_DSY,
+    WINED3DSIH_ELSE,
+    WINED3DSIH_ENDIF,
+    WINED3DSIH_ENDLOOP,
+    WINED3DSIH_ENDREP,
+    WINED3DSIH_EXP,
+    WINED3DSIH_EXPP,
+    WINED3DSIH_FRC,
+    WINED3DSIH_IF,
+    WINED3DSIH_IFC,
+    WINED3DSIH_LABEL,
+    WINED3DSIH_LIT,
+    WINED3DSIH_LOG,
+    WINED3DSIH_LOGP,
+    WINED3DSIH_LOOP,
+    WINED3DSIH_LRP,
+    WINED3DSIH_M3x2,
+    WINED3DSIH_M3x3,
+    WINED3DSIH_M3x4,
+    WINED3DSIH_M4x3,
+    WINED3DSIH_M4x4,
+    WINED3DSIH_MAD,
+    WINED3DSIH_MAX,
+    WINED3DSIH_MIN,
+    WINED3DSIH_MOV,
+    WINED3DSIH_MOVA,
+    WINED3DSIH_MUL,
+    WINED3DSIH_NOP,
+    WINED3DSIH_NRM,
+    WINED3DSIH_PHASE,
+    WINED3DSIH_POW,
+    WINED3DSIH_RCP,
+    WINED3DSIH_REP,
+    WINED3DSIH_RET,
+    WINED3DSIH_RSQ,
+    WINED3DSIH_SETP,
+    WINED3DSIH_SGE,
+    WINED3DSIH_SGN,
+    WINED3DSIH_SINCOS,
+    WINED3DSIH_SLT,
+    WINED3DSIH_SUB,
+    WINED3DSIH_TEX,
+    WINED3DSIH_TEXBEM,
+    WINED3DSIH_TEXBEML,
+    WINED3DSIH_TEXCOORD,
+    WINED3DSIH_TEXDEPTH,
+    WINED3DSIH_TEXDP3,
+    WINED3DSIH_TEXDP3TEX,
+    WINED3DSIH_TEXKILL,
+    WINED3DSIH_TEXLDD,
+    WINED3DSIH_TEXLDL,
+    WINED3DSIH_TEXM3x2DEPTH,
+    WINED3DSIH_TEXM3x2PAD,
+    WINED3DSIH_TEXM3x2TEX,
+    WINED3DSIH_TEXM3x3,
+    WINED3DSIH_TEXM3x3DIFF,
+    WINED3DSIH_TEXM3x3PAD,
+    WINED3DSIH_TEXM3x3SPEC,
+    WINED3DSIH_TEXM3x3TEX,
+    WINED3DSIH_TEXM3x3VSPEC,
+    WINED3DSIH_TEXREG2AR,
+    WINED3DSIH_TEXREG2GB,
+    WINED3DSIH_TEXREG2RGB,
+    WINED3DSIH_TABLE_SIZE
+};
+
+typedef void (*SHADER_HANDLER)(const struct SHADER_OPCODE_ARG *);
+
+struct shader_caps {
+    DWORD               VertexShaderVersion;
+    DWORD               MaxVertexShaderConst;
+
+    DWORD               PixelShaderVersion;
+    float               PixelShader1xMaxValue;
+
+    WINED3DVSHADERCAPS2_0   VS20Caps;
+    WINED3DPSHADERCAPS2_0   PS20Caps;
+
+    DWORD               MaxVShaderInstructionsExecuted;
+    DWORD               MaxPShaderInstructionsExecuted;
+    DWORD               MaxVertexShader30InstructionSlots;
+    DWORD               MaxPixelShader30InstructionSlots;
+};
+
+enum tex_types
+{
+    tex_1d       = 0,
+    tex_2d       = 1,
+    tex_3d       = 2,
+    tex_cube     = 3,
+    tex_rect     = 4,
+    tex_type_count = 5,
+};
+
+typedef struct {
+    const SHADER_HANDLER *shader_instruction_handler_table;
+    void (*shader_select)(IWineD3DDevice *iface, BOOL usePS, BOOL useVS);
+    void (*shader_select_depth_blt)(IWineD3DDevice *iface, enum tex_types tex_type);
+    void (*shader_deselect_depth_blt)(IWineD3DDevice *iface);
+    void (*shader_load_constants)(IWineD3DDevice *iface, char usePS, char useVS);
+    void (*shader_cleanup)(IWineD3DDevice *iface);
+    void (*shader_color_correction)(const struct SHADER_OPCODE_ARG *arg, struct color_fixup_desc fixup);
+    void (*shader_destroy)(IWineD3DBaseShader *iface);
+    HRESULT (*shader_alloc_private)(IWineD3DDevice *iface);
+    void (*shader_free_private)(IWineD3DDevice *iface);
+    BOOL (*shader_dirtifyable_constants)(IWineD3DDevice *iface);
+    GLuint (*shader_generate_pshader)(IWineD3DPixelShader *iface, SHADER_BUFFER *buffer);
+    void (*shader_generate_vshader)(IWineD3DVertexShader *iface, SHADER_BUFFER *buffer);
+    void (*shader_get_caps)(WINED3DDEVTYPE devtype, const WineD3D_GL_Info *gl_info, struct shader_caps *caps);
+    BOOL (*shader_color_fixup_supported)(struct color_fixup_desc fixup);
+} shader_backend_t;
+
+extern const shader_backend_t glsl_shader_backend;
+extern const shader_backend_t arb_program_shader_backend;
+extern const shader_backend_t none_shader_backend;
+
+/* X11 locking */
+
+extern void (*wine_tsx11_lock_ptr)(void);
+extern void (*wine_tsx11_unlock_ptr)(void);
+
+/* As GLX relies on X, this is needed */
+extern int num_lock;
+
+#if 0
+#define ENTER_GL() ++num_lock; if (num_lock > 1) FIXME("Recursive use of GL lock to: %d\n", num_lock); wine_tsx11_lock_ptr()
+#define LEAVE_GL() if (num_lock != 1) FIXME("Recursive use of GL lock: %d\n", num_lock); --num_lock; wine_tsx11_unlock_ptr()
+#else
+#define ENTER_GL() wine_tsx11_lock_ptr()
+#define LEAVE_GL() wine_tsx11_unlock_ptr()
+#endif
+
+/*****************************************************************************
+ * Defines
+ */
+
+/* GL related defines */
+/* ------------------ */
+#define GL_SUPPORT(ExtName)           (GLINFO_LOCATION.supported[ExtName] != 0)
+#define GL_LIMITS(ExtName)            (GLINFO_LOCATION.max_##ExtName)
+#define GL_EXTCALL(FuncName)          (GLINFO_LOCATION.FuncName)
+#define GL_VEND(_VendName)            (GLINFO_LOCATION.gl_vendor == VENDOR_##_VendName ? TRUE : FALSE)
+
+#define D3DCOLOR_B_R(dw) (((dw) >> 16) & 0xFF)
+#define D3DCOLOR_B_G(dw) (((dw) >>  8) & 0xFF)
+#define D3DCOLOR_B_B(dw) (((dw) >>  0) & 0xFF)
+#define D3DCOLOR_B_A(dw) (((dw) >> 24) & 0xFF)
+
+#define D3DCOLOR_R(dw) (((float) (((dw) >> 16) & 0xFF)) / 255.0f)
+#define D3DCOLOR_G(dw) (((float) (((dw) >>  8) & 0xFF)) / 255.0f)
+#define D3DCOLOR_B(dw) (((float) (((dw) >>  0) & 0xFF)) / 255.0f)
+#define D3DCOLOR_A(dw) (((float) (((dw) >> 24) & 0xFF)) / 255.0f)
+
+#define D3DCOLORTOGLFLOAT4(dw, vec) do { \
+  (vec)[0] = D3DCOLOR_R(dw); \
+  (vec)[1] = D3DCOLOR_G(dw); \
+  (vec)[2] = D3DCOLOR_B(dw); \
+  (vec)[3] = D3DCOLOR_A(dw); \
+} while(0)
+
+/* DirectX Device Limits */
+/* --------------------- */
+#define MAX_LEVELS  256  /* Maximum number of mipmap levels. Guessed at 256 */
+
+#define MAX_STREAMS  16  /* Maximum possible streams - used for fixed size arrays
+                            See MaxStreams in MSDN under GetDeviceCaps */
+                         /* Maximum number of constants provided to the shaders */
+#define HIGHEST_TRANSFORMSTATE 512 
+                         /* Highest value in WINED3DTRANSFORMSTATETYPE */
+
+/* Checking of API calls */
+/* --------------------- */
+#ifndef WINE_NO_DEBUG_MSGS
+#define checkGLcall(A)                                          \
+do {                                                            \
+    GLint err = glGetError();                                   \
+    if (err == GL_NO_ERROR) {                                   \
+       TRACE("%s call ok %s / %d\n", A, __FILE__, __LINE__);    \
+                                                                \
+    } else do {                                                 \
+        FIXME(">>>>>>>>>>>>>>>>> %s (%#x) from %s @ %s / %d\n", \
+            debug_glerror(err), err, A, __FILE__, __LINE__);    \
+       err = glGetError();                                      \
+    } while (err != GL_NO_ERROR);                               \
+} while(0)
+#else
+#define checkGLcall(A) do {} while(0)
+#endif
+
+/* Trace routines / diagnostics */
+/* ---------------------------- */
+
+/* Dump out a matrix and copy it */
+#define conv_mat(mat,gl_mat)                                                                \
+do {                                                                                        \
+    TRACE("%f %f %f %f\n", (mat)->u.s._11, (mat)->u.s._12, (mat)->u.s._13, (mat)->u.s._14); \
+    TRACE("%f %f %f %f\n", (mat)->u.s._21, (mat)->u.s._22, (mat)->u.s._23, (mat)->u.s._24); \
+    TRACE("%f %f %f %f\n", (mat)->u.s._31, (mat)->u.s._32, (mat)->u.s._33, (mat)->u.s._34); \
+    TRACE("%f %f %f %f\n", (mat)->u.s._41, (mat)->u.s._42, (mat)->u.s._43, (mat)->u.s._44); \
+    memcpy(gl_mat, (mat), 16 * sizeof(float));                                              \
+} while (0)
+
+/* Macro to dump out the current state of the light chain */
+#define DUMP_LIGHT_CHAIN()                    \
+do {                                          \
+  PLIGHTINFOEL *el = This->stateBlock->lights;\
+  while (el) {                                \
+    TRACE("Light %p (glIndex %ld, d3dIndex %ld, enabled %d)\n", el, el->glIndex, el->OriginalIndex, el->lightEnabled);\
+    el = el->next;                            \
+  }                                           \
+} while(0)
+
+/* Trace vector and strided data information */
+#define TRACE_VECTOR(name) TRACE( #name "=(%f, %f, %f, %f)\n", name.x, name.y, name.z, name.w);
+#define TRACE_STRIDED(sd,name) TRACE( #name "=(data:%p, stride:%d, type:%d, vbo %d, stream %u)\n", \
+        sd->u.s.name.lpData, sd->u.s.name.dwStride, sd->u.s.name.dwType, sd->u.s.name.VBO, sd->u.s.name.streamNo);
+
+/* Defines used for optimizations */
+
+/*    Only reapply what is necessary */
+#define REAPPLY_ALPHAOP  0x0001
+#define REAPPLY_ALL      0xFFFF
+
+/* Advance declaration of structures to satisfy compiler */
+typedef struct IWineD3DStateBlockImpl IWineD3DStateBlockImpl;
+typedef struct IWineD3DSurfaceImpl    IWineD3DSurfaceImpl;
+typedef struct IWineD3DPaletteImpl    IWineD3DPaletteImpl;
+typedef struct IWineD3DDeviceImpl     IWineD3DDeviceImpl;
+
+/* Global variables */
+extern const float identity[16];
+
+/*****************************************************************************
+ * Compilable extra diagnostics
+ */
+
+/* Trace information per-vertex: (extremely high amount of trace) */
+#if 0 /* NOTE: Must be 0 in cvs */
+# define VTRACE(A) TRACE A
+#else 
+# define VTRACE(A) 
+#endif
+
+/* TODO: Confirm each of these works when wined3d move completed */
+#if 0 /* NOTE: Must be 0 in cvs */
+  /* To avoid having to get gigabytes of trace, the following can be compiled in, and at the start
+     of each frame, a check is made for the existence of C:\D3DTRACE, and if it exists d3d trace
+     is enabled, and if it doesn't exist it is disabled. */
+# define FRAME_DEBUGGING
+  /*  Adding in the SINGLE_FRAME_DEBUGGING gives a trace of just what makes up a single frame, before
+      the file is deleted                                                                            */
+# if 1 /* NOTE: Must be 1 in cvs, as this is mostly more useful than a trace from program start */
+#  define SINGLE_FRAME_DEBUGGING
+# endif  
+  /* The following, when enabled, lets you see the makeup of the frame, by drawprimitive calls.
+     It can only be enabled when FRAME_DEBUGGING is also enabled                               
+     The contents of the back buffer are written into /tmp/backbuffer_* after each primitive 
+     array is drawn.                                                                            */
+# if 0 /* NOTE: Must be 0 in cvs, as this give a lot of ppm files when compiled in */                                                                                       
+#  define SHOW_FRAME_MAKEUP 1
+# endif  
+  /* The following, when enabled, lets you see the makeup of the all the textures used during each
+     of the drawprimitive calls. It can only be enabled when SHOW_FRAME_MAKEUP is also enabled.
+     The contents of the textures assigned to each stage are written into 
+     /tmp/texture_*_<Stage>.ppm after each primitive array is drawn.                            */
+# if 0 /* NOTE: Must be 0 in cvs, as this give a lot of ppm files when compiled in */
+#  define SHOW_TEXTURE_MAKEUP 0
+# endif  
+extern BOOL isOn;
+extern BOOL isDumpingFrames;
+extern LONG primCounter;
+#endif
+
+/*****************************************************************************
+ * Prototypes
+ */
+
+/* Routine common to the draw primitive and draw indexed primitive routines */
+void drawPrimitive(IWineD3DDevice *iface,
+                    int PrimitiveType,
+                    long NumPrimitives,
+                    /* for Indexed: */
+                    long  StartVertexIndex,
+                    UINT  numberOfVertices,
+                    long  StartIdx,
+                    short idxBytes,
+                    const void *idxData,
+                    int   minIndex);
+
+void primitiveDeclarationConvertToStridedData(
+     IWineD3DDevice *iface,
+     BOOL useVertexShaderFunction,
+     WineDirect3DVertexStridedData *strided,
+     BOOL *fixup);
+
+DWORD get_flexible_vertex_size(DWORD d3dvtVertexType);
+
+typedef void (WINE_GLAPI *glAttribFunc)(const void *data);
+typedef void (WINE_GLAPI *glMultiTexCoordFunc)(GLenum unit, const void *data);
+extern glAttribFunc position_funcs[WINED3DDECLTYPE_UNUSED];
+extern glAttribFunc diffuse_funcs[WINED3DDECLTYPE_UNUSED];
+extern glAttribFunc specular_funcs[WINED3DDECLTYPE_UNUSED];
+extern glAttribFunc normal_funcs[WINED3DDECLTYPE_UNUSED];
+extern glMultiTexCoordFunc multi_texcoord_funcs[WINED3DDECLTYPE_UNUSED];
+extern glAttribFunc texcoord_funcs[WINED3DDECLTYPE_UNUSED];
+
+#define eps 1e-8
+
+#define GET_TEXCOORD_SIZE_FROM_FVF(d3dvtVertexType, tex_num) \
+    (((((d3dvtVertexType) >> (16 + (2 * (tex_num)))) + 1) & 0x03) + 1)
+
+/* Routines and structures related to state management */
+typedef struct WineD3DContext WineD3DContext;
+typedef void (*APPLYSTATEFUNC)(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *ctx);
+
+#define STATE_RENDER(a) (a)
+#define STATE_IS_RENDER(a) ((a) >= STATE_RENDER(1) && (a) <= STATE_RENDER(WINEHIGHEST_RENDER_STATE))
+
+#define STATE_TEXTURESTAGE(stage, num) (STATE_RENDER(WINEHIGHEST_RENDER_STATE) + (stage) * WINED3D_HIGHEST_TEXTURE_STATE + (num))
+#define STATE_IS_TEXTURESTAGE(a) ((a) >= STATE_TEXTURESTAGE(0, 1) && (a) <= STATE_TEXTURESTAGE(MAX_TEXTURES - 1, WINED3D_HIGHEST_TEXTURE_STATE))
+
+/* + 1 because samplers start with 0 */
+#define STATE_SAMPLER(num) (STATE_TEXTURESTAGE(MAX_TEXTURES - 1, WINED3D_HIGHEST_TEXTURE_STATE) + 1 + (num))
+#define STATE_IS_SAMPLER(num) ((num) >= STATE_SAMPLER(0) && (num) <= STATE_SAMPLER(MAX_COMBINED_SAMPLERS - 1))
+
+#define STATE_PIXELSHADER (STATE_SAMPLER(MAX_COMBINED_SAMPLERS - 1) + 1)
+#define STATE_IS_PIXELSHADER(a) ((a) == STATE_PIXELSHADER)
+
+#define STATE_TRANSFORM(a) (STATE_PIXELSHADER + (a))
+#define STATE_IS_TRANSFORM(a) ((a) >= STATE_TRANSFORM(1) && (a) <= STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(255)))
+
+#define STATE_STREAMSRC (STATE_TRANSFORM(WINED3DTS_WORLDMATRIX(255)) + 1)
+#define STATE_IS_STREAMSRC(a) ((a) == STATE_STREAMSRC)
+#define STATE_INDEXBUFFER (STATE_STREAMSRC + 1)
+#define STATE_IS_INDEXBUFFER(a) ((a) == STATE_INDEXBUFFER)
+
+#define STATE_VDECL (STATE_INDEXBUFFER + 1)
+#define STATE_IS_VDECL(a) ((a) == STATE_VDECL)
+
+#define STATE_VSHADER (STATE_VDECL + 1)
+#define STATE_IS_VSHADER(a) ((a) == STATE_VSHADER)
+
+#define STATE_VIEWPORT (STATE_VSHADER + 1)
+#define STATE_IS_VIEWPORT(a) ((a) == STATE_VIEWPORT)
+
+#define STATE_VERTEXSHADERCONSTANT (STATE_VIEWPORT + 1)
+#define STATE_PIXELSHADERCONSTANT (STATE_VERTEXSHADERCONSTANT + 1)
+#define STATE_IS_VERTEXSHADERCONSTANT(a) ((a) == STATE_VERTEXSHADERCONSTANT)
+#define STATE_IS_PIXELSHADERCONSTANT(a) ((a) == STATE_PIXELSHADERCONSTANT)
+
+#define STATE_ACTIVELIGHT(a) (STATE_PIXELSHADERCONSTANT + (a) + 1)
+#define STATE_IS_ACTIVELIGHT(a) ((a) >= STATE_ACTIVELIGHT(0) && (a) < STATE_ACTIVELIGHT(MAX_ACTIVE_LIGHTS))
+
+#define STATE_SCISSORRECT (STATE_ACTIVELIGHT(MAX_ACTIVE_LIGHTS - 1) + 1)
+#define STATE_IS_SCISSORRECT(a) ((a) == STATE_SCISSORRECT)
+
+#define STATE_CLIPPLANE(a) (STATE_SCISSORRECT + 1 + (a))
+#define STATE_IS_CLIPPLANE(a) ((a) >= STATE_CLIPPLANE(0) && (a) <= STATE_CLIPPLANE(MAX_CLIPPLANES - 1))
+
+#define STATE_MATERIAL (STATE_CLIPPLANE(MAX_CLIPPLANES))
+
+#define STATE_FRONTFACE (STATE_MATERIAL + 1)
+
+#define STATE_HIGHEST (STATE_FRONTFACE)
+
+struct StateEntry
+{
+    DWORD               representative;
+    APPLYSTATEFUNC      apply;
+};
+
+struct StateEntryTemplate
+{
+    DWORD               state;
+    struct StateEntry   content;
+    GL_SupportedExt     extension;
+};
+
+struct fragment_caps {
+    DWORD               PrimitiveMiscCaps;
+
+    DWORD               TextureOpCaps;
+    DWORD               MaxTextureBlendStages;
+    DWORD               MaxSimultaneousTextures;
+};
+
+struct fragment_pipeline {
+    void (*enable_extension)(IWineD3DDevice *iface, BOOL enable);
+    void (*get_caps)(WINED3DDEVTYPE devtype, const WineD3D_GL_Info *gl_info, struct fragment_caps *caps);
+    HRESULT (*alloc_private)(IWineD3DDevice *iface);
+    void (*free_private)(IWineD3DDevice *iface);
+    BOOL (*color_fixup_supported)(struct color_fixup_desc fixup);
+    const struct StateEntryTemplate *states;
+    BOOL ffp_proj_control;
+};
+
+extern const struct StateEntryTemplate misc_state_template[];
+extern const struct StateEntryTemplate ffp_vertexstate_template[];
+extern const struct fragment_pipeline ffp_fragment_pipeline;
+extern const struct fragment_pipeline atifs_fragment_pipeline;
+extern const struct fragment_pipeline arbfp_fragment_pipeline;
+extern const struct fragment_pipeline nvts_fragment_pipeline;
+extern const struct fragment_pipeline nvrc_fragment_pipeline;
+
+/* "Base" state table */
+void compile_state_table(struct StateEntry *StateTable, APPLYSTATEFUNC **dev_multistate_funcs,
+        const WineD3D_GL_Info *gl_info, const struct StateEntryTemplate *vertex,
+        const struct fragment_pipeline *fragment, const struct StateEntryTemplate *misc);
+
+/* Shaders for color conversions in blits */
+struct blit_shader {
+    HRESULT (*alloc_private)(IWineD3DDevice *iface);
+    void (*free_private)(IWineD3DDevice *iface);
+    HRESULT (*set_shader)(IWineD3DDevice *iface, WINED3DFORMAT fmt, GLenum textype, UINT width, UINT height);
+    void (*unset_shader)(IWineD3DDevice *iface);
+    BOOL (*color_fixup_supported)(struct color_fixup_desc fixup);
+};
+
+extern const struct blit_shader ffp_blit;
+extern const struct blit_shader arbfp_blit;
+
+/* The new context manager that should deal with onscreen and offscreen rendering */
+struct WineD3DContext {
+    /* State dirtification
+     * dirtyArray is an array that contains markers for dirty states. numDirtyEntries states are dirty, their numbers are in indices
+     * 0...numDirtyEntries - 1. isStateDirty is a redundant copy of the dirtyArray. Technically only one of them would be needed,
+     * but with the help of both it is easy to find out if a state is dirty(just check the array index), and for applying dirty states
+     * only numDirtyEntries array elements have to be checked, not STATE_HIGHEST states.
+     */
+    DWORD                   dirtyArray[STATE_HIGHEST + 1]; /* Won't get bigger than that, a state is never marked dirty 2 times */
+    DWORD                   numDirtyEntries;
+    DWORD                   isStateDirty[STATE_HIGHEST/32 + 1]; /* Bitmap to find out quickly if a state is dirty */
+
+    IWineD3DSurface         *surface;
+    DWORD                   tid;    /* Thread ID which owns this context at the moment */
+
+    /* Stores some information about the context state for optimization */
+    BOOL                    draw_buffer_dirty;
+    BOOL                    last_was_rhw;      /* true iff last draw_primitive was in xyzrhw mode */
+    BOOL                    last_was_pshader;
+    BOOL                    last_was_vshader;
+    BOOL                    last_was_foggy_shader;
+    BOOL                    namedArraysLoaded, numberedArraysLoaded;
+    BOOL                    lastWasPow2Texture[MAX_TEXTURES];
+    GLenum                  tracking_parm;     /* Which source is tracking current colour         */
+    unsigned char           num_untracked_materials;
+    GLenum                  untracked_materials[2];
+    BOOL                    last_was_blit, last_was_ckey;
+    UINT                    blit_w, blit_h;
+    char                    texShaderBumpMap;
+    BOOL                    fog_coord;
+
+    char                    *vshader_const_dirty, *pshader_const_dirty;
+
+    /* The actual opengl context */
+    HGLRC                   glCtx;
+    HWND                    win_handle;
+    HDC                     hdc;
+    HPBUFFERARB             pbuffer;
+    BOOL                    isPBuffer;
+    GLint                   aux_buffers;
+
+    /* FBOs */
+    struct list             fbo_list;
+    struct fbo_entry        *current_fbo;
+    GLuint                  src_fbo;
+    GLuint                  dst_fbo;
+};
+
+typedef enum ContextUsage {
+    CTXUSAGE_RESOURCELOAD       = 1,    /* Only loads textures: No State is applied */
+    CTXUSAGE_DRAWPRIM           = 2,    /* OpenGL states are set up for blitting DirectDraw surfaces */
+    CTXUSAGE_BLIT               = 3,    /* OpenGL states are set up 3D drawing */
+    CTXUSAGE_CLEAR              = 4,    /* Drawable and states are set up for clearing */
+} ContextUsage;
+
+void ActivateContext(IWineD3DDeviceImpl *device, IWineD3DSurface *target, ContextUsage usage);
+WineD3DContext *CreateContext(IWineD3DDeviceImpl *This, IWineD3DSurfaceImpl *target, HWND win, BOOL create_pbuffer, const WINED3DPRESENT_PARAMETERS *pPresentParms);
+void DestroyContext(IWineD3DDeviceImpl *This, WineD3DContext *context);
+void context_resource_released(IWineD3DDevice *iface, IWineD3DResource *resource, WINED3DRESOURCETYPE type);
+void context_bind_fbo(IWineD3DDevice *iface, GLenum target, GLuint *fbo);
+void context_attach_depth_stencil_fbo(IWineD3DDeviceImpl *This, GLenum fbo_target, IWineD3DSurface *depth_stencil, BOOL use_render_buffer);
+void context_attach_surface_fbo(IWineD3DDeviceImpl *This, GLenum fbo_target, DWORD idx, IWineD3DSurface *surface);
+
+void delete_opengl_contexts(IWineD3DDevice *iface, IWineD3DSwapChain *swapchain);
+HRESULT create_primary_opengl_context(IWineD3DDevice *iface, IWineD3DSwapChain *swapchain);
+
+/* Macros for doing basic GPU detection based on opengl capabilities */
+#define WINE_D3D6_CAPABLE(gl_info) (gl_info->supported[ARB_MULTITEXTURE])
+#define WINE_D3D7_CAPABLE(gl_info) (gl_info->supported[ARB_TEXTURE_COMPRESSION] && gl_info->supported[ARB_TEXTURE_CUBE_MAP] && gl_info->supported[ARB_TEXTURE_ENV_DOT3])
+#define WINE_D3D8_CAPABLE(gl_info) WINE_D3D7_CAPABLE(gl_info) && (gl_info->supported[ARB_MULTISAMPLE] && gl_info->supported[ARB_TEXTURE_BORDER_CLAMP])
+#define WINE_D3D9_CAPABLE(gl_info) WINE_D3D8_CAPABLE(gl_info) && (gl_info->supported[ARB_FRAGMENT_PROGRAM] && gl_info->supported[ARB_VERTEX_SHADER])
+
+/* Default callbacks for implicit object destruction */
+extern ULONG WINAPI D3DCB_DefaultDestroySurface(IWineD3DSurface *pSurface);
+
+extern ULONG WINAPI D3DCB_DefaultDestroyVolume(IWineD3DVolume *pSurface);
+
+/*****************************************************************************
+ * Internal representation of a light
+ */
+typedef struct PLIGHTINFOEL PLIGHTINFOEL;
+struct PLIGHTINFOEL {
+    WINED3DLIGHT OriginalParms; /* Note D3D8LIGHT == D3D9LIGHT */
+    DWORD        OriginalIndex;
+    LONG         glIndex;
+    BOOL         changed;
+    BOOL         enabledChanged;
+    BOOL         enabled;
+
+    /* Converted parms to speed up swapping lights */
+    float                         lightPosn[4];
+    float                         lightDirn[4];
+    float                         exponent;
+    float                         cutoff;
+
+    struct list entry;
+};
+
+/* The default light parameters */
+extern const WINED3DLIGHT WINED3D_default_light;
+
+typedef struct WineD3D_PixelFormat
+{
+    int iPixelFormat; /* WGL pixel format */
+    int iPixelType; /* WGL pixel type e.g. WGL_TYPE_RGBA_ARB, WGL_TYPE_RGBA_FLOAT_ARB or WGL_TYPE_COLORINDEX_ARB */
+    int redSize, greenSize, blueSize, alphaSize;
+    int depthSize, stencilSize;
+    BOOL windowDrawable;
+    BOOL pbufferDrawable;
+    BOOL doubleBuffer;
+    int auxBuffers;
+    int numSamples;
+} WineD3D_PixelFormat;
+
+/* The adapter structure */
+struct WineD3DAdapter
+{
+    UINT                    num;
+    BOOL                    opengl;
+    POINT                   monitorPoint;
+    WineD3D_GL_Info         gl_info;
+    const char              *driver;
+    const char              *description;
+    WCHAR                   DeviceName[CCHDEVICENAME]; /* DeviceName for use with e.g. ChangeDisplaySettings */
+    int                     nCfgs;
+    WineD3D_PixelFormat     *cfgs;
+    BOOL                    brokenStencil; /* Set on cards which only offer mixed depth+stencil */
+    unsigned int            TextureRam; /* Amount of texture memory both video ram + AGP/TurboCache/HyperMemory/.. */
+    unsigned int            UsedTextureRam;
+};
+
+extern BOOL InitAdapters(void);
+extern BOOL initPixelFormats(WineD3D_GL_Info *gl_info);
+extern long WineD3DAdapterChangeGLRam(IWineD3DDeviceImpl *D3DDevice, long glram);
+
+/*****************************************************************************
+ * High order patch management
+ */
+struct WineD3DRectPatch
+{
+    UINT                            Handle;
+    float                          *mem;
+    WineDirect3DVertexStridedData   strided;
+    WINED3DRECTPATCH_INFO           RectPatchInfo;
+    float                           numSegs[4];
+    char                            has_normals, has_texcoords;
+    struct list                     entry;
+};
+
+HRESULT tesselate_rectpatch(IWineD3DDeviceImpl *This, struct WineD3DRectPatch *patch);
+
+enum projection_types
+{
+    proj_none    = 0,
+    proj_count3  = 1,
+    proj_count4  = 2
+};
+
+enum dst_arg
+{
+    resultreg    = 0,
+    tempreg      = 1
+};
+
+/*****************************************************************************
+ * Fixed function pipeline replacements
+ */
+#define ARG_UNUSED          0x3f
+struct texture_stage_op
+{
+    unsigned                cop : 8;
+    unsigned                carg1 : 8;
+    unsigned                carg2 : 8;
+    unsigned                carg0 : 8;
+
+    unsigned                aop : 8;
+    unsigned                aarg1 : 8;
+    unsigned                aarg2 : 8;
+    unsigned                aarg0 : 8;
+
+    struct color_fixup_desc color_correction;
+    unsigned                tex_type : 3;
+    unsigned                dst : 1;
+    unsigned                projected : 2;
+    unsigned                padding : 10;
+};
+
+struct ffp_frag_settings {
+    struct texture_stage_op     op[MAX_TEXTURES];
+    enum {
+        FOG_OFF,
+        FOG_LINEAR,
+        FOG_EXP,
+        FOG_EXP2
+    } fog;
+    /* Use an int instead of a char to get dword alignment */
+    unsigned int sRGB_write;
+};
+
+struct ffp_frag_desc
+{
+    struct ffp_frag_settings    settings;
+};
+
+void gen_ffp_frag_op(IWineD3DStateBlockImpl *stateblock, struct ffp_frag_settings *settings, BOOL ignore_textype);
+const struct ffp_frag_desc *find_ffp_frag_shader(const struct hash_table_t *fragment_shaders,
+        const struct ffp_frag_settings *settings);
+void add_ffp_frag_shader(struct hash_table_t *shaders, struct ffp_frag_desc *desc);
+BOOL ffp_frag_program_key_compare(const void *keya, const void *keyb);
+unsigned int ffp_frag_program_key_hash(const void *key);
+
+/*****************************************************************************
+ * IWineD3D implementation structure
+ */
+typedef struct IWineD3DImpl
+{
+    /* IUnknown fields */
+    const IWineD3DVtbl     *lpVtbl;
+    LONG                    ref;     /* Note: Ref counting not required */
+
+    /* WineD3D Information */
+    IUnknown               *parent;
+    UINT                    dxVersion;
+} IWineD3DImpl;
+
+extern const IWineD3DVtbl IWineD3D_Vtbl;
+
+/* TODO: setup some flags in the registry to enable, disable pbuffer support
+(since it will break quite a few things until contexts are managed properly!) */
+extern BOOL pbuffer_support;
+/* allocate one pbuffer per surface */
+extern BOOL pbuffer_per_surface;
+
+/* A helper function that dumps a resource list */
+void dumpResources(struct list *list);
+
+/*****************************************************************************
+ * IWineD3DDevice implementation structure
+ */
+struct IWineD3DDeviceImpl
+{
+    /* IUnknown fields      */
+    const IWineD3DDeviceVtbl *lpVtbl;
+    LONG                    ref;     /* Note: Ref counting not required */
+
+    /* WineD3D Information  */
+    IUnknown               *parent;
+    IWineD3D               *wineD3D;
+    struct WineD3DAdapter  *adapter;
+
+    /* Window styles to restore when switching fullscreen mode */
+    LONG                    style;
+    LONG                    exStyle;
+
+    /* X and GL Information */
+    GLint                   maxConcurrentLights;
+    GLenum                  offscreenBuffer;
+
+    /* Selected capabilities */
+    int vs_selected_mode;
+    int ps_selected_mode;
+    const shader_backend_t *shader_backend;
+    void *shader_priv;
+    void *fragment_priv;
+    void *blit_priv;
+    struct StateEntry StateTable[STATE_HIGHEST + 1];
+    /* Array of functions for states which are handled by more than one pipeline part */
+    APPLYSTATEFUNC *multistate_funcs[STATE_HIGHEST + 1];
+    const struct fragment_pipeline *frag_pipe;
+    const struct blit_shader *blitter;
+
+    unsigned int max_ffp_textures, max_ffp_texture_stages;
+
+    /* To store */
+    BOOL                    view_ident;        /* true iff view matrix is identity                */
+    BOOL                    untransformed;
+    BOOL                    vertexBlendUsed;   /* To avoid needless setting of the blend matrices */
+#define DDRAW_PITCH_ALIGNMENT 8
+#define D3D8_PITCH_ALIGNMENT 4
+    unsigned char           surface_alignment; /* Line Alignment of surfaces                      */
+
+    /* State block related */
+    BOOL                    isRecordingState;
+    IWineD3DStateBlockImpl *stateBlock;
+    IWineD3DStateBlockImpl *updateStateBlock;
+    BOOL                   isInDraw;
+
+    /* Internal use fields  */
+    WINED3DDEVICE_CREATION_PARAMETERS createParms;
+    UINT                            adapterNo;
+    WINED3DDEVTYPE                  devType;
+
+    IWineD3DSwapChain     **swapchains;
+    UINT                    NumberOfSwapChains;
+
+    struct list             resources; /* a linked list to track resources created by the device */
+    struct list             shaders;   /* a linked list to track shaders (pixel and vertex)      */
+    unsigned int            highest_dirty_ps_const, highest_dirty_vs_const;
+
+    /* Render Target Support */
+    IWineD3DSurface       **render_targets;
+    IWineD3DSurface        *auto_depth_stencil_buffer;
+    IWineD3DSurface        *stencilBufferTarget;
+
+    /* Caches to avoid unneeded context changes */
+    IWineD3DSurface        *lastActiveRenderTarget;
+    IWineD3DSwapChain      *lastActiveSwapChain;
+
+    /* palettes texture management */
+    UINT                    NumberOfPalettes;
+    PALETTEENTRY            **palettes;
+    UINT                    currentPalette;
+    UINT                    paletteConversionShader;
+
+    /* For rendering to a texture using glCopyTexImage */
+    BOOL                    render_offscreen;
+    GLenum                  *draw_buffers;
+    GLuint                  depth_blt_texture;
+    GLuint                  depth_blt_rb;
+    UINT                    depth_blt_rb_w;
+    UINT                    depth_blt_rb_h;
+
+    /* Cursor management */
+    BOOL                    bCursorVisible;
+    UINT                    xHotSpot;
+    UINT                    yHotSpot;
+    UINT                    xScreenSpace;
+    UINT                    yScreenSpace;
+    UINT                    cursorWidth, cursorHeight;
+    GLuint                  cursorTexture;
+    BOOL                    haveHardwareCursor;
+    HCURSOR                 hardwareCursor;
+
+    /* The Wine logo surface */
+    IWineD3DSurface        *logo_surface;
+
+    /* Textures for when no other textures are mapped */
+    UINT                          dummyTextureName[MAX_TEXTURES];
+
+    /* Debug stream management */
+    BOOL                     debug;
+
+    /* Device state management */
+    HRESULT                 state;
+    BOOL                    d3d_initialized;
+
+    /* A flag to check for proper BeginScene / EndScene call pairs */
+    BOOL inScene;
+
+    /* process vertex shaders using software or hardware */
+    BOOL softwareVertexProcessing;
+
+    /* DirectDraw stuff */
+    DWORD ddraw_width, ddraw_height;
+    WINED3DFORMAT ddraw_format;
+
+    /* Final position fixup constant */
+    float                       posFixup[4];
+
+    /* With register combiners we can skip junk texture stages */
+    DWORD                     texUnitMap[MAX_COMBINED_SAMPLERS];
+    DWORD                     rev_tex_unit_map[MAX_COMBINED_SAMPLERS];
+    BOOL                      fixed_function_usage_map[MAX_TEXTURES];
+
+    /* Stream source management */
+    WineDirect3DVertexStridedData strided_streams;
+    const WineDirect3DVertexStridedData *up_strided;
+    BOOL                      useDrawStridedSlow;
+    BOOL                      instancedDraw;
+
+    /* Context management */
+    WineD3DContext          **contexts;                  /* Dynamic array containing pointers to context structures */
+    WineD3DContext          *activeContext;
+    DWORD                   lastThread;
+    UINT                    numContexts;
+    WineD3DContext          *pbufferContext;             /* The context that has a pbuffer as drawable */
+    DWORD                   pbufferWidth, pbufferHeight; /* Size of the buffer drawable */
+
+    /* High level patch management */
+#define PATCHMAP_SIZE 43
+#define PATCHMAP_HASHFUNC(x) ((x) % PATCHMAP_SIZE) /* Primitive and simple function */
+    struct list             patches[PATCHMAP_SIZE];
+    struct WineD3DRectPatch *currentPatch;
+};
+
+extern const IWineD3DDeviceVtbl IWineD3DDevice_Vtbl, IWineD3DDevice_DirtyConst_Vtbl;
+
+HRESULT IWineD3DDeviceImpl_ClearSurface(IWineD3DDeviceImpl *This,  IWineD3DSurfaceImpl *target, DWORD Count,
+                                        CONST WINED3DRECT* pRects, DWORD Flags, WINED3DCOLOR Color,
+                                        float Z, DWORD Stencil);
+void IWineD3DDeviceImpl_FindTexUnitMap(IWineD3DDeviceImpl *This);
+void IWineD3DDeviceImpl_MarkStateDirty(IWineD3DDeviceImpl *This, DWORD state);
+static inline BOOL isStateDirty(WineD3DContext *context, DWORD state) {
+    DWORD idx = state >> 5;
+    BYTE shift = state & 0x1f;
+    return context->isStateDirty[idx] & (1 << shift);
+}
+
+/* Support for IWineD3DResource ::Set/Get/FreePrivateData. */
+typedef struct PrivateData
+{
+    struct list entry;
+
+    GUID tag;
+    DWORD flags; /* DDSPD_* */
+
+    union
+    {
+        LPVOID data;
+        LPUNKNOWN object;
+    } ptr;
+
+    DWORD size;
+} PrivateData;
+
+/*****************************************************************************
+ * IWineD3DResource implementation structure
+ */
+typedef struct IWineD3DResourceClass
+{
+    /* IUnknown fields */
+    LONG                    ref;     /* Note: Ref counting not required */
+
+    /* WineD3DResource Information */
+    IUnknown               *parent;
+    WINED3DRESOURCETYPE     resourceType;
+    IWineD3DDeviceImpl     *wineD3DDevice;
+    WINED3DPOOL             pool;
+    UINT                    size;
+    DWORD                   usage;
+    WINED3DFORMAT           format;
+    DWORD                   priority;
+    BYTE                   *allocatedMemory; /* Pointer to the real data location */
+    BYTE                   *heapMemory; /* Pointer to the HeapAlloced block of memory */
+    struct list             privateData;
+    struct list             resource_list_entry;
+
+} IWineD3DResourceClass;
+
+typedef struct IWineD3DResourceImpl
+{
+    /* IUnknown & WineD3DResource Information     */
+    const IWineD3DResourceVtbl *lpVtbl;
+    IWineD3DResourceClass   resource;
+} IWineD3DResourceImpl;
+
+void resource_cleanup(IWineD3DResource *iface);
+HRESULT resource_free_private_data(IWineD3DResource *iface, REFGUID guid);
+HRESULT resource_get_device(IWineD3DResource *iface, IWineD3DDevice **device);
+HRESULT resource_get_parent(IWineD3DResource *iface, IUnknown **parent);
+DWORD resource_get_priority(IWineD3DResource *iface);
+HRESULT resource_get_private_data(IWineD3DResource *iface, REFGUID guid,
+        void *data, DWORD *data_size);
+WINED3DRESOURCETYPE resource_get_type(IWineD3DResource *iface);
+DWORD resource_set_priority(IWineD3DResource *iface, DWORD new_priority);
+HRESULT resource_set_private_data(IWineD3DResource *iface, REFGUID guid,
+        const void *data, DWORD data_size, DWORD flags);
+
+/* Tests show that the start address of resources is 32 byte aligned */
+#define RESOURCE_ALIGNMENT 32
+
+/*****************************************************************************
+ * IWineD3DVertexBuffer implementation structure (extends IWineD3DResourceImpl)
+ */
+enum vbo_conversion_type {
+    CONV_NONE               = 0,
+    CONV_D3DCOLOR           = 1,
+    CONV_POSITIONT          = 2,
+    CONV_FLOAT16_2          = 3 /* Also handles FLOAT16_4 */
+
+    /* TODO: Add tests and support for FLOAT16_4 POSITIONT, D3DCOLOR position, other
+     * fixed function semantics as D3DCOLOR or FLOAT16
+     */
+};
+
+typedef struct IWineD3DVertexBufferImpl
+{
+    /* IUnknown & WineD3DResource Information     */
+    const IWineD3DVertexBufferVtbl *lpVtbl;
+    IWineD3DResourceClass     resource;
+
+    /* WineD3DVertexBuffer specifics */
+    DWORD                     fvf;
+
+    /* Vertex buffer object support */
+    GLuint                    vbo;
+    BYTE                      Flags;
+    LONG                      bindCount;
+    LONG                      vbo_size;
+    GLenum                    vbo_usage;
+
+    UINT                      dirtystart, dirtyend;
+    LONG                      lockcount;
+
+    LONG                      declChanges, draws;
+    /* Last description of the buffer */
+    DWORD                     stride;       /* 0 if no conversion               */
+    enum vbo_conversion_type  *conv_map;    /* NULL if no conversion            */
+
+    /* Extra load offsets, for FLOAT16 conversion */
+    DWORD                     *conv_shift;  /* NULL if no shifted conversion    */
+    DWORD                     conv_stride;  /* 0 if no shifted conversion       */
+} IWineD3DVertexBufferImpl;
+
+extern const IWineD3DVertexBufferVtbl IWineD3DVertexBuffer_Vtbl;
+
+#define VBFLAG_OPTIMIZED      0x01    /* Optimize has been called for the VB */
+#define VBFLAG_DIRTY          0x02    /* Buffer data has been modified */
+#define VBFLAG_HASDESC        0x04    /* A vertex description has been found */
+#define VBFLAG_CREATEVBO      0x08    /* Attempt to create a VBO next PreLoad */
+
+/*****************************************************************************
+ * IWineD3DIndexBuffer implementation structure (extends IWineD3DResourceImpl)
+ */
+typedef struct IWineD3DIndexBufferImpl
+{
+    /* IUnknown & WineD3DResource Information     */
+    const IWineD3DIndexBufferVtbl *lpVtbl;
+    IWineD3DResourceClass     resource;
+
+    GLuint                    vbo;
+    UINT                      dirtystart, dirtyend;
+    LONG                      lockcount;
+
+    /* WineD3DVertexBuffer specifics */
+} IWineD3DIndexBufferImpl;
+
+extern const IWineD3DIndexBufferVtbl IWineD3DIndexBuffer_Vtbl;
+
+/*****************************************************************************
+ * IWineD3DBaseTexture D3D- > openGL state map lookups
+ */
+#define WINED3DFUNC_NOTSUPPORTED  -2
+#define WINED3DFUNC_UNIMPLEMENTED -1
+
+typedef enum winetexturestates {
+    WINED3DTEXSTA_ADDRESSU       = 0,
+    WINED3DTEXSTA_ADDRESSV       = 1,
+    WINED3DTEXSTA_ADDRESSW       = 2,
+    WINED3DTEXSTA_BORDERCOLOR    = 3,
+    WINED3DTEXSTA_MAGFILTER      = 4,
+    WINED3DTEXSTA_MINFILTER      = 5,
+    WINED3DTEXSTA_MIPFILTER      = 6,
+    WINED3DTEXSTA_MAXMIPLEVEL    = 7,
+    WINED3DTEXSTA_MAXANISOTROPY  = 8,
+    WINED3DTEXSTA_SRGBTEXTURE    = 9,
+    WINED3DTEXSTA_ELEMENTINDEX   = 10,
+    WINED3DTEXSTA_DMAPOFFSET     = 11,
+    WINED3DTEXSTA_TSSADDRESSW    = 12,
+    MAX_WINETEXTURESTATES        = 13,
+} winetexturestates;
+
+/*****************************************************************************
+ * IWineD3DBaseTexture implementation structure (extends IWineD3DResourceImpl)
+ */
+typedef struct IWineD3DBaseTextureClass
+{
+    DWORD                   states[MAX_WINETEXTURESTATES];
+    UINT                    levels;
+    BOOL                    dirty;
+    UINT                    textureName;
+    float                   pow2Matrix[16];
+    UINT                    LOD;
+    WINED3DTEXTUREFILTERTYPE filterType;
+    LONG                    bindCount;
+    DWORD                   sampler;
+    BOOL                    is_srgb;
+    UINT                    srgb_mode_change_count;
+    const struct min_lookup *minMipLookup;
+    const GLenum            *magLookup;
+    struct color_fixup_desc shader_color_fixup;
+} IWineD3DBaseTextureClass;
+
+typedef struct IWineD3DBaseTextureImpl
+{
+    /* IUnknown & WineD3DResource Information     */
+    const IWineD3DBaseTextureVtbl *lpVtbl;
+    IWineD3DResourceClass     resource;
+    IWineD3DBaseTextureClass  baseTexture;
+
+} IWineD3DBaseTextureImpl;
+
+void basetexture_apply_state_changes(IWineD3DBaseTexture *iface,
+        const DWORD texture_states[WINED3D_HIGHEST_TEXTURE_STATE + 1],
+        const DWORD sampler_states[WINED3D_HIGHEST_SAMPLER_STATE + 1]);
+HRESULT basetexture_bind(IWineD3DBaseTexture *iface);
+void basetexture_cleanup(IWineD3DBaseTexture *iface);
+void basetexture_generate_mipmaps(IWineD3DBaseTexture *iface);
+WINED3DTEXTUREFILTERTYPE basetexture_get_autogen_filter_type(IWineD3DBaseTexture *iface);
+BOOL basetexture_get_dirty(IWineD3DBaseTexture *iface);
+DWORD basetexture_get_level_count(IWineD3DBaseTexture *iface);
+DWORD basetexture_get_lod(IWineD3DBaseTexture *iface);
+HRESULT basetexture_set_autogen_filter_type(IWineD3DBaseTexture *iface, WINED3DTEXTUREFILTERTYPE filter_type);
+BOOL basetexture_set_dirty(IWineD3DBaseTexture *iface, BOOL dirty);
+DWORD basetexture_set_lod(IWineD3DBaseTexture *iface, DWORD new_lod);
+void basetexture_unload(IWineD3DBaseTexture *iface);
+
+/*****************************************************************************
+ * IWineD3DTexture implementation structure (extends IWineD3DBaseTextureImpl)
+ */
+typedef struct IWineD3DTextureImpl
+{
+    /* IUnknown & WineD3DResource/WineD3DBaseTexture Information     */
+    const IWineD3DTextureVtbl *lpVtbl;
+    IWineD3DResourceClass     resource;
+    IWineD3DBaseTextureClass  baseTexture;
+
+    /* IWineD3DTexture */
+    IWineD3DSurface          *surfaces[MAX_LEVELS];
+    
+    UINT                      width;
+    UINT                      height;
+    UINT                      target;
+    BOOL                      cond_np2;
+
+} IWineD3DTextureImpl;
+
+extern const IWineD3DTextureVtbl IWineD3DTexture_Vtbl;
+
+/*****************************************************************************
+ * IWineD3DCubeTexture implementation structure (extends IWineD3DBaseTextureImpl)
+ */
+typedef struct IWineD3DCubeTextureImpl
+{
+    /* IUnknown & WineD3DResource/WineD3DBaseTexture Information     */
+    const IWineD3DCubeTextureVtbl *lpVtbl;
+    IWineD3DResourceClass     resource;
+    IWineD3DBaseTextureClass  baseTexture;
+
+    /* IWineD3DCubeTexture */
+    IWineD3DSurface          *surfaces[6][MAX_LEVELS];
+} IWineD3DCubeTextureImpl;
+
+extern const IWineD3DCubeTextureVtbl IWineD3DCubeTexture_Vtbl;
+
+typedef struct _WINED3DVOLUMET_DESC
+{
+    UINT                    Width;
+    UINT                    Height;
+    UINT                    Depth;
+} WINED3DVOLUMET_DESC;
+
+/*****************************************************************************
+ * IWineD3DVolume implementation structure (extends IUnknown)
+ */
+typedef struct IWineD3DVolumeImpl
+{
+    /* IUnknown & WineD3DResource fields */
+    const IWineD3DVolumeVtbl  *lpVtbl;
+    IWineD3DResourceClass      resource;
+
+    /* WineD3DVolume Information */
+    WINED3DVOLUMET_DESC      currentDesc;
+    IWineD3DBase            *container;
+    UINT                    bytesPerPixel;
+
+    BOOL                    lockable;
+    BOOL                    locked;
+    WINED3DBOX              lockedBox;
+    WINED3DBOX              dirtyBox;
+    BOOL                    dirty;
+
+
+} IWineD3DVolumeImpl;
+
+extern const IWineD3DVolumeVtbl IWineD3DVolume_Vtbl;
+
+/*****************************************************************************
+ * IWineD3DVolumeTexture implementation structure (extends IWineD3DBaseTextureImpl)
+ */
+typedef struct IWineD3DVolumeTextureImpl
+{
+    /* IUnknown & WineD3DResource/WineD3DBaseTexture Information     */
+    const IWineD3DVolumeTextureVtbl *lpVtbl;
+    IWineD3DResourceClass     resource;
+    IWineD3DBaseTextureClass  baseTexture;
+
+    /* IWineD3DVolumeTexture */
+    IWineD3DVolume           *volumes[MAX_LEVELS];
+} IWineD3DVolumeTextureImpl;
+
+extern const IWineD3DVolumeTextureVtbl IWineD3DVolumeTexture_Vtbl;
+
+typedef struct _WINED3DSURFACET_DESC
+{
+    WINED3DMULTISAMPLE_TYPE MultiSampleType;
+    DWORD                   MultiSampleQuality;
+    UINT                    Width;
+    UINT                    Height;
+} WINED3DSURFACET_DESC;
+
+/*****************************************************************************
+ * Structure for DIB Surfaces (GetDC and GDI surfaces)
+ */
+typedef struct wineD3DSurface_DIB {
+    HBITMAP DIBsection;
+    void* bitmap_data;
+    UINT bitmap_size;
+    HGDIOBJ holdbitmap;
+    BOOL client_memory;
+} wineD3DSurface_DIB;
+
+typedef struct {
+    struct list entry;
+    GLuint id;
+    UINT width;
+    UINT height;
+} renderbuffer_entry_t;
+
+struct fbo_entry
+{
+    struct list entry;
+    IWineD3DSurface **render_targets;
+    IWineD3DSurface *depth_stencil;
+    BOOL attached;
+    GLuint id;
+};
+
+/*****************************************************************************
+ * IWineD3DClipp implementation structure
+ */
+typedef struct IWineD3DClipperImpl
+{
+    const IWineD3DClipperVtbl *lpVtbl;
+    LONG ref;
+
+    IUnknown *Parent;
+    HWND hWnd;
+} IWineD3DClipperImpl;
+
+
+/*****************************************************************************
+ * IWineD3DSurface implementation structure
+ */
+struct IWineD3DSurfaceImpl
+{
+    /* IUnknown & IWineD3DResource Information     */
+    const IWineD3DSurfaceVtbl *lpVtbl;
+    IWineD3DResourceClass     resource;
+
+    /* IWineD3DSurface fields */
+    IWineD3DBase              *container;
+    WINED3DSURFACET_DESC      currentDesc;
+    IWineD3DPaletteImpl       *palette; /* D3D7 style palette handling */
+    PALETTEENTRY              *palette9; /* D3D8/9 style palette handling */
+
+    UINT                      bytesPerPixel;
+
+    /* TODO: move this off into a management class(maybe!) */
+    DWORD                      Flags;
+
+    UINT                      pow2Width;
+    UINT                      pow2Height;
+    float                     heightscale;
+
+    /* A method to retrieve the drawable size. Not in the Vtable to make it changeable */
+    void (*get_drawable_size)(IWineD3DSurfaceImpl *This, UINT *width, UINT *height);
+
+    /* Oversized texture */
+    RECT                      glRect;
+
+    /* PBO */
+    GLuint                    pbo;
+
+    RECT                      lockedRect;
+    RECT                      dirtyRect;
+    int                       lockCount;
+#define MAXLOCKCOUNT          50 /* After this amount of locks do not free the sysmem copy */
+
+    glDescriptor              glDescription;
+    BOOL                      srgb;
+
+    /* For GetDC */
+    wineD3DSurface_DIB        dib;
+    HDC                       hDC;
+
+    /* Color keys for DDraw */
+    WINEDDCOLORKEY            DestBltCKey;
+    WINEDDCOLORKEY            DestOverlayCKey;
+    WINEDDCOLORKEY            SrcOverlayCKey;
+    WINEDDCOLORKEY            SrcBltCKey;
+    DWORD                     CKeyFlags;
+
+    WINEDDCOLORKEY            glCKey;
+
+    struct list               renderbuffers;
+    renderbuffer_entry_t      *current_renderbuffer;
+
+    /* DirectDraw clippers */
+    IWineD3DClipper           *clipper;
+
+    /* DirectDraw Overlay handling */
+    RECT                      overlay_srcrect;
+    RECT                      overlay_destrect;
+    IWineD3DSurfaceImpl       *overlay_dest;
+    struct list               overlays;
+    struct list               overlay_entry;
+};
+
+extern const IWineD3DSurfaceVtbl IWineD3DSurface_Vtbl;
+extern const IWineD3DSurfaceVtbl IWineGDISurface_Vtbl;
+
+/* Predeclare the shared Surface functions */
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_QueryInterface(IWineD3DSurface *iface, REFIID riid, LPVOID *ppobj);
+ULONG WINAPI IWineD3DBaseSurfaceImpl_AddRef(IWineD3DSurface *iface);
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_GetParent(IWineD3DSurface *iface, IUnknown **pParent);
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_GetDevice(IWineD3DSurface *iface, IWineD3DDevice** ppDevice);
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_SetPrivateData(IWineD3DSurface *iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags);
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_GetPrivateData(IWineD3DSurface *iface, REFGUID refguid, void* pData, DWORD* pSizeOfData);
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_FreePrivateData(IWineD3DSurface *iface, REFGUID refguid);
+DWORD   WINAPI IWineD3DBaseSurfaceImpl_SetPriority(IWineD3DSurface *iface, DWORD PriorityNew);
+DWORD   WINAPI IWineD3DBaseSurfaceImpl_GetPriority(IWineD3DSurface *iface);
+WINED3DRESOURCETYPE WINAPI IWineD3DBaseSurfaceImpl_GetType(IWineD3DSurface *iface);
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_GetContainer(IWineD3DSurface* iface, REFIID riid, void** ppContainer);
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_GetDesc(IWineD3DSurface *iface, WINED3DSURFACE_DESC *pDesc);
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_GetBltStatus(IWineD3DSurface *iface, DWORD Flags);
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_GetFlipStatus(IWineD3DSurface *iface, DWORD Flags);
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_IsLost(IWineD3DSurface *iface);
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_Restore(IWineD3DSurface *iface);
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_GetPalette(IWineD3DSurface *iface, IWineD3DPalette **Pal);
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_SetPalette(IWineD3DSurface *iface, IWineD3DPalette *Pal);
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_SetColorKey(IWineD3DSurface *iface, DWORD Flags, const WINEDDCOLORKEY *CKey);
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_SetContainer(IWineD3DSurface *iface, IWineD3DBase *container);
+DWORD WINAPI IWineD3DBaseSurfaceImpl_GetPitch(IWineD3DSurface *iface);
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_RealizePalette(IWineD3DSurface *iface);
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_SetOverlayPosition(IWineD3DSurface *iface, LONG X, LONG Y);
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_GetOverlayPosition(IWineD3DSurface *iface, LONG *X, LONG *Y);
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_UpdateOverlayZOrder(IWineD3DSurface *iface, DWORD Flags, IWineD3DSurface *Ref);
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_UpdateOverlay(IWineD3DSurface *iface, const RECT *SrcRect,
+        IWineD3DSurface *DstSurface, const RECT *DstRect, DWORD Flags, const WINEDDOVERLAYFX *FX);
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_SetClipper(IWineD3DSurface *iface, IWineD3DClipper *clipper);
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_GetClipper(IWineD3DSurface *iface, IWineD3DClipper **clipper);
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_SetFormat(IWineD3DSurface *iface, WINED3DFORMAT format);
+HRESULT IWineD3DBaseSurfaceImpl_CreateDIBSection(IWineD3DSurface *iface);
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_Blt(IWineD3DSurface *iface, const RECT *DestRect, IWineD3DSurface *SrcSurface,
+        const RECT *SrcRect, DWORD Flags, const WINEDDBLTFX *DDBltFx, WINED3DTEXTUREFILTERTYPE Filter);
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_BltFast(IWineD3DSurface *iface, DWORD dstx, DWORD dsty,
+        IWineD3DSurface *Source, const RECT *rsrc, DWORD trans);
+HRESULT WINAPI IWineD3DBaseSurfaceImpl_LockRect(IWineD3DSurface *iface, WINED3DLOCKED_RECT* pLockedRect, CONST RECT* pRect, DWORD Flags);
+void WINAPI IWineD3DBaseSurfaceImpl_BindTexture(IWineD3DSurface *iface);
+const void *WINAPI IWineD3DBaseSurfaceImpl_GetData(IWineD3DSurface *iface);
+
+void get_drawable_size_swapchain(IWineD3DSurfaceImpl *This, UINT *width, UINT *height);
+void get_drawable_size_backbuffer(IWineD3DSurfaceImpl *This, UINT *width, UINT *height);
+void get_drawable_size_pbuffer(IWineD3DSurfaceImpl *This, UINT *width, UINT *height);
+void get_drawable_size_fbo(IWineD3DSurfaceImpl *This, UINT *width, UINT *height);
+
+void flip_surface(IWineD3DSurfaceImpl *front, IWineD3DSurfaceImpl *back);
+
+/* Surface flags: */
+#define SFLAG_OVERSIZE      0x00000001 /* Surface is bigger than gl size, blts only */
+#define SFLAG_CONVERTED     0x00000002 /* Converted for color keying or Palettized */
+#define SFLAG_DIBSECTION    0x00000004 /* Has a DIB section attached for GetDC */
+#define SFLAG_LOCKABLE      0x00000008 /* Surface can be locked */
+#define SFLAG_DISCARD       0x00000010 /* ??? */
+#define SFLAG_LOCKED        0x00000020 /* Surface is locked atm */
+#define SFLAG_INTEXTURE     0x00000040 /* The GL texture contains the newest surface content */
+#define SFLAG_INDRAWABLE    0x00000080 /* The gl drawable contains the most up to date data */
+#define SFLAG_INSYSMEM      0x00000100 /* The system memory copy is most up to date */
+#define SFLAG_NONPOW2       0x00000200 /* Surface sizes are not a power of 2 */
+#define SFLAG_DYNLOCK       0x00000400 /* Surface is often locked by the app */
+#define SFLAG_DYNCHANGE     0x00000C00 /* Surface contents are changed very often, implies DYNLOCK */
+#define SFLAG_DCINUSE       0x00001000 /* Set between GetDC and ReleaseDC calls */
+#define SFLAG_LOST          0x00002000 /* Surface lost flag for DDraw */
+#define SFLAG_USERPTR       0x00004000 /* The application allocated the memory for this surface */
+#define SFLAG_GLCKEY        0x00008000 /* The gl texture was created with a color key */
+#define SFLAG_CLIENT        0x00010000 /* GL_APPLE_client_storage is used on that texture */
+#define SFLAG_ALLOCATED     0x00020000 /* A gl texture is allocated for this surface */
+#define SFLAG_PBO           0x00040000 /* Has a PBO attached for speeding up data transfers for dynamically locked surfaces */
+#define SFLAG_NORMCOORD     0x00080000 /* Set if the GL texture coords are normalized(non-texture rectangle) */
+#define SFLAG_DS_ONSCREEN   0x00100000 /* Is a depth stencil, last modified onscreen */
+#define SFLAG_DS_OFFSCREEN  0x00200000 /* Is a depth stencil, last modified offscreen */
+#define SFLAG_INOVERLAYDRAW 0x00400000 /* Overlay drawing is in progress. Recursion prevention */
+
+/* In some conditions the surface memory must not be freed:
+ * SFLAG_OVERSIZE: Not all data can be kept in GL
+ * SFLAG_CONVERTED: Converting the data back would take too long
+ * SFLAG_DIBSECTION: The dib code manages the memory
+ * SFLAG_LOCKED: The app requires access to the surface data
+ * SFLAG_DYNLOCK: Avoid freeing the data for performance
+ * SFLAG_DYNCHANGE: Same reason as DYNLOCK
+ * SFLAG_PBO: PBOs don't use 'normal' memory. It is either allocated by the driver or must be NULL.
+ * SFLAG_CLIENT: OpenGL uses our memory as backup
+ */
+#define SFLAG_DONOTFREE     (SFLAG_OVERSIZE   | \
+                             SFLAG_CONVERTED  | \
+                             SFLAG_DIBSECTION | \
+                             SFLAG_LOCKED     | \
+                             SFLAG_DYNLOCK    | \
+                             SFLAG_DYNCHANGE  | \
+                             SFLAG_USERPTR    | \
+                             SFLAG_PBO        | \
+                             SFLAG_CLIENT)
+
+#define SFLAG_LOCATIONS     (SFLAG_INSYSMEM   | \
+                             SFLAG_INTEXTURE  | \
+                             SFLAG_INDRAWABLE)
+
+#define SFLAG_DS_LOCATIONS  (SFLAG_DS_ONSCREEN | \
+                             SFLAG_DS_OFFSCREEN)
+#define SFLAG_DS_DISCARDED   SFLAG_DS_LOCATIONS
+
+BOOL CalculateTexRect(IWineD3DSurfaceImpl *This, RECT *Rect, float glTexCoord[4]);
+
+typedef enum {
+    NO_CONVERSION,
+    CONVERT_PALETTED,
+    CONVERT_PALETTED_CK,
+    CONVERT_CK_565,
+    CONVERT_CK_5551,
+    CONVERT_CK_4444,
+    CONVERT_CK_4444_ARGB,
+    CONVERT_CK_1555,
+    CONVERT_555,
+    CONVERT_CK_RGB24,
+    CONVERT_CK_8888,
+    CONVERT_CK_8888_ARGB,
+    CONVERT_RGB32_888,
+    CONVERT_V8U8,
+    CONVERT_L6V5U5,
+    CONVERT_X8L8V8U8,
+    CONVERT_Q8W8V8U8,
+    CONVERT_V16U16,
+    CONVERT_A4L4,
+} CONVERT_TYPES;
+
+HRESULT d3dfmt_get_conv(IWineD3DSurfaceImpl *This, BOOL need_alpha_ck, BOOL use_texturing, GLenum *format, GLenum *internal, GLenum *type, CONVERT_TYPES *convert, int *target_bpp, BOOL srgb_mode);
+
+BOOL palette9_changed(IWineD3DSurfaceImpl *This);
+
+/*****************************************************************************
+ * IWineD3DVertexDeclaration implementation structure
+ */
+typedef struct attrib_declaration {
+    DWORD usage;
+    DWORD idx;
+} attrib_declaration;
+
+#define MAX_ATTRIBS 16
+
+typedef struct IWineD3DVertexDeclarationImpl {
+    /* IUnknown  Information */
+    const IWineD3DVertexDeclarationVtbl *lpVtbl;
+    LONG                    ref;
+
+    IUnknown                *parent;
+    IWineD3DDeviceImpl      *wineD3DDevice;
+
+    WINED3DVERTEXELEMENT    *pDeclarationWine;
+    BOOL                    *ffp_valid;
+    UINT                    declarationWNumElements;
+
+    DWORD                   streams[MAX_STREAMS];
+    UINT                    num_streams;
+    BOOL                    position_transformed;
+    BOOL                    half_float_conv_needed;
+
+    /* Ordered array of declaration types that need swizzling in a vshader */
+    attrib_declaration      swizzled_attribs[MAX_ATTRIBS];
+    UINT                    num_swizzled_attribs;
+} IWineD3DVertexDeclarationImpl;
+
+extern const IWineD3DVertexDeclarationVtbl IWineD3DVertexDeclaration_Vtbl;
+
+/*****************************************************************************
+ * IWineD3DStateBlock implementation structure
+ */
+
+/* Internal state Block for Begin/End/Capture/Create/Apply info  */
+/*   Note: Very long winded but gl Lists are not flexible enough */
+/*   to resolve everything we need, so doing it manually for now */
+typedef struct SAVEDSTATES {
+        BOOL                      indices;
+        BOOL                      material;
+        BOOL                      fvf;
+        BOOL                      streamSource[MAX_STREAMS];
+        BOOL                      streamFreq[MAX_STREAMS];
+        BOOL                      textures[MAX_COMBINED_SAMPLERS];
+        BOOL                      transform[HIGHEST_TRANSFORMSTATE + 1];
+        BOOL                      viewport;
+        BOOL                      renderState[WINEHIGHEST_RENDER_STATE + 1];
+        BOOL                      textureState[MAX_TEXTURES][WINED3D_HIGHEST_TEXTURE_STATE + 1];
+        BOOL                      samplerState[MAX_COMBINED_SAMPLERS][WINED3D_HIGHEST_SAMPLER_STATE + 1];
+        BOOL                      clipplane[MAX_CLIPPLANES];
+        BOOL                      vertexDecl;
+        BOOL                      pixelShader;
+        WORD                      pixelShaderConstantsB;
+        WORD                      pixelShaderConstantsI;
+        BOOL                     *pixelShaderConstantsF;
+        BOOL                      vertexShader;
+        WORD                      vertexShaderConstantsB;
+        WORD                      vertexShaderConstantsI;
+        BOOL                     *vertexShaderConstantsF;
+        BOOL                      scissorRect;
+} SAVEDSTATES;
+
+typedef struct {
+    struct  list entry;
+    DWORD   count;
+    DWORD   idx[13];
+} constants_entry;
+
+struct StageState {
+    DWORD stage;
+    DWORD state;
+};
+
+struct IWineD3DStateBlockImpl
+{
+    /* IUnknown fields */
+    const IWineD3DStateBlockVtbl *lpVtbl;
+    LONG                      ref;     /* Note: Ref counting not required */
+
+    /* IWineD3DStateBlock information */
+    IUnknown                 *parent;
+    IWineD3DDeviceImpl       *wineD3DDevice;
+    WINED3DSTATEBLOCKTYPE     blockType;
+
+    /* Array indicating whether things have been set or changed */
+    SAVEDSTATES               changed;
+    struct list               set_vconstantsF;
+    struct list               set_pconstantsF;
+
+    /* Drawing - Vertex Shader or FVF related */
+    DWORD                     fvf;
+    /* Vertex Shader Declaration */
+    IWineD3DVertexDeclaration *vertexDecl;
+
+    IWineD3DVertexShader      *vertexShader;
+
+    /* Vertex Shader Constants */
+    BOOL                       vertexShaderConstantB[MAX_CONST_B];
+    INT                        vertexShaderConstantI[MAX_CONST_I * 4];
+    float                     *vertexShaderConstantF;
+
+    /* Stream Source */
+    BOOL                      streamIsUP;
+    UINT                      streamStride[MAX_STREAMS];
+    UINT                      streamOffset[MAX_STREAMS + 1 /* tesselated pseudo-stream */ ];
+    IWineD3DVertexBuffer     *streamSource[MAX_STREAMS];
+    UINT                      streamFreq[MAX_STREAMS + 1];
+    UINT                      streamFlags[MAX_STREAMS + 1];     /*0 | WINED3DSTREAMSOURCE_INSTANCEDATA | WINED3DSTREAMSOURCE_INDEXEDDATA  */
+
+    /* Indices */
+    IWineD3DIndexBuffer*      pIndexData;
+    INT                       baseVertexIndex;
+    INT                       loadBaseVertexIndex; /* non-indexed drawing needs 0 here, indexed baseVertexIndex */
+
+    /* Transform */
+    WINED3DMATRIX             transforms[HIGHEST_TRANSFORMSTATE + 1];
+
+    /* Light hashmap . Collisions are handled using standard wine double linked lists */
+#define LIGHTMAP_SIZE 43 /* Use of a prime number recommended. Set to 1 for a linked list! */
+#define LIGHTMAP_HASHFUNC(x) ((x) % LIGHTMAP_SIZE) /* Primitive and simple function */
+    struct list               lightMap[LIGHTMAP_SIZE]; /* Mashmap containing the lights */
+    PLIGHTINFOEL             *activeLights[MAX_ACTIVE_LIGHTS]; /* Map of opengl lights to d3d lights */
+
+    /* Clipping */
+    double                    clipplane[MAX_CLIPPLANES][4];
+    WINED3DCLIPSTATUS         clip_status;
+
+    /* ViewPort */
+    WINED3DVIEWPORT           viewport;
+
+    /* Material */
+    WINED3DMATERIAL           material;
+
+    /* Pixel Shader */
+    IWineD3DPixelShader      *pixelShader;
+
+    /* Pixel Shader Constants */
+    BOOL                       pixelShaderConstantB[MAX_CONST_B];
+    INT                        pixelShaderConstantI[MAX_CONST_I * 4];
+    float                     *pixelShaderConstantF;
+
+    /* RenderState */
+    DWORD                     renderState[WINEHIGHEST_RENDER_STATE + 1];
+
+    /* Texture */
+    IWineD3DBaseTexture      *textures[MAX_COMBINED_SAMPLERS];
+    int                       textureDimensions[MAX_COMBINED_SAMPLERS];
+
+    /* Texture State Stage */
+    DWORD                     textureState[MAX_TEXTURES][WINED3D_HIGHEST_TEXTURE_STATE + 1];
+    DWORD                     lowest_disabled_stage;
+    /* Sampler States */
+    DWORD                     samplerState[MAX_COMBINED_SAMPLERS][WINED3D_HIGHEST_SAMPLER_STATE + 1];
+
+    /* Scissor test rectangle */
+    RECT                      scissorRect;
+
+    /* Contained state management */
+    DWORD                     contained_render_states[WINEHIGHEST_RENDER_STATE + 1];
+    unsigned int              num_contained_render_states;
+    DWORD                     contained_transform_states[HIGHEST_TRANSFORMSTATE + 1];
+    unsigned int              num_contained_transform_states;
+    DWORD                     contained_vs_consts_i[MAX_CONST_I];
+    unsigned int              num_contained_vs_consts_i;
+    DWORD                     contained_vs_consts_b[MAX_CONST_B];
+    unsigned int              num_contained_vs_consts_b;
+    DWORD                     *contained_vs_consts_f;
+    unsigned int              num_contained_vs_consts_f;
+    DWORD                     contained_ps_consts_i[MAX_CONST_I];
+    unsigned int              num_contained_ps_consts_i;
+    DWORD                     contained_ps_consts_b[MAX_CONST_B];
+    unsigned int              num_contained_ps_consts_b;
+    DWORD                     *contained_ps_consts_f;
+    unsigned int              num_contained_ps_consts_f;
+    struct StageState         contained_tss_states[MAX_TEXTURES * (WINED3D_HIGHEST_TEXTURE_STATE)];
+    unsigned int              num_contained_tss_states;
+    struct StageState         contained_sampler_states[MAX_COMBINED_SAMPLERS * WINED3D_HIGHEST_SAMPLER_STATE];
+    unsigned int              num_contained_sampler_states;
+};
+
+extern void stateblock_savedstates_set(
+    IWineD3DStateBlock* iface,
+    SAVEDSTATES* states,
+    BOOL value);
+
+extern void stateblock_copy(
+    IWineD3DStateBlock* destination,
+    IWineD3DStateBlock* source);
+
+extern const IWineD3DStateBlockVtbl IWineD3DStateBlock_Vtbl;
+
+/* Direct3D terminology with little modifications. We do not have an issued state
+ * because only the driver knows about it, but we have a created state because d3d
+ * allows GetData on a created issue, but opengl doesn't
+ */
+enum query_state {
+    QUERY_CREATED,
+    QUERY_SIGNALLED,
+    QUERY_BUILDING
+};
+/*****************************************************************************
+ * IWineD3DQueryImpl implementation structure (extends IUnknown)
+ */
+typedef struct IWineD3DQueryImpl
+{
+    const IWineD3DQueryVtbl  *lpVtbl;
+    LONG                      ref;     /* Note: Ref counting not required */
+    
+    IUnknown                 *parent;
+    /*TODO: replace with iface usage */
+#if 0
+    IWineD3DDevice         *wineD3DDevice;
+#else
+    IWineD3DDeviceImpl       *wineD3DDevice;
+#endif
+
+    /* IWineD3DQuery fields */
+    enum query_state         state;
+    WINED3DQUERYTYPE         type;
+    /* TODO: Think about using a IUnknown instead of a void* */
+    void                     *extendedData;
+    
+  
+} IWineD3DQueryImpl;
+
+extern const IWineD3DQueryVtbl IWineD3DQuery_Vtbl;
+extern const IWineD3DQueryVtbl IWineD3DEventQuery_Vtbl;
+extern const IWineD3DQueryVtbl IWineD3DOcclusionQuery_Vtbl;
+
+/* Datastructures for IWineD3DQueryImpl.extendedData */
+typedef struct  WineQueryOcclusionData {
+    GLuint  queryId;
+    WineD3DContext *ctx;
+} WineQueryOcclusionData;
+
+typedef struct  WineQueryEventData {
+    GLuint  fenceId;
+    WineD3DContext *ctx;
+} WineQueryEventData;
+
+/*****************************************************************************
+ * IWineD3DSwapChainImpl implementation structure (extends IUnknown)
+ */
+
+typedef struct IWineD3DSwapChainImpl
+{
+    /*IUnknown part*/
+    const IWineD3DSwapChainVtbl *lpVtbl;
+    LONG                      ref;     /* Note: Ref counting not required */
+
+    IUnknown                 *parent;
+    IWineD3DDeviceImpl       *wineD3DDevice;
+
+    /* IWineD3DSwapChain fields */
+    IWineD3DSurface         **backBuffer;
+    IWineD3DSurface          *frontBuffer;
+    WINED3DPRESENT_PARAMETERS presentParms;
+    DWORD                     orig_width, orig_height;
+    WINED3DFORMAT             orig_fmt;
+    WINED3DGAMMARAMP          orig_gamma;
+
+    long prev_time, frames;   /* Performance tracking */
+    unsigned int vSyncCounter;
+
+    WineD3DContext        **context; /* Later a array for multithreading */
+    unsigned int            num_contexts;
+
+    HWND                    win_handle;
+} IWineD3DSwapChainImpl;
+
+extern const IWineD3DSwapChainVtbl IWineD3DSwapChain_Vtbl;
+const IWineD3DSwapChainVtbl IWineGDISwapChain_Vtbl;
+void x11_copy_to_screen(IWineD3DSwapChainImpl *This, const RECT *rc);
+
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_QueryInterface(IWineD3DSwapChain *iface, REFIID riid, LPVOID *ppobj);
+ULONG WINAPI IWineD3DBaseSwapChainImpl_AddRef(IWineD3DSwapChain *iface);
+ULONG WINAPI IWineD3DBaseSwapChainImpl_Release(IWineD3DSwapChain *iface);
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_GetParent(IWineD3DSwapChain *iface, IUnknown ** ppParent);
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_GetFrontBufferData(IWineD3DSwapChain *iface, IWineD3DSurface *pDestSurface);
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_GetBackBuffer(IWineD3DSwapChain *iface, UINT iBackBuffer, WINED3DBACKBUFFER_TYPE Type, IWineD3DSurface **ppBackBuffer);
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_GetRasterStatus(IWineD3DSwapChain *iface, WINED3DRASTER_STATUS *pRasterStatus);
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_GetDisplayMode(IWineD3DSwapChain *iface, WINED3DDISPLAYMODE*pMode);
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_GetDevice(IWineD3DSwapChain *iface, IWineD3DDevice**ppDevice);
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_GetPresentParameters(IWineD3DSwapChain *iface, WINED3DPRESENT_PARAMETERS *pPresentationParameters);
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_SetGammaRamp(IWineD3DSwapChain *iface, DWORD Flags, CONST WINED3DGAMMARAMP *pRamp);
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_GetGammaRamp(IWineD3DSwapChain *iface, WINED3DGAMMARAMP *pRamp);
+
+WineD3DContext *IWineD3DSwapChainImpl_CreateContextForThread(IWineD3DSwapChain *iface);
+
+/*****************************************************************************
+ * Utility function prototypes 
+ */
+
+/* Trace routines */
+const char* debug_d3dformat(WINED3DFORMAT fmt);
+const char* debug_d3ddevicetype(WINED3DDEVTYPE devtype);
+const char* debug_d3dresourcetype(WINED3DRESOURCETYPE res);
+const char* debug_d3dusage(DWORD usage);
+const char* debug_d3dusagequery(DWORD usagequery);
+const char* debug_d3ddeclmethod(WINED3DDECLMETHOD method);
+const char* debug_d3ddecltype(WINED3DDECLTYPE type);
+const char* debug_d3ddeclusage(BYTE usage);
+const char* debug_d3dprimitivetype(WINED3DPRIMITIVETYPE PrimitiveType);
+const char* debug_d3drenderstate(DWORD state);
+const char* debug_d3dsamplerstate(DWORD state);
+const char* debug_d3dtexturefiltertype(WINED3DTEXTUREFILTERTYPE filter_type);
+const char* debug_d3dtexturestate(DWORD state);
+const char* debug_d3dtstype(WINED3DTRANSFORMSTATETYPE tstype);
+const char* debug_d3dpool(WINED3DPOOL pool);
+const char *debug_fbostatus(GLenum status);
+const char *debug_glerror(GLenum error);
+const char *debug_d3dbasis(WINED3DBASISTYPE basis);
+const char *debug_d3ddegree(WINED3DDEGREETYPE order);
+const char* debug_d3dtop(WINED3DTEXTUREOP d3dtop);
+const char *debug_fixup_channel_source(enum fixup_channel_source source);
+const char *debug_yuv_fixup(enum yuv_fixup yuv_fixup);
+void dump_color_fixup_desc(struct color_fixup_desc fixup);
+
+/* Routines for GL <-> D3D values */
+GLenum StencilOp(DWORD op);
+GLenum CompareFunc(DWORD func);
+BOOL is_invalid_op(IWineD3DDeviceImpl *This, int stage, WINED3DTEXTUREOP op, DWORD arg1, DWORD arg2, DWORD arg3);
+void   set_tex_op_nvrc(IWineD3DDevice *iface, BOOL is_alpha, int stage, WINED3DTEXTUREOP op, DWORD arg1, DWORD arg2, DWORD arg3, INT texture_idx, DWORD dst);
+void   set_texture_matrix(const float *smat, DWORD flags, BOOL calculatedCoords, BOOL transformed, DWORD coordtype, BOOL ffp_can_disable_proj);
+void texture_activate_dimensions(DWORD stage, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context);
+void sampler_texdim(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context);
+void tex_alphaop(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context);
+void apply_pixelshader(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context);
+
+void surface_force_reload(IWineD3DSurface *iface);
+GLenum surface_get_gl_buffer(IWineD3DSurface *iface, IWineD3DSwapChain *swapchain);
+void surface_load_ds_location(IWineD3DSurface *iface, DWORD location);
+void surface_modify_ds_location(IWineD3DSurface *iface, DWORD location);
+void surface_set_compatible_renderbuffer(IWineD3DSurface *iface, unsigned int width, unsigned int height);
+void surface_set_texture_name(IWineD3DSurface *iface, GLuint name);
+void surface_set_texture_target(IWineD3DSurface *iface, GLenum target);
+
+BOOL getColorBits(WINED3DFORMAT fmt, short *redSize, short *greenSize, short *blueSize, short *alphaSize, short *totalSize);
+BOOL getDepthStencilBits(WINED3DFORMAT fmt, short *depthSize, short *stencilSize);
+
+/* Math utils */
+void multiply_matrix(WINED3DMATRIX *dest, const WINED3DMATRIX *src1, const WINED3DMATRIX *src2);
+unsigned int count_bits(unsigned int mask);
+
+/*****************************************************************************
+ * To enable calling of inherited functions, requires prototypes 
+ *
+ * Note: Only require classes which are subclassed, ie resource, basetexture, 
+ */
+
+    /* IWineD3DVertexBuffer */
+    extern const BYTE *IWineD3DVertexBufferImpl_GetMemory(IWineD3DVertexBuffer* iface, DWORD iOffset, GLint *vbo);
+
+/* TODO: Make this dynamic, based on shader limits ? */
+#define MAX_REG_ADDR 1
+#define MAX_REG_TEMP 32
+#define MAX_REG_TEXCRD 8
+#define MAX_REG_INPUT 12
+#define MAX_REG_OUTPUT 12
+#define MAX_CONST_I 16
+#define MAX_CONST_B 16
+
+/* FIXME: This needs to go up to 2048 for
+ * Shader model 3 according to msdn (and for software shaders) */
+#define MAX_LABELS 16
+
+typedef struct semantic {
+    DWORD usage;
+    DWORD reg;
+} semantic;
+
+typedef struct local_constant {
+    struct list entry;
+    unsigned int idx;
+    DWORD value[4];
+} local_constant;
+
+typedef struct shader_reg_maps {
+
+    char texcoord[MAX_REG_TEXCRD];          /* pixel < 3.0 */
+    char temporary[MAX_REG_TEMP];           /* pixel, vertex */
+    char address[MAX_REG_ADDR];             /* vertex */
+    char packed_input[MAX_REG_INPUT];       /* pshader >= 3.0 */
+    char packed_output[MAX_REG_OUTPUT];     /* vertex >= 3.0 */
+    char attributes[MAX_ATTRIBS];           /* vertex */
+    char labels[MAX_LABELS];                /* pixel, vertex */
+    DWORD texcoord_mask[MAX_REG_TEXCRD];    /* vertex < 3.0 */
+
+    /* Sampler usage tokens 
+     * Use 0 as default (bit 31 is always 1 on a valid token) */
+    DWORD samplers[max(MAX_FRAGMENT_SAMPLERS, MAX_VERTEX_SAMPLERS)];
+    BOOL bumpmat[MAX_TEXTURES], luminanceparams[MAX_TEXTURES];
+    char usesnrm, vpos, usesdsy;
+    char usesrelconstF;
+
+    /* Whether or not loops are used in this shader, and nesting depth */
+    unsigned loop_depth;
+
+    /* Whether or not this shader uses fog */
+    char fog;
+
+} shader_reg_maps;
+
+/* Undocumented opcode controls */
+#define INST_CONTROLS_SHIFT 16
+#define INST_CONTROLS_MASK 0x00ff0000
+
+typedef enum COMPARISON_TYPE {
+    COMPARISON_GT = 1,
+    COMPARISON_EQ = 2,
+    COMPARISON_GE = 3,
+    COMPARISON_LT = 4,
+    COMPARISON_NE = 5,
+    COMPARISON_LE = 6
+} COMPARISON_TYPE;
+
+typedef struct SHADER_OPCODE {
+    unsigned int  opcode;
+    const char*   name;
+    const char*   glname;
+    char          dst_token;
+    CONST UINT    num_params;
+    enum WINED3D_SHADER_INSTRUCTION_HANDLER handler_idx;
+    DWORD         min_version;
+    DWORD         max_version;
+} SHADER_OPCODE;
+
+typedef struct SHADER_OPCODE_ARG {
+    IWineD3DBaseShader* shader;
+    const shader_reg_maps *reg_maps;
+    CONST SHADER_OPCODE* opcode;
+    DWORD opcode_token;
+    DWORD dst;
+    DWORD dst_addr;
+    DWORD predicate;
+    DWORD src[4];
+    DWORD src_addr[4];
+    SHADER_BUFFER* buffer;
+} SHADER_OPCODE_ARG;
+
+typedef struct SHADER_LIMITS {
+    unsigned int temporary;
+    unsigned int texcoord;
+    unsigned int sampler;
+    unsigned int constant_int;
+    unsigned int constant_float;
+    unsigned int constant_bool;
+    unsigned int address;
+    unsigned int packed_output;
+    unsigned int packed_input;
+    unsigned int attributes;
+    unsigned int label;
+} SHADER_LIMITS;
+
+/** Keeps track of details for TEX_M#x# shader opcodes which need to 
+    maintain state information between multiple codes */
+typedef struct SHADER_PARSE_STATE {
+    unsigned int current_row;
+    DWORD texcoord_w[2];
+} SHADER_PARSE_STATE;
+
+#ifdef __GNUC__
+#define PRINTF_ATTR(fmt,args) __attribute__((format (printf,fmt,args)))
+#else
+#define PRINTF_ATTR(fmt,args)
+#endif
+
+/* Base Shader utility functions. 
+ * (may move callers into the same file in the future) */
+extern int shader_addline(
+    SHADER_BUFFER* buffer,
+    const char* fmt, ...) PRINTF_ATTR(2,3);
+
+const SHADER_OPCODE *shader_get_opcode(const SHADER_OPCODE *shader_ins, DWORD shader_version, DWORD code);
+
+/* Vertex shader utility functions */
+extern BOOL vshader_get_input(
+    IWineD3DVertexShader* iface,
+    BYTE usage_req, BYTE usage_idx_req,
+    unsigned int* regnum);
+
+extern BOOL vshader_input_is_color(
+    IWineD3DVertexShader* iface,
+    unsigned int regnum);
+
+extern HRESULT allocate_shader_constants(IWineD3DStateBlockImpl* object);
+
+/* GLSL helper functions */
+extern void shader_glsl_add_instruction_modifiers(const SHADER_OPCODE_ARG *arg);
+
+/*****************************************************************************
+ * IDirect3DBaseShader implementation structure
+ */
+typedef struct IWineD3DBaseShaderClass
+{
+    LONG                            ref;
+    DWORD                           hex_version;
+    SHADER_LIMITS                   limits;
+    SHADER_PARSE_STATE              parse_state;
+    CONST SHADER_OPCODE             *shader_ins;
+    DWORD                          *function;
+    UINT                            functionLength;
+    BOOL                            is_compiled;
+    UINT                            cur_loop_depth, cur_loop_regno;
+    BOOL                            load_local_constsF;
+
+    /* Type of shader backend */
+    int shader_mode;
+
+    /* Programs this shader is linked with */
+    struct list linked_programs;
+
+    /* Immediate constants (override global ones) */
+    struct list constantsB;
+    struct list constantsF;
+    struct list constantsI;
+    shader_reg_maps reg_maps;
+
+    UINT                sampled_samplers[MAX_COMBINED_SAMPLERS];
+    UINT                num_sampled_samplers;
+
+    UINT recompile_count;
+
+    /* Pointer to the parent device */
+    IWineD3DDevice *device;
+    struct list     shader_list_entry;
+
+} IWineD3DBaseShaderClass;
+
+typedef struct IWineD3DBaseShaderImpl {
+    /* IUnknown */
+    const IWineD3DBaseShaderVtbl    *lpVtbl;
+
+    /* IWineD3DBaseShader */
+    IWineD3DBaseShaderClass         baseShader;
+} IWineD3DBaseShaderImpl;
+
+HRESULT  WINAPI IWineD3DBaseShaderImpl_QueryInterface(IWineD3DBaseShader *iface, REFIID riid, LPVOID *ppobj);
+ULONG  WINAPI IWineD3DBaseShaderImpl_AddRef(IWineD3DBaseShader *iface);
+ULONG  WINAPI IWineD3DBaseShaderImpl_Release(IWineD3DBaseShader *iface);
+
+extern HRESULT shader_get_registers_used(
+    IWineD3DBaseShader *iface,
+    shader_reg_maps* reg_maps,
+    semantic* semantics_in,
+    semantic* semantics_out,
+    CONST DWORD* pToken,
+    IWineD3DStateBlockImpl *stateBlock);
+
+extern void shader_generate_main(IWineD3DBaseShader *iface, SHADER_BUFFER *buffer,
+        const shader_reg_maps *reg_maps, const DWORD *pFunction);
+
+extern void shader_trace_init(
+    IWineD3DBaseShader *iface,
+    const DWORD* pFunction);
+
+static inline int shader_get_regtype(const DWORD param) {
+    return (((param & WINED3DSP_REGTYPE_MASK) >> WINED3DSP_REGTYPE_SHIFT) |
+            ((param & WINED3DSP_REGTYPE_MASK2) >> WINED3DSP_REGTYPE_SHIFT2));
+}
+
+static inline int shader_get_writemask(const DWORD param) {
+    return param & WINED3DSP_WRITEMASK_ALL;
+}
+
+static inline BOOL shader_is_pshader_version(DWORD token) {
+    return 0xFFFF0000 == (token & 0xFFFF0000);
+}
+
+static inline BOOL shader_is_vshader_version(DWORD token) {
+    return 0xFFFE0000 == (token & 0xFFFF0000);
+}
+
+static inline BOOL shader_is_comment(DWORD token) {
+    return WINED3DSIO_COMMENT == (token & WINED3DSI_OPCODE_MASK);
+}
+
+static inline BOOL shader_is_scalar(DWORD param) {
+    DWORD reg_type = shader_get_regtype(param);
+    DWORD reg_num;
+
+    switch (reg_type) {
+        case WINED3DSPR_RASTOUT:
+            if ((param & WINED3DSP_REGNUM_MASK) != 0) {
+                /* oFog & oPts */
+                return TRUE;
+            }
+            /* oPos */
+            return FALSE;
+
+        case WINED3DSPR_DEPTHOUT:   /* oDepth */
+        case WINED3DSPR_CONSTBOOL:  /* b# */
+        case WINED3DSPR_LOOP:       /* aL */
+        case WINED3DSPR_PREDICATE:  /* p0 */
+            return TRUE;
+
+        case WINED3DSPR_MISCTYPE:
+            reg_num = param & WINED3DSP_REGNUM_MASK;
+            switch(reg_num) {
+                case 0: /* vPos */
+                    return FALSE;
+                case 1: /* vFace */
+                    return TRUE;
+                default:
+                    return FALSE;
+            }
+
+        default:
+            return FALSE;
+    }
+}
+
+static inline BOOL shader_constant_is_local(IWineD3DBaseShaderImpl* This, DWORD reg) {
+    local_constant* lconst;
+
+    if(This->baseShader.load_local_constsF) return FALSE;
+    LIST_FOR_EACH_ENTRY(lconst, &This->baseShader.constantsF, local_constant, entry) {
+        if(lconst->idx == reg) return TRUE;
+    }
+    return FALSE;
+
+}
+
+/*****************************************************************************
+ * IDirect3DVertexShader implementation structure
+ */
+typedef struct IWineD3DVertexShaderImpl {
+    /* IUnknown parts*/   
+    const IWineD3DVertexShaderVtbl *lpVtbl;
+
+    /* IWineD3DBaseShader */
+    IWineD3DBaseShaderClass     baseShader;
+
+    /* IWineD3DVertexShaderImpl */
+    IUnknown                    *parent;
+
+    DWORD                       usage;
+
+    /* The GL shader */
+    GLuint                          prgId;
+
+    /* Vertex shader input and output semantics */
+    semantic semantics_in [MAX_ATTRIBS];
+    semantic semantics_out [MAX_REG_OUTPUT];
+
+    /* Ordered array of attributes that are swizzled */
+    attrib_declaration          swizzled_attribs [MAX_ATTRIBS];
+    UINT                        num_swizzled_attribs;
+
+    UINT                       min_rel_offset, max_rel_offset;
+    UINT                       rel_offset;
+
+    UINT                       recompile_count;
+} IWineD3DVertexShaderImpl;
+extern const SHADER_OPCODE IWineD3DVertexShaderImpl_shader_ins[];
+extern const IWineD3DVertexShaderVtbl IWineD3DVertexShader_Vtbl;
+HRESULT IWineD3DVertexShaderImpl_CompileShader(IWineD3DVertexShader *iface);
+
+/*****************************************************************************
+ * IDirect3DPixelShader implementation structure
+ */
+
+enum vertexprocessing_mode {
+    fixedfunction,
+    vertexshader,
+    pretransformed
+};
+
+struct stb_const_desc {
+    char                    texunit;
+    UINT                    const_num;
+};
+
+/* Stateblock dependent parameters which have to be hardcoded
+ * into the shader code
+ */
+struct ps_compile_args {
+    struct color_fixup_desc     color_fixup[MAX_FRAGMENT_SAMPLERS];
+    BOOL                        srgb_correction;
+    enum vertexprocessing_mode  vp_mode;
+    /* Projected textures(ps 1.0-1.3) */
+    /* Texture types(2D, Cube, 3D) in ps 1.x */
+};
+
+struct ps_compiled_shader {
+    struct ps_compile_args      args;
+    GLuint                      prgId;
+};
+
+typedef struct IWineD3DPixelShaderImpl {
+    /* IUnknown parts */
+    const IWineD3DPixelShaderVtbl *lpVtbl;
+
+    /* IWineD3DBaseShader */
+    IWineD3DBaseShaderClass     baseShader;
+
+    /* IWineD3DPixelShaderImpl */
+    IUnknown                   *parent;
+
+    /* Pixel shader input semantics */
+    semantic semantics_in [MAX_REG_INPUT];
+    DWORD                 input_reg_map[MAX_REG_INPUT];
+    BOOL                  input_reg_used[MAX_REG_INPUT];
+    int                         declared_in_count;
+
+    /* The GL shader */
+    struct ps_compiled_shader   *gl_shaders;
+    UINT                        num_gl_shaders;
+
+    /* Some information about the shader behavior */
+    struct stb_const_desc       bumpenvmatconst[MAX_TEXTURES];
+    char                        numbumpenvmatconsts;
+    struct stb_const_desc       luminanceconst[MAX_TEXTURES];
+    char                        vpos_uniform;
+} IWineD3DPixelShaderImpl;
+
+extern const SHADER_OPCODE IWineD3DPixelShaderImpl_shader_ins[];
+extern const IWineD3DPixelShaderVtbl IWineD3DPixelShader_Vtbl;
+GLuint find_gl_pshader(IWineD3DPixelShaderImpl *shader, const struct ps_compile_args *args);
+void find_ps_compile_args(IWineD3DPixelShaderImpl *shader, IWineD3DStateBlockImpl *stateblock, struct ps_compile_args *args);
+
+/* sRGB correction constants */
+static const float srgb_cmp = 0.0031308;
+static const float srgb_mul_low = 12.92;
+static const float srgb_pow = 0.41666;
+static const float srgb_mul_high = 1.055;
+static const float srgb_sub_high = 0.055;
+
+/*****************************************************************************
+ * IWineD3DPalette implementation structure
+ */
+struct IWineD3DPaletteImpl {
+    /* IUnknown parts */
+    const IWineD3DPaletteVtbl  *lpVtbl;
+    LONG                       ref;
+
+    IUnknown                   *parent;
+    IWineD3DDeviceImpl         *wineD3DDevice;
+
+    /* IWineD3DPalette */
+    HPALETTE                   hpal;
+    WORD                       palVersion;     /*|               */
+    WORD                       palNumEntries;  /*|  LOGPALETTE   */
+    PALETTEENTRY               palents[256];   /*|               */
+    /* This is to store the palette in 'screen format' */
+    int                        screen_palents[256];
+    DWORD                      Flags;
+};
+
+extern const IWineD3DPaletteVtbl IWineD3DPalette_Vtbl;
+DWORD IWineD3DPaletteImpl_Size(DWORD dwFlags);
+
+/* DirectDraw utility functions */
+extern WINED3DFORMAT pixelformat_for_depth(DWORD depth);
+
+/*****************************************************************************
+ * Pixel format management
+ */
+
+struct GlPixelFormatDesc
+{
+    GLint glInternal;
+    GLint glGammaInternal;
+    GLint rtInternal;
+    GLint glFormat;
+    GLint glType;
+    unsigned int Flags;
+    float heightscale;
+    struct color_fixup_desc color_fixup;
+};
+
+typedef struct {
+    WINED3DFORMAT           format;
+    DWORD                   alphaMask, redMask, greenMask, blueMask;
+    UINT                    bpp;
+    short                   depthSize, stencilSize;
+    BOOL                    isFourcc;
+} StaticPixelFormatDesc;
+
+const StaticPixelFormatDesc *getFormatDescEntry(WINED3DFORMAT fmt,
+        const WineD3D_GL_Info *gl_info, const struct GlPixelFormatDesc **glDesc);
+
+static inline BOOL use_vs(IWineD3DDeviceImpl *device) {
+    return (device->vs_selected_mode != SHADER_NONE
+            && device->stateBlock->vertexShader
+            && ((IWineD3DVertexShaderImpl *)device->stateBlock->vertexShader)->baseShader.function
+            && !device->strided_streams.u.s.position_transformed);
+}
+
+static inline BOOL use_ps(IWineD3DDeviceImpl *device) {
+    return (device->ps_selected_mode != SHADER_NONE
+            && device->stateBlock->pixelShader
+            && ((IWineD3DPixelShaderImpl *)device->stateBlock->pixelShader)->baseShader.function);
+}
+
+void stretch_rect_fbo(IWineD3DDevice *iface, IWineD3DSurface *src_surface, WINED3DRECT *src_rect,
+        IWineD3DSurface *dst_surface, WINED3DRECT *dst_rect, const WINED3DTEXTUREFILTERTYPE filter, BOOL flip);
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/wined3d_private_types.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/wined3d_private_types.h	(revision 16410)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/wined3d_private_types.h	(revision 16410)
@@ -0,0 +1,310 @@
+/*
+ * Direct3D wine internal header: D3D equivalent types
+ *
+ * Copyright 2002-2003 Jason Edmeades
+ * Copyright 2002-2003 Raphael Junqueira
+ * Copyright 2005 Oliver Stieber
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINED3D_TYPES_INTERNAL_H
+#define __WINE_WINED3D_TYPES_INTERNAL_H
+
+/* WineD3D pixel format flags */
+#define WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING 0x1
+#define WINED3DFMT_FLAG_FILTERING                0x2
+#define WINED3DFMT_FLAG_DEPTH                    0x4
+#define WINED3DFMT_FLAG_STENCIL                  0x8
+#define WINED3DFMT_FLAG_RENDERTARGET             0x10
+
+/** DCL usage masks **/
+#define WINED3DSP_DCL_USAGE_SHIFT 0
+#define WINED3DSP_DCL_USAGE_MASK  0x0000000f
+#define WINED3DSP_DCL_USAGEINDEX_SHIFT 16
+#define WINED3DSP_DCL_USAGEINDEX_MASK  0x000f0000
+
+/** DCL sampler texture type **/
+#define WINED3DSP_TEXTURETYPE_SHIFT 27
+#define WINED3DSP_TEXTURETYPE_MASK  0x78000000
+
+typedef enum _WINED3DSAMPLER_TEXTURE_TYPE {
+  WINED3DSTT_UNKNOWN      = 0 << WINED3DSP_TEXTURETYPE_SHIFT,
+  WINED3DSTT_1D           = 1 << WINED3DSP_TEXTURETYPE_SHIFT,
+  WINED3DSTT_2D           = 2 << WINED3DSP_TEXTURETYPE_SHIFT,
+  WINED3DSTT_CUBE         = 3 << WINED3DSP_TEXTURETYPE_SHIFT,
+  WINED3DSTT_VOLUME       = 4 << WINED3DSP_TEXTURETYPE_SHIFT,
+
+  WINED3DSTT_FORCE_DWORD  = 0x7FFFFFFF
+} WINED3DSAMPLER_TEXTURE_TYPE;
+
+/** Register number mask **/
+#define WINED3DSP_REGNUM_MASK        0x000007FF
+
+/** Register type masks  **/
+#define WINED3DSP_REGTYPE_SHIFT      28
+#define WINED3DSP_REGTYPE_SHIFT2     8
+#define WINED3DSP_REGTYPE_MASK       (0x7 << WINED3DSP_REGTYPE_SHIFT)
+#define WINED3DSP_REGTYPE_MASK2      0x00001800
+
+/** Register types **/
+typedef enum _WINED3DSHADER_PARAM_REGISTER_TYPE {
+  WINED3DSPR_TEMP         =  0, 
+  WINED3DSPR_INPUT        =  1,
+  WINED3DSPR_CONST        =  2,
+  WINED3DSPR_ADDR         =  3,
+  WINED3DSPR_TEXTURE      =  3,
+  WINED3DSPR_RASTOUT      =  4,
+  WINED3DSPR_ATTROUT      =  5,
+  WINED3DSPR_TEXCRDOUT    =  6,
+  WINED3DSPR_OUTPUT       =  6,
+  WINED3DSPR_CONSTINT     =  7,
+  WINED3DSPR_COLOROUT     =  8,
+  WINED3DSPR_DEPTHOUT     =  9,
+  WINED3DSPR_SAMPLER      = 10,
+  WINED3DSPR_CONST2       = 11,
+  WINED3DSPR_CONST3       = 12,
+  WINED3DSPR_CONST4       = 13,
+  WINED3DSPR_CONSTBOOL    = 14,
+  WINED3DSPR_LOOP         = 15,
+  WINED3DSPR_TEMPFLOAT16  = 16,
+  WINED3DSPR_MISCTYPE     = 17,
+  WINED3DSPR_LABEL        = 18,
+  WINED3DSPR_PREDICATE    = 19,
+
+  WINED3DSPR_FORCE_DWORD  = 0x7FFFFFFF
+} WINED3DSHADER_PARAM_REGISTER_TYPE;
+
+/* RASTOUT register offsets */
+typedef enum _WINED3DVS_RASTOUT_OFFSETS {
+  WINED3DSRO_POSITION     = 0,
+  WINED3DSRO_FOG          = 1,
+  WINED3DSRO_POINT_SIZE   = 2,
+
+  WINED3DSRO_FORCE_DWORD  = 0x7FFFFFFF
+} WINED3DVS_RASTOUT_OFFSETS;
+
+/** Source register modifiers **/
+#define WINED3DVS_SWIZZLE_SHIFT      16
+#define WINED3DVS_SWIZZLE_MASK       (0xFF << WINED3DVS_SWIZZLE_SHIFT)
+#define WINED3DSP_SWIZZLE_SHIFT      16
+#define WINED3DSP_SWIZZLE_MASK       (0xFF << WINED3DSP_SWIZZLE_SHIFT)
+
+#define WINED3DVS_X_X       (0 << WINED3DVS_SWIZZLE_SHIFT)
+#define WINED3DVS_X_Y       (1 << WINED3DVS_SWIZZLE_SHIFT)
+#define WINED3DVS_X_Z       (2 << WINED3DVS_SWIZZLE_SHIFT)
+#define WINED3DVS_X_W       (3 << WINED3DVS_SWIZZLE_SHIFT)
+
+#define WINED3DVS_Y_X       (0 << (WINED3DVS_SWIZZLE_SHIFT + 2))
+#define WINED3DVS_Y_Y       (1 << (WINED3DVS_SWIZZLE_SHIFT + 2))
+#define WINED3DVS_Y_Z       (2 << (WINED3DVS_SWIZZLE_SHIFT + 2))
+#define WINED3DVS_Y_W       (3 << (WINED3DVS_SWIZZLE_SHIFT + 2))
+
+#define WINED3DVS_Z_X       (0 << (WINED3DVS_SWIZZLE_SHIFT + 4))
+#define WINED3DVS_Z_Y       (1 << (WINED3DVS_SWIZZLE_SHIFT + 4))
+#define WINED3DVS_Z_Z       (2 << (WINED3DVS_SWIZZLE_SHIFT + 4))
+#define WINED3DVS_Z_W       (3 << (WINED3DVS_SWIZZLE_SHIFT + 4))
+
+#define WINED3DVS_W_X       (0 << (WINED3DVS_SWIZZLE_SHIFT + 6))
+#define WINED3DVS_W_Y       (1 << (WINED3DVS_SWIZZLE_SHIFT + 6))
+#define WINED3DVS_W_Z       (2 << (WINED3DVS_SWIZZLE_SHIFT + 6))
+#define WINED3DVS_W_W       (3 << (WINED3DVS_SWIZZLE_SHIFT + 6))
+
+#define WINED3DVS_NOSWIZZLE (WINED3DVS_X_X | WINED3DVS_Y_Y | WINED3DVS_Z_Z | WINED3DVS_W_W)
+
+#define WINED3DSP_NOSWIZZLE \
+    ((0 << (WINED3DSP_SWIZZLE_SHIFT + 0)) | (1 << (WINED3DSP_SWIZZLE_SHIFT + 2)) | \
+     (2 << (WINED3DSP_SWIZZLE_SHIFT + 4)) | (3 << (WINED3DSP_SWIZZLE_SHIFT + 6)))
+
+#define WINED3DSP_SRCMOD_SHIFT      24
+#define WINED3DSP_SRCMOD_MASK       (0xF << WINED3DSP_SRCMOD_SHIFT)
+
+typedef enum _WINED3DSHADER_PARAM_SRCMOD_TYPE {
+  WINED3DSPSM_NONE         =  0 << WINED3DSP_SRCMOD_SHIFT,
+  WINED3DSPSM_NEG          =  1 << WINED3DSP_SRCMOD_SHIFT,
+  WINED3DSPSM_BIAS         =  2 << WINED3DSP_SRCMOD_SHIFT,
+  WINED3DSPSM_BIASNEG      =  3 << WINED3DSP_SRCMOD_SHIFT,
+  WINED3DSPSM_SIGN         =  4 << WINED3DSP_SRCMOD_SHIFT,
+  WINED3DSPSM_SIGNNEG      =  5 << WINED3DSP_SRCMOD_SHIFT,
+  WINED3DSPSM_COMP         =  6 << WINED3DSP_SRCMOD_SHIFT,
+  WINED3DSPSM_X2           =  7 << WINED3DSP_SRCMOD_SHIFT,
+  WINED3DSPSM_X2NEG        =  8 << WINED3DSP_SRCMOD_SHIFT,
+  WINED3DSPSM_DZ           =  9 << WINED3DSP_SRCMOD_SHIFT,
+  WINED3DSPSM_DW           = 10 << WINED3DSP_SRCMOD_SHIFT,
+  WINED3DSPSM_ABS          = 11 << WINED3DSP_SRCMOD_SHIFT,
+  WINED3DSPSM_ABSNEG       = 12 << WINED3DSP_SRCMOD_SHIFT,
+  WINED3DSPSM_NOT          = 13 << WINED3DSP_SRCMOD_SHIFT,
+
+  WINED3DSPSM_FORCE_DWORD  = 0x7FFFFFFF
+} WINED3DSHADER_PARAM_SRCMOD_TYPE;
+
+/** Destination register modifiers **/
+#define WINED3DSP_WRITEMASK_0       0x00010000 /* .x r */
+#define WINED3DSP_WRITEMASK_1       0x00020000 /* .y g */
+#define WINED3DSP_WRITEMASK_2       0x00040000 /* .z b */
+#define WINED3DSP_WRITEMASK_3       0x00080000 /* .w a */
+#define WINED3DSP_WRITEMASK_ALL     0x000F0000 /* all */
+
+#define WINED3DSP_DSTMOD_SHIFT      20
+#define WINED3DSP_DSTMOD_MASK       (0xF << WINED3DSP_DSTMOD_SHIFT)
+
+typedef enum _WINED3DSHADER_PARAM_DSTMOD_TYPE {
+  WINED3DSPDM_NONE             = 0 << WINED3DSP_DSTMOD_SHIFT,
+  WINED3DSPDM_SATURATE         = 1 << WINED3DSP_DSTMOD_SHIFT,
+  WINED3DSPDM_PARTIALPRECISION = 2 << WINED3DSP_DSTMOD_SHIFT,
+  WINED3DSPDM_MSAMPCENTROID    = 4 << WINED3DSP_DSTMOD_SHIFT,
+
+  WINED3DSPDM_FORCE_DWORD  = 0x7FFFFFFF
+} WINED3DSHADER_PARAM_DSTMOD_TYPE;
+
+#define WINED3DSP_DSTSHIFT_SHIFT     24
+#define WINED3DSP_DSTSHIFT_MASK      (0xF << WINED3DSP_DSTSHIFT_SHIFT)
+
+/** Register addressing modes **/
+#define WINED3DSHADER_ADDRESSMODE_SHIFT 13
+#define WINED3DSHADER_ADDRESSMODE_MASK  (1 << WINED3DSHADER_ADDRESSMODE_SHIFT)
+
+typedef enum _WINED3DSHADER_ADDRESSMODE_TYPE {
+  WINED3DSHADER_ADDRMODE_ABSOLUTE    = 0 << WINED3DSHADER_ADDRESSMODE_SHIFT,
+  WINED3DSHADER_ADDRMODE_RELATIVE    = 1 << WINED3DSHADER_ADDRESSMODE_SHIFT,
+
+  WINED3DSHADER_ADDRMODE_FORCE_DWORD = 0x7FFFFFFF
+} WINED3DSHADER_ADDRESSMODE_TYPE;
+
+/** Opcode types */
+typedef enum _WINED3DSHADER_INSTRUCTION_OPCODE_TYPE {
+  WINED3DSIO_NOP          =  0,
+  WINED3DSIO_MOV          =  1,
+  WINED3DSIO_ADD          =  2,
+  WINED3DSIO_SUB          =  3,
+  WINED3DSIO_MAD          =  4,
+  WINED3DSIO_MUL          =  5,
+  WINED3DSIO_RCP          =  6,
+  WINED3DSIO_RSQ          =  7,
+  WINED3DSIO_DP3          =  8,
+  WINED3DSIO_DP4          =  9,
+  WINED3DSIO_MIN          = 10,
+  WINED3DSIO_MAX          = 11,
+  WINED3DSIO_SLT          = 12,
+  WINED3DSIO_SGE          = 13,
+  WINED3DSIO_EXP          = 14,
+  WINED3DSIO_LOG          = 15,
+  WINED3DSIO_LIT          = 16,
+  WINED3DSIO_DST          = 17,
+  WINED3DSIO_LRP          = 18,
+  WINED3DSIO_FRC          = 19,
+  WINED3DSIO_M4x4         = 20,
+  WINED3DSIO_M4x3         = 21,
+  WINED3DSIO_M3x4         = 22,
+  WINED3DSIO_M3x3         = 23,
+  WINED3DSIO_M3x2         = 24,
+  WINED3DSIO_CALL         = 25,
+  WINED3DSIO_CALLNZ       = 26,
+  WINED3DSIO_LOOP         = 27,
+  WINED3DSIO_RET          = 28,
+  WINED3DSIO_ENDLOOP      = 29,
+  WINED3DSIO_LABEL        = 30,
+  WINED3DSIO_DCL          = 31,
+  WINED3DSIO_POW          = 32,
+  WINED3DSIO_CRS          = 33,
+  WINED3DSIO_SGN          = 34,
+  WINED3DSIO_ABS          = 35,
+  WINED3DSIO_NRM          = 36,
+  WINED3DSIO_SINCOS       = 37,
+  WINED3DSIO_REP          = 38,
+  WINED3DSIO_ENDREP       = 39,
+  WINED3DSIO_IF           = 40,
+  WINED3DSIO_IFC          = 41,
+  WINED3DSIO_ELSE         = 42,
+  WINED3DSIO_ENDIF        = 43,
+  WINED3DSIO_BREAK        = 44,
+  WINED3DSIO_BREAKC       = 45,
+  WINED3DSIO_MOVA         = 46,
+  WINED3DSIO_DEFB         = 47,
+  WINED3DSIO_DEFI         = 48,
+
+  WINED3DSIO_TEXCOORD     = 64,
+  WINED3DSIO_TEXKILL      = 65,
+  WINED3DSIO_TEX          = 66,
+  WINED3DSIO_TEXBEM       = 67,
+  WINED3DSIO_TEXBEML      = 68,
+  WINED3DSIO_TEXREG2AR    = 69,
+  WINED3DSIO_TEXREG2GB    = 70,
+  WINED3DSIO_TEXM3x2PAD   = 71,
+  WINED3DSIO_TEXM3x2TEX   = 72,
+  WINED3DSIO_TEXM3x3PAD   = 73,
+  WINED3DSIO_TEXM3x3TEX   = 74,
+  WINED3DSIO_TEXM3x3DIFF  = 75,
+  WINED3DSIO_TEXM3x3SPEC  = 76,
+  WINED3DSIO_TEXM3x3VSPEC = 77,
+  WINED3DSIO_EXPP         = 78,
+  WINED3DSIO_LOGP         = 79,
+  WINED3DSIO_CND          = 80,
+  WINED3DSIO_DEF          = 81,
+  WINED3DSIO_TEXREG2RGB   = 82,
+  WINED3DSIO_TEXDP3TEX    = 83,
+  WINED3DSIO_TEXM3x2DEPTH = 84,
+  WINED3DSIO_TEXDP3       = 85,
+  WINED3DSIO_TEXM3x3      = 86,
+  WINED3DSIO_TEXDEPTH     = 87,
+  WINED3DSIO_CMP          = 88,
+  WINED3DSIO_BEM          = 89,
+  WINED3DSIO_DP2ADD       = 90,
+  WINED3DSIO_DSX          = 91,
+  WINED3DSIO_DSY          = 92,
+  WINED3DSIO_TEXLDD       = 93,
+  WINED3DSIO_SETP         = 94,
+  WINED3DSIO_TEXLDL       = 95,
+  WINED3DSIO_BREAKP       = 96,
+
+  WINED3DSIO_PHASE        = 0xFFFD,
+  WINED3DSIO_COMMENT      = 0xFFFE,
+  WINED3DSIO_END          = 0XFFFF,
+
+  WINED3DSIO_FORCE_DWORD  = 0X7FFFFFFF /** for 32-bit alignment */
+} WINED3DSHADER_INSTRUCTION_OPCODE_TYPE;
+
+/** opcode-related masks **/
+
+#define WINED3DSI_OPCODE_MASK       0x0000FFFF
+#define WINED3DSI_INSTLENGTH_MASK   0x0F000000
+#define WINED3DSI_INSTLENGTH_SHIFT  24
+
+#define WINED3DSI_COISSUE 0x40000000
+
+#define WINED3DSI_COMMENTSIZE_SHIFT 16
+#define WINED3DSI_COMMENTSIZE_MASK (0x7FFF << WINED3DSI_COMMENTSIZE_SHIFT)
+#define WINED3DSHADER_COMMENT(commentSize) \
+  ((((commentSize) << WINED3DSI_COMMENTSIZE_SHIFT) & WINED3DSI_COMMENTSIZE_MASK) | WINED3DSIO_COMMENT)
+
+#define WINED3DSHADER_INSTRUCTION_PREDICATED (1 << 28)
+
+/* Undocumented opcode control to identify projective texture lookups in ps 2.0 and later */
+#define WINED3DSI_TEXLD_PROJECT 0x00010000
+#define WINED3DSI_TEXLD_BIAS    0x00020000
+
+/** Shader version tokens, and shader end tokens **/
+
+#define WINED3DPS_VERSION(major, minor) (0xFFFF0000 | ((major) << 8) | (minor))
+#define WINED3DVS_VERSION(major, minor) (0xFFFE0000 | ((major) << 8) | (minor))
+#define WINED3DSHADER_VERSION_MAJOR(version) (((version) >> 8) & 0xFF)
+#define WINED3DSHADER_VERSION_MINOR(version) (((version) >> 0) & 0xFF)
+#define WINED3DPS_END() 0x0000FFFF
+#define WINED3DVS_END() 0x0000FFFF
+
+/* Multithreaded flag. Removed from the public header to signal that IWineD3D::CreateDevice ignores it */
+#define WINED3DCREATE_MULTITHREADED                 0x00000004
+
+#endif
